Index: /tags/1.6.0/ChangeLog
===================================================================
--- /tags/1.6.0/ChangeLog	(revision 6168)
+++ /tags/1.6.0/ChangeLog	(revision 6168)
@@ -0,0 +1,121 @@
+
+ * Fixed bug regarding loaders using <new> tag where file was not loading
+ * Fixes for Octave 3.0's print_help function
+ * Adding rappture to OCTAVE_LOADPATH environment variable for octave 3.01
+
+2008-12-10: nanovis 20081207 released
+2008-12-10: Rappture 20081205 released
+
+2008-11-25:
+
+ * Fixed sequenceviewer to handle sequences for heightmaps (surface plots)
+   properly.  Rappture was defaulting to VTK and segfaulting.
+ * Added keyboard and mousewheel bindings for zooms in nanovisviewer,
+   heightmapviewer, and molvisviewer.
+ * Added panning function to nanovisviewer, heightmapviewer, and
+   molvisviewer.  Feature available via mouse and keyboard.
+ * Fixed pymolproxy to handle non-blocking reads from pymol server where
+   previous client command would drain stdout.  The bug appears in
+   64-bit versions.
+ * Changed curve object to use a vector to read/parse xy data and then
+   split into the corresponding x and y vectors.  Rough testing shows
+   to be 8x faster than split/scan-ing every line.  This was also done
+   for fields (points).
+ * Added feature to VisViewer base class to disconnect from the render
+   server after a specified interval "idleTimeout_".  If zero, no
+   timeout is set.  This affects molvisviewer, heightmapviewer, and
+   nanovisviewer.  The viewers will reconnect on the next read or write
+   request to the server.  See _CheckConnection method.
+ * Fixed molvisviewer to properly set screen dimensions when reconnecting
+   to the pymol server.  This caused the object to be scaled and shifted
+   improperly.
+ * Fixed nanovisviewer to properly reset screen dimensions and rotation
+   angles when reconnecting to the nanovis server.
+ * Extended color set (8 to 32) of automatic colors for xy graphs.
+ * Removed load-balancing feature from nanoscale.  It always returns
+   0.0.0.0 (no redirect).
+ * Added isunirect2d to field object.  This is a cleaner way of determining
+   whether to connect to a nanovis server or use VTK.
+ * Fixed -imagecmd in htmlviewer.tcl.  Added _freeImage method/callback.
+   The htmlwidget was destroying the cached icon images.
+ * Added recolor option the XyLegend object.  It recolors all the selected
+   traces.
+ * Removed split $params(-load) from driver.
+ * Added "list" type to getopts.tcl to allow for command line
+   specifications like "rappture -load file1 file2 file3".  The list
+   type can only be used at the end of the command line.
+ * Added rappture-csh.env script for c-shell users.
+ * Fixed lang/matlab/Makefile.in to prevent parallel builds of
+   matlab bindings.  "mex" generates temporary files that collide when
+   multiple compilations are using the same directory.
+ * Added -x flag to nanoscale to automatically rotate between screens
+   as new requests are made.
+ * Added separate method in nanovis NvCamera.h to handle camera eye and 
+   target positions (for panning).
+ * Added pan call to nanovis.
+ * Added checks to nanovis for valid framebuffer objects.
+ * Fixed packages/vizservers/nanovis/Makefile.in to allow parallel builds.
+ * Added xunits, yunits, and zunits attributes for unirect2d data.
+ * Added statistics generation for nanovis and pymolproxy servers. Writes
+   to /var/tmp/visservers/data.xml.
+ * Added MCR_INHIBIT_CTF_LOCK flag to the compiled matlab patch file to
+   prevent matlab from trying to create a lock on CTF file.
+ * Added copy feature to loaders. Copy feature allows users to specify where
+   to put data from xml files loaded from the examples directory. See
+   rappture/examples/lang/tcl/loadercopy for sample use.
+ * Added compiled matlab example to rappture/examples/app-fermi/matlab 
+   currently only for 32bit, if using on 64bit, need to adjust patch file.
+ * Fix allowing enabled tabs (groups within groups), which are a part of a
+   list of tabs, to show the correct information when one or more tabs
+   before them are disabled.
+ * Reorganize command line options for simsim
+ * Added autolabel to number and integer outputs, but everyone should still
+   put labels on all outputs.
+ * Allow the contents of a note to be dynamically changed, for example
+   through a loader.
+ * Added xmldiff to find the difference between two rappture xml files.
+ * Added -nosim flag to rerun so it works as it did in previous releases.
+   Currently, rerun is strictly for viewing old run.xml files.
+ * Updating rappture to allow for loading of old run.xml files using the
+   -load flag. This feature differs from rerun in that if rappture can find
+   where the tool was installed, it will allow you to continue running
+   simulations.
+ * Added bohrs to the units test cases
+
+2008-10-10: nanovis 20081010 released
+2008-09-26: nanovis 20080926 released
+2008-09-26: Rappture 20080924 released
+
+ * Added stats collection to nanovis
+
+2008-09-09: Rappture 20080909 released
+
+ * Created legend for xy plots.  You can raise/lower/show/hide/rename
+   traces (curves).  There is also a provision for displaying the
+   fill area between two curves and taking the average of two or
+   more curves.
+ * Nanovis markers now change the transfer function globally. Previously
+   changing the a marker changes the transfer function for that volume
+   only.  Now all volumes using that transfer function are affected.
+ * Pymolproxy changed to use file transfer for PDB files.  This should 
+   prevent large datasets from breaking pymol.
+ * Data sent to render servers now made in one write. Should improve
+   performance for large datasets.
+ * Nanovis server was profiled and improvements made to protocol.
+ * "Abort" button fixed.  Previous version abort was disabled during
+   simulation.
+ * New checkbutton indicator for booleanentry (switch).
+ * Empty sequences (pymol) are now checked.
+ * Fixed heightmap (surface plot) grid to accurately measure the surface.
+ * added bohr units and conversion to meters
+ * added a free text label so users can label each element of a sequence.
+ * added example using Ruby's Rappture bindings.
+ * changed boolean widget to use a simple checkbutton 
+ * added ability to set the color of integer and number widgets
+   to a wavelength or range of wavelengths.
+ * fixed bug in Ruby putfile() method (bhaley)
+
+2008-03-31: nanovis 20080331 released
+2008-03-30: Rappture 20080330 released
+
+ * added initial bindings and build scripts for Ruby (bhaley)
Index: /tags/1.6.0/Makefile.in
===================================================================
--- /tags/1.6.0/Makefile.in	(revision 6168)
+++ /tags/1.6.0/Makefile.in	(revision 6168)
@@ -0,0 +1,90 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+INSTALL		= @INSTALL@
+SHELL		= @SHELL@
+MKDIR_P		= @MKDIR_P@
+RM		= rm -f
+VPATH		= $(srcdir)
+
+build_date	:= $(shell date +%Y%m%d)
+machine		:= $(shell uname -m | sed 's/\ //')
+os		:= $(shell uname -s)
+
+pkg_path	:= $(shell dirname $(prefix))
+pkg_name	:= $(shell basename $(prefix))
+SVN_VERSION	:= $(shell readlink -e $(srcdir) | xargs svnversion | sed 's/Unversioned directory/unknown/')
+
+rappture_binary_tarfile	= rappture-$(os)-$(machine)-$(build_date).tar.gz
+rappture_source_tarfile = rappture-src-$(build_date).tar.gz
+runtime_source_tarfile = rappture-runtime-src-$(build_date).tar.gz
+
+runtime_repo = https://nanohub.org/infrastructure/rappture-runtime/svn/trunk
+rappture_repo = https://nanohub.org/infrastructure/rappture/svn/trunk
+
+ENABLE_GUI	= @ENABLE_GUI@
+ENABLE_LANG	= @ENABLE_LANG@
+HAVE_FFMPEG	= @HAVE_FFMPEG_LIBS@
+TARGETS		= src lib
+
+ifneq ($(ENABLE_LANG),)
+  TARGETS += lang
+endif
+ifneq ($(ENABLE_GUI),)
+  TARGETS += gui builder tester examples puq
+endif
+ifneq ($(HAVE_FFMPEG),)
+  TARGETS += video
+endif
+
+.PHONY: all test install clean distclean package distrib runtime-distrib \
+	$(TARGETS)
+
+all:
+	for i in $(TARGETS) ; do \
+	  $(MAKE) -C $$i all || exit 1 ;\
+	done
+
+test:
+	$(MAKE) -C test all
+
+install:
+	for i in $(TARGETS) ; do \
+	  $(MAKE) -C $$i install || exit 1 ;\
+	done
+
+clean:
+	for i in $(TARGETS) ; do \
+	  $(MAKE) -C $$i clean || exit 1 ;\
+	done
+
+distclean: clean
+	$(RM) Makefile config.status config.log  *~
+	for i in $(TARGETS) ; do \
+	  $(MAKE) -C $$i distclean || exit 1 ;\
+	done
+
+package:
+	tar -C $(pkg_path) -czlf $(rappture_binary_tarfile) $(pkg_name)
+
+distrib:
+	$(RM) -r exported
+	$(MKDIR_P) -m 0755 exported
+	(cd exported; svn export -q $(rappture_repo) rappture)
+	tar -C exported -czlf $(rappture_source_tarfile) rappture
+	$(RM) -r exported
+
+runtime-distrib:
+	$(RM) -r exported
+	$(MKDIR_P) -m 0755 exported
+	(cd exported; svn export -q $(runtime_repo) runtime)
+	tar -C exported -czlf $(runtime_source_tarfile) runtime
+	$(RM) -r exported
Index: /tags/1.6.0/README
===================================================================
--- /tags/1.6.0/README	(revision 6168)
+++ /tags/1.6.0/README	(revision 6168)
@@ -0,0 +1,32 @@
+
+======================================================================
+          R A P P T U R E - rapid application infrastructure
+======================================================================
+
+ Rappture is the Rapid APPlication infrastrucTURE, a toolkit for
+ building scientific applications with a minimum of fuss and bother.
+
+ It was developed by the Network for Computational Nanotechnology
+ (NCN), an NSF-funded project creating cyberinfrastructure in support
+ of a science gateway for nanotechnology simulation.
+
+ See the following web site for an overview and documentation:
+   http://www.rappture.org
+
+----------------------------------------------------------------------
+
+ Rappture is a freely available, open source package.  You can
+ do virtually anything you like with it, such as modifying it,
+ redistributing it, and selling it either in whole or in part.
+ But you can't prevent anyone else from doing the same, and you
+ must keep all copyright notices intact, so the ownership and
+ authorship is clear.
+
+ See the file "license.terms" for complete information.
+
+----------------------------------------------------------------------
+
+ Developed by Michael McLennan, George Howlett, and Derrick Kearney.
+ Special thanks to Ben Rafferty for Java bindings and the Rappture
+ tester, and Ben Haley for Ruby bindings.
+
Index: /tags/1.6.0/aclocal.m4
===================================================================
--- /tags/1.6.0/aclocal.m4	(revision 6168)
+++ /tags/1.6.0/aclocal.m4	(revision 6168)
@@ -0,0 +1,11 @@
+builtin(include,./cf/tcl.m4)
+builtin(include,./cf/ax_compare_version.m4)
+builtin(include,./cf/ax_ruby_dev_flags.m4)
+builtin(include,./cf/ax_prog_ruby_version.m4)
+builtin(include,./cf/rpLangPython.m4)
+builtin(include,./cf/rpLangPerl.m4)
+builtin(include,./cf/rpLangOctave.m4)
+builtin(include,./cf/rpLangJava.m4)
+builtin(include,./cf/rpLangMatlab.m4)
+builtin(include,./cf/rpLangR.m4)
+builtin(include,./cf/rpLangRuby.m4)
Index: /tags/1.6.0/builder/Makefile.in
===================================================================
--- /tags/1.6.0/builder/Makefile.in	(revision 6168)
+++ /tags/1.6.0/builder/Makefile.in	(revision 6168)
@@ -0,0 +1,50 @@
+
+SHELL		= @SHELL@
+
+srcdir		= @srcdir@
+prefix		= @prefix@
+exec_prefix	= @exec_prefix@
+bindir		= @bindir@
+libdir		= @libdir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+mandir		= @mandir@
+includedir	= @includedir@
+
+pkgdatadir	= $(datadir)/$(PKG_DIR)
+pkglibdir	= $(libdir)/$(PKG_DIR)
+pkgincludedir	= $(includedir)/$(PKG_DIR)
+top_builddir	= .
+
+MKDIR_P		= @MKDIR_P@
+TCL_VERSION	= @TCL_VERSION@
+TCLSH           = $(bindir)/tclsh$(TCL_VERSION)
+INSTALL		= @INSTALL@
+
+PACKAGE_VERSION	= @PACKAGE_VERSION@
+
+version		= $(PACKAGE_VERSION)
+name		= RapptureBuilder$(version)
+
+destdir         = $(libdir)/$(name)
+
+.PHONY: all install install-pkg install-scripts clean distclean
+
+all:
+	$(MAKE) -C scripts all
+
+install: install-pkg install-scripts
+
+install-pkg:
+	$(MKDIR_P) -m 0755 $(destdir)
+	$(INSTALL) -m 444 pkgIndex.tcl $(destdir)
+
+install-scripts: scripts
+	$(MAKE) -C scripts install
+
+clean:
+	$(MAKE) -C scripts clean
+	$(RM) tool.xml
+
+distclean: clean
+	$(RM) Makefile pkgIndex.tcl *~
Index: /tags/1.6.0/builder/pkgIndex.tcl.in
===================================================================
--- /tags/1.6.0/builder/pkgIndex.tcl.in	(revision 6168)
+++ /tags/1.6.0/builder/pkgIndex.tcl.in	(revision 6168)
@@ -0,0 +1,12 @@
+
+package ifneeded RapptureBuilder @PACKAGE_VERSION@ [format {
+    set dir [file normalize "%s"]
+    set version @PACKAGE_VERSION@
+    lappend auto_path [file join $dir scripts]
+    namespace eval RapptureBuilder {
+	variable version $version
+	variable library $dir
+    }
+    package provide RapptureBuilder $version
+} $dir]
+
Index: /tags/1.6.0/builder/scripts/Makefile.in
===================================================================
--- /tags/1.6.0/builder/scripts/Makefile.in	(revision 6168)
+++ /tags/1.6.0/builder/scripts/Makefile.in	(revision 6168)
@@ -0,0 +1,83 @@
+
+srcdir		= @srcdir@
+prefix		= @prefix@
+exec_prefix	= @exec_prefix@
+bindir		= @bindir@
+libdir		= @libdir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+mandir		= @mandir@
+includedir	= @includedir@
+
+SHELL		= @SHELL@
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+TCLSH		= @TCLSH@
+VPATH		= $(srcdir)
+PACKAGE_VERSION = @PACKAGE_VERSION@
+
+FILES		= \
+		$(srcdir)/dragdrop.tcl \
+		$(srcdir)/filmstrip.tcl \
+		$(srcdir)/hierlist.tcl \
+		$(srcdir)/main.tcl \
+		$(srcdir)/objpath.tcl \
+		$(srcdir)/slideframes.tcl \
+		$(srcdir)/templates.tcl \
+		$(srcdir)/tool.rp \
+		$(srcdir)/tweener.tcl
+
+TEMPLATEFILES	= \
+		$(srcdir)/templates/clang.tl \
+		$(srcdir)/templates/fortran77.tl \
+		$(srcdir)/templates/java.tl \
+		$(srcdir)/templates/matlab.tl \
+		$(srcdir)/templates/octave.tl \
+		$(srcdir)/templates/perl.tl \
+		$(srcdir)/templates/python.tl \
+		$(srcdir)/templates/r.tl \
+		$(srcdir)/templates/ruby.tl \
+		$(srcdir)/templates/tcl.tl
+
+version 	= $(PACKAGE_VERSION)
+name 		= RapptureBuilder$(version)
+
+destdir		= $(libdir)/$(name)/scripts
+
+.PHONY: all install install_scripts install_templates install_images clean distclean
+
+all: tclIndex
+
+tclIndex: $(FILES)
+	$(TCLSH) $(srcdir)/../../gui/cf/mkindex.tcl --srcdir $(srcdir) \
+		--outfile tclIndex
+
+install: all install_scripts install_templates install_images 
+
+install_scripts: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	@for i in $(FILES); do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 444 $$i $(destdir) ; \
+	done 
+	$(INSTALL) -m 444 tclIndex $(destdir)
+
+install_templates: $(TEMPLATEFILES)
+	$(MKDIR_P) -m 0755 $(destdir)/templates
+	@for i in $(TEMPLATEFILES); do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 555 $$i $(destdir)/templates ; \
+	done
+
+install_images:
+	$(MKDIR_P) -m 0755 $(destdir)/images
+	@for i in $(srcdir)/images/*.png $(srcdir)/images/*.xbm; do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 444 $$i $(destdir)/images ; \
+	done 
+
+clean:
+	$(RM) tclIndex
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/builder/scripts/dragdrop.tcl
===================================================================
--- /tags/1.6.0/builder/scripts/dragdrop.tcl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/dragdrop.tcl	(revision 6168)
@@ -0,0 +1,245 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: dragdrop - drag-n-drop support for widgets
+#
+#  Derived classes inherit the basic drag-n-drop support from this
+#  widget class.  Widgets can register themselves as drag-n-drop
+#  sources and also as targets.
+#
+#  Derived classes should overload the following methods:
+#
+#    dd_get_source .... examines click point and returns drag data
+#
+#    dd_scan_target ... scans target at drop point and returns 1 if
+#                         data is accepted, and 0 if rejected
+#
+#    dd_finalize ...... handles final drag-and-drop operation,
+#                         transferring data from the start widget
+#                         to the final target.  Called with "-op start"
+#                         on the starting widget, and "-op end" on the
+#                         target widget.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+itcl::class Rappture::Dragdrop {
+    public method dragdrop {option args}
+
+    private method _get_source {widget x y}
+    private method _do_scan {x y {option indicate}}
+    private method _do_drop {x y}
+
+    # derived classes override these methods
+    protected method dd_get_source {widget x y}
+    protected method dd_scan_target {x y data}
+    protected method dd_finalize {option args}
+
+    private variable _enabled 1      ;# set to 0 to disable drag-n-drop
+    private variable _dragwin ""     ;# widget controlling drag-n-drop cursor
+    private variable _dragowner ""   ;# mega-widget that initiated drag-n-drop
+    private variable _dragx ""       ;# drag-n-drop started at this x
+    private variable _dragy ""       ;# drag-n-drop started at this y
+    private variable _dragdata ""    ;# description of drag-n-drop source data
+    private variable _lastcursor ""  ;# cursor before start of drag-n-drop
+    private variable _lasttarget ""  ;# last target found by _do_scan
+
+    set dir [file dirname [info script]]
+    private common _dcursor "@[file join $dir images drag.xbm] [file join $dir images dragm.xbm] black white"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dragdrop protocol
+# USAGE: dragdrop enabled ?<boolean>?
+# USAGE: dragdrop source <widget>
+# USAGE: dragdrop indicate -from <w> -to <w> -x <x> -y <y> -data <data>
+# USAGE: dragdrop finalize -op <dir> -from <w> -to <w> -x <x> -y <y> -data <data>
+# USAGE: dragdrop cancel
+#
+# Derived classes use this to register component widgets as drag-n-drop
+# sources and targets.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dragdrop::dragdrop {option args} {
+    switch -- $option {
+        protocol {
+            return "1.0"
+        }
+        enabled {
+            if {[llength $args] == 0} {
+                return $_enabled
+            } elseif {[llength $args] != 1} {
+                error "wrong # args: should be \"dragdrop enabled ?boolean?\""
+            }
+            set state [lindex $args 0]
+            set _enabled [expr {($state) ? 1 : 0}]
+            return $_enabled
+        }
+        source {
+            set widget [lindex $args 0]
+            bind $widget <ButtonPress> [itcl::code $this _get_source %W %X %Y]
+            bind $widget <B1-Motion> [itcl::code $this _do_scan %X %Y]
+            bind $widget <ButtonRelease> [itcl::code $this _do_drop %X %Y]
+        }
+        indicate {
+            array set params $args
+            return [dd_scan_target $params(-x) $params(-y) $params(-data)]
+        }
+        finalize {
+            return [eval dd_finalize drop $args]
+        }
+        cancel {
+            dd_finalize cancel
+        }
+        default {
+            error "bad option \"$option\": should be protocol, source, indicate, finalize, cancel"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _get_source <widget> <x> <y>
+#
+# Invoked when the user clicks on a widget to start a drag-n-drop
+# operation.  Saves the <x>,<y> coordinate, and waits for a _do_scan
+# call.  If the user drags the mouse a short distance away from the
+# click point, then the drag-n-drop operation begins.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dragdrop::_get_source {widget x y} {
+    set _dragowner ""
+    set _lasttarget ""
+
+    set winx [expr {$x-[winfo rootx $widget]}]
+    set winy [expr {$y-[winfo rooty $widget]}]
+    set d [dd_get_source $widget $winx $winy]
+
+    if {"" != $d && $_enabled} {
+        set _dragwin $widget
+        set w $widget
+        while {$w != "."} {
+            if {[catch {$w dragdrop protocol}] == 0} {
+                set _dragowner $w
+                break
+            }
+            set w [winfo parent $w]
+        }
+        set _dragx $x
+        set _dragy $y
+        set _dragdata $d
+        set _lastcursor [$widget cget -cursor]
+        $widget configure -cursor $_dcursor
+    } else {
+        set _dragwin ""
+        set _dragowner ""
+        set _dragx ""
+        set _dragy ""
+        set _dragdata ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _do_scan <x> <y> ?<operation>?
+#
+# Invoked as the user moves the mouse pointer during a drag-n-drop
+# operation.  Scans for a widget at the given <x>,<y> root window
+# coordinate that will accept the drag data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dragdrop::_do_scan {x y {option indicate}} {
+    if {"" != $_dragowner} {
+        set dx [expr {abs($x-$_dragx)}]
+        set dy [expr {abs($y-$_dragy)}]
+
+        # moved significantly away from click?
+        if {$dx > 3 || $dy > 3} {
+            set win [winfo containing $x $y]
+            if {"" != $win} {
+                set found 0
+                set wx [expr {$x-[winfo rootx $win]}]
+                set wy [expr {$y-[winfo rooty $win]}]
+                while {"." != $win} {
+                    # find the containing win that handles dragdrop and
+                    # accepts the given data type
+                    if {[catch {$win dragdrop $option -op end -from $_dragowner -to $win -x $wx -y $wy -data $_dragdata} result] == 0 && [string is boolean -strict $result] && $result} {
+                        if {"" != $_lasttarget && $_lasttarget != $win} {
+                            # if we had a different target, cancel it
+                            catch {$_lasttarget dragdrop cancel}
+                        }
+                        set _lasttarget $win
+                        set found 1
+
+                        # if this is a finalize operation, then send final
+                        # message to starting side
+                        if {$option == "finalize"} {
+                            catch {$_dragowner dragdrop finalize -op start -from $_dragowner -to $win -x $wx -y $wy -data $_dragdata}
+                        }
+                        break
+                    }
+                    set win [winfo parent $win]
+                }
+
+                if {!$found && "" != $_lasttarget} {
+                    # no drop target at this point? cancel any previous target
+                    catch {$_lasttarget dragdrop cancel}
+                    set _lasttarget ""
+                }
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _do_drop <x> <y>
+#
+# Invoked when the user releases the mouse pointer during a drag-n-drop
+# operation.  Tries to send the drag data to the widget at the current
+# <x>,<y> root window coordinate to complete the operation.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dragdrop::_do_drop {x y} {
+    if {"" != $_dragowner} {
+        _do_scan $x $y indicate
+        _do_scan $x $y finalize
+        $_dragwin configure -cursor $_lastcursor
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dd_get_source <widget> <x> <y>
+#
+# Derived classes override this method to look at the given <widget>
+# and <x>,<y> coordinate and figure out what data value the source
+# is exporting.  Returns a string that identifies the type of the
+# data.  This string is passed along to targets via the dd_scan_target
+# method.  If the target may check the source type and reject the data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dragdrop::dd_get_source {widget x y} {
+    return "?"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dd_scan_target <x> <y> <data>
+#
+# Derived classes override this method to look within themselves at
+# the given <x>,<y> coordinate and decide whether or not it can
+# accept the <data> type at that location.  Returns 1 if the target
+# accepts the data, and 0 otherwise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dragdrop::dd_scan_target {x y data} {
+    return 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dd_finalize drop -op start|end -from <w> -to <w> \
+#                           -x <x> -y <y> -data <data>
+# USAGE: dd_finalize cancel
+#
+# Derived classes override this method to handle the end of a drag
+# and drop operation.  The operation can be completed with a successful
+# drop of data, or cancelled.  Returns 1 if drop was successful, and
+# 0 otherwise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dragdrop::dd_finalize {option args} {
+    return 0
+}
Index: /tags/1.6.0/builder/scripts/filmstrip.tcl
===================================================================
--- /tags/1.6.0/builder/scripts/filmstrip.tcl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/filmstrip.tcl	(revision 6168)
@@ -0,0 +1,441 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: filmstrip - palette of objects arranged horizontally
+#
+#  This widget is similar to the "film strip" view in windows.  It
+#  shows a horizontal arrangement of objects and lets you click on
+#  each one to initiate an action.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Filmstrip.padding 8 widgetDefault
+option add *Filmstrip.background #999999 widgetDefault
+option add *Filmstrip.troughColor #666666 widgetDefault
+option add *Filmstrip.activeBackground #d9d9d9 widgetDefault
+option add *Filmstrip.titleBackground #888888 widgetDefault
+option add *Filmstrip.titleForeground white widgetDefault
+option add *Filmstrip.font {helvetica -12} widgetDefault
+
+itcl::class Rappture::Filmstrip {
+    inherit itk::Widget Rappture::Dragdrop
+
+    itk_option define -orient orient Orient "horizontal"
+    itk_option define -length length Length 0
+    itk_option define -padding padding Padding 0
+    itk_option define -titlebackground titleBackground Background ""
+    itk_option define -titleforeground titleForeground Foreground ""
+    itk_option define -activebackground activeBackground Foreground ""
+    itk_option define -dragdropcommand dragDropCommand DragDropCommand ""
+
+    constructor {args} { # defined below }
+    public method add {name args}
+
+    protected method _hilite {state name}
+    protected method _fixLayout {args}
+    protected method _scroll {args}
+
+    # define these for drag-n-drop support of items
+    protected method dd_get_source {widget x y}
+    protected method dd_scan_target {x y data}
+    protected method dd_finalize {option args}
+
+    private variable _dispatcher ""  ;# dispatcher for !events
+    private variable _items ""       ;# list of item names
+    private variable _data           ;# maps item name => title, image, etc.
+}
+
+itk::usual Filmstrip {
+    keep -cursor -font -foreground -background
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Filmstrip::constructor {args} {
+    component hull configure -height 100
+    pack propagate $itk_component(hull) off
+
+    # create a dispatcher for events
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !layout
+    $_dispatcher dispatch $this !layout [itcl::code $this _fixLayout]
+
+    itk_component add strip {
+        canvas $itk_interior.strip -highlightthickness 0
+    } {
+        usual
+        keep -borderwidth -relief
+        ignore -highlightthickness -highlightbackground -highlightcolor
+    }
+    pack $itk_component(strip) -expand yes -fill both
+
+    # this widget exports nodes via drag-n-drop
+    dragdrop source $itk_component(strip)
+
+    itk_component add sbar {
+        scrollbar $itk_interior.sbar
+    }
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <name> ?-title <string>? ?-image <handle>?
+#
+# Clients use this to add new items onto the film strip.  Each item
+# has an internal <name> that refers to it, along with an icon and
+# a title.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Filmstrip::add {name args} {
+    Rappture::getopts args params {
+        value -title ""
+        value -image ""
+    }
+    if {[llength $args] > 0} {
+        error "wrong # args: should be \"add name ?-option val -option val...?\""
+    }
+
+    set i [lsearch $_items $name]
+    if {$i >= 0} {
+        error "name \"$name\" already exists"
+    }
+    lappend _items $name
+    set _data($name-title) $params(-title)
+    set _data($name-image) $params(-image)
+    set _data($name-pos) 0
+
+    if {$itk_option(-orient) == "horizontal"} {
+        set anchor w
+        set whichsize wd
+    } else {
+        set anchor n
+        set whichsize ht
+    }
+
+    $itk_component(strip) create rectangle 0 0 0 0 \
+        -outline "" -fill "" -tags [list $name:all $name:bg]
+
+    set htmax 0
+    set sizemax 0
+    if {"" != $params(-image)} {
+        $itk_component(strip) create image 0 0 -anchor $anchor \
+            -image $params(-image) -tags [list $name:all $name:image]
+        foreach {x0 y0 x1 y1} [$itk_component(strip) bbox $name:image] break
+        set wd [expr {$x1-$x0}]
+        set ht [expr {$y1-$y0}]
+        set htmax $ht
+        set sizemax [set $whichsize]
+    }
+    if {"" != $params(-title)} {
+        $itk_component(strip) create placard 0 0 -anchor s \
+            -foreground $itk_option(-titleforeground) \
+            -background $itk_option(-titlebackground) \
+            -text $params(-title) -tags [list $name:all $name:title]
+        foreach {x0 y0 x1 y1} [$itk_component(strip) bbox $name:title] break
+        set wd [expr {$x1-$x0}]
+        set ht [expr {$y1-$y0}]
+        set htmax [expr {$htmax+$ht}]
+        set s [set $whichsize]
+        if {$s > $sizemax} {set sizemax $s}
+    }
+
+    $itk_component(strip) bind $name:all <Enter> \
+        [itcl::code $this _hilite on $name]
+    $itk_component(strip) bind $name:all <Leave> \
+        [itcl::code $this _hilite off $name]
+
+    # make sure we fix up the layout at some point
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _hilite <state> <name>
+#
+# Called automatically when the mouse pointer enters/leaves an icon
+# on the film strip.  Changes the background to highlight the option.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Filmstrip::_hilite {state name} {
+    if {$state} {
+        set bg $itk_option(-activebackground)
+    } else {
+        set bg ""
+    }
+    $itk_component(strip) itemconfigure $name:bg -fill $bg
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixLayout ?<eventArgs>...?
+#
+# Used internally to realign all items vertically after new items
+# have been added to the strip.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Filmstrip::_fixLayout {args} {
+    if {$itk_option(-orient) == "horizontal"} {
+        # figure out the max height for overall strip
+        set xpos $itk_option(-padding)
+        set hmax 0
+        foreach name $_items {
+            foreach {x0 y0 x1 y1} [$itk_component(strip) bbox $name:image] break
+            set h1 [expr {$y1-$y0}]
+            set w [expr {$x1-$x0}]
+            foreach {x0 y0 x1 y1} [$itk_component(strip) bbox $name:title] break
+            set h2 [expr {$y1-$y0}]
+            set h [expr {$h1+$h2}]
+            if {$h > $hmax} { set hmax $h }
+
+            set _data($name-pos) $xpos
+            $itk_component(strip) coords $name:image $xpos 0
+            set xpos [expr {$xpos + $w + $itk_option(-padding)}]
+        }
+        set hmax [expr {$hmax+2*$itk_option(-padding)}]
+
+        set sbarh [winfo reqheight $itk_component(sbar)]
+        component hull configure -height [expr {$hmax+$sbarh}]
+
+        foreach name $_items {
+            foreach {x0 y0 x1 y1} [$itk_component(strip) bbox $name:image] break
+            set y0 $itk_option(-padding)
+            set y1 $hmax
+            set w [expr {$x1-$x0}]
+            $itk_component(strip) coords $name:bg $x0 $y0 $x1 $y1
+
+            foreach {x0 y0 x1 y1} [$itk_component(strip) bbox $name:title] break
+            set titleh [expr {$y1-$y0}]
+            set x [expr {$_data($name-pos) + $w/2}]
+            set y [expr {$hmax-$itk_option(-padding)}]
+            $itk_component(strip) coords $name:title $x $y
+
+            foreach {x y} [$itk_component(strip) coords $name:image] break
+            set y [expr {($hmax-$titleh)/2}]
+            $itk_component(strip) coords $name:image $x $y
+        }
+
+        # fix up the scrolling region to include all of these items
+        foreach {x0 y0 x1 y1} [$itk_component(strip) bbox all] break
+        set x1 [expr {$x1+$itk_option(-padding)}]
+        $itk_component(strip) configure -scrollregion [list 0 0 $x1 $y1]
+
+        set size [winfo pixels $itk_component(hull) $itk_option(-length)]
+        if {$size == 0} {
+            component hull configure -width [expr {$x1+$itk_option(-padding)}]
+        }
+
+    } else {
+        # figure out the max width for overall strip
+        set ypos $itk_option(-padding)
+        set wmax 0
+        foreach name $_items {
+            foreach {x0 y0 x1 y1} [$itk_component(strip) bbox $name:image] break
+            set w [expr {$x1-$x0}]
+            set ht [expr {$y1-$y0}]
+            if {$w > $wmax} { set wmax $w }
+
+            if {"" != [$itk_component(strip) find withtag $name:title]} {
+                foreach {x0 y0 x1 y1} [$itk_component(strip) bbox $name:title] break
+                set w [expr {$x1-$x0}]
+                set ht [expr {$ht+$y1-$y0}]
+                if {$w > $wmax} { set wmax $w }
+            }
+
+            set _data($name-pos) $ypos
+            $itk_component(strip) coords $name:image 0 $ypos
+            set ypos [expr {$ypos + $ht + $itk_option(-padding)}]
+        }
+        set wmax [expr {$wmax+2*$itk_option(-padding)}]
+
+        set sbarw [winfo reqwidth $itk_component(sbar)]
+        component hull configure -width [expr {$wmax+$sbarw}]
+
+        foreach name $_items {
+            foreach {x y} [$itk_component(strip) coords $name:image] break
+            set x [expr {$wmax/2}]
+            $itk_component(strip) coords $name:image $x $y
+
+            foreach {x0 y0 x1 y1} [$itk_component(strip) bbox $name:image] break
+            set imght [expr {$y1-$y0}]
+
+            if {"" != [$itk_component(strip) find withtag $name:title]} {
+                foreach {x0 y0 x1 y1} [$itk_component(strip) bbox $name:title] break
+                set titleh [expr {$y1-$y0}]
+                set x [expr {$wmax/2}]
+                set y [expr {$_data($name-pos) + $imght + $titleh}]
+                $itk_component(strip) coords $name:title $x $y
+            } else {
+                set titleh 0
+            }
+
+            set x0 $itk_option(-padding)
+            set x1 $wmax
+            set y0 $_data($name-pos)
+            set y1 [expr {$y0 + $imght + $titleh}]
+            $itk_component(strip) coords $name:bg $x0 $y0 $x1 $y1
+        }
+
+        # fix up the scrolling region to include all of these items
+        set x1 0
+        set y1 0
+        foreach {x0 y0 x1 y1} [$itk_component(strip) bbox all] break
+        set x1 [expr {$x1+$itk_option(-padding)}]
+        $itk_component(strip) configure -scrollregion [list 0 0 $x1 $y1]
+
+        set size [winfo pixels $itk_component(hull) $itk_option(-length)]
+        if {$size == 0} {
+            component hull configure -height [expr {$y1+$itk_option(-padding)}]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _scroll <arg> <arg>...
+#
+# Used internally to handle the automatic scrollbar.  If a scrollbar
+# is needed, then it is packed into view.  Otherwise, it disappears.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Filmstrip::_scroll {args} {
+    if {$itk_option(-orient) == "horizontal"} {
+        set view [$itk_component(strip) xview]
+        set side "bottom"
+        set fill "x"
+    } else {
+        set view [$itk_component(strip) yview]
+        set side "right"
+        set fill "y"
+    }
+
+    if {$view != {0 1}} {
+        pack $itk_component(sbar) -before $itk_component(strip) \
+            -side $side -fill $fill
+    } else {
+        pack forget $itk_component(sbar)
+    }
+    eval $itk_component(sbar) set $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dd_get_source <widget> <x> <y>
+#
+# Looks at the given <widget> and <x>,<y> coordinate to figure out
+# what data value the source is exporting.  Returns a string that
+# identifies the type of the data.  This string is passed along to
+# targets via the dd_scan_target method.  If the target may check
+# the source type and reject the data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Filmstrip::dd_get_source {widget x y} {
+    if {[string length $itk_option(-dragdropcommand)] == 0} {
+        return ""
+    }
+
+    # translate the screen x,y to the canvas x,y (may be scrolled down)
+    set x [$itk_component(strip) canvasx $x]
+    set y [$itk_component(strip) canvasy $y]
+
+    foreach id [$itk_component(strip) find overlapping $x $y $x $y] {
+        foreach tag [$itk_component(strip) gettags $id] {
+            # search for a tag like XXX:all for item XXX
+            if {[regexp {^([a-zA-Z0-9]+):all$} $tag match name]} {
+                # invoke the dragdrop command with the item name
+                # and see if it returns anything
+                if {[catch {uplevel #0 $itk_option(-dragdropcommand) $name} result]} {
+                    bgerror $result
+                } elseif {[string length $result] > 0} {
+                    return $result
+                }
+            }
+        }
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dd_scan_target <x> <y> <data>
+#
+# Looks at the given <x>,<y> coordinate and checks to see if the
+# dragdrop <data> can be accepted at that point.  Returns 1 if so,
+# and 0 if the data is rejected.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Filmstrip::dd_scan_target {x y data} {
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dd_finalize drop -op start|end -from <w> -to <w> \
+#                           -x <x> -y <y> -data <data>
+# USAGE: dd_finalize cancel
+#
+# Handles the end of a drag and drop operation.  The operation can be
+# completed with a successful drop of data, or cancelled.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Filmstrip::dd_finalize {option args} {
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -orient
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Filmstrip::orient {
+    switch -- $itk_option(-orient) {
+        horizontal {
+            $itk_component(strip) configure \
+                -xscrollcommand [itcl::code $this _scroll]
+            $itk_component(sbar) configure -orient horizontal \
+                -command [list $itk_component(strip) xview]
+            pack $itk_component(strip) -side top
+
+            set size [winfo pixels $itk_component(hull) $itk_option(-length)]
+            if {$size > 0} {
+                component hull configure -width $size
+            }
+        }
+        vertical {
+            $itk_component(strip) configure \
+                -yscrollcommand [itcl::code $this _scroll]
+            $itk_component(sbar) configure -orient vertical \
+                -command [list $itk_component(strip) yview]
+            pack $itk_component(strip) -side left
+
+            set size [winfo pixels $itk_component(hull) $itk_option(-length)]
+            if {$size > 0} {
+                component hull configure -height $size
+            }
+        }
+        default {
+            error "bad value \"$itk_option(-orient)\": should be horizontal, vertical"
+        }
+    }
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -length
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Filmstrip::length {
+    set size [winfo pixels $itk_component(hull) $itk_option(-length)]
+    if {$size > 0} {
+        if {$itk_option(-orient) == "horizontal"} {
+            component hull configure -width $size
+        } else {
+            component hull configure -height $size
+        }
+    } else {
+        $_dispatcher event -idle !layout
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -titlebackground, -titleforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Filmstrip::titlebackground {
+    foreach name $_items {
+        $itk_component(strip) itemconfigure $name:title \
+            -background $itk_option(-titlebackground)
+    }
+}
+itcl::configbody Rappture::Filmstrip::titleforeground {
+    foreach name $_items {
+        $itk_component(strip) itemconfigure $name:title \
+            -foreground $itk_option(-titleforeground)
+    }
+}
Index: /tags/1.6.0/builder/scripts/hierlist.tcl
===================================================================
--- /tags/1.6.0/builder/scripts/hierlist.tcl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/hierlist.tcl	(revision 6168)
@@ -0,0 +1,540 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: hierlist - hierarchical list of elements
+#
+#  This widget is similar to the BLT hierbox or treeview, but it
+#  allows for embedded windows at each node.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Hierlist.width 2i widgetDefault
+option add *Hierlist.height 3i widgetDefault
+option add *Hierlist.indent 20 widgetDefault
+option add *Hierlist.icon {treepl treemn} widgetDefault
+option add *Hierlist.selectBackground cyan widgetDefault
+option add *Hierlist.dropLineColor blue widgetDefault
+option add *Hierlist.font {helvetica -12} widgetDefault
+
+itcl::class Rappture::Hierlist {
+    inherit itk::Widget Rappture::Dragdrop
+
+    itk_option define -indent indent Indent 10
+    itk_option define -padding padding Padding 4
+    itk_option define -icon icon Icon ""
+    itk_option define -font font Font ""
+    itk_option define -title title Title "%type: %id"
+    itk_option define -selectbackground selectBackground Foreground ""
+    itk_option define -droplinecolor dropLineColor Foreground ""
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method tree {option args}
+    public method select {what {how "-notify"}}
+    public method curselection {args}
+    public method toggle {what}
+
+    public method xview {args} { eval $itk_component(area) xview $args }
+    public method yview {args} { eval $itk_component(area) yview $args }
+
+    protected method _redraw {args}
+    protected method _redrawChildren {node indent ypos}
+    protected method _edit {option node field args}
+
+    # define these for drag-n-drop support of items
+    protected method dd_get_source {widget x y}
+    protected method dd_scan_target {x y data}
+    protected method dd_finalize {option args}
+
+    private variable _dispatcher ""  ;# dispatcher for !events
+    private variable _tree ""        ;# BLT tree object for node data
+    private variable _current ""     ;# current selected node
+    private variable _droppos ""     ;# node index for dragdrop target pos
+    private variable _imh            ;# open/close images
+}
+
+itk::usual Hierlist {
+    keep -cursor -font -foreground -background
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Hierlist::constructor {args} {
+    itk_option add hull.width hull.height
+    pack propagate $itk_component(hull) off
+
+    # create a dispatcher for events
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !redraw
+    $_dispatcher dispatch $this !redraw [itcl::code $this _redraw]
+
+    # create a root node
+    set _tree [blt::tree create]
+    $_tree set 0 terminal yes  ;# so you can't drop at the top level
+
+    itk_component add area {
+        canvas $itk_interior.area -highlightthickness 0
+    } {
+        usual
+        ignore -borderwidth -relief
+        ignore -highlightthickness -highlightbackground -highlightcolor
+        keep -xscrollcommand -yscrollcommand
+    }
+    pack $itk_component(area) -expand yes -fill both
+
+    # this widget exports nodes via drag-n-drop
+    dragdrop source $itk_component(area)
+
+    set _imh(open) [image create photo]
+    set _imh(close) [image create photo]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Hierlist::destructor {} {
+    foreach name [array names _imh] {
+        image delete $_imh($name)
+    }
+    blt::tree destroy $_tree
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tree insert <node> <pos> ?<field1> <val1> <field2> <val2> ...?
+# USAGE: tree delete ?<node> <node> ...?
+# USAGE: tree get <node> <field>
+# USAGE: tree set <node> <field> <value>
+# USAGE: tree path <node> ?<pattern>?
+# USAGE: tree children <node>
+#
+# Clients use this to manipulate items in the tree being displayed
+# within the widget.  Each <node> is an integer node number in the
+# underlying BLT tree object.  The root node is node 0.  Each node
+# has a series of <field>'s with values.  The fields are used for the
+# -title of each node, and the "terminal" field controls whether or
+# not a node can have children added.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Hierlist::tree {option args} {
+    switch -- $option {
+        insert {
+            set node [lindex $args 0]
+            set pos [lindex $args 1]
+            if {$pos == "end"} {set pos [llength [$_tree children $node]]}
+            set args [lrange $args 2 end]
+            set newnode [$_tree insert $node -at $pos -data [eval list open yes terminal yes dragdrop yes $args]]
+
+            # make sure we fix up the layout at some point
+            $_dispatcher event -idle !redraw
+
+            return $newnode
+        }
+        delete {
+            if {$args == "all"} {
+                $_tree delete 0
+            } else {
+                foreach node $args {
+                    $_tree delete $node
+                }
+            }
+
+            # make sure we fix up the layout at some point
+            $_dispatcher event -idle !redraw
+        }
+        get {
+            return [eval $_tree get $args]
+        }
+        set {
+            # changed an option -- may be %type or %id -- update display
+            $_dispatcher event -idle !redraw
+
+            return [eval $_tree set $args]
+        }
+        path {
+            if {[llength $args] < 1 || [llength $args] > 2} {
+                error "wrong # args: should be \"tree path node ?pattern?\""
+            }
+            set node [lindex $args 0]
+            set pattern [lindex $args 1]
+            if {$pattern == ""} { set pattern %id }
+
+            set path ""
+            while {$node > 0} {
+                catch {unset info}
+                foreach {name val} [$_tree get $node] {
+                    set info(%$name) $val
+                    set info(%lc:$name) [string tolower $val]
+                    set info(%uc:$name) [string toupper $val]
+                }
+                set name [string map [array get info] $pattern]
+                set path "$name.$path"
+                set node [$_tree parent $node]
+            }
+            return [string trimright $path .]
+        }
+        children {
+            set node [lindex $args 0]
+            return [$_tree children $node]
+        }
+        default {
+            error "bad option \"$option\": should be insert, delete, get, set, path, children"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: select <what> ?-notify|-silent?
+#
+# Called when you click on an item to select it.  Highlights the item
+# and returns information about it for the curselection.  This normally
+# triggers a <<Selection>> event on the widget, but that is suppressed
+# if the -silent option is given.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Hierlist::select {what {how "-notify"}} {
+    set c $itk_component(area)
+    if {$what == "none"} {
+        set what ""
+    }
+    set same [string equal $what $_current]
+
+    if {"" != $_current} {
+        # clear any current selection
+        $c itemconfigure item:$_current-bg -fill ""
+        set _current ""
+    }
+
+    if {"" != $what} {
+        $c itemconfigure item:$what-bg -fill $itk_option(-selectbackground)
+        set _current $what
+    }
+
+    if {!$same && ![string equal $how "-silent"]} {
+        # selection changed? then tell clients
+        event generate $itk_component(hull) <<Selection>>
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: curselection
+# USAGE: curselection -path <string>
+# USAGE: curselection -field <name>
+#
+# Returns information about the current selection.  Returns "" if
+# there is no selection.  If "-field <name>" is specified, then it
+# returns the value of that field for the current selection.  If
+# the "-path <string>" is specified, then it returns the path to
+# the current node, using <string> as a pattern for each node name
+# and filling in any %field items for each node.  With no extra args,
+# it returns the node number from the underlying BLT tree.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Hierlist::curselection {args} {
+    if {"" == $_current} {
+        return ""
+    }
+
+    if {[llength $args] == 0} {
+        return $_current
+
+    } elseif {[llength $args] == 2} {
+        switch -- [lindex $args 0] {
+            -path {
+                set pattern [lindex $args 1]
+                return [tree path $_current $pattern]
+            }
+            -field {
+                return [$_tree get $_current [lindex $args 1]]
+            }
+            default {
+                error "bad option \"[lindex $args 0]\": should be -field, -path"
+            }
+        }
+    } else {
+        error "wrong # args: should be \"curselection ?-path str? ?-field name?\""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: toggle <what>
+#
+# Called when you click on an item to select it.  Highlights the item
+# and returns information about it for the curselection.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Hierlist::toggle {what} {
+    set flipped [expr {![$_tree get $what open]}]
+    $_tree set $what open $flipped
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw ?<eventArgs>...?
+#
+# Used internally to redraw all items in the hierarchy after the
+# tree has changed somehow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Hierlist::_redraw {args} {
+    set c $itk_component(area)
+    $c delete all
+
+    set lineht [font metrics $itk_option(-font) -linespace]
+    set ypos [expr {0.5*$lineht + $itk_option(-padding)}]
+    _redrawChildren 0 0 ypos
+
+    foreach {x0 y0 x1 y1} [$c bbox text] break
+    $c configure -scrollregion [list 0 0 [expr {$x1+10}] [expr {$y1+10}]]
+
+    # did a selected node get folded up when the parent closed?
+    if {"" == [$c find withtag selected]} {
+        select none
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redrawChildren <node> <indent> <yposVar>
+#
+# Used internally to redraw all items in the hierarchy after the
+# tree has changed somehow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Hierlist::_redrawChildren {node indent yposVar} {
+    set c $itk_component(area)
+    upvar $yposVar ypos
+
+    set xmid [expr {$indent + $itk_option(-indent)/2}]
+    set xtxt [expr {$indent + $itk_option(-indent)}]
+    set lineht [font metrics $itk_option(-font) -linespace]
+
+    foreach n [$_tree children $node] {
+        # background rectangle for selection highlight
+        set tlist [list item:$n item:$n-bg]
+        if {[string equal $n $_current]} {
+            set bg $itk_option(-selectbackground)
+            lappend tlist selected
+        } else {
+            set bg ""
+        }
+        $c create rect 0 [expr {$ypos-0.5*$lineht-1}] 1000 [expr {$ypos+0.5*$lineht+1}] -outline "" -fill $bg -tags $tlist
+
+        $c bind item:$n <ButtonRelease> [itcl::code $this select $n]
+
+        # +/- button for expanding the hierarchy
+        if {![$_tree get $n terminal]} {
+            if {[$_tree get $n open]} {
+                set imh $_imh(open)
+            } else {
+                set imh $_imh(close)
+            }
+            $c create image $xmid $ypos -anchor c -image $imh -tags plus:$n
+            $c bind plus:$n <ButtonPress> [itcl::code $this toggle $n]
+        }
+
+        # label for this node 
+        catch {unset data}
+        array set data [$_tree get $n]
+        set xpos $xtxt
+
+        set subs(%type) ""
+        set subs(%id) ""
+        foreach {name val} [$_tree get $n] {
+            set subs(%$name) $val
+            set subs(%lc:$name) [string tolower $val]
+            set subs(%uc:$name) [string toupper $val]
+        }
+
+        set str [string map [array get subs] $itk_option(-title)]
+        $c create text $xpos $ypos -anchor w -text $str -font $itk_option(-font) -tags [list text item:$n item:$n-text]
+
+        set ypos [expr {$ypos+$lineht+$itk_option(-padding)}]
+
+        # indent and draw all children
+        if {![$_tree get $n terminal] && [$_tree get $n open]} {
+            # if this node has children, draw them here
+            _redrawChildren $n $xtxt ypos
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dd_get_source <widget> <x> <y>
+#
+# Looks at the given <widget> and <x>,<y> coordinate to figure out
+# what data value the source is exporting.  Returns a string that
+# identifies the type of the data.  This string is passed along to
+# targets via the dd_scan_target method.  If the target may check
+# the source type and reject the data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Hierlist::dd_get_source {widget x y} {
+    # convert from screen coords to canvas coords (for scrollbars)
+    set x [$widget canvasx $x]
+    set y [$widget canvasy $y]
+
+    set data ""
+    foreach id [$widget find overlapping $x $y $x $y] {
+        foreach tag [$widget gettags $id] {
+            # search for a tag like item:NNN and make sure it's selected
+            if {[regexp {^item:([0-9]+)$} $tag match node]
+                  && $node == $_current} {
+
+                # some nodes have drag-n-drop turned off
+                if {[$_tree get $node dragdrop]} {
+                    set data [list node:$node [$_tree get $node]]
+                }
+                break
+            }
+        }
+    }
+    # return drag-n-drop data, if we found it
+    return $data
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dd_scan_target <x> <y> <data>
+#
+# Looks at the given <x>,<y> coordinate and checks to see if the
+# dragdrop <data> can be accepted at that point.  Returns 1 if so,
+# and 0 if the data is rejected.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Hierlist::dd_scan_target {x y data} {
+    set c $itk_component(area)
+    set _droppos ""  ;# assume no place to drop
+
+    switch -glob -- $data {
+        node:* {
+            # convert from screen coords to canvas coords (for scrollbars)
+            set x [$c canvasx $x]
+            set y [$c canvasy $y]
+
+            # search a little above the hot-spot
+            set y [expr {$y-5}]
+
+            foreach id [$c find overlapping $x $y $x $y] {
+                foreach tag [$c gettags $id] {
+                    if {[regexp {^item:([0-9]+)$} $tag match node]} {
+                        # draw the dropline beneath the item found
+                        if {"" == [$c find withtag dropline]} {
+                            $c create line 0 0 0 0 \
+                                -fill $itk_option(-droplinecolor) -tags dropline
+                        }
+
+                        foreach {x0 y0 x1 y1} [$c bbox item:$node-bg] break
+                        if {![$_tree get $node terminal]} {
+                            # drop on a node with children
+                            if {$y > $y0 + 0.6*($y1-$y0)} {
+                                # drop near the bottom -- insert as first child
+                                set _droppos "$node -at 0"
+                                set d [$_tree depth $node]
+                                set x0 [expr {($d+1)*$itk_option(-indent)}]
+                                $c coords dropline $x0 $y1 $x1 $y1
+                            } else {
+                                # drop on top -- insert as last child
+                                set x0 [expr {$x0+1}]
+                                set x1 [expr {[winfo width $c]-1}]
+                                $c coords dropline $x0 $y0 $x1 $y0 $x1 $y1 $x0 $y1 $x0 $y0
+                                set last [llength [$_tree children $node]]
+                                set _droppos "$node -at $last"
+                            }
+                        } else {
+                            set pnode [$_tree parent $node]
+                            if {![$_tree get $pnode terminal]} {
+                                set pos [expr {[$_tree position $node]+1}]
+                                set _droppos "$pnode -at $pos"
+                                set d [$_tree depth $node]
+                                set x0 [expr {$d*$itk_option(-indent)}]
+                                $c coords dropline $x0 $y1 $x1 $y1
+                            }
+                        }
+
+                        break
+                    }
+                }
+            }
+            if {"" != $_droppos} {
+                return 1
+            }
+            $c coords dropline -1 -1 -1 -1
+            return 0
+        }
+    }
+    return 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dd_finalize drop -op start|end -from <w> -to <w> \
+#                           -x <x> -y <y> -data <data>
+# USAGE: dd_finalize cancel
+#
+# Handles the end of a drag and drop operation.  The operation can be
+# completed with a successful drop of data, or cancelled.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Hierlist::dd_finalize {option args} {
+    $itk_component(area) delete dropline
+
+    if {$option == "drop" && "" != $_droppos} {
+        array set params $args
+        switch -glob -- $params(-data) {
+            node:* {
+                if {$params(-op) == "end"
+                      && [string equal $params(-from) $params(-to)]} {
+
+                    regexp {node:([0-9]+)} $params(-data) match node
+                    eval $_tree move $node $_droppos
+                    event generate $itk_component(hull) <<SelectionPath>>
+                } else {
+                    set dlist [list open yes terminal yes dragdrop yes]
+                    eval lappend dlist [lrange $params(-data) 1 end]
+                    eval $_tree insert $_droppos -data [list $dlist]
+                }
+                # make sure the parent is open so we can see this node
+                set parent [lindex $_droppos 0]
+                if {![$_tree get $parent open]} {
+                    $_tree set $parent open 1
+                }
+
+                $_dispatcher event -idle !redraw
+                return 1
+            }
+        }
+        return 0
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -icon
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Hierlist::icon {
+    set imh0 [lindex $itk_option(-icon) 0]
+    set imh1 [lindex $itk_option(-icon) 1]
+    if {$imh1 == ""} { set imh1 $imh0 }
+
+    set imh0 [Rappture::icon $imh0]
+    if {$imh0 == ""} {
+        $_imh(open) configure -width 1 -height 1
+        $_imh(open) blank
+    } else {
+        $_imh(open) configure -width [image width $imh0] -height [image height $imh0]
+        $_imh(open) copy $imh0
+    }
+
+    set imh1 [Rappture::icon $imh1]
+    if {$imh1 == ""} {
+        $_imh(close) configure -width 1 -height 1
+        $_imh(close) blank
+    } else {
+        $_imh(close) configure -width [image width $imh1] -height [image height $imh1]
+        $_imh(close) copy $imh1
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -selectbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Hierlist::selectbackground {
+    $itk_component(area) itemconfigure select \
+        -background $itk_option(-selectbackground)
+}
Index: /tags/1.6.0/builder/scripts/images/drag.xbm
===================================================================
--- /tags/1.6.0/builder/scripts/images/drag.xbm	(revision 6168)
+++ /tags/1.6.0/builder/scripts/images/drag.xbm	(revision 6168)
@@ -0,0 +1,11 @@
+#define drag_width 24
+#define drag_height 24
+#define drag_x_hot 9
+#define drag_y_hot 2
+static unsigned char drag_bits[] = {
+   0xe0, 0xff, 0x07, 0x20, 0x00, 0x04, 0x20, 0x06, 0x04, 0x20, 0x09, 0x04,
+   0x20, 0x09, 0x04, 0xe0, 0xf9, 0x07, 0x00, 0x09, 0x00, 0x00, 0x39, 0x00,
+   0x00, 0xc9, 0x01, 0x00, 0x49, 0x06, 0x00, 0x49, 0x0a, 0x78, 0x49, 0x12,
+   0x88, 0x01, 0x12, 0x08, 0x01, 0x10, 0x10, 0x01, 0x10, 0x20, 0x01, 0x10,
+   0x20, 0x00, 0x10, 0x20, 0x00, 0x10, 0x40, 0x00, 0x08, 0x40, 0x00, 0x08,
+   0x80, 0x00, 0x08, 0x80, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0xff, 0x07};
Index: /tags/1.6.0/builder/scripts/images/dragm.xbm
===================================================================
--- /tags/1.6.0/builder/scripts/images/dragm.xbm	(revision 6168)
+++ /tags/1.6.0/builder/scripts/images/dragm.xbm	(revision 6168)
@@ -0,0 +1,9 @@
+#define dragm_width 24
+#define dragm_height 24
+static unsigned char dragm_bits[] = {
+   0xe0, 0xff, 0x07, 0xe0, 0xff, 0x07, 0xe0, 0xff, 0x07, 0xe0, 0xff, 0x07,
+   0xe0, 0xff, 0x07, 0xe0, 0xff, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x3f, 0x00,
+   0x00, 0xff, 0x01, 0x00, 0xff, 0x07, 0x00, 0xff, 0x0f, 0x78, 0xff, 0x1f,
+   0xf8, 0xff, 0x1f, 0xf8, 0xff, 0x1f, 0xf0, 0xff, 0x1f, 0xe0, 0xff, 0x1f,
+   0xe0, 0xff, 0x1f, 0xe0, 0xff, 0x1f, 0xc0, 0xff, 0x0f, 0xc0, 0xff, 0x0f,
+   0x80, 0xff, 0x0f, 0x80, 0xff, 0x07, 0x00, 0xff, 0x07, 0x00, 0xff, 0x07};
Index: /tags/1.6.0/builder/scripts/main.tcl
===================================================================
--- /tags/1.6.0/builder/scripts/main.tcl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/main.tcl	(revision 6168)
@@ -0,0 +1,1565 @@
+# ----------------------------------------------------------------------
+#  USER INTERFACE BUILDER
+#
+#  This program allows the user to create a tool.xml file, or reload
+#  and edit an existing tool.xml.  It also produces some skeleton
+#  code for the main program that queries inputs and saves outputs.
+#
+#  RUN AS FOLLOWS:
+#    wish main.tcl ?-tool <toolfile>?
+#
+#  If the <toolfile> is not specified, it defaults to "tool.xml" in
+#  the current working directory.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+# take the main window down for now, so we can avoid a flash on the screen
+wm withdraw .
+
+package require Itcl
+package require Rappture
+package require RapptureGUI
+package require Img
+
+option add *Tooltip.background white
+option add *Editor.background white
+option add *Gauge.textBackground white
+option add *TemperatureGauge.textBackground white
+option add *Switch.textBackground white
+option add *Progress.barColor #ffffcc
+option add *Balloon.titleBackground #6666cc
+option add *Balloon.titleForeground white
+option add *Balloon*Label.font -*-helvetica-medium-r-normal-*-12-*
+option add *Balloon*Radiobutton.font -*-helvetica-medium-r-normal-*-12-*
+option add *Balloon*Checkbutton.font -*-helvetica-medium-r-normal-*-12-*
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-18-*
+option add *Filmstrip.background #aaaaaa
+option add *Hierlist.selectBackground #9999ff
+option add *errorHighlightColor #9999ff
+option add *previewButtonBackground #4a758c
+option add *previewButtonActiveBackground #a3c3cc
+option add *previewButtonForeground white
+option add *previewButtonIcon arrow-up-white
+option add *build*cntls*background #cccccc
+option add *build*cntls*highlightBackground #cccccc
+option add *build*cntls*font {helvetica -12}
+option add *build*cntls*Button.borderWidth 1
+option add *build*cntls*Button.relief flat
+option add *build*cntls*Button.overRelief raised
+option add *build*cntls*Button.padX 2
+option add *build*cntls*Editor.background white
+option add *build*editelem*background #cccccc
+option add *build*editelem*font {helvetica -12}
+option add *build*editelem*title.font {helvetica -12 italic}
+option add *build*editelem*vopt.font {helvetica -12 italic}
+option add *options*Entry.background white
+option add *options*Listbox.background white
+option add *options*Text.background white
+option add *options*Text.font {Helvetica -12}
+option add *options*Button.font {Helvetica -10}
+option add *options*Button.padX 2
+option add *options*Button.padY 2
+option add *options.errs*Background black
+option add *options.errs*highlightBackground black
+option add *options.errs*Foreground white
+option add *options.errs*Button.relief flat
+option add *options.errs*Button.padX 1
+option add *options.errs*Button.padY 1
+option add *saveas*toolv*Label.font {Helvetica -12}
+option add *saveas*toolv*Button.font {Helvetica -12}
+option add *saveas*toolv*Button.borderWidth 1
+option add *saveas*toolv*Button.padX 2
+option add *saveas*toolv*Button.padY 2
+option add *saveas*progv*Label.font {Helvetica -12}
+option add *saveas*progv*Button.font {Helvetica -12}
+option add *saveas*progv*Button.borderWidth 1
+option add *saveas*progv*Button.padX 2
+option add *saveas*progv*Button.padY 2
+
+switch $tcl_platform(platform) {
+    unix {
+        event add <<PopupMenu>> <ButtonPress-3>
+
+        # make Ctrl-V binding work:
+        # not strict Motif, and remove conflicting binding in Tk library
+        set tk_strictMotif 0
+        bind Text <Control-v> ""
+    }
+    windows {
+        event add <<PopupMenu>> <ButtonPress-3>
+    }
+    macintosh {
+        event add <<PopupMenu>> <Control-ButtonPress-1>
+    }
+}
+
+wm protocol . WM_DELETE_WINDOW main_exit
+wm title . "Rappture Builder"
+
+# install a better bug handler
+Rappture::bugreport::install
+# fix the "grab" command to support a stack of grab windows
+Rappture::grab::init
+
+#
+# Process command line args to get the names of files to load...
+#
+Rappture::getopts argv params {
+    value -tool ""
+}
+
+# load type and object definitions
+set dir [file dirname [info script]]
+set auto_path [linsert $auto_path 0 $dir]
+
+Rappture::icon foo  ;# force loading of this module
+lappend Rappture::icon::iconpath [file join $dir images]
+
+# automatically load all Rappture object types
+if {[catch {Rappture::objects::init} err]} {
+    puts stderr "Error loading object definitions:\n$err"
+    exit 1
+}
+if {[catch {Rappture::objects::load [file join $dir tool.rp]} err]} {
+    puts stderr "Error loading tool object definition:\n$err"
+    exit 1
+}
+
+# load all languages recognized by the builder
+RapptureBuilder::templates::init
+
+# ----------------------------------------------------------------------
+#  HACK ALERT!  Make it so the Analyzer can't possibly enable its
+#    simulate button in "preview" mode, or else the user might
+#    actually launch a simulation.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_simState {state args} {
+    if {"" != $itk_option(-simcontrolbackground)} {
+        set simcbg $itk_option(-simcontrolbackground)
+    } else {
+        set simcbg $itk_option(-background)
+    }
+    $itk_interior.simol configure \
+        -background $itk_option(-simcontroloutline)
+    configure -simcontrolcolor $simcbg
+
+    $itk_component(simulate) configure -state disabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_palette_source <type>
+#
+# Returns drag-n-drop data for the object <type>.  This data can be
+# dragged between the filmstrip object palettes and the hierlist of
+# nodes for the current tool.
+# ----------------------------------------------------------------------
+set ValueId 0
+proc main_palette_source {type} {
+    global ValueId
+    if {[catch {Rappture::objects::get $type -attributes} attrs]} {
+        return ""
+    }
+    set term [Rappture::objects::get $type -terminal]
+    set vname "value[incr ValueId]"
+    set type [string totitle $type]
+    return [list node: id $vname type $type terminal $term \
+        attributes [list label $type]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_open ?-new|-file|filename?
+#
+# Handles the Open... operation, which opens a tool.xml file and
+# loads the contents.  If there are any pending changes, the user
+# is prompted to save the changes before continuing with the open.
+# ----------------------------------------------------------------------
+proc main_open {{what "-new"}} {
+    global ToolXml LastToolXmlFile LastToolXmlLoaded ValueId
+
+    if {![main_options_save -clear]} {
+        return
+    }
+    set win [.func.build.options.panes pane 0]
+    $win.scrl.skel select none
+
+    main_generate_xml
+
+    if {[string length $LastToolXmlLoaded] > 0 && [$ToolXml xml] ne $LastToolXmlLoaded} {
+        set choice [tk_messageBox -icon warning -type yesno -title "Rappture: Save Changes?" -message "Changes to the current tool haven't been saved.\n\nSave changes?"]
+        if {$choice == "yes" && ![main_saveas]} {
+            return
+        }
+    }
+
+    if {$what == "-new"} {
+        set xmlobj [Rappture::LibraryObj ::#auto "<?xml version=\"1.0\"?><run><tool/></run>"]
+    } else {
+        if {$what == "-file"} {
+            set fname [tk_getOpenFile -title "Rappture: Open Tool" -initialfile "tool.xml" -defaultextension .xml -filetypes { {{XML files} .xml} {{All files} *} }]
+        } else {
+            set fname $what
+        }
+
+        if {"" == $fname} {
+            return
+        }
+
+        # save the current file name in the "Save As..." dialog for later
+        set LastToolXmlFile $fname
+        .saveas.opts.toolv.file configure -text $fname
+        main_saveas update
+
+        if {[catch {Rappture::library $fname} xmlobj]} {
+            tk_messageBox -icon error -title "Rappture: Error" -message "Error loading tool description: $xmlobj"
+            return
+        }
+    }
+
+    # plug in the new tool definition
+    set LastToolXmlLoaded [$xmlobj xml]
+    set ValueId 0
+
+    # clear the tree and load the new data
+    set win [.func.build.options.panes pane 0]
+    $win.scrl.skel tree delete all
+    pack forget .func.build.options.errs
+
+    set alist [main_open_import_attrs $xmlobj tool]
+    $win.scrl.skel tree insert 0 end \
+        type "Tool" terminal yes dragdrop no attributes $alist
+
+    # all the Input section
+    set n [$win.scrl.skel tree insert 0 end \
+        type "Input" terminal no dragdrop no]
+    main_open_children $win.scrl.skel $xmlobj $n
+
+    # all the Output section
+    set n [$win.scrl.skel tree insert 0 end \
+        type "Output" terminal no dragdrop no]
+    main_open_children $win.scrl.skel $xmlobj $n
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_open_children <hierlist> <xmlobj> <node>
+#
+# Called by main_open to insert children in the <xml> at the specified
+# <node> into the given <hierlist> widget.  The children must be
+# recognized object types.
+# ----------------------------------------------------------------------
+proc main_open_children {hierlist xmlobj node} {
+    global ValueId
+
+    set path [$hierlist tree path $node "%lc:type(%id)"]
+    regsub -all {\(%id\)} $path "" path
+
+    foreach elem [$xmlobj children $path] {
+        set type [$xmlobj element -as type $path.$elem]
+
+        # make sure that this is a recognized object type
+        if {[catch {Rappture::objects::get $type -image} result] == 0
+              && [string length $result] > 0} {
+
+            # get info about this object
+            set id [$xmlobj element -as id $path.$elem]
+            set term [Rappture::objects::get $type -terminal]
+            set alist [main_open_import_attrs $xmlobj $path.$elem]
+
+            # add it into the tree
+            set newnode [$hierlist tree insert $node end \
+                type [string totitle $type] id $id terminal $term \
+                attributes $alist]
+
+            # find the highest auto-generated node and start from there
+            if {[regexp {^value([0-9]+)$} $id match num]} {
+                if {$num > $ValueId} {
+                    set ValueId $num
+                }
+            }
+
+            if {!$term} {
+                # if it can have children, then add any children
+                main_open_children $hierlist $xmlobj $newnode
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_open_import_attrs <xml> <path>
+#
+# Called by main_open_children to import attributes from the place
+# <path> in the <xml> object.
+# ----------------------------------------------------------------------
+proc main_open_import_attrs {xmlobj path} {
+    set alist ""
+    set type [$xmlobj element -as type $path]
+    set side [lindex [split $path .] 0]
+
+    if {[catch {Rappture::objects::get $type -attributes} attr] == 0} {
+        # scan through and ingest all known attributes
+        foreach rec $attr {
+            set name [lindex $rec 0]
+            catch {unset info}
+            array set info [lrange $rec 1 end]
+
+            # see if this attribute is excluded based on the -only option
+            if {$info(-only) ne "" && [lsearch $info(-only) $side] < 0} {
+                continue  ;# skip it!
+            }
+
+            set atype [lindex [split $info(-type) :] 0]
+            set proc "Attr[string totitle $atype]::import"
+            if {[catch {$proc $xmlobj $path.$info(-path)} result]} {
+                puts "ERROR: $result"
+                puts "  skipping $name attribute of $path"
+            } else {
+                lappend alist $name $result
+            }
+        }
+    }
+    return $alist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_errors ?-strict?
+#
+# Checks the values of all objects in the tree to look for errors
+# before previewing and saving.  If any errors are found and the
+# -strict flag is set, the user is forced to look at them before
+# continuing on.  Otherwise, the user may choose to look at warnings
+# and errors before continuing.  Usually called before previewing
+# and saving the tool definition.  Returns 1 if there are errors that
+# should be viewed/fixed, and 0 otherwise.
+# ----------------------------------------------------------------------
+proc main_errors {args} {
+    global ErrList ErrListPos
+
+    set strict no
+    while {[llength $args] > 0} {
+        set flag [lindex $args 0]
+        set args [lrange $args 1 end]
+        if {$flag eq "-strict"} {
+            set strict yes
+        } else {
+            error "bad option \"$flag\": should be -strict"
+        }
+    }
+
+    set ErrList ""
+    set ErrListPos 0
+    set ErrFocusAttr ""
+    pack forget .func.build.options.errs
+
+    set counter 0
+    set win [.func.build.options.panes pane 0]
+    set hlist $win.scrl.skel
+    set nodelist [$hlist tree children 0]
+    while {[llength $nodelist] > 0} {
+        set node [lindex $nodelist 0]
+        set nodelist [lrange $nodelist 1 end]
+
+        # add children into the node traversal list
+        set cnodes [$hlist tree children $node]
+        if {[llength $cnodes] > 0} {
+            set nodelist [eval linsert [list $nodelist] 0 $cnodes]
+        }
+
+        set type [string tolower [$hlist tree get $node type]]
+
+        # make sure this object has a viewer
+        if {[catch {Rappture::objects::get $type -palettes} pals]} {
+            # must not have an object definition
+            continue
+        }
+        set debug [list -node $node -counter [incr counter]]
+
+        set path [$hlist tree path $node "%lc:type(%id)"]
+        regsub -all {\(%id\)} $path "" path
+        # convert input.foo to palette name "Inputs"
+        set side [lindex [split $path .] 0]
+        set pname "[string totitle $side]s"
+
+        if {$side ne "tool" && [lsearch $pals $pname] < 0} {
+            lappend ErrList [list error "This object doesn't yet have a visualizer that lets it be used as an $side to the program.  Support for this probably will be added in a future version of Rappture, but for now, it must be removed from the $side section." $debug]
+            continue
+        }
+
+        # query attributes for this type and check their values
+        if {[catch {Rappture::objects::get $type -attributes} attrdef]
+             || [catch {$hlist tree get $node attributes} attrlist]} {
+            # can't find any attributes for this node or node type
+            continue
+        }
+        array set ainfo $attrlist
+
+        foreach rec $attrdef {
+            set name [lindex $rec 0]
+            if {![info exists ainfo($name)]} {
+                set ainfo($name) ""
+            }
+        }
+
+        # perform all checks for this attribute type and append to ErrList
+        eval lappend ErrList [Rappture::objects::check $type \
+            $side [array get ainfo] $debug]
+    }
+
+    if {[llength $ErrList] > 0} {
+        # arrange errors in order of severity
+        set ErrList [lsort -decreasing -command main_errors_cmp $ErrList]
+
+        # count the errors and warnings
+        set nerrs 0
+        set nwarn 0
+        set nother 0
+        foreach rec $ErrList {
+            switch -- [lindex $rec 0] {
+                error   { incr nerrs }
+                warning { incr nwarn }
+                default { incr nother }
+            }
+        }
+
+        set phrases ""
+        if {$nerrs == 1} {
+            lappend phrases "1 error"
+        } elseif {$nerrs > 1} {
+            lappend phrases "$nerrs errors"
+        }
+        if {$nwarn == 1} {
+            lappend phrases "1 warning"
+        } elseif {$nwarn > 1} {
+            lappend phrases "$nwarn warnings"
+        }
+        if {$nother == 1} {
+            lappend phrases "1 other suggestion"
+        } elseif {$nother > 1} {
+            lappend phrases "$nother suggestions"
+        }
+        switch -- [llength $phrases] {
+            1 { set phrases [lindex $phrases 0] }
+            2 { set phrases [join $phrases " and "] }
+            3 { set phrases [join $phrases "%"]
+                regsub "%" $phrases ", " phrases
+                regsub "%" $phrases ", and " phrases
+            }
+        }
+
+        if {$nerrs+$nwarn+$nother == 1} {
+            set thereis "There is"
+            set problem "this problem"
+            set errors "this error"
+        } else {
+            set thereis "There are"
+            set problem "these problems"
+            if {$nwarn+$nother == 0} {
+                set errors "these errors"
+            } else {
+                set errors "at least the $nerrs error"
+                if {$nerrs > 1} {lappend errors "s"}
+            }
+        }
+
+        # if there are errors, we can't continue on
+        if {$nerrs > 0} {
+            if {$strict} {
+                tk_messageBox -icon error -type ok -title "Rappture: Problems with your tool definition" -message "$thereis $phrases for your current tool definition.  You must resolve $errors before you continue with the preview."
+                return 1
+            } else {
+                set resp [tk_messageBox -icon error -type yesno -title "Rappture: Problems with your tool definition" -message "$thereis $phrases for your current tool definition.  Examine and resolve $problem?"]
+                return $resp
+            }
+        }
+
+        # let the user decide whether to proceed
+        set choice [tk_messageBox -icon error -type yesno -title "Rappture: Problems with your tool definition" -message "$thereis $phrases for your current tool definition.  Examine and resolve $problem?"]
+        if {$choice == "yes"} {
+            return 1
+        } else {
+            return 0
+        }
+    }
+    return 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_errors_nav index|next|prev
+#
+# Navigates through the error messages generated by the last call
+# to main_errors, putting up the next message in the sequence.
+# ----------------------------------------------------------------------
+proc main_errors_nav {where} {
+    global ErrList ErrListPos ErrFocusAttr
+
+    if {![main_options_save]} {
+        return
+    }
+
+    if {$where == "next"} {
+        incr ErrListPos
+    } elseif {$where == "prev"} {
+        incr ErrListPos -1
+    } elseif {[string is integer -strict $where]} {
+        set ErrListPos $where
+    } else {
+        error "bad option \"$where\": should be next or prev"
+    }
+
+    if {$ErrListPos < 0} {
+        set ErrListPos [expr {[llength $ErrList]-1}]
+    } elseif {$ErrListPos >= [llength $ErrList]} {
+        set ErrListPos 0
+    }
+
+    set err [lindex $ErrList $ErrListPos]
+    set class [string totitle [lindex $err 0]]
+    set mesg [lindex $err 1]
+    array set debug [lindex $err 2]
+
+    .func.build.options.errs.info configure -text "$class: $mesg"
+
+    if {$class == "Error"} {
+        .func.build.options.errs.exclaim config -image [Rappture::icon err24]
+    } else {
+        .func.build.options.errs.exclaim config -image [Rappture::icon warn24]
+    }
+
+    set win [.func.build.options.panes pane 0]
+    if {[info exists debug(-attribute)]} {
+        set ErrFocusAttr $debug(-attribute)
+    } else {
+        set ErrFocusAttr ""
+    }
+    $win.scrl.skel select none -silent  ;# force a reload of options
+    $win.scrl.skel select $debug(-node) ;# so we can highlight ErrFocusAttr
+
+    # fix the navigation buttons for next/prev error
+    .func.build.options.errs.nav.prev configure \
+        -state [expr {($ErrListPos == 0) ? "disabled" : "normal"}]
+    .func.build.options.errs.nav.next configure \
+        -state [expr {($ErrListPos >= [llength $ErrList]-1) ? "disabled" : "normal"}]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_errors_cmp <err1> <err2>
+#
+# Used to compare two error records when sorting the main ErrList.
+# Each record should have the following form:
+#
+#   error "this describes the error" {-node n -counter c -attribute a}
+#
+# Errors appear at the top, followed by warnings and suggestions.
+# Each record has a counter value, which determines its position in
+# the tree.  Serious errors near the top of the tree are shown first.
+# ----------------------------------------------------------------------
+proc main_errors_cmp {err1 err2} {
+    array set severity {
+        suggestion 0
+        warning 1
+        error 2
+    }
+
+    set eclass1 [lindex $err1 0]
+    array set einfo1 [lindex $err1 2]
+
+    set eclass2 [lindex $err2 0]
+    array set einfo2 [lindex $err2 2]
+
+    if {$severity($eclass1) > $severity($eclass2)} {
+        return 1
+    } elseif {$severity($eclass1) < $severity($eclass2)} {
+        return -1
+    }
+    if {$einfo1(-counter) > $einfo2(-counter)} {
+        return -1  ;# higher counters are further down in tree
+    } elseif {$einfo1(-counter) < $einfo2(-counter)} {
+        return 1   ;# put lower counters near the top
+    }
+    return 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_generate_xml
+#
+# Builds an XML representation of the current contents of the tool
+# defintion tree.  Usually called just before previewing or saving
+# the tool to build a fresh XML representation with all changes.
+# Returns 1 if the XML was successfully generated, and 0 if something
+# went wrong.
+# ----------------------------------------------------------------------
+proc main_generate_xml {} {
+    global ToolXml
+
+    # save any outstanding changes from the current options panel
+    if {![main_options_save]} {
+        return 0
+    }
+
+    # create a fresh XML object
+    if {"" != $ToolXml} {
+        itcl::delete object $ToolXml
+    }
+    set ToolXml [Rappture::LibraryObj ::#auto "<?xml version=\"1.0\"?><run><tool/></run>"]
+
+    set win [.func.build.options.panes pane 0]
+    set hlist $win.scrl.skel
+    set nodelist [$hlist tree children 0]
+    while {[llength $nodelist] > 0} {
+        set node [lindex $nodelist 0]
+        set nodelist [lrange $nodelist 1 end]
+
+        # add children into the node traversal list
+        set cnodes [$hlist tree children $node]
+        if {[llength $cnodes] > 0} {
+            set nodelist [eval linsert [list $nodelist] 0 $cnodes]
+        }
+
+        set path [$hlist tree path $node "%lc:type(%id)"]
+        regsub -all {\(%id\)} $path "" path
+        set type [string tolower [$hlist tree get $node type]]
+        set side [lindex [split $path .] 0]
+
+        if {[catch {Rappture::objects::get $type -attributes} attrdef]
+             || [catch {$hlist tree get $node attributes} attrlist]} {
+            # can't find any attributes for this node or node type
+            continue
+        }
+        array set ainfo $attrlist
+
+        foreach rec $attrdef {
+            set name [lindex $rec 0]
+            if {![info exists ainfo($name)]} {
+                continue
+            }
+            array set info [lrange $rec 1 end]
+
+            # see if this attribute is excluded based on the -only option
+            if {$info(-only) ne "" && [lsearch $info(-only) $side] < 0} {
+                continue  ;# skip it!
+            }
+
+            set atype [lindex [split $info(-type) :] 0]
+            set proc "Attr[string totitle $atype]::export"
+            if {[catch {$proc $ToolXml $path.$info(-path) $ainfo($name)} result]} {
+                puts "ERROR: $result"
+                puts "  skipping $name attribute of $path"
+            }
+        }
+    }
+    return 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_saveas start|cancel|finish|update|gettoolfile|getprogfile
+#
+# Handles the Save As... operation, which saves the current tool
+# information into a tool.xml file.  Prompts the user to determine
+# the save file, and then saves the data--unless the user cancels.
+# ----------------------------------------------------------------------
+proc main_saveas {{option "start"}} {
+    global tcl_platform SaveAs ToolXml LastToolXmlFile LastToolXmlLoaded
+
+    switch -- $option {
+        start {
+            if {![main_options_save -clear]} {
+                return
+            }
+            set win [.func.build.options.panes pane 0]
+            $win.scrl.skel select none
+
+            # freshen up the ToolXml
+            if {![main_generate_xml]} {
+                # something went wrong while saving the xml
+                # pull up the build tab, so we can see the error
+                .func select [.func index -name "Build"]
+                return
+            }
+
+            if {[main_errors]} {
+                .func select [.func index -name "Build"]
+                pack .func.build.options.errs \
+                    -before .func.build.options.panes \
+                    -pady {10 0} -fill x
+                main_errors_nav 0
+                return
+            }
+
+            # get the language choice and update the skeleton program option
+            set lang ""
+            set cmd [$ToolXml get tool.command]
+            if {[string index $cmd 0] == "!"} {
+                set lang [string range $cmd 1 end]
+            } else {
+                # It's hard to reload a real command from a tool.xml file.
+                # Scan through all languages and treat @@FILENAME@@ as a
+                # wildcard.  See if any of the languages match.
+                foreach name [RapptureBuilder::templates::languages] {
+                    set pat [RapptureBuilder::templates::generate command \
+                        -language $name -macros {@@FILENAME@@ * @@FILEROOT@@ *}]
+
+                    if {[string match $pat $cmd]} {
+                        set lang $name
+                        break
+                    }
+                }
+            }
+            if {$lang ne ""} {
+                .saveas.opts.prog configure -text "Skeleton program ($lang)" -state normal
+                .saveas.opts.progv.getfile configure -state normal
+                set ext [RapptureBuilder::templates::generate extension -language $lang]
+                .saveas.opts.progv.file configure -text "main$ext"
+                set SaveAs(lang) $lang
+                set SaveAs(ext) $ext
+
+                # see if there's a makefile for this program
+                if {[catch {RapptureBuilder::templates::generate makefile -language $lang}]} {
+                    set SaveAs(make) 0
+                    .saveas.opts.make configure -state disabled
+                } else {
+                    .saveas.opts.make configure -state normal
+                }
+            } else {
+                .saveas.opts.prog configure -text "Skeleton program (select language under Tool section)" -state disabled
+                .saveas.opts.progv.file configure -text "select a file"
+                .saveas.opts.progv.getfile configure -state disabled
+                .saveas.opts.make configure -state disabled
+                set SaveAs(lang) ?
+                set SaveAs(ext) ?
+                set SaveAs(prog) 0
+                set SaveAs(make) 0
+            }
+            main_saveas update
+
+            # make the saveas dialog big enough and center it on the main win
+            set w 400
+            set ho [winfo reqheight .saveas.opts]
+            set hc [winfo reqheight .saveas.cntls]
+            set h [expr {$ho+$hc+40}]
+            set x0 [winfo rootx .]
+            set y0 [winfo rooty .]
+            set wmain [winfo width .]
+            set hmain [winfo height .]
+            set x0 [expr {$x0+($wmain-$w)/2}]
+            set y0 [expr {$y0+($hmain-$h)/2}]
+
+            wm geometry .saveas ${w}x${h}+${x0}+${y0}
+            wm deiconify .saveas
+            raise .saveas
+            grab set .saveas
+
+            # wait for the user to save/cancel and return 1/0
+            vwait SaveAs(status)
+            return [string equal $SaveAs(status) "ok"]
+        }
+
+        cancel {
+            grab release .saveas
+            wm withdraw .saveas
+            after idle [list set SaveAs(status) "cancelled"]
+        }
+
+        finish {
+            grab release .saveas
+            wm withdraw .saveas
+            set status "ok"
+
+            set tfile [.saveas.opts.toolv.file cget -text]
+            set pfile [.saveas.opts.progv.file cget -text]
+
+            if {$SaveAs(tool) && $tfile ne "select a file"} {
+                set tfile [file normalize $tfile]
+
+                if {$SaveAs(prog) && $pfile ne "select a file"} {
+                    # if we have a tool.xml file, put the program in same dir
+                    set tail [file tail $pfile]
+                    set pfile [file join [file dirname $tfile] $tail]
+                }
+            }
+
+            if {$SaveAs(tool) && $tfile ne "select a file"} {
+                # generate again now that we know the file name to get
+                # relative file paths for things like <note>'s
+                set LastToolXmlFile $tfile
+                main_generate_xml
+
+                # change any !Language for the command into a proper
+                # invocation command.  Grab the XML before we do this
+                # as the last official XML that's been saved.  We'll
+                # know later if things changed and we need to save again.
+                set xmlBeforeCmdSubst [$ToolXml xml]
+
+                set cmd [$ToolXml get tool.command]
+                if {[string index $cmd 0] eq "!"} {
+                    if {$pfile eq "select a file"} {
+                        set pfile "main$SaveAs(ext)"
+                    }
+                    set tail [file tail $pfile]
+                    set cmd [RapptureBuilder::templates::generate command \
+                        -language $SaveAs(lang) \
+                        -macros [list @@FILENAME@@ $tail \
+                                      @@FILEROOT@@ [file rootname $tail]]]
+                    $ToolXml put tool.command $cmd
+                }
+
+                set cmds {
+                    set fid [open $tfile w]
+                    puts $fid "<?xml version=\"1.0\"?>"
+                    puts -nonewline $fid [$ToolXml xml]
+                    close $fid
+                }
+                if {[catch $cmds result]} {
+                    tk_messageBox -icon error -title "Rappture: Error" -message "Error saving tool description: $result"
+                    set status "error"
+                } else {
+                    set LastToolXmlLoaded $xmlBeforeCmdSubst
+                }
+            }
+
+            if {$SaveAs(prog) && $pfile ne "select a file"} {
+                if {[file exists $pfile]} {
+                    set choice [tk_messageBox -icon warning -type yesno -title "Rappture: Confirm" -message "File \"$pfile\" already exists.\n\nOverwrite?"]
+                    if {$choice == "no"} {
+                        # pop the dialog back up
+                        wm deiconify .saveas
+                        raise .saveas
+                        grab set .saveas
+                        return
+                    }
+                }
+                set code [RapptureBuilder::templates::generate main \
+                    -language $SaveAs(lang) -xmlobj $ToolXml]
+
+                set cmds {
+                    set fid [open $pfile w]
+                    puts -nonewline $fid $code
+                    close $fid
+                }
+                if {[catch $cmds result]} {
+                    tk_messageBox -icon error -title "Rappture: Error" -message "Error saving skeleton program file: $result"
+                    set status "error"
+                }
+            }
+
+            if {$SaveAs(make)} {
+                if {$pfile eq "select a file"} {
+                    set pfile "main$SaveAs(ext)"
+                }
+                set fname [file tail $pfile]
+                set mfile [file join [file dirname $pfile] Makefile]
+                if {[file exists $mfile]} {
+                    set choice [tk_messageBox -icon warning -type yesno -title "Rappture: Confirm" -message "File \"$mfile\" already exists.\n\nOverwrite?"]
+                    if {$choice == "no"} {
+                        # pop the dialog back up
+                        wm deiconify .saveas
+                        raise .saveas
+                        grab set .saveas
+                        return
+                    }
+                }
+
+                # /apps/rappture/current for 32-bit systems
+                if {$tcl_platform(wordSize) == 8 } {
+                     if { [file isdirectory /apps/share64/debian7/rappture/current]} {
+                        set dir /apps/share64/debian7/rappture/current
+                     } elseif { [file isdirectory /apps/share64/debian6/rappture/current]} {
+                        set dir /apps/share64/debian6/rappture/current
+                     } else {
+                        set dir /apps/rappture/current
+                     }
+                } else {
+                    set dir /apps/rappture/current
+                }
+                if {![file isdirectory $dir]} {
+                    # if all else fails, ask the current Rappture for its install dir
+                    set dir [file dirname [file dirname $::Rappture::installdir]]
+                }
+
+                set macros [list @@RAPPTUREDIR@@ $dir]
+                lappend macros @@FILENAME@@ $fname
+                lappend macros @@FILEROOT@@ [file rootname $fname]
+                if {[catch {RapptureBuilder::templates::generate makefile -language $SaveAs(lang) -macros $macros} code] == 0} {
+                    set cmds {
+                        set fid [open $mfile w]
+                        puts -nonewline $fid $code
+                        close $fid
+                    }
+                    if {[catch $cmds result]} {
+                        tk_messageBox -icon error -title "Rappture: Error" -message "Error saving Makefile: $result"
+                        set status "error"
+                    }
+                }
+            }
+
+            after idle [list set SaveAs(status) $status]
+        }
+
+        update {
+            set havefile 0
+            set missingfile 0
+            set tfile [.saveas.opts.toolv.file cget -text]
+            if {$SaveAs(tool)} {
+                if {$tfile ne "select a file"} {
+                    .saveas.opts.toolv.file configure -fg black
+                    set havefile 1
+                } else {
+                    set missingfile 1
+                }
+            } else {
+                .saveas.opts.toolv.file configure -fg gray60
+            }
+
+            set pfile [.saveas.opts.progv.file cget -text]
+            if {$SaveAs(prog)} {
+                if {$pfile ne "select a file"} {
+                    .saveas.opts.progv.file configure -fg black
+                    set havefile 1
+                } else {
+                    set missingfile 1
+                }
+            } else {
+                .saveas.opts.progv.file configure -fg gray60
+            }
+
+            if {$havefile && !$missingfile} {
+                .saveas.cntls.save configure -state normal
+            } else {
+                .saveas.cntls.save configure -state disabled
+            }
+        }
+
+        gettoolfile {
+            set fname [tk_getSaveFile -title "Rappture: Save Tool" -parent .saveas -initialfile "tool.xml" -defaultextension .xml -filetypes { {{XML files} .xml} {{All files} *} }]
+
+            if {"" != $fname} {
+                .saveas.opts.toolv.file configure -text $fname
+                set SaveAs(tool) 1
+                main_saveas update
+            }
+        }
+
+        getprogfile {
+            set flist ""
+            lappend flist [list "$SaveAs(lang) files" $SaveAs(ext)]
+            lappend flist [list "All files" *]
+
+            set pfile [.saveas.opts.progv.file cget -text]
+            if {$pfile eq "select a file"} {
+                set init ""
+                set ext ""
+            } else {
+                set init $pfile
+                set ext [file extension $pfile]
+            }
+
+            set fname [tk_getSaveFile -title "Rappture: Save Program Skeleton" -parent .saveas -initialfile $init -defaultextension $ext -filetypes $flist]
+
+            if {"" != $fname} {
+                .saveas.opts.progv.file configure -text $fname
+                set SaveAs(prog) 1
+                main_saveas update
+            }
+        }
+
+        default {
+            error "bad option \"$option\": should be start, cancel, finish, gettoolfile, getprogfile"
+        }
+    }
+
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_exit
+#
+# Handles the Save As... operation, which saves the current tool
+# information into a tool.xml file.  Prompts the user to determine
+# the save file, and then saves the data--unless the user cancels.
+# ----------------------------------------------------------------------
+proc main_exit {} {
+    global ToolXml LastToolXmlLoaded
+
+    if {![main_options_save -clear]} {
+        return
+    }
+    set win [.func.build.options.panes pane 0]
+    $win.scrl.skel select none
+
+    main_generate_xml
+
+    if {[$ToolXml xml] ne $LastToolXmlLoaded} {
+        set choice [tk_messageBox -icon warning -type yesnocancel -title "Rappture: Save Changes?" -message "Changes to the current tool haven't been saved.\n\nSave changes?"]
+        if {$choice == "yes" && ![main_saveas]} {
+            return
+        } elseif {$choice == "cancel"} {
+            return
+        }
+    }
+    exit
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_preview
+#
+# Handles the "Preview" tab.  Whenever a preview is needed, this
+# function clears the current contents of the preview window and
+# builds a new set of input controls based on the current XML.
+# ----------------------------------------------------------------------
+proc main_preview {} {
+    global ToolXml ToolPreview
+
+    # while we're checking for errors, put up a striped pattern over
+    # the preview area
+    set w [winfo width .func.preview]
+    set h [winfo height .func.preview]
+    place .func.preview.stripes -x 0 -y 0 -width $w -height $h
+    raise .func.preview.stripes
+
+    # freshen up the ToolXml
+    if {![main_generate_xml]} {
+        # something went wrong while saving the xml
+        # pull up the build tab, so we can see the error
+        .func select [.func index -name "Build"]
+        return
+    }
+
+    if {[main_errors -strict]} {
+        .func select [.func index -name "Build"]
+        pack .func.build.options.errs -before .func.build.options.panes \
+            -pady {10 0} -fill x
+        main_errors_nav 0
+        return
+    }
+
+    # clear all current widgets in the preview window
+    place forget .func.preview.stripes
+    set win .func.preview
+    $win.pager delete 0 end
+
+    if {"" != $ToolPreview} {
+        itcl::delete object $ToolPreview
+        set ToolPreview ""
+    }
+    set ToolPreview [Rappture::Tool ::#auto $ToolXml [pwd]]
+
+    # add new widgets based on the phases
+    set phases [$ToolXml children -type phase input]
+    if {[llength $phases] > 0} {
+        set plist ""
+        foreach name $phases {
+            lappend plist input.$name
+        }
+        set phases $plist
+    } else {
+        set phases input
+    }
+
+    if {[llength $phases] == 1} {
+        $win.pager configure -arrangement side-by-side
+    } else {
+        $win.pager configure -arrangement pages
+    }
+
+    foreach comp $phases {
+        if {"" == [$ToolXml element $comp]} {
+            # empty element? then skip it
+            continue
+        }
+        set title [$ToolXml get $comp.about.label]
+        if {$title == ""} {
+            set title "Input #auto"
+        }
+        $win.pager insert end -name $comp -title $title
+
+        #
+        # Build the page of input controls for this phase.
+        #
+        set f [$win.pager page $comp]
+        Rappture::Page $f.cntls $ToolPreview $comp
+        pack $f.cntls -expand yes -fill both
+    }
+
+    # add an analyzer for output widgets
+    set simtxt [$ToolXml get tool.action.label]
+    if {"" == $simtxt} {
+        set simtxt "Simulate"
+    }
+    $win.pager insert end -name analyzer -title $simtxt
+    set f [$win.pager page analyzer]
+    # note: simcontrol on but disabled due to _simState code above
+    Rappture::Analyzer $f.analyze $ToolPreview -simcontrol on \
+        -notebookpage about
+    pack $f.analyze -expand yes -fill both
+
+    # copy the ToolXml object and pass to analyzer to show outputs
+    set synthrun [Rappture::LibraryObj ::#auto "<?xml version=\"1.0\"?><run><tool/></run>"]
+    $synthrun copy "" from $ToolXml ""
+    $f.analyze load $synthrun
+    $f.analyze configure -notebookpage analyze
+
+    # turn off download options and clear button
+    $f.analyze component download configure -state disabled
+    $f.analyze component resultselector component clear configure -state disabled
+    # remove the "---" and "Download..." options from the view selector
+    $f.analyze component viewselector choices delete end
+    $f.analyze component viewselector choices delete end
+}
+
+# ----------------------------------------------------------------------
+# MAIN WINDOW
+# ----------------------------------------------------------------------
+wm geometry . 800x600
+Rappture::Postern .postern
+pack .postern -side bottom -fill x
+
+blt::tabset .func -borderwidth 0 -relief flat -side top -tearoff 0 \
+    -highlightthickness 0
+pack .func -expand yes -fill both
+
+# ----------------------------------------------------------------------
+# BUILD AREA
+# ----------------------------------------------------------------------
+frame .func.build
+.func insert end "Build" -window .func.build -fill both
+
+frame .func.build.cntls
+pack .func.build.cntls -fill x
+button .func.build.cntls.new -text "New..." -command {main_open -new}
+pack .func.build.cntls.new -side left -padx 2 -pady 4
+button .func.build.cntls.open -text "Open..." -command {main_open -file}
+pack .func.build.cntls.open -side left -padx 2 -pady 4
+button .func.build.cntls.save -text "Save As..." -command main_saveas
+pack .func.build.cntls.save -side left -padx 2 -pady 4
+
+frame .func.build.side
+pack .func.build.side -side left -fill y -pady 10
+label .func.build.side.l -text "Object Types:"
+pack .func.build.side.l -side top -anchor w
+
+Rappture::Slideframes .func.build.side.palettes -animstartcommand {
+    # turn scrollbars off during animation
+    for {set i 0} {$i < [.func.build.side.palettes size]} {incr i} {
+        set win [.func.build.side.palettes page @$i]
+        $win.scrl configure -yscrollmode off
+    }
+} -animendcommand {
+    # turn scrollbars back on when animation is over
+    for {set i 0} {$i < [.func.build.side.palettes size]} {incr i} {
+        set win [.func.build.side.palettes page @$i]
+        $win.scrl configure -yscrollmode auto
+    }
+}
+pack .func.build.side.palettes -expand yes -fill both
+
+set plist [Rappture::objects::palettes]
+set plist [linsert $plist 0 "All"]
+
+set pnum 0
+foreach ptitle $plist {
+    set win [.func.build.side.palettes insert end $ptitle]
+
+    Rappture::Scroller $win.scrl -xscrollmode off -yscrollmode auto
+    pack $win.scrl -expand yes -fill both
+    set iwin [$win.scrl contents frame]
+    Rappture::Filmstrip $iwin.strip -orient vertical \
+        -dragdropcommand main_palette_source
+    pack $iwin.strip -expand yes -fill both
+
+    foreach name [lsort [Rappture::objects::get]] {
+        set imh [Rappture::objects::get $name -image]
+        if {"" == $imh} {
+            continue
+        }
+        set plist [Rappture::objects::get $name -palettes]
+        if {$ptitle == "All" || [lsearch $plist $ptitle] >= 0} {
+            $iwin.strip add $name -image $imh
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+#  OPTIONS AREA
+# ----------------------------------------------------------------------
+frame .func.build.options
+pack .func.build.options -expand yes -fill both -padx 10
+
+frame .func.build.options.errs
+frame .func.build.options.errs.nav
+pack .func.build.options.errs.nav -side bottom -fill x -padx 2 -pady 2
+button .func.build.options.errs.nav.next -text "Next >" -command {main_errors_nav next}
+pack .func.build.options.errs.nav.next -side right
+button .func.build.options.errs.nav.prev -text "< Prev" -command {main_errors_nav prev}
+pack .func.build.options.errs.nav.prev -side right -padx 4
+
+button .func.build.options.errs.x -bitmap [Rappture::icon dismiss] \
+    -command {pack forget .func.build.options.errs}
+pack .func.build.options.errs.x -side right -anchor n -padx 4 -pady 8
+label .func.build.options.errs.exclaim -image [Rappture::icon err24]
+pack .func.build.options.errs.exclaim -side left -anchor nw -padx 4 -pady 4
+label .func.build.options.errs.info -text "" -anchor nw -justify left
+pack .func.build.options.errs.info -side left -expand yes -fill both -pady {6 0}
+bind .func.build.options.errs.info <Configure> {.func.build.options.errs.info configure -wraplength [expr {%w-4}]}
+
+Rappture::Panes .func.build.options.panes -orientation vertical
+pack .func.build.options.panes -expand yes -fill both -padx 10
+.func.build.options.panes insert end -fraction 0.5
+
+set win [.func.build.options.panes pane 0]
+label $win.heading -text "Tool Interface:"
+pack $win.heading -anchor w -pady {12 0}
+Rappture::Scroller $win.scrl -xscrollmode auto -yscrollmode auto
+pack $win.scrl -expand yes -fill both
+
+Rappture::Hierlist $win.scrl.skel
+$win.scrl contents $win.scrl.skel
+
+bind $win.scrl.skel <<Selection>> main_options_load
+bind $win.scrl.skel <<SelectionPath>> main_options_rename
+
+set win [.func.build.options.panes pane 1]
+Rappture::Scroller $win.vals -xscrollmode none -yscrollmode auto
+pack $win.vals -expand yes -fill both
+
+# ----------------------------------------------------------------------
+# USAGE: main_options_load
+#
+# Invoked whenever the selection changes in the tree of all known
+# objects.  Gets the current selection and pops up controls to edit
+# the attributes.
+# ----------------------------------------------------------------------
+set OptionsPanelNode ""
+
+proc main_options_load {} {
+    global OptionsPanelNode OptionsPanelObjs ErrFocusAttr
+
+    set win [.func.build.options.panes pane 0]
+    set hlist $win.scrl.skel
+
+    if {![main_options_save -clear]} {
+        # something is wrong with the previous edits
+        # show the last node as the current selection and fix the error
+        if {"" != $OptionsPanelNode} {
+            $hlist select $OptionsPanelNode -silent
+        }
+        return
+    }
+
+    # figure out the current selection
+    set node [$hlist curselection]
+    set type [$hlist curselection -field type]
+    set path [$hlist curselection -path "%lc:type(%id)"]
+    regsub -all {\(%id\)} $path "" path
+    set side [lindex [split $path .] 0]
+
+    # set the value column to expand
+    set win [.func.build.options.panes pane 1]
+    set frame [$win.vals contents frame]
+    grid columnconfigure $frame 1 -weight 1
+
+    # create new widgets for each object attribute
+    if {"" != $type && [lsearch {Inputs Outputs} $type] < 0
+          && [catch {Rappture::objects::get $type -attributes} attr] == 0} {
+
+        frame $frame.cntls -borderwidth 4 -relief flat
+        grid $frame.cntls -row 0 -column 0 -columnspan 2 -sticky nsew
+
+        if {$type ne "Tool"} {
+            # can't let people delete the tool info
+            button $frame.cntls.del -text "Delete" -command main_options_delete
+            pack $frame.cntls.del -side right
+        }
+
+        button $frame.cntls.help -text "Help" -command main_options_help
+        pack $frame.cntls.help -side right
+
+        # put this in last so it gets squeezed out
+        Rappture::ObjPath $frame.cntls.path -label "Object" -pathtext $path \
+            -renamecommand main_options_rename
+        pack $frame.cntls.path -side left -expand yes -fill both
+
+        if {$type eq "Tool"} {
+            # if this is a tool, then lose the rename button
+            pack forget [$frame.cntls.path component button]
+        }
+
+        array set ainfo [$hlist curselection -field attributes]
+
+        set wnum 1
+        foreach rec $attr {
+            catch {unset info}
+            set name [lindex $rec 0]
+            array set info [lrange $rec 1 end]
+
+            # see if this attribute is excluded based on the -only option
+            if {$info(-only) ne "" && [lsearch $info(-only) $side] < 0} {
+                continue  ;# skip it!
+            }
+
+            # create the widget to edit this attribute
+            set atype [split $info(-type) :]
+            set atname [lindex $atype 0]
+            set atname "Attr[string totitle $atname]"
+            set atargs ""
+            foreach term [split [lindex $atype 1] ,] {
+                set key [lindex [split $term =] 0]
+                set val [lindex [split $term =] 1]
+                if {$key == "validate"} {
+                    set val "validate_$val"
+                }
+                lappend atargs -$key $val
+            }
+
+            # add any tooltip info for this attribute
+            if {[info exists info(-tooltip)] && $info(-tooltip) ne ""} {
+                lappend atargs -tooltip $info(-tooltip)
+            }
+
+            set win [frame $frame.val$wnum]
+            if {[catch {eval $atname ::#auto $win $atargs} obj]} {
+                puts stderr "attribute editor failed: $obj"
+                destroy $win
+                continue
+            }
+            if {[info exists ainfo($name)]} {
+                $obj load $ainfo($name)
+            }
+            set OptionsPanelObjs($name) $obj
+
+            # no title? then use the attribute name as a title
+            if {[string length $info(-title)] == 0} {
+                set info(-title) [string totitle $name]
+            }
+            label $frame.l$wnum -text "$info(-title):"
+            grid $frame.l$wnum -row $wnum -column 0 -sticky e -padx 4 -pady 4
+            grid $win -row $wnum -column 1 -sticky nsew -pady 4
+            grid rowconfigure $frame $wnum -weight [expr {$info(-expand)? 1:0}]
+
+            # if an error was found at this attribute, set focus there
+            if {$name eq $ErrFocusAttr} {
+                $obj edit
+                set errbg [option get $frame errorHighlightColor Background]
+                $frame.l$wnum configure -background $errbg
+                set ErrFocusAttr ""
+            }
+
+            incr wnum
+        }
+    }
+
+    # save this so we know later what node we're editing
+    set OptionsPanelNode $node
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_options_rename ?<name>?
+#
+# Used to change the id of the current selection to the given <name>.
+# ----------------------------------------------------------------------
+proc main_options_rename {args} {
+    set win [.func.build.options.panes pane 0]
+    set hlist $win.scrl.skel
+    set node [$hlist curselection]
+
+    if {[llength $args] > 0} {
+        $hlist tree set $node id [lindex $args 0]
+    }
+
+    # get the updated path for this element and show in ObjPath widget
+    set path [$hlist curselection -path "%lc:type(%id)"]
+    regsub -all {\(%id\)} $path "" path
+
+    set win [.func.build.options.panes pane 1]
+    set frame [$win.vals contents frame]
+    $frame.cntls.path configure -pathtext $path
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_options_save ?-clear?
+#
+# Scans through all attribute widgets on the panel showing the current
+# object and tells each one to save its value.  Returns 1 if successful,
+# or 0 if errors are encountered.  Any errors are indicated by a popup
+# cue under the widget with the bad value.
+# ----------------------------------------------------------------------
+proc main_options_save {{op -keep}} {
+    global OptionsPanelNode OptionsPanelObjs
+    set win [.func.build.options.panes pane 0]
+
+    if {$OptionsPanelNode != "" && [catch {$win.scrl.skel tree get $OptionsPanelNode attributes} attrlist] == 0} {
+        array set ainfo $attrlist
+
+        # transfer values from the panel to the ainfo array
+        foreach name [array names OptionsPanelObjs] {
+            set obj $OptionsPanelObjs($name)
+            if {![$obj save ainfo($name)]} {
+                return 0
+            }
+        }
+
+        # save current settings back in the tree
+        $win.scrl.skel tree set $OptionsPanelNode attributes [array get ainfo]
+    }
+
+    if {$op == "-clear"} {
+        foreach name [array names OptionsPanelObjs] {
+            itcl::delete object $OptionsPanelObjs($name)
+        }
+        catch {unset OptionsPanelObjs}
+
+        set bwin [.func.build.options.panes pane 1]
+        set frame [$bwin.vals contents frame]
+        foreach w [winfo children $frame] {
+            destroy $w
+        }
+    }
+    return 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_options_help
+#
+# Handles the "Help" button for an object.  Pops up a help page
+# explaining the object.
+# ----------------------------------------------------------------------
+proc main_options_help {} {
+    # delete the node from the tree
+    set win [.func.build.options.panes pane 0]
+    set hlist $win.scrl.skel
+    set node [$hlist curselection]
+    set type [$hlist curselection -field type]
+    if {"" != $node} {
+        # look for a -help option for this node type
+        set url [Rappture::objects::get $type -help]
+        if {"" != $url} {
+            Rappture::filexfer::webpage $url
+
+            set win [.func.build.options.panes pane 1]
+            set frame [$win.vals contents frame]
+            Rappture::Tooltip::cue $frame.cntls.help "Popping up a web page with additional help information.  Making sure your web browser is not blocking pop-ups."
+            after 2000 [list catch {Rappture::Tooltip::cue hide}]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: main_options_delete
+#
+# Handles the "Delete" button for an object.  Deletes the object and
+# all of its children from the tree.
+# ----------------------------------------------------------------------
+proc main_options_delete {} {
+    global OptionsPanelNode OptionsPanelObjs
+
+    # delete the node from the tree
+    set win [.func.build.options.panes pane 0]
+    set hlist $win.scrl.skel
+    set node [$hlist curselection]
+    if {"" != $node} {
+        # clear the current panel without saving
+        foreach name [array names OptionsPanelObjs] {
+            itcl::delete object $OptionsPanelObjs($name)
+        }
+        catch {unset OptionsPanelObjs}
+
+        set win [.func.build.options.panes pane 1]
+        set frame [$win.vals contents frame]
+        foreach win [winfo children $frame] {
+            destroy $win
+        }
+
+        # now delete the node itself
+        $hlist tree delete $node
+    }
+}
+
+# ----------------------------------------------------------------------
+#  PREVIEW PANEL
+# ----------------------------------------------------------------------
+frame .func.preview
+.func insert end "Preview" -window .func.preview -fill both
+Rappture::Pager .func.preview.pager
+pack .func.preview.pager -expand yes -fill both
+
+bind .func.preview.pager <Map> main_preview
+
+# use this frame to cover preview before it appears
+blt::tile::frame .func.preview.stripes -tile [Rappture::icon diag]
+
+# ----------------------------------------------------------------------
+#  SAVE AS DIALOG
+# ----------------------------------------------------------------------
+toplevel .saveas
+pack propagate .saveas off
+wm title .saveas "Rappture: Save As..."
+wm withdraw .saveas
+wm protocol .saveas WM_DELETE_WINDOW {.saveas.cntls.cancel invoke}
+
+frame .saveas.cntls
+pack .saveas.cntls -side bottom -fill x -padx 4 -pady 4
+button .saveas.cntls.cancel -text "Cancel" -underline 0 \
+    -command {main_saveas cancel}
+pack .saveas.cntls.cancel -side right -padx 4 -pady 4
+button .saveas.cntls.save -text "Save" -underline 0 -default active \
+    -command {main_saveas finish} -state disabled
+pack .saveas.cntls.save -side right -padx 4 -pady 4
+
+frame .saveas.opts
+pack .saveas.opts -expand yes -fill both -padx 10 -pady 10
+label .saveas.opts.l -text "What do you want to save?"
+pack .saveas.opts.l -side top -anchor w
+
+checkbutton .saveas.opts.tool -text "Tool definition file" -variable SaveAs(tool) -command {main_saveas update}
+pack .saveas.opts.tool -side top -anchor w -pady {10 0}
+frame .saveas.opts.toolv
+pack .saveas.opts.toolv -anchor w
+label .saveas.opts.toolv.filel -text "File:" -width 7 -anchor e
+pack .saveas.opts.toolv.filel -side left
+button .saveas.opts.toolv.getfile -text "Choose..." -command {main_saveas gettoolfile}
+pack .saveas.opts.toolv.getfile -side right
+label .saveas.opts.toolv.file -text "select a file" -anchor e -fg gray60
+pack .saveas.opts.toolv.file -side left -expand yes -fill x
+.saveas.opts.tool select
+
+checkbutton .saveas.opts.prog -text "Skeleton program" -variable SaveAs(prog) -command {main_saveas update}
+pack .saveas.opts.prog -side top -anchor w -pady {10 0}
+frame .saveas.opts.progv
+pack .saveas.opts.progv -anchor w
+label .saveas.opts.progv.filel -text "File:" -width 7 -anchor e
+pack .saveas.opts.progv.filel -side left
+button .saveas.opts.progv.getfile -text "Choose..." -command {main_saveas getprogfile}
+pack .saveas.opts.progv.getfile -side right
+label .saveas.opts.progv.file -text "select a file" -anchor e -fg gray60
+pack .saveas.opts.progv.file -side left -expand yes -fill x
+
+checkbutton .saveas.opts.make -text "Makefile for building this program" -variable SaveAs(make) -command {main_saveas update}
+pack .saveas.opts.make -side top -anchor w -pady {10 0}
+
+# ----------------------------------------------------------------------
+#  Open the given XML file or create a new one
+# ----------------------------------------------------------------------
+set ToolXml ""
+set LastToolXmlLoaded ""
+set LastToolXmlFile ""
+set ToolPreview ""
+set ErrFocusAttr ""
+
+if {$params(-tool) ne ""} {
+    if {![file exists $params(-tool)]} {
+        puts stderr "can't find tool \"$params(-tool)\""
+        exit 1
+    }
+    main_open $params(-tool)
+} elseif {[file exists tool.xml]} {
+    main_open tool.xml
+} else {
+    main_open -new
+}
+
+wm deiconify .
Index: /tags/1.6.0/builder/scripts/objpath.tcl
===================================================================
--- /tags/1.6.0/builder/scripts/objpath.tcl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/objpath.tcl	(revision 6168)
@@ -0,0 +1,301 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: objpath - show object path and copy/rename
+#
+#  This widget is used within the header above the object options
+#  panel.  It shows the object name, but includes a button for things
+#  like "rename" to change the object ID, and "copy" to copy the
+#  path and paste into another widget.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *ObjPath.selectBackground cyan widgetDefault
+option add *ObjPath.pathFont {helvetica -12} widgetDefault
+
+itcl::class Rappture::ObjPath {
+    inherit itk::Widget
+
+    itk_option define -label label Label ""
+    itk_option define -pathtext pathText PathText ""
+    itk_option define -selectbackground selectBackground Foreground ""
+    itk_option define -renamecommand renameCommand RenameCommand ""
+
+    constructor {args} { # defined below }
+
+    protected method _redraw {args}
+    protected method _resize {args}
+    protected method _hilite {op}
+    protected method _copy {}
+    protected method _edit {option args}
+
+    private variable _dispatcher ""  ;# dispatcher for !events
+}
+
+itk::usual ObjPath {
+    keep -cursor -font -foreground -background
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ObjPath::constructor {args} {
+    # create a dispatcher for events
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !redraw
+    $_dispatcher dispatch $this !redraw [itcl::code $this _redraw]
+
+    itk_component add size {
+        frame $itk_interior.size -width 20
+    }
+    pack propagate $itk_component(size) no
+    pack $itk_component(size) -side left -expand yes -fill both
+
+    itk_component add path {
+        text $itk_component(size).path -width 1 -height 1 \
+            -borderwidth 0 -highlightthickness 0
+    } {
+        usual
+        rename -font -pathfont pathFont Font
+        ignore -highlightthickness -highlightbackground -highlightcolor
+    }
+    pack $itk_component(path) -expand yes -fill both
+
+    # bind to <Expose> instead of <Configure> so we get events even after
+    # we've reached the maximum width size, so we can scale down smaller
+    bind $itk_component(path) <Expose> [itcl::code $this _resize]
+    bindtags $itk_component(path) [list $itk_component(path) [winfo toplevel $itk_component(path)] all]
+
+    # binding so when you click on the path, it becomes highlighted
+    $itk_component(path) tag bind path <ButtonPress> [itcl::code $this _hilite toggle]
+
+    # add the button for Rename/Copy
+    itk_component add button {
+        button $itk_interior.btn -width 6 -text "Rename" \
+            -command [itcl::code $this _edit start]
+    } {
+        usual
+        ignore -font -borderwidth -relief
+    }
+    pack $itk_component(button) -side left
+
+    # create a pop-up editor to handle "rename" operations
+    itk_component add editor {
+        Rappture::Editor $itk_interior.editor \
+            -activatecommand [itcl::code $this _edit activate] \
+            -validatecommand [itcl::code $this _edit validate] \
+            -applycommand [itcl::code $this _edit apply]
+    }
+
+    bind $itk_component(editor) <Unmap> [itcl::code $this _edit revert]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw ?<eventArgs>...?
+#
+# Used internally to redraw all items on the path name display.  This
+# gets invoked after the widget is packed to wrap the path name
+# properly whenever the width changes.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ObjPath::_redraw {args} {
+    set fn $itk_option(-pathfont)
+    $itk_component(path) delete 1.0 end
+
+    set label $itk_option(-label)
+    if {"" != $label && ![string match *: $label]} {
+        append label ":"
+    }
+    $itk_component(path) insert end $label
+    $itk_component(path) insert end "  "
+    $itk_component(path) insert end $itk_option(-pathtext) path
+
+    _resize
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _resize ?<eventArgs>...?
+#
+# Used internally to update the height of the path part of this widget
+# whenever it changes size.  If the path gets squeezed, it wraps onto
+# multiple lines.  This routine figures out how many lines to display.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ObjPath::_resize {args} {
+    set fn $itk_option(-pathfont)
+
+    # figure out how much width is available for the path
+    set whull [winfo width $itk_component(hull)]
+    set wbtn [winfo width $itk_component(button)]
+    set wpath [expr {$whull-$wbtn-10}]
+
+    # if the path were on 1 line, how much width would we need?
+    # if it fits on 1 line, then pack it differently
+    set str [$itk_component(path) get 1.0 end]
+    set w [font measure $fn $str]
+    if {$w < $wpath} {
+        $itk_component(size) configure -width [expr {$w+4}]
+        pack $itk_component(size) -expand no -fill x
+    } else {
+        $itk_component(size) configure -width 1
+        pack $itk_component(size) -expand yes -fill both
+    }
+
+    # figure out how many lines we need for the height
+    set lspace [font metrics $fn -linespace]
+    set bbox [$itk_component(path) bbox end-1char]
+    if {"" != $bbox} {
+        # Find the position of the last char and figure out how tall to be.
+        foreach {x0 y0 w h} $bbox break
+        set ht [expr {round(ceil(($y0+$h-2)/double($lspace)))}]
+        $itk_component(path) configure -height $ht
+    } else {
+        # Dang! bbox won't work because the last char is off screen.
+        # Figure out the char in the bottom-right corner and then
+        # guess how many lines are off screen below that.
+        set w [expr {[winfo width $itk_component(path)]-4}]
+        set h [expr {[winfo height $itk_component(path)]-4}]
+        set index [$itk_component(path) index @$w,$h]
+        set cnum [lindex [split $index .] 1]
+        set end [lindex [split [$itk_component(path) index end-1char] .] 1]
+        set frac [expr {1 + double($end-$cnum)/$end}]
+
+        set ht [expr {$frac*[winfo height $itk_component(path)]}]
+        set ht [expr {round(ceil($ht/$lspace))}]
+        $itk_component(path) configure -height $ht
+    }
+    $itk_component(size) configure -height [expr {$ht*$lspace+4}]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _hilite set|clear
+#
+# Invoked whenever you click on the path name to highlight the path
+# and change to "copy" mode for the path.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ObjPath::_hilite {op} {
+    switch -- $op {
+        set {
+            $itk_component(path) tag configure path \
+                -background $itk_option(-selectbackground) \
+                -borderwidth 1 -relief raised
+            $itk_component(button) configure -text "Copy" \
+                -command [itcl::code $this _copy]
+        }
+        clear {
+            $itk_component(path) tag configure path \
+                -background "" -borderwidth 0
+            $itk_component(button) configure -text "Rename" \
+                -command [itcl::code $this _edit start]
+        }
+        toggle {
+            if {"" != [$itk_component(path) tag cget path -background]} {
+                _hilite clear
+            } else {
+                _hilite set
+            }
+        }
+        default {
+            error "bad option \"$op\": should be set, clear, toggle"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _copy
+#
+# Handles the operation of the "Copy" button.  Copies the current
+# path text to the clipboard so it can be pasted into other widgets.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ObjPath::_copy {} {
+    clipboard clear
+    clipboard append -type STRING -- $itk_option(-pathtext)
+    _hilite clear
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _edit activate
+# USAGE: _edit validate <value>
+# USAGE: _edit apply <value>
+# USAGE: _edit revert
+#
+# Used internally to handle the pop-up editor that edits part of
+# the title string for a node.  The "start" operation is called when
+# the user clicks on the "rename" button.  This brings up an editor
+# for the id anme, allowing the user to change the name.  The
+# "activate" operation is called by the editor to figure out where
+# it should pop up.  The "validate" operation is called to check the
+# new value and make sure that it is okay.  The "apply" operation
+# applies the new name to the node.  The "revert" operation puts
+# the original value back into the display when the user presses Esc.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ObjPath::_edit {option args} {
+    switch -- $option {
+        start {
+            if {[regexp -indices {[a-zA-Z]+\([a-zA-Z0-9_]+\)$} $itk_option(-pathtext) match]} {
+                foreach {s0 s1} $match break
+                $itk_component(path) delete 1.0 end
+                $itk_component(path) insert 1.0 [string range $itk_option(-pathtext) $s0 end]
+                $itk_component(editor) activate
+            }
+        }
+        activate {
+            if {[regexp -indices {([a-zA-Z]+)\(([a-zA-Z0-9_]+)\)$} $itk_option(-pathtext) match type id]} {
+                foreach {t0 t1} $type break
+                foreach {s0 s1} $id break
+                set str [string range $itk_option(-pathtext) $s0 $s1]
+
+                set s0 [expr {$s0-$t0}]  ;# set relative to start of tail string
+                set s1 [expr {$s1-$t0}]
+
+                # get bbox for first and last char in "(id)" part
+                foreach {x0 y0 w h} [$itk_component(path) bbox 1.$s0] break
+                foreach {x1 y0 w h} [$itk_component(path) bbox 1.$s1] break
+                set x1 [expr {$x1+$w}]
+                set y1 [expr {$y0+$h}]
+
+                # compute overall x0,y0 and width/height for this area
+                set w [expr {$x1-$x0}]
+                set h [expr {$y1-$y0}]
+                set x0 [expr {[winfo rootx $itk_component(path)]+$x0}]
+                set y0 [expr {[winfo rooty $itk_component(path)]+$y0}]
+
+                return [list text $str x $x0 y [expr {$y0-2}] w $w h $h]
+            }
+        }
+        validate {
+            set val [lindex $args 0]
+            if {![regexp {^[a-zA-Z0-9_]+$} $val]} {
+                bell
+                return 0
+            }
+            return 1
+        }
+        apply {
+            set val [lindex $args 0]
+            if {[string length $itk_option(-renamecommand)] > 0} {
+                uplevel #0 $itk_option(-renamecommand) [list $val]
+            }
+        }
+        revert {
+            _redraw
+        }
+        default {
+            error "bad option \"$option\": should be start, activate, validate, apply, revert"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -label, -pathtext
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::ObjPath::label {
+    $_dispatcher event -idle !redraw
+}
+itcl::configbody Rappture::ObjPath::pathtext {
+    $_dispatcher event -idle !redraw
+}
Index: /tags/1.6.0/builder/scripts/slideframes.tcl
===================================================================
--- /tags/1.6.0/builder/scripts/slideframes.tcl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/slideframes.tcl	(revision 6168)
@@ -0,0 +1,369 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: slideframes - collection of frames with headings
+#
+#  This widget is similar to a tabbed notebook, but instead of having
+#  tabs on the side, it has headings inline with the content.  Clicking
+#  on a heading brings up the frame beneath the heading.  Only one
+#  frame can be packed at a time.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Slideframes.width 0 widgetDefault
+option add *Slideframes.height 0 widgetDefault
+option add *Slideframes.headingBackground gray widgetDefault
+option add *Slideframes.headingForeground black widgetDefault
+option add *Slideframes.headingBorderWidth 2 widgetDefault
+option add *Slideframes.headingRelief raised widgetDefault
+
+itcl::class Rappture::Slideframes {
+    inherit itk::Widget
+
+    itk_option define -width width Width 0
+    itk_option define -height height Height 0
+    itk_option define -animstartcommand animStartCommand AnimStartCommand ""
+    itk_option define -animendcommand animEndCommand AnimEndCommand ""
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method insert {pos args}
+    public method delete {args}
+    public method index {name}
+    public method page {name}
+    public method current {args}
+    public method size {} { return [llength $_pages] }
+
+    private method _fixSize {}
+    private method _fixLayout {args}
+
+    private variable _count 0       ;# counter for unique names
+    private variable _pages ""      ;# list of page frames
+    private variable _name2num      ;# maps name => id num for heading/page
+    private variable _current ""    ;# page currently shown
+    private variable _tweener ""    ;# tweener object for animations
+}
+
+itk::usual Slideframes {
+    keep -cursor -font
+    keep -headingbackground -headingforeground
+    keep -headingborderwidth -headingrelief
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Slideframes::constructor {args} {
+    itk_option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    bind $itk_component(hull) <Configure> [itcl::code $this _fixLayout]
+
+    set _tweener [Rappture::Tweener #auto]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Slideframes::destructor {} {
+    itcl::delete object $_tweener
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <pos> ?<name> <name>...?
+#
+# Used to insert one or more pages in the list of sliding frames.
+# Each page is identified by its <name>.  Returns the widget name
+# for each page created.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Slideframes::insert {pos args} {
+    set rlist ""
+    foreach name $args {
+        if {[lsearch $_pages $name] >= 0} {
+            error "page \"$name\" already exists"
+        }
+        set id [incr _count]
+
+        set hname "heading$id"
+        itk_component add $hname {
+            button $itk_interior.$hname -text $name -highlightthickness 0 \
+                -anchor w -command [itcl::code $this current $name]
+        } {
+            usual
+            rename -background -headingbackground headingBackground Background
+            rename -foreground -headingforeground headingForeground Foreground
+            rename -borderwidth -headingborderwidth headingBorderWidth BorderWidth
+            rename -relief -headingrelief headingRelief Relief
+            ignore -highlightthickness
+        }
+
+        set pname "page$id"
+        itk_component add $pname {
+            frame $itk_interior.$pname
+        }
+        bind $itk_component($pname) <Configure> [itcl::code $this _fixSize]
+
+        if {[llength $_pages] == 0} {
+            # select first page by default
+            after idle [list catch [list $this current $name]]
+        }
+        set _pages [linsert $_pages $pos $name]
+        set _name2num($name) $id
+
+        lappend rlist $itk_component($pname)
+    }
+
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete -all
+# USAGE: delete ?<name> <name>...?
+#
+# Used to delete one or more pages from the notebook.  With the -all
+# flag, it deletes all pages.  Otherwise, it deletes each page
+# by name.  You can also delete a page by using an index of the
+# form "@n".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Slideframes::delete {args} {
+    if {$args == "-all"} {
+        set args $_pages
+    }
+    foreach name $args {
+        set i [index $name]
+        set pname [lindex $_pages $i]
+        if {$pname != ""} {
+            set _pages [lreplace $_pages $i $i]
+            set id $_name2num($pname)
+            destroy $itk_component(heading$id) $itk_component(page$id)
+            unset _name2num($pname)
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: index <name>|@n
+#
+# Used to convert a page <name> to its corresponding integer index.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Slideframes::index {name} {
+    set i [lsearch $_pages $name]
+    if {$i >= 0} {
+        return $i
+    }
+    if {[regexp {^@([0-9]+)$} $name match i]} {
+        return $i
+    }
+    error "bad page name \"$name\": should be @int or one of [join [lsort $_pages] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: page <name>|@n
+#
+# Used to convert a page <name> to its corresponding frame.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Slideframes::page {name} {
+    set i [index $name]
+    set name [lindex $_pages $i]
+    set id $_name2num($name)
+    return $itk_component(page$id)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: current ?<name>?
+#
+# Used to query/set the current page in the notebook.  With no args,
+# it returns the name of the current page.  Otherwise, it sets the
+# current page.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Slideframes::current {args} {
+    switch -- [llength $args] {
+        0 {
+            return $_current
+        }
+        1 {
+            set name [lindex $args 0]
+            set index [lsearch -exact $_pages $name]
+            if {$index < 0} {
+                error "can't find page \"$name\""
+            }
+
+            set prev $_current
+            set _current [lindex $_pages $index]
+
+            if {$prev != $_current} {
+                $_tweener configure -from 0 -to 1 -duration 50 -steps 10 \
+                    -command [itcl::code $this _fixLayout $_current $prev %v] \
+                    -finalize [itcl::code $this _fixLayout end]
+            } else {
+                _fixLayout
+            }
+        }
+        default {
+            error "wrong # args: should be \"current ?name?\""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+#
+# Used to handle the requested size for this widget.  If -width or
+# -height is 0, then the size is computed based on the requested
+# sizes of internal pages.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Slideframes::_fixSize {} {
+    if {"0" == $itk_option(-width)} {
+        set wd 0
+        foreach pname $_pages {
+            set id $_name2num($pname)
+            set w [winfo reqwidth $itk_component(page$id)]
+            if {$w > $wd} { set wd $w }
+        }
+        component hull configure -width $wd
+    } else {
+        component hull configure -width $itk_option(-width)
+    }
+
+    if {"0" == $itk_option(-height)} {
+        set headht 0
+        set pageht 0
+        foreach pname $_pages {
+            set id $_name2num($pname)
+            set h [winfo reqheight $itk_component(heading$id)]
+            set headht [expr {$headht + $h}]
+
+            set h [winfo reqheight $itk_component(page$id)]
+            if {$h > $pageht} { set pageht $h }
+        }
+        component hull configure -height [expr {$headht+$pageht}]
+    } else {
+        component hull configure -height $itk_option(-height)
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixLayout ?<toName>? ?<fromName>? ?<frac>?
+#
+# Updates the layout of pages within this widget.  With no args, it
+# updates the layout based on the current page.  This is good for
+# resize operations.  The extra args let us animate from the layout
+# with one ID to the layout with another according to a fraction
+# <frac> from 0 to 1.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Slideframes::_fixLayout {args} {
+    set atend 0
+    if {$args == "end"} {
+        set atend 1
+        set args ""
+    }
+
+    set toName $_current
+    set fromName ""
+    set frac 1
+    if {[llength $args] >= 1} { set toName [lindex $args 0] }
+    if {[llength $args] >= 2} { set fromName [lindex $args 1] }
+    if {[llength $args] >= 3} { set frac [lindex $args 2] }
+    if {[llength $args] > 3} {
+        error "wrong # args: should be \"_fixLayout ?id? ?previd? ?frac?\""
+    }
+
+    if {$frac == 0 && [string length $itk_option(-animstartcommand)] > 0} {
+        if {[catch [list uplevel #0 $itk_option(-animstartcommand)] err]} {
+            bgerror $err
+        }
+    }
+
+    set fromid ""
+    if {[info exists _name2num($fromName)]} {
+        set fromid $_name2num($fromName)
+    }
+
+    set toid ""
+    if {[info exists _name2num($toName)]} {
+        set toid $_name2num($toName)
+    }
+
+    set w [winfo width $itk_component(hull)]
+    set h [winfo height $itk_component(hull)]
+
+    # figure out the overall size of title buttons and space left over
+    set titlemax 0
+    foreach pname $_pages {
+        set id $_name2num($pname)
+        set titleh [winfo reqheight $itk_component(heading$id)]
+        set titlemax [expr {$titlemax + $titleh}]
+    }
+
+    set extra [expr {$h - $titlemax}]
+    if {$extra < 0} { set extra 0 }
+
+    if {$toid != ""} {
+        set pageht1 [winfo reqheight $itk_component(page$toid)]
+    } else {
+        set pageht1 0
+    }
+    if {$fromid != ""} {
+        set pageht2 [winfo reqheight $itk_component(page$fromid)]
+    } else {
+        set pageht2 0
+    }
+    set pageht [expr {$frac*$pageht1 + (1-$frac)*$pageht2}]
+    if {$pageht < $extra} {
+        set extra $pageht
+    }
+
+    # scan through all buttons and place them, along with the pages beneath
+    set ypos 0
+    foreach pname $_pages {
+        set id $_name2num($pname)
+        set titleh [winfo reqheight $itk_component(heading$id)]
+
+        # place the heading button
+        place $itk_component(heading$id) -x 0 -y $ypos -anchor nw \
+            -width $w -height $titleh
+        set ypos [expr {$ypos + $titleh}]
+
+        set pageht [winfo reqheight $itk_component(page$id)]
+        if {$id == $fromid || $id == $toid} {
+            if {$id == $toid} {
+                set ht [expr {round($extra * $frac)}]
+            } else {
+                set ht [expr {round($extra * (1-$frac))}]
+            }
+            if {$ht > $pageht} { set ht $pageht }
+            if {$ht > 0} {
+                place $itk_component(page$id) -x 0 -y $ypos -anchor nw \
+                    -width $w -height $ht
+                set ypos [expr {$ypos + $ht}]
+            } else {
+                place forget $itk_component(page$id)
+            }
+        } else {
+            place forget $itk_component(page$id)
+        }
+    }
+
+    if {$atend && [string length $itk_option(-animendcommand)] > 0} {
+        if {[catch [list uplevel #0 $itk_option(-animendcommand)] err]} {
+            bgerror $err
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -width, -height
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Slideframes::width {
+    _fixSize
+}
+itcl::configbody Rappture::Slideframes::height {
+    _fixSize
+}
Index: /tags/1.6.0/builder/scripts/templates.tcl
===================================================================
--- /tags/1.6.0/builder/scripts/templates.tcl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/templates.tcl	(revision 6168)
@@ -0,0 +1,436 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: templates
+#
+#  This file contains routines to parse language definition files in
+#  the "templates" directory.  This defines all of the programming
+#  languages that the Builder can build main programs for.  Each
+#  language is specified as follows:
+#
+#    language NAME {
+#        main { ...template... }
+#        input pattern { script }
+#        output pattern { script }
+#    }
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+package require RapptureBuilder
+
+namespace eval RapptureBuilder::templates {
+    #
+    # Set up a safe interpreter for loading language defn files...
+    #
+    variable tmplParser [interp create -safe]
+    foreach cmd [$tmplParser eval {info commands}] {
+        $tmplParser hide $cmd
+    }
+    $tmplParser alias language RapptureBuilder::templates::parse_language
+    $tmplParser alias unknown RapptureBuilder::templates::parse_tmpl_unknown
+    proc ::RapptureBuilder::templates::parse_tmpl_unknown {args} {
+        error "bad command \"[lindex $args 0]\": should be language"
+    }
+
+    #
+    # Set up a safe interpreter for loading the language definition...
+    #
+    variable langParser [interp create -safe]
+    foreach cmd [$langParser eval {info commands}] {
+        $langParser hide $cmd
+    }
+    $langParser alias extension RapptureBuilder::templates::parse_template extension
+    $langParser alias command RapptureBuilder::templates::parse_template command
+    $langParser alias makefile RapptureBuilder::templates::parse_template makefile
+
+    $langParser alias main RapptureBuilder::templates::parse_template main
+    $langParser alias input RapptureBuilder::templates::parse_pattern input
+    $langParser alias output RapptureBuilder::templates::parse_pattern output
+
+    $langParser alias unknown RapptureBuilder::templates::parse_lang_unknown
+    proc ::RapptureBuilder::templates::parse_lang_unknown {args} {
+        error "bad option \"[lindex $args 0]\": should be main, input, output"
+    }
+
+    # this variable will hold LangDef object as it is being built
+    variable currLangDef ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: RapptureBuilder::templates::init
+#
+# Called at the beginning of the Rappture builder to initialize the
+# template language system.  Loads all languages in the "templates"
+# directory within the builder to define all known languages.  After
+# this, the main program can be built by calling templates::generate.
+# ----------------------------------------------------------------------
+proc RapptureBuilder::templates::init {} {
+    # load supporting type definitions
+    set dir [file join $RapptureBuilder::library scripts templates]
+    foreach fname [glob [file join $dir *.tl]] {
+        RapptureBuilder::templates::load $fname
+    }
+
+    # if anyone tries to load again, do nothing
+    proc ::RapptureBuilder::templates::init {} { # already loaded }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: RapptureBuilder::templates::load <fileName>
+#
+# Used internally to load language definition files when this package
+# is first initialized by the builder.  Processes the <fileName>
+# within the template parser.  As a side-effect of executing this
+# file, a new template language is defined.
+# ----------------------------------------------------------------------
+proc RapptureBuilder::templates::load {fname} {
+    variable tmplParser
+    variable langDefs
+
+    set fid [open $fname r]
+    set info [read $fid]
+    close $fid
+
+    if {[catch {$tmplParser eval $info} err] != 0} {
+        error $err "$err\n    (while loading object definition from file \"$fname\")"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: RapptureBuilder::templates::languages
+#
+# Returns a list of languages with templates loaded by the "init"
+# procedure.  These names can be passed in to "generate" to generate
+# code for these languages.
+# ----------------------------------------------------------------------
+proc RapptureBuilder::templates::languages {} {
+    variable langDefs
+    return [array names langDefs]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: RapptureBuilder::templates::generate <what> \
+#           ?-language name? ?-xmlobj obj? ?-macros <string-map>?
+#
+# Builds a string of generated information starting with <what> as
+# the main template.  This string may contain other @@NAME@@ fields,
+# which are substituted recursively until all substitutions have
+# been made.  The -language option specifies which language template
+# should be used.  The -xmlobj option gives data for the @@NAME@@
+# substitutions.
+#
+# Returns the generated string with all possible substitutions.
+# ----------------------------------------------------------------------
+proc RapptureBuilder::templates::generate {what args} {
+    variable langDefs
+
+    Rappture::getopts args params {
+        value -language ""
+        value -xmlobj ""
+        value -macros ""
+    }
+    if {[llength $args] > 0} {
+        error "wrong # args: should be \"generate what ?-language name? ?-xmlobj obj?\""
+    }
+    if {$params(-language) eq ""} {
+        error "must specify a language for the code to be generated"
+    }
+
+    set lang $params(-language)
+    if {![info exists langDefs($lang)]} {
+        error "bad -language \"$lang\": should be one of [join [lsort [array names langDefs]] {, }]"
+    }
+
+    set info [$langDefs($lang) template $what]
+    if {$info eq ""} {
+        error "no such template \"$what\""
+    }
+
+    set xmlobj $params(-xmlobj)
+
+    # produce the @@INPUTS@@ section...
+    set inputs ""
+    if {$xmlobj ne ""} {
+        foreach path [Rappture::entities -as path $xmlobj input] {
+            append inputs [$langDefs($lang) generate $xmlobj $path -code]
+        }
+    }
+
+    # produce the @@OUTPUTS@@ section...
+    set outputs ""
+    if {$xmlobj ne ""} {
+        foreach path [Rappture::entities -as path $xmlobj output] {
+            append outputs [$langDefs($lang) generate $xmlobj $path -code]
+        }
+    }
+
+    # produce the @@DECLARATIONS@@ section...
+    set decls ""
+    if {$xmlobj ne ""} {
+        foreach path [Rappture::entities -as path $xmlobj input] {
+            append decls [$langDefs($lang) generate $xmlobj $path -decl]
+        }
+        foreach path [Rappture::entities -as path $xmlobj output] {
+            append decls [$langDefs($lang) generate $xmlobj $path -decl]
+        }
+    }
+
+    # handle the @@INPUTS@@ / @@OUTPUTS@@ / @@DECLARATIONS@@ specially
+    # preserve the indent at the beginning of each line
+    foreach {macro var} {
+        @@INPUTS@@ inputs
+        @@OUTPUTS@@ outputs
+        @@DECLARATIONS@@ decls
+    } {
+        set re [format {(?:^|\n)([ \t]*)%s} $macro]
+        while {[regexp -indices $re $info match indent]} {
+            set code [set $var]
+            foreach {m0 m1} $match break
+            foreach {i0 i1} $indent break
+            if {$i1-$i0 > 0} {
+                set indent [string range $info $i0 $i1]
+                set newcode ""
+                foreach line [split $code \n] {
+                    append newcode $indent $line "\n"
+                }
+                set code [string trimright $newcode \n]
+            }
+            if {[string index $info $m0] eq "\n"} { set code "\n$code" }
+            set info [string replace $info $m0 $m1 $code]
+        }
+    }
+
+    # make substitutions for any remaining macros
+    set info [string map $params(-macros) $info]
+
+    # return the generated code
+    return $info
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  RapptureBuilder::templates::parse_language
+#
+# Used internally to parse the definition of a language file:
+#
+#   language NAME {
+#       main { ...body of code... }
+#       inputs { template }
+#       outputs { template }
+#   }
+#
+# Builds an object in currLangDef and then registers the completed
+# object in the langDefs array.  This defines a known language that
+# can be used to generate a template.
+# ----------------------------------------------------------------------
+proc RapptureBuilder::templates::parse_language {name body} {
+    variable currLangDef
+    variable langDefs
+    variable langParser
+
+    set currLangDef [RapptureBuilder::templates::LangDef ::#auto $name]
+
+    if {[catch {$langParser eval $body} err] != 0} {
+        itcl::delete object $currLangDef
+        set currLangDef ""
+        error $err "\n    (while loading language definition for \"$name\")"
+    }
+
+    set langDefs($name) $currLangDef
+    set currLangDef ""
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  RapptureBuilder::templates::parse_template <what> <body>
+#
+# Used internally to add the definition of program templates to the
+# current language definition:
+#
+#   main { ...template... }
+#
+# ----------------------------------------------------------------------
+proc RapptureBuilder::templates::parse_template {what body} {
+    variable currLangDef
+    $currLangDef template $what $body
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  RapptureBuilder::templates::parse_pattern <which> <pattern> <script>
+#
+# Used internally to add the definition of how to input/output
+# specific objects to the current language definition:
+#
+#   input number {...script...}
+#   output * {...script...}
+#
+# Each script is executed in a context that has commands and built-in
+# variables for various bits of the current object:
+#   [attr get name] ... returns the value of attribute name
+#   $path ............. path for current object
+#   $id ............... id (name at end of path) for current object
+# ----------------------------------------------------------------------
+proc RapptureBuilder::templates::parse_pattern {which pattern body} {
+    variable currLangDef
+    $currLangDef handler $which:$pattern $body
+}
+
+
+# ----------------------------------------------------------------------
+#  CLASS: LangDef
+# ----------------------------------------------------------------------
+itcl::class RapptureBuilder::templates::LangDef {
+    constructor {name args} {
+        set _lang $name
+        eval configure $args
+    }
+
+    # used to query the name of this language
+    public method language {} {
+        return $_lang
+    }
+
+    # used to register/query a template with a specific name
+    public method template {what args} {
+        if {[llength $args] == 0} {
+            if {[info exists _frag2txt($what)]} {
+                return $_frag2txt($what)
+            }
+            return ""
+        } elseif {[llength $args] != 1} {
+            error "wrong # args: should be \"template what ?text?\""
+        }
+        set _frag2txt($what) [lindex $args 0]
+    }
+
+    # used to register a script that processes an input/output element
+    public method handler {pattern body} {
+        set i [lsearch -exact $_patterns $pattern]
+        if {$i < 0} { lappend _patterns $pattern }
+        set _pat2code($pattern) $body
+    }
+
+    # used to generate the output for a specific Rappture object in this lang
+    public method generate {xmlobj path {what "-code"}} {
+        variable genParser
+        variable genOutput ""
+        variable genDecls ""
+        variable genXmlobj $xmlobj
+        variable genPath $path
+
+        set which [lindex [split $path .] 0]
+        set type [$xmlobj element -as type $path]
+        set elem $which:$type
+
+        set code ""
+        foreach pat $_patterns {
+            if {[string match $pat $elem]} {
+                set code $_pat2code($pat)
+                break
+            }
+        }
+        if {$code eq ""} {
+            error "can't find production code for $elem"
+        }
+
+        $genParser eval [list set path $path]
+        $genParser eval [list set type $type]
+        $genParser eval [list set id [$xmlobj element -as id $path]]
+        $genParser eval $code
+
+        switch -- $what {
+            -code   { return $genOutput }
+            -decl   { return $genDecls }
+            default { error "bad option \"$what\": should be -code, -decl" }
+        }
+    }
+
+    private variable _lang ""     ;# name of this language
+    private variable _frag2txt    ;# maps fragment name => template text
+    private variable _patterns "" ;# order of patterns for _pat2code
+    private variable _pat2code    ;# maps glob pattern => script to gen output
+
+    #
+    # Set up a safe interpreter for the "generate" method...
+    #
+    private common genParser [interp create -safe]
+    $genParser alias code RapptureBuilder::templates::LangDef::cmd_code
+    $genParser alias decl RapptureBuilder::templates::LangDef::cmd_decl
+    $genParser alias attr RapptureBuilder::templates::LangDef::cmd_attr
+
+    private common genOutput ""  ;# gathers code output from genParser
+    private common genDecls ""   ;# gathers declarations from genParser
+    private common genXmlobj ""  ;# Rappture tool spec
+    private common genPath ""    ;# current path in the genXmlobj data
+
+    # like the std "puts" command, but adds output to the generated code
+    proc cmd_code {args} {
+        set nl "\n"
+        while {[llength $args] > 1} {
+            set opt [lindex $args 0]
+            set args [lrange $args 1 end]
+            if {$opt eq "-nonewline"} {
+                set nl ""
+            } else {
+                error "bad option \"$opt\": should be -nonewline"
+            }
+        }
+        if {[llength $args] != 1} {
+            error "wrong # args: should be \"puts ?-nonewline? string\""
+        }
+        append genOutput [lindex $args 0] $nl
+    }
+
+    # like the std "puts" command, but adds output to code declarations
+    proc cmd_decl {args} {
+        set nl "\n"
+        while {[llength $args] > 1} {
+            set opt [lindex $args 0]
+            set args [lrange $args 1 end]
+            if {$opt eq "-nonewline"} {
+                set nl ""
+            } else {
+                error "bad option \"$opt\": should be -nonewline"
+            }
+        }
+        if {[llength $args] != 1} {
+            error "wrong # args: should be \"puts ?-nonewline? string\""
+        }
+        append genDecls [lindex $args 0] $nl
+    }
+
+    # used to query attribute info for the current object
+    proc cmd_attr {option name} {
+        set type [$genXmlobj element -as type $genPath]
+        set ainfo [Rappture::objects::get $type -attributes]
+        if {$ainfo eq ""} {
+            error "don't know how to generate code for type \"$type\""
+        }
+
+        set found 0
+        foreach rec $ainfo {
+            if {[lindex $rec 0] eq $name} {
+                set found 1
+                break
+            }
+        }
+        if {!$found} {
+            error "bad attribute name \"$name\" for type \"$type\""
+        }
+
+        switch -- $option {
+            get {
+                array set attr [lrange $rec 1 end]
+                return [$genXmlobj get $genPath.$attr(-path)]
+            }
+            info {
+                return $rec
+            }
+            default {
+                error "bad option \"$option\": should be get, info"
+            }
+        }
+    }
+}
Index: /tags/1.6.0/builder/scripts/templates/clang.tl
===================================================================
--- /tags/1.6.0/builder/scripts/templates/clang.tl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/templates/clang.tl	(revision 6168)
@@ -0,0 +1,185 @@
+# ----------------------------------------------------------------------
+#  LANGUAGE:  C Language API
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+language "C Language" {
+  extension ".c"
+
+  # use the convention with "c" on the end of the program name
+  # so we can tell that this is a C language program, not fortran
+  command {@tool/@@FILEROOT@@c @driver}
+
+  main {/*
+ * ----------------------------------------------------------------------
+ *  MAIN PROGRAM - generated by the Rappture Builder
+ * ----------------------------------------------------------------------
+ */
+#include "rappture.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <unistd.h>
+
+int main(int argc, char * argv[]) {
+    /* stuff needed for Rappture library */
+    RpLibrary* io;
+    const char* data; char line[255];
+    int err;
+
+    @@DECLARATIONS@@
+
+    /* open the XML file containing the run parameters */
+    io = rpLibrary(argv[1]);
+
+    if (io == NULL) {
+        /* cannot open file or out of memory */
+        printf("FAILED loading Rappture data\n");
+        exit(1);
+    }
+
+    /*
+     *********************************************************
+     * Get input values from Rappture
+     *********************************************************
+     */
+    @@INPUTS@@
+
+    /*
+     *********************************************************
+     *  Add your code here for the main body of your program
+     *********************************************************
+     */
+
+    /* spit out progress messages as you go along... */
+    rpUtilsProgress(0, "Starting...");
+    rpUtilsProgress(5, "Loading data...");
+    rpUtilsProgress(50, "Half-way there");
+    rpUtilsProgress(100, "Done");
+
+    /*
+     *********************************************************
+     * Save output values back to Rappture
+     *********************************************************
+     */
+    @@OUTPUTS@@
+
+    rpResult(io);
+    exit(0);
+}}
+
+  input boolean {
+    decl "int $id;  /* for $path */"
+    code "\n/* get input value for $path */"
+    code "rpGetString(io,\"$path.current\", &data);"
+    code "$id = (strcmp(data,\"yes\") == 0);"
+  }
+  input image {
+    code "\n/* get input value for $path */"
+    code "/* returns base64-encoded image data */"
+    code "rpGetString(io,\"$path.current\", &data);"
+  }
+  input integer {
+    decl "int $id;  /* for $path */"
+    code "\n/* get input value for $path */"
+    code "rpGetString(io,\"$path.current\", &data);"
+    code "$id = atoi(data);"
+  }
+  input number {
+    set units [attr get units]
+    if {$units ne ""} {
+      decl "double $id;  /* for $path */"
+      code "\n/* get input value for $path and convert to $units */"
+      code "rpGetString(io,\"$path.current\", &data);"
+      code "$id = rpConvertDbl(data, \"$units\", &err);"
+      code "if (err) {"
+      code "    printf(\"Error while retrieving $path.current\n\");"
+      code "    exit(1);"
+      code "}"
+    } else {
+      decl "double $id;  /* for $path */"
+      code "\n/* get input value for $path */"
+      code "rpGetString(io,\"$path.current\", &data);"
+      code "$id = atof(data);"
+    }
+  }
+  input string {
+    decl "const char* $id;  /* for $path */"
+    code "\n/* get input value for $path */"
+    code "rpGetString(io,\"$path.current\", &$id);"
+  }
+  input * {
+    code "\n/* get input value for $path */"
+    code "rpGetString(io,\"$path.current\", &data);"
+  }
+
+  output boolean {
+    decl "int $id;  /* for $path */"
+    code "\n/* save output value for $path */"
+    code "rpPutString(io, \"$path.current\", ($id) ? \"yes\" : \"no\");"
+  }
+  output curve {
+    code "\n/* save output value for $path */"
+    code "/* this shows just one (x,y) point -- modify as needed */"
+    code "sprintf(line, \"%g %g\\n\", x, y);"
+    code "rpPutString(io,\"$path.component.xy\", line, RPLIB_APPEND);"
+  }
+  output histogram {
+    code "\n/* save output value for $path */"
+    code "/* this shows just one point -- modify as needed */"
+    code "/* (x,h,w) = x-coord, height of bar, and width of bar (optional) */"
+    code "sprintf(line, \"%g %g %g\\n\", x, h, w);"
+    code "rpPutString(io,\"$path.component.xhw\", line, RPLIB_APPEND);"
+  }
+  output image {
+    code "\n/* save output value for $path */"
+    code "/* data should be base64-encoded image data */"
+    code "rpPutString(io, \"$path.current\", imdata, RPLIB_OVERWRITE);"
+  }
+  output integer {
+    decl "int $id;  /* for $path */"
+    code "\n/* save output value for $path */"
+    code "sprintf(line, \"%d\\n\", $id);"
+    code "rpPutString(io, \"$path.current\", line, RPLIB_OVERWRITE);"
+  }
+  output number {
+    decl "double $id;  /* for $path */"
+    code "\n/* save output value for $path */"
+    code "sprintf(line, \"%g\\n\", $id);"
+    code "rpPutString(io, \"$path.current\", line, RPLIB_OVERWRITE);"
+  }
+  output string {
+    decl "char $id\[1024\];  /* for $path */"
+    code "\n/* save output value for $path */"
+    code "rpPutString(io, \"$path.current\", $id, RPLIB_OVERWRITE);"
+  }
+  output * {
+    code "\n/* save output value for $path */"
+    code "rpPutString(io, \"$path.current\", $id, RPLIB_OVERWRITE);"
+  }
+
+  makefile {# simple makefile for a Rappture-based program
+
+CC		= gcc
+CFLAGS		= -g -Wall
+
+RAPPTURE_DIR	= @@RAPPTUREDIR@@
+INCLUDES	= -I$(RAPPTURE_DIR)/include
+LIBS		= -L$(RAPPTURE_DIR)/lib -lrappture -lm
+
+
+all: @@FILEROOT@@c
+
+@@FILEROOT@@c: @@FILENAME@@
+	$(CC) $(CFLAGS) $(INCLUDES) $< -o $@ $(LIBS)
+
+clean:
+	$(RM) @@FILEROOT@@c run*.xml
+}
+}
Index: /tags/1.6.0/builder/scripts/templates/fortran77.tl
===================================================================
--- /tags/1.6.0/builder/scripts/templates/fortran77.tl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/templates/fortran77.tl	(revision 6168)
@@ -0,0 +1,184 @@
+# ----------------------------------------------------------------------
+#  LANGUAGE:  Fortran 77 API
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+language "Fortran 77" {
+  extension ".f"
+
+  # use the convention with "f77" on the end of the program name
+  # so we can tell that this is a fortran program, not C language
+  command {@tool/@@FILEROOT@@f77 @driver}
+
+  main {c ----------------------------------------------------------------------
+c  MAIN PROGRAM - generated by the Rappture Builder
+c ----------------------------------------------------------------------
+      program main
+        IMPLICIT NONE
+
+c       stuff needed for Rappture:
+        integer rp_lib, rp_units_convert_dbl
+        integer io, ok
+        character*255 inFile, strVal
+
+@@DECLARATIONS@@
+
+c       open the XML file containing the run parameters
+        call getarg(1,inFile)
+        io = rp_lib(inFile)
+        if (io .eq. 0) then
+            write(6,*) "FAILED loading Rappture data from ",inFile
+            stop
+        endif
+
+c       ----------------------------------------------------------
+c       Get input values from Rappture
+c       ----------------------------------------------------------
+@@INPUTS@@
+
+c       ----------------------------------------------------------
+c          Add your code here for the main body of your program
+c       ----------------------------------------------------------
+
+c       spit out progress messages as you go along...
+        call rp_utils_progress (0, "Starting...")
+        call rp_utils_progress (5, "Loading data...")
+        call rp_utils_progress (50, "Half-way there")
+        call rp_utils_progress (100, "Done")
+
+c       ----------------------------------------------------------
+c       Save output values back to Rappture
+c       ----------------------------------------------------------
+@@OUTPUTS@@
+
+        call rp_result(io)
+      end program main
+}
+
+  input boolean {
+    decl "\nc       for $path"
+    decl "        logical $id"
+    code "\nc       get input value for $path"
+    code "        call rp_lib_get(io,\n     +    \"$path.current\", strVal)"
+    code "        $id = (strVal .eq. 'yes')"
+  }
+  input image {
+    code "\nc       get input value for $path"
+    code "c       returns base64-encoded image data"
+    code "        call rp_lib_get(io,\n     +    \"$path.current\", strVal)"
+  }
+  input integer {
+    decl "\nc       for $path"
+    decl "        integer $id"
+    code "\nc       get input value for $path"
+    code "        call rp_lib_get(io,\n     +    \"$path.current\", strVal)"
+    code "        read(strVal,*) $id"
+  }
+  input number {
+    set units [attr get units]
+    if {$units ne ""} {
+      decl "\nc       for $path"
+      decl "        double precision $id"
+      code "\nc       get input value for $path and convert to $units"
+      code "        call rp_lib_get(io,\n     +    \"$path.current\", strVal)"
+      code "        ok = rp_units_convert_dbl(strVal,\"$units\",$id)"
+      code "        if (ok .ne. 0) then"
+      code "          write(6,*) \"Error while loading \", \"$path\""
+      code "          stop"
+      code "        endif"
+    } else {
+      decl "\nc       for $path"
+      decl "        double precision $id"
+      code "\nc       get input value for $path"
+      code "        call rp_lib_get(io,\n     +    \"$path.current\", strVal)"
+      code "        read(strVal,*) $id"
+    }
+  }
+  input string {
+    decl "\nc       for $path"
+    decl "        character*255 $id"
+    code "\nc       get input value for $path"
+    code "        call rp_lib_get(io,\n     +    \"$path.current\", $id)"
+  }
+  input * {
+    code "\nc       get input value for $path"
+    code "        call rp_lib_get(io,\n     +    \"$path.current\", strVal)"
+  }
+
+  output boolean {
+    decl "\nc       for $path"
+    decl "        logical $id"
+    code "\nc       save output value for $path"
+    code "        if ($id) then"
+    code "          strVal = 'yes'"
+    code "        else"
+    code "          strVal = 'no'"
+    code "        endif"
+    code "        call rp_lib_put_str(io,\n     +    \"$path.current\",strVal,0)"
+  }
+  output curve {
+    code "\nc       save output value for $path"
+    code "c       this shows just one (x,y) point -- modify as needed"
+    code "        write(strVal,'(E20.12,E20.12,A)') x, y, char(10)"
+    code "        call rp_lib_put_str(io,\n     +    \"$path.component.xy\",strVal,1)"
+  }
+  output histogram {
+    code "\nc       save output value for $path"
+    code "c       this shows just one point -- modify as needed"
+    code "c       (x,h,w) = x-coord, height of bar, and width of bar (optional)"
+    code "        write(strVal,'(E20.12,E20.12,E20.12,A)') x, h, w, char(10)"
+    code "        call rp_lib_put_str(io,\n     +    \"$path.component.xhw\",strVal,1)"
+  }
+  output image {
+    code "\nc       save output value for $path"
+    code "c       data should be base64-encoded image data"
+    code "        call rp_lib_put_str(io,\n     +    \"$path.current\",$id,0)"
+  }
+  output integer {
+    decl "\nc       for $path"
+    decl "        integer $id"
+    code "\nc       save output value for $path"
+    code "        write(strVal,*) $id"
+    code "        call rp_lib_put_str(io,\n     +    \"$path.current\",strVal,0)"
+  }
+  output number {
+    decl "\nc       for $path"
+    decl "        double precision $id"
+    code "\nc       save output value for $path"
+    code "        write(strVal,*) $id"
+    code "        call rp_lib_put_str(io,\n     +    \"$path.current\",strVal,0)"
+  }
+  output string {
+    decl "\nc       for $path"
+    decl "        character*255 $id"
+    code "\nc       save output value for $path"
+    code "        call rp_lib_put_str(io,\n     +    \"$path.current\",$id,0)"
+  }
+  output * {
+    code "\nc       save output value for $path"
+    code "        call rp_lib_put_str(io,\n     +    \"$path.current\",$id,0)"
+  }
+
+  makefile {# simple makefile for a Rappture-based program
+
+FC		= gfortran
+FCFLAGS		= -g -Wall
+
+RAPPTURE_DIR	= @@RAPPTUREDIR@@
+INCLUDES	= -I$(RAPPTURE_DIR)/include
+LIBS		= -L$(RAPPTURE_DIR)/lib -lrappture -lm
+
+
+all: @@FILEROOT@@f77
+
+@@FILEROOT@@f77: @@FILENAME@@
+	$(FC) $(FCFLAGS) $(INCLUDES) $< -o $@ $(LIBS)
+
+clean:
+	$(RM) @@FILEROOT@@f77 run*.xml
+}
+}
Index: /tags/1.6.0/builder/scripts/templates/java.tl
===================================================================
--- /tags/1.6.0/builder/scripts/templates/java.tl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/templates/java.tl	(revision 6168)
@@ -0,0 +1,131 @@
+# ----------------------------------------------------------------------
+#  LANGUAGE:  Java API
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+language "Java" {
+  extension ".java"
+  command {java RpApp @driver}
+
+  main {// ---------------------------------------------------------------------
+//  MAIN PROGRAM - generated by the Rappture Builder
+// ---------------------------------------------------------------------
+
+class RpApp {
+
+  public static void main(String args[]) {
+    String str;
+
+    // open the XML file containing the run parameters
+    rappture.Library io = new rappture.Library(args[0]);
+
+    /////////////////////////////////////////////////////////
+    // Get input values from Rappture
+    /////////////////////////////////////////////////////////
+    @@INPUTS@@
+
+    /////////////////////////////////////////////////////////
+    //  Add your code here for the main body of your program
+    /////////////////////////////////////////////////////////
+
+    // spit out progress messages as you go along...
+    rappture.Utils.progress(0, "Starting...");
+    rappture.Utils.progress(5, "Loading data...");
+    rappture.Utils.progress(50, "Half-way there");
+    rappture.Utils.progress(100, "Done");
+
+    /////////////////////////////////////////////////////////
+    // Save output values back to Rappture
+    /////////////////////////////////////////////////////////
+    @@OUTPUTS@@
+
+    io.result();
+  }
+}}
+
+  input boolean {
+    code "\n// get input value for $path"
+    code "str = io.get(\"$path.current\");"
+    code "boolean $id = str.equals(\"yes\");"
+  }
+  input image {
+    code "\n// get input value for $path"
+    code "// returns base64-encoded image data"
+    code "$id = io.get(\"$path.current\");"
+  }
+  input integer {
+    code "\n// get input value for $path"
+    code "int $id = io.getInt(\"$path.current\");"
+  }
+  input number {
+    set units [attr get units]
+    if {$units ne ""} {
+      code "\n// get input value for $path and convert to $units"
+      code "str = io.get(\"$path.current\");"
+      code "double $id = Double.valueOf(rappture.Units.convertString(str, \"$units\", false));"
+    } else {
+      code "\n// get input value for $path"
+      code "double $id = io.getDouble(\"$path.current\");"
+    }
+  }
+  input * {
+    code "\n// get input value for $path"
+    code "String $id = io.get(\"$path.current\");"
+  }
+
+  output boolean {
+    code "\n// save output value for $path"
+    code "io.put(\"$path.component.xy\", ($id) ? \"yes\" : \"no\");"
+  }
+  output curve {
+    code "\n// save output value for $path"
+    code "// this shows just one (x,y) point -- modify as needed"
+    code "str = String.format(\"%g %g\\n\", x, y);"
+    code "io.put(\"$path.component.xy\", line, true);"
+  }
+  output histogram {
+    code "\n// save output value for $path"
+    code "// this shows just one point -- modify as needed"
+    code "// (x,h,w) = x-coord, height of bar, and width of bar (optional)"
+    code "str = String.format(\"%g %g %g\\n\", x, h, w);"
+    code "io.put(\"$path.component.xhw\", line, true);"
+  }
+  output image {
+    code "\n// save output value for $path"
+    code "// data should be base64-encoded image data"
+    code "io.put(\"$path.current\",$id);"
+  }
+  output integer {
+    code "\n// save output value for $path"
+    code "io.put(\"$path.current\", Integer.toString($id));"
+  }
+  output number {
+    code "\n// save output value for $path"
+    code "io.put(\"$path.current\", Double.toString($id));"
+  }
+  output * {
+    code "\n// save output value for $path"
+    code "io.put(\"$path.current\",$id);"
+  }
+
+  makefile {# simple makefile for a Rappture-based program
+
+JAVAC		= javac
+
+RAPPTURE_DIR	= @@RAPPTUREDIR@@
+CLASSPATH	= -classpath $(RAPPTURE_DIR)/lib/java
+
+
+all: @@FILEROOT@@.class
+
+@@FILEROOT@@.class: @@FILENAME@@
+	$(JAVAC) $(CLASSPATH) $<
+
+clean:
+	$(RM) @@FILEROOT@@.class run*.xml
+}
+}
Index: /tags/1.6.0/builder/scripts/templates/matlab.tl
===================================================================
--- /tags/1.6.0/builder/scripts/templates/matlab.tl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/templates/matlab.tl	(revision 6168)
@@ -0,0 +1,107 @@
+# ----------------------------------------------------------------------
+#  LANGUAGE:  MATLAB API
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+language "MATLAB" {
+  extension ".m"
+  command {matlab -nodisplay -r infile='@driver',path('@tool',path),@@FILEROOT@@}
+
+  main {% ----------------------------------------------------------------------
+%  MAIN PROGRAM - generated by the Rappture Builder
+% ----------------------------------------------------------------------
+
+% open the XML file containing the run parameters
+% the file name comes in from the command-line via variable 'infile'
+io = rpLib(infile);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Get input values from Rappture
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@@INPUTS@@
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%  Add your code here for the main body of your program
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% spit out progress messages as you go along...
+rpUtilsProgress(0, 'Starting...');
+rpUtilsProgress(5, 'Loading data...');
+rpUtilsProgress(50, 'Half-way there');
+rpUtilsProgress(100, 'Done');
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Save output values back to Rappture
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@@OUTPUTS@@
+
+rpLibResult(io);
+quit;
+}
+
+  input boolean {
+    code "\n% get input value for $path"
+    code "str = rpLibGetString(io,'$path.current');"
+    code "$id = strcmpi(str,'yes');"
+  }
+  input image {
+    code "\n% get input value for $path"
+    code "% returns base64-encoded image data"
+    code "$id = rpLibGetString(io,'$path.current');"
+  }
+  input integer {
+    code "\n% get input value for $path"
+    code "$id = int32(rpLibGetDouble(io,'$path.current'));"
+  }
+  input number {
+    set units [attr get units]
+    if {$units ne ""} {
+      code "\n% get input value for $path and convert to $units"
+      code "str = rpLibGetString(io,'$path.current');"
+      code "\[$id,err\] = rpUnitsConvertDbl(str, '$units');"
+    } else {
+      code "\n% get input value for $path"
+      code "$id = rpLibGetDouble(io,'$path.current');"
+    }
+  }
+  input * {
+    code "\n% get input value for $path"
+    code "$id = rpLibGetString(io,'$path.current');"
+  }
+
+  output curve {
+    code "\n% save output value for $path"
+    code "% this assumes a vector 'x' and a vector 'y'"
+    code "xydata = \[x;y\];"
+    code "str = sprintf('%12g %12g\\n', xydata);"
+    code "rpLibPutString(io,'$path.component.xy',str,0);"
+  }
+  output histogram {
+    code "\n% save output value for $path"
+    code "% vectors x,h,w: x-coord, height of bar, and width of bar (optional)"
+    code "xhwdata = \[x;h;w\];"
+    code "str = sprintf('%12g %12g %12g\\n', xhwdata);"
+    code "rpLibPutString(io,'$path.component.xhw',str,0);"
+  }
+  output image {
+    code "\n% save output value for $path"
+    code "% data should be base64-encoded image data"
+    code "rpLibPutString(io,'$path.current',imdata,0);"
+  }
+  output integer {
+    code "\n% save output value for $path"
+    code "rpLibPutString(io,'$path.current',num2str($id),0);"
+  }
+  output number {
+    code "\n% save output value for $path"
+    code "rpLibPutString(io,'$path.current',num2str($id),0);"
+  }
+  output * {
+    code "\n% save output value for $path"
+    code "rpLibPutString(io,'$path.current',$id,0);"
+  }
+}
Index: /tags/1.6.0/builder/scripts/templates/octave.tl
===================================================================
--- /tags/1.6.0/builder/scripts/templates/octave.tl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/templates/octave.tl	(revision 6168)
@@ -0,0 +1,107 @@
+# ----------------------------------------------------------------------
+#  LANGUAGE:  Octave API
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+language "Octave" {
+  extension ".m"
+  command {octave --silent --eval infile='@driver',path('@tool',path),@@FILEROOT@@}
+
+  main {% ----------------------------------------------------------------------
+%  MAIN PROGRAM - generated by the Rappture Builder
+% ----------------------------------------------------------------------
+
+% open the XML file containing the run parameters
+% the file name comes in from the command-line via variable 'infile'
+io = rpLib(infile);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Get input values from Rappture
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@@INPUTS@@
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%  Add your code here for the main body of your program
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% spit out progress messages as you go along...
+rpUtilsProgress(0, 'Starting...');
+rpUtilsProgress(5, 'Loading data...');
+rpUtilsProgress(50, 'Half-way there');
+rpUtilsProgress(100, 'Done');
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Save output values back to Rappture
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@@OUTPUTS@@
+
+rpLibResult(io);
+quit;
+}
+
+  input boolean {
+    code "\n% get input value for $path"
+    code "str = rpLibGetString(io,'$path.current');"
+    code "$id = strcmpi(str,'yes');"
+  }
+  input image {
+    code "\n% get input value for $path"
+    code "% returns base64-encoded image data"
+    code "$id = rpLibGetString(io,'$path.current');"
+  }
+  input integer {
+    code "\n% get input value for $path"
+    code "$id = int32(rpLibGetDouble(io,'$path.current'));"
+  }
+  input number {
+    set units [attr get units]
+    if {$units ne ""} {
+      code "\n% get input value for $path and convert to $units"
+      code "str = rpLibGetString(io,'$path.current');"
+      code "\[$id,err\] = rpUnitsConvertDbl(str, '$units');"
+    } else {
+      code "\n% get input value for $path"
+      code "$id = rpLibGetDouble(io,'$path.current');"
+    }
+  }
+  input * {
+    code "\n% get input value for $path"
+    code "$id = rpLibGetString(io,'$path.current');"
+  }
+
+  output curve {
+    code "\n% save output value for $path"
+    code "% this assumes a vector 'x' and a vector 'y'"
+    code "xydata = \[x;y\];"
+    code "str = sprintf('%12g %12g\\n', xydata);"
+    code "rpLibPutString(io,'$path.component.xy',str,0);"
+  }
+  output histogram {
+    code "\n% save output value for $path"
+    code "% vectors x,h,w: x-coord, height of bar, and width of bar (optional)"
+    code "xhwdata = \[x;h;w\];"
+    code "str = sprintf('%12g %12g %12g\\n', xhwdata);"
+    code "rpLibPutString(io,'$path.component.xhw',str,0);"
+  }
+  output image {
+    code "\n% save output value for $path"
+    code "% data should be base64-encoded image data"
+    code "rpLibPutString(io,'$path.current',imdata,0);"
+  }
+  output integer {
+    code "\n% save output value for $path"
+    code "rpLibPutString(io,'$path.current',num2str($id),0);"
+  }
+  output number {
+    code "\n% save output value for $path"
+    code "rpLibPutString(io,'$path.current',num2str($id),0);"
+  }
+  output * {
+    code "\n% save output value for $path"
+    code "rpLibPutString(io,'$path.current',$id,0);"
+  }
+}
Index: /tags/1.6.0/builder/scripts/templates/perl.tl
===================================================================
--- /tags/1.6.0/builder/scripts/templates/perl.tl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/templates/perl.tl	(revision 6168)
@@ -0,0 +1,93 @@
+# ----------------------------------------------------------------------
+#  LANGUAGE:  Perl API
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+language "Perl" {
+  extension ".pl"
+  command {perl @tool/@@FILENAME@@ @driver}
+
+  main {# ----------------------------------------------------------------------
+#  MAIN PROGRAM - generated by the Rappture Builder
+# ----------------------------------------------------------------------
+use Rappture;
+
+# open the XML file containing the run parameters
+$io = Rappture::RpLibrary->new($ARGV[0]);
+
+#########################################################
+# Get input values from Rappture
+#########################################################
+@@INPUTS@@
+
+#########################################################
+#  Add your code here for the main body of your program
+#########################################################
+
+# spit out progress messages as you go along...
+Rappture::Utils::progress(0, "Starting...");
+Rappture::Utils::progress(5, "Loading data...");
+Rappture::Utils::progress(50, "Half-way there");
+Rappture::Utils::progress(100, "Done");
+
+#########################################################
+# Save output values back to Rappture
+#########################################################
+@@OUTPUTS@@
+
+$io->result();
+exit 0;
+}
+
+  input boolean {
+    code "\n# get input value for $path"
+    code "# returns value as string \"yes\" or \"no\""
+    code "\$str = \$io->get(\"$path.current\");"
+    code "\$$id = (\$str) ? \"yes\" : \"no\";"
+  }
+  input image {
+    code "\n# get input value for $path"
+    code "# returns base64-encoded image data"
+    code "\$$id = \$io->get(\"$path.current\");"
+  }
+  input number {
+    set units [attr get units]
+    if {$units ne ""} {
+      code "\n# get input value for $path and convert to $units"
+      code "\$str = \$io->get(\"$path.current\");"
+      code "$$id = Rappture::RpUnits::convert(\$str, \"$units\", \"off\");"
+    } else {
+      code "\n# get input value for $path"
+      code "\$$id = \$io->get(\"$path.current\");"
+    }
+  }
+  input * {
+    code "\n# get input value for $path"
+    code "\$$id = \$io->get(\"$path.current\");"
+  }
+
+  output curve {
+    code "\n# save output value for $path"
+    code "# this shows just one (x,y) point -- modify as needed"
+    code "\$io->put(\"$path.component.xy\", \"\$x \$y\\n\", 1);"
+  }
+  output histogram {
+    code "\n# save output value for $path"
+    code "# this shows just one point -- modify as needed"
+    code "# (x,h,w) = x-coord, height of bar, and width of bar (optional)"
+    code "\$io->put(\"$path.component.xhw\", \"\$x \$h \$w\\n\", 1);"
+  }
+  output image {
+    code "\n# save output value for $path"
+    code "# data in \$$id should be base64-encoded image data"
+    code "\$io->put(\"$path.current\", \$$id, 0);"
+  }
+  output * {
+    code "\n# save output value for $path"
+    code "\$io->put(\"$path.current\", \$$id, 0);"
+  }
+}
Index: /tags/1.6.0/builder/scripts/templates/python.tl
===================================================================
--- /tags/1.6.0/builder/scripts/templates/python.tl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/templates/python.tl	(revision 6168)
@@ -0,0 +1,103 @@
+# ----------------------------------------------------------------------
+#  LANGUAGE:  Python API
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+language "Python" {
+  extension ".py"
+  command {python @tool/@@FILENAME@@ @driver}
+
+  main {# ----------------------------------------------------------------------
+#  MAIN PROGRAM - generated by the Rappture Builder
+# ----------------------------------------------------------------------
+import Rappture
+import sys
+import numpy as np
+
+# uncomment these to redirect stdout and stderr
+# to files for debugging.
+#sys.stderr = open('debug.err', 'w')
+#sys.stdout = open('debug.out', 'w')
+
+# open the XML file containing the run parameters
+io = Rappture.PyXml(sys.argv[1])
+
+#########################################################
+# Get input values from Rappture
+#########################################################
+@@INPUTS@@
+
+#########################################################
+#  Add your code here for the main body of your program
+#########################################################
+
+# spit out progress messages as you go along...
+Rappture.Utils.progress(0, "Starting...")
+Rappture.Utils.progress(5, "Loading data...")
+Rappture.Utils.progress(50, "Half-way there")
+Rappture.Utils.progress(100, "Done")
+
+#########################################################
+# Save output values back to Rappture
+#########################################################
+@@OUTPUTS@@
+
+io.close()
+sys.exit()
+}
+
+  input boolean {
+    code "\n# get input value for $path"
+    code "# returns value as string \"yes\" or \"no\""
+    code "$id = io\['$path.current'\].value == 'yes'"
+  }
+  input image {
+    code "\n# get input value for $path"
+    code "# returns base64-encoded image data"
+    code "$id = io\['$path.current'\].value"
+  }
+  input integer {
+    code "\n# get input value for $path"
+    code "$id = int(io\['$path.current'\].value)"
+  }
+  input number {
+    set units [attr get units]
+    if {$units ne ""} {
+      code "\n# get input value for $path and convert to $units"
+      code "str = io\['$path.current'\].value"
+      code "$id = Rappture.Units.convert(str, to=\"$units\", units=\"off\")"
+    } else {
+      code "\n# get input value for $path"
+      code "$id = float(io\['$path.current'\].value)"
+    }
+  }
+  input * {
+    code "\n# get input value for $path"
+    code "$id = io\['$path.current'\].value"
+  }
+
+  output curve {
+    code "\n# save output value for $path"
+    code "# x and y should be lists or arrays -- modify as needed"
+    code "io\['$path.component.xy'\] = (x, y)"
+  }
+  output histogram {
+    code "\n# save output value for $path"
+    code "# x and y should be lists or arrays -- modify as needed"
+    code "# (x,h,w) = x-coord, height of bar, and width of bar"
+    code "io\['$path.component.xhw'\] = (x, h, w)"
+  }
+  output image {
+    code "\n# save output value for $path"
+    code "# data should be base64-encoded image data"
+    code "io\['$path.current'\] = imdata"
+  }
+  output * {
+    code "\n# save output value for $path"
+    code "io\['$path.current'\] = $id"
+  }
+}
Index: /tags/1.6.0/builder/scripts/templates/r.tl
===================================================================
--- /tags/1.6.0/builder/scripts/templates/r.tl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/templates/r.tl	(revision 6168)
@@ -0,0 +1,88 @@
+# ----------------------------------------------------------------------
+#  LANGUAGE:  R Language API
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+language "R Language" {
+  extension ".R"
+
+  command {R --slave --no-save --no-restore --silent --args @driver < @tool/@@FILENAME@@}
+
+  main {# ----------------------------------------------------------------------
+#  MAIN PROGRAM - generated by the Rappture Builder
+# ----------------------------------------------------------------------
+require(Rappture)
+
+# open the XML file containing the run parameters
+args <- commandArgs()
+
+# command line: R --slave --no-save --no-restore --silent --args @driver
+#               ^1     ^2        ^3           ^4       ^5     ^6      ^7
+io <- rp_lib(args[7])
+
+#########################################################
+# Get input values from Rappture
+#########################################################
+@@INPUTS@@
+
+#########################################################
+#  Add your code here for the main body of your program
+#########################################################
+
+
+#########################################################
+# Save output values back to Rappture
+#########################################################
+@@OUTPUTS@@
+
+rp_lib_result(io)
+quit("no",0)
+}
+
+  input boolean {
+    code "\n# get input value for $path"
+    code "# returns value as string \"yes\" or \"no\""
+    code "$id <- rp_lib_get_string(io,\"$path.current\") == \"yes\""
+  }
+  input image {
+    code "\n# get input value for $path"
+    code "# returns base64-encoded image data"
+    code "imdata <- rp_lib_get_string(io, \"$path.current\")"
+  }
+  input number {
+    set units [attr get units]
+    if {$units ne ""} {
+      code "\n# get input value for $path and convert to $units"
+      code "str <- rp_lib_get_string(io, \"$path.current\")"
+      code "$id <- rp_units_convert_double(str,\"$units\")"
+    } else {
+      code "\n# get input value for $path"
+      code "$id <- rp_lib_get_string(io, \"$path.current\")"
+    }
+  }
+  input * {
+    code "\n# get input value for $path"
+    code "$id <- rp_lib_get_string(io, \"$path.current\")"
+  }
+
+  output curve {
+    code "\n# save output value for $path"
+    code "# assumes output in vectors x and y"
+    code "str <- paste(sprintf(\"%g %g\\n\",x,y), collapse=\"\")"
+    code "rp_lib_put_string(io,\"$path.component.xy\",str,FALSE)"
+  }
+  output histogram {
+    code "\n# save output value for $path"
+    code "# assumes output in vectors x and y"
+    code "str <- paste(sprintf(\"%g %g\\n\",x,y), collapse=\"\")"
+    code "rp_lib_put_string(io,\"$path.component.xy\",str,FALSE)"
+  }
+  output * {
+    code "\n# save output value for $path"
+    code "rp_lib_put_string(io,\"$path.current\",$id,FALSE)"
+  }
+}
Index: /tags/1.6.0/builder/scripts/templates/ruby.tl
===================================================================
--- /tags/1.6.0/builder/scripts/templates/ruby.tl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/templates/ruby.tl	(revision 6168)
@@ -0,0 +1,94 @@
+# ----------------------------------------------------------------------
+#  LANGUAGE:  Ruby API
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+language "Ruby" {
+  extension ".rb"
+  command {ruby @tool/@@FILENAME@@ @driver}
+
+  main {# ----------------------------------------------------------------------
+#  MAIN PROGRAM - generated by the Rappture Builder
+# ----------------------------------------------------------------------
+require "Rappture"
+
+# open the XML file containing the run parameters
+io = Rappture.new(ARGV[0])
+
+#########################################################
+# Get input values from Rappture
+#########################################################
+@@INPUTS@@
+
+#########################################################
+#  Add your code here for the main body of your program
+#########################################################
+
+# spit out progress messages as you go along...
+io.progress(0, "Starting...")
+io.progress(5, "Loading data...")
+io.progress(50, "Half-way there")
+io.progress(100, "Done")
+
+#########################################################
+# Save output values back to Rappture
+#########################################################
+@@OUTPUTS@@
+
+io.result(0)
+}
+
+  input boolean {
+    code "\n# get input value for $path"
+    code "# returns value as string \"yes\" or \"no\""
+    code "str = io.get(\"$path.current\")"
+    code "$id = (str == \"yes\")"
+  }
+  input image {
+    code "\n# get input value for $path"
+    code "# returns base64-encoded image data"
+    code "$id = io.get(\"$path.current\")"
+  }
+  input number {
+    set units [attr get units]
+    if {$units ne ""} {
+      code "\n# get input value for $path and convert to $units"
+      code "str = io.get(\"$path.current\")"
+      code "$id = io.convert(str, \"$units\", Rappture::UNITS_OFF)"
+    } else {
+      code "\n# get input value for $path"
+      code "$id = io.get(\"$path.current\")"
+    }
+  }
+  input * {
+    code "\n# get input value for $path"
+    code "$id = io.get(\"$path.current\")"
+  }
+
+  output curve {
+    code "\n# save output value for $path"
+    code "# this shows just one (x,y) point -- modify as needed"
+    code "str = sprintf(\"%g %g\\n\", x, y)"
+    code "io.put(\"$path.component.xy\", str, Rappture::APPEND)"
+  }
+  output histogram {
+    code "\n# save output value for $path"
+    code "# this shows just one point -- modify as needed"
+    code "# (x,h,w) = x-coord, height of bar, and width of bar (optional)"
+    code "str = sprintf(\"%g %g %g\\n\", x, h, w)"
+    code "io.put(\"$path.component.xhw\", str, Rappture::APPEND)"
+  }
+  output image {
+    code "\n# save output value for $path"
+    code "# data should be base64-encoded image data"
+    code "io.put(\"$path.current\", imdata, Rappture::OVERWRITE)"
+  }
+  output * {
+    code "\n# save output value for $path"
+    code "io.put(\"$path.current\",$id, Rappture::OVERWRITE)"
+  }
+}
Index: /tags/1.6.0/builder/scripts/templates/tcl.tl
===================================================================
--- /tags/1.6.0/builder/scripts/templates/tcl.tl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/templates/tcl.tl	(revision 6168)
@@ -0,0 +1,94 @@
+# ----------------------------------------------------------------------
+#  LANGUAGE:  Tcl API
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+language "Tcl" {
+  extension ".tcl"
+  command {tclsh @tool/@@FILENAME@@ @driver}
+
+  main {# ----------------------------------------------------------------------
+#  MAIN PROGRAM - generated by the Rappture Builder
+# ----------------------------------------------------------------------
+package require Rappture
+package require Img
+
+# open the XML file containing the run parameters
+set io [Rappture::library [lindex $argv 0]]
+
+#########################################################
+# Get input values from Rappture
+#########################################################
+@@INPUTS@@
+
+#########################################################
+#  Add your code here for the main body of your program
+#########################################################
+
+# spit out progress messages as you go along...
+Rappture::Utils::progress 0 -mesg "Starting..."
+Rappture::Utils::progress 5 -mesg "Loading data..."
+Rappture::Utils::progress 50 -mesg "Half-way there"
+Rappture::Utils::progress 100 -mesg "Done"
+
+#########################################################
+# Save output values back to Rappture
+#########################################################
+@@OUTPUTS@@
+
+Rappture::result $io
+exit 0
+}
+
+  input boolean {
+    code "\n# get input value for $path"
+    code "# returns value as string \"yes\" or \"no\""
+    code "set $id \[\$io get $path.current\]"
+  }
+  input image {
+    code "\n# get input value for $path"
+    code "# returns base64-encoded image data"
+    code "set imdata \[\$io get $path.current\]"
+    code "set $id \[image create photo -data \$imdata\]"
+  }
+  input number {
+    set units [attr get units]
+    if {$units ne ""} {
+      code "\n# get input value for $path and convert to $units"
+      code "set str \[\$io get $path.current\]"
+      code "set $id \[Rappture::Units::convert \$str -to $units -units off\]"
+    } else {
+      code "\n# get input value for $path"
+      code "set $id \[\$io get $path.current\]"
+    }
+  }
+  input * {
+    code "\n# get input value for $path"
+    code "set $id \[\$io get $path.current\]"
+  }
+
+  output curve {
+    code "\n# save output value for $path"
+    code "# this shows just one (x,y) point -- modify as needed"
+    code "\$io put -append yes $path.component.xy \"\$x \$y\\n\""
+  }
+  output histogram {
+    code "\n# save output value for $path"
+    code "# this shows just one point -- modify as needed"
+    code "# (x,h,w) = x-coord, height of bar, and width of bar (optional)"
+    code "\$io put -append yes $path.component.xy \"\$x \$h \$w\\n\""
+  }
+  output image {
+    code "\n# save output value for $path"
+    code "# this assumes that \$imh is the handle for a Tk photo image"
+    code "\$io put $path.current \[\$imh data -format gif\]"
+  }
+  output * {
+    code "\n# save output value for $path"
+    code "\$io put $path.current \$$id"
+  }
+}
Index: /tags/1.6.0/builder/scripts/tool.rp
===================================================================
--- /tags/1.6.0/builder/scripts/tool.rp	(revision 6168)
+++ /tags/1.6.0/builder/scripts/tool.rp	(revision 6168)
@@ -0,0 +1,37 @@
+object tool {
+    help http://rappture.org/wiki/rappture_xml_elements
+
+    attr title -type string -path title -tooltip "Sets the title of your tool, which usually appears on the right-hand side of your tool when it first starts up."
+
+    attr description -type string:lines=6 -expand yes -path about -tooltip "A few paragraphs describing your tool, which usually appear just below the title on the right-hand side of your tool when it first starts up."
+
+    attr command -title "Program" -type language -path command -tooltip "Sets the programming language used to implement your underlying simulation tool.  This determines the command line that Rappture will use to invoke your tool."
+
+
+    check title {
+        if {[string length [string trim $attr(title)]] == 0} {
+            return [list warning "You should include a title that describes your tool.  This usually appears on the opening screen when the tool starts up."]
+        }
+    }
+
+    check description {
+        if {[string length [string trim $attr(description)]] == 0} {
+            return [list warning "You should include a brief description of your tool.  This usually appears on the opening screen when the tool starts up."]
+        }
+    }
+
+    check command {
+        set cmd [string trim $attr(command)]
+        if {[string length $cmd] == 0} {
+            return [list warning "You should set the program type or enter a custom command that will be used to invoke the simulation program.  This is necessary in order for the tool to compute any results.  If you select a programming language, the builder will let you save a skeleton program that you can use as a starting point."]
+        }
+        if {[string index $cmd 0] ne "!"} {
+            if {![regexp @tool $cmd]} {
+                return [list warning "The command string usually contains @tool, which represents the directory containing the tool.xml file.  The program is usually located relative to this directory.  Avoid hard-coded directory paths."]
+            }
+            if {![regexp @driver $cmd]} {
+                return [list warning "The command should contain the argument @driver, which represents the driver input file generated by Rappture."]
+            }
+        }
+    }
+}
Index: /tags/1.6.0/builder/scripts/tweener.tcl
===================================================================
--- /tags/1.6.0/builder/scripts/tweener.tcl	(revision 6168)
+++ /tags/1.6.0/builder/scripts/tweener.tcl	(revision 6168)
@@ -0,0 +1,117 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: tweener - used for animating smooth movements
+#
+#  Each Tweener executes a command repeatedly through a series of
+#  values from one extreme to another.  For example, the command may
+#  change the size of a rectangle, and the values may go from 10 to
+#  200.  The Tweener will make that happen over a specified interval
+#  of time.  The animation can be stopped or changed at any point,
+#  and if the Tweener is destroyed, the action is cancelled.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+namespace eval Rappture { # forward declaration }
+
+itcl::class Rappture::Tweener {
+    public variable from 0        ;# value goes from this...
+    public variable to   1        ;# ...to this
+    public variable duration 500  ;# during this time interval
+    public variable steps 10      ;# with this many steps
+    public variable command ""    ;# gets executed with %v for value
+    public variable finalize ""   ;# gets executed at the end to finish up
+
+    constructor {args} { eval configure $args }
+    destructor { # defined below }
+
+    public method go {{how "-resume"}}
+    public method stop {}
+
+    private method _next {}
+
+    private variable _nstep 0      ;# current step number
+    private variable _afterid ""   ;# pending after event
+}
+										
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tweener::destructor {} {
+    stop
+}
+
+# ----------------------------------------------------------------------
+# USAGE: go ?-resume|-restart?
+#
+# Causes the current animation to start running, either where it
+# left off (-resume) or fromt the beginning (-restart).
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tweener::go {{how -resume}} {
+    switch -- $how {
+        -resume {
+            # leave _nstep alone
+        }
+        -restart {
+            set _nstep 0
+        }
+        default {
+            error "bad option \"$how\": should be -restart or -resume"
+        }
+    }
+    stop
+    set _afterid [after idle [itcl::code $this _next]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: stop
+#
+# Causes the animation to stop by cancelling any pending after event.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tweener::stop {} {
+    if {"" != $_afterid} {
+	after cancel $_afterid
+        set _afterid ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _next
+#
+# Used internally to advance the animation.  Executes the -command
+# option with the current value substituted in place of any %v values.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tweener::_next {} {
+    set value [expr {($to-$from)/double($steps)*$_nstep + $from}]
+    set cmd $command
+    regsub -all %v $cmd $value cmd
+    if {[catch {uplevel #0 $cmd} result]} {
+        bgerror $result "\n    (while managing tweener $this)"
+    }
+
+    if {[incr _nstep] <= $steps} {
+        set delay [expr {round($duration/double($steps))}]
+        set _afterid [after $delay [itcl::code $this _next]]
+    } elseif {[string length $finalize] > 0} {
+        set cmd $finalize
+        regsub -all %v $cmd $value cmd
+        if {[catch {uplevel #0 $cmd} result]} {
+            bgerror $result "\n    (while finalizing tweener $this)"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -command
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Tweener::command {
+    if {[string length $command] == 0} {
+        stop
+    } else {
+        go -restart
+    }
+}
Index: /tags/1.6.0/cf/ac_python_devel.m4
===================================================================
--- /tags/1.6.0/cf/ac_python_devel.m4	(revision 6168)
+++ /tags/1.6.0/cf/ac_python_devel.m4	(revision 6168)
@@ -0,0 +1,265 @@
+# ===========================================================================
+#            http://autoconf-archive.cryp.to/ac_python_devel.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AC_PYTHON_DEVEL([version])
+#
+# DESCRIPTION
+#
+#   Note: Defines as a precious variable "PYTHON_VERSION". Don't override it
+#   in your configure.ac.
+#
+#   This macro checks for Python and tries to get the include path to
+#   'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LDFLAGS)
+#   output variables. It also exports $(PYTHON_EXTRA_LIBS) and
+#   $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code.
+#
+#   You can search for some particular version of Python by passing a
+#   parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please
+#   note that you *have* to pass also an operator along with the version to
+#   match, and pay special attention to the single quotes surrounding the
+#   version number. Don't use "PYTHON_VERSION" for this: that environment
+#   variable is declared as precious and thus reserved for the end-user.
+#
+#   This macro should work for all versions of Python >= 2.1.0. As an end
+#   user, you can disable the check for the python version by setting the
+#   PYTHON_NOVERSIONCHECK environment variable to something else than the
+#   empty string.
+#
+#   If you need to use this macro for an older Python version, please
+#   contact the authors. We're always open for feedback.
+#
+# LAST MODIFICATION
+#
+#   2008-04-12
+#
+# COPYLEFT
+#
+#   Copyright (c) 2008 Sebastian Huber <sebastian-huber@web.de>
+#   Copyright (c) 2008 Alan W. Irwin <irwin@beluga.phys.uvic.ca>
+#   Copyright (c) 2008 Rafael Laboissiere <rafael@laboissiere.net>
+#   Copyright (c) 2008 Andrew Collier <colliera@ukzn.ac.za>
+#   Copyright (c) 2008 Matteo Settenvini <matteo@member.fsf.org>
+#   Copyright (c) 2008 Horst Knorr <hk_classes@knoda.org>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Macro Archive. When you make and
+#   distribute a modified version of the Autoconf Macro, you may extend this
+#   special exception to the GPL to apply to your modified version as well.
+
+AC_DEFUN([AC_PYTHON_DEVEL],[
+	#
+	# Allow the use of a (user set) custom python version
+	#
+	AC_ARG_VAR([PYTHON_VERSION],[The installed Python
+		version to use, for example '2.3'. This string
+		will be appended to the Python interpreter
+		canonical name.])
+
+	AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]])
+	if test -z "$PYTHON"; then
+	   AC_MSG_ERROR([Cannot find python$PYTHON_VERSION in your system path])
+	   PYTHON_VERSION=""
+	fi
+
+	#
+	# Check for a version of Python >= 2.1.0
+	#
+	AC_MSG_CHECKING([for a version of Python >= '2.1.0'])
+	ac_supports_python_ver=`$PYTHON -c "import sys, string; \
+		ver = string.split(sys.version)[[0]]; \
+		print ver >= '2.1.0'"`
+	if test "$ac_supports_python_ver" != "True"; then
+		if test -z "$PYTHON_NOVERSIONCHECK"; then
+			AC_MSG_RESULT([no])
+			AC_MSG_FAILURE([
+This version of the AC@&t@_PYTHON_DEVEL macro
+doesn't work properly with versions of Python before
+2.1.0. You may need to re-run configure, setting the
+variables PYTHON_CPPFLAGS, PYTHON_LDFLAGS, PYTHON_SITE_PKG,
+PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand.
+Moreover, to disable this check, set PYTHON_NOVERSIONCHECK
+to something else than an empty string.
+])
+		else
+			AC_MSG_RESULT([skip at user request])
+		fi
+	else
+		AC_MSG_RESULT([yes])
+	fi
+
+	#
+	# if the macro parameter ``version'' is set, honour it
+	#
+	if test -n "$1"; then
+		AC_MSG_CHECKING([for a version of Python $1])
+		ac_supports_python_ver=`$PYTHON -c "import sys, string; \
+			ver = string.split(sys.version)[[0]]; \
+			print ver $1"`
+		if test "$ac_supports_python_ver" = "True"; then
+	   	   AC_MSG_RESULT([yes])
+		else
+			AC_MSG_RESULT([no])
+			AC_MSG_ERROR([this package requires Python $1.
+If you have it installed, but it isn't the default Python
+interpreter in your system path, please pass the PYTHON_VERSION
+variable to configure. See ``configure --help'' for reference.
+])
+			PYTHON_VERSION=""
+		fi
+	fi
+
+	#
+	# Check if you have distutils, else fail
+	#
+	AC_MSG_CHECKING([for the distutils Python package])
+	ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
+	if test -z "$ac_distutils_result"; then
+		AC_MSG_RESULT([yes])
+	else
+		AC_MSG_RESULT([no])
+		AC_MSG_ERROR([cannot import Python module "distutils".
+Please check your Python installation. The error was:
+$ac_distutils_result])
+		PYTHON_VERSION=""
+	fi
+
+	#
+	# Check for Python include path
+	#
+	AC_MSG_CHECKING([for Python include path])
+	if test -z "$PYTHON_CPPFLAGS"; then
+		python_path=`$PYTHON -c "import distutils.sysconfig; \
+           		print distutils.sysconfig.get_python_inc();"`
+		if test -n "${python_path}"; then
+		   	python_path="-I$python_path"
+		fi
+		PYTHON_CPPFLAGS=$python_path
+	fi
+	AC_MSG_RESULT([$PYTHON_CPPFLAGS])
+	AC_SUBST([PYTHON_CPPFLAGS])
+
+	#
+	# Check for Python library path
+	#
+	AC_MSG_CHECKING([for Python library path])
+	if test -z "$PYTHON_LDFLAGS"; then
+		# (makes two attempts to ensure we've got a version number
+		# from the interpreter)
+		py_version=`$PYTHON -c "from distutils.sysconfig import *; \
+			from string import join; \
+			print join(get_config_vars('VERSION'))"`
+		if test "$py_version" == "[None]"; then
+			if test -n "$PYTHON_VERSION"; then
+				py_version=$PYTHON_VERSION
+			else
+				py_version=`$PYTHON -c "import sys; \
+					print sys.version[[:3]]"`
+			fi
+		fi
+
+		PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \
+			from string import join; \
+			print '-L' + get_python_lib(0,1), \
+		      	'-lpython';"`$py_version
+	fi
+	AC_MSG_RESULT([$PYTHON_LDFLAGS])
+	AC_SUBST([PYTHON_LDFLAGS])
+
+	#
+	# Check for site packages
+	#
+	AC_MSG_CHECKING([for Python site-packages path])
+	if test -z "$PYTHON_SITE_PKG"; then
+		PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
+		        print distutils.sysconfig.get_python_lib(0,0);"`
+	fi
+	AC_MSG_RESULT([$PYTHON_SITE_PKG])
+	AC_SUBST([PYTHON_SITE_PKG])
+
+	#
+	# libraries which must be linked in when embedding
+	#
+	AC_MSG_CHECKING(python extra libraries)
+	if test -z "$PYTHON_EXTRA_LIBS"; then
+	   PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
+                conf = distutils.sysconfig.get_config_var; \
+                print conf('LOCALMODLIBS'), conf('LIBS')"`
+	fi
+	AC_MSG_RESULT([$PYTHON_EXTRA_LIBS])
+	AC_SUBST(PYTHON_EXTRA_LIBS)
+
+	#
+	# linking flags needed when embedding
+	#
+	AC_MSG_CHECKING(python extra linking flags)
+	if test -z "$PYTHON_EXTRA_LDFLAGS"; then
+		PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
+			conf = distutils.sysconfig.get_config_var; \
+			print conf('LINKFORSHARED')"`
+	fi
+	AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS])
+	AC_SUBST(PYTHON_EXTRA_LDFLAGS)
+
+	#
+	# final check to see if everything compiles alright
+	#
+	AC_MSG_CHECKING([consistency of all components of python development environment])
+	AC_LANG_PUSH([C])
+	# save current global flags
+	LIBS="$ac_save_LIBS $PYTHON_LDFLAGS"
+	CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS"
+	AC_TRY_LINK([
+		#include <Python.h>
+	],[
+		Py_Initialize();
+	],[pythonexists=yes],[pythonexists=no])
+
+	AC_MSG_RESULT([$pythonexists])
+
+        if test ! "$pythonexists" = "yes"; then
+	   AC_MSG_ERROR([
+  Could not link test program to Python. Maybe the main Python library has been
+  installed in some non-standard library path. If so, pass it to configure,
+  via the LDFLAGS environment variable.
+  Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib"
+  ============================================================================
+   ERROR!
+   You probably have to install the development version of the Python package
+   for your distribution.  The exact name of this package varies among them.
+  ============================================================================
+	   ])
+	  PYTHON_VERSION=""
+	fi
+	AC_LANG_POP
+	# turn back to default flags
+	CPPFLAGS="$ac_save_CPPFLAGS"
+	LIBS="$ac_save_LIBS"
+
+	#
+	# all done!
+	#
+])
Index: /tags/1.6.0/cf/ax_compare_version.m4
===================================================================
--- /tags/1.6.0/cf/ax_compare_version.m4	(revision 6168)
+++ /tags/1.6.0/cf/ax_compare_version.m4	(revision 6168)
@@ -0,0 +1,94 @@
+dnl #########################################################################
+AC_DEFUN([AX_COMPARE_VERSION], [
+  AC_PROG_AWK
+
+  # Used to indicate true or false condition
+  ax_compare_version=false
+
+  # Convert the two version strings to be compared into a format that
+  # allows a simple string comparison.  The end result is that a version
+  # string of the form 1.12.5-r617 will be converted to the form
+  # 0001001200050617.  In other words, each number is zero padded to four
+  # digits, and non digits are removed.
+  AS_VAR_PUSHDEF([A],[ax_compare_version_A])
+  A=`echo "$1" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \
+                     -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \
+                     -e 's/[[^0-9]]//g'`
+
+  AS_VAR_PUSHDEF([B],[ax_compare_version_B])
+  B=`echo "$3" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \
+                     -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \
+                     -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \
+                     -e 's/[[^0-9]]//g'`
+
+  dnl # In the case of le, ge, lt, and gt, the strings are sorted as necessary
+  dnl # then the first line is used to determine if the condition is true.
+  dnl # The sed right after the echo is to remove any indented white space.
+  m4_case(m4_tolower($2),
+  [lt],[
+    ax_compare_version=`echo "x$A
+x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/false/;s/x${B}/true/;1q"`
+  ],
+  [gt],[
+    ax_compare_version=`echo "x$A
+x$B" | sed 's/^ *//' | sort | sed "s/x${A}/false/;s/x${B}/true/;1q"`
+  ],
+  [le],[
+    ax_compare_version=`echo "x$A
+x$B" | sed 's/^ *//' | sort | sed "s/x${A}/true/;s/x${B}/false/;1q"`
+  ],
+  [ge],[
+    ax_compare_version=`echo "x$A
+x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/true/;s/x${B}/false/;1q"`
+  ],[
+    dnl Split the operator from the subversion count if present.
+    m4_bmatch(m4_substr($2,2),
+    [0],[
+      # A count of zero means use the length of the shorter version.
+      # Determine the number of characters in A and B.
+      ax_compare_version_len_A=`echo "$A" | $AWK '{print(length)}'`
+      ax_compare_version_len_B=`echo "$B" | $AWK '{print(length)}'`
+
+      # Set A to no more than B's length and B to no more than A's length.
+      A=`echo "$A" | sed "s/\(.\{$ax_compare_version_len_B\}\).*/\1/"`
+      B=`echo "$B" | sed "s/\(.\{$ax_compare_version_len_A\}\).*/\1/"`
+    ],
+    [[0-9]+],[
+      # A count greater than zero means use only that many subversions
+      A=`echo "$A" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"`
+      B=`echo "$B" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"`
+    ],
+    [.+],[
+      AC_WARNING(
+        [illegal OP numeric parameter: $2])
+    ],[])
+
+    # Pad zeros at end of numbers to make same length.
+    ax_compare_version_tmp_A="$A`echo $B | sed 's/./0/g'`"
+    B="$B`echo $A | sed 's/./0/g'`"
+    A="$ax_compare_version_tmp_A"
+
+    # Check for equality or inequality as necessary.
+    m4_case(m4_tolower(m4_substr($2,0,2)),
+    [eq],[
+      test "x$A" = "x$B" && ax_compare_version=true
+    ],
+    [ne],[
+      test "x$A" != "x$B" && ax_compare_version=true
+    ],[
+      AC_WARNING([illegal OP parameter: $2])
+    ])
+  ])
+
+  AS_VAR_POPDEF([A])dnl
+  AS_VAR_POPDEF([B])dnl
+
+  dnl # Execute ACTION-IF-TRUE / ACTION-IF-FALSE.
+  if test "$ax_compare_version" = "true" ; then
+    m4_ifvaln([$4],[$4],[:])dnl
+    m4_ifvaln([$5],[else $5])dnl
+  fi
+]) dnl AX_COMPARE_VERSION
Index: /tags/1.6.0/cf/ax_prog_ruby_version.m4
===================================================================
--- /tags/1.6.0/cf/ax_prog_ruby_version.m4	(revision 6168)
+++ /tags/1.6.0/cf/ax_prog_ruby_version.m4	(revision 6168)
@@ -0,0 +1,29 @@
+
+AC_DEFUN([AX_PROG_RUBY_VERSION],[
+    AC_REQUIRE([AC_PROG_SED])
+    AC_REQUIRE([AC_PROG_GREP])
+
+    AS_IF([test -n "$RUBY"],[
+        ax_ruby_version="$1"
+
+        AC_MSG_CHECKING([for ruby version])
+        changequote(<<,>>)
+        ruby_version=`$RUBY --version 2>&1 | $GREP "^ruby " | $SED -e 's/^.* \([0-9]*\.[0-9]*\.[0-9]*\) .*/\1/'`
+        changequote([,])
+        AC_MSG_RESULT($ruby_version)
+
+        AC_SUBST([RUBY_VERSION],[$ruby_version])
+
+        AX_COMPARE_VERSION([$ax_ruby_version],[le],[$ruby_version],[
+            :
+            $2
+        ],[
+            :
+            $3
+        ])
+    ],[
+        AC_MSG_WARN([could not find the ruby interpreter])
+        $3
+    ])
+])
+
Index: /tags/1.6.0/cf/ax_ruby_dev_flags.m4
===================================================================
--- /tags/1.6.0/cf/ax_ruby_dev_flags.m4	(revision 6168)
+++ /tags/1.6.0/cf/ax_ruby_dev_flags.m4	(revision 6168)
@@ -0,0 +1,89 @@
+
+AC_DEFUN([AX_RUBY_DEV_FLAGS],[
+    #
+    # Check for Ruby include path
+    #
+    AC_MSG_CHECKING([for Ruby include path])
+    if test -z "$RUBY_CPPFLAGS"; then
+        ruby_path=`$RUBY -rmkmf -e 'print Config::CONFIG[["archdir"]]'`
+        if test -n "${ruby_path}"; then
+                ruby_path="-I$ruby_path"
+        fi
+        RUBY_CPPFLAGS=$ruby_path
+    fi
+    AC_MSG_RESULT([$RUBY_CPPFLAGS])
+    AC_SUBST([RUBY_CPPFLAGS])
+
+    #
+    # Check for Ruby library path
+    #
+    AC_MSG_CHECKING([for Ruby library path])
+    if test -z "$RUBY_LDFLAGS"; then
+        RUBY_LDFLAGS=`$RUBY -rmkmf -e 'print Config::CONFIG[["LIBRUBYARG_SHARED"]]'`
+    fi
+    AC_MSG_RESULT([$RUBY_LDFLAGS])
+    AC_SUBST([RUBY_LDFLAGS])
+
+    #
+    # Check for site packages
+    #
+    AC_MSG_CHECKING([for Ruby site-packages path])
+    if test -z "$RUBY_SITE_PKG"; then
+        RUBY_SITE_PKG=`$RUBY -rmkmf -e 'print Config::CONFIG[["sitearchdir"]]'`
+    fi
+    AC_MSG_RESULT([$RUBY_SITE_PKG])
+    AC_SUBST([RUBY_SITE_PKG])
+
+    #
+    # libraries which must be linked in when embedding
+    #
+    AC_MSG_CHECKING(ruby extra libraries)
+    if test -z "$RUBY_EXTRA_LIBS"; then
+       RUBY_EXTRA_LIBS=`$RUBY -rmkmf -e 'print Config::CONFIG[["SOLIBS"]]'`
+    fi
+    AC_MSG_RESULT([$RUBY_EXTRA_LIBS])
+    AC_SUBST(RUBY_EXTRA_LIBS)
+
+    #
+    # linking flags needed when embedding
+    # (is it even needed for Ruby?)
+    #
+    # AC_MSG_CHECKING(ruby extra linking flags)
+    # if test -z "$RUBY_EXTRA_LDFLAGS"; then
+    # RUBY_EXTRA_LDFLAGS=`$RUBY -rmkmf -e 'print Config::CONFIG[["LINKFORSHARED"]]'`
+    # fi
+    # AC_MSG_RESULT([$RUBY_EXTRA_LDFLAGS])
+    # AC_SUBST(RUBY_EXTRA_LDFLAGS)
+
+    # this flags breaks ruby.h, and is sometimes defined by KDE m4 macros
+    CFLAGS="`echo "$CFLAGS" | sed -e 's/-std=iso9899:1990//g;'`"
+    #
+    # final check to see if everything compiles alright
+    #
+    AC_MSG_CHECKING([consistency of all components of ruby development environment])
+    AC_LANG_PUSH([C])
+    # save current global flags
+    ac_save_LIBS="$LIBS"
+    LIBS="$ac_save_LIBS $RUBY_LDFLAGS"
+    ac_save_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$ac_save_CPPFLAGS $RUBY_CPPFLAGS"
+    AC_TRY_LINK([
+        #include <ruby.h>
+    ],[
+        ruby_init();
+    ],[rubyexists=yes],[rubyexists=no])
+
+    AC_MSG_RESULT([$rubyexists])
+
+    if test "$rubyexists" = "no"; then
+      HAVE_RUBY_DEVEL="no"
+    fi
+    AC_LANG_POP
+    # turn back to default flags
+    CPPFLAGS="$ac_save_CPPFLAGS"
+    LIBS="$ac_save_LIBS"
+
+    #
+    # all done!
+    #
+])
Index: /tags/1.6.0/cf/ax_ruby_version.m4
===================================================================
--- /tags/1.6.0/cf/ax_ruby_version.m4	(revision 6168)
+++ /tags/1.6.0/cf/ax_ruby_version.m4	(revision 6168)
@@ -0,0 +1,29 @@
+
+AC_DEFUN([AX_PROG_RUBY_VERSION],[
+    AC_REQUIRE([AC_PROG_SED])
+    AC_REQUIRE([AC_PROG_GREP])
+
+    AS_IF([test -n "$RUBY"],[
+        ax_ruby_version="$1"
+
+        AC_MSG_CHECKING([for ruby version])
+        changequote(<<,>>)
+        ruby_version=`$RUBY --version 2>&1 | $GREP "^ruby " | $SED -e 's/^.* \([0-9]*\.[0-9]*\.[0-9]*\) .*/\1/'`
+        changequote([,])
+        AC_MSG_RESULT($ruby_version)
+
+        AC_SUBST([RUBY_VERSION],[$ruby_version])
+
+        AX_COMPARE_VERSION([$ax_ruby_version],[le],[$ruby_version],[
+            :
+            $2
+        ],[
+            :
+            $3
+        ])
+    ],[
+        AC_MSG_WARN([could not find the ruby interpreter])
+        $3
+    ])
+])
+
Index: /tags/1.6.0/cf/config.guess
===================================================================
--- /tags/1.6.0/cf/config.guess	(revision 6168)
+++ /tags/1.6.0/cf/config.guess	(revision 6168)
@@ -0,0 +1,1526 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   Free Software Foundation, Inc.
+
+timestamp='2008-04-14'
+
+# 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., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, 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 <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  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 <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 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 ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # 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 "$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 ; set_cc_for_build= ;'
+
+# 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
+
+# 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 ;;
+	    sh5el) machine=sh5le-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 ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    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 ;;
+    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 ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    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 ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    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 ;;
+	esac ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    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 ;;
+    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 ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    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 ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # 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 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* 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 &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    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 ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????: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 ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    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 ;;
+    *: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 <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	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 ;;
+    *:AIX:*:[456])
+	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 ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    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 <stdlib.h>
+              #include <unistd.h>
+
+              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
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep __LP64__ >/dev/null
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	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 && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    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 ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    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 ;;
+    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 ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	case ${UNAME_MACHINE} in
+	    pc98)
+		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:windows32*:*)
+    	# uname -m includes "-pc" on this system.
+    	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:[3456]*)
+    	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    EM64T | authenticamd)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    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 ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-gnu
+	else
+	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+    	echo frv-unknown-linux-gnu
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    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 | sed -n '
+	    /^CPU/{
+		s: ::g
+		p
+	    }'`"
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    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 | sed -n '
+	    /^CPU/{
+		s: ::g
+		p
+	    }'`"
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    or32:Linux:*:*)
+	echo or32-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    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}-unknown-linux-gnu${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit ;;
+    xtensa*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    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}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^LIBC/{
+		s: ::g
+		p
+	    }'`"
+	test x"${LIBC}" != x && {
+		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+		exit
+	}
+	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+	;;
+    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 ;;
+    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 ;;
+    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 ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    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 ;;
+    i*86:*:5:[678]*)
+    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	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 ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/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 ;;
+    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 ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    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 ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    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; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && { echo i486-ncr-sysv4; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *: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 ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    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 ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *: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 ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *: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 ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#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 <sys/param.h>
+  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\n"); 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 <sys/param.h>
+#  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 && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# 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 ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> 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:
Index: /tags/1.6.0/cf/config.sub
===================================================================
--- /tags/1.6.0/cf/config.sub	(revision 6168)
+++ /tags/1.6.0/cf/config.sub	(revision 6168)
@@ -0,0 +1,1669 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   Free Software Foundation, Inc.
+
+timestamp='2008-04-14'
+
+# 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., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, 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 <config-patches@gnu.org>.  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 <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 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 ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # 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 ;;
+
+    * )
+       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-newlib* | 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
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-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/'`
+		;;
+	-sco5v6*)
+		# 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 | avr32 \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fido | fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | mcore | mep | metag \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64octeon | mips64octeonel \
+	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| mt \
+	| msp430 \
+	| nios | nios2 \
+	| ns16k | ns32k \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu | strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xc16x | 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)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	# 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-* | avr32-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64octeon-* | mips64octeonel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nios-* | nios2-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=$basic_machine-unknown
+		;;
+	# 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
+		;;
+	blackfin)
+		basic_machine=bfin-unknown
+		os=-linux
+		;;
+	blackfin-*)
+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	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
+		;;
+	cr16)
+		basic_machine=cr16-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
+		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
+	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
+		;;
+	m68knommu)
+		basic_machine=m68k-unknown
+		os=-linux
+		;;
+	m68knommu-*)
+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	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
+		;;
+	mingw32ce)
+		basic_machine=arm-unknown
+		os=-mingw32ce
+		;;
+	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
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	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
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	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
+		;;
+	parisc)
+		basic_machine=hppa-unknown
+		os=-linux
+		;;
+	parisc-*)
+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	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
+		;;
+	rdos)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	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
+		;;
+	sde)
+		basic_machine=mipsisa32-sde
+		os=-elf
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh5el)
+		basic_machine=sh5le-unknown
+		;;
+	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
+		;;
+	tile*)
+		basic_machine=tile-unknown
+		os=-linux-gnu
+		;;
+	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
+		;;
+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		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* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-newlib* | -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* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+	# 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* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-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
+		;;
+	-dicos*)
+		os=-dicos
+		;;
+	-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
+        score-*)
+		os=-elf
+		;;
+        spu-*)
+		os=-elf
+		;;
+	*-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
+		;;
+        mep-*)
+		os=-elf
+		;;
+	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
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-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
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
Index: /tags/1.6.0/cf/install-sh
===================================================================
--- /tags/1.6.0/cf/install-sh	(revision 6168)
+++ /tags/1.6.0/cf/install-sh	(revision 6168)
@@ -0,0 +1,269 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+#
+# 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}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd="$cpprog"
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd="$stripprog"
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "install:	no input file specified"
+	exit 1
+else
+	true
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+	
+	if [ -d $dst ]; then
+		instcmd=:
+		chmodcmd=""
+	else
+		instcmd=mkdir
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f $src -o -d $src ]
+	then
+		true
+	else
+		echo "install:  $src does not exist"
+		exit 1
+	fi
+	
+	if [ x"$dst" = x ]
+	then
+		echo "install:	no destination specified"
+		exit 1
+	else
+		true
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d $dst ]
+	then
+		dst="$dst"/`basename $src`
+	else
+		true
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS=' 	
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp="${pathcomp}${1}"
+	shift
+
+	if [ ! -d "${pathcomp}" ] ;
+        then
+		$mkdirprog "${pathcomp}"
+	else
+		true
+	fi
+
+	pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd $dst &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		dstfile=`basename $dst $transformbasename | 
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		true
+	fi
+
+# Make a temp file name in the proper directory.
+
+	dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd $src $dsttmp &&
+
+	trap "rm -f ${dsttmp}" 0 &&
+
+# 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 $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+	$doit $rmcmd -f $dstdir/$dstfile &&
+	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+
+fi &&
+
+
+exit 0
Index: /tags/1.6.0/cf/mkindex.tcl
===================================================================
--- /tags/1.6.0/cf/mkindex.tcl	(revision 6168)
+++ /tags/1.6.0/cf/mkindex.tcl	(revision 6168)
@@ -0,0 +1,77 @@
+# ----------------------------------------------------------------------
+#  mkindex.tcl
+#
+#  This utility freshens up the tclIndex file in a scripts directory.
+#    USAGE:  tclsh mkindex.tcl ?<directory> <directory> ...?
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl  ;# include itcl constructs in the index
+
+proc auto_mkindex { srcdir outfile patterns } {
+    global errorCode errorInfo
+
+    if {[interp issafe]} {
+        error "can't generate index within safe interpreter"
+    }
+
+    set fid [open $outfile w]
+
+    set oldDir [pwd]
+    cd $srcdir
+    set srcdir [pwd]
+
+    append index "# Tcl autoload index file, version 2.0\n"
+    append index "# This file is generated by the \"auto_mkindex\" command\n"
+    append index "# and sourced to set up indexing information for one or\n"
+    append index "# more commands.  Typically each line is a command that\n"
+    append index "# sets an element in the auto_index array, where the\n"
+    append index "# element name is the name of a command and the value is\n"
+    append index "# a script that loads the command.\n\n"
+    if {$patterns == ""} {
+        set patterns *.tcl
+    }
+    auto_mkindex_parser::init
+    foreach file [eval glob $patterns] {
+        if {[catch {auto_mkindex_parser::mkindex $file} msg] == 0} {
+            append index $msg
+        } else {
+            set code $errorCode
+            set info $errorInfo
+            cd $oldDir
+            error $msg $info $code
+        }
+    }
+    auto_mkindex_parser::cleanup
+    puts -nonewline $fid $index
+    close $fid
+    cd $oldDir
+}
+
+set outfile "tclIndex"
+set srcdir  "."
+set args {}
+for {set i 0} { $i < [llength $argv] } { incr i } {
+    set arg [lindex $argv $i]
+    if { $arg == "--outfile" } {
+	incr i
+	set outfile [lindex $argv $i]
+	continue
+    } elseif { $arg == "--srcdir" } {
+	incr i
+	set srcdir [lindex $argv $i]
+	continue
+    }
+    lappend args $arg
+}
+
+auto_mkindex $srcdir $outfile $args
+if { ![file exists $outfile] } {
+    exit 1
+} 
+exit 0
Index: /tags/1.6.0/cf/mkinstalldirs
===================================================================
--- /tags/1.6.0/cf/mkinstalldirs	(revision 6168)
+++ /tags/1.6.0/cf/mkinstalldirs	(revision 6168)
@@ -0,0 +1,40 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+# $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $
+
+errstatus=0
+
+for file
+do
+   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+   shift
+
+   pathcomp=
+   for d
+   do
+     pathcomp="$pathcomp$d"
+     case "$pathcomp" in
+       -* ) pathcomp=./$pathcomp ;;
+     esac
+
+     if test ! -d "$pathcomp"; then
+        echo "mkdir $pathcomp"
+
+        mkdir "$pathcomp" || lasterr=$?
+
+        if test ! -d "$pathcomp"; then
+  	  errstatus=$lasterr
+        fi
+     fi
+
+     pathcomp="$pathcomp/"
+   done
+done
+
+exit $errstatus
+
+# mkinstalldirs ends here
Index: /tags/1.6.0/cf/mkobjects.tcl
===================================================================
--- /tags/1.6.0/cf/mkobjects.tcl	(revision 6168)
+++ /tags/1.6.0/cf/mkobjects.tcl	(revision 6168)
@@ -0,0 +1,47 @@
+# ----------------------------------------------------------------------
+#  mkobjects.tcl
+#
+#  This utility is similar to mkindex.tcl, but it searches for files
+#  associated with Rappture object classes and adds them to the
+#  existing tclIndex file, which should have been built by mkindex.tcl
+#    USAGE:  tclsh mkobjects.tcl --srcdir <dir> <type> <type> ...
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+set outfile "tclIndex"
+set srcdir  "."
+set args {}
+for {set i 0} {$i < [llength $argv]} {incr i} {
+    set arg [lindex $argv $i]
+    if {$arg eq "--srcdir"} {
+	incr i
+	set srcdir [lindex $argv $i]
+	continue
+    }
+    lappend args $arg
+}
+
+if {![file exists $outfile]} {
+    puts stderr "can't find tclIndex file to update"
+    exit 1
+}
+
+set fid [open $outfile a]
+puts $fid "\n# object viewers"
+foreach type $args {
+    foreach dir {input output} {
+        set fname "$type$dir.tcl"
+        set class "::Rappture::objects::[string totitle $type][string totitle $dir]"
+        if {[file exists [file join $srcdir objects $type $fname]]} {
+            puts $fid "set auto_index($class) \[list source \[file join \$dir objects $type $fname\]\]"
+        }
+    }
+}
+close $fid
+
+exit 0
Index: /tags/1.6.0/cf/rpLangJava.m4
===================================================================
--- /tags/1.6.0/cf/rpLangJava.m4	(revision 6168)
+++ /tags/1.6.0/cf/rpLangJava.m4	(revision 6168)
@@ -0,0 +1,55 @@
+AC_DEFUN([RP_LANG_JAVA],[
+AC_ARG_WITH([java],
+    [AS_HELP_STRING([--with-java[=DIR]],[location of java @<:@default=yes@:>@])],
+    [],
+    [with_java=yes])
+JAVA=""
+JAVAH=""
+JAVAC=""
+JAVA_DEV_PKG="no"
+
+if test "${with_java}" != "no" ; then
+  if test "${with_java}" = "yes" ; then
+    AC_PATH_PROG(JAVA,  java)
+    AC_PATH_PROG(JAVAC, javac)
+    AC_PATH_PROG(JAVAH, javah)
+  else
+    AC_PATH_PROG(JAVA,  java,  [], [${with_java}/bin:${with_java}])
+    AC_PATH_PROG(JAVAC, javac, [], [${with_java}/bin:${with_java}])
+    AC_PATH_PROG(JAVAH, javah, [], [${with_java}/bin:${with_java}])
+  fi
+fi
+JDK=
+JAVA_INC_DIR=
+JAVA_INC_SPEC=
+
+# If java exists, let's look for the jni.h file.
+if test "x${JAVA}" != "x" ; then
+  for d in \
+   ${with_java} \
+   ${JAVA_HOME} \
+   /apps/java/jdk1.6* \
+   /opt/sun-jdk-1.6* \
+   /opt/icedtea6-* \
+   /opt/sun-jdk-1.5* \
+   /usr/lib/jvm/*sun* \
+   /usr/lib/jvm/*icedtea* \
+   /usr/lib/jvm/*openjdk*
+  do
+    if test -r "${d}/include/jni.h" ; then
+      JDK=${d}
+      JAVA_HOME=$JDK
+      JAVA_INC_DIR=${JDK}/include
+      JAVA_INC_SPEC="-I${JDK}/include -I${JDK}/include/linux"
+      break;
+    fi
+    if test -r "${d}/Headers/jni.h" ; then
+      JDK=${d}
+      JAVA_HOME=$JDK
+      JAVA_INC_DIR=${JDK}/Headers
+      JAVA_INC_SPEC="-I${JDK}/Headers -I${JDK}/Headers/macos"
+      break;
+    fi
+  done
+fi
+])
Index: /tags/1.6.0/cf/rpLangMatlab.m4
===================================================================
--- /tags/1.6.0/cf/rpLangMatlab.m4	(revision 6168)
+++ /tags/1.6.0/cf/rpLangMatlab.m4	(revision 6168)
@@ -0,0 +1,43 @@
+AC_DEFUN([RP_LANG_MATLAB],[
+AC_ARG_WITH(
+    [matlab],
+    [AS_HELP_STRING([--with-matlab[=DIR]],
+        [location of matlab and mex compiler @<:@default=yes@:>@])],
+    [],
+    [with_matlab=yes])
+
+MCC=""
+MEX=""
+MEX_ARCH=""
+MEXEXT=""
+MATLAB=
+if test "$with_matlab" != "no" ; then
+  if test "$with_matlab" = "yes" ; then
+    AC_PATH_PROG(MATLAB, matlab)
+  else
+    AC_PATH_PROG(MATLAB, matlab, [], [${with_matlab}/bin:${with_matlab}])
+  fi
+fi
+
+if test "x$MATLAB" != "x" ; then
+  # Found matlab.  May be a symlink to the real binary.  Run "matlab -e"
+  # to tell where matlab is installed.
+
+  matlab_bindir=`${MATLAB} -e | grep "MATLAB=" | sed s/MATLAB=//`/bin
+
+  # Now see if we can find "mex" or "mexext" there.
+  AC_PATH_PROG(MEX, mex, [], [${matlab_bindir}])
+  AC_PATH_PROG(MEXEXT, mexext, [], [${matlab_bindir}])
+
+  # Run "mexext" to get the expected module extension for this platform.
+  AC_MSG_CHECKING([for mex extension])
+  if test "x$MEXEXT" != "x" ; then
+    MEXEXT=`$MEXEXT`
+  else
+    MEXEXT="mexglx"
+  fi
+  AC_MSG_RESULT([$MEXEXT])
+  AC_PATH_PROG(MCC, mcc, [], [${matlab_bindir}])
+  AC_MSG_CHECKING([for mcc extension])
+fi
+])
Index: /tags/1.6.0/cf/rpLangOctave.m4
===================================================================
--- /tags/1.6.0/cf/rpLangOctave.m4	(revision 6168)
+++ /tags/1.6.0/cf/rpLangOctave.m4	(revision 6168)
@@ -0,0 +1,114 @@
+
+#
+# Octave variables:
+#
+#	OCTAVE			Path to default octave executable.  Will use
+#				to determine the version.
+#	OCTAVE_VERSION		Full version of octave (X.X.X).  Used in 
+#				Makefiles to indicate if we are building 
+#				the octave language bindings.  The empty
+#				string indicates octave is not available.
+#	OCTAVE_VERSION_MAJOR	Single verion number of octave.  Used in 
+#				rappture.env scripts to indicate how to set 
+#				OCTAVE_PATH and OCTAVE_LOADPATH variables.
+#	MKOCTFILE		Path to the default octave compiler.  This
+#				variable isn't used directly.  Either 
+#				MKOCTFILE2 or MKOCTFILE3 will be set to its
+#				value.
+#	MKOCTFILE2		Path to octave version 2 compiler.
+#	MKOCTFILE3		Path to octave version 3 compiler.
+#
+
+# Standard octave search (use the installed version of octave)
+AC_DEFUN([RP_LANG_OCTAVE],[
+AC_ARG_WITH(
+    [octave],
+    [AS_HELP_STRING([--with-octave[=DIR]],
+        [path of default octave compiler `mkoctfile' @<:@default=yes@:>@])],
+    [],
+    [with_octave=yes])
+
+OCTAVE=
+OCTAVE_VERSION=
+OCTAVE_VERSION_MAJOR=
+MKOCTFILE2=
+MKOCTFILE3=
+
+if test "$with_octave" != "no" ; then
+  if test "$with_octave" = "yes" ; then
+    AC_PATH_PROG(OCTAVE, octave)
+    AC_PATH_PROG(MKOCTFILE, mkoctfile)
+  else
+    OCTAVE=$with_octave
+    MKOCTFILE=`dirname $with_octave`/mkoctfile
+  fi
+fi
+
+if test "x${OCTAVE}" != "x" ; then 
+  OCTAVE_VERSION=`${OCTAVE} -v | grep version | cut -d' ' -f4`
+  OCTAVE_VERSION_MAJOR=`echo ${OCTAVE_VERSION} | cut -d'.' -f1`
+  if test "${OCTAVE_VERSION_MAJOR}" == "3" ; then
+    OCTAVE3=$OCTAVE
+    MKOCTFILE3=$MKOCTFILE
+  fi
+  if test "${OCTAVE_VERSION_MAJOR}" == "2" ; then
+    OCTAVE2=$OCTAVE
+    MKOCTFILE2=$MKOCTFILE
+  fi
+fi
+
+#
+# Check for octave3 before octave2 so that we can override the 
+# OCTAVE_VERSION variables.  
+#
+# Rappture doesn't normally really support both octave2 and octave3 
+# simultaneously.  NANOhub has a hacked version of octave3 that 
+# looks for OCTAVE_LOADPATH before looking at OCTAVE_PATH (i.e. 
+# OCTAVE_PATH tells octave2 where to load the rappture bindings 
+# and OCTAVE_LOADPATH tells octave3 where to load).
+#
+# Usually you will have installed either octave2 or octave3, but 
+# not both.  
+#
+
+# Check if octave3 was designated *in addition* to the installed version.
+# This can override the default version if they are the same versions.
+
+AC_ARG_WITH(
+    [mkoctfile3],
+    [AS_HELP_STRING([--with-mkoctfile3[=DIR]],
+        [path of octave compiler `mkoctfile' @<:@default=no@:>@])],
+    [],
+    [with_mkoctfile3=no])
+
+if test "$with_mkoctfile3" != "no" ; then
+  if test "$with_mkoctfile3" = "yes" ; then
+    AC_PATH_PROG(mkoctfile3, mkoctfile)
+  else 
+    MKOCTFILE3=$with_mkoctfile3
+  fi
+  OCTAVE_VERSION=`${MKOCTFILE3} --version 2>&1 | cut -d' ' -f3`
+  OCTAVE_VERSION_MAJOR=`echo ${OCTAVE_VERSION} | cut -d'.' -f1`
+fi
+
+# Check if mkoctfile2 was designated *in addition* to the installed version.
+# This can override the default version if they are the same versions.
+AC_ARG_WITH(
+    [mkoctfile2],
+    [AS_HELP_STRING([--with-mkoctfile2[=DIR]],
+        [path of octave compiler `mkoctfile' @<:@default=no@:>@])],
+    [],
+    [with_mkoctfile2=no])
+
+if test "$with_mkoctfile2" != "no" ; then
+  if test "$with_mkoctfile2" = "yes" ; then
+    AC_PATH_PROG(mkoctfile2, mkoctfile)
+  else 
+    MKOCTFILE2=$with_mkoctfile2
+  fi
+  # Have to use octave to get a version, instead of mkoctfile.
+  octave=`dirname $MKOCTFILE2`/octave
+  OCTAVE_VERSION=`${octave} -v | grep version | cut -d' ' -f4`
+  OCTAVE_VERSION_MAJOR=`echo ${OCTAVE_VERSION} | cut -d'.' -f1`
+fi
+])
Index: /tags/1.6.0/cf/rpLangPerl.m4
===================================================================
--- /tags/1.6.0/cf/rpLangPerl.m4	(revision 6168)
+++ /tags/1.6.0/cf/rpLangPerl.m4	(revision 6168)
@@ -0,0 +1,45 @@
+
+AC_DEFUN([RP_LANG_PERL],[
+AC_ARG_WITH(
+    [perl],
+    [AS_HELP_STRING([--with-perl[=DIR]], [location of perl @<:@default=yes@:>@])],
+    [],
+    [with_perl=yes])
+
+PERL=
+PERL_INCLUDES=
+PERL_ARCHLIB=
+PERL_ARCHLIBEXP=
+PERL_VERSION=
+PERL_VENDORLIB=
+PERL_PRIVLIB=
+PERL_CPPFLAGS=
+PERL_CCFlAGS=
+PERL_VERSION_RV=
+XSUBPP=
+PERL_LIBSPEC=
+if test "$with_perl" != "no" ; then
+  if test "$with_perl" != "yes" ; then 
+    AC_PATH_PROG(PERL, perl, [], [$with_perl/bin:$with_perl])
+    AC_PATH_PROG(XSUBPP, xsubpp, [], [$with_perl/bin:$with_perl])
+  else
+    AC_PATH_PROG(PERL, perl)
+    AC_PATH_PROG(XSUBPP, xsubpp)
+  fi
+  if test "x${PERL}" != "x" ; then 
+    PERL_ARCHLIB=`${PERL} -MConfig -e 'print $Config{archlib}'`
+    PERL_VERSION=`${PERL} -MConfig -e 'print $Config{version}'`
+    PERL_CCFLAGS=`${PERL} -MConfig -e 'print $Config{ccflags}'`
+    PERL_CPPFLAGS=`${PERL} -MConfig -e 'print $Config{cppflags}'`
+    PERL_VENDORLIB=`${PERL} -MConfig -e 'print $Config{vendorlib}'`
+    PERL_PRIVLIB=`${PERL} -MConfig -e 'print $Config{privlib}'`
+    PERL_INSTALLARCHLIB=`${PERL} -MConfig -e 'print $Config{installarchlib}'`
+    PERL_ARCHLIBEXP=`${PERL} -MConfig -e 'print $Config{archlibexp}'`
+    PERL_VERSION_RV=`echo ${PERL_VERSION} | cut -d'.' -f1-2`
+    # libperl may or may not be installed.  Check for its existence.
+    if test -f "${PERL_ARCHLIBEXP}/CORE/libperl${SHLIB_SUFFIX}" ; then 
+      PERL_LIBSPEC="-L${PERL_ARCHLIBEXP}/CORE -lperl"
+    fi
+  fi
+fi
+])
Index: /tags/1.6.0/cf/rpLangPython.m4
===================================================================
--- /tags/1.6.0/cf/rpLangPython.m4	(revision 6168)
+++ /tags/1.6.0/cf/rpLangPython.m4	(revision 6168)
@@ -0,0 +1,70 @@
+
+AC_DEFUN([RP_LANG_PYTHON],[
+PYTHON=""
+PYTHON_CFLAGS=""
+PYTHON_CPPFLAGS=""
+PYTHON_DISTUTILS=""
+PYTHON_INCLUDES=""
+PYTHON_LDFLAGS=""
+PYTHON_LIB=""
+PYTHON_LIBDIR=""
+PYTHON_SITE_DIR=""
+PYTHON_SITE_PACKAGES=""
+PYTHON_VERSION=""
+pythondir=""
+AC_ARG_WITH([python],
+    [AS_HELP_STRING([--with-python[=DIR]],[location of python @<:@default=yes@:>@])],
+    [],
+    [with_python=yes])
+
+if test "$with_python" != "no" ; then
+  if test "$with_python" = "yes" ; then
+    AC_PATH_PROG(PYTHON, python python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5)
+  else
+    AC_PATH_PROG(PYTHON, python, [], [${with_python}/bin:${with_python}])
+  fi
+  AC_MSG_CHECKING([for Python version])
+  if test "x${PYTHON}" != "x"; then
+    PYTHON_VERSION=`${PYTHON} -c "import sys; print sys.version[[0:3]]"`
+  fi
+  AC_MSG_RESULT([$PYTHON_VERSION])
+fi
+
+if test "x${PYTHON_VERSION}" != "x"; then
+  PYTHON_INCLUDES=$incdir
+  AC_MSG_CHECKING([for Python distutils])
+  PYTHON_DISTUTILS=""
+  ${PYTHON} -c "from distutils.core import setup; setup(name='test')" \
+        build build_ext 2>&1 > /dev/null
+  if test $? = 0 ; then
+    PYTHON_DISTUTILS="yes"
+  fi
+  AC_MSG_RESULT([$PYTHON_DISTUTILS])
+  if test "${PYTHON_DISTUTILS}" = "yes" ; then
+    PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib()"`
+    #
+    # Check for Python include path
+    #
+    AC_MSG_CHECKING([path to Python headers])
+    PYTHON_INCDIR=`${PYTHON} -c "import distutils.sysconfig; \
+     print distutils.sysconfig.get_python_inc();"`
+    AC_MSG_RESULT([$PYTHON_INCDIR])
+    #
+    # Python distutils found, get settings from python directly
+    #
+    PYTHON_SITE_DIR="`${PYTHON} -c 'from distutils import sysconfig; print sysconfig.get_python_lib(0);'`"
+    
+    PYTHON_CFLAGS="`$PYTHON -c 'from distutils import sysconfig; flags = [[\"-I\" + sysconfig.get_python_inc(0), \"-I\" + sysconfig.get_python_inc(1), \" \".join(sysconfig.get_config_var(\"CFLAGS\").split())]]; print \" \".join(flags);'`"
+    PYTHON_LDFLAGS="`$PYTHON -c 'from distutils import sysconfig; libs = sysconfig.get_config_var(\"LIBS\").split() + sysconfig.get_config_var(\"SYSLIBS\").split(); libs.append(\"-lpython\"+sysconfig.get_config_var(\"VERSION\")); print \" \".join(libs);'`"
+    PYTHON_LIB="`$PYTHON -c 'from distutils import sysconfig; print \"python\" + sysconfig.get_config_var(\"VERSION\");'`"
+    PYTHON_LIBDIR="`$PYTHON -c 'from distutils import sysconfig; print sysconfig.get_config_var(\"LIBDIR\");'`"
+    save_CPPFLAGS=$CPPFLAGS
+    CPPFLAGS="$CPPFLAGS -I${PYTHON_INCDIR}"
+    AC_CHECK_HEADERS([Python.h], [found=yes], [found=no])
+    CPPFLAGS=$save_CPPFLAGS
+    if test "$found" = "no" ; then
+      PYTHON_DISTUTILS=""
+    fi
+  fi
+fi
+])
Index: /tags/1.6.0/cf/rpLangR.m4
===================================================================
--- /tags/1.6.0/cf/rpLangR.m4	(revision 6168)
+++ /tags/1.6.0/cf/rpLangR.m4	(revision 6168)
@@ -0,0 +1,18 @@
+AC_DEFUN([RP_LANG_R],[
+AC_ARG_WITH(
+    [R],
+    [AS_HELP_STRING([--with-R[=DIR]],
+        [location of R interpreter @<:@default=yes@:>@])],
+    [],
+    [with_R=yes])
+
+R=""
+if test "$with_R" != "no" ; then
+  if test "$with_R" = "yes" ; then
+    AC_PATH_PROG(R, R)
+  else
+    AC_PATH_PROG(R, R, [], [${with_R}/bin:${with_R}])
+  fi
+fi
+
+])
Index: /tags/1.6.0/cf/rpLangRuby.m4
===================================================================
--- /tags/1.6.0/cf/rpLangRuby.m4	(revision 6168)
+++ /tags/1.6.0/cf/rpLangRuby.m4	(revision 6168)
@@ -0,0 +1,138 @@
+dnl Get a key from ruby's configuration table
+AC_DEFUN([RUBY_CONFIG], [
+          $RUBY -rrbconfig -e "puts(Config::CONFIG[['$1']] || '')"])
+
+AC_DEFUN([RP_LANG_RUBY], [
+
+AC_ARG_WITH(
+    ruby,
+    AC_HELP_STRING(
+     --with-ruby=PATH,
+     [ path to the ruby interpreter [[ruby]] ]),
+    [ RUBY=$withval ],
+    [ RUBY=ruby ])
+AC_ARG_WITH(
+    ruby_sitelibdir,
+    AC_HELP_STRING(
+     --with-ruby-sitelibdir=PATH,
+     [ path to install ruby scripts [[auto-detect]] ]),
+    [ ruby_sitelibdir=$withval ],
+    [ ruby_sitelibdir=NONE ])
+
+AC_SUBST(RUBY)
+
+RUBY_VERSION_CODE=`$RUBY -e "puts RUBY_VERSION.gsub(/\./, '')"`
+AC_SUBST(RUBY_VERSION_CODE)
+
+RUBY_CONFIG_SO_NAME=`RUBY_CONFIG(RUBY_SO_NAME)`
+RUBY_CONFIG_ARCHDIR=`RUBY_CONFIG(archdir)`
+RUBY_CONFIG_ARCH=`RUBY_CONFIG(arch)`
+RUBY_CONFIG_LIBDIR=`RUBY_CONFIG(libdir)`
+RUBY_CONFIG_BINDIR=`RUBY_CONFIG(bindir)`
+RUBY_CONFIG_RUBYHDRDIR=`RUBY_CONFIG(rubyhdrdir)`
+RUBY_CONFIG_CFLAGS=`RUBY_CONFIG(CFLAGS)`
+RUBY_CONFIG_LIBS=`RUBY_CONFIG(LIBS)`
+RUBY_CONFIG_DLDLIBS=`RUBY_CONFIG(DLDLIBS)`
+RUBY_CONFIG_LDFLAGS=`RUBY_CONFIG(LDFLAGS)`
+RUBY_CONFIG_LIBRUBYARG=`RUBY_CONFIG(LIBRUBYARG)`
+RUBY_CONFIG_LIBRUBYARG_STATIC=`RUBY_CONFIG(LIBRUBYARG_STATIC)`
+RUBY_CONFIG_CCDLFLAGS=`RUBY_CONFIG(CCDLFLAGS)`
+
+if test "x${RUBY_CONFIG_RUBYHDRDIR}x" != "xx"; then
+  # 1.9
+  RUBY_CPPFLAGS="-I${RUBY_CONFIG_RUBYHDRDIR}"
+  RUBY_CPPFLAGS="${RUBY_CPPFLAGS} -I${RUBY_CONFIG_RUBYHDRDIR}/${RUBY_CONFIG_ARCH}"
+else
+  # 1.8
+  RUBY_CPPFLAGS="-I${RUBY_CONFIG_ARCHDIR}"
+fi
+AC_SUBST(RUBY_CPPFLAGS)
+
+RUBY_CFLAGS="${RUBY_CONFIG_CFLAGS} ${RUBY_CONFIG_CCDLFLAGS}"
+AC_SUBST(RUBY_CFLAGS)
+
+RUBY_CXXFLAGS="${RUBY_CONFIG_CFLAGS} ${RUBY_CONFIG_CCDLFLAGS}"
+AC_SUBST(RUBY_CXXFLAGS)
+
+RUBY_LDFLAGS="-L${RUBY_CONFIG_ARCHDIR} -L${RUBY_CONFIG_LIBDIR} ${RUBY_CONFIG_LDFLAGS}"
+AC_SUBST(RUBY_LDFLAGS)
+
+RUBY_LIBS="${RUBY_CONFIG_LIBS} ${RUBY_CONFIG_DLDLIBS}"
+AC_SUBST(RUBY_LIBS)
+ 
+RUBY_LIBRUBYARG="${RUBY_CONFIG_LIBRUBYARG}"
+AC_SUBST(RUBY_LIBRUBYARG)
+
+RUBY_LIBRUBYARG_STATIC="${RUBY_CONFIG_LIBRUBYARG_STATIC}"
+AC_SUBST(RUBY_LIBRUBYARG_STATIC)
+
+dnl If the user specified a prefix, then use it, otherwise defalut to
+dnl the configured sitelibdir
+if test "x${ruby_sitelibdir}x" != "xNONEx"
+then
+  RUBY_SITELIBDIR="${ruby_sitelibdir}"
+else
+  if test "x${prefix}x" = "xNONEx"
+  then
+    RUBY_SITELIBDIR=`RUBY_CONFIG(sitelibdir)`
+  else
+    sitelibdir_no_prefix=`$RUBY -rrbconfig \
+    -e "include Config; \
+    puts CONFIG[['sitelibdir']].sub(CONFIG[['prefix']], '')"`
+    RUBY_SITELIBDIR="${prefix}/${sitelibdir_no_prefix}"
+  fi
+fi
+AC_SUBST(RUBY_SITELIBDIR)
+
+dnl The fourth parameter to AC_CHECK_HEADER keeps autoconf from
+dnl searching for standard header files as a side-effect (which we want)
+CPPFLAGS_save="${CPPFLAGS}"
+CPPFLAGS="${CPPFLAGS} ${RUBY_CPPFLAGS}"
+CXXFLAGS="${CPPFLAGS}"
+AC_CHECK_HEADERS(ruby.h)
+HAVE_RUBY_H=${ac_cv_header_ruby_h}
+AC_SUBST(HAVE_RUBY_H)
+
+AC_CHECK_HEADERS(node.h,,,[
+#include <ruby.h>
+])
+AC_CHECK_HEADERS(ruby/node.h,
+[ AC_DEFINE(REALLY_HAVE_RUBY_NODE_H, [],
+[ Define this macro to use ruby/node.h ]) ],
+                            ,[
+			     #include <ruby.h>
+])
+AC_CHECK_HEADERS(version.h,,,[
+#include <ruby.h>
+])
+AC_CHECK_HEADERS(env.h,,,[
+#include <ruby.h>
+])
+
+CPPFLAGS="${CPPFLAGS_save}"
+
+AC_MINGW32
+
+if test x"${MINGW32}"x = xyesx; then
+  RB_FIX_MINGW_LIBS
+fi
+
+]) dnl RB_INIT_RUBY
+
+dnl We would like to be able to build using MingW against the one-click
+dnl installer, which is built using VC6.  So, we detect this situation
+dnl and fix up the link step if this is the case.
+dnl
+dnl Static linking isn't likely to work correctly, so we disable it by
+dnl default, but if the user asks for LIBRUBYARG_STATIC, they'll still
+dnl get static linking.
+AC_DEFUN([RB_FIX_MINGW_LIBS], [
+RUBY_LIBS=`echo ${RUBY_LIBS} | sed -e "s%oldnames.lib%-lmoldname%"`
+RUBY_LIBS=`echo ${RUBY_LIBS} | sed -e "s%user32.lib%-luser32%"`
+RUBY_LIBS=`echo ${RUBY_LIBS} | sed -e "s%advapi32.lib%-ladvapi32%"`
+RUBY_LIBS=`echo ${RUBY_LIBS} | sed -e "s%ws2_32.lib%-lws2_32%"`
+RUBY_LIBRUBYARG=`echo ${RUBY_LIBRUBYARG} | sed -e "s%\(msvcrt-ruby.*\).lib%${RUBY_CONFIG_BINDIR}/\1.dll%"`
+RUBY_LIBRUBYARG_STATIC=`echo ${RUBY_LIBRUBYARG_STATIC} | sed -e "s%\(msvcrt-ruby.*\).lib%${RUBY_CONFIG_LIBDIR}/\1.lib%"`
+]) dnl RB_FIX_MINGW_LIBS
+
+dnl vim:ft=config
Index: /tags/1.6.0/cf/tcl.m4
===================================================================
--- /tags/1.6.0/cf/tcl.m4	(revision 6168)
+++ /tags/1.6.0/cf/tcl.m4	(revision 6168)
@@ -0,0 +1,3240 @@
+#------------------------------------------------------------------------
+# SC_PATH_TCLCONFIG --
+#
+#	Locate the tclConfig.sh file and perform a sanity check on
+#	the Tcl compile flags
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--with-tcl=...
+#
+#	Defines the following vars:
+#		TCL_BIN_DIR	Full path to the directory containing
+#				the tclConfig.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_PATH_TCLCONFIG], [
+    #
+    # Ok, lets find the tcl configuration
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-tcl
+    #
+
+    if test x"${no_tcl}" = x ; then
+	# we reset no_tcl in case something fails here
+	no_tcl=true
+	AC_ARG_WITH(tcl, [  --with-tcl              directory containing tcl configuration (tclConfig.sh)], with_tclconfig=${withval})
+	AC_MSG_CHECKING([for Tcl configuration])
+	AC_CACHE_VAL(ac_cv_c_tclconfig,[
+
+	    # First check to see if --with-tcl was specified.
+	    if test x"${with_tclconfig}" != x ; then
+		if test -f "${with_tclconfig}/tclConfig.sh" ; then
+		    ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)`
+		else
+		    AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh])
+		fi
+	    fi
+
+	    # then check for a private Tcl installation
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in \
+			../tcl \
+			`ls -dr ../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../tcl \
+			`ls -dr ../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../../tcl \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Darwin, check in Framework installation locations
+	    if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+			`ls -d /Library/Frameworks 2>/dev/null` \
+			`ls -d /Network/Library/Frameworks 2>/dev/null` \
+			`ls -d /System/Library/Frameworks 2>/dev/null` \
+			; do
+		    if test -f "$i/Tcl.framework/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i/Tcl.framework; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few common install locations
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d ${libdir} 2>/dev/null` \
+			`ls -d ${exec_prefix}/lib 2>/dev/null` \
+			`ls -d ${prefix}/lib 2>/dev/null` \
+			`ls -d /usr/local/lib 2>/dev/null` \
+			`ls -d /usr/contrib/lib 2>/dev/null` \
+			`ls -d /usr/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few other private locations
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in \
+			${srcdir}/../tcl \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tclConfig.sh" ; then
+		    ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+		    break
+		fi
+		done
+	    fi
+	])
+
+	if test x"${ac_cv_c_tclconfig}" = x ; then
+	    TCL_BIN_DIR="# no Tcl configs found"
+	    AC_MSG_WARN([Can't find Tcl configuration definitions])
+	    exit 0
+	else
+	    no_tcl=
+	    TCL_BIN_DIR=${ac_cv_c_tclconfig}
+	    AC_MSG_RESULT([found ${TCL_BIN_DIR}/tclConfig.sh])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_PATH_TKCONFIG --
+#
+#	Locate the tkConfig.sh file
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--with-tk=...
+#
+#	Defines the following vars:
+#		TK_BIN_DIR	Full path to the directory containing
+#				the tkConfig.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_PATH_TKCONFIG], [
+    #
+    # Ok, lets find the tk configuration
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-tk
+    #
+
+    if test x"${no_tk}" = x ; then
+	# we reset no_tk in case something fails here
+	no_tk=true
+	AC_ARG_WITH(tk, [  --with-tk               directory containing tk configuration (tkConfig.sh)], with_tkconfig=${withval})
+	AC_MSG_CHECKING([for Tk configuration])
+	AC_CACHE_VAL(ac_cv_c_tkconfig,[
+
+	    # First check to see if --with-tkconfig was specified.
+	    if test x"${with_tkconfig}" != x ; then
+		if test -f "${with_tkconfig}/tkConfig.sh" ; then
+		    ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)`
+		else
+		    AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh])
+		fi
+	    fi
+
+	    # then check for a private Tk library
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in \
+			../tk \
+			`ls -dr ../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../tk[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../tk \
+			`ls -dr ../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../../tk \
+			`ls -dr ../../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Darwin, check in Framework installation locations
+	    if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then
+		for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+			`ls -d /Library/Frameworks 2>/dev/null` \
+			`ls -d /Network/Library/Frameworks 2>/dev/null` \
+			`ls -d /System/Library/Frameworks 2>/dev/null` \
+			; do
+		    if test -f "$i/Tk.framework/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/Tk.framework; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few common install locations
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in `ls -d ${libdir} 2>/dev/null` \
+			`ls -d ${exec_prefix}/lib 2>/dev/null` \
+			`ls -d ${prefix}/lib 2>/dev/null` \
+			`ls -d /usr/local/lib 2>/dev/null` \
+			`ls -d /usr/contrib/lib 2>/dev/null` \
+			`ls -d /usr/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+	    # check in a few other private locations
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in \
+			${srcdir}/../tk \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+	])
+
+	if test x"${ac_cv_c_tkconfig}" = x ; then
+	    TK_BIN_DIR="# no Tk configs found"
+	    AC_MSG_WARN([Can't find Tk configuration definitions])
+	    exit 0
+	else
+	    no_tk=
+	    TK_BIN_DIR=${ac_cv_c_tkconfig}
+	    AC_MSG_RESULT([found ${TK_BIN_DIR}/tkConfig.sh])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_LOAD_TCLCONFIG --
+#
+#	Load the tclConfig.sh file
+#
+# Arguments:
+#	
+#	Requires the following vars to be set:
+#		TCL_BIN_DIR
+#
+# Results:
+#
+#	Subst the following vars:
+#		TCL_BIN_DIR
+#		TCL_SRC_DIR
+#		TCL_LIB_FILE
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_LOAD_TCLCONFIG], [
+    AC_MSG_CHECKING([for existence of ${TCL_BIN_DIR}/tclConfig.sh])
+
+    if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then
+        AC_MSG_RESULT([loading])
+	. ${TCL_BIN_DIR}/tclConfig.sh
+    else
+        AC_MSG_RESULT([could not find ${TCL_BIN_DIR}/tclConfig.sh])
+    fi
+
+    # eval is required to do the TCL_DBGX substitution
+    eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+    eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
+
+    # If the TCL_BIN_DIR is the build directory (not the install directory),
+    # then set the common variable name to the value of the build variables.
+    # For example, the variable TCL_LIB_SPEC will be set to the value
+    # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
+    # instead of TCL_BUILD_LIB_SPEC since it will work with both an
+    # installed and uninstalled version of Tcl.
+    if test -f ${TCL_BIN_DIR}/Makefile ; then
+        TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
+        TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
+        TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
+    elif test "`uname -s`" = "Darwin"; then
+	# If Tcl was built as a framework, attempt to use the libraries
+	# from the framework at the given location so that linking works
+	# against Tcl.framework installed in an arbitary location.
+	case ${TCL_DEFS} in
+	    *TCL_FRAMEWORK*)
+		if test -f ${TCL_BIN_DIR}/${TCL_LIB_FILE}; then
+		    for i in "`cd ${TCL_BIN_DIR}; pwd`" \
+			     "`cd ${TCL_BIN_DIR}/../..; pwd`"; do
+			if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then
+			    TCL_LIB_SPEC="-F`dirname "$i"` -framework ${TCL_LIB_FILE}"
+			    break
+			fi
+		    done
+		fi
+		if test -f ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}; then
+		    TCL_STUB_LIB_SPEC="-L${TCL_BIN_DIR} ${TCL_STUB_LIB_FLAG}"
+		    TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"
+		fi
+		;;
+	esac
+    fi
+
+    # eval is required to do the TCL_DBGX substitution
+    eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
+    eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
+    eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
+    eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
+
+    AC_SUBST(TCL_VERSION)
+    AC_SUBST(TCL_PATCH_LEVEL)
+    AC_SUBST(TCL_BIN_DIR)
+    AC_SUBST(TCL_SRC_DIR)
+
+    AC_SUBST(TCL_LIB_FILE)
+    AC_SUBST(TCL_LIB_FLAG)
+    AC_SUBST(TCL_LIB_SPEC)
+
+    AC_SUBST(TCL_STUB_LIB_FILE)
+    AC_SUBST(TCL_STUB_LIB_FLAG)
+    AC_SUBST(TCL_STUB_LIB_SPEC)
+])
+
+#------------------------------------------------------------------------
+# SC_LOAD_TKCONFIG --
+#
+#	Load the tkConfig.sh file
+#
+# Arguments:
+#	
+#	Requires the following vars to be set:
+#		TK_BIN_DIR
+#
+# Results:
+#
+#	Sets the following vars that should be in tkConfig.sh:
+#		TK_BIN_DIR
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_LOAD_TKCONFIG], [
+    AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh])
+
+    if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then
+        AC_MSG_RESULT([loading])
+	. ${TK_BIN_DIR}/tkConfig.sh
+    else
+        AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh])
+    fi
+
+    # eval is required to do the TK_DBGX substitution
+    eval "TK_LIB_FILE=\"${TK_LIB_FILE}\""
+    eval "TK_STUB_LIB_FILE=\"${TK_STUB_LIB_FILE}\""
+
+    # If the TK_BIN_DIR is the build directory (not the install directory),
+    # then set the common variable name to the value of the build variables.
+    # For example, the variable TK_LIB_SPEC will be set to the value
+    # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC
+    # instead of TK_BUILD_LIB_SPEC since it will work with both an
+    # installed and uninstalled version of Tcl.
+    if test -f ${TK_BIN_DIR}/Makefile ; then
+        TK_LIB_SPEC=${TK_BUILD_LIB_SPEC}
+        TK_STUB_LIB_SPEC=${TK_BUILD_STUB_LIB_SPEC}
+        TK_STUB_LIB_PATH=${TK_BUILD_STUB_LIB_PATH}
+    elif test "`uname -s`" = "Darwin"; then
+	# If Tk was built as a framework, attempt to use the libraries
+	# from the framework at the given location so that linking works
+	# against Tk.framework installed in an arbitary location.
+	case ${TK_DEFS} in
+	    *TK_FRAMEWORK*)
+		if test -f ${TK_BIN_DIR}/${TK_LIB_FILE}; then
+		    for i in "`cd ${TK_BIN_DIR}; pwd`" \
+			     "`cd ${TK_BIN_DIR}/../..; pwd`"; do
+			if test "`basename "$i"`" = "${TK_LIB_FILE}.framework"; then
+			    TK_LIB_SPEC="-F`dirname "$i"` -framework ${TK_LIB_FILE}"
+			    break
+			fi
+		    done
+		fi
+		if test -f ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}; then
+		    TK_STUB_LIB_SPEC="-L${TK_BIN_DIR} ${TK_STUB_LIB_FLAG}"
+		    TK_STUB_LIB_PATH="${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"
+		fi
+		;;
+	esac
+    fi
+
+    # eval is required to do the TK_DBGX substitution
+    eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}\""
+    eval "TK_LIB_SPEC=\"${TK_LIB_SPEC}\""
+    eval "TK_STUB_LIB_FLAG=\"${TK_STUB_LIB_FLAG}\""
+    eval "TK_STUB_LIB_SPEC=\"${TK_STUB_LIB_SPEC}\""
+
+    AC_SUBST(TK_VERSION)
+    AC_SUBST(TK_BIN_DIR)
+    AC_SUBST(TK_SRC_DIR)
+
+    AC_SUBST(TK_LIB_FILE)
+    AC_SUBST(TK_LIB_FLAG)
+    AC_SUBST(TK_LIB_SPEC)
+
+    AC_SUBST(TK_STUB_LIB_FILE)
+    AC_SUBST(TK_STUB_LIB_FLAG)
+    AC_SUBST(TK_STUB_LIB_SPEC)
+])
+
+#------------------------------------------------------------------------
+# SC_PROG_TCLSH
+#	Locate a tclsh shell installed on the system path. This macro
+#	will only find a Tcl shell that already exists on the system.
+#	It will not find a Tcl shell in the Tcl build directory or
+#	a Tcl shell that has been installed from the Tcl build directory.
+#	If a Tcl shell can't be located on the PATH, then TCLSH_PROG will
+#	be set to "". Extensions should take care not to create Makefile
+#	rules that are run by default and depend on TCLSH_PROG. An
+#	extension can't assume that an executable Tcl shell exists at
+#	build time.
+#
+# Arguments
+#	none
+#
+# Results
+#	Subst's the following values:
+#		TCLSH_PROG
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_PROG_TCLSH], [
+    AC_MSG_CHECKING([for tclsh])
+    AC_CACHE_VAL(ac_cv_path_tclsh, [
+	search_path=`echo ${PATH} | sed -e 's/:/ /g'`
+	for dir in $search_path ; do
+	    for j in `ls -r $dir/tclsh[[8-9]]* 2> /dev/null` \
+		    `ls -r $dir/tclsh* 2> /dev/null` ; do
+		if test x"$ac_cv_path_tclsh" = x ; then
+		    if test -f "$j" ; then
+			ac_cv_path_tclsh=$j
+			break
+		    fi
+		fi
+	    done
+	done
+    ])
+
+    if test -f "$ac_cv_path_tclsh" ; then
+	TCLSH_PROG="$ac_cv_path_tclsh"
+	AC_MSG_RESULT([$TCLSH_PROG])
+    else
+	# It is not an error if an installed version of Tcl can't be located.
+	TCLSH_PROG=""
+	AC_MSG_RESULT([No tclsh found on PATH])
+    fi
+    AC_SUBST(TCLSH_PROG)
+])
+
+#------------------------------------------------------------------------
+# SC_BUILD_TCLSH
+#	Determine the fully qualified path name of the tclsh executable
+#	in the Tcl build directory. This macro will correctly determine
+#	the name of the tclsh executable even if tclsh has not yet
+#	been built in the build directory. The build tclsh must be used
+#	when running tests from an extension build directory. It is not
+#	correct to use the TCLSH_PROG in cases like this.
+#
+# Arguments
+#	none
+#
+# Results
+#	Subst's the following values:
+#		BUILD_TCLSH
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_BUILD_TCLSH], [
+    AC_MSG_CHECKING([for tclsh in Tcl build directory])
+    BUILD_TCLSH=${TCL_BIN_DIR}/tclsh
+    AC_MSG_RESULT([$BUILD_TCLSH])
+    AC_SUBST(BUILD_TCLSH)
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_SHARED --
+#
+#	Allows the building of shared libraries
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-shared=yes|no
+#
+#	Defines the following vars:
+#		STATIC_BUILD	Used for building import/export libraries
+#				on Windows.
+#
+#	Sets the following vars:
+#		SHARED_BUILD	Value of 1 or 0
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_SHARED], [
+    AC_MSG_CHECKING([how to build libraries])
+    AC_ARG_ENABLE(shared,
+	[  --enable-shared         build and link with shared libraries [--enable-shared]],
+	[tcl_ok=$enableval], [tcl_ok=yes])
+
+    if test "${enable_shared+set}" = set; then
+	enableval="$enable_shared"
+	tcl_ok=$enableval
+    else
+	tcl_ok=yes
+    fi
+
+    if test "$tcl_ok" = "yes" ; then
+	AC_MSG_RESULT([shared])
+	SHARED_BUILD=1
+    else
+	AC_MSG_RESULT([static])
+	SHARED_BUILD=0
+	AC_DEFINE(STATIC_BUILD)
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_FRAMEWORK --
+#
+#	Allows the building of shared libraries into frameworks
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-framework=yes|no
+#
+#	Sets the following vars:
+#		FRAMEWORK_BUILD	Value of 1 or 0
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_FRAMEWORK], [
+    if test "`uname -s`" = "Darwin" ; then
+	AC_MSG_CHECKING([how to package libraries])
+	AC_ARG_ENABLE(framework,
+	    [  --enable-framework      package shared libraries in MacOSX frameworks [--disable-framework]],
+	    [enable_framework=$enableval], [enable_framework=no])
+	if test $enable_framework = yes; then
+	    if test $SHARED_BUILD = 0; then
+		AC_MSG_WARN([Frameworks can only be built if --enable-shared is yes])
+		enable_framework=no
+	    fi
+	    if test $tcl_corefoundation = no; then
+		AC_MSG_WARN([Frameworks can only be used when CoreFoundation is available])
+		enable_framework=no
+	    fi
+	fi
+	if test $enable_framework = yes; then
+	    AC_MSG_RESULT([framework])
+	    FRAMEWORK_BUILD=1
+	else
+	    if test $SHARED_BUILD = 1; then
+		AC_MSG_RESULT([shared library])
+	    else
+		AC_MSG_RESULT([static library])
+	    fi
+	    FRAMEWORK_BUILD=0
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_THREADS --
+#
+#	Specify if thread support should be enabled.  TCL_THREADS is
+#	checked so that if you are compiling an extension against a
+#	threaded core, your extension must be compiled threaded as well.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-threads
+#
+#	Sets the following vars:
+#		THREADS_LIBS	Thread library(s)
+#
+#	Defines the following vars:
+#		TCL_THREADS
+#		_REENTRANT
+#		_THREAD_SAFE
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_THREADS], [
+    AC_ARG_ENABLE(threads, [  --enable-threads        build with threads],
+	[tcl_ok=$enableval], [tcl_ok=no])
+
+    if test "${TCL_THREADS}" = 1; then
+	tcl_threaded_core=1;
+    fi
+
+    if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then
+	TCL_THREADS=1
+	# USE_THREAD_ALLOC tells us to try the special thread-based
+	# allocator that significantly reduces lock contention
+	AC_DEFINE(USE_THREAD_ALLOC)
+	AC_DEFINE(_REENTRANT)
+	if test "`uname -s`" = "SunOS" ; then
+	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
+	fi
+	AC_DEFINE(_THREAD_SAFE)
+	AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
+	if test "$tcl_ok" = "no"; then
+	    # Check a little harder for __pthread_mutex_init in the same
+	    # library, as some systems hide it there until pthread.h is
+	    # defined.  We could alternatively do an AC_TRY_COMPILE with
+	    # pthread.h, but that will work with libpthread really doesn't
+	    # exist, like AIX 4.2.  [Bug: 4359]
+	    AC_CHECK_LIB(pthread, __pthread_mutex_init,
+		tcl_ok=yes, tcl_ok=no)
+	fi
+
+	if test "$tcl_ok" = "yes"; then
+	    # The space is needed
+	    THREADS_LIBS=" -lpthread"
+	else
+	    AC_CHECK_LIB(pthreads, pthread_mutex_init,
+		tcl_ok=yes, tcl_ok=no)
+	    if test "$tcl_ok" = "yes"; then
+		# The space is needed
+		THREADS_LIBS=" -lpthreads"
+	    else
+		AC_CHECK_LIB(c, pthread_mutex_init,
+		    tcl_ok=yes, tcl_ok=no)
+		if test "$tcl_ok" = "no"; then
+		    AC_CHECK_LIB(c_r, pthread_mutex_init,
+			tcl_ok=yes, tcl_ok=no)
+		    if test "$tcl_ok" = "yes"; then
+			# The space is needed
+			THREADS_LIBS=" -pthread"
+		    else
+			TCL_THREADS=0
+			AC_MSG_WARN([Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile...])
+		    fi
+		fi
+	    fi
+	fi
+
+	# Does the pthread-implementation provide
+	# 'pthread_attr_setstacksize' ?
+
+	ac_saved_libs=$LIBS
+	LIBS="$LIBS $THREADS_LIBS"
+	AC_CHECK_FUNCS(pthread_attr_setstacksize)
+	AC_CHECK_FUNCS(pthread_atfork)
+	LIBS=$ac_saved_libs
+    else
+	TCL_THREADS=0
+    fi
+    # Do checking message here to not mess up interleaved configure output
+    AC_MSG_CHECKING([for building with threads])
+    if test "${TCL_THREADS}" = 1; then
+	AC_DEFINE(TCL_THREADS, 1, [Are we building with threads enabled?])
+	if test "${tcl_threaded_core}" = 1; then
+	    AC_MSG_RESULT([yes (threaded core)])
+	else
+	    AC_MSG_RESULT([yes])
+	fi
+    else
+	AC_MSG_RESULT([no (default)])
+    fi
+
+    AC_SUBST(TCL_THREADS)
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_SYMBOLS --
+#
+#	Specify if debugging symbols should be used.
+#	Memory (TCL_MEM_DEBUG) and compile (TCL_COMPILE_DEBUG) debugging
+#	can also be enabled.
+#
+# Arguments:
+#	none
+#	
+#	Requires the following vars to be set in the Makefile:
+#		CFLAGS_DEBUG
+#		CFLAGS_OPTIMIZE
+#		LDFLAGS_DEBUG
+#		LDFLAGS_OPTIMIZE
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-symbols
+#
+#	Defines the following vars:
+#		CFLAGS_DEFAULT	Sets to $(CFLAGS_DEBUG) if true
+#				Sets to $(CFLAGS_OPTIMIZE) if false
+#		LDFLAGS_DEFAULT	Sets to $(LDFLAGS_DEBUG) if true
+#				Sets to $(LDFLAGS_OPTIMIZE) if false
+#		DBGX		Debug library extension
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_SYMBOLS], [
+    AC_MSG_CHECKING([for build with symbols])
+    AC_ARG_ENABLE(symbols, [  --enable-symbols        build with debugging symbols [--disable-symbols]],    [tcl_ok=$enableval], [tcl_ok=no])
+# FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT.
+    if test "$tcl_ok" = "no"; then
+	CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)'
+	LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)'
+	DBGX=""
+	AC_MSG_RESULT([no])
+    else
+	CFLAGS_DEFAULT='$(CFLAGS_DEBUG)'
+	LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)'
+	DBGX=g
+	if test "$tcl_ok" = "yes"; then
+	    AC_MSG_RESULT([yes (standard debugging)])
+	fi
+    fi
+    AC_SUBST(CFLAGS_DEFAULT)
+    AC_SUBST(LDFLAGS_DEFAULT)
+
+    if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
+	AC_DEFINE(TCL_MEM_DEBUG)
+    fi
+
+    if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then
+	AC_DEFINE(TCL_COMPILE_DEBUG)
+	AC_DEFINE(TCL_COMPILE_STATS)
+    fi
+
+    if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
+	if test "$tcl_ok" = "all"; then
+	    AC_MSG_RESULT([enabled symbols mem compile debugging])
+	else
+	    AC_MSG_RESULT([enabled $tcl_ok debugging])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_LANGINFO --
+#
+#	Allows use of modern nl_langinfo check for better l10n.
+#	This is only relevant for Unix.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-langinfo=yes|no (default is yes)
+#
+#	Defines the following vars:
+#		HAVE_LANGINFO	Triggers use of nl_langinfo if defined.
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_LANGINFO], [
+    AC_ARG_ENABLE(langinfo,
+	[  --enable-langinfo	  use nl_langinfo if possible to determine
+			  encoding at startup, otherwise use old heuristic],
+	[langinfo_ok=$enableval], [langinfo_ok=yes])
+
+    HAVE_LANGINFO=0
+    if test "$langinfo_ok" = "yes"; then
+	AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no])
+    fi
+    AC_MSG_CHECKING([whether to use nl_langinfo])
+    if test "$langinfo_ok" = "yes"; then
+	AC_CACHE_VAL(tcl_cv_langinfo_h, [
+	    AC_TRY_COMPILE([#include <langinfo.h>], [nl_langinfo(CODESET);],
+		    [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no])])
+	AC_MSG_RESULT([$tcl_cv_langinfo_h])
+	if test $tcl_cv_langinfo_h = yes; then
+	    AC_DEFINE(HAVE_LANGINFO)
+	fi
+    else 
+	AC_MSG_RESULT([$langinfo_ok])
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_MANPAGES
+#	
+#	Decide whether to use symlinks for linking the manpages,
+#	whether to compress the manpages after installation, and
+#	whether to add a package name suffix to the installed
+#	manpages to avoidfile name clashes.
+#	If compression is enabled also find out what file name suffix
+#	the given compression program is using.
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-man-symlinks
+#		--enable-man-compression=PROG
+#		--enable-man-suffix[=STRING]
+#
+#	Defines the following variable:
+#
+#	MAN_FLAGS -	The apropriate flags for installManPage
+#			according to the user's selection.
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_MANPAGES], [
+    AC_MSG_CHECKING([whether to use symlinks for manpages])
+    AC_ARG_ENABLE(man-symlinks,
+	    [  --enable-man-symlinks   use symlinks for the manpages],
+	test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks",
+	enableval="no")
+    AC_MSG_RESULT([$enableval])
+
+    AC_MSG_CHECKING([whether to compress the manpages])
+    AC_ARG_ENABLE(man-compression,
+	    [  --enable-man-compression=PROG
+		      compress the manpages with PROG],
+	[case $enableval in
+	    yes) AC_MSG_ERROR([missing argument to --enable-man-compression]);;
+	    no)  ;;
+	    *)   MAN_FLAGS="$MAN_FLAGS --compress $enableval";;
+	esac],
+	enableval="no")
+    AC_MSG_RESULT([$enableval])
+    if test "$enableval" != "no"; then
+	AC_MSG_CHECKING([for compressed file suffix])
+	touch TeST
+	$enableval TeST
+	Z=`ls TeST* | sed 's/^....//'`
+	rm -f TeST*
+	MAN_FLAGS="$MAN_FLAGS --extension $Z"
+	AC_MSG_RESULT([$Z])
+    fi
+
+    AC_MSG_CHECKING([whether to add a package name suffix for the manpages])
+    AC_ARG_ENABLE(man-suffix,
+	    [  --enable-man-suffix=STRING
+		      use STRING as a suffix to manpage file names
+		      (default: $1)],
+	[case $enableval in
+	    yes) enableval="$1" MAN_FLAGS="$MAN_FLAGS --suffix $enableval";;
+	    no)  ;;
+	    *)   MAN_FLAGS="$MAN_FLAGS --suffix $enableval";;
+	esac],
+	enableval="no")
+    AC_MSG_RESULT([$enableval])
+
+    AC_SUBST(MAN_FLAGS)
+])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_SYSTEM
+#
+#	Determine what the system is (some things cannot be easily checked
+#	on a feature-driven basis, alas). This can usually be done via the
+#	"uname" command, but there are a few systems, like Next, where
+#	this doesn't work.
+#
+# Arguments:
+#	none
+#
+# Results:
+#	Defines the following var:
+#
+#	system -	System/platform/version identification code.
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_SYSTEM], [
+    AC_CACHE_CHECK([system version], tcl_cv_sys_version, [
+	if test -f /usr/lib/NextStep/software_version; then
+	    tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
+	else
+	    tcl_cv_sys_version=`uname -s`-`uname -r`
+	    if test "$?" -ne 0 ; then
+		AC_MSG_WARN([can't find uname command])
+		tcl_cv_sys_version=unknown
+	    else
+		# Special check for weird MP-RAS system (uname returns weird
+		# results, and the version is kept in special file).
+
+		if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
+		    tcl_cv_sys_version=MP-RAS-`awk '{print $[3]}' /etc/.relid`
+		fi
+		if test "`uname -s`" = "AIX" ; then
+		    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
+		fi
+	    fi
+	fi
+    ])
+    system=$tcl_cv_sys_version
+])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_CFLAGS
+#
+#	Try to determine the proper flags to pass to the compiler
+#	for building shared libraries and other such nonsense.
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Defines and substitutes the following vars:
+#
+#       DL_OBJS -       Name of the object file that implements dynamic
+#                       loading for Tcl on this system.
+#       DL_LIBS -       Library file(s) to include in tclsh and other base
+#                       applications in order for the "load" command to work.
+#       LDFLAGS -      Flags to pass to the compiler when linking object
+#                       files into an executable application binary such
+#                       as tclsh.
+#       LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib",
+#                       that tell the run-time dynamic linker where to look
+#                       for shared libraries such as libtcl.so.  Depends on
+#                       the variable LIB_RUNTIME_DIR in the Makefile. Could
+#                       be the same as CC_SEARCH_FLAGS if ${CC} is used to link.
+#       CC_SEARCH_FLAGS-Flags to pass to ${CC}, such as "-Wl,-rpath,/usr/local/tcl/lib",
+#                       that tell the run-time dynamic linker where to look
+#                       for shared libraries such as libtcl.so.  Depends on
+#                       the variable LIB_RUNTIME_DIR in the Makefile.
+#       MAKE_LIB -      Command to execute to build the a library;
+#                       differs when building shared or static.
+#       MAKE_STUB_LIB -
+#                       Command to execute to build a stub library.
+#       INSTALL_LIB -   Command to execute to install a library;
+#                       differs when building shared or static.
+#       INSTALL_STUB_LIB -
+#                       Command to execute to install a stub library.
+#       STLIB_LD -      Base command to use for combining object files
+#                       into a static library.
+#       SHLIB_CFLAGS -  Flags to pass to cc when compiling the components
+#                       of a shared library (may request position-independent
+#                       code, among other things).
+#       SHLIB_LD -      Base command to use for combining object files
+#                       into a shared library.
+#       SHLIB_LD_LIBS - Dependent libraries for the linker to scan when
+#                       creating shared libraries.  This symbol typically
+#                       goes at the end of the "ld" commands that build
+#                       shared libraries. The value of the symbol is
+#                       "${LIBS}" if all of the dependent libraries should
+#                       be specified when creating a shared library.  If
+#                       dependent libraries should not be specified (as on
+#                       SunOS 4.x, where they cause the link to fail, or in
+#                       general if Tcl and Tk aren't themselves shared
+#                       libraries), then this symbol has an empty string
+#                       as its value.
+#       SHLIB_SUFFIX -  Suffix to use for the names of dynamically loadable
+#                       extensions.  An empty string means we don't know how
+#                       to use shared libraries on this platform.
+# TCL_SHLIB_LD_EXTRAS - Additional element which are added to SHLIB_LD_LIBS
+#  TK_SHLIB_LD_EXTRAS   for the build of Tcl and Tk, but not recorded in the
+#                       tclConfig.sh, since they are only used for the build
+#                       of Tcl and Tk. 
+#                       Examples: MacOS X records the library version and
+#                       compatibility version in the shared library.  But
+#                       of course the Tcl version of this is only used for Tcl.
+#       LIB_SUFFIX -    Specifies everything that comes after the "libfoo"
+#                       in a static or shared library name, using the $VERSION variable
+#                       to put the version in the right place.  This is used
+#                       by platforms that need non-standard library names.
+#                       Examples:  ${VERSION}.so.1.1 on NetBSD, since it needs
+#                       to have a version after the .so, and ${VERSION}.a
+#                       on AIX, since a shared library needs to have
+#                       a .a extension whereas shared objects for loadable
+#                       extensions have a .so extension.  Defaults to
+#                       ${VERSION}${SHLIB_SUFFIX}.
+#       TCL_NEEDS_EXP_FILE -
+#                       1 means that an export file is needed to link to a
+#                       shared library.
+#       TCL_EXP_FILE -  The name of the installed export / import file which
+#                       should be used to link to the Tcl shared library.
+#                       Empty if Tcl is unshared.
+#       TCL_BUILD_EXP_FILE -
+#                       The name of the built export / import file which
+#                       should be used to link to the Tcl shared library.
+#                       Empty if Tcl is unshared.
+#	CFLAGS_DEBUG -
+#			Flags used when running the compiler in debug mode
+#	CFLAGS_OPTIMIZE -
+#			Flags used when running the compiler in optimize mode
+#	CFLAGS -	Additional CFLAGS added as necessary (usually 64-bit)
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_CFLAGS], [
+
+    # Step 0.a: Enable 64 bit support?
+
+    AC_MSG_CHECKING([if 64bit support is requested])
+    AC_ARG_ENABLE(64bit,[  --enable-64bit          enable 64bit support (where applicable)],
+	[do64bit=$enableval], [do64bit=no])
+    AC_MSG_RESULT([$do64bit])
+
+    # Step 0.b: Enable Solaris 64 bit VIS support?
+
+    AC_MSG_CHECKING([if 64bit Sparc VIS support is requested])
+    AC_ARG_ENABLE(64bit-vis,[  --enable-64bit-vis      enable 64bit Sparc VIS support],
+	[do64bitVIS=$enableval], [do64bitVIS=no])
+    AC_MSG_RESULT([$do64bitVIS])
+
+    if test "$do64bitVIS" = "yes"; then
+	# Force 64bit on with VIS
+	do64bit=yes
+    fi
+
+    # Step 1: set the variable "system" to hold the name and version number
+    # for the system.
+
+    SC_CONFIG_SYSTEM
+
+    # Step 2: check for existence of -ldl library.  This is needed because
+    # Linux can use either -ldl or -ldld for dynamic loading.
+
+    AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
+
+    # Require ranlib early so we can override it in special cases below.
+
+    AC_REQUIRE([AC_PROG_RANLIB])
+
+    # Step 3: set configuration options based on system name and version.
+
+    do64bit_ok=no
+    LDFLAGS_ORIG="$LDFLAGS"
+    TCL_EXPORT_FILE_SUFFIX=""
+    UNSHARED_LIB_SUFFIX=""
+    TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`'
+    ECHO_VERSION='`echo ${VERSION}`'
+    TCL_LIB_VERSIONS_OK=ok
+    CFLAGS_DEBUG=-g
+    CFLAGS_OPTIMIZE=-O
+    if test "$GCC" = "yes" ; then
+	CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing"
+    else
+	CFLAGS_WARNING=""
+    fi
+    TCL_NEEDS_EXP_FILE=0
+    TCL_BUILD_EXP_FILE=""
+    TCL_EXP_FILE=""
+dnl FIXME: Replace AC_CHECK_PROG with AC_CHECK_TOOL once cross compiling is fixed.
+dnl AC_CHECK_TOOL(AR, ar)
+    AC_CHECK_PROG(AR, ar, ar)
+    if test "${AR}" = "" ; then
+	AC_MSG_ERROR([Required archive tool 'ar' not found on PATH.])
+    fi
+    STLIB_LD='${AR} cr'
+    LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
+    PLAT_OBJS=""
+    PLAT_SRCS=""
+    case $system in
+	AIX-*)
+	    if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
+		# AIX requires the _r compiler when gcc isn't being used
+		case "${CC}" in
+		    *_r)
+			# ok ...
+			;;
+		    *)
+			CC=${CC}_r
+			;;
+		esac
+		AC_MSG_RESULT([Using $CC for compiling with threads])
+	    fi
+	    LIBS="$LIBS -lc"
+	    SHLIB_CFLAGS=""
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    DL_OBJS="tclLoadDl.o"
+	    LD_LIBRARY_PATH_VAR="LIBPATH"
+
+	    # Check to enable 64-bit flags for compiler/linker on AIX 4+
+	    if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then
+		if test "$GCC" = "yes" ; then
+		    AC_MSG_WARN([64bit mode not supported with GCC on $system])
+		else 
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS -q64"
+		    LDFLAGS="$LDFLAGS -q64"
+		    RANLIB="${RANLIB} -X64"
+		    AR="${AR} -X64"
+		    SHLIB_LD_FLAGS="-b64"
+		fi
+	    fi
+
+	    if test "`uname -m`" = "ia64" ; then
+		# AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		# AIX-5 has dl* in libc.so
+		DL_LIBS=""
+		if test "$GCC" = "yes" ; then
+		    CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		else
+		    CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
+		fi
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    else
+		if test "$GCC" = "yes" ; then
+		    SHLIB_LD="gcc -shared"
+		else
+		    SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
+		fi
+		SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}"
+		DL_LIBS="-ldl"
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		TCL_NEEDS_EXP_FILE=1
+		TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp'
+	    fi
+
+	    # AIX v<=4.1 has some different flags than 4.2+
+	    if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then
+		LIBOBJS="$LIBOBJS tclLoadAix.o"
+		DL_LIBS="-lld"
+	    fi
+
+	    # On AIX <=v4 systems, libbsd.a has to be linked in to support
+	    # non-blocking file IO.  This library has to be linked in after
+	    # the MATH_LIBS or it breaks the pow() function.  The way to
+	    # insure proper sequencing, is to add it to the tail of MATH_LIBS.
+	    # This library also supplies gettimeofday.
+	    #
+	    # AIX does not have a timezone field in struct tm. When the AIX
+	    # bsd library is used, the timezone global and the gettimeofday
+	    # methods are to be avoided for timezone deduction instead, we
+	    # deduce the timezone by comparing the localtime result on a
+	    # known GMT value.
+
+	    AC_CHECK_LIB(bsd, gettimeofday, libbsd=yes, libbsd=no)
+	    if test $libbsd = yes; then
+	    	MATH_LIBS="$MATH_LIBS -lbsd"
+	    	AC_DEFINE(USE_DELTA_FOR_TZ)
+	    fi
+	    ;;
+	BeOS*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="${CC} -nostart"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+
+	    #-----------------------------------------------------------
+	    # Check for inet_ntoa in -lbind, for BeOS (which also needs
+	    # -lsocket, even if the network functions are in -lnet which
+	    # is always linked to, for compatibility.
+	    #-----------------------------------------------------------
+	    AC_CHECK_LIB(bind, inet_ntoa, [LIBS="$LIBS -lbind -lsocket"])
+	    ;;
+	BSD/OS-2.1*|BSD/OS-3*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="shlicc -r"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	BSD/OS-4.*)
+	    SHLIB_CFLAGS="-export-dynamic -fPIC"
+	    SHLIB_LD="cc -shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	dgux*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	HP-UX-*.11.*)
+	    # Use updated header definitions where possible
+	    AC_DEFINE(_XOPEN_SOURCE)          # Use the XOPEN network library
+	    AC_DEFINE(_XOPEN_SOURCE_EXTENDED) # Use the XOPEN network library
+	    LIBS="$LIBS -lxnet"               # Use the XOPEN network library
+
+	    if test "`uname -m`" = "ia64" ; then
+		SHLIB_SUFFIX=".so"
+	    else
+		SHLIB_SUFFIX=".sl"
+	    fi
+	    AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS='${LIBS}'
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="gcc -shared"
+		SHLIB_LD_LIBS='${LIBS}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+
+	    # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc
+	    #CFLAGS="$CFLAGS +DAportable"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		if test "$GCC" = "yes" ; then
+		    hpux_arch=`${CC} -dumpmachine`
+		    case $hpux_arch in
+			hppa64*)
+			    # 64-bit gcc in use.  Fix flags for GNU ld.
+			    do64bit_ok=yes
+			    SHLIB_LD="${CC} -shared"
+			    SHLIB_LD_LIBS='${LIBS}'
+			    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+			    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+			    ;;
+			*)
+			    AC_MSG_WARN([64bit mode not supported with GCC on $system])
+			    ;;
+		    esac
+		else
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS +DD64"
+		    LDFLAGS="$LDFLAGS +DD64"
+		fi
+	    fi
+	    ;;
+	HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
+	    SHLIB_SUFFIX=".sl"
+	    AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS=""
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    ;;
+	IRIX-4.*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_SUFFIX=".a"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a'
+	    ;;
+	IRIX-5.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    ;;
+	IRIX-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mabi=n32"
+		LDFLAGS="$LDFLAGS -mabi=n32"
+	    else
+		case $system in
+		    IRIX-6.3)
+			# Use to build 6.2 compatible binaries on 6.3.
+			CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS"
+			;;
+		    *)
+			CFLAGS="$CFLAGS -n32"
+			;;
+		esac
+		LDFLAGS="$LDFLAGS -n32"
+	    fi
+	    ;;
+	IRIX64-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+
+	    # Check to enable 64-bit flags for compiler/linker
+
+	    if test "$do64bit" = "yes" ; then
+	        if test "$GCC" = "yes" ; then
+	            AC_MSG_WARN([64bit mode not supported by gcc])
+	        else
+	            do64bit_ok=yes
+	            SHLIB_LD="ld -64 -shared -rdata_shared"
+	            CFLAGS="$CFLAGS -64"
+	            LDFLAGS="$LDFLAGS -64"
+	        fi
+	    fi
+	    ;;
+	Linux*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    CFLAGS_OPTIMIZE=-O2
+	    # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings 
+	    # when you inline the string and math operations.  Turn this off to
+	    # get rid of the warnings.
+	    #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
+
+	    if test "$have_dl" = yes; then
+		SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS}'
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS="-ldl"
+		LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    else
+		AC_CHECK_HEADER(dld.h, [
+		    SHLIB_LD="ld -shared"
+		    DL_OBJS="tclLoadDld.o"
+		    DL_LIBS="-ldld"
+		    CC_SEARCH_FLAGS=""
+		    LD_SEARCH_FLAGS=""])
+	    fi
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+	    if test $do64bit = yes; then
+		AC_CACHE_CHECK([if compiler accepts -m64 flag], tcl_cv_cc_m64, [
+		    hold_cflags=$CFLAGS
+		    CFLAGS="$CFLAGS -m64"
+		    AC_TRY_LINK(,, tcl_cv_cc_m64=yes, tcl_cv_cc_m64=no)
+		    CFLAGS=$hold_cflags])
+		if test $tcl_cv_cc_m64 = yes; then
+		    CFLAGS="$CFLAGS -m64"
+		    do64bit_ok=yes
+		fi
+	    fi
+
+	    # The combo of gcc + glibc has a bug related
+	    # to inlining of functions like strtod(). The
+	    # -fno-builtin flag should address this problem
+	    # but it does not work. The -fno-inline flag
+	    # is kind of overkill but it works.
+	    # Disable inlining only when one of the
+	    # files in compat/*.c is being linked in.
+	    if test x"${LIBOBJS}" != x ; then
+	        CFLAGS="$CFLAGS -fno-inline"
+	    fi
+
+	    # XIM peeking works under XFree86.
+	    AC_DEFINE(PEEK_XCLOSEIM)
+
+	    ;;
+	GNU*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    if test "$have_dl" = yes; then
+		SHLIB_LD="${CC} -shared"
+		DL_OBJS=""
+		DL_LIBS="-ldl"
+		LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+		CC_SEARCH_FLAGS=""
+		LD_SEARCH_FLAGS=""
+	    else
+		AC_CHECK_HEADER(dld.h, [
+		    SHLIB_LD="ld -shared"
+		    DL_OBJS=""
+		    DL_LIBS="-ldld"
+		    CC_SEARCH_FLAGS=""
+		    LD_SEARCH_FLAGS=""])
+	    fi
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+	    ;;
+	Lynx*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    CFLAGS_OPTIMIZE=-02
+	    SHLIB_LD="${CC} -shared "
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-mshared -ldl"
+	    LD_FLAGS="-Wl,--export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    ;;
+	MP-RAS-02*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	MP-RAS-*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	NetBSD-*|FreeBSD-[[1-2]].*)
+	    # Not available on all versions:  check for include file.
+	    AC_CHECK_HEADER(dlfcn.h, [
+		# NetBSD/SPARC needs -fPIC, -fpic will not do.
+		SHLIB_CFLAGS="-fPIC"
+		SHLIB_LD="ld -Bshareable -x"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".so"
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+		AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
+		    AC_EGREP_CPP(yes, [
+#ifdef __ELF__
+	yes
+#endif
+		    ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
+		if test $tcl_cv_ld_elf = yes; then
+		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+		else
+		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+		fi
+	    ], [
+		SHLIB_CFLAGS=""
+		SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".a"
+		DL_OBJS="tclLoadAout.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    ])
+
+	    # FreeBSD doesn't handle version numbers with dots.
+
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	OpenBSD-*)
+	    case `arch -s` in
+	    m88k|vax)
+		SHLIB_CFLAGS=""
+		SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".a"
+		DL_OBJS="tclLoadAout.o"
+		DL_LIBS=""
+		LDFLAGS=""
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+		;;
+	    *)
+		# OpenBSD/SPARC[64] needs -fPIC, -fpic will not do.
+		case `machine` in
+		sparc|sparc64)
+		    SHLIB_CFLAGS="-fPIC";;
+	        *)
+		    SHLIB_CFLAGS="-fpic";;
+	        esac
+		SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".so"
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+		AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
+		    AC_EGREP_CPP(yes, [
+#ifdef __ELF__
+	yes
+#endif
+		    ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
+		if test $tcl_cv_ld_elf = yes; then
+		    LDFLAGS=-Wl,-export-dynamic
+		else
+		    LDFLAGS=""
+	        fi
+		;;
+	    esac
+
+	    # OpenBSD doesn't do version numbers with dots.
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	FreeBSD-*)
+	    # FreeBSD 3.* and greater have ELF.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "${TCL_THREADS}" = "1" ; then
+		# The -pthread needs to go in the CFLAGS, not LIBS
+		LIBS=`echo $LIBS | sed s/-pthread//`
+		CFLAGS="$CFLAGS -pthread"
+	    	LDFLAGS="$LDFLAGS -pthread"
+	    fi
+	    case $system in
+	    FreeBSD-3.*)
+	    	# FreeBSD-3 doesn't handle version numbers with dots.
+	    	UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    	SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+	    	TCL_LIB_VERSIONS_OK=nodots
+		;;
+	    esac
+	    ;;
+	Darwin-*)
+	    CFLAGS_OPTIMIZE="-Os"
+	    SHLIB_CFLAGS="-fno-common"
+	    # To avoid discrepancies between what headers configure sees during
+	    # preprocessing tests and compiling tests, move any -isysroot and
+	    # -mmacosx-version-min flags from CFLAGS to CPPFLAGS:
+	    CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \
+		awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
+		if ([$]i~/^(isysroot|mmacosx-version-min)/) print "-"[$]i}'`"
+	    CFLAGS="`echo " ${CFLAGS}" | \
+		awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
+		if (!([$]i~/^(isysroot|mmacosx-version-min)/)) print "-"[$]i}'`"
+	    if test $do64bit = yes; then
+		case `arch` in
+		    ppc)
+			AC_CACHE_CHECK([if compiler accepts -arch ppc64 flag],
+				tcl_cv_cc_arch_ppc64, [
+			    hold_cflags=$CFLAGS
+			    CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+			    AC_TRY_LINK(,, tcl_cv_cc_arch_ppc64=yes,
+				    tcl_cv_cc_arch_ppc64=no)
+			    CFLAGS=$hold_cflags])
+			if test $tcl_cv_cc_arch_ppc64 = yes; then
+			    CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+			    do64bit_ok=yes
+			fi;;
+		    i386)
+			AC_CACHE_CHECK([if compiler accepts -arch x86_64 flag],
+				tcl_cv_cc_arch_x86_64, [
+			    hold_cflags=$CFLAGS
+			    CFLAGS="$CFLAGS -arch x86_64"
+			    AC_TRY_LINK(,, tcl_cv_cc_arch_x86_64=yes,
+				    tcl_cv_cc_arch_x86_64=no)
+			    CFLAGS=$hold_cflags])
+			if test $tcl_cv_cc_arch_x86_64 = yes; then
+			    CFLAGS="$CFLAGS -arch x86_64"
+			    do64bit_ok=yes
+			fi;;
+		    *)
+			AC_MSG_WARN([Don't know how enable 64-bit on architecture `arch`]);;
+		esac
+	    else
+		# Check for combined 32-bit and 64-bit fat build
+		echo "$CFLAGS " | grep -E -q -- '-arch (ppc64|x86_64) ' && \
+		    echo "$CFLAGS " | grep -E -q -- '-arch (ppc|i386) ' && \
+		    fat_32_64=yes
+	    fi
+	    SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}'
+	    AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
+		AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no)
+		LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_single_module = yes; then
+		SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
+	    fi
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".dylib"
+	    DL_OBJS="tclLoadDyld.o"
+	    DL_LIBS=""
+	    # Don't use -prebind when building for Mac OS X 10.4 or later only:
+	    test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\\.' '{print int([$]2)}'`" -lt 4 -a \
+		"`echo "${CPPFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int([$]2)}'`" -lt 4 && \
+		LDFLAGS="$LDFLAGS -prebind"
+	    LDFLAGS="$LDFLAGS -headerpad_max_install_names"
+	    AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+		AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes, tcl_cv_ld_search_paths_first=no)
+		LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_search_paths_first = yes; then
+		LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
+	    PLAT_OBJS=\$\(MAC\_OSX_OBJS\)
+	    PLAT_SRCS=\$\(MAC\_OSX_SRCS\)
+	    AC_MSG_CHECKING([whether to use CoreFoundation])
+	    AC_ARG_ENABLE(corefoundation, [  --enable-corefoundation use CoreFoundation API [--enable-corefoundation]],
+		[tcl_corefoundation=$enableval], [tcl_corefoundation=yes])
+	    AC_MSG_RESULT([$tcl_corefoundation])
+	    if test $tcl_corefoundation = yes; then
+		AC_CACHE_CHECK([for CoreFoundation.framework], tcl_cv_lib_corefoundation, [
+		    hold_libs=$LIBS
+		    if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
+			# On Tiger there is no 64-bit CF, so remove 64-bit archs
+			# from CFLAGS et al. while testing for presence of CF.
+			# 64-bit CF is disabled in tclUnixPort.h if necessary.
+			eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc64 / /g" -e "s/-arch x86_64 / /g"`"'
+		    done; fi
+		    LIBS="$LIBS -framework CoreFoundation"
+		    AC_TRY_LINK([#include <CoreFoundation/CoreFoundation.h>], 
+			[CFBundleRef b = CFBundleGetMainBundle();], 
+			tcl_cv_lib_corefoundation=yes, tcl_cv_lib_corefoundation=no)
+		    if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
+			eval $v'="$hold_'$v'"'
+		    done; fi; LIBS=$hold_libs])
+		if test $tcl_cv_lib_corefoundation = yes; then
+		    LIBS="$LIBS -framework CoreFoundation"
+		    AC_DEFINE(HAVE_COREFOUNDATION)
+		else
+		    tcl_corefoundation=no
+		fi
+		if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then
+		    AC_CACHE_CHECK([for 64-bit CoreFoundation], tcl_cv_lib_corefoundation_64, [
+			for v in CFLAGS CPPFLAGS LDFLAGS; do
+			    eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"'
+			done
+			AC_TRY_LINK([#include <CoreFoundation/CoreFoundation.h>], 
+			    [CFBundleRef b = CFBundleGetMainBundle();], 
+			    tcl_cv_lib_corefoundation_64=yes, tcl_cv_lib_corefoundation_64=no)
+			for v in CFLAGS CPPFLAGS LDFLAGS; do
+			    eval $v'="$hold_'$v'"'
+			done])
+		    if test $tcl_cv_lib_corefoundation_64 = no; then
+			AC_DEFINE(NO_COREFOUNDATION_64)
+		    fi
+		fi
+	    fi
+	    AC_DEFINE(MAC_OSX_TCL)
+	    ;;
+	NEXTSTEP-*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="cc -nostdlib -r"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadNext.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OS/390-*)
+	    CFLAGS_OPTIMIZE=""		# Optimizer is buggy
+	    AC_DEFINE(_OE_SOCKETS)	# needed in sys/socket.h
+	    ;;      
+	OSF1-1.0|OSF1-1.1|OSF1-1.2)
+	    # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1
+	    SHLIB_CFLAGS=""
+	    # Hack: make package name same as library name
+	    SHLIB_LD='ld -R -export $@:'
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadOSF.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-1.*)
+	    # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
+	    SHLIB_CFLAGS="-fPIC"
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD="ld -shared"
+	    else
+	        SHLIB_LD="ld -non_shared"
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-V*)
+	    # Digital OSF/1
+	    SHLIB_CFLAGS=""
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD='ld -shared -expect_unresolved "*"'
+	    else
+	        SHLIB_LD='ld -non_shared -expect_unresolved "*"'
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mieee"
+            else
+		CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"
+	    fi
+	    # see pthread_intro(3) for pthread support on osf1, k.furukawa
+	    if test "${TCL_THREADS}" = "1" ; then
+		CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
+		CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
+		LIBS=`echo $LIBS | sed s/-lpthreads//`
+		if test "$GCC" = "yes" ; then
+		    LIBS="$LIBS -lpthread -lmach -lexc"
+		else
+		    CFLAGS="$CFLAGS -pthread"
+		    LDFLAGS="$LDFLAGS -pthread"
+		fi
+	    fi
+
+	    ;;
+	QNX-6*)
+	    # QNX RTP
+	    # This may work for all QNX, but it was only reported for v6.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    # dlopen is in -lc on QNX
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	RISCos-*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".a"
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    ;;
+	SCO_SV-3.2*)
+	    # Note, dlopen is available only on SCO 3.2.5 and greater. However,
+	    # this test works, since "uname -s" was non-standard in 3.2.4 and
+	    # below.
+	    if test "$GCC" = "yes" ; then
+	    	SHLIB_CFLAGS="-fPIC -melf"
+	    	LDFLAGS="$LDFLAGS -melf -Wl,-Bexport"
+	    else
+	    	SHLIB_CFLAGS="-Kpic -belf"
+	    	LDFLAGS="$LDFLAGS -belf -Wl,-Bexport"
+	    fi
+	    SHLIB_LD="ld -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SINIX*5.4*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SunOS-4*)
+	    SHLIB_CFLAGS="-PIC"
+	    SHLIB_LD="ld"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+
+	    # SunOS can't handle version numbers with dots in them in library
+	    # specs, like -ltcl7.5, so use -ltcl75 instead.  Also, it
+	    # requires an extra version number at the end of .so file names.
+	    # So, the library has to have a name like libtcl75.so.1.0
+
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	SunOS-5.[[0-6]])
+	    # Careful to not let 5.10+ fall into this case
+
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+	    AC_DEFINE(_REENTRANT)
+	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    else
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+	    ;;
+	SunOS-5*)
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+	    AC_DEFINE(_REENTRANT)
+	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		arch=`isainfo`
+		if test "$arch" = "sparcv9 sparc" ; then
+			if test "$GCC" = "yes" ; then
+			    if test "`gcc -dumpversion | awk -F. '{print [$]1}'`" -lt "3" ; then
+				AC_MSG_WARN([64bit mode not supported with GCC < 3.2 on $system])
+			    else
+				do64bit_ok=yes
+				CFLAGS="$CFLAGS -m64 -mcpu=v9"
+				LDFLAGS="$LDFLAGS -m64 -mcpu=v9"
+				SHLIB_CFLAGS="-fPIC"
+			    fi
+			else
+			    do64bit_ok=yes
+			    if test "$do64bitVIS" = "yes" ; then
+				CFLAGS="$CFLAGS -xarch=v9a"
+			    	LDFLAGS="$LDFLAGS -xarch=v9a"
+			    else
+				CFLAGS="$CFLAGS -xarch=v9"
+			    	LDFLAGS="$LDFLAGS -xarch=v9"
+			    fi
+			    # Solaris 64 uses this as well
+			    #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64"
+			fi
+		elif test "$arch" = "amd64 i386" ; then
+		    if test "$GCC" = "yes" ; then
+			AC_MSG_WARN([64bit mode not supported with GCC on $system])
+		    else
+			do64bit_ok=yes
+			CFLAGS="$CFLAGS -xarch=amd64"
+			LDFLAGS="$LDFLAGS -xarch=amd64"
+		    fi
+		else
+		    AC_MSG_WARN([64bit mode not supported for $arch])
+		fi
+	    fi
+	    
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		if test "$do64bit_ok" = "yes" ; then
+		    # We need to specify -static-libgcc or we need to
+		    # add the path to the sparv9 libgcc.
+		    SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc"
+		    # for finding sparcv9 libgcc, get the regular libgcc
+		    # path, remove so name and append 'sparcv9'
+		    #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..."
+		    #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir"
+		fi
+	    else
+		case $system in
+		    SunOS-5.[[1-9]][[0-9]]*)
+			SHLIB_LD='${CC} -G -z text ${LDFLAGS}';;
+		    *)
+			SHLIB_LD="/usr/ccs/bin/ld -G -z text";;
+		esac
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    fi
+	    ;;
+	ULTRIX-4.*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_SUFFIX=".a"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    if test "$GCC" != "yes" ; then
+		CFLAGS="$CFLAGS -DHAVE_TZSET -std1"
+	    fi
+	    ;;
+	UNIX_SV* | UnixWare-5*)
+	    SHLIB_CFLAGS="-KPIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
+	    # that don't grok the -Bexport option.  Test that it does.
+	    AC_CACHE_CHECK([for ld accepts -Bexport flag], tcl_cv_ld_Bexport, [
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+		AC_TRY_LINK(, [int i;], tcl_cv_ld_Bexport=yes, tcl_cv_ld_Bexport=no)
+	        LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_Bexport = yes; then
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+    esac
+
+    if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then
+	AC_MSG_WARN([64bit support being disabled -- don't know magic for this platform])
+    fi
+
+dnl # Add any CPPFLAGS set in the environment to our CFLAGS, but delay doing so
+dnl # until the end of configure, as configure's compile and link tests use
+dnl # both CPPFLAGS and CFLAGS (unlike our compile and link) but configure's
+dnl # preprocessing tests use only CPPFLAGS.
+    SC_CONFIG_COMMANDS_PRE([CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS=""])
+
+    # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic
+    # Loading for Tcl -- What Became of It?".  Proc. 2nd Tcl/Tk Workshop,
+    # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need
+    # to determine which of several header files defines the a.out file
+    # format (a.out.h, sys/exec.h, or sys/exec_aout.h).  At present, we
+    # support only a file format that is more or less version-7-compatible. 
+    # In particular,
+    #	- a.out files must begin with `struct exec'.
+    #	- the N_TXTOFF on the `struct exec' must compute the seek address
+    #	  of the text segment
+    #	- The `struct exec' must contain a_magic, a_text, a_data, a_bss
+    #	  and a_entry fields.
+    # The following compilation should succeed if and only if either sys/exec.h
+    # or a.out.h is usable for the purpose.
+    #
+    # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the
+    # `struct exec' includes a second header that contains information that
+    # duplicates the v7 fields that are needed.
+
+    if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
+	AC_CACHE_CHECK([sys/exec.h], tcl_cv_sysexec_h, [
+	AC_TRY_COMPILE([#include <sys/exec.h>],[
+	    struct exec foo;
+	    unsigned long seek;
+	    int flag;
+#if defined(__mips) || defined(mips)
+	    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+	    seek = N_TXTOFF (foo);
+#endif
+	    flag = (foo.a_magic == OMAGIC);
+	    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+    ], tcl_cv_sysexec_h=usable, tcl_cv_sysexec_h=unusable)])
+	if test $tcl_cv_sysexec_h = usable; then
+	    AC_DEFINE(USE_SYS_EXEC_H)
+	else
+	    AC_CACHE_CHECK([a.out.h], tcl_cv_aout_h, [
+	    AC_TRY_COMPILE([#include <a.out.h>],[
+		struct exec foo;
+		unsigned long seek;
+		int flag;
+#if defined(__mips) || defined(mips)
+		seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+		seek = N_TXTOFF (foo);
+#endif
+		flag = (foo.a_magic == OMAGIC);
+		return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+	    ], tcl_cv_aout_h=usable, tcl_cv_aout_h=unusable)])
+	    if test $tcl_cv_aout_h = usable; then
+		AC_DEFINE(USE_A_OUT_H)
+	    else
+		AC_CACHE_CHECK([sys/exec_aout.h], tcl_cv_sysexecaout_h, [
+		AC_TRY_COMPILE([#include <sys/exec_aout.h>],[
+		    struct exec foo;
+		    unsigned long seek;
+		    int flag;
+#if defined(__mips) || defined(mips)
+		    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+		    seek = N_TXTOFF (foo);
+#endif
+		    flag = (foo.a_midmag == OMAGIC);
+		    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+		], tcl_cv_sysexecaout_h=usable, tcl_cv_sysexecaout_h=unusable)])
+		if test $tcl_cv_sysexecaout_h = usable; then
+		    AC_DEFINE(USE_SYS_EXEC_AOUT_H)
+		else
+		    DL_OBJS=""
+		fi
+	    fi
+	fi
+    fi
+
+    # Step 5: disable dynamic loading if requested via a command-line switch.
+
+    AC_ARG_ENABLE(load, [  --disable-load          disallow dynamic loading and "load" command],
+	[tcl_ok=$enableval], [tcl_ok=yes])
+    if test "$tcl_ok" = "no"; then
+	DL_OBJS=""
+    fi
+
+    if test "x$DL_OBJS" != "x" ; then
+	BUILD_DLTEST="\$(DLTEST_TARGETS)"
+    else
+	echo "Can't figure out how to do dynamic loading or shared libraries"
+	echo "on this system."
+	SHLIB_CFLAGS=""
+	SHLIB_LD=""
+	SHLIB_SUFFIX=""
+	DL_OBJS="tclLoadNone.o"
+	DL_LIBS=""
+	LDFLAGS="$LDFLAGS_ORIG"
+	CC_SEARCH_FLAGS=""
+	LD_SEARCH_FLAGS=""
+	BUILD_DLTEST=""
+    fi
+
+    # If we're running gcc, then change the C flags for compiling shared
+    # libraries to the right flags for gcc, instead of those for the
+    # standard manufacturer compiler.
+
+    if test "$DL_OBJS" != "tclLoadNone.o" ; then
+	if test "$GCC" = "yes" ; then
+	    case $system in
+		AIX-*)
+		    ;;
+		BSD/OS*)
+		    ;;
+		IRIX*)
+		    ;;
+		NetBSD-*|FreeBSD-*|OpenBSD-*)
+		    ;;
+		Darwin-*)
+		    ;;
+		RISCos-*)
+		    ;;
+		SCO_SV-3.2*)
+		    ;;
+		ULTRIX-4.*)
+		    ;;
+		*)
+		    SHLIB_CFLAGS="-fPIC"
+		    ;;
+	    esac
+	fi
+    fi
+
+    if test "$SHARED_LIB_SUFFIX" = "" ; then
+	SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}${SHLIB_SUFFIX}'
+    fi
+    if test "$UNSHARED_LIB_SUFFIX" = "" ; then
+	UNSHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a'
+    fi
+
+    if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then
+        LIB_SUFFIX=${SHARED_LIB_SUFFIX}
+        MAKE_LIB='${SHLIB_LD} -o [$]@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}'
+        INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
+    else
+        LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}
+
+        if test "$RANLIB" = "" ; then
+            MAKE_LIB='$(STLIB_LD) [$]@ ${OBJS}'
+            INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
+        else
+            MAKE_LIB='${STLIB_LD} [$]@ ${OBJS} ; ${RANLIB} [$]@'
+            INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(LIB_FILE))'
+        fi
+
+dnl        Not at all clear what this was doing in Tcl's configure.in
+dnl        or why it was needed was needed. In any event, this sort of
+dnl        things needs to be done in the big loop above.
+dnl        REMOVE THIS BLOCK LATER! (mdejong)
+dnl        case $system in
+dnl            BSD/OS*)
+dnl                ;;
+dnl            AIX-[[1-4]].*)
+dnl                ;;
+dnl            *)
+dnl                SHLIB_LD_LIBS=""
+dnl                ;;
+dnl        esac
+    fi
+
+
+    # Stub lib does not depend on shared/static configuration
+    if test "$RANLIB" = "" ; then
+        MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS}'
+        INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)'
+    else
+        MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS} ; ${RANLIB} [$]@'
+        INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(STUB_LIB_FILE))'
+    fi
+
+
+    AC_SUBST(DL_LIBS)
+
+    AC_SUBST(DL_OBJS)
+    AC_SUBST(PLAT_OBJS)
+    AC_SUBST(PLAT_SRCS)
+    AC_SUBST(CFLAGS)
+    AC_SUBST(CFLAGS_DEBUG)
+    AC_SUBST(CFLAGS_OPTIMIZE)
+    AC_SUBST(CFLAGS_WARNING)
+
+    AC_SUBST(LDFLAGS)
+    AC_SUBST(LDFLAGS_DEBUG)
+    AC_SUBST(LDFLAGS_OPTIMIZE)
+    AC_SUBST(CC_SEARCH_FLAGS)
+    AC_SUBST(LD_SEARCH_FLAGS)
+
+    AC_SUBST(STLIB_LD)
+    AC_SUBST(SHLIB_LD)
+    AC_SUBST(TCL_SHLIB_LD_EXTRAS)
+    AC_SUBST(TK_SHLIB_LD_EXTRAS)
+    AC_SUBST(SHLIB_LD_LIBS)
+    AC_SUBST(SHLIB_CFLAGS)
+    AC_SUBST(SHLIB_SUFFIX)
+
+    AC_SUBST(MAKE_LIB)
+    AC_SUBST(MAKE_STUB_LIB)
+    AC_SUBST(INSTALL_LIB)
+    AC_SUBST(INSTALL_STUB_LIB)
+    AC_SUBST(RANLIB)
+])
+
+#--------------------------------------------------------------------
+# SC_SERIAL_PORT
+#
+#	Determine which interface to use to talk to the serial port.
+#	Note that #include lines must begin in leftmost column for
+#	some compilers to recognize them as preprocessor directives,
+#	and some build environments have stdin not pointing at a
+#	pseudo-terminal (usually /dev/null instead.)
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines only one of the following vars:
+#		HAVE_SYS_MODEM_H
+#		USE_TERMIOS
+#		USE_TERMIO
+#		USE_SGTTY
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_SERIAL_PORT], [
+    AC_CHECK_HEADERS(sys/modem.h)
+    AC_CACHE_CHECK([termios vs. termio vs. sgtty], tcl_cv_api_serial, [
+    AC_TRY_RUN([
+#include <termios.h>
+
+int main() {
+    struct termios t;
+    if (tcgetattr(0, &t) == 0) {
+	cfsetospeed(&t, 0);
+	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <termio.h>
+
+int main() {
+    struct termio t;
+    if (ioctl(0, TCGETA, &t) == 0) {
+	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <sgtty.h>
+
+int main() {
+    struct sgttyb t;
+    if (ioctl(0, TIOCGETP, &t) == 0) {
+	t.sg_ospeed = 0;
+	t.sg_flags |= ODDP | EVENP | RAW;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <termios.h>
+#include <errno.h>
+
+int main() {
+    struct termios t;
+    if (tcgetattr(0, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	cfsetospeed(&t, 0);
+	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no; then
+	AC_TRY_RUN([
+#include <termio.h>
+#include <errno.h>
+
+int main() {
+    struct termio t;
+    if (ioctl(0, TCGETA, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+    }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no; then
+	AC_TRY_RUN([
+#include <sgtty.h>
+#include <errno.h>
+
+int main() {
+    struct sgttyb t;
+    if (ioctl(0, TIOCGETP, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	t.sg_ospeed = 0;
+	t.sg_flags |= ODDP | EVENP | RAW;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
+    fi])
+    case $tcl_cv_api_serial in
+	termios) AC_DEFINE(USE_TERMIOS);;
+	termio)  AC_DEFINE(USE_TERMIO);;
+	sgtty)   AC_DEFINE(USE_SGTTY);;
+    esac
+])
+
+#--------------------------------------------------------------------
+# SC_MISSING_POSIX_HEADERS
+#
+#	Supply substitutes for missing POSIX header files.  Special
+#	notes:
+#	    - stdlib.h doesn't define strtol, strtoul, or
+#	      strtod insome versions of SunOS
+#	    - some versions of string.h don't declare procedures such
+#	      as strstr
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		NO_DIRENT_H
+#		NO_ERRNO_H
+#		NO_VALUES_H
+#		HAVE_LIMITS_H or NO_LIMITS_H
+#		NO_STDLIB_H
+#		NO_STRING_H
+#		NO_SYS_WAIT_H
+#		NO_DLFCN_H
+#		HAVE_UNISTD_H
+#		HAVE_SYS_PARAM_H
+#
+#		HAVE_STRING_H ?
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_MISSING_POSIX_HEADERS], [
+    AC_CACHE_CHECK([dirent.h], tcl_cv_dirent_h, [
+    AC_TRY_LINK([#include <sys/types.h>
+#include <dirent.h>], [
+#ifndef _POSIX_SOURCE
+#   ifdef __Lynx__
+	/*
+	 * Generate compilation error to make the test fail:  Lynx headers
+	 * are only valid if really in the POSIX environment.
+	 */
+
+	missing_procedure();
+#   endif
+#endif
+DIR *d;
+struct dirent *entryPtr;
+char *p;
+d = opendir("foobar");
+entryPtr = readdir(d);
+p = entryPtr->d_name;
+closedir(d);
+], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no)])
+
+    if test $tcl_cv_dirent_h = no; then
+	AC_DEFINE(NO_DIRENT_H)
+    fi
+
+    AC_CHECK_HEADER(errno.h, , [AC_DEFINE(NO_ERRNO_H)])
+    AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H)])
+    AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H)])
+    AC_CHECK_HEADER(limits.h,
+	[AC_DEFINE(HAVE_LIMITS_H)], [AC_DEFINE(NO_LIMITS_H)])
+    AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0)
+    AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strtoul, stdlib.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strtod, stdlib.h, , tcl_ok=0)
+    if test $tcl_ok = 0; then
+	AC_DEFINE(NO_STDLIB_H)
+    fi
+    AC_CHECK_HEADER(string.h, tcl_ok=1, tcl_ok=0)
+    AC_EGREP_HEADER(strstr, string.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strerror, string.h, , tcl_ok=0)
+
+    # See also memmove check below for a place where NO_STRING_H can be
+    # set and why.
+
+    if test $tcl_ok = 0; then
+	AC_DEFINE(NO_STRING_H)
+    fi
+
+    AC_CHECK_HEADER(sys/wait.h, , [AC_DEFINE(NO_SYS_WAIT_H)])
+    AC_CHECK_HEADER(dlfcn.h, , [AC_DEFINE(NO_DLFCN_H)])
+
+    # OS/390 lacks sys/param.h (and doesn't need it, by chance).
+    AC_HAVE_HEADERS(unistd.h sys/param.h)
+])
+
+#--------------------------------------------------------------------
+# SC_PATH_X
+#
+#	Locate the X11 header files and the X11 library archive.  Try
+#	the ac_path_x macro first, but if it doesn't find the X stuff
+#	(e.g. because there's no xmkmf program) then check through
+#	a list of possible directories.  Under some conditions the
+#	autoconf macro will return an include directory that contains
+#	no include files, so double-check its result just to be safe.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Sets the the following vars:
+#		XINCLUDES
+#		XLIBSW
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_PATH_X], [
+    AC_PATH_X
+    not_really_there=""
+    if test "$no_x" = ""; then
+	if test "$x_includes" = ""; then
+	    AC_TRY_CPP([#include <X11/XIntrinsic.h>], , not_really_there="yes")
+	else
+	    if test ! -r $x_includes/X11/Intrinsic.h; then
+		not_really_there="yes"
+	    fi
+	fi
+    fi
+    if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
+	AC_MSG_CHECKING([for X11 header files])
+	found_xincludes="no"
+	AC_TRY_CPP([#include <X11/Intrinsic.h>], found_xincludes="yes", found_xincludes="no")
+	if test "$found_xincludes" = "no"; then
+	    dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include"
+	    for i in $dirs ; do
+		if test -r $i/X11/Intrinsic.h; then
+		    AC_MSG_RESULT([$i])
+		    XINCLUDES=" -I$i"
+		    found_xincludes="yes"
+		    break
+		fi
+	    done
+	fi
+    else
+	if test "$x_includes" != ""; then
+	    XINCLUDES="-I$x_includes"
+	    found_xincludes="yes"
+	fi
+    fi
+    if test found_xincludes = "no"; then
+	AC_MSG_RESULT([couldn't find any!])
+    fi
+
+    if test "$no_x" = yes; then
+	AC_MSG_CHECKING([for X11 libraries])
+	XLIBSW=nope
+	dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
+	for i in $dirs ; do
+	    if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then
+		AC_MSG_RESULT([$i])
+		XLIBSW="-L$i -lX11"
+		x_libraries="$i"
+		break
+	    fi
+	done
+    else
+	if test "$x_libraries" = ""; then
+	    XLIBSW=-lX11
+	else
+	    XLIBSW="-L$x_libraries -lX11"
+	fi
+    fi
+    if test "$XLIBSW" = nope ; then
+	AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow)
+    fi
+    if test "$XLIBSW" = nope ; then
+	AC_MSG_RESULT([could not find any!  Using -lX11.])
+	XLIBSW=-lX11
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_BLOCKING_STYLE
+#
+#	The statements below check for systems where POSIX-style
+#	non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. 
+#	On these systems (mostly older ones), use the old BSD-style
+#	FIONBIO approach instead.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		HAVE_SYS_IOCTL_H
+#		HAVE_SYS_FILIO_H
+#		USE_FIONBIO
+#		O_NONBLOCK
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_BLOCKING_STYLE], [
+    AC_CHECK_HEADERS(sys/ioctl.h)
+    AC_CHECK_HEADERS(sys/filio.h)
+    SC_CONFIG_SYSTEM
+    AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O])
+    case $system in
+	# There used to be code here to use FIONBIO under AIX.  However, it
+	# was reported that FIONBIO doesn't work under AIX 3.2.5.  Since
+	# using O_NONBLOCK seems fine under AIX 4.*, I removed the FIONBIO
+	# code (JO, 5/31/97).
+
+	OSF*)
+	    AC_DEFINE(USE_FIONBIO)
+	    AC_MSG_RESULT([FIONBIO])
+	    ;;
+	SunOS-4*)
+	    AC_DEFINE(USE_FIONBIO)
+	    AC_MSG_RESULT([FIONBIO])
+	    ;;
+	ULTRIX-4.*)
+	    AC_DEFINE(USE_FIONBIO)
+	    AC_MSG_RESULT([FIONBIO])
+	    ;;
+	*)
+	    AC_MSG_RESULT([O_NONBLOCK])
+	    ;;
+    esac
+])
+
+#--------------------------------------------------------------------
+# SC_TIME_HANLDER
+#
+#	Checks how the system deals with time.h, what time structures
+#	are used on the system, and what fields the structures have.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		USE_DELTA_FOR_TZ
+#		HAVE_TM_GMTOFF
+#		HAVE_TM_TZADJ
+#		HAVE_TIMEZONE_VAR
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TIME_HANDLER], [
+    AC_CHECK_HEADERS(sys/time.h)
+    AC_HEADER_TIME
+    AC_STRUCT_TIMEZONE
+
+    AC_CHECK_FUNCS(gmtime_r localtime_r)
+
+    AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, [
+	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;],
+	    tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no)])
+    if test $tcl_cv_member_tm_tzadj = yes ; then
+	AC_DEFINE(HAVE_TM_TZADJ)
+    fi
+
+    AC_CACHE_CHECK([tm_gmtoff in struct tm], tcl_cv_member_tm_gmtoff, [
+	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_gmtoff;],
+	    tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no)])
+    if test $tcl_cv_member_tm_gmtoff = yes ; then
+	AC_DEFINE(HAVE_TM_GMTOFF)
+    fi
+
+    #
+    # Its important to include time.h in this check, as some systems
+    # (like convex) have timezone functions, etc.
+    #
+    AC_CACHE_CHECK([long timezone variable], tcl_cv_timezone_long, [
+	AC_TRY_COMPILE([#include <time.h>],
+	    [extern long timezone;
+	    timezone += 1;
+	    exit (0);],
+	    tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no)])
+    if test $tcl_cv_timezone_long = yes ; then
+	AC_DEFINE(HAVE_TIMEZONE_VAR)
+    else
+	#
+	# On some systems (eg IRIX 6.2), timezone is a time_t and not a long.
+	#
+	AC_CACHE_CHECK([time_t timezone variable], tcl_cv_timezone_time, [
+	    AC_TRY_COMPILE([#include <time.h>],
+		[extern time_t timezone;
+		timezone += 1;
+		exit (0);],
+		tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no)])
+	if test $tcl_cv_timezone_time = yes ; then
+	    AC_DEFINE(HAVE_TIMEZONE_VAR)
+	fi
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_BUGGY_STRTOD
+#
+#	Under Solaris 2.4, strtod returns the wrong value for the
+#	terminating character under some conditions.  Check for this
+#	and if the problem exists use a substitute procedure
+#	"fixstrtod" (provided by Tcl) that corrects the error.
+#	Also, on Compaq's Tru64 Unix 5.0,
+#	strtod(" ") returns 0.0 instead of a failure to convert.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Might defines some of the following vars:
+#		strtod (=fixstrtod)
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_BUGGY_STRTOD], [
+    AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0)
+    if test "$tcl_strtod" = 1; then
+	AC_CACHE_CHECK([for Solaris2.4/Tru64 strtod bugs], tcl_cv_strtod_buggy,[
+	    AC_TRY_RUN([
+		extern double strtod();
+		int main() {
+		    char *infString="Inf", *nanString="NaN", *spaceString=" ";
+		    char *term;
+		    double value;
+		    value = strtod(infString, &term);
+		    if ((term != infString) && (term[-1] == 0)) {
+			exit(1);
+		    }
+		    value = strtod(nanString, &term);
+		    if ((term != nanString) && (term[-1] == 0)) {
+			exit(1);
+		    }
+		    value = strtod(spaceString, &term);
+		    if (term == (spaceString+1)) {
+			exit(1);
+		    }
+		    exit(0);
+		}], tcl_cv_strtod_buggy=ok, tcl_cv_strtod_buggy=buggy,
+		    tcl_cv_strtod_buggy=buggy)])
+	if test "$tcl_cv_strtod_buggy" = buggy; then
+	    LIBOBJS="$LIBOBJS fixstrtod.o"
+	    AC_DEFINE(strtod, fixstrtod)
+	fi
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_LINK_LIBS
+#
+#	Search for the libraries needed to link the Tcl shell.
+#	Things like the math library (-lm) and socket stuff (-lsocket vs.
+#	-lnsl) are dealt with here.
+#
+# Arguments:
+#	Requires the following vars to be set in the Makefile:
+#		DL_LIBS
+#		LIBS
+#		MATH_LIBS
+#	
+# Results:
+#
+#	Subst's the following var:
+#		TCL_LIBS
+#		MATH_LIBS
+#
+#	Might append to the following vars:
+#		LIBS
+#
+#	Might define the following vars:
+#		HAVE_NET_ERRNO_H
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_LINK_LIBS], [
+    #--------------------------------------------------------------------
+    # On a few very rare systems, all of the libm.a stuff is
+    # already in libc.a.  Set compiler flags accordingly.
+    # Also, Linux requires the "ieee" library for math to work
+    # right (and it must appear before "-lm").
+    #--------------------------------------------------------------------
+
+    AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm")
+    AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"])
+
+    #--------------------------------------------------------------------
+    # Interactive UNIX requires -linet instead of -lsocket, plus it
+    # needs net/errno.h to define the socket-related error codes.
+    #--------------------------------------------------------------------
+
+    AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"])
+    AC_CHECK_HEADER(net/errno.h, [AC_DEFINE(HAVE_NET_ERRNO_H)])
+
+    #--------------------------------------------------------------------
+    #	Check for the existence of the -lsocket and -lnsl libraries.
+    #	The order here is important, so that they end up in the right
+    #	order in the command line generated by make.  Here are some
+    #	special considerations:
+    #	1. Use "connect" and "accept" to check for -lsocket, and
+    #	   "gethostbyname" to check for -lnsl.
+    #	2. Use each function name only once:  can't redo a check because
+    #	   autoconf caches the results of the last check and won't redo it.
+    #	3. Use -lnsl and -lsocket only if they supply procedures that
+    #	   aren't already present in the normal libraries.  This is because
+    #	   IRIX 5.2 has libraries, but they aren't needed and they're
+    #	   bogus:  they goof up name resolution if used.
+    #	4. On some SVR4 systems, can't use -lsocket without -lnsl too.
+    #	   To get around this problem, check for both libraries together
+    #	   if -lsocket doesn't work by itself.
+    #--------------------------------------------------------------------
+
+    tcl_checkBoth=0
+    AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)
+    if test "$tcl_checkSocket" = 1; then
+	AC_CHECK_FUNC(setsockopt, , [AC_CHECK_LIB(socket, setsockopt,
+	    LIBS="$LIBS -lsocket", tcl_checkBoth=1)])
+    fi
+    if test "$tcl_checkBoth" = 1; then
+	tk_oldLibs=$LIBS
+	LIBS="$LIBS -lsocket -lnsl"
+	AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs])
+    fi
+    AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname,
+	    [LIBS="$LIBS -lnsl"])])
+    
+    # Don't perform the eval of the libraries here because DL_LIBS
+    # won't be set until we call SC_CONFIG_CFLAGS
+
+    TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
+    AC_SUBST(TCL_LIBS)
+    AC_SUBST(MATH_LIBS)
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_EARLY_FLAGS
+#
+#	Check for what flags are needed to be passed so the correct OS
+#	features are available.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		_ISOC99_SOURCE
+#		_LARGEFILE64_SOURCE
+#		_LARGEFILE_SOURCE64
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_EARLY_FLAG],[
+    AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]),
+	AC_TRY_COMPILE([$2], $3, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no,
+	    AC_TRY_COMPILE([[#define ]$1[ 1
+]$2], $3,
+		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=yes,
+		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=no)))
+    if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then
+	AC_DEFINE($1)
+	tcl_flags="$tcl_flags $1"
+    fi
+])
+
+AC_DEFUN([SC_TCL_EARLY_FLAGS],[
+    AC_MSG_CHECKING([for required early compiler flags])
+    tcl_flags=""
+    SC_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include <stdlib.h>],
+	[char *p = (char *)strtoll; char *q = (char *)strtoull;])
+    SC_TCL_EARLY_FLAG(_LARGEFILE64_SOURCE,[#include <sys/stat.h>],
+	[struct stat64 buf; int i = stat64("/", &buf);])
+    SC_TCL_EARLY_FLAG(_LARGEFILE_SOURCE64,[#include <sys/stat.h>],
+	[char *p = (char *)open64;])
+    if test "x${tcl_flags}" = "x" ; then
+	AC_MSG_RESULT([none])
+    else
+	AC_MSG_RESULT([${tcl_flags}])
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_64BIT_FLAGS
+#
+#	Check for what is defined in the way of 64-bit features.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		TCL_WIDE_INT_IS_LONG
+#		TCL_WIDE_INT_TYPE
+#		HAVE_STRUCT_DIRENT64
+#		HAVE_STRUCT_STAT64
+#		HAVE_TYPE_OFF64_T
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_64BIT_FLAGS], [
+    AC_MSG_CHECKING([for 64-bit integer type])
+    AC_CACHE_VAL(tcl_cv_type_64bit,[
+	tcl_cv_type_64bit=none
+	# See if the compiler knows natively about __int64
+	AC_TRY_COMPILE(,[__int64 value = (__int64) 0;],
+	    tcl_type_64bit=__int64, tcl_type_64bit="long long")
+	# See if we should use long anyway  Note that we substitute in the
+	# type that is our current guess for a 64-bit type inside this check
+	# program, so it should be modified only carefully...
+        AC_TRY_COMPILE(,[switch (0) { 
+            case 1: case (sizeof(]${tcl_type_64bit}[)==sizeof(long)): ; 
+        }],tcl_cv_type_64bit=${tcl_type_64bit})])
+    if test "${tcl_cv_type_64bit}" = none ; then
+	AC_DEFINE(TCL_WIDE_INT_IS_LONG)
+	AC_MSG_RESULT([using long])
+    else
+	AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit})
+	AC_MSG_RESULT([${tcl_cv_type_64bit}])
+
+	# Now check for auxiliary declarations
+	AC_CACHE_CHECK([for struct dirent64], tcl_cv_struct_dirent64,[
+	    AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/dirent.h>],[struct dirent64 p;],
+		tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)])
+	if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_STRUCT_DIRENT64)
+	fi
+
+	AC_CACHE_CHECK([for struct stat64], tcl_cv_struct_stat64,[
+	    AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat64 p;
+],
+		tcl_cv_struct_stat64=yes,tcl_cv_struct_stat64=no)])
+	if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_STRUCT_STAT64)
+	fi
+
+	AC_CHECK_FUNCS(open64 lseek64)
+	AC_MSG_CHECKING([for off64_t])
+	AC_CACHE_VAL(tcl_cv_type_off64_t,[
+	    AC_TRY_COMPILE([#include <sys/types.h>],[off64_t offset;
+],
+		tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)])
+	dnl Define HAVE_TYPE_OFF64_T only when the off64_t type and the
+	dnl functions lseek64 and open64 are defined.
+	if test "x${tcl_cv_type_off64_t}" = "xyes" && \
+	        test "x${ac_cv_func_lseek64}" = "xyes" && \
+	        test "x${ac_cv_func_open64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_TYPE_OFF64_T)
+	    AC_MSG_RESULT([yes])
+	else
+	    AC_MSG_RESULT([no])
+	fi
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETHOSTBYADDR_R
+#
+#	Check if we have MT-safe variant of gethostbyaddr().
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETHOSTBYADDR_R
+#		HAVE_GETHOSTBYADDR_R_7
+#		HAVE_GETHOSTBYADDR_R_8
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETHOSTBYADDR_R], [AC_CHECK_FUNC(gethostbyaddr_r, [
+    AC_CACHE_CHECK([for gethostbyaddr_r with 7 args], tcl_cv_api_gethostbyaddr_r_7, [
+    AC_TRY_COMPILE([
+	#include <netdb.h>
+    ], [
+	char *addr;
+	int length;
+	int type;
+	struct hostent *result;
+	char buffer[2048];
+	int buflen = 2048;
+	int h_errnop;
+
+	(void) gethostbyaddr_r(addr, length, type, result, buffer, buflen,
+			       &h_errnop);
+    ], tcl_cv_api_gethostbyaddr_r_7=yes, tcl_cv_api_gethostbyaddr_r_7=no)])
+    tcl_ok=$tcl_cv_api_gethostbyaddr_r_7
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYADDR_R_7)
+    else
+	AC_CACHE_CHECK([for gethostbyaddr_r with 8 args], tcl_cv_api_gethostbyaddr_r_8, [
+	AC_TRY_COMPILE([
+	    #include <netdb.h>
+	], [
+	    char *addr;
+	    int length;
+	    int type;
+	    struct hostent *result, *resultp;
+	    char buffer[2048];
+	    int buflen = 2048;
+	    int h_errnop;
+
+	    (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen,
+				   &resultp, &h_errnop);
+	], tcl_cv_api_gethostbyaddr_r_8=yes, tcl_cv_api_gethostbyaddr_r_8=no)])
+	tcl_ok=$tcl_cv_api_gethostbyaddr_r_8
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETHOSTBYADDR_R_8)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYADDR_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETHOSTBYNAME_R
+#
+#	Check to see what variant of gethostbyname_r() we have.
+#	Based on David Arnold's example from the comp.programming.threads
+#	FAQ Q213
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETHOSTBYADDR_R
+#		HAVE_GETHOSTBYADDR_R_3
+#		HAVE_GETHOSTBYADDR_R_5
+#		HAVE_GETHOSTBYADDR_R_6
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETHOSTBYNAME_R], [AC_CHECK_FUNC(gethostbyname_r, [
+    AC_CACHE_CHECK([for gethostbyname_r with 6 args], tcl_cv_api_gethostbyname_r_6, [
+    AC_TRY_COMPILE([
+	#include <netdb.h>
+    ], [
+	char *name;
+	struct hostent *he, *res;
+	char buffer[2048];
+	int buflen = 2048;
+	int h_errnop;
+
+	(void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop);
+    ], tcl_cv_api_gethostbyname_r_6=yes, tcl_cv_api_gethostbyname_r_6=no)])
+    tcl_ok=$tcl_cv_api_gethostbyname_r_6
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYNAME_R_6)
+    else
+	AC_CACHE_CHECK([for gethostbyname_r with 5 args], tcl_cv_api_gethostbyname_r_5, [
+	AC_TRY_COMPILE([
+	    #include <netdb.h>
+	], [
+	    char *name;
+	    struct hostent *he;
+	    char buffer[2048];
+	    int buflen = 2048;
+	    int h_errnop;
+
+	    (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop);
+	], tcl_cv_api_gethostbyname_r_5=yes, tcl_cv_api_gethostbyname_r_5=no)])
+	tcl_ok=$tcl_cv_api_gethostbyname_r_5
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETHOSTBYNAME_R_5)
+	else
+	    AC_CACHE_CHECK([for gethostbyname_r with 3 args], tcl_cv_api_gethostbyname_r_3, [
+	    AC_TRY_COMPILE([
+		#include <netdb.h>
+	    ], [
+		char *name;
+		struct hostent *he;
+		struct hostent_data data;
+
+		(void) gethostbyname_r(name, he, &data);
+	    ], tcl_cv_api_gethostbyname_r_3=yes, tcl_cv_api_gethostbyname_r_3=no)])
+	    tcl_ok=$tcl_cv_api_gethostbyname_r_3
+	    if test "$tcl_ok" = yes; then
+		AC_DEFINE(HAVE_GETHOSTBYNAME_R_3)
+	    fi
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYNAME_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETPWUID_R
+#
+#	Check if we have MT-safe variant of getpwuid() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETPWUID_R
+#		HAVE_GETPWUID_R_4
+#		HAVE_GETPWUID_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETPWUID_R], [AC_CHECK_FUNC(getpwuid_r, [
+    AC_CACHE_CHECK([for getpwuid_r with 5 args], tcl_cv_api_getpwuid_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <pwd.h>
+    ], [
+	uid_t uid;
+	struct passwd pw, *pwp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getpwuid_r(uid, &pw, buf, buflen, &pwp);
+    ], tcl_cv_api_getpwuid_r_5=yes, tcl_cv_api_getpwuid_r_5=no)])
+    tcl_ok=$tcl_cv_api_getpwuid_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWUID_R_5)
+    else
+	AC_CACHE_CHECK([for getpwuid_r with 4 args], tcl_cv_api_getpwuid_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <pwd.h>
+	], [
+	    uid_t uid;
+	    struct passwd pw;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getpwnam_r(uid, &pw, buf, buflen);
+	], tcl_cv_api_getpwuid_r_4=yes, tcl_cv_api_getpwuid_r_4=no)])
+	tcl_ok=$tcl_cv_api_getpwuid_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETPWUID_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWUID_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETPWNAM_R
+#
+#	Check if we have MT-safe variant of getpwnam() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETPWNAM_R
+#		HAVE_GETPWNAM_R_4
+#		HAVE_GETPWNAM_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETPWNAM_R], [AC_CHECK_FUNC(getpwnam_r, [
+    AC_CACHE_CHECK([for getpwnam_r with 5 args], tcl_cv_api_getpwnam_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <pwd.h>
+    ], [
+	char *name;
+	struct passwd pw, *pwp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getpwnam_r(name, &pw, buf, buflen, &pwp);
+    ], tcl_cv_api_getpwnam_r_5=yes, tcl_cv_api_getpwnam_r_5=no)])
+    tcl_ok=$tcl_cv_api_getpwnam_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWNAM_R_5)
+    else
+	AC_CACHE_CHECK([for getpwnam_r with 4 args], tcl_cv_api_getpwnam_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <pwd.h>
+	], [
+	    char *name;
+	    struct passwd pw;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getpwnam_r(name, &pw, buf, buflen);
+	], tcl_cv_api_getpwnam_r_4=yes, tcl_cv_api_getpwnam_r_4=no)])
+	tcl_ok=$tcl_cv_api_getpwnam_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETPWNAM_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWNAM_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETGRGID_R
+#
+#	Check if we have MT-safe variant of getgrgid() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETGRGID_R
+#		HAVE_GETGRGID_R_4
+#		HAVE_GETGRGID_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETGRGID_R], [AC_CHECK_FUNC(getgrgid_r, [
+    AC_CACHE_CHECK([for getgrgid_r with 5 args], tcl_cv_api_getgrgid_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <grp.h>
+    ], [
+	gid_t gid;
+	struct group gr, *grp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getgrgid_r(gid, &gr, buf, buflen, &grp);
+    ], tcl_cv_api_getgrgid_r_5=yes, tcl_cv_api_getgrgid_r_5=no)])
+    tcl_ok=$tcl_cv_api_getgrgid_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRGID_R_5)
+    else
+	AC_CACHE_CHECK([for getgrgid_r with 4 args], tcl_cv_api_getgrgid_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <grp.h>
+	], [
+	    gid_t gid;
+	    struct group gr;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getgrgid_r(gid, &gr, buf, buflen);
+	], tcl_cv_api_getgrgid_r_4=yes, tcl_cv_api_getgrgid_r_4=no)])
+	tcl_ok=$tcl_cv_api_getgrgid_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETGRGID_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRGID_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETGRNAM_R
+#
+#	Check if we have MT-safe variant of getgrnam() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETGRNAM_R
+#		HAVE_GETGRNAM_R_4
+#		HAVE_GETGRNAM_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETGRNAM_R], [AC_CHECK_FUNC(getgrnam_r, [
+    AC_CACHE_CHECK([for getgrnam_r with 5 args], tcl_cv_api_getgrnam_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <grp.h>
+    ], [
+	char *name;
+	struct group gr, *grp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getgrnam_r(name, &gr, buf, buflen, &grp);
+    ], tcl_cv_api_getgrnam_r_5=yes, tcl_cv_api_getgrnam_r_5=no)])
+    tcl_ok=$tcl_cv_api_getgrnam_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRNAM_R_5)
+    else
+	AC_CACHE_CHECK([for getgrnam_r with 4 args], tcl_cv_api_getgrnam_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <grp.h>
+	], [
+	    char *name;
+	    struct group gr;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getgrnam_r(name, &gr, buf, buflen);
+	], tcl_cv_api_getgrnam_r_4=yes, tcl_cv_api_getgrnam_r_4=no)])
+	tcl_ok=$tcl_cv_api_getgrnam_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETGRNAM_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRNAM_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_COMMANDS_PRE(CMDS)
+#
+#	Replacement for autoconf 2.5x AC_COMMANDS_PRE:
+#		Commands to run right before config.status is
+#		created. Accumulates.
+#
+#	Requires presence of SC_OUTPUT_COMMANDS_PRE at the end
+#	of configure.in (right before AC_OUTPUT).
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_COMMANDS_PRE], [
+    define([SC_OUTPUT_COMMANDS_PRE], defn([SC_OUTPUT_COMMANDS_PRE])[$1
+])])
+AC_DEFUN([SC_OUTPUT_COMMANDS_PRE])
+
Index: /tags/1.6.0/configure
===================================================================
--- /tags/1.6.0/configure	(revision 6168)
+++ /tags/1.6.0/configure	(revision 6168)
@@ -0,0 +1,11790 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for Rappture 1.6.
+#
+# Report bugs to <rappture@nanohub.org>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: rappture@nanohub.org about your system, including any
+$0: error possibly output before this message. Then install
+$0: a modern shell, or manually run the script under such a
+$0: shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='Rappture'
+PACKAGE_TARNAME='rappture'
+PACKAGE_VERSION='1.6'
+PACKAGE_STRING='Rappture 1.6'
+PACKAGE_BUGREPORT='rappture@nanohub.org'
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+enable_option_checking=no
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+subdirs
+VTK_VERSION
+VTK_TCL_DIR
+TK_XLIBSW
+TK_VERSION
+TK_SRC_DIR
+TK_LIB_SPEC
+TK_INC_SPEC
+TCL_VERSION
+TCL_SRC_DIR
+TCL_SHLIB_SUFFIX
+TCL_SHLIB_LDFLAGS
+TCL_SHLIB_LD
+TCL_SHLIB_CFLAGS
+TCL_LIB_SPEC
+TCL_INC_SPEC
+TCL_CFLAGS_OPTIMIZE
+TCL_CFLAGS_DEBUG
+SVN_VERSION
+SVN_URL
+SIZEOF_VOID_P
+SIZEOF_LONG_LONG
+SIZEOF_LONG
+SIZEOF_INT
+SHLIB_LDFLAGS
+RUBY_VERSION_RV
+RUBY_PLATFORM
+RP_BASE
+PYTHON_VERSION
+PYTHON_SITE_PACKAGES
+PYTHON_SITE_DIR
+PYTHON_LIBDIR
+PYTHON_LIB
+PYTHON_LDFLAGS
+PYTHON_INCLUDES
+PYTHON_INCDIR
+PYTHON_DISTUTILS
+PYTHON_CFLAGS
+PERL_VERSION_RV
+PERL_VERSION
+PERL_VENDORLIB
+PERL_PRIVLIB
+PERL_LIBSPEC
+PERL_INSTALLARCHLIB
+PERL_INCLUDES
+PERL_CPPFLAGS
+PERL_CCFLAGS
+PERL_ARCHLIBEXP
+PERL_ARCHLIB
+OCTAVE_VERSION_MAJOR
+OCTAVE_VERSION
+MKOCTFILE3
+MKOCTFILE2
+MEX_ARCH
+MAKE
+LIB_SEARCH_DIRS
+JAVA_INC_SPEC
+JAVA_INC_DIR
+JAVA_HOME
+INSTALL_PREFIX
+HAVE_RUBY_DEVEL
+HAVE_INTTYPES_H
+HAVE_FFMPEG_LIBS
+ENABLE_VTK_DICOM
+ENABLE_VTK
+ENABLE_GUI
+ENABLE_LANG
+FFMPEG
+LDFLAGS_DEFAULT
+CFLAGS_DEFAULT
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+HAVE_RUBY_H
+RUBY_SITELIBDIR
+RUBY_LIBRUBYARG_STATIC
+RUBY_LIBRUBYARG
+RUBY_LIBS
+RUBY_LDFLAGS
+RUBY_CXXFLAGS
+RUBY_CFLAGS
+RUBY_CPPFLAGS
+RUBY_VERSION_CODE
+RUBY
+R
+JAVAH
+JAVAC
+JAVA
+PYTHON
+XSUBPP
+PERL
+mkoctfile2
+mkoctfile3
+MKOCTFILE
+OCTAVE
+MCC
+MEXEXT
+MEX
+MATLAB
+TCLSH
+INSTALL_STUB_LIB
+INSTALL_LIB
+MAKE_STUB_LIB
+MAKE_LIB
+SHLIB_SUFFIX
+SHLIB_CFLAGS
+SHLIB_LD_LIBS
+TK_SHLIB_LD_EXTRAS
+TCL_SHLIB_LD_EXTRAS
+SHLIB_LD
+STLIB_LD
+LD_SEARCH_FLAGS
+CC_SEARCH_FLAGS
+LDFLAGS_OPTIMIZE
+LDFLAGS_DEBUG
+CFLAGS_WARNING
+CFLAGS_OPTIMIZE
+CFLAGS_DEBUG
+PLAT_SRCS
+PLAT_OBJS
+DL_OBJS
+DL_LIBS
+AR
+CXXCPP
+EGREP
+GREP
+CPP
+ac_ct_F77
+FFLAGS
+F77
+ac_ct_CXX
+CXXFLAGS
+CXX
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+SET_MAKE
+MKDIR_P
+LN_S
+RANLIB
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_install
+enable_64bit
+enable_64bit_vis
+enable_corefoundation
+enable_load
+enable_lang
+enable_gui
+with_ffmpeg
+with_tclsh
+with_vtk
+enable_vtkdicom
+with_matlab
+with_octave
+with_mkoctfile3
+with_mkoctfile2
+with_perl
+with_python
+with_java
+with_R
+with_ruby
+with_ruby_sitelibdir
+enable_shared
+enable_symbols
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+F77
+FFLAGS
+CPP
+CXXCPP'
+ac_subdirs_all='packages/optimizer/src '
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures Rappture 1.6 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/rappture]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+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 Rappture 1.6:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-64bit          enable 64bit support (where applicable)
+  --enable-64bit-vis      enable 64bit Sparc VIS support
+  --enable-corefoundation use CoreFoundation API --enable-corefoundation
+  --disable-load          disallow dynamic loading and "load" command
+  --enable-lang           build language bindings [default=yes]
+  --enable-gui            build code related to the graphical user interface
+                          [default=yes]
+  --enable-vtkdicom       Use vtkDICOM package [default=no]
+  --enable-shared         build and link with shared libraries --enable-shared
+  --enable-symbols        build with debugging symbols --disable-symbols
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-install=DIR      location of installation [default=yes]
+  --with-ffmpeg=DIR       location of ffmpeg [default=yes]
+  --with-tclsh=DIR        location of tclsh [default=yes]
+  --with-vtk=version      VTK library version [default=6.0]
+  --with-matlab=DIR       location of matlab and mex compiler [default=yes]
+  --with-octave=DIR       path of default octave compiler `mkoctfile'
+                          [default=yes]
+  --with-mkoctfile3=DIR   path of octave compiler `mkoctfile' [default=no]
+  --with-mkoctfile2=DIR   path of octave compiler `mkoctfile' [default=no]
+  --with-perl=DIR         location of perl [default=yes]
+  --with-python=DIR       location of python [default=yes]
+  --with-java=DIR         location of java [default=yes]
+  --with-R=DIR            location of R interpreter [default=yes]
+  --with-ruby=PATH        path to the ruby interpreter [[ruby]]
+  --with-ruby-sitelibdir=PATH
+                          path to install ruby scripts [[auto-detect]]
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
+  CPP         C preprocessor
+  CXXCPP      C++ preprocessor
+
+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 <rappture@nanohub.org>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+Rappture configure 1.6
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_f77_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_f77_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_f77_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_cxx_check_func LINENO FUNC VAR
+# ------------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_cxx_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_func
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_cxx_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ----------------------------------- ##
+## Report this to rappture@nanohub.org ##
+## ----------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_header_mongrel
+
+# ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_cxx_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_header_compile
+
+# ac_fn_cxx_try_run LINENO
+# ------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_cxx_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_run
+
+# ac_fn_cxx_compute_int LINENO EXPR VAR INCLUDES
+# ----------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_cxx_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_compute_int
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Rappture $as_me 1.6, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_aux_dir=
+for ac_dir in cf "$srcdir"/cf; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in cf \"$srcdir\"/cf" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+ac_config_headers="$ac_config_headers src/core/config.h"
+
+
+#------------------------------------------------------------------------
+# Handle the --prefix=... option
+#------------------------------------------------------------------------
+
+if test "${prefix}" = "NONE"; then
+    prefix=/usr/local
+fi
+if test "${exec_prefix}" = "NONE"; then
+    exec_prefix=$prefix
+fi
+
+
+# Check whether --with-install was given.
+if test "${with_install+set}" = set; then :
+  withval=$with_install;
+else
+  with_install=yes
+fi
+
+
+if test "$with_install" != "yes"; then
+    INSTALL_PREFIX=$with_install
+else
+    INSTALL_PREFIX=$prefix
+fi
+
+
+if test "${libdir}" != "${prefix}/lib"; then
+    LIB_SEARCH_DIRS="-L${prefix}/lib -L${libdir}"
+else
+    LIB_SEARCH_DIRS="-L${libdir}"
+fi
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+# Check for C, C++, and FORTRAN
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=cpp
+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 -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$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
+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
+
+# Avoid g95
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 gfortran f77 fort77 f90 xlf xlf90 fl32
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_F77+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5
+$as_echo "$F77" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 gfortran f77 fort77 f90 xlf xlf90 fl32
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_F77+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5
+$as_echo "$ac_ct_F77" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_F77" && break
+done
+
+  if test "x$ac_ct_F77" = x; then
+    F77=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    F77=$ac_ct_F77
+  fi
+fi
+
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5
+$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
+if ${ac_cv_f77_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+if ac_fn_f77_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5
+$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5
+$as_echo_n "checking whether $F77 accepts -g... " >&6; }
+if ${ac_cv_prog_f77_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  FFLAGS=-g
+cat > conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+if ac_fn_f77_try_compile "$LINENO"; then :
+  ac_cv_prog_f77_g=yes
+else
+  ac_cv_prog_f77_g=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5
+$as_echo "$ac_cv_prog_f77_g" >&6; }
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+if test $ac_compiler_gnu = yes; then
+  G77=yes
+else
+  G77=
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "atol" "ac_cv_func_atol"
+if test "x$ac_cv_func_atol" = xyes; then :
+
+else
+  as_fn_error $? "oops! no atol ?!?" "$LINENO" 5
+fi
+
+
+ac_ext=cpp
+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
+
+
+
+for ac_func in sysinfo
+do :
+  ac_fn_cxx_check_func "$LINENO" "sysinfo" "ac_cv_func_sysinfo"
+if test "x$ac_cv_func_sysinfo" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYSINFO 1
+_ACEOF
+
+fi
+done
+
+for ac_func in gettimeofday
+do :
+  ac_fn_cxx_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
+if test "x$ac_cv_func_gettimeofday" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETTIMEOFDAY 1
+_ACEOF
+
+fi
+done
+
+ac_fn_cxx_check_func "$LINENO" "localtime" "ac_cv_func_localtime"
+if test "x$ac_cv_func_localtime" = xyes; then :
+
+else
+  as_fn_error $? "oops! no localtime ?!?" "$LINENO" 5
+fi
+
+ac_fn_cxx_check_func "$LINENO" "getenv" "ac_cv_func_getenv"
+if test "x$ac_cv_func_getenv" = xyes; then :
+
+else
+  as_fn_error $? "oops! no getenv ?!?" "$LINENO" 5
+fi
+
+
+ac_ext=cpp
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if ${ac_cv_prog_CXXCPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=cpp
+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
+
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in sys/sysinfo.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "sys/sysinfo.h" "ac_cv_header_sys_sysinfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sysinfo_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_SYSINFO_H 1
+_ACEOF
+
+fi
+
+done
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clrtoeol in -lncurses" >&5
+$as_echo_n "checking for clrtoeol in -lncurses... " >&6; }
+if ${ac_cv_lib_ncurses_clrtoeol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lncurses  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clrtoeol ();
+int
+main ()
+{
+return clrtoeol ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_ncurses_clrtoeol=yes
+else
+  ac_cv_lib_ncurses_clrtoeol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_clrtoeol" >&5
+$as_echo "$ac_cv_lib_ncurses_clrtoeol" >&6; }
+if test "x$ac_cv_lib_ncurses_clrtoeol" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBNCURSES 1
+_ACEOF
+
+  LIBS="-lncurses $LIBS"
+
+else
+  as_fn_error $? "ncurses library missing?" "$LINENO" 5
+fi
+
+for ac_header in ncurses.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "ncurses.h" "ac_cv_header_ncurses_h" "$ac_includes_default"
+if test "x$ac_cv_header_ncurses_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_NCURSES_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ncurses headers missing ?" >&5
+$as_echo "$as_me: WARNING: ncurses headers missing ?" >&2;}
+fi
+
+done
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lstdc++" >&5
+$as_echo_n "checking for main in -lstdc++... " >&6; }
+if ${ac_cv_lib_stdcpp_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lstdc++  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_stdcpp_main=yes
+else
+  ac_cv_lib_stdcpp_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_stdcpp_main" >&5
+$as_echo "$ac_cv_lib_stdcpp_main" >&6; }
+if test "x$ac_cv_lib_stdcpp_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSTDC__ 1
+_ACEOF
+
+  LIBS="-lstdc++ $LIBS"
+
+else
+  as_fn_error $? "librappture requires libstdc++" "$LINENO" 5
+fi
+
+for ac_header in algorithm
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "algorithm" "ac_cv_header_algorithm" "$ac_includes_default"
+if test "x$ac_cv_header_algorithm" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ALGORITHM 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in cctype
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "cctype" "ac_cv_header_cctype" "$ac_includes_default"
+if test "x$ac_cv_header_cctype" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CCTYPE 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in cfloat
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "cfloat" "ac_cv_header_cfloat" "$ac_includes_default"
+if test "x$ac_cv_header_cfloat" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CFLOAT 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in cmath
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "cmath" "ac_cv_header_cmath" "$ac_includes_default"
+if test "x$ac_cv_header_cmath" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CMATH 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in cstdio
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "cstdio" "ac_cv_header_cstdio" "$ac_includes_default"
+if test "x$ac_cv_header_cstdio" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CSTDIO 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in cstdlib
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "cstdlib" "ac_cv_header_cstdlib" "$ac_includes_default"
+if test "x$ac_cv_header_cstdlib" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CSTDLIB 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in cstring
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "cstring" "ac_cv_header_cstring" "$ac_includes_default"
+if test "x$ac_cv_header_cstring" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CSTRING 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in fstream
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "fstream" "ac_cv_header_fstream" "$ac_includes_default"
+if test "x$ac_cv_header_fstream" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FSTREAM 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in list
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "list" "ac_cv_header_list" "$ac_includes_default"
+if test "x$ac_cv_header_list" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIST 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in iostream
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "iostream" "ac_cv_header_iostream" "$ac_includes_default"
+if test "x$ac_cv_header_iostream" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_IOSTREAM 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in iterator
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "iterator" "ac_cv_header_iterator" "$ac_includes_default"
+if test "x$ac_cv_header_iterator" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ITERATOR 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in sstream
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "sstream" "ac_cv_header_sstream" "$ac_includes_default"
+if test "x$ac_cv_header_sstream" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SSTREAM 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in stack
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "stack" "ac_cv_header_stack" "$ac_includes_default"
+if test "x$ac_cv_header_stack" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STACK 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in string
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "string" "ac_cv_header_string" "$ac_includes_default"
+if test "x$ac_cv_header_string" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRING 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+for ac_header in vector
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "vector" "ac_cv_header_vector" "$ac_includes_default"
+if test "x$ac_cv_header_vector" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_VECTOR 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: STL classes missing ?" >&5
+$as_echo "$as_me: WARNING: STL classes missing ?" >&2;}
+fi
+
+done
+
+
+for ac_header in assert.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "assert.h" "ac_cv_header_assert_h" "$ac_includes_default"
+if test "x$ac_cv_header_assert_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ASSERT_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+for ac_header in ctype.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "ctype.h" "ac_cv_header_ctype_h" "$ac_includes_default"
+if test "x$ac_cv_header_ctype_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_CTYPE_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+for ac_header in errno.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default"
+if test "x$ac_cv_header_errno_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ERRNO_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+for ac_header in limits.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default"
+if test "x$ac_cv_header_limits_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIMITS_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+for ac_header in string.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default"
+if test "x$ac_cv_header_string_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STRING_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+for ac_header in stdlib.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STDLIB_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+for ac_header in stddef.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "stddef.h" "ac_cv_header_stddef_h" "$ac_includes_default"
+if test "x$ac_cv_header_stddef_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_STDDEF_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+for ac_header in float.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "float.h" "ac_cv_header_float_h" "$ac_includes_default"
+if test "x$ac_cv_header_float_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_FLOAT_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+for ac_header in math.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "math.h" "ac_cv_header_math_h" "$ac_includes_default"
+if test "x$ac_cv_header_math_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MATH_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+for ac_header in malloc.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "malloc.h" "ac_cv_header_malloc_h" "$ac_includes_default"
+if test "x$ac_cv_header_malloc_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MALLOC_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+for ac_header in memory.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default"
+if test "x$ac_cv_header_memory_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MEMORY_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+for ac_header in unistd.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
+if test "x$ac_cv_header_unistd_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_UNISTD_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+
+for ac_header in inttypes.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_inttypes_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_INTTYPES_H 1
+_ACEOF
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C headers missing ?" >&5
+$as_echo "$as_me: WARNING: C headers missing ?" >&2;}
+fi
+
+done
+
+if test "${ac_cv_header_inttypes_h}" = "yes" ; then
+  HAVE_INTTYPES_H=1
+else
+  HAVE_INTTYPES_H=0
+fi
+
+
+
+
+    # Step 0.a: Enable 64 bit support?
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if 64bit support is requested" >&5
+$as_echo_n "checking if 64bit support is requested... " >&6; }
+    # Check whether --enable-64bit was given.
+if test "${enable_64bit+set}" = set; then :
+  enableval=$enable_64bit; do64bit=$enableval
+else
+  do64bit=no
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $do64bit" >&5
+$as_echo "$do64bit" >&6; }
+
+    # Step 0.b: Enable Solaris 64 bit VIS support?
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if 64bit Sparc VIS support is requested" >&5
+$as_echo_n "checking if 64bit Sparc VIS support is requested... " >&6; }
+    # Check whether --enable-64bit-vis was given.
+if test "${enable_64bit_vis+set}" = set; then :
+  enableval=$enable_64bit_vis; do64bitVIS=$enableval
+else
+  do64bitVIS=no
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $do64bitVIS" >&5
+$as_echo "$do64bitVIS" >&6; }
+
+    if test "$do64bitVIS" = "yes"; then
+	# Force 64bit on with VIS
+	do64bit=yes
+    fi
+
+    # Step 1: set the variable "system" to hold the name and version number
+    # for the system.
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking system version" >&5
+$as_echo_n "checking system version... " >&6; }
+if ${tcl_cv_sys_version+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+	if test -f /usr/lib/NextStep/software_version; then
+	    tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
+	else
+	    tcl_cv_sys_version=`uname -s`-`uname -r`
+	    if test "$?" -ne 0 ; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: can't find uname command" >&5
+$as_echo "$as_me: WARNING: can't find uname command" >&2;}
+		tcl_cv_sys_version=unknown
+	    else
+		# Special check for weird MP-RAS system (uname returns weird
+		# results, and the version is kept in special file).
+
+		if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
+		    tcl_cv_sys_version=MP-RAS-`awk '{print $3}' /etc/.relid`
+		fi
+		if test "`uname -s`" = "AIX" ; then
+		    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
+		fi
+	    fi
+	fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_sys_version" >&5
+$as_echo "$tcl_cv_sys_version" >&6; }
+    system=$tcl_cv_sys_version
+
+
+    # Step 2: check for existence of -ldl library.  This is needed because
+    # Linux can use either -ldl or -ldld for dynamic loading.
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  have_dl=yes
+else
+  have_dl=no
+fi
+
+
+    # Require ranlib early so we can override it in special cases below.
+
+
+
+    # Step 3: set configuration options based on system name and version.
+
+    do64bit_ok=no
+    LDFLAGS_ORIG="$LDFLAGS"
+    TCL_EXPORT_FILE_SUFFIX=""
+    UNSHARED_LIB_SUFFIX=""
+    TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`'
+    ECHO_VERSION='`echo ${VERSION}`'
+    TCL_LIB_VERSIONS_OK=ok
+    CFLAGS_DEBUG=-g
+    CFLAGS_OPTIMIZE=-O
+    if test "$GCC" = "yes" ; then
+	CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing"
+    else
+	CFLAGS_WARNING=""
+    fi
+    TCL_NEEDS_EXP_FILE=0
+    TCL_BUILD_EXP_FILE=""
+    TCL_EXP_FILE=""
+    # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    if test "${AR}" = "" ; then
+	as_fn_error $? "Required archive tool 'ar' not found on PATH." "$LINENO" 5
+    fi
+    STLIB_LD='${AR} cr'
+    LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
+    PLAT_OBJS=""
+    PLAT_SRCS=""
+    case $system in
+	AIX-*)
+	    if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
+		# AIX requires the _r compiler when gcc isn't being used
+		case "${CC}" in
+		    *_r)
+			# ok ...
+			;;
+		    *)
+			CC=${CC}_r
+			;;
+		esac
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Using $CC for compiling with threads" >&5
+$as_echo "Using $CC for compiling with threads" >&6; }
+	    fi
+	    LIBS="$LIBS -lc"
+	    SHLIB_CFLAGS=""
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    DL_OBJS="tclLoadDl.o"
+	    LD_LIBRARY_PATH_VAR="LIBPATH"
+
+	    # Check to enable 64-bit flags for compiler/linker on AIX 4+
+	    if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then
+		if test "$GCC" = "yes" ; then
+		    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit mode not supported with GCC on $system" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;}
+		else
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS -q64"
+		    LDFLAGS="$LDFLAGS -q64"
+		    RANLIB="${RANLIB} -X64"
+		    AR="${AR} -X64"
+		    SHLIB_LD_FLAGS="-b64"
+		fi
+	    fi
+
+	    if test "`uname -m`" = "ia64" ; then
+		# AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		# AIX-5 has dl* in libc.so
+		DL_LIBS=""
+		if test "$GCC" = "yes" ; then
+		    CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		else
+		    CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
+		fi
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    else
+		if test "$GCC" = "yes" ; then
+		    SHLIB_LD="gcc -shared"
+		else
+		    SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
+		fi
+		SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}"
+		DL_LIBS="-ldl"
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		TCL_NEEDS_EXP_FILE=1
+		TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp'
+	    fi
+
+	    # AIX v<=4.1 has some different flags than 4.2+
+	    if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then
+		LIBOBJS="$LIBOBJS tclLoadAix.o"
+		DL_LIBS="-lld"
+	    fi
+
+	    # On AIX <=v4 systems, libbsd.a has to be linked in to support
+	    # non-blocking file IO.  This library has to be linked in after
+	    # the MATH_LIBS or it breaks the pow() function.  The way to
+	    # insure proper sequencing, is to add it to the tail of MATH_LIBS.
+	    # This library also supplies gettimeofday.
+	    #
+	    # AIX does not have a timezone field in struct tm. When the AIX
+	    # bsd library is used, the timezone global and the gettimeofday
+	    # methods are to be avoided for timezone deduction instead, we
+	    # deduce the timezone by comparing the localtime result on a
+	    # known GMT value.
+
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettimeofday in -lbsd" >&5
+$as_echo_n "checking for gettimeofday in -lbsd... " >&6; }
+if ${ac_cv_lib_bsd_gettimeofday+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gettimeofday ();
+int
+main ()
+{
+return gettimeofday ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_bsd_gettimeofday=yes
+else
+  ac_cv_lib_bsd_gettimeofday=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gettimeofday" >&5
+$as_echo "$ac_cv_lib_bsd_gettimeofday" >&6; }
+if test "x$ac_cv_lib_bsd_gettimeofday" = xyes; then :
+  libbsd=yes
+else
+  libbsd=no
+fi
+
+	    if test $libbsd = yes; then
+	    	MATH_LIBS="$MATH_LIBS -lbsd"
+	    	$as_echo "#define USE_DELTA_FOR_TZ 1" >>confdefs.h
+
+	    fi
+	    ;;
+	BeOS*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="${CC} -nostart"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+
+	    #-----------------------------------------------------------
+	    # Check for inet_ntoa in -lbind, for BeOS (which also needs
+	    # -lsocket, even if the network functions are in -lnet which
+	    # is always linked to, for compatibility.
+	    #-----------------------------------------------------------
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_ntoa in -lbind" >&5
+$as_echo_n "checking for inet_ntoa in -lbind... " >&6; }
+if ${ac_cv_lib_bind_inet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbind  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char inet_ntoa ();
+int
+main ()
+{
+return inet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_bind_inet_ntoa=yes
+else
+  ac_cv_lib_bind_inet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bind_inet_ntoa" >&5
+$as_echo "$ac_cv_lib_bind_inet_ntoa" >&6; }
+if test "x$ac_cv_lib_bind_inet_ntoa" = xyes; then :
+  LIBS="$LIBS -lbind -lsocket"
+fi
+
+	    ;;
+	BSD/OS-2.1*|BSD/OS-3*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="shlicc -r"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	BSD/OS-4.*)
+	    SHLIB_CFLAGS="-export-dynamic -fPIC"
+	    SHLIB_LD="cc -shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	dgux*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	HP-UX-*.11.*)
+	    # Use updated header definitions where possible
+	    $as_echo "#define _XOPEN_SOURCE 1" >>confdefs.h
+          # Use the XOPEN network library
+	    $as_echo "#define _XOPEN_SOURCE_EXTENDED 1" >>confdefs.h
+ # Use the XOPEN network library
+	    LIBS="$LIBS -lxnet"               # Use the XOPEN network library
+
+	    if test "`uname -m`" = "ia64" ; then
+		SHLIB_SUFFIX=".so"
+	    else
+		SHLIB_SUFFIX=".sl"
+	    fi
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  tcl_ok=yes
+else
+  tcl_ok=no
+fi
+
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS='${LIBS}'
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="gcc -shared"
+		SHLIB_LD_LIBS='${LIBS}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+
+	    # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc
+	    #CFLAGS="$CFLAGS +DAportable"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		if test "$GCC" = "yes" ; then
+		    hpux_arch=`${CC} -dumpmachine`
+		    case $hpux_arch in
+			hppa64*)
+			    # 64-bit gcc in use.  Fix flags for GNU ld.
+			    do64bit_ok=yes
+			    SHLIB_LD="${CC} -shared"
+			    SHLIB_LD_LIBS='${LIBS}'
+			    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+			    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+			    ;;
+			*)
+			    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit mode not supported with GCC on $system" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;}
+			    ;;
+		    esac
+		else
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS +DD64"
+		    LDFLAGS="$LDFLAGS +DD64"
+		fi
+	    fi
+	    ;;
+	HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
+	    SHLIB_SUFFIX=".sl"
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  tcl_ok=yes
+else
+  tcl_ok=no
+fi
+
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS=""
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    ;;
+	IRIX-4.*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_SUFFIX=".a"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a'
+	    ;;
+	IRIX-5.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    ;;
+	IRIX-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mabi=n32"
+		LDFLAGS="$LDFLAGS -mabi=n32"
+	    else
+		case $system in
+		    IRIX-6.3)
+			# Use to build 6.2 compatible binaries on 6.3.
+			CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS"
+			;;
+		    *)
+			CFLAGS="$CFLAGS -n32"
+			;;
+		esac
+		LDFLAGS="$LDFLAGS -n32"
+	    fi
+	    ;;
+	IRIX64-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+
+	    # Check to enable 64-bit flags for compiler/linker
+
+	    if test "$do64bit" = "yes" ; then
+	        if test "$GCC" = "yes" ; then
+	            { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit mode not supported by gcc" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported by gcc" >&2;}
+	        else
+	            do64bit_ok=yes
+	            SHLIB_LD="ld -64 -shared -rdata_shared"
+	            CFLAGS="$CFLAGS -64"
+	            LDFLAGS="$LDFLAGS -64"
+	        fi
+	    fi
+	    ;;
+	Linux*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    CFLAGS_OPTIMIZE=-O2
+	    # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings
+	    # when you inline the string and math operations.  Turn this off to
+	    # get rid of the warnings.
+	    #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
+
+	    if test "$have_dl" = yes; then
+		SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS}'
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS="-ldl"
+		LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    else
+		ac_fn_cxx_check_header_mongrel "$LINENO" "dld.h" "ac_cv_header_dld_h" "$ac_includes_default"
+if test "x$ac_cv_header_dld_h" = xyes; then :
+
+		    SHLIB_LD="ld -shared"
+		    DL_OBJS="tclLoadDld.o"
+		    DL_LIBS="-ldld"
+		    CC_SEARCH_FLAGS=""
+		    LD_SEARCH_FLAGS=""
+fi
+
+
+	    fi
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+	    if test $do64bit = yes; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler accepts -m64 flag" >&5
+$as_echo_n "checking if compiler accepts -m64 flag... " >&6; }
+if ${tcl_cv_cc_m64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		    hold_cflags=$CFLAGS
+		    CFLAGS="$CFLAGS -m64"
+		    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  tcl_cv_cc_m64=yes
+else
+  tcl_cv_cc_m64=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+		    CFLAGS=$hold_cflags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_cc_m64" >&5
+$as_echo "$tcl_cv_cc_m64" >&6; }
+		if test $tcl_cv_cc_m64 = yes; then
+		    CFLAGS="$CFLAGS -m64"
+		    do64bit_ok=yes
+		fi
+	    fi
+
+	    # The combo of gcc + glibc has a bug related
+	    # to inlining of functions like strtod(). The
+	    # -fno-builtin flag should address this problem
+	    # but it does not work. The -fno-inline flag
+	    # is kind of overkill but it works.
+	    # Disable inlining only when one of the
+	    # files in compat/*.c is being linked in.
+	    if test x"${LIBOBJS}" != x ; then
+	        CFLAGS="$CFLAGS -fno-inline"
+	    fi
+
+	    # XIM peeking works under XFree86.
+	    $as_echo "#define PEEK_XCLOSEIM 1" >>confdefs.h
+
+
+	    ;;
+	GNU*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    if test "$have_dl" = yes; then
+		SHLIB_LD="${CC} -shared"
+		DL_OBJS=""
+		DL_LIBS="-ldl"
+		LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+		CC_SEARCH_FLAGS=""
+		LD_SEARCH_FLAGS=""
+	    else
+		ac_fn_cxx_check_header_mongrel "$LINENO" "dld.h" "ac_cv_header_dld_h" "$ac_includes_default"
+if test "x$ac_cv_header_dld_h" = xyes; then :
+
+		    SHLIB_LD="ld -shared"
+		    DL_OBJS=""
+		    DL_LIBS="-ldld"
+		    CC_SEARCH_FLAGS=""
+		    LD_SEARCH_FLAGS=""
+fi
+
+
+	    fi
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+	    ;;
+	Lynx*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    CFLAGS_OPTIMIZE=-02
+	    SHLIB_LD="${CC} -shared "
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-mshared -ldl"
+	    LD_FLAGS="-Wl,--export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    ;;
+	MP-RAS-02*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	MP-RAS-*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	NetBSD-*|FreeBSD-[1-2].*)
+	    # Not available on all versions:  check for include file.
+	    ac_fn_cxx_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+
+		# NetBSD/SPARC needs -fPIC, -fpic will not do.
+		SHLIB_CFLAGS="-fPIC"
+		SHLIB_LD="ld -Bshareable -x"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".so"
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ELF" >&5
+$as_echo_n "checking for ELF... " >&6; }
+if ${tcl_cv_ld_elf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef __ELF__
+	yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  tcl_cv_ld_elf=yes
+else
+  tcl_cv_ld_elf=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_ld_elf" >&5
+$as_echo "$tcl_cv_ld_elf" >&6; }
+		if test $tcl_cv_ld_elf = yes; then
+		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+		else
+		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+		fi
+
+else
+
+		SHLIB_CFLAGS=""
+		SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".a"
+		DL_OBJS="tclLoadAout.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+
+fi
+
+
+
+	    # FreeBSD doesn't handle version numbers with dots.
+
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	OpenBSD-*)
+	    case `arch -s` in
+	    m88k|vax)
+		SHLIB_CFLAGS=""
+		SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".a"
+		DL_OBJS="tclLoadAout.o"
+		DL_LIBS=""
+		LDFLAGS=""
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+		;;
+	    *)
+		# OpenBSD/SPARC[64] needs -fPIC, -fpic will not do.
+		case `machine` in
+		sparc|sparc64)
+		    SHLIB_CFLAGS="-fPIC";;
+	        *)
+		    SHLIB_CFLAGS="-fpic";;
+	        esac
+		SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".so"
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ELF" >&5
+$as_echo_n "checking for ELF... " >&6; }
+if ${tcl_cv_ld_elf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef __ELF__
+	yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  tcl_cv_ld_elf=yes
+else
+  tcl_cv_ld_elf=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_ld_elf" >&5
+$as_echo "$tcl_cv_ld_elf" >&6; }
+		if test $tcl_cv_ld_elf = yes; then
+		    LDFLAGS=-Wl,-export-dynamic
+		else
+		    LDFLAGS=""
+	        fi
+		;;
+	    esac
+
+	    # OpenBSD doesn't do version numbers with dots.
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	FreeBSD-*)
+	    # FreeBSD 3.* and greater have ELF.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "${TCL_THREADS}" = "1" ; then
+		# The -pthread needs to go in the CFLAGS, not LIBS
+		LIBS=`echo $LIBS | sed s/-pthread//`
+		CFLAGS="$CFLAGS -pthread"
+	    	LDFLAGS="$LDFLAGS -pthread"
+	    fi
+	    case $system in
+	    FreeBSD-3.*)
+	    	# FreeBSD-3 doesn't handle version numbers with dots.
+	    	UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    	SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+	    	TCL_LIB_VERSIONS_OK=nodots
+		;;
+	    esac
+	    ;;
+	Darwin-*)
+	    CFLAGS_OPTIMIZE="-Os"
+	    SHLIB_CFLAGS="-fno-common"
+	    # To avoid discrepancies between what headers configure sees during
+	    # preprocessing tests and compiling tests, move any -isysroot and
+	    # -mmacosx-version-min flags from CFLAGS to CPPFLAGS:
+	    CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \
+		awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
+		if ($i~/^(isysroot|mmacosx-version-min)/) print "-"$i}'`"
+	    CFLAGS="`echo " ${CFLAGS}" | \
+		awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
+		if (!($i~/^(isysroot|mmacosx-version-min)/)) print "-"$i}'`"
+	    if test $do64bit = yes; then
+		case `arch` in
+		    ppc)
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler accepts -arch ppc64 flag" >&5
+$as_echo_n "checking if compiler accepts -arch ppc64 flag... " >&6; }
+if ${tcl_cv_cc_arch_ppc64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+			    hold_cflags=$CFLAGS
+			    CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+			    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  tcl_cv_cc_arch_ppc64=yes
+else
+  tcl_cv_cc_arch_ppc64=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+			    CFLAGS=$hold_cflags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_cc_arch_ppc64" >&5
+$as_echo "$tcl_cv_cc_arch_ppc64" >&6; }
+			if test $tcl_cv_cc_arch_ppc64 = yes; then
+			    CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+			    do64bit_ok=yes
+			fi;;
+		    i386)
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler accepts -arch x86_64 flag" >&5
+$as_echo_n "checking if compiler accepts -arch x86_64 flag... " >&6; }
+if ${tcl_cv_cc_arch_x86_64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+			    hold_cflags=$CFLAGS
+			    CFLAGS="$CFLAGS -arch x86_64"
+			    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  tcl_cv_cc_arch_x86_64=yes
+else
+  tcl_cv_cc_arch_x86_64=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+			    CFLAGS=$hold_cflags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_cc_arch_x86_64" >&5
+$as_echo "$tcl_cv_cc_arch_x86_64" >&6; }
+			if test $tcl_cv_cc_arch_x86_64 = yes; then
+			    CFLAGS="$CFLAGS -arch x86_64"
+			    do64bit_ok=yes
+			fi;;
+		    *)
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Don't know how enable 64-bit on architecture \`arch\`" >&5
+$as_echo "$as_me: WARNING: Don't know how enable 64-bit on architecture \`arch\`" >&2;};;
+		esac
+	    else
+		# Check for combined 32-bit and 64-bit fat build
+		echo "$CFLAGS " | grep -E -q -- '-arch (ppc64|x86_64) ' && \
+		    echo "$CFLAGS " | grep -E -q -- '-arch (ppc|i386) ' && \
+		    fat_32_64=yes
+	    fi
+	    SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}'
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ld accepts -single_module flag" >&5
+$as_echo_n "checking if ld accepts -single_module flag... " >&6; }
+if ${tcl_cv_ld_single_module+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
+		cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int i;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  tcl_cv_ld_single_module=yes
+else
+  tcl_cv_ld_single_module=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+		LDFLAGS=$hold_ldflags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_ld_single_module" >&5
+$as_echo "$tcl_cv_ld_single_module" >&6; }
+	    if test $tcl_cv_ld_single_module = yes; then
+		SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
+	    fi
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".dylib"
+	    DL_OBJS="tclLoadDyld.o"
+	    DL_LIBS=""
+	    # Don't use -prebind when building for Mac OS X 10.4 or later only:
+	    test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\\.' '{print int($2)}'`" -lt 4 -a \
+		"`echo "${CPPFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int($2)}'`" -lt 4 && \
+		LDFLAGS="$LDFLAGS -prebind"
+	    LDFLAGS="$LDFLAGS -headerpad_max_install_names"
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ld accepts -search_paths_first flag" >&5
+$as_echo_n "checking if ld accepts -search_paths_first flag... " >&6; }
+if ${tcl_cv_ld_search_paths_first+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+		cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int i;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  tcl_cv_ld_search_paths_first=yes
+else
+  tcl_cv_ld_search_paths_first=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+		LDFLAGS=$hold_ldflags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_ld_search_paths_first" >&5
+$as_echo "$tcl_cv_ld_search_paths_first" >&6; }
+	    if test $tcl_cv_ld_search_paths_first = yes; then
+		LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
+	    PLAT_OBJS=\$\(MAC\_OSX_OBJS\)
+	    PLAT_SRCS=\$\(MAC\_OSX_SRCS\)
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use CoreFoundation" >&5
+$as_echo_n "checking whether to use CoreFoundation... " >&6; }
+	    # Check whether --enable-corefoundation was given.
+if test "${enable_corefoundation+set}" = set; then :
+  enableval=$enable_corefoundation; tcl_corefoundation=$enableval
+else
+  tcl_corefoundation=yes
+fi
+
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_corefoundation" >&5
+$as_echo "$tcl_corefoundation" >&6; }
+	    if test $tcl_corefoundation = yes; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CoreFoundation.framework" >&5
+$as_echo_n "checking for CoreFoundation.framework... " >&6; }
+if ${tcl_cv_lib_corefoundation+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		    hold_libs=$LIBS
+		    if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
+			# On Tiger there is no 64-bit CF, so remove 64-bit archs
+			# from CFLAGS et al. while testing for presence of CF.
+			# 64-bit CF is disabled in tclUnixPort.h if necessary.
+			eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc64 / /g" -e "s/-arch x86_64 / /g"`"'
+		    done; fi
+		    LIBS="$LIBS -framework CoreFoundation"
+		    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CoreFoundation.h>
+int
+main ()
+{
+CFBundleRef b = CFBundleGetMainBundle();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  tcl_cv_lib_corefoundation=yes
+else
+  tcl_cv_lib_corefoundation=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+		    if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
+			eval $v'="$hold_'$v'"'
+		    done; fi; LIBS=$hold_libs
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_lib_corefoundation" >&5
+$as_echo "$tcl_cv_lib_corefoundation" >&6; }
+		if test $tcl_cv_lib_corefoundation = yes; then
+		    LIBS="$LIBS -framework CoreFoundation"
+		    $as_echo "#define HAVE_COREFOUNDATION 1" >>confdefs.h
+
+		else
+		    tcl_corefoundation=no
+		fi
+		if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then
+		    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit CoreFoundation" >&5
+$as_echo_n "checking for 64-bit CoreFoundation... " >&6; }
+if ${tcl_cv_lib_corefoundation_64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+			for v in CFLAGS CPPFLAGS LDFLAGS; do
+			    eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"'
+			done
+			cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CoreFoundation.h>
+int
+main ()
+{
+CFBundleRef b = CFBundleGetMainBundle();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  tcl_cv_lib_corefoundation_64=yes
+else
+  tcl_cv_lib_corefoundation_64=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+			for v in CFLAGS CPPFLAGS LDFLAGS; do
+			    eval $v'="$hold_'$v'"'
+			done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_lib_corefoundation_64" >&5
+$as_echo "$tcl_cv_lib_corefoundation_64" >&6; }
+		    if test $tcl_cv_lib_corefoundation_64 = no; then
+			$as_echo "#define NO_COREFOUNDATION_64 1" >>confdefs.h
+
+		    fi
+		fi
+	    fi
+	    $as_echo "#define MAC_OSX_TCL 1" >>confdefs.h
+
+	    ;;
+	NEXTSTEP-*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="cc -nostdlib -r"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadNext.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OS/390-*)
+	    CFLAGS_OPTIMIZE=""		# Optimizer is buggy
+	    $as_echo "#define _OE_SOCKETS 1" >>confdefs.h
+	# needed in sys/socket.h
+	    ;;
+	OSF1-1.0|OSF1-1.1|OSF1-1.2)
+	    # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1
+	    SHLIB_CFLAGS=""
+	    # Hack: make package name same as library name
+	    SHLIB_LD='ld -R -export :'
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadOSF.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-1.*)
+	    # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
+	    SHLIB_CFLAGS="-fPIC"
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD="ld -shared"
+	    else
+	        SHLIB_LD="ld -non_shared"
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-V*)
+	    # Digital OSF/1
+	    SHLIB_CFLAGS=""
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD='ld -shared -expect_unresolved "*"'
+	    else
+	        SHLIB_LD='ld -non_shared -expect_unresolved "*"'
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mieee"
+            else
+		CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"
+	    fi
+	    # see pthread_intro(3) for pthread support on osf1, k.furukawa
+	    if test "${TCL_THREADS}" = "1" ; then
+		CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
+		CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
+		LIBS=`echo $LIBS | sed s/-lpthreads//`
+		if test "$GCC" = "yes" ; then
+		    LIBS="$LIBS -lpthread -lmach -lexc"
+		else
+		    CFLAGS="$CFLAGS -pthread"
+		    LDFLAGS="$LDFLAGS -pthread"
+		fi
+	    fi
+
+	    ;;
+	QNX-6*)
+	    # QNX RTP
+	    # This may work for all QNX, but it was only reported for v6.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    # dlopen is in -lc on QNX
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	RISCos-*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".a"
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    ;;
+	SCO_SV-3.2*)
+	    # Note, dlopen is available only on SCO 3.2.5 and greater. However,
+	    # this test works, since "uname -s" was non-standard in 3.2.4 and
+	    # below.
+	    if test "$GCC" = "yes" ; then
+	    	SHLIB_CFLAGS="-fPIC -melf"
+	    	LDFLAGS="$LDFLAGS -melf -Wl,-Bexport"
+	    else
+	    	SHLIB_CFLAGS="-Kpic -belf"
+	    	LDFLAGS="$LDFLAGS -belf -Wl,-Bexport"
+	    fi
+	    SHLIB_LD="ld -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SINIX*5.4*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SunOS-4*)
+	    SHLIB_CFLAGS="-PIC"
+	    SHLIB_LD="ld"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+
+	    # SunOS can't handle version numbers with dots in them in library
+	    # specs, like -ltcl7.5, so use -ltcl75 instead.  Also, it
+	    # requires an extra version number at the end of .so file names.
+	    # So, the library has to have a name like libtcl75.so.1.0
+
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	SunOS-5.[0-6])
+	    # Careful to not let 5.10+ fall into this case
+
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+	    $as_echo "#define _REENTRANT 1" >>confdefs.h
+
+	    $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    else
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+	    ;;
+	SunOS-5*)
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+	    $as_echo "#define _REENTRANT 1" >>confdefs.h
+
+	    $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		arch=`isainfo`
+		if test "$arch" = "sparcv9 sparc" ; then
+			if test "$GCC" = "yes" ; then
+			    if test "`gcc -dumpversion | awk -F. '{print $1}'`" -lt "3" ; then
+				{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&2;}
+			    else
+				do64bit_ok=yes
+				CFLAGS="$CFLAGS -m64 -mcpu=v9"
+				LDFLAGS="$LDFLAGS -m64 -mcpu=v9"
+				SHLIB_CFLAGS="-fPIC"
+			    fi
+			else
+			    do64bit_ok=yes
+			    if test "$do64bitVIS" = "yes" ; then
+				CFLAGS="$CFLAGS -xarch=v9a"
+			    	LDFLAGS="$LDFLAGS -xarch=v9a"
+			    else
+				CFLAGS="$CFLAGS -xarch=v9"
+			    	LDFLAGS="$LDFLAGS -xarch=v9"
+			    fi
+			    # Solaris 64 uses this as well
+			    #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64"
+			fi
+		elif test "$arch" = "amd64 i386" ; then
+		    if test "$GCC" = "yes" ; then
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit mode not supported with GCC on $system" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;}
+		    else
+			do64bit_ok=yes
+			CFLAGS="$CFLAGS -xarch=amd64"
+			LDFLAGS="$LDFLAGS -xarch=amd64"
+		    fi
+		else
+		    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit mode not supported for $arch" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported for $arch" >&2;}
+		fi
+	    fi
+
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		if test "$do64bit_ok" = "yes" ; then
+		    # We need to specify -static-libgcc or we need to
+		    # add the path to the sparv9 libgcc.
+		    SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc"
+		    # for finding sparcv9 libgcc, get the regular libgcc
+		    # path, remove so name and append 'sparcv9'
+		    #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..."
+		    #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir"
+		fi
+	    else
+		case $system in
+		    SunOS-5.[1-9][0-9]*)
+			SHLIB_LD='${CC} -G -z text ${LDFLAGS}';;
+		    *)
+			SHLIB_LD="/usr/ccs/bin/ld -G -z text";;
+		esac
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    fi
+	    ;;
+	ULTRIX-4.*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_SUFFIX=".a"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    if test "$GCC" != "yes" ; then
+		CFLAGS="$CFLAGS -DHAVE_TZSET -std1"
+	    fi
+	    ;;
+	UNIX_SV* | UnixWare-5*)
+	    SHLIB_CFLAGS="-KPIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
+	    # that don't grok the -Bexport option.  Test that it does.
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld accepts -Bexport flag" >&5
+$as_echo_n "checking for ld accepts -Bexport flag... " >&6; }
+if ${tcl_cv_ld_Bexport+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+		cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int i;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  tcl_cv_ld_Bexport=yes
+else
+  tcl_cv_ld_Bexport=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	        LDFLAGS=$hold_ldflags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_ld_Bexport" >&5
+$as_echo "$tcl_cv_ld_Bexport" >&6; }
+	    if test $tcl_cv_ld_Bexport = yes; then
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+    esac
+
+    if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64bit support being disabled -- don't know magic for this platform" >&5
+$as_echo "$as_me: WARNING: 64bit support being disabled -- don't know magic for this platform" >&2;}
+    fi
+
+
+
+
+    # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic
+    # Loading for Tcl -- What Became of It?".  Proc. 2nd Tcl/Tk Workshop,
+    # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need
+    # to determine which of several header files defines the a.out file
+    # format (a.out.h, sys/exec.h, or sys/exec_aout.h).  At present, we
+    # support only a file format that is more or less version-7-compatible.
+    # In particular,
+    #	- a.out files must begin with `struct exec'.
+    #	- the N_TXTOFF on the `struct exec' must compute the seek address
+    #	  of the text segment
+    #	- The `struct exec' must contain a_magic, a_text, a_data, a_bss
+    #	  and a_entry fields.
+    # The following compilation should succeed if and only if either sys/exec.h
+    # or a.out.h is usable for the purpose.
+    #
+    # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the
+    # `struct exec' includes a second header that contains information that
+    # duplicates the v7 fields that are needed.
+
+    if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/exec.h" >&5
+$as_echo_n "checking sys/exec.h... " >&6; }
+if ${tcl_cv_sysexec_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/exec.h>
+int
+main ()
+{
+
+	    struct exec foo;
+	    unsigned long seek;
+	    int flag;
+#if defined(__mips) || defined(mips)
+	    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+	    seek = N_TXTOFF (foo);
+#endif
+	    flag = (foo.a_magic == OMAGIC);
+	    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  tcl_cv_sysexec_h=usable
+else
+  tcl_cv_sysexec_h=unusable
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_sysexec_h" >&5
+$as_echo "$tcl_cv_sysexec_h" >&6; }
+	if test $tcl_cv_sysexec_h = usable; then
+	    $as_echo "#define USE_SYS_EXEC_H 1" >>confdefs.h
+
+	else
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking a.out.h" >&5
+$as_echo_n "checking a.out.h... " >&6; }
+if ${tcl_cv_aout_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+	    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <a.out.h>
+int
+main ()
+{
+
+		struct exec foo;
+		unsigned long seek;
+		int flag;
+#if defined(__mips) || defined(mips)
+		seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+		seek = N_TXTOFF (foo);
+#endif
+		flag = (foo.a_magic == OMAGIC);
+		return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  tcl_cv_aout_h=usable
+else
+  tcl_cv_aout_h=unusable
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_aout_h" >&5
+$as_echo "$tcl_cv_aout_h" >&6; }
+	    if test $tcl_cv_aout_h = usable; then
+		$as_echo "#define USE_A_OUT_H 1" >>confdefs.h
+
+	    else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/exec_aout.h" >&5
+$as_echo_n "checking sys/exec_aout.h... " >&6; }
+if ${tcl_cv_sysexecaout_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+		cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/exec_aout.h>
+int
+main ()
+{
+
+		    struct exec foo;
+		    unsigned long seek;
+		    int flag;
+#if defined(__mips) || defined(mips)
+		    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+		    seek = N_TXTOFF (foo);
+#endif
+		    flag = (foo.a_midmag == OMAGIC);
+		    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  tcl_cv_sysexecaout_h=usable
+else
+  tcl_cv_sysexecaout_h=unusable
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tcl_cv_sysexecaout_h" >&5
+$as_echo "$tcl_cv_sysexecaout_h" >&6; }
+		if test $tcl_cv_sysexecaout_h = usable; then
+		    $as_echo "#define USE_SYS_EXEC_AOUT_H 1" >>confdefs.h
+
+		else
+		    DL_OBJS=""
+		fi
+	    fi
+	fi
+    fi
+
+    # Step 5: disable dynamic loading if requested via a command-line switch.
+
+    # Check whether --enable-load was given.
+if test "${enable_load+set}" = set; then :
+  enableval=$enable_load; tcl_ok=$enableval
+else
+  tcl_ok=yes
+fi
+
+    if test "$tcl_ok" = "no"; then
+	DL_OBJS=""
+    fi
+
+    if test "x$DL_OBJS" != "x" ; then
+	BUILD_DLTEST="\$(DLTEST_TARGETS)"
+    else
+	echo "Can't figure out how to do dynamic loading or shared libraries"
+	echo "on this system."
+	SHLIB_CFLAGS=""
+	SHLIB_LD=""
+	SHLIB_SUFFIX=""
+	DL_OBJS="tclLoadNone.o"
+	DL_LIBS=""
+	LDFLAGS="$LDFLAGS_ORIG"
+	CC_SEARCH_FLAGS=""
+	LD_SEARCH_FLAGS=""
+	BUILD_DLTEST=""
+    fi
+
+    # If we're running gcc, then change the C flags for compiling shared
+    # libraries to the right flags for gcc, instead of those for the
+    # standard manufacturer compiler.
+
+    if test "$DL_OBJS" != "tclLoadNone.o" ; then
+	if test "$GCC" = "yes" ; then
+	    case $system in
+		AIX-*)
+		    ;;
+		BSD/OS*)
+		    ;;
+		IRIX*)
+		    ;;
+		NetBSD-*|FreeBSD-*|OpenBSD-*)
+		    ;;
+		Darwin-*)
+		    ;;
+		RISCos-*)
+		    ;;
+		SCO_SV-3.2*)
+		    ;;
+		ULTRIX-4.*)
+		    ;;
+		*)
+		    SHLIB_CFLAGS="-fPIC"
+		    ;;
+	    esac
+	fi
+    fi
+
+    if test "$SHARED_LIB_SUFFIX" = "" ; then
+	SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}${SHLIB_SUFFIX}'
+    fi
+    if test "$UNSHARED_LIB_SUFFIX" = "" ; then
+	UNSHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a'
+    fi
+
+    if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then
+        LIB_SUFFIX=${SHARED_LIB_SUFFIX}
+        MAKE_LIB='${SHLIB_LD} -o $@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}'
+        INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
+    else
+        LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}
+
+        if test "$RANLIB" = "" ; then
+            MAKE_LIB='$(STLIB_LD) $@ ${OBJS}'
+            INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
+        else
+            MAKE_LIB='${STLIB_LD} $@ ${OBJS} ; ${RANLIB} $@'
+            INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(LIB_FILE))'
+        fi
+
+    fi
+
+
+    # Stub lib does not depend on shared/static configuration
+    if test "$RANLIB" = "" ; then
+        MAKE_STUB_LIB='${STLIB_LD} $@ ${STUB_LIB_OBJS}'
+        INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)'
+    else
+        MAKE_STUB_LIB='${STLIB_LD} $@ ${STUB_LIB_OBJS} ; ${RANLIB} $@'
+        INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(STUB_LIB_FILE))'
+    fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+SVN_VERSION=`svnversion $srcdir | sed 's/Unversioned directory/unknown/'`
+SVN_URL=`readlink -e $srcdir | xargs svn info | sed -ne 's/^URL: //p'`
+
+make_command=""
+for m in "$MAKE" make gmake gnumake ; do
+  if test "x${m}" != "x" ; then
+    if  ( sh -c "$m --version" 2>/dev/null | grep GNU >/dev/null ) ; then
+      make_command=$m; break;
+    fi
+  fi
+done
+if test "x${make_command}" = "x" ; then
+  as_fn_error $? "Requires GNU make. You can specify a version with \$MAKE" "$LINENO" 5
+fi
+
+# Check whether --enable-lang was given.
+if test "${enable_lang+set}" = set; then :
+  enableval=$enable_lang;
+else
+  enable_lang=yes
+fi
+
+
+ENABLE_LANG=
+if test "$enable_lang" != "no" ; then
+    ENABLE_LANG="yes"
+fi
+
+# Check whether --enable-gui was given.
+if test "${enable_gui+set}" = set; then :
+  enableval=$enable_gui;
+else
+  enable_gui=yes
+fi
+
+
+ENABLE_GUI=
+if test "$enable_gui" != "no" ; then
+    ENABLE_GUI="yes"
+fi
+
+TCL_VERSION="8.4"
+for dir in \
+ ${exec_prefix} \
+ ${exec_prefix}/lib ; do
+  tclconfig="${dir}/tclConfig.sh"
+  if test -f "$tclconfig" ; then
+    . $tclconfig
+    break
+  fi
+done
+
+TK_VERSION="8.4"
+for dir in \
+ ${exec_prefix} \
+ ${exec_prefix}/lib ; do
+  tkconfig="${dir}/tkConfig.sh"
+  if test -f "$tkconfig" ; then
+    . $tkconfig
+    break
+  fi
+done
+
+
+# Check whether --with-ffmpeg was given.
+if test "${with_ffmpeg+set}" = set; then :
+  withval=$with_ffmpeg;
+else
+  with_ffmpeg=yes
+fi
+
+
+
+# Check whether --with-tclsh was given.
+if test "${with_tclsh+set}" = set; then :
+  withval=$with_tclsh;
+else
+  with_tclsh=yes
+fi
+
+
+TCLSH=""
+if test "${with_tclsh}" != "no" ; then
+  tclsh="tclsh${TCL_VERSION}"
+  if test "${with_tclsh}" = "yes" ; then
+    # Extract the first word of "${tclsh}", so it can be a program name with args.
+set dummy ${tclsh}; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TCLSH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $TCLSH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_TCLSH="$TCLSH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="${exec_prefix}/bin:${PATH}"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_TCLSH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+TCLSH=$ac_cv_path_TCLSH
+if test -n "$TCLSH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TCLSH" >&5
+$as_echo "$TCLSH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    # Extract the first word of "${tclsh}", so it can be a program name with args.
+set dummy ${tclsh}; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TCLSH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $TCLSH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_TCLSH="$TCLSH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="${with_tclsh}/bin:${with_tclsh}"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_TCLSH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+TCLSH=$ac_cv_path_TCLSH
+if test -n "$TCLSH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TCLSH" >&5
+$as_echo "$TCLSH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  if test "x${TCLSH}" = "x" ; then
+    as_fn_error $? "can't find tclsh" "$LINENO" 5
+  fi
+fi
+
+
+TCL_INC_SPEC="$TCL_INCLUDE_SPEC"
+
+
+# Check whether --with-vtk was given.
+if test "${with_vtk+set}" = set; then :
+  withval=$with_vtk;
+else
+  with_vtk=yes
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for vtk" >&5
+$as_echo_n "checking for vtk... " >&6; }
+VTK_VERSION=6.0
+VTK_TCL_DIR=""
+
+ENABLE_VTK=
+if test "$with_vtk" != "no" ; then
+  if test "$with_vtk" != "yes" ; then
+    VTK_VERSION=$with_vtk
+  fi
+  if test "x$with_vtk" != "x" ; then
+    ENABLE_VTK=yes
+    for path in \
+     $libdir/tcltk \
+     $exec_prefix/lib/tcltk \
+     $prefix/lib/tcltk \
+     $libdir \
+     $prefix/lib \
+     $exec_prefix/lib \
+     /usr/lib
+    do
+      if test -d "$path/vtk-$VTK_VERSION" ; then
+        VTK_TCL_DIR="$path/vtk-$VTK_VERSION"
+      fi
+      if test "x${VTK_TCL_DIR}" != "x" ; then
+        break
+      fi
+    done
+  fi
+else
+  if test "${ENABLE_GUI}" = "yes" ; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: VTK missing: Rappture GUI requires VTK for some features" >&5
+$as_echo "$as_me: WARNING: VTK missing: Rappture GUI requires VTK for some features" >&2;}
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $VTK_TCL_DIR" >&5
+$as_echo "$VTK_TCL_DIR" >&6; }
+
+# Check whether --enable-vtkdicom was given.
+if test "${enable_vtkdicom+set}" = set; then :
+  enableval=$enable_vtkdicom;
+else
+  enable_vtkdicom=no
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for vtkDICOM" >&5
+$as_echo_n "checking for vtkDICOM... " >&6; }
+ENABLE_VTK_DICOM=
+if test "$enable_vtkdicom" != "no" ; then
+    ENABLE_VTK_DICOM="yes"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_vtkdicom" >&5
+$as_echo "$enable_vtkdicom" >&6; }
+
+
+
+# Check whether --with-matlab was given.
+if test "${with_matlab+set}" = set; then :
+  withval=$with_matlab;
+else
+  with_matlab=yes
+fi
+
+
+MCC=""
+MEX=""
+MEX_ARCH=""
+MEXEXT=""
+MATLAB=
+if test "$with_matlab" != "no" ; then
+  if test "$with_matlab" = "yes" ; then
+    # Extract the first word of "matlab", so it can be a program name with args.
+set dummy matlab; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MATLAB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MATLAB in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MATLAB="$MATLAB" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MATLAB="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MATLAB=$ac_cv_path_MATLAB
+if test -n "$MATLAB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MATLAB" >&5
+$as_echo "$MATLAB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    # Extract the first word of "matlab", so it can be a program name with args.
+set dummy matlab; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MATLAB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MATLAB in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MATLAB="$MATLAB" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="${with_matlab}/bin:${with_matlab}"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MATLAB="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MATLAB=$ac_cv_path_MATLAB
+if test -n "$MATLAB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MATLAB" >&5
+$as_echo "$MATLAB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+
+if test "x$MATLAB" != "x" ; then
+  # Found matlab.  May be a symlink to the real binary.  Run "matlab -e"
+  # to tell where matlab is installed.
+
+  matlab_bindir=`${MATLAB} -e | grep "MATLAB=" | sed s/MATLAB=//`/bin
+
+  # Now see if we can find "mex" or "mexext" there.
+  # Extract the first word of "mex", so it can be a program name with args.
+set dummy mex; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MEX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MEX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MEX="$MEX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in ${matlab_bindir}
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MEX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MEX=$ac_cv_path_MEX
+if test -n "$MEX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MEX" >&5
+$as_echo "$MEX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  # Extract the first word of "mexext", so it can be a program name with args.
+set dummy mexext; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MEXEXT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MEXEXT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MEXEXT="$MEXEXT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in ${matlab_bindir}
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MEXEXT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MEXEXT=$ac_cv_path_MEXEXT
+if test -n "$MEXEXT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MEXEXT" >&5
+$as_echo "$MEXEXT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+  # Run "mexext" to get the expected module extension for this platform.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mex extension" >&5
+$as_echo_n "checking for mex extension... " >&6; }
+  if test "x$MEXEXT" != "x" ; then
+    MEXEXT=`$MEXEXT`
+  else
+    MEXEXT="mexglx"
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MEXEXT" >&5
+$as_echo "$MEXEXT" >&6; }
+  # Extract the first word of "mcc", so it can be a program name with args.
+set dummy mcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MCC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MCC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MCC="$MCC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in ${matlab_bindir}
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MCC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MCC=$ac_cv_path_MCC
+if test -n "$MCC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MCC" >&5
+$as_echo "$MCC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mcc extension" >&5
+$as_echo_n "checking for mcc extension... " >&6; }
+fi
+
+
+
+# Check whether --with-octave was given.
+if test "${with_octave+set}" = set; then :
+  withval=$with_octave;
+else
+  with_octave=yes
+fi
+
+
+OCTAVE=
+OCTAVE_VERSION=
+OCTAVE_VERSION_MAJOR=
+MKOCTFILE2=
+MKOCTFILE3=
+
+if test "$with_octave" != "no" ; then
+  if test "$with_octave" = "yes" ; then
+    # Extract the first word of "octave", so it can be a program name with args.
+set dummy octave; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_OCTAVE+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $OCTAVE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_OCTAVE="$OCTAVE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_OCTAVE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+OCTAVE=$ac_cv_path_OCTAVE
+if test -n "$OCTAVE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCTAVE" >&5
+$as_echo "$OCTAVE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    # Extract the first word of "mkoctfile", so it can be a program name with args.
+set dummy mkoctfile; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MKOCTFILE+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MKOCTFILE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MKOCTFILE="$MKOCTFILE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MKOCTFILE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MKOCTFILE=$ac_cv_path_MKOCTFILE
+if test -n "$MKOCTFILE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKOCTFILE" >&5
+$as_echo "$MKOCTFILE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    OCTAVE=$with_octave
+    MKOCTFILE=`dirname $with_octave`/mkoctfile
+  fi
+fi
+
+if test "x${OCTAVE}" != "x" ; then
+  OCTAVE_VERSION=`${OCTAVE} -v | grep version | cut -d' ' -f4`
+  OCTAVE_VERSION_MAJOR=`echo ${OCTAVE_VERSION} | cut -d'.' -f1`
+  if test "${OCTAVE_VERSION_MAJOR}" == "3" ; then
+    OCTAVE3=$OCTAVE
+    MKOCTFILE3=$MKOCTFILE
+  fi
+  if test "${OCTAVE_VERSION_MAJOR}" == "2" ; then
+    OCTAVE2=$OCTAVE
+    MKOCTFILE2=$MKOCTFILE
+  fi
+fi
+
+#
+# Check for octave3 before octave2 so that we can override the
+# OCTAVE_VERSION variables.
+#
+# Rappture doesn't normally really support both octave2 and octave3
+# simultaneously.  NANOhub has a hacked version of octave3 that
+# looks for OCTAVE_LOADPATH before looking at OCTAVE_PATH (i.e.
+# OCTAVE_PATH tells octave2 where to load the rappture bindings
+# and OCTAVE_LOADPATH tells octave3 where to load).
+#
+# Usually you will have installed either octave2 or octave3, but
+# not both.
+#
+
+# Check if octave3 was designated *in addition* to the installed version.
+# This can override the default version if they are the same versions.
+
+
+# Check whether --with-mkoctfile3 was given.
+if test "${with_mkoctfile3+set}" = set; then :
+  withval=$with_mkoctfile3;
+else
+  with_mkoctfile3=no
+fi
+
+
+if test "$with_mkoctfile3" != "no" ; then
+  if test "$with_mkoctfile3" = "yes" ; then
+    # Extract the first word of "mkoctfile", so it can be a program name with args.
+set dummy mkoctfile; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_mkoctfile3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $mkoctfile3 in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_mkoctfile3="$mkoctfile3" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_mkoctfile3="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+mkoctfile3=$ac_cv_path_mkoctfile3
+if test -n "$mkoctfile3"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mkoctfile3" >&5
+$as_echo "$mkoctfile3" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MKOCTFILE3=$with_mkoctfile3
+  fi
+  OCTAVE_VERSION=`${MKOCTFILE3} --version 2>&1 | cut -d' ' -f3`
+  OCTAVE_VERSION_MAJOR=`echo ${OCTAVE_VERSION} | cut -d'.' -f1`
+fi
+
+# Check if mkoctfile2 was designated *in addition* to the installed version.
+# This can override the default version if they are the same versions.
+
+# Check whether --with-mkoctfile2 was given.
+if test "${with_mkoctfile2+set}" = set; then :
+  withval=$with_mkoctfile2;
+else
+  with_mkoctfile2=no
+fi
+
+
+if test "$with_mkoctfile2" != "no" ; then
+  if test "$with_mkoctfile2" = "yes" ; then
+    # Extract the first word of "mkoctfile", so it can be a program name with args.
+set dummy mkoctfile; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_mkoctfile2+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $mkoctfile2 in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_mkoctfile2="$mkoctfile2" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_mkoctfile2="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+mkoctfile2=$ac_cv_path_mkoctfile2
+if test -n "$mkoctfile2"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mkoctfile2" >&5
+$as_echo "$mkoctfile2" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MKOCTFILE2=$with_mkoctfile2
+  fi
+  # Have to use octave to get a version, instead of mkoctfile.
+  octave=`dirname $MKOCTFILE2`/octave
+  OCTAVE_VERSION=`${octave} -v | grep version | cut -d' ' -f4`
+  OCTAVE_VERSION_MAJOR=`echo ${OCTAVE_VERSION} | cut -d'.' -f1`
+fi
+
+
+
+# Check whether --with-perl was given.
+if test "${with_perl+set}" = set; then :
+  withval=$with_perl;
+else
+  with_perl=yes
+fi
+
+
+PERL=
+PERL_INCLUDES=
+PERL_ARCHLIB=
+PERL_ARCHLIBEXP=
+PERL_VERSION=
+PERL_VENDORLIB=
+PERL_PRIVLIB=
+PERL_CPPFLAGS=
+PERL_CCFlAGS=
+PERL_VERSION_RV=
+XSUBPP=
+PERL_LIBSPEC=
+if test "$with_perl" != "no" ; then
+  if test "$with_perl" != "yes" ; then
+    # Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$with_perl/bin:$with_perl"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PERL=$ac_cv_path_PERL
+if test -n "$PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    # Extract the first word of "xsubpp", so it can be a program name with args.
+set dummy xsubpp; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XSUBPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $XSUBPP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_XSUBPP="$XSUBPP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$with_perl/bin:$with_perl"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_XSUBPP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+XSUBPP=$ac_cv_path_XSUBPP
+if test -n "$XSUBPP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSUBPP" >&5
+$as_echo "$XSUBPP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    # Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PERL=$ac_cv_path_PERL
+if test -n "$PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    # Extract the first word of "xsubpp", so it can be a program name with args.
+set dummy xsubpp; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XSUBPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $XSUBPP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_XSUBPP="$XSUBPP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_XSUBPP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+XSUBPP=$ac_cv_path_XSUBPP
+if test -n "$XSUBPP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSUBPP" >&5
+$as_echo "$XSUBPP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  if test "x${PERL}" != "x" ; then
+    PERL_ARCHLIB=`${PERL} -MConfig -e 'print $Config{archlib}'`
+    PERL_VERSION=`${PERL} -MConfig -e 'print $Config{version}'`
+    PERL_CCFLAGS=`${PERL} -MConfig -e 'print $Config{ccflags}'`
+    PERL_CPPFLAGS=`${PERL} -MConfig -e 'print $Config{cppflags}'`
+    PERL_VENDORLIB=`${PERL} -MConfig -e 'print $Config{vendorlib}'`
+    PERL_PRIVLIB=`${PERL} -MConfig -e 'print $Config{privlib}'`
+    PERL_INSTALLARCHLIB=`${PERL} -MConfig -e 'print $Config{installarchlib}'`
+    PERL_ARCHLIBEXP=`${PERL} -MConfig -e 'print $Config{archlibexp}'`
+    PERL_VERSION_RV=`echo ${PERL_VERSION} | cut -d'.' -f1-2`
+    # libperl may or may not be installed.  Check for its existence.
+    if test -f "${PERL_ARCHLIBEXP}/CORE/libperl${SHLIB_SUFFIX}" ; then
+      PERL_LIBSPEC="-L${PERL_ARCHLIBEXP}/CORE -lperl"
+    fi
+  fi
+fi
+
+
+PYTHON=""
+PYTHON_CFLAGS=""
+PYTHON_CPPFLAGS=""
+PYTHON_DISTUTILS=""
+PYTHON_INCLUDES=""
+PYTHON_LDFLAGS=""
+PYTHON_LIB=""
+PYTHON_LIBDIR=""
+PYTHON_SITE_DIR=""
+PYTHON_SITE_PACKAGES=""
+PYTHON_VERSION=""
+pythondir=""
+
+# Check whether --with-python was given.
+if test "${with_python+set}" = set; then :
+  withval=$with_python;
+else
+  with_python=yes
+fi
+
+
+if test "$with_python" != "no" ; then
+  if test "$with_python" = "yes" ; then
+    # Extract the first word of "python python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5", so it can be a program name with args.
+set dummy python python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PYTHON in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    # Extract the first word of "python", so it can be a program name with args.
+set dummy python; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PYTHON in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="${with_python}/bin:${with_python}"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python version" >&5
+$as_echo_n "checking for Python version... " >&6; }
+  if test "x${PYTHON}" != "x"; then
+    PYTHON_VERSION=`${PYTHON} -c "import sys; print sys.version[0:3]"`
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_VERSION" >&5
+$as_echo "$PYTHON_VERSION" >&6; }
+fi
+
+if test "x${PYTHON_VERSION}" != "x"; then
+  PYTHON_INCLUDES=$incdir
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python distutils" >&5
+$as_echo_n "checking for Python distutils... " >&6; }
+  PYTHON_DISTUTILS=""
+  ${PYTHON} -c "from distutils.core import setup; setup(name='test')" \
+        build build_ext 2>&1 > /dev/null
+  if test $? = 0 ; then
+    PYTHON_DISTUTILS="yes"
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_DISTUTILS" >&5
+$as_echo "$PYTHON_DISTUTILS" >&6; }
+  if test "${PYTHON_DISTUTILS}" = "yes" ; then
+    PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib()"`
+    #
+    # Check for Python include path
+    #
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking path to Python headers" >&5
+$as_echo_n "checking path to Python headers... " >&6; }
+    PYTHON_INCDIR=`${PYTHON} -c "import distutils.sysconfig; \
+     print distutils.sysconfig.get_python_inc();"`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_INCDIR" >&5
+$as_echo "$PYTHON_INCDIR" >&6; }
+    #
+    # Python distutils found, get settings from python directly
+    #
+    PYTHON_SITE_DIR="`${PYTHON} -c 'from distutils import sysconfig; print sysconfig.get_python_lib(0);'`"
+
+    PYTHON_CFLAGS="`$PYTHON -c 'from distutils import sysconfig; flags = [\"-I\" + sysconfig.get_python_inc(0), \"-I\" + sysconfig.get_python_inc(1), \" \".join(sysconfig.get_config_var(\"CFLAGS\").split())]; print \" \".join(flags);'`"
+    PYTHON_LDFLAGS="`$PYTHON -c 'from distutils import sysconfig; libs = sysconfig.get_config_var(\"LIBS\").split() + sysconfig.get_config_var(\"SYSLIBS\").split(); libs.append(\"-lpython\"+sysconfig.get_config_var(\"VERSION\")); print \" \".join(libs);'`"
+    PYTHON_LIB="`$PYTHON -c 'from distutils import sysconfig; print \"python\" + sysconfig.get_config_var(\"VERSION\");'`"
+    PYTHON_LIBDIR="`$PYTHON -c 'from distutils import sysconfig; print sysconfig.get_config_var(\"LIBDIR\");'`"
+    save_CPPFLAGS=$CPPFLAGS
+    CPPFLAGS="$CPPFLAGS -I${PYTHON_INCDIR}"
+    for ac_header in Python.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "Python.h" "ac_cv_header_Python_h" "$ac_includes_default"
+if test "x$ac_cv_header_Python_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PYTHON_H 1
+_ACEOF
+ found=yes
+else
+  found=no
+fi
+
+done
+
+    CPPFLAGS=$save_CPPFLAGS
+    if test "$found" = "no" ; then
+      PYTHON_DISTUTILS=""
+    fi
+  fi
+fi
+
+
+
+# Check whether --with-java was given.
+if test "${with_java+set}" = set; then :
+  withval=$with_java;
+else
+  with_java=yes
+fi
+
+JAVA=""
+JAVAH=""
+JAVAC=""
+JAVA_DEV_PKG="no"
+
+if test "${with_java}" != "no" ; then
+  if test "${with_java}" = "yes" ; then
+    # Extract the first word of "java", so it can be a program name with args.
+set dummy java; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAVA+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $JAVA in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_JAVA="$JAVA" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_JAVA="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+JAVA=$ac_cv_path_JAVA
+if test -n "$JAVA"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA" >&5
+$as_echo "$JAVA" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    # Extract the first word of "javac", so it can be a program name with args.
+set dummy javac; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAVAC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $JAVAC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_JAVAC="$JAVAC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_JAVAC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+JAVAC=$ac_cv_path_JAVAC
+if test -n "$JAVAC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAC" >&5
+$as_echo "$JAVAC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    # Extract the first word of "javah", so it can be a program name with args.
+set dummy javah; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAVAH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $JAVAH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_JAVAH="$JAVAH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_JAVAH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+JAVAH=$ac_cv_path_JAVAH
+if test -n "$JAVAH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAH" >&5
+$as_echo "$JAVAH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    # Extract the first word of "java", so it can be a program name with args.
+set dummy java; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAVA+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $JAVA in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_JAVA="$JAVA" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="${with_java}/bin:${with_java}"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_JAVA="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+JAVA=$ac_cv_path_JAVA
+if test -n "$JAVA"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA" >&5
+$as_echo "$JAVA" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    # Extract the first word of "javac", so it can be a program name with args.
+set dummy javac; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAVAC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $JAVAC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_JAVAC="$JAVAC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="${with_java}/bin:${with_java}"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_JAVAC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+JAVAC=$ac_cv_path_JAVAC
+if test -n "$JAVAC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAC" >&5
+$as_echo "$JAVAC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    # Extract the first word of "javah", so it can be a program name with args.
+set dummy javah; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAVAH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $JAVAH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_JAVAH="$JAVAH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="${with_java}/bin:${with_java}"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_JAVAH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+JAVAH=$ac_cv_path_JAVAH
+if test -n "$JAVAH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAH" >&5
+$as_echo "$JAVAH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+JDK=
+JAVA_INC_DIR=
+JAVA_INC_SPEC=
+
+# If java exists, let's look for the jni.h file.
+if test "x${JAVA}" != "x" ; then
+  for d in \
+   ${with_java} \
+   ${JAVA_HOME} \
+   /apps/java/jdk1.6* \
+   /opt/sun-jdk-1.6* \
+   /opt/icedtea6-* \
+   /opt/sun-jdk-1.5* \
+   /usr/lib/jvm/*sun* \
+   /usr/lib/jvm/*icedtea* \
+   /usr/lib/jvm/*openjdk*
+  do
+    if test -r "${d}/include/jni.h" ; then
+      JDK=${d}
+      JAVA_HOME=$JDK
+      JAVA_INC_DIR=${JDK}/include
+      JAVA_INC_SPEC="-I${JDK}/include -I${JDK}/include/linux"
+      break;
+    fi
+    if test -r "${d}/Headers/jni.h" ; then
+      JDK=${d}
+      JAVA_HOME=$JDK
+      JAVA_INC_DIR=${JDK}/Headers
+      JAVA_INC_SPEC="-I${JDK}/Headers -I${JDK}/Headers/macos"
+      break;
+    fi
+  done
+fi
+
+
+
+# Check whether --with-R was given.
+if test "${with_R+set}" = set; then :
+  withval=$with_R;
+else
+  with_R=yes
+fi
+
+
+R=""
+if test "$with_R" != "no" ; then
+  if test "$with_R" = "yes" ; then
+    # Extract the first word of "R", so it can be a program name with args.
+set dummy R; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_R+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $R in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_R="$R" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_R="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+R=$ac_cv_path_R
+if test -n "$R"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $R" >&5
+$as_echo "$R" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    # Extract the first word of "R", so it can be a program name with args.
+set dummy R; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_R+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $R in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_R="$R" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="${with_R}/bin:${with_R}"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_R="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+R=$ac_cv_path_R
+if test -n "$R"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $R" >&5
+$as_echo "$R" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+
+
+# Check whether --with-ruby was given.
+if test "${with_ruby+set}" = set; then :
+  withval=$with_ruby;  RUBY=$withval
+else
+   RUBY=ruby
+fi
+
+
+# Check whether --with-ruby_sitelibdir was given.
+if test "${with_ruby_sitelibdir+set}" = set; then :
+  withval=$with_ruby_sitelibdir;  ruby_sitelibdir=$withval
+else
+   ruby_sitelibdir=NONE
+fi
+
+
+
+
+RUBY_VERSION_CODE=`$RUBY -e "puts RUBY_VERSION.gsub(/\./, '')"`
+
+
+RUBY_CONFIG_SO_NAME=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['RUBY_SO_NAME'] || '')"`
+RUBY_CONFIG_ARCHDIR=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['archdir'] || '')"`
+RUBY_CONFIG_ARCH=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['arch'] || '')"`
+RUBY_CONFIG_LIBDIR=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['libdir'] || '')"`
+RUBY_CONFIG_BINDIR=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['bindir'] || '')"`
+RUBY_CONFIG_RUBYHDRDIR=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['rubyhdrdir'] || '')"`
+RUBY_CONFIG_CFLAGS=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['CFLAGS'] || '')"`
+RUBY_CONFIG_LIBS=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['LIBS'] || '')"`
+RUBY_CONFIG_DLDLIBS=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['DLDLIBS'] || '')"`
+RUBY_CONFIG_LDFLAGS=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['LDFLAGS'] || '')"`
+RUBY_CONFIG_LIBRUBYARG=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['LIBRUBYARG'] || '')"`
+RUBY_CONFIG_LIBRUBYARG_STATIC=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['LIBRUBYARG_STATIC'] || '')"`
+RUBY_CONFIG_CCDLFLAGS=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['CCDLFLAGS'] || '')"`
+
+if test "x${RUBY_CONFIG_RUBYHDRDIR}x" != "xx"; then
+  # 1.9
+  RUBY_CPPFLAGS="-I${RUBY_CONFIG_RUBYHDRDIR}"
+  RUBY_CPPFLAGS="${RUBY_CPPFLAGS} -I${RUBY_CONFIG_RUBYHDRDIR}/${RUBY_CONFIG_ARCH}"
+else
+  # 1.8
+  RUBY_CPPFLAGS="-I${RUBY_CONFIG_ARCHDIR}"
+fi
+
+
+RUBY_CFLAGS="${RUBY_CONFIG_CFLAGS} ${RUBY_CONFIG_CCDLFLAGS}"
+
+
+RUBY_CXXFLAGS="${RUBY_CONFIG_CFLAGS} ${RUBY_CONFIG_CCDLFLAGS}"
+
+
+RUBY_LDFLAGS="-L${RUBY_CONFIG_ARCHDIR} -L${RUBY_CONFIG_LIBDIR} ${RUBY_CONFIG_LDFLAGS}"
+
+
+RUBY_LIBS="${RUBY_CONFIG_LIBS} ${RUBY_CONFIG_DLDLIBS}"
+
+
+RUBY_LIBRUBYARG="${RUBY_CONFIG_LIBRUBYARG}"
+
+
+RUBY_LIBRUBYARG_STATIC="${RUBY_CONFIG_LIBRUBYARG_STATIC}"
+
+
+if test "x${ruby_sitelibdir}x" != "xNONEx"
+then
+  RUBY_SITELIBDIR="${ruby_sitelibdir}"
+else
+  if test "x${prefix}x" = "xNONEx"
+  then
+    RUBY_SITELIBDIR=`
+          $RUBY -rrbconfig -e "puts(Config::CONFIG['sitelibdir'] || '')"`
+  else
+    sitelibdir_no_prefix=`$RUBY -rrbconfig \
+    -e "include Config; \
+    puts CONFIG['sitelibdir'].sub(CONFIG['prefix'], '')"`
+    RUBY_SITELIBDIR="${prefix}/${sitelibdir_no_prefix}"
+  fi
+fi
+
+
+CPPFLAGS_save="${CPPFLAGS}"
+CPPFLAGS="${CPPFLAGS} ${RUBY_CPPFLAGS}"
+CXXFLAGS="${CPPFLAGS}"
+for ac_header in ruby.h
+do :
+  ac_fn_cxx_check_header_mongrel "$LINENO" "ruby.h" "ac_cv_header_ruby_h" "$ac_includes_default"
+if test "x$ac_cv_header_ruby_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_RUBY_H 1
+_ACEOF
+
+fi
+
+done
+
+HAVE_RUBY_H=${ac_cv_header_ruby_h}
+
+
+for ac_header in node.h
+do :
+  ac_fn_cxx_check_header_compile "$LINENO" "node.h" "ac_cv_header_node_h" "
+#include <ruby.h>
+
+"
+if test "x$ac_cv_header_node_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_NODE_H 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in ruby/node.h
+do :
+  ac_fn_cxx_check_header_compile "$LINENO" "ruby/node.h" "ac_cv_header_ruby_node_h" "
+			     #include <ruby.h>
+
+"
+if test "x$ac_cv_header_ruby_node_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_RUBY_NODE_H 1
+_ACEOF
+
+$as_echo "#define REALLY_HAVE_RUBY_NODE_H /**/" >>confdefs.h
+
+fi
+
+done
+
+for ac_header in version.h
+do :
+  ac_fn_cxx_check_header_compile "$LINENO" "version.h" "ac_cv_header_version_h" "
+#include <ruby.h>
+
+"
+if test "x$ac_cv_header_version_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_VERSION_H 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in env.h
+do :
+  ac_fn_cxx_check_header_compile "$LINENO" "env.h" "ac_cv_header_env_h" "
+#include <ruby.h>
+
+"
+if test "x$ac_cv_header_env_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ENV_H 1
+_ACEOF
+
+fi
+
+done
+
+
+CPPFLAGS="${CPPFLAGS_save}"
+
+
+case $host_os in
+  *mingw32* ) MINGW32=yes;;
+	  * ) MINGW32=no;;
+esac
+
+
+if test x"${MINGW32}"x = xyesx; then
+
+RUBY_LIBS=`echo ${RUBY_LIBS} | sed -e "s%oldnames.lib%-lmoldname%"`
+RUBY_LIBS=`echo ${RUBY_LIBS} | sed -e "s%user32.lib%-luser32%"`
+RUBY_LIBS=`echo ${RUBY_LIBS} | sed -e "s%advapi32.lib%-ladvapi32%"`
+RUBY_LIBS=`echo ${RUBY_LIBS} | sed -e "s%ws2_32.lib%-lws2_32%"`
+RUBY_LIBRUBYARG=`echo ${RUBY_LIBRUBYARG} | sed -e "s%\(msvcrt-ruby.*\).lib%${RUBY_CONFIG_BINDIR}/\1.dll%"`
+RUBY_LIBRUBYARG_STATIC=`echo ${RUBY_LIBRUBYARG_STATIC} | sed -e "s%\(msvcrt-ruby.*\).lib%${RUBY_CONFIG_LIBDIR}/\1.lib%"`
+
+fi
+
+
+
+RP_BASE=`pwd`
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to build libraries" >&5
+$as_echo_n "checking how to build libraries... " >&6; }
+    # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; tcl_ok=$enableval
+else
+  tcl_ok=yes
+fi
+
+
+    if test "${enable_shared+set}" = set; then
+	enableval="$enable_shared"
+	tcl_ok=$enableval
+    else
+	tcl_ok=yes
+    fi
+
+    if test "$tcl_ok" = "yes" ; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: shared" >&5
+$as_echo "shared" >&6; }
+	SHARED_BUILD=1
+    else
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: static" >&5
+$as_echo "static" >&6; }
+	SHARED_BUILD=0
+	$as_echo "#define STATIC_BUILD 1" >>confdefs.h
+
+    fi
+
+
+#--------------------------------------------------------------------
+# This macro figures out what flags to use with the compiler/linker
+# when building shared/static debug/optimized objects.  This information
+# is all taken from the tclConfig.sh file.
+#--------------------------------------------------------------------
+
+if test -f "${exec_prefix}/lib/tclConfig.sh" ; then
+  . ${exec_prefix}/lib/tclConfig.sh
+fi
+if test -f "${exec_prefix}/lib/tkConfig.sh" ; then
+  . ${exec_prefix}/lib/tkConfig.sh
+fi
+
+# -----------------------------------------------------------------------
+#
+# Compiler characteristics:
+#   Check for existence of types of size_t and pid_t
+#
+# -----------------------------------------------------------------------
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+	       not a universal capable compiler
+	     #endif
+	     typedef int dummy;
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+	# Check for potential -arch flags.  It is not universal unless
+	# there are at least two -arch flags with different values.
+	ac_arch=
+	ac_prev=
+	for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+	 if test -n "$ac_prev"; then
+	   case $ac_word in
+	     i?86 | x86_64 | ppc | ppc64)
+	       if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+		 ac_arch=$ac_word
+	       else
+		 ac_cv_c_bigendian=universal
+		 break
+	       fi
+	       ;;
+	   esac
+	   ac_prev=
+	 elif test "x$ac_word" = "x-arch"; then
+	   ac_prev=arch
+	 fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+	     #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+		     && LITTLE_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+		#include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+short int ascii_mm[] =
+		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+		short int ascii_ii[] =
+		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+		int use_ascii (int i) {
+		  return ascii_mm[i] + ascii_ii[i];
+		}
+		short int ebcdic_ii[] =
+		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+		short int ebcdic_mm[] =
+		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+		int use_ebcdic (int i) {
+		  return ebcdic_mm[i] + ebcdic_ii[i];
+		}
+		extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+	      ac_cv_c_bigendian=yes
+	    fi
+	    if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+	      if test "$ac_cv_c_bigendian" = unknown; then
+		ac_cv_c_bigendian=no
+	      else
+		# finding both strings is unlikely to happen, but who knows?
+		ac_cv_c_bigendian=unknown
+	      fi
+	    fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	     /* Are we little or big endian?  From Harbison&Steele.  */
+	     union
+	     {
+	       long int l;
+	       char c[sizeof (long int)];
+	     } u;
+	     u.l = 1;
+	     return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
+else
+  ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+     ;; #(
+   *)
+     as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+$as_echo_n "checking size of int... " >&6; }
+if ${ac_cv_sizeof_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_int" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (int)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_int=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+$as_echo "$ac_cv_sizeof_int" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if ${ac_cv_sizeof_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_long=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
+$as_echo_n "checking size of long long... " >&6; }
+if ${ac_cv_sizeof_long_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_long_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_long_long=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
+$as_echo "$ac_cv_sizeof_long_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
+$as_echo_n "checking size of void *... " >&6; }
+if ${ac_cv_sizeof_void_p+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_void_p" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (void *)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_void_p=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
+$as_echo "$ac_cv_sizeof_void_p" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
+_ACEOF
+
+
+
+SIZEOF_LONG="${ac_cv_sizeof_long}"
+SIZEOF_LONG_LONG="${ac_cv_sizeof_long_long}"
+SIZEOF_VOID_P="${ac_cv_sizeof_void_p}"
+SIZEOF_INT="${ac_cv_sizeof_int}"
+
+
+#--------------------------------------------------------------------
+# Set the default compiler switches based on the --enable-symbols
+# option.
+#--------------------------------------------------------------------
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for build with symbols" >&5
+$as_echo_n "checking for build with symbols... " >&6; }
+    # Check whether --enable-symbols was given.
+if test "${enable_symbols+set}" = set; then :
+  enableval=$enable_symbols; tcl_ok=$enableval
+else
+  tcl_ok=no
+fi
+
+# FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT.
+    if test "$tcl_ok" = "no"; then
+	CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)'
+	LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)'
+	DBGX=""
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    else
+	CFLAGS_DEFAULT='$(CFLAGS_DEBUG)'
+	LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)'
+	DBGX=g
+	if test "$tcl_ok" = "yes"; then
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (standard debugging)" >&5
+$as_echo "yes (standard debugging)" >&6; }
+	fi
+    fi
+
+
+
+    if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
+	$as_echo "#define TCL_MEM_DEBUG 1" >>confdefs.h
+
+    fi
+
+    if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then
+	$as_echo "#define TCL_COMPILE_DEBUG 1" >>confdefs.h
+
+	$as_echo "#define TCL_COMPILE_STATS 1" >>confdefs.h
+
+    fi
+
+    if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
+	if test "$tcl_ok" = "all"; then
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: enabled symbols mem compile debugging" >&5
+$as_echo "enabled symbols mem compile debugging" >&6; }
+	else
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: enabled $tcl_ok debugging" >&5
+$as_echo "enabled $tcl_ok debugging" >&6; }
+	fi
+    fi
+
+
+
+#--------------------------------------------------------------------
+# search for ffmpeg libraries libavcodec, libavformat, libswscale
+#--------------------------------------------------------------------
+if test "${with_ffmpeg}" != "no" ; then
+  if test "${with_ffmpeg}" = "yes" ; then
+    # Extract the first word of "ffmpeg", so it can be a program name with args.
+set dummy ffmpeg; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FFMPEG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $FFMPEG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_FFMPEG="$FFMPEG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_FFMPEG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+FFMPEG=$ac_cv_path_FFMPEG
+if test -n "$FFMPEG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FFMPEG" >&5
+$as_echo "$FFMPEG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    # Extract the first word of "ffmpeg", so it can be a program name with args.
+set dummy ffmpeg; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FFMPEG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $FFMPEG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_FFMPEG="$FFMPEG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="${with_ffmpeg}/bin:${with_ffmpeg}"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_FFMPEG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+FFMPEG=$ac_cv_path_FFMPEG
+if test -n "$FFMPEG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FFMPEG" >&5
+$as_echo "$FFMPEG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  if test "${FFMPEG}x" != "x" ; then
+
+$as_echo "#define HAVE_FFMPEG 1" >>confdefs.h
+
+  fi
+fi
+
+for ac_header in ffmpeg/avcodec.h libavcodec/avcodec.h ffmpeg/avformat.h libavformat/avformat.h ffmpeg/avutil.h libavutil/avutil.h libavutil/mathematics.h ffmpeg/swscale.h libswscale/swscale.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+#define __STDC_CONSTANT_MACROS 1
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+HAVE_FFMPEG_LIBS=""
+if test "${with_ffmpeg}" != "no"; then
+  if [ \( "${ac_cv_header_ffmpeg_avcodec_h}" = "yes" -o \
+        "${ac_cv_header_libavcodec_avcodec_h}" = "yes" \) -a \
+     \( "${ac_cv_header_ffmpeg_avformat_h}" = "yes" -o \
+        "${ac_cv_header_libavformat_avformat_h}" = "yes" \) -a \
+     \( "${ac_cv_header_ffmpeg_avutil_h}" = "yes" -o \
+        "${ac_cv_header_libavutil_avutil_h}" = "yes" \) -a \
+     \( "${ac_cv_header_ffmpeg_swscale_h}" = "yes" -o \
+        "${ac_cv_header_libswscale_swscale_h}" = "yes" \) ] ; then
+    HAVE_FFMPEG_LIBS="yes"
+
+$as_echo "#define BUILD_with_ffmpeg 1" >>confdefs.h
+
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lavcodec" >&5
+$as_echo_n "checking for main in -lavcodec... " >&6; }
+if ${ac_cv_lib_avcodec_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lavcodec  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_avcodec_main=yes
+else
+  ac_cv_lib_avcodec_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_avcodec_main" >&5
+$as_echo "$ac_cv_lib_avcodec_main" >&6; }
+if test "x$ac_cv_lib_avcodec_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBAVCODEC 1
+_ACEOF
+
+  LIBS="-lavcodec $LIBS"
+
+else
+  as_fn_error $? "librappture requires libavcodec" "$LINENO" 5
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lavutil" >&5
+$as_echo_n "checking for main in -lavutil... " >&6; }
+if ${ac_cv_lib_avutil_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lavutil  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_avutil_main=yes
+else
+  ac_cv_lib_avutil_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_avutil_main" >&5
+$as_echo "$ac_cv_lib_avutil_main" >&6; }
+if test "x$ac_cv_lib_avutil_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBAVUTIL 1
+_ACEOF
+
+  LIBS="-lavutil $LIBS"
+
+else
+  as_fn_error $? "librappture requires libavutil" "$LINENO" 5
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lavformat" >&5
+$as_echo_n "checking for main in -lavformat... " >&6; }
+if ${ac_cv_lib_avformat_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lavformat  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_avformat_main=yes
+else
+  ac_cv_lib_avformat_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_avformat_main" >&5
+$as_echo "$ac_cv_lib_avformat_main" >&6; }
+if test "x$ac_cv_lib_avformat_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBAVFORMAT 1
+_ACEOF
+
+  LIBS="-lavformat $LIBS"
+
+else
+  as_fn_error $? "librappture requires libavformat" "$LINENO" 5
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lswscale" >&5
+$as_echo_n "checking for main in -lswscale... " >&6; }
+if ${ac_cv_lib_swscale_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lswscale  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_swscale_main=yes
+else
+  ac_cv_lib_swscale_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_swscale_main" >&5
+$as_echo "$ac_cv_lib_swscale_main" >&6; }
+if test "x$ac_cv_lib_swscale_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSWSCALE 1
+_ACEOF
+
+  LIBS="-lswscale $LIBS"
+
+fi
+
+  for ac_func in av_find_stream_info
+do :
+  ac_fn_cxx_check_func "$LINENO" "av_find_stream_info" "ac_cv_func_av_find_stream_info"
+if test "x$ac_cv_func_av_find_stream_info" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AV_FIND_STREAM_INFO 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in av_open_input_file
+do :
+  ac_fn_cxx_check_func "$LINENO" "av_open_input_file" "ac_cv_func_av_open_input_file"
+if test "x$ac_cv_func_av_open_input_file" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AV_OPEN_INPUT_FILE 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in avcodec_decode_video
+do :
+  ac_fn_cxx_check_func "$LINENO" "avcodec_decode_video" "ac_cv_func_avcodec_decode_video"
+if test "x$ac_cv_func_avcodec_decode_video" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AVCODEC_DECODE_VIDEO 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in avcodec_decode_video2
+do :
+  ac_fn_cxx_check_func "$LINENO" "avcodec_decode_video2" "ac_cv_func_avcodec_decode_video2"
+if test "x$ac_cv_func_avcodec_decode_video2" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AVCODEC_DECODE_VIDEO2 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in avcodec_open
+do :
+  ac_fn_cxx_check_func "$LINENO" "avcodec_open" "ac_cv_func_avcodec_open"
+if test "x$ac_cv_func_avcodec_open" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AVCODEC_OPEN 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in avcodec_open2
+do :
+  ac_fn_cxx_check_func "$LINENO" "avcodec_open2" "ac_cv_func_avcodec_open2"
+if test "x$ac_cv_func_avcodec_open2" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AVCODEC_OPEN2 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in avformat_find_stream_info
+do :
+  ac_fn_cxx_check_func "$LINENO" "avformat_find_stream_info" "ac_cv_func_avformat_find_stream_info"
+if test "x$ac_cv_func_avformat_find_stream_info" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AVFORMAT_FIND_STREAM_INFO 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in avformat_open_input
+do :
+  ac_fn_cxx_check_func "$LINENO" "avformat_open_input" "ac_cv_func_avformat_open_input"
+if test "x$ac_cv_func_avformat_open_input" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AVFORMAT_OPEN_INPUT 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in avio_close
+do :
+  ac_fn_cxx_check_func "$LINENO" "avio_close" "ac_cv_func_avio_close"
+if test "x$ac_cv_func_avio_close" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AVIO_CLOSE 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in img_convert
+do :
+  ac_fn_cxx_check_func "$LINENO" "img_convert" "ac_cv_func_img_convert"
+if test "x$ac_cv_func_img_convert" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_IMG_CONVERT 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in sws_getCachedContext
+do :
+  ac_fn_cxx_check_func "$LINENO" "sws_getCachedContext" "ac_cv_func_sws_getCachedContext"
+if test "x$ac_cv_func_sws_getCachedContext" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SWS_GETCACHEDCONTEXT 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in sws_scale
+do :
+  ac_fn_cxx_check_func "$LINENO" "sws_scale" "ac_cv_func_sws_scale"
+if test "x$ac_cv_func_sws_scale" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SWS_SCALE 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in url_close
+do :
+  ac_fn_cxx_check_func "$LINENO" "url_close" "ac_cv_func_url_close"
+if test "x$ac_cv_func_url_close" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_URL_CLOSE 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in av_close_input_file
+do :
+  ac_fn_cxx_check_func "$LINENO" "av_close_input_file" "ac_cv_func_av_close_input_file"
+if test "x$ac_cv_func_av_close_input_file" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AV_CLOSE_INPUT_FILE 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in avformat_close_input
+do :
+  ac_fn_cxx_check_func "$LINENO" "avformat_close_input" "ac_cv_func_avformat_close_input"
+if test "x$ac_cv_func_avformat_close_input" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AVFORMAT_CLOSE_INPUT 1
+_ACEOF
+
+fi
+done
+
+
+  ac_fn_cxx_check_func "$LINENO" "avcodec_find_decoder" "ac_cv_func_avcodec_find_decoder"
+if test "x$ac_cv_func_avcodec_find_decoder" = xyes; then :
+
+else
+  as_fn_error $? "oops! no av_codec_find_decoder ?!?" "$LINENO" 5
+fi
+
+  ac_fn_cxx_check_func "$LINENO" "avcodec_alloc_frame" "ac_cv_func_avcodec_alloc_frame"
+if test "x$ac_cv_func_avcodec_alloc_frame" = xyes; then :
+
+else
+  as_fn_error $? "oops! no avcode_alloc_frame ?!?" "$LINENO" 5
+fi
+
+  ac_fn_cxx_check_func "$LINENO" "av_rescale_q" "ac_cv_func_av_rescale_q"
+if test "x$ac_cv_func_av_rescale_q" = xyes; then :
+
+else
+  as_fn_error $? "oops! no av_rescale_q ?!?" "$LINENO" 5
+fi
+
+  ac_fn_cxx_check_func "$LINENO" "av_read_frame" "ac_cv_func_av_read_frame"
+if test "x$ac_cv_func_av_read_frame" = xyes; then :
+
+else
+  as_fn_error $? "oops! av_read_frame ?!?" "$LINENO" 5
+fi
+
+  ac_fn_cxx_check_func "$LINENO" "av_free" "ac_cv_func_av_free"
+if test "x$ac_cv_func_av_free" = xyes; then :
+
+else
+  as_fn_error $? "oops! no av_frame ?!?" "$LINENO" 5
+fi
+
+  ac_fn_cxx_check_func "$LINENO" "avcodec_default_release_buffer" "ac_cv_func_avcodec_default_release_buffer"
+if test "x$ac_cv_func_avcodec_default_release_buffer" = xyes; then :
+
+else
+  as_fn_error $? "oops! no avcode_default_release_buffer ?!?" "$LINENO" 5
+fi
+
+  ac_fn_cxx_check_func "$LINENO" "avpicture_get_size" "ac_cv_func_avpicture_get_size"
+if test "x$ac_cv_func_avpicture_get_size" = xyes; then :
+
+else
+  as_fn_error $? "oops! no avpicture_get_size ?!?" "$LINENO" 5
+fi
+
+  ac_fn_cxx_check_func "$LINENO" "avpicture_fill" "ac_cv_func_avpicture_fill"
+if test "x$ac_cv_func_avpicture_fill" = xyes; then :
+
+else
+  as_fn_error $? "oops! no avpicture_fill ?!?" "$LINENO" 5
+fi
+
+  for ac_func in sws_getCachedContext
+do :
+  ac_fn_cxx_check_func "$LINENO" "sws_getCachedContext" "ac_cv_func_sws_getCachedContext"
+if test "x$ac_cv_func_sws_getCachedContext" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SWS_GETCACHEDCONTEXT 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in img_convert
+do :
+  ac_fn_cxx_check_func "$LINENO" "img_convert" "ac_cv_func_img_convert"
+if test "x$ac_cv_func_img_convert" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_IMG_CONVERT 1
+_ACEOF
+
+fi
+done
+
+  for ac_func in sws_scale
+do :
+  ac_fn_cxx_check_func "$LINENO" "sws_scale" "ac_cv_func_sws_scale"
+if test "x$ac_cv_func_sws_scale" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SWS_SCALE 1
+_ACEOF
+
+fi
+done
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define __STDC_CONSTANT_MACROS 1
+#include <stdlib.h>
+#ifdef HAVE_FFMPEG_AVCODEC_H
+# include <ffmpeg/avcodec.h>
+#endif
+#ifdef HAVE_LIBAVCODEC_AVCODEC_H
+# include <libavcodec/avcodec.h>
+#endif
+int x = AVMEDIA_TYPE_VIDEO;
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_avmedia_type_video="yes"
+else
+  ac_avmedia_type_video="no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  if test "$ac_avmedia_type_video" == "yes" ; then
+
+$as_echo "#define HAVE_AVMEDIA_TYPE_VIDEO 1" >>confdefs.h
+
+  fi
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+MAKE=${make_command}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_configure_args="--disable-threads --enable-shared"
+
+
+subdirs="$subdirs packages/optimizer/src"
+
+
+ac_config_files="$ac_config_files Makefile packages/Makefile src/Makefile src/core/Makefile src/core2/Makefile src/objects/Makefile src/objects/RpHash.h gui/Makefile gui/apps/Makefile gui/apps/about gui/apps/copy_rappture_examples gui/apps/encodedata gui/apps/rappture gui/apps/rappture-csh.env gui/apps/rappture.env gui/apps/rappture.use gui/apps/rerun gui/apps/simsim gui/apps/xmldiff gui/pkgIndex.tcl gui/scripts/Makefile gui/src/Makefile builder/Makefile builder/pkgIndex.tcl builder/scripts/Makefile tester/Makefile tester/pkgIndex.tcl tester/scripts/Makefile lang/Makefile lang/java/Makefile lang/java/rappture/Makefile lang/perl/Makefile lang/perl/Makefile.PL lang/python/Makefile lang/python/setup.py lang/matlab/Makefile lang/octave/Makefile lang/octave/octave2/Makefile lang/octave/octave3/Makefile lang/R/Makefile lang/ruby/Makefile lang/ruby/build.rb lang/tcl/Makefile lang/tcl/pkgIndex.tcl lang/tcl/scripts/Makefile lang/tcl/src/Makefile lang/tcl/tests/Makefile lib/Makefile examples/3D/Makefile examples/Makefile examples/app-fermi/2.0/Makefile examples/app-fermi/Makefile examples/app-fermi/cee/Makefile examples/app-fermi/fortran/Makefile examples/app-fermi/java/Makefile examples/app-fermi/matlab/Makefile examples/app-fermi/matlab/compiled/Makefile examples/app-fermi/matlab/uncompiled/Makefile examples/app-fermi/octave/octave2/Makefile examples/app-fermi/octave/octave3/Makefile examples/app-fermi/octave/Makefile examples/app-fermi/perl/Makefile examples/app-fermi/python/Makefile examples/app-fermi/ruby/Makefile examples/app-fermi/tcl/Makefile examples/app-fermi/wrapper/Makefile examples/app-fermi/wrapper/cee/Makefile examples/app-fermi/wrapper/perl/Makefile examples/app-fermi/wrapper/python/Makefile examples/app-fermi/wrapper/tcl/Makefile examples/app-fermi/R/Makefile examples/c-example/Makefile examples/canvas/Makefile examples/demo.bash examples/flow/Makefile examples/flow/demo1/Makefile examples/flow/demo2/Makefile examples/flow/demo3/Makefile examples/graph/Makefile examples/objects/Makefile examples/objects/axis/Makefile examples/objects/curve/Makefile examples/objects/dxWriter/Makefile examples/objects/floatBuffer/Makefile examples/objects/histogram/Makefile examples/objects/library/Makefile examples/objects/number/Makefile examples/objects/path/Makefile examples/objects/plot/Makefile examples/objects/scatter/Makefile examples/objects/string/Makefile examples/objects/tree/Makefile examples/objects/xmlparser/Makefile examples/zoo/Makefile examples/zoo/binary/Makefile examples/zoo/boolean/Makefile examples/zoo/choice/Makefile examples/zoo/curve/Makefile examples/zoo/drawing/Makefile examples/zoo/enable/Makefile examples/zoo/field/Makefile examples/zoo/group/Makefile examples/zoo/histogram/Makefile examples/zoo/image/Makefile examples/zoo/image/docs/Makefile examples/zoo/image/examples/Makefile examples/zoo/integer/Makefile examples/zoo/integer2/Makefile examples/zoo/loader/Makefile examples/zoo/loader/examples/Makefile examples/zoo/log/Makefile examples/zoo/mesh/Makefile examples/zoo/note/Makefile examples/zoo/note/docs/Makefile examples/zoo/number/Makefile examples/zoo/number2/Makefile examples/zoo/parallelepiped/Makefile examples/zoo/periodicelement/Makefile examples/zoo/phase/Makefile examples/zoo/sequence/Makefile examples/zoo/sequence/examples/Makefile examples/zoo/string/Makefile examples/zoo/structure/Makefile examples/zoo/structure/examples/Makefile examples/zoo/table/Makefile video/Makefile video/pkgIndex.tcl oldtest/Makefile oldtest/src/Makefile puq/Makefile puq/puq"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by Rappture $as_me 1.6, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <rappture@nanohub.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+Rappture config.status 1.6
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "src/core/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/core/config.h" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "packages/Makefile") CONFIG_FILES="$CONFIG_FILES packages/Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "src/core/Makefile") CONFIG_FILES="$CONFIG_FILES src/core/Makefile" ;;
+    "src/core2/Makefile") CONFIG_FILES="$CONFIG_FILES src/core2/Makefile" ;;
+    "src/objects/Makefile") CONFIG_FILES="$CONFIG_FILES src/objects/Makefile" ;;
+    "src/objects/RpHash.h") CONFIG_FILES="$CONFIG_FILES src/objects/RpHash.h" ;;
+    "gui/Makefile") CONFIG_FILES="$CONFIG_FILES gui/Makefile" ;;
+    "gui/apps/Makefile") CONFIG_FILES="$CONFIG_FILES gui/apps/Makefile" ;;
+    "gui/apps/about") CONFIG_FILES="$CONFIG_FILES gui/apps/about" ;;
+    "gui/apps/copy_rappture_examples") CONFIG_FILES="$CONFIG_FILES gui/apps/copy_rappture_examples" ;;
+    "gui/apps/encodedata") CONFIG_FILES="$CONFIG_FILES gui/apps/encodedata" ;;
+    "gui/apps/rappture") CONFIG_FILES="$CONFIG_FILES gui/apps/rappture" ;;
+    "gui/apps/rappture-csh.env") CONFIG_FILES="$CONFIG_FILES gui/apps/rappture-csh.env" ;;
+    "gui/apps/rappture.env") CONFIG_FILES="$CONFIG_FILES gui/apps/rappture.env" ;;
+    "gui/apps/rappture.use") CONFIG_FILES="$CONFIG_FILES gui/apps/rappture.use" ;;
+    "gui/apps/rerun") CONFIG_FILES="$CONFIG_FILES gui/apps/rerun" ;;
+    "gui/apps/simsim") CONFIG_FILES="$CONFIG_FILES gui/apps/simsim" ;;
+    "gui/apps/xmldiff") CONFIG_FILES="$CONFIG_FILES gui/apps/xmldiff" ;;
+    "gui/pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES gui/pkgIndex.tcl" ;;
+    "gui/scripts/Makefile") CONFIG_FILES="$CONFIG_FILES gui/scripts/Makefile" ;;
+    "gui/src/Makefile") CONFIG_FILES="$CONFIG_FILES gui/src/Makefile" ;;
+    "builder/Makefile") CONFIG_FILES="$CONFIG_FILES builder/Makefile" ;;
+    "builder/pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES builder/pkgIndex.tcl" ;;
+    "builder/scripts/Makefile") CONFIG_FILES="$CONFIG_FILES builder/scripts/Makefile" ;;
+    "tester/Makefile") CONFIG_FILES="$CONFIG_FILES tester/Makefile" ;;
+    "tester/pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES tester/pkgIndex.tcl" ;;
+    "tester/scripts/Makefile") CONFIG_FILES="$CONFIG_FILES tester/scripts/Makefile" ;;
+    "lang/Makefile") CONFIG_FILES="$CONFIG_FILES lang/Makefile" ;;
+    "lang/java/Makefile") CONFIG_FILES="$CONFIG_FILES lang/java/Makefile" ;;
+    "lang/java/rappture/Makefile") CONFIG_FILES="$CONFIG_FILES lang/java/rappture/Makefile" ;;
+    "lang/perl/Makefile") CONFIG_FILES="$CONFIG_FILES lang/perl/Makefile" ;;
+    "lang/perl/Makefile.PL") CONFIG_FILES="$CONFIG_FILES lang/perl/Makefile.PL" ;;
+    "lang/python/Makefile") CONFIG_FILES="$CONFIG_FILES lang/python/Makefile" ;;
+    "lang/python/setup.py") CONFIG_FILES="$CONFIG_FILES lang/python/setup.py" ;;
+    "lang/matlab/Makefile") CONFIG_FILES="$CONFIG_FILES lang/matlab/Makefile" ;;
+    "lang/octave/Makefile") CONFIG_FILES="$CONFIG_FILES lang/octave/Makefile" ;;
+    "lang/octave/octave2/Makefile") CONFIG_FILES="$CONFIG_FILES lang/octave/octave2/Makefile" ;;
+    "lang/octave/octave3/Makefile") CONFIG_FILES="$CONFIG_FILES lang/octave/octave3/Makefile" ;;
+    "lang/R/Makefile") CONFIG_FILES="$CONFIG_FILES lang/R/Makefile" ;;
+    "lang/ruby/Makefile") CONFIG_FILES="$CONFIG_FILES lang/ruby/Makefile" ;;
+    "lang/ruby/build.rb") CONFIG_FILES="$CONFIG_FILES lang/ruby/build.rb" ;;
+    "lang/tcl/Makefile") CONFIG_FILES="$CONFIG_FILES lang/tcl/Makefile" ;;
+    "lang/tcl/pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES lang/tcl/pkgIndex.tcl" ;;
+    "lang/tcl/scripts/Makefile") CONFIG_FILES="$CONFIG_FILES lang/tcl/scripts/Makefile" ;;
+    "lang/tcl/src/Makefile") CONFIG_FILES="$CONFIG_FILES lang/tcl/src/Makefile" ;;
+    "lang/tcl/tests/Makefile") CONFIG_FILES="$CONFIG_FILES lang/tcl/tests/Makefile" ;;
+    "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
+    "examples/3D/Makefile") CONFIG_FILES="$CONFIG_FILES examples/3D/Makefile" ;;
+    "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+    "examples/app-fermi/2.0/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/2.0/Makefile" ;;
+    "examples/app-fermi/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/Makefile" ;;
+    "examples/app-fermi/cee/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/cee/Makefile" ;;
+    "examples/app-fermi/fortran/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/fortran/Makefile" ;;
+    "examples/app-fermi/java/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/java/Makefile" ;;
+    "examples/app-fermi/matlab/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/matlab/Makefile" ;;
+    "examples/app-fermi/matlab/compiled/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/matlab/compiled/Makefile" ;;
+    "examples/app-fermi/matlab/uncompiled/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/matlab/uncompiled/Makefile" ;;
+    "examples/app-fermi/octave/octave2/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/octave/octave2/Makefile" ;;
+    "examples/app-fermi/octave/octave3/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/octave/octave3/Makefile" ;;
+    "examples/app-fermi/octave/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/octave/Makefile" ;;
+    "examples/app-fermi/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/perl/Makefile" ;;
+    "examples/app-fermi/python/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/python/Makefile" ;;
+    "examples/app-fermi/ruby/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/ruby/Makefile" ;;
+    "examples/app-fermi/tcl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/tcl/Makefile" ;;
+    "examples/app-fermi/wrapper/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/wrapper/Makefile" ;;
+    "examples/app-fermi/wrapper/cee/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/wrapper/cee/Makefile" ;;
+    "examples/app-fermi/wrapper/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/wrapper/perl/Makefile" ;;
+    "examples/app-fermi/wrapper/python/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/wrapper/python/Makefile" ;;
+    "examples/app-fermi/wrapper/tcl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/wrapper/tcl/Makefile" ;;
+    "examples/app-fermi/R/Makefile") CONFIG_FILES="$CONFIG_FILES examples/app-fermi/R/Makefile" ;;
+    "examples/c-example/Makefile") CONFIG_FILES="$CONFIG_FILES examples/c-example/Makefile" ;;
+    "examples/canvas/Makefile") CONFIG_FILES="$CONFIG_FILES examples/canvas/Makefile" ;;
+    "examples/demo.bash") CONFIG_FILES="$CONFIG_FILES examples/demo.bash" ;;
+    "examples/flow/Makefile") CONFIG_FILES="$CONFIG_FILES examples/flow/Makefile" ;;
+    "examples/flow/demo1/Makefile") CONFIG_FILES="$CONFIG_FILES examples/flow/demo1/Makefile" ;;
+    "examples/flow/demo2/Makefile") CONFIG_FILES="$CONFIG_FILES examples/flow/demo2/Makefile" ;;
+    "examples/flow/demo3/Makefile") CONFIG_FILES="$CONFIG_FILES examples/flow/demo3/Makefile" ;;
+    "examples/graph/Makefile") CONFIG_FILES="$CONFIG_FILES examples/graph/Makefile" ;;
+    "examples/objects/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/Makefile" ;;
+    "examples/objects/axis/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/axis/Makefile" ;;
+    "examples/objects/curve/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/curve/Makefile" ;;
+    "examples/objects/dxWriter/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/dxWriter/Makefile" ;;
+    "examples/objects/floatBuffer/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/floatBuffer/Makefile" ;;
+    "examples/objects/histogram/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/histogram/Makefile" ;;
+    "examples/objects/library/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/library/Makefile" ;;
+    "examples/objects/number/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/number/Makefile" ;;
+    "examples/objects/path/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/path/Makefile" ;;
+    "examples/objects/plot/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/plot/Makefile" ;;
+    "examples/objects/scatter/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/scatter/Makefile" ;;
+    "examples/objects/string/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/string/Makefile" ;;
+    "examples/objects/tree/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/tree/Makefile" ;;
+    "examples/objects/xmlparser/Makefile") CONFIG_FILES="$CONFIG_FILES examples/objects/xmlparser/Makefile" ;;
+    "examples/zoo/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/Makefile" ;;
+    "examples/zoo/binary/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/binary/Makefile" ;;
+    "examples/zoo/boolean/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/boolean/Makefile" ;;
+    "examples/zoo/choice/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/choice/Makefile" ;;
+    "examples/zoo/curve/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/curve/Makefile" ;;
+    "examples/zoo/drawing/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/drawing/Makefile" ;;
+    "examples/zoo/enable/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/enable/Makefile" ;;
+    "examples/zoo/field/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/field/Makefile" ;;
+    "examples/zoo/group/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/group/Makefile" ;;
+    "examples/zoo/histogram/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/histogram/Makefile" ;;
+    "examples/zoo/image/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/image/Makefile" ;;
+    "examples/zoo/image/docs/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/image/docs/Makefile" ;;
+    "examples/zoo/image/examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/image/examples/Makefile" ;;
+    "examples/zoo/integer/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/integer/Makefile" ;;
+    "examples/zoo/integer2/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/integer2/Makefile" ;;
+    "examples/zoo/loader/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/loader/Makefile" ;;
+    "examples/zoo/loader/examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/loader/examples/Makefile" ;;
+    "examples/zoo/log/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/log/Makefile" ;;
+    "examples/zoo/mesh/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/mesh/Makefile" ;;
+    "examples/zoo/note/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/note/Makefile" ;;
+    "examples/zoo/note/docs/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/note/docs/Makefile" ;;
+    "examples/zoo/number/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/number/Makefile" ;;
+    "examples/zoo/number2/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/number2/Makefile" ;;
+    "examples/zoo/parallelepiped/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/parallelepiped/Makefile" ;;
+    "examples/zoo/periodicelement/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/periodicelement/Makefile" ;;
+    "examples/zoo/phase/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/phase/Makefile" ;;
+    "examples/zoo/sequence/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/sequence/Makefile" ;;
+    "examples/zoo/sequence/examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/sequence/examples/Makefile" ;;
+    "examples/zoo/string/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/string/Makefile" ;;
+    "examples/zoo/structure/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/structure/Makefile" ;;
+    "examples/zoo/structure/examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/structure/examples/Makefile" ;;
+    "examples/zoo/table/Makefile") CONFIG_FILES="$CONFIG_FILES examples/zoo/table/Makefile" ;;
+    "video/Makefile") CONFIG_FILES="$CONFIG_FILES video/Makefile" ;;
+    "video/pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES video/pkgIndex.tcl" ;;
+    "oldtest/Makefile") CONFIG_FILES="$CONFIG_FILES oldtest/Makefile" ;;
+    "oldtest/src/Makefile") CONFIG_FILES="$CONFIG_FILES oldtest/src/Makefile" ;;
+    "puq/Makefile") CONFIG_FILES="$CONFIG_FILES puq/Makefile" ;;
+    "puq/puq") CONFIG_FILES="$CONFIG_FILES puq/puq" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+ ;;
+
+
+  esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+
+#
+# CONFIG_SUBDIRS section.
+#
+if test "$no_recursion" != yes; then
+
+  # Remove --cache-file, --srcdir, and --disable-option-checking arguments
+  # so they do not pile up.
+  ac_sub_configure_args=
+  ac_prev=
+  eval "set x $ac_configure_args"
+  shift
+  for ac_arg
+  do
+    if test -n "$ac_prev"; then
+      ac_prev=
+      continue
+    fi
+    case $ac_arg in
+    -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=*)
+      ;;
+    --config-cache | -C)
+      ;;
+    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+      ac_prev=srcdir ;;
+    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+      ;;
+    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+      ac_prev=prefix ;;
+    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+      ;;
+    --disable-option-checking)
+      ;;
+    *)
+      case $ac_arg in
+      *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+      esac
+      as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
+    esac
+  done
+
+  # Always prepend --prefix to ensure using the same prefix
+  # in subdir configurations.
+  ac_arg="--prefix=$prefix"
+  case $ac_arg in
+  *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+  esac
+  ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
+
+  # Pass --silent
+  if test "$silent" = yes; then
+    ac_sub_configure_args="--silent $ac_sub_configure_args"
+  fi
+
+  # Always prepend --disable-option-checking to silence warnings, since
+  # different subdirs can have different --enable and --with options.
+  ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
+
+  ac_popdir=`pwd`
+  for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
+
+    # Do not complain, so a configure script can configure whichever
+    # parts of a large source tree are present.
+    test -d "$srcdir/$ac_dir" || continue
+
+    ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
+    $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
+    $as_echo "$ac_msg" >&6
+    as_dir="$ac_dir"; as_fn_mkdir_p
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+    cd "$ac_dir"
+
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      ac_sub_configure=$ac_srcdir/configure.gnu
+    elif test -f "$ac_srcdir/configure"; then
+      ac_sub_configure=$ac_srcdir/configure
+    elif test -f "$ac_srcdir/configure.in"; then
+      # This should be Cygnus configure.
+      ac_sub_configure=$ac_aux_dir/configure
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5
+$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
+      ac_sub_configure=
+    fi
+
+    # The recursion is here.
+    if test -n "$ac_sub_configure"; then
+      # Make the cache file name correct relative to the subdirectory.
+      case $cache_file in
+      [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
+      *) # Relative name.
+	ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
+      esac
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
+$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
+      # The eval makes quoting arguments work.
+      eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
+	   --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
+	as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
+    fi
+
+    cd "$ac_popdir"
+  done
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
Index: /tags/1.6.0/configure.in
===================================================================
--- /tags/1.6.0/configure.in	(revision 6168)
+++ /tags/1.6.0/configure.in	(revision 6168)
@@ -0,0 +1,613 @@
+
+AC_INIT([Rappture],[1.6],[rappture@nanohub.org])
+AC_CONFIG_AUX_DIR(cf)
+AC_CONFIG_HEADER(src/core/config.h)
+
+#------------------------------------------------------------------------
+# Handle the --prefix=... option
+#------------------------------------------------------------------------
+
+if test "${prefix}" = "NONE"; then
+    prefix=/usr/local
+fi
+if test "${exec_prefix}" = "NONE"; then
+    exec_prefix=$prefix
+fi
+
+AC_ARG_WITH(
+    [install],
+    [AS_HELP_STRING([--with-install[=DIR]],
+        [location of installation @<:@default=yes@:>@])],
+    [],
+    [with_install=yes])
+
+if test "$with_install" != "yes"; then
+    INSTALL_PREFIX=$with_install
+else
+    INSTALL_PREFIX=$prefix
+fi
+
+
+if test "${libdir}" != "${prefix}/lib"; then
+    LIB_SEARCH_DIRS="-L${prefix}/lib -L${libdir}"
+else
+    LIB_SEARCH_DIRS="-L${libdir}"
+fi
+
+
+AC_PROG_INSTALL
+AC_PROG_INSTALL
+AC_PROG_RANLIB
+AC_PROG_LN_S
+AC_PROG_MKDIR_P
+AC_PROG_MAKE_SET
+
+# Check for C, C++, and FORTRAN
+AC_PROG_CC
+AC_PROG_CXX
+# Avoid g95
+AC_PROG_F77([g77 gfortran f77 fort77 f90 xlf xlf90 fl32])
+
+AC_LANG([C])
+
+AC_HEADER_STDC
+AC_CHECK_FUNC(atol,,AC_MSG_ERROR(oops! no atol ?!?))
+
+AC_LANG([C++])
+
+AC_CHECK_FUNCS(sysinfo)
+AC_CHECK_FUNCS(gettimeofday)
+AC_CHECK_FUNC(localtime,,AC_MSG_ERROR(oops! no localtime ?!?))
+AC_CHECK_FUNC(getenv,,AC_MSG_ERROR(oops! no getenv ?!?))
+
+AC_CHECK_HEADERS(sys/sysinfo.h)
+
+AC_CHECK_LIB(ncurses, clrtoeol,,AC_MSG_ERROR([ncurses library missing?]))
+AC_CHECK_HEADERS(ncurses.h,,AC_MSG_WARN(ncurses headers missing ?))
+
+AC_CHECK_LIB(stdc++, main,,AC_MSG_ERROR(librappture requires libstdc++))
+AC_CHECK_HEADERS(algorithm,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(cctype,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(cfloat,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(cmath,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(cstdio,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(cstdlib,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(cstring,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(fstream,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(list,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(iostream,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(iterator,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(sstream,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(stack,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(string,,AC_MSG_WARN(STL classes missing ?))
+AC_CHECK_HEADERS(vector,,AC_MSG_WARN(STL classes missing ?))
+
+AC_CHECK_HEADERS(assert.h,,AC_MSG_WARN(C headers missing ?))
+AC_CHECK_HEADERS(ctype.h,,AC_MSG_WARN(C headers missing ?))
+AC_CHECK_HEADERS(errno.h,,AC_MSG_WARN(C headers missing ?))
+AC_CHECK_HEADERS(limits.h,,AC_MSG_WARN(C headers missing ?))
+AC_CHECK_HEADERS(string.h,,AC_MSG_WARN(C headers missing ?))
+AC_CHECK_HEADERS(stdlib.h,,AC_MSG_WARN(C headers missing ?))
+AC_CHECK_HEADERS(stddef.h,,AC_MSG_WARN(C headers missing ?))
+AC_CHECK_HEADERS(float.h,,AC_MSG_WARN(C headers missing ?))
+AC_CHECK_HEADERS(math.h,,AC_MSG_WARN(C headers missing ?))
+dnl AC_CHECK_HEADERS(ieeefp.h,,AC_MSG_WARN(C headers missing ?))
+AC_CHECK_HEADERS(malloc.h,,AC_MSG_WARN(C headers missing ?))
+AC_CHECK_HEADERS(memory.h,,AC_MSG_WARN(C headers missing ?))
+AC_CHECK_HEADERS(unistd.h,,AC_MSG_WARN(C headers missing ?))
+
+AC_CHECK_HEADERS(inttypes.h,,AC_MSG_WARN(C headers missing ?))
+if test "${ac_cv_header_inttypes_h}" = "yes" ; then
+  HAVE_INTTYPES_H=1
+else
+  HAVE_INTTYPES_H=0
+fi
+
+
+SC_CONFIG_CFLAGS
+
+SVN_VERSION=`svnversion $srcdir | sed 's/Unversioned directory/unknown/'`
+SVN_URL=`readlink -e $srcdir | xargs svn info | sed -ne 's/^URL: //p'`
+
+make_command=""
+for m in "$MAKE" make gmake gnumake ; do
+  if test "x${m}" != "x" ; then
+    if  ( sh -c "$m --version" 2>/dev/null | grep GNU >/dev/null ) ; then
+      make_command=$m; break;
+    fi
+  fi
+done
+if test "x${make_command}" = "x" ; then
+  AC_MSG_ERROR([Requires GNU make. You can specify a version with \$MAKE])
+fi
+
+AC_ARG_ENABLE(
+    [lang],
+    [AS_HELP_STRING([--enable-lang], [build language bindings @<:@default=yes@:>@])],
+    [],
+    [enable_lang=yes])
+
+ENABLE_LANG=
+if test "$enable_lang" != "no" ; then
+    ENABLE_LANG="yes"
+fi
+
+AC_ARG_ENABLE(
+    [gui],
+    [AS_HELP_STRING([--enable-gui], [build code related to the graphical user interface @<:@default=yes@:>@])],
+    [],
+    [enable_gui=yes])
+
+ENABLE_GUI=
+if test "$enable_gui" != "no" ; then
+    ENABLE_GUI="yes"
+fi
+
+TCL_VERSION="8.4"
+for dir in \
+ ${exec_prefix} \
+ ${exec_prefix}/lib ; do
+  tclconfig="${dir}/tclConfig.sh"
+  if test -f "$tclconfig" ; then
+    . $tclconfig
+    break
+  fi
+done
+
+TK_VERSION="8.4"
+for dir in \
+ ${exec_prefix} \
+ ${exec_prefix}/lib ; do
+  tkconfig="${dir}/tkConfig.sh"
+  if test -f "$tkconfig" ; then
+    . $tkconfig
+    break
+  fi
+done
+
+AC_ARG_WITH(
+    [ffmpeg],
+    [AS_HELP_STRING([--with-ffmpeg[=DIR]],
+      [location of ffmpeg @<:@default=yes@:>@])],
+    [],
+    [with_ffmpeg=yes])
+
+AC_ARG_WITH(
+    [tclsh],
+    [AS_HELP_STRING([--with-tclsh[=DIR]],
+        [location of tclsh @<:@default=yes@:>@])],
+    [],
+    [with_tclsh=yes])
+
+TCLSH=""
+if test "${with_tclsh}" != "no" ; then
+  tclsh="tclsh${TCL_VERSION}"
+  if test "${with_tclsh}" = "yes" ; then
+    AC_PATH_PROG(TCLSH, ${tclsh}, [], [${exec_prefix}/bin:${PATH}])
+  else
+    AC_PATH_PROG(TCLSH, ${tclsh}, [], [${with_tclsh}/bin:${with_tclsh}])
+  fi
+  if test "x${TCLSH}" = "x" ; then
+    AC_ERROR([can't find tclsh])
+  fi
+fi
+
+
+TCL_INC_SPEC="$TCL_INCLUDE_SPEC"
+
+AC_ARG_WITH(
+    [vtk],
+    [AS_HELP_STRING([--with-vtk[=version]],
+        [VTK library version @<:@default=6.0@:>@])],
+    [],
+    [with_vtk=yes])
+
+AC_MSG_CHECKING([for vtk])
+VTK_VERSION=6.0
+VTK_TCL_DIR=""
+
+ENABLE_VTK=
+if test "$with_vtk" != "no" ; then
+  if test "$with_vtk" != "yes" ; then
+    VTK_VERSION=$with_vtk
+  fi
+  if test "x$with_vtk" != "x" ; then
+    ENABLE_VTK=yes
+    for path in \
+     $libdir/tcltk \
+     $exec_prefix/lib/tcltk \
+     $prefix/lib/tcltk \
+     $libdir \
+     $prefix/lib \
+     $exec_prefix/lib \
+     /usr/lib
+    do
+      if test -d "$path/vtk-$VTK_VERSION" ; then
+        VTK_TCL_DIR="$path/vtk-$VTK_VERSION"
+      fi
+      if test "x${VTK_TCL_DIR}" != "x" ; then
+        break
+      fi
+    done
+  fi
+else
+  if test "${ENABLE_GUI}" = "yes" ; then
+    AC_MSG_WARN([VTK missing: Rappture GUI requires VTK for some features])
+  fi
+fi
+AC_MSG_RESULT([$VTK_TCL_DIR])
+
+AC_ARG_ENABLE(
+    [vtkdicom],
+    [AS_HELP_STRING([--enable-vtkdicom],
+        [Use vtkDICOM package @<:@default=no@:>@])],
+    [],
+    [enable_vtkdicom=no])
+
+AC_MSG_CHECKING([for vtkDICOM])
+ENABLE_VTK_DICOM=
+if test "$enable_vtkdicom" != "no" ; then
+    ENABLE_VTK_DICOM="yes"
+fi
+AC_MSG_RESULT([$enable_vtkdicom])
+
+RP_LANG_MATLAB
+RP_LANG_OCTAVE
+RP_LANG_PERL
+RP_LANG_PYTHON
+RP_LANG_JAVA
+RP_LANG_R
+RP_LANG_RUBY
+
+RP_BASE=`pwd`
+
+SC_ENABLE_SHARED
+
+#--------------------------------------------------------------------
+# This macro figures out what flags to use with the compiler/linker
+# when building shared/static debug/optimized objects.  This information
+# is all taken from the tclConfig.sh file.
+#--------------------------------------------------------------------
+
+if test -f "${exec_prefix}/lib/tclConfig.sh" ; then
+  . ${exec_prefix}/lib/tclConfig.sh
+fi
+if test -f "${exec_prefix}/lib/tkConfig.sh" ; then
+  . ${exec_prefix}/lib/tkConfig.sh
+fi
+
+# -----------------------------------------------------------------------
+#
+# Compiler characteristics:
+#   Check for existence of types of size_t and pid_t
+#
+# -----------------------------------------------------------------------
+
+AC_C_BIGENDIAN
+AC_CHECK_SIZEOF(int)
+AC_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF(long long)
+AC_CHECK_SIZEOF(void *)
+
+SIZEOF_LONG="${ac_cv_sizeof_long}"
+SIZEOF_LONG_LONG="${ac_cv_sizeof_long_long}"
+SIZEOF_VOID_P="${ac_cv_sizeof_void_p}"
+SIZEOF_INT="${ac_cv_sizeof_int}"
+
+
+#--------------------------------------------------------------------
+# Set the default compiler switches based on the --enable-symbols
+# option.
+#--------------------------------------------------------------------
+
+SC_ENABLE_SYMBOLS
+
+
+#--------------------------------------------------------------------
+# search for ffmpeg libraries libavcodec, libavformat, libswscale
+#--------------------------------------------------------------------
+if test "${with_ffmpeg}" != "no" ; then
+  if test "${with_ffmpeg}" = "yes" ; then
+    AC_PATH_PROG(FFMPEG, ffmpeg, [], $PATH)
+  else
+    AC_PATH_PROG(FFMPEG, ffmpeg, [], [${with_ffmpeg}/bin:${with_ffmpeg}])
+  fi
+  if test "${FFMPEG}x" != "x" ; then
+    AC_DEFINE(HAVE_FFMPEG, 1, [Render servers can use ffmpeg])
+  fi
+fi
+
+AC_CHECK_HEADERS([ffmpeg/avcodec.h libavcodec/avcodec.h ffmpeg/avformat.h libavformat/avformat.h ffmpeg/avutil.h libavutil/avutil.h libavutil/mathematics.h ffmpeg/swscale.h libswscale/swscale.h],,,[
+#define __STDC_CONSTANT_MACROS 1
+])
+
+HAVE_FFMPEG_LIBS=""
+if test "${with_ffmpeg}" != "no"; then
+  if [[ \( "${ac_cv_header_ffmpeg_avcodec_h}" = "yes" -o \
+        "${ac_cv_header_libavcodec_avcodec_h}" = "yes" \) -a \
+     \( "${ac_cv_header_ffmpeg_avformat_h}" = "yes" -o \
+        "${ac_cv_header_libavformat_avformat_h}" = "yes" \) -a \
+     \( "${ac_cv_header_ffmpeg_avutil_h}" = "yes" -o \
+        "${ac_cv_header_libavutil_avutil_h}" = "yes" \) -a \
+     \( "${ac_cv_header_ffmpeg_swscale_h}" = "yes" -o \
+        "${ac_cv_header_libswscale_swscale_h}" = "yes" \) ]] ; then
+    HAVE_FFMPEG_LIBS="yes"
+    AC_DEFINE(BUILD_with_ffmpeg, 1, [Build rappture with ffmpeg widgets])
+  fi
+  AC_CHECK_LIB(avcodec, main,,AC_MSG_ERROR(librappture requires libavcodec))
+  AC_CHECK_LIB(avutil, main,,AC_MSG_ERROR(librappture requires libavutil))
+  AC_CHECK_LIB(avformat, main,,AC_MSG_ERROR(librappture requires libavformat))
+  AC_CHECK_LIB(swscale, main)
+  AC_CHECK_FUNCS(av_find_stream_info)
+  AC_CHECK_FUNCS(av_open_input_file)
+  AC_CHECK_FUNCS(avcodec_decode_video)
+  AC_CHECK_FUNCS(avcodec_decode_video2)
+  AC_CHECK_FUNCS(avcodec_open)
+  AC_CHECK_FUNCS(avcodec_open2)
+  AC_CHECK_FUNCS(avformat_find_stream_info)
+  AC_CHECK_FUNCS(avformat_open_input)
+  AC_CHECK_FUNCS(avio_close)
+  AC_CHECK_FUNCS(img_convert)
+  AC_CHECK_FUNCS(sws_getCachedContext)
+  AC_CHECK_FUNCS(sws_scale)
+  AC_CHECK_FUNCS(url_close)
+  AC_CHECK_FUNCS(av_close_input_file)
+  AC_CHECK_FUNCS(avformat_close_input)
+
+  AC_CHECK_FUNC(avcodec_find_decoder,,
+    AC_MSG_ERROR(oops! no av_codec_find_decoder ?!?))
+  AC_CHECK_FUNC(avcodec_alloc_frame,,
+    AC_MSG_ERROR(oops! no avcode_alloc_frame ?!?))
+  AC_CHECK_FUNC(av_rescale_q,,AC_MSG_ERROR(oops! no av_rescale_q ?!?))
+  AC_CHECK_FUNC(av_read_frame,,AC_MSG_ERROR(oops! av_read_frame ?!?))
+  AC_CHECK_FUNC(av_free,,AC_MSG_ERROR(oops! no av_frame ?!?))
+  AC_CHECK_FUNC(avcodec_default_release_buffer,,
+    AC_MSG_ERROR(oops! no avcode_default_release_buffer ?!?))
+  AC_CHECK_FUNC(avpicture_get_size,,
+    AC_MSG_ERROR(oops! no avpicture_get_size ?!?))
+  AC_CHECK_FUNC(avpicture_fill,,AC_MSG_ERROR(oops! no avpicture_fill ?!?))
+  AC_CHECK_FUNCS(sws_getCachedContext)
+  AC_CHECK_FUNCS(img_convert)
+  AC_CHECK_FUNCS(sws_scale)
+  AC_TRY_COMPILE([
+#define __STDC_CONSTANT_MACROS 1
+#include <stdlib.h>
+#ifdef HAVE_FFMPEG_AVCODEC_H
+# include <ffmpeg/avcodec.h>
+#endif
+#ifdef HAVE_LIBAVCODEC_AVCODEC_H
+# include <libavcodec/avcodec.h>
+#endif
+int x = AVMEDIA_TYPE_VIDEO;
+],, ac_avmedia_type_video="yes", ac_avmedia_type_video="no")
+  if test "$ac_avmedia_type_video" == "yes" ; then
+    AC_DEFINE(HAVE_AVMEDIA_TYPE_VIDEO,1,[Define if AVMEDIA_TYPE_VIDEO enum exists. ])
+  fi
+fi
+
+AC_SUBST(CFLAGS_DEBUG)
+AC_SUBST(CFLAGS_OPTIMIZE)
+AC_SUBST(ENABLE_LANG)
+AC_SUBST(ENABLE_GUI)
+AC_SUBST(ENABLE_VTK)
+AC_SUBST(ENABLE_VTK_DICOM)
+AC_SUBST(FFMPEG)
+AC_SUBST(HAVE_FFMPEG_LIBS)
+AC_SUBST(HAVE_INTTYPES_H)
+AC_SUBST(HAVE_RUBY_DEVEL)
+AC_SUBST(INSTALL_PREFIX)
+AC_SUBST(JAVA)
+AC_SUBST(JAVAC)
+AC_SUBST(JAVAH)
+AC_SUBST(JAVA_HOME)
+AC_SUBST(JAVA_INC_DIR)
+AC_SUBST(JAVA_INC_SPEC)
+AC_SUBST(LIB_SEARCH_DIRS)
+AC_SUBST(MAKE, ${make_command})
+AC_SUBST(MATLAB)
+AC_SUBST(MCC)
+AC_SUBST(MEX)
+AC_SUBST(MEXEXT)
+AC_SUBST(MEX_ARCH)
+AC_SUBST(MKOCTFILE2)
+AC_SUBST(MKOCTFILE3)
+AC_SUBST(OCTAVE_VERSION)
+AC_SUBST(OCTAVE_VERSION_MAJOR)
+AC_SUBST(PERL)
+AC_SUBST(PERL_ARCHLIB)
+AC_SUBST(PERL_ARCHLIBEXP)
+AC_SUBST(PERL_CCFLAGS)
+AC_SUBST(PERL_CPPFLAGS)
+AC_SUBST(PERL_INCLUDES)
+AC_SUBST(PERL_INSTALLARCHLIB)
+AC_SUBST(PERL_LIBSPEC)
+AC_SUBST(PERL_PRIVLIB)
+AC_SUBST(PERL_VENDORLIB)
+AC_SUBST(PERL_VERSION)
+AC_SUBST(PERL_VERSION_RV)
+AC_SUBST(PYTHON)
+AC_SUBST(PYTHON_CFLAGS)
+AC_SUBST(PYTHON_DISTUTILS)
+AC_SUBST(PYTHON_INCDIR)
+AC_SUBST(PYTHON_INCLUDES)
+AC_SUBST(PYTHON_LDFLAGS)
+AC_SUBST(PYTHON_LIB)
+AC_SUBST(PYTHON_LIBDIR)
+AC_SUBST(PYTHON_SITE_DIR)
+AC_SUBST(PYTHON_SITE_PACKAGES)
+AC_SUBST(PYTHON_VERSION)
+AC_SUBST(R)
+AC_SUBST(RP_BASE)
+AC_SUBST(RUBY)
+AC_SUBST(RUBY_PLATFORM)
+AC_SUBST(RUBY_VERSION_RV)
+AC_SUBST(SHLIB_CFLAGS)
+AC_SUBST(SHLIB_LD)
+AC_SUBST(SHLIB_LDFLAGS)
+AC_SUBST(SHLIB_SUFFIX)
+AC_SUBST(SIZEOF_INT)
+AC_SUBST(SIZEOF_LONG)
+AC_SUBST(SIZEOF_LONG_LONG)
+AC_SUBST(SIZEOF_VOID_P)
+AC_SUBST(STLIB_LD)
+AC_SUBST(SVN_URL)
+AC_SUBST(SVN_VERSION)
+AC_SUBST(TCLSH)
+AC_SUBST(TCL_CFLAGS_DEBUG)
+AC_SUBST(TCL_CFLAGS_OPTIMIZE)
+AC_SUBST(TCL_INC_SPEC)
+AC_SUBST(TCL_LIB_SPEC)
+AC_SUBST(TCL_SHLIB_CFLAGS)
+AC_SUBST(TCL_SHLIB_LD)
+AC_SUBST(TCL_SHLIB_LDFLAGS)
+AC_SUBST(TCL_SHLIB_SUFFIX)
+AC_SUBST(TCL_SRC_DIR)
+AC_SUBST(TCL_VERSION)
+AC_SUBST(TK_INC_SPEC)
+AC_SUBST(TK_LIB_SPEC)
+AC_SUBST(TK_SRC_DIR)
+AC_SUBST(TK_VERSION)
+AC_SUBST(TK_XLIBSW)
+AC_SUBST(VTK_TCL_DIR)
+AC_SUBST(VTK_VERSION)
+AC_SUBST(XSUBPP)
+
+ac_configure_args="--disable-threads --enable-shared"
+AC_CONFIG_SUBDIRS( [packages/optimizer/src] )
+
+dnl read Makefile.in and write Makefile
+AC_CONFIG_FILES([
+    Makefile
+    packages/Makefile
+    src/Makefile
+    src/core/Makefile
+    src/core2/Makefile
+    src/objects/Makefile
+    src/objects/RpHash.h
+    gui/Makefile
+    gui/apps/Makefile
+    gui/apps/about
+    gui/apps/copy_rappture_examples
+    gui/apps/encodedata
+    gui/apps/rappture
+    gui/apps/rappture-csh.env
+    gui/apps/rappture.env
+    gui/apps/rappture.use
+    gui/apps/rerun
+    gui/apps/simsim
+    gui/apps/xmldiff
+    gui/pkgIndex.tcl
+    gui/scripts/Makefile
+    gui/src/Makefile
+    builder/Makefile
+    builder/pkgIndex.tcl
+    builder/scripts/Makefile
+    tester/Makefile
+    tester/pkgIndex.tcl
+    tester/scripts/Makefile
+    lang/Makefile
+    lang/java/Makefile
+    lang/java/rappture/Makefile
+    lang/perl/Makefile
+    lang/perl/Makefile.PL
+    lang/python/Makefile
+    lang/python/setup.py
+    lang/matlab/Makefile
+    lang/octave/Makefile
+    lang/octave/octave2/Makefile
+    lang/octave/octave3/Makefile
+    lang/R/Makefile
+    lang/ruby/Makefile
+    lang/ruby/build.rb
+    lang/tcl/Makefile
+    lang/tcl/pkgIndex.tcl
+    lang/tcl/scripts/Makefile
+    lang/tcl/src/Makefile
+    lang/tcl/tests/Makefile
+    lib/Makefile
+    examples/3D/Makefile
+    examples/Makefile
+    examples/app-fermi/2.0/Makefile
+    examples/app-fermi/Makefile
+    examples/app-fermi/cee/Makefile
+    examples/app-fermi/fortran/Makefile
+    examples/app-fermi/java/Makefile
+    examples/app-fermi/matlab/Makefile
+    examples/app-fermi/matlab/compiled/Makefile
+    examples/app-fermi/matlab/uncompiled/Makefile
+    examples/app-fermi/octave/octave2/Makefile
+    examples/app-fermi/octave/octave3/Makefile
+    examples/app-fermi/octave/Makefile
+    examples/app-fermi/perl/Makefile
+    examples/app-fermi/python/Makefile
+    examples/app-fermi/ruby/Makefile
+    examples/app-fermi/tcl/Makefile
+    examples/app-fermi/wrapper/Makefile
+    examples/app-fermi/wrapper/cee/Makefile
+    examples/app-fermi/wrapper/perl/Makefile
+    examples/app-fermi/wrapper/python/Makefile
+    examples/app-fermi/wrapper/tcl/Makefile
+    examples/app-fermi/R/Makefile
+    examples/c-example/Makefile
+    examples/canvas/Makefile
+    examples/demo.bash
+    examples/flow/Makefile
+    examples/flow/demo1/Makefile
+    examples/flow/demo2/Makefile
+    examples/flow/demo3/Makefile
+    examples/graph/Makefile
+    examples/objects/Makefile
+    examples/objects/axis/Makefile
+    examples/objects/curve/Makefile
+    examples/objects/dxWriter/Makefile
+    examples/objects/floatBuffer/Makefile
+    examples/objects/histogram/Makefile
+    examples/objects/library/Makefile
+    examples/objects/number/Makefile
+    examples/objects/path/Makefile
+    examples/objects/plot/Makefile
+    examples/objects/scatter/Makefile
+    examples/objects/string/Makefile
+    examples/objects/tree/Makefile
+    examples/objects/xmlparser/Makefile
+    examples/zoo/Makefile
+    examples/zoo/binary/Makefile
+    examples/zoo/boolean/Makefile
+    examples/zoo/choice/Makefile
+    examples/zoo/curve/Makefile
+    examples/zoo/drawing/Makefile
+    examples/zoo/enable/Makefile
+    examples/zoo/field/Makefile
+    examples/zoo/group/Makefile
+    examples/zoo/histogram/Makefile
+    examples/zoo/image/Makefile
+    examples/zoo/image/docs/Makefile
+    examples/zoo/image/examples/Makefile
+    examples/zoo/integer/Makefile
+    examples/zoo/integer2/Makefile
+    examples/zoo/loader/Makefile
+    examples/zoo/loader/examples/Makefile
+    examples/zoo/log/Makefile
+    examples/zoo/mesh/Makefile
+    examples/zoo/note/Makefile
+    examples/zoo/note/docs/Makefile
+    examples/zoo/number/Makefile
+    examples/zoo/number2/Makefile
+    examples/zoo/parallelepiped/Makefile
+    examples/zoo/periodicelement/Makefile
+    examples/zoo/phase/Makefile
+    examples/zoo/sequence/Makefile
+    examples/zoo/sequence/examples/Makefile
+    examples/zoo/string/Makefile
+    examples/zoo/structure/Makefile
+    examples/zoo/structure/examples/Makefile
+    examples/zoo/table/Makefile
+    video/Makefile
+    video/pkgIndex.tcl
+    oldtest/Makefile
+    oldtest/src/Makefile
+    puq/Makefile
+    puq/puq
+])
+AC_OUTPUT
+
Index: /tags/1.6.0/examples/3D/3d_test_run.xml
===================================================================
--- /tags/1.6.0/examples/3D/3d_test_run.xml	(revision 6168)
+++ /tags/1.6.0/examples/3D/3d_test_run.xml	(revision 6168)
@@ -0,0 +1,2329 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>
+    PROPHET
+  </title>
+        <about>
+    The PROPHET simulator is a framework to solve systems of partial differential equations (PDEs) in time and 1, 2, or 3 space dimensions. PDEs are discretized using either finite elements or finite volume methods in space and with implicit methods in time, which reduces the differential equations to a system of algebraic equations that are solved by Newton's method at each timestep. The matrix resulting from the linearization is solved by sparse iterative or direct methods.
+  </about>
+        <command>
+    @tool/prophetwr @driver
+  </command>
+        <layout>wizard</layout>
+    </tool>
+    <input>
+    </input>
+    <output>
+        <time>Tue Aug 30 15:50:39 EST 2005</time>
+        <log>
+using prophet.exe.linux
+
+PROPHET-SU 9910   30-Aug-2005 15:50:38    1011  round2.pu  13809 
+
+  1 dbase prefix=library/physics/silicon/psi
+  2 dbase create name=dirichlet.anode rval=0.0
+  3 dbase create name=dirichlet.cathode rval=0.0
+  4 dbase prefix=""
+    
+  5 system name=my_poisson
+    + sysvars=psi
+    + term0=box_div.lapflux(psi|psi)@{silicon}
+    + term1=-1.6e-19*nodal.copy(netdope|psi)@{silicon}
+    + term2=dirichlet.default_dirichlet(0|psi)@{silicon/anode,silicon/cathode}
+    
+  6 grid xloc=0.000,2.000
+    +    xdel=0.0625
+    +    yloc=0.000,2.000
+    +    ydel=0.0625
+    +    dim=2
+    
+  7 boundary xmin=0 xmax=0 ymin=0 ymax=0.5 name=cathode
+  8 boundary xmin=0 xmax=0 ymin=1.5 ymax=2 name=anode
+    
+  9 field set=psubstrate val=-1e15
+ 10 field set=ndiff val="6e15*gbox(X,0,1,0.0001)*gbox(Y,0,1,0.0001)"
+ 11 field set=netdope val=psubstrate+ndiff
+    
+ 12 field set=psi val=0
+    
+ 13 solve system=my_poisson
+    
+ 14 dbase prefix=library/physics/silicon/psi
+ 15 dbase create name=scale rval=1.0
+ 16 dbase create name=Dix rval=1.0448e-4
+ 17 dbase create name=dirichlet.cathode rval=-1.0
+ 18 dbase create name=dirichlet.anode rval=1.0
+ 19 dbase prefix=""
+    
+ 20 solve system=my_poisson
+    
+    # modified automatically for nanoHUB:
+    # graph quantity=psi contour color
+ 21 dump solution outfile=dump13801-1.dmp
+    
+========================================================================
+Pass 2 begins, Elapsed cpu time:	     0.06 sec
+========================================================================
+  1  dbase       cpu:      0.06 sec  0r  0i       0n       0e  [1848k]
+-----------------------------------------------------------------------
+  2  dbase       cpu:      0.06 sec  0r  0i       0n       0e  [1848k]
+-----------------------------------------------------------------------
+  3  dbase       cpu:      0.06 sec  0r  0i       0n       0e  [1848k]
+-----------------------------------------------------------------------
+  4  dbase       cpu:      0.06 sec  0r  0i       0n       0e  [1848k]
+-----------------------------------------------------------------------
+  5  system      cpu:      0.06 sec  0r  0i       0n       0e  [1848k]
+-----------------------------------------------------------------------
+Tensor_mesh: dim = 2
+Creating tensor mesh: 33 x 33  = 1089 nodes
+  6  grid        cpu:      0.09 sec  1r  3i    1089n    1024e  [2120k]
+-----------------------------------------------------------------------
+cathode: 8 elements matched by boundary specification
+  7  boundary    cpu:      0.10 sec  1r  4i    1089n    1024e  [2120k]
+-----------------------------------------------------------------------
+anode: 8 elements matched by boundary specification
+  8  boundary    cpu:      0.10 sec  1r  5i    1089n    1024e  [2120k]
+-----------------------------------------------------------------------
+  9  field       cpu:      0.11 sec  1r  5i    1089n    1024e  [2228k]
+-----------------------------------------------------------------------
+ 10  field       cpu:      0.11 sec  1r  5i    1089n    1024e  [2228k]
+-----------------------------------------------------------------------
+ 11  field       cpu:      0.11 sec  1r  5i    1089n    1024e  [2228k]
+-----------------------------------------------------------------------
+ 12  field       cpu:      0.11 sec  1r  5i    1089n    1024e  [2228k]
+-----------------------------------------------------------------------
+Starting Newton iterations:
+  solving for: psi
+  (linear eq. solver: direct, package: petsc)
+  Newton iter 0                    174u     13.3n    0.133lg    0.133lr
+  Newton iter 1               8.57e-14u 2.67e-13n 2.67e-15lg 2.67e-15lr
+  Newton converged:     residual norm = 1.21e-13n, reduction = 9.07e-15
+                        cpu = 0.03 sec
+ 13  solve       cpu:      0.18 sec  1r  5i    1089n    1024e  [2472k]
+-----------------------------------------------------------------------
+ 14  dbase       cpu:      0.18 sec  1r  5i    1089n    1024e  [2472k]
+-----------------------------------------------------------------------
+ 15  dbase       cpu:      0.18 sec  1r  5i    1089n    1024e  [2472k]
+-----------------------------------------------------------------------
+ 16  dbase       cpu:      0.19 sec  1r  5i    1089n    1024e  [2472k]
+-----------------------------------------------------------------------
+ 17  dbase       cpu:      0.19 sec  1r  5i    1089n    1024e  [2472k]
+-----------------------------------------------------------------------
+ 18  dbase       cpu:      0.19 sec  1r  5i    1089n    1024e  [2472k]
+-----------------------------------------------------------------------
+ 19  dbase       cpu:      0.19 sec  1r  5i    1089n    1024e  [2472k]
+-----------------------------------------------------------------------
+Starting Newton iterations:
+  solving for: psi
+  (linear eq. solver: direct, package: petsc)
+  Newton iter 0                  0.911u    0.955n  0.00955lg  0.00955lr
+  Newton iter 1               7.81e-16u 1.03e-15n 1.03e-17lg 1.03e-17lr
+  Newton converged:     residual norm = 6.31e-16n, reduction = 6.61e-16
+                        cpu = 0.02 sec
+ 20  solve       cpu:      0.23 sec  1r  5i    1089n    1024e  [2472k]
+-----------------------------------------------------------------------
+ 21  dump        cpu:      0.27 sec  1r  5i    1089n    1024e  [2472k]
+-----------------------------------------------------------------------</log>
+        <status>ok</status>
+        <mesh id="m0">
+            <about>
+                <label>Cloud Mesh</label>
+            </about>
+            <dim>3</dim>
+            <units>um</units>
+            <hide>yes</hide>
+            <unstructured>
+                <points>0.00000 0.00000 0.00000
+0.06250 0.00000 1.00000
+0.12500 0.00000 1.00000
+0.18750 0.00000 1.00000
+0.25000 0.00000 1.00000
+0.31250 0.00000 1.00000
+0.37500 0.00000 1.00000
+0.43750 0.00000 1.00000
+0.50000 0.00000 1.00000
+0.56250 0.00000 1.00000
+0.62500 0.00000 1.00000
+0.68750 0.00000 1.00000
+0.75000 0.00000 1.00000
+0.81250 0.00000 1.00000
+0.87500 0.00000 1.00000
+0.93750 0.00000 1.00000
+1.00000 0.00000 1.00000
+1.06250 0.00000 1.00000
+1.12500 0.00000 1.00000
+1.18750 0.00000 1.00000
+1.25000 0.00000 1.00000
+1.31250 0.00000 1.00000
+1.37500 0.00000 1.00000
+1.43750 0.00000 1.00000
+1.50000 0.00000 1.00000
+1.56250 0.00000 1.00000
+1.62500 0.00000 1.00000
+1.68750 0.00000 1.00000
+1.75000 0.00000 1.00000
+1.81250 0.00000 1.00000
+1.87500 0.00000 1.00000
+1.93750 0.00000 1.00000
+2.00000 0.00000 1.00000
+0.00000 0.06250 0.00000
+0.06250 0.06250 0.00000
+0.12500 0.06250 0.00000
+0.18750 0.06250 0.00000
+0.25000 0.06250 0.00000
+0.31250 0.06250 0.00000
+0.37500 0.06250 0.00000
+0.43750 0.06250 0.00000
+0.50000 0.06250 0.00000
+0.56250 0.06250 0.00000
+0.62500 0.06250 0.00000
+0.68750 0.06250 0.00000
+0.75000 0.06250 0.00000
+0.81250 0.06250 0.00000
+0.87500 0.06250 0.00000
+0.93750 0.06250 0.00000
+1.00000 0.06250 0.00000
+1.06250 0.06250 0.00000
+1.12500 0.06250 0.00000
+1.18750 0.06250 0.00000
+1.25000 0.06250 0.00000
+1.31250 0.06250 0.00000
+1.37500 0.06250 0.00000
+1.43750 0.06250 0.00000
+1.50000 0.06250 0.00000
+1.56250 0.06250 0.00000
+1.62500 0.06250 0.00000
+1.68750 0.06250 0.00000
+1.75000 0.06250 0.00000
+1.81250 0.06250 0.00000
+1.87500 0.06250 0.00000
+1.93750 0.06250 0.00000
+2.00000 0.06250 0.00000
+0.00000 0.12500 2.00000
+0.06250 0.12500 2.00000
+0.12500 0.12500 2.00000
+0.18750 0.12500 2.00000
+0.25000 0.12500 2.00000
+0.31250 0.12500 2.00000
+0.37500 0.12500 2.00000
+0.43750 0.12500 2.00000
+0.50000 0.12500 2.00000
+0.56250 0.12500 2.00000
+0.62500 0.12500 2.00000
+0.68750 0.12500 2.00000
+0.75000 0.12500 2.00000
+0.81250 0.12500 2.00000
+0.87500 0.12500 2.00000
+0.93750 0.12500 2.00000
+1.00000 0.12500 2.00000
+1.06250 0.12500 2.00000
+1.12500 0.12500 2.00000
+1.18750 0.12500 2.00000
+1.25000 0.12500 2.00000
+1.31250 0.12500 2.00000
+1.37500 0.12500 2.00000
+1.43750 0.12500 2.00000
+1.50000 0.12500 2.00000
+1.56250 0.12500 2.00000
+1.62500 0.12500 2.00000
+1.68750 0.12500 2.00000
+1.75000 0.12500 2.00000
+1.81250 0.12500 2.00000
+1.87500 0.12500 2.00000
+1.93750 0.12500 2.00000
+2.00000 0.12500 2.00000
+0.00000 0.18750 0.00000
+0.06250 0.18750 0.00000
+0.12500 0.18750 0.00000
+0.18750 0.18750 0.00000
+0.25000 0.18750 0.00000
+0.31250 0.18750 0.00000
+0.37500 0.18750 0.00000
+0.43750 0.18750 0.00000
+0.50000 0.18750 0.00000
+0.56250 0.18750 0.00000
+0.62500 0.18750 0.00000
+0.68750 0.18750 0.00000
+0.75000 0.18750 0.00000
+0.81250 0.18750 0.00000
+0.87500 0.18750 0.00000
+0.93750 0.18750 0.00000
+1.00000 0.18750 0.00000
+1.06250 0.18750 0.00000
+1.12500 0.18750 0.00000
+1.18750 0.18750 0.00000
+1.25000 0.18750 0.00000
+1.31250 0.18750 0.00000
+1.37500 0.18750 0.00000
+1.43750 0.18750 0.00000
+1.50000 0.18750 0.00000
+1.56250 0.18750 0.00000
+1.62500 0.18750 0.00000
+1.68750 0.18750 0.00000
+1.75000 0.18750 0.00000
+1.81250 0.18750 0.00000
+1.87500 0.18750 0.00000
+1.93750 0.18750 0.00000
+2.00000 0.18750 0.00000
+0.00000 0.25000 1.00000
+0.06250 0.25000 1.00000
+0.12500 0.25000 1.00000
+0.18750 0.25000 1.00000
+0.25000 0.25000 1.00000
+0.31250 0.25000 1.00000
+0.37500 0.25000 1.00000
+0.43750 0.25000 1.00000
+0.50000 0.25000 1.00000
+0.56250 0.25000 1.00000
+0.62500 0.25000 1.00000
+0.68750 0.25000 1.00000
+0.75000 0.25000 1.00000
+0.81250 0.25000 1.00000
+0.87500 0.25000 1.00000
+0.93750 0.25000 1.00000
+1.00000 0.25000 1.00000
+1.06250 0.25000 1.00000
+1.12500 0.25000 1.00000
+1.18750 0.25000 1.00000
+1.25000 0.25000 1.00000
+1.31250 0.25000 1.00000
+1.37500 0.25000 1.00000
+1.43750 0.25000 1.00000
+1.50000 0.25000 1.00000
+1.56250 0.25000 1.00000
+1.62500 0.25000 1.00000
+1.68750 0.25000 1.00000
+1.75000 0.25000 1.00000
+1.81250 0.25000 1.00000
+1.87500 0.25000 1.00000
+1.93750 0.25000 1.00000
+2.00000 0.25000 1.00000
+0.00000 0.31250 2.00000
+0.06250 0.31250 2.00000
+0.12500 0.31250 2.00000
+0.18750 0.31250 2.00000
+0.25000 0.31250 2.00000
+0.31250 0.31250 2.00000
+0.37500 0.31250 2.00000
+0.43750 0.31250 2.00000
+0.50000 0.31250 2.00000
+0.56250 0.31250 2.00000
+0.62500 0.31250 2.00000
+0.68750 0.31250 2.00000
+0.75000 0.31250 2.00000
+0.81250 0.31250 2.00000
+0.87500 0.31250 2.00000
+0.93750 0.31250 2.00000
+1.00000 0.31250 2.00000
+1.06250 0.31250 2.00000
+1.12500 0.31250 2.00000
+1.18750 0.31250 2.00000
+1.25000 0.31250 2.00000
+1.31250 0.31250 2.00000
+1.37500 0.31250 2.00000
+1.43750 0.31250 2.00000
+1.50000 0.31250 2.00000
+1.56250 0.31250 2.00000
+1.62500 0.31250 2.00000
+1.68750 0.31250 2.00000
+1.75000 0.31250 2.00000
+1.81250 0.31250 2.00000
+1.87500 0.31250 2.00000
+1.93750 0.31250 2.00000
+2.00000 0.31250 2.00000
+0.00000 0.37500 0.00000
+0.06250 0.37500 0.00000
+0.12500 0.37500 0.00000
+0.18750 0.37500 0.00000
+0.25000 0.37500 0.00000
+0.31250 0.37500 0.00000
+0.37500 0.37500 0.00000
+0.43750 0.37500 0.00000
+0.50000 0.37500 0.00000
+0.56250 0.37500 0.00000
+0.62500 0.37500 0.00000
+0.68750 0.37500 0.00000
+0.75000 0.37500 0.00000
+0.81250 0.37500 0.00000
+0.87500 0.37500 0.00000
+0.93750 0.37500 0.00000
+1.00000 0.37500 0.00000
+1.06250 0.37500 0.00000
+1.12500 0.37500 0.00000
+1.18750 0.37500 0.00000
+1.25000 0.37500 0.00000
+1.31250 0.37500 0.00000
+1.37500 0.37500 0.00000
+1.43750 0.37500 0.00000
+1.50000 0.37500 0.00000
+1.56250 0.37500 0.00000
+1.62500 0.37500 0.00000
+1.68750 0.37500 0.00000
+1.75000 0.37500 0.00000
+1.81250 0.37500 0.00000
+1.87500 0.37500 0.00000
+1.93750 0.37500 0.00000
+2.00000 0.37500 0.00000
+0.00000 0.43750 1.00000
+0.06250 0.43750 1.00000
+0.12500 0.43750 1.00000
+0.18750 0.43750 1.00000
+0.25000 0.43750 1.00000
+0.31250 0.43750 1.00000
+0.37500 0.43750 1.00000
+0.43750 0.43750 1.00000
+0.50000 0.43750 1.00000
+0.56250 0.43750 1.00000
+0.62500 0.43750 1.00000
+0.68750 0.43750 1.00000
+0.75000 0.43750 1.00000
+0.81250 0.43750 1.00000
+0.87500 0.43750 1.00000
+0.93750 0.43750 1.00000
+1.00000 0.43750 1.00000
+1.06250 0.43750 1.00000
+1.12500 0.43750 1.00000
+1.18750 0.43750 1.00000
+1.25000 0.43750 1.00000
+1.31250 0.43750 1.00000
+1.37500 0.43750 1.00000
+1.43750 0.43750 1.00000
+1.50000 0.43750 1.00000
+1.56250 0.43750 1.00000
+1.62500 0.43750 1.00000
+1.68750 0.43750 1.00000
+1.75000 0.43750 1.00000
+1.81250 0.43750 1.00000
+1.87500 0.43750 1.00000
+1.93750 0.43750 1.00000
+2.00000 0.43750 1.00000
+0.00000 0.50000 2.00000
+0.06250 0.50000 2.00000
+0.12500 0.50000 2.00000
+0.18750 0.50000 2.00000
+0.25000 0.50000 2.00000
+0.31250 0.50000 2.00000
+0.37500 0.50000 2.00000
+0.43750 0.50000 2.00000
+0.50000 0.50000 2.00000
+0.56250 0.50000 2.00000
+0.62500 0.50000 2.00000
+0.68750 0.50000 2.00000
+0.75000 0.50000 2.00000
+0.81250 0.50000 2.00000
+0.87500 0.50000 2.00000
+0.93750 0.50000 2.00000
+1.00000 0.50000 2.00000
+1.06250 0.50000 2.00000
+1.12500 0.50000 2.00000
+1.18750 0.50000 2.00000
+1.25000 0.50000 2.00000
+1.31250 0.50000 2.00000
+1.37500 0.50000 2.00000
+1.43750 0.50000 2.00000
+1.50000 0.50000 2.00000
+1.56250 0.50000 2.00000
+1.62500 0.50000 2.00000
+1.68750 0.50000 2.00000
+1.75000 0.50000 2.00000
+1.81250 0.50000 2.00000
+1.87500 0.50000 2.00000
+1.93750 0.50000 2.00000
+2.00000 0.50000 2.00000
+0.00000 0.56250 0.00000
+0.06250 0.56250 0.00000
+0.12500 0.56250 0.00000
+0.18750 0.56250 0.00000
+0.25000 0.56250 0.00000
+0.31250 0.56250 0.00000
+0.37500 0.56250 0.00000
+0.43750 0.56250 0.00000
+0.50000 0.56250 0.00000
+0.56250 0.56250 0.00000
+0.62500 0.56250 0.00000
+0.68750 0.56250 0.00000
+0.75000 0.56250 0.00000
+0.81250 0.56250 0.00000
+0.87500 0.56250 0.00000
+0.93750 0.56250 0.00000
+1.00000 0.56250 0.00000
+1.06250 0.56250 0.00000
+1.12500 0.56250 0.00000
+1.18750 0.56250 0.00000
+1.25000 0.56250 0.00000
+1.31250 0.56250 0.00000
+1.37500 0.56250 0.00000
+1.43750 0.56250 0.00000
+1.50000 0.56250 0.00000
+1.56250 0.56250 0.00000
+1.62500 0.56250 0.00000
+1.68750 0.56250 0.00000
+1.75000 0.56250 0.00000
+1.81250 0.56250 0.00000
+1.87500 0.56250 0.00000
+1.93750 0.56250 0.00000
+2.00000 0.56250 0.00000
+0.00000 0.62500 1.00000
+0.06250 0.62500 1.00000
+0.12500 0.62500 1.00000
+0.18750 0.62500 1.00000
+0.25000 0.62500 1.00000
+0.31250 0.62500 1.00000
+0.37500 0.62500 1.00000
+0.43750 0.62500 1.00000
+0.50000 0.62500 1.00000
+0.56250 0.62500 1.00000
+0.62500 0.62500 1.00000
+0.68750 0.62500 1.00000
+0.75000 0.62500 1.00000
+0.81250 0.62500 1.00000
+0.87500 0.62500 1.00000
+0.93750 0.62500 1.00000
+1.00000 0.62500 1.00000
+1.06250 0.62500 1.00000
+1.12500 0.62500 1.00000
+1.18750 0.62500 1.00000
+1.25000 0.62500 1.00000
+1.31250 0.62500 1.00000
+1.37500 0.62500 1.00000
+1.43750 0.62500 1.00000
+1.50000 0.62500 1.00000
+1.56250 0.62500 1.00000
+1.62500 0.62500 1.00000
+1.68750 0.62500 1.00000
+1.75000 0.62500 1.00000
+1.81250 0.62500 1.00000
+1.87500 0.62500 1.00000
+1.93750 0.62500 1.00000
+2.00000 0.62500 1.00000
+0.00000 0.68750 2.00000
+0.06250 0.68750 2.00000
+0.12500 0.68750 2.00000
+0.18750 0.68750 2.00000
+0.25000 0.68750 2.00000
+0.31250 0.68750 2.00000
+0.37500 0.68750 2.00000
+0.43750 0.68750 2.00000
+0.50000 0.68750 2.00000
+0.56250 0.68750 2.00000
+0.62500 0.68750 2.00000
+0.68750 0.68750 2.00000
+0.75000 0.68750 2.00000
+0.81250 0.68750 2.00000
+0.87500 0.68750 2.00000
+0.93750 0.68750 2.00000
+1.00000 0.68750 2.00000
+1.06250 0.68750 2.00000
+1.12500 0.68750 2.00000
+1.18750 0.68750 2.00000
+1.25000 0.68750 2.00000
+1.31250 0.68750 2.00000
+1.37500 0.68750 2.00000
+1.43750 0.68750 2.00000
+1.50000 0.68750 2.00000
+1.56250 0.68750 2.00000
+1.62500 0.68750 2.00000
+1.68750 0.68750 2.00000
+1.75000 0.68750 2.00000
+1.81250 0.68750 2.00000
+1.87500 0.68750 2.00000
+1.93750 0.68750 2.00000
+2.00000 0.68750 2.00000
+0.00000 0.75000 0.00000
+0.06250 0.75000 0.00000
+0.12500 0.75000 0.00000
+0.18750 0.75000 0.00000
+0.25000 0.75000 0.00000
+0.31250 0.75000 0.00000
+0.37500 0.75000 0.00000
+0.43750 0.75000 0.00000
+0.50000 0.75000 0.00000
+0.56250 0.75000 0.00000
+0.62500 0.75000 0.00000
+0.68750 0.75000 0.00000
+0.75000 0.75000 0.00000
+0.81250 0.75000 0.00000
+0.87500 0.75000 0.00000
+0.93750 0.75000 0.00000
+1.00000 0.75000 0.00000
+1.06250 0.75000 0.00000
+1.12500 0.75000 0.00000
+1.18750 0.75000 0.00000
+1.25000 0.75000 0.00000
+1.31250 0.75000 0.00000
+1.37500 0.75000 0.00000
+1.43750 0.75000 0.00000
+1.50000 0.75000 0.00000
+1.56250 0.75000 0.00000
+1.62500 0.75000 0.00000
+1.68750 0.75000 0.00000
+1.75000 0.75000 0.00000
+1.81250 0.75000 0.00000
+1.87500 0.75000 0.00000
+1.93750 0.75000 0.00000
+2.00000 0.75000 0.00000
+0.00000 0.81250 1.00000
+0.06250 0.81250 1.00000
+0.12500 0.81250 1.00000
+0.18750 0.81250 1.00000
+0.25000 0.81250 1.00000
+0.31250 0.81250 1.00000
+0.37500 0.81250 1.00000
+0.43750 0.81250 1.00000
+0.50000 0.81250 1.00000
+0.56250 0.81250 1.00000
+0.62500 0.81250 1.00000
+0.68750 0.81250 1.00000
+0.75000 0.81250 1.00000
+0.81250 0.81250 1.00000
+0.87500 0.81250 1.00000
+0.93750 0.81250 1.00000
+1.00000 0.81250 1.00000
+1.06250 0.81250 1.00000
+1.12500 0.81250 1.00000
+1.18750 0.81250 1.00000
+1.25000 0.81250 1.00000
+1.31250 0.81250 1.00000
+1.37500 0.81250 1.00000
+1.43750 0.81250 1.00000
+1.50000 0.81250 1.00000
+1.56250 0.81250 1.00000
+1.62500 0.81250 1.00000
+1.68750 0.81250 1.00000
+1.75000 0.81250 1.00000
+1.81250 0.81250 1.00000
+1.87500 0.81250 1.00000
+1.93750 0.81250 1.00000
+2.00000 0.81250 1.00000
+0.00000 0.87500 2.00000
+0.06250 0.87500 2.00000
+0.12500 0.87500 2.00000
+0.18750 0.87500 2.00000
+0.25000 0.87500 2.00000
+0.31250 0.87500 2.00000
+0.37500 0.87500 2.00000
+0.43750 0.87500 2.00000
+0.50000 0.87500 2.00000
+0.56250 0.87500 2.00000
+0.62500 0.87500 2.00000
+0.68750 0.87500 2.00000
+0.75000 0.87500 2.00000
+0.81250 0.87500 2.00000
+0.87500 0.87500 2.00000
+0.93750 0.87500 2.00000
+1.00000 0.87500 2.00000
+1.06250 0.87500 2.00000
+1.12500 0.87500 2.00000
+1.18750 0.87500 2.00000
+1.25000 0.87500 2.00000
+1.31250 0.87500 2.00000
+1.37500 0.87500 2.00000
+1.43750 0.87500 2.00000
+1.50000 0.87500 2.00000
+1.56250 0.87500 2.00000
+1.62500 0.87500 2.00000
+1.68750 0.87500 2.00000
+1.75000 0.87500 2.00000
+1.81250 0.87500 2.00000
+1.87500 0.87500 2.00000
+1.93750 0.87500 2.00000
+2.00000 0.87500 2.00000
+0.00000 0.93750 0.00000
+0.06250 0.93750 0.00000
+0.12500 0.93750 0.00000
+0.18750 0.93750 0.00000
+0.25000 0.93750 0.00000
+0.31250 0.93750 0.00000
+0.37500 0.93750 0.00000
+0.43750 0.93750 0.00000
+0.50000 0.93750 0.00000
+0.56250 0.93750 0.00000
+0.62500 0.93750 0.00000
+0.68750 0.93750 0.00000
+0.75000 0.93750 0.00000
+0.81250 0.93750 0.00000
+0.87500 0.93750 0.00000
+0.93750 0.93750 0.00000
+1.00000 0.93750 0.00000
+1.06250 0.93750 0.00000
+1.12500 0.93750 0.00000
+1.18750 0.93750 0.00000
+1.25000 0.93750 0.00000
+1.31250 0.93750 0.00000
+1.37500 0.93750 0.00000
+1.43750 0.93750 0.00000
+1.50000 0.93750 0.00000
+1.56250 0.93750 0.00000
+1.62500 0.93750 0.00000
+1.68750 0.93750 0.00000
+1.75000 0.93750 0.00000
+1.81250 0.93750 0.00000
+1.87500 0.93750 0.00000
+1.93750 0.93750 0.00000
+2.00000 0.93750 0.00000
+0.00000 1.00000 1.00000
+0.06250 1.00000 1.00000
+0.12500 1.00000 1.00000
+0.18750 1.00000 1.00000
+0.25000 1.00000 1.00000
+0.31250 1.00000 1.00000
+0.37500 1.00000 1.00000
+0.43750 1.00000 1.00000
+0.50000 1.00000 1.00000
+0.56250 1.00000 1.00000
+0.62500 1.00000 1.00000
+0.68750 1.00000 1.00000
+0.75000 1.00000 1.00000
+0.81250 1.00000 1.00000
+0.87500 1.00000 1.00000
+0.93750 1.00000 1.00000
+1.00000 1.00000 1.00000
+1.06250 1.00000 1.00000
+1.12500 1.00000 1.00000
+1.18750 1.00000 1.00000
+1.25000 1.00000 1.00000
+1.31250 1.00000 1.00000
+1.37500 1.00000 1.00000
+1.43750 1.00000 1.00000
+1.50000 1.00000 1.00000
+1.56250 1.00000 1.00000
+1.62500 1.00000 1.00000
+1.68750 1.00000 1.00000
+1.75000 1.00000 1.00000
+1.81250 1.00000 1.00000
+1.87500 1.00000 1.00000
+1.93750 1.00000 1.00000
+2.00000 1.00000 1.00000
+0.00000 1.06250 2.00000
+0.06250 1.06250 2.00000
+0.12500 1.06250 2.00000
+0.18750 1.06250 2.00000
+0.25000 1.06250 2.00000
+0.31250 1.06250 2.00000
+0.37500 1.06250 2.00000
+0.43750 1.06250 2.00000
+0.50000 1.06250 2.00000
+0.56250 1.06250 2.00000
+0.62500 1.06250 2.00000
+0.68750 1.06250 2.00000
+0.75000 1.06250 2.00000
+0.81250 1.06250 2.00000
+0.87500 1.06250 2.00000
+0.93750 1.06250 2.00000
+1.00000 1.06250 2.00000
+1.06250 1.06250 2.00000
+1.12500 1.06250 2.00000
+1.18750 1.06250 2.00000
+1.25000 1.06250 2.00000
+1.31250 1.06250 2.00000
+1.37500 1.06250 2.00000
+1.43750 1.06250 2.00000
+1.50000 1.06250 2.00000
+1.56250 1.06250 2.00000
+1.62500 1.06250 2.00000
+1.68750 1.06250 2.00000
+1.75000 1.06250 2.00000
+1.81250 1.06250 2.00000
+1.87500 1.06250 2.00000
+1.93750 1.06250 2.00000
+2.00000 1.06250 2.00000
+0.00000 1.12500 0.00000
+0.06250 1.12500 0.00000
+0.12500 1.12500 0.00000
+0.18750 1.12500 0.00000
+0.25000 1.12500 0.00000
+0.31250 1.12500 0.00000
+0.37500 1.12500 0.00000
+0.43750 1.12500 0.00000
+0.50000 1.12500 0.00000
+0.56250 1.12500 0.00000
+0.62500 1.12500 0.00000
+0.68750 1.12500 0.00000
+0.75000 1.12500 0.00000
+0.81250 1.12500 0.00000
+0.87500 1.12500 0.00000
+0.93750 1.12500 0.00000
+1.00000 1.12500 0.00000
+1.06250 1.12500 0.00000
+1.12500 1.12500 0.00000
+1.18750 1.12500 0.00000
+1.25000 1.12500 0.00000
+1.31250 1.12500 0.00000
+1.37500 1.12500 0.00000
+1.43750 1.12500 0.00000
+1.50000 1.12500 0.00000
+1.56250 1.12500 0.00000
+1.62500 1.12500 0.00000
+1.68750 1.12500 0.00000
+1.75000 1.12500 0.00000
+1.81250 1.12500 0.00000
+1.87500 1.12500 0.00000
+1.93750 1.12500 0.00000
+2.00000 1.12500 0.00000
+0.00000 1.18750 1.00000
+0.06250 1.18750 1.00000
+0.12500 1.18750 1.00000
+0.18750 1.18750 1.00000
+0.25000 1.18750 1.00000
+0.31250 1.18750 1.00000
+0.37500 1.18750 1.00000
+0.43750 1.18750 1.00000
+0.50000 1.18750 1.00000
+0.56250 1.18750 1.00000
+0.62500 1.18750 1.00000
+0.68750 1.18750 1.00000
+0.75000 1.18750 1.00000
+0.81250 1.18750 1.00000
+0.87500 1.18750 1.00000
+0.93750 1.18750 1.00000
+1.00000 1.18750 1.00000
+1.06250 1.18750 1.00000
+1.12500 1.18750 1.00000
+1.18750 1.18750 1.00000
+1.25000 1.18750 1.00000
+1.31250 1.18750 1.00000
+1.37500 1.18750 1.00000
+1.43750 1.18750 1.00000
+1.50000 1.18750 1.00000
+1.56250 1.18750 1.00000
+1.62500 1.18750 1.00000
+1.68750 1.18750 1.00000
+1.75000 1.18750 1.00000
+1.81250 1.18750 1.00000
+1.87500 1.18750 1.00000
+1.93750 1.18750 1.00000
+2.00000 1.18750 1.00000
+0.00000 1.25000 2.00000
+0.06250 1.25000 2.00000
+0.12500 1.25000 2.00000
+0.18750 1.25000 2.00000
+0.25000 1.25000 2.00000
+0.31250 1.25000 2.00000
+0.37500 1.25000 2.00000
+0.43750 1.25000 2.00000
+0.50000 1.25000 2.00000
+0.56250 1.25000 2.00000
+0.62500 1.25000 2.00000
+0.68750 1.25000 2.00000
+0.75000 1.25000 2.00000
+0.81250 1.25000 2.00000
+0.87500 1.25000 2.00000
+0.93750 1.25000 2.00000
+1.00000 1.25000 2.00000
+1.06250 1.25000 2.00000
+1.12500 1.25000 2.00000
+1.18750 1.25000 2.00000
+1.25000 1.25000 2.00000
+1.31250 1.25000 2.00000
+1.37500 1.25000 2.00000
+1.43750 1.25000 2.00000
+1.50000 1.25000 2.00000
+1.56250 1.25000 2.00000
+1.62500 1.25000 2.00000
+1.68750 1.25000 2.00000
+1.75000 1.25000 2.00000
+1.81250 1.25000 2.00000
+1.87500 1.25000 2.00000
+1.93750 1.25000 2.00000
+2.00000 1.25000 2.00000
+0.00000 1.31250 0.00000
+0.06250 1.31250 0.00000
+0.12500 1.31250 0.00000
+0.18750 1.31250 0.00000
+0.25000 1.31250 0.00000
+0.31250 1.31250 0.00000
+0.37500 1.31250 0.00000
+0.43750 1.31250 0.00000
+0.50000 1.31250 0.00000
+0.56250 1.31250 0.00000
+0.62500 1.31250 0.00000
+0.68750 1.31250 0.00000
+0.75000 1.31250 0.00000
+0.81250 1.31250 0.00000
+0.87500 1.31250 0.00000
+0.93750 1.31250 0.00000
+1.00000 1.31250 0.00000
+1.06250 1.31250 0.00000
+1.12500 1.31250 0.00000
+1.18750 1.31250 0.00000
+1.25000 1.31250 0.00000
+1.31250 1.31250 0.00000
+1.37500 1.31250 0.00000
+1.43750 1.31250 0.00000
+1.50000 1.31250 0.00000
+1.56250 1.31250 0.00000
+1.62500 1.31250 0.00000
+1.68750 1.31250 0.00000
+1.75000 1.31250 0.00000
+1.81250 1.31250 0.00000
+1.87500 1.31250 0.00000
+1.93750 1.31250 0.00000
+2.00000 1.31250 0.00000
+0.00000 1.37500 1.00000
+0.06250 1.37500 1.00000
+0.12500 1.37500 1.00000
+0.18750 1.37500 1.00000
+0.25000 1.37500 1.00000
+0.31250 1.37500 1.00000
+0.37500 1.37500 1.00000
+0.43750 1.37500 1.00000
+0.50000 1.37500 1.00000
+0.56250 1.37500 1.00000
+0.62500 1.37500 1.00000
+0.68750 1.37500 1.00000
+0.75000 1.37500 1.00000
+0.81250 1.37500 1.00000
+0.87500 1.37500 1.00000
+0.93750 1.37500 1.00000
+1.00000 1.37500 1.00000
+1.06250 1.37500 1.00000
+1.12500 1.37500 1.00000
+1.18750 1.37500 1.00000
+1.25000 1.37500 1.00000
+1.31250 1.37500 1.00000
+1.37500 1.37500 1.00000
+1.43750 1.37500 1.00000
+1.50000 1.37500 1.00000
+1.56250 1.37500 1.00000
+1.62500 1.37500 1.00000
+1.68750 1.37500 1.00000
+1.75000 1.37500 1.00000
+1.81250 1.37500 1.00000
+1.87500 1.37500 1.00000
+1.93750 1.37500 1.00000
+2.00000 1.37500 1.00000
+0.00000 1.43750 2.00000
+0.06250 1.43750 2.00000
+0.12500 1.43750 2.00000
+0.18750 1.43750 2.00000
+0.25000 1.43750 2.00000
+0.31250 1.43750 2.00000
+0.37500 1.43750 2.00000
+0.43750 1.43750 2.00000
+0.50000 1.43750 2.00000
+0.56250 1.43750 2.00000
+0.62500 1.43750 2.00000
+0.68750 1.43750 2.00000
+0.75000 1.43750 2.00000
+0.81250 1.43750 2.00000
+0.87500 1.43750 2.00000
+0.93750 1.43750 2.00000
+1.00000 1.43750 2.00000
+1.06250 1.43750 2.00000
+1.12500 1.43750 2.00000
+1.18750 1.43750 2.00000
+1.25000 1.43750 2.00000
+1.31250 1.43750 2.00000
+1.37500 1.43750 2.00000
+1.43750 1.43750 2.00000
+1.50000 1.43750 2.00000
+1.56250 1.43750 2.00000
+1.62500 1.43750 2.00000
+1.68750 1.43750 2.00000
+1.75000 1.43750 2.00000
+1.81250 1.43750 2.00000
+1.87500 1.43750 2.00000
+1.93750 1.43750 2.00000
+2.00000 1.43750 2.00000
+0.00000 1.50000 0.00000
+0.06250 1.50000 0.00000
+0.12500 1.50000 0.00000
+0.18750 1.50000 0.00000
+0.25000 1.50000 0.00000
+0.31250 1.50000 0.00000
+0.37500 1.50000 0.00000
+0.43750 1.50000 0.00000
+0.50000 1.50000 0.00000
+0.56250 1.50000 0.00000
+0.62500 1.50000 0.00000
+0.68750 1.50000 0.00000
+0.75000 1.50000 0.00000
+0.81250 1.50000 0.00000
+0.87500 1.50000 0.00000
+0.93750 1.50000 0.00000
+1.00000 1.50000 0.00000
+1.06250 1.50000 0.00000
+1.12500 1.50000 0.00000
+1.18750 1.50000 0.00000
+1.25000 1.50000 0.00000
+1.31250 1.50000 0.00000
+1.37500 1.50000 0.00000
+1.43750 1.50000 0.00000
+1.50000 1.50000 0.00000
+1.56250 1.50000 0.00000
+1.62500 1.50000 0.00000
+1.68750 1.50000 0.00000
+1.75000 1.50000 0.00000
+1.81250 1.50000 0.00000
+1.87500 1.50000 0.00000
+1.93750 1.50000 0.00000
+2.00000 1.50000 0.00000
+0.00000 1.56250 1.00000
+0.06250 1.56250 1.00000
+0.12500 1.56250 1.00000
+0.18750 1.56250 1.00000
+0.25000 1.56250 1.00000
+0.31250 1.56250 1.00000
+0.37500 1.56250 1.00000
+0.43750 1.56250 1.00000
+0.50000 1.56250 1.00000
+0.56250 1.56250 1.00000
+0.62500 1.56250 1.00000
+0.68750 1.56250 1.00000
+0.75000 1.56250 1.00000
+0.81250 1.56250 1.00000
+0.87500 1.56250 1.00000
+0.93750 1.56250 1.00000
+1.00000 1.56250 1.00000
+1.06250 1.56250 1.00000
+1.12500 1.56250 1.00000
+1.18750 1.56250 1.00000
+1.25000 1.56250 1.00000
+1.31250 1.56250 1.00000
+1.37500 1.56250 1.00000
+1.43750 1.56250 1.00000
+1.50000 1.56250 1.00000
+1.56250 1.56250 1.00000
+1.62500 1.56250 1.00000
+1.68750 1.56250 1.00000
+1.75000 1.56250 1.00000
+1.81250 1.56250 1.00000
+1.87500 1.56250 1.00000
+1.93750 1.56250 1.00000
+2.00000 1.56250 1.00000
+0.00000 1.62500 2.00000
+0.06250 1.62500 2.00000
+0.12500 1.62500 2.00000
+0.18750 1.62500 2.00000
+0.25000 1.62500 2.00000
+0.31250 1.62500 2.00000
+0.37500 1.62500 2.00000
+0.43750 1.62500 2.00000
+0.50000 1.62500 2.00000
+0.56250 1.62500 2.00000
+0.62500 1.62500 2.00000
+0.68750 1.62500 2.00000
+0.75000 1.62500 2.00000
+0.81250 1.62500 2.00000
+0.87500 1.62500 2.00000
+0.93750 1.62500 2.00000
+1.00000 1.62500 2.00000
+1.06250 1.62500 2.00000
+1.12500 1.62500 2.00000
+1.18750 1.62500 2.00000
+1.25000 1.62500 2.00000
+1.31250 1.62500 2.00000
+1.37500 1.62500 2.00000
+1.43750 1.62500 2.00000
+1.50000 1.62500 2.00000
+1.56250 1.62500 2.00000
+1.62500 1.62500 2.00000
+1.68750 1.62500 2.00000
+1.75000 1.62500 2.00000
+1.81250 1.62500 2.00000
+1.87500 1.62500 2.00000
+1.93750 1.62500 2.00000
+2.00000 1.62500 2.00000
+0.00000 1.68750 0.00000
+0.06250 1.68750 0.00000
+0.12500 1.68750 0.00000
+0.18750 1.68750 0.00000
+0.25000 1.68750 0.00000
+0.31250 1.68750 0.00000
+0.37500 1.68750 0.00000
+0.43750 1.68750 0.00000
+0.50000 1.68750 0.00000
+0.56250 1.68750 0.00000
+0.62500 1.68750 0.00000
+0.68750 1.68750 0.00000
+0.75000 1.68750 0.00000
+0.81250 1.68750 0.00000
+0.87500 1.68750 0.00000
+0.93750 1.68750 0.00000
+1.00000 1.68750 0.00000
+1.06250 1.68750 0.00000
+1.12500 1.68750 0.00000
+1.18750 1.68750 0.00000
+1.25000 1.68750 0.00000
+1.31250 1.68750 0.00000
+1.37500 1.68750 0.00000
+1.43750 1.68750 0.00000
+1.50000 1.68750 0.00000
+1.56250 1.68750 0.00000
+1.62500 1.68750 0.00000
+1.68750 1.68750 0.00000
+1.75000 1.68750 0.00000
+1.81250 1.68750 0.00000
+1.87500 1.68750 0.00000
+1.93750 1.68750 0.00000
+2.00000 1.68750 0.00000
+0.00000 1.75000 1.00000
+0.06250 1.75000 1.00000
+0.12500 1.75000 1.00000
+0.18750 1.75000 1.00000
+0.25000 1.75000 1.00000
+0.31250 1.75000 1.00000
+0.37500 1.75000 1.00000
+0.43750 1.75000 1.00000
+0.50000 1.75000 1.00000
+0.56250 1.75000 1.00000
+0.62500 1.75000 1.00000
+0.68750 1.75000 1.00000
+0.75000 1.75000 1.00000
+0.81250 1.75000 1.00000
+0.87500 1.75000 1.00000
+0.93750 1.75000 1.00000
+1.00000 1.75000 1.00000
+1.06250 1.75000 1.00000
+1.12500 1.75000 1.00000
+1.18750 1.75000 1.00000
+1.25000 1.75000 1.00000
+1.31250 1.75000 1.00000
+1.37500 1.75000 1.00000
+1.43750 1.75000 1.00000
+1.50000 1.75000 1.00000
+1.56250 1.75000 1.00000
+1.62500 1.75000 1.00000
+1.68750 1.75000 1.00000
+1.75000 1.75000 1.00000
+1.81250 1.75000 1.00000
+1.87500 1.75000 1.00000
+1.93750 1.75000 1.00000
+2.00000 1.75000 1.00000
+0.00000 1.81250 2.00000
+0.06250 1.81250 2.00000
+0.12500 1.81250 2.00000
+0.18750 1.81250 2.00000
+0.25000 1.81250 2.00000
+0.31250 1.81250 2.00000
+0.37500 1.81250 2.00000
+0.43750 1.81250 2.00000
+0.50000 1.81250 2.00000
+0.56250 1.81250 2.00000
+0.62500 1.81250 2.00000
+0.68750 1.81250 2.00000
+0.75000 1.81250 2.00000
+0.81250 1.81250 2.00000
+0.87500 1.81250 2.00000
+0.93750 1.81250 2.00000
+1.00000 1.81250 2.00000
+1.06250 1.81250 2.00000
+1.12500 1.81250 2.00000
+1.18750 1.81250 2.00000
+1.25000 1.81250 2.00000
+1.31250 1.81250 2.00000
+1.37500 1.81250 2.00000
+1.43750 1.81250 2.00000
+1.50000 1.81250 2.00000
+1.56250 1.81250 2.00000
+1.62500 1.81250 2.00000
+1.68750 1.81250 2.00000
+1.75000 1.81250 2.00000
+1.81250 1.81250 2.00000
+1.87500 1.81250 2.00000
+1.93750 1.81250 2.00000
+2.00000 1.81250 2.00000
+0.00000 1.87500 0.00000
+0.06250 1.87500 0.00000
+0.12500 1.87500 0.00000
+0.18750 1.87500 0.00000
+0.25000 1.87500 0.00000
+0.31250 1.87500 0.00000
+0.37500 1.87500 0.00000
+0.43750 1.87500 0.00000
+0.50000 1.87500 0.00000
+0.56250 1.87500 0.00000
+0.62500 1.87500 0.00000
+0.68750 1.87500 0.00000
+0.75000 1.87500 0.00000
+0.81250 1.87500 0.00000
+0.87500 1.87500 0.00000
+0.93750 1.87500 0.00000
+1.00000 1.87500 0.00000
+1.06250 1.87500 0.00000
+1.12500 1.87500 0.00000
+1.18750 1.87500 0.00000
+1.25000 1.87500 0.00000
+1.31250 1.87500 0.00000
+1.37500 1.87500 0.00000
+1.43750 1.87500 0.00000
+1.50000 1.87500 0.00000
+1.56250 1.87500 0.00000
+1.62500 1.87500 0.00000
+1.68750 1.87500 0.00000
+1.75000 1.87500 0.00000
+1.81250 1.87500 0.00000
+1.87500 1.87500 0.00000
+1.93750 1.87500 0.00000
+2.00000 1.87500 0.00000
+0.00000 1.93750 1.00000
+0.06250 1.93750 1.00000
+0.12500 1.93750 1.00000
+0.18750 1.93750 1.00000
+0.25000 1.93750 1.00000
+0.31250 1.93750 1.00000
+0.37500 1.93750 1.00000
+0.43750 1.93750 1.00000
+0.50000 1.93750 1.00000
+0.56250 1.93750 1.00000
+0.62500 1.93750 1.00000
+0.68750 1.93750 1.00000
+0.75000 1.93750 1.00000
+0.81250 1.93750 1.00000
+0.87500 1.93750 1.00000
+0.93750 1.93750 1.00000
+1.00000 1.93750 1.00000
+1.06250 1.93750 1.00000
+1.12500 1.93750 1.00000
+1.18750 1.93750 1.00000
+1.25000 1.93750 1.00000
+1.31250 1.93750 1.00000
+1.37500 1.93750 1.00000
+1.43750 1.93750 1.00000
+1.50000 1.93750 1.00000
+1.56250 1.93750 1.00000
+1.62500 1.93750 1.00000
+1.68750 1.93750 1.00000
+1.75000 1.93750 1.00000
+1.81250 1.93750 1.00000
+1.87500 1.93750 1.00000
+1.93750 1.93750 1.00000
+2.00000 1.93750 1.00000
+0.00000 2.00000 2.00000
+0.06250 2.00000 2.00000
+0.12500 2.00000 2.00000
+0.18750 2.00000 2.00000
+0.25000 2.00000 2.00000
+0.31250 2.00000 2.00000
+0.37500 2.00000 2.00000
+0.43750 2.00000 2.00000
+0.50000 2.00000 2.00000
+0.56250 2.00000 2.00000
+0.62500 2.00000 2.00000
+0.68750 2.00000 2.00000
+0.75000 2.00000 2.00000
+0.81250 2.00000 2.00000
+0.87500 2.00000 2.00000
+0.93750 2.00000 2.00000
+1.00000 2.00000 2.00000
+1.06250 2.00000 2.00000
+1.12500 2.00000 2.00000
+1.18750 2.00000 2.00000
+1.25000 2.00000 2.00000
+1.31250 2.00000 2.00000
+1.37500 2.00000 2.00000
+1.43750 2.00000 2.00000
+1.50000 2.00000 2.00000
+1.56250 2.00000 2.00000
+1.62500 2.00000 2.00000
+1.68750 2.00000 2.00000
+1.75000 2.00000 2.00000
+1.81250 2.00000 2.00000
+1.87500 2.00000 2.00000
+1.93750 2.00000 2.00000
+2.00000 2.00000 2.00000</points>
+            </unstructured>
+        </mesh>
+        <field id="psi-0">
+            <about>
+                <group>psi</group>
+                <label>solve system=my_poisson</label>
+            </about>
+            <component>
+                <mesh>output.mesh(m0)</mesh>
+                <values>-1
+-0.61367
+-0.25967
+0.06001
+0.34411
+0.59212
+0.80418
+0.98089
+1.1231
+1.2319
+1.3083
+1.3532
+1.3676
+1.3522
+1.3076
+1.2344
+1.133
+1.0037
+0.88267
+0.76999
+0.66579
+0.57011
+0.48295
+0.40432
+0.33415
+0.27242
+0.21906
+0.17402
+0.13725
+0.1087
+0.088333
+0.076126
+0.072059
+-1
+-0.61245
+-0.25747
+0.062846
+0.3472
+0.59514
+0.8069
+0.98317
+1.1249
+1.2332
+1.3091
+1.3535
+1.3675
+1.3518
+1.307
+1.2336
+1.132
+1.0026
+0.88147
+0.76874
+0.66452
+0.56883
+0.48169
+0.40307
+0.33293
+0.27122
+0.21789
+0.17287
+0.13613
+0.1076
+0.087246
+0.075047
+0.070983
+-1
+-0.60859
+-0.2505
+0.071733
+0.35679
+0.60443
+0.81519
+0.99006
+1.1302
+1.2369
+1.3113
+1.3545
+1.3673
+1.3506
+1.305
+1.231
+1.1289
+0.9992
+0.87784
+0.76498
+0.66069
+0.56499
+0.47788
+0.39932
+0.32926
+0.26763
+0.21438
+0.16945
+0.13277
+0.1043
+0.083988
+0.071816
+0.067761
+-1
+-0.60131
+-0.23758
+0.087886
+0.37388
+0.62069
+0.82948
+1.0018
+1.1391
+1.2431
+1.3149
+1.3558
+1.3667
+1.3484
+1.3015
+1.2264
+1.1237
+0.99341
+0.87169
+0.75863
+0.65425
+0.55856
+0.47151
+0.39306
+0.32313
+0.26165
+0.20855
+0.16375
+0.12719
+0.098813
+0.078578
+0.06645
+0.062409
+-1
+-0.58897
+-0.21632
+0.11361
+0.40024
+0.64506
+0.85035
+1.0185
+1.1515
+1.2514
+1.3195
+1.3572
+1.3654
+1.3448
+1.2962
+1.2198
+1.116
+0.98504
+0.86287
+0.74957
+0.64511
+0.54945
+0.46253
+0.38425
+0.31453
+0.25327
+0.20039
+0.15579
+0.1194
+0.091172
+0.071042
+0.058978
+0.05496
+-1
+-0.56816
+-0.18226
+0.15272
+0.4385
+0.67906
+0.8785
+1.0403
+1.1672
+1.2615
+1.3247
+1.3582
+1.3629
+1.3395
+1.2886
+1.2106
+1.1056
+0.97384
+0.85119
+0.73764
+0.63315
+0.5376
+0.45088
+0.37287
+0.30346
+0.24251
+0.18992
+0.1456
+0.10945
+0.08141
+0.061421
+0.049444
+0.045454
+-1
+-0.53133
+-0.12718
+0.21112
+0.49207
+0.72428
+0.91438
+1.0671
+1.1857
+1.2727
+1.3297
+1.358
+1.3585
+1.3318
+1.2784
+1.1984
+1.0921
+0.95949
+0.83637
+0.72266
+0.61822
+0.52289
+0.4365
+0.35889
+0.28989
+0.22937
+0.17718
+0.13321
+0.097372
+0.06958
+0.049771
+0.037904
+0.033951
+-1
+-0.45989
+-0.036161
+0.29696
+0.56446
+0.78171
+0.95773
+1.098
+1.206
+1.284
+1.3336
+1.3558
+1.3515
+1.321
+1.2647
+1.1827
+1.0751
+0.94162
+0.81813
+0.70438
+0.60016
+0.50522
+0.41933
+0.34227
+0.27384
+0.21387
+0.16219
+0.11868
+0.08323
+0.055746
+0.036163
+0.024432
+0.020525
+-1
+-0.30197
+0.11556
+0.41851
+0.65719
+0.85045
+1.0069
+1.1313
+1.2263
+1.2938
+1.3348
+1.3503
+1.3406
+1.3061
+1.2468
+1.1628
+1.0539
+0.91977
+0.79611
+0.68257
+0.5788
+0.48448
+0.39931
+0.323
+0.25532
+0.19605
+0.14502
+0.10208
+0.067101
+0.039994
+0.020684
+0.0091175
+0.0052655
+-0.097209
+0.10654
+0.35194
+0.57441
+0.76543
+0.92605
+1.0584
+1.164
+1.2443
+1.3
+1.3318
+1.3399
+1.3246
+1.286
+1.2238
+1.1379
+1.0279
+0.89346
+0.76997
+0.65697
+0.55398
+0.46059
+0.3764
+0.30109
+0.23436
+0.17598
+0.12574
+0.083488
+0.049085
+0.022429
+0.003442
+-0.0079289
+-0.011716
+0.36818
+0.44348
+0.58135
+0.73187
+0.87415
+1.0001
+1.1065
+1.1923
+1.2569
+1.3004
+1.3224
+1.3231
+1.3022
+1.2594
+1.1946
+1.1071
+0.99651
+0.86218
+0.73933
+0.62733
+0.52555
+0.43347
+0.3506
+0.27657
+0.21104
+0.15374
+0.10446
+0.063031
+0.029303
+0.0031752
+-0.015433
+-0.026577
+-0.030288
+0.65305
+0.68795
+0.76819
+0.86765
+0.96934
+1.0637
+1.1454
+1.2117
+1.2609
+1.2921
+1.3046
+1.2979
+1.2716
+1.2252
+1.158
+1.0695
+0.95895
+0.82538
+0.70383
+0.59344
+0.49341
+0.4031
+0.32196
+0.24953
+0.18546
+0.12947
+0.081324
+0.04085
+0.0079052
+-0.017616
+-0.035792
+-0.046676
+-0.050301
+0.8382
+0.85717
+0.90591
+0.97129
+1.042
+1.1099
+1.1698
+1.2182
+1.253
+1.2726
+1.2761
+1.2625
+1.2313
+1.1817
+1.1129
+1.0242
+0.91446
+0.78255
+0.66317
+0.55515
+0.45755
+0.36956
+0.29058
+0.22011
+0.15779
+0.10333
+0.056497
+0.017121
+-0.014935
+-0.03977
+-0.057459
+-0.068053
+-0.071581
+0.95549
+0.96671
+0.99707
+1.0397
+1.0875
+1.1343
+1.1758
+1.2085
+1.2303
+1.2394
+1.2346
+1.2149
+1.1794
+1.1274
+1.0579
+0.96994
+0.86221
+0.7332
+0.6171
+0.51244
+0.41804
+0.333
+0.25666
+0.18853
+0.12825
+0.075543
+0.030196
+-0.0079481
+-0.039012
+-0.063088
+-0.08024
+-0.090514
+-0.093936
+1.0204
+1.0272
+1.046
+1.0731
+1.1039
+1.1343
+1.1605
+1.18
+1.1904
+1.1902
+1.1781
+1.1531
+1.1142
+1.0606
+0.99147
+0.90554
+0.80135
+0.67689
+0.56559
+0.46547
+0.37515
+0.29371
+0.22051
+0.15508
+0.097119
+0.046376
+0.0026759
+-0.034115
+-0.064097
+-0.087347
+-0.10392
+-0.11384
+-0.11715
+1.0418
+1.0458
+1.0569
+1.0729
+1.091
+1.1083
+1.1222
+1.1304
+1.1312
+1.123
+1.1046
+1.0752
+1.0338
+0.97962
+0.91187
+0.82947
+0.73086
+0.61342
+0.50887
+0.41466
+0.32937
+0.25218
+0.18255
+0.12016
+0.064748
+0.016148
+-0.025772
+-0.061108
+-0.089933
+-0.1123
+-0.12825
+-0.13781
+-0.141
+1.0254
+1.0273
+1.0328
+1.0406
+1.0489
+1.0559
+1.0596
+1.0585
+1.051
+1.036
+1.0124
+0.97935
+0.93619
+0.88228
+0.81701
+0.73971
+0.64927
+0.54305
+0.44779
+0.36091
+0.28148
+0.20905
+0.14336
+0.084232
+0.031549
+-0.014779
+-0.054821
+-0.08863
+-0.11624
+-0.13769
+-0.153
+-0.16218
+-0.16524
+0.97501
+0.97547
+0.97664
+0.97789
+0.97831
+0.97676
+0.97205
+0.96299
+0.94851
+0.92766
+0.89963
+0.86374
+0.81945
+0.76638
+0.70428
+0.63316
+0.55356
+0.46769
+0.38431
+0.30571
+0.23258
+0.16517
+0.10358
+0.047842
+-0.0020215
+-0.046009
+-0.084122
+-0.11636
+-0.14274
+-0.16325
+-0.17789
+-0.18668
+-0.18961
+0.92973
+0.92887
+0.92632
+0.922
+0.91565
+0.90679
+0.89478
+0.87888
+0.85835
+0.8325
+0.80072
+0.7625
+0.71748
+0.66549
+0.60655
+0.54108
+0.47011
+0.39582
+0.32203
+0.25101
+0.18394
+0.12145
+0.063922
+0.011563
+-0.035486
+-0.077133
+-0.11331
+-0.14398
+-0.16911
+-0.18868
+-0.20266
+-0.21106
+-0.21386
+0.89214
+0.88996
+0.88375
+0.87412
+0.86148
+0.84595
+0.82737
+0.80538
+0.7795
+0.74926
+0.71422
+0.67404
+0.62848
+0.57752
+0.52134
+0.46048
+0.39597
+0.32942
+0.26297
+0.19834
+0.13669
+0.078766
+0.025077
+-0.024046
+-0.068372
+-0.10774
+-0.14203
+-0.17116
+-0.19507
+-0.21371
+-0.22704
+-0.23505
+-0.23772
+0.86489
+0.86105
+0.8506
+0.83522
+0.81617
+0.79415
+0.76937
+0.74174
+0.711
+0.6768
+0.63886
+0.59692
+0.55087
+0.50074
+0.44678
+0.38953
+0.32984
+0.26889
+0.20808
+0.14868
+0.091686
+0.037828
+-0.012352
+-0.058468
+-0.10023
+-0.13744
+-0.16993
+-0.19758
+-0.22032
+-0.23806
+-0.25076
+-0.2584
+-0.26094
+0.85132
+0.84472
+0.82837
+0.80596
+0.77981
+0.75108
+0.7202
+0.68721
+0.65191
+0.61408
+0.57347
+0.52991
+0.48331
+0.43376
+0.38151
+0.32701
+0.27095
+0.2142
+0.15777
+0.1026
+0.049526
+-0.00080385
+-0.047865
+-0.091258
+-0.13067
+-0.16588
+-0.19668
+-0.22295
+-0.24457
+-0.26146
+-0.27357
+-0.28085
+-0.28328
+0.85692
+0.84413
+0.81819
+0.78643
+0.75202
+0.71615
+0.67914
+0.64094
+0.60135
+0.56012
+0.51702
+0.4719
+0.42469
+0.37548
+0.32446
+0.27203
+0.21872
+0.16518
+0.11217
+0.060422
+0.010599
+-0.036722
+-0.081065
+-0.12204
+-0.15934
+-0.19273
+-0.22199
+-0.24697
+-0.26757
+-0.28367
+-0.29522
+-0.30217
+-0.30449
+0.89408
+0.86268
+0.81981
+0.77552
+0.73166
+0.68833
+0.64525
+0.60206
+0.55842
+0.51401
+0.46858
+0.42195
+0.37407
+0.32497
+0.27482
+0.22392
+0.17268
+0.12162
+0.071298
+0.022293
+-0.024849
+-0.069637
+-0.11165
+-0.15052
+-0.18596
+-0.21771
+-0.24558
+-0.26941
+-0.28907
+-0.30446
+-0.3155
+-0.32214
+-0.32436
+1
+0.8987
+0.82881
+0.77018
+0.71676
+0.66624
+0.61744
+0.56962
+0.52224
+0.4749
+0.4273
+0.37925
+0.33064
+0.28149
+0.23191
+0.18213
+0.13246
+0.0833
+0.035088
+-0.011717
+-0.056667
+-0.099348
+-0.13938
+-0.17645
+-0.21027
+-0.2406
+-0.26724
+-0.29004
+-0.30886
+-0.3236
+-0.33419
+-0.34056
+-0.34269
+1
+0.90929
+0.83254
+0.7656
+0.70495
+0.64841
+0.59463
+0.54271
+0.492
+0.44203
+0.39247
+0.34308
+0.29374
+0.24442
+0.19519
+0.14621
+0.097713
+0.050013
+0.0034527
+-0.041599
+-0.084774
+-0.12572
+-0.16411
+-0.19965
+-0.23209
+-0.26119
+-0.28677
+-0.30867
+-0.32676
+-0.34093
+-0.35111
+-0.35723
+-0.35928
+1
+0.91191
+0.83245
+0.76071
+0.695
+0.63381
+0.57595
+0.52057
+0.467
+0.41474
+0.36345
+0.31285
+0.2628
+0.21324
+0.1642
+0.11577
+0.068153
+0.021567
+-0.023709
+-0.067376
+-0.10913
+-0.14867
+-0.1857
+-0.21998
+-0.25125
+-0.27932
+-0.30399
+-0.32512
+-0.34258
+-0.35626
+-0.36609
+-0.37201
+-0.37399
+1
+0.9119
+0.8306
+0.75578
+0.68653
+0.62184
+0.56078
+0.50259
+0.44666
+0.39248
+0.3397
+0.28805
+0.23736
+0.18753
+0.13856
+0.090524
+0.04354
+-0.0022064
+-0.046496
+-0.089085
+-0.12972
+-0.16813
+-0.20408
+-0.23732
+-0.26764
+-0.29485
+-0.31878
+-0.33927
+-0.3562
+-0.36947
+-0.379
+-0.38475
+-0.38667
+1
+0.91107
+0.82824
+0.75125
+0.67949
+0.61223
+0.54873
+0.48835
+0.43053
+0.37481
+0.32082
+0.26829
+0.21703
+0.16694
+0.11799
+0.070199
+0.023672
+-0.021454
+-0.065004
+-0.10677
+-0.14654
+-0.18408
+-0.21917
+-0.2516
+-0.28117
+-0.3077
+-0.33102
+-0.35099
+-0.36749
+-0.38043
+-0.38973
+-0.39533
+-0.3972
+1
+0.91011
+0.82604
+0.74748
+0.67393
+0.60482
+0.53954
+0.47754
+0.41829
+0.36138
+0.30645
+0.25323
+0.20152
+0.1512
+0.10222
+0.054597
+0.0083865
+-0.036298
+-0.07931
+-0.12048
+-0.1596
+-0.19649
+-0.23094
+-0.26276
+-0.29176
+-0.31776
+-0.34062
+-0.3602
+-0.37637
+-0.38905
+-0.39817
+-0.40365
+-0.40549
+1
+0.90931
+0.82432
+0.74467
+0.66992
+0.59956
+0.53307
+0.46994
+0.4097
+0.35196
+0.29635
+0.24263
+0.19059
+0.1401
+0.09109
+0.043561
+-0.0024431
+-0.046833
+-0.089482
+-0.13024
+-0.16892
+-0.20537
+-0.23937
+-0.27076
+-0.29935
+-0.32499
+-0.34753
+-0.36682
+-0.38276
+-0.39526
+-0.40424
+-0.40965
+-0.41146
+1
+0.9088
+0.82324
+0.74295
+0.6675
+0.59642
+0.52922
+0.46543
+0.40461
+0.34636
+0.29036
+0.23634
+0.1841
+0.13349
+0.084461
+0.036983
+-0.0089054
+-0.053126
+-0.095565
+-0.13608
+-0.17451
+-0.21069
+-0.24443
+-0.27557
+-0.30393
+-0.32935
+-0.35169
+-0.37081
+-0.38662
+-0.39901
+-0.40791
+-0.41328
+-0.41507
+1
+0.90862
+0.82287
+0.74237
+0.66669
+0.59537
+0.52794
+0.46394
+0.40292
+0.34451
+0.28838
+0.23426
+0.18194
+0.1313
+0.08226
+0.034798
+-0.011054
+-0.055219
+-0.09759
+-0.13803
+-0.17637
+-0.21246
+-0.24612
+-0.27717
+-0.30545
+-0.3308
+-0.35308
+-0.37215
+-0.38791
+-0.40026
+-0.40914
+-0.41449
+-0.41627
+</values>
+            </component>
+        </field>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/3D/Makefile.in
===================================================================
--- /tags/1.6.0/examples/3D/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/3D/Makefile.in	(revision 6168)
@@ -0,0 +1,37 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+INSTALL_DATA	= @INSTALL_DATA@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/3d_test_run.xml \
+		$(srcdir)/README
+
+destdir		= $(prefix)/examples/3D
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/3D/README
===================================================================
--- /tags/1.6.0/examples/3D/README	(revision 6168)
+++ /tags/1.6.0/examples/3D/README	(revision 6168)
@@ -0,0 +1,18 @@
+This is a brief example of using the rerun program and the 3D 
+capabilities within Rappture.
+
+In this example, the file 3d_test_run.xml is a run file generated 
+by the Rappture GUI some time ago from a tool called Prophet.
+
+For more information on Prophet check out 
+
+http://www.nanohub.org/simulation_tools/prophet_tool_information
+
+To use the rerun program type
+    % rerun 3d_test_run.xml
+
+Since rerun's purpose is to revisualize data from previously run
+input, changing the simulation parameters will not effect the
+data that will be displayed in the rerun simulator. Therefore
+you should proceed in clicking the "Simulate" button to see the
+stored graphs, outputs, and data.
Index: /tags/1.6.0/examples/Makefile.in
===================================================================
--- /tags/1.6.0/examples/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/Makefile.in	(revision 6168)
@@ -0,0 +1,56 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+destdir		= $(prefix)/examples/3D
+
+SHELL		= @SHELL@
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+destdir		= $(prefix)/examples
+
+FILES		= \
+		demo.bash
+
+SUBDIRS		= \
+		3D \
+		app-fermi \
+		c-example \
+		canvas \
+		flow \
+		graph \
+		objects \
+		zoo 
+
+.PHONY: all install clean distclean $(SUBDIRS)
+
+all: $(SUBDIRS)
+
+$(SUBDIRS):
+	$(MAKE) -C $@ all
+
+install:
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+	for i in $(SUBDIRS) ; do \
+	    $(MAKE) -C $$i install || exit 1 ; \
+	done
+
+clean:
+	for i in $(SUBDIRS) ; do \
+	    $(MAKE) -C $$i clean || exit 1 ; \
+	done
+
+distclean: clean
+	for i in $(SUBDIRS) ; do \
+	    $(MAKE) -C $$i distclean || exit 1 ; \
+	done
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/app-fermi/2.0/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/2.0/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/2.0/Makefile.in	(revision 6168)
@@ -0,0 +1,34 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+destdir		= $(prefix)/examples/app-fermi/2.0
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+FILES 		= \
+		$(srcdir)/README \
+		$(srcdir)/fermi.py \
+		$(srcdir)/fermi_io.py
+
+all:	
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/examples/app-fermi/2.0/README
===================================================================
--- /tags/1.6.0/examples/app-fermi/2.0/README	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/2.0/README	(revision 6168)
@@ -0,0 +1,2 @@
+to run type
+    %python fermi.py -g
Index: /tags/1.6.0/examples/app-fermi/2.0/fermi.py
===================================================================
--- /tags/1.6.0/examples/app-fermi/2.0/fermi.py	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/2.0/fermi.py	(revision 6168)
@@ -0,0 +1,43 @@
+# ----------------------------------------------------------------------
+#  FERMI STATISTICS
+#
+#  This simple example shows how you can use the Rappture toolkit
+#  to handle I/O for a simple simulator--in this case, one that
+#  computes Fermi-Dirac statistics.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+from math import *
+import sys
+import Rappture
+
+import fermi_io
+from fermi_io import *
+
+# do this right at the start, to handle command line args
+Rappture.interface(sys.argv, fermi_io)
+
+kT = 8.61734e-5 * T
+Emin = Ef - 10*kT
+Emax = Ef + 10*kT
+
+E = Emin; dE = 0.005*(Emax-Emin)
+
+Rappture.driver.put("output.curve(f12).about.label", "Fermi-Dirac Factor")
+Rappture.driver.put("output.curve(f12).xaxis.label", "Energy")
+Rappture.driver.put("output.curve(f12).xaxis.units", "eV")
+path = "output.curve(f12).component.xy"
+
+while E < Emax:
+    f = 1.0/(1.0 + exp((E - Ef)/kT))
+    # result.append( [E,f] )
+    value = "%s  %s\n" % (f,E)
+    Rappture.driver.put(path,value,append=1)
+    E += dE
+
Index: /tags/1.6.0/examples/app-fermi/2.0/fermi_io.py
===================================================================
--- /tags/1.6.0/examples/app-fermi/2.0/fermi_io.py	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/2.0/fermi_io.py	(revision 6168)
@@ -0,0 +1,30 @@
+# ----------------------------------------------------------------------
+#  FERMI STATISTICS
+#
+#  This simple example shows how you can use the Rappture toolkit
+#  to handle I/O for a simple simulator--in this case, one that
+#  computes Fermi-Dirac statistics.
+#
+#  This part contains the Rappture interface for the simulator.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+
+#T = 300
+#Ef = -5.5
+#result = []
+
+T = Rappture.number('input', id="temperature", units='K', default=300)
+Ef = Rappture.number('input', id="Ef", units='eV', default=-5.5)
+
+#result = Rappture.table('output.result') \
+#           .column('Energy (eV)',units='eV') \
+#           .column('Fermi-Dirac Factor')
+#result = []
Index: /tags/1.6.0/examples/app-fermi/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/Makefile.in	(revision 6168)
@@ -0,0 +1,86 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+INSTALL_PROGRAM	= ${INSTALL} -m 755
+INSTALL_DATA	= ${INSTALL} -m 644
+INSTALL_SCRIPT	= ${INSTALL} -m 644
+
+CC		= @CC@
+CXX		= @CXX@
+F77		= @F77@
+HAVE_RUBY_H     = @HAVE_RUBY_H@
+JAVAC		= @JAVAC@
+JAVA_INC_DIR    = @JAVA_INC_DIR@
+MEX             = @MEX@
+MKOCTFILE2	= @MKOCTFILE2@
+MKOCTFILE3	= @MKOCTFILE3@
+OCTAVE		= $(MKOCTFILE2) $(MKOCTFILE3)
+PERL            = @PERL@
+PYTHON          = @PYTHON_DISTUTILS@
+PYTHON		= @PYTHON@
+R		= @R@
+RUBY		= @RUBY@
+TCLSH           = @TCLSH@
+ENABLE_LANG     = @ENABLE_LANG@
+
+.PHONY: all install clean distclean tcl cee fortran octave matlab perl python ruby java 2.0 wrapper
+
+LANGS = cee
+ifneq ($(ENABLE_LANG),)
+  LANGS += tcl wrapper 2.0
+  ifneq ($(F77),)
+      LANGS += fortran
+  endif
+  ifneq ($(OCTAVE),)
+      LANGS += octave
+  endif
+  ifneq ($(MEX),)
+      LANGS += matlab 
+  endif
+  ifneq ($(PERL),)
+      LANGS += perl
+  endif
+  ifneq ($(PYTHON),)
+      LANGS += python
+  endif
+  ifneq ($(RUBY),)
+    ifeq ($(HAVE_RUBY_H),yes)
+      LANGS += ruby
+    endif
+  endif
+  ifneq ($(JAVA_INC_DIR),)
+      LANGS += java
+  endif
+  ifneq ($(R),)
+      LANGS += R
+  endif
+endif
+
+all:	
+	for i in $(LANGS) ; do \
+	   $(MAKE) -C $$i all || exit 1 ; \
+	done
+
+install: 
+	for i in $(LANGS) ; do \
+	   $(MAKE) -C $$i install || exit 1 ; \
+	done
+
+clean:
+	for i in $(LANGS) ; do \
+	   $(MAKE) -C $$i clean || exit 1 ; \
+	done
+
+distclean: 
+	for i in $(LANGS) ; do \
+	   $(MAKE) -C $$i distclean || exit 1 ; \
+	done
+	$(RM) Makefile
Index: /tags/1.6.0/examples/app-fermi/R/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/R/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/R/Makefile.in	(revision 6168)
@@ -0,0 +1,33 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+VPATH           = @srcdir@
+
+destdir         = $(prefix)/examples/app-fermi/R
+FILES = \
+        $(srcdir)/tool.xml \
+        $(srcdir)/fermi.R
+
+all:
+
+install:
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/examples/app-fermi/R/fermi.R
===================================================================
--- /tags/1.6.0/examples/app-fermi/R/fermi.R	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/R/fermi.R	(revision 6168)
@@ -0,0 +1,73 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in R.
+#
+#  This simple example shows how to use Rappture within a simulator
+#  written in R.
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+require(Rappture)
+
+# save the command line arguments
+args <- commandArgs();
+
+# pick out the driver file which is the 7th element in the array
+# our array looks like this:
+# [1] "/usr/lib/R/bin/exec/R"
+# [2] "--slave"
+# [3] "--no-save"
+# [4] "--no-restore"
+# [5] "--silent"
+# [6] "--args"
+# [7] "driver.xml"
+
+# open the XML file containing the run parameters
+driver <- rp_lib(args[7])
+
+rp_utils_progress(10,"reading inputs")
+
+T <- rp_lib_get_string(driver,"input.number(temperature).current")
+T <- rp_units_convert_double(T,"K")
+Ef <- rp_lib_get_string(driver,"input.number(Ef).current")
+Ef <- rp_units_convert_double(Ef,"eV")
+
+rp_utils_progress(30,"performing calculations")
+
+kT <- 8.61734e-5 * T
+Emin <- Ef - 10*kT
+Emax <- Ef + 10*kT
+
+dE <- 0.005*(Emax-Emin)
+
+rp_utils_progress(60,"performing calculations")
+
+y <- seq(Emin,Emax,by=dE)
+x <- sapply(y,function(E) 1.0/(1.0 + exp((E - Ef)/kT)))
+
+rp_utils_progress(80,"storing results")
+
+# Label output graph with title, x-axis label,
+# y-axis lable, and y-axis units
+rp_lib_put_string(driver,"output.curve(f12).about.label","Fermi-Dirac Factor",FALSE)
+rp_lib_put_string(driver,"output.curve(f12).xaxis.label","Fermi-Dirac Factor",FALSE)
+rp_lib_put_string(driver,"output.curve(f12).yaxis.label","Energy",FALSE)
+rp_lib_put_string(driver,"output.curve(f12).yaxis.units","eV",FALSE)
+
+rp_utils_progress(90,"storing results")
+
+# coerce our arrays into a string of the form:
+# "x1 y1 \n x2 y2 \n x3 y3\n"...
+# store the string in the Rappture library object
+s <- paste(sprintf("%g %g\n",x,y),collapse="")
+rp_lib_put_string(driver,"output.curve(f12).component.xy",s,FALSE)
+
+
+rp_utils_progress(100,"preparing graphs")
+
+# save the updated XML describing the run...
+rp_lib_result(driver)
Index: /tags/1.6.0/examples/app-fermi/R/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/R/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/R/test/defaults.xml	(revision 6168)
@@ -0,0 +1,272 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>R --slave --no-save --no-restore --silent --args @driver &lt; @tool/fermi.R</command>
+        <version>
+            <rappture>
+                <language>R</language>
+                <revision>$LastChangedRevision: 2408 $</revision>
+                <modified>$LastChangedDate: 2011-08-24 22:01:44 -0400 (Wed, 24 Aug 2011) $</modified>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999955 -0.25852
+0.99995 -0.255935
+0.999945 -0.25335
+0.999939 -0.250765
+0.999932 -0.248179
+0.999925 -0.245594
+0.999917 -0.243009
+0.999909 -0.240424
+0.999899 -0.237839
+0.999888 -0.235253
+0.999877 -0.232668
+0.999864 -0.230083
+0.999849 -0.227498
+0.999833 -0.224913
+0.999816 -0.222327
+0.999797 -0.219742
+0.999775 -0.217157
+0.999752 -0.214572
+0.999725 -0.211987
+0.999697 -0.209401
+0.999665 -0.206816
+0.999629 -0.204231
+0.99959 -0.201646
+0.999547 -0.199061
+0.9995 -0.196475
+0.999447 -0.19389
+0.999389 -0.191305
+0.999325 -0.18872
+0.999254 -0.186135
+0.999176 -0.183549
+0.999089 -0.180964
+0.998993 -0.178379
+0.998887 -0.175794
+0.998771 -0.173209
+0.998641 -0.170623
+0.998499 -0.168038
+0.998341 -0.165453
+0.998167 -0.162868
+0.997975 -0.160283
+0.997762 -0.157697
+0.997527 -0.155112
+0.997268 -0.152527
+0.996982 -0.149942
+0.996665 -0.147357
+0.996316 -0.144771
+0.99593 -0.142186
+0.995504 -0.139601
+0.995033 -0.137016
+0.994514 -0.134431
+0.99394 -0.131845
+0.993307 -0.12926
+0.992608 -0.126675
+0.991837 -0.12409
+0.990987 -0.121504
+0.990048 -0.118919
+0.989013 -0.116334
+0.987872 -0.113749
+0.986613 -0.111164
+0.985226 -0.108578
+0.983698 -0.105993
+0.982014 -0.103408
+0.98016 -0.100823
+0.978119 -0.0982377
+0.975873 -0.0956525
+0.973403 -0.0930673
+0.970688 -0.0904821
+0.967705 -0.0878969
+0.964429 -0.0853117
+0.960834 -0.0827265
+0.956893 -0.0801413
+0.952574 -0.0775561
+0.947846 -0.0749709
+0.942676 -0.0723857
+0.937027 -0.0698005
+0.930862 -0.0672153
+0.924142 -0.06463
+0.916827 -0.0620448
+0.908877 -0.0594596
+0.90025 -0.0568744
+0.890903 -0.0542892
+0.880797 -0.051704
+0.869892 -0.0491188
+0.858149 -0.0465336
+0.845535 -0.0439484
+0.832018 -0.0413632
+0.817574 -0.038778
+0.802184 -0.0361928
+0.785835 -0.0336076
+0.768525 -0.0310224
+0.75026 -0.0284372
+0.731059 -0.025852
+0.71095 -0.0232668
+0.689974 -0.0206816
+0.668188 -0.0180964
+0.645656 -0.0155112
+0.622459 -0.012926
+0.598688 -0.0103408
+0.574443 -0.00775561
+0.549834 -0.0051704
+0.524979 -0.0025852
+0.5 0
+0.475021 0.0025852
+0.450166 0.0051704
+0.425557 0.00775561
+0.401312 0.0103408
+0.377541 0.012926
+0.354344 0.0155112
+0.331812 0.0180964
+0.310026 0.0206816
+0.28905 0.0232668
+0.268941 0.025852
+0.24974 0.0284372
+0.231475 0.0310224
+0.214165 0.0336076
+0.197816 0.0361928
+0.182426 0.038778
+0.167982 0.0413632
+0.154465 0.0439484
+0.141851 0.0465336
+0.130108 0.0491188
+0.119203 0.051704
+0.109097 0.0542892
+0.0997505 0.0568744
+0.091123 0.0594596
+0.0831727 0.0620448
+0.0758582 0.06463
+0.0691384 0.0672153
+0.0629734 0.0698005
+0.0573242 0.0723857
+0.0521536 0.0749709
+0.0474259 0.0775561
+0.0431073 0.0801413
+0.0391657 0.0827265
+0.0355712 0.0853117
+0.0322955 0.0878969
+0.0293122 0.0904821
+0.026597 0.0930673
+0.024127 0.0956525
+0.0218813 0.0982377
+0.0198403 0.100823
+0.0179862 0.103408
+0.0163025 0.105993
+0.014774 0.108578
+0.0133869 0.111164
+0.0121284 0.113749
+0.0109869 0.116334
+0.0099518 0.118919
+0.0090133 0.121504
+0.00816257 0.12409
+0.00739154 0.126675
+0.00669285 0.12926
+0.0060598 0.131845
+0.0054863 0.134431
+0.0049668 0.137016
+0.00449627 0.139601
+0.00407014 0.142186
+0.00368424 0.144771
+0.00333481 0.147357
+0.00301842 0.149942
+0.00273196 0.152527
+0.00247262 0.155112
+0.00223785 0.157697
+0.00202532 0.160283
+0.00183294 0.162868
+0.0016588 0.165453
+0.00150118 0.168038
+0.00135852 0.170623
+0.0012294 0.173209
+0.00111254 0.175794
+0.00100677 0.178379
+0.000911051 0.180964
+0.000824425 0.183549
+0.000746029 0.186135
+0.000675083 0.18872
+0.000610879 0.191305
+0.000552779 0.19389
+0.000500201 0.196475
+0.000452622 0.199061
+0.000409567 0.201646
+0.000370606 0.204231
+0.00033535 0.206816
+0.000303447 0.209401
+0.000274578 0.211987
+0.000248455 0.214572
+0.000224817 0.217157
+0.000203427 0.219742
+0.000184072 0.222327
+0.000166558 0.224913
+0.00015071 0.227498
+0.00013637 0.230083
+0.000123395 0.232668
+0.000111653 0.235253
+0.000101029 0.237839
+9.14159e-05 0.240424
+8.27172e-05 0.243009
+7.48462e-05 0.245594
+6.77241e-05 0.248179
+6.12797e-05 0.250765
+5.54485e-05 0.25335
+5.01722e-05 0.255935
+4.53979e-05 0.25852
+</xy>
+            </component>
+        </curve>
+        <time>Wed Dec 31 19:00:00 1969 EST</time>
+        <status>0</status>
+        <user>derrick</user>
+        <host></host>
+    </output>
+</run>
Index: /tags/1.6.0/examples/app-fermi/R/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/R/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/R/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>R --slave --no-save --no-restore --silent --args @driver &lt; @tool/fermi.R</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/cee/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/cee/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/cee/Makefile.in	(revision 6168)
@@ -0,0 +1,49 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+destdir		= $(prefix)/examples/app-fermi/cee
+
+INSTALL         = @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+CC              = @CC@
+CFLAGS		= @CFLAGS@
+CDEBUGFLAGS	= -g -Wall
+VPATH		= $(srcdir)
+
+INCLUDES    	= -I$(srcdir)/../../../src/core
+LIBS		= -L../../../src/core -lrappture \
+		  -L$(libdir) -lexpat -lz -lm
+
+CC_SWITCHES 	= $(CFLAGS) $(CDEBUGFLAGS) $(DEFINES) $(INCLUDES)
+
+FILES		= \
+		$(srcdir)/tool.xml \
+		$(srcdir)/original.c \
+		$(srcdir)/fermi.c
+
+all: fermi
+
+fermi: fermi.c
+	$(CC) $(CC_SWITCHES) $< -o $@ $(LIBS)
+
+install: fermi
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+	$(INSTALL) -m 0555 fermi $(destdir)
+
+clean:
+	$(RM) fermi run*.xml
+
+distclean: clean
+	$(RM) Makefile
Index: /tags/1.6.0/examples/app-fermi/cee/fermi.c
===================================================================
--- /tags/1.6.0/examples/app-fermi/cee/fermi.c	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/cee/fermi.c	(revision 6168)
@@ -0,0 +1,99 @@
+/*
+ * ----------------------------------------------------------------------
+ *  EXAMPLE: Fermi-Dirac function in Python.
+ *
+ *  This simple example shows how to use Rappture within a simulator
+ *  written in C.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "rappture.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <unistd.h>
+
+int main(int argc, char * argv[]) {
+
+    RpLibrary* lib    = NULL;
+
+    const char* data  = NULL;
+    char line[100];
+
+    double T          = 0.0;
+    double Ef         = 0.0;
+    double E          = 0.0;
+    double dE         = 0.0;
+    double kT         = 0.0;
+    double Emin       = 0.0;
+    double Emax       = 0.0;
+    double f          = 0.0;
+
+    int err           = 0;
+
+    /* create a rappture library from the file filePath */
+    lib = rpLibrary(argv[1]);
+
+    if (lib == NULL) {
+        /* cannot open file or out of memory */
+        printf("FAILED creating Rappture Library\n");
+        return(1);
+    }
+
+
+    rpGetString(lib,"input.number(temperature).current",&data);
+    T = rpConvertDbl(data, "K", &err);
+    if (err) {
+        printf ("Error while retrieving input.number(temperature).current\n");
+        return(1);
+    }
+
+
+    rpGetString(lib,"input.number(Ef).current",&data);
+    Ef = rpConvertDbl(data, "eV", &err);
+    if (err) {
+        printf ("Error while retrieving input.number(Ef).current\n");
+        return(1);
+    }
+
+    kT = 8.61734e-5 * T;
+    Emin = Ef - 10*kT;
+    Emax = Ef + 10*kT;
+
+    E = Emin;
+    dE = 0.005*(Emax-Emin);
+
+    rpPutString (   lib,
+                    "output.curve(f12).about.label",
+                    "Fermi-Dirac Factor",
+                    RPLIB_OVERWRITE );
+    rpPutString (   lib,
+                    "output.curve(f12).xaxis.label",
+                    "Fermi-Dirac Factor",
+                    RPLIB_OVERWRITE );
+    rpPutString (   lib,
+                    "output.curve(f12).yaxis.label",
+                    "Energy",
+                    RPLIB_OVERWRITE );
+    rpPutString (   lib,
+                    "output.curve(f12).yaxis.units",
+                    "eV",
+                    RPLIB_OVERWRITE );
+
+    while (E < Emax) {
+        f = 1.0/(1.0 + exp((E - Ef)/kT));
+        sprintf(line,"%f %f\n",f, E);
+        rpUtilsProgress((int)((E-Emin)/(Emax-Emin)*100),"Iterating");
+        rpPutString(lib,"output.curve(f12).component.xy", line, RPLIB_APPEND);
+        E = E + dE;
+    }
+
+    rpResult(lib);
+    return 0;
+}
Index: /tags/1.6.0/examples/app-fermi/cee/original.c
===================================================================
--- /tags/1.6.0/examples/app-fermi/cee/original.c	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/cee/original.c	(revision 6168)
@@ -0,0 +1,35 @@
+/* ----------------------------------------------------------------------
+ *  EXAMPLE: Fermi-Dirac function in C.
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <stdio.h>
+#include <math.h>
+
+int main(int argc, char *argv[]) {
+    double T, Ef, E, dE, kT, Emin, Emax, f;
+
+    printf("Enter the Fermi energy in eV:\n");
+    scanf("%lg", &Ef);
+    printf("Enter the Temperature in K:\n");
+    scanf("%lg", &T);
+
+    kT = 8.61734e-5 * T;
+    Emin = Ef - 10*kT;
+    Emax = Ef + 10*kT;
+
+    E = Emin;
+    dE = 0.005*(Emax-Emin);
+
+    while (E < Emax) {
+        f = 1.0/(1.0 + exp((E - Ef)/kT));
+        printf("%f %f\n",f, E);
+        E = E + dE;
+    }
+    return 0;
+}
Index: /tags/1.6.0/examples/app-fermi/cee/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/cee/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/cee/test/defaults.xml	(revision 6168)
@@ -0,0 +1,272 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/fermi @driver</command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <language>c</language>
+                <revision>$LastChangedRevision: 1041 $</revision>
+                <modified>$LastChangedDate: 2008-06-10 20:51:55 -0400 (Tue, 10 Jun 2008) $</modified>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999955 -0.258520
+0.999950 -0.255935
+0.999945 -0.253350
+0.999939 -0.250765
+0.999932 -0.248179
+0.999925 -0.245594
+0.999917 -0.243009
+0.999909 -0.240424
+0.999899 -0.237839
+0.999888 -0.235253
+0.999877 -0.232668
+0.999864 -0.230083
+0.999849 -0.227498
+0.999833 -0.224913
+0.999816 -0.222327
+0.999797 -0.219742
+0.999775 -0.217157
+0.999752 -0.214572
+0.999725 -0.211987
+0.999697 -0.209401
+0.999665 -0.206816
+0.999629 -0.204231
+0.999590 -0.201646
+0.999547 -0.199061
+0.999500 -0.196475
+0.999447 -0.193890
+0.999389 -0.191305
+0.999325 -0.188720
+0.999254 -0.186135
+0.999176 -0.183549
+0.999089 -0.180964
+0.998993 -0.178379
+0.998887 -0.175794
+0.998771 -0.173209
+0.998641 -0.170623
+0.998499 -0.168038
+0.998341 -0.165453
+0.998167 -0.162868
+0.997975 -0.160283
+0.997762 -0.157697
+0.997527 -0.155112
+0.997268 -0.152527
+0.996982 -0.149942
+0.996665 -0.147357
+0.996316 -0.144771
+0.995930 -0.142186
+0.995504 -0.139601
+0.995033 -0.137016
+0.994514 -0.134431
+0.993940 -0.131845
+0.993307 -0.129260
+0.992608 -0.126675
+0.991837 -0.124090
+0.990987 -0.121504
+0.990048 -0.118919
+0.989013 -0.116334
+0.987872 -0.113749
+0.986613 -0.111164
+0.985226 -0.108578
+0.983698 -0.105993
+0.982014 -0.103408
+0.980160 -0.100823
+0.978119 -0.098238
+0.975873 -0.095652
+0.973403 -0.093067
+0.970688 -0.090482
+0.967705 -0.087897
+0.964429 -0.085312
+0.960834 -0.082726
+0.956893 -0.080141
+0.952574 -0.077556
+0.947846 -0.074971
+0.942676 -0.072386
+0.937027 -0.069800
+0.930862 -0.067215
+0.924142 -0.064630
+0.916827 -0.062045
+0.908877 -0.059460
+0.900250 -0.056874
+0.890903 -0.054289
+0.880797 -0.051704
+0.869892 -0.049119
+0.858149 -0.046534
+0.845535 -0.043948
+0.832018 -0.041363
+0.817574 -0.038778
+0.802184 -0.036193
+0.785835 -0.033608
+0.768525 -0.031022
+0.750260 -0.028437
+0.731059 -0.025852
+0.710950 -0.023267
+0.689974 -0.020682
+0.668188 -0.018096
+0.645656 -0.015511
+0.622459 -0.012926
+0.598688 -0.010341
+0.574443 -0.007756
+0.549834 -0.005170
+0.524979 -0.002585
+0.500000 0.000000
+0.475021 0.002585
+0.450166 0.005170
+0.425557 0.007756
+0.401312 0.010341
+0.377541 0.012926
+0.354344 0.015511
+0.331812 0.018096
+0.310026 0.020682
+0.289050 0.023267
+0.268941 0.025852
+0.249740 0.028437
+0.231475 0.031022
+0.214165 0.033608
+0.197816 0.036193
+0.182426 0.038778
+0.167982 0.041363
+0.154465 0.043948
+0.141851 0.046534
+0.130108 0.049119
+0.119203 0.051704
+0.109097 0.054289
+0.099750 0.056874
+0.091123 0.059460
+0.083173 0.062045
+0.075858 0.064630
+0.069138 0.067215
+0.062973 0.069800
+0.057324 0.072386
+0.052154 0.074971
+0.047426 0.077556
+0.043107 0.080141
+0.039166 0.082726
+0.035571 0.085312
+0.032295 0.087897
+0.029312 0.090482
+0.026597 0.093067
+0.024127 0.095652
+0.021881 0.098238
+0.019840 0.100823
+0.017986 0.103408
+0.016302 0.105993
+0.014774 0.108578
+0.013387 0.111164
+0.012128 0.113749
+0.010987 0.116334
+0.009952 0.118919
+0.009013 0.121504
+0.008163 0.124090
+0.007392 0.126675
+0.006693 0.129260
+0.006060 0.131845
+0.005486 0.134431
+0.004967 0.137016
+0.004496 0.139601
+0.004070 0.142186
+0.003684 0.144771
+0.003335 0.147357
+0.003018 0.149942
+0.002732 0.152527
+0.002473 0.155112
+0.002238 0.157697
+0.002025 0.160283
+0.001833 0.162868
+0.001659 0.165453
+0.001501 0.168038
+0.001359 0.170623
+0.001229 0.173209
+0.001113 0.175794
+0.001007 0.178379
+0.000911 0.180964
+0.000824 0.183549
+0.000746 0.186135
+0.000675 0.188720
+0.000611 0.191305
+0.000553 0.193890
+0.000500 0.196475
+0.000453 0.199061
+0.000410 0.201646
+0.000371 0.204231
+0.000335 0.206816
+0.000303 0.209401
+0.000275 0.211987
+0.000248 0.214572
+0.000225 0.217157
+0.000203 0.219742
+0.000184 0.222327
+0.000167 0.224913
+0.000151 0.227498
+0.000136 0.230083
+0.000123 0.232668
+0.000112 0.235253
+0.000101 0.237839
+0.000091 0.240424
+0.000083 0.243009
+0.000075 0.245594
+0.000068 0.248179
+0.000061 0.250765
+0.000055 0.253350
+0.000050 0.255935
+</xy>
+            </component>
+        </curve>
+        <time>Wed Dec 10 02:46:19 2008 EST</time>
+        <status>0</status>
+        <user>dkearney</user>
+        <host></host>
+    </output>
+</run>
Index: /tags/1.6.0/examples/app-fermi/cee/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/cee/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/cee/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/fermi @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/fortran/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/fortran/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/fortran/Makefile.in	(revision 6168)
@@ -0,0 +1,50 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+destdir		= $(prefix)/examples/app-fermi/fortran
+
+INSTALL         = @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+FC              = @F77@
+FCFLAGS		= @CFLAGS@ 
+FCDEBUGFLAGS	= -Wall -g
+VPATH		= $(srcdir)
+
+INCLUDES    	= -I$(srcdir)/../../../src/core
+LIBS		= -L../../../src/core -lrappture \
+		  -L$(libdir) -lexpat -lz -lm
+
+FC_SWITCHES 	= $(FCFLAGS) $(FCDEBUGFLAGS) $(DEFINES) $(INCLUDES)
+
+FILES		= \
+		Makefile \
+		$(srcdir)/fermi.f \
+		$(srcdir)/tool.xml 
+
+all: fermi
+
+fermi: $(srcdir)/fermi.f
+	$(FC) $(FC_SWITCHES) $< -o $@ $(LIBS)
+
+install: fermi
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+	$(INSTALL) -m 0555 fermi $(destdir)
+
+
+clean:
+	$(RM) fermi run*.xml
+
+distclean: clean
+	$(RM) Makefile
Index: /tags/1.6.0/examples/app-fermi/fortran/fermi.f
===================================================================
--- /tags/1.6.0/examples/app-fermi/fortran/fermi.f	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/fortran/fermi.f	(revision 6168)
@@ -0,0 +1,83 @@
+c ----------------------------------------------------------------------
+c  EXAMPLE: Fermi-Dirac function in Fortran.
+c
+c  This simple example shows how to use Rappture within a simulator
+c  written in Fortran.
+c
+c ======================================================================
+c  AUTHOR:  Michael McLennan, Purdue University
+c  AUTHOR:  Derrick Kearney, Purdue University
+c  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+c
+c  See the file "license.terms" for information on usage and
+c  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+c ======================================================================
+
+      program fermi
+        IMPLICIT NONE
+
+        integer rp_lib, rp_units_convert_dbl
+
+        integer driver, ok, progress
+        double precision T, Ef, kT, Emin, Emax, dE, f, E
+        CHARACTER*100 inFile, strVal
+        character*40 xy
+
+        call getarg(1,inFile)
+        driver = rp_lib(inFile)
+        if (driver .eq. 0) then
+            write(0,*) "Error while opening ",inFile
+            stop
+        endif
+
+        call rp_lib_get(driver,
+     +        "input.number(temperature).current", strVal)
+        ok = rp_units_convert_dbl(strVal,"K",T)
+        if (ok .ne. 0) then
+            write(strVal,*) "Error while converting temperature"
+            write(0,*) strVal
+            call rp_lib_put_str (driver,"output.log",strVal,0)
+            call rp_result(driver)
+            stop
+        endif
+
+        call rp_lib_get(driver,
+     +        "input.number(Ef).current", strVal)
+        ok = rp_units_convert_dbl(strVal,"eV",Ef)
+        if (ok .ne. 0) then
+            write(strVal,*) "Error while converting Ef"
+            write(0,*) strVal
+            call rp_lib_put_str (driver,"output.log",strVal,0)
+            call rp_result(driver)
+            stop
+        endif
+
+        kT = 8.61734e-5 * T
+        Emin = Ef - 10*kT
+        Emax = Ef + 10*kT
+
+        dE = 0.005*(Emax - Emin)
+
+c       Label out graph with a title, x-axis label, 
+c       y-axis label and y-axis units
+
+        call rp_lib_put_str (driver,"output.curve(f12).about.label",
+     +          "Fermi-Dirac Factor",0)
+        call rp_lib_put_str (driver,"output.curve(f12).xaxis.label",
+     +          "Fermi-Dirac Factor",0)
+        call rp_lib_put_str (driver,"output.curve(f12).yaxis.label",
+     +          "Energy",0)
+        call rp_lib_put_str (driver,"output.curve(f12).yaxis.units",
+     +          "eV",0)
+
+        do 10 E=Emin,Emax,dE
+          f = 1.0/(1.0+exp((E-Ef)/kT))
+          progress = nint((E-Emin)/(Emax-Emin)*100)
+          call rp_utils_progress (progress,"Iterating")
+          write(xy,'(E20.12,F13.9,A)') f, E, char(10)
+          call rp_lib_put_str (driver,
+     +          "output.curve(f12).component.xy", xy, 1)
+ 10     continue
+
+        call rp_result(driver)
+      end program fermi
Index: /tags/1.6.0/examples/app-fermi/fortran/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/fortran/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/fortran/test/defaults.xml	(revision 6168)
@@ -0,0 +1,273 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/fermi @driver</command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <language>fortran</language>
+                <revision>$LastChangedRevision: 1041 $</revision>
+                <modified>$LastChangedDate: 2008-06-10 20:51:55 -0400 (Tue, 10 Jun 2008) $</modified>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>  0.999954602131E+00 -0.258520202
+  0.999949827835E+00 -0.255935000
+  0.999944551476E+00 -0.253349798
+  0.999938720261E+00 -0.250764596
+  0.999932275851E+00 -0.248179394
+  0.999925153773E+00 -0.245594192
+  0.999917282778E+00 -0.243008990
+  0.999908584128E+00 -0.240423788
+  0.999898970808E+00 -0.237838586
+  0.999888346662E+00 -0.235253384
+  0.999876605427E+00 -0.232668182
+  0.999863629676E+00 -0.230082980
+  0.999849289646E+00 -0.227497778
+  0.999833441940E+00 -0.224912576
+  0.999815928101E+00 -0.222327374
+  0.999796573029E+00 -0.219742172
+  0.999775183238E+00 -0.217156971
+  0.999751544928E+00 -0.214571769
+  0.999725421855E+00 -0.211986567
+  0.999696552983E+00 -0.209401365
+  0.999664649885E+00 -0.206816163
+  0.999629393877E+00 -0.204230961
+  0.999590432855E+00 -0.201645759
+  0.999547377800E+00 -0.199060557
+  0.999499798920E+00 -0.196475355
+  0.999447221394E+00 -0.193890153
+  0.999389120676E+00 -0.191304951
+  0.999324917310E+00 -0.188719749
+  0.999253971213E+00 -0.186134547
+  0.999175575367E+00 -0.183549345
+  0.999088948867E+00 -0.180964143
+  0.998993229250E+00 -0.178378941
+  0.998887464047E+00 -0.175793739
+  0.998770601469E+00 -0.173208537
+  0.998641480153E+00 -0.170623335
+  0.998498817861E+00 -0.168038133
+  0.998341199053E+00 -0.165452931
+  0.998167061209E+00 -0.162867729
+  0.997974679783E+00 -0.160282527
+  0.997762151673E+00 -0.157697325
+  0.997527377064E+00 -0.155112123
+  0.997268039487E+00 -0.152526921
+  0.996981583958E+00 -0.149941720
+  0.996665193012E+00 -0.147356518
+  0.996315760462E+00 -0.144771316
+  0.995929862692E+00 -0.142186114
+  0.995503727299E+00 -0.139600912
+  0.995033198869E+00 -0.137015710
+  0.994513701686E+00 -0.134430508
+  0.993940199168E+00 -0.131845306
+  0.993307149819E+00 -0.129260104
+  0.992608459492E+00 -0.126674902
+  0.991837429788E+00 -0.124089700
+  0.990986702405E+00 -0.121504498
+  0.990048199322E+00 -0.118919296
+  0.989013058705E+00 -0.116334094
+  0.987871566515E+00 -0.113748892
+  0.986613083855E+00 -0.111163690
+  0.985225970194E+00 -0.108578488
+  0.983697502743E+00 -0.105993286
+  0.982013792407E+00 -0.103408084
+  0.980159696917E+00 -0.100822882
+  0.978118732030E+00 -0.098237680
+  0.975872981898E+00 -0.095652478
+  0.973403010127E+00 -0.093067276
+  0.970687773382E+00 -0.090482074
+  0.967704539912E+00 -0.087896872
+  0.964428815865E+00 -0.085311670
+  0.960834282923E+00 -0.082726469
+  0.956892751421E+00 -0.080141267
+  0.952574133891E+00 -0.077556065
+  0.947846444767E+00 -0.074970863
+  0.942675832798E+00 -0.072385661
+  0.937026653571E+00 -0.069800459
+  0.930861590302E+00 -0.067215257
+  0.924141831731E+00 -0.064630055
+  0.916827316460E+00 -0.062044853
+  0.908877053239E+00 -0.059459651
+  0.900249526536E+00 -0.056874449
+  0.890903195967E+00 -0.054289247
+  0.880797096752E+00 -0.051704045
+  0.869891546128E+00 -0.049118843
+  0.858148957411E+00 -0.046533641
+  0.845534759146E+00 -0.043948439
+  0.832018411375E+00 -0.041363237
+  0.817574504530E+00 -0.038778035
+  0.802183919062E+00 -0.036192833
+  0.785835015770E+00 -0.033607631
+  0.768524818490E+00 -0.031022429
+  0.750260142869E+00 -0.028437227
+  0.731058618182E+00 -0.025852025
+  0.710949544424E+00 -0.023266823
+  0.689974525115E+00 -0.020681621
+  0.668187818256E+00 -0.018096420
+  0.645656354295E+00 -0.015511218
+  0.622459381103E+00 -0.012926016
+  0.598687711667E+00 -0.010340814
+  0.574442569813E+00 -0.007755612
+  0.549834051530E+00 -0.005170410
+  0.524979242661E+00 -0.002585208
+  0.500000055879E+00 -0.000000006
+  0.475020868818E+00  0.002585196
+  0.450166059118E+00  0.005170398
+  0.425557539468E+00  0.007755600
+  0.401312395738E+00  0.010340802
+  0.377540723952E+00  0.012926004
+  0.354343747980E+00  0.015511206
+  0.331812280857E+00  0.018096408
+  0.310025570510E+00  0.020681610
+  0.289050547442E+00  0.023266812
+  0.268941469711E+00  0.025852014
+  0.249739940892E+00  0.028437216
+  0.231475261035E+00  0.031022418
+  0.214165059465E+00  0.033607620
+  0.197816151876E+00  0.036192822
+  0.182425562144E+00  0.038778024
+  0.167981651104E+00  0.041363226
+  0.154465299239E+00  0.043948428
+  0.141851097007E+00  0.046533630
+  0.130108504467E+00  0.049118831
+  0.119202950184E+00  0.051704033
+  0.109096847483E+00  0.054289235
+  0.997505136075E-01  0.056874437
+  0.911229837841E-01  0.059459639
+  0.831727176289E-01  0.062044841
+  0.758581996080E-01  0.064630043
+  0.691384384687E-01  0.067215245
+  0.629733728073E-01  0.069800447
+  0.573241913593E-01  0.072385649
+  0.521535773320E-01  0.074970851
+  0.474258863047E-01  0.077556053
+  0.431072670191E-01  0.080141255
+  0.391657338998E-01  0.082726457
+  0.355711994710E-01  0.085311659
+  0.322954740590E-01  0.087896861
+  0.293122393370E-01  0.090482063
+  0.265970014469E-01  0.093067265
+  0.241270286276E-01  0.095652467
+  0.218812775378E-01  0.098237669
+  0.198403117759E-01  0.100822871
+  0.179862154892E-01  0.103408073
+  0.163025044256E-01  0.105993275
+  0.147740363132E-01  0.108578477
+  0.133869220492E-01  0.111163679
+  0.121284388406E-01  0.113748881
+  0.109869461523E-01  0.116334082
+  0.995180508221E-02  0.118919284
+  0.901330158766E-02  0.121504486
+  0.816257383135E-02  0.124089688
+  0.739154378777E-02  0.126674890
+  0.669285315322E-02  0.129260092
+  0.605980352444E-02  0.131845294
+  0.548630075318E-02  0.134430496
+  0.496680334018E-02  0.137015698
+  0.449627470168E-02  0.139600900
+  0.407013912026E-02  0.142186102
+  0.368424117935E-02  0.144771304
+  0.333480847377E-02  0.147356506
+  0.301841738747E-02  0.149941708
+  0.273196173128E-02  0.152526910
+  0.247262403873E-02  0.155112112
+  0.223784932479E-02  0.157697314
+  0.202532112093E-02  0.160282516
+  0.183293960907E-02  0.162867718
+  0.165880168723E-02  0.165452920
+  0.150118280955E-02  0.168038122
+  0.135852045381E-02  0.170623324
+  0.122939907962E-02  0.173208526
+  0.111253645016E-02  0.175793728
+  0.100677120000E-02  0.178378930
+  0.911051540266E-03  0.180964132
+  0.824425001246E-03  0.183549333
+  0.746029120434E-03  0.186134535
+  0.675082991501E-03  0.188719737
+  0.610879596873E-03  0.191304939
+  0.552778853027E-03  0.193890141
+  0.500201303756E-03  0.196475343
+  0.452622402229E-03  0.199060545
+  0.409567327870E-03  0.201645747
+  0.370606288850E-03  0.204230949
+  0.335350265343E-03  0.206816151
+  0.303447152756E-03  0.209401353
+  0.274578267770E-03  0.211986555
+  0.248455183441E-03  0.214571757
+  0.224816862673E-03  0.217156959
+  0.203427062157E-03  0.219742161
+  0.184071981476E-03  0.222327363
+  0.166558134383E-03  0.224912565
+  0.150710421381E-03  0.227497767
+  0.136370384681E-03  0.230082969
+  0.123394628383E-03  0.232668171
+  0.111653388291E-03  0.235253373
+  0.101029237260E-03  0.237838575
+  0.914159132843E-04  0.240423777
+  0.827172587169E-04  0.243008979
+  0.748462601306E-04  0.245594181
+  0.677241792873E-04  0.248179382
+  0.612797665982E-04  0.250764584
+  0.554485492610E-04  0.253349786
+  0.501721869992E-04  0.255934988
+  0.453978889959E-04  0.258520190
+</xy>
+            </component>
+        </curve>
+        <time>Wed Dec 10 02:48:11 2008 EST</time>
+        <status>0</status>
+        <user>dkearney</user>
+        <host></host>
+    </output>
+</run>
Index: /tags/1.6.0/examples/app-fermi/fortran/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/fortran/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/fortran/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/fermi @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/java/Fermi.java
===================================================================
--- /tags/1.6.0/examples/app-fermi/java/Fermi.java	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/java/Fermi.java	(revision 6168)
@@ -0,0 +1,58 @@
+/*
+ * EXAMPLE: Fermi-Dirac function in Java.
+ *
+ * This simple example shows how to use Rappture within a simulator
+ * written in Java.
+ * ======================================================================
+ * AUTHOR:  Ben Rafferty, Purdue University
+ * Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ * See the file "license.terms" for information on usage and
+ * redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+class Fermi{
+  
+  public static void main(String args[]){
+
+    // create a rappture library from the file path
+    rappture.Library driver = new rappture.Library(args[0]);
+
+    // read the input values and convert to correct units
+    String Tstr = driver.get("input.number(temperature).current");
+    double T = Double.valueOf(rappture.Units.convertString(Tstr, "K", false));
+    String Efstr = driver.get("input.number(Ef).current");
+    double Ef = Double.valueOf(rappture.Units.convertString(Efstr, "eV", false));
+
+    // Set the energy range and step size
+    double kT = 8.61734E-5 * T;
+    double Emin = Ef - 10*kT;
+    double Emax = Ef + 10*kT;
+    double E = Emin;
+    double dE = 0.005*(Emax-Emin);
+
+    // Add relevant information to the output curve
+    driver.put("output.curve(f12).about.label", "Fermi-Dirac Factor");
+    driver.put("output.curve(f12).xaxis.label", "Fermi-Dirac Factor");
+    driver.put("output.curve(f12).yaxis.label", "Energy");
+    driver.put("output.curve(f12).yaxis.units", "eV");
+
+    // Calculate the Fermi-Dirac function over the energy range
+    // Add the results to the output curve
+    double f;
+    String line;
+    while (E < Emax){
+      f = 1.0/(1.0 + Math.exp((E - Ef)/kT));
+      line = String.format("%f %f\n", f, E);
+      rappture.Utils.progress((int)((E-Emin)/(Emax-Emin)*100), "Iterating");
+      driver.put("output.curve(f12).component.xy", line, true);
+      E = E + dE;
+    } 
+
+    // Finalize the results and inform rappture that the simulation has ended
+    driver.result();
+  }
+
+}
+
Index: /tags/1.6.0/examples/app-fermi/java/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/java/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/java/Makefile.in	(revision 6168)
@@ -0,0 +1,42 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= @srcdir@
+
+JAVAC		= @JAVAC@ 
+CLASSPATH	= ../../../lang/java:$(libdir)/java
+
+destdir		= $(prefix)/examples/app-fermi/java
+
+FILES 		= \
+		$(srcdir)/tool.xml \
+		$(srcdir)/Fermi.java \
+		Fermi.class
+
+all: Fermi.class
+
+Fermi.class: Fermi.java	
+	$(JAVAC) -cp $(CLASSPATH) -d . $(srcdir)/Fermi.java
+
+install: all 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) Fermi.class
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/examples/app-fermi/java/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/java/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/java/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>java Fermi @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/matlab/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/matlab/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/matlab/Makefile.in	(revision 6168)
@@ -0,0 +1,36 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+
+INSTALL         = @INSTALL@
+INSTALL_PROGRAM = ${INSTALL} -m 755
+INSTALL_DATA    = ${INSTALL} -m 644
+INSTALL_SCRIPT  = ${INSTALL} -m 644
+
+all: build_uncompiled
+install: install_uncompiled
+
+build_compiled:
+	$(MAKE) -C compiled all
+build_uncompiled:
+	$(MAKE) -C uncompiled all
+
+install_compiled:
+	$(MAKE) -C uncompiled install
+install_uncompiled:
+	$(MAKE) -C uncompiled install
+
+clean:
+	$(MAKE) -C compiled clean
+	$(MAKE) -C uncompiled clean
+
+distclean:
+	$(MAKE) -C compiled distclean
+	$(MAKE) -C uncompiled distclean
+	$(RM) Makefile
Index: /tags/1.6.0/examples/app-fermi/matlab/compiled/Makefile.example
===================================================================
--- /tags/1.6.0/examples/app-fermi/matlab/compiled/Makefile.example	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/matlab/compiled/Makefile.example	(revision 6168)
@@ -0,0 +1,31 @@
+APPNAME = fermi
+
+${APPNAME}: fermi_main.m fermi.m
+	mcc -m -R -nojvm -I /apps/rappture/lib/matlab -o $@ $^
+
+all: ${APPNAME}
+
+install: ${APPNAME}
+	sed s/YOURAPPNAME/$^/ < run_app.patch | patch run_$^.sh
+	chmod +x run_$^.sh
+	mv $^ $^.ctf run_$^.sh ../bin
+	mv readme.txt ../bin/$^.readme
+	simsim --tool tool.xml --values default --nosim --driver driver.$^
+	LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/apps/rappture/lib `pwd`/../bin/run_$^.sh /apps/matlab/mcr `pwd`/driver.$^
+	rm -f run*.xml driver.$^
+	@echo "Install Successful"
+
+clean:
+	rm -rf ${APPNAME} \
+		${APPNAME}_main.c \
+		${APPNAME}.ctf \
+		${APPNAME}.prj \
+		${APPNAME}_mcc_component_data.c \
+		run_${APPNAME}.sh \
+		mccExcludedFiles.log \
+		${APPNAME}.readme \
+		readme.txt \
+		${APPNAME}_mcr
+
+distclean: clean
+	rm -rf ../bin/*
Index: /tags/1.6.0/examples/app-fermi/matlab/compiled/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/matlab/compiled/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/matlab/compiled/Makefile.in	(revision 6168)
@@ -0,0 +1,60 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+destdir         = $(prefix)/examples/app-fermi/matlab
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+MCC             = @MCC@
+
+MCC_FLAGS       = -m -R -nojvm
+INCLUDES        = -I ../../../lang/matlab
+MCC_SWITCHES    = $(MCC_FLAGS) $(INCLUDES)
+VPATH           = $(srcdir)
+
+APPNAME = fermi
+
+FILES   = \
+		$(srcdir)/tool.xml \
+		$(srcdir)/Makefile.example \
+		${APPNAME}.ctf
+
+${APPNAME}: fermi_main.m fermi.m
+	$(MCC) $(MCC_SWITCHES) -o $@ $^
+
+all: ${APPNAME}
+
+install: ${APPNAME}
+	sed s/YOURAPPNAME/$^/ < $(srcdir)/run_app.patch | patch run_$^.sh
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+	$(INSTALL) -m 0444 readme.txt $(destdir)/$^.readme
+	$(INSTALL) -m 0555 run_$^.sh $^ $(destdir)
+	$(bindir)/simsim --tool $(srcdir)/tool.xml --values default --nosim --driver driver.$^
+	LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$(libdir) $(destdir)/run_$^.sh /apps/matlab/mcr driver.$^
+	rm -f run*.xml driver.$^
+	@echo "Install Successful"
+
+clean:
+	rm -rf ${APPNAME} \
+		${APPNAME}_main.c \
+		${APPNAME}.ctf \
+		${APPNAME}.prj \
+		${APPNAME}_mcc_component_data.c \
+		run_${APPNAME}.sh \
+		mccExcludedFiles.log \
+		readme.txt \
+		${APPNAME}_mcr
+
+distclean: clean
+	$(RM) Makefile
Index: /tags/1.6.0/examples/app-fermi/matlab/compiled/fermi.m
===================================================================
--- /tags/1.6.0/examples/app-fermi/matlab/compiled/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/matlab/compiled/fermi.m	(revision 6168)
@@ -0,0 +1,65 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Octave.
+%
+%  This script represents a newly written application with rappture 
+%  bindings and interface.
+%
+% ======================================================================
+%  AUTHOR:  Michael McLennan, Purdue University
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+% get out input file from the command line
+% invoke this script with the following command:
+% matlab -nodisplay -r infile=\'driver1234.xml\',fermi
+% the above command sets variable infile to the name 'driver1234.xml'
+
+% infile = 'driver31619.xml'
+
+% open our xml input file.
+lib = rpLib(infile);
+
+% retrieve user specified data out of the input file
+% convert values to correct units.
+Ef = rpLibGetString(lib,'input.number(Ef).current');
+[Ef,err] = rpUnitsConvertDbl(Ef,'eV');
+T = rpLibGetString(lib,'input.number(temperature).current');
+[T,err] = rpUnitsConvertDbl(T,'K');
+
+% do fermi calculations (science)...
+kT = 8.61734e-5 * T;
+Emin = Ef - 10*kT;
+Emax = Ef + 10*kT;
+
+E = linspace(Emin,Emax,200);
+f = 1.0 ./ (1.0 + exp((E - Ef)/kT));
+
+% prepare out output section
+% label graphs
+rpLibPutString(lib,'output.curve(f12).about.label','Fermi-Dirac Factor',0);
+rpLibPutString(lib,'output.curve(f12).xaxis.label','Fermi-Dirac Factor',0);
+rpLibPutString(lib,'output.curve(f12).yaxis.label','Energy',0);
+rpLibPutString(lib,'output.curve(f12).yaxis.units','eV',0);
+
+% this is a slow and inefficient method of putting
+% large amounts of data back in to the rappture library object
+%for j=1:200
+%  rpUtilsProgress((j/200*100),'Iterating');
+%  putStr = sprintf('%12g  %12g\n', f(j), E(j));
+%  % put the data into the xml file
+%  rpLibPutString(lib,'output.curve(f12).component.xy',putStr,1);
+%end
+
+% a better way is to take advantage of matlab's vector operations.
+outData = [f;E];
+putStr = sprintf('%12g  %12g\n', outData);
+rpLibPutString(lib,'output.curve(f12).component.xy',putStr,0);
+
+% signal the end of processing
+rpLibResult(lib);
+
+quit;
Index: /tags/1.6.0/examples/app-fermi/matlab/compiled/fermi_main.m
===================================================================
--- /tags/1.6.0/examples/app-fermi/matlab/compiled/fermi_main.m	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/matlab/compiled/fermi_main.m	(revision 6168)
@@ -0,0 +1,17 @@
+function fermi_main(infile)
+
+global lib;
+
+try
+    lib = rpLib(infile);
+    fermi;
+catch
+    lastmsg = lasterr
+    fid = fopen('errorDetected.txt','wt');
+    fprintf(fid,'1\n');
+    fprintf(fid,'%s\n',lastmsg);
+    fclose(fid);
+    append = 1;
+    rpLibPutString(lib,'output.log',lastmsg,append);
+    rpLibResult(lib,1);
+end
Index: /tags/1.6.0/examples/app-fermi/matlab/compiled/run_app.patch
===================================================================
--- /tags/1.6.0/examples/app-fermi/matlab/compiled/run_app.patch	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/matlab/compiled/run_app.patch	(revision 6168)
@@ -0,0 +1,39 @@
+7c7
+< echo "------------------------------------------"
+---
+> #echo "------------------------------------------"
+12c12
+<   echo Setting up environment variables
+---
+> #  echo Setting up environment variables
+14c14
+<   echo ---
+---
+> #  echo ---
+17c17
+< 	LD_LIBRARY_PATH=.:/usr/lib/lwp:${MCRROOT}/runtime/glnx86 ; 
+---
+> 	LD_LIBRARY_PATH=.:${LD_LIBRARY_PATH}:/usr/lib/lwp:${MCRROOT}/runtime/glnx86 ; 
+19c19
+<   	LD_LIBRARY_PATH=.:${MCRROOT}/runtime/glnx86 ;
+---
+>   	LD_LIBRARY_PATH=.:${LD_LIBRARY_PATH}:${MCRROOT}/runtime/glnx86 ;
+27c27
+< 	echo Found MCR Java JRE version: $MCRJREVER ; 
+---
+> #	echo Found MCR Java JRE version: $MCRJREVER ; 
+37c37
+<   echo LD_LIBRARY_PATH is ${LD_LIBRARY_PATH};
+---
+> #  echo LD_LIBRARY_PATH is ${LD_LIBRARY_PATH};
+39c39,46
+< ./YOURAPPNAME $*
+---
+> #./YOURAPPNAME $*
+> 
+>   export MCR_INHIBIT_CTF_LOCK=1;
+>   appPath=`dirname $0`
+>   if [ "$appPath" = "" ]; then
+>     appPath="."
+>   fi
+>   $appPath/YOURAPPNAME $*
Index: /tags/1.6.0/examples/app-fermi/matlab/compiled/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/matlab/compiled/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/matlab/compiled/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/run_fermi.sh /apps/matlab/mcr @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/matlab/uncompiled/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/matlab/uncompiled/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/matlab/uncompiled/Makefile.in	(revision 6168)
@@ -0,0 +1,33 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+destdir         = $(prefix)/examples/app-fermi/matlab/uncompiled
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+FILES	= \
+		$(srcdir)/tool.xml \
+		$(srcdir)/fermi.m
+
+all:
+
+install:
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/examples/app-fermi/matlab/uncompiled/fermi.m
===================================================================
--- /tags/1.6.0/examples/app-fermi/matlab/uncompiled/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/matlab/uncompiled/fermi.m	(revision 6168)
@@ -0,0 +1,65 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Octave.
+%
+%  This script represents a newly written application with rappture 
+%  bindings and interface.
+%
+% ======================================================================
+%  AUTHOR:  Michael McLennan, Purdue University
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+% get out input file from the command line
+% invoke this script with the following command:
+% matlab -nodisplay -r infile=\'driver1234.xml\',fermi
+% the above command sets variable infile to the name 'driver1234.xml'
+
+% infile = 'driver31619.xml'
+
+% open our xml input file.
+lib = rpLib(infile);
+
+% retrieve user specified data out of the input file
+% convert values to correct units.
+Ef = rpLibGetString(lib,'input.number(Ef).current');
+[Ef,err] = rpUnitsConvertDbl(Ef,'eV');
+T = rpLibGetString(lib,'input.number(temperature).current');
+[T,err] = rpUnitsConvertDbl(T,'K');
+
+% do fermi calculations (science)...
+kT = 8.61734e-5 * T;
+Emin = Ef - 10*kT;
+Emax = Ef + 10*kT;
+
+E = linspace(Emin,Emax,200);
+f = 1.0 ./ (1.0 + exp((E - Ef)/kT));
+
+% prepare out output section
+% label graphs
+rpLibPutString(lib,'output.curve(f12).about.label','Fermi-Dirac Factor',0);
+rpLibPutString(lib,'output.curve(f12).xaxis.label','Fermi-Dirac Factor',0);
+rpLibPutString(lib,'output.curve(f12).yaxis.label','Energy',0);
+rpLibPutString(lib,'output.curve(f12).yaxis.units','eV',0);
+
+% this is a slow and inefficient method of putting
+% large amounts of data back in to the rappture library object
+%for j=1:200
+%  rpUtilsProgress((j/200*100),'Iterating');
+%  putStr = sprintf('%12g  %12g\n', f(j), E(j));
+%  % put the data into the xml file
+%  rpLibPutString(lib,'output.curve(f12).component.xy',putStr,1);
+%end
+
+% a better way is to take advantage of matlab's vector operations.
+outData = [f;E];
+putStr = sprintf('%12g  %12g\n', outData);
+rpLibPutString(lib,'output.curve(f12).component.xy',putStr,0);
+
+% signal the end of processing
+rpLibResult(lib);
+
+quit;
Index: /tags/1.6.0/examples/app-fermi/matlab/uncompiled/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/matlab/uncompiled/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/matlab/uncompiled/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>matlab -nodisplay -r infile='@driver',path('@tool',path),fermi</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/octave/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/octave/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/octave/Makefile.in	(revision 6168)
@@ -0,0 +1,47 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+destdir         = $(prefix)/examples/app-fermi/octave
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+MKOCTFILE2	= @MKOCTFILE2@
+MKOCTFILE3	= @MKOCTFILE3@
+SUBDIRS		= 
+
+.PHONY: octave2 octave3
+
+ifneq ($(MKOCTFILE2),)
+    SUBDIRS += octave2
+endif
+ifneq ($(MKOCTFILE3),)
+    SUBDIRS += octave3
+endif
+
+all: 
+	for i in $(SUBDIRS) ; do \
+	  $(MAKE) -C $$i all || exit 1 ;\
+	done
+
+install: 
+	for i in $(SUBDIRS) ; do \
+	  $(MAKE) -C $$i install || exit 1 ;\
+	done
+
+clean:
+	for i in $(SUBDIRS) ; do \
+	  $(MAKE) -C $$i clean ;\
+	done
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/examples/app-fermi/octave/octave2/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/octave/octave2/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/octave/octave2/Makefile.in	(revision 6168)
@@ -0,0 +1,33 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+destdir         = $(prefix)/examples/app-fermi/octave/octave2
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+FILES = \
+        $(srcdir)/tool.xml \
+        $(srcdir)/fermi.m
+
+all:
+
+install:
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/examples/app-fermi/octave/octave2/fermi.m
===================================================================
--- /tags/1.6.0/examples/app-fermi/octave/octave2/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/octave/octave2/fermi.m	(revision 6168)
@@ -0,0 +1,58 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Octave.
+%
+%  This script represents a newly written application with rappture 
+%  bindings and interface.
+%
+% ======================================================================
+%  AUTHOR:  Michael McLennan, Purdue University
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+% get input file from the command line
+% open our xml input file.
+infile = sprintf("%s",argv(1,:));
+lib = rpLib(infile);
+
+% retrieve user specified data out of the input file 
+% convert values to correct units.
+Ef = rpLibGetString(lib,"input.number(Ef).current");
+[Ef,err] = rpUnitsConvertDbl(Ef,"eV");
+T = rpLibGetString(lib,"input.number(temperature).current");
+[T,err] = rpUnitsConvertDbl(T,"K");
+
+% do fermi calculations (science)...
+kT = 8.61734e-5 * T;
+Emin = Ef - 10*kT;
+Emax = Ef + 10*kT;
+
+E = linspace(Emin,Emax,200);
+f = 1.0 ./ (1.0 + exp((E - Ef)/kT));
+
+% prepare out output section
+% label graphs
+rpLibPutString(lib,"output.curve(f12).about.label","Fermi-Dirac Factor",0);
+rpLibPutString(lib,"output.curve(f12).xaxis.label","Fermi-Dirac Factor",0);
+rpLibPutString(lib,"output.curve(f12).yaxis.label","Energy",0);
+rpLibPutString(lib,"output.curve(f12).yaxis.units","eV",0);
+
+% this is a slow and inefficient method of putting
+% large amounts of data back in to the rappture library object
+%for j=1:200
+%  rpUtilsProgress((j/200*100),'Iterating');
+%  putStr = sprintf('%12g  %12g\n', f(j), E(j));
+%  % put the data into the xml file
+%  rpLibPutString(lib,"output.curve(f12).component.xy",putStr,1);
+%end
+
+% a better way is to take advantage of octave's vector operations.
+outData = [f;E];
+putStr = sprintf('%12g  %12g\n', outData);
+rpLibPutString(lib,'output.curve(f12).component.xy',putStr,0);
+
+% signal the end of processing
+rpLibResult(lib);
Index: /tags/1.6.0/examples/app-fermi/octave/octave2/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/octave/octave2/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/octave/octave2/test/defaults.xml	(revision 6168)
@@ -0,0 +1,272 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>octave --silent @tool/fermi.m @driver</command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <language>octave</language>
+                <revision>$LastChangedRevision: 1041 $</revision>
+                <modified>$LastChangedDate: 2008-06-10 20:51:55 -0400 (Tue, 10 Jun 2008) $</modified>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>    0.999955      -0.25852
+     0.99995     -0.255922
+    0.999944     -0.253324
+    0.999939     -0.250726
+    0.999932     -0.248127
+    0.999925     -0.245529
+    0.999917     -0.242931
+    0.999908     -0.240333
+    0.999899     -0.237735
+    0.999888     -0.235136
+    0.999876     -0.232538
+    0.999863      -0.22994
+    0.999848     -0.227342
+    0.999832     -0.224744
+    0.999815     -0.222145
+    0.999795     -0.219547
+    0.999773     -0.216949
+    0.999749     -0.214351
+    0.999723     -0.211753
+    0.999694     -0.209155
+    0.999661     -0.206556
+    0.999625     -0.203958
+    0.999586      -0.20136
+    0.999542     -0.198762
+    0.999494     -0.196164
+     0.99944     -0.193565
+    0.999381     -0.190967
+    0.999316     -0.188369
+    0.999243     -0.185771
+    0.999163     -0.183173
+    0.999075     -0.180574
+    0.998977     -0.177976
+    0.998869     -0.175378
+     0.99875      -0.17278
+    0.998618     -0.170182
+    0.998472     -0.167583
+    0.998311     -0.164985
+    0.998133     -0.162387
+    0.997936     -0.159789
+    0.997718     -0.157191
+    0.997477     -0.154592
+    0.997211     -0.151994
+    0.996917     -0.149396
+    0.996593     -0.146798
+    0.996234       -0.1442
+    0.995837     -0.141602
+    0.995399     -0.139003
+    0.994915     -0.136405
+    0.994381     -0.133807
+     0.99379     -0.131209
+    0.993138     -0.128611
+    0.992418     -0.126012
+    0.991623     -0.123414
+    0.990746     -0.120816
+    0.989777     -0.118218
+    0.988709      -0.11562
+     0.98753     -0.113021
+    0.986229     -0.110423
+    0.984796     -0.107825
+    0.983215     -0.105227
+    0.981473     -0.102629
+    0.979555      -0.10003
+    0.977442    -0.0974322
+    0.975116     -0.094834
+    0.972558    -0.0922359
+    0.969744    -0.0896377
+    0.966652    -0.0870395
+    0.963256    -0.0844413
+    0.959528    -0.0818431
+     0.95544    -0.0792449
+    0.950959    -0.0766467
+    0.946054    -0.0740485
+    0.940689    -0.0714503
+    0.934827    -0.0688521
+     0.92843    -0.0662539
+    0.921457    -0.0636557
+    0.913868    -0.0610575
+    0.905621    -0.0584593
+    0.896674    -0.0558611
+    0.886984     -0.053263
+    0.876511    -0.0506648
+    0.865215    -0.0480666
+    0.853059    -0.0454684
+    0.840009    -0.0428702
+    0.826036     -0.040272
+    0.811117    -0.0376738
+    0.795237    -0.0350756
+    0.778385    -0.0324774
+    0.760565    -0.0298792
+    0.741787     -0.027281
+    0.722074    -0.0246828
+    0.701462    -0.0220846
+    0.679999    -0.0194864
+    0.657746    -0.0168883
+    0.634777    -0.0142901
+    0.611177    -0.0116919
+    0.587044   -0.00909368
+    0.562486   -0.00649548
+    0.537617   -0.00389729
+     0.51256    -0.0012991
+     0.48744     0.0012991
+    0.462383    0.00389729
+    0.437514    0.00649548
+    0.412956    0.00909368
+    0.388823     0.0116919
+    0.365223     0.0142901
+    0.342254     0.0168883
+    0.320001     0.0194864
+    0.298538     0.0220846
+    0.277926     0.0246828
+    0.258213      0.027281
+    0.239435     0.0298792
+    0.221615     0.0324774
+    0.204763     0.0350756
+    0.188883     0.0376738
+    0.173964      0.040272
+    0.159991     0.0428702
+    0.146941     0.0454684
+    0.134785     0.0480666
+    0.123489     0.0506648
+    0.113016      0.053263
+    0.103326     0.0558611
+   0.0943786     0.0584593
+   0.0861317     0.0610575
+   0.0785429     0.0636557
+   0.0715703     0.0662539
+    0.065173     0.0688521
+   0.0593109     0.0714503
+   0.0539457     0.0740485
+   0.0490405     0.0766467
+   0.0445604     0.0792449
+   0.0404721     0.0818431
+   0.0367444     0.0844413
+   0.0333482     0.0870395
+    0.030256     0.0896377
+   0.0274424     0.0922359
+   0.0248838      0.094834
+   0.0225581     0.0974322
+   0.0204453       0.10003
+   0.0185266      0.102629
+   0.0167848      0.105227
+   0.0152043      0.107825
+   0.0137705      0.110423
+   0.0124703      0.113021
+   0.0112914       0.11562
+   0.0102227      0.118218
+  0.00925433      0.120816
+  0.00837687      0.123414
+  0.00758197      0.126012
+  0.00686197      0.128611
+  0.00620993      0.131209
+  0.00561949      0.133807
+   0.0050849      0.136405
+  0.00460093      0.139003
+  0.00416284      0.141602
+   0.0037663        0.1442
+   0.0034074      0.146798
+   0.0030826      0.149396
+  0.00278867      0.151994
+   0.0025227      0.154592
+  0.00228204      0.157191
+  0.00206429      0.159789
+  0.00186727      0.162387
+  0.00168903      0.164985
+  0.00152778      0.167583
+   0.0013819      0.170182
+  0.00124993       0.17278
+  0.00113055      0.175378
+  0.00102256      0.177976
+ 0.000924877      0.180574
+ 0.000836517      0.183173
+ 0.000756592      0.185771
+ 0.000684298      0.188369
+ 0.000618908      0.190967
+ 0.000559763      0.193565
+ 0.000506267      0.196164
+ 0.000457881      0.198762
+ 0.000414118       0.20136
+ 0.000374536      0.203958
+ 0.000338736      0.206556
+ 0.000306357      0.209155
+ 0.000277072      0.211753
+ 0.000250586      0.214351
+ 0.000226631      0.216949
+ 0.000204966      0.219547
+ 0.000185371      0.222145
+  0.00016765      0.224744
+ 0.000151622      0.227342
+ 0.000137126       0.22994
+ 0.000124016      0.232538
+ 0.000112159      0.235136
+ 0.000101436      0.237735
+  9.1738e-05      0.240333
+  8.2967e-05      0.242931
+ 7.50345e-05      0.245529
+ 6.78604e-05      0.248127
+ 6.13722e-05      0.250726
+ 5.55043e-05      0.253324
+ 5.01974e-05      0.255922
+ 4.53979e-05       0.25852
+</xy>
+            </component>
+        </curve>
+        <time>Wed Dec 10 02:50:56 2008 EST</time>
+        <status>0</status>
+        <user>dkearney</user>
+        <host></host>
+    </output>
+</run>
Index: /tags/1.6.0/examples/app-fermi/octave/octave2/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/octave/octave2/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/octave/octave2/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>octave --silent @tool/fermi.m @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/octave/octave3/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/octave/octave3/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/octave/octave3/Makefile.in	(revision 6168)
@@ -0,0 +1,33 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+destdir         = $(prefix)/examples/app-fermi/octave/octave3
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+FILES = \
+        $(srcdir)/tool.xml \
+        $(srcdir)/fermi.m
+
+all:
+
+install:
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/examples/app-fermi/octave/octave3/fermi.m
===================================================================
--- /tags/1.6.0/examples/app-fermi/octave/octave3/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/octave/octave3/fermi.m	(revision 6168)
@@ -0,0 +1,58 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Octave.
+%
+%  This script represents a newly written application with rappture 
+%  bindings and interface.
+%
+% ======================================================================
+%  AUTHOR:  Michael McLennan, Purdue University
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+% get input file from the command line
+% open our xml input file.
+lib = rpLib(infile);
+
+% retrieve user specified data out of the input file 
+% convert values to correct units.
+Ef = rpLibGetString(lib,"input.number(Ef).current");
+[Ef,err] = rpUnitsConvertDbl(Ef,"eV");
+T = rpLibGetString(lib,"input.number(temperature).current");
+[T,err] = rpUnitsConvertDbl(T,"K");
+
+% do fermi calculations (science)...
+kT = 8.61734e-5 * T;
+Emin = Ef - 10*kT;
+Emax = Ef + 10*kT;
+
+E = linspace(Emin,Emax,200);
+f = 1.0 ./ (1.0 + exp((E - Ef)/kT));
+
+% prepare out output section
+% label graphs
+rpLibPutString(lib,"output.curve(f12).about.label","Fermi-Dirac Factor",0);
+rpLibPutString(lib,"output.curve(f12).xaxis.label","Fermi-Dirac Factor",0);
+rpLibPutString(lib,"output.curve(f12).yaxis.label","Energy",0);
+rpLibPutString(lib,"output.curve(f12).yaxis.units","eV",0);
+
+% this is a slow and inefficient method of putting
+% large amounts of data back in to the rappture library object
+%for j=1:200
+%  rpUtilsProgress((j/200*100),'Iterating');
+%  putStr = sprintf('%12g  %12g\n', f(j), E(j));
+%  % put the data into the xml file
+%  rpLibPutString(lib,"output.curve(f12).component.xy",putStr,1);
+%end
+
+% a better way is to take advantage of octave's vector operations.
+outData = [f;E];
+putStr = sprintf('%12g  %12g\n', outData);
+rpLibPutString(lib,'output.curve(f12).component.xy',putStr,0);
+
+% signal the end of processing
+rpLibResult(lib);
+quit;
Index: /tags/1.6.0/examples/app-fermi/octave/octave3/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/octave/octave3/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/octave/octave3/test/defaults.xml	(revision 6168)
@@ -0,0 +1,271 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>octave --silent --eval infile='@driver',path('@tool',path),fermi.m</command>
+        <version>
+            <rappture>
+                <language>octave</language>
+                <revision>$LastChangedRevision: 1527 $</revision>
+                <modified>$LastChangedDate: 2009-06-22 15:38:49 -0400 (Mon, 22 Jun 2009) $</modified>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>    0.999955      -0.25852
+     0.99995     -0.255922
+    0.999944     -0.253324
+    0.999939     -0.250726
+    0.999932     -0.248127
+    0.999925     -0.245529
+    0.999917     -0.242931
+    0.999908     -0.240333
+    0.999899     -0.237735
+    0.999888     -0.235136
+    0.999876     -0.232538
+    0.999863      -0.22994
+    0.999848     -0.227342
+    0.999832     -0.224744
+    0.999815     -0.222145
+    0.999795     -0.219547
+    0.999773     -0.216949
+    0.999749     -0.214351
+    0.999723     -0.211753
+    0.999694     -0.209155
+    0.999661     -0.206556
+    0.999625     -0.203958
+    0.999586      -0.20136
+    0.999542     -0.198762
+    0.999494     -0.196164
+     0.99944     -0.193565
+    0.999381     -0.190967
+    0.999316     -0.188369
+    0.999243     -0.185771
+    0.999163     -0.183173
+    0.999075     -0.180574
+    0.998977     -0.177976
+    0.998869     -0.175378
+     0.99875      -0.17278
+    0.998618     -0.170182
+    0.998472     -0.167583
+    0.998311     -0.164985
+    0.998133     -0.162387
+    0.997936     -0.159789
+    0.997718     -0.157191
+    0.997477     -0.154592
+    0.997211     -0.151994
+    0.996917     -0.149396
+    0.996593     -0.146798
+    0.996234       -0.1442
+    0.995837     -0.141602
+    0.995399     -0.139003
+    0.994915     -0.136405
+    0.994381     -0.133807
+     0.99379     -0.131209
+    0.993138     -0.128611
+    0.992418     -0.126012
+    0.991623     -0.123414
+    0.990746     -0.120816
+    0.989777     -0.118218
+    0.988709      -0.11562
+     0.98753     -0.113021
+    0.986229     -0.110423
+    0.984796     -0.107825
+    0.983215     -0.105227
+    0.981473     -0.102629
+    0.979555      -0.10003
+    0.977442    -0.0974322
+    0.975116     -0.094834
+    0.972558    -0.0922359
+    0.969744    -0.0896377
+    0.966652    -0.0870395
+    0.963256    -0.0844413
+    0.959528    -0.0818431
+     0.95544    -0.0792449
+    0.950959    -0.0766467
+    0.946054    -0.0740485
+    0.940689    -0.0714503
+    0.934827    -0.0688521
+     0.92843    -0.0662539
+    0.921457    -0.0636557
+    0.913868    -0.0610575
+    0.905621    -0.0584593
+    0.896674    -0.0558611
+    0.886984     -0.053263
+    0.876511    -0.0506648
+    0.865215    -0.0480666
+    0.853059    -0.0454684
+    0.840009    -0.0428702
+    0.826036     -0.040272
+    0.811117    -0.0376738
+    0.795237    -0.0350756
+    0.778385    -0.0324774
+    0.760565    -0.0298792
+    0.741787     -0.027281
+    0.722074    -0.0246828
+    0.701462    -0.0220846
+    0.679999    -0.0194864
+    0.657746    -0.0168883
+    0.634777    -0.0142901
+    0.611177    -0.0116919
+    0.587044   -0.00909368
+    0.562486   -0.00649548
+    0.537617   -0.00389729
+     0.51256    -0.0012991
+     0.48744     0.0012991
+    0.462383    0.00389729
+    0.437514    0.00649548
+    0.412956    0.00909368
+    0.388823     0.0116919
+    0.365223     0.0142901
+    0.342254     0.0168883
+    0.320001     0.0194864
+    0.298538     0.0220846
+    0.277926     0.0246828
+    0.258213      0.027281
+    0.239435     0.0298792
+    0.221615     0.0324774
+    0.204763     0.0350756
+    0.188883     0.0376738
+    0.173964      0.040272
+    0.159991     0.0428702
+    0.146941     0.0454684
+    0.134785     0.0480666
+    0.123489     0.0506648
+    0.113016      0.053263
+    0.103326     0.0558611
+   0.0943786     0.0584593
+   0.0861317     0.0610575
+   0.0785429     0.0636557
+   0.0715703     0.0662539
+    0.065173     0.0688521
+   0.0593109     0.0714503
+   0.0539457     0.0740485
+   0.0490405     0.0766467
+   0.0445604     0.0792449
+   0.0404721     0.0818431
+   0.0367444     0.0844413
+   0.0333482     0.0870395
+    0.030256     0.0896377
+   0.0274424     0.0922359
+   0.0248838      0.094834
+   0.0225581     0.0974322
+   0.0204453       0.10003
+   0.0185266      0.102629
+   0.0167848      0.105227
+   0.0152043      0.107825
+   0.0137705      0.110423
+   0.0124703      0.113021
+   0.0112914       0.11562
+   0.0102227      0.118218
+  0.00925433      0.120816
+  0.00837687      0.123414
+  0.00758197      0.126012
+  0.00686197      0.128611
+  0.00620993      0.131209
+  0.00561949      0.133807
+   0.0050849      0.136405
+  0.00460093      0.139003
+  0.00416284      0.141602
+   0.0037663        0.1442
+   0.0034074      0.146798
+   0.0030826      0.149396
+  0.00278867      0.151994
+   0.0025227      0.154592
+  0.00228204      0.157191
+  0.00206429      0.159789
+  0.00186727      0.162387
+  0.00168903      0.164985
+  0.00152778      0.167583
+   0.0013819      0.170182
+  0.00124993       0.17278
+  0.00113055      0.175378
+  0.00102256      0.177976
+ 0.000924877      0.180574
+ 0.000836517      0.183173
+ 0.000756592      0.185771
+ 0.000684298      0.188369
+ 0.000618908      0.190967
+ 0.000559763      0.193565
+ 0.000506267      0.196164
+ 0.000457881      0.198762
+ 0.000414118       0.20136
+ 0.000374536      0.203958
+ 0.000338736      0.206556
+ 0.000306357      0.209155
+ 0.000277072      0.211753
+ 0.000250586      0.214351
+ 0.000226631      0.216949
+ 0.000204966      0.219547
+ 0.000185371      0.222145
+  0.00016765      0.224744
+ 0.000151622      0.227342
+ 0.000137126       0.22994
+ 0.000124016      0.232538
+ 0.000112159      0.235136
+ 0.000101436      0.237735
+  9.1738e-05      0.240333
+  8.2967e-05      0.242931
+ 7.50345e-05      0.245529
+ 6.78604e-05      0.248127
+ 6.13722e-05      0.250726
+ 5.55043e-05      0.253324
+ 5.01974e-05      0.255922
+ 4.53979e-05       0.25852
+</xy>
+            </component>
+        </curve>
+        <time>Sat Oct 17 23:11:25 2009 EDT</time>
+        <status>0</status>
+        <user>derrick</user>
+        <host></host>
+    </output>
+</run>
Index: /tags/1.6.0/examples/app-fermi/octave/octave3/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/octave/octave3/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/octave/octave3/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>octave --silent --eval "infile='@driver',path('@tool',path),fermi"</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/perl/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/perl/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/perl/Makefile.in	(revision 6168)
@@ -0,0 +1,32 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+destdir		= $(prefix)/examples/app-fermi/perl
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+FILES 		= \
+		$(srcdir)/tool.xml \
+		$(srcdir)/fermi.pl
+
+all:	
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+clean:
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/examples/app-fermi/perl/fermi.pl
===================================================================
--- /tags/1.6.0/examples/app-fermi/perl/fermi.pl	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/perl/fermi.pl	(revision 6168)
@@ -0,0 +1,48 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Perl.
+#         
+#  This simple example shows how to use Rappture within a simulator
+#  written in Perl.
+# ======================================================================
+#  AUTHOR:  Nicholas J. Kisseberth, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#       
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+use Rappture;
+
+# open the XML file containing the run parameters
+
+$driver = Rappture::RpLibrary->new($ARGV[0]);
+
+$Tstr = $driver->get("input.(temperature).current");
+$T = Rappture::RpUnits::convert($Tstr, "K", "off");
+
+$Efstr = $driver->get("input.(Ef).current");
+$Ef = Rappture::RpUnits::convert($Efstr, "eV", "off");
+
+$kT = 8.61734e-5 * $T;
+$Emin = $Ef - 10 * $kT;
+$Emax = $Ef + 10 * $kT;
+
+$E = $Emin;
+$dE = 0.005*($Emax - $Emin);
+
+# Label the output graph with a title, x-axis label,
+# y-axis label, y-axis units.
+
+$driver->put("output.curve(f12).about.label","Fermi-Dirac Factor",0);
+$driver->put("output.curve(f12).xaxis.label","Fermi-Dirac Factor",0);
+$driver->put("output.curve(f12).yaxis.label","Energy",0);
+$driver->put("output.curve(f12).yaxis.units","eV",0);
+
+while( $E < $Emax ) {
+    $f = 1.0 / ( 1.0 + exp(($E - $Ef) / $kT));
+    Rappture::Utils::progress((($E-$Emin)/($Emax-$Emin)*100),"Iterating");
+    $driver->put("output.curve(f12).component.xy", "$f $E\n", 1);
+    $E = $E + $dE;
+}
+
+$driver->result();
Index: /tags/1.6.0/examples/app-fermi/perl/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/perl/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/perl/test/defaults.xml	(revision 6168)
@@ -0,0 +1,272 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>perl @tool/fermi.pl @driver</command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <language>perl</language>
+                <revision>$LastChangedRevision: 1041 $</revision>
+                <modified>$LastChangedDate: 2008-06-10 20:51:55 -0400 (Tue, 10 Jun 2008) $</modified>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999954602131298 -0.2585202
+0.999949827835316 -0.255934998
+0.999944551475277 -0.253349796
+0.999938720260383 -0.250764594
+0.99993227585038 -0.248179392
+0.999925153772489 -0.24559419
+0.999917282777148 -0.243008988
+0.999908584126148 -0.240423786
+0.999898970806092 -0.237838584
+0.99988834665937 -0.235253382
+0.999876605424014 -0.23266818
+0.99986362967292 -0.230082978
+0.99984928964194 -0.227497776
+0.999833441935223 -0.224912574
+0.999815928095037 -0.222327372
+0.999796573021945 -0.21974217
+0.999775183229767 -0.217156968
+0.999751544918161 -0.214571766
+0.999725421843899 -0.211986564
+0.999696552969971 -0.209401362
+0.999664649869534 -0.20681616
+0.999629393859374 -0.204230958
+0.999590432835014 -0.201645756
+0.99954737777676 -0.199060554
+0.999499798892921 -0.196475352
+0.999447221363076 -0.19389015
+0.999389120640566 -0.191304948
+0.999324917269367 -0.188719746
+0.999253971166163 -0.186134544
+0.999175575313602 -0.183549342
+0.999088948805599 -0.18096414
+0.998993229179914 -0.178378938
+0.99888746396714 -0.175793736
+0.998770601378723 -0.173208534
+0.998641480049571 -0.170623332
+0.998498817743263 -0.16803813
+0.998341198919826 -0.165452928
+0.998167061057507 -0.162867726
+0.99797467961095 -0.160282524
+0.997762151478724 -0.157697322
+0.997527376843365 -0.15511212
+0.997268039236989 -0.152526918
+0.996981583675291 -0.149941716
+0.996665192692587 -0.147356514
+0.996315760100564 -0.144771312
+0.995929862284104 -0.14218611
+0.995503726839059 -0.139600908
+0.995033198349943 -0.137015706
+0.994513701100549 -0.134430504
+0.993940198508416 -0.131845302
+0.993307149075715 -0.1292601
+0.992608458655718 -0.126674898
+0.99183742884684 -0.124089696
+0.990986701347152 -0.121504494
+0.990048198133096 -0.118919292
+0.989013057369407 -0.11633409
+0.987871565015725 -0.113748888
+0.986613082172335 -0.111163686
+0.985225968306727 -0.108578484
+0.983697500628559 -0.105993282
+0.982013790037908 -0.10340808
+0.980159694265922 -0.100822878
+0.978118729063869 -0.0982376759999996
+0.97587297858233 -0.0956524739999996
+0.973403006423134 -0.0930672719999996
+0.970687769248643 -0.0904820699999996
+0.967704535301549 -0.0878968679999996
+0.964428810727363 -0.0853116659999996
+0.960834277203235 -0.0827264639999996
+0.956892745058913 -0.0801412619999996
+0.952574126822432 -0.0775560599999996
+0.947846436921582 -0.0749708579999996
+0.94267582410113 -0.0723856559999996
+0.937026643943003 -0.0698004539999997
+0.930861579656652 -0.0672152519999997
+0.924141819978756 -0.0646300499999997
+0.916827303506077 -0.0620448479999997
+0.908877038985143 -0.0594596459999997
+0.900249510880314 -0.0568744439999997
+0.890903178804386 -0.0542892419999997
+0.880797077977881 -0.0517040399999997
+0.869891525637001 -0.0491188379999997
+0.858148935099511 -0.0465336359999996
+0.845534734916463 -0.0439484339999996
+0.832018385133923 -0.0413632319999996
+0.817574476193642 -0.0387780299999996
+0.80218388855858 -0.0361928279999996
+0.785834983042556 -0.0336076259999996
+0.768524783499015 -0.0310224239999996
+0.750260105595115 -0.0284372219999996
+0.731058578630002 -0.0258520199999996
+0.710949502625001 -0.0232668179999996
+0.689974481127609 -0.0206816159999996
+0.668187772168163 -0.0180964139999996
+0.645656306225792 -0.0155112119999996
+0.622459331201851 -0.0129260099999996
+0.598687660112449 -0.0103408079999996
+0.574442516811655 -0.00775560599999963
+0.549833997312474 -0.00517040399999963
+0.524979187478936 -0.00258520199999963
+0.499999999999996 3.6949610038306e-16
+0.475020812521056 0.00258520200000037
+0.450166002687519 0.00517040400000037
+0.425557483188338 0.00775560600000037
+0.401312339887545 0.0103408080000004
+0.377540668798142 0.0129260100000004
+0.354343693774201 0.0155112120000004
+0.331812227831831 0.0180964140000004
+0.310025518872384 0.0206816160000004
+0.289050497374993 0.0232668180000004
+0.268941421369992 0.0258520200000004
+0.24973989440488 0.0284372220000004
+0.23147521650098 0.0310224240000004
+0.214165016957439 0.0336076260000004
+0.197816111441416 0.0361928280000004
+0.182425523806354 0.0387780300000004
+0.167981614866073 0.0413632320000004
+0.154465265083533 0.0439484340000004
+0.141851064900486 0.0465336360000004
+0.130108474362996 0.0491188380000004
+0.119202922022116 0.0517040400000004
+0.109096821195611 0.0542892420000004
+0.0997504891196838 0.0568744440000004
+0.0911229610148549 0.0594596460000004
+0.0831726964939212 0.0620448480000004
+0.0758581800212425 0.0646300500000004
+0.0691384203433458 0.0672152520000004
+0.0629733560569956 0.0698004540000004
+0.0573241758988679 0.0723856560000004
+0.052153563078417 0.0749708580000004
+0.0474258731775661 0.0775560600000004
+0.0431072549410855 0.0801412620000004
+0.0391657227967638 0.0827264640000004
+0.0355711892726357 0.0853116660000004
+0.0322954646984501 0.0878968680000003
+0.0293122307513559 0.0904820700000003
+0.0265969935768655 0.0930672720000003
+0.0241270214176689 0.0956524740000003
+0.0218812709361302 0.0982376760000003
+0.0198403057340773 0.100822878
+0.0179862099620913 0.10340808
+0.0163024993714407 0.105993282
+0.0147740316932729 0.108578484
+0.0133869178276646 0.111163686
+0.0121284349842741 0.113748888
+0.0109869426305931 0.11633409
+0.00995180186690421 0.118919292
+0.00901329865284773 0.121504494
+0.00816257115315981 0.124089696
+0.00739154134428189 0.126674898
+0.00669285092428478 0.1292601
+0.00605980149158404 0.131845302
+0.00548629889945034 0.134430504
+0.0049668016500569 0.137015706
+0.00449627316094112 0.139600908
+0.00407013771589607 0.14218611
+0.00368423989943594 0.144771312
+0.0033348073074133 0.147356514
+0.00301841632470838 0.149941716
+0.00273196076301102 0.152526918
+0.00247262315663474 0.15511212
+0.0022378485212763 0.157697322
+0.00202532038904985 0.160282524
+0.00183293894249278 0.162867726
+0.00165880108017439 0.165452928
+0.00150118225673697 0.16803813
+0.00135851995042894 0.170623332
+0.0012293986212774 0.173208534
+0.0011125360328603 0.175793736
+0.00100677082008562 0.178378938
+0.000911051194400629 0.18096414
+0.00082442468639828 0.183549342
+0.000746028833836683 0.186134544
+0.000675082730632825 0.188719746
+0.000610879359434389 0.191304948000001
+0.000552778636923589 0.193890150000001
+0.000500201107079554 0.196475352000001
+0.000452622223240526 0.199060554000001
+0.000409567164986042 0.201645756000001
+0.000370606140626389 0.204230958000001
+0.000335350130466471 0.206816160000001
+0.000303447030028913 0.209401362000001
+0.000274578156101327 0.211986564000001
+0.000248455081839329 0.214571766000001
+0.00022481677023329 0.217156968000001
+0.000203426978055202 0.219742170000001
+0.00018407190496342 0.222327372000001
+0.000166558064777332 0.224912574000001
+0.000150710358059754 0.227497776000001
+0.000136370327079494 0.230082978000001
+0.000123394575986229 0.232668180000001
+0.00011165334062956 0.235253382000001
+0.00010102919390777 0.237838584000001
+9.14158738521591e-05 0.240423786000001
+8.27172228516642e-05 0.243008988000001
+7.48462275106092e-05 0.245594190000001
+6.77241496197684e-05 0.248179392000001
+6.12797396166008e-05 0.250764594000001
+5.54485247227935e-05 0.253349796000001
+5.01721646837629e-05 0.255934998000001
+</xy>
+            </component>
+        </curve>
+        <time>Wed Dec 10 02:51:41 2008 EST</time>
+        <status>0</status>
+        <user>dkearney</user>
+        <host></host>
+    </output>
+</run>
Index: /tags/1.6.0/examples/app-fermi/perl/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/perl/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/perl/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>perl @tool/fermi.pl @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/python/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/python/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/python/Makefile.in	(revision 6168)
@@ -0,0 +1,33 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= @srcdir@
+
+destdir		= $(prefix)/examples/app-fermi/python
+
+FILES 		= \
+		$(srcdir)/tool.xml \
+		$(srcdir)/fermi.py
+all:	
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/examples/app-fermi/python/fermi.py
===================================================================
--- /tags/1.6.0/examples/app-fermi/python/fermi.py	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/python/fermi.py	(revision 6168)
@@ -0,0 +1,67 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Python.
+#
+#  This simple example shows how to use Rappture within a simulator
+#  written in Python.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#           Martin Hunt, Purdue University
+#  Copyright (c) 2004-2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+import Rappture
+import sys
+import numpy as np
+
+# Uncomment these lines to redirect
+# python output and errors to files
+# for easier debugging.
+# sys.stderr = open('fermi.err', 'w')
+# sys.stdout = open('fermi.out', 'w')
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+temp_str = rx['input.(temperature).current'].value
+temp = Rappture.Units.convert(temp_str, to='K', units='off')
+
+ef_str = rx['input.(Ef).current'].value
+ef = Rappture.Units.convert(ef_str, to='eV', units='off')
+
+kt = 8.61734e-5 * temp
+emin = ef - 10*kt
+emax = ef + 10*kt
+
+# Label the output graph with a title, x-axis label,
+# y-axis label, and y-axis units
+f12 = rx['output.curve(f12)']  # a shortcut to save typing
+f12['about.label'] = 'Fermi-Dirac Factor'
+f12['xaxis.label'] = 'Fermi-Dirac Factor'
+f12['yaxis.label'] = 'Energy'
+f12['yaxis.units'] = 'eV'
+
+# How many points to use to define our curve
+numpts = 200
+
+# The normal python approach would be to simply do this:
+# energy = np.linspace(emin, emax, numpts)
+# f = 1.0/(1.0 + np.exp((energy - ef)/kt))
+# f12['component.xy'] = (f, energy)
+# rx.close()
+
+# But we want to show how to use the progress bar,
+# so lets do things slowly and iteratively...
+
+import time
+energy = []
+fermi = []
+for i, e in enumerate(np.linspace(emin, emax, numpts)):
+    f = 1.0/(1.0 + np.exp((e - ef)/kt))
+    energy.append(e)
+    fermi.append(f)
+    Rappture.Utils.progress(i*100.0/numpts, "Iterating")
+    time.sleep(0.01)
+f12['component.xy'] = (fermi, energy)
+rx.close()
Index: /tags/1.6.0/examples/app-fermi/python/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/python/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/python/test/defaults.xml	(revision 6168)
@@ -0,0 +1,271 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>python @tool/fermi.py @driver</command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <application>
+                <date>$Date: 2007-04-13 00:02:59 -0400 (Fri, 13 Apr 2007) $</date>
+                <rev>$LastChangedRevision: 670 $</rev>
+                <url>$URL: https://repo.nanohub.org/svn/rappture/trunk/examples/app-fermi/python/fermi.py $</url>
+            </application>
+            <rappture>
+                <language>python</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999955 -0.25852
+0.99995 -0.255935
+0.999945 -0.25335
+0.999939 -0.250765
+0.999932 -0.248179
+0.999925 -0.245594
+0.999917 -0.243009
+0.999909 -0.240424
+0.999899 -0.237839
+0.999888 -0.235253
+0.999877 -0.232668
+0.999864 -0.230083
+0.999849 -0.227498
+0.999833 -0.224913
+0.999816 -0.222327
+0.999797 -0.219742
+0.999775 -0.217157
+0.999752 -0.214572
+0.999725 -0.211987
+0.999697 -0.209401
+0.999665 -0.206816
+0.999629 -0.204231
+0.99959 -0.201646
+0.999547 -0.199061
+0.9995 -0.196475
+0.999447 -0.19389
+0.999389 -0.191305
+0.999325 -0.18872
+0.999254 -0.186135
+0.999176 -0.183549
+0.999089 -0.180964
+0.998993 -0.178379
+0.998887 -0.175794
+0.998771 -0.173209
+0.998641 -0.170623
+0.998499 -0.168038
+0.998341 -0.165453
+0.998167 -0.162868
+0.997975 -0.160283
+0.997762 -0.157697
+0.997527 -0.155112
+0.997268 -0.152527
+0.996982 -0.149942
+0.996665 -0.147357
+0.996316 -0.144771
+0.99593 -0.142186
+0.995504 -0.139601
+0.995033 -0.137016
+0.994514 -0.134431
+0.99394 -0.131845
+0.993307 -0.12926
+0.992608 -0.126675
+0.991837 -0.12409
+0.990987 -0.121504
+0.990048 -0.118919
+0.989013 -0.116334
+0.987872 -0.113749
+0.986613 -0.111164
+0.985226 -0.108578
+0.983698 -0.105993
+0.982014 -0.103408
+0.98016 -0.100823
+0.978119 -0.0982377
+0.975873 -0.0956525
+0.973403 -0.0930673
+0.970688 -0.0904821
+0.967705 -0.0878969
+0.964429 -0.0853117
+0.960834 -0.0827265
+0.956893 -0.0801413
+0.952574 -0.0775561
+0.947846 -0.0749709
+0.942676 -0.0723857
+0.937027 -0.0698005
+0.930862 -0.0672153
+0.924142 -0.06463
+0.916827 -0.0620448
+0.908877 -0.0594596
+0.90025 -0.0568744
+0.890903 -0.0542892
+0.880797 -0.051704
+0.869892 -0.0491188
+0.858149 -0.0465336
+0.845535 -0.0439484
+0.832018 -0.0413632
+0.817574 -0.038778
+0.802184 -0.0361928
+0.785835 -0.0336076
+0.768525 -0.0310224
+0.75026 -0.0284372
+0.731059 -0.025852
+0.71095 -0.0232668
+0.689974 -0.0206816
+0.668188 -0.0180964
+0.645656 -0.0155112
+0.622459 -0.012926
+0.598688 -0.0103408
+0.574443 -0.00775561
+0.549834 -0.0051704
+0.524979 -0.0025852
+0.5 3.69496e-16
+0.475021 0.0025852
+0.450166 0.0051704
+0.425557 0.00775561
+0.401312 0.0103408
+0.377541 0.012926
+0.354344 0.0155112
+0.331812 0.0180964
+0.310026 0.0206816
+0.28905 0.0232668
+0.268941 0.025852
+0.24974 0.0284372
+0.231475 0.0310224
+0.214165 0.0336076
+0.197816 0.0361928
+0.182426 0.038778
+0.167982 0.0413632
+0.154465 0.0439484
+0.141851 0.0465336
+0.130108 0.0491188
+0.119203 0.051704
+0.109097 0.0542892
+0.0997505 0.0568744
+0.091123 0.0594596
+0.0831727 0.0620448
+0.0758582 0.0646301
+0.0691384 0.0672153
+0.0629734 0.0698005
+0.0573242 0.0723857
+0.0521536 0.0749709
+0.0474259 0.0775561
+0.0431073 0.0801413
+0.0391657 0.0827265
+0.0355712 0.0853117
+0.0322955 0.0878969
+0.0293122 0.0904821
+0.026597 0.0930673
+0.024127 0.0956525
+0.0218813 0.0982377
+0.0198403 0.100823
+0.0179862 0.103408
+0.0163025 0.105993
+0.014774 0.108578
+0.0133869 0.111164
+0.0121284 0.113749
+0.0109869 0.116334
+0.0099518 0.118919
+0.0090133 0.121504
+0.00816257 0.12409
+0.00739154 0.126675
+0.00669285 0.12926
+0.0060598 0.131845
+0.0054863 0.134431
+0.0049668 0.137016
+0.00449627 0.139601
+0.00407014 0.142186
+0.00368424 0.144771
+0.00333481 0.147357
+0.00301842 0.149942
+0.00273196 0.152527
+0.00247262 0.155112
+0.00223785 0.157697
+0.00202532 0.160283
+0.00183294 0.162868
+0.0016588 0.165453
+0.00150118 0.168038
+0.00135852 0.170623
+0.0012294 0.173209
+0.00111254 0.175794
+0.00100677 0.178379
+0.000911051 0.180964
+0.000824425 0.183549
+0.000746029 0.186135
+0.000675083 0.18872
+0.000610879 0.191305
+0.000552779 0.19389
+0.000500201 0.196475
+0.000452622 0.199061
+0.000409567 0.201646
+0.000370606 0.204231
+0.00033535 0.206816
+0.000303447 0.209401
+0.000274578 0.211987
+0.000248455 0.214572
+0.000224817 0.217157
+0.000203427 0.219742
+0.000184072 0.222327
+0.000166558 0.224913
+0.00015071 0.227498
+0.00013637 0.230083
+0.000123395 0.232668
+0.000111653 0.235253
+0.000101029 0.237839
+9.14159e-05 0.240424
+8.27172e-05 0.243009
+7.48462e-05 0.245594
+6.77241e-05 0.248179
+6.12797e-05 0.250765
+5.54485e-05 0.25335
+5.01722e-05 0.255935
+</xy>
+            </component>
+        </curve>
+    </output>
+</run>
Index: /tags/1.6.0/examples/app-fermi/python/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/python/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/python/tool.xml	(revision 6168)
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>python @tool/fermi.py @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/app-fermi/ruby/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/ruby/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/ruby/Makefile.in	(revision 6168)
@@ -0,0 +1,33 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+destdir		= $(prefix)/examples/app-fermi/ruby
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+FILES 		= \
+		$(srcdir)/tool.xml \
+		$(srcdir)/fermi.rb
+
+all:	
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/examples/app-fermi/ruby/fermi.rb
===================================================================
--- /tags/1.6.0/examples/app-fermi/ruby/fermi.rb	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/ruby/fermi.rb	(revision 6168)
@@ -0,0 +1,54 @@
+#
+# Fermi-Dirac function in Ruby
+#
+# This example shows how to use Rappture within a simulator written in Ruby.
+# =============================================================================
+# Author: Benjamin Haley, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and 
+# redistributioin of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# =============================================================================
+# Takes one argument: driver (tool.xml)
+
+# Load Rappture
+require "Rappture"
+
+# Create an instance of the Rappture I/O library;
+# Pass the driver file name as an argument
+rp = Rappture.new(ARGV[0])
+
+# Get the input temperature
+strT = rp.get("input.(temperature).current")
+numT = rp.convert(strT, "K", Rappture::UNITS_OFF)
+
+# Get the input Fermi energy
+strEf = rp.get("input.(Ef).current")
+numEf = rp.convert(strEf, "eV", Rappture::UNITS_OFF)
+
+# Set the energy range and step size
+kT = 8.61734e-5*numT
+minE = numEf - 10.0*kT
+maxE = numEf + 10.0*kT
+currE = minE
+dE = 0.005*(maxE - minE)
+
+# Set information about the output plot
+rp.put("output.curve(f12).about.label", "Fermi-Dirac Factor", Rappture::OVERWRITE)
+rp.put("output.curve(f12).xaxis.label", "Fermi-Dirac Factor", Rappture::OVERWRITE)
+rp.put("output.curve(f12).yaxis.label", "Energy", Rappture::OVERWRITE)
+rp.put("output.curve(f12).yaxis.units", "eV", Rappture::OVERWRITE)
+
+# Calculate the Fermi-Dirac function over the energy range, 
+# and add the results to the output plot.
+while currE < maxE
+   f = 1.0/(1.0 + Math.exp((currE - numEf)/kT))
+   currXY = sprintf("%g  %g\n", f, currE)
+   rp.progress(((currE-minE)/(maxE-minE)*100.0), "Iterating")
+   rp.put("output.curve(f12).component.xy", currXY, Rappture::APPEND)
+   currE += dE
+end
+
+# Write the final results
+rp.result(0)
+
Index: /tags/1.6.0/examples/app-fermi/ruby/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/ruby/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/ruby/tool.xml	(revision 6168)
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>ruby @tool/fermi.rb @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/app-fermi/tcl/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/tcl/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/tcl/Makefile.in	(revision 6168)
@@ -0,0 +1,32 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= @srcdir@
+
+destdir		= $(prefix)/examples/app-fermi/tcl
+FILES 		= \
+		$(srcdir)/tool.xml \
+		$(srcdir)/fermi.tcl
+
+all:	
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/examples/app-fermi/tcl/fermi.tcl
===================================================================
--- /tags/1.6.0/examples/app-fermi/tcl/fermi.tcl	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/tcl/fermi.tcl	(revision 6168)
@@ -0,0 +1,47 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Tcl.
+#
+#  This simple example shows how to use Rappture within a simulator
+#  written in Tcl.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set T [$driver get input.(temperature).current]
+set T [Rappture::Units::convert $T -to K -units off]
+set Ef [$driver get input.(Ef).current]
+set Ef [Rappture::Units::convert $Ef -to eV -units off]
+
+set kT [expr {8.61734e-5 * $T}]
+set Emin [expr {$Ef - 10*$kT}]
+set Emax [expr {$Ef + 10*$kT}]
+
+set E $Emin
+set dE [expr {0.005*($Emax-$Emin)}]
+
+# Label output graph with title, x-axis label,
+# y-axis lable, and y-axis units
+$driver put -append no output.curve(f12).about.label "Fermi-Dirac Factor"
+$driver put -append no output.curve(f12).xaxis.label "Fermi-Dirac Factor"
+$driver put -append no output.curve(f12).yaxis.label "Energy"
+$driver put -append no output.curve(f12).yaxis.units "eV"
+
+while {$E < $Emax} {
+    set f [expr {1.0/(1.0 + exp(($E - $Ef)/$kT))}]
+    set progress [expr {(($E - $Emin)/($Emax - $Emin)*100)}]
+    Rappture::Utils::progress $progress -mesg "Iterating"
+    $driver put -append yes output.curve(f12).component.xy "$f $E\n"
+    set E [expr {$E + $dE}]
+}
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/app-fermi/tcl/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/tcl/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/tcl/test/defaults.xml	(revision 6168)
@@ -0,0 +1,272 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999954602131 -0.2585202
+0.999949827835 -0.255934998
+0.999944551475 -0.253349796
+0.99993872026 -0.250764594
+0.99993227585 -0.248179392
+0.999925153772 -0.24559419
+0.999917282777 -0.243008988
+0.999908584126 -0.240423786
+0.999898970806 -0.237838584
+0.999888346659 -0.235253382
+0.999876605424 -0.23266818
+0.999863629673 -0.230082978
+0.999849289642 -0.227497776
+0.999833441935 -0.224912574
+0.999815928095 -0.222327372
+0.999796573022 -0.21974217
+0.99977518323 -0.217156968
+0.999751544918 -0.214571766
+0.999725421844 -0.211986564
+0.99969655297 -0.209401362
+0.99966464987 -0.20681616
+0.999629393859 -0.204230958
+0.999590432835 -0.201645756
+0.999547377777 -0.199060554
+0.999499798893 -0.196475352
+0.999447221363 -0.19389015
+0.999389120641 -0.191304948
+0.999324917269 -0.188719746
+0.999253971166 -0.186134544
+0.999175575314 -0.183549342
+0.999088948806 -0.18096414
+0.99899322918 -0.178378938
+0.998887463967 -0.175793736
+0.998770601379 -0.173208534
+0.99864148005 -0.170623332
+0.998498817743 -0.16803813
+0.99834119892 -0.165452928
+0.998167061058 -0.162867726
+0.997974679611 -0.160282524
+0.997762151479 -0.157697322
+0.997527376843 -0.15511212
+0.997268039237 -0.152526918
+0.996981583675 -0.149941716
+0.996665192693 -0.147356514
+0.996315760101 -0.144771312
+0.995929862284 -0.14218611
+0.995503726839 -0.139600908
+0.99503319835 -0.137015706
+0.994513701101 -0.134430504
+0.993940198508 -0.131845302
+0.993307149076 -0.1292601
+0.992608458656 -0.126674898
+0.991837428847 -0.124089696
+0.990986701347 -0.121504494
+0.990048198133 -0.118919292
+0.989013057369 -0.11633409
+0.987871565016 -0.113748888
+0.986613082172 -0.111163686
+0.985225968307 -0.108578484
+0.983697500629 -0.105993282
+0.982013790038 -0.10340808
+0.980159694266 -0.100822878
+0.978118729064 -0.098237676
+0.975872978582 -0.095652474
+0.973403006423 -0.093067272
+0.970687769249 -0.09048207
+0.967704535302 -0.087896868
+0.964428810727 -0.085311666
+0.960834277203 -0.082726464
+0.956892745059 -0.080141262
+0.952574126822 -0.07755606
+0.947846436922 -0.074970858
+0.942675824101 -0.072385656
+0.937026643943 -0.069800454
+0.930861579657 -0.067215252
+0.924141819979 -0.06463005
+0.916827303506 -0.062044848
+0.908877038985 -0.059459646
+0.90024951088 -0.056874444
+0.890903178804 -0.054289242
+0.880797077978 -0.05170404
+0.869891525637 -0.049118838
+0.8581489351 -0.046533636
+0.845534734916 -0.043948434
+0.832018385134 -0.041363232
+0.817574476194 -0.03877803
+0.802183888559 -0.036192828
+0.785834983043 -0.033607626
+0.768524783499 -0.031022424
+0.750260105595 -0.028437222
+0.73105857863 -0.02585202
+0.710949502625 -0.023266818
+0.689974481128 -0.020681616
+0.668187772168 -0.018096414
+0.645656306226 -0.015511212
+0.622459331202 -0.01292601
+0.598687660112 -0.010340808
+0.574442516812 -0.007755606
+0.549833997312 -0.005170404
+0.524979187479 -0.002585202
+0.5 3.69496100383e-16
+0.475020812521 0.002585202
+0.450166002688 0.005170404
+0.425557483188 0.007755606
+0.401312339888 0.010340808
+0.377540668798 0.01292601
+0.354343693774 0.015511212
+0.331812227832 0.018096414
+0.310025518872 0.020681616
+0.289050497375 0.023266818
+0.26894142137 0.02585202
+0.249739894405 0.028437222
+0.231475216501 0.031022424
+0.214165016957 0.033607626
+0.197816111441 0.036192828
+0.182425523806 0.03877803
+0.167981614866 0.041363232
+0.154465265084 0.043948434
+0.1418510649 0.046533636
+0.130108474363 0.049118838
+0.119202922022 0.05170404
+0.109096821196 0.054289242
+0.0997504891197 0.056874444
+0.0911229610149 0.059459646
+0.0831726964939 0.062044848
+0.0758581800212 0.06463005
+0.0691384203433 0.067215252
+0.062973356057 0.069800454
+0.0573241758989 0.072385656
+0.0521535630784 0.074970858
+0.0474258731776 0.07755606
+0.0431072549411 0.080141262
+0.0391657227968 0.082726464
+0.0355711892726 0.085311666
+0.0322954646985 0.087896868
+0.0293122307514 0.09048207
+0.0265969935769 0.093067272
+0.0241270214177 0.095652474
+0.0218812709361 0.098237676
+0.0198403057341 0.100822878
+0.0179862099621 0.10340808
+0.0163024993714 0.105993282
+0.0147740316933 0.108578484
+0.0133869178277 0.111163686
+0.0121284349843 0.113748888
+0.0109869426306 0.11633409
+0.0099518018669 0.118919292
+0.00901329865285 0.121504494
+0.00816257115316 0.124089696
+0.00739154134428 0.126674898
+0.00669285092428 0.1292601
+0.00605980149158 0.131845302
+0.00548629889945 0.134430504
+0.00496680165006 0.137015706
+0.00449627316094 0.139600908
+0.0040701377159 0.14218611
+0.00368423989944 0.144771312
+0.00333480730741 0.147356514
+0.00301841632471 0.149941716
+0.00273196076301 0.152526918
+0.00247262315663 0.15511212
+0.00223784852128 0.157697322
+0.00202532038905 0.160282524
+0.00183293894249 0.162867726
+0.00165880108017 0.165452928
+0.00150118225674 0.16803813
+0.00135851995043 0.170623332
+0.00122939862128 0.173208534
+0.00111253603286 0.175793736
+0.00100677082009 0.178378938
+0.000911051194401 0.18096414
+0.000824424686398 0.183549342
+0.000746028833837 0.186134544
+0.000675082730633 0.188719746
+0.000610879359434 0.191304948
+0.000552778636924 0.19389015
+0.00050020110708 0.196475352
+0.000452622223241 0.199060554
+0.000409567164986 0.201645756
+0.000370606140626 0.204230958
+0.000335350130466 0.20681616
+0.000303447030029 0.209401362
+0.000274578156101 0.211986564
+0.000248455081839 0.214571766
+0.000224816770233 0.217156968
+0.000203426978055 0.21974217
+0.000184071904963 0.222327372
+0.000166558064777 0.224912574
+0.00015071035806 0.227497776
+0.000136370327079 0.230082978
+0.000123394575986 0.23266818
+0.00011165334063 0.235253382
+0.000101029193908 0.237838584
+9.14158738522e-05 0.240423786
+8.27172228517e-05 0.243008988
+7.48462275106e-05 0.24559419
+6.77241496198e-05 0.248179392
+6.12797396166e-05 0.250764594
+5.54485247228e-05 0.253349796
+5.01721646838e-05 0.255934998
+</xy>
+            </component>
+        </curve>
+        <time>Wed Dec 10 02:54:44 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/tcl/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/tcl/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/tcl/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/wrapper/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/Makefile.in	(revision 6168)
@@ -0,0 +1,48 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+VPATH           = $(srcdir)
+SHELL           = @SHELL@
+RM              = rm -f
+
+.PHONY:	cee python tcl perl
+
+all:	python tcl cee perl
+
+cee:
+	$(MAKE) -C cee all
+perl:
+	$(MAKE) -C perl all
+python:
+	$(MAKE) -C python all
+tcl:
+	$(MAKE) -C tcl all
+
+
+install:
+	$(MAKE) -C cee install
+	$(MAKE) -C perl install
+	$(MAKE) -C python install
+	$(MAKE) -C tcl install
+
+clean:
+	$(MAKE) -C cee clean
+	$(MAKE) -C perl clean
+	$(MAKE) -C python clean
+	$(MAKE) -C tcl clean
+
+distclean:
+	$(MAKE) -C cee distclean
+	$(MAKE) -C perl distclean
+	$(MAKE) -C python distclean
+	$(MAKE) -C tcl distclean
+	$(RM) Makefile
Index: /tags/1.6.0/examples/app-fermi/wrapper/cee/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/cee/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/cee/Makefile.in	(revision 6168)
@@ -0,0 +1,50 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+destdir		= $(prefix)/examples/app-fermi/wrapper/cee
+
+INSTALL         = @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+CC              = @CC@
+CFLAGS		= @CFLAGS@
+CDEBUGFLAGS	= -g -Wall
+VPATH		= $(srcdir)
+
+INCLUDES    	= -I$(srcdir)/../../../../src/core
+LIBS		= -L../../../../src/core -lrappture \
+		  -L$(libdir) -lexpat -lz -lm
+
+CC_SWITCHES 	= $(CFLAGS) $(CDEBUGFLAGS) $(DEFINES) $(INCLUDES)
+
+FILES		= \
+		Makefile \
+		$(srcdir)/fermi.m \
+		$(srcdir)/fermi.c \
+		$(srcdir)/tool.xml 
+
+all: fermi
+
+fermi: fermi.c
+	$(CC) $(CC_SWITCHES) $< -o $@ $(LIBS)
+
+install: fermi
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+	$(INSTALL) -m 0555 fermi $(destdir)
+
+clean:
+	$(RM) fermi run*.xml
+
+distclean: clean
+	$(RM) Makefile
Index: /tags/1.6.0/examples/app-fermi/wrapper/cee/fermi.c
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/cee/fermi.c	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/cee/fermi.c	(revision 6168)
@@ -0,0 +1,122 @@
+/*
+ *----------------------------------------------------------------------
+ * EXAMPLE: Fermi-Dirac function in C.
+ *
+ * This simple example shows how to use Rappture to wrap up a
+ * simulator written in Matlab or some other language.
+ *
+ *======================================================================
+ * AUTHOR:  Derrick Kearney, Purdue University
+ * Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ * See the file "license.terms" for information on usage and
+ * redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *======================================================================
+ */
+
+#include "rappture.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+enum prog_consts { MAXLEN = 1000 };
+
+int main(int argc, char * argv[]) {
+
+    RpLibrary *lib    = NULL;
+
+    double T          = 0.0;
+    double Ef         = 0.0;
+
+    int err           = 0;
+    int skipCnt       = 4;
+
+    FILE *fp          = NULL;
+
+    char *prog        = argv[0]; /* program name for errors */
+    const char *data  = NULL;
+    char line[MAXLEN+1];
+
+    // create a rappture library from the file filePath
+    lib = rpLibrary(argv[1]);
+
+    if (lib == NULL) {
+        // cannot open file or out of memory
+        fprintf(stderr,"%s: FAILED creating Rappture Library\n",prog);
+        exit(1);
+    }
+
+    rpGetString(lib,"input.(temperature).current",&data);
+    T = rpConvertDbl(data, "K", &err);
+    if (err) {
+        fprintf(stderr, "%s: Error retrieving current temperature\n",prog);
+        exit(err);
+    }
+
+    rpGetString(lib,"input.(Ef).current",&data);
+    Ef = rpConvertDbl(data, "eV", &err);
+    if (err) {
+        fprintf(stderr,"%s: Error while retrieving current EF\n",prog);
+        exit(err);
+    }
+
+    fp = fopen("indeck","w");
+    if (fp == NULL) {
+        fprintf(stderr,"%s: Error while writing to indeck",prog);
+        exit(1);
+    }
+
+    fprintf(fp,"%f\n%f",Ef,T);
+    fclose(fp);
+    fp = NULL;
+
+    // run the science program and capture the exit status
+    err = system("octave --silent fermi.m < indeck");
+
+    if (err == 1) {
+        fprintf(stderr,"%s: calling octave science program failed",prog);
+        exit(err);
+    }
+
+    // Label output graph with title, x-axis label,
+    // y-axis label, and y-axis units
+    rpPutString (   lib,
+                    "output.curve(f12).about.label",
+                    "Fermi-Dirac Factor",
+                    RPLIB_OVERWRITE );
+    rpPutString (   lib,
+                    "output.curve(f12).xaxis.label",
+                    "Fermi-Dirac Factor",
+                    RPLIB_OVERWRITE );
+    rpPutString (   lib,
+                    "output.curve(f12).yaxis.label",
+                    "Energy",
+                    RPLIB_OVERWRITE );
+    rpPutString(lib, "output.curve(f12).yaxis.units", "eV", RPLIB_OVERWRITE);
+
+    fp = fopen("out.dat","r");
+    if (fp == NULL) {
+        fprintf(stderr,"%s: Error while writing to out.dat",prog);
+        exit(1);
+    }
+
+    while (skipCnt > 0) {
+        fgets(line,MAXLEN,fp);
+        skipCnt--;
+    }
+
+    // it turns out that the octave script places the x and y values
+    // in the correct format needed by rappture which is the x value
+    // followed by a space followed by the y value and ended with a 
+    // newline character. this allows us to just read each line and
+    // place it into our rappture object at the correct location
+    // output.curve(f12).component.xy
+    while (fgets(line,MAXLEN,fp)) {
+       rpPutString(lib,"output.curve(f12).component.xy",line,RPLIB_APPEND);
+    }
+
+    remove("indeck");
+    remove("out.dat");
+
+    rpResult(lib);
+    exit (0);
+}
Index: /tags/1.6.0/examples/app-fermi/wrapper/cee/fermi.m
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/cee/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/cee/fermi.m	(revision 6168)
@@ -0,0 +1,35 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Matlab.
+%
+%  This script represents a legacy application that will be left
+%  intact, but wrapped with a Rappture interface.
+%
+% ======================================================================
+%  AUTHOR:  Michael McLennan, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+disp('Enter the Fermi level (eV):');
+Ef = input(' Ef = ');
+
+disp('Enter the temperature (K):');
+T = input(' T = ');
+
+kT = 8.61734e-5 * T;
+Emin = Ef - 10*kT;
+Emax = Ef + 10*kT;
+
+E = linspace(Emin,Emax,200);
+f = 1.0 ./ (1.0 + exp((E - Ef)/kT));
+
+fid = fopen('out.dat','w');
+fprintf(fid,'FERMI-DIRAC FUNCTION F1/2\n\n');
+fprintf(fid,'f1/2          Energy (eV)\n');
+fprintf(fid,'------------  ------------\n');
+for j=1:200
+  fprintf(fid,'%12g  %12g\n', f(j), E(j));
+end
+fclose(fid);
Index: /tags/1.6.0/examples/app-fermi/wrapper/cee/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/cee/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/cee/test/defaults.xml	(revision 6168)
@@ -0,0 +1,272 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/fermi @driver</command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <language>c</language>
+                <revision>$LastChangedRevision: 1041 $</revision>
+                <modified>$LastChangedDate: 2008-06-10 20:51:55 -0400 (Tue, 10 Jun 2008) $</modified>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>    0.999955      -0.25852
+     0.99995     -0.255922
+    0.999944     -0.253324
+    0.999939     -0.250726
+    0.999932     -0.248127
+    0.999925     -0.245529
+    0.999917     -0.242931
+    0.999908     -0.240333
+    0.999899     -0.237735
+    0.999888     -0.235136
+    0.999876     -0.232538
+    0.999863      -0.22994
+    0.999848     -0.227342
+    0.999832     -0.224744
+    0.999815     -0.222145
+    0.999795     -0.219547
+    0.999773     -0.216949
+    0.999749     -0.214351
+    0.999723     -0.211753
+    0.999694     -0.209155
+    0.999661     -0.206556
+    0.999625     -0.203958
+    0.999586      -0.20136
+    0.999542     -0.198762
+    0.999494     -0.196164
+     0.99944     -0.193565
+    0.999381     -0.190967
+    0.999316     -0.188369
+    0.999243     -0.185771
+    0.999163     -0.183173
+    0.999075     -0.180574
+    0.998977     -0.177976
+    0.998869     -0.175378
+     0.99875      -0.17278
+    0.998618     -0.170182
+    0.998472     -0.167583
+    0.998311     -0.164985
+    0.998133     -0.162387
+    0.997936     -0.159789
+    0.997718     -0.157191
+    0.997477     -0.154592
+    0.997211     -0.151994
+    0.996917     -0.149396
+    0.996593     -0.146798
+    0.996234       -0.1442
+    0.995837     -0.141602
+    0.995399     -0.139003
+    0.994915     -0.136405
+    0.994381     -0.133807
+     0.99379     -0.131209
+    0.993138     -0.128611
+    0.992418     -0.126012
+    0.991623     -0.123414
+    0.990746     -0.120816
+    0.989777     -0.118218
+    0.988709      -0.11562
+     0.98753     -0.113021
+    0.986229     -0.110423
+    0.984796     -0.107825
+    0.983215     -0.105227
+    0.981473     -0.102629
+    0.979555      -0.10003
+    0.977442    -0.0974322
+    0.975116     -0.094834
+    0.972558    -0.0922359
+    0.969744    -0.0896377
+    0.966652    -0.0870395
+    0.963256    -0.0844413
+    0.959528    -0.0818431
+     0.95544    -0.0792449
+    0.950959    -0.0766467
+    0.946054    -0.0740485
+    0.940689    -0.0714503
+    0.934827    -0.0688521
+     0.92843    -0.0662539
+    0.921457    -0.0636557
+    0.913868    -0.0610575
+    0.905621    -0.0584593
+    0.896674    -0.0558611
+    0.886984     -0.053263
+    0.876511    -0.0506648
+    0.865215    -0.0480666
+    0.853059    -0.0454684
+    0.840009    -0.0428702
+    0.826036     -0.040272
+    0.811117    -0.0376738
+    0.795237    -0.0350756
+    0.778385    -0.0324774
+    0.760565    -0.0298792
+    0.741787     -0.027281
+    0.722074    -0.0246828
+    0.701462    -0.0220846
+    0.679999    -0.0194864
+    0.657746    -0.0168883
+    0.634777    -0.0142901
+    0.611177    -0.0116919
+    0.587044   -0.00909368
+    0.562486   -0.00649548
+    0.537617   -0.00389729
+     0.51256    -0.0012991
+     0.48744     0.0012991
+    0.462383    0.00389729
+    0.437514    0.00649548
+    0.412956    0.00909368
+    0.388823     0.0116919
+    0.365223     0.0142901
+    0.342254     0.0168883
+    0.320001     0.0194864
+    0.298538     0.0220846
+    0.277926     0.0246828
+    0.258213      0.027281
+    0.239435     0.0298792
+    0.221615     0.0324774
+    0.204763     0.0350756
+    0.188883     0.0376738
+    0.173964      0.040272
+    0.159991     0.0428702
+    0.146941     0.0454684
+    0.134785     0.0480666
+    0.123489     0.0506648
+    0.113016      0.053263
+    0.103326     0.0558611
+   0.0943786     0.0584593
+   0.0861317     0.0610575
+   0.0785429     0.0636557
+   0.0715703     0.0662539
+    0.065173     0.0688521
+   0.0593109     0.0714503
+   0.0539457     0.0740485
+   0.0490405     0.0766467
+   0.0445604     0.0792449
+   0.0404721     0.0818431
+   0.0367444     0.0844413
+   0.0333482     0.0870395
+    0.030256     0.0896377
+   0.0274424     0.0922359
+   0.0248838      0.094834
+   0.0225581     0.0974322
+   0.0204453       0.10003
+   0.0185266      0.102629
+   0.0167848      0.105227
+   0.0152043      0.107825
+   0.0137705      0.110423
+   0.0124703      0.113021
+   0.0112914       0.11562
+   0.0102227      0.118218
+  0.00925433      0.120816
+  0.00837687      0.123414
+  0.00758197      0.126012
+  0.00686197      0.128611
+  0.00620993      0.131209
+  0.00561949      0.133807
+   0.0050849      0.136405
+  0.00460093      0.139003
+  0.00416284      0.141602
+   0.0037663        0.1442
+   0.0034074      0.146798
+   0.0030826      0.149396
+  0.00278867      0.151994
+   0.0025227      0.154592
+  0.00228204      0.157191
+  0.00206429      0.159789
+  0.00186727      0.162387
+  0.00168903      0.164985
+  0.00152778      0.167583
+   0.0013819      0.170182
+  0.00124993       0.17278
+  0.00113055      0.175378
+  0.00102256      0.177976
+ 0.000924877      0.180574
+ 0.000836517      0.183173
+ 0.000756592      0.185771
+ 0.000684298      0.188369
+ 0.000618908      0.190967
+ 0.000559763      0.193565
+ 0.000506267      0.196164
+ 0.000457881      0.198762
+ 0.000414118       0.20136
+ 0.000374536      0.203958
+ 0.000338736      0.206556
+ 0.000306357      0.209155
+ 0.000277072      0.211753
+ 0.000250586      0.214351
+ 0.000226631      0.216949
+ 0.000204966      0.219547
+ 0.000185371      0.222145
+  0.00016765      0.224744
+ 0.000151622      0.227342
+ 0.000137126       0.22994
+ 0.000124016      0.232538
+ 0.000112159      0.235136
+ 0.000101436      0.237735
+  9.1738e-05      0.240333
+  8.2967e-05      0.242931
+ 7.50345e-05      0.245529
+ 6.78604e-05      0.248127
+ 6.13722e-05      0.250726
+ 5.55043e-05      0.253324
+ 5.01974e-05      0.255922
+ 4.53979e-05       0.25852
+</xy>
+            </component>
+        </curve>
+        <time>Wed Dec 10 02:59:16 2008 EST</time>
+        <status>0</status>
+        <user>dkearney</user>
+        <host></host>
+    </output>
+</run>
Index: /tags/1.6.0/examples/app-fermi/wrapper/cee/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/cee/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/cee/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/fermi @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/wrapper/perl/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/perl/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/perl/Makefile.in	(revision 6168)
@@ -0,0 +1,32 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+destdir         = $(prefix)/examples/app-fermi/wrapper/perl
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+FILES = \
+		$(srcdir)/fermi.pl \
+		$(srcdir)/fermi.m \
+		$(srcdir)/tool.xml
+all: 
+
+install:
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile
Index: /tags/1.6.0/examples/app-fermi/wrapper/perl/fermi.m
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/perl/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/perl/fermi.m	(revision 6168)
@@ -0,0 +1,35 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Matlab.
+%
+%  This script represents a legacy application that will be left
+%  intact, but wrapped with a Rappture interface.
+%
+% ======================================================================
+%  AUTHOR:  Michael McLennan, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+disp('Enter the Fermi level (eV):');
+Ef = input(' Ef = ');
+
+disp('Enter the temperature (K):');
+T = input(' T = ');
+
+kT = 8.61734e-5 * T;
+Emin = Ef - 10*kT;
+Emax = Ef + 10*kT;
+
+E = linspace(Emin,Emax,200);
+f = 1.0 ./ (1.0 + exp((E - Ef)/kT));
+
+fid = fopen('out.dat','w');
+fprintf(fid,'FERMI-DIRAC FUNCTION F1/2\n\n');
+fprintf(fid,'f1/2          Energy (eV)\n');
+fprintf(fid,'------------  ------------\n');
+for j=1:200
+  fprintf(fid,'%12g  %12g\n', f(j), E(j));
+end
+fclose(fid);
Index: /tags/1.6.0/examples/app-fermi/wrapper/perl/fermi.pl
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/perl/fermi.pl	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/perl/fermi.pl	(revision 6168)
@@ -0,0 +1,64 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Perl.
+#         
+#  This simple example shows how to use Rappture within a simulator
+#  written in Perl.
+# ======================================================================
+#  AUTHOR:  Nicholas J. Kisseberth, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+use Rappture;
+
+# open the XML file containing the run parameters
+
+$driver = Rappture::RpLibrary->new($ARGV[0]);
+
+$Tstr = $driver->get("input.(temperature).current");
+$T = Rappture::RpUnits::convert($Tstr, "K", "off");
+
+$Efstr = $driver->get("input.(Ef).current");
+$Ef = Rappture::RpUnits::convert($Efstr, "eV", "off");
+
+open FILE, ">indeck" or die $!;
+print FILE "$Ef\n";
+print FILE "$T\n";
+close FILE;
+
+# $result = `octave --silent fermi.m < indeck 2>&1`;
+$result = `octave --silent fermi.m < indeck`;
+
+$driver->put("output.log",$result,0);
+
+if (length($result) > 0) {
+    open FILE, "<out.dat" or die $!;
+    my @lines = <FILE>;
+    close FILE;
+
+
+    # Label the output graph with a title, x-axis label,
+    # y-axis label, y-axis units.
+
+    $driver->put("output.curve(f12).about.label","Fermi-Dirac Factor",0);
+    $driver->put("output.curve(f12).xaxis.label","Fermi-Dirac Factor",0);
+    $driver->put("output.curve(f12).yaxis.label","Energy",0);
+    $driver->put("output.curve(f12).yaxis.units","eV",0);
+
+    # skip over the first 4 header lines
+    split(@lines,0,4);
+    # search each line for 2 floating point numbers
+    foreach $line (@lines) {
+        if ($line =~ /(?<f>[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)\s+(?<E>[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)/) {
+            $driver->put("output.curve(f12).component.xy", "$+{f} $+{E}\n", 1);
+        }
+    }
+
+}
+
+unlink("indeck");
+unlink("out.dat");
+
+$driver->result();
Index: /tags/1.6.0/examples/app-fermi/wrapper/perl/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/perl/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/perl/test/defaults.xml	(revision 6168)
@@ -0,0 +1,278 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>perl @tool/fermi.pl @driver</command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <log>Enter the Fermi level (eV):
+ Ef = 0
+Enter the temperature (K):
+ T = 300
+=RAPPTURE-ERROR=&gt;warning: fopen: default open mode is now binary
+=RAPPTURE-ERROR=&gt;
+</log>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.99995 -0.255922
+0.999944 -0.253324
+0.999939 -0.250726
+0.999932 -0.248127
+0.999925 -0.245529
+0.999917 -0.242931
+0.999908 -0.240333
+0.999899 -0.237735
+0.999888 -0.235136
+0.999876 -0.232538
+0.999863 -0.22994
+0.999848 -0.227342
+0.999832 -0.224744
+0.999815 -0.222145
+0.999795 -0.219547
+0.999773 -0.216949
+0.999749 -0.214351
+0.999723 -0.211753
+0.999694 -0.209155
+0.999661 -0.206556
+0.999625 -0.203958
+0.999586 -0.20136
+0.999542 -0.198762
+0.999494 -0.196164
+0.99944 -0.193565
+0.999381 -0.190967
+0.999316 -0.188369
+0.999243 -0.185771
+0.999163 -0.183173
+0.999075 -0.180574
+0.998977 -0.177976
+0.998869 -0.175378
+0.99875 -0.17278
+0.998618 -0.170182
+0.998472 -0.167583
+0.998311 -0.164985
+0.998133 -0.162387
+0.997936 -0.159789
+0.997718 -0.157191
+0.997477 -0.154592
+0.997211 -0.151994
+0.996917 -0.149396
+0.996593 -0.146798
+0.996234 -0.1442
+0.995837 -0.141602
+0.995399 -0.139003
+0.994915 -0.136405
+0.994381 -0.133807
+0.99379 -0.131209
+0.993138 -0.128611
+0.992418 -0.126012
+0.991623 -0.123414
+0.990746 -0.120816
+0.989777 -0.118218
+0.988709 -0.11562
+0.98753 -0.113021
+0.986229 -0.110423
+0.984796 -0.107825
+0.983215 -0.105227
+0.981473 -0.102629
+0.979555 -0.10003
+0.977442 -0.0974322
+0.975116 -0.094834
+0.972558 -0.0922359
+0.969744 -0.0896377
+0.966652 -0.0870395
+0.963256 -0.0844413
+0.959528 -0.0818431
+0.95544 -0.0792449
+0.950959 -0.0766467
+0.946054 -0.0740485
+0.940689 -0.0714503
+0.934827 -0.0688521
+0.92843 -0.0662539
+0.921457 -0.0636557
+0.913868 -0.0610575
+0.905621 -0.0584593
+0.896674 -0.0558611
+0.886984 -0.053263
+0.876511 -0.0506648
+0.865215 -0.0480666
+0.853059 -0.0454684
+0.840009 -0.0428702
+0.826036 -0.040272
+0.811117 -0.0376738
+0.795237 -0.0350756
+0.778385 -0.0324774
+0.760565 -0.0298792
+0.741787 -0.027281
+0.722074 -0.0246828
+0.701462 -0.0220846
+0.679999 -0.0194864
+0.657746 -0.0168883
+0.634777 -0.0142901
+0.611177 -0.0116919
+0.587044 -0.00909368
+0.562486 -0.00649548
+0.537617 -0.00389729
+0.51256 -0.0012991
+0.48744 0.0012991
+0.462383 0.00389729
+0.437514 0.00649548
+0.412956 0.00909368
+0.388823 0.0116919
+0.365223 0.0142901
+0.342254 0.0168883
+0.320001 0.0194864
+0.298538 0.0220846
+0.277926 0.0246828
+0.258213 0.027281
+0.239435 0.0298792
+0.221615 0.0324774
+0.204763 0.0350756
+0.188883 0.0376738
+0.173964 0.040272
+0.159991 0.0428702
+0.146941 0.0454684
+0.134785 0.0480666
+0.123489 0.0506648
+0.113016 0.053263
+0.103326 0.0558611
+0.0943786 0.0584593
+0.0861317 0.0610575
+0.0785429 0.0636557
+0.0715703 0.0662539
+0.065173 0.0688521
+0.0593109 0.0714503
+0.0539457 0.0740485
+0.0490405 0.0766467
+0.0445604 0.0792449
+0.0404721 0.0818431
+0.0367444 0.0844413
+0.0333482 0.0870395
+0.030256 0.0896377
+0.0274424 0.0922359
+0.0248838 0.094834
+0.0225581 0.0974322
+0.0204453 0.10003
+0.0185266 0.102629
+0.0167848 0.105227
+0.0152043 0.107825
+0.0137705 0.110423
+0.0124703 0.113021
+0.0112914 0.11562
+0.0102227 0.118218
+0.00925433 0.120816
+0.00837687 0.123414
+0.00758197 0.126012
+0.00686197 0.128611
+0.00620993 0.131209
+0.00561949 0.133807
+0.0050849 0.136405
+0.00460093 0.139003
+0.00416284 0.141602
+0.0037663 0.1442
+0.0034074 0.146798
+0.0030826 0.149396
+0.00278867 0.151994
+0.0025227 0.154592
+0.00228204 0.157191
+0.00206429 0.159789
+0.00186727 0.162387
+0.00168903 0.164985
+0.00152778 0.167583
+0.0013819 0.170182
+0.00124993 0.17278
+0.00113055 0.175378
+0.00102256 0.177976
+0.000924877 0.180574
+0.000836517 0.183173
+0.000756592 0.185771
+0.000684298 0.188369
+0.000618908 0.190967
+0.000559763 0.193565
+0.000506267 0.196164
+0.000457881 0.198762
+0.000414118 0.20136
+0.000374536 0.203958
+0.000338736 0.206556
+0.000306357 0.209155
+0.000277072 0.211753
+0.000250586 0.214351
+0.000226631 0.216949
+0.000204966 0.219547
+0.000185371 0.222145
+0.00016765 0.224744
+0.000151622 0.227342
+0.000137126 0.22994
+0.000124016 0.232538
+0.000112159 0.235136
+0.000101436 0.237735
+9.1738e-05 0.240333
+8.2967e-05 0.242931
+7.50345e-05 0.245529
+6.78604e-05 0.248127
+6.13722e-05 0.250726
+5.55043e-05 0.253324
+5.01974e-05 0.255922
+4.53979e-05 0.25852
+</xy>
+            </component>
+        </curve>
+        <time>Wed Dec 10 03:01:10 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/wrapper/perl/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/perl/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/perl/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>perl @tool/fermi.pl @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/wrapper/python/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/python/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/python/Makefile.in	(revision 6168)
@@ -0,0 +1,32 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+destdir		= $(prefix)/examples/app-fermi/wrapper/python
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+FILES		= \
+		$(srcdir)/fermi.py \
+		$(srcdir)/fermi.m \
+		$(srcdir)/tool.xml
+all: 
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile
Index: /tags/1.6.0/examples/app-fermi/wrapper/python/README
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/python/README	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/python/README	(revision 6168)
@@ -0,0 +1,4 @@
+This example requires that both octave and python have been
+installed on your system.  Only the Rappture API for python
+is used.
+
Index: /tags/1.6.0/examples/app-fermi/wrapper/python/fermi.m
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/python/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/python/fermi.m	(revision 6168)
@@ -0,0 +1,35 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Matlab.
+%
+%  This script represents a legacy application that will be left
+%  intact, but wrapped with a Rappture interface.
+%
+% ======================================================================
+%  AUTHOR:  Michael McLennan, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+disp('Enter the Fermi level (eV):');
+Ef = input(' Ef = ');
+
+disp('Enter the temperature (K):');
+T = input(' T = ');
+
+kT = 8.61734e-5 * T;
+Emin = Ef - 10*kT;
+Emax = Ef + 10*kT;
+
+E = linspace(Emin,Emax,200);
+f = 1.0 ./ (1.0 + exp((E - Ef)/kT));
+
+fid = fopen('out.dat','w');
+fprintf(fid,'FERMI-DIRAC FUNCTION F1/2\n\n');
+fprintf(fid,'f1/2          Energy (eV)\n');
+fprintf(fid,'------------  ------------\n');
+for j=1:200
+  fprintf(fid,'%12g  %12g\n', f(j), E(j));
+end
+fclose(fid);
Index: /tags/1.6.0/examples/app-fermi/wrapper/python/fermi.py
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/python/fermi.py	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/python/fermi.py	(revision 6168)
@@ -0,0 +1,60 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Python.
+#
+#  This simple example shows how to use Rappture to wrap up a
+#  simulator written in Matlab or some other language.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+import Rappture
+import sys, os, commands, string
+
+# open the XML file containing the run parameters
+driver = Rappture.library(sys.argv[1])
+
+Tstr = driver.get('input.(temperature).current')
+T = Rappture.Units.convert(Tstr, to="k", units="off")
+
+Efstr = driver.get('input.(Ef).current')
+Ef = Rappture.Units.convert(Efstr, to="eV", units="off")
+
+fid = open('indeck','w')
+infile = "%(Ef)s\n%(T)s\n" % { 'Ef':Ef, 'T':T }
+fid.write(infile)
+fid.close()
+
+try:
+  out = commands.getoutput('octave --silent fermi.m < indeck')
+except:
+  sys.stderr.write('Error during execution of fermi.m')
+  exit(1);
+
+driver.put('output.log',out)
+
+fid = open('out.dat','r')
+info = fid.readlines()
+fid.close()
+
+# Label output graph with title, x-axis label,
+# y-axis lable, and y-axis units
+driver.put('output.curve(f12).about.label','Fermi-Dirac Factor')
+driver.put('output.curve(f12).xaxis.label','Fermi-Dirac Factor')
+driver.put('output.curve(f12).yaxis.label','Energy')
+driver.put('output.curve(f12).yaxis.units','eV')
+
+# skip over the first 4 header lines
+for line in info[6:]:
+    f,E = string.split(line[:-1])
+    f,E = float(f),float(E)
+    xy = "%g %g\n" % (f,E)
+    driver.put('output.curve(f12).component.xy',xy,append=1)
+
+os.remove('indeck'); os.remove('out.dat')
+
+Rappture.result(driver)
+sys.exit(0)
Index: /tags/1.6.0/examples/app-fermi/wrapper/python/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/python/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/python/test/defaults.xml	(revision 6168)
@@ -0,0 +1,269 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>python @tool/fermi.py @driver</command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <language>python</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <log>Enter the Fermi level (eV):
+ Ef = 0.0
+Enter the temperature (K):
+ T = 300.0
+warning: fopen: default open mode is now binary</log>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999944 -0.253324
+0.999939 -0.250726
+0.999932 -0.248127
+0.999925 -0.245529
+0.999917 -0.242931
+0.999908 -0.240333
+0.999899 -0.237735
+0.999888 -0.235136
+0.999876 -0.232538
+0.999863 -0.22994
+0.999848 -0.227342
+0.999832 -0.224744
+0.999815 -0.222145
+0.999795 -0.219547
+0.999773 -0.216949
+0.999749 -0.214351
+0.999723 -0.211753
+0.999694 -0.209155
+0.999661 -0.206556
+0.999625 -0.203958
+0.999586 -0.20136
+0.999542 -0.198762
+0.999494 -0.196164
+0.99944 -0.193565
+0.999381 -0.190967
+0.999316 -0.188369
+0.999243 -0.185771
+0.999163 -0.183173
+0.999075 -0.180574
+0.998977 -0.177976
+0.998869 -0.175378
+0.99875 -0.17278
+0.998618 -0.170182
+0.998472 -0.167583
+0.998311 -0.164985
+0.998133 -0.162387
+0.997936 -0.159789
+0.997718 -0.157191
+0.997477 -0.154592
+0.997211 -0.151994
+0.996917 -0.149396
+0.996593 -0.146798
+0.996234 -0.1442
+0.995837 -0.141602
+0.995399 -0.139003
+0.994915 -0.136405
+0.994381 -0.133807
+0.99379 -0.131209
+0.993138 -0.128611
+0.992418 -0.126012
+0.991623 -0.123414
+0.990746 -0.120816
+0.989777 -0.118218
+0.988709 -0.11562
+0.98753 -0.113021
+0.986229 -0.110423
+0.984796 -0.107825
+0.983215 -0.105227
+0.981473 -0.102629
+0.979555 -0.10003
+0.977442 -0.0974322
+0.975116 -0.094834
+0.972558 -0.0922359
+0.969744 -0.0896377
+0.966652 -0.0870395
+0.963256 -0.0844413
+0.959528 -0.0818431
+0.95544 -0.0792449
+0.950959 -0.0766467
+0.946054 -0.0740485
+0.940689 -0.0714503
+0.934827 -0.0688521
+0.92843 -0.0662539
+0.921457 -0.0636557
+0.913868 -0.0610575
+0.905621 -0.0584593
+0.896674 -0.0558611
+0.886984 -0.053263
+0.876511 -0.0506648
+0.865215 -0.0480666
+0.853059 -0.0454684
+0.840009 -0.0428702
+0.826036 -0.040272
+0.811117 -0.0376738
+0.795237 -0.0350756
+0.778385 -0.0324774
+0.760565 -0.0298792
+0.741787 -0.027281
+0.722074 -0.0246828
+0.701462 -0.0220846
+0.679999 -0.0194864
+0.657746 -0.0168883
+0.634777 -0.0142901
+0.611177 -0.0116919
+0.587044 -0.00909368
+0.562486 -0.00649548
+0.537617 -0.00389729
+0.51256 -0.0012991
+0.48744 0.0012991
+0.462383 0.00389729
+0.437514 0.00649548
+0.412956 0.00909368
+0.388823 0.0116919
+0.365223 0.0142901
+0.342254 0.0168883
+0.320001 0.0194864
+0.298538 0.0220846
+0.277926 0.0246828
+0.258213 0.027281
+0.239435 0.0298792
+0.221615 0.0324774
+0.204763 0.0350756
+0.188883 0.0376738
+0.173964 0.040272
+0.159991 0.0428702
+0.146941 0.0454684
+0.134785 0.0480666
+0.123489 0.0506648
+0.113016 0.053263
+0.103326 0.0558611
+0.0943786 0.0584593
+0.0861317 0.0610575
+0.0785429 0.0636557
+0.0715703 0.0662539
+0.065173 0.0688521
+0.0593109 0.0714503
+0.0539457 0.0740485
+0.0490405 0.0766467
+0.0445604 0.0792449
+0.0404721 0.0818431
+0.0367444 0.0844413
+0.0333482 0.0870395
+0.030256 0.0896377
+0.0274424 0.0922359
+0.0248838 0.094834
+0.0225581 0.0974322
+0.0204453 0.10003
+0.0185266 0.102629
+0.0167848 0.105227
+0.0152043 0.107825
+0.0137705 0.110423
+0.0124703 0.113021
+0.0112914 0.11562
+0.0102227 0.118218
+0.00925433 0.120816
+0.00837687 0.123414
+0.00758197 0.126012
+0.00686197 0.128611
+0.00620993 0.131209
+0.00561949 0.133807
+0.0050849 0.136405
+0.00460093 0.139003
+0.00416284 0.141602
+0.0037663 0.1442
+0.0034074 0.146798
+0.0030826 0.149396
+0.00278867 0.151994
+0.0025227 0.154592
+0.00228204 0.157191
+0.00206429 0.159789
+0.00186727 0.162387
+0.00168903 0.164985
+0.00152778 0.167583
+0.0013819 0.170182
+0.00124993 0.17278
+0.00113055 0.175378
+0.00102256 0.177976
+0.000924877 0.180574
+0.000836517 0.183173
+0.000756592 0.185771
+0.000684298 0.188369
+0.000618908 0.190967
+0.000559763 0.193565
+0.000506267 0.196164
+0.000457881 0.198762
+0.000414118 0.20136
+0.000374536 0.203958
+0.000338736 0.206556
+0.000306357 0.209155
+0.000277072 0.211753
+0.000250586 0.214351
+0.000226631 0.216949
+0.000204966 0.219547
+0.000185371 0.222145
+0.00016765 0.224744
+0.000151622 0.227342
+0.000137126 0.22994
+0.000124016 0.232538
+0.000112159 0.235136
+0.000101436 0.237735
+9.1738e-05 0.240333
+8.2967e-05 0.242931
+7.50345e-05 0.245529
+6.78604e-05 0.248127
+6.13722e-05 0.250726
+5.55043e-05 0.253324
+5.01974e-05 0.255922
+4.53979e-05 0.25852
+</xy>
+            </component>
+        </curve>
+    </output>
+</run>
Index: /tags/1.6.0/examples/app-fermi/wrapper/python/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/python/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/python/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>python @tool/fermi.py @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/wrapper/tcl/Makefile.in
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/tcl/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/tcl/Makefile.in	(revision 6168)
@@ -0,0 +1,32 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+destdir		= $(prefix)/examples/app-fermi/wrapper/tcl
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+FILES		= \
+		$(srcdir)/fermi.tcl \
+		$(srcdir)/fermi.m \
+		$(srcdir)/tool.xml
+all: 
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile
Index: /tags/1.6.0/examples/app-fermi/wrapper/tcl/fermi.m
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/tcl/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/tcl/fermi.m	(revision 6168)
@@ -0,0 +1,35 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Matlab.
+%
+%  This script represents a legacy application that will be left
+%  intact, but wrapped with a Rappture interface.
+%
+% ======================================================================
+%  AUTHOR:  Michael McLennan, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+disp('Enter the Fermi level (eV):');
+Ef = input(' Ef = ');
+
+disp('Enter the temperature (K):');
+T = input(' T = ');
+
+kT = 8.61734e-5 * T;
+Emin = Ef - 10*kT;
+Emax = Ef + 10*kT;
+
+E = linspace(Emin,Emax,200);
+f = 1.0 ./ (1.0 + exp((E - Ef)/kT));
+
+fid = fopen('out.dat','w');
+fprintf(fid,'FERMI-DIRAC FUNCTION F1/2\n\n');
+fprintf(fid,'f1/2          Energy (eV)\n');
+fprintf(fid,'------------  ------------\n');
+for j=1:200
+  fprintf(fid,'%12g  %12g\n', f(j), E(j));
+end
+fclose(fid);
Index: /tags/1.6.0/examples/app-fermi/wrapper/tcl/fermi.tcl
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/tcl/fermi.tcl	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/tcl/fermi.tcl	(revision 6168)
@@ -0,0 +1,56 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Tcl.
+#
+#  This simple example shows how to use Rappture to wrap up a
+#  simulator written in Matlab or some other language.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set Ef [$driver get input.(Ef).current]
+set Ef [Rappture::Units::convert $Ef -to eV -units off]
+set T [$driver get input.(temperature).current]
+set T [Rappture::Units::convert $T -to K -units off]
+
+set fid [open "indeck" w]
+puts $fid $Ef
+puts $fid $T
+close $fid
+
+set status [catch {Rappture::exec octave --silent fermi.m < indeck} out]
+$driver put output.log $out
+
+if {$status == 0} {
+    set fid [open out.dat r]
+    set info [read $fid]
+    close $fid
+
+    # Label output graph with title, x-axis label,
+    # y-axis lable, and y-axis units
+    $driver put -append no output.curve(f12).about.label "Fermi-Dirac Factor"
+    $driver put -append no output.curve(f12).xaxis.label "Fermi-Dirac Factor"
+    $driver put -append no output.curve(f12).yaxis.label "Energy"
+    $driver put -append no output.curve(f12).yaxis.units "eV"
+
+    # skip over the first 4 header lines
+    foreach line [lrange [split $info \n] 5 end] {
+        if {[scan $line {%g %g} f E] == 2} {
+            $driver put -append yes output.curve(f12).component.xy "$f $E\n"
+        }
+    }
+}
+
+file delete -force indeck out.dat
+
+# save the updated XML describing the run...
+Rappture::result $driver $status
+exit 0
Index: /tags/1.6.0/examples/app-fermi/wrapper/tcl/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/tcl/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/tcl/test/defaults.xml	(revision 6168)
@@ -0,0 +1,278 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <log>Enter the Fermi level (eV):
+ Ef = 0
+Enter the temperature (K):
+ T = 300
+=RAPPTURE-ERROR=&gt;warning: fopen: default open mode is now binary
+=RAPPTURE-ERROR=&gt;
+</log>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.99995 -0.255922
+0.999944 -0.253324
+0.999939 -0.250726
+0.999932 -0.248127
+0.999925 -0.245529
+0.999917 -0.242931
+0.999908 -0.240333
+0.999899 -0.237735
+0.999888 -0.235136
+0.999876 -0.232538
+0.999863 -0.22994
+0.999848 -0.227342
+0.999832 -0.224744
+0.999815 -0.222145
+0.999795 -0.219547
+0.999773 -0.216949
+0.999749 -0.214351
+0.999723 -0.211753
+0.999694 -0.209155
+0.999661 -0.206556
+0.999625 -0.203958
+0.999586 -0.20136
+0.999542 -0.198762
+0.999494 -0.196164
+0.99944 -0.193565
+0.999381 -0.190967
+0.999316 -0.188369
+0.999243 -0.185771
+0.999163 -0.183173
+0.999075 -0.180574
+0.998977 -0.177976
+0.998869 -0.175378
+0.99875 -0.17278
+0.998618 -0.170182
+0.998472 -0.167583
+0.998311 -0.164985
+0.998133 -0.162387
+0.997936 -0.159789
+0.997718 -0.157191
+0.997477 -0.154592
+0.997211 -0.151994
+0.996917 -0.149396
+0.996593 -0.146798
+0.996234 -0.1442
+0.995837 -0.141602
+0.995399 -0.139003
+0.994915 -0.136405
+0.994381 -0.133807
+0.99379 -0.131209
+0.993138 -0.128611
+0.992418 -0.126012
+0.991623 -0.123414
+0.990746 -0.120816
+0.989777 -0.118218
+0.988709 -0.11562
+0.98753 -0.113021
+0.986229 -0.110423
+0.984796 -0.107825
+0.983215 -0.105227
+0.981473 -0.102629
+0.979555 -0.10003
+0.977442 -0.0974322
+0.975116 -0.094834
+0.972558 -0.0922359
+0.969744 -0.0896377
+0.966652 -0.0870395
+0.963256 -0.0844413
+0.959528 -0.0818431
+0.95544 -0.0792449
+0.950959 -0.0766467
+0.946054 -0.0740485
+0.940689 -0.0714503
+0.934827 -0.0688521
+0.92843 -0.0662539
+0.921457 -0.0636557
+0.913868 -0.0610575
+0.905621 -0.0584593
+0.896674 -0.0558611
+0.886984 -0.053263
+0.876511 -0.0506648
+0.865215 -0.0480666
+0.853059 -0.0454684
+0.840009 -0.0428702
+0.826036 -0.040272
+0.811117 -0.0376738
+0.795237 -0.0350756
+0.778385 -0.0324774
+0.760565 -0.0298792
+0.741787 -0.027281
+0.722074 -0.0246828
+0.701462 -0.0220846
+0.679999 -0.0194864
+0.657746 -0.0168883
+0.634777 -0.0142901
+0.611177 -0.0116919
+0.587044 -0.00909368
+0.562486 -0.00649548
+0.537617 -0.00389729
+0.51256 -0.0012991
+0.48744 0.0012991
+0.462383 0.00389729
+0.437514 0.00649548
+0.412956 0.00909368
+0.388823 0.0116919
+0.365223 0.0142901
+0.342254 0.0168883
+0.320001 0.0194864
+0.298538 0.0220846
+0.277926 0.0246828
+0.258213 0.027281
+0.239435 0.0298792
+0.221615 0.0324774
+0.204763 0.0350756
+0.188883 0.0376738
+0.173964 0.040272
+0.159991 0.0428702
+0.146941 0.0454684
+0.134785 0.0480666
+0.123489 0.0506648
+0.113016 0.053263
+0.103326 0.0558611
+0.0943786 0.0584593
+0.0861317 0.0610575
+0.0785429 0.0636557
+0.0715703 0.0662539
+0.065173 0.0688521
+0.0593109 0.0714503
+0.0539457 0.0740485
+0.0490405 0.0766467
+0.0445604 0.0792449
+0.0404721 0.0818431
+0.0367444 0.0844413
+0.0333482 0.0870395
+0.030256 0.0896377
+0.0274424 0.0922359
+0.0248838 0.094834
+0.0225581 0.0974322
+0.0204453 0.10003
+0.0185266 0.102629
+0.0167848 0.105227
+0.0152043 0.107825
+0.0137705 0.110423
+0.0124703 0.113021
+0.0112914 0.11562
+0.0102227 0.118218
+0.00925433 0.120816
+0.00837687 0.123414
+0.00758197 0.126012
+0.00686197 0.128611
+0.00620993 0.131209
+0.00561949 0.133807
+0.0050849 0.136405
+0.00460093 0.139003
+0.00416284 0.141602
+0.0037663 0.1442
+0.0034074 0.146798
+0.0030826 0.149396
+0.00278867 0.151994
+0.0025227 0.154592
+0.00228204 0.157191
+0.00206429 0.159789
+0.00186727 0.162387
+0.00168903 0.164985
+0.00152778 0.167583
+0.0013819 0.170182
+0.00124993 0.17278
+0.00113055 0.175378
+0.00102256 0.177976
+0.000924877 0.180574
+0.000836517 0.183173
+0.000756592 0.185771
+0.000684298 0.188369
+0.000618908 0.190967
+0.000559763 0.193565
+0.000506267 0.196164
+0.000457881 0.198762
+0.000414118 0.20136
+0.000374536 0.203958
+0.000338736 0.206556
+0.000306357 0.209155
+0.000277072 0.211753
+0.000250586 0.214351
+0.000226631 0.216949
+0.000204966 0.219547
+0.000185371 0.222145
+0.00016765 0.224744
+0.000151622 0.227342
+0.000137126 0.22994
+0.000124016 0.232538
+0.000112159 0.235136
+0.000101436 0.237735
+9.1738e-05 0.240333
+8.2967e-05 0.242931
+7.50345e-05 0.245529
+6.78604e-05 0.248127
+6.13722e-05 0.250726
+5.55043e-05 0.253324
+5.01974e-05 0.255922
+4.53979e-05 0.25852
+</xy>
+            </component>
+        </curve>
+        <time>Wed Dec 10 03:01:10 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/app-fermi/wrapper/tcl/tool.xml
===================================================================
--- /tags/1.6.0/examples/app-fermi/wrapper/tcl/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/app-fermi/wrapper/tcl/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/c-example/Makefile.in
===================================================================
--- /tags/1.6.0/examples/c-example/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/c-example/Makefile.in	(revision 6168)
@@ -0,0 +1,76 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+CC              = @CC@
+CFLAGS		= @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS	= @CFLAGS@
+DEFINES		= -g -Wall
+INCLUDES	= -I$(srcdir)/../../src/core \
+		  -I$(includedir)
+LIBS		= \
+		-L../../src/core -lrappture \
+		-L$(libdir) -lexpat -lz -lm
+VPATH		= $(srcdir)
+
+CXX_SWITCHES	= $(CXXFLAGS) $(INCLUDES) $(DEFINES)	
+CC_SWITCHES	= $(CFLAGS) $(INCLUDES) $(DEFINES)	
+
+FILES		= \
+		$(srcdir)/README \
+		$(srcdir)/compress.c \
+		$(srcdir)/compress.cc \
+		$(srcdir)/output.dx \
+		$(srcdir)/plot.cc \
+		$(srcdir)/plotc.c \
+		$(srcdir)/tool.xml \
+		$(srcdir)/tool2.xml \
+		Makefile 
+
+destdir		= $(prefix)/examples/c-example
+
+
+PROGS		= \
+		compress \
+		compressc \
+		plot \
+		plotc \
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+compress: $(srcdir)/compress.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+compressc: $(srcdir)/compress.c
+	$(CC) $(CC_SWITCHES) -o $@ $< $(LIBS)
+plot: $(srcdir)/plot.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+plotc: $(srcdir)/plotc.c
+	$(CC) $(CC_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS) run*.xml
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/c-example/README
===================================================================
--- /tags/1.6.0/examples/c-example/README	(revision 6168)
+++ /tags/1.6.0/examples/c-example/README	(revision 6168)
@@ -0,0 +1,11 @@
+To build the programs "plot" and "plotc" in this directory, type:
+	% make
+To build the progrma "plot" in this directory, type:
+	% make plot
+To build the progrma "plot" in this directory, type:
+	% make plotc
+
+To run plot, type:
+    % driver &
+To run plotc, type:
+    % driver -tool tool2.xml &
Index: /tags/1.6.0/examples/c-example/compress.c
===================================================================
--- /tags/1.6.0/examples/c-example/compress.c	(revision 6168)
+++ /tags/1.6.0/examples/c-example/compress.c	(revision 6168)
@@ -0,0 +1,55 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "rappture.h"
+
+#include <stdio.h>
+
+int main(int argc, char * argv[])
+{
+
+    RpLibrary* lib = NULL;
+    RapptureBuffer buf;
+
+    const char* xmlFilePath = NULL;
+    const char* dxFilePath = NULL;
+
+    if (argc < 3) {
+        printf("usage: %s driver.xml picture.dx\n", argv[0]);
+    }
+
+    xmlFilePath = argv[1];
+    dxFilePath = argv[2];
+
+    /* create a rappture library from the file filePath */
+    lib = rpLibrary(xmlFilePath);
+
+    if (lib == NULL) {
+        /* cannot open file or out of memory */
+        printf("FAILED creating Rappture Library\n");
+        return 1;
+    }
+
+    /* label the graph with a title */
+    rpPutString(lib,"output.field(dxFile1).about.label",
+        "Example loading of a DX file",RPLIB_OVERWRITE);
+    rpPutFile(lib,"output.field(dxFile1).component.dx",
+        dxFilePath,RPLIB_COMPRESS,RPLIB_OVERWRITE);
+
+    RapptureBufferInit(&buf);
+    rpGetData(lib,"output.field(dxFile1).component.dx",&buf);
+    RapptureBufferDecode(&buf,1,1);
+    RapptureBufferDump(&buf,"bufferDump.txt");
+    RapptureBufferFree(&buf);
+
+    /* write output to run file and signal */
+    rpResult(lib);
+
+    rpFreeLibrary(&lib);
+
+    return 0;
+}
Index: /tags/1.6.0/examples/c-example/compress.cc
===================================================================
--- /tags/1.6.0/examples/c-example/compress.cc	(revision 6168)
+++ /tags/1.6.0/examples/c-example/compress.cc	(revision 6168)
@@ -0,0 +1,48 @@
+// ======================================================================
+//  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+//  See the file "license.terms" for information on usage and
+//  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+// ======================================================================
+
+#include "rappture.h"
+
+#include <stdlib.h>
+#include <iostream>
+
+int main(int argc, char * argv[])
+{
+
+    RpLibrary* lib = NULL;
+
+    std::string xmlFilePath = "";
+    std::string dxFilePath = "";
+
+    if (argc < 3) {
+        std::cout << "usage: " << argv[0] << " driver.xml picture.dx" << std::endl;
+    }
+
+    xmlFilePath = std::string(argv[1]);
+    dxFilePath = std::string(argv[2]);
+
+    // create a rappture library from the file filePath
+    lib = new RpLibrary(xmlFilePath);
+
+    if (lib == NULL) {
+        // cannot open file or out of memory
+        std::cout << "FAILED creating Rappture Library" << std::endl;
+        exit(1);
+    }
+
+    // label the graph with a title
+    lib->put("output.field(dxFile1).about.label",
+        "Example loading of a DX file","",RPLIB_OVERWRITE);
+    lib->putFile("output.field(dxFile1).component.dx",
+        dxFilePath,RPLIB_COMPRESS,RPLIB_OVERWRITE);
+
+
+    // write output to run file and signal
+    lib->result();
+    delete lib;
+
+    return 0;
+}
Index: /tags/1.6.0/examples/c-example/output.dx
===================================================================
--- /tags/1.6.0/examples/c-example/output.dx	(revision 6168)
+++ /tags/1.6.0/examples/c-example/output.dx	(revision 6168)
@@ -0,0 +1,84116 @@
+ #### Electron density
+ object 1 class array type float rank 1 shape 3 items          642  data follows
+  2.500000000000000E-009  0.000000000000000E+000  0.0000000E+00
+  2.462019000000000E-009  4.341200000000000E-010  0.0000000E+00
+  2.349232000000000E-009  8.550500000000001E-010  0.0000000E+00
+  2.165064000000000E-009  1.250000000000000E-009  0.0000000E+00
+  1.915111000000000E-009  1.606969000000000E-009  0.0000000E+00
+  1.606969000000000E-009  1.915111000000000E-009  0.0000000E+00
+  1.250000000000000E-009  2.165064000000000E-009  0.0000000E+00
+  8.550500000000001E-010  2.349232000000000E-009  0.0000000E+00
+  4.341200000000000E-010  2.462019000000000E-009  0.0000000E+00
+  0.000000000000000E+000  2.500000000000000E-009  0.0000000E+00
+ -4.341200000000000E-010  2.462019000000000E-009  0.0000000E+00
+ -8.550500000000001E-010  2.349232000000000E-009  0.0000000E+00
+ -1.250000000000000E-009  2.165064000000000E-009  0.0000000E+00
+ -1.606969000000000E-009  1.915111000000000E-009  0.0000000E+00
+ -1.915111000000000E-009  1.606969000000000E-009  0.0000000E+00
+ -2.165064000000000E-009  1.250000000000000E-009  0.0000000E+00
+ -2.349232000000000E-009  8.550500000000001E-010  0.0000000E+00
+ -2.462019000000000E-009  4.341200000000000E-010  0.0000000E+00
+ -2.500000000000000E-009  0.000000000000000E+000  0.0000000E+00
+ -2.462019000000000E-009 -4.341200000000000E-010  0.0000000E+00
+ -2.349232000000000E-009 -8.550500000000001E-010  0.0000000E+00
+ -2.165064000000000E-009 -1.250000000000000E-009  0.0000000E+00
+ -1.915111000000000E-009 -1.606969000000000E-009  0.0000000E+00
+ -1.606969000000000E-009 -1.915111000000000E-009  0.0000000E+00
+ -1.250000000000000E-009 -2.165064000000000E-009  0.0000000E+00
+ -8.550500000000001E-010 -2.349232000000000E-009  0.0000000E+00
+ -4.341200000000000E-010 -2.462019000000000E-009  0.0000000E+00
+  0.000000000000000E+000 -2.500000000000000E-009  0.0000000E+00
+  4.341200000000000E-010 -2.462019000000000E-009  0.0000000E+00
+  8.550500000000001E-010 -2.349232000000000E-009  0.0000000E+00
+  1.250000000000000E-009 -2.165064000000000E-009  0.0000000E+00
+  1.606969000000000E-009 -1.915111000000000E-009  0.0000000E+00
+  1.915111000000000E-009 -1.606969000000000E-009  0.0000000E+00
+  2.165064000000000E-009 -1.250000000000000E-009  0.0000000E+00
+  2.349232000000000E-009 -8.550500000000001E-010  0.0000000E+00
+  2.462019000000000E-009 -4.341200000000000E-010  0.0000000E+00
+  3.500000000000000E-009  0.000000000000000E+000  0.0000000E+00
+  3.446827000000000E-009  6.077690000000001E-010  0.0000000E+00
+  3.288924000000000E-009  1.197071000000000E-009  0.0000000E+00
+  3.031089000000000E-009  1.750000000000000E-009  0.0000000E+00
+  2.681156000000000E-009  2.249757000000000E-009  0.0000000E+00
+  2.249757000000000E-009  2.681156000000000E-009  0.0000000E+00
+  1.750000000000000E-009  3.031089000000000E-009  0.0000000E+00
+  1.197071000000000E-009  3.288924000000000E-009  0.0000000E+00
+  6.077690000000001E-010  3.446827000000000E-009  0.0000000E+00
+  0.000000000000000E+000  3.500000000000000E-009  0.0000000E+00
+ -6.077690000000001E-010  3.446827000000000E-009  0.0000000E+00
+ -1.197071000000000E-009  3.288924000000000E-009  0.0000000E+00
+ -1.750000000000000E-009  3.031089000000000E-009  0.0000000E+00
+ -2.249757000000000E-009  2.681156000000000E-009  0.0000000E+00
+ -2.681156000000000E-009  2.249757000000000E-009  0.0000000E+00
+ -3.031089000000000E-009  1.750000000000000E-009  0.0000000E+00
+ -3.288924000000000E-009  1.197071000000000E-009  0.0000000E+00
+ -3.446827000000000E-009  6.077690000000001E-010  0.0000000E+00
+ -3.500000000000000E-009  0.000000000000000E+000  0.0000000E+00
+ -3.446827000000000E-009 -6.077690000000001E-010  0.0000000E+00
+ -3.288924000000000E-009 -1.197071000000000E-009  0.0000000E+00
+ -3.031089000000000E-009 -1.750000000000000E-009  0.0000000E+00
+ -2.681156000000000E-009 -2.249757000000000E-009  0.0000000E+00
+ -2.249757000000000E-009 -2.681156000000000E-009  0.0000000E+00
+ -1.750000000000000E-009 -3.031089000000000E-009  0.0000000E+00
+ -1.197071000000000E-009 -3.288924000000000E-009  0.0000000E+00
+ -6.077690000000001E-010 -3.446827000000000E-009  0.0000000E+00
+  0.000000000000000E+000 -3.500000000000000E-009  0.0000000E+00
+  6.077690000000001E-010 -3.446827000000000E-009  0.0000000E+00
+  1.197071000000000E-009 -3.288924000000000E-009  0.0000000E+00
+  1.750000000000000E-009 -3.031089000000000E-009  0.0000000E+00
+  2.249757000000000E-009 -2.681156000000000E-009  0.0000000E+00
+  2.681156000000000E-009 -2.249757000000000E-009  0.0000000E+00
+  3.031089000000000E-009 -1.750000000000000E-009  0.0000000E+00
+  3.288924000000000E-009 -1.197071000000000E-009  0.0000000E+00
+  3.446827000000000E-009 -6.077690000000001E-010  0.0000000E+00
+ -2.129423624412191E-009 -2.129423624412191E-009  0.0000000E+00
+ -1.557010603436569E-009 -7.260459417640359E-010  0.0000000E+00
+ -2.908846310834601E-009 -7.794215894367284E-010  0.0000000E+00
+ -7.794215894367285E-010 -2.908846310834601E-009  0.0000000E+00
+ -2.999999888646066E-009  2.624662792572702E-010  0.0000000E+00
+ -2.729309304982728E-009  1.272697181835825E-009  0.0000000E+00
+ -2.129423624412191E-009  2.129423624412191E-009  0.0000000E+00
+ -7.794215894367284E-010  2.908846310834601E-009  0.0000000E+00
+  7.794215894367284E-010 -2.908846310834601E-009  0.0000000E+00
+  2.129423624412191E-009 -2.129423624412191E-009  0.0000000E+00
+  2.729309304982728E-009 -1.272697181835825E-009  0.0000000E+00
+  2.999999888646066E-009 -2.624662792572700E-010  0.0000000E+00
+  7.794215894367285E-010  2.908846310834601E-009  0.0000000E+00
+  1.727302716400550E-009  2.466843089611999E-009  0.0000000E+00
+  2.908846310834601E-009  7.794215894367284E-010  0.0000000E+00
+  2.466843089611999E-009  1.727302716400550E-009  0.0000000E+00
+ -1.701150558530292E-009 -2.429494029417529E-009  0.0000000E+00
+ -1.761040000000000E-009 -1.761040000000000E-009  0.0000000E+00
+ -2.022267312206096E-009 -1.868196312206095E-009  0.0000000E+00
+ -1.410879120012852E-009 -1.564950120012851E-009  0.0000000E+00
+ -1.824428843093584E-009 -1.978499843093585E-009  0.0000000E+00
+ -1.668920809985066E-009 -1.514849809985066E-009  0.0000000E+00
+ -1.558305810013546E-009 -1.712376810013546E-009  0.0000000E+00
+ -1.428484500000000E-009 -2.040087500000001E-009  0.0000000E+00
+ -1.316929825962021E-009 -1.806326104064376E-009  0.0000000E+00
+ -1.651170183349515E-009 -2.168175754220165E-009  0.0000000E+00
+ -1.449856513014993E-009 -2.260548900369067E-009  0.0000000E+00
+ -1.188957647368401E-009 -2.549729089430030E-009  0.0000000E+00
+ -2.292075203624704E-009 -1.604928623955037E-009  0.0000000E+00
+ -1.462602706911496E-009 -1.141780370608310E-009  0.0000000E+00
+ -2.040087500000001E-009 -1.428484500000000E-009  0.0000000E+00
+ -1.822013821173008E-009 -1.142790188907600E-009  0.0000000E+00
+ -9.360114407890039E-010 -1.519091931140473E-009  0.0000000E+00
+ -2.316669583027735E-009 -1.900023115565421E-009  0.0000000E+00
+ -1.505310407918103E-009 -1.361746421446347E-009  0.0000000E+00
+ -1.192942129890446E-009 -1.340128541444108E-009  0.0000000E+00
+ -1.642086930810712E-009 -1.221061455062682E-009  0.0000000E+00
+ -1.642773501116185E-009 -9.766996736586640E-010  0.0000000E+00
+ -1.806958708630479E-009 -1.354122133811584E-009  0.0000000E+00
+ -1.975584576169532E-009 -7.972999784292662E-010  0.0000000E+00
+ -1.839809898982664E-009 -9.438242790981579E-010  0.0000000E+00
+ -1.769552513804949E-009 -7.425522683550823E-010  0.0000000E+00
+ -2.257148000000000E-009 -1.052525000000000E-009  0.0000000E+00
+ -2.032038093095153E-009 -1.061296537274817E-009  0.0000000E+00
+ -1.692542722125712E-009 -3.575209311491013E-010  0.0000000E+00
+ -2.153474967531757E-009 -8.839743132684858E-010  0.0000000E+00
+ -2.191765592629506E-009 -5.794983670439220E-010  0.0000000E+00
+ -2.653258698281716E-009 -1.117027029117983E-009  0.0000000E+00
+ -1.676748230667952E-009 -5.608969742203763E-010  0.0000000E+00
+ -1.324115856649282E-009 -4.312096764997055E-010  0.0000000E+00
+ -1.937556192270561E-009 -4.788503818379428E-010  0.0000000E+00
+ -2.427913980805597E-009 -1.252361606745170E-009  0.0000000E+00
+ -1.166978088466871E-009 -1.608989663029121E-009  0.0000000E+00
+ -9.563680492237113E-010 -1.924668501974238E-009  0.0000000E+00
+ -9.909340120430479E-010 -1.719634422324490E-009  0.0000000E+00
+ -6.101821694287868E-010 -1.760875545658571E-009  0.0000000E+00
+ -7.925344491986531E-010 -1.666178042026540E-009  0.0000000E+00
+ -6.035298465094348E-010 -1.338289860975653E-009  0.0000000E+00
+ -6.161444440594095E-010 -1.549436485216197E-009  0.0000000E+00
+ -2.383401815132032E-010 -1.644586547308557E-009  0.0000000E+00
+ -3.919502832182547E-010 -1.456880454742163E-009  0.0000000E+00
+ -4.398745338333068E-010 -1.652806270332289E-009  0.0000000E+00
+ -3.334513391600010E-010 -2.008749363751077E-009  0.0000000E+00
+  1.760588794957479E-011 -1.278425166568799E-009  0.0000000E+00
+ -1.620053816600683E-010 -1.425410834507904E-009  0.0000000E+00
+  1.883652939930162E-010 -1.670319232841043E-009  0.0000000E+00
+ -3.176736510346275E-010 -1.051957601651293E-009  0.0000000E+00
+  4.771838119435008E-011 -1.498453697046689E-009  0.0000000E+00
+ -4.116513412582495E-010 -1.243992752540243E-009  0.0000000E+00
+ -1.839351290164912E-010 -1.215381329094886E-009  0.0000000E+00
+  4.227120206296076E-010 -1.335058288310008E-009  0.0000000E+00
+ -6.454868110831758E-010 -1.010546063966125E-009  0.0000000E+00
+  2.212195016528022E-011 -9.103190013498009E-010  0.0000000E+00
+  2.121722178499016E-010 -1.363872180650198E-009  0.0000000E+00
+  2.790908678932917E-010 -1.069237044567116E-009  0.0000000E+00
+ -2.652553546303012E-009 -1.723457031317788E-009  0.0000000E+00
+ -2.019486855575348E-009 -5.343464268940169E-012  0.0000000E+00
+ -2.682068863444977E-009 -1.420275940421130E-009  0.0000000E+00
+ -2.165512056126228E-009 -2.744518005994421E-010  0.0000000E+00
+ -1.908267335278846E-009 -2.299408761996748E-010  0.0000000E+00
+ -1.585435502584733E-009  6.976022258200998E-011  0.0000000E+00
+ -1.791318050251039E-009 -3.219179009714763E-011  0.0000000E+00
+ -1.860163627121598E-009  3.656916832853263E-010  0.0000000E+00
+ -1.884774782141457E-009  1.565353331104924E-010  0.0000000E+00
+ -2.172852737762860E-009  2.964592468911336E-010  0.0000000E+00
+ -2.405625500000000E-009 -6.445850000000000E-010  0.0000000E+00
+ -2.685432655417300E-009 -6.067707947183643E-010  0.0000000E+00
+ -2.569251963994097E-009 -8.012159862964202E-010  0.0000000E+00
+ -2.787458385774623E-009 -2.438711009181928E-010  0.0000000E+00
+ -2.956305287532983E-009 -4.871323896055286E-010  0.0000000E+00
+ -3.158906023088260E-009 -1.662791526714638E-010  0.0000000E+00
+ -1.081378305964413E-009 -9.059739101797034E-010  0.0000000E+00
+ -9.044486589990969E-010 -1.199864158918201E-009  0.0000000E+00
+ -4.081689987951153E-010 -4.501295326805360E-010  0.0000000E+00
+  8.542457697746670E-011 -1.095176406293574E-009  0.0000000E+00
+  8.221291782667704E-010 -9.475469828881297E-010  0.0000000E+00
+ -2.960541945247088E-009 -1.240826592497566E-009  0.0000000E+00
+ -2.260257144774362E-009 -4.886793598163791E-011  0.0000000E+00
+ -2.164781857449431E-009  1.106915735440011E-010  0.0000000E+00
+ -2.481009500000000E-009  2.170600000000000E-010  0.0000000E+00
+ -2.481009500000000E-009 -2.170600000000000E-010  0.0000000E+00
+ -2.731009444323033E-009  3.482931396286349E-010  0.0000000E+00
+ -2.688338931177426E-009  1.258384401439691E-010  0.0000000E+00
+ -2.702763240896525E-009  7.242022151723480E-010  0.0000000E+00
+ -2.944627945236848E-009  5.533604210265359E-010  0.0000000E+00
+ -3.025271969446756E-009  9.241576858607619E-010  0.0000000E+00
+ -2.279287169102506E-009 -4.183128817748884E-010  0.0000000E+00
+ -2.083121332572150E-009  6.319345386089354E-010  0.0000000E+00
+ -1.224534238474854E-009 -1.100598903201241E-009  0.0000000E+00
+ -1.338430992531192E-009 -8.668609346526842E-010  0.0000000E+00
+ -1.174568234532076E-009 -6.541845070236870E-010  0.0000000E+00
+ -1.377356570673704E-009 -6.285555170271925E-010  0.0000000E+00
+ -7.907432534073512E-010 -6.552668027324862E-010  0.0000000E+00
+ -9.828577652733846E-010 -7.263704211262825E-010  0.0000000E+00
+ -8.529263915283804E-010 -9.144667909754505E-010  0.0000000E+00
+ -9.820319770980902E-010 -4.335131842191542E-010  0.0000000E+00
+ -6.932462325165070E-010 -3.777827072310024E-010  0.0000000E+00
+ -5.902667728976495E-010 -5.698360088766666E-010  0.0000000E+00
+ -6.146326679518249E-010 -7.905975183049393E-010  0.0000000E+00
+ -3.704795853189368E-010 -7.058197773694671E-010  0.0000000E+00
+ -4.224566521924224E-010  9.140717220070617E-011  0.0000000E+00
+ -4.419929401557390E-010 -8.938265625224096E-010  0.0000000E+00
+ -2.400835257680976E-010 -8.630237593625443E-010  0.0000000E+00
+ -5.275576674149828E-011 -5.749590856955324E-010  0.0000000E+00
+ -4.916835216752109E-010 -1.813761092870434E-010  0.0000000E+00
+ -2.460242419945218E-010 -5.568518513586613E-010  0.0000000E+00
+ -1.172908730663745E-010 -2.232937781829120E-010  0.0000000E+00
+ -8.584124098152863E-011 -7.583854126382330E-010  0.0000000E+00
+  1.487604099310024E-010 -7.060045669172404E-010  0.0000000E+00
+  2.442499527923121E-010 -3.387005519634736E-010  0.0000000E+00
+  1.351878407387959E-010 -5.064116369696750E-010  0.0000000E+00
+  4.408752346354291E-010 -5.858824521888573E-010  0.0000000E+00
+ -9.340586162929548E-010  7.606555507499521E-011  0.0000000E+00
+ -2.915723492764878E-010 -8.698444090956600E-011  0.0000000E+00
+ -3.045253045514534E-010 -2.831162312206750E-010  0.0000000E+00
+  3.720724064739931E-011  1.538138693700297E-010  0.0000000E+00
+ -1.926508982834916E-010  1.228034448160644E-010  0.0000000E+00
+ -5.521425457356946E-011 -2.852392266351536E-011  0.0000000E+00
+  9.458687351029380E-011 -1.835455967753024E-010  0.0000000E+00
+ -1.326947568178941E-010  5.457837272791198E-010  0.0000000E+00
+  4.444653466602585E-010  4.188278182020222E-012  0.0000000E+00
+ -3.420665104482653E-010  3.597220834877319E-010  0.0000000E+00
+ -1.030216564452909E-010  3.258382177912799E-010  0.0000000E+00
+  2.960014470256867E-010 -1.390205826279923E-010  0.0000000E+00
+  5.366167527522412E-010 -3.079276361177049E-010  0.0000000E+00
+  2.375712236808068E-010  7.011404982073385E-011  0.0000000E+00
+  2.720445061133966E-010  4.884131936843068E-010  0.0000000E+00
+  6.158414404455506E-011  4.600197454040253E-010  0.0000000E+00
+  2.088586972861993E-010  2.830504299634156E-010  0.0000000E+00
+  1.164805740765331E-010  8.473046325487885E-010  0.0000000E+00
+  5.137121023047544E-010  3.016552955245602E-010  0.0000000E+00
+  3.441516287569260E-011  6.614040069208386E-010  0.0000000E+00
+ -2.541026570250033E-010  8.998336547039586E-010  0.0000000E+00
+ -8.800137247925373E-010 -1.860699545587654E-010  0.0000000E+00
+ -6.760642184657395E-010  1.059180460074796E-011  0.0000000E+00
+  8.250060630014974E-010 -5.627298029131322E-010  0.0000000E+00
+ -4.110456656078508E-010  6.481749792075167E-010  0.0000000E+00
+ -1.207837532579684E-009 -1.170188910218153E-010  0.0000000E+00
+ -6.283866990553251E-010  2.993064598080292E-010  0.0000000E+00
+  6.281561152398524E-010 -4.949248513519025E-010  0.0000000E+00
+  6.400519465751827E-010 -7.577018842008495E-010  0.0000000E+00
+  8.086091612859915E-010 -2.906851067055974E-010  0.0000000E+00
+ -2.302298231125950E-010  7.101788664027447E-010  0.0000000E+00
+ -7.555690375163599E-011  8.259782436484431E-010  0.0000000E+00
+ -1.734396912363096E-011  1.177070909599368E-009  0.0000000E+00
+ -7.786955687975770E-010  1.052220975869593E-009  0.0000000E+00
+ -1.065573274495849E-009 -2.543178388026067E-010  0.0000000E+00
+ -5.150454310939499E-010  4.708308957646857E-010  0.0000000E+00
+ -7.374769114309327E-010  7.204375277373420E-010  0.0000000E+00
+ -7.387175110877972E-010  4.954212088233798E-010  0.0000000E+00
+ -1.136989070250904E-009  6.101286092322146E-010  0.0000000E+00
+ -8.613177244888738E-010  2.973559295546388E-010  0.0000000E+00
+ -9.216765773507080E-010  6.089415104204491E-010  0.0000000E+00
+ -1.192261621063019E-009  2.835406905404478E-010  0.0000000E+00
+ -9.493522904826488E-010  8.625675788195164E-010  0.0000000E+00
+  3.957606144813469E-010 -8.395349121602463E-010  0.0000000E+00
+  6.600929809304425E-010 -1.018099154246212E-010  0.0000000E+00
+  1.069174680929416E-009  6.703070608055234E-011  0.0000000E+00
+  8.884447299730242E-010 -7.508071580523225E-011  0.0000000E+00
+  1.230734052687682E-009 -3.244093505862162E-010  0.0000000E+00
+  8.051592533277952E-010  2.168146523542717E-010  0.0000000E+00
+  1.094751184140626E-009 -1.514733765645724E-010  0.0000000E+00
+  6.279649021279609E-010  1.051534721779948E-010  0.0000000E+00
+  1.469310393129118E-009  3.118749253477271E-012  0.0000000E+00
+  1.260229296387947E-009 -2.135476756812296E-011  0.0000000E+00
+  1.321385050854933E-009  3.615250969143063E-010  0.0000000E+00
+  1.236811199681332E-009  1.787097094214836E-010  0.0000000E+00
+  1.037249299474511E-009  3.820012378915049E-010  0.0000000E+00
+ -5.274949444115438E-010  8.955636237188570E-010  0.0000000E+00
+ -1.200227083609099E-009  1.259921566435924E-009  0.0000000E+00
+  5.643344581096619E-010 -1.069636900175144E-009  0.0000000E+00
+  1.011087216154532E-009 -4.149976747007973E-010  0.0000000E+00
+  1.131271686817226E-009 -7.574387817005102E-010  0.0000000E+00
+  1.192627883858241E-009 -5.435942112262591E-010  0.0000000E+00
+  1.541037216255741E-009 -7.592841077036162E-010  0.0000000E+00
+  1.336414690279802E-009 -7.005738959130307E-010  0.0000000E+00
+  1.334648943938114E-009 -1.092668291883086E-009  0.0000000E+00
+  1.520185750945266E-009 -4.460174120202794E-010  0.0000000E+00
+  1.390827278559982E-009 -8.968701098487391E-010  0.0000000E+00
+  1.709834273855404E-009 -1.094357890435285E-009  0.0000000E+00
+  1.215615724437900E-009  8.754574710921886E-010  0.0000000E+00
+  7.437211214530009E-010  5.487748866830236E-010  0.0000000E+00
+ -3.964751644343808E-010  1.261132550065702E-009  0.0000000E+00
+ -1.018752486997925E-009  1.096624413795908E-009  0.0000000E+00
+ -8.200089818711747E-010  1.499977387163000E-009  0.0000000E+00
+ -1.343706446401775E-009  9.179844706576307E-010  0.0000000E+00
+ -9.762639467916050E-010  1.326328880321372E-009  0.0000000E+00
+ -1.140496205105625E-009  9.332088373920182E-010  0.0000000E+00
+ -1.205967363172319E-009  1.690150081050707E-009  0.0000000E+00
+ -1.142423863889723E-009  1.475845351781891E-009  0.0000000E+00
+ -1.540121991630057E-009  1.474496879204012E-009  0.0000000E+00
+ -1.341470360951390E-009  1.533399077930959E-009  0.0000000E+00
+ -1.435218292647514E-009  1.751382343067646E-009  0.0000000E+00
+ -1.428484500000000E-009  2.040087500000001E-009  0.0000000E+00
+ -1.761040000000000E-009  1.761040000000000E-009  0.0000000E+00
+ -1.217413753268655E-009  1.928587053526297E-009  0.0000000E+00
+ -1.560791107682262E-009  2.418979530622676E-009  0.0000000E+00
+ -1.868196312206095E-009  2.022267312206096E-009  0.0000000E+00
+ -9.000218966007465E-010  1.824330513184153E-009  0.0000000E+00
+ -1.978499843093585E-009  1.824428843093584E-009  0.0000000E+00
+ -1.654059779265146E-009  2.172302514708765E-009  0.0000000E+00
+ -1.052525000000000E-009  2.257148000000000E-009  0.0000000E+00
+ -2.302285153958912E-009  1.612077725742269E-009  0.0000000E+00
+ -8.518482946154273E-010  2.084580419798028E-009  0.0000000E+00
+ -1.117027029117983E-009  2.653258698281716E-009  0.0000000E+00
+ -1.252361606745170E-009  2.427913980805597E-009  0.0000000E+00
+  8.835530198991383E-010 -1.410458058122497E-009  0.0000000E+00
+  1.196022616791062E-009  6.035750705309171E-010  0.0000000E+00
+  8.516804438797043E-010  3.970901476196683E-010  0.0000000E+00
+  9.606770071515028E-010  5.889283838135168E-010  0.0000000E+00
+  7.810179908907803E-010  9.534545697515300E-010  0.0000000E+00
+  8.194398689463584E-010  7.458549039825073E-010  0.0000000E+00
+  1.024740428085146E-009  7.886082414495565E-010  0.0000000E+00
+  1.022178717030410E-009  1.047413658295126E-009  0.0000000E+00
+  4.667116781122436E-010  7.879284372081763E-010  0.0000000E+00
+ -5.649412560878647E-010  1.115247554864624E-009  0.0000000E+00
+ -3.716261882698431E-010  1.062223554750979E-009  0.0000000E+00
+ -6.236415817456646E-010  1.353247647508895E-009  0.0000000E+00
+ -3.467637167839982E-010  1.709893489097374E-009  0.0000000E+00
+ -5.853205121118623E-010  1.609295910581474E-009  0.0000000E+00
+ -1.601102000426341E-009  1.655915581599517E-009  0.0000000E+00
+ -1.738961286982588E-009  1.508619224168712E-009  0.0000000E+00
+ -2.040087500000001E-009  1.428484500000000E-009  0.0000000E+00
+ -1.700031143720106E-009  1.139070834107862E-009  0.0000000E+00
+ -1.927304401450799E-009  1.216515628405636E-009  0.0000000E+00
+ -2.257148000000000E-009  1.052525000000000E-009  0.0000000E+00
+ -1.908827120468569E-009  8.985339835174128E-010  0.0000000E+00
+ -1.765553004575601E-009  1.318993168188724E-009  0.0000000E+00
+ -1.576427559407461E-009  1.285974870580792E-009  0.0000000E+00
+ -1.486774026727563E-009  1.085089859606633E-009  0.0000000E+00
+ -1.394778341345698E-009  1.348749732157220E-009  0.0000000E+00
+ -2.447186652491364E-009  1.261348590917912E-009  0.0000000E+00
+ -2.128593119613412E-009  8.723717302391765E-010  0.0000000E+00
+ -1.650775160462455E-009  8.854243795859029E-010  0.0000000E+00
+ -2.483173737131120E-009  1.037715199455537E-009  0.0000000E+00
+ -2.055435139936051E-009  1.060520378943201E-009  0.0000000E+00
+ -1.915301259990180E-009  2.412048983547689E-009  0.0000000E+00
+ -1.054140433290037E-009  2.052303412740761E-009  0.0000000E+00
+ -6.445850000000000E-010  2.405625500000000E-009  0.0000000E+00
+ -4.444616425980748E-010  2.079682068895863E-009  0.0000000E+00
+ -6.067707947183643E-010  2.685432655417300E-009  0.0000000E+00
+ -4.960963932860594E-010  2.272387040276370E-009  0.0000000E+00
+ -6.889387476671051E-010  2.206833777360332E-009  0.0000000E+00
+ -1.865109841455775E-010  2.252069394649321E-009  0.0000000E+00
+ -6.493302723317205E-010  1.984383439181081E-009  0.0000000E+00
+ -8.012159862964202E-010  2.569251963994097E-009  0.0000000E+00
+ -4.734836403847714E-010  1.874214316871116E-009  0.0000000E+00
+ -2.150446497897230E-010  1.942493746550581E-009  0.0000000E+00
+ -1.413958097480773E-009  2.678274576117435E-009  0.0000000E+00
+  7.786024247017761E-010 -1.188853277642368E-009  0.0000000E+00
+  6.511512409752954E-010 -1.384867689328585E-009  0.0000000E+00
+  1.064951841004638E-009 -1.188894393210998E-009  0.0000000E+00
+  4.793244935241279E-010 -1.624164710925914E-009  0.0000000E+00
+  7.416388822095697E-010 -1.631180595886597E-009  0.0000000E+00
+  1.687791663589249E-009  7.047830960338741E-010  0.0000000E+00
+  1.423728103709819E-009  1.304346016055351E-009  0.0000000E+00
+  7.350348101287526E-010  1.427945553326397E-009  0.0000000E+00
+ -3.936629147393530E-010  1.487954883199656E-009  0.0000000E+00
+ -1.730550129143164E-010  1.371791082576874E-009  0.0000000E+00
+ -2.138927153817363E-010  1.179516095521846E-009  0.0000000E+00
+  2.499856589160863E-010  1.550463721283171E-009  0.0000000E+00
+  6.366279102766914E-011  1.401467714360298E-009  0.0000000E+00
+  3.704995255615738E-010  1.163880283445857E-009  0.0000000E+00
+ -2.202829358235492E-011  1.699624827044314E-009  0.0000000E+00
+  2.634774876458726E-010  1.342593406835158E-009  0.0000000E+00
+  5.029927799224058E-010  1.364625175298170E-009  0.0000000E+00
+  6.193589435226706E-010  1.143726808561803E-009  0.0000000E+00
+  5.411307729722154E-010  1.681693239606583E-009  0.0000000E+00
+  4.818327380277012E-010  9.920852061811013E-010  0.0000000E+00
+  2.752004326525675E-010  9.801481821165556E-010  0.0000000E+00
+ -7.638021175330616E-010  1.685888293047648E-009  0.0000000E+00
+ -2.578043296346538E-009  1.520708307295318E-009  0.0000000E+00
+ -1.792576445884658E-009  6.405076176271740E-010  0.0000000E+00
+ -2.438711009181928E-010  2.787458385774623E-009  0.0000000E+00
+  1.307967286564210E-009 -1.572895580060199E-009  0.0000000E+00
+  1.142426976928689E-009 -9.799783614044128E-010  0.0000000E+00
+  3.146090007697395E-010 -1.525978446792947E-009  0.0000000E+00
+  3.961194374905234E-010 -2.039822170823296E-009  0.0000000E+00
+  1.427634188242226E-009  7.235312511519729E-010  0.0000000E+00
+  1.259187524986576E-009  1.119250977237365E-009  0.0000000E+00
+  1.562995568979613E-009  1.014862097978504E-009  0.0000000E+00
+  1.091550918372971E-009  1.433953696230764E-009  0.0000000E+00
+  1.378478232808339E-009  9.721404195510206E-010  0.0000000E+00
+  1.095068110134774E-009  1.233827346134169E-009  0.0000000E+00
+  9.149813574807526E-010  1.330756429526884E-009  0.0000000E+00
+  9.114647740361215E-010  1.539426340338205E-009  0.0000000E+00
+  1.183148675699374E-009  1.796827276288078E-009  0.0000000E+00
+  8.213796464798461E-010  1.151557105661840E-009  0.0000000E+00
+ -2.549559143125560E-009  1.896553149740505E-009  0.0000000E+00
+ -1.934707070271660E-009  5.297436467497041E-010  0.0000000E+00
+ -1.513717101431533E-009  4.262069817776588E-010  0.0000000E+00
+ -4.871323896055286E-010  2.956305287532983E-009  0.0000000E+00
+  1.122721983084663E-009 -1.421231363457071E-009  0.0000000E+00
+  9.931789664799191E-010 -1.636925652960669E-009  0.0000000E+00
+  1.348603737293269E-009 -1.334298493762225E-009  0.0000000E+00
+  1.616436199347717E-009 -1.502673165180533E-009  0.0000000E+00
+  1.521748184581415E-009 -1.203080872393738E-009  0.0000000E+00
+  3.607062613674579E-010 -1.816576669622605E-009  0.0000000E+00
+  7.719617226248902E-011 -1.975981073973332E-009  0.0000000E+00
+  6.311048470165424E-010 -1.888115180373420E-009  0.0000000E+00
+  1.541806050456027E-009  4.934265185396823E-010  0.0000000E+00
+ -1.700238311002492E-009  4.720792956447446E-010  0.0000000E+00
+ -1.675557961442052E-009  2.615827198837058E-010  0.0000000E+00
+ -1.554789634941533E-009  6.613448211395707E-010  0.0000000E+00
+ -1.353287464868238E-009  5.753859908784125E-010  0.0000000E+00
+ -1.662791526714638E-010  3.158906023088260E-009  0.0000000E+00
+  6.444223811875882E-010 -2.166586217973712E-009  0.0000000E+00
+  1.542061736614136E-009  2.428753172161112E-010  0.0000000E+00
+  4.462908064984961E-010 -2.248114977252617E-009  0.0000000E+00
+  1.986915017583883E-010 -2.197565302324176E-009  0.0000000E+00
+  6.445850000000000E-010 -2.405625500000000E-009  0.0000000E+00
+  6.067707947183643E-010 -2.685432655417300E-009  0.0000000E+00
+  8.012159862964202E-010 -2.569251963994097E-009  0.0000000E+00
+  1.187798963769113E-009 -2.547244281604900E-009  0.0000000E+00
+  9.468712110336679E-010 -2.030572460534660E-009  0.0000000E+00
+  1.930708319086950E-009 -5.971029112571941E-012  0.0000000E+00
+ -1.004806248263694E-010 -2.217502070643406E-009  0.0000000E+00
+  2.438711009181928E-010 -2.787458385774623E-009  0.0000000E+00
+  8.271510146892931E-010 -2.168634120650855E-009  0.0000000E+00
+  1.052525000000000E-009 -2.257148000000000E-009  0.0000000E+00
+  8.631351543719066E-010 -1.821174757030447E-009  0.0000000E+00
+  1.097792003212656E-009 -1.848779279055849E-009  0.0000000E+00
+  1.921009821846714E-009  3.876025395175788E-010  0.0000000E+00
+  1.701291250198855E-009  6.364291357034529E-011  0.0000000E+00
+  1.647278622758620E-009 -2.041716169285257E-010  0.0000000E+00
+  1.864693316811718E-009  1.893084997862269E-010  0.0000000E+00
+  2.210238780260908E-009  1.973234058977504E-010  0.0000000E+00
+  4.871323896055286E-010 -2.956305287532983E-009  0.0000000E+00
+  1.749668707802525E-009  5.059491643788634E-010  0.0000000E+00
+  2.006798486070964E-009  6.950128761635892E-010  0.0000000E+00
+  1.424814498730362E-009 -2.151251070329793E-010  0.0000000E+00
+  1.989950615764604E-009 -5.385671807840737E-010  0.0000000E+00
+  1.662791526714638E-010 -3.158906023088260E-009  0.0000000E+00
+  1.768843267656348E-009 -4.223726120943347E-010  0.0000000E+00
+  1.777760500117358E-009 -6.738744963720970E-010  0.0000000E+00
+  1.990577061959604E-009 -2.689045726220292E-010  0.0000000E+00
+  1.718363666571626E-009 -8.800075492289906E-010  0.0000000E+00
+  1.996852181386189E-009 -9.984339880423594E-010  0.0000000E+00
+  1.832095229522890E-009 -1.667074588456782E-010  0.0000000E+00
+  2.207819313747403E-009 -4.042412741712881E-010  0.0000000E+00
+  2.200320824719852E-009 -8.286420635026601E-011  0.0000000E+00
+  1.987394008226033E-009 -7.685907418197878E-010  0.0000000E+00
+  2.257148000000000E-009 -1.052525000000000E-009  0.0000000E+00
+  2.405625500000000E-009 -6.445850000000000E-010  0.0000000E+00
+  2.152762099913485E-009 -8.769019835013341E-010  0.0000000E+00
+  2.179488646041707E-009 -6.556997982975365E-010  0.0000000E+00
+  2.447186652491364E-009 -1.261348590917912E-009  0.0000000E+00
+  2.750525134777118E-009 -8.497876184279019E-010  0.0000000E+00
+  2.483173737131120E-009 -1.037715199455537E-009  0.0000000E+00
+  2.664891963534625E-009 -6.012669745692388E-010  0.0000000E+00
+  2.481009500000000E-009 -2.170600000000000E-010  0.0000000E+00
+  2.704905985401179E-009 -3.460093575561413E-010  0.0000000E+00
+  2.682902275771858E-009 -1.253627891512507E-010  0.0000000E+00
+  2.802464720644784E-009  2.451839996667039E-010  0.0000000E+00
+  2.324041907863594E-009  5.302571198725756E-011  0.0000000E+00
+  2.481009500000000E-009  2.170600000000000E-010  0.0000000E+00
+  2.292076283923540E-009 -1.604929380390287E-009  0.0000000E+00
+  3.020407944178900E-009 -6.177799463160249E-010  0.0000000E+00
+  2.577785753971282E-009 -1.527110735452398E-009  0.0000000E+00
+  2.526748956293524E-009 -1.903127626948956E-009  0.0000000E+00
+ -1.009480117223640E-009 -1.350653686232957E-009  0.0000000E+00
+ -8.221291820454234E-010 -1.369177502766839E-009  0.0000000E+00
+ -7.158225710523779E-010 -1.186107789898209E-009  0.0000000E+00
+ -3.160006500000000E-009 -1.473535500000000E-009  0.0000000E+00
+ -2.405625500000000E-009  6.445850000000000E-010  0.0000000E+00
+ -1.469232759145627E-009 -1.988915985864792E-010  0.0000000E+00
+ -1.386822314874378E-009 -3.788662807599195E-012  0.0000000E+00
+ -1.416432868007223E-009  2.211946527385783E-010  0.0000000E+00
+ -1.658162451180318E-009 -1.694230248941233E-010  0.0000000E+00
+ -1.032383724189471E-009  4.244537492966282E-010  0.0000000E+00
+ -1.142532337826935E-009  8.102432006806087E-011  0.0000000E+00
+  5.051097249826921E-010  5.402634313898881E-010  0.0000000E+00
+ -9.918243986399084E-010  1.629638712356217E-009  0.0000000E+00
+ -7.931052622248737E-010  1.250089417437237E-009  0.0000000E+00
+ -2.170600000000000E-010  2.481009500000000E-009  0.0000000E+00
+  1.892804345156787E-010  2.163491136395734E-009  0.0000000E+00
+ -1.240656499715383E-009  2.960563363596757E-009  0.0000000E+00
+ -1.999878500000000E-009  2.856122500000000E-009  0.0000000E+00
+ -1.884178423214690E-010  1.577572872418151E-009  0.0000000E+00
+  4.325894245747364E-010  1.533921237180312E-009  0.0000000E+00
+  3.559431680466399E-010  1.703968215817030E-009  0.0000000E+00
+  4.868596808727492E-010  2.011434477470759E-009  0.0000000E+00
+  1.667338911744810E-010  1.721250002244193E-009  0.0000000E+00
+  2.800866025423143E-010  1.917871992998913E-009  0.0000000E+00
+  4.828499888167776E-011  1.920520822160654E-009  0.0000000E+00
+ -1.886259742419646E-011  2.121881420394661E-009  0.0000000E+00
+  1.769833156300381E-009  1.292611307318820E-009  0.0000000E+00
+  1.500573412473184E-009 -1.706341195935944E-009  0.0000000E+00
+  1.302398357805190E-009 -1.786653339530984E-009  0.0000000E+00
+  1.761040000000000E-009 -1.761040000000000E-009  0.0000000E+00
+  1.868196312206095E-009 -2.022267312206096E-009  0.0000000E+00
+  1.978499843093585E-009 -1.824428843093584E-009  0.0000000E+00
+  1.604928623955037E-009 -2.292075203624704E-009  0.0000000E+00
+  1.900023115565421E-009 -2.316669583027735E-009  0.0000000E+00
+  1.723457031317788E-009 -2.652553546303012E-009  0.0000000E+00
+  1.841062369775582E-009 -1.339214597054081E-009  0.0000000E+00
+  1.658625668371169E-009 -1.324579404528747E-009  0.0000000E+00
+  2.040087500000001E-009 -1.428484500000000E-009  0.0000000E+00
+  1.889805960128806E-009 -1.155497601350469E-009  0.0000000E+00
+ -3.137936114484058E-011 -1.763445175396581E-009  0.0000000E+00
+ -2.158117675383541E-010 -1.844972322111415E-009  0.0000000E+00
+  5.664895027466048E-011 -2.320731995937711E-009  0.0000000E+00
+  2.170600000000000E-010 -2.481009500000000E-009  0.0000000E+00
+ -3.360208471458090E-010 -2.245992482818666E-009  0.0000000E+00
+ -6.300341035891651E-010 -2.124172640447455E-009  0.0000000E+00
+ -2.170600000000000E-010 -2.481009500000000E-009  0.0000000E+00
+ -3.592549176590394E-010 -2.856301750438178E-009  0.0000000E+00
+ -1.293796870970437E-010 -2.728815119989431E-009  0.0000000E+00
+ -1.110395490164375E-010 -3.032875825162395E-009  0.0000000E+00
+  2.185966403207201E-009  4.753859248835016E-010  0.0000000E+00
+  2.405625500000000E-009  6.445850000000000E-010  0.0000000E+00
+  2.210680244143691E-009  7.051377106525657E-010  0.0000000E+00
+  2.257148000000000E-009  1.052525000000000E-009  0.0000000E+00
+  2.098965854442771E-009  8.968825142077699E-010  0.0000000E+00
+  2.685432655417300E-009  6.067707947183643E-010  0.0000000E+00
+  2.653258698281716E-009  1.117027029117983E-009  0.0000000E+00
+  1.853031367989988E-009  8.871933262295182E-010  0.0000000E+00
+  2.569251963994097E-009  8.012159862964202E-010  0.0000000E+00
+  2.427913980805597E-009  1.252361606745170E-009  0.0000000E+00
+  1.967639583918175E-009  1.104209785440281E-009  0.0000000E+00
+  2.951621512129771E-009  4.931932906612812E-010  0.0000000E+00
+  2.710871287068316E-009  1.468234667066056E-009  0.0000000E+00
+  2.294232016612031E-009  1.502384996786685E-009  0.0000000E+00
+  1.759887509283296E-009  1.084128007175144E-009  0.0000000E+00
+  3.174937008931680E-009  1.900304489661402E-010  0.0000000E+00
+  2.166567705634780E-009  1.779053083977266E-009  0.0000000E+00
+  1.719955888358399E-009  3.159429594202706E-010  0.0000000E+00
+  2.296956118028494E-009 -2.413854884950451E-010  0.0000000E+00
+ -2.249921829592822E-009  4.968114569684562E-010  0.0000000E+00
+ -1.473535500000000E-009  3.160006500000000E-009  0.0000000E+00
+ -1.731330147257103E-009  2.686773645842391E-009  0.0000000E+00
+  8.334673896440835E-010  1.899144795271314E-009  0.0000000E+00
+  4.114050537167732E-010  2.230981499256740E-009  0.0000000E+00
+  6.445850000000000E-010  2.405625500000000E-009  0.0000000E+00
+  6.911176588893782E-010  2.158356302655058E-009  0.0000000E+00
+  8.172357947183642E-010  2.629039155417301E-009  0.0000000E+00
+  5.907509862964202E-010  2.625645463994097E-009  0.0000000E+00
+  2.449574164414038E-010  2.799874891262534E-009  0.0000000E+00
+  1.182531349333380E-009  2.535947833137235E-009  0.0000000E+00
+  1.056281853924630E-009  2.803803506434572E-009  0.0000000E+00
+  1.435448636389869E-009  2.818837037396072E-009  0.0000000E+00
+  1.605622042961994E-009  1.559248465618766E-009  0.0000000E+00
+  1.593708874259254E-009  1.207879891165268E-009  0.0000000E+00
+  2.040087500000001E-009  1.428484500000000E-009  0.0000000E+00
+  1.428484500000000E-009 -2.040087500000001E-009  0.0000000E+00
+ -1.177036849444385E-010 -2.018716636466176E-009  0.0000000E+00
+ -6.445850000000000E-010 -2.405625500000000E-009  0.0000000E+00
+ -8.172357947183642E-010 -2.629039155417301E-009  0.0000000E+00
+ -5.907509862964202E-010 -2.625645463994097E-009  0.0000000E+00
+ -5.186402000137824E-010 -2.271034184457950E-009  0.0000000E+00
+ -1.048624144349530E-009 -2.802768614380335E-009  0.0000000E+00
+ -1.422779804944021E-009 -2.844838436868911E-009  0.0000000E+00
+ -5.280177459527853E-010 -1.947556262030822E-009  0.0000000E+00
+ -7.418803147813571E-010 -1.930262314551714E-009  0.0000000E+00
+ -8.542573922995339E-010 -2.124291925378159E-009  0.0000000E+00
+ -1.052525000000000E-009 -2.257148000000000E-009  0.0000000E+00
+ -3.947180177727574E-010 -1.826864399401507E-009  0.0000000E+00
+ -4.056839017544274E-010 -3.184317196878702E-009  0.0000000E+00
+  2.371577087641843E-009  2.071564388272193E-009  0.0000000E+00
+  6.311887581664243E-010  1.865852379952609E-009  0.0000000E+00
+  7.569183482106699E-010  1.690268000415239E-009  0.0000000E+00
+  1.776200714908157E-009  1.480416923657373E-009  0.0000000E+00
+  1.761040000000000E-009  1.761040000000000E-009  0.0000000E+00
+  1.949010801649006E-009  2.103081801649006E-009  0.0000000E+00
+  1.332738398881322E-009  1.561624076427166E-009  0.0000000E+00
+  1.470723342781655E-009  1.737692880113789E-009  0.0000000E+00
+  1.428484500000000E-009  2.040087500000001E-009  0.0000000E+00
+  1.667135858200275E-009  2.190977044805999E-009  0.0000000E+00
+  1.453149046538012E-009  2.265251113981939E-009  0.0000000E+00
+  1.349059050687612E-009  1.874845962061922E-009  0.0000000E+00
+  1.196120802035092E-009  1.984658863544408E-009  0.0000000E+00
+  1.052525000000000E-009  2.257148000000000E-009  0.0000000E+00
+  1.024162670638345E-009  1.902170991095275E-009  0.0000000E+00
+  1.009746867409044E-009  1.707770831294796E-009  0.0000000E+00
+  9.258317459224933E-010  2.088649105738119E-009  0.0000000E+00
+ -3.038845000000000E-010 -3.473413500000000E-009  0.0000000E+00
+ -1.169096438264762E-009 -1.964357294870135E-009  0.0000000E+00
+ -2.856122500000000E-009 -1.999878500000000E-009  0.0000000E+00
+ -3.237011176638627E-009  1.064894456694293E-010  0.0000000E+00
+ -3.473413500000000E-009  3.038845000000000E-010  0.0000000E+00
+ -3.473413500000000E-009 -3.038845000000000E-010  0.0000000E+00
+ -3.005374022172084E-009  1.207189569340275E-009  0.0000000E+00
+ -3.160006500000000E-009  1.473535500000000E-009  0.0000000E+00
+ -3.367875500000000E-009  9.024200000000000E-010  0.0000000E+00
+  9.172627211894861E-010 -7.558388554021336E-010  0.0000000E+00
+  2.719132966037266E-010  7.015171609877136E-010  0.0000000E+00
+ -2.270835079782533E-009  1.889121452339723E-009  0.0000000E+00
+ -2.414350591308259E-009  2.148046350239656E-009  0.0000000E+00
+ -2.465456500000000E-009  2.465456500000000E-009  0.0000000E+00
+ -2.856122500000000E-009  1.999878500000000E-009  0.0000000E+00
+ -2.759956169659018E-009  1.723496723784226E-009  0.0000000E+00
+ -3.038845000000000E-010  3.473413500000000E-009  0.0000000E+00
+  3.038845000000000E-010 -3.473413500000000E-009  0.0000000E+00
+  3.367875500000000E-009 -9.024200000000000E-010  0.0000000E+00
+  3.050739343575617E-009 -9.753466159717266E-010  0.0000000E+00
+  2.411245284086320E-009 -2.162284283166589E-009  0.0000000E+00
+  2.465456500000000E-009 -2.465456500000000E-009  0.0000000E+00
+  2.856122500000000E-009 -1.999878500000000E-009  0.0000000E+00
+  2.170600000000000E-010  2.481009500000000E-009  0.0000000E+00
+  1.468030298437477E-009 -2.536814316895038E-009  0.0000000E+00
+  1.473535500000000E-009 -3.160006500000000E-009  0.0000000E+00
+  1.480815013962569E-009 -2.848321786004459E-009  0.0000000E+00
+  1.999878500000000E-009 -2.856122500000000E-009  0.0000000E+00
+  3.160006500000000E-009  1.473535500000000E-009  0.0000000E+00
+  2.963942707307330E-009  1.213819605996584E-009  0.0000000E+00
+  2.958498906012790E-009  1.364224739391060E-011  0.0000000E+00
+  3.221434882086019E-009 -8.800989637811588E-011  0.0000000E+00
+  3.473413500000000E-009 -3.038845000000000E-010  0.0000000E+00
+  3.473413500000000E-009  3.038845000000000E-010  0.0000000E+00
+  3.220717844720903E-009  4.575841157777255E-010  0.0000000E+00
+  3.367875500000000E-009  9.024200000000000E-010  0.0000000E+00
+  3.038845000000000E-010  3.473413500000000E-009  0.0000000E+00
+  4.263631974025385E-010  3.123350951698107E-009  0.0000000E+00
+ -2.944139680765706E-012  2.930958925789419E-009  0.0000000E+00
+  1.336537664724388E-010  3.201330096662708E-009  0.0000000E+00
+  1.710724973665697E-009  2.750089407967378E-009  0.0000000E+00
+  1.999878500000000E-009  2.856122500000000E-009  0.0000000E+00
+  1.473535500000000E-009  3.160006500000000E-009  0.0000000E+00
+ -1.464331108124940E-009 -2.571730247586315E-009  0.0000000E+00
+ -1.720915885161267E-009 -2.730669856966748E-009  0.0000000E+00
+ -1.999878500000000E-009 -2.856122500000000E-009  0.0000000E+00
+ -1.975453778967638E-009 -2.555325015357311E-009  0.0000000E+00
+ -1.473535500000000E-009 -3.160006500000000E-009  0.0000000E+00
+ -1.213860387749041E-009 -3.018055673381439E-009  0.0000000E+00
+ -9.024200000000000E-010 -3.367875500000000E-009  0.0000000E+00
+  2.465456500000000E-009  2.465456500000000E-009  0.0000000E+00
+  2.150056637909563E-009  2.365756137909563E-009  0.0000000E+00
+ -2.194061408010510E-009  2.400818716401681E-009  0.0000000E+00
+  1.131544883899619E-009 -2.895116113353748E-009  0.0000000E+00
+  3.224050170243175E-009 -4.278404830195697E-010  0.0000000E+00
+ -2.891018850286149E-009  1.488145133925861E-009  0.0000000E+00
+  3.102278275426542E-009  9.755809119651052E-010  0.0000000E+00
+ -9.607430934694561E-010 -3.106254118650171E-009  0.0000000E+00
+ -6.953557303416838E-010 -3.184403133515923E-009  0.0000000E+00
+  1.978129493078477E-009  2.581281978977685E-009  0.0000000E+00
+ -2.465456500000000E-009 -2.465456500000000E-009  0.0000000E+00
+ -2.199383147341987E-009 -2.395496977070204E-009  0.0000000E+00
+ -3.367875500000000E-009 -9.024200000000000E-010  0.0000000E+00
+ -9.024200000000000E-010  3.367875500000000E-009  0.0000000E+00
+  9.024200000000000E-010 -3.367875500000000E-009  0.0000000E+00
+  9.634203923967220E-010 -3.105536727424452E-009  0.0000000E+00
+  6.901726988732235E-010 -3.176744613544338E-009  0.0000000E+00
+  4.260196856394477E-010 -3.232619393265292E-009  0.0000000E+00
+  3.160006500000000E-009 -1.473535500000000E-009  0.0000000E+00
+  3.003575272046857E-009 -1.246768211550470E-009  0.0000000E+00
+  9.024200000000000E-010  3.367875500000000E-009  0.0000000E+00
+  7.000996449688551E-010  3.176094404727822E-009  0.0000000E+00
+  2.856122500000000E-009  1.999878500000000E-009  0.0000000E+00
+  2.601134738756631E-009  1.949776751982886E-009  0.0000000E+00
+  2.761860036019791E-009  1.733129009842767E-009  0.0000000E+00
+ object 2 class regulararray count          130
+   origin 0.0 0.0 0.0
+   delta  0.0 0.0   2.000000000000000E-010
+ object 3 class productarray
+   term 1
+   term 2
+ object 4 class gridconnections counts          642         130
+ object 5 class array type float rank 0 items        83460  data follows
+  7.164155655347680E+024
+  7.162610129008189E+024
+  7.162802554904569E+024
+  7.165148874759364E+024
+  7.169888245109501E+024
+  7.177003662108176E+024
+  7.186156995922287E+024
+  7.196648932266368E+024
+  7.207412991065240E+024
+  7.217053066687105E+024
+  7.223929222961558E+024
+  7.226290667577145E+024
+  7.222449750762246E+024
+  7.210984610523212E+024
+  7.190951098716313E+024
+  7.162078575680455E+024
+  7.124920145595682E+024
+  7.080926690034703E+024
+  7.032416680512301E+024
+  6.982421213125802E+024
+  6.934396264508986E+024
+  6.891810866696008E+024
+  6.857638564554500E+024
+  6.833797143635103E+024
+  6.820595087988298E+024
+  6.816250280086361E+024
+  6.816546497189580E+024
+  6.814687624813418E+024
+  6.801400746155641E+024
+  6.765329458618755E+024
+  6.693747463579603E+024
+  6.573605325362444E+024
+  6.392892547113981E+024
+  6.142244505808502E+024
+  5.816645675916360E+024
+  5.416984844537162E+024
+  4.951131418047681E+024
+  4.434171436691549E+024
+  3.887520165519061E+024
+  3.336843245720741E+024
+  2.809045544482463E+024
+  2.327956919283227E+024
+  1.908027048532813E+024
+  1.552800864808411E+024
+  1.258826535759463E+024
+  1.019248657018382E+024
+  8.260555851178358E+023
+  6.713518247273590E+023
+  5.479911797655634E+023
+  4.498229460220547E+023
+  3.717219368828487E+023
+  3.095098335168523E+023
+  2.598313548957758E+023
+  2.200203220954006E+023
+  1.879733748947540E+023
+  1.620390624713555E+023
+  1.409245008058047E+023
+  1.236189561056696E+023
+  1.093324462480841E+023
+  9.744705212373750E+022
+  8.747867256164245E+022
+  7.904719425447470E+022
+  7.185335068245363E+022
+  6.566084787693337E+022
+  6.028261196035208E+022
+  5.557025302112221E+022
+  5.140603997144714E+022
+  4.769684485822234E+022
+  4.436965013730176E+022
+  4.136832990463619E+022
+  3.865153096290189E+022
+  3.619161164541090E+022
+  3.397477266369004E+022
+  3.200277380194588E+022
+  3.029702962945076E+022
+  2.890649689832483E+022
+  2.792171365738846E+022
+  2.749875652210749E+022
+  2.789888247892157E+022
+  2.955230097151455E+022
+  3.315780885999504E+022
+  3.983348164834075E+022
+  5.133611497335038E+022
+  7.036632059852194E+022
+  1.009679710035221E+023
+  1.490086111646127E+023
+  2.226828045585008E+023
+  3.329036733336038E+023
+  4.933330605503691E+023
+  7.196532202625879E+023
+  1.027532465697891E+024
+  1.428655275415180E+024
+  1.925025159491660E+024
+  2.505439302501352E+024
+  3.146563853519927E+024
+  3.815967185004454E+024
+  4.476817945921393E+024
+  5.093460568808484E+024
+  5.636446281175890E+024
+  6.085931863848038E+024
+  6.432989554104561E+024
+  6.678997212529119E+024
+  6.833679538879220E+024
+  6.912488259300198E+024
+  6.933908895174434E+024
+  6.917080775838422E+024
+  6.879916607733196E+024
+  6.837763854873827E+024
+  6.802573399146606E+024
+  6.782514595324804E+024
+  6.781974285917677E+024
+  6.801879456179034E+024
+  6.840278170243940E+024
+  6.893100755868848E+024
+  6.955009354531458E+024
+  7.020237544670255E+024
+  7.083329050936921E+024
+  7.139706562776145E+024
+  7.186033676190029E+024
+  7.220366806088594E+024
+  7.242122065977541E+024
+  7.251900821549093E+024
+  7.251226523108177E+024
+  7.242244344934871E+024
+  7.227423918384969E+024
+  7.209289538133120E+024
+  7.190192986881947E+024
+  7.172142118695796E+024
+  7.156690870885193E+024
+  7.144888587309938E+024
+  7.510723020244312E+024
+  7.509702713622350E+024
+  7.510139038903003E+024
+  7.512348812580164E+024
+  7.516491054359157E+024
+  7.522500953212608E+024
+  7.530038278097758E+024
+  7.538459393635699E+024
+  7.546820538419351E+024
+  7.553920412200535E+024
+  7.558385454708217E+024
+  7.558795578041907E+024
+  7.553843457207835E+024
+  7.542514804150068E+024
+  7.524270716612032E+024
+  7.499207939636518E+024
+  7.468169748155725E+024
+  7.432779813688856E+024
+  7.395374753272268E+024
+  7.358818915984279E+024
+  7.326197439013075E+024
+  7.300399642228987E+024
+  7.283622256144307E+024
+  7.276837936049314E+024
+  7.279286188615464E+024
+  7.288049330457450E+024
+  7.297775156448185E+024
+  7.300602130371665E+024
+  7.286334585633357E+024
+  7.242906342132268E+024
+  7.157160253970517E+024
+  7.015953537485150E+024
+  6.807566224058785E+024
+  6.523334774918356E+024
+  6.159352175983048E+024
+  5.717979255160445E+024
+  5.208828172046768E+024
+  4.648856374985871E+024
+  4.061299972906657E+024
+  3.473404362716727E+024
+  2.913246960241053E+024
+  2.405283943713580E+024
+  1.963931150979730E+024
+  1.592176457088877E+024
+  1.285779315465931E+024
+  1.037067231486245E+024
+  8.372870800558344E+023
+  6.779190500694438E+023
+  5.513161728448354E+023
+  4.509395192877957E+023
+  3.713704506392622E+023
+  3.082131525238865E+023
+  2.579536925723184E+023
+  2.178117126982279E+023
+  1.856026548717056E+023
+  1.596179662497668E+023
+  1.385250488430659E+023
+  1.212858701977628E+023
+  1.070919303677336E+023
+  9.531294738251897E+022
+  8.545673313025875E+022
+  7.713802953319916E+022
+  7.005442729046791E+022
+  6.396783275883639E+022
+  5.869025592577591E+022
+  5.407295478905682E+022
+  4.999818837381540E+022
+  4.637300681369809E+022
+  4.312465106833824E+022
+  4.019725909027442E+022
+  3.754969527325145E+022
+  3.515445619712705E+022
+  3.299778584054700E+022
+  3.108139734234123E+022
+  2.942660397082494E+022
+  2.808229179260519E+022
+  2.713913214172431E+022
+  2.675387093634808E+022
+  2.718958887086584E+022
+  2.888060265506457E+022
+  3.253412125908905E+022
+  3.928447192720900E+022
+  5.091855023132326E+022
+  7.019078292134915E+022
+  1.012381050343414E+023
+  1.500835663972948E+023
+  2.251720096063718E+023
+  3.378025051327554E+023
+  5.022026523253404E+023
+  7.348335999751374E+023
+  1.052350706125671E+024
+  1.467545861856142E+024
+  1.983441706245959E+024
+  2.589516254856123E+024
+  3.262599470690676E+024
+  3.969785132723001E+024
+  4.673107434278374E+024
+  5.335217832554110E+024
+  5.924615104781731E+024
+  6.419290563177186E+024
+  6.808276401960223E+024
+  7.091223930803800E+024
+  7.276562281663409E+024
+  7.378926474945020E+024
+  7.416457068693586E+024
+  7.408377234272123E+024
+  7.373050397390273E+024
+  7.326571904159312E+024
+  7.281865740662673E+024
+  7.248227209394579E+024
+  7.231249523176190E+024
+  7.233074903005123E+024
+  7.252907188779244E+024
+  7.287711710044259E+024
+  7.333014931084328E+024
+  7.383709477937997E+024
+  7.434775957004109E+024
+  7.481852897522194E+024
+  7.521616006712664E+024
+  7.551960057322682E+024
+  7.572003917146189E+024
+  7.581957837006330E+024
+  7.582901662078545E+024
+  7.576522611282095E+024
+  7.564851020746653E+024
+  7.550017255688248E+024
+  7.534044417137368E+024
+  7.518690039722862E+024
+  7.505342529544341E+024
+  7.494970231784811E+024
+  8.665532248653622E+024
+  8.665802322891149E+024
+  8.666791352431964E+024
+  8.668563717684646E+024
+  8.671076735720475E+024
+  8.674146997316790E+024
+  8.677429930971727E+024
+  8.680418168994921E+024
+  8.682462471723015E+024
+  8.682819943473131E+024
+  8.680729930667985E+024
+  8.675513083575320E+024
+  8.666685776027571E+024
+  8.654078011658449E+024
+  8.637938392631906E+024
+  8.619006482251355E+024
+  8.598531837061325E+024
+  8.578220446833155E+024
+  8.560093832837805E+024
+  8.546254099813816E+024
+  8.538559611561942E+024
+  8.538229477193354E+024
+  8.545408699860959E+024
+  8.558737335727232E+024
+  8.574974351547697E+024
+  8.588729067405548E+024
+  8.592350565092262E+024
+  8.576019934025171E+024
+  8.528083690026473E+024
+  8.435659698297696E+024
+  8.285536917569077E+024
+  8.065371060937860E+024
+  7.765141569229843E+024
+  7.378774568577769E+024
+  6.905752187914403E+024
+  6.352434331708653E+024
+  5.732747073021122E+024
+  5.067891870562243E+024
+  4.384850157438973E+024
+  3.713713455785088E+024
+  3.084216958685269E+024
+  2.521124719882136E+024
+  2.037794642044107E+024
+  1.635253827373569E+024
+  1.307038597095568E+024
+  1.043386712312086E+024
+  8.337631922487967E+023
+  6.682191760752055E+023
+  5.380097413583523E+023
+  4.357793869545797E+023
+  3.555179949554392E+023
+  2.924110345659237E+023
+  2.426544502745508E+023
+  2.032711840958350E+023
+  1.719464815277138E+023
+  1.468880781461040E+023
+  1.267115926390196E+023
+  1.103487458380915E+023
+  9.697502788215038E+022
+  8.595333169774760E+022
+  7.679038286388353E+022
+  6.910325955693306E+022
+  6.259377850412243E+022
+  5.702896469028001E+022
+  5.222620278972966E+022
+  4.804198343523083E+022
+  4.436341208802248E+022
+  4.110185126601712E+022
+  3.818822996999330E+022
+  3.556969160065329E+022
+  3.320738057463758E+022
+  3.107530954371156E+022
+  2.916043211179446E+022
+  2.746431077918209E+022
+  2.600717573734658E+022
+  2.483580241984806E+022
+  2.403761180612473E+022
+  2.376486687974343E+022
+  2.427496835105787E+022
+  2.599578204318810E+022
+  2.962866711107171E+022
+  3.630609020947336E+022
+  4.782438218281132E+022
+  6.697304532056589E+022
+  9.797578362000934E+022
+  1.470380837952749E+023
+  2.229516167456304E+023
+  3.376248320261620E+023
+  5.062816602079323E+023
+  7.468964294578240E+023
+  1.078238287496632E+024
+  1.515754949544884E+024
+  2.065349380200922E+024
+  2.719078522978870E+024
+  3.455518564784951E+024
+  4.242205925094256E+024
+  5.040031484862505E+024
+  5.808923074602138E+024
+  6.513366869897574E+024
+  7.126545257680660E+024
+  7.632452553030134E+024
+  8.025995074442603E+024
+  8.311546656201712E+024
+  8.500620114003403E+024
+  8.609269756586362E+024
+  8.655665372900306E+024
+  8.658078494186250E+024
+  8.633363452027332E+024
+  8.595921103955947E+024
+  8.557093048186063E+024
+  8.524926325848815E+024
+  8.504251410833630E+024
+  8.497016199723051E+024
+  8.502811810103152E+024
+  8.519515749173420E+024
+  8.543971338210210E+024
+  8.572625293277706E+024
+  8.602060210013040E+024
+  8.629382499872911E+024
+  8.652452827246337E+024
+  8.669969258940371E+024
+  8.681430253239068E+024
+  8.687014877018501E+024
+  8.687419898018824E+024
+  8.683685585500810E+024
+  8.677028764423996E+024
+  8.668695093130834E+024
+  8.659843000725065E+024
+  8.651464442655759E+024
+  8.644339663882539E+024
+  1.078602508259783E+025
+  1.078731942787738E+025
+  1.078874944184341E+025
+  1.079017511954424E+025
+  1.079138586369316E+025
+  1.079208843128127E+025
+  1.079190629676683E+025
+  1.079039323932730E+025
+  1.078706191140951E+025
+  1.078143014803522E+025
+  1.077308362182353E+025
+  1.076174904944646E+025
+  1.074737016070269E+025
+  1.073017590949808E+025
+  1.071072711386720E+025
+  1.068992583942052E+025
+  1.066897214363835E+025
+  1.064925528837332E+025
+  1.063217146394735E+025
+  1.061886774889841E+025
+  1.060992213397109E+025
+  1.060498078792906E+025
+  1.060238456688105E+025
+  1.059882522550890E+025
+  1.058907652959840E+025
+  1.056584612538079E+025
+  1.051979140054419E+025
+  1.043973829419039E+025
+  1.031313740580450E+025
+  1.012678621100359E+025
+  9.867835774449018E+024
+  9.525077799281827E+024
+  9.090464891066468E+024
+  8.560748586368552E+024
+  7.939029652717138E+024
+  7.235921233582502E+024
+  6.469964103880092E+024
+  5.666956329577906E+024
+  4.858012316435515E+024
+  4.076453807581093E+024
+  3.354001059571816E+024
+  2.715909197935869E+024
+  2.174369075679924E+024
+  1.728057622338849E+024
+  1.367779571397238E+024
+  1.081171758873024E+024
+  8.554591639814992E+023
+  6.788785161567572E+023
+  5.412752101340322E+023
+  4.342311930349392E+023
+  3.509538358406451E+023
+  2.860629961091050E+023
+  2.353521801842152E+023
+  1.955619808049509E+023
+  1.641821564696347E+023
+  1.392868941447335E+023
+  1.194018889915304E+023
+  1.033993225136361E+023
+  9.041608107119937E+022
+  7.979072133422890E+022
+  7.101523997757691E+022
+  6.369836505632911E+022
+  5.753772310504592E+022
+  5.229879529710695E+022
+  4.779904350180390E+022
+  4.389596589351602E+022
+  4.047814233204095E+022
+  3.745856564883635E+022
+  3.476974165853315E+022
+  3.236019515700320E+022
+  3.019216046964657E+022
+  2.824038622184604E+022
+  2.649217502557579E+022
+  2.494905227046251E+022
+  2.363087648977437E+022
+  2.258385750554072E+022
+  2.189496463382997E+022
+  2.171675167844945E+022
+  2.230889277625341E+022
+  2.410589557085076E+022
+  2.782460469917236E+022
+  3.462997661838982E+022
+  4.638224331063592E+022
+  6.599072397314224E+022
+  9.789476441726082E+022
+  1.486730318304962E+023
+  2.277373666393577E+023
+  3.479822668208497E+023
+  5.261222442525367E+023
+  7.822527490173566E+023
+  1.137937964762096E+024
+  1.611933699923052E+024
+  2.213477336050723E+024
+  2.937340099327754E+024
+  3.763668586926312E+024
+  4.660005292188854E+024
+  5.585490709058043E+024
+  6.496668477876700E+024
+  7.353408048817153E+024
+  8.123611016588928E+024
+  8.785923357652826E+024
+  9.330342211699635E+024
+  9.757121294857983E+024
+  1.007462337276573E+025
+  1.029676279720919E+025
+  1.044052434702084E+025
+  1.052384370082358E+025
+  1.056396419438350E+025
+  1.057627468550442E+025
+  1.057358108270680E+025
+  1.056574954408602E+025
+  1.055966086932916E+025
+  1.055941806968374E+025
+  1.056674635892661E+025
+  1.058151826387997E+025
+  1.060233172364020E+025
+  1.062707155740783E+025
+  1.065339695594802E+025
+  1.067911755089358E+025
+  1.070244281240810E+025
+  1.072210899709342E+025
+  1.073740272584971E+025
+  1.074811060953689E+025
+  1.075442805916715E+025
+  1.075685380245738E+025
+  1.075608390483493E+025
+  1.075291411734229E+025
+  1.074816208540723E+025
+  1.074261334014541E+025
+  1.073698636114867E+025
+  1.322082233438015E+025
+  1.322283611635837E+025
+  1.322458669994211E+025
+  1.322578869573805E+025
+  1.322610771462464E+025
+  1.322516023526399E+025
+  1.322252322434765E+025
+  1.321775450161691E+025
+  1.321042261007623E+025
+  1.320014807721257E+025
+  1.318665383325255E+025
+  1.316981839810633E+025
+  1.314972445426095E+025
+  1.312669361419456E+025
+  1.310129561872694E+025
+  1.307431909377988E+025
+  1.304669203765374E+025
+  1.301934316447121E+025
+  1.299300017829173E+025
+  1.296792823725780E+025
+  1.294362096523156E+025
+  1.291846626481427E+025
+  1.288941830062097E+025
+  1.285171384427572E+025
+  1.279867476145007E+025
+  1.272163875808938E+025
+  1.261005853999997E+025
+  1.245180670392220E+025
+  1.223372068990318E+025
+  1.194241738749382E+025
+  1.156539539848533E+025
+  1.109241637175017E+025
+  1.051710695360381E+025
+  9.838646121857627E+024
+  9.063305414839078E+024
+  8.205513535366008E+024
+  7.288062773579688E+024
+  6.341117271046385E+024
+  5.399866245442857E+024
+  4.500986265642617E+024
+  3.678466153253271E+024
+  2.958421397156861E+024
+  2.352185924464474E+024
+  1.856256747145601E+024
+  1.458767378719765E+024
+  1.144746018447034E+024
+  8.991314413094680E+023
+  7.082810177552372E+023
+  5.605590797307307E+023
+  4.464145329783126E+023
+  3.582066449858423E+023
+  2.899308705257038E+023
+  2.369269066685970E+023
+  1.956089151769550E+023
+  1.632338392879124E+023
+  1.377110175775065E+023
+  1.174501683988196E+023
+  1.012423644059019E+023
+  8.816809941934428E+022
+  7.752696103488619E+022
+  6.878419887480837E+022
+  6.153032752958383E+022
+  5.545069014906986E+022
+  5.030258351959723E+022
+  4.589809975076430E+022
+  4.209128256213687E+022
+  3.876854346586277E+022
+  3.584155300227822E+022
+  3.324203359997965E+022
+  3.091805338335533E+022
+  2.883157570546381E+022
+  2.695718233642601E+022
+  2.528209142297219E+022
+  2.380788004859058E+022
+  2.255476220492515E+022
+  2.156996400212592E+022
+  2.094281746677418E+022
+  2.083084685123160E+022
+  2.150356993412937E+022
+  2.341420426542891E+022
+  2.731407630256076E+022
+  3.443008305981553E+022
+  4.673113030535667E+022
+  6.731275285815354E+022
+  1.009254322105462E+023
+  1.546532669784885E+023
+  2.387030176749727E+023
+  3.671725840544791E+023
+  5.585158521466797E+023
+  8.351998746345527E+023
+  1.221779888213481E+024
+  1.740373228389963E+024
+  2.403359518169059E+024
+  3.207761819761202E+024
+  4.134655623046880E+024
+  5.150896347098613E+024
+  6.213270051698453E+024
+  7.274545291320137E+024
+  8.289871339922751E+024
+  9.222063153655081E+024
+  1.004486218125809E+025
+  1.074396366108918E+025
+  1.131617141854681E+025
+  1.176733651170531E+025
+  1.210976305609820E+025
+  1.235961836355580E+025
+  1.253467737093525E+025
+  1.265254592615346E+025
+  1.272938193082251E+025
+  1.277906896233981E+025
+  1.281277566452580E+025
+  1.283883387748733E+025
+  1.286287258072665E+025
+  1.288814529347726E+025
+  1.291598540385682E+025
+  1.294632141611424E+025
+  1.297818747379743E+025
+  1.301017618359096E+025
+  1.304079886974815E+025
+  1.306873804251380E+025
+  1.309299374307886E+025
+  1.311293860278597E+025
+  1.312830664706503E+025
+  1.313914537847824E+025
+  1.314575427488647E+025
+  1.314861971148038E+025
+  1.314835239869420E+025
+  1.314563819179573E+025
+  1.314120484264896E+025
+  1.313579768432745E+025
+  1.197616722224525E+025
+  1.197799717454286E+025
+  1.197957296374879E+025
+  1.198063264475653E+025
+  1.198087145163524E+025
+  1.197994212495155E+025
+  1.197746384965631E+025
+  1.197304061030419E+025
+  1.196628774630936E+025
+  1.195686836692401E+025
+  1.194453761828539E+025
+  1.192918907828928E+025
+  1.191089671542137E+025
+  1.188994428783375E+025
+  1.186683179539564E+025
+  1.184224763213717E+025
+  1.181699604367758E+025
+  1.179187214555223E+025
+  1.176748116951753E+025
+  1.174400498753676E+025
+  1.172092703233647E+025
+  1.169673550075497E+025
+  1.166863279212695E+025
+  1.163228516548585E+025
+  1.158164977449775E+025
+  1.150891655702708E+025
+  1.140460077188288E+025
+  1.125781954760779E+025
+  1.105678324102881E+025
+  1.078952820931625E+025
+  1.044490715314608E+025
+  1.001382916775276E+025
+  9.490696637766887E+024
+  8.874916961158600E+024
+  8.172279670618003E+024
+  7.395903473112068E+024
+  6.566409771270847E+024
+  5.711018375551356E+024
+  4.861426541963859E+024
+  4.050621404855592E+024
+  3.309125599186640E+024
+  2.660341000003451E+024
+  2.114351560932756E+024
+  1.667895893108555E+024
+  1.310204845488223E+024
+  1.027736154128537E+024
+  8.068866085514774E+023
+  6.353455067104542E+023
+  5.026202693083338E+023
+  4.001028810793436E+023
+  3.209103987046126E+023
+  2.596361820765448E+023
+  2.120857134410625E+023
+  1.750328195822655E+023
+  1.460105125758552E+023
+  1.231392341659418E+023
+  1.049897954642524E+023
+  9.047611522532948E+022
+  7.877241043582875E+022
+  6.924987499906465E+022
+  6.142858982658702E+022
+  5.494117799507180E+022
+  4.950543105732705E+022
+  4.490374281827467E+022
+  4.096768760225590E+022
+  3.756647979960363E+022
+  3.459836478355803E+022
+  3.198423459243096E+022
+  2.966295227341088E+022
+  2.758802434112444E+022
+  2.572540066049585E+022
+  2.405232769769362E+022
+  2.255736355118433E+022
+  2.124192234573908E+022
+  2.012411140384770E+022
+  1.924624497115733E+022
+  1.868838769765337E+022
+  1.859176571031878E+022
+  1.919808397781069E+022
+  2.091390746269989E+022
+  2.441341194633591E+022
+  3.079781529599363E+022
+  4.183483903843518E+022
+  6.030454864925480E+022
+  9.047467872556300E+022
+  1.387116963544835E+023
+  2.141920435864145E+023
+  3.295962944489871E+023
+  5.015321304047418E+023
+  7.502329926025167E+023
+  1.097835191840533E+024
+  1.564314813949936E+024
+  2.160924228093994E+024
+  2.885128286150788E+024
+  3.720052311451951E+024
+  4.636011897635681E+024
+  5.594223625341388E+024
+  6.552232626633176E+024
+  7.469662169804306E+024
+  8.312972611898230E+024
+  9.058407695894496E+024
+  9.692935732477113E+024
+  1.021350644867380E+025
+  1.062521120826235E+025
+  1.093896014307842E+025
+  1.116915948390683E+025
+  1.133168670771140E+025
+  1.144229444878889E+025
+  1.151546091964035E+025
+  1.156364631328733E+025
+  1.159689517595184E+025
+  1.162272432904005E+025
+  1.164623966536905E+025
+  1.167042583939988E+025
+  1.169655024378527E+025
+  1.172462061536223E+025
+  1.175383872068974E+025
+  1.178300301193608E+025
+  1.181082926734176E+025
+  1.183617569577408E+025
+  1.185817396902213E+025
+  1.187627934966453E+025
+  1.189026215165659E+025
+  1.190016675946461E+025
+  1.190625867690139E+025
+  1.190896835866761E+025
+  1.190883715936108E+025
+  1.190647502902249E+025
+  1.190253210065518E+025
+  1.189767775480084E+025
+  1.064310343756380E+025
+  1.064438253766906E+025
+  1.064579118982515E+025
+  1.064718990454484E+025
+  1.064837014390997E+025
+  1.064904274109208E+025
+  1.064883754332011E+025
+  1.064731702703933E+025
+  1.064400455470076E+025
+  1.063842994542235E+025
+  1.063019098446082E+025
+  1.061902514273223E+025
+  1.060488381597224E+025
+  1.058799874584990E+025
+  1.056892707638435E+025
+  1.054855966622535E+025
+  1.052807758660629E+025
+  1.050884420425746E+025
+  1.049222512166026E+025
+  1.047933580569507E+025
+  1.047072666145887E+025
+  1.046602644311778E+025
+  1.046357550138577E+025
+  1.046008864015955E+025
+  1.045039197541232E+025
+  1.042727880682436E+025
+  1.038152693308240E+025
+  1.030211566085740E+025
+  1.017667626853310E+025
+  9.992204271047777E+024
+  9.736051596956327E+024
+  9.397194583367551E+024
+  8.967731365331504E+024
+  8.444494885273119E+024
+  7.830578967996679E+024
+  7.136482317550534E+024
+  6.380514956112413E+024
+  5.588134491860540E+024
+  4.790030256625997E+024
+  4.019056903062851E+024
+  3.306479434924459E+024
+  2.677179856750141E+024
+  2.143155087435088E+024
+  1.703078659955144E+024
+  1.347865919211672E+024
+  1.065312956462523E+024
+  8.428136735475949E+023
+  6.687627332137908E+023
+  5.331433505067771E+023
+  4.276527158378239E+023
+  3.455918843156660E+023
+  2.816554150535529E+023
+  2.316955862126353E+023
+  1.924988028343256E+023
+  1.615903117023718E+023
+  1.370716823029658E+023
+  1.174896922585093E+023
+  1.017327429484175E+023
+  8.895020493323918E+022
+  7.849025737672859E+022
+  6.985233033528722E+022
+  6.265091085890147E+022
+  5.658810236696600E+022
+  5.143287880501007E+022
+  4.700543645264301E+022
+  4.316542004676808E+022
+  3.980309642149714E+022
+  3.683278158236594E+022
+  3.418801125122169E+022
+  3.181809720868337E+022
+  2.968585107080732E+022
+  2.776640609132754E+022
+  2.604725585648489E+022
+  2.452989827650980E+022
+  2.323388548958011E+022
+  2.220472454724260E+022
+  2.152807515153257E+022
+  2.135421300303654E+022
+  2.193896241050753E+022
+  2.371042961050580E+022
+  2.737495729500567E+022
+  3.408052296729009E+022
+  4.566038051183894E+022
+  6.498186576583624E+022
+  9.642059060261919E+022
+  1.464612908659200E+023
+  2.243822266386656E+023
+  3.428961253670793E+023
+  5.184837739050693E+023
+  7.709625321031886E+023
+  1.121602757874381E+024
+  1.588912482726898E+024
+  2.182022284853277E+024
+  2.895804992169270E+024
+  3.710715048285478E+024
+  4.594775640604556E+024
+  5.507717097982272E+024
+  6.406697187022637E+024
+  7.252139363448597E+024
+  8.012373954973997E+024
+  8.666314957759904E+024
+  9.204061894554039E+024
+  9.625824407769080E+024
+  9.939808359677344E+024
+  1.015969710086885E+025
+  1.030220722480701E+025
+  1.038500018376332E+025
+  1.042506291468871E+025
+  1.043756230982572E+025
+  1.043512678395294E+025
+  1.042749381614245E+025
+  1.042146384897826E+025
+  1.042110339788013E+025
+  1.042813758036132E+025
+  1.044246588118773E+025
+  1.046273024013611E+025
+  1.048686700805362E+025
+  1.051258635259419E+025
+  1.053774223009764E+025
+  1.056057787709172E+025
+  1.057985098667338E+025
+  1.059485740331600E+025
+  1.060538229064471E+025
+  1.061161124861743E+025
+  1.061402731453873E+025
+  1.061330743105249E+025
+  1.061022715539657E+025
+  1.060558485641924E+025
+  1.060014908202202E+025
+  1.059462446404257E+025
+  8.981250115541961E+024
+  8.981554920192668E+024
+  8.982597292675209E+024
+  8.984439735030437E+024
+  8.987034564733357E+024
+  8.990189690034302E+024
+  8.993548035992733E+024
+  8.996586337269716E+024
+  8.998637073754942E+024
+  8.998938359143197E+024
+  8.996712146965142E+024
+  8.991266043380674E+024
+  8.982110640288009E+024
+  8.969080135426746E+024
+  8.952439352221215E+024
+  8.932956954629383E+024
+  8.911923592278378E+024
+  8.891095250934198E+024
+  8.872546759394938E+024
+  8.858428703651134E+024
+  8.850632707485193E+024
+  8.850383932155468E+024
+  8.857793674324615E+024
+  8.871416721596220E+024
+  8.887865624868627E+024
+  8.901536265444426E+024
+  8.904496498771919E+024
+  8.886584003884177E+024
+  8.835752780928359E+024
+  8.738700569829846E+024
+  8.581799159820799E+024
+  8.352329709981688E+024
+  8.039987258896681E+024
+  7.638555807103991E+024
+  7.147568206085691E+024
+  6.573667701401042E+024
+  5.931313850047875E+024
+  5.242475919838579E+024
+  4.535081613647557E+024
+  3.840253375436927E+024
+  3.188723899049791E+024
+  2.606067458254433E+024
+  2.106053720089752E+024
+  1.689701565015076E+024
+  1.350289881827051E+024
+  1.077694464994505E+024
+  8.609996335003849E+023
+  6.899022315147881E+023
+  5.553491023265440E+023
+  4.497275885558698E+023
+  3.668189109333516E+023
+  3.016424284162604E+023
+  2.502635981584211E+023
+  2.096038038318769E+023
+  1.772697448268205E+023
+  1.514086547901564E+023
+  1.305896573601902E+023
+  1.137087754635595E+023
+  9.991408507946728E+022
+  8.854740156919182E+022
+  7.909921264932925E+022
+  7.117405399398505E+022
+  6.446402387909376E+022
+  5.872859142491129E+022
+  5.377924709503387E+022
+  4.946787063106314E+022
+  4.567795534820948E+022
+  4.231803786784120E+022
+  3.931685111891039E+022
+  3.661986061368225E+022
+  3.418697729852093E+022
+  3.199138674969195E+022
+  3.001962359265167E+022
+  2.827329365871340E+022
+  2.677326573074579E+022
+  2.556780795768656E+022
+  2.474715255379722E+022
+  2.446849092972949E+022
+  2.499760286201246E+022
+  2.677635225502819E+022
+  3.052914765954027E+022
+  3.742583019613668E+022
+  4.932225893022407E+022
+  6.910076436852377E+022
+  1.011262253873087E+023
+  1.518125334175893E+023
+  2.302481867702324E+023
+  3.487461516102605E+023
+  5.230513275219943E+023
+  7.717591171789348E+023
+  1.114296823839157E+024
+  1.566670595948797E+024
+  2.135031324837897E+024
+  2.811222501910859E+024
+  3.573148836531094E+024
+  4.387290009436821E+024
+  5.213235005318410E+024
+  6.009551663190304E+024
+  6.739494207606662E+024
+  7.375284738596462E+024
+  7.900307136076625E+024
+  8.309218353882292E+024
+  8.606462575618880E+024
+  8.803870110547456E+024
+  8.917976546140334E+024
+  8.967517551196330E+024
+  8.971348568875359E+024
+  8.946875030887181E+024
+  8.908980771989911E+024
+  8.869400793301919E+024
+  8.836476358928667E+024
+  8.815233308486344E+024
+  8.807724446038912E+024
+  8.813569831062803E+024
+  8.830618299797302E+024
+  8.855646691386582E+024
+  8.885016345340689E+024
+  8.915221693406770E+024
+  8.943290251027960E+024
+  8.967020613148579E+024
+  8.985068953775188E+024
+  8.996911978491401E+024
+  9.002724804088836E+024
+  9.003214469951833E+024
+  8.999441719699322E+024
+  8.992650126466030E+024
+  8.984114926471337E+024
+  8.975024260352932E+024
+  8.966397965261634E+024
+  8.959041020125816E+024
+  7.256009996601465E+024
+  7.255049114461917E+024
+  7.255509371375409E+024
+  7.257695454999559E+024
+  7.261757978316048E+024
+  7.267629808074712E+024
+  7.274976574306379E+024
+  7.283170226227942E+024
+  7.291293021324072E+024
+  7.298179682502883E+024
+  7.302500925062233E+024
+  7.302886099244121E+024
+  7.298078170323147E+024
+  7.287108751254200E+024
+  7.269474774845111E+024
+  7.245293322692903E+024
+  7.215408126279455E+024
+  7.181420962401604E+024
+  7.145624449305578E+024
+  7.110820421782410E+024
+  7.080020207506142E+024
+  7.056038705534852E+024
+  7.041011066645344E+024
+  7.035876219108422E+024
+  7.039882743564246E+024
+  7.050177848380306E+024
+  7.061539202491646E+024
+  7.066303632236195E+024
+  7.054538589731441E+024
+  7.014493515135179E+024
+  6.933357719708937E+024
+  6.798334374292902E+024
+  6.598008733526587E+024
+  6.323935090280496E+024
+  5.972288577097165E+024
+  5.545334079230454E+024
+  5.052383004236834E+024
+  4.509886443712110E+024
+  3.940401099712587E+024
+  3.370386543561868E+024
+  2.827119674725031E+024
+  2.334369265859452E+024
+  1.906161466424821E+024
+  1.545427982137207E+024
+  1.248078958571102E+024
+  1.006687099266612E+024
+  8.127704845916480E+023
+  6.580690272959162E+023
+  5.351663856691233E+023
+  4.377192717527495E+023
+  3.604701448724679E+023
+  2.991531994908608E+023
+  2.503579758207615E+023
+  2.113856845078938E+023
+  1.801156564207069E+023
+  1.548891753873788E+023
+  1.344124299283191E+023
+  1.176775483215654E+023
+  1.038994910793815E+023
+  9.246624808407635E+022
+  8.289989150175906E+022
+  7.482632287286940E+022
+  6.795189351187785E+022
+  6.204540977527606E+022
+  5.692433270650377E+022
+  5.244423602725385E+022
+  4.849079687688688E+022
+  4.497376462027428E+022
+  4.182249285456384E+022
+  3.898274025855959E+022
+  3.641456239777119E+022
+  3.409124883132010E+022
+  3.199943485523846E+022
+  3.014077355670947E+022
+  2.853594774223122E+022
+  2.723241290269916E+022
+  2.631819996743137E+022
+  2.594550372833311E+022
+  2.636977989334774E+022
+  2.801276870019784E+022
+  3.156120536616773E+022
+  3.811656783218261E+022
+  4.941396318751269E+022
+  6.812788850961037E+022
+  9.827502368065933E+022
+  1.457029394733311E+023
+  2.186097170257675E+023
+  3.279629904624842E+023
+  4.875708449434427E+023
+  7.134053966121566E+023
+  1.021620948058261E+024
+  1.424613000917164E+024
+  1.925284611462744E+024
+  2.513383359183390E+024
+  3.166375980713102E+024
+  3.852280593111938E+024
+  4.534212138767527E+024
+  5.175897563026817E+024
+  5.746755012457796E+024
+  6.225432077993311E+024
+  6.601306551648825E+024
+  6.874073669610853E+024
+  7.051955259575079E+024
+  7.149200181387666E+024
+  7.183460925277748E+024
+  7.173440251099957E+024
+  7.137004785211243E+024
+  7.089817164281037E+024
+  7.044458382983861E+024
+  7.009982893692979E+024
+  6.991846279261807E+024
+  6.992147960160657E+024
+  7.010127962038401E+024
+  7.042845822267645E+024
+  7.085956812769543E+024
+  7.134493874569321E+024
+  7.183569214076740E+024
+  7.228928793170080E+024
+  7.267321905850383E+024
+  7.296679238430828E+024
+  7.316119234079142E+024
+  7.325820664495589E+024
+  7.326808581604097E+024
+  7.320700804544211E+024
+  7.309452170834536E+024
+  7.295119058876867E+024
+  7.279658352674927E+024
+  7.264773606033836E+024
+  7.251813969417012E+024
+  7.241723888879424E+024
+  6.386181166539097E+024
+  6.384845830488067E+024
+  6.385056597197831E+024
+  6.387177894837192E+024
+  6.391416221130479E+024
+  6.397750037055374E+024
+  6.405872564489775E+024
+  6.415156746090302E+024
+  6.424650454911809E+024
+  6.433110287008945E+024
+  6.439078068958897E+024
+  6.440999070525817E+024
+  6.437376427552329E+024
+  6.426950769791525E+024
+  6.408887864626686E+024
+  6.382951751106330E+024
+  6.349637304918987E+024
+  6.310235118799418E+024
+  6.266803924656004E+024
+  6.222032412096165E+024
+  6.178983436373580E+024
+  6.140728409332866E+024
+  6.109896199996896E+024
+  6.088176470854136E+024
+  6.075829289116657E+024
+  6.071259076692352E+024
+  6.070710981106413E+024
+  6.068142750237293E+024
+  6.055317436251632E+024
+  6.022153578881513E+024
+  5.957359509564401E+024
+  5.849363196364386E+024
+  5.687521719257612E+024
+  5.463547705328575E+024
+  5.173020660412374E+024
+  4.816766150428509E+024
+  4.401808966408718E+024
+  3.941579496800546E+024
+  3.455122254345540E+024
+  2.965246760502244E+024
+  2.495851549975557E+024
+  2.068092097714902E+024
+  1.694782453426558E+024
+  1.379046391058283E+024
+  1.117793723925743E+024
+  9.049144417241637E+023
+  7.332756113475641E+023
+  5.958513804028377E+023
+  4.862847986412897E+023
+  3.991058276429009E+023
+  3.297573834337455E+023
+  2.745249460779445E+023
+  2.304261464089633E+023
+  1.950914755806883E+023
+  1.666518751698499E+023
+  1.436400496713863E+023
+  1.249074330782010E+023
+  1.095562270557283E+023
+  9.688480554696597E+022
+  8.634442796557674E+022
+  7.750524231499302E+022
+  7.002977218905919E+022
+  6.365235144593716E+022
+  5.816324110901027E+022
+  5.339640990628980E+022
+  4.922017326743925E+022
+  4.553006370643210E+022
+  4.224345124331989E+022
+  3.929555255686455E+022
+  3.663657194182849E+022
+  3.422981920875178E+022
+  3.205076698467553E+022
+  3.008716655562493E+022
+  2.834057196854095E+022
+  2.682997680449853E+022
+  2.559881821968540E+022
+  2.472744426327046E+022
+  2.435438978075379E+022
+  2.471158308329691E+022
+  2.618098665884405E+022
+  2.938309712804990E+022
+  3.531080809827068E+022
+  4.552436805528027E+022
+  6.242247500335086E+022
+  8.959727166141550E+022
+  1.322614128188081E+023
+  1.976957264456164E+023
+  2.955978495122244E+023
+  4.381101758983799E+023
+  6.391743022439369E+023
+  9.127252535936003E+023
+  1.269165580595352E+024
+  1.710303293807338E+024
+  2.226216556087006E+024
+  2.796204163869712E+024
+  3.391475233237431E+024
+  3.979318732900738E+024
+  4.528054498914579E+024
+  5.011502938547814E+024
+  5.412006792368252E+024
+  5.721598521826949E+024
+  5.941462620110826E+024
+  6.080199150467567E+024
+  6.151499224290789E+024
+  6.171754351047508E+024
+  6.157943281875647E+024
+  6.125962051470687E+024
+  6.089434921637367E+024
+  6.058975649073264E+024
+  6.041845019930477E+024
+  6.041949174456480E+024
+  6.060125121450757E+024
+  6.094655400012020E+024
+  6.141942643134991E+024
+  6.197262549173187E+024
+  6.255508112040501E+024
+  6.311844462200242E+024
+  6.362213207343592E+024
+  6.403653536761048E+024
+  6.434437336166900E+024
+  6.454040469848658E+024
+  6.462988921806891E+024
+  6.462626364706041E+024
+  6.454848799171931E+024
+  6.441841927867453E+024
+  6.425842740604576E+024
+  6.408938579112408E+024
+  6.392915282807172E+024
+  6.379159429768064E+024
+  6.368612751531989E+024
+  7.416664061420548E+024
+  7.415711684387966E+024
+  7.416189414412191E+024
+  7.418402043944601E+024
+  7.422498705025178E+024
+  7.428408705840914E+024
+  7.435791737881211E+024
+  7.444011396006448E+024
+  7.452139445458182E+024
+  7.458998645123229E+024
+  7.463247335324370E+024
+  7.463503466568286E+024
+  7.458501178280001E+024
+  7.447267472386921E+024
+  7.429300330549971E+024
+  7.404724505961095E+024
+  7.374398204052555E+024
+  7.339943595126708E+024
+  7.303677451973840E+024
+  7.268425995314037E+024
+  7.237220341741150E+024
+  7.212884728129339E+024
+  7.197546789484951E+024
+  7.192114785302662E+024
+  7.195778044792177E+024
+  7.205592191211261E+024
+  7.216209686293840E+024
+  7.219810416694121E+024
+  7.206278857910746E+024
+  7.163665460011934E+024
+  7.078959231182463E+024
+  6.939181110389653E+024
+  6.732775626490266E+024
+  6.451223677908072E+024
+  6.090719504484104E+024
+  5.653659573023575E+024
+  5.149608508995273E+024
+  4.595385157846777E+024
+  4.014001832681965E+024
+  3.432416283749567E+024
+  2.878388878124251E+024
+  2.376082129295326E+024
+  1.939722571004099E+024
+  1.572237811740941E+024
+  1.269412530815321E+024
+  1.023643089852930E+024
+  8.262621361898446E+023
+  6.688370263209828E+023
+  5.438012958077242E+023
+  4.446863996881499E+023
+  3.661331420582531E+023
+  3.037947679157306E+023
+  2.541972014288815E+023
+  2.145921140319493E+023
+  1.828204966909368E+023
+  1.571940770080530E+023
+  1.363963080853995E+023
+  1.194018430783007E+023
+  1.054122055875352E+023
+  9.380503983178463E+022
+  8.409443532464332E+022
+  7.590011700175852E+022
+  6.892364135584790E+022
+  6.293007949838802E+022
+  5.773397273095515E+022
+  5.318860616518514E+022
+  4.917786075840452E+022
+  4.561007852493933E+022
+  4.241351826197409E+022
+  3.953310195394675E+022
+  3.692827063252592E+022
+  3.457190303090757E+022
+  3.245042834051247E+022
+  3.056552501438369E+022
+  2.893819803035600E+022
+  2.761664889396702E+022
+  2.669030614836367E+022
+  2.631380532456851E+022
+  2.674673938291731E+022
+  2.841774423948404E+022
+  3.202488897834751E+022
+  3.868800258345128E+022
+  5.017138555726580E+022
+  6.919501208873753E+022
+  9.984466136471590E+022
+  1.480698258655789E+023
+  2.222136435757719E+023
+  3.334412965009618E+023
+  4.958151240764887E+023
+  7.256101574463920E+023
+  1.039301463938989E+024
+  1.449556401199700E+024
+  1.959398224406267E+024
+  2.558469882500010E+024
+  3.223910885885414E+024
+  3.923225488157124E+024
+  4.618896713155151E+024
+  5.273992756528792E+024
+  5.857336705361339E+024
+  6.347114375969390E+024
+  6.732412638436805E+024
+  7.012811525344932E+024
+  7.196572609844004E+024
+  7.298103494887420E+024
+  7.335293276692191E+024
+  7.327120205485102E+024
+  7.291732613014972E+024
+  7.245056241343658E+024
+  7.199899555510662E+024
+  7.165498778131599E+024
+  7.147441469063617E+024
+  7.147910133503863E+024
+  7.166183913103369E+024
+  7.199325385540175E+024
+  7.242966469151459E+024
+  7.292100572568177E+024
+  7.341793751796702E+024
+  7.387747160753085E+024
+  7.426672411049739E+024
+  7.456473061294746E+024
+  7.476252222133141E+024
+  7.486184592939009E+024
+  7.487300670171610E+024
+  7.481230884978702E+024
+  7.469947373280185E+024
+  7.455526142671044E+024
+  7.439943968495451E+024
+  7.424922962368448E+024
+  7.411828440123682E+024
+  7.401618028907458E+024
+  8.572792682120882E+024
+  8.573078210131693E+024
+  8.574072359993901E+024
+  8.575836079786573E+024
+  8.578324756192125E+024
+  8.581355374089093E+024
+  8.584586741666499E+024
+  8.587518262409622E+024
+  8.589510881586005E+024
+  8.589834816475730E+024
+  8.587744427775928E+024
+  8.582575733834662E+024
+  8.573858833525090E+024
+  8.561433530560147E+024
+  8.545551995076705E+024
+  8.526949118748842E+024
+  8.506860198978563E+024
+  8.486967055106960E+024
+  8.469258149611813E+024
+  8.455796226815803E+024
+  8.448398185398541E+024
+  8.448245198846727E+024
+  8.455454526160307E+024
+  8.468655735675588E+024
+  8.484621249180831E+024
+  8.498003241359722E+024
+  8.501226445216441E+024
+  8.484580999585848E+024
+  8.436553068733363E+024
+  8.344424100771750E+024
+  8.195159744572780E+024
+  7.976590488935242E+024
+  7.678849850760219E+024
+  7.295975946705871E+024
+  6.827498989987637E+024
+  6.279744134644848E+024
+  5.666508144474998E+024
+  5.008768589890999E+024
+  4.333203340012150E+024
+  3.669550740093835E+024
+  3.047184363271692E+024
+  2.490554926960736E+024
+  2.012836510756386E+024
+  1.615018820648798E+024
+  1.290693189960248E+024
+  1.030196097423793E+024
+  8.231048521682187E+023
+  6.595796573730609E+023
+  5.309732927653153E+023
+  4.300136466936198E+023
+  3.507595774694450E+023
+  2.884524106291942E+023
+  2.393326646214445E+023
+  2.004584932589862E+023
+  1.695427675167615E+023
+  1.448148007163520E+023
+  1.249070225478912E+023
+  1.087642371669806E+023
+  9.557211837675094E+022
+  8.470149484406530E+022
+  7.566528843616755E+022
+  6.808542827440955E+022
+  6.166754059789914E+022
+  5.618165183489140E+022
+  5.144751854696194E+022
+  4.732350971121241E+022
+  4.369821869719943E+022
+  4.048418302383822E+022
+  3.761325118942242E+022
+  3.503327170072774E+022
+  3.270590680007841E+022
+  3.060551337697502E+022
+  2.871921431660876E+022
+  2.704854511933645E+022
+  2.561346149612454E+022
+  2.446011809224272E+022
+  2.367479254876690E+022
+  2.340778057855631E+022
+  2.391319178718693E+022
+  2.561347056007832E+022
+  2.920115985146277E+022
+  3.579459469316737E+022
+  4.716784658376370E+022
+  6.607609287575365E+022
+  9.669144195968726E+022
+  1.451441669589646E+023
+  2.201203003365034E+023
+  3.333866277281736E+023
+  4.999881712499362E+023
+  7.376914430320459E+023
+  1.065054059544996E+024
+  1.497359165625743E+024
+  2.040466506805773E+024
+  2.686559562490924E+024
+  3.414501286234767E+024
+  4.192240299549315E+024
+  4.981147660101257E+024
+  5.741628343611372E+024
+  6.438576069932329E+024
+  7.045463562874581E+024
+  7.546436570212477E+024
+  7.936417135554416E+024
+  8.219680727708966E+024
+  8.407559285537490E+024
+  8.515877656769723E+024
+  8.562558570562977E+024
+  8.565634174600982E+024
+  8.541745810101604E+024
+  8.505120136937846E+024
+  8.466970090313316E+024
+  8.435261389669347E+024
+  8.414788102494470E+024
+  8.407500730443411E+024
+  8.413023532722271E+024
+  8.429287739735708E+024
+  8.453200741704660E+024
+  8.481274292569126E+024
+  8.510149369211817E+024
+  8.536978756111564E+024
+  8.559654553825633E+024
+  8.576890680307631E+024
+  8.588187133245558E+024
+  8.593712846249593E+024
+  8.594146096622820E+024
+  8.590503704213221E+024
+  8.583977288984754E+024
+  8.575788430977804E+024
+  8.567074881706069E+024
+  8.558812753505354E+024
+  8.551771930140232E+024
+  1.056988616083702E+025
+  1.057121344573319E+025
+  1.057261657009948E+025
+  1.057394263286359E+025
+  1.057497467913698E+025
+  1.057542208424830E+025
+  1.057492162452550E+025
+  1.057305166976415E+025
+  1.056935989694440E+025
+  1.056340698548729E+025
+  1.055482484084097E+025
+  1.054338370967835E+025
+  1.052906076779730E+025
+  1.051210031019638E+025
+  1.049305265865859E+025
+  1.047277722856349E+025
+  1.045239559656878E+025
+  1.043318287185775E+025
+  1.041639040971056E+025
+  1.040300018022080E+025
+  1.039342060463108E+025
+  1.038714428050321E+025
+  1.038239807372648E+025
+  1.037582384951869E+025
+  1.036223242105557E+025
+  1.033447381988051E+025
+  1.028346454078922E+025
+  1.019840851378353E+025
+  1.006724439250438E+025
+  9.877346609694281E+024
+  9.616497626962720E+024
+  9.274126867959979E+024
+  8.842770069618845E+024
+  8.319636623941432E+024
+  7.708085711455752E+024
+  7.018722156687207E+024
+  6.269765373363145E+024
+  5.486369175769586E+024
+  4.698719608585787E+024
+  3.939016319027823E+024
+  3.237794628689934E+024
+  2.619247824201657E+024
+  2.094897343960493E+024
+  1.663213779693210E+024
+  1.315099689027717E+024
+  1.038444066286784E+024
+  8.207827033371114E+023
+  6.506662741847295E+023
+  5.182285797417134E+023
+  4.153023464036011E+023
+  3.353054940192810E+023
+  2.730305300693811E+023
+  2.244102386490962E+023
+  1.862962912588193E+023
+  1.562663351213515E+023
+  1.324637263840911E+023
+  1.134684137539191E+023
+  9.819505587130005E+022
+  8.581377760610199E+022
+  7.568915762725394E+022
+  6.733359252814496E+022
+  6.037183559030657E+022
+  5.451413389532438E+022
+  4.953593514237249E+022
+  4.526259210838980E+022
+  4.155786189389622E+022
+  3.831528953307153E+022
+  3.545179473371628E+022
+  3.290296159747128E+022
+  3.061968070497513E+022
+  2.856592943666289E+022
+  2.671762197260188E+022
+  2.506264405417512E+022
+  2.360245022980965E+022
+  2.235600289916898E+022
+  2.136746033405742E+022
+  2.071999741872489E+022
+  2.055962874499090E+022
+  2.113508796562082E+022
+  2.286287880970588E+022
+  2.643062434538467E+022
+  3.295656819008049E+022
+  4.422761981648222E+022
+  6.304052133114202E+022
+  9.366629331646957E+022
+  1.424398110766536E+023
+  2.184332312188942E+023
+  3.340900934435268E+023
+  5.055628867885120E+023
+  7.523064229078783E+023
+  1.095253030412489E+024
+  1.552703428636748E+024
+  2.133855342527208E+024
+  2.834001781034078E+024
+  3.634325126775600E+024
+  4.503786536454410E+024
+  5.403125963126583E+024
+  6.290428215496670E+024
+  7.126829957872586E+024
+  7.881080071588695E+024
+  8.532195074337258E+024
+  9.070091107532658E+024
+  9.494572359981799E+024
+  9.813295131098568E+024
+  1.003932557589289E+025
+  1.018876100619596E+025
+  1.027869228971701E+025
+  1.032562033680412E+025
+  1.034433300208049E+025
+  1.034719741394220E+025
+  1.034380807463117E+025
+  1.034093234772785E+025
+  1.034269755085067E+025
+  1.035096169944292E+025
+  1.036580413116227E+025
+  1.038606789882184E+025
+  1.040988825375354E+025
+  1.043515307585766E+025
+  1.045985977350343E+025
+  1.048235400243692E+025
+  1.050145385045616E+025
+  1.051647715257049E+025
+  1.052719940112423E+025
+  1.053377323694070E+025
+  1.053663422316676E+025
+  1.053640561996453E+025
+  1.053381035103487E+025
+  1.052960098127759E+025
+  1.052451113240623E+025
+  1.051922360742607E+025
+  1.282295112171372E+025
+  1.282492160664391E+025
+  1.282661301497370E+025
+  1.282774259351075E+025
+  1.282798224216156E+025
+  1.282695920254682E+025
+  1.282426596868799E+025
+  1.281948025008283E+025
+  1.281219364578435E+025
+  1.280205076987300E+025
+  1.278879664560259E+025
+  1.277232621042350E+025
+  1.275272888407218E+025
+  1.273031949603225E+025
+  1.270564446240944E+025
+  1.267945108837195E+025
+  1.265260891903630E+025
+  1.262597492261990E+025
+  1.260019903122509E+025
+  1.257547340864662E+025
+  1.255123745188603E+025
+  1.252585990269497E+025
+  1.249632804913259E+025
+  1.245798041109379E+025
+  1.240432265538866E+025
+  1.232696678401192E+025
+  1.221573180790356E+025
+  1.205894151075728E+025
+  1.184395216846402E+025
+  1.155793861901086E+025
+  1.118895591042198E+025
+  1.072726803844803E+025
+  1.016688708600434E+025
+  9.507192003767944E+024
+  8.754402643651309E+024
+  7.922592529324190E+024
+  7.033872571520240E+024
+  6.117420003855959E+024
+  5.207204153976024E+024
+  4.338570241541863E+024
+  3.544216960100872E+024
+  2.849209292001489E+024
+  2.264342563402422E+024
+  1.786115866246714E+024
+  1.402986669804578E+024
+  1.100443099483510E+024
+  8.639093105245631E+023
+  6.801951889488910E+023
+  5.380591784587872E+023
+  4.282792248371458E+023
+  3.434817217191598E+023
+  2.778748592495281E+023
+  2.269655016476364E+023
+  1.872979551478310E+023
+  1.562298479079952E+023
+  1.317480988463739E+023
+  1.123220685577823E+023
+  9.678864223100568E+022
+  8.426351402004269E+022
+  7.407335248651135E+022
+  6.570428538511348E+022
+  5.876296784185879E+022
+  5.294726156963581E+022
+  4.802420675570376E+022
+  4.381350484708996E+022
+  4.017515883754320E+022
+  3.700025337173352E+022
+  3.420411767582103E+022
+  3.172131842973116E+022
+  2.950209634857049E+022
+  2.751001005225927E+022
+  2.572070784682357E+022
+  2.412194343305981E+022
+  2.271522906201361E+022
+  2.151994347849263E+022
+  2.058137623515962E+022
+  1.998522799862211E+022
+  1.988267628093446E+022
+  2.053247300353492E+022
+  2.236988065691060E+022
+  2.611669751717433E+022
+  3.295198462018141E+022
+  4.476850813556470E+022
+  6.454312931032075E+022
+  9.684591247262221E+022
+  1.484946860805430E+023
+  2.293170244337646E+023
+  3.528941163471153E+023
+  5.370144220186793E+023
+  8.033517771878146E+023
+  1.175621062746624E+024
+  1.675227177481290E+024
+  2.314235056944603E+024
+  3.089944065564646E+024
+  3.984293283724908E+024
+  4.965496446339836E+024
+  5.992013532373881E+024
+  7.018362734766074E+024
+  8.001279233609448E+024
+  8.904814610213295E+024
+  9.703495802023247E+024
+  1.038333667065743E+025
+  1.094104511377810E+025
+  1.138205482301429E+025
+  1.171803873432913E+025
+  1.196442189156740E+025
+  1.213821264747718E+025
+  1.225629260285756E+025
+  1.233418439507496E+025
+  1.238525399610187E+025
+  1.242028330457791E+025
+  1.244734839680073E+025
+  1.247194284790705E+025
+  1.249728630918720E+025
+  1.252475572415518E+025
+  1.255437435366525E+025
+  1.258529706275083E+025
+  1.261624144073745E+025
+  1.264583152896354E+025
+  1.267283958473900E+025
+  1.269632733213191E+025
+  1.271570068339765E+025
+  1.273070164034170E+025
+  1.274136537567418E+025
+  1.274796435825517E+025
+  1.275094886922342E+025
+  1.275088961656852E+025
+  1.274843275723290E+025
+  1.274426962465261E+025
+  1.273911429953334E+025
+  1.220583749541592E+025
+  1.220770129677755E+025
+  1.220932422683112E+025
+  1.221044280094987E+025
+  1.221074802169849E+025
+  1.220988530540607E+025
+  1.220746350051110E+025
+  1.220307393190747E+025
+  1.219631833512928E+025
+  1.218684741361115E+025
+  1.217440793078059E+025
+  1.215889239477511E+025
+  1.214038445567895E+025
+  1.211919144655875E+025
+  1.209585311212877E+025
+  1.207111454211158E+025
+  1.204585230031750E+025
+  1.202094549192147E+025
+  1.199708812168612E+025
+  1.197454578554207E+025
+  1.195286820305300E+025
+  1.193057829968209E+025
+  1.190486701488422E+025
+  1.187132933861161E+025
+  1.182378038875425E+025
+  1.175419061901543E+025
+  1.165277737941509E+025
+  1.150828737382046E+025
+  1.130850175397732E+025
+  1.104099119336674E+025
+  1.069413757786175E+025
+  1.025841438499326E+025
+  9.727871703219673E+024
+  9.101700782989465E+024
+  8.385662923092428E+024
+  7.593078453832776E+024
+  6.745021335350822E+024
+  5.869404067461990E+024
+  4.998806958851924E+024
+  4.167203000638982E+024
+  3.406090493183362E+024
+  2.739687909946564E+024
+  2.178531220562067E+024
+  1.719415544318313E+024
+  1.351385111406317E+024
+  1.060601159307910E+024
+  8.331352099124735E+023
+  6.563667392733888E+023
+  5.195293570861205E+023
+  4.137838764471114E+023
+  3.320579555452604E+023
+  2.687929346979137E+023
+  2.196740133218292E+023
+  1.813807935553575E+023
+  1.513729804031175E+023
+  1.277142383515665E+023
+  1.089315208304293E+023
+  9.390490945489537E+022
+  8.178251535532504E+022
+  7.191537137040001E+022
+  6.380795984226049E+022
+  5.708080489942410E+022
+  5.144228530517745E+022
+  4.666744788401386E+022
+  4.258211415141140E+022
+  3.905098244572259E+022
+  3.596874920378522E+022
+  3.325352275488615E+022
+  3.084199868813463E+022
+  2.868602577626467E+022
+  2.675033539148718E+022
+  2.501135847165061E+022
+  2.345724233919633E+022
+  2.208944718542024E+022
+  2.092671063029535E+022
+  2.001280900919423E+022
+  1.943054415142808E+022
+  1.932591525734836E+022
+  1.994870333916199E+022
+  2.171890666547659E+022
+  2.533273166431493E+022
+  3.192698132194067E+022
+  4.332583757266289E+022
+  6.239705862026989E+022
+  9.354117096558381E+022
+  1.433197364522115E+023
+  2.211855472422044E+023
+  3.401933284910378E+023
+  5.174286553591659E+023
+  7.736882459342075E+023
+  1.131694586015076E+024
+  1.611901981446171E+024
+  2.225735721190475E+024
+  2.970391549172213E+024
+  3.828294315889070E+024
+  4.768705022099661E+024
+  5.751571762963770E+024
+  6.733139404299684E+024
+  7.671877009931416E+024
+  8.533371130873432E+024
+  9.293342126646541E+024
+  9.938590816759812E+024
+  1.046621094481600E+025
+  1.088167608038198E+025
+  1.119643410831769E+025
+  1.142550668517355E+025
+  1.158539899009476E+025
+  1.169245336242782E+025
+  1.176166421735186E+025
+  1.180591214354792E+025
+  1.183555544569305E+025
+  1.185831716420958E+025
+  1.187940940697348E+025
+  1.190183730474997E+025
+  1.192682188311497E+025
+  1.195427876087042E+025
+  1.198329264223432E+025
+  1.201253834987858E+025
+  1.204061593029437E+025
+  1.206628561607706E+025
+  1.208860412978220E+025
+  1.210697607630224E+025
+  1.212114364796427E+025
+  1.213114205680720E+025
+  1.213724219896928E+025
+  1.213988990841715E+025
+  1.213964751028342E+025
+  1.213714776411150E+025
+  1.213306262295950E+025
+  1.212808037319146E+025
+  1.091417726047116E+025
+  1.091554905515547E+025
+  1.091700370898127E+025
+  1.091838444944640E+025
+  1.091946770778019E+025
+  1.091995291747772E+025
+  1.091946340868596E+025
+  1.091756093573323E+025
+  1.091377432752288E+025
+  1.090764484631447E+025
+  1.089878674293459E+025
+  1.088695718737710E+025
+  1.087212790432837E+025
+  1.085454825988375E+025
+  1.083478639261628E+025
+  1.081373324076098E+025
+  1.079255472438754E+025
+  1.077257987701239E+025
+  1.075511761876125E+025
+  1.074120240673024E+025
+  1.073127886535886E+025
+  1.072484652902962E+025
+  1.072009629401870E+025
+  1.071357829837946E+025
+  1.069994544784536E+025
+  1.067181736784970E+025
+  1.061980701013585E+025
+  1.053274806191833E+025
+  1.039815694055097E+025
+  1.020295779343756E+025
+  9.934488529867964E+024
+  9.581783208850750E+024
+  9.137082912503879E+024
+  8.597458807423758E+024
+  7.966341368022009E+024
+  7.254656764709151E+024
+  6.481211758636013E+024
+  5.671993490795620E+024
+  4.858204888962820E+024
+  4.073144259639065E+024
+  3.348401429016889E+024
+  2.709018193290118E+024
+  2.166937777368921E+024
+  1.720606906256249E+024
+  1.360642000608007E+024
+  1.074537904602286E+024
+  8.494192376148945E+023
+  6.734559495806567E+023
+  5.364518824745398E+023
+  4.299653740928446E+023
+  3.471923475751947E+023
+  2.827490592272480E+023
+  2.324301882480432E+023
+  1.929801731733027E+023
+  1.618939097338514E+023
+  1.372511437175381E+023
+  1.175830321315872E+023
+  1.017668362783751E+023
+  8.894400525533299E+022
+  7.845709900459095E+022
+  6.980156964417544E+022
+  6.258909330408212E+022
+  5.651979054527690E+022
+  5.136123898749149E+022
+  4.693265338046385E+022
+  4.309298977948846E+022
+  3.973203265272330E+022
+  3.676376060501530E+022
+  3.412147358616698E+022
+  3.175431905458745E+022
+  2.962499570924555E+022
+  2.770856397008846E+022
+  2.599248235620441E+022
+  2.447826063038627E+022
+  2.318553607135834E+022
+  2.216002881838756E+022
+  2.148784250864746E+022
+  2.132011344410404E+022
+  2.191427061913393E+022
+  2.370133474409906E+022
+  2.739283124214833E+022
+  3.414577737879710E+022
+  4.580889029804031E+022
+  6.527541055787607E+022
+  9.696334625958703E+022
+  1.474249859202011E+023
+  2.260428952846668E+023
+  3.456849007773252E+023
+  5.230519594437745E+023
+  7.782559437697070E+023
+  1.132930521237860E+024
+  1.605979992197289E+024
+  2.206886673292288E+024
+  2.930748017371941E+024
+  3.758068805006454E+024
+  4.656720866066747E+024
+  5.586085025450032E+024
+  6.502810873006578E+024
+  7.366719837017507E+024
+  8.145519984657292E+024
+  8.817548952458512E+024
+  9.372423370006807E+024
+  9.809988463920943E+024
+  1.013820879138109E+025
+  1.037063956050146E+025
+  1.052396451196122E+025
+  1.061588727236966E+025
+  1.066349287473273E+025
+  1.068208588321611E+025
+  1.068445856784982E+025
+  1.068052745332807E+025
+  1.067727788722335E+025
+  1.067895892377803E+025
+  1.068746850695996E+025
+  1.070286284932853E+025
+  1.072391936398158E+025
+  1.074868502414577E+025
+  1.077495400942596E+025
+  1.080063788325887E+025
+  1.082401313362177E+025
+  1.084384982303702E+025
+  1.085943957710960E+025
+  1.087055135439068E+025
+  1.087734723722526E+025
+  1.088028401335521E+025
+  1.088001373236011E+025
+  1.087729163735826E+025
+  1.087290279129088E+025
+  1.086761113633112E+025
+  1.086212609698864E+025
+  8.821546219393651E+024
+  8.821769496234114E+024
+  8.822764473989119E+024
+  8.824608379925302E+024
+  8.827266198317368E+024
+  8.830554809166162E+024
+  8.834120837803637E+024
+  8.837438106369211E+024
+  8.839828716566466E+024
+  8.840512749974343E+024
+  8.838687089050248E+024
+  8.833628778355801E+024
+  8.824814892754834E+024
+  8.812046621325035E+024
+  8.795560518499082E+024
+  8.776106457003929E+024
+  8.754970654519219E+024
+  8.733923593876766E+024
+  8.715077276250456E+024
+  8.700644547057256E+024
+  8.692605012981056E+024
+  8.692296103828395E+024
+  8.699962059094373E+024
+  8.714305625426038E+024
+  8.732094957546240E+024
+  8.747880571021662E+024
+  8.753874630526425E+024
+  8.740039126754092E+024
+  8.694422664760445E+024
+  8.603778293609044E+024
+  8.454484505698035E+024
+  8.233771898350820E+024
+  7.931220503621255E+024
+  7.540430631743515E+024
+  7.060683540726075E+024
+  6.498311115219528E+024
+  5.867419100317268E+024
+  5.189607289141381E+024
+  4.492452348594922E+024
+  3.806780595067478E+024
+  3.163115335752542E+024
+  2.586936428521534E+024
+  2.092060448580727E+024
+  1.679663942128705E+024
+  1.343227745007160E+024
+  1.072828804547454E+024
+  8.577299545378611E+023
+  6.877761694887746E+023
+  5.540319285487614E+023
+  4.489751623064393E+023
+  3.664552913347230E+023
+  3.015421426038301E+023
+  2.503380171197080E+023
+  2.097909018891389E+023
+  1.775265284981801E+023
+  1.517056363399346E+023
+  1.309068617289259E+023
+  1.140328791606089E+023
+  1.002363806541052E+023
+  8.886235845245859E+022
+  7.940346546527343E+022
+  7.146569537763472E+022
+  6.474211318174848E+022
+  5.899281596479709E+022
+  5.402969096365355E+022
+  4.970485923757132E+022
+  4.590195325458601E+022
+  4.252958408651309E+022
+  3.951652067556076E+022
+  3.680824434377854E+022
+  3.436467386775140E+022
+  3.215900191157004E+022
+  3.017777169038618E+022
+  2.842259509116869E+022
+  2.691433094341407E+022
+  2.570119233125651E+022
+  2.487325523455618E+022
+  2.458735052968210E+022
+  2.510850806406994E+022
+  2.687712639575623E+022
+  3.061486984972220E+022
+  3.748660370847214E+022
+  4.933941055488624E+022
+  6.904054151378340E+022
+  1.009296582625326E+023
+  1.513797094436787E+023
+  2.294149122955830E+023
+  3.472511999647855E+023
+  5.204937926384915E+023
+  7.675486878307214E+023
+  1.107606124808886E+024
+  1.556408939535548E+024
+  2.119867273917656E+024
+  2.789661361451015E+024
+  3.543644836308341E+024
+  4.348380750119028E+024
+  5.163677663820769E+024
+  5.948436403251382E+024
+  6.666316453313927E+024
+  7.289968599499917E+024
+  7.803183222140630E+024
+  8.200967057418850E+024
+  8.488037131393265E+024
+  8.676412858185605E+024
+  8.782738435386480E+024
+  8.825786835188784E+024
+  8.824391130750320E+024
+  8.795886504301454E+024
+  8.755049570221772E+024
+  8.713481015258699E+024
+  8.679369836047452E+024
+  8.657580395866166E+024
+  8.650003294086951E+024
+  8.656103714874373E+024
+  8.673590182909101E+024
+  8.699119693877646E+024
+  8.728958334238709E+024
+  8.759531946047110E+024
+  8.787826119903244E+024
+  8.811622325160405E+024
+  8.829581034544493E+024
+  8.841200225659767E+024
+  8.846688200640778E+024
+  8.846791908841163E+024
+  8.842613839488139E+024
+  8.835436829361336E+024
+  8.826569273913334E+024
+  8.817223594247092E+024
+  8.808433330397093E+024
+  8.801006056861073E+024
+  7.529148565043652E+024
+  7.528186971726839E+024
+  7.528649840952634E+024
+  7.530842852885639E+024
+  7.534916146009391E+024
+  7.540799855588182E+024
+  7.548154102427169E+024
+  7.556342437105221E+024
+  7.564436223389011E+024
+  7.571257838734020E+024
+  7.575465915499015E+024
+  7.575680250517249E+024
+  7.570639400350885E+024
+  7.559378363625224E+024
+  7.541407496304891E+024
+  7.516868646196632E+024
+  7.486641467404881E+024
+  7.452372631838947E+024
+  7.416404073334825E+024
+  7.381584302591192E+024
+  7.350959296073913E+024
+  7.327355417798500E+024
+  7.312884108553219E+024
+  7.308413833873813E+024
+  7.313066238185482E+024
+  7.323798755727903E+024
+  7.335134864395555E+024
+  7.339097269473273E+024
+  7.325391026671521E+024
+  7.281874620882002E+024
+  7.195346192297140E+024
+  7.052654416976815E+024
+  6.842110906879111E+024
+  6.555125464186148E+024
+  6.187904603745879E+024
+  5.742957166233208E+024
+  5.230067400418593E+024
+  4.666374056634651E+024
+  4.075285892492693E+024
+  3.484194133202075E+024
+  2.921280200093203E+024
+  2.411051347794268E+024
+  1.967914853360126E+024
+  1.594805072327270E+024
+  1.287408958155358E+024
+  1.037980191156590E+024
+  8.376993940729452E+023
+  6.779914958325956E+023
+  5.511656156400022E+023
+  4.506491254491925E+023
+  3.709982075831143E+023
+  3.077986382504746E+023
+  2.575232732110686E+023
+  2.173824319890528E+023
+  1.851850863437907E+023
+  1.592182697966278E+023
+  1.381464319004544E+023
+  1.209296117853561E+023
+  1.067580891586284E+023
+  9.500084440388653E+022
+  8.516527560166991E+022
+  7.686592391589916E+022
+  6.980031583871599E+022
+  6.373037774279949E+022
+  5.846818836553403E+022
+  5.386509928964958E+022
+  4.980347192908545E+022
+  4.619045683844524E+022
+  4.295338612089493E+022
+  4.003647453945717E+022
+  3.739864538224102E+022
+  3.501243362558088E+022
+  3.286409933179291E+022
+  3.095534834546836E+022
+  2.930746321428607E+022
+  2.796927759845171E+022
+  2.703139406113774E+022
+  2.665048614325461E+022
+  2.708958663399383E+022
+  2.878304754730652E+022
+  3.243831410449646E+022
+  3.919037703915969E+022
+  5.082763898053218E+022
+  7.010760829738621E+022
+  1.011730953618841E+023
+  1.500577361269073E+023
+  2.252244773156385E+023
+  3.380017550769768E+023
+  5.026621356072891E+023
+  7.357311721415085E+023
+  1.053949074876155E+024
+  1.470207282614306E+024
+  1.987626206231795E+024
+  2.595757401647069E+024
+  3.271461066390105E+024
+  3.981803232400048E+024
+  4.688726668943487E+024
+  5.354733931620123E+024
+  5.948134067743659E+024
+  6.446710628169118E+024
+  6.839293625079665E+024
+  7.125357700279416E+024
+  7.313194558959008E+024
+  7.417348100530302E+024
+  7.455915490183395E+024
+  7.448121654629509E+024
+  7.412371893392889E+024
+  7.364837158726688E+024
+  7.318543621294721E+024
+  7.282907669459183E+024
+  7.263654431034638E+024
+  7.263060605413297E+024
+  7.280458983629246E+024
+  7.312930926772850E+024
+  7.356099900237596E+024
+  7.404932182600002E+024
+  7.454456478049898E+024
+  7.500333821320597E+024
+  7.539238753541687E+024
+  7.569044667479808E+024
+  7.588833293802530E+024
+  7.598766893555294E+024
+  7.599871342668789E+024
+  7.593778394867123E+024
+  7.582465285924336E+024
+  7.568014752267413E+024
+  7.552410037636267E+024
+  7.537378085618020E+024
+  7.524286681430128E+024
+  7.514093451535154E+024
+  7.060461626535365E+024
+  7.058934063510627E+024
+  7.059123717142044E+024
+  7.061441678388237E+024
+  7.066124424757730E+024
+  7.073155444708237E+024
+  7.082201107949060E+024
+  7.092571152636491E+024
+  7.103212848888595E+024
+  7.112748161563253E+024
+  7.119558582125629E+024
+  7.121916561725361E+024
+  7.118157456178582E+024
+  7.106879745029559E+024
+  7.087154384869762E+024
+  7.058718185786611E+024
+  7.022122135578749E+024
+  6.978804400689185E+024
+  6.931060330173187E+024
+  6.881889167069094E+024
+  6.834709580662973E+024
+  6.792952631980951E+024
+  6.759559224099522E+024
+  6.736426494679955E+024
+  6.723860907521297E+024
+  6.720102754646644E+024
+  6.720986808357673E+024
+  6.719798285000480E+024
+  6.707374619310595E+024
+  6.672493861069571E+024
+  6.602579352303603E+024
+  6.484733430249338E+024
+  6.307082568403815E+024
+  6.060364449497353E+024
+  5.739610342556737E+024
+  5.345681612425572E+024
+  4.886333618251528E+024
+  4.376450065601361E+024
+  3.837168042876010E+024
+  3.293826312359387E+024
+  2.772992469464408E+024
+  2.298202898871458E+024
+  1.883736344452857E+024
+  1.533106203908235E+024
+  1.242916703622872E+024
+  1.006409518008605E+024
+  8.156824390253174E+023
+  6.629458673434326E+023
+  5.411483184374087E+023
+  4.442198869667279E+023
+  3.671022354791062E+023
+  3.056712173224166E+023
+  2.566148257770116E+023
+  2.173011090774774E+023
+  1.856535961270690E+023
+  1.600418678978526E+023
+  1.391894485336347E+023
+  1.220983907322420E+023
+  1.079886769072341E+023
+  9.625016110429463E+022
+  8.640481678343998E+022
+  7.807728947072001E+022
+  7.097205142577426E+022
+  6.485575504094898E+022
+  5.954365497938126E+022
+  5.488920544666434E+022
+  5.077613641219800E+022
+  4.711247425527213E+022
+  4.382610558342789E+022
+  4.086159893058311E+022
+  3.817811245392661E+022
+  3.574834611517616E+022
+  3.355867095246645E+022
+  3.161082434230347E+022
+  2.992595447891953E+022
+  2.855240899748448E+022
+  2.757959807861673E+022
+  2.716165097755743E+022
+  2.755655942551662E+022
+  2.918914642048748E+022
+  3.274944325973310E+022
+  3.934147284225251E+022
+  5.069990292469329E+022
+  6.949124787744005E+022
+  9.970818336265854E+022
+  1.471437323154989E+023
+  2.198879846686546E+023
+  3.287142742845750E+023
+  4.871083741892802E+023
+  7.105486708262622E+023
+  1.014496824353732E+024
+  1.410477729035491E+024
+  1.900454993665009E+024
+  2.473351819687166E+024
+  3.106114868805461E+024
+  3.766711506046856E+024
+  4.418770425997617E+024
+  5.027087745366633E+024
+  5.562594370835364E+024
+  6.005710758900210E+024
+  6.347638608326754E+024
+  6.589756914177834E+024
+  6.741686321702874E+024
+  6.818701210286298E+024
+  6.839069725649390E+024
+  6.821703454098906E+024
+  6.784300568442765E+024
+  6.742024049295101E+024
+  6.706680813141130E+024
+  6.686341608680984E+024
+  6.685340052479935E+024
+  6.704591283008250E+024
+  6.742165734893426E+024
+  6.794041004083247E+024
+  6.854941073225633E+024
+  6.919165813680173E+024
+  6.981320876078818E+024
+  7.036879807876297E+024
+  7.082541829273717E+024
+  7.116382122013744E+024
+  7.137819301412552E+024
+  7.147443234680369E+024
+  7.146755164510002E+024
+  7.137871035983880E+024
+  7.123227828374337E+024
+  7.105316991284459E+024
+  7.086459961732856E+024
+  7.068638746645953E+024
+  7.053387181771654E+024
+  7.041740793728003E+024
+  7.415564895607812E+024
+  7.414548175032197E+024
+  7.414979709497977E+024
+  7.417174892631128E+024
+  7.421292421758555E+024
+  7.427268777327098E+024
+  7.434767077623604E+024
+  7.443149411868493E+024
+  7.451480262162886E+024
+  7.458568991096362E+024
+  7.463054742618479E+024
+  7.463531521637458E+024
+  7.458706582357414E+024
+  7.447579610151199E+024
+  7.429623892576179E+024
+  7.404945460319712E+024
+  7.374393075453725E+024
+  7.339591610416396E+024
+  7.302874687158556E+024
+  7.267100265110392E+024
+  7.235345272309987E+024
+  7.210491311379927E+024
+  7.194730781360878E+024
+  7.189038597773930E+024
+  7.192666268488944E+024
+  7.202720510522438E+024
+  7.213887624275856E+024
+  7.218358985106912E+024
+  7.206004723966870E+024
+  7.164833651566721E+024
+  7.081766699308362E+024
+  6.943733681639205E+024
+  6.739071013859696E+024
+  6.459143220173671E+024
+  6.100031013597631E+024
+  5.664032866809960E+024
+  5.160643711907980E+024
+  4.606651686273129E+024
+  4.025083497012426E+024
+  3.442955854361253E+024
+  2.888124754088732E+024
+  2.384867565398601E+024
+  1.947513583664919E+024
+  1.579061297686615E+024
+  1.275337392650837E+024
+  1.028759275509429E+024
+  8.306665729918665E+023
+  6.726248706932035E+023
+  5.470609776079710E+023
+  4.474972190513149E+023
+  3.685644901887582E+023
+  3.059063178833107E+023
+  2.560396296606358E+023
+  2.162080693515241E+023
+  1.842456421259236E+023
+  1.584581026048428E+023
+  1.375238608988400E+023
+  1.204133507838671E+023
+  1.063245882611242E+023
+  9.463231452444795E+022
+  8.484822319123051E+022
+  7.659006496058177E+022
+  6.955777077712531E+022
+  6.351507393520564E+022
+  5.827541564319581E+022
+  5.369117824753909E+022
+  4.964550510024828E+022
+  4.604614057051107E+022
+  4.282086651292747E+022
+  3.991423463348895E+022
+  3.728541318027218E+022
+  3.490710144201514E+022
+  3.276564424320662E+022
+  3.086274043560021E+022
+  2.921954174358021E+022
+  2.788456312491877E+022
+  2.694778363326028E+022
+  2.656474395495001E+022
+  2.699648664977454E+022
+  2.867393756304017E+022
+  3.229874011902486E+022
+  3.899621992399004E+022
+  5.053896466283074E+022
+  6.965912744079853E+022
+  1.004598171015089E+023
+  1.489142051408123E+023
+  2.233961496620659E+023
+  3.351080167584764E+023
+  4.981528233880006E+023
+  7.288429928104676E+023
+  1.043675730672510E+024
+  1.455307474070256E+024
+  1.966697721628364E+024
+  2.567368823193162E+024
+  3.234301063078078E+024
+  3.934827056826146E+024
+  4.631275530065396E+024
+  5.286604806974557E+024
+  5.869590158276078E+024
+  6.358436554378425E+024
+  6.742309959900712E+024
+  7.020914095653846E+024
+  7.202659763929421E+024
+  7.302110565164459E+024
+  7.337302426242514E+024
+  7.327339266510160E+024
+  7.290465946677654E+024
+  7.242671213260229E+024
+  7.196791705826022E+024
+  7.162058347920032E+024
+  7.144023627682632E+024
+  7.144810929007725E+024
+  7.163623520154969E+024
+  7.197439588911574E+024
+  7.241806520829486E+024
+  7.291640702503510E+024
+  7.341944843764843E+024
+  7.388374560848627E+024
+  7.427615596321182E+024
+  7.457564968221030E+024
+  7.477336369409149E+024
+  7.487128644918323E+024
+  7.488005671119428E+024
+  7.481635944278871E+024
+  7.470030026049276E+024
+  7.455298936227643E+024
+  7.439448060669611E+024
+  7.424219689919466E+024
+  7.410989922873302E+024
+  7.400717886245068E+024
+  8.695777219281880E+024
+  8.696091226673439E+024
+  8.697098594799609E+024
+  8.698855085579855E+024
+  8.701311215846641E+024
+  8.704279731333469E+024
+  8.707416257291760E+024
+  8.710218575153596E+024
+  8.712048145504837E+024
+  8.712178492900047E+024
+  8.709870739397978E+024
+  8.704471692833354E+024
+  8.695526657390621E+024
+  8.682895126061653E+024
+  8.666853026493935E+024
+  8.648162018582801E+024
+  8.628085358472271E+024
+  8.608331367802036E+024
+  8.590910096900250E+024
+  8.577896817164753E+024
+  8.571107307221673E+024
+  8.571703318917332E+024
+  8.579760135270280E+024
+  8.593839466680597E+024
+  8.610618117364589E+024
+  8.624624935883645E+024
+  8.628136003684329E+024
+  8.611272521124475E+024
+  8.562339378596109E+024
+  8.468435472870328E+024
+  8.316356854309174E+024
+  8.093794535057828E+024
+  7.790791979373153E+024
+  7.401366440706652E+024
+  6.925113961054496E+024
+  6.368523719031904E+024
+  5.745655937845021E+024
+  5.077838365426787E+024
+  4.392157586401224E+024
+  3.718777729381212E+024
+  3.087467009626307E+024
+  2.522981095813628E+024
+  2.038632654555007E+024
+  1.635382931607567E+024
+  1.306699375959821E+024
+  1.042757811877791E+024
+  8.329721336633130E+023
+  6.673536283751231E+023
+  5.371276046944440E+023
+  4.349170835571922E+023
+  3.546969231112011E+023
+  2.916423971151475E+023
+  2.419427555316565E+023
+  2.026167170859803E+023
+  1.713470056020251E+023
+  1.463399775992327E+023
+  1.262106188499720E+023
+  1.098904881246907E+023
+  9.655519712030353E+022
+  8.556791931468442E+022
+  7.643573886110031E+022
+  6.877611942648969E+022
+  6.229125906589051E+022
+  5.674854198659431E+022
+  5.196568041953396E+022
+  4.779945647335495E+022
+  4.413722956141328E+022
+  4.089057872243161E+022
+  3.799061274423475E+022
+  3.538461878727618E+022
+  3.303384931598595E+022
+  3.091238891406707E+022
+  2.900722549885792E+022
+  2.731991510278154E+022
+  2.587063496782537E+022
+  2.470605155413873E+022
+  2.391340572081880E+022
+  2.364468658132670E+022
+  2.415689597238170E+022
+  2.587733755005992E+022
+  2.950660813008725E+022
+  3.617619873984173E+022
+  4.768130927566625E+022
+  6.681037226447900E+022
+  9.778660262863582E+022
+  1.468166135257507E+023
+  2.226966363278380E+023
+  3.373459780737252E+023
+  5.060097290254502E+023
+  7.466984740697264E+023
+  1.078237066861481E+024
+  1.516149677550653E+024
+  2.066430771562604E+024
+  2.721229600369546E+024
+  3.459197311741423E+024
+  4.247910186346628E+024
+  5.048250920187937E+024
+  5.820086839279165E+024
+  6.527796764465254E+024
+  7.144422216238135E+024
+  7.653800582591319E+024
+  8.050682704076989E+024
+  8.339302904603120E+024
+  8.531060505191407E+024
+  8.641927857618905E+024
+  8.690026139645689E+024
+  8.693610784180896E+024
+  8.669549972864992E+024
+  8.632284640856896E+024
+  8.593218090560721E+024
+  8.560475334560596E+024
+  8.538975096821560E+024
+  8.530757433153425E+024
+  8.535503179862812E+024
+  8.551171299538903E+024
+  8.574673525441528E+024
+  8.602508619515668E+024
+  8.631293219223279E+024
+  8.658149822172179E+024
+  8.680938748194290E+024
+  8.698343927511358E+024
+  8.709839210411461E+024
+  8.715572172420269E+024
+  8.716204724368934E+024
+  8.712742114022058E+024
+  8.706368695321335E+024
+  8.698302338831007E+024
+  8.689679884417244E+024
+  8.681478771679034E+024
+  8.674472019830373E+024
+  1.080132338911954E+025
+  1.080267300215618E+025
+  1.080411135904052E+025
+  1.080548515872904E+025
+  1.080657439755137E+025
+  1.080708202945637E+025
+  1.080663467385149E+025
+  1.080479692000118E+025
+  1.080109974690076E+025
+  1.079508564291113E+025
+  1.078636893954492E+025
+  1.077470558904965E+025
+  1.076006476214875E+025
+  1.074269206195055E+025
+  1.072315100623431E+025
+  1.070232768714860E+025
+  1.068138390842728E+025
+  1.066164660999899E+025
+  1.064442625295613E+025
+  1.063076433707968E+025
+  1.062112003881869E+025
+  1.061501693561326E+025
+  1.061068120477600E+025
+  1.060471077943503E+025
+  1.059181943365718E+025
+  1.056470033449145E+025
+  1.051405105593086E+025
+  1.042879797536703E+025
+  1.029655361227085E+025
+  1.010433512851117E+025
+  9.839561904971419E+024
+  9.491327625097543E+024
+  9.051899507018202E+024
+  8.518329501467213E+024
+  7.893973271588648E+024
+  7.189620465336922E+024
+  6.423880416948984E+024
+  5.622491970688384E+024
+  4.816378908829542E+024
+  4.038557805328121E+024
+  3.320366059293106E+024
+  2.686660544557568E+024
+  2.149316668513268E+024
+  1.706826753307406E+024
+  1.349914175122816E+024
+  1.066201044750823E+024
+  8.429365976027652E+023
+  6.684017262259534E+023
+  5.324936596777763E+023
+  4.268465514607759E+023
+  3.447163812048654E+023
+  2.807661703271312E+023
+  2.308265773544308E+023
+  1.916694904769704E+023
+  1.608106290033614E+023
+  1.363454792234577E+023
+  1.168170734956221E+023
+  1.011116272582015E+023
+  8.837734480353464E+022
+  7.796188999807014E+022
+  6.936458021515941E+022
+  6.220002759785016E+022
+  5.617059079415999E+022
+  5.104556013224588E+022
+  4.664546619368907E+022
+  4.283027953344049E+022
+  3.949056864596158E+022
+  3.654091797114239E+022
+  3.391509324128287E+022
+  3.156259472403609E+022
+  2.944637886796300E+022
+  2.754167820464377E+022
+  2.583603784080058E+022
+  2.433095649853099E+022
+  2.304593236110902E+022
+  2.202635854408652E+022
+  2.135771538896064E+022
+  2.119003158765603E+022
+  2.177882693727805E+022
+  2.355188900890918E+022
+  2.721534715847803E+022
+  3.391734815684165E+022
+  4.549227720964940E+022
+  6.481068213344920E+022
+  9.625548246238898E+022
+  1.463262108777460E+023
+  2.243287311525195E+023
+  3.430238354701889E+023
+  5.189706799778008E+023
+  7.721058822785453E+023
+  1.123867465181606E+024
+  1.592976664732356E+024
+  2.188800429751554E+024
+  2.906433226843678E+024
+  3.726497708555703E+024
+  4.617095886582432E+024
+  5.537923734738784E+024
+  6.445987738446045E+024
+  7.301460026975776E+024
+  8.072351623969729E+024
+  8.737227727348570E+024
+  9.285845815499807E+024
+  9.718108297748687E+024
+  1.004196617257464E+025
+  1.027090814393504E+025
+  1.042151703397030E+025
+  1.051137772275977E+025
+  1.055745202898359E+025
+  1.057492669299207E+025
+  1.057648818852340E+025
+  1.057196317936104E+025
+  1.056826477752262E+025
+  1.056958736442885E+025
+  1.057779038578246E+025
+  1.059290543187787E+025
+  1.061369637158226E+025
+  1.063820479800431E+025
+  1.066422495929395E+025
+  1.068967163185687E+025
+  1.071282587552641E+025
+  1.073246243862695E+025
+  1.074787699417874E+025
+  1.075884153397009E+025
+  1.076552000099488E+025
+  1.076836980720679E+025
+  1.076804239070499E+025
+  1.076529120048591E+025
+  1.076089836176713E+025
+  1.075562375472999E+025
+  1.075017168403623E+025
+  1.252870752284873E+025
+  1.253065351603928E+025
+  1.253231889704232E+025
+  1.253342438604634E+025
+  1.253364689161010E+025
+  1.253262056420118E+025
+  1.252994685227683E+025
+  1.252521432899052E+025
+  1.251802695634655E+025
+  1.250804245118916E+025
+  1.249501856943708E+025
+  1.247886126585291E+025
+  1.245966783695583E+025
+  1.243775654039806E+025
+  1.241367184652931E+025
+  1.238815351576288E+025
+  1.236205874688396E+025
+  1.233622945717235E+025
+  1.231130140084691E+025
+  1.228745852488457E+025
+  1.226414439443973E+025
+  1.223975165302579E+025
+  1.221131885166374E+025
+  1.217427020094083E+025
+  1.212223702620284E+025
+  1.204699995559909E+025
+  1.193858905220638E+025
+  1.178557654032768E+025
+  1.157559410324992E+025
+  1.129610237625876E+025
+  1.093542935981506E+025
+  1.048406934414629E+025
+  9.936186813188506E+024
+  9.291197401403847E+024
+  8.555206530051195E+024
+  7.741996443324351E+024
+  6.873202437146040E+024
+  5.977360402010154E+024
+  5.087681308930322E+024
+  4.238710860881042E+024
+  3.462398398146023E+024
+  2.783225234749333E+024
+  2.211724713614690E+024
+  1.744460870867139E+024
+  1.370142209994249E+024
+  1.074578628039933E+024
+  8.435202704626265E+023
+  6.640736731329559E+023
+  5.252512138945462E+023
+  4.180399519517516E+023
+  3.352340766218613E+023
+  2.711740328946315E+023
+  2.214696348192581E+023
+  1.827446377235319E+023
+  1.524176279890261E+023
+  1.285221255484861E+023
+  1.095630471679347E+023
+  9.440439142921619E+022
+  8.218253919163009E+022
+  7.223996602126787E+022
+  6.407490584592798E+022
+  5.730331306404089E+022
+  5.163021724734962E+022
+  4.682820415959526E+022
+  4.272128150468054E+022
+  3.917280663957642E+022
+  3.607648167347190E+022
+  3.334967620017498E+022
+  3.092853740418291E+022
+  2.876451014458250E+022
+  2.682203599485647E+022
+  2.507735361378853E+022
+  2.351851363023067E+022
+  2.214699218105985E+022
+  2.098170105192909E+022
+  2.006684094236839E+022
+  1.948605799822994E+022
+  1.938691631822779E+022
+  2.002200117666214E+022
+  2.181623072268912E+022
+  2.547429567322912E+022
+  3.214738746123019E+022
+  4.368365740152477E+022
+  6.299000479152279E+022
+  9.452942842864723E+022
+  1.449605829923346E+023
+  2.238824783442695E+023
+  3.445618019810357E+023
+  5.243771561321054E+023
+  7.845061052847482E+023
+  1.148125236519557E+024
+  1.636161195753940E+024
+  2.260423262352721E+024
+  3.018300175620583E+024
+  3.892173650956248E+024
+  4.851009605096064E+024
+  5.854233015530815E+024
+  6.857402984576450E+024
+  7.818229673361090E+024
+  8.701559155937695E+024
+  9.482464412293748E+024
+  1.014723900469726E+025
+  1.069262733505875E+025
+  1.112390541247944E+025
+  1.145245384889410E+025
+  1.169332902009844E+025
+  1.186314424732773E+025
+  1.197839843450739E+025
+  1.205427103057498E+025
+  1.210384110299169E+025
+  1.213766787517605E+025
+  1.216366967329712E+025
+  1.218724221370692E+025
+  1.221155795695541E+025
+  1.223798553290449E+025
+  1.226656606426632E+025
+  1.229648637863214E+025
+  1.232649990318388E+025
+  1.235526277681517E+025
+  1.238157086211254E+025
+  1.240449890930450E+025
+  1.242345531744968E+025
+  1.243817547406828E+025
+  1.244868095371217E+025
+  1.245522592262201E+025
+  1.245823981486086E+025
+  1.245827177020356E+025
+  1.245594693799331E+025
+  1.245193696688693E+025
+  1.244693797698249E+025
+  1.343896240113073E+025
+  1.344104620662397E+025
+  1.344282301713916E+025
+  1.344399223668899E+025
+  1.344420692061170E+025
+  1.344307508010255E+025
+  1.344017056785030E+025
+  1.343505433705599E+025
+  1.342730459308467E+025
+  1.341655760053923E+025
+  1.340255681863730E+025
+  1.338520390152622E+025
+  1.336460420484387E+025
+  1.334109774690572E+025
+  1.331526409501529E+025
+  1.328788862587071E+025
+  1.325987873848014E+025
+  1.323212161295203E+025
+  1.320528007086460E+025
+  1.317953022897330E+025
+  1.315425362159568E+025
+  1.312770619061459E+025
+  1.309669544734997E+025
+  1.305630372380687E+025
+  1.299969885808616E+025
+  1.291807392599127E+025
+  1.280075571320713E+025
+  1.263551893066944E+025
+  1.240914036672039E+025
+  1.210822254205663E+025
+  1.172030476817382E+025
+  1.123525258238856E+025
+  1.064686605870170E+025
+  9.954569976771320E+024
+  9.164950948796186E+024
+  8.292810445657860E+024
+  7.361349415812366E+024
+  6.401144703222291E+024
+  5.447763430310579E+024
+  4.538185497919860E+024
+  3.706595811015178E+024
+  2.979171901550949E+024
+  2.367152759978612E+024
+  1.866823436057256E+024
+  1.466064714241776E+024
+  1.149661113941432E+024
+  9.023396631803111E+023
+  7.102848737188006E+023
+  5.617257252729799E+023
+  4.470082404266550E+023
+  3.584151980882767E+023
+  2.898861567970983E+023
+  2.367205265599230E+023
+  1.953037655457555E+023
+  1.628725709964780E+023
+  1.373221319015591E+023
+  1.170523654672234E+023
+  1.008476173207945E+023
+  8.778381047776519E+022
+  7.715746317613665E+022
+  6.843179377839651E+022
+  6.119599801739014E+022
+  5.513458494188581E+022
+  5.000434363180007E+022
+  4.561707513832103E+022
+  4.182667291884470E+022
+  3.851948666182259E+022
+  3.560717737689810E+022
+  3.302148529564854E+022
+  3.071050652982576E+022
+  2.863623113652511E+022
+  2.677325941378707E+022
+  2.510881741628271E+022
+  2.364448257317613E+022
+  2.240047301079206E+022
+  2.142404809660325E+022
+  2.080465229941607E+022
+  2.070009591110583E+022
+  2.138053004582536E+022
+  2.330046644250651E+022
+  2.721374175874180E+022
+  3.435194033560169E+022
+  4.669245226850332E+022
+  6.734573687064091E+022
+  1.010877861498483E+023
+  1.550449852493128E+023
+  2.394918246735084E+023
+  3.686304715348340E+023
+  5.610679200679882E+023
+  8.394832587309273E+023
+  1.228703606170704E+024
+  1.751158139497205E+024
+  2.419527238789786E+024
+  3.231062157383092E+024
+  4.166950544567487E+024
+  5.194012082313907E+024
+  6.268839196396998E+024
+  7.343867068374209E+024
+  8.373812945350836E+024
+  9.321014021666698E+024
+  1.015874052162733E+025
+  1.087226489805253E+025
+  1.145804335783140E+025
+  1.192166607954612E+025
+  1.227526270310008E+025
+  1.253490470478170E+025
+  1.271833872533418E+025
+  1.284319824453024E+025
+  1.292571399352919E+025
+  1.297987799068151E+025
+  1.301699412326652E+025
+  1.304554772935650E+025
+  1.307133092640427E+025
+  1.309776135071608E+025
+  1.312632914067845E+025
+  1.315710473213761E+025
+  1.318924344296289E+025
+  1.322143435812549E+025
+  1.325225887761412E+025
+  1.328044364720228E+025
+  1.330500922097578E+025
+  1.332532883619016E+025
+  1.334112183693546E+025
+  1.335241080051422E+025
+  1.335946504766315E+025
+  1.336274017012053E+025
+  1.336281945370544E+025
+  1.336036793559677E+025
+  1.335610146326595E+025
+  1.335076354368946E+025
+  1.070320611188764E+025
+  1.070449312230343E+025
+  1.070591359770782E+025
+  1.070732777272538E+025
+  1.070852611763706E+025
+  1.070921765395231E+025
+  1.070902962483503E+025
+  1.070752130601626E+025
+  1.070421264444930E+025
+  1.069863041420255E+025
+  1.069037049484532E+025
+  1.067917048331213E+025
+  1.066498485990849E+025
+  1.064805224973069E+025
+  1.062894108017075E+025
+  1.060855808507273E+025
+  1.058810441934251E+025
+  1.056896664538582E+025
+  1.055253478127883E+025
+  1.053994724321688E+025
+  1.053177254758405E+025
+  1.052764888977475E+025
+  1.052591343183988E+025
+  1.052326148186911E+025
+  1.051448040267606E+025
+  1.049230369140760E+025
+  1.044742804147248E+025
+  1.036873194997074E+025
+  1.024372988222820E+025
+  1.005929053823697E+025
+  9.802637464240652E+024
+  9.462627906903048E+024
+  9.031263184604701E+024
+  8.505315988994019E+024
+  7.887870524091551E+024
+  7.189477979145107E+024
+  6.428568861700245E+024
+  5.630786574786637E+024
+  4.827058316414869E+024
+  4.050505152293621E+024
+  3.332656527327192E+024
+  2.698616565347208E+024
+  2.160506195961548E+024
+  1.717016124528741E+024
+  1.359012934036209E+024
+  1.074213922680823E+024
+  8.499260866843860E+023
+  6.744610659595016E+023
+  5.377285541759558E+023
+  4.313635720917899E+023
+  3.486161726139806E+023
+  2.841399314984544E+023
+  2.337546664366791E+023
+  1.942213307461780E+023
+  1.630453529911602E+023
+  1.383129413651525E+023
+  1.185589992796016E+023
+  1.026627610292306E+023
+  8.976652052434372E+022
+  7.921298891590075E+022
+  7.049736371748176E+022
+  6.323084770691212E+022
+  5.711298831037378E+022
+  5.191076386021270E+022
+  4.744280765831343E+022
+  4.356753722520643E+022
+  4.017425481019632E+022
+  3.717651968168197E+022
+  3.450727822864394E+022
+  3.211539137221572E+022
+  2.996333920201081E+022
+  2.802603292218061E+022
+  2.629085403554657E+022
+  2.475931249649271E+022
+  2.345113124255659E+022
+  2.241221416481730E+022
+  2.172896430556491E+022
+  2.155295389092073E+022
+  2.214220104850918E+022
+  2.392846080142143E+022
+  2.762405874367185E+022
+  3.438663362978013E+022
+  4.606476263717442E+022
+  6.554957060410808E+022
+  9.725267299377419E+022
+  1.477116660837583E+023
+  2.262796255979828E+023
+  3.457704702182889E+023
+  5.227940688919794E+023
+  7.773196560152017E+023
+  1.130775194419752E+024
+  1.601796510307245E+024
+  2.199558752713295E+024
+  2.918859301008085E+024
+  3.739960404974664E+024
+  4.630597670969318E+024
+  5.550156821209336E+024
+  6.455443529093623E+024
+  7.306569829559948E+024
+  8.071631474056868E+024
+  8.729403355067843E+024
+  9.269942482126660E+024
+  9.693500248363376E+024
+  1.000838847099563E+025
+  1.022843818105507E+025
+  1.037053427205825E+025
+  1.045250943853623E+025
+  1.049151124069352E+025
+  1.050284701442837E+025
+  1.049925944404959E+025
+  1.049057120620619E+025
+  1.048363865235271E+025
+  1.048255698365606E+025
+  1.048905666965071E+025
+  1.050302436027043E+025
+  1.052307671909898E+025
+  1.054711804812117E+025
+  1.057282469784124E+025
+  1.059801896875187E+025
+  1.062091726488121E+025
+  1.064025667704182E+025
+  1.065531900202235E+025
+  1.066588142978681E+025
+  1.067212668949367E+025
+  1.067453885693034E+025
+  1.067379857920990E+025
+  1.067068660992455E+025
+  1.066600701615248E+025
+  1.066053379877832E+025
+  1.065497629279027E+025
+  8.919603725277259E+024
+  8.919925963965800E+024
+  8.920968427627558E+024
+  8.922789242339761E+024
+  8.925338037584304E+024
+  8.928422527107715E+024
+  8.931688623216712E+024
+  8.934619699874473E+024
+  8.936558689241776E+024
+  8.936757727261426E+024
+  8.934455658646998E+024
+  8.928978686573487E+024
+  8.919856121971858E+024
+  8.906939097504412E+024
+  8.890505522537579E+024
+  8.871331296616844E+024
+  8.850706781899584E+024
+  8.830379094852458E+024
+  8.812405440604880E+024
+  8.798910956731824E+024
+  8.791756137670378E+024
+  8.792132659542460E+024
+  8.800120283574333E+024
+  8.814249131558737E+024
+  8.831118993667847E+024
+  8.845129469535275E+024
+  8.848372133133208E+024
+  8.830730300128139E+024
+  8.780225364925544E+024
+  8.683641594697554E+024
+  8.527451067003972E+024
+  8.299040734838497E+024
+  7.988205913066463E+024
+  7.588812112953093E+024
+  7.100440640431305E+024
+  6.529736783955379E+024
+  5.891106034425172E+024
+  5.206404475619644E+024
+  4.503393647028626E+024
+  3.812992886247275E+024
+  3.165718848079446E+024
+  2.586952005680498E+024
+  2.090342608769989E+024
+  1.676878064400181E+024
+  1.339862667500154E+024
+  1.069225625554423E+024
+  8.541145357622456E+023
+  6.842890466335782E+023
+  5.507531281389218E+023
+  4.459434913013757E+023
+  3.636826427398351E+023
+  2.990237135297057E+023
+  2.480593684547509E+023
+  2.077326791218951E+023
+  1.756675074950170E+023
+  1.500246033305929E+023
+  1.293837033515837E+023
+  1.126491518184189E+023
+  9.897554736031911E+022
+  8.770982172755813E+022
+  7.834648207068465E+022
+  7.049322857549304E+022
+  6.384465744463896E+022
+  5.816221503432557E+022
+  5.325896090786963E+022
+  4.898802221281930E+022
+  4.523388395728692E+022
+  4.190586861387547E+022
+  3.893332616011105E+022
+  3.626219689536830E+022
+  3.385274173803570E+022
+  3.167838009237088E+022
+  2.972576302316068E+022
+  2.799648095362862E+022
+  2.651122111582391E+022
+  2.531783805866273E+022
+  2.450580119166382E+022
+  2.423099023533810E+022
+  2.475699442889573E+022
+  2.652207834693657E+022
+  3.024481611021150E+022
+  3.708573264462103E+022
+  4.888607912043700E+022
+  6.850577959151338E+022
+  1.002762420787821E+023
+  1.505629223974543E+023
+  2.283868796833650E+023
+  3.459715872946455E+023
+  5.189503985515067E+023
+  7.657914128607777E+023
+  1.105795894206170E+024
+  1.554877980218967E+024
+  2.119177109885895E+024
+  2.790633874928654E+024
+  3.547348392437831E+024
+  4.356067792917434E+024
+  5.176681021234035E+024
+  5.968042343490248E+024
+  6.693638090900271E+024
+  7.325841400642332E+024
+  7.848096852705151E+024
+  8.255038257185299E+024
+  8.551020126059667E+024
+  8.747738933650113E+024
+  8.861574844729407E+024
+  8.911106183873781E+024
+  8.915044430131905E+024
+  8.890675084744260E+024
+  8.852792417336291E+024
+  8.813074767454735E+024
+  8.779838926030543E+024
+  8.758115012739504E+024
+  8.749983300073008E+024
+  8.755107516163241E+024
+  8.771388776883170E+024
+  8.795657485410001E+024
+  8.824323546892683E+024
+  8.853920292328092E+024
+  8.881501696265820E+024
+  8.904879473313484E+024
+  8.922710292014925E+024
+  8.934460641667562E+024
+  8.940287346914177E+024
+  8.940873974833328E+024
+  8.937255418883522E+024
+  8.930649523946321E+024
+  8.922307992258842E+024
+  8.913399162437054E+024
+  8.904927760920292E+024
+  8.897688751386769E+024
+  7.254143591130567E+024
+  7.253193863460036E+024
+  7.253655948274339E+024
+  7.255831897528541E+024
+  7.259870471504282E+024
+  7.265703828580612E+024
+  7.272998330212478E+024
+  7.281128275393928E+024
+  7.289179903832793E+024
+  7.295993364792905E+024
+  7.300245831646505E+024
+  7.300573508256163E+024
+  7.295725775760710E+024
+  7.284739250494679E+024
+  7.267113425266331E+024
+  7.242964523052950E+024
+  7.213131209540092E+024
+  7.179205524637870E+024
+  7.143465667018160E+024
+  7.108694906457863E+024
+  7.077882990211265E+024
+  7.053821918325837E+024
+  7.038624783526394E+024
+  7.033211742310010E+024
+  7.036818390160993E+024
+  7.046587037286460E+024
+  7.057300394953572E+024
+  7.061311465592557E+024
+  7.048715375534724E+024
+  7.007800143891711E+024
+  6.925802912171810E+024
+  6.789981137669912E+024
+  6.588976841554210E+024
+  6.314398471129316E+024
+  5.962466762137723E+024
+  5.535477445402570E+024
+  5.042752485000710E+024
+  4.500729604168716E+024
+  3.931927692749058E+024
+  3.362747441465334E+024
+  2.820392934833035E+024
+  2.328558184136341E+024
+  1.901211534463272E+024
+  1.541252613840690E+024
+  1.244579237875991E+024
+  1.003764126478096E+024
+  8.103323050641611E+023
+  6.560339225330115E+023
+  5.334638952420644E+023
+  4.362899068646217E+023
+  3.592644257679653E+023
+  2.981304097597051E+023
+  2.494848637704318E+023
+  2.106352362791011E+023
+  1.794660000213618E+023
+  1.543226359354855E+023
+  1.339147346624104E+023
+  1.172371689143334E+023
+  1.035071061711445E+023
+  9.211430795261551E+022
+  8.258226768491738E+022
+  7.453802734833125E+022
+  6.768885413918550E+022
+  6.180429079908815E+022
+  5.670239103909165E+022
+  5.223920569644803E+022
+  4.830079542383210E+022
+  4.479721636970540E+022
+  4.165806487555030E+022
+  3.882928748885463E+022
+  3.627107879191228E+022
+  3.395682143385124E+022
+  3.187319724516623E+022
+  3.002185389987778E+022
+  2.842340431275661E+022
+  2.712514576903257E+022
+  2.621482069293286E+022
+  2.584413423540244E+022
+  2.626773570056976E+022
+  2.790605924790608E+022
+  3.144375449632631E+022
+  3.797902206588730E+022
+  4.924191980833634E+022
+  6.789935270800950E+022
+  9.795691916675238E+022
+  1.452465914253101E+023
+  2.179454597068596E+023
+  3.269944966807999E+023
+  4.861704951730547E+023
+  7.114130146282033E+023
+  1.018849415237568E+024
+  1.420865285379892E+024
+  1.920385097423706E+024
+  2.507215307465970E+024
+  3.158911467376521E+024
+  3.843597430630026E+024
+  4.524494195182441E+024
+  5.165418101793863E+024
+  5.735846944440718E+024
+  6.214451639586839E+024
+  6.590597314605559E+024
+  6.863936342278435E+024
+  7.042626399954759E+024
+  7.140840652049396E+024
+  7.176153261459622E+024
+  7.167193238797867E+024
+  7.131763304520775E+024
+  7.085475475478539E+024
+  7.040875277978435E+024
+  7.006997361640131E+024
+  6.989292503837658E+024
+  6.989868608683635E+024
+  7.007984899526257E+024
+  7.040727629013963E+024
+  7.083782808236165E+024
+  7.132214720036357E+024
+  7.181164522118846E+024
+  7.226402450201861E+024
+  7.264695969075946E+024
+  7.293987286042556E+024
+  7.313399945016239E+024
+  7.323112221245910E+024
+  7.324144273988079E+024
+  7.318106006870930E+024
+  7.306942698235825E+024
+  7.292700790726437E+024
+  7.277327933524192E+024
+  7.262519983557314E+024
+  7.249620497231749E+024
+  7.239570707068410E+024
+  7.045529852190271E+024
+  7.044043844191747E+024
+  7.044278260119499E+024
+  7.046638866970064E+024
+  7.051355885603326E+024
+  7.058406183235325E+024
+  7.067449867169262E+024
+  7.077791579133879E+024
+  7.088375484876649E+024
+  7.097823198825827E+024
+  7.104519212303621E+024
+  7.106742674687078E+024
+  7.102839375316586E+024
+  7.091421639518087E+024
+  7.071576978760522E+024
+  7.043060407735211E+024
+  7.006441423184265E+024
+  6.963175484695776E+024
+  6.915572469484520E+024
+  6.866641975195551E+024
+  6.819807759395511E+024
+  6.778500082774860E+024
+  6.745653113550044E+024
+  6.723151883965432E+024
+  6.711286504197563E+024
+  6.708278211186161E+024
+  6.709941793507059E+024
+  6.709543322284289E+024
+  6.697903460027865E+024
+  6.663786975187523E+024
+  6.594608008478513E+024
+  6.477463804724523E+024
+  6.300479359500224E+024
+  6.054393562615601E+024
+  5.734240346728693E+024
+  5.340883853907023E+024
+  4.882081087002906E+024
+  4.372715314715225E+024
+  3.833920643057407E+024
+  3.291030450546199E+024
+  2.770605248029492E+024
+  2.296174441345791E+024
+  1.882014121862710E+024
+  1.531640620255339E+024
+  1.241664114786599E+024
+  1.005333058309002E+024
+  8.147516943274413E+023
+  6.621360563587097E+023
+  5.404393506357906E+023
+  4.435954760305891E+023
+  3.665491388068850E+023
+  3.051786155124880E+023
+  2.561738296011637E+023
+  2.169043724374197E+023
+  1.852950134822555E+023
+  1.597163378099479E+023
+  1.388926883701557E+023
+  1.218267905525312E+023
+  1.077391832272785E+023
+  9.602018358313337E+022
+  8.619215271640740E+022
+  7.788006223593712E+022
+  7.078865982608439E+022
+  6.468483102668171E+022
+  5.938402770180338E+022
+  5.473987004713949E+022
+  5.063622637796675E+022
+  4.698123651371525E+022
+  4.370287772043712E+022
+  4.074578800019922E+022
+  3.806917482413831E+022
+  3.564576770580565E+022
+  3.346194707541968E+022
+  3.151943810125406E+022
+  2.983935219506771E+022
+  2.846997019883797E+022
+  2.750059597479281E+022
+  2.708519677175659E+022
+  2.748152000713874E+022
+  2.911401964360871E+022
+  3.267216790426479E+022
+  3.925914147243827E+022
+  5.060833576825444E+022
+  6.938437617410535E+022
+  9.957718482879989E+022
+  1.469758659450805E+023
+  2.196650982864038E+023
+  3.284110242924234E+023
+  4.866903301130757E+023
+  7.099707103989873E+023
+  1.013702564194045E+024
+  1.409401143477509E+024
+  1.899025344427324E+024
+  2.471500316760978E+024
+  3.103780327534069E+024
+  3.763844220126647E+024
+  4.415333668633260E+024
+  5.023056705092222E+024
+  5.557953016767670E+024
+  6.000447592091057E+024
+  6.341742393574198E+024
+  6.583213332869654E+024
+  6.734476162575203E+024
+  6.810800359881340E+024
+  6.830450913609598E+024
+  6.812339468016547E+024
+  6.774168478449242E+024
+  6.731109875975313E+024
+  6.694984032675097E+024
+  6.673878910395526E+024
+  6.672147840991885E+024
+  6.690726546502131E+024
+  6.727705075698915E+024
+  6.779077831350681E+024
+  6.839581164940754E+024
+  6.903521638118803E+024
+  6.965505197825617E+024
+  7.020999178553201E+024
+  7.066690575027632E+024
+  7.100637385720986E+024
+  7.122237573466691E+024
+  7.132058626071661E+024
+  7.131579489589870E+024
+  7.122895632551539E+024
+  7.108426933145283E+024
+  7.090652342727876E+024
+  7.071886145498947E+024
+  7.054108738419367E+024
+  7.038857548338032E+024
+  7.027176017295314E+024
+  7.446601814587613E+024
+  7.445629671474670E+024
+  7.446105598928251E+024
+  7.448339185080614E+024
+  7.452482729708634E+024
+  7.458466330950783E+024
+  7.465947473697386E+024
+  7.474284162997631E+024
+  7.482539129328307E+024
+  7.489522998284818E+024
+  7.493879679083633E+024
+  7.494211646505580E+024
+  7.489238173310654E+024
+  7.477973947690074E+024
+  7.459909252051687E+024
+  7.435167706107074E+024
+  7.404614521182010E+024
+  7.369887926572572E+024
+  7.333329798712230E+024
+  7.297799376688504E+024
+  7.266366367721807E+024
+  7.241895670953558E+024
+  7.226553214677466E+024
+  7.221278175316179E+024
+  7.225278339547578E+024
+  7.235610719858470E+024
+  7.246908508505238E+024
+  7.251309577010926E+024
+  7.238633456587147E+024
+  7.196844758780266E+024
+  7.112830251864362E+024
+  6.973499333699713E+024
+  6.767185383078108E+024
+  6.485270490363300E+024
+  6.123875776052759E+024
+  5.685363433937588E+024
+  5.179313294203383E+024
+  4.622614204025354E+024
+  4.038400775778451E+024
+  3.453793843039087E+024
+  2.896738203170465E+024
+  2.391572091948335E+024
+  1.952643375769733E+024
+  1.582930513873488E+024
+  1.278219981772474E+024
+  1.030882845191734E+024
+  8.322140260039564E+023
+  6.737396988454454E+023
+  5.478537678517728E+023
+  4.480520571263261E+023
+  3.689446495774560E+023
+  3.061590245657548E+023
+  2.561999040514352E+023
+  2.163017440256314E+023
+  1.842916881438591E+023
+  1.584703985442372E+023
+  1.375125245321308E+023
+  1.203857337702149E+023
+  1.062860146101063E+023
+  9.458662624383024E+022
+  8.479818203798848E+022
+  7.653764745037797E+022
+  6.950438427557680E+022
+  6.346171444542396E+022
+  5.822278249551637E+022
+  5.363975693930052E+022
+  4.959562667230568E+022
+  4.599802382990611E+022
+  4.277464788364383E+022
+  3.986998930159347E+022
+  3.724317045162988E+022
+  3.486685688529101E+022
+  3.272737135030391E+022
+  3.082640537168769E+022
+  2.918512657239882E+022
+  2.785210618863055E+022
+  2.691745140769505E+022
+  2.653695809754528E+022
+  2.697214521913113E+022
+  2.865479341891337E+022
+  3.228803589999592E+022
+  3.899973145430783E+022
+  5.056667541017686E+022
+  6.972784310830498E+022
+  1.005971178430316E+023
+  1.491641885149578E+023
+  2.238273713906863E+023
+  3.358237722219301E+023
+  4.993032614697566E+023
+  7.306373091121187E+023
+  1.046390649027182E+024
+  1.459285347323518E+024
+  1.972326465933906E+024
+  2.575045686676240E+024
+  3.244391220803461E+024
+  3.947622748654032E+024
+  4.646962534563148E+024
+  5.305242512316650E+024
+  5.891107973781516E+024
+  6.382645562764790E+024
+  6.768925834279881E+024
+  7.049586055275262E+024
+  7.233000639607771E+024
+  7.333724324974241E+024
+  7.369807088994677E+024
+  7.360384483913854E+024
+  7.323745425063546E+024
+  7.275930572248085E+024
+  7.229832464103748E+024
+  7.194738646379845E+024
+  7.176256180684400E+024
+  7.176558616033076E+024
+  7.194893019428419E+024
+  7.228273498378055E+024
+  7.272274476099359E+024
+  7.321830049684912E+024
+  7.371951433138231E+024
+  7.418294189852676E+024
+  7.457536557853133E+024
+  7.487562066288440E+024
+  7.507466654153988E+024
+  7.517428994909409E+024
+  7.518492224677081E+024
+  7.512305271350377E+024
+  7.500861836660791E+024
+  7.486260024237856E+024
+  7.470497091585189E+024
+  7.455312377731679E+024
+  7.442084091208586E+024
+  7.431777905188692E+024
+  8.685676576603340E+024
+  8.685947410559310E+024
+  8.686950475240524E+024
+  8.688751699406860E+024
+  8.691308896370562E+024
+  8.694437913722349E+024
+  8.697792101810773E+024
+  8.700860730184732E+024
+  8.702990101346076E+024
+  8.703432092644690E+024
+  8.701420527947627E+024
+  8.696270832477764E+024
+  8.687495109655515E+024
+  8.674920711857662E+024
+  8.658795818175609E+024
+  8.639862270433867E+024
+  8.619374852326627E+024
+  8.599047666019709E+024
+  8.580912794880798E+024
+  8.567084519496534E+024
+  8.559433771104729E+024
+  8.559191072442071E+024
+  8.566509929721234E+024
+  8.580034175252160E+024
+  8.596520123679294E+024
+  8.610566606456044E+024
+  8.614503432240376E+024
+  8.598483296121855E+024
+  8.550815610691849E+024
+  8.458573721661937E+024
+  8.308496956230409E+024
+  8.088189724160654E+024
+  7.787583139181402E+024
+  7.400563739997018E+024
+  6.926589271788854E+024
+  6.372016767936295E+024
+  5.750795819221922E+024
+  5.084179732119569E+024
+  4.399227797677694E+024
+  3.726128266683655E+024
+  3.094720689411003E+024
+  2.529864245967913E+024
+  2.044977930506563E+024
+  1.641108805943199E+024
+  1.311785843677087E+024
+  1.047225348117255E+024
+  8.368652689287654E+023
+  6.707290527356425E+023
+  5.400460917326673E+023
+  4.374383659997979E+023
+  3.568767113067859E+023
+  2.935308738662180E+023
+  2.435840373936517E+023
+  2.040489120687778E+023
+  1.726026102039785E+023
+  1.474464420081825E+023
+  1.271909714154448E+023
+  1.107639535260021E+023
+  9.733777176227937E+022
+  8.627288642364063E+022
+  7.707411761060851E+022
+  6.935704942734411E+022
+  6.282232533146673E+022
+  5.723604722478712E+022
+  5.241487204978101E+022
+  4.821471567190133E+022
+  4.452222922106637E+022
+  4.124841664859881E+022
+  3.832392580586060E+022
+  3.569568320867033E+022
+  3.332467198761849E+022
+  3.118479474664930E+022
+  2.926294677941808E+022
+  2.756069101488246E+022
+  2.609833360256579E+022
+  2.492283384368219E+022
+  2.412196208427246E+022
+  2.384859425289506E+022
+  2.436116946723671E+022
+  2.608927709784139E+022
+  2.973708929246972E+022
+  3.644158385676644E+022
+  4.800618183426094E+022
+  6.723126859864384E+022
+  9.835679238798627E+022
+  1.476116919311956E+023
+  2.238201577936406E+023
+  3.389335224604187E+023
+  5.082286687178146E+023
+  7.497394949210872E+023
+  1.082292649441285E+024
+  1.521375082167760E+024
+  2.072888313849591E+024
+  2.728834218255078E+024
+  3.467686365079005E+024
+  4.256845092525423E+024
+  5.057052104140999E+024
+  5.828095922563635E+024
+  6.534352927886258E+024
+  7.148937373872419E+024
+  7.655820406408095E+024
+  8.049925819289235E+024
+  8.335676347267276E+024
+  8.524653966391627E+024
+  8.632991601821106E+024
+  8.678938024523236E+024
+  8.680837251718292E+024
+  8.655604949589995E+024
+  8.617689441473256E+024
+  8.578464828180675E+024
+  8.545995945992069E+024
+  8.525117732278814E+024
+  8.517771481260535E+024
+  8.523533528187692E+024
+  8.540261603490212E+024
+  8.564777393507255E+024
+  8.593506872212951E+024
+  8.623014877767211E+024
+  8.650394320122613E+024
+  8.673497064396023E+024
+  8.691016862107431E+024
+  8.702451719640436E+024
+  8.707983325012944E+024
+  8.708313286964973E+024
+  8.704488063067483E+024
+  8.697731239800141E+024
+  8.689295261178606E+024
+  8.680344978274284E+024
+  8.671878051310813E+024
+  8.664679428480255E+024
+  9.887669611898669E+024
+  9.888909856053736E+024
+  9.890220100621639E+024
+  9.891457288972418E+024
+  9.892418574679826E+024
+  9.892832306505999E+024
+  9.892358967004480E+024
+  9.890604334000550E+024
+  9.887145235477699E+024
+  9.881570202538050E+024
+  9.873533672203494E+024
+  9.862818488451039E+024
+  9.849399792819380E+024
+  9.833501111078690E+024
+  9.815630628999009E+024
+  9.796584086777958E+024
+  9.777401091727155E+024
+  9.759263939157363E+024
+  9.743332441668771E+024
+  9.730515044286599E+024
+  9.721185357625556E+024
+  9.714863133711141E+024
+  9.709888091251587E+024
+  9.703122274402180E+024
+  9.689720658921401E+024
+  9.663010227391294E+024
+  9.614515468224900E+024
+  9.534164633151047E+024
+  9.410707215341601E+024
+  9.232368314061123E+024
+  8.987756178540544E+024
+  8.667018710539223E+024
+  8.263205682070528E+024
+  7.773731619141806E+024
+  7.201753277679408E+024
+  6.557191756936120E+024
+  5.857075624558702E+024
+  5.124904328097974E+024
+  4.388870754532419E+024
+  3.679041782684271E+024
+  3.023923966655096E+024
+  2.446096362445360E+024
+  1.956301401958796E+024
+  1.553093951096046E+024
+  1.227963692845544E+024
+  9.695891256980652E+023
+  7.663218697834668E+023
+  6.074638034476951E+023
+  4.837971710690017E+023
+  3.876922106988757E+023
+  3.130005230506443E+023
+  2.548580721440170E+023
+  2.094661356305361E+023
+  1.738843921338004E+023
+  1.458506553982972E+023
+  1.236311324172165E+023
+  1.058997984932590E+023
+  9.164322306879555E+022
+  8.008654929478578E+022
+  7.063650694547432E+022
+  6.283785600076591E+022
+  5.634026880858977E+022
+  5.087324366109291E+022
+  4.622715450406952E+022
+  4.223896818753806E+022
+  3.878150565273992E+022
+  3.575539667303958E+022
+  3.308309187476191E+022
+  3.070446491951095E+022
+  2.857367739862161E+022
+  2.665710645629707E+022
+  2.493227109271319E+022
+  2.338786456341719E+022
+  2.202524550847705E+022
+  2.086211539617456E+022
+  1.993969609117113E+022
+  1.933563319182118E+022
+  1.918623825513641E+022
+  1.972372275485617E+022
+  2.133693577865016E+022
+  2.466786401133819E+022
+  3.076056867555689E+022
+  4.128347578566449E+022
+  5.884798290254688E+022
+  8.744222795323828E+022
+  1.329817840768994E+023
+  2.039387820074244E+023
+  3.119344957087493E+023
+  4.720552525949654E+023
+  7.024736358234175E+023
+  1.022745471775572E+024
+  1.449973427679372E+024
+  1.992763781771035E+024
+  2.646740954725852E+024
+  3.394352725278993E+024
+  4.206631666075058E+024
+  5.046927703549077E+024
+  5.876103939228736E+024
+  6.657865347723778E+024
+  7.363017979691800E+024
+  7.971950207702256E+024
+  8.475224867456548E+024
+  8.872636561723529E+024
+  9.171312054046782E+024
+  9.383430790145212E+024
+  9.524004374735101E+024
+  9.608974302860514E+024
+  9.653733587050206E+024
+  9.672078275414404E+024
+  9.675546878553826E+024
+  9.673091972319251E+024
+  9.671029404045959E+024
+  9.673212956354075E+024
+  9.681380315132757E+024
+  9.695610791172892E+024
+  9.714831227201103E+024
+  9.737308823782439E+024
+  9.761080403140741E+024
+  9.784285058599107E+024
+  9.805386565783132E+024
+  9.823288989091188E+024
+  9.837361979365722E+024
+  9.847401393898959E+024
+  9.853554153164952E+024
+  9.856230373887402E+024
+  9.856014618265277E+024
+  9.853583876567488E+024
+  9.849642371770714E+024
+  9.844876369026348E+024
+  9.839924549947814E+024
+  1.207515481013165E+025
+  1.207700267795619E+025
+  1.207859946533408E+025
+  1.207968163513555E+025
+  1.207994186114037E+025
+  1.207902935612336E+025
+  1.207655904449566E+025
+  1.207213043161957E+025
+  1.206535496274542E+025
+  1.205589354118067E+025
+  1.204350214679210E+025
+  1.202807970998545E+025
+  1.200971151018570E+025
+  1.198869976015166E+025
+  1.196557072848333E+025
+  1.194104676718497E+025
+  1.191597258658516E+025
+  1.189118783246624E+025
+  1.186734253869379E+025
+  1.184465856359023E+025
+  1.182264837307108E+025
+  1.179981149490474E+025
+  1.177333720351493E+025
+  1.173884813749087E+025
+  1.169022275904015E+025
+  1.161953483437071E+025
+  1.151714632398156E+025
+  1.137198752037029E+025
+  1.117205559841259E+025
+  1.090515847019593E+025
+  1.055992028827039E+025
+  1.012704068840436E+025
+  9.600754358808217E+024
+  8.980367487634071E+024
+  8.271658963985318E+024
+  7.487846742874472E+024
+  6.649770757902474E+024
+  5.784982946755038E+024
+  4.925602247140133E+024
+  4.105085261689548E+024
+  3.354418278906990E+024
+  2.697390834886362E+024
+  2.144302293014198E+024
+  1.691920165733860E+024
+  1.329389315774781E+024
+  1.043029299793810E+024
+  8.190847888037231E+023
+  6.450999347978416E+023
+  5.104537553089996E+023
+  4.064297646324871E+023
+  3.260561232923646E+023
+  2.638548333300132E+023
+  2.155749218630164E+023
+  1.779460024107200E+023
+  1.484667028300816E+023
+  1.252308481232903E+023
+  1.067887028108024E+023
+  9.203834577603395E+022
+  8.014178407004748E+022
+  7.046079133724801E+022
+  6.250816787923861E+022
+  5.591089614100685E+022
+  5.038238474627425E+022
+  4.570161087187229E+022
+  4.169747706540366E+022
+  3.823710304240819E+022
+  3.521709009299850E+022
+  3.255704206324722E+022
+  3.019481981891172E+022
+  2.808316371367512E+022
+  2.618746036523119E+022
+  2.448457878054694E+022
+  2.296288604064231E+022
+  2.162381581875717E+022
+  2.048576479160420E+022
+  1.959172163644255E+022
+  1.902301705111005E+022
+  1.892308944942903E+022
+  1.953739317928187E+022
+  2.127873808396301E+022
+  2.483155282535340E+022
+  3.131363173445849E+022
+  4.251901867688748E+022
+  6.126869302599318E+022
+  9.189238858720091E+022
+  1.408477215942242E+023
+  2.174403287020793E+023
+  3.345258053959347E+023
+  5.089355044040654E+023
+  7.611666214768617E+023
+  1.113630033400852E+024
+  1.586525828739721E+024
+  2.191187161377123E+024
+  2.924951905204027E+024
+  3.770615000612522E+024
+  4.697994007568338E+024
+  5.667705420459772E+024
+  6.636677838516086E+024
+  7.563985497991825E+024
+  8.415671000092936E+024
+  9.167725299814012E+024
+  9.807032245231372E+024
+  1.033060525876013E+025
+  1.074371363970356E+025
+  1.105752121466303E+025
+  1.128672723510181E+025
+  1.144751076017776E+025
+  1.155591071556216E+025
+  1.162665920963921E+025
+  1.167242685363367E+025
+  1.170341929453173E+025
+  1.172726386869052E+025
+  1.174912907754518E+025
+  1.177202019011556E+025
+  1.179719146260849E+025
+  1.182461324125591E+025
+  1.185343526493126E+025
+  1.188239804116267E+025
+  1.191016056410628E+025
+  1.193553046161110E+025
+  1.195759799165247E+025
+  1.197578729764452E+025
+  1.198984759212045E+025
+  1.199981099611608E+025
+  1.200593793821080E+025
+  1.200865915643630E+025
+  1.200851984915649E+025
+  1.200613580344325E+025
+  1.200216374884219E+025
+  1.199727952665651E+025
+  1.237322524685715E+025
+  1.237513638479706E+025
+  1.237677423080965E+025
+  1.237786460481294E+025
+  1.237808982851875E+025
+  1.237708949683416E+025
+  1.237447009759066E+025
+  1.236982425244958E+025
+  1.236275828586036E+025
+  1.235292979670869E+025
+  1.234009311264328E+025
+  1.232414670126690E+025
+  1.230517577618212E+025
+  1.228348174021670E+025
+  1.225958779286097E+025
+  1.223420906567224E+025
+  1.220817666739031E+025
+  1.218230777354591E+025
+  1.215721845033764E+025
+  1.213308247799692E+025
+  1.210934773820913E+025
+  1.208443073207217E+025
+  1.205541805964514E+025
+  1.201780985371596E+025
+  1.196534338323465E+025
+  1.188993533519233E+025
+  1.178177953414980E+025
+  1.162963436355008E+025
+  1.142133152798159E+025
+  1.114453349216947E+025
+  1.078775615870575E+025
+  1.034164853110552E+025
+  9.800474619030416E+024
+  9.163671455064414E+024
+  8.437266943529818E+024
+  7.634852650267787E+024
+  6.777757451023948E+024
+  5.894108721745667E+024
+  5.016638803520077E+024
+  4.179392746540620E+024
+  3.413853955054413E+024
+  2.744142596070123E+024
+  2.180628283590783E+024
+  1.719910409656167E+024
+  1.350846501114208E+024
+  1.059439184550664E+024
+  8.316345257958601E+023
+  6.547176250496592E+023
+  5.178538002235234E+023
+  4.121560436139026E+023
+  3.305195317561079E+023
+  2.673642209520923E+023
+  2.183617271035158E+023
+  1.801834121960151E+023
+  1.502843104964304E+023
+  1.267257369292232E+023
+  1.080337576236912E+023
+  9.308845046185907E+022
+  8.103842486525968E+022
+  7.123546843337487E+022
+  6.318492123214685E+022
+  5.650817568021946E+022
+  5.091443671583979E+022
+  4.617950770565937E+022
+  4.212988497366538E+022
+  3.863085681310370E+022
+  3.557762643761545E+022
+  3.288872957484939E+022
+  3.050121408941376E+022
+  2.836720958616880E+022
+  2.645165924868990E+022
+  2.473113739481046E+022
+  2.319386434163043E+022
+  2.184129730329163E+022
+  2.069208401818282E+022
+  1.978980523250743E+022
+  1.921693150955346E+022
+  1.911895053812900E+022
+  1.974489075768722E+022
+  2.151368426628284E+022
+  2.512009279695139E+022
+  3.169908815442078E+022
+  4.307278720181826E+022
+  6.210715432493458E+022
+  9.320237169703300E+022
+  1.429234381046147E+023
+  2.207344775253221E+023
+  3.397159944369133E+023
+  5.170031484582720E+023
+  7.734776556218857E+023
+  1.131993795303621E+024
+  1.613189936143004E+024
+  2.228718283002757E+024
+  2.976016460141962E+024
+  3.837728939276108E+024
+  4.783274941751472E+024
+  5.772667329243444E+024
+  6.762106118085487E+024
+  7.709909119575522E+024
+  8.581425363284279E+024
+  9.352081798956524E+024
+  1.000836269262277E+025
+  1.054705082078284E+025
+  1.097333562086517E+025
+  1.129842087811507E+025
+  1.153713071490297E+025
+  1.170582135078975E+025
+  1.182073416329492E+025
+  1.189680867517053E+025
+  1.194691383518501E+025
+  1.198143576482877E+025
+  1.200815969684293E+025
+  1.203238773529462E+025
+  1.205723485251192E+025
+  1.208404288608876E+025
+  1.211285020571403E+025
+  1.214285790059089E+025
+  1.217284404785014E+025
+  1.220149416578882E+025
+  1.222763385931083E+025
+  1.225036500150735E+025
+  1.226911879016757E+025
+  1.228364839408891E+025
+  1.229398812014552E+025
+  1.230040015374271E+025
+  1.230331778670164E+025
+  1.230329051650769E+025
+  1.230094096577710E+025
+  1.229693588903023E+025
+  1.229196462281996E+025
+  1.089106937836236E+025
+  1.089242785993025E+025
+  1.089387784027299E+025
+  1.089526531450681E+025
+  1.089636885501113E+025
+  1.089688910745070E+025
+  1.089644943852142E+025
+  1.089461031625391E+025
+  1.089089795647182E+025
+  1.088484984934049E+025
+  1.087607567294642E+025
+  1.086432777648973E+025
+  1.084957354182931E+025
+  1.083205932428809E+025
+  1.081235249759457E+025
+  1.079134636468155E+025
+  1.077021308614544E+025
+  1.075029230675563E+025
+  1.073290806517593E+025
+  1.071911413906617E+025
+  1.070937788487747E+025
+  1.070322371446201E+025
+  1.069886787512751E+025
+  1.069288437630178E+025
+  1.067994644443824E+025
+  1.065268846392750E+025
+  1.060173079716283E+025
+  1.051590576243349E+025
+  1.038271864242354E+025
+  1.018907220332189E+025
+  9.922272808943399E+024
+  9.571313540059168E+024
+  9.128386578315668E+024
+  8.590508709278262E+024
+  7.961054023402166E+024
+  7.250894765222616E+024
+  6.478791344179073E+024
+  5.670697222734661E+024
+  4.857798444477133E+024
+  4.073395344651549E+024
+  3.349098076604481E+024
+  2.709983282349961E+024
+  2.168035753922997E+024
+  1.721741733488748E+024
+  1.361750533189977E+024
+  1.075582176863735E+024
+  8.503793640490622E+023
+  6.743243060668138E+023
+  5.372286768285581E+023
+  4.306554547360688E+023
+  3.478030095055505E+023
+  2.832886030156035E+023
+  2.329070211242941E+023
+  1.934022851213849E+023
+  1.622685995051483E+023
+  1.375849049759356E+023
+  1.178815374849058E+023
+  1.020349773696638E+023
+  8.918596167336740E+022
+  7.867641889932867E+022
+  7.000125179270585E+022
+  6.277166490400704E+022
+  5.668737791975203E+022
+  5.151563018685768E+022
+  4.707535273281140E+022
+  4.322526503856149E+022
+  3.985495569373229E+022
+  3.687824274434226E+022
+  3.422829662858262E+022
+  3.185416316108986E+022
+  2.971846518538199E+022
+  2.779621216229720E+022
+  2.607483709595935E+022
+  2.455585219884788E+022
+  2.325893063191602E+022
+  2.222987189393703E+022
+  2.155491961747632E+022
+  2.138543868976943E+022
+  2.197921893928399E+022
+  2.376783931723011E+022
+  2.746367298008756E+022
+  3.422499559200054E+022
+  4.590233693299520E+022
+  6.539144552180869E+022
+  9.711361456709656E+022
+  1.476251118872932E+023
+  2.263127599820398E+023
+  3.460479357400900E+023
+  5.235326268099970E+023
+  7.788743800720362E+023
+  1.133693393563947E+024
+  1.606867252449926E+024
+  2.207835834556907E+024
+  2.931641350850590E+024
+  3.758728908200131E+024
+  4.656916405892169E+024
+  5.585546406982625E+024
+  6.501253224214336E+024
+  7.363868934197097E+024
+  8.141136446153397E+024
+  8.811447065877211E+024
+  9.364482665943809E+024
+  9.800157884027793E+024
+  1.012650452227130E+025
+  1.035713816235252E+025
+  1.050879298216490E+025
+  1.059921139582899E+025
+  1.064550485721683E+025
+  1.066299198956761E+025
+  1.066446733985334E+025
+  1.065983903461845E+025
+  1.065607496978124E+025
+  1.065739978645698E+025
+  1.066568249987130E+025
+  1.068094848351892E+025
+  1.070194492137289E+025
+  1.072669135526336E+025
+  1.075295898526895E+025
+  1.077864184990058E+025
+  1.080200470054367E+025
+  1.082181139202227E+025
+  1.083735215857626E+025
+  1.084839837994762E+025
+  1.085511722546857E+025
+  1.085797206944909E+025
+  1.085762196388215E+025
+  1.085482864018007E+025
+  1.085038239603675E+025
+  1.084505063782073E+025
+  1.083954421876739E+025
+  8.580897466504335E+024
+  8.581115201915055E+024
+  8.582082189648474E+024
+  8.583873256195303E+024
+  8.586454183178053E+024
+  8.589646854216418E+024
+  8.593107713941766E+024
+  8.596325260383345E+024
+  8.598640483666864E+024
+  8.599295098647660E+024
+  8.597508063333184E+024
+  8.592575936379118E+024
+  8.583989275292007E+024
+  8.571553141815434E+024
+  8.555495159200114E+024
+  8.536541245940849E+024
+  8.515938019941000E+024
+  8.495402271306428E+024
+  8.476982386196839E+024
+  8.462824663420596E+024
+  8.454848904148968E+024
+  8.454351287127429E+024
+  8.461566361089319E+024
+  8.475231651473576E+024
+  8.492205869603921E+024
+  8.507194008223153E+024
+  8.512630124316706E+024
+  8.498763051371441E+024
+  8.453983653071289E+024
+  8.365425145188972E+024
+  8.219857995932881E+024
+  8.004881820481375E+024
+  7.710380240495836E+024
+  7.330144260535135E+024
+  6.863485621880327E+024
+  6.316567224588620E+024
+  5.703105217852523E+024
+  5.044096301012789E+024
+  4.366342667977038E+024
+  3.699801300281280E+024
+  3.074131511502675E+024
+  2.514088605941986E+024
+  2.033091582496732E+024
+  1.632275452120556E+024
+  1.305297407760574E+024
+  1.042508147316493E+024
+  8.334686611006773E+023
+  6.683069318313542E+023
+  5.383370723381908E+023
+  4.362475546611093E+023
+  3.560602199646883E+023
+  2.929832884702865E+023
+  2.432286018201860E+023
+  2.038300124699819E+023
+  1.724801153521400E+023
+  1.473914935186935E+023
+  1.271828814147853E+023
+  1.107879346212597E+023
+  9.738328508293521E+022
+  8.633244449782572E+022
+  7.714241962782818E+022
+  6.943035814911770E+022
+  6.289801906559087E+022
+  5.731229837065061E+022
+  5.249041707106198E+022
+  4.828869107871486E+022
+  4.459405516483567E+022
+  4.131771476982282E+022
+  3.839046155738846E+022
+  3.575932535949401E+022
+  3.338536359080774E+022
+  3.124253057863512E+022
+  2.931775201942998E+022
+  2.761259442623075E+022
+  2.614732509242393E+022
+  2.496878991592824E+022
+  2.416451147715030E+022
+  2.388687689206139E+022
+  2.439340999285389E+022
+  2.611204267807033E+022
+  2.974402082467411E+022
+  3.642126878526098E+022
+  4.793866533699228E+022
+  6.708247506119130E+022
+  9.806986948537974E+022
+  1.470940593158326E+023
+  2.229249870850773E+023
+  3.374347671404801E+023
+  5.057900375260717E+023
+  7.458805134623297E+023
+  1.076359830747640E+024
+  1.512533603320091E+024
+  2.060154085795971E+024
+  2.711146119954809E+024
+  3.443997742657628E+024
+  4.226223171676769E+024
+  5.018769598687697E+024
+  5.781698169475930E+024
+  6.479690365532697E+024
+  7.086161719699939E+024
+  7.585350422635067E+024
+  7.972393003321298E+024
+  8.251861766783524E+024
+  8.435425625510343E+024
+  8.539248584194897E+024
+  8.581564480435580E+024
+  8.580666858939012E+024
+  8.553395043389946E+024
+  8.514103461448779E+024
+  8.474061763233594E+024
+  8.441225744566001E+024
+  8.420321932042218E+024
+  8.413188465261046E+024
+  8.419307802287290E+024
+  8.436456355170596E+024
+  8.461389415212705E+024
+  8.490482797622628E+024
+  8.520267645396869E+024
+  8.547818858232528E+024
+  8.570984350946973E+024
+  8.588465700979611E+024
+  8.599777762645798E+024
+  8.605125079828462E+024
+  8.605235107197168E+024
+  8.601180358865187E+024
+  8.594208265485840E+024
+  8.585590860909688E+024
+  8.576506781400230E+024
+  8.567960788180965E+024
+  8.560738077115286E+024
+  7.858392468645958E+024
+  7.857332288721073E+024
+  7.857794248120062E+024
+  7.860108803840896E+024
+  7.864441379396894E+024
+  7.870723448820017E+024
+  7.878598782797765E+024
+  7.887394435865067E+024
+  7.896124474418136E+024
+  7.903534844083293E+024
+  7.908192887344190E+024
+  7.908619133361881E+024
+  7.903454102385485E+024
+  7.891646921272361E+024
+  7.872645920193315E+024
+  7.846565890952288E+024
+  7.814303427849014E+024
+  7.777571433482666E+024
+  7.738827391544342E+024
+  7.701078264106008E+024
+  7.667557958914294E+024
+  7.641290118389429E+024
+  7.624567227969105E+024
+  7.618393733523470E+024
+  7.621953048541629E+024
+  7.632164042507620E+024
+  7.643391574974983E+024
+  7.647369467706899E+024
+  7.633385576700684E+024
+  7.588769120538411E+024
+  7.499709030268525E+024
+  7.352413594477382E+024
+  7.134587615219646E+024
+  6.837145313894463E+024
+  6.455992599035115E+024
+  5.993611059754669E+024
+  5.460088219219079E+024
+  4.873214876085895E+024
+  4.257365470641920E+024
+  3.641117455926824E+024
+  3.053919012522211E+024
+  2.521419513834853E+024
+  2.058739821605028E+024
+  1.669017786026376E+024
+  1.347811236001688E+024
+  1.087078560492945E+024
+  8.776442428023418E+023
+  7.105767525216148E+023
+  5.778592870973182E+023
+  4.726365257632324E+023
+  3.892275789553176E+023
+  3.230238637162870E+023
+  2.703413683267430E+023
+  2.282651773596619E+023
+  1.945050305348102E+023
+  1.672697267018997E+023
+  1.451622264816922E+023
+  1.270943191269140E+023
+  1.122184380195806E+023
+  9.987385955778527E+022
+  8.954463496184120E+022
+  8.082691679877440E+022
+  7.340371144523669E+022
+  6.702544862851345E+022
+  6.149508147082509E+022
+  5.665670554866792E+022
+  5.238691292104702E+022
+  4.858828182711270E+022
+  4.518455389473886E+022
+  4.211718096886754E+022
+  3.934304950175123E+022
+  3.683333321660996E+022
+  3.457361361134212E+022
+  3.256568451007153E+022
+  3.083188200659414E+022
+  2.942344134782195E+022
+  2.843539448805431E+022
+  2.803203042210675E+022
+  2.848909669237754E+022
+  3.026183073309420E+022
+  3.409152005097743E+022
+  4.116717031652454E+022
+  5.336183806165140E+022
+  7.356280297381838E+022
+  1.061065931030354E+023
+  1.573069341199871E+023
+  2.360163379254494E+023
+  3.540794796330699E+023
+  5.264111452401359E+023
+  7.702677055416953E+023
+  1.103109188996790E+024
+  1.538345334245510E+024
+  2.079143969472627E+024
+  2.714472298568043E+024
+  3.420035659089818E+024
+  4.161329337351776E+024
+  4.898541046651896E+024
+  5.592502775966723E+024
+  6.210174960756322E+024
+  6.728469648119223E+024
+  7.135875516919457E+024
+  7.432017312377271E+024
+  7.625726699162310E+024
+  7.732346658029260E+024
+  7.770900794544431E+024
+  7.761553091634424E+024
+  7.723571127169621E+024
+  7.673848840952794E+024
+  7.625958507037987E+024
+  7.589669994834718E+024
+  7.570872346087645E+024
+  7.571835484622385E+024
+  7.591746155564803E+024
+  7.627440394882809E+024
+  7.674240941064027E+024
+  7.726800717961279E+024
+  7.779859541262467E+024
+  7.828842024263859E+024
+  7.870255907383122E+024
+  7.901883691521198E+024
+  7.922788956203401E+024
+  7.933178264746044E+024
+  7.934169591509534E+024
+  7.927518211283312E+024
+  7.915340277219863E+024
+  7.899858416130999E+024
+  7.883184687547185E+024
+  7.867154749658580E+024
+  7.853219276257281E+024
+  7.842390437955221E+024
+  7.165305842857292E+019
+  7.163966706367682E+019
+  7.164186405489145E+019
+  7.166330700280855E+019
+  7.170603643816887E+019
+  7.176974858662689E+019
+  7.185119809108645E+019
+  7.194382571626303E+019
+  7.203769360383458E+019
+  7.211981562685413E+019
+  7.217492663400535E+019
+  7.218668077017976E+019
+  7.213922364572835E+019
+  7.201902674017525E+019
+  7.181680832271005E+019
+  7.152930973880228E+019
+  7.116065916438852E+019
+  7.072304356517007E+019
+  7.023643304039346E+019
+  6.972716935457314E+019
+  6.922534483948524E+019
+  6.876105043570051E+019
+  6.835974267652589E+019
+  6.803714151237510E+019
+  6.779419569325335E+019
+  6.761271924025249E+019
+  6.745230573778910E+019
+  6.724907847915048E+019
+  6.691675627397951E+019
+  6.635042453813089E+019
+  6.543329306675773E+019
+  6.404655404737955E+019
+  6.208215481196283E+019
+  5.945779557388833E+019
+  5.613272406547175E+019
+  5.212200657237850E+019
+  4.750616382524087E+019
+  4.243281176508359E+019
+  3.710772720209968E+019
+  3.177481410781143E+019
+  2.668752535425725E+019
+  2.206825232144163E+019
+  1.804922645260312E+019
+  1.465908929637769E+019
+  1.186070018849523E+019
+  9.585499986571215E+018
+  7.754835344306935E+018
+  6.291910872611191E+018
+  5.127639428934716E+018
+  4.202826896819709E+018
+  3.468329550807535E+018
+  2.884208063908115E+018
+  2.418478471497473E+018
+  2.045788409787462E+018
+  1.746182304296044E+018
+  1.504024489182782E+018
+  1.307097595531944E+018
+  1.145867487506653E+018
+  1.012894708720626E+018
+  9.023691640716951E+017
+  8.097455791836113E+017
+  7.314598414249983E+017
+  6.647094151024800E+017
+  6.072840577373270E+017
+  5.574357962731904E+017
+  5.137794638364888E+017
+  4.752170404691999E+017
+  4.408806238358267E+017
+  4.100901544230489E+017
+  3.823231436221583E+017
+  3.571947454304979E+017
+  3.344477606200510E+017
+  3.139538223424009E+017
+  2.957294511218465E+017
+  2.799744187185147E+017
+  2.671456838533004E+017
+  2.580890799137540E+017
+  2.542641975071400E+017
+  2.581168134029624E+017
+  2.736786430032420E+017
+  3.075055617125713E+017
+  3.700988243944400E+017
+  4.779787345424450E+017
+  6.565749404634463E+017
+  9.440232541898706E+017
+  1.395754587716264E+018
+  2.089344044117341E+018
+  3.128365339955812E+018
+  4.642905366457645E+018
+  6.782979495025648E+018
+  9.699621528682883E+018
+  1.350757056802292E+019
+  1.823129876172418E+019
+  2.377107004001686E+019
+  2.991216591071070E+019
+  3.635253409811773E+019
+  4.274631646061649E+019
+  4.875604593714455E+019
+  5.410018498014694E+019
+  5.858568398670295E+019
+  6.212108790743786E+019
+  6.471159194138934E+019
+  6.644127328761893E+019
+  6.744890267673229E+019
+  6.790286455405146E+019
+  6.797886740618260E+019
+  6.784225438910921E+019
+  6.763536051704870E+019
+  6.746962106150205E+019
+  6.742186829274831E+019
+  6.753422555299921E+019
+  6.781702238424919E+019
+  6.825410947137166E+019
+  6.880984022618946E+019
+  6.943686416774744E+019
+  7.008382380644769E+019
+  7.070211853935555E+019
+  7.125110480308376E+019
+  7.170139744980124E+019
+  7.203624781784392E+019
+  7.225123058110420E+019
+  7.235264141693092E+019
+  7.235508900399393E+019
+  7.227875535538293E+019
+  7.214669330260559E+019
+  7.198238025558366E+019
+  7.180766316651180E+019
+  7.164121514191770E+019
+  7.149755325380998E+019
+  7.138659254801735E+019
+  1.369814699986388E+020
+  1.369645338754842E+020
+  1.369723574524605E+020
+  1.370102502251657E+020
+  1.370808026297826E+020
+  1.371827408377538E+020
+  1.373100259847045E+020
+  1.374513544559147E+020
+  1.375901898815584E+020
+  1.377054676263362E+020
+  1.377730317741106E+020
+  1.377677675546736E+020
+  1.376663135608981E+020
+  1.374501411666145E+020
+  1.371086792561663E+020
+  1.366420714915789E+020
+  1.360630988599869E+020
+  1.353977930709855E+020
+  1.346843218942068E+020
+  1.339698606195337E+020
+  1.333053766627405E+020
+  1.327385291540767E+020
+  1.323051851705758E+020
+  1.320203302770659E+020
+  1.318693549072537E+020
+  1.318007970328865E+020
+  1.317216105499180E+020
+  1.314959328141397E+020
+  1.309481846735927E+020
+  1.298711795434292E+020
+  1.280397243575276E+020
+  1.252298777026040E+020
+  1.212434504600446E+020
+  1.159363575731628E+020
+  1.092480168931972E+020
+  1.012273154461428E+020
+  9.204922866798428E+019
+  8.201582638956882E+019
+  7.153703016928697E+019
+  6.109051536998167E+019
+  5.116603170567566E+019
+  4.218770355108191E+019
+  3.440227307070104E+019
+  2.785596406716480E+019
+  2.246900301485722E+019
+  1.810252011573863E+019
+  1.459977672717718E+019
+  1.180905398711925E+019
+  9.594672052637266E+018
+  7.840928111462565E+018
+  6.452154886575579E+018
+  5.350889787890436E+018
+  4.475313290778043E+018
+  3.776584068371442E+018
+  3.216378733781002E+018
+  2.764761473686356E+018
+  2.398410286642359E+018
+  2.099177614445400E+018
+  1.852942613366875E+018
+  1.648707155468314E+018
+  1.477890084810175E+018
+  1.333779847911672E+018
+  1.211112058693545E+018
+  1.105744758829228E+018
+  1.014409646835115E+018
+  9.345222307221979E+017
+  8.640377152184055E+017
+  8.013425575808348E+017
+  7.451741740625394E+017
+  6.945634687451236E+017
+  6.487969643305599E+017
+  6.073976982243409E+017
+  5.701271933885482E+017
+  5.370154174615791E+017
+  5.084327182829711E+017
+  4.852287150272242E+017
+  4.689799880994809E+017
+  4.624135697955228E+017
+  4.701092577663183E+017
+  4.996324920550618E+017
+  5.633101726150089E+017
+  6.809273545835407E+017
+  8.836739466587575E+017
+  1.219666662984178E+018
+  1.761238999489157E+018
+  2.613813952806042E+018
+  3.925388744326612E+018
+  5.894284932314945E+018
+  8.770718728420187E+018
+  1.284498855851919E+019
+  1.841215582576492E+019
+  2.570127283251934E+019
+  3.477187628246924E+019
+  4.544720938835902E+019
+  5.732886379795192E+019
+  6.984658089951935E+019
+  8.233908131417026E+019
+  9.415280823045667E+019
+  1.047333912175867E+020
+  1.136898760645028E+020
+  1.208225918099083E+020
+  1.261166563401942E+020
+  1.297105694251193E+020
+  1.318518382516405E+020
+  1.328501454696422E+020
+  1.330351919686880E+020
+  1.327228252776712E+020
+  1.321904428830785E+020
+  1.316611986928867E+020
+  1.312959911707231E+020
+  1.311921425834982E+020
+  1.313877165358580E+020
+  1.318703598876243E+020
+  1.325893667952880E+020
+  1.334694428647817E+020
+  1.344245372569773E+020
+  1.353702186126297E+020
+  1.362334200184466E+020
+  1.369588956745007E+020
+  1.375122848409003E+020
+  1.378801435517260E+020
+  1.380676213448358E+020
+  1.380946230493042E+020
+  1.379912946621395E+020
+  1.377934925137147E+020
+  1.375386282815114E+020
+  1.372621354275688E+020
+  1.369947831220423E+020
+  1.367609325538816E+020
+  1.365776913235933E+020
+  6.649819610622765E+019
+  6.649854128908168E+019
+  6.650530190209733E+019
+  6.651928702860600E+019
+  6.654041995017894E+019
+  6.656743284518497E+019
+  6.659766197964321E+019
+  6.662699046571869E+019
+  6.664997234342004E+019
+  6.666017947029395E+019
+  6.665077919092686E+019
+  6.661531244458413E+019
+  6.654861560940388E+019
+  6.644779652528182E+019
+  6.631313797168094E+019
+  6.614877420403358E+019
+  6.596297489734845E+019
+  6.576787883902911E+019
+  6.557855148697772E+019
+  6.541130038189349E+019
+  6.528126945007571E+019
+  6.519943881715381E+019
+  6.516926565696813E+019
+  6.518329561333354E+019
+  6.522013725549401E+019
+  6.524221499461475E+019
+  6.519470099334648E+019
+  6.500598608125862E+019
+  6.458999868739156E+019
+  6.385062457631106E+019
+  6.268840097258840E+019
+  6.100951090978911E+019
+  5.873682512721718E+019
+  5.582227887452418E+019
+  5.225923041101492E+019
+  4.809272659800671E+019
+  4.342504172222236E+019
+  3.841383555978613E+019
+  3.326116765216929E+019
+  2.819353001435186E+019
+  2.343570359458555E+019
+  1.917571689059953E+019
+  1.551574091445847E+019
+  1.246466476956709E+019
+  9.974540340470180E+018
+  7.972253040030672E+018
+  6.378636027425991E+018
+  5.118779945048936E+018
+  4.126744107951451E+018
+  3.346995825558729E+018
+  2.734108195827037E+018
+  2.251651452271953E+018
+  1.870811016883064E+018
+  1.569012671717836E+018
+  1.328685655324561E+018
+  1.136210829114717E+018
+  9.810572503795254E+017
+  8.550898361074355E+017
+  7.520230869050260E+017
+  6.669949123252077E+017
+  5.962368471689852E+017
+  5.368203714119732E+017
+  4.864626321908123E+017
+  4.433781639096904E+017
+  4.061660480164305E+017
+  3.737243174504897E+017
+  3.451853239645100E+017
+  3.198673139213622E+017
+  2.972386871959688E+017
+  2.768924519428464E+017
+  2.585293647702336E+017
+  2.419493235309193E+017
+  2.270519759241149E+017
+  2.138495307830782E+017
+  2.024978619048980E+017
+  1.933568265135513E+017
+  1.870981743783329E+017
+  1.848906314852048E+017
+  1.887079606049222E+017
+  2.018280608802181E+017
+  2.296194778825674E+017
+  2.807434742486474E+017
+  3.689271569169198E+017
+  5.154686310533059E+017
+  7.525862091301368E+017
+  1.127567021767897E+018
+  1.707329586326489E+018
+  2.582398950600366E+018
+  3.868326367785654E+018
+  5.701272790498842E+018
+  8.223012866415177E+018
+  1.154955528659646E+019
+  1.572388486856205E+019
+  2.068357648778955E+019
+  2.626407252855059E+019
+  3.221773973518680E+019
+  3.824765180040283E+019
+  4.405093397966787E+019
+  4.936060778449314E+019
+  5.397668473165902E+019
+  5.778175540405431E+019
+  6.074123875941138E+019
+  6.289196410070027E+019
+  6.432415576011931E+019
+  6.516150534011313E+019
+  6.554266342458522E+019
+  6.560595646457229E+019
+  6.547793403815055E+019
+  6.526563904538301E+019
+  6.505219432638830E+019
+  6.489524090782065E+019
+  6.482778149045002E+019
+  6.486097716198809E+019
+  6.498838852500685E+019
+  6.519107322731661E+019
+  6.544290400429050E+019
+  6.571550104556876E+019
+  6.598229451171690E+019
+  6.622142322485044E+019
+  6.641738433122937E+019
+  6.656152889958176E+019
+  6.665162775875182E+019
+  6.669080796295352E+019
+  6.668617374252824E+019
+  6.664736187054652E+019
+  6.658517627978124E+019
+  6.651039432771911E+019
+  6.643283958776209E+019
+  6.636075969009405E+019
+  6.630048620934425E+019
+  4.801334858369298E+019
+  4.802043686458654E+019
+  4.802671241515814E+019
+  4.803118385792106E+019
+  4.803267029113081E+019
+  4.802979418645379E+019
+  4.802101020677418E+019
+  4.800467426299891E+019
+  4.797914911107890E+019
+  4.794295406858717E+019
+  4.789495128131436E+019
+  4.783454567298085E+019
+  4.776187180520900E+019
+  4.767793391691472E+019
+  4.758465564019148E+019
+  4.748479143212579E+019
+  4.738165515839427E+019
+  4.727863168162832E+019
+  4.717845514082583E+019
+  4.708226381584943E+019
+  4.698847493661281E+019
+  4.689155947076421E+019
+  4.678083099635240E+019
+  4.663938860479564E+019
+  4.644336777374885E+019
+  4.616165504369084E+019
+  4.575621546069597E+019
+  4.518317128528516E+019
+  4.439475915560157E+019
+  4.334227514884035E+019
+  4.198007468534787E+019
+  4.027059747661980E+019
+  3.819020651363264E+019
+  3.573535093891272E+019
+  3.292820836950696E+019
+  2.982061122685295E+019
+  2.649486191028856E+019
+  2.306019237037826E+019
+  1.964428591202942E+019
+  1.638044526689460E+019
+  1.339241060176289E+019
+  1.077546227339732E+019
+  8.571204849202746E+018
+  6.767267666902331E+018
+  5.320802010000669E+018
+  4.177593648771624E+018
+  3.283036273581862E+018
+  2.587627517575594E+018
+  2.049121634778885E+018
+  1.632823439418934E+018
+  1.310964261182032E+018
+  1.061712105156204E+018
+  8.681151962941861E+017
+  7.171245397008451E+017
+  5.987538047283373E+017
+  5.053885128359286E+017
+  4.312341508307760E+017
+  3.718838413737070E+017
+  3.239842666366051E+017
+  2.849799934275855E+017
+  2.529191401051595E+017
+  2.263063905823971E+017
+  2.039922060942020E+017
+  1.850895283907334E+017
+  1.689112761908168E+017
+  1.549235423640084E+017
+  1.427106592554856E+017
+  1.319492790972798E+017
+  1.223893842689987E+017
+  1.138407700503966E+017
+  1.061641081438011E+017
+  9.926629367711926E+016
+  9.310051951883146E+016
+  8.767257546200214E+016
+  8.305647952076338E+016
+  7.942507055320170E+016
+  7.710512990961024E+016
+  7.667262598844378E+016
+  7.911259857433834E+016
+  8.608082548063544E+016
+  1.003211738301092E+017
+  1.263126965996567E+017
+  1.712407102822942E+017
+  2.463978144603795E+017
+  3.691070191215081E+017
+  5.651899780006330E+017
+  8.718329636208581E+017
+  1.340371609848353E+018
+  2.037961780285426E+018
+  3.046300927698346E+018
+  4.454583456477669E+018
+  6.342990602959630E+018
+  8.756109015416884E+018
+  1.168252898253818E+019
+  1.505279745846637E+019
+  1.874582230501704E+019
+  2.260408339261217E+019
+  2.645572410181487E+019
+  3.013784804289511E+019
+  3.351571005985325E+019
+  3.649450248100768E+019
+  3.902299718998649E+019
+  4.109037782180937E+019
+  4.271866396056660E+019
+  4.395321922458527E+019
+  4.485329694805762E+019
+  4.548382027325049E+019
+  4.590891839418048E+019
+  4.618728483946080E+019
+  4.636919075029493E+019
+  4.649490926108794E+019
+  4.659430590126619E+019
+  4.668736418861815E+019
+  4.678541674191480E+019
+  4.689284000961591E+019
+  4.700896157208032E+019
+  4.712994183332662E+019
+  4.725043555888375E+019
+  4.736490605960748E+019
+  4.746853770230142E+019
+  4.755775482989534E+019
+  4.763040360539489E+019
+  4.768569043341201E+019
+  4.772398671111314E+019
+  4.774658581391824E+019
+  4.775544975770962E+019
+  4.775296822260600E+019
+  4.774176983447620E+019
+  4.772459537613819E+019
+  4.770420744436368E+019
+  8.889900118996982E+019
+  8.891266608764795E+019
+  8.892417573984040E+019
+  8.893153297285123E+019
+  8.893244883503304E+019
+  8.892434942068464E+019
+  8.890444132558430E+019
+  8.886983991469385E+019
+  8.881775032045740E+019
+  8.874571320543809E+019
+  8.865190101963545E+019
+  8.853542432407080E+019
+  8.839660299416545E+019
+  8.823714679350533E+019
+  8.806017405960482E+019
+  8.786999075828179E+019
+  8.767155923189321E+019
+  8.746960461879263E+019
+  8.726733753680047E+019
+  8.706481583540216E+019
+  8.685702417848825E+019
+  8.663181109065082E+019
+  8.636787921118431E+019
+  8.603306672121040E+019
+  8.558318071307726E+019
+  8.496164678992106E+019
+  8.410022934073483E+019
+  8.292106218235965E+019
+  8.134021302622994E+019
+  7.927297576086985E+019
+  7.664100766490647E+019
+  7.338125142146610E+019
+  6.945625179073009E+019
+  6.486497344447403E+019
+  5.965259520801931E+019
+  5.391714104480454E+019
+  4.781047565880759E+019
+  4.153149485968774E+019
+  3.531055512427786E+019
+  2.938628374535944E+019
+  2.397842918031510E+019
+  1.925433347998655E+019
+  1.528442670496640E+019
+  1.204252707489673E+019
+  9.448447116413305E+018
+  7.402388754869337E+018
+  5.804565511945808E+018
+  4.564931735591748E+018
+  3.606903902400505E+018
+  2.867763312551718E+018
+  2.297436603452457E+018
+  1.856644796054217E+018
+  1.514954070959309E+018
+  1.248985025384495E+018
+  1.040880749767396E+018
+  8.770516606791168E+017
+  7.471757167576180E+017
+  6.434172407384448E+017
+  5.598246845167945E+017
+  4.918707255628413E+017
+  4.361034165763579E+017
+  3.898828390538183E+017
+  3.511829757351987E+017
+  3.184430078599450E+017
+  2.904559172255028E+017
+  2.662851992913271E+017
+  2.452027823513675E+017
+  2.266430221244393E+017
+  2.101690279976700E+017
+  1.954487073058786E+017
+  1.822389273518827E+017
+  1.703772540598746E+017
+  1.597820409966230E+017
+  1.504635078310340E+017
+  1.425512958103152E+017
+  1.363484543155744E+017
+  1.324287984238278E+017
+  1.318052888473762E+017
+  1.362129891236074E+017
+  1.485727365339109E+017
+  1.737317817602996E+017
+  2.196141418048308E+017
+  2.989504526385560E+017
+  4.317798612096965E+017
+  6.488947389622305E+017
+  9.962794589865111E+017
+  1.540294743146187E+018
+  2.372770072999545E+018
+  3.614175908307938E+018
+  5.411599842895091E+018
+  7.926465402239551E+018
+  1.130529321212818E+019
+  1.563223393999707E+019
+  2.089219003591277E+019
+  2.696637154826162E+019
+  3.364283882865861E+019
+  4.064285908394049E+019
+  4.765984111033151E+019
+  5.440083206242162E+019
+  6.062107941860455E+019
+  6.614564751440134E+019
+  7.087660333237463E+019
+  7.478800621013895E+019
+  7.791289736897184E+019
+  8.032670777709889E+019
+  8.213058810483604E+019
+  8.343683493484862E+019
+  8.435738265431281E+019
+  8.499550478626241E+019
+  8.544043782441460E+019
+  8.576449223179598E+019
+  8.602220866963433E+019
+  8.625114518667575E+019
+  8.647388984714961E+019
+  8.670087935490467E+019
+  8.693359401634570E+019
+  8.716772463701187E+019
+  8.739598274824751E+019
+  8.761033991062535E+019
+  8.780360384036813E+019
+  8.797034229426158E+019
+  8.810724608801330E+019
+  8.821308649752062E+019
+  8.828845147288977E+019
+  8.833540352150646E+019
+  8.835711643513564E+019
+  8.835752437419350E+019
+  8.834105112049579E+019
+  8.831243318101005E+019
+  8.827658715323777E+019
+  1.428620102870140E+020
+  1.428840028641574E+020
+  1.429024601700473E+020
+  1.429141567651348E+020
+  1.429154068370279E+020
+  1.429020783408935E+020
+  1.428697005307079E+020
+  1.428136712832218E+020
+  1.427295473366684E+020
+  1.426134363447231E+020
+  1.424624678338154E+020
+  1.422752781488351E+020
+  1.420524369985720E+020
+  1.417967270827840E+020
+  1.415131633633398E+020
+  1.412086283141141E+020
+  1.408910109504420E+020
+  1.405677674594992E+020
+  1.402438703372092E+020
+  1.399191836166765E+020
+  1.395853910698411E+020
+  1.392227012772225E+020
+  1.387966427648509E+020
+  1.382553294744908E+020
+  1.375276129288963E+020
+  1.365225429128385E+020
+  1.351305428758730E+020
+  1.332266830716413E+020
+  1.306764089958660E+020
+  1.273440358671026E+020
+  1.231041967227491E+020
+  1.178561472427322E+020
+  1.115403007403223E+020
+  1.041555590186730E+020
+  9.577499211773587E+019
+  8.655643436379518E+019
+  7.674403302176162E+019
+  6.665727397264217E+019
+  5.666595968335722E+019
+  4.715297996610304E+019
+  3.847075410470542E+019
+  3.088746753081686E+019
+  2.451573069913867E+019
+  1.931314532589771E+019
+  1.515071707111233E+019
+  1.186805832138201E+019
+  9.304869042746804E+018
+  7.316536366609071E+018
+  5.780092503137663E+018
+  4.594848935398671E+018
+  3.680429924608640E+018
+  2.973795097388078E+018
+  2.426106382119329E+018
+  1.999850862794388E+018
+  1.666380150170917E+018
+  1.403894710816229E+018
+  1.195838593720303E+018
+  1.029645346199337E+018
+  8.957713350306669E+017
+  7.869576271871805E+017
+  6.976701739203119E+017
+  6.236772567468820E+017
+  5.617316166877841E+017
+  5.093319050827530E+017
+  4.645439969562282E+017
+  4.258674081316438E+017
+  3.921357329030479E+017
+  3.624428680061887E+017
+  3.360890150580745E+017
+  3.125422674969469E+017
+  2.914132139428108E+017
+  2.724416888288602E+017
+  2.554969095986350E+017
+  2.405952305385570E+017
+  2.279443103107851E+017
+  2.180296516658490E+017
+  2.117706738205625E+017
+  2.107906564538199E+017
+  2.178704040784745E+017
+  2.376917095193150E+017
+  2.780250320317820E+017
+  3.515743934740526E+017
+  4.787520221203311E+017
+  6.916919562368835E+017
+  1.039777199197059E+018
+  1.596763634306752E+018
+  2.469103489948206E+018
+  3.804126522165701E+018
+  5.795147466112464E+018
+  8.678244654866970E+018
+  1.271258715213368E+019
+  1.813355236393734E+019
+  2.507657744078616E+019
+  3.351795262526867E+019
+  4.326761264773336E+019
+  5.398596149041286E+019
+  6.522607575065529E+019
+  7.649611525063750E+019
+  8.732588378546628E+019
+  9.732230357830402E+019
+  1.062041495997610E+020
+  1.138136452971733E+020
+  1.201084905939011E+020
+  1.251410442698331E+020
+  1.290317454878161E+020
+  1.319423960395757E+020
+  1.340527941496289E+020
+  1.355422782539812E+020
+  1.365764136053617E+020
+  1.372983623225885E+020
+  1.378242385301564E+020
+  1.382417394489859E+020
+  1.386113881032492E+020
+  1.389697381496862E+020
+  1.393338698568924E+020
+  1.397064904240248E+020
+  1.400809923256736E+020
+  1.404459443659395E+020
+  1.407886726399598E+020
+  1.410977835240564E+020
+  1.413646459808396E+020
+  1.415839793042133E+020
+  1.417537942999378E+020
+  1.418749818027668E+020
+  1.419507757107032E+020
+  1.419861816526601E+020
+  1.419874252508596E+020
+  1.419615277692483E+020
+  1.419160296766613E+020
+  1.418587824543020E+020
+  3.012102481565421E+019
+  3.012604817612959E+019
+  3.012994221311331E+019
+  3.013192471316218E+019
+  3.013114960046768E+019
+  3.012672315865623E+019
+  3.011773635972887E+019
+  3.010331248584050E+019
+  3.008266456332606E+019
+  3.005516524385306E+019
+  3.002042377452959E+019
+  2.997835690242501E+019
+  2.992924023309825E+019
+  2.987372449496252E+019
+  2.981279718361218E+019
+  2.974766895577795E+019
+  2.967956718540973E+019
+  2.960942539774726E+019
+  2.953746676348282E+019
+  2.946269288133164E+019
+  2.938230512479955E+019
+  2.929110285142511E+019
+  2.918091801461273E+019
+  2.904015675633539E+019
+  2.885352417111433E+019
+  2.860200907928328E+019
+  2.826320333698634E+019
+  2.781202732821732E+019
+  2.722193018262829E+019
+  2.646662517169904E+019
+  2.552239579724093E+019
+  2.437094899550269E+019
+  2.300268249759675E+019
+  2.142006887986330E+019
+  1.964065632497340E+019
+  1.769899446929800E+019
+  1.564669977018565E+019
+  1.354999029913666E+019
+  1.148442835794697E+019
+  9.527292802020758E+018
+  7.748805051176753E+018
+  6.201444384310724E+018
+  4.905901765116101E+018
+  3.851625417583149E+018
+  3.010883317940314E+018
+  2.349980814652354E+018
+  1.835595984263450E+018
+  1.437870024817875E+018
+  1.131542538697818E+018
+  8.960178816848479E+017
+  7.149176870622062E+017
+  5.754411946151069E+017
+  4.677046497038952E+017
+  3.841407952959855E+017
+  3.189888289984288E+017
+  2.678788111433452E+017
+  2.275021608391217E+017
+  1.953552496455218E+017
+  1.695424686786323E+017
+  1.486263659958217E+017
+  1.315143507714693E+017
+  1.173734400472818E+017
+  1.055663158816957E+017
+  9.560347502470467E+016
+  8.710748318639848E+016
+  7.978631975882395E+016
+  7.341355666718877E+016
+  6.781369988911950E+016
+  6.285147726840232E+016
+  5.842422497542460E+016
+  5.445685296670597E+016
+  5.089920946926215E+016
+  4.772608295779937E+016
+  4.494067137709040E+016
+  4.258325067228227E+016
+  4.074819146912145E+016
+  3.961469459031567E+016
+  3.950003535806160E+016
+  4.094920712399866E+016
+  4.488214022272005E+016
+  5.282946827942328E+016
+  6.729982496894321E+016
+  9.233412794939366E+016
+  1.343106171423165E+017
+  2.030589736532519E+017
+  3.133055223623495E+017
+  4.863774633481402E+017
+  7.519061663515098E+017
+  1.148949501838413E+018
+  1.725479770368621E+018
+  2.534590795312636E+018
+  3.625216840984264E+018
+  5.026852319017694E+018
+  6.737435032226410E+018
+  8.721481083283851E+018
+  1.091299102663179E+019
+  1.322349912063044E+019
+  1.555433509563105E+019
+  1.780993743065334E+019
+  1.990915187670283E+019
+  2.179251302229735E+019
+  2.342493925587128E+019
+  2.479447905947178E+019
+  2.590840851330421E+019
+  2.678808556882458E+019
+  2.746369735633509E+019
+  2.796962059921641E+019
+  2.834072767847127E+019
+  2.860969882190356E+019
+  2.880525451702513E+019
+  2.895116885760485E+019
+  2.906592046662337E+019
+  2.916284809183692E+019
+  2.925068449651133E+019
+  2.933434185717082E+019
+  2.941582139269754E+019
+  2.949512861596268E+019
+  2.957109809822235E+019
+  2.964206464647990E+019
+  2.970635238230161E+019
+  2.976258206473893E+019
+  2.980981991540282E+019
+  2.984761064989249E+019
+  2.987594713511742E+019
+  2.989521653849494E+019
+  2.990613628043724E+019
+  2.990968715865545E+019
+  2.990706363395391E+019
+  2.989964376177464E+019
+  2.988896093214804E+019
+  2.006283710660520E+020
+  2.006218025655441E+020
+  2.006413942337526E+020
+  2.006914542094622E+020
+  2.007730535160671E+020
+  2.008828544056319E+020
+  2.010122897655193E+020
+  2.011472719490016E+020
+  2.012685658374911E+020
+  2.013529767897792E+020
+  2.013753921145686E+020
+  2.013115835842237E+020
+  2.011415802311071E+020
+  2.008533012989236E+020
+  2.004460067298180E+020
+  1.999330207073272E+020
+  1.993431365621839E+020
+  1.987201309376424E+020
+  1.981199186112296E+020
+  1.976050822210910E+020
+  1.972368108314051E+020
+  1.970646488012244E+020
+  1.971148393649294E+020
+  1.973783814850854E+020
+  1.978001452347208E+020
+  1.982704762502447E+020
+  1.986206682385060E+020
+  1.986235360275083E+020
+  1.980001362586058E+020
+  1.964334858828081E+020
+  1.935898729152807E+020
+  1.891478968836534E+020
+  1.828345110799261E+020
+  1.744658825901448E+020
+  1.639888141201899E+020
+  1.515160786777651E+020
+  1.373470739495992E+020
+  1.219649387407422E+020
+  1.060039470150259E+020
+  9.018709813878825E+019
+  7.524242266844504E+019
+  6.178903929829145E+019
+  5.017596662848699E+019
+  4.045343435058860E+019
+  3.248662958875173E+019
+  2.605615924364380E+019
+  2.091938101688381E+019
+  1.684400989707641E+019
+  1.362392126356452E+019
+  1.108443090195665E+019
+  9.081885022188121E+018
+  7.500541664741859E+018
+  6.248462902951496E+018
+  5.253336769763766E+018
+  4.458669550999346E+018
+  3.820518497942904E+018
+  3.304790947018992E+018
+  2.885065988851379E+018
+  2.540866972633851E+018
+  2.256307688170075E+018
+  2.019040416954112E+018
+  1.819443660304134E+018
+  1.649997881077024E+018
+  1.504807495807037E+018
+  1.379236022837645E+018
+  1.269628570293736E+018
+  1.173101788358274E+018
+  1.087386184570523E+018
+  1.010709566646882E+018
+  9.417136677258396E+017
+  8.793991361273078E+017
+  8.230975590878826E+017
+  7.724737433458461E+017
+  7.275681011725920E+017
+  6.888991560644534E+017
+  6.576619931832869E+017
+  6.360828091352933E+017
+  6.280261712755959E+017
+  6.400041034720244E+017
+  6.828077179363004E+017
+  7.740723134814583E+017
+  9.421864643371629E+017
+  1.232037855943941E+018
+  1.713095629022572E+018
+  2.490154361009210E+018
+  3.716536506807565E+018
+  5.608425546344493E+018
+  8.456998767847301E+018
+  1.263192563951437E+019
+  1.856564732969497E+019
+  2.670333470816583E+019
+  3.740035678893049E+019
+  5.076998593725207E+019
+  6.658170810355457E+019
+  8.427655530486284E+019
+  1.030338229640260E+020
+  1.218846113744981E+020
+  1.398543452236404E+020
+  1.560979462267260E+020
+  1.699979738717488E+020
+  1.812111798988561E+020
+  1.896650296149986E+020
+  1.955169241096631E+020
+  1.990930158965388E+020
+  2.008218911242053E+020
+  2.011737562384085E+020
+  2.006107229484889E+020
+  1.995499164483737E+020
+  1.983389037655572E+020
+  1.972420563365746E+020
+  1.964363291298443E+020
+  1.960150140660412E+020
+  1.959979874540643E+020
+  1.963467481620408E+020
+  1.969822479440992E+020
+  1.978033377446870E+020
+  1.987037519615225E+020
+  1.995859740600711E+020
+  2.003709867414124E+020
+  2.010036368055509E+020
+  2.014539736515043E+020
+  2.017153672489580E+020
+  2.018004627863257E+020
+  2.017360612582341E+020
+  2.015577954626104E+020
+  2.013051220565257E+020
+  2.010169638818466E+020
+  2.007283223546356E+020
+  2.004679964799738E+020
+  2.002573517541258E+020
+  2.717651382204875E+019
+  2.717492332724112E+019
+  2.717715254418268E+019
+  2.718389822260666E+019
+  2.719540224429233E+019
+  2.721127467527271E+019
+  2.723036159150223E+019
+  2.725068292404004E+019
+  2.726946021261784E+019
+  2.728325673575953E+019
+  2.728823767950553E+019
+  2.728054058691774E+019
+  2.725673317355951E+019
+  2.721431929007183E+019
+  2.715223539176011E+019
+  2.707126518745850E+019
+  2.697429236995958E+019
+  2.686631214044776E+019
+  2.675413409306251E+019
+  2.664573429563228E+019
+  2.654925313646486E+019
+  2.647168420685543E+019
+  2.641735141243934E+019
+  2.638631811362827E+019
+  2.637290528522258E+019
+  2.636451036769864E+019
+  2.634091454740428E+019
+  2.627424857731566E+019
+  2.612976305105091E+019
+  2.586752206754539E+019
+  2.544510390299104E+019
+  2.482133080917622E+019
+  2.396093601480468E+019
+  2.283988578477020E+019
+  2.145080422350558E+019
+  1.980763575142710E+019
+  1.794842404134881E+019
+  1.593504669079370E+019
+  1.384908685726277E+019
+  1.178381298503233E+019
+  9.833357273902268E+018
+  8.077899759435191E+018
+  6.562614861327176E+018
+  5.293866466015848E+018
+  4.253994360096568E+018
+  3.414375461036702E+018
+  2.743390137847435E+018
+  2.210783164442474E+018
+  1.789711702351763E+018
+  1.457427338558767E+018
+  1.195220196106050E+018
+  9.880121709882803E+017
+  8.238223274432532E+017
+  6.932235481583648E+017
+  5.888474907052033E+017
+  5.049598288022668E+017
+  4.371090976627520E+017
+  3.818434231927128E+017
+  3.364858145584532E+017
+  2.989580013905324E+017
+  2.676434949436566E+017
+  2.412818016717758E+017
+  2.188870836564769E+017
+  1.996858442684658E+017
+  1.830693416542765E+017
+  1.685573767287475E+017
+  1.557708731356649E+017
+  1.444112862536427E+017
+  1.342453802509212E+017
+  1.250943398410188E+017
+  1.168265906170286E+017
+  1.093541571314268E+017
+  1.026329836550225E+017
+  9.666851054879197E+016
+  9.152913151730522E+016
+  8.737222906889603E+016
+  8.449067264509325E+016
+  8.339243634819672E+016
+  8.493286065012326E+016
+  9.052843603305075E+016
+  1.024927493430558E+017
+  1.245481863943014E+017
+  1.625776058816298E+017
+  2.256809095074776E+017
+  3.275783259166436E+017
+  4.883328725503935E+017
+  7.362173113458977E+017
+  1.109289358953063E+018
+  1.655834534907904E+018
+  2.432296145066579E+018
+  3.496725482615217E+018
+  4.895389530015031E+018
+  6.642910121199274E+018
+  8.709070913377637E+018
+  1.102094630379199E+019
+  1.347172050024785E+019
+  1.593556999357658E+019
+  1.828625799116482E+019
+  2.041469527117951E+019
+  2.224161154107859E+019
+  2.372346970916646E+019
+  2.485185828928928E+019
+  2.564804714555345E+019
+  2.615492187090064E+019
+  2.642829041516022E+019
+  2.652894519389909E+019
+  2.651620460655843E+019
+  2.644315426380568E+019
+  2.635351880961488E+019
+  2.627998006119002E+019
+  2.624373844235897E+019
+  2.625512201920942E+019
+  2.631504011338288E+019
+  2.641704822429876E+019
+  2.654975322957481E+019
+  2.669926743932164E+019
+  2.685143716758157E+019
+  2.699363128020707E+019
+  2.711596545310482E+019
+  2.721193532355510E+019
+  2.727851443646815E+019
+  2.731583038634097E+019
+  2.732656385318890E+019
+  2.731521759278015E+019
+  2.728737145900458E+019
+  2.724899166743805E+019
+  2.720583719677957E+019
+  2.716300465285021E+019
+  2.712462846881211E+019
+  2.709372732573082E+019
+  1.127661206758089E+018
+  1.127396255532198E+018
+  1.127451179203466E+018
+  1.127901148956020E+018
+  1.128789101950888E+018
+  1.130112114884242E+018
+  1.131810713624637E+018
+  1.133763038249068E+018
+  1.135785515065000E+018
+  1.137641625271022E+018
+  1.139059478807574E+018
+  1.139757819085380E+018
+  1.139479096084533E+018
+  1.138027075988665E+018
+  1.135305190114139E+018
+  1.131350761262735E+018
+  1.126359584094245E+018
+  1.120695230431098E+018
+  1.114878088088134E+018
+  1.109550685662597E+018
+  1.105418321430254E+018
+  1.103167193240752E+018
+  1.103365687134271E+018
+  1.106357651020975E+018
+  1.112158782739864E+018
+  1.120368306721443E+018
+  1.130107840871784E+018
+  1.139998075832514E+018
+  1.148182137754725E+018
+  1.152402716814094E+018
+  1.150138148970008E+018
+  1.138799799787951E+018
+  1.115987793253155E+018
+  1.079792699458903E+018
+  1.029116435297852E+018
+  9.639676994229539E+017
+  8.856706613863068E+017
+  7.969191228382211E+017
+  7.016219495674189E+017
+  6.045248295339524E+017
+  5.106540938009420E+017
+  4.245155493381323E+017
+  3.489223870673059E+017
+  2.846889998190051E+017
+  2.313256310041564E+017
+  1.876891404673368E+017
+  1.523956801033437E+017
+  1.240583347755930E+017
+  1.014085258204333E+017
+  8.334610478202021E+016
+  6.894894718084810E+016
+  5.746167305097198E+016
+  4.827524119073631E+016
+  4.090401361349162E+016
+  3.496371174694236E+016
+  3.015182138172440E+016
+  2.623095901533219E+016
+  2.301516433678538E+016
+  2.035882796268184E+016
+  1.814787236680190E+016
+  1.629279853142459E+016
+  1.472324510883312E+016
+  1.338375587159461E+016
+  1.223050254031445E+016
+  1.122875796849425E+016
+  1.035095670344469E+016
+  9.575215410431128E+015
+  8.884214908165125E+015
+  8.264369840777077E+015
+  7.705233276343017E+015
+  7.199104473007596E+015
+  6.740832294307314E+015
+  6.327839258839352E+015
+  5.960439115372096E+015
+  5.642594521496097E+015
+  5.383375588062012E+015
+  5.199554388111816E+015
+  5.120028783315547E+015
+  5.193135072391279E+015
+  5.498397383440046E+015
+  6.164856709668817E+015
+  7.398740403084834E+015
+  9.523659729163268E+015
+  1.303632377281468E+016
+  1.867916815245115E+016
+  2.752713428659633E+016
+  4.107752013176642E+016
+  6.131767477400777E+016
+  9.072433548237445E+016
+  1.321218116866007E+017
+  1.882997466718825E+017
+  2.612782490794797E+017
+  3.512644209890857E+017
+  4.560188701117242E+017
+  5.710737228001159E+017
+  6.903139130918593E+017
+  8.068629449561358E+017
+  9.141228325420641E+017
+  1.006703888703399E+018
+  1.081044610710977E+018
+  1.135640521286308E+018
+  1.170916990251993E+018
+  1.188854530010735E+018
+  1.192495253974882E+018
+  1.185439175848552E+018
+  1.171400865209091E+018
+  1.153859546629778E+018
+  1.135809255706074E+018
+  1.119601966845039E+018
+  1.106872341537052E+018
+  1.098532988194224E+018
+  1.094829848358115E+018
+  1.095446478251721E+018
+  1.099643503139581E+018
+  1.106416641385841E+018
+  1.114655110962703E+018
+  1.123283200969667E+018
+  1.131371583731009E+018
+  1.138210746079639E+018
+  1.143345243522170E+018
+  1.146572888318334E+018
+  1.147916673109981E+018
+  1.147579044208816E+018
+  1.145888050813060E+018
+  1.143242956420210E+018
+  1.140064098492979E+018
+  1.136750048736120E+018
+  1.133644618583276E+018
+  1.131014939805182E+018
+  1.129040500572090E+018
+  6.997962273343015E+019
+  6.997593585125292E+019
+  6.998243853422646E+019
+  7.000094596580204E+019
+  7.003205728311931E+019
+  7.007470388203626E+019
+  7.012582640042815E+019
+  7.018024826474467E+019
+  7.023079830878414E+019
+  7.026873954551015E+019
+  7.028452051016502E+019
+  7.026881765304988E+019
+  7.021380023304883E+019
+  7.011450441936079E+019
+  6.997015386290024E+019
+  6.978522543295527E+019
+  6.957003994423153E+019
+  6.934066329677742E+019
+  6.911794004282062E+019
+  6.892555482124557E+019
+  6.878712664818373E+019
+  6.872247629573410E+019
+  6.874334876529664E+019
+  6.884899742282029E+019
+  6.902212172902074E+019
+  6.922568359323542E+019
+  6.940110931385967E+019
+  6.946832997681657E+019
+  6.932804402114028E+019
+  6.886651273464288E+019
+  6.796310742674868E+019
+  6.650066590397988E+019
+  6.437841108430292E+019
+  6.152666843747235E+019
+  5.792187852905224E+019
+  5.359953739854907E+019
+  4.866198327430727E+019
+  4.327782462636388E+019
+  3.767072916077815E+019
+  3.209745552588830E+019
+  2.681808978916956E+019
+  2.205525393996159E+019
+  1.793616353778716E+019
+  1.448170617359058E+019
+  1.164650287398449E+019
+  9.354524542354393E+018
+  7.520932431043408E+018
+  6.064118220225367E+018
+  4.911426516461671E+018
+  4.001126778113245E+018
+  3.282345018317322E+018
+  2.714014269029842E+018
+  2.263457235108275E+018
+  1.904930987192646E+018
+  1.618293487176248E+018
+  1.387855101291121E+018
+  1.201426479180455E+018
+  1.049548813570148E+018
+  9.248821459950013E+017
+  8.217251025673814E+017
+  7.356410884659548E+017
+  6.631692032642217E+017
+  6.016017514375756E+017
+  5.488136520203947E+017
+  5.031320729775588E+017
+  4.632371642658913E+017
+  4.280868508457900E+017
+  3.968603291168032E+017
+  3.689162760179864E+017
+  3.437629462675096E+017
+  3.210384462005642E+017
+  3.005007192668608E+017
+  2.820284111908410E+017
+  2.656361626683919E+017
+  2.515115299622450E+017
+  2.400864119324585E+017
+  2.321645910121788E+017
+  2.291400567719454E+017
+  2.333595565096554E+017
+  2.487083539106068E+017
+  2.815302201748276E+017
+  3.420278227160696E+017
+  4.463181698674061E+017
+  6.193187303617559E+017
+  8.985750815568133E+017
+  1.338949035868854E+018
+  2.017681096900689E+018
+  3.038623583068187E+018
+  4.533335246931099E+018
+  6.655258640400388E+018
+  9.561617122186342E+018
+  1.337662490114280E+019
+  1.813714094680654E+019
+  2.375677391386261E+019
+  3.003205437865635E+019
+  3.666701472428398E+019
+  4.331437821939650E+019
+  4.962681455086954E+019
+  5.530520288476129E+019
+  6.013333131215547E+019
+  6.399395371787990E+019
+  6.686690933889020E+019
+  6.881398098121893E+019
+  6.995660046753911E+019
+  7.045187667812418E+019
+  7.047072762866701E+019
+  7.018008017163919E+019
+  6.972972046409959E+019
+  6.924359303008497E+019
+  6.881504242206740E+019
+  6.850545175430355E+019
+  6.834576076124049E+019
+  6.834032894425262E+019
+  6.847252382356555E+019
+  6.871130351486902E+019
+  6.901799700297768E+019
+  6.935252211014818E+019
+  6.967843690370888E+019
+  6.996646350029518E+019
+  7.019639089457073E+019
+  7.035749470112595E+019
+  7.044777519839535E+019
+  7.047240541557284E+019
+  7.044179056879803E+019
+  7.036955911058646E+019
+  7.027067881064041E+019
+  7.015982199712492E+019
+  7.005009630317719E+019
+  6.995219151409568E+019
+  6.987392404775149E+019
+  5.738581203031187E+019
+  5.737806485586664E+019
+  5.738166664223971E+019
+  5.739905862399383E+019
+  5.743145409657935E+019
+  5.747833055858507E+019
+  5.753703487270024E+019
+  5.760257215193273E+019
+  5.766763734875802E+019
+  5.772295117498004E+019
+  5.775792593299765E+019
+  5.776164340302500E+019
+  5.772409082275103E+019
+  5.763755709576208E+019
+  5.749804254331959E+019
+  5.730649509258721E+019
+  5.706966182376828E+019
+  5.680034241112575E+019
+  5.651685711347847E+019
+  5.624160304524848E+019
+  5.599866916245098E+019
+  5.581060447207664E+019
+  5.569456857770688E+019
+  5.565821669689734E+019
+  5.569576097183508E+019
+  5.578469166162940E+019
+  5.588363381076633E+019
+  5.593176907693649E+019
+  5.585018779330503E+019
+  5.554546637730523E+019
+  5.491568188885775E+019
+  5.385894054531567E+019
+  5.228424777665818E+019
+  5.012412197811484E+019
+  4.734773175063656E+019
+  4.397259031015354E+019
+  4.007219149915356E+019
+  3.577679266011900E+019
+  3.126524417780430E+019
+  2.674752814586093E+019
+  2.244026836736583E+019
+  1.853237412593384E+019
+  1.513550069447086E+019
+  1.227324747543258E+019
+  9.913438978497442E+018
+  7.997350440370902E+018
+  6.457828026037383E+018
+  5.229428838929052E+018
+  4.253367820457958E+018
+  3.479347904181004E+018
+  2.865669210462931E+018
+  2.378489419412570E+018
+  1.990746074212188E+018
+  1.681019649113782E+018
+  1.432475901311722E+018
+  1.231945400022766E+018
+  1.069154242936114E+018
+  9.360979152208516E+017
+  8.265407515678556E+017
+  7.356208303076127E+017
+  6.595409251273693E+017
+  5.953283997949622E+017
+  5.406496213375994E+017
+  4.936670956427961E+017
+  4.529298875513332E+017
+  4.172899027443706E+017
+  3.858382760874996E+017
+  3.578574658968097E+017
+  3.327857622093857E+017
+  3.101918731363901E+017
+  2.897581777545698E+017
+  2.712722840033521E+017
+  2.546279200583537E+017
+  2.398382242035674E+017
+  2.270676276514577E+017
+  2.166933836326064E+017
+  2.094152439591533E+017
+  2.064428808077000E+017
+  2.098065095644549E+017
+  2.228575618295868E+017
+  2.510527774721036E+017
+  3.031435463999635E+017
+  3.929140851807036E+017
+  5.416089771996758E+017
+  7.811301976668540E+017
+  1.157914510001420E+018
+  1.737053316993525E+018
+  2.605609569284989E+018
+  3.873164944356543E+018
+  5.666428051497528E+018
+  8.113475473186630E+018
+  1.131244354510969E+019
+  1.528600851594140E+019
+  1.995234383473321E+019
+  2.513213209342373E+019
+  3.057112656969321E+019
+  3.597630568763604E+019
+  4.105970037280440E+019
+  4.557872436234926E+019
+  4.936423654583210E+019
+  5.233240405976854E+019
+  5.448136486309387E+019
+  5.587695337595514E+019
+  5.663281149201483E+019
+  5.688953082874291E+019
+  5.679595190840790E+019
+  5.649418039900242E+019
+  5.610872675469557E+019
+  5.573954198788193E+019
+  5.545849239994842E+019
+  5.530879530413736E+019
+  5.530695901834086E+019
+  5.544674287904619E+019
+  5.570456553999804E+019
+  5.604568678996687E+019
+  5.643043389671489E+019
+  5.681978754984219E+019
+  5.717979588161700E+019
+  5.748451555953667E+019
+  5.771742740906211E+019
+  5.787148451813374E+019
+  5.794809483281962E+019
+  5.795541399537051E+019
+  5.790632387163394E+019
+  5.781639319992446E+019
+  5.770199981747182E+019
+  5.757872754113440E+019
+  5.746013924140006E+019
+  5.735697049849509E+019
+  5.727672826995619E+019
+  5.063093745270779E+018
+  5.063125013203439E+018
+  5.063700018349059E+018
+  5.064888899914154E+018
+  5.066688700860133E+018
+  5.068999485456482E+018
+  5.071609272373991E+018
+  5.074191719027997E+018
+  5.076319328977627E+018
+  5.077495366561077E+018
+  5.077204899661763E+018
+  5.074982187571998E+018
+  5.070489324092584E+018
+  5.063598278069253E+018
+  5.054465429985951E+018
+  5.043585475402559E+018
+  5.031810741845267E+018
+  5.020322812644753E+018
+  5.010546238609567E+018
+  5.003999362176968E+018
+  5.002084748338342E+018
+  5.005830642150039E+018
+  5.015603942206687E+018
+  5.030822846532765E+018
+  5.049702242183611E+018
+  5.069066374427659E+018
+  5.084261600847279E+018
+  5.089198237642677E+018
+  5.076546019992492E+018
+  5.038103076579176E+018
+  4.965352165254170E+018
+  4.850206448826882E+018
+  4.685925013956480E+018
+  4.468141176199383E+018
+  4.195894087842472E+018
+  3.872494204374422E+018
+  3.506005641945811E+018
+  3.109124541528805E+018
+  2.698303450999606E+018
+  2.292128628956386E+018
+  1.909174995886550E+018
+  1.565117045971718E+018
+  1.268672248056382E+018
+  1.020930751785091E+018
+  8.182871280665646E+017
+  6.550128091186835E+017
+  5.248206611440143E+017
+  4.217177205069105E+017
+  3.404022338586050E+017
+  2.763923515248317E+017
+  2.260105000513703E+017
+  1.862997120395997E+017
+  1.549157382111295E+017
+  1.300182351549742E+017
+  1.101720905449043E+017
+  9.426305418566646E+016
+  8.142819434165834E+016
+  7.099994740415792E+016
+  6.246184637070495E+016
+  5.541389794236462E+016
+  4.954573259130275E+016
+  4.461591091033302E+016
+  4.043604815046657E+016
+  3.685867854800762E+016
+  3.376800710493380E+016
+  3.107288544139603E+016
+  2.870150202130593E+016
+  2.659740019966266E+016
+  2.471653696400565E+016
+  2.302517953928174E+016
+  2.149851669918524E+016
+  2.011994992324583E+016
+  1.888114426293274E+016
+  1.778308529175001E+016
+  1.683864382246480E+016
+  1.607754737563295E+016
+  1.555526953823031E+016
+  1.536826738326199E+016
+  1.567932427334493E+016
+  1.675857166444131E+016
+  1.904806348610561E+016
+  2.326033894242592E+016
+  3.052357233316058E+016
+  4.258622535287778E+016
+  6.208990704754556E+016
+  9.290604300949906E+016
+  1.405037513104236E+017
+  2.122657029214004E+017
+  3.175898128316006E+017
+  4.675082421308790E+017
+  6.734381058613115E+017
+  9.445963111393220E+017
+  1.284133821622717E+018
+  1.686516621743796E+018
+  2.137846364599981E+018
+  2.617481843043288E+018
+  3.100862289764230E+018
+  3.563095402449939E+018
+  3.982396123337838E+018
+  4.342618917745897E+018
+  4.634501576362573E+018
+  4.855644520708103E+018
+  5.009535933271741E+018
+  5.104043993983028E+018
+  5.149761841727945E+018
+  5.158476904927213E+018
+  5.141909706052903E+018
+  5.110768898227112E+018
+  5.074111874740660E+018
+  5.038977091699621E+018
+  5.010250603253349E+018
+  4.990731478774884E+018
+  4.981360397837798E+018
+  4.981570652024178E+018
+  4.989713568998241E+018
+  5.003505649640189E+018
+  5.020446474644195E+018
+  5.038166055474526E+018
+  5.054675887837730E+018
+  5.068515446399642E+018
+  5.078801232783192E+018
+  5.085196666216276E+018
+  5.087827651523804E+018
+  5.087169850915720E+018
+  5.083928615007096E+018
+  5.078924197175305E+018
+  5.072990494951768E+018
+  5.066895328961918E+018
+  5.061285717018775E+018
+  5.056656814560281E+018
+  4.861139208961825E+019
+  4.861918970324784E+019
+  4.862537521191963E+019
+  4.862875180306187E+019
+  4.862800317862922E+019
+  4.862171015662451E+019
+  4.860839379658365E+019
+  4.858658478078728E+019
+  4.855491136052475E+019
+  4.851221115975614E+019
+  4.845765899696126E+019
+  4.839089005240074E+019
+  4.831209679606823E+019
+  4.822207422073686E+019
+  4.812218091231999E+019
+  4.801418110674158E+019
+  4.789993721207023E+019
+  4.778093195806201E+019
+  4.765761433632369E+019
+  4.752858461276732E+019
+  4.738966008304883E+019
+  4.723289164596533E+019
+  4.704562716083538E+019
+  4.680973683811738E+019
+  4.650112635350295E+019
+  4.608966544444655E+019
+  4.553965648448385E+019
+  4.481096274684897E+019
+  4.386091048496297E+019
+  4.264706517138582E+019
+  4.113094142672877E+019
+  3.928261057994270E+019
+  3.708599328352927E+019
+  3.454435894883070E+019
+  3.168522593196672E+019
+  2.856354456664899E+019
+  2.526188918119542E+019
+  2.188656621734304E+019
+  1.855920043558829E+019
+  1.540446350464510E+019
+  1.253590877567331E+019
+  1.003866581295815E+019
+  7.946632826850469E+018
+  6.243229384612343E+018
+  4.884050688727458E+018
+  3.814971668747950E+018
+  2.982385405544879E+018
+  2.338208802333344E+018
+  1.841732270368125E+018
+  1.459741540296387E+018
+  1.165806957282278E+018
+  9.392595601927496E+017
+  7.641308638011803E+017
+  6.281876748554413E+017
+  5.221114737939424E+017
+  4.388292169187825E+017
+  3.729823860300175E+017
+  3.205135581928579E+017
+  2.783486758744216E+017
+  2.441551157858388E+017
+  2.161586823189005E+017
+  1.930058185346853E+017
+  1.736602008255991E+017
+  1.573253144241829E+017
+  1.433865835229560E+017
+  1.313681961024580E+017
+  1.209009834462271E+017
+  1.116986564461534E+017
+  1.035404344185051E+017
+  9.625869716120749E+016
+  8.973082110585654E+016
+  8.387491048971226E+016
+  7.864981326085325E+016
+  7.406077149471285E+016
+  7.017352149084528E+016
+  6.714195905692117E+016
+  6.525809103053470E+016
+  6.503853860970670E+016
+  6.737012085456487E+016
+  7.374883533299944E+016
+  8.666237747492507E+016
+  1.101856986017860E+017
+  1.508791205152057E+017
+  2.190916699538276E+017
+  3.307630121177716E+017
+  5.097579268780042E+017
+  7.906143395048909E+017
+  1.221281358768626E+018
+  1.864906252520785E+018
+  2.798965499850068E+018
+  4.109080882625347E+018
+  5.873963441564540E+018
+  8.140688892540582E+018
+  1.090517125130874E+019
+  1.410928766387681E+019
+  1.764573415673665E+019
+  2.137117923027781E+019
+  2.512617540512593E+019
+  2.875669585567996E+019
+  3.213234081606659E+019
+  3.515799867711158E+019
+  3.777807135888148E+019
+  3.997432292014827E+019
+  4.175947067445434E+019
+  4.316879788052104E+019
+  4.425162349973289E+019
+  4.506378769307698E+019
+  4.566168481803760E+019
+  4.609793732917749E+019
+  4.641856908621269E+019
+  4.666145121021420E+019
+  4.685578690187296E+019
+  4.702241755142978E+019
+  4.717474178593687E+019
+  4.732003757632022E+019
+  4.746097670987182E+019
+  4.759713589825470E+019
+  4.772634691532575E+019
+  4.784578362520608E+019
+  4.795274158084180E+019
+  4.804511380297598E+019
+  4.812160393957430E+019
+  4.818174941211981E+019
+  4.822584244596563E+019
+  4.825481581536444E+019
+  4.827011619088698E+019
+  4.827357762036393E+019
+  4.826732790839199E+019
+  4.825373226512871E+019
+  4.823534540956757E+019
+  1.267154803312213E+020
+  1.267355987734444E+020
+  1.267519308276489E+020
+  1.267614472320755E+020
+  1.267607668245553E+020
+  1.267461895345695E+020
+  1.267138051331080E+020
+  1.266596795932531E+020
+  1.265801010612536E+020
+  1.264719002177299E+020
+  1.263328241271830E+020
+  1.261619075553237E+020
+  1.259597814870634E+020
+  1.257288465759074E+020
+  1.254732193270021E+020
+  1.251983515215203E+020
+  1.249102344543352E+020
+  1.246141257385888E+020
+  1.243127778734487E+020
+  1.240042066061994E+020
+  1.236791108796197E+020
+  1.233181357425640E+020
+  1.228892423067949E+020
+  1.223455029720820E+020
+  1.216236690620489E+020
+  1.206438626068095E+020
+  1.193107325649380E+020
+  1.175163992684883E+020
+  1.151454925370532E+020
+  1.120825504915286E+020
+  1.082219385180673E+020
+  1.034801971205856E+020
+  9.781026232220203E+019
+  9.121629790181564E+019
+  8.376700314513051E+019
+  7.560441802115028E+019
+  6.694481153838173E+019
+  5.806869445342408E+019
+  4.929871862338455E+019
+  4.096715453726044E+019
+  3.337811972391160E+019
+  2.676122205157141E+019
+  2.121028188345702E+019
+  1.668463620948880E+019
+  1.306901958582236E+019
+  1.022163462548142E+019
+  8.001445619398445E+018
+  6.281608538357029E+018
+  4.954513344289566E+018
+  3.932215519737363E+018
+  3.144631360261158E+018
+  2.536878572017634E+018
+  2.066501991865379E+018
+  1.700937747414419E+018
+  1.415351324435619E+018
+  1.190870844428605E+018
+  1.013182874560558E+018
+  8.714373675184941E+017
+  7.574049164524657E+017
+  6.648342301720961E+017
+  5.889655100530644E+017
+  5.261636390540676E+017
+  4.736426009292949E+017
+  4.292589233040158E+017
+  3.913571362396346E+017
+  3.586543662357731E+017
+  3.301544069114028E+017
+  3.050840996022309E+017
+  2.828468008391646E+017
+  2.629892934046335E+017
+  2.451799090053556E+017
+  2.291970996825415E+017
+  2.149295125624150E+017
+  2.023911964767515E+017
+  1.917594984186347E+017
+  1.834493730359413E+017
+  1.782474827276465E+017
+  1.775442933165817E+017
+  1.837244312331701E+017
+  2.008069775408197E+017
+  2.354694195520425E+017
+  2.986402003635583E+017
+  4.078973514730466E+017
+  5.909442420100264E+017
+  8.904063181323361E+017
+  1.370030862303253E+018
+  2.121960145505206E+018
+  3.273933356449388E+018
+  4.993894002976221E+018
+  7.487453671962955E+018
+  1.098114644592524E+019
+  1.568206522244735E+019
+  2.171191370980299E+019
+  2.905529169611015E+019
+  3.755267452505815E+019
+  4.691410570354264E+019
+  5.675495730400848E+019
+  6.664948072305257E+019
+  7.618835728216056E+019
+  8.502703888861145E+019
+  9.291639868470999E+019
+  9.971345074199855E+019
+  1.053750848565945E+020
+  1.099405464366728E+020
+  1.135087670407487E+020
+  1.162154295939661E+020
+  1.182128284228242E+020
+  1.196539111817834E+020
+  1.206807302349244E+020
+  1.214169171740237E+020
+  1.219635764112487E+020
+  1.223979802383332E+020
+  1.227744888155049E+020
+  1.231271379034110E+020
+  1.234733260847439E+020
+  1.238180251451201E+020
+  1.241579742572089E+020
+  1.244854210651079E+020
+  1.247911248652838E+020
+  1.250664976890790E+020
+  1.253048937693504E+020
+  1.255021634342120E+020
+  1.256566737528771E+020
+  1.257690392859342E+020
+  1.258417498169916E+020
+  1.258787643056303E+020
+  1.258851104851667E+020
+  1.258665806460100E+020
+  1.258295387615936E+020
+  1.257807659785245E+020
+  1.755515313151003E+020
+  1.755737075596962E+020
+  1.755966762922696E+020
+  1.756178093876442E+020
+  1.756334571002407E+020
+  1.756387943433169E+020
+  1.756278357246195E+020
+  1.755936566526871E+020
+  1.755288258978168E+020
+  1.754260903402843E+020
+  1.752792887558834E+020
+  1.750844045938327E+020
+  1.748406406277612E+020
+  1.745513594322171E+020
+  1.742246850939311E+020
+  1.738735348664715E+020
+  1.735148560358343E+020
+  1.731678823287133E+020
+  1.728512992200879E+020
+  1.725793230538096E+020
+  1.723568502533389E+020
+  1.721740023388814E+020
+  1.720005535432944E+020
+  1.717808533566800E+020
+  1.714299268826901E+020
+  1.708314467406505E+020
+  1.698382339765344E+020
+  1.682758859296105E+020
+  1.659500642500115E+020
+  1.626578933549117E+020
+  1.582037539201710E+020
+  1.524193930308594E+020
+  1.451875854371058E+020
+  1.364674979339949E+020
+  1.263184974922817E+020
+  1.149176914625703E+020
+  1.025655716795337E+020
+  8.967455924619236E+019
+  7.673770507162298E+019
+  6.427934469982267E+019
+  5.279521601797163E+019
+  4.267650104603265E+019
+  3.410719433409269E+019
+  2.705864090296532E+019
+  2.137937416580676E+019
+  1.686950007265330E+019
+  1.332402732408176E+019
+  1.055505865562965E+019
+  8.400927930890768E+018
+  6.727973145007750E+018
+  5.428589031303484E+018
+  4.417722811299027E+018
+  3.629003045517715E+018
+  3.011094695642303E+018
+  2.524530115962108E+018
+  2.139080638471506E+018
+  1.831641830237351E+018
+  1.584566673848981E+018
+  1.384370409108157E+018
+  1.220734240132787E+018
+  1.085744429385656E+018
+  9.733141579256631E+017
+  8.787458802237693E+017
+  7.984009314706237E+017
+  7.294506557120275E+017
+  6.696893851910412E+017
+  6.173943957789222E+017
+  5.712217163645965E+017
+  5.301296319621021E+017
+  4.933241627486067E+017
+  4.602230264999692E+017
+  4.304369605197107E+017
+  4.037702626019629E+017
+  3.802466744442356E+017
+  3.601732502768924E+017
+  3.442650492967800E+017
+  3.338693574354962E+017
+  3.313523040388349E+017
+  3.407462882897532E+017
+  3.688065197513836E+017
+  4.266904598597886E+017
+  5.325513429874589E+017
+  7.154117104653070E+017
+  1.020719997686638E+018
+  1.517923664159326E+018
+  2.310097627568717E+018
+  3.544968259372029E+018
+  5.425342404566378E+018
+  8.214766673550477E+018
+  1.223112949196808E+019
+  1.781720392373501E+019
+  2.527394650697973E+019
+  3.475512206225988E+019
+  4.618875130145227E+019
+  5.927311541582723E+019
+  7.350677787378739E+019
+  8.825303048936088E+019
+  1.028300696120304E+020
+  1.166038001080918E+020
+  1.290622963573513E+020
+  1.398594786212988E+020
+  1.488259413749830E+020
+  1.559529966737780E+020
+  1.613599373791006E+020
+  1.652545581134114E+020
+  1.678945985370845E+020
+  1.695546605572901E+020
+  1.705004722650990E+020
+  1.709706242833710E+020
+  1.711650550355267E+020
+  1.712393113322516E+020
+  1.713036256815682E+020
+  1.714258944359657E+020
+  1.716376105662739E+020
+  1.719417173631477E+020
+  1.723212855176471E+020
+  1.727479602584314E+020
+  1.731893143154962E+020
+  1.736145439244078E+020
+  1.739982781203859E+020
+  1.743225614989059E+020
+  1.745772923052351E+020
+  1.747595553697555E+020
+  1.748723485637398E+020
+  1.749230992117643E+020
+  1.749221683512067E+020
+  1.748814677236936E+020
+  1.748133641871449E+020
+  1.747299263754539E+020
+  1.746424314241929E+020
+  2.211744346016265E+019
+  2.212078969294057E+019
+  2.212385022096548E+019
+  2.212617600340636E+019
+  2.212721992803633E+019
+  2.212633385039804E+019
+  2.212278510045082E+019
+  2.211579511894740E+019
+  2.210459888851190E+019
+  2.208852854811632E+019
+  2.206711701570363E+019
+  2.204020973903147E+019
+  2.200807020444218E+019
+  2.197146098570101E+019
+  2.193167713746454E+019
+  2.189050649694858E+019
+  2.185009324026006E+019
+  2.181268656536425E+019
+  2.178026587667262E+019
+  2.175404772387602E+019
+  2.173389731009463E+019
+  2.171768645884477E+019
+  2.170065744451416E+019
+  2.167486506409581E+019
+  2.162877583819681E+019
+  2.154710314737249E+019
+  2.141095225688364E+019
+  2.119834246749447E+019
+  2.088516689515059E+019
+  2.044664140452390E+019
+  1.985927437362504E+019
+  1.910334377874792E+019
+  1.816578219939912E+019
+  1.704323606534707E+019
+  1.574489261622511E+019
+  1.429449373590508E+019
+  1.273085185432069E+019
+  1.110624757844850E+019
+  9.482403062554870E+018
+  7.924289882681736E+018
+  6.492726872217560E+018
+  5.235103915287063E+018
+  4.172956648621860E+018
+  3.301579793888737E+018
+  2.601275865454623E+018
+  2.046585871410180E+018
+  1.611630361535443E+018
+  1.272816485838932E+018
+  1.009927140913858E+018
+  8.063035779649943E+017
+  6.485748418183523E+017
+  5.262018199842978E+017
+  4.309821600600276E+017
+  3.565881559162785E+017
+  2.981672624049841E+017
+  2.520121915081795E+017
+  2.152964359057707E+017
+  1.858664711156650E+017
+  1.620807598260984E+017
+  1.426862443050376E+017
+  1.267242639653437E+017
+  1.134592491762423E+017
+  1.023248724690113E+017
+  9.288348948987078E+016
+  8.479565390720339E+016
+  7.779725506295418E+016
+  7.168242941637627E+016
+  6.629086658659150E+016
+  6.149850020554794E+016
+  5.721087700064076E+016
+  5.335877196589330E+016
+  4.989590736443691E+016
+  4.679899613608454E+016
+  4.407084711276786E+016
+  4.174805909748926E+016
+  3.991606699395116E+016
+  3.873623071089734E+016
+  3.849260085773442E+016
+  3.967034199082250E+016
+  4.308392362258278E+016
+  5.008128730089463E+016
+  6.285986651523218E+016
+  8.493986918615574E+016
+  1.218454324691246E+017
+  1.820367463750631E+017
+  2.781014742511168E+017
+  4.281296309377077E+017
+  6.570337961027866E+017
+  9.973076353262212E+017
+  1.488328757560564E+018
+  2.172844287020872E+018
+  3.088865937830572E+018
+  4.256733128159471E+018
+  5.669303186846493E+018
+  7.291164039259974E+018
+  9.061995300414158E+018
+  1.090420020228788E+019
+  1.273381411467392E+019
+  1.447189336477470E+019
+  1.605379944549149E+019
+  1.743480168020648E+019
+  1.859168058496092E+019
+  1.952102041974856E+019
+  2.023538536467982E+019
+  2.075860129543932E+019
+  2.112109050274030E+019
+  2.135583192357014E+019
+  2.149519041148566E+019
+  2.156864000079237E+019
+  2.160129732166117E+019
+  2.161314779561998E+019
+  2.161884871663724E+019
+  2.162800021244171E+019
+  2.164577388905555E+019
+  2.167378035238463E+019
+  2.171104971119389E+019
+  2.175500355743882E+019
+  2.180231752069843E+019
+  2.184960696846666E+019
+  2.189390569969234E+019
+  2.193294017954610E+019
+  2.196522748332790E+019
+  2.199004435857475E+019
+  2.200732306084504E+019
+  2.201751835170864E+019
+  2.202146678026577E+019
+  2.202025158902797E+019
+  2.201509383769771E+019
+  2.200727585492991E+019
+  2.199808635025544E+019
+  1.797729214365888E+020
+  1.797397161764959E+020
+  1.797474258433675E+020
+  1.798054947710292E+020
+  1.799191111965553E+020
+  1.800873664512353E+020
+  1.803017864259572E+020
+  1.805454863762715E+020
+  1.807931640921036E+020
+  1.810121517512950E+020
+  1.811646277737671E+020
+  1.812109444938311E+020
+  1.811139018937898E+020
+  1.808436453323314E+020
+  1.803826958385130E+020
+  1.797304781403030E+020
+  1.789066214035369E+020
+  1.779522893231655E+020
+  1.769288743543102E+020
+  1.759135885243766E+020
+  1.749918043730715E+020
+  1.742464180095176E+020
+  1.737449662203615E+020
+  1.735256558976930E+020
+  1.735837811486525E+020
+  1.738601585502122E+020
+  1.742331940811014E+020
+  1.745160437018122E+020
+  1.744601087099606E+020
+  1.737658668622078E+020
+  1.721017634258441E+020
+  1.691314552711720E+020
+  1.645489137767613E+020
+  1.581195391217356E+020
+  1.497234343855110E+020
+  1.393945476513424E+020
+  1.273472106607349E+020
+  1.139808904814916E+020
+  9.985606084121502E+019
+  8.563968132690133E+019
+  7.202716989583242E+019
+  5.963154639321394E+019
+  4.882233367939802E+019
+  3.968773434818382E+019
+  3.213596541429915E+019
+  2.598807017341785E+019
+  2.103587440785214E+019
+  1.707472425735308E+019
+  1.391971043107188E+019
+  1.141191197276041E+019
+  9.419077711993891E+018
+  7.833522582902016E+018
+  6.568876609269813E+018
+  5.556589082097294E+018
+  4.742643005058612E+018
+  4.084675981462385E+018
+  3.549561450539473E+018
+  3.111431595797375E+018
+  2.750091056689336E+018
+  2.449760684637830E+018
+  2.198092008614178E+018
+  1.985399475591117E+018
+  1.804065537416670E+018
+  1.648081639639445E+018
+  1.512695417650839E+018
+  1.394140654935854E+018
+  1.289431763720067E+018
+  1.196208801696271E+018
+  1.112622537554236E+018
+  1.037252113792291E+018
+  9.690508123035284E+017
+  9.073188121766345E+017
+  8.517063334546564E+017
+  8.022571787999142E+017
+  7.595128624296987E+017
+  7.247133077205088E+017
+  7.001542632904641E+017
+  6.897975092714092E+017
+  7.002810917019415E+017
+  7.425455303152801E+017
+  8.343765233753681E+017
+  1.004254291754608E+018
+  1.296965686069712E+018
+  1.781418247862177E+018
+  2.560890012603854E+018
+  3.785389499626598E+018
+  5.664662181224564E+018
+  8.478415865703478E+018
+  1.257738521819571E+019
+  1.836504438397867E+019
+  2.624585843159511E+019
+  3.652376853444431E+019
+  4.925593119523220E+019
+  6.416125693499179E+019
+  8.064626419460278E+019
+  9.788117322203575E+019
+  1.149191433743570E+020
+  1.308388260557328E+020
+  1.448739098075717E+020
+  1.565016060993225E+020
+  1.654780084048374E+020
+  1.718242585544825E+020
+  1.757778430983290E+020
+  1.777264953475246E+020
+  1.781397436817713E+020
+  1.775080782238956E+020
+  1.762945977842622E+020
+  1.749002945267770E+020
+  1.736421421353985E+020
+  1.727424619280265E+020
+  1.723280015930331E+020
+  1.724372292497909E+020
+  1.730342357425690E+020
+  1.740273279951391E+020
+  1.752900432530069E+020
+  1.766821355237036E+020
+  1.780682441625329E+020
+  1.793324822032533E+020
+  1.803879664201572E+020
+  1.811811518393200E+020
+  1.816915420290810E+020
+  1.819278261050117E+020
+  1.819217304576335E+020
+  1.817208599158022E+020
+  1.813815324341002E+020
+  1.809622203359753E+020
+  1.805179838725108E+020
+  1.800962340749327E+020
+  1.797339743680062E+020
+  1.794564746147759E+020
+  1.776911772826369E+019
+  1.776682611591248E+019
+  1.776766017253687E+019
+  1.777230355276134E+019
+  1.778109833810957E+019
+  1.779389561850620E+019
+  1.780993449297736E+019
+  1.782776911726380E+019
+  1.784526041529341E+019
+  1.785965088614017E+019
+  1.786773109334986E+019
+  1.786609458387869E+019
+  1.785146855481653E+019
+  1.782109569400279E+019
+  1.777312894319323E+019
+  1.770698933086206E+019
+  1.762362968189048E+019
+  1.752564523064885E+019
+  1.741717789146246E+019
+  1.730357616827041E+019
+  1.719079789771234E+019
+  1.708457625699892E+019
+  1.698940637611137E+019
+  1.690744456972045E+019
+  1.683743865655807E+019
+  1.677382180187514E+019
+  1.670610281841179E+019
+  1.661867553481823E+019
+  1.649115334924334E+019
+  1.629931560864268E+019
+  1.601672759826607E+019
+  1.561705541914776E+019
+  1.507702451230692E+019
+  1.437985030056749E+019
+  1.351879705358764E+019
+  1.250031789716039E+019
+  1.134605610789796E+019
+  1.009294755327839E+019
+  8.790864997883234E+018
+  7.497736428133660E+018
+  6.272784233743307E+018
+  5.167089135173342E+018
+  4.210002019618247E+018
+  3.406417747523421E+018
+  2.745959495088525E+018
+  2.211174671080903E+018
+  1.782559931053204E+018
+  1.441332859787540E+018
+  1.170751936821770E+018
+  9.565747028390381E+017
+  7.870467913719172E+017
+  6.526648264755717E+017
+  5.458539539593472E+017
+  4.606357635224709E+017
+  3.923233947982755E+017
+  3.372584770379298E+017
+  2.925926744453825E+017
+  2.561107715763778E+017
+  2.260898318839053E+017
+  2.011884118945793E+017
+  1.803601670006852E+017
+  1.627869068335994E+017
+  1.478269708851099E+017
+  1.349755695338050E+017
+  1.238344199874680E+017
+  1.140885854567186E+017
+  1.054889012074986E+017
+  9.783875519175966E+016
+  9.098430366853400E+016
+  8.480747044938736E+016
+  7.922133616944139E+016
+  7.416781512893653E+016
+  6.961790129294287E+016
+  6.557532700092436E+016
+  6.208534164000964E+016
+  5.925165982365488E+016
+  5.726668902921166E+016
+  5.646322222918474E+016
+  5.740018767070352E+016
+  6.100101456630594E+016
+  6.877061253422602E+016
+  8.312503287738122E+016
+  1.078742433920407E+017
+  1.488981598735965E+017
+  2.150401780375358E+017
+  3.191966567867667E+017
+  4.794852964367577E+017
+  7.202075930324292E+017
+  1.072063956400651E+018
+  1.570741639627933E+018
+  2.252634746989943E+018
+  3.146225061727783E+018
+  4.259435168950573E+018
+  5.571433332999415E+018
+  7.034363459113573E+018
+  8.579348464330447E+018
+  1.012627639541721E+019
+  1.159578714591098E+019
+  1.292039613214334E+019
+  1.405232272425563E+019
+  1.496690474966956E+019
+  1.566183418636351E+019
+  1.615335759247058E+019
+  1.647089224015701E+019
+  1.665133803795970E+019
+  1.673395696650799E+019
+  1.675626425274091E+019
+  1.675105579376596E+019
+  1.674451655552749E+019
+  1.675528512117889E+019
+  1.679433851596052E+019
+  1.686556402271801E+019
+  1.696687635719503E+019
+  1.709171602268323E+019
+  1.723073946952972E+019
+  1.737350064083689E+019
+  1.750993927721346E+019
+  1.763153621538371E+019
+  1.773206039949421E+019
+  1.780789996861230E+019
+  1.785802565351995E+019
+  1.788367204580517E+019
+  1.788784101954505E+019
+  1.787473057944476E+019
+  1.784916940533624E+019
+  1.781610370921700E+019
+  1.778016496870339E+019
+  1.774534540222191E+019
+  1.771479170187041E+019
+  1.769071008877206E+019
+  8.833184084428736E+019
+  8.832219737845490E+019
+  8.832853177900619E+019
+  8.835414806726427E+019
+  8.840057202393466E+019
+  8.846683862072381E+019
+  8.854895356433026E+019
+  8.863963137730458E+019
+  8.872839363162749E+019
+  8.880211489745928E+019
+  8.884604885929314E+019
+  8.884530111859414E+019
+  8.878666129895660E+019
+  8.866064197685933E+019
+  8.846350006165923E+019
+  8.819895801412231E+019
+  8.787930995118691E+019
+  8.752559870289666E+019
+  8.716659420689888E+019
+  8.683640026104757E+019
+  8.657066572602882E+019
+  8.640156440704803E+019
+  8.635190901090522E+019
+  8.642894538573446E+019
+  8.661850163766161E+019
+  8.688022213821699E+019
+  8.714459790092301E+019
+  8.731243169841267E+019
+  8.725727812915955E+019
+  8.683129465686868E+019
+  8.587481449246741E+019
+  8.422974420519856E+019
+  8.175650022956299E+019
+  7.835353449478001E+019
+  7.397753237227201E+019
+  6.866121543128040E+019
+  6.252469448631011E+019
+  5.577607491037904E+019
+  4.869813509435556E+019
+  4.162066598510335E+019
+  3.488209846275137E+019
+  2.877608540640171E+019
+  2.347486799175805E+019
+  1.901316540353013E+019
+  1.533890926395199E+019
+  1.235897277246657E+019
+  9.967458176021985E+018
+  8.061475381181650E+018
+  6.548796080591642E+018
+  5.350643027984436E+018
+  4.401801834670823E+018
+  3.649419480424945E+018
+  3.051286593759943E+018
+  2.574037186090230E+018
+  2.191480075807476E+018
+  1.883150446682130E+018
+  1.633101764480518E+018
+  1.428924187626707E+018
+  1.260961103795784E+018
+  1.121691581731088E+018
+  1.005247980745831E+018
+  9.070416487306035E+017
+  8.234739574746395E+017
+  7.517141114803099E+017
+  6.895289046490271E+017
+  6.351527825978817E+017
+  5.871891955782516E+017
+  5.445363577707731E+017
+  5.063322692592154E+017
+  4.719153539516434E+017
+  4.407985082898621E+017
+  4.126559855091591E+017
+  3.873246904223787E+017
+  3.648246048678678E+017
+  3.454078953625995E+017
+  3.296537589783658E+017
+  3.186375762483734E+017
+  3.142201135201107E+017
+  3.195271011399642E+017
+  3.397227566591656E+017
+  3.832221768087660E+017
+  4.635321851918065E+017
+  6.019449652211272E+017
+  8.313057537509540E+017
+  1.200984665983113E+018
+  1.782923328522549E+018
+  2.678088796869877E+018
+  4.021725407818034E+018
+  5.984360312275587E+018
+  8.763636047873769E+018
+  1.256005673807401E+019
+  1.752851254982011E+019
+  2.370749287797897E+019
+  3.097345458916294E+019
+  3.905087157977642E+019
+  4.754642999729449E+019
+  5.600453685069057E+019
+  6.397513196490801E+019
+  7.107653099117516E+019
+  7.703960844743932E+019
+  8.172704606330983E+019
+  8.512900340981111E+019
+  8.734167857384351E+019
+  8.853694231172429E+019
+  8.893024613301600E+019
+  8.875168684963525E+019
+  8.822269370578808E+019
+  8.753900769974090E+019
+  8.685962661293353E+019
+  8.630102237684946E+019
+  8.593590223585996E+019
+  8.579582218621428E+019
+  8.587692613748438E+019
+  8.614795534274522E+019
+  8.655951501351631E+019
+  8.705349659408341E+019
+  8.757161209182283E+019
+  8.806222064337304E+019
+  8.848497058448309E+019
+  8.881315429412531E+019
+  8.903399342189404E+019
+  8.914729490479638E+019
+  8.916303609736552E+019
+  8.909844281403397E+019
+  8.897500843360023E+019
+  8.881572712163982E+019
+  8.864271534387177E+019
+  8.847537970173893E+019
+  8.832920155668159E+019
+  8.821511640296173E+019
+  5.540148272324474E+019
+  5.539343853532514E+019
+  5.539655587014213E+019
+  5.541329283968867E+019
+  5.544490960923466E+019
+  5.549096489717962E+019
+  5.554892162750226E+019
+  5.561393157200347E+019
+  5.567885761881035E+019
+  5.573459473557240E+019
+  5.577071563565429E+019
+  5.577642479908916E+019
+  5.574176902833123E+019
+  5.565900956990739E+019
+  5.552401282867189E+019
+  5.533747677542465E+019
+  5.510578617020354E+019
+  5.484128677131731E+019
+  5.456179361091983E+019
+  5.428920757104058E+019
+  5.404720865032937E+019
+  5.385811550945183E+019
+  5.373913273176675E+019
+  5.369832811072738E+019
+  5.373077079685526E+019
+  5.381530284650213E+019
+  5.391240957321448E+019
+  5.396360950737565E+019
+  5.389272149223576E+019
+  5.360929774896037E+019
+  5.301443029527346E+019
+  5.200900707099559E+019
+  5.050425296700789E+019
+  4.843397926416635E+019
+  4.576736186704130E+019
+  4.252034409774825E+019
+  3.876312681855803E+019
+  3.462102917157475E+019
+  3.026666989669671E+019
+  2.590312308612015E+019
+  2.174022300131558E+019
+  1.796125888278084E+019
+  1.467488925608431E+019
+  1.190453343500463E+019
+  9.619539297252864E+018
+  7.763449598666047E+018
+  6.271545643227424E+018
+  5.080678142096847E+018
+  4.134074440782788E+018
+  3.383127679506570E+018
+  2.787517230136638E+018
+  2.314504251214945E+018
+  1.937897038839343E+018
+  1.636956595351316E+018
+  1.395377044740540E+018
+  1.200397421954199E+018
+  1.042058798492298E+018
+  9.125992671736660E+017
+  8.059700367139223E+017
+  7.174532737948972E+017
+  6.433630521979516E+017
+  5.808129208494284E+017
+  5.275361812469470E+017
+  4.817474907212060E+017
+  4.420366773163668E+017
+  4.072875935722700E+017
+  3.766164445435322E+017
+  3.493253334067916E+017
+  3.248678394927069E+017
+  3.028243685055804E+017
+  2.828859098603679E+017
+  2.648458537177182E+017
+  2.486008683605420E+017
+  2.341638145968929E+017
+  2.216947110276020E+017
+  2.115604795520285E+017
+  2.044414270151812E+017
+  2.015131814246637E+017
+  2.047481736500160E+017
+  2.174014787087923E+017
+  2.447714927510769E+017
+  2.953534108950646E+017
+  3.825243688028017E+017
+  5.268958308686517E+017
+  7.594097841687904E+017
+  1.125090660723047E+018
+  1.687026237616071E+018
+  2.529561731478406E+018
+  3.758799036004350E+018
+  5.497330385031572E+018
+  7.868921675835529E+018
+  1.096814046150941E+019
+  1.481625640922327E+019
+  1.933318903498237E+019
+  2.434445012755641E+019
+  2.960316181148730E+019
+  3.482521888879639E+019
+  3.973182473408976E+019
+  4.408856060285329E+019
+  4.773249715522905E+019
+  5.058356453347706E+019
+  5.264118039283998E+019
+  5.397029371354132E+019
+  5.468201704278505E+019
+  5.491335320090866E+019
+  5.480904190678598E+019
+  5.450703167695828E+019
+  5.412796465681226E+019
+  5.376845001971050E+019
+  5.349768074801535E+019
+  5.335692944981025E+019
+  5.336147921568684E+019
+  5.350451770359004E+019
+  5.376243643806003E+019
+  5.410087642726293E+019
+  5.448080846844695E+019
+  5.486398005517038E+019
+  5.521721114397505E+019
+  5.551524651342180E+019
+  5.574211522339820E+019
+  5.589115318301649E+019
+  5.596398529795713E+019
+  5.596883532607907E+019
+  5.591853092705213E+019
+  5.582849414316232E+019
+  5.571489341949007E+019
+  5.559306824184766E+019
+  5.547632578132727E+019
+  5.537515325243647E+019
+  5.529683107791468E+019
+  4.487497280545572E+018
+  4.487575203998581E+018
+  4.488095318488822E+018
+  4.489108856837561E+018
+  4.490605442712112E+018
+  4.492493431488058E+018
+  4.494587864490313E+018
+  4.496609331127599E+018
+  4.498196028685364E+018
+  4.498931693384211E+018
+  4.498389658636012E+018
+  4.496190536319524E+018
+  4.492069063232495E+018
+  4.485943289291340E+018
+  4.477976684667883E+018
+  4.468621873503647E+018
+  4.458634060615067E+018
+  4.449043020091045E+018
+  4.441075072868134E+018
+  4.436021061403207E+018
+  4.435052809861509E+018
+  4.438998260150496E+018
+  4.448093258718922E+018
+  4.461734506700826E+018
+  4.478262328926841E+018
+  4.494803087668877E+018
+  4.507199509477827E+018
+  4.510053896340985E+018
+  4.496905340236318E+018
+  4.460558087782362E+018
+  4.393572826396735E+018
+  4.288922525071177E+018
+  4.140794934500685E+018
+  3.945491104040003E+018
+  3.702323212386679E+018
+  3.414362736656216E+018
+  3.088849008345225E+018
+  2.737065822588296E+018
+  2.373557088467865E+018
+  2.014690833263272E+018
+  1.676771728714422E+018
+  1.373508971549220E+018
+  1.112469801828957E+018
+  8.945145899801219E+017
+  7.163885000547025E+017
+  5.729878495416158E+017
+  4.587353829056672E+017
+  3.683274592869197E+017
+  2.970799374149162E+017
+  2.410382781731466E+017
+  1.969612421658361E+017
+  1.622453250486188E+017
+  1.348284187263599E+017
+  1.130930890010852E+017
+  9.577909856530874E+016
+  8.190875334825344E+016
+  7.072545813069925E+016
+  6.164434402590911E+016
+  5.421324466618105E+016
+  4.808220768687107E+016
+  4.297987266671556E+016
+  3.869528076246615E+016
+  3.506393080465483E+016
+  3.195712812856010E+016
+  2.927387330054741E+016
+  2.693470541831391E+016
+  2.487705067437596E+016
+  2.305173571659223E+016
+  2.142041310756103E+016
+  1.995372047658800E+016
+  1.863006500681408E+016
+  1.743500231975157E+016
+  1.636127920728211E+016
+  1.540975522799293E+016
+  1.459164134929991E+016
+  1.393284120578454E+016
+  1.348171610129157E+016
+  1.332239956022563E+016
+  1.359695050430227E+016
+  1.454122851556416E+016
+  1.654139804553194E+016
+  2.022023112045897E+016
+  2.656430599341653E+016
+  3.710353142164600E+016
+  5.415081745179168E+016
+  8.109833257512082E+016
+  1.227421675467404E+017
+  1.855628910424283E+017
+  2.778201406248683E+017
+  4.092256274972532E+017
+  5.898551883442061E+017
+  8.278868318283939E+017
+  1.126207746880191E+018
+  1.480101581548447E+018
+  1.877504741412733E+018
+  2.300402103040608E+018
+  2.727281456739146E+018
+  3.136269263645494E+018
+  3.508148919031423E+018
+  3.828595927495091E+018
+  4.089290424300079E+018
+  4.287922520405175E+018
+  4.427358035121817E+018
+  4.514331497546896E+018
+  4.558004044996322E+018
+  4.568625255862373E+018
+  4.556427511597769E+018
+  4.530795131393115E+018
+  4.499699769219257E+018
+  4.469372808883742E+018
+  4.444182054792022E+018
+  4.426681884706497E+018
+  4.417805834105059E+018
+  4.417166335400118E+018
+  4.423420165745806E+018
+  4.434654055286747E+018
+  4.448746359885839E+018
+  4.463668926751805E+018
+  4.477706668881302E+018
+  4.489587400565253E+018
+  4.498527719254929E+018
+  4.504210388503162E+018
+  4.506714450711121E+018
+  4.506420499114708E+018
+  4.503909219194088E+018
+  4.499864027869522E+018
+  4.494984863137122E+018
+  4.489920146879437E+018
+  4.485219986575539E+018
+  4.481309400503349E+018
+  9.588505588441081E+019
+  9.590015826236042E+019
+  9.591291567159402E+019
+  9.592113656600596E+019
+  9.592231100968986E+019
+  9.591362615390660E+019
+  9.589204910377137E+019
+  9.585448198251068E+019
+  9.579797792688003E+019
+  9.572002996554672E+019
+  9.561891570164241E+019
+  9.549405161898241E+019
+  9.534630488713342E+019
+  9.517819885862714E+019
+  9.499393121344025E+019
+  9.479911688248836E+019
+  9.460017630120582E+019
+  9.440331120634254E+019
+  9.421304547774933E+019
+  9.403035901624902E+019
+  9.385050599201972E+019
+  9.366067713515115E+019
+  9.343772808309704E+019
+  9.314624183704455E+019
+  9.273721695367830E+019
+  9.214767456052077E+019
+  9.130146363788198E+019
+  9.011152523545534E+019
+  8.848385687513434E+019
+  8.632338595841732E+019
+  8.354187813945914E+019
+  8.006781469881865E+019
+  7.585781322872490E+019
+  7.090861416888820E+019
+  6.526796027240231E+019
+  5.904201471545742E+019
+  5.239658934007943E+019
+  4.554977687191095E+019
+  3.875490876501141E+019
+  3.227506635599544E+019
+  2.635315306594316E+019
+  2.117487354157654E+019
+  1.681955423727928E+019
+  1.326017370097688E+019
+  1.041002493958252E+019
+  8.160491309087834E+018
+  6.402654381156047E+018
+  5.038051844773875E+018
+  3.982832222912251E+018
+  3.168252429497731E+018
+  2.539380128654743E+018
+  2.053090598397441E+018
+  1.675946196824710E+018
+  1.382242872375194E+018
+  1.152335979005765E+018
+  9.712666841643075E+017
+  8.276666539370989E+017
+  7.129014340424716E+017
+  6.204095132010107E+017
+  5.451972186466818E+017
+  4.834553211648337E+017
+  4.322694310996177E+017
+  3.894019906012807E+017
+  3.531285625781953E+017
+  3.221151288922087E+017
+  2.953263104118900E+017
+  2.719569274687424E+017
+  2.513812639174897E+017
+  2.331159195156466E+017
+  2.167933765633593E+017
+  2.021445211531258E+017
+  1.889895258573899E+017
+  1.772379502115591E+017
+  1.669009727014727E+017
+  1.581218096901118E+017
+  1.512353016255269E+017
+  1.468753463387916E+017
+  1.461606579822596E+017
+  1.510068349710941E+017
+  1.646375515242539E+017
+  1.924007619494732E+017
+  2.430357937996081E+017
+  3.305776296800004E+017
+  4.771091101510592E+017
+  7.165468774939706E+017
+  1.099513964545871E+018
+  1.699020483878730E+018
+  2.616024434332206E+018
+  3.982854761992768E+018
+  5.960890134415039E+018
+  8.726933728499145E+018
+  1.244094322580365E+019
+  1.719378300750925E+019
+  2.296677012511156E+019
+  2.962702198915781E+019
+  3.693935062571647E+019
+  4.459555561606482E+019
+  5.225748572689587E+019
+  5.960280116303159E+019
+  6.636297861821275E+019
+  7.234697261819189E+019
+  7.744894496326110E+019
+  8.164256699902217E+019
+  8.496654345913269E+019
+  8.750623288047639E+019
+  8.937521745691175E+019
+  9.069920367246213E+019
+  9.160330814550981E+019
+  9.220287837134088E+019
+  9.259753009597222E+019
+  9.286792535175571E+019
+  9.307481144402692E+019
+  9.325987231596896E+019
+  9.344795140910604E+019
+  9.365018610973377E+019
+  9.386757832217585E+019
+  9.409454972509302E+019
+  9.432211133586153E+019
+  9.454040247689614E+019
+  9.474049017429910E+019
+  9.491543665036571E+019
+  9.506073419000146E+019
+  9.517427879519334E+019
+  9.525608686959965E+019
+  9.530791448383971E+019
+  9.533284605344576E+019
+  9.533489290271254E+019
+  9.531867777145507E+019
+  9.528922204374062E+019
+  9.525178401976007E+019
+  2.169820816246872E+020
+  2.170163969975993E+020
+  2.170446022625671E+020
+  2.170615862343034E+020
+  2.170615994742353E+020
+  2.170383041140806E+020
+  2.169849603682068E+020
+  2.168947553964945E+020
+  2.167612451753123E+020
+  2.165789351526570E+020
+  2.163439631452205E+020
+  2.160547858979630E+020
+  2.157127614804800E+020
+  2.153224974463509E+020
+  2.148917991212687E+020
+  2.144310389453614E+020
+  2.139517867333556E+020
+  2.134645868523911E+020
+  2.129758420502166E+020
+  2.124838685743289E+020
+  2.119743187422448E+020
+  2.114153090132982E+020
+  2.107527211670001E+020
+  2.099062403820458E+020
+  2.087667446655861E+020
+  2.071956665240931E+020
+  2.050269247248086E+020
+  2.020719914297462E+020
+  1.981286248278313E+020
+  1.929937293596204E+020
+  1.864806204900841E+020
+  1.784405402627512E+020
+  1.687874682036155E+020
+  1.575240529193788E+020
+  1.447649671234806E+020
+  1.307525158929795E+020
+  1.158585498071880E+020
+  1.005674986061457E+020
+  8.543830571585100E+019
+  7.104812260407341E+019
+  5.792668554077705E+019
+  4.647557037516278E+019
+  3.686128560978648E+019
+  2.901683241431796E+019
+  2.274519234030235E+019
+  1.780262653589528E+019
+  1.394608353929005E+019
+  1.095661482208446E+019
+  8.648247437394094E+018
+  6.868843129771052E+018
+  5.497055782913233E+018
+  4.437784031952208E+018
+  3.617405749282416E+018
+  2.979411418564345E+018
+  2.480675218722349E+018
+  2.088403928018138E+018
+  1.777709388578915E+018
+  1.529713671239581E+018
+  1.330089639330880E+018
+  1.167947404615880E+018
+  1.034990373807941E+018
+  9.248786587542740E+017
+  8.327505091270824E+017
+  7.548633934304954E+017
+  6.883253102775724E+017
+  6.308940346613268E+017
+  5.808275680882449E+017
+  5.367733701264815E+017
+  4.976873129355178E+017
+  4.627760376488133E+017
+  4.314588408884143E+017
+  4.033477739118347E+017
+  3.782478014241633E+017
+  3.561833519244148E+017
+  3.374644387767499E+017
+  3.228162714226699E+017
+  3.136130857452518E+017
+  3.122827206830615E+017
+  3.229868167212718E+017
+  3.527360464290090E+017
+  4.131726719856417E+017
+  5.233412976894051E+017
+  7.138591278231643E+017
+  1.032953812621737E+018
+  1.554787377870259E+018
+  2.390200223631087E+018
+  3.699290198479249E+018
+  5.703823116273581E+018
+  8.695077413081291E+018
+  1.302921748059196E+019
+  1.909794654822562E+019
+  2.725817218490080E+019
+  3.771742715461761E+019
+  5.044438494009891E+019
+  6.515730568957499E+019
+  8.134856580058844E+019
+  9.834746786472740E+019
+  1.154137283132960E+020
+  1.318375821266562E+020
+  1.470235597566825E+020
+  1.605432970154563E+020
+  1.721536177470879E+020
+  1.817851291075321E+020
+  1.895113620560607E+020
+  1.955090912616213E+020
+  2.000183076874518E+020
+  2.033071296113030E+020
+  2.056440302017244E+020
+  2.072777551329668E+020
+  2.084242501944093E+020
+  2.092595510367031E+020
+  2.099175686481594E+020
+  2.104917745848747E+020
+  2.110398182873847E+020
+  2.115900824572050E+020
+  2.121491620702014E+020
+  2.127093131282357E+020
+  2.132550950831964E+020
+  2.137686985264432E+020
+  2.142337349919376E+020
+  2.146375070311773E+020
+  2.149719659904281E+020
+  2.152337171799412E+020
+  2.154235028874106E+020
+  2.155454954146791E+020
+  2.156065291011825E+020
+  2.156153469236749E+020
+  2.155820215492045E+020
+  2.155175797438307E+020
+  2.154337077811601E+020
+  1.110339507153003E+020
+  1.110496993150761E+020
+  1.110643048218836E+020
+  1.110756616414820E+020
+  1.110811630775372E+020
+  1.110776631989480E+020
+  1.110615300055149E+020
+  1.110288042852683E+020
+  1.109754588168500E+020
+  1.108977774442377E+020
+  1.107928370366609E+020
+  1.106590374259801E+020
+  1.104966126052441E+020
+  1.103080378454668E+020
+  1.100982224100366E+020
+  1.098743652774132E+020
+  1.096453582179138E+020
+  1.094206453382022E+020
+  1.092084920398584E+020
+  1.090136815286669E+020
+  1.088347407375610E+020
+  1.086608897469106E+020
+  1.084689949366419E+020
+  1.082208717851383E+020
+  1.078613188637179E+020
+  1.073172689491225E+020
+  1.064984242969907E+020
+  1.052997141606233E+020
+  1.036058816524952E+020
+  1.012984625752679E+020
+  9.826531880967751E+019
+  9.441266337895188E+019
+  8.967908971397939E+019
+  8.405045772166208E+019
+  7.757364307276040E+019
+  7.036630605001937E+019
+  6.261933368051549E+019
+  5.458893191518575E+019
+  4.657688829119890E+019
+  3.890028924559127E+019
+  3.185537831310386E+019
+  2.567227820323148E+019
+  2.045431885443110E+019
+  1.617642084605537E+019
+  1.274040561446316E+019
+  1.002026567339302E+019
+  7.888291792085209E+018
+  6.228264907018689E+018
+  4.940719545884242E+018
+  3.943776231478270E+018
+  3.171767411713312E+018
+  2.572968050167675E+018
+  2.107145119046976E+018
+  1.743276675872972E+018
+  1.457583581151724E+018
+  1.231906140136182E+018
+  1.052403998775492E+018
+  9.085354966288411E+017
+  7.922674479291259E+017
+  6.974692887754819E+017
+  6.194518071320187E+017
+  5.546177014598204E+017
+  5.001977977468001E+017
+  4.540524388648602E+017
+  4.145222517755370E+017
+  3.803162616489676E+017
+  3.504282833022348E+017
+  3.240748280409329E+017
+  3.006495771029455E+017
+  2.796909598357868E+017
+  2.608607195027382E+017
+  2.439327691534079E+017
+  2.287934161494063E+017
+  2.154565637751168E+017
+  2.041013640360318E+017
+  1.951458483044495E+017
+  1.893795029446669E+017
+  1.881921773086420E+017
+  1.939580170624448E+017
+  2.106631767686620E+017
+  2.449058146682610E+017
+  3.074443948225948E+017
+  4.155173159652904E+017
+  5.961828628464892E+017
+  8.908924574207451E+017
+  1.361340965489533E+018
+  2.096226792239125E+018
+  3.217760533930775E+018
+  4.885443303861239E+018
+  7.292736537989976E+018
+  1.064994373518949E+019
+  1.514458716834168E+019
+  2.087804104916460E+019
+  2.781738221146678E+019
+  3.579137076176398E+019
+  4.450669093561853E+019
+  5.358508977305051E+019
+  6.261659755482599E+019
+  7.121517226853217E+019
+  7.906412287366067E+019
+  8.594357889341759E+019
+  9.173842509090736E+019
+  9.643004451329248E+019
+  1.000776973257754E+020
+  1.027955090191682E+020
+  1.047297078318958E+020
+  1.060389231051470E+020
+  1.068787465198167E+020
+  1.073906843567341E+020
+  1.076950897786975E+020
+  1.078874931597543E+020
+  1.080377506003303E+020
+  1.081914624480723E+020
+  1.083731093039052E+020
+  1.085903154317336E+020
+  1.088386212310959E+020
+  1.091061746019655E+020
+  1.093778572122177E+020
+  1.096385285019046E+020
+  1.098752530552422E+020
+  1.100785352543737E+020
+  1.102427074930698E+020
+  1.103657087609085E+020
+  1.104485269618950E+020
+  1.104945201393832E+020
+  1.105087168716562E+020
+  1.104971585805079E+020
+  1.104663815795248E+020
+  1.104230642522632E+020
+  1.103737833815173E+020
+  1.249483661690779E+020
+  1.249535285696973E+020
+  1.249678887536676E+020
+  1.249920502747467E+020
+  1.250251799167018E+020
+  1.250645643730408E+020
+  1.251053441246752E+020
+  1.251404978179925E+020
+  1.251611244900880E+020
+  1.251570872952971E+020
+  1.251180232726649E+020
+  1.250346566542576E+020
+  1.249003102812481E+020
+  1.247124560918478E+020
+  1.244740846745239E+020
+  1.241946306339133E+020
+  1.238901770871238E+020
+  1.235826830393504E+020
+  1.232980385912764E+020
+  1.230628614733183E+020
+  1.229001016304605E+020
+  1.228237025336400E+020
+  1.228327517606504E+020
+  1.229057081684100E+020
+  1.229953922466746E+020
+  1.230254570604069E+020
+  1.228890256421090E+020
+  1.224501094312201E+020
+  1.215483368816525E+020
+  1.200074270638862E+020
+  1.176477026569092E+020
+  1.143026635397498E+020
+  1.098391230603656E+020
+  1.041795571197640E+020
+  9.732414361378554E+019
+  8.936867154936693E+019
+  8.051352836163384E+019
+  7.105901720568097E+019
+  6.138397267760756E+019
+  5.190822196260235E+019
+  4.304426024134485E+019
+  3.513326242714443E+019
+  2.835614092805338E+019
+  2.272176686495064E+019
+  1.813523818424470E+019
+  1.445661994458823E+019
+  1.153615847627274E+019
+  9.233094297196325E+018
+  7.424104212310128E+018
+  6.005722831701040E+018
+  4.893590055841184E+018
+  4.020254382598954E+018
+  3.332511712806367E+018
+  2.788789893980321E+018
+  2.356812851602241E+018
+  2.011624657052095E+018
+  1.733974318966945E+018
+  1.509025251368698E+018
+  1.325340234397465E+018
+  1.174091840182049E+018
+  1.048453098697592E+018
+  9.431299718966684E+017
+  8.540041617104445E+017
+  7.778611004682602E+017
+  7.121833848621612E+017
+  6.549943826284506E+017
+  6.047403398118575E+017
+  5.602021770770105E+017
+  5.204304554910592E+017
+  4.846989180861842E+017
+  4.524738132581213E+017
+  4.233981769773599E+017
+  3.972927891171124E+017
+  3.741791877456214E+017
+  3.543357462017294E+017
+  3.384065778393535E+017
+  3.275965697607778E+017
+  3.240062528665352E+017
+  3.311898462321187E+017
+  3.550606711139981E+017
+  4.053204389194538E+017
+  4.976482968441277E+017
+  6.569379896775357E+017
+  9.218857282302876E+017
+  1.351148234733855E+018
+  2.031012185325011E+018
+  3.083901367887994E+018
+  4.675925013236350E+018
+  7.019892542028357E+018
+  1.036778096907172E+019
+  1.498388311271510E+019
+  2.108778460978140E+019
+  2.876767063353425E+019
+  3.791982588575451E+019
+  4.825269852748414E+019
+  5.931974198492016E+019
+  7.057957600931768E+019
+  8.147446856681416E+019
+  9.150710237045921E+019
+  1.002985823922968E+020
+  1.076186360148097E+020
+  1.133878850409910E+020
+  1.176585612461997E+020
+  1.205827457923212E+020
+  1.223766590603265E+020
+  1.232871538705132E+020
+  1.235638129400265E+020
+  1.234378480092751E+020
+  1.231076647518286E+020
+  1.227303805964940E+020
+  1.224184590688384E+020
+  1.222406574883439E+020
+  1.222264866478663E+020
+  1.223732939167082E+020
+  1.226549492217980E+020
+  1.230310287477642E+020
+  1.234554364471698E+020
+  1.238836075655731E+020
+  1.242777622476781E+020
+  1.246100360929661E+020
+  1.248636268344621E+020
+  1.250323240454759E+020
+  1.251189274686049E+020
+  1.251330899923894E+020
+  1.250890134270157E+020
+  1.250032427322727E+020
+  1.248927167684892E+020
+  1.247732426779358E+020
+  1.246584589865649E+020
+  1.245592432470912E+020
+  4.127452659982470E+019
+  4.127293593679915E+019
+  4.127664360434079E+019
+  4.128654423989159E+019
+  4.130287957805070E+019
+  4.132499357094476E+019
+  4.135115479488766E+019
+  4.137848200197170E+019
+  4.140300032332218E+019
+  4.141985966380076E+019
+  4.142372470306777E+019
+  4.140932003371058E+019
+  4.137209484040755E+019
+  4.130894789404797E+019
+  4.121892700023437E+019
+  4.110379621566385E+019
+  4.096835385554212E+019
+  4.082038689785016E+019
+  4.067016632081746E+019
+  4.052942649297150E+019
+  4.040982979156410E+019
+  4.032098973337398E+019
+  4.026820193951489E+019
+  4.025009963287022E+019
+  4.025649737526099E+019
+  4.026670632888053E+019
+  4.024859684023604E+019
+  4.015865727977920E+019
+  3.994326239313961E+019
+  3.954132505407366E+019
+  3.888845297426287E+019
+  3.792263890613908E+019
+  3.659133908623139E+019
+  3.485950503296153E+019
+  3.271772421801644E+019
+  3.018915419970208E+019
+  2.733355442092367E+019
+  2.424667236311345E+019
+  2.105377290842268E+019
+  1.789730663278903E+019
+  1.492040866439080E+019
+  1.224444140747920E+019
+  9.937210737006526E+018
+  8.007457678164021E+018
+  6.427497504592644E+018
+  5.153137034502230E+018
+  4.135793346571471E+018
+  3.329105296902230E+018
+  2.692019079872736E+018
+  2.189796490223764E+018
+  1.793904789883181E+018
+  1.481378006784976E+018
+  1.233988719376995E+018
+  1.037410746542013E+018
+  8.804586455816952E+017
+  7.544366243943155E+017
+  6.526012229025921E+017
+  5.697285181193407E+017
+  5.017712673323894E+017
+  4.455904539190404E+017
+  3.987468490838953E+017
+  3.593401680970027E+017
+  3.258855250510700E+017
+  2.972188770256330E+017
+  2.724248819101831E+017
+  2.507820457691012E+017
+  2.317212182146412E+017
+  2.147944432082571E+017
+  1.996519400679884E+017
+  1.860256417623302E+017
+  1.737183367531456E+017
+  1.625981504767117E+017
+  1.525990027750002E+017
+  1.437289873434970E+017
+  1.360906289872759E+017
+  1.299201009968895E+017
+  1.256572975600633E+017
+  1.240658704505188E+017
+  1.264327358744704E+017
+  1.348907464990069E+017
+  1.529261207453827E+017
+  1.861520301040387E+017
+  2.434462024936728E+017
+  3.385521032508576E+017
+  4.922091957337160E+017
+  7.347739339138280E+017
+  1.109071411716315E+018
+  1.672821785555524E+018
+  2.499371278244875E+018
+  3.674633809987072E+018
+  5.287248605663777E+018
+  7.408339448333867E+018
+  1.006137995904640E+019
+  1.320200780437852E+019
+  1.672095120495120E+019
+  2.045708772261324E+019
+  2.421975863360402E+019
+  2.781684254294095E+019
+  3.108142489431063E+019
+  3.389119766357008E+019
+  3.617770119260504E+019
+  3.792569722991578E+019
+  3.916517292322863E+019
+  3.995930341391312E+019
+  4.039138843028441E+019
+  4.055286866407349E+019
+  4.053353421405436E+019
+  4.041427271471110E+019
+  4.026226173907663E+019
+  4.012833154138364E+019
+  4.004619406654804E+019
+  4.003324604538571E+019
+  4.009264526264413E+019
+  4.021631581572888E+019
+  4.038848235841502E+019
+  4.058930183331897E+019
+  4.079818442323608E+019
+  4.099648191092555E+019
+  4.116935383047755E+019
+  4.130676550351154E+019
+  4.140369487296047E+019
+  4.145971132709663E+019
+  4.147813771340585E+019
+  4.146501184934647E+019
+  4.142801886877235E+019
+  4.137549514473986E+019
+  4.131556758505796E+019
+  4.125549042535218E+019
+  4.120120493508313E+019
+  4.115710845689199E+019
+  9.565457915317535E+017
+  9.567730667384814E+017
+  9.569380533903058E+017
+  9.570049656355293E+017
+  9.569375256721340E+017
+  9.567012664010143E+017
+  9.562666432044351E+017
+  9.556128288631583E+017
+  9.547318583118031E+017
+  9.536330039229674E+017
+  9.523469700910482E+017
+  9.509292063268374E+017
+  9.494616052504463E+017
+  9.480517958882449E+017
+  9.468291596196974E+017
+  9.459367454807235E+017
+  9.455184938180475E+017
+  9.457015646283854E+017
+  9.465740915109326E+017
+  9.481593285255301E+017
+  9.503878674555670E+017
+  9.530702683260933E+017
+  9.558729404552120E+017
+  9.583003390066941E+017
+  9.596864770510405E+017
+  9.591984585186168E+017
+  9.558543512619005E+017
+  9.485573955405448E+017
+  9.361483436473202E+017
+  9.174774929083197E+017
+  8.914972476979784E+017
+  8.573741255896010E+017
+  8.146153195360412E+017
+  7.631989662341033E+017
+  7.036897218828035E+017
+  6.373139252059313E+017
+  5.659648247259356E+017
+  4.921123271637157E+017
+  4.186067484176655E+017
+  3.483916055776086E+017
+  2.841708081724770E+017
+  2.280035707160220E+017
+  1.807744967242443E+017
+  1.422006600065692E+017
+  1.113428941339885E+017
+  8.701949134165728E+016
+  6.804343347987114E+016
+  5.334086319458622E+016
+  4.199710043832828E+016
+  3.326242994417478E+016
+  2.653808088173724E+016
+  2.135437948508674E+016
+  1.734755726986352E+016
+  1.423836028821169E+016
+  1.181370765920401E+016
+  9.911642493368612E+015
+  8.409335082440177E+015
+  7.213705865905808E+015
+  6.254196439216727E+015
+  5.477250820503723E+015
+  4.842131784933607E+015
+  4.317765183674562E+015
+  3.880368139550776E+015
+  3.511670926827662E+015
+  3.197586541774071E+015
+  2.927217214537118E+015
+  2.692114698644111E+015
+  2.485732569963972E+015
+  2.303025489982014E+015
+  2.140163994461580E+015
+  1.994345515535583E+015
+  1.863694954055828E+015
+  1.747263663175915E+015
+  1.645157659504954E+015
+  1.558859350560439E+015
+  1.491859564666393E+015
+  1.450798893852446E+015
+  1.447443713960996E+015
+  1.502010387153519E+015
+  1.648619247518816E+015
+  1.944019133811087E+015
+  2.481160993036966E+015
+  3.409648049304996E+015
+  4.965375447592272E+015
+  7.511435087250729E+015
+  1.159096458150382E+016
+  1.798907216340820E+016
+  2.779395361640337E+016
+  4.243546461587414E+016
+  6.366203666834801E+016
+  9.339534118739643E+016
+  1.333823489408222E+017
+  1.846284549647115E+017
+  2.469519758257822E+017
+  3.189213002524553E+017
+  3.979723792256333E+017
+  4.807188445260236E+017
+  5.634177460462321E+017
+  6.424717129423364E+017
+  7.148527297409126E+017
+  7.783732623552031E+017
+  8.317844436006179E+017
+  8.747261621248561E+017
+  9.075782907668929E+017
+  9.312657344116333E+017
+  9.470594615726804E+017
+  9.563998826420183E+017
+  9.607544657652832E+017
+  9.615115503504609E+017
+  9.599072246805198E+017
+  9.569805447397147E+017
+  9.535525442186988E+017
+  9.502250350082575E+017
+  9.473953934766043E+017
+  9.452832697950564E+017
+  9.439647586196870E+017
+  9.434094598220042E+017
+  9.435163096281400E+017
+  9.441450428201713E+017
+  9.451413795943313E+017
+  9.463552296045174E+017
+  9.476522670160964E+017
+  9.489201333296869E+017
+  9.500710215704535E+017
+  9.510421076183575E+017
+  9.517945166743447E+017
+  9.523113283483508E+017
+  9.525954650734102E+017
+  9.526677053224040E+017
+  9.525644044817900E+017
+  1.090366339553415E+020
+  1.090257696844728E+020
+  1.090333731317915E+020
+  1.090631956437055E+020
+  1.091169130984298E+020
+  1.091932813871710E+020
+  1.092874853191825E+020
+  1.093907985527483E+020
+  1.094906507865266E+020
+  1.095712066966362E+020
+  1.096144978020465E+020
+  1.096020730083737E+020
+  1.095170735999235E+020
+  1.093465645560461E+020
+  1.090838709860253E+020
+  1.087306004689558E+020
+  1.082979930212004E+020
+  1.078072384028644E+020
+  1.072884470542870E+020
+  1.067780671650255E+020
+  1.063147072635415E+020
+  1.059335368555023E+020
+  1.056596680085964E+020
+  1.055011306651511E+020
+  1.054422071236261E+020
+  1.054379623239457E+020
+  1.054107937845455E+020
+  1.052497486378380E+020
+  1.048132470244608E+020
+  1.039357311477967E+020
+  1.024386092751191E+020
+  1.001456130658419E+020
+  9.690222446179246E+019
+  9.259805051791625E+019
+  8.718990428191582E+019
+  8.072202971440739E+019
+  7.333879194585416E+019
+  6.528490800121301E+019
+  5.688962283782537E+019
+  4.853445526951866E+019
+  4.060879705330714E+019
+  3.344831675914473E+019
+  2.724671006883851E+019
+  2.203806841196975E+019
+  1.775658084151393E+019
+  1.428989814274830E+019
+  1.151193361791251E+019
+  9.301009416098322E+018
+  7.548538800716065E+018
+  6.162076471260960E+018
+  5.065294176756374E+018
+  4.196467829044122E+018
+  3.506397186541351E+018
+  2.956255227092610E+018
+  2.515609652254206E+018
+  2.160713876602075E+018
+  1.873086807497331E+018
+  1.638362215822403E+018
+  1.445372541126723E+018
+  1.285428188888077E+018
+  1.151755557732401E+018
+  1.039061665525618E+018
+  9.431984987241976E+017
+  8.609052368492287E+017
+  7.896109558277481E+017
+  7.272841835076218E+017
+  6.723187778622159E+017
+  6.234481010589138E+017
+  5.796814998893341E+017
+  5.402588493630316E+017
+  5.046205922789236E+017
+  4.723925970619680E+017
+  4.433876439354351E+017
+  4.176289851114340E+017
+  3.954070087212573E+017
+  3.773887133113939E+017
+  3.648130224932031E+017
+  3.598248667346289E+017
+  3.660294887885918E+017
+  3.893870949756184E+017
+  4.396162426929949E+017
+  5.323268191307558E+017
+  6.921450247554957E+017
+  9.570913960485439E+017
+  1.384370450046678E+018
+  2.057434176663764E+018
+  3.093562307471284E+018
+  4.650113049258395E+018
+  6.925930334631513E+018
+  1.015219248940146E+019
+  1.456463912336740E+019
+  2.034761453609820E+019
+  2.755191494433303E+019
+  3.604133281545332E+019
+  4.550346195190656E+019
+  5.548835606888201E+019
+  6.547196038336562E+019
+  7.493409980381726E+019
+  8.343112789255265E+019
+  9.064735981025622E+019
+  9.641789992708724E+019
+  1.007242722864084E+020
+  1.036702008432685E+020
+  1.054469301340636E+020
+  1.062964020356758E+020
+  1.064779672217849E+020
+  1.062415333671862E+020
+  1.058079702122251E+020
+  1.053564217011161E+020
+  1.050177289974172E+020
+  1.048731087103004E+020
+  1.049572625741927E+020
+  1.052650528363141E+020
+  1.057607354110439E+020
+  1.063885728280069E+020
+  1.070835606106839E+020
+  1.077810797031980E+020
+  1.084245538249577E+020
+  1.089705887981407E+020
+  1.093914985780357E+020
+  1.096754839353349E+020
+  1.098249776302344E+020
+  1.098537997797156E+020
+  1.097837702292839E+020
+  1.096412874108851E+020
+  1.094541764902594E+020
+  1.092489965602527E+020
+  1.090489834938024E+020
+  1.088727024673197E+020
+  1.087333755590470E+020
+  3.082354586210780E+019
+  3.082336245231720E+019
+  3.082644894032114E+019
+  3.083326213638698E+019
+  3.084382554850742E+019
+  3.085757643152154E+019
+  3.087326039077286E+019
+  3.088889678058102E+019
+  3.090183183278994E+019
+  3.090889987174792E+019
+  3.090669724371327E+019
+  3.089195540461865E+019
+  3.086198683638488E+019
+  3.081516161944223E+019
+  3.075135457685858E+019
+  3.067228934463850E+019
+  3.058169981673597E+019
+  3.048523260167075E+019
+  3.039002864388853E+019
+  3.030395013099288E+019
+  3.023445988313315E+019
+  3.018721060176274E+019
+  3.016445347116920E+019
+  3.016342097351866E+019
+  3.017486956157346E+019
+  3.018197960553703E+019
+  3.015980356238218E+019
+  3.007543427962157E+019
+  2.988904097670654E+019
+  2.955589355429863E+019
+  2.902945860887323E+019
+  2.826558191326239E+019
+  2.722764305820946E+019
+  2.589235419787611E+019
+  2.425557581155030E+019
+  2.233718361899996E+019
+  2.018375498085024E+019
+  1.786782647155922E+019
+  1.548288226514547E+019
+  1.313412648576267E+019
+  1.092632744062813E+019
+  8.947453068174397E+018
+  7.245672946925541E+018
+  5.825738799796179E+018
+  4.665860827126188E+018
+  3.732421960799116E+018
+  2.988877647857847E+018
+  2.400571020289000E+018
+  1.936946033099575E+018
+  1.572236643645914E+018
+  1.285342306498767E+018
+  1.059324550652163E+018
+  8.807730745640438E+017
+  7.391724411728604E+017
+  6.263308677591011E+017
+  5.358936037193568E+017
+  4.629428974878655E+017
+  4.036768368706423E+017
+  3.551556655261386E+017
+  3.151036740538013E+017
+  2.817557554635246E+017
+  2.537392672479021E+017
+  2.299834819336626E+017
+  2.096504225136785E+017
+  1.920821899993070E+017
+  1.767609815810310E+017
+  1.632788827224909E+017
+  1.513152238064070E+017
+  1.406198617539884E+017
+  1.310012291497179E+017
+  1.223184481815836E+017
+  1.144773099355649E+017
+  1.074305729051896E+017
+  1.011839826437887E+017
+  9.581086841015888E+016
+  9.148043608522904E+016
+  8.850836594977624E+016
+  8.744356605825526E+016
+  8.921250893411933E+016
+  9.535296230747413E+016
+  1.083820988970282E+017
+  1.323587009850360E+017
+  1.737117302994358E+017
+  2.424097193226591E+017
+  3.535220225991708E+017
+  5.291490671613245E+017
+  8.005388642269880E+017
+  1.209919109973772E+018
+  1.811123744921672E+018
+  2.667483307939490E+018
+  3.844772763169508E+018
+  5.396527229503143E+018
+  7.341998877652546E+018
+  9.651146919296215E+018
+  1.224634001215176E+019
+  1.501143276492176E+019
+  1.780768208266678E+019
+  2.049405256616404E+019
+  2.294672868538325E+019
+  2.507352612300605E+019
+  2.682101532182509E+019
+  2.817447285848377E+019
+  2.915240666690033E+019
+  2.979803961809316E+019
+  3.016994223239223E+019
+  3.033336442183151E+019
+  3.035310011177033E+019
+  3.028815889344737E+019
+  3.018818887097248E+019
+  3.009145788674105E+019
+  3.002417454064970E+019
+  3.000093900143026E+019
+  3.002610991907828E+019
+  3.009584584893562E+019
+  3.020054165133812E+019
+  3.032735791296182E+019
+  3.046255627555199E+019
+  3.059341233483755E+019
+  3.070956881172494E+019
+  3.080379133283351E+019
+  3.087217486316548E+019
+  3.091390986754006E+019
+  3.093075244068062E+019
+  3.092634796821943E+019
+  3.090552715086130E+019
+  3.087364363951706E+019
+  3.083599737346712E+019
+  3.079738788855964E+019
+  3.076181537344084E+019
+  3.073231902580118E+019
+  3.060008419858451E+017
+  3.060071372689387E+017
+  3.060429943344173E+017
+  3.061116951259337E+017
+  3.062123705601965E+017
+  3.063386866021560E+017
+  3.064780433855664E+017
+  3.066115077988324E+017
+  3.067146314351240E+017
+  3.067593331069693E+017
+  3.067168621170674E+017
+  3.065616723089636E+017
+  3.062759062027591E+017
+  3.058540300767474E+017
+  3.053069863540462E+017
+  3.046651043631012E+017
+  3.039789680956233E+017
+  3.033174942669000E+017
+  3.027626466368500E+017
+  3.024005211230188E+017
+  3.023089723915148E+017
+  3.025424707106611E+017
+  3.031154012669188E+017
+  3.039854575284579E+017
+  3.050390586039303E+017
+  3.060807992908672E+017
+  3.068288373336385E+017
+  3.069179017836548E+017
+  3.059113484945108E+017
+  3.033234218601704E+017
+  2.986525179991206E+017
+  2.914255558769555E+017
+  2.812522368742014E+017
+  2.678857528500241E+017
+  2.512833844558391E+017
+  2.316568993307629E+017
+  2.094999009136108E+017
+  1.855791391879686E+017
+  1.608811034930492E+017
+  1.365145942124188E+017
+  1.135828825127630E+017
+  9.301239162884869E+016
+  7.531290627105901E+016
+  6.053989414944826E+016
+  4.847044424406036E+016
+  3.875691550846841E+016
+  3.102008274776952E+016
+  2.489967536411009E+016
+  2.007771604602540E+016
+  1.628589362172605E+016
+  1.330438781315465E+016
+  1.095669567109935E+016
+  9.103065239702236E+015
+  7.633914996006153E+015
+  6.463888555177868E+015
+  5.526784607007783E+015
+  4.771386300891545E+015
+  4.158111576602414E+015
+  3.656366657879761E+015
+  3.242479124553798E+015
+  2.898097002828874E+015
+  2.608956335259432E+015
+  2.363936711723192E+015
+  2.154340006670906E+015
+  1.973341232335292E+015
+  1.815571803125079E+015
+  1.676804744126910E+015
+  1.553718764479725E+015
+  1.443724069915580E+015
+  1.344837824890993E+015
+  1.255601920020882E+015
+  1.175040941775710E+015
+  1.102665034249790E+015
+  1.038532189957283E+015
+   983399601644240.     
+   939017206261252.     
+   908652786634476.     
+   897992453924162.     
+   916639089108566.     
+   980539317872636.     
+  1.115806748037043E+015
+  1.364562763701386E+015
+  1.793547416864911E+015
+  2.506276684809913E+015
+  3.659279914526536E+015
+  5.482183226933289E+015
+  8.299740434425727E+015
+  1.255091279874087E+016
+  1.879540187348699E+016
+  2.769168098132098E+016
+  3.992352264485558E+016
+  5.604698725297920E+016
+  7.626065590014830E+016
+  1.002487131514287E+017
+  1.271977695697584E+017
+  1.558907745578615E+017
+  1.848726837364552E+017
+  2.126624595491300E+017
+  2.379573899120193E+017
+  2.597846436151848E+017
+  2.775769885530909E+017
+  2.911736115270600E+017
+  3.007640602486158E+017
+  3.068000897743321E+017
+  3.098982551543756E+017
+  3.107494460193354E+017
+  3.100440944660594E+017
+  3.084159408251967E+017
+  3.064037975037860E+017
+  3.044293361699478E+017
+  3.027886836449655E+017
+  3.016557358476386E+017
+  3.010950877508972E+017
+  3.010821946506616E+017
+  3.015279678760117E+017
+  3.023047344897542E+017
+  3.032705902136954E+017
+  3.042897299075635E+017
+  3.052472421205171E+017
+  3.060578667924056E+017
+  3.066691057260607E+017
+  3.070597259279058E+017
+  3.072350844652844E+017
+  3.072207841146681E+017
+  3.070558771792926E+017
+  3.067863433312220E+017
+  3.064593138291374E+017
+  3.061185137208248E+017
+  3.058011256165430E+017
+  3.055359902655485E+017
+  2.495943901624798E+020
+  2.496329556629645E+020
+  2.496661743291229E+020
+  2.496885400901548E+020
+  2.496936517325773E+020
+  2.496742277353475E+020
+  2.496223041418286E+020
+  2.495296322885633E+020
+  2.493882508132993E+020
+  2.491912656338315E+020
+  2.489337943251804E+020
+  2.486139533405449E+020
+  2.482337484675198E+020
+  2.477996958090968E+020
+  2.473229531463623E+020
+  2.468187216939216E+020
+  2.463046990113596E+020
+  2.457984204453071E+020
+  2.453134203424376E+020
+  2.448542796970635E+020
+  2.444107976354840E+020
+  2.439517091411983E+020
+  2.434185410395384E+020
+  2.427203243193341E+020
+  2.417299460927953E+020
+  2.402829290432367E+020
+  2.381793884122063E+020
+  2.351898634116260E+020
+  2.310656647041316E+020
+  2.255542915644322E+020
+  2.184202546112061E+020
+  2.094711385740805E+020
+  1.985877982281478E+020
+  1.857561318544960E+020
+  1.710960427739346E+020
+  1.548813916909184E+020
+  1.375437308218167E+020
+  1.196534244623036E+020
+  1.018752245548911E+020
+  8.490142915093532E+019
+  6.937309336435617E+019
+  5.578227354927557E+019
+  4.434190147371721E+019
+  3.498498251814795E+019
+  2.748685652175263E+019
+  2.156444241978161E+019
+  1.693313399780771E+019
+  1.333522730627416E+019
+  1.055099157118362E+019
+  8.400105368353903E+018
+  6.738346178299787E+018
+  5.452399147120582E+018
+  4.454335345495626E+018
+  3.676512207940805E+018
+  3.067195757300029E+018
+  2.586964242010814E+018
+  2.205837321750332E+018
+  1.901028788905544E+018
+  1.655211185564935E+018
+  1.455188537615744E+018
+  1.290888157352351E+018
+  1.154598545539007E+018
+  1.040395312732797E+018
+  9.437098021838003E+017
+  8.610055745647465E+017
+  7.895362837160392E+017
+  7.271650338231677E+017
+  6.722304052905527E+017
+  6.234483284629234E+017
+  5.798422450236390E+017
+  5.406969295555715E+017
+  5.055344196496553E+017
+  4.741143315129537E+017
+  4.464662765703222E+017
+  4.229704007900940E+017
+  4.045150853220398E+017
+  3.927811856976033E+017
+  3.907333296457226E+017
+  4.034449510873077E+017
+  4.394491290845281E+017
+  5.128942467083423E+017
+  6.468883210333596E+017
+  8.785212841036137E+017
+  1.266116934457082E+018
+  1.899197571987257E+018
+  2.911289890046026E+018
+  4.494822632463345E+018
+  6.915652062893029E+018
+  1.052188192447769E+019
+  1.573747333976954E+019
+  2.302602988240667E+019
+  3.280551579416709E+019
+  4.531059572815239E+019
+  6.048652816447853E+019
+  7.797775821268176E+019
+  9.716021269731095E+019
+  1.172193355093760E+020
+  1.372640807696926E+020
+  1.564475773378616E+020
+  1.740669281170626E+020
+  1.896249219228622E+020
+  2.028496527726910E+020
+  2.136788057760754E+020
+  2.222209577213517E+020
+  2.287067696556121E+020
+  2.334402061316277E+020
+  2.367560154741749E+020
+  2.389862088086804E+020
+  2.404359042126120E+020
+  2.413676847256091E+020
+  2.419932146972762E+020
+  2.424708531595932E+020
+  2.429080821064025E+020
+  2.433675806326159E+020
+  2.438757177358632E+020
+  2.444321899574811E+020
+  2.450195919596127E+020
+  2.456119250698298E+020
+  2.461813865180522E+020
+  2.467031493543084E+020
+  2.471581591287898E+020
+  2.475342209466815E+020
+  2.478258426704596E+020
+  2.480333854706097E+020
+  2.481619535267152E+020
+  2.482202091225303E+020
+  2.482192269838318E+020
+  2.481715915905439E+020
+  2.480907849748031E+020
+  2.479907326976169E+020
+  3.306821908862334E+019
+  3.307362328078822E+019
+  3.307776548453148E+019
+  3.307979382777282E+019
+  3.307879075144402E+019
+  3.307378860365210E+019
+  3.306380082292524E+019
+  3.304786751269189E+019
+  3.302510937868756E+019
+  3.299479322041598E+019
+  3.295640375614595E+019
+  3.290970847684730E+019
+  3.285480232433397E+019
+  3.279211707472944E+019
+  3.272237616955641E+019
+  3.264647455218233E+019
+  3.256526613001422E+019
+  3.247924774652700E+019
+  3.238813789814809E+019
+  3.229036139532195E+019
+  3.218246726080054E+019
+  3.205852439002809E+019
+  3.190955512453877E+019
+  3.172307850667789E+019
+  3.148284139117800E+019
+  3.116881724092158E+019
+  3.075755127081435E+019
+  3.022292883763386E+019
+  2.953744158865605E+019
+  2.867401744583569E+019
+  2.760845320383233E+019
+  2.632242406059264E+019
+  2.480692613414470E+019
+  2.306583170587613E+019
+  2.111902179024336E+019
+  1.900435938905032E+019
+  1.677767192129782E+019
+  1.451004077814809E+019
+  1.228213646442907E+019
+  1.017606699154792E+019
+  8.266056153324506E+018
+  6.607136763908107E+018
+  5.220319730927499E+018
+  4.093356444499924E+018
+  3.195844188952254E+018
+  2.491215573962050E+018
+  1.943478119717479E+018
+  1.520476921758167E+018
+  1.195070195759727E+018
+  9.451691501937638E+017
+  7.532362163773263E+017
+  6.055845392115995E+017
+  4.916604127939839E+017
+  4.033939005565044E+017
+  3.346489534322532E+017
+  2.807763951236702E+017
+  2.382601819675646E+017
+  2.044425931489396E+017
+  1.773134767461036E+017
+  1.553500883299238E+017
+  1.373961631268564E+017
+  1.225710283835273E+017
+  1.102015112240724E+017
+  9.977103735271195E+016
+  9.088164404483069E+016
+  8.322567980484664E+016
+  7.656477768119933E+016
+  7.071431678198220E+016
+  6.553207396598278E+016
+  6.091016178780681E+016
+  5.676969841911198E+016
+  5.305801629523228E+016
+  4.974865996341204E+016
+  4.684504993039095E+016
+  4.438964499884340E+016
+  4.248193698499502E+016
+  4.131096844366207E+016
+  4.121169535405124E+016
+  4.275994201487610E+016
+  4.692846062593551E+016
+  5.533707660980995E+016
+  7.064278913777983E+016
+  9.712918393690291E+016
+  1.415637373942227E+017
+  2.143863991195972E+017
+  3.312550161927220E+017
+  5.148740165565633E+017
+  7.968334877766732E+017
+  1.218844800893906E+018
+  1.832252274833236E+018
+  2.694062041041784E+018
+  3.857118652133917E+018
+  5.353845498290460E+018
+  7.183263103796439E+018
+  9.308850410978544E+018
+  1.166145530424705E+019
+  1.414768747713248E+019
+  1.666284588061203E+019
+  1.910504312780143E+019
+  2.138726491922466E+019
+  2.344521335095079E+019
+  2.524029709467345E+019
+  2.675841833968679E+019
+  2.800592070127636E+019
+  2.900418682002096E+019
+  2.978409733314657E+019
+  3.038112486299789E+019
+  3.083142469837475E+019
+  3.116899185410925E+019
+  3.142379491265222E+019
+  3.162073716617546E+019
+  3.177928952325857E+019
+  3.191365066540701E+019
+  3.203329815820647E+019
+  3.214379585026544E+019
+  3.224772453717709E+019
+  3.234561375514393E+019
+  3.243677728620186E+019
+  3.251998980249136E+019
+  3.259397762648748E+019
+  3.265772546242046E+019
+  3.271062365097197E+019
+  3.275250026334379E+019
+  3.278359243303480E+019
+  3.280449763298128E+019
+  3.281611680265429E+019
+  3.281959522372334E+019
+  3.281628156227068E+019
+  3.280770673838183E+019
+  3.279556221197171E+019
+  1.560072939360022E+020
+  1.560220496147506E+020
+  1.560421672694519E+020
+  1.560665761308734E+020
+  1.560928975823159E+020
+  1.561171440384625E+020
+  1.561336098650461E+020
+  1.561350138119844E+020
+  1.561129212525236E+020
+  1.560584993110381E+020
+  1.559635915056175E+020
+  1.558220263432926E+020
+  1.556310352195516E+020
+  1.553926043790010E+020
+  1.551145270877242E+020
+  1.548108854776827E+020
+  1.545016893946405E+020
+  1.542114340826422E+020
+  1.539664152133388E+020
+  1.537907641356452E+020
+  1.537013336066971E+020
+  1.537017557788938E+020
+  1.537761804996905E+020
+  1.538833512232825E+020
+  1.539517632662387E+020
+  1.538766657403755E+020
+  1.535196253676173E+020
+  1.527112940445990E+020
+  1.512579375568935E+020
+  1.489521876739901E+020
+  1.455883199636445E+020
+  1.409820265099286E+020
+  1.349940153271938E+020
+  1.275557385671914E+020
+  1.186941679044163E+020
+  1.085510535684909E+020
+  9.739107416907637E+019
+  8.559351027807951E+019
+  7.362428787869232E+019
+  6.198957845099319E+019
+  5.117779714875752E+019
+  4.158444546453678E+019
+  3.340914992201454E+019
+  2.664570690346752E+019
+  2.116609975919003E+019
+  1.679151990948204E+019
+  1.333441248639449E+019
+  1.062053310659894E+019
+  8.498495723449405E+018
+  6.842148890943010E+018
+  5.549239919241637E+018
+  4.538448056599859E+018
+  3.745950419356314E+018
+  3.122115439616282E+018
+  2.628586964776886E+018
+  2.235840346676225E+018
+  1.921199475860719E+018
+  1.667262481306833E+018
+  1.460670543232217E+018
+  1.291155195861641E+018
+  1.150806704489166E+018
+  1.033515298678427E+018
+  9.345461315838276E+017
+  8.502169325398100E+017
+  7.776541559066738E+017
+  7.146090116348577E+017
+  6.593192206335945E+017
+  6.104058559445865E+017
+  5.667974294525516E+017
+  5.276757145022618E+017
+  4.924399459275887E+017
+  4.606883620279264E+017
+  4.322190122969144E+017
+  4.070560080783238E+017
+  3.855139031299063E+017
+  3.683230525575013E+017
+  3.568545526274274E+017
+  3.535072255724006E+017
+  3.623539806951882E+017
+  3.901933681848426E+017
+  4.482149670566108E+017
+  5.545599847903550E+017
+  7.381256649325802E+017
+  1.043988086323771E+018
+  1.540733944509094E+018
+  2.329682174281174E+018
+  3.555269990253025E+018
+  5.414562657396132E+018
+  8.161728094166371E+018
+  1.210035871560185E+019
+  1.755308938527802E+019
+  2.479520027898522E+019
+  3.395186517880291E+019
+  4.492409607118801E+019
+  5.738935516206601E+019
+  7.083588166748776E+019
+  8.463003244370344E+019
+  9.810700791381313E+019
+  1.106617818246643E+020
+  1.218198859170715E+020
+  1.312766216167558E+020
+  1.389036403763730E+020
+  1.447296516466470E+020
+  1.489055410472050E+020
+  1.516638588514661E+020
+  1.532800633444666E+020
+  1.540397464815683E+020
+  1.542134549869776E+020
+  1.540390816041764E+020
+  1.537110527992064E+020
+  1.533753527814801E+020
+  1.531294578049918E+020
+  1.530262799634190E+020
+  1.530811518992807E+020
+  1.532807572302181E+020
+  1.535928215073343E+020
+  1.539754173155352E+020
+  1.543849420377910E+020
+  1.547821605985706E+020
+  1.551360794298801E+020
+  1.554257468616681E+020
+  1.556403226914907E+020
+  1.557779234782157E+020
+  1.558438013291007E+020
+  1.558483043878396E+020
+  1.558048654021771E+020
+  1.557281774091745E+020
+  1.556327441902804E+020
+  1.555318757393825E+020
+  1.554370677397726E+020
+  7.319790447871740E+019
+  7.320333615951886E+019
+  7.321218279997971E+019
+  7.322423466882955E+019
+  7.323859955601504E+019
+  7.325351912429866E+019
+  7.326627730721221E+019
+  7.327323318263415E+019
+  7.326999644115245E+019
+  7.325177495317744E+019
+  7.321389200363306E+019
+  7.315243567692158E+019
+  7.306498283975762E+019
+  7.295131429663786E+019
+  7.281400770109148E+019
+  7.265877488967107E+019
+  7.249440665666746E+019
+  7.233220194513341E+019
+  7.218479306489199E+019
+  7.206433695996792E+019
+  7.198012295332666E+019
+  7.193574106111594E+019
+  7.192604781427734E+019
+  7.193424285710525E+019
+  7.192941666844384E+019
+  7.186494215416535E+019
+  7.167806492216777E+019
+  7.129101098117834E+019
+  7.061388872209954E+019
+  6.954961434895926E+019
+  6.800101249739608E+019
+  6.588008662635587E+019
+  6.311915518409379E+019
+  5.968306638424970E+019
+  5.558105158301645E+019
+  5.087607165539969E+019
+  4.568900962313079E+019
+  4.019514538999328E+019
+  3.461136627443274E+019
+  2.917459740741250E+019
+  2.411460719003880E+019
+  1.961852863872764E+019
+  1.578201756645905E+019
+  1.260404190114652E+019
+  1.002607992320390E+019
+  7.965401843126010E+018
+  6.334830477196560E+018
+  5.053152786652650E+018
+  4.049667026467277E+018
+  3.265357925764216E+018
+  2.652318791885441E+018
+  2.172396666143858E+018
+  1.795607984535285E+018
+  1.498605816570322E+018
+  1.263324131792085E+018
+  1.075838972981955E+018
+  9.254427219121544E+017
+  8.039079608272913E+017
+  7.049109217036771E+017
+  6.235847294077912E+017
+  5.561758608528948E+017
+  4.997814372573042E+017
+  4.521491450974015E+017
+  4.115253211652232E+017
+  3.765399046931955E+017
+  3.461195530460565E+017
+  3.194222929131475E+017
+  2.957887198999996E+017
+  2.747060673823423E+017
+  2.557825574005803E+017
+  2.387304577576867E+017
+  2.233573661793708E+017
+  2.095666441081271E+017
+  1.973699409411331E+017
+  1.869178397704013E+017
+  1.785594773833758E+017
+  1.729494594911689E+017
+  1.712316879140992E+017
+  1.753461914326443E+017
+  1.885279051283522E+017
+  2.160958529836095E+017
+  2.666651645980043E+017
+  3.539453744112999E+017
+  4.992994871886805E+017
+  7.351967723937347E+017
+  1.109543604708216E+018
+  1.690540815035130E+018
+  2.571094091545905E+018
+  3.870807091022383E+018
+  5.732201401770650E+018
+  8.306210608379744E+018
+  1.172073249759764E+019
+  1.603220192391300E+019
+  2.119101037457134E+019
+  2.704237474527573E+019
+  3.334313634297969E+019
+  3.979401789400229E+019
+  4.608266235351750E+019
+  5.192645538494407E+019
+  5.710556777433386E+019
+  6.148093389360520E+019
+  6.499679615651804E+019
+  6.767111034245233E+019
+  6.957872272140526E+019
+  7.083203189662489E+019
+  7.156260255977691E+019
+  7.190569696104576E+019
+  7.198845859339843E+019
+  7.192171796683248E+019
+  7.179504525439646E+019
+  7.167459051976555E+019
+  7.160326738193145E+019
+  7.160284362675663E+019
+  7.167746532662209E+019
+  7.181807821369537E+019
+  7.200716808914277E+019
+  7.222326474103869E+019
+  7.244475781263962E+019
+  7.265273892159387E+019
+  7.283276824985830E+019
+  7.297562417477131E+019
+  7.307721343502928E+019
+  7.313789585800029E+019
+  7.316149905275980E+019
+  7.315424318677651E+019
+  7.312369744615742E+019
+  7.307784603693735E+019
+  7.302435346326095E+019
+  7.297006274886957E+019
+  7.292069767850199E+019
+  2.858601331148794E+019
+  2.858175690855198E+019
+  2.858302562816763E+019
+  2.859105714690727E+019
+  2.860649720777732E+019
+  2.862914105756469E+019
+  2.865772483793714E+019
+  2.868980128209385E+019
+  2.872172897129010E+019
+  2.874880668814574E+019
+  2.876556758668037E+019
+  2.876622753095016E+019
+  2.874526522790875E+019
+  2.869809098766166E+019
+  2.862173730654235E+019
+  2.851548439620276E+019
+  2.838132106075671E+019
+  2.822413833056225E+019
+  2.805156339106820E+019
+  2.787336796727893E+019
+  2.770042919299067E+019
+  2.754327865770375E+019
+  2.741033918990217E+019
+  2.730600871706267E+019
+  2.722879581378768E+019
+  2.716973492645790E+019
+  2.711130911559092E+019
+  2.702708924327642E+019
+  2.688226926327087E+019
+  2.663524368684757E+019
+  2.624033195334533E+019
+  2.565168819552190E+019
+  2.482831564487472E+019
+  2.373990478232297E+019
+  2.237292418807783E+019
+  2.073604691439931E+019
+  1.886369529552728E+019
+  1.681640627845921E+019
+  1.467704425204223E+019
+  1.254270828839608E+019
+  1.051338816928640E+019
+  8.676023997395005E+018
+  7.081468990599053E+018
+  5.739577394829112E+018
+  4.634377813283920E+018
+  3.737737662285838E+018
+  3.017795236148228E+018
+  2.443650438008589E+018
+  1.987631425286415E+018
+  1.626113078802334E+018
+  1.339540451912053E+018
+  1.112063619357836E+018
+  9.310208565997798E+017
+  7.863987505279840E+017
+  6.703325663924097E+017
+  5.766728615449798E+017
+  5.006241349989186E+017
+  4.384512350049394E+017
+  3.872449846782556E+017
+  3.447373781920562E+017
+  3.091571554107230E+017
+  2.791176740787700E+017
+  2.535302911698780E+017
+  2.315377151081714E+017
+  2.124629053369443E+017
+  1.957700446817309E+017
+  1.810348931097377E+017
+  1.679224667380491E+017
+  1.561705050701242E+017
+  1.455776365364785E+017
+  1.359955841980779E+017
+  1.273252435311906E+017
+  1.195171128411643E+017
+  1.125775074670945E+017
+  1.065834503092137E+017
+  1.017114010428284E+017
+  9.828846672528411E+016
+  9.687992337700826E+016
+  9.843429362610434E+016
+  1.045172356437329E+017
+  1.176779212842965E+017
+  1.420049444615094E+017
+  1.839390892374050E+017
+  2.534090812248109E+017
+  3.653285908064049E+017
+  5.414142417184026E+017
+  8.121221351024804E+017
+  1.218217289418447E+018
+  1.811060109717469E+018
+  2.650130829227696E+018
+  3.795720026825999E+018
+  5.294350750959718E+018
+  7.157530591176204E+018
+  9.348160242834938E+018
+  1.178375304370483E+019
+  1.434687605799168E+019
+  1.690191216431004E+019
+  1.931540370582768E+019
+  2.147478347790853E+019
+  2.330141177873879E+019
+  2.475608740409875E+019
+  2.583749307367726E+019
+  2.657555536502774E+019
+  2.702219394184366E+019
+  2.724162315742740E+019
+  2.730166463111503E+019
+  2.726680241026781E+019
+  2.719317488441299E+019
+  2.712540019369778E+019
+  2.709502089838291E+019
+  2.712033958566651E+019
+  2.720742324901242E+019
+  2.735203940193527E+019
+  2.754224636037466E+019
+  2.776131464984936E+019
+  2.799063549441497E+019
+  2.821229792758106E+019
+  2.841109222522366E+019
+  2.857580798764100E+019
+  2.869981206102510E+019
+  2.878098866536084E+019
+  2.882118927195317E+019
+  2.882537219065751E+019
+  2.880060989140878E+019
+  2.875510301337025E+019
+  2.869728323796477E+019
+  2.863505586848853E+019
+  2.857522859300944E+019
+  2.852314546658920E+019
+  2.848251608468213E+019
+  1.516002324590381E+022
+  1.516245495174082E+022
+  1.516442571465984E+022
+  1.516556943829496E+022
+  1.516547832577200E+022
+  1.516370744334970E+022
+  1.515978848004554E+022
+  1.515325289819346E+022
+  1.514366227153097E+022
+  1.513064750806721E+022
+  1.511395436629335E+022
+  1.509348845137458E+022
+  1.506935235528498E+022
+  1.504186616496552E+022
+  1.501156018806858E+022
+  1.497912790055105E+022
+  1.494532849316891E+022
+  1.491083159792920E+022
+  1.487600182375968E+022
+  1.484062786793769E+022
+  1.480360988556530E+022
+  1.476262838661066E+022
+  1.471382665093033E+022
+  1.465154509790179E+022
+  1.456814942470300E+022
+  1.445399475887314E+022
+  1.429756657669159E+022
+  1.408583706397764E+022
+  1.380487335105259E+022
+  1.344072945717625E+022
+  1.298064092874040E+022
+  1.241451113908557E+022
+  1.173662243809609E+022
+  1.094742075749326E+022
+  1.005511703910494E+022
+  9.076747592906321E+021
+  8.038282906405320E+021
+  6.973428968510361E+021
+  5.920971882949282E+021
+  4.920868601902485E+021
+  4.009705194433956E+021
+  3.215122352231840E+021
+  2.548447096078960E+021
+  2.004842720495808E+021
+  1.570499426864366E+021
+  1.228409507068941E+021
+  9.616480211099572E+020
+  7.549883226905208E+020
+  5.955097370257090E+020
+  4.726509380859635E+020
+  3.779942762181453E+020
+  3.049470860071722E+020
+  2.484089300276360E+020
+  2.044672969077548E+020
+  1.701380870404929E+020
+  1.431534893627656E+020
+  1.217933548871876E+020
+  1.047536729411036E+020
+  9.104533883031169E+019
+  7.991696358244491E+019
+  7.079640718500082E+019
+  6.324670305267747E+019
+  5.693294194467962E+019
+  5.159744858178024E+019
+  4.704120812838427E+019
+  4.310999535013452E+019
+  3.968404608124760E+019
+  3.667040993302304E+019
+  3.399735665975780E+019
+  3.161039838896200E+019
+  2.946965950987283E+019
+  2.754850256348143E+019
+  2.583353691305946E+019
+  2.432644632933290E+019
+  2.304854388520394E+019
+  2.204970349532050E+019
+  2.142447763742117E+019
+  2.133999253960235E+019
+  2.208286286731919E+019
+  2.413614154072982E+019
+  2.830237094322377E+019
+  3.589495286795044E+019
+  4.902636151329641E+019
+  7.102574279744641E+019
+  1.070151598262246E+020
+  1.646542681823164E+020
+  2.550137039608021E+020
+  3.934395057307020E+020
+  6.001052255137053E+020
+  8.997050407923854E+020
+  1.319439026497999E+021
+  1.884160710201565E+021
+  2.608452027943805E+021
+  3.490411190814245E+021
+  4.510813126823522E+021
+  5.634760524743588E+021
+  6.815987287854836E+021
+  8.003298994322393E+021
+  9.147492161556390E+021
+  1.020716451033082E+022
+  1.115239743164450E+022
+  1.196604203265140E+022
+  1.264296355539428E+022
+  1.318793333104886E+022
+  1.361290225277008E+022
+  1.393424265946871E+022
+  1.417032615988429E+022
+  1.433960383392333E+022
+  1.445921599504113E+022
+  1.454408508558732E+022
+  1.460641928219534E+022
+  1.465555289187346E+022
+  1.469805461090239E+022
+  1.473803701179015E+022
+  1.477759918444212E+022
+  1.481733332961182E+022
+  1.485683037827675E+022
+  1.489513188349626E+022
+  1.493109363133613E+022
+  1.496364571710908E+022
+  1.499195008206757E+022
+  1.501546928118545E+022
+  1.503397069545675E+022
+  1.504749538716574E+022
+  1.505631407696589E+022
+  1.506087865721237E+022
+  1.506177407758906E+022
+  1.505968153042497E+022
+  1.505535482405084E+022
+  1.504960127658545E+022
+  2.286950487369833E+026
+  2.287146562064908E+026
+  2.287423632702262E+026
+  2.287768088403593E+026
+  2.288147166318023E+026
+  2.288504175303277E+026
+  2.288756408472944E+026
+  2.288796617892010E+026
+  2.288498479172252E+026
+  2.287726866397416E+026
+  2.286352813128978E+026
+  2.284271992872835E+026
+  2.281424997346877E+026
+  2.277816969064810E+026
+  2.273533291317435E+026
+  2.268747485480322E+026
+  2.263717399929165E+026
+  2.258766227114005E+026
+  2.254245935781542E+026
+  2.250482439252312E+026
+  2.247704181804728E+026
+  2.245958553942102E+026
+  2.245023230626706E+026
+  2.244321710896034E+026
+  2.242853663314443E+026
+  2.239151009179512E+026
+  2.231270147022527E+026
+  2.216829698643442E+026
+  2.193101980364444E+026
+  2.157165026267946E+026
+  2.106119642201901E+026
+  2.037371113810940E+026
+  1.948965978672598E+026
+  1.839959462087470E+026
+  1.710769330761445E+026
+  1.563450716536901E+026
+  1.401811801271033E+026
+  1.231293607827225E+026
+  1.058568947458208E+026
+  8.908777936488208E+025
+  7.351972989858976E+025
+  5.971663075350239E+025
+  4.796113195134345E+025
+  3.824082470142431E+025
+  3.036913143908468E+025
+  2.408728721699049E+025
+  1.912459700508564E+025
+  1.522996008001188E+025
+  1.218544359090178E+025
+  9.809584472973165E+024
+  7.955389099284912E+024
+  6.506015231338018E+024
+  5.369801909099972E+024
+  4.475496197140787E+024
+  3.768050419246367E+024
+  3.205103505606412E+024
+  2.754128336668891E+024
+  2.390168470281233E+024
+  2.094069099342921E+024
+  1.851108784654708E+024
+  1.649949104121530E+024
+  1.481832730106854E+024
+  1.339973602018219E+024
+  1.219094553934271E+024
+  1.115077612664626E+024
+  1.024700220908660E+024
+  9.454370539173218E+023
+  8.753121560691052E+023
+  8.127901451315883E+023
+  7.566985786443372E+023
+  7.061766639347850E+023
+  6.606488255563716E+023
+  6.198258880033885E+023
+  5.837427315357631E+023
+  5.528506159263461E+023
+  5.281969436447085E+023
+  5.117478373371468E+023
+  5.069431498992643E+023
+  5.196235773386102E+023
+  5.595391729293024E+023
+  6.427388369383217E+023
+  7.952449834840276E+023
+  1.058514516683989E+024
+  1.497225358780136E+024
+  2.209808545695067E+024
+  3.341703301546718E+024
+  5.100301248288983E+024
+  7.768660443124287E+024
+  1.171203015349671E+025
+  1.736697589602741E+025
+  2.519795044112700E+025
+  3.560216094789193E+025
+  4.876215354815173E+025
+  6.453941167507518E+025
+  8.247498204166929E+025
+  1.018383675200990E+026
+  1.217237394359325E+026
+  1.411797418571846E+026
+  1.593396941104765E+026
+  1.755230275957997E+026
+  1.892915535203848E+026
+  2.004590079878534E+026
+  2.090635274969087E+026
+  2.153177705417983E+026
+  2.195509551481722E+026
+  2.221534052767477E+026
+  2.235296822466673E+026
+  2.240626301068385E+026
+  2.240883079047462E+026
+  2.238806973142207E+026
+  2.236447947377911E+026
+  2.235167366680466E+026
+  2.235696392706523E+026
+  2.238237381999441E+026
+  2.242592411807728E+026
+  2.248301887390369E+026
+  2.254776866910915E+026
+  2.261411779603392E+026
+  2.267669054867016E+026
+  2.273132549680010E+026
+  2.277531352785797E+026
+  2.280739048637017E+026
+  2.282755810480310E+026
+  2.283681348427891E+026
+  2.283685099851243E+026
+  2.282977135993821E+026
+  2.281782023096396E+026
+  2.280318282072421E+026
+  2.278784375097842E+026
+  2.277350265204211E+026
+  9.890266256501308E+021
+  9.889723070990625E+021
+  9.890565645124906E+021
+  9.893044388545463E+021
+  9.897243374912780E+021
+  9.903016941396821E+021
+  9.909943434865587E+021
+  9.917305403853406E+021
+  9.924103507726138E+021
+  9.929112218832741E+021
+  9.930979822443638E+021
+  9.928368682338213E+021
+  9.920126755776697E+021
+  9.905475235970393E+021
+  9.884190381431692E+021
+  9.856752230856537E+021
+  9.824430197658809E+021
+  9.789276121184011E+021
+  9.754000123286981E+021
+  9.721714416818858E+021
+  9.695544988474611E+021
+  9.678129454791541E+021
+  9.671038786467877E+021
+  9.674177789273905E+021
+  9.685231208110194E+021
+  9.699227252674431E+021
+  9.708288301952414E+021
+  9.701631502029337E+021
+  9.665872695847255E+021
+  9.585677081705183E+021
+  9.444787065848829E+021
+  9.227435149877408E+021
+  8.920107315131645E+021
+  8.513551195961318E+021
+  8.004821844671853E+021
+  7.399040094704168E+021
+  6.710441781713617E+021
+  5.962280699352328E+021
+  5.185276344894087E+021
+  4.414594473291962E+021
+  3.685769919466395E+021
+  3.029126991975742E+021
+  2.461857073547329E+021
+  1.986563613381190E+021
+  1.596793079688967E+021
+  1.281933974566565E+021
+  1.030212110681639E+021
+  8.303354263566921E+020
+  6.722705419569434E+020
+  5.475053490212095E+020
+  4.490330864154699E+020
+  3.712033195956207E+020
+  3.095238127858722E+020
+  2.604582811240130E+020
+  2.212416789340914E+020
+  1.897214611508286E+020
+  1.642262007729402E+020
+  1.434595113045503E+020
+  1.264158407700790E+020
+  1.123144195351848E+020
+  1.005478909151517E+020
+  9.064261228902777E+019
+  8.222812054105909E+019
+  7.501373326422214E+019
+  6.877067633258785E+019
+  6.331848104121301E+019
+  5.851468227547261E+019
+  5.424708119402012E+019
+  5.042802407915555E+019
+  4.699030947601661E+019
+  4.388448861852421E+019
+  4.107749507150711E+019
+  3.855276317506644E+019
+  3.631232072423381E+019
+  3.438184146754971E+019
+  3.282042078624455E+019
+  3.173803406136483E+019
+  3.132542793008014E+019
+  3.190377057440299E+019
+  3.400489413100586E+019
+  3.849736959210551E+019
+  4.677850147238008E+019
+  6.105628971574004E+019
+  8.474562818869776E+019
+  1.229942664205618E+020
+  1.833279317163849E+020
+  2.763486592289745E+020
+  4.163221034747838E+020
+  6.213378354570828E+020
+  9.125242997607275E+020
+  1.311580949747239E+021
+  1.835743546870164E+021
+  2.490328056670419E+021
+  3.263785682480923E+021
+  4.128514361375002E+021
+  5.044188235137595E+021
+  5.963367022544239E+021
+  6.838497822333088E+021
+  7.628524124823772E+021
+  8.303652342102936E+021
+  8.847574592009680E+021
+  9.257237485801932E+021
+  9.540791713899901E+021
+  9.714556005516323E+021
+  9.799745002756687E+021
+  9.819480494134146E+021
+  9.796357252029578E+021
+  9.750645437588451E+021
+  9.699103164727290E+021
+  9.654330201543740E+021
+  9.624587478331017E+021
+  9.614010422317657E+021
+  9.623141668907699E+021
+  9.649697226055655E+021
+  9.689465497617120E+021
+  9.737230167758661E+021
+  9.787613538424453E+021
+  9.835758642705245E+021
+  9.877801895027158E+021
+  9.911124528167077E+021
+  9.934402364259829E+021
+  9.947495483837616E+021
+  9.951231532217347E+021
+  9.947137639045910E+021
+  9.937164642952369E+021
+  9.923429653168790E+021
+  9.907993521942813E+021
+  9.892689080883152E+021
+  9.879006907021115E+021
+  9.868035635468162E+021
+  1.493546448514060E+022
+  1.493501968988508E+022
+  1.493645502436411E+022
+  1.494007552519664E+022
+  1.494595150296243E+022
+  1.495383315116841E+022
+  1.496309035493790E+022
+  1.497269057114602E+022
+  1.498122449209037E+022
+  1.498699053238542E+022
+  1.498814103883460E+022
+  1.498288361119741E+022
+  1.496972388521553E+022
+  1.494772752391064E+022
+  1.491676954951965E+022
+  1.487773174298426E+022
+  1.483260538059590E+022
+  1.478445792528586E+022
+  1.473722968070912E+022
+  1.469534098989167E+022
+  1.466311216216424E+022
+  1.464402486742800E+022
+  1.463988147046484E+022
+  1.464994305795944E+022
+  1.467014349523838E+022
+  1.469248326741877E+022
+  1.470470340728569E+022
+  1.469032946738537E+022
+  1.462916223497498E+022
+  1.449827759651092E+022
+  1.427357910715117E+022
+  1.393191301370860E+022
+  1.345369173853146E+022
+  1.282586508620448E+022
+  1.204492716944763E+022
+  1.111947305729614E+022
+  1.007167873032827E+022
+  8.937060749236619E+021
+  7.762069286779543E+021
+  6.599514776964697E+021
+  5.502455444020856E+021
+  4.515891046471252E+021
+  3.665023371425304E+021
+  2.953217452209766E+021
+  2.370355637711125E+021
+  1.900194039008910E+021
+  1.524843415799868E+021
+  1.227217079955501E+021
+  9.921758906026263E+020
+  8.069048428515957E+020
+  6.608754101919943E+020
+  5.456116952098887E+020
+  4.543858645549884E+020
+  3.819097251228751E+020
+  3.240543390333821E+020
+  2.776098413415150E+020
+  2.400871505593619E+020
+  2.095582098154103E+020
+  1.845294042513300E+020
+  1.638424361874762E+020
+  1.465973554878210E+020
+  1.320931633012428E+020
+  1.197821893949584E+020
+  1.092351754792850E+020
+  1.001146362562392E+020
+  9.215460564524066E+019
+  8.514531223932599E+019
+  7.892167849545363E+019
+  7.335482160715719E+019
+  6.834597496178346E+019
+  6.382247774764048E+019
+  5.973573490455272E+019
+  5.606138173651347E+019
+  5.280237056294392E+019
+  4.999643788973618E+019
+  4.773056347378989E+019
+  4.616680735173023E+019
+  4.558657148960040E+019
+  4.646416738053528E+019
+  4.958580520672441E+019
+  5.623672349954035E+019
+  6.848648849901705E+019
+  8.960856803534499E+019
+  1.246709174481004E+020
+  1.813217484102622E+020
+  2.707563202963967E+020
+  4.087687373452699E+020
+  6.166465949984659E+020
+  9.214394967239840E+020
+  1.354828335186849E+021
+  1.949489845366960E+021
+  2.731622704604238E+021
+  3.709821638392575E+021
+  4.867619654896456E+021
+  6.164557642050449E+021
+  7.540999787562165E+021
+  8.926373901879016E+021
+  1.024954646022019E+022
+  1.144868675656956E+022
+  1.247845135325847E+022
+  1.331341844249143E+022
+  1.394787529929640E+022
+  1.439287964575588E+022
+  1.467182289650564E+022
+  1.481560889822746E+022
+  1.485822619535336E+022
+  1.483312487661708E+022
+  1.477052651402086E+022
+  1.469563214945564E+022
+  1.462762772631035E+022
+  1.457937585176871E+022
+  1.455768783848248E+022
+  1.456406723723509E+022
+  1.459580020503609E+022
+  1.464724708889106E+022
+  1.471117720987767E+022
+  1.477999638243822E+022
+  1.484674757713065E+022
+  1.490581312021438E+022
+  1.495329947232763E+022
+  1.498713100621425E+022
+  1.500691137838850E+022
+  1.501362920547590E+022
+  1.500928703843142E+022
+  1.499651652574825E+022
+  1.497821711622610E+022
+  1.495724217812449E+022
+  1.493615563448074E+022
+  1.491706878857882E+022
+  1.490155281063396E+022
+  1.474720107306156E+022
+  1.474451449694745E+022
+  1.474506959756339E+022
+  1.474961823435497E+022
+  1.475857464822251E+022
+  1.477186674108015E+022
+  1.478881573077899E+022
+  1.480806403736914E+022
+  1.482756850763908E+022
+  1.484467685333868E+022
+  1.485629585961465E+022
+  1.485914852881323E+022
+  1.485010761308451E+022
+  1.482658106277023E+022
+  1.478691150130374E+022
+  1.473074036880871E+022
+  1.465927998441303E+022
+  1.457543489400107E+022
+  1.448371945408724E+022
+  1.438993354699836E+022
+  1.430058304982133E+022
+  1.422206425400794E+022
+  1.415966756803406E+022
+  1.411648968867645E+022
+  1.409236903933856E+022
+  1.408297239579662E+022
+  1.407916027669436E+022
+  1.406674758194367E+022
+  1.402675904048463E+022
+  1.393626006792111E+022
+  1.376982125368037E+022
+  1.350163981695854E+022
+  1.310827844110887E+022
+  1.257187487876469E+022
+  1.188351831994480E+022
+  1.104629782961734E+022
+  1.007735885832539E+022
+  9.008250291363736E+021
+  7.883010687272300E+021
+  6.753881256337318E+021
+  5.675190879679803E+021
+  4.694676315670286E+021
+  3.840867230462466E+021
+  3.120190200757567E+021
+  2.524996185675487E+021
+  2.040876893346024E+021
+  1.651216085657223E+021
+  1.339748272589497E+021
+  1.091817129772970E+021
+  8.948509601705749E+020
+  7.384038250844447E+020
+  6.139807599860782E+020
+  5.147754124698432E+020
+  4.353904963797120E+020
+  3.715763082877203E+020
+  3.200022896936895E+020
+  2.780655356968777E+020
+  2.437345351175340E+020
+  2.154239687421028E+020
+  1.918956692731480E+020
+  1.721809977852458E+020
+  1.555204221506935E+020
+  1.413167311606562E+020
+  1.290989583774501E+020
+  1.184946680152330E+020
+  1.092087518014376E+020
+  1.010072983803039E+020
+  9.370543327960290E+019
+  8.715830376406978E+019
+  8.125462220356369E+019
+  7.591241427790565E+019
+  7.107688424961401E+019
+  6.672066318772527E+019
+  6.284722550671970E+019
+  5.949905809555966E+019
+  5.677340629116709E+019
+  5.485031939827543E+019
+  5.404054168262236E+019
+  5.486481907605643E+019
+  5.818160157006879E+019
+  6.538679201952415E+019
+  7.871628378143018E+019
+  1.016873049266043E+020
+  1.397134076936108E+020
+  2.009120316718723E+020
+  2.970799247492088E+020
+  4.447226045632956E+020
+  6.658699246051299E+020
+  9.881775511753448E+020
+  1.443513329779811E+021
+  2.063916376787650E+021
+  2.873638118502477E+021
+  3.877643438422756E+021
+  5.054387377046329E+021
+  6.357792075228790E+021
+  7.723158941877553E+021
+  9.076471533935608E+021
+  1.034554714747450E+022
+  1.147019256496777E+022
+  1.240916104748641E+022
+  1.314295619245196E+022
+  1.367278174284550E+022
+  1.401675300221695E+022
+  1.420473643614104E+022
+  1.427299687750818E+022
+  1.425943697621607E+022
+  1.419981386995548E+022
+  1.412502713435644E+022
+  1.405941447183296E+022
+  1.401993557723469E+022
+  1.401611983408523E+022
+  1.405065769943749E+022
+  1.412050664525608E+022
+  1.421835859958393E+022
+  1.433428915935210E+022
+  1.445739620429279E+022
+  1.457724936447868E+022
+  1.468501427375124E+022
+  1.477417762648119E+022
+  1.484086491721256E+022
+  1.488379771477712E+022
+  1.490397415231695E+022
+  1.490417429690251E+022
+  1.488839059748574E+022
+  1.486126185767367E+022
+  1.482755793475071E+022
+  1.479174454646821E+022
+  1.475765419492171E+022
+  1.472827431047759E+022
+  1.470564808264338E+022
+  2.586102341059803E+022
+  2.586334928662000E+022
+  2.586663207321662E+022
+  2.587071714580475E+022
+  2.587522798765103E+022
+  2.587951288663313E+022
+  2.588262350776197E+022
+  2.588333553210368E+022
+  2.588021642884299E+022
+  2.587174953190993E+022
+  2.585651253332939E+022
+  2.583339647220362E+022
+  2.580184471294433E+022
+  2.576208287082023E+022
+  2.571530074571361E+022
+  2.566374103637081E+022
+  2.561064903607532E+022
+  2.556004302329092E+022
+  2.551627761299721E+022
+  2.548339288466396E+022
+  2.546426991592411E+022
+  2.545964531734040E+022
+  2.546706860728370E+022
+  2.547991146789501E+022
+  2.548655289795374E+022
+  2.546986743608288E+022
+  2.540713672667804E+022
+  2.527049209819092E+022
+  2.502798169837460E+022
+  2.464533974173228E+022
+  2.408850873565487E+022
+  2.332691027944521E+022
+  2.233735449925835E+022
+  2.110830771062851E+022
+  1.964400862431250E+022
+  1.796767744732008E+022
+  1.612289063468729E+022
+  1.417222982356659E+022
+  1.219267835396259E+022
+  1.026795673918086E+022
+  8.478925548862050E+021
+  6.891132251766934E+021
+  5.537733239854045E+021
+  4.417810476253247E+021
+  3.510264282355398E+021
+  2.785566154536448E+021
+  2.212719866000019E+021
+  1.762915806097153E+021
+  1.411115205118423E+021
+  1.136446969827085E+021
+  9.219894660066134E+020
+  7.542816753285210E+020
+  6.227564143425792E+020
+  5.191941705889776E+020
+  4.372412224200746E+020
+  3.720056055078407E+020
+  3.197291792532541E+020
+  2.775272021153568E+020
+  2.431846114652032E+020
+  2.149983441901193E+020
+  1.916562172418144E+020
+  1.721444023045474E+020
+  1.556770277001967E+020
+  1.416427771498188E+020
+  1.295644839440798E+020
+  1.190686414306875E+020
+  1.098624875103638E+020
+  1.017169024875564E+020
+  9.445382252508815E+019
+  8.793725661392870E+019
+  8.206735117296394E+019
+  7.677733137538428E+019
+  7.203363905061908E+019
+  6.784029262830103E+019
+  6.424957464575214E+019
+  6.138283812233944E+019
+  5.946783619595214E+019
+  5.890293620044709E+019
+  6.036435899580092E+019
+  6.498061743363507E+019
+  7.460872976009888E+019
+  9.225881378200792E+019
+  1.227247593068811E+020
+  1.734829001167652E+020
+  2.559065614811881E+020
+  3.867928672310595E+020
+  5.900809826156617E+020
+  8.984229372139137E+020
+  1.353917351833916E+021
+  2.006826828132507E+021
+  2.910532340656434E+021
+  4.110523163413750E+021
+  5.627374244203634E+021
+  7.444499778847668E+021
+  9.508294720610456E+021
+  1.173386381838572E+022
+  1.401621225318594E+022
+  1.624529342638606E+022
+  1.832106873931100E+022
+  2.016521037771739E+022
+  2.172756118125359E+022
+  2.298718528222140E+022
+  2.394913680909640E+022
+  2.463865454228149E+022
+  2.509443380986924E+022
+  2.536219807042920E+022
+  2.548926871774708E+022
+  2.552039861806806E+022
+  2.549486395800293E+022
+  2.544468545855570E+022
+  2.539381930011725E+022
+  2.535816360528432E+022
+  2.534623016349090E+022
+  2.536031950067538E+022
+  2.539801625233159E+022
+  2.545380701372512E+022
+  2.552062969018700E+022
+  2.559119794482302E+022
+  2.565900031548473E+022
+  2.571893608371628E+022
+  2.576760482023295E+022
+  2.580330764864425E+022
+  2.582584531847473E+022
+  2.583620644799253E+022
+  2.583622084442041E+022
+  2.582821906092808E+022
+  2.581472467898245E+022
+  2.579821048216237E+022
+  2.578093017881920E+022
+  2.576481549262160E+022
+  1.995886464142494E+022
+  1.996201450608899E+022
+  1.996461704015947E+022
+  1.996620524625936E+022
+  1.996625193728160E+022
+  1.996417393532793E+022
+  1.995934907987885E+022
+  1.995114665423474E+022
+  1.993896861148238E+022
+  1.992230401069388E+022
+  1.990079328345252E+022
+  1.987429318967224E+022
+  1.984293240673491E+022
+  1.980714557698978E+022
+  1.976767030574714E+022
+  1.972549032724763E+022
+  1.968170979016545E+022
+  1.963734788942394E+022
+  1.959304993408414E+022
+  1.954872072436260E+022
+  1.950309838593372E+022
+  1.945330006054192E+022
+  1.939438295751085E+022
+  1.931897326039052E+022
+  1.921702010744878E+022
+  1.907573243232525E+022
+  1.887975422844054E+022
+  1.861163065982471E+022
+  1.825261406898452E+022
+  1.778385258224177E+022
+  1.718798693631980E+022
+  1.645114147117828E+022
+  1.556522131425949E+022
+  1.453031521321831E+022
+  1.335686268601987E+022
+  1.206710766602311E+022
+  1.069528820506782E+022
+  9.286081494921410E+021
+  7.891096665143644E+021
+  6.563676920884370E+021
+  5.352833622069274E+021
+  4.295775352556825E+021
+  3.408010173387765E+021
+  2.683465843188674E+021
+  2.104037801089368E+021
+  1.647282011422647E+021
+  1.290796875278336E+021
+  1.014390457087083E+021
+  8.009043782704612E+020
+  6.362968609737142E+020
+  5.093645646405246E+020
+  4.113246590614196E+020
+  3.353761193057945E+020
+  2.762973827488317E+020
+  2.301025591636015E+020
+  1.937600043704851E+020
+  1.649683251859722E+020
+  1.419814804565133E+020
+  1.234740305970039E+020
+  1.084382951427814E+020
+  9.610638837215574E+019
+  8.589139670632735E+019
+  7.734314746874883E+019
+  7.011502868650257E+019
+  6.393914500702118E+019
+  5.860775155152269E+019
+  5.395942077407086E+019
+  4.986879498107353E+019
+  4.623908769525866E+019
+  4.299674983853125E+019
+  4.008794304403675E+019
+  3.747669858608714E+019
+  3.514493318448764E+019
+  3.309490796818712E+019
+  3.135535056267828E+019
+  2.999345410682382E+019
+  2.913652216723322E+019
+  2.900941462285062E+019
+  2.999749528847477E+019
+  3.274982207407178E+019
+  3.834405240772019E+019
+  4.854271024905273E+019
+  6.617879266348838E+019
+  9.571389048110100E+019
+  1.440073322389168E+020
+  2.213084478916789E+020
+  3.424174589979339E+020
+  5.278292728528781E+020
+  8.044532437168297E+020
+  1.205178056356628E+021
+  1.766150323546084E+021
+  2.520265866950046E+021
+  3.486577942830227E+021
+  4.662037764101268E+021
+  6.020448488958947E+021
+  7.514757928352646E+021
+  9.082887698862604E+021
+  1.065639026383873E+022
+  1.216970630518323E+022
+  1.356790163740698E+022
+  1.481153363076693E+022
+  1.587830408502604E+022
+  1.676198703926133E+022
+  1.746956156163940E+022
+  1.801753346921166E+022
+  1.842822887152208E+022
+  1.872654714203840E+022
+  1.893739210167723E+022
+  1.908381521512977E+022
+  1.918580763932616E+022
+  1.925964429650037E+022
+  1.931768157448497E+022
+  1.936851671625952E+022
+  1.941741938724289E+022
+  1.946694323156748E+022
+  1.951762314246624E+022
+  1.956866947088665E+022
+  1.961858686928530E+022
+  1.966567035843048E+022
+  1.970835779036715E+022
+  1.974544040927413E+022
+  1.977615087959145E+022
+  1.980016232081230E+022
+  1.981753846207512E+022
+  1.982866593959444E+022
+  1.983418092892536E+022
+  1.983489728267083E+022
+  1.983175107651678E+022
+  1.982576438133364E+022
+  1.981801707640321E+022
+  9.960342923160106E+021
+  9.959835286751161E+021
+  9.960721920441388E+021
+  9.963250031251874E+021
+  9.967499317478766E+021
+  9.973318777201150E+021
+  9.980280788330901E+021
+  9.987661760838414E+021
+  9.994456579310755E+021
+  9.999434867516490E+021
+  1.000124153049617E+022
+  9.998537470149585E+021
+  9.990171385799320E+021
+  9.975367476125721E+021
+  9.953907050377749E+021
+  9.926276709714634E+021
+  9.893753076595558E+021
+  9.858394662937087E+021
+  9.822916275701396E+021
+  9.790431195533662E+021
+  9.764061176437938E+021
+  9.746432718340591E+021
+  9.739097473914677E+021
+  9.741931840147946E+021
+  9.752582743981262E+021
+  9.766031535669779E+021
+  9.774345838213114E+021
+  9.766682148988221E+021
+  9.729592721916134E+021
+  9.647680230762241E+021
+  9.504630773610969E+021
+  9.284633075385685E+021
+  8.974149163933529E+021
+  8.563930260245408E+021
+  8.051069631391504E+021
+  7.440765840311765E+021
+  6.747372766922835E+021
+  5.994297556291398E+021
+  5.212436696929558E+021
+  4.437138998186906E+021
+  3.704107610034833E+021
+  3.043794461142951E+021
+  2.473443736288859E+021
+  1.995637360345867E+021
+  1.603858869509425E+021
+  1.287418880763651E+021
+  1.034465438118312E+021
+  8.336363010073424E+020
+  6.748383634715641E+020
+  5.495105574044298E+020
+  4.506069938712050E+020
+  3.724465178445726E+020
+  3.105130755156033E+020
+  2.612520795805072E+020
+  2.218845075948984E+020
+  1.902471858369578E+020
+  1.646606260769460E+020
+  1.438223363778435E+020
+  1.267221422863358E+020
+  1.125757727076305E+020
+  1.007732154655108E+020
+  9.083881048268389E+019
+  8.240055851700969E+019
+  7.516660443916317E+019
+  6.890727612846487E+019
+  6.344141503037674E+019
+  5.862602452546411E+019
+  5.434849566004628E+019
+  5.052085898563725E+019
+  4.707567253931630E+019
+  4.396330962976438E+019
+  4.115058186877384E+019
+  3.862085763565014E+019
+  3.637616355208034E+019
+  3.444225899931790E+019
+  3.287845503885656E+019
+  3.179515077604719E+019
+  3.138385941780446E+019
+  3.196708492438287E+019
+  3.407893516499339E+019
+  3.859178878014756E+019
+  4.690920870345127E+019
+  6.124928422851139E+019
+  8.504282170027372E+019
+  1.234620404759500E+020
+  1.840692007859845E+020
+  2.775189959368424E+020
+  4.181497959616990E+020
+  6.241462827019335E+020
+  9.167525709985631E+020
+  1.317794385938274E+021
+  1.844621080435516E+021
+  2.502612160052194E+021
+  3.280203612473837E+021
+  4.149696796340080E+021
+  5.070597248637365E+021
+  5.995245647146358E+021
+  6.875850594724016E+021
+  7.671129942462249E+021
+  8.351103582034056E+021
+  8.899332011365686E+021
+  9.312689618067636E+021
+  9.599309529135440E+021
+  9.775537047513642E+021
+  9.862644667994417E+021
+  9.883830733547822E+021
+  9.861774510171332E+021
+  9.816830251927712E+021
+  9.765833850793327E+021
+  9.721452756132877E+021
+  9.692003456620813E+021
+  9.681664189844150E+021
+  9.691008118721822E+021
+  9.717770767936940E+021
+  9.757750848742876E+021
+  9.805735197253841E+021
+  9.856344157736837E+021
+  9.904715522634385E+021
+  9.946978664575643E+021
+  9.980507088702572E+021
+  1.000396901841777E+022
+  1.001721768280109E+022
+  1.002107513055831E+022
+  1.001706458245900E+022
+  1.000713501404626E+022
+  9.993403999068321E+021
+  9.977935379267479E+021
+  9.962567538786594E+021
+  9.948798935913279E+021
+  9.937727902773963E+021
+  1.739964784856020E+022
+  1.739887533135054E+022
+  1.740046822698223E+022
+  1.740483565469577E+022
+  1.741209944221561E+022
+  1.742198704064664E+022
+  1.743375448946561E+022
+  1.744615533000744E+022
+  1.745746770098893E+022
+  1.746559328924926E+022
+  1.746823212178058E+022
+  1.746312581149264E+022
+  1.744835328588057E+022
+  1.742265254133876E+022
+  1.738573026156358E+022
+  1.733851200475020E+022
+  1.728328118534600E+022
+  1.722365632834362E+022
+  1.716436459161532E+022
+  1.711078675045592E+022
+  1.706827459113911E+022
+  1.704127353643561E+022
+  1.703231682779529E+022
+  1.704098713631736E+022
+  1.706296189428223E+022
+  1.708926683665041E+022
+  1.710585843758701E+022
+  1.709364360826353E+022
+  1.702902899235385E+022
+  1.688507490617813E+022
+  1.663330654791017E+022
+  1.624619549737776E+022
+  1.570025007947301E+022
+  1.497952814179278E+022
+  1.407920780347066E+022
+  1.300864571207006E+022
+  1.179318408156779E+022
+  1.047394296923548E+022
+  9.105061387509122E+021
+  7.748373196683588E+021
+  6.466242379543023E+021
+  5.311781281356977E+021
+  4.314984145904014E+021
+  3.480225620477162E+021
+  2.796002215308077E+021
+  2.243544444671678E+021
+  1.802076126464900E+021
+  1.451697783276595E+021
+  1.174744014516678E+021
+  9.562385744195959E+020
+  7.838612925080443E+020
+  6.476823615380105E+020
+  5.398114090209741E+020
+  4.540401842570468E+020
+  3.855167050918496E+020
+  3.304655116241873E+020
+  2.859563156570450E+020
+  2.497173356534824E+020
+  2.199872074744705E+020
+  1.953988845759648E+020
+  1.748893918532023E+020
+  1.576301154433660E+020
+  1.429732086129278E+020
+  1.304105391107314E+020
+  1.195423441081292E+020
+  1.100533812104915E+020
+  1.016948722976338E+020
+  9.427094562979498E+019
+  8.762861274171208E+019
+  8.165059867659130E+019
+  7.625061248231023E+019
+  7.137094461311748E+019
+  6.698266968761684E+019
+  6.308930354602383E+019
+  5.973563900514863E+019
+  5.702484620453011E+019
+  5.514901790458333E+019
+  5.444147714311314E+019
+  5.546368030688877E+019
+  5.914570176839051E+019
+  6.700702878260657E+019
+  8.149292873240828E+019
+  1.064686623484044E+020
+  1.479143208526026E+020
+  2.148479085148917E+020
+  3.204586987702969E+020
+  4.833360619386275E+020
+  7.285067366715033E+020
+  1.087727118624964E+021
+  1.598121346332247E+021
+  2.297869456663236E+021
+  3.217389181952066E+021
+  4.366255005811376E+021
+  5.724492241773672E+021
+  7.243946357898211E+021
+  8.854065889814694E+021
+  1.047169433620847E+022
+  1.201332692855210E+022
+  1.340670709897386E+022
+  1.459921704766593E+022
+  1.556182291751278E+022
+  1.628872032437515E+022
+  1.679378390759536E+022
+  1.710527730170791E+022
+  1.726013663637572E+022
+  1.729873987895177E+022
+  1.726064014779636E+022
+  1.718140902366969E+022
+  1.709054509901094E+022
+  1.701032755580501E+022
+  1.695548315106121E+022
+  1.693354096883006E+022
+  1.694574539016402E+022
+  1.698837811979554E+022
+  1.705431472453027E+022
+  1.713462640863312E+022
+  1.722004717918725E+022
+  1.730216399526417E+022
+  1.737424535834407E+022
+  1.743168710273769E+022
+  1.747210854911441E+022
+  1.749517053963474E+022
+  1.750220815940090E+022
+  1.749577323079876E+022
+  1.747916218540409E+022
+  1.745597436063986E+022
+  1.742972944705796E+022
+  1.740357154493188E+022
+  1.738007141261925E+022
+  1.736112171394194E+022
+  2.636337963615728E+022
+  2.636754789979232E+022
+  2.637099247971870E+022
+  2.637309569592014E+022
+  2.637316030292000E+022
+  2.637041517690407E+022
+  2.636403798615358E+022
+  2.635319564939063E+022
+  2.633709911884172E+022
+  2.631507565614433E+022
+  2.628665410615221E+022
+  2.625165105458091E+022
+  2.621024453716580E+022
+  2.616301915893824E+022
+  2.611096207553770E+022
+  2.605538760965325E+022
+  2.599777058031265E+022
+  2.593947409358574E+022
+  2.588136664233755E+022
+  2.582333632728479E+022
+  2.576372627041415E+022
+  2.569873283442290E+022
+  2.562182427808762E+022
+  2.552324935774666E+022
+  2.538971160873587E+022
+  2.520428575386945E+022
+  2.494664970296097E+022
+  2.459370141376540E+022
+  2.412062540048012E+022
+  2.350246527755884E+022
+  2.271623617057365E+022
+  2.174355840139317E+022
+  2.057369615553222E+022
+  1.920673601756575E+022
+  1.765645408638347E+022
+  1.595223983865831E+022
+  1.413934877725302E+022
+  1.227684792409670E+022
+  1.043297936200876E+022
+  8.678287321061196E+021
+  7.077596299141600E+021
+  5.680130333545214E+021
+  4.506422247364981E+021
+  3.548468406483304E+021
+  2.782350970801226E+021
+  2.178409202845203E+021
+  1.707033955273481E+021
+  1.341534172035804E+021
+  1.059227195158954E+021
+  8.415493571035510E+020
+  6.736887971585102E+020
+  5.440333134753785E+020
+  4.435906067923976E+020
+  3.654565008424591E+020
+  3.043605095626812E+020
+  2.562938120766372E+020
+  2.182131306878252E+020
+  1.878095027830071E+020
+  1.633301241359931E+020
+  1.434423733250834E+020
+  1.271307256869634E+020
+  1.136189744166595E+020
+  1.023117435397812E+020
+  9.275061249047198E+019
+  8.458126301657783E+019
+  7.752892727733912E+019
+  7.138009449332403E+019
+  6.596895912989619E+019
+  6.116750414607999E+019
+  5.687844707378726E+019
+  5.303057596852905E+019
+  4.957631458512291E+019
+  4.649174329564621E+019
+  4.377985112275726E+019
+  4.147863227221597E+019
+  3.967695483653555E+019
+  3.854318589227332E+019
+  3.837471250946492E+019
+  3.968118670969203E+019
+  4.332098657074940E+019
+  5.071928634227592E+019
+  6.420693406792908E+019
+  8.753034747203717E+019
+  1.265895019308235E+020
+  1.904549020316045E+020
+  2.926794838029567E+020
+  4.528333207268179E+020
+  6.980154643296057E+020
+  1.063804742772727E+021
+  1.593683095696076E+021
+  2.335435517292752E+021
+  3.332542240300399E+021
+  4.610173002737730E+021
+  6.164267245739136E+021
+  7.960154186059767E+021
+  9.935588466526165E+021
+  1.200846206758044E+022
+  1.408825461183431E+022
+  1.608827591822368E+022
+  1.793589635196897E+022
+  1.957898015870035E+022
+  2.098806875529266E+022
+  2.215496050794553E+022
+  2.308891722635253E+022
+  2.381179864152734E+022
+  2.435316006919374E+022
+  2.474595787867569E+022
+  2.502315190458029E+022
+  2.521524938511011E+022
+  2.534870688200983E+022
+  2.544506219879301E+022
+  2.552066628871115E+022
+  2.558689369582100E+022
+  2.565071325303232E+022
+  2.571549716559703E+022
+  2.578194378477952E+022
+  2.584899659072781E+022
+  2.591466365094046E+022
+  2.597667472800503E+022
+  2.603294838393326E+022
+  2.608187125303122E+022
+  2.612241505511657E+022
+  2.615413569189913E+022
+  2.617710749127189E+022
+  2.619183366613749E+022
+  2.619914915826597E+022
+  2.620012538514282E+022
+  2.619599662650206E+022
+  2.618811181957659E+022
+  2.617789701342479E+022
+  1.391064094323604E+022
+  1.391201331677053E+022
+  1.391379916740035E+022
+  1.391588654161725E+022
+  1.391805258387213E+022
+  1.391993871598284E+022
+  1.392104221506699E+022
+  1.392072911343624E+022
+  1.391827062716118E+022
+  1.391290764525674E+022
+  1.390394204283599E+022
+  1.389084735223943E+022
+  1.387338807825195E+022
+  1.385173267431757E+022
+  1.382654019551002E+022
+  1.379899754778031E+022
+  1.377078414781941E+022
+  1.374394383575809E+022
+  1.372065050429198E+022
+  1.370286460057917E+022
+  1.369189202307470E+022
+  1.368787335028151E+022
+  1.368924728468163E+022
+  1.369224495916982E+022
+  1.369047923766228E+022
+  1.367469460240739E+022
+  1.363273962838174E+022
+  1.354981766187960E+022
+  1.340906422883715E+022
+  1.319249153462329E+022
+  1.288232633455586E+022
+  1.246273792133713E+022
+  1.192189664148560E+022
+  1.125421278258126E+022
+  1.046248459003598E+022
+  9.559555315103850E+021
+  8.568990940840106E+021
+  7.524312613049107E+021
+  6.466514137430618E+021
+  5.439976228722831E+021
+  4.487383155377105E+021
+  3.643156950590301E+021
+  2.924480386582691E+021
+  2.330490415649966E+021
+  1.849687538345641E+021
+  1.466177074073853E+021
+  1.163353905362565E+021
+  9.258277152647968E+020
+  7.402496612671632E+020
+  5.955109544871955E+020
+  4.826176400919421E+020
+  3.944242242961681E+020
+  3.253279929543102E+020
+  2.709758577815894E+020
+  2.280064818380067E+020
+  1.938345383060103E+020
+  1.664759131253315E+020
+  1.444091011105652E+020
+  1.264669273016200E+020
+  1.117528424890960E+020
+  9.957670034599490E+019
+  8.940574917295322E+019
+  8.082738160466094E+019
+  7.352090488346738E+019
+  6.723619992513780E+019
+  6.177763097227096E+019
+  5.699196110117775E+019
+  5.275933893968050E+019
+  4.898666831976506E+019
+  4.560287742090011E+019
+  4.255579262435449E+019
+  3.981052558168225E+019
+  3.734954051386832E+019
+  3.517494000682627E+019
+  3.331407569208746E+019
+  3.183047728349150E+019
+  3.084346955062289E+019
+  3.056193282209364E+019
+  3.134071404420971E+019
+  3.377244476202495E+019
+  3.883303979821004E+019
+  4.810555958822714E+019
+  6.411308602996348E+019
+  9.079368021301835E+019
+  1.341433594900346E+020
+  2.030262152490809E+020
+  3.100892847720171E+020
+  4.726048399873718E+020
+  7.128770708973106E+020
+  1.057589929252141E+021
+  1.535169513089040E+021
+  2.169987758672287E+021
+  2.973362900005881E+021
+  3.937038272947357E+021
+  5.033173983480668E+021
+  6.217283317297550E+021
+  7.434067576578709E+021
+  8.625322075354761E+021
+  9.737892199788754E+021
+  1.072989621585331E+022
+  1.157420449462938E+022
+  1.225906948448439E+022
+  1.278648678269577E+022
+  1.316918059765874E+022
+  1.342708352124505E+022
+  1.358395858542934E+022
+  1.366453678107318E+022
+  1.369231429642689E+022
+  1.368800931440928E+022
+  1.366861150193155E+022
+  1.364694012095939E+022
+  1.363162932863387E+022
+  1.362746161932961E+022
+  1.363596494585913E+022
+  1.365617858441664E+022
+  1.368548540063355E+022
+  1.372041174859745E+022
+  1.375731401355878E+022
+  1.379289957876372E+022
+  1.382456210230327E+022
+  1.385053914660674E+022
+  1.386992140862607E+022
+  1.388255696486281E+022
+  1.388889848589929E+022
+  1.388983186065806E+022
+  1.388650703850597E+022
+  1.388018445269918E+022
+  1.387211320819962E+022
+  1.386344692997961E+022
+  1.385519160136963E+022
+  1.188547268302716E+022
+  1.188339364575709E+022
+  1.188386715140816E+022
+  1.188748074032583E+022
+  1.189455461063124E+022
+  1.190502432791817E+022
+  1.191834613605696E+022
+  1.193344055538349E+022
+  1.194868774055359E+022
+  1.196198873118097E+022
+  1.197089929229691E+022
+  1.197283397012253E+022
+  1.196533030226022E+022
+  1.194635367291946E+022
+  1.191461266759052E+022
+  1.186984571317690E+022
+  1.181303398232942E+022
+  1.174649412075203E+022
+  1.167380887040116E+022
+  1.159956560715249E+022
+  1.152889251342190E+022
+  1.146680801278537E+022
+  1.141742778948240E+022
+  1.138310055865077E+022
+  1.136356402322417E+022
+  1.135522279777384E+022
+  1.135064975161161E+022
+  1.133840339710174E+022
+  1.130324052808547E+022
+  1.122678825863657E+022
+  1.108872173462162E+022
+  1.086846576167550E+022
+  1.054738797326820E+022
+  1.011136521585768E+022
+  9.553478705938413E+021
+  8.876441129748916E+021
+  8.094224152926813E+021
+  7.232313346773389E+021
+  6.326152238909181E+021
+  5.417689846876140E+021
+  4.550472799987261E+021
+  3.762693320572552E+021
+  3.077097701703123E+021
+  2.498698378601347E+021
+  2.021234600943217E+021
+  1.633048882286513E+021
+  1.320737898782238E+021
+  1.071201539587057E+021
+  8.726478477507970E+020
+  7.149700439148984E+020
+  5.897758037046770E+020
+  4.902441278764663E+020
+  4.109127023470074E+020
+  3.474520933341822E+020
+  2.964549144917608E+020
+  2.552518612728311E+020
+  2.217576397827699E+020
+  1.943453358578952E+020
+  1.717458186232623E+020
+  1.529682091900888E+020
+  1.372375789748820E+020
+  1.239464770268763E+020
+  1.126174124015529E+020
+  1.028739359144087E+020
+  9.441843265712883E+019
+  8.701513717737180E+019
+  8.047721558078461E+019
+  7.465702958380986E+019
+  6.943891971257872E+019
+  6.473403706571929E+019
+  6.047693973350174E+019
+  5.662388300978160E+019
+  5.315301561078714E+019
+  5.006710974015562E+019
+  4.740009197035327E+019
+  4.522963401971424E+019
+  4.369958186296453E+019
+  4.305826198264666E+019
+  4.372192733465725E+019
+  4.637694253510480E+019
+  5.213966194720962E+019
+  6.279865875535672E+019
+  8.116823377338440E+019
+  1.115812637487600E+020
+  1.605368165514701E+020
+  2.374831425884673E+020
+  3.556454159500410E+020
+  5.326841872460587E+020
+  7.907842438694124E+020
+  1.155531864781173E+021
+  1.652687673569070E+021
+  2.301816660119750E+021
+  3.107070722681535E+021
+  4.051378839874566E+021
+  5.097996634503660E+021
+  6.195207156634216E+021
+  7.283744985775546E+021
+  8.305716229194417E+021
+  9.212738939335563E+021
+  9.971536854248403E+021
+  1.056621555595568E+022
+  1.099745315533931E+022
+  1.127949319531614E+022
+  1.143603121745864E+022
+  1.149593918702612E+022
+  1.148945749726558E+022
+  1.144516477728652E+022
+  1.138780250747604E+022
+  1.133690463391845E+022
+  1.130613693312801E+022
+  1.130324671560445E+022
+  1.133052678962199E+022
+  1.138569059912274E+022
+  1.146303657186785E+022
+  1.155475858348629E+022
+  1.165224939130203E+022
+  1.174725484104323E+022
+  1.183277038285077E+022
+  1.190362077504652E+022
+  1.195671621880684E+022
+  1.199102189204763E+022
+  1.200730718922798E+022
+  1.200775537744163E+022
+  1.199551332122298E+022
+  1.197424364656489E+022
+  1.194771680725144E+022
+  1.191946637535535E+022
+  1.189252830427644E+022
+  1.186927299087834E+022
+  1.185132643830997E+022
+  1.583206969883657E+022
+  1.583151885226632E+022
+  1.583301777794100E+022
+  1.583690698735009E+022
+  1.584327364434441E+022
+  1.585185864364926E+022
+  1.586199066174666E+022
+  1.587256112101018E+022
+  1.588205065844544E+022
+  1.588861905687544E+022
+  1.589026189536119E+022
+  1.588502699069262E+022
+  1.587127611064423E+022
+  1.584796816266532E+022
+  1.581492970451028E+022
+  1.577307061023700E+022
+  1.572449892029505E+022
+  1.567249024284265E+022
+  1.562127489682721E+022
+  1.557562153139719E+022
+  1.554021907120555E+022
+  1.551888731506070E+022
+  1.551367631728307E+022
+  1.552394083326817E+022
+  1.554549403958258E+022
+  1.556995175664095E+022
+  1.558437478734999E+022
+  1.557130590778816E+022
+  1.550928378492391E+022
+  1.537390073268750E+022
+  1.513945108514501E+022
+  1.478118105120378E+022
+  1.427808325294533E+022
+  1.361606570409147E+022
+  1.279116393967537E+022
+  1.181227933753984E+022
+  1.070277617190630E+022
+  9.500250138096662E+021
+  8.253989466041844E+021
+  7.020124201065084E+021
+  5.855127086780187E+021
+  4.806967229627967E+021
+  3.902594081348405E+021
+  3.145732713862878E+021
+  2.525748361945471E+021
+  2.025463890025302E+021
+  1.625926157752317E+021
+  1.309013396466667E+021
+  1.058657764319296E+021
+  8.612503948430391E+020
+  7.056051356213631E+020
+  5.827127870398056E+020
+  4.854193624349296E+020
+  4.080996108930731E+020
+  3.463598717027022E+020
+  2.967833259231366E+020
+  2.567195468095474E+020
+  2.241148529581531E+020
+  1.973778279720193E+020
+  1.752739663898938E+020
+  1.568438352247324E+020
+  1.413398976878216E+020
+  1.281779707447646E+020
+  1.169000622116022E+020
+  1.071460099073194E+020
+  9.863191306531173E+019
+  9.113380921573541E+019
+  8.447542163422627E+019
+  7.851910341548155E+019
+  7.315936026755668E+019
+  6.831857733888455E+019
+  6.394484650986846E+019
+  6.001214449804510E+019
+  5.652362708192224E+019
+  5.351959485687082E+019
+  5.109291492728787E+019
+  4.941657433575913E+019
+  4.879087560521315E+019
+  4.972186832446145E+019
+  5.304818119400287E+019
+  6.014043984565865E+019
+  7.320521574202082E+019
+  9.573187420163600E+019
+  1.331212837107830E+020
+  1.935218475358661E+020
+  2.888573477509269E+020
+  4.359437750020521E+020
+  6.574366426938852E+020
+  9.821089652020866E+020
+  1.443636979246771E+021
+  2.076718348003243E+021
+  2.909107226270340E+021
+  3.949772733191383E+021
+  5.180981972175046E+021
+  6.559475087649561E+021
+  8.021630421579915E+021
+  9.492269259609147E+021
+  1.089571800147615E+022
+  1.216630708298432E+022
+  1.325599965228502E+022
+  1.413801691271635E+022
+  1.480657792151210E+022
+  1.527374079019103E+022
+  1.556465641227464E+022
+  1.571242123379665E+022
+  1.575335635623165E+022
+  1.572314877070159E+022
+  1.565398982789991E+022
+  1.557267247241884E+022
+  1.549953954806322E+022
+  1.544816462892621E+022
+  1.542565225273004E+022
+  1.543344130870027E+022
+  1.546847813101799E+022
+  1.552460327954786E+022
+  1.559398271705316E+022
+  1.566842227352197E+022
+  1.574043748849278E+022
+  1.580400244430704E+022
+  1.585495768874413E+022
+  1.589110599216547E+022
+  1.591205911432268E+022
+  1.591891804645131E+022
+  1.591387150511875E+022
+  1.589978015294926E+022
+  1.587978668172207E+022
+  1.585697739912008E+022
+  1.583412000949813E+022
+  1.581348796414096E+022
+  1.579676662311081E+022
+  3.167137818265432E+022
+  3.167594599209956E+022
+  3.168012236624616E+022
+  3.168328809225292E+022
+  3.168468629002244E+022
+  3.168341399872208E+022
+  3.167843938381413E+022
+  3.166864831070418E+022
+  3.165291843587403E+022
+  3.163022613419082E+022
+  3.159978126455670E+022
+  3.156117410479381E+022
+  3.151451559691578E+022
+  3.146054692450648E+022
+  3.140068751494454E+022
+  3.133698723825299E+022
+  3.127195068506697E+022
+  3.120820852271401E+022
+  3.114802336849562E+022
+  3.109263601279734E+022
+  3.104148136293154E+022
+  3.099132932345831E+022
+  3.093542988583960E+022
+  3.086275994902404E+022
+  3.075747919500016E+022
+  3.059870342433403E+022
+  3.036069842050267E+022
+  3.001358937231264E+022
+  2.952467234089582E+022
+  2.886040183469380E+022
+  2.798910018531579E+022
+  2.688437021505211E+022
+  2.552907180715834E+022
+  2.391953538228354E+022
+  2.206944520395392E+022
+  2.001258497073991E+022
+  1.780349718897181E+022
+  1.551520189587323E+022
+  1.323356082009012E+022
+  1.104865872314208E+022
+  9.044538283479938E+021
+  7.286360871809486E+021
+  5.803221461659295E+021
+  4.587746728439682E+021
+  3.611837664282274E+021
+  2.839537608608939E+021
+  2.234451138652841E+021
+  1.763483854925741E+021
+  1.398328984748508E+021
+  1.115696067257337E+021
+  8.969142836046559E+020
+  7.272829546640795E+020
+  5.953719178746310E+020
+  4.923711387831815E+020
+  4.115299366575021E+020
+  3.476947734248675E+020
+  2.969392753341609E+020
+  2.562739149758439E+020
+  2.234213317331081E+020
+  1.966441398093309E+020
+  1.746138774988892E+020
+  1.563117631945795E+020
+  1.409538045127558E+020
+  1.279344288857627E+020
+  1.167841415605238E+020
+  1.071377891925539E+020
+  9.871085043199007E+019
+  9.128183165039637E+019
+  8.467936169727338E+019
+  7.877300225777702E+019
+  7.346717230447795E+019
+  6.869798786598582E+019
+  6.443332180231927E+019
+  6.067710506226872E+019
+  5.747998607600543E+019
+  5.496017992198554E+019
+  5.334101461554180E+019
+  5.301577061236964E+019
+  5.465645374073901E+019
+  5.939167537480547E+019
+  6.909010773573134E+019
+  8.679950381445983E+019
+  1.174046801152226E+020
+  1.685753604944803E+020
+  2.520647586969305E+020
+  3.853720271036122E+020
+  5.936653548067852E+020
+  9.116373687866165E+020
+  1.384590362429898E+021
+  2.067508848438268E+021
+  3.020221420787841E+021
+  4.296171425178774E+021
+  5.924431806085168E+021
+  7.896006911247547E+021
+  1.016263440692832E+022
+  1.264133132666199E+022
+  1.522487920314342E+022
+  1.779689576794194E+022
+  2.024762484747064E+022
+  2.248685380609215E+022
+  2.445175462801000E+022
+  2.610918756600468E+022
+  2.745340548960415E+022
+  2.850080628610701E+022
+  2.928342668037219E+022
+  2.984249557420447E+022
+  3.022284763024527E+022
+  3.046854092714412E+022
+  3.061971692294207E+022
+  3.071058698456020E+022
+  3.076838056354737E+022
+  3.081309052550252E+022
+  3.085786038554836E+022
+  3.090985745416383E+022
+  3.097146571117146E+022
+  3.104162446926838E+022
+  3.111714683260010E+022
+  3.119388172926367E+022
+  3.126763006021759E+022
+  3.133477672592219E+022
+  3.139264463719396E+022
+  3.143961119309829E+022
+  3.147505333622863E+022
+  3.149919780760726E+022
+  3.151293687534282E+022
+  3.151763732993154E+022
+  3.151496010793297E+022
+  3.150671813572339E+022
+  3.149477945090519E+022
+  3.148099950713667E+022
+  1.267338763705376E+022
+  1.267268499705095E+022
+  1.267376003656777E+022
+  1.267693460090900E+022
+  1.268231731022600E+022
+  1.268972215176323E+022
+  1.269860900021604E+022
+  1.270805798778108E+022
+  1.271678705429368E+022
+  1.272322304498867E+022
+  1.272562959143452E+022
+  1.272228664233603E+022
+  1.271171013011317E+022
+  1.269289243796421E+022
+  1.266553559319713E+022
+  1.263024223667282E+022
+  1.258862593895247E+022
+  1.254330315944569E+022
+  1.249773523155759E+022
+  1.245590128055923E+022
+  1.242180188453912E+022
+  1.239881681281397E+022
+  1.238896501978221E+022
+  1.239213710891639E+022
+  1.240538585263524E+022
+  1.242236670781484E+022
+  1.243301768907729E+022
+  1.242355896918581E+022
+  1.237688070737339E+022
+  1.227337474104185E+022
+  1.209224920134754E+022
+  1.181333612939328E+022
+  1.141934790929895E+022
+  1.089844723577013E+022
+  1.024686544148890E+022
+  9.471153248566262E+021
+  8.589524178077146E+021
+  7.631731138723023E+021
+  6.637080723995120E+021
+  5.650569770942524E+021
+  4.717668088010910E+021
+  3.877177931156059E+021
+  3.151094395868282E+021
+  2.542743280241458E+021
+  2.043860169371397E+021
+  1.640860409991518E+021
+  1.318672374132967E+021
+  1.062842293470892E+021
+  8.605278869397994E+020
+  7.008342445015381E+020
+  5.747933116569996E+020
+  4.751730748331573E+020
+  3.962239298855113E+020
+  3.334197999544798E+020
+  2.832217114102443E+020
+  2.428746204872744E+020
+  2.102392568339092E+020
+  1.836563566482411E+020
+  1.618388897520413E+020
+  1.437875216168111E+020
+  1.287248675251370E+020
+  1.160446833825912E+020
+  1.052727855531076E+020
+  9.603710342744533E+019
+  8.804480494194110E+019
+  8.106488654219898E+019
+  7.491498802330721E+019
+  6.945148963035010E+019
+  6.456218962853546E+019
+  6.016106592443557E+019
+  5.618482098051119E+019
+  5.259112804104426E+019
+  4.935878295612732E+019
+  4.649038296591254E+019
+  4.401879399292425E+019
+  4.201966353662063E+019
+  4.063376731099979E+019
+  4.010526980888001E+019
+  4.084527608523905E+019
+  4.353454075484393E+019
+  4.928484119588564E+019
+  5.988472549807720E+019
+  7.816041412255511E+019
+  1.084829176811464E+020
+  1.574412426551121E+020
+  2.346681128235688E+020
+  3.537337920231317E+020
+  5.328978141227738E+020
+  7.953141802099590E+020
+  1.168026626344116E+021
+  1.678810068980091E+021
+  2.349726774060079E+021
+  3.187583409138517E+021
+  4.177602404321679E+021
+  5.284461278971159E+021
+  6.456554449307617E+021
+  7.633172633298471E+021
+  8.753463921132645E+021
+  9.764891657244733E+021
+  1.062933386383924E+022
+  1.132592690080991E+022
+  1.185076844336945E+022
+  1.221429237505486E+022
+  1.243738252499436E+022
+  1.254718456441301E+022
+  1.257328086035689E+022
+  1.254457542164370E+022
+  1.248699382556360E+022
+  1.242196431195401E+022
+  1.236559167556018E+022
+  1.232842748299524E+022
+  1.231574439553442E+022
+  1.232821919167616E+022
+  1.236291439220871E+022
+  1.241442963017474E+022
+  1.247608319053236E+022
+  1.254099135096445E+022
+  1.260294102269313E+022
+  1.265699403065553E+022
+  1.269980809692618E+022
+  1.272969964762142E+022
+  1.274650172683655E+022
+  1.275128586461375E+022
+  1.274601830894122E+022
+  1.273320656434292E+022
+  1.271556954886123E+022
+  1.269575256636474E+022
+  1.267610737697697E+022
+  1.265854601147134E+022
+  1.264446448774191E+022
+  2.351853382370583E+022
+  2.352192439756063E+022
+  2.352503610607334E+022
+  2.352741170436399E+022
+  2.352849021720890E+022
+  2.352760013696899E+022
+  2.352397179738282E+022
+  2.351677175939813E+022
+  2.350515797228038E+022
+  2.348835974187535E+022
+  2.346577877933732E+022
+  2.343709968274078E+022
+  2.340239580738872E+022
+  2.336221258519946E+022
+  2.331760513181489E+022
+  2.327010448245957E+022
+  2.322158835018639E+022
+  2.317403757809563E+022
+  2.312916871797529E+022
+  2.308794689915758E+022
+  2.305000075255681E+022
+  2.301298050188263E+022
+  2.297191836274802E+022
+  2.291866408830449E+022
+  2.284147588047730E+022
+  2.272484772119188E+022
+  2.254965017057873E+022
+  2.229365560297296E+022
+  2.193251238038228E+022
+  2.144122313170524E+022
+  2.079616116341945E+022
+  1.997761126993439E+022
+  1.897273130417721E+022
+  1.777869132208582E+022
+  1.640556850684852E+022
+  1.487839705646747E+022
+  1.323766698063079E+022
+  1.153763521330359E+022
+  9.842139734689742E+021
+  8.218191729887044E+021
+  6.728338779362218E+021
+  5.421108586011839E+021
+  4.318213757935578E+021
+  3.414238186676180E+021
+  2.688338595819955E+021
+  2.113813946899988E+021
+  1.663624688507705E+021
+  1.313176618113776E+021
+  1.041428998841204E+021
+  8.310667659954251E+020
+  6.682071773562410E+020
+  5.419179888640396E+020
+  4.436979920990637E+020
+  3.669938902553254E+020
+  3.067836190206347E+020
+  2.592328287960437E+020
+  2.214198656083659E+020
+  1.911199331809130E+020
+  1.666380307501076E+020
+  1.466809018107058E+020
+  1.302595658180364E+020
+  1.166154974456720E+020
+  1.051649143330944E+020
+  9.545683885038584E+019
+  8.714159307332749E+019
+  7.994718288934376E+019
+  7.366165381625895E+019
+  6.811998929996924E+019
+  6.319450570103937E+019
+  5.878801251141797E+019
+  5.482929044011572E+019
+  5.127073967026561E+019
+  4.808842529757955E+019
+  4.528528050082057E+019
+  4.289904322084782E+019
+  4.101777867269200E+019
+  3.980783149235803E+019
+  3.956209408298103E+019
+  4.078097485378952E+019
+  4.430479806399810E+019
+  5.152476599773066E+019
+  6.470966524407285E+019
+  8.749545711423301E+019
+  1.255904413774415E+020
+  1.877411795764136E+020
+  2.869687746396336E+020
+  4.419984749776416E+020
+  6.786380331405000E+020
+  1.030581944545783E+021
+  1.538717151185782E+021
+  2.247518671582347E+021
+  3.196691301038977E+021
+  4.407789192180541E+021
+  5.874032399537712E+021
+  7.559428777317851E+021
+  9.402170912178465E+021
+  1.132245006689790E+022
+  1.323367768795444E+022
+  1.505423465090082E+022
+  1.671707704978332E+022
+  1.817556069335032E+022
+  1.940514381251567E+022
+  2.040166821566028E+022
+  2.117744599376159E+022
+  2.175641223519192E+022
+  2.216932432413416E+022
+  2.244960309687772E+022
+  2.263007115022212E+022
+  2.274061640358163E+022
+  2.280669467571755E+022
+  2.284854859874059E+022
+  2.288102054129919E+022
+  2.291384401389272E+022
+  2.295229732733926E+022
+  2.299809553906861E+022
+  2.305039084412491E+022
+  2.310675747340974E+022
+  2.316405942050315E+022
+  2.321913427617959E+022
+  2.326926468498243E+022
+  2.331244196748384E+022
+  2.334745204165879E+022
+  2.337383297511280E+022
+  2.339176154781368E+022
+  2.340191407158026E+022
+  2.340532224014953E+022
+  2.340323685084851E+022
+  2.339702014126590E+022
+  2.338807230820178E+022
+  2.337778025433096E+022
+  4.772338326275042E+022
+  4.773043498887962E+022
+  4.773676021718334E+022
+  4.774138663492313E+022
+  4.774314576002555E+022
+  4.774066556952301E+022
+  4.773240081843042E+022
+  4.771670595165520E+022
+  4.769194712647341E+022
+  4.765666080665899E+022
+  4.760975106662764E+022
+  4.755070197308043E+022
+  4.747977698254721E+022
+  4.739816999501518E+022
+  4.730806268620486E+022
+  4.721253812272493E+022
+  4.711530413135059E+022
+  4.702019073204932E+022
+  4.693040456155403E+022
+  4.684755050608953E+022
+  4.677046549884434E+022
+  4.669394739774022E+022
+  4.660749700122603E+022
+  4.649421771264315E+022
+  4.633003135330604E+022
+  4.608336988888649E+022
+  4.571549489011941E+022
+  4.518158490197486E+022
+  4.443271865638705E+022
+  4.341886391035578E+022
+  4.209293930348295E+022
+  4.041592012988566E+022
+  3.836277726498710E+022
+  3.592875711182362E+022
+  3.313515137014819E+022
+  3.003334732897511E+022
+  2.670574206621198E+022
+  2.326224982071323E+022
+  1.983179606799473E+022
+  1.654937010689898E+022
+  1.354064930096300E+022
+  1.090281212349396E+022
+  8.678898306966450E+021
+  6.857329372678204E+021
+  5.395559886221216E+021
+  4.239373840297413E+021
+  3.333993208383712E+021
+  2.629664629021413E+021
+  2.083868342742573E+021
+  1.661644208478917E+021
+  1.334983874884100E+021
+  1.081847370778103E+021
+  8.851074295976493E+020
+  7.315698435573012E+020
+  6.111297917667724E+020
+  5.160770774718478E+020
+  4.405404165189470E+020
+  3.800516614629824E+020
+  3.312087520781887E+020
+  2.914175484925923E+020
+  2.586954514154960E+020
+  2.315227602154033E+020
+  2.087305601870551E+020
+  1.894163759274204E+020
+  1.728808421016114E+020
+  1.585802560592596E+020
+  1.460911443014565E+020
+  1.350839613396932E+020
+  1.253038136446668E+020
+  1.165567352653261E+020
+  1.087006137112880E+020
+  1.016404669579009E+020
+  9.532852441690268E+019
+  8.977063462686325E+019
+  8.504215693544902E+019
+  8.131905452630314E+019
+  7.893390199201590E+019
+  7.847263018068366E+019
+  8.093686900450043E+019
+  8.800952163226634E+019
+  1.024781299560286E+020
+  1.288908964878953E+020
+  1.745404432315798E+020
+  2.508818832712771E+020
+  3.754772186526561E+020
+  5.744872232568806E+020
+  8.855585458965823E+020
+  1.360617357728039E+021
+  2.067520715483225E+021
+  3.088706690870283E+021
+  4.513998443012052E+021
+  6.423836785212014E+021
+  8.862367592846626E+021
+  1.181687526926134E+022
+  1.521586734827684E+022
+  1.893574118102068E+022
+  2.281635432190603E+022
+  2.668350554699645E+022
+  3.037255517105895E+022
+  3.374780827108145E+022
+  3.671434319643835E+022
+  3.922156917537375E+022
+  4.125989376138551E+022
+  4.285295100948802E+022
+  4.404791979776942E+022
+  4.490590719386786E+022
+  4.549360077223854E+022
+  4.587671009678164E+022
+  4.611525857071195E+022
+  4.626055440857403E+022
+  4.635359451376883E+022
+  4.642465532584042E+022
+  4.649383908701246E+022
+  4.657234389933565E+022
+  4.666421171336290E+022
+  4.676829733482277E+022
+  4.688021329276613E+022
+  4.699404916920831E+022
+  4.710373271058595E+022
+  4.720397527623847E+022
+  4.729080930954560E+022
+  4.736177619698368E+022
+  4.741586106100803E+022
+  4.745328704083825E+022
+  4.747525753732524E+022
+  4.748368662646453E+022
+  4.748094270201014E+022
+  4.746964622346179E+022
+  4.745253176704569E+022
+  4.743234990158601E+022
+  1.455095639408053E+025
+  1.455325009907791E+025
+  1.455517078422609E+025
+  1.455638269888480E+025
+  1.455650353089560E+025
+  1.455510704724571E+025
+  1.455173561389871E+025
+  1.454592321092024E+025
+  1.453722715238365E+025
+  1.452527030113213E+025
+  1.450979123608527E+025
+  1.449069549764820E+025
+  1.446810022698346E+025
+  1.444236283280107E+025
+  1.441408177739497E+025
+  1.438405658033302E+025
+  1.435319541119839E+025
+  1.432236186410419E+025
+  1.429215772468458E+025
+  1.426264599477705E+025
+  1.423302779194938E+025
+  1.420129683196572E+025
+  1.416390441232431E+025
+  1.411547462972596E+025
+  1.404861308755181E+025
+  1.395385264489932E+025
+  1.381977786384665E+025
+  1.363336718209961E+025
+  1.338058908418944E+025
+  1.304728373848159E+025
+  1.262034904325779E+025
+  1.208922097824478E+025
+  1.144758384312064E+025
+  1.069516288423344E+025
+  9.839347406911600E+024
+  8.896290595510690E+024
+  7.891076984410842E+024
+  6.856598188063131E+024
+  5.830978090951229E+024
+  4.853735535277761E+024
+  3.961289387747869E+024
+  3.181407653820168E+024
+  2.525841264323598E+024
+  1.990361328790246E+024
+  1.561793289082647E+024
+  1.223700932367186E+024
+  9.596323855279067E+023
+  7.547320762779375E+023
+  5.963595262486578E+023
+  4.741589825063449E+023
+  3.798601839226582E+023
+  3.069740923778326E+023
+  2.504718554707427E+023
+  2.064895751051288E+023
+  1.720755815776173E+023
+  1.449832660738336E+023
+  1.235060027807492E+023
+  1.063481262872715E+023
+  9.252543830371039E+022
+  8.128921170351198E+022
+  7.206853434790082E+022
+  6.442677731387802E+022
+  5.802883919083933E+022
+  5.261655846238505E+022
+  4.799029206772069E+022
+  4.399514119588865E+022
+  4.051068326537040E+022
+  3.744336209730006E+022
+  3.472091742309425E+022
+  3.228842163653085E+022
+  3.010565920754295E+022
+  2.814575929886435E+022
+  2.639520953866056E+022
+  2.485568733546322E+022
+  2.354861609273619E+022
+  2.252409210752360E+022
+  2.187698278128249E+022
+  2.177476731422152E+022
+  2.250431947879317E+022
+  2.454856354947775E+022
+  2.870891007861721E+022
+  3.629540365994250E+022
+  4.941262579584281E+022
+  7.137313564482109E+022
+  1.072665998564368E+023
+  1.646929510059696E+023
+  2.546183022915083E+023
+  3.922149210569477E+023
+  5.973827831916743E+023
+  8.944110776076139E+023
+  1.309943338309117E+024
+  1.868139904331792E+024
+  2.582830176313082E+024
+  3.451419529722350E+024
+  4.454161018439020E+024
+  5.555907941740926E+024
+  6.710482427327811E+024
+  7.867122625680669E+024
+  8.977350700628837E+024
+  1.000069060492881E+025
+  1.090824208578785E+025
+  1.168386632178689E+025
+  1.232335388209046E+025
+  1.283226971814989E+025
+  1.322320618518517E+025
+  1.351302332627990E+025
+  1.372043549105388E+025
+  1.386410410614124E+025
+  1.396126006992803E+025
+  1.402680835615575E+025
+  1.407284323881745E+025
+  1.410850175797936E+025
+  1.414008776667272E+025
+  1.417140030348984E+025
+  1.420419751588271E+025
+  1.423872532846884E+025
+  1.427424383683850E+025
+  1.430949659247353E+025
+  1.434308663145219E+025
+  1.437374323800874E+025
+  1.440048063408820E+025
+  1.442266328990507E+025
+  1.444000325470357E+025
+  1.445251981097183E+025
+  1.446048503313980E+025
+  1.446436490021829E+025
+  1.446476174780596E+025
+  1.446236933359374E+025
+  1.445794286590126E+025
+  1.445227603026271E+025
+  6.049052991877422E+023
+  6.050008403117405E+023
+  6.050805769243008E+023
+  6.051304854570852E+023
+  6.051346347407659E+023
+  6.050753021618402E+023
+  6.049334953435621E+023
+  6.046899030280774E+023
+  6.043261995464517E+023
+  6.038267767843354E+023
+  6.031807983100530E+023
+  6.023842917215438E+023
+  6.014419631182253E+023
+  6.003683489397455E+023
+  5.991878158557794E+023
+  5.979328789068247E+023
+  5.966403611340884E+023
+  5.953450509789953E+023
+  5.940707286800831E+023
+  5.928187397679356E+023
+  5.915546786886857E+023
+  5.901941608841007E+023
+  5.885890406739631E+023
+  5.865157128413576E+023
+  5.836672812607568E+023
+  5.796513910668877E+023
+  5.739954444978861E+023
+  5.661608143321471E+023
+  5.555675571232381E+023
+  5.416309303685422E+023
+  5.238104978478379E+023
+  5.016714008679067E+023
+  4.749551189614514E+023
+  4.436535992902409E+023
+  4.080763108720743E+023
+  3.688955680600749E+023
+  3.271531931928914E+023
+  2.842136654352268E+023
+  2.416572298780419E+023
+  2.011208141775633E+023
+  1.641118534892368E+023
+  1.317785334719202E+023
+  1.046050241983384E+023
+  8.241353914447674E+022
+  6.465607316677864E+022
+  5.064998053588875E+022
+  3.971242633605932E+022
+  3.122709131533014E+022
+  2.466972007755551E+022
+  1.961092604714963E+022
+  1.570787240903370E+022
+  1.269161705872781E+022
+  1.035377643178299E+022
+  8.534269283114212E+021
+  7.110829584788914E+021
+  5.990412748476958E+021
+  5.102349682391799E+021
+  4.392997361233686E+021
+  3.821614595524362E+021
+  3.357212440029565E+021
+  2.976165120440861E+021
+  2.660406541021739E+021
+  2.396073461869388E+021
+  2.172487178148961E+021
+  1.981390690505689E+021
+  1.816378395198785E+021
+  1.672470997949301E+021
+  1.545800508440432E+021
+  1.433379672049246E+021
+  1.332937936272568E+021
+  1.242812988978913E+021
+  1.161894157423058E+021
+  1.089622956510368E+021
+  1.026068839689646E+021
+  9.721176970774007E+020
+  9.298412076352206E+020
+  9.031629557071463E+020
+  8.990105254848619E+020
+  9.292516336768744E+020
+  1.013866933865844E+021
+  1.186018322217993E+021
+  1.499921436179702E+021
+  2.042684760264728E+021
+  2.951433751342771E+021
+  4.436889748077733E+021
+  6.813755322203743E+021
+  1.053620570538717E+022
+  1.623275280283172E+022
+  2.472796373005248E+022
+  3.702860231798932E+022
+  5.423953570819271E+022
+  7.736352768369708E+022
+  1.069762068332551E+023
+  1.429734382745488E+023
+  1.845406845246095E+023
+  2.302250474359166E+023
+  2.781157048397796E+023
+  3.261106098996221E+023
+  3.722008648685695E+023
+  4.147076969598257E+023
+  4.524308156331533E+023
+  4.846979217190087E+023
+  5.113306316004596E+023
+  5.325555325358118E+023
+  5.488906258783105E+023
+  5.610311577626587E+023
+  5.697497319943583E+023
+  5.758173478048811E+023
+  5.799463508257695E+023
+  5.827533401749477E+023
+  5.847390658515187E+023
+  5.862823143004404E+023
+  5.876449763115882E+023
+  5.889855534892780E+023
+  5.903782602716468E+023
+  5.918347987900500E+023
+  5.933260431044117E+023
+  5.948013739078198E+023
+  5.962041761211641E+023
+  5.974828412330651E+023
+  5.985973231671520E+023
+  5.995218514059789E+023
+  6.002448468661288E+023
+  6.007672898744597E+023
+  6.011005115573385E+023
+  6.012638019988525E+023
+  6.012820695117744E+023
+  6.011840162030688E+023
+  6.010009255309996E+023
+  6.007657289114751E+023
+  1.145993971963610E+026
+  1.146162425700952E+026
+  1.146319504519345E+026
+  1.146443011067639E+026
+  1.146505423767254E+026
+  1.146473606037186E+026
+  1.146309535782772E+026
+  1.145972212018519E+026
+  1.145420684273514E+026
+  1.144618393725203E+026
+  1.143538622024264E+026
+  1.142170437506291E+026
+  1.140524391354387E+026
+  1.138637009850498E+026
+  1.136572862689376E+026
+  1.134422861664691E+026
+  1.132297527892480E+026
+  1.130314246672533E+026
+  1.128578020539207E+026
+  1.127155954603175E+026
+  1.126046628986832E+026
+  1.125146518297604E+026
+  1.124216546813949E+026
+  1.122852562505217E+026
+  1.120463869515129E+026
+  1.116263966935475E+026
+  1.109277394027989E+026
+  1.098366229761780E+026
+  1.082279436025744E+026
+  1.059727758295368E+026
+  1.029485862071927E+026
+  9.905210396570971E+025
+  9.421433691871017E+025
+  8.841652364542097E+025
+  8.170491346079421E+025
+  7.420135543123087E+025
+  6.610612959298722E+025
+  5.768977839809906E+025
+  4.927232051112029E+025
+  4.119116035739399E+025
+  3.376263398551398E+025
+  2.723372288320438E+025
+  2.171728246481156E+025
+  1.718979690018298E+025
+  1.354970651013846E+025
+  1.066533739628261E+025
+  8.402662997961230E+024
+  6.639397514531009E+024
+  5.270686903290489E+024
+  4.210086990645995E+024
+  3.388181780101896E+024
+  2.750232907922686E+024
+  2.253620787816573E+024
+  1.865453010629651E+024
+  1.560495062874337E+024
+  1.319460324182383E+024
+  1.127638429022970E+024
+  9.738170420263383E+023
+  8.494460992298005E+023
+  7.479963801541549E+023
+  6.644706953408526E+023
+  5.950332620083197E+023
+  5.367297094216122E+023
+  4.872761081240664E+023
+  4.449003434926622E+023
+  4.082231141763764E+023
+  3.761689572971848E+023
+  3.479001382135708E+023
+  3.227681592200885E+023
+  3.002792158147851E+023
+  2.800713555757575E+023
+  2.619026033015164E+023
+  2.456512063188310E+023
+  2.313318478876934E+023
+  2.191357932451949E+023
+  2.095093759932389E+023
+  2.032952762879339E+023
+  2.019763718429637E+023
+  2.080845685452278E+023
+  2.258688981588309E+023
+  2.623592463345642E+023
+  3.290122277124480E+023
+  4.441750156851741E+023
+  6.366294427467072E+023
+  9.504387439988591E+023
+  1.451137270014042E+024
+  2.232864346268474E+024
+  3.425198389043935E+024
+  5.197049275477563E+024
+  7.752958271655596E+024
+  1.131473203124112E+025
+  1.607921360483224E+025
+  2.215098988112489E+025
+  2.949150463506611E+025
+  3.791521416463868E+025
+  4.710734409525905E+025
+  5.666382230781849E+025
+  6.614815423529256E+025
+  7.515066173475207E+025
+  8.333664959194155E+025
+  9.047534020015064E+025
+  9.644797915036261E+025
+  1.012387408715191E+026
+  1.049146758697182E+026
+  1.076010639030016E+026
+  1.094570945792681E+026
+  1.106548413486020E+026
+  1.113627837097630E+026
+  1.117339990962584E+026
+  1.118985838385862E+026
+  1.119596905697473E+026
+  1.119925774345767E+026
+  1.120460989650301E+026
+  1.121460602687715E+026
+  1.122998097695989E+026
+  1.125014083844678E+026
+  1.127367367948268E+026
+  1.129880117737413E+026
+  1.132373595917526E+026
+  1.134692916223496E+026
+  1.136721001613601E+026
+  1.138383272585150E+026
+  1.139645590553618E+026
+  1.140508392866470E+026
+  1.140999357608464E+026
+  1.141165726984403E+026
+  1.141067006939461E+026
+  1.140769114296179E+026
+  1.140340283629219E+026
+  1.139848186220014E+026
+  1.382339949115420E+024
+  1.382557041581579E+024
+  1.382739250732783E+024
+  1.382854843667404E+024
+  1.382867619914294E+024
+  1.382737142198834E+024
+  1.382419910260933E+024
+  1.381871539446219E+024
+  1.381049776231101E+024
+  1.379918522670056E+024
+  1.378452629644253E+024
+  1.376642805394836E+024
+  1.374499907020727E+024
+  1.372057721364577E+024
+  1.369373098638737E+024
+  1.366522206106465E+024
+  1.363591788937424E+024
+  1.360664631257621E+024
+  1.357798907163147E+024
+  1.355001821906389E+024
+  1.352198835354828E+024
+  1.349200722854784E+024
+  1.345671608312121E+024
+  1.341101755907997E+024
+  1.334789244422013E+024
+  1.325834677175417E+024
+  1.313152899697241E+024
+  1.295505445197383E+024
+  1.271557163656121E+024
+  1.239960031593111E+024
+  1.199465948546739E+024
+  1.149067566039972E+024
+  1.088161032618430E+024
+  1.016716638937390E+024
+  9.354334139080391E+023
+  8.458440225770748E+023
+  7.503310399339644E+023
+  6.520203746499694E+023
+  5.545366739752365E+023
+  4.616385223855166E+023
+  3.767909107257634E+023
+  3.026370611026130E+023
+  2.402973303426704E+023
+  1.893721629165154E+023
+  1.486107746588413E+023
+  1.164516635008352E+023
+  9.133136354716223E+022
+  7.183783761534596E+022
+  5.676942095806975E+022
+  4.514152644732320E+022
+  3.616776303811366E+022
+  2.923104843999768E+022
+  2.385311288875687E+022
+  1.966644601477800E+022
+  1.639027784325095E+022
+  1.381088663769825E+022
+  1.176590553341673E+022
+  1.013205543473128E+022
+  8.815684499800126E+021
+  7.745541215689332E+021
+  6.867291012287383E+021
+  6.139375811779812E+021
+  5.529898262098749E+021
+  5.014282740026267E+021
+  4.573522801934527E+021
+  4.192870660836215E+021
+  3.860860189280736E+021
+  3.568582807188635E+021
+  3.309157399047006E+021
+  3.077353165201820E+021
+  2.869340244140935E+021
+  2.682559603607120E+021
+  2.515724386980207E+021
+  2.368994254659140E+021
+  2.244409082913466E+021
+  2.146738656844521E+021
+  2.085014889647151E+021
+  2.075181569597250E+021
+  2.144546702106386E+021
+  2.339077465959406E+021
+  2.735050996081986E+021
+  3.457147048587821E+021
+  4.705649201644227E+021
+  6.795775677633596E+021
+  1.021181331261537E+022
+  1.567684064398143E+022
+  2.423410331658643E+022
+  3.732683481744626E+022
+  5.684773686943053E+022
+  8.510659352063697E+022
+  1.246364837652900E+023
+  1.777334191900098E+023
+  2.457098012706415E+023
+  3.283151260172584E+023
+  4.236672898381058E+023
+  5.284199652266845E+023
+  6.381787586797444E+023
+  7.481148776376536E+023
+  8.536185162080879E+023
+  9.508425270130055E+023
+  1.037041958506944E+024
+  1.110686316453303E+024
+  1.171379924825349E+024
+  1.219656541522515E+024
+  1.256717788572971E+024
+  1.284170484885010E+024
+  1.303797010611063E+024
+  1.317373877637911E+024
+  1.326540719155657E+024
+  1.332715178151196E+024
+  1.337046882626291E+024
+  1.340403622445212E+024
+  1.343383289719191E+024
+  1.346345273514804E+024
+  1.349454755059702E+024
+  1.352733153356403E+024
+  1.356108331036378E+024
+  1.359459332023215E+024
+  1.362652205166050E+024
+  1.365565390270049E+024
+  1.368104785990524E+024
+  1.370209908422639E+024
+  1.371853567923308E+024
+  1.373037955097706E+024
+  1.373789385294459E+024
+  1.374152626778800E+024
+  1.374185369229087E+024
+  1.373953906028617E+024
+  1.373530253815038E+024
+  1.372989953983600E+024
+  6.844841998875343E+025
+  6.845884574751262E+025
+  6.846806315468199E+025
+  6.847461957109627E+025
+  6.847679192198516E+025
+  6.847258442512114E+025
+  6.845978071457594E+025
+  6.843605658245154E+025
+  6.839914754849917E+025
+  6.834708109200078E+025
+  6.827846132553088E+025
+  6.819277140154077E+025
+  6.809065278858496E+025
+  6.797411030716537E+025
+  6.784657778788446E+025
+  6.771277307915911E+025
+  6.757827668124175E+025
+  6.744878442410984E+025
+  6.732901185586268E+025
+  6.722126755833427E+025
+  6.712376257843402E+025
+  6.702877739970333E+025
+  6.692085767513444E+025
+  6.677524693365054E+025
+  6.655678339973342E+025
+  6.621948877321201E+025
+  6.570706457682609E+025
+  6.495449455303808E+025
+  6.389093407577152E+025
+  6.244404186125320E+025
+  6.054584881889985E+025
+  5.814012042693957E+025
+  5.519090775321390E+025
+  5.169157736282760E+025
+  4.767309396854741E+025
+  4.320981537651685E+025
+  3.842076290415360E+025
+  3.346454322109434E+025
+  2.852705653814654E+025
+  2.380282349114006E+025
+  1.947283635673343E+025
+  1.567695415527933E+025
+  1.247705172135000E+025
+  9.856381620524676E+024
+  7.753634006631210E+024
+  6.090715825666887E+024
+  4.788740878936711E+024
+  3.776069624164721E+024
+  2.991486106930621E+024
+  2.384664420491945E+024
+  1.915291218479622E+024
+  1.551648042343458E+024
+  1.269090105180186E+024
+  1.048634958624705E+024
+  8.757472591399140E+023
+  7.393381735685740E+023
+  6.309651589143740E+023
+  5.442045369314475E+023
+  4.741662838424691E+023
+  4.171224334183754E+023
+  3.702244579475489E+023
+  3.312893848262445E+023
+  2.986385017085077E+023
+  2.709760281056186E+023
+  2.472980341443973E+023
+  2.268242114381627E+023
+  2.089469269702646E+023
+  1.931934118456392E+023
+  1.791980516372501E+023
+  1.666826576583504E+023
+  1.554434215990163E+023
+  1.453441220049908E+023
+  1.363162317379889E+023
+  1.283681125723339E+023
+  1.216078309801152E+023
+  1.162878068073612E+023
+  1.128852476279757E+023
+  1.122411014862923E+023
+  1.157932529135584E+023
+  1.259580550140623E+023
+  1.467386439126345E+023
+  1.846677185534024E+023
+  2.502216176503954E+023
+  3.598591954581484E+023
+  5.388182716032333E+023
+  8.247008181623803E+023
+  1.271628936904079E+024
+  1.954270020603240E+024
+  2.970223617255106E+024
+  4.438096282706803E+024
+  6.487170430285366E+024
+  9.233302846297485E+024
+  1.274021441609786E+025
+  1.698986861790372E+025
+  2.187964411671043E+025
+  2.723185094220079E+025
+  3.281607084642738E+025
+  3.838147103786323E+025
+  4.369079734860226E+025
+  4.854830795297187E+025
+  5.281686086589833E+025
+  5.642310777220404E+025
+  5.935276628734111E+025
+  6.163948831367985E+025
+  6.335096112499666E+025
+  6.457508400968749E+025
+  6.540795563014981E+025
+  6.594442350800564E+025
+  6.627128593445915E+025
+  6.646290166220471E+025
+  6.657885492731413E+025
+  6.666332433896007E+025
+  6.674582566732690E+025
+  6.684299903292403E+025
+  6.696109055676522E+025
+  6.709876196240215E+025
+  6.724987727841212E+025
+  6.740597717111631E+025
+  6.755824875928625E+025
+  6.769890577460748E+025
+  6.782198691890386E+025
+  6.792365308621603E+025
+  6.800211957617183E+025
+  6.805738338441974E+025
+  6.809087185078127E+025
+  6.810506989022200E+025
+  6.810316152007420E+025
+  6.808874472503018E+025
+  6.806563488451675E+025
+  6.803772184194696E+025
+  5.052483407644295E+025
+  5.053256468805750E+025
+  5.053936924275373E+025
+  5.054416749035172E+025
+  5.054568331471991E+025
+  5.054244403770258E+025
+  5.053281918871674E+025
+  5.051510312126359E+025
+  5.048763701780602E+025
+  5.044897743389418E+025
+  5.039810239954260E+025
+  5.033462967434748E+025
+  5.025901739620529E+025
+  5.017270998119945E+025
+  5.007818194137444E+025
+  4.997882787173984E+025
+  4.987865097745833E+025
+  4.978171432812003E+025
+  4.969133890209147E+025
+  4.960906129891607E+025
+  4.953340038865522E+025
+  4.945852164811942E+025
+  4.937292417202378E+025
+  4.925830226997059E+025
+  4.908874736815755E+025
+  4.883045654299993E+025
+  4.844210527396623E+025
+  4.787602976076411E+025
+  4.708035159393694E+025
+  4.600215885939502E+025
+  4.459181326749137E+025
+  4.280835085487820E+025
+  4.062575144831825E+025
+  3.803955440149670E+025
+  3.507291904999408E+025
+  3.178085158908363E+025
+  2.825110425844010E+025
+  2.460041138416499E+025
+  2.096543326435113E+025
+  1.748902624323232E+025
+  1.430397835142058E+025
+  1.151275724569651E+025
+  9.160490774633618E+024
+  7.234561492381822E+024
+  5.689665208379051E+024
+  4.468228450542490E+024
+  3.512151084766567E+024
+  2.768702768345282E+024
+  2.192845959786124E+024
+  1.747568856243370E+024
+  1.403232900290487E+024
+  1.136525366981213E+024
+  9.293375425753241E+023
+  7.677249393946804E+023
+  6.410125531571249E+023
+  5.410585052567212E+023
+  4.616653746056842E+023
+  3.981187987416044E+023
+  3.468307656856697E+023
+  3.050665060075076E+023
+  2.707368337930924E+023
+  2.422410306638061E+023
+  2.183483880077167E+023
+  1.981091206569934E+023
+  1.807875034115238E+023
+  1.658117929284754E+023
+  1.527368411852308E+023
+  1.412163519831498E+023
+  1.309825517511337E+023
+  1.218317166651858E+023
+  1.136146027289970E+023
+  1.062314612203105E+023
+  9.963211481972157E+022
+  9.382269720130093E+022
+  8.888238106938765E+022
+  8.499611747776719E+022
+  8.251362159659656E+022
+  8.205128372470123E+022
+  8.466322252856074E+022
+  9.212118804588791E+022
+  1.073609192378718E+023
+  1.351740662260868E+023
+  1.832462667865568E+023
+  2.636543421245405E+023
+  3.949205710510868E+023
+  6.046476834862583E+023
+  9.325756276329222E+023
+  1.433546253495140E+024
+  2.179270157592396E+024
+  3.256932559738906E+024
+  4.761629644635382E+024
+  6.778689304226060E+024
+  9.355246515109200E+024
+  1.247845974759674E+025
+  1.607337711813273E+025
+  2.000985799113253E+025
+  2.411891694109780E+025
+  2.821641194489262E+025
+  3.212799556004235E+025
+  3.570964588785332E+025
+  3.886025397546521E+025
+  4.152548659669797E+025
+  4.369436167200634E+025
+  4.539111241153934E+025
+  4.666500813854957E+025
+  4.758022029165210E+025
+  4.820701041123320E+025
+  4.861479464587428E+025
+  4.886715300837566E+025
+  4.901860453749608E+025
+  4.911288946666151E+025
+  4.918249982879767E+025
+  4.924921582923615E+025
+  4.932540615785356E+025
+  4.941583602375826E+025
+  4.951971504980665E+025
+  4.963272891992605E+025
+  4.974884368738451E+025
+  4.986174277374389E+025
+  4.996583472255187E+025
+  5.005683743377867E+025
+  5.013199755997055E+025
+  5.019004421681371E+025
+  5.023099376047208E+025
+  5.025589763131761E+025
+  5.026657458766368E+025
+  5.026535300911217E+025
+  5.025486630592107E+025
+  5.023791228197574E+025
+  5.021735051837057E+025
+  1.379417548480536E+025
+  1.379617571904436E+025
+  1.379801459300613E+025
+  1.379942290377311E+025
+  1.380007031148560E+025
+  1.379956178314775E+025
+  1.379744554923883E+025
+  1.379323427889053E+025
+  1.378643870193558E+025
+  1.377661597388570E+025
+  1.376343051922789E+025
+  1.374672035953353E+025
+  1.372656046095413E+025
+  1.370331233326663E+025
+  1.367764604181152E+025
+  1.365051932781822E+025
+  1.362309948218474E+025
+  1.359661681010460E+025
+  1.357214410219362E+025
+  1.355030475921726E+025
+  1.353092272788696E+025
+  1.351263892094754E+025
+  1.349252948510009E+025
+  1.346576934781480E+025
+  1.342538874036059E+025
+  1.336217074053788E+025
+  1.326473534506529E+025
+  1.311985185042692E+025
+  1.291301741968557E+025
+  1.262933421018303E+025
+  1.225470505242520E+025
+  1.177733963478292E+025
+  1.118951020715347E+025
+  1.048941341224032E+025
+  9.682889110518816E+024
+  8.784640800402474E+024
+  7.818539401054367E+024
+  6.816632567770186E+024
+  5.816674736303019E+024
+  4.858338655513881E+024
+  3.978694500609875E+024
+  3.206548317216590E+024
+  2.554858996024869E+024
+  2.020533651617115E+024
+  1.591336505239219E+024
+  1.251545694449542E+024
+  9.852194627303682E+023
+  7.778463403637088E+023
+  6.170044450085500E+023
+  4.924667628556559E+023
+  3.960303730519448E+023
+  3.212335057744374E+023
+  2.630497536668608E+023
+  2.176033204818784E+023
+  1.819232332069625E+023
+  1.537405881980426E+023
+  1.313261486205093E+023
+  1.133628369832332E+023
+  9.884700680672408E+022
+  8.701274412676363E+022
+  7.727423145959116E+022
+  6.918208353747376E+022
+  6.239038582848667E+022
+  5.663187654331255E+022
+  5.169929874724833E+022
+  4.743141929778089E+022
+  4.370258128070021E+022
+  4.041494494456808E+022
+  3.749279869056318E+022
+  3.487850748357742E+022
+  3.252983408842032E+022
+  3.041854589519182E+022
+  2.853044198086763E+022
+  2.686725105493219E+022
+  2.545133376905804E+022
+  2.433487883770065E+022
+  2.361646154247428E+022
+  2.346963433584602E+022
+  2.419088047659337E+022
+  2.627801657331982E+022
+  3.055509513805084E+022
+  3.836579454798079E+022
+  5.186315398686153E+022
+  7.442675475178962E+022
+  1.112339464047946E+023
+  1.699905685432349E+023
+  2.617752566710081E+023
+  4.018522087970248E+023
+  6.101426489098692E+023
+  9.108079288197388E+023
+  1.330109748658101E+024
+  1.891458637902608E+024
+  2.607496299041484E+024
+  3.474078821213701E+024
+  4.469773005701416E+024
+  5.557885584836730E+024
+  6.691105392325359E+024
+  7.818156572294412E+024
+  8.890755897423532E+024
+  9.869293406350082E+024
+  1.072626935095843E+025
+  1.144728925026158E+025
+  1.203003450172078E+025
+  1.248193668053113E+025
+  1.281730205848702E+025
+  1.305446621528597E+025
+  1.321333011296807E+025
+  1.331342780418735E+025
+  1.337254179208454E+025
+  1.340581480317380E+025
+  1.342528554064598E+025
+  1.343977642188168E+025
+  1.345506537799687E+025
+  1.347427326563508E+025
+  1.349839364747773E+025
+  1.352688796849942E+025
+  1.355827242057546E+025
+  1.359063580178069E+025
+  1.362204832646509E+025
+  1.365084408963603E+025
+  1.367577968314275E+025
+  1.369608684015093E+025
+  1.371144840453648E+025
+  1.372193159316548E+025
+  1.372790536512441E+025
+  1.372995446894713E+025
+  1.372879808771970E+025
+  1.372522536253850E+025
+  1.372005105850230E+025
+  1.371408449383448E+025
+  7.123360047382560E+025
+  7.124393907679325E+025
+  7.125354516282309E+025
+  7.126104853899602E+025
+  7.126475418404792E+025
+  7.126262155179329E+025
+  7.125230456356462E+025
+  7.123126169764861E+025
+  7.119693273725616E+025
+  7.114699425087675E+025
+  7.107968196791010E+025
+  7.099414354997624E+025
+  7.089077730894070E+025
+  7.077150007498926E+025
+  7.063987119303063E+025
+  7.050099186095647E+025
+  7.036110388876922E+025
+  7.022682859690304E+025
+  7.010401580561735E+025
+  6.999621611283310E+025
+  6.990284493042833E+025
+  6.981716734133382E+025
+  6.972428911725517E+025
+  6.959938172074775E+025
+  6.940639154919885E+025
+  6.909748535928900E+025
+  6.861347015788056E+025
+  6.788540574343468E+025
+  6.683760712905043E+025
+  6.539220512426660E+025
+  6.347536912868787E+025
+  6.102515106405943E+025
+  5.800063493904271E+025
+  5.439164865392494E+025
+  5.022774459152066E+025
+  4.558460131921025E+025
+  4.058566854675368E+025
+  3.539708290036885E+025
+  3.021488156842266E+025
+  2.524533613320398E+025
+  2.068144342257436E+025
+  1.667344825822737E+025
+  1.328933072210009E+025
+  1.051362032534814E+025
+  8.283231974872923E+024
+  6.516846788347113E+024
+  5.131895397670869E+024
+  4.053153280209868E+024
+  3.216188194212417E+024
+  2.567926064020885E+024
+  2.065778522159624E+024
+  1.676183810567945E+024
+  1.373025756740847E+024
+  1.136159564389445E+024
+  9.501382227671203E+023
+  8.031612235531895E+023
+  6.862320563920132E+023
+  5.924964312684856E+023
+  5.167296594531785E+023
+  4.549434637805619E+023
+  4.040865041316665E+023
+  3.618174256007659E+023
+  3.263334832777686E+023
+  2.962414696189216E+023
+  2.704607046868895E+023
+  2.481502857900240E+023
+  2.286547113880206E+023
+  2.114634899491606E+023
+  1.961815203822534E+023
+  1.825079956809466E+023
+  1.702224548341993E+023
+  1.591775307490303E+023
+  1.492990970536799E+023
+  1.405961623101878E+023
+  1.331853747616048E+023
+  1.273389372902743E+023
+  1.235708707997510E+023
+  1.227859377717601E+023
+  1.265293811450792E+023
+  1.373951552089232E+023
+  1.596761183302180E+023
+  2.003704568282065E+023
+  2.706889897663768E+023
+  3.882246114625475E+023
+  5.799212967344158E+023
+  8.858695441638901E+023
+  1.363687380038016E+024
+  2.092729644716680E+024
+  3.176512372253087E+024
+  4.740507005604007E+024
+  6.920969166104890E+024
+  9.839153071096540E+024
+  1.356013586323511E+025
+  1.806159116197889E+025
+  2.323128184168637E+025
+  2.887774068056789E+025
+  3.475452818686442E+025
+  4.059490832090224E+025
+  4.614804827826680E+025
+  5.120852277045784E+025
+  5.563411019613302E+025
+  5.935087280222678E+025
+  6.234771247477416E+025
+  6.466420202484285E+025
+  6.637557900117833E+025
+  6.757791582790646E+025
+  6.837528850973216E+025
+  6.886971960658970E+025
+  6.915397517316095E+025
+  6.930694775495053E+025
+  6.939124898312293E+025
+  6.945263828221818E+025
+  6.952093510847439E+025
+  6.961205840630851E+025
+  6.973081078646892E+025
+  6.987400447215664E+025
+  7.003354254005684E+025
+  7.019913689077194E+025
+  7.036045263691235E+025
+  7.050858805163991E+025
+  7.063690319155172E+025
+  7.074129098607696E+025
+  7.082004446302590E+025
+  7.087349850178196E+025
+  7.090358744781492E+025
+  7.091338539931687E+025
+  7.090667113152164E+025
+  7.088758217444916E+025
+  7.086037590513288E+025
+  7.082926265003519E+025
+  7.424673108300806E+023
+  7.425796138203862E+023
+  7.426780277298621E+023
+  7.427467385964724E+023
+  7.427671033744793E+023
+  7.427176228213738E+023
+  7.425744759318608E+023
+  7.423126774448781E+023
+  7.419077915638803E+023
+  7.413383091496585E+023
+  7.405885627008155E+023
+  7.396518155402336E+023
+  7.385331013697785E+023
+  7.372512857584076E+023
+  7.358396738401260E+023
+  7.343444237423095E+023
+  7.328200833038627E+023
+  7.313217357699364E+023
+  7.298935233746503E+023
+  7.285537292844926E+023
+  7.272771195486670E+023
+  7.259758137074917E+023
+  7.244804750025878E+023
+  7.225240017606537E+023
+  7.197301059710139E+023
+  7.156091818392797E+023
+  7.095637506805628E+023
+  7.009056012931889E+023
+  6.888865700380992E+023
+  6.727446344306608E+023
+  6.517663414336051E+023
+  6.253650963096101E+023
+  5.931720277863133E+023
+  5.551318084766019E+023
+  5.115903005757053E+023
+  4.633554385315685E+023
+  4.117096599687682E+023
+  3.583545512593627E+023
+  3.052786861897208E+023
+  2.545577831441981E+023
+  2.081183848257521E+023
+  1.674439137133320E+023
+  1.331827237052484E+023
+  1.051435725284987E+023
+  8.266099820564092E+022
+  6.489254814564464E+022
+  5.098947645388727E+022
+  4.018226760458226E+022
+  3.181415919948393E+022
+  2.534574732927180E+022
+  2.034530523416132E+022
+  1.647340489844265E+022
+  1.346649676349651E+022
+  1.112171440968396E+022
+  9.283812474574199E+021
+  7.834425109891709E+021
+  6.683484208261227E+021
+  5.762496572028858E+021
+  5.019348918993482E+021
+  4.414332101604371E+021
+  3.917119275438362E+021
+  3.504480386317190E+021
+  3.158559581141361E+021
+  2.865580135284111E+021
+  2.614872719925999E+021
+  2.398147805135417E+021
+  2.208952591254099E+021
+  2.042268096576690E+021
+  1.894213971546103E+021
+  1.761838374476111E+021
+  1.642979038843709E+021
+  1.536190902221734E+021
+  1.440747183630725E+021
+  1.356737167188413E+021
+  1.285308956437858E+021
+  1.229144642642246E+021
+  1.193316518793787E+021
+  1.186766604323341E+021
+  1.224790408444158E+021
+  1.333102096327375E+021
+  1.554318770031563E+021
+  1.958015046398009E+021
+  2.655813003314777E+021
+  3.823155312733785E+021
+  5.729195654762952E+021
+  8.775166150830560E+021
+  1.353893393926202E+022
+  2.081830402189113E+022
+  3.165701696422893E+022
+  4.732490329349041E+022
+  6.920840231609273E+022
+  9.855391984646071E+022
+  1.360545702739878E+023
+  1.815328175280573E+023
+  2.339083179431566E+023
+  2.912972067394312E+023
+  3.512484355660296E+023
+  4.110872601659526E+023
+  4.682776575761076E+023
+  5.207210576850526E+023
+  5.669400187052762E+023
+  6.061352690874455E+023
+  6.381368018418447E+023
+  6.632863343868194E+023
+  6.822898691764513E+023
+  6.960707352661488E+023
+  7.056417265170272E+023
+  7.120044551301381E+023
+  7.160769507951918E+023
+  7.186469171771026E+023
+  7.203468702817114E+023
+  7.216473747655287E+023
+  7.228648245087186E+023
+  7.241802357315161E+023
+  7.256653280200759E+023
+  7.273120167147313E+023
+  7.290616245607146E+023
+  7.308307812380692E+023
+  7.325320113227653E+023
+  7.340881368525545E+023
+  7.354405922513657E+023
+  7.365525078933399E+023
+  7.374079985498800E+023
+  7.380093428077613E+023
+  7.383733753308234E+023
+  7.385276763461099E+023
+  7.385069196353835E+023
+  7.383499964211026E+023
+  7.380980618156199E+023
+  7.377931155094625E+023
+  1.386576730941850E+024
+  1.386764176249261E+024
+  1.386948960789149E+024
+  1.387107624078842E+024
+  1.387209386706568E+024
+  1.387215330603402E+024
+  1.387078866462716E+024
+  1.386747736728573E+024
+  1.386167543772443E+024
+  1.385287080914619E+024
+  1.384065256442687E+024
+  1.382478886801615E+024
+  1.380530442111018E+024
+  1.378254548500863E+024
+  1.375721697913891E+024
+  1.373037431434610E+024
+  1.370335336014993E+024
+  1.367762517533722E+024
+  1.365456806938750E+024
+  1.363515851490154E+024
+  1.361959400207602E+024
+  1.360687373568457E+024
+  1.359437510292111E+024
+  1.357747304997659E+024
+  1.354925449137864E+024
+  1.350038038337906E+024
+  1.341914517593360E+024
+  1.329177887721647E+024
+  1.310303222994414E+024
+  1.283707933518118E+024
+  1.247875924797990E+024
+  1.201514957202821E+024
+  1.143741102715994E+024
+  1.074275701114654E+024
+  9.936291870498634E+023
+  9.032348902983242E+023
+  8.054889436987557E+023
+  7.036560465940575E+023
+  6.016203481310046E+023
+  5.034964073119160E+023
+  4.131597374303432E+023
+  3.336539834900418E+023
+  2.663924957131920E+023
+  2.111224356560263E+023
+  1.666326240575697E+023
+  1.313376200372096E+023
+  1.036170860854207E+023
+  8.198890658208616E+022
+  6.517985274693941E+022
+  5.213860090696981E+022
+  4.201974371769011E+022
+  3.415576538099956E+022
+  2.802629035231439E+022
+  2.322922636800066E+022
+  1.945573047047636E+022
+  1.646947992252105E+022
+  1.409001704954133E+022
+  1.217963757412006E+022
+  1.063321371755109E+022
+  9.370373728324435E+021
+  8.329534935353424E+021
+  7.463374277411273E+021
+  6.735402619716268E+021
+  6.117380806244333E+021
+  5.587374847371965E+021
+  5.128295540934479E+021
+  4.726805649236189E+021
+  4.372507321427015E+021
+  4.057345752107670E+021
+  3.775184247710520E+021
+  3.521523304624406E+021
+  3.293354806590098E+021
+  3.089165701922976E+021
+  2.909138713189658E+021
+  2.755648367548382E+021
+  2.634230009790676E+021
+  2.555323074884086E+021
+  2.537278320353708E+021
+  2.611396350387986E+021
+  2.830155090650338E+021
+  3.280297458198898E+021
+  4.103059784739310E+021
+  5.524414718490165E+021
+  7.898507898131591E+021
+  1.176694808023820E+022
+  1.793433878754194E+022
+  2.755501390705820E+022
+  4.221555705715166E+022
+  6.398058338125686E+022
+  9.534480329169315E+022
+  1.390050596475128E+023
+  1.973406395612848E+023
+  2.715891129708986E+023
+  3.612280123125835E+023
+  4.639365463994636E+023
+  5.758227067715814E+023
+  6.919206552612733E+023
+  8.068921171215346E+023
+  9.157520374972661E+023
+  1.014454253364716E+024
+  1.100238721309994E+024
+  1.171722656906279E+024
+  1.228781696311435E+024
+  1.272298528649327E+024
+  1.303857249973630E+024
+  1.325443519518510E+024
+  1.339186429785261E+024
+  1.347157051057869E+024
+  1.351224852355658E+024
+  1.352966452714097E+024
+  1.353619134732859E+024
+  1.354071662585756E+024
+  1.354885321762148E+024
+  1.356337923273605E+024
+  1.358482884426761E+024
+  1.361215019014333E+024
+  1.364334990910917E+024
+  1.367605798940407E+024
+  1.370796931618385E+024
+  1.373714351049481E+024
+  1.376216671556682E+024
+  1.378219599769369E+024
+  1.379691924685594E+024
+  1.380646813353000E+024
+  1.381131394503433E+024
+  1.381216107399185E+024
+  1.380984759204673E+024
+  1.380526623452970E+024
+  1.379930972525316E+024
+  1.379283390974576E+024
+  9.838415260612912E+022
+  9.839367940643906E+022
+  9.840634400311758E+022
+  9.842140581017675E+022
+  9.843732471165227E+022
+  9.845158031577009E+022
+  9.846060876931136E+022
+  9.845989313261911E+022
+  9.844422335134920E+022
+  9.840815817749694E+022
+  9.834668064718009E+022
+  9.825599396364615E+022
+  9.813438100564268E+022
+  9.798302016879434E+022
+  9.780661451582439E+022
+  9.761366884557414E+022
+  9.741624825253670E+022
+  9.722907324153341E+022
+  9.706785375855142E+022
+  9.694684093648541E+022
+  9.687567807409148E+022
+  9.685574979192129E+022
+  9.687634245056379E+022
+  9.691102032594639E+022
+  9.691467564227054E+022
+  9.682172098990653E+022
+  9.654586683102743E+022
+  9.598188093474454E+022
+  9.500967570016444E+022
+  9.350101109459464E+022
+  9.132900118975840E+022
+  8.838040340793744E+022
+  8.457027057503348E+022
+  7.985790287177661E+022
+  7.426217503072332E+022
+  6.787339470211957E+022
+  6.085821497052983E+022
+  5.345427617634291E+022
+  4.595264154129468E+022
+  3.866879985399332E+022
+  3.190652490093861E+022
+  2.591113700932270E+022
+  2.080555223101090E+022
+  1.658438507568288E+022
+  1.316652470836105E+022
+  1.043947450191177E+022
+  8.285553246977020E+021
+  6.595603334519082E+021
+  5.274892921700633E+021
+  4.244551003766697E+021
+  3.440696465466123E+021
+  2.812559195120008E+021
+  2.320317766201246E+021
+  1.933022954575756E+021
+  1.626769605147598E+021
+  1.383166242001269E+021
+  1.188094499238651E+021
+  1.030725003236675E+021
+  9.027482786885893E+020
+  7.977799971684905E+020
+  7.109045037261905E+020
+  6.383263794934692E+020
+  5.771055262424663E+020
+  5.249563497730551E+020
+  4.800959097757473E+020
+  4.411294033504397E+020
+  4.069641407088650E+020
+  3.767453723248976E+020
+  3.498090759163692E+020
+  3.256482666297562E+020
+  3.038907350198284E+020
+  2.842875639323993E+020
+  2.667136162547855E+020
+  2.511838299785023E+020
+  2.378932039315141E+020
+  2.272946756263983E+020
+  2.202388916767436E+020
+  2.182147211234456E+020
+  2.237510764320306E+020
+  2.410708304687117E+020
+  2.771268316668760E+020
+  3.431955167816230E+020
+  4.572458657204803E+020
+  6.473182821034540E+020
+  9.560966720218678E+020
+  1.446665419254533E+021
+  2.209004486484870E+021
+  3.365957508483773E+021
+  5.076087283327519E+021
+  7.528984858581166E+021
+  1.092644710585944E+022
+  1.544119567150756E+022
+  2.115285887170749E+022
+  2.800167408893840E+022
+  3.578859142424931E+022
+  4.419634490464612E+022
+  5.283112096926881E+022
+  6.127889672892371E+022
+  6.916204689872331E+022
+  7.618353829139506E+022
+  8.215155201617320E+022
+  8.698381793306342E+022
+  9.069582157348352E+022
+  9.337925719545343E+022
+  9.517692046151220E+022
+  9.625864546134609E+022
+  9.680093177065715E+022
+  9.697127908888440E+022
+  9.691722231229584E+022
+  9.675958846125495E+022
+  9.658937677969028E+022
+  9.646768302006221E+022
+  9.642810554513440E+022
+  9.648103121625013E+022
+  9.661912326725147E+022
+  9.682327976889057E+022
+  9.706835642303122E+022
+  9.732807428353049E+022
+  9.757873878363791E+022
+  9.780162670955469E+022
+  9.798410026818498E+022
+  9.811965971128613E+022
+  9.820724638481401E+022
+  9.825013869238139E+022
+  9.825471520891231E+022
+  9.822923521097019E+022
+  9.818273401647871E+022
+  9.812414765168501E+022
+  9.806170763719104E+022
+  9.800256664828606E+022
+  1.752772953367597E+023
+  1.753033175495866E+023
+  1.753267274109169E+023
+  1.753439557287727E+023
+  1.753507033316034E+023
+  1.753419128456349E+023
+  1.753118806342587E+023
+  1.752545272107589E+023
+  1.751638141124043E+023
+  1.750343348926959E+023
+  1.748620507976801E+023
+  1.746450837075174E+023
+  1.743844623821381E+023
+  1.740846905279373E+023
+  1.737539678939478E+023
+  1.734038785493739E+023
+  1.730483733570721E+023
+  1.727019137566644E+023
+  1.723767129465780E+023
+  1.720791117970450E+023
+  1.718052557438324E+023
+  1.715363797868590E+023
+  1.712341391050329E+023
+  1.708365208876817E+023
+  1.702549247172530E+023
+  1.693730031596199E+023
+  1.680478241137875E+023
+  1.661138724326505E+023
+  1.633903621899668E+023
+  1.596922635141331E+023
+  1.548452917785983E+023
+  1.487047518185247E+023
+  1.411774609406581E+023
+  1.322449378516122E+023
+  1.219847211499678E+023
+  1.105853597859790E+023
+  9.834985038997532E+022
+  8.568282946847701E+022
+  7.305927320778475E+022
+  6.097679961883424E+022
+  4.989898375670836E+022
+  4.018458929888164E+022
+  3.199297169026737E+022
+  2.528217616792021E+022
+  1.989601455116151E+022
+  1.563515393035526E+022
+  1.229806372642476E+022
+  9.701626205410463E+021
+  7.689301464798004E+021
+  6.132350792719211E+021
+  4.927614309584421E+021
+  3.993900174418013E+021
+  3.268103751295315E+021
+  2.701604032196121E+021
+  2.257158977064165E+021
+  1.906348063646460E+021
+  1.627526196505975E+021
+  1.404218879781155E+021
+  1.223880741320515E+021
+  1.076944451698971E+021
+  9.560971540386366E+020
+  8.557327074372787E+020
+  7.715384877221742E+020
+  7.001844832475526E+020
+  6.390898344619662E+020
+  5.862479028087677E+020
+  5.400956205534801E+020
+  4.994165056477338E+020
+  4.632695769532152E+020
+  4.309387403940946E+020
+  4.018993246093028E+020
+  3.758006649065861E+020
+  3.524664071834831E+020
+  3.319181491857017E+020
+  3.144340645203534E+020
+  3.006635958305256E+020
+  2.918340377121009E+020
+  2.901073545839752E+020
+  2.991788933300794E+020
+  3.252567198713640E+020
+  3.786226639348262E+020
+  4.760509191969007E+020
+  6.444343997317868E+020
+  9.260111481090630E+020
+  1.385528986987615E+021
+  2.119424858946149E+021
+  3.266455429251846E+021
+  5.017975105347016E+021
+  7.623993294259765E+021
+  1.138815876437077E+022
+  1.664119036222009E+022
+  2.367903723472928E+022
+  3.266368243524495E+022
+  4.354740248771574E+022
+  5.606582003950365E+022
+  6.976260690795548E+022
+  8.404699680751293E+022
+  9.827673252555470E+022
+  1.118451574055098E+023
+  1.242526337135936E+023
+  1.351500734754083E+023
+  1.443519628978622E+023
+  1.518239892934438E+023
+  1.576543175957272E+023
+  1.620178454207148E+023
+  1.651407154467737E+023
+  1.672695184976771E+023
+  1.686471000912787E+023
+  1.694951928630926E+023
+  1.700032427621630E+023
+  1.703225224218053E+023
+  1.705646269680732E+023
+  1.708035002612837E+023
+  1.710801380956195E+023
+  1.714090607951542E+023
+  1.717856053937033E+023
+  1.721931301030950E+023
+  1.726093851926062E+023
+  1.730115585484895E+023
+  1.733797824144683E+023
+  1.736991284012590E+023
+  1.739603051132699E+023
+  1.741594147572164E+023
+  1.742971860653345E+023
+  1.743780126936545E+023
+  1.744089464021091E+023
+  1.743987372328374E+023
+  1.743570731102962E+023
+  1.742940590637776E+023
+  1.742198464949681E+023
+  1.974407375816474E+026
+  1.974659816942812E+026
+  1.974929218733253E+026
+  1.975187040526108E+026
+  1.975392342128250E+026
+  1.975490041292454E+026
+  1.975411308614953E+026
+  1.975076579863615E+026
+  1.974401274970980E+026
+  1.973304676139725E+026
+  1.971721656512682E+026
+  1.969616139000020E+026
+  1.966994800414007E+026
+  1.963919047949858E+026
+  1.960512710180695E+026
+  1.956962565168659E+026
+  1.953508916090803E+026
+  1.950423921855474E+026
+  1.947976338668955E+026
+  1.946382775200529E+026
+  1.945747441804179E+026
+  1.945994459473817E+026
+  1.946798757382888E+026
+  1.947523090997475E+026
+  1.947169515363411E+026
+  1.944353695889227E+026
+  1.937309896570486E+026
+  1.923933664328852E+026
+  1.901868377184661E+026
+  1.868640826135947E+026
+  1.821849115311821E+026
+  1.759402034915197E+026
+  1.679801141396516E+026
+  1.582444143025725E+026
+  1.467911516079005E+026
+  1.338180889161436E+026
+  1.196702419659959E+026
+  1.048272730956792E+026
+  8.986733572419391E+025
+  7.540929883797405E+025
+  6.204205508133174E+025
+  5.023438794811698E+025
+  4.021285165491242E+025
+  3.195353456066006E+025
+  2.528655988164991E+025
+  1.998323746057019E+025
+  1.580714558295598E+025
+  1.254053236881587E+025
+  9.995397960238094E+024
+  8.015881357018615E+024
+  6.476213525175621E+024
+  5.276779980475223E+024
+  4.339700498610546E+024
+  3.604634315460733E+024
+  3.025114811693511E+024
+  2.565498332795813E+024
+  2.198502143311439E+024
+  1.903259094735677E+024
+  1.663802801058812E+024
+  1.467900114525225E+024
+  1.306157869117836E+024
+  1.171343075793827E+024
+  1.057867542578571E+024
+  9.613982537831502E+023
+  8.785635050569319E+023
+  8.067318109168680E+023
+  7.438461714998300E+023
+  6.883006573647332E+023
+  6.388497307154298E+023
+  5.945435828748179E+023
+  5.546853846351543E+023
+  5.188091425754105E+023
+  4.866803872444883E+023
+  4.583269750936899E+023
+  4.341150174236781E+023
+  4.148970331825596E+023
+  4.022782059869654E+023
+  3.990751829761359E+023
+  4.100837886174669E+023
+  4.433307229635945E+023
+  5.120610683241443E+023
+  6.378035982098624E+023
+  8.549418713606034E+023
+  1.217259055719127E+024
+  1.806836466691199E+024
+  2.745330099978668E+024
+  4.206816630466590E+024
+  6.429824862617179E+024
+  9.723597948109803E+024
+  1.445999118394777E+025
+  2.103810423708538E+025
+  2.980513062328335E+025
+  4.093213832687282E+025
+  5.432236061423055E+025
+  6.960804391782058E+025
+  8.618766323093032E+025
+  1.033036057847979E+026
+  1.201496489311602E+026
+  1.359807412565730E+026
+  1.502003645143837E+026
+  1.624110245100326E+026
+  1.724257542731773E+026
+  1.802480701554813E+026
+  1.860323654308377E+026
+  1.900366421658902E+026
+  1.925765889019510E+026
+  1.939862942789830E+026
+  1.945877255543212E+026
+  1.946690662757997E+026
+  1.944710408277894E+026
+  1.941800881935382E+026
+  1.939272809035539E+026
+  1.937919356186343E+026
+  1.938088132478242E+026
+  1.939776836510627E+026
+  1.942739348438848E+026
+  1.946589442619235E+026
+  1.950891468096761E+026
+  1.955230940492336E+026
+  1.959262048152439E+026
+  1.962732676967991E+026
+  1.965490335356129E+026
+  1.967474300593333E+026
+  1.968700014404678E+026
+  1.969240570920246E+026
+  1.969207851640639E+026
+  1.968734970616210E+026
+  1.967962165134527E+026
+  1.967026861714819E+026
+  1.966057081498062E+026
+  1.391581077768855E+025
+  1.391783966902040E+025
+  1.391971008657874E+025
+  1.392115057669472E+025
+  1.392182728830343E+025
+  1.392134030269809E+025
+  1.391923170874147E+025
+  1.391500716917943E+025
+  1.390817026244093E+025
+  1.389827193539274E+025
+  1.388497273667875E+025
+  1.386811072731630E+025
+  1.384776645981342E+025
+  1.382431403706141E+025
+  1.379844412379733E+025
+  1.377114329851630E+025
+  1.374361510269228E+025
+  1.371713138743006E+025
+  1.369280823153005E+025
+  1.367130908735192E+025
+  1.365248851809818E+025
+  1.363500162066408E+025
+  1.361591511500047E+025
+  1.359036429188040E+025
+  1.355130434210784E+025
+  1.348940491397296E+025
+  1.339313411676814E+025
+  1.324907432458720E+025
+  1.304250810554716E+025
+  1.275830698897108E+025
+  1.238214325355842E+025
+  1.190201658025890E+025
+  1.131003386757859E+025
+  1.060429712396529E+025
+  9.790647311631135E+024
+  8.883904354131606E+024
+  7.908179668160928E+024
+  6.895878139181489E+024
+  5.885201591928510E+024
+  4.916315545668907E+024
+  4.026771856691911E+024
+  3.245774030906613E+024
+  2.586494226554865E+024
+  2.045856037721606E+024
+  1.611520818462899E+024
+  1.267611324752512E+024
+  9.980182086446854E+023
+  7.880718834577646E+023
+  6.252116673319406E+023
+  4.990939929149249E+023
+  4.014208907757776E+023
+  3.256546200465924E+023
+  2.667088948812634E+023
+  2.206611823589940E+023
+  1.845042721706167E+023
+  1.559412849348571E+023
+  1.332214398989860E+023
+  1.150110859807822E+023
+  1.002938247445422E+023
+  8.829391928532798E+022
+  7.841797022769810E+022
+  7.021072439589093E+022
+  6.332171132925514E+022
+  5.748011971618889E+022
+  5.247591790587347E+022
+  4.814569784625331E+022
+  4.436209584479118E+022
+  4.102593513492210E+022
+  3.806046440420280E+022
+  3.540725444426337E+022
+  3.302348515694659E+022
+  3.088053471415781E+022
+  2.896400735894582E+022
+  2.727565637161416E+022
+  2.583814773365389E+022
+  2.470437562367453E+022
+  2.397423491469907E+022
+  2.382357950127291E+022
+  2.455278927814015E+022
+  2.666616889427553E+022
+  3.099842501972360E+022
+  3.891047203439124E+022
+  5.258274649508630E+022
+  7.543747384907332E+022
+  1.127167407947839E+023
+  1.722217760467939E+023
+  2.651668012547275E+023
+  4.070003510001498E+023
+  6.178803236182116E+023
+  9.222489700009235E+023
+  1.346663424937056E+024
+  1.914780655507626E+024
+  2.639342635762824E+024
+  3.516090558287873E+024
+  4.523263308115966E+024
+  5.623661256749345E+024
+  6.769354493767436E+024
+  7.908424053277444E+024
+  8.992006942808954E+024
+  9.980044713826403E+024
+  1.084475770160657E+025
+  1.157164582195962E+025
+  1.215843993910303E+025
+  1.261274186227048E+025
+  1.294910910743484E+025
+  1.318617139370423E+025
+  1.334413426797073E+025
+  1.344282153226536E+025
+  1.350027245939228E+025
+  1.353184186854502E+025
+  1.354972981585980E+025
+  1.356286815832855E+025
+  1.357709535179628E+025
+  1.359555022009586E+025
+  1.361921045435051E+025
+  1.364749770908027E+025
+  1.367887440258468E+025
+  1.371137051211382E+025
+  1.374299962267813E+025
+  1.377204658346746E+025
+  1.379722919619710E+025
+  1.381775195630931E+025
+  1.383328153015435E+025
+  1.384387854402884E+025
+  1.384991307079653E+025
+  1.385197662406811E+025
+  1.385079865756300E+025
+  1.384718014053854E+025
+  1.384194772381512E+025
+  1.383592158451754E+025
+  9.313635940850849E+025
+  9.314870721472352E+025
+  9.316088358773555E+025
+  9.317133216885164E+025
+  9.317800389607516E+025
+  9.317829744732201E+025
+  9.316908514886041E+025
+  9.314684092511327E+025
+  9.310786997634020E+025
+  9.304865949211092E+025
+  9.296633699749147E+025
+  9.285918860973919E+025
+  9.272717670002567E+025
+  9.257237775886696E+025
+  9.239923739509012E+025
+  9.221452678857441E+025
+  9.202688950744105E+025
+  9.184588873876921E+025
+  9.168050413627226E+025
+  9.153708681356305E+025
+  9.141685798181150E+025
+  9.131312222845655E+025
+  9.120844702249735E+025
+  9.107212211018530E+025
+  9.085824658719012E+025
+  9.050479576259832E+025
+  8.993400132945171E+025
+  8.905434905427508E+025
+  8.776446678513775E+025
+  8.595913413162705E+025
+  8.353755886745555E+025
+  8.041387374315486E+025
+  7.652944534652505E+025
+  7.186601860290482E+025
+  6.645798378837520E+025
+  6.040130097926610E+025
+  5.385615272332058E+025
+  4.704063855433438E+025
+  4.021412977960228E+025
+  3.365128713977511E+025
+  2.761071834438786E+025
+  2.229540212835254E+025
+  1.779938136165801E+025
+  1.410541216896983E+025
+  1.113228784274353E+025
+  8.773867756893622E+024
+  6.921742458321530E+024
+  5.476786892074290E+024
+  4.353868630032771E+024
+  3.482706681417278E+024
+  2.806794821921243E+024
+  2.281523100965581E+024
+  1.872119064978458E+024
+  1.551716953027712E+024
+  1.299683318594115E+024
+  1.100230957699539E+024
+  9.413054805640166E+023
+  8.137089243935671E+023
+  7.104196263486564E+023
+  6.260696433716901E+023
+  5.565460718952808E+023
+  4.986884411480089E+023
+  4.500598681358129E+023
+  4.087744560733368E+023
+  3.733673945833587E+023
+  3.426974228094147E+023
+  3.158738452461928E+023
+  2.922022664237345E+023
+  2.711447679318813E+023
+  2.522915330265602E+023
+  2.353420887491479E+023
+  2.200955714775738E+023
+  2.064509748669377E+023
+  1.944205559585016E+023
+  1.841629639069014E+023
+  1.760479575379146E+023
+  1.707728352539014E+023
+  1.695632880190390E+023
+  1.745099341709298E+023
+  1.891178747355288E+023
+  2.191809293908017E+023
+  2.741329440482177E+023
+  3.690682383679920E+023
+  5.276437664002170E+023
+  7.860410002329973E+023
+  1.198014009178597E+024
+  1.840688015486043E+024
+  2.820079329964370E+024
+  4.274165114202464E+024
+  6.369696768584371E+024
+  9.286989627094781E+024
+  1.318522168617128E+025
+  1.814737934134110E+025
+  2.413893518535039E+025
+  3.100525984254045E+025
+  3.848675126162869E+025
+  4.625201572127009E+025
+  5.394468375358587E+025
+  6.123186136622932E+025
+  6.784324702285795E+025
+  7.359433466511370E+025
+  7.839251860413972E+025
+  8.222917453159096E+025
+  8.516288595426426E+025
+  8.729904157052721E+025
+  8.876981768662951E+025
+  8.971694658134495E+025
+  9.027827234462565E+025
+  9.057817587752508E+025
+  9.072149870897529E+025
+  9.079045889210829E+025
+  9.084405857456827E+025
+  9.091950740150457E+025
+  9.103517440702456E+025
+  9.119453968368246E+025
+  9.139058629621273E+025
+  9.161009569303417E+025
+  9.183740543583148E+025
+  9.205734031791697E+025
+  9.225719619319760E+025
+  9.242780260526284E+025
+  9.256380334399157E+025
+  9.266337544917038E+025
+  9.272763827931765E+025
+  9.275995195582898E+025
+  9.276520289491403E+025
+  9.274913842512312E+025
+  9.271783968152995E+025
+  9.267735913737082E+025
+  9.263347799562260E+025
+  2.143967235953502E+026
+  2.144207526496065E+026
+  2.144494701318915E+026
+  2.144806035374445E+026
+  2.145103098917663E+026
+  2.145328719102588E+026
+  2.145406387830079E+026
+  2.145242785839040E+026
+  2.144733666918589E+026
+  2.143773713045251E+026
+  2.142270107131097E+026
+  2.140158643044514E+026
+  2.137420733647564E+026
+  2.134099069408993E+026
+  2.130308964136716E+026
+  2.126242001408979E+026
+  2.122158625638672E+026
+  2.118366819096646E+026
+  2.115185032411060E+026
+  2.112889155755824E+026
+  2.111645464382815E+026
+  2.111433897168143E+026
+  2.111968354296143E+026
+  2.112622532514743E+026
+  2.112370855275426E+026
+  2.109754208123476E+026
+  2.102879618476915E+026
+  2.089462068638576E+026
+  2.066915603803777E+026
+  2.032499709386422E+026
+  1.983524813576478E+026
+  1.917616247773092E+026
+  1.833027345316872E+026
+  1.728978486881710E+026
+  1.605980450029425E+026
+  1.466080938486059E+026
+  1.312960078769865E+026
+  1.151804624578167E+026
+  9.889211064245819E+025
+  8.311066354318211E+025
+  6.848712249456441E+025
+  5.554384129333591E+025
+  4.453837277996673E+025
+  3.545241566767092E+025
+  2.810578918693445E+025
+  2.225206382004066E+025
+  1.763486143757601E+025
+  1.401714822790084E+025
+  1.119370396413643E+025
+  8.993999501071338E+024
+  7.280150391532351E+024
+  5.942742114330037E+024
+  4.896081239885769E+024
+  4.073660184751152E+024
+  3.424178313289697E+024
+  2.908219681095150E+024
+  2.495565602731776E+024
+  2.163066647540008E+024
+  1.892982319900000E+024
+  1.671699060164436E+024
+  1.488747711851387E+024
+  1.336054544771550E+024
+  1.207372542678684E+024
+  1.097850821152684E+024
+  1.003709409879405E+024
+  9.219942517637018E+023
+  8.503933331841630E+023
+  7.870996291148566E+023
+  7.307103297904071E+023
+  6.801549542798986E+023
+  6.346478393125989E+023
+  5.936635883901415E+023
+  5.569379943659622E+023
+  5.245025822637369E+023
+  4.967695373745100E+023
+  4.746972451022760E+023
+  4.600875679442020E+023
+  4.560977014640288E+023
+  4.680959162973768E+023
+  5.050553280888367E+023
+  5.817642532529786E+023
+  7.222302026746515E+023
+  9.647471400360805E+023
+  1.369135348210596E+024
+  2.026558970624790E+024
+  3.071923453528564E+024
+  4.697923852646762E+024
+  7.168066378986342E+024
+  1.082314997158283E+025
+  1.607170470190957E+025
+  2.335020542746238E+025
+  3.303502638176488E+025
+  4.530516905018373E+025
+  6.004206134178036E+025
+  7.682812245181661E+025
+  9.499012583552416E+025
+  1.136869723525644E+026
+  1.320295755159165E+026
+  1.492022052420258E+026
+  1.645580422337633E+026
+  1.776733138983566E+026
+  1.883581163137398E+026
+  1.966325288412371E+026
+  2.026814980838656E+026
+  2.068017142320730E+026
+  2.093503905938804E+026
+  2.107016979477467E+026
+  2.112131130157864E+026
+  2.112017199692391E+026
+  2.109294669830693E+026
+  2.105961057104089E+026
+  2.103385808462205E+026
+  2.102356811295497E+026
+  2.103166919181739E+026
+  2.105726389130577E+026
+  2.109686022319453E+026
+  2.114556289706770E+026
+  2.119810311275360E+026
+  2.124962785880402E+026
+  2.129621708046843E+026
+  2.133513878509154E+026
+  2.136488378649456E+026
+  2.138504329234757E+026
+  2.139609987082147E+026
+  2.139918847372196E+026
+  2.139585793527555E+026
+  2.138785252646770E+026
+  2.137693774827670E+026
+  2.136477896072652E+026
+  2.135286408931515E+026
+  1.823756933530584E+022
+  1.824042737502136E+022
+  1.824283055662867E+022
+  1.824436192011347E+022
+  1.824454508607666E+022
+  1.824284696063741E+022
+  1.823869285572817E+022
+  1.823149485729999E+022
+  1.822069127975118E+022
+  1.820579951999677E+022
+  1.818647916924497E+022
+  1.816259680328280E+022
+  1.813428283693876E+022
+  1.810196867991900E+022
+  1.806638920401280E+022
+  1.802853425101038E+022
+  1.798953447147898E+022
+  1.795047078973600E+022
+  1.791210331044635E+022
+  1.787452482847030E+022
+  1.783675585669275E+022
+  1.779631079473870E+022
+  1.774877648880165E+022
+  1.768745306961453E+022
+  1.760311146180904E+022
+  1.748392239489602E+022
+  1.731560939998246E+022
+  1.708187496858958E+022
+  1.676514555625307E+022
+  1.634767503886267E+022
+  1.581303049190464E+022
+  1.514794773493464E+022
+  1.434447600036142E+022
+  1.340222694787442E+022
+  1.233041235005814E+022
+  1.114922696613501E+022
+  9.890063595629066E+021
+  8.594109233678444E+021
+  7.309122394828570E+021
+  6.084626304877413E+021
+  4.966275360187413E+021
+  3.988894895206502E+021
+  3.167241289440499E+021
+  2.496041062586670E+021
+  1.958803947309579E+021
+  1.534946338815833E+021
+  1.203860121566704E+021
+  9.469339057268845E+020
+  7.483295458687083E+020
+  5.950702675458330E+020
+  4.767916503606973E+020
+  3.853607994401528E+020
+  3.144743548841139E+020
+  2.592887283469105E+020
+  2.161035255109807E+020
+  1.821020051114734E+020
+  1.551442461356579E+020
+  1.336054745280712E+020
+  1.162513805675997E+020
+  1.021428741190902E+020
+  9.056381865195001E+019
+  8.096646408808994E+019
+  7.293038405175475E+019
+  6.613165018025333E+019
+  6.031973522089282E+019
+  5.530024158939480E+019
+  5.092202547400657E+019
+  4.706765373157573E+019
+  4.364641792995608E+019
+  4.058936395425173E+019
+  3.784600556665160E+019
+  3.538260989126590E+019
+  3.318221546639077E+019
+  3.124693038527351E+019
+  2.960364882198030E+019
+  2.831525047480914E+019
+  2.750079591104683E+019
+  2.737045123995347E+019
+  2.828417138915481E+019
+  3.084784942049062E+019
+  3.606687577214090E+019
+  4.558460099003395E+019
+  6.204084726267130E+019
+  8.959028503634564E+019
+  1.346159103376132E+020
+  2.066479823595315E+020
+  3.194365399390063E+020
+  4.920034444779027E+020
+  7.492945851414392E+020
+  1.121753181937022E+021
+  1.642765971347966E+021
+  2.342596129749978E+021
+  3.238544499309373E+021
+  4.327315259285764E+021
+  5.584111129981529E+021
+  6.964839429272561E+021
+  8.411596434337262E+021
+  9.860754362275469E+021
+  1.125157152725915E+022
+  1.253335643376580E+022
+  1.366994157753601E+022
+  1.464116207648872E+022
+  1.544180538730890E+022
+  1.607890398834075E+022
+  1.656828778172136E+022
+  1.693112225866499E+022
+  1.719088225570540E+022
+  1.737096132257722E+022
+  1.749294588760424E+022
+  1.757549464005898E+022
+  1.763373329523357E+022
+  1.767907389655498E+022
+  1.771937366154122E+022
+  1.775935006135029E+022
+  1.780116561161415E+022
+  1.784509330554076E+022
+  1.789017842952368E+022
+  1.793482789246189E+022
+  1.797728176071755E+022
+  1.801594704541144E+022
+  1.804959540669499E+022
+  1.807744338279845E+022
+  1.809914718275104E+022
+  1.811475024523888E+022
+  1.812461330214608E+022
+  1.812933911068025E+022
+  1.812969910787103E+022
+  1.812657617272322E+022
+  1.812092650548436E+022
+  1.811375063194331E+022
+  1.402086680799062E+026
+  1.402287128204208E+026
+  1.402479533490298E+026
+  1.402638227742788E+026
+  1.402730482391713E+026
+  1.402715969513008E+026
+  1.402547546791390E+026
+  1.402173593873694E+026
+  1.401541862758227E+026
+  1.400605092072929E+026
+  1.399328138122732E+026
+  1.397695856967997E+026
+  1.395720780242817E+026
+  1.393449351240774E+026
+  1.390965140220145E+026
+  1.388387287203816E+026
+  1.385862515901105E+026
+  1.383549412817956E+026
+  1.381594290562785E+026
+  1.380098881230878E+026
+  1.379081289699168E+026
+  1.378432933456904E+026
+  1.377875398032751E+026
+  1.376922039537140E+026
+  1.374849630556933E+026
+  1.370685354474227E+026
+  1.363214122120538E+026
+  1.351010709540002E+026
+  1.332500732439786E+026
+  1.306053859146402E+026
+  1.270111379978061E+026
+  1.223347365624108E+026
+  1.164857146886879E+026
+  1.094358188672683E+026
+  1.012377186699643E+026
+  9.203857408812190E+025
+  8.208398952980508E+025
+  7.170825893312218E+025
+  6.130880538637735E+025
+  5.130636536727599E+025
+  4.209701181678172E+025
+  3.399166765404917E+025
+  2.713475830896152E+025
+  2.150064828086813E+025
+  1.696587747966259E+025
+  1.336876257593995E+025
+  1.054403467826765E+025
+  8.340513351176889E+024
+  6.628323975149969E+024
+  5.300230254310641E+024
+  4.270004813249521E+024
+  3.469570325540356E+024
+  2.845861716141370E+024
+  2.357881364357763E+024
+  1.974144357698770E+024
+  1.670563090446024E+024
+  1.428747680876536E+024
+  1.234668079460976E+024
+  1.077615732351936E+024
+  9.494057589218469E+023
+  8.437683006442214E+023
+  7.558865654465448E+023
+  6.820475011184774E+023
+  6.193783464863786E+023
+  5.656483796409518E+023
+  5.191200731107960E+023
+  4.784377276166764E+023
+  4.425446745464086E+023
+  4.106225159335953E+023
+  3.820478281974725E+023
+  3.563635339224989E+023
+  3.332640316409657E+023
+  3.125955414563026E+023
+  2.943765028077428E+023
+  2.788480240845226E+023
+  2.665724621664985E+023
+  2.586107931039243E+023
+  2.568286201600855E+023
+  2.644089427850076E+023
+  2.866895825142581E+023
+  3.324955228920483E+023
+  4.161985923841371E+023
+  5.607975388844129E+023
+  8.023429900908496E+023
+  1.195979305530043E+024
+  1.823644414213182E+024
+  2.802916346201449E+024
+  4.295437178680161E+024
+  6.511601351528690E+024
+  9.705699782803545E+024
+  1.415271705679196E+025
+  2.009538416241164E+025
+  2.766015963427799E+025
+  3.679410019308995E+025
+  4.726077866172379E+025
+  5.866326779741699E+025
+  7.049473317611505E+025
+  8.220991412144429E+025
+  9.329918242111706E+025
+  1.033484149943096E+026
+  1.120746017500602E+026
+  1.193353446499429E+026
+  1.251169141393624E+026
+  1.295087408200322E+026
+  1.326723170674082E+026
+  1.348106396258535E+026
+  1.361418626191437E+026
+  1.368786932705795E+026
+  1.372136581584940E+026
+  1.373096794739457E+026
+  1.372951961527863E+026
+  1.372630788363796E+026
+  1.372726286984927E+026
+  1.373539338562072E+026
+  1.375137919687416E+026
+  1.377423554908236E+026
+  1.380196836712138E+026
+  1.383215237317955E+026
+  1.386238699738479E+026
+  1.389061029873663E+026
+  1.391527346309443E+026
+  1.393539584621110E+026
+  1.395053320087831E+026
+  1.396069679438740E+026
+  1.396625353618480E+026
+  1.396782208417358E+026
+  1.396617454724222E+026
+  1.396215747189084E+026
+  1.395663632183126E+026
+  1.395045696605412E+026
+  2.196053649633666E+026
+  2.196334380077416E+026
+  2.196639773480107E+026
+  2.196939203946046E+026
+  2.197187725986810E+026
+  2.197324020563214E+026
+  2.197270801040096E+026
+  2.196938248343386E+026
+  2.196230601173998E+026
+  2.195056413725132E+026
+  2.193342128172995E+026
+  2.191047686988056E+026
+  2.188182481499156E+026
+  2.184819365165562E+026
+  2.181103789087508E+026
+  2.177254749994370E+026
+  2.173554337415146E+026
+  2.170323232494644E+026
+  2.167880596458341E+026
+  2.166488444889499E+026
+  2.166282756357841E+026
+  2.167195953431869E+026
+  2.168877642784141E+026
+  2.170622220533766E+026
+  2.171312861468681E+026
+  2.169391451742023E+026
+  2.162863382050857E+026
+  2.149345151845420E+026
+  2.126161739946538E+026
+  2.090499556413390E+026
+  2.039618679881291E+026
+  1.971123471828542E+026
+  1.883281785088827E+026
+  1.775368774327024E+026
+  1.647992501171922E+026
+  1.503338818783530E+026
+  1.345260061855420E+026
+  1.179136698155643E+026
+  1.011472852912601E+026
+  8.492466778809289E+025
+  6.991130911743965E+025
+  5.663852111979471E+025
+  4.536526465089460E+025
+  3.606816153015232E+025
+  2.855881188038122E+025
+  2.258187109582974E+025
+  1.787264908509726E+025
+  1.418696723917792E+025
+  1.131376747622724E+025
+  9.077911762293457E+024
+  7.337965025865176E+024
+  5.981826337630226E+024
+  4.921797258114266E+024
+  4.089889368507343E+024
+  3.433717243768116E+024
+  2.913075389145152E+024
+  2.497173414742537E+024
+  2.162449657531410E+024
+  1.890867410198813E+024
+  1.668600900529250E+024
+  1.485029340790967E+024
+  1.331970925746234E+024
+  1.203101798064010E+024
+  1.093516577184353E+024
+  9.993967438820190E+023
+  9.177610411143102E+023
+  8.462783017900475E+023
+  7.831280243132784E+023
+  7.268979055020677E+023
+  6.765107603294424E+023
+  6.311762065342788E+023
+  5.903656479588235E+023
+  5.538130818162505E+023
+  5.215499704030423E+023
+  4.939911578819815E+023
+  4.721024698033893E+023
+  4.577018538923253E+023
+  4.539781655301528E+023
+  4.663590177472848E+023
+  5.039252796901969E+023
+  5.816562099240999E+023
+  7.238904941193558E+023
+  9.694845941039234E+023
+  1.379193381650976E+024
+  2.045696445384967E+024
+  3.106288994481134E+024
+  4.757313293650692E+024
+  7.267627052585547E+024
+  1.098550759778706E+025
+  1.632929617930078E+025
+  2.374725871999019E+025
+  3.362811342283058E+025
+  4.616093171725621E+025
+  6.123206872996246E+025
+  7.842224748975602E+025
+  9.704926435758863E+025
+  1.162562742500449E+026
+  1.351334489869633E+026
+  1.528419046634115E+026
+  1.687120216039535E+026
+  1.822999505937027E+026
+  1.934000493689840E+026
+  2.020217604428845E+026
+  2.083445230562084E+026
+  2.126641678738918E+026
+  2.153409420527957E+026
+  2.167551010983546E+026
+  2.172724376447043E+026
+  2.172198322183863E+026
+  2.168698337291494E+026
+  2.164329882665110E+026
+  2.160566773378826E+026
+  2.158292824611719E+026
+  2.157884328578795E+026
+  2.159319472459356E+026
+  2.162299670668510E+026
+  2.166368174243248E+026
+  2.171013773218160E+026
+  2.175751504700085E+026
+  2.180176921486561E+026
+  2.183994603678639E+026
+  2.187024776071707E+026
+  2.189194106776139E+026
+  2.190517570451590E+026
+  2.191076929123738E+026
+  2.190998796663644E+026
+  2.190434220051261E+026
+  2.189542215142957E+026
+  2.188478117135082E+026
+  2.187385850031878E+026
+  1.330526920483309E+026
+  1.330711051007505E+026
+  1.330890195117072E+026
+  1.331040981841759E+026
+  1.331133147555626E+026
+  1.331128872535783E+026
+  1.330983370202119E+026
+  1.330646956448491E+026
+  1.330068578747537E+026
+  1.329201059210123E+026
+  1.328007833952335E+026
+  1.326470476909700E+026
+  1.324596111219077E+026
+  1.322423544559370E+026
+  1.320026628137696E+026
+  1.317513167991684E+026
+  1.315017797348027E+026
+  1.312687540516552E+026
+  1.310659381901544E+026
+  1.309030026103147E+026
+  1.307819156420091E+026
+  1.306928734263555E+026
+  1.306102034942962E+026
+  1.304886989650196E+026
+  1.302608865590162E+026
+  1.298357344794734E+026
+  1.290992763012375E+026
+  1.279175826216866E+026
+  1.261424662157333E+026
+  1.236202474429021E+026
+  1.202037840558336E+026
+  1.157676957046554E+026
+  1.102261926590078E+026
+  1.035520988553610E+026
+  9.579459497606531E+025
+  8.709211984253165E+025
+  7.767619646955638E+025
+  6.786229917517122E+025
+  5.802576394801380E+025
+  4.856419138240765E+025
+  3.985209258598968E+025
+  3.218364709910146E+025
+  2.569564930637706E+025
+  2.036403639243109E+025
+  1.607218434269062E+025
+  1.266727775161750E+025
+  9.993074169726739E+024
+  7.906626575385450E+024
+  6.285116460208119E+024
+  5.027120502127372E+024
+  4.051074854581677E+024
+  3.292575457775275E+024
+  2.701413455659641E+024
+  2.238792221474891E+024
+  1.874912547181840E+024
+  1.586972799450352E+024
+  1.357561948751429E+024
+  1.173394404586431E+024
+  1.024327985697694E+024
+  9.026092549434706E+023
+  8.022977092346821E+023
+  7.188286854095606E+023
+  6.486827847367107E+023
+  5.891365287434884E+023
+  5.380746945868521E+023
+  4.938493997264895E+023
+  4.551746555893987E+023
+  4.210479633392812E+023
+  3.906927738482484E+023
+  3.635174852669343E+023
+  3.390883339302028E+023
+  3.171153195813932E+023
+  2.974525488029189E+023
+  2.801175816618599E+023
+  2.653392594125693E+023
+  2.536511457935366E+023
+  2.460596360386456E+023
+  2.443339603841993E+023
+  2.514920869115170E+023
+  2.725941793279948E+023
+  3.160048105031037E+023
+  3.953439204581521E+023
+  5.324037498840057E+023
+  7.613384923657005E+023
+  1.134383324397835E+024
+  1.729140359116395E+024
+  2.656945623891379E+024
+  4.070829371706642E+024
+  6.169931876658925E+024
+  9.194876649100892E+024
+  1.340577317162287E+025
+  1.903207220672179E+025
+  2.619304215020009E+025
+  3.483808954854433E+025
+  4.474302809489911E+025
+  5.553196720395123E+025
+  6.672530162386515E+025
+  7.780741145997600E+025
+  8.829672823849061E+025
+  9.780230971999669E+025
+  1.060574102674615E+026
+  1.129283325209238E+026
+  1.184030021055822E+026
+  1.225667358403483E+026
+  1.255727548650743E+026
+  1.276132422201942E+026
+  1.288944120282110E+026
+  1.296170350977297E+026
+  1.299625379543422E+026
+  1.300841418393132E+026
+  1.301023145189285E+026
+  1.301038199939572E+026
+  1.301436885675600E+026
+  1.302494131243479E+026
+  1.304266157050490E+026
+  1.306653802885931E+026
+  1.309464761512903E+026
+  1.312468300029664E+026
+  1.315438220566393E+026
+  1.318182231118654E+026
+  1.320558023735631E+026
+  1.322478006177815E+026
+  1.323905826217753E+026
+  1.324848294399412E+026
+  1.325345577086626E+026
+  1.325461084856160E+026
+  1.325271969199412E+026
+  1.324861524051636E+026
+  1.324313887243968E+026
+  1.323710419549422E+026
+  1.736624600137072E+026
+  1.736827639436822E+026
+  1.737052215464293E+026
+  1.737276075045996E+026
+  1.737465658170564E+026
+  1.737574107443442E+026
+  1.737541093343647E+026
+  1.737294904012521E+026
+  1.736756917641279E+026
+  1.735848907758610E+026
+  1.734502971757567E+026
+  1.732673164565887E+026
+  1.730347601014078E+026
+  1.727559357907797E+026
+  1.724393979992493E+026
+  1.720991089375768E+026
+  1.717537640462014E+026
+  1.714250754787989E+026
+  1.711348852497578E+026
+  1.709011017250275E+026
+  1.707326139712633E+026
+  1.706235195177578E+026
+  1.705471741878307E+026
+  1.704507084045799E+026
+  1.702507311852583E+026
+  1.698309549205079E+026
+  1.690424337344011E+026
+  1.677070413189307E+026
+  1.656247414105020E+026
+  1.625851154473409E+026
+  1.583834443341522E+026
+  1.528412789046581E+026
+  1.458307446894021E+026
+  1.373007318463777E+026
+  1.273016790991631E+026
+  1.160041572125231E+026
+  1.037054782501933E+026
+  9.081892881544918E+025
+  7.784267248056347E+025
+  6.530997121682924E+025
+  5.372822773254155E+025
+  4.350115659538198E+025
+  3.482318341144241E+025
+  2.767235726396974E+025
+  2.190078209654282E+025
+  1.730997584191505E+025
+  1.369499497107839E+025
+  1.086720790710186E+025
+  8.663827736337116E+024
+  6.949937009952644E+024
+  5.616689690675283E+024
+  4.577887410472022E+024
+  3.766144901797825E+024
+  3.129255061345139E+024
+  2.627014918166758E+024
+  2.228584573400196E+024
+  1.910356735313125E+024
+  1.654273741170155E+024
+  1.446517222576642E+024
+  1.276498285767125E+024
+  1.136084954181791E+024
+  1.019014231732301E+024
+  9.204463667098025E+023
+  8.366278706328986E+023
+  7.646373444613306E+023
+  7.021942383782716E+023
+  6.475154892828659E+023
+  5.992087610080189E+023
+  5.561940035810848E+023
+  5.176475219906207E+023
+  4.829650080382557E+023
+  4.517424084986566E+023
+  4.237765611733078E+023
+  3.990919090416524E+023
+  3.780062995141511E+023
+  3.612593427762625E+023
+  3.502430728804061E+023
+  3.473993876284547E+023
+  3.568850562516088E+023
+  3.856559006385353E+023
+  4.451881914566711E+023
+  5.541333264321422E+023
+  7.422762354053165E+023
+  1.056202469389003E+024
+  1.567002728434029E+024
+  2.380035735577992E+024
+  3.646049830007329E+024
+  5.571600795676548E+024
+  8.424479863579197E+024
+  1.252671667632006E+025
+  1.822399606364359E+025
+  2.581719492832481E+025
+  3.545492678074409E+025
+  4.705426295789507E+025
+  6.029811970880252E+025
+  7.466751956130601E+025
+  8.950878516486992E+025
+  1.041264224666753E+026
+  1.178779187197740E+026
+  1.302490997196204E+026
+  1.408975857377992E+026
+  1.496625515496689E+026
+  1.565472494152167E+026
+  1.616846694507663E+026
+  1.652966293702483E+026
+  1.676540796949530E+026
+  1.690431962389378E+026
+  1.697390993088582E+026
+  1.699872789712503E+026
+  1.699919664195638E+026
+  1.699104561866263E+026
+  1.698524067019414E+026
+  1.698831857011855E+026
+  1.700302839102317E+026
+  1.702917175204489E+026
+  1.706452650842123E+026
+  1.710574268622216E+026
+  1.714911924521670E+026
+  1.719120213070319E+026
+  1.722917958036201E+026
+  1.726108181409641E+026
+  1.728581600581350E+026
+  1.730308384426040E+026
+  1.731323465502593E+026
+  1.731709628146964E+026
+  1.731580568084780E+026
+  1.731065337255938E+026
+  1.730296005851704E+026
+  1.729399142062528E+026
+  1.728490337166529E+026
+  6.362437700396091E+025
+  6.363357964865559E+025
+  6.364206293049177E+025
+  6.364859016819336E+025
+  6.365163864628040E+025
+  6.364938231519098E+025
+  6.363972842982309E+025
+  6.362041614801112E+025
+  6.358917378630444E+025
+  6.354394546799582E+025
+  6.348317660340217E+025
+  6.340612567675793E+025
+  6.331316284168686E+025
+  6.320600495534317E+025
+  6.308782230420998E+025
+  6.296314540515403E+025
+  6.283750464784788E+025
+  6.271675039553967E+025
+  6.260602717285614E+025
+  6.250841399129040E+025
+  6.242329194058200E+025
+  6.234455395449480E+025
+  6.225882158384967E+025
+  6.214387126581453E+025
+  6.196749243555715E+025
+  6.168700130027201E+025
+  6.124962203035249E+025
+  6.059392940049498E+025
+  5.965252843768996E+025
+  5.835612092629804E+025
+  5.663905131121928E+025
+  5.444629497475176E+025
+  5.174160700619996E+025
+  4.851616807405323E+025
+  4.479657391621327E+025
+  4.065052165972752E+025
+  3.618825315514440E+025
+  3.155800024243335E+025
+  2.693456914082513E+025
+  2.250180167074392E+025
+  1.843162358821151E+025
+  1.485778771470661E+025
+  1.184068999882480E+025
+  9.366353001629439E+024
+  7.378389691561495E+024
+  5.804197094395271E+024
+  4.570091373722665E+024
+  3.608963136800746E+024
+  2.863343671954367E+024
+  2.285903456278068E+024
+  1.838669754993965E+024
+  1.491722487234935E+024
+  1.221782419612429E+024
+  1.010895362886589E+024
+  8.452957822844406E+023
+  7.144689852335298E+023
+  6.103996969104867E+023
+  5.269819232543776E+023
+  4.595618943006999E+023
+  4.045875408912639E+023
+  3.593415521412877E+023
+  3.217391024902273E+023
+  2.901751299803902E+023
+  2.634093256766825E+023
+  2.404797021284955E+023
+  2.206377824369714E+023
+  2.033001627218360E+023
+  1.880125349108650E+023
+  1.744233054519086E+023
+  1.622648059470078E+023
+  1.513408701775393E+023
+  1.415203740409514E+023
+  1.327373637185118E+023
+  1.249998628764310E+023
+  1.184116889701561E+023
+  1.132151144748877E+023
+  1.098676761770150E+023
+  1.091747853397423E+023
+  1.125121249643248E+023
+  1.221892165162416E+023
+  1.420285306315674E+023
+  1.782619846048228E+023
+  2.408737907555702E+023
+  3.455335088421226E+023
+  5.162420655283413E+023
+  7.887151990899228E+023
+  1.214290431833956E+024
+  1.863683688426719E+024
+  2.829158904952158E+024
+  4.222575433438749E+024
+  6.165448658794272E+024
+  8.765985677509303E+024
+  1.208239539242463E+025
+  1.609504140910594E+025
+  2.070416795165126E+025
+  2.573937216273615E+025
+  3.098117945592256E+025
+  3.619191696655388E+025
+  4.114796588707577E+025
+  4.566606758951134E+025
+  4.961921071074015E+025
+  5.294119266582171E+025
+  5.562180103218909E+025
+  5.769599611526870E+025
+  5.923055681458079E+025
+  6.031087613201428E+025
+  6.102953199951505E+025
+  6.147732656826741E+025
+  6.173686629539428E+025
+  6.187844468344914E+025
+  6.195789227010366E+025
+  6.201606091933289E+025
+  6.207962820969237E+025
+  6.216290471293427E+025
+  6.227030401432657E+025
+  6.239911741789352E+025
+  6.254225008942186E+025
+  6.269063574316743E+025
+  6.283514301827814E+025
+  6.296789260742669E+025
+  6.308299645247191E+025
+  6.317680208026021E+025
+  6.324777852216759E+025
+  6.329620223475765E+025
+  6.332376828804538E+025
+  6.333318571334652E+025
+  6.332779406828459E+025
+  6.331125872571255E+025
+  6.328736075766004E+025
+  6.325984977823597E+025
+  8.744373161840949E+025
+  8.745146219343869E+025
+  8.746159494975300E+025
+  8.747346748279086E+025
+  8.748575259341551E+025
+  8.749628981049527E+025
+  8.750200746106339E+025
+  8.749896421463173E+025
+  8.748252332199110E+025
+  8.744768972930303E+025
+  8.738960659104626E+025
+  8.730417099688414E+025
+  8.718871092752609E+025
+  8.704264111892959E+025
+  8.686798563518392E+025
+  8.666963554609151E+025
+  8.645520770851387E+025
+  8.623438584428402E+025
+  8.601766059998278E+025
+  8.581444434771187E+025
+  8.563061754792663E+025
+  8.546565778838988E+025
+  8.530959602017211E+025
+  8.514012151357569E+025
+  8.492020534224111E+025
+  8.459662687430736E+025
+  8.409977342928654E+025
+  8.334505173667742E+025
+  8.223621167056595E+025
+  8.067083432480875E+025
+  7.854814859649969E+025
+  7.577915748705523E+025
+  7.229871243440524E+025
+  6.807863041217446E+025
+  6.314022980190486E+025
+  5.756390482023048E+025
+  5.149285238806492E+025
+  4.512822203214048E+025
+  3.871414606927741E+025
+  3.251337844407568E+025
+  2.677718790173542E+025
+  2.170660166566745E+025
+  1.739948116202423E+025
+  1.384642805768587E+025
+  1.097538583220909E+025
+  8.688939214342393E+024
+  6.886195834995137E+024
+  5.474114977741253E+024
+  4.372282657299177E+024
+  3.513963335319490E+024
+  2.845249740461829E+024
+  2.323398355653664E+024
+  1.914953113679450E+024
+  1.593961078086977E+024
+  1.340411038903167E+024
+  1.138932104357509E+024
+  9.777423568412334E+023
+  8.478172122529092E+023
+  7.422410800272791E+023
+  6.557070784758999E+023
+  5.841338117907548E+023
+  5.243733625535326E+023
+  4.739896371969897E+023
+  4.310905906459196E+023
+  3.942015317799255E+023
+  3.621696945620185E+023
+  3.340926301940490E+023
+  3.092648388215931E+023
+  2.871385358545467E+023
+  2.672956721947645E+023
+  2.494294516584747E+023
+  2.333347961745452E+023
+  2.189087413166084E+023
+  2.061639428263028E+023
+  1.952618386845722E+023
+  1.865772668487276E+023
+  1.808144992371912E+023
+  1.792070382919786E+023
+  1.838516701003200E+023
+  1.982525957354168E+023
+  2.281844530634909E+023
+  2.830215667656052E+023
+  3.777170560981093E+023
+  5.356312296519632E+023
+  7.923685247378028E+023
+  1.200625882655683E+024
+  1.835693236641262E+024
+  2.800565824869562E+024
+  4.228522422516095E+024
+  6.279465387168800E+024
+  9.124486385427119E+024
+  1.291160178641173E+025
+  1.771224119296076E+025
+  2.348215405202022E+025
+  3.006081248088765E+025
+  3.718820501267356E+025
+  4.453887767926713E+025
+  5.176846008099793E+025
+  5.856075867182494E+025
+  6.466482663775972E+025
+  6.991593872459038E+025
+  7.423973855811540E+025
+  7.764290781168914E+025
+  8.019559946669257E+025
+  8.201078016405419E+025
+  8.322434161270926E+025
+  8.397822594106078E+025
+  8.440745111836745E+025
+  8.463105457503430E+025
+  8.474656224575108E+025
+  8.482747467082586E+025
+  8.492326911969297E+025
+  8.506142918328398E+025
+  8.525098570185656E+025
+  8.548699966420016E+025
+  8.575538432746400E+025
+  8.603749442022885E+025
+  8.631402174235429E+025
+  8.656790845875534E+025
+  8.678617668288789E+025
+  8.696073405439993E+025
+  8.708833461552216E+025
+  8.716995352804063E+025
+  8.720985739297307E+025
+  8.721459188765489E+025
+  8.719200161009304E+025
+  8.715035452327865E+025
+  8.709766298180246E+025
+  8.704123053281736E+025
+  8.698738366661223E+025
+  1.136403068888901E+026
+  1.136529724603416E+026
+  1.136671237877330E+026
+  1.136813747406786E+026
+  1.136936011835672E+026
+  1.137007972766845E+026
+  1.136990450566423E+026
+  1.136836265422181E+026
+  1.136492868072060E+026
+  1.135906791234401E+026
+  1.135029810441459E+026
+  1.133826249888625E+026
+  1.132280670250523E+026
+  1.130404899234234E+026
+  1.128243023228118E+026
+  1.125872754911536E+026
+  1.123401606952553E+026
+  1.120956536540006E+026
+  1.118666206126467E+026
+  1.116635766185295E+026
+  1.114915078650588E+026
+  1.113462449983482E+026
+  1.112107053724606E+026
+  1.110514107298411E+026
+  1.108157387514922E+026
+  1.104303781116128E+026
+  1.098014345527262E+026
+  1.088165956276504E+026
+  1.073497166771043E+026
+  1.052681333669572E+026
+  1.024428962408213E+026
+  9.876188666533485E+025
+  9.414532790625044E+025
+  8.856250070164073E+025
+  8.204754847180642E+025
+  7.471129725791903E+025
+  6.674539457230395E+025
+  5.841531824746581E+025
+  5.004038187430343E+025
+  4.196181639881638E+025
+  3.450375180648228E+025
+  2.792343260859317E+025
+  2.234366931164317E+025
+  1.774856417932608E+025
+  1.404172008292642E+025
+  1.109463758610321E+025
+  8.774992834145263E+024
+  6.961187523236645E+024
+  5.548400727497490E+024
+  4.449832154249004E+024
+  3.595504550194228E+024
+  2.930034517996992E+024
+  2.410149276697818E+024
+  2.002338821381983E+024
+  1.680809123733432E+024
+  1.425781014247734E+024
+  1.222119190097224E+024
+  1.058249997762401E+024
+  9.253193740055068E+023
+  8.165442643984919E+023
+  7.267166706932458E+023
+  6.518263810325464E+023
+  5.887750588948597E+023
+  5.351601665720929E+023
+  4.891120367636802E+023
+  4.491713197398433E+023
+  4.141971350667756E+023
+  3.832986888057038E+023
+  3.557850396894189E+023
+  3.311292867146147E+023
+  3.089449027391863E+023
+  2.889734900249018E+023
+  2.710851935287102E+023
+  2.552958131678184E+023
+  2.418089472314030E+023
+  2.310982070187709E+023
+  2.240549721623128E+023
+  2.222430157299856E+023
+  2.283246241301999E+023
+  2.467554567783831E+023
+  2.848880732212407E+023
+  3.546742567512409E+023
+  4.752042695933654E+023
+  6.763438362007522E+023
+  1.003681606072371E+024
+  1.524803561275026E+024
+  2.336450050568160E+024
+  3.571238060720599E+024
+  5.401204744804953E+024
+  8.033404437212031E+024
+  1.169039100746438E+025
+  1.656638739645911E+025
+  2.275837132308410E+025
+  3.021511992172846E+025
+  3.873534506844582E+025
+  4.798814193500557E+025
+  5.755583359296997E+025
+  6.699334196841587E+025
+  7.588887693040228E+025
+  8.391225731831649E+025
+  9.084285459048806E+025
+  9.657597416389960E+025
+  1.011117815105865E+026
+  1.045334012482945E+026
+  1.069807790813217E+026
+  1.086253021180711E+026
+  1.096481190133069E+026
+  1.102233502230662E+026
+  1.105062463047972E+026
+  1.106258079482565E+026
+  1.106812245023022E+026
+  1.107414980930021E+026
+  1.108476439844682E+026
+  1.110168317221550E+026
+  1.112477695123045E+026
+  1.115265914537201E+026
+  1.118325395940132E+026
+  1.121428635463262E+026
+  1.124365666010586E+026
+  1.126968542711789E+026
+  1.129123384751105E+026
+  1.130771999011998E+026
+  1.131906139553615E+026
+  1.132557803756238E+026
+  1.132788255291057E+026
+  1.132677145749206E+026
+  1.132312606968976E+026
+  1.131783472584663E+026
+  1.131173991090323E+026
+  1.130560500597729E+026
+  1.614393149083232E+026
+  1.614537217220440E+026
+  1.614726153493362E+026
+  1.614947682426270E+026
+  1.615177177708561E+026
+  1.615374578477653E+026
+  1.615483008987002E+026
+  1.615429641231063E+026
+  1.615129045058300E+026
+  1.614489578966892E+026
+  1.613422748339556E+026
+  1.611854772511794E+026
+  1.609739266161511E+026
+  1.607069485874065E+026
+  1.603888037510945E+026
+  1.600291580858042E+026
+  1.596428027450868E+026
+  1.592484017518632E+026
+  1.588661132727061E+026
+  1.585140412376931E+026
+  1.582036260298869E+026
+  1.579342592773438E+026
+  1.576875819539298E+026
+  1.574220679864624E+026
+  1.570685844197251E+026
+  1.565276449297184E+026
+  1.556690450220452E+026
+  1.543345069786024E+026
+  1.523438906287982E+026
+  1.495054359606888E+026
+  1.456303411847054E+026
+  1.405516414953894E+026
+  1.341467180511849E+026
+  1.263617567208823E+026
+  1.172351383247277E+026
+  1.069153319416843E+026
+  9.566791607761351E+025
+  8.386663730896025E+025
+  7.196561834371386E+025
+  6.045405204302997E+025
+  4.980015172114848E+025
+  4.037895909952406E+025
+  3.237374002361415E+025
+  2.576817153223440E+025
+  2.042918251944399E+025
+  1.617630516193774E+025
+  1.282239760488004E+025
+  1.019475572298084E+025
+  8.144036427915256E+024
+  6.546249883659231E+024
+  5.301206496338208E+024
+  4.329441859564692E+024
+  3.568741618503207E+024
+  2.970832696959189E+024
+  2.498485693927705E+024
+  2.123098450907442E+024
+  1.822743094834842E+024
+  1.580620646395285E+024
+  1.383855875248043E+024
+  1.222567110248725E+024
+  1.089153531252335E+024
+  9.777519812984011E+023
+  8.838245654003412E+023
+  8.038464374224451E+023
+  7.350699948125199E+023
+  6.753472384352820E+023
+  6.229964570573993E+023
+  5.767028575123123E+023
+  5.354455057977320E+023
+  4.984452205753535E+023
+  4.651301514126102E+023
+  4.351180210106136E+023
+  4.082168628098380E+023
+  3.844501782534196E+023
+  3.641187016010212E+023
+  3.479207452368000E+023
+  3.371682898032510E+023
+  3.341590362358383E+023
+  3.427984053947592E+023
+  3.696125843186625E+023
+  4.253550561908716E+023
+  5.274806232167996E+023
+  7.038282356206867E+023
+  9.978829413567922E+023
+  1.475911892748820E+024
+  2.235977512245108E+024
+  3.418155923844744E+024
+  5.214020912651004E+024
+  7.871396788733500E+024
+  1.168748714995907E+025
+  1.698008541159700E+025
+  2.402375972774793E+025
+  3.295027995347885E+025
+  4.367596374890854E+025
+  5.590072163934970E+025
+  6.913949540587593E+025
+  8.278578460749302E+025
+  9.619835483725524E+025
+  1.087889232447149E+026
+  1.200911117204595E+026
+  1.297993891975494E+026
+  1.377766707996644E+026
+  1.440368357315563E+026
+  1.487119383206747E+026
+  1.520136933128232E+026
+  1.541964153847246E+026
+  1.555255823237216E+026
+  1.562536624616602E+026
+  1.566032344726109E+026
+  1.567566670254189E+026
+  1.568514143744097E+026
+  1.569799998989916E+026
+  1.571937832822822E+026
+  1.575095544496730E+026
+  1.579178959548183E+026
+  1.583921906091807E+026
+  1.588972056796508E+026
+  1.593963908189140E+026
+  1.598573466368688E+026
+  1.602552704221838E+026
+  1.605744873531333E+026
+  1.608084001460004E+026
+  1.609583386696666E+026
+  1.610318345642313E+026
+  1.610407347929142E+026
+  1.609993704584805E+026
+  1.609229180199759E+026
+  1.608261249153592E+026
+  1.607224548864219E+026
+  1.606235789089925E+026
+  1.035358803146601E+025
+  1.035450574684694E+025
+  1.035583009941561E+025
+  1.035750455227949E+025
+  1.035938154085334E+025
+  1.036120052061306E+025
+  1.036257911406880E+025
+  1.036302158088643E+025
+  1.036194675286883E+025
+  1.035873916339316E+025
+  1.035282260084464E+025
+  1.034375040941797E+025
+  1.033130412431669E+025
+  1.031558851036929E+025
+  1.029710702245629E+025
+  1.027679912760100E+025
+  1.025602068274430E+025
+  1.023645081268978E+025
+  1.021991387493867E+025
+  1.020811351879434E+025
+  1.020228723823894E+025
+  1.020280290584895E+025
+  1.020873155980879E+025
+  1.021744101549878E+025
+  1.022426096712842E+025
+  1.022227147751882E+025
+  1.020226384646909E+025
+  1.015291759686220E+025
+  1.006123146637611E+025
+  9.913239759988070E+024
+  9.695034668844106E+024
+  9.394092954069210E+024
+  9.000862893878893E+024
+  8.510498535747673E+024
+  7.924535417364866E+024
+  7.252201943410552E+024
+  6.510990351274188E+024
+  5.726124637424481E+024
+  4.928709571208593E+024
+  4.152635206053428E+024
+  3.430691306963388E+024
+  2.789517415801179E+024
+  2.242671065952774E+024
+  1.789919114773884E+024
+  1.422841805381155E+024
+  1.129583000824619E+024
+  8.976681557962108E+023
+  7.154870180514951E+023
+  5.729393109966301E+023
+  4.615995588775184E+023
+  3.746322649611400E+023
+  3.065967634454757E+023
+  2.532198118292803E+023
+  2.111759466601661E+023
+  1.778934138202830E+023
+  1.513912824114759E+023
+  1.301471304823330E+023
+  1.129918972242464E+023
+  9.902758066092525E+022
+  8.756350139868090E+022
+  7.806732037755032E+022
+  7.012760350261925E+022
+  6.342532691476765E+022
+  5.771225359913156E+022
+  5.279456626386263E+022
+  4.852051296758945E+022
+  4.477111904170101E+022
+  4.145325355643239E+022
+  3.849452550439882E+022
+  3.583964074497908E+022
+  3.344799487487744E+022
+  3.129243313737276E+022
+  2.935930744895012E+022
+  2.765024682057481E+022
+  2.618649554572791E+022
+  2.501735720573040E+022
+  2.423534197121732E+022
+  2.400221819414942E+022
+  2.459251019912409E+022
+  2.646423533836539E+022
+  3.037087869386328E+022
+  3.753345867510772E+022
+  4.989599504268497E+022
+  7.048934284415046E+022
+  1.039225768396462E+023
+  1.570001350093931E+023
+  2.394153293067555E+023
+  3.643824507913165E+023
+  5.489277171428811E+023
+  8.133615303932132E+023
+  1.179225867200724E+024
+  1.664828503962423E+024
+  2.278350689509140E+024
+  3.012902758335927E+024
+  3.846606238072364E+024
+  4.744941917179427E+024
+  5.665306855423062E+024
+  6.563124171982222E+024
+  7.397944895164346E+024
+  8.138178055709399E+024
+  8.763689062153736E+024
+  9.266204138774630E+024
+  9.647981910150486E+024
+  9.919446605630985E+024
+  1.009645249855599E+025
+  1.019767408601855E+025
+  1.024240367067416E+025
+  1.024886264250985E+025
+  1.023302343565780E+025
+  1.020788961445933E+025
+  1.018316949932358E+025
+  1.016528114878171E+025
+  1.015762802161898E+025
+  1.016107974481546E+025
+  1.017458357841557E+025
+  1.019582594547294E+025
+  1.022186604114048E+025
+  1.024967754874750E+025
+  1.027655730386851E+025
+  1.030038530028516E+025
+  1.031974290310474E+025
+  1.033391299040060E+025
+  1.034279679386887E+025
+  1.034678556599652E+025
+  1.034661772675699E+025
+  1.034323847772565E+025
+  1.033767285028906E+025
+  1.033092492317094E+025
+  1.032390805832933E+025
+  1.031740219377324E+025
+  4.727818570138760E+025
+  4.728377486620998E+025
+  4.728979977223270E+025
+  4.729562383746596E+025
+  4.730031749959424E+025
+  4.730260693066799E+025
+  4.730086932679914E+025
+  4.729318600124162E+025
+  4.727745585134256E+025
+  4.725158122565842E+025
+  4.721372078482797E+025
+  4.716258542211923E+025
+  4.709774543877164E+025
+  4.701990610763383E+025
+  4.693109502322851E+025
+  4.683469673867794E+025
+  4.673527135811978E+025
+  4.663810391879625E+025
+  4.654845158538581E+025
+  4.647048720839608E+025
+  4.640597945643617E+025
+  4.635279671794384E+025
+  4.630336700683180E+025
+  4.624326161002290E+025
+  4.615009062845350E+025
+  4.599290234846083E+025
+  4.573226879773847E+025
+  4.532122338059969E+025
+  4.470719823797246E+025
+  4.383508579437663E+025
+  4.265150372876977E+025
+  4.111024456450305E+025
+  3.917870566492398E+025
+  3.684480267830142E+025
+  3.412348627849100E+025
+  3.106158550574299E+025
+  2.773944709448252E+025
+  2.426794792098083E+025
+  2.078011685644321E+025
+  1.741783058251820E+025
+  1.431559963174369E+025
+  1.157993225031435E+025
+  9.261385640754705E+024
+  7.352910882138525E+024
+  5.814090407937723E+024
+  4.591256864577822E+024
+  3.629234731989324E+024
+  2.877371013545120E+024
+  2.292033878846159E+024
+  1.837115064785487E+024
+  1.483520814528498E+024
+  1.208236960334000E+024
+  9.932908609281598E+023
+  8.247715301236384E+023
+  6.919763095652767E+023
+  5.867022301062087E+023
+  5.026752779080130E+023
+  4.351001431211504E+023
+  3.803100771110603E+023
+  3.354973405526344E+023
+  2.985071866042154E+023
+  2.676812193575030E+023
+  2.417387388965239E+023
+  2.196871077841167E+023
+  2.007541930005544E+023
+  1.843375694410973E+023
+  1.699664634182064E+023
+  1.572734272522586E+023
+  1.459735360398776E+023
+  1.358495582594139E+023
+  1.267421547981422E+023
+  1.185448041158483E+023
+  1.112039627217054E+023
+  1.047261309194757E+023
+  9.919526892843434E+022
+  9.480678400155566E+022
+  9.192862613696014E+022
+  9.120659823567182E+022
+  9.374064142498827E+022
+  1.013723880177324E+023
+  1.171420034356235E+023
+  1.459932321398019E+023
+  1.958256259923370E+023
+  2.790026068118802E+023
+  4.144045203225590E+023
+  6.300350167178814E+023
+  9.659986249419327E+023
+  1.477305684636294E+024
+  2.235368702716669E+024
+  3.326212675224823E+024
+  4.842421334476926E+024
+  6.864990580239183E+024
+  9.434741489845179E+024
+  1.253111135022851E+025
+  1.607125119650106E+025
+  1.991836907666433E+025
+  2.389938501043717E+025
+  2.782949403690111E+025
+  3.153734536324953E+025
+  3.488515485816957E+025
+  3.778040608006013E+025
+  4.017861974784014E+025
+  4.207887090822141E+025
+  4.351478877457849E+025
+  4.454376862698838E+025
+  4.523647100337940E+025
+  4.566783439376482E+025
+  4.591010106351864E+025
+  4.602788417669402E+025
+  4.607507681588490E+025
+  4.609333739918436E+025
+  4.611189032916001E+025
+  4.614839132026607E+025
+  4.621059710695918E+025
+  4.629855423851365E+025
+  4.640700393174926E+025
+  4.652771259170487E+025
+  4.665149043791087E+025
+  4.676974450120673E+025
+  4.687550477554262E+025
+  4.696394285602941E+025
+  4.703246368353660E+025
+  4.708049380214978E+025
+  4.710910465545072E+025
+  4.712058076226761E+025
+  4.711798838625773E+025
+  4.710478001252760E+025
+  4.708448244615991E+025
+  4.706048354193100E+025
+  4.703589554094668E+025
+  2.232604151405527E+026
+  2.232716637634885E+026
+  2.232942783548484E+026
+  2.233282603423173E+026
+  2.233715159973493E+026
+  2.234191846188590E+026
+  2.234632104176966E+026
+  2.234922586809038E+026
+  2.234920376277594E+026
+  2.234461289846490E+026
+  2.233373401243703E+026
+  2.231494893335488E+026
+  2.228694800681958E+026
+  2.224894455297965E+026
+  2.220086542170384E+026
+  2.214348019900793E+026
+  2.207842950152529E+026
+  2.200811544962432E+026
+  2.193542579247041E+026
+  2.186327838861317E+026
+  2.179399463744311E+026
+  2.172853683052238E+026
+  2.166567144907094E+026
+  2.160114374996190E+026
+  2.152696476063434E+026
+  2.143091811863645E+026
+  2.129639174557843E+026
+  2.110263104713732E+026
+  2.082549922636131E+026
+  2.043881617227634E+026
+  1.991632357189937E+026
+  1.923427668692790E+026
+  1.837457582945593E+026
+  1.732821139490628E+026
+  1.609861006306561E+026
+  1.470426992605197E+026
+  1.317993191451688E+026
+  1.157556121860353E+026
+  9.952704218494902E+025
+  8.378364573786062E+025
+  6.917300129804752E+025
+  5.621966192255096E+025
+  4.518643822265317E+025
+  3.606069972809884E+025
+  2.866727720014058E+025
+  2.276375263448747E+025
+  1.809671093836478E+025
+  1.443114036264244E+025
+  1.156307397532901E+025
+  9.322649999585584E+024
+  7.572230870973794E+024
+  6.202365025235623E+024
+  5.127143767812482E+024
+  4.279743680905156E+024
+  3.608502077128339E+024
+  3.073630917691369E+024
+  2.644552054081096E+024
+  2.297782276280571E+024
+  2.015279448399579E+024
+  1.783162630088014E+024
+  1.590728969340134E+024
+  1.429702610183551E+024
+  1.293663108169479E+024
+  1.177611731531135E+024
+  1.077643201523356E+024
+  9.906979126556834E+023
+  9.143756494241036E+023
+  8.467965310437707E+023
+  7.864986667710118E+023
+  7.323651304660860E+023
+  6.835757542258242E+023
+  6.395823729111232E+023
+  6.001101532195850E+023
+  5.651934037825152E+023
+  5.352630896140668E+023
+  5.113170523612655E+023
+  4.952252881407257E+023
+  4.902549449458836E+023
+  5.019468594500886E+023
+  5.395409322442400E+023
+  6.182323225353064E+023
+  7.626382102354544E+023
+  1.011944727908463E+024
+  1.427237260714031E+024
+  2.101401891867235E+024
+  3.171565569502643E+024
+  4.833088316030899E+024
+  7.352348119531795E+024
+  1.107270942915488E+025
+  1.640409134749738E+025
+  2.378194364699213E+025
+  3.357773614106576E+025
+  4.596061911913836E+025
+  6.079827297264943E+025
+  7.765881157086943E+025
+  9.585789988440978E+025
+  1.145498714304606E+026
+  1.328497068835371E+026
+  1.499546262640779E+026
+  1.652380684024745E+026
+  1.783009632034046E+026
+  1.889791662192726E+026
+  1.973163645698270E+026
+  2.035163926429664E+026
+  2.078883704965094E+026
+  2.107945653603805E+026
+  2.126066205990645E+026
+  2.136722884229434E+026
+  2.142926042638296E+026
+  2.147084252248853E+026
+  2.150949806591598E+026
+  2.155630982472332E+026
+  2.161657772285033E+026
+  2.169086796675557E+026
+  2.177629534117009E+026
+  2.186787147433140E+026
+  2.195976213778047E+026
+  2.204632958199495E+026
+  2.212288525672860E+026
+  2.218613120693780E+026
+  2.223431332950185E+026
+  2.226714205076879E+026
+  2.228555610932872E+026
+  2.229140946967708E+026
+  2.228714382049163E+026
+  2.227547975902089E+026
+  2.225914731617710E+026
+  2.224068031592594E+026
+  2.222228237557282E+026
+  2.220575408382285E+026
+  3.454359946799949E+025
+  3.454644702430870E+025
+  3.455052175193855E+025
+  3.455563021977455E+025
+  3.456129137004128E+025
+  3.456666155670670E+025
+  3.457049861198762E+025
+  3.457117800032603E+025
+  3.456676767616722E+025
+  3.455517440316490E+025
+  3.453436024802858E+025
+  3.450261258529225E+025
+  3.445884289049350E+025
+  3.440287889175561E+025
+  3.433570185650721E+025
+  3.425957239480639E+025
+  3.417798689225782E+025
+  3.409541294532192E+025
+  3.401676718799397E+025
+  3.394662403553864E+025
+  3.388817840717749E+025
+  3.384202568397860E+025
+  3.380486198103045E+025
+  3.376824059301158E+025
+  3.371754086077767E+025
+  3.363131150901097E+025
+  3.348114364488750E+025
+  3.323221421303529E+025
+  3.284462364116570E+025
+  3.227563085981718E+025
+  3.148285339294304E+025
+  3.042842714192675E+025
+  2.908398270965543E+025
+  2.743607472371358E+025
+  2.549140640989984E+025
+  2.328087837455321E+025
+  2.086127515860044E+025
+  1.831345535201550E+025
+  1.573638482781321E+025
+  1.323727583314954E+025
+  1.091929310480962E+025
+  8.865634163726862E+024
+  7.117711721635248E+024
+  5.673179891990849E+024
+  4.503928773375432E+024
+  3.571233103273313E+024
+  2.834686430794433E+024
+  2.256862776477391E+024
+  1.805313266534707E+024
+  1.453040630753967E+024
+  1.178190056089196E+024
+  9.633992401437540E+023
+  7.950543236325675E+023
+  6.625770815829548E+023
+  5.577982737885280E+023
+  4.744335731708445E+023
+  4.076590479785659E+023
+  3.537745858275282E+023
+  3.099409696934929E+023
+  2.739766222668267E+023
+  2.442016463180844E+023
+  2.193187997328649E+023
+  1.983230142688026E+023
+  1.804328143132643E+023
+  1.650384622675585E+023
+  1.516628551195562E+023
+  1.399321515824746E+023
+  1.295538615830715E+023
+  1.203007276603046E+023
+  1.119992249523835E+023
+  1.045219646359936E+023
+  9.778377988727152E+022
+  9.174190255686488E+022
+  8.640154282737667E+022
+  8.182956800817096E+022
+  7.818113746402772E+022
+  7.574750216841714E+022
+  7.503825634725655E+022
+  7.691875533135553E+022
+  8.283375075820780E+022
+  9.516170740680178E+022
+  1.177598327056426E+023
+  1.567743168352542E+023
+  2.217960868834588E+023
+  3.274249302577543E+023
+  4.952395155801650E+023
+  7.560212045990847E+023
+  1.151800127173074E+024
+  1.736840892520887E+024
+  2.576053435251341E+024
+  3.738577992754953E+024
+  5.283694502762463E+024
+  7.238953980278381E+024
+  9.584361466225286E+024
+  1.225241308814513E+025
+  1.513527868545383E+025
+  1.809900303635765E+025
+  2.100270630932257E+025
+  2.371787078854233E+025
+  2.614338983968074E+025
+  2.821393982913358E+025
+  2.990143405965314E+025
+  3.121098013504766E+025
+  3.217351639808162E+025
+  3.283724138971630E+025
+  3.325940859476032E+025
+  3.349939076003026E+025
+  3.361336245419450E+025
+  3.365059898703956E+025
+  3.365122723365771E+025
+  3.364522078586385E+025
+  3.365243656450209E+025
+  3.368349441274591E+025
+  3.374128752974414E+025
+  3.382288692118579E+025
+  3.392158703891276E+025
+  3.402885126900126E+025
+  3.413596206815513E+025
+  3.423525284917995E+025
+  3.432087812819544E+025
+  3.438914719987456E+025
+  3.443849763414787E+025
+  3.446921823771975E+025
+  3.448304067608845E+025
+  3.448269422653789E+025
+  3.447147413883282E+025
+  3.445285567392723E+025
+  3.443019270482113E+025
+  3.440651424800707E+025
+  3.438440385121509E+025
+  4.398864635875780E+025
+  4.398985542720704E+025
+  4.399408664908218E+025
+  4.400157019338095E+025
+  4.401205940057536E+025
+  4.402466667203802E+025
+  4.403775193601573E+025
+  4.404888769466614E+025
+  4.405491688274655E+025
+  4.405212720389428E+025
+  4.403654659998660E+025
+  4.400434298119119E+025
+  4.395229836018339E+025
+  4.387831050312914E+025
+  4.378185492832189E+025
+  4.366432502783168E+025
+  4.352916215934386E+025
+  4.338169186857450E+025
+  4.322859927598060E+025
+  4.307700865235168E+025
+  4.293317906893095E+025
+  4.280088520395596E+025
+  4.267961178189926E+025
+  4.256274199842219E+025
+  4.243595603754557E+025
+  4.227607070728521E+025
+  4.205054632021704E+025
+  4.171786834156554E+025
+  4.122898607646805E+025
+  4.052995965293003E+025
+  3.956591751068869E+025
+  3.828633226291350E+025
+  3.665144829535006E+025
+  3.463941409663249E+025
+  3.225329232543978E+025
+  2.952670567077483E+025
+  2.652657346306538E+025
+  2.335142295009765E+025
+  2.012432858286083E+025
+  1.698069655618803E+025
+  1.405266465717643E+025
+  1.144851362385179E+025
+  9.224066828458843E+024
+  7.379317505421044E+024
+  5.880960858868719E+024
+  4.681594571711431E+024
+  3.731133360044422E+024
+  2.982836687565476E+024
+  2.395954743765107E+024
+  1.936427432322890E+024
+  1.576568755200232E+024
+  1.294299238841373E+024
+  1.072242387054817E+024
+  8.968477909229354E+023
+  7.576138643038161E+023
+  6.464338058314616E+023
+  5.570631129061951E+023
+  4.846955205907807E+023
+  4.256303828202604E+023
+  3.770145504705188E+023
+  3.366435865534648E+023
+  3.028095248271015E+023
+  2.741847477140995E+023
+  2.497336869880490E+023
+  2.286458572258996E+023
+  2.102852145147081E+023
+  1.941520216047100E+023
+  1.798543422445272E+023
+  1.670870393974953E+023
+  1.556167817001708E+023
+  1.452721485941244E+023
+  1.359385639322978E+023
+  1.275586092714197E+023
+  1.201394541897678E+023
+  1.137709587317619E+023
+  1.086608381264622E+023
+  1.051976655182752E+023
+  1.040591090417575E+023
+  1.063924310847702E+023
+  1.141075928070607E+023
+  1.303404204775576E+023
+  1.601628478973171E+023
+  2.116348154379641E+023
+  2.972979360882499E+023
+  4.361854637690259E+023
+  6.563346914127636E+023
+  9.975904309890490E+023
+  1.514125136521955E+024
+  2.275522644403426E+024
+  3.364473136455243E+024
+  4.868212744727628E+024
+  6.860130517785473E+024
+  9.371607425229101E+024
+  1.237216563202196E+025
+  1.577044895953658E+025
+  1.942446904172091E+025
+  2.316072554946439E+025
+  2.679937803959588E+025
+  3.017902640024366E+025
+  3.317557519001273E+025
+  3.571220530375846E+025
+  3.776034994954484E+025
+  3.933368118534886E+025
+  4.047801260445516E+025
+  4.125987019975742E+025
+  4.175573470573384E+025
+  4.204307704117869E+025
+  4.219359437842469E+025
+  4.226861512870899E+025
+  4.231644400536820E+025
+  4.237136882031610E+025
+  4.245405518194877E+025
+  4.257305405540716E+025
+  4.272712154438900E+025
+  4.290801348918648E+025
+  4.310339767833718E+025
+  4.329954843505630E+025
+  4.348355971733365E+025
+  4.364491977962032E+025
+  4.377640514094303E+025
+  4.387434873897144E+025
+  4.393840645179632E+025
+  4.397098790125703E+025
+  4.397652512236292E+025
+  4.396071495182548E+025
+  4.392980904871485E+025
+  4.388999763810360E+025
+  4.384693895341488E+025
+  4.380545223586470E+025
+  4.376935466113008E+025
+  1.584843050718828E+022
+  1.584954834612102E+022
+  1.585145380416122E+022
+  1.585411521608846E+022
+  1.585734912945930E+022
+  1.586077871070009E+022
+  1.586381243965225E+022
+  1.586565038103111E+022
+  1.586532220178234E+022
+  1.586176351281709E+022
+  1.585393011416886E+022
+  1.584094200799064E+022
+  1.582224456429791E+022
+  1.579776846933991E+022
+  1.576806343924151E+022
+  1.573437623248569E+022
+  1.569864260856876E+022
+  1.566336587362974E+022
+  1.563136221712875E+022
+  1.560536586520849E+022
+  1.558750477127175E+022
+  1.557867821788968E+022
+  1.557788821786525E+022
+  1.558159350716047E+022
+  1.558316538618112E+022
+  1.557252746272105E+022
+  1.553605740678650E+022
+  1.545682082741770E+022
+  1.531519807116255E+022
+  1.508995420753638E+022
+  1.475978557223169E+022
+  1.430534211863187E+022
+  1.371165997233009E+022
+  1.297083342631547E+022
+  1.208461317893417E+022
+  1.106646318229910E+022
+  9.942498017240781E+021
+  8.750739095059967E+021
+  7.538348343733059E+021
+  6.356940003041763E+021
+  5.256654372573760E+021
+  4.278412040136600E+021
+  3.443238013093313E+021
+  2.751086065417168E+021
+  2.189356707213411E+021
+  1.740142195064391E+021
+  1.384533863524756E+021
+  1.104895905923763E+021
+  8.858621829375583E+020
+  7.145978216309043E+020
+  5.806778485676533E+020
+  4.757954732522155E+020
+  3.934194249843152E+020
+  3.284617677837390E+020
+  2.769837101197760E+020
+  2.359482562042115E+020
+  2.030189928923187E+020
+  1.763999865491511E+020
+  1.547103194969917E+020
+  1.368868220652239E+020
+  1.221092419686532E+020
+  1.097429959547838E+020
+  9.929555147002526E+019
+  9.038329569793080E+019
+  8.270643596812458E+019
+  7.603003833658843E+019
+  7.016976189121226E+019
+  6.498120298464933E+019
+  6.035204806813848E+019
+  5.619647148431664E+019
+  5.245143497815060E+019
+  4.907478497059871E+019
+  4.604534976615964E+019
+  4.336567984717301E+019
+  4.106874968216593E+019
+  3.923099294429761E+019
+  3.799567422899654E+019
+  3.761306649048677E+019
+  3.850749822311357E+019
+  4.138631707827731E+019
+  4.741224360820162E+019
+  5.846797520880285E+019
+  7.754861619612475E+019
+  1.093198292356642E+020
+  1.608704097219732E+020
+  2.426553764987290E+020
+  3.695522137016483E+020
+  5.618171183200658E+020
+  8.455108077701965E+020
+  1.251661940348134E+021
+  1.813089552868946E+021
+  2.557533345409916E+021
+  3.497092644888050E+021
+  4.620707044219301E+021
+  5.894384942036354E+021
+  7.264910570418911E+021
+  8.666917002783018E+021
+  1.003229547538076E+022
+  1.129953698836136E+022
+  1.242092153186722E+022
+  1.336640885024830E+022
+  1.412415837682099E+022
+  1.469840423649446E+022
+  1.510576083173618E+022
+  1.537098826170673E+022
+  1.552297290833452E+022
+  1.559135006786416E+022
+  1.560392697666153E+022
+  1.558489838743229E+022
+  1.555377225664833E+022
+  1.552490523012826E+022
+  1.550755105002542E+022
+  1.550632651180568E+022
+  1.552199121051283E+022
+  1.555242328206416E+022
+  1.559366399593309E+022
+  1.564090901785018E+022
+  1.568934706118503E+022
+  1.573478319647473E+022
+  1.577402463911668E+022
+  1.580504220167509E+022
+  1.582694678766305E+022
+  1.583983705836829E+022
+  1.584457898444374E+022
+  1.584256582571392E+022
+  1.583548550937824E+022
+  1.582511269500512E+022
+  1.581314523277168E+022
+  1.580109247935846E+022
+  1.579020930374576E+022
+  2.127220045746986E+026
+  2.127369904212944E+026
+  2.127605599259719E+026
+  2.127919288022723E+026
+  2.128284764128891E+026
+  2.128652224199026E+026
+  2.128945381299405E+026
+  2.129061775816548E+026
+  2.128876745939708E+026
+  2.128251911470088E+026
+  2.127048169990576E+026
+  2.125142255475201E+026
+  2.122445407193536E+026
+  2.118922028121546E+026
+  2.114605403645747E+026
+  2.109606999810955E+026
+  2.104115736924284E+026
+  2.098383967277973E+026
+  2.092697754859573E+026
+  2.087330551718355E+026
+  2.082481456692186E+026
+  2.078201708238685E+026
+  2.074315540099039E+026
+  2.070343605700451E+026
+  2.065438516666495E+026
+  2.058342491282686E+026
+  2.047376768567375E+026
+  2.030471610092998E+026
+  2.005244675120761E+026
+  1.969134270532746E+026
+  1.919591766500574E+026
+  1.854332977262919E+026
+  1.771639901865402E+026
+  1.670690811665521E+026
+  1.551878773006988E+026
+  1.417059604075062E+026
+  1.269657074113154E+026
+  1.114556170634195E+026
+  9.577438694403166E+025
+  8.057128164457690E+025
+  6.647161769477099E+025
+  5.398004114998394E+025
+  4.334770315515815E+025
+  3.456003357484949E+025
+  2.744602784080787E+025
+  2.177026343869821E+025
+  1.728715224861328E+025
+  1.376923952153466E+025
+  1.101931916867668E+025
+  8.873308327250757E+024
+  7.198365902875692E+024
+  5.888943570562839E+024
+  4.862266393836131E+024
+  4.054003801547090E+024
+  3.414463905678703E+024
+  2.905410660903886E+024
+  2.497485435189486E+024
+  2.168162483055828E+024
+  1.900151582286727E+024
+  1.680162963280184E+024
+  1.497959442088912E+024
+  1.345632872356736E+024
+  1.217053986783514E+024
+  1.107455299301079E+024
+  1.013115660176978E+024
+  9.311223253495092E+023
+  8.591921959785158E+023
+  7.955384511568678E+023
+  7.387724258893080E+023
+  6.878336057935766E+023
+  6.419433951833243E+023
+  6.005813227765814E+023
+  5.634861818639211E+023
+  5.306901127462950E+023
+  5.026020728214746E+023
+  4.801703136958151E+023
+  4.651739132782335E+023
+  4.607243584314132E+023
+  4.721034057492072E+023
+  5.081263682867761E+023
+  5.833015550708947E+023
+  7.211511523278363E+023
+  9.591464960689302E+023
+  1.355745335779653E+024
+  1.999911470201014E+024
+  3.023098272950480E+024
+  4.612765803417999E+024
+  7.024800509649389E+024
+  1.058946348292766E+025
+  1.570165425294632E+025
+  2.278180687390639E+025
+  3.219010775778809E+025
+  4.409347423980404E+025
+  5.836955765473925E+025
+  7.460737240520557E+025
+  9.215136627571114E+025
+  1.101880589822291E+026
+  1.278628854613058E+026
+  1.443973288865009E+026
+  1.591800852590243E+026
+  1.718175148390442E+026
+  1.821420167797013E+026
+  1.901870511134530E+026
+  1.961420818591399E+026
+  2.003003058411207E+026
+  2.030087173927146E+026
+  2.046259907595160E+026
+  2.054902852053597E+026
+  2.058969495502926E+026
+  2.060851148328181E+026
+  2.062318979729547E+026
+  2.064529615188537E+026
+  2.068081947505476E+026
+  2.073111949287438E+026
+  2.079410792142420E+026
+  2.086550679679168E+026
+  2.094003617093345E+026
+  2.101241277422774E+026
+  2.107808637094374E+026
+  2.113368961510260E+026
+  2.117721937077005E+026
+  2.120799841622772E+026
+  2.122648628406525E+026
+  2.123401308023396E+026
+  2.123249436001976E+026
+  2.122415794674719E+026
+  2.121130222129992E+026
+  2.119610935720860E+026
+  2.118052120447159E+026
+  2.116616819256286E+026
+  3.145298047792376E+026
+  3.145425188275777E+026
+  3.145770593313308E+026
+  3.146347302915976E+026
+  3.147133389148020E+026
+  3.148061031088293E+026
+  3.149009884472676E+026
+  3.149806520247915E+026
+  3.150231072365352E+026
+  3.150032681860233E+026
+  3.148953872217412E+026
+  3.146762338663009E+026
+  3.143287597196152E+026
+  3.138458638212341E+026
+  3.132337233349331E+026
+  3.125140477302088E+026
+  3.117245810608441E+026
+  3.109172260339025E+026
+  3.101533119511425E+026
+  3.094957926171112E+026
+  3.089985339865663E+026
+  3.086932960580695E+026
+  3.085754639841889E+026
+  3.085899638674140E+026
+  3.086190446827469E+026
+  3.084736874780475E+026
+  3.078903309402777E+026
+  3.065344330311482E+026
+  3.040121824259996E+026
+  2.998914417880160E+026
+  2.937326536153528E+026
+  2.851297546980377E+026
+  2.737598499489506E+026
+  2.594382803178692E+026
+  2.421728182743567E+026
+  2.222075259152063E+026
+  2.000444390417764E+026
+  1.764313902519285E+026
+  1.523085728528603E+026
+  1.287153216916093E+026
+  1.066704996568084E+026
+  8.701442183868664E+025
+  7.018935795798056E+025
+  5.621147115566290E+025
+  4.484068241784922E+025
+  3.572642732861229E+025
+  2.849484625721520E+025
+  2.279522362630545E+025
+  1.832070728376289E+025
+  1.481412885240351E+025
+  1.206599324215229E+025
+  9.908924924820851E+024
+  8.210993902170186E+024
+  6.869179355513324E+024
+  5.803544304929077E+024
+  4.952315225691290E+024
+  4.267864573743077E+024
+  3.713503948904712E+024
+  3.260963916539389E+024
+  2.888435061293336E+024
+  2.579057217961174E+024
+  2.319760995465684E+024
+  2.100383184118391E+024
+  1.912993461888898E+024
+  1.751383330161787E+024
+  1.610679346348426E+024
+  1.487051679240669E+024
+  1.377496127268536E+024
+  1.279673434880765E+024
+  1.191794522363308E+024
+  1.112544704547939E+024
+  1.041044850048401E+024
+  9.768537051887163E+023
+  9.200246678485085E+023
+  8.712441800235061E+023
+  8.321005505071824E+023
+  8.055654754412198E+023
+  7.968209860523633E+023
+  8.146378774342521E+023
+  8.736128762151483E+023
+  9.977015597068182E+023
+  1.225631689177671E+024
+  1.618912854699747E+024
+  2.273195933767263E+024
+  3.333533857737734E+024
+  5.013411563858520E+024
+  7.615896687246747E+024
+  1.155248701289652E+025
+  1.735082591424162E+025
+  2.563640087282873E+025
+  3.706646719885517E+025
+  5.218920631593940E+025
+  7.122910976614676E+025
+  9.393664015770409E+025
+  1.195972943801756E+026
+  1.471117549833395E+026
+  1.751437615254378E+026
+  2.023136907103499E+026
+  2.273884016033331E+026
+  2.494251462682452E+026
+  2.678470028741961E+026
+  2.824493281094561E+026
+  2.933528158761386E+026
+  3.009255214375736E+026
+  3.056949171546654E+026
+  3.082652301048362E+026
+  3.092485286732266E+026
+  3.092125722216666E+026
+  3.086451214877118E+026
+  3.079329580241554E+026
+  3.073535381935840E+026
+  3.070772811413139E+026
+  3.071784955893604E+026
+  3.076527426422072E+026
+  3.084381167237964E+026
+  3.094377283527182E+026
+  3.105407914022653E+026
+  3.116402234566386E+026
+  3.126454639859000E+026
+  3.134900936528355E+026
+  3.141346013227056E+026
+  3.145652021287068E+026
+  3.147899494801698E+026
+  3.148334566250341E+026
+  3.147312741955582E+026
+  3.145245190571608E+026
+  3.142551377745227E+026
+  3.139622147749917E+026
+  3.136794807126326E+026
+  3.134339029884402E+026
+  1.268333768919319E+026
+  1.268399387968439E+026
+  1.268525854503249E+026
+  1.268712370261790E+026
+  1.268946584884272E+026
+  1.269200862474603E+026
+  1.269429872236762E+026
+  1.269570050873127E+026
+  1.269541269012043E+026
+  1.269251279817394E+026
+  1.268603027464176E+026
+  1.267504333875238E+026
+  1.265879183135063E+026
+  1.263679416041260E+026
+  1.260895146254962E+026
+  1.257561849079633E+026
+  1.253761955135329E+026
+  1.249618922374225E+026
+  1.245282213594830E+026
+  1.240902436440870E+026
+  1.236597100856493E+026
+  1.232408896948160E+026
+  1.228259886661819E+026
+  1.223906293416402E+026
+  1.218899456481327E+026
+  1.212558884728664E+026
+  1.203963233440792E+026
+  1.191964593587276E+026
+  1.175230886071059E+026
+  1.152320372524834E+026
+  1.121790951179084E+026
+  1.082344237748119E+026
+  1.032999511231725E+026
+  9.732848093202757E+025
+  9.034220756628315E+025
+  8.244721790168137E+025
+  7.383979236454968E+025
+  6.480048133837070E+025
+  5.567357725185517E+025
+  4.683283427781602E+025
+  3.863850592909074E+025
+  3.138138171147141E+025
+  2.520568721762065E+025
+  2.010190434780720E+025
+  1.597012102826605E+025
+  1.267333438236326E+025
+  1.006883725739213E+025
+  8.024562593979521E+024
+  6.426059179892809E+024
+  5.178124839845600E+024
+  4.203694466716879E+024
+  3.441538165500959E+024
+  2.843634492083634E+024
+  2.372657559330756E+024
+  1.999769508758446E+024
+  1.702775057291785E+024
+  1.464626863054466E+024
+  1.272240525231636E+024
+  1.115568783529878E+024
+  9.868856582871890E+023
+  8.802369926700373E+023
+  7.910209566994328E+023
+  7.156690115874118E+023
+  6.514039781452692E+023
+  5.960570212762283E+023
+  5.479295722813087E+023
+  5.056895658970012E+023
+  4.682940130175883E+023
+  4.349320312051510E+023
+  4.049842038342806E+023
+  3.779957534277855E+023
+  3.536627609657431E+023
+  3.318328913447329E+023
+  3.125252922999995E+023
+  2.959792461425176E+023
+  2.827488229886343E+023
+  2.738726738461415E+023
+  2.711661063335292E+023
+  2.777088857187364E+023
+  2.986387625224403E+023
+  3.424080838127375E+023
+  4.227156638640700E+023
+  5.613767736994840E+023
+  7.924138347996358E+023
+  1.167587561122959E+024
+  1.763356007959418E+024
+  2.688719034541625E+024
+  4.092418422968280E+024
+  6.166372923856295E+024
+  9.140002419339554E+024
+  1.325750581309930E+025
+  1.872805667434419E+025
+  2.564862231410718E+025
+  3.394841282318891E+025
+  4.338953255404836E+025
+  5.359279114876909E+025
+  6.408809638768690E+025
+  7.438220904664435E+025
+  8.402649241046908E+025
+  9.266946504205934E+025
+  1.000856774129517E+026
+  1.061801978873754E+026
+  1.109738245608023E+026
+  1.145767496546756E+026
+  1.171581422181712E+026
+  1.189171800606042E+026
+  1.200586996237002E+026
+  1.207746760629942E+026
+  1.212315128958042E+026
+  1.215625453113981E+026
+  1.218650009485355E+026
+  1.222006668120739E+026
+  1.225995159152607E+026
+  1.230654944189494E+026
+  1.235835872434460E+026
+  1.241272370503650E+026
+  1.246652518889240E+026
+  1.251675213400381E+026
+  1.256091345942021E+026
+  1.259727855137870E+026
+  1.262495955406111E+026
+  1.264386620202565E+026
+  1.265457499013808E+026
+  1.265815687489992E+026
+  1.265599786154723E+026
+  1.264963037447695E+026
+  1.264058647251973E+026
+  1.263028638146874E+026
+  1.261996648458315E+026
+  1.261064061012431E+026
+  8.175244237023907E+023
+  8.176140891844213E+023
+  8.177212084854013E+023
+  8.178371880243769E+023
+  8.179474782443866E+023
+  8.180303907361051E+023
+  8.180568368525334E+023
+  8.179912402761325E+023
+  8.177937176978906E+023
+  8.174237648310452E+023
+  8.168453566519880E+023
+  8.160330194630634E+023
+  8.149782597598194E+023
+  8.136955044632339E+023
+  8.122264343430801E+023
+  8.106414302069784E+023
+  8.090368605116543E+023
+  8.075271242916649E+023
+  8.062307481494021E+023
+  8.052504457282309E+023
+  8.046478582838461E+023
+  8.044146125000286E+023
+  8.044422145907062E+023
+  8.044939975215107E+023
+  8.041827375801489E+023
+  8.029576217181274E+023
+  8.001040379675575E+023
+  7.947593069502731E+023
+  7.859470859292202E+023
+  7.726327251406489E+023
+  7.538010470229295E+023
+  7.285562950306693E+023
+  6.962407092951668E+023
+  6.565629216799187E+023
+  6.097203690322272E+023
+  5.564925470270025E+023
+  4.982769821404315E+023
+  4.370413189679170E+023
+  3.751764998276551E+023
+  3.152581846383529E+023
+  2.597520350335051E+023
+  2.106350800610403E+023
+  1.688798949647011E+023
+  1.344132861119038E+023
+  1.065488706554621E+023
+  8.434979897241097E+022
+  6.684217306242058E+022
+  5.312599417938136E+022
+  4.242230978850309E+022
+  3.408400682427982E+022
+  2.758795888766326E+022
+  2.251912691209498E+022
+  1.855250322613719E+022
+  1.543588108487676E+022
+  1.297474517371881E+022
+  1.101965999683658E+022
+  9.456070863458121E+021
+  8.196229737137209E+021
+  7.172896783508416E+021
+  6.334477887715412E+021
+  5.641298558494242E+021
+  5.062763925366541E+021
+  4.575202525231797E+021
+  4.160233972358830E+021
+  3.803536186651737E+021
+  3.493916777133351E+021
+  3.222616184577600E+021
+  2.982788285615916E+021
+  2.769118513589506E+021
+  2.577551457518953E+021
+  2.405110833170015E+021
+  2.249806459000563E+021
+  2.110637756857732E+021
+  1.987724646405757E+021
+  1.882629363555671E+021
+  1.798983752921881E+021
+  1.743615799457516E+021
+  1.728489394219473E+021
+  1.773947490751292E+021
+  1.913994659317983E+021
+  2.204675235600391E+021
+  2.736977021831507E+021
+  3.656042161899164E+021
+  5.188618619317914E+021
+  7.680292322901845E+021
+  1.164251556737319E+022
+  1.780591988220866E+022
+  2.716977476115915E+022
+  4.102670218349902E+022
+  6.092662032168043E+022
+  8.852612836993069E+022
+  1.252548910097755E+023
+  1.717952195182143E+023
+  2.277019269393386E+023
+  2.913964217108931E+023
+  3.603305265132704E+023
+  4.313186669580181E+023
+  5.009919449921097E+023
+  5.662579734188486E+023
+  6.246631830421746E+023
+  6.745982942788211E+023
+  7.153396759670547E+023
+  7.469591313883386E+023
+  7.701531438735269E+023
+  7.860416909139604E+023
+  7.959742100624696E+023
+  8.013645485134669E+023
+  8.035634895450347E+023
+  8.037690218335952E+023
+  8.029705727118114E+023
+  8.019223738675689E+023
+  8.011412679434443E+023
+  8.009244289336009E+023
+  8.013822023343995E+023
+  8.024807081974294E+023
+  8.040884425096050E+023
+  8.060213084986209E+023
+  8.080814978286744E+023
+  8.100872466050734E+023
+  8.118922842342566E+023
+  8.133953677731074E+023
+  8.145414884963526E+023
+  8.153171506840142E+023
+  8.157423991797289E+023
+  8.158617415663895E+023
+  8.157351084404786E+023
+  8.154295857048672E+023
+  8.150128368231251E+023
+  8.145485408979215E+023
+  8.140935040671524E+023
+  1.510700318001778E+026
+  1.510902739408182E+026
+  1.511108905831094E+026
+  1.511294661026058E+026
+  1.511427249530190E+026
+  1.511464261849792E+026
+  1.511354076710095E+026
+  1.511038111285610E+026
+  1.510454902209557E+026
+  1.509546335211958E+026
+  1.508265786932294E+026
+  1.506587360383930E+026
+  1.504515158377628E+026
+  1.502091205371351E+026
+  1.499400217307832E+026
+  1.496569202367126E+026
+  1.493759952669148E+026
+  1.491152851625392E+026
+  1.488921101697994E+026
+  1.487195507715504E+026
+  1.486021284655989E+026
+  1.485309836433328E+026
+  1.484789840361294E+026
+  1.483963033962294E+026
+  1.482070671183354E+026
+  1.478076660454818E+026
+  1.470673036878969E+026
+  1.458312872740204E+026
+  1.439275157709270E+026
+  1.411765470841518E+026
+  1.374054852062523E+026
+  1.324656152271722E+026
+  1.262531178085858E+026
+  1.187312518067997E+026
+  1.099511615892560E+026
+  1.000671961638245E+026
+  8.934182511340182E+025
+  7.813560598081884E+025
+  6.687980427698050E+025
+  5.603323678382163E+025
+  4.602989852388852E+025
+  3.721256715874027E+025
+  2.974316278906738E+025
+  2.359787483694291E+025
+  1.864547605655931E+025
+  1.471222851846287E+025
+  1.161973366133128E+025
+  9.204347062522446E+024
+  7.325198026008027E+024
+  5.865773978598631E+024
+  4.732248663293294E+024
+  3.850443473041752E+024
+  3.162462228948431E+024
+  2.623518764338256E+024
+  2.199176674678570E+024
+  1.863058735815611E+024
+  1.595003251792411E+024
+  1.379610464925102E+024
+  1.205112810073137E+024
+  1.062505697639101E+024
+  9.448835590482735E+023
+  8.469353105773441E+023
+  7.645623893163489E+023
+  6.945903747611898E+023
+  6.345517520231895E+023
+  5.825226563746887E+023
+  5.370006194462790E+023
+  4.968136107779252E+023
+  4.610532523906634E+023
+  4.290272152383906E+023
+  4.002277483006832E+023
+  3.743153580993216E+023
+  3.511192596662997E+023
+  3.306599398949274E+023
+  3.132048610854429E+023
+  2.993772256761706E+023
+  2.903515623901948E+023
+  2.881909662578589E+023
+  2.964118303450039E+023
+  3.209054180516649E+023
+  3.714027299231064E+023
+  4.637365953513142E+023
+  6.232200595363714E+023
+  8.894923652232973E+023
+  1.323122896192623E+024
+  2.014005898980209E+024
+  3.090968786548024E+024
+  4.730855061381021E+024
+  7.163436794723505E+024
+  1.066579646897471E+025
+  1.553658055351417E+025
+  2.203775879769893E+025
+  3.030266122138643E+025
+  4.026743693800877E+025
+  5.166757977235888E+025
+  6.406418077139936E+025
+  7.690025994820048E+025
+  8.957957350416664E+025
+  1.015477180875096E+026
+  1.123572136138056E+026
+  1.217056947664852E+026
+  1.294454061924384E+026
+  1.355692951388648E+026
+  1.401824383005367E+026
+  1.434675675087703E+026
+  1.456513844555391E+026
+  1.469756347704565E+026
+  1.476745727079601E+026
+  1.479589243678179E+026
+  1.480057199634253E+026
+  1.479531522258061E+026
+  1.478996356704312E+026
+  1.479062815370413E+026
+  1.480019768712000E+026
+  1.481901770499432E+026
+  1.484564600953878E+026
+  1.487759232242594E+026
+  1.491196609349215E+026
+  1.494598227373559E+026
+  1.497730378584817E+026
+  1.500422484488186E+026
+  1.502571886059462E+026
+  1.504138861675947E+026
+  1.505136177905646E+026
+  1.505616617935408E+026
+  1.505660237624423E+026
+  1.505362468808864E+026
+  1.504824598997948E+026
+  1.504147117466255E+026
+  1.503425249997335E+026
+  8.752234815551033E+025
+  8.753228564433782E+025
+  8.754347974058537E+025
+  8.755487979485274E+025
+  8.756486200189186E+025
+  8.757111681040492E+025
+  8.757062263641159E+025
+  8.755972890187375E+025
+  8.753435530934276E+025
+  8.749033134493450E+025
+  8.742386750847537E+025
+  8.733211526567900E+025
+  8.721375758166585E+025
+  8.706955052556281E+025
+  8.690271005895739E+025
+  8.671902252611418E+025
+  8.652655845170612E+025
+  8.633488699993469E+025
+  8.615372501970212E+025
+  8.599101269201785E+025
+  8.585048533512685E+025
+  8.572889909805768E+025
+  8.561315357157102E+025
+  8.547762249654057E+025
+  8.528204405715616E+025
+  8.497033134081595E+025
+  8.447064701257987E+025
+  8.369705592334702E+025
+  8.255303485857769E+025
+  8.093707463116386E+025
+  7.875052516622377E+025
+  7.590765257607411E+025
+  7.234753456755759E+025
+  6.804687946836446E+025
+  6.303214496845866E+025
+  5.738859661065616E+025
+  5.126347051384416E+025
+  4.486059530626266E+025
+  3.842503831586366E+025
+  3.221860759702967E+025
+  2.648991403376199E+025
+  2.143617695650240E+025
+  1.715140102588697E+025
+  1.362313286705492E+025
+  1.077716897219558E+025
+  8.514712345203044E+024
+  6.734074476120527E+024
+  5.341835640870688E+024
+  4.257481541549876E+024
+  3.414349990896014E+024
+  2.758705595329349E+024
+  2.248024141809189E+024
+  1.849083268577309E+024
+  1.536158069405113E+024
+  1.289448512144824E+024
+  1.093772722153188E+024
+  9.375140242872438E+023
+  8.117898819940023E+023
+  7.098053320437009E+023
+  6.263550269881427E+023
+  5.574424932546258E+023
+  4.999905239770346E+023
+  4.516217170994930E+023
+  4.104926271335961E+023
+  3.751687164918398E+023
+  3.445302993085297E+023
+  3.177020530243181E+023
+  2.940005405626800E+023
+  2.728956619872376E+023
+  2.539831742015335E+023
+  2.369665318512233E+023
+  2.216474933503730E+023
+  2.079264402939177E+023
+  1.958155118201501E+023
+  1.854709488796347E+023
+  1.772561917978244E+023
+  1.718552795071600E+023
+  1.704682724970542E+023
+  1.751383045783294E+023
+  1.892849115062700E+023
+  2.185510571399750E+023
+  2.721098318012171E+023
+  3.646136834961301E+023
+  5.189865005525119E+023
+  7.702220839547378E+023
+  1.170202018666871E+024
+  1.793192424274971E+024
+  2.741009037344079E+024
+  4.145745011428983E+024
+  6.166401927086740E+024
+  8.973920676907346E+024
+  1.271754794562766E+025
+  1.747193918541359E+025
+  2.319803300527966E+025
+  2.974159733447625E+025
+  3.684889485094326E+025
+  4.419953685295808E+025
+  5.145202806413991E+025
+  5.829033448023793E+025
+  6.446097087132801E+025
+  6.979445819590480E+025
+  7.421023699889709E+025
+  7.770818446543668E+025
+  8.035181935601534E+025
+  8.224825166649082E+025
+  8.352871178652535E+025
+  8.433191814955154E+025
+  8.479119837455994E+025
+  8.502540935836115E+025
+  8.513328330101218E+025
+  8.519070536606791E+025
+  8.525043596935905E+025
+  8.534380854083402E+025
+  8.548391373896087E+025
+  8.566973386183271E+025
+  8.589065882480620E+025
+  8.613084048981453E+025
+  8.637294320993164E+025
+  8.660100742182189E+025
+  8.680231758465843E+025
+  8.696831652688398E+025
+  8.709472173042119E+025
+  8.718107751476510E+025
+  8.723000435011408E+025
+  8.724635249030108E+025
+  8.723636505483252E+025
+  8.720691649499989E+025
+  8.716491486682097E+025
+  8.711689560023569E+025
+  8.706876639173314E+025
+  1.476042713800073E+026
+  1.476222049475764E+026
+  1.476417287571052E+026
+  1.476608692371273E+026
+  1.476767197143136E+026
+  1.476852818118157E+026
+  1.476814557455461E+026
+  1.476592160582673E+026
+  1.476119815036059E+026
+  1.475332160807063E+026
+  1.474172430081417E+026
+  1.472601950265914E+026
+  1.470609990049004E+026
+  1.468222573050968E+026
+  1.465508449102070E+026
+  1.462580166565412E+026
+  1.459588230161441E+026
+  1.456706656083655E+026
+  1.454108883613215E+026
+  1.451934010980211E+026
+  1.450244652154158E+026
+  1.448979206086655E+026
+  1.447902758541906E+026
+  1.446561957613347E+026
+  1.444249840882134E+026
+  1.439986696559567E+026
+  1.432522718092564E+026
+  1.420367671387103E+026
+  1.401852203396755E+026
+  1.375224687582255E+026
+  1.338786088496925E+026
+  1.291062259902472E+026
+  1.231007269157831E+026
+  1.158222123909018E+026
+  1.073161186470738E+026
+  9.772860179629139E+025
+  8.731183126311554E+025
+  7.641468853228238E+025
+  6.545643830721051E+025
+  5.488481085498125E+025
+  4.512483525520026E+025
+  3.651365553313727E+025
+  2.921220673013143E+025
+  2.319973387768236E+025
+  1.835004086749727E+025
+  1.449487579426154E+025
+  1.146097084640003E+025
+  9.089102738066864E+024
+  7.242021529736683E+024
+  5.806079985241243E+024
+  4.689664964113511E+024
+  3.820277114053791E+024
+  3.141277625617060E+024
+  2.608812388233780E+024
+  2.189130625175764E+024
+  1.856356512164742E+024
+  1.590693385274437E+024
+  1.377006335145119E+024
+  1.203719465189453E+024
+  1.061966631911660E+024
+  9.449421313399617E+023
+  8.474068438399083E+023
+  7.653140298309350E+023
+  6.955265720061760E+023
+  6.356038014880977E+023
+  5.836411756322205E+023
+  5.381501400683687E+023
+  4.979686942078664E+023
+  4.621956980711819E+023
+  4.301440391190091E+023
+  4.013096785280201E+023
+  3.753556256581955E+023
+  3.521124515544269E+023
+  3.316006182670175E+023
+  3.140855068813692E+023
+  3.001847910933017E+023
+  2.910614312742499E+023
+  2.887562929097667E+023
+  2.967448515160017E+023
+  3.208451124380846E+023
+  3.706597321827242E+023
+  4.618010782116340E+023
+  6.192109385816076E+023
+  8.819165523793713E+023
+  1.309502263775324E+024
+  1.990319948179399E+024
+  3.050859175513334E+024
+  4.664556150807127E+024
+  7.056453407713103E+024
+  1.049747203190667E+025
+  1.527891270166612E+025
+  2.165513836853636E+025
+  2.975340046197922E+025
+  3.950706626275754E+025
+  5.065299561389277E+025
+  6.275812176864687E+025
+  7.527539041061235E+025
+  8.762141418941052E+025
+  9.925595852163461E+025
+  1.097453321717596E+026
+  1.187991614915528E+026
+  1.262789518233760E+026
+  1.321837742101032E+026
+  1.366217316041012E+026
+  1.397758240742788E+026
+  1.418707553820146E+026
+  1.431445380789080E+026
+  1.438264617750054E+026
+  1.441215058223143E+026
+  1.442005650516436E+026
+  1.441956532164037E+026
+  1.441992649937003E+026
+  1.442671110665832E+026
+  1.444234082413833E+026
+  1.446678245480045E+026
+  1.449831198325517E+026
+  1.453425594830634E+026
+  1.457163444953801E+026
+  1.460765663784960E+026
+  1.464004894133198E+026
+  1.466722190950558E+026
+  1.468830103969411E+026
+  1.470306055359881E+026
+  1.471180401470888E+026
+  1.471522679048782E+026
+  1.471427827510858E+026
+  1.471003522912662E+026
+  1.470360139709603E+026
+  1.469603829805261E+026
+  1.468832056230021E+026
+  1.773251953034721E+026
+  1.773392365338734E+026
+  1.773600463271461E+026
+  1.773867946077861E+026
+  1.774171580490790E+026
+  1.774469073133681E+026
+  1.774696844747006E+026
+  1.774770389216351E+026
+  1.774587580948191E+026
+  1.774035614250275E+026
+  1.773001551479679E+026
+  1.771385691785714E+026
+  1.769116576033522E+026
+  1.766165900179442E+026
+  1.762560954168518E+026
+  1.758391766216763E+026
+  1.753810044425055E+026
+  1.749017286395459E+026
+  1.744240139489927E+026
+  1.739692316245226E+026
+  1.735524072863037E+026
+  1.731762263107808E+026
+  1.728245989134393E+026
+  1.724564552992874E+026
+  1.720005496084354E+026
+  1.713520877875719E+026
+  1.703719670693294E+026
+  1.688893476144156E+026
+  1.667081933991364E+026
+  1.636183150634817E+026
+  1.594112650060461E+026
+  1.539010618745337E+026
+  1.469490236991013E+026
+  1.384908792322060E+026
+  1.285628521477566E+026
+  1.173218475059888E+026
+  1.050537991092407E+026
+  9.216450851112998E+025
+  7.914968968549724E+025
+  6.654556213286316E+025
+  5.486733304081648E+025
+  4.452954661799883E+025
+  3.573687799673394E+025
+  2.847462277108649E+025
+  2.259928991885298E+025
+  1.791469178979084E+025
+  1.421672165182007E+025
+  1.131664567729034E+025
+  9.051017997966587E+024
+  7.283971986664535E+024
+  5.905598698871996E+024
+  4.828633726519855E+024
+  3.984687049061621E+024
+  3.320641396736063E+024
+  2.795491398642471E+024
+  2.377703345602798E+024
+  2.043078481226081E+024
+  1.773060187507083E+024
+  1.553412419546783E+024
+  1.373198592542942E+024
+  1.223998426690106E+024
+  1.099310493772057E+024
+  9.940981944065135E+023
+  9.044457269559466E+023
+  8.272980293273842E+023
+  7.602647127738049E+023
+  7.014728141789405E+023
+  6.494569778801536E+023
+  6.030786821738824E+023
+  5.614686219037695E+023
+  5.239886579453294E+023
+  4.902122237457827E+023
+  4.599252348039912E+023
+  4.331540816630063E+023
+  4.102342285236702E+023
+  3.919437795377396E+023
+  3.797431910090051E+023
+  3.761877983154923E+023
+  3.856171123150349E+023
+  4.152767614397485E+023
+  4.770963740064386E+023
+  5.904250311841243E+023
+  7.860989248633043E+023
+  1.112245684981390E+024
+  1.642143380646329E+024
+  2.484125930105313E+024
+  3.792777616888426E+024
+  5.779258749187069E+024
+  8.716340478355611E+024
+  1.293055081812254E+025
+  1.877012336183115E+025
+  2.653440566287657E+025
+  3.636413414532114E+025
+  4.816193645037077E+025
+  6.159229456210851E+025
+  7.611727181014458E+025
+  9.106742027716369E+025
+  1.057378150619044E+026
+  1.194846219532776E+026
+  1.318005266357326E+026
+  1.423567744985095E+026
+  1.510105759929729E+026
+  1.577849668423754E+026
+  1.628320062607275E+026
+  1.663899043685290E+026
+  1.687419688978062E+026
+  1.701819200456745E+026
+  1.709873368099350E+026
+  1.714012345700784E+026
+  1.716209489146408E+026
+  1.717932742075668E+026
+  1.720148210541952E+026
+  1.723365753447544E+026
+  1.727715747576193E+026
+  1.733045009754136E+026
+  1.739019145664123E+026
+  1.745219270081911E+026
+  1.751223447369191E+026
+  1.756666887436727E+026
+  1.761278925714441E+026
+  1.764898220403946E+026
+  1.767470090045340E+026
+  1.769031538980895E+026
+  1.769689984058065E+026
+  1.769600431175959E+026
+  1.768943583910797E+026
+  1.767906420281229E+026
+  1.766667154258091E+026
+  1.765385217749481E+026
+  1.764195461465701E+026
+  1.924621604985448E+026
+  1.924816765210466E+026
+  1.925061269076439E+026
+  1.925337940162105E+026
+  1.925615143486076E+026
+  1.925843521898993E+026
+  1.925954810790022E+026
+  1.925863357402693E+026
+  1.925470607862941E+026
+  1.924673171147844E+026
+  1.923374310869870E+026
+  1.921497902587375E+026
+  1.919003495619276E+026
+  1.915900575585431E+026
+  1.912259472937957E+026
+  1.908215959876460E+026
+  1.903966562816754E+026
+  1.899752001283632E+026
+  1.895827006160547E+026
+  1.892416137737328E+026
+  1.889657070414214E+026
+  1.887534929598478E+026
+  1.885813334950591E+026
+  1.883969475229523E+026
+  1.881141544432128E+026
+  1.876097109435181E+026
+  1.867230575978191E+026
+  1.852597154187081E+026
+  1.829989847657244E+026
+  1.797064925125690E+026
+  1.751519415593438E+026
+  1.691320126720443E+026
+  1.614976040823197E+026
+  1.521833764070378E+026
+  1.412359566516299E+026
+  1.288354550347998E+026
+  1.153038093168352E+026
+  1.010938215201752E+026
+  8.675541954853646E+025
+  7.288078401080283E+025
+  6.003654182330799E+025
+  4.867655884845088E+025
+  3.902298828010168E+025
+  3.105689191707293E+025
+  2.461822125936399E+025
+  1.948954512236421E+025
+  1.544524257741009E+025
+  1.227702558391790E+025
+  9.804742336418827E+024
+  7.878805447909797E+024
+  6.378332981728299E+024
+  5.207446363838999E+024
+  4.291081312206045E+024
+  3.570996998430920E+024
+  3.002279999034534E+024
+  2.550428223181328E+024
+  2.188993870860228E+024
+  1.897718165694208E+024
+  1.661076727303202E+024
+  1.467156830878168E+024
+  1.306797202048790E+024
+  1.172932456554897E+024
+  1.060095423025105E+024
+  9.640404046588081E+023
+  8.814586669780121E+023
+  8.097641252655880E+023
+  7.469325213069796E+023
+  6.913815587396365E+023
+  6.418827795471550E+023
+  5.974987119160802E+023
+  5.575413428599701E+023
+  5.215506792952379E+023
+  4.892955999036102E+023
+  4.608041327370310E+023
+  4.364378406594870E+023
+  4.170367864412238E+023
+  4.041798545772430E+023
+  4.006329896578829E+023
+  4.110986177449829E+023
+  4.434363261755355E+023
+  5.105988643516282E+023
+  6.336139028822471E+023
+  8.460232890923310E+023
+  1.200226740842332E+024
+  1.776086334664510E+024
+  2.691796533984931E+024
+  4.116210627932629E+024
+  6.280285074601158E+024
+  9.482821290164937E+024
+  1.408218867316266E+025
+  2.046160701416764E+025
+  2.895217041136852E+025
+  3.971271123166719E+025
+  5.264205245020201E+025
+  6.737767930362696E+025
+  8.333352337218063E+025
+  9.977653581570571E+025
+  1.159313339069179E+026
+  1.310861375451878E+026
+  1.446761872993324E+026
+  1.563309870080651E+026
+  1.658837133620477E+026
+  1.733503115988151E+026
+  1.788900542223914E+026
+  1.827591225197705E+026
+  1.852658812331619E+026
+  1.867328850245788E+026
+  1.874676021181869E+026
+  1.877418939768138E+026
+  1.877793737677632E+026
+  1.877495153245829E+026
+  1.877674086560009E+026
+  1.878980909350657E+026
+  1.881643199707219E+026
+  1.885565321557643E+026
+  1.890436419557892E+026
+  1.895833968394851E+026
+  1.901312411830122E+026
+  1.906470220017430E+026
+  1.910992873632490E+026
+  1.914672905406706E+026
+  1.917410837459578E+026
+  1.919202676425098E+026
+  1.920120222412579E+026
+  1.920289174629340E+026
+  1.919867649858273E+026
+  1.919026764196652E+026
+  1.917935363431930E+026
+  1.916749607792537E+026
+  1.915606572137496E+026
+  2.945467416976219E+026
+  2.945657296132270E+026
+  2.946019478455040E+026
+  2.946554379206644E+026
+  2.947232029579093E+026
+  2.947983540660378E+026
+  2.948696554322870E+026
+  2.949216176034593E+026
+  2.949352284093020E+026
+  2.948894514636393E+026
+  2.947634871201357E+026
+  2.945396414022519E+026
+  2.942065577092830E+026
+  2.937624508910548E+026
+  2.932178520850084E+026
+  2.925972839287947E+026
+  2.919392656223631E+026
+  2.912941029953821E+026
+  2.907190644743520E+026
+  2.902707932318906E+026
+  2.899951513413045E+026
+  2.899150961849855E+026
+  2.900175921399839E+026
+  2.902408934378956E+026
+  2.904637407123660E+026
+  2.904980688860174E+026
+  2.900867448948061E+026
+  2.889076929159748E+026
+  2.865855780578429E+026
+  2.827120131409554E+026
+  2.768749334285694E+026
+  2.686971452223070E+026
+  2.578828355052672E+026
+  2.442688410024995E+026
+  2.278747623086158E+026
+  2.089430419010080E+026
+  1.879579632942447E+026
+  1.656327560342494E+026
+  1.428581013117781E+026
+  1.206137010883454E+026
+  9.985570672159885E+025
+  8.136888044985325E+025
+  6.556223125578368E+025
+  5.244459679959709E+025
+  4.178508587148781E+025
+  3.325022850555101E+025
+  2.648582504894260E+025
+  2.116038896987753E+025
+  1.698439552159571E+025
+  1.371554800771848E+025
+  1.115672077892783E+025
+  9.150610967223050E+024
+  7.573371994085208E+024
+  6.328404760385887E+024
+  5.340838805416983E+024
+  4.552879931582277E+024
+  3.920017669506141E+024
+  3.408002264165673E+024
+  2.990472026864476E+024
+  2.647111306336877E+024
+  2.362231537192654E+024
+  2.123684383332259E+024
+  1.922032719121751E+024
+  1.749920276966028E+024
+  1.601593636284202E+024
+  1.472540790498582E+024
+  1.359219007595195E+024
+  1.258851421405796E+024
+  1.169277161864598E+024
+  1.088844330485698E+024
+  1.016339311242248E+024
+  9.509504650986392E+023
+  8.922701028991600E+023
+  8.403470635007641E+023
+  7.958151382242218E+023
+  7.601427203975856E+023
+  7.360802141043113E+023
+  7.284287843625364E+023
+  7.453225065337787E+023
+  8.003106884805311E+023
+  9.156489465852764E+023
+  1.127346917346657E+024
+  1.492645717762355E+024
+  2.100637842595631E+024
+  3.086560071994296E+024
+  4.649659658537968E+024
+  7.073125367302695E+024
+  1.074198405449013E+025
+  1.615073488629797E+025
+  2.388679201670923E+025
+  3.456929627546643E+025
+  4.871782425443530E+025
+  6.655148136176780E+025
+  8.784698715377226E+025
+  1.119450273646067E+026
+  1.378230232082735E+026
+  1.642316889794121E+026
+  1.898752779254885E+026
+  2.135894918641668E+026
+  2.344774410449753E+026
+  2.519821643864256E+026
+  2.658947571546346E+026
+  2.763122914929428E+026
+  2.835662240570481E+026
+  2.881409471324552E+026
+  2.905968121018312E+026
+  2.915056512231341E+026
+  2.914017143668784E+026
+  2.907478052651915E+026
+  2.899150187892587E+026
+  2.891741668646629E+026
+  2.886970551730776E+026
+  2.885657945844981E+026
+  2.887881548913677E+026
+  2.893166828319450E+026
+  2.900691154526865E+026
+  2.909477114444677E+026
+  2.918555674015750E+026
+  2.927086992014934E+026
+  2.934434622589997E+026
+  2.940195771776862E+026
+  2.944195381248901E+026
+  2.946455038588897E+026
+  2.947148569417041E+026
+  2.946553824984932E+026
+  2.945006034883995E+026
+  2.942856167450119E+026
+  2.940438110103369E+026
+  2.938046160783681E+026
+  2.935921760783814E+026
+  2.445425506425143E+026
+  2.445616351495221E+026
+  2.445913814905629E+026
+  2.446308943847443E+026
+  2.446770822976142E+026
+  2.447240651346004E+026
+  2.447628716126317E+026
+  2.447815292564045E+026
+  2.447656032469210E+026
+  2.446992802873363E+026
+  2.445669906006451E+026
+  2.443554488872181E+026
+  2.440559331324520E+026
+  2.436665382793986E+026
+  2.431940456823824E+026
+  2.426549855729337E+026
+  2.420754579414431E+026
+  2.414893208527758E+026
+  2.409344641676349E+026
+  2.404470713758509E+026
+  2.400540275306368E+026
+  2.397639295483586E+026
+  2.395574518339602E+026
+  2.393780655973683E+026
+  2.391242638777032E+026
+  2.386444887265626E+026
+  2.377359054375989E+026
+  2.361480590522543E+026
+  2.335923183035551E+026
+  2.297578592237089E+026
+  2.243346851990664E+026
+  2.170436596447309E+026
+  2.076725437409440E+026
+  1.961154503355554E+026
+  1.824110020382801E+026
+  1.667722030428958E+026
+  1.495994386880752E+026
+  1.314683331095417E+026
+  1.130875525019682E+026
+  9.522826841632281E+025
+  7.863566207046759E+025
+  6.391381637215050E+025
+  5.136751198564575E+025
+  4.098654567455778E+025
+  3.257434447879774E+025
+  2.585670620301712E+025
+  2.054614203874428E+025
+  1.637561144406573E+025
+  1.311311315027762E+025
+  1.056530606966198E+025
+  8.575454913791799E+024
+  7.018884096528293E+024
+  5.797719226056200E+024
+  4.835825108680666E+024
+  4.074342123527985E+024
+  3.467944998157349E+024
+  2.981806893194451E+024
+  2.589188747126055E+024
+  2.269553595799952E+024
+  2.007107034060551E+024
+  1.789676020709835E+024
+  1.607852292312641E+024
+  1.454340542836886E+024
+  1.323463901878512E+024
+  1.210789693432244E+024
+  1.112846992153789E+024
+  1.026914310352779E+024
+  9.508611288479886E+023
+  8.830312656904638E+023
+  8.221596439097470E+023
+  7.673173165177981E+023
+  7.178831746385958E+023
+  6.735453173203852E+023
+  6.343416115307863E+023
+  6.007589984396864E+023
+  5.739267527992346E+023
+  5.559631578937468E+023
+  5.505717771250001E+023
+  5.640371185314170E+023
+  6.068439731147882E+023
+  6.962410974940179E+023
+  8.601812879653045E+023
+  1.143172402052144E+024
+  1.614612504550651E+024
+  2.380051371881664E+024
+  3.595342479414805E+024
+  5.482562738215104E+024
+  8.344557055307213E+024
+  1.257171613457077E+025
+  1.863006449926726E+025
+  2.701448509538454E+025
+  3.814669805424788E+025
+  5.221758851990076E+025
+  6.907397537799590E+025
+  8.822031635509789E+025
+  1.088720976834903E+026
+  1.300596432122271E+026
+  1.507674205245854E+026
+  1.700732172098836E+026
+  1.872560464449092E+026
+  2.018554210831234E+026
+  2.136805629954218E+026
+  2.227800643935530E+026
+  2.293878539638503E+026
+  2.338607637550301E+026
+  2.366190045788939E+026
+  2.380960029357282E+026
+  2.387000458842980E+026
+  2.387876736241562E+026
+  2.386476124383459E+026
+  2.384937472431384E+026
+  2.384656723238088E+026
+  2.386353847690271E+026
+  2.390185744023962E+026
+  2.395887730462952E+026
+  2.402925019915847E+026
+  2.410636386663121E+026
+  2.418355641821788E+026
+  2.425501893481484E+026
+  2.431635459019248E+026
+  2.436481387589823E+026
+  2.439926302193701E+026
+  2.441996699351428E+026
+  2.442827538295008E+026
+  2.442628155346023E+026
+  2.441649312460157E+026
+  2.440153783148921E+026
+  2.438393325985078E+026
+  2.436593069916119E+026
+  2.434942299441429E+026
+  2.433467152013173E+026
+  2.433580751065976E+026
+  2.433837343188068E+026
+  2.434241513170844E+026
+  2.434773496592821E+026
+  2.435381201830554E+026
+  2.435974958920933E+026
+  2.436426183263337E+026
+  2.436570721341171E+026
+  2.436218066663689E+026
+  2.435166618872828E+026
+  2.433224043214953E+026
+  2.430231149870372E+026
+  2.426086846665109E+026
+  2.420770681251320E+026
+  2.414358741873509E+026
+  2.407028421920735E+026
+  2.399047816135080E+026
+  2.390746423719886E+026
+  2.382465519284064E+026
+  2.374488999353287E+026
+  2.366958478037420E+026
+  2.359779466071624E+026
+  2.352528124390889E+026
+  2.344369901750580E+026
+  2.334002114783167E+026
+  2.319632271980709E+026
+  2.299003000919856E+026
+  2.269473163571597E+026
+  2.228163143361687E+026
+  2.172169652244522E+026
+  2.098850238081219E+026
+  2.006168113398094E+026
+  1.893072679272060E+026
+  1.759870654454611E+026
+  1.608520644721024E+026
+  1.442768264758022E+026
+  1.268041366843679E+026
+  1.091056537963165E+026
+  9.191512852862364E+025
+  7.594397410443608E+025
+  6.177062281231984E+025
+  4.968751947751335E+025
+  3.968504706871302E+025
+  3.157475053085688E+025
+  2.509364926398357E+025
+  1.996594662417946E+025
+  1.593538549600356E+025
+  1.277925080696961E+025
+  1.031185696223992E+025
+  8.382594898251195E+024
+  6.871588941617780E+024
+  5.684667955131988E+024
+  4.748521584332738E+024
+  4.006426924878812E+024
+  3.414664962353909E+024
+  2.939611000988338E+024
+  2.555422944806379E+024
+  2.242231820381382E+024
+  1.984740223500015E+024
+  1.771144848724477E+024
+  1.592312651643735E+024
+  1.441153432639152E+024
+  1.312143433763634E+024
+  1.200964513207124E+024
+  1.104231614210517E+024
+  1.019287760899162E+024
+  9.440509595842312E+023
+  8.769014824054349E+023
+  8.166014306780056E+023
+  7.622416459529168E+023
+  7.132144806500709E+023
+  6.692153493823060E+023
+  6.302823376592777E+023
+  5.968928805592761E+023
+  5.701517159525325E+023
+  5.521278440253640E+023
+  5.464337998878115E+023
+  5.591924119111895E+023
+  6.006081282655682E+023
+  6.874527974572284E+023
+  8.468825672448995E+023
+  1.122099962502674E+024
+  1.580409741965470E+024
+  2.324086594248646E+024
+  3.504005995783117E+024
+  5.334935587393578E+024
+  8.109433309491416E+024
+  1.220417119779019E+025
+  1.806815533576153E+025
+  2.617729332019869E+025
+  3.693576900379674E+025
+  5.052408789121600E+025
+  6.679077615179419E+025
+  8.525555762987455E+025
+  1.051622906552226E+026
+  1.255800678834267E+026
+  1.455377854841554E+026
+  1.641577163396841E+026
+  1.807582198242950E+026
+  1.949091869244353E+026
+  2.064392105725114E+026
+  2.154049065904011E+026
+  2.220378176754631E+026
+  2.266836729356142E+026
+  2.297448572778325E+026
+  2.316322423819955E+026
+  2.327286775606947E+026
+  2.333640388180019E+026
+  2.338006353811114E+026
+  2.342274812881006E+026
+  2.347619569796258E+026
+  2.354573883690380E+026
+  2.363149505507908E+026
+  2.372981223070356E+026
+  2.383478202028105E+026
+  2.393964578160450E+026
+  2.403795487022059E+026
+  2.412440291648041E+026
+  2.419530723883543E+026
+  2.424876662275450E+026
+  2.428455840579301E+026
+  2.430385999511218E+026
+  2.430888500300357E+026
+  2.430250475004569E+026
+  2.428789256734487E+026
+  2.426821373292570E+026
+  2.424638833567143E+026
+  2.422493628533347E+026
+  2.420589336173961E+026
+  2.866615607305056E+026
+  2.866761460022008E+026
+  2.867085830109960E+026
+  2.867594667603906E+026
+  2.868263937624586E+026
+  2.869030346307497E+026
+  2.869785674783035E+026
+  2.870376203904864E+026
+  2.870608171220829E+026
+  2.870260636843221E+026
+  2.869105863388735E+026
+  2.866935909879293E+026
+  2.863593295571300E+026
+  2.859002488051658E+026
+  2.853197688481351E+026
+  2.846341485234787E+026
+  2.838728670378811E+026
+  2.830769927115391E+026
+  2.822951344939872E+026
+  2.815767952275813E+026
+  2.809632628682722E+026
+  2.804765543292078E+026
+  2.801073109710450E+026
+  2.798028711218917E+026
+  2.794569588342022E+026
+  2.789025022912183E+026
+  2.779090414993980E+026
+  2.761860481452120E+026
+  2.733933101013863E+026
+  2.691593341436822E+026
+  2.631084068147912E+026
+  2.548963363367853E+026
+  2.442537393875259E+026
+  2.310338625016350E+026
+  2.152593850381290E+026
+  1.971598783236422E+026
+  1.771895821893916E+026
+  1.560153839759143E+026
+  1.344687393724467E+026
+  1.134631056396855E+026
+  9.388886756929573E+025
+  7.647519234558479E+025
+  6.159876491094197E+025
+  4.926153784874829E+025
+  3.924176898433716E+025
+  3.122277064064883E+025
+  2.486952900988238E+025
+  1.986921591753449E+025
+  1.594901064790700E+025
+  1.288084507049195E+025
+  1.047932586991656E+025
+  8.596611370103963E+024
+  7.116366538976822E+024
+  5.947890513729165E+024
+  5.020908638638445E+024
+  4.281188985469229E+024
+  3.686973112983233E+024
+  3.206133558599889E+024
+  2.813944429309065E+024
+  2.491351556206828E+024
+  2.223640569827592E+024
+  1.999417080321898E+024
+  1.809829024411468E+024
+  1.647975511163487E+024
+  1.508458622274621E+024
+  1.387044573672414E+024
+  1.280408624127282E+024
+  1.185944435313789E+024
+  1.101623632589061E+024
+  1.025895537583875E+024
+  9.576209691483418E+023
+  8.960382854687040E+023
+  8.407653262963435E+023
+  7.918488287377032E+023
+  7.498850139397525E+023
+  7.162539504245896E+023
+  6.935395574186353E+023
+  6.862513001832104E+023
+  7.020279548081514E+023
+  7.535928192517858E+023
+  8.618442564932040E+023
+  1.060596529894738E+024
+  1.403604014546220E+024
+  1.974540014451661E+024
+  2.900432118079502E+024
+  4.368466886653716E+024
+  6.644757730316338E+024
+  1.009124135061998E+025
+  1.517299418317130E+025
+  2.244290301490086E+025
+  3.248449122730265E+025
+  4.578892744574187E+025
+  6.256654955550917E+025
+  8.261359466985982E+025
+  1.053179705598738E+026
+  1.297271335363663E+026
+  1.546756492147502E+026
+  1.789536878042332E+026
+  2.014733742890598E+026
+  2.213959103691643E+026
+  2.381993470778771E+026
+  2.516861095963632E+026
+  2.619435479917464E+026
+  2.692768869268680E+026
+  2.741329866534254E+026
+  2.770283514664633E+026
+  2.784889271992993E+026
+  2.790044427577012E+026
+  2.789971048289067E+026
+  2.788031385300734E+026
+  2.786653483211841E+026
+  2.787349220486600E+026
+  2.790807093226075E+026
+  2.797040410878378E+026
+  2.805569039599734E+026
+  2.815611287438306E+026
+  2.826263681997356E+026
+  2.836650836796781E+026
+  2.846034485594319E+026
+  2.853878271493162E+026
+  2.859871314635450E+026
+  2.863918245625703E+026
+  2.866106295726765E+026
+  2.866660735973574E+026
+  2.865897630796758E+026
+  2.864178839475273E+026
+  2.861872358230369E+026
+  2.859321514228176E+026
+  2.856824311597744E+026
+  2.854621767675715E+026
+  2.273033950966911E+026
+  2.273174822977418E+026
+  2.273430074030962E+026
+  2.273797448004762E+026
+  2.274253340363616E+026
+  2.274746324380249E+026
+  2.275193237168088E+026
+  2.275478844236868E+026
+  2.275459694004236E+026
+  2.274973164913107E+026
+  2.273851766372233E+026
+  2.271941726007747E+026
+  2.269124324697898E+026
+  2.265337669135813E+026
+  2.260595670711063E+026
+  2.255000359413682E+026
+  2.248743479660697E+026
+  2.242093626085789E+026
+  2.235366081554217E+026
+  2.228874128810032E+026
+  2.222862892303322E+026
+  2.217429492918576E+026
+  2.212436068308211E+026
+  2.207424569629125E+026
+  2.201543806036072E+026
+  2.193499782782867E+026
+  2.181540052741611E+026
+  2.163481889814764E+026
+  2.136792924267454E+026
+  2.098731438405570E+026
+  2.046551109102951E+026
+  1.977770163208297E+026
+  1.890495924089690E+026
+  1.783781372676561E+026
+  1.657971119981972E+026
+  1.514973549373982E+026
+  1.358381377710125E+026
+  1.193365602678776E+026
+  1.026297985358461E+026
+  8.641170008618540E+025
+  7.135305484663356E+025
+  5.799759297848076E+025
+  4.661866285911863E+025
+  3.720495706649022E+025
+  2.957697732897499E+025
+  2.348542225682911E+025
+  1.866932773604061E+025
+  1.488649781033672E+025
+  1.192662515447577E+025
+  9.614504882123428E+024
+  7.808131902663348E+024
+  6.394558645652195E+024
+  5.285118916271264E+024
+  4.410836739964877E+024
+  3.718381164132104E+024
+  3.166677434072411E+024
+  2.724157913894311E+024
+  2.366579609539970E+024
+  2.075317138858622E+024
+  1.836041496654530E+024
+  1.637705059417499E+024
+  1.471766063848545E+024
+  1.331598395470874E+024
+  1.212043736634450E+024
+  1.109072583790991E+024
+  1.019528367971040E+024
+  9.409350792383018E+023
+  8.713536621229184E+023
+  8.092763207789164E+023
+  7.535510995074790E+023
+  7.033320890844207E+023
+  6.580538429115349E+023
+  6.174327181636831E+023
+  5.815038048686462E+023
+  5.507112141813353E+023
+  5.260837130395510E+023
+  5.095497204823582E+023
+  5.044790172155300E+023
+  5.165871764215628E+023
+  5.554062838254714E+023
+  6.366128845409169E+023
+  7.856049509876163E+023
+  1.042812321648575E+024
+  1.471259581816883E+024
+  2.166780952199880E+024
+  3.270852576787055E+024
+  4.985021953994647E+024
+  7.584083663436336E+024
+  1.142220845262521E+025
+  1.692213053652013E+025
+  2.453274543996039E+025
+  3.463665942776562E+025
+  4.740735846213812E+025
+  6.270683729373203E+025
+  8.008754265869114E+025
+  9.884105332280852E+025
+  1.180922516363847E+026
+  1.369254109909629E+026
+  1.545099191499365E+026
+  1.701974978625545E+026
+  1.835753045911617E+026
+  1.944737282423508E+026
+  2.029384816345503E+026
+  2.091813841458459E+026
+  2.135236907366058E+026
+  2.163421955787383E+026
+  2.180239397178414E+026
+  2.189317273306991E+026
+  2.193803866464487E+026
+  2.196226680605407E+026
+  2.198433954584939E+026
+  2.201605090385408E+026
+  2.206316505937630E+026
+  2.212648382065619E+026
+  2.220316101503050E+026
+  2.228809205324095E+026
+  2.237521648956808E+026
+  2.245860453708143E+026
+  2.253324892161186E+026
+  2.259553787516107E+026
+  2.264343128278268E+026
+  2.267639541605332E+026
+  2.269517290463784E+026
+  2.270147004544282E+026
+  2.269762620282694E+026
+  2.268629967749002E+026
+  2.267019126367906E+026
+  2.265183103767577E+026
+  2.263343712007356E+026
+  2.261683630976177E+026
+  1.086835029743038E+026
+  1.086876192502458E+026
+  1.086982754225575E+026
+  1.087157935515765E+026
+  1.087394104339817E+026
+  1.087668996660558E+026
+  1.087943064879399E+026
+  1.088158484595854E+026
+  1.088240173619384E+026
+  1.088099379327624E+026
+  1.087639953266708E+026
+  1.086766950355292E+026
+  1.085396920533939E+026
+  1.083468885227974E+026
+  1.080954531749889E+026
+  1.077865818630223E+026
+  1.074258046825513E+026
+  1.070226533502836E+026
+  1.065895380021080E+026
+  1.061397517543795E+026
+  1.056846242637222E+026
+  1.052299724156179E+026
+  1.047721294176140E+026
+  1.042939516584203E+026
+  1.037612866284744E+026
+  1.031204241285953E+026
+  1.022970483648415E+026
+  1.011971727566487E+026
+  9.971048644470943E+025
+  9.771647124106711E+025
+  9.509352983900153E+025
+  9.173113702503889E+025
+  8.754460715562331E+025
+  8.249140948610714E+025
+  7.658708006196879E+025
+  6.991783086400012E+025
+  6.264628652690877E+025
+  5.500689348299426E+025
+  4.728891648900665E+025
+  3.980766607593457E+025
+  3.286818919820198E+025
+  2.671769071576377E+025
+  2.147969053225597E+025
+  1.714742790313107E+025
+  1.363734427370702E+025
+  1.083420164428690E+025
+  8.617686706581037E+024
+  6.876295945429225E+024
+  5.513290648077723E+024
+  4.448123237358842E+024
+  3.615531295523677E+024
+  2.963615798627222E+024
+  2.451636823322011E+024
+  2.047899576454042E+024
+  1.727894286717800E+024
+  1.472739220797538E+024
+  1.267918308081899E+024
+  1.102279282441709E+024
+  9.672502156407735E+023
+  8.562331499522160E+023
+  7.641382549929346E+023
+  6.870278486032879E+023
+  6.218454270446969E+023
+  5.662100045037521E+023
+  5.182604056684473E+023
+  4.765376989570936E+023
+  4.398967859136591E+023
+  4.074403929378751E+023
+  3.784704859597762E+023
+  3.524536079997607E+023
+  3.289980094434396E+023
+  3.078419276662268E+023
+  2.888542755443704E+023
+  2.720517411390264E+023
+  2.576405029511756E+023
+  2.460973236915698E+023
+  2.383149455032989E+023
+  2.358520781620190E+023
+  2.413506891567936E+023
+  2.592144065774311E+023
+  2.966820262093770E+023
+  3.654764302495364E+023
+  4.842516574258155E+023
+  6.820764100259144E+023
+  1.003136890336997E+024
+  1.512641663956577E+024
+  2.303457684067874E+024
+  3.502165239036152E+024
+  5.271868479813501E+024
+  7.807215342401072E+024
+  1.131489966662768E+025
+  1.597116747910380E+025
+  2.185619790141552E+025
+  2.890721377210038E+025
+  3.691965488761274E+025
+  4.556976123751539E+025
+  5.445792395700712E+025
+  6.316652741126842E+025
+  7.131744904066306E+025
+  7.861634028223295E+025
+  8.487659601022657E+025
+  9.002254529191203E+025
+  9.407632883228583E+025
+  9.713509845563818E+025
+  9.934490381477296E+025
+  1.008759542189607E+026
+  1.019019221741101E+026
+  1.025842933420920E+026
+  1.030617269428147E+026
+  1.034439078224321E+026
+  1.038092364283640E+026
+  1.042057033926273E+026
+  1.046542934154869E+026
+  1.051542127757002E+026
+  1.056891624048275E+026
+  1.062338448677424E+026
+  1.067599531086233E+026
+  1.072410575685439E+026
+  1.076560534780449E+026
+  1.079910876698470E+026
+  1.082400973411688E+026
+  1.084042426785070E+026
+  1.084906068808481E+026
+  1.085105556776183E+026
+  1.084780608117620E+026
+  1.084081444601378E+026
+  1.083155382614613E+026
+  1.082136720481283E+026
+  1.081140281373191E+026
+  1.080258079129236E+026
+  3.263735768034532E+026
+  3.263777430335655E+026
+  3.264116397786542E+026
+  3.264787127781729E+026
+  3.265782240160420E+026
+  3.267038139099491E+026
+  3.268425295564639E+026
+  3.269745379551804E+026
+  3.270736801993652E+026
+  3.271090637447701E+026
+  3.270477308469625E+026
+  3.268582617420833E+026
+  3.265150507211328E+026
+  3.260028401857794E+026
+  3.253209231204819E+026
+  3.244862947927881E+026
+  3.235349816517273E+026
+  3.225208115028794E+026
+  3.215110355143113E+026
+  3.205784905297074E+026
+  3.197903958715107E+026
+  3.191943722885225E+026
+  3.188027811594922E+026
+  3.185769247633005E+026
+  3.184129477879020E+026
+  3.181313944994370E+026
+  3.174723140584037E+026
+  3.160976241754399E+026
+  3.136022093239183E+026
+  3.095349653809611E+026
+  3.034306202908265E+026
+  2.948524424649947E+026
+  2.834446025653772E+026
+  2.689907475144101E+026
+  2.514722936770368E+026
+  2.311165340029507E+026
+  2.084220419233160E+026
+  1.841488326861608E+026
+  1.592650619142874E+026
+  1.348512532135974E+026
+  1.119756104561383E+026
+  9.152744882833032E+025
+  7.398419364095795E+025
+  5.937793512468508E+025
+  4.747080814393770E+025
+  3.790666947256370E+025
+  3.030230116924974E+025
+  2.429635316797880E+025
+  1.957149850054567E+025
+  1.586099061392821E+025
+  1.294696040891621E+025
+  1.065492272199555E+025
+  8.847031373102109E+024
+  7.415411357280168E+024
+  6.276182371830375E+024
+  5.364389856742746E+024
+  4.629852404494420E+024
+  4.033837550952431E+024
+  3.546442603713976E+024
+  3.144553880954759E+024
+  2.810269313517034E+024
+  2.529686310125689E+024
+  2.291974329145893E+024
+  2.088667637111213E+024
+  1.913127518169545E+024
+  1.760134613788297E+024
+  1.625581290344564E+024
+  1.506241276216808E+024
+  1.399599707579907E+024
+  1.303731693048399E+024
+  1.217222173400231E+024
+  1.139124988807557E+024
+  1.068965708069733E+024
+  1.006802394735597E+024
+  9.533732336980129E+023
+  9.103829165418644E+023
+  8.810151456551903E+023
+  8.708119866236442E+023
+  8.891381212687153E+023
+  9.515543543716134E+023
+  1.083560244348027E+024
+  1.326318486727764E+024
+  1.745106479616887E+024
+  2.441270781049635E+024
+  3.568233272356841E+024
+  5.351359483742471E+024
+  8.109884094620208E+024
+  1.227615761418673E+025
+  1.840286228961142E+025
+  2.714255185703904E+025
+  3.917681339167785E+025
+  5.506714158403778E+025
+  7.502949911203230E+025
+  9.877881951856922E+025
+  1.255428849002791E+026
+  1.541512058787500E+026
+  1.831943041388313E+026
+  2.112292340997843E+026
+  2.369788523793365E+026
+  2.594806927768205E+026
+  2.781625176311175E+026
+  2.928449718474268E+026
+  3.036885282185943E+026
+  3.111086985550891E+026
+  3.156817856727343E+026
+  3.180571024548207E+026
+  3.188843547517936E+026
+  3.187591608072095E+026
+  3.181862536377405E+026
+  3.175584502919081E+026
+  3.171491645446792E+026
+  3.171163131121318E+026
+  3.175154409555033E+026
+  3.183196352098477E+026
+  3.194434397210084E+026
+  3.207677721048871E+026
+  3.221629981665359E+026
+  3.235079024041164E+026
+  3.247031928607957E+026
+  3.256791583191847E+026
+  3.263979343105507E+026
+  3.268514329190768E+026
+  3.270563460147564E+026
+  3.270476974534709E+026
+  3.268721160099405E+026
+  3.265814952299584E+026
+  3.262274589905570E+026
+  3.258570756516602E+026
+  3.255099957776058E+026
+  3.252168925485777E+026
+  3.043948201971192E+026
+  3.044049645234948E+026
+  3.044373450165560E+026
+  3.044936543937537E+026
+  3.045721516601141E+026
+  3.046665227414048E+026
+  3.047651300240885E+026
+  3.048508245028072E+026
+  3.049014381362950E+026
+  3.048911193461676E+026
+  3.047925369853051E+026
+  3.045798249171657E+026
+  3.042320439393275E+026
+  3.037368132322923E+026
+  3.030936185489460E+026
+  3.023161989359478E+026
+  3.014333746703302E+026
+  3.004877145247052E+026
+  2.995315675233866E+026
+  2.986202208094937E+026
+  2.978022878966419E+026
+  2.971078462896723E+026
+  2.965352705732987E+026
+  2.960380761164660E+026
+  2.955133376565926E+026
+  2.947933431172664E+026
+  2.936420950743581E+026
+  2.917581269890998E+026
+  2.887849128523422E+026
+  2.843299269463318E+026
+  2.779930687945271E+026
+  2.694045104443680E+026
+  2.582707953410720E+026
+  2.444260307402840E+026
+  2.278823072565594E+026
+  2.088705043036635E+026
+  1.878604418921015E+026
+  1.655494941182859E+026
+  1.428127926890543E+026
+  1.206164278456873E+026
+  9.990615179963611E+025
+  8.146019012610621E+025
+  6.568460879350150E+025
+  5.258784232284906E+025
+  4.194004825405086E+025
+  3.340945470527438E+025
+  2.664369555976161E+025
+  2.131296844563186E+025
+  1.712915581931887E+025
+  1.385105992407359E+025
+  1.128236653188621E+025
+  9.266340651199434E+024
+  7.679510151961064E+024
+  6.425504158292003E+024
+  5.429574491178981E+024
+  4.633975574692565E+024
+  3.994196609955168E+024
+  3.475956780550709E+024
+  3.052845594094264E+024
+  2.704489811819190E+024
+  2.415140458789627E+024
+  2.172589771955929E+024
+  1.967344480527809E+024
+  1.791996736214791E+024
+  1.640746725855002E+024
+  1.509041459319224E+024
+  1.393302628464397E+024
+  1.290723097996982E+024
+  1.199116918988490E+024
+  1.116812225679878E+024
+  1.042580544991201E+024
+  9.756006054931651E+023
+  9.154605957354002E+023
+  8.622112926566228E+023
+  8.164954614826394E+023
+  7.797991661956921E+023
+  7.549019192035062E+023
+  7.466498017243593E+023
+  7.632442933750287E+023
+  8.183342763161832E+023
+  9.343202006546444E+023
+  1.147417833652564E+024
+  1.515152420466498E+024
+  2.126990460208975E+024
+  3.118629398205617E+024
+  4.689829286791984E+024
+  7.124256485615579E+024
+  1.080721802052402E+025
+  1.623304760204570E+025
+  2.398823411488485E+025
+  3.468993086944301E+025
+  4.885453248474308E+025
+  6.669709897403373E+025
+  8.799065645798864E+025
+  1.120743718830666E+026
+  1.379279537946400E+026
+  1.643092030286395E+026
+  1.899342803413642E+026
+  2.136545947968168E+026
+  2.345909468747191E+026
+  2.522038743067031E+026
+  2.662996969477470E+026
+  2.769867694209321E+026
+  2.846027840642277E+026
+  2.896327831209908E+026
+  2.926321325029739E+026
+  2.941623899586129E+026
+  2.947429097342099E+026
+  2.948179171266376E+026
+  2.947374114455667E+026
+  2.947499292545789E+026
+  2.950052471521663E+026
+  2.955650967164001E+026
+  2.964197718077574E+026
+  2.975082284687782E+026
+  2.987391162865196E+026
+  3.000103200218386E+026
+  3.012250907966811E+026
+  3.023036097206545E+026
+  3.031896531552567E+026
+  3.038527319803171E+026
+  3.042865804585760E+026
+  3.045051764373411E+026
+  3.045375395387429E+026
+  3.044222932293159E+026
+  3.042025344196583E+026
+  3.039213487764945E+026
+  3.036183496564917E+026
+  3.033273808139068E+026
+  3.030752580553128E+026
+  2.350155461383044E+026
+  2.350258769914045E+026
+  2.350502962999336E+026
+  2.350893550944587E+026
+  2.351412353953357E+026
+  2.352009626442374E+026
+  2.352598794063573E+026
+  2.353054962378136E+026
+  2.353217954061300E+026
+  2.352901041253223E+026
+  2.351905561628922E+026
+  2.350040531178352E+026
+  2.347145750959326E+026
+  2.343116066328816E+026
+  2.337923429928635E+026
+  2.331632689604681E+026
+  2.324406755043486E+026
+  2.316497034618060E+026
+  2.308215892291334E+026
+  2.299889485020581E+026
+  2.291791690626864E+026
+  2.284062694249184E+026
+  2.276618761180058E+026
+  2.269062304449935E+026
+  2.260603135054037E+026
+  2.250002533584353E+026
+  2.235551559436435E+026
+  2.215094121179140E+026
+  2.186104106620130E+026
+  2.145824320489210E+026
+  2.091472425629544E+026
+  2.020514095305832E+026
+  1.930994377657768E+026
+  1.821903603390972E+026
+  1.693534485245251E+026
+  1.547765821720613E+026
+  1.388193078484158E+026
+  1.220028435190928E+026
+  1.049723238566093E+026
+  8.843266007605469E+025
+  7.306740897357028E+025
+  5.943239182400329E+025
+  4.780850827406655E+025
+  3.818624208834836E+025
+  3.038416201217092E+025
+  2.414922873371270E+025
+  1.921612441885103E+025
+  1.533835359427252E+025
+  1.230169742465919E+025
+  9.927559388504141E+024
+  8.071082008216521E+024
+  6.616967120711239E+024
+  5.474638115908526E+024
+  4.573581026654873E+024
+  3.859234644019044E+024
+  3.289544198819233E+024
+  2.832163294342668E+024
+  2.462230799851933E+024
+  2.160630725494100E+024
+  1.912644364900460E+024
+  1.706914078346247E+024
+  1.534650971824994E+024
+  1.389031460243031E+024
+  1.264739052796283E+024
+  1.157617288049787E+024
+  1.064407584922166E+024
+  9.825520405474316E+023
+  9.100461538961410E+023
+  8.453303945783111E+023
+  7.872128252764425E+023
+  7.348180355624646E+023
+  6.875609577405326E+023
+  6.451483779257919E+023
+  6.076170717287498E+023
+  5.754268635539422E+023
+  5.496415289170166E+023
+  5.322531001937039E+023
+  5.267393689773987E+023
+  5.389942825644244E+023
+  5.788401141271944E+023
+  6.624195550758438E+023
+  8.158685660044739E+023
+  1.080764442964267E+024
+  1.521876650239922E+024
+  2.237622197689624E+024
+  3.373178112945446E+024
+  5.135189479855698E+024
+  7.805134626691414E+024
+  1.174540116145648E+025
+  1.738794479400679E+025
+  2.519057668424275E+025
+  3.554208746821976E+025
+  4.861608746397075E+025
+  6.426688285725469E+025
+  8.203262212518929E+025
+  1.011862925355292E+026
+  1.208330083793336E+026
+  1.400394422113803E+026
+  1.579622439784607E+026
+  1.739467324145210E+026
+  1.875801059514147E+026
+  1.986982252907247E+026
+  2.073560126714854E+026
+  2.137763199044652E+026
+  2.182914750908317E+026
+  2.212879453027803E+026
+  2.231600285391740E+026
+  2.242747825958927E+026
+  2.249480907153384E+026
+  2.254307063403466E+026
+  2.259028371029694E+026
+  2.264758426188721E+026
+  2.271996211115176E+026
+  2.280741433403136E+026
+  2.290634190529833E+026
+  2.301100900501501E+026
+  2.311489599820190E+026
+  2.321181339197554E+026
+  2.329669804388560E+026
+  2.336607037966827E+026
+  2.341817958237410E+026
+  2.345289797974184E+026
+  2.347144706207388E+026
+  2.347604227624200E+026
+  2.346952485268365E+026
+  2.345501667222364E+026
+  2.343562005908011E+026
+  2.341418870995218E+026
+  2.339317853649021E+026
+  2.337456758252525E+026
+  3.322276676094229E+026
+  3.322234429135848E+026
+  3.322579368052063E+026
+  3.323368901901496E+026
+  3.324610436568169E+026
+  3.326243893618711E+026
+  3.328129839642261E+026
+  3.330045940200315E+026
+  3.331693747288681E+026
+  3.332718115807983E+026
+  3.332739733747658E+026
+  3.331399168588090E+026
+  3.328409312877349E+026
+  3.323611249291637E+026
+  3.317026488266793E+026
+  3.308896976622849E+026
+  3.299703608338789E+026
+  3.290154365950239E+026
+  3.281134945128109E+026
+  3.273618002754919E+026
+  3.268531966921091E+026
+  3.266596180408267E+026
+  3.268135177131542E+026
+  3.272890100112582E+026
+  3.279848748700738E+026
+  3.287116982799035E+026
+  3.291853315973632E+026
+  3.290286181847703E+026
+  3.277830441359998E+026
+  3.249316598897939E+026
+  3.199342072668234E+026
+  3.122746346576958E+026
+  3.015197557830492E+026
+  2.873854175724452E+026
+  2.698031667394610E+026
+  2.489765405305929E+026
+  2.254130196571189E+026
+  1.999173719378551E+026
+  1.735366029733694E+026
+  1.474567594614215E+026
+  1.228658239165391E+026
+  1.007682435046553E+026
+  8.172361726552219E+025
+  6.580264279059053E+025
+  5.277484266603588E+025
+  4.227345528093691E+025
+  3.389573138075075E+025
+  2.725761525985239E+025
+  2.201922505828559E+025
+  1.789313545769039E+025
+  1.464340809330088E+025
+  1.208025615646576E+025
+  1.005315102864914E+025
+  8.443863908070690E+024
+  7.160152073500128E+024
+  6.130357900068138E+024
+  5.298954910536862E+024
+  4.622962793035135E+024
+  4.069109414389849E+024
+  3.611610285505057E+024
+  3.230445695741300E+024
+  2.910032207337406E+024
+  2.638202956938071E+024
+  2.405427779237374E+024
+  2.204218601231821E+024
+  2.028677628385920E+024
+  1.874155669404240E+024
+  1.736995824166353E+024
+  1.614344123979821E+024
+  1.504014115496239E+024
+  1.404397494582620E+024
+  1.314418577219975E+024
+  1.233537788975721E+024
+  1.161820098095600E+024
+  1.100100795673816E+024
+  1.050306666657300E+024
+  1.016030085439558E+024
+  1.003512818221199E+024
+  1.023281798362080E+024
+  1.092795994119328E+024
+  1.240611214241103E+024
+  1.512733825306464E+024
+  1.981971991498525E+024
+  2.761110793264859E+024
+  4.020462736462258E+024
+  6.009497135250426E+024
+  9.080432700524714E+024
+  1.370841998422949E+025
+  2.049787031833182E+025
+  3.015766924547335E+025
+  4.342052702540848E+025
+  6.087651468291824E+025
+  8.272458718953766E+025
+  1.086050356611829E+026
+  1.376215681082313E+026
+  1.684469629118142E+026
+  1.995055738375648E+026
+  2.292042920722247E+026
+  2.561530909682690E+026
+  2.793266104487335E+026
+  2.981425360747061E+026
+  3.124586619196370E+026
+  3.225088571347692E+026
+  3.288051629557146E+026
+  3.320308402736171E+026
+  3.329417914373339E+026
+  3.322856223141740E+026
+  3.307412953358037E+026
+  3.288786483520237E+026
+  3.271355695220378E+026
+  3.258103766096304E+026
+  3.250670693735078E+026
+  3.249510782717911E+026
+  3.254127932706108E+026
+  3.263356942144615E+026
+  3.275656196714930E+026
+  3.289378590710410E+026
+  3.302994134830666E+026
+  3.315248114558902E+026
+  3.325250160179330E+026
+  3.332499551173399E+026
+  3.336859208048031E+026
+  3.338494941201608E+026
+  3.337797196223910E+026
+  3.335299096629521E+026
+  3.331598968100946E+026
+  3.327292584694253E+026
+  3.322920305305191E+026
+  3.318931319811629E+026
+  3.315664028457808E+026
+  2.928610348140216E+026
+  2.928716833360851E+026
+  2.929023127859982E+026
+  2.929542288902301E+026
+  2.930255675537518E+026
+  2.931102354548780E+026
+  2.931972035969803E+026
+  2.932703122652858E+026
+  2.933086937752547E+026
+  2.932879662735258E+026
+  2.931822239029376E+026
+  2.929667068836239E+026
+  2.926209494843942E+026
+  2.921320901637079E+026
+  2.914978940937801E+026
+  2.907289406198781E+026
+  2.898493915913291E+026
+  2.888957877764206E+026
+  2.879134354285678E+026
+  2.869501604869032E+026
+  2.860475215730723E+026
+  2.852299539584115E+026
+  2.844927105277877E+026
+  2.837898079553753E+026
+  2.830234200478504E+026
+  2.820362548075988E+026
+  2.806084147614185E+026
+  2.784601131063256E+026
+  2.752614490252491E+026
+  2.706502400732976E+026
+  2.642585848014974E+026
+  2.557482006258164E+026
+  2.448534161490233E+026
+  2.314288230496637E+026
+  2.154960548240333E+026
+  1.972813914721341E+026
+  1.772338710146627E+026
+  1.560137923997609E+026
+  1.344453124921829E+026
+  1.134346270920206E+026
+  9.386560117325549E+025
+  7.646216967538789E+025
+  6.159735487459620E+025
+  4.927091662650960E+025
+  3.926003561165317E+025
+  3.124768361822316E+025
+  2.489893547174927E+025
+  1.990126341988361E+025
+  1.598222067714261E+025
+  1.291410750831614E+025
+  1.051185439355952E+025
+  8.627884498054774E+024
+  7.146068223510407E+024
+  5.975857141020706E+024
+  5.047085047689728E+024
+  4.305593761181655E+024
+  3.709672249096459E+024
+  3.227221133230971E+024
+  2.833528870705292E+024
+  2.509546203284196E+024
+  2.240557436512507E+024
+  2.015162951223830E+024
+  1.824503210122888E+024
+  1.661668761691952E+024
+  1.521252834499250E+024
+  1.399013036012204E+024
+  1.291616623209617E+024
+  1.196450109816105E+024
+  1.111479002721824E+024
+  1.035147668787370E+024
+  9.663132494140398E+023
+  9.042118114369430E+023
+  8.484604085035503E+023
+  7.991066462023258E+023
+  7.567494783153107E+023
+  7.227738857483508E+023
+  6.997713664191443E+023
+  6.922623685973013E+023
+  7.079011218649251E+023
+  7.594322669055763E+023
+  8.677830477163201E+023
+  1.066805602536024E+024
+  1.410301498419979E+024
+  1.981998059815254E+024
+  2.908975904015788E+024
+  4.378457431769794E+024
+  6.656547748250896E+024
+  1.010509431706417E+025
+  1.518896543486408E+025
+  2.246070368923186E+025
+  3.250339526385184E+025
+  4.580783524220713E+025
+  6.258437554750107E+025
+  8.263015517872568E+025
+  1.053353900642183E+026
+  1.297515708332294E+026
+  1.547190178101138E+026
+  1.790349944775557E+026
+  2.016193579792372E+026
+  2.216408116747409E+026
+  2.385838154438553E+026
+  2.522553993614033E+026
+  2.627452321515024E+026
+  2.703583295715382E+026
+  2.755387855453206E+026
+  2.787979200870469E+026
+  2.806543508927456E+026
+  2.815887225428707E+026
+  2.820128898601486E+026
+  2.822520335854239E+026
+  2.825378565797047E+026
+  2.830110415693318E+026
+  2.837311467013593E+026
+  2.846919462277318E+026
+  2.858399772194486E+026
+  2.870939168841521E+026
+  2.883625558043456E+026
+  2.895596035202768E+026
+  2.906142727753450E+026
+  2.914773511936098E+026
+  2.921231134809987E+026
+  2.925478864986431E+026
+  2.927663603381093E+026
+  2.928067984755401E+026
+  2.927060548471850E+026
+  2.925048893572830E+026
+  2.922438844167982E+026
+  2.919603100565964E+026
+  2.916860613284020E+026
+  2.914465409959917E+026
+  3.220580885576729E+026
+  3.220685446922796E+026
+  3.221051702339854E+026
+  3.221702282956915E+026
+  3.222620726255263E+026
+  3.223739032120785E+026
+  3.224929920389315E+026
+  3.226005807370700E+026
+  3.226725863355739E+026
+  3.226812903061842E+026
+  3.225980288741560E+026
+  3.223967259302215E+026
+  3.220579934869411E+026
+  3.215733784663051E+026
+  3.209491695107979E+026
+  3.202090592827209E+026
+  3.193949176324448E+026
+  3.185649803261706E+026
+  3.177889161742602E+026
+  3.171395207489569E+026
+  3.166811910510717E+026
+  3.164558205769133E+026
+  3.164672471638802E+026
+  3.166658038184054E+026
+  3.169347938192635E+026
+  3.170807993143956E+026
+  3.168296516153095E+026
+  3.158297007855042E+026
+  3.136637909970037E+026
+  3.098710946817481E+026
+  3.039795893780422E+026
+  2.955492523042617E+026
+  2.842247023915165E+026
+  2.697938062256105E+026
+  2.522457062537967E+026
+  2.318183242726860E+026
+  2.090228140590607E+026
+  1.846324790614579E+026
+  1.596280753185255E+026
+  1.351007094486467E+026
+  1.121261364411055E+026
+  9.159765787235262E+025
+  7.399325228367819E+025
+  5.934319995650755E+025
+  4.740673824256700E+025
+  3.782460039034396E+025
+  3.021068858159521E+025
+  2.420122302237666E+025
+  1.947694622087368E+025
+  1.576964625671998E+025
+  1.286038374008907E+025
+  1.057391929300072E+025
+  8.771894623530293E+024
+  7.346101722296448E+024
+  6.212455840619391E+024
+  5.305887634576225E+024
+  4.576161595779180E+024
+  3.984530826974202E+024
+  3.501102998310336E+024
+  3.102789309043235E+024
+  2.771720161011914E+024
+  2.494028478634585E+024
+  2.258919393861882E+024
+  2.057961244877055E+024
+  1.884546770513589E+024
+  1.733484909083764E+024
+  1.600692910404547E+024
+  1.482965873309295E+024
+  1.377806761316376E+024
+  1.283304949573661E+024
+  1.198056040058792E+024
+  1.121120824394342E+024
+  1.052027909375915E+024
+  9.908341201396840E+023
+  9.382715078853567E+023
+  8.960327106545148E+023
+  8.672818136230784E+023
+  8.575311705478799E+023
+  8.761019737480785E+023
+  9.384928146731321E+023
+  1.070116460205492E+024
+  1.312018848772978E+024
+  1.729328997593240E+024
+  2.423221846371587E+024
+  3.546953453929983E+024
+  5.325794523377400E+024
+  8.079076364339922E+024
+  1.223963045215731E+025
+  1.836127241485146E+025
+  2.709865215314122E+025
+  3.913667099222517E+025
+  5.504136732978403E+025
+  7.503395948361145E+025
+  9.883412083493787E+025
+  1.256722863738252E+026
+  1.543771320722063E+026
+  1.835340104382745E+026
+  2.116904681035898E+026
+  2.375563912288694E+026
+  2.601544099610761E+026
+  2.788972561913831E+026
+  2.935921247677184E+026
+  3.043889635440273E+026
+  3.116965546076028E+026
+  3.160886738496346E+026
+  3.182163339446685E+026
+  3.187348987663199E+026
+  3.182491138363836E+026
+  3.172756453384939E+026
+  3.162212428465596E+026
+  3.153743356116474E+026
+  3.149079611544694E+026
+  3.148919199338322E+026
+  3.153118073374757E+026
+  3.160922166321954E+026
+  3.171211801123575E+026
+  3.182730386294840E+026
+  3.194274768587629E+026
+  3.204833267653734E+026
+  3.213666973527601E+026
+  3.220338173172079E+026
+  3.224695782338872E+026
+  3.226831304513963E+026
+  3.227019636724696E+026
+  3.225656178832662E+026
+  3.223196823977197E+026
+  3.220105025958467E+026
+  3.216810382359329E+026
+  3.213680526128706E+026
+  3.211005210611943E+026
+  3.319988685615364E+026
+  3.320021499659141E+026
+  3.320371432147423E+026
+  3.321076927289612E+026
+  3.322132487264493E+026
+  3.323473659055997E+026
+  3.324966979785038E+026
+  3.326407197750657E+026
+  3.327523426196059E+026
+  3.327996271782242E+026
+  3.327486316703486E+026
+  3.325672449134647E+026
+  3.322297247431963E+026
+  3.317215003219432E+026
+  3.310436135914341E+026
+  3.302160393327096E+026
+  3.292790684392234E+026
+  3.282919785740168E+026
+  3.273283729251527E+026
+  3.264678628809080E+026
+  3.257841995869159E+026
+  3.253304798529182E+026
+  3.251225887685017E+026
+  3.251225050629104E+026
+  3.252234059891226E+026
+  3.252386226315261E+026
+  3.248964242429158E+026
+  3.238424116599799E+026
+  3.216510493546750E+026
+  3.178475884334020E+026
+  3.119412399204789E+026
+  3.034697224349296E+026
+  2.920539231564571E+026
+  2.774591272276680E+026
+  2.596560964436067E+026
+  2.388717104414385E+026
+  2.156161268301904E+026
+  1.906733375874831E+026
+  1.650464360748721E+026
+  1.398584624672530E+026
+  1.162227861285005E+026
+  9.506954262319938E+025
+  7.690255223392788E+025
+  6.176307284857582E+025
+  4.941090102077201E+025
+  3.948154827763159E+025
+  3.158101004832336E+025
+  2.533681397336822E+025
+  2.042129028650115E+025
+  1.655862371444882E+025
+  1.352328406787268E+025
+  1.113447392104104E+025
+  9.249235519893314E+024
+  7.755604710619316E+024
+  6.566457772998657E+024
+  5.614282545100192E+024
+  4.846888462260868E+024
+  4.223968187466385E+024
+  3.714385656023531E+024
+  3.294061071140990E+024
+  2.944334766863141E+024
+  2.650708992656391E+024
+  2.401884569958519E+024
+  2.189025804207105E+024
+  2.005201202654365E+024
+  1.844959306446998E+024
+  1.704008457062269E+024
+  1.578976905628923E+024
+  1.467235775648898E+024
+  1.366772540566343E+024
+  1.276107521348276E+024
+  1.194251250600704E+024
+  1.120707466071530E+024
+  1.055536519967980E+024
+  9.995093583364292E+023
+  9.544061578122550E+023
+  9.235506308708593E+023
+  9.127265445528906E+023
+  9.317033862619153E+023
+  9.967084942014422E+023
+  1.134323446176738E+024
+  1.387440370986660E+024
+  1.824050075496643E+024
+  2.549662187174081E+024
+  3.723916719785851E+024
+  5.581172241818552E+024
+  8.453169193125726E+024
+  1.278881536914367E+025
+  1.916134708784905E+025
+  2.824660332312154E+025
+  4.074887720298388E+025
+  5.724550906324929E+025
+  7.795260437359075E+025
+  1.025641925594617E+026
+  1.302679732606507E+026
+  1.598392168138051E+026
+  1.898077171093888E+026
+  2.186723306223563E+026
+  2.451083395169253E+026
+  2.681217710345676E+026
+  2.871270323239935E+026
+  3.019485740848862E+026
+  3.127646943369680E+026
+  3.200185572741009E+026
+  3.243196323188490E+026
+  3.263520807898057E+026
+  3.267990651217459E+026
+  3.262860045280836E+026
+  3.253422608544656E+026
+  3.243792462682040E+026
+  3.236826479340521E+026
+  3.234165527322728E+026
+  3.236372283740644E+026
+  3.243140401022379E+026
+  3.253545948506518E+026
+  3.266309716271149E+026
+  3.280040462665442E+026
+  3.293435234964974E+026
+  3.305422299050452E+026
+  3.315242516383891E+026
+  3.322473868239509E+026
+  3.327010172082430E+026
+  3.329008783439054E+026
+  3.328822771104797E+026
+  3.326929904467840E+026
+  3.323865555366008E+026
+  3.320164010167521E+026
+  3.316312861763192E+026
+  3.312722374676904E+026
+  3.309708664701656E+026
+  3.098580485056203E+026
+  3.098716537407623E+026
+  3.099072160588476E+026
+  3.099660325337517E+026
+  3.100459159126257E+026
+  3.101401128740406E+026
+  3.102366460533908E+026
+  3.103182558972983E+026
+  3.103630571138932E+026
+  3.103460663610439E+026
+  3.102416131259808E+026
+  3.100264845297771E+026
+  3.096835530768106E+026
+  3.092055066903541E+026
+  3.085981521954573E+026
+  3.078826587026714E+026
+  3.070960744575068E+026
+  3.062894985882599E+026
+  3.055234348239898E+026
+  3.048601142960997E+026
+  3.043529431041975E+026
+  3.040336691751536E+026
+  3.038983076444376E+026
+  3.038932399735946E+026
+  3.039031455211252E+026
+  3.037425036319452E+026
+  3.031523333433299E+026
+  3.018036701053803E+026
+  2.993090748195937E+026
+  2.952432414082040E+026
+  2.891734227470615E+026
+  2.806997199329771E+026
+  2.695040032365923E+026
+  2.554041488807355E+026
+  2.384074205219443E+026
+  2.187536772536784E+026
+  1.969367546144320E+026
+  1.736925102625922E+026
+  1.499462472496955E+026
+  1.267209640781144E+026
+  1.050196083647483E+026
+  8.566944862012630E+025
+  6.910595198312911E+025
+  5.534511868573750E+025
+  4.415068544678493E+025
+  3.517760762678771E+025
+  2.805789122897502E+025
+  2.244631111368497E+025
+  1.804081081158945E+025
+  1.458823531110707E+025
+  1.188235452006316E+025
+  9.758398115068092E+024
+  8.086486977420716E+024
+  6.765199695675689E+024
+  5.715838658660570E+024
+  4.877586773123756E+024
+  4.203552857814022E+024
+  3.657614923183726E+024
+  3.211939323940685E+024
+  2.845052343222559E+024
+  2.540352938905076E+024
+  2.284972277252369E+024
+  2.068902874122075E+024
+  1.884335739335015E+024
+  1.725157222957892E+024
+  1.586568225512153E+024
+  1.464797252679209E+024
+  1.356885797434404E+024
+  1.260530137389398E+024
+  1.173968339471819E+024
+  1.095905654271745E+024
+  1.025476283359163E+024
+  9.622456796991541E+023
+  9.062664642831347E+023
+  8.582147134090683E+023
+  8.196546816652129E+023
+  7.935129677325857E+023
+  7.848928147054831E+023
+  8.024314294574212E+023
+  8.605028416907698E+023
+  9.826965567717910E+023
+  1.207147586520279E+024
+  1.594422575571471E+024
+  2.238703642522875E+024
+  3.282812493642607E+024
+  4.936944111553892E+024
+  7.499486274317407E+024
+  1.137556856845035E+025
+  1.708464837317260E+025
+  2.524248007299969E+025
+  3.649604923383428E+025
+  5.138490460427016E+025
+  7.012987337581293E+025
+  9.248508689342240E+025
+  1.177469590165287E+026
+  1.448331464047902E+026
+  1.724281638376112E+026
+  1.991739778430807E+026
+  2.238568993151387E+026
+  2.455492333575151E+026
+  2.636835004266184E+026
+  2.780587412303419E+026
+  2.887942564349769E+026
+  2.962527979203841E+026
+  3.009539544843365E+026
+  3.034927476546712E+026
+  3.044717734160548E+026
+  3.044498565383955E+026
+  3.039069196202467E+026
+  3.032233425083006E+026
+  3.026717695590142E+026
+  3.024193939552903E+026
+  3.025387525500575E+026
+  3.030248593582056E+026
+  3.038161948462722E+026
+  3.048168724750240E+026
+  3.059174219214416E+026
+  3.070121291706708E+026
+  3.080116607977064E+026
+  3.088505660099515E+026
+  3.094899986877584E+026
+  3.099165456263174E+026
+  3.101383821134335E+026
+  3.101800541933094E+026
+  3.100769247116255E+026
+  3.098698682516610E+026
+  3.096005861269097E+026
+  3.093079465936752E+026
+  3.090255083255437E+026
+  3.087801120711538E+026
+  3.217650642463707E+026
+  3.217729482615476E+026
+  3.218113576285420E+026
+  3.218835352097491E+026
+  3.219883982572266E+026
+  3.221191883179485E+026
+  3.222626619560988E+026
+  3.223990514841131E+026
+  3.225029523836872E+026
+  3.225453223516032E+026
+  3.224966053703295E+026
+  3.223307988266150E+026
+  3.220301448614985E+026
+  3.215899613662886E+026
+  3.210229458752277E+026
+  3.203621557187278E+026
+  3.196618253734745E+026
+  3.189952417854326E+026
+  3.184490822185981E+026
+  3.181139453850516E+026
+  3.180712659926951E+026
+  3.183773470012858E+026
+  3.190457920603309E+026
+  3.200300790605160E+026
+  3.212083040719574E+026
+  3.223722034275198E+026
+  3.232224487916134E+026
+  3.233719763147506E+026
+  3.223588399093161E+026
+  3.196697994030207E+026
+  3.147754731506261E+026
+  3.071771604254939E+026
+  2.964640417593920E+026
+  2.823771249320243E+026
+  2.648730187156594E+026
+  2.441768979236268E+026
+  2.208111242288654E+026
+  1.955858531699034E+026
+  1.695425130270375E+026
+  1.438509325995942E+026
+  1.196745008373692E+026
+  9.798962417173109E+025
+  7.933318741143033E+025
+  6.376309196274020E+025
+  5.104383782717134E+025
+  4.080853511661440E+025
+  3.265710353749607E+025
+  2.620953953489746E+025
+  2.113050258074731E+025
+  1.713706921959531E+025
+  1.399747748268848E+025
+  1.152565919756378E+025
+  9.574307150086379E+024
+  8.027930070942585E+024
+  6.796579656882067E+024
+  5.810502081258493E+024
+  5.015739053320980E+024
+  4.370595279650828E+024
+  3.842847858319553E+024
+  3.407567097350139E+024
+  3.045428878689868E+024
+  2.741415627872991E+024
+  2.483820928685966E+024
+  2.263489467611493E+024
+  2.073238416947780E+024
+  1.907418381083866E+024
+  1.761581777276546E+024
+  1.632234315937796E+024
+  1.516651524840986E+024
+  1.412747572047807E+024
+  1.318988644099881E+024
+  1.234348657946161E+024
+  1.158312238962647E+024
+  1.090940265774379E+024
+  1.033029175614711E+024
+  9.864199662085710E+023
+  9.545509849485715E+023
+  9.434059481010759E+023
+  9.630915898577706E+023
+  1.030393128948339E+024
+  1.172800304624024E+024
+  1.434658694803483E+024
+  1.886239656635893E+024
+  2.636547842398096E+024
+  3.850430744799390E+024
+  5.769746743044652E+024
+  8.736595940664980E+024
+  1.321345758389458E+025
+  1.979012752661512E+025
+  2.916064431296920E+025
+  4.204595519930431E+025
+  5.903275381979147E+025
+  8.033136188386221E+025
+  1.056102033409223E+026
+  1.340132131881385E+026
+  1.642584739486149E+026
+  1.948125355966715E+026
+  2.241137020845741E+026
+  2.507873996254809E+026
+  2.738060998598641E+026
+  2.925694210987110E+026
+  3.069053224967106E+026
+  3.170113198737620E+026
+  3.233618036008017E+026
+  3.266055200355495E+026
+  3.274702913498427E+026
+  3.266841890992753E+026
+  3.249162146846506E+026
+  3.227359065492361E+026
+  3.205898001457072E+026
+  3.187924136894361E+026
+  3.175295656226857E+026
+  3.168718211195152E+026
+  3.167955698217800E+026
+  3.172088031443953E+026
+  3.179783687283301E+026
+  3.189555795941548E+026
+  3.199976340268622E+026
+  3.209832466060284E+026
+  3.218219528986721E+026
+  3.224574859392336E+026
+  3.228663074821262E+026
+  3.230527879953466E+026
+  3.230426175036025E+026
+  3.228757253553317E+026
+  3.225994715197478E+026
+  3.222626061543359E+026
+  3.219104944331687E+026
+  3.215818222312060E+026
+  3.213066949492174E+026
+  3.386231611171415E+026
+  3.386019964743971E+026
+  3.386320021603206E+026
+  3.387226089405409E+026
+  3.388772194616457E+026
+  3.390909235920310E+026
+  3.393488370761386E+026
+  3.396254012054374E+026
+  3.398849096650382E+026
+  3.400835501544892E+026
+  3.401730493195633E+026
+  3.401057764165058E+026
+  3.398409792412860E+026
+  3.393516043203599E+026
+  3.386309083463568E+026
+  3.376978753742260E+026
+  3.366003567763496E+026
+  3.354148718738289E+026
+  3.342421793907083E+026
+  3.331980832126265E+026
+  3.323994680983088E+026
+  3.319462220850038E+026
+  3.319003992909558E+026
+  3.322645933919409E+026
+  3.329619195131344E+026
+  3.338201744747694E+026
+  3.345626650777645E+026
+  3.348079334508961E+026
+  3.340802695967049E+026
+  3.318325414217949E+026
+  3.274824212063810E+026
+  3.204623054322243E+026
+  3.102817525752721E+026
+  2.965987720055189E+026
+  2.792927191011385E+026
+  2.585273674973216E+026
+  2.347892484949400E+026
+  2.088857045415591E+026
+  1.818915216899774E+026
+  1.550434210403645E+026
+  1.295965816879047E+026
+  1.066274783655849E+026
+  8.675330460229708E+025
+  7.007820540176396E+025
+  5.638609049789280E+025
+  4.531235148630924E+025
+  3.644926406039769E+025
+  2.940417302055967E+025
+  2.382721498064865E+025
+  1.942093890198365E+025
+  1.594006599713974E+025
+  1.318649589815411E+025
+  1.100252019460185E+025
+  9.263837783539411E+024
+  7.873146299581279E+024
+  6.754617338967424E+024
+  5.849312856071819E+024
+  5.111477180141666E+024
+  4.505588673935336E+024
+  4.004043648439048E+024
+  3.585352775972966E+024
+  3.232745616186325E+024
+  2.933096131384814E+024
+  2.676098496528507E+024
+  2.453637005804177E+024
+  2.259306118343471E+024
+  2.088046721043537E+024
+  1.935872781120870E+024
+  1.799669138584336E+024
+  1.677046811294617E+024
+  1.566247558327770E+024
+  1.466095474268786E+024
+  1.376001290812847E+024
+  1.296036588264194E+024
+  1.227112812607973E+024
+  1.171327496599746E+024
+  1.132582349630372E+024
+  1.117641093436759E+024
+  1.137885730345093E+024
+  1.212153328200465E+024
+  1.371190042629264E+024
+  1.664428297441192E+024
+  2.169929427100186E+024
+  3.008336371588579E+024
+  4.361364351861350E+024
+  6.494425115853527E+024
+  9.781017391107462E+024
+  1.472304562813423E+025
+  2.195589059134566E+025
+  3.221997191210983E+025
+  4.627292812714805E+025
+  6.471156849999629E+025
+  8.770929382118424E+025
+  1.148433051613224E+026
+  1.451255792734493E+026
+  1.771228402035965E+026
+  2.091565588787473E+026
+  2.395511046748597E+026
+  2.668668186813780E+026
+  2.900669934287257E+026
+  3.085944253568023E+026
+  3.223612020212802E+026
+  3.316745298221420E+026
+  3.371282420859226E+026
+  3.394864796757599E+026
+  3.395777915204171E+026
+  3.382090937650436E+026
+  3.361022578295730E+026
+  3.338523170271490E+026
+  3.319048262439178E+026
+  3.305497216485238E+026
+  3.299291595960414E+026
+  3.300567206772116E+026
+  3.308449408132768E+026
+  3.321375904932800E+026
+  3.337428083088144E+026
+  3.354633843540584E+026
+  3.371212606548160E+026
+  3.385745114254746E+026
+  3.397263753765146E+026
+  3.405270380175193E+026
+  3.409696536776728E+026
+  3.410825328702255E+026
+  3.409194648440810E+026
+  3.405497459087063E+026
+  3.400488574416683E+026
+  3.394903947236096E+026
+  3.389398141245274E+026
+  3.384502483949945E+026
+  3.380602980788707E+026
+  3.147203077180511E+026
+  3.147298842710634E+026
+  3.147637580750155E+026
+  3.148239864005739E+026
+  3.149089542024066E+026
+  3.150121602581803E+026
+  3.151214239093197E+026
+  3.152186999235613E+026
+  3.152806293671741E+026
+  3.152799984103206E+026
+  3.151881308090768E+026
+  3.149780764510259E+026
+  3.146283541748132E+026
+  3.141268727944345E+026
+  3.134744994690191E+026
+  3.126876320440314E+026
+  3.117990904265571E+026
+  3.108566809033246E+026
+  3.099189249131377E+026
+  3.090476987032646E+026
+  3.082978985639997E+026
+  3.077046910089547E+026
+  3.072693641411385E+026
+  3.069451897366438E+026
+  3.066249688521156E+026
+  3.061320316988614E+026
+  3.052164053124919E+026
+  3.035577012491837E+026
+  3.007760699804893E+026
+  2.964523319286621E+026
+  2.901580382138047E+026
+  2.814955296868740E+026
+  2.701467798968329E+026
+  2.559277201722994E+026
+  2.388418857850116E+026
+  2.191240642972083E+026
+  1.972622689901150E+026
+  1.739864709288051E+026
+  1.502167073477676E+026
+  1.269718970733067E+026
+  1.052524304403367E+026
+  8.588450208536989E+025
+  6.930339287995892E+025
+  5.552521940347728E+025
+  4.431394662845326E+025
+  3.532478421368911E+025
+  2.818996049324804E+025
+  2.256441122980740E+025
+  1.814617155902944E+025
+  1.468211429730005E+025
+  1.196598552596197E+025
+  9.832953495675564E+024
+  8.153053291471303E+024
+  6.824764401231824E+024
+  5.769285304932698E+024
+  4.925696244919483E+024
+  4.247008602600362E+024
+  3.697010535281110E+024
+  3.247787283763260E+024
+  2.877793072636030E+024
+  2.570363625287083E+024
+  2.312575140547863E+024
+  2.094372711499285E+024
+  1.907906692518800E+024
+  1.747028786053961E+024
+  1.606910556819571E+024
+  1.483755880894288E+024
+  1.374585826769578E+024
+  1.277080062109002E+024
+  1.189463580697873E+024
+  1.110431936188043E+024
+  1.039112979828706E+024
+  9.750692968580118E+023
+  9.183544958692638E+023
+  8.696502362720691E+023
+  8.305322804579661E+023
+  8.039469299949821E+023
+  7.950290639757978E+023
+  8.124653988236071E+023
+  8.707064308663940E+023
+  9.934583757714624E+023
+  1.219031624211948E+024
+  1.608250742096013E+024
+  2.255666462992230E+024
+  3.304608311244851E+024
+  4.965938932762151E+024
+  7.538872448654782E+024
+  1.142948052418155E+025
+  1.715816988482062E+025
+  2.534145651664519E+025
+  3.662661166133221E+025
+  5.155263571945647E+025
+  7.033869163776603E+025
+  9.273640488603956E+025
+  1.180397317658004E+026
+  1.451648730913615E+026
+  1.727966858276481E+026
+  1.995797085940142E+026
+  2.243049824986100E+026
+  2.460511530503761E+026
+  2.642578268382455E+026
+  2.787309073799540E+026
+  2.895954476702807E+026
+  2.972181538737702E+026
+  3.021203285540588E+026
+  3.048962642951585E+026
+  3.061453962010472E+026
+  3.064211499984613E+026
+  3.061961625238605E+026
+  3.058421266378368E+026
+  3.056221887542174E+026
+  3.056938871334325E+026
+  3.061206104132359E+026
+  3.068893424193898E+026
+  3.079321497180712E+026
+  3.091486852030294E+026
+  3.104271208514548E+026
+  3.116614499921633E+026
+  3.127639111944753E+026
+  3.136721691667723E+026
+  3.143516434681617E+026
+  3.147939179212456E+026
+  3.150124919869907E+026
+  3.150372043653188E+026
+  3.149083842259147E+026
+  3.146713199854531E+026
+  3.143714152783523E+026
+  3.140504368559984E+026
+  3.137440089763705E+026
+  3.134802311585695E+026
+  3.348344304495925E+026
+  3.348307392278226E+026
+  3.348654717308299E+026
+  3.349442592247867E+026
+  3.350677467911203E+026
+  3.352298506060983E+026
+  3.354165737857811E+026
+  3.356056508115761E+026
+  3.357672200663718E+026
+  3.358657539186483E+026
+  3.358632947577020E+026
+  3.357238375267163E+026
+  3.354185484033285E+026
+  3.349313238110055E+026
+  3.342639877133913E+026
+  3.334402701287208E+026
+  3.325076433582512E+026
+  3.315361319983825E+026
+  3.306133845200091E+026
+  3.298356218034948E+026
+  3.292945563103809E+026
+  3.290609572147079E+026
+  3.291661380703071E+026
+  3.295831634645884E+026
+  3.302099188240397E+026
+  3.308563123427729E+026
+  3.312377901098258E+026
+  3.309771129081392E+026
+  3.296160533287156E+026
+  3.266383624901850E+026
+  3.215049418075856E+026
+  3.137013991802770E+026
+  3.027967351727141E+026
+  2.885095078903046E+026
+  2.707744445557858E+026
+  2.497986044512562E+026
+  2.260931195637884E+026
+  2.004662485686599E+026
+  1.739679932671595E+026
+  1.477865804681469E+026
+  1.231111182388634E+026
+  1.009459538065213E+026
+  8.184923736525369E+025
+  6.588929010271782E+025
+  5.283302598743041E+025
+  4.231127100327481E+025
+  3.391923797285138E+025
+  2.727124420936457E+025
+  2.202615828176532E+025
+  1.789562184768558E+025
+  1.464301470728437E+025
+  1.207806023763999E+025
+  1.004988291023379E+025
+  8.440011235861056E+024
+  7.156034621938953E+024
+  6.126180590544067E+024
+  5.294844974038032E+024
+  4.618995567184831E+024
+  4.065326089097975E+024
+  3.608030001168804E+024
+  3.227073713858844E+024
+  2.906865370178092E+024
+  2.635233288729716E+024
+  2.402644821181590E+024
+  2.201610888752518E+024
+  2.026233590102838E+024
+  1.871864137639537E+024
+  1.734846284939506E+024
+  1.612326792344479E+024
+  1.502119894101176E+024
+  1.402617855729018E+024
+  1.312745399194148E+024
+  1.231963175328380E+024
+  1.160336214992236E+024
+  1.098699781543730E+024
+  1.048980709110460E+024
+  1.014771840257931E+024
+  1.002316496016654E+024
+  1.022145521552272E+024
+  1.091726521548744E+024
+  1.239632985117487E+024
+  1.511905692465114E+024
+  1.981417258047643E+024
+  2.761069506447526E+024
+  4.021379764464910E+024
+  6.012165051015400E+024
+  9.086213614097322E+024
+  1.371957203793701E+025
+  2.051799652343557E+025
+  3.019227892273338E+025
+  4.347764021862662E+025
+  6.096713441636857E+025
+  8.286275940229192E+025
+  1.088073715165300E+026
+  1.379063452337483E+026
+  1.688328794240508E+026
+  2.000103292538418E+026
+  2.298432422637172E+026
+  2.569381968200773E+026
+  2.802658135846891E+026
+  2.992395867882929E+026
+  3.137133324608784E+026
+  3.239174210050819E+026
+  3.303610115173395E+026
+  3.337251306614484E+026
+  3.347640573201982E+026
+  3.342243161074745E+026
+  3.327842575789864E+026
+  3.310135140897192E+026
+  3.293501242749268E+026
+  3.280928698799548E+026
+  3.274064861066047E+026
+  3.273373620690256E+026
+  3.278370118007964E+026
+  3.287901380101886E+026
+  3.300438298160654E+026
+  3.314345858477207E+026
+  3.328105151867480E+026
+  3.340471085363330E+026
+  3.350561190587634E+026
+  3.357880851406420E+026
+  3.362297376606450E+026
+  3.363979450599399E+026
+  3.363319168972864E+026
+  3.360850425392795E+026
+  3.357171788689652E+026
+  3.352879073505115E+026
+  3.348512761289372E+026
+  3.344522474322086E+026
+  3.341247497640084E+026
+  1.900206876003460E+021
+  1.900478024414096E+021
+  1.900729776545372E+021
+  1.900925979738268E+021
+  1.901021814377010E+021
+  1.900963145155282E+021
+  1.900687459199208E+021
+  1.900126638488400E+021
+  1.899211482427102E+021
+  1.897878316394525E+021
+  1.896077386858681E+021
+  1.893782093273760E+021
+  1.890997901493099E+021
+  1.887769456381492E+021
+  1.884183978042161E+021
+  1.880368815585627E+021
+  1.876481153810934E+021
+  1.872688297348858E+021
+  1.869137716239238E+021
+  1.865917166698697E+021
+  1.863006651491421E+021
+  1.860225581116193E+021
+  1.857179987240381E+021
+  1.853215773817178E+021
+  1.847384603005559E+021
+  1.838429080991821E+021
+  1.824793571720840E+021
+  1.804666453811140E+021
+  1.776059090595459E+021
+  1.736926012913247E+021
+  1.685329097139412E+021
+  1.619644653279265E+021
+  1.538805047894853E+021
+  1.442555148098009E+021
+  1.331689325204813E+021
+  1.208220126172395E+021
+  1.075421040088066E+021
+  9.376912870381781E+020
+  8.002170541507247E+020
+  6.684511085754210E+020
+  5.474912480886326E+020
+  4.413012775609765E+020
+  3.516668538407906E+020
+  2.781660532990715E+020
+  2.191190244048042E+020
+  1.723658308523024E+020
+  1.357156674380778E+020
+  1.071738990081627E+020
+  8.503284666327989E+019
+  6.788637587649327E+019
+  5.460650281870348E+019
+  4.430455529932563E+019
+  3.628917326917802E+019
+  3.002718691689447E+019
+  2.510984099962084E+019
+  2.122492828489594E+019
+  1.813446571494354E+019
+  1.565716491686411E+019
+  1.365485745932347E+019
+  1.202208527978494E+019
+  1.067817392484312E+019
+  9.561226571695684E+018
+  8.623589625961075E+018
+  7.828438162570776E+018
+  7.147209963932150E+018
+  6.557681498584159E+018
+  6.042530020991905E+018
+  5.588265600598428E+018
+  5.184448032281775E+018
+  4.823129129642251E+018
+  4.498484016917178E+018
+  4.206619442976485E+018
+  3.945577687612796E+018
+  3.715598144652043E+018
+  3.519765159131306E+018
+  3.365274798962085E+018
+  3.265715597820394E+018
+  3.245006263905154E+018
+  3.343999623956990E+018
+  3.631278726241276E+018
+  4.220353938628448E+018
+  5.296285876155069E+018
+  7.155564994690753E+018
+  1.026352198057727E+019
+  1.533291877808630E+019
+  2.342445403334732E+019
+  3.606284299523444E+019
+  5.534847723342599E+019
+  8.402202121611546E+019
+  1.254066756614267E+020
+  1.831133370783872E+020
+  2.603589763848403E+020
+  3.588772839748945E+020
+  4.780916819686537E+020
+  6.150475278953171E+020
+  7.646928521438111E+020
+  9.205182896349467E+020
+  1.075473066660128E+021
+  1.222922032791848E+021
+  1.357426327649412E+021
+  1.475214900306561E+021
+  1.574319933091217E+021
+  1.654433872113509E+021
+  1.716588403884224E+021
+  1.762758143468722E+021
+  1.795468796582020E+021
+  1.817458086456592E+021
+  1.831410053696541E+021
+  1.839764894958211E+021
+  1.844597265927430E+021
+  1.847553059213448E+021
+  1.849834716596536E+021
+  1.852225678030282E+021
+  1.855144481320801E+021
+  1.858718359807214E+021
+  1.862865678927372E+021
+  1.867377023488474E+021
+  1.871986570376622E+021
+  1.876428255602129E+021
+  1.880474395686177E+021
+  1.883957150910303E+021
+  1.886775329503421E+021
+  1.888890606205397E+021
+  1.890317881531651E+021
+  1.891113514904002E+021
+  1.891363167817624E+021
+  1.891170334840663E+021
+  1.890647267487606E+021
+  1.889908761063409E+021
+  1.889067849555988E+021
+  1.121798798597244E+026
+  1.121814865320463E+026
+  1.121907861519697E+026
+  1.122084994505052E+026
+  1.122341579299485E+026
+  1.122656570160882E+026
+  1.122989257507164E+026
+  1.123277727278960E+026
+  1.123439502470358E+026
+  1.123375005476917E+026
+  1.122974028562150E+026
+  1.122124884909142E+026
+  1.120725615231447E+026
+  1.118696218988507E+026
+  1.115990377286465E+026
+  1.112604745664399E+026
+  1.108583713144434E+026
+  1.104017573445493E+026
+  1.099032393626531E+026
+  1.093770565720987E+026
+  1.088362095664020E+026
+  1.082888025962972E+026
+  1.077338820104885E+026
+  1.071571829987240E+026
+  1.065272912821483E+026
+  1.057927734337968E+026
+  1.048808292916280E+026
+  1.036979845274007E+026
+  1.021332854608122E+026
+  1.000643824109639E+026
+  9.736676305522611E+025
+  9.392616018185928E+025
+  8.965372907158731E+025
+  8.450291123220845E+025
+  7.848599181388289E+025
+  7.168737426863282E+025
+  6.426988826307944E+025
+  5.647053794975978E+025
+  4.858347750099258E+025
+  4.093078836485442E+025
+  3.382532967117119E+025
+  2.752176374604840E+025
+  2.214848162084395E+025
+  1.770026156947227E+025
+  1.409286737549275E+025
+  1.120925154818684E+025
+  8.926849535309954E+024
+  7.131865769648337E+024
+  5.725437700055554E+024
+  4.625152976376898E+024
+  3.764166512538683E+024
+  3.089266024859643E+024
+  2.558638608983880E+024
+  2.139722167761377E+024
+  1.807311045567262E+024
+  1.541967920900607E+024
+  1.328734517244930E+024
+  1.156107188207499E+024
+  1.015234936237049E+024
+  8.992980657735323E+023
+  8.030303465640692E+023
+  7.223535080715622E+023
+  6.540987515088759E+023
+  5.957951890098896E+023
+  5.455095298263215E+023
+  5.017249380123104E+023
+  4.632498672265742E+023
+  4.291499544972436E+023
+  3.986978684540871E+023
+  3.713375226494302E+023
+  3.466604714462567E+023
+  3.243938376573893E+023
+  3.044010866266546E+023
+  2.866997987463845E+023
+  2.715049415327104E+023
+  2.593129287728869E+023
+  2.510522594236549E+023
+  2.483424017171295E+023
+  2.539257059793177E+023
+  2.723691404850394E+023
+  3.111738854191572E+023
+  3.824781483388233E+023
+  5.055815029485088E+023
+  7.105337246706635E+023
+  1.042971991413072E+024
+  1.570181435293003E+024
+  2.387884141982444E+024
+  3.626393855762535E+024
+  5.453385143919106E+024
+  8.068598236553799E+024
+  1.168357967119304E+025
+  1.647779727471967E+025
+  2.253112908855562E+025
+  2.977598445598218E+025
+  3.799916849543704E+025
+  4.686580740779485E+025
+  5.596451200873941E+025
+  6.486716794998959E+025
+  7.318801346662144E+025
+  8.062879358838141E+025
+  8.700281591159607E+025
+  9.223757766557537E+025
+  9.636068390805452E+025
+  9.947595598873652E+025
+  1.017362978756901E+026
+  1.033181266287389E+026
+  1.044000798789041E+026
+  1.051470051029831E+026
+  1.056991729913110E+026
+  1.061661678828699E+026
+  1.066247721150705E+026
+  1.071201591540905E+026
+  1.076697026207963E+026
+  1.082686509239445E+026
+  1.088968404494861E+026
+  1.095255884330272E+026
+  1.101239752806166E+026
+  1.106639097694104E+026
+  1.111236331588277E+026
+  1.114895922623369E+026
+  1.117568377084387E+026
+  1.119282609557347E+026
+  1.120130761093238E+026
+  1.120249649208466E+026
+  1.119802064272301E+026
+  1.118959586379094E+026
+  1.117887934593064E+026
+  1.116736041435616E+026
+  1.115629204193324E+026
+  1.114665741627066E+026
+  9.218421041561713E+021
+  9.219439475026810E+021
+  9.220640430516851E+021
+  9.221923809860562E+021
+  9.223123690297806E+021
+  9.223995340817707E+021
+  9.224212416582616E+021
+  9.223377089638556E+021
+  9.221044109894300E+021
+  9.216761438606637E+021
+  9.210126439270226E+021
+  9.200852705204488E+021
+  9.188840719097250E+021
+  9.174243003638479E+021
+  9.157511400929385E+021
+  9.139412325346203E+021
+  9.120995945702768E+021
+  9.103507311782600E+021
+  9.088231704297892E+021
+  9.076273239119116E+021
+  9.068274730448132E+021
+  9.064096982522046E+021
+  9.062485463845419E+021
+  9.060760058184377E+021
+  9.054568032444380E+021
+  9.037741120607667E+021
+  9.002295358874323E+021
+  8.938608442733982E+021
+  8.835805140547462E+021
+  8.682376285476545E+021
+  8.467047782817817E+021
+  8.179896679720290E+021
+  7.813674412057017E+021
+  7.365238365017258E+021
+  6.836914711604856E+021
+  6.237533266682840E+021
+  5.582820311167427E+021
+  4.894853020946442E+021
+  4.200409260752720E+021
+  3.528294687312033E+021
+  2.906047135872361E+021
+  2.355707880476815E+021
+  1.888064997026365E+021
+  1.502209158698871E+021
+  1.190384452554176E+021
+  9.420497805677767E+020
+  7.462656101611955E+020
+  5.929325454687505E+020
+  4.733157335125538E+020
+  3.801628305391107E+020
+  3.076138759999746E+020
+  2.510216849470652E+020
+  2.067485868798921E+020
+  1.719727781490606E+020
+  1.445186881510290E+020
+  1.227154967943524E+020
+  1.052827869256605E+020
+  9.124006639166210E+019
+  7.983622025102057E+019
+  7.049506925735545E+019
+  6.277366724943314E+019
+  5.633052678449476E+019
+  5.090150292016542E+019
+  4.628154188982021E+019
+  4.231090115277551E+019
+  3.886477195429382E+019
+  3.584549361049152E+019
+  3.317675163402250E+019
+  3.079931263724956E+019
+  2.866798226633970E+019
+  2.674959473315088E+019
+  2.502197372622180E+019
+  2.347397077310524E+019
+  2.210692551997806E+019
+  2.093825708869357E+019
+  2.000846543013111E+019
+  1.939370643652622E+019
+  1.922744801282364E+019
+  1.973668359391575E+019
+  2.130092954819897E+019
+  2.454581735889750E+019
+  3.048728129704769E+019
+  4.074629596074507E+019
+  5.785585373462733E+019
+  8.567753414707446E+019
+  1.299280542374267E+020
+  1.987768411024950E+020
+  3.034016346718718E+020
+  4.582688651856158E+020
+  6.807360066276275E+020
+  9.893737815649584E+020
+  1.400240910360389E+021
+  1.921064888151450E+021
+  2.546982028658241E+021
+  3.260455134893351E+021
+  4.033086633242586E+021
+  4.829315973746716E+021
+  5.611485800564937E+021
+  6.344980941786081E+021
+  7.002285095619877E+021
+  7.565289654167396E+021
+  8.025769928955845E+021
+  8.384389580552074E+021
+  8.648801941620831E+021
+  8.831407872521608E+021
+  8.947190697661114E+021
+  9.011873111637560E+021
+  9.040492934330654E+021
+  9.046400116303151E+021
+  9.040632960982115E+021
+  9.031619503842160E+021
+  9.025151436812264E+021
+  9.024579834952049E+021
+  9.031179094635702E+021
+  9.044619378360593E+021
+  9.063483457520916E+021
+  9.085766121691552E+021
+  9.109305365231649E+021
+  9.132112410304940E+021
+  9.152587516133066E+021
+  9.169625955423595E+021
+  9.182631754083080E+021
+  9.191465821431018E+021
+  9.196358186398863E+021
+  9.197808123031620E+021
+  9.196484738592808E+021
+  9.193136070520121E+021
+  9.188516881571673E+021
+  9.183338714359568E+021
+  9.178238269158993E+021
+  6.240946245122824E+025
+  6.240933046281703E+025
+  6.241433929875718E+025
+  6.242513490608080E+025
+  6.244162991414618E+025
+  6.246272203816569E+025
+  6.248608344466363E+025
+  6.250805901016064E+025
+  6.252370127249216E+025
+  6.252698105555893E+025
+  6.251118611142250E+025
+  6.246948949562166E+025
+  6.239565040016056E+025
+  6.228478485939597E+025
+  6.213411308736772E+025
+  6.194356614866137E+025
+  6.171612280876555E+025
+  6.145774955650896E+025
+  6.117683666050076E+025
+  6.088306500542842E+025
+  6.058570281126687E+025
+  6.029141248934962E+025
+  6.000173473053761E+025
+  5.971049556310967E+025
+  5.940143959087328E+025
+  5.904642091967176E+025
+  5.860448228187624E+025
+  5.802212994400395E+025
+  5.723507662640173E+025
+  5.617167881280976E+025
+  5.475822305734067E+025
+  5.292608234163511E+025
+  5.062052128756032E+025
+  4.781054243647566E+025
+  4.449864163073729E+025
+  4.072876501504455E+025
+  3.659033310457296E+025
+  3.221622171149141E+025
+  2.777335572314911E+025
+  2.344616155328702E+025
+  1.941526320339381E+025
+  1.582915501368312E+025
+  1.276461733047354E+025
+  1.022180978301728E+025
+  8.155149069532916E+024
+  6.499661698109179E+024
+  5.186651405017405E+024
+  4.151976075092714E+024
+  3.339685666283683E+024
+  2.702989054978407E+024
+  2.203828299045428E+024
+  1.811831736160962E+024
+  1.503079199861676E+024
+  1.258902468201914E+024
+  1.064821197853462E+024
+  9.096469420396491E+023
+  7.847531905539148E+023
+  6.834936369451275E+023
+  6.007455514890688E+023
+  5.325551503567336E+023
+  4.758642659103269E+023
+  4.283008391107941E+023
+  3.880189816597879E+023
+  3.535772557200480E+023
+  3.238462841172092E+023
+  2.979388288214972E+023
+  2.751571006395844E+023
+  2.549533513800984E+023
+  2.369008297295778E+023
+  2.206730460128759E+023
+  2.060300974845845E+023
+  1.928116888888332E+023
+  1.809376211667677E+023
+  1.704181676729926E+023
+  1.613792820088936E+023
+  1.541115184221273E+023
+  1.491576312770250E+023
+  1.474629967004071E+023
+  1.506263292973172E+023
+  1.613065580863768E+023
+  1.838652982128717E+023
+  2.253511765914732E+023
+  2.969561285611010E+023
+  4.160807105575098E+023
+  6.091090761558788E+023
+  9.148707953881375E+023
+  1.388492675053333E+024
+  2.104841929585657E+024
+  3.159965074249946E+024
+  4.667829470195068E+024
+  6.748424657201086E+024
+  9.502317919075605E+024
+  1.297181993810021E+025
+  1.711382191945565E+025
+  2.180154011460557E+025
+  2.683902886069926E+025
+  3.198782534403683E+025
+  3.700175239158797E+025
+  4.166095930488768E+025
+  4.579761737690541E+025
+  4.930924867691577E+025
+  5.215964062897502E+025
+  5.437018749222841E+025
+  5.600570555480212E+025
+  5.715852535209194E+025
+  5.793361230641528E+025
+  5.843624502717427E+025
+  5.876279771958907E+025
+  5.899457160434808E+025
+  5.919435040804638E+025
+  5.940528491366816E+025
+  5.965171300184052E+025
+  5.994151450564342E+025
+  6.026956145696164E+025
+  6.062177415221428E+025
+  6.097927135216206E+025
+  6.132214219941854E+025
+  6.163247660178804E+025
+  6.189644818057000E+025
+  6.210540896786325E+025
+  6.225609190261971E+025
+  6.235011210986983E+025
+  6.239301252167207E+025
+  6.239310555959140E+025
+  6.236030524719877E+025
+  6.230505387809178E+025
+  6.223740669545331E+025
+  6.216634577822983E+025
+  6.209934588614815E+025
+  6.204216204152686E+025
+  1.492234296472933E+026
+  1.492282896393600E+026
+  1.492418168428541E+026
+  1.492644448350352E+026
+  1.492951409060976E+026
+  1.493308885180699E+026
+  1.493663238352404E+026
+  1.493935980141326E+026
+  1.494025125809340E+026
+  1.493810044850357E+026
+  1.493159982493453E+026
+  1.491945757580012E+026
+  1.490053771331772E+026
+  1.487400955032261E+026
+  1.483948658042359E+026
+  1.479713007319970E+026
+  1.474769077383733E+026
+  1.469246322016826E+026
+  1.463313205541710E+026
+  1.457149917089707E+026
+  1.450909457119318E+026
+  1.444669120255889E+026
+  1.438376219672847E+026
+  1.431793513514189E+026
+  1.424450942157498E+026
+  1.415610819351362E+026
+  1.404253561686438E+026
+  1.389090558827861E+026
+  1.368610070432617E+026
+  1.341161075611840E+026
+  1.305078381571908E+026
+  1.258849154331000E+026
+  1.201315297276365E+026
+  1.131897031137189E+026
+  1.050810916475999E+026
+  9.592425534458381E+025
+  8.594250096834498E+025
+  7.545756189994196E+025
+  6.486625963154203E+025
+  5.460103374096543E+025
+  4.508014822742224E+025
+  3.664245626647738E+025
+  2.945713247267394E+025
+  2.351467326050722E+025
+  1.870027909428386E+025
+  1.485574467444215E+025
+  1.181594520812792E+025
+  9.427873333010037E+024
+  7.558798576577478E+024
+  6.098216324162177E+024
+  4.956599327922367E+024
+  4.062757466983185E+024
+  3.360811276306520E+024
+  2.807290359009439E+024
+  2.368580713967417E+024
+  2.018788323257694E+024
+  1.738007160255872E+024
+  1.510944749015249E+024
+  1.325847417487602E+024
+  1.173668551305943E+024
+  1.047429643001064E+024
+  9.417320587764987E+023
+  8.523854179975718E+023
+  7.761255567706233E+023
+  7.104010078241603E+023
+  6.532117909631492E+023
+  6.029881881469130E+023
+  5.585002379283312E+023
+  5.187911190275998E+023
+  4.831296228213188E+023
+  4.509787937782197E+023
+  4.219798555947412E+023
+  3.959531493011718E+023
+  3.729215692735877E+023
+  3.531677437332397E+023
+  3.373451982477058E+023
+  3.266776712461600E+023
+  3.233018237394520E+023
+  3.308393260465509E+023
+  3.553269589471583E+023
+  4.066884814968113E+023
+  5.009955667439423E+023
+  6.638233640689528E+023
+  9.350276853267881E+023
+  1.375195035140910E+024
+  2.073742416336046E+024
+  3.158022107591659E+024
+  4.801632930344599E+024
+  7.228286413528006E+024
+  1.070499316077678E+025
+  1.551534155299262E+025
+  2.190123622363979E+025
+  2.997290738515870E+025
+  3.964457857247503E+025
+  5.063602682303192E+025
+  6.250350067308026E+025
+  7.469912587418529E+025
+  8.665020094124111E+025
+  9.783804544842734E+025
+  1.078587410360266E+026
+  1.164560323782400E+026
+  1.235257395647273E+026
+  1.290977989331687E+026
+  1.333050272522556E+026
+  1.363473357786155E+026
+  1.384578227527035E+026
+  1.398744026433279E+026
+  1.408183517386252E+026
+  1.414797217391044E+026
+  1.420089099274827E+026
+  1.425134888550509E+026
+  1.430593991001908E+026
+  1.436756061948214E+026
+  1.443612542984229E+026
+  1.450942507717704E+026
+  1.458401706349506E+026
+  1.465604518401692E+026
+  1.472190828653129E+026
+  1.477873187206301E+026
+  1.482463136865926E+026
+  1.485878524579469E+026
+  1.488135685353613E+026
+  1.489331641268139E+026
+  1.489621675884298E+026
+  1.489196421224579E+026
+  1.488260607007387E+026
+  1.487014784037863E+026
+  1.485641597059277E+026
+  1.484297075751198E+026
+  1.483106196515337E+026
+  2.674982850757202E+026
+  2.675072171912872E+026
+  2.675329759909261E+026
+  2.675765435232752E+026
+  2.676361382385771E+026
+  2.677062737920215E+026
+  2.677771241355365E+026
+  2.678343323518510E+026
+  2.678593535085672E+026
+  2.678304694089105E+026
+  2.677245011572502E+026
+  2.675191182577918E+026
+  2.671955687013552E+026
+  2.667415565138132E+026
+  2.661538752330438E+026
+  2.654403184970576E+026
+  2.646203555964083E+026
+  2.637240864953981E+026
+  2.627890906121663E+026
+  2.618549714709235E+026
+  2.609556737770530E+026
+  2.601099839430134E+026
+  2.593109720176270E+026
+  2.585154357436662E+026
+  2.576346162503160E+026
+  2.565275427520250E+026
+  2.549983369578135E+026
+  2.527987022876079E+026
+  2.496366783877756E+026
+  2.451925601678958E+026
+  2.391425868066862E+026
+  2.311904361974523E+026
+  2.211055077535001E+026
+  2.087652925246681E+026
+  1.941968584945119E+026
+  1.776100146752085E+026
+  1.594129421868470E+026
+  1.402013060230549E+026
+  1.207153175504859E+026
+  1.017662036002728E+026
+  8.414280119317369E+025
+  6.848872398584398E+025
+  5.513210540767888E+025
+  4.406672660882302E+025
+  3.508779766596955E+025
+  2.790722528065796E+025
+  2.222194146807522E+025
+  1.774983641234512E+025
+  1.424540276218960E+025
+  1.150373254530220E+025
+  9.358469777925595E+024
+  7.677091987817810E+024
+  6.355409547607498E+024
+  5.312250822905259E+024
+  4.484763974495001E+024
+  3.824471382545100E+024
+  3.294062371691586E+024
+  2.864842378371224E+024
+  2.514734497583200E+024
+  2.226730260787397E+024
+  1.987697707605464E+024
+  1.787469357882061E+024
+  1.618147146611327E+024
+  1.473574308963703E+024
+  1.348935145248495E+024
+  1.240452555330815E+024
+  1.145160403236754E+024
+  1.060733444181073E+024
+  9.853620690856674E+023
+  9.176629021711216E+023
+  8.566197979769078E+023
+  8.015536048812790E+023
+  7.521239616651981E+023
+  7.083734621664620E+023
+  6.708353539960963E+023
+  6.407428348273955E+023
+  6.204041649879176E+023
+  6.138473340500507E+023
+  6.278955771926936E+023
+  6.739147330609308E+023
+  7.705760934928046E+023
+  9.480961505861101E+023
+  1.254521312282748E+024
+  1.764661586708688E+024
+  2.592128770952655E+024
+  3.904412087356754E+024
+  5.939749997081266E+024
+  9.022389939406509E+024
+  1.356936359223886E+025
+  2.007710233414288E+025
+  2.907069652284805E+025
+  4.099425470003993E+025
+  5.604245497148661E+025
+  7.404109710922233E+025
+  9.445171363025354E+025
+  1.164314506912550E+026
+  1.389461802015534E+026
+  1.609202800212350E+026
+  1.813847251538120E+026
+  1.995904180684300E+026
+  2.150687609054679E+026
+  2.276385909484927E+026
+  2.373712460888476E+026
+  2.445309938293857E+026
+  2.495072360730188E+026
+  2.527504956445114E+026
+  2.547189509667433E+026
+  2.558380150137388E+026
+  2.564728093662465E+026
+  2.569121827784950E+026
+  2.573626113550639E+026
+  2.579503388779451E+026
+  2.587301131735067E+026
+  2.596987321508076E+026
+  2.608114052317096E+026
+  2.619988258037802E+026
+  2.631829833430755E+026
+  2.642901651655241E+026
+  2.652602260722701E+026
+  2.660518768003999E+026
+  2.666443111562334E+026
+  2.670358980779837E+026
+  2.672409106975638E+026
+  2.672853098538874E+026
+  2.672023757833427E+026
+  2.670286156800065E+026
+  2.668002139446944E+026
+  2.665503298282809E+026
+  2.663073422661895E+026
+  2.660939191606508E+026
+  1.950369932615371E+026
+  1.950431612183120E+026
+  1.950609668549238E+026
+  1.950910480215549E+026
+  1.951320977897198E+026
+  1.951801802035457E+026
+  1.952282518529007E+026
+  1.952659848881069E+026
+  1.952799547454644E+026
+  1.952542933928427E+026
+  1.951718306843713E+026
+  1.950156577837234E+026
+  1.947709968003814E+026
+  1.944271933018136E+026
+  1.939795653379619E+026
+  1.934307803505645E+026
+  1.927914059950666E+026
+  1.920792961883981E+026
+  1.913175388618164E+026
+  1.905308180574387E+026
+  1.897402301412316E+026
+  1.889568244546497E+026
+  1.881743803644113E+026
+  1.873621465080464E+026
+  1.864584193654064E+026
+  1.853659076483386E+026
+  1.839498194115035E+026
+  1.820395430810467E+026
+  1.794346973959051E+026
+  1.759161980876420E+026
+  1.712627766805404E+026
+  1.652729749108660E+026
+  1.577918851337487E+026
+  1.487407132607256E+026
+  1.381456431242108E+026
+  1.261607611067496E+026
+  1.130785788372000E+026
+  9.932188812206755E+025
+  8.541314892677037E+025
+  7.192254046741490E+025
+  5.940230180529120E+025
+  4.830061186643365E+025
+  3.884234935726687E+025
+  3.101687060097453E+025
+  2.467448472451971E+025
+  1.960794588650496E+025
+  1.560055607678844E+025
+  1.245130887029811E+025
+  9.985706058526850E+024
+  8.058383926864556E+024
+  6.551514986646122E+024
+  5.371364325002113E+024
+  4.444327118940679E+024
+  3.713122890155750E+024
+  3.133443690601256E+024
+  2.671146615866908E+024
+  2.299976330736294E+024
+  1.999756794689554E+024
+  1.754976622390627E+024
+  1.553693840367102E+024
+  1.386694199217400E+024
+  1.246847802832398E+024
+  1.128619247993609E+024
+  1.027695741820564E+024
+  9.407054859827360E+023
+  8.650050020230323E+023
+  7.985191711888427E+023
+  7.396217871374997E+023
+  6.870476239267017E+023
+  6.398296945817828E+023
+  5.972578519605259E+023
+  5.588575725319476E+023
+  5.243912062759893E+023
+  4.938889391860043E+023
+  4.677243199386043E+023
+  4.467610717454807E+023
+  4.326162946131412E+023
+  4.281129649296884E+023
+  4.380351782373465E+023
+  4.703557998610223E+023
+  5.381787705732819E+023
+  6.627218917017253E+023
+  8.777422983324603E+023
+  1.235834336653398E+024
+  1.816928451827956E+024
+  2.738956389257200E+024
+  4.169826390432911E+024
+  6.338329630827116E+024
+  9.539156711771989E+024
+  1.412380303469295E+025
+  2.046520991181461E+025
+  2.888084456076341E+025
+  3.951404961389925E+025
+  5.224940398812000E+025
+  6.671509828169225E+025
+  8.232406783957299E+025
+  9.835265885415414E+025
+  1.140454061355146E+026
+  1.287190578392458E+026
+  1.418425645347974E+026
+  1.530802456276417E+026
+  1.622973432283021E+026
+  1.695360884305315E+026
+  1.749743098225835E+026
+  1.788781033477112E+026
+  1.815570336239547E+026
+  1.833266748782601E+026
+  1.844802946835040E+026
+  1.852696059329387E+026
+  1.858936448936831E+026
+  1.864945939088833E+026
+  1.871593708683786E+026
+  1.879258040258604E+026
+  1.887921177586343E+026
+  1.897283213450644E+026
+  1.906880297609166E+026
+  1.916193512743878E+026
+  1.924737801780684E+026
+  1.932124755876042E+026
+  1.938097745999909E+026
+  1.942541784786746E+026
+  1.945473266413294E+026
+  1.947016399862503E+026
+  1.947373439252093E+026
+  1.946794204379367E+026
+  1.945547769644030E+026
+  1.943898086241769E+026
+  1.942085629216727E+026
+  1.940315703433535E+026
+  1.938752447450679E+026
+  1.602940175871029E+026
+  1.603012663598906E+026
+  1.603168033130471E+026
+  1.603407281960825E+026
+  1.603716368287573E+026
+  1.604061202163103E+026
+  1.604384315028932E+026
+  1.604603929681447E+026
+  1.604615882406418E+026
+  1.604299159343388E+026
+  1.603525173655773E+026
+  1.602170196361874E+026
+  1.600129965840443E+026
+  1.597334974090835E+026
+  1.593764279074673E+026
+  1.589455218920015E+026
+  1.584506234898617E+026
+  1.579070171383156E+026
+  1.573335981923662E+026
+  1.567497814998143E+026
+  1.561711974060647E+026
+  1.556044096613158E+026
+  1.550410812929224E+026
+  1.544521816434521E+026
+  1.537829434324708E+026
+  1.529493285875960E+026
+  1.518367495896367E+026
+  1.503017385390439E+026
+  1.481771796030764E+026
+  1.452816199728792E+026
+  1.414330031758756E+026
+  1.364668309562000E+026
+  1.302581391246889E+026
+  1.227456890604770E+026
+  1.139554643585197E+026
+  1.040191576481911E+026
+  9.318234996898318E+025
+  8.179727801714207E+025
+  7.029714588199142E+025
+  5.915301070707666E+025
+  4.881960431250173E+025
+  3.966460476715715E+025
+  3.187103878287116E+025
+  2.542790292438743E+025
+  2.020996651838149E+025
+  1.604500041288667E+025
+  1.275339339422645E+025
+  1.016880642320263E+025
+  8.147009713087176E+024
+  6.567975784603071E+024
+  5.334503125862327E+024
+  4.369332387765976E+024
+  3.611847121286170E+024
+  3.014913673995569E+024
+  2.542102904102962E+024
+  2.165366185233397E+024
+  1.863152248855593E+024
+  1.618913474098635E+024
+  1.419938411754590E+024
+  1.256448690766063E+024
+  1.120905580868285E+024
+  1.007480373334117E+024
+  9.116514477305632E+023
+  8.298986120420189E+023
+  7.594718012748527E+023
+  6.982165160726795E+023
+  6.444426067033434E+023
+  5.968263380734529E+023
+  5.543383193548651E+023
+  5.161920872403666E+023
+  4.818101704332898E+023
+  4.508066704159264E+023
+  4.229882134402109E+023
+  3.983791893886096E+023
+  3.772834133987319E+023
+  3.604040568215406E+023
+  3.490587440581022E+023
+  3.455494920984539E+023
+  3.537804269786701E+023
+  3.802624066373508E+023
+  4.357034558047317E+023
+  5.374529991784208E+023
+  7.131315178754071E+023
+  1.005801443963135E+024
+  1.480954538437926E+024
+  2.235295897926360E+024
+  3.406633360149036E+024
+  5.182932483764512E+024
+  7.806588025610130E+024
+  1.156715690524553E+025
+  1.677253854140404E+025
+  2.368595662694168E+025
+  3.242844409357930E+025
+  4.290885472029793E+025
+  5.482504471052302E+025
+  6.769686263925725E+025
+  8.093012998904374E+025
+  9.390240636646737E+025
+  1.060485533719149E+026
+  1.169269222577384E+026
+  1.262555170949976E+026
+  1.339173113772807E+026
+  1.399412502870650E+026
+  1.444687404965393E+026
+  1.477150710373155E+026
+  1.499327447501113E+026
+  1.513807073507087E+026
+  1.523009899973706E+026
+  1.529027280953562E+026
+  1.533527965808285E+026
+  1.537721012069881E+026
+  1.542365704206464E+026
+  1.547818956988520E+026
+  1.554109984162093E+026
+  1.561030951283224E+026
+  1.568231796359204E+026
+  1.575308199702387E+026
+  1.581874068564079E+026
+  1.587613416789332E+026
+  1.592310254167861E+026
+  1.595858238641660E+026
+  1.598254088779813E+026
+  1.599580140350806E+026
+  1.599981711727379E+026
+  1.599643673431691E+026
+  1.598768516057707E+026
+  1.597557331171582E+026
+  1.596195412156893E+026
+  1.594842996497868E+026
+  1.593630366970600E+026
+  1.610115594959221E+026
+  1.610165384522823E+026
+  1.610309626957658E+026
+  1.610553410175667E+026
+  1.610885950920336E+026
+  1.611274944881899E+026
+  1.611662567447982E+026
+  1.611963902244825E+026
+  1.612068313586364E+026
+  1.611844596621446E+026
+  1.611150102437202E+026
+  1.609843315157313E+026
+  1.607798958738696E+026
+  1.604924164680841E+026
+  1.601173554401267E+026
+  1.596560579482945E+026
+  1.591162250475671E+026
+  1.585114499164626E+026
+  1.578595935737850E+026
+  1.571798773652330E+026
+  1.564887203975360E+026
+  1.557945367680822E+026
+  1.550919038503762E+026
+  1.543556876002715E+026
+  1.535358356306206E+026
+  1.525536076194228E+026
+  1.513000074876634E+026
+  1.496371306832775E+026
+  1.474030630220776E+026
+  1.444208638927431E+026
+  1.405119916950605E+026
+  1.355141903624517E+026
+  1.293032380683407E+026
+  1.218169831587985E+026
+  1.130787896793068E+026
+  1.032161162012327E+026
+  9.246896392306516E+025
+  8.118310071223958E+025
+  6.978498883056257E+025
+  5.873936735937939E+025
+  4.849573153829622E+025
+  3.941819615073471E+025
+  3.168841960829353E+025
+  2.529593580062468E+025
+  2.011708836317211E+025
+  1.598159142642105E+025
+  1.271176068746985E+025
+  1.014297632015556E+025
+  8.132448589033377E+024
+  6.561306347720083E+024
+  5.333248864894487E+024
+  4.371702604033869E+024
+  3.616563920504310E+024
+  3.021076972240387E+024
+  2.549087478595773E+024
+  2.172744536053275E+024
+  1.870637610343283E+024
+  1.626318202524153E+024
+  1.427143905125871E+024
+  1.263383840310972E+024
+  1.127531465113170E+024
+  1.013779478877051E+024
+  9.176201483566838E+023
+  8.355419793350553E+023
+  7.648000760101529E+023
+  7.032427592405790E+023
+  6.491811877060789E+023
+  6.012920178289977E+023
+  5.585457570933625E+023
+  5.201556485678520E+023
+  4.855439455482104E+023
+  4.543246280342952E+023
+  4.263044186722906E+023
+  4.015080002292755E+023
+  3.802395338456813E+023
+  3.632022507158715E+023
+  3.517128759963687E+023
+  3.480703134761803E+023
+  3.561710883946899E+023
+  3.825099297618384E+023
+  4.377631592808281E+023
+  5.392209099644992E+023
+  7.143968594210845E+023
+  1.006167220045643E+024
+  1.479709222923069E+024
+  2.231214319587965E+024
+  3.397682633248454E+024
+  5.165864388964492E+024
+  7.776420994250868E+024
+  1.151660017051409E+025
+  1.669149991778399E+025
+  2.356140864272631E+025
+  3.224501728815251E+025
+  4.265023503281203E+025
+  5.447588316942481E+025
+  6.724495568725469E+025
+  8.036850664916680E+025
+  9.323091646725442E+025
+  1.052746656753125E+026
+  1.160656275749048E+026
+  1.253284184700730E+026
+  1.329511134898774E+026
+  1.389659102040991E+026
+  1.435155226456058E+026
+  1.468146907266458E+026
+  1.491137182051290E+026
+  1.506679732295123E+026
+  1.517148350615553E+026
+  1.524580347315228E+026
+  1.530586235806979E+026
+  1.536316029289208E+026
+  1.542472476342760E+026
+  1.549361528653912E+026
+  1.556969595640789E+026
+  1.565056088429569E+026
+  1.573249283006585E+026
+  1.581134430946259E+026
+  1.588325543327004E+026
+  1.594515885394346E+026
+  1.599506014506922E+026
+  1.603211348733618E+026
+  1.605653476522572E+026
+  1.606940759855292E+026
+  1.607244009756900E+026
+  1.606771688873548E+026
+  1.605746950636286E+026
+  1.604387921344219E+026
+  1.602892916151789E+026
+  1.601431087099621E+026
+  1.600137691209460E+026
+  5.972453736909404E+025
+  5.972447437932367E+025
+  5.972930828632549E+025
+  5.973964737732490E+025
+  5.975539942124193E+025
+  5.977550377818163E+025
+  5.979773169695231E+025
+  5.981859101184433E+025
+  5.983336170688101E+025
+  5.983629947112203E+025
+  5.982101883581566E+025
+  5.978103813885997E+025
+  5.971045036734006E+025
+  5.960465971105982E+025
+  5.946109435709104E+025
+  5.927978311002176E+025
+  5.906367219944135E+025
+  5.881856085906386E+025
+  5.855255347928767E+025
+  5.827496642989996E+025
+  5.799468942520559E+025
+  5.771807908367795E+025
+  5.744654545665656E+025
+  5.717406745576318E+025
+  5.688492789435964E+025
+  5.655198565550745E+025
+  5.613580125803130E+025
+  5.558490993795951E+025
+  5.483750242893440E+025
+  5.382472976242990E+025
+  5.247577978194864E+025
+  5.072474521299265E+025
+  4.851907100040492E+025
+  4.582899798692535E+025
+  4.265691736393019E+025
+  3.904499843930839E+025
+  3.507904280957287E+025
+  3.088654158482822E+025
+  2.662764741103244E+025
+  2.247929797464351E+025
+  1.861477919647105E+025
+  1.517655649540120E+025
+  1.223831650696218E+025
+  9.800261583003098E+024
+  7.818717891053897E+024
+  6.231406731580073E+024
+  4.972470794963368E+024
+  3.980413589464615E+024
+  3.201590009199641E+024
+  2.591135003309059E+024
+  2.112556380573311E+024
+  1.736731589370258E+024
+  1.440724067762876E+024
+  1.206633203762749E+024
+  1.020574106397180E+024
+  8.718184916376354E+023
+  7.520947347692724E+023
+  6.550300426994659E+023
+  5.757125846851965E+023
+  5.103514266352440E+023
+  4.560144266863416E+023
+  4.104273321054690E+023
+  3.718204108312530E+023
+  3.388117316658344E+023
+  3.103185707838637E+023
+  2.854903639195771E+023
+  2.636581820013463E+023
+  2.442969434710091E+023
+  2.269975642492117E+023
+  2.114470748014052E+023
+  1.974155071133671E+023
+  1.847492011498983E+023
+  1.733712716156850E+023
+  1.632915544016198E+023
+  1.546307726490642E+023
+  1.476674367200171E+023
+  1.429218267976326E+023
+  1.413002049181647E+023
+  1.443351834829712E+023
+  1.545758108566933E+023
+  1.762035367344844E+023
+  2.159759387603934E+023
+  2.846229719547760E+023
+  3.988271508334506E+023
+  5.838841816770008E+023
+  8.770221821289620E+023
+  1.331094877865610E+024
+  2.017882987676147E+024
+  3.029473777682348E+024
+  4.475136407981736E+024
+  6.469912268217129E+024
+  9.110216483915339E+024
+  1.243659976505614E+025
+  1.640769899455059E+025
+  2.090190393576176E+025
+  2.573126947820016E+025
+  3.066706434223091E+025
+  3.547314657911652E+025
+  3.993861239553154E+025
+  4.390244528954725E+025
+  4.726630741602003E+025
+  4.999542584096329E+025
+  5.211029683753806E+025
+  5.367308825715756E+025
+  5.477238703453422E+025
+  5.550893040822837E+025
+  5.598378748425954E+025
+  5.628951527999141E+025
+  5.650423654576765E+025
+  5.668832802820688E+025
+  5.688334088192948E+025
+  5.711277658877688E+025
+  5.738433513395370E+025
+  5.769321509355345E+025
+  5.802599706621297E+025
+  5.836462036820258E+025
+  5.869000014443828E+025
+  5.898493628783747E+025
+  5.923611609253213E+025
+  5.943517067837495E+025
+  5.957887645410030E+025
+  5.966868403275586E+025
+  5.970980950566542E+025
+  5.971012906970689E+025
+  5.967906322367735E+025
+  5.962655041900028E+025
+  5.956217111807375E+025
+  5.949449059514927E+025
+  5.943064242323751E+025
+  5.937612386033959E+025
+  8.985432829238874E+024
+  8.984960359911672E+024
+  8.985747627095970E+024
+  8.988020323735494E+024
+  8.991852593056786E+024
+  8.997109834303134E+024
+  9.003407352535754E+024
+  9.010093327388128E+024
+  9.016262699323765E+024
+  9.020809259069320E+024
+  9.022518115329805E+024
+  9.020194723187142E+024
+  9.012822074826745E+024
+  8.999732064069242E+024
+  8.980770817401807E+024
+  8.956432919496271E+024
+  8.927937048704171E+024
+  8.897216158203906E+024
+  8.866799811030184E+024
+  8.839575353937463E+024
+  8.818428231413634E+024
+  8.805778614564540E+024
+  8.803049270032064E+024
+  8.810115262244218E+024
+  8.824796917010939E+024
+  8.842461821215197E+024
+  8.855799594252670E+024
+  8.854826586462051E+024
+  8.827169104593965E+024
+  8.758664590396391E+024
+  8.634308425504194E+024
+  8.439553428369505E+024
+  8.161930368365066E+024
+  7.792892609497693E+024
+  7.329694882187910E+024
+  6.777008022307764E+024
+  6.147882614694144E+024
+  5.463660225991952E+024
+  4.752548448558246E+024
+  4.046848511931724E+024
+  3.379211110890083E+024
+  2.777513482752226E+024
+  2.257587601681066E+024
+  1.821878832615970E+024
+  1.464514269848758E+024
+  1.175795512160795E+024
+  9.449475167220999E+023
+  7.616294715252412E+023
+  6.166492151082843E+023
+  5.022058680213945E+023
+  4.118765786325075E+023
+  3.404808064738506E+023
+  2.838992591596348E+023
+  2.388888252958968E+023
+  2.029134335842265E+023
+  1.739986278296963E+023
+  1.506111631477891E+023
+  1.315617676598284E+023
+  1.159279376034637E+023
+  1.029933670071457E+023
+  9.220083531923187E+022
+  8.311579442997278E+022
+  7.539835897335958E+022
+  6.878184076128064E+022
+  6.305635199184947E+022
+  5.805632486972391E+022
+  5.365105944214739E+022
+  4.973762414306717E+022
+  4.623560607019583E+022
+  4.308335518390104E+022
+  4.023550684212329E+022
+  3.766172388523783E+022
+  3.534680465267012E+022
+  3.329260221439333E+022
+  3.152265887162089E+022
+  3.009117337851709E+022
+  2.909901541991707E+022
+  2.872114418199711E+022
+  2.925215015982602E+022
+  3.117985510129909E+022
+  3.530094561007899E+022
+  4.289705806538513E+022
+  5.599335837912123E+022
+  7.772185235248412E+022
+  1.128036252987863E+023
+  1.681402165750738E+023
+  2.534535336094055E+023
+  3.818235401703745E+023
+  5.698337444909075E+023
+  8.368490073726683E+023
+  1.202749415851576E+024
+  1.683310087292870E+024
+  2.283361618146864E+024
+  2.992255889755599E+024
+  3.784613341444251E+024
+  4.623381770956745E+024
+  5.464987601070836E+024
+  6.265764321031519E+024
+  6.988019531380735E+024
+  7.604410175391129E+024
+  8.099982579369110E+024
+  8.471959951246780E+024
+  8.727860164020210E+024
+  8.882708955340667E+024
+  8.956036381797878E+024
+  8.969133045834782E+024
+  8.942814751972483E+024
+  8.895770565138763E+024
+  8.843469913515276E+024
+  8.797565463868951E+024
+  8.765722917991532E+024
+  8.751812128324060E+024
+  8.756391755649645E+024
+  8.777409146056929E+024
+  8.811023516320506E+024
+  8.852452619037430E+024
+  8.896747947958154E+024
+  8.939423265281339E+024
+  8.976891768573911E+024
+  9.006700652457528E+024
+  9.027580588075813E+024
+  9.039347944964218E+024
+  9.042708850368052E+024
+  9.039015405765215E+024
+  9.030014135562772E+024
+  9.017610644803720E+024
+  9.003665799897577E+024
+  8.989838033560949E+024
+  8.977478071730078E+024
+  8.967573480831286E+024
+  3.710385765808720E+023
+  3.710073813681867E+023
+  3.710357157741065E+023
+  3.711352870270016E+023
+  3.713109651777822E+023
+  3.715580815929118E+023
+  3.718604039417673E+023
+  3.721891762434847E+023
+  3.725035363223825E+023
+  3.727526480095096E+023
+  3.728796671393723E+023
+  3.728274015488648E+023
+  3.725453207300290E+023
+  3.719973212495930E+023
+  3.711693761154815E+023
+  3.700759732601499E+023
+  3.687641279261717E+023
+  3.673137632026472E+023
+  3.658334300478294E+023
+  3.644507178589638E+023
+  3.632972891823705E+023
+  3.624892048019603E+023
+  3.621039865545743E+023
+  3.621565654724448E+023
+  3.625767590273711E+023
+  3.631911354704237E+023
+  3.637120533925151E+023
+  3.637363862401360E+023
+  3.627560664798608E+023
+  3.601821789925822E+023
+  3.553838280792797E+023
+  3.477421433561349E+023
+  3.367181879823185E+023
+  3.219308253431788E+023
+  3.032367021298332E+023
+  2.807999253227837E+023
+  2.551351635469980E+023
+  2.271071148044136E+023
+  1.978739938723186E+023
+  1.687739649602500E+023
+  1.411696722363902E+023
+  1.162335451319592E+023
+  9.464122240539449E+022
+  7.651121293336074E+022
+  6.161346636076986E+022
+  4.955563164161511E+022
+  3.989754671731910E+022
+  3.221456732909721E+022
+  2.612785106200022E+022
+  2.131497709867234E+022
+  1.750983276390812E+022
+  1.449730722135386E+022
+  1.210600933405654E+022
+  1.020074549032778E+022
+  8.675603304300812E+021
+  7.447980184124348E+021
+  6.453623194923096E+021
+  5.642612295707523E+021
+  4.976163462503291E+021
+  4.424115148494943E+021
+  3.962969293354140E+021
+  3.574374396532232E+021
+  3.243956627253868E+021
+  2.960422576637775E+021
+  2.714872853333048E+021
+  2.500278917780167E+021
+  2.311086384426683E+021
+  2.142916773039019E+021
+  1.992346812336023E+021
+  1.856750498061226E+021
+  1.734194949399423E+021
+  1.623387676762249E+021
+  1.523681506051731E+021
+  1.435156007237684E+021
+  1.358813628080475E+021
+  1.296958812299252E+021
+  1.253874581816465E+021
+  1.236980101446230E+021
+  1.258751811886463E+021
+  1.339825128775006E+021
+  1.513861767438654E+021
+  1.834950928982469E+021
+  2.388458725399641E+021
+  3.306238363041954E+021
+  4.786761868419065E+021
+  7.119709445541255E+021
+  1.071240467464881E+022
+  1.611169787047878E+022
+  2.400909249753766E+022
+  3.520922826034443E+022
+  5.053361740528077E+022
+  7.062624533328380E+022
+  9.566767011363914E+022
+  1.251880914167315E+023
+  1.581032673907529E+023
+  1.928474152837688E+023
+  2.275927951177628E+023
+  2.605207700797376E+023
+  2.900752506949330E+023
+  3.151431102852018E+023
+  3.351354885762467E+023
+  3.499744700074972E+023
+  3.600103809945245E+023
+  3.659022147843991E+023
+  3.684900905772658E+023
+  3.686795611640452E+023
+  3.673479477243138E+023
+  3.652756257465832E+023
+  3.631010960523193E+023
+  3.612971128935372E+023
+  3.601649426733718E+023
+  3.598439592132302E+023
+  3.603336588546851E+023
+  3.615246977193739E+023
+  3.632349576098070E+023
+  3.652463149151280E+023
+  3.673380208663389E+023
+  3.693134798884781E+023
+  3.710185542829106E+023
+  3.723509818909667E+023
+  3.732617396763805E+023
+  3.737500548542277E+023
+  3.738542328394755E+023
+  3.736405022570291E+023
+  3.731916227354534E+023
+  3.725963042222150E+023
+  3.719401040663640E+023
+  3.712984231489809E+023
+  3.707318700204369E+023
+  3.702838866678837E+023
+  9.930327354430286E+023
+  9.930266768063279E+023
+  9.931286372587538E+023
+  9.933538648527367E+023
+  9.937033071826200E+023
+  9.941586538296959E+023
+  9.946790080280748E+023
+  9.951999612840527E+023
+  9.956356358410958E+023
+  9.958843545886643E+023
+  9.958380687314374E+023
+  9.953950644620106E+023
+  9.944750333190297E+023
+  9.930350553719850E+023
+  9.910844473580518E+023
+  9.886959814104376E+023
+  9.860107945375313E+023
+  9.832344344214638E+023
+  9.806219976384083E+023
+  9.784512797043354E+023
+  9.769842558468184E+023
+  9.764189076624297E+023
+  9.768351587397605E+023
+  9.781401878146117E+023
+  9.800193885701768E+023
+  9.818995964963075E+023
+  9.829309389262215E+023
+  9.819929849124820E+023
+  9.777300305131460E+023
+  9.686194557872542E+023
+  9.530758738363211E+023
+  9.295915544016526E+023
+  8.969093582746567E+023
+  8.542173330850031E+023
+  8.013441519148340E+023
+  7.389232226888982E+023
+  6.684843123763423E+023
+  5.924308144621712E+023
+  5.138742470307037E+023
+  4.363273079686355E+023
+  3.632980868010641E+023
+  2.977429319714882E+023
+  2.412971420470692E+023
+  1.941494058588035E+023
+  1.556000982509510E+023
+  1.245500954274317E+023
+  9.979744137549350E+022
+  8.019859308049763E+022
+  6.474314016596126E+022
+  5.257767835717056E+022
+  4.300241155973591E+022
+  3.545495458535447E+022
+  2.948963393252357E+022
+  2.475668466034162E+022
+  2.098342260800363E+022
+  1.795816718868319E+022
+  1.551700165289784E+022
+  1.353312878372668E+022
+  1.190845306037545E+022
+  1.056700025891593E+022
+  9.449816103849392E+021
+  8.511035622910009E+021
+  7.714868317170760E+021
+  7.033293916329134E+021
+  6.444306619568120E+021
+  5.930581719805057E+021
+  5.478467758436796E+021
+  5.077230780899293E+021
+  4.718496165696820E+021
+  4.395849519580628E+021
+  4.104573267461766E+021
+  3.841512336390017E+021
+  3.605084125101328E+021
+  3.395479588037566E+021
+  3.215150784062492E+021
+  3.069755760590365E+021
+  2.969848015918118E+021
+  2.933772503132668E+021
+  2.992482467270735E+021
+  3.197336784624365E+021
+  3.632374952006323E+021
+  4.433054567969546E+021
+  5.813848609881689E+021
+  8.107162702939964E+021
+  1.181523711937825E+022
+  1.767421551501874E+022
+  2.672421306560837E+022
+  4.036960879213532E+022
+  6.039879359640066E+022
+  8.891237887047677E+022
+  1.280865617987102E+023
+  1.796826240489574E+023
+  2.443127218665678E+023
+  3.209421548984759E+023
+  4.069498667088621E+023
+  4.984353979610888E+023
+  5.907535918904324E+023
+  6.791943342277354E+023
+  7.596340204091067E+023
+  8.290151687663201E+023
+  8.855817647767706E+023
+  9.288748961864063E+023
+  9.595475321648092E+023
+  9.790783504119407E+023
+  9.894577799127768E+023
+  9.928978436579515E+023
+  9.915934047418630E+023
+  9.875437579339021E+023
+  9.824325795627030E+023
+  9.775597839053564E+023
+  9.738180681936640E+023
+  9.717072721765735E+023
+  9.713795661274688E+023
+  9.727075178695772E+023
+  9.753657604742150E+023
+  9.789161599901303E+023
+  9.828868108298748E+023
+  9.868371028940582E+023
+  9.904041279680383E+023
+  9.933290345826832E+023
+  9.954648407741426E+023
+  9.967692986162258E+023
+  9.972876174257863E+023
+  9.971300581443436E+023
+  9.964484091078385E+023
+  9.954137137567742E+023
+  9.941967737380984E+023
+  9.929529429882962E+023
+  9.918118552439360E+023
+  9.908717812085548E+023
+  1.242240005891924E+023
+  1.242007730375437E+023
+  1.242051344066866E+023
+  1.242435234394986E+023
+  1.243195163978435E+023
+  1.244325582196055E+023
+  1.245769313847359E+023
+  1.247411310301542E+023
+  1.249077919995151E+023
+  1.250543201809484E+023
+  1.251543021067674E+023
+  1.251796708442604E+023
+  1.251035242374773E+023
+  1.249033907253732E+023
+  1.245646243396384E+023
+  1.240835130048092E+023
+  1.234696208572864E+023
+  1.227468681009042E+023
+  1.219528975680928E+023
+  1.211364018304548E+023
+  1.203522922281307E+023
+  1.196548655147233E+023
+  1.190894289975621E+023
+  1.186831318487564E+023
+  1.184359682406799E+023
+  1.183130308760049E+023
+  1.182390926050994E+023
+  1.180965015656980E+023
+  1.177272329315922E+023
+  1.169397800500943E+023
+  1.155213785088121E+023
+  1.132557629657565E+023
+  1.099461283018457E+023
+  1.054420690418121E+023
+  9.966795036255324E+022
+  9.264856253731698E+022
+  8.452648591246570E+022
+  7.556513719495350E+022
+  6.613285369723155E+022
+  5.666704816675319E+022
+  4.762298497346412E+022
+  3.940097466378134E+022
+  3.224046417562373E+022
+  2.619561052335571E+022
+  2.120252834980086E+022
+  1.714061366406941E+022
+  1.387069925220826E+022
+  1.125651177145504E+022
+  9.175230694612525E+021
+  7.521483640924234E+021
+  6.207699521530536E+021
+  5.162650066579961E+021
+  4.329255571500781E+021
+  3.662245159503537E+021
+  3.125967289680254E+021
+  2.692476384870396E+021
+  2.339928519452291E+021
+  2.051271986941055E+021
+  1.813197914774382E+021
+  1.615309992882190E+021
+  1.449473618558543E+021
+  1.309309183903597E+021
+  1.189799647680313E+021
+  1.086987887391014E+021
+  9.977441653102687E+020
+  9.195881992197048E+020
+  8.505537833329478E+020
+  7.890867228556582E+020
+  7.339691604228572E+020
+  6.842653783156834E+020
+  6.392861117818899E+020
+  5.985706402579665E+020
+  5.618888926373435E+020
+  5.292701656224401E+020
+  5.010717644594926E+020
+  4.781112898604331E+020
+  4.619022379689125E+020
+  4.550562851432656E+020
+  4.619494103910152E+020
+  4.897944028071629E+020
+  5.503182476102175E+020
+  6.623023045026037E+020
+  8.552872712838066E+020
+  1.174734698418068E+021
+  1.688802800964675E+021
+  2.496527413855997E+021
+  3.736450596484616E+021
+  5.593445864907201E+021
+  8.299540909294209E+021
+  1.212201723793085E+022
+  1.732946130892282E+022
+  2.412495230564349E+022
+  3.254959183496957E+022
+  4.242200069281673E+022
+  5.335508288386731E+022
+  6.480580565252631E+022
+  7.615338349970392E+022
+  8.679289072916223E+022
+  9.622042002993863E+022
+  1.040913191429318E+023
+  1.102435345092199E+023
+  1.146886129102853E+023
+  1.175797546483854E+023
+  1.191684019687233E+023
+  1.197592619118801E+023
+  1.196703416664432E+023
+  1.192012182081106E+023
+  1.186103240127223E+023
+  1.181007104803095E+023
+  1.178132820899270E+023
+  1.178264539890570E+023
+  1.181612194285402E+023
+  1.187905359338152E+023
+  1.196517368278726E+023
+  1.206604508035712E+023
+  1.217244077966943E+023
+  1.227556285627330E+023
+  1.236798557866843E+023
+  1.244426093484990E+023
+  1.250118038302802E+023
+  1.253773289460644E+023
+  1.255483025442272E+023
+  1.255488557131488E+023
+  1.254132956713055E+023
+  1.251813076935349E+023
+  1.248935933272318E+023
+  1.245881916263878E+023
+  1.242977015895251E+023
+  1.240474984606546E+023
+  1.238549049315640E+023
+  1.078352852146620E+022
+  1.078221522275172E+022
+  1.078287041718302E+022
+  1.078591352945820E+022
+  1.079154755069107E+022
+  1.079966901809893E+022
+  1.080979791286737E+022
+  1.082103995749110E+022
+  1.083209167426006E+022
+  1.084129925645920E+022
+  1.084677581219513E+022
+  1.084657374674265E+022
+  1.083890270221621E+022
+  1.082237569758002E+022
+  1.079625740149573E+022
+  1.076068127529227E+022
+  1.071679808825771E+022
+  1.066681791546756E+022
+  1.061391240141912E+022
+  1.056195497027190E+022
+  1.051509391538237E+022
+  1.047717543635727E+022
+  1.045105770969634E+022
+  1.043787904613225E+022
+  1.043635924202357E+022
+  1.044222078987623E+022
+  1.044781534982437E+022
+  1.044203288707818E+022
+  1.041055950255719E+022
+  1.033653745866631E+022
+  1.020166559432066E+022
+  9.987753184366126E+021
+  9.678694079384938E+021
+  9.262749748984690E+021
+  8.734916395201409E+021
+  8.099016463275707E+021
+  7.369039159104257E+021
+  6.569225766053352E+021
+  5.732526123123042E+021
+  4.897376211456136E+021
+  4.103219651356172E+021
+  3.384258114700551E+021
+  2.760465533157247E+021
+  2.235709546199366E+021
+  1.803717359529362E+021
+  1.453441884005118E+021
+  1.172373936057627E+021
+  9.483848749994242E+020
+  7.706167033887229E+020
+  6.298029946932414E+020
+  5.182773682045606E+020
+  4.298293092543975E+020
+  3.595005071441918E+020
+  3.033722777380635E+020
+  2.583689558633296E+020
+  2.220874518871827E+020
+  1.926552195548604E+020
+  1.686149253927589E+020
+  1.488324383458995E+020
+  1.324243277932269E+020
+  1.187012418325846E+020
+  1.071239788160256E+020
+  9.726957679207986E+019
+  8.880523975770395E+019
+  8.146835987746787E+019
+  7.505126922085122E+019
+  6.938966325940335E+019
+  6.435388855414455E+019
+  5.984249132347768E+019
+  5.577759921814632E+019
+  5.210187780166864E+019
+  4.877699462415897E+019
+  4.578377643011647E+019
+  4.312461477920664E+019
+  4.082924347249982E+019
+  3.896589369454814E+019
+  3.766118666668535E+019
+  3.713414306363227E+019
+  3.775257900468850E+019
+  4.012406666164001E+019
+  4.523849901542972E+019
+  5.468454882762055E+019
+  7.096639811980469E+019
+  9.794676416454784E+019
+  1.414315516510022E+020
+  2.098810262020868E+020
+  3.151692505730470E+020
+  4.732029967192453E+020
+  7.040429144054069E+020
+  1.030948658490325E+021
+  1.477536011974216E+021
+  2.062089435376329E+021
+  2.789252643234583E+021
+  3.644675414607572E+021
+  4.596201721546184E+021
+  5.597885093758964E+021
+  6.596496540824404E+021
+  7.539467940095694E+021
+  8.382245320462828E+021
+  9.093448920226930E+021
+  9.657107927623784E+021
+  1.007213262224012E+022
+  1.034978481354548E+022
+  1.051010732848577E+022
+  1.057815714053202E+022
+  1.058061464229139E+022
+  1.054305829548270E+022
+  1.048798330839507E+022
+  1.043352596538817E+022
+  1.039281160166232E+022
+  1.037383921084834E+022
+  1.037981911720396E+022
+  1.040987541864877E+022
+  1.046000968530568E+022
+  1.052420441115080E+022
+  1.059553537471387E+022
+  1.066717020501507E+022
+  1.073315805401415E+022
+  1.078895656781445E+022
+  1.083168672848301E+022
+  1.086014365630921E+022
+  1.087461717099674E+022
+  1.087658921939106E+022
+  1.086837538369661E+022
+  1.085276346391001E+022
+  1.083268093661789E+022
+  1.081091130218361E+022
+  1.078987762429285E+022
+  1.077150110576841E+022
+  1.075713146449652E+022
+  5.849281595244166E+020
+  5.848735157876967E+020
+  5.849160935138547E+020
+  5.850754779711618E+020
+  5.853602384947960E+020
+  5.857635046878119E+020
+  5.862596063949326E+020
+  5.868024066018291E+020
+  5.873258380756523E+020
+  5.877471933269205E+020
+  5.879733720483676E+020
+  5.879098801251332E+020
+  5.874720475445812E+020
+  5.865975324367904E+020
+  5.852587320622674E+020
+  5.834733604360613E+020
+  5.813112517387646E+020
+  5.788954525971723E+020
+  5.763959361719893E+020
+  5.740148642282093E+020
+  5.719632423126112E+020
+  5.704299761123782E+020
+  5.695455838562818E+020
+  5.693439446766533E+020
+  5.697262684038360E+020
+  5.704318308854613E+020
+  5.710199228313245E+020
+  5.708670259530147E+020
+  5.691826346790320E+020
+  5.650464937370646E+020
+  5.574692170410839E+020
+  5.454768975119776E+020
+  5.282178010512471E+020
+  5.050849870020931E+020
+  4.758425685412979E+020
+  4.407361061434286E+020
+  4.005615304363464E+020
+  3.566656737411185E+020
+  3.108588094140156E+020
+  2.652372591128691E+020
+  2.219396453263255E+020
+  1.828093830027042E+020
+  1.489118434997783E+020
+  1.204379387422902E+020
+  9.703076145070966E+019
+  7.807773652788781E+019
+  6.289034920681217E+019
+  5.080367598565609E+019
+  4.122408086432577E+019
+  3.364604042463099E+019
+  2.765209895389958E+019
+  2.290464496090679E+019
+  1.913455990922979E+019
+  1.612946771102252E+019
+  1.372291742946793E+019
+  1.178503569469222E+019
+  1.021475682108078E+019
+  8.933526947297966E+018
+  7.880290573305475E+018
+  7.007546765174483E+018
+  6.278274011189328E+018
+  5.663547947171104E+018
+  5.140704880397480E+018
+  4.691931532277246E+018
+  4.303185771670326E+018
+  3.963373734747859E+018
+  3.663725677915644E+018
+  3.397326612830470E+018
+  3.158768931458673E+018
+  2.943903794094576E+018
+  2.749677227457672E+018
+  2.574047212065356E+018
+  2.415991630742602E+018
+  2.275636807292397E+018
+  2.154566862282666E+018
+  2.056421507286253E+018
+  1.987962674671799E+018
+  1.960899082521224E+018
+  1.994913721320175E+018
+  2.122550572796631E+018
+  2.396880769601614E+018
+  2.903155407843720E+018
+  3.775879870156198E+018
+  5.222737768546842E+018
+  7.556233609378899E+018
+  1.123230416796091E+019
+  1.689176302236161E+019
+  2.539448549891901E+019
+  3.782711749371109E+019
+  5.545304553300540E+019
+  7.956051456607999E+019
+  1.111565842994765E+020
+  1.505177328777141E+020
+  1.968970803090851E+020
+  2.485827578170578E+020
+  3.031088008162733E+020
+  3.576019065046238E+020
+  4.092082803410042E+020
+  4.554917495255530E+020
+  4.947161560310257E+020
+  5.259713861934217E+020
+  5.491505223391384E+020
+  5.648181560247833E+020
+  5.740211688040634E+020
+  5.780874733250342E+020
+  5.784438142370131E+020
+  5.764685422152710E+020
+  5.733838756348328E+020
+  5.701857591361604E+020
+  5.676069936462679E+020
+  5.661090065644740E+020
+  5.658978296300487E+020
+  5.669596413790354E+020
+  5.691104583852770E+020
+  5.720536160427000E+020
+  5.754381655499919E+020
+  5.789117043564264E+020
+  5.821625710631294E+020
+  5.849484795673937E+020
+  5.871109881607404E+020
+  5.885771740625195E+020
+  5.893512520230654E+020
+  5.894996047675105E+020
+  5.891327313959959E+020
+  5.883868912072111E+020
+  5.874071083453686E+020
+  5.863325900686049E+020
+  5.852855374765957E+020
+  5.843637711166702E+020
+  5.836370010332414E+020
+  3.030500186585953E+026
+  3.030726364406062E+026
+  3.031125077831904E+026
+  3.031692811839364E+026
+  3.032394573562556E+026
+  3.033155917476771E+026
+  3.033859480055250E+026
+  3.034347578221064E+026
+  3.034431748532998E+026
+  3.033910467464605E+026
+  3.032594838517540E+026
+  3.030340405626170E+026
+  3.027082240175757E+026
+  3.022869212801776E+026
+  3.017891986971318E+026
+  3.012498373045610E+026
+  3.007189551556097E+026
+  3.002591399123239E+026
+  2.999396872007502E+026
+  2.998278241458468E+026
+  2.999771821101523E+026
+  3.004142248650274E+026
+  3.011237705158261E+026
+  3.020350926837540E+026
+  3.030102888502372E+026
+  3.038366375686145E+026
+  3.042245552439343E+026
+  3.038125699210615E+026
+  3.021805189421162E+026
+  2.988719586264088E+026
+  2.934264453961977E+026
+  2.854216826702500E+026
+  2.745242369232932E+026
+  2.605453936659040E+026
+  2.434957908296743E+026
+  2.236292380422768E+026
+  2.014637548084072E+026
+  1.777680604769949E+026
+  1.535061556248066E+026
+  1.297416766808452E+026
+  1.075157832755731E+026
+  8.768668627645001E+025
+  7.070793280296985E+025
+  5.660044139005766E+025
+  4.512448784867966E+025
+  3.592742701232195E+025
+  2.863223081638779E+025
+  2.288475911304905E+025
+  1.837493679418858E+025
+  1.484278664556615E+025
+  1.207648374677771E+025
+  9.906785971645702E+024
+  8.200306000678896E+024
+  6.852907916389265E+024
+  5.783815331968354E+024
+  4.930631515889356E+024
+  4.245271837629166E+024
+  3.690716408406012E+024
+  3.238458018043564E+024
+  2.866518618864849E+024
+  2.557919926367768E+024
+  2.299510994321666E+024
+  2.081073281360821E+024
+  1.894639750226284E+024
+  1.733978239335496E+024
+  1.594200640622566E+024
+  1.471468504961257E+024
+  1.362772913827741E+024
+  1.265772232784116E+024
+  1.178676207994654E+024
+  1.100169381115002E+024
+  1.029371721573128E+024
+  9.658406949285172E+023
+  9.096281024725972E+023
+  8.614189878261426E+023
+  8.228016690836360E+023
+  7.967516097684998E+023
+  7.884626350442339E+023
+  8.067328700923676E+023
+  8.662148491140988E+023
+  9.909703043229540E+023
+  1.219919611211805E+024
+  1.614909329254598E+024
+  2.272161004856193E+024
+  3.337663074712053E+024
+  5.026380611867572E+024
+  7.643629059097145E+024
+  1.160415489796334E+025
+  1.744001122981560E+025
+  2.578218396728432E+025
+  3.729395797138909E+025
+  5.252870358736033E+025
+  7.171294210308466E+025
+  9.459371901511302E+025
+  1.204464800296331E+026
+  1.481550000086402E+026
+  1.763602808758068E+026
+  2.036563816597669E+026
+  2.287832523585990E+026
+  2.507737213015747E+026
+  2.690315105688970E+026
+  2.833394258499032E+026
+  2.938132292349544E+026
+  3.008236820475305E+026
+  3.049080449144290E+026
+  3.066864973406147E+026
+  3.067920903722566E+026
+  3.058173211054790E+026
+  3.042770563874316E+026
+  3.025860762424862E+026
+  3.010492074043685E+026
+  2.998621269306612E+026
+  2.991209511056468E+026
+  2.988385264926290E+026
+  2.989650072378316E+026
+  2.994100623215075E+026
+  3.000641192820398E+026
+  3.008165007693996E+026
+  3.015690637094526E+026
+  3.022448086078185E+026
+  3.027916912430207E+026
+  3.031824430467725E+026
+  3.034115709130683E+026
+  3.034908079067725E+026
+  3.034440457441962E+026
+  3.033023508517271E+026
+  3.030994607418989E+026
+  3.028681827319785E+026
+  3.026378689603898E+026
+  3.024328735970035E+026
+  2.905614906915253E+026
+  2.905876015023851E+026
+  2.906267015226091E+026
+  2.906774433801590E+026
+  2.907357646856066E+026
+  2.907942563152095E+026
+  2.908419325290774E+026
+  2.908645319153019E+026
+  2.908454152405893E+026
+  2.907671652932181E+026
+  2.906138611065915E+026
+  2.903738529394638E+026
+  2.900427787614077E+026
+  2.896264562684946E+026
+  2.891431644814336E+026
+  2.886247532621013E+026
+  2.881160134287706E+026
+  2.876718106256359E+026
+  2.873516445669082E+026
+  2.872115521989892E+026
+  2.872936182363761E+026
+  2.876137502050135E+026
+  2.881487568974343E+026
+  2.888240730254485E+026
+  2.895036471694160E+026
+  2.899835358317741E+026
+  2.899906466468469E+026
+  2.891879049021020E+026
+  2.871869352547205E+026
+  2.835691570731388E+026
+  2.779158865152049E+026
+  2.698474084557077E+026
+  2.590697620182684E+026
+  2.454259864294246E+026
+  2.289458548519342E+026
+  2.098851680010204E+026
+  1.887435613014062E+026
+  1.662500876461733E+026
+  1.433100512208004E+026
+  1.209150256627273E+026
+  1.000291517832563E+026
+  8.144078123282920E+025
+  6.555842843689928E+025
+  5.238778127471145E+025
+  4.169372772025497E+025
+  3.313852529061927E+025
+  2.636417249271561E+025
+  2.103605374246280E+025
+  1.686220673130091E+025
+  1.359851637182014E+025
+  1.104655079653271E+025
+  9.048102506763068E+024
+  7.478722731464249E+024
+  6.241430501659988E+024
+  5.261129259697956E+024
+  4.479905639156901E+024
+  3.853201071365005E+024
+  3.346763125842851E+024
+  2.934254964701366E+024
+  2.595401128712909E+024
+  2.314560509030734E+024
+  2.079634300750100E+024
+  1.881233776642143E+024
+  1.712048055038035E+024
+  1.566365071527699E+024
+  1.439709665191827E+024
+  1.328571270068150E+024
+  1.230200496822738E+024
+  1.142459312355219E+024
+  1.063714058083129E+024
+  9.927647519089762E+023
+  9.288086826405651E+023
+  8.714421418181061E+023
+  8.207125414167485E+023
+  7.772460301729915E+023
+  7.424957868143508E+023
+  7.191872355871481E+023
+  7.120833972449245E+023
+  7.292620504793791E+023
+  7.841912647661774E+023
+  8.990122317062908E+023
+  1.109578882718617E+024
+  1.472931388076194E+024
+  2.077924119512610E+024
+  3.059552156687926E+024
+  4.616896788531925E+024
+  7.033207175621615E+024
+  1.069404346388265E+025
+  1.609526191170613E+025
+  2.382687829713833E+025
+  3.451225497921746E+025
+  4.867690600384381E+025
+  6.654703611970561E+025
+  8.790614728643949E+025
+  1.120994152396614E+026
+  1.381046377008527E+026
+  1.646676066154377E+026
+  1.904821860872445E+026
+  2.143691507455762E+026
+  2.354139189453162E+026
+  2.530412397605526E+026
+  2.670254154105448E+026
+  2.774499081691593E+026
+  2.846368726037730E+026
+  2.890662718941255E+026
+  2.912989973542872E+026
+  2.919121281570268E+026
+  2.914493381991754E+026
+  2.903862932581109E+026
+  2.891094780151342E+026
+  2.879065779271198E+026
+  2.869666314893563E+026
+  2.863882127276647E+026
+  2.861937443968053E+026
+  2.863477590320540E+026
+  2.867767176656527E+026
+  2.873880547790563E+026
+  2.880865205297206E+026
+  2.887865639893698E+026
+  2.894202652025876E+026
+  2.899410034864756E+026
+  2.903235618213731E+026
+  2.905617001614650E+026
+  2.906643309164482E+026
+  2.906512149304591E+026
+  2.905487026201607E+026
+  2.903858639733535E+026
+  2.901913887641356E+026
+  2.899914094957102E+026
+  2.898081490116843E+026
+  3.176170462289236E+026
+  3.175681819643299E+026
+  3.175880680351640E+026
+  3.176918307929929E+026
+  3.178872813428592E+026
+  3.181719043179903E+026
+  3.185305365463303E+026
+  3.189341628726439E+026
+  3.193401866305767E+026
+  3.196945364609555E+026
+  3.199357569001939E+026
+  3.200009707657486E+026
+  3.198333794949878E+026
+  3.193907016385935E+026
+  3.186536579705567E+026
+  3.176333709580068E+026
+  3.163764049143237E+026
+  3.149661633393006E+026
+  3.135195233426296E+026
+  3.121779608825372E+026
+  3.110930070828280E+026
+  3.104066240097012E+026
+  3.102278955754650E+026
+  3.106081619239809E+026
+  3.115172528228062E+026
+  3.128237105249123E+026
+  3.142818264062789E+026
+  3.155280231326877E+026
+  3.160887155852691E+026
+  3.154013657512248E+026
+  3.128499681532393E+026
+  3.078154380584860E+026
+  2.997399490093297E+026
+  2.882017983491172E+026
+  2.729937260428893E+026
+  2.541931836496424E+026
+  2.322091337149503E+026
+  2.077887598008250E+026
+  1.819713981334415E+026
+  1.559872739371777E+026
+  1.311139479332609E+026
+  1.084738147054458E+026
+  8.874131657744270E+025
+  7.207565960243341E+025
+  5.830686036380417E+025
+  4.710577441414625E+025
+  3.809022244995577E+025
+  3.088488741052278E+025
+  2.515094702673815E+025
+  2.059742404996737E+025
+  1.698235654556363E+025
+  1.410887997603572E+025
+  1.181922226025150E+025
+  9.988264061893307E+024
+  8.517495874042861E+024
+  7.329728844701933E+024
+  6.364655761278431E+024
+  5.575225971693371E+024
+  4.924739455976325E+024
+  4.384547530988969E+024
+  3.932250605265255E+024
+  3.550295386071747E+024
+  3.224888811419353E+024
+  2.945160760526240E+024
+  2.702520989395505E+024
+  2.490167263005770E+024
+  2.302711240456866E+024
+  2.135896490096642E+024
+  1.986389435601699E+024
+  1.851629595980485E+024
+  1.729730884573183E+024
+  1.619431894049289E+024
+  1.520101274853233E+024
+  1.431816315973228E+024
+  1.355551282495198E+024
+  1.293540689277552E+024
+  1.249926523292021E+024
+  1.231863638504426E+024
+  1.251350554189468E+024
+  1.328178004364244E+024
+  1.494542012051497E+024
+  1.802032659986161E+024
+  2.331832412117200E+024
+  3.208931454353069E+024
+  4.620800213300375E+024
+  6.839949188883584E+024
+  1.024774171043227E+025
+  1.535325122172390E+025
+  2.279556570260809E+025
+  3.331096077505442E+025
+  4.763914770486126E+025
+  6.633868427971756E+025
+  8.952027349768111E+025
+  1.166786374498285E+026
+  1.467371684942940E+026
+  1.781842347380751E+026
+  2.092888110948589E+026
+  2.383598014581676E+026
+  2.639830439980256E+026
+  2.851846327514014E+026
+  3.014980305733641E+026
+  3.129415526695998E+026
+  3.199318676226004E+026
+  3.231651278403487E+026
+  3.234931005899417E+026
+  3.218125513164943E+026
+  3.189768534752303E+026
+  3.157320326090448E+026
+  3.126757943890796E+026
+  3.102368122737559E+026
+  3.086714880450803E+026
+  3.080755516536346E+026
+  3.084077006159892E+026
+  3.095219361432571E+026
+  3.112046076313484E+026
+  3.132118210683287E+026
+  3.153031017310696E+026
+  3.172680977271330E+026
+  3.189444796235652E+026
+  3.202266808897652E+026
+  3.210663967625516E+026
+  3.214666360460732E+026
+  3.214715693912447E+026
+  3.211544193488041E+026
+  3.206051763447177E+026
+  3.199192417064821E+026
+  3.191876990730191E+026
+  3.184898288750447E+026
+  3.178881475539255E+026
+  3.174259057718756E+026
+  3.364809653078032E+026
+  3.364746874945555E+026
+  3.365080294272459E+026
+  3.365870625868366E+026
+  3.367127877021362E+026
+  3.368793164537272E+026
+  3.370726041100054E+026
+  3.372700083108858E+026
+  3.374408804778908E+026
+  3.375484280076162E+026
+  3.375529048319135E+026
+  3.374159803866257E+026
+  3.371059860416918E+026
+  3.366035512080646E+026
+  3.359069323782873E+026
+  3.350361793372591E+026
+  3.340352109514387E+026
+  3.329709058784441E+026
+  3.319284780208495E+026
+  3.310027274938712E+026
+  3.302852315026443E+026
+  3.298481198596313E+026
+  3.297256841201523E+026
+  3.298955965957226E+026
+  3.302618740487236E+026
+  3.306418578753013E+026
+  3.307594055960228E+026
+  3.302462630264532E+026
+  3.286532987166633E+026
+  3.254729703324447E+026
+  3.201739742769791E+026
+  3.122482716132755E+026
+  3.012692543687258E+026
+  2.869574339811358E+026
+  2.692466758215307E+026
+  2.483401644623856E+026
+  2.247422185362611E+026
+  1.992517687797244E+026
+  1.729077736134763E+026
+  1.468868120878192E+026
+  1.223669975421386E+026
+  1.003437492994266E+026
+  8.137001602484765E+025
+  6.551274998652842E+025
+  5.253993053578006E+025
+  4.208464460615826E+025
+  3.374477368636945E+025
+  2.713726104857179E+025
+  2.192333406539344E+025
+  1.781664027091233E+025
+  1.458220459716897E+025
+  1.203106601779215E+025
+  1.001338204071519E+025
+  8.411481500258744E+024
+  7.133567669034908E+024
+  6.108335436981748E+024
+  5.280534541586587E+024
+  4.607399734854715E+024
+  4.055825590094852E+024
+  3.600156461754094E+024
+  3.220472052728345E+024
+  2.901265583119943E+024
+  2.630429314116861E+024
+  2.398478722034640E+024
+  2.197961012142824E+024
+  2.023005693281336E+024
+  1.868984720641635E+024
+  1.732257557289289E+024
+  1.609982839383255E+024
+  1.499983705262933E+024
+  1.400658937569796E+024
+  1.310937720071467E+024
+  1.230283169825033E+024
+  1.158760498864658E+024
+  1.097202063021827E+024
+  1.047527080601858E+024
+  1.013313117686534E+024
+  1.000775422943067E+024
+  1.020395303265606E+024
+  1.089555078124598E+024
+  1.236684253959529E+024
+  1.507585042952137E+024
+  1.974742567912674E+024
+  2.750443167437918E+024
+  4.004251377588468E+024
+  5.984553291688556E+024
+  9.042065108345755E+024
+  1.364996536999597E+025
+  2.041026471819493E+025
+  3.002923900290637E+025
+  4.323729240889917E+025
+  6.062341367126922E+025
+  8.238795388890803E+025
+  1.081758918650124E+026
+  1.370987775838637E+026
+  1.678397159940739E+026
+  1.988347084193390E+026
+  2.285021432027359E+026
+  2.554619042746796E+026
+  2.786958491707543E+026
+  2.976255708757120E+026
+  3.121093386896575E+026
+  3.223783317873393E+026
+  3.289392404507775E+026
+  3.324679164732622E+026
+  3.337114031591660E+026
+  3.334075675248827E+026
+  3.322252777743855E+026
+  3.307244084654131E+026
+  3.293334688439941E+026
+  3.283423958841881E+026
+  3.279081607965753E+026
+  3.280707849146478E+026
+  3.287770230714099E+026
+  3.299085205700741E+026
+  3.313109812367434E+026
+  3.328210490261405E+026
+  3.342882799520287E+026
+  3.355906292255600E+026
+  3.366430270509210E+026
+  3.373996047506536E+026
+  3.378508351784369E+026
+  3.380172538683594E+026
+  3.379414878645284E+026
+  3.376799690353305E+026
+  3.372951407552703E+026
+  3.368486716640263E+026
+  3.363961872677421E+026
+  3.359837347722321E+026
+  3.356458747205306E+026
+  3.182835659996629E+026
+  3.182970590874010E+026
+  3.183370364692535E+026
+  3.184055324811505E+026
+  3.185005872966974E+026
+  3.186150815101696E+026
+  3.187360975141406E+026
+  3.188450158920323E+026
+  3.189184819780163E+026
+  3.189304071910831E+026
+  3.188550034152237E+026
+  3.186706600485893E+026
+  3.183643447539059E+026
+  3.179360538364871E+026
+  3.174026681148897E+026
+  3.168004523730086E+026
+  3.161854050238223E+026
+  3.156307327256965E+026
+  3.152209117970614E+026
+  3.150421205297950E+026
+  3.151692731496939E+026
+  3.156504088957324E+026
+  3.164897098718011E+026
+  3.176308493373326E+026
+  3.189426329474998E+026
+  3.202089546272605E+026
+  3.211249680717678E+026
+  3.213011450202284E+026
+  3.202766326707358E+026
+  3.175430586798842E+026
+  3.125795647771411E+026
+  3.048991370049500E+026
+  2.941049169712060E+026
+  2.799528640183949E+026
+  2.624139031052657E+026
+  2.417250566045006E+026
+  2.184162642749265E+026
+  1.932995573714085E+026
+  1.674118407802966E+026
+  1.419123445872523E+026
+  1.179491903867750E+026
+  9.648170360640272E+025
+  7.803279959142209E+025
+  6.265213439749087E+025
+  5.010054615505286E+025
+  4.001045299073274E+025
+  3.198283930038116E+025
+  2.563968376147150E+025
+  2.064800255862314E+025
+  1.672727417003892E+025
+  1.364799966806814E+025
+  1.122614464329943E+025
+  9.316173663289546E+024
+  7.804106110753007E+024
+  6.601262024478171E+024
+  5.638940668054559E+024
+  4.864051072951190E+024
+  4.235608147190130E+024
+  3.721968219937403E+024
+  3.298672816576458E+024
+  2.946780641987223E+024
+  2.651584990202010E+024
+  2.401631926859603E+024
+  2.187971293234902E+024
+  2.003587006621480E+024
+  1.842965118898480E+024
+  1.701767799522177E+024
+  1.576589156126162E+024
+  1.464775037513180E+024
+  1.364294222646335E+024
+  1.273653337792262E+024
+  1.191853277991923E+024
+  1.118391930724004E+024
+  1.053328162763444E+024
+  9.974376048190538E+023
+  9.525150213041826E+023
+  9.219154799307694E+023
+  9.114828546122275E+023
+  9.310957755003895E+023
+  9.971732583887045E+023
+  1.136625090844862E+024
+  1.392892847389539E+024
+  1.834866617648977E+024
+  2.569492541379032E+024
+  3.758643073554414E+024
+  5.640036208632884E+024
+  8.550275004760272E+024
+  1.294497236940588E+025
+  1.940604229812784E+025
+  2.861959657883547E+025
+  4.130047334568915E+025
+  5.803403417848095E+025
+  7.903757864741563E+025
+  1.039959662191701E+026
+  1.320764866473874E+026
+  1.620236159417762E+026
+  1.923287526740409E+026
+  2.214491504463854E+026
+  2.480202766206397E+026
+  2.710146580251357E+026
+  2.898227906202731E+026
+  3.042565083567686E+026
+  3.144930340686597E+026
+  3.209851578598160E+026
+  3.243611796389370E+026
+  3.253314929010971E+026
+  3.246109949702243E+026
+  3.228604335045906E+026
+  3.206461890047841E+026
+  3.184164910903373E+026
+  3.164918022524040E+026
+  3.150672376315986E+026
+  3.142248977611774E+026
+  3.139537201058247E+026
+  3.141740400937719E+026
+  3.147637640577145E+026
+  3.155831375077812E+026
+  3.164956326364621E+026
+  3.173833753464487E+026
+  3.181565482512283E+026
+  3.187571077680309E+026
+  3.191578203926099E+026
+  3.193580308734008E+026
+  3.193776715177600E+026
+  3.192507359982185E+026
+  3.190189478095961E+026
+  3.187261027017389E+026
+  3.184135697147308E+026
+  3.181171603664055E+026
+  3.178652799046710E+026
+  4.960891452518260E+020
+  4.961343648272302E+020
+  4.961963032138233E+020
+  4.962716482178464E+020
+  4.963529873465699E+020
+  4.964278217018880E+020
+  4.964781646591236E+020
+  4.964809104618532E+020
+  4.964090622354101E+020
+  4.962339921323818E+020
+  4.959286997940310E+020
+  4.954718112672821E+020
+  4.948519417662519E+020
+  4.940718894441078E+020
+  4.931519438571539E+020
+  4.921314762499528E+020
+  4.910679683837589E+020
+  4.900327381603671E+020
+  4.891028511833109E+020
+  4.883490859553855E+020
+  4.878203336908842E+020
+  4.875254046151999E+020
+  4.874137912731447E+020
+  4.873574077841755E+020
+  4.871356051269964E+020
+  4.864258271046168E+020
+  4.848021517209000E+020
+  4.817437375489537E+020
+  4.766549389270805E+020
+  4.688985567830473E+020
+  4.578431843970075E+020
+  4.429245532288870E+020
+  4.237187800065463E+020
+  4.000221954290750E+020
+  3.719281236593736E+020
+  3.398863822440786E+020
+  3.047281007651737E+020
+  2.676392072247809E+020
+  2.300728691297222E+020
+  1.936047160024261E+020
+  1.597522596064022E+020
+  1.297411514554194E+020
+  1.041850799285240E+020
+  8.305612590819785E+019
+  6.594778688232383E+019
+  5.229677070172298E+019
+  4.151401989460916E+019
+  3.305323642505551E+019
+  2.644036562805784E+019
+  2.128074499803442E+019
+  1.725472735421715E+019
+  1.410826955817903E+019
+  1.164210864139007E+019
+  9.701370631567000E+018
+  8.166423663933726E+018
+  6.945221570761663E+018
+  5.967097769242899E+018
+  5.177842211117191E+018
+  4.535853997413136E+018
+  4.009166085917878E+018
+  3.573161665008371E+018
+  3.208830920179168E+018
+  2.901445583877777E+018
+  2.639554127231888E+018
+  2.414221912423669E+018
+  2.218458125074949E+018
+  2.046785264743439E+018
+  1.894917977551605E+018
+  1.759526763397699E+018
+  1.638069368688044E+018
+  1.528679386356387E+018
+  1.430108824619184E+018
+  1.341730621995232E+018
+  1.263620328686812E+018
+  1.196756442621149E+018
+  1.143410532198022E+018
+  1.107847352219511E+018
+  1.097529519488324E+018
+  1.125130029249588E+018
+  1.211807177661919E+018
+  1.392392689030429E+018
+  1.723371438257705E+018
+  2.294742331108554E+018
+  3.246933731425759E+018
+  4.793689373780368E+018
+  7.250881173849284E+018
+  1.106901038467369E+019
+  1.686306306392865E+019
+  2.542677897924167E+019
+  3.770914711356743E+019
+  5.472018046329155E+019
+  7.732431124076908E+019
+  1.059200466291307E+020
+  1.402084643250235E+020
+  1.791940450937050E+020
+  2.212903752334260E+020
+  2.645287936402616E+020
+  3.068402766436848E+020
+  3.463384882115913E+020
+  3.815405828202095E+020
+  4.114900076833367E+020
+  4.357777995521324E+020
+  4.544832474579025E+020
+  4.680658417025514E+020
+  4.772395073106397E+020
+  4.828521595327684E+020
+  4.857838135071420E+020
+  4.868683343268026E+020
+  4.868387870534525E+020
+  4.862939841228453E+020
+  4.856832191485521E+020
+  4.853062649393050E+020
+  4.853257881643372E+020
+  4.857891305618333E+020
+  4.866560298472727E+020
+  4.878285946228439E+020
+  4.891799882077325E+020
+  4.905789280677729E+020
+  4.919081514014327E+020
+  4.930761564835706E+020
+  4.940225414779233E+020
+  4.947180200839996E+020
+  4.951606943911704E+020
+  4.953703193274646E+020
+  4.953819448416688E+020
+  4.952396858143626E+020
+  4.949910994421042E+020
+  4.946827476457227E+020
+  4.943571536484046E+020
+  4.940509479153635E+020
+  4.173724504971137E+025
+  4.173557536211982E+025
+  4.173840329626808E+025
+  4.174649198421838E+025
+  4.176003153479589E+025
+  4.177840395505466E+025
+  4.179999930714643E+025
+  4.182211397038951E+025
+  4.184095520284994E+025
+  4.185178307233854E+025
+  4.184920185929794E+025
+  4.182759083098279E+025
+  4.178164929431813E+025
+  4.170701116212795E+025
+  4.160086073018258E+025
+  4.146246218264291E+025
+  4.129350461009407E+025
+  4.109816371334412E+025
+  4.088279392430936E+025
+  4.065519381240341E+025
+  4.042343401354281E+025
+  4.019429667982528E+025
+  3.997144061297120E+025
+  3.975346644786006E+025
+  3.953210143005647E+025
+  3.929074680710973E+025
+  3.900363173966065E+025
+  3.863580091149413E+025
+  3.814413598664806E+025
+  3.747957657107608E+025
+  3.659065552982157E+025
+  3.542837291021823E+025
+  3.395226981316526E+025
+  3.213730160012946E+025
+  2.998074955506499E+025
+  2.750800638958838E+025
+  2.477575816270916E+025
+  2.187107269331239E+025
+  1.890539967235373E+025
+  1.600356028611428E+025
+  1.328927990791170E+025
+  1.086566772439766E+025
+  8.787675276217609E+024
+  7.058071214995872E+024
+  5.648097878078151E+024
+  4.515302533081455E+024
+  3.614221321795205E+024
+  2.902087593775126E+024
+  2.341396946582006E+024
+  1.900648292791561E+024
+  1.554123107322338E+024
+  1.281226337153541E+024
+  1.065685329827803E+024
+  8.947611826531688E+023
+  7.585434118745440E+023
+  6.493524860494560E+023
+  5.612507260636546E+023
+  4.896509135596650E+023
+  4.310079347008969E+023
+  3.825784858510979E+023
+  3.422352788161035E+023
+  3.083242023691173E+023
+  2.795549715451809E+023
+  2.549176855500009E+023
+  2.336193356190908E+023
+  2.150356447231329E+023
+  1.986747030725883E+023
+  1.841497253231669E+023
+  1.711589477660661E+023
+  1.594712680553834E+023
+  1.489167798941971E+023
+  1.393819626655013E+023
+  1.308100745137641E+023
+  1.232084421332330E+023
+  1.166660972616761E+023
+  1.113879465779319E+023
+  1.077558833696528E+023
+  1.064335963159456E+023
+  1.085410133175834E+023
+  1.159369190967097E+023
+  1.316643102775339E+023
+  1.606310488439619E+023
+  2.106138967173615E+023
+  2.936772476086347E+023
+  4.280705073757493E+023
+  6.405801055178731E+023
+  9.691205446014362E+023
+  1.465002330227369E+024
+  2.193770063596618E+024
+  3.232762904141725E+024
+  4.662719999257934E+024
+  6.550141932379534E+024
+  8.920669409686729E+024
+  1.174085694573403E+025
+  1.492007523325767E+025
+  1.832122721373587E+025
+  2.177966883616617E+025
+  2.512743835988395E+025
+  2.821658653854967E+025
+  3.093643637340001E+025
+  3.322213551320040E+025
+  3.505462310803083E+025
+  3.645409165484854E+025
+  3.746979793128784E+025
+  3.816885431436360E+025
+  3.862587121310010E+025
+  3.891446632368624E+025
+  3.910098327595160E+025
+  3.924035942655299E+025
+  3.937390790459325E+025
+  3.952873701904930E+025
+  3.971853134891212E+025
+  3.994540963861591E+025
+  4.020254200958762E+025
+  4.047716992827369E+025
+  4.075365614768814E+025
+  4.101622213970765E+025
+  4.125111249784444E+025
+  4.144804274786807E+025
+  4.160090903633145E+025
+  4.170783870332607E+025
+  4.177072921104879E+025
+  4.179446024042930E+025
+  4.178596544392916E+025
+  4.175330761186586E+025
+  4.170483593978642E+025
+  4.164847319072048E+025
+  4.159118345141372E+025
+  4.153863736670512E+025
+  4.149505507305046E+025
+  6.503263352959030E+025
+  6.503195412620254E+025
+  6.503687842041051E+025
+  6.504817268508783E+025
+  6.506582279487789E+025
+  6.508872652483504E+025
+  6.511445863147945E+025
+  6.513914935448388E+025
+  6.515750669132144E+025
+  6.516302464719011E+025
+  6.514839202318079E+025
+  6.510608438866658E+025
+  6.502910195095901E+025
+  6.491178934779467E+025
+  6.475064090857433E+025
+  6.454496908117029E+025
+  6.429730035218612E+025
+  6.401336403916358E+025
+  6.370155880418480E+025
+  6.337182429765436E+025
+  6.303391170920974E+025
+  6.269513149219246E+025
+  6.235774771122230E+025
+  6.201627184861437E+025
+  6.165497076491326E+025
+  6.124593511297236E+025
+  6.074805526164051E+025
+  6.010722897492393E+025
+  5.925808843798383E+025
+  5.812748592949694E+025
+  5.663990202323007E+025
+  5.472480114056290E+025
+  5.232570848493003E+025
+  4.941038300632515E+025
+  4.598091952928283E+025
+  4.208201775399012E+025
+  3.780521208661644E+025
+  3.328687689689506E+025
+  2.869860770902526E+025
+  2.423021658553299E+025
+  2.006778885473253E+025
+  1.636444264083063E+025
+  1.319939821437790E+025
+  1.057283787732151E+025
+  8.437748670381142E+024
+  6.727108740909149E+024
+  5.370049553234545E+024
+  4.300394409855505E+024
+  3.460412060132539E+024
+  2.801815326459656E+024
+  2.285323347162725E+024
+  1.879582978400493E+024
+  1.559896172477140E+024
+  1.306983429038391E+024
+  1.105886734817347E+024
+  9.450456531999694E+023
+  8.155444858269570E+023
+  7.105121999287639E+023
+  6.246513146769572E+023
+  5.538719437747280E+023
+  4.950096739123615E+023
+  4.456092687223254E+023
+  4.037595099353931E+023
+  3.679674741122648E+023
+  3.370630824472030E+023
+  3.101268473852041E+023
+  2.864354145600890E+023
+  2.654208265361501E+023
+  2.466404967887763E+023
+  2.297557735424839E+023
+  2.145178056723118E+023
+  2.007603355193514E+023
+  1.884002207652461E+023
+  1.774481915120611E+023
+  1.680349621067488E+023
+  1.604618920887096E+023
+  1.552916882463405E+023
+  1.535041331660051E+023
+  1.567556098176402E+023
+  1.678001993022034E+023
+  1.911544725107745E+023
+  2.341157617628454E+023
+  3.082682413068452E+023
+  4.316181031789896E+023
+  6.314611934848739E+023
+  9.479584886564580E+023
+  1.438111240454571E+024
+  2.179308936805788E+024
+  3.270800202928361E+024
+  4.830304492456162E+024
+  6.981694430581616E+024
+  9.828689016654834E+024
+  1.341473756401336E+025
+  1.769502150250152E+025
+  2.253837032702165E+025
+  2.774236383828760E+025
+  3.306093478513704E+025
+  3.824034376134785E+025
+  4.305430223078142E+025
+  4.733042075572762E+025
+  5.096385285734999E+025
+  5.391811311457983E+025
+  5.621602599240015E+025
+  5.792499725986716E+025
+  5.914053909845443E+025
+  5.997088780264909E+025
+  6.052428872606262E+025
+  6.089950850583384E+025
+  6.117951437968808E+025
+  6.142798215117450E+025
+  6.168822132803369E+025
+  6.198410594166828E+025
+  6.232259056046040E+025
+  6.269734998615642E+025
+  6.309302955175343E+025
+  6.348957173947190E+025
+  6.386612817819512E+025
+  6.420418212525928E+025
+  6.448967208007540E+025
+  6.471407976667922E+025
+  6.487458792995591E+025
+  6.497351121004174E+025
+  6.501725880034265E+025
+  6.501509261059833E+025
+  6.497788379101130E+025
+  6.491697577509447E+025
+  6.484321929951598E+025
+  6.476625276905248E+025
+  6.469405086522465E+025
+  6.463270918011887E+025
+  8.248195499967691E+024
+  8.246664956058543E+024
+  8.246976038752844E+024
+  8.249556816406092E+024
+  8.254644045835929E+024
+  8.262199028344496E+024
+  8.271839617489743E+024
+  8.282799647727646E+024
+  8.293925494812449E+024
+  8.303719863582245E+024
+  8.310437622900410E+024
+  8.312232053703895E+024
+  8.307344347686296E+024
+  8.294322421788237E+024
+  8.272247513303476E+024
+  8.240940527650399E+024
+  8.201115932218464E+024
+  8.154449943709359E+024
+  8.103532953634076E+024
+  8.051684644085565E+024
+  8.002624294813956E+024
+  7.960007268288660E+024
+  7.926859145448276E+024
+  7.904958153370659E+024
+  7.894230997737264E+024
+  7.892234581739539E+024
+  7.893795817071271E+024
+  7.890875367163603E+024
+  7.872711521949605E+024
+  7.826289662614877E+024
+  7.737170179562141E+024
+  7.590688128348362E+024
+  7.373502525427330E+024
+  7.075412863669263E+024
+  6.691271516649263E+024
+  6.222712774111876E+024
+  5.679323153296623E+024
+  5.078846735214317E+024
+  4.446112502011336E+024
+  3.810618241007423E+024
+  3.203077385952962E+024
+  2.650512537014597E+024
+  2.169121066639588E+024
+  1.762622425062384E+024
+  1.426777612563677E+024
+  1.153515275935923E+024
+  9.335015041574277E+023
+  7.575867461739356E+023
+  6.175192084424693E+023
+  5.062160519510595E+023
+  4.177889178264940E+023
+  3.474470343931548E+023
+  2.913504108309009E+023
+  2.464529470008820E+023
+  2.103554485120879E+023
+  1.811770847244800E+023
+  1.574475545547285E+023
+  1.380190390457800E+023
+  1.219956188071274E+023
+  1.086774160906241E+023
+  9.751679912811658E+022
+  8.808428053507674E+022
+  8.004210375544354E+022
+  7.312387039082027E+022
+  6.711888595333422E+022
+  6.186018081057037E+022
+  5.721539528476094E+022
+  5.307990734831082E+022
+  4.937173706236425E+022
+  4.602789685766583E+022
+  4.300198809047286E+022
+  4.026299450482195E+022
+  3.779542309853628E+022
+  3.560123654324897E+022
+  3.370447293000519E+022
+  3.216014949912075E+022
+  3.107011989956849E+022
+  3.061014962593845E+022
+  3.107474718232293E+022
+  3.294934236128046E+022
+  3.702316576172728E+022
+  4.456017795810960E+022
+  5.754835473885076E+022
+  7.904693190648710E+022
+  1.136421702383272E+023
+  1.679974748395888E+023
+  2.514332974420254E+023
+  3.763851573197670E+023
+  5.584570062185985E+023
+  8.156175727797149E+023
+  1.165912329077735E+024
+  1.622964165564815E+024
+  2.189480204071212E+024
+  2.853181866547226E+024
+  3.587936912557145E+024
+  4.357116004197824E+024
+  5.118862510016865E+024
+  5.832400641383666E+024
+  6.463773187769485E+024
+  6.989765027784353E+024
+  7.399475758325231E+024
+  7.693713551354628E+024
+  7.882843169491012E+024
+  7.983861707436234E+024
+  8.017368710951978E+024
+  8.004873463215248E+024
+  7.966656085582321E+024
+  7.920234797847485E+024
+  7.879402930035598E+024
+  7.853767963323747E+024
+  7.848722434614711E+024
+  7.865779036852744E+024
+  7.903197148172625E+024
+  7.956814381154406E+024
+  8.020981503177694E+024
+  8.089491777886307E+024
+  8.156403487592216E+024
+  8.216678378318033E+024
+  8.266593910905683E+024
+  8.303924541703063E+024
+  8.327918468936137E+024
+  8.339117216106885E+024
+  8.339075645554349E+024
+  8.330039178333705E+024
+  8.314622717981640E+024
+  8.295518140017545E+024
+  8.275247097819427E+024
+  8.255973908359936E+024
+  8.239384873479780E+024
+  8.226631585978356E+024
+  8.676746878950844E+024
+  8.675107472982253E+024
+  8.675429417850343E+024
+  8.678169908049221E+024
+  8.683582889748377E+024
+  8.691629618856127E+024
+  8.701906380000090E+024
+  8.713601352874764E+024
+  8.725490964862335E+024
+  8.735986446842701E+024
+  8.743235717679124E+024
+  8.745278877541781E+024
+  8.740249706192667E+024
+  8.726608362815947E+024
+  8.703382412786502E+024
+  8.670386408528024E+024
+  8.628385806614666E+024
+  8.579169885475543E+024
+  8.525501718481655E+024
+  8.470922287474788E+024
+  8.419400736457015E+024
+  8.374842391424363E+024
+  8.340487923241965E+024
+  8.318257381676161E+024
+  8.308108189123082E+024
+  8.307483994448178E+024
+  8.310930973755455E+024
+  8.309951379839102E+024
+  8.293153883654516E+024
+  8.246748849936177E+024
+  8.155423374657651E+024
+  8.003610270820752E+024
+  7.777127872141027E+024
+  7.465103816473492E+024
+  7.062001933285143E+024
+  6.569457039378409E+024
+  5.997520424131128E+024
+  5.364885567729937E+024
+  4.697761659409985E+024
+  4.027324013524512E+024
+  3.386063890278994E+024
+  2.802597094399422E+024
+  2.294111330657244E+024
+  1.864604704474967E+024
+  1.509653869180006E+024
+  1.220772438971419E+024
+  9.881276776342287E+023
+  8.020717239894167E+023
+  6.538978525874271E+023
+  5.361291788033451E+023
+  4.425473380844111E+023
+  3.680913813723240E+023
+  3.087035637742949E+023
+  2.611641914871038E+023
+  2.229367222759455E+023
+  1.920322020935246E+023
+  1.668954783190822E+023
+  1.463122512078374E+023
+  1.293345348168598E+023
+  1.152216489685412E+023
+  1.033939405096660E+023
+  9.339673901681190E+022
+  8.487243204726709E+022
+  7.753892237739575E+022
+  7.117307154028253E+022
+  6.559802824471052E+022
+  6.067358512629200E+022
+  5.628890721254102E+022
+  5.235713985753424E+022
+  4.881154644792431E+022
+  4.560296499874349E+022
+  4.269853161904371E+022
+  4.008183031890853E+022
+  3.775493942958724E+022
+  3.574332291870748E+022
+  3.410525667072687E+022
+  3.294861513660821E+022
+  3.245953135125522E+022
+  3.294984732223960E+022
+  3.493350046946438E+022
+  3.924596746092233E+022
+  4.722510217469999E+022
+  6.097481525144489E+022
+  8.373226871571342E+022
+  1.203496483950954E+023
+  1.778753637114493E+023
+  2.661661492402063E+023
+  3.983693967112497E+023
+  5.909764440664197E+023
+  8.629684529014875E+023
+  1.233392033735590E+024
+  1.716597539677886E+024
+  2.315373116086323E+024
+  3.016648784697990E+024
+  3.792707067940944E+024
+  4.604747474695196E+024
+  5.408472376734100E+024
+  6.160765675976527E+024
+  6.825761206383849E+024
+  7.378985949182247E+024
+  7.809012724127771E+024
+  8.116807226217575E+024
+  8.313441229010864E+024
+  8.416991518406467E+024
+  8.449329997726390E+024
+  8.433272904103373E+024
+  8.390317584986372E+024
+  8.339021543264033E+024
+  8.293984807492524E+024
+  8.265363810412835E+024
+  8.258842547095113E+024
+  8.275989481963833E+024
+  8.314923231678322E+024
+  8.371195510485597E+024
+  8.438783585889818E+024
+  8.511076690664864E+024
+  8.581748979065322E+024
+  8.645437038079054E+024
+  8.698177245744828E+024
+  8.737597901329599E+024
+  8.762894195664381E+024
+  8.774636320650063E+024
+  8.774471855037953E+024
+  8.764782679644145E+024
+  8.748343660876896E+024
+  8.728011666924839E+024
+  8.706462740065388E+024
+  8.685993088061036E+024
+  8.668390665358266E+024
+  8.654874809113167E+024
+  3.364418921585817E+023
+  3.363866685181270E+023
+  3.364022248685898E+023
+  3.365045970042102E+023
+  3.367023421357535E+023
+  3.369933125364520E+023
+  3.373620814406806E+023
+  3.377784590388618E+023
+  3.381974714025816E+023
+  3.385611918901802E+023
+  3.388026024189794E+023
+  3.388514040418434E+023
+  3.386414784473074E+023
+  3.381194355896926E+023
+  3.372533843024614E+023
+  3.360408108152755E+023
+  3.345142926811262E+023
+  3.327437443966763E+023
+  3.308340290014503E+023
+  3.289171181813091E+023
+  3.271385491977655E+023
+  3.256386643859013E+023
+  3.245299297468324E+023
+  3.238723813646484E+023
+  3.236498093653028E+023
+  3.237495665157818E+023
+  3.239488647375015E+023
+  3.239101628007009E+023
+  3.231878648407331E+023
+  3.212481252331132E+023
+  3.175030529825886E+023
+  3.113598136685880E+023
+  3.022836794231911E+023
+  2.898716124662544E+023
+  2.739293507332053E+023
+  2.545406013917883E+023
+  2.321131066212966E+023
+  2.073851949336358E+023
+  1.813803413382876E+023
+  1.553074115627517E+023
+  1.304193791754875E+023
+  1.078137676708646E+023
+  8.814356220649965E+022
+  7.155220640519973E+022
+  5.785936922808269E+022
+  4.672979254825508E+022
+  3.777818502069688E+022
+  3.062808131646351E+022
+  2.494069517817895E+022
+  2.042572863017255E+022
+  1.684219065251815E+022
+  1.399426527263487E+022
+  1.172518644184584E+022
+  9.910738698430172E+021
+  8.453191633967090E+021
+  7.276009287180311E+021
+  6.319420745984963E+021
+  5.536809537575856E+021
+  4.891823425078458E+021
+  4.356090151135922E+021
+  3.907428617690124E+021
+  3.528457574744439E+021
+  3.205519093606989E+021
+  2.927849046214068E+021
+  2.686940270590050E+021
+  2.476055636862030E+021
+  2.289857794803038E+021
+  2.124130174337239E+021
+  1.975570199489109E+021
+  1.841641200113479E+021
+  1.720474863997748E+021
+  1.610822178830902E+021
+  1.512058919195153E+021
+  1.424263627741722E+021
+  1.348404326276150E+021
+  1.286698580031270E+021
+  1.243255022095205E+021
+  1.225169159353331E+021
+  1.244338623719434E+021
+  1.320387346055140E+021
+  1.485241757024753E+021
+  1.790066086692055E+021
+  2.315387207990073E+021
+  3.185216242197673E+021
+  4.585614580888255E+021
+  6.787157133198177E+021
+  1.016870661907211E+022
+  1.523637582020337E+022
+  2.262621018838367E+022
+  3.307217887498409E+022
+  4.731384322127918E+022
+  6.591385306038090E+022
+  8.899358030327231E+022
+  1.160659702339880E+023
+  1.460790251133638E+023
+  1.775496934599426E+023
+  2.087761287574703E+023
+  2.380933117288748E+023
+  2.641068571699666E+023
+  2.858542354864702E+023
+  3.028710938990092E+023
+  3.151691028809194E+023
+  3.231506059671204E+023
+  3.274912794520508E+023
+  3.290178626304904E+023
+  3.285990469424487E+023
+  3.270584641170368E+023
+  3.251120195473969E+023
+  3.233281699308315E+023
+  3.221084363382480E+023
+  3.216853292993448E+023
+  3.221349701741676E+023
+  3.234015056632282E+023
+  3.253298793240744E+023
+  3.277029163954002E+023
+  3.302783768878390E+023
+  3.328219234739956E+023
+  3.351328913988153E+023
+  3.370611380603916E+023
+  3.385147346785535E+023
+  3.394595096322084E+023
+  3.399122964558601E+023
+  3.399301600341181E+023
+  3.395978548107778E+023
+  3.390152862064355E+023
+  3.382860444608321E+023
+  3.375076804891416E+023
+  3.367643200265609E+023
+  3.361218737117100E+023
+  3.356257448865826E+023
+  6.780454628487708E+023
+  6.779056512393606E+023
+  6.779258338358245E+023
+  6.781439941508982E+023
+  6.785817375300372E+023
+  6.792369723387427E+023
+  6.800779363481864E+023
+  6.810395382772373E+023
+  6.820228587653984E+023
+  6.828986840304326E+023
+  6.835155049243541E+023
+  6.837118721539243E+023
+  6.833325278828764E+023
+  6.822471570374657E+023
+  6.803699533252725E+023
+  6.776776357143384E+023
+  6.742231824781252E+023
+  6.701424426952261E+023
+  6.656510350895898E+023
+  6.610296438485026E+023
+  6.565969934334408E+023
+  6.526713398239563E+023
+  6.495230510300601E+023
+  6.473224850954131E+023
+  6.460886208138604E+023
+  6.456445459669657E+023
+  6.455859071569817E+023
+  6.452678998291050E+023
+  6.438155634082159E+023
+  6.401612349056210E+023
+  6.331119563065918E+023
+  6.214480138246940E+023
+  6.040508831625201E+023
+  5.800538960837757E+023
+  5.490016008751596E+023
+  5.109948203596059E+023
+  4.667903397427514E+023
+  4.178213958727556E+023
+  3.661126077861417E+023
+  3.140832807984181E+023
+  2.642637485717436E+023
+  2.188900288087952E+023
+  1.793123357630842E+023
+  1.458541269405072E+023
+  1.181815081556534E+023
+  9.564201141994728E+022
+  7.747614442369333E+022
+  6.293691785730972E+022
+  5.134912196934445E+022
+  4.213218734223771E+022
+  3.480274422144945E+022
+  2.896700865019031E+022
+  2.430896890711735E+022
+  2.057766518878967E+022
+  1.757522438926041E+022
+  1.514636795956318E+022
+  1.316959192575826E+022
+  1.154995310113023E+022
+  1.021327770232424E+022
+  9.101572097445625E+021
+  8.169420250001279E+021
+  7.381175467075797E+021
+  6.708783022053160E+021
+  6.130099160827554E+021
+  5.627598314756621E+021
+  5.187383053315606E+021
+  4.798430244090916E+021
+  4.452022372099594E+021
+  4.141325720291137E+021
+  3.861088190950125E+021
+  3.607440363064074E+021
+  3.377795790967714E+021
+  3.170863104116165E+021
+  2.986806820223888E+021
+  2.827631247500168E+021
+  2.697919976515460E+021
+  2.606152378915503E+021
+  2.566950596509789E+021
+  2.604798432956383E+021
+  2.760025576176452E+021
+  3.098160192620610E+021
+  3.724079839233616E+021
+  4.802628860784731E+021
+  6.587301704550374E+021
+  9.457828264101666E+021
+  1.396543340576768E+022
+  2.088035714465477E+022
+  3.122901731295329E+022
+  4.629739054612253E+022
+  6.756327238121833E+022
+  9.650582610259798E+022
+  1.342329469236350E+023
+  1.809454666568190E+023
+  2.356041727862987E+023
+  2.960283685222172E+023
+  3.591783433374035E+023
+  4.215948085762397E+023
+  4.799218799985558E+023
+  5.313802190060529E+023
+  5.740879382238229E+023
+  6.071858976738792E+023
+  6.307827374571445E+023
+  6.457728443471961E+023
+  6.535916574789601E+023
+  6.559634872684201E+023
+  6.546782672054066E+023
+  6.514148792096366E+023
+  6.476151433558866E+023
+  6.444053063231153E+023
+  6.425593461389206E+023
+  6.424982420287544E+023
+  6.443195552742904E+023
+  6.478512081305836E+023
+  6.527221779165693E+023
+  6.584415384777704E+023
+  6.644766835482476E+023
+  6.703222427587235E+023
+  6.755532465535837E+023
+  6.798590728419061E+023
+  6.830578582999002E+023
+  6.850936799930346E+023
+  6.860205597571442E+023
+  6.859781803436418E+023
+  6.851641097551158E+023
+  6.838062846669417E+023
+  6.821380187154875E+023
+  6.803769438210448E+023
+  6.787091132179407E+023
+  6.772787943252911E+023
+  6.761837481026538E+023
+  1.399246196125065E+023
+  1.399200320149027E+023
+  1.399329842793543E+023
+  1.399663734629949E+023
+  1.400209046644409E+023
+  1.400942851231330E+023
+  1.401806533491719E+023
+  1.402703641039885E+023
+  1.403502212070038E+023
+  1.404042626833421E+023
+  1.404151262065143E+023
+  1.403659337302479E+023
+  1.402425682054687E+023
+  1.400361342627393E+023
+  1.397453042025085E+023
+  1.393781808408304E+023
+  1.389532759548177E+023
+  1.384992152584310E+023
+  1.380528496854212E+023
+  1.376555890708263E+023
+  1.373479767592174E+023
+  1.371627728307547E+023
+  1.371170741373931E+023
+  1.372042277024840E+023
+  1.373864503731204E+023
+  1.375891285847271E+023
+  1.376977402862911E+023
+  1.375582442526182E+023
+  1.369816574463446E+023
+  1.357534065152247E+023
+  1.336478620417866E+023
+  1.304481465980820E+023
+  1.259707099719143E+023
+  1.200931650150670E+023
+  1.127824612832234E+023
+  1.041188446470708E+023
+  9.430973610301241E+022
+  8.368750178261076E+022
+  7.268693273859542E+022
+  6.180243447926237E+022
+  5.153079795341377E+022
+  4.229341885722708E+022
+  3.432634684370940E+022
+  2.766116555247934E+022
+  2.220320402691469E+022
+  1.780041604600143E+022
+  1.428533712119812E+022
+  1.149800687334308E+022
+  9.296692017492682E+021
+  7.561414354188282E+021
+  6.193599764403589E+021
+  5.113889907406178E+021
+  4.259291518435484E+021
+  3.580289345548784E+021
+  3.038221427823118E+021
+  2.603030643793184E+021
+  2.251408388917960E+021
+  1.965298931823084E+021
+  1.730714338647793E+021
+  1.536806439395292E+021
+  1.375146200354694E+021
+  1.239167613364537E+021
+  1.123740533693788E+021
+  1.024843751744429E+021
+  9.393155671582544E+020
+  8.646641473034747E+020
+  7.989240383447975E+020
+  7.405484778452314E+020
+  6.883298120804821E+020
+  6.413425779653763E+020
+  5.989059509650244E+020
+  5.605646445584997E+020
+  5.260904563856878E+020
+  4.955111791999379E+020
+  4.691805346784165E+020
+  4.479135848581246E+020
+  4.332286956947830E+020
+  4.277620418229328E+020
+  4.359565481114251E+020
+  4.651761720481226E+020
+  5.274582525746406E+020
+  6.421850831827429E+020
+  8.400127261320821E+020
+  1.168400964211709E+021
+  1.698970562192941E+021
+  2.536555038312933E+021
+  3.829047645143237E+021
+  5.775775882740110E+021
+  8.630012087247052E+021
+  1.268838111103974E+022
+  1.825681442588995E+022
+  2.558056428521336E+022
+  3.474002712780133E+022
+  4.558092743777226E+022
+  5.772435488291196E+022
+  7.061187400639396E+022
+  8.358269790693245E+022
+  9.597084217401821E+022
+  1.071974858502730E+023
+  1.168382327239470E+023
+  1.246552528358120E+023
+  1.305952730942722E+023
+  1.347620413691155E+023
+  1.373747638219038E+023
+  1.387229441356773E+023
+  1.391249109369280E+023
+  1.388938832913255E+023
+  1.383127783173672E+023
+  1.376174332841161E+023
+  1.369873004352227E+023
+  1.365425739125733E+023
+  1.363467549386109E+023
+  1.364136350982399E+023
+  1.367175283975684E+023
+  1.372053861665341E+023
+  1.378093129323935E+023
+  1.384580726932830E+023
+  1.390864649995223E+023
+  1.396419003577961E+023
+  1.400879978271051E+023
+  1.404054526082246E+023
+  1.405907229402818E+023
+  1.406532561187464E+023
+  1.406119957966741E+023
+  1.404917617080365E+023
+  1.403198522247891E+023
+  1.401230935176882E+023
+  1.399255534961333E+023
+  1.397470129984507E+023
+  1.396021511546691E+023
+  1.132829216567640E+022
+  1.132687532054612E+022
+  1.132754924112475E+022
+  1.133076193936973E+022
+  1.133673231979626E+022
+  1.134535454690196E+022
+  1.135612338762153E+022
+  1.136809375627622E+022
+  1.137988546932125E+022
+  1.138974493478051E+022
+  1.139566866263658E+022
+  1.139558526345963E+022
+  1.138758589134957E+022
+  1.137018486444185E+022
+  1.134258298267430E+022
+  1.130489843580397E+022
+  1.125832567923080E+022
+  1.120518218805541E+022
+  1.114880787654785E+022
+  1.109329342157350E+022
+  1.104303190101395E+022
+  1.100211150973479E+022
+  1.097359248530014E+022
+  1.095873461188930E+022
+  1.095625868828325E+022
+  1.096173340029995E+022
+  1.096717776708727E+022
+  1.096096092167702E+022
+  1.092806897567533E+022
+  1.085079548299869E+022
+  1.070989587587890E+022
+  1.048621981598947E+022
+  1.016278685906484E+022
+  9.727188660265639E+021
+  9.174081658021931E+021
+  8.507392250566939E+021
+  7.741734445480977E+021
+  6.902509098088270E+021
+  6.024290512964972E+021
+  5.147445987468576E+021
+  4.313431116940641E+021
+  3.558218466537976E+021
+  2.902843569980420E+021
+  2.351417656417261E+021
+  1.897389785172917E+021
+  1.529183506886830E+021
+  1.233677532789706E+021
+  9.981432208069758E+020
+  8.111814379312517E+020
+  6.630612634215702E+020
+  5.457301363538346E+020
+  4.526633246345208E+020
+  3.786506401359257E+020
+  3.195735773435957E+020
+  2.721990707379440E+020
+  2.340006248810115E+020
+  2.030092128119818E+020
+  1.776921727788853E+020
+  1.568565698795232E+020
+  1.395730312250909E+020
+  1.251162520743339E+020
+  1.129188307385485E+020
+  1.025356254550992E+020
+  9.361634418095989E+019
+  8.588453978434493E+019
+  7.912157580119574E+019
+  7.315445182959457E+019
+  6.784664024165804E+019
+  6.309130035811207E+019
+  5.880642071465980E+019
+  5.493161783489384E+019
+  5.142652116967559E+019
+  4.827093963541251E+019
+  4.546739420266122E+019
+  4.304719875466389E+019
+  4.108219997500506E+019
+  3.970571135131540E+019
+  3.914830055593501E+019
+  3.979712921257509E+019
+  4.229165269046450E+019
+  4.767359589517721E+019
+  5.761463343234417E+019
+  7.474948235587546E+019
+  1.031417184278212E+020
+  1.488983357901734E+020
+  2.209170113411910E+020
+  3.316835723011153E+020
+  4.979209223047652E+020
+  7.407136486198791E+020
+  1.084500334703150E+021
+  1.554080469695278E+021
+  2.168631727584085E+021
+  2.932974562633641E+021
+  3.831952300503583E+021
+  4.831694070403284E+021
+  5.883850878700713E+021
+  6.932449590790119E+021
+  7.922250227052662E+021
+  8.806475423180322E+021
+  9.552227390679008E+021
+  1.014282520101038E+022
+  1.057723653659775E+022
+  1.086740643045305E+022
+  1.103449454864038E+022
+  1.110490935241599E+022
+  1.110674067498563E+022
+  1.106689413643722E+022
+  1.100900946111397E+022
+  1.095212191848245E+022
+  1.090998042358119E+022
+  1.089093066204649E+022
+  1.089827520371045E+022
+  1.093101749960497E+022
+  1.098488053585279E+022
+  1.105347193345548E+022
+  1.112945747266789E+022
+  1.120561368294954E+022
+  1.127565933616445E+022
+  1.133480929290957E+022
+  1.138004099114338E+022
+  1.141010343533021E+022
+  1.142532562469143E+022
+  1.142729533385158E+022
+  1.141847920426872E+022
+  1.140184006921439E+022
+  1.138048507765163E+022
+  1.135736572590559E+022
+  1.133504906904016E+022
+  1.131556836973374E+022
+  1.130034978026817E+022
+  9.317923883204352E+020
+  9.319365511921217E+020
+  9.320689187105559E+020
+  9.321703802257559E+020
+  9.322176478044223E+020
+  9.321831804605357E+020
+  9.320359560908211E+020
+  9.317432075524174E+020
+  9.312730662642686E+020
+  9.305982494281757E+020
+  9.297006028785066E+020
+  9.285759818892490E+020
+  9.272388417802176E+020
+  9.257257430165992E+020
+  9.240967633473200E+020
+  9.224337163850607E+020
+  9.208341565400950E+020
+  9.194003931375466E+020
+  9.182231521096137E+020
+  9.173601276963528E+020
+  9.168104276083079E+020
+  9.164867380060123E+020
+  9.161877861728234E+020
+  9.155742300044018E+020
+  9.141513719576068E+020
+  9.112620764680387E+020
+  9.060930446477766E+020
+  8.976972967503368E+020
+  8.850354149527859E+020
+  8.670377154367487E+020
+  8.426886824795083E+020
+  8.111330876851188E+020
+  7.717995718956395E+020
+  7.245317484099849E+020
+  6.697095038408019E+020
+  6.083357052659665E+020
+  5.420590335735164E+020
+  4.731063515573091E+020
+  4.041113821308478E+020
+  3.378505696786825E+020
+  2.769267906609381E+020
+  2.233726169019548E+020
+  1.781186839982156E+020
+  1.409753261121802E+020
+  1.111113376309336E+020
+  8.744752627551283E+019
+  6.888478931530800E+019
+  5.441998622035667E+019
+  4.319280134473824E+019
+  3.449387804534179E+019
+  2.775354618029446E+019
+  2.252257002694026E+019
+  1.845116812424690E+019
+  1.526939455374162E+019
+  1.277015921002544E+019
+  1.079519351282751E+019
+  9.223791741889303E+018
+  7.963960077940894E+018
+  6.945555712150652E+018
+  6.115021178904779E+018
+  5.431371594093604E+018
+  4.863152215327905E+018
+  4.386140083499079E+018
+  3.981612353345271E+018
+  3.635044358228025E+018
+  3.335132965956734E+018
+  3.073066410706710E+018
+  2.841981788417934E+018
+  2.636567141675526E+018
+  2.452777986960249E+018
+  2.287649846996107E+018
+  2.139200730005621E+018
+  2.006433001155473E+018
+  1.889466180762905E+018
+  1.789865953341610E+018
+  1.711287494975907E+018
+  1.660633574739348E+018
+  1.650053587049810E+018
+  1.700295230846386E+018
+  1.846182063503565E+018
+  2.145335383832762E+018
+  2.691670542551900E+018
+  3.635602579492137E+018
+  5.213114282942251E+018
+  7.785513060640224E+018
+  1.189021048127063E+019
+  1.829925581212942E+019
+  2.807542017054447E+019
+  4.260415236674632E+019
+  6.356323805647572E+019
+  9.277210447587536E+019
+  1.318452841787250E+020
+  1.816401342268146E+020
+  2.418389067465324E+020
+  3.109166113761623E+020
+  3.862862847077098E+020
+  4.646265378816728E+020
+  5.423485193708295E+020
+  6.160826539451308E+020
+  6.830747773561997E+020
+  7.414245240991749E+020
+  7.901526853783678E+020
+  8.291272020737673E+020
+  8.588989683870703E+020
+  8.804996847093754E+020
+  8.952421813819571E+020
+  9.045475857996416E+020
+  9.098096527107300E+020
+  9.122972717591001E+020
+  9.130915596048002E+020
+  9.130525475681163E+020
+  9.128105604295511E+020
+  9.127776803470370E+020
+  9.131746267181580E+020
+  9.140679915028535E+020
+  9.154124388451724E+020
+  9.170926408390814E+020
+  9.189605862498603E+020
+  9.208653268776537E+020
+  9.226738284626759E+020
+  9.242830063246036E+020
+  9.256241360668063E+020
+  9.266616628524216E+020
+  9.273887941453311E+020
+  9.278217898826233E+020
+  9.279938771984443E+020
+  9.279493791717906E+020
+  9.277389461854648E+020
+  9.274161642245304E+020
+  9.270351053693783E+020
+  3.143589117212635E+025
+  3.143525342156228E+025
+  3.143777970446987E+025
+  3.144394836438847E+025
+  3.145381861455923E+025
+  3.146686896468837E+025
+  3.148187685033077E+025
+  3.149686183815931E+025
+  3.150910931164812E+025
+  3.151529628688038E+025
+  3.151172632636150E+025
+  3.149466348720733E+025
+  3.146074377748983E+025
+  3.140742781682527E+025
+  3.133344102248489E+025
+  3.123913394812295E+025
+  3.112668851007302E+025
+  3.100009699157337E+025
+  3.086485210331331E+025
+  3.072731033552904E+025
+  3.059372751113336E+025
+  3.046901155753403E+025
+  3.035528670287755E+025
+  3.025040760020073E+025
+  3.014659382012992E+025
+  3.002937011143340E+025
+  2.987699577489430E+025
+  2.966055185304937E+025
+  2.934483356584144E+025
+  2.889016962210050E+025
+  2.825525232227988E+025
+  2.740099372432302E+025
+  2.629529755346978E+025
+  2.491843285461266E+025
+  2.326841446720761E+025
+  2.136548079841521E+025
+  1.925451678843027E+025
+  1.700426330722067E+025
+  1.470254491987200E+025
+  1.244758904092005E+025
+  1.033666267682762E+025
+  8.450804164881933E+024
+  6.833358806059664E+024
+  5.486859807060250E+024
+  4.389143422024207E+024
+  3.507273587399780E+024
+  2.805898978176329E+024
+  2.251727331296156E+024
+  1.815543088407002E+024
+  1.472797185687185E+024
+  1.203442385246018E+024
+  9.914236327712618E+023
+  8.240556343954134E+023
+  6.914088714083330E+023
+  5.857598944420722E+023
+  5.011253855732364E+023
+  4.328805843519903E+023
+  3.774538768355422E+023
+  3.320861586972776E+023
+  2.946433162214621E+023
+  2.634712515521528E+023
+  2.372844446202288E+023
+  2.150806591278957E+023
+  1.960758732265883E+023
+  1.796547803717605E+023
+  1.653332527603780E+023
+  1.527300050653084E+023
+  1.415453696711669E+023
+  1.315456356291929E+023
+  1.225518599058888E+023
+  1.144324885226350E+023
+  1.070995984475937E+023
+  1.005091843833740E+023
+  9.466680409219935E+022
+  8.964126039982502E+022
+  8.559112365293943E+022
+  8.281217819717671E+022
+  8.181880938426451E+022
+  8.347948841751321E+022
+  8.923631840551170E+022
+  1.014510878195551E+023
+  1.239343169458996E+023
+  1.627259287719679E+023
+  2.271987980019773E+023
+  3.315352716184901E+023
+  4.965584139561658E+023
+  7.517506327560903E+023
+  1.137022316504811E+024
+  1.703368452180678E+024
+  2.510972897154486E+024
+  3.622672303025824E+024
+  5.090214301667273E+024
+  6.933505542892867E+024
+  9.126361621298556E+024
+  1.159790738884147E+025
+  1.424086309173639E+025
+  1.692626223085148E+025
+  1.952235623796277E+025
+  2.191286906481434E+025
+  2.401055676200940E+025
+  2.576399372102363E+025
+  2.715765786814858E+025
+  2.820692079016041E+025
+  2.895016062043428E+025
+  2.944004872149630E+025
+  2.973547160490973E+025
+  2.989488333225874E+025
+  2.997135798927834E+025
+  3.000929730485626E+025
+  3.004261309708097E+025
+  3.009417349146417E+025
+  3.017630535096169E+025
+  3.029214029026645E+025
+  3.043756697656906E+025
+  3.060352086072158E+025
+  3.077832693452975E+025
+  3.094983061029882E+025
+  3.110711131817505E+025
+  3.124166095947801E+025
+  3.134800239653832E+025
+  3.142380118296061E+025
+  3.146957804795321E+025
+  3.148816029961162E+025
+  3.148401345979417E+025
+  3.146256331154806E+025
+  3.142956981754085E+025
+  3.139059098897621E+025
+  3.135057679977227E+025
+  3.131360749303482E+025
+  3.128276266972213E+025
+  6.933404902786731E+025
+  6.933771959594279E+025
+  6.934489358380548E+025
+  6.935555093749836E+025
+  6.936902042493805E+025
+  6.938377431524098E+025
+  6.939730002494737E+025
+  6.940607991277955E+025
+  6.940569818797827E+025
+  6.939110656226860E+025
+  6.935705195562038E+025
+  6.929863795220576E+025
+  6.921197422936480E+025
+  6.909484483279902E+025
+  6.894729793665555E+025
+  6.877203963533013E+025
+  6.857450806071056E+025
+  6.836251286850897E+025
+  6.814535187545300E+025
+  6.793236479100501E+025
+  6.773095288138084E+025
+  6.754417609520210E+025
+  6.736812370084195E+025
+  6.718932696388479E+025
+  6.698253099454998E+025
+  6.670916171503854E+025
+  6.631681530502119E+025
+  6.574007078215155E+025
+  6.490289127487872E+025
+  6.372283547634791E+025
+  6.211722682660855E+025
+  6.001128107770667E+025
+  5.734792018808946E+025
+  5.409856554519892E+025
+  5.027362089348377E+025
+  4.593072964948121E+025
+  4.117845111522710E+025
+  3.617308133638321E+025
+  3.110725665981082E+025
+  2.619078700939468E+025
+  2.162653871789603E+025
+  1.757894957085968E+025
+  1.413060808295196E+025
+  1.127792247036796E+025
+  8.966399522414262E+024
+  7.120441381430318E+024
+  5.660947207038951E+024
+  4.514521658446782E+024
+  3.617441776540840E+024
+  2.916625196075287E+024
+  2.369050368473877E+024
+  1.940499735562360E+024
+  1.604111819749645E+024
+  1.338989928053301E+024
+  1.128976565077851E+024
+  9.616268426393612E+023
+  8.273757563571691E+023
+  7.188771234178051E+023
+  6.304865436262008E+023
+  5.578612146025478E+023
+  4.976524985249242E+023
+  4.472710167102576E+023
+  4.047078679780244E+023
+  3.683989637477887E+023
+  3.371223379673495E+023
+  3.099206288217314E+023
+  2.860427965001318E+023
+  2.649006149705690E+023
+  2.460366484103254E+023
+  2.291014004532547E+023
+  2.138382286570887E+023
+  2.000755962872202E+023
+  1.877274853603218E+023
+  1.768045976053017E+023
+  1.674417310976952E+023
+  1.599510300045807E+023
+  1.549174826836108E+023
+  1.533631483791979E+023
+  1.570213399213769E+023
+  1.687824636998139E+023
+  1.933996909772256E+023
+  2.385731870806892E+023
+  3.165596810074890E+023
+  4.464645842112613E+023
+  6.573376393150799E+023
+  9.920614726717519E+023
+  1.511723746984964E+024
+  2.299608990749467E+024
+  3.463054912791796E+024
+  5.130175396684895E+024
+  7.437012843321421E+024
+  1.049952800464053E+025
+  1.437032936636668E+025
+  1.900767558317868E+025
+  2.427609523578866E+025
+  2.996115952163889E+025
+  3.579802244638354E+025
+  4.150961038784484E+025
+  4.684468077533193E+025
+  5.160723062286286E+025
+  5.567253405995908E+025
+  5.898945849261227E+025
+  6.157197535389791E+025
+  6.348422880244416E+025
+  6.482335977300257E+025
+  6.570318233272270E+025
+  6.624047678426461E+025
+  6.654456630623199E+025
+  6.671015681888501E+025
+  6.681310320896192E+025
+  6.690868044424120E+025
+  6.703194385250855E+025
+  6.719976585216574E+025
+  6.741410466805448E+025
+  6.766601055257040E+025
+  6.793984702048385E+025
+  6.821723542500397E+025
+  6.848033318321998E+025
+  6.871420972339820E+025
+  6.890824971325755E+025
+  6.905665381038295E+025
+  6.915820894275504E+025
+  6.921556378008857E+025
+  6.923425947020699E+025
+  6.922171139841906E+025
+  6.918624604018229E+025
+  6.913625789496954E+025
+  6.907956368166496E+025
+  6.902297911259908E+025
+  6.897208624275353E+025
+  2.593274369267467E+026
+  2.593564309794062E+026
+  2.593920907545947E+026
+  2.594318238328209E+026
+  2.594710217600648E+026
+  2.595026842908373E+026
+  2.595173692195834E+026
+  2.595035562725853E+026
+  2.594484588102192E+026
+  2.593393575738580E+026
+  2.591654206642466E+026
+  2.589198543176994E+026
+  2.586021660134894E+026
+  2.582202413924554E+026
+  2.577918446249955E+026
+  2.573450978448364E+026
+  2.569175002064085E+026
+  2.565531139844752E+026
+  2.562976818176870E+026
+  2.561916530558500E+026
+  2.562613785298350E+026
+  2.565090489718837E+026
+  2.569022532834673E+026
+  2.573642666802657E+026
+  2.577663065090897E+026
+  2.579230037188821E+026
+  2.575922528368510E+026
+  2.564804697642724E+026
+  2.542541470700677E+026
+  2.505584441967472E+026
+  2.450432904399803E+026
+  2.373969251705864E+026
+  2.273857297075166E+026
+  2.148974709115871E+026
+  1.999827470158668E+026
+  1.828869400469282E+026
+  1.640632711795144E+026
+  1.441579774939524E+026
+  1.239624038751453E+026
+  1.043341492535724E+026
+  8.609892884483253E+025
+  6.992393028232742E+025
+  5.614489613250493E+025
+  4.475012170326487E+025
+  3.552249518278120E+025
+  2.815941708995313E+025
+  2.234376534740754E+025
+  1.778109475974932E+025
+  1.421571155835837E+025
+  1.143464178386796E+025
+  9.265338267043804E+024
+  7.570641371436632E+024
+  6.242958234802106E+024
+  5.198663848923979E+024
+  4.373167060561606E+024
+  3.716777594490810E+024
+  3.191354347122671E+024
+  2.767645772509328E+024
+  2.423210975266705E+024
+  2.140811873151608E+024
+  1.907179108235977E+024
+  1.712070030702028E+024
+  1.547552512524535E+024
+  1.407462085124405E+024
+  1.286991482899995E+024
+  1.182381130902758E+024
+  1.090686660881153E+024
+  1.009605491444613E+024
+  9.373492396011060E+023
+  8.725526668306203E+023
+  8.142134893811922E+023
+  7.616612903231096E+023
+  7.145587397381040E+023
+  6.729454634669609E+023
+  6.373458158003928E+023
+  6.089788517575926E+023
+  5.901352257161330E+023
+  5.848258052908258E+023
+  5.998653849725301E+023
+  6.466364663062100E+023
+  7.438839614103302E+023
+  9.220145945145239E+023
+  1.229489003286029E+024
+  1.741940261923322E+024
+  2.574514273635725E+024
+  3.897410277575978E+024
+  5.953415224291762E+024
+  9.074014226323987E+024
+  1.368709014212707E+025
+  2.030422959207141E+025
+  2.946983966048053E+025
+  4.164957981914709E+025
+  5.705734789507698E+025
+  7.553001197359644E+025
+  9.652738818027057E+025
+  1.191889878421818E+026
+  1.424466109554532E+026
+  1.651767981862862E+026
+  1.863542109407886E+026
+  2.051715942765351E+026
+  2.211068691916624E+026
+  2.339353265237455E+026
+  2.436981060585004E+026
+  2.506441653424350E+026
+  2.551624826428467E+026
+  2.577169544815614E+026
+  2.587911512629681E+026
+  2.588456888159970E+026
+  2.582882034081159E+026
+  2.574546503150157E+026
+  2.566003342250377E+026
+  2.558991474870420E+026
+  2.554495479069909E+026
+  2.552857031890567E+026
+  2.553920166598903E+026
+  2.557190870933842E+026
+  2.561992006932417E+026
+  2.567597728813473E+026
+  2.573336951547032E+026
+  2.578661545619770E+026
+  2.583180400012063E+026
+  2.586664675241990E+026
+  2.589032378742238E+026
+  2.590321331662462E+026
+  2.590657867031540E+026
+  2.590225342829742E+026
+  2.589235155355332E+026
+  2.587903399530654E+026
+  2.586434366168622E+026
+  2.585009914904029E+026
+  2.710534113374380E+026
+  2.710790897251345E+026
+  2.711144657882707E+026
+  2.711577221028099E+026
+  2.712047234992176E+026
+  2.712484964916546E+026
+  2.712790564699781E+026
+  2.712836890966702E+026
+  2.712477357441185E+026
+  2.711559744082351E+026
+  2.709945701529107E+026
+  2.707534398278450E+026
+  2.704288043214941E+026
+  2.700256113277578E+026
+  2.695594078947420E+026
+  2.690571771959682E+026
+  2.685566511681572E+026
+  2.681036742330671E+026
+  2.677473328911530E+026
+  2.675327906730189E+026
+  2.674920687986119E+026
+  2.676333557349224E+026
+  2.679297608141243E+026
+  2.683086910633783E+026
+  2.686431821960143E+026
+  2.687465387434580E+026
+  2.683715553897562E+026
+  2.672154503193291E+026
+  2.649314879505547E+026
+  2.611480997476934E+026
+  2.554960331289573E+026
+  2.476434772892694E+026
+  2.373379965862353E+026
+  2.244522861451876E+026
+  2.090283127898641E+026
+  1.913117670846416E+026
+  1.717669049490937E+026
+  1.510622250155694E+026
+  1.300213167828436E+026
+  1.095408890302064E+026
+  9.048802002588589E+025
+  7.356680814882679E+025
+  5.913555835437507E+025
+  4.718828175569791E+025
+  3.750273210407202E+025
+  2.976586912772556E+025
+  2.364829718235493E+025
+  1.884343685706691E+025
+  1.508458591011699E+025
+  1.214927624749396E+025
+  9.857034589132821E+024
+  8.064227651184261E+024
+  6.658054630498383E+024
+  5.550744655048355E+024
+  4.674429931134212E+024
+  3.976842848866049E+024
+  3.417820896038911E+024
+  2.966529391607861E+024
+  2.599287845010152E+024
+  2.297886841738802E+024
+  2.048294707357666E+024
+  1.839669192074076E+024
+  1.663605301574008E+024
+  1.513564593308368E+024
+  1.384443264235645E+024
+  1.272246176447045E+024
+  1.173841818277266E+024
+  1.086779400800827E+024
+  1.009154228552323E+024
+  9.395116004962597E+023
+  8.767833021452165E+023
+  8.202548639257178E+023
+  7.695670067589304E+023
+  7.247622388131058E+023
+  6.863991121759732E+023
+  6.557746652252661E+023
+  6.353234995960884E+023
+  6.293042136043999E+023
+  6.449456452509958E+023
+  6.943111459004295E+023
+  7.972501024480732E+023
+  9.859341670550470E+023
+  1.311593610812259E+024
+  1.854113391254611E+024
+  2.734996943676693E+024
+  4.133653395291150E+024
+  6.305709042373501E+024
+  9.599712318220088E+024
+  1.446485375309553E+025
+  2.143709900297069E+025
+  3.108509059910431E+025
+  4.389235515045179E+025
+  6.007541048295712E+025
+  7.945309631107111E+025
+  1.014483995464317E+026
+  1.251501010943167E+026
+  1.494328214629534E+026
+  1.731182125578081E+026
+  1.951361317381929E+026
+  2.146497713049973E+026
+  2.311246138410984E+026
+  2.443394906491288E+026
+  2.543518497817507E+026
+  2.614355284880152E+026
+  2.660086941164895E+026
+  2.685650113710883E+026
+  2.696154816889126E+026
+  2.696437711156129E+026
+  2.690749550699372E+026
+  2.682563010687159E+026
+  2.674483960123488E+026
+  2.668249941017815E+026
+  2.664800072614408E+026
+  2.664399341524896E+026
+  2.666797899081319E+026
+  2.671404288465702E+026
+  2.677452124105250E+026
+  2.684143323705278E+026
+  2.690756903181382E+026
+  2.696719021680245E+026
+  2.701635886608897E+026
+  2.705295606049759E+026
+  2.707648014002039E+026
+  2.708772386605203E+026
+  2.708841036380551E+026
+  2.708083258117287E+026
+  2.706752556569258E+026
+  2.705100505373377E+026
+  2.703358503316132E+026
+  2.701726418611698E+026
+  3.111591581318048E+026
+  3.111742762869322E+026
+  3.112117730034443E+026
+  3.112728402722856E+026
+  3.113550881190449E+026
+  3.114515011772091E+026
+  3.115498654025650E+026
+  3.116328479848366E+026
+  3.116788455042778E+026
+  3.116637520535962E+026
+  3.115636466329260E+026
+  3.113582261062885E+026
+  3.110346976644004E+026
+  3.105917073623183E+026
+  3.100427275898452E+026
+  3.094182198980253E+026
+  3.087658619364684E+026
+  3.081481891639101E+026
+  3.076371704391395E+026
+  3.073055266419873E+026
+  3.072150040844806E+026
+  3.074022864216674E+026
+  3.078636993518421E+026
+  3.085402511101631E+026
+  3.093047914781974E+026
+  3.099531320690945E+026
+  3.102008705642775E+026
+  3.096874638297383E+026
+  3.079888684021909E+026
+  3.046398271229859E+026
+  2.991665307851865E+026
+  2.911296970769918E+026
+  2.801767887193831E+026
+  2.660999083333229E+026
+  2.488928856048798E+026
+  2.287977139765331E+026
+  2.063279698980828E+026
+  1.822569339222188E+026
+  1.575625396299012E+026
+  1.333305011666184E+026
+  1.106294257598668E+026
+  9.034545033709305E+025
+  7.295253963521269E+025
+  5.848115404385660E+025
+  4.669326334807275E+025
+  3.723340157115109E+025
+  2.971947881247447E+025
+  2.379148209873532E+025
+  1.913348274632712E+025
+  1.548010427455407E+025
+  1.261476693881552E+025
+  1.036416553724567E+025
+  8.591511504327601E+024
+  7.189862569222147E+024
+  6.076150485346881E+024
+  5.186120362522446E+024
+  4.470188571078804E+024
+  3.890129921291480E+024
+  3.416469895218933E+024
+  3.026454735519809E+024
+  2.702484001103245E+024
+  2.430907311631950E+024
+  2.201104664190927E+024
+  2.004785820232959E+024
+  1.835458090232756E+024
+  1.688023280279773E+024
+  1.558473789801736E+024
+  1.443665191775529E+024
+  1.341148516148337E+024
+  1.249050410900370E+024
+  1.165993988099971E+024
+  1.091058238291080E+024
+  1.023780435184117E+024
+  9.642154029461316E+023
+  9.130799971858479E+023
+  8.720337117482893E+023
+  8.441811772603248E+023
+  8.349348421390494E+023
+  8.534523635533771E+023
+  9.149682964883162E+023
+  1.044474057484923E+024
+  1.282352448513172E+024
+  1.692707081547150E+024
+  2.375161901164981E+024
+  3.480689201727291E+024
+  5.231304210438022E+024
+  7.941876495778508E+024
+  1.203941374047814E+025
+  1.807059621402716E+025
+  2.668207410046021E+025
+  3.855097651921674E+025
+  5.423780281851707E+025
+  7.396318680537510E+025
+  9.745245027941537E+025
+  1.239466215258901E+026
+  1.522877846286862E+026
+  1.810748727298757E+026
+  2.088665393577665E+026
+  2.343793712682987E+026
+  2.566374912517784E+026
+  2.750502744929147E+026
+  2.894179513321838E+026
+  2.998816054727079E+026
+  3.068410311267112E+026
+  3.108624456540369E+026
+  3.125919009943925E+026
+  3.126831237091053E+026
+  3.117428331915359E+026
+  3.102931662184364E+026
+  3.087493737032471E+026
+  3.074106636186692E+026
+  3.064621702446490E+026
+  3.059860436701295E+026
+  3.059794243710687E+026
+  3.063767109523558E+026
+  3.070732865141409E+026
+  3.079479587874211E+026
+  3.088818717771601E+026
+  3.097724666217648E+026
+  3.105419915524217E+026
+  3.111408746650279E+026
+  3.115468746985203E+026
+  3.117612950746692E+026
+  3.118036337572292E+026
+  3.117057738454939E+026
+  3.115063614294413E+026
+  3.112457936647763E+026
+  3.109622565755562E+026
+  3.106889921016673E+026
+  3.104526953282490E+026
+  2.852459875168509E+026
+  2.852650243493250E+026
+  2.852990391000168E+026
+  2.853476824891766E+026
+  2.854078046922595E+026
+  2.854726823140810E+026
+  2.855316207260824E+026
+  2.855700679103018E+026
+  2.855703177548630E+026
+  2.855129233751748E+026
+  2.853788138974344E+026
+  2.851519656081638E+026
+  2.848223942105230E+026
+  2.843891288558027E+026
+  2.838627064238373E+026
+  2.832666419578712E+026
+  2.826373140409660E+026
+  2.820217587961580E+026
+  2.814730056801489E+026
+  2.810428245987808E+026
+  2.807720798785430E+026
+  2.806792670735767E+026
+  2.807481863652389E+026
+  2.809160173201422E+026
+  2.810632516104984E+026
+  2.810069903024404E+026
+  2.804990376963281E+026
+  2.792300742454559E+026
+  2.768410181273398E+026
+  2.729424916832071E+026
+  2.671430030417296E+026
+  2.590858374282510E+026
+  2.484934791574617E+026
+  2.352164752816748E+026
+  2.192810545527044E+026
+  2.009269875547638E+026
+  1.806251354303553E+026
+  1.590643984484288E+026
+  1.371017567716197E+026
+  1.156771331250838E+026
+  9.570545132457293E+025
+  7.793527729313177E+025
+  6.275376558369181E+025
+  5.016437510559223E+025
+  3.994139429461063E+025
+  3.176167074575901E+025
+  2.528306587188815E+025
+  2.018597457297612E+025
+  1.619161711303562E+025
+  1.306693429101080E+025
+  1.062248666793669E+025
+  8.707226970688113E+024
+  7.202322415888287E+024
+  6.015149650842284E+024
+  5.073967670262412E+024
+  4.323433543804067E+024
+  3.720951089475516E+024
+  3.233763236309147E+024
+  2.836671889656673E+024
+  2.510269107482360E+024
+  2.239575522031810E+024
+  2.012998129085876E+024
+  1.821535824115429E+024
+  1.658175681299014E+024
+  1.517435390350154E+024
+  1.395017459205727E+024
+  1.287548963329951E+024
+  1.192387094720333E+024
+  1.107475930626307E+024
+  1.031244163468671E+024
+  9.625375458794653E+023
+  9.005841670661054E+023
+  8.449962633834896E+023
+  7.958203177670415E+023
+  7.536595332162856E+023
+  7.199119982800036E+023
+  6.971976320838098E+023
+  6.900919818194152E+023
+  7.063504770405308E+023
+  7.588974970655705E+023
+  8.689715183511630E+023
+  1.070951688248955E+024
+  1.419512492601321E+024
+  1.999793562400563E+024
+  2.941101155832837E+024
+  4.434059545652497E+024
+  6.749787341064377E+024
+  1.025719637720203E+025
+  1.543055345921797E+025
+  2.283396590256503E+025
+  3.306317099233542E+025
+  4.662010798410152E+025
+  6.372048555429374E+025
+  8.415723219410305E+025
+  1.073054767068995E+026
+  1.321910243757114E+026
+  1.576200776572600E+026
+  1.823512235929767E+026
+  2.052657586715964E+026
+  2.254983799445650E+026
+  2.425074854581189E+026
+  2.560839396529959E+026
+  2.663116868988866E+026
+  2.734999077529580E+026
+  2.781055026912669E+026
+  2.806596477076032E+026
+  2.817061587539179E+026
+  2.817545090162578E+026
+  2.812473274834742E+026
+  2.805408639943956E+026
+  2.798965927487478E+026
+  2.794821944952284E+026
+  2.793801835441599E+026
+  2.796022865069427E+026
+  2.801074160559004E+026
+  2.808209062370095E+026
+  2.816527631081921E+026
+  2.825131023372525E+026
+  2.833236158688412E+026
+  2.840246568645976E+026
+  2.845781869193408E+026
+  2.849673150630303E+026
+  2.851934647422995E+026
+  2.852722838183684E+026
+  2.852291887351319E+026
+  2.850950452088943E+026
+  2.849023112357452E+026
+  2.846820028383546E+026
+  2.844616182516559E+026
+  2.842639128043445E+026
+  3.233913896585342E+026
+  3.233847213032701E+026
+  3.234195134648959E+026
+  3.235022348619502E+026
+  3.236341300502529E+026
+  3.238094244265681E+026
+  3.240141371487825E+026
+  3.242257906316407E+026
+  3.244142297125709E+026
+  3.245437825256052E+026
+  3.245768068174109E+026
+  3.244784456514521E+026
+  3.242222502406324E+026
+  3.237961294021039E+026
+  3.232078689903430E+026
+  3.224893028265720E+026
+  3.216981494678452E+026
+  3.209165772102560E+026
+  3.202457503252746E+026
+  3.197959657113541E+026
+  3.196725031735692E+026
+  3.199579324694771E+026
+  3.206922557746193E+026
+  3.218528070968962E+026
+  3.233361839904658E+026
+  3.249445992726950E+026
+  3.263789252024614E+026
+  3.272404362805317E+026
+  3.270429379614783E+026
+  3.252366441848451E+026
+  3.212447545432455E+026
+  3.145129361017227E+026
+  3.045704790145341E+026
+  2.910994548949178E+026
+  2.740047170269534E+026
+  2.534735404003096E+026
+  2.300104099887543E+026
+  2.044320099358462E+026
+  1.778119720479025E+026
+  1.513752433323419E+026
+  1.263564560346506E+026
+  1.038073917547844E+026
+  8.432507604525259E+025
+  6.800263648260617E+025
+  5.462008091059184E+025
+  4.381329962250240E+025
+  3.517753346879736E+025
+  2.832427518817633E+025
+  2.290819034693417E+025
+  1.863626865816425E+025
+  1.526733287788709E+025
+  1.260693111998356E+025
+  1.050051902742640E+025
+  8.826490642690726E+024
+  7.489809670608330E+024
+  6.416534927810161E+024
+  5.549289122269200E+024
+  4.843600844025424E+024
+  4.265001511468779E+024
+  3.786748979605399E+024
+  3.388057930276223E+024
+  3.052732966077576E+024
+  2.768117806064657E+024
+  2.524290491795894E+024
+  2.313449008588683E+024
+  2.129443920680374E+024
+  1.967424585942972E+024
+  1.823573535490326E+024
+  1.694910103822138E+024
+  1.579149932044686E+024
+  1.474612230429899E+024
+  1.380172555502407E+024
+  1.295266517117808E+024
+  1.219960974471412E+024
+  1.155126374136469E+024
+  1.102770467036048E+024
+  1.066634543154502E+024
+  1.053214602526011E+024
+  1.073458126959865E+024
+  1.145507426636988E+024
+  1.299012028363470E+024
+  1.581699702933805E+024
+  2.069033327188067E+024
+  2.877791314816972E+024
+  4.184113556641874E+024
+  6.245663021056187E+024
+  9.425657281669030E+024
+  1.421314990435925E+025
+  2.122871995866798E+025
+  3.119775313228856E+025
+  4.486592532229610E+025
+  6.282641002971576E+025
+  8.526355160202897E+025
+  1.117818585058497E+026
+  1.414319889103548E+026
+  1.728234936806291E+026
+  2.043166033549277E+026
+  2.342628941410822E+026
+  2.612335712387689E+026
+  2.841852920454382E+026
+  3.025389616515499E+026
+  3.161740997658624E+026
+  3.253602411126395E+026
+  3.306538477829067E+026
+  3.327864768985332E+026
+  3.325621208473811E+026
+  3.307731243630280E+026
+  3.281375612564432E+026
+  3.252572124030456E+026
+  3.225938254365737E+026
+  3.204611469880780E+026
+  3.190303745174665E+026
+  3.183466276281449E+026
+  3.183536620676539E+026
+  3.189235323347734E+026
+  3.198875750155013E+026
+  3.210652085321671E+026
+  3.222877153166116E+026
+  3.234152556798188E+026
+  3.243465764442578E+026
+  3.250219432591018E+026
+  3.254205952025022E+026
+  3.255544616604593E+026
+  3.254599518494681E+026
+  3.251892762120687E+026
+  3.248021903267130E+026
+  3.243587422752619E+026
+  3.239135728574345E+026
+  3.235120147423070E+026
+  3.231879165911623E+026
+  3.196092484321802E+026
+  3.196193327678993E+026
+  3.196579563529952E+026
+  3.197278128187190E+026
+  3.198274366688920E+026
+  3.199499412153724E+026
+  3.200822911327745E+026
+  3.202053289421089E+026
+  3.202947014239736E+026
+  3.203228611720113E+026
+  3.202621499574477E+026
+  3.200887777069638E+026
+  3.197873775146618E+026
+  3.193556566754119E+026
+  3.188084874130735E+026
+  3.181806565730132E+026
+  3.175274562013904E+026
+  3.169223609493963E+026
+  3.164512240412175E+026
+  3.162027483104452E+026
+  3.162554425349413E+026
+  3.166618076224108E+026
+  3.174310323117042E+026
+  3.185119220474187E+026
+  3.197780596791381E+026
+  3.210172654695602E+026
+  3.219273068001982E+026
+  3.221195757409008E+026
+  3.211321872850725E+026
+  3.184536791267808E+026
+  3.135581195854591E+026
+  3.059517122322746E+026
+  2.952295962298764E+026
+  2.811392138180623E+026
+  2.636433535225602E+026
+  2.429722949906324E+026
+  2.196516284877791E+026
+  1.944922298737450E+026
+  1.685334398285923E+026
+  1.429403481132624E+026
+  1.188695895433828E+026
+  9.729008808630087E+025
+  7.873274224027247E+025
+  6.325209664620483E+025
+  5.061134370828292E+025
+  4.044357329533131E+025
+  3.234941688480548E+025
+  2.594994069743227E+025
+  2.091099636727283E+025
+  1.695083661056041E+025
+  1.383878568399951E+025
+  1.138973833599274E+025
+  9.457217932277034E+024
+  7.926436073032849E+024
+  6.708031169213228E+024
+  5.732734321857075E+024
+  4.946985182442711E+024
+  4.309413367844837E+024
+  3.788060353787721E+024
+  3.358211125021727E+024
+  3.000715709596341E+024
+  2.700697778553685E+024
+  2.446565523877138E+024
+  2.229256687702848E+024
+  2.041664032660939E+024
+  1.878199540165396E+024
+  1.734465347396421E+024
+  1.607007204051043E+024
+  1.493132486541335E+024
+  1.390780093740803E+024
+  1.298434521015814E+024
+  1.215081890793650E+024
+  1.140212811113373E+024
+  1.073887207959109E+024
+  1.016892024143121E+024
+  9.710471960184443E+023
+  9.397531411082227E+023
+  9.289298674733211E+023
+  9.485801381460382E+023
+  1.015322137209132E+024
+  1.156380839653011E+024
+  1.415688672926857E+024
+  1.862884879408026E+024
+  2.606030494009070E+024
+  3.808606357135672E+024
+  5.710563563249289E+024
+  8.651460379734836E+024
+  1.309058380299930E+025
+  1.961403430894432E+025
+  2.891207730384716E+025
+  4.170264156895962E+025
+  5.857149847306500E+025
+  7.973176841187136E+025
+  1.048589517863116E+026
+  1.331072202950701E+026
+  1.632063323253758E+026
+  1.936339090543322E+026
+  2.228367666913621E+026
+  2.494449221427419E+026
+  2.724310140661828E+026
+  2.911907480317247E+026
+  3.055450528008317E+026
+  3.156825626962847E+026
+  3.220682213547554E+026
+  3.253418747216369E+026
+  3.262238352356278E+026
+  3.254366152467107E+026
+  3.236459055366140E+026
+  3.214202532035298E+026
+  3.192073970934912E+026
+  3.173249624284350E+026
+  3.159633512449586E+026
+  3.151986649260708E+026
+  3.150132107776440E+026
+  3.153207186768478E+026
+  3.159931032814689E+026
+  3.168856973948313E+026
+  3.178584417448730E+026
+  3.187914376984377E+026
+  3.195943105704898E+026
+  3.202097530059389E+026
+  3.206122967349373E+026
+  3.208037705712318E+026
+  3.208069923329709E+026
+  3.206589460036659E+026
+  3.204041933429349E+026
+  3.200890118409296E+026
+  3.197567501012464E+026
+  3.194446120813436E+026
+  3.191817836609999E+026
+  3.195386464669341E+026
+  3.195526075491522E+026
+  3.195928784476062E+026
+  3.196614134470808E+026
+  3.197561776869245E+026
+  3.198699903497544E+026
+  3.199898966810800E+026
+  3.200972765742575E+026
+  3.201688238898586E+026
+  3.201785603362975E+026
+  3.201008809384919E+026
+  3.199144388897692E+026
+  3.196065488411736E+026
+  3.191776325584901E+026
+  3.186450608452157E+026
+  3.180456281521922E+026
+  3.174358655514015E+026
+  3.168894669778205E+026
+  3.164912921772582E+026
+  3.163277336684545E+026
+  3.164736832769659E+026
+  3.169768578275045E+026
+  3.178407644799677E+026
+  3.190080141373894E+026
+  3.203459513431106E+026
+  3.216366268589333E+026
+  3.225730169116246E+026
+  3.227631620817173E+026
+  3.217436394448574E+026
+  3.190035174129846E+026
+  3.140195745496344E+026
+  3.063028479455542E+026
+  2.954551870578086E+026
+  2.812321641599342E+026
+  2.636054437151141E+026
+  2.428140624711316E+026
+  2.193912701998676E+026
+  1.941535487829974E+026
+  1.681430416577128E+026
+  1.425244795371221E+026
+  1.184511284724147E+026
+  9.688634789175342E+025
+  7.835499484604509E+025
+  6.290654490682056E+025
+  5.030042001639054E+025
+  4.016712203277745E+025
+  3.210565167564678E+025
+  2.573616081549679E+025
+  2.072409010389680E+025
+  1.678761421071410E+025
+  1.369618476738732E+025
+  1.126493877914979E+025
+  9.347695441735245E+024
+  7.829976273303080E+024
+  6.622719790662795E+024
+  5.656934178622610E+024
+  4.879306980861689E+024
+  4.248684778111245E+024
+  3.733295980267080E+024
+  3.308584809546268E+024
+  2.955535823247335E+024
+  2.659385671190568E+024
+  2.408637013515403E+024
+  2.194306316674160E+024
+  2.009351746325874E+024
+  1.848239423359954E+024
+  1.706616061541803E+024
+  1.581063789700330E+024
+  1.468919222543591E+024
+  1.368144127268561E+024
+  1.277239993472852E+024
+  1.195204270621166E+024
+  1.121533087074900E+024
+  1.056285467486892E+024
+  1.000239699357784E+024
+  9.551968469155091E+023
+  9.245239856215970E+023
+  9.140862758412889E+023
+  9.337989104330975E+023
+  1.000142565633428E+024
+  1.140129463088469E+024
+  1.397368708534274E+024
+  1.841019546899067E+024
+  2.578451620908055E+024
+  3.772187604184783E+024
+  5.660915206815686E+024
+  8.582634086366749E+024
+  1.299488404395109E+025
+  1.948209585273291E+025
+  2.873343322895252E+025
+  4.146704483376304E+025
+  5.827122331601608E+025
+  7.936479958631918E+025
+  1.044319773480205E+026
+  1.326371138914693E+026
+  1.627197210780095E+026
+  1.931647976893241E+026
+  2.224226338043862E+026
+  2.491220965021360E+026
+  2.722302482272451E+026
+  2.911337422298249E+026
+  3.056423575477747E+026
+  3.159329456049580E+026
+  3.224593260346776E+026
+  3.258518648359047E+026
+  3.268236876538775E+026
+  3.260927595247287E+026
+  3.243229607286170E+026
+  3.220836609994034E+026
+  3.198257842330654E+026
+  3.178720900843699E+026
+  3.164195349292164E+026
+  3.155515844854845E+026
+  3.152580794613641E+026
+  3.154598392996833E+026
+  3.160348990248781E+026
+  3.168433538176094E+026
+  3.177483261572948E+026
+  3.186314678375893E+026
+  3.194024274518240E+026
+  3.200026182933671E+026
+  3.204042912596652E+026
+  3.206063270914042E+026
+  3.206282598303323E+026
+  3.205037573649283E+026
+  3.202742911090993E+026
+  3.199834759376206E+026
+  3.196725667979890E+026
+  3.193773222631599E+026
+  3.191261488381153E+026
+  3.330757493481564E+026
+  3.330710365055738E+026
+  3.331055954750030E+026
+  3.331852959041088E+026
+  3.333109440337890E+026
+  3.334765300243469E+026
+  3.336680570062224E+026
+  3.338632291084282E+026
+  3.340322012007448E+026
+  3.341396199900885E+026
+  3.341480021138098E+026
+  3.340222800036264E+026
+  3.337351883900356E+026
+  3.332729740881413E+026
+  3.326407014993590E+026
+  3.318662683640790E+026
+  3.310021803270952E+026
+  3.301241778279773E+026
+  3.293259909163744E+026
+  3.287098398467543E+026
+  3.283727951904598E+026
+  3.283897111116179E+026
+  3.287940624424884E+026
+  3.295585458577236E+026
+  3.305776546211184E+026
+  3.316545540853749E+026
+  3.324944839127470E+026
+  3.327066651349183E+026
+  3.318163878566732E+026
+  3.292886394131513E+026
+  3.245642176168556E+026
+  3.171085159148080E+026
+  3.064717200079364E+026
+  2.923567191996700E+026
+  2.746875802013410E+026
+  2.536674635498218E+026
+  2.298116796605759E+026
+  2.039412349172530E+026
+  1.771267825530150E+026
+  1.505831456598376E+026
+  1.255289183979097E+026
+  1.029963919608604E+026
+  8.356370842899699E+025
+  6.730889154966914E+025
+  5.400113176260772E+025
+  4.326918788326807E+025
+  3.470401073409814E+025
+  2.791483150052169E+025
+  2.255541123110896E+025
+  1.833268494959391E+025
+  1.500591093823996E+025
+  1.238132118096406E+025
+  1.030514900491921E+025
+  8.656566908911440E+024
+  7.341266210777033E+024
+  6.285957634312353E+024
+  5.433831722462190E+024
+  4.740902060000673E+024
+  4.173108570004583E+024
+  3.704049780159446E+024
+  3.313222487479926E+024
+  2.984663784150889E+024
+  2.705908350501297E+024
+  2.467190718463917E+024
+  2.260836871824333E+024
+  2.080801832371753E+024
+  1.922319889164604E+024
+  1.781642160586322E+024
+  1.655842674336412E+024
+  1.542679668644639E+024
+  1.440504047124531E+024
+  1.348212731357613E+024
+  1.265252223669318E+024
+  1.191688691104036E+024
+  1.128377751622828E+024
+  1.077293390109097E+024
+  1.042115846452740E+024
+  1.029238934484907E+024
+  1.049444671331429E+024
+  1.120612527311175E+024
+  1.271981456599387E+024
+  1.550650199524957E+024
+  2.031141078833735E+024
+  2.828868847560106E+024
+  4.118072186209303E+024
+  6.153894134036727E+024
+  9.296432590821847E+024
+  1.403124678005404E+025
+  2.097562186794624E+025
+  3.085293398629221E+025
+  4.440983846881534E+025
+  6.224575164390105E+025
+  8.455871166043710E+025
+  1.109744146965817E+026
+  1.405694892276869E+026
+  1.719804118501793E+026
+  2.035910211905503E+026
+  2.337693818016978E+026
+  2.610936494777144E+026
+  2.845172688438881E+026
+  3.034487869590329E+026
+  3.177483498641201E+026
+  3.276616952123159E+026
+  3.337195777336912E+026
+  3.366280463842124E+026
+  3.371673812991237E+026
+  3.361091315072083E+026
+  3.341542329030627E+026
+  3.318914387679969E+026
+  3.297737959087876E+026
+  3.281106707594276E+026
+  3.270729653954370E+026
+  3.267091204563550E+026
+  3.269691495669255E+026
+  3.277334654732957E+026
+  3.288429527546582E+026
+  3.301268792989795E+026
+  3.314259035752500E+026
+  3.326084949077614E+026
+  3.335802637880068E+026
+  3.342867298405117E+026
+  3.347107972973251E+026
+  3.348666344121414E+026
+  3.347917197463526E+026
+  3.345384690117413E+026
+  3.341662934385941E+026
+  3.337346423860485E+026
+  3.332975621906063E+026
+  3.329000001212800E+026
+  3.325757630832884E+026
+  3.226672255986071E+026
+  3.226354265004342E+026
+  3.226615201680675E+026
+  3.227571557718915E+026
+  3.229274864738701E+026
+  3.231686411537664E+026
+  3.234658569410187E+026
+  3.237926456601313E+026
+  3.241112940863138E+026
+  3.243750085103236E+026
+  3.245318092956949E+026
+  3.245300358776401E+026
+  3.243251220821743E+026
+  3.238870619849797E+026
+  3.232077240680265E+026
+  3.223069615736140E+026
+  3.212363552785722E+026
+  3.200794391763475E+026
+  3.189474356751494E+026
+  3.179698964221699E+026
+  3.172802058487943E+026
+  3.169966051577967E+026
+  3.172001365663333E+026
+  3.179115669857831E+026
+  3.190698093870972E+026
+  3.205145457948577E+026
+  3.219756687631992E+026
+  3.230718743853681E+026
+  3.233203715523104E+026
+  3.221592899368597E+026
+  3.189839144190405E+026
+  3.131971107986682E+026
+  3.042728659983656E+026
+  2.918293891766196E+026
+  2.757046044010515E+026
+  2.560225615850166E+026
+  2.332356050406106E+026
+  2.081262400784458E+026
+  1.817568417812205E+026
+  1.553657200092076E+026
+  1.302231714257373E+026
+  1.074314516499157E+026
+  8.763826955143038E+025
+  7.097652619857574E+025
+  5.725389824741504E+025
+  4.612386087346820E+025
+  3.719159074817967E+025
+  3.007311154944526E+025
+  2.442404037048889E+025
+  1.995011321741455E+025
+  1.640767019739298E+025
+  1.359920718429928E+025
+  1.136698063757998E+025
+  9.586292581468778E+024
+  8.159260854325664E+024
+  7.009408141550798E+024
+  6.077147244627562E+024
+  5.316111886371808E+024
+  4.690227658966915E+024
+  4.171403058111698E+024
+  3.737725796718656E+024
+  3.372063273547496E+024
+  3.060982157278226E+024
+  2.793917674319807E+024
+  2.562537154928923E+024
+  2.360254292945329E+024
+  2.181860399148620E+024
+  2.023246897644881E+024
+  1.881199824513330E+024
+  1.753252686194306E+024
+  1.637589424679454E+024
+  1.532995327562662E+024
+  1.438861752362885E+024
+  1.355262277636447E+024
+  1.283135928417550E+024
+  1.224641134914441E+024
+  1.183787058432241E+024
+  1.167513032594597E+024
+  1.187478663841850E+024
+  1.262951290812822E+024
+  1.425331996405045E+024
+  1.725028285397274E+024
+  2.241511489013378E+024
+  3.097385791210340E+024
+  4.476955287655817E+024
+  6.648806436957313E+024
+  9.989911946378486E+024
+  1.500524165774057E+025
+  2.233150178746608E+025
+  3.270658691138887E+025
+  4.687890389126468E+025
+  6.542616807544252E+025
+  8.849080458981987E+025
+  1.156092088670553E+026
+  1.457489679808144E+026
+  1.774364569946196E+026
+  2.089643074186596E+026
+  2.386451008345387E+026
+  2.650467108838252E+026
+  2.871580360747900E+026
+  3.044615566551233E+026
+  3.169176867912231E+026
+  3.248850348411143E+026
+  3.290071384478108E+026
+  3.300925937492343E+026
+  3.290068427166424E+026
+  3.265848472898035E+026
+  3.235671584821988E+026
+  3.205581652760463E+026
+  3.180039451838997E+026
+  3.161870222867635E+026
+  3.152354943590649E+026
+  3.151438729597471E+026
+  3.158025024095685E+026
+  3.170318263549218E+026
+  3.186174209411571E+026
+  3.203419038056546E+026
+  3.220106371056729E+026
+  3.234694033763489E+026
+  3.246136198535635E+026
+  3.253898545226123E+026
+  3.257912471552483E+026
+  3.258488878119198E+026
+  3.256212345286839E+026
+  3.251832326206976E+026
+  3.246161586702683E+026
+  3.239988474583159E+026
+  3.234008938352695E+026
+  3.228780974951060E+026
+  3.224700811458096E+026
+  3.193431631680951E+026
+  3.193154604780028E+026
+  3.193432324541270E+026
+  3.194373393840744E+026
+  3.196023363468728E+026
+  3.198340697835464E+026
+  3.201179322781637E+026
+  3.204281359603766E+026
+  3.207282913589009E+026
+  3.209735881760334E+026
+  3.211146715052428E+026
+  3.211030654564928E+026
+  3.208977997415800E+026
+  3.204726605438914E+026
+  3.198232315645133E+026
+  3.189726892183834E+026
+  3.179752122324410E+026
+  3.169158872004683E+026
+  3.159061726363538E+026
+  3.150743547043869E+026
+  3.145509847836938E+026
+  3.144499798499541E+026
+  3.148467937326737E+026
+  3.157557083971844E+026
+  3.171087349952486E+026
+  3.187387848849728E+026
+  3.203696745208314E+026
+  3.216152423671220E+026
+  3.219894922107242E+026
+  3.209293035955464E+026
+  3.178308047659752E+026
+  3.120997486162781E+026
+  3.032147974012514E+026
+  2.908001549662150E+026
+  2.747003885450689E+026
+  2.550460116874653E+026
+  2.322947593819509E+026
+  2.072326367676432E+026
+  1.809230564097764E+026
+  1.546027329332344E+026
+  1.295380415359105E+026
+  1.068259659791937E+026
+  8.710953314752477E+025
+  7.051872412952277E+025
+  5.685978453729910E+025
+  4.578575638609215E+025
+  3.690200412595399E+025
+  2.982509166919876E+025
+  2.421134796204619E+025
+  1.976727667610175E+025
+  1.624997135070738E+025
+  1.346262795361041E+025
+  1.124813078353177E+025
+  9.482331219963365E+024
+  8.067819330857693E+024
+  6.928518458858476E+024
+  6.005178043440686E+024
+  5.251712615482322E+024
+  4.632280768874768E+024
+  4.118983615234104E+024
+  3.690067706779789E+024
+  3.328531234662777E+024
+  3.021048478599761E+024
+  2.757143157701387E+024
+  2.528555320091014E+024
+  2.328758315078311E+024
+  2.152592212397109E+024
+  1.995987993503170E+024
+  1.855763337800856E+024
+  1.729476409356268E+024
+  1.615329417133435E+024
+  1.512119778843169E+024
+  1.419244695856774E+024
+  1.336776603592184E+024
+  1.265644861259708E+024
+  1.207986848492521E+024
+  1.167774304841600E+024
+  1.151884432637475E+024
+  1.171876519431739E+024
+  1.246858336399895E+024
+  1.407980435767196E+024
+  1.705263069638444E+024
+  2.217590916326405E+024
+  3.066701851004832E+024
+  4.435660677130139E+024
+  6.591349284576653E+024
+  9.908508692288897E+024
+  1.488936902540891E+025
+  2.216756331164143E+025
+  3.247800341265366E+025
+  4.656697177118837E+025
+  6.501208451692391E+025
+  8.795900926021812E+025
+  1.149509690863923E+026
+  1.449646728786284E+026
+  1.765361377411908E+026
+  2.079662245767448E+026
+  2.375726567999128E+026
+  2.639243881085889E+026
+  2.860072445789412E+026
+  3.032971790649692E+026
+  3.157458292700653E+026
+  3.237021628278352E+026
+  3.278005053187325E+026
+  3.288417068356912E+026
+  3.276856487440158E+026
+  3.251643239568370E+026
+  3.220180335238118E+026
+  3.188535241295938E+026
+  3.161215241685900E+026
+  3.141110185536582E+026
+  3.129577641365573E+026
+  3.126644415814885E+026
+  3.131293734635677E+026
+  3.141801468029301E+026
+  3.156081235468911E+026
+  3.171999962331304E+026
+  3.187633302777324E+026
+  3.201442675477600E+026
+  3.212369289620321E+026
+  3.219852357155308E+026
+  3.223787024346964E+026
+  3.224442071996652E+026
+  3.222357817438005E+026
+  3.218240584688964E+026
+  3.212863829884676E+026
+  3.206982430184264E+026
+  3.201266023284866E+026
+  3.196254090282676E+026
+  3.192332127286087E+026
+  3.240082640068532E+026
+  3.239994017426791E+026
+  3.240337581347666E+026
+  3.241183080637986E+026
+  3.242546576644079E+026
+  3.244371743382285E+026
+  3.246517320865459E+026
+  3.248753696985280E+026
+  3.250770842236012E+026
+  3.252199998680276E+026
+  3.252649615934847E+026
+  3.251753802024781E+026
+  3.249229858235183E+026
+  3.244939436056728E+026
+  3.238945641098859E+026
+  3.231556741466250E+026
+  3.223346423306909E+026
+  3.215140986034060E+026
+  3.207965767576328E+026
+  3.202946675951873E+026
+  3.201167905307678E+026
+  3.203493210686506E+026
+  3.210364592573658E+026
+  3.221597798922392E+026
+  3.236197701473774E+026
+  3.252217798889986E+026
+  3.266686967543559E+026
+  3.275623889389368E+026
+  3.274156337471241E+026
+  3.256759189727384E+026
+  3.217620869748963E+026
+  3.151140420767537E+026
+  3.052543018265828E+026
+  2.918577227499799E+026
+  2.748222206116516E+026
+  2.543292286733942E+026
+  2.308793005986011E+026
+  2.052877639221237E+026
+  1.786298174036585E+026
+  1.521347995419435E+026
+  1.270439736817515E+026
+  1.044167727674586E+026
+  8.485678101808651E+025
+  6.846136556705810E+025
+  5.501279650542835E+025
+  4.414786083893076E+025
+  3.546182634701166E+025
+  2.856570703095528E+025
+  2.311343340150100E+025
+  1.881116453590490E+025
+  1.541689416561939E+025
+  1.273539700397780E+025
+  1.061143690891396E+025
+  8.922806395059706E+024
+  7.573956413093439E+024
+  6.490514913439557E+024
+  5.614746306480998E+024
+  4.901883479403091E+024
+  4.317215116628378E+024
+  3.833800544721196E+024
+  3.430692439128875E+024
+  3.091563357073299E+024
+  2.803649439838626E+024
+  2.556941089993619E+024
+  2.343564908029792E+024
+  2.157313367497631E+024
+  1.993288684916077E+024
+  1.847635374853861E+024
+  1.717342497420989E+024
+  1.600102161624900E+024
+  1.494216136917452E+024
+  1.398548330481213E+024
+  1.312528603571225E+024
+  1.236224630249247E+024
+  1.170515730594438E+024
+  1.117429399801220E+024
+  1.080742460362436E+024
+  1.067010472694273E+024
+  1.087277849847691E+024
+  1.159842102493255E+024
+  1.314597794945331E+024
+  1.599653303977182E+024
+  2.091050640532642E+024
+  2.906427000292209E+024
+  4.223155760427660E+024
+  6.300603020677404E+024
+  9.504223857752477E+024
+  1.432582546128475E+025
+  2.138907589189644E+025
+  3.142233942605139E+025
+  4.517334327442588E+025
+  6.323513154238224E+025
+  8.578829744962844E+025
+  1.124295881856687E+026
+  1.421990651907653E+026
+  1.736945923509833E+026
+  2.052656446944446E+026
+  2.352558551410445E+026
+  2.622325602956985E+026
+  2.851530277733905E+026
+  3.034428347702033E+026
+  3.169892362809802E+026
+  3.260712983905498E+026
+  3.312555510085321E+026
+  3.332830832859649E+026
+  3.329660779193721E+026
+  3.311031947622961E+026
+  3.284166567850348E+026
+  3.255101428586222E+026
+  3.228451370292571E+026
+  3.207332013494170E+026
+  3.193417960221884E+026
+  3.187112164122676E+026
+  3.187798287413681E+026
+  3.194142595115325E+026
+  3.204408570747185E+026
+  3.216748738974587E+026
+  3.229445037310612E+026
+  3.241080114879939E+026
+  3.250634273268644E+026
+  3.257513571650967E+026
+  3.261522396117567E+026
+  3.262798230865285E+026
+  3.261727051824738E+026
+  3.258854183367535E+026
+  3.254799671526336E+026
+  3.250184058285228E+026
+  3.245570112726695E+026
+  3.241423023149981E+026
+  3.238088314918921E+026
+  3.244367104580795E+026
+  3.244063565520877E+026
+  3.244333783141712E+026
+  3.245291872864898E+026
+  3.246987219807560E+026
+  3.249379433921471E+026
+  3.252319911860601E+026
+  3.255543704833880E+026
+  3.258674666721900E+026
+  3.261246965592920E+026
+  3.262743986357161E+026
+  3.262653210490562E+026
+  3.260533667686618E+026
+  3.256090165412141E+026
+  3.249245888039566E+026
+  3.240202875598482E+026
+  3.229478792811009E+026
+  3.217908554314540E+026
+  3.206601140062335E+026
+  3.196845630734036E+026
+  3.189966095794057E+026
+  3.187131956601612E+026
+  3.189137842908144E+026
+  3.196173525339185E+026
+  3.207609069300617E+026
+  3.221822192297626E+026
+  3.236093926679022E+026
+  3.246595854775907E+026
+  3.248488511691895E+026
+  3.236146740406507E+026
+  3.203523234481888E+026
+  3.144653845641312E+026
+  3.054293757186790E+026
+  2.928648784448430E+026
+  2.766129857619627E+026
+  2.568015714568851E+026
+  2.338872058047481E+026
+  2.086566654433017E+026
+  1.821762195949341E+026
+  1.556872753489930E+026
+  1.304620982508938E+026
+  1.076035436535419E+026
+  8.775839695965577E+025
+  7.105753902628038E+025
+  5.730625281301264E+025
+  4.615571282163452E+025
+  3.720910214181432E+025
+  3.008082238635081E+025
+  2.442522600829019E+025
+  1.994709319765621E+025
+  1.640205871470078E+025
+  1.359210788806924E+025
+  1.135913365959442E+025
+  9.578183010228062E+024
+  8.151197338239479E+024
+  7.001579009405030E+024
+  6.069660064187792E+024
+  5.309021022718447E+024
+  4.683553253620090E+024
+  4.165143945262877E+024
+  3.731868179048434E+024
+  3.366586459937804E+024
+  3.055862281787430E+024
+  2.789130038477014E+024
+  2.558057637515109E+024
+  2.356060131903564E+024
+  2.177930552768883E+024
+  2.019562124525598E+024
+  1.877742575276311E+024
+  1.750006868468268E+024
+  1.634540082430906E+024
+  1.530128263932512E+024
+  1.436163120571993E+024
+  1.352718167597480E+024
+  1.280731990241249E+024
+  1.222362311891984E+024
+  1.181617567134723E+024
+  1.165436857225610E+024
+  1.185481081565919E+024
+  1.261022408913888E+024
+  1.423474110863778E+024
+  1.723270283597149E+024
+  2.239935802699295E+024
+  3.096176859540985E+024
+  4.476483275103408E+024
+  6.649765754926650E+024
+  9.993539559832934E+024
+  1.501364183760599E+025
+  2.234809545866540E+025
+  3.273667479813575E+025
+  4.693026986892323E+025
+  6.550953993311097E+025
+  8.861987870473105E+025
+  1.158000879232144E+026
+  1.460191139039074E+026
+  1.778032539251066E+026
+  2.094434466831570E+026
+  2.392490814412295E+026
+  2.657837175024926E+026
+  2.880313527969416E+026
+  3.054695437638532E+026
+  3.180542357139729E+026
+  3.261403518861873E+026
+  3.303686957242343E+026
+  3.315461121121844E+026
+  3.305372150884542E+026
+  3.281769525986603E+026
+  3.252065464940791E+026
+  3.222316087013036E+026
+  3.196998606654847E+026
+  3.178957612973345E+026
+  3.169495035520277E+026
+  3.168577244904981E+026
+  3.175127993589487E+026
+  3.187369958665713E+026
+  3.203174161359020E+026
+  3.220378429893852E+026
+  3.237044137837966E+026
+  3.251633020642594E+026
+  3.263099696506439E+026
+  3.270907445281409E+026
+  3.274983168145534E+026
+  3.275631954868418E+026
+  3.273432023304673E+026
+  3.269126624801557E+026
+  3.263523088227425E+026
+  3.257405526367735E+026
+  3.251467129781924E+026
+  3.246264746331144E+026
+  3.242195033301517E+026
+  3.172117925845694E+026
+  3.171472831699695E+026
+  3.171607448954593E+026
+  3.172703602145262E+026
+  3.174863114652508E+026
+  3.178073277661201E+026
+  3.182179327459518E+026
+  3.186868663757367E+026
+  3.191670878695696E+026
+  3.195977691217723E+026
+  3.199084681350624E+026
+  3.200254018572419E+026
+  3.198795002125903E+026
+  3.194156368471481E+026
+  3.186021159407278E+026
+  3.174392262386391E+026
+  3.159655038095987E+026
+  3.142603098453998E+026
+  3.124414754722094E+026
+  3.106571346783480E+026
+  3.090714660590089E+026
+  3.078448452541595E+026
+  3.071097683528065E+026
+  3.069447015516544E+026
+  3.073486021931521E+026
+  3.082191419458793E+026
+  3.093376254950957E+026
+  3.103633084054000E+026
+  3.108394003568749E+026
+  3.102125928834719E+026
+  3.078674483756883E+026
+  3.031762168171454E+026
+  2.955632343835566E+026
+  2.845806079568933E+026
+  2.699882283490019E+026
+  2.518266574703617E+026
+  2.304673637311898E+026
+  2.066233494022472E+026
+  1.813068988288855E+026
+  1.557312969392597E+026
+  1.311687460308824E+026
+  1.087473740095706E+026
+  8.915536815383960E+025
+  7.256877615863298E+025
+  5.883387167375275E+025
+  4.763541217961160E+025
+  3.860222239469977E+025
+  3.136720854513476E+025
+  2.559740115133748E+025
+  2.100579710646744E+025
+  1.735299559532791E+025
+  1.444367427733441E+025
+  1.212089592454112E+025
+  1.025990348248172E+025
+  8.762247492495888E+024
+  7.550616545703409E+024
+  6.564479733633950E+024
+  5.756515275543660E+024
+  5.089738665221647E+024
+  4.535223929267874E+024
+  4.070312875773263E+024
+  3.677217915156006E+024
+  3.341937938627697E+024
+  3.053420812087144E+024
+  2.802918932086553E+024
+  2.583495465586180E+024
+  2.389648242105320E+024
+  2.217025927949878E+024
+  2.062217432138757E+024
+  1.922600994789309E+024
+  1.796244789206070E+024
+  1.681857051523734E+024
+  1.578792004465212E+024
+  1.487129982401378E+024
+  1.407868837133929E+024
+  1.343292663418113E+024
+  1.297628165886984E+024
+  1.278164727706184E+024
+  1.297107721559471E+024
+  1.374559832168392E+024
+  1.543178743270385E+024
+  1.855221141061239E+024
+  2.392799420125933E+024
+  3.282139510011291E+024
+  4.712242285215328E+024
+  6.957315076234409E+024
+  1.040024595664393E+025
+  1.555079859684935E+025
+  2.304682799831855E+025
+  3.361991821683168E+025
+  4.799982653144520E+025
+  6.672835152553779E+025
+  8.989251763119498E+025
+  1.169594857629250E+026
+  1.468268411646434E+026
+  1.779649154023010E+026
+  2.086374337225050E+026
+  2.371635162121788E+026
+  2.621543130858660E+026
+  2.826731687072824E+026
+  2.982977885318378E+026
+  3.090922481317080E+026
+  3.155155614868313E+026
+  3.182990550447048E+026
+  3.183201046334297E+026
+  3.164903634214775E+026
+  3.136672016119295E+026
+  3.105903192520864E+026
+  3.078419061567398E+026
+  3.058275180344574E+026
+  3.047748063270527E+026
+  3.047473779583525E+026
+  3.056708504322436E+026
+  3.073675760854850E+026
+  3.095958367326125E+026
+  3.120889645456608E+026
+  3.145901304863224E+026
+  3.168795174056930E+026
+  3.187920527001535E+026
+  3.202254426923410E+026
+  3.211395750827466E+026
+  3.215492516740657E+026
+  3.215126523091313E+026
+  3.211179022075724E+026
+  3.204696149403777E+026
+  3.196765645902861E+026
+  3.188412147151024E+026
+  3.180517287922208E+026
+  3.173767452279160E+026
+  3.168628464389582E+026
+  3.265087322281111E+026
+  3.264977925949900E+026
+  3.265310628662730E+026
+  3.266158735066761E+026
+  3.267541132012576E+026
+  3.269402911858937E+026
+  3.271602061733760E+026
+  3.273905234308416E+026
+  3.275994884083511E+026
+  3.277490250841041E+026
+  3.277982767317942E+026
+  3.277084251551022E+026
+  3.274484551835876E+026
+  3.270013272145703E+026
+  3.263697970205190E+026
+  3.255809519223879E+026
+  3.246884560892262E+026
+  3.237715362735521E+026
+  3.229299217006907E+026
+  3.222743032696199E+026
+  3.219123918849893E+026
+  3.219312828666459E+026
+  3.223774827061989E+026
+  3.232365162490154E+026
+  3.244144072249638E+026
+  3.257234564899471E+026
+  3.268746403609977E+026
+  3.274786901896832E+026
+  3.270575923827707E+026
+  3.250679151424057E+026
+  3.209369462951139E+026
+  3.141118738965959E+026
+  3.041208038995133E+026
+  2.906419719167939E+026
+  2.735740183123899E+026
+  2.530961464650471E+026
+  2.297036664222351E+026
+  2.042039207500259E+026
+  1.776620347501064E+026
+  1.512961854811546E+026
+  1.263365976404070E+026
+  1.038332254559241E+026
+  8.438349913934298E+025
+  6.808229754042824E+025
+  5.471189024239856E+025
+  4.391042087865080E+025
+  3.527511178550196E+025
+  2.841906707535503E+025
+  2.299818983314802E+025
+  1.872037617979576E+025
+  1.534508403508813E+025
+  1.267828623197953E+025
+  1.056570664841078E+025
+  8.885895394695294E+024
+  7.543894621064055E+024
+  6.465789860465553E+024
+  5.594197598950004E+024
+  4.884620507285132E+024
+  4.302553447596664E+024
+  3.821213087478827E+024
+  3.419772124999325E+024
+  3.081994714904345E+024
+  2.795186985297845E+024
+  2.549392905727057E+024
+  2.336780159672396E+024
+  2.151172792168284E+024
+  1.987697315445461E+024
+  1.842516935889435E+024
+  1.712635038162057E+024
+  1.595754580935648E+024
+  1.490185313047030E+024
+  1.394796587999944E+024
+  1.309021226342250E+024
+  1.232927043858420E+024
+  1.167389799448230E+024
+  1.114427961849908E+024
+  1.077800676869831E+024
+  1.064031685657459E+024
+  1.084110256609200E+024
+  1.156240477781372E+024
+  1.310161507339449E+024
+  1.593727851235826E+024
+  2.082574980412240E+024
+  2.893703772974735E+024
+  4.203517893525273E+024
+  6.269951858021502E+024
+  9.456427258833284E+024
+  1.425199892043308E+025
+  2.127683781871458E+025
+  3.125524470350533E+025
+  4.493085976246771E+025
+  6.289371198622723E+025
+  8.532407643237777E+025
+  1.118222681444184E+026
+  1.414358529760161E+026
+  1.727735654755249E+026
+  2.041979216393147E+026
+  2.340661133759150E+026
+  2.609578407748256E+026
+  2.838401317164484E+026
+  3.021448443298453E+026
+  3.157617381784382E+026
+  3.249687942226283E+026
+  3.303283723322382E+026
+  3.325749638259429E+026
+  3.325124126123123E+026
+  3.309299479098764E+026
+  3.285398587426795E+026
+  3.259359159825726E+026
+  3.235701975020093E+026
+  3.217457816323999E+026
+  3.206229195520947E+026
+  3.202362355532590E+026
+  3.205201166426831E+026
+  3.213389343790921E+026
+  3.225184188671713E+026
+  3.238746500261539E+026
+  3.252378293032790E+026
+  3.264691050908203E+026
+  3.274699579060802E+026
+  3.281847248256029E+026
+  3.285976104076047E+026
+  3.287259666291553E+026
+  3.286116870452401E+026
+  3.283121970881485E+026
+  3.278919378829285E+026
+  3.274149226685618E+026
+  3.269389159652008E+026
+  3.265114809488324E+026
+  3.261678146250564E+026
+  3.296197964653313E+026
+  3.295980138496061E+026
+  3.296276557552400E+026
+  3.297182905479872E+026
+  3.298734705565610E+026
+  3.300884631248442E+026
+  3.303486104897055E+026
+  3.306286570842576E+026
+  3.308933110946999E+026
+  3.310993245510437E+026
+  3.311991778612077E+026
+  3.311462217020877E+026
+  3.309009453688712E+026
+  3.304378183795606E+026
+  3.297519076602106E+026
+  3.288642809269901E+026
+  3.278251104583999E+026
+  3.267134143677775E+026
+  3.256325475790317E+026
+  3.247009111803305E+026
+  3.240378837061663E+026
+  3.237456406402098E+026
+  3.238882254130304E+026
+  3.244698496890835E+026
+  3.254148239518153E+026
+  3.265516855317213E+026
+  3.276040040465834E+026
+  3.281900772239729E+026
+  3.278333873108259E+026
+  3.259853291706137E+026
+  3.220612773755807E+026
+  3.154902932346745E+026
+  3.057773234891638E+026
+  2.925742778059088E+026
+  2.757528181066810E+026
+  2.554675205185715E+026
+  2.321945789389615E+026
+  2.067305327537590E+026
+  1.801398429799243E+026
+  1.536504632783071E+026
+  1.285113654937971E+026
+  1.057964167266251E+026
+  8.612505144362305E+025
+  6.960760953826397E+025
+  5.603572722020111E+025
+  4.505240459597254E+025
+  3.625662851749041E+025
+  2.926129668206247E+025
+  2.372095442286178E+025
+  1.934155355061628E+025
+  1.588038987297100E+025
+  1.314128325124612E+025
+  1.096794275301680E+025
+  9.237105977720421E+024
+  7.852227862570741E+024
+  6.738030347575474E+024
+  5.835974613266749E+024
+  5.100594424710868E+024
+  4.496578080241774E+024
+  3.996474372067331E+024
+  3.578904965320617E+024
+  3.227180447409730E+024
+  2.928234142203385E+024
+  2.671803889465459E+024
+  2.449806242996469E+024
+  2.255859600831631E+024
+  2.084922683436478E+024
+  1.933022773401174E+024
+  1.797054636204039E+024
+  1.674636609926229E+024
+  1.564015680723983E+024
+  1.464019346546502E+024
+  1.374059928755490E+024
+  1.294208454447744E+024
+  1.225372829306403E+024
+  1.169642369116303E+024
+  1.130902772630682E+024
+  1.115888423907442E+024
+  1.135929078188240E+024
+  1.209770396051016E+024
+  1.368000977214022E+024
+  1.659785738218537E+024
+  2.162739321236737E+024
+  2.996772766578250E+024
+  4.342428046502806E+024
+  6.463283628899388E+024
+  9.730058981959872E+024
+  1.464059611750807E+025
+  2.182460003587231E+025
+  3.201500937894229E+025
+  4.596036218549138E+025
+  6.424768419793549E+025
+  8.704184192701267E+025
+  1.139146693209136E+026
+  1.438768468972692E+026
+  1.754983084299082E+026
+  2.071079980283967E+026
+  2.370410304477163E+026
+  2.638703059768400E+026
+  2.865719421479853E+026
+  3.046005256154318E+026
+  3.178780491369085E+026
+  3.267193840099758E+026
+  3.317238471478395E+026
+  3.336592087978671E+026
+  3.333562341246822E+026
+  3.316230738509779E+026
+  3.291821975218841E+026
+  3.266288278912916E+026
+  3.244084148144458E+026
+  3.228105213000506E+026
+  3.219766362176065E+026
+  3.219193350886993E+026
+  3.225497800248761E+026
+  3.237099991251060E+026
+  3.252060594570163E+026
+  3.268384264442896E+026
+  3.284265655544075E+026
+  3.298260331926803E+026
+  3.309376135751286E+026
+  3.317091887365314E+026
+  3.321318259733145E+026
+  3.322320054101817E+026
+  3.320619552785784E+026
+  3.316896673861798E+026
+  3.311895456137880E+026
+  3.306342972028252E+026
+  3.300886359614476E+026
+  3.296050517525781E+026
+  3.292215640360977E+026
+  3.193723823887502E+026
+  3.193201467973204E+026
+  3.193386100142470E+026
+  3.194435357980590E+026
+  3.196432213108166E+026
+  3.199353816155771E+026
+  3.203047220000620E+026
+  3.207216343867852E+026
+  3.211423862460834E+026
+  3.215111755095189E+026
+  3.217642095720698E+026
+  3.218357058732040E+026
+  3.216654876323564E+026
+  3.212075785274771E+026
+  3.204389032114511E+026
+  3.193669538058269E+026
+  3.180351342411416E+026
+  3.165244772573929E+026
+  3.149505857661711E+026
+  3.134550198623900E+026
+  3.121909367904654E+026
+  3.113035435351763E+026
+  3.109067382006739E+026
+  3.110580622654799E+026
+  3.117346281294448E+026
+  3.128129354766642E+026
+  3.140554340872303E+026
+  3.151064025948125E+026
+  3.154993125530065E+026
+  3.146774233433953E+026
+  3.120288681735841E+026
+  3.069367232981128E+026
+  2.988431285108202E+026
+  2.873240658698618E+026
+  2.721677580407473E+026
+  2.534452200319140E+026
+  2.315575661729796E+026
+  2.072434374624934E+026
+  1.815337912496258E+026
+  1.556515114000579E+026
+  1.308685855357863E+026
+  1.083041182410639E+026
+  8.863177687287411E+025
+  7.201192736764491E+025
+  5.827670113013961E+025
+  4.709932345473335E+025
+  3.809985231767103E+025
+  3.090489780374395E+025
+  2.517720300064952E+025
+  2.062701004001327E+025
+  1.701327666906099E+025
+  1.413981368983415E+025
+  1.184933329294951E+025
+  1.001705558621876E+025
+  8.544703421766729E+024
+  7.355242781957301E+024
+  6.388466228025865E+024
+  5.597384494723208E+024
+  4.945332698082421E+024
+  4.403679724978610E+024
+  3.950032108128820E+024
+  3.566835483954794E+024
+  3.240291435451666E+024
+  2.959522167839184E+024
+  2.715928752506085E+024
+  2.502700119661101E+024
+  2.314439505289730E+024
+  2.146882834435210E+024
+  1.996689914069348E+024
+  1.861294847027863E+024
+  1.738807463993846E+024
+  1.627963721873538E+024
+  1.528131191862163E+024
+  1.439387760333590E+024
+  1.362710111577958E+024
+  1.300337184229101E+024
+  1.256417612746634E+024
+  1.238115332255480E+024
+  1.257440421124669E+024
+  1.334197134047402E+024
+  1.500595045788344E+024
+  1.808232821969976E+024
+  2.338285542924757E+024
+  3.215698316687296E+024
+  4.627819444435462E+024
+  6.846894549825413E+024
+  1.025377869299544E+025
+  1.535665458983265E+025
+  2.279317063460518E+025
+  3.329746057980914E+025
+  4.760633841544426E+025
+  6.627490434386947E+025
+  8.941044907925129E+025
+  1.165052434897577E+026
+  1.464820675570595E+026
+  1.778311983896694E+026
+  2.088263167331017E+026
+  2.377835643646075E+026
+  2.632977933653936E+026
+  2.844048274086869E+026
+  3.006474537998083E+026
+  3.120519377937123E+026
+  3.190408321826452E+026
+  3.223137257449249E+026
+  3.227232653523046E+026
+  3.211646375162404E+026
+  3.184874199376219E+026
+  3.154319656320966E+026
+  3.125888436804909E+026
+  3.103785975321100E+026
+  3.090490192345280E+026
+  3.086872827965635E+026
+  3.092441028838520E+026
+  3.105665345500425E+026
+  3.124353842170178E+026
+  3.146028549169522E+026
+  3.168262997557888E+026
+  3.188948732806776E+026
+  3.206472571011934E+026
+  3.219801376188963E+026
+  3.228483907051717E+026
+  3.232588027212204E+026
+  3.232596008789666E+026
+  3.229280609755045E+026
+  3.223579903920590E+026
+  3.216481909377943E+026
+  3.208926010074838E+026
+  3.201727312484103E+026
+  3.195526740330754E+026
+  3.190766159564830E+026
+  3.194711776161507E+026
+  3.194141935701767E+026
+  3.194307814184514E+026
+  3.195376548951540E+026
+  3.197438477978041E+026
+  3.200474672953423E+026
+  3.204331430066639E+026
+  3.208706236291944E+026
+  3.213149044957303E+026
+  3.217082734976163E+026
+  3.219844452755813E+026
+  3.220746880124832E+026
+  3.219156169569222E+026
+  3.214580521166226E+026
+  3.206760326624444E+026
+  3.195748250895476E+026
+  3.181966057624625E+026
+  3.166224753145495E+026
+  3.149696165910896E+026
+  3.133827795418271E+026
+  3.120198704700182E+026
+  3.110321893762754E+026
+  3.105406942713005E+026
+  3.106104377919271E+026
+  3.112258824932915E+026
+  3.122700635569669E+026
+  3.135105172290949E+026
+  3.145946026739365E+026
+  3.150564365667769E+026
+  3.143372259074528E+026
+  3.118202915865217E+026
+  3.068813038482149E+026
+  2.989528254145491E+026
+  2.875997898465817E+026
+  2.725988735105616E+026
+  2.540102439081676E+026
+  2.322261645066465E+026
+  2.079796221411964E+026
+  1.822999681738498E+026
+  1.564127956516437E+026
+  1.315966716338345E+026
+  1.089797822465545E+026
+  8.924473626059859E+025
+  7.255875498268957E+025
+  5.875861481967614E+025
+  4.752039556103192E+025
+  3.846568096928074E+025
+  3.122168705057157E+025
+  2.545116721085937E+025
+  2.086401775514966E+025
+  1.721866172310919E+025
+  1.431829735864793E+025
+  1.200501618985442E+025
+  1.015345033317916E+025
+  8.664788573944128E+024
+  7.461525406097674E+024
+  6.483045415080413E+024
+  5.682011399566393E+024
+  5.021464865641200E+024
+  4.472528827672593E+024
+  4.012605044152222E+024
+  3.623969252996965E+024
+  3.292682443689141E+024
+  3.007750703748212E+024
+  2.760479378601123E+024
+  2.543978682532254E+024
+  2.352787402729228E+024
+  2.182589109495317E+024
+  2.030001681566255E+024
+  1.892426506937857E+024
+  1.767949129337905E+024
+  1.655289302832735E+024
+  1.553806659549726E+024
+  1.463580304161115E+024
+  1.385599265658574E+024
+  1.322129619879469E+024
+  1.277368294684885E+024
+  1.258559256975708E+024
+  1.277841333501860E+024
+  1.355222518270323E+024
+  1.523230176651053E+024
+  1.833950191463555E+024
+  2.369288240327186E+024
+  3.255254441641004E+024
+  4.680695246636059E+024
+  6.919870799592703E+024
+  1.035619072906799E+025
+  1.550082559069561E+025
+  2.299450972881655E+025
+  3.357388561705341E+025
+  4.797659364443613E+025
+  6.675534332027363E+025
+  9.001027025881902E+025
+  1.172217006561276E+026
+  1.472976480169311E+026
+  1.787134322223382E+026
+  2.097303902406598E+026
+  2.386572915555078E+026
+  2.640878974711335E+026
+  2.850632608112247E+026
+  3.011366519614546E+026
+  3.123483194842197E+026
+  3.191363301640186E+026
+  3.222155072060859E+026
+  3.224520151681363E+026
+  3.207518433873084E+026
+  3.179720706539989E+026
+  3.148570091681346E+026
+  3.119976889881811E+026
+  3.098118973630232E+026
+  3.085419372639121E+026
+  3.082674140942271E+026
+  3.089301702142042E+026
+  3.103679188200338E+026
+  3.123524695050873E+026
+  3.146280881978362E+026
+  3.169457970217193E+026
+  3.190903596824695E+026
+  3.208981158678346E+026
+  3.222653607707656E+026
+  3.231482674751295E+026
+  3.235562380004700E+026
+  3.235410129174420E+026
+  3.231838547307579E+026
+  3.225826374255540E+026
+  3.218399716778221E+026
+  3.210530816159433E+026
+  3.203060536833114E+026
+  3.196647391493528E+026
+  3.191742406334422E+026
+  3.185250479116803E+026
+  3.184759445042367E+026
+  3.184957145932437E+026
+  3.185995207436250E+026
+  3.187951979012439E+026
+  3.190802303574020E+026
+  3.194394161536348E+026
+  3.198436463490072E+026
+  3.202501575758471E+026
+  3.206046211379998E+026
+  3.208452176212832E+026
+  3.209085871212807E+026
+  3.207373238796969E+026
+  3.202884181720093E+026
+  3.195417562644641E+026
+  3.185075480831698E+026
+  3.172314099523682E+026
+  3.157958185137365E+026
+  3.143168134749072E+026
+  3.129351986753792E+026
+  3.118020756915378E+026
+  3.110592910747635E+026
+  3.108161852472893E+026
+  3.111247645278263E+026
+  3.119559467842445E+026
+  3.131797687637479E+026
+  3.145523797667023E+026
+  3.157123560105087E+026
+  3.161884726500990E+026
+  3.154206522622888E+026
+  3.127953288527719E+026
+  3.076957008683817E+026
+  2.995659209896681E+026
+  2.879858053742677E+026
+  2.727489980290116E+026
+  2.539331065811971E+026
+  2.319464176770629E+026
+  2.075346037143368E+026
+  1.817347571794494E+026
+  1.557743419362814E+026
+  1.309279434959156E+026
+  1.083151709442194E+026
+  8.860841168337004E+025
+  7.196574850651298E+025
+  5.821677470710087E+025
+  4.703235707821477E+025
+  3.803056669902772E+025
+  3.083644540960312E+025
+  2.511155801220565E+025
+  2.056529742301318E+025
+  1.695603287734831E+025
+  1.408718394575479E+025
+  1.180121546676275E+025
+  9.973201765932926E+024
+  8.504789379189983E+024
+  7.318913884504959E+024
+  6.355366553365832E+024
+  5.567174277525686E+024
+  4.917697884726595E+024
+  4.378336344687549E+024
+  3.926727357066931E+024
+  3.545346818495443E+024
+  3.220424537724858E+024
+  2.941108340864953E+024
+  2.698822090202421E+024
+  2.486774652334104E+024
+  2.299586424099180E+024
+  2.133007834528078E+024
+  1.983710655235613E+024
+  1.849138504786042E+024
+  1.727408325824349E+024
+  1.617260765650140E+024
+  1.518065558204645E+024
+  1.429899987773266E+024
+  1.353736931161063E+024
+  1.291807555075551E+024
+  1.248247510482011E+024
+  1.230200576650484E+024
+  1.249646573442975E+024
+  1.326345291193659E+024
+  1.492442392590265E+024
+  1.799447423319609E+024
+  2.328416639160886E+024
+  3.204147158173378E+024
+  4.613822458928302E+024
+  6.829541188363420E+024
+  1.023210047426386E+025
+  1.532983709929940E+025
+  2.276094963252144E+025
+  3.326075379244449E+025
+  4.756811628288701E+025
+  6.624119336134256E+025
+  8.939116729112710E+025
+  1.165143759521263E+026
+  1.465368620186683E+026
+  1.779503984584641E+026
+  2.090276888358409E+026
+  2.380811823453852E+026
+  2.636996175526358E+026
+  2.849110224229434E+026
+  3.012496866731148E+026
+  3.127336728339280E+026
+  3.197784651628409E+026
+  3.230783105981453E+026
+  3.234825746240686E+026
+  3.218853336643262E+026
+  3.191371657526133E+026
+  3.159813465283616E+026
+  3.130130044429383E+026
+  3.106585144592956E+026
+  3.091723439244248E+026
+  3.086487142563222E+026
+  3.090452744833379E+026
+  3.102154406043259E+026
+  3.119454121753730E+026
+  3.139915253935927E+026
+  3.161138404754688E+026
+  3.181027597661120E+026
+  3.197968421761103E+026
+  3.210914672677119E+026
+  3.219392717522149E+026
+  3.223441544648603E+026
+  3.223510928349447E+026
+  3.220340151378109E+026
+  3.214835108359194E+026
+  3.207954762949672E+026
+  3.200613931273179E+026
+  3.193608524000488E+026
+  3.187566054952272E+026
+  3.182920735918752E+026
+  3.140305396241647E+026
+  3.139551817866709E+026
+  3.139641337624222E+026
+  3.140776878398236E+026
+  3.143076722509233E+026
+  3.146536989129032E+026
+  3.151001185745397E+026
+  3.156141872084846E+026
+  3.161458847540038E+026
+  3.166298277210894E+026
+  3.169894935135508E+026
+  3.171436982297483E+026
+  3.170150217071596E+026
+  3.165395735774236E+026
+  3.156771617194225E+026
+  3.144206380172600E+026
+  3.128030074868863E+026
+  3.109008338981023E+026
+  3.088326076973089E+026
+  3.067511066830787E+026
+  3.048293867446002E+026
+  3.032408418269096E+026
+  3.021346637144010E+026
+  3.016088682485496E+026
+  3.016836862029225E+026
+  3.022784368313437E+026
+  3.031949842809327E+026
+  3.041105894137137E+026
+  3.045825394708775E+026
+  3.040664720066682E+026
+  3.019497935019186E+026
+  2.976008244156956E+026
+  2.904329096902004E+026
+  2.799803120452837E+026
+  2.659790597819203E+026
+  2.484413970635268E+026
+  2.277083200161450E+026
+  2.044630850694160E+026
+  1.796920551242867E+026
+  1.545891985616590E+026
+  1.304158901037251E+026
+  1.082986834116990E+026
+  8.893281455364372E+025
+  7.250665429397282E+025
+  5.888017176965357E+025
+  4.775085943047163E+025
+  3.875830386436034E+025
+  3.154396111185239E+025
+  2.578135689298489E+025
+  2.118825035889081E+025
+  1.752862691864083E+025
+  1.460950328904173E+025
+  1.227551002134612E+025
+  1.040290496862611E+025
+  8.893866785476007E+024
+  7.671447895509151E+024
+  6.675305131736405E+024
+  5.858190509839045E+024
+  5.183122304868549E+024
+  4.621135378436096E+024
+  4.149509695250420E+024
+  3.750385610181085E+024
+  3.409687580132822E+024
+  3.116291398438281E+024
+  2.861382475419091E+024
+  2.637963530570107E+024
+  2.440479172134574E+024
+  2.264532334167561E+024
+  2.106673744694290E+024
+  1.964251020981326E+024
+  1.835309320278110E+024
+  1.718541636212402E+024
+  1.613295089656027E+024
+  1.519651736710105E+024
+  1.438621148697844E+024
+  1.372511058449660E+024
+  1.325586724242775E+024
+  1.305195405845620E+024
+  1.323625623910312E+024
+  1.401095433491392E+024
+  1.570415960819552E+024
+  1.884034947950916E+024
+  2.424276020404017E+024
+  3.317542812471774E+024
+  4.752859189956359E+024
+  7.004067211110438E+024
+  1.045290060790120E+025
+  1.560656193216988E+025
+  2.309809452304926E+025
+  3.365104453837666E+025
+  4.798308535481081E+025
+  6.661980210865931E+025
+  8.962936320857616E+025
+  1.164607068462614E+026
+  1.459977995486741E+026
+  1.767056932830731E+026
+  2.068537095146150E+026
+  2.347779787931244E+026
+  2.591164632285091E+026
+  2.789658455092960E+026
+  2.939396329434678E+026
+  3.041362180172288E+026
+  3.100442643121953E+026
+  3.124179567292859E+026
+  3.121496547260462E+026
+  3.101578787604386E+026
+  3.072991078056666E+026
+  3.043051506510606E+026
+  3.017443412996669E+026
+  3.000036649806396E+026
+  2.992889155133597E+026
+  2.996401137822714E+026
+  3.009591750810174E+026
+  3.030461880655076E+026
+  3.056399774377888E+026
+  3.084582845640976E+026
+  3.112332193461631E+026
+  3.137386642936218E+026
+  3.158078264213588E+026
+  3.173407483175568E+026
+  3.183029443673259E+026
+  3.187172334572250E+026
+  3.186512698162360E+026
+  3.182032249780293E+026
+  3.174875492079413E+026
+  3.166219983775549E+026
+  3.157166685385620E+026
+  3.148656683465313E+026
+  3.141417147948654E+026
+  3.135935796503966E+026
+  3.281661449712332E+026
+  3.281311470568064E+026
+  3.281562631459164E+026
+  3.282537920141131E+026
+  3.284293427441232E+026
+  3.286791834364548E+026
+  3.289882492879496E+026
+  3.293291932407375E+026
+  3.296627918379562E+026
+  3.299400312968169E+026
+  3.301059913915305E+026
+  3.301053979987208E+026
+  3.298895126848842E+026
+  3.294237831826526E+026
+  3.286954095796454E+026
+  3.277197641223361E+026
+  3.265444830610805E+026
+  3.252500548757733E+026
+  3.239458978873965E+026
+  3.227612852488524E+026
+  3.218310365156416E+026
+  3.212766016710917E+026
+  3.211839175384767E+026
+  3.215800925699570E+026
+  3.224114539372607E+026
+  3.235256940981713E+026
+  3.246607796797434E+026
+  3.254430073545021E+026
+  3.253962212218218E+026
+  3.239638163133937E+026
+  3.205446873796530E+026
+  3.145435082671005E+026
+  3.054342762037313E+026
+  2.928335711832245E+026
+  2.765763573737015E+026
+  2.567828369281152E+026
+  2.339011573119887E+026
+  2.087098460128903E+026
+  1.822680264757668E+026
+  1.558118333844166E+026
+  1.306105868824788E+026
+  1.077665071254338E+026
+  8.792737184718280E+025
+  7.122575768227852E+025
+  5.746877675762544E+025
+  4.630927153147560E+025
+  3.735179970050519E+025
+  3.021181376455570E+025
+  2.454441823181949E+025
+  2.005489567013870E+025
+  1.649918848750422E+025
+  1.367944595203462E+025
+  1.143762414283394E+025
+  9.648766160441588E+024
+  8.214767808322332E+024
+  7.058962304899809E+024
+  6.121601508747288E+024
+  5.356182980668688E+024
+  4.726517510109255E+024
+  4.204417066032572E+024
+  3.767888374299028E+024
+  3.399730994264749E+024
+  3.086454841469380E+024
+  2.817447723197455E+024
+  2.584337416058991E+024
+  2.380504714691191E+024
+  2.200713706314095E+024
+  2.040833496915249E+024
+  1.897632127063140E+024
+  1.768629018011273E+024
+  1.651997687029167E+024
+  1.546516578125169E+024
+  1.451573913924180E+024
+  1.367244264168993E+024
+  1.294472635317035E+024
+  1.235430010588305E+024
+  1.194147412062436E+024
+  1.177599903835061E+024
+  1.197504053042143E+024
+  1.273216869976016E+024
+  1.436279070154667E+024
+  1.737312579326700E+024
+  2.256111875356654E+024
+  3.115756464353671E+024
+  4.501228749784554E+024
+  6.682047892774243E+024
+  1.003641183190898E+025
+  1.507080971632272E+025
+  2.242369245720705E+025
+  3.283474409671179E+025
+  4.705387079877000E+025
+  6.565947834561525E+025
+  8.879328751909946E+025
+  1.159895755112675E+026
+  1.462131549355762E+026
+  1.779878810663727E+026
+  2.096049959361855E+026
+  2.393774603682973E+026
+  2.658755065750082E+026
+  2.880921134302749E+026
+  3.055149374900130E+026
+  3.181098476271393E+026
+  3.262403555607160E+026
+  3.305536421732693E+026
+  3.318601712484290E+026
+  3.310251768747652E+026
+  3.288812460576167E+026
+  3.261644863507247E+026
+  3.234730427212068E+026
+  3.212453625527913E+026
+  3.197554843490872E+026
+  3.191227697569235E+026
+  3.193333686513219E+026
+  3.202702216787655E+026
+  3.217478089185814E+026
+  3.235475156903602E+026
+  3.254496980001662E+026
+  3.272593652548876E+026
+  3.288236828240597E+026
+  3.300408998978693E+026
+  3.308615105007976E+026
+  3.312832922689495E+026
+  3.313423118821628E+026
+  3.311020100911513E+026
+  3.306420486060917E+026
+  3.300479442771344E+026
+  3.294021433898201E+026
+  3.287771293370809E+026
+  3.282308313900278E+026
+  3.278042562346216E+026
+  3.252949575204617E+026
+  3.252561419965479E+026
+  3.252799301036276E+026
+  3.253794168401862E+026
+  3.255608231075930E+026
+  3.258207430637099E+026
+  3.261440612973193E+026
+  3.265029357810021E+026
+  3.268571721413560E+026
+  3.271563245767615E+026
+  3.273436489528279E+026
+  3.273617829482158E+026
+  3.271598198136622E+026
+  3.267011913112991E+026
+  3.259714996581393E+026
+  3.249852145695021E+026
+  3.237900259818880E+026
+  3.224676449370823E+026
+  3.211300130383650E+026
+  3.199102494438967E+026
+  3.189482340039468E+026
+  3.183714448360804E+026
+  3.182724388198797E+026
+  3.186850562005205E+026
+  3.195619223954574E+026
+  3.207560317595312E+026
+  3.220091250608765E+026
+  3.229492890766502E+026
+  3.230998276350351E+026
+  3.219010550862660E+026
+  3.187461937547552E+026
+  3.130317851922488E+026
+  3.042215794350276E+026
+  2.919203831775538E+026
+  2.759507099917513E+026
+  2.564207199871236E+026
+  2.337681615369673E+026
+  2.087640210192777E+026
+  1.824637027247793E+026
+  1.561039170325720E+026
+  1.309586740163051E+026
+  1.081380177318318E+026
+  8.829864821005694E+025
+  7.158118287660056E+025
+  5.779913436596105E+025
+  4.661005089091122E+025
+  3.762172161572050E+025
+  3.045166692784404E+025
+  2.475620106377683E+025
+  2.024121752187796E+025
+  1.666287327501074E+025
+  1.382328481786257E+025
+  1.156423282871427E+025
+  9.760512882334627E+024
+  8.313746534982733E+024
+  7.146993761416903E+024
+  6.200249897113639E+024
+  5.426780545067067E+024
+  4.790191984360046E+024
+  4.262119029710755E+024
+  3.820416868191635E+024
+  3.447756601569521E+024
+  3.130539973578557E+024
+  2.858064163782924E+024
+  2.621881350376530E+024
+  2.415309555496600E+024
+  2.233061058999663E+024
+  2.070962607493709E+024
+  1.925748142940506E+024
+  1.794910375288109E+024
+  1.676602931750067E+024
+  1.569590948107122E+024
+  1.473256074498642E+024
+  1.387673737177111E+024
+  1.313798731590665E+024
+  1.253823534366294E+024
+  1.211817129572196E+024
+  1.194816840529119E+024
+  1.214638161534480E+024
+  1.290792459886503E+024
+  1.455057371198226E+024
+  1.758411284806020E+024
+  2.281171189141977E+024
+  3.147156786324687E+024
+  4.542353228165282E+024
+  6.737559156507577E+024
+  1.011247180237805E+025
+  1.517511260514011E+025
+  2.256510940959528E+025
+  3.302231329813988E+025
+  4.729485091476061E+025
+  6.595628345235668E+025
+  8.913955765074213E+025
+  1.163667212782099E+026
+  1.465888669845929E+026
+  1.783170803953915E+026
+  2.098332169394197E+026
+  2.394460917944272E+026
+  2.657278533878540E+026
+  2.876791357053250E+026
+  3.047997498061633E+026
+  3.170704772961858E+026
+  3.248706837142018E+026
+  3.288627626324205E+026
+  3.298705553545786E+026
+  3.287700530267677E+026
+  3.264015472043926E+026
+  3.235056419653472E+026
+  3.206818284437905E+026
+  3.183669817956425E+026
+  3.168310353309519E+026
+  3.161872342750074E+026
+  3.164142316820588E+026
+  3.173867864191298E+026
+  3.189112116535592E+026
+  3.207613778244296E+026
+  3.227112913412059E+026
+  3.245611230463519E+026
+  3.261548706059453E+026
+  3.273892684627508E+026
+  3.282147834477050E+026
+  3.286303840240563E+026
+  3.286742181051148E+026
+  3.284123529049828E+026
+  3.279272908517192E+026
+  3.273073103876484E+026
+  3.266372994824624E+026
+  3.259916825989356E+026
+  3.254297139777544E+026
+  3.249930629297570E+026
+  3.127166907778410E+026
+  3.126515040470714E+026
+  3.126646260579200E+026
+  3.127743708213576E+026
+  3.129910403017473E+026
+  3.133134659669901E+026
+  3.137262522579560E+026
+  3.141981960624683E+026
+  3.146822908777956E+026
+  3.151177250597228E+026
+  3.154340637735591E+026
+  3.155575348661761E+026
+  3.154191006276953E+026
+  3.149637105120412E+026
+  3.141598135710339E+026
+  3.130079410062738E+026
+  3.115469992190094E+026
+  3.098568781153263E+026
+  3.080561247498187E+026
+  3.062938013054965E+026
+  3.047352458522741E+026
+  3.035422354138220E+026
+  3.028489092330637E+026
+  3.027356050790101E+026
+  3.032033510251053E+026
+  3.041520401342585E+026
+  3.053652769509369E+026
+  3.065045934736267E+026
+  3.071153135086061E+026
+  3.066458973364035E+026
+  3.044820994918673E+026
+  2.999965102943539E+026
+  2.926126534667521E+026
+  2.818803814470552E+026
+  2.675556701285565E+026
+  2.496734338429009E+026
+  2.285979121257079E+026
+  2.050337253704832E+026
+  1.799843273927613E+026
+  1.546546259341593E+026
+  1.303098410012032E+026
+  1.080735729775400E+026
+  8.863325650588277E+025
+  7.216760446047312E+025
+  5.852723147516867E+025
+  4.740161474606906E+025
+  3.842399158021701E+025
+  3.123107617042445E+025
+  2.549302753816798E+025
+  2.092533045110192E+025
+  1.729051847504617E+025
+  1.439474957409434E+025
+  1.208220661468975E+025
+  1.022897336754543E+025
+  8.737228145410307E+024
+  7.530126626080425E+024
+  6.547484780529226E+024
+  5.742238286343050E+024
+  5.077593823047586E+024
+  4.524767594807752E+024
+  4.061207381051475E+024
+  3.669204812084705E+024
+  3.334818211250050E+024
+  3.047040208640290E+024
+  2.797157056922536E+024
+  2.578257629634015E+024
+  2.384859334236620E+024
+  2.212625761613823E+024
+  2.058157159108121E+024
+  1.918840272472574E+024
+  1.792749446147311E+024
+  1.678597018185310E+024
+  1.575739256900617E+024
+  1.484256168969058E+024
+  1.405142092613301E+024
+  1.340672808915285E+024
+  1.295058963245457E+024
+  1.275560975361083E+024
+  1.294333556861411E+024
+  1.371392384417623E+024
+  1.539247937531441E+024
+  1.849911640959869E+024
+  2.385094185854330E+024
+  3.270376403277421E+024
+  4.693746683598796E+024
+  6.927865502259458E+024
+  1.035333231081646E+025
+  1.547665426877318E+025
+  2.293127396375441E+025
+  3.344316982543372E+025
+  4.773560209844699E+025
+  6.634389279582908E+025
+  8.935025372688197E+025
+  1.162201545005315E+026
+  1.458530822723224E+026
+  1.767248622404908E+026
+  2.071077246234452E+026
+  2.353311755981476E+026
+  2.600172503977029E+026
+  2.802393750357357E+026
+  2.955835649614909E+026
+  3.061199162476257E+026
+  3.123110882687204E+026
+  3.148899171009184E+026
+  3.147335773958727E+026
+  3.127522945250890E+026
+  3.098012379598934E+026
+  3.066175085785274E+026
+  3.037805784762187E+026
+  3.016933580618050E+026
+  3.005810436420888E+026
+  3.005050397165851E+026
+  3.013890377506473E+026
+  3.030537384841177E+026
+  3.052560292330775E+026
+  3.077280796833897E+026
+  3.102121029343011E+026
+  3.124875023151983E+026
+  3.143885805024488E+026
+  3.158125534672440E+026
+  3.167189351804865E+026
+  3.171222542249336E+026
+  3.170805015924948E+026
+  3.166816802839024E+026
+  3.160303288055643E+026
+  3.152351733715644E+026
+  3.143986369398398E+026
+  3.136088294606660E+026
+  3.129343047172412E+026
+  3.124215165474690E+026
+  3.175696685864509E+026
+  3.175127424867647E+026
+  3.175293721838915E+026
+  3.176362589989472E+026
+  3.178424272485684E+026
+  3.181459810512743E+026
+  3.185315559131653E+026
+  3.189689157322258E+026
+  3.194130787260655E+026
+  3.198063592233328E+026
+  3.200824947595135E+026
+  3.201727635738537E+026
+  3.200137680307092E+026
+  3.195562829746593E+026
+  3.187742635738505E+026
+  3.176728522732148E+026
+  3.162940682437284E+026
+  3.147188391758700E+026
+  3.130641886029712E+026
+  3.114747623534418E+026
+  3.101084700640018E+026
+  3.091167821238665E+026
+  3.086210557031383E+026
+  3.086870284888708E+026
+  3.093001789040479E+026
+  3.103449137130559E+026
+  3.115904937287162E+026
+  3.126863181537218E+026
+  3.131687802519538E+026
+  3.124814740284436E+026
+  3.100100404503545E+026
+  3.051321742390125E+026
+  2.972818942920716E+026
+  2.860247248723917E+026
+  2.711367825121416E+026
+  2.526763062638316E+026
+  2.310321783592036E+026
+  2.069326646846806E+026
+  1.814014026373764E+026
+  1.556578427420052E+026
+  1.309746793525826E+026
+  1.084753958723627E+026
+  8.884029839975680E+025
+  7.223680230149571E+025
+  5.850333940153372E+025
+  4.731823916544537E+025
+  3.830541985840264E+025
+  3.109425260257440E+025
+  2.534935477574177E+025
+  2.078217043938949E+025
+  1.715237344823625E+025
+  1.426415424289007E+025
+  1.196038126560499E+025
+  1.011628953003074E+025
+  8.633532844916546E+024
+  7.434963004490950E+024
+  6.460238546939325E+024
+  5.662232168727303E+024
+  5.004146265064873E+024
+  4.457227345078300E+024
+  3.998972167657907E+024
+  3.611729760991792E+024
+  3.281617845988994E+024
+  2.997686582413835E+024
+  2.751275673515900E+024
+  2.535522194955417E+024
+  2.344985963446991E+024
+  2.175366988279740E+024
+  2.023295910144646E+024
+  1.886183854390125E+024
+  1.762123509239062E+024
+  1.649839403820104E+024
+  1.548693567933728E+024
+  1.458764813232723E+024
+  1.381038414194612E+024
+  1.317771727748741E+024
+  1.273145298622463E+024
+  1.254374396117460E+024
+  1.273549058025402E+024
+  1.350595728210181E+024
+  1.517907363039051E+024
+  1.827351619567761E+024
+  2.360486037695671E+024
+  3.242776811083938E+024
+  4.662241324328018E+024
+  6.891912636772542E+024
+  1.031344730021022E+025
+  1.543561805958570E+025
+  2.289605733918728E+025
+  3.342768803307275E+025
+  4.776417460580694E+025
+  6.645479461258381E+025
+  8.959804384680238E+025
+  1.166753119548068E+026
+  1.465983920560694E+026
+  1.778487056374770E+026
+  2.086952165036325E+026
+  2.374547597407080E+026
+  2.627285035443368E+026
+  2.835633867983011E+026
+  2.995165585580900E+026
+  3.106300431505080E+026
+  3.173417963913104E+026
+  3.203650492442910E+026
+  3.205633685534298E+026
+  3.188395980303609E+026
+  3.160475110113265E+026
+  3.129282530355410E+026
+  3.100700354649451E+026
+  3.078883039429520E+026
+  3.066235578528507E+026
+  3.063541411230362E+026
+  3.070211348386268E+026
+  3.084619144920963E+026
+  3.104482766666247E+026
+  3.127246912171152E+026
+  3.150424975925744E+026
+  3.171868021056290E+026
+  3.189942473522339E+026
+  3.203613529650844E+026
+  3.212444235504161E+026
+  3.216529038732633E+026
+  3.216385042973560E+026
+  3.212824062746394E+026
+  3.206823765035835E+026
+  3.199409150180283E+026
+  3.191551487255029E+026
+  3.184090898371293E+026
+  3.177685422125633E+026
+  3.172785861858665E+026
+  3.222120418078917E+026
+  3.221754213858666E+026
+  3.222002981770957E+026
+  3.222993879308118E+026
+  3.224786194987427E+026
+  3.227344557560879E+026
+  3.230518918350547E+026
+  3.234035220206055E+026
+  3.237499942110361E+026
+  3.240421784876531E+026
+  3.242251665735212E+026
+  3.242439678786062E+026
+  3.240505592253785E+026
+  3.236116957268951E+026
+  3.229166173256151E+026
+  3.219835656014477E+026
+  3.208639050949641E+026
+  3.196426518262245E+026
+  3.184343868309328E+026
+  3.173739077257769E+026
+  3.166015455736128E+026
+  3.162437952661239E+026
+  3.163906748003159E+026
+  3.170719140702204E+026
+  3.182345547441937E+026
+  3.197247420322778E+026
+  3.212764049118741E+026
+  3.225092305157774E+026
+  3.229379569891427E+026
+  3.219946134744342E+026
+  3.190648720527317E+026
+  3.135389095451881E+026
+  3.048757311420566E+026
+  2.926774157960283E+026
+  2.767660883894436E+026
+  2.572520476492913E+026
+  2.345776909345802E+026
+  2.095208770109112E+026
+  1.831455201736554E+026
+  1.566976308813753E+026
+  1.314603179472073E+026
+  1.085513984838099E+026
+  8.863271130521742E+025
+  7.184714224380783E+025
+  5.800848983720560E+025
+  4.677347244859095E+025
+  3.774852910133043E+025
+  3.054968032998680E+025
+  2.483179894028121E+025
+  2.029949660050287E+025
+  1.670784413500483E+025
+  1.385806725254204E+025
+  1.159123281069101E+025
+  9.781574007968914E+024
+  8.330274918737017E+024
+  7.160058420623393E+024
+  6.210661952795219E+024
+  5.435154856994860E+024
+  4.796994624861038E+024
+  4.267703567244191E+024
+  3.825051937601001E+024
+  3.451646764419381E+024
+  3.133841454919311E+024
+  2.860896702048663E+024
+  2.624337113399852E+024
+  2.417459850781761E+024
+  2.234961391658452E+024
+  2.072656506093471E+024
+  1.927270074702654E+024
+  1.796288002271223E+024
+  1.677858915973089E+024
+  1.570744496372095E+024
+  1.474324427825338E+024
+  1.388673866683204E+024
+  1.314749623434048E+024
+  1.254749666271889E+024
+  1.212754115907045E+024
+  1.195820834399308E+024
+  1.215801566482605E+024
+  1.292269968438845E+024
+  1.457108475002952E+024
+  1.761468311858637E+024
+  2.285945569556005E+024
+  3.154800170345422E+024
+  4.554693002932236E+024
+  6.757427152593226E+024
+  1.014413578723147E+025
+  1.522479523172806E+025
+  2.264152924802242E+025
+  3.313709850783622E+025
+  4.746255570565801E+025
+  6.619359632220414E+025
+  8.946329952486135E+025
+  1.167909145378716E+026
+  1.471216810750975E+026
+  1.789581332761972E+026
+  2.105717363761490E+026
+  2.402603269686257E+026
+  2.665858348908047E+026
+  2.885405942719736E+026
+  3.056188124768842E+026
+  3.177987010705452E+026
+  3.254600416031759E+026
+  3.292683130993291E+026
+  3.300526491798003E+026
+  3.286960258343075E+026
+  3.260468993754482E+026
+  3.228547270928209E+026
+  3.197280724947300E+026
+  3.171126536325064E+026
+  3.152865957449336E+026
+  3.143703083879542E+026
+  3.143482751529270E+026
+  3.150995421282192E+026
+  3.164330724769823E+026
+  3.181237767368010E+026
+  3.199452299539850E+026
+  3.216959254531881E+026
+  3.232172163456676E+026
+  3.244025239248056E+026
+  3.251986219855677E+026
+  3.256006647433816E+026
+  3.256430807358017E+026
+  3.253884791681781E+026
+  3.249162819759288E+026
+  3.243121370138376E+026
+  3.236587888604790E+026
+  3.230290123038018E+026
+  3.224808856721696E+026
+  3.220553370425722E+026
+  3.376478658790031E+026
+  3.376277843415477E+026
+  3.376571083638989E+026
+  3.377448745712026E+026
+  3.378942557689497E+026
+  3.381003418665001E+026
+  3.383485328998350E+026
+  3.386138739660607E+026
+  3.388615886199727E+026
+  3.390490911253940E+026
+  3.391295633017035E+026
+  3.390569506225932E+026
+  3.387920537043150E+026
+  3.383091755923642E+026
+  3.376025457639937E+026
+  3.366915533879142E+026
+  3.356237280411180E+026
+  3.344744290199679E+026
+  3.333423761794714E+026
+  3.323405045091930E+026
+  3.315821488497116E+026
+  3.311632150220742E+026
+  3.311416775582995E+026
+  3.315163479701030E+026
+  3.322072747141673E+026
+  3.330403026275751E+026
+  3.337382394298986E+026
+  3.339208212309604E+026
+  3.331153376514461E+026
+  3.307794244936032E+026
+  3.263370858465997E+026
+  3.192282301654241E+026
+  3.089705404921479E+026
+  2.952300233165790E+026
+  2.778930302937021E+026
+  2.571284050954165E+026
+  2.334249790437699E+026
+  2.075890389146562E+026
+  1.806908113139425E+026
+  1.539593629565127E+026
+  1.286400812697201E+026
+  1.057991851107685E+026
+  8.604584364004963E+025
+  6.947970137526666E+025
+  5.588289353649909E+025
+  4.489075178107087E+025
+  3.609646347242313E+025
+  2.910875523747486E+025
+  2.357930064210345E+025
+  1.921215729523985E+025
+  1.576343042428284E+025
+  1.303623726178730E+025
+  1.087391108619709E+025
+  9.153024833165798E+024
+  7.776999429435180E+024
+  6.670599093802585E+024
+  5.775367899295981E+024
+  5.045940455373077E+024
+  4.447110034577461E+024
+  3.951526566929935E+024
+  3.537904826551756E+024
+  3.189638642506240E+024
+  2.893734281573944E+024
+  2.639992585444588E+024
+  2.420383920814918E+024
+  2.228572208904671E+024
+  2.059554300657953E+024
+  1.909389024571404E+024
+  1.774996779998241E+024
+  1.654016139529244E+024
+  1.544709260349772E+024
+  1.445913882283368E+024
+  1.357047522182850E+024
+  1.278180891100258E+024
+  1.210215085036982E+024
+  1.155224344824421E+024
+  1.117068061829873E+024
+  1.102438366205057E+024
+  1.122599697253787E+024
+  1.196199226704820E+024
+  1.353680647062323E+024
+  1.644002268056703E+024
+  2.144496813175703E+024
+  2.974714580040745E+024
+  4.314780563630070E+024
+  6.427875294711445E+024
+  9.684506060888595E+024
+  1.458279445003213E+025
+  2.175370592806984E+025
+  3.193310279681168E+025
+  4.587490937462168E+025
+  6.417468060352960E+025
+  8.700902465214188E+025
+  1.139636159032847E+026
+  1.440630174665712E+026
+  1.758887367055583E+026
+  2.077768349383336E+026
+  2.380636801808841E+026
+  2.653172169860389E+026
+  2.885030979177726E+026
+  3.070613804701320E+026
+  3.208972296320589E+026
+  3.303080892300438E+026
+  3.358766316317103E+026
+  3.383557407538290E+026
+  3.385636521229733E+026
+  3.372986562525136E+026
+  3.352761548005239E+026
+  3.330870950282020E+026
+  3.311753501061334E+026
+  3.298314183174879E+026
+  3.291999447584132E+026
+  3.292984821986383E+026
+  3.300444952698484E+026
+  3.312870826711955E+026
+  3.328395823074712E+026
+  3.345094086735979E+026
+  3.361222279589275E+026
+  3.375387503586430E+026
+  3.386637077858894E+026
+  3.394476967819649E+026
+  3.398833506801407E+026
+  3.399977355291728E+026
+  3.398429044452125E+026
+  3.394861508531204E+026
+  3.390008907427174E+026
+  3.384587715695996E+026
+  3.379235657970660E+026
+  3.374470888840396E+026
+  3.370670492062219E+026
+  3.139102449275297E+026
+  3.138375540529041E+026
+  3.138475487123861E+026
+  3.139599970651109E+026
+  3.141863278138972E+026
+  3.145259560672378E+026
+  3.149633144945298E+026
+  3.154660857699510E+026
+  3.159850685926169E+026
+  3.164561102539803E+026
+  3.168043163326468E+026
+  3.169504737090736E+026
+  3.168193777250710E+026
+  3.163494579759534E+026
+  3.155027692145594E+026
+  3.142741321642443E+026
+  3.126980251425452E+026
+  3.108517790011272E+026
+  3.088537638184810E+026
+  3.068556213753796E+026
+  3.050282020820457E+026
+  3.035416610988542E+026
+  3.025410508113893E+026
+  3.021195717994686E+026
+  3.022922648778863E+026
+  3.029732374804728E+026
+  3.039594946114257E+026
+  3.049241563392141E+026
+  3.054214170159061E+026
+  3.049051405848221E+026
+  3.027624746917863E+026
+  2.983630990617090E+026
+  2.911233289481569E+026
+  2.805818699091842E+026
+  2.664803756866745E+026
+  2.488374486380204E+026
+  2.280005837788779E+026
+  2.046590001487430E+026
+  1.798038246282961E+026
+  1.546320692105349E+026
+  1.304061679305439E+026
+  1.082518220040473E+026
+  8.886202175925582E+025
+  7.242233546466638E+025
+  5.879000430934105E+025
+  4.766017542149509E+025
+  3.867057136074374E+025
+  3.146125035065271E+025
+  2.570474003993557E+025
+  2.111811966948212E+025
+  1.746493488644476E+025
+  1.455193636057307E+025
+  1.222360955788527E+025
+  1.035614832034091E+025
+  8.851719335710350E+024
+  7.633394656183427E+024
+  6.640868370580917E+024
+  5.826938139263480E+024
+  5.154670387524157E+024
+  4.595147066908068E+024
+  4.125692162865803E+024
+  3.728485986613707E+024
+  3.389488526597862E+024
+  3.097606699066528E+024
+  2.844052849179366E+024
+  2.621852755604681E+024
+  2.425470542642819E+024
+  2.250525425769645E+024
+  2.093581438098251E+024
+  1.951996718374036E+024
+  1.823824277369159E+024
+  1.707762317925514E+024
+  1.603160430158465E+024
+  1.510100133295921E+024
+  1.429586929052641E+024
+  1.363920013595958E+024
+  1.317350075453235E+024
+  1.297201259812865E+024
+  1.315726575997201E+024
+  1.393090566334427E+024
+  1.562025218995083E+024
+  1.874864084427141E+024
+  2.413771597446251E+024
+  3.304940008802656E+024
+  4.737131618127208E+024
+  6.983898811042250E+024
+  1.042671550203852E+025
+  1.557266741237812E+025
+  2.305500948959043E+025
+  3.359808867246944E+025
+  4.792127319313252E+025
+  6.655299524175633E+025
+  8.956543464934096E+025
+  1.164121788226800E+026
+  1.459815128950616E+026
+  1.767414488161847E+026
+  2.069620585777228E+026
+  2.349775677262178E+026
+  2.594214558632251E+026
+  2.793839003456074E+026
+  2.944707385640372E+026
+  3.047724736756889E+026
+  3.107705095608656E+026
+  3.132130459415614E+026
+  3.129881410644021E+026
+  3.110118935326774E+026
+  3.081402645816792E+026
+  3.051063455770169E+026
+  3.024813510212788E+026
+  3.006564619307060E+026
+  2.998426337766500E+026
+  3.000856151255606E+026
+  3.012931890621593E+026
+  3.032710328735274E+026
+  3.057629053095620E+026
+  3.084905305509310E+026
+  3.111888578021362E+026
+  3.136333886951646E+026
+  3.156577635808405E+026
+  3.171614001498378E+026
+  3.181083241672974E+026
+  3.185192347398267E+026
+  3.184592785741743E+026
+  3.180239637150742E+026
+  3.173251254302295E+026
+  3.164781219541486E+026
+  3.155909989911790E+026
+  3.147562511266078E+026
+  3.140454647301806E+026
+  3.135067710975389E+026
+  3.136701419030032E+026
+  3.136048950931309E+026
+  3.136179798205272E+026
+  3.137277179955344E+026
+  3.139444158676443E+026
+  3.142669014766473E+026
+  3.146797634935515E+026
+  3.151517658313870E+026
+  3.156358468621457E+026
+  3.160711132244557E+026
+  3.163870184106299E+026
+  3.165096467351886E+026
+  3.163697850660026E+026
+  3.159121777940610E+026
+  3.151050440179683E+026
+  3.139486672967271E+026
+  3.124816980141735E+026
+  3.107837724739309E+026
+  3.089731978630892E+026
+  3.071988208891730E+026
+  3.056257972361410E+026
+  3.044157601845932E+026
+  3.037027454627752E+026
+  3.035670249454856E+026
+  3.040095921822588E+026
+  3.049303285975282E+026
+  3.061128414800466E+026
+  3.072186742710801E+026
+  3.077931711592787E+026
+  3.072848307711875E+026
+  3.050794836850747E+026
+  3.005498646129950E+026
+  2.931197492839375E+026
+  2.823393921526106E+026
+  2.679653577730527E+026
+  2.500333550081412E+026
+  2.289086133563806E+026
+  2.052968892914190E+026
+  1.802028289117887E+026
+  1.548324673906184E+026
+  1.304519567006913E+026
+  1.081854759953938E+026
+  8.872047275848345E+025
+  7.223515792722342E+025
+  5.857940330874617E+025
+  4.744190331383328E+025
+  3.845517545554118E+025
+  3.125531922726643E+025
+  2.551199212852623E+025
+  2.094028188132352E+025
+  1.730241410332434E+025
+  1.440431126919040E+025
+  1.208997789868535E+025
+  1.023536355408031E+025
+  8.742545948744699E+024
+  7.534605501568221E+024
+  6.551301904362240E+024
+  5.745528711524687E+024
+  5.080461013023574E+024
+  4.527291255033112E+024
+  4.063449283808710E+024
+  3.671213135109258E+024
+  3.336630777549540E+024
+  3.048686914698582E+024
+  2.798661701765341E+024
+  2.579639301918019E+024
+  2.386133473856417E+024
+  2.213804982689086E+024
+  2.059251899983082E+024
+  1.919859323771012E+024
+  1.793700399073756E+024
+  1.679486672188567E+024
+  1.576574029755705E+024
+  1.485042566192219E+024
+  1.405887322246832E+024
+  1.341385681049590E+024
+  1.295751305325945E+024
+  1.276249945682099E+024
+  1.295045480248608E+024
+  1.372169106984797E+024
+  1.540157251403910E+024
+  1.851064115042585E+024
+  2.386669783005843E+024
+  3.272665526656956E+024
+  4.697211580549540E+024
+  6.933228777235113E+024
+  1.036169869311320E+025
+  1.548966808694353E+025
+  2.295130550873696E+025
+  3.347350577054986E+025
+  4.778058531219030E+025
+  6.640891415397094E+025
+  8.944148134420707E+025
+  1.163440406064571E+026
+  1.460158150269096E+026
+  1.769318349131170E+026
+  2.073631062883908E+026
+  2.356376594802463E+026
+  2.603760076690975E+026
+  2.806501920435949E+026
+  2.960451067613517E+026
+  3.066300462741909E+026
+  3.128671808425750E+026
+  3.154891183804056E+026
+  3.153729926620138E+026
+  3.134290990434641E+026
+  3.105127220705021E+026
+  3.073610747528218E+026
+  3.045537100087203E+026
+  3.024935774849288E+026
+  3.014058753578654E+026
+  3.013519868171086E+026
+  3.022555782813711E+026
+  3.039373420048582E+026
+  3.061541908561584E+026
+  3.086383661423579E+026
+  3.111322038686443E+026
+  3.134152798725148E+026
+  3.153221113634008E+026
+  3.167501591163558E+026
+  3.176591982605776E+026
+  3.180640207924972E+026
+  3.180228707784183E+026
+  3.176239839879526E+026
+  3.169721044414972E+026
+  3.161761325761830E+026
+  3.153386330789651E+026
+  3.145478266233248E+026
+  3.138723501221751E+026
+  3.133587174104512E+026
+  3.133050330675167E+026
+  3.132260342521574E+026
+  3.132333807109400E+026
+  3.133480591225447E+026
+  3.135824461824347E+026
+  3.139364567834496E+026
+  3.143943998681337E+026
+  3.149230556524154E+026
+  3.154714263302939E+026
+  3.159726124965983E+026
+  3.163480430761480E+026
+  3.165140086992819E+026
+  3.163901974177130E+026
+  3.159096275312824E+026
+  3.150290348189664E+026
+  3.137384789891369E+026
+  3.120687388029425E+026
+  3.100950060920207E+026
+  3.079355165482277E+026
+  3.057441173058853E+026
+  3.036963793959379E+026
+  3.019696706479340E+026
+  3.007185060048314E+026
+  3.000473412917624E+026
+  2.999836219831697E+026
+  3.004542302803228E+026
+  3.012684635709151E+026
+  3.021103916036427E+026
+  3.025430063860654E+026
+  3.020261069703438E+026
+  2.999493406460383E+026
+  2.956810537072171E+026
+  2.886322190707739E+026
+  2.783322975208265E+026
+  2.645102526332427E+026
+  2.471694126093784E+026
+  2.266406829098147E+026
+  2.035969658235095E+026
+  1.790150525509577E+026
+  1.540811363322463E+026
+  1.300513966577350E+026
+  1.080502633146768E+026
+  8.877405879027062E+025
+  7.241450075331507E+025
+  5.883576364823043E+025
+  4.773948897089473E+025
+  3.876891230412281E+025
+  3.156848431315999E+025
+  2.581407486171994E+025
+  2.122521462535576E+025
+  1.756719067847390E+025
+  1.464795342751270E+025
+  1.231278850930794E+025
+  1.043840339081612E+025
+  8.927278054571360E+024
+  7.702661256624570E+024
+  6.704333140139953E+024
+  5.885119157564677E+024
+  5.208077623512671E+024
+  4.644261588785917E+024
+  4.170955331254804E+024
+  3.770295070857396E+024
+  3.428196321665565E+024
+  3.133523529554150E+024
+  2.877449913301223E+024
+  2.652966153379475E+024
+  2.454505599278857E+024
+  2.277661100181879E+024
+  2.118974724030240E+024
+  1.975787021778081E+024
+  1.846137805039815E+024
+  1.728716554053827E+024
+  1.622868824770441E+024
+  1.528677195727647E+024
+  1.447154027643778E+024
+  1.380612344135117E+024
+  1.333325478194900E+024
+  1.312651807845107E+024
+  1.330894023701405E+024
+  1.408286595239902E+024
+  1.577656476107756E+024
+  1.891459450843956E+024
+  2.432003673575576E+024
+  3.325622729059600E+024
+  4.761159349704532E+024
+  7.012068194692812E+024
+  1.045934140346928E+025
+  1.560887656630898E+025
+  2.309158824444396E+025
+  3.362780784343843E+025
+  4.793076120002435E+025
+  6.652053249222116E+025
+  8.945948905630691E+025
+  1.161916759166232E+026
+  1.455982746894663E+026
+  1.761446771360241E+026
+  2.061042119387664E+026
+  2.338205437120793E+026
+  2.579418988120809E+026
+  2.775767160746243E+026
+  2.923503747448612E+026
+  3.023720203092010E+026
+  3.081390347200854E+026
+  3.104117467484754E+026
+  3.100858844469377E+026
+  3.080806171590330E+026
+  3.052505789955291E+026
+  3.023235722082817E+026
+  2.998621637068101E+026
+  2.982462637468754E+026
+  2.976737768345123E+026
+  2.981765394043521E+026
+  2.996485063913244E+026
+  3.018825138888595E+026
+  3.046112503573553E+026
+  3.075477352112285E+026
+  3.104209349163312E+026
+  3.130031914394797E+026
+  3.151276702634444E+026
+  3.166956651514717E+026
+  3.176749596672440E+026
+  3.180913522891761E+026
+  3.180158782333059E+026
+  3.175502050457219E+026
+  3.168121461911881E+026
+  3.159224874414915E+026
+  3.149938719371916E+026
+  3.141223745304491E+026
+  3.133820502476252E+026
+  3.128223828430537E+026
+  3.138181026176081E+026
+  3.137416379206693E+026
+  3.137500699932901E+026
+  3.138638988626572E+026
+  3.140951202144379E+026
+  3.144434437913617E+026
+  3.148932188201938E+026
+  3.154115732264182E+026
+  3.159482108960524E+026
+  3.164373116413060E+026
+  3.168017547948561E+026
+  3.169596107592511E+026
+  3.168325959851197E+026
+  3.163558857487827E+026
+  3.154883452960214E+026
+  3.142219516742545E+026
+  3.125889877725449E+026
+  3.106655352273886E+026
+  3.085699239309359E+026
+  3.064551596018057E+026
+  3.044949578541823E+026
+  3.028638164683285E+026
+  3.017124517137024E+026
+  3.011407643092568E+026
+  3.011711362790748E+026
+  3.017251833720248E+026
+  3.026070723101192E+026
+  3.034962252731828E+026
+  3.039518031692924E+026
+  3.034308916278172E+026
+  3.013217963135226E+026
+  2.969930856697606E+026
+  2.898576287221042E+026
+  2.794484577071065E+026
+  2.654996431045896E+026
+  2.480208450601856E+026
+  2.273500343895110E+026
+  2.041672650198415E+026
+  1.794558375728621E+026
+  1.544071211934099E+026
+  1.302806213522905E+026
+  1.082019484813417E+026
+  8.886643541845298E+025
+  7.246333507140473E+025
+  5.885383663485091E+025
+  4.773668491987381E+025
+  3.875259553718335E+025
+  3.154396904756068E+025
+  2.578508327192842E+025
+  2.119427532626109E+025
+  1.753596279597972E+025
+  1.461747844907931E+025
+  1.228367957052185E+025
+  1.041098382903191E+025
+  8.901680590652768E+024
+  7.678897577089854E+024
+  6.682341766472357E+024
+  5.864797707149114E+024
+  5.189304048032869E+024
+  4.626907756255514E+024
+  4.154895375262526E+024
+  3.755410222300485E+024
+  3.414377417717079E+024
+  3.120672018941030E+024
+  2.865477909740893E+024
+  2.641795901153278E+024
+  2.444068584318042E+024
+  2.267896950495535E+024
+  2.109829983025413E+024
+  1.967213838225588E+024
+  1.838092557230473E+024
+  1.721158407316430E+024
+  1.615758205979658E+024
+  1.521974151454289E+024
+  1.440816411311327E+024
+  1.374593752442559E+024
+  1.327572836704732E+024
+  1.307102515990346E+024
+  1.325472670341851E+024
+  1.402901566481034E+024
+  1.572197510674886E+024
+  1.885798700430785E+024
+  2.426005596689081E+024
+  3.319172804966947E+024
+  4.754228698178798E+024
+  7.004840760393530E+024
+  1.045244103547053E+025
+  1.560373890256262E+025
+  2.309101804320035E+025
+  3.363673162864175E+025
+  4.795710793663507E+025
+  6.657603187970049E+025
+  8.955999828351551E+025
+  1.163566881225674E+026
+  1.458495641340351E+026
+  1.765041883187448E+026
+  2.065915085677224E+026
+  2.344502911541634E+026
+  2.587218506702029E+026
+  2.785065363305202E+026
+  2.934214173186820E+026
+  3.035679885050009E+026
+  3.094373108676803E+026
+  3.117851342899625E+026
+  3.115045239222864E+026
+  3.095138916855431E+026
+  3.066688836304729E+026
+  3.036998667309326E+026
+  3.011732550284254E+026
+  2.994737771011793E+026
+  2.988047828596704E+026
+  2.992038151938231E+026
+  3.005704269256309E+026
+  3.027025957821497E+026
+  3.053373985813169E+026
+  3.081912694369174E+026
+  3.109954895962208E+026
+  3.135235890626824E+026
+  3.156088597633053E+026
+  3.171517996399080E+026
+  3.181186638756119E+026
+  3.185332050583680E+026
+  3.184641129186833E+026
+  3.180106130924818E+026
+  3.172881573113533E+026
+  3.164153934520520E+026
+  3.155031588426294E+026
+  3.146461267542823E+026
+  3.139173908984602E+026
+  3.133659149043697E+026
+  3.127818022931336E+026
+  3.127007410622534E+026
+  3.127071727731498E+026
+  3.128224764380151E+026
+  3.130593390435265E+026
+  3.134178480656923E+026
+  3.138822920344584E+026
+  3.144191884239522E+026
+  3.149769971571223E+026
+  3.154879779343710E+026
+  3.158724247011439E+026
+  3.160452316813988E+026
+  3.159244925726241E+026
+  3.154415280333814E+026
+  3.145513962445590E+026
+  3.132426454710174E+026
+  3.115448685494704E+026
+  3.095325565298673E+026
+  3.073238736464757E+026
+  3.050733366704646E+026
+  3.029579905758584E+026
+  3.011574832488936E+026
+  2.998293490451542E+026
+  2.990816674265479E+026
+  2.989459161557475E+026
+  2.993531768818258E+026
+  3.001168447910740E+026
+  3.009247091578090E+026
+  3.013428363825750E+026
+  3.008332119605306E+026
+  2.987865746664753E+026
+  2.945711082369077E+026
+  2.875962739688900E+026
+  2.773886634657506E+026
+  2.636731187752648E+026
+  2.464478380134952E+026
+  2.260379805156258E+026
+  2.031106084123312E+026
+  1.786371713495553E+026
+  1.537995870531860E+026
+  1.298512551243191E+026
+  1.079155779183834E+026
+  8.868965095978104E+025
+  7.236720655524048E+025
+  5.881488129650838E+025
+  4.773671589392137E+025
+  3.877803930770743E+025
+  3.158500970683045E+025
+  2.583482647905885E+025
+  2.124802000744371E+025
+  1.759060818500493E+025
+  1.467106277805295E+025
+  1.233503296593427E+025
+  1.045947391606966E+025
+  8.947030114736332E+024
+  7.721056220169641E+024
+  6.721397759876803E+024
+  5.900918087140797E+024
+  5.222695168028988E+024
+  4.657789894359647E+024
+  4.183486996292472E+024
+  3.781918747398617E+024
+  3.438994306339923E+024
+  3.143570655507307E+024
+  2.886813276694868E+024
+  2.661705364630455E+024
+  2.462673358288831E+024
+  2.285303969826022E+024
+  2.126134026870542E+024
+  1.982499818562396E+024
+  1.852437935623422E+024
+  1.734635736479948E+024
+  1.628437820178778E+024
+  1.533927058561856E+024
+  1.452117473959903E+024
+  1.385325284213099E+024
+  1.337828764596578E+024
+  1.316993223245519E+024
+  1.335130422864651E+024
+  1.412485822492212E+024
+  1.581898027685795E+024
+  1.895831559371039E+024
+  2.436592157917756E+024
+  3.330483090230096E+024
+  4.766257785683795E+024
+  7.017169488095975E+024
+  1.046381322108639E+025
+  1.561137414121688E+025
+  2.308958796645715E+025
+  3.361698502342416E+025
+  4.790427239166098E+025
+  6.646838196723649E+025
+  8.936830343923155E+025
+  1.160451581171522E+026
+  1.453783522976838E+026
+  1.758332506591141E+026
+  2.056852404289533E+026
+  2.332820805718779E+026
+  2.572776990030002E+026
+  2.767871533324209E+026
+  2.914425790977626E+026
+  3.013593069703576E+026
+  3.070398000418343E+026
+  3.092480428289134E+026
+  3.088818656815341E+026
+  3.068610062321992E+026
+  3.040392511315675E+026
+  3.011423195705552E+026
+  2.987296802864033E+026
+  2.971773808933945E+026
+  2.966789736021234E+026
+  2.972617436249665E+026
+  2.988151882930507E+026
+  3.011280542508409E+026
+  3.039295427717037E+026
+  3.069299617113826E+026
+  3.098564405389650E+026
+  3.124803790843463E+026
+  3.146348429997592E+026
+  3.162217571173007E+026
+  3.172101156304744E+026
+  3.176273360098004E+026
+  3.175463076927222E+026
+  3.170706263408108E+026
+  3.163199670154505E+026
+  3.154167963795912E+026
+  3.144751721920002E+026
+  3.135922610698812E+026
+  3.128428590778791E+026
+  3.122768404901509E+026
+  3.125071319537925E+026
+  3.124299453706564E+026
+  3.124380298135535E+026
+  3.125520208731391E+026
+  3.127840270094687E+026
+  3.131338320409196E+026
+  3.135858045962716E+026
+  3.141070228657898E+026
+  3.146470609171000E+026
+  3.151398827792618E+026
+  3.155080667979512E+026
+  3.156693061641241E+026
+  3.155448821412308E+026
+  3.150695047310002E+026
+  3.142015809983617E+026
+  3.129326821440798E+026
+  3.112947885349334E+026
+  3.093638359187644E+026
+  3.072582161511900E+026
+  3.051312488324498E+026
+  3.031572470873219E+026
+  3.015116045029298E+026
+  3.003462255875588E+026
+  2.997624635840212E+026
+  2.997843670828510E+026
+  3.003353619787096E+026
+  3.012214809193849E+026
+  3.021239656528058E+026
+  3.026036361990666E+026
+  3.021189524483886E+026
+  3.000591766800700E+026
+  2.957932793097542E+026
+  2.887338447615533E+026
+  2.784128240174911E+026
+  2.645623464462175E+026
+  2.471892855193205E+026
+  2.266281006070704E+026
+  2.035548525757608E+026
+  1.789487229410159E+026
+  1.539972598387514E+026
+  1.299568632458112E+026
+  1.079511809714262E+026
+  8.867520217572778E+025
+  7.231925318931446E+025
+  5.874629026716538E+025
+  4.765698504477747E+025
+  3.869385553912180E+025
+  3.150085609305157E+025
+  2.575353787532238E+025
+  2.117124663426592E+025
+  1.751917996499239E+025
+  1.460526341352936E+025
+  1.227479897027032E+025
+  1.040453471448689E+025
+  8.897003730123575E+024
+  7.675512542138786E+024
+  6.679898788956024E+024
+  5.863042230369770E+024
+  5.188050764276540E+024
+  4.626021666733147E+024
+  4.154278011718988E+024
+  3.754989642569740E+024
+  3.414100949892836E+024
+  3.120501001892422E+024
+  2.865383880924478E+024
+  2.641757832457100E+024
+  2.444070876116616E+024
+  2.267927973250518E+024
+  2.109881012062598E+024
+  1.967278265930768E+024
+  1.838165290972411E+024
+  1.721235371979728E+024
+  1.615835865635148E+024
+  1.522048940549661E+024
+  1.440883911877758E+024
+  1.374647352413783E+024
+  1.327601425800356E+024
+  1.307086472202733E+024
+  1.325376889297961E+024
+  1.402663482985227E+024
+  1.571706816715186E+024
+  1.884863613196856E+024
+  2.424297929729267E+024
+  3.316140727567424E+024
+  4.748962254105143E+024
+  6.995871989836473E+024
+  1.043746020215661E+025
+  1.557921511262297E+025
+  2.305173316969758E+025
+  3.357527990830371E+025
+  4.786348914409625E+025
+  6.643757783682517E+025
+  8.936193617161105E+025
+  1.160833212252002E+026
+  1.454857332697630E+026
+  1.760368282561533E+026
+  2.060110486811181E+026
+  2.337516404711341E+026
+  2.579048141866233E+026
+  2.775756469417401E+026
+  2.923852870524916E+026
+  3.024383515201933E+026
+  3.082279422231127E+026
+  3.105107968611965E+026
+  3.101800438244975E+026
+  3.081534107104892E+026
+  3.052852980217120E+026
+  3.023044388567401E+026
+  2.997753756894620E+026
+  2.980808560708884E+026
+  2.974222485434495E+026
+  2.978352073000287E+026
+  2.992175670420720E+026
+  3.013658197124228E+026
+  3.040158322243680E+026
+  3.068831282169402E+026
+  3.096983810333287E+026
+  3.122347995181845E+026
+  3.143256096144139E+026
+  3.158714556230698E+026
+  3.168389023157644E+026
+  3.172521243189259E+026
+  3.171802969922698E+026
+  3.167231506644278E+026
+  3.159966222731094E+026
+  3.151197939993858E+026
+  3.142038626313244E+026
+  3.133437692761708E+026
+  3.126127745259194E+026
+  3.120599066076100E+026
+  3.191412742703208E+026
+  3.190873992187711E+026
+  3.191053259541940E+026
+  3.192111627528793E+026
+  3.194134656676455E+026
+  3.197100758093842E+026
+  3.200856490730158E+026
+  3.205103203663203E+026
+  3.209398765165006E+026
+  3.213178163363834E+026
+  3.215794596942137E+026
+  3.216580048839872E+026
+  3.214922071156873E+026
+  3.210350782334805E+026
+  3.202627077080166E+026
+  3.191820549996412E+026
+  3.178364123205973E+026
+  3.163072179004358E+026
+  3.147110563743234E+026
+  3.131910541332521E+026
+  3.119024674259740E+026
+  3.109930194826877E+026
+  3.105793670458386E+026
+  3.107218305497544E+026
+  3.114000712847464E+026
+  3.124926522552614E+026
+  3.137633645906399E+026
+  3.148569112491729E+026
+  3.153061357622023E+026
+  3.145525558953222E+026
+  3.119814741015494E+026
+  3.069721675030244E+026
+  2.989622352197080E+026
+  2.875227157052144E+026
+  2.724369296105479E+026
+  2.537715541797095E+026
+  2.319244724274473E+026
+  2.076326720091902E+026
+  1.819273280225181E+026
+  1.560334336537327E+026
+  1.312266849367738E+026
+  1.086308014937762E+026
+  8.892372758058594E+025
+  7.226892924998139E+025
+  5.850050420645821E+025
+  4.729277806185528E+025
+  3.826629937843958E+025
+  3.104776924340335E+025
+  2.529977968753464E+025
+  2.073229044046241E+025
+  1.710391913442241E+025
+  1.421812501960031E+025
+  1.191728441081699E+025
+  1.007631147573521E+025
+  8.596659067597783E+024
+  7.401060083266302E+024
+  6.429109023663267E+024
+  5.633650251195910E+024
+  4.977880290989237E+024
+  4.433053267776808E+024
+  3.976681073425643E+024
+  3.591131506611999E+024
+  3.262542239932183E+024
+  2.979983061875388E+024
+  2.734812100145348E+024
+  2.520183164946676E+024
+  2.330670872814980E+024
+  2.161987990159932E+024
+  2.010775832399460E+024
+  1.874454101259581E+024
+  1.751121941149027E+024
+  1.639508166856731E+024
+  1.538976821444107E+024
+  1.449606273197544E+024
+  1.372378584718944E+024
+  1.309544629270352E+024
+  1.265274423697796E+024
+  1.246767556732154E+024
+  1.266091799294971E+024
+  1.343143216633057E+024
+  1.510275385866192E+024
+  1.819309017324429E+024
+  2.351754235750962E+024
+  3.233048043689165E+024
+  4.651236614607593E+024
+  6.879514056241066E+024
+  1.029995528741800E+025
+  1.542219890321100E+025
+  2.288544755099941E+025
+  3.342519212550053E+025
+  4.777890321201432E+025
+  6.650091076563996E+025
+  8.969553436421699E+025
+  1.168497646107805E+026
+  1.468796016642374E+026
+  1.782681800298832E+026
+  2.092829371883976E+026
+  2.382357883043743E+026
+  2.637200658958319E+026
+  2.847729205087871E+026
+  3.009409502243000E+026
+  3.122560178559882E+026
+  3.191472313422885E+026
+  3.223208999437899E+026
+  3.226359038691336E+026
+  3.209927012727531E+026
+  3.182448776889678E+026
+  3.151353758338491E+026
+  3.122559038514110E+026
+  3.100267634431760E+026
+  3.086942827306224E+026
+  3.083431845181139E+026
+  3.089210391801444E+026
+  3.102713935271211E+026
+  3.121715149587292E+026
+  3.143703406227558E+026
+  3.166224757334844E+026
+  3.187150099164194E+026
+  3.204853194696106E+026
+  3.218295376746982E+026
+  3.227026626018850E+026
+  3.231121524934419E+026
+  3.231073037630682E+026
+  3.227666991584266E+026
+  3.221855389899065E+026
+  3.214639704336374E+026
+  3.206971209406548E+026
+  3.199674535436254E+026
+  3.193397263397898E+026
+  3.188584863104242E+026
+  3.176156216629040E+026
+  3.175518515394519E+026
+  3.175655852875398E+026
+  3.176748554075617E+026
+  3.178897293010253E+026
+  3.182088764512520E+026
+  3.186168350458113E+026
+  3.190824490150969E+026
+  3.195588799759663E+026
+  3.199856014211472E+026
+  3.202925628949265E+026
+  3.204064424478016E+026
+  3.202586689694949E+026
+  3.197946108775003E+026
+  3.189830127154357E+026
+  3.178244943139444E+026
+  3.163577587643024E+026
+  3.146621212537735E+026
+  3.128551169573488E+026
+  3.110843150728047E+026
+  3.095130645401583E+026
+  3.083006761038326E+026
+  3.075784009905055E+026
+  3.074233584022870E+026
+  3.078331510399002E+026
+  3.087041915280355E+026
+  3.098167244667675E+026
+  3.108292396319923E+026
+  3.112845557598078E+026
+  3.106294087939777E+026
+  3.082488769749663E+026
+  3.035162045927354E+026
+  2.958571727094450E+026
+  2.848257140972492E+026
+  2.701838093934974E+026
+  2.519742088682910E+026
+  2.305704631794642E+026
+  2.066873296765424E+026
+  1.813383193081747E+026
+  1.557372760733663E+026
+  1.311562527190393E+026
+  1.087225983879683E+026
+  8.912332810588427E+025
+  7.253324109321245E+025
+  5.879749219951673E+025
+  4.759993060520374E+025
+  3.856869243313018E+025
+  3.133618976769628E+025
+  2.556911600159516E+025
+  2.098025007780191E+025
+  1.733005947637212E+025
+  1.442315002965911E+025
+  1.210255259473515E+025
+  1.024350362329333E+025
+  8.747562435343998E+024
+  7.537434797884642E+024
+  6.552610875450557E+024
+  5.745791028347126E+024
+  5.080012273712763E+024
+  4.526368618541765E+024
+  4.062219872805454E+024
+  3.669794337387252E+024
+  3.335104726245348E+024
+  3.047110797799802E+024
+  2.797075089244433E+024
+  2.578069342634895E+024
+  2.384598571726210E+024
+  2.212317388166582E+024
+  2.057819530912025E+024
+  1.918487046679500E+024
+  1.792390950253885E+024
+  1.678241374039493E+024
+  1.575393463738220E+024
+  1.483927408206516E+024
+  1.404839648655558E+024
+  1.340411249617115E+024
+  1.294863666331754E+024
+  1.275477844985446E+024
+  1.294446036308436E+024
+  1.371850914058631E+024
+  1.540320210376137E+024
+  1.852066832521755E+024
+  2.389141225878135E+024
+  3.277685487161850E+024
+  4.706593955300311E+024
+  6.949950770351534E+024
+  1.039052311268517E+025
+  1.553799572082801E+025
+  2.303025485965629E+025
+  3.359912663281943E+025
+  4.797494649167896E+025
+  6.670054809508779E+025
+  8.986449114356140E+025
+  1.169358163491833E+026
+  1.468139978873848E+026
+  1.779708872999718E+026
+  2.086710221570192E+026
+  2.372334134677703E+026
+  2.622681459004831E+026
+  2.828366810250019E+026
+  2.985142857032222E+026
+  3.093623520093091E+026
+  3.158372599816295E+026
+  3.186679874500830E+026
+  3.187300083616377E+026
+  3.169336119194592E+026
+  3.141353768483661E+026
+  3.110747766392263E+026
+  3.083343004243215E+026
+  3.063202646766186E+026
+  3.052614566083236E+026
+  3.052228887581835E+026
+  3.061317355769501E+026
+  3.078119340946128E+026
+  3.100232604409231E+026
+  3.125003490814248E+026
+  3.149874054010366E+026
+  3.172653345082665E+026
+  3.191694624006798E+026
+  3.205975885675459E+026
+  3.215094300373500E+026
+  3.219194110893570E+026
+  3.218851915247597E+026
+  3.214942987440146E+026
+  3.208507306380139E+026
+  3.200626794159463E+026
+  3.192321020767030E+026
+  3.184467611672912E+026
+  3.177750181594201E+026
+  3.172633086385351E+026
+  3.175570609638970E+026
+  3.174979485293300E+026
+  3.175138206643426E+026
+  3.176218347197342E+026
+  3.178313620609468E+026
+  3.181406829619882E+026
+  3.185343821137810E+026
+  3.189819032110405E+026
+  3.194376534994783E+026
+  3.198430517442496E+026
+  3.201306941480497E+026
+  3.202305456168103E+026
+  3.200778307358024E+026
+  3.196220185673209E+026
+  3.188359867983377E+026
+  3.177241915731887E+026
+  3.163285094093458E+026
+  3.147303916728659E+026
+  3.130481250608315E+026
+  3.114283642224486E+026
+  3.100317002675971E+026
+  3.090128014884234E+026
+  3.084965060017326E+026
+  3.085520214592864E+026
+  3.091679560218193E+026
+  3.102311725171760E+026
+  3.115124088974016E+026
+  3.126613153889842E+026
+  3.132131459043003E+026
+  3.126089029607416E+026
+  3.102302404339899E+026
+  3.054496590889732E+026
+  2.976951097316198E+026
+  2.865256558153351E+026
+  2.717111775143217E+026
+  2.533046106771990E+026
+  2.316911817180723E+026
+  2.075977414715032E+026
+  1.820490804955481E+026
+  1.562683123951782E+026
+  1.315338208237985E+026
+  1.089757721339273E+026
+  8.928035053211718E+025
+  7.261894529411422E+025
+  5.883227276581256E+025
+  4.759973703962152E+025
+  3.854553049325849E+025
+  3.129880989437912E+025
+  2.552371041126910E+025
+  2.093107287166347E+025
+  1.727993900316646E+025
+  1.437389210570540E+025
+  1.205524683289513E+025
+  1.019874984794914E+025
+  8.705634259072860E+024
+  7.498395437571544E+024
+  6.516393593494095E+024
+  5.712253914185838E+024
+  5.048974744701102E+024
+  4.497635109751251E+024
+  4.035594689458298E+024
+  3.645090506414992E+024
+  3.312148839089418E+024
+  3.025745221655156E+024
+  2.777158483089728E+024
+  2.559476102283932E+024
+  2.367217609688428E+024
+  2.196050503220296E+024
+  2.042579519853729E+024
+  1.904195642468463E+024
+  1.778976625609751E+024
+  1.665637018280678E+024
+  1.563533915340162E+024
+  1.472746799535207E+024
+  1.394268488280267E+024
+  1.330373132972294E+024
+  1.285271482293216E+024
+  1.266229378044931E+024
+  1.285419050756026E+024
+  1.362898343348545E+024
+  1.531267307853552E+024
+  1.842714624023840E+024
+  2.379285133586074E+024
+  3.267165525281269E+024
+  4.695404241096432E+024
+  6.938451147889748E+024
+  1.037981198893106E+025
+  1.553051368811885E+025
+  2.303067892838912E+025
+  3.361556131640717E+025
+  4.802028940213709E+025
+  6.679367506592986E+025
+  9.003062475202234E+025
+  1.172055348948494E+026
+  1.472208476549886E+026
+  1.785478078920770E+026
+  2.094461329340615E+026
+  2.382259538513298E+026
+  2.634853381085303E+026
+  2.842720383317564E+026
+  3.001475358061203E+026
+  3.111608170496637E+026
+  3.177583235499528E+026
+  3.206622085515199E+026
+  3.207444816271241E+026
+  3.189152668948699E+026
+  3.160340069233819E+026
+  3.128456614367399E+026
+  3.099403283436135E+026
+  3.077334841407655E+026
+  3.064640004492642E+026
+  3.062072389873796E+026
+  3.069003317607798E+026
+  3.083761760440276E+026
+  3.104020070682770E+026
+  3.127180593953147E+026
+  3.150720950690452E+026
+  3.172465266478073E+026
+  3.190762940966927E+026
+  3.204571997951556E+026
+  3.213457169592325E+026
+  3.217521796460648E+026
+  3.217297071886333E+026
+  3.213611987426473E+026
+  3.207462463136489E+026
+  3.199891060170094E+026
+  3.191884488125103E+026
+  3.184295147283383E+026
+  3.177789554379884E+026
+  3.172822970964474E+026
+  3.133426619540409E+026
+  3.132722596034691E+026
+  3.132832390172280E+026
+  3.133949265365513E+026
+  3.136184046670991E+026
+  3.139529027263816E+026
+  3.143828919297672E+026
+  3.148763741161977E+026
+  3.153847894485152E+026
+  3.158449690031912E+026
+  3.161833363997977E+026
+  3.163222899342881E+026
+  3.161884535517279E+026
+  3.157221914168683E+026
+  3.148874563242252E+026
+  3.136807645747034E+026
+  3.121379102430420E+026
+  3.103369871366593E+026
+  3.083964253800087E+026
+  3.064671160181666E+026
+  3.047182999827799E+026
+  3.033176892120537E+026
+  3.024071628060715E+026
+  3.020761969964992E+026
+  3.023357988690843E+026
+  3.030960167756730E+026
+  3.041500726889673E+026
+  3.051678725922545E+026
+  3.057012265752441E+026
+  3.052026536561790E+026
+  3.030591386113508E+026
+  2.986414427616555E+026
+  2.913681757091067E+026
+  2.807814100065983E+026
+  2.666269797096099E+026
+  2.489281030715933E+026
+  2.280368533068416E+026
+  2.046464742353110E+026
+  1.797510886191176E+026
+  1.545493368548008E+026
+  1.303037930369185E+026
+  1.081389817979273E+026
+  8.874597135923953E+025
+  7.230831515251859E+025
+  5.868147942482630E+025
+  4.755919055521749E+025
+  3.857811243028595E+025
+  3.137756272384250E+025
+  2.562958426419023E+025
+  2.105096445289694E+025
+  1.740509534889281E+025
+  1.449866832843134E+025
+  1.217617051577639E+025
+  1.031383419375451E+025
+  8.813884453795435E+024
+  7.599460476992630E+024
+  6.610325035437171E+024
+  5.799341716374492E+024
+  5.129637751944769E+024
+  4.572349697019540E+024
+  4.104849659385662E+024
+  3.709359791589078E+024
+  3.371876098610874E+024
+  3.081336256785595E+024
+  2.828978705002208E+024
+  2.607851206910384E+024
+  2.412436257564414E+024
+  2.238368244780231E+024
+  2.082223505992808E+024
+  1.941369858551592E+024
+  1.813867516818409E+024
+  1.698419461090649E+024
+  1.594377554901580E+024
+  1.501822831171252E+024
+  1.421757019219377E+024
+  1.356471303763683E+024
+  1.310202498731897E+024
+  1.290252358063147E+024
+  1.308838815385926E+024
+  1.386072382416754E+024
+  1.554603096918643E+024
+  1.866642625063038E+024
+  2.404178866493030E+024
+  3.293157286883441E+024
+  4.722011084491238E+024
+  6.963881045026207E+024
+  1.039977209630291E+025
+  1.553631238855887E+025
+  2.300644371981532E+025
+  3.353455641288205E+025
+  4.784070482655393E+025
+  6.645496478001018E+025
+  8.945230857927076E+025
+  1.162899883260898E+026
+  1.458600736764263E+026
+  1.766336271075784E+026
+  2.068822674925365E+026
+  2.349397709154072E+026
+  2.594370873006812E+026
+  2.794601053727383E+026
+  2.946092244120807E+026
+  3.049690895816658E+026
+  3.110155219203324E+026
+  3.134919725256716E+026
+  3.132829677486723E+026
+  3.113025017332739E+026
+  3.084059244017442E+026
+  3.053271595591378E+026
+  3.026395568007836E+026
+  3.007375181346259E+026
+  2.998360265832013E+026
+  2.999853385895003E+026
+  3.010978743360965E+026
+  3.029837300222912E+026
+  3.053905532352600E+026
+  3.080431801540432E+026
+  3.106787352292116E+026
+  3.130738953540700E+026
+  3.150625063092017E+026
+  3.165433301610965E+026
+  3.174790409759742E+026
+  3.178884860038083E+026
+  3.178346633714143E+026
+  3.174108285095513E+026
+  3.167266296998148E+026
+  3.158954427964904E+026
+  3.150236397654665E+026
+  3.142024181744670E+026
+  3.135024770976564E+026
+  3.129714692443370E+026
+  3.129747597428661E+026
+  3.129034487084946E+026
+  3.129139934209492E+026
+  3.130258936292208E+026
+  3.132503748615751E+026
+  3.135867568285581E+026
+  3.140195265047896E+026
+  3.145166076833489E+026
+  3.150292547685631E+026
+  3.154939990071680E+026
+  3.158368536069823E+026
+  3.159797108537651E+026
+  3.158486202695444E+026
+  3.153833423537945E+026
+  3.145472467891332E+026
+  3.133363449505544E+026
+  3.117860653775053E+026
+  3.099743349831290E+026
+  3.080196665649978E+026
+  3.060733194235975E+026
+  3.043052034703089E+026
+  3.028839902502928E+026
+  3.019527718747516E+026
+  3.016024277768942E+026
+  3.018454733864503E+026
+  3.025934702346362E+026
+  3.036410506616415E+026
+  3.046593212305102E+026
+  3.052009835930040E+026
+  3.047190535547507E+026
+  3.026005504683928E+026
+  2.982157641179132E+026
+  2.909823130312107E+026
+  2.804407852579441E+026
+  2.663351121731741E+026
+  2.486863221144417E+026
+  2.278441962086537E+026
+  2.044998083740553E+026
+  1.796454667189837E+026
+  1.544785514698111E+026
+  1.302610529954524E+026
+  1.081176147302819E+026
+  8.874003179360227E+025
+  7.231291506068542E+025
+  5.869283484743421E+025
+  4.757450937048544E+025
+  3.859542007685158E+025
+  3.139552052520238E+025
+  2.564732688894253E+025
+  2.106796628058868E+025
+  1.742106652475329E+025
+  1.451347712970181E+025
+  1.218978723154728E+025
+  1.032629169932123E+025
+  8.825251257035574E+024
+  7.609822807736193E+024
+  6.619775328857584E+024
+  5.807971515567963E+024
+  5.137533596442076E+024
+  4.579590979811694E+024
+  4.111507744933447E+024
+  3.715497913030592E+024
+  3.377549713506396E+024
+  3.086593653510192E+024
+  2.833861729396138E+024
+  2.612396031195079E+024
+  2.416674148423885E+024
+  2.242326310370257E+024
+  2.085925416376058E+024
+  1.944836543543466E+024
+  1.817117851790353E+024
+  1.701470957068684E+024
+  1.597247076604352E+024
+  1.504527378088102E+024
+  1.424314623452319E+024
+  1.358902127152709E+024
+  1.312530252436901E+024
+  1.292506217684039E+024
+  1.311056051284723E+024
+  1.388301935948912E+024
+  1.556910242287327E+024
+  1.869114543492942E+024
+  2.406930231725890E+024
+  3.296333547240441E+024
+  4.725784711455083E+024
+  6.968432365280839E+024
+  1.040524155518806E+025
+  1.554270617909407E+025
+  2.301347216218498E+025
+  3.354138903918278E+025
+  4.784564504237065E+025
+  6.645508875243768E+025
+  8.944318084836911E+025
+  1.162656095130903E+026
+  1.458131461616068E+026
+  1.765561363721405E+026
+  2.067662991511989E+026
+  2.347784141465526E+026
+  2.592252525550024E+026
+  2.791951142922936E+026
+  2.942910948676039E+026
+  3.046005106551382E+026
+  3.106015689864745E+026
+  3.130396404214857E+026
+  3.128006024112481E+026
+  3.107991973752279E+026
+  3.078909350928460E+026
+  3.048093584541861E+026
+  3.021269661179844E+026
+  3.002369277004228E+026
+  2.993527158261992E+026
+  2.995229135507609E+026
+  3.006582257263396E+026
+  3.025671102056663E+026
+  3.049957602447484E+026
+  3.076678272776987E+026
+  3.103195772881373E+026
+  3.127271789571777E+026
+  3.147243117583730E+026
+  3.162098771305976E+026
+  3.171469376718012E+026
+  3.175549105092818E+026
+  3.174974741158670E+026
+  3.170686067327117E+026
+  3.163786608087117E+026
+  3.155416470066372E+026
+  3.146644649477207E+026
+  3.138387079409635E+026
+  3.131353265510290E+026
+  3.126020811738714E+026
+  3.204245063256342E+026
+  3.203760875615411E+026
+  3.203961333831263E+026
+  3.204996731533335E+026
+  3.206944356242043E+026
+  3.209778433896087E+026
+  3.213346958950757E+026
+  3.217359674239405E+026
+  3.221390760738328E+026
+  3.224899852142219E+026
+  3.227272847292971E+026
+  3.227881396488349E+026
+  3.226157724543510E+026
+  3.221678800678528E+026
+  3.214250951274629E+026
+  3.203983606814252E+026
+  3.191339463386596E+026
+  3.177148243836834E+026
+  3.162572878510480E+026
+  3.149020662420581E+026
+  3.137997807357155E+026
+  3.130913283425440E+026
+  3.128845911454123E+026
+  3.132295989521558E+026
+  3.140948006378757E+026
+  3.153473346678980E+026
+  3.167401239979107E+026
+  3.179083292976261E+026
+  3.183772971539131E+026
+  3.175837221494148E+026
+  3.149112612467252E+026
+  3.097410696601129E+026
+  3.015162933046336E+026
+  2.898170738201492E+026
+  2.744389569680657E+026
+  2.554631586559668E+026
+  2.333032279477882E+026
+  2.087114633586782E+026
+  1.827324031801911E+026
+  1.566010274539280E+026
+  1.315986742443781E+026
+  1.088499706260378E+026
+  8.902936894975225E+025
+  7.229415353027588E+025
+  5.847152866172448E+025
+  4.722939909452304E+025
+  3.818288184252021E+025
+  3.095436027305996E+025
+  2.520314536110353E+025
+  2.063679122683084E+025
+  1.701220559709755E+025
+  1.413166751387455E+025
+  1.183676332261745E+025
+  1.000189695897841E+025
+  8.528206701517800E+024
+  7.338244474896141E+024
+  6.371512727660698E+024
+  5.580821201130653E+024
+  4.929367484281166E+024
+  4.388427734270320E+024
+  3.935547098861800E+024
+  3.553131560521078E+024
+  3.227357957018177E+024
+  2.947333844486803E+024
+  2.704452362555475E+024
+  2.491898862156149E+024
+  2.304275698588903E+024
+  2.137319455826815E+024
+  1.987691324173439E+024
+  1.852826940314256E+024
+  1.730837421608750E+024
+  1.620459508007866E+024
+  1.521060927787774E+024
+  1.432719135102191E+024
+  1.356410059167018E+024
+  1.294372203633993E+024
+  1.250755387155529E+024
+  1.232728817897645E+024
+  1.252316499003830E+024
+  1.329353527483268E+024
+  1.496111921675832E+024
+  1.804309882467663E+024
+  2.335342135832052E+024
+  3.214543673582133E+024
+  4.629932454867493E+024
+  6.854865647381889E+024
+  1.027197519495723E+025
+  1.539216419291737E+025
+  2.285703673169841E+025
+  3.340612021715538E+025
+  4.778297787136868E+025
+  6.655013810532581E+025
+  8.982147722801145E+025
+  1.170932312977243E+026
+  1.472882961347748E+026
+  1.788924346424544E+026
+  2.101701427777330E+026
+  2.394245458624373E+026
+  2.652351640613828E+026
+  2.866219936062634E+026
+  3.031132238635165E+026
+  3.147230863119963E+026
+  3.218654761850936E+026
+  3.252350081754937E+026
+  3.256829514061858E+026
+  3.241063672649183E+026
+  3.213594782627971E+026
+  3.181895068505748E+026
+  3.151955453214250E+026
+  3.128077305268335E+026
+  3.112839280289664E+026
+  3.107212818043948E+026
+  3.110798207066401E+026
+  3.122147723254232E+026
+  3.139135918891813E+026
+  3.159333598166838E+026
+  3.180344376778588E+026
+  3.200071691866930E+026
+  3.216897816748589E+026
+  3.229771327751235E+026
+  3.238212196685070E+026
+  3.242252450889683E+026
+  3.242334833140431E+026
+  3.239191907430662E+026
+  3.233723437825938E+026
+  3.226883036248843E+026
+  3.219581086868950E+026
+  3.212610090378592E+026
+  3.206595224555586E+026
+  3.201969441894597E+026
+  3.151902539689745E+026
+  3.151144697528668E+026
+  3.151232677551827E+026
+  3.152370259899627E+026
+  3.154676351835316E+026
+  3.158147309824941E+026
+  3.162626338364705E+026
+  3.167785020520816E+026
+  3.173121405798446E+026
+  3.177979088723867E+026
+  3.181589472241507E+026
+  3.183136642558294E+026
+  3.181841797033192E+026
+  3.177061160298751E+026
+  3.168387990810693E+026
+  3.155746404857709E+026
+  3.139462846870945E+026
+  3.120300497456240E+026
+  3.099443232427316E+026
+  3.078419392708431E+026
+  3.058961700492167E+026
+  3.042807689999426E+026
+  3.031453956396261E+026
+  3.025885911421301E+026
+  3.026311075001861E+026
+  3.031927150428134E+026
+  3.040755965227306E+026
+  3.049571487206550E+026
+  3.053945819260751E+026
+  3.048432404616014E+026
+  3.026900496338020E+026
+  2.983027234487156E+026
+  2.910939713479082E+026
+  2.805975157106070E+026
+  2.665490795424562E+026
+  2.489609719597172E+026
+  2.281747271309332E+026
+  2.048746524614062E+026
+  1.800486265020546E+026
+  1.548924531983677E+026
+  1.306694395700740E+026
+  1.085078259409433E+026
+  8.910376036839133E+025
+  7.264563680370851E+025
+  5.899290929263145E+025
+  4.784232381355206E+025
+  3.883267124355178E+025
+  3.160465922631132E+025
+  2.583115549274094E+025
+  2.122936397164086E+025
+  1.756281388288187E+025
+  1.463815375165297E+025
+  1.229972053200398E+025
+  1.042353985649299E+025
+  8.911607671048819E+024
+  7.686833097764086E+024
+  6.688760746933674E+024
+  5.870054772419694E+024
+  5.193664607654952E+024
+  4.630571089124949E+024
+  4.158011687292441E+024
+  3.758093238839405E+024
+  3.416713679868456E+024
+  3.122727752924412E+024
+  2.867304112326768E+024
+  2.643432115572604E+024
+  2.445545716438261E+024
+  2.269239383931849E+024
+  2.111057186365094E+024
+  1.968341612284134E+024
+  1.839134042200543E+024
+  1.722124958336898E+024
+  1.616660253724613E+024
+  1.522822198884450E+024
+  1.441622392293422E+024
+  1.375373115848729E+024
+  1.328347958684944E+024
+  1.307908441906042E+024
+  1.326366832558363E+024
+  1.403980133986828E+024
+  1.573622551217588E+024
+  1.887842534569229E+024
+  2.429121701697426E+024
+  3.324106300774024E+024
+  4.762183287161933E+024
+  7.017721601134687E+024
+  1.047319155266860E+025
+  1.563677900044474E+025
+  2.314276412066149E+025
+  3.371612576799387E+025
+  4.807599592185677E+025
+  6.674910556154160E+025
+  8.980396462210534E+025
+  1.166887490224133E+026
+  1.462856636732266E+026
+  1.770572633840520E+026
+  2.072700315322550E+026
+  2.352573775983346E+026
+  2.596550608447461E+026
+  2.795583356388381E+026
+  2.945801339586838E+026
+  3.048190461926959E+026
+  3.107645208367075E+026
+  3.131718815573850E+026
+  3.129347498973844E+026
+  3.109728359772518E+026
+  3.081435905445237E+026
+  3.051794846547877E+026
+  3.026491641611958E+026
+  3.009395793841268E+026
+  3.002561832621400E+026
+  3.006384193107381E+026
+  3.019874774917481E+026
+  3.041026698988317E+026
+  3.067220870783635E+026
+  3.095628587349116E+026
+  3.123566640637453E+026
+  3.148771681720094E+026
+  3.169575797842636E+026
+  3.184981447950744E+026
+  3.194647474339730E+026
+  3.198806973549523E+026
+  3.198142111695105E+026
+  3.193640470169171E+026
+  3.186452242428014E+026
+  3.177760162778649E+026
+  3.168669602486018E+026
+  3.160125140237016E+026
+  3.152856455839534E+026
+  3.147352812202798E+026
+  3.184343474708342E+026
+  3.183804958341511E+026
+  3.183985101212638E+026
+  3.185045128726012E+026
+  3.187070703206545E+026
+  3.190040327513236E+026
+  3.193800702251112E+026
+  3.198053463904059E+026
+  3.202357046817693E+026
+  3.206147448208223E+026
+  3.208779506017882E+026
+  3.209587667107609E+026
+  3.207962950386873E+026
+  3.203440077345025E+026
+  3.195785739155968E+026
+  3.185076469442632E+026
+  3.171753084639711E+026
+  3.156638474075229E+026
+  3.140907102319766E+026
+  3.125998318215073E+026
+  3.113471486146160E+026
+  3.104808560208119E+026
+  3.101177978004755E+026
+  3.103181295226788E+026
+  3.110609467778732E+026
+  3.122238206259000E+026
+  3.135691256961044E+026
+  3.147397540085337E+026
+  3.152664019970337E+026
+  3.145881898083577E+026
+  3.120878844023260E+026
+  3.071422295396970E+026
+  2.991864603474111E+026
+  2.877896115884989E+026
+  2.727335640907780E+026
+  2.540843130868252E+026
+  2.322399675762810E+026
+  2.079387142036427E+026
+  1.822138422967965E+026
+  1.562931762206541E+026
+  1.314556385088691E+026
+  1.088281018224187E+026
+  8.909091647798251E+025
+  7.240891751598437E+025
+  5.861677253566923E+025
+  4.738886965326535E+025
+  3.834553085013636E+025
+  3.111309016917492E+025
+  2.535372567606203E+025
+  2.077699045842502E+025
+  1.714113097672748E+025
+  1.424928263564982E+025
+  1.194354755443899E+025
+  1.009861254713291E+025
+  8.615744744295584E+024
+  7.417526946463870E+024
+  6.443433275700687E+024
+  5.646212061831371E+024
+  4.988983486500499E+024
+  4.442941104847256E+024
+  3.985548791849219E+024
+  3.599136273517536E+024
+  3.269811007142861E+024
+  2.986618769720076E+024
+  2.740898581665935E+024
+  2.525789036450656E+024
+  2.335852640461099E+024
+  2.166792557053156E+024
+  2.015242555591302E+024
+  1.878616522602948E+024
+  1.755009300645015E+024
+  1.643146804076895E+024
+  1.542391584371327E+024
+  1.452822092547207E+024
+  1.375422448820215E+024
+  1.312448330434906E+024
+  1.268078671422268E+024
+  1.249528406154598E+024
+  1.268890873847813E+024
+  1.346103961409538E+024
+  1.513588603103421E+024
+  1.823272176939356E+024
+  2.356830355620523E+024
+  3.239950875025938E+024
+  4.661048606609010E+024
+  6.893840668464227E+024
+  1.032111150883549E+025
+  1.545340858079611E+025
+  2.293101067111519E+025
+  3.349053853324521E+025
+  4.787040686328789E+025
+  6.662529850754361E+025
+  8.985877412425584E+025
+  1.170556913736503E+026
+  1.471287424468249E+026
+  1.785569874609769E+026
+  2.096035900819663E+026
+  2.385766134878256E+026
+  2.640664837439040E+026
+  2.851087110874649E+026
+  3.012496042466662E+026
+  3.125219701198597E+026
+  3.193568454872760E+026
+  3.224631499165176E+026
+  3.227027568954222E+026
+  3.209792411586399E+026
+  3.181492189899936E+026
+  3.149584173698771E+026
+  3.120009629750628E+026
+  3.096991264069909E+026
+  3.083007038369613E+026
+  3.078913668722719E+026
+  3.084191305432113E+026
+  3.097275295188697E+026
+  3.115934371217552E+026
+  3.137651084474272E+026
+  3.159962807787897E+026
+  3.180730885926204E+026
+  3.198319510564456E+026
+  3.211681075613022E+026
+  3.220357684414924E+026
+  3.224417324679692E+026
+  3.224347697431378E+026
+  3.220930615386756E+026
+  3.215115140723034E+026
+  3.207900658357693E+026
+  3.200236985279299E+026
+  3.192947713170845E+026
+  3.186679620667704E+026
+  3.181877476478367E+026
+  3.173449345442463E+026
+  3.172829743074100E+026
+  3.172975986988123E+026
+  3.174065018817099E+026
+  3.176194738364297E+026
+  3.179350141130649E+026
+  3.183376451985223E+026
+  3.187963912658879E+026
+  3.192648220386465E+026
+  3.196830641497240E+026
+  3.199819627305515E+026
+  3.200893079519516E+026
+  3.199378062890927E+026
+  3.194741928954250E+026
+  3.186685688955470E+026
+  3.175227835063276E+026
+  3.160765156112583E+026
+  3.144096779429946E+026
+  3.126399151304720E+026
+  3.109143364826401E+026
+  3.093952218160023E+026
+  3.082402146663611E+026
+  3.075783678056896E+026
+  3.074841915797582E+026
+  3.079524360547883E+026
+  3.088766161100354E+026
+  3.100342470244345E+026
+  3.110814680294400E+026
+  3.115593166657842E+026
+  3.109134740191122E+026
+  3.085288020267215E+026
+  3.037792245250700E+026
+  2.960920893749723E+026
+  2.850236969808059E+026
+  2.703390224278339E+026
+  2.520841741524699E+026
+  2.306360867872895E+026
+  2.067125510232827E+026
+  1.813294045005085E+026
+  1.557018467901919E+026
+  1.311022039198950E+026
+  1.086571104796048E+026
+  8.905225235818193E+025
+  7.246095453332471E+025
+  5.872702663257335E+025
+  4.753321188655385E+025
+  3.850680133420857E+025
+  3.127959911994658E+025
+  2.551788597985069E+025
+  2.093417865335088E+025
+  1.728879247185752E+025
+  1.438625800305970E+025
+  1.206958209964323E+025
+  1.021400957093104E+025
+  8.721127062115732E+024
+  7.513677491340586E+024
+  6.531192003006678E+024
+  5.726412011597186E+024
+  5.062413459383927E+024
+  4.510325986478162E+024
+  4.047541254300646E+024
+  3.656315559313603E+024
+  3.322685919827062E+024
+  3.035632993549264E+024
+  2.786437144283221E+024
+  2.568185200121044E+024
+  2.375394824679079E+024
+  2.203731104757000E+024
+  2.049796290426552E+024
+  1.910979131133497E+024
+  1.785355632515277E+024
+  1.671639235260410E+024
+  1.569186655421824E+024
+  1.478077739675474E+024
+  1.399306318321520E+024
+  1.335147934190078E+024
+  1.289814519453273E+024
+  1.270571720516666E+024
+  1.289587936468515E+024
+  1.366909290564092E+024
+  1.535108395417464E+024
+  1.846316723507900E+024
+  2.382467727756039E+024
+  3.269541674715806E+024
+  4.696220227011094E+024
+  6.936327319410235E+024
+  1.037234451211850E+025
+  1.551369903857695E+025
+  2.299814611632835E+025
+  3.355765866911293E+025
+  4.792319382231488E+025
+  6.663888628493881E+025
+  8.979537758647467E+025
+  1.168643435844012E+026
+  1.467479017812202E+026
+  1.779199480323529E+026
+  2.086459307845606E+026
+  2.372443140275857E+026
+  2.623231505210258E+026
+  2.829406450211146E+026
+  2.986680399337475E+026
+  3.095624666680108E+026
+  3.160763036843687E+026
+  3.189351757125823E+026
+  3.190121104663866E+026
+  3.172159922042046E+026
+  3.144030680965248E+026
+  3.113135059083798E+026
+  3.085314048504178E+026
+  3.064654462896335E+026
+  3.053473343127663E+026
+  3.052453164758005E+026
+  3.060898708305031E+026
+  3.077080611952334E+026
+  3.098623945869776E+026
+  3.122896682610596E+026
+  3.147355721534905E+026
+  3.169817766560584E+026
+  3.188636798601233E+026
+  3.202785429897054E+026
+  3.211850574906090E+026
+  3.215962788364428E+026
+  3.215683026206380E+026
+  3.211870358967810E+026
+  3.205549229141324E+026
+  3.197787689238372E+026
+  3.189593830485849E+026
+  3.181836638615057E+026
+  3.175194120406975E+026
+  3.170127995562985E+026
+  3.140605541113663E+026
+  3.139907139925984E+026
+  3.140019666567711E+026
+  3.141135351446245E+026
+  3.143364173637272E+026
+  3.146697903064275E+026
+  3.150981191160250E+026
+  3.155894590229512E+026
+  3.160953738886205E+026
+  3.165528958700040E+026
+  3.168887289457657E+026
+  3.170256263090841E+026
+  3.168906288033035E+026
+  3.164245584969266E+026
+  3.155918375593646E+026
+  3.143894257194754E+026
+  3.128534908125648E+026
+  3.110623833339433E+026
+  3.091346255421872E+026
+  3.072209928797829E+026
+  3.054903687780287E+026
+  3.041098451367115E+026
+  3.032204149894733E+026
+  3.029104183308614E+026
+  3.031895114975149E+026
+  3.039662318247680E+026
+  3.050322004245081E+026
+  3.060557163225282E+026
+  3.065870710434530E+026
+  3.060774566492096E+026
+  3.039128325902131E+026
+  2.994633500976320E+026
+  2.921475345146443E+026
+  2.815079955042118E+026
+  2.672917876078623E+026
+  2.495240379918168E+026
+  2.285593419841149E+026
+  2.050939085927553E+026
+  1.801250078519303E+026
+  1.548542874948895E+026
+  1.305468611592572E+026
+  1.083289799890192E+026
+  8.889223317245988E+025
+  7.241960324525737E+025
+  5.876541739880944E+025
+  4.762209395743799E+025
+  3.862503988252495E+025
+  3.141246960937561E+025
+  2.565550922651998E+025
+  2.107021149647427E+025
+  1.741939448536200E+025
+  1.450930920866017E+025
+  1.218410945752296E+025
+  1.031977770023194E+025
+  8.818353187337792E+024
+  7.602837600316192E+024
+  6.612892374664294E+024
+  5.801306612381922E+024
+  5.131152888067526E+024
+  4.573527681944604E+024
+  4.105773722773371E+024
+  3.710091614591265E+024
+  3.372461541309101E+024
+  3.081809546423471E+024
+  2.829365499969164E+024
+  2.608170840689068E+024
+  2.412703385269869E+024
+  2.238594055474705E+024
+  2.082416621415145E+024
+  1.941537009593904E+024
+  1.814014070837087E+024
+  1.698549865344236E+024
+  1.594495765379520E+024
+  1.501932815795687E+024
+  1.421863467805662E+024
+  1.356580758168784E+024
+  1.310325258333124E+024
+  1.290405754377737E+024
+  1.309052839803381E+024
+  1.386399269912855E+024
+  1.555133416554821E+024
+  1.867531817172274E+024
+  2.405690084003513E+024
+  3.295728822083870E+024
+  4.726359297186730E+024
+  6.971151708402390E+024
+  1.041175264893973E+025
+  1.555571152089737E+025
+  2.303722810695128E+025
+  3.358230088737075E+025
+  4.791285576515941E+025
+  6.656083522385374E+025
+  8.960258365312262E+025
+  1.164957746585944E+026
+  1.461317653509172E+026
+  1.769797381286866E+026
+  2.073084228889384E+026
+  2.354480461888737E+026
+  2.600257978836359E+026
+  2.801240412918524E+026
+  2.953402374748849E+026
+  3.057568937944822E+026
+  3.118485650754645E+026
+  3.143582653366642E+026
+  3.141707984684775E+026
+  3.122010035285963E+026
+  3.093054912579397E+026
+  3.062197222540134E+026
+  3.035187360968327E+026
+  3.015986721349981E+026
+  3.006762071697247E+026
+  3.008031705745347E+026
+  3.018933713418711E+026
+  3.037580627953364E+026
+  3.061457880649906E+026
+  3.087820061634439E+026
+  3.114041987727451E+026
+  3.137891573953345E+026
+  3.157706348120567E+026
+  3.172471349373195E+026
+  3.181809539239627E+026
+  3.185904859137219E+026
+  3.185382417549421E+026
+  3.181169911519065E+026
+  3.174359276312456E+026
+  3.166080260981326E+026
+  3.157393279697463E+026
+  3.149207814294397E+026
+  3.142229222264945E+026
+  3.136933248588225E+026
+  3.299049175236920E+026
+  3.298779704393544E+026
+  3.299057938212719E+026
+  3.299990110494641E+026
+  3.301619689045194E+026
+  3.303903164905241E+026
+  3.306692227689116E+026
+  3.309725883445845E+026
+  3.312635361174852E+026
+  3.314964814914570E+026
+  3.316208811314510E+026
+  3.315865212831585E+026
+  3.313500161327820E+026
+  3.308819560582801E+026
+  3.301738917082560E+026
+  3.292441382710075E+026
+  3.281412785804183E+026
+  3.269442593001630E+026
+  3.257581459360400E+026
+  3.247049608659138E+026
+  3.239095722752770E+026
+  3.234812804610097E+026
+  3.234924663246717E+026
+  3.239563051777642E+026
+  3.248059941071385E+026
+  3.258781230446742E+026
+  3.269027392272804E+026
+  3.275023850585408E+026
+  3.272020370930526E+026
+  3.254515030370551E+026
+  3.216613807742064E+026
+  3.152529129829684E+026
+  3.057206202337073E+026
+  2.927041240444809E+026
+  2.760619936880259E+026
+  2.559362281077291E+026
+  2.327924152674012E+026
+  2.074198371813914E+026
+  1.808800686114117E+026
+  1.544029482913225E+026
+  1.292437254767653E+026
+  1.064855472226452E+026
+  8.675734993570533E+025
+  7.017703412746645E+025
+  5.654156939630721E+025
+  4.549740287940764E+025
+  3.664551818386457E+025
+  2.959977180488680E+025
+  2.401497092925715E+025
+  1.959689242564472E+025
+  1.610240744877143E+025
+  1.333478941540459E+025
+  1.113716230362042E+025
+  9.385690869052751E+024
+  7.983298055829093E+024
+  6.854228492018210E+024
+  5.939525197091066E+024
+  5.193361788368947E+024
+  4.580120198547341E+024
+  4.072090941242725E+024
+  3.647679350192014E+024
+  3.290015649410926E+024
+  2.985883279835397E+024
+  2.724895837546139E+024
+  2.498867124182497E+024
+  2.301330809126846E+024
+  2.127176074670418E+024
+  1.972373600434215E+024
+  1.833772749022112E+024
+  1.708956393334264E+024
+  1.596145177920717E+024
+  1.494149034419064E+024
+  1.402371699349451E+024
+  1.320885561080002E+024
+  1.250611941111180E+024
+  1.193669538140597E+024
+  1.153996176661027E+024
+  1.138412350873399E+024
+  1.158385898124002E+024
+  1.232880273549713E+024
+  1.392822635327311E+024
+  1.687895055138894E+024
+  2.196484465587861E+024
+  3.039622223577971E+024
+  4.399416821919412E+024
+  6.541536915114918E+024
+  9.839324439680792E+024
+  1.479364010392079E+025
+  2.203722088960041E+025
+  3.230530855208706E+025
+  4.634683274154123E+025
+  6.474569989703894E+025
+  8.765859838499745E+025
+  1.146442388561568E+026
+  1.446974533791838E+026
+  1.763724985188153E+026
+  2.079858344292878E+026
+  2.378657562802632E+026
+  2.645852977111996E+026
+  2.871275570860579E+026
+  3.049596610267245E+026
+  3.180197016860083E+026
+  3.266400162620829E+026
+  3.314367709280807E+026
+  3.331924181463270E+026
+  3.327491824944469E+026
+  3.309228522330244E+026
+  3.284394954019035E+026
+  3.258939887729693E+026
+  3.237278470214359E+026
+  3.222236872087430E+026
+  3.215138042226824E+026
+  3.216002250400083E+026
+  3.223831593062631E+026
+  3.236941980063354E+026
+  3.253302841095456E+026
+  3.270846726224952E+026
+  3.287718894622549E+026
+  3.302449255338488E+026
+  3.314042465545970E+026
+  3.321993549493837E+026
+  3.326244502504642E+026
+  3.327101736704495E+026
+  3.325134588463627E+026
+  3.321071014856764E+026
+  3.315700260299389E+026
+  3.309788732647173E+026
+  3.304014860898670E+026
+  3.298925518183407E+026
+  3.294913187145839E+026
+  3.223160983114545E+026
+  3.222654314712530E+026
+  3.222848343881230E+026
+  3.223898152226413E+026
+  3.225884475542018E+026
+  3.228782904590014E+026
+  3.232440032313903E+026
+  3.236560896713243E+026
+  3.240711364972063E+026
+  3.244339156360316E+026
+  3.246815037792788E+026
+  3.247493099024903E+026
+  3.245786767004951E+026
+  3.241254522885386E+026
+  3.233686321530784E+026
+  3.223179258958153E+026
+  3.210189578222307E+026
+  3.195547977182546E+026
+  3.180426805693118E+026
+  3.166251496066320E+026
+  3.154554487870783E+026
+  3.146777474927090E+026
+  3.144035986152362E+026
+  3.146867759151622E+026
+  3.154991746858299E+026
+  3.167107026995246E+026
+  3.180760261143098E+026
+  3.192307420542562E+026
+  3.196991472080480E+026
+  3.189153476617924E+026
+  3.162589687345015E+026
+  3.111059488096301E+026
+  3.028934596879049E+026
+  2.911955032868987E+026
+  2.758020447249457E+026
+  2.567900678237256E+026
+  2.345709790635336E+026
+  2.098975657181717E+026
+  1.838176724894191E+026
+  1.575721251101122E+026
+  1.324499008889485E+026
+  1.095836833377866E+026
+  8.965411000212325E+025
+  7.282171072734177E+025
+  5.891472185230300E+025
+  4.760073789174764E+025
+  3.849384124910509E+025
+  3.121506071586260E+025
+  2.542227899973144E+025
+  2.082168643570626E+025
+  1.716896001513681E+025
+  1.426530721547894E+025
+  1.195140373936236E+025
+  1.010089267772731E+025
+  8.614284294932078E+024
+  7.413616638302440E+024
+  6.437974263208524E+024
+  5.639828512902227E+024
+  4.982103692576859E+024
+  4.435855582850553E+024
+  3.978451698552147E+024
+  3.592154792838809E+024
+  3.263026112357041E+024
+  2.980079824103468E+024
+  2.734633549744468E+024
+  2.519811573544597E+024
+  2.330166963334110E+024
+  2.161396737351041E+024
+  2.010130694048519E+024
+  1.873780136989540E+024
+  1.750438181860927E+024
+  1.638829556600373E+024
+  1.538316070470995E+024
+  1.448976054940111E+024
+  1.371794718930814E+024
+  1.309031287048665E+024
+  1.264873081773146E+024
+  1.246552600007056E+024
+  1.266197598432947E+024
+  1.343810587969193E+024
+  1.511930097155886E+024
+  1.822692034347355E+024
+  2.358133209066776E+024
+  3.244552083712407E+024
+  4.671370306657029E+024
+  6.913917744992136E+024
+  1.035747784916636E+025
+  1.551632011970448E+025
+  2.303600431591079E+025
+  3.366019286156692E+025
+  4.813592562631473E+025
+  6.702715903106258E+025
+  9.044541246906396E+025
+  1.178800834713493E+026
+  1.482437566803799E+026
+  1.800100624112989E+026
+  2.114315802223916E+026
+  2.408017576073452E+026
+  2.666941647396948E+026
+  2.881272326104702E+026
+  3.046317760441654E+026
+  3.162280006600504E+026
+  3.233379368164661E+026
+  3.266652473627314E+026
+  3.270700552187186E+026
+  3.254572166649093E+026
+  3.226870940799442E+026
+  3.195110497548399E+026
+  3.165301900632403E+026
+  3.141746026567371E+026
+  3.127002640273376E+026
+  3.122009456290171E+026
+  3.126322752028195E+026
+  3.138445596527516E+026
+  3.156203250386717E+026
+  3.177121739935672E+026
+  3.198768046952534E+026
+  3.219019480673132E+026
+  3.236243687396735E+026
+  3.249385840243186E+026
+  3.257972425043418E+026
+  3.262049887934938E+026
+  3.262080918427887E+026
+  3.258821119832399E+026
+  3.253194122746087E+026
+  3.246176275341717E+026
+  3.238697996090564E+026
+  3.231567986275837E+026
+  3.225423121791253E+026
+  3.220703336043297E+026
+  3.246152977219260E+026
+  3.245703197578821E+026
+  3.245918044706681E+026
+  3.246940877592968E+026
+  3.248843377921888E+026
+  3.251596267010973E+026
+  3.255046819849229E+026
+  3.258907330889970E+026
+  3.262757992035013E+026
+  3.266067724227501E+026
+  3.268234372649948E+026
+  3.268643115379507E+026
+  3.266739776457934E+026
+  3.262113131338944E+026
+  3.254577429324409E+026
+  3.244244007466745E+026
+  3.231569506586960E+026
+  3.217368130949314E+026
+  3.202777024894785E+026
+  3.189167539032494E+026
+  3.178000945652693E+026
+  3.170634530738908E+026
+  3.168091927957061E+026
+  3.170818754142068E+026
+  3.178449774767866E+026
+  3.189616127944892E+026
+  3.201820487870544E+026
+  3.211405190453735E+026
+  3.213634448624451E+026
+  3.202907671466614E+026
+  3.173116111493915E+026
+  3.118147321584887E+026
+  3.032527472760854E+026
+  2.912166741652083E+026
+  2.755136417698129E+026
+  2.562362339175982E+026
+  2.338080691029505E+026
+  2.089891096477615E+026
+  1.828282224292987E+026
+  1.565608498300012E+026
+  1.314649589363123E+026
+  1.086586716548245E+026
+  8.880835227671069E+025
+  7.206342299129820E+025
+  5.824444222261826E+025
+  4.701416053533625E+025
+  3.798394742093221E+025
+  3.077361042680450E+025
+  2.504078852351563E+025
+  2.049202302225049E+025
+  1.688366771283592E+025
+  1.401775328863699E+025
+  1.173581164568130E+025
+  9.912307973790494E+024
+  8.448504735071905E+024
+  7.267106665475008E+024
+  6.307776304669325E+024
+  5.523478220662528E+024
+  4.877552825803855E+024
+  4.341404061433432E+024
+  3.892689048284392E+024
+  3.513910460056061E+024
+  3.191327748557162E+024
+  2.914118491757634E+024
+  2.673734785621496E+024
+  2.463411303248436E+024
+  2.277791351066884E+024
+  2.112645154349897E+024
+  1.964661082514085E+024
+  1.831296120856955E+024
+  1.710677315777620E+024
+  1.601552086376587E+024
+  1.503293465017020E+024
+  1.415978303850386E+024
+  1.340574885057925E+024
+  1.279304935953631E+024
+  1.236288815238559E+024
+  1.218647803634931E+024
+  1.238330487624554E+024
+  1.315055618882715E+024
+  1.480919001327459E+024
+  1.787377938854414E+024
+  2.315452399351596E+024
+  3.189960542143970E+024
+  4.598246140684490E+024
+  6.812854494233516E+024
+  1.021555754739528E+025
+  1.531655734635891E+025
+  2.275729318996099E+025
+  3.327824808027956E+025
+  4.762583213576885E+025
+  6.636813150929622E+025
+  8.962775465144088E+025
+  1.169121811503847E+026
+  1.471562833825684E+026
+  1.788564099230674E+026
+  2.102842192722368E+026
+  2.397451268202299E+026
+  2.658155581204448E+026
+  2.875074960936224E+026
+  3.043374060284708E+026
+  3.163056570766479E+026
+  3.238117152106275E+026
+  3.275365174259624E+026
+  3.283193637205374E+026
+  3.270476554558206E+026
+  3.245685732759267E+026
+  3.216250097745275E+026
+  3.188143763284518E+026
+  3.165675899115149E+026
+  3.151454572414217E+026
+  3.146498195167866E+026
+  3.150466637306477E+026
+  3.161978811503288E+026
+  3.178977256043303E+026
+  3.199096785327107E+026
+  3.219996621669136E+026
+  3.239624273247296E+026
+  3.256392920517159E+026
+  3.269268742341233E+026
+  3.277777131967617E+026
+  3.281945386496006E+026
+  3.282203920485146E+026
+  3.279268133251324E+026
+  3.274018506555127E+026
+  3.267389699368942E+026
+  3.260275474334523E+026
+  3.253455543251772E+026
+  3.247547099106245E+026
+  3.242980294602071E+026
+  3.315137452039129E+026
+  3.314947919325914E+026
+  3.315253530640565E+026
+  3.316143975525762E+026
+  3.317650227931417E+026
+  3.319722627896213E+026
+  3.322215163220424E+026
+  3.324879238844326E+026
+  3.327369503247914E+026
+  3.329264495794195E+026
+  3.330102915927997E+026
+  3.329434016929986E+026
+  3.326878834652186E+026
+  3.322196789738667E+026
+  3.315349809936014E+026
+  3.306554254339746E+026
+  3.296310002419388E+026
+  3.285396328311810E+026
+  3.274825933841639E+026
+  3.265752046148199E+026
+  3.259328764017328E+026
+  3.256531358751739E+026
+  3.257950076692228E+026
+  3.263577005192805E+026
+  3.272609688612725E+026
+  3.283296779970501E+026
+  3.292850135851963E+026
+  3.297445136148073E+026
+  3.292327654333107E+026
+  3.272042580075360E+026
+  3.230794391411773E+026
+  3.162942601095960E+026
+  3.063620384519417E+026
+  2.929440072090559E+026
+  2.759213798164523E+026
+  2.554576219288744E+026
+  2.320361830263087E+026
+  2.064583147262349E+026
+  1.797899872251342E+026
+  1.532572314779732E+026
+  1.281039721313350E+026
+  1.053968743333896E+026
+  8.574787269024117E+025
+  6.926106665348519E+025
+  5.572346686531844E+025
+  4.477490775505055E+025
+  3.601238174579076E+025
+  2.904766009188167E+025
+  2.353476541457722E+025
+  1.917952217688585E+025
+  1.573934052095403E+025
+  1.301828875582494E+025
+  1.086038671668692E+025
+  9.142699537033054E+024
+  7.768999314222739E+024
+  6.664300047548456E+024
+  5.770323185410882E+024
+  5.041829248637372E+024
+  4.443700952323167E+024
+  3.948651870126134E+024
+  3.535442180687743E+024
+  3.187498219146154E+024
+  2.891849624866677E+024
+  2.638314128467080E+024
+  2.418874364919573E+024
+  2.227203212506418E+024
+  2.058304088777916E+024
+  1.908240645787688E+024
+  1.773936816549420E+024
+  1.653033728464036E+024
+  1.543795314823846E+024
+  1.445060415090992E+024
+  1.356246967076816E+024
+  1.277425284542524E+024
+  1.209494896772822E+024
+  1.154526602967644E+024
+  1.116373161321001E+024
+  1.101714504545000E+024
+  1.121793132145378E+024
+  1.195217321696975E+024
+  1.352362715482264E+024
+  1.642070221668691E+024
+  2.141473216175172E+024
+  2.969789639922223E+024
+  4.306601981451956E+024
+  6.414226822275613E+024
+  9.661835040036283E+024
+  1.454555175958135E+025
+  2.169348466885691E+025
+  3.183762150271051E+025
+  4.572700291498557E+025
+  6.395165722224401E+025
+  8.668290366683895E+025
+  1.135023192852535E+026
+  1.434321042868225E+026
+  1.750535129075911E+026
+  2.067045469836896E+026
+  2.367254285558275E+026
+  2.636893237101739E+026
+  2.865678197192654E+026
+  3.048070165901409E+026
+  3.183177821872988E+026
+  3.274026750548450E+026
+  3.326488260949746E+026
+  3.348129791837760E+026
+  3.347167473910567E+026
+  3.331614309414082E+026
+  3.308651451311555E+026
+  3.284212655485133E+026
+  3.262757609012338E+026
+  3.247208043738515E+026
+  3.239021931142309E+026
+  3.238380199053439E+026
+  3.244456241916893E+026
+  3.255733115261041E+026
+  3.270330101184210E+026
+  3.286302076508151E+026
+  3.301882607595054E+026
+  3.315653405220048E+026
+  3.326635657771913E+026
+  3.334309886492776E+026
+  3.338578829366512E+026
+  3.339692216883645E+026
+  3.338152789975029E+026
+  3.334619027745440E+026
+  3.329813926662561E+026
+  3.324445809562427E+026
+  3.319146791439293E+026
+  3.314431401177885E+026
+  3.310674506262162E+026
+  3.331603802114765E+026
+  3.331376999878471E+026
+  3.331664118856731E+026
+  3.332561545244102E+026
+  3.334105553304567E+026
+  3.336249454452191E+026
+  3.338847006834298E+026
+  3.341645486171677E+026
+  3.344291083089403E+026
+  3.346349492116843E+026
+  3.347342584586426E+026
+  3.346799710144273E+026
+  3.344320329298280E+026
+  3.339642462871442E+026
+  3.332708995279169E+026
+  3.323721936735380E+026
+  3.313173771038639E+026
+  3.301845234539461E+026
+  3.290760614020141E+026
+  3.281095207980082E+026
+  3.274034940696823E+026
+  3.270594749798976E+026
+  3.271409351144342E+026
+  3.276516151510027E+026
+  3.285154339251954E+026
+  3.295605875427504E+026
+  3.305103267553818E+026
+  3.309826365162523E+026
+  3.305007003335327E+026
+  3.285156722619740E+026
+  3.244428321611448E+026
+  3.177114272366248E+026
+  3.078270445265095E+026
+  2.944428818017692E+026
+  2.774327145813809E+026
+  2.569541701292561E+026
+  2.334874219574048E+026
+  2.078337422232085E+026
+  1.810627202130960E+026
+  1.544073244060436E+026
+  1.291208540834505E+026
+  1.062801012939780E+026
+  8.650504425902159E+025
+  6.990432484045464E+025
+  5.626676773296571E+025
+  4.523230018580311E+025
+  3.639702546089740E+025
+  2.937134318416770E+025
+  2.380773695181302E+025
+  1.941050986729033E+025
+  1.593566718345336E+025
+  1.318603324106428E+025
+  1.100455680888839E+025
+  9.267398676286973E+024
+  7.877577978236014E+024
+  6.759488096877186E+024
+  5.854342647543042E+024
+  5.116488722148511E+024
+  4.510473609832209E+024
+  4.008739302622483E+024
+  3.589826297482127E+024
+  3.236983242955491E+024
+  2.937095983833562E+024
+  2.679865793204210E+024
+  2.457180935355147E+024
+  2.262637840513558E+024
+  2.091178134550962E+024
+  1.938815810214556E+024
+  1.802435368267560E+024
+  1.679647354020785E+024
+  1.568693068740613E+024
+  1.468396246401256E+024
+  1.378167374268365E+024
+  1.298077842976445E+024
+  1.229038777063728E+024
+  1.173146853677764E+024
+  1.134301602721418E+024
+  1.119261751074684E+024
+  1.139398734674466E+024
+  1.213528481145429E+024
+  1.372356524590597E+024
+  1.665239671052484E+024
+  2.170102314935302E+024
+  3.007345837830482E+024
+  4.358270718241088E+024
+  6.487597145952383E+024
+  9.767707974813525E+024
+  1.469877416866937E+025
+  2.191360236812875E+025
+  3.214899663491449E+025
+  4.615787171591608E+025
+  6.453146792788255E+025
+  8.743755384899184E+025
+  1.144486186784138E+026
+  1.445735797217148E+026
+  1.763783504083896E+026
+  2.081861245190239E+026
+  2.383253718614576E+026
+  2.653623715451953E+026
+  2.882674269694570E+026
+  3.064906234515967E+026
+  3.199509530006734E+026
+  3.289617021581759E+026
+  3.341217540581343E+026
+  3.361992498458198E+026
+  3.360257839589011E+026
+  3.344105020178363E+026
+  3.320768212418989E+026
+  3.296207370626904E+026
+  3.274882459635311E+026
+  3.259692418440061E+026
+  3.252053823109764E+026
+  3.252093278493727E+026
+  3.258923275851016E+026
+  3.270965770969329E+026
+  3.286284512454006E+026
+  3.302888979729840E+026
+  3.318980461754815E+026
+  3.333122753596094E+026
+  3.344333083869843E+026
+  3.352100231739889E+026
+  3.356344792851096E+026
+  3.357340920581320E+026
+  3.355619254152920E+026
+  3.351866750685713E+026
+  3.346832972262840E+026
+  3.341248974039185E+026
+  3.335764468958874E+026
+  3.330905748976675E+026
+  3.327053510434587E+026
+  3.240523697320616E+026
+  3.240079238349145E+026
+  3.240290373250180E+026
+  3.241298593456658E+026
+  3.243174618983094E+026
+  3.245889452271938E+026
+  3.249292159888350E+026
+  3.253098499397265E+026
+  3.256893801415289E+026
+  3.260153609964104E+026
+  3.262283479497591E+026
+  3.262676777787218E+026
+  3.260787202589264E+026
+  3.256210148879391E+026
+  3.248764230184675E+026
+  3.238561928721181E+026
+  3.226057000819207E+026
+  3.212056204063296E+026
+  3.197684539956307E+026
+  3.184296881007737E+026
+  3.173334592810421E+026
+  3.166133066820609E+026
+  3.163693946155449E+026
+  3.166442952079578E+026
+  3.173999334397551E+026
+  3.184985241761732E+026
+  3.196902663841883E+026
+  3.206102768818994E+026
+  3.207868606929630E+026
+  3.196628076840197E+026
+  3.166309290609082E+026
+  3.110842756883863E+026
+  3.024800418368839E+026
+  2.904136829074698E+026
+  2.746961356168452E+026
+  2.554226486940374E+026
+  2.330179033625262E+026
+  2.082410156362571E+026
+  1.821380412049798E+026
+  1.559399043414970E+026
+  1.309189089410469E+026
+  1.081873256270759E+026
+  8.840700187741347E+025
+  7.172488415850922E+025
+  5.796061508113094E+025
+  4.677699814094710E+025
+  3.778599485533901E+025
+  3.060825689504619E+025
+  2.490234125890754E+025
+  2.037567904716052E+025
+  1.678543329105257E+025
+  1.393434193022374E+025
+  1.166453867323272E+025
+  9.850991353467790E+024
+  8.395376717354749E+024
+  7.220737726133622E+024
+  6.267011186139991E+024
+  5.487383029799999E+024
+  4.845371797298292E+024
+  4.312524526922709E+024
+  3.866613227910700E+024
+  3.490232839266781E+024
+  3.169716973557523E+024
+  2.894302886277129E+024
+  2.655490745662099E+024
+  2.446553959324229E+024
+  2.262166998193065E+024
+  2.098125040202734E+024
+  1.951136215522331E+024
+  1.818672812762650E+024
+  1.698873204815101E+024
+  1.590492390892079E+024
+  1.492907180474842E+024
+  1.406193957735077E+024
+  1.331315270989076E+024
+  1.270479910195375E+024
+  1.227784683951530E+024
+  1.210310962824624E+024
+  1.229941688371203E+024
+  1.306289413072125E+024
+  1.471280531756242E+024
+  1.776106387512045E+024
+  2.301377551731414E+024
+  3.171297122820729E+024
+  4.572311840296643E+024
+  6.775705257507725E+024
+  1.016155249028184E+025
+  1.523790136835736E+025
+  2.264366301707349E+025
+  3.311668804720008E+025
+  4.740120058436692E+025
+  6.606446052713619E+025
+  8.923075301119747E+025
+  1.164122186169411E+026
+  1.465507565268980E+026
+  1.781510550283200E+026
+  2.094930932914113E+026
+  2.388892336887860E+026
+  2.649204385481618E+026
+  2.866003071991403E+026
+  3.034440463975197E+026
+  3.154483753676199E+026
+  3.230074522174926E+026
+  3.267960470046175E+026
+  3.276471633028474E+026
+  3.264423649505820E+026
+  3.240238805931723E+026
+  3.211308103546443E+026
+  3.183580733140236E+026
+  3.161354197198959E+026
+  3.147237395947706E+026
+  3.142260441917718E+026
+  3.146103427613985E+026
+  3.157411179824503E+026
+  3.174154817673738E+026
+  3.193997504684982E+026
+  3.214624103516163E+026
+  3.234003210645734E+026
+  3.250563430027793E+026
+  3.263280303561717E+026
+  3.271682760124716E+026
+  3.275796536040452E+026
+  3.276046451649519E+026
+  3.273139479933176E+026
+  3.267946019028999E+026
+  3.261390066848589E+026
+  3.254355119849947E+026
+  3.247611825297460E+026
+  3.241770092025808E+026
+  3.237254921680938E+026
+  3.240606430547635E+026
+  3.240501436563419E+026
+  3.240834840652591E+026
+  3.241678974077120E+026
+  3.243052085809173E+026
+  3.244899278972119E+026
+  3.247079586154660E+026
+  3.249362192938164E+026
+  3.251434067105388E+026
+  3.252921434818194E+026
+  3.253425640784007E+026
+  3.252571695198958E+026
+  3.250066101075227E+026
+  3.245758515625389E+026
+  3.239699570758623E+026
+  3.232185487154183E+026
+  3.223779375609904E+026
+  3.215299544266083E+026
+  3.207767006417821E+026
+  3.202307954296130E+026
+  3.200012162284492E+026
+  3.201754591321468E+026
+  3.207993972274641E+026
+  3.218567745814627E+026
+  3.232506435261036E+026
+  3.247891771820013E+026
+  3.261781795449472E+026
+  3.270223480334761E+026
+  3.268370182322176E+026
+  3.250717878684288E+026
+  3.211469980604061E+026
+  3.145033004733250E+026
+  3.046631014560322E+026
+  2.913002288406288E+026
+  2.743106605235248E+026
+  2.538730779182307E+026
+  2.304846644922741E+026
+  2.049570534909460E+026
+  1.783617918352246E+026
+  1.519249944434297E+026
+  1.268854635373626E+026
+  1.043011966388306E+026
+  8.477554883845814E+025
+  6.840661560356385E+025
+  5.497785349035396E+025
+  4.412733791033728E+025
+  3.545153564830270E+025
+  2.856248637787499E+025
+  2.311495192775271E+025
+  1.881574006711286E+025
+  1.542333645689168E+025
+  1.274288047286126E+025
+  1.061940118609502E+025
+  8.930880766484871E+024
+  7.581903649593308E+024
+  6.498190241828856E+024
+  5.622067886022174E+024
+  4.908811442319158E+024
+  4.323736879502299E+024
+  3.839920648483781E+024
+  3.436425620063896E+024
+  3.096929898652522E+024
+  2.808672119767939E+024
+  2.561643234054690E+024
+  2.347969206646847E+024
+  2.161441215115496E+024
+  1.997159876628005E+024
+  1.851268047302402E+024
+  1.720753237751454E+024
+  1.603306233446377E+024
+  1.497227788779892E+024
+  1.401381162286925E+024
+  1.315195970735328E+024
+  1.238740064435742E+024
+  1.172893347967029E+024
+  1.119684248301038E+024
+  1.082890715997885E+024
+  1.069069310021153E+024
+  1.089264644756752E+024
+  1.161772309488581E+024
+  1.316480270667212E+024
+  1.601480871062357E+024
+  2.092782108289007E+024
+  2.907954494236376E+024
+  4.224248003742494E+024
+  6.300811483305939E+024
+  9.502735593865819E+024
+  1.432124658924342E+025
+  2.137913771270658E+025
+  3.140354213685918E+025
+  4.514059845274491E+025
+  6.318154010634482E+025
+  8.570527060859003E+025
+  1.123074131944586E+026
+  1.420278301735222E+026
+  1.734653683334342E+026
+  2.049717358574585E+026
+  2.348938780652416E+026
+  2.618031505337496E+026
+  2.846610645186707E+026
+  3.028971834087200E+026
+  3.164020969712919E+026
+  3.254572957332425E+026
+  3.306307044047316E+026
+  3.326637732087529E+026
+  3.323680882871553E+026
+  3.305408802338781E+026
+  3.279022626179678E+026
+  3.250532937123643E+026
+  3.224525058126058E+026
+  3.204083652128855E+026
+  3.190852803477039E+026
+  3.185207177619874E+026
+  3.186505950816671E+026
+  3.193395931546929E+026
+  3.204126956715241E+026
+  3.216843997155764E+026
+  3.229827321931883E+026
+  3.241663160715438E+026
+  3.251339683731976E+026
+  3.258273955431699E+026
+  3.262283303566946E+026
+  3.263518958075380E+026
+  3.262380446714939E+026
+  3.259425616722970E+026
+  3.255285364087113E+026
+  3.250588980533402E+026
+  3.245905662934318E+026
+  3.241704662895768E+026
+  3.238333330135438E+026
+  3.244168872369876E+026
+  3.243836486359473E+026
+  3.244098441641171E+026
+  3.245075094439289E+026
+  3.246820424711603E+026
+  3.249296133075825E+026
+  3.252352451326584E+026
+  3.255719476092706E+026
+  3.259012106681465E+026
+  3.261751760964528E+026
+  3.263405960347287E+026
+  3.263444391682053E+026
+  3.261408011221570E+026
+  3.256985308839869E+026
+  3.250087174810342E+026
+  3.240909669935244E+026
+  3.229972851179618E+026
+  3.218123931959017E+026
+  3.206494827704572E+026
+  3.196407877198536E+026
+  3.189229221771054E+026
+  3.186176443209638E+026
+  3.188094610967759E+026
+  3.195221607239950E+026
+  3.206968286048295E+026
+  3.221740930432130E+026
+  3.236832598932928E+026
+  3.248407067942645E+026
+  3.251595323439176E+026
+  3.240720664681013E+026
+  3.209663878263555E+026
+  3.152372252140865E+026
+  3.063501676578190E+026
+  2.939156103739970E+026
+  2.777652126626321E+026
+  2.580192896980231E+026
+  2.351298169838685E+026
+  2.098827888403474E+026
+  1.833478866099158E+026
+  1.567738655682229E+026
+  1.314433418156780E+026
+  1.084707210942092E+026
+  8.851251771966394E+025
+  7.170582289516576E+025
+  5.785917086715494E+025
+  4.662496206626853E+025
+  3.760633059053750E+025
+  3.041690049114387E+025
+  2.470988845395238E+025
+  2.018881650925978E+025
+  1.660807913042252E+025
+  1.376851527845811E+025
+  1.151100036099737E+025
+  9.709702515920567E+024
+  8.265818535023335E+024
+  7.102128576574147E+024
+  6.158449944747581E+024
+  5.387940402256104E+024
+  4.754145864984285E+024
+  4.228672190851754E+024
+  3.789365813611715E+024
+  3.418901586699186E+024
+  3.103692295636453E+024
+  2.833049971214641E+024
+  2.598543163879968E+024
+  2.393506305727546E+024
+  2.212667172559349E+024
+  2.051866482299647E+024
+  1.907850223908922E+024
+  1.778120954338984E+024
+  1.660839739080740E+024
+  1.554776563505001E+024
+  1.459315159140461E+024
+  1.374530061071009E+024
+  1.301371946566107E+024
+  1.242025622452778E+024
+  1.200548464581488E+024
+  1.183961895729096E+024
+  1.204061205364240E+024
+  1.280334347095891E+024
+  1.444536178264453E+024
+  1.747632714437687E+024
+  2.269960296326217E+024
+  3.135431721171174E+024
+  4.530275148005771E+024
+  6.725809812667848E+024
+  1.010272815721216E+025
+  1.517079714204620E+025
+  2.257247780480842E+025
+  3.305186951247014E+025
+  4.736291740178519E+025
+  6.608626973601266E+025
+  8.936214647809594E+025
+  1.167183689180692E+026
+  1.471086583516486E+026
+  1.790422426930792E+026
+  2.107939926618931E+026
+  2.406609421936338E+026
+  2.671999011743696E+026
+  2.893944359703788E+026
+  3.067275434522996E+026
+  3.191651917669319E+026
+  3.270752057587659E+026
+  3.311124386231923E+026
+  3.320974333587146E+026
+  3.309069991201551E+026
+  3.283859872319713E+026
+  3.252827666447783E+026
+  3.222071493469813E+026
+  3.196081512859860E+026
+  3.177688639701767E+026
+  3.168158699733144E+026
+  3.167405125484819E+026
+  3.174288406723439E+026
+  3.186964424552854E+026
+  3.203240247966430E+026
+  3.220897917926565E+026
+  3.237954980107377E+026
+  3.252843344925370E+026
+  3.264502139768273E+026
+  3.272392366084810E+026
+  3.276449680585339E+026
+  3.276996165742398E+026
+  3.274632252685149E+026
+  3.270125702274057E+026
+  3.264308036055347E+026
+  3.257985082199418E+026
+  3.251867644979989E+026
+  3.246525043408732E+026
+  3.242360827906654E+026
+  3.335907479006611E+026
+  3.335908206780004E+026
+  3.336236077084588E+026
+  3.336933976326638E+026
+  3.338000105205506E+026
+  3.339372350736895E+026
+  3.340917657719567E+026
+  3.342428786374725E+026
+  3.343630164116086E+026
+  3.344194943042858E+026
+  3.343773713382122E+026
+  3.342033393901956E+026
+  3.338703493832507E+026
+  3.333625298583452E+026
+  3.326797663404336E+026
+  3.318411691824991E+026
+  3.308865984892161E+026
+  3.298754519631323E+026
+  3.288820777343915E+026
+  3.279874712029182E+026
+  3.272673486152223E+026
+  3.267772180026950E+026
+  3.265356145028646E+026
+  3.265071408079317E+026
+  3.265872729990961E+026
+  3.265910121868364E+026
+  3.262473927198169E+026
+  3.252016585082992E+026
+  3.230266652531526E+026
+  3.192447843742990E+026
+  3.133611865570992E+026
+  3.049086432269650E+026
+  2.935025932750567E+026
+  2.789029258942059E+026
+  2.610757303420637E+026
+  2.402446569996145E+026
+  2.169187345502852E+026
+  1.918833771771838E+026
+  1.661457510398456E+026
+  1.408352725248520E+026
+  1.170732079856000E+026
+  9.579773977776057E+025
+  7.751866125262198E+025
+  6.228016894449960E+025
+  4.984277436528870E+025
+  3.984139647504146E+025
+  3.188076622940480E+025
+  2.558688100015210E+025
+  2.063051506635520E+025
+  1.673440073294016E+025
+  1.367171841877520E+025
+  1.126056248904422E+025
+  9.357043479534173E+024
+  7.848425987416691E+024
+  6.646954912233393E+024
+  5.684605277913948E+024
+  4.908772289479010E+024
+  4.278815233365068E+024
+  3.763330331605358E+024
+  3.338023024127429E+024
+  2.984061367419101E+024
+  2.686809314646129E+024
+  2.434856531334031E+024
+  2.219277852801492E+024
+  2.033069686951227E+024
+  1.870722459450401E+024
+  1.727897745771376E+024
+  1.601186357121331E+024
+  1.487929781137654E+024
+  1.386092560101092E+024
+  1.294178066589965E+024
+  1.211185519750777E+024
+  1.136613061264759E+024
+  1.070521824700515E+024
+  1.013691441943312E+024
+  9.679215833584921E+023
+  9.365713828078778E+023
+  9.254846094948450E+023
+  9.445294883918690E+023
+  1.010093276964886E+024
+  1.149013096149422E+024
+  1.404583160921496E+024
+  1.845414933066816E+024
+  2.577953650726023E+024
+  3.763209566551916E+024
+  5.637478712206872E+024
+  8.535124840149991E+024
+  1.290841714648472E+025
+  1.933459086309428E+025
+  2.849374459537195E+025
+  4.109388949376098E+025
+  5.771417617774333E+025
+  7.856886369833692E+025
+  1.033456977175971E+026
+  1.312225309134448E+026
+  1.609627429809827E+026
+  1.910841321070566E+026
+  2.200754337637154E+026
+  2.466051963552310E+026
+  2.696768377899468E+026
+  2.887062016301336E+026
+  3.035225044050483E+026
+  3.143110681738184E+026
+  3.215231865354926E+026
+  3.257765242391048E+026
+  3.277626797472218E+026
+  3.281709144861055E+026
+  3.276310592147157E+026
+  3.266750518430020E+026
+  3.257150684085716E+026
+  3.250359163554950E+026
+  3.247994479785723E+026
+  3.250587204674634E+026
+  3.257793438185314E+026
+  3.268650639443186E+026
+  3.281843940032698E+026
+  3.295952620286388E+026
+  3.309652591469429E+026
+  3.321860284677471E+026
+  3.331813823416876E+026
+  3.339096394425404E+026
+  3.343613202607434E+026
+  3.345537151795840E+026
+  3.345238977562111E+026
+  3.343214310523197E+026
+  3.340014925723549E+026
+  3.336188828843676E+026
+  3.332233878843034E+026
+  3.328566798244305E+026
+  3.325506400783960E+026
+  3.221466886206307E+026
+  3.221053530706657E+026
+  3.221279832694624E+026
+  3.222281674980057E+026
+  3.224125336068989E+026
+  3.226779447042148E+026
+  3.230093715234951E+026
+  3.233788453726535E+026
+  3.237458238137876E+026
+  3.240593091776134E+026
+  3.242618497414759E+026
+  3.242952996519647E+026
+  3.241080011714098E+026
+  3.236627984240310E+026
+  3.229450125941155E+026
+  3.219692809268668E+026
+  3.207840331949606E+026
+  3.194723798209549E+026
+  3.181483546849832E+026
+  3.169478276030039E+026
+  3.160139770685436E+026
+  3.154779417306930E+026
+  3.154360486533022E+026
+  3.159257180215303E+026
+  3.169026424638212E+026
+  3.182220537037238E+026
+  3.196268150271244E+026
+  3.207447902111424E+026
+  3.210975546684519E+026
+  3.201221117001737E+026
+  3.172068065114557E+026
+  3.117418626642206E+026
+  3.031835259584279E+026
+  2.911283192831153E+026
+  2.753902638503898E+026
+  2.560695384965619E+026
+  2.335972291159037E+026
+  2.087397606780317E+026
+  1.825506785228749E+026
+  1.562677980954405E+026
+  1.311690167252626E+026
+  1.083703398940224E+026
+  8.853511277830270E+025
+  7.180991614063279E+025
+  5.801300246549303E+025
+  4.680540152376853E+025
+  3.779729438529741E+025
+  3.060773693812116E+025
+  2.489394963209820E+025
+  2.036229439046121E+025
+  1.676910736952978E+025
+  1.391650375682162E+025
+  1.164615847325006E+025
+  9.832707875685407E+024
+  8.377593567728759E+024
+  7.203694768126116E+024
+  6.250836541956901E+024
+  5.472130364033744E+024
+  4.831046653899680E+024
+  4.299102656409399E+024
+  3.854053135123798E+024
+  3.478484211511609E+024
+  3.158726203767526E+024
+  2.884016567177203E+024
+  2.645857758238940E+024
+  2.437526593186822E+024
+  2.253701406617887E+024
+  2.090181236191017E+024
+  1.943677747440492E+024
+  1.811666211820253E+024
+  1.692287266225417E+024
+  1.584297331892571E+024
+  1.487073708595837E+024
+  1.400692280590908E+024
+  1.326114085939944E+024
+  1.265545435072427E+024
+  1.223079844941730E+024
+  1.205794976771599E+024
+  1.225570529214040E+024
+  1.302018149727213E+024
+  1.467069450236692E+024
+  1.771934428613297E+024
+  2.297269239328492E+024
+  3.167373138915960E+024
+  4.568878784505301E+024
+  6.773406259409782E+024
+  1.016160507674010E+025
+  1.524244762628761E+025
+  2.265624139216745E+025
+  3.314279422108034E+025
+  4.744882372199144E+025
+  6.614435373775773E+025
+  8.935608187163720E+025
+  1.165974049292904E+026
+  1.468096648207300E+026
+  1.784947396034750E+026
+  2.099274823227370E+026
+  2.394132064853360E+026
+  2.655246711622510E+026
+  2.872670795168315E+026
+  3.041479947427012E+026
+  3.161580091048326E+026
+  3.236871682924906E+026
+  3.274083711984443E+026
+  3.281549934042760E+026
+  3.268110546669731E+026
+  3.242230582062372E+026
+  3.211358621817575E+026
+  3.181512410869380E+026
+  3.157064720098217E+026
+  3.140701901483458E+026
+  3.133529108525722E+026
+  3.135294706567489E+026
+  3.144701260211901E+026
+  3.159764252717478E+026
+  3.178176174803992E+026
+  3.197635792821917E+026
+  3.216111009493636E+026
+  3.232016967167026E+026
+  3.244305508393193E+026
+  3.252474521516219E+026
+  3.256514313965878E+026
+  3.256812647896794E+026
+  3.254040202804582E+026
+  3.249033787078888E+026
+  3.242687971055980E+026
+  3.235861970379433E+026
+  3.229307829495768E+026
+  3.223622648177004E+026
+  3.219224159441202E+026
+  3.213455863411706E+026
+  3.213154688687781E+026
+  3.213424596386762E+026
+  3.214379185428669E+026
+  3.216067657396715E+026
+  3.218450010900546E+026
+  3.221378875072673E+026
+  3.224591674081884E+026
+  3.227716077631255E+026
+  3.230291787818376E+026
+  3.231809663166691E+026
+  3.231766733725070E+026
+  3.229733661891972E+026
+  3.225428818505719E+026
+  3.218790539142737E+026
+  3.210037054678028E+026
+  3.199702506630196E+026
+  3.188637636984028E+026
+  3.177965539291015E+026
+  3.168986581749683E+026
+  3.163032236942855E+026
+  3.161274551822182E+026
+  3.164505380409729E+026
+  3.172906040729597E+026
+  3.185832579018400E+026
+  3.201643610339688E+026
+  3.217596775639143E+026
+  3.229836983619358E+026
+  3.233495918554481E+026
+  3.222918494276026E+026
+  3.192027419482609E+026
+  3.134829433766838E+026
+  3.046052352519912E+026
+  2.921877253675715E+026
+  2.760693926229434E+026
+  2.563764619555215E+026
+  2.335644274444821E+026
+  2.084196543029071E+026
+  1.820087172877545E+026
+  1.555740331300610E+026
+  1.303894881767937E+026
+  1.075600208735498E+026
+  8.773477240171391E+025
+  7.104692661904979E+025
+  5.730373981816610E+025
+  4.615793665976371E+025
+  3.721384822687737E+025
+  3.008668924983329E+025
+  2.443136724735422E+025
+  1.995302884072405E+025
+  1.640754269952885E+025
+  1.359703794723859E+025
+  1.136349181430851E+025
+  9.581997400457899E+024
+  8.154518499840337E+024
+  7.004465679348222E+024
+  6.072171112211393E+024
+  5.311211218925192E+024
+  4.685471364596190E+024
+  4.166832187284172E+024
+  3.733362416229179E+024
+  3.367916772028071E+024
+  3.057053679750267E+024
+  2.790203203171420E+024
+  2.559029616633938E+024
+  2.356944965858669E+024
+  2.178739820501926E+024
+  2.020305411340764E+024
+  1.878427870717311E+024
+  1.750640905500179E+024
+  1.635128631286858E+024
+  1.530676395967718E+024
+  1.436675460155070E+024
+  1.353199154262279E+024
+  1.281186179715759E+024
+  1.222794753279119E+024
+  1.182034302661713E+024
+  1.165845594651780E+024
+  1.185892073245289E+024
+  1.261449505772555E+024
+  1.423935786897931E+024
+  1.723790044957109E+024
+  2.240540637303278E+024
+  3.096890997875517E+024
+  4.477312192779286E+024
+  6.650661718296252E+024
+  9.994334965954945E+024
+  1.501393064670200E+025
+  2.234703809815113E+025
+  3.273270251192466E+025
+  4.692067883207614E+025
+  6.549000603086393E+025
+  8.858399298358380E+025
+  1.157390348478721E+026
+  1.459215638764029E+026
+  1.776555315813729E+026
+  2.092299842872261E+026
+  2.389530986110600E+026
+  2.653880253181726E+026
+  2.875191704190846E+026
+  3.048252368132207E+026
+  3.172639244309920E+026
+  3.251923767502265E+026
+  3.292539556496732E+026
+  3.302583003855783E+026
+  3.290729735152676E+026
+  3.265359517189672E+026
+  3.233914864053845E+026
+  3.202481264389054E+026
+  3.175563291664414E+026
+  3.156029719999124E+026
+  3.145202376257903E+026
+  3.143062330169242E+026
+  3.148542265698274E+026
+  3.159867885215882E+026
+  3.174907642720772E+026
+  3.191491920924374E+026
+  3.207670769997938E+026
+  3.221891861317433E+026
+  3.233094137797322E+026
+  3.240724611486108E+026
+  3.244694179155716E+026
+  3.245292857170737E+026
+  3.243085176885584E+026
+  3.238802333471788E+026
+  3.233241315961224E+026
+  3.227177609974627E+026
+  3.221297411208240E+026
+  3.216152058608244E+026
+  3.212134022190309E+026
+  3.274371702323859E+026
+  3.274278304928022E+026
+  3.274624660217204E+026
+  3.275482124947675E+026
+  3.276867550287742E+026
+  3.278724272045525E+026
+  3.280909344559440E+026
+  3.283190042408596E+026
+  3.285251892759523E+026
+  3.286720676716342E+026
+  3.287198903878164E+026
+  3.286315007190996E+026
+  3.283781778663059E+026
+  3.279458504181713E+026
+  3.273409009175258E+026
+  3.265946132971514E+026
+  3.257652421555997E+026
+  3.249367282228561E+026
+  3.242132767312863E+026
+  3.237093791006429E+026
+  3.235353860569897E+026
+  3.237793791432226E+026
+  3.244867448573207E+026
+  3.256394196422409E+026
+  3.271371443819943E+026
+  3.287831884478286E+026
+  3.302768884021361E+026
+  3.312150730941367E+026
+  3.311041169061672E+026
+  3.293840270557198E+026
+  3.254655484155795E+026
+  3.187805115001178E+026
+  3.088441923726960E+026
+  2.953259732975147E+026
+  2.781210371723877E+026
+  2.574116970907886E+026
+  2.337035766269053E+026
+  2.078213405388455E+026
+  1.808532115998894E+026
+  1.540439708206599E+026
+  1.286509470175096E+026
+  1.057477393877363E+026
+  8.594656919539893E+025
+  6.934705365352225E+025
+  5.572959779512408E+025
+  4.472710211552748E+025
+  3.593024313488135E+025
+  2.894548873867962E+025
+  2.342264465445259E+025
+  1.906431531773420E+025
+  1.562553104848119E+025
+  1.290865079385548E+025
+  1.075649945769506E+025
+  9.045330112634477E+024
+  7.678380602391440E+024
+  6.580327706257570E+024
+  5.692692348271497E+024
+  4.970127189005731E+024
+  4.377468260433768E+024
+  3.887421530010997E+024
+  3.478763412899298E+024
+  3.134950013103809E+024
+  2.843047428403643E+024
+  2.592912093389430E+024
+  2.376564775864353E+024
+  2.187714176705221E+024
+  2.021396177619736E+024
+  1.873702911283607E+024
+  1.741582424201157E+024
+  1.622695327403402E+024
+  1.515320185598138E+024
+  1.418305376570160E+024
+  1.331072969150392E+024
+  1.253691545804692E+024
+  1.187052351569128E+024
+  1.133210292438789E+024
+  1.095993051047542E+024
+  1.082044097170744E+024
+  1.102555323585186E+024
+  1.176067554610086E+024
+  1.332871223106022E+024
+  1.621709033461982E+024
+  2.119621083132222E+024
+  2.945780954679726E+024
+  4.279865749824712E+024
+  6.384588874401606E+024
+  9.630086886985117E+024
+  1.451441055759145E+025
+  2.166905542262590E+025
+  3.183138361067475E+025
+  4.575812462440374E+025
+  6.404904539119802E+025
+  8.688589336551389E+025
+  1.138589326213767E+026
+  1.439946605233243E+026
+  1.758719919491269E+026
+  2.078187502617800E+026
+  2.381574386397455E+026
+  2.654377344790647E+026
+  2.886047520816298E+026
+  3.070782633253921E+026
+  3.207457955528316E+026
+  3.298916995412042E+026
+  3.350913333683254E+026
+  3.370966240779620E+026
+  3.367312286642315E+026
+  3.348048149409097E+026
+  3.320493417596913E+026
+  3.290764246931049E+026
+  3.263534036271469E+026
+  3.241955464556459E+026
+  3.227719826741900E+026
+  3.221229050261254E+026
+  3.221851829103420E+026
+  3.228229958756492E+026
+  3.238597533518926E+026
+  3.251076983648611E+026
+  3.263922883053397E+026
+  3.275695652892690E+026
+  3.285359803882666E+026
+  3.292312327976564E+026
+  3.296354743068457E+026
+  3.297626792740919E+026
+  3.296520488910805E+026
+  3.293589553978432E+026
+  3.289463457236881E+026
+  3.284772025160302E+026
+  3.280086259378842E+026
+  3.275877903858943E+026
+  3.272497025439940E+026
+  3.295761578524902E+026
+  3.295501853118174E+026
+  3.295781661570225E+026
+  3.296705013086549E+026
+  3.298313827706128E+026
+  3.300564168330972E+026
+  3.303308901837508E+026
+  3.306290323490553E+026
+  3.309145540187110E+026
+  3.311427567734182E+026
+  3.312643087968273E+026
+  3.312305415386937E+026
+  3.309999310384779E+026
+  3.305451983428693E+026
+  3.298602112756773E+026
+  3.289656700733430E+026
+  3.279124566045693E+026
+  3.267815468379268E+026
+  3.256795628125376E+026
+  3.247294036046969E+026
+  3.240559420847152E+026
+  3.237674544314006E+026
+  3.239341666512976E+026
+  3.245659366369316E+026
+  3.255915289734738E+026
+  3.268421140585166E+026
+  3.280415358736629E+026
+  3.288056187585022E+026
+  3.286524301326986E+026
+  3.270250467553713E+026
+  3.233279213935561E+026
+  3.169771763468287E+026
+  3.074636939560270E+026
+  2.944253882630342E+026
+  2.777214406158247E+026
+  2.574970332086764E+026
+  2.342235296278401E+026
+  2.086982864070639E+026
+  1.819926033717223E+026
+  1.553467318194570E+026
+  1.300258836334446E+026
+  1.071213631212722E+026
+  8.726676065730951E+025
+  7.058096418287087E+025
+  5.685963414011272E+025
+  4.574681720767521E+025
+  3.684075813151740E+025
+  2.975265817876404E+025
+  2.413495742051182E+025
+  1.969142699096460E+025
+  1.617729455257384E+025
+  1.339451777615453E+025
+  1.118518459011232E+025
+  9.424653659634849E+024
+  8.015226167677282E+024
+  6.880670100957827E+024
+  5.961664613183332E+024
+  5.212106274486550E+024
+  4.596166355229199E+024
+  4.085975225471783E+024
+  3.659816397249484E+024
+  3.300727288139208E+024
+  2.995420487262372E+024
+  2.733455360728276E+024
+  2.506604088531875E+024
+  2.308368315092699E+024
+  2.133612541600251E+024
+  1.978288433418811E+024
+  1.839230770148256E+024
+  1.714011384938634E+024
+  1.600842827978224E+024
+  1.498529553992358E+024
+  1.406472407009772E+024
+  1.324743817536034E+024
+  1.254269002033342E+024
+  1.197176228961153E+024
+  1.157421864767638E+024
+  1.141859623099281E+024
+  1.162014818530495E+024
+  1.236948320367268E+024
+  1.397749642398972E+024
+  1.694366904874315E+024
+  2.205614863603466E+024
+  3.053198039338817E+024
+  4.420257500501100E+024
+  6.573998718259111E+024
+  9.889969217027191E+024
+  1.487205570545516E+025
+  2.215691257330168E+025
+  3.248446359061434E+025
+  4.660858645750999E+025
+  6.511731407603254E+025
+  8.816894979876850E+025
+  1.153200159561831E+026
+  1.455592143363658E+026
+  1.774311883761995E+026
+  2.092403828029538E+026
+  2.393022334876074E+026
+  2.661777231840399E+026
+  2.888400899000595E+026
+  3.067496716569542E+026
+  3.198411670479129E+026
+  3.284467655454210E+026
+  3.331852679358789E+026
+  3.348439285425265E+026
+  3.342712989635862E+026
+  3.322904236407961E+026
+  3.296350349687447E+026
+  3.269076381106687E+026
+  3.245569651670994E+026
+  3.228721286406262E+026
+  3.219909519313418E+026
+  3.219198524605897E+026
+  3.225622033321898E+026
+  3.237515290659729E+026
+  3.252855547033662E+026
+  3.269573115949921E+026
+  3.285802870995400E+026
+  3.300058284315032E+026
+  3.311323571529205E+026
+  3.319071143946226E+026
+  3.323219763417832E+026
+  3.324053237323433E+026
+  3.322119852089618E+026
+  3.318128669016014E+026
+  3.312852539418313E+026
+  3.307044186310003E+026
+  3.301371149491363E+026
+  3.296372169273956E+026
+  3.292434226872702E+026
+  3.241914807423009E+026
+  3.241550151004591E+026
+  3.241796332137026E+026
+  3.242779544294656E+026
+  3.244558451781591E+026
+  3.247097391217605E+026
+  3.250246237218681E+026
+  3.253730814650063E+026
+  3.257157031103030E+026
+  3.260032002479985E+026
+  3.261803361871441E+026
+  3.261915457215735E+026
+  3.259879087974232E+026
+  3.255348957946546E+026
+  3.248200307685702E+026
+  3.238593999120723E+026
+  3.227018114795713E+026
+  3.214294191000037E+026
+  3.201537905839955E+026
+  3.190067726718141E+026
+  3.181260684170658E+026
+  3.176361568137538E+026
+  3.176259448486025E+026
+  3.181252237560929E+026
+  3.190824824774853E+026
+  3.203468347771094E+026
+  3.216567392425163E+026
+  3.226379082406231E+026
+  3.228124265481354E+026
+  3.216207074271866E+026
+  3.184574494896049E+026
+  3.127219894269790E+026
+  3.038820027533428E+026
+  2.915470263213638E+026
+  2.755446501798462E+026
+  2.559878926970066E+026
+  2.333185305257484E+026
+  2.083101835485563E+026
+  1.820190937912289E+026
+  1.556808848557396E+026
+  1.305667560754485E+026
+  1.077828597709532E+026
+  8.798218899359765E+025
+  7.130270166531968E+025
+  5.755625909723858E+025
+  4.639951783567141E+025
+  3.743990664366048E+025
+  3.029493235282828E+025
+  2.462110487819741E+025
+  2.012462575728046E+025
+  1.656200758326891E+025
+  1.373572901759793E+025
+  1.148791518804358E+025
+  9.693675521882583E+024
+  8.254909368084557E+024
+  7.094917570615869E+024
+  6.153901213336266E+024
+  5.385299718266590E+024
+  4.752865021601357E+024
+  4.228353280947170E+024
+  3.789720354632522E+024
+  3.419720633140029E+024
+  3.104824640677054E+024
+  2.834386280172279E+024
+  2.600004445216944E+024
+  2.395035547833009E+024
+  2.214223288002230E+024
+  2.053419930957291E+024
+  1.909379851494838E+024
+  1.779611697054177E+024
+  1.662280916835482E+024
+  1.556160516264345E+024
+  1.460635969420185E+024
+  1.375782036857217E+024
+  1.302547385068744E+024
+  1.243111086373846E+024
+  1.201518295917600E+024
+  1.184766835304122E+024
+  1.204608578682668E+024
+  1.280454032314410E+024
+  1.443923116004634E+024
+  1.745751632718281E+024
+  2.265891284074365E+024
+  3.127626390561498E+024
+  4.516183535554057E+024
+  6.701331156499059E+024
+  1.006144116484829E+025
+  1.510294957745736E+025
+  2.246377975118832E+025
+  3.288226284307850E+025
+  4.710570678224405E+025
+  6.570829971934017E+025
+  8.882584873232826E+025
+  1.159855633888284E+026
+  1.461450921228133E+026
+  1.778222493500863E+026
+  2.093044839935439E+026
+  2.389039599884774E+026
+  2.651933068651147E+026
+  2.871707464344057E+026
+  3.043312818365821E+026
+  3.166493180788392E+026
+  3.244972101152708E+026
+  3.285305705773595E+026
+  3.295673774645181E+026
+  3.284791528655799E+026
+  3.261033875662644E+026
+  3.231796519491450E+026
+  3.203081223552699E+026
+  3.179279057301153E+026
+  3.163124365491129E+026
+  3.155793698088192E+026
+  3.157122608915261E+026
+  3.165908288165727E+026
+  3.180259932211622E+026
+  3.197955299537707E+026
+  3.216763990165903E+026
+  3.234706370545024E+026
+  3.250229999108180E+026
+  3.262299550403087E+026
+  3.270408375263229E+026
+  3.274528285740545E+026
+  3.275018626164311E+026
+  3.272515918619947E+026
+  3.267821046607103E+026
+  3.261794365012078E+026
+  3.255265364542882E+026
+  3.248962866344948E+026
+  3.243468464518061E+026
+  3.239192486432247E+026
+  3.298104640722094E+026
+  3.297812856591262E+026
+  3.298083867302016E+026
+  3.299028582761302E+026
+  3.300693960555053E+026
+  3.303038138893254E+026
+  3.305912015724405E+026
+  3.309050908687540E+026
+  3.312079221388892E+026
+  3.314531192902795E+026
+  3.315888773095291E+026
+  3.315635261005761E+026
+  3.313321404430365E+026
+  3.308638312777374E+026
+  3.301488952577996E+026
+  3.292047935419728E+026
+  3.280798211896322E+026
+  3.268533413862776E+026
+  3.256316294769903E+026
+  3.245387321732915E+026
+  3.237022961044917E+026
+  3.232350066072824E+026
+  3.232130063233642E+026
+  3.236533123665813E+026
+  3.244927054047175E+026
+  3.255707520658435E+026
+  3.266195434307435E+026
+  3.272624603272046E+026
+  3.270239187722825E+026
+  3.253516725576411E+026
+  3.216527931686772E+026
+  3.153436750496172E+026
+  3.059129621195588E+026
+  2.929938145147308E+026
+  2.764383416678613E+026
+  2.563827766699060E+026
+  2.332883571638282E+026
+  2.079420619685663E+026
+  1.814056087932867E+026
+  1.549114664079746E+026
+  1.297196290595821E+026
+  1.069192005592041E+026
+  8.714464752548632E+025
+  7.051787067295631E+025
+  5.683836799547179E+025
+  4.575399361026645E+025
+  3.686634982249616E+025
+  2.978939597588636E+025
+  2.417773018212683E+025
+  1.973675153635691E+025
+  1.622287994082515E+025
+  1.343892390757109E+025
+  1.122756389007008E+025
+  9.464560894721460E+024
+  8.052481597710436E+024
+  6.915263024527051E+024
+  5.993686733874757E+024
+  5.241706622021754E+024
+  4.623521501222064E+024
+  4.111270169178954E+024
+  3.683232774605869E+024
+  3.322436524277209E+024
+  3.015580226699513E+024
+  2.752208027302432E+024
+  2.524076798086235E+024
+  2.324673626911710E+024
+  2.148849718970906E+024
+  1.992545010781573E+024
+  1.852584309792532E+024
+  1.726531362183231E+024
+  1.612592620224932E+024
+  1.509568534608370E+024
+  1.416858167307244E+024
+  1.334534565577743E+024
+  1.263526219889263E+024
+  1.205967709992803E+024
+  1.165825288269821E+024
+  1.149966820122550E+024
+  1.169936757883754E+024
+  1.244820432437067E+024
+  1.405736103576051E+024
+  1.702660446033013E+024
+  2.214424847581272E+024
+  3.062713122219915E+024
+  4.430559400823653E+024
+  6.584890471229079E+024
+  9.900666786330473E+024
+  1.488068190187963E+025
+  2.215973914588584E+025
+  3.247489135544184E+025
+  4.657596128581201E+025
+  6.504587396166958E+025
+  8.803744236206595E+025
+  1.151024698133494E+026
+  1.452269248092512E+026
+  1.769557475879023E+026
+  2.085972923988211E+026
+  2.384744251265513E+026
+  2.651583247124664E+026
+  2.876339777714566E+026
+  3.053736484562843E+026
+  3.183228830816140E+026
+  3.268226864261904E+026
+  3.314980551707664E+026
+  3.331395728795180E+026
+  3.325962716641788E+026
+  3.306890302758564E+026
+  3.281470948123092E+026
+  3.255665760100605E+026
+  3.233883844503858E+026
+  3.218929201877778E+026
+  3.212089746896353E+026
+  3.213341889919335E+026
+  3.221639517828288E+026
+  3.235250469776443E+026
+  3.252100298241959E+026
+  3.270085094550409E+026
+  3.287323204093731E+026
+  3.302328095138013E+026
+  3.314098257042434E+026
+  3.322131696128590E+026
+  3.326380775569395E+026
+  3.327167554061495E+026
+  3.325080107763868E+026
+  3.320866164786318E+026
+  3.315333967969542E+026
+  3.309266686521613E+026
+  3.303356196288826E+026
+  3.298158839173283E+026
+  3.294072347058529E+026
+  3.394738553185480E+026
+  3.394727981815393E+026
+  3.395072396700312E+026
+  3.395820480206213E+026
+  3.396973529958599E+026
+  3.398468791018919E+026
+  3.400167996842538E+026
+  3.401853648757467E+026
+  3.403234889466211E+026
+  3.403965198973680E+026
+  3.403672402069835E+026
+  3.401999494316918E+026
+  3.398653403677211E+026
+  3.393457064411686E+026
+  3.386398215587003E+026
+  3.377666858717689E+026
+  3.367672671121584E+026
+  3.357034025724620E+026
+  3.346531861093737E+026
+  3.337024712869183E+026
+  3.329325721275366E+026
+  3.324047928537916E+026
+  3.321429888265954E+026
+  3.321158575582391E+026
+  3.322209955078304E+026
+  3.322728849382427E+026
+  3.319969038889786E+026
+  3.310312434637189E+026
+  3.289383494261448E+026
+  3.252272100060449E+026
+  3.193874018043653E+026
+  3.109350497031231E+026
+  2.994694354136569E+026
+  2.847366389154589E+026
+  2.666933142535034E+026
+  2.455599873800742E+026
+  2.218503560086812E+026
+  1.963629041412819E+026
+  1.701256410131839E+026
+  1.442945964146033E+026
+  1.200202597859391E+026
+  9.826791620209221E+025
+  7.956526991222485E+025
+  6.396302963991418E+025
+  5.122052155060721E+025
+  4.096741003822643E+025
+  3.280146500870694E+025
+  2.634142188584493E+025
+  2.125124615014966E+025
+  1.724765820570995E+025
+  1.409872662576978E+025
+  1.161830724990259E+025
+  9.659056722724063E+024
+  8.105459147144987E+024
+  6.867539953468421E+024
+  5.875512769105167E+024
+  5.075380191891513E+024
+  4.425402871704704E+024
+  3.893311083372008E+024
+  3.454127612172954E+024
+  3.088481797262111E+024
+  2.781311730439554E+024
+  2.520869689803203E+024
+  2.297962573957028E+024
+  2.105373534991836E+024
+  1.937423017301399E+024
+  1.789637143027771E+024
+  1.658499163414726E+024
+  1.541265960214743E+024
+  1.435836880268959E+024
+  1.340667182567188E+024
+  1.254723902585076E+024
+  1.177489109326728E+024
+  1.109025934228255E+024
+  1.050138705527269E+024
+  1.002683360743218E+024
+  9.701226062111437E+023
+  9.584778355879583E+023
+  9.779130089279892E+023
+  1.045299724182396E+024
+  1.188257460506030E+024
+  1.451324942380493E+024
+  1.905056874347120E+024
+  2.658865077473746E+024
+  3.878167143191771E+024
+  5.805595916598189E+024
+  8.784269362013015E+024
+  1.327795970246028E+025
+  1.987805293122452E+025
+  2.928048991360866E+025
+  4.220844576390537E+025
+  5.925117135838301E+025
+  8.062191572920790E+025
+  1.059928877069990E+026
+  1.345135933826640E+026
+  1.649101161308065E+026
+  1.956595629628926E+026
+  2.252128565004608E+026
+  2.522090123480315E+026
+  2.756335825967316E+026
+  2.948971847701032E+026
+  3.098353031683849E+026
+  3.206484656443615E+026
+  3.278089403069482E+026
+  3.319580011189575E+026
+  3.338107952965769E+026
+  3.340779904781217E+026
+  3.334072318502975E+026
+  3.323438096856569E+026
+  3.313084270760660E+026
+  3.305896701503177E+026
+  3.303488756884124E+026
+  3.306350515025674E+026
+  3.314072008896722E+026
+  3.325609878568035E+026
+  3.339564346097078E+026
+  3.354435054985291E+026
+  3.368830758477590E+026
+  3.381617814319343E+026
+  3.392003342409336E+026
+  3.399558256571774E+026
+  3.404192043739509E+026
+  3.406095042178783E+026
+  3.405664618543505E+026
+  3.403428295126080E+026
+  3.399971381061724E+026
+  3.395873882905438E+026
+  3.391661579054747E+026
+  3.387773257838667E+026
+  3.384542955082557E+026
+  3.139501540030292E+026
+  3.139663918287463E+026
+  3.140062483728964E+026
+  3.140710302965497E+026
+  3.141583176058592E+026
+  3.142609060666949E+026
+  3.143662479406580E+026
+  3.144565823653017E+026
+  3.145098760383069E+026
+  3.145017270568359E+026
+  3.144082255262005E+026
+  3.142095852266206E+026
+  3.138942416905686E+026
+  3.134629673698089E+026
+  3.129323950454716E+026
+  3.123372316094214E+026
+  3.117304179616747E+026
+  3.111805586045263E+026
+  3.107661244424865E+026
+  3.105662394493204E+026
+  3.106482857536506E+026
+  3.110530561549295E+026
+  3.117786735333980E+026
+  3.127648986372895E+026
+  3.138796913184063E+026
+  3.149099440709794E+026
+  3.155581924475833E+026
+  3.154468917685040E+026
+  3.141316080553329E+026
+  3.111242221139257E+026
+  3.059268901100135E+026
+  2.980768060482409E+026
+  2.872004597325813E+026
+  2.730738342592195E+026
+  2.556818611036212E+026
+  2.352669612753990E+026
+  2.123538561405541E+026
+  1.877378747921129E+026
+  1.624285015413608E+026
+  1.375494328334364E+026
+  1.142093228308868E+026
+  9.333035709677059E+025
+  7.540996114328067E+025
+  6.048711306759607E+025
+  4.832226083492408E+025
+  3.855311315473210E+025
+  3.078854565851372E+025
+  2.465914349204639E+025
+  1.984019370057205E+025
+  1.605859761895037E+025
+  1.309124315924489E+025
+  1.075944016831176E+025
+  8.922039928522712E+024
+  7.468614196199185E+024
+  6.313332405930444E+024
+  5.389764218327588E+024
+  4.646619677384421E+024
+  4.044338440594490E+024
+  3.552402381642448E+024
+  3.147241979716166E+024
+  2.810618513141711E+024
+  2.528381334510983E+024
+  2.289517461262643E+024
+  2.085427169583232E+024
+  1.909373439254561E+024
+  1.756064830829601E+024
+  1.621340855438824E+024
+  1.501936450959298E+024
+  1.395308243845992E+024
+  1.299510384270660E+024
+  1.213112527045004E+024
+  1.135157781213429E+024
+  1.065165221569980E+024
+  1.003191344736758E+024
+  9.499798504860015E+023
+  9.072524931632468E+023
+  8.782298281403206E+023
+  8.685250214607665E+023
+  8.876327100201634E+023
+  9.513434111217640E+023
+  1.085552578779934E+024
+  1.332090086860362E+024
+  1.757332976082613E+024
+  2.464397652044869E+024
+  3.609479372810772E+024
+  5.422156370080097E+024
+  8.227827875663006E+024
+  1.246745810103397E+025
+  1.870506940139247E+025
+  2.760697071125120E+025
+  3.986945772044509E+025
+  5.606636311190549E+025
+  7.641828206491030E+025
+  1.006324933152058E+026
+  1.279154203159100E+026
+  1.570621371530064E+026
+  1.866186431601936E+026
+  2.150924551059101E+026
+  2.411578494323140E+026
+  2.638103060338754E+026
+  2.824462267920238E+026
+  2.968679025197171E+026
+  3.072309928863199E+026
+  3.139589076544567E+026
+  3.176468796722739E+026
+  3.189720929753373E+026
+  3.186188405735462E+026
+  3.172218105632347E+026
+  3.153270796957292E+026
+  3.133689073854609E+026
+  3.116601440390360E+026
+  3.103941904703546E+026
+  3.096564607341756E+026
+  3.094430547465682E+026
+  3.096839625399342E+026
+  3.102678539377704E+026
+  3.110655864397804E+026
+  3.119500771336595E+026
+  3.128110338928895E+026
+  3.135640027692781E+026
+  3.141540408036122E+026
+  3.145549552931280E+026
+  3.147654411080909E+026
+  3.148035448667288E+026
+  3.147006133648480E+026
+  3.144954100143745E+026
+  3.142288469893154E+026
+  3.139397948378082E+026
+  3.136621659435209E+026
+  3.134231811889500E+026
+  3.341609766781768E+026
+  3.341545484874059E+026
+  3.341872302748300E+026
+  3.342650200355538E+026
+  3.343888948692568E+026
+  3.345530240544142E+026
+  3.347435401028455E+026
+  3.349381425222974E+026
+  3.351067372259110E+026
+  3.352133457445020E+026
+  3.352193387320405E+026
+  3.350878379179973E+026
+  3.347889775118100E+026
+  3.343055298181936E+026
+  3.336381917706928E+026
+  3.328096707246564E+026
+  3.318666380405549E+026
+  3.308786560920548E+026
+  3.299333544366048E+026
+  3.291274577963351E+026
+  3.285537475094461E+026
+  3.282846223566379E+026
+  3.283535303400137E+026
+  3.287360684250395E+026
+  3.293329006540326E+026
+  3.299567746532791E+026
+  3.303258318420460E+026
+  3.300651751871202E+026
+  3.287183676241074E+026
+  3.257702227337607E+026
+  3.206818337013576E+026
+  3.129380314297092E+026
+  3.021060330183127E+026
+  2.879016494653951E+026
+  2.702560405804904E+026
+  2.493721335413870E+026
+  2.257567263928732E+026
+  2.002139813823127E+026
+  1.737904953307989E+026
+  1.476721651026240E+026
+  1.230470724068835E+026
+  1.009198749013706E+026
+  8.185015624162401E+025
+  6.590825353785772E+025
+  5.286315638673502E+025
+  4.234754022024307E+025
+  3.395813272648666E+025
+  2.731042237732180E+025
+  2.206414372871304E+025
+  1.793155488365214E+025
+  1.467645892724445E+025
+  1.210885898850625E+025
+  1.007805616177580E+025
+  8.465683697150650E+024
+  7.179387104985714E+024
+  6.147418136707677E+024
+  5.314176751829917E+024
+  4.636622841226790E+024
+  4.081435590584381E+024
+  3.622790814256584E+024
+  3.240636373251215E+024
+  2.919362287903013E+024
+  2.646779930084619E+024
+  2.413341260545810E+024
+  2.211543519231990E+024
+  2.035476855994799E+024
+  1.880482220543301E+024
+  1.742894714167892E+024
+  1.619853976008420E+024
+  1.509168584349212E+024
+  1.409226574216320E+024
+  1.318949860617464E+024
+  1.237797762012175E+024
+  1.165835579536560E+024
+  1.103900694436357E+024
+  1.053924331641380E+024
+  1.019506695755554E+024
+  1.006902532375719E+024
+  1.026659784975168E+024
+  1.096271038553699E+024
+  1.244345355043833E+024
+  1.516972399191692E+024
+  1.987088444739374E+024
+  2.767671383019060E+024
+  4.029316283908391E+024
+  6.021893451427301E+024
+  9.098168952239600E+024
+  1.373400556423152E+025
+  2.053468617110098E+025
+  3.021007615789885E+025
+  4.349384990726665E+025
+  6.097680008306561E+025
+  8.285805801139928E+025
+  1.087774298394292E+026
+  1.378376740202024E+026
+  1.687104353855184E+026
+  1.998190615764953E+026
+  2.295698385423885E+026
+  2.565726885602556E+026
+  2.798027535807545E+026
+  2.986786360782500E+026
+  3.130592380948898E+026
+  3.231794793580534E+026
+  3.295521706262412E+026
+  3.328608914568157E+026
+  3.338613076681769E+026
+  3.333001957184637E+026
+  3.318551208192439E+026
+  3.300940369599403E+026
+  3.284525901641139E+026
+  3.272266617426411E+026
+  3.265778053535534E+026
+  3.265491830928558E+026
+  3.270892649391140E+026
+  3.280800950390603E+026
+  3.293666484285853E+026
+  3.307839562433393E+026
+  3.321793446106737E+026
+  3.334281791472505E+026
+  3.344426619365354E+026
+  3.351742293936524E+026
+  3.356108156782611E+026
+  3.357706546585522E+026
+  3.356943508314197E+026
+  3.354365993770761E+026
+  3.350583774450326E+026
+  3.346201369850198E+026
+  3.341765137285501E+026
+  3.337727672215958E+026
+  3.334428512348219E+026
+  3.185957266200785E+026
+  3.185552511647571E+026
+  3.185784053959443E+026
+  3.186786490894493E+026
+  3.188625117376754E+026
+  3.191268198306450E+026
+  3.194566047683130E+026
+  3.198240932632644E+026
+  3.201891103327184E+026
+  3.205012309319561E+026
+  3.207038058376198E+026
+  3.207397341361704E+026
+  3.205586419972081E+026
+  3.201248732270394E+026
+  3.194254190581920E+026
+  3.184766888729194E+026
+  3.173288971436881E+026
+  3.160668450848757E+026
+  3.148060472735555E+026
+  3.136835281347596E+026
+  3.128431905780738E+026
+  3.124163872263090E+026
+  3.124991026197144E+026
+  3.131278528248075E+026
+  3.142569022479984E+026
+  3.157396061226661E+026
+  3.173166073705191E+026
+  3.186133246384851E+026
+  3.191487817856303E+026
+  3.183574275410900E+026
+  3.156251279373404E+026
+  3.103397522471166E+026
+  3.019553402534574E+026
+  2.900663633943909E+026
+  2.744849486342424E+026
+  2.553095517050845E+026
+  2.329697440446743E+026
+  2.082307107945588E+026
+  1.821451206736067E+026
+  1.559503691939290E+026
+  1.309244617974162E+026
+  1.081841398285484E+026
+  8.839429966499281E+025
+  7.170365712949804E+025
+  5.793267429045767E+025
+  4.674435924088395E+025
+  3.775053003216433E+025
+  3.057153243372263E+025
+  2.486557098451184E+025
+  2.033974217113113E+025
+  1.675092244134235E+025
+  1.390162060293907E+025
+  1.163379673402277E+025
+  9.822293252428278E+024
+  8.368700668866566E+024
+  7.196006041248476E+024
+  6.244112845948238E+024
+  5.466189890723794E+024
+  4.825749806385970E+024
+  4.294341165310540E+024
+  3.849742188008862E+024
+  3.474556726505244E+024
+  3.155128631664645E+024
+  2.880705785665226E+024
+  2.642798748266628E+024
+  2.434690676507785E+024
+  2.251064885991557E+024
+  2.087724323323219E+024
+  1.941383693790814E+024
+  1.809520577343975E+024
+  1.690277272797733E+024
+  1.582411251798727E+024
+  1.485300232327981E+024
+  1.399019787881429E+024
+  1.324529701231880E+024
+  1.264033669517754E+024
+  1.221620489185826E+024
+  1.204359677912588E+024
+  1.224117110757949E+024
+  1.300481143786382E+024
+  1.465344412799423E+024
+  1.769852290626005E+024
+  2.294555103280104E+024
+  3.163581518942052E+024
+  4.563294441876453E+024
+  6.764897028026568E+024
+  1.014841165910947E+025
+  1.522189773783520E+025
+  2.262438608372935E+025
+  3.309398912534934E+025
+  4.737532563167777E+025
+  6.603608153216897E+025
+  8.920074562922738E+025
+  1.163809873432428E+026
+  1.465170402652133E+026
+  1.781103737083555E+026
+  2.094361247220834E+026
+  2.388004732087886E+026
+  2.647774577003765E+026
+  2.863737990100686E+026
+  3.030986794933939E+026
+  3.149443366635351E+026
+  3.223024743261570E+026
+  3.258476957821087E+026
+  3.264151831785591E+026
+  3.248909175591415E+026
+  3.221235454584512E+026
+  3.188602377835626E+026
+  3.157051931258761E+026
+  3.130981240973603E+026
+  3.113099827800396E+026
+  3.104533400553735E+026
+  3.105046914340964E+026
+  3.113354473383237E+026
+  3.127477382083595E+026
+  3.145108061805519E+026
+  3.163939643823923E+026
+  3.181929579132823E+026
+  3.197478791233214E+026
+  3.209522341600343E+026
+  3.217539996975466E+026
+  3.221503726886981E+026
+  3.221783684164062E+026
+  3.219034388963126E+026
+  3.214078433834467E+026
+  3.207798404151786E+026
+  3.201043864867201E+026
+  3.194559483065289E+026
+  3.188937069296342E+026
+  3.184590891809006E+026
+  3.259802768523739E+026
+  3.259745801245237E+026
+  3.260101489260437E+026
+  3.260933180352957E+026
+  3.262251942282927E+026
+  3.263998734712518E+026
+  3.266032705545759E+026
+  3.268128494257954E+026
+  3.269984662116231E+026
+  3.271245559422542E+026
+  3.271537043480566E+026
+  3.270514252654729E+026
+  3.267917975957482E+026
+  3.263634170029958E+026
+  3.257749010614162E+026
+  3.250590251138917E+026
+  3.242745001412168E+026
+  3.235044539419234E+026
+  3.228508701901637E+026
+  3.224245993906961E+026
+  3.223310732931466E+026
+  3.226524774203864E+026
+  3.234277740612487E+026
+  3.246325116650527E+026
+  3.261607094979370E+026
+  3.278112165650576E+026
+  3.292808257486559E+026
+  3.301661552963564E+026
+  3.299759893132550E+026
+  3.281554435761311E+026
+  3.241229090114684E+026
+  3.173199737347453E+026
+  3.072730762265157E+026
+  2.936631811387868E+026
+  2.763962515383804E+026
+  2.556632216158084E+026
+  2.319748666300921E+026
+  2.061565208462872E+026
+  1.792921511040088E+026
+  1.526176878126212E+026
+  1.273781537898703E+026
+  1.046335887520117E+026
+  8.498511218698420E+025
+  6.852566569294695E+025
+  5.503255317970699E+025
+  4.413791917298370E+025
+  3.543309046238352E+025
+  2.852593455630913E+025
+  2.306797696365747E+025
+  1.876359941730076E+025
+  1.536951853418058E+025
+  1.268961427789787E+025
+  1.056803898119601E+025
+  8.882178164848426E+024
+  7.536220283319470E+024
+  6.455630815148038E+024
+  5.582579533362239E+024
+  4.872249675857779E+024
+  4.289909335054593E+024
+  3.808615381048173E+024
+  3.407428808028182E+024
+  3.070036396918142E+024
+  2.783691260768182E+024
+  2.538401524780534E+024
+  2.326311036115960E+024
+  2.141228311846127E+024
+  1.978269995179780E+024
+  1.833593184176209E+024
+  1.704197556253791E+024
+  1.587783797150994E+024
+  1.482660150699680E+024
+  1.387694821168245E+024
+  1.302319678235193E+024
+  1.226601940516684E+024
+  1.161417733263318E+024
+  1.108788195816386E+024
+  1.072480021924571E+024
+  1.059034062139059E+024
+  1.079474551734831E+024
+  1.152072806712020E+024
+  1.306692000879251E+024
+  1.591408285875451E+024
+  2.082242592701300E+024
+  2.896848748209208E+024
+  4.212706425644573E+024
+  6.289469920111562E+024
+  9.493214161458662E+024
+  1.431691885282038E+025
+  2.138626689035497E+025
+  3.143279706566115E+025
+  4.520880548224658E+025
+  6.331323900882342E+025
+  8.593329368145627E+025
+  1.126718423206327E+026
+  1.425733020740115E+026
+  1.742369427884682E+026
+  2.060099409642388E+026
+  2.362298473669555E+026
+  2.634547503294650E+026
+  2.866306346214804E+026
+  3.051711096115127E+026
+  3.189520527373601E+026
+  3.282427417808765E+026
+  3.336021487158855E+026
+  3.357663370595762E+026
+  3.355450330833708E+026
+  3.337368665400696E+026
+  3.310662015815801E+026
+  3.281407028360988E+026
+  3.254273046597451E+026
+  3.232440587487589E+026
+  3.217654937240134E+026
+  3.210390754132014E+026
+  3.210099796080254E+026
+  3.215508690210744E+026
+  3.224930288145875E+026
+  3.236553364844269E+026
+  3.248682129187128E+026
+  3.259907883086070E+026
+  3.269207356355142E+026
+  3.275972957430243E+026
+  3.279987926153772E+026
+  3.281363832568075E+026
+  3.280458599245039E+026
+  3.277789710443287E+026
+  3.273951555002880E+026
+  3.269542739778198E+026
+  3.265108908451102E+026
+  3.261103551034510E+026
+  3.257866062488131E+026
+  3.251235443739328E+026
+  3.251026208008253E+026
+  3.251328195930317E+026
+  3.252235975045293E+026
+  3.253784229413920E+026
+  3.255925534801200E+026
+  3.258514577296782E+026
+  3.261302205569364E+026
+  3.263941956697395E+026
+  3.266011835432315E+026
+  3.267052133175963E+026
+  3.266617710338725E+026
+  3.264341291887642E+026
+  3.260002090424635E+026
+  3.253591628922458E+026
+  3.245366732098325E+026
+  3.235878728516522E+026
+  3.225968203676463E+026
+  3.216716491644929E+026
+  3.209348768728598E+026
+  3.205089071062564E+026
+  3.204974273974664E+026
+  3.209641087656579E+026
+  3.219106257804995E+026
+  3.232564318832479E+026
+  3.248228786176524E+026
+  3.263241659896367E+026
+  3.273673316350363E+026
+  3.274631361994195E+026
+  3.260493423406241E+026
+  3.225274455275855E+026
+  3.163131538824730E+026
+  3.068994636738562E+026
+  2.939286952349495E+026
+  2.772662616001403E+026
+  2.570647146157641E+026
+  2.338030663140333E+026
+  2.082856690936861E+026
+  1.815893102511489E+026
+  1.549576078599813E+026
+  1.296567869438324E+026
+  1.067771423390810E+026
+  8.695037583258203E+025
+  7.029361539396996E+025
+  5.660113478913021E+025
+  4.551597777653936E+025
+  3.663573153936923E+025
+  2.957122406902221E+025
+  2.397474008049256E+025
+  1.955005163490441E+025
+  1.605249151679939E+025
+  1.328418561288582E+025
+  1.108742253781487E+025
+  9.337772520390734E+024
+  7.937744852419539E+024
+  6.811303361843541E+024
+  5.899305956013493E+024
+  5.155808808393659E+024
+  4.545123391200936E+024
+  4.039501739778769E+024
+  3.617331980661277E+024
+  3.261740861465929E+024
+  2.959516840135989E+024
+  2.700283431954868E+024
+  2.475866826894980E+024
+  2.279813919086087E+024
+  2.107026860764570E+024
+  1.953488312869972E+024
+  1.816058126369420E+024
+  1.692327808461522E+024
+  1.580524509389143E+024
+  1.479462312754649E+024
+  1.388546551595560E+024
+  1.307848456087742E+024
+  1.238285219956334E+024
+  1.181968204365353E+024
+  1.142824441317801E+024
+  1.127660031585271E+024
+  1.147925073572457E+024
+  1.222563309416893E+024
+  1.382484189005490E+024
+  1.677363490602987E+024
+  2.185613008885912E+024
+  3.028357953004804E+024
+  4.387936632504492E+024
+  6.530493066608632E+024
+  9.830254489408639E+024
+  1.478959819080843E+025
+  2.204366344674334E+025
+  3.233119378233296E+025
+  4.640574240130885E+025
+  6.485654724363937E+025
+  8.784523636701200E+025
+  1.149334955726403E+026
+  1.451157279948538E+026
+  1.769413109248488E+026
+  2.087170687428861E+026
+  2.387575331180738E+026
+  2.656192907113148E+026
+  2.882682242797861E+026
+  3.061554366935489E+026
+  3.192058387007207E+026
+  3.277425697561856E+026
+  3.323771769071157E+026
+  3.338921943765873E+026
+  3.331343959400165E+026
+  3.309281047722894E+026
+  3.280112528295966E+026
+  3.249931187976502E+026
+  3.223312572490540E+026
+  3.203249840634292E+026
+  3.191229418792224E+026
+  3.187421821373573E+026
+  3.190957622359270E+026
+  3.200252878095187E+026
+  3.213344827492118E+026
+  3.228200304661865E+026
+  3.242966836978990E+026
+  3.256148331562064E+026
+  3.266700483811636E+026
+  3.274052551944294E+026
+  3.278070316647234E+026
+  3.278979549866073E+026
+  3.277269796992531E+026
+  3.273594352509936E+026
+  3.268676178325361E+026
+  3.263226076921432E+026
+  3.257878909111645E+026
+  3.253150469925122E+026
+  3.249414312149549E+026
+  3.192976820228141E+026
+  3.193096296571293E+026
+  3.193472160068767E+026
+  3.194124586665441E+026
+  3.195034833578996E+026
+  3.196133439632821E+026
+  3.197293398397745E+026
+  3.198330325640252E+026
+  3.199010940182482E+026
+  3.199071530269860E+026
+  3.198246475101287E+026
+  3.196305061516140E+026
+  3.193093614969394E+026
+  3.188578477045805E+026
+  3.182883703703190E+026
+  3.176316189676335E+026
+  3.169370578968398E+026
+  3.162706923331418E+026
+  3.157095788209074E+026
+  3.153328544973753E+026
+  3.152094841342959E+026
+  3.153834257869059E+026
+  3.158574190590844E+026
+  3.165770189104273E+026
+  3.174167598744090E+026
+  3.181704059151121E+026
+  3.185471386858810E+026
+  3.181753269348949E+026
+  3.166152764302417E+026
+  3.133821032052486E+026
+  3.079795067468282E+026
+  2.999445109855987E+026
+  2.889018790761133E+026
+  2.746246469389448E+026
+  2.570940770379091E+026
+  2.365488176606217E+026
+  2.135103743825875E+026
+  1.887720110716692E+026
+  1.633426977928464E+026
+  1.383472669374047E+026
+  1.148969132817868E+026
+  9.391699131538614E+025
+  7.590714837592267E+025
+  6.090691840007377E+025
+  4.867619030626414E+025
+  3.885156695119473E+025
+  3.104061752981571E+025
+  2.487261489716891E+025
+  2.002162720520401E+025
+  1.621347302784711E+025
+  1.322410477965673E+025
+  1.087403869623487E+025
+  9.021461220251250E+024
+  7.555392066992614E+024
+  6.389545191312791E+024
+  5.457116137816645E+024
+  4.706508624781325E+024
+  4.097912004833217E+024
+  3.600603862025303E+024
+  3.190848012597262E+024
+  2.850269740419222E+024
+  2.564607352111468E+024
+  2.322757103645301E+024
+  2.116045020758096E+024
+  1.937673314899645E+024
+  1.782300850966192E+024
+  1.645726622480751E+024
+  1.524652762534411E+024
+  1.416509702465950E+024
+  1.319331217148735E+024
+  1.231671902770857E+024
+  1.152564914308007E+024
+  1.081524607471437E+024
+  1.018608593933206E+024
+  9.645688345594249E+023
+  9.211449419268899E+023
+  8.915892161194912E+023
+  8.815676701993101E+023
+  9.006606432764183E+023
+  9.647957532649168E+023
+  1.100085224954497E+024
+  1.348696839187532E+024
+  1.777524774437229E+024
+  2.490458678045421E+024
+  3.644817365209288E+024
+  5.471755773280595E+024
+  8.298793326560165E+024
+  1.256959627116822E+025
+  1.885139426384753E+025
+  2.781393003213406E+025
+  4.015657537915849E+025
+  5.645489662192535E+025
+  7.692864501703315E+025
+  1.012812661262327E+026
+  1.287132541180184E+026
+  1.580129455452751E+026
+  1.877202487529264E+026
+  2.163385531307816E+026
+  2.425407887256786E+026
+  2.653240193638882E+026
+  2.840886916959476E+026
+  2.986427152050224E+026
+  3.091478889721677E+026
+  3.160332787680632E+026
+  3.198984731712963E+026
+  3.214231445523252E+026
+  3.212918995456424E+026
+  3.201375008065950E+026
+  3.185020123701340E+026
+  3.168139310378767E+026
+  3.153790819710114E+026
+  3.143831703539343E+026
+  3.139038853541080E+026
+  3.139301982673502E+026
+  3.143861116522615E+026
+  3.151558580932106E+026
+  3.161076456555420E+026
+  3.171135848820278E+026
+  3.180643061195067E+026
+  3.188777571445325E+026
+  3.195025354745168E+026
+  3.199167454653293E+026
+  3.201237562584297E+026
+  3.201463219245212E+026
+  3.200202395616992E+026
+  3.197882379565918E+026
+  3.194945494345584E+026
+  3.191806275050639E+026
+  3.188822015560581E+026
+  3.186275701425605E+026
+  3.315981092682074E+026
+  3.315771159673330E+026
+  3.316066409198751E+026
+  3.316960202053111E+026
+  3.318486451897235E+026
+  3.320597281916922E+026
+  3.323146962760872E+026
+  3.325885489213396E+026
+  3.328464412084428E+026
+  3.330457732259252E+026
+  3.331398693048646E+026
+  3.330830966958048E+026
+  3.328370899456845E+026
+  3.323775270967838E+026
+  3.317006612865542E+026
+  3.308286211368140E+026
+  3.298123989059222E+026
+  3.287314709061275E+026
+  3.276891722773573E+026
+  3.268033063032806E+026
+  3.261920036369130E+026
+  3.259555083155653E+026
+  3.261552616165868E+026
+  3.267922652019642E+026
+  3.277871235068870E+026
+  3.289643272983473E+026
+  3.300432506780050E+026
+  3.306380666060984E+026
+  3.302684448916675E+026
+  3.283825394564834E+026
+  3.243933281659569E+026
+  3.177285988668336E+026
+  3.078934177641646E+026
+  2.945414377259131E+026
+  2.775478324028178E+026
+  2.570724556137043E+026
+  2.335983340208124E+026
+  2.079299384356995E+026
+  1.811400696669988E+026
+  1.544645842254383E+026
+  1.291590649276156E+026
+  1.063018002195288E+026
+  8.651343632119664E+025
+  6.990264121283292E+025
+  5.625790033435709E+025
+  4.521864645271839E+025
+  3.638046316541653E+025
+  2.935327524746055E+025
+  2.378916650433204E+025
+  1.939212187737881E+025
+  1.591790415956655E+025
+  1.316915958930149E+025
+  1.098871052079341E+025
+  9.252631147174644E+024
+  7.863883676850660E+024
+  6.746826043231311E+024
+  5.842651541467302E+024
+  5.105697301944140E+024
+  4.500507519666069E+024
+  3.999525463447344E+024
+  3.581295531810913E+024
+  3.229071704798883E+024
+  2.929745789490107E+024
+  2.673025130620025E+024
+  2.450803842432901E+024
+  2.256683779256185E+024
+  2.085611442488865E+024
+  1.933605078617860E+024
+  1.797552774656273E+024
+  1.675067961618337E+024
+  1.564394095286606E+024
+  1.464356296742329E+024
+  1.374365622846265E+024
+  1.294493140928039E+024
+  1.225648641098520E+024
+  1.169926267388868E+024
+  1.131221524349154E+024
+  1.116287178623909E+024
+  1.136486143986987E+024
+  1.210622459351079E+024
+  1.369385537563372E+024
+  1.662111243761532E+024
+  2.166698638957391E+024
+  3.003522165449303E+024
+  4.353861051531536E+024
+  6.482434695620901E+024
+  9.761671179077278E+024
+  1.469187132664570E+025
+  2.190610633196558E+025
+  3.214163106560170E+025
+  4.615202675472733E+025
+  6.452938198193502E+025
+  8.744234379433824E+025
+  1.144640226303335E+026
+  1.446033682245280E+026
+  1.764254691932505E+026
+  2.082517130737359E+026
+  2.384078550609848E+026
+  2.654568147639607E+026
+  2.883652823798490E+026
+  3.065799053984579E+026
+  3.200167973528504E+026
+  3.289872112768564E+026
+  3.340890109449623E+026
+  3.360903935349188E+026
+  3.358240590297569E+026
+  3.341012161426041E+026
+  3.316481599488064E+026
+  3.290643943603241E+026
+  3.267998366393012E+026
+  3.251484703625410E+026
+  3.242559571075824E+026
+  3.241386287333889E+026
+  3.247108557014392E+026
+  3.258172375389322E+026
+  3.272657337452657E+026
+  3.288580279322718E+026
+  3.304141754570596E+026
+  3.317897708698991E+026
+  3.328851794831191E+026
+  3.336475099874275E+026
+  3.340668062947480E+026
+  3.341683766966732E+026
+  3.340032212976801E+026
+  3.336381240588451E+026
+  3.331463632096371E+026
+  3.325996551229936E+026
+  3.320619001710788E+026
+  3.315849807353216E+026
+  3.312065291664727E+026
+  3.232930968910506E+026
+  3.232922043723440E+026
+  3.233280693570653E+026
+  3.234058110824724E+026
+  3.235257127985194E+026
+  3.236816115096060E+026
+  3.238598656231816E+026
+  3.240391639150244E+026
+  3.241913646796185E+026
+  3.242835777198864E+026
+  3.242815212058576E+026
+  3.241539756999062E+026
+  3.238780039672909E+026
+  3.234444211765058E+026
+  3.228627984646287E+026
+  3.221651342089504E+026
+  3.214072702050158E+026
+  3.206671825190313E+026
+  3.200394638598418E+026
+  3.196256569636606E+026
+  3.195205884721917E+026
+  3.197954398781019E+026
+  3.204788902316017E+026
+  3.215381724541914E+026
+  3.228622117036115E+026
+  3.242491132034580E+026
+  3.254001539649108E+026
+  3.259221816150824E+026
+  3.253400258340187E+026
+  3.231202228129327E+026
+  3.187069536231649E+026
+  3.115703599126687E+026
+  3.012659803980657E+026
+  2.875016537708414E+026
+  2.702048310071584E+026
+  2.495793372750787E+026
+  2.261375024513743E+026
+  2.006932628684030E+026
+  1.743063645159669E+026
+  1.481779231087137E+026
+  1.235117253835293E+026
+  1.013268594515112E+026
+  8.219413522611049E+025
+  6.619114643385945E+025
+  5.309087630971451E+025
+  4.252772390310647E+025
+  3.409871148508629E+025
+  2.741881614974521E+025
+  2.214687579546430E+025
+  1.799412849217819E+025
+  1.472338310502441E+025
+  1.214374927275423E+025
+  1.010376448254419E+025
+  8.484431230427391E+024
+  7.192886576280117E+024
+  6.156979790540393E+024
+  5.320796629918699E+024
+  4.641054335888690E+024
+  4.084246293343193E+024
+  3.624407006595513E+024
+  3.241377445579990E+024
+  2.919467127686555E+024
+  2.646427008570248E+024
+  2.412663833979880E+024
+  2.210641076429523E+024
+  2.034423701937432E+024
+  1.879333887288327E+024
+  1.741692732942297E+024
+  1.618629423700099E+024
+  1.507944729995944E+024
+  1.408020894670102E+024
+  1.317775670474449E+024
+  1.236665716797302E+024
+  1.164755375399729E+024
+  1.102883424732415E+024
+  1.052986208097985E+024
+  1.018675257851375E+024
+  1.006227138694518E+024
+  1.026229220615119E+024
+  1.096242621614993E+024
+  1.244992110133223E+024
+  1.518757717064557E+024
+  1.990780918949816E+024
+  2.774515362541342E+024
+  4.041274157432331E+024
+  6.041970072493794E+024
+  9.130810833279485E+024
+  1.378552902660633E+025
+  2.061362031757108E+025
+  3.032720328387563E+025
+  4.366159685899102E+025
+  6.120751843792353E+025
+  8.316083198781039E+025
+  1.091538601540143E+026
+  1.382776623127398E+026
+  1.691886926455344E+026
+  2.002930612222635E+026
+  2.299797194582030E+026
+  2.568431884066186E+026
+  2.798468467461835E+026
+  2.984022907346842E+026
+  3.123666397751201E+026
+  3.219781601274289E+026
+  3.277576545071891E+026
+  3.304006385120385E+026
+  3.306778602201735E+026
+  3.293534877630442E+026
+  3.271239224628110E+026
+  3.245764993133567E+026
+  3.221658599914452E+026
+  3.202055653618627E+026
+  3.188726596247571E+026
+  3.182228672131806E+026
+  3.182137621731075E+026
+  3.187327693533729E+026
+  3.196265429703073E+026
+  3.207283830848816E+026
+  3.218809824360088E+026
+  3.229528201053801E+026
+  3.238476673826836E+026
+  3.245076816461271E+026
+  3.249112977146008E+026
+  3.250675534803589E+026
+  3.250085622061392E+026
+  3.247815115104766E+026
+  3.244410246368794E+026
+  3.240424298584440E+026
+  3.236364640447196E+026
+  3.232656413132406E+026
+  3.229622058151068E+026
+  3.337088190480978E+026
+  3.337115590019352E+026
+  3.337457604350114E+026
+  3.338152463604879E+026
+  3.339194549987266E+026
+  3.340519473193833E+026
+  3.341994192449387E+026
+  3.343414514500115E+026
+  3.344511605651606E+026
+  3.344969551793166E+026
+  3.344454335055904E+026
+  3.342652668800212E+026
+  3.339317815781946E+026
+  3.334317889905890E+026
+  3.327680301815669E+026
+  3.319624640491685E+026
+  3.310575741573975E+026
+  3.301149121599008E+026
+  3.292102575943421E+026
+  3.284250755264831E+026
+  3.278343899039967E+026
+  3.274917179961354E+026
+  3.274122536592223E+026
+  3.275559534395435E+026
+  3.278124893143438E+026
+  3.279901419470502E+026
+  3.278106304279748E+026
+  3.269116706313291E+026
+  3.248588001930544E+026
+  3.211677289191583E+026
+  3.153380786727323E+026
+  3.068986366565124E+026
+  2.954628474126174E+026
+  2.807909568018287E+026
+  2.628520008401113E+026
+  2.418752086364730E+026
+  2.183775869643276E+026
+  1.931543686689718E+026
+  1.672235022621683E+026
+  1.417250489155367E+026
+  1.177896368225327E+026
+  9.636232975246192E+025
+  7.795600258134854E+025
+  6.261436211447988E+025
+  5.009539779769709E+025
+  4.003071080917169E+025
+  3.202164443939412E+025
+  2.569111094624296E+025
+  2.070725378606641E+025
+  1.679065511075603E+025
+  1.371278884425615E+025
+  1.129042331103674E+025
+  9.378654657615180E+024
+  7.863980610818041E+024
+  6.658071516862606E+024
+  5.692474889669760E+024
+  4.914269507890420E+024
+  4.282581387670531E+024
+  3.765835298456670E+024
+  3.339610938864034E+024
+  2.984984289772851E+024
+  2.687251948870335E+024
+  2.434954337909958E+024
+  2.219130297172628E+024
+  2.032749919612905E+024
+  1.870284382324154E+024
+  1.727381167326337E+024
+  1.600620753183717E+024
+  1.487337044526376E+024
+  1.385489029376110E+024
+  1.293576065845430E+024
+  1.210594615690374E+024
+  1.136041254610465E+024
+  1.069976952058153E+024
+  1.013183195120609E+024
+  9.674647973768663E+023
+  9.361916703424339E+023
+  9.252281369628716E+023
+  9.444798607379569E+023
+  1.010400354719821E+024
+  1.149941405619923E+024
+  1.406591699187239E+024
+  1.849285843028748E+024
+  2.584994311896473E+024
+  3.775560097138380E+024
+  5.658561954788318E+024
+  8.570272918304884E+024
+  1.296568769909946E+025
+  1.942573222644108E+025
+  2.863516415303642E+025
+  4.130730722501327E+025
+  5.802640627279116E+025
+  7.901006497482518E+025
+  1.039462187990225E+026
+  1.320092064740263E+026
+  1.619551511606159E+026
+  1.922914501760092E+026
+  2.214945032033698E+026
+  2.482201147751362E+026
+  2.714600441266523E+026
+  2.906207343443169E+026
+  3.055249632158358E+026
+  3.163548048051062E+026
+  3.235613458245542E+026
+  3.277646930604328E+026
+  3.296610268085693E+026
+  3.299457919788108E+026
+  3.292560836823612E+026
+  3.281316975410421E+026
+  3.269928078958895E+026
+  3.261319436966364E+026
+  3.257180272974584E+026
+  3.258102177113488E+026
+  3.263790185841648E+026
+  3.273317149274566E+026
+  3.285389603222805E+026
+  3.298594800241094E+026
+  3.311604602083180E+026
+  3.323321408262188E+026
+  3.332961731253180E+026
+  3.340082073076901E+026
+  3.344558272292464E+026
+  3.346533309417546E+026
+  3.346349209923861E+026
+  3.344475491235738E+026
+  3.341441412338343E+026
+  3.337776698910952E+026
+  3.333965476443694E+026
+  3.330415296409282E+026
+  3.327440116413294E+026
+  3.130988482579697E+026
+  3.131133856163266E+026
+  3.131528506544362E+026
+  3.132189286825065E+026
+  3.133094676747786E+026
+  3.134173760572147E+026
+  3.135300327265783E+026
+  3.136294083184413E+026
+  3.136930248277129E+026
+  3.136959108720710E+026
+  3.136135480359883E+026
+  3.134256200642503E+026
+  3.131202527947943E+026
+  3.126982834160694E+026
+  3.121769336584233E+026
+  3.115921486523594E+026
+  3.109988346644623E+026
+  3.104682973370986E+026
+  3.100823658692558E+026
+  3.099240031296125E+026
+  3.100646362211780E+026
+  3.105489492944777E+026
+  3.113783839417502E+026
+  3.124950054405201E+026
+  3.137676431960785E+026
+  3.149822683192675E+026
+  3.158384524092243E+026
+  3.159535284047962E+026
+  3.148758243179278E+026
+  3.121080853516644E+026
+  3.071418413440367E+026
+  2.995027767835826E+026
+  2.888058023294012E+026
+  2.748162575102513E+026
+  2.575105080393342E+026
+  2.371256507189270E+026
+  2.141853250996308E+026
+  1.894886245504261E+026
+  1.640536221740928E+026
+  1.390166455529899E+026
+  1.155015259442501E+026
+  9.444577268099994E+025
+  7.635860414624321E+025
+  6.128559153098779E+025
+  4.898978121240265E+025
+  3.910897149559317E+025
+  3.125071363535356E+025
+  2.504359251418861E+025
+  2.016068058463883E+025
+  1.632671673907912E+025
+  1.331661638608102E+025
+  1.094996451129955E+025
+  9.084146017172874E+024
+  7.607510282837053E+024
+  6.433221936642000E+024
+  5.494032933528315E+024
+  4.737992610170336E+024
+  4.125009401122960E+024
+  3.624139430227229E+024
+  3.211472570665233E+024
+  2.868497788519425E+024
+  2.580846669366353E+024
+  2.337331926287059E+024
+  2.129214147269620E+024
+  1.949644238128196E+024
+  1.793240803480367E+024
+  1.655771243191954E+024
+  1.533912948676352E+024
+  1.425077098853793E+024
+  1.327282712543162E+024
+  1.239073452096716E+024
+  1.159474990648949E+024
+  1.087997620773797E+024
+  1.024698715193180E+024
+  9.703348696903750E+023
+  9.266572627048416E+023
+  8.969403563047003E+023
+  8.868891423294152E+023
+  9.061499609298462E+023
+  9.707596951165023E+023
+  1.107008140245082E+024
+  1.357346189297250E+024
+  1.789109662595461E+024
+  2.506859620526528E+024
+  3.668904527190827E+024
+  5.507804017321870E+024
+  8.352979158588784E+024
+  1.265051573346468E+025
+  1.897046395491478E+025
+  2.798542320693290E+025
+  4.039691400795423E+025
+  5.678071009023491E+025
+  7.735326360356657E+025
+  1.018103610312548E+026
+  1.293409340138692E+026
+  1.587190066700621E+026
+  1.884691591293943E+026
+  2.170804485172464E+026
+  2.432142896529613E+026
+  2.658603169974275E+026
+  2.844161945129725E+026
+  2.986915993284447E+026
+  3.088540794124062E+026
+  3.153416110796801E+026
+  3.187649698511198E+026
+  3.198164526447387E+026
+  3.191939778584805E+026
+  3.175436419089754E+026
+  3.154202662736397E+026
+  3.132639870742623E+026
+  3.113906734816928E+026
+  3.099940922035029E+026
+  3.091577476287961E+026
+  3.088740682298587E+026
+  3.090682090106319E+026
+  3.096234597995902E+026
+  3.104053261526869E+026
+  3.112818722043510E+026
+  3.121387833265250E+026
+  3.128885922223884E+026
+  3.134743880317105E+026
+  3.138689775379465E+026
+  3.140708660520403E+026
+  3.140985212417765E+026
+  3.139841059123384E+026
+  3.137673867871700E+026
+  3.134902845110034E+026
+  3.131925368501523E+026
+  3.129086777083038E+026
+  3.126662459122052E+026
+  3.303866641432029E+026
+  3.303693030374801E+026
+  3.304009757119025E+026
+  3.304904243875114E+026
+  3.306405449996189E+026
+  3.308462398292162E+026
+  3.310929015092734E+026
+  3.313558558820698E+026
+  3.316010174104795E+026
+  3.317870281920990E+026
+  3.318689538349560E+026
+  3.318033777446863E+026
+  3.315545544392037E+026
+  3.311010646477785E+026
+  3.304421762482795E+026
+  3.296029304382691E+026
+  3.286368842336827E+026
+  3.276254717668682E+026
+  3.266731294837014E+026
+  3.258976918033190E+026
+  3.254160994869811E+026
+  3.253261211170069E+026
+  3.256854748243156E+026
+  3.264903371043172E+026
+  3.276556318457776E+026
+  3.289996431689033E+026
+  3.302353974337146E+026
+  3.309709884614983E+026
+  3.307206796001525E+026
+  3.289282634897714E+026
+  3.250037220639213E+026
+  3.183734621709816E+026
+  3.085429424399035E+026
+  2.951680230509116E+026
+  2.781277948517244E+026
+  2.575874619893240E+026
+  2.340363773489319E+026
+  2.082856996612896E+026
+  1.814145767286246E+026
+  1.546641909073127E+026
+  1.292939011641677E+026
+  1.063839159111839E+026
+  8.655493363406947E+025
+  6.991435861929060E+025
+  5.624883261915914E+025
+  4.519585987741012E+025
+  3.634927146613950E+025
+  2.931752403915942E+025
+  2.375153742555950E+025
+  1.935441114229062E+025
+  1.588125694340820E+025
+  1.313425669053193E+025
+  1.095591119616961E+025
+  9.222079016799753E+024
+  7.835583178851927E+024
+  6.720696304670488E+024
+  5.818563436640590E+024
+  5.083498289798416E+024
+  4.480037782009979E+024
+  3.980627973106124E+024
+  3.563821969657366E+024
+  3.212885596929769E+024
+  2.914723824422398E+024
+  2.659057314756304E+024
+  2.437792935641479E+024
+  2.244544299869518E+024
+  2.074268424950818E+024
+  1.922992694081385E+024
+  1.787612875221647E+024
+  1.665748575345406E+024
+  1.555647875926508E+024
+  1.456138914312161E+024
+  1.366634063667961E+024
+  1.287203863044951E+024
+  1.218755497244593E+024
+  1.163378058261546E+024
+  1.124958980217663E+024
+  1.110239100594601E+024
+  1.130564407719319E+024
+  1.204715682995654E+024
+  1.363351612284736E+024
+  1.655769907271761E+024
+  2.159827271882127E+024
+  2.995861560844741E+024
+  4.345143584841061E+024
+  6.472455253337961E+024
+  9.750430415236130E+024
+  1.467982805151384E+025
+  2.189457416139249E+025
+  3.213333222686138E+025
+  4.615175757044015E+025
+  6.454463551565971E+025
+  8.748358745861353E+025
+  1.145443010847318E+026
+  1.447371269917455E+026
+  1.766266987510455E+026
+  2.085317045458880E+026
+  2.387730012569298E+026
+  2.659068947346302E+026
+  2.888925417129213E+026
+  3.071690490689608E+026
+  3.206458230509352E+026
+  3.296288835636346E+026
+  3.347127281712462E+026
+  3.366642149203495E+026
+  3.363167071656842E+026
+  3.344839215741736E+026
+  3.318962535506155E+026
+  3.291585773749733E+026
+  3.267270731711297E+026
+  3.249024611261852E+026
+  3.238371730610652E+026
+  3.235539115043772E+026
+  3.239726262358618E+026
+  3.249423892490755E+026
+  3.262743144648068E+026
+  3.277718305478787E+026
+  3.292553577416208E+026
+  3.305796115722797E+026
+  3.316430529071673E+026
+  3.323901289957286E+026
+  3.328077494333285E+026
+  3.329178864123350E+026
+  3.327682426966454E+026
+  3.324225452159371E+026
+  3.319514111176067E+026
+  3.314243956896603E+026
+  3.309037927994718E+026
+  3.304404440836549E+026
+  3.300714778217422E+026
+  3.224269474755029E+026
+  3.223819722003906E+026
+  3.224029019591470E+026
+  3.225040001867348E+026
+  3.226924311778853E+026
+  3.229653551766663E+026
+  3.233076982992660E+026
+  3.236910106455283E+026
+  3.240737553157188E+026
+  3.244033794632929E+026
+  3.246203077911544E+026
+  3.246637435950589E+026
+  3.244789473992989E+026
+  3.240254051978556E+026
+  3.232850142359100E+026
+  3.222691806802310E+026
+  3.210235881220396E+026
+  3.196293896009066E+026
+  3.181997388211309E+026
+  3.168709445426150E+026
+  3.157881076328608E+026
+  3.150858325389722E+026
+  3.148653935270184E+026
+  3.151704503054228E+026
+  3.159639203390356E+026
+  3.171088426701658E+026
+  3.183560029068285E+026
+  3.193408047120298E+026
+  3.195914862395174E+026
+  3.185503716435869E+026
+  3.156093722692311E+026
+  3.101601830140365E+026
+  3.016581850213487E+026
+  2.896965950091321E+026
+  2.740837636438680E+026
+  2.549121425583982E+026
+  2.326036018635363E+026
+  2.079146770372227E+026
+  1.818893336463119E+026
+  1.557571233265434E+026
+  1.307898370901632E+026
+  1.081001500198126E+026
+  8.835120146400154E+025
+  7.169175865056213E+025
+  5.794335217861627E+025
+  4.677047600850636E+025
+  3.778648531595879E+025
+  3.061312033630491E+025
+  2.490975598202138E+025
+  2.038441978551888E+025
+  1.679469910399164E+025
+  1.394362725839107E+025
+  1.167353936572278E+025
+  9.859537690468790E+024
+  8.403386575242104E+024
+  7.228184393810993E+024
+  6.273901625129107E+024
+  5.493743453221783E+024
+  4.851238300336457E+024
+  4.317937153800911E+024
+  3.871612343185064E+024
+  3.494857020933394E+024
+  3.174001894426603E+024
+  2.898280824764392E+024
+  2.659190488300489E+024
+  2.450000940483973E+024
+  2.265383579055472E+024
+  2.101130867022268E+024
+  1.953948622314720E+024
+  1.821307249833927E+024
+  1.701343684984411E+024
+  1.592811952119306E+024
+  1.495088368566929E+024
+  1.408249336916831E+024
+  1.333257973392547E+024
+  1.272324235689117E+024
+  1.229546752873175E+024
+  1.212009391311182E+024
+  1.231598168654016E+024
+  1.307928882079971E+024
+  1.472930201430454E+024
+  1.777792131162550E+024
+  2.303114764311626E+024
+  3.173070914693324E+024
+  4.574038018657027E+024
+  6.777158948376063E+024
+  1.016224602128069E+025
+  1.523688900414102E+025
+  2.263925130654255E+025
+  3.310604389103452E+025
+  4.737988476651209E+025
+  6.602598375276764E+025
+  8.916633817618269E+025
+  1.163109173431586E+026
+  1.463999287618823E+026
+  1.779371897274720E+026
+  2.092028609603630E+026
+  2.385105873857513E+026
+  2.644435729355465E+026
+  2.860183332756413E+026
+  3.027533186269396E+026
+  3.146484866928383E+026
+  3.221009672524440E+026
+  3.257880658265985E+026
+  3.265448024627167E+026
+  3.252542204676562E+026
+  3.227595121978756E+026
+  3.198002657178171E+026
+  3.169714590701121E+026
+  3.147025222426084E+026
+  3.132536998517486E+026
+  3.127270940636160E+026
+  3.130896120060178E+026
+  3.142045198645967E+026
+  3.158676809988496E+026
+  3.178442104451087E+026
+  3.199015093242733E+026
+  3.218355205453321E+026
+  3.234883877495684E+026
+  3.247571584443118E+026
+  3.255944196999841E+026
+  3.260026159727836E+026
+  3.260242424338863E+026
+  3.257301119264271E+026
+  3.252074408290882E+026
+  3.245488274299379E+026
+  3.238428076313897E+026
+  3.231665920537914E+026
+  3.225812564795504E+026
+  3.221293136019208E+026
+  3.389252374457173E+026
+  3.389153822030287E+026
+  3.389469130171277E+026
+  3.390265224626374E+026
+  3.391556903366323E+026
+  3.393287802298168E+026
+  3.395316988502392E+026
+  3.397414049008324E+026
+  3.399264827900461E+026
+  3.400490286586108E+026
+  3.400679138566897E+026
+  3.399432767157245E+026
+  3.396419361978721E+026
+  3.391432291263580E+026
+  3.384445575517202E+026
+  3.375657669093349E+026
+  3.365513986418526E+026
+  3.354698920533042E+026
+  3.344089766719515E+026
+  3.334668236683969E+026
+  3.327390094271425E+026
+  3.323019396889452E+026
+  3.321940041017558E+026
+  3.323962747412868E+026
+  3.328149333338735E+026
+  3.332677555480461E+026
+  3.334769038358644E+026
+  3.330700496511771E+026
+  3.315915499556793E+026
+  3.285250824702345E+026
+  3.233287182098088E+026
+  3.154826436817015E+026
+  3.045483020184157E+026
+  2.902353096660425E+026
+  2.724690920847661E+026
+  2.514482641272611E+026
+  2.276776320580933E+026
+  2.019623356950583E+026
+  1.753531288962481E+026
+  1.490428898401585E+026
+  1.242285921293747E+026
+  1.019239886302506E+026
+  8.269507671098803E+025
+  6.661475669675427E+025
+  5.345190021396167E+025
+  4.283760685561934E+025
+  3.436637250390327E+025
+  2.765128231891979E+025
+  2.234976403739817E+025
+  1.817199599369101E+025
+  1.487997705659176E+025
+  1.228218436518722E+025
+  1.022665057574154E+025
+  8.593967329787892E+024
+  7.290932082996313E+024
+  6.245110214218265E+024
+  5.400348383307210E+024
+  4.713161561990805E+024
+  4.149871624229818E+024
+  3.684367510965543E+024
+  3.296366640577316E+024
+  2.970073707416497E+024
+  2.693150809337415E+024
+  2.455929473086117E+024
+  2.250809644594743E+024
+  2.071802847405951E+024
+  1.914186596512184E+024
+  1.774245085223376E+024
+  1.649077574308122E+024
+  1.536461359874291E+024
+  1.434761360762277E+024
+  1.342884110500074E+024
+  1.260281425519359E+024
+  1.187019906981481E+024
+  1.123949134589860E+024
+  1.073027395643820E+024
+  1.037903801032335E+024
+  1.024915636793621E+024
+  1.044746306353289E+024
+  1.115107364146350E+024
+  1.264957311531831E+024
+  1.540935206118246E+024
+  2.016825097164611E+024
+  2.806883110540968E+024
+  4.083577842754231E+024
+  6.099433037162523E+024
+  9.210817965615329E+024
+  1.389823544120776E+025
+  2.077253651183148E+025
+  3.054961545097576E+025
+  4.396860904155239E+025
+  6.162342290963931E+025
+  8.371163497527528E+025
+  1.098657999653810E+026
+  1.391769017819544E+026
+  1.703022681056435E+026
+  2.016508725261065E+026
+  2.316170788516593E+026
+  2.588032168237615E+026
+  2.821820235727417E+026
+  3.011746835815739E+026
+  3.156466489531963E+026
+  3.258418925476961E+026
+  3.322832277502575E+026
+  3.356638016478729E+026
+  3.367473347277382E+026
+  3.362864168118847E+026
+  3.349617926314202E+026
+  3.333418691151472E+026
+  3.318601849609327E+026
+  3.308083376625193E+026
+  3.303419751045089E+026
+  3.304973998496250E+026
+  3.312159817750078E+026
+  3.323731073328907E+026
+  3.338081173921754E+026
+  3.353518555401559E+026
+  3.368491408145006E+026
+  3.381745542451296E+026
+  3.392411090894610E+026
+  3.400023936029470E+026
+  3.404494993710533E+026
+  3.406044563774598E+026
+  3.405119465124469E+026
+  3.402307045822020E+026
+  3.398254441444018E+026
+  3.393598459812797E+026
+  3.388911291559026E+026
+  3.384664198972658E+026
+  3.381208131770842E+026
+  3.330924621653940E+026
+  3.330676601506408E+026
+  3.330953584279560E+026
+  3.331855861997469E+026
+  3.333422837428903E+026
+  3.335609592896058E+026
+  3.338269701785631E+026
+  3.341147736224123E+026
+  3.343884196984318E+026
+  3.346035794305615E+026
+  3.347112034083063E+026
+  3.346626709928045E+026
+  3.344161046391242E+026
+  3.339433002429889E+026
+  3.332364768508753E+026
+  3.323138525171227E+026
+  3.312229513275000E+026
+  3.300405643909587E+026
+  3.288684580806138E+026
+  3.278242758865889E+026
+  3.270276140845906E+026
+  3.265819164877452E+026
+  3.265535365344295E+026
+  3.269499386021977E+026
+  3.276994445172380E+026
+  3.286351081278177E+026
+  3.294852223757976E+026
+  3.298727014343506E+026
+  3.293252383646539E+026
+  3.272977760462161E+026
+  3.232083791256714E+026
+  3.164878220346782E+026
+  3.066417541946990E+026
+  2.933218349516179E+026
+  2.763986706867473E+026
+  2.560252046607292E+026
+  2.326757058550048E+026
+  2.071448022587348E+026
+  1.804953324779365E+026
+  1.539541085661919E+026
+  1.287695115202683E+026
+  1.060152206675958E+026
+  8.631039955621927E+025
+  6.976480450002219E+025
+  5.616935087368487E+025
+  4.516632873809337E+025
+  3.635408870713570E+025
+  2.934498390101733E+025
+  2.379310364006934E+025
+  1.940402138996288E+025
+  1.593471985401568E+025
+  1.318875963228681E+025
+  1.100963478147646E+025
+  9.273904335152426E+024
+  7.884874794633519E+024
+  6.767144651491149E+024
+  5.862072403702108E+024
+  5.124106412122015E+024
+  4.517863953065551E+024
+  4.015834763707989E+024
+  3.596591403063490E+024
+  3.243403617560906E+024
+  2.943170757197561E+024
+  2.685602402699875E+024
+  2.462591622447206E+024
+  2.267737341966167E+024
+  2.095982215552875E+024
+  1.943340391571730E+024
+  1.806696073780954E+024
+  1.683659354689413E+024
+  1.572471132750801E+024
+  1.471954921106117E+024
+  1.381521229321589E+024
+  1.301241690146410E+024
+  1.232027744936287E+024
+  1.175976119533778E+024
+  1.136985441268305E+024
+  1.121811300701580E+024
+  1.141817422873525E+024
+  1.215803258896823E+024
+  1.374441738633234E+024
+  1.667028291352333E+024
+  2.171376039076662E+024
+  3.007691103753250E+024
+  4.356942007125833E+024
+  6.483303131195959E+024
+  9.758292709415153E+024
+  1.468076995765752E+025
+  2.188165228638282E+025
+  3.209519556887825E+025
+  4.607116928810783E+025
+  6.439742255049895E+025
+  8.723883847286231E+025
+  1.141663802215972E+026
+  1.441893640672168E+026
+  1.758763600999284E+026
+  2.075554415301218E+026
+  2.375617210601068E+026
+  2.644691088433263E+026
+  2.872556235310888E+026
+  3.053783113314792E+026
+  3.187617370589781E+026
+  3.277230013397953E+026
+  3.328629207286887E+026
+  3.349497582347972E+026
+  3.348136102132077E+026
+  3.332607616907352E+026
+  3.310106942890217E+026
+  3.286546934152655E+026
+  3.266335784778667E+026
+  3.252319091400734E+026
+  3.245861556097013E+026
+  3.247042213300427E+026
+  3.254932727372480E+026
+  3.267922822173876E+026
+  3.284053724453550E+026
+  3.301322415570927E+026
+  3.317927256004593E+026
+  3.332437582672059E+026
+  3.343883075668259E+026
+  3.351770059724981E+026
+  3.356039894249324E+026
+  3.356988936185213E+026
+  3.355169897173680E+026
+  3.351290374958566E+026
+  3.346118135837849E+026
+  3.340399296013104E+026
+  3.334795066522674E+026
+  3.329839526268079E+026
+  3.325917553005819E+026
+  3.256274428357064E+026
+  3.256323830173611E+026
+  3.256662452898515E+026
+  3.257322406222489E+026
+  3.258294461762798E+026
+  3.259514196578340E+026
+  3.260852952521063E+026
+  3.262115788237774E+026
+  3.263047930796151E+026
+  3.263351637570417E+026
+  3.262713781370729E+026
+  3.260842629512170E+026
+  3.257511049738919E+026
+  3.252601843647420E+026
+  3.246149167024748E+026
+  3.238368711980960E+026
+  3.229668836360080E+026
+  3.220635262406430E+026
+  3.211983534540699E+026
+  3.204476321240071E+026
+  3.198806815921238E+026
+  3.195454517461795E+026
+  3.194524823612945E+026
+  3.195588285864105E+026
+  3.197538293532571E+026
+  3.198486976427597E+026
+  3.195718361115312E+026
+  3.185715881074536E+026
+  3.164278939321133E+026
+  3.126740569819507E+026
+  3.068294439170627E+026
+  2.984432238024664E+026
+  2.871478920070745E+026
+  2.727190837378806E+026
+  2.551350714909572E+026
+  2.346258557685603E+026
+  2.116990870904542E+026
+  1.871300266804192E+026
+  1.619071496360617E+026
+  1.371343859919091E+026
+  1.139038132205119E+026
+  9.312567135642868E+025
+  7.529076199398386E+025
+  6.043593484287437E+025
+  4.832233931513203E+025
+  3.858982965147659E+025
+  3.084995056892870E+025
+  2.473593744883382E+025
+  1.992543296029719E+025
+  1.614729317581367E+025
+  1.317995097914668E+025
+  1.084589170245681E+025
+  9.004832430551152E+024
+  7.546963663217374E+024
+  6.386883580890661E+024
+  5.458448721955699E+024
+  4.710552755425798E+024
+  4.103745602141178E+024
+  3.607568537974268E+024
+  3.198477129741206E+024
+  2.858235350363905E+024
+  2.572681285233430E+024
+  2.330782583449940E+024
+  2.123916059365383E+024
+  1.945319836276439E+024
+  1.789678017834007E+024
+  1.652807242614968E+024
+  1.531421947464678E+024
+  1.422961167955979E+024
+  1.325464766216542E+024
+  1.237491728672698E+024
+  1.158078406896707E+024
+  1.086741337922893E+024
+  1.023539075354680E+024
+  9.692224782935241E+023
+  9.255262946814561E+023
+  8.956909751220300E+023
+  8.853579773300332E+023
+  9.040605176371541E+023
+  9.676398963665451E+023
+  1.102055385588348E+024
+  1.349210981117127E+024
+  1.775557131751325E+024
+  2.484255688834019E+024
+  3.631464149048828E+024
+  5.446541747421472E+024
+  8.254332856506851E+024
+  1.249469653406912E+025
+  1.872975039005421E+025
+  2.762289330171766E+025
+  3.986650229907139E+025
+  5.602993183561257E+025
+  7.632991249364952E+025
+  1.004722881934717E+026
+  1.276663031327518E+026
+  1.567154104013162E+026
+  1.861798792451399E+026
+  2.145865091719405E+026
+  2.406319216213373E+026
+  2.633344243700298E+026
+  2.821110813792580E+026
+  2.967804379732328E+026
+  3.075084398908050E+026
+  3.147219941650010E+026
+  3.190128741911391E+026
+  3.210481883207172E+026
+  3.214962569295853E+026
+  3.209709101347199E+026
+  3.199937344599075E+026
+  3.189723199380950E+026
+  3.181922621243474E+026
+  3.178207626740540E+026
+  3.179196552252513E+026
+  3.184654220645716E+026
+  3.193733940646088E+026
+  3.205230971552761E+026
+  3.217818453742124E+026
+  3.230242562034236E+026
+  3.241462660198038E+026
+  3.250732175314904E+026
+  3.257624528400290E+026
+  3.262014679875421E+026
+  3.264030525635458E+026
+  3.263989039205956E+026
+  3.262329011899359E+026
+  3.259547267064898E+026
+  3.256142774400854E+026
+  3.252573197763499E+026
+  3.249225663600214E+026
+  3.246400612428485E+026
+  3.293014830190119E+026
+  3.292722283513854E+026
+  3.292988748438075E+026
+  3.293924674844825E+026
+  3.295576978336995E+026
+  3.297904348858658E+026
+  3.300759014991208E+026
+  3.303878595293184E+026
+  3.306890936537432E+026
+  3.309334993504973E+026
+  3.310698783084191E+026
+  3.310473026582122E+026
+  3.308217147620246E+026
+  3.303631956861771E+026
+  3.296630781515657E+026
+  3.287398742513816E+026
+  3.276428795535992E+026
+  3.264523299270945E+026
+  3.252751604600164E+026
+  3.242357782991844E+026
+  3.234618115102060E+026
+  3.230654833762902E+026
+  3.231219897031922E+026
+  3.236469041047891E+026
+  3.245750879840160E+026
+  3.257437667133561E+026
+  3.268823520452155E+026
+  3.276113171022323E+026
+  3.274520727105683E+026
+  3.258494183358209E+026
+  3.222076853200630E+026
+  3.159409187214585E+026
+  3.065359908331276E+026
+  2.936250573535361E+026
+  2.770601639258692E+026
+  2.569785467585404E+026
+  2.338435525898278E+026
+  2.084452885351392E+026
+  1.818493837178451E+026
+  1.552926242267956E+026
+  1.300392603772037E+026
+  1.071820137049372E+026
+  8.735758852240370E+025
+  7.068861414035145E+025
+  5.697432881210958E+025
+  4.586181987470445E+025
+  3.695172722382827E+025
+  2.985703432898141E+025
+  2.423144440178084E+025
+  1.977958241953519E+025
+  1.625722335037463E+025
+  1.346665200585807E+025
+  1.125013122569325E+025
+  9.483093327392869E+024
+  8.067848726588850E+024
+  6.928135999350647E+024
+  6.004583731348617E+024
+  5.251028245156103E+024
+  4.631578128131797E+024
+  4.118302970079137E+024
+  3.689429804083468E+024
+  3.327945015228198E+024
+  3.020515974282239E+024
+  2.756662555824192E+024
+  2.528122846384906E+024
+  2.328369363084075E+024
+  2.152241998167518E+024
+  1.995671915820180E+024
+  1.855477159841095E+024
+  1.729216336920272E+024
+  1.615092124172020E+024
+  1.511902419197981E+024
+  1.419044940198180E+024
+  1.336592755820219E+024
+  1.265476148414164E+024
+  1.207834061380482E+024
+  1.167641128087500E+024
+  1.151780104574145E+024
+  1.171821010086733E+024
+  1.246892200362921E+024
+  1.408183160444224E+024
+  1.705786503814974E+024
+  2.218718776808216E+024
+  3.068953001969901E+024
+  4.439963371263587E+024
+  6.599325723477536E+024
+  9.922922319881020E+024
+  1.491479572148448E+025
+  2.221134102106229E+025
+  3.255147304310500E+025
+  4.668691569797081E+025
+  6.520206105270346E+025
+  8.825004841431803E+025
+  1.153813589822412E+026
+  1.455789899889339E+026
+  1.773835199171404E+026
+  2.090980634191697E+026
+  2.390400584972442E+026
+  2.657757643039069E+026
+  2.882863084969691E+026
+  3.060414802225532E+026
+  3.189858184814658E+026
+  3.274606809549837E+026
+  3.320925518504405E+026
+  3.336743620547594E+026
+  3.330580758188270E+026
+  3.310678401374048E+026
+  3.284362914853370E+026
+  3.257628721462514E+026
+  3.234916129848712E+026
+  3.219056968796463E+026
+  3.211362621403408E+026
+  3.211827937718470E+026
+  3.219419902965601E+026
+  3.232414173602378E+026
+  3.248739248892458E+026
+  3.266289988640687E+026
+  3.283180192653339E+026
+  3.297916375491833E+026
+  3.309488498764187E+026
+  3.317385170473003E+026
+  3.321549058619085E+026
+  3.322292689132860E+026
+  3.320195096446436E+026
+  3.315995639773375E+026
+  3.310494956667684E+026
+  3.304469459693690E+026
+  3.298605196319361E+026
+  3.293453652998312E+026
+  3.289408714323500E+026
+  3.367507264920628E+026
+  3.367437567777471E+026
+  3.367759084567925E+026
+  3.368532219578414E+026
+  3.369767167177422E+026
+  3.371405850398244E+026
+  3.373309362496232E+026
+  3.375253656117038E+026
+  3.376935514592668E+026
+  3.377991173983430E+026
+  3.378028177439478E+026
+  3.376668950068758E+026
+  3.373603066347900E+026
+  3.368643329864972E+026
+  3.361778705903489E+026
+  3.353215556621289E+026
+  3.343397913408813E+026
+  3.332997862479533E+026
+  3.322868778984847E+026
+  3.313957364226600E+026
+  3.307175180174086E+026
+  3.303236176080496E+026
+  3.302472735149450E+026
+  3.304648025787098E+026
+  3.308786006557612E+026
+  3.313041784382812E+026
+  3.314634244355555E+026
+  3.309860615666947E+026
+  3.294209769642841E+026
+  3.262587936833640E+026
+  3.209666351005403E+026
+  3.130352742618722E+026
+  3.020374297862698E+026
+  2.876935827033809E+026
+  2.699383214244199E+026
+  2.489763720998899E+026
+  2.253144006794801E+026
+  1.997543726442781E+026
+  1.733387329099040E+026
+  1.472476617004546E+026
+  1.226626005499786E+026
+  1.005815643070213E+026
+  8.155878585545207E+025
+  6.566118662723369E+025
+  5.265594151576127E+025
+  4.217501057105151E+025
+  3.381509436253245E+025
+  2.719204203389554E+025
+  2.196613419897387E+025
+  1.785023355869180E+025
+  1.460873291370348E+025
+  1.205217221408380E+025
+  1.003032062153764E+025
+  8.425207862271813E+024
+  7.144808536027868E+024
+  6.117643605211427E+024
+  5.288330955197713E+024
+  4.614005565249709E+024
+  4.061486558650617E+024
+  3.605061212532579E+024
+  3.224765997291546E+024
+  2.905061320095916E+024
+  2.633814470527424E+024
+  2.401521862420127E+024
+  2.200716104766722E+024
+  2.025515501337167E+024
+  1.871283393650797E+024
+  1.734372628588145E+024
+  1.611936785628527E+024
+  1.501795189976618E+024
+  1.402343840705869E+024
+  1.312510048913342E+024
+  1.231755955426650E+024
+  1.160146813061400E+024
+  1.098516355995492E+024
+  1.048787158478291E+024
+  1.014543285200424E+024
+  1.002011654355130E+024
+  1.021693841154527E+024
+  1.091006681019634E+024
+  1.238437520964532E+024
+  1.509883926477376E+024
+  1.977985363585161E+024
+  2.755272773883852E+024
+  4.011688883201629E+024
+  5.996187693723372E+024
+  9.060308816752622E+024
+  1.367837424036852E+025
+  2.045389732319093E+025
+  3.009498669955963E+025
+  4.333404549547086E+025
+  6.076184262113671E+025
+  8.257966875920396E+025
+  1.084321040701376E+026
+  1.374288741018112E+026
+  1.682499570690719E+026
+  1.993272749783758E+026
+  2.290747150492288E+026
+  2.561078150552374E+026
+  2.794047341151280E+026
+  2.983843389647661E+026
+  3.129032778938017E+026
+  3.231921841823007E+026
+  3.297581379251846E+026
+  3.332781230806802E+026
+  3.345008530824279E+026
+  3.341662139330146E+026
+  3.329452791350250E+026
+  3.314001797899281E+026
+  3.299616216053410E+026
+  3.289215866005937E+026
+  3.284388667279882E+026
+  3.285550259069700E+026
+  3.292180501162589E+026
+  3.303104928476092E+026
+  3.316786531822173E+026
+  3.331594862170689E+026
+  3.346026165450367E+026
+  3.358858709824506E+026
+  3.369238959919698E+026
+  3.376704186165242E+026
+  3.381154180280057E+026
+  3.382788774337457E+026
+  3.382028402669359E+026
+  3.379431424486314E+026
+  3.375616336121622E+026
+  3.371194099672532E+026
+  3.366715684099801E+026
+  3.362636917044126E+026
+  3.359299587522507E+026
+  3.215134997172391E+026
+  3.214656848955754E+026
+  3.214856365822573E+026
+  3.215882070208598E+026
+  3.217810076335588E+026
+  3.220614234778486E+026
+  3.224143088045652E+026
+  3.228107865042999E+026
+  3.232085039615071E+026
+  3.235537049399919E+026
+  3.237852645830241E+026
+  3.238405765903435E+026
+  3.236629626447690E+026
+  3.232100114323573E+026
+  3.224619654052393E+026
+  3.214290345857957E+026
+  3.201563764277225E+026
+  3.187254708279417E+026
+  3.172507808825631E+026
+  3.158709599102169E+026
+  3.147344460979322E+026
+  3.139800274054135E+026
+  3.137137597386817E+026
+  3.139843484449097E+026
+  3.147596272677595E+026
+  3.159070041516809E+026
+  3.171806807752560E+026
+  3.182181659568766E+026
+  3.185482103879276E+026
+  3.176118754697176E+026
+  3.147979694444676E+026
+  3.094933144770529E+026
+  3.011468757007323E+026
+  2.893443113193055E+026
+  2.738858541088147E+026
+  2.548560248918641E+026
+  2.326697964874871E+026
+  2.080786705119234E+026
+  1.821240972003466E+026
+  1.560359497249387E+026
+  1.310890518434234E+026
+  1.084011374989295E+026
+  8.864099363183753E+025
+  7.196232016059234E+025
+  5.819046309877755E+025
+  4.699264419190093E+025
+  3.798403006653268E+025
+  3.078746550832150E+025
+  2.506291907690641E+025
+  2.051866312942815E+025
+  1.691230524211831E+025
+  1.404676441038620E+025
+  1.176418919780005E+025
+  9.939464292416485E+024
+  8.474131331602616E+024
+  7.291076086376790E+024
+  6.330074615891527E+024
+  5.544159334834026E+024
+  4.896708171732796E+024
+  4.359142878418442E+024
+  3.909125937718245E+024
+  3.529157826215202E+024
+  3.205491486792061E+024
+  2.927295801466671E+024
+  2.686013351087084E+024
+  2.474869339873357E+024
+  2.288498189819554E+024
+  2.122662156790068E+024
+  1.974042759407391E+024
+  1.840091381009837E+024
+  1.718930806902233E+024
+  1.609305612869673E+024
+  1.510587483245270E+024
+  1.422853506961461E+024
+  1.347073896720154E+024
+  1.285474129903265E+024
+  1.242180246266848E+024
+  1.224321131342259E+024
+  1.243854506119596E+024
+  1.320508404679844E+024
+  1.486384468500222E+024
+  1.792934289712438E+024
+  2.321143936923123E+024
+  3.195737794061958E+024
+  4.603849576161615E+024
+  6.817604363538395E+024
+  1.021799850585688E+025
+  1.531389729542437E+025
+  2.274458309204112E+025
+  3.324729347653700E+025
+  4.756393554406007E+025
+  6.625696665359247E+025
+  8.944291402767303E+025
+  1.166238096338930E+026
+  1.467307830602564E+026
+  1.782590952694935E+026
+  2.094825423964316E+026
+  2.387118891167026E+026
+  2.645315319633641E+026
+  2.859630534131670E+026
+  3.025330079791412E+026
+  3.142513023264222E+026
+  3.215256043190699E+026
+  3.250432458136399E+026
+  3.256479259491102E+026
+  3.242294696145281E+026
+  3.216356550101991E+026
+  3.186083647646033E+026
+  3.157426450942492E+026
+  3.134659652434707E+026
+  3.120348924402278E+026
+  3.115465447328022E+026
+  3.119620208605732E+026
+  3.131384724744681E+026
+  3.148658495625803E+026
+  3.169040024170638E+026
+  3.190160612669003E+026
+  3.209949073238331E+026
+  3.226809087830593E+026
+  3.239705733418469E+026
+  3.248170308640654E+026
+  3.252241289041618E+026
+  3.252363686009097E+026
+  3.249269088553094E+026
+  3.243854067197005E+026
+  3.237067827129390E+026
+  3.229816047282628E+026
+  3.222886994214095E+026
+  3.216902660098556E+026
+  3.212294217031764E+026
+  2.966440184940537E+026
+  2.966512810987516E+026
+  2.966800020028737E+026
+  2.967320020031767E+026
+  2.968057937470779E+026
+  2.968954451130195E+026
+  2.969898102670344E+026
+  2.970722968749631E+026
+  2.971212834611455E+026
+  2.971113491686966E+026
+  2.970153477279610E+026
+  2.968072082194688E+026
+  2.964652533308655E+026
+  2.959757071473834E+026
+  2.953359242108453E+026
+  2.945567671864558E+026
+  2.936635193244738E+026
+  2.926947483854381E+026
+  2.916986568886853E+026
+  2.907266767324769E+026
+  2.898243923107888E+026
+  2.890202735222945E+026
+  2.883131118635357E+026
+  2.876594114596671E+026
+  2.869622325284221E+026
+  2.860630847765637E+026
+  2.847384300367556E+026
+  2.827022203042917E+026
+  2.796157195157428E+026
+  2.751056430777325E+026
+  2.687913158658100E+026
+  2.603209104889524E+026
+  2.494156417760743E+026
+  2.359188793322457E+026
+  2.198445340575082E+026
+  2.014162149586917E+026
+  1.810865444428396E+026
+  1.595261769650907E+026
+  1.375759283207251E+026
+  1.161633815134853E+026
+  9.619599864116059E+025
+  7.841973454345674E+025
+  6.322238885771621E+025
+  5.060942431972045E+025
+  4.035752926097962E+025
+  3.214585193573246E+025
+  2.563419597310765E+025
+  2.050444716219040E+025
+  1.647887337642553E+025
+  1.332507938227016E+025
+  1.085398468563850E+025
+  8.914674471045477E+024
+  7.388290819391342E+024
+  6.182083333135322E+024
+  5.224124382503396E+024
+  4.458855371475684E+024
+  3.843456353862605E+024
+  3.344951959608538E+024
+  2.937939397657972E+024
+  2.602823941520677E+024
+  2.324459077246861E+024
+  2.091104368986905E+024
+  1.893630094577959E+024
+  1.724912115331293E+024
+  1.579372709617372E+024
+  1.452633182792840E+024
+  1.341252162006980E+024
+  1.242529904385009E+024
+  1.154364079906907E+024
+  1.075146793721357E+024
+  1.003696624488637E+024
+  9.392238393645597E+023
+  8.813325853833476E+023
+  8.300720046464839E+023
+  7.860607079719477E+023
+  7.507285126678295E+023
+  7.267494574712794E+023
+  7.187855318398159E+023
+  7.347265874048838E+023
+  7.877030877166310E+023
+  8.992653724410520E+023
+  1.104256498892281E+024
+  1.458024803873884E+024
+  2.046657914716719E+024
+  3.000741028034844E+024
+  4.512531396793562E+024
+  6.855082029954007E+024
+  1.039935546490888E+025
+  1.562140629093486E+025
+  2.308625100613846E+025
+  3.338882304726254E+025
+  4.702762142310823E+025
+  6.421173832743330E+025
+  8.472539031650196E+025
+  1.079356200295252E+026
+  1.328636365617914E+026
+  1.583168704816326E+026
+  1.830621414298112E+026
+  2.059956341213107E+026
+  2.262718354897928E+026
+  2.433711816754318E+026
+  2.571059139372259E+026
+  2.675780773156322E+026
+  2.751096903816294E+026
+  2.801639836588967E+026
+  2.832714144404936E+026
+  2.849680958068022E+026
+  2.857493833645545E+026
+  2.860383686489761E+026
+  2.861676972124356E+026
+  2.863728061404393E+026
+  2.867947142290442E+026
+  2.874904883977909E+026
+  2.884493265071167E+026
+  2.896119341650638E+026
+  2.908907279786601E+026
+  2.921885426838011E+026
+  2.934140084506411E+026
+  2.944925024436530E+026
+  2.953723743501274E+026
+  2.960268227670259E+026
+  2.964522833553246E+026
+  2.966644786455145E+026
+  2.966933300876442E+026
+  2.965776739329355E+026
+  2.963603009966105E+026
+  2.960836477053030E+026
+  2.957864976866131E+026
+  2.955018189372351E+026
+  2.952556090445410E+026
+  3.294043319196457E+026
+  3.294053607634609E+026
+  3.294373064205364E+026
+  3.295040749970547E+026
+  3.296052873942569E+026
+  3.297347750123146E+026
+  3.298795507886760E+026
+  3.300194829405144E+026
+  3.301278333720413E+026
+  3.301728655015600E+026
+  3.301205661497102E+026
+  3.299383405660181E+026
+  3.295994142664077E+026
+  3.290875188390680E+026
+  3.284012594596047E+026
+  3.275574265459393E+026
+  3.265924569561774E+026
+  3.255612849207249E+026
+  3.245329711287377E+026
+  3.235827813370215E+026
+  3.227808001722371E+026
+  3.221776710916265E+026
+  3.217885775010036E+026
+  3.215770357180893E+026
+  3.214403798289344E+026
+  3.211989381359599E+026
+  3.205908394695953E+026
+  3.192742018822862E+026
+  3.168382164269874E+026
+  3.128243676797776E+026
+  3.067586435595497E+026
+  2.981948609277060E+026
+  2.867678731019076E+026
+  2.722531900665937E+026
+  2.546264406575360E+026
+  2.341126264729948E+026
+  2.112124384118367E+026
+  1.866928478961364E+026
+  1.615335317716560E+026
+  1.368300222211164E+026
+  1.136672445453959E+026
+  9.295023007774836E+025
+  7.516700082464979E+025
+  6.035375923461893E+025
+  4.827231607576220E+025
+  3.856381470157544E+025
+  3.084128081429070E+025
+  2.473937511328470E+025
+  1.993699023630774E+025
+  1.616401589733575E+025
+  1.319970510046173E+025
+  1.086717374526489E+025
+  9.026611543655432E+024
+  7.568555543383958E+024
+  6.407852938821763E+024
+  5.478535655885999E+024
+  4.729618284489526E+024
+  4.121732078972099E+024
+  3.624471342361865E+024
+  3.214324751984467E+024
+  2.873075614620736E+024
+  2.586572005326814E+024
+  2.343785380813842E+024
+  2.136092413927688E+024
+  1.956728700866172E+024
+  1.800374521019149E+024
+  1.662842148034301E+024
+  1.540841641479411E+024
+  1.431808021074303E+024
+  1.333777764471830E+024
+  1.245307304670940E+024
+  1.165431421077833E+024
+  1.093666171992582E+024
+  1.030070803554485E+024
+  9.753980772822609E+023
+  9.313858334193430E+023
+  9.012786767283512E+023
+  8.907229318280822E+023
+  9.092565829727523E+023
+  9.727238410563092E+023
+  1.107081417157654E+024
+  1.354218208316535E+024
+  1.780543906730466E+024
+  2.489130893166417E+024
+  3.635960345622971E+024
+  5.450069529738794E+024
+  8.255752089134825E+024
+  1.249198350900279E+025
+  1.871955868144060E+025
+  2.760005183397062E+025
+  3.982357826824259E+025
+  5.595711154974319E+025
+  7.621555736639611E+025
+  1.003043409540902E+026
+  1.274343748748378E+026
+  1.564132789633018E+026
+  1.858079646293895E+026
+  2.141538235040485E+026
+  2.401570950733628E+026
+  2.628456189005422E+026
+  2.816448370953513E+026
+  2.963796754076724E+026
+  3.072199273369760E+026
+  3.145935879836977E+026
+  3.190907850865426E+026
+  3.213744566819962E+026
+  3.221065625968911E+026
+  3.218928060176296E+026
+  3.212453746703858E+026
+  3.205617399154896E+026
+  3.201172492298214E+026
+  3.200693244502519E+026
+  3.204710492646671E+026
+  3.212916625434198E+026
+  3.224411052483738E+026
+  3.237955533925009E+026
+  3.252210270550248E+026
+  3.265927636318833E+026
+  3.278089644691549E+026
+  3.287985292120912E+026
+  3.295232562339445E+026
+  3.299756050217519E+026
+  3.301734756632161E+026
+  3.301535164203510E+026
+  3.299641549775335E+026
+  3.296590418390830E+026
+  3.292913453030959E+026
+  3.289093481881309E+026
+  3.285535194668270E+026
+  3.282549392474896E+026
+  3.106936758118919E+026
+  3.107022237123463E+026
+  3.107350045810386E+026
+  3.107941425359146E+026
+  3.108780994132363E+026
+  3.109804773887258E+026
+  3.110892551537809E+026
+  3.111866467403711E+026
+  3.112497097277136E+026
+  3.112518722379350E+026
+  3.111654018552880E+026
+  3.109646720742763E+026
+  3.106299737311159E+026
+  3.101514835019645E+026
+  3.095328461392498E+026
+  3.087937139283057E+026
+  3.079705465685525E+026
+  3.071150179404524E+026
+  3.062895208371597E+026
+  3.055595242084677E+026
+  3.049829147907960E+026
+  3.045969079695256E+026
+  3.044035754257184E+026
+  3.043554321005416E+026
+  3.043427850062963E+026
+  3.041846367386802E+026
+  3.036248694512340E+026
+  3.023352643984394E+026
+  2.999267003004904E+026
+  2.959696353284297E+026
+  2.900246234452752E+026
+  2.816829363382210E+026
+  2.706160806977723E+026
+  2.566309022907885E+026
+  2.397240787613757E+026
+  2.201265971642201E+026
+  1.983264017292700E+026
+  1.750574728717102E+026
+  1.512477902479194E+026
+  1.279274197718633E+026
+  1.061098420499297E+026
+  8.663440212415215E+025
+  6.994686315214995E+025
+  5.606982969221265E+025
+  4.477051590256208E+025
+  3.570520810435714E+025
+  2.850588534000708E+025
+  2.282651302907753E+025
+  1.836383449635054E+025
+  1.486335481296445E+025
+  1.211751504873567E+025
+  9.960310131374291E+024
+  8.260759553330226E+024
+  6.916486219017483E+024
+  5.847979248087927E+024
+  4.993739120717715E+024
+  4.306307841860046E+024
+  3.749096105925540E+024
+  3.293886999307309E+024
+  2.918893579008641E+024
+  2.607259374070487E+024
+  2.345907484424676E+024
+  2.124661000635315E+024
+  1.935572970972686E+024
+  1.772417418628351E+024
+  1.630303876105761E+024
+  1.505386738913664E+024
+  1.394647767310031E+024
+  1.295735697946005E+024
+  1.206851664123803E+024
+  1.126673554408565E+024
+  1.054317297477856E+024
+  9.893393243240908E+023
+  9.317935168908459E+023
+  8.823698346104311E+023
+  8.426634446281503E+023
+  8.156566031261939E+023
+  8.065458965074587E+023
+  8.241205370882907E+023
+  8.829981100838639E+023
+  1.007152964073802E+024
+  1.235318401189373E+024
+  1.628972336010253E+024
+  2.283649715745189E+024
+  3.344117910476261E+024
+  5.023262623374015E+024
+  7.623013535477335E+024
+  1.155287036774159E+025
+  1.733721103192503E+025
+  2.559656484707459E+025
+  3.698126189127032E+025
+  5.203078274319673E+025
+  7.096018136660959E+025
+  9.351146566422021E+025
+  1.189643968907085E+026
+  1.462181804499106E+026
+  1.739402613836014E+026
+  2.007598880330753E+026
+  2.254570075723694E+026
+  2.471045692268545E+026
+  2.651421055694749E+026
+  2.793804814036987E+026
+  2.899536568794731E+026
+  2.972399167024886E+026
+  3.017735895606201E+026
+  3.041623950517851E+026
+  3.050187620819954E+026
+  3.049080377958811E+026
+  3.043132296288184E+026
+  3.036145062739441E+026
+  3.030813766482076E+026
+  3.028755394020531E+026
+  3.030623896115411E+026
+  3.036289474018448E+026
+  3.045056483313733E+026
+  3.055892360366781E+026
+  3.067641254939888E+026
+  3.079201276388774E+026
+  3.089652418879900E+026
+  3.098331200404808E+026
+  3.104855814232135E+026
+  3.109111214432040E+026
+  3.111206929919019E+026
+  3.111421056014795E+026
+  3.110141102603285E+026
+  3.107807804477051E+026
+  3.104865813395170E+026
+  3.101725397827709E+026
+  3.098736725940009E+026
+  3.096175575539793E+026
+  3.288467437364841E+026
+  3.288482053192219E+026
+  3.288807798105156E+026
+  3.289483683815845E+026
+  3.290505607468975E+026
+  3.291811385029738E+026
+  3.293270636004294E+026
+  3.294681810142919E+026
+  3.295777981768546E+026
+  3.296243447556132E+026
+  3.295741544605431E+026
+  3.293952229790509E+026
+  3.290616685429728E+026
+  3.285584632322939E+026
+  3.278858224981104E+026
+  3.270625048614819E+026
+  3.261272178608974E+026
+  3.251373639413355E+026
+  3.241645128358166E+026
+  3.232862761100026E+026
+  3.225746808768789E+026
+  3.220816518037895E+026
+  3.218227398726324E+026
+  3.217606946205462E+026
+  3.217907850860411E+026
+  3.217298901789597E+026
+  3.213113114365038E+026
+  3.201870687350844E+026
+  3.179391947266899E+026
+  3.141012705245197E+026
+  3.081910559663070E+026
+  2.997543407583041E+026
+  2.884187758387221E+026
+  2.739541917837548E+026
+  2.563327795123959E+026
+  2.357789892548032E+026
+  2.127962868900992E+026
+  1.881578318069971E+026
+  1.628525160374868E+026
+  1.379872231000106E+026
+  1.146590709348410E+026
+  9.378432373779877E+025
+  7.585873991872932E+025
+  6.092195251168029E+025
+  4.873618407644896E+025
+  3.894128804584374E+025
+  3.114819443091289E+025
+  2.498921930509041E+025
+  2.014097709143211E+025
+  1.633130288974843E+025
+  1.333767935505664E+025
+  1.098174228423053E+025
+  9.122469475937830E+024
+  7.649420190753840E+024
+  6.476660980109459E+024
+  5.537605129557077E+024
+  4.780779457955536E+024
+  4.166431885354062E+024
+  3.663855995545189E+024
+  3.249304693444444E+024
+  2.904376354914288E+024
+  2.614773822608876E+024
+  2.369354287442833E+024
+  2.159404324323536E+024
+  1.978088334840297E+024
+  1.820030252763711E+024
+  1.680997753313353E+024
+  1.557665694621918E+024
+  1.447441540736536E+024
+  1.348340597666445E+024
+  1.258903672087118E+024
+  1.178155030056696E+024
+  1.105605353335521E+024
+  1.041314275539954E+024
+  9.860422365007365E+023
+  9.415449982991516E+023
+  9.111005858876484E+023
+  9.004131922283934E+023
+  9.191178845293249E+023
+  9.832188407378233E+023
+  1.118932440358849E+024
+  1.368562323960879E+024
+  1.799168045322712E+024
+  2.514817103950351E+024
+  3.672973026942421E+024
+  5.504809055652161E+024
+  8.337574036256830E+024
+  1.261412778895132E+025
+  1.890003505254766E+025
+  2.786217809084867E+025
+  4.019566964747298E+025
+  5.647061023346191E+025
+  7.690101500804882E+025
+  1.011861332905457E+026
+  1.285259126413602E+026
+  1.577135182577332E+026
+  1.872998882466357E+026
+  2.158052267563222E+026
+  2.419234393331741E+026
+  2.646742826614622E+026
+  2.834799154168471E+026
+  2.981665506072323E+026
+  3.089090653829526E+026
+  3.161432906306922E+026
+  3.204688591762931E+026
+  3.225589091475605E+026
+  3.230854947532327E+026
+  3.226636893864953E+026
+  3.218138730972603E+026
+  3.209402216778106E+026
+  3.203231189080211E+026
+  3.201232978378161E+026
+  3.203954897434426E+026
+  3.211090870742513E+026
+  3.221729478275672E+026
+  3.234612432537771E+026
+  3.248374019942129E+026
+  3.261738020177286E+026
+  3.273657893198090E+026
+  3.283396187351579E+026
+  3.290547888802207E+026
+  3.295018717022081E+026
+  3.296973036057425E+026
+  3.296766640523321E+026
+  3.294876519484678E+026
+  3.291834609000121E+026
+  3.288170024681754E+026
+  3.284364347571765E+026
+  3.280821750840501E+026
+  3.277852793836725E+026
+  3.346271701771055E+026
+  3.346232754976842E+026
+  3.346574838216472E+026
+  3.347353807219442E+026
+  3.348575903870454E+026
+  3.350180514288333E+026
+  3.352028586100165E+026
+  3.353899409515068E+026
+  3.355497733810823E+026
+  3.356473491177801E+026
+  3.356454591462988E+026
+  3.355091141276366E+026
+  3.352107909636853E+026
+  3.347360007439498E+026
+  3.340884685950972E+026
+  3.332940608243680E+026
+  3.324025296087382E+026
+  3.314861884936363E+026
+  3.306348087242313E+026
+  3.299463598661845E+026
+  3.295137023553561E+026
+  3.294079263650966E+026
+  3.296596358800976E+026
+  3.302399971464107E+026
+  3.310437156192383E+026
+  3.318762250833901E+026
+  3.324472785431490E+026
+  3.323728925871831E+026
+  3.311873039906775E+026
+  3.283662871875306E+026
+  3.233627678169826E+026
+  3.156549104741577E+026
+  3.048054181790532E+026
+  2.905283660998948E+026
+  2.727564791475246E+026
+  2.516978588009268E+026
+  2.278680518708274E+026
+  2.020830554736930E+026
+  1.754034036876551E+026
+  1.490296293359579E+026
+  1.241635382074420E+026
+  1.018207240330279E+026
+  8.256660630782609E+025
+  6.647216528269072E+025
+  5.330388164245522E+025
+  4.269051172932326E+025
+  3.422451669503274E+025
+  2.751734889991542E+025
+  2.222520274451605E+025
+  1.805737333700548E+025
+  1.477526036278392E+025
+  1.218695972486117E+025
+  1.014028262965016E+025
+  8.515711631413144E+024
+  7.220010794028991E+024
+  6.180760597078785E+024
+  5.341851812566768E+024
+  4.659859044656534E+024
+  4.101170303730154E+024
+  3.639741393502004E+024
+  3.255353818185236E+024
+  2.932271625301993E+024
+  2.658210593614687E+024
+  2.423549956855733E+024
+  2.220731467468269E+024
+  2.043802824646065E+024
+  1.888072434687951E+024
+  1.749850443890050E+024
+  1.626257424522873E+024
+  1.515087559595928E+024
+  1.414718344060566E+024
+  1.324064560496534E+024
+  1.242581755764714E+024
+  1.170335293774526E+024
+  1.108167698895807E+024
+  1.058022897055654E+024
+  1.023525844406268E+024
+  1.010975880328424E+024
+  1.030998506960387E+024
+  1.101218389289765E+024
+  1.250465723613093E+024
+  1.525194173158246E+024
+  1.998928052503042E+024
+  2.785575063661178E+024
+  4.057164182060541E+024
+  6.065712636107914E+024
+  9.167088833100706E+024
+  1.384144639146519E+025
+  2.069967891972170E+025
+  3.045844822107081E+025
+  4.385876164778821E+025
+  6.149779623157257E+025
+  8.357774714386435E+025
+  1.097362802746426E+026
+  1.390684911675749E+026
+  1.702333368754821E+026
+  2.016378329546691E+026
+  2.316703890857108E+026
+  2.589238094208661E+026
+  2.823588664480265E+026
+  3.013838742136973E+026
+  3.158520907208932E+026
+  3.259973228683879E+026
+  3.323352167651595E+026
+  3.355553092448976E+026
+  3.364214576651744E+026
+  3.356900271700264E+026
+  3.340488310094593E+026
+  3.320761003280193E+026
+  3.302172566757370E+026
+  3.287770168349565E+026
+  3.279244849362779E+026
+  3.277088456152974E+026
+  3.280829324712493E+026
+  3.289314796276885E+026
+  3.301005737268096E+026
+  3.314249663911530E+026
+  3.327505651456197E+026
+  3.339504633516297E+026
+  3.349340259867839E+026
+  3.356495553042549E+026
+  3.360817846753618E+026
+  3.362458656568883E+026
+  3.361795778099222E+026
+  3.359351449711442E+026
+  3.355714851367180E+026
+  3.351474297090012E+026
+  3.347164325353315E+026
+  3.343229887159880E+026
+  3.340006663509619E+026
+  3.255414534268709E+026
+  3.255345379111308E+026
+  3.255691869568879E+026
+  3.256519047413898E+026
+  3.257839622852646E+026
+  3.259595822376579E+026
+  3.261647231793260E+026
+  3.263767515699608E+026
+  3.265652156057297E+026
+  3.266939558064203E+026
+  3.267245994066642E+026
+  3.266212678075188E+026
+  3.263561621903209E+026
+  3.259154949291300E+026
+  3.253050184071031E+026
+  3.245542405930014E+026
+  3.237183478857113E+026
+  3.228769003615250E+026
+  3.221285502058938E+026
+  3.215813844323095E+026
+  3.213390010659983E+026
+  3.214830428421228E+026
+  3.220535449500236E+026
+  3.230289961569842E+026
+  3.243083696842244E+026
+  3.256974984913431E+026
+  3.269020615629195E+026
+  3.275291879961821E+026
+  3.270993708949186E+026
+  3.250700594697595E+026
+  3.208718836751384E+026
+  3.139577175082336E+026
+  3.038633525334808E+026
+  2.902761229501988E+026
+  2.731043553248966E+026
+  2.525365061305020E+026
+  2.290755918253092E+026
+  2.035340764640667E+026
+  1.769788713262665E+026
+  1.506263418705589E+026
+  1.257016411750068E+026
+  1.032475186578637E+026
+  8.385429068840660E+025
+  6.761143449624066E+025
+  5.429760838325620E+025
+  4.354877738663404E+025
+  3.496103956032260E+025
+  2.814709933227496E+025
+  2.276292537535515E+025
+  1.851675416818413E+025
+  1.516852620734964E+025
+  1.252475146429000E+025
+  1.043169073586285E+025
+  8.768399090332831E+024
+  7.440375435074432E+024
+  6.374107601263660E+024
+  5.512559752238794E+024
+  4.811530914344297E+024
+  4.236766019707715E+024
+  3.761691204559462E+024
+  3.365653708596257E+024
+  3.032562594386778E+024
+  2.749843991354680E+024
+  2.507641057455229E+024
+  2.298203312442565E+024
+  2.115422150856770E+024
+  1.954479271281845E+024
+  1.811582742967399E+024
+  1.683771899738576E+024
+  1.568777758856357E+024
+  1.464930896511161E+024
+  1.371114545777764E+024
+  1.286768296475721E+024
+  1.211958851296644E+024
+  1.147551281729224E+024
+  1.095540649478614E+024
+  1.059644516431115E+024
+  1.046317788087107E+024
+  1.066439082355638E+024
+  1.138037476328979E+024
+  1.290579220276473E+024
+  1.571500429486617E+024
+  2.055809058953673E+024
+  2.859590799505432E+024
+  4.157960805393947E+024
+  6.207118437309355E+024
+  9.368279530827189E+024
+  1.412790765174261E+025
+  2.110347374981649E+025
+  3.101703277020740E+025
+  4.461135948079045E+025
+  6.247829088215823E+025
+  8.480389483265046E+025
+  1.111982829683464E+026
+  1.407211452231460E+026
+  1.719934438071400E+026
+  2.033876711509885E+026
+  2.332667791909716E+026
+  2.602109412080031E+026
+  2.831823792293013E+026
+  3.016038055171817E+026
+  3.153530079139223E+026
+  3.246948587133235E+026
+  3.301790184221294E+026
+  3.325289107548163E+026
+  3.325397858112389E+026
+  3.309952368783590E+026
+  3.286050546336029E+026
+  3.259635771860982E+026
+  3.235262316306081E+026
+  3.216017637105387E+026
+  3.203577996848892E+026
+  3.198373346046837E+026
+  3.199833689462589E+026
+  3.206684077923679E+026
+  3.217252139011160E+026
+  3.229753383159737E+026
+  3.242526265015190E+026
+  3.254199792645908E+026
+  3.263788536695364E+026
+  3.270720433285380E+026
+  3.274810358397293E+026
+  3.276196801607145E+026
+  3.275259660821191E+026
+  3.272533661486956E+026
+  3.268626185335064E+026
+  3.264145199805420E+026
+  3.259642728254952E+026
+  3.255576287111128E+026
+  3.252287495350663E+026
+  2.365280441125512E+026
+  2.365570417467209E+026
+  2.365898717539800E+026
+  2.366235509371804E+026
+  2.366534510252531E+026
+  2.366730368187459E+026
+  2.366738809015867E+026
+  2.366460229426157E+026
+  2.365786930433763E+026
+  2.364614584884834E+026
+  2.362857574719373E+026
+  2.360466805775668E+026
+  2.357448106231331E+026
+  2.353878661287797E+026
+  2.349918174023068E+026
+  2.345811013656443E+026
+  2.341875697348758E+026
+  2.338478663384094E+026
+  2.335990492655351E+026
+  2.334724582017972E+026
+  2.334860681024429E+026
+  2.336358387018351E+026
+  2.338868229427021E+026
+  2.341649923454024E+026
+  2.343508417592277E+026
+  2.342758416942875E+026
+  2.337227338761115E+026
+  2.324305550518021E+026
+  2.301051596553342E+026
+  2.264358834720752E+026
+  2.211187598773387E+026
+  2.138862005515882E+026
+  2.045420892612660E+026
+  1.929996878634699E+026
+  1.793176913313099E+026
+  1.637275935316383E+026
+  1.466440717759234E+026
+  1.286505572510363E+026
+  1.104555892648207E+026
+  9.282210589109072E+025
+  7.648022943709152E+025
+  6.201544111102558E+025
+  4.971653367327870E+025
+  3.956349166001224E+025
+  3.135504962633791E+025
+  2.481571124369740E+025
+  1.965877548625694E+025
+  1.561914155932376E+025
+  1.246728154443273E+025
+  1.001247257266168E+025
+  8.100513421658338E+024
+  6.609055652164042E+024
+  5.442290238993200E+024
+  4.525872243556704E+024
+  3.802467777015594E+024
+  3.228035845251340E+024
+  2.768820807513001E+024
+  2.398971104166777E+024
+  2.098681555503233E+024
+  1.852759172440149E+024
+  1.649524177004075E+024
+  1.479972423093440E+024
+  1.337139541105330E+024
+  1.215619627341584E+024
+  1.111201792809750E+024
+  1.020596418710487E+024
+  9.412297548247125E+023
+  8.710908380899122E+023
+  8.086189444647311E+023
+  7.526233002719715E+023
+  7.022300034634242E+023
+  6.568545645436860E+023
+  6.162028604682491E+023
+  5.803095778320235E+023
+  5.496328315431769E+023
+  5.252386564029013E+023
+  5.091323790698721E+023
+  5.048292653659196E+023
+  5.183087042642685E+023
+  5.595686030398849E+023
+  6.450910235875078E+023
+  8.016403079692248E+023
+  1.071918774207244E+024
+  1.522650175215007E+024
+  2.255545748785002E+024
+  3.421159068720453E+024
+  5.234596831899820E+024
+  7.990099494554469E+024
+  1.206833548807849E+025
+  1.792578842801952E+025
+  2.605037765591185E+025
+  3.686313146414418E+025
+  5.056476550265839E+025
+  6.702345815481650E+025
+  8.577280316605751E+025
+  1.060598623054360E+026
+  1.269429936434169E+026
+  1.474257947024493E+026
+  1.665929313878059E+026
+  1.837173497654858E+026
+  1.983213014700435E+026
+  2.101889542905419E+026
+  2.193401237042348E+026
+  2.259801449148542E+026
+  2.304406568738242E+026
+  2.331223882819652E+026
+  2.344463928386496E+026
+  2.348162749723520E+026
+  2.345914615315193E+026
+  2.340704155580671E+026
+  2.334823864527902E+026
+  2.329863426333402E+026
+  2.326757898477858E+026
+  2.325881027148108E+026
+  2.327168268356407E+026
+  2.330252770764493E+026
+  2.334597988647467E+026
+  2.339613328593150E+026
+  2.344743818236081E+026
+  2.349529992482961E+026
+  2.353638831294417E+026
+  2.356870148031194E+026
+  2.359145277532223E+026
+  2.360485781056202E+026
+  2.360988403345358E+026
+  2.360799665868309E+026
+  2.360092309885767E+026
+  2.359046303750252E+026
+  2.357835399614602E+026
+  2.356618307694468E+026
+  3.268884005167791E+026
+  3.268962353564669E+026
+  3.269345964570724E+026
+  3.270067136797822E+026
+  3.271114780804553E+026
+  3.272420715882460E+026
+  3.273851313059701E+026
+  3.275206775292966E+026
+  3.276229627036411E+026
+  3.276624294274834E+026
+  3.276087941112291E+026
+  3.274350780509334E+026
+  3.271222723710902E+026
+  3.266641581108400E+026
+  3.260716201641288E+026
+  3.253756630456517E+026
+  3.246282924894968E+026
+  3.239004841197604E+026
+  3.232766406478284E+026
+  3.228452612896165E+026
+  3.226860028230714E+026
+  3.228538532680493E+026
+  3.233616865472653E+026
+  3.241629264576332E+026
+  3.251363405476764E+026
+  3.260750687921885E+026
+  3.266818856009347E+026
+  3.265724657489186E+026
+  3.252881571741243E+026
+  3.223194840508397E+026
+  3.171412177888113E+026
+  3.092591209539038E+026
+  2.982670618096083E+026
+  2.839108483258110E+026
+  2.661518422567648E+026
+  2.452197015182006E+026
+  2.216407162782562E+026
+  1.962280948744949E+026
+  1.700251377636538E+026
+  1.442021466344587E+026
+  1.199215190428688E+026
+  9.815725909967453E+025
+  7.944258328841205E+025
+  6.383113402334968E+025
+  5.108336215465393E+025
+  4.082894361217502E+025
+  3.266508009321362E+025
+  2.620971586706795E+025
+  2.112601384778291E+025
+  1.712998858259958E+025
+  1.398914145293202E+025
+  1.151690357718637E+025
+  9.565633950052545E+024
+  8.019623213662827E+024
+  6.788783761081828E+024
+  5.803275225530799E+024
+  5.009087531018680E+024
+  4.364496085210936E+024
+  3.837262935467840E+024
+  3.402452133431200E+024
+  3.040738541300523E+024
+  2.737106518098111E+024
+  2.479853096138224E+024
+  2.259827040277205E+024
+  2.069849702233379E+024
+  1.904275663609075E+024
+  1.758660952779974E+024
+  1.629514444517693E+024
+  1.514114350634984E+024
+  1.410377033549391E+024
+  1.316770384993636E+024
+  1.232269539535462E+024
+  1.156359850122249E+024
+  1.089102424415778E+024
+  1.031293418572976E+024
+  9.847730379209266E+023
+  9.529783727307898E+023
+  9.418916012431880E+023
+  9.616181551699201E+023
+  1.028943434521694E+024
+  1.171361592599884E+024
+  1.433232506550402E+024
+  1.884862693402667E+024
+  2.635333051715811E+024
+  3.849643809376205E+024
+  5.769941268291696E+024
+  8.738840207589193E+024
+  1.321969395763302E+025
+  1.980370599926740E+025
+  2.918705218720567E+025
+  4.209370693618955E+025
+  5.911428507707727E+025
+  8.046361752153170E+025
+  1.058146820099400E+026
+  1.343154564076184E+026
+  1.646869815061302E+026
+  1.953972220789915E+026
+  2.248841404205298E+026
+  2.517711295040496E+026
+  2.750272297129349E+026
+  2.940476505744199E+026
+  3.086554010420473E+026
+  3.190428725853593E+026
+  3.256794155495926E+026
+  3.292089728948993E+026
+  3.303548766013663E+026
+  3.298410619104212E+026
+  3.283327866507067E+026
+  3.263962952408819E+026
+  3.244753566085234E+026
+  3.228823383961861E+026
+  3.218016045091827E+026
+  3.213030128780821E+026
+  3.213629995285331E+026
+  3.218903095798944E+026
+  3.227531549687278E+026
+  3.238046877792523E+026
+  3.249042628757421E+026
+  3.259329100565221E+026
+  3.268024954778400E+026
+  3.274589815556024E+026
+  3.278808727499927E+026
+  3.280743415605765E+026
+  3.280666155554920E+026
+  3.278988994451532E+026
+  3.276195864820811E+026
+  3.272782479554922E+026
+  3.269208946562724E+026
+  3.265867217405303E+026
+  3.263062424590163E+026
+  3.296998349240630E+026
+  3.296950129809056E+026
+  3.297288762923879E+026
+  3.298072171025368E+026
+  3.299308376786849E+026
+  3.300938151158427E+026
+  3.302823361857990E+026
+  3.304743752834700E+026
+  3.306404153925890E+026
+  3.307454395681755E+026
+  3.307522394484671E+026
+  3.306258759284710E+026
+  3.303389722052117E+026
+  3.298773323839948E+026
+  3.292451717116149E+026
+  3.284690885915055E+026
+  3.275998428200617E+026
+  3.267110475596908E+026
+  3.258940602724201E+026
+  3.252486930591658E+026
+  3.248698494573352E+026
+  3.248307842486144E+026
+  3.251642899361831E+026
+  3.258436356897820E+026
+  3.267654300235480E+026
+  3.277366968366104E+026
+  3.284683575737427E+026
+  3.285770706678208E+026
+  3.275970831954417E+026
+  3.250034384839580E+026
+  3.202474729777718E+026
+  3.128047867519536E+026
+  3.022344442112029E+026
+  2.882457611391885E+026
+  2.707656328524029E+026
+  2.499954558745579E+026
+  2.264435684940548E+026
+  2.009188024840907E+026
+  1.744752382611577E+026
+  1.483083501081613E+026
+  1.236168369382132E+026
+  1.014156045923442E+026
+  8.227223776839781E+025
+  6.626199250610189E+025
+  5.315630550353027E+025
+  4.258864703028439E+025
+  3.415553908165577E+025
+  2.747172851348586E+025
+  2.219597735037007E+025
+  1.803952555556500E+025
+  1.476521513823231E+025
+  1.218219446504461E+025
+  1.013903298370911E+025
+  8.516753887830513E+024
+  7.222503392905932E+024
+  6.184130067574715E+024
+  5.345711463063750E+024
+  4.663951453936890E+024
+  4.105326915642777E+024
+  3.643854293723353E+024
+  3.259356125935673E+024
+  2.936123941973035E+024
+  2.661891689507362E+024
+  2.427050411849727E+024
+  2.224049364268881E+024
+  2.046940865242572E+024
+  1.891036042514980E+024
+  1.752646548353072E+024
+  1.628893717064811E+024
+  1.517572072487767E+024
+  1.417059241863972E+024
+  1.326270053505137E+024
+  1.244660044839061E+024
+  1.172294432189179E+024
+  1.110015197215819E+024
+  1.059764778056786E+024
+  1.025164633817049E+024
+  1.012506621716685E+024
+  1.032401192935583E+024
+  1.102444013037069E+024
+  1.251411187482247E+024
+  1.525658152976750E+024
+  1.998535142536648E+024
+  2.783648709731939E+024
+  4.052520023892191E+024
+  6.056333938704073E+024
+  9.149637873683046E+024
+  1.381056697142949E+025
+  2.064706823736977E+025
+  3.037174060519182E+025
+  4.372039677893666E+025
+  6.128426274558824E+025
+  8.325978361048567E+025
+  1.092802043692482E+026
+  1.384382954886570E+026
+  1.693933466204645E+026
+  2.005555395193676E+026
+  2.303189609979494E+026
+  2.572838796732873E+026
+  2.804193943060857E+026
+  2.991421002203756E+026
+  3.133127733934003E+026
+  3.231715273504195E+026
+  3.292389218205104E+026
+  3.322080377039530E+026
+  3.328450524529667E+026
+  3.319076193723424E+026
+  3.300839940938240E+026
+  3.279521591527103E+026
+  3.259567164612020E+026
+  3.244010873294281E+026
+  3.234526899183170E+026
+  3.231587208776262E+026
+  3.234698225319911E+026
+  3.242684434120414E+026
+  3.253984033510834E+026
+  3.266923132956350E+026
+  3.279941570364304E+026
+  3.291753865620961E+026
+  3.301440432043478E+026
+  3.308474290003037E+026
+  3.312695808622308E+026
+  3.314252182286333E+026
+  3.313518991178351E+026
+  3.311017743763872E+026
+  3.307337747440359E+026
+  3.303067720929588E+026
+  3.298742371213848E+026
+  3.294806168492251E+026
+  3.291593403208101E+026
+  3.080135272030527E+026
+  3.080313523951506E+026
+  3.080699164488218E+026
+  3.081298910012810E+026
+  3.082085011760761E+026
+  3.082985685640197E+026
+  3.083880220538605E+026
+  3.084600509690606E+026
+  3.084940066169739E+026
+  3.084671940853429E+026
+  3.083575453056622E+026
+  3.081469940717111E+026
+  3.078252641747981E+026
+  3.073936482717052E+026
+  3.068682063903374E+026
+  3.062817120756460E+026
+  3.056836519579677E+026
+  3.051376512051032E+026
+  3.047158689845777E+026
+  3.044901986560949E+026
+  3.045205069220366E+026
+  3.048406109433187E+026
+  3.054431522302912E+026
+  3.062649018581637E+026
+  3.071742582554437E+026
+  3.079627481642013E+026
+  3.083422348434738E+026
+  3.079493384684864E+026
+  3.063583504363041E+026
+  3.031036897555305E+026
+  2.977126070388628E+026
+  2.897481621919222E+026
+  2.788611891585614E+026
+  2.648477876029555E+026
+  2.477058774339303E+026
+  2.276810211984818E+026
+  2.052892294250032E+026
+  1.813045810331623E+026
+  1.567039079608229E+026
+  1.325699901771968E+026
+  1.099670893059171E+026
+  8.977651182327195E+025
+  7.246857807699496E+025
+  5.807207325285870E+025
+  4.634872255650892E+025
+  3.694363264395668E+025
+  2.947569096630423E+025
+  2.358600909370930E+025
+  1.895978064265428E+025
+  1.533267020771293E+025
+  1.248902243382047E+025
+  1.025632986344891E+025
+  8.498479079835193E+024
+  7.109091378786838E+024
+  6.005564307324361E+024
+  5.124025233457633E+024
+  4.415202659250016E+024
+  3.841125394911743E+024
+  3.372525176217605E+024
+  2.986815547963917E+024
+  2.666531746913315E+024
+  2.398133474306315E+024
+  2.171090120521833E+024
+  1.977184112450853E+024
+  1.809981867059382E+024
+  1.664433250646029E+024
+  1.536569646600420E+024
+  1.423278055991077E+024
+  1.322134525255576E+024
+  1.231285129247749E+024
+  1.149367347616225E+024
+  1.075469716854260E+024
+  1.009134131668725E+024
+  9.504145460083824E+023
+  9.000201877476175E+023
+  8.595937847275019E+023
+  8.322098887498892E+023
+  8.232305300423722E+023
+  8.417311614571520E+023
+  9.028142827094788E+023
+  1.031261850232550E+024
+  1.267129368666210E+024
+  1.674018654612339E+024
+  2.350802423763543E+024
+  3.447360705825654E+024
+  5.184176212389685E+024
+  7.874060741626166E+024
+  1.194140901155681E+025
+  1.792982345698940E+025
+  2.648271236212390E+025
+  3.827441561813898E+025
+  5.386412160464669E+025
+  7.347390886266455E+025
+  9.683376576200646E+025
+  1.231917725165073E+026
+  1.513981680116038E+026
+  1.800596267763178E+026
+  2.077406874452779E+026
+  2.331609761620013E+026
+  2.553444733559204E+026
+  2.736975312681059E+026
+  2.880152375864110E+026
+  2.984323933114109E+026
+  3.053423512502247E+026
+  3.093055651071295E+026
+  3.109636216610258E+026
+  3.109674710491995E+026
+  3.099229199847952E+026
+  3.083530416894844E+026
+  3.066756950985479E+026
+  3.051940545979202E+026
+  3.040981621475667E+026
+  3.034755353293779E+026
+  3.033286437498219E+026
+  3.035967132290413E+026
+  3.041790708539532E+026
+  3.049573217734235E+026
+  3.058141332965971E+026
+  3.066472020511673E+026
+  3.073778850392357E+026
+  3.079547779690848E+026
+  3.083531210582384E+026
+  3.085712837260799E+026
+  3.086256727952110E+026
+  3.085451503344109E+026
+  3.083655979437954E+026
+  3.081250457009976E+026
+  3.078598023988531E+026
+  3.076017671947156E+026
+  3.073768272157131E+026
+  3.175934273400560E+026
+  3.176046155308289E+026
+  3.176409437235061E+026
+  3.177044195465648E+026
+  3.177932279356738E+026
+  3.179005496462984E+026
+  3.180138591511043E+026
+  3.181148999838500E+026
+  3.181804674447263E+026
+  3.181841662439175E+026
+  3.180991542797146E+026
+  3.179017050451294E+026
+  3.175753031471441E+026
+  3.171148426562067E+026
+  3.165303352495045E+026
+  3.158494194402174E+026
+  3.151179262582908E+026
+  3.143978124364129E+026
+  3.137619379417749E+026
+  3.132854574126658E+026
+  3.130340069452967E+026
+  3.130493555579910E+026
+  3.133336823122758E+026
+  3.138340519785312E+026
+  3.144289232194353E+026
+  3.149185989965014E+026
+  3.150214363082480E+026
+  3.143774335348766E+026
+  3.125605793797686E+026
+  3.091010960180294E+026
+  3.035183458940852E+026
+  2.953644697906794E+026
+  2.842774821091240E+026
+  2.700403305914340E+026
+  2.526393518084068E+026
+  2.323121218854945E+026
+  2.095720986890483E+026
+  1.851974853724282E+026
+  1.601761689229898E+026
+  1.356079330164413E+026
+  1.125778249264502E+026
+  9.198787867943764E+025
+  7.432275698827941E+025
+  5.961677329509134E+025
+  4.763110568429853E+025
+  3.800704692890302E+025
+  3.035823683233018E+025
+  2.432020541959418E+025
+  1.957283245770979E+025
+  1.584702313385908E+025
+  1.292301727680749E+025
+  1.062485435554765E+025
+  8.813565378564085E+024
+  7.380438217434960E+024
+  6.240979548612098E+024
+  5.329793294906800E+024
+  4.596385213115746E+024
+  4.001804971641317E+024
+  3.516001090559457E+024
+  3.115760681224518E+024
+  2.783117586353453E+024
+  2.504129654805126E+024
+  2.267943641056680E+024
+  2.066082455972070E+024
+  1.891903450836527E+024
+  1.740187971928848E+024
+  1.606831752936342E+024
+  1.488613144771119E+024
+  1.383022149285505E+024
+  1.288138248405420E+024
+  1.202549728067963E+024
+  1.125312365018662E+024
+  1.055952013565098E+024
+  9.945252767560695E+023
+  9.417672306893841E+023
+  8.993782035798637E+023
+  8.705371783575299E+023
+  8.607829520806580E+023
+  8.794818626735383E+023
+  9.422078125170107E+023
+  1.074496854006717E+024
+  1.317592916557487E+024
+  1.736936201043787E+024
+  2.434178566473276E+024
+  3.563285393186699E+024
+  5.350544666157911E+024
+  8.116682037882244E+024
+  1.229633111829434E+025
+  1.844545460290569E+025
+  2.722095601712068E+025
+  3.930958126007390E+025
+  5.527791781617075E+025
+  7.534527406902305E+025
+  9.922625903641853E+025
+  1.261433209142034E+026
+  1.549149696398307E+026
+  1.841154033710649E+026
+  2.122814606047410E+026
+  2.381141075104805E+026
+  2.606298209970207E+026
+  2.792384328791742E+026
+  2.937475057820799E+026
+  3.043102880485907E+026
+  3.113412641886307E+026
+  3.154217188426081E+026
+  3.172114008600878E+026
+  3.173751086229260E+026
+  3.165272418417054E+026
+  3.151939006343560E+026
+  3.137906395738268E+026
+  3.126136921837712E+026
+  3.118425835564220E+026
+  3.115520507690813E+026
+  3.117309462231551E+026
+  3.123054313380598E+026
+  3.131635266230861E+026
+  3.141781908627733E+026
+  3.152266355254295E+026
+  3.162044379962024E+026
+  3.170339746502199E+026
+  3.176675344525703E+026
+  3.180860890089823E+026
+  3.182950675684702E+026
+  3.183185654134960E+026
+  3.181931308308241E+026
+  3.179617997950268E+026
+  3.176688137456076E+026
+  3.173554691594124E+026
+  3.170572804897186E+026
+  3.168023526652551E+026
+  2.295995140507324E+026
+  2.296197987094406E+026
+  2.296479408022749E+026
+  2.296824712328431E+026
+  2.297200167380471E+026
+  2.297548359085782E+026
+  2.297786260913805E+026
+  2.297806875745288E+026
+  2.297484864673304E+026
+  2.296686969190336E+026
+  2.295287084026012E+026
+  2.293184792384620E+026
+  2.290325620516082E+026
+  2.286720547897742E+026
+  2.282461458831515E+026
+  2.277728674765161E+026
+  2.272786651628901E+026
+  2.267964392630824E+026
+  2.263618193498200E+026
+  2.260076087703723E+026
+  2.257565734841823E+026
+  2.256130233149035E+026
+  2.255539021463469E+026
+  2.255203211989631E+026
+  2.254106004969231E+026
+  2.250759143123734E+026
+  2.243195815541685E+026
+  2.229009383646585E+026
+  2.205446120268024E+026
+  2.169558776967926E+026
+  2.118425444717667E+026
+  2.049433297834369E+026
+  1.960617546270558E+026
+  1.851031020985370E+026
+  1.721099853463696E+026
+  1.572899392696368E+026
+  1.410269784083389E+026
+  1.238694059171107E+026
+  1.064893641970754E+026
+  8.961588177825624E+025
+  7.395131470362240E+025
+  6.006313606654796E+025
+  4.823569721216914E+025
+  3.845640725471034E+025
+  3.053741519537737E+025
+  2.421824410267231E+025
+  1.922643214389895E+025
+  1.530925543987883E+025
+  1.224738459887132E+025
+  9.858203865847686E+024
+  7.993794484854689E+024
+  6.536586137032384E+024
+  5.394352804809340E+024
+  4.495407368686004E+024
+  3.784370868498844E+024
+  3.218630671435399E+024
+  2.765469209167744E+024
+  2.399786089187136E+024
+  2.102317745705512E+024
+  1.858260521295372E+024
+  1.656213749590934E+024
+  1.487372877617154E+024
+  1.344915915224484E+024
+  1.223538273772352E+024
+  1.119100979920776E+024
+  1.028365344514688E+024
+  9.487936234986315E+023
+  8.784002994860205E+023
+  8.156426603766982E+023
+  7.593427195717717E+023
+  7.086356284906654E+023
+  6.629430839415864E+023
+  6.219745007450707E+023
+  5.857648532257578E+023
+  5.547674765743414E+023
+  5.300347747698234E+023
+  5.135425090484180E+023
+  5.087477755200279E+023
+  5.215211184811539E+023
+  5.616632642041340E+023
+  6.453077884761648E+023
+  7.986163372172090E+023
+  1.063270653555859E+024
+  1.504304234503741E+024
+  2.220696869305198E+024
+  3.358710561905721E+024
+  5.126928575949110E+024
+  7.810062925148317E+024
+  1.177553730635341E+025
+  1.746257393503699E+025
+  2.533853556271155E+025
+  3.580324844610603E+025
+  4.904070186165996E+025
+  6.491193919476196E+025
+  8.295556128280409E+025
+  1.024367875661764E+026
+  1.224441530165387E+026
+  1.420200578860817E+026
+  1.602917891912034E+026
+  1.765736643585609E+026
+  1.904237689824199E+026
+  2.016536956430358E+026
+  2.103009707867598E+026
+  2.165789606402688E+026
+  2.208186088284527E+026
+  2.234126657527307E+026
+  2.247685280446287E+026
+  2.252720361150873E+026
+  2.252622063078655E+026
+  2.250157823717344E+026
+  2.247402103107369E+026
+  2.245736819145209E+026
+  2.245909262683867E+026
+  2.248133341218723E+026
+  2.252218254186658E+026
+  2.257707509875779E+026
+  2.264011854228747E+026
+  2.270522707975876E+026
+  2.276697549869866E+026
+  2.282114064390175E+026
+  2.286494581444186E+026
+  2.289705861663525E+026
+  2.291741589451061E+026
+  2.292695610151557E+026
+  2.292732315577980E+026
+  2.292057664752180E+026
+  2.290893090252126E+026
+  2.289454951061501E+026
+  2.287940471326978E+026
+  2.286519214337212E+026
+  2.830834818046141E+026
+  2.831031863807753E+026
+  2.831378053061630E+026
+  2.831869263190011E+026
+  2.832473397550233E+026
+  2.833122860999563E+026
+  2.833710860675683E+026
+  2.834092893694970E+026
+  2.834094193530732E+026
+  2.833524312894340E+026
+  2.832198740170234E+026
+  2.829966012232794E+026
+  2.826737931590391E+026
+  2.822519426364248E+026
+  2.817433369580642E+026
+  2.811734856872199E+026
+  2.805809288366081E+026
+  2.800149178899199E+026
+  2.795306056126183E+026
+  2.791816217261050E+026
+  2.790102422694582E+026
+  2.790357447484469E+026
+  2.792419209596960E+026
+  2.795650299019621E+026
+  2.798836618645924E+026
+  2.800120294538154E+026
+  2.796981203751034E+026
+  2.786279916312526E+026
+  2.764373083177986E+026
+  2.727310363579433E+026
+  2.671118947478430E+026
+  2.592175597571076E+026
+  2.487654399754066E+026
+  2.356019248762357E+026
+  2.197503980059981E+026
+  2.014494569855992E+026
+  1.811707218160816E+026
+  1.596058642000960E+026
+  1.376164817940142E+026
+  1.161485198675065E+026
+  9.612365607062502E+025
+  7.829700469708422E+025
+  6.306076830345452E+025
+  5.042139050990071E+025
+  4.015452537045494E+025
+  3.193733254168189E+025
+  2.542736713541607E+025
+  2.030440214881284E+025
+  1.628891476001452E+025
+  1.314709679164602E+025
+  1.068881571563918E+025
+  8.762414870989812E+024
+  7.248543371620666E+024
+  6.054147486655827E+024
+  5.107134569216779E+024
+  4.351877787560035E+024
+  3.745553710535846E+024
+  3.255224466519966E+024
+  2.855548702682804E+024
+  2.527005249232474E+024
+  2.254525353257711E+024
+  2.026445458045063E+024
+  1.833708735213641E+024
+  1.669258195790807E+024
+  1.527576641398613E+024
+  1.404338931575787E+024
+  1.296150238695332E+024
+  1.200350455689728E+024
+  1.114870108296820E+024
+  1.038127463548270E+024
+  9.689605580225480E+023
+  9.065922548556779E+023
+  8.506320565935955E+023
+  8.011264988478641E+023
+  7.586823504787841E+023
+  7.247061863070538E+023
+  7.018338298232360E+023
+  6.946683843878392E+023
+  7.110114289190387E+023
+  7.638631248975492E+023
+  8.745843690681692E+023
+  1.077748628901350E+024
+  1.428332535612239E+024
+  2.011934018704981E+024
+  2.958534008919154E+024
+  4.459714453333570E+024
+  6.787893099538494E+024
+  1.031364377494497E+025
+  1.551319411103867E+025
+  2.295269201806324E+025
+  3.322953698050815E+025
+  4.684618015548464E+025
+  6.401670250024572E+025
+  8.452975008285293E+025
+  1.077538573763345E+026
+  1.327066779060251E+026
+  1.581857833121618E+026
+  1.829418590405726E+026
+  2.058500772570670E+026
+  2.260414654023020E+026
+  2.429734378132424E+026
+  2.564383974971398E+026
+  2.665239188644378E+026
+  2.735443492013106E+026
+  2.779627280057120E+026
+  2.803168358876541E+026
+  2.811571342777159E+026
+  2.809994370874533E+026
+  2.802921302746314E+026
+  2.793964148122838E+026
+  2.785777434615860E+026
+  2.780066970886688E+026
+  2.777675745234255E+026
+  2.778728072909730E+026
+  2.782810391959229E+026
+  2.789165247419624E+026
+  2.796875799300140E+026
+  2.805022330042376E+026
+  2.812798941317251E+026
+  2.819586152271251E+026
+  2.824981733852598E+026
+  2.828797042575565E+026
+  2.831029238927714E+026
+  2.831820597874254E+026
+  2.831413900161082E+026
+  2.830109011656596E+026
+  2.828223977785310E+026
+  2.826064284576110E+026
+  2.823901691102537E+026
+  2.821961604896851E+026
+  2.353144049644082E+026
+  2.353417207367296E+026
+  2.353737889310324E+026
+  2.354079371249042E+026
+  2.354397790978026E+026
+  2.354629131418721E+026
+  2.354689008940203E+026
+  2.354475993886286E+026
+  2.353878706182111E+026
+  2.352787320997066E+026
+  2.351109153917084E+026
+  2.348786950757294E+026
+  2.345817982780623E+026
+  2.342271371182046E+026
+  2.338300276506289E+026
+  2.334145132591717E+026
+  2.330124164973242E+026
+  2.326608029030756E+026
+  2.323976598208699E+026
+  2.322557791184533E+026
+  2.322550765239593E+026
+  2.323938534973987E+026
+  2.326397672462197E+026
+  2.329214758125244E+026
+  2.331220350053553E+026
+  2.330751330752000E+026
+  2.325651771887632E+026
+  2.313321333856689E+026
+  2.290819040128283E+026
+  2.255028949700526E+026
+  2.202891930481081E+026
+  2.131702750432778E+026
+  2.039462097782796E+026
+  1.925257661298565E+026
+  1.789627734213084E+026
+  1.634838914763509E+026
+  1.464994693453972E+026
+  1.285895996456681E+026
+  1.104608791012161E+026
+  9.287593279603843E+025
+  7.656619004833608E+025
+  6.211975412478587E+025
+  4.982866513073738E+025
+  3.967602024727246E+025
+  3.146315429763365E+025
+  2.491656698343862E+025
+  1.975099225031432E+025
+  1.570230120215856E+025
+  1.254158321273586E+025
+  1.007847597373414E+025
+  8.158961703617368E+024
+  6.660758897432536E+024
+  5.488052910069504E+024
+  4.566451224072199E+024
+  3.838550903569999E+024
+  3.260233611280189E+024
+  2.797666125978556E+024
+  2.424923670448484E+024
+  2.122134545091198E+024
+  1.874046843374683E+024
+  1.668929517520177E+024
+  1.497734364946686E+024
+  1.353459504832583E+024
+  1.230667318998653E+024
+  1.125120263077084E+024
+  1.033506446447266E+024
+  9.532336431495961E+023
+  8.822757218648050E+023
+  8.190597104562287E+023
+  7.623852204753914E+023
+  7.113711830561910E+023
+  6.654283145455463E+023
+  6.242601292992802E+023
+  5.879016266816575E+023
+  5.568144313731755E+023
+  5.320722402999933E+023
+  5.156938275698827E+023
+  5.112163586380534E+023
+  5.246537550123716E+023
+  5.660573612694786E+023
+  6.519905115110059E+023
+  8.093385437382530E+023
+  1.080978878805487E+024
+  1.533879288346437E+024
+  2.270074272543026E+024
+  3.440516488688540E+024
+  5.260755378249569E+024
+  8.025436066647009E+024
+  1.211543850486550E+025
+  1.798701811849421E+025
+  2.612709242953840E+025
+  3.695454496765046E+025
+  5.066656880051636E+025
+  6.712669969884028E+025
+  8.586353355609837E+025
+  1.061196954738283E+026
+  1.269505479403445E+026
+  1.473587658912618E+026
+  1.664303924225868E+026
+  1.834418511118181E+026
+  1.979204462189922E+026
+  2.096562856598950E+026
+  2.186753221698399E+026
+  2.251886432900579E+026
+  2.295328312895842E+026
+  2.321124834395979E+026
+  2.333513139331459E+026
+  2.336543471116591E+026
+  2.333812327021812E+026
+  2.328295645854077E+026
+  2.322267899479631E+026
+  2.317293488021615E+026
+  2.314277369362198E+026
+  2.313561031349050E+026
+  2.315048154294602E+026
+  2.318342970874642E+026
+  2.322884767579566E+026
+  2.328064774186768E+026
+  2.333316365534744E+026
+  2.338174805821456E+026
+  2.342307489179566E+026
+  2.345519248118888E+026
+  2.347739760136905E+026
+  2.349000921269142E+026
+  2.349410534635586E+026
+  2.349125784688162E+026
+  2.348328771179852E+026
+  2.347206844607322E+026
+  2.345938744141944E+026
+  2.344685617389531E+026
+  2.700848675885946E+026
+  2.700991701616929E+026
+  2.701282795222787E+026
+  2.701723170953936E+026
+  2.702287496923129E+026
+  2.702915752923530E+026
+  2.703508341423736E+026
+  2.703925745998395E+026
+  2.703993523081308E+026
+  2.703513866640395E+026
+  2.702283834343858E+026
+  2.700119027947987E+026
+  2.696880772316023E+026
+  2.692503867316287E+026
+  2.687020838163895E+026
+  2.680577799436428E+026
+  2.673436811525566E+026
+  2.665960002639970E+026
+  2.658571876449028E+026
+  2.651698256044348E+026
+  2.645683188639420E+026
+  2.640688556829521E+026
+  2.636584610488662E+026
+  2.632842572006051E+026
+  2.628442389273514E+026
+  2.621809380332185E+026
+  2.610793044578209E+026
+  2.592700114296025E+026
+  2.564392416478478E+026
+  2.522458319936211E+026
+  2.463463632106718E+026
+  2.384282034690358E+026
+  2.282494323191994E+026
+  2.156828286240771E+026
+  2.007587517007516E+026
+  1.836991942098341E+026
+  1.649334598982443E+026
+  1.450861832109764E+026
+  1.249320321688408E+026
+  1.053187163294545E+026
+  8.706953960539069E+025
+  7.085575581664905E+025
+  5.702024905200123E+025
+  4.555830634248185E+025
+  3.625860870075129E+025
+  2.882295391732503E+025
+  2.293729610070604E+025
+  1.830914886562890E+025
+  1.468390315324047E+025
+  1.184902859434229E+025
+  9.631979788316957E+024
+  7.895315359036582E+024
+  6.530995968432831E+024
+  5.454870088027509E+024
+  4.601797360125063E+024
+  3.921552232125215E+024
+  3.375493819013895E+024
+  2.933917397540835E+024
+  2.573979634411099E+024
+  2.278090468433618E+024
+  2.032676144407869E+024
+  1.827232976046594E+024
+  1.653606426025457E+024
+  1.505443522287476E+024
+  1.377778005124662E+024
+  1.266716914739607E+024
+  1.169204784753939E+024
+  1.082847503349930E+024
+  1.005782604900676E+024
+  9.365866822894160E+023
+  8.742142527675884E+023
+  8.179663675159026E+023
+  7.674923215749373E+023
+  7.228351231350207E+023
+  6.845425662517639E+023
+  6.538832018420042E+023
+  6.332335216204549E+023
+  6.267435152156161E+023
+  6.414472908313147E+023
+  6.890679478334366E+023
+  7.888722808625837E+023
+  9.720531452987626E+023
+  1.288228454111307E+024
+  1.814684186005561E+024
+  2.668836816104848E+024
+  4.023851515919940E+024
+  6.126138146543972E+024
+  9.311202559623912E+024
+  1.401073827755952E+025
+  2.073885749053452E+025
+  3.003962232605226E+025
+  4.237351125401348E+025
+  5.794281325039852E+025
+  7.656740240559510E+025
+  9.768873270535352E+025
+  1.204312087685670E+026
+  1.437190141623696E+026
+  1.664313691590863E+026
+  1.875565022226330E+026
+  2.063099520400470E+026
+  2.221983520623404E+026
+  2.350275839241367E+026
+  2.448673468836885E+026
+  2.519899339504507E+026
+  2.568002184597025E+026
+  2.597693222184616E+026
+  2.613790127975937E+026
+  2.620794446869645E+026
+  2.622601105502762E+026
+  2.622326254390090E+026
+  2.622236549058788E+026
+  2.623763375598741E+026
+  2.627585655974992E+026
+  2.633763464225327E+026
+  2.641902468937002E+026
+  2.651327881189713E+026
+  2.661247673670293E+026
+  2.670888881163761E+026
+  2.679597028948081E+026
+  2.686895537925037E+026
+  2.692507808435664E+026
+  2.696348950465055E+026
+  2.698496781265460E+026
+  2.699152315222643E+026
+  2.698597811450348E+026
+  2.697156797922841E+026
+  2.695158880923143E+026
+  2.692912530720889E+026
+  2.690686954069563E+026
+  2.688701902384121E+026
+  2.562251440017802E+026
+  2.562509344328822E+026
+  2.562844371016350E+026
+  2.563235414667860E+026
+  2.563640709420468E+026
+  2.563993415688264E+026
+  2.564200361087430E+026
+  2.564144859354718E+026
+  2.563694005537595E+026
+  2.562711259995021E+026
+  2.561074054415371E+026
+  2.558694970926540E+026
+  2.555544416965313E+026
+  2.551671915130282E+026
+  2.547222195060536E+026
+  2.542441701816528E+026
+  2.537671133158026E+026
+  2.533320218871489E+026
+  2.529822242237236E+026
+  2.527567858773093E+026
+  2.526820507512561E+026
+  2.527618822098908E+026
+  2.529674451887140E+026
+  2.532276081237487E+026
+  2.534211793759290E+026
+  2.533722135070107E+026
+  2.528495479383347E+026
+  2.515716044479581E+026
+  2.492173533911145E+026
+  2.454441857863441E+026
+  2.399131788940574E+026
+  2.323216948229743E+026
+  2.224422032007884E+026
+  2.101645238792199E+026
+  1.955364093423865E+026
+  1.787949540530087E+026
+  1.603796395132201E+026
+  1.409182189317986E+026
+  1.211803116966936E+026
+  1.020007356468477E+026
+  8.418390413767926E+025
+  6.838020310112297E+025
+  5.491690445163079E+025
+  4.378228253946138E+025
+  3.476421096708548E+025
+  2.756719328901196E+025
+  2.188160272489633E+025
+  1.741996880801704E+025
+  1.393265252682974E+025
+  1.121171214325787E+025
+  9.088662469889155E+024
+  7.429556558915849E+024
+  6.129305940467993E+024
+  5.106217719867254E+024
+  4.297180454775705E+024
+  3.653631421674403E+024
+  3.138285953624775E+024
+  2.722541863540883E+024
+  2.384450328006115E+024
+  2.107146317878416E+024
+  1.877643673435321E+024
+  1.685915176261935E+024
+  1.524193016121824E+024
+  1.386438442556964E+024
+  1.267940687877590E+024
+  1.165014468108176E+024
+  1.074772726729040E+024
+  9.949570904262383E+023
+  9.238131215273312E+023
+  8.600012926781475E+023
+  8.025381507903868E+023
+  7.507659571557483E+023
+  7.043539518346629E+023
+  6.633413736510857E+023
+  6.282430533924334E+023
+  6.002550803837265E+023
+  5.816239139881377E+023
+  5.762815135024174E+023
+  5.909063742960563E+023
+  6.366501150238544E+023
+  7.318727095505828E+023
+  9.063494143985504E+023
+  1.207523675920334E+024
+  1.709424241512298E+024
+  2.524728402980927E+024
+  3.819946319475837E+024
+  5.832542255409561E+024
+  8.886646604091203E+024
+  1.340052622160193E+025
+  1.987410437701868E+025
+  2.883915256429726E+025
+  4.075020056154053E+025
+  5.581548916829448E+025
+  7.387480982646586E+025
+  9.439992535651579E+025
+  1.165504330801039E+026
+  1.392840588416508E+026
+  1.615056735176156E+026
+  1.822169604409623E+026
+  2.006332230588928E+026
+  2.162484256668735E+026
+  2.288465962601908E+026
+  2.384706033396367E+026
+  2.453651603694631E+026
+  2.499104257525430E+026
+  2.525583593371339E+026
+  2.537788151263133E+026
+  2.540180480123046E+026
+  2.536696098556562E+026
+  2.530563726624988E+026
+  2.524221080442078E+026
+  2.519311111529445E+026
+  2.516744044591237E+026
+  2.516809506345697E+026
+  2.519320980817893E+026
+  2.523773326666977E+026
+  2.529494662634762E+026
+  2.535777194984163E+026
+  2.541976940911864E+026
+  2.547578368111958E+026
+  2.552225344023039E+026
+  2.555723860644409E+026
+  2.558024703121593E+026
+  2.559195078396421E+026
+  2.559386452910319E+026
+  2.558802605419910E+026
+  2.557670512183534E+026
+  2.556217129000899E+026
+  2.554653199941925E+026
+  2.553163099751140E+026
+  1.346107969020380E+026
+  1.346279346615721E+026
+  1.346455275683041E+026
+  1.346615123974696E+026
+  1.346730525045966E+026
+  1.346764280434715E+026
+  1.346670567845595E+026
+  1.346396735221072E+026
+  1.345886710928592E+026
+  1.345086333123949E+026
+  1.343950413032395E+026
+  1.342450829852668E+026
+  1.340584746031029E+026
+  1.338381736465724E+026
+  1.335908256417430E+026
+  1.333267671143613E+026
+  1.330594125727643E+026
+  1.328038841249198E+026
+  1.325748008189156E+026
+  1.323832342768195E+026
+  1.322329539011693E+026
+  1.321162151435394E+026
+  1.320094676374429E+026
+  1.318694555165983E+026
+  1.316302351445615E+026
+  1.312016424213208E+026
+  1.304697128170775E+026
+  1.292995109299496E+026
+  1.275407765864181E+026
+  1.250367312450041E+026
+  1.216362618281092E+026
+  1.172094208192357E+026
+  1.116656535614403E+026
+  1.049733310038932E+026
+  9.717807934169556E+025
+  8.841627918278903E+025
+  7.891940086048923E+025
+  6.900516977667860E+025
+  5.905344865803096E+025
+  4.946822253073408E+025
+  4.063146953605346E+025
+  3.284466133591886E+025
+  2.624974407570454E+025
+  2.082491805228222E+025
+  1.645378290734454E+025
+  1.298260148031038E+025
+  1.025366626061428E+025
+  8.122394414753037E+024
+  6.464372134835770E+024
+  5.176727692023532E+024
+  4.176638187022148E+024
+  3.398635922076863E+024
+  2.791630920983116E+024
+  2.316106606001472E+024
+  1.941681195086974E+024
+  1.645084835303283E+024
+  1.408531911699114E+024
+  1.218438025295138E+024
+  1.064423000647756E+024
+  9.385439241549711E+023
+  8.347093693903062E+023
+  7.482343135963468E+023
+  6.755032100244801E+023
+  6.137156282984000E+023
+  5.606946546378188E+023
+  5.147429094770915E+023
+  4.745347305408004E+023
+  4.390359585211557E+023
+  4.074450427388400E+023
+  3.791510645665462E+023
+  3.537059895282419E+023
+  3.308102823522481E+023
+  3.103133156919203E+023
+  2.922332850273679E+023
+  2.768063598789588E+023
+  2.645826486009490E+023
+  2.565987659770051E+023
+  2.546753878845517E+023
+  2.619155388441326E+023
+  2.835177582881217E+023
+  3.280686944631469E+023
+  4.095392455445837E+023
+  5.502659073672892E+023
+  7.852275421149433E+023
+  1.167874222669410E+024
+  1.777537883234728E+024
+  2.727916721723093E+024
+  4.175100740207672E+024
+  6.321924292772129E+024
+  9.413035350429967E+024
+  1.371221228131116E+025
+  1.945101030646797E+025
+  2.674763945874621E+025
+  3.554648803725921E+025
+  4.561503792805050E+025
+  5.656697772377862E+025
+  6.791182860044694E+025
+  7.912438757605317E+025
+  8.971619971099777E+025
+  9.929291042213844E+025
+  1.075879154971161E+026
+  1.144707176713294E+026
+  1.199346566806546E+026
+  1.240717152750660E+026
+  1.270421291012196E+026
+  1.290447008476062E+026
+  1.302913221258547E+026
+  1.309871441391947E+026
+  1.313164934568861E+026
+  1.314339763094189E+026
+  1.314600235297151E+026
+  1.314801411220898E+026
+  1.315471652264599E+026
+  1.316857971396491E+026
+  1.318986262148293E+026
+  1.321727981542340E+026
+  1.324865185649156E+026
+  1.328147252536123E+026
+  1.331334931191033E+026
+  1.334229912181143E+026
+  1.336690354401380E+026
+  1.338634521121683E+026
+  1.340035895797610E+026
+  1.340913596495248E+026
+  1.341321122977295E+026
+  1.341334964062235E+026
+  1.341044041920899E+026
+  1.340541335843193E+026
+  1.339918101456636E+026
+  1.339260059133207E+026
+  2.880155288666780E+026
+  2.880392675239861E+026
+  2.880768778503504E+026
+  2.881273774491894E+026
+  2.881870135578033E+026
+  2.882485873581743E+026
+  2.883011810245723E+026
+  2.883304207838191E+026
+  2.883193467985368E+026
+  2.882499994985209E+026
+  2.881056996212289E+026
+  2.878738519985515E+026
+  2.875490155599557E+026
+  2.871358736940406E+026
+  2.866516170673353E+026
+  2.861271723796476E+026
+  2.856067017948620E+026
+  2.851448656190113E+026
+  2.848014973458549E+026
+  2.846335962380357E+026
+  2.846848881651431E+026
+  2.849736016088736E+026
+  2.854794917983307E+026
+  2.861314552265018E+026
+  2.867972566014034E+026
+  2.872769204246948E+026
+  2.873012420928622E+026
+  2.865367046189205E+026
+  2.845979029669977E+026
+  2.810683822305045E+026
+  2.755304902129736E+026
+  2.676042191547558E+026
+  2.569938017803933E+026
+  2.435388431458772E+026
+  2.272640623700274E+026
+  2.084187656235295E+026
+  1.874950411779898E+026
+  1.652139416069849E+026
+  1.424730773445664E+026
+  1.202574433354741E+026
+  9.952641939471028E+025
+  8.106601558469533E+025
+  6.528535317753097E+025
+  5.219304790856804E+025
+  4.155788802555286E+025
+  3.304607807690703E+025
+  2.630315091709424E+025
+  2.099744048661841E+025
+  1.683933540146724E+025
+  1.358653486377172E+025
+  1.104197413657475E+025
+  9.048457149851934E+024
+  7.482272523020972E+024
+  6.246970420461737E+024
+  5.267832894895725E+024
+  4.487213949695648E+024
+  3.860742154684202E+024
+  3.354294890968077E+024
+  2.941624504133798E+024
+  2.602516137750159E+024
+  2.321369321951625E+024
+  2.086112046327788E+024
+  1.887372854137340E+024
+  1.717851646505054E+024
+  1.571842780379348E+024
+  1.444874640050091E+024
+  1.333438364808255E+024
+  1.234785153363282E+024
+  1.146776947399123E+024
+  1.067779799339949E+024
+  9.965934103167734E+023
+  9.324148685467078E+023
+  8.748404354687677E+023
+  8.239176076955665E+023
+  7.802725140628360E+023
+  7.453577184361291E+023
+  7.218964725382404E+023
+  7.146462680236360E+023
+  7.316727200349483E+023
+  7.864192376272783E+023
+  9.009795663497461E+023
+  1.111119742360747E+024
+  1.473722066684393E+024
+  2.077365303960316E+024
+  3.056576974457252E+024
+  4.609669270674038E+024
+  7.018669429087253E+024
+  1.066727308349461E+025
+  1.604862623805086E+025
+  2.374903723382926E+025
+  3.438719102373730E+025
+  4.848336575314244E+025
+  6.625893908113099E+025
+  8.749412185728444E+025
+  1.115331008033927E+026
+  1.373555020620557E+026
+  1.637118452069676E+026
+  1.893031705419912E+026
+  2.129590104762118E+026
+  2.337740613400302E+026
+  2.511818547401443E+026
+  2.649641907236508E+026
+  2.752102650804519E+026
+  2.822460226718516E+026
+  2.865533273297608E+026
+  2.886932799953500E+026
+  2.892417458817215E+026
+  2.887400469359467E+026
+  2.876606379522538E+026
+  2.863861993415529E+026
+  2.852002733036362E+026
+  2.842876606786852E+026
+  2.837428351313870E+026
+  2.835844661167669E+026
+  2.837738551716476E+026
+  2.842348829534632E+026
+  2.848731268667190E+026
+  2.855922171936237E+026
+  2.863061784550124E+026
+  2.869472727336163E+026
+  2.874695465189852E+026
+  2.878487978657726E+026
+  2.880800117640730E+026
+  2.881734062834903E+026
+  2.881500129564242E+026
+  2.880373217467050E+026
+  2.878653392906815E+026
+  2.876634417491915E+026
+  2.874581739636323E+026
+  2.872718975003100E+026
+  3.249427289701418E+026
+  3.249249702564438E+026
+  3.249563025669831E+026
+  3.250455381107271E+026
+  3.251956580825815E+026
+  3.254016824487935E+026
+  3.256491780183762E+026
+  3.259137333548261E+026
+  3.261616537709843E+026
+  3.263521444631733E+026
+  3.264410524481885E+026
+  3.263860048569246E+026
+  3.261525979303720E+026
+  3.257210725639552E+026
+  3.250926737647260E+026
+  3.242947070975719E+026
+  3.233832181497490E+026
+  3.224422552309903E+026
+  3.215788623024305E+026
+  3.209133153677709E+026
+  3.205646558725567E+026
+  3.206322364823808E+026
+  3.211746831738794E+026
+  3.221882764889527E+026
+  3.235871574184040E+026
+  3.251879078038830E+026
+  3.267009497681227E+026
+  3.277309308899089E+026
+  3.277879174258042E+026
+  3.263108650356761E+026
+  3.227044027609929E+026
+  3.163892076011998E+026
+  3.068647975035669E+026
+  2.937810934647135E+026
+  2.770115243655484E+026
+  2.567162524904143E+026
+  2.333805988042016E+026
+  2.078130863731863E+026
+  1.810919288923321E+026
+  1.544592145239724E+026
+  1.291769554820235E+026
+  1.063294542175333E+026
+  8.654241237707348E+025
+  6.992828530323369E+025
+  5.627812591569569E+025
+  4.523295467930826E+025
+  3.638923746811058E+025
+  2.935731435780249E+025
+  2.378939880079241E+025
+  1.938944598084823E+025
+  1.591311141763224E+025
+  1.316290616840533E+025
+  1.098151723774330E+025
+  9.244897094035654E+024
+  7.855905266942703E+024
+  6.738816795759922E+024
+  5.834760237162356E+024
+  5.098023520362405E+024
+  4.493114341686888E+024
+  3.992449519603808E+024
+  3.574554750015310E+024
+  3.222671157147519E+024
+  2.923682018188684E+024
+  2.667289284278369E+024
+  2.445383896592569E+024
+  2.251566059553397E+024
+  2.080781620045137E+024
+  1.929048766771107E+024
+  1.793255824204571E+024
+  1.671016527903620E+024
+  1.560574534020954E+024
+  1.460754935806073E+024
+  1.370968453887853E+024
+  1.291285477410098E+024
+  1.222614799185073E+024
+  1.167049344907788E+024
+  1.128483385621806E+024
+  1.113668807709027E+024
+  1.133968619290630E+024
+  1.208188946338273E+024
+  1.367024909497955E+024
+  1.659824219422285E+024
+  2.164507607133368E+024
+  3.001485946290124E+024
+  4.352095257635719E+024
+  6.481136205110344E+024
+  9.761140056977073E+024
+  1.469251338165414E+025
+  2.190838260518391E+025
+  3.214589710657757E+025
+  4.615818016905399E+025
+  6.453622786707093E+025
+  8.744662923433121E+025
+  1.144592119623251E+026
+  1.445783416453354E+026
+  1.763633804736484E+026
+  2.081292622174857E+026
+  2.381951760418662E+026
+  2.651180619877886E+026
+  2.878598672975144E+026
+  3.058642314925137E+026
+  3.190462929193447E+026
+  3.277184641226043E+026
+  3.324818473544817E+026
+  3.341097898304609E+026
+  3.334418082681915E+026
+  3.312972881036077E+026
+  3.284116943940336E+026
+  3.253942665498469E+026
+  3.227047412544996E+026
+  3.206464920107392E+026
+  3.193736330272501E+026
+  3.189095568079560E+026
+  3.191739490309187E+026
+  3.200147651365229E+026
+  3.212413069450239E+026
+  3.226546896797807E+026
+  3.240727260576961E+026
+  3.253474251149563E+026
+  3.263746052831040E+026
+  3.270962562740514E+026
+  3.274970934917539E+026
+  3.275971985623885E+026
+  3.274426930597700E+026
+  3.270960087706304E+026
+  3.266267134968815E+026
+  3.261035143329367E+026
+  3.255880124350133E+026
+  3.251304683969347E+026
+  3.247675070484680E+026
+  3.187181234756411E+026
+  3.187279200841322E+026
+  3.187637981708156E+026
+  3.188280812051327E+026
+  3.189192147707150E+026
+  3.190305211335290E+026
+  3.191494160426202E+026
+  3.192572880485949E+026
+  3.193301762593440E+026
+  3.193404215050192E+026
+  3.192593107510805E+026
+  3.190605602648052E+026
+  3.187243681911461E+026
+  3.182416226457002E+026
+  3.176176878371608E+026
+  3.168750731168806E+026
+  3.160542490751345E+026
+  3.152119219747794E+026
+  3.144162322754740E+026
+  3.137386231508907E+026
+  3.132425247780587E+026
+  3.129694787352396E+026
+  3.129238141307307E+026
+  3.130574012639672E+026
+  3.132562787643361E+026
+  3.133310398416272E+026
+  3.130127859480346E+026
+  3.119562697927512E+026
+  3.097516220901915E+026
+  3.059458056260606E+026
+  3.000745744918401E+026
+  2.917050153222015E+026
+  2.804874191737850E+026
+  2.662130494527851E+026
+  2.488713558997991E+026
+  2.286968272120019E+026
+  2.061931317062854E+026
+  1.821222358157736E+026
+  1.574505306204152E+026
+  1.332531534342130E+026
+  1.105901078534927E+026
+  9.034154266422406E+025
+  7.297814255504551E+025
+  5.852922825324508E+025
+  4.675697603496702E+025
+  3.730682644118401E+025
+  2.979785823728859E+025
+  2.387122788791288E+025
+  1.921204276096346E+025
+  1.555577678551577E+025
+  1.268651020935582E+025
+  1.043142672347579E+025
+  8.654084419532515E+024
+  7.247775621261002E+024
+  6.129581987969802E+024
+  5.235336789919733E+024
+  4.515501053124218E+024
+  3.931864676789718E+024
+  3.454948974851673E+024
+  3.061984176446705E+024
+  2.735347169473448E+024
+  2.461361779985339E+024
+  2.229381427801015E+024
+  2.031090009391268E+024
+  1.859970601497213E+024
+  1.710902946628782E+024
+  1.579859852688283E+024
+  1.463679939349851E+024
+  1.359900021221389E+024
+  1.266635348341656E+024
+  1.182500543094236E+024
+  1.106569143678346E+024
+  1.038376208547301E+024
+  9.779779042902572E+023
+  9.260965099073777E+023
+  8.844018782164828E+023
+  8.560153082938816E+023
+  8.463743671106613E+023
+  8.646734626444448E+023
+  9.261999613455479E+023
+  1.056019752167398E+024
+  1.294617814999019E+024
+  1.706232174794753E+024
+  2.390652493117457E+024
+  3.499035027220040E+024
+  5.253562438023305E+024
+  7.969187489344095E+024
+  1.207280756814490E+025
+  1.811065107053581E+025
+  2.672841545881820E+025
+  3.860167419570545E+025
+  5.428884151294077E+025
+  7.400835791188715E+025
+  9.748416033104701E+025
+  1.239578515963997E+026
+  1.522749782047821E+026
+  1.810412497470366E+026
+  2.088251569178159E+026
+  2.343552675336884E+026
+  2.566684604460322E+026
+  2.751861299348150E+026
+  2.897184218251041E+026
+  3.004131978924616E+026
+  3.076732605608280E+026
+  3.120638136885899E+026
+  3.142259399368716E+026
+  3.148047593561365E+026
+  3.143952711116630E+026
+  3.135054760824876E+026
+  3.125349198203880E+026
+  3.117664919426161E+026
+  3.113694031885976E+026
+  3.114112546880399E+026
+  3.118768744897401E+026
+  3.126912451244943E+026
+  3.137436255983242E+026
+  3.149100962304180E+026
+  3.160722981540069E+026
+  3.171309953592834E+026
+  3.180140309412683E+026
+  3.186790660554651E+026
+  3.191120814945532E+026
+  3.193229798152602E+026
+  3.193397031866673E+026
+  3.192019979809658E+026
+  3.189554740988301E+026
+  3.186463715428321E+026
+  3.183174713118726E+026
+  3.180053262933221E+026
+  3.177387004094301E+026
+  2.880554837078820E+026
+  2.880812622452267E+026
+  2.881202162277395E+026
+  2.881710646736617E+026
+  2.882298012154059E+026
+  2.882890642934970E+026
+  2.883379141843159E+026
+  2.883621469920686E+026
+  2.883452123959067E+026
+  2.882698395625085E+026
+  2.881203425590210E+026
+  2.878854296121866E+026
+  2.875612534486686E+026
+  2.871543322884174E+026
+  2.866838505843512E+026
+  2.861827726197591E+026
+  2.856971967347176E+026
+  2.852834496748492E+026
+  2.850025812112520E+026
+  2.849121790076424E+026
+  2.850557718866098E+026
+  2.854504864625012E+026
+  2.860740062698172E+026
+  2.868521874156749E+026
+  2.876488583472444E+026
+  2.882593545588156E+026
+  2.884092356715737E+026
+  2.877594596044344E+026
+  2.859191034387488E+026
+  2.824665262693504E+026
+  2.769795656413276E+026
+  2.690747328057714E+026
+  2.584541565166445E+026
+  2.449570291608403E+026
+  2.286095852660484E+026
+  2.096646745813977E+026
+  1.886198558714495E+026
+  1.662032265751937E+026
+  1.433204046894391E+026
+  1.209645420122340E+026
+  1.001024377202142E+026
+  8.152580661027222E+025
+  6.564662074248754E+025
+  5.247355095255622E+025
+  4.177378745335393E+025
+  3.321123279099335E+025
+  2.642898429851444E+025
+  2.109311019485349E+025
+  1.691203643913612E+025
+  1.364183700495805E+025
+  1.108414189611585E+025
+  9.080729261935038E+024
+  7.507094213654008E+024
+  6.266180197211443E+024
+  5.282809349673539E+024
+  4.498989243085691E+024
+  3.870088686207809E+024
+  3.361790898184255E+024
+  2.947703383011542E+024
+  2.607503343412771E+024
+  2.325509882581342E+024
+  2.089591032110686E+024
+  1.890330586142047E+024
+  1.720394992803379E+024
+  1.574053549512357E+024
+  1.446815825916475E+024
+  1.335158804975636E+024
+  1.236323020412308E+024
+  1.148162389251594E+024
+  1.069036972026350E+024
+  9.977421012045169E+023
+  9.334718894120355E+023
+  8.758209774607270E+023
+  8.248368053643973E+023
+  7.811475842505924E+023
+  7.462112579478166E+023
+  7.227618742411492E+023
+  7.155768376243539E+023
+  7.327570750208261E+023
+  7.878071213558211E+023
+  9.029245270884995E+023
+  1.114048418010256E+024
+  1.478344176295849E+024
+  2.084843630748736E+024
+  3.068781633365570E+024
+  4.629542990408893E+024
+  7.050725790734188E+024
+  1.071822988846623E+025
+  1.612813033559746E+025
+  2.387035229386818E+025
+  3.456758609056214E+025
+  4.874376398953238E+025
+  6.662233385427616E+025
+  8.798294141692631E+025
+  1.121662747761023E+026
+  1.381456490044808E+026
+  1.646630680085407E+026
+  1.904098925627725E+026
+  2.142060317197079E+026
+  2.351377382905298E+026
+  2.526321015784740E+026
+  2.664669105928407E+026
+  2.767298421675006E+026
+  2.837475986636742E+026
+  2.880047002165822E+026
+  2.900663615419377E+026
+  2.905135786972382E+026
+  2.898934133352391E+026
+  2.886843013885447E+026
+  2.872748180039342E+026
+  2.859540244240860E+026
+  2.849116180688209E+026
+  2.842461515339571E+026
+  2.839794228381131E+026
+  2.840748496162992E+026
+  2.844574263471946E+026
+  2.850329180774735E+026
+  2.857043451547972E+026
+  2.863844880463196E+026
+  2.870039102049560E+026
+  2.875146830756014E+026
+  2.878905156907377E+026
+  2.881243273370898E+026
+  2.882244023978853E+026
+  2.882100516811180E+026
+  2.881073122008789E+026
+  2.879450355957391E+026
+  2.877517495445487E+026
+  2.875534474474084E+026
+  2.873722119452607E+026
+  2.363902062869760E+026
+  2.364134150858269E+026
+  2.364441304495403E+026
+  2.364805578028613E+026
+  2.365189860354203E+026
+  2.365533523192961E+026
+  2.365750862982176E+026
+  2.365733196427565E+026
+  2.365355001413578E+026
+  2.364484883400781E+026
+  2.363001166096566E+026
+  2.360810843846961E+026
+  2.357870075092389E+026
+  2.354203662976047E+026
+  2.349920112049157E+026
+  2.345218316811629E+026
+  2.340381912480651E+026
+  2.335757826312372E+026
+  2.331716689649075E+026
+  2.328594589593688E+026
+  2.326618087778853E+026
+  2.325817235986650E+026
+  2.325934045647460E+026
+  2.326336057173694E+026
+  2.325945945700417E+026
+  2.323198361688402E+026
+  2.316034600031618E+026
+  2.301944603978321E+026
+  2.278064597236204E+026
+  2.241337242179408E+026
+  2.188738824890220E+026
+  2.117572950067518E+026
+  2.025820658048878E+026
+  1.912521481028618E+026
+  1.778139358897945E+026
+  1.624845392202651E+026
+  1.456634338972102E+026
+  1.279195478352674E+026
+  1.099491761433854E+026
+  9.250659691851387E+025
+  7.631766307373127E+025
+  6.196810917788973E+025
+  4.975075831016477E+025
+  3.965162018049929E+025
+  3.147576738587264E+025
+  2.495341910528922E+025
+  1.980259214997439E+025
+  1.576185209326741E+025
+  1.260439106704742E+025
+  1.014142560572885E+025
+  8.220085852311667E+024
+  6.718900896938355E+024
+  5.542612103717299E+024
+  4.617196364945918E+024
+  3.885486793182479E+024
+  3.303508004522081E+024
+  2.837506276887425E+024
+  2.461594206439563E+024
+  2.155910377837934E+024
+  1.905196475650686E+024
+  1.697705397171199E+024
+  1.524367916092131E+024
+  1.378159189770379E+024
+  1.253618608329238E+024
+  1.146486765459318E+024
+  1.053431712910882E+024
+  9.718433442819187E+023
+  8.996800216875829E+023
+  8.353557447645448E+023
+  7.776596424619290E+023
+  7.257027757921858E+023
+  6.788906980306743E+023
+  6.369246187863073E+023
+  5.998403383116284E+023
+  5.681037898915766E+023
+  5.427971282129814E+023
+  5.259527232228850E+023
+  5.211279177989303E+023
+  5.343653248709513E+023
+  5.757557181300041E+023
+  6.619143805730194E+023
+  8.197906778346120E+023
+  1.092331869944363E+024
+  1.546562860958753E+024
+  2.284521572142186E+024
+  3.457032504479775E+024
+  5.279253740708724E+024
+  8.044976678480533E+024
+  1.213350005053096E+025
+  1.799847730188462E+025
+  2.612298417603119E+025
+  3.692087261938416E+025
+  5.058369922051184E+025
+  6.696992526873387E+025
+  8.560498887962795E+025
+  1.057314790902776E+026
+  1.264085711918590E+026
+  1.466466011377039E+026
+  1.655423758191635E+026
+  1.823848974971685E+026
+  1.967143562784391E+026
+  2.083326413523630E+026
+  2.172752826504723E+026
+  2.237600404674289E+026
+  2.281269456640151E+026
+  2.307808059508269E+026
+  2.321425147526592E+026
+  2.326116060018344E+026
+  2.325400449733912E+026
+  2.322161138470957E+026
+  2.318569597506610E+026
+  2.316084178319440E+026
+  2.315507612025501E+026
+  2.317089358492146E+026
+  2.320656592999481E+026
+  2.325756356716096E+026
+  2.331792016563856E+026
+  2.338140228380623E+026
+  2.344239523632441E+026
+  2.349647132524537E+026
+  2.354065464620378E+026
+  2.357343276046164E+026
+  2.359458951833754E+026
+  2.360494095426053E+026
+  2.360603995315541E+026
+  2.359988533528233E+026
+  2.358865819117929E+026
+  2.357451290443443E+026
+  2.355943280554313E+026
+  2.354514094467271E+026
+  2.631503548204197E+026
+  2.631765405816239E+026
+  2.632112649387129E+026
+  2.632524966322161E+026
+  2.632960244706511E+026
+  2.633349889124632E+026
+  2.633597468437918E+026
+  2.633581682344849E+026
+  2.633164085039418E+026
+  2.632202414426142E+026
+  2.630569247185157E+026
+  2.628174461972638E+026
+  2.624989320770434E+026
+  2.621069126292158E+026
+  2.616570432662315E+026
+  2.611758182887414E+026
+  2.606998140887746E+026
+  2.602730615761831E+026
+  2.599422830493634E+026
+  2.597499451229850E+026
+  2.597253677607705E+026
+  2.598744569190378E+026
+  2.601689441144130E+026
+  2.605362659835830E+026
+  2.608513589091861E+026
+  2.609316639655843E+026
+  2.605365564987522E+026
+  2.593722795027296E+026
+  2.571033143692442E+026
+  2.533709622231869E+026
+  2.478196408521419E+026
+  2.401308392695947E+026
+  2.300635881980068E+026
+  2.174985471166349E+026
+  2.024804408593636E+026
+  1.852510394728988E+026
+  1.662631090367886E+026
+  1.461661434416394E+026
+  1.257584719898885E+026
+  1.059077676895762E+026
+  8.745166419052436E+025
+  7.106902702003346E+025
+  5.710370941140209E+025
+  4.554730259455378E+025
+  3.618264693099896E+025
+  2.870526739335290E+025
+  2.279534049575974E+025
+  1.815550197536522E+025
+  1.452725835346828E+025
+  1.169511904299704E+025
+  9.484363286642667E+024
+  7.756002963270324E+024
+  6.400934608966195E+024
+  5.334300941741052E+024
+  4.490514485925900E+024
+  3.819084363272776E+024
+  3.281228773126605E+024
+  2.847184724036983E+024
+  2.494103553625486E+024
+  2.204422132634891E+024
+  1.964611819757839E+024
+  1.764222861405824E+024
+  1.595157407935559E+024
+  1.451118125083038E+024
+  1.327191045589532E+024
+  1.219530838972260E+024
+  1.125124292957896E+024
+  1.041613812360540E+024
+  9.671675257212543E+023
+  9.003865752759154E+023
+  8.402438447024803E+023
+  7.860523521121566E+023
+  7.374665965893470E+023
+  6.945274198187638E+023
+  6.577720750464647E+023
+  6.284485689167625E+023
+  6.089002753998243E+023
+  6.032276138860073E+023
+  6.183931878900043E+023
+  6.660196574486890E+023
+  7.652369895666377E+023
+  9.470600014148627E+023
+  1.260891859147335E+024
+  1.783793291106930E+024
+  2.633013076888589E+024
+  3.981744860217319E+024
+  6.076866420326367E+024
+  9.255167221619047E+024
+  1.395094747857016E+025
+  2.068281472443890E+025
+  3.000164028498674E+025
+  4.237693628047165E+025
+  5.802111638091294E+025
+  7.676288263020444E+025
+  9.804833708973604E+025
+  1.209998293509424E+026
+  1.445313245546061E+026
+  1.675037838604579E+026
+  1.888808741114749E+026
+  2.078501762143061E+026
+  2.238903351199604E+026
+  2.367823454085075E+026
+  2.465765466002084E+026
+  2.535329296382770E+026
+  2.580517981761023E+026
+  2.606074148069848E+026
+  2.616918564045048E+026
+  2.617718296136240E+026
+  2.612583982735154E+026
+  2.604883014308915E+026
+  2.597152305052984E+026
+  2.591095004155602E+026
+  2.587645973027265E+026
+  2.587089695005454E+026
+  2.589212070707484E+026
+  2.593465927847308E+026
+  2.599130631908872E+026
+  2.605449584458079E+026
+  2.611735029156411E+026
+  2.617435957665653E+026
+  2.622170565972538E+026
+  2.625729001703171E+026
+  2.628054978929738E+026
+  2.629215721800496E+026
+  2.629367860993831E+026
+  2.628723535541187E+026
+  2.627519486442567E+026
+  2.625992359478814E+026
+  2.624361427258586E+026
+  2.622817742610050E+026
+  2.586566860341623E+026
+  2.586843718971580E+026
+  2.587195609290472E+026
+  2.587599446475241E+026
+  2.588011458086568E+026
+  2.588363015829935E+026
+  2.588559688237223E+026
+  2.588484435334662E+026
+  2.588005328669571E+026
+  2.586988582231505E+026
+  2.585316580753205E+026
+  2.582909400969683E+026
+  2.579747687691314E+026
+  2.575893933751899E+026
+  2.571508278635987E+026
+  2.566854380063108E+026
+  2.562290934118562E+026
+  2.558245053102478E+026
+  2.555165040281651E+026
+  2.553452207283903E+026
+  2.553374172839487E+026
+  2.554965237559030E+026
+  2.557922457791406E+026
+  2.561508420326649E+026
+  2.564473053377124E+026
+  2.565006970954645E+026
+  2.560738045779275E+026
+  2.548781597906435E+026
+  2.525853192204558E+026
+  2.488451500591507E+026
+  2.433116076926879E+026
+  2.356759373525082E+026
+  2.257061694110631E+026
+  2.132900563879943E+026
+  1.984762877042368E+026
+  1.815063483188874E+026
+  1.628276845880407E+026
+  1.430792464761351E+026
+  1.230442067179144E+026
+  1.035719359126488E+026
+  8.548076229673524E+025
+  6.943231961558659E+025
+  5.575979609519432E+025
+  4.445182823640936E+025
+  3.529330720584390E+025
+  2.798429532474671E+025
+  2.221040193174446E+025
+  1.767967940894067E+025
+  1.413857259868680E+025
+  1.137586342461231E+025
+  9.220405568662195E+024
+  7.536134436241053E+024
+  6.216300554375224E+024
+  5.177921436985112E+024
+  4.356891515253573E+024
+  3.703885363294624E+024
+  3.181034890506744E+024
+  2.759292290368481E+024
+  2.416368471518623E+024
+  2.135138389766759E+024
+  1.902416876625354E+024
+  1.708024043670388E+024
+  1.544074622016891E+024
+  1.404439200205214E+024
+  1.284336802257597E+024
+  1.180027616700284E+024
+  1.088582164844143E+024
+  1.007709094913334E+024
+  9.356284785228680E+023
+  8.709813885092760E+023
+  8.127701349073544E+023
+  7.603274156535551E+023
+  7.133175749099177E+023
+  6.717802517028123E+023
+  6.362375498513602E+023
+  6.079027953174642E+023
+  5.890552112409874E+023
+  5.836846410861675E+023
+  5.985686454819202E+023
+  6.450252914546894E+023
+  7.416900221053536E+023
+  9.187868596287009E+023
+  1.224477247634194E+024
+  1.733914612252359E+024
+  2.561494508104525E+024
+  3.876275549175652E+024
+  5.919369241012706E+024
+  9.019900903890923E+024
+  1.360260226088954E+025
+  2.017514221536005E+025
+  2.927754239056247E+025
+  4.137137489053177E+025
+  5.666804445600759E+025
+  7.500463799879985E+025
+  9.584423329470552E+025
+  1.183325467971004E+026
+  1.414099236082825E+026
+  1.639627329999044E+026
+  1.849755005940667E+026
+  2.036497171961452E+026
+  2.194700845004390E+026
+  2.322162627898261E+026
+  2.419312819668185E+026
+  2.488637251414316E+026
+  2.534003115628427E+026
+  2.560012375059690E+026
+  2.571453707372664E+026
+  2.572880228175293E+026
+  2.568312775810627E+026
+  2.561055981592036E+026
+  2.553611242811071E+026
+  2.547671350687185E+026
+  2.544182034055299E+026
+  2.543454611491288E+026
+  2.545311835898461E+026
+  2.549247445560554E+026
+  2.554580453216911E+026
+  2.560588464404551E+026
+  2.566609737500278E+026
+  2.572109833715748E+026
+  2.576714149150257E+026
+  2.580211755596355E+026
+  2.582538744594162E+026
+  2.583750181417024E+026
+  2.583988027594875E+026
+  2.583449105040013E+026
+  2.582355755471253E+026
+  2.580932317148930E+026
+  2.579388596667179E+026
+  2.577909364801514E+026
+  2.925683902276072E+026
+  2.925928919805093E+026
+  2.926317349596442E+026
+  2.926839317927829E+026
+  2.927456505657099E+026
+  2.928095313219575E+026
+  2.928644202191773E+026
+  2.928956586431010E+026
+  2.928860001715464E+026
+  2.928172661790840E+026
+  2.926727146726956E+026
+  2.924399455763754E+026
+  2.921140747714732E+026
+  2.917007972913231E+026
+  2.912188347845542E+026
+  2.907011821073899E+026
+  2.901945598239574E+026
+  2.897565505550015E+026
+  2.894500600192894E+026
+  2.893350090769114E+026
+  2.894575204086765E+026
+  2.898372722335741E+026
+  2.904540887855866E+026
+  2.912351543490477E+026
+  2.920444202208309E+026
+  2.926758015378286E+026
+  2.928516569300444E+026
+  2.922278668280946E+026
+  2.904066347730739E+026
+  2.869579349656487E+026
+  2.814502181192488E+026
+  2.734903501698122E+026
+  2.627715224632130E+026
+  2.491258400575895E+026
+  2.325755161022885E+026
+  2.133735639477506E+026
+  1.920226796931195E+026
+  1.692612728149642E+026
+  1.460098558953649E+026
+  1.232796168853758E+026
+  1.020564181234932E+026
+  8.314901867255740E+025
+  6.697995714263145E+025
+  5.356084785727436E+025
+  4.265687172815412E+025
+  3.392745907558914E+025
+  2.701034527027679E+025
+  2.156624877210232E+025
+  1.729871569358065E+025
+  1.395959623101198E+025
+  1.134698527135936E+025
+  9.299768445627952E+024
+  7.691110914371954E+024
+  6.422099724867597E+024
+  5.416089044171524E+024
+  4.613931467425343E+024
+  3.970089920444603E+024
+  3.449538259693575E+024
+  3.025328734531784E+024
+  2.676703654687307E+024
+  2.387641007289569E+024
+  2.145740697416343E+024
+  1.941375221001851E+024
+  1.767044049714315E+024
+  1.616884187964729E+024
+  1.486300201189433E+024
+  1.371685717530638E+024
+  1.270215305117920E+024
+  1.179691140860505E+024
+  1.098433502069173E+024
+  1.025208400355728E+024
+  9.591903407424572E+023
+  8.999641611547729E+023
+  8.475785131197076E+023
+  8.026767200764807E+023
+  7.667512960671687E+023
+  7.426002039987734E+023
+  7.351109703345452E+023
+  7.525687312629219E+023
+  8.087811281797522E+023
+  9.264376441061987E+023
+  1.142263775084767E+024
+  1.514659227452429E+024
+  2.134551039597056E+024
+  3.140008023790557E+024
+  4.734520228413467E+024
+  7.207407570214989E+024
+  1.095217056575463E+025
+  1.647436698611098E+025
+  2.437475305294151E+025
+  3.528674786434388E+025
+  4.974211138456749E+025
+  6.796523416393508E+025
+  8.972739093363990E+025
+  1.143524006824228E+026
+  1.407904095556540E+026
+  1.677573128707216E+026
+  1.939193757900908E+026
+  2.180759637267667E+026
+  2.392997015803636E+026
+  2.570118441857907E+026
+  2.709916627118802E+026
+  2.813342132406534E+026
+  2.883776015188181E+026
+  2.926198625056179E+026
+  2.946401536639792E+026
+  2.950325142142553E+026
+  2.943552038744890E+026
+  2.930954214017363E+026
+  2.916477912858730E+026
+  2.903047012438220E+026
+  2.892566711554832E+026
+  2.886009752289158E+026
+  2.883565664701714E+026
+  2.884830523792809E+026
+  2.889012517760767E+026
+  2.895129212780336E+026
+  2.902176556545152E+026
+  2.909256628163929E+026
+  2.915659070694016E+026
+  2.920898212808532E+026
+  2.924713214714292E+026
+  2.927041999969189E+026
+  2.927980725141636E+026
+  2.927738309265630E+026
+  2.926591523292285E+026
+  2.924844263963845E+026
+  2.922794950242902E+026
+  2.920713632972323E+026
+  2.918827862135580E+026
+  1.210055639617459E+026
+  1.210222153113867E+026
+  1.210385773645181E+026
+  1.210525736705106E+026
+  1.210614931734354E+026
+  1.210619227339985E+026
+  1.210497918881884E+026
+  1.210205512422943E+026
+  1.209694834608592E+026
+  1.208921706408388E+026
+  1.207850991248969E+026
+  1.206463382612249E+026
+  1.204762129675448E+026
+  1.202778656022104E+026
+  1.200575718831775E+026
+  1.198246598200197E+026
+  1.195908874018747E+026
+  1.193691632152168E+026
+  1.191715461640985E+026
+  1.190065387282696E+026
+  1.188757892020400E+026
+  1.187704299998203E+026
+  1.186673837542755E+026
+  1.185260488490665E+026
+  1.182858190405999E+026
+  1.178648957751729E+026
+  1.171608259636831E+026
+  1.160531586263234E+026
+  1.144085724460382E+026
+  1.120887726019238E+026
+  1.089613435852310E+026
+  1.049134958944563E+026
+  9.986817232296590E+025
+  9.380123767005818E+025
+  8.675751304950446E+025
+  7.886243324562435E+025
+  7.032549892889892E+025
+  6.143201314296748E+025
+  5.252129767332908E+025
+  4.395270222991887E+025
+  3.606460787535871E+025
+  2.912268022440029E+025
+  2.325019869284466E+025
+  1.842496531776626E+025
+  1.454112626424238E+025
+  1.146017363269595E+025
+  9.040575242658632E+024
+  7.152886556372924E+024
+  5.685916415730918E+024
+  4.547859708805807E+024
+  3.664897972347160E+024
+  2.978749826372256E+024
+  2.443984031795572E+024
+  2.025498520843408E+024
+  1.696333677758227E+024
+  1.435861831493847E+024
+  1.228332697097439E+024
+  1.061728374824039E+024
+  9.268747002947919E+023
+  8.167584086118027E+023
+  7.260061745387499E+023
+  6.504891834132040E+023
+  5.870240850978898E+023
+  5.331474428635718E+023
+  4.869459831453843E+023
+  4.469291363462288E+023
+  4.119336627006724E+023
+  3.810527395320792E+023
+  3.535839211480871E+023
+  3.289920574520782E+023
+  3.068847792302694E+023
+  2.869997730762926E+023
+  2.692050980251633E+023
+  2.535166920333113E+023
+  2.401416430579987E+023
+  2.295627249144200E+023
+  2.226904841862431E+023
+  2.211256068597271E+023
+  2.275985229127672E+023
+  2.466872766526629E+023
+  2.859595274062671E+023
+  3.577377551953884E+023
+  4.817385773889492E+023
+  6.888638575005019E+023
+  1.026376097745093E+024
+  1.564492554614524E+024
+  2.403959185729635E+024
+  3.683259440036536E+024
+  5.582620055171473E+024
+  8.319840258775379E+024
+  1.213040896001041E+025
+  1.722215511705833E+025
+  2.370330786448254E+025
+  3.152849595934426E+025
+  4.049535379219620E+025
+  5.026428995681149E+025
+  6.040185845712797E+025
+  7.044196036358637E+025
+  7.994919307173466E+025
+  8.857000704319324E+025
+  9.606306524944462E+025
+  1.023072523789334E+026
+  1.072913480445151E+026
+  1.110921183999030E+026
+  1.138476554159769E+026
+  1.157312101115502E+026
+  1.169286573814886E+026
+  1.176209010069530E+026
+  1.179713257271514E+026
+  1.181178135668380E+026
+  1.181686648089654E+026
+  1.182017737089619E+026
+  1.182664421353128E+026
+  1.183871994267143E+026
+  1.185689417657615E+026
+  1.188026622051555E+026
+  1.190710699261610E+026
+  1.193535201117721E+026
+  1.196298734721940E+026
+  1.198831238309266E+026
+  1.201008238975213E+026
+  1.202754871870778E+026
+  1.204042510644046E+026
+  1.204881280747775E+026
+  1.205311061214642E+026
+  1.205392259789401E+026
+  1.205197175614518E+026
+  1.204803115982970E+026
+  1.204287619144740E+026
+  1.203725215992025E+026
+  1.937052275004285E+026
+  1.937301352538225E+026
+  1.937567608455578E+026
+  1.937823152328635E+026
+  1.938027943667613E+026
+  1.938128060786661E+026
+  1.938056040440244E+026
+  1.937733759812895E+026
+  1.937077951015741E+026
+  1.936008793373508E+026
+  1.934461285198399E+026
+  1.932398308380593E+026
+  1.929823947420952E+026
+  1.926795147943152E+026
+  1.923429228303825E+026
+  1.919904446304130E+026
+  1.916450907071550E+026
+  1.913329578352303E+026
+  1.910798097977209E+026
+  1.909063462419852E+026
+  1.908223510725699E+026
+  1.908201147370658E+026
+  1.908677160826009E+026
+  1.909028963425426E+026
+  1.908283368302284E+026
+  1.905091576420496E+026
+  1.897734029316681E+026
+  1.884161991880550E+026
+  1.862081905070986E+026
+  1.829087574545583E+026
+  1.782843413255239E+026
+  1.721317908838221E+026
+  1.643058735333734E+026
+  1.547488578538142E+026
+  1.435184469770700E+026
+  1.308086472067617E+026
+  1.169570560532194E+026
+  1.024324834112238E+026
+  8.779959513190117E+025
+  7.366247813270400E+025
+  6.059563631942630E+025
+  4.905604409523812E+025
+  3.926400954177093E+025
+  3.119528720894708E+025
+  2.468323113384199E+025
+  1.950393173610107E+025
+  1.542608762952239E+025
+  1.223675972321240E+025
+  9.752162648791158E+024
+  7.819968120925098E+024
+  6.317283972122045E+024
+  5.146792469983621E+024
+  4.232421766567380E+024
+  3.515241222739381E+024
+  2.949876528050584E+024
+  2.501526499562732E+024
+  2.143556540222229E+024
+  1.855597590728230E+024
+  1.622066077433400E+024
+  1.431023385842324E+024
+  1.273303396365248E+024
+  1.141848598185693E+024
+  1.031206843405886E+024
+  9.371509446644760E+023
+  8.563917939612740E+023
+  7.863625455905334E+023
+  7.250568516699127E+023
+  6.709084118560742E+023
+  6.227024791210842E+023
+  5.795127585789332E+023
+  5.406596917427486E+023
+  5.056888487160051E+023
+  4.743715991374342E+023
+  4.467351672463491E+023
+  4.231367219593487E+023
+  4.044079464416734E+023
+  3.921148660761217E+023
+  3.890055917242642E+023
+  3.997595800127516E+023
+  4.322093346135962E+023
+  4.992804531531863E+023
+  6.219840547228165E+023
+  8.338797584871778E+023
+  1.187466713489011E+024
+  1.762874786836071E+024
+  2.678881393745468E+024
+  4.105467089131878E+024
+  6.275585327429921E+024
+  9.491311520330718E+024
+  1.411597961660182E+025
+  2.053970402251510E+025
+  2.910214238475068E+025
+  3.997120994598407E+025
+  5.305346456890807E+025
+  6.799090448872295E+025
+  8.419715469267482E+025
+  1.009331708348624E+026
+  1.174120746017704E+026
+  1.329063013277596E+026
+  1.468329232317228E+026
+  1.588030216162938E+026
+  1.686330161761332E+026
+  1.763251922184317E+026
+  1.820291113673082E+026
+  1.859955196883975E+026
+  1.885315502782729E+026
+  1.899623917616791E+026
+  1.906015079727035E+026
+  1.907295054281470E+026
+  1.905807984726661E+026
+  1.903369600710641E+026
+  1.901256773395427E+026
+  1.900242799248422E+026
+  1.900667629341778E+026
+  1.902531078781408E+026
+  1.905596140305278E+026
+  1.909489909309545E+026
+  1.913791759253618E+026
+  1.918101922214027E+026
+  1.922087586189131E+026
+  1.925507118330402E+026
+  1.928215712345104E+026
+  1.930157642248140E+026
+  1.931351001252054E+026
+  1.931869651327580E+026
+  1.931824861130518E+026
+  1.931348233049914E+026
+  1.930577995281621E+026
+  1.929649366085897E+026
+  1.928688167594362E+026
+  1.058635638780049E+026
+  1.058791414220504E+026
+  1.058935587567048E+026
+  1.059047430698480E+026
+  1.059101394948863E+026
+  1.059066865407567E+026
+  1.058908842476689E+026
+  1.058589688841376E+026
+  1.058071886779213E+026
+  1.057321978531278E+026
+  1.056315502684206E+026
+  1.055042368000950E+026
+  1.053511983901650E+026
+  1.051757280654705E+026
+  1.049836510238231E+026
+  1.047831605097755E+026
+  1.045841949859698E+026
+  1.043972678259834E+026
+  1.042317055894935E+026
+  1.040933168737723E+026
+  1.039815976072567E+026
+  1.038866701990019E+026
+  1.037862385353751E+026
+  1.036429040720432E+026
+  1.034022208216586E+026
+  1.029918680052014E+026
+  1.023222969701843E+026
+  1.012891774039632E+026
+  9.977793564619588E+025
+  9.767063453884420E+025
+  9.485534885301262E+025
+  9.123797416633268E+025
+  8.675599692525448E+025
+  8.139311228878460E+025
+  7.519275042485955E+025
+  6.826773797200026E+025
+  6.080282210545801E+025
+  5.304708859511901E+025
+  4.529480208767039E+025
+  3.785589123382257E+025
+  3.102062949894106E+025
+  2.501532848567006E+025
+  1.994294039618783E+025
+  1.578113925676656E+025
+  1.243600122070271E+025
+  9.786068750102341E+024
+  7.707850478603674E+024
+  6.088748830938135E+024
+  4.832264510113100E+024
+  3.858873000196691E+024
+  3.104736990743028E+024
+  2.519532930355726E+024
+  2.064089959593902E+024
+  1.708185531338838E+024
+  1.428639445754722E+024
+  1.207739626790236E+024
+  1.031979928976108E+024
+  8.910683059419345E+023
+  7.771582662322404E+023
+  6.842592061027695E+023
+  6.077871661377407E+023
+  5.442242967269475E+023
+  4.908616579057094E+023
+  4.456054682186093E+023
+  4.068314568063961E+023
+  3.732756200213259E+023
+  3.439525571666567E+023
+  3.180948014282372E+023
+  2.951083249706086E+023
+  2.745408445243461E+023
+  2.560608643919924E+023
+  2.394467789554770E+023
+  2.245870913743866E+023
+  2.114952767083758E+023
+  2.003465942217825E+023
+  1.915500651375586E+023
+  1.858780488992257E+023
+  1.846899221192873E+023
+  1.903071399325660E+023
+  2.066262462749713E+023
+  2.400950760921053E+023
+  3.012235391664064E+023
+  4.068458181963762E+023
+  5.833754690076648E+023
+  8.712587161178774E+023
+  1.330664719686644E+024
+  2.048049033434302E+024
+  3.142450888251045E+024
+  4.769100535990255E+024
+  7.116065720893258E+024
+  1.038743538298960E+025
+  1.476457763132521E+025
+  2.034433705268634E+025
+  2.709222415441377E+025
+  3.483875237212744E+025
+  4.329559505919495E+025
+  5.209212265943502E+025
+  6.082754799789560E+025
+  6.912531057562302E+025
+  7.667735849904509E+025
+  8.327081475271885E+025
+  8.879553351979949E+025
+  9.323585485626265E+025
+  9.665227433841940E+025
+  9.915886741799659E+025
+  1.009009909231627E+026
+  1.020359919611284E+026
+  1.027180830960245E+026
+  1.030874997739348E+026
+  1.032635371416049E+026
+  1.033409033576717E+026
+  1.033888329172191E+026
+  1.034524354572309E+026
+  1.035557490762127E+026
+  1.037059260208293E+026
+  1.038979455326271E+026
+  1.041192711360682E+026
+  1.043539699108166E+026
+  1.045859730458777E+026
+  1.048013366522509E+026
+  1.049895192017142E+026
+  1.051438147200279E+026
+  1.052611719639745E+026
+  1.053416675344804E+026
+  1.053878458770850E+026
+  1.054040280832137E+026
+  1.053956541527750E+026
+  1.053687565547215E+026
+  1.053295931144553E+026
+  1.052843880034576E+026
+  1.369516664033059E+026
+  1.369711403187546E+026
+  1.369899328537027E+026
+  1.370055701926735E+026
+  1.370148834989445E+026
+  1.370139512085776E+026
+  1.369981697769984E+026
+  1.369624754811872E+026
+  1.369017141724562E+026
+  1.368111838886565E+026
+  1.366873267777766E+026
+  1.365284963244997E+026
+  1.363357072330624E+026
+  1.361132482579874E+026
+  1.358690041947874E+026
+  1.356143163795800E+026
+  1.353632200080444E+026
+  1.351309302851946E+026
+  1.349315098282099E+026
+  1.347747396428745E+026
+  1.346623310969403E+026
+  1.345837426426504E+026
+  1.345119824659365E+026
+  1.343998667397874E+026
+  1.341772492423236E+026
+  1.337497398450630E+026
+  1.329993978798360E+026
+  1.317878405858128E+026
+  1.299621598838122E+026
+  1.273639807062301E+026
+  1.238418685455425E+026
+  1.192670121799056E+026
+  1.135515711487021E+026
+  1.066682337006007E+026
+  9.866843572031633E+025
+  8.969557383355914E+025
+  7.998885819708267E+025
+  6.987381636579541E+025
+  5.973740651986561E+025
+  4.998924978107706E+025
+  4.101491653448607E+025
+  3.311702582692799E+025
+  2.643601804938113E+025
+  2.094670350706508E+025
+  1.652864439287681E+025
+  1.302421451182047E+025
+  1.027233355578875E+025
+  8.125674678744932E+024
+  6.457686686359038E+024
+  5.163885304919643E+024
+  4.160260940556265E+024
+  3.380490290361950E+024
+  2.772877402699499E+024
+  2.297483576152020E+024
+  1.923637787069220E+024
+  1.627875469850138E+024
+  1.392282595662552E+024
+  1.203192229905285E+024
+  1.050172980418667E+024
+  9.252517853116769E+023
+  8.223210033947806E+023
+  7.366884169768142E+023
+  6.647369544567931E+023
+  6.036680695650441E+023
+  5.513086297755340E+023
+  5.059659317310387E+023
+  4.663192239979231E+023
+  4.313390581319877E+023
+  4.002281061656124E+023
+  3.723789893839646E+023
+  3.473463952092129E+023
+  3.248325959170493E+023
+  3.046877896550243E+023
+  2.869299755862098E+023
+  2.717941053278395E+023
+  2.598281230887181E+023
+  2.520657658961961E+023
+  2.503246861604886E+023
+  2.577060079080381E+023
+  2.794101763364669E+023
+  3.240349738524149E+023
+  4.055821495171896E+023
+  5.464581757573605E+023
+  7.817853022781682E+023
+  1.165287983348463E+024
+  1.776794871260962E+024
+  2.730858546365686E+024
+  4.184964611597043E+024
+  6.344103144466392E+024
+  9.456044354927183E+024
+  1.378874293740758E+025
+  1.957876635485686E+025
+  2.694945092587639E+025
+  3.584940500752899E+025
+  4.604853167587590E+025
+  5.716040935024897E+025
+  6.869155962712218E+025
+  8.011105812256444E+025
+  9.092265512534421E+025
+  1.007230795007402E+026
+  1.092367104459864E+026
+  1.163248218274485E+026
+  1.219739441213838E+026
+  1.262710169253582E+026
+  1.293730994635141E+026
+  1.314776110960234E+026
+  1.327966765013726E+026
+  1.335370686294443E+026
+  1.338858742299803E+026
+  1.340013356118745E+026
+  1.340081221294174E+026
+  1.339962977884298E+026
+  1.340232908867028E+026
+  1.341181556899059E+026
+  1.342873531864496E+026
+  1.345212280313399E+026
+  1.348003867882100E+026
+  1.351013184857010E+026
+  1.354008198925768E+026
+  1.356790351969726E+026
+  1.359211372108061E+026
+  1.361178460407379E+026
+  1.362651040806680E+026
+  1.363632754279012E+026
+  1.364161636792718E+026
+  1.364299937259931E+026
+  1.364124506182886E+026
+  1.363719085291417E+026
+  1.363168905241703E+026
+  1.362556956488746E+026
+  6.281861895163649E+025
+  6.282795696387556E+025
+  6.283641079599959E+025
+  6.284271007306384E+025
+  6.284531855495977E+025
+  6.284242375910292E+025
+  6.283197777556555E+025
+  6.281179621191465E+025
+  6.277971106491372E+025
+  6.273378737819117E+025
+  6.267259297993341E+025
+  6.259548952490554E+025
+  6.250290685179674E+025
+  6.239655261545070E+025
+  6.227949563600728E+025
+  6.215605519851850E+025
+  6.203143318500516E+025
+  6.191104052781205E+025
+  6.179949463563587E+025
+  6.169930134665934E+025
+  6.160928189932985E+025
+  6.152285664924096E+025
+  6.142634462678964E+025
+  6.129747357357448E+025
+  6.110431368515787E+025
+  6.080484953802339E+025
+  6.034739334239260E+025
+  5.967202626387066E+025
+  5.871323753299668E+025
+  5.740390664034211E+025
+  5.568071790396736E+025
+  5.349096927747120E+025
+  5.080049678699592E+025
+  4.760206250675549E+025
+  4.392307615633740E+025
+  3.983104220132625E+025
+  3.543484478187411E+025
+  3.088017179293102E+025
+  2.633825852766013E+025
+  2.198869698777513E+025
+  1.799897742715613E+025
+  1.449892220890181E+025
+  1.154649228861128E+025
+  9.127013255328396E+024
+  7.184531651800777E+024
+  5.647443089977030E+024
+  4.443268649835169E+024
+  3.506103850291314E+024
+  2.779579796138055E+024
+  2.217318695320284E+024
+  1.782143688164648E+024
+  1.444785031400459E+024
+  1.182486448594301E+024
+  9.777095767635898E+023
+  8.170169520838507E+023
+  6.901513607768157E+023
+  5.892989383917306E+023
+  5.085109653210503E+023
+  4.432564194142164E+023
+  3.900790831147043E+023
+  3.463365986531190E+023
+  3.100028738144789E+023
+  2.795189888114601E+023
+  2.536809868047186E+023
+  2.315555958359316E+023
+  2.124170663210047E+023
+  1.956999881635304E+023
+  1.809642599025307E+023
+  1.678694096585039E+023
+  1.561563094830818E+023
+  1.456350851341328E+023
+  1.361788247861213E+023
+  1.277236917386547E+023
+  1.202774717433185E+023
+  1.139407635045711E+023
+  1.089484315313474E+023
+  1.057442622551709E+023
+  1.051098976497616E+023
+  1.083811458074046E+023
+  1.178017502421421E+023
+  1.370871826414472E+023
+  1.722979535836563E+023
+  2.331486641113163E+023
+  3.348940243223706E+023
+  5.009132403350302E+023
+  7.660192921690791E+023
+  1.180288226021321E+024
+  1.812755583892113E+024
+  2.753582291489181E+024
+  4.112216873434840E+024
+  6.007774917040676E+024
+  8.546695482581760E+024
+  1.178694150141636E+025
+  1.571071029551284E+025
+  2.022200544648461E+025
+  2.515564379624401E+025
+  3.029809651568593E+025
+  3.541748112686716E+025
+  4.029500823688251E+025
+  4.475073150829178E+025
+  4.865920428137023E+025
+  5.195411418993423E+025
+  5.462375462926241E+025
+  5.670060771301001E+025
+  5.824840867011822E+025
+  5.934931686651812E+025
+  6.009278942361304E+025
+  6.056684365394627E+025
+  6.085178577942334E+025
+  6.101617670862526E+025
+  6.111470799658907E+025
+  6.118766251535477E+025
+  6.126165337173047E+025
+  6.135133346413809E+025
+  6.146174764519589E+025
+  6.159098332395405E+025
+  6.173279006618660E+025
+  6.187889680762986E+025
+  6.202084731644707E+025
+  6.215127572336506E+025
+  6.226463177163623E+025
+  6.235743382022552E+025
+  6.242817909659938E+025
+  6.247706248039754E+025
+  6.250562333057627E+025
+  6.251637545203793E+025
+  6.251245458670945E+025
+  6.249733856816962E+025
+  6.247465471616775E+025
+  6.244804287578814E+025
+  1.237641324098461E+025
+  1.237819335369917E+025
+  1.237983629021796E+025
+  1.238110319722718E+025
+  1.238169983795520E+025
+  1.238127299866540E+025
+  1.237941720838329E+025
+  1.237569333795928E+025
+  1.236965842798387E+025
+  1.236090884983371E+025
+  1.234913481176476E+025
+  1.233417997579966E+025
+  1.231609862268585E+025
+  1.229520072348937E+025
+  1.227207250318746E+025
+  1.224755874341575E+025
+  1.222269389613194E+025
+  1.219857191463179E+025
+  1.217614968555543E+025
+  1.215598631047286E+025
+  1.213792990838775E+025
+  1.212077395313020E+025
+  1.210191478124919E+025
+  1.207704919133561E+025
+  1.203995493985963E+025
+  1.198239730383136E+025
+  1.189420264869788E+025
+  1.176353661173577E+025
+  1.157742100723564E+025
+  1.132251860346588E+025
+  1.098620379025888E+025
+  1.055791200128433E+025
+  1.003071328732528E+025
+  9.402981567607595E+024
+  8.679936290640552E+024
+  7.874737944184168E+024
+  7.008762446560559E+024
+  6.110715539439669E+024
+  5.214421187905865E+024
+  4.355427659910672E+024
+  3.566956244981359E+024
+  2.874826228159495E+024
+  2.290655672252141E+024
+  1.811675651799454E+024
+  1.426922003001820E+024
+  1.122305368731146E+024
+  8.835386648311609E+023
+  6.976162002917907E+023
+  5.534047111059631E+023
+  4.417378365559977E+023
+  3.552631581734263E+023
+  2.881886876549000E+023
+  2.360088583136846E+023
+  1.952493539594541E+023
+  1.632468450726923E+023
+  1.379672838358970E+023
+  1.178603565951008E+023
+  1.017452060089945E+023
+  8.872194329107631E+022
+  7.810379908661349E+022
+  6.936546193505109E+022
+  6.210393868881467E+022
+  5.600900747903226E+022
+  5.084096970701700E+022
+  4.641393254952220E+022
+  4.258327471867711E+022
+  3.923627974077840E+022
+  3.628517940409279E+022
+  3.366205306530612E+022
+  3.131519503733206E+022
+  2.920671290588890E+022
+  2.731127862973150E+022
+  2.561615323235004E+022
+  2.412288926176236E+022
+  2.285154817858526E+022
+  2.184894774262006E+022
+  2.120351180372538E+022
+  2.107090991575783E+022
+  2.171706022242067E+022
+  2.358843540296353E+022
+  2.742406227334855E+022
+  3.442892591989012E+022
+  4.653374838506466E+022
+  6.676901378413064E+022
+  9.977706525226778E+022
+  1.524671275870810E+023
+  2.347720504188603E+023
+  3.603766176565450E+023
+  5.471396832820950E+023
+  8.167197120289277E+023
+  1.192655704677122E+024
+  1.695927645601666E+024
+  2.337858651456260E+024
+  3.114722950971126E+024
+  4.007297639202325E+024
+  4.982685065042134E+024
+  5.998476815241539E+024
+  7.008719001032935E+024
+  7.970148335031832E+024
+  8.847282144502458E+024
+  9.615496102158361E+024
+  1.026191276622130E+025
+  1.078447577655465E+025
+  1.118986278695524E+025
+  1.149090644671413E+025
+  1.170404317576517E+025
+  1.184710457630887E+025
+  1.193758596952617E+025
+  1.199140632019367E+025
+  1.202211354273961E+025
+  1.204047017665253E+025
+  1.205435477890583E+025
+  1.206891799303268E+025
+  1.208693175278976E+025
+  1.210926577974606E+025
+  1.213542222369037E+025
+  1.216406228461647E+025
+  1.219347039941927E+025
+  1.222192016303399E+025
+  1.224792660034505E+025
+  1.227038717457381E+025
+  1.228862770238006E+025
+  1.230237956414374E+025
+  1.231171875602947E+025
+  1.231699087996013E+025
+  1.231873336240265E+025
+  1.231760200367905E+025
+  1.231431286578141E+025
+  1.230960241518698E+025
+  1.230419973431824E+025
+  1.435695969973597E+025
+  1.435920174445183E+025
+  1.436109155636819E+025
+  1.436230254364354E+025
+  1.436246088612680E+025
+  1.436114749813829E+025
+  1.435790983119618E+025
+  1.435228420948480E+025
+  1.434382701334460E+025
+  1.433215654482013E+025
+  1.431700311111567E+025
+  1.429826055422019E+025
+  1.427603161473018E+025
+  1.425065781185944E+025
+  1.422272196527569E+025
+  1.419301045881722E+025
+  1.416242356619951E+025
+  1.413182531881919E+025
+  1.410182955167065E+025
+  1.407252615861653E+025
+  1.404316089064590E+025
+  1.401179209265241E+025
+  1.397495698422176E+025
+  1.392738693350702E+025
+  1.386181474352772E+025
+  1.376891731168936E+025
+  1.363743515236076E+025
+  1.345450763306486E+025
+  1.320625999030577E+025
+  1.287867338554312E+025
+  1.245875686239708E+025
+  1.193601138061885E+025
+  1.130412246686444E+025
+  1.056273592547959E+025
+  9.719067774427478E+024
+  8.788998621159572E+024
+  7.797247611114775E+024
+  6.776269617810544E+024
+  5.763717147772755E+024
+  4.798651150236694E+024
+  3.917097414546078E+024
+  3.146553946712199E+024
+  2.498697154615352E+024
+  1.969404916585881E+024
+  1.545702812734897E+024
+  1.211381024516311E+024
+  9.502037956122382E+023
+  7.475046812143321E+023
+  5.908002471117907E+023
+  4.698607236975862E+023
+  3.765145450029996E+023
+  3.043487057861778E+023
+  2.483922325638728E+023
+  2.048249154066715E+023
+  1.707278689303071E+023
+  1.438789922051409E+023
+  1.225899396392105E+023
+  1.055786685400244E+023
+  9.187113449387461E+022
+  8.072618736241896E+022
+  7.157858019530865E+022
+  6.399593115851297E+022
+  5.764633317324724E+022
+  5.227403609578174E+022
+  4.768122424064889E+022
+  4.371438871971481E+022
+  4.025416716149682E+022
+  3.720781278052768E+022
+  3.450368110720809E+022
+  3.208730724766421E+022
+  2.991881215158821E+022
+  2.797154960869337E+022
+  2.623212087840055E+022
+  2.470218921036700E+022
+  2.340299280595970E+022
+  2.238418580339590E+022
+  2.173977996009092E+022
+  2.163571182775635E+022
+  2.235616052505915E+022
+  2.437943138191627E+022
+  2.849913875129065E+022
+  3.601237243267106E+022
+  4.900255888841226E+022
+  7.074839610344196E+022
+  1.062866001344663E+023
+  1.631365395129082E+023
+  2.521456906096944E+023
+  3.883184393002646E+023
+  5.913288086410350E+023
+  8.851813972871788E+023
+  1.296193921772313E+024
+  1.848208759598614E+024
+  2.554831416508378E+024
+  3.413412238446290E+024
+  4.404340138340507E+024
+  5.492791387740262E+024
+  6.633063721411684E+024
+  7.774960753204942E+024
+  8.870585157595961E+024
+  9.879987286576947E+024
+  1.077468886433183E+025
+  1.153884286350260E+025
+  1.216839881913032E+025
+  1.266896227276829E+025
+  1.305307182092444E+025
+  1.333746634592805E+025
+  1.354069690459655E+025
+  1.368124068646826E+025
+  1.377613980270518E+025
+  1.384011778437805E+025
+  1.388510291204751E+025
+  1.392008674752216E+025
+  1.395125083926183E+025
+  1.398229584254160E+025
+  1.401490469263164E+025
+  1.404926940692963E+025
+  1.408461486293761E+025
+  1.411966505214372E+025
+  1.415301594296258E+025
+  1.418339916702583E+025
+  1.420983789314724E+025
+  1.423170969211157E+025
+  1.424874179724667E+025
+  1.426096897975704E+025
+  1.426867755960709E+025
+  1.427234525055852E+025
+  1.427258266231090E+025
+  1.427008765579519E+025
+  1.426561491392426E+025
+  1.425995288893177E+025
+  5.355254087005873E+025
+  5.355983788208083E+025
+  5.356695322877854E+025
+  5.357296519109261E+025
+  5.357667809852943E+025
+  5.357659193016747E+025
+  5.357091959685867E+025
+  5.355766094964436E+025
+  5.353473281883864E+025
+  5.350016571431158E+025
+  5.345235931515968E+025
+  5.339036959336581E+025
+  5.331419350481113E+025
+  5.322500683946091E+025
+  5.312529752323829E+025
+  5.301882978724847E+025
+  5.291037744582741E+025
+  5.280517659183717E+025
+  5.270807013629965E+025
+  5.262235001354659E+025
+  5.254834610884775E+025
+  5.248185889834329E+025
+  5.241257788514999E+025
+  5.232266258956620E+025
+  5.218568188435111E+025
+  5.196610990469276E+025
+  5.161956650622921E+025
+  5.109397414032793E+025
+  5.033178574716974E+025
+  4.927341505480578E+025
+  4.786195142802657E+025
+  4.604913173386413E+025
+  4.380233440413776E+025
+  4.111203646392344E+025
+  3.799875485224794E+025
+  3.451806700296139E+025
+  3.076204523600386E+025
+  2.685558327031276E+025
+  2.294684170363837E+025
+  1.919239992413287E+025
+  1.573939360227599E+025
+  1.270300425918899E+025
+  1.013617755324865E+025
+  8.028421784824411E+024
+  6.332874148701318E+024
+  4.988578812469711E+024
+  3.933403586105211E+024
+  3.110607919880745E+024
+  2.471505157317541E+024
+  1.975931856782588E+024
+  1.591617247291046E+024
+  1.293099429231851E+024
+  1.060542241440499E+024
+  8.786278716123069E+023
+  7.355977750612903E+023
+  6.224595007277213E+023
+  5.323500371717095E+023
+  4.600350372602847E+023
+  4.015204234952153E+023
+  3.537541289246880E+023
+  3.143986717673024E+023
+  2.816586195921502E+023
+  2.541501703055283E+023
+  2.308028292064120E+023
+  2.107854413348055E+023
+  1.934506727780471E+023
+  1.782934816089884E+023
+  1.649202491548340E+023
+  1.530261320346022E+023
+  1.423789270036880E+023
+  1.328084046521405E+023
+  1.242007717684136E+023
+  1.164988055792421E+023
+  1.097094633698633E+023
+  1.039226972724488E+023
+  9.934821830256758E+022
+  9.638165008295174E+022
+  9.571867539433124E+022
+  9.854634043495244E+022
+  1.068555452237669E+023
+  1.239383326376218E+023
+  1.551568734745311E+023
+  2.090938150081484E+023
+  2.992056387777382E+023
+  4.460814522458527E+023
+  6.803239565699044E+023
+  1.045863723995473E+024
+  1.603123416731131E+024
+  2.430797392911019E+024
+  3.624078665681779E+024
+  5.286042404715830E+024
+  7.507916530416176E+024
+  1.033771741978127E+025
+  1.375663544156080E+025
+  1.767743090694331E+025
+  2.195290646353859E+025
+  2.639467788021227E+025
+  3.079976065509431E+025
+  3.497815578795186E+025
+  3.877518329581529E+025
+  4.208479535090176E+025
+  4.485316720580620E+025
+  4.707429283104887E+025
+  4.878051480035323E+025
+  5.003096020703894E+025
+  5.090017185640710E+025
+  5.146830854221720E+025
+  5.181349112678585E+025
+  5.200634525341415E+025
+  5.210653163227174E+025
+  5.216097534224419E+025
+  5.220350849779515E+025
+  5.225565502322239E+025
+  5.232828083511714E+025
+  5.242381042199082E+025
+  5.253869413801939E+025
+  5.266582376262537E+025
+  5.279664793665120E+025
+  5.292282493737414E+025
+  5.303734486765371E+025
+  5.313513553984863E+025
+  5.321322953363242E+025
+  5.327061577757257E+025
+  5.330791701440770E+025
+  5.332700517469794E+025
+  5.333060891953988E+025
+  5.332194747027254E+025
+  5.330444080369630E+025
+  5.328151059364679E+025
+  5.325644606105473E+025
+  1.665475926253815E+022
+  1.665718651712848E+022
+  1.665936790658429E+022
+  1.666096881425771E+022
+  1.666158609326978E+022
+  1.666074466425477E+022
+  1.665790695486831E+022
+  1.665249690544498E+022
+  1.664393737786481E+022
+  1.663170366713454E+022
+  1.661539052098483E+022
+  1.659478462730136E+022
+  1.656993303342329E+022
+  1.654119544686241E+022
+  1.650926487954306E+022
+  1.647513945935452E+022
+  1.644002936874734E+022
+  1.640518652516029E+022
+  1.637165093859023E+022
+  1.633991699590907E+022
+  1.630953482828921E+022
+  1.627867498163902E+022
+  1.624369676284102E+022
+  1.619876985928082E+022
+  1.613560381787240E+022
+  1.604334060963322E+022
+  1.590866297362650E+022
+  1.571616738495365E+022
+  1.544904635482087E+022
+  1.509011847238225E+022
+  1.462322979264546E+022
+  1.403501655476197E+022
+  1.331695610938722E+022
+  1.246753540021838E+022
+  1.149424210259587E+022
+  1.041495984023124E+022
+  9.258277616553496E+021
+  8.062274655062698E+021
+  6.871572196768488E+021
+  5.732851664977387E+021
+  4.689536941780134E+021
+  3.775161274842829E+021
+  3.004504215349217E+021
+  2.373443419501544E+021
+  1.867154798966985E+021
+  1.466796013366439E+021
+  1.153350320563145E+021
+  9.095568865316751E+020
+  7.206715017841987E+020
+  5.745759424465311E+020
+  4.615647691180387E+020
+  3.740028139291531E+020
+  3.059582470113403E+020
+  2.528624255467089E+020
+  2.112171540476749E+020
+  1.783537338193419E+020
+  1.522403131708463E+020
+  1.313308660572043E+020
+  1.144484185526136E+020
+  1.006956275075213E+020
+  8.938677588058489E+019
+  7.999630987578186E+019
+  7.212003049234190E+019
+  6.544590144937825E+019
+  5.973213456316061E+019
+  5.479077323944001E+019
+  5.047543424190448E+019
+  4.667220983842084E+019
+  4.329300065985604E+019
+  4.027076915487370E+019
+  3.755640156161584E+019
+  3.511707474566132E+019
+  3.293628442430536E+019
+  3.101606142430307E+019
+  2.938246807717631E+019
+  2.809635258711897E+019
+  2.727272186736636E+019
+  2.711420775706061E+019
+  2.796723013854905E+019
+  3.041388323515330E+019
+  3.541843487908578E+019
+  4.455436721138790E+019
+  6.034490447379073E+019
+  8.675398723741496E+019
+  1.298596667758255E+020
+  1.987174444160770E+020
+  3.063611412982519E+020
+  4.707725070729803E+020
+  7.154568566371014E+020
+  1.068981348098071E+021
+  1.562490572288175E+021
+  2.223907952731870E+021
+  3.068620614915017E+021
+  4.092353224949794E+021
+  5.270492128685530E+021
+  6.560376681485685E+021
+  7.906672196166392E+021
+  9.249138529295710E+021
+  1.053079925153416E+022
+  1.170465102491066E+022
+  1.273776352917920E+022
+  1.361251966180369E+022
+  1.432547151246587E+022
+  1.488465873489517E+022
+  1.530626411212785E+022
+  1.561129003141258E+022
+  1.582267320242594E+022
+  1.596301838107666E+022
+  1.605297275368916E+022
+  1.611018180315881E+022
+  1.614874115716896E+022
+  1.617905876218006E+022
+  1.620804663041026E+022
+  1.623956148565511E+022
+  1.627500895091171E+022
+  1.631402240195927E+022
+  1.635513197511654E+022
+  1.639635457776573E+022
+  1.643565962418309E+022
+  1.647129120380880E+022
+  1.650194976266169E+022
+  1.652685371830721E+022
+  1.654571449559587E+022
+  1.655866392436938E+022
+  1.656616451039436E+022
+  1.656891627463610E+022
+  1.656776862168700E+022
+  1.656365127227235E+022
+  1.655752764237761E+022
+  1.655036200672406E+022
+  5.209111878231892E+023
+  5.209924914289410E+023
+  5.210608984985624E+023
+  5.211045420710398E+023
+  5.211098549300695E+023
+  5.210616425905957E+023
+  5.209435106355810E+023
+  5.207386707881615E+023
+  5.204310638956122E+023
+  5.200068661882826E+023
+  5.194562899263205E+023
+  5.187754337779739E+023
+  5.179679084233508E+023
+  5.170459017411248E+023
+  5.160302557778715E+023
+  5.149490907507721E+023
+  5.138345555072670E+023
+  5.127173980023851E+023
+  5.116192353840296E+023
+  5.105426700083232E+023
+  5.094597332221552E+023
+  5.082995016865233E+023
+  5.069360632743882E+023
+  5.051782565922255E+023
+  5.027627373236883E+023
+  4.993519375776072E+023
+  4.945384179306685E+023
+  4.878570178376209E+023
+  4.788061105847302E+023
+  4.668790955329361E+023
+  4.516068109332820E+023
+  4.326105104941005E+023
+  4.096631030580974E+023
+  3.827533810513797E+023
+  3.521442245518916E+023
+  3.184121162037648E+023
+  2.824533146867461E+023
+  2.454438007158563E+023
+  2.087472791348651E+023
+  1.737779317408342E+023
+  1.418395441585339E+023
+  1.139267215934311E+023
+  9.046097234458834E+022
+  7.129178465462959E+022
+  5.594829936333418E+022
+  4.384274043871103E+022
+  3.438661448049579E+022
+  2.704843638911222E+022
+  2.137590862397672E+022
+  1.699844107630115E+022
+  1.362004227047369E+022
+  1.100844569908205E+022
+  8.983631266872152E+021
+  7.407266617966520E+021
+  6.173666980365446E+021
+  5.202383585267062E+021
+  4.432297132275689E+021
+  3.817000791065594E+021
+  3.321239502377165E+021
+  2.918189919395714E+021
+  2.587396553232363E+021
+  2.313213353067114E+021
+  2.083630945814332E+021
+  1.889396231918892E+021
+  1.723352708716286E+021
+  1.579947167405581E+021
+  1.454861928417839E+021
+  1.344742264871143E+021
+  1.246996862760460E+021
+  1.159655850858880E+021
+  1.081276929978555E+021
+  1.010896402837138E+021
+  9.480296942265508E+020
+  8.927370022092354E+020
+  8.457865964495650E+020
+  8.089747372985393E+020
+  7.857025629381809E+020
+  7.819737154478000E+020
+  8.080706148889655E+020
+  8.813009063449938E+020
+  1.030383718822447E+021
+  1.302260977902481E+021
+  1.772337499366847E+021
+  2.559286889699267E+021
+  3.845429271200385E+021
+  5.902976106896581E+021
+  9.124659441235532E+021
+  1.405377333339818E+022
+  2.140279147502185E+022
+  3.204116609852064E+022
+  4.692237191287441E+022
+  6.691061043856393E+022
+  9.249980517869903E+022
+  1.235955882052385E+023
+  1.594895152915746E+023
+  1.989221330577124E+023
+  2.402396654031265E+023
+  2.816250063427671E+023
+  3.213436212452182E+023
+  3.579481175115726E+023
+  3.904059610509127E+023
+  4.181416461754741E+023
+  4.410066480621401E+023
+  4.592020660132592E+023
+  4.731801413584400E+023
+  4.835453833778426E+023
+  4.909681466770468E+023
+  4.961163693078859E+023
+  4.996063027102793E+023
+  5.019705300845899E+023
+  5.036407061238684E+023
+  5.049424221375471E+023
+  5.060997674864970E+023
+  5.072472060984857E+023
+  5.084462951907748E+023
+  5.097047010364989E+023
+  5.109951045469047E+023
+  5.122720295144673E+023
+  5.134852997831872E+023
+  5.145895566786502E+023
+  5.155498868476759E+023
+  5.163440954866528E+023
+  5.169625425546690E+023
+  5.174066330459898E+023
+  5.176868096162262E+023
+  5.178203959822765E+023
+  5.178295001749173E+023
+  5.177393815281648E+023
+  5.175773650534278E+023
+  5.173720179248447E+023
+  1.245390726487366E+026
+  1.245527221206312E+026
+  1.245685910278944E+026
+  1.245853052950995E+026
+  1.246006391459476E+026
+  1.246113385210127E+026
+  1.246130703900371E+026
+  1.246005330637893E+026
+  1.245677395823005E+026
+  1.245085100326331E+026
+  1.244171616162705E+026
+  1.242893352235309E+026
+  1.241228745275214E+026
+  1.239186418196744E+026
+  1.236811159046338E+026
+  1.234185939881539E+026
+  1.231428201868786E+026
+  1.228678882472210E+026
+  1.226083185995361E+026
+  1.223762940077933E+026
+  1.221781508720558E+026
+  1.220103519601899E+026
+  1.218552913223242E+026
+  1.216773824589801E+026
+  1.214199406046550E+026
+  1.210033839782850E+026
+  1.203252548643328E+026
+  1.192625165905234E+026
+  1.176765312301732E+026
+  1.154210583935701E+026
+  1.123534939901041E+026
+  1.083493085250895E+026
+  1.033191551339206E+026
+  9.722734307695577E+025
+  9.010935416673402E+025
+  8.208501816167270E+025
+  7.336326980781786E+025
+  6.423466816593557E+025
+  5.504958012134306E+025
+  4.618317473443891E+025
+  3.799250394522072E+025
+  3.076161281987385E+025
+  2.462694178359039E+025
+  1.957230111891987E+025
+  1.549274060045235E+025
+  1.224774642965998E+025
+  9.692363814491266E+024
+  7.693242246575568E+024
+  6.135337583617173E+024
+  4.923320496956663E+024
+  3.980292466554502E+024
+  3.245359133222081E+024
+  2.670917226626495E+024
+  2.220084831396783E+024
+  1.864458555452332E+024
+  1.582247872459571E+024
+  1.356770448765167E+024
+  1.175263660141568E+024
+  1.027959321085465E+024
+  9.073706309062527E+023
+  8.077466453646777E+023
+  7.246570946923171E+023
+  6.546775955776880E+023
+  5.951516454208605E+023
+  5.440110828896160E+023
+  4.996409874911805E+023
+  4.607783920549297E+023
+  4.264368504977929E+023
+  3.958510141142787E+023
+  3.684371156914805E+023
+  3.437668586695222E+023
+  3.215539184424427E+023
+  3.016544258264528E+023
+  2.840859007464771E+023
+  2.690738430801561E+023
+  2.571425941685349E+023
+  2.492785937057398E+023
+  2.472116521715433E+023
+  2.538855397971449E+023
+  2.742251191957454E+023
+  3.163541971994063E+023
+  3.934733780635448E+023
+  5.266596738692998E+023
+  7.488738548415422E+023
+  1.110407431861388E+024
+  1.685783343918102E+024
+  2.581615071192210E+024
+  3.943965980814954E+024
+  5.962180228967304E+024
+  8.863932862961652E+024
+  1.289361597928531E+025
+  1.826396524129410E+025
+  2.508015203458238E+025
+  3.328384571805010E+025
+  4.265149715993743E+025
+  5.281722978415793E+025
+  6.332034738396629E+025
+  7.367091160604264E+025
+  8.341659327161655E+025
+  9.219573476573384E+025
+  9.976785744958459E+025
+  1.060203813278768E+026
+  1.109561432734068E+026
+  1.146690525594789E+026
+  1.173151541425739E+026
+  1.190845952664843E+026
+  1.201777199485814E+026
+  1.207865871753781E+026
+  1.210819660681178E+026
+  1.212052669827109E+026
+  1.212646977518116E+026
+  1.213349459226303E+026
+  1.214597118504106E+026
+  1.216563858360930E+026
+  1.219220915489322E+026
+  1.222402696807342E+026
+  1.225870124671715E+026
+  1.229365070337736E+026
+  1.232651773658297E+026
+  1.235543692564331E+026
+  1.237916425644676E+026
+  1.239709002119399E+026
+  1.240916965562189E+026
+  1.241581063609141E+026
+  1.241774570403582E+026
+  1.241590792221204E+026
+  1.241131729140227E+026
+  1.240499175629820E+026
+  1.239788671183000E+026
+  1.239085734433980E+026
+  1.422766154442210E+024
+  1.422987520373083E+024
+  1.423175223156919E+024
+  1.423297197150833E+024
+  1.423316582334084E+024
+  1.423191880531684E+024
+  1.422878101255669E+024
+  1.422328972997275E+024
+  1.421500059698665E+024
+  1.420352968102942E+024
+  1.418860401985174E+024
+  1.417011388811767E+024
+  1.414815916675577E+024
+  1.412308045123074E+024
+  1.409546295561601E+024
+  1.406610022098053E+024
+  1.403590583161756E+024
+  1.400576448455168E+024
+  1.397631891011167E+024
+  1.394769654950516E+024
+  1.391918922623105E+024
+  1.388890915165323E+024
+  1.385345386387206E+024
+  1.380761958825958E+024
+  1.374420610698870E+024
+  1.365395656543271E+024
+  1.352567373610797E+024
+  1.334655155760963E+024
+  1.310275791578530E+024
+  1.278029980618116E+024
+  1.236618969274558E+024
+  1.184990341225011E+024
+  1.122506671562894E+024
+  1.049122592988711E+024
+  9.655455428143152E+023
+  8.733453920728498E+023
+  7.749726312957202E+023
+  6.736495547402918E+023
+  5.731185090668996E+023
+  4.772653494831016E+023
+  3.896773258456558E+023
+  3.130960928961833E+023
+  2.486908983259526E+023
+  1.960592924832399E+023
+  1.539171298766472E+023
+  1.206570103215340E+023
+  9.466760511844576E+022
+  7.449256304865424E+022
+  5.889181257420590E+022
+  4.684882396865225E+022
+  3.755135775340851E+022
+  3.036180474889535E+022
+  2.478580663396256E+022
+  2.044335733935663E+022
+  1.704404117734473E+022
+  1.436671971888433E+022
+  1.224333565173104E+022
+  1.054624723350921E+022
+  9.178456660591808E+021
+  8.066142740061731E+021
+  7.152993124418450E+021
+  6.395923211673113E+021
+  5.761853508331628E+021
+  5.225289666098762E+021
+  4.766508741209001E+021
+  4.370202547248065E+021
+  4.024466025281228E+021
+  3.720047306322658E+021
+  3.449798634595936E+021
+  3.208285668741076E+021
+  2.991529151814906E+021
+  2.796870184851116E+021
+  2.622971768215354E+021
+  2.469999691951647E+021
+  2.340072306820149E+021
+  2.238141523912827E+021
+  2.173581230440083E+021
+  2.162933758786809E+021
+  2.234523862533833E+021
+  2.436016796296709E+021
+  2.846486129953646E+021
+  3.595148194448856E+021
+  4.889517853892304E+021
+  7.056101825205835E+021
+  1.059637801419977E+022
+  1.625884524495397E+022
+  2.512302902181757E+022
+  3.868172942202505E+022
+  5.889168582033845E+022
+  8.813934520493113E+022
+  1.290395382032908E+023
+  1.839585152414180E+023
+  2.542415913098068E+023
+  3.396151098157331E+023
+  4.381176577209739E+023
+  5.462757819430147E+023
+  6.595368052808935E+023
+  7.729051177079749E+023
+  8.816183689222347E+023
+  9.817090137444029E+023
+  1.070353879706612E+024
+  1.145988295111795E+024
+  1.208221801660690E+024
+  1.257624160128500E+024
+  1.295453702693170E+024
+  1.323384982624275E+024
+  1.343270926633396E+024
+  1.356955083477172E+024
+  1.366136185044826E+024
+  1.372280309812112E+024
+  1.376573595306808E+024
+  1.379908379555287E+024
+  1.382896104737435E+024
+  1.385900429687789E+024
+  1.389083723649096E+024
+  1.392459896825546E+024
+  1.395946894469352E+024
+  1.399413395338163E+024
+  1.402716121523098E+024
+  1.405726180503159E+024
+  1.408344581639734E+024
+  1.410508417097821E+024
+  1.412190257373383E+024
+  1.413393791933834E+024
+  1.414148077683274E+024
+  1.414501378407054E+024
+  1.414515186243834E+024
+  1.414259546871319E+024
+  1.413809932253715E+024
+  1.413244888582922E+024
+  8.712086996596563E+023
+  8.713395716166845E+023
+  8.714546413286804E+023
+  8.715355228195211E+023
+  8.715604749552871E+023
+  8.715043445662846E+023
+  8.713391682130237E+023
+  8.710355071925659E+023
+  8.705644400051045E+023
+  8.699003408659847E+023
+  8.690242993713942E+023
+  8.679277568715104E+023
+  8.666158637208734E+023
+  8.651099378948364E+023
+  8.634482313998435E+023
+  8.616841334248838E+023
+  8.598810056226728E+023
+  8.581030405350973E+023
+  8.564018651189682E+023
+  8.547990934380001E+023
+  8.532656442148402E+023
+  8.516993054624076E+023
+  8.499026436046265E+023
+  8.475638160556538E+023
+  8.442430896505304E+023
+  8.393678901498129E+023
+  8.322390735824939E+023
+  8.220509147217127E+023
+  8.079271021456522E+023
+  7.889747106341692E+023
+  7.643573546021279E+023
+  7.333869714753409E+023
+  6.956303879760174E+023
+  6.510217361295655E+023
+  5.999653240327821E+023
+  5.434071614742567E+023
+  4.828496973649680E+023
+  4.202870779893759E+023
+  3.580503187558513E+023
+  2.985730591508038E+023
+  2.441144681327768E+023
+  1.964144712505716E+023
+  1.562339050035487E+023
+  1.233490034989166E+023
+  9.697980127058354E+022
+  7.613867751335987E+022
+  5.983053743435646E+022
+  4.715312023902253E+022
+  3.733632854824932E+022
+  2.974764558899643E+022
+  2.388079590857847E+022
+  1.933772219834894E+022
+  1.580933750433755E+022
+  1.305771157426023E+022
+  1.090075695629264E+022
+  9.199634965612336E+021
+  7.848693382573696E+021
+  6.767583417253391E+021
+  5.895167891430821E+021
+  5.184858888748824E+021
+  4.601073920465004E+021
+  4.116555475554386E+021
+  3.710350670652984E+021
+  3.366292243147884E+021
+  3.071858740671525E+021
+  2.817321036081478E+021
+  2.595105272144332E+021
+  2.399320203036313E+021
+  2.225410902355148E+021
+  2.069912257824347E+021
+  1.930285987667430E+021
+  1.804835752318776E+021
+  1.692708446600106E+021
+  1.594008965914689E+021
+  1.510085081208710E+021
+  1.444085026902498E+021
+  1.401962196481193E+021
+  1.394211190156800E+021
+  1.438782123370179E+021
+  1.565850283039484E+021
+  1.825423787574160E+021
+  2.299139464457357E+021
+  3.117965057897644E+021
+  4.487739726896601E+021
+  6.724233309428373E+021
+  1.029814358486468E+022
+  1.588734409011811E+022
+  2.442764780748742E+022
+  3.714325548930941E+022
+  5.552341502209906E+022
+  8.119393477087745E+022
+  1.156161002535434E+023
+  1.596019542528307E+023
+  2.129421984761055E+023
+  2.743687299710431E+023
+  3.416713593275943E+023
+  4.119752253741333E+023
+  4.821437772938755E+023
+  5.492038199357696E+023
+  6.106957371689326E+023
+  6.648886880954237E+023
+  7.108472549969991E+023
+  7.483738541333445E+023
+  7.778707022096251E+023
+  8.001667790258226E+023
+  8.163454135054942E+023
+  8.275943163158838E+023
+  8.350875708329890E+023
+  8.399007831390087E+023
+  8.429563499999131E+023
+  8.449944118636932E+023
+  8.465650465296984E+023
+  8.480375267098146E+023
+  8.496224882658918E+023
+  8.514026289372127E+023
+  8.533673806126748E+023
+  8.554472179755507E+023
+  8.575440459947128E+023
+  8.595553239119001E+023
+  8.613909074650463E+023
+  8.629827328492185E+023
+  8.642883560385744E+023
+  8.652900403737097E+023
+  8.659913764843758E+023
+  8.664129891308319E+023
+  8.665880184626159E+023
+  8.665578002368284E+023
+  8.663684693041961E+023
+  8.660686579960222E+023
+  8.657078331548615E+023
+  1.018200356171594E+025
+  1.018287053666592E+025
+  1.018416610637471E+025
+  1.018584251956186E+025
+  1.018776050266687E+025
+  1.018966670114747E+025
+  1.019118410444784E+025
+  1.019181975192813E+025
+  1.019099190620086E+025
+  1.018808044153412E+025
+  1.018249978426879E+025
+  1.017378885275070E+025
+  1.016170969003672E+025
+  1.014634298858311E+025
+  1.012816467507338E+025
+  1.010808511832864E+025
+  1.008743221811236E+025
+  1.006786180943010E+025
+  1.005118386921230E+025
+  1.003910132248877E+025
+  1.003286951668132E+025
+  1.003289741226206E+025
+  1.003832425020703E+025
+  1.004661573286702E+025
+  1.005322987573374E+025
+  1.005140398476135E+025
+  1.003211138574467E+025
+  9.984231349766697E+024
+  9.894969853631297E+024
+  9.750562333728593E+024
+  9.537278990818699E+024
+  9.242731377834379E+024
+  8.857437228696739E+024
+  8.376532696596209E+024
+  7.801429539795495E+024
+  7.141115924708698E+024
+  6.412729704490639E+024
+  5.641045525059141E+024
+  4.856661007644418E+024
+  4.092953026762249E+024
+  3.382250030063019E+024
+  2.750850224352859E+024
+  2.212176874688039E+024
+  1.766063610025839E+024
+  1.404267876165532E+024
+  1.115149111594964E+024
+  8.864459501966447E+023
+  7.067390166347798E+023
+  5.660893001876969E+023
+  4.562025699309842E+023
+  3.703474609336020E+023
+  3.031644727650955E+023
+  2.504428385905300E+023
+  2.089047632846667E+023
+  1.760146455602376E+023
+  1.498188684530603E+023
+  1.288156019749985E+023
+  1.118512980177229E+023
+  9.803964581653038E+022
+  8.669878962057435E+022
+  7.730306500972136E+022
+  6.944610217017300E+022
+  6.281273351950651E+022
+  5.715767008894887E+022
+  5.228935730219948E+022
+  4.805778603740311E+022
+  4.434532703489919E+022
+  4.105988763175740E+022
+  3.812987377351254E+022
+  3.550059373471501E+022
+  3.313188201044804E+022
+  3.099687568048264E+022
+  2.908207197919608E+022
+  2.738907845784955E+022
+  2.593889980901824E+022
+  2.478028056891929E+022
+  2.400466889727859E+022
+  2.377194935063740E+022
+  2.435340224186067E+022
+  2.620155329614156E+022
+  3.006072129429784E+022
+  3.713684962138725E+022
+  4.934958365538747E+022
+  6.969114723121324E+022
+  1.027108117303089E+023
+  1.551229810989615E+023
+  2.364898790541379E+023
+  3.598426010568314E+023
+  5.419643260164379E+023
+  8.028647314125966E+023
+  1.163749863745910E+024
+  1.642613324228835E+024
+  2.247439484879041E+024
+  2.971337447452032E+024
+  3.792639794204849E+024
+  4.677237478486236E+024
+  5.583090162998854E+024
+  6.466260477751878E+024
+  7.286930725583050E+024
+  8.014057895433901E+024
+  8.627920748097892E+024
+  9.120501693368424E+024
+  9.494161636852773E+024
+  9.759294682942892E+024
+  9.931623541017606E+024
+  1.002962274981973E+025
+  1.007234651884592E+025
+  1.007776510349363E+025
+  1.006160609311013E+025
+  1.003664843805176E+025
+  1.001240533923489E+025
+  9.995134526841914E+024
+  9.988115858564589E+024
+  9.992131211485429E+024
+  1.000607283555371E+025
+  1.002760018518094E+025
+  1.005376792707980E+025
+  1.008156178435558E+025
+  1.010830156799093E+025
+  1.013189617598589E+025
+  1.015095772414380E+025
+  1.016479871544282E+025
+  1.017334697366913E+025
+  1.017701616031737E+025
+  1.017656221010179E+025
+  1.017294264453443E+025
+  1.016718978174996E+025
+  1.016031032013190E+025
+  1.015321592676036E+025
+  1.014668098366847E+025
+  1.292278611697088E+023
+  1.292471312837485E+023
+  1.292642301239901E+023
+  1.292764763829538E+023
+  1.292806748298285E+023
+  1.292731005585508E+023
+  1.292495821300310E+023
+  1.292056955370762E+023
+  1.291370589976764E+023
+  1.290397485271302E+023
+  1.289108130611849E+023
+  1.287488262755906E+023
+  1.285544012759694E+023
+  1.283305752264298E+023
+  1.280829444782966E+023
+  1.278194188112964E+023
+  1.275494729181925E+023
+  1.272828020691915E+023
+  1.270273380621768E+023
+  1.267866536025247E+023
+  1.265568749761886E+023
+  1.263233231168148E+023
+  1.260571959803235E+023
+  1.257126751067746E+023
+  1.252248765207447E+023
+  1.245090700858632E+023
+  1.234615713610903E+023
+  1.219626802874646E+023
+  1.198820094903317E+023
+  1.170864967886284E+023
+  1.134512820821479E+023
+  1.088733679561085E+023
+  1.032874935760635E+023
+  9.668289534581375E+022
+  8.911866644366317E+022
+  8.073447280341387E+022
+  7.175283689854889E+022
+  6.246960393626536E+022
+  5.323099685616481E+022
+  4.439882888930465E+022
+  3.630929780202423E+022
+  2.922166184308679E+022
+  2.324973278122846E+022
+  1.836090250974459E+022
+  1.443975877462067E+022
+  1.133988724988204E+022
+  8.913643796889669E+021
+  7.027089108881666E+021
+  5.565859176430926E+021
+  4.435991344515014E+021
+  3.562255102087862E+021
+  2.885485085091513E+021
+  2.359728497184219E+021
+  1.949602962212173E+021
+  1.628023937280120E+021
+  1.374335000153490E+021
+  1.172813497593549E+021
+  1.011499491144441E+021
+  8.812905504932719E+020
+  7.752487812925590E+020
+  6.880739724372967E+020
+  6.157050081798643E+020
+  5.550193715314721E+020
+  5.036071668933324E+020
+  4.596015203442375E+020
+  4.215515604521572E+020
+  3.883275931716396E+020
+  3.590507370594024E+020
+  3.330413651820631E+020
+  3.097824018573566E+020
+  2.888950562546581E+020
+  2.701261877560579E+020
+  2.533485096932217E+020
+  2.385776988549584E+020
+  2.260148483397186E+020
+  2.161295475710580E+020
+  2.098095630264551E+020
+  2.086194455984487E+020
+  2.152345964121839E+020
+  2.341515600689444E+020
+  2.728207378069617E+020
+  3.434023015080235E+020
+  4.654006310950000E+020
+  6.694640738830676E+020
+  1.002598882087455E+021
+  1.534857831610980E+021
+  2.367101057390051E+021
+  3.638526483034743E+021
+  5.531165631396575E+021
+  8.266364849795620E+021
+  1.208561768408158E+022
+  1.720573108166033E+022
+  2.374671723488167E+022
+  3.167652446536356E+022
+  4.080561473990828E+022
+  5.080449327850142E+022
+  6.124512345087354E+022
+  7.166096423683216E+022
+  8.161021203671804E+022
+  9.072783770277989E+022
+  9.875748570324694E+022
+  1.055612549997230E+023
+  1.111110055848518E+023
+  1.154677226179246E+023
+  1.187557041548633E+023
+  1.211368703554331E+023
+  1.227884344968284E+023
+  1.238853443888236E+023
+  1.245876683652579E+023
+  1.250324713818035E+023
+  1.253295212198494E+023
+  1.255601633509426E+023
+  1.257787419632202E+023
+  1.260159467140101E+023
+  1.262834296188422E+023
+  1.265790094475339E+023
+  1.268918139730963E+023
+  1.272068277092155E+023
+  1.275084954216314E+023
+  1.277832303765417E+023
+  1.280208471359434E+023
+  1.282150716006781E+023
+  1.283633827114689E+023
+  1.284664844157142E+023
+  1.285276424361918E+023
+  1.285519895167951E+023
+  1.285458624566081E+023
+  1.285162799562215E+023
+  1.284705885420745E+023
+  1.284162090022860E+023
+  5.243226078578632E+025
+  5.243698081803617E+025
+  5.244332099374334E+025
+  5.245091608433394E+025
+  5.245898878051781E+025
+  5.246624517876936E+025
+  5.247082569448213E+025
+  5.247032970908910E+025
+  5.246192260697308E+025
+  5.244254351244424E+025
+  5.240921152624155E+025
+  5.235940606776013E+025
+  5.229148588419028E+025
+  5.220509616617943E+025
+  5.210149489504416E+025
+  5.198371770683766E+025
+  5.185649903296479E+025
+  5.172587645110974E+025
+  5.159842680348957E+025
+  5.148011874484525E+025
+  5.137481596328974E+025
+  5.128252299268525E+025
+  5.119752267434537E+025
+  5.110660143577092E+025
+  5.098758806522981E+025
+  5.080844050383080E+025
+  5.052710612273710E+025
+  5.009236124942039E+025
+  4.944581200440476E+025
+  4.852520893898589E+025
+  4.726917503643670E+025
+  4.562333668814922E+025
+  4.354764075447017E+025
+  4.102431271819935E+025
+  3.806547617831170E+025
+  3.471899512100696E+025
+  3.107079113143882E+025
+  2.724197775118891E+025
+  2.337986735972501E+025
+  1.964327737804279E+025
+  1.618432904814769E+025
+  1.312497980515389E+025
+  1.052494544824507E+025
+  8.379108883184747E+024
+  6.644402976625915E+024
+  5.262330202591777E+024
+  4.172191616939879E+024
+  3.317949616744915E+024
+  2.651132671734042E+024
+  2.131488306236267E+024
+  1.726483551300277E+024
+  1.410309913307105E+024
+  1.162757386103245E+024
+  9.681416740345942E+023
+  8.143643335891734E+023
+  6.921287404433513E+023
+  5.943062698305166E+023
+  5.154346326860902E+023
+  4.513265775935121E+023
+  3.987678056307866E+023
+  3.552854682265362E+023
+  3.189716952192888E+023
+  2.883495883786331E+023
+  2.622717518999067E+023
+  2.398436420809030E+023
+  2.203658145347026E+023
+  2.032905755928704E+023
+  1.881896677609939E+023
+  1.747305096734058E+023
+  1.626592499247909E+023
+  1.517895733470484E+023
+  1.419969287751687E+023
+  1.332187751765801E+023
+  1.254627748293979E+023
+  1.188269004003718E+023
+  1.135386064464467E+023
+  1.100251577321945E+023
+  1.090347043731064E+023
+  1.118386735118217E+023
+  1.205613599838019E+023
+  1.387025236548385E+023
+  1.719420307792427E+023
+  2.293373812000525E+023
+  3.250342604734967E+023
+  4.805855520193225E+023
+  7.278791130466902E+023
+  1.112454924620992E+024
+  1.696579957304169E+024
+  2.560780759324536E+024
+  3.801593397835217E+024
+  5.522187238491010E+024
+  7.811608592940797E+024
+  1.071241896907279E+025
+  1.419711594775293E+025
+  1.816788373580957E+025
+  2.246687528722678E+025
+  2.689691205600852E+025
+  3.124969281865072E+025
+  3.533428784380394E+025
+  3.899951571555323E+025
+  4.214654785990813E+025
+  4.473132093841163E+025
+  4.675880328666148E+025
+  4.827229867170186E+025
+  4.934090325757674E+025
+  5.004744804031893E+025
+  5.047827912695815E+025
+  5.071540640460427E+025
+  5.083102791972369E+025
+  5.088419091134846E+025
+  5.091928210144319E+025
+  5.096604487990311E+025
+  5.104082825855227E+025
+  5.114875485347307E+025
+  5.128646179520882E+025
+  5.144504729393278E+025
+  5.161287369033295E+025
+  5.177794561733709E+025
+  5.192968701164213E+025
+  5.206005531902882E+025
+  5.216402961757048E+025
+  5.223958206232695E+025
+  5.228729016360645E+025
+  5.230976193575690E+025
+  5.231101000975517E+025
+  5.229584572151150E+025
+  5.226933756476365E+025
+  5.223638987876801E+025
+  5.220146000126886E+025
+  5.216839027749811E+025
+  1.620044116337797E+022
+  1.620163430233000E+022
+  1.620361570386754E+022
+  1.620634538657820E+022
+  1.620963011010171E+022
+  1.621308214089510E+022
+  1.621609859834197E+022
+  1.621786872772208E+022
+  1.621741315684309E+022
+  1.621366168048486E+022
+  1.620556906311901E+022
+  1.619226049922316E+022
+  1.617319385256556E+022
+  1.614832003171260E+022
+  1.611821618284558E+022
+  1.608416192268356E+022
+  1.604812799636471E+022
+  1.601264984969227E+022
+  1.598056633531024E+022
+  1.595461680767103E+022
+  1.593690779942461E+022
+  1.592828136592863E+022
+  1.592763789663423E+022
+  1.593128321810816E+022
+  1.593238030536667E+022
+  1.592058866392818E+022
+  1.588197041320299E+022
+  1.579923402427514E+022
+  1.565237730686675E+022
+  1.541978063470641E+022
+  1.507978426162710E+022
+  1.461274881780955E+022
+  1.400353192591395E+022
+  1.324420662387058E+022
+  1.233670208652730E+022
+  1.129488991912392E+022
+  1.014552724089598E+022
+  8.927485265676596E+021
+  7.688917462918278E+021
+  6.482472307008856E+021
+  5.359249784716329E+021
+  4.360909780712295E+021
+  3.508802475676924E+021
+  2.802790591267026E+021
+  2.229948035188517E+021
+  1.771951988856556E+021
+  1.409474851959873E+021
+  1.124500537465034E+021
+  9.013380512907487E+020
+  7.268855189778104E+020
+  5.905041374106242E+020
+  4.837189217696083E+020
+  3.998679618113651E+020
+  3.337627417183895E+020
+  2.813874963854676E+020
+  2.396465488086719E+020
+  2.061588468656363E+020
+  1.790945275499632E+020
+  1.570468760781791E+020
+  1.389330841729033E+020
+  1.239179185037888E+020
+  1.113553366821186E+020
+  1.007440126657924E+020
+  9.169356174437460E+019
+  8.389895740157225E+019
+  7.712120758629856E+019
+  7.117281843165848E+019
+  6.590693766075784E+019
+  6.120936027368132E+019
+  5.699282159074901E+019
+  5.319322746502724E+019
+  4.976771535762983E+019
+  4.669475185462520E+019
+  4.397692136694309E+019
+  4.164774848354830E+019
+  3.978496938320466E+019
+  3.853432929242662E+019
+  3.815049565036900E+019
+  3.906534044607241E+019
+  4.199892555997805E+019
+  4.813508163477720E+019
+  5.939101323077733E+019
+  7.881723444192790E+019
+  1.111665476786925E+020
+  1.636614747714287E+020
+  2.469564004918059E+020
+  3.762159041046342E+020
+  5.720924024655821E+020
+  8.611646484449876E+020
+  1.275090944239022E+021
+  1.847376745220370E+021
+  2.606376996467906E+021
+  3.564529615879833E+021
+  4.710678546885836E+021
+  6.010286920281385E+021
+  7.409194406720124E+021
+  8.840808719840056E+021
+  1.023568635434864E+022
+  1.153105443690459E+022
+  1.267814801405283E+022
+  1.364619141503800E+022
+  1.442294591157536E+022
+  1.501256014946199E+022
+  1.543181753901283E+022
+  1.570582902735418E+022
+  1.586394147757148E+022
+  1.593629755543202E+022
+  1.595120931959234E+022
+  1.593333805590034E+022
+  1.590259656614199E+022
+  1.587367172349782E+022
+  1.585606860212104E+022
+  1.585457916002417E+022
+  1.587007011046425E+022
+  1.590047049723644E+022
+  1.594183003954718E+022
+  1.598932430335805E+022
+  1.603810590377455E+022
+  1.608393795459905E+022
+  1.612358711078126E+022
+  1.615498947465819E+022
+  1.617722923847271E+022
+  1.619038687439017E+022
+  1.619531821664612E+022
+  1.619341344432971E+022
+  1.618636328764205E+022
+  1.617595005705612E+022
+  1.616388331412597E+022
+  1.615168747413562E+022
+  1.614063508916357E+022
+  8.550079384535416E+023
+  8.551003448611955E+023
+  8.552120206479358E+023
+  8.553342552395877E+023
+  8.554520528438909E+023
+  8.555428679558618E+023
+  8.555763068669655E+023
+  8.555150644935295E+023
+  8.553171952478365E+023
+  8.549399672665422E+023
+  8.543452086835524E+023
+  8.535056840419680E+023
+  8.524118560143583E+023
+  8.510781471126132E+023
+  8.495475304513133E+023
+  8.478931066861366E+023
+  8.462153315517364E+023
+  8.446337511836531E+023
+  8.432725048609421E+023
+  8.422394929022300E+023
+  8.415999558766716E+023
+  8.413461728941787E+023
+  8.413659129780871E+023
+  8.414130065353836E+023
+  8.410838246024239E+023
+  8.398035239862868E+023
+  8.368256991959053E+023
+  8.312487123048907E+023
+  8.220515677443589E+023
+  8.081517264392929E+023
+  7.884864080143505E+023
+  7.621171291847822E+023
+  7.283537894185435E+023
+  6.868891082800493E+023
+  6.379268946806636E+023
+  5.822798943892855E+023
+  5.214077667898959E+023
+  4.573673073171592E+023
+  3.926591254014942E+023
+  3.299781807233066E+023
+  2.719053970692010E+023
+  2.205112281113035E+023
+  1.768153816153498E+023
+  1.407430867898646E+023
+  1.115775622357458E+023
+  8.833955130897972E+022
+  7.001068968635056E+022
+  5.564967041391779E+022
+  4.444164852750009E+022
+  3.570959576834521E+022
+  2.890613146242434E+022
+  2.359692120297317E+022
+  1.944180839470302E+022
+  1.617680133267434E+022
+  1.359827351954513E+022
+  1.154977338420933E+022
+  9.911355549812743E+021
+  8.591133603843681E+021
+  7.518689743168932E+021
+  6.639986308659508E+021
+  5.913466062421591E+021
+  5.307079515005702E+021
+  4.796027741349250E+021
+  4.361053432961442E+021
+  3.987150131213136E+021
+  3.662589830718972E+021
+  3.378193204769084E+021
+  3.126785635722272E+021
+  2.902797247649948E+021
+  2.701977595338878E+021
+  2.521207105963262E+021
+  2.358399661284127E+021
+  2.212506301837480E+021
+  2.083652400211166E+021
+  1.973474866957948E+021
+  1.885779398350146E+021
+  1.827720749665071E+021
+  1.811834939776664E+021
+  1.859436768531866E+021
+  2.006153431472505E+021
+  2.310700154413746E+021
+  2.868394796990822E+021
+  3.831275908219839E+021
+  5.436846448142002E+021
+  8.047051586747908E+021
+  1.219750014878086E+022
+  1.865324308131650E+022
+  2.846048207450094E+022
+  4.297232658839557E+022
+  6.381087979762260E+022
+  9.270936073308697E+022
+  1.311626666744636E+023
+  1.798825219957188E+023
+  2.383998009307204E+023
+  3.050589227137274E+023
+  3.771899921793632E+023
+  4.514571160228372E+023
+  5.243340770895314E+023
+  5.925857122574509E+023
+  6.536468866937143E+023
+  7.058370847051712E+023
+  7.484031399500702E+023
+  7.814242924258711E+023
+  8.056330676634528E+023
+  8.222044516516300E+023
+  8.325526848850415E+023
+  8.381584952174768E+023
+  8.404357324237619E+023
+  8.406375545304000E+023
+  8.397981956333454E+023
+  8.387052492402614E+023
+  8.378975495166452E+023
+  8.376839032232485E+023
+  8.381776426797191E+023
+  8.393413790304226E+023
+  8.410359086011686E+023
+  8.430674326488756E+023
+  8.452282887787756E+023
+  8.473280774953016E+023
+  8.492139527023344E+023
+  8.507805036973649E+023
+  8.519709123417217E+023
+  8.527719145171674E+023
+  8.532053697634920E+023
+  8.533186820716936E+023
+  8.531752774605645E+023
+  8.528459187527872E+023
+  8.524018102759484E+023
+  8.519098200313170E+023
+  8.514294640984448E+023
+  2.515403940044206E+026
+  2.515660844189904E+026
+  2.515996217245221E+026
+  2.516389752980099E+026
+  2.516800699452246E+026
+  2.517163461347927E+026
+  2.517386282148510E+026
+  2.517353923598666E+026
+  2.516934747180213E+026
+  2.515992999940392E+026
+  2.514406044463437E+026
+  2.512085121971148E+026
+  2.508997624356071E+026
+  2.505188057182086E+026
+  2.500793957934603E+026
+  2.496052472363888E+026
+  2.491293286897484E+026
+  2.486914196455951E+026
+  2.483336839561171E+026
+  2.480942139838552E+026
+  2.479987674456835E+026
+  2.480512239137803E+026
+  2.482235825686806E+026
+  2.484465566904441E+026
+  2.486019547752248E+026
+  2.485180597904491E+026
+  2.479691457996925E+026
+  2.466801481029418E+026
+  2.443373691229208E+026
+  2.406059521857692E+026
+  2.351546004416424E+026
+  2.276874822218163E+026
+  2.179822358766176E+026
+  2.059313262362065E+026
+  1.915817761945406E+026
+  1.751659164832195E+026
+  1.571141543380849E+026
+  1.380411493936642E+026
+  1.187003760617198E+026
+  9.990906060927947E+025
+  8.245458534432748E+025
+  6.697345602319689E+025
+  5.378574304652309E+025
+  4.287957029468891E+025
+  3.404687915367524E+025
+  2.699804460260543E+025
+  2.142967299212493E+025
+  1.706012340027882E+025
+  1.364484411595541E+025
+  1.098014643415134E+025
+  8.901001054092648E+024
+  7.276214845414691E+024
+  6.002863966221623E+024
+  5.000940881679663E+024
+  4.208637833638052E+024
+  3.578396288252902E+024
+  3.073703188254996E+024
+  2.666548641698596E+024
+  2.335438547619896E+024
+  2.063857378986197E+024
+  1.839088135316994E+024
+  1.651311434231100E+024
+  1.492920457399328E+024
+  1.358001588641494E+024
+  1.241941650554602E+024
+  1.141131678796878E+024
+  1.052744381182764E+024
+  9.745681137922203E+023
+  9.048847262638517E+023
+  8.423823895481093E+023
+  7.860979873811066E+023
+  7.353873936595382E+023
+  6.899267189534700E+023
+  6.497544487908401E+023
+  6.153748623151253E+023
+  5.879594583648928E+023
+  5.697084538198206E+023
+  5.644728129330701E+023
+  5.787934002009025E+023
+  6.235919647616815E+023
+  7.168499865518166E+023
+  8.877289119324212E+023
+  1.182694274527697E+024
+  1.674249285534982E+024
+  2.472750090497905E+024
+  3.741278528072667E+024
+  5.712413262008225E+024
+  8.703623079418138E+024
+  1.312459194979250E+025
+  1.946500966562513E+025
+  2.824580860161590E+025
+  3.991234251163117E+025
+  5.466883776387656E+025
+  7.235875264425580E+025
+  9.246517690469025E+025
+  1.141655121304061E+026
+  1.364394462747765E+026
+  1.582148480874470E+026
+  1.785143052737056E+026
+  1.965694939614809E+026
+  2.118848644872896E+026
+  2.242488086499328E+026
+  2.337030880787887E+026
+  2.404870252149273E+026
+  2.449724849281422E+026
+  2.476015569122203E+026
+  2.488337757595413E+026
+  2.491055029143773E+026
+  2.488014476555774E+026
+  2.482370911661417E+026
+  2.476504739589420E+026
+  2.472018632097792E+026
+  2.469798618819181E+026
+  2.470124175568756E+026
+  2.472809879803693E+026
+  2.477359744770889E+026
+  2.483115918310404E+026
+  2.489386654205533E+026
+  2.495543754604735E+026
+  2.501085630761634E+026
+  2.505667375852125E+026
+  2.509103204807257E+026
+  2.511349255906267E+026
+  2.512475602420206E+026
+  2.512634602276080E+026
+  2.512029503611896E+026
+  2.510885839559224E+026
+  2.509428610841651E+026
+  2.507866372860699E+026
+  2.506381257974505E+026
+  3.153899692324543E+026
+  3.154036892553196E+026
+  3.154407655865600E+026
+  3.155026714440096E+026
+  3.155872064334010E+026
+  3.156873977933823E+026
+  3.157908739196979E+026
+  3.158798986622541E+026
+  3.159321868572837E+026
+  3.159226594818689E+026
+  3.158261428556844E+026
+  3.156208411313143E+026
+  3.152922972481372E+026
+  3.148374175881849E+026
+  3.142679783843094E+026
+  3.136129218507210E+026
+  3.129187189686821E+026
+  3.122471349690976E+026
+  3.116699003353004E+026
+  3.112600804430542E+026
+  3.110803423633487E+026
+  3.111687948238555E+026
+  3.115235557205181E+026
+  3.120875993703068E+026
+  3.127356843224980E+026
+  3.132652297904508E+026
+  3.133929130275613E+026
+  3.127585632404946E+026
+  3.109376991420853E+026
+  3.074638130473254E+026
+  3.018611480074209E+026
+  2.936880190538294E+026
+  2.825893967624522E+026
+  2.683552690406464E+026
+  2.509782505294680E+026
+  2.307005213135347E+026
+  2.080376255508643E+026
+  1.837667360553588E+026
+  1.588714186177439E+026
+  1.344442170185084E+026
+  1.115609332116225E+026
+  9.111399406631297E+025
+  7.358079543470199E+025
+  5.899194446222506E+025
+  4.710756096595254E+025
+  3.756946307228366E+025
+  2.999265238061970E+025
+  2.401437336820304E+025
+  1.931628209600880E+025
+  1.563096167614337E+025
+  1.274015449847109E+025
+  1.046920035387138E+025
+  8.680229761457046E+024
+  7.265445291814133E+024
+  6.141105785453617E+024
+  5.242428563816695E+024
+  4.519416702186522E+024
+  3.933521479709670E+024
+  3.455014938581654E+024
+  3.060944481194365E+024
+  2.733553314198542E+024
+  2.459067774064261E+024
+  2.226770348455895E+024
+  2.028293431504706E+024
+  1.857082774923665E+024
+  1.707991112942537E+024
+  1.576971728788160E+024
+  1.460849124836430E+024
+  1.357149890517824E+024
+  1.263981852642196E+024
+  1.179954261956073E+024
+  1.104136887908723E+024
+  1.036062489349653E+024
+  9.757866641107279E+023
+  9.240336905605055E+023
+  8.824797393955485E+023
+  8.542599999753868E+023
+  8.448392532134918E+023
+  8.634623168691619E+023
+  9.255067282092543E+023
+  1.056195493474801E+024
+  1.296281176476600E+024
+  1.710447483562709E+024
+  2.399209145033730E+024
+  3.514871530031674E+024
+  5.281384166041310E+024
+  8.016320457859083E+024
+  1.215029697265874E+025
+  1.823453204258757E+025
+  2.692092993360507E+025
+  3.889196370956397E+025
+  5.471232025075077E+025
+  7.460385665121110E+025
+  9.828905163310002E+025
+  1.250024064468090E+026
+  1.535767644463556E+026
+  1.826005585691626E+026
+  2.106223731467049E+026
+  2.363506412509932E+026
+  2.588041999289794E+026
+  2.773903035478979E+026
+  2.919099384620651E+026
+  3.025071374974535E+026
+  3.095859768621419E+026
+  3.137174354263108E+026
+  3.155520791756950E+026
+  3.157473583993094E+026
+  3.149125806614201E+026
+  3.135711764212704E+026
+  3.121384008497326E+026
+  3.109123188931681E+026
+  3.100760232598422E+026
+  3.097090442917776E+026
+  3.098056771382544E+026
+  3.102975929834990E+026
+  3.110778613765192E+026
+  3.120236090709375E+026
+  3.130150566352670E+026
+  3.139495089442932E+026
+  3.147498108055938E+026
+  3.153676014506944E+026
+  3.157823071030769E+026
+  3.159971811757087E+026
+  3.160337858001315E+026
+  3.159260339723961E+026
+  3.157144453932766E+026
+  3.154410419126545E+026
+  3.151453250449431E+026
+  3.148615146752395E+026
+  3.146169460602775E+026
+  3.293063742971204E+026
+  3.292886648570092E+026
+  3.293194637372942E+026
+  3.294074620850074E+026
+  3.295555655064896E+026
+  3.297587610638275E+026
+  3.300026097115699E+026
+  3.302626895661030E+026
+  3.305052407815358E+026
+  3.306892813941774E+026
+  3.307702681305765E+026
+  3.307051450403348E+026
+  3.304584428961695E+026
+  3.300088767801645E+026
+  3.293556525259479E+026
+  3.285235089007191E+026
+  3.275654343943543E+026
+  3.265620286668572E+026
+  3.256166601362831E+026
+  3.248459300173502E+026
+  3.243654848105949E+026
+  3.242718725615307E+026
+  3.246218200059615E+026
+  3.254109031905869E+026
+  3.265539877153679E+026
+  3.278699645486131E+026
+  3.290732105867099E+026
+  3.297739347748411E+026
+  3.294892335237429E+026
+  3.276663290895249E+026
+  3.237190284502181E+026
+  3.170776763884130E+026
+  3.072514236358571E+026
+  2.938991591774505E+026
+  2.769018984256255E+026
+  2.564252591124968E+026
+  2.329572041320571E+026
+  2.073056103348847E+026
+  1.805446408915900E+026
+  1.539092794644322E+026
+  1.286522034198311E+026
+  1.058475115091749E+026
+  8.611190303285671E+025
+  6.955134598716561E+025
+  5.595276944714596E+025
+  4.495487320424442E+025
+  3.615306121332658E+025
+  2.915742492434314E+025
+  2.362041224568376E+025
+  1.924646787838841E+025
+  1.579184381383005E+025
+  1.305966425512629E+025
+  1.089319527039012E+025
+  9.168909270200478E+024
+  7.790117474719498E+024
+  6.681478485475980E+024
+  5.784441341788014E+024
+  5.053558653187480E+024
+  4.453554898521078E+024
+  3.957023419176168E+024
+  3.542633095340971E+024
+  3.193740917712032E+024
+  2.897323804958209E+024
+  2.643159344700014E+024
+  2.423199549941251E+024
+  2.231093897476166E+024
+  2.061827898250137E+024
+  1.911451504107173E+024
+  1.776878200993509E+024
+  1.655741232957015E+024
+  1.546298744077624E+024
+  1.447385612925790E+024
+  1.358417599914242E+024
+  1.279464864522197E+024
+  1.211429462336687E+024
+  1.156388717336810E+024
+  1.118208301978945E+024
+  1.103591589317790E+024
+  1.123821984068074E+024
+  1.197577473455912E+024
+  1.355350266027269E+024
+  1.646172606394508E+024
+  2.147485679717876E+024
+  2.978991412675759E+024
+  4.321013303011084E+024
+  6.436967203312168E+024
+  9.697593515304337E+024
+  1.460115372149213E+025
+  2.177848733649251E+025
+  3.196478168289419E+025
+  4.591233353134624E+025
+  6.421363811857786E+025
+  8.704042104727394E+025
+  1.139716466891501E+026
+  1.440237926476686E+026
+  1.757696763643327E+026
+  2.075370458505967E+026
+  2.376553270342373E+026
+  2.646876951012356E+026
+  2.875976822478027E+026
+  3.058259986700116E+026
+  3.192810697015827E+026
+  3.282658603564217E+026
+  3.333704028235374E+026
+  3.353563535758609E+026
+  3.350517316256234E+026
+  3.332652373548214E+026
+  3.307229190755079E+026
+  3.280261944229827E+026
+  3.256287927594437E+026
+  3.238300117576340E+026
+  3.227818296184010E+026
+  3.225073355987154E+026
+  3.229275251977423E+026
+  3.238929621871613E+026
+  3.252164783527868E+026
+  3.267032433032089E+026
+  3.281752741352007E+026
+  3.294886184790379E+026
+  3.305427330227380E+026
+  3.312826994579277E+026
+  3.316957159856773E+026
+  3.318037440887007E+026
+  3.316542398844884E+026
+  3.313105146882865E+026
+  3.308426667218186E+026
+  3.303196933247253E+026
+  3.298033491350329E+026
+  3.293440005984105E+026
+  3.289783975239407E+026
+  3.275473192342683E+026
+  3.275483576553256E+026
+  3.275848885585260E+026
+  3.276616153659086E+026
+  3.277784896361952E+026
+  3.279291440757510E+026
+  3.280998973514137E+026
+  3.282695879664794E+026
+  3.284104196453604E+026
+  3.284900270023145E+026
+  3.284747905891489E+026
+  3.283342221732737E+026
+  3.280460905564378E+026
+  3.276017775047148E+026
+  3.270111546847586E+026
+  3.263061267489522E+026
+  3.255419311010752E+026
+  3.247953389210072E+026
+  3.241590889146345E+026
+  3.237322256843516E+026
+  3.236065002654227E+026
+  3.238495712896616E+026
+  3.244863361226836E+026
+  3.254802214507943E+026
+  3.267165840799601E+026
+  3.279904693444104E+026
+  3.290008627043766E+026
+  3.293533229743856E+026
+  3.285725930918845E+026
+  3.261264828742635E+026
+  3.214619181081416E+026
+  3.140533066810856E+026
+  3.034619419661903E+026
+  2.894027552243771E+026
+  2.718113224411979E+026
+  2.509001391180818E+026
+  2.271900864676378E+026
+  2.015027463856941E+026
+  1.749038076115611E+026
+  1.485979724167146E+026
+  1.237899031908375E+026
+  1.014968191620614E+026
+  8.228524838743288E+025
+  6.622724829556895E+025
+  5.309027661922616E+025
+  4.250389910671391E+025
+  3.406122622325915E+025
+  2.737423178420356E+025
+  2.209953726693896E+025
+  1.794679681106765E+025
+  1.467771912865881E+025
+  1.210067050290150E+025
+  1.006370071509953E+025
+  8.447503258197149E+024
+  7.159028281825909E+024
+  6.126019665785148E+024
+  5.292510844860385E+024
+  4.615200245137223E+024
+  4.060582746509988E+024
+  3.602705932764887E+024
+  3.221429795016048E+024
+  2.901085260378712E+024
+  2.629444920408748E+024
+  2.396936127659163E+024
+  2.196041254005964E+024
+  2.020842133363613E+024
+  1.866675661057417E+024
+  1.729875497866538E+024
+  1.607581268429141E+024
+  1.497602107276960E+024
+  1.398326571354104E+024
+  1.308676664068734E+024
+  1.228111157739610E+024
+  1.156694204261781E+024
+  1.095261789095310E+024
+  1.045744361691613E+024
+  1.011743690217703E+024
+  9.995216034283571E+023
+  1.019644353581826E+024
+  1.089644096653437E+024
+  1.238208051346646E+024
+  1.511571857619283E+024
+  1.982933513249326E+024
+  2.765724135975064E+024
+  4.031297732802007E+024
+  6.030751041922676E+024
+  9.118754083771910E+024
+  1.377398864423405E+025
+  2.060567454290764E+025
+  3.032877132394301E+025
+  4.368286302892205E+025
+  6.126444093390487E+025
+  8.327623816796119E+025
+  1.093575776888172E+026
+  1.386054692807251E+026
+  1.696800858919173E+026
+  2.009881276777528E+026
+  2.309156561050704E+026
+  2.580510924467828E+026
+  2.813492865290852E+026
+  3.002119349345418E+026
+  3.144859666615221E+026
+  3.244000738023648E+026
+  3.304667387650730E+026
+  3.333747744686160E+026
+  3.338899871522148E+026
+  3.327733587040343E+026
+  3.307197680747972E+026
+  3.283165520157924E+026
+  3.260197054428467E+026
+  3.241452884707225E+026
+  3.228737481459007E+026
+  3.222648367579780E+026
+  3.222804770376652E+026
+  3.228124540457564E+026
+  3.237115058814967E+026
+  3.248145005257224E+026
+  3.259670123650459E+026
+  3.270396260046374E+026
+  3.279374321626418E+026
+  3.286031803919996E+026
+  3.290152803864374E+026
+  3.291822693555339E+026
+  3.291354404565936E+026
+  3.289209974129565E+026
+  3.285925583024018E+026
+  3.282045460137804E+026
+  3.278069877149692E+026
+  3.274419501757529E+026
+  3.271415252537713E+026
+  3.195824199471314E+026
+  3.195936440440639E+026
+  3.196331484002184E+026
+  3.197034834113572E+026
+  3.198030539115691E+026
+  3.199248780679508E+026
+  3.200558832547279E+026
+  3.201769568269581E+026
+  3.202638963126806E+026
+  3.202894318306515E+026
+  3.202263242976109E+026
+  3.200513504841436E+026
+  3.197498528742769E+026
+  3.193203718692756E+026
+  3.187787021398402E+026
+  3.181605918405236E+026
+  3.175222677178508E+026
+  3.169380349583752E+026
+  3.164943883364306E+026
+  3.162803978509584E+026
+  3.163745871828035E+026
+  3.168290581480473E+026
+  3.176521487793363E+026
+  3.187913548126541E+026
+  3.201185165786030E+026
+  3.214193389283440E+026
+  3.223891917407371E+026
+  3.226369042232670E+026
+  3.216980000819035E+026
+  3.190585492088682E+026
+  3.141904381611364E+026
+  3.065981433795773E+026
+  2.958756986831814E+026
+  2.817702152612903E+026
+  2.642450421725779E+026
+  2.435319659266344E+026
+  2.201589920536975E+026
+  1.949401655260726E+026
+  1.689184739807160E+026
+  1.432627598024752E+026
+  1.191331059663637E+026
+  9.750112446028840E+025
+  7.889910656302711E+025
+  6.338170534365753E+025
+  5.071145099252136E+025
+  4.052043265693781E+025
+  3.240820503203504E+025
+  2.599482312141788E+025
+  2.094525690647867E+025
+  1.697702537469142E+025
+  1.385886106739452E+025
+  1.140519204087976E+025
+  9.469179472365349E+024
+  7.935757193622044E+024
+  6.715352446113491E+024
+  5.738536817718370E+024
+  4.951630020162297E+024
+  4.313171770632298E+024
+  3.791136293609294E+024
+  3.360758313419863E+024
+  3.002850300000865E+024
+  2.702507841393412E+024
+  2.448118105839730E+024
+  2.230603069123847E+024
+  2.042843644538325E+024
+  1.879242886416251E+024
+  1.735396190975191E+024
+  1.607844210913801E+024
+  1.493890474162655E+024
+  1.391470997594260E+024
+  1.299068171419648E+024
+  1.215666683912148E+024
+  1.140756363984338E+024
+  1.074397113472724E+024
+  1.017376877688926E+024
+  9.715181676516876E+023
+  9.402265423433189E+023
+  9.294314512039790E+023
+  9.491523329400767E+023
+  1.016036132624944E+024
+  1.157356501945171E+024
+  1.417126770409155E+024
+  1.865118067461053E+024
+  2.609601822837987E+024
+  3.814386242751062E+024
+  5.719917084804173E+024
+  8.666474291994467E+024
+  1.311435325069358E+025
+  1.965098791605285E+025
+  2.896828037211601E+025
+  4.178595641014821E+025
+  5.869140075956160E+025
+  7.989859778640210E+025
+  1.050826880188877E+026
+  1.333961366181533E+026
+  1.635657199586785E+026
+  1.940650950611572E+026
+  2.233366197410590E+026
+  2.500059225494538E+026
+  2.730418376895607E+026
+  2.918372203036601E+026
+  3.062112901615136E+026
+  3.163521306944126E+026
+  3.227251827928050E+026
+  3.259716548701104E+026
+  3.268138767840017E+026
+  3.259768252101678E+026
+  3.241289103393040E+026
+  3.218414818926547E+026
+  3.195650121440840E+026
+  3.176196573193302E+026
+  3.161980360109576E+026
+  3.153780651341072E+026
+  3.151434102397129E+026
+  3.154086795426778E+026
+  3.160461972528302E+026
+  3.169112781747655E+026
+  3.178634822732786E+026
+  3.187822476579946E+026
+  3.195763411896241E+026
+  3.201874878364215E+026
+  3.205892195578656E+026
+  3.207823966559032E+026
+  3.207889484217594E+026
+  3.206450860101930E+026
+  3.203947372105540E+026
+  3.200836945149787E+026
+  3.197549694314911E+026
+  3.194455672900296E+026
+  3.191845975272697E+026
+  3.232256136562774E+026
+  3.232265497194760E+026
+  3.232636585179792E+026
+  3.233417896623340E+026
+  3.234609882683518E+026
+  3.236149272306999E+026
+  3.237899243523071E+026
+  3.239648052617909E+026
+  3.241117975223615E+026
+  3.241986637496135E+026
+  3.241920997287410E+026
+  3.240622132367661E+026
+  3.237877452954437E+026
+  3.233615116157353E+026
+  3.227953413478243E+026
+  3.221236437958005E+026
+  3.214046799242305E+026
+  3.207186723705438E+026
+  3.201620798390599E+026
+  3.198377096743228E+026
+  3.198408369372874E+026
+  3.202420881435717E+026
+  3.210684460093552E+026
+  3.222842357078415E+026
+  3.237742740138298E+026
+  3.253314543325494E+026
+  3.266509203162127E+026
+  3.273327240806576E+026
+  3.268945648994240E+026
+  3.247958997169653E+026
+  3.204743189126288E+026
+  3.133943423602396E+026
+  3.031073634267606E+026
+  2.893190543130397E+026
+  2.719571192708933E+026
+  2.512283531225704E+026
+  2.276508242303207E+026
+  2.020466926107065E+026
+  1.754857480611452E+026
+  1.491799639779582E+026
+  1.243435976361598E+026
+  1.020043760193914E+026
+  8.273809027474855E+025
+  6.662345196688904E+025
+  5.343212986796695E+025
+  4.279604309037252E+025
+  3.430936226597457E+025
+  2.758428825320669E+025
+  2.227717660754472E+025
+  1.809715698041122E+025
+  1.480530697192727E+025
+  1.220934752577160E+025
+  1.015672061598855E+025
+  8.527574815995892E+024
+  7.228387291295282E+024
+  6.186500455383804E+024
+  5.345612357680088E+024
+  4.662144430371762E+024
+  4.102364649702918E+024
+  3.640135786999007E+024
+  3.255167874718086E+024
+  2.931670443941947E+024
+  2.657317933364715E+024
+  2.422458378737153E+024
+  2.219510078333781E+024
+  2.042503147749097E+024
+  1.886732830805976E+024
+  1.748499420474763E+024
+  1.624916100701662E+024
+  1.513771502423853E+024
+  1.413438956922656E+024
+  1.322830189882612E+024
+  1.241398691913213E+024
+  1.169208881600678E+024
+  1.107103861269175E+024
+  1.057030523731062E+024
+  1.022620747907529E+024
+  1.010187407692079E+024
+  1.030380475239377E+024
+  1.100866830943306E+024
+  1.250546995746737E+024
+  1.525988203303292E+024
+  2.000892521548329E+024
+  2.789436359107562E+024
+  4.064038416603652E+024
+  6.077252239638814E+024
+  9.185633263684407E+024
+  1.387012471033047E+025
+  2.074236391968786E+025
+  3.051939877347410E+025
+  4.394172775541164E+025
+  6.160434037977245E+025
+  8.370468017392333E+025
+  1.098726145016436E+026
+  1.391926065004684E+026
+  1.703108968863698E+026
+  2.016209363529268E+026
+  2.314982335968121E+026
+  2.585248290449407E+026
+  2.816540272442174E+026
+  3.002906601039944E+026
+  3.142886989983226E+026
+  3.238866825294626E+026
+  3.296085787256759E+026
+  3.321552785177032E+026
+  3.323044113981028E+026
+  3.308278863644510E+026
+  3.284301463197061E+026
+  3.257063996728321E+026
+  3.231186063411670E+026
+  3.209867794282983E+026
+  3.194933157865589E+026
+  3.186980426160228E+026
+  3.185613257579947E+026
+  3.189720994349297E+026
+  3.197773546224930E+026
+  3.208097293074925E+026
+  3.219104697085851E+026
+  3.229460538649823E+026
+  3.238179203810718E+026
+  3.244657608335535E+026
+  3.248655744981464E+026
+  3.250241181229393E+026
+  3.249714649134764E+026
+  3.247530578332897E+026
+  3.244220979629961E+026
+  3.240328182154951E+026
+  3.236351734999815E+026
+  3.232711831305456E+026
+  3.229728480355444E+026
+  3.153315746969509E+026
+  3.153463612638685E+026
+  3.153856935388455E+026
+  3.154511557473684E+026
+  3.155405208335997E+026
+  3.156466530875401E+026
+  3.157569182302343E+026
+  3.158532980456976E+026
+  3.159133348969156E+026
+  3.159120633929344E+026
+  3.158249253717108E+026
+  3.156314813928107E+026
+  3.153196095125589E+026
+  3.148897342355816E+026
+  3.143584654864797E+026
+  3.137609150624902E+026
+  3.131509295229341E+026
+  3.125985461628722E+026
+  3.121841608583918E+026
+  3.119892085345788E+026
+  3.120835882949169E+026
+  3.125105690991137E+026
+  3.132704123985177E+026
+  3.143043591293372E+026
+  3.154808781979435E+026
+  3.165861296276483E+026
+  3.173204796146280E+026
+  3.173026851450757E+026
+  3.160831188419913E+026
+  3.131671507151464E+026
+  3.080494438384997E+026
+  3.002592182196880E+026
+  2.894151754637892E+026
+  2.752865065530480E+026
+  2.578532429394060E+026
+  2.373556719616203E+026
+  2.143198419700320E+026
+  1.895461966734754E+026
+  1.640529151889220E+026
+  1.389751502901151E+026
+  1.154344232480365E+026
+  9.436514320500771E+025
+  7.627323112077902E+025
+  6.120134433453456E+025
+  4.891023522482754E+025
+  3.903603138100707E+025
+  3.118514443328306E+025
+  2.498543120519997E+025
+  2.010953454545834E+025
+  1.628196877731313E+025
+  1.327755858149850E+025
+  1.091588078451933E+025
+  9.054359417668048E+024
+  7.581406995960805E+024
+  6.410260587139706E+024
+  5.473745080404857E+024
+  4.719978344336631E+024
+  4.108930551781449E+024
+  3.609711922256251E+024
+  3.198458832658695E+024
+  2.856699694377458E+024
+  2.570099234635929E+024
+  2.327497822772402E+024
+  2.120179009615136E+024
+  1.941312689058354E+024
+  1.785533103324558E+024
+  1.648620463330152E+024
+  1.527262570732690E+024
+  1.418878947358720E+024
+  1.321495135006431E+024
+  1.233659663728030E+024
+  1.154401497396210E+024
+  1.083232618546559E+024
+  1.020210327436039E+024
+  9.660890189700052E+023
+  9.226148598261891E+023
+  8.930533142109323E+023
+  8.830944625415362E+023
+  9.023607858758105E+023
+  9.668517831856296E+023
+  1.102799769979462E+024
+  1.352569208734918E+024
+  1.783369621526509E+024
+  2.499584273858052E+024
+  3.659283423898223E+024
+  5.494728636372183E+024
+  8.335004387516343E+024
+  1.262587996767676E+025
+  1.893722518716344E+025
+  2.794178643071235E+025
+  4.034182865514333E+025
+  5.671478421948283E+025
+  7.727991781395797E+025
+  1.017368701960187E+026
+  1.292789673945127E+026
+  1.586845107643103E+026
+  1.884815504694915E+026
+  2.171612389368743E+026
+  2.433853995717000E+026
+  2.661423767466578E+026
+  2.848270892208383E+026
+  2.992454134623639E+026
+  3.095604879707667E+026
+  3.162056803257294E+026
+  3.197872859096988E+026
+  3.209934876165975E+026
+  3.205186166656221E+026
+  3.190058137132847E+026
+  3.170076410976873E+026
+  3.149627064787858E+026
+  3.131860844372807E+026
+  3.118714494478389E+026
+  3.111028465508214E+026
+  3.108737714763112E+026
+  3.111108373489382E+026
+  3.116990307477572E+026
+  3.125056400629762E+026
+  3.134004614584224E+026
+  3.142707528052711E+026
+  3.150303861417524E+026
+  3.156235192205948E+026
+  3.160237515311294E+026
+  3.162301259329391E+026
+  3.162614315358459E+026
+  3.161499859100977E+026
+  3.159355965651883E+026
+  3.156601619807198E+026
+  3.153633810855409E+026
+  3.150797703236414E+026
+  3.148368987084976E+026
+  2.944482686479510E+026
+  2.944729618093069E+026
+  2.945124734088703E+026
+  2.945658788903162E+026
+  2.946293545160132E+026
+  2.946954820705337E+026
+  2.947529796175799E+026
+  2.947869987693294E+026
+  2.947800636254155E+026
+  2.947137634828598E+026
+  2.945711729926578E+026
+  2.943398198469896E+026
+  2.940149270535860E+026
+  2.936025425078275E+026
+  2.931220411010816E+026
+  2.926074030729121E+026
+  2.921066641454182E+026
+  2.916790054918917E+026
+  2.913891176236420E+026
+  2.912987427809192E+026
+  2.914556643579191E+026
+  2.918808280320614E+026
+  2.925546835256367E+026
+  2.934041582254347E+026
+  2.942918589227645E+026
+  2.950091248160366E+026
+  2.952744475651996E+026
+  2.947385922925109E+026
+  2.929975573943198E+026
+  2.896143065466058E+026
+  2.841498921965872E+026
+  2.762039469229888E+026
+  2.654632707490761E+026
+  2.517551869901754E+026
+  2.350995245225259E+026
+  2.157500038537252E+026
+  1.942135661372406E+026
+  1.712364374182879E+026
+  1.477500142007698E+026
+  1.247783732687534E+026
+  1.033207840558147E+026
+  8.419787409939098E+025
+  6.783959254245614E+025
+  5.425979272539770E+025
+  4.322251211407865E+025
+  3.438432848481442E+025
+  2.737948329950009E+025
+  2.186517812995876E+025
+  1.754173717393780E+025
+  1.415821628898567E+025
+  1.151037040715586E+025
+  9.435171594477347E+024
+  7.804245714540197E+024
+  6.517455838334091E+024
+  5.497190717310698E+024
+  4.683545636760504E+024
+  4.030391533283483E+024
+  3.502240397605846E+024
+  3.071784370962965E+024
+  2.717984880414251E+024
+  2.424600544787820E+024
+  2.179059602284673E+024
+  1.971599874635561E+024
+  1.794614888803816E+024
+  1.642158084004915E+024
+  1.509567981279051E+024
+  1.393185988683097E+024
+  1.290145491514426E+024
+  1.198216453626354E+024
+  1.115694425975698E+024
+  1.041327199831093E+024
+  9.742770660837980E+023
+  9.141226943976783E+023
+  8.609133685761814E+023
+  8.153016694161746E+023
+  7.788015205197485E+023
+  7.542507341784890E+023
+  7.466058646847694E+023
+  7.642680368203903E+023
+  8.212364732938665E+023
+  9.405126140571992E+023
+  1.159322108182018E+024
+  1.536851919285728E+024
+  2.165241172719874E+024
+  3.184376168834390E+024
+  4.800387231814102E+024
+  7.306285045680168E+024
+  1.110048760501124E+025
+  1.669470682283589E+025
+  2.469675056179631E+025
+  3.574704688244014E+025
+  5.038249294747270E+025
+  6.882812095490111E+025
+  9.084969698588972E+025
+  1.157598117526861E+026
+  1.424930177871670E+026
+  1.697474109111026E+026
+  1.961718599572017E+026
+  2.205511388976319E+026
+  2.419477638701774E+026
+  2.597780850539915E+026
+  2.738214957101393E+026
+  2.841773745075692E+026
+  2.911911873823709E+026
+  2.953701394903641E+026
+  2.973032576529401E+026
+  2.975942440751425E+026
+  2.968101358841058E+026
+  2.954455563376211E+026
+  2.939009209577202E+026
+  2.924726582063936E+026
+  2.913536064198744E+026
+  2.906417898926302E+026
+  2.903555990310678E+026
+  2.904530912692735E+026
+  2.908529037004311E+026
+  2.914543253856579E+026
+  2.921544982037517E+026
+  2.928614226072533E+026
+  2.935022510769379E+026
+  2.940270716638872E+026
+  2.944089263476617E+026
+  2.946411576270390E+026
+  2.947332781716540E+026
+  2.947063331372342E+026
+  2.945883168785047E+026
+  2.944100141179166E+026
+  2.942016662799170E+026
+  2.939906266276684E+026
+  2.937999102367789E+026
+  3.270779753523081E+026
+  3.270593543334942E+026
+  3.270906735699429E+026
+  3.271809617182753E+026
+  3.273333381323003E+026
+  3.275428401516860E+026
+  3.277948899531687E+026
+  3.280647333379183E+026
+  3.283181085225979E+026
+  3.285134179957820E+026
+  3.286054775779154E+026
+  3.285506830579293E+026
+  3.283132506760003E+026
+  3.278719670076591E+026
+  3.272266426962448E+026
+  3.264032777389699E+026
+  3.254568564831556E+026
+  3.244707221506995E+026
+  3.235516655436891E+026
+  3.228202282349827E+026
+  3.223962621528225E+026
+  3.223804526481607E+026
+  3.228332059187723E+026
+  3.237529070552201E+026
+  3.250559642879069E+026
+  3.265612051073465E+026
+  3.279810880923331E+026
+  3.289219173649600E+026
+  3.288949006222803E+026
+  3.273395356496800E+026
+  3.236603724596591E+026
+  3.172774351974245E+026
+  3.076891330950089E+026
+  2.945440061758952E+026
+  2.777140660402679E+026
+  2.573582852085616E+026
+  2.339612759405378E+026
+  2.083315273644846E+026
+  1.815479773849986E+026
+  1.548541347467477E+026
+  1.295139206741359E+026
+  1.066136070445813E+026
+  8.678016295837362E+025
+  7.012632391122266E+025
+  5.644278072968690E+025
+  4.536988293462663E+025
+  3.650332075461746E+025
+  2.945266816874251E+025
+  2.386943894588300E+025
+  1.945697769345210E+025
+  1.597042219850428E+025
+  1.321185276141369E+025
+  1.102360256803438E+025
+  9.281335996149490E+024
+  7.887679382702029E+024
+  6.766719738385147E+024
+  5.859434364946409E+024
+  5.119989663283939E+024
+  4.512795709953525E+024
+  4.010190866825016E+024
+  3.590637701288543E+024
+  3.237326459957121E+024
+  2.937099338553299E+024
+  2.679625054599642E+024
+  2.456767625300059E+024
+  2.262105434438032E+024
+  2.090566674691195E+024
+  1.938155330090910E+024
+  1.801748434711257E+024
+  1.678950966322822E+024
+  1.568000111390982E+024
+  1.467716673178946E+024
+  1.377509311421336E+024
+  1.297448847241679E+024
+  1.228447587315358E+024
+  1.172606161665159E+024
+  1.133832684189339E+024
+  1.118902311770258E+024
+  1.139216131243415E+024
+  1.213641693321207E+024
+  1.372972004521879E+024
+  1.666708547148635E+024
+  2.173009273008823E+024
+  3.012642823438718E+024
+  4.367470095526415E+024
+  6.503036496174653E+024
+  9.792887846798177E+024
+  1.473874424471275E+025
+  2.197532289996449E+025
+  3.224152467762286E+025
+  4.629211819101672E+025
+  6.471916455312427E+025
+  8.768911068262327E+025
+  1.147701567843040E+026
+  1.449638792686410E+026
+  1.768262163087054E+026
+  2.086686909371059E+026
+  2.388077388435440E+026
+  2.657986721513904E+026
+  2.886031293541772E+026
+  3.066656735225954E+026
+  3.199032990183385E+026
+  3.286307944478129E+026
+  3.334517289162992E+026
+  3.351416305592031E+026
+  3.345416247844327E+026
+  3.324719502392402E+026
+  3.296680870743134E+026
+  3.267384605764725E+026
+  3.241412529497657E+026
+  3.221776980238804E+026
+  3.209993896816176E+026
+  3.206270523596317E+026
+  3.209777927980697E+026
+  3.218972920796746E+026
+  3.231930536635773E+026
+  3.246649819677333E+026
+  3.261303120586733E+026
+  3.274410921553852E+026
+  3.284937300210858E+026
+  3.292312525236537E+026
+  3.296397367563908E+026
+  3.297408206089456E+026
+  3.295822538981690E+026
+  3.292280636579780E+026
+  3.287492948974333E+026
+  3.282159471666552E+026
+  3.276906828749722E+026
+  3.272245680752171E+026
+  3.268547718743367E+026
+  3.208551709405114E+026
+  3.208645430008135E+026
+  3.209023756204441E+026
+  3.209714259472999E+026
+  3.210703210613227E+026
+  3.211922672238595E+026
+  3.213242708037798E+026
+  3.214470873434715E+026
+  3.215360455007656E+026
+  3.215629249015063E+026
+  3.214989016041865E+026
+  3.213183876645049E+026
+  3.210034632316854E+026
+  3.205484425283129E+026
+  3.199639408157174E+026
+  3.192796853509712E+026
+  3.185452728834761E+026
+  3.178281326955005E+026
+  3.172081281606891E+026
+  3.167685394826629E+026
+  3.165836074056537E+026
+  3.167033364216876E+026
+  3.171367796063489E+026
+  3.178354666084085E+026
+  3.186789150719425E+026
+  3.194642459401744E+026
+  3.199018217812184E+026
+  3.196186106760594E+026
+  3.181707239031323E+026
+  3.150663081035354E+026
+  3.097995980498508E+026
+  3.018962202863844E+026
+  2.909684646185604E+026
+  2.767769555240438E+026
+  2.592919677961732E+026
+  2.387440462181344E+026
+  2.156508267660387E+026
+  1.908068981909589E+026
+  1.652280338348446E+026
+  1.400507580168636E+026
+  1.164013850149956E+026
+  9.522121295079169E+025
+  7.702242018543771E+025
+  6.185160285322833E+025
+  4.947146829882523E+025
+  3.951876184651891E+025
+  3.159967276543620E+025
+  2.534135151979767E+025
+  2.041549255588353E+025
+  1.654557650154463E+025
+  1.350540534465678E+025
+  1.111359920459061E+025
+  9.226719042653760E+024
+  7.732418130261074E+024
+  6.543277662250872E+024
+  5.591563528546704E+024
+  4.824921948189113E+024
+  4.202928143741467E+024
+  3.694363452254984E+024
+  3.275091474148236E+024
+  2.926414990069771E+024
+  2.633812413412126E+024
+  2.385970424710904E+024
+  2.174045890798344E+024
+  1.991104378269693E+024
+  1.831694372398504E+024
+  1.691525865182734E+024
+  1.567229600882127E+024
+  1.456179400408243E+024
+  1.356365162730140E+024
+  1.266309006271404E+024
+  1.185022371621603E+024
+  1.112008837239392E+024
+  1.047327436352181E+024
+  9.917466460545742E+023
+  9.470431750042718E+023
+  9.165366391286144E+023
+  9.060068211833880E+023
+  9.252207312255265E+023
+  9.904072990841299E+023
+  1.128158375530205E+024
+  1.381393122615222E+024
+  1.818159755056416E+024
+  2.544077460306771E+024
+  3.718980455730160E+024
+  5.577550119033512E+024
+  8.452029208236608E+024
+  1.279204955691216E+025
+  1.917179221325046E+025
+  2.826815664703496E+025
+  4.078631675427924E+025
+  5.730373498118069E+025
+  7.803500645237579E+025
+  1.026701305514323E+026
+  1.303897262367707E+026
+  1.599588858155357E+026
+  1.898946941214989E+026
+  2.186819135001381E+026
+  2.449818505460900E+026
+  2.677882295752080E+026
+  2.865061509075180E+026
+  3.009546734795651E+026
+  3.113110880998595E+026
+  3.180220086879586E+026
+  3.217045809717541E+026
+  3.230544236124413E+026
+  3.227693324817099E+026
+  3.214917963242172E+026
+  3.197698173847197E+026
+  3.180340455662709E+026
+  3.165889614613445E+026
+  3.156159597220558E+026
+  3.151861785198826E+026
+  3.152806483753782E+026
+  3.158149312197730E+026
+  3.166651549710592E+026
+  3.176924556625580E+026
+  3.187634011894574E+026
+  3.197648788513189E+026
+  3.206129442773286E+026
+  3.212560192554408E+026
+  3.216734759072946E+026
+  3.218710369036200E+026
+  3.218745071662354E+026
+  3.217230575514010E+026
+  3.214627788589035E+026
+  3.211409708926117E+026
+  3.208016413382440E+026
+  3.204824154703226E+026
+  3.202127603486436E+026
+  3.282579522742656E+026
+  3.282556301541430E+026
+  3.282904797521555E+026
+  3.283678153506309E+026
+  3.284880919478554E+026
+  3.286452308187329E+026
+  3.288254985008305E+026
+  3.290072021034086E+026
+  3.291613935634501E+026
+  3.292538039055386E+026
+  3.292480503211590E+026
+  3.291099542590927E+026
+  3.288126602960602E+026
+  3.283420638606734E+026
+  3.277018544867569E+026
+  3.269173308938697E+026
+  3.260370816543285E+026
+  3.251316676264329E+026
+  3.242886150457099E+026
+  3.236033539052898E+026
+  3.231662091529077E+026
+  3.230461250057580E+026
+  3.232723924769222E+026
+  3.238161576209622E+026
+  3.245738242689782E+026
+  3.253545813004123E+026
+  3.258741922349277E+026
+  3.257569523104083E+026
+  3.245474320222559E+026
+  3.217333231978608E+026
+  3.167802991750788E+026
+  3.091790585205658E+026
+  2.985033095810314E+026
+  2.844750888136396E+026
+  2.670304694274998E+026
+  2.463749048248974E+026
+  2.230144168884707E+026
+  1.977485597854280E+026
+  1.716155547572944E+026
+  1.457899235305090E+026
+  1.214467748259150E+026
+  9.957850675943104E+025
+  8.073683938136719E+025
+  6.498982462639868E+025
+  5.210783780060246E+025
+  4.172678172514161E+025
+  3.344729944192122E+025
+  2.688881941818180E+025
+  2.171470050525072E+025
+  1.764036624605143E+025
+  1.443229514222268E+025
+  1.190270268071751E+025
+  9.902692208524064E+024
+  8.315349999945191E+024
+  7.049484724651205E+024
+  6.034274868087684E+024
+  5.214856613816930E+024
+  4.548773859134436E+024
+  4.003168883192886E+024
+  3.552584922935547E+024
+  3.177261743550595E+024
+  2.861821718775127E+024
+  2.594261597577662E+024
+  2.365181591730826E+024
+  2.167197743882078E+024
+  1.994495509823052E+024
+  1.842492228505368E+024
+  1.707583959169058E+024
+  1.586958468563680E+024
+  1.478461498553174E+024
+  1.380508503220168E+024
+  1.292039657821105E+024
+  1.212523243197409E+024
+  1.142023113308808E+024
+  1.081362216561780E+024
+  1.032439448795184E+024
+  9.987961003523307E+023
+  9.865866666889488E+023
+  1.006193239441130E+024
+  1.074838192716419E+024
+  1.220696005162624E+024
+  1.489167622654981E+024
+  1.952117538556087E+024
+  2.720892635901889E+024
+  3.963672276752784E+024
+  5.926863785022466E+024
+  8.958462525489152E+024
+  1.352807782910292E+025
+  2.023331280166998E+025
+  2.977543624226776E+025
+  4.287986271880072E+025
+  6.013177265404054E+025
+  8.173049727430296E+025
+  1.073235417053919E+026
+  1.360277619198660E+026
+  1.665331160742031E+026
+  1.972825053805446E+026
+  2.266997885497201E+026
+  2.534078511930777E+026
+  2.763887119169705E+026
+  2.950615815206696E+026
+  3.092805967793863E+026
+  3.192720934010763E+026
+  3.255382598666237E+026
+  3.287516865465628E+026
+  3.296580483059278E+026
+  3.289961094865252E+026
+  3.274379963489962E+026
+  3.255490402643083E+026
+  3.237650197123633E+026
+  3.223843869450320E+026
+  3.215731862222197E+026
+  3.213803310016002E+026
+  3.217605775590128E+026
+  3.226020783525096E+026
+  3.237551154351106E+026
+  3.250587539423123E+026
+  3.263627988113999E+026
+  3.275434562843674E+026
+  3.285122291589879E+026
+  3.292185537970420E+026
+  3.296473898935677E+026
+  3.298133822833428E+026
+  3.297532837956735E+026
+  3.295179930226210E+026
+  3.291650103523882E+026
+  3.287518278235991E+026
+  3.283307625409501E+026
+  3.279454528233639E+026
+  3.276289215286832E+026
+  2.903932195148900E+026
+  2.904125030022133E+026
+  2.904482623125306E+026
+  2.905003984850256E+026
+  2.905658607834483E+026
+  2.906378237134029E+026
+  2.907052528141172E+026
+  2.907530037929050E+026
+  2.907625405968672E+026
+  2.907133986016802E+026
+  2.905853869597000E+026
+  2.903613782084689E+026
+  2.900304453680087E+026
+  2.895909948737711E+026
+  2.890534160106009E+026
+  2.884416814074678E+026
+  2.877933142260369E+026
+  2.871571927215854E+026
+  2.865888056340939E+026
+  2.861428156054441E+026
+  2.858631251466460E+026
+  2.857710341567418E+026
+  2.858524705356355E+026
+  2.860455995457455E+026
+  2.862303185007395E+026
+  2.862211967728404E+026
+  2.857653440153463E+026
+  2.845465332586857E+026
+  2.821967242453633E+026
+  2.783159312392346E+026
+  2.725010656606175E+026
+  2.643837550495940E+026
+  2.536759409017678E+026
+  2.402201037937426E+026
+  2.240383026312761E+026
+  2.053713091936125E+026
+  1.846970102018845E+026
+  1.627174896597827E+026
+  1.403082547751149E+026
+  1.184312895733979E+026
+  9.802453851622931E+025
+  7.985691535436681E+025
+  6.432800385759516E+025
+  5.144451623082720E+025
+  4.097807750818206E+025
+  3.259996281515794E+025
+  2.596144377649577E+025
+  2.073638620208145E+025
+  1.664008338998189E+025
+  1.343436604829728E+025
+  1.092553265150457E+025
+  8.959059889269364E+024
+  7.413323702114079E+024
+  6.193483479321966E+024
+  5.226050042486137E+024
+  4.454308979414737E+024
+  3.834591451586137E+024
+  3.333302764094416E+024
+  2.924590960046063E+024
+  2.588537342303048E+024
+  2.309762973444500E+024
+  2.076361582353661E+024
+  1.879085811075091E+024
+  1.710728605203918E+024
+  1.565654202868401E+024
+  1.439443572457512E+024
+  1.328627490312829E+024
+  1.230487059111218E+024
+  1.142906747053086E+024
+  1.064269446981174E+024
+  9.933871623806900E+023
+  9.294653992471778E+023
+  8.721050758571837E+023
+  8.213540289375666E+023
+  7.778328545226931E+023
+  7.429795645181288E+023
+  7.194880895350424E+023
+  7.120618031413429E+023
+  7.286704250629454E+023
+  7.825916285153970E+023
+  8.956383114136120E+023
+  1.103109449124883E+024
+  1.461125866806804E+024
+  2.057052040737060E+024
+  3.023527791611384E+024
+  4.556017198714725E+024
+  6.932401877465475E+024
+  1.053060468295482E+025
+  1.583617705864008E+025
+  2.342618103208872E+025
+  3.390929050957017E+025
+  4.779706668590894E+025
+  6.530678869596382E+025
+  8.622194582412153E+025
+  1.098980572133606E+026
+  1.353336243929045E+026
+  1.613037374292134E+026
+  1.865367139243045E+026
+  2.098886622214111E+026
+  2.304770825896931E+026
+  2.477523512126015E+026
+  2.615060639480190E+026
+  2.718300835653367E+026
+  2.790465514331020E+026
+  2.836281386404616E+026
+  2.861226070786494E+026
+  2.870895764624777E+026
+  2.870523791804059E+026
+  2.864648050826793E+026
+  2.856911737998714E+026
+  2.849978589828989E+026
+  2.845544603586263E+026
+  2.844428424796685E+026
+  2.846720894729170E+026
+  2.851971485292370E+026
+  2.859387498745644E+026
+  2.868022810327227E+026
+  2.876937271489675E+026
+  2.885314853202868E+026
+  2.892536351145919E+026
+  2.898209231548394E+026
+  2.902162181571173E+026
+  2.904415085457124E+026
+  2.905135994003709E+026
+  2.904594366796954E+026
+  2.903115809090494E+026
+  2.901041649259175E+026
+  2.898697082344594E+026
+  2.896369327740689E+026
+  2.894294735020034E+026
+  2.176159855651435E+026
+  2.176276288793363E+026
+  2.176508369745897E+026
+  2.176856730479063E+026
+  2.177301255599287E+026
+  2.177794419301491E+026
+  2.178256973121568E+026
+  2.178576980711157E+026
+  2.178612822726687E+026
+  2.178201184927698E+026
+  2.177170156381649E+026
+  2.175356595197797E+026
+  2.172626383458283E+026
+  2.168895457113786E+026
+  2.164148607649182E+026
+  2.158452418933362E+026
+  2.151958491639880E+026
+  2.144893351477769E+026
+  2.137532235299466E+026
+  2.130155415639153E+026
+  2.122987843279471E+026
+  2.116125448038900E+026
+  2.109454072906189E+026
+  2.102569297541817E+026
+  2.094706963486877E+026
+  2.084694852343624E+026
+  2.070935750221118E+026
+  2.051431334427143E+026
+  2.023855238134914E+026
+  1.985682269073502E+026
+  1.934378434585785E+026
+  1.867651826971956E+026
+  1.783755922884883E+026
+  1.681823342458543E+026
+  1.562190069933870E+026
+  1.426650794060186E+026
+  1.278572439172866E+026
+  1.122795516829159E+026
+  9.652812196549577E+025
+  8.125182056236403E+025
+  6.707764568493580E+025
+  5.451329989350386E+025
+  4.381276874751427E+025
+  3.496311134348098E+025
+  2.779396041426671E+025
+  2.206990174874164E+025
+  1.754498388864720E+025
+  1.399119105429846E+025
+  1.121067154080112E+025
+  9.038682974533208E+024
+  7.341752822472044E+024
+  6.013752319282791E+024
+  4.971387631414231E+024
+  4.149873543538488E+024
+  3.499125752846904E+024
+  2.980573362540647E+024
+  2.564574513283441E+024
+  2.228365511015282E+024
+  1.954457240885744E+024
+  1.729394302760459E+024
+  1.542801938341043E+024
+  1.386657926649535E+024
+  1.254738517830090E+024
+  1.142198039664894E+024
+  1.045250714910076E+024
+  9.609304914368855E+023
+  8.869104832734665E+023
+  8.213681921913727E+023
+  7.628863153749698E+023
+  7.103819742594648E+023
+  6.630600017588094E+023
+  6.203889613947661E+023
+  5.821024520967502E+023
+  5.482338403596575E+023
+  5.192011199657636E+023
+  4.959719582552128E+023
+  4.803596884287978E+023
+  4.755323347325710E+023
+  4.868624816785842E+023
+  5.233092883820961E+023
+  5.996060610180298E+023
+  7.396216036777082E+023
+  9.813507230141403E+023
+  1.384021909304416E+024
+  2.037698454428715E+024
+  3.075342119678200E+024
+  4.686383684131269E+024
+  7.129126567332096E+024
+  1.073654735598892E+025
+  1.590620336589788E+025
+  2.306048819091271E+025
+  3.255988140767989E+025
+  4.456884844203410E+025
+  5.895972017019722E+025
+  7.531452832119374E+025
+  9.297064407728988E+025
+  1.111090466136584E+026
+  1.288724991680782E+026
+  1.454833547485631E+026
+  1.603346087989555E+026
+  1.730395708755646E+026
+  1.834390577140523E+026
+  1.915751261686936E+026
+  1.976448526994507E+026
+  2.019471599037896E+026
+  2.048322884763589E+026
+  2.066593885909684E+026
+  2.077643042869348E+026
+  2.084374926638666E+026
+  2.089110333155401E+026
+  2.093534145429387E+026
+  2.098707948607984E+026
+  2.105134445877925E+026
+  2.112859743749277E+026
+  2.121598061513378E+026
+  2.130862610198808E+026
+  2.140087413801735E+026
+  2.148728081910597E+026
+  2.156334368667403E+026
+  2.162592499777448E+026
+  2.167339571384406E+026
+  2.170555413477062E+026
+  2.172339250709074E+026
+  2.172878957159714E+026
+  2.172419013477435E+026
+  2.171230360046411E+026
+  2.169584088045309E+026
+  2.167731341038595E+026
+  2.165890206584228E+026
+  2.164238583986782E+026
+  2.325317991420027E+026
+  2.325495297969452E+026
+  2.325771079688738E+026
+  2.326136739720564E+026
+  2.326563189464851E+026
+  2.326995165302574E+026
+  2.327348175274077E+026
+  2.327509029882415E+026
+  2.327340481262814E+026
+  2.326690893663552E+026
+  2.325408911907008E+026
+  2.323362055167160E+026
+  2.320457603179530E+026
+  2.316663388503825E+026
+  2.312025212667037E+026
+  2.306677004550151E+026
+  2.300839715425564E+026
+  2.294805326271036E+026
+  2.288903321960630E+026
+  2.283448665623201E+026
+  2.278672643023526E+026
+  2.274640692495881E+026
+  2.271164083656962E+026
+  2.267714601288873E+026
+  2.263352854752535E+026
+  2.256681301302443E+026
+  2.245832656121750E+026
+  2.228503400314203E+026
+  2.202040924489854E+026
+  2.163591422944591E+026
+  2.110313233782361E+026
+  2.039655395618943E+026
+  1.949691941430019E+026
+  1.839487658866985E+026
+  1.709451273957174E+026
+  1.561610888212399E+026
+  1.399731830846662E+026
+  1.229200290613804E+026
+  1.056627596383247E+026
+  8.891918327076328E+025
+  7.338140502723298E+025
+  5.960882646418230E+025
+  4.788117078133369E+025
+  3.818460117016727E+025
+  3.033215939057791E+025
+  2.406531501170298E+025
+  1.911391178158434E+025
+  1.522749202511142E+025
+  1.218875471425200E+025
+  9.816799445787744E+024
+  7.965104060699488E+024
+  6.517205013854004E+024
+  5.381735986732650E+024
+  4.487667486245206E+024
+  3.780117603660987E+024
+  3.216845812754498E+024
+  2.765410960186193E+024
+  2.400916670886431E+024
+  2.104249144671896E+024
+  1.860714145289051E+024
+  1.658990611900437E+024
+  1.490331676840207E+024
+  1.347956991423537E+024
+  1.226591912461224E+024
+  1.122118918698180E+024
+  1.031314631949074E+024
+  9.516522031418308E+023
+  8.811538580003538E+023
+  8.182823992013013E+023
+  7.618637930948992E+023
+  7.110360442786130E+023
+  6.652228847645496E+023
+  6.241350419058105E+023
+  5.878079433488380E+023
+  5.566940469632872E+023
+  5.318425482342418E+023
+  5.152217979662988E+023
+  5.102739622062463E+023
+  5.228414243772683E+023
+  5.626739070675626E+023
+  6.458153129074837E+023
+  7.982735195466082E+023
+  1.061472755349935E+024
+  1.500025675829844E+024
+  2.212242582610542E+024
+  3.343352900176618E+024
+  5.100404806288663E+024
+  7.765928793900794E+024
+  1.170442161174704E+025
+  1.735147222512390E+025
+  2.517042845870877E+025
+  3.555752464309561E+025
+  4.869493272286165E+025
+  6.444489024467033E+025
+  8.235069817914543E+025
+  1.016857682655457E+026
+  1.215496839883016E+026
+  1.409975348917973E+026
+  1.591694252193075E+026
+  1.753911435732254E+026
+  1.892297398012580E+026
+  2.005025578212898E+026
+  2.092494151363590E+026
+  2.156826294584341E+026
+  2.201291198471551E+026
+  2.229751300577374E+026
+  2.246196167989939E+026
+  2.254386135742277E+026
+  2.257605347463445E+026
+  2.258513006886862E+026
+  2.259078780458866E+026
+  2.260588576499076E+026
+  2.263707154893018E+026
+  2.268583038366254E+026
+  2.274979505847837E+026
+  2.282414394023370E+026
+  2.290292284195272E+026
+  2.298015877209859E+026
+  2.305068358196033E+026
+  2.311064002300851E+026
+  2.315768945093141E+026
+  2.319097465197096E+026
+  2.321091344398082E+026
+  2.321890496620348E+026
+  2.321701360023384E+026
+  2.320766511028425E+026
+  2.319337659524219E+026
+  2.317654642587334E+026
+  2.315931323349465E+026
+  2.314347386799025E+026
+  5.402071873221837E+025
+  5.402897998180102E+025
+  5.403622051331431E+025
+  5.404128025752674E+025
+  5.404279279049037E+025
+  5.403918495626797E+025
+  5.402871804363412E+025
+  5.400957499461206E+025
+  5.397998875243460E+025
+  5.393841937708709E+025
+  5.388377043209779E+025
+  5.381561774593200E+025
+  5.373441916279199E+025
+  5.364166616165220E+025
+  5.353992745115553E+025
+  5.343272999482075E+025
+  5.332422730624173E+025
+  5.321861735300342E+025
+  5.311929339402897E+025
+  5.302774149333296E+025
+  5.294223688088848E+025
+  5.285643303720610E+025
+  5.275797567842168E+025
+  5.262730231174302E+025
+  5.243680272097190E+025
+  5.215051655209366E+025
+  5.172453516460687E+025
+  5.110826223453540E+025
+  5.024667451813171E+025
+  4.908370438150093E+025
+  4.756681820953144E+025
+  4.565275584006469E+025
+  4.331419101138198E+025
+  4.054675576589559E+025
+  3.737546859551973E+025
+  3.385920615946143E+025
+  3.009163044391756E+025
+  2.619715420367649E+025
+  2.232128105718884E+025
+  1.861598437170969E+025
+  1.522240589409722E+025
+  1.224932852040444E+025
+  9.744468462211338E+024
+  7.694101149943739E+024
+  6.049763656235775E+024
+  4.749992722852288E+024
+  3.732817449903846E+024
+  2.942025068921262E+024
+  2.329622854820954E+024
+  1.856183255875298E+024
+  1.490142097029635E+024
+  1.206678319198110E+024
+  9.865160969288125E+023
+  8.148154953558872E+023
+  6.802184049003386E+023
+  5.740636909685549E+023
+  4.897599734691241E+023
+  4.222941549584313E+023
+  3.678515626744869E+023
+  3.235251860586399E+023
+  2.870946432410395E+023
+  2.568589807423530E+023
+  2.315106373651917E+023
+  2.100406760806004E+023
+  1.916676684073998E+023
+  1.757844401350797E+023
+  1.619183193122233E+023
+  1.497016410790081E+023
+  1.388501370828204E+023
+  1.291475513710325E+023
+  1.204354680864420E+023
+  1.126080124814810E+023
+  1.056119297445637E+023
+  9.945374453738527E+022
+  9.421753467043066E+022
+  9.009972013918294E+022
+  8.747174712106787E+022
+  8.698839860458172E+022
+  8.976960888725479E+022
+  9.769801393809281E+022
+  1.138935227382972E+023
+  1.434491064366316E+023
+  1.945349211421262E+023
+  2.799911676034574E+023
+  4.195143205889509E+023
+  6.424625666350464E+023
+  9.911123518381271E+023
+  1.523820593045061E+024
+  2.316917295664468E+024
+  3.463240298202952E+024
+  5.064109380235864E+024
+  7.210535331920674E+024
+  9.952981204344760E+024
+  1.327815919365367E+025
+  1.710670925433473E+025
+  2.130050310807985E+025
+  2.567997646227965E+025
+  3.004929239167000E+025
+  3.422287467130601E+025
+  3.804726483385339E+025
+  4.141454739062701E+025
+  4.426650178748797E+025
+  4.659100044848950E+025
+  4.841338721614339E+025
+  4.978567226153775E+025
+  5.077576618670295E+025
+  5.145811406344560E+025
+  5.190632187313897E+025
+  5.218784967233325E+025
+  5.236058189918039E+025
+  5.247099919771615E+025
+  5.255367605482506E+025
+  5.263184551747955E+025
+  5.271877357849337E+025
+  5.281967111301761E+025
+  5.293385941764755E+025
+  5.305691826185182E+025
+  5.318259330562536E+025
+  5.330431515004483E+025
+  5.341626481976682E+025
+  5.351399188728064E+025
+  5.359464732016888E+025
+  5.365693596518978E+025
+  5.370091227290310E+025
+  5.372771649847124E+025
+  5.373929464005398E+025
+  5.373812888678006E+025
+  5.372702412320099E+025
+  5.370896176230603E+025
+  5.368699293034536E+025
+  5.401778209139012E+025
+  5.402596387512171E+025
+  5.403317599333857E+025
+  5.403827370349030E+025
+  5.403990131259485E+025
+  5.403648962260101E+025
+  5.402629535863710E+025
+  5.400748733026538E+025
+  5.397827472100404E+025
+  5.393708537738130E+025
+  5.388278473391148E+025
+  5.381490847470050E+025
+  5.373387738551006E+025
+  5.364115493636486E+025
+  5.353929718021815E+025
+  5.343183973516452E+025
+  5.332297088589304E+025
+  5.321695229892047E+025
+  5.311726989638132E+025
+  5.302552804215188E+025
+  5.294013894402636E+025
+  5.285490131067113E+025
+  5.275760108004573E+025
+  5.262879597265976E+025
+  5.244096063631420E+025
+  5.215817010022477E+025
+  5.173649019572019E+025
+  5.112523070936463E+025
+  5.026920367821628E+025
+  4.911210918455440E+025
+  4.760112335397965E+025
+  4.569265418086520E+025
+  4.335902542673566E+025
+  4.059553121738127E+025
+  3.742689964243259E+025
+  3.391180188621801E+025
+  3.014381328181012E+025
+  2.624740191483780E+025
+  2.236827379447928E+025
+  1.865873383971300E+025
+  1.526034403544100E+025
+  1.228232686288879E+025
+  9.772747226548268E+024
+  7.718084141703604E+024
+  6.069963802770644E+024
+  4.766938331717940E+024
+  3.747009140730862E+024
+  2.953913829677745E+024
+  2.339601633061739E+024
+  1.864586617324064E+024
+  1.497250268468390E+024
+  1.212723269168804E+024
+  9.916882395379945E+023
+  8.192702193640235E+023
+  6.840820220467360E+023
+  5.774386362415619E+023
+  4.927292281145883E+023
+  4.249249368893896E+023
+  3.701983634654454E+023
+  3.256322453016685E+023
+  2.889979500687495E+023
+  2.585878850239810E+023
+  2.330891430916663E+023
+  2.114884788476487E+023
+  1.930009888284894E+023
+  1.770166960430435E+023
+  1.630606719600257E+023
+  1.507634442500230E+023
+  1.398393130314425E+023
+  1.300709138546556E+023
+  1.212990106027518E+023
+  1.134171796494846E+023
+  1.063718924413514E+023
+  1.001697064213500E+023
+  9.489511147126239E+022
+  9.074545717232032E+022
+  8.809387998505765E+022
+  8.759802360505691E+022
+  9.038252112267322E+022
+  9.833759927483777E+022
+  1.145952577025852E+023
+  1.442674180025572E+023
+  1.955533524036249E+023
+  2.813369072745071E+023
+  4.213780372990731E+023
+  6.451239033069365E+023
+  9.949700404826565E+023
+  1.529423542436231E+024
+  2.324988843196788E+024
+  3.474682087175789E+024
+  5.079964762494758E+024
+  7.231886864697564E+024
+  9.980767101574276E+024
+  1.331295727149351E+025
+  1.714856742871136E+025
+  2.134884814039123E+025
+  2.573362089167132E+025
+  3.010654039982655E+025
+  3.428170282333991E+025
+  3.810553879029504E+025
+  4.147023400787462E+025
+  4.431784500478987E+025
+  4.663664334460766E+025
+  4.845243607882772E+025
+  4.981770810512626E+025
+  5.080081407871025E+025
+  5.147658184398553E+025
+  5.191891899545808E+025
+  5.219549538589621E+025
+  5.236431066290967E+025
+  5.247187025377325E+025
+  5.255269330090710E+025
+  5.262989283356939E+025
+  5.271656932981140E+025
+  5.281774362960501E+025
+  5.293254305028184E+025
+  5.305636749576467E+025
+  5.318281075280744E+025
+  5.330518829825566E+025
+  5.341760627358577E+025
+  5.351557840556954E+025
+  5.359625402759551E+025
+  5.365836342141491E+025
+  5.370200534224248E+025
+  5.372837496300762E+025
+  5.373947617435933E+025
+  5.373784546016625E+025
+  5.372633325636437E+025
+  5.370795431876675E+025
+  5.368577917161319E+025
+  1.411423597027172E+025
+  1.411628016200502E+025
+  1.411816311472316E+025
+  1.411961070936376E+025
+  1.412028583677405E+025
+  1.411978440285582E+025
+  1.411764306418754E+025
+  1.411336044675301E+025
+  1.410643112767203E+025
+  1.409639478309776E+025
+  1.408289820612367E+025
+  1.406576309518725E+025
+  1.404505102289355E+025
+  1.402111461024356E+025
+  1.399462076434497E+025
+  1.396653032840571E+025
+  1.393801944569920E+025
+  1.391033116704393E+025
+  1.388455149236067E+025
+  1.386131241930229E+025
+  1.384043530068497E+025
+  1.382053958841050E+025
+  1.379865299547190E+025
+  1.376986740244769E+025
+  1.372708925990060E+025
+  1.366093365746268E+025
+  1.355980868940623E+025
+  1.341023295154184E+025
+  1.319742500475554E+025
+  1.290619798255285E+025
+  1.252217981494808E+025
+  1.203335083320227E+025
+  1.143183637260870E+025
+  1.071580779558553E+025
+  9.891237412588953E+024
+  8.973144361705871E+024
+  7.985904435472353E+024
+  6.962238173719407E+024
+  5.940688718652508E+024
+  4.961753786393495E+024
+  4.063270327511529E+024
+  3.274634791588708E+024
+  2.609061282383665E+024
+  2.063374597304857E+024
+  1.625066597465183E+024
+  1.278072845752104E+024
+  1.006107409614878E+024
+  7.943472740066264E+023
+  6.301049384131876E+023
+  5.029353862674984E+023
+  4.044612876220412E+023
+  3.280837795919313E+023
+  2.686700099075033E+023
+  2.222622316740421E+023
+  1.858267347173571E+023
+  1.570467545254598E+023
+  1.341566077301285E+023
+  1.158114743011505E+023
+  1.009865756376346E+023
+  8.889987412856250E+022
+  7.895321955854921E+022
+  7.068776384237263E+022
+  6.375030522580194E+022
+  5.786794814235503E+022
+  5.282906342686757E+022
+  4.846901373979645E+022
+  4.465948688802139E+022
+  4.130057418156771E+022
+  3.831496233055254E+022
+  3.564379713210505E+022
+  3.324394878515291E+022
+  3.108658976577639E+022
+  2.915722274156741E+022
+  2.745761864485916E+022
+  2.601061801400753E+022
+  2.486952059851745E+022
+  2.413499219807238E+022
+  2.398425682246553E+022
+  2.472005961656331E+022
+  2.685072023662804E+022
+  3.121766666217547E+022
+  3.919290183889614E+022
+  5.297485154633697E+022
+  7.601435806417548E+022
+  1.135979933254783E+023
+  1.735942825692847E+023
+  2.673159987481095E+023
+  4.103503983161738E+023
+  6.230411601818820E+023
+  9.300634622246515E+023
+  1.358240019555171E+024
+  1.931486027722653E+024
+  2.662724836851286E+024
+  3.547743765439314E+024
+  4.564678497106564E+024
+  5.676083039094145E+024
+  6.833667400969131E+024
+  7.985089009501480E+024
+  9.081055408665157E+024
+  1.008112428010337E+025
+  1.095721323187250E+025
+  1.169461662323182E+025
+  1.229095529634610E+025
+  1.275380244830498E+025
+  1.309774786808639E+025
+  1.334149274367654E+025
+  1.350533398519071E+025
+  1.360919155949748E+025
+  1.367119530310196E+025
+  1.370677893287525E+025
+  1.372820724853520E+025
+  1.374446289118765E+025
+  1.376142313615347E+025
+  1.378225664957396E+025
+  1.380796526636062E+025
+  1.383799209159720E+025
+  1.387082064296109E+025
+  1.390450313687233E+025
+  1.393707718110929E+025
+  1.396685336464784E+025
+  1.399257636194220E+025
+  1.401347778158413E+025
+  1.402925067570922E+025
+  1.403998052382691E+025
+  1.404606020996673E+025
+  1.404810176248891E+025
+  1.404685279067684E+025
+  1.404313023361596E+025
+  1.403777488541638E+025
+  1.403161961340804E+025
+  1.290487461415971E+026
+  1.290655049276233E+026
+  1.290825103569124E+026
+  1.290977219566322E+026
+  1.291083723453966E+026
+  1.291108710902346E+026
+  1.291008333873688E+026
+  1.290732594526811E+026
+  1.290228664988529E+026
+  1.289446013607949E+026
+  1.288343151632887E+026
+  1.286895321167286E+026
+  1.285102248485828E+026
+  1.282994808186910E+026
+  1.280639095366205E+026
+  1.278136215382116E+026
+  1.275616159703005E+026
+  1.273224436195156E+026
+  1.271100685887231E+026
+  1.269349376277961E+026
+  1.268003776507567E+026
+  1.266985660238640E+026
+  1.266064352913085E+026
+  1.264819642432862E+026
+  1.262613566537710E+026
+  1.258576146616602E+026
+  1.251609854270993E+026
+  1.240417152722511E+026
+  1.223554982454663E+026
+  1.199519460388032E+026
+  1.166862852969774E+026
+  1.124342217308082E+026
+  1.071094042034566E+026
+  1.006821235738786E+026
+  9.319683979687188E+025
+  8.478506019963405E+025
+  7.566941872392357E+025
+  6.615512461084267E+025
+  5.660676838862744E+025
+  4.741182921511207E+025
+  3.893644014172585E+025
+  3.146934178684079E+025
+  2.514622851764475E+025
+  1.994581431825125E+025
+  1.575617650942905E+025
+  1.242967007529747E+025
+  9.814913470378442E+024
+  7.773166955402032E+024
+  6.185073117183350E+024
+  4.951961049248727E+024
+  3.994404568932909E+024
+  3.249631873919006E+024
+  2.668665136066343E+024
+  2.213627815113273E+024
+  1.855403920861035E+024
+  1.571696828965656E+024
+  1.345467655426889E+024
+  1.163704550700817E+024
+  1.016466534197392E+024
+  8.961480674774917E+023
+  7.969174590644674E+023
+  7.142902227105357E+023
+  6.448061613990557E+023
+  5.857856230480566E+023
+  5.351459237891475E+023
+  4.912634136061709E+023
+  4.528702010091735E+023
+  4.189773255324344E+023
+  3.888183542626347E+023
+  3.618091819009114E+023
+  3.375214560112832E+023
+  3.156687959696028E+023
+  2.961071732106127E+023
+  2.788539622721865E+023
+  2.641349755686807E+023
+  2.524763074381262E+023
+  2.448695059379783E+023
+  2.430563990450922E+023
+  2.500061122837966E+023
+  2.706936113566264E+023
+  3.133374235210307E+023
+  3.913113401410755E+023
+  5.260001816681414E+023
+  7.508973271004114E+023
+  1.117190797481813E+024
+  1.700867798481772E+024
+  2.610852923599910E+024
+  3.996713859663877E+024
+  6.052856801799589E+024
+  9.013835747965751E+024
+  1.313265573538650E+025
+  1.863159567981535E+025
+  2.562447244645092E+025
+  3.405862001035357E+025
+  4.371180973920923E+025
+  5.421426654246188E+025
+  6.509611298623975E+025
+  7.585385491934444E+025
+  8.601887810960034E+025
+  9.521247531324530E+025
+  1.031781994487801E+026
+  1.097899906033766E+026
+  1.150405256186026E+026
+  1.190171574310271E+026
+  1.218728455535268E+026
+  1.237977346438668E+026
+  1.249947440830393E+026
+  1.256605549641437E+026
+  1.259720906808076E+026
+  1.260779600436406E+026
+  1.260941477632033E+026
+  1.261032496777461E+026
+  1.261565833988397E+026
+  1.262784839701510E+026
+  1.264720297723915E+026
+  1.267253955659464E+026
+  1.270180595836978E+026
+  1.273262275907918E+026
+  1.276270557605232E+026
+  1.279014976177869E+026
+  1.281358136763291E+026
+  1.283219466182074E+026
+  1.284570816674259E+026
+  1.285427554214797E+026
+  1.285838020240167E+026
+  1.285872819184352E+026
+  1.285614861504271E+026
+  1.285151446063583E+026
+  1.284568779654945E+026
+  1.283948334320845E+026
+  5.513337346792324E+025
+  5.514081344603501E+025
+  5.514803862317681E+025
+  5.515409697474010E+025
+  5.515775480970673E+025
+  5.515746541314538E+025
+  5.515138707750664E+025
+  5.513745968133597E+025
+  5.511353908043251E+025
+  5.507760034442086E+025
+  5.502800175173205E+025
+  5.496378151341606E+025
+  5.488495204007227E+025
+  5.479274589912688E+025
+  5.468975386976350E+025
+  5.457988836979058E+025
+  5.446810842958999E+025
+  5.435985485695301E+025
+  5.426016708917488E+025
+  5.417248771673125E+025
+  5.409720531224026E+025
+  5.403003570236859E+025
+  5.396038838876989E+025
+  5.386990061386205E+025
+  5.373134118102486E+025
+  5.350808860053203E+025
+  5.315437748321415E+025
+  5.261649042213642E+025
+  5.183505472818130E+025
+  5.074857940249545E+025
+  4.929831695223818E+025
+  4.743442165276694E+025
+  4.512316230298379E+025
+  4.235461322322554E+025
+  3.914981486950298E+025
+  3.556595574436316E+025
+  3.169785847361592E+025
+  2.767420064334904E+025
+  2.364767215965081E+025
+  1.977967324907733E+025
+  1.622190132391914E+025
+  1.309314320490789E+025
+  1.044805261143800E+025
+  8.275896751970851E+024
+  6.528443342316522E+024
+  5.142919443542384E+024
+  4.055325417749939E+024
+  3.207206908208317E+024
+  2.548401516130272E+024
+  2.037524982976976E+024
+  1.641323288027213E+024
+  1.333557100753241E+024
+  1.093783434982374E+024
+  9.062150409760351E+023
+  7.587324097310586E+023
+  6.420665977519564E+023
+  5.491432512086089E+023
+  4.745665949990310E+023
+  4.142191960981715E+023
+  3.649545930811063E+023
+  3.243629108610459E+023
+  2.905930360841847E+023
+  2.622181943552345E+023
+  2.381346048169445E+023
+  2.174852360348219E+023
+  1.996025768492708E+023
+  1.839658266322448E+023
+  1.701690737450290E+023
+  1.578979478951189E+023
+  1.469129861139698E+023
+  1.370386364852358E+023
+  1.281575491622586E+023
+  1.202107148085937E+023
+  1.132053097412260E+023
+  1.072340927827387E+023
+  1.025133061414206E+023
+  9.945087378773187E+022
+  9.876407395444662E+022
+  1.016767485081872E+023
+  1.102414307921739E+023
+  1.278519553983484E+023
+  1.600361051216625E+023
+  2.156413038418416E+023
+  3.085386828360177E+023
+  4.599509942040407E+023
+  7.014214733911122E+023
+  1.078228764073218E+024
+  1.652646353422820E+024
+  2.505773804566574E+024
+  3.735705118609206E+024
+  5.448642825909867E+024
+  7.738558748898728E+024
+  1.065486634967835E+025
+  1.417808747656266E+025
+  1.821821028236318E+025
+  2.262343532687240E+025
+  2.719953597558013E+025
+  3.173727108864272E+025
+  3.604082191196116E+025
+  3.995080945082411E+025
+  4.335800979097864E+025
+  4.620704616339905E+025
+  4.849183987636631E+025
+  5.024584112166385E+025
+  5.153010335526366E+025
+  5.242156076934527E+025
+  5.300292445119542E+025
+  5.335479117757997E+025
+  5.355001687494290E+025
+  5.365013912662090E+025
+  5.370355137808297E+025
+  5.374513460015716E+025
+  5.379706698598188E+025
+  5.387052652810484E+025
+  5.396797818102384E+025
+  5.408572003074671E+025
+  5.421637648632826E+025
+  5.435108218499483E+025
+  5.448118872729719E+025
+  5.459942385989351E+025
+  5.470051759469245E+025
+  5.478137518236446E+025
+  5.484092435891620E+025
+  5.487978279624044E+025
+  5.489986125025500E+025
+  5.490395831090851E+025
+  5.489538203662013E+025
+  5.487765039241151E+025
+  5.485428556926241E+025
+  5.482867534931741E+025
+  1.101169253081524E+025
+  1.101264685999157E+025
+  1.101404791771354E+025
+  1.101584004174135E+025
+  1.101786964261784E+025
+  1.101986122769476E+025
+  1.102140741087955E+025
+  1.102197747482618E+025
+  1.102094683805091E+025
+  1.101765146075445E+025
+  1.101146642180243E+025
+  1.100190265667241E+025
+  1.098871290412878E+025
+  1.097199413090721E+025
+  1.095226935463965E+025
+  1.093052900073241E+025
+  1.090821162970409E+025
+  1.088710623827637E+025
+  1.086916379817728E+025
+  1.085621466936229E+025
+  1.084960068722133E+025
+  1.084974471868059E+025
+  1.085569417637125E+025
+  1.086468603721182E+025
+  1.087178748355350E+025
+  1.086966765618587E+025
+  1.084855293547269E+025
+  1.079641256172776E+025
+  1.069941513631098E+025
+  1.054268954517102E+025
+  1.031141237588578E+025
+  9.992220263345668E+024
+  9.574900383947235E+024
+  9.054239033788281E+024
+  8.431809303553841E+024
+  7.717372263411458E+024
+  6.929490972531705E+024
+  6.094970527717121E+024
+  5.246893224298547E+024
+  4.421326790138888E+024
+  3.653188468468447E+024
+  2.970865765421161E+024
+  2.388828855789856E+024
+  1.906866605067909E+024
+  1.516047356343220E+024
+  1.203774323733842E+024
+  9.567857443770145E+023
+  7.627343296897397E+023
+  6.108758659352737E+023
+  4.922458354833579E+023
+  3.995700816943521E+023
+  3.270578093109192E+023
+  2.701600464328977E+023
+  2.253362098644308E+023
+  1.898477718019508E+023
+  1.615850318292965E+023
+  1.389263695454382E+023
+  1.206263729106910E+023
+  1.057282572607324E+023
+  9.349602985952928E+022
+  8.336234916270492E+022
+  7.488866958168724E+022
+  6.773490051248174E+022
+  6.163637881075372E+022
+  5.638643665030743E+022
+  5.182324170581665E+022
+  4.781990250852738E+022
+  4.427708146847315E+022
+  4.111755692696982E+022
+  3.828234148216082E+022
+  3.572811726897172E+022
+  3.342591497940553E+022
+  3.136117541237873E+022
+  2.953563735194909E+022
+  2.797196248252435E+022
+  2.672273665900314E+022
+  2.588661577859062E+022
+  2.563609293866939E+022
+  2.626385712585421E+022
+  2.825817586821294E+022
+  3.242221079981131E+022
+  4.005733973949239E+022
+  5.323529494955712E+022
+  7.518566514801267E+022
+  1.108191207193562E+023
+  1.673843366291702E+023
+  2.552058436513305E+023
+  3.883558822505507E+023
+  5.849621598114326E+023
+  8.666429467901799E+023
+  1.256317836119049E+024
+  1.773449223838600E+024
+  2.426702426216805E+024
+  3.208685778184692E+024
+  4.096048028603685E+024
+  5.051989685429266E+024
+  6.031125157751486E+024
+  6.985994495430169E+024
+  7.873561357101964E+024
+  8.660245216752723E+024
+  9.324680193928704E+024
+  9.858136428815109E+024
+  1.026309690349619E+025
+  1.055073040545175E+025
+  1.073797406663961E+025
+  1.084475187500509E+025
+  1.089162864826482E+025
+  1.089801221798949E+025
+  1.088090028492413E+025
+  1.085411581487645E+025
+  1.082796210304898E+025
+  1.080923119924153E+025
+  1.080150093045401E+025
+  1.080565045629137E+025
+  1.082051481940606E+025
+  1.084359231299537E+025
+  1.087172135441888E+025
+  1.090165857895395E+025
+  1.093051429025160E+025
+  1.095602874133899E+025
+  1.097669674656032E+025
+  1.099176612464143E+025
+  1.100114723715578E+025
+  1.100527442102002E+025
+  1.100495210308560E+025
+  1.100120379057587E+025
+  1.099513567894232E+025
+  1.098782846421133E+025
+  1.098026253802540E+025
+  1.097327235838831E+025
+  9.873089388784283E+025
+  9.874109071745337E+025
+  9.875310674443995E+025
+  9.876590388267808E+025
+  9.877776156515894E+025
+  9.878612829511471E+025
+  9.878757344663272E+025
+  9.877786745241175E+025
+  9.875220052440638E+025
+  9.870556946656144E+025
+  9.863332487560827E+025
+  9.853183081254520E+025
+  9.839917063639318E+025
+  9.823580733270452E+025
+  9.804507540195770E+025
+  9.783336213658157E+025
+  9.760983601821578E+025
+  9.738559929441340E+025
+  9.717218314063023E+025
+  9.697937038822997E+025
+  9.681242040727766E+025
+  9.666887337023649E+025
+  9.653521115974617E+025
+  9.638373287177735E+025
+  9.617005141618396E+025
+  9.583162976698023E+025
+  9.528775703778365E+025
+  9.444132927697402E+025
+  9.318275905352525E+025
+  9.139628626105096E+025
+  8.896886569899092E+025
+  8.580160125237205E+025
+  8.182330894414660E+025
+  7.700517764681152E+025
+  7.137468869763582E+025
+  6.502611249206368E+025
+  5.812434735911535E+025
+  5.089906618053187E+025
+  4.362749598177633E+025
+  3.660672507441765E+025
+  3.011970678112923E+025
+  2.439173528529094E+025
+  1.953124752832406E+025
+  1.552574259587012E+025
+  1.229234215710859E+025
+  9.719927894502921E+024
+  7.693803587215249E+024
+  6.108417493299515E+024
+  4.872683574693729E+024
+  3.911107750104523E+024
+  3.162779167931466E+024
+  2.579454232857328E+024
+  2.123411946717296E+024
+  1.765421372214332E+024
+  1.482966979673218E+024
+  1.258771997673900E+024
+  1.079607181553879E+024
+  9.353496959789976E+023
+  8.182502748414581E+023
+  7.223683513490867E+023
+  6.431398163645034E+023
+  5.770479935102958E+023
+  5.213741300089605E+023
+  4.740087149244083E+023
+  4.333091244330705E+023
+  3.979924863724464E+023
+  3.670553477610994E+023
+  3.397138413754371E+023
+  3.153597190818324E+023
+  2.935290028927018E+023
+  2.738812711836958E+023
+  2.561889533432942E+023
+  2.403377219287119E+023
+  2.263415296928516E+023
+  2.143795996236849E+023
+  2.048685538328292E+023
+  1.985920009176603E+023
+  1.969237804863094E+023
+  2.022014301823008E+023
+  2.183349220057551E+023
+  2.517729159269995E+023
+  3.129924106213800E+023
+  4.187191512734659E+023
+  5.951051429155076E+023
+  8.820463898401055E+023
+  1.338650823599389E+024
+  2.049462050371437E+024
+  3.130280814010271E+024
+  4.731181286656232E+024
+  7.032558011928507E+024
+  1.022795755991304E+025
+  1.448570174783244E+025
+  1.988871053593728E+025
+  2.639021557682248E+025
+  3.381250620795563E+025
+  4.186519101611876E+025
+  5.018295591352027E+025
+  5.837760231669637E+025
+  6.609103647294166E+025
+  7.303727371014750E+025
+  7.902652753617379E+025
+  8.397043083143298E+025
+  8.787204592728789E+025
+  9.080649373799563E+025
+  9.289796899043045E+025
+  9.429749554750181E+025
+  9.516397310900872E+025
+  9.564953776259518E+025
+  9.588927509453676E+025
+  9.599485471222987E+025
+  9.605152109032784E+025
+  9.611788468361527E+025
+  9.622797545846129E+025
+  9.639499498228274E+025
+  9.661614657858598E+025
+  9.687788521610653E+025
+  9.716095900842158E+025
+  9.744473231286769E+025
+  9.771046538779942E+025
+  9.794342851575463E+025
+  9.813390428780992E+025
+  9.827726390247570E+025
+  9.837339306947965E+025
+  9.842577198337207E+025
+  9.844044986693154E+025
+  9.842503767457651E+025
+  9.838779730444002E+025
+  9.833692948496487E+025
+  9.828009263033576E+025
+  9.822410677931708E+025
+  8.036857056203392E+025
+  8.038005931290395E+025
+  8.039077214982547E+025
+  8.039918235023473E+025
+  8.040339036242078E+025
+  8.040109742625740E+025
+  8.038964862838180E+025
+  8.036615628383557E+025
+  8.032770013105155E+025
+  8.027161835962310E+025
+  8.019587630335267E+025
+  8.009947149538897E+025
+  7.998282452463665E+025
+  7.984809093260606E+025
+  7.969931078230443E+025
+  7.954230348481874E+025
+  7.938422079410338E+025
+  7.923268966911436E+025
+  7.909450989835326E+025
+  7.897392059949980E+025
+  7.887051270824778E+025
+  7.877693373598759E+025
+  7.867659541424085E+025
+  7.854164349873923E+025
+  7.833147477264155E+025
+  7.799208829581982E+025
+  7.745654232688323E+025
+  7.664676522496246E+025
+  7.547694448901509E+025
+  7.385868499263003E+025
+  7.170805472212065E+025
+  6.895447234534364E+025
+  6.555108079701716E+025
+  6.148576701473276E+025
+  5.679136484196821E+025
+  5.155294908446449E+025
+  4.590975204492981E+025
+  4.004946276961510E+025
+  3.419379755698475E+025
+  2.857626168907500E+025
+  2.341553212751628E+025
+  1.888205170008677E+025
+  1.505322213014739E+025
+  1.191196712662166E+025
+  9.387244014573387E+024
+  7.387287131135329E+024
+  5.818837525573809E+024
+  4.596885862792905E+024
+  3.648589730457858E+024
+  2.913927720886673E+024
+  2.344722840438823E+024
+  1.902999234688535E+024
+  1.559198599438302E+024
+  1.290515664767406E+024
+  1.079459386764032E+024
+  9.126647823316926E+023
+  7.799403954616989E+023
+  6.735198672142404E+023
+  5.874820373250601E+023
+  5.173060378960749E+023
+  4.595323485513593E+023
+  4.115058750956847E+023
+  3.711819026069158E+023
+  3.369799181562836E+023
+  3.076737247494449E+023
+  2.823090203821131E+023
+  2.601417841716236E+023
+  2.405925026982606E+023
+  2.232125997050522E+023
+  2.076605242306125E+023
+  1.936859410530194E+023
+  1.811215125127781E+023
+  1.698830698730572E+023
+  1.599808378705635E+023
+  1.515472267974754E+023
+  1.448911688171886E+023
+  1.405959325096680E+023
+  1.396879708461658E+023
+  1.439200388916549E+023
+  1.562339216083712E+023
+  1.814973013525105E+023
+  2.276441196581706E+023
+  3.073820799793318E+023
+  4.406495426782930E+023
+  6.579767541376771E+023
+  1.004780714719651E+024
+  1.546319268383849E+024
+  2.372444834499387E+024
+  3.600329127263738E+024
+  5.371936427081570E+024
+  7.841339301381303E+024
+  1.114548991432966E+025
+  1.535758945019629E+025
+  2.045177530006075E+025
+  2.630037108250897E+025
+  3.268608293506549E+025
+  3.932956121749124E+025
+  4.592872675114585E+025
+  5.219977624731988E+025
+  5.791056010825904E+025
+  6.290066968802321E+025
+  6.708711147659058E+025
+  7.045806710421775E+025
+  7.305905303675154E+025
+  7.497588549035172E+025
+  7.631786196751553E+025
+  7.720321896560847E+025
+  7.774774013734846E+025
+  7.805660221873554E+025
+  7.821915395224117E+025
+  7.830620146256998E+025
+  7.836937731573412E+025
+  7.844219383658054E+025
+  7.854237625891428E+025
+  7.867504081375096E+025
+  7.883625918727213E+025
+  7.901656940028041E+025
+  7.920407043537234E+025
+  7.938686118604261E+025
+  7.955472042621653E+025
+  7.970004320250328E+025
+  7.981814126247385E+025
+  7.990708329485762E+025
+  7.996727848520031E+025
+  8.000096447384812E+025
+  8.001167624685238E+025
+  8.000374425925078E+025
+  7.998189541700098E+025
+  7.995097760952376E+025
+  7.991576821485441E+025
+  1.366531004615902E+026
+  1.366721076122312E+026
+  1.366906550511869E+026
+  1.367063445058457E+026
+  1.367160638975311E+026
+  1.367159199431416E+026
+  1.367013010917434E+026
+  1.366670945652598E+026
+  1.366080556022891E+026
+  1.365193548636355E+026
+  1.363972811601788E+026
+  1.362400255501537E+026
+  1.360484534595108E+026
+  1.358267437124797E+026
+  1.355827385259991E+026
+  1.353278308945694E+026
+  1.350762241887668E+026
+  1.348434322974134E+026
+  1.346439493183404E+026
+  1.344881084851698E+026
+  1.343782664496327E+026
+  1.343045771563979E+026
+  1.342407389778473E+026
+  1.341401891362980E+026
+  1.339332668646149E+026
+  1.335258690609359E+026
+  1.328000904228340E+026
+  1.316172933172377E+026
+  1.298240044940272E+026
+  1.272609747227379E+026
+  1.237756113982866E+026
+  1.192377125401596E+026
+  1.135578942771231E+026
+  1.067072588936733E+026
+  9.873575156434645E+025
+  8.978552963425022E+025
+  8.009497125421873E+025
+  6.998930703453144E+025
+  5.985580107322554E+025
+  5.010496473886899E+025
+  4.112372949755266E+025
+  3.321631557936177E+025
+  2.652461411534935E+025
+  2.102447950824662E+025
+  1.659613245060225E+025
+  1.308231232147662E+025
+  1.032209974704478E+025
+  8.168196072354121E+024
+  6.493998969541872E+024
+  5.194930854832037E+024
+  4.186871039607623E+024
+  3.403382429458555E+024
+  2.792661238566277E+024
+  2.314671290231889E+024
+  1.938656160925426E+024
+  1.641078073510568E+024
+  1.403961204300264E+024
+  1.213587043299322E+024
+  1.059481499707877E+024
+  9.336363633454950E+023
+  8.299151713674566E+023
+  7.436021297015894E+023
+  6.710609082481843E+023
+  6.094772423143623E+023
+  5.566651802145190E+023
+  5.109215789895866E+023
+  4.709172123002011E+023
+  4.356157964760316E+023
+  4.042145600535327E+023
+  3.761018919405933E+023
+  3.508293395227358E+023
+  3.280970711521646E+023
+  3.077542337895460E+023
+  2.898189429354572E+023
+  2.745276957228512E+023
+  2.624319039082399E+023
+  2.545715548110361E+023
+  2.527747720209928E+023
+  2.601596910891764E+023
+  2.819539223145384E+023
+  3.267979856233305E+023
+  4.087597136701614E+023
+  5.503455619787102E+023
+  7.868249706739774E+023
+  1.172131814882478E+024
+  1.786380235159716E+024
+  2.744491166698556E+024
+  4.204391320808084E+024
+  6.371543262881097E+024
+  9.494130855751819E+024
+  1.384030820656059E+025
+  1.964640155902391E+025
+  2.703482018879783E+025
+  3.595251190552794E+025
+  4.616721668352891E+025
+  5.729018511166092E+025
+  6.882583322639287E+025
+  8.024170817339730E+025
+  9.104084322566253E+025
+  1.008201327714776E+026
+  1.093049211670511E+026
+  1.163580568026790E+026
+  1.219680159742363E+026
+  1.262238208933099E+026
+  1.292845516005972E+026
+  1.313494367089420E+026
+  1.326320969739070E+026
+  1.333404278379889E+026
+  1.336622381354427E+026
+  1.337560930965359E+026
+  1.337466119220184E+026
+  1.337234839969658E+026
+  1.337435064450637E+026
+  1.338349277053789E+026
+  1.340033166260257E+026
+  1.342381253395809E+026
+  1.345191424151428E+026
+  1.348221704391502E+026
+  1.351234864004103E+026
+  1.354028938774130E+026
+  1.356453967002131E+026
+  1.358416949899592E+026
+  1.359878282614301E+026
+  1.360843388011412E+026
+  1.361352531189808E+026
+  1.361470301451188E+026
+  1.361275716150061E+026
+  1.360854290573141E+026
+  1.360292489283600E+026
+  1.359673927243674E+026
+  1.997024771292438E+026
+  1.997267540795418E+026
+  1.997535772900151E+026
+  1.997803179905846E+026
+  1.998030270132165E+026
+  1.998162223391120E+026
+  1.998128965764207E+026
+  1.997847972804507E+026
+  1.997229935099437E+026
+  1.996187782600161E+026
+  1.994648784305073E+026
+  1.992568603086773E+026
+  1.989945797143928E+026
+  1.986834743351200E+026
+  1.983354341572164E+026
+  1.979689511021929E+026
+  1.976082557181691E+026
+  1.972811976581729E+026
+  1.970157223840499E+026
+  1.968349441929508E+026
+  1.967510087165182E+026
+  1.967581537622745E+026
+  1.968255818922180E+026
+  1.968909163383412E+026
+  1.968550982701817E+026
+  1.965795915382083E+026
+  1.958867069455447E+026
+  1.945637734966108E+026
+  1.923717950166722E+026
+  1.890591264471704E+026
+  1.843805111819269E+026
+  1.781214019348073E+026
+  1.701266852824479E+026
+  1.603316478578914E+026
+  1.487913257223595E+026
+  1.357026017959885E+026
+  1.214122476538185E+026
+  1.064045217734387E+026
+  9.126479552332232E+025
+  7.662108814118324E+025
+  6.307228996503056E+025
+  5.109640343854005E+025
+  4.092598639206525E+025
+  3.253917881896316E+025
+  2.576551352510748E+025
+  2.037433600311755E+025
+  1.612670454834354E+025
+  1.280227333787800E+025
+  1.021062923012857E+025
+  8.193791516862851E+024
+  6.624195706277434E+024
+  5.400742981978844E+024
+  4.444346391117298E+024
+  3.693695555166702E+024
+  3.101551091893467E+024
+  2.631656870439927E+024
+  2.256246437026063E+024
+  1.954071373542262E+024
+  1.708864995177565E+024
+  1.508157558654366E+024
+  1.342369276490699E+024
+  1.204119687109494E+024
+  1.087703794931124E+024
+  9.886958418683644E+023
+  9.036503182321381E+023
+  8.298769170966809E+023
+  7.652717719079510E+023
+  7.081917442807431E+023
+  6.573620349010326E+023
+  6.118102933220954E+023
+  5.708230609490274E+023
+  5.339232273030459E+023
+  5.008707796645693E+023
+  4.716942820227143E+023
+  4.467684045586801E+023
+  4.269651466114987E+023
+  4.139255417373281E+023
+  4.105277237748518E+023
+  4.216699174253424E+023
+  4.555465998525661E+023
+  5.256740124333432E+023
+  6.540125486594238E+023
+  8.756202415152144E+023
+  1.245310853585117E+024
+  1.846698458082392E+024
+  2.803645680623165E+024
+  4.293282500732966E+024
+  6.558158014216437E+024
+  9.912474907495470E+024
+  1.473366429100265E+025
+  2.142620405348492E+025
+  3.034095035277797E+025
+  4.164881317538277E+025
+  5.524784451281590E+025
+  7.076066217943920E+025
+  8.757298241727197E+025
+  1.049132100710235E+026
+  1.219620768673999E+026
+  1.379642868982198E+026
+  1.523170507541127E+026
+  1.646209172425449E+026
+  1.746908872580389E+026
+  1.825354951098822E+026
+  1.883161166075487E+026
+  1.922986281132515E+026
+  1.948065631254594E+026
+  1.961811170039432E+026
+  1.967501361179216E+026
+  1.968061671120460E+026
+  1.965926685194986E+026
+  1.962972228208062E+026
+  1.960506217933899E+026
+  1.959307456962495E+026
+  1.959701020919075E+026
+  1.961657608169721E+026
+  1.964903235815382E+026
+  1.969026075182100E+026
+  1.973569487039994E+026
+  1.978104050803941E+026
+  1.982275587168846E+026
+  1.985829897412027E+026
+  1.988617800178164E+026
+  1.990586020459674E+026
+  1.991760181033093E+026
+  1.992224911877800E+026
+  1.992103741231647E+026
+  1.991540500942533E+026
+  1.990684435386703E+026
+  1.989679768069617E+026
+  1.988658885270005E+026
+  1.715297378898247E+026
+  1.715533791354819E+026
+  1.715770622099930E+026
+  1.715979078116163E+026
+  1.716120827424050E+026
+  1.716147012416208E+026
+  1.715998993352996E+026
+  1.715611158758256E+026
+  1.714915807639705E+026
+  1.713850441741017E+026
+  1.712367173479850E+026
+  1.710443289776992E+026
+  1.708091741517986E+026
+  1.705369952640078E+026
+  1.702384882481140E+026
+  1.699292038830824E+026
+  1.696286241889097E+026
+  1.693582374010375E+026
+  1.691385145986841E+026
+  1.689848103850970E+026
+  1.689023633327098E+026
+  1.688807406656097E+026
+  1.688882289869474E+026
+  1.688667917456894E+026
+  1.687282759974395E+026
+  1.683525526464014E+026
+  1.675882301671497E+026
+  1.662565173009764E+026
+  1.641587443678398E+026
+  1.610879727462692E+026
+  1.568449622535143E+026
+  1.512584105190035E+026
+  1.442086980693527E+026
+  1.356532948678474E+026
+  1.256505740170569E+026
+  1.143773251810448E+026
+  1.021343425352584E+026
+  8.933488662010867E+025
+  7.647327881985881E+025
+  6.407543345847560E+025
+  5.263884549518956E+025
+  4.255655663696249E+025
+  3.401456980077365E+025
+  2.698625002555122E+025
+  2.132190914873316E+025
+  1.682308180759826E+025
+  1.328586133345866E+025
+  1.052314392580404E+025
+  8.373829945543961E+024
+  6.704655853362276E+024
+  5.408294650404008E+024
+  4.399887809986756E+024
+  3.613200284207391E+024
+  2.996993900801825E+024
+  2.511870934650890E+024
+  2.127654199580951E+024
+  1.821278007231734E+024
+  1.575125155538428E+024
+  1.375734318583713E+024
+  1.212805471105558E+024
+  1.078440154015766E+024
+  9.665641464676737E+023
+  8.724903933704442E+023
+  7.925890239226426E+023
+  7.240387794611934E+023
+  6.646402132050378E+023
+  6.126758076152186E+023
+  5.668059008207782E+023
+  5.259922707288164E+023
+  4.894436645185520E+023
+  4.565797833966983E+023
+  4.270125972340650E+023
+  4.005468411034519E+023
+  3.772057995740192E+023
+  3.572949873213112E+023
+  3.415265035273933E+023
+  3.312426624788356E+023
+  3.288015997165410E+023
+  3.382230114249202E+023
+  3.662419490211693E+023
+  4.239839093685097E+023
+  5.295516515740646E+023
+  7.118887012000371E+023
+  1.016321396808451E+024
+  1.512111657217996E+024
+  2.302058018849042E+024
+  3.533484570226269E+024
+  5.408628133510975E+024
+  8.190253062900423E+024
+  1.219521648431406E+025
+  1.776500329051750E+025
+  2.519908515888948E+025
+  3.464969952991115E+025
+  4.604340451989774E+025
+  5.907705538467257E+025
+  7.324781559875123E+025
+  8.791761779770653E+025
+  1.024033773199474E+026
+  1.160698667507656E+026
+  1.284042779880264E+026
+  1.390600168487784E+026
+  1.478676496379418E+026
+  1.548190496693944E+026
+  1.600347375266651E+026
+  1.637244446347589E+026
+  1.661485572650363E+026
+  1.675849853774744E+026
+  1.683033234479156E+026
+  1.685464274881199E+026
+  1.685186902692131E+026
+  1.683800552789536E+026
+  1.682448331039686E+026
+  1.681844319338442E+026
+  1.682330842276972E+026
+  1.683955595144223E+026
+  1.686557802991283E+026
+  1.689852903736458E+026
+  1.693507019149737E+026
+  1.697195400340845E+026
+  1.700642323962266E+026
+  1.703642826772556E+026
+  1.706068924395317E+026
+  1.707864576002346E+026
+  1.709034282064377E+026
+  1.709629235345700E+026
+  1.709733032169275E+026
+  1.709448241684077E+026
+  1.708885591366005E+026
+  1.708156341127379E+026
+  1.707367087419248E+026
+  4.886865902970056E+023
+  4.887389047830463E+023
+  4.888026018243173E+023
+  4.888728281871734E+023
+  4.889410937817899E+023
+  4.889945255186942E+023
+  4.890156771754504E+023
+  4.889830512653694E+023
+  4.888723941284150E+023
+  4.886589101757512E+023
+  4.883203436064175E+023
+  4.878406640064519E+023
+  4.872139866542605E+023
+  4.864482178871965E+023
+  4.855677499858231E+023
+  4.846144303116060E+023
+  4.836460326506967E+023
+  4.827315682260990E+023
+  4.819430041614443E+023
+  4.813433238043162E+023
+  4.809713518822593E+023
+  4.808243220300517E+023
+  4.808396991842063E+023
+  4.808781935738993E+023
+  4.807101474826961E+023
+  4.800075180925820E+023
+  4.783435548724779E+023
+  4.752020557349129E+023
+  4.699978512346518E+023
+  4.621098923110942E+023
+  4.509278308740318E+023
+  4.359119505383772E+023
+  4.166643361190156E+023
+  3.930060166884793E+023
+  3.650506215868098E+023
+  3.332606549015347E+023
+  2.984695069833963E+023
+  2.618532023757173E+023
+  2.248427972848289E+023
+  1.889816195249700E+023
+  1.557486330669188E+023
+  1.263312282735672E+023
+  1.013154291355855E+023
+  8.066040095009956E+022
+  6.395732767710014E+022
+  5.064670116490908E+022
+  4.014626441054360E+022
+  3.191759767090471E+022
+  2.549447911212172E+022
+  2.048944839116886E+022
+  1.658917787925717E+022
+  1.354500311508024E+022
+  1.116214460228447E+022
+  9.289411327243434E+021
+  7.810165560849442E+021
+  6.634777538002831E+021
+  5.694521044362516E+021
+  4.936739075846635E+021
+  4.321071473786039E+021
+  3.816541746589143E+021
+  3.399324091303902E+021
+  3.051040982689027E+021
+  2.757470327415212E+021
+  2.507566500358652E+021
+  2.292720843700840E+021
+  2.106204503777575E+021
+  1.942750244351911E+021
+  1.798240706570109E+021
+  1.669479179313599E+021
+  1.554026075745879E+021
+  1.450090865341883E+021
+  1.356476253012535E+021
+  1.272580333605675E+021
+  1.198475270033747E+021
+  1.135100657441818E+021
+  1.084640371939302E+021
+  1.051199259717103E+021
+  1.041968182711448E+021
+  1.069171627502577E+021
+  1.153239513232928E+021
+  1.327836710216780E+021
+  1.647607514843823E+021
+  2.199702337548703E+021
+  3.120243291256929E+021
+  4.616646892800442E+021
+  6.995804280847007E+021
+  1.069599992031862E+022
+  1.631647272913482E+022
+  2.463207749462513E+022
+  3.657143867376527E+022
+  5.312636587615280E+022
+  7.515156484629958E+022
+  1.030525284222744E+023
+  1.365579661581446E+023
+  1.747169988814747E+023
+  2.159982148630937E+023
+  2.584895949969487E+023
+  3.001712458895551E+023
+  3.391911978004511E+023
+  3.740823464593856E+023
+  4.038850913979680E+023
+  4.281714655525239E+023
+  4.469904098425271E+023
+  4.607648826075899E+023
+  4.701708817742098E+023
+  4.760209039146258E+023
+  4.791648991634610E+023
+  4.804138416068206E+023
+  4.804859909810803E+023
+  4.799735672379691E+023
+  4.793269357231585E+023
+  4.788534859847056E+023
+  4.787284820174261E+023
+  4.790149953755495E+023
+  4.796896894817404E+023
+  4.806709765685337E+023
+  4.818461882986308E+023
+  4.830949997734266E+023
+  4.843073175376422E+023
+  4.853949263678987E+023
+  4.862971411840132E+023
+  4.869814307039415E+023
+  4.874404677568011E+023
+  4.876872249017621E+023
+  4.877494128556783E+023
+  4.876639555374980E+023
+  4.874719469931843E+023
+  4.872146429891879E+023
+  4.869306845202917E+023
+  4.866543495833376E+023
+  4.124978191211366E+025
+  4.125320452575478E+025
+  4.125804468269433E+025
+  4.126406083151480E+025
+  4.127067245612648E+025
+  4.127687176111275E+025
+  4.128118126056342E+025
+  4.128167257215546E+025
+  4.127605408317051E+025
+  4.126184260991883E+025
+  4.123661755698333E+025
+  4.119833789783913E+025
+  4.114569287844855E+025
+  4.107844477022360E+025
+  4.099770690371833E+025
+  4.090609030948009E+025
+  4.080765080693177E+025
+  4.070757576290916E+025
+  4.061156742718712E+025
+  4.052490936520247E+025
+  4.045124321447844E+025
+  4.039113038873287E+025
+  4.034052033896880E+025
+  4.028928569660966E+025
+  4.022000877368664E+025
+  4.010721089762189E+025
+  3.991720817416710E+025
+  3.960876051523433E+025
+  3.913466080492739E+025
+  3.844438680774918E+025
+  3.748789617947279E+025
+  3.622055784639175E+025
+  3.460904902420588E+025
+  3.263778524521487E+025
+  3.031510169110706E+025
+  2.767803311968982E+025
+  2.479428566187920E+025
+  2.176005792597327E+025
+  1.869293313560079E+025
+  1.572016048225463E+025
+  1.296406491710187E+025
+  1.052317037096154E+025
+  8.446342592415512E+024
+  6.730503544445851E+024
+  5.342031415046958E+024
+  4.234756444768955E+024
+  3.360564870449584E+024
+  2.674924702258088E+024
+  2.139246276330179E+024
+  1.721436578900003E+024
+  1.395524873934989E+024
+  1.140885474302596E+024
+  9.413503032110145E+023
+  7.843597904863941E+023
+  6.602169801775031E+023
+  5.614640855389731E+023
+  4.823777002919422E+023
+  4.185687308307566E+023
+  3.666699771153448E+023
+  3.240946860651143E+023
+  2.888513379824957E+023
+  2.594023310421609E+023
+  2.345565800316836E+023
+  2.133881279577407E+023
+  1.951746201393063E+023
+  1.793509161154710E+023
+  1.654742504844586E+023
+  1.531982484249286E+023
+  1.422538121376972E+023
+  1.324354850099357E+023
+  1.235924442898424E+023
+  1.156238594340543E+023
+  1.084790993832158E+023
+  1.021643439429312E+023
+  9.675879521170129E+022
+  9.244624717473663E+022
+  8.957174623717886E+022
+  8.873910024135023E+022
+  9.097380590631803E+022
+  9.798823558312637E+022
+  1.126018563088498E+023
+  1.393877623388178E+023
+  1.856340400055114E+023
+  2.627154955307046E+023
+  3.879507614317897E+023
+  5.869425333308433E+023
+  8.962214037297084E+023
+  1.365682355086298E+024
+  2.059767475007130E+024
+  3.055597625898419E+024
+  4.435379420600545E+024
+  6.269699050962748E+024
+  8.591568660169073E+024
+  1.137762533343367E+025
+  1.454812344814696E+025
+  1.797539968022350E+025
+  2.150067251585143E+025
+  2.495679331839418E+025
+  2.819112632334588E+025
+  3.108342536235259E+025
+  3.355580490657166E+025
+  3.557450889141678E+025
+  3.714515459607569E+025
+  3.830402744779566E+025
+  3.910793342162493E+025
+  3.962447591076642E+025
+  3.992383269367820E+025
+  4.007244930420089E+025
+  4.012864829358513E+025
+  4.013995989429167E+025
+  4.014192758491960E+025
+  4.015814725924168E+025
+  4.020130399445212E+025
+  4.027495463895782E+025
+  4.037577573150015E+025
+  4.049597778892817E+025
+  4.062560092659630E+025
+  4.075446152580929E+025
+  4.087360517034759E+025
+  4.097621482194080E+025
+  4.105800425448322E+025
+  4.111718689480647E+025
+  4.115414957659454E+025
+  4.117097199322610E+025
+  4.117090327328214E+025
+  4.115785490832843E+025
+  4.113594760096805E+025
+  4.110915792106439E+025
+  4.108108033307831E+025
+  4.105478635261021E+025
+  1.851272853230840E+026
+  1.851470395049030E+026
+  1.851703196650458E+026
+  1.851951401924713E+026
+  1.852182136865704E+026
+  1.852346841170123E+026
+  1.852380581341303E+026
+  1.852203887527144E+026
+  1.851727304878227E+026
+  1.850859198052167E+026
+  1.849516630606983E+026
+  1.847638364899449E+026
+  1.845198661556657E+026
+  1.842220064571392E+026
+  1.838782760956449E+026
+  1.835027742696166E+026
+  1.831151011157935E+026
+  1.827386458770711E+026
+  1.823975888810879E+026
+  1.821125948541989E+026
+  1.818953505089271E+026
+  1.817422988231982E+026
+  1.816281153055079E+026
+  1.814996251747942E+026
+  1.812709501338391E+026
+  1.808206913603067E+026
+  1.799919141450901E+026
+  1.785956266172473E+026
+  1.764183634852169E+026
+  1.732343867564831E+026
+  1.688228334293956E+026
+  1.629897523917760E+026
+  1.555942372005530E+026
+  1.465766902292225E+026
+  1.359857046957945E+026
+  1.239984259179160E+026
+  1.109281768668107E+026
+  9.721349571385273E+025
+  8.338532166681293E+025
+  7.001398594033776E+025
+  5.764395761299991E+025
+  4.671018141412527E+025
+  3.742422459593625E+025
+  2.976584128272134E+025
+  2.357939660561680E+025
+  1.865445896707480E+025
+  1.477308920800195E+025
+  1.173432639666605E+025
+  9.364508133295852E+024
+  7.519541401566905E+024
+  6.083061369936501E+024
+  4.962829719752124E+024
+  4.086675587574505E+024
+  3.398636140860180E+024
+  2.855579921738081E+024
+  2.424393049535722E+024
+  2.079706655826446E+024
+  1.802099739902151E+024
+  1.576698583927862E+024
+  1.392096395829128E+024
+  1.239526069767234E+024
+  1.112230111347608E+024
+  1.004982574367589E+024
+  9.137273647838855E+023
+  8.353052287637728E+023
+  7.672482013425581E+023
+  7.076254233953686E+023
+  6.549282661970378E+023
+  6.079858963892316E+023
+  5.659050597850228E+023
+  5.280302878003675E+023
+  4.939233301501727E+023
+  4.633639105260308E+023
+  4.363786218765345E+023
+  4.133119984963956E+023
+  3.949650844325283E+023
+  3.828443433732732E+023
+  3.795903722701696E+023
+  3.896949136650707E+023
+  4.206691974811677E+023
+  4.848977834281579E+023
+  6.024953362297316E+023
+  8.055625538948802E+023
+  1.144272614150881E+024
+  1.695134688714307E+024
+  2.571446477589495E+024
+  3.935169664157795E+024
+  6.007996166415514E+024
+  9.076988633796736E+024
+  1.348681260826821E+025
+  1.960661255465977E+025
+  2.775628224318929E+025
+  3.809112884836918E+025
+  5.051727435477585E+025
+  6.468973737266584E+025
+  8.004802252407761E+025
+  9.588906334165692E+025
+  1.114673817408162E+026
+  1.260968295584176E+026
+  1.392310247896028E+026
+  1.505092588609217E+026
+  1.597661427123303E+026
+  1.670120911938123E+026
+  1.723958813821249E+026
+  1.761603616732939E+026
+  1.785996493163761E+026
+  1.800226824958946E+026
+  1.807250610847629E+026
+  1.809692329949412E+026
+  1.809721950833464E+026
+  1.808996325381160E+026
+  1.808654453160131E+026
+  1.809356466101284E+026
+  1.811355645043808E+026
+  1.814591617148411E+026
+  1.818792067400025E+026
+  1.823570796327316E+026
+  1.828512169244931E+026
+  1.833235537878027E+026
+  1.837437137227984E+026
+  1.840910390151596E+026
+  1.843548147033572E+026
+  1.845332147620557E+026
+  1.846315565375334E+026
+  1.846603293328236E+026
+  1.846332418933665E+026
+  1.845654460032592E+026
+  1.844721351534307E+026
+  1.843675841781834E+026
+  1.842645479614435E+026
+  8.906642159024245E+023
+  8.907173946735364E+023
+  8.908251636056350E+023
+  8.909884380499098E+023
+  8.911987010480415E+023
+  8.914353244404450E+023
+  8.916641355054354E+023
+  8.918376982360420E+023
+  8.918975951319185E+023
+  8.917791136732985E+023
+  8.914183244331083E+023
+  8.907610737983245E+023
+  8.897731269446290E+023
+  8.884503357991178E+023
+  8.868272979311544E+023
+  8.849826941804118E+023
+  8.830394278241568E+023
+  8.811578603198976E+023
+  8.795208924815762E+023
+  8.783104168581157E+023
+  8.776757433519035E+023
+  8.776958596763140E+023
+  8.783386423096574E+023
+  8.794211688662635E+023
+  8.805759228954206E+023
+  8.812278479569558E+023
+  8.805869530604823E+023
+  8.776606612654527E+023
+  8.712895043463832E+023
+  8.602091246000104E+023
+  8.431405673902899E+023
+  8.189089045288240E+023
+  7.865865129307604E+023
+  7.456512466452447E+023
+  6.961414060918696E+023
+  6.387802526793284E+023
+  5.750360879384720E+023
+  5.070844900142739E+023
+  4.376518013054406E+023
+  3.697446014011178E+023
+  3.063041500902910E+023
+  2.497515882046539E+023
+  2.013584473110938E+023
+  1.611684093888320E+023
+  1.284873582461616E+023
+  1.023034375742927E+023
+  8.153826926945108E+022
+  6.518069268200615E+022
+  5.234636427040041E+022
+  4.229441985006012E+022
+  3.442158083389251E+022
+  2.824606672467847E+022
+  2.338829794035904E+022
+  1.955201312609242E+022
+  1.650745060773278E+022
+  1.407714979187623E+022
+  1.212436354985403E+022
+  1.054381302561723E+022
+  9.254425465716935E+021
+  8.193692011990838E+021
+  7.313318483688046E+021
+  6.575892009110966E+021
+  5.952336997999193E+021
+  5.419979757475294E+021
+  4.961080146493438E+021
+  4.561720854716583E+021
+  4.210970769715236E+021
+  3.900259435508195E+021
+  3.622916037053524E+021
+  3.373840123198032E+021
+  3.149284114785475E+021
+  2.946741646349948E+021
+  2.764953768616021E+021
+  2.604070984128643E+021
+  2.466048829454609E+021
+  2.355416676683701E+021
+  2.280655247033767E+021
+  2.256562944861852E+021
+  2.308201437539748E+021
+  2.477301519976168E+021
+  2.832383491148998E+021
+  3.484272004133901E+021
+  4.609065900292610E+021
+  6.480738071647620E+021
+  9.514970306796872E+021
+  1.432387786247222E+022
+  2.177693665427045E+022
+  3.305545977723455E+022
+  4.967530285611847E+022
+  7.343502678323472E+022
+  1.062268905438082E+023
+  1.496328406780540E+023
+  2.043077176628327E+023
+  2.695452676382526E+023
+  3.433006245632276E+023
+  4.224171245188908E+023
+  5.030486586151336E+023
+  5.812150725584886E+023
+  6.533488556741608E+023
+  7.167115361683064E+023
+  7.696142444504098E+023
+  8.114401342133850E+023
+  8.425127699869617E+023
+  8.638743693644000E+023
+  8.770343689527132E+023
+  8.837322517057667E+023
+  8.857391383124071E+023
+  8.847069551081080E+023
+  8.820644190341700E+023
+  8.789548916147209E+023
+  8.762102356091927E+023
+  8.743550568260987E+023
+  8.736357736769619E+023
+  8.740683897448598E+023
+  8.754979356029399E+023
+  8.776619333928718E+023
+  8.802505058859434E+023
+  8.829571187634452E+023
+  8.855161519045579E+023
+  8.877259600988726E+023
+  8.894582440929832E+023
+  8.906561500706050E+023
+  8.913245197051132E+023
+  8.915159733568237E+023
+  8.913157850794775E+023
+  8.908272365805685E+023
+  8.901585395983098E+023
+  8.894125153006571E+023
+  8.886795054491188E+023
+  8.880332010832260E+023
+  4.185988101075056E+025
+  4.186455830018723E+025
+  4.186982829069021E+025
+  4.187518834575192E+025
+  4.187985953899317E+025
+  4.188273288845090E+025
+  4.188235806393921E+025
+  4.187698562281284E+025
+  4.186466612560066E+025
+  4.184341766151593E+025
+  4.181145756144499E+025
+  4.176747723543754E+025
+  4.171093155943762E+025
+  4.164230382777886E+025
+  4.156329449072141E+025
+  4.147687431061974E+025
+  4.138714314042375E+025
+  4.129894429802370E+025
+  4.121720249715767E+025
+  4.114598175540276E+025
+  4.108729758831942E+025
+  4.103976080013309E+025
+  4.099717167854025E+025
+  4.094721640787840E+025
+  4.087043681424021E+025
+  4.073964854623963E+025
+  4.051997427173599E+025
+  4.016964328907642E+025
+  3.964169189694764E+025
+  3.888667750007865E+025
+  3.785647882871345E+025
+  3.650916749579005E+025
+  3.481477133827896E+025
+  3.276148910830312E+025
+  3.036157322300439E+025
+  2.765574040515896E+025
+  2.471473806572491E+025
+  2.163678355741735E+025
+  1.854017567737525E+025
+  1.555147219584090E+025
+  1.279101727446014E+025
+  1.035445863990932E+025
+  8.287656418535111E+024
+  6.585036757751308E+024
+  5.211132984717618E+024
+  4.118516683927376E+024
+  3.258284856342641E+024
+  2.585463751780148E+024
+  2.061263380154875E+024
+  1.653548273616283E+024
+  1.336401484740254E+024
+  1.089304213631720E+024
+  8.962195726415758E+023
+  7.447252179823635E+023
+  6.252565908071757E+023
+  5.304775980716705E+023
+  4.547731841119706E+023
+  3.938486240185382E+023
+  3.444176301952862E+023
+  3.039620459899151E+023
+  2.705480367235957E+023
+  2.426862292114353E+023
+  2.192256930976072E+023
+  1.992737989065287E+023
+  1.821357755118657E+023
+  1.672692370205631E+023
+  1.542500965695302E+023
+  1.427471846840996E+023
+  1.325036017801686E+023
+  1.233234230691934E+023
+  1.150629124711202E+023
+  1.076259776574369E+023
+  1.009643257896045E+023
+  9.508382106261478E+022
+  9.006013826861184E+022
+  8.606929678414764E+022
+  8.344253036382233E+022
+  8.276083305868237E+022
+  8.501316288891551E+022
+  9.185437934173358E+022
+  1.060148060991232E+023
+  1.319318926435037E+023
+  1.766921794210809E+023
+  2.513800458710393E+023
+  3.729116967977189E+023
+  5.663597618421586E+023
+  8.676026698651588E+023
+  1.325808933530094E+024
+  2.004737537456204E+024
+  2.981086033005929E+024
+  4.337230163039490E+024
+  6.144950532360114E+024
+  8.439873939521280E+024
+  1.120260633517958E+025
+  1.435809569709046E+025
+  1.778327873282637E+025
+  2.132302900585071E+025
+  2.481221516664382E+025
+  2.809822035809565E+025
+  3.105884717409213E+025
+  3.361264533091424E+025
+  3.572123354601505E+025
+  3.738514889663927E+025
+  3.863568843188484E+025
+  3.952518943282756E+025
+  4.011760019383116E+025
+  4.048042976080411E+025
+  4.067851547231938E+025
+  4.076962801005718E+025
+  4.080173293571571E+025
+  4.081167040141777E+025
+  4.082501898623392E+025
+  4.085691826817142E+025
+  4.091361458122971E+025
+  4.099447071806993E+025
+  4.109416383561864E+025
+  4.120480745002584E+025
+  4.131778188630307E+025
+  4.142513433995737E+025
+  4.152049441594399E+025
+  4.159952469784307E+025
+  4.165998169270420E+025
+  4.170150093527192E+025
+  4.172523313087085E+025
+  4.173343197040593E+025
+  4.172904521695827E+025
+  4.171534184482868E+025
+  4.169561854125313E+025
+  4.167299947009744E+025
+  4.165031007176435E+025
+  3.160209043800566E+021
+  3.160697361045254E+021
+  3.161108396311144E+021
+  3.161370779865803E+021
+  3.161402826341814E+021
+  3.161112874905975E+021
+  3.160401741167634E+021
+  3.159167430902475E+021
+  3.157311745047825E+021
+  3.154749189901825E+021
+  3.151417673067614E+021
+  3.147289526128975E+021
+  3.142381219304373E+021
+  3.136759767718901E+021
+  3.130543271552313E+021
+  3.123892804317803E+021
+  3.116993121936555E+021
+  3.110020342269589E+021
+  3.103095852062918E+021
+  3.096227290727076E+021
+  3.089239469101326E+021
+  3.081700260265582E+021
+  3.072848501176390E+021
+  3.061532441197509E+021
+  3.046168069734393E+021
+  3.024726758081212E+021
+  2.994761276922786E+021
+  2.953478707846930E+021
+  2.897868181203556E+021
+  2.824890325918089E+021
+  2.731732589319143E+021
+  2.616128283290651E+021
+  2.476725457607596E+021
+  2.313473742157656E+021
+  2.127974744450364E+021
+  1.923719587395848E+021
+  1.706125239678756E+021
+  1.482292020558570E+021
+  1.260447974567928E+021
+  1.049120699908809E+021
+  8.561672197749802E+020
+  6.875755985109342E+020
+  5.458740434738797E+020
+  4.301397007128068E+020
+  3.375189616461240E+020
+  2.644554903631066E+020
+  2.073912009619762E+020
+  1.631141265199391E+020
+  1.288917498432940E+020
+  1.024857619616667E+020
+  8.210880879023897E+019
+  6.635860935214141E+019
+  5.414850007431077E+019
+  4.464358917867334E+019
+  3.720611786380524E+019
+  3.135067963377868E+019
+  2.670854266980064E+019
+  2.299976776990335E+019
+  2.001170950749696E+019
+  1.758259589280570E+019
+  1.558907134674973E+019
+  1.393679173222805E+019
+  1.255334774753518E+019
+  1.138295307911753E+019
+  1.038246473456641E+019
+  9.518407364852652E+018
+  8.764755053122856E+018
+  8.101287372029827E+018
+  7.512386018004038E+018
+  6.986178681243571E+018
+  6.513972998937277E+018
+  6.089961276419663E+018
+  5.711223640251365E+018
+  5.378123940794968E+018
+  5.095294505560627E+018
+  4.873565432808417E+018
+  4.733443699950265E+018
+  4.711130010423792E+018
+  4.868629353653516E+018
+  5.310317692152707E+018
+  6.209402516025470E+018
+  7.849017267280966E+018
+  1.068401053498991E+019
+  1.543029972538923E+019
+  2.318787548237620E+019
+  3.559926439903862E+019
+  5.503454085044059E+019
+  8.477293172812289E+019
+  1.291156722882313E+020
+  1.933130939426594E+020
+  2.831252298364497E+020
+  4.037768328834533E+020
+  5.582618549174213E+020
+  7.460270213149036E+020
+  9.628145823970232E+020
+  1.201040764491776E+021
+  1.450739082855882E+021
+  1.700952478870208E+021
+  1.941216211182320E+021
+  2.162792235099860E+021
+  2.359440558206839E+021
+  2.527674822324056E+021
+  2.666582231371342E+021
+  2.777357899184717E+021
+  2.862711511549405E+021
+  2.926271417400503E+021
+  2.972063719956755E+021
+  3.004100903228556E+021
+  3.026085066427172E+021
+  3.041215498874626E+021
+  3.052085070404878E+021
+  3.060649706971880E+021
+  3.068256219883592E+021
+  3.075714060438721E+021
+  3.083396050666742E+021
+  3.091352744195687E+021
+  3.099425940061729E+021
+  3.107349552358194E+021
+  3.114830110234767E+021
+  3.121603529973136E+021
+  3.127468516106104E+021
+  3.132299851532013E+021
+  3.136047123961733E+021
+  3.138725463991363E+021
+  3.140403390824907E+021
+  3.141189841050231E+021
+  3.141221620902375E+021
+  3.140653700276278E+021
+  3.139652826859709E+021
+  3.138392715391195E+021
+  4.213455279685548E+025
+  4.213932384507458E+025
+  4.214471858019676E+025
+  4.215023479330334E+025
+  4.215509225202402E+025
+  4.215817828558437E+025
+  4.215803546077853E+025
+  4.215290257243538E+025
+  4.214081233611810E+025
+  4.211975734254737E+025
+  4.208792011030065E+025
+  4.204394630697145E+025
+  4.198723277683862E+025
+  4.191819162066197E+025
+  4.183843878460707E+025
+  4.175084804580449E+025
+  4.165941181951268E+025
+  4.156885887672999E+025
+  4.148399689497106E+025
+  4.140877605433091E+025
+  4.134510760996683E+025
+  4.129151422843792E+025
+  4.124173029230217E+025
+  4.118340340950990E+025
+  4.109706780963382E+025
+  4.095556454099590E+025
+  4.072407514095093E+025
+  4.036092052594533E+025
+  3.981925996532029E+025
+  3.904980366913107E+025
+  3.800461175883526E+025
+  3.664196484072389E+025
+  3.493212603906482E+025
+  3.286355286218512E+025
+  3.044877405875202E+025
+  2.772878985616420E+025
+  2.477462270379569E+025
+  2.168473626919906E+025
+  1.857762447926902E+025
+  1.557996847356318E+025
+  1.281215017657272E+025
+  1.036975973780238E+025
+  8.298496323639429E+024
+  6.592557748098539E+024
+  5.216239131620323E+024
+  4.121897834781974E+024
+  3.260453296234953E+024
+  2.586792029170634E+024
+  2.062017937469177E+024
+  1.653917050806597E+024
+  1.336515471968763E+024
+  1.089253717190628E+024
+  8.960661940979313E+023
+  7.445105157683996E+023
+  6.250082549843640E+023
+  5.302138033818417E+023
+  4.545056309585888E+023
+  3.935846463576369E+023
+  3.441616464153277E+023
+  3.037165510140717E+023
+  2.703142760627927E+023
+  2.424646538367190E+023
+  2.190162639018294E+023
+  1.990761881862728E+023
+  1.819494980146789E+023
+  1.670937328746487E+023
+  1.540847814506985E+023
+  1.425914778347221E+023
+  1.323569392450456E+023
+  1.231852612896142E+023
+  1.149327259346797E+023
+  1.075032535596389E+023
+  1.008485586826465E+023
+  9.497451145179297E+022
+  8.995680150392997E+022
+  8.597149325149566E+022
+  8.334993654980801E+022
+  8.267338847481974E+022
+  8.493135499773222E+022
+  9.177977527431374E+022
+  1.059510176264647E+023
+  1.318862855064475E+023
+  1.766788292681664E+023
+  2.514247193697659E+023
+  3.730600040593233E+023
+  5.666900543773038E+023
+  8.682456362776071E+023
+  1.326975917639049E+024
+  2.006758890195870E+024
+  2.984458534755998E+024
+  4.342667633594291E+024
+  6.153423018460568E+024
+  8.452612584418367E+024
+  1.122106584953863E+025
+  1.438388661900817E+025
+  1.781807447099860E+025
+  2.136845971520962E+025
+  2.486976595588746E+025
+  2.816914909233545E+025
+  3.114413099543083E+025
+  3.371295753725769E+025
+  3.583694620524466E+025
+  3.751635308318348E+025
+  3.878222349954422E+025
+  3.968667450424578E+025
+  4.029346384387075E+025
+  4.066993661474500E+025
+  4.088079045397230E+025
+  4.098367999630844E+025
+  4.102647964162289E+025
+  4.104596566722206E+025
+  4.106768260528696E+025
+  4.110676744017497E+025
+  4.116949527889469E+025
+  4.125528686021769E+025
+  4.135890217856254E+025
+  4.147255649019862E+025
+  4.158774375144321E+025
+  4.169662954348803E+025
+  4.179296025772683E+025
+  4.187250871224123E+025
+  4.193313168262175E+025
+  4.197455294325322E+025
+  4.199799853692830E+025
+  4.200578483785307E+025
+  4.200091077825369E+025
+  4.198668662821714E+025
+  4.196644225981218E+025
+  4.194332841790588E+025
+  4.192019173538384E+025
+  9.053908045514577E+024
+  9.053496727567490E+024
+  9.054334366493381E+024
+  9.056637778937822E+024
+  9.060472537158892E+024
+  9.065696820776603E+024
+  9.071921203769868E+024
+  9.078492762705041E+024
+  9.084509956528721E+024
+  9.088875431814689E+024
+  9.090388805467924E+024
+  9.087875480817335E+024
+  9.080343001813527E+024
+  9.067150911163674E+024
+  9.048173916746756E+024
+  9.023933370318328E+024
+  8.995669723541949E+024
+  8.965329323346431E+024
+  8.935443449210580E+024
+  8.908886616573412E+024
+  8.888514794704925E+024
+  8.876701021776059E+024
+  8.874803563409806E+024
+  8.882617304914173E+024
+  8.897869763252592E+024
+  8.915827328973379E+024
+  8.929075233382747E+024
+  8.927528144367910E+024
+  8.898719785555891E+024
+  8.828410869046150E+024
+  8.701542913851997E+024
+  8.503544848274330E+024
+  8.221960332669774E+024
+  7.848298143013992E+024
+  7.379914375481764E+024
+  6.821626711857942E+024
+  6.186672089075984E+024
+  5.496605476231895E+024
+  4.779856311166442E+024
+  4.068933508679848E+024
+  3.396658580808025E+024
+  2.791018926910983E+024
+  2.267869483560755E+024
+  1.829601525764606E+024
+  1.470249725835476E+024
+  1.180013693352309E+024
+  9.480222833788537E+023
+  7.638513609302838E+023
+  6.182401314589309E+023
+  5.033330906598651E+023
+  4.126649507089250E+023
+  3.410227802401510E+023
+  2.842628861275438E+023
+  2.391239570010554E+023
+  2.030564490831375E+023
+  1.740759912784773E+023
+  1.506420750340957E+023
+  1.315601260295285E+023
+  1.159037806435997E+023
+  1.029539295577068E+023
+  9.215132015100844E+022
+  8.305993395193009E+022
+  7.533882350454254E+022
+  6.872053465752412E+022
+  6.299462785090955E+022
+  5.799513792269263E+022
+  5.359107834855317E+022
+  4.967931014779114E+022
+  4.617926941077785E+022
+  4.302919547211587E+022
+  4.018364274620380E+022
+  3.761221680607579E+022
+  3.529968135111182E+022
+  3.324788280727512E+022
+  3.148039982809070E+022
+  3.005154109809290E+022
+  2.906241632929091E+022
+  2.868845474727480E+022
+  2.922511888086269E+022
+  3.116179426294307E+022
+  3.529790087329880E+022
+  4.291974736630882E+022
+  5.606031477175559E+022
+  7.786438706463581E+022
+  1.130734259386536E+023
+  1.686205493794102E+023
+  2.542749968941992E+023
+  3.831848855933000E+023
+  5.720270862234076E+023
+  8.402863146978032E+023
+  1.207983059647558E+024
+  1.691034194163737E+024
+  2.294377947128068E+024
+  3.007406309454238E+024
+  3.804698716914972E+024
+  4.649077908115185E+024
+  5.496771910305304E+024
+  6.303866761134688E+024
+  7.032405100276872E+024
+  7.654792657284366E+024
+  8.155863064909607E+024
+  8.532680402376827E+024
+  8.792662152639126E+024
+  8.950789744742212E+024
+  9.026597447446037E+024
+  9.041418872257329E+024
+  9.016141708062806E+024
+  8.969546728970869E+024
+  8.917207067994508E+024
+  8.870884412820714E+024
+  8.838353058206406E+024
+  8.823586045966051E+024
+  8.827235576774327E+024
+  8.847329453549266E+024
+  8.880091788559491E+024
+  8.920788271261085E+024
+  8.964501102106421E+024
+  9.006758310283879E+024
+  9.043972614456186E+024
+  9.073678369661627E+024
+  9.094583899441343E+024
+  9.106476820308110E+024
+  9.110031238302769E+024
+  9.106566924473056E+024
+  9.097800366288960E+024
+  9.085611571702965E+024
+  9.071841892055101E+024
+  9.058137375718015E+024
+  9.045843834466806E+024
+  9.035951019711171E+024
+  8.061619138783907E+025
+  8.061916188505781E+025
+  8.062716845570599E+025
+  8.064048894829305E+025
+  8.065857815282717E+025
+  8.067978354136338E+025
+  8.070114796867087E+025
+  8.071833987719524E+025
+  8.072573809067527E+025
+  8.071671278235331E+025
+  8.068411112735883E+025
+  8.062091956229896E+025
+  8.052105365401028E+025
+  8.038019786247052E+025
+  8.019658267818625E+025
+  7.997156089914018E+025
+  7.970983452851396E+025
+  7.941919039679118E+025
+  7.910963019063593E+025
+  7.879183382334613E+025
+  7.847497387624852E+025
+  7.816399566607810E+025
+  7.785657873283284E+025
+  7.754008489570326E+025
+  7.718886094477280E+025
+  7.676229234856430E+025
+  7.620399935784036E+025
+  7.544253832364765E+025
+  7.439393002760761E+025
+  7.296628357904038E+025
+  7.106669645217709E+025
+  6.861044060028978E+025
+  6.553213167697561E+025
+  6.179808151038281E+025
+  5.741836831584242E+025
+  5.245644125274415E+025
+  4.703356392304830E+025
+  4.132547863821978E+025
+  3.554969737761109E+025
+  2.994387822964194E+025
+  2.473845584895836E+025
+  2.012071410521795E+025
+  1.618502253324485E+025
+  1.292762210600552E+025
+  1.028673085126337E+025
+  8.176465126067613E+024
+  6.506884345342328E+024
+  5.194485098198925E+024
+  4.166729901358007E+024
+  3.363161984178562E+024
+  2.734756356469934E+024
+  2.242498080604041E+024
+  1.855740867624287E+024
+  1.550628154239204E+024
+  1.308701176126026E+024
+  1.115732292362162E+024
+  9.607780559272254E+023
+  8.354270331181460E+023
+  7.332111334331329E+023
+  6.491496920339269E+023
+  5.793989917377646E+023
+  5.209842889707708E+023
+  4.715957264872058E+023
+  4.294333609902046E+023
+  3.930897805967136E+023
+  3.614614399652429E+023
+  3.336819604392917E+023
+  3.090723161333004E+023
+  2.871041594669014E+023
+  2.673736518274572E+023
+  2.495841963052605E+023
+  2.335375902519669E+023
+  2.191345513057559E+023
+  2.063876410888012E+023
+  1.954527831790624E+023
+  1.866905223256057E+023
+  1.807758377774454E+023
+  1.788869135832228E+023
+  1.830201630951853E+023
+  1.965022230573971E+023
+  2.247998468000002E+023
+  2.767633779173121E+023
+  3.664711653494733E+023
+  5.158534784471430E+023
+  7.582319315796671E+023
+  1.142758466749608E+024
+  1.739394931470997E+024
+  2.643439453924984E+024
+  3.977588404529772E+024
+  5.888108054901826E+024
+  8.530056670695894E+024
+  1.203519709351013E+025
+  1.646255657969190E+025
+  2.176322007192137E+025
+  2.778142703146192E+025
+  3.427183539214824E+025
+  4.093241698133746E+025
+  4.744819751936443E+025
+  5.353463019651808E+025
+  5.897090098783642E+025
+  6.361785130974037E+025
+  6.742020913892939E+025
+  7.039653299026956E+025
+  7.262189407288638E+025
+  7.420810168616804E+025
+  7.528500017933035E+025
+  7.598483637638683E+025
+  7.643044377901705E+025
+  7.672720913257337E+025
+  7.695842783571080E+025
+  7.718355692519083E+025
+  7.743887681923577E+025
+  7.774007145617243E+025
+  7.808619675208930E+025
+  7.846445008832647E+025
+  7.885512557144783E+025
+  7.923618275946943E+025
+  7.958698300735613E+025
+  7.989093299389504E+025
+  8.013697087973916E+025
+  8.031999355838214E+025
+  8.044043826707063E+025
+  8.050330197410824E+025
+  8.051689613597789E+025
+  8.049156866113572E+025
+  8.043851434853346E+025
+  8.036874689324479E+025
+  8.029232026929439E+025
+  8.021782772404056E+025
+  8.015214001027989E+025
+  3.722864696907247E+023
+  3.722576526809052E+023
+  3.722879575194672E+023
+  3.723887428766722E+023
+  3.725645459446903E+023
+  3.728104233787306E+023
+  3.731099701609358E+023
+  3.734344005619369E+023
+  3.737429975632160E+023
+  3.739852625370938E+023
+  3.741048795775789E+023
+  3.740453510144139E+023
+  3.737569579747091E+023
+  3.732044528766735E+023
+  3.723746156777878E+023
+  3.712825856607293E+023
+  3.699757629738016E+023
+  3.685340859083779E+023
+  3.670656683035250E+023
+  3.656971610155009E+023
+  3.645587818336268E+023
+  3.637646867780268E+023
+  3.633901311070478E+023
+  3.634475621247233E+023
+  3.638642759834982E+023
+  3.644644804912438E+023
+  3.649585342375594E+023
+  3.649418549336845E+023
+  3.639056179226668E+023
+  3.612609645623618E+023
+  3.563779379901497E+023
+  3.486395055838754E+023
+  3.375094241112286E+023
+  3.226099935828346E+023
+  3.038018469304142E+023
+  2.812533476346179E+023
+  2.554833348914103E+023
+  2.273601900946442E+023
+  1.980449347049827E+023
+  1.688773592394228E+023
+  1.412204053726249E+023
+  1.162455064764977E+023
+  9.462629946889148E+022
+  7.647886578185180E+022
+  6.157081056851083E+022
+  4.950777168582137E+022
+  3.984798332028414E+022
+  3.216558676342387E+022
+  2.608085679993666E+022
+  2.127075349433732E+022
+  1.746874495824621E+022
+  1.445944729006276E+022
+  1.207129992037407E+022
+  1.016901124565116E+022
+  8.646618751789474E+021
+  7.421500784229782E+021
+  6.429404725031338E+021
+  5.620422277869291E+021
+  4.955787303584021E+021
+  4.405358859760818E+021
+  3.945660074065793E+021
+  3.558359944627634E+021
+  3.229103738948352E+021
+  2.946615386775965E+021
+  2.702010927426253E+021
+  2.488275316121284E+021
+  2.299865762389324E+021
+  2.132413546713629E+021
+  1.982503395784186E+021
+  1.847515601898474E+021
+  1.725521916891308E+021
+  1.615232820956854E+021
+  1.516002396940042E+021
+  1.427909636921143E+021
+  1.351954347598961E+021
+  1.290435878469712E+021
+  1.247629071452326E+021
+  1.230940848688735E+021
+  1.252829927572382E+021
+  1.333906631711570E+021
+  1.507798022536896E+021
+  1.828547171638816E+021
+  2.381462315483404E+021
+  3.298331062301632E+021
+  4.777564964909902E+021
+  7.108817423468361E+021
+  1.069947221185616E+022
+  1.609661466510368E+022
+  2.399228656866101E+022
+  3.519213268217696E+022
+  5.051930396873379E+022
+  7.062015325780586E+022
+  9.567823171474558E+022
+  1.252269541386936E+023
+  1.581849388287288E+023
+  1.929883153846739E+023
+  2.278098354038941E+023
+  2.608297081378547E+023
+  2.904891195853805E+023
+  3.156709832147505E+023
+  3.357817361926150E+023
+  3.507385471981955E+023
+  3.608870829824263E+023
+  3.668822886869177E+023
+  3.695610767593288E+023
+  3.698267541769800E+023
+  3.685553924721794E+023
+  3.665270880923952E+023
+  3.643809623402749E+023
+  3.625911798429198E+023
+  3.614610616420695E+023
+  3.611325019082162E+023
+  3.616077790629843E+023
+  3.627803770539333E+023
+  3.644708414648854E+023
+  3.664633645951159E+023
+  3.685390251710561E+023
+  3.705024809811487E+023
+  3.722002468730314E+023
+  3.735301419188057E+023
+  3.744427301337425E+023
+  3.749364437038584E+023
+  3.750485429299661E+023
+  3.748440979289305E+023
+  3.744047250927223E+023
+  3.738181183140446E+023
+  3.731690351623909E+023
+  3.725323530744847E+023
+  3.719684591975096E+023
+  3.715208673194095E+023
+  3.018120243688280E+025
+  3.018110084533386E+025
+  3.018386465393230E+025
+  3.018987812607750E+025
+  3.019913583203237E+025
+  3.021109836517187E+025
+  3.022458748577181E+025
+  3.023774119458645E+025
+  3.024804385843283E+025
+  3.025245090867297E+025
+  3.024761360613419E+025
+  3.023019337957249E+025
+  3.019724464798301E+025
+  3.014663126599414E+025
+  3.007742563498368E+025
+  2.999022711287645E+025
+  2.988733047581227E+025
+  2.977267691654356E+025
+  2.965153143204602E+025
+  2.952985359438703E+025
+  2.941336362808235E+025
+  2.930634920598595E+025
+  2.921030436790506E+025
+  2.912253298413404E+025
+  2.903487832258259E+025
+  2.893275338442016E+025
+  2.879464394507899E+025
+  2.859224202961657E+025
+  2.829134752936639E+025
+  2.785365161395087E+025
+  2.723948004351466E+025
+  2.641150881786441E+025
+  2.533934373417678E+025
+  2.400465946046095E+025
+  2.240632430142192E+025
+  2.056463655220979E+025
+  1.852356908802421E+025
+  1.634991776682568E+025
+  1.412863003432416E+025
+  1.195440112974280E+025
+  9.920730897683607E+024
+  8.105278241103346E+024
+  6.549329590567167E+024
+  5.254921041612337E+024
+  4.200394591303078E+024
+  3.353806532931442E+024
+  2.680962516155307E+024
+  2.149709968119093E+024
+  1.731865372775213E+024
+  1.403768958030547E+024
+  1.146115735186389E+024
+  9.434570383563975E+023
+  7.835957180948196E+023
+  6.569912247302519E+023
+  5.562279036987472E+023
+  4.755648939495957E+023
+  4.105679088849470E+023
+  3.578147832182440E+023
+  3.146636621297662E+023
+  2.790725002797691E+023
+  2.494596159917151E+023
+  2.245965788955768E+023
+  2.035262819471342E+023
+  1.855004796189827E+023
+  1.699323003537575E+023
+  1.563602548890306E+023
+  1.444210792878085E+023
+  1.338294017692808E+023
+  1.243627440834492E+023
+  1.158508075173846E+023
+  1.081684058806125E+023
+  1.012318616840537E+023
+  9.499926890884845E+022
+  8.947587656926330E+022
+  8.472715196745686E+022
+  8.090411527575684E+022
+  7.828867505547885E+022
+  7.737141753209079E+022
+  7.898114659749582E+022
+  8.449488288559474E+022
+  9.616903364730768E+022
+  1.176459883806038E+023
+  1.547022007057302E+023
+  2.163066033714172E+023
+  3.160383216495167E+023
+  4.738476438556868E+023
+  7.180017544005754E+023
+  1.086797997382258E+024
+  1.629219513586780E+024
+  2.403151067645523E+024
+  3.469146517861628E+024
+  4.877272884074831E+024
+  6.647191624030927E+024
+  8.754407910981023E+024
+  1.113148344813412E+025
+  1.367585060454367E+025
+  1.626382411447720E+025
+  1.876868662749124E+025
+  2.107822147958324E+025
+  2.310780357230697E+025
+  2.480702986977501E+025
+  2.615992941479329E+025
+  2.718026947463344E+025
+  2.790407203416312E+025
+  2.838130528697879E+025
+  2.866815596843954E+025
+  2.882065179365964E+025
+  2.888989846228882E+025
+  2.891889216450568E+025
+  2.894073700056925E+025
+  2.897806653496976E+025
+  2.904347242124325E+025
+  2.914073923859521E+025
+  2.926666215110564E+025
+  2.941319430677770E+025
+  2.956965563888101E+025
+  2.972475220435652E+025
+  2.986821048911808E+025
+  2.999191319675384E+025
+  3.009051059304126E+025
+  3.016155498336053E+025
+  3.020525724751366E+025
+  3.022399394644301E+025
+  3.022169763143115E+025
+  3.020323430432329E+025
+  3.017382571986725E+025
+  3.013855204930729E+025
+  3.010197300118365E+025
+  3.006788123404851E+025
+  3.003917535627128E+025
+  3.556608782979274E+025
+  3.556774173121093E+025
+  3.557160951621751E+025
+  3.557777905921010E+025
+  3.558596940061824E+025
+  3.559541296868163E+025
+  3.560478073662686E+025
+  3.561216857222276E+025
+  3.561515644854726E+025
+  3.561095790976251E+025
+  3.559666181818664E+025
+  3.556955129210701E+025
+  3.552747460742033E+025
+  3.546922950576230E+025
+  3.539490664420497E+025
+  3.530612668782068E+025
+  3.520610179908330E+025
+  3.509945680336018E+025
+  3.499175988032259E+025
+  3.488873914587735E+025
+  3.479519952783318E+025
+  3.471370005927500E+025
+  3.464309850040506E+025
+  3.457711033668548E+025
+  3.450305602883175E+025
+  3.440098049259004E+025
+  3.424332337470435E+025
+  3.399530298969157E+025
+  3.361615655243830E+025
+  3.306135504684377E+025
+  3.228587222850978E+025
+  3.124851111298690E+025
+  2.991714917420043E+025
+  2.827453472580004E+025
+  2.632395753570065E+025
+  2.409378031091677E+025
+  2.163957456696287E+025
+  1.904263395702031E+025
+  1.640410891843588E+025
+  1.383495962478003E+025
+  1.144318886316741E+025
+  9.317063762831060E+024
+  7.501883831618500E+024
+  5.997350995657089E+024
+  4.776017504114334E+024
+  3.798978047694429E+024
+  3.025190429546286E+024
+  2.416390704687915E+024
+  1.939244430886109E+024
+  1.565908040122330E+024
+  1.273762874212276E+024
+  1.044781747010812E+024
+  8.647860599977346E+023
+  7.227260783911014E+023
+  6.100436919884534E+023
+  5.201366703648017E+023
+  4.479228127659563E+023
+  3.894930844418898E+023
+  3.418397271030824E+023
+  3.026453997900284E+023
+  2.701208948584822E+023
+  2.428809287574083E+023
+  2.198494594084875E+023
+  2.001877319889757E+023
+  1.832397391788277E+023
+  1.684909987128271E+023
+  1.555375257607308E+023
+  1.440626489185346E+023
+  1.338199339051161E+023
+  1.246209936060777E+023
+  1.163274411744594E+023
+  1.088467633640575E+023
+  1.021325587367983E+023
+  9.619054818129449E+022
+  9.109324011185396E+022
+  8.700843335637019E+022
+  8.425030136108943E+022
+  8.336718059110055E+022
+  8.528801952141892E+022
+  9.156028846105399E+022
+  1.047261130969514E+023
+  1.288993982612220E+023
+  1.706211764025156E+023
+  2.400752093118862E+023
+  3.527254953454937E+023
+  5.313659361008280E+023
+  8.084122197961564E+023
+  1.227970608937802E+024
+  1.846746552447965E+024
+  2.732202677754222E+024
+  3.955626034537004E+024
+  5.577177151432400E+024
+  7.622945101206379E+024
+  1.006869193040862E+025
+  1.284050263173145E+025
+  1.582298054272569E+025
+  1.887470559565313E+025
+  2.184868927619684E+025
+  2.461259292596280E+025
+  2.706419816616373E+025
+  2.913967549116007E+025
+  3.081453264221090E+025
+  3.209884911761344E+025
+  3.302914820826712E+025
+  3.365914482309961E+025
+  3.405100509784767E+025
+  3.426803831180886E+025
+  3.436915934790322E+025
+  3.440510033737051E+025
+  3.441618817653173E+025
+  3.443146409664607E+025
+  3.446892613878903E+025
+  3.453667597847423E+025
+  3.463473200031006E+025
+  3.475724087049522E+025
+  3.489480265376596E+025
+  3.503664013941926E+025
+  3.517239830629964E+025
+  3.529344417167107E+025
+  3.539362853126446E+025
+  3.546954884012013E+025
+  3.552040842008482E+025
+  3.554760168939245E+025
+  3.555416285981878E+025
+  3.554418657422274E+025
+  3.552227959118060E+025
+  3.549308038094803E+025
+  3.546088868453923E+025
+  3.542941985988020E+025
+  3.540166892382569E+025
+  4.235676748063308E+025
+  4.235559943283340E+025
+  4.235889879139059E+025
+  4.236737769592736E+025
+  4.238117298765554E+025
+  4.239961632327233E+025
+  4.242105641285874E+025
+  4.244276401121230E+025
+  4.246094347356205E+025
+  4.247088134771066E+025
+  4.246724313497808E+025
+  4.244450721966699E+025
+  4.239751010239724E+025
+  4.232205732098598E+025
+  4.221553097397913E+025
+  4.207740594425665E+025
+  4.190957667126306E+025
+  4.171639621322698E+025
+  4.150434245688929E+025
+  4.128125608415417E+025
+  4.105514183926397E+025
+  4.083258476938203E+025
+  4.061689834605150E+025
+  4.040618132763061E+025
+  4.019150488044820E+025
+  3.995547427168516E+025
+  3.967140964903944E+025
+  3.930337318818962E+025
+  3.880724265140667E+025
+  3.813299691964348E+025
+  3.722832804545068E+025
+  3.604360261679596E+025
+  3.453802956538304E+025
+  3.268662522234132E+025
+  3.048720091447395E+025
+  2.796618995872834E+025
+  2.518181608778857E+025
+  2.222309663259836E+025
+  1.920368094660509E+025
+  1.625061643035573E+025
+  1.348963175114363E+025
+  1.102532537727866E+025
+  8.913258812396145E+024
+  7.155957301354962E+024
+  5.723946201693204E+024
+  4.573885572697909E+024
+  3.659427203897579E+024
+  2.937008632266993E+024
+  2.368450688424627E+024
+  1.921701660551841E+024
+  1.570605279461069E+024
+  1.294224818281067E+024
+  1.076024407921990E+024
+  9.030642553008563E+023
+  7.652815549279664E+023
+  6.548817896039059E+023
+  5.658407183503914E+023
+  4.935060509666241E+023
+  4.342837710012947E+023
+  3.853937992906475E+023
+  3.446811511264501E+023
+  3.104708115407060E+023
+  2.814566759203468E+023
+  2.566168337451283E+023
+  2.351491277265652E+023
+  2.164222882816812E+023
+  1.999390463168407E+023
+  1.853085052018709E+023
+  1.722257573798669E+023
+  1.604573250594098E+023
+  1.498315629372385E+023
+  1.402337774235423E+023
+  1.316066163325763E+023
+  1.239574430139208E+023
+  1.173761885923306E+023
+  1.120699485040335E+023
+  1.084248675327378E+023
+  1.071122919885018E+023
+  1.092654821316998E+023
+  1.167659692814179E+023
+  1.326949265712139E+023
+  1.620232431556077E+023
+  2.126298590880328E+023
+  2.967414011966739E+023
+  4.328586987022998E+023
+  6.481468907960478E+023
+  9.810718401381756E+023
+  1.483714070194644E+024
+  2.222638384587678E+024
+  3.276443561763108E+024
+  4.727270822165885E+024
+  6.642922761664876E+024
+  9.049837686259440E+024
+  1.191453155393545E+025
+  1.514543024033696E+025
+  1.860364361216376E+025
+  2.212208750546023E+025
+  2.553003707063824E+025
+  2.867682161403317E+025
+  3.144940579040756E+025
+  3.378116193992793E+025
+  3.565193457667001E+025
+  3.708149011516728E+025
+  3.811923828878576E+025
+  3.883289370607599E+025
+  3.929797925361602E+025
+  3.958920707951602E+025
+  3.977408924706975E+025
+  3.990872000041696E+025
+  4.003549316165366E+025
+  4.018247507579898E+025
+  4.036415505496697E+025
+  4.058328676215521E+025
+  4.083350172076534E+025
+  4.110233684285230E+025
+  4.137430102103163E+025
+  4.163363555702621E+025
+  4.186650506506488E+025
+  4.206247286943824E+025
+  4.221523748251062E+025
+  4.232270749987473E+025
+  4.238656081786307E+025
+  4.241147218175164E+025
+  4.240419618465072E+025
+  4.237265067787393E+025
+  4.232507933790056E+025
+  4.226934058073848E+025
+  4.221237404407448E+025
+  4.215986219949781E+025
+  4.211606745922605E+025
+  9.748493282321568E+025
+  9.749194868944564E+025
+  9.750294903909247E+025
+  9.751758881342524E+025
+  9.753468738115373E+025
+  9.755198384763255E+025
+  9.756599392085496E+025
+  9.757200691550297E+025
+  9.756424438445876E+025
+  9.753621995405005E+025
+  9.748130154895684E+025
+  9.739343549060727E+025
+  9.726797036158334E+025
+  9.710248862144540E+025
+  9.689751754249178E+025
+  9.665696613837491E+025
+  9.638812855692364E+025
+  9.610110787714138E+025
+  9.580755117668712E+025
+  9.551865159868553E+025
+  9.524246477780091E+025
+  9.498069591116473E+025
+  9.472522408392982E+025
+  9.445472413348094E+025
+  9.413180829737234E+025
+  9.370113302690058E+025
+  9.308890438403998E+025
+  9.220418088923867E+025
+  9.094232785698715E+025
+  8.919091969027464E+025
+  8.683828570007233E+025
+  8.378469037274333E+025
+  7.995575867979653E+025
+  7.531715431261601E+025
+  6.988871886351084E+025
+  6.375543152121053E+025
+  5.707196814535879E+025
+  5.005778497275249E+025
+  4.298094193013137E+025
+  3.613138704355044E+025
+  2.978767292918790E+025
+  2.417381812326757E+025
+  1.940009760110496E+025
+  1.545791417385271E+025
+  1.226896257691094E+025
+  9.726492407016440E+024
+  7.719568670994142E+024
+  6.145675835983099E+024
+  4.916070308707340E+024
+  3.957003802210769E+024
+  3.208830083348525E+024
+  2.624198778046099E+024
+  2.166004637681999E+024
+  1.805430490873137E+024
+  1.520230761822570E+024
+  1.293298293080774E+024
+  1.111504830919690E+024
+  9.647825896236728E+023
+  8.454073458881167E+023
+  7.474445776820359E+023
+  6.663247033516555E+023
+  5.985190529677726E+023
+  5.412936331397668E+023
+  4.925225442356023E+023
+  4.505469373308594E+023
+  4.140686748207587E+023
+  3.820704666919647E+023
+  3.537563071411700E+023
+  3.285076652993412E+023
+  3.058522374131307E+023
+  2.854433148649903E+023
+  2.670491674837884E+023
+  2.505535542608400E+023
+  2.359709352812477E+023
+  2.234837274277045E+023
+  2.135148318941130E+023
+  2.068577915276005E+023
+  2.049007747038518E+023
+  2.100008229583419E+023
+  2.260929819352176E+023
+  2.596555248005184E+023
+  3.211949868938185E+023
+  4.274543414809472E+023
+  6.045638292883865E+023
+  8.923070493535454E+023
+  1.349497936226004E+024
+  2.060057967950684E+024
+  3.138623251526696E+024
+  4.733283125874986E+024
+  7.021329035057349E+024
+  1.019187876833726E+025
+  1.440759222621682E+025
+  1.974515419714467E+025
+  2.615217004414566E+025
+  3.344718384697373E+025
+  4.133907396631665E+025
+  4.946549966043940E+025
+  5.744494443209306E+025
+  6.492902080781008E+025
+  7.164329454609352E+025
+  7.740999940501315E+025
+  8.215198064962904E+025
+  8.588172023945403E+025
+  8.868134866078264E+025
+  9.067938655395051E+025
+  9.202849347892212E+025
+  9.288668976852185E+025
+  9.340300748806891E+025
+  9.370756978997952E+025
+  9.390564897415073E+025
+  9.407512803043082E+025
+  9.426679609737093E+025
+  9.450691631987390E+025
+  9.480146799503290E+025
+  9.514140267909482E+025
+  9.550821855486479E+025
+  9.587919829348573E+025
+  9.623179037584868E+025
+  9.654681714274105E+025
+  9.681041110858407E+025
+  9.701476563354745E+025
+  9.715791977008155E+025
+  9.724288346321612E+025
+  9.727643267264666E+025
+  9.726783325098864E+025
+  9.722762754794304E+025
+  9.716656582280516E+025
+  9.709478556632780E+025
+  9.702127172537151E+025
+  9.695355232431755E+025
+  9.911783597497854E+023
+  9.911741447445835E+023
+  9.912782267584897E+023
+  9.915056570073617E+023
+  9.918571843990295E+023
+  9.923143336915461E+023
+  9.928361096653486E+023
+  9.933580981622297E+023
+  9.937945212072711E+023
+  9.940438987922753E+023
+  9.939984455718734E+023
+  9.935567230512526E+023
+  9.926386334442155E+023
+  9.912013108301477E+023
+  9.892538731158403E+023
+  9.868685548751098E+023
+  9.841855572955513E+023
+  9.814090772890474E+023
+  9.787924867448407E+023
+  9.766115916593982E+023
+  9.751262927610592E+023
+  9.745326556313109E+023
+  9.749091355878393E+023
+  9.761621984362990E+023
+  9.779775718666960E+023
+  9.797837107730300E+023
+  9.807337971640559E+023
+  9.797119212156814E+023
+  9.753682561224626E+023
+  9.661871476242787E+023
+  9.505908311588152E+023
+  9.270792628862678E+023
+  8.944023219620534E+023
+  8.517535809858420E+023
+  7.989649053579911E+023
+  7.366698272262006E+023
+  6.663946902911595E+023
+  5.905358543628135E+023
+  5.121946643771590E+023
+  4.348715263643258E+023
+  3.620615549716630E+023
+  2.967094314077649E+023
+  2.404429790105585E+023
+  1.934483835113972E+023
+  1.550268144912014E+023
+  1.240816409096337E+023
+  9.941406732431760E+022
+  7.988377717940421E+022
+  6.448333893691392E+022
+  5.236194507820461E+022
+  4.282198256788905E+022
+  3.530285768674032E+022
+  2.936034297056953E+022
+  2.464582750804097E+022
+  2.088754108400923E+022
+  1.787452335789164E+022
+  1.544342357618982E+022
+  1.346788877795736E+022
+  1.185017219156834E+022
+  1.051457370312120E+022
+  9.402354942862463E+021
+  8.467821486018132E+021
+  7.675317998445608E+021
+  6.996931691288850E+021
+  6.410742470737945E+021
+  5.899494073846732E+021
+  5.449589650560665E+021
+  5.050338604695119E+021
+  4.693400346187004E+021
+  4.372386570622339E+021
+  4.082598764891446E+021
+  3.820894352152608E+021
+  3.585696609732781E+021
+  3.377195025186647E+021
+  3.197831110409535E+021
+  3.053239951409770E+021
+  2.953933740675691E+021
+  2.918187666019802E+021
+  2.976840021812771E+021
+  3.181062673355959E+021
+  3.614594125292034E+021
+  4.412413713413675E+021
+  5.788246880576329E+021
+  8.073354745620323E+021
+  1.176826917663178E+022
+  1.760666113890688E+022
+  2.662519963024765E+022
+  4.022368338874896E+022
+  6.018478391216580E+022
+  8.860257622522883E+022
+  1.276467898019446E+023
+  1.790740237934421E+023
+  2.434959980977263E+023
+  3.198833523109083E+023
+  4.056257296453301E+023
+  4.968374543470554E+023
+  5.888902037011702E+023
+  6.770902818266958E+023
+  7.573277997872001E+023
+  8.265546717507831E+023
+  8.830192440608238E+023
+  9.262620780899339E+023
+  9.569315166117085E+023
+  9.764986469056072E+023
+  9.869445655833391E+023
+  9.904713457916685E+023
+  9.892642133772697E+023
+  9.853138434555515E+023
+  9.802967960802522E+023
+  9.755076578187476E+023
+  9.718356907161768E+023
+  9.697791330101962E+023
+  9.694901869424518E+023
+  9.708427735955230E+023
+  9.735138156390785E+023
+  9.770679935863627E+023
+  9.810363494042209E+023
+  9.849810197688773E+023
+  9.885413918709263E+023
+  9.914603036726949E+023
+  9.935918008286356E+023
+  9.948940371845126E+023
+  9.954121056533489E+023
+  9.952557797153247E+023
+  9.945761453321615E+023
+  9.935434805308859E+023
+  9.923279001386918E+023
+  9.910842610199921E+023
+  9.899419506525033E+023
+  9.889992580034486E+023
+  1.492069842239524E+026
+  1.492158176800310E+026
+  1.492318330943593E+026
+  1.492548670874500E+026
+  1.492833978090357E+026
+  1.493141158963525E+026
+  1.493416505343239E+026
+  1.493585148262656E+026
+  1.493553093355425E+026
+  1.493212503492384E+026
+  1.492450301440714E+026
+  1.491159519179162E+026
+  1.489252475584000E+026
+  1.486674384526315E+026
+  1.483415410409808E+026
+  1.479518774899800E+026
+  1.475082387987442E+026
+  1.470251646863057E+026
+  1.465201581207885E+026
+  1.460107499313773E+026
+  1.455104694968755E+026
+  1.450239469793942E+026
+  1.445415466352105E+026
+  1.440340811615416E+026
+  1.434482595896008E+026
+  1.427035635042400E+026
+  1.416912326338738E+026
+  1.402759894476321E+026
+  1.383010623247732E+026
+  1.355969756120202E+026
+  1.319944176145294E+026
+  1.273411838556952E+026
+  1.215226137458100E+026
+  1.144840218610891E+026
+  1.062524058773392E+026
+  9.695341417551127E+025
+  8.681865604692952E+025
+  7.617863653297684E+025
+  6.543853647731865E+025
+  5.503785939848021E+025
+  4.539992072041977E+025
+  3.686611484654945E+025
+  2.960541601858212E+025
+  2.360608514063978E+025
+  1.875021000266770E+025
+  1.487638259906276E+025
+  1.181658848338927E+025
+  9.415403553676461E+024
+  7.538175511858431E+024
+  6.072926515298911E+024
+  4.929031825755359E+024
+  4.034502964824329E+024
+  3.332891842563138E+024
+  2.780331112708942E+024
+  2.342935326631502E+024
+  1.994629070762903E+024
+  1.715388458764644E+024
+  1.489847257172795E+024
+  1.306208134411928E+024
+  1.155400972809099E+024
+  1.030436956717786E+024
+  9.259155280594867E+023
+  8.376494812373619E+023
+  7.623807107930539E+023
+  6.975652132652328E+023
+  6.412109020146661E+023
+  5.917557432397309E+023
+  5.479768323346152E+023
+  5.089235007593651E+023
+  4.738695992789070E+023
+  4.422820008680162E+023
+  4.138044179125680E+023
+  3.882582452843614E+023
+  3.656659062449656E+023
+  3.463079443580253E+023
+  3.308341075616796E+023
+  3.204626294061731E+023
+  3.173230544265082E+023
+  3.250288458187447E+023
+  3.496089686738870E+023
+  4.009833091554265E+023
+  4.952312771584715E+023
+  6.579626597481199E+023
+  9.291232778144040E+023
+  1.369494656978186E+024
+  2.068874688152692E+024
+  3.155304372548468E+024
+  4.803546337481657E+024
+  7.239151238991336E+024
+  1.073183165574276E+025
+  1.556881493631743E+025
+  2.199636823731832E+025
+  3.012911752650303E+025
+  3.988469764566972E+025
+  5.098436972567549E+025
+  6.298318454460065E+025
+  7.532905024257705E+025
+  8.744226013330095E+025
+  9.879509637990557E+025
+  1.089736550794919E+026
+  1.177119035889095E+026
+  1.248970959547448E+026
+  1.305525278503557E+026
+  1.348066916524731E+026
+  1.378575989583897E+026
+  1.399387733488934E+026
+  1.412906440287011E+026
+  1.421387718823197E+026
+  1.426788889706739E+026
+  1.430680545573801E+026
+  1.434210410840378E+026
+  1.438110690270553E+026
+  1.442740161605123E+026
+  1.448151658408355E+026
+  1.454174622456770E+026
+  1.460501894944024E+026
+  1.466770614954147E+026
+  1.472629252001970E+026
+  1.477786006471845E+026
+  1.482037224176476E+026
+  1.485277331156386E+026
+  1.487493841171719E+026
+  1.488752285857939E+026
+  1.489176238496795E+026
+  1.488926475137154E+026
+  1.488181360607981E+026
+  1.487119723764426E+026
+  1.485907801048235E+026
+  1.484690750084428E+026
+  1.483588023012081E+026
+  1.380743516769894E+026
+  1.380792517640338E+026
+  1.380925124692552E+026
+  1.381145832487971E+026
+  1.381445352335089E+026
+  1.381795733639512E+026
+  1.382146886629055E+026
+  1.382425180123073E+026
+  1.382534568591267E+026
+  1.382360964304068E+026
+  1.381780020029456E+026
+  1.380667882243056E+026
+  1.378914137952059E+026
+  1.376435704780613E+026
+  1.373189831679038E+026
+  1.369183943226589E+026
+  1.364479878063847E+026
+  1.359190163230047E+026
+  1.353464399249953E+026
+  1.347464688242524E+026
+  1.341330322184562E+026
+  1.335133541262819E+026
+  1.328829851620174E+026
+  1.322207890315451E+026
+  1.314844901549028E+026
+  1.306074402295692E+026
+  1.294972580750261E+026
+  1.280369538484247E+026
+  1.260890829866798E+026
+  1.235033863966833E+026
+  1.201282234852126E+026
+  1.158258141637537E+026
+  1.104907772436864E+026
+  1.040706188162264E+026
+  9.658571359741284E+025
+  8.814513130169446E+025
+  7.895381973884612E+025
+  6.930680378750102E+025
+  5.956778540336418E+025
+  5.013296216513429E+025
+  4.138539282666544E+025
+  3.363520130599536E+025
+  2.703680880853142E+025
+  2.158075987047648E+025
+  1.716111931191944E+025
+  1.363227207723897E+025
+  1.084238373633509E+025
+  8.650840705315087E+024
+  6.935710181077232E+024
+  5.595505942918431E+024
+  4.548025555237766E+024
+  3.727915340349541E+024
+  3.083884785276845E+024
+  2.576038385221475E+024
+  2.173529670039463E+024
+  1.852598572822527E+024
+  1.594980805701604E+024
+  1.386645902758315E+024
+  1.216810617604884E+024
+  1.077175511510673E+024
+  9.613385744641216E+023
+  8.643472124812808E+023
+  7.823572717926598E+023
+  7.123742779058001E+023
+  6.520575469162868E+023
+  5.995722941632563E+023
+  5.534784289422620E+023
+  5.126475339129788E+023
+  4.762017623453795E+023
+  4.434702486436616E+023
+  4.139603515988757E+023
+  3.873429205548833E+023
+  3.634531686831244E+023
+  3.423121881262128E+023
+  3.241794285290571E+023
+  3.096547124793600E+023
+  2.998611458604891E+023
+  2.967596217593212E+023
+  3.036738317686094E+023
+  3.261438521724495E+023
+  3.732769699507094E+023
+  4.598227679922898E+023
+  6.092530178329477E+023
+  8.581467194282067E+023
+  1.262111283345253E+024
+  1.903219440568681E+024
+  2.898371319551660E+024
+  4.406932860317576E+024
+  6.634301402666241E+024
+  9.825678239187869E+024
+  1.424157857142795E+025
+  2.010439632131014E+025
+  2.751583499691751E+025
+  3.639786207447102E+025
+  4.649411265362659E+025
+  5.739820499812721E+025
+  6.860817720316007E+025
+  7.959917233699366E+025
+  8.989572536810188E+025
+  9.912745658283908E+025
+  1.070592429839413E+026
+  1.135952682092279E+026
+  1.187625562228316E+026
+  1.226823275200789E+026
+  1.255371822131422E+026
+  1.275400092395220E+026
+  1.289079809362366E+026
+  1.298429017911114E+026
+  1.305178690806154E+026
+  1.310695925767606E+026
+  1.315955473393725E+026
+  1.321551315937472E+026
+  1.327739980052143E+026
+  1.334506638377950E+026
+  1.341644164758039E+026
+  1.348834915845113E+026
+  1.355725794147392E+026
+  1.361989299330514E+026
+  1.367366376658792E+026
+  1.371690113374393E+026
+  1.374892002656587E+026
+  1.376994357830115E+026
+  1.378093598075192E+026
+  1.378339350597138E+026
+  1.377913198514627E+026
+  1.377009031907807E+026
+  1.375816160892338E+026
+  1.374506630427857E+026
+  1.373227176042225E+026
+  1.372095130313101E+026
+  7.473369800189367E+021
+  7.474221311993468E+021
+  7.475195801857260E+021
+  7.476205308331263E+021
+  7.477110941213686E+021
+  7.477713332609668E+021
+  7.477751056267014E+021
+  7.476909108970702E+021
+  7.474838092136223E+021
+  7.471186120773495E+021
+  7.465642614773611E+021
+  7.457990025997143E+021
+  7.448158114427624E+021
+  7.436273449269113E+021
+  7.422694469910394E+021
+  7.408021063878916E+021
+  7.393067749863854E+021
+  7.378791219315673E+021
+  7.366166378064483E+021
+  7.356010354963475E+021
+  7.348760995913722E+021
+  7.344224327093057E+021
+  7.341313117860338E+021
+  7.337804703611500E+021
+  7.330149676942921E+021
+  7.313363635306272E+021
+  7.281032423760425E+021
+  7.225458349579327E+021
+  7.137971603952169E+021
+  7.009427215455689E+021
+  6.830900591300165E+021
+  6.594579077526749E+021
+  6.294817240767565E+021
+  5.929276228957087E+021
+  5.500005022437481E+021
+  5.014255917638849E+021
+  4.484783503337642E+021
+  3.929391618689663E+021
+  3.369597961335238E+021
+  2.828485152021422E+021
+  2.328061097628345E+021
+  1.885880910195588E+021
+  1.510456222445207E+021
+  1.200927162489160E+021
+  9.509665055758284E+020
+  7.520394788228821E+020
+  5.953152886602959E+020
+  4.726558997495692E+020
+  3.770318889112062E+020
+  3.026129472776912E+020
+  2.446923452226695E+020
+  1.995404622839176E+020
+  1.642400466458152E+020
+  1.365297299971826E+020
+  1.146672042635912E+020
+  9.731526138370058E+019
+  8.344979128234756E+019
+  7.228705360072049E+019
+  6.322701732847201E+019
+  5.580966969262653E+019
+  4.968157227276634E+019
+  4.457039617897324E+019
+  4.026560677181467E+019
+  3.660385428581496E+019
+  3.345794959169208E+019
+  3.072856616981148E+019
+  2.833801725046721E+019
+  2.622562032890527E+019
+  2.434429051253672E+019
+  2.265811116207584E+019
+  2.114072830153952E+019
+  1.977452023509261E+019
+  1.855062664950026E+019
+  1.747011178506423E+019
+  1.654682734055697E+019
+  1.581299563615502E+019
+  1.532924030188538E+019
+  1.520186553429347E+019
+  1.561176039484640E+019
+  1.686150721040960E+019
+  1.945014888153178E+019
+  2.418844022948369E+019
+  3.237060691891647E+019
+  4.602008450084807E+019
+  6.822333131601260E+019
+  1.035523588819966E+020
+  1.585452690869588E+020
+  2.421549225039203E+020
+  3.659795191916739E+020
+  5.439527049548314E+020
+  7.910101489977266E+020
+  1.120115283415353E+021
+  1.537600835027853E+021
+  2.039743849686239E+021
+  2.612673782693396E+021
+  3.233794713776045E+021
+  3.874718974879814E+021
+  4.505306127364273E+021
+  5.097773642239087E+021
+  5.629954127012800E+021
+  6.087162409601819E+021
+  6.462599295671613E+021
+  6.756576036669340E+021
+  6.975011721180916E+021
+  7.127650524512723E+021
+  7.226335886732609E+021
+  7.283538791530454E+021
+  7.311218874569086E+021
+  7.320021096487056E+021
+  7.318774685195143E+021
+  7.314251089275378E+021
+  7.311138730070614E+021
+  7.312193936675642E+021
+  7.318525405001187E+021
+  7.329964891246953E+021
+  7.345473510681791E+021
+  7.363534874646852E+021
+  7.382495017778490E+021
+  7.400823120492637E+021
+  7.417282685961891E+021
+  7.431016555641954E+021
+  7.441559562737702E+021
+  7.448799734478226E+021
+  7.452911351239308E+021
+  7.454278452058700E+021
+  7.453418564821259E+021
+  7.450912953990287E+021
+  7.447351353945730E+021
+  7.443293810276424E+021
+  7.439246384244512E+021
+  2.996972215939958E+026
+  2.997181561406027E+026
+  2.997569959323700E+026
+  2.998136878664036E+026
+  2.998850141839313E+026
+  2.999637554586899E+026
+  3.000382918703285E+026
+  3.000927996301379E+026
+  3.001081341587558E+026
+  3.000635280148696E+026
+  2.999390883025823E+026
+  2.997189189897153E+026
+  2.993945941545434E+026
+  2.989685852394025E+026
+  2.984571081494706E+026
+  2.978917651103604E+026
+  2.973193398526046E+026
+  2.967991713308634E+026
+  2.963976954462762E+026
+  2.961800189653734E+026
+  2.961987650900540E+026
+  2.964808644089119E+026
+  2.970133922775805E+026
+  2.977299005592841E+026
+  2.984988985160837E+026
+  2.991161795298869E+026
+  2.993025887196375E+026
+  2.987086412142242E+026
+  2.969271948877368E+026
+  2.935151642401540E+026
+  2.880249352511418E+026
+  2.800454843719046E+026
+  2.692519365980414E+026
+  2.554602077821160E+026
+  2.386805053062152E+026
+  2.191603010130429E+026
+  1.974050625505563E+026
+  1.741652179587936E+026
+  1.503821317548628E+026
+  1.270947110885433E+026
+  1.053200765780309E+026
+  8.589659992163015E+025
+  6.926684697333616E+025
+  5.545017911818793E+025
+  4.421111743679251E+025
+  3.520390797074225E+025
+  2.805912732566169E+025
+  2.242989432445877E+025
+  1.801255118614190E+025
+  1.455253403461629E+025
+  1.184244523140548E+025
+  9.716587151042448E+024
+  8.044367958418659E+024
+  6.723833182510686E+024
+  5.675896105716601E+024
+  4.839462186439596E+024
+  4.167447201003328E+024
+  3.623598551411752E+024
+  3.179997274607041E+024
+  2.815116582639569E+024
+  2.512324881681721E+024
+  2.258738171538798E+024
+  2.044344027968304E+024
+  1.861335061162223E+024
+  1.703603154090955E+024
+  1.566356839220400E+024
+  1.445833065595290E+024
+  1.339081670728263E+024
+  1.243806524180318E+024
+  1.158252051150479E+024
+  1.081128262635286E+024
+  1.011572239935278E+024
+  9.491502119395940E+023
+  8.939132960433394E+023
+  8.465336533578389E+023
+  8.085691337511480E+023
+  7.829374618483734E+023
+  7.747307786626190E+023
+  7.925737171883203E+023
+  8.508281629834568E+023
+  9.730761887086498E+023
+  1.197458967387815E+024
+  1.584580037885601E+024
+  2.228719976297049E+024
+  3.272912063345467E+024
+  4.927755383386255E+024
+  7.492344807720345E+024
+  1.137295276646603E+025
+  1.709073670269053E+025
+  2.526374382169441E+025
+  3.654166615097957E+025
+  5.146660117654604E+025
+  7.026067321312602E+025
+  9.267670865812196E+025
+  1.180061378275073E+026
+  1.451573914304577E+026
+  1.728017255754151E+026
+  1.995648765516970E+026
+  2.242156650023319E+026
+  2.458096343971316E+026
+  2.637651384855597E+026
+  2.778710941669211E+026
+  2.882416175980105E+026
+  2.952395732191374E+026
+  2.993898759864890E+026
+  3.012976778538381E+026
+  3.015798642756835E+026
+  3.008128797982472E+026
+  2.994966118825664E+026
+  2.980326333996888E+026
+  2.967148046192771E+026
+  2.957303357476434E+026
+  2.951694399427761E+026
+  2.950415106352698E+026
+  2.952954340838432E+026
+  2.958414202201749E+026
+  2.965718071905073E+026
+  2.973787473903874E+026
+  2.981674305825823E+026
+  2.988643448264228E+026
+  2.994208240574116E+026
+  2.998126888692511E+026
+  3.000371400350053E+026
+  3.001081608008902E+026
+  3.000514440865116E+026
+  2.998994327157073E+026
+  2.996868563771268E+026
+  2.994471773629061E+026
+  2.992101140417354E+026
+  2.990001456864958E+026
+  2.841058081834307E+026
+  2.841268240797457E+026
+  2.841622894889756E+026
+  2.842116207405617E+026
+  2.842714836178050E+026
+  2.843350548141245E+026
+  2.843916532797040E+026
+  2.844268739171657E+026
+  2.844232987383971E+026
+  2.843619019156872E+026
+  2.842241385279148E+026
+  2.839945676289043E+026
+  2.836637787553530E+026
+  2.832312865435981E+026
+  2.827079383651650E+026
+  2.821173004164642E+026
+  2.814954728444813E+026
+  2.808888400502258E+026
+  2.803494008664347E+026
+  2.799275570995205E+026
+  2.796625605451664E+026
+  2.795711929560792E+026
+  2.796356242277788E+026
+  2.797916984294976E+026
+  2.799190840975020E+026
+  2.798347725467633E+026
+  2.792913331486124E+026
+  2.779811868633481E+026
+  2.755479893734875E+026
+  2.716060252327356E+026
+  2.657682118371158E+026
+  2.576826996579287E+026
+  2.470768875055182E+026
+  2.338057742357792E+026
+  2.178989946140148E+026
+  1.995980927190771E+026
+  1.793735823549128E+026
+  1.579116290668774E+026
+  1.360641605285165E+026
+  1.147641950050658E+026
+  9.491872239443303E+025
+  7.726864356922125E+025
+  6.219570956888335E+025
+  4.970097972412621E+025
+  3.955846594156844E+025
+  3.144593640592562E+025
+  2.502274402257190E+025
+  1.997095752817867E+025
+  1.601343254309509E+025
+  1.291859526054629E+025
+  1.049829696281940E+025
+  8.602579797866184E+024
+  7.113512316873935E+024
+  5.939206474415145E+024
+  5.008515176116072E+024
+  4.266571855306502E+024
+  3.671160605468135E+024
+  3.189827017303506E+024
+  2.797613498373801E+024
+  2.475303126042822E+024
+  2.208068321903449E+024
+  1.984436845171249E+024
+  1.795503837725682E+024
+  1.634333230056323E+024
+  1.495504190577434E+024
+  1.374768448410726E+024
+  1.268792450272373E+024
+  1.174964746793013E+024
+  1.091254137117788E+024
+  1.016108391110318E+024
+  9.483873488608751E+023
+  8.873285209184878E+023
+  8.325488460801869E+023
+  7.840942352865686E+023
+  7.425607364875002E+023
+  7.093301958381974E+023
+  6.869927693782099E+023
+  6.800732008224879E+023
+  6.962427249880988E+023
+  7.482884495648040E+023
+  8.572281012449368E+023
+  1.057091284790077E+024
+  1.402009374422040E+024
+  1.976297421972555E+024
+  2.908044362742421E+024
+  4.386137282456112E+024
+  6.679316765820047E+024
+  1.015340612533919E+025
+  1.527893220079702E+025
+  2.261591346365646E+025
+  3.275634118369390E+025
+  4.619997882314514E+025
+  6.316356302758753E+025
+  8.344509668784704E+025
+  1.064282209571089E+026
+  1.311494844634709E+026
+  1.564264177778491E+026
+  1.810277408922261E+026
+  2.038422271782375E+026
+  2.240085563269453E+026
+  2.409854798196437E+026
+  2.545610382654467E+026
+  2.648139901652465E+026
+  2.720469134116265E+026
+  2.767095860678221E+026
+  2.793262884429067E+026
+  2.804347258661474E+026
+  2.805394193154927E+026
+  2.800794131408489E+026
+  2.794088082790396E+026
+  2.787883127514816E+026
+  2.783860674016071E+026
+  2.782860331534282E+026
+  2.785020727112599E+026
+  2.789956020047741E+026
+  2.796945125792918E+026
+  2.805111510043220E+026
+  2.813575522232038E+026
+  2.821567839077667E+026
+  2.828499934170846E+026
+  2.833993903837201E+026
+  2.837878728791005E+026
+  2.840163092012639E+026
+  2.840995723462822E+026
+  2.840622072288166E+026
+  2.839342220788728E+026
+  2.837473187992793E+026
+  2.835319186153206E+026
+  2.833151195430646E+026
+  2.831194790400649E+026
+  2.702390779266949E+026
+  2.702674041674989E+026
+  2.703045446751520E+026
+  2.703483031221464E+026
+  2.703942254212143E+026
+  2.704351412131598E+026
+  2.704610591475154E+026
+  2.704595184206818E+026
+  2.704164411953881E+026
+  2.703175701143706E+026
+  2.701504568556146E+026
+  2.699068386589762E+026
+  2.695851686517088E+026
+  2.691929762875102E+026
+  2.687486326012802E+026
+  2.682820337031068E+026
+  2.678337177421690E+026
+  2.674519995023941E+026
+  2.671878521191659E+026
+  2.670874954818116E+026
+  2.671829555750104E+026
+  2.674812029406995E+026
+  2.679528080026566E+026
+  2.685213090459802E+026
+  2.690546318019674E+026
+  2.693599138775516E+026
+  2.691829955616068E+026
+  2.682136914175963E+026
+  2.660978018557413E+026
+  2.624566571526720E+026
+  2.569147110453866E+026
+  2.491351205865610E+026
+  2.388621250402194E+026
+  2.259672067526815E+026
+  2.104935456139407E+026
+  1.926906219320668E+026
+  1.730289663292594E+026
+  1.521854379844431E+026
+  1.309933501050465E+026
+  1.103595144764459E+026
+  9.116039717961188E+025
+  7.410755077837602E+025
+  5.956337634661631E+025
+  4.752260164253046E+025
+  3.776161446284658E+025
+  2.996504183441665E+025
+  2.380088111102413E+025
+  1.896005564978453E+025
+  1.517365786185484E+025
+  1.221736717364483E+025
+  9.909205534358478E+024
+  8.104345839935594E+024
+  6.689056237020279E+024
+  5.574848844567764E+024
+  4.693308842408966E+024
+  3.991754159257252E+024
+  3.429709840872151E+024
+  2.976106505181017E+024
+  2.607087766611540E+024
+  2.304312557714841E+024
+  2.053650707124655E+024
+  1.844186251074031E+024
+  1.667458976765185E+024
+  1.516889017258915E+024
+  1.387341434832305E+024
+  1.274797641225251E+024
+  1.176108427133563E+024
+  1.088809632787640E+024
+  1.010986475435898E+024
+  9.411767033655650E+023
+  8.783065831435039E+023
+  8.216578731811705E+023
+  7.708692205310557E+023
+  7.259830123990456E+023
+  6.875603356923593E+023
+  6.569048352288564E+023
+  6.364643739673243E+023
+  6.305219668649811E+023
+  6.463496385674982E+023
+  6.960852732068446E+023
+  7.997044113962187E+023
+  9.895883031030377E+023
+  1.317308661967968E+024
+  1.863294552944805E+024
+  2.749894784981199E+024
+  4.157793414372446E+024
+  6.344472019240027E+024
+  9.661062527360703E+024
+  1.456015559962168E+025
+  2.158186080894467E+025
+  3.129931760475529E+025
+  4.419999063850398E+025
+  6.050230042390975E+025
+  8.002372969194474E+025
+  1.021823499992658E+026
+  1.260586910481745E+026
+  1.505165969710699E+026
+  1.743657335320116E+026
+  1.965242654665480E+026
+  2.161453425911640E+026
+  2.326870228804115E+026
+  2.459238129438538E+026
+  2.559119696097951E+026
+  2.629269766182100E+026
+  2.673910011572016E+026
+  2.698035054932816E+026
+  2.706825339194271E+026
+  2.705195254290631E+026
+  2.697475885673383E+026
+  2.687218579863561E+026
+  2.677102401312974E+026
+  2.668929326153680E+026
+  2.663691543958094E+026
+  2.661693997809808E+026
+  2.662712906403784E+026
+  2.666169215105048E+026
+  2.671296405467928E+026
+  2.677285569880170E+026
+  2.683396508876523E+026
+  2.689030273441799E+026
+  2.693764521183705E+026
+  2.697357580557885E+026
+  2.699730123461095E+026
+  2.700934318886975E+026
+  2.701118470293256E+026
+  2.700491642939815E+026
+  2.699291241307791E+026
+  2.697756927985372E+026
+  2.696112201982924E+026
+  2.694552677260053E+026
+  2.362411931873432E+026
+  2.362566698519975E+026
+  2.362836812655761E+026
+  2.363218537355638E+026
+  2.363686166135333E+026
+  2.364185515985839E+026
+  2.364630109767017E+026
+  2.364901092274717E+026
+  2.364851495014099E+026
+  2.364315866904577E+026
+  2.363125306184334E+026
+  2.361126856563555E+026
+  2.358205636501773E+026
+  2.354307271144294E+026
+  2.349457245852847E+026
+  2.343773146141495E+026
+  2.337465576223877E+026
+  2.330823892943499E+026
+  2.324183855795854E+026
+  2.317875989955157E+026
+  2.312155853202280E+026
+  2.307120240516849E+026
+  2.302616235294760E+026
+  2.298152448809998E+026
+  2.292823381156619E+026
+  2.285258397540719E+026
+  2.273606440716093E+026
+  2.255566629428353E+026
+  2.228473669809170E+026
+  2.189445513357030E+026
+  2.135598197113239E+026
+  2.064327787667276E+026
+  1.973649974943488E+026
+  1.862572866624653E+026
+  1.731458440516198E+026
+  1.582306544922055E+026
+  1.418880190094004E+026
+  1.246593752308622E+026
+  1.072117309980758E+026
+  9.027128666591108E+025
+  7.454001362201907E+025
+  6.058690758493861E+025
+  4.869821935950512E+025
+  3.886256318885424E+025
+  3.089264466229658E+025
+  2.452811002456364E+025
+  1.949633926946373E+025
+  1.554427642199349E+025
+  1.245216202960188E+025
+  1.003690565976959E+025
+  8.150105995147458E+024
+  6.673726611828103E+024
+  5.515106917845779E+024
+  4.602164997324809E+024
+  3.879170252305025E+024
+  3.303201641697421E+024
+  2.841274371876293E+024
+  2.468058722154381E+024
+  2.164095797492524E+024
+  1.914416533491118E+024
+  1.707480810717816E+024
+  1.534366892458657E+024
+  1.388154567616512E+024
+  1.263457099499026E+024
+  1.156066970094996E+024
+  1.062688483809326E+024
+  9.807367414864482E+023
+  9.081875829218056E+023
+  8.434671437960695E+023
+  7.853730463403635E+023
+  7.330223627580040E+023
+  6.858248692197630E+023
+  6.434844237592764E+023
+  6.060375135519042E+023
+  5.739475296530039E+023
+  5.482881742001840E+023
+  5.310724119612042E+023
+  5.258181982474063E+023
+  5.384930424906334E+023
+  5.790500501536996E+023
+  6.638593802835078E+023
+  8.194444693655686E+023
+  1.088029259639837E+024
+  1.535438874118474E+024
+  2.261771611714869E+024
+  3.414806697887453E+024
+  5.205082487914505E+024
+  7.919666941279204E+024
+  1.192856738058015E+025
+  1.767343879390738E+025
+  2.562328208167888E+025
+  3.617783968811424E+025
+  4.951833139339280E+025
+  6.550042076451977E+025
+  8.365614480295525E+025
+  1.032447034378865E+026
+  1.233508325721439E+026
+  1.430165893031527E+026
+  1.613728182589737E+026
+  1.777408756928255E+026
+  1.916882665245939E+026
+  2.030369253427168E+026
+  2.118341573746880E+026
+  2.183012725177996E+026
+  2.227743923628842E+026
+  2.256481228106856E+026
+  2.273281884336981E+026
+  2.281953355498317E+026
+  2.285804396618905E+026
+  2.287496632250356E+026
+  2.288982230904382E+026
+  2.291513532844701E+026
+  2.295710645504855E+026
+  2.301671943212481E+026
+  2.309110648429442E+026
+  2.317499621218234E+026
+  2.326207434596458E+026
+  2.334612223640207E+026
+  2.342185021730502E+026
+  2.348539959048259E+026
+  2.353453524579346E+026
+  2.356858597557759E+026
+  2.358821189497316E+026
+  2.359508426900084E+026
+  2.359154517050273E+026
+  2.358028291316463E+026
+  2.356404555281418E+026
+  2.354541921068564E+026
+  2.352668047590994E+026
+  2.350971254226680E+026
+  2.083522153918159E+026
+  2.083718030043785E+026
+  2.083979296701119E+026
+  2.084290853855105E+026
+  2.084620968529497E+026
+  2.084917260478175E+026
+  2.085105008918050E+026
+  2.085088522152261E+026
+  2.084755916966348E+026
+  2.083988018072025E+026
+  2.082671248397298E+026
+  2.080713476052008E+026
+  2.078061321167789E+026
+  2.074716802828228E+026
+  2.070750465022362E+026
+  2.066307650456335E+026
+  2.061604547906817E+026
+  2.056911040694328E+026
+  2.052518301538507E+026
+  2.048690590333991E+026
+  2.045602767608574E+026
+  2.043267410170225E+026
+  2.041457747738149E+026
+  2.039634538721403E+026
+  2.036886161269954E+026
+  2.031891493118201E+026
+  2.022914715181629E+026
+  2.007840310296943E+026
+  1.984255527495764E+026
+  1.949586381040672E+026
+  1.901291144999671E+026
+  1.837110909687901E+026
+  1.755368454770600E+026
+  1.655293414184631E+026
+  1.537334035054025E+026
+  1.403397100240510E+026
+  1.256944844083202E+026
+  1.102881130399540E+026
+  9.471879585470710E+025
+  7.963290464684231E+025
+  6.565091894850875E+025
+  5.327181758869370E+025
+  4.274234200709563E+025
+  3.404580753529736E+025
+  2.701079294088604E+025
+  2.140244551919888E+025
+  1.697625121895047E+025
+  1.350602913726709E+025
+  1.079586703141921E+025
+  8.682898047120349E+024
+  7.035372678056731E+024
+  5.748693786380522E+024
+  4.740898534790128E+024
+  3.948339702810902E+024
+  3.321894390842905E+024
+  2.823796699833667E+024
+  2.425074330333365E+024
+  2.103517768131016E+024
+  1.842094978988882E+024
+  1.627726681163976E+024
+  1.450347192069653E+024
+  1.302188118145363E+024
+  1.177234138373557E+024
+  1.070810734861161E+024
+  9.792726339281229E+023
+  8.997689717975888E+023
+  8.300669719716884E+023
+  7.684204660344498E+023
+  7.134731966291578E+023
+  6.641898373303381E+023
+  6.198104211821362E+023
+  5.798268383013084E+023
+  5.439838365577505E+023
+  5.123123777265831E+023
+  4.852114934773940E+023
+  4.636077350129977E+023
+  4.492414039169059E+023
+  4.451592228699157E+023
+  4.565377000211712E+023
+  4.920235834823019E+023
+  5.658585667410437E+023
+  7.011493767789776E+023
+  9.347321897833389E+023
+  1.324116761603020E+024
+  1.956893229613558E+024
+  2.962595226625024E+024
+  4.526117231379038E+024
+  6.900106990319233E+024
+  1.041104035614028E+025
+  1.544987615468135E+025
+  2.243373389859712E+025
+  3.172138924345571E+025
+  4.348181425264392E+025
+  5.759868851767923E+025
+  7.366989028938685E+025
+  9.104988378469270E+025
+  1.089344186013054E+026
+  1.264755799110362E+026
+  1.428977511141995E+026
+  1.575884651748714E+026
+  1.701493543751793E+026
+  1.804055878273817E+026
+  1.883822021776319E+026
+  1.942603211040029E+026
+  1.983259471367163E+026
+  2.009207938323671E+026
+  2.024006280431181E+026
+  2.031032511234935E+026
+  2.033261311033781E+026
+  2.033127106028544E+026
+  2.032461505363779E+026
+  2.032492984080996E+026
+  2.033897013214821E+026
+  2.036884079967833E+026
+  2.041311598694536E+026
+  2.046804748720185E+026
+  2.052871916190256E+026
+  2.059003109781896E+026
+  2.064743974266638E+026
+  2.069742710679032E+026
+  2.073771267676108E+026
+  2.076725186221315E+026
+  2.078608485398288E+026
+  2.079510604362954E+026
+  2.079580988667168E+026
+  2.079004286979127E+026
+  2.077978029566924E+026
+  2.076695101755328E+026
+  2.075331811949988E+026
+  2.074040661432639E+026
+  1.947884984082097E+026
+  1.948049787266032E+026
+  1.948276636607356E+026
+  1.948552927509676E+026
+  1.948850488756145E+026
+  1.949121570429108E+026
+  1.949296949732081E+026
+  1.949286849720335E+026
+  1.948985005850361E+026
+  1.948276577852262E+026
+  1.947049834012868E+026
+  1.945210688057381E+026
+  1.942698739692068E+026
+  1.939502895736969E+026
+  1.935673953541703E+026
+  1.931331072915507E+026
+  1.926658998929255E+026
+  1.921893244673042E+026
+  1.917291264924276E+026
+  1.913089023251941E+026
+  1.909444238029765E+026
+  1.906369783647338E+026
+  1.903662893553525E+026
+  1.900837599214927E+026
+  1.897068954473422E+026
+  1.891157921358004E+026
+  1.881525437561694E+026
+  1.866243424754009E+026
+  1.843109586967131E+026
+  1.809771727047793E+026
+  1.763905328578786E+026
+  1.703444052013013E+026
+  1.626855085903559E+026
+  1.533439011038538E+026
+  1.423617503059742E+026
+  1.299154896511175E+026
+  1.163247877534249E+026
+  1.020420760347322E+026
+  8.761903886460505E+025
+  7.365161017314974E+025
+  6.071166229866411E+025
+  4.925877558648825E+025
+  3.951951017579982E+025
+  3.147717714755077E+025
+  2.497236201987920E+025
+  1.978730183828055E+025
+  1.569553167393875E+025
+  1.248770050383422E+025
+  9.982551307763329E+024
+  8.029447458872387E+024
+  6.506561878861642E+024
+  5.317192739518959E+024
+  4.385574855678941E+024
+  3.652880190253468E+024
+  3.073709015735120E+024
+  2.613159840127832E+024
+  2.244458772219284E+024
+  1.947081883346640E+024
+  1.705289757429137E+024
+  1.506995528799008E+024
+  1.342896965443228E+024
+  1.205814551898090E+024
+  1.090188632738783E+024
+  9.916984960387229E+023
+  9.069745208840838E+023
+  8.333812190442867E+023
+  7.688543387348547E+023
+  7.117793998684573E+023
+  6.609023644855404E+023
+  6.152659152029301E+023
+  5.741673624624488E+023
+  5.371369445755418E+023
+  5.039387717975368E+023
+  4.746016735828762E+023
+  4.494948731206897E+023
+  4.294753845829881E+023
+  4.161526052257225E+023
+  4.123437453934233E+023
+  4.228349687646072E+023
+  4.556205697418744E+023
+  5.238671925564707E+023
+  6.489370018337780E+023
+  8.648849659244922E+023
+  1.224879252153155E+024
+  1.809899323932338E+024
+  2.739706916135412E+024
+  4.185257777470781E+024
+  6.380172669873445E+024
+  9.626378529876590E+024
+  1.428550876009990E+025
+  2.074353075765835E+025
+  2.933268838371131E+025
+  4.021002534849617E+025
+  5.326913570946034E+025
+  6.813968527187473E+025
+  8.422653221586370E+025
+  1.007879073443565E+026
+  1.170416140073391E+026
+  1.322720602432168E+026
+  1.459140944422656E+026
+  1.575999933256726E+026
+  1.671681227429595E+026
+  1.746410396678969E+026
+  1.801850398581808E+026
+  1.840628657262253E+026
+  1.865883199831410E+026
+  1.880878395567531E+026
+  1.888709989251904E+026
+  1.892099546939152E+026
+  1.893269272035897E+026
+  1.893885654711274E+026
+  1.895060638570147E+026
+  1.897399250609108E+026
+  1.901081941002849E+026
+  1.905968580990204E+026
+  1.911710236910945E+026
+  1.917855501496839E+026
+  1.923940710168858E+026
+  1.929557334662989E+026
+  1.934394187651008E+026
+  1.938255824332410E+026
+  1.941061313258661E+026
+  1.942829374342231E+026
+  1.943656400664549E+026
+  1.943692508154716E+026
+  1.943118332741035E+026
+  1.942124303458929E+026
+  1.940894514668394E+026
+  1.939595895125798E+026
+  1.938371797176435E+026
+  1.763367047661898E+026
+  1.763607859406465E+026
+  1.763850283401621E+026
+  1.764065107780583E+026
+  1.764213216285241E+026
+  1.764244518544530E+026
+  1.764098665272754E+026
+  1.763707900729427E+026
+  1.763002063779190E+026
+  1.761916091335201E+026
+  1.760399726280340E+026
+  1.758428445082584E+026
+  1.756014339152737E+026
+  1.753215294493060E+026
+  1.750140337196602E+026
+  1.746948765573439E+026
+  1.743840791955317E+026
+  1.741037862024128E+026
+  1.738751637458004E+026
+  1.737141856465261E+026
+  1.736264867720778E+026
+  1.736016375539217E+026
+  1.736073560752846E+026
+  1.735842973397319E+026
+  1.734421237195042E+026
+  1.730575627549345E+026
+  1.722751131689836E+026
+  1.709109934225619E+026
+  1.687608589903528E+026
+  1.656117317216906E+026
+  1.612584200033295E+026
+  1.555243426649597E+026
+  1.482859699479851E+026
+  1.394989860446990E+026
+  1.292228265559377E+026
+  1.176387474689019E+026
+  1.050556349689384E+026
+  9.189819818624386E+025
+  7.867471354137365E+025
+  6.592616533283138E+025
+  5.416450760031594E+025
+  4.379440547410407E+025
+  3.500761130490537E+025
+  2.777710824283306E+025
+  2.194922420903450E+025
+  1.732003257525050E+025
+  1.367993958721125E+025
+  1.083658029437804E+025
+  8.624297836792689E+024
+  6.906040167679806E+024
+  5.571415727738012E+024
+  4.533133161646524E+024
+  3.723051209889278E+024
+  3.088451615588643E+024
+  2.588794471879124E+024
+  2.193024607823285E+024
+  1.877402895564003E+024
+  1.623795982528078E+024
+  1.418346794262599E+024
+  1.250451464348433E+024
+  1.111977751743800E+024
+  9.966710507602337E+023
+  8.997046611906742E+023
+  8.173402196387201E+023
+  7.466718832330181E+023
+  6.854340699664374E+023
+  6.318574774288317E+023
+  5.845619532422295E+023
+  5.424778316698305E+023
+  5.047898597057016E+023
+  4.709001222770556E+023
+  4.404088099323456E+023
+  4.131147374236529E+023
+  3.890419012127636E+023
+  3.685050591247394E+023
+  3.522377849314457E+023
+  3.416227421678302E+023
+  3.390887261361611E+023
+  3.487755174309354E+023
+  3.776187988679800E+023
+  4.370745842294923E+023
+  5.457819846754185E+023
+  7.335397154028200E+023
+  1.047009496440170E+024
+  1.557487459211363E+024
+  2.370781010810299E+024
+  3.638509881438298E+024
+  5.568781820927480E+024
+  8.431949320386018E+024
+  1.255395853748495E+025
+  1.828599437581854E+025
+  2.593587561309856E+025
+  3.565977720813740E+025
+  4.738156182570670E+025
+  6.078873870777723E+025
+  7.536345513139921E+025
+  9.044892346625084E+025
+  1.053423093792555E+026
+  1.193903053778023E+026
+  1.320658104516362E+026
+  1.430129156945530E+026
+  1.520580765929434E+026
+  1.591937144782634E+026
+  1.645445426173375E+026
+  1.683269413050314E+026
+  1.708092593331533E+026
+  1.722777136104097E+026
+  1.730098037467627E+026
+  1.732553661999099E+026
+  1.732245274210198E+026
+  1.730815678713985E+026
+  1.729437327279246E+026
+  1.728840739376362E+026
+  1.729373769236049E+026
+  1.731081298209610E+026
+  1.733794178109092E+026
+  1.737216587852257E+026
+  1.741002796866047E+026
+  1.744817347818600E+026
+  1.748376068179919E+026
+  1.751468326257635E+026
+  1.753963277396311E+026
+  1.755804509213995E+026
+  1.756998133437321E+026
+  1.757598371226430E+026
+  1.757692707338826E+026
+  1.757387955855055E+026
+  1.756799049659971E+026
+  1.756041144048202E+026
+  1.755224254545380E+026
+  2.671631594472544E+026
+  2.671859324236288E+026
+  2.672199898780217E+026
+  2.672641068072687E+026
+  2.673146598011366E+026
+  2.673650259781528E+026
+  2.674053165091819E+026
+  2.674225570555811E+026
+  2.674013737988166E+026
+  2.673252846807177E+026
+  2.671785798659910E+026
+  2.669486492284850E+026
+  2.666285438878037E+026
+  2.662194673412440E+026
+  2.657327861202816E+026
+  2.651910817219900E+026
+  2.646277568182977E+026
+  2.640847637522839E+026
+  2.636081526939816E+026
+  2.632413510501315E+026
+  2.630163774602297E+026
+  2.629435306389233E+026
+  2.630004243417908E+026
+  2.631215086344554E+026
+  2.631893796151682E+026
+  2.630292168845898E+026
+  2.624076177385829E+026
+  2.610369645624765E+026
+  2.585863117617174E+026
+  2.546996091589402E+026
+  2.490218003635333E+026
+  2.412327624804279E+026
+  2.310879617534423E+026
+  2.184629329015134E+026
+  2.033963070912711E+026
+  1.861235470757095E+026
+  1.670917406257298E+026
+  1.469461387709982E+026
+  1.264828784075473E+026
+  1.065697659149913E+026
+  8.804674437345454E+025
+  7.159640208814104E+025
+  5.756607490171837E+025
+  4.594954921272533E+025
+  3.653074808567527E+025
+  2.900552978175238E+025
+  2.305393131584812E+025
+  1.837817407959815E+025
+  1.471921052596260E+025
+  1.186094464905619E+025
+  9.628053999852796E+024
+  7.880984610228203E+024
+  6.510119729392198E+024
+  5.430148045198116E+024
+  4.575087761161746E+024
+  3.894110190311651E+024
+  3.348147118839958E+024
+  2.907194616714446E+024
+  2.548202523549626E+024
+  2.253439914178045E+024
+  2.009238832107598E+024
+  1.805034084170276E+024
+  1.632632289129148E+024
+  1.485657134153293E+024
+  1.359129435607362E+024
+  1.249150124495438E+024
+  1.152661891843821E+024
+  1.067271245383371E+024
+  9.911175201640919E+023
+  9.227793815407182E+023
+  8.612130551756242E+023
+  8.057205206835062E+023
+  7.559510141636376E+023
+  7.119465351093403E+023
+  6.742533049801076E+023
+  6.441386829929123E+023
+  6.239802502809030E+023
+  6.179349454208656E+023
+  6.330562285409503E+023
+  6.811106916492089E+023
+  7.814534243996037E+023
+  9.654459342887801E+023
+  1.283014612834783E+024
+  1.811989740744834E+024
+  2.670716127413861E+024
+  4.033887434505109E+024
+  6.150334014714773E+024
+  9.359225944388088E+024
+  1.409751078598008E+025
+  2.088633400590669E+025
+  3.027832930874629E+025
+  4.274300153749034E+025
+  5.848989416835097E+025
+  7.734185658414683E+025
+  9.873738326039249E+025
+  1.217910741165915E+026
+  1.454106949103428E+026
+  1.684539577265025E+026
+  1.898849624852035E+026
+  2.088953350858585E+026
+  2.249706184545497E+026
+  2.379003789113612E+026
+  2.477439021148300E+026
+  2.547693187865899E+026
+  2.593833433101296E+026
+  2.620643043611847E+026
+  2.633056827735719E+026
+  2.635728743639393E+026
+  2.632730931699768E+026
+  2.627370606706316E+026
+  2.622108155245717E+026
+  2.618560363259398E+026
+  2.617573048708364E+026
+  2.619346099158033E+026
+  2.623591658129992E+026
+  2.629704648927206E+026
+  2.636925569415099E+026
+  2.644479164693434E+026
+  2.651678510597137E+026
+  2.657990645962163E+026
+  2.663065669676579E+026
+  2.666735523751385E+026
+  2.668991486295304E+026
+  2.669950230549931E+026
+  2.669816359297275E+026
+  2.668845784056338E+026
+  2.667312750519992E+026
+  2.665483757438637E+026
+  2.663599587143187E+026
+  2.661864417431648E+026
+  2.798132681464566E+026
+  2.798276522396577E+026
+  2.798590508756017E+026
+  2.799079619760483E+026
+  2.799719977102331E+026
+  2.800449876974497E+026
+  2.801164268104496E+026
+  2.801714096836386E+026
+  2.801911419190230E+026
+  2.801541616242746E+026
+  2.800382823622277E+026
+  2.798231333339874E+026
+  2.794930923162890E+026
+  2.790403013464252E+026
+  2.784673317553553E+026
+  2.777889782004256E+026
+  2.770326343830127E+026
+  2.762367422181184E+026
+  2.754469252350469E+026
+  2.747096305261663E+026
+  2.740634075657661E+026
+  2.735283154835863E+026
+  2.730943199288888E+026
+  2.727098552448404E+026
+  2.722719349289682E+026
+  2.716192671261779E+026
+  2.705297830312024E+026
+  2.687238572581352E+026
+  2.658743371035030E+026
+  2.616243060650083E+026
+  2.556132020149041E+026
+  2.475113098106682E+026
+  2.370615224984890E+026
+  2.241254498850630E+026
+  2.087284956515845E+026
+  1.910958513034025E+026
+  1.716694233040541E+026
+  1.510959455421761E+026
+  1.301802733486995E+026
+  1.098054333221908E+026
+  9.083105570068874E+025
+  7.395997564747535E+025
+  5.955363750744712E+025
+  4.761110365997901E+025
+  3.791549213916795E+025
+  3.015861443564084E+025
+  2.401505637147171E+025
+  1.918127894222186E+025
+  1.539276079906610E+025
+  1.242850120667918E+025
+  1.010893980336690E+025
+  8.290947631480640E+024
+  6.861941302877772E+024
+  5.734175771995324E+024
+  4.839688661514443E+024
+  4.126048400135444E+024
+  3.552894338515034E+024
+  3.089182776368149E+024
+  2.711027971575846E+024
+  2.400027607457448E+024
+  2.141973925044781E+024
+  1.925867197180827E+024
+  1.743163691248134E+024
+  1.587204146250991E+024
+  1.452780567093907E+024
+  1.335808796810887E+024
+  1.233082065723777E+024
+  1.142086840990007E+024
+  1.060867186961293E+024
+  9.879279338614645E+023
+  9.221707495022777E+023
+  8.628613420520135E+023
+  8.096313215177747E+023
+  7.625258910771058E+023
+  7.221202478043832E+023
+  6.897458349539864E+023
+  6.678958522963101E+023
+  6.609221320868019E+023
+  6.761976724923434E+023
+  7.260052025158055E+023
+  8.305229931823511E+023
+  1.022406168308559E+024
+  1.353576597580855E+024
+  1.904872435834605E+024
+  2.799046421371187E+024
+  4.217034832426176E+024
+  6.416146492879516E+024
+  9.746475157017012E+024
+  1.465809182504205E+025
+  2.168638543679911E+025
+  3.139696984282199E+025
+  4.426691922613982E+025
+  6.050253808764631E+025
+  7.991024737507800E+025
+  1.019017090985145E+026
+  1.255589235266616E+026
+  1.497570662926452E+026
+  1.733270615893238E+026
+  1.952163136822415E+026
+  2.146117421455388E+026
+  2.310056033639443E+026
+  2.442031373290063E+026
+  2.542847881544944E+026
+  2.615416739077152E+026
+  2.664020880560668E+026
+  2.693620312678658E+026
+  2.709270868979932E+026
+  2.715683265242556E+026
+  2.716920765213443E+026
+  2.716220940647411E+026
+  2.715923847730455E+026
+  2.717489367877514E+026
+  2.721586543330229E+026
+  2.728236187147974E+026
+  2.736985654913310E+026
+  2.747093230499516E+026
+  2.757700734775077E+026
+  2.767977276478655E+026
+  2.777223703230026E+026
+  2.784934529612833E+026
+  2.790820291676089E+026
+  2.794797741162006E+026
+  2.796958076237955E+026
+  2.797524077190838E+026
+  2.796804760728252E+026
+  2.795152260161238E+026
+  2.792923871209840E+026
+  2.790452633680989E+026
+  2.788027677616684E+026
+  2.785883174463141E+026
+  3.129857390418502E+026
+  3.129942321173815E+026
+  3.130274088202445E+026
+  3.130875009398984E+026
+  3.131730519543528E+026
+  3.132776816636542E+026
+  3.133892677591550E+026
+  3.134897332162343E+026
+  3.135555695869357E+026
+  3.135592702806873E+026
+  3.134717025536399E+026
+  3.132652842919074E+026
+  3.129177275853359E+026
+  3.124159766984395E+026
+  3.117598128861638E+026
+  3.109644850101975E+026
+  3.100616816443390E+026
+  3.090981968625420E+026
+  3.081317767004054E+026
+  3.072238852096972E+026
+  3.064294945658497E+026
+  3.057844464625318E+026
+  3.052913883355646E+026
+  3.049056822815929E+026
+  3.045229502980380E+026
+  3.039700207697141E+026
+  3.030009872553610E+026
+  3.012999317420298E+026
+  2.984916599811166E+026
+  2.941615598091600E+026
+  2.878853371119233E+026
+  2.792687033721504E+026
+  2.679958153622006E+026
+  2.538831966687603E+026
+  2.369330336286939E+026
+  2.173766024365737E+026
+  1.956962378004864E+026
+  1.726143526520850E+026
+  1.490421575864781E+026
+  1.259893647758839E+026
+  1.044478064311213E+026
+  8.523699899287373E+025
+  6.878899868865560E+025
+  5.512017540893673E+025
+  4.399677529568596E+025
+  3.507711478265799E+025
+  2.799664549278486E+025
+  2.241327428525295E+025
+  1.802759922727735E+025
+  1.458861340272194E+025
+  1.189176828743726E+025
+  9.773577180316672E+024
+  8.105121334604520E+024
+  6.785685914532131E+024
+  5.737085570630818E+024
+  4.898869577693398E+024
+  4.224405305478165E+024
+  3.677750697947829E+024
+  3.231195391728664E+024
+  2.863348574210545E+024
+  2.557663637444270E+024
+  2.301306334837398E+024
+  2.084290112923566E+024
+  1.898817668055298E+024
+  1.738780919801984E+024
+  1.599382429341217E+024
+  1.476850012115901E+024
+  1.368223222011758E+024
+  1.271195932558093E+024
+  1.184003901778620E+024
+  1.105350564075357E+024
+  1.034369066560236E+024
+  9.706247199794951E+023
+  9.141709311792003E+023
+  8.656853194105644E+023
+  8.267339707815859E+023
+  8.002446238114375E+023
+  7.913190779993867E+023
+  8.085869823152179E+023
+  8.664022380810721E+023
+  9.883100796264645E+023
+  1.212356856065699E+024
+  1.598941778612477E+024
+  2.241944539869601E+024
+  3.283661667351798E+024
+  4.933411079237022E+024
+  7.488175996610993E+024
+  1.135094126453058E+025
+  1.703806960501165E+025
+  2.516115682557606E+025
+  3.636211566145292E+025
+  5.117517246973889E+025
+  6.981694847007453E+025
+  9.204005472430405E+025
+  1.171431490680353E+026
+  1.440504953327113E+026
+  1.714574398900562E+026
+  1.980200339969207E+026
+  2.225403366653841E+026
+  2.441062268821204E+026
+  2.621639232869172E+026
+  2.765229999346733E+026
+  2.873093648057651E+026
+  2.948881910334305E+026
+  2.997774340033103E+026
+  3.025668213354669E+026
+  3.038505476403408E+026
+  3.041765769822558E+026
+  3.040122244671435E+026
+  3.037242768318404E+026
+  3.035715903898534E+026
+  3.037081619243029E+026
+  3.041946564275774E+026
+  3.050161614950424E+026
+  3.061036307304612E+026
+  3.073562991121227E+026
+  3.086624966727532E+026
+  3.099168158815138E+026
+  3.110323993284041E+026
+  3.119479949823803E+026
+  3.126301778834248E+026
+  3.130716749889134E+026
+  3.132870543315529E+026
+  3.133071058886647E+026
+  3.131729659838802E+026
+  3.129305723377428E+026
+  3.126258168036196E+026
+  3.123007974186890E+026
+  3.119913225271539E+026
+  3.117255434069181E+026
+  3.322790491679092E+026
+  3.322803157962167E+026
+  3.323151274787291E+026
+  3.323878290739616E+026
+  3.324982129930875E+026
+  3.326399514075342E+026
+  3.327995404668798E+026
+  3.329559985784720E+026
+  3.330814937169452E+026
+  3.331431108619304E+026
+  3.331058006012868E+026
+  3.329363564876943E+026
+  3.326081339735884E+026
+  3.321060554963037E+026
+  3.314312569196850E+026
+  3.306045895464289E+026
+  3.296681337780700E+026
+  3.286839197778663E+026
+  3.277292107056301E+026
+  3.268880074274343E+026
+  3.262388753966245E+026
+  3.258397308194750E+026
+  3.257107770271849E+026
+  3.258172605925842E+026
+  3.260540374947095E+026
+  3.262340569147614E+026
+  3.260827941480780E+026
+  3.252404567639036E+026
+  3.232735273149303E+026
+  3.196969201931288E+026
+  3.140076320112434E+026
+  3.057300250777667E+026
+  2.944714874238824E+026
+  2.799849022615750E+026
+  2.622311347191952E+026
+  2.414311014459644E+026
+  2.180941484353084E+026
+  1.930093247231526E+026
+  1.671905885092105E+026
+  1.417766544969815E+026
+  1.178995085643371E+026
+  9.650785773810010E+025
+  7.811945888008170E+025
+  6.278290328389594E+025
+  5.026038318777495E+025
+  4.018680511803464E+025
+  3.216594448174545E+025
+  2.582240337478937E+025
+  2.082543354294387E+025
+  1.689629560626617E+025
+  1.380683909663808E+025
+  1.137400386993458E+025
+  9.452926506286182E+024
+  7.930065789816679E+024
+  6.717009084926928E+024
+  5.745200167893296E+024
+  4.961608043065445E+024
+  4.325251727326218E+024
+  3.804456621990475E+024
+  3.374712984745967E+024
+  3.017017990155343E+024
+  2.716599839729011E+024
+  2.461940243925552E+024
+  2.244028065538557E+024
+  2.055791147573037E+024
+  1.891665185732017E+024
+  1.747268095883499E+024
+  1.619155987860922E+024
+  1.504643024787612E+024
+  1.401672661111800E+024
+  1.308732664450832E+024
+  1.224811753206197E+024
+  1.149402718866317E+024
+  1.082567107265974E+024
+  1.025092181408217E+024
+  9.787952527573480E+023
+  9.470680398535600E+023
+  9.358101848306410E+023
+  9.549827330097509E+023
+  1.021124396338139E+024
+  1.161315724279670E+024
+  1.419235749529793E+024
+  1.864092250319640E+024
+  2.603232399965670E+024
+  3.798991178124317E+024
+  5.689542069761907E+024
+  8.611794543054675E+024
+  1.302127935773160E+025
+  1.949909968567494E+025
+  2.872943379141877E+025
+  4.142374881848159E+025
+  5.816260930891483E+025
+  7.915782226081458E+025
+  1.040899161170086E+026
+  1.321254975811442E+026
+  1.620141233585722E+026
+  1.922591733801834E+026
+  2.213365198515274E+026
+  2.479051946284197E+026
+  2.709635164843275E+026
+  2.899268898099931E+026
+  3.046282884562273E+026
+  3.152600698162289E+026
+  3.222827370645404E+026
+  3.263242612085136E+026
+  3.280867153741834E+026
+  3.282692688956560E+026
+  3.275105462171010E+026
+  3.263497813949853E+026
+  3.252047086118816E+026
+  3.243638459573603E+026
+  3.239909252764095E+026
+  3.241391890330684E+026
+  3.247729821443557E+026
+  3.257936607597209E+026
+  3.270665944838113E+026
+  3.284461883787036E+026
+  3.297964707994910E+026
+  3.310057597827107E+026
+  3.319949814254716E+026
+  3.327201275868617E+026
+  3.331699942842543E+026
+  3.333607259750573E+026
+  3.333287594394771E+026
+  3.331234383779432E+026
+  3.328000361498396E+026
+  3.324136547484739E+026
+  3.320144794443156E+026
+  3.316445864480308E+026
+  3.313361919563553E+026
+  2.705903482400553E+026
+  2.706020348473679E+026
+  2.706308973075194E+026
+  2.706777505678795E+026
+  2.707405837701231E+026
+  2.708136368877758E+026
+  2.708867978894790E+026
+  2.709454601941914E+026
+  2.709709319282666E+026
+  2.709415326492790E+026
+  2.708343966136721E+026
+  2.706278729116969E+026
+  2.703043366364318E+026
+  2.698531236929650E+026
+  2.692731817590848E+026
+  2.685749434018648E+026
+  2.677808967782981E+026
+  2.669243604519283E+026
+  2.660460754508392E+026
+  2.651884248259737E+026
+  2.643873761575395E+026
+  2.636625872713835E+026
+  2.630064703145872E+026
+  2.623733161095293E+026
+  2.616697886262196E+026
+  2.607481817010259E+026
+  2.594037946237591E+026
+  2.573776681473523E+026
+  2.543657706669169E+026
+  2.500355393072265E+026
+  2.440503840515738E+026
+  2.361021843713022E+026
+  2.259507324690061E+026
+  2.134673514224874E+026
+  1.986775860853919E+026
+  1.817953330737422E+026
+  1.632389474393758E+026
+  1.436200876439805E+026
+  1.236996060886414E+026
+  1.043119681674098E+026
+  8.626920257508134E+025
+  7.023462187524678E+025
+  5.654787687354720E+025
+  4.520526831467327E+025
+  3.599884025644345E+025
+  2.863461627758443E+025
+  2.280277832625983E+025
+  1.821463874603921E+025
+  1.461879246388080E+025
+  1.180530134329880E+025
+  9.603656782590452E+024
+  7.877983700100526E+024
+  6.521427666962982E+024
+  5.450722125800427E+024
+  4.601380914570512E+024
+  3.923658018824229E+024
+  3.379261580452329E+024
+  2.938739353869419E+024
+  2.579429630576131E+024
+  2.283872320453469E+024
+  2.038586192212740E+024
+  1.833133068923445E+024
+  1.659404522534999E+024
+  1.511079820580349E+024
+  1.383215075333624E+024
+  1.271932721226322E+024
+  1.174187794015217E+024
+  1.087593298002757E+024
+  1.010291584199653E+024
+  9.408625391090977E+023
+  8.782629855805994E+023
+  8.217956185782656E+023
+  7.711108281916802E+023
+  7.262520177982770E+023
+  6.877661410700993E+023
+  6.569185209019934E+023
+  6.360778494062895E+023
+  6.293778113594732E+023
+  6.438208148644133E+023
+  6.910710449458593E+023
+  7.902893004623019E+023
+  9.724827202821545E+023
+  1.286951619262196E+024
+  1.810451946995213E+024
+  2.659538633322593E+024
+  4.006017557350709E+024
+  6.094227448813863E+024
+  9.256648163679437E+024
+  1.392077742108649E+025
+  2.059529402816613E+025
+  2.981787252651004E+025
+  4.204257832361043E+025
+  5.746700195170417E+025
+  7.590977819961836E+025
+  9.681547348691721E+025
+  1.193162707228627E+026
+  1.423483257054122E+026
+  1.648057421136657E+026
+  1.856927578180253E+026
+  2.042401760626163E+026
+  2.199675681180747E+026
+  2.326903604418603E+026
+  2.424839053456567E+026
+  2.496222439815117E+026
+  2.545084199494518E+026
+  2.576086684103881E+026
+  2.593974188066533E+026
+  2.603156636143686E+026
+  2.607425346658285E+026
+  2.609787039339960E+026
+  2.612399144279360E+026
+  2.616589762599613E+026
+  2.622945637698028E+026
+  2.631450020100528E+026
+  2.641650107108959E+026
+  2.652832504400632E+026
+  2.664186413238099E+026
+  2.674938491168769E+026
+  2.684449746183027E+026
+  2.692271720145449E+026
+  2.698165052609803E+026
+  2.702087690796771E+026
+  2.704162588410186E+026
+  2.704635314934199E+026
+  2.703829784619154E+026
+  2.702106529504595E+026
+  2.699826242792815E+026
+  2.697321759037182E+026
+  2.694879587042353E+026
+  2.692729815223879E+026
+  3.115088928091507E+026
+  3.115173238459818E+026
+  3.115498803436604E+026
+  3.116087110326289E+026
+  3.116923411326035E+026
+  3.117944479442257E+026
+  3.119030407617429E+026
+  3.120002300283781E+026
+  3.120627132650263E+026
+  3.120631507409446E+026
+  3.119724612713392E+026
+  3.117629092623198E+026
+  3.114117532712844E+026
+  3.109050951289675E+026
+  3.102414162711459E+026
+  3.094341760664434E+026
+  3.085128035010763E+026
+  3.075214476461876E+026
+  3.065149820901179E+026
+  3.055520028251300E+026
+  3.046849149959091E+026
+  3.039476363042947E+026
+  3.033418917665034E+026
+  3.028234622698560E+026
+  3.022900127907511E+026
+  3.015722296871012E+026
+  3.004299485129788E+026
+  2.985548024069213E+026
+  2.955807232164921E+026
+  2.911033951965265E+026
+  2.847094078459000E+026
+  2.760151792402652E+026
+  2.647144623206631E+026
+  2.506312057421276E+026
+  2.337717522282357E+026
+  2.143672830466634E+026
+  1.928951273945493E+026
+  1.700676753294524E+026
+  1.467817225707483E+026
+  1.240295735009131E+026
+  1.027846638248620E+026
+  8.384992407642915E+025
+  6.764661901462579E+025
+  5.418722196592216E+025
+  4.323871219690447E+025
+  3.446258125202605E+025
+  2.749847009716619E+025
+  2.200864030735659E+025
+  1.769775660742356E+025
+  1.431838645865968E+025
+  1.166900508781736E+025
+  9.588618887217617E+024
+  7.950328338940179E+024
+  6.655033601292170E+024
+  5.625829624597014E+024
+  4.803274473646629E+024
+  4.141527194710299E+024
+  3.605265554577448E+024
+  3.167263963735376E+024
+  2.806510786840056E+024
+  2.506756292128978E+024
+  2.255399073745107E+024
+  2.042635609665103E+024
+  1.860812839405164E+024
+  1.703936635833224E+024
+  1.567299745532217E+024
+  1.447201376295036E+024
+  1.340737440832407E+024
+  1.245645932488934E+024
+  1.160196498203323E+024
+  1.083117560264899E+024
+  1.013559031585331E+024
+  9.510947144164801E+023
+  8.957772116998971E+023
+  8.482715739829851E+023
+  8.101147829144279E+023
+  7.841804401446449E+023
+  7.754766833884814E+023
+  7.924760159331857E+023
+  8.492732108132242E+023
+  9.689923271346467E+023
+  1.189005812198084E+024
+  1.568654525271262E+024
+  2.200192885808597E+024
+  3.223487702569001E+024
+  4.844339894553351E+024
+  7.354838006752502E+024
+  1.115148188849674E+025
+  1.674257963631060E+025
+  2.473060076947244E+025
+  3.574856525300310E+025
+  5.032451902331613E+025
+  6.867510985230875E+025
+  9.056131921987973E+025
+  1.152978299722900E+026
+  1.418306397657107E+026
+  1.688795215001415E+026
+  1.951240671480832E+026
+  2.193857465460147E+026
+  2.407655008537815E+026
+  2.587153641966162E+026
+  2.730438024015819E+026
+  2.838698802257905E+026
+  2.915478161241823E+026
+  2.965821900632834E+026
+  2.995484518769070E+026
+  3.010268501239246E+026
+  3.015526627468494E+026
+  3.015824245767193E+026
+  3.014744462930802E+026
+  3.014815922309788E+026
+  3.017543342622383E+026
+  3.023520867725044E+026
+  3.032606215561870E+026
+  3.044130665302629E+026
+  3.057118238042394E+026
+  3.070488901771392E+026
+  3.083225868073989E+026
+  3.094495021489386E+026
+  3.103713142765741E+026
+  3.110568915842000E+026
+  3.115005937557067E+026
+  3.117180103575623E+026
+  3.117404381513939E+026
+  3.116091256637508E+026
+  3.113698545393859E+026
+  3.110682118500377E+026
+  3.107459451058386E+026
+  3.104385463506318E+026
+  3.101739385777122E+026
+  3.286255007635543E+026
+  3.286297885143015E+026
+  3.286657797356774E+026
+  3.287372344613925E+026
+  3.288435104451029E+026
+  3.289780957592147E+026
+  3.291276538948553E+026
+  3.292718142491116E+026
+  3.293838727249542E+026
+  3.294326019799582E+026
+  3.293852023138195E+026
+  3.292112327849958E+026
+  3.288872297162907E+026
+  3.284015554226774E+026
+  3.277588359716981E+026
+  3.269832118605660E+026
+  3.261195738195446E+026
+  3.252320016245218E+026
+  3.243987892927460E+026
+  3.237037460920488E+026
+  3.232239034172460E+026
+  3.230142881482667E+026
+  3.230909664618748E+026
+  3.234140268167964E+026
+  3.238724765126251E+026
+  3.242731299876461E+026
+  3.243354815698101E+026
+  3.236943444241351E+026
+  3.219117787334770E+026
+  3.184995527817262E+026
+  3.129529905187440E+026
+  3.047963270312473E+026
+  2.936383034676499E+026
+  2.792344283777496E+026
+  2.615491164863928E+026
+  2.408072899558447E+026
+  2.175222121515736E+026
+  1.924862159846842E+026
+  1.667154605610042E+026
+  1.413495225983076E+026
+  1.175199123668898E+026
+  9.617391544998337E+025
+  7.782788992454801E+025
+  6.252966225279503E+025
+  5.004117949544625E+025
+  3.999742281534275E+025
+  3.200242640910197E+025
+  2.568114629951287E+025
+  2.070322636622206E+025
+  1.679032213710681E+025
+  1.371465966003236E+025
+  1.129352518096432E+025
+  9.382366011714496E+024
+  7.867914496813384E+024
+  6.661995395621461E+024
+  5.696256196626275E+024
+  4.917839179392557E+024
+  4.285909733800999E+024
+  3.768916253278608E+024
+  3.342451930845126E+024
+  2.987599843480409E+024
+  2.689659737693826E+024
+  2.437172827284344E+024
+  2.221177404587396E+024
+  2.034642313054173E+024
+  1.872037171615496E+024
+  1.729007832523626E+024
+  1.602133213709258E+024
+  1.488745811025569E+024
+  1.386803403820236E+024
+  1.294804369034587E+024
+  1.211744428459234E+024
+  1.137119661445303E+024
+  1.070990772909396E+024
+  1.014139179003895E+024
+  9.683697208489040E+023
+  9.370522175749836E+023
+  9.260503034416350E+023
+  9.452673610551736E+023
+  1.011151025172893E+024
+  1.150639708561791E+024
+  1.407193905425762E+024
+  1.849691938773947E+024
+  2.584996722067338E+024
+  3.774753561095569E+024
+  5.656191322426601E+024
+  8.564987236196671E+024
+  1.295516277533768E+025
+  1.940612654366225E+025
+  2.860039635424232E+025
+  4.124820507447650E+025
+  5.792989846843925E+025
+  7.885872982403233E+025
+  1.037183840958896E+026
+  1.316795510313125E+026
+  1.614958030552966E+026
+  1.916734603997858E+026
+  2.206894650726861E+026
+  2.472016879043916E+026
+  2.702051962899607E+026
+  2.891106074677225E+026
+  3.037453636425694E+026
+  3.142963841158795E+026
+  3.212195664012784E+026
+  3.251396664173495E+026
+  3.267572842001456E+026
+  3.267720105349495E+026
+  3.258247607339466E+026
+  3.244587493057335E+026
+  3.230970683427821E+026
+  3.220345522790734E+026
+  3.214417148370683E+026
+  3.213785217795545E+026
+  3.218154773964157E+026
+  3.226590975921708E+026
+  3.237785893381161E+026
+  3.250306904725780E+026
+  3.262802231232783E+026
+  3.274148603626197E+026
+  3.283536510626727E+026
+  3.290497540989503E+026
+  3.294884863665335E+026
+  3.296821764917652E+026
+  3.296633911164415E+026
+  3.294777877927848E+026
+  3.291773257153007E+026
+  3.288143016435352E+026
+  3.284366893266258E+026
+  3.280849813231873E+026
+  3.277904269723937E+026
+  2.339206000536960E+026
+  2.339302450971204E+026
+  2.339537787970388E+026
+  2.339917875436018E+026
+  2.340425257065068E+026
+  2.341011202522255E+026
+  2.341590240795708E+026
+  2.342038318004047E+026
+  2.342195330757846E+026
+  2.341873211595588E+026
+  2.340869790472346E+026
+  2.338987610246578E+026
+  2.336056285465404E+026
+  2.331956179062708E+026
+  2.326640181970240E+026
+  2.320149655328806E+026
+  2.312620313855677E+026
+  2.304274030634375E+026
+  2.295393342423688E+026
+  2.286276964789221E+026
+  2.277176882766578E+026
+  2.268220348791712E+026
+  2.259323005265122E+026
+  2.250101889835991E+026
+  2.239798865012470E+026
+  2.227225810958439E+026
+  2.210742772451169E+026
+  2.188279438186400E+026
+  2.157409166944900E+026
+  2.115483256550708E+026
+  2.059830616291245E+026
+  1.988023061185357E+026
+  1.898197381100953E+026
+  1.789410966051730E+026
+  1.661988561650906E+026
+  1.517797079882730E+026
+  1.360370764278687E+026
+  1.194811457487012E+026
+  1.027418506600461E+026
+  8.650622253625358E+025
+  7.143929760280265E+025
+  5.808049605156551E+025
+  4.670027680770222E+025
+  3.728559424177671E+025
+  2.965607060272036E+025
+  2.356209584952147E+025
+  1.874272827035660E+025
+  1.495595457930921E+025
+  1.199170230292508E+025
+  9.674992981721903E+024
+  7.864010918796980E+024
+  6.445951823390536E+024
+  5.332248259148140E+024
+  4.453985028113477E+024
+  3.757862065323508E+024
+  3.202813448987381E+024
+  2.757265070170761E+024
+  2.396957559297112E+024
+  2.103243352695419E+024
+  1.861768422175410E+024
+  1.661459332116837E+024
+  1.493749073373561E+024
+  1.351987697753585E+024
+  1.230994954733489E+024
+  1.126721558645969E+024
+  1.035993409390438E+024
+  9.563192327549778E+023
+  8.857469537703338E+023
+  8.227579737049519E+023
+  7.661917379140844E+023
+  7.151959610412032E+023
+  6.692011100028430E+023
+  6.279218842314675E+023
+  5.913943982450679E+023
+  5.600669108785299E+023
+  5.349762089692872E+023
+  5.180638476117061E+023
+  5.127198674730538E+023
+  5.246903501764151E+023
+  5.635527855878864E+023
+  6.450505530390439E+023
+  7.946784390592727E+023
+  1.053003201598346E+024
+  1.483236667939176E+024
+  2.181457858909135E+024
+  3.289444491578632E+024
+  5.009086870601149E+024
+  7.615526536635876E+024
+  1.146322366990117E+025
+  1.697506477523763E+025
+  2.459988603933984E+025
+  3.471999531859357E+025
+  4.750844946527107E+025
+  6.282712598259907E+025
+  8.022936301978428E+025
+  9.900921715298169E+025
+  1.182959216257100E+026
+  1.371798578214793E+026
+  1.548377487447874E+026
+  1.706290502687039E+026
+  1.841481113879348E+026
+  1.952310973102615E+026
+  2.039274034135427E+026
+  2.104500065531384E+026
+  2.151186065525640E+026
+  2.183057551826885E+026
+  2.203917681219934E+026
+  2.217305990899060E+026
+  2.226265941040283E+026
+  2.233209987172911E+026
+  2.239868034067712E+026
+  2.247305182120585E+026
+  2.255994658173105E+026
+  2.265930719906548E+026
+  2.276764710479453E+026
+  2.287946649947308E+026
+  2.298855977799144E+026
+  2.308908672583948E+026
+  2.317633270071693E+026
+  2.324713893206386E+026
+  2.330003057327059E+026
+  2.333510295206664E+026
+  2.335374670861686E+026
+  2.335829684105458E+026
+  2.335167191376553E+026
+  2.333703783259970E+026
+  2.331751684474624E+026
+  2.329596700911494E+026
+  2.327484025399935E+026
+  2.325610779461755E+026
+  3.149033627106875E+026
+  3.149125621728701E+026
+  3.149466899646174E+026
+  3.150079454890076E+026
+  3.150947953055832E+026
+  3.152007428273684E+026
+  3.153135283433175E+026
+  3.154149508353008E+026
+  3.154814424807740E+026
+  3.154855693441064E+026
+  3.153984835397249E+026
+  3.151931861678419E+026
+  3.148483533071754E+026
+  3.143523402848837E+026
+  3.137068221863271E+026
+  3.129294143350475E+026
+  3.120545744762187E+026
+  3.111321285793072E+026
+  3.102229032163891E+026
+  3.093912079835212E+026
+  3.086942870767578E+026
+  3.081693120888769E+026
+  3.078189528119673E+026
+  3.075969620211256E+026
+  3.073954761901118E+026
+  3.070358310200896E+026
+  3.062646292657958E+026
+  3.047566312014702E+026
+  3.021258269812065E+026
+  2.979458097119710E+026
+  2.917802092487394E+026
+  2.832232596674875E+026
+  2.719492826814812E+026
+  2.577677634778244E+026
+  2.406778039799437E+026
+  2.209125366238237E+026
+  1.989616788455310E+026
+  1.755604950281618E+026
+  1.516376389723348E+026
+  1.282231485575823E+026
+  1.063297437909170E+026
+  8.679526240594899E+025
+  7.006316512082868E+025
+  5.615330686298909E+025
+  4.483024066372353E+025
+  3.574796756383090E+025
+  2.853663632587990E+025
+  2.284881191777495E+025
+  1.838019970103562E+025
+  1.487555297682227E+025
+  1.212677751727287E+025
+  9.967491894321740E+024
+  8.266453448284766E+024
+  6.921103666816857E+024
+  5.851806639202404E+024
+  4.996976852947735E+024
+  4.309097182824302E+024
+  3.751537600427594E+024
+  3.296053049008622E+024
+  2.920837029521772E+024
+  2.609019380550545E+024
+  2.347513528701646E+024
+  2.126135654413910E+024
+  1.936933807371821E+024
+  1.773678343989613E+024
+  1.631476067122929E+024
+  1.506479312698673E+024
+  1.395668273747242E+024
+  1.296690497650873E+024
+  1.207746237421577E+024
+  1.127512775199095E+024
+  1.055105700636337E+024
+  9.900813977879994E+023
+  9.324940626654768E+023
+  8.830344718048141E+023
+  8.432993818181917E+023
+  8.162739037474580E+023
+  8.071596281297621E+023
+  8.247544787142058E+023
+  8.836911598350716E+023
+  1.007970142522722E+024
+  1.236369519501681E+024
+  1.630443160775289E+024
+  2.285852980107125E+024
+  3.347574870409684E+024
+  5.028829834494579E+024
+  7.632073277188344E+024
+  1.156760456803468E+025
+  1.736097349026152E+025
+  2.563434785356944E+025
+  3.704021030045980E+025
+  5.212062824769391E+025
+  7.109339058664317E+025
+  9.370304468210606E+025
+  1.192314688570890E+026
+  1.465793453081195E+026
+  1.744148024505971E+026
+  2.013669449731512E+026
+  2.262148276008816E+026
+  2.480299103636904E+026
+  2.662498146267042E+026
+  2.806832232434024E+026
+  2.914617430967278E+026
+  2.989611769261536E+026
+  3.037132438794239E+026
+  3.063229119676886E+026
+  3.073997127018743E+026
+  3.075059770184621E+026
+  3.071216455202015E+026
+  3.066238783661810E+026
+  3.062793731066230E+026
+  3.062473645500094E+026
+  3.065912714271731E+026
+  3.072967338737719E+026
+  3.082934657245822E+026
+  3.094781537941648E+026
+  3.107357733819298E+026
+  3.119572212708361E+026
+  3.130519906896813E+026
+  3.139555110337473E+026
+  3.146315454559892E+026
+  3.150705930723807E+026
+  3.152855772713768E+026
+  3.153061717420889E+026
+  3.151728383296656E+026
+  3.149311811524535E+026
+  3.146269971737946E+026
+  3.143024353548069E+026
+  3.139934239395128E+026
+  3.137282458197233E+026
+  2.962860127555009E+026
+  2.963015346153818E+026
+  2.963363750826388E+026
+  2.963912527096812E+026
+  2.964636858658612E+026
+  2.965470330028643E+026
+  2.966299324899085E+026
+  2.966963018346936E+026
+  2.967259971378891E+026
+  2.966962745459560E+026
+  2.965840589322823E+026
+  2.963688734423238E+026
+  2.960361897604717E+026
+  2.955808392451496E+026
+  2.950099881566251E+026
+  2.943450849568068E+026
+  2.936221607109305E+026
+  2.928899128061062E+026
+  2.922051428978366E+026
+  2.916253672185738E+026
+  2.911987649209747E+026
+  2.909520414218011E+026
+  2.908771979767968E+026
+  2.909185462940506E+026
+  2.909615290775788E+026
+  2.908249758085966E+026
+  2.902583524039312E+026
+  2.889454049060528E+026
+  2.865154073290433E+026
+  2.825630106913452E+026
+  2.766773634868788E+026
+  2.684805304561733E+026
+  2.576740167387053E+026
+  2.440902157677254E+026
+  2.277428824128716E+026
+  2.088677509218906E+026
+  1.879422250262799E+026
+  1.656732513696095E+026
+  1.429465534793478E+026
+  1.207387481940287E+026
+  1.000050177078226E+026
+  8.153109229396159E+025
+  6.572812311151986E+025
+  5.260736392420797E+025
+  4.194013731001325E+025
+  3.339479683447815E+025
+  2.661853412672388E+025
+  2.128085693370873E+025
+  1.709290558727011E+025
+  1.381279381648207E+025
+  1.124361997000717E+025
+  9.228175378502026E+024
+  7.642621926304138E+024
+  6.390315876759117E+024
+  5.396312198379469E+024
+  4.602727980046255E+024
+  3.964960195659904E+024
+  3.448669050316548E+024
+  3.027408958450768E+024
+  2.680788308548491E+024
+  2.393051126469818E+024
+  2.151990116061129E+024
+  1.948117135413606E+024
+  1.774032146711379E+024
+  1.623944449044922E+024
+  1.493310514024830E+024
+  1.378561188887957E+024
+  1.276897731087572E+024
+  1.186141495606535E+024
+  1.104626587352341E+024
+  1.031128975219757E+024
+  9.648301315291084E+023
+  9.053191278126697E+023
+  8.526455872860325E+023
+  8.074488684268362E+023
+  7.712090818816683E+023
+  7.466968247389694E+023
+  7.387457264326553E+023
+  7.555405557904222E+023
+  8.107084995162594E+023
+  9.266230298429060E+023
+  1.139468735165720E+024
+  1.506739715225910E+024
+  2.117881624859700E+024
+  3.108601688469821E+024
+  4.678735227563899E+024
+  7.112141625928019E+024
+  1.079450516223237E+025
+  1.622078525454605E+025
+  2.397836809348984E+025
+  3.468548984021646E+025
+  4.885952538756063E+025
+  6.671584196014722E+025
+  8.802630975603632E+025
+  1.121267441270899E+026
+  1.379908825079630E+026
+  1.643679987669204E+026
+  1.899637856638010E+026
+  2.136183050500378E+026
+  2.344414122628107E+026
+  2.518843437705213E+026
+  2.657467613257984E+026
+  2.761336590613216E+026
+  2.833829692562032E+026
+  2.879835772058897E+026
+  2.904980646019218E+026
+  2.914981680596753E+026
+  2.915158268828485E+026
+  2.910095714660512E+026
+  2.903446300954603E+026
+  2.897848202602026E+026
+  2.894943592402650E+026
+  2.895477400005556E+026
+  2.899456324191340E+026
+  2.906344807348461E+026
+  2.915272826379927E+026
+  2.925231414075657E+026
+  2.935236470684124E+026
+  2.944448769672829E+026
+  2.952246167709070E+026
+  2.958251053947789E+026
+  2.962321203949025E+026
+  2.964515396363101E+026
+  2.965045936927504E+026
+  2.964227795951232E+026
+  2.962429820575271E+026
+  2.960031495360351E+026
+  2.957389079621452E+026
+  2.954812606860364E+026
+  2.952552642594596E+026
+  3.167701214652703E+026
+  3.167831549705967E+026
+  3.168215957091607E+026
+  3.168873511092555E+026
+  3.169784664447201E+026
+  3.170879646419848E+026
+  3.172031786882552E+026
+  3.173057762697158E+026
+  3.173726074172333E+026
+  3.173775397689586E+026
+  3.172942863284484E+026
+  3.171000506711334E+026
+  3.167796944515822E+026
+  3.163299843948946E+026
+  3.157633118674940E+026
+  3.151101633716372E+026
+  3.144195869914278E+026
+  3.137569597915106E+026
+  3.131985333455593E+026
+  3.128225356442813E+026
+  3.126970287652266E+026
+  3.128652180509255E+026
+  3.133294061874950E+026
+  3.140351996020419E+026
+  3.148578332282240E+026
+  3.155925487132918E+026
+  3.159508591128856E+026
+  3.155643247139030E+026
+  3.139972234714936E+026
+  3.107692456264516E+026
+  3.053889794285599E+026
+  2.973982519188358E+026
+  2.864260376281858E+026
+  2.722484065316791E+026
+  2.548478693394198E+026
+  2.344619987551187E+026
+  2.116085575217577E+026
+  1.870743820404727E+026
+  1.618597369283761E+026
+  1.370793158924192E+026
+  1.138339147582997E+026
+  9.303986153682757E+025
+  7.519148891293764E+025
+  6.032722213888939E+025
+  4.820850134854290E+025
+  3.847474425294243E+025
+  3.073673314048066E+025
+  2.462686850184778E+025
+  1.982202527526903E+025
+  1.605042143611226E+025
+  1.308999695470164E+025
+  1.076287969950606E+025
+  8.928543721413802E+024
+  7.477026896542061E+024
+  6.322842579772867E+024
+  5.399811024515971E+024
+  4.656822768887911E+024
+  4.054446024203533E+024
+  3.562253172060254E+024
+  3.156737611395789E+024
+  2.819703721110034E+024
+  2.537029846288033E+024
+  2.297722051298622E+024
+  2.093192726687582E+024
+  1.916712203576014E+024
+  1.762993187987595E+024
+  1.627877247356266E+024
+  1.508100088892579E+024
+  1.401118399320590E+024
+  1.304986095935751E+024
+  1.218272601530289E+024
+  1.140020987413598E+024
+  1.069750581292941E+024
+  1.007518405575361E+024
+  9.540687807640884E+023
+  9.111237465068415E+023
+  8.819029544566566E+023
+  8.720158957233730E+023
+  8.909479172916507E+023
+  9.544696210469326E+023
+  1.088437258259715E+024
+  1.334607574242644E+024
+  1.759226514038271E+024
+  2.465183346150167E+024
+  3.608292592273694E+024
+  5.417516294981325E+024
+  8.217295136828817E+024
+  1.244717015745794E+025
+  1.866916850893087E+025
+  2.754700291348830E+025
+  3.977392971700410E+025
+  5.592079732538073E+025
+  7.620620184199870E+025
+  1.003373955127813E+026
+  1.275233393174704E+026
+  1.565644522960084E+026
+  1.860146408463224E+026
+  2.143911305954703E+026
+  2.403786015966434E+026
+  2.629824292014884E+026
+  2.816073440810112E+026
+  2.960616430864457E+026
+  3.065042669535531E+026
+  3.133590976965127E+026
+  3.172191857085760E+026
+  3.187571852665999E+026
+  3.186509092603249E+026
+  3.175270655003042E+026
+  3.159227377720644E+026
+  3.142626959525854E+026
+  3.128503358225653E+026
+  3.118701611052260E+026
+  3.113997251788574E+026
+  3.114286991568893E+026
+  3.118823524169832E+026
+  3.126464759780955E+026
+  3.135908761877263E+026
+  3.145890985442192E+026
+  3.155329067202504E+026
+  3.163410119988799E+026
+  3.169624007818516E+026
+  3.173752338266854E+026
+  3.175826737764748E+026
+  3.176070872830230E+026
+  3.174837879279961E+026
+  3.172550031164416E+026
+  3.169645078165136E+026
+  3.166533839327472E+026
+  3.163570978292932E+026
+  3.161037988410999E+026
+  2.118761375564081E+026
+  2.118911706126873E+026
+  2.119155437138371E+026
+  2.119486430577882E+026
+  2.119879701465450E+026
+  2.120285955370468E+026
+  2.120628457074761E+026
+  2.120803111860750E+026
+  2.120682259679649E+026
+  2.120123055614688E+026
+  2.118980448762691E+026
+  2.117123835089516E+026
+  2.114455957018875E+026
+  2.110931938591866E+026
+  2.106575525071475E+026
+  2.101489037435761E+026
+  2.095853416442190E+026
+  2.089915044313172E+026
+  2.083956880882236E+026
+  2.078252932878078E+026
+  2.073007159088553E+026
+  2.068280382693006E+026
+  2.063911272699357E+026
+  2.059439558558543E+026
+  2.054041013839425E+026
+  2.046484226858219E+026
+  2.035118857320569E+026
+  2.017904250366928E+026
+  1.992486235615676E+026
+  1.956328643998299E+026
+  1.906903862037355E+026
+  1.841942267037768E+026
+  1.759732025461493E+026
+  1.659447410782001E+026
+  1.541466016236212E+026
+  1.407616259170841E+026
+  1.261283410393658E+026
+  1.107305280761302E+026
+  9.516170220092673E+025
+  8.006600481300039E+025
+  6.606424736777346E+025
+  5.365780326201244E+025
+  4.309650670132927E+025
+  3.436631786912550E+025
+  2.729778240022331E+025
+  2.165739259510645E+025
+  1.720146511312350E+025
+  1.370425480109242E+025
+  1.097000040040560E+025
+  8.835793389898212E+024
+  7.169721891290658E+024
+  5.866958917459803E+024
+  4.845281765799146E+024
+  4.040778338195304E+024
+  3.404071488616779E+024
+  2.897160622453807E+024
+  2.490862589579978E+024
+  2.162782123064644E+024
+  1.895725895591289E+024
+  1.676476069886496E+024
+  1.494848889724075E+024
+  1.342975941459234E+024
+  1.214757561188512E+024
+  1.105448370819792E+024
+  1.011343773425114E+024
+  9.295434492841295E+023
+  8.577736433547920E+023
+  7.942545663554975E+023
+  7.376028328012612E+023
+  6.867618562006717E+023
+  6.409558878573815E+023
+  5.996663754027521E+023
+  5.626331295397383E+023
+  5.298882709380803E+023
+  5.018393247760987E+023
+  4.794309374157573E+023
+  4.644350111099816E+023
+  4.599498314063763E+023
+  4.712337343742565E+023
+  5.070613960232417E+023
+  5.818718626793938E+023
+  7.190712954001406E+023
+  9.559402506194203E+023
+  1.350629264836449E+024
+  1.991619185603763E+024
+  3.009625265420598E+024
+  4.591016770853876E+024
+  6.990133102815741E+024
+  1.053515228910803E+025
+  1.561835643355522E+025
+  2.265720454876482E+025
+  3.200903190618183E+025
+  4.383886486875263E+025
+  5.802416294690309E+025
+  7.415569072202592E+025
+  9.158156048518048E+025
+  1.094935191657847E+026
+  1.270431424448688E+026
+  1.434581850489963E+026
+  1.581330108874942E+026
+  1.706784968076514E+026
+  1.809301086644305E+026
+  1.889228624317686E+026
+  1.948463857588612E+026
+  1.989928713429596E+026
+  2.017074078727879E+026
+  2.033461262038009E+026
+  2.042442431443872E+026
+  2.046939732360336E+026
+  2.049312993577155E+026
+  2.051303288217282E+026
+  2.054039816254510E+026
+  2.058097747299717E+026
+  2.063593779209206E+026
+  2.070304684701530E+026
+  2.077793235647959E+026
+  2.085526740179600E+026
+  2.092976405134676E+026
+  2.099690286969411E+026
+  2.105337516090916E+026
+  2.109725668906792E+026
+  2.112796209128560E+026
+  2.114604881748005E+026
+  2.115294477427350E+026
+  2.115065822684870E+026
+  2.114150082575574E+026
+  2.112784284332126E+026
+  2.111192399018510E+026
+  2.109572769809983E+026
+  2.108090938623823E+026
+  3.270637929451845E+026
+  3.270615210839478E+026
+  3.270971354327664E+026
+  3.271760707322498E+026
+  3.272988287583832E+026
+  3.274593011153314E+026
+  3.276436647396046E+026
+  3.278301181460276E+026
+  3.279896539722484E+026
+  3.280880885003090E+026
+  3.280893871552922E+026
+  3.279601158009878E+026
+  3.276746942476624E+026
+  3.272209423874627E+026
+  3.266052047403728E+026
+  3.258561872145820E+026
+  3.250265783694386E+026
+  3.241915743983339E+026
+  3.234436080843880E+026
+  3.228829195120818E+026
+  3.226040933418456E+026
+  3.226792747237381E+026
+  3.231393779862884E+026
+  3.239551170585897E+026
+  3.250200235867601E+026
+  3.261377288770368E+026
+  3.270156824044484E+026
+  3.272672343191159E+026
+  3.264237128732198E+026
+  3.239578194460248E+026
+  3.193192583095224E+026
+  3.119827742629542E+026
+  3.015073471856623E+026
+  2.876028959247420E+026
+  2.701974488235142E+026
+  2.494938458589398E+026
+  2.260019226170222E+026
+  2.005318060293412E+026
+  1.741384615893863E+026
+  1.480177247236827E+026
+  1.233681388023829E+026
+  1.012041460834351E+026
+  8.209307617399049E+025
+  6.611037779508994E+025
+  5.302794409981412E+025
+  4.247979228223014E+025
+  3.406298962477139E+025
+  2.739278363203775E+025
+  2.212837653441712E+025
+  1.798138602899569E+025
+  1.471497363947553E+025
+  1.213855564701854E+025
+  1.010092487703321E+025
+  8.483290030199537E+024
+  7.192950930601813E+024
+  6.157883070411592E+024
+  5.322268715823843E+024
+  4.642898045315508E+024
+  4.086319021631060E+024
+  3.626606632772721E+024
+  3.243631637974110E+024
+  2.921725308209884E+024
+  2.648654365584189E+024
+  2.414836895383406E+024
+  2.212744460622398E+024
+  2.036447752818113E+024
+  1.881272970833873E+024
+  1.743544028493741E+024
+  1.620392084555422E+024
+  1.509619317100197E+024
+  1.409609005654805E+024
+  1.319279694898117E+024
+  1.238088646694999E+024
+  1.166100585521938E+024
+  1.104154303325335E+024
+  1.054185456414821E+024
+  1.019803568037365E+024
+  1.007280779482026E+024
+  1.027195770775644E+024
+  1.097093641916438E+024
+  1.245670878119312E+024
+  1.519159221614471E+024
+  1.990720143036516E+024
+  2.773678653745671E+024
+  4.039147706359899E+024
+  6.037740271794707E+024
+  9.123235498565650E+024
+  1.377278902744933E+025
+  2.059318163977577E+025
+  3.029575269669575E+025
+  4.361515898511646E+025
+  6.114190749131787E+025
+  8.307257709897260E+025
+  1.090415138634540E+026
+  1.381432064659936E+026
+  1.690388094968158E+026
+  2.001400163365126E+026
+  2.298416535865882E+026
+  2.567437430656233E+026
+  2.798141841463642E+026
+  2.984676683517903E+026
+  3.125627405798828E+026
+  3.223373657114256E+026
+  3.283104030641579E+026
+  3.311739588613223E+026
+  3.316941342245774E+026
+  3.306294724782248E+026
+  3.286700569454697E+026
+  3.263965210281920E+026
+  3.242567532733152E+026
+  3.225578532690180E+026
+  3.214710292981329E+026
+  3.210470906312241E+026
+  3.212398449524057E+026
+  3.219342366774682E+026
+  3.229757593563360E+026
+  3.241978046691787E+026
+  3.254442567345405E+026
+  3.265856749968688E+026
+  3.275285612762072E+026
+  3.282182127287198E+026
+  3.286363880879597E+026
+  3.287954363074991E+026
+  3.287306102821893E+026
+  3.284919509449207E+026
+  3.281365720970183E+026
+  3.277218824770291E+026
+  3.273002688585159E+026
+  3.269154695524526E+026
+  3.266005507881309E+026
+  3.319115620195096E+026
+  3.318998274727805E+026
+  3.319323965181781E+026
+  3.320166697078564E+026
+  3.321545945971866E+026
+  3.323406899442409E+026
+  3.325606626060325E+026
+  3.327909183096567E+026
+  3.329991961368832E+026
+  3.331465802812901E+026
+  3.331909534491961E+026
+  3.330917366576573E+026
+  3.328155939089155E+026
+  3.323425777683595E+026
+  3.316719682501835E+026
+  3.308268859410622E+026
+  3.298566807471714E+026
+  3.288361305526717E+026
+  3.278606585751710E+026
+  3.270371203943530E+026
+  3.264702171095677E+026
+  3.262452107887782E+026
+  3.264082637928305E+026
+  3.269462863496354E+026
+  3.277685578616955E+026
+  3.286925294354157E+026
+  3.294361256670642E+026
+  3.296186137883285E+026
+  3.287717933360647E+026
+  3.263629273777184E+026
+  3.218304094174629E+026
+  3.146323999785614E+026
+  3.043072257180872E+026
+  2.905419039024552E+026
+  2.732416905886298E+026
+  2.525895400508381E+026
+  2.290810896618646E+026
+  2.035203103702254E+026
+  1.769654025940881E+026
+  1.506247077290098E+026
+  1.257168017225070E+026
+  1.032797724879020E+026
+  8.390121522079248E+025
+  6.766941793319075E+025
+  5.436285658745302E+025
+  4.361787872025821E+025
+  3.503121503420890E+025
+  2.821625562563208E+025
+  2.282959991450731E+025
+  1.858001212132820E+025
+  1.522784559055150E+025
+  1.257991580388279E+025
+  1.048269794829246E+025
+  8.815388893693371E+024
+  7.483574258853259E+024
+  6.413788480682622E+024
+  5.549014282150145E+024
+  4.845050478689588E+024
+  4.267629897568496E+024
+  3.790159610771333E+024
+  3.391964266576299E+024
+  3.056929120470469E+024
+  2.772456780645196E+024
+  2.528668103337321E+024
+  2.317792074985468E+024
+  2.133701624673565E+024
+  1.971562201428896E+024
+  1.827567906699755E+024
+  1.698746419377838E+024
+  1.582819442919283E+024
+  1.478110628879781E+024
+  1.383498763057593E+024
+  1.298421620064577E+024
+  1.222946983230905E+024
+  1.157944344623227E+024
+  1.105417265459424E+024
+  1.069097092095423E+024
+  1.055459708850597E+024
+  1.075414804806915E+024
+  1.147036779467549E+024
+  1.299856991692430E+024
+  1.581403051083212E+024
+  2.066807288041125E+024
+  2.872316432559188E+024
+  4.173239756143708E+024
+  6.225985877344717E+024
+  9.391954159036410E+024
+  1.415769474809315E+025
+  2.114056634048684E+025
+  3.106219637683437E+025
+  4.466452948238064E+025
+  6.253818874059181E+025
+  8.486789472842642E+025
+  1.112629192370941E+026
+  1.407834886650964E+026
+  1.720531921629213E+026
+  2.034495860489951E+026
+  2.333429631432328E+026
+  2.603224479213476E+026
+  2.833598020506186E+026
+  3.018867202500894E+026
+  3.157883675999209E+026
+  3.253345860780912E+026
+  3.310770996786822E+026
+  3.337382831666185E+026
+  3.341092667992346E+026
+  3.329666951215307E+026
+  3.310109885819685E+026
+  3.288252430679879E+026
+  3.268524413579700E+026
+  3.253884414770960E+026
+  3.245883376115748E+026
+  3.244837233491898E+026
+  3.250080070267903E+026
+  3.260264263549678E+026
+  3.273671052168227E+026
+  3.288496564041048E+026
+  3.303085404119112E+026
+  3.316094993647073E+026
+  3.326586078685398E+026
+  3.334045403549040E+026
+  3.338354066622963E+026
+  3.339719325987832E+026
+  3.338588202618694E+026
+  3.335557561063870E+026
+  3.331289463976559E+026
+  3.326437432847182E+026
+  3.321589029318738E+026
+  3.317227128065487E+026
+  3.313708972887226E+026
+  1.889864934392282E+026
+  1.890047466616268E+026
+  1.890283104296679E+026
+  1.890556642851092E+026
+  1.890838360607442E+026
+  1.891080561368352E+026
+  1.891216143370337E+026
+  1.891159830915105E+026
+  1.890812352917069E+026
+  1.890068194447196E+026
+  1.888826803066721E+026
+  1.887006332364836E+026
+  1.884558609791561E+026
+  1.881483475624968E+026
+  1.877839990077033E+026
+  1.873751595882717E+026
+  1.869402291360630E+026
+  1.865021226095452E+026
+  1.860853938921823E+026
+  1.857119785187211E+026
+  1.853956905567062E+026
+  1.851358172474149E+026
+  1.849103597536393E+026
+  1.846696352421243E+026
+  1.843310576854951E+026
+  1.837759419529543E+026
+  1.828491389815571E+026
+  1.813622361327579E+026
+  1.791009706922924E+026
+  1.758373988005432E+026
+  1.713471725693946E+026
+  1.654318813849316E+026
+  1.579456650360511E+026
+  1.488241153992463E+026
+  1.381119051758571E+026
+  1.259839179841213E+026
+  1.127535354836484E+026
+  9.886207169174464E+025
+  8.484594380858948E+025
+  7.128315645953714E+025
+  5.872709189772528E+025
+  4.762125471661342E+025
+  3.818286864724291E+025
+  3.039356848991693E+025
+  2.409706982641144E+025
+  1.908098390625703E+025
+  1.512488917616146E+025
+  1.202527519163347E+025
+  9.606104514986055E+024
+  7.721190912898706E+024
+  6.252387857035005E+024
+  5.105975191143948E+024
+  4.208569010958648E+024
+  3.503224357306699E+024
+  2.946020626354484E+024
+  2.503213091617420E+024
+  2.148930223131374E+024
+  1.863351218097112E+024
+  1.631284569687382E+024
+  1.441070804047057E+024
+  1.283741679372550E+024
+  1.152379322486976E+024
+  1.041629638558252E+024
+  9.473339120271319E+023
+  8.662505524760651E+023
+  7.958454677296585E+023
+  7.341347377319289E+023
+  6.795673449074308E+023
+  6.309389531592841E+023
+  5.873304124024729E+023
+  5.480671321120118E+023
+  5.126981185095086E+023
+  4.809968354797409E+023
+  4.529908784619390E+023
+  4.290348400974296E+023
+  4.099522894285230E+023
+  3.972907062749775E+023
+  3.937604047636859E+023
+  4.039683110057376E+023
+  4.356130277560872E+023
+  5.013799558162606E+023
+  6.218596298235528E+023
+  8.298917395555817E+023
+  1.176771370003424E+024
+  1.740664819320815E+024
+  2.637237698758778E+024
+  4.031701226613190E+024
+  6.149986444057047E+024
+  9.284329400889288E+024
+  1.378513437401253E+025
+  2.002697297821150E+025
+  2.833326535172581E+025
+  3.885879688981503E+025
+  5.150401665039282E+025
+  6.591393883408552E+025
+  8.151529055702969E+025
+  9.759154050243032E+025
+  1.133852870018435E+026
+  1.282017949952726E+026
+  1.414904160675424E+026
+  1.528905777069677E+026
+  1.622407684976850E+026
+  1.695579102049506E+026
+  1.749986542244801E+026
+  1.788139114618527E+026
+  1.813050890941106E+026
+  1.827869527133349E+026
+  1.835590474032645E+026
+  1.838857099311109E+026
+  1.839838095766346E+026
+  1.840171089501534E+026
+  1.840961577516918E+026
+  1.842826619412030E+026
+  1.845972084579507E+026
+  1.850291034710913E+026
+  1.855470014122111E+026
+  1.861090618378160E+026
+  1.866716106881178E+026
+  1.871956583379070E+026
+  1.876510390480845E+026
+  1.880182920648629E+026
+  1.882886690916393E+026
+  1.884628298594251E+026
+  1.885488437422849E+026
+  1.885599884198312E+026
+  1.885126026081578E+026
+  1.884241541352007E+026
+  1.883117271815637E+026
+  1.881909970479095E+026
+  1.880756090302254E+026
+  2.024674624574109E+022
+  2.024929354257886E+022
+  2.025196143409256E+022
+  2.025445295661687E+022
+  2.025635053630324E+022
+  2.025709761878123E+022
+  2.025600024001513E+022
+  2.025225302700143E+022
+  2.024499038589457E+022
+  2.023336763164385E+022
+  2.021666934512393E+022
+  2.019443440697836E+022
+  2.016658389924959E+022
+  2.013353344198545E+022
+  2.009626581981296E+022
+  2.005633660155353E+022
+  2.001578620321239E+022
+  1.997693642642971E+022
+  1.994205833539597E+022
+  1.991291194378366E+022
+  1.989017600347274E+022
+  1.987280612808853E+022
+  1.985737843154691E+022
+  1.983749060827847E+022
+  1.980330062686554E+022
+  1.974128438718106E+022
+  1.963428928347990E+022
+  1.946195345371146E+022
+  1.920155275495850E+022
+  1.882932777007201E+022
+  1.832232396154436E+022
+  1.766073611704260E+022
+  1.683066860989560E+022
+  1.582709727383655E+022
+  1.465665435081248E+022
+  1.333968834303375E+022
+  1.191094274213620E+022
+  1.041824546916520E+022
+  8.918885487163386E+021
+  7.473881238111422E+021
+  6.141011049043354E+021
+  4.965960361067648E+021
+  3.970350418022517E+021
+  3.151060934793343E+021
+  2.490653872506155E+021
+  1.966018063175753E+021
+  1.553411646031874E+021
+  1.231049724730224E+021
+  9.801744212634906E+020
+  7.852676692710022E+020
+  6.338300283364367E+020
+  5.159771275619069E+020
+  4.239923155841877E+020
+  3.519047344362069E+020
+  2.951220853022447E+020
+  2.501257946709441E+020
+  2.142255953838092E+020
+  1.853659830246626E+020
+  1.619757544337003E+020
+  1.428522147045504E+020
+  1.270727055220368E+020
+  1.139273583544458E+020
+  1.028681712305142E+020
+  9.347055230523877E+019
+  8.540434314381456E+019
+  7.841203727343469E+019
+  7.229246565974255E+019
+  6.688865633627147E+019
+  6.207891937795815E+019
+  5.777049225233700E+019
+  5.389533941955975E+019
+  5.040797584080431E+019
+  4.728553169381430E+019
+  4.453077261641467E+019
+  4.217954976884870E+019
+  4.031534236921196E+019
+  3.909540420287555E+019
+  3.879583971525069E+019
+  3.988707395182888E+019
+  4.315698498627200E+019
+  4.990657907484089E+019
+  6.225207168826373E+019
+  8.357588807435819E+019
+  1.191733266130128E+020
+  1.771333923310548E+020
+  2.694578099960463E+020
+  4.133407080678478E+020
+  6.323764200413020E+020
+  9.572087326358020E+020
+  1.424773297736138E+021
+  2.074854290537983E+021
+  2.942309077603892E+021
+  4.044803784991215E+021
+  5.373692245309940E+021
+  6.893588827890693E+021
+  8.545906096729847E+021
+  1.025639547742367E+022
+  1.194566902636204E+022
+  1.354000756093021E+022
+  1.498001474171580E+022
+  1.622567454492841E+022
+  1.725757975734685E+022
+  1.807504425714063E+022
+  1.869226805511984E+022
+  1.913372495623796E+022
+  1.942966422297073E+022
+  1.961225420666564E+022
+  1.971258407286580E+022
+  1.975853697968799E+022
+  1.977344999623387E+022
+  1.977544754791823E+022
+  1.977733720743069E+022
+  1.978696155883564E+022
+  1.980789601435507E+022
+  1.984037185547046E+022
+  1.988229596139446E+022
+  1.993024362138980E+022
+  1.998032283959430E+022
+  2.002884384109894E+022
+  2.007276661565775E+022
+  2.010993348886975E+022
+  2.013911983580373E+022
+  2.015995455530022E+022
+  2.017276882903135E+022
+  2.017841979639815E+022
+  2.017811267786907E+022
+  2.017323625965017E+022
+  2.016523225028258E+022
+  2.015550509116668E+022
+  2.014536291432813E+022
+  1.650746564744941E+026
+  1.650873098726380E+026
+  1.651057495273353E+026
+  1.651291201756990E+026
+  1.651552144260411E+026
+  1.651800991817209E+026
+  1.651979174797070E+026
+  1.652009268740861E+026
+  1.651798058349847E+026
+  1.651242910587562E+026
+  1.650241438057890E+026
+  1.648703719331430E+026
+  1.646565979261483E+026
+  1.643804141280251E+026
+  1.640445064061426E+026
+  1.636572871527123E+026
+  1.632327706287451E+026
+  1.627894499199992E+026
+  1.623480009217945E+026
+  1.619277516101205E+026
+  1.615420117955976E+026
+  1.611925430324113E+026
+  1.608636330571583E+026
+  1.605163934879074E+026
+  1.600839986356672E+026
+  1.594686163700931E+026
+  1.585407568283801E+026
+  1.571417036693168E+026
+  1.550896166021518E+026
+  1.521897980530733E+026
+  1.482494476119466E+026
+  1.430968810722825E+026
+  1.366045426229785E+026
+  1.287141086105945E+026
+  1.194606128203073E+026
+  1.089910729952213E+026
+  9.757211077765681E+025
+  8.558131875302630E+025
+  7.347934770095450E+025
+  6.176398562671242E+025
+  5.091306123734274E+025
+  4.131059441694532E+025
+  3.314561382725624E+025
+  2.640354311243294E+025
+  2.095040755341791E+025
+  1.660349469542692E+025
+  1.317290769750854E+025
+  1.048315754673100E+025
+  8.382334619460643E+024
+  6.744206509185797E+024
+  5.466689170151354E+024
+  4.468753492632223E+024
+  3.686912625696267E+024
+  3.071869690534052E+024
+  2.585577636162203E+024
+  2.198784503481687E+024
+  1.889047588293163E+024
+  1.639160668127542E+024
+  1.435926512794209E+024
+  1.269208716008467E+024
+  1.131204669155519E+024
+  1.015891058797923E+024
+  9.186025785966585E+023
+  8.357127716288299E+023
+  7.643928240926951E+023
+  7.024297468527416E+023
+  6.480898506661972E+023
+  6.000169386527249E+023
+  5.571574312592307E+023
+  5.187069578130968E+023
+  4.840750831835238E+023
+  4.528671374346440E+023
+  4.248850410316110E+023
+  4.001532197358792E+023
+  3.789821350655340E+023
+  3.620920014434668E+023
+  3.508348474854322E+023
+  3.475767110359275E+023
+  3.563363364167133E+023
+  3.838249155586513E+023
+  4.410940056825194E+023
+  5.460715571419827E+023
+  7.273339807335445E+023
+  1.029490343898069E+024
+  1.520475346756151E+024
+  2.300746105928424E+024
+  3.513684065488271E+024
+  5.355204743437830E+024
+  8.078477033988709E+024
+  1.198670369193937E+025
+  1.740346350784655E+025
+  2.460728487314259E+025
+  3.372985155288681E+025
+  4.468212932400196E+025
+  5.715411534744987E+025
+  7.064774565481596E+025
+  8.454247113366700E+025
+  9.818422678469447E+025
+  1.109750068746166E+026
+  1.224429341615611E+026
+  1.322814240586715E+026
+  1.403562445120543E+026
+  1.466870100476960E+026
+  1.514131824862997E+026
+  1.547543954580636E+026
+  1.569724257915039E+026
+  1.583390410371432E+026
+  1.591113684776766E+026
+  1.595147917944698E+026
+  1.597326128073967E+026
+  1.599015033387799E+026
+  1.601117864396957E+026
+  1.604116045396808E+026
+  1.608139720875095E+026
+  1.613056032409717E+026
+  1.618563404901462E+026
+  1.624280726999731E+026
+  1.629822520210186E+026
+  1.634854576175568E+026
+  1.639128215904633E+026
+  1.642494475588718E+026
+  1.644901843113611E+026
+  1.646382673791792E+026
+  1.647033817693510E+026
+  1.646995803212807E+026
+  1.646432854296554E+026
+  1.645515175726459E+026
+  1.644405277230719E+026
+  1.643248902575438E+026
+  1.642169797770769E+026
+  1.256439858799865E+023
+  1.256212833185356E+023
+  1.256264281672977E+023
+  1.256658166882345E+023
+  1.257429442061749E+023
+  1.258571339773399E+023
+  1.260025075734623E+023
+  1.261673654763495E+023
+  1.263341236113255E+023
+  1.264799582879107E+023
+  1.265782327375856E+023
+  1.266006820346487E+023
+  1.265202510449266E+023
+  1.263143787380237E+023
+  1.259684081251443E+023
+  1.254787034810031E+023
+  1.248549932366518E+023
+  1.241214400624577E+023
+  1.233159859481168E+023
+  1.224876458108852E+023
+  1.216916321135598E+023
+  1.209824689178168E+023
+  1.204055605324101E+023
+  1.199879679338539E+023
+  1.197293648066423E+023
+  1.195942580507922E+023
+  1.195065563011823E+023
+  1.193474770568641E+023
+  1.189576399956460E+023
+  1.181440331584635E+023
+  1.166923485682474E+023
+  1.143848879963680E+023
+  1.110237066466702E+023
+  1.064577568860009E+023
+  1.006114624289675E+023
+  9.351053957953809E+022
+  8.529944774392945E+022
+  7.624439472571525E+022
+  6.671722394845000E+022
+  5.715922063307142E+022
+  4.802943703982539E+022
+  3.973128609980023E+022
+  3.250580067729281E+022
+  2.640711012083824E+022
+  2.137034139669166E+022
+  1.727349799979732E+022
+  1.397594487974944E+022
+  1.134003954335966E+022
+  9.241767458787453E+021
+  7.574757637330969E+021
+  6.250626682013005E+021
+  5.197498087477204E+021
+  4.357781743944500E+021
+  3.685808657734512E+021
+  3.145618763451248E+021
+  2.709028416612011E+021
+  2.354010474122641E+021
+  2.063372407695513E+021
+  1.823697129467743E+021
+  1.624505109928127E+021
+  1.457597653942268E+021
+  1.316545689042168E+021
+  1.196293901368768E+021
+  1.092855469814716E+021
+  1.003077540851136E+021
+  9.244617886990000E+020
+  8.550278960971983E+020
+  7.932106362619982E+020
+  7.377835723548083E+020
+  6.878044136191487E+020
+  6.425790352580740E+020
+  6.016434196260908E+020
+  5.647657709067677E+020
+  5.319754546668224E+020
+  5.036321785860511E+020
+  4.805593292414655E+020
+  4.642814524903856E+020
+  4.574297661265109E+020
+  4.644136609296477E+020
+  4.925019368562947E+020
+  5.535139748828285E+020
+  6.663810409012738E+020
+  8.608825049499013E+020
+  1.182851666392651E+021
+  1.701011044713914E+021
+  2.515227396346762E+021
+  3.765222443779744E+021
+  5.637471002401526E+021
+  8.366053132858274E+021
+  1.222068245612277E+022
+  1.747250160370350E+022
+  2.432672597887936E+022
+  3.282534661931361E+022
+  4.278605038655287E+022
+  5.381902909612876E+022
+  6.537707817564948E+022
+  7.683435601729843E+022
+  8.758074123935761E+022
+  9.710771344583802E+022
+  1.050671284449057E+023
+  1.112948337013305E+023
+  1.158016773723296E+023
+  1.187413678561017E+023
+  1.203667554652787E+023
+  1.209845167367933E+023
+  1.209148770638071E+023
+  1.204596242806233E+023
+  1.198792048892692E+023
+  1.193783620887003E+023
+  1.190993008988655E+023
+  1.191213242402484E+023
+  1.194659178394844E+023
+  1.201061843944881E+023
+  1.209793245655779E+023
+  1.220006376086524E+023
+  1.230774097783792E+023
+  1.241211788408408E+023
+  1.250572259904485E+023
+  1.258306746833723E+023
+  1.264091345802626E+023
+  1.267822934828202E+023
+  1.269591701402891E+023
+  1.269638914060177E+023
+  1.268308437917125E+023
+  1.265998637471826E+023
+  1.263118639714440E+023
+  1.260051412591726E+023
+  1.257125844877567E+023
+  1.254598756445624E+023
+  1.252646439806950E+023
+  1.344256291355432E+026
+  1.344448086707905E+026
+  1.344632542298805E+026
+  1.344785209621162E+026
+  1.344874879603726E+026
+  1.344863036607863E+026
+  1.344704564247888E+026
+  1.344349920954357E+026
+  1.343748751496801E+026
+  1.342855176860036E+026
+  1.341634531151007E+026
+  1.340070821454202E+026
+  1.338174006384626E+026
+  1.335985926203865E+026
+  1.333583385392855E+026
+  1.331076724988775E+026
+  1.328602310729480E+026
+  1.326307692959690E+026
+  1.324328784343935E+026
+  1.322759278864736E+026
+  1.321613658582648E+026
+  1.320786366751662E+026
+  1.320010870767752E+026
+  1.318823201019909E+026
+  1.316535000851514E+026
+  1.312221140274707E+026
+  1.304726640360899E+026
+  1.292697210867275E+026
+  1.274637248023244E+026
+  1.248998554002042E+026
+  1.214301809095921E+026
+  1.169290064674102E+026
+  1.113108266421403E+026
+  1.045494550068014E+026
+  9.669583300453949E+025
+  8.789092744513821E+025
+  7.836945516463326E+025
+  6.845053504417897E+025
+  5.851327705383376E+025
+  4.895879668386026E+025
+  4.016447405090360E+025
+  3.242630729087050E+025
+  2.588139554025900E+025
+  2.050464656983538E+025
+  1.617775518013798E+025
+  1.274607703237962E+025
+  1.005166050029011E+025
+  7.950085587680531E+024
+  6.317326445095509E+024
+  5.051002836733919E+024
+  4.068810171197573E+024
+  3.305780669651779E+024
+  2.711281806913950E+024
+  2.246201464096678E+024
+  1.880507078857324E+024
+  1.591225255530836E+024
+  1.360818965256910E+024
+  1.175910391146515E+024
+  1.026289927518035E+024
+  9.041548636073685E+023
+  8.035286756139656E+023
+  7.198203436746896E+023
+  6.494911558038233E+023
+  5.898034546509212E+023
+  5.386315841452502E+023
+  4.943199649838360E+023
+  4.555769158124661E+023
+  4.213957187668306E+023
+  3.909966983696730E+023
+  3.637859506016326E+023
+  3.393280550494119E+023
+  3.173319013160384E+023
+  2.976510185394430E+023
+  2.803030177664508E+023
+  2.655176794895652E+023
+  2.538309206100526E+023
+  2.462538730494198E+023
+  2.445646014170594E+023
+  2.517969574559173E+023
+  2.730390113901063E+023
+  3.167034675978211E+023
+  3.964918311188935E+023
+  5.343320293378002E+023
+  7.645993968534157E+023
+  1.139881203654325E+024
+  1.738325134864575E+024
+  2.672085816579306E+024
+  4.095374803497813E+024
+  6.208956095901740E+024
+  9.255547496675064E+024
+  1.349772820573056E+025
+  1.916747018256339E+025
+  2.638600463486316E+025
+  3.510356419779711E+025
+  4.509540717110348E+025
+  5.598363783422274E+025
+  6.728536088612030E+025
+  7.848078379928973E+025
+  8.908381888388353E+025
+  9.869919845283490E+025
+  1.070564805283488E+026
+  1.140191703063653E+026
+  1.195733920901982E+026
+  1.238036146416825E+026
+  1.268630317894674E+026
+  1.289444470417221E+026
+  1.302551659951278E+026
+  1.309973623468362E+026
+  1.313540424126742E+026
+  1.314800743947203E+026
+  1.314975514878830E+026
+  1.314947700584073E+026
+  1.315281430393413E+026
+  1.316263537980723E+026
+  1.317959949173792E+026
+  1.320278880885774E+026
+  1.323033089897047E+026
+  1.325994739021121E+026
+  1.328938610064015E+026
+  1.331671805879026E+026
+  1.334050204017866E+026
+  1.335983570718457E+026
+  1.337432444691920E+026
+  1.338400383059923E+026
+  1.338924437059696E+026
+  1.339065273245939E+026
+  1.338897843822913E+026
+  1.338503904862947E+026
+  1.337966777250995E+026
+  1.337367724661690E+026
+  2.873305258508937E+026
+  2.873564053292780E+026
+  2.873949886784789E+026
+  2.874449000385950E+026
+  2.875020830541870E+026
+  2.875591849606812E+026
+  2.876053422022571E+026
+  2.876264949496149E+026
+  2.876062949819151E+026
+  2.875277099141921E+026
+  2.873752951311201E+026
+  2.871379591699342E+026
+  2.868119627396607E+026
+  2.864037857875250E+026
+  2.859323782514235E+026
+  2.854302352988805E+026
+  2.849427329745368E+026
+  2.845252314775378E+026
+  2.842376123246887E+026
+  2.841361724868821E+026
+  2.842631425367872E+026
+  2.846344876934292E+026
+  2.852270298530734E+026
+  2.859662295291205E+026
+  2.867161378091182E+026
+  2.872730514344895E+026
+  2.873643024979115E+026
+  2.866534445884712E+026
+  2.847529153036926E+026
+  2.812450632071606E+026
+  2.757121254261648E+026
+  2.677751183587877E+026
+  2.571403945707233E+026
+  2.436506354008921E+026
+  2.273343451292747E+026
+  2.084449710134790E+026
+  1.874786633603527E+026
+  1.651599913946279E+026
+  1.423891155767133E+026
+  1.201523252798817E+026
+  9.940895282070576E+025
+  8.094380627894779E+025
+  6.516421405841922E+025
+  5.207700264354856E+025
+  4.144943629577748E+025
+  3.294653242105006E+025
+  2.621296292086535E+025
+  2.091647861079154E+025
+  1.676710323573526E+025
+  1.352233245145700E+025
+  1.098501103985266E+025
+  8.997927528800240E+024
+  7.437401888588307E+024
+  6.207042198756804E+024
+  5.232201205845810E+024
+  4.455307392179028E+024
+  3.832062040865651E+024
+  3.328410315889100E+024
+  2.918165847321225E+024
+  2.581168023634714E+024
+  2.301863665252674E+024
+  2.068221534459267E+024
+  1.870905037011480E+024
+  1.702643688204628E+024
+  1.557756856539650E+024
+  1.431793924215653E+024
+  1.321263525741783E+024
+  1.223431275949331E+024
+  1.136170787257286E+024
+  1.057857281350005E+024
+  9.872972796339707E+023
+  9.236923939051155E+023
+  8.666410410652159E+023
+  8.161902608608679E+023
+  7.729626058531300E+023
+  7.384030223506451E+023
+  7.152215270455986E+023
+  7.081541748885680E+023
+  7.252328658234252E+023
+  7.798488448714542E+023
+  8.940163477179788E+023
+  1.103382478655132E+024
+  1.464656079853469E+024
+  2.066171267863299E+024
+  3.042125359847633E+024
+  4.590410271957874E+024
+  6.992560659337509E+024
+  1.063176485879983E+025
+  1.600076467041466E+025
+  2.368576202131254E+025
+  3.430590509627793E+025
+  4.838281894388563E+025
+  6.614033089786112E+025
+  8.736198649420804E+025
+  1.113955094771598E+026
+  1.372234767395737E+026
+  1.635980463808573E+026
+  1.892201004547653E+026
+  2.129171028240779E+026
+  2.337800339156247E+026
+  2.512376002814108E+026
+  2.650663290707928E+026
+  2.753503363733470E+026
+  2.824112047080712E+026
+  2.867275188517577E+026
+  2.888583925183597E+026
+  2.893790689172737E+026
+  2.888315777231504E+026
+  2.876902880086273E+026
+  2.863408051585619E+026
+  2.850703510754261E+026
+  2.840678600459756E+026
+  2.834320678784506E+026
+  2.831857127133324E+026
+  2.832936818974422E+026
+  2.836827299464404E+026
+  2.842604475135426E+026
+  2.849315581912255E+026
+  2.856102866546015E+026
+  2.862283012360081E+026
+  2.867384119330978E+026
+  2.871147174121509E+026
+  2.873502271259624E+026
+  2.874530839657119E+026
+  2.874422996294974E+026
+  2.873435266005982E+026
+  2.871852120138772E+026
+  2.869955134540651E+026
+  2.868001288036508E+026
+  2.866209443276039E+026
+  2.758358292011350E+026
+  2.758492005473236E+026
+  2.758794215779452E+026
+  2.759270728766283E+026
+  2.759898972901388E+026
+  2.760618976962510E+026
+  2.761327653776204E+026
+  2.761877786301901E+026
+  2.762082611369954E+026
+  2.761727340494601E+026
+  2.760587764787908E+026
+  2.758454776187226E+026
+  2.755162862705050E+026
+  2.750619607554584E+026
+  2.744832011377002E+026
+  2.737924595549736E+026
+  2.730143960913594E+026
+  2.721844827653862E+026
+  2.713453705808802E+026
+  2.705408389720161E+026
+  2.698074401282240E+026
+  2.691643029271333E+026
+  2.686019215351815E+026
+  2.680710627834342E+026
+  2.674731329947232E+026
+  2.666534227872089E+026
+  2.653986068559141E+026
+  2.634397550388516E+026
+  2.604619553594656E+026
+  2.561214623636762E+026
+  2.500709833738756E+026
+  2.419931249553540E+026
+  2.316409206290199E+026
+  2.188825906416579E+026
+  2.037452935413382E+026
+  1.864500335217405E+026
+  1.674280166172326E+026
+  1.473089887769177E+026
+  1.268757397891831E+026
+  1.069863307974175E+026
+  8.847537392893326E+025
+  7.202439422968019E+025
+  5.798240853793430E+025
+  4.634586367381487E+025
+  3.690145036324680E+025
+  2.934749481948503E+025
+  2.336602211109930E+025
+  1.866072754579974E+025
+  1.497356965722868E+025
+  1.208907237796897E+025
+  9.832236503410132E+024
+  8.063616995044745E+024
+  6.673560562120192E+024
+  5.576627671813729E+024
+  4.706656453272984E+024
+  4.012614388973338E+024
+  3.455224542107701E+024
+  3.004281304094589E+024
+  2.636546827963015E+024
+  2.334119988080050E+024
+  2.083181322777025E+024
+  1.873032610195999E+024
+  1.695364876788779E+024
+  1.543702207121838E+024
+  1.412980225710497E+024
+  1.299227546603805E+024
+  1.199326033453447E+024
+  1.110831682935309E+024
+  1.031842706032490E+024
+  9.609053621990728E+023
+  8.969517980272437E+023
+  8.392681644287241E+023
+  7.874964427860482E+023
+  7.416808471007141E+023
+  7.023810610949863E+023
+  6.708923398028973E+023
+  6.496400114493671E+023
+  6.428574779129899E+023
+  6.577173509742693E+023
+  7.061691904953381E+023
+  8.078452974266250E+023
+  9.945198773919410E+023
+  1.316719057368982E+024
+  1.853116896108737E+024
+  2.723195983307349E+024
+  4.103100661201584E+024
+  6.243374124105407E+024
+  9.484988565589652E+024
+  1.426643018622577E+025
+  2.110954589774736E+025
+  3.056605242310082E+025
+  4.310204839771190E+025
+  5.892065346883736E+025
+  7.783620487781525E+025
+  9.927901299103330E+025
+  1.223584089314336E+026
+  1.459819670038445E+026
+  1.690134552346614E+026
+  1.904291004614239E+026
+  2.094372896233040E+026
+  2.255426941941451E+026
+  2.385538432045913E+026
+  2.485465093956947E+026
+  2.558010526942551E+026
+  2.607310135180050E+026
+  2.638156091701099E+026
+  2.655432630602635E+026
+  2.663687950893579E+026
+  2.666841177368075E+026
+  2.668010256013838E+026
+  2.669443494178824E+026
+  2.672537802645715E+026
+  2.677926749648155E+026
+  2.685620045843628E+026
+  2.695173808318772E+026
+  2.705869636024063E+026
+  2.716881739605330E+026
+  2.727415633225511E+026
+  2.736808395121676E+026
+  2.744587527744201E+026
+  2.750491419992827E+026
+  2.754458710226378E+026
+  2.756596519491247E+026
+  2.757138152141933E+026
+  2.756398634063107E+026
+  2.754732619495530E+026
+  2.752497474472435E+026
+  2.750024791888437E+026
+  2.747601499583702E+026
+  2.745459381030429E+026
+  9.588114579714164E+025
+  9.588479533089687E+025
+  9.589430375303951E+025
+  9.590996836843075E+025
+  9.593111924145082E+025
+  9.595578511983038E+025
+  9.598046122319569E+025
+  9.600002634030519E+025
+  9.600784082242421E+025
+  9.599607454002497E+025
+  9.595627485246781E+025
+  9.588014157777806E+025
+  9.576045157105360E+025
+  9.559204186126017E+025
+  9.537271936087112E+025
+  9.510393493831630E+025
+  9.479104757450407E+025
+  9.444301207317315E+025
+  9.407135611261279E+025
+  9.368837490151659E+025
+  9.330456422149677E+025
+  9.292542640017600E+025
+  9.254790278074597E+025
+  9.215679140904568E+025
+  9.172158287706538E+025
+  9.119418093833477E+025
+  9.050796913408062E+025
+  8.957865160864631E+025
+  8.830724843199156E+025
+  8.658556308703315E+025
+  8.430433549133998E+025
+  8.136409133638019E+025
+  7.768832744932634E+025
+  7.323808460910274E+025
+  6.802617251926418E+025
+  6.212846489280396E+025
+  5.568908116362455E+025
+  4.891636786889798E+025
+  4.206780840040371E+025
+  3.542441891977054E+025
+  2.925838892748760E+025
+  2.379064432131902E+025
+  1.913209926624913E+025
+  1.527762615076530E+025
+  1.215357450577960E+025
+  9.657916027974032E+024
+  7.683945185272349E+024
+  6.132670728266985E+024
+  4.918148909050369E+024
+  3.968780962657925E+024
+  3.226528460861790E+024
+  2.645218732637262E+024
+  2.188594041532036E+024
+  1.828437517072161E+024
+  1.542922404148860E+024
+  1.315229277450308E+024
+  1.132424240702042E+024
+  9.845681964643129E+023
+  8.640199893335672E+023
+  7.648968696698270E+023
+  6.826598550393380E+023
+  6.137967837265311E+023
+  5.555809899163667E+023
+  5.058880971051119E+023
+  4.630572790274691E+023
+  4.257864832197436E+023
+  3.930536243576997E+023
+  3.640577370770498E+023
+  3.381756559056533E+023
+  3.149311061953719E+023
+  2.939743096525698E+023
+  2.750715327746267E+023
+  2.581057027507913E+023
+  2.430916607897931E+023
+  2.302133694189267E+023
+  2.198962372101217E+023
+  2.129367802448735E+023
+  2.107255344785396E+023
+  2.156191023031569E+023
+  2.315449090891418E+023
+  2.649579971097014E+023
+  3.263103485765197E+023
+  4.322308445199441E+023
+  6.086274939768561E+023
+  8.948737230247029E+023
+  1.349061492382923E+024
+  2.053899207522563E+024
+  3.122082364188200E+024
+  4.698761722792624E+024
+  6.957059124560150E+024
+  1.008064456692730E+025
+  1.422584037253149E+025
+  1.946317108061644E+025
+  2.573567041302912E+025
+  3.286005419575698E+025
+  4.054698883727011E+025
+  4.843985223289393E+025
+  5.616636046753235E+025
+  6.338982534448271E+025
+  6.984857141896980E+025
+  7.537721135747309E+025
+  7.990938876374266E+025
+  8.346598999689300E+025
+  8.613475133034925E+025
+  8.804693715638060E+025
+  8.935526290074192E+025
+  9.021543171627283E+025
+  9.077217331535171E+025
+  9.114974841876356E+025
+  9.144645530861729E+025
+  9.173255747946965E+025
+  9.205105340726619E+025
+  9.242070786413026E+025
+  9.284071829111977E+025
+  9.329632343505113E+025
+  9.376462952849051E+025
+  9.421998066714342E+025
+  9.463834945451797E+025
+  9.500044243955890E+025
+  9.529344524233112E+025
+  9.551152361610510E+025
+  9.565533134699568E+025
+  9.573085838048544E+025
+  9.574796939986511E+025
+  9.571890541798477E+025
+  9.565689013894688E+025
+  9.557492623341792E+025
+  9.548488480679232E+025
+  9.539692089550654E+025
+  9.531916885495369E+025
+  2.650473949636869E+026
+  2.650683663587053E+026
+  2.651008086075651E+026
+  2.651436689835826E+026
+  2.651934901634688E+026
+  2.652437917155194E+026
+  2.652847865841027E+026
+  2.653035459291383E+026
+  2.652846721162023E+026
+  2.652115813854197E+026
+  2.650683830919457E+026
+  2.648422150383351E+026
+  2.645258225193080E+026
+  2.641200772043226E+026
+  2.636360258404079E+026
+  2.630959890688957E+026
+  2.625332203660655E+026
+  2.619896890950101E+026
+  2.615116803092231E+026
+  2.611431176436335E+026
+  2.609168072528248E+026
+  2.608441382670229E+026
+  2.609041075400103E+026
+  2.610328070653307E+026
+  2.611146761259836E+026
+  2.609768588043991E+026
+  2.603879380679421E+026
+  2.590621853980990E+026
+  2.566703143887349E+026
+  2.528575567945316E+026
+  2.472696017814829E+026
+  2.395863708163246E+026
+  2.295625167625263E+026
+  2.170717793399457E+026
+  2.021499555275678E+026
+  1.850286812381174E+026
+  1.661504084566004E+026
+  1.461552787772133E+026
+  1.258343126708248E+026
+  1.060507281853064E+026
+  8.764091272680738E+025
+  7.128542712642375E+025
+  5.733164197924470E+025
+  4.577511520376355E+025
+  3.640233105257926E+025
+  2.891182295351407E+025
+  2.298607100758714E+025
+  1.832936752530275E+025
+  1.468433937842421E+025
+  1.183620141614168E+025
+  9.610634039777127E+024
+  7.868837590754903E+024
+  6.501755511666072E+024
+  5.424488533758346E+024
+  4.571355718896534E+024
+  3.891746824245415E+024
+  3.346751557008281E+024
+  2.906479774879068E+024
+  2.547963098020991E+024
+  2.253529264921197E+024
+  2.009552337869238E+024
+  1.805497184258843E+024
+  1.633191906650646E+024
+  1.486275533587365E+024
+  1.359779830691457E+024
+  1.249813543410499E+024
+  1.153324944281226E+024
+  1.067924534599960E+024
+  9.917545130600351E+023
+  9.233955981165440E+023
+  8.618054693982642E+023
+  8.062870789831111E+023
+  7.564901737053512E+023
+  7.124566960274724E+023
+  6.747319475074357E+023
+  6.445809010571612E+023
+  6.243761618825857E+023
+  6.182650983617737E+023
+  6.332835166890654E+023
+  6.811663179400216E+023
+  7.812129091599027E+023
+  9.646888480856736E+023
+  1.281358395888322E+024
+  1.808783572144855E+024
+  2.664875635262396E+024
+  4.023646258545268E+024
+  6.132886594578706E+024
+  9.330242667329917E+024
+  1.405053037299150E+025
+  2.081209069469059E+025
+  3.016416724765564E+025
+  4.257267396087555E+025
+  5.824413966474989E+025
+  7.699976311798580E+025
+  9.827815489053304E+025
+  1.211959892430753E+026
+  1.446649492392533E+026
+  1.675480533695345E+026
+  1.888154218883150E+026
+  2.076646853824006E+026
+  2.235867470659346E+026
+  2.363754601702651E+026
+  2.460931231439684E+026
+  2.530096029554129E+026
+  2.575322077996468E+026
+  2.601389221430723E+026
+  2.613221670130572E+026
+  2.615457713048828E+026
+  2.612150557178265E+026
+  2.606586731837198E+026
+  2.601205444749845E+026
+  2.597602865434183E+026
+  2.596605641132461E+026
+  2.598396648057719E+026
+  2.602673707710914E+026
+  2.608820442130293E+026
+  2.616069195697136E+026
+  2.623639632425451E+026
+  2.630842548684653E+026
+  2.637145060754494E+026
+  2.642199138130382E+026
+  2.645839791260637E+026
+  2.648062013831816E+026
+  2.648986353380770E+026
+  2.648821004850047E+026
+  2.647824823715377E+026
+  2.646274110761938E+026
+  2.644436410395892E+026
+  2.642552519782640E+026
+  2.640825677351264E+026
+  2.450698764383105E+026
+  2.450973327364078E+026
+  2.451308703916374E+026
+  2.451679964196286E+026
+  2.452043341145938E+026
+  2.452332721895762E+026
+  2.452459176326383E+026
+  2.452314344841153E+026
+  2.451777994333957E+026
+  2.450730440347610E+026
+  2.449069501591488E+026
+  2.446730532506830E+026
+  2.443707494788060E+026
+  2.440072282797850E+026
+  2.435988658691628E+026
+  2.431716647943326E+026
+  2.427603292762528E+026
+  2.424056285758021E+026
+  2.421498282639846E+026
+  2.420301690306992E+026
+  2.420706355760998E+026
+  2.422725534352442E+026
+  2.426048330647388E+026
+  2.429948994273115E+026
+  2.433214653116043E+026
+  2.434103169855919E+026
+  2.430342022636069E+026
+  2.419177873479594E+026
+  2.397485190554772E+026
+  2.361940865073343E+026
+  2.309269316756458E+026
+  2.236557360934534E+026
+  2.141628028691912E+026
+  2.023446215348223E+026
+  1.882507147242569E+026
+  1.721135337381029E+026
+  1.543605734972831E+026
+  1.356002853248668E+026
+  1.165769239591207E+026
+  9.809637176912234E+025
+  8.093392460593671E+025
+  6.571537577805533E+025
+  5.275471486211018E+025
+  4.203938717035965E+025
+  3.336399725287085E+025
+  2.644308591622690E+025
+  2.097781856530891E+025
+  1.669090504609924E+025
+  1.334165649143163E+025
+  1.072966768453404E+025
+  8.692622844065956E+024
+  7.101529354203464E+024
+  5.855225041181048E+024
+  4.875100442974401E+024
+  4.100450942840285E+024
+  3.484585336033323E+024
+  2.991671201323002E+024
+  2.594232464769167E+024
+  2.271193893821668E+024
+  2.006369074776052E+024
+  1.787300129147944E+024
+  1.604372219842006E+024
+  1.450140466972248E+024
+  1.318819847690132E+024
+  1.205899574655264E+024
+  1.107852354639664E+024
+  1.021916033193713E+024
+  9.459307325946728E+023
+  8.782190418380746E+023
+  8.175005189819368E+023
+  7.628351750443980E+023
+  7.135942800548304E+023
+  6.694614982146300E+023
+  6.304740576289475E+023
+  5.971239084375808E+023
+  5.705548240070490E+023
+  5.529162222438907E+023
+  5.479721152545230E+023
+  5.621186498513868E+023
+  6.060403796029366E+023
+  6.973349829808884E+023
+  8.645518215629336E+023
+  1.153197425362617E+024
+  1.634304587115875E+024
+  2.416032812207737E+024
+  3.658283244473443E+024
+  5.589199702334776E+024
+  8.520350406846827E+024
+  1.285403039847442E+025
+  1.907142538883089E+025
+  2.768490334958096E+025
+  3.913326161477620E+025
+  5.361914793906628E+025
+  7.099119617070631E+025
+  9.074373917043466E+025
+  1.120698260670537E+026
+  1.339667411176298E+026
+  1.553790716081153E+026
+  1.753427844815852E+026
+  1.930980362449143E+026
+  2.081523978800280E+026
+  2.202925347825124E+026
+  2.295548009002224E+026
+  2.361708818617231E+026
+  2.405042104052345E+026
+  2.429888677579476E+026
+  2.440777150426212E+026
+  2.442023592711977E+026
+  2.437449512122322E+026
+  2.430206159026571E+026
+  2.422690191021505E+026
+  2.416536344538330E+026
+  2.412673287793863E+026
+  2.411427868712484E+026
+  2.412661005949108E+026
+  2.415916978972602E+026
+  2.420568315732204E+026
+  2.425941481693463E+026
+  2.431413612604975E+026
+  2.436476261992348E+026
+  2.440767242023783E+026
+  2.444075540305031E+026
+  2.446326924215815E+026
+  2.447558722597560E+026
+  2.447890648390445E+026
+  2.447495463866460E+026
+  2.446571984386512E+026
+  2.445323364477429E+026
+  2.443941769638827E+026
+  2.442598511385079E+026
+  1.920663438408661E+026
+  1.920889002417380E+026
+  1.921140864941212E+026
+  1.921394764123081E+026
+  1.921613668838408E+026
+  1.921745558028158E+026
+  1.921723268307861E+026
+  1.921466923353301E+026
+  1.920889086165412E+026
+  1.919903132554431E+026
+  1.918434602151888E+026
+  1.916434485760017E+026
+  1.913893040646816E+026
+  1.910852232639101E+026
+  1.907414310130919E+026
+  1.903743672903364E+026
+  1.900059248531514E+026
+  1.896615036481865E+026
+  1.893667370628329E+026
+  1.891428836991202E+026
+  1.890010607021581E+026
+  1.889356995521162E+026
+  1.889178006895805E+026
+  1.888887160245563E+026
+  1.887552738186149E+026
+  1.883870719071845E+026
+  1.876167173646335E+026
+  1.862437128530835E+026
+  1.840426062347574E+026
+  1.807759202062585E+026
+  1.762121926696027E+026
+  1.701490565286398E+026
+  1.624405207261374E+026
+  1.530263920009604E+026
+  1.419601621465091E+026
+  1.294299966282893E+026
+  1.157663518925569E+026
+  1.014301485479642E+026
+  8.697815152055758E+025
+  7.300735650248793E+025
+  6.008674232278930E+025
+  4.867001905173266E+025
+  3.897715683172660E+025
+  3.098600910495967E+025
+  2.453317899287229E+025
+  1.939823030296074E+025
+  1.535307246337197E+025
+  1.218750780653622E+025
+  9.719976902759251E+024
+  7.799897529746074E+024
+  6.305713331870700E+024
+  5.141109457613618E+024
+  4.230756045233165E+024
+  3.516265033314734E+024
+  2.952655071492561E+024
+  2.505407255574512E+024
+  2.148088295222107E+024
+  1.860471730535221E+024
+  1.627074339175935E+024
+  1.436027647868996E+024
+  1.278214197748352E+024
+  1.146609945774663E+024
+  1.035785523494222E+024
+  9.415290489071845E+023
+  8.605615321721231E+023
+  7.903226826231300E+023
+  7.288102966763258E+023
+  6.744606249157012E+023
+  6.260604565982728E+023
+  5.826844244852892E+023
+  5.436535642195040E+023
+  5.085138716371254E+023
+  4.770370283355404E+023
+  4.492503738457499E+023
+  4.255107094816510E+023
+  4.066482498902499E+023
+  3.942252674423466E+023
+  3.909816747884472E+023
+  4.015804404750837E+023
+  4.338225792412612E+023
+  5.005757059554245E+023
+  6.227472068892430E+023
+  8.337157975118421E+023
+  1.185672926777082E+024
+  1.758238723168659E+024
+  2.669370587098347E+024
+  4.087773785931243E+024
+  6.244496433307541E+024
+  9.438903616200412E+024
+  1.403070801516808E+025
+  2.040558220492329E+025
+  2.889840534510281E+025
+  3.967299781471897E+025
+  5.263361260749529E+025
+  6.742239756094755E+025
+  8.345595415468988E+025
+  1.000009642274532E+026
+  1.162784348938494E+026
+  1.315698897967765E+026
+  1.453016052570731E+026
+  1.570929986143339E+026
+  1.667672382371989E+026
+  1.743313763702939E+026
+  1.799376630585303E+026
+  1.838375769835897E+026
+  1.863372809442542E+026
+  1.877596004195615E+026
+  1.884145646800163E+026
+  1.885785860979247E+026
+  1.884814223671092E+026
+  1.882998101389550E+026
+  1.881566878146684E+026
+  1.881249687908229E+026
+  1.882347749957476E+026
+  1.884829204870577E+026
+  1.888433461999564E+026
+  1.892772509677560E+026
+  1.897418841825926E+026
+  1.901973236140049E+026
+  1.906109626811107E+026
+  1.909597845409918E+026
+  1.912307701059782E+026
+  1.914199728202964E+026
+  1.915308572027074E+026
+  1.915723782645728E+026
+  1.915570529614173E+026
+  1.914991861398274E+026
+  1.914134580933875E+026
+  1.913139434466852E+026
+  1.912134782246447E+026
+  2.145864649014797E+026
+  2.146127435948210E+026
+  2.146421723385698E+026
+  2.146719983561043E+026
+  2.146980156917454E+026
+  2.147143294299727E+026
+  2.147133604835591E+026
+  2.146861501885532E+026
+  2.146229809700316E+026
+  2.145143669214805E+026
+  2.143523831841837E+026
+  2.141322123143152E+026
+  2.138537428847505E+026
+  2.135229985140222E+026
+  2.131531080959007E+026
+  2.127644900321483E+026
+  2.123839304516348E+026
+  2.120422885012091E+026
+  2.117706661605365E+026
+  2.115950412981558E+026
+  2.115295735930758E+026
+  2.115690285992311E+026
+  2.116809886305395E+026
+  2.117986918893105E+026
+  2.118154354093569E+026
+  2.115814856326683E+026
+  2.109043802809667E+026
+  2.095534113348652E+026
+  2.072689804670363E+026
+  2.037774046752580E+026
+  1.988115417872396E+026
+  1.921371543693946E+026
+  1.835840648644885E+026
+  1.730797687936812E+026
+  1.606813358374330E+026
+  1.465995002792419E+026
+  1.312075665632476E+026
+  1.150281911533286E+026
+  9.869418371614282E+025
+  8.288532179869385E+025
+  6.825064892287387E+025
+  5.530902870725009E+025
+  4.431406152203849E+025
+  3.524399420896007E+025
+  2.791598077236446E+025
+  2.208169021728458E+025
+  1.748348648018205E+025
+  1.388357475642893E+025
+  1.107633335319192E+025
+  8.891077250258645E+024
+  7.189924136863569E+024
+  5.863555953391214E+024
+  4.826425872923738E+024
+  4.012193780179083E+024
+  3.369728955493965E+024
+  2.859776991460883E+024
+  2.452266642724254E+024
+  2.124179410191909E+024
+  1.857888852419073E+024
+  1.639879399862965E+024
+  1.459765247975179E+024
+  1.309543054351583E+024
+  1.183024925758552E+024
+  1.075409433061670E+024
+  9.829578219390406E+023
+  9.027502434263738E+023
+  8.325029124801920E+023
+  7.704318843836863E+023
+  7.151529272046215E+023
+  6.656101070098046E+023
+  6.210285791113927E+023
+  5.808901605755536E+023
+  5.449341605867316E+023
+  5.131915343624140E+023
+  4.860689744280789E+023
+  4.645129086951483E+023
+  4.503041222330007E+023
+  4.465652340270050E+023
+  4.586094828837475E+023
+  4.953238722007810E+023
+  5.713640065493063E+023
+  7.105366228911325E+023
+  9.508392211110478E+023
+  1.351667905928558E+024
+  2.003604073947568E+024
+  3.040793941838204E+024
+  4.655012376908484E+024
+  7.108764019531728E+024
+  1.074194712850399E+025
+  1.596261465624096E+025
+  2.320766817135567E+025
+  3.285541471537844E+025
+  4.508880582624947E+025
+  5.979504756217327E+025
+  7.656315988164217E+025
+  9.472608989710329E+025
+  1.134472393389876E+026
+  1.318393968370101E+026
+  1.490856647123379E+026
+  1.645351906973723E+026
+  1.777579588828210E+026
+  1.885565290417856E+026
+  1.969431088606200E+026
+  2.030952722374324E+026
+  2.073034639593884E+026
+  2.099201870202100E+026
+  2.113166491730135E+026
+  2.118491648627648E+026
+  2.118353831431623E+026
+  2.115393651658792E+026
+  2.111642541983682E+026
+  2.108513210506189E+026
+  2.106842186727865E+026
+  2.106972174304411E+026
+  2.108860486487651E+026
+  2.112198743940083E+026
+  2.116529438656877E+026
+  2.121347427823925E+026
+  2.126178491568135E+026
+  2.130631678660080E+026
+  2.134426227289043E+026
+  2.137396960133013E+026
+  2.139484202277965E+026
+  2.140715038702808E+026
+  2.141181400665012E+026
+  2.141017911944436E+026
+  2.140381394441344E+026
+  2.139434418377982E+026
+  2.138333737607918E+026
+  2.137222730292268E+026
+  2.448781931340174E+026
+  2.449040902565373E+026
+  2.449366036245588E+026
+  2.449734717113373E+026
+  2.450105166568413E+026
+  2.450412574322699E+026
+  2.450568223242880E+026
+  2.450462451632602E+026
+  2.449971793483272E+026
+  2.448971035498942E+026
+  2.447349904898001E+026
+  2.445032984006083E+026
+  2.442000862587831E+026
+  2.438309789407665E+026
+  2.434106214899699E+026
+  2.429632092480742E+026
+  2.425216825700594E+026
+  2.421252339599395E+026
+  2.418148993171146E+026
+  2.416272010039595E+026
+  2.415860703912968E+026
+  2.416935714232079E+026
+  2.419202289146648E+026
+  2.421959871689864E+026
+  2.424029493454819E+026
+  2.423710641445274E+026
+  2.418778532692380E+026
+  2.406531531618519E+026
+  2.383897160980004E+026
+  2.347603723797866E+026
+  2.294422093714923E+026
+  2.221477019966152E+026
+  2.126617272640276E+026
+  2.008817764760629E+026
+  1.868565081532728E+026
+  1.708154710029116E+026
+  1.531812395087981E+026
+  1.345556026099536E+026
+  1.156749651712344E+026
+  9.733696269020784E+025
+  8.030915381568810E+025
+  6.521115924929848E+025
+  5.235365876874460E+025
+  4.172370477844418E+025
+  3.311728337403433E+025
+  2.625111453646930E+025
+  2.082874340274595E+025
+  1.657513466200822E+025
+  1.325157923138601E+025
+  1.065933008107819E+025
+  8.637417141383380E+024
+  7.057916097457050E+024
+  5.820499546896081E+024
+  4.847202885140303E+024
+  4.077815534645739E+024
+  3.466022563365107E+024
+  2.976276979808397E+024
+  2.581318684491218E+024
+  2.260235656297978E+024
+  1.996964791721892E+024
+  1.779141438222373E+024
+  1.597221340918992E+024
+  1.443813168583670E+024
+  1.313172627436196E+024
+  1.200819995646145E+024
+  1.103251739544388E+024
+  1.017723914042292E+024
+  9.420906014669267E+023
+  8.746850553423039E+023
+  8.142348850598592E+023
+  7.598059976246761E+023
+  7.107736547082269E+023
+  6.668236341146738E+023
+  6.279931340361448E+023
+  5.947712325736638E+023
+  5.682945998301493E+023
+  5.506988004932547E+023
+  5.457228757530648E+023
+  5.597195285778364E+023
+  6.032993147266457E+023
+  6.939360093967910E+023
+  8.599750153708985E+023
+  1.146593370216194E+024
+  1.624302899639237E+024
+  2.400459772442722E+024
+  3.633762488658948E+024
+  5.550617342952210E+024
+  8.460189995782082E+024
+  1.276163500511327E+025
+  1.893233596089251E+025
+  2.748056224497351E+025
+  3.884154987428383E+025
+  5.321625281998958E+025
+  7.045453461584759E+025
+  9.005505960385706E+025
+  1.112180299503888E+026
+  1.329499283552716E+026
+  1.542054055006136E+026
+  1.740300622392601E+026
+  1.916721397482034E+026
+  2.066449941017239E+026
+  2.187384579216269E+026
+  2.279894966995186E+026
+  2.346281787034820E+026
+  2.390145545179068E+026
+  2.415780577377672E+026
+  2.427661080516846E+026
+  2.430044939213276E+026
+  2.426695274717524E+026
+  2.420707767198405E+026
+  2.414428821767664E+026
+  2.409450215529982E+026
+  2.406666347633306E+026
+  2.406379245852901E+026
+  2.408434550697449E+026
+  2.412370267708584E+026
+  2.417560589690467E+026
+  2.423340148458240E+026
+  2.429099117001434E+026
+  2.434345303321292E+026
+  2.438734454295468E+026
+  2.442073849503427E+026
+  2.444306846746310E+026
+  2.445486874356456E+026
+  2.445747709903411E+026
+  2.445273816372121E+026
+  2.444273202834050E+026
+  2.442955721143800E+026
+  2.441517871574727E+026
+  2.440133168919519E+026
+  2.583767516841779E+026
+  2.584054220207576E+026
+  2.584410161500697E+026
+  2.584810278971760E+026
+  2.585209218912879E+026
+  2.585537481683866E+026
+  2.585700814292904E+026
+  2.585583744669290E+026
+  2.585057608570063E+026
+  2.583993819912021E+026
+  2.582282035931280E+026
+  2.579851675991048E+026
+  2.576694621372601E+026
+  2.572886119118866E+026
+  2.568599991313242E+026
+  2.564113706995806E+026
+  2.559798916793333E+026
+  2.556093710090521E+026
+  2.553454211868714E+026
+  2.552285266318729E+026
+  2.552852761611302E+026
+  2.555183306674466E+026
+  2.558959982829022E+026
+  2.563425238990698E+026
+  2.567303288213490E+026
+  2.568754477540955E+026
+  2.565373261409145E+026
+  2.554240077726046E+026
+  2.532036028455909E+026
+  2.495227741673323E+026
+  2.440327200163414E+026
+  2.364225805995512E+026
+  2.264591290583894E+026
+  2.140298802443985E+026
+  1.991844292852524E+026
+  1.821663533513954E+026
+  1.634263044884383E+026
+  1.436073362469352E+026
+  1.234972624783630E+026
+  1.039501618826150E+026
+  8.578863120021520E+025
+  6.967758728171906E+025
+  5.595189902026474E+025
+  4.460032155499157E+025
+  3.540693144462187E+025
+  2.807056843377109E+025
+  2.227553035835705E+025
+  1.772864098164055E+025
+  1.417527658303672E+025
+  1.140333218736070E+025
+  9.240948380509370E+024
+  7.551500041583063E+024
+  6.227804350866875E+024
+  5.186547928674702E+024
+  4.363374896065623E+024
+  3.708771808355154E+024
+  3.184730091252135E+024
+  2.762097379728668E+024
+  2.418506977220334E+024
+  2.136776345544409E+024
+  1.903677767074002E+024
+  1.708999877288974E+024
+  1.544834119140495E+024
+  1.405033840295598E+024
+  1.284805287938433E+024
+  1.180399169490527E+024
+  1.088878960467263E+024
+  1.007948066691218E+024
+  9.358226597673088E+023
+  8.711409247545280E+023
+  8.129030717649459E+023
+  7.604403574635784E+023
+  7.134163151964180E+023
+  6.718705042872188E+023
+  6.363259702315566E+023
+  6.079985944659992E+023
+  5.891728590353592E+023
+  5.838484817668790E+023
+  5.988207729354557E+023
+  6.454388541989048E+023
+  7.423913662163428E+023
+  9.199916941822928E+023
+  1.226548397633909E+024
+  1.737451795637591E+024
+  2.567469418181427E+024
+  3.886227056919424E+024
+  5.935671215224012E+024
+  9.046104700422914E+024
+  1.364383117384056E+025
+  2.023846885825260E+025
+  2.937220655283437E+025
+  4.150860110756909E+025
+  5.686018690775277E+025
+  7.526373696287755E+025
+  9.618038104184875E+025
+  1.187522965944087E+026
+  1.419150186715766E+026
+  1.645494062940923E+026
+  1.856344584389791E+026
+  2.043667652583958E+026
+  2.202272360003982E+026
+  2.329931139846125E+026
+  2.427064478232170E+026
+  2.496161766663701E+026
+  2.541105180954380E+026
+  2.566520712255602E+026
+  2.577227665412552E+026
+  2.577814043389979E+026
+  2.572337651737184E+026
+  2.564140145457873E+026
+  2.555758141144131E+026
+  2.548916187876280E+026
+  2.544586933857030E+026
+  2.543102770962395E+026
+  2.544301114882095E+026
+  2.547683867508137E+026
+  2.552572071024606E+026
+  2.558239968725318E+026
+  2.564018069295756E+026
+  2.569360932562756E+026
+  2.573880850952643E+026
+  2.577352765106700E+026
+  2.579698550031494E+026
+  2.580959742000821E+026
+  2.581266048824161E+026
+  2.580803725554776E+026
+  2.579786491931633E+026
+  2.578432129754201E+026
+  2.576945950751969E+026
+  2.575510179386280E+026
+  2.628694431115128E+026
+  2.628952913269873E+026
+  2.629305303767675E+026
+  2.629733324162098E+026
+  2.630196237355074E+026
+  2.630625897009237E+026
+  2.630925169812678E+026
+  2.630970760551702E+026
+  2.630620920962968E+026
+  2.629728915956882E+026
+  2.628161977739345E+026
+  2.625824232748820E+026
+  2.622681397613535E+026
+  2.618784163036277E+026
+  2.614286181771899E+026
+  2.609451957237805E+026
+  2.604649910979762E+026
+  2.600326529704160E+026
+  2.596958850825765E+026
+  2.594984728637248E+026
+  2.594713242563530E+026
+  2.596220930942817E+026
+  2.599242745616177E+026
+  2.603069171885436E+026
+  2.606462418329067E+026
+  2.607604802034982E+026
+  2.604091640235854E+026
+  2.592979582273358E+026
+  2.570899825832786E+026
+  2.534244029233872E+026
+  2.479428034402380E+026
+  2.403232878334609E+026
+  2.303211716595792E+026
+  2.178133657216293E+026
+  2.028411724247927E+026
+  1.856436605366637E+026
+  1.666719948617297E+026
+  1.465754585213118E+026
+  1.261536838458721E+026
+  1.062770571074584E+026
+  8.778699430749989E+025
+  7.136657002820457E+025
+  5.736321012289675E+025
+  4.577083500843918E+025
+  3.637355222913747E+025
+  2.886741480977235E+025
+  2.293265383151892E+025
+  1.827168282710981E+025
+  1.462564460283254E+025
+  1.177863063976851E+025
+  9.555500766629069E+024
+  7.816875202222998E+024
+  6.453300592985846E+024
+  5.379616176180369E+024
+  4.529976616256278E+024
+  3.853675149724965E+024
+  3.311751158248963E+024
+  2.874294677333330E+024
+  2.518336902839942E+024
+  2.226216855945865E+024
+  1.984326380199447E+024
+  1.782151179773004E+024
+  1.611541035051178E+024
+  1.466156115269981E+024
+  1.341047966913925E+024
+  1.232343291548690E+024
+  1.137006248759114E+024
+  1.052661040212912E+024
+  9.774613241818466E+023
+  9.099970050526226E+023
+  8.492326339956904E+023
+  7.944756481813201E+023
+  7.453777643199874E+023
+  7.019801580744016E+023
+  6.648242572768268E+023
+  6.351674501477104E+023
+  6.153700912375259E+023
+  6.095611896899207E+023
+  6.247500453086445E+023
+  6.726343052319239E+023
+  7.724626150126250E+023
+  9.554345049252714E+023
+  1.271234705326581E+024
+  1.797342152191223E+024
+  2.651607224821358E+024
+  4.008055392624604E+024
+  6.114658549914890E+024
+  9.309553625357381E+024
+  1.402855189603410E+025
+  2.079171330650995E+025
+  3.015089421041587E+025
+  4.257549525718639E+025
+  5.827599405606325E+025
+  7.707711402285405E+025
+  9.841948651036126E+025
+  1.214193436357306E+026
+  1.449848892453147E+026
+  1.679726370974327E+026
+  1.893437940386235E+026
+  2.082857294700212E+026
+  2.242789803556457E+026
+  2.371080936244150E+026
+  2.468280288657820E+026
+  2.537038578750512E+026
+  2.581408957176533E+026
+  2.606179355410259E+026
+  2.616308166599438E+026
+  2.616490635747813E+026
+  2.610855303770182E+026
+  2.602777155037259E+026
+  2.594791062026841E+026
+  2.588589797629515E+026
+  2.585091338606148E+026
+  2.584558971273663E+026
+  2.586755441314304E+026
+  2.591110732265945E+026
+  2.596883624418846E+026
+  2.603300643667431E+026
+  2.609661734017019E+026
+  2.615408453257770E+026
+  2.620156216346116E+026
+  2.623696434310153E+026
+  2.625977251564942E+026
+  2.627072486131513E+026
+  2.627146529757692E+026
+  2.626419539115472E+026
+  2.625135735624282E+026
+  2.623538064378861E+026
+  2.621850457910226E+026
+  2.620266739485730E+026
+  2.122338170205313E+026
+  2.122567641025389E+026
+  2.122848093626736E+026
+  2.123158616641901E+026
+  2.123462431067794E+026
+  2.123703644465897E+026
+  2.123806418188284E+026
+  2.123677232275506E+026
+  2.123210514582403E+026
+  2.122298264832549E+026
+  2.120843448233871E+026
+  2.118776013657733E+026
+  2.116069932308388E+026
+  2.112759042719406E+026
+  2.108948768252798E+026
+  2.104820341004285E+026
+  2.100624180032676E+026
+  2.096659546963362E+026
+  2.093238601864154E+026
+  2.090634574168848E+026
+  2.089015884634826E+026
+  2.088370461852051E+026
+  2.088426819236128E+026
+  2.088580300460144E+026
+  2.087833963080212E+026
+  2.084763753620810E+026
+  2.077517085678780E+026
+  2.063853002659601E+026
+  2.041231087237870E+026
+  2.006955092437257E+026
+  1.958375160620758E+026
+  1.893148018440975E+026
+  1.809545989107167E+026
+  1.706791968125350E+026
+  1.585379287600617E+026
+  1.447316135131041E+026
+  1.296221215132863E+026
+  1.137201155898992E+026
+  9.764701799057027E+025
+  8.207302207619953E+025
+  6.764038855348999E+025
+  5.486477174643204E+025
+  4.400067552565739E+025
+  3.503037493685785E+025
+  2.777633823661004E+025
+  2.199558956188620E+025
+  1.743527135404109E+025
+  1.386156133001631E+025
+  1.107198930045928E+025
+  8.898288112818687E+024
+  7.204383981307798E+024
+  5.882284492154132E+024
+  4.847398181355082E+024
+  4.034063211163208E+024
+  3.391623711551308E+024
+  2.881153081144949E+024
+  2.472802998791507E+024
+  2.143703970162188E+024
+  1.876327048764226E+024
+  1.657218673570974E+024
+  1.476030899696589E+024
+  1.324782043618816E+024
+  1.197295195681056E+024
+  1.088773047185349E+024
+  9.954767136348758E+023
+  9.144837464390394E+023
+  8.435065028267955E+023
+  7.807567474640410E+023
+  7.248460908114970E+023
+  6.747149661660449E+023
+  6.295856932362828E+023
+  5.889382347553258E+023
+  5.525111344569646E+023
+  5.203356934401047E+023
+  4.928199616171672E+023
+  4.709124277325850E+023
+  4.563959476399014E+023
+  4.523937927208403E+023
+  4.642156056724583E+023
+  5.007350836044349E+023
+  5.765745426701115E+023
+  7.154686831402552E+023
+  9.552710667151251E+023
+  1.355105621023268E+024
+  2.005061846754756E+024
+  3.038433687074237E+024
+  4.645581403810661E+024
+  7.086768444322197E+024
+  1.069852573357064E+025
+  1.588415880560570E+025
+  2.307440025995567E+025
+  3.264041704208201E+025
+  4.475825773750967E+025
+  5.931002582396777E+025
+  7.588268060585963E+025
+  9.381107829600672E+025
+  1.122648166679048E+026
+  1.303666913822831E+026
+  1.473124717718609E+026
+  1.624651051770445E+026
+  1.754079594335291E+026
+  1.859552824581862E+026
+  1.941284188477118E+026
+  2.001111144151957E+026
+  2.041969717163689E+026
+  2.067388376274168E+026
+  2.081057928096761E+026
+  2.086499650420985E+026
+  2.086831983576324E+026
+  2.084625878451877E+026
+  2.081836192509430E+026
+  2.079796895938731E+026
+  2.079268261870642E+026
+  2.080523492232477E+026
+  2.083460740838088E+026
+  2.087725422718339E+026
+  2.092828218073842E+026
+  2.098246781162582E+026
+  2.103503386100035E+026
+  2.108215456308212E+026
+  2.112120059390070E+026
+  2.115076572990298E+026
+  2.117053839915912E+026
+  2.118108838268010E+026
+  2.118362501937060E+026
+  2.117975710801695E+026
+  2.117127386502805E+026
+  2.115997082525032E+026
+  2.114752913598192E+026
+  2.113543949671421E+026
+  9.364967052275234E+025
+  9.366227330961935E+025
+  9.367475761661787E+025
+  9.368556151186217E+025
+  9.369262631900541E+025
+  9.369333710996577E+025
+  9.368454868841756E+025
+  9.366271402276050E+025
+  9.362411492796873E+025
+  9.356521422772823E+025
+  9.348311576488815E+025
+  9.337608433873645E+025
+  9.324406487793424E+025
+  9.308912131850978E+025
+  9.291569170761757E+025
+  9.273054350652553E+025
+  9.254231774425945E+025
+  9.236057188138600E+025
+  9.219427051534585E+025
+  9.204973259404565E+025
+  9.192812104793332E+025
+  9.182264652905185E+025
+  9.171573778629163E+025
+  9.157649349183128E+025
+  9.135876460019853E+025
+  9.100022070597285E+025
+  9.042273522504489E+025
+  8.953439482236203E+025
+  8.823340699253446E+025
+  8.641413812508612E+025
+  8.397542772521597E+025
+  8.083113213258731E+025
+  7.692248712764075E+025
+  7.223130793425716E+025
+  6.679230508192866E+025
+  6.070203960938395E+025
+  5.412157546465034E+025
+  4.727013169159809E+025
+  4.040834863655008E+025
+  3.381217800024599E+025
+  2.774139425603370E+025
+  2.239984079358548E+025
+  1.788188881840293E+025
+  1.417009843109616E+025
+  1.118278105789918E+025
+  8.813217492630639E+024
+  6.952429181737562E+024
+  5.500782805936944E+024
+  4.372716971362961E+024
+  3.497601591013049E+024
+  2.818653258628319E+024
+  2.291045678421321E+024
+  1.879839548915038E+024
+  1.558041499198984E+024
+  1.304921025351308E+024
+  1.104617360067566E+024
+  9.450204597430444E+023
+  8.168902786164560E+023
+  7.131733135898860E+023
+  6.284774940636594E+023
+  5.586715908627682E+023
+  5.005811729701942E+023
+  4.517586856664849E+023
+  4.103100432416031E+023
+  3.747641271136233E+023
+  3.439747997598843E+023
+  3.170475864712518E+023
+  2.932851631284130E+023
+  2.721473531029482E+023
+  2.532226242153031E+023
+  2.362092468208810E+023
+  2.209055158376248E+023
+  2.072099997536854E+023
+  1.951350066318853E+023
+  1.848398612043560E+023
+  1.766959129880112E+023
+  1.714034903617989E+023
+  1.701936608244439E+023
+  1.751662923286535E+023
+  1.898421142592575E+023
+  2.200409642335267E+023
+  2.752393410262398E+023
+  3.706002717048553E+023
+  5.298891447457880E+023
+  7.894545022284342E+023
+  1.203300628168526E+024
+  1.848914984807814E+024
+  2.832816997095140E+024
+  4.293646836207309E+024
+  6.398970236631490E+024
+  9.330004247598917E+024
+  1.324675929889696E+025
+  1.823272686470144E+025
+  2.425335297295220E+025
+  3.115341931460447E+025
+  3.867222149169907E+025
+  4.647688481628372E+025
+  5.420938554416330E+025
+  6.153522502916466E+025
+  6.818273597636437E+025
+  7.396640757453919E+025
+  7.879303571744514E+025
+  8.265378311341794E+025
+  8.560734031862397E+025
+  8.775943684426187E+025
+  8.924273557513987E+025
+  9.019952351979461E+025
+  9.076820602103667E+025
+  9.107368718823165E+025
+  9.122126482854565E+025
+  9.129353080965385E+025
+  9.134977398500377E+025
+  9.142740753053976E+025
+  9.154493115205959E+025
+  9.170589721223117E+025
+  9.190331889812266E+025
+  9.212398142421715E+025
+  9.235221333790764E+025
+  9.257282811728686E+025
+  9.277311532636488E+025
+  9.294390768247971E+025
+  9.307986332274908E+025
+  9.317918407079438E+025
+  9.324302224242189E+025
+  9.327477652731930E+025
+  9.327937517135518E+025
+  9.326260833008666E+025
+  9.323059884011949E+025
+  9.318943779030294E+025
+  9.314494036809672E+025
+  3.027380695493498E+026
+  3.027595646581920E+026
+  3.027990939557486E+026
+  3.028565601943200E+026
+  3.029286672911574E+026
+  3.030080837023784E+026
+  3.030830528676758E+026
+  3.031376093497077E+026
+  3.031524927207861E+026
+  3.031068874312921E+026
+  3.029809714706885E+026
+  3.027590947799280E+026
+  3.024333071194574E+026
+  3.020068303696457E+026
+  3.014969313589335E+026
+  3.009365596502427E+026
+  3.003740990497530E+026
+  2.998706505539942E+026
+  2.994944327615183E+026
+  2.993121662138169E+026
+  2.993776903047097E+026
+  2.997185028545966E+026
+  3.003213459640059E+026
+  3.011183126340967E+026
+  3.019751564796935E+026
+  3.026835266951324E+026
+  3.029587446095107E+026
+  3.024445480016738E+026
+  3.007260193303842E+026
+  2.973516940352849E+026
+  2.918655149354689E+026
+  2.838486346029483E+026
+  2.729697825247767E+026
+  2.590407936219748E+026
+  2.420709793267059E+026
+  2.223108113142858E+026
+  2.002730205234844E+026
+  1.767194011711445E+026
+  1.526059757435736E+026
+  1.289881532990977E+026
+  1.068995159387848E+026
+  8.719236961124713E+025
+  7.031726220847168E+025
+  5.629500598741708E+025
+  4.488749127754854E+025
+  3.574442666345091E+025
+  2.849128623122434E+025
+  2.277626525087682E+025
+  1.829131773618555E+025
+  1.477815193609565E+025
+  1.202630109075582E+025
+  9.867594361170661E+024
+  8.169476510517304E+024
+  6.828450678457947E+024
+  5.764227276343534E+024
+  4.914778211295234E+024
+  4.232296878081050E+024
+  3.679972525765294E+024
+  3.229455040927496E+024
+  2.858884334200366E+024
+  2.551370733869002E+024
+  2.293829943557133E+024
+  2.076093646069994E+024
+  1.890232739894666E+024
+  1.730043793042854E+024
+  1.590660511854395E+024
+  1.468261045125947E+024
+  1.359849110387365E+024
+  1.263092665816091E+024
+  1.176208664138604E+024
+  1.097886910341529E+024
+  1.027250940162101E+024
+  9.638601223092824E+023
+  9.077662574880566E+023
+  8.596518378048046E+023
+  8.210987827950556E+023
+  7.950699493144812E+023
+  7.867362359167446E+023
+  8.048555654554218E+023
+  8.640115108114010E+023
+  9.881495826719483E+023
+  1.215997657322137E+024
+  1.609089413113237E+024
+  2.263148617760616E+024
+  3.323391159875066E+024
+  5.003617621648113E+024
+  7.607448562471151E+024
+  1.154726759612701E+025
+  1.735200992356948E+025
+  2.564884226785027E+025
+  3.709686358721550E+025
+  5.224569119129078E+025
+  7.131983367626630E+025
+  9.406714196796602E+025
+  1.197669313998448E+026
+  1.473097110200140E+026
+  1.753453831933102E+026
+  2.024779513613031E+026
+  2.274570847101001E+026
+  2.493239753986063E+026
+  2.674885647172436E+026
+  2.817373594577490E+026
+  2.921873077471789E+026
+  2.992081149869063E+026
+  3.033341652394915E+026
+  3.051814096811668E+026
+  3.053777716040956E+026
+  3.045101272229385E+026
+  3.030875833442452E+026
+  3.015193260961597E+026
+  3.001050146752081E+026
+  2.990357988408290E+026
+  2.984040694449368E+026
+  2.982198514162253E+026
+  2.984314182897844E+026
+  2.989474724716531E+026
+  2.996583051236352E+026
+  3.004538057132134E+026
+  3.012369487157318E+026
+  3.019322430490113E+026
+  3.024893910311505E+026
+  3.028829721688236E+026
+  3.031093271324630E+026
+  3.031819161664995E+026
+  3.031261839398196E+026
+  3.029745301853159E+026
+  3.027617782292664E+026
+  3.025215608202631E+026
+  3.022837961448051E+026
+  3.020731584070536E+026
+  1.269992249742865E+021
+  1.270190394747885E+021
+  1.270356133122790E+021
+  1.270460384434695E+021
+  1.270470021289429E+021
+  1.270348050012053E+021
+  1.270054629165827E+021
+  1.269548977990665E+021
+  1.268792021511829E+021
+  1.267749934974598E+021
+  1.266398375498700E+021
+  1.264726816313535E+021
+  1.262742333143488E+021
+  1.260472048299352E+021
+  1.257963217358948E+021
+  1.255279855608278E+021
+  1.252494907815560E+021
+  1.249677236808638E+021
+  1.246873148232250E+021
+  1.244082802961807E+021
+  1.241232667433503E+021
+  1.238146017366615E+021
+  1.234514303841211E+021
+  1.229872782978758E+021
+  1.223584124415726E+021
+  1.214833753589260E+021
+  1.202640535363315E+021
+  1.185886193654785E+021
+  1.163366632200076E+021
+  1.133867905592090E+021
+  1.096268495942521E+021
+  1.049667019396909E+021
+  9.935297680252393E+020
+  9.278452936206999E+020
+  8.532642143558676E+020
+  7.711936415565555E+020
+  6.838108917850897E+020
+  5.939655055736738E+020
+  5.049559946614224E+020
+  4.201977491310661E+020
+  3.428345392297519E+020
+  2.752591179648539E+020
+  2.184772581149449E+020
+  1.721127250342670E+020
+  1.350170082449361E+020
+  1.057613993336093E+020
+  8.291767225109889E+019
+  6.519721154130306E+019
+  5.150418733024691E+019
+  4.094126034780280E+019
+  3.279208997749778E+019
+  2.649481908703694E+019
+  2.161416252698538E+019
+  1.781577071585085E+019
+  1.484430199932822E+019
+  1.250545879564568E+019
+  1.065168044842038E+019
+  9.170965638014413E+018
+  7.978256175249264E+018
+  7.008857867210053E+018
+  6.213450610920984E+018
+  5.554321949648857E+018
+  5.002533727506284E+018
+  4.535795789515872E+018
+  4.136873278953564E+018
+  3.792395975132820E+018
+  3.491970875906522E+018
+  3.227524623348161E+018
+  2.992822217452098E+018
+  2.783124631771555E+018
+  2.594962437699518E+018
+  2.426017686287962E+018
+  2.275125086330879E+018
+  2.142430168273135E+018
+  2.029782818851638E+018
+  1.941508384810015E+018
+  1.885798363208549E+018
+  1.877115773137979E+018
+  1.940237627205491E+018
+  2.116879784827859E+018
+  2.476280240137652E+018
+  3.131639049780194E+018
+  4.264843657333308E+018
+  6.162235377904565E+018
+  9.263864368620655E+018
+  1.422697480689536E+019
+  2.200018021998559E+019
+  3.389636949564627E+019
+  5.163821559010505E+019
+  7.732944787374993E+019
+  1.132794916112359E+020
+  1.615855946403064E+020
+  2.234541086120821E+020
+  2.986727133079823E+020
+  3.855460273315132E+020
+  4.810454834258925E+020
+  5.811854987574281E+020
+  6.815798644320626E+020
+  7.780352298192136E+020
+  8.670458369156362E+020
+  9.461034018398685E+020
+  1.013800713645948E+021
+  1.069760744988887E+021
+  1.114451179865167E+021
+  1.148947513184161E+021
+  1.174694841260142E+021
+  1.193299468269874E+021
+  1.206364225510802E+021
+  1.215369584240671E+021
+  1.221596476107450E+021
+  1.226084611351945E+021
+  1.229619995562990E+021
+  1.232745749750542E+021
+  1.235790471074833E+021
+  1.238908175082665E+021
+  1.242123709702587E+021
+  1.245377880924744E+021
+  1.248567598229203E+021
+  1.251577966822786E+021
+  1.254304985754615E+021
+  1.256668979920753E+021
+  1.258620043118570E+021
+  1.260137685062663E+021
+  1.261227297197840E+021
+  1.261915465068690E+021
+  1.262244938614301E+021
+  1.262269738324917E+021
+  1.262051365163555E+021
+  1.261656309350710E+021
+  1.261154152013377E+021
+  1.228915441458731E+026
+  1.228983456801748E+026
+  1.229108896538355E+026
+  1.229290310669297E+026
+  1.229515139614767E+026
+  1.229756206468590E+026
+  1.229969511842480E+026
+  1.230093856133339E+026
+  1.230052601987798E+026
+  1.229758124679179E+026
+  1.229119010183424E+026
+  1.228049516368907E+026
+  1.226480521512530E+026
+  1.224370790056964E+026
+  1.221716902401125E+026
+  1.218559851530371E+026
+  1.214986202747393E+026
+  1.211121861295333E+026
+  1.207116946477361E+026
+  1.203121089916235E+026
+  1.199249649645114E+026
+  1.195542743381796E+026
+  1.191920449996184E+026
+  1.188138771844117E+026
+  1.183751791093187E+026
+  1.178085789904021E+026
+  1.170230976856653E+026
+  1.159056025971986E+026
+  1.143250049215451E+026
+  1.121395867652668E+026
+  1.092077148923601E+026
+  1.054019389956935E+026
+  1.006259935231506E+026
+  9.483346203447365E+025
+  8.804584990017652E+025
+  8.036672938179805E+025
+  7.198786954879109E+025
+  6.318342441940673E+025
+  5.428985866144448E+025
+  4.567244605390341E+025
+  3.768329449216502E+025
+  3.060669694745031E+025
+  2.458388297712584E+025
+  1.960598963389952E+025
+  1.557585480520969E+025
+  1.236003204740817E+025
+  9.819433402076555E+024
+  7.825297106092304E+024
+  6.266011376238916E+024
+  5.048721246140567E+024
+  4.098253006915219E+024
+  3.354874525107562E+024
+  2.771736256625147E+024
+  2.312421793739321E+024
+  1.948795339734187E+024
+  1.659201828848573E+024
+  1.427008966021663E+024
+  1.239451166124006E+024
+  1.086726284086368E+024
+  9.612971327206163E+023
+  8.573553401310835E+023
+  7.704120084877939E+023
+  6.969863968579045E+023
+  6.343698417418626E+023
+  5.804471691116970E+023
+  5.335619580601519E+023
+  4.924152894849168E+023
+  4.559901930773325E+023
+  4.234960562243908E+023
+  3.943289649602682E+023
+  3.680455227498346E+023
+  3.443493966141043E+023
+  3.230920138884244E+023
+  3.042919610375822E+023
+  2.881824266731574E+023
+  2.753035106743461E+023
+  2.666678172126634E+023
+  2.640453094858530E+023
+  2.704390556777535E+023
+  2.908591547305535E+023
+  3.335483232640031E+023
+  4.118660990099252E+023
+  5.470880571307199E+023
+  7.723956720565970E+023
+  1.138271130442392E+024
+  1.719284734071220E+024
+  2.621745404348827E+024
+  3.990721438677046E+024
+  6.013386278453038E+024
+  8.913473141363173E+024
+  1.292909643489791E+025
+  1.826415048353417E+025
+  2.501300120225164E+025
+  3.310627422158935E+025
+  4.231146985717790E+025
+  5.225814183955988E+025
+  6.248708148618285E+025
+  7.251646227855885E+025
+  8.190799518752642E+025
+  9.031826338989025E+025
+  9.752695279038739E+025
+  1.034412732844604E+026
+  1.080815590090722E+026
+  1.115555861844454E+026
+  1.140288944190470E+026
+  1.156965096472546E+026
+  1.167591612277388E+026
+  1.174051761180550E+026
+  1.177980302043474E+026
+  1.180689766964086E+026
+  1.183140169029683E+026
+  1.185944853318350E+026
+  1.189405271532905E+026
+  1.193566947419763E+026
+  1.198288081547810E+026
+  1.203311801822804E+026
+  1.208333627134455E+026
+  1.213057483975766E+026
+  1.217236264077064E+026
+  1.220695746257771E+026
+  1.223343105436677E+026
+  1.225162964740083E+026
+  1.226205034922851E+026
+  1.226567631309219E+026
+  1.226380412465810E+026
+  1.225788092032966E+026
+  1.224936211561372E+026
+  1.223960294063574E+026
+  1.222978791583224E+026
+  1.222089239521676E+026
+  2.717346082078425E+026
+  2.717485880621627E+026
+  2.717778108117066E+026
+  2.718224967932396E+026
+  2.718801667391202E+026
+  2.719448096253151E+026
+  2.720063804641392E+026
+  2.720507601893564E+026
+  2.720602584549459E+026
+  2.720147854051934E+026
+  2.718937020531987E+026
+  2.716782276638887E+026
+  2.713542062147889E+026
+  2.709149352930510E+026
+  2.703636441136393E+026
+  2.697151248370300E+026
+  2.689959968992277E+026
+  2.682431235695127E+026
+  2.674998158559701E+026
+  2.668096644849156E+026
+  2.662081319177300E+026
+  2.657123833294825E+026
+  2.653101873988511E+026
+  2.649490161326444E+026
+  2.645266682138991E+026
+  2.638848084721862E+026
+  2.628067684020948E+026
+  2.610208303891909E+026
+  2.582100652317619E+026
+  2.540296104510663E+026
+  2.481319831172035E+026
+  2.402004391711694E+026
+  2.299893006412686E+026
+  2.173684144989328E+026
+  2.023665300806989E+026
+  1.852058034301853E+026
+  1.663177860630718E+026
+  1.463315103564971E+026
+  1.260279305271214E+026
+  1.062623208834690E+026
+  8.786594605040586E+025
+  7.151715955294530E+025
+  5.756325976971201E+025
+  4.600079914726828E+025
+  3.661767336437611E+025
+  2.911386953513539E+025
+  2.317315570294289E+025
+  1.850085792170684E+025
+  1.484036867560776E+025
+  1.197742645893278E+025
+  9.738036518428993E+024
+  7.983571590167427E+024
+  6.605037336400408E+024
+  5.517521671724941E+024
+  4.655283185054745E+024
+  3.967623773515640E+024
+  3.415532230948574E+024
+  2.969014121555444E+024
+  2.604999568528486E+024
+  2.305721264647589E+024
+  2.057466583992234E+024
+  1.849622809842133E+024
+  1.673949583756399E+024
+  1.524026194127298E+024
+  1.394832774333279E+024
+  1.282433862671929E+024
+  1.183740288315366E+024
+  1.096331290125763E+024
+  1.018323514753581E+024
+  9.482775013361445E+023
+  8.851359356490066E+023
+  8.281919516983655E+023
+  7.770908757276791E+023
+  7.318761841725076E+023
+  6.931017462995146E+023
+  6.620500499648077E+023
+  6.411233990853330E+023
+  6.345163180367805E+023
+  6.493374980197327E+023
+  6.974328804755724E+023
+  7.982687959966696E+023
+  9.833573028368608E+023
+  1.302817699089199E+024
+  1.834706323376788E+024
+  2.697592372755337E+024
+  4.066311986339614E+024
+  6.189605619574046E+024
+  9.406077162614642E+024
+  1.415128795261785E+025
+  2.094377079993214E+025
+  3.033196909942918E+025
+  4.277955872510789E+025
+  5.848921014105841E+025
+  7.727735927875731E+025
+  9.857851927811217E+025
+  1.215075369966390E+026
+  1.449777898296845E+026
+  1.678580645508956E+026
+  1.891279911416724E+026
+  2.079973338558568E+026
+  2.239701595109464E+026
+  2.368528184153778E+026
+  2.467179502463559E+026
+  2.538425043773665E+026
+  2.586369478465367E+026
+  2.615782430113457E+026
+  2.631536952513172E+026
+  2.638182967134713E+026
+  2.639654219410784E+026
+  2.639094810584841E+026
+  2.638788247650551E+026
+  2.640172364302508E+026
+  2.643923585942089E+026
+  2.650092570746587E+026
+  2.658270997705110E+026
+  2.667767908311761E+026
+  2.677775104600856E+026
+  2.687505203116316E+026
+  2.696292265113314E+026
+  2.703651820375680E+026
+  2.709303038557784E+026
+  2.713160126476908E+026
+  2.715302713077291E+026
+  2.715935587909274E+026
+  2.715345972325855E+026
+  2.713862816487789E+026
+  2.711820980166656E+026
+  2.709533528071672E+026
+  2.707273269787344E+026
+  2.705262393453204E+026
+  1.130820356725956E+022
+  1.130683073723850E+022
+  1.130755794620108E+022
+  1.131082883056876E+022
+  1.131685675825760E+022
+  1.132552969106437E+022
+  1.133633613532687E+022
+  1.134832535619310E+022
+  1.136011279191269E+022
+  1.136994230218047E+022
+  1.137581005156831E+022
+  1.137564663509290E+022
+  1.136754736641216E+022
+  1.135003245368378E+022
+  1.132230961457916E+022
+  1.128450410077357E+022
+  1.123781662505331E+022
+  1.118456924257417E+022
+  1.112810412566872E+022
+  1.107251161530632E+022
+  1.102218207257838E+022
+  1.098119934665443E+022
+  1.095261896625089E+022
+  1.093769731001589E+022
+  1.093515494659146E+022
+  1.094056532739270E+022
+  1.094595871181184E+022
+  1.093972279715594E+022
+  1.090686954959305E+022
+  1.082972456211284E+022
+  1.068907921727879E+022
+  1.046581962344794E+022
+  1.014299789694616E+022
+  9.708229371326628E+021
+  9.156180243650592E+021
+  8.490768478787008E+021
+  7.726578922117854E+021
+  6.888962671959275E+021
+  6.012427093428645E+021
+  5.137262016885832E+021
+  4.304843949529259E+021
+  3.551076943532641E+021
+  2.896956771656780E+021
+  2.346587493646228E+021
+  1.893431380719461E+021
+  1.525934583788050E+021
+  1.231001077681012E+021
+  9.959264748978218E+020
+  8.093331724785724E+020
+  6.615084889183525E+020
+  5.444148607212064E+020
+  4.515396482611706E+020
+  3.776822881653626E+020
+  3.187318715121810E+020
+  2.714612982151687E+020
+  2.333487455960553E+020
+  2.024288451181035E+020
+  1.771718023997899E+020
+  1.563869350129125E+020
+  1.391466452150479E+020
+  1.247270328782868E+020
+  1.125618129162335E+020
+  1.022067355714131E+020
+  9.331222460212470E+019
+  8.560240914641427E+019
+  7.885911712903230E+019
+  7.290972146122076E+019
+  6.761799238937660E+019
+  6.287732333400135E+019
+  5.860588160676504E+019
+  5.474341279750098E+019
+  5.124962851647352E+019
+  4.810437254415820E+019
+  4.531014885174456E+019
+  4.289819170859858E+019
+  4.094018496685949E+019
+  3.956915935544024E+019
+  3.901521698490981E+019
+  3.966476666018557E+019
+  4.215605504524404E+019
+  4.752887804809362E+019
+  5.745185922293032E+019
+  7.455495340954000E+019
+  1.028944352151504E+020
+  1.485663569539760E+020
+  2.204524526341652E+020
+  3.310161124073795E+020
+  4.969500119466675E+020
+  7.393002755847179E+020
+  1.082460310070302E+021
+  1.551182809437901E+021
+  2.164607637970491E+021
+  2.927542398731938E+021
+  3.824853169511147E+021
+  4.822726158408137E+021
+  5.872897286595781E+021
+  6.919494735457566E+021
+  7.907381546056744E+021
+  8.789870789074737E+021
+  9.534131775992966E+021
+  1.012352182753937E+022
+  1.055701780368096E+022
+  1.084654877342318E+022
+  1.101323971006685E+022
+  1.108345293671852E+022
+  1.108522763247444E+022
+  1.104542008026354E+022
+  1.098762639313051E+022
+  1.093084688678109E+022
+  1.088880571953293E+022
+  1.086983430386873E+022
+  1.087723062019949E+022
+  1.091000153021391E+022
+  1.096387911629559E+022
+  1.103248313787921E+022
+  1.110849190854029E+022
+  1.118469254192209E+022
+  1.125481065467301E+022
+  1.131406314670910E+022
+  1.135942442562135E+022
+  1.138963590529742E+022
+  1.140501557775503E+022
+  1.140713834906327E+022
+  1.139845785770473E+022
+  1.138192549140995E+022
+  1.136063998885541E+022
+  1.133754856005325E+022
+  1.131521863859609E+022
+  1.129568843144868E+022
+  1.128039288516478E+022
+  2.104724894233095E+026
+  2.104988178163460E+026
+  2.105278480197445E+026
+  2.105567610794691E+026
+  2.105813431278582E+026
+  2.105957708203141E+026
+  2.105926312046598E+026
+  2.105632321069487E+026
+  2.104982169607549E+026
+  2.103885351173829E+026
+  2.102267357906804E+026
+  2.100084654798447E+026
+  2.097340074548242E+026
+  2.094096469477862E+026
+  2.090485806781164E+026
+  2.086710532081167E+026
+  2.083034106578964E+026
+  2.079758150821931E+026
+  2.077184653651598E+026
+  2.075563281563173E+026
+  2.075025879220546E+026
+  2.075512542362908E+026
+  2.076695809152187E+026
+  2.077911182542200E+026
+  2.078103095558832E+026
+  2.075795496556645E+026
+  2.069095636894101E+026
+  2.055738729058067E+026
+  2.033180190450334E+026
+  1.998741087919350E+026
+  1.949810367385187E+026
+  1.884103032842490E+026
+  1.799964952445521E+026
+  1.696701390611065E+026
+  1.574888387308409E+026
+  1.436607266723666E+026
+  1.285530148995671E+026
+  1.126788715576738E+026
+  9.665887630545471E+025
+  8.115904208917404E+025
+  6.681470469724012E+025
+  5.413322195028099E+025
+  4.336190851117608E+025
+  3.447841937426660E+025
+  2.730279363257008E+025
+  2.159113100600050E+025
+  1.709060476481172E+025
+  1.356797743332483E+025
+  1.082164341138350E+025
+  8.684303062263590E+024
+  7.020845804053267E+024
+  5.724178214135098E+024
+  4.710514530400052E+024
+  3.914895452621187E+024
+  3.287265919911409E+024
+  2.789205968140969E+024
+  2.391290124593142E+024
+  2.070999166492655E+024
+  1.811092740017303E+024
+  1.598354182371253E+024
+  1.422629557627967E+024
+  1.276095861288499E+024
+  1.152705893150647E+024
+  1.047768351090041E+024
+  9.576309559389168E+023
+  8.794419304765990E+023
+  8.109711235022214E+023
+  7.504767587517659E+023
+  6.966075020207180E+023
+  6.483326150750823E+023
+  6.048957818078627E+023
+  5.657912079734425E+023
+  5.307644113726939E+023
+  4.998455838873095E+023
+  4.734317638034235E+023
+  4.524471150277290E+023
+  4.386308986782941E+023
+  4.350335480546163E+023
+  4.468464852585768E+023
+  4.827545491556657E+023
+  5.570824569699112E+023
+  6.931034568784480E+023
+  9.279700821402810E+023
+  1.319768337972946E+024
+  1.957099249349835E+024
+  2.971204763016056E+024
+  4.549753451697916E+024
+  6.949700796148197E+024
+  1.050387039877589E+025
+  1.561199159055840E+025
+  2.270231875692225E+025
+  3.214611576915296E+025
+  4.412378901089216E+025
+  5.852646706548138E+025
+  7.495333447830355E+025
+  9.275255243402819E+025
+  1.111056973458756E+026
+  1.291440297603443E+026
+  1.460668633751080E+026
+  1.612354094190801E+026
+  1.742266369702659E+026
+  1.848450224932127E+026
+  1.931003435215562E+026
+  1.991645165087331E+026
+  2.033203316149077E+026
+  2.059117773135795E+026
+  2.073016219949440E+026
+  2.078385127250083E+026
+  2.078336691113971E+026
+  2.075462212795588E+026
+  2.071759638592947E+026
+  2.068623368342014E+026
+  2.066884955826756E+026
+  2.066892738712067E+026
+  2.068617045521086E+026
+  2.071766558748268E+026
+  2.075901815553718E+026
+  2.080534208048494E+026
+  2.085202793827007E+026
+  2.089525685691374E+026
+  2.093226740217407E+026
+  2.096141297715858E+026
+  2.098206830201548E+026
+  2.099445115699489E+026
+  2.099941270986168E+026
+  2.099822482916222E+026
+  2.099238280701483E+026
+  2.098344676632125E+026
+  2.097292992925573E+026
+  2.096222509475525E+026
+  1.722978147477434E+026
+  1.723185314384575E+026
+  1.723414849891561E+026
+  1.723644566710101E+026
+  1.723841020786620E+026
+  1.723957563546416E+026
+  1.723934191124330E+026
+  1.723699640500375E+026
+  1.723175852599971E+026
+  1.722285243429212E+026
+  1.720960567289121E+026
+  1.719156459141096E+026
+  1.716861429557112E+026
+  1.714108654118800E+026
+  1.710983377123219E+026
+  1.707624451527302E+026
+  1.704217582590313E+026
+  1.700978232894542E+026
+  1.698122922853642E+026
+  1.695828871723719E+026
+  1.694183519708644E+026
+  1.693127266283458E+026
+  1.692394474332812E+026
+  1.691459133231943E+026
+  1.689492333138326E+026
+  1.685338818002022E+026
+  1.677519482173447E+026
+  1.664266009048659E+026
+  1.643593127391270E+026
+  1.613413082880084E+026
+  1.571695261974455E+026
+  1.516670310604850E+026
+  1.447071251010733E+026
+  1.362393235839543E+026
+  1.263139277142749E+026
+  1.151004386771227E+026
+  1.028940864647635E+026
+  9.010511778366690E+025
+  7.722791679859281E+025
+  6.479160149289843E+025
+  5.329954299305140E+025
+  4.315216398816133E+025
+  3.454220642108738E+025
+  2.744774121793550E+025
+  2.172190840564060E+025
+  1.716768868764880E+025
+  1.358167931992167E+025
+  1.077668396865930E+025
+  8.591165345248277E+024
+  6.891249360962605E+024
+  5.568937295936234E+024
+  4.538705948942621E+024
+  3.733700988252631E+024
+  3.102129019555421E+024
+  2.604107444861058E+024
+  2.209043482710647E+024
+  1.893520037944174E+024
+  1.639625721091211E+024
+  1.433654699252885E+024
+  1.265104773795008E+024
+  1.125910900215660E+024
+  1.009861902411948E+024
+  9.121582812188902E+023
+  8.290779257874766E+023
+  7.577239793001577E+023
+  6.958351391888148E+023
+  6.416434536611374E+023
+  5.937684281980690E+023
+  5.511392235907677E+023
+  5.129391815956828E+023
+  4.785691593150273E+023
+  4.476285536634948E+023
+  4.199159310126629E+023
+  3.954555201738883E+023
+  3.745624689650210E+023
+  3.579701459269593E+023
+  3.470589056601232E+023
+  3.442502680181936E+023
+  3.536664820814575E+023
+  3.822058574069236E+023
+  4.412501576325108E+023
+  5.492977755469478E+023
+  7.358902371739452E+023
+  1.047233900879035E+024
+  1.553843253255403E+024
+  2.360226994765149E+024
+  3.615923533768572E+024
+  5.525840685364156E+024
+  8.355648483741493E+024
+  1.242484944154861E+025
+  1.807645289823982E+025
+  2.560906974752788E+025
+  3.517031504900111E+025
+  4.667814002066021E+025
+  5.981819950465690E+025
+  7.407581053135564E+025
+  8.880257021227698E+025
+  1.033084749598837E+026
+  1.169559627687965E+026
+  1.292346920660348E+026
+  1.398046884845946E+026
+  1.485060690755713E+026
+  1.553417422252338E+026
+  1.604433696404394E+026
+  1.640307990741474E+026
+  1.663726931872415E+026
+  1.677528921512873E+026
+  1.684443368852378E+026
+  1.686906333066605E+026
+  1.686945048406133E+026
+  1.686121466250001E+026
+  1.685525173162924E+026
+  1.685806433018206E+026
+  1.687239676669190E+026
+  1.689806741994747E+026
+  1.693288420544479E+026
+  1.697353282839445E+026
+  1.701634715061233E+026
+  1.705790264342007E+026
+  1.709540911129161E+026
+  1.712690967300631E+026
+  1.715131641153215E+026
+  1.716832937081726E+026
+  1.717829140738500E+026
+  1.718202088258224E+026
+  1.718064397383252E+026
+  1.717544048115627E+026
+  1.716772127577332E+026
+  1.715874342329657E+026
+  1.714965543763529E+026
+  1.876155160295637E+026
+  1.876410961009260E+026
+  1.876670856384544E+026
+  1.876904238155466E+026
+  1.877069734677348E+026
+  1.877114024503230E+026
+  1.876972587371582E+026
+  1.876572782386724E+026
+  1.875839276428515E+026
+  1.874702203216452E+026
+  1.873107731839126E+026
+  1.871029983383341E+026
+  1.868482924455898E+026
+  1.865530441106377E+026
+  1.862292280150466E+026
+  1.858943276868200E+026
+  1.855703396447576E+026
+  1.852816596082573E+026
+  1.850517399294850E+026
+  1.848985404058904E+026
+  1.848289657515422E+026
+  1.848326715719637E+026
+  1.848757966927718E+026
+  1.848953128457232E+026
+  1.847947520506948E+026
+  1.844420737207134E+026
+  1.836703834796784E+026
+  1.822821424738176E+026
+  1.800574312614874E+026
+  1.767667428814898E+026
+  1.721886039071734E+026
+  1.661319322527149E+026
+  1.584622931547607E+026
+  1.491300278883940E+026
+  1.381966732949095E+026
+  1.258544807157249E+026
+  1.124328178642924E+026
+  9.838568855843379E+025
+  8.425730246824992E+025
+  7.062763576658186E+025
+  5.804623570465441E+025
+  4.694821588181199E+025
+  3.754079895454761E+025
+  2.979670896943742E+025
+  2.355268163234262E+025
+  1.859128030636834E+025
+  1.468869725030477E+025
+  1.163934087292169E+025
+  9.266051444352188E+024
+  7.422185460603523E+024
+  5.989574005212709E+024
+  4.874739257331897E+024
+  4.004684437048601E+024
+  3.322915742243455E+024
+  2.785976039068673E+024
+  2.360565293441024E+024
+  2.021220904954358E+024
+  1.748487534912412E+024
+  1.527493819276090E+024
+  1.346856719684828E+024
+  1.197844207378662E+024
+  1.073738714174530E+024
+  9.693550363198587E+023
+  8.806762263079120E+023
+  8.045792184839853E+023
+  7.386285728638362E+023
+  6.809219790785168E+023
+  6.299752822668620E+023
+  5.846380474091791E+023
+  5.440333651554244E+023
+  5.075180523654257E+023
+  4.746620109110737E+023
+  4.452487978412161E+023
+  4.193041618944525E+023
+  3.971664894613734E+023
+  3.796243420336550E+023
+  3.681637518837861E+023
+  3.653945556313792E+023
+  3.757641840179058E+023
+  4.067222153148524E+023
+  4.705709711535554E+023
+  5.873223484203152E+023
+  7.889627911852377E+023
+  1.125568078817767E+024
+  1.673631247011451E+024
+  2.546639831159751E+024
+  3.907166255409987E+024
+  5.978266903391283E+024
+  9.049580071203340E+024
+  1.347009244034820E+025
+  1.961547489319302E+025
+  2.781442837750033E+025
+  3.823258790444425E+025
+  5.078619953741063E+025
+  6.513808689913551E+025
+  8.073122401037072E+025
+  9.686027386080244E+025
+  1.127713912383622E+026
+  1.277647507164881E+026
+  1.412766652282641E+026
+  1.529276144033360E+026
+  1.625339719023997E+026
+  1.700901810221614E+026
+  1.757324532250227E+026
+  1.796950718602190E+026
+  1.822677418474426E+026
+  1.837589803239410E+026
+  1.844675889092115E+026
+  1.846623311731818E+026
+  1.845690172704835E+026
+  1.843639370550328E+026
+  1.841726108834571E+026
+  1.840728791731696E+026
+  1.841013156322574E+026
+  1.842618434038121E+026
+  1.845353496434679E+026
+  1.848891284810302E+026
+  1.852851787458298E+026
+  1.856867083283254E+026
+  1.860625641991009E+026
+  1.863896326015658E+026
+  1.866535062136456E+026
+  1.868478946061183E+026
+  1.869733230909142E+026
+  1.870355578781623E+026
+  1.870439840074311E+026
+  1.870100828830509E+026
+  1.869462051260390E+026
+  1.868647036910138E+026
+  1.867773457088079E+026
+  8.150932388573403E+025
+  8.152154085869056E+025
+  8.153255790067357E+025
+  8.154070502634792E+025
+  8.154396890295759E+025
+  8.153998275922113E+025
+  8.152608380058421E+025
+  8.149944693674617E+025
+  8.145728909807648E+025
+  8.139715658364113E+025
+  8.131728101962147E+025
+  8.121696196380465E+025
+  8.109692598528107E+025
+  8.095959893915378E+025
+  8.080921061741726E+025
+  8.065164301107658E+025
+  8.049393972758272E+025
+  8.034341352332802E+025
+  8.020632217674919E+025
+  8.008613151728950E+025
+  7.998144602961235E+025
+  7.988375450939472E+025
+  7.977520001536174E+025
+  7.962662942340593E+025
+  7.939620156776886E+025
+  7.902883384357779E+025
+  7.845675159985290E+025
+  7.760138265949784E+025
+  7.637681679411262E+025
+  7.469501820049984E+025
+  7.247290640395454E+025
+  6.964125548763330E+025
+  6.615504854062892E+025
+  6.200443740317439E+025
+  5.722483426459180E+025
+  5.190403697918444E+025
+  4.618392389464275E+025
+  4.025449905410878E+025
+  3.433921448690139E+025
+  2.867253913554323E+025
+  2.347325127703568E+025
+  1.891105747915622E+025
+  1.506194776193989E+025
+  1.190713387841765E+025
+  9.373917880648829E+024
+  7.369115589642309E+024
+  5.798339200182490E+024
+  4.575726712034056E+024
+  3.627817415659181E+024
+  2.894157035578570E+024
+  2.326275505240691E+024
+  1.886005482014886E+024
+  1.543668766012799E+024
+  1.276389262542271E+024
+  1.066637817452088E+024
+  9.010324917500014E+023
+  7.693780503630873E+023
+  6.639121513297831E+023
+  5.787219039696778E+023
+  5.092966920820143E+023
+  4.521878227465205E+023
+  4.047507728471637E+023
+  3.649506825533991E+023
+  3.312159531377419E+023
+  3.023282781193111E+023
+  2.773402203772352E+023
+  2.555136373511606E+023
+  2.362739620648092E+023
+  2.191766873019493E+023
+  2.038834982110654E+023
+  1.901464905792351E+023
+  1.777999577456682E+023
+  1.667605360345201E+023
+  1.570383588491372E+023
+  1.487647116091340E+023
+  1.422461301063781E+023
+  1.380618285008168E+023
+  1.372319542834613E+023
+  1.414998543027851E+023
+  1.537936856777571E+023
+  1.789620229098930E+023
+  2.249132157525981E+023
+  3.043230662738442E+023
+  4.370948697145149E+023
+  6.537298471094561E+023
+  9.996420036282560E+023
+  1.540149310500784E+024
+  2.365288447440024E+024
+  3.592628739142542E+024
+  5.364858605306478E+024
+  7.837216078916101E+024
+  1.114832395825450E+025
+  1.537348410433106E+025
+  2.048909472263563E+025
+  2.636951663866647E+025
+  3.279886880557011E+025
+  3.949826533031997E+025
+  4.616498264864898E+025
+  5.251350851622248E+025
+  5.830914042702997E+025
+  6.338840035332965E+025
+  6.766506022199322E+025
+  7.112420968251719E+025
+  7.380864310811450E+025
+  7.580196450495650E+025
+  7.721183499077746E+025
+  7.815544335400593E+025
+  7.874809303661105E+025
+  7.909500531229114E+025
+  7.928603944262352E+025
+  7.939290437301633E+025
+  7.946843922341052E+025
+  7.954756493785363E+025
+  7.964950767989750E+025
+  7.978086715830058E+025
+  7.993908101480865E+025
+  8.011585459502291E+025
+  8.030020033358493E+025
+  8.048085056939630E+025
+  8.064793963294308E+025
+  8.079396613677958E+025
+  8.091413633435733E+025
+  8.100625711651321E+025
+  8.107037591162084E+025
+  8.110832357797377E+025
+  8.112323273836462E+025
+  8.111907708773053E+025
+  8.110030405686402E+025
+  8.107158038448326E+025
+  8.103760987881170E+025
+  1.664021606371368E+026
+  1.664241520570572E+026
+  1.664468073850092E+026
+  1.664675233907351E+026
+  1.664827195485953E+026
+  1.664877159459010E+026
+  1.664767829732933E+026
+  1.664433988043809E+026
+  1.663807184122292E+026
+  1.662822897679846E+026
+  1.661429905549873E+026
+  1.659600927216605E+026
+  1.657343342421990E+026
+  1.654708391480467E+026
+  1.651796802541975E+026
+  1.648758541777484E+026
+  1.645784467168007E+026
+  1.643088080902940E+026
+  1.640876350845923E+026
+  1.639309745742507E+026
+  1.638453147183139E+026
+  1.638220982029542E+026
+  1.638321495940994E+026
+  1.638206291185921E+026
+  1.637031890497826E+026
+  1.633640124870373E+026
+  1.626563713901830E+026
+  1.614062763283696E+026
+  1.594197237726844E+026
+  1.564939664479534E+026
+  1.524330754530052E+026
+  1.470677167806782E+026
+  1.402784030145086E+026
+  1.320204301051367E+026
+  1.223473301535075E+026
+  1.114282433483208E+026
+  9.955369947871559E+025
+  8.712469206124442E+025
+  7.462230930286216E+025
+  6.255961748442910E+025
+  5.142308471403677E+025
+  4.159816599426167E+025
+  3.326871354272879E+025
+  2.641097815804839E+025
+  2.088076019311929E+025
+  1.648582567076116E+025
+  1.302822699692664E+025
+  1.032608071741646E+025
+  8.222624770756985E+024
+  6.588076593513878E+024
+  5.317836613922940E+024
+  4.329147409915051E+024
+  3.557373057705060E+024
+  2.952482008265575E+024
+  2.475981545078889E+024
+  2.098370571463835E+024
+  1.797087275957839E+024
+  1.554889588063647E+024
+  1.358595474798324E+024
+  1.198113054776173E+024
+  1.065699268651135E+024
+  9.553962080216287E+023
+  8.626041442218924E+023
+  7.837590023020153E+023
+  7.160892835711404E+023
+  6.574333099443979E+023
+  6.061023131241601E+023
+  5.607785361372866E+023
+  5.204403945240355E+023
+  4.843091223406495E+023
+  4.518134978098245E+023
+  4.225715563168083E+023
+  3.963911146060187E+023
+  3.732950994206804E+023
+  3.535840484270696E+023
+  3.379581177154097E+023
+  3.277364330403008E+023
+  3.252352134333279E+023
+  3.344007813967120E+023
+  3.618422005215194E+023
+  4.184720104883217E+023
+  5.220386639330626E+023
+  7.009064597696121E+023
+  9.994736456777627E+023
+  1.485549384838217E+024
+  2.259719727499892E+024
+  3.466047685674198E+024
+  5.302151288582977E+024
+  8.024573229255455E+024
+  1.194232826678256E+025
+  1.738791631815173E+025
+  2.465203446644972E+025
+  3.388073691366621E+025
+  4.499906631648080E+025
+  5.770765905927443E+025
+  7.151267000881134E+025
+  8.578929134440793E+025
+  9.987023085357680E+025
+  1.131365063317748E+026
+  1.250900738192881E+026
+  1.353962045548905E+026
+  1.438936931922163E+026
+  1.505789097950721E+026
+  1.555735251705971E+026
+  1.590857314806038E+026
+  1.613724306772943E+026
+  1.627068072947700E+026
+  1.633530855852136E+026
+  1.635485749730084E+026
+  1.634922932536200E+026
+  1.633392265810203E+026
+  1.631993090899476E+026
+  1.631402492403376E+026
+  1.631932964115177E+026
+  1.633609471489300E+026
+  1.636255172629028E+026
+  1.639575388089697E+026
+  1.643231180935528E+026
+  1.646896823091272E+026
+  1.650298701666518E+026
+  1.653236118504891E+026
+  1.655586676827072E+026
+  1.657300533727102E+026
+  1.658388391095574E+026
+  1.658907129999410E+026
+  1.658945107984763E+026
+  1.658608427236264E+026
+  1.658009909830850E+026
+  1.657261352875770E+026
+  1.656468333598034E+026
+  1.773655989742045E+026
+  1.773749315869605E+026
+  1.773935842940688E+026
+  1.774216058482058E+026
+  1.774573685414173E+026
+  1.774970232858137E+026
+  1.775341416808588E+026
+  1.775596253573653E+026
+  1.775619329676085E+026
+  1.775277076915743E+026
+  1.774428168030084E+026
+  1.772937368574512E+026
+  1.770691754558627E+026
+  1.767617615051945E+026
+  1.763695641232188E+026
+  1.758971489357002E+026
+  1.753558628868854E+026
+  1.747630573220903E+026
+  1.741400220186989E+026
+  1.735085194786710E+026
+  1.728859781316013E+026
+  1.722796084280043E+026
+  1.716799178213909E+026
+  1.710542850293879E+026
+  1.703413809051359E+026
+  1.694472770023969E+026
+  1.682440679238408E+026
+  1.665717715759126E+026
+  1.642441857685150E+026
+  1.610592683382352E+026
+  1.568144189465705E+026
+  1.513266668919552E+026
+  1.444570803623343E+026
+  1.361376206960581E+026
+  1.263972099336335E+026
+  1.153822232770750E+026
+  1.033655292437625E+026
+  9.073841604767138E+025
+  7.798203310509947E+025
+  6.561949861302966E+025
+  5.415574153433103E+025
+  4.399900231181799E+025
+  3.535255436258364E+025
+  2.820431904591679E+025
+  2.241542470211089E+025
+  1.779481464557395E+025
+  1.414321720606111E+025
+  1.127607334076396E+025
+  9.033349156933939E+024
+  7.281862709672591E+024
+  5.913759232948710E+024
+  4.843312407043485E+024
+  4.003263852869160E+024
+  3.341316618368723E+024
+  2.817052157231351E+024
+  2.399351358032274E+024
+  2.064304757991946E+024
+  1.793554936590173E+024
+  1.573000948829081E+024
+  1.391796163311671E+024
+  1.241578773521234E+024
+  1.115884110780683E+024
+  1.009697547001194E+024
+  9.191153424346705E+023
+  8.410880063280869E+023
+  7.732266179490812E+023
+  7.136572439700649E+023
+  6.609122841664784E+023
+  6.138505154192706E+023
+  5.716000507420060E+023
+  5.335206917166417E+023
+  4.991846019071644E+023
+  4.683773574844239E+023
+  4.411259360591172E+023
+  4.177671042735375E+023
+  3.990804351950157E+023
+  3.865268792492266E+023
+  3.826590805905947E+023
+  3.918065229315103E+023
+  4.211898367788446E+023
+  4.826849203334398E+023
+  5.955341800249842E+023
+  7.903728309615909E+023
+  1.114965090634428E+024
+  1.641955795921042E+024
+  2.478615680643093E+024
+  3.777813788349123E+024
+  5.748065256309471E+024
+  8.658273382366869E+024
+  1.282967137829510E+025
+  1.860385247288535E+025
+  2.627285592327671E+025
+  3.597097228138064E+025
+  4.759706672810400E+025
+  6.081584464793831E+025
+  7.509441290090331E+025
+  8.977324220101013E+025
+  1.041613273808837E+026
+  1.176311556344830E+026
+  1.296922011474655E+026
+  1.400311180263476E+026
+  1.485177044036724E+026
+  1.551838738043439E+026
+  1.601865040096432E+026
+  1.637646419097109E+026
+  1.661988115822418E+026
+  1.677768524790760E+026
+  1.687679719309966E+026
+  1.694049725940738E+026
+  1.698738141309510E+026
+  1.703094463732948E+026
+  1.707968576975560E+026
+  1.713762868038636E+026
+  1.720514688626729E+026
+  1.727996682673146E+026
+  1.735821888669699E+026
+  1.743541388907171E+026
+  1.750724910188382E+026
+  1.757018677804820E+026
+  1.762178962954554E+026
+  1.766083224722695E+026
+  1.768723212556538E+026
+  1.770185942138278E+026
+  1.770628821967396E+026
+  1.770253835881328E+026
+  1.769283324325776E+026
+  1.767938901171778E+026
+  1.766425404753553E+026
+  1.764920492392364E+026
+  1.763569035224029E+026
+  1.291813767639911E+026
+  1.291850510825050E+026
+  1.291970693755133E+026
+  1.292180264449920E+026
+  1.292471889647214E+026
+  1.292820132137113E+026
+  1.293177940362347E+026
+  1.293475105677682E+026
+  1.293619140505655E+026
+  1.293499275238439E+026
+  1.292993754236740E+026
+  1.291980040126522E+026
+  1.290347212809285E+026
+  1.288009395919909E+026
+  1.284918485288049E+026
+  1.281074031989922E+026
+  1.276527945089082E+026
+  1.271381748251844E+026
+  1.265774516600292E+026
+  1.259860415977646E+026
+  1.253775972252019E+026
+  1.247598703469911E+026
+  1.241300345122699E+026
+  1.234699335093319E+026
+  1.227418268300402E+026
+  1.218852543618789E+026
+  1.208156413360573E+026
+  1.194252246383331E+026
+  1.175868192814206E+026
+  1.151608591815849E+026
+  1.120060047591378E+026
+  1.079933378701439E+026
+  1.030236711095374E+026
+  9.704672052850099E+025
+  9.007985319292255E+025
+  8.222300533630648E+025
+  7.366557407567800E+025
+  6.468121126860321E+025
+  5.560804691235783E+025
+  4.681506656566805E+025
+  3.865958245995030E+025
+  3.143137379347520E+025
+  2.527523175116572E+025
+  2.018307769672563E+025
+  1.605672334373033E+025
+  1.276082582404925E+025
+  1.015410496055499E+025
+  8.105632008638232E+024
+  6.501813235548404E+024
+  5.248060822743530E+024
+  4.267728327340442E+024
+  3.499855114035146E+024
+  2.896579743738892E+024
+  2.420659506353075E+024
+  2.043287809482995E+024
+  1.742267145998109E+024
+  1.500527631517286E+024
+  1.304951126155646E+024
+  1.145451541344328E+024
+  1.014262912290211E+024
+  9.053923486082924E+023
+  8.142019099183011E+023
+  7.370902584382333E+023
+  6.712509829584048E+023
+  6.144895807395449E+023
+  5.650852388082159E+023
+  5.216868722030973E+023
+  4.832354927984039E+023
+  4.489070637904516E+023
+  4.180717309845209E+023
+  3.902669309908253E+023
+  3.651836247187998E+023
+  3.426671443557595E+023
+  3.227373722269717E+023
+  3.056379198356504E+023
+  2.919317006207172E+023
+  2.826722547426919E+023
+  2.796982767588613E+023
+  2.861251758909606E+023
+  3.071440753390877E+023
+  3.512858728242878E+023
+  4.323623436976066E+023
+  5.723459413272009E+023
+  8.054678368297623E+023
+  1.183748014084142E+024
+  1.783935094945000E+024
+  2.715299575788258E+024
+  4.126734722636815E+024
+  6.210031955740454E+024
+  9.193987311831557E+024
+  1.332143787910142E+025
+  1.879927783464392E+025
+  2.572133739448145E+025
+  3.401339699684404E+025
+  4.343479583830798E+025
+  5.360519019027348E+025
+  6.405565005476459E+025
+  7.429667248623517E+025
+  8.388566077597180E+025
+  9.247875984444656E+025
+  9.985876352650148E+025
+  1.059386012520146E+026
+  1.107456956373586E+026
+  1.143950119582418E+026
+  1.170582844863543E+026
+  1.189349225389684E+026
+  1.202277203178279E+026
+  1.211245427902270E+026
+  1.217859389691129E+026
+  1.223380670086487E+026
+  1.228701548861479E+026
+  1.234357172709160E+026
+  1.240567430557301E+026
+  1.247300067718802E+026
+  1.254345728763352E+026
+  1.261395264544573E+026
+  1.268110403765836E+026
+  1.274180948550490E+026
+  1.279364603046801E+026
+  1.283508614849751E+026
+  1.286554927063534E+026
+  1.288532285481780E+026
+  1.289539800594655E+026
+  1.289726655082420E+026
+  1.289271581619746E+026
+  1.288363963894801E+026
+  1.287187652752362E+026
+  1.285908846235118E+026
+  1.284668442960262E+026
+  1.283578217586708E+026
+  1.327520827833886E+026
+  1.327623830577896E+026
+  1.327776799006228E+026
+  1.327973600014112E+026
+  1.328197037767285E+026
+  1.328415731005126E+026
+  1.328582370854787E+026
+  1.328633863450423E+026
+  1.328493627138381E+026
+  1.328076560545232E+026
+  1.327296677048268E+026
+  1.326076837793926E+026
+  1.324359728163939E+026
+  1.322118824197945E+026
+  1.319367610604743E+026
+  1.316164985808814E+026
+  1.312614718614682E+026
+  1.308857017197618E+026
+  1.305050783641337E+026
+  1.301346014548182E+026
+  1.297847052028180E+026
+  1.294568859241884E+026
+  1.291389974677361E+026
+  1.288007046552016E+026
+  1.283896662901236E+026
+  1.278290483008211E+026
+  1.270169497530325E+026
+  1.258282770820809E+026
+  1.241195415767671E+026
+  1.217369780430180E+026
+  1.185282462651160E+026
+  1.143576984413778E+026
+  1.091246770132133E+026
+  1.027834852076006E+026
+  9.536258289288832E+025
+  8.697940706317877E+025
+  7.784643164647940E+025
+  6.826429105581530E+025
+  5.859956060255933E+025
+  4.924820982824891E+025
+  4.059017115187372E+025
+  3.293056551539390E+025
+  2.641914350515829E+025
+  2.104350845614938E+025
+  1.669627674115771E+025
+  1.323138979958562E+025
+  1.049720299519399E+025
+  8.353660174155264E+024
+  6.679572466305081E+024
+  5.374265744814450E+024
+  4.356344152371289E+024
+  3.561212170731804E+024
+  2.938266738390208E+024
+  2.448220199545225E+024
+  2.060753787237432E+024
+  1.752559334437651E+024
+  1.505755557574521E+024
+  1.306634073036246E+024
+  1.144680906194502E+024
+  1.011820784352970E+024
+  9.018377628407535E+023
+  8.099333869295297E+023
+  7.323910324395929E+023
+  6.663216366698426E+023
+  6.094715429595901E+023
+  5.600776627425891E+023
+  5.167587236116515E+023
+  4.784341763390221E+023
+  4.442645585132419E+023
+  4.136089598578653E+023
+  3.859969347344175E+023
+  3.611140394755455E+023
+  3.388025029627549E+023
+  3.190818873855745E+023
+  3.021997219348982E+023
+  2.887300977732900E+023
+  2.797506345568039E+023
+  2.771470640235398E+023
+  2.841222378605465E+023
+  3.060247674278539E+023
+  3.516624023742662E+023
+  4.353233083875012E+023
+  5.797826591432736E+023
+  8.205945188654225E+023
+  1.211905887241899E+024
+  1.833789722833368E+024
+  2.800541363934792E+024
+  4.268348356523357E+024
+  6.439069654369254E+024
+  9.554508619788293E+024
+  1.387281140943887E+025
+  1.961636002534258E+025
+  2.689066684291155E+025
+  3.562549716523148E+025
+  4.557464340990557E+025
+  5.634209227159448E+025
+  6.743420151557879E+025
+  7.833051196602843E+025
+  8.855505204639172E+025
+  9.773212009862854E+025
+  1.056174652787160E+026
+  1.121039085711931E+026
+  1.172066070826636E+026
+  1.210359809536125E+026
+  1.237661217258080E+026
+  1.256045170382005E+026
+  1.267664635561809E+026
+  1.274554818795993E+026
+  1.278497402432170E+026
+  1.280938790610084E+026
+  1.282954561707263E+026
+  1.285252412304421E+026
+  1.288206008134749E+026
+  1.291911680310828E+026
+  1.296259067535036E+026
+  1.301006315165910E+026
+  1.305850973750524E+026
+  1.310489537025322E+026
+  1.314661288065325E+026
+  1.318175061224901E+026
+  1.320920020211655E+026
+  1.322863367800310E+026
+  1.324039085987957E+026
+  1.324532139699712E+026
+  1.324461632294396E+026
+  1.323964716371417E+026
+  1.323182367970616E+026
+  1.322248426037086E+026
+  1.321282348063753E+026
+  1.320385065676577E+026
+  2.616121412499631E+026
+  2.616275344174427E+026
+  2.616561740401012E+026
+  2.616978446213790E+026
+  2.617498463706822E+026
+  2.618062527666334E+026
+  2.618574780828490E+026
+  2.618902744420074E+026
+  2.618882288182410E+026
+  2.618328751606009E+026
+  2.617054267078410E+026
+  2.614890100954199E+026
+  2.611712129891023E+026
+  2.607466660179773E+026
+  2.602192717412297E+026
+  2.596036180564093E+026
+  2.589250932362329E+026
+  2.582182596568948E+026
+  2.575231544790272E+026
+  2.568793802456140E+026
+  2.563181223924485E+026
+  2.558525555884684E+026
+  2.554674288718415E+026
+  2.551088961381437E+026
+  2.546758379702436E+026
+  2.540139815974020E+026
+  2.529140796062444E+026
+  2.511152939617817E+026
+  2.483147903043957E+026
+  2.441843777882343E+026
+  2.383947506968045E+026
+  2.306473302074913E+026
+  2.207126582529404E+026
+  2.084726132990427E+026
+  1.939614517033516E+026
+  1.773982325050187E+026
+  1.592014481679437E+026
+  1.399769704253886E+026
+  1.204739437866320E+026
+  1.015102886954405E+026
+  8.387872703563981E+025
+  6.822399009816621E+025
+  5.487348288685075E+025
+  4.381951860653835E+025
+  3.485567460284359E+025
+  2.769234709363674E+025
+  2.202521914451475E+025
+  1.757123396936271E+025
+  1.408422255330785E+025
+  1.135885662204654E+025
+  9.228548943387114E+024
+  7.560684762830011E+024
+  6.251078248022173E+024
+  5.218623518436560E+024
+  4.400570801558554E+024
+  3.748562506177110E+024
+  3.225413437789923E+024
+  2.802551896302179E+024
+  2.458016389430593E+024
+  2.174903844902539E+024
+  1.940176638317710E+024
+  1.743750489749080E+024
+  1.577799895212588E+024
+  1.436230806178834E+024
+  1.314281303724120E+024
+  1.208220038310902E+024
+  1.115119422206813E+024
+  1.032686263472809E+024
+  9.591370729951944E+023
+  8.931090669691567E+023
+  8.336013984498726E+023
+  7.799449601175079E+023
+  7.318039704013561E+023
+  6.892195697867428E+023
+  6.527163971901859E+023
+  6.235098804483896E+023
+  6.038779414697213E+023
+  5.978000912251521E+023
+  6.120241716129320E+023
+  6.578004600217432E+023
+  7.536254641750088E+023
+  9.294559050448299E+023
+  1.232961354299621E+024
+  1.738422684974297E+024
+  2.558739856528551E+024
+  3.860497170732650E+024
+  5.880868925026094E+024
+  8.942989804647917E+024
+  1.346295281058164E+025
+  1.993678315057653E+025
+  2.889018003721066E+025
+  4.076940453488321E+025
+  5.577313216252783E+025
+  7.373238422410091E+025
+  9.411359117282613E+025
+  1.160768356666363E+026
+  1.385876191694711E+026
+  1.605659470215974E+026
+  1.810345909758569E+026
+  1.992333907178475E+026
+  2.146813130555221E+026
+  2.271850263361017E+026
+  2.368054441554475E+026
+  2.437992815632055E+026
+  2.485519711333727E+026
+  2.515139654999943E+026
+  2.531472496034501E+026
+  2.538846165885127E+026
+  2.541016036898958E+026
+  2.540997750115654E+026
+  2.540997302227110E+026
+  2.542422553130128E+026
+  2.545960483768506E+026
+  2.551703248509687E+026
+  2.559303989218124E+026
+  2.568142111932225E+026
+  2.577478746819242E+026
+  2.586586938588437E+026
+  2.594847027159671E+026
+  2.601804133784206E+026
+  2.607190228168300E+026
+  2.610917318186245E+026
+  2.613050855724336E+026
+  2.613773058713889E+026
+  2.613343802999188E+026
+  2.612063255252988E+026
+  2.610238899369260E+026
+  2.608160006681330E+026
+  2.606080602671398E+026
+  2.604209805487877E+026
+  2.114525598402171E+026
+  2.114651080729336E+026
+  2.114874436367020E+026
+  2.115192223372296E+026
+  2.115581844481309E+026
+  2.115995699375605E+026
+  2.116357660567113E+026
+  2.116562778872703E+026
+  2.116480746541036E+026
+  2.115964037320914E+026
+  2.114860789666514E+026
+  2.113031546160790E+026
+  2.110368446225732E+026
+  2.106814780583113E+026
+  2.102381980845365E+026
+  2.097160530975910E+026
+  2.091321121704549E+026
+  2.085102656724661E+026
+  2.078784546396687E+026
+  2.072642190008768E+026
+  2.066886626582119E+026
+  2.061591814758970E+026
+  2.056615523180295E+026
+  2.051521959058721E+026
+  2.045515684899514E+026
+  2.037396903357577E+026
+  2.025547908775250E+026
+  2.007959696233473E+026
+  1.982306674343314E+026
+  1.946076116153607E+026
+  1.896756752412521E+026
+  1.832086442181562E+026
+  1.750350540010389E+026
+  1.650709323832750E+026
+  1.533515126309835E+026
+  1.400560844420320E+026
+  1.255188269655293E+026
+  1.102187391545838E+026
+  9.474458344477376E+025
+  7.973627767304790E+025
+  6.581138322899690E+025
+  5.346937350123768E+025
+  4.295984346120072E+025
+  3.426986217652137E+025
+  2.723172273200616E+025
+  2.161379593840578E+025
+  1.717413884228078E+025
+  1.368849265674600E+025
+  1.096230133945601E+025
+  8.833598942289591E+024
+  7.171191331201788E+024
+  5.870786868171081E+024
+  4.850555538785859E+024
+  4.046869274006910E+024
+  3.410553843085992E+024
+  2.903751960430867E+024
+  2.497380540952564E+024
+  2.169113352035594E+024
+  1.901804052830354E+024
+  1.682266271751888E+024
+  1.500336891395575E+024
+  1.348160656742454E+024
+  1.219645952245319E+024
+  1.110052007615790E+024
+  1.015676565170588E+024
+  9.336201961696831E+023
+  8.616091611393818E+023
+  7.978632103658989E+023
+  7.409983000923304E+023
+  6.899571807744588E+023
+  6.439635675358301E+023
+  6.024985820364912E+023
+  5.653019570108667E+023
+  5.324059663524462E+023
+  5.042184228842412E+023
+  4.816841668557307E+023
+  4.665747441863858E+023
+  4.619866714555851E+023
+  4.731735159315561E+023
+  5.088993162322606E+023
+  5.835815229878673E+023
+  7.205849136049974E+023
+  9.571139756673506E+023
+  1.351184206046439E+024
+  1.991044497424629E+024
+  3.007025035196418E+024
+  4.584879342032934E+024
+  6.978003608821173E+024
+  1.051320310853159E+025
+  1.558088552119586E+025
+  2.259615921289719E+025
+  3.191376317687826E+025
+  4.369640652948192E+025
+  5.782012762987590E+025
+  7.387559790193311E+025
+  9.121244595159624E+025
+  1.090255708532845E+026
+  1.264710532193958E+026
+  1.427819791622522E+026
+  1.573582303744208E+026
+  1.698157756877960E+026
+  1.799942704913010E+026
+  1.879317275775453E+026
+  1.938194708405568E+026
+  1.979501238161674E+026
+  2.006680685653784E+026
+  2.023277697283525E+026
+  2.032620182025684E+026
+  2.037600506662107E+026
+  2.040545301242159E+026
+  2.043161111430247E+026
+  2.046543316020661E+026
+  2.051235861020326E+026
+  2.057328446658941E+026
+  2.064576316893171E+026
+  2.072526949248348E+026
+  2.080638841195858E+026
+  2.088380620950713E+026
+  2.095303304598205E+026
+  2.101083481097895E+026
+  2.105539437196542E+026
+  2.108625310198206E+026
+  2.110410294909930E+026
+  2.111050385890569E+026
+  2.110758514562087E+026
+  2.109776193083576E+026
+  2.108348618543765E+026
+  2.106705566909034E+026
+  2.105048830654213E+026
+  2.103545225548477E+026
+  2.328155455066106E+026
+  2.328254247212634E+026
+  2.328482992423890E+026
+  2.328845411889604E+026
+  2.329322514392370E+026
+  2.329865058961392E+026
+  2.330388582401287E+026
+  2.330772098538172E+026
+  2.330861170417966E+026
+  2.330476487060957E+026
+  2.329428126979414E+026
+  2.327534619171742E+026
+  2.324645309941889E+026
+  2.320663739976175E+026
+  2.315568759365575E+026
+  2.309429395375824E+026
+  2.302409233771264E+026
+  2.294756323297137E+026
+  2.286775470372029E+026
+  2.278781380144832E+026
+  2.271033406489252E+026
+  2.263655471536421E+026
+  2.256547605135309E+026
+  2.249298065116515E+026
+  2.241106720448215E+026
+  2.230731095730675E+026
+  2.216466249146118E+026
+  2.196168787408603E+026
+  2.167334135094373E+026
+  2.127234664810683E+026
+  2.073123781420169E+026
+  2.002506120533685E+026
+  1.913464912580863E+026
+  1.805023049243124E+026
+  1.677494920226544E+026
+  1.532765116657786E+026
+  1.374415227761738E+026
+  1.207622408976264E+026
+  1.038783573473310E+026
+  8.748792723396977E+025
+  7.226706054334444E+025
+  5.876477256090322E+025
+  4.725764966830845E+025
+  3.773488479295689E+025
+  3.001574084751406E+025
+  2.384887443821074E+025
+  1.897104095738518E+025
+  1.513783437857280E+025
+  1.213695550909238E+025
+  9.791479382253796E+024
+  7.957955192106217E+024
+  6.522241731791488E+024
+  5.394699058758878E+024
+  4.505563264703959E+024
+  3.800869261799499E+024
+  3.239033682583988E+024
+  2.788081739376823E+024
+  2.423444759685741E+024
+  2.126236817303081E+024
+  1.881920286254985E+024
+  1.679280247272857E+024
+  1.509640516881427E+024
+  1.366266736037246E+024
+  1.243913232229377E+024
+  1.138479887957335E+024
+  1.046753024363596E+024
+  9.662105207151839E+023
+  8.948762953716073E+023
+  8.312131792526530E+023
+  7.740464708727982E+023
+  7.225134797558829E+023
+  6.760376398071468E+023
+  6.343299642904220E+023
+  5.974266523908844E+023
+  5.657809077970865E+023
+  5.404414665172154E+023
+  5.233726931184338E+023
+  5.180049259407736E+023
+  5.301530769309587E+023
+  5.695099095679128E+023
+  6.520087725473607E+023
+  8.034523353886476E+023
+  1.064896923658421E+024
+  1.500315630673300E+024
+  2.206940354879628E+024
+  3.328240513354503E+024
+  5.068495385828833E+024
+  7.706062301347646E+024
+  1.159946716754994E+025
+  1.717630197245986E+025
+  2.489012611191300E+025
+  3.512674706729420E+025
+  4.805967677670255E+025
+  6.354693874427699E+025
+  8.113378469960138E+025
+  1.001027044370216E+026
+  1.195692819331910E+026
+  1.386099962141169E+026
+  1.563892267125890E+026
+  1.722570492091695E+026
+  1.858021789195208E+026
+  1.968590410067078E+026
+  2.054788322181889E+026
+  2.118792183869814E+026
+  2.163867056451340E+026
+  2.193820131364888E+026
+  2.212543112397969E+026
+  2.223665249612435E+026
+  2.230316147424238E+026
+  2.234986955370132E+026
+  2.239475732040311E+026
+  2.244902922004588E+026
+  2.251782919541182E+026
+  2.260136577593292E+026
+  2.269627837769069E+026
+  2.279706766729220E+026
+  2.289742410501971E+026
+  2.299132410935014E+026
+  2.307381591098966E+026
+  2.314147344821980E+026
+  2.319254423601382E+026
+  2.322685125179657E+026
+  2.324552981868052E+026
+  2.325068465367430E+026
+  2.324503344454407E+026
+  2.323157224754535E+026
+  2.321328466884638E+026
+  2.319292057049885E+026
+  2.317285251294502E+026
+  2.315499900291786E+026
+  2.398332668055409E+026
+  2.398520461469859E+026
+  2.398803065244434E+026
+  2.399169562501116E+026
+  2.399588227448581E+026
+  2.400001023992738E+026
+  2.400320927253281E+026
+  2.400433032312181E+026
+  2.400199952255829E+026
+  2.399472419591477E+026
+  2.398105009923356E+026
+  2.395975803611846E+026
+  2.393008203758797E+026
+  2.389192351525487E+026
+  2.384602659142492E+026
+  2.379407370777463E+026
+  2.373865960428069E+026
+  2.368310619802303E+026
+  2.363109166945161E+026
+  2.358608513748246E+026
+  2.355060314302218E+026
+  2.352533307525516E+026
+  2.350819732609432E+026
+  2.349345552512902E+026
+  2.347095680927462E+026
+  2.342565811094482E+026
+  2.333751928313385E+026
+  2.318187524317618E+026
+  2.293037281835516E+026
+  2.255254523883538E+026
+  2.201807234042380E+026
+  2.129972356487079E+026
+  2.037688443966243E+026
+  1.923941226254403E+026
+  1.789135879620116E+026
+  1.635387504601492E+026
+  1.466645810311214E+026
+  1.288573282191292E+026
+  1.108129166614267E+026
+  9.328766066805758E+025
+  7.701150863583495E+025
+  6.257537372442181E+025
+  5.027645382629722E+025
+  4.010326918948897E+025
+  3.186191137646028E+025
+  2.528267065342875E+025
+  2.008308286355380E+025
+  1.600094913305796E+025
+  1.280858581455086E+025
+  1.031632656457174E+025
+  8.370470204120151E+024
+  6.848795301262460E+024
+  5.655384492138592E+024
+  4.715647909174718E+024
+  3.971938047658000E+024
+  3.379876291243472E+024
+  2.905373277080797E+024
+  2.522263838327908E+024
+  2.210457642787788E+024
+  1.954508238455130E+024
+  1.742514160135550E+024
+  1.565279632594043E+024
+  1.415676090321890E+024
+  1.288157911068558E+024
+  1.178396032696833E+024
+  1.083001508000857E+024
+  9.993177456594670E+023
+  9.252654668476930E+023
+  8.592286081852947E+023
+  7.999729005489711E+023
+  7.465920842223579E+023
+  6.984802129464254E+023
+  6.553329517939508E+023
+  6.171871768677093E+023
+  5.845179872441756E+023
+  5.584275410817093E+023
+  5.409838480393489E+023
+  5.358035700251527E+023
+  5.490253542891317E+023
+  5.908931623404438E+023
+  6.782635270932296E+023
+  8.384599739901690E+023
+  1.114998737566059E+024
+  1.575748661103810E+024
+  2.323961431252386E+024
+  3.512142157131517E+024
+  5.357668267019997E+024
+  8.157087936631661E+024
+  1.229284679998402E+025
+  1.822174727039718E+025
+  2.642928663684102E+025
+  3.732986983289291E+025
+  5.111240685472072E+025
+  6.762918450988455E+025
+  8.639709626340089E+025
+  1.066494551480402E+026
+  1.274372566623763E+026
+  1.477653805443430E+026
+  1.667288969491126E+026
+  1.836189627990144E+026
+  1.979812331042448E+026
+  2.096252899380599E+026
+  2.185953080811716E+026
+  2.251174333575988E+026
+  2.295388368797273E+026
+  2.322695263804436E+026
+  2.337332525535500E+026
+  2.343299247707336E+026
+  2.344094900990562E+026
+  2.342561002081200E+026
+  2.340811005457002E+026
+  2.340234154846196E+026
+  2.341559318402500E+026
+  2.344963787547844E+026
+  2.350210179978931E+026
+  2.356793380291320E+026
+  2.364080228844058E+026
+  2.371427944266217E+026
+  2.378272433979139E+026
+  2.384183353009617E+026
+  2.388887735685116E+026
+  2.392267711213897E+026
+  2.394340193879893E+026
+  2.395227089681921E+026
+  2.395122799781279E+026
+  2.394262709313753E+026
+  2.392895029153757E+026
+  2.391258767783654E+026
+  2.389568802826309E+026
+  2.388007042118539E+026
+  2.922070285829527E+026
+  2.922234086482458E+026
+  2.922574289569735E+026
+  2.923094196558264E+026
+  2.923766573942628E+026
+  2.924524784851487E+026
+  2.925257886637051E+026
+  2.925811211513100E+026
+  2.925993348007712E+026
+  2.925590858739914E+026
+  2.924390735864809E+026
+  2.922209090128761E+026
+  2.918923650101055E+026
+  2.914506496277985E+026
+  2.909052134168425E+026
+  2.902795098646025E+026
+  2.896111052411300E+026
+  2.889495872857009E+026
+  2.883518654902248E+026
+  2.878747028461579E+026
+  2.875646628595304E+026
+  2.874460598010036E+026
+  2.875079043115691E+026
+  2.876911721883501E+026
+  2.878779345313594E+026
+  2.878839465138995E+026
+  2.874562162643846E+026
+  2.862769165972802E+026
+  2.839748160123190E+026
+  2.801451983267553E+026
+  2.743789208340990E+026
+  2.663006265363365E+026
+  2.556149184739901E+026
+  2.421573321355244E+026
+  2.259442469630980E+026
+  2.072129237985158E+026
+  1.864406934727898E+026
+  1.643325258008387E+026
+  1.417702649358117E+026
+  1.197251106670136E+026
+  9.914598521356488E+025
+  8.081269708305857E+025
+  6.513273857271547E+025
+  5.211656805868048E+025
+  4.153655240352249E+025
+  3.306297032754667E+025
+  2.634522884441400E+025
+  2.105501066332536E+025
+  1.690542754415848E+025
+  1.365629818926019E+025
+  1.111215202326850E+025
+  9.116957870828570E+024
+  7.547833432518737E+024
+  6.308903724878432E+024
+  5.325838217299650E+024
+  4.541243263543193E+024
+  3.910904498673857E+024
+  3.400790562474552E+024
+  2.984700647289113E+024
+  2.642437574329174E+024
+  2.358400056217844E+024
+  2.120504120487434E+024
+  1.919360181604901E+024
+  1.747647158370302E+024
+  1.599637738207729E+024
+  1.470839341098953E+024
+  1.357723730904396E+024
+  1.257524880451629E+024
+  1.168090020481726E+024
+  1.087773263562133E+024
+  1.015365346604011E+024
+  9.500575629909311E+023
+  8.914437662106925E+023
+  8.395727111567062E+023
+  7.950758419773807E+023
+  7.594156605436401E+023
+  7.353307847492601E+023
+  7.276005674602527E+023
+  7.443201776314533E+023
+  7.989710947670049E+023
+  9.136928270959477E+023
+  1.124299708191928E+024
+  1.487710378520061E+024
+  2.092495762364439E+024
+  3.073068776715067E+024
+  4.627410740466957E+024
+  7.036827993497506E+024
+  1.068365776260213E+025
+  1.605874410002222E+025
+  2.374485166651261E+025
+  3.435574014669972E+025
+  4.840565967793430E+025
+  6.610986223125999E+025
+  8.724398200093678E+025
+  1.111508725678343E+026
+  1.368134308326441E+026
+  1.629906655858992E+026
+  1.883969227737778E+026
+  2.118784998038743E+026
+  2.325483409163484E+026
+  2.498575722592942E+026
+  2.636030524436663E+026
+  2.738851273726390E+026
+  2.810361975912585E+026
+  2.855396309614536E+026
+  2.879532335938205E+026
+  2.888452220524383E+026
+  2.887455681267876E+026
+  2.881124845121853E+026
+  2.873124533489905E+026
+  2.866118914783438E+026
+  2.861786197116995E+026
+  2.860913214058684E+026
+  2.863549962708832E+026
+  2.869201295922536E+026
+  2.877031087768807E+026
+  2.886055144668109E+026
+  2.895303605257071E+026
+  2.903940716061841E+026
+  2.911337816128264E+026
+  2.917102315227577E+026
+  2.921070575497459E+026
+  2.923275796306838E+026
+  2.923902770170206E+026
+  2.923238989817431E+026
+  2.921627495387476E+026
+  2.919424953054664E+026
+  2.916968752041884E+026
+  2.914554566767815E+026
+  2.912423305281735E+026
+  2.965549357940704E+020
+  2.965090400687159E+020
+  2.965219616108335E+020
+  2.966068975147550E+020
+  2.967707860842756E+020
+  2.970115577593250E+020
+  2.973158985165552E+020
+  2.976578855970059E+020
+  2.979988046843550E+020
+  2.982884824934922E+020
+  2.984682950186918E+020
+  2.984758019774511E+020
+  2.982507853122973E+020
+  2.977422533112755E+020
+  2.969157250630038E+020
+  2.957598988572698E+020
+  2.942916714192360E+020
+  2.925584371012351E+020
+  2.906366932503286E+020
+  2.886262460241859E+020
+  2.866397591852948E+020
+  2.847879825870158E+020
+  2.831616597139611E+020
+  2.818117386412842E+020
+  2.807299894123386E+020
+  2.798323846958534E+020
+  2.789476100814117E+020
+  2.778128821664801E+020
+  2.760789523542715E+020
+  2.733258252907298E+020
+  2.690902906464335E+020
+  2.629056831272141E+020
+  2.543530623894409E+020
+  2.431209563468253E+020
+  2.290678419639389E+020
+  2.122779896634551E+020
+  1.930982106692688E+020
+  1.721421885301861E+020
+  1.502523638393129E+020
+  1.284177028150025E+020
+  1.076580302057287E+020
+  8.886105042314791E+019
+  7.254636154598892E+019
+  5.881475054470323E+019
+  4.750312692593521E+019
+  3.832411944899682E+019
+  3.095221386535637E+019
+  2.507167398920132E+019
+  2.039970399482864E+019
+  1.669481973100344E+019
+  1.375709924015432E+019
+  1.142446260830156E+019
+  9.567400555843103E+018
+  8.083465172385758E+018
+  6.892169816941211E+018
+  5.930564035348476E+018
+  5.149543029836952E+018
+  4.510848352701262E+018
+  3.984672905606965E+018
+  3.547771953159607E+018
+  3.181986447429232E+018
+  2.873096250500548E+018
+  2.609933994503057E+018
+  2.383703053091598E+018
+  2.187454464210357E+018
+  2.015687325490197E+018
+  1.864045175648450E+018
+  1.729087357876546E+018
+  1.608119658798128E+018
+  1.499073081333574E+018
+  1.400424023912906E+018
+  1.311154156859211E+018
+  1.230754937296462E+018
+  1.159291455842079E+018
+  1.097555300377075E+018
+  1.047359404461484E+018
+  1.012063538557918E+018
+  9.974722770269288E+017
+  1.013323263872332E+018
+  1.075686115618583E+018
+  1.210719404597302E+018
+  1.460369670962573E+018
+  1.890701042909589E+018
+  2.603530406097378E+018
+  3.751755858202445E+018
+  5.557959690539110E+018
+  8.334203450158135E+018
+  1.249803314715351E+019
+  1.857531088440460E+019
+  2.717473519848503E+019
+  3.891286534222209E+019
+  5.426478458154236E+019
+  7.334665043139554E+019
+  9.577699789812569E+019
+  1.207104376735196E+020
+  1.469452353465849E+020
+  1.730953680326558E+020
+  1.977988689997372E+020
+  2.199092376795791E+020
+  2.386282190119399E+020
+  2.535613668856543E+020
+  2.647012896325017E+020
+  2.723589864250395E+020
+  2.770686784824691E+020
+  2.794882869069597E+020
+  2.803104610455456E+020
+  2.801916086933346E+020
+  2.797008832149073E+020
+  2.792880472572518E+020
+  2.792680009085916E+020
+  2.798196141383404E+020
+  2.809965568239263E+020
+  2.827476570407308E+020
+  2.849438975542935E+020
+  2.874086972354905E+020
+  2.899479206554390E+020
+  2.923763398138937E+020
+  2.945380735553802E+020
+  2.963196824262889E+020
+  2.976558055391495E+020
+  2.985282237923889E+020
+  2.989598965240988E+020
+  2.990058432763644E+020
+  2.987427147846694E+020
+  2.982584869331746E+020
+  2.976431177674056E+020
+  2.969806812157535E+020
+  2.963434496219860E+020
+  2.957881156149837E+020
+  2.953540435325389E+020
+  4.658815786223869E+025
+  4.659039067280106E+025
+  4.659540603346488E+025
+  4.660329323647144E+025
+  4.661366977385569E+025
+  4.662552982124290E+025
+  4.663714700092864E+025
+  4.664605459831060E+025
+  4.664911797846507E+025
+  4.664272173658063E+025
+  4.662307437511860E+025
+  4.658661140137551E+025
+  4.653046502315900E+025
+  4.645295168864254E+025
+  4.635400860217288E+025
+  4.623549594708408E+025
+  4.610127669343480E+025
+  4.595699149400804E+025
+  4.580946454011545E+025
+  4.566570984703284E+025
+  4.553155579771760E+025
+  4.540996404067841E+025
+  4.529917861352497E+025
+  4.519089263809797E+025
+  4.506865462088176E+025
+  4.490674990508371E+025
+  4.466978662309108E+025
+  4.431319611986059E+025
+  4.378483241177250E+025
+  4.302782412274071E+025
+  4.198478178601416E+025
+  4.060336408609251E+025
+  3.884302189764235E+025
+  3.668244289244682E+025
+  3.412682051505441E+025
+  3.121363915793027E+025
+  2.801535773053901E+025
+  2.463741731633706E+025
+  2.121061095158715E+025
+  1.787808522375135E+025
+  1.477887179747435E+025
+  1.202628360050760E+025
+  9.678029521995575E+024
+  7.732963653173969E+024
+  6.154998807316468E+024
+  4.893396454054830E+024
+  3.894793729050445E+024
+  3.109527218451085E+024
+  2.494384886972349E+024
+  2.013307534014727E+024
+  1.637026358681232E+024
+  1.342230602622259E+024
+  1.110597855062364E+024
+  9.278574299016209E+023
+  7.829626250618792E+023
+  6.673957432544589E+023
+  5.746032887390530E+023
+  4.995468698419765E+023
+  4.383514391127328E+023
+  3.880326756679019E+023
+  3.462872975951149E+023
+  3.113326602474022E+023
+  2.817845472262273E+023
+  2.565643411032449E+023
+  2.348286911254836E+023
+  2.159163751367990E+023
+  1.993083170664877E+023
+  1.845977206280800E+023
+  1.714680763531579E+023
+  1.596774644161087E+023
+  1.490481930526721E+023
+  1.394614835606684E+023
+  1.308577727721016E+023
+  1.232444436924194E+023
+  1.167146942013852E+023
+  1.114842167234976E+023
+  1.079569491873462E+023
+  1.068380915583980E+023
+  1.093226864990792E+023
+  1.174020624828619E+023
+  1.343484873406152E+023
+  1.654591132154637E+023
+  2.191591315080101E+023
+  3.085705440741015E+023
+  4.536271436387565E+023
+  6.837248344701421E+023
+  1.040690477593391E+024
+  1.581471873172795E+024
+  2.379342455735433E+024
+  3.521568966741031E+024
+  5.100517313903217E+024
+  7.194403312790695E+024
+  9.837687740244922E+024
+  1.300003043890730E+025
+  1.658700275491543E+025
+  2.045051522260629E+025
+  2.440862658533528E+025
+  2.827184419941720E+025
+  3.186918373533867E+025
+  3.506816707359272E+025
+  3.778557433732950E+025
+  3.998877154666985E+025
+  4.168966279278382E+025
+  4.293428553998444E+025
+  4.379093161772898E+025
+  4.433890701842015E+025
+  4.465912425222601E+025
+  4.482696994113013E+025
+  4.490742439739365E+025
+  4.495219829584206E+025
+  4.499859706275233E+025
+  4.506982849817005E+025
+  4.517647000496912E+025
+  4.531878763089782E+025
+  4.548956238271881E+025
+  4.567705851760721E+025
+  4.586778962215358E+025
+  4.604880983933440E+025
+  4.620936588259518E+025
+  4.634186209276486E+025
+  4.644218966633379E+025
+  4.650954212597764E+025
+  4.654588302790089E+025
+  4.655524184186923E+025
+  4.654297648211819E+025
+  4.651507703075821E+025
+  4.647755680104655E+025
+  4.643598437368851E+025
+  4.639517505053570E+025
+  4.635902130568326E+025
+  2.760268055730254E+026
+  2.760371435276085E+026
+  2.760646575330315E+026
+  2.761102240482882E+026
+  2.761718681379129E+026
+  2.762438171320208E+026
+  2.763158795952692E+026
+  2.763732912882996E+026
+  2.763971198389938E+026
+  2.763653674404686E+026
+  2.762547937396556E+026
+  2.760433481658060E+026
+  2.757130228192207E+026
+  2.752528348774676E+026
+  2.746615254338518E+026
+  2.739494724655407E+026
+  2.731392834915756E+026
+  2.722645648043863E+026
+  2.713664724330896E+026
+  2.704878501534619E+026
+  2.696650495790048E+026
+  2.689178780714147E+026
+  2.682384815631223E+026
+  2.675802820458121E+026
+  2.668483017392515E+026
+  2.658922906554179E+026
+  2.645040395044960E+026
+  2.624201443669642E+026
+  2.593313362326373E+026
+  2.548993003376436E+026
+  2.487816075044771E+026
+  2.406647898367745E+026
+  2.303044982366163E+026
+  2.175699214998736E+026
+  2.024872711401591E+026
+  1.852745544005490E+026
+  1.663579937139978E+026
+  1.463606790722267E+026
+  1.260576505239426E+026
+  1.062989173574527E+026
+  8.791162004077985E+025
+  7.157138208357744E+025
+  5.762406187441525E+025
+  4.606570174343950E+025
+  3.668426350562078E+025
+  2.918010150371056E+025
+  2.323746250875373E+025
+  1.856214877106698E+025
+  1.489796806878369E+025
+  1.203099119751370E+025
+  9.787471726054536E+024
+  8.028956369204825E+024
+  6.646564122634912E+024
+  5.555449627473810E+024
+  4.689904124866773E+024
+  3.999238413832922E+024
+  3.444434485519722E+024
+  2.995481400163857E+024
+  2.629287386359050E+024
+  2.328060832456656E+024
+  2.078064377388467E+024
+  1.868661390546216E+024
+  1.691589163336608E+024
+  1.540406596314498E+024
+  1.410075574219680E+024
+  1.296644569168702E+024
+  1.197010498381119E+024
+  1.108740786043013E+024
+  1.029942304350893E+024
+  9.591678201004014E+023
+  8.953542437720054E+023
+  8.377909735898373E+023
+  7.861217510881676E+023
+  7.403908370800333E+023
+  7.011556433248166E+023
+  6.697056242304911E+023
+  6.484545796826962E+023
+  6.416148346130752E+023
+  6.563219251126704E+023
+  7.044617076277574E+023
+  8.055590563183677E+023
+  9.912102600156581E+023
+  1.311652433850505E+024
+  1.845100271210026E+024
+  2.710324348074260E+024
+  4.082397518511527E+024
+  6.210306673484228E+024
+  9.432860074049545E+024
+  1.418569857826301E+025
+  2.098720129250808E+025
+  3.038531528964033E+025
+  4.284281805586920E+025
+  5.856117277566525E+025
+  7.735572410507849E+025
+  9.866068149361660E+025
+  1.215919748492987E+026
+  1.450658126057666E+026
+  1.679555618918416E+026
+  1.892467952416361E+026
+  2.081558973324476E+026
+  2.241934149502673E+026
+  2.371712537998346E+026
+  2.471660561090170E+026
+  2.544568048729596E+026
+  2.594538299020459E+026
+  2.626317704031491E+026
+  2.644735611671803E+026
+  2.654280417666673E+026
+  2.658810259097773E+026
+  2.661384197127888E+026
+  2.664196601189981E+026
+  2.668597744611383E+026
+  2.675183629341924E+026
+  2.683936557422794E+026
+  2.694395735474336E+026
+  2.705835959364196E+026
+  2.717433719535658E+026
+  2.728404388595472E+026
+  2.738100670996475E+026
+  2.746069519117920E+026
+  2.752070697647324E+026
+  2.756064473138292E+026
+  2.758178518950434E+026
+  2.758664637363077E+026
+  2.757853603538461E+026
+  2.756112648000280E+026
+  2.753808415416744E+026
+  2.751278611999242E+026
+  2.748813424782581E+026
+  2.746645485876008E+026
+  3.667337342132256E+025
+  3.667331085998904E+025
+  3.667662519585055E+025
+  3.668375998962821E+025
+  3.669469530735939E+025
+  3.670877495278480E+025
+  3.672457992878761E+025
+  3.673987238519088E+025
+  3.675162794187767E+025
+  3.675617987257143E+025
+  3.674948192838298E+025
+  3.672747760192500E+025
+  3.668655124198766E+025
+  3.662402016015360E+025
+  3.653860771757715E+025
+  3.643082258016420E+025
+  3.630316224441629E+025
+  3.616006079361779E+025
+  3.600751405202791E+025
+  3.585234245763477E+025
+  3.570109315585766E+025
+  3.555863425846018E+025
+  3.542654878351341E+025
+  3.530148466427926E+025
+  3.517365220253236E+025
+  3.502567648348663E+025
+  3.483200970398131E+025
+  3.455909211885516E+025
+  3.416642692586601E+025
+  3.360870579597119E+025
+  3.283907884971655E+025
+  3.181358345931691E+025
+  3.049660063342616E+025
+  2.886697265736789E+025
+  2.692409369334017E+025
+  2.469292762439250E+025
+  2.222663647030876E+025
+  1.960550557908252E+025
+  1.693131091765021E+025
+  1.431724492173817E+025
+  1.187483674172376E+025
+  9.696476079684416E+024
+  7.830933129455896E+024
+  6.280029638513018E+024
+  5.017328163333251E+024
+  4.004198902643473E+024
+  3.199427783572492E+024
+  2.564334301383332E+024
+  2.065056822703872E+024
+  1.673197440566985E+024
+  1.365604476404156E+024
+  1.123764399117510E+024
+  9.330697047320426E+023
+  7.821011803845996E+023
+  6.619877178857618E+023
+  5.658651456425665E+023
+  4.884339947590452E+023
+  4.256061774573585E+023
+  3.742270466672308E+023
+  3.318591234436104E+023
+  2.966151178754568E+023
+  2.670297385044877E+023
+  2.419616913443302E+023
+  2.205189982481588E+023
+  2.020022426681859E+023
+  1.858615706776348E+023
+  1.716642574600208E+023
+  1.590704302927554E+023
+  1.478151648280763E+023
+  1.376956979401852E+023
+  1.285629937758141E+023
+  1.203174421013509E+023
+  1.129091691854206E+023
+  1.063444569726316E+023
+  1.007013235182522E+023
+  9.615974428665115E+022
+  9.305574122723628E+022
+  9.197420958079544E+022
+  9.390353455514699E+022
+  1.004863110287720E+023
+  1.144148601593473E+023
+  1.400364978358589E+023
+  1.842477601497987E+023
+  2.577603593114791E+023
+  3.767982426338599E+023
+  5.652079101554316E+023
+  8.567943897437654E+023
+  1.297386293399960E+024
+  1.945645330130025E+024
+  2.870967766446232E+024
+  4.146071793793498E+024
+  5.831298459462672E+024
+  7.950793275350148E+024
+  1.047600757932696E+025
+  1.332705117373775E+025
+  1.638192218627901E+025
+  1.949315506498661E+025
+  2.250937374198073E+025
+  2.529623355977963E+025
+  2.775210146288664E+025
+  2.981604731140484E+025
+  3.146817426844092E+025
+  3.272408345928396E+025
+  3.362598912722594E+025
+  3.423282931502163E+025
+  3.461105484675423E+025
+  3.482702115586174E+025
+  3.494130408727724E+025
+  3.500489630757519E+025
+  3.505708154950794E+025
+  3.512474600151469E+025
+  3.522288962943474E+025
+  3.535609569521650E+025
+  3.552069060754684E+025
+  3.570729196098956E+025
+  3.590342559999188E+025
+  3.609591430608718E+025
+  3.627280713936208E+025
+  3.642471631627966E+025
+  3.654553236029834E+025
+  3.663257503300803E+025
+  3.668629795829917E+025
+  3.670969971490226E+025
+  3.670759899016866E+025
+  3.668589696623983E+025
+  3.665089455604498E+025
+  3.660870582105292E+025
+  3.656481261312935E+025
+  3.652377640609982E+025
+  3.648909132091916E+025
+  5.474731669010367E+025
+  5.474671992176816E+025
+  5.475124810766547E+025
+  5.476162566152342E+025
+  5.477788548435392E+025
+  5.479909922153530E+025
+  5.482317175835737E+025
+  5.484673614181139E+025
+  5.486517633084363E+025
+  5.487281425257537E+025
+  5.486327348786373E+025
+  5.483000452077807E+025
+  5.476693882382276E+025
+  5.466921530935503E+025
+  5.453389426088304E+025
+  5.436055141219165E+025
+  5.415163318300402E+025
+  5.391245493020417E+025
+  5.365074107830436E+025
+  5.337564326188407E+025
+  5.309623069879583E+025
+  5.281952087363950E+025
+  5.254819823563404E+025
+  5.227824132532869E+025
+  5.199673248993832E+025
+  5.168015141637744E+025
+  5.129345354733045E+025
+  5.079021353356308E+025
+  5.011408109288011E+025
+  4.920175455200425E+025
+  4.798761312694028E+025
+  4.641003130999692E+025
+  4.441918581125534E+025
+  4.198582488885568E+025
+  3.911000598622313E+025
+  3.582829445348912E+025
+  3.221752873503130E+025
+  2.839326458836952E+025
+  2.450167399115409E+025
+  2.070507224344335E+025
+  1.716314306675859E+025
+  1.400783562511776E+025
+  1.130815716602349E+025
+  9.065514330908984E+024
+  7.240777957748742E+024
+  5.777478050559142E+024
+  4.615633175566333E+024
+  3.699086997821301E+024
+  2.978759694012702E+024
+  2.413540451969902E+024
+  1.969944930451497E+024
+  1.621217366946433E+024
+  1.346260205258350E+024
+  1.128589262407931E+024
+  9.554041466603090E+023
+  8.168038138098848E+023
+  7.051463551125699E+023
+  6.145380139646106E+023
+  5.404315448840936E+023
+  4.793138926760267E+023
+  4.284651884154932E+023
+  3.857738135907233E+023
+  3.495950710820470E+023
+  3.186435192810718E+023
+  2.919111730167286E+023
+  2.686055435644626E+023
+  2.481029122674248E+023
+  2.299133614959773E+023
+  2.136549907485688E+023
+  1.990355056393371E+023
+  1.858400792138948E+023
+  1.739251672757423E+023
+  1.632189704506383E+023
+  1.537307002709043E+023
+  1.455730527378990E+023
+  1.390057937305151E+023
+  1.345137679623129E+023
+  1.329407879385708E+023
+  1.357126724972978E+023
+  1.451989698401140E+023
+  1.652836859654941E+023
+  2.022388745939023E+023
+  2.660156416163196E+023
+  3.720725036484391E+023
+  5.438276637254962E+023
+  8.157109269318912E+023
+  1.236546776480999E+024
+  1.872555024479343E+024
+  2.808551409457443E+024
+  4.144965345598056E+024
+  5.987199796971899E+024
+  8.423030144350120E+024
+  1.148825506214045E+025
+  1.514286348921710E+025
+  1.927292363834828E+025
+  2.370379410172560E+025
+  2.822400954454879E+025
+  3.261624297602870E+025
+  3.668741010413544E+025
+  4.029122197434080E+025
+  4.333968759853131E+025
+  4.580359976546150E+025
+  4.770458152592418E+025
+  4.910231164760149E+025
+  5.008030502300675E+025
+  5.073267440047723E+025
+  5.115321026305164E+025
+  5.142724660101092E+025
+  5.162625295068952E+025
+  5.180485943697693E+025
+  5.199996241641966E+025
+  5.223155955756963E+025
+  5.250495471319181E+025
+  5.281393569044927E+025
+  5.314448134517099E+025
+  5.347853430933881E+025
+  5.379741213554515E+025
+  5.408453003946732E+025
+  5.432725254356153E+025
+  5.451784183944646E+025
+  5.465359444601862E+025
+  5.473634245135877E+025
+  5.477154377743284E+025
+  5.476719120284598E+025
+  5.473271809923625E+025
+  5.467799626252467E+025
+  5.461248284786037E+025
+  5.454458018605312E+025
+  5.448122977023264E+025
+  5.442771450883169E+025
+  9.061108222426451E+024
+  9.060692076773430E+024
+  9.061530005508542E+024
+  9.063840121094789E+024
+  9.067688818328407E+024
+  9.072934432699788E+024
+  9.079186881614039E+024
+  9.085791703907526E+024
+  9.091844973886170E+024
+  9.096246264798755E+024
+  9.097791722550501E+024
+  9.095303298964895E+024
+  9.087785626381323E+024
+  9.074596458383483E+024
+  9.055610421664081E+024
+  9.031351008443990E+024
+  9.003063390625719E+024
+  8.972701333323548E+024
+  8.942806037106619E+024
+  8.916263884544243E+024
+  8.895943728724569E+024
+  8.884231243559988E+024
+  8.882495570046817E+024
+  8.890539081654571E+024
+  8.906091818620213E+024
+  8.924416375853349E+024
+  8.938086904698113E+024
+  8.936999272751528E+024
+  8.908660887950906E+024
+  8.838799563032944E+024
+  8.712319058019406E+024
+  8.514608239331961E+024
+  8.233171780321106E+024
+  7.859484625614502E+024
+  7.390878682106321E+024
+  6.832161435410880E+024
+  6.196577043788160E+024
+  5.505706679271931E+024
+  4.788023842969816E+024
+  4.076095199272413E+024
+  3.402806882619292E+024
+  2.796207483068668E+024
+  2.272194269592640E+024
+  1.833176624563339E+024
+  1.473190408766410E+024
+  1.182427009135873E+024
+  9.500026879218355E+023
+  7.654794481373172E+023
+  6.195831041414809E+023
+  5.044460898821898E+023
+  4.135927098444842E+023
+  3.418013032493233E+023
+  2.849209967515926E+023
+  2.396846535592842E+023
+  2.035380492603588E+023
+  1.744930773034816E+023
+  1.510062615452611E+023
+  1.318806767731433E+023
+  1.161880997221665E+023
+  1.032079504949387E+023
+  9.237981284278443E+022
+  8.326674629913566E+022
+  7.552707149822138E+022
+  6.889275204501602E+022
+  6.315288429034541E+022
+  5.814113271648780E+022
+  5.372621539231513E+022
+  4.980475858917959E+022
+  4.629601363987414E+022
+  4.313807743669400E+022
+  4.028539920879103E+022
+  3.770751408571910E+022
+  3.538915043462749E+022
+  3.333215867611107E+022
+  3.156017076241215E+022
+  3.012761710749416E+022
+  2.913583147745113E+022
+  2.876062702136688E+022
+  2.929810469500361E+022
+  3.123869405572159E+022
+  3.538349857982866E+022
+  4.302149952487180E+022
+  5.618984132405974E+022
+  7.803964630703342E+022
+  1.133217614593992E+023
+  1.689827434304383E+023
+  2.548103004236539E+023
+  3.839766508414201E+023
+  5.731880292713256E+023
+  8.419615357312692E+023
+  1.210347788210867E+024
+  1.694282026580510E+024
+  2.298696244969633E+024
+  3.012944641965993E+024
+  3.811541463924410E+024
+  4.657225703408373E+024
+  5.506135522533824E+024
+  6.314274772180553E+024
+  7.043623261688540E+024
+  7.666550365410669E+024
+  8.167881615544832E+024
+  8.544698423047726E+024
+  8.804455222986580E+024
+  8.962182975010879E+024
+  9.037471182559207E+024
+  9.051708529219197E+024
+  9.025833091844960E+024
+  8.978668181786053E+024
+  8.925819670281947E+024
+  8.879071294076481E+024
+  8.846208741242792E+024
+  8.831206632558206E+024
+  8.834710453502752E+024
+  8.854735024388174E+024
+  8.887487517234676E+024
+  8.928215060099369E+024
+  8.971981783137172E+024
+  9.014299821810299E+024
+  9.051569314588447E+024
+  9.081315908966822E+024
+  9.102243127769467E+024
+  9.114137313326021E+024
+  9.117674167518243E+024
+  9.114177131715172E+024
+  9.105367616063313E+024
+  9.093131032308629E+024
+  9.079313947743823E+024
+  9.065566910272898E+024
+  9.053239149124620E+024
+  9.043322555664011E+024
+  3.642059526778327E+023
+  3.641768776808766E+023
+  3.642062915702441E+023
+  3.643055000752914E+023
+  3.644790828959800E+023
+  3.647222654038209E+023
+  3.650189569448272E+023
+  3.653408350000951E+023
+  3.656477782929713E+023
+  3.658899762936919E+023
+  3.660118289830782E+023
+  3.659574972174701E+023
+  3.656777641755097E+023
+  3.651376249109866E+023
+  3.643237500020721E+023
+  3.632507521607591E+023
+  3.619650681134216E+023
+  3.605452786726301E+023
+  3.590978645341806E+023
+  3.577477679962040E+023
+  3.566237014043358E+023
+  3.558388598951853E+023
+  3.554684593859387E+023
+  3.555262042850992E+023
+  3.559422727937600E+023
+  3.565456151893663E+023
+  3.570532905893649E+023
+  3.570692947488280E+023
+  3.560949650305674E+023
+  3.535526536169704E+023
+  3.488238670169855E+023
+  3.413022293884501E+023
+  3.304600572418790E+023
+  3.159246777823492E+023
+  2.975567995253436E+023
+  2.755187523191435E+023
+  2.503166441217642E+023
+  2.227997140260319E+023
+  1.941047880003066E+023
+  1.655448044453048E+023
+  1.384562894710339E+023
+  1.139888026142546E+023
+  9.280436496344430E+022
+  7.501846907758606E+022
+  6.040478620103799E+022
+  4.857791082661243E+022
+  3.910566712266933E+022
+  3.157121335469434E+022
+  2.560272647353509E+022
+  2.088379797995062E+022
+  1.715330428454861E+022
+  1.420018691817725E+022
+  1.185629804119156E+022
+  9.989013420524110E+021
+  8.494442069695273E+021
+  7.291564538487134E+021
+  6.317364543437073E+021
+  5.522886934653957E+021
+  4.870100581489409E+021
+  4.329432027566331E+021
+  3.877843436680735E+021
+  3.497344381289858E+021
+  3.173845159157904E+021
+  2.896276643596242E+021
+  2.655916991708480E+021
+  2.445878493316423E+021
+  2.260718481426176E+021
+  2.096146815112514E+021
+  1.948809433087716E+021
+  1.816133458003923E+021
+  1.696225060934119E+021
+  1.587817738891299E+021
+  1.490277125289002E+021
+  1.403680813536218E+021
+  1.329010652043474E+021
+  1.268524462916238E+021
+  1.226419440741629E+021
+  1.209967194129429E+021
+  1.231397561092889E+021
+  1.310940185472359E+021
+  1.481597741811556E+021
+  1.796404487719920E+021
+  2.339067394126554E+021
+  3.238885652391602E+021
+  4.690499890984869E+021
+  6.978018019548298E+021
+  1.050095849851149E+022
+  1.579573870208028E+022
+  2.354073913893841E+022
+  3.452543749534106E+022
+  4.955604008860937E+022
+  6.926484159690817E+022
+  9.382978600693428E+022
+  1.227910052045312E+023
+  1.550858796656720E+023
+  1.891792200045330E+023
+  2.232785024671468E+023
+  2.555996619260699E+023
+  2.846156886626342E+023
+  3.092336696181148E+023
+  3.288746650287806E+023
+  3.434607899465919E+023
+  3.533342353723506E+023
+  3.591400992888569E+023
+  3.617013747170062E+023
+  3.619055300686793E+023
+  3.606126688223051E+023
+  3.585881399380710E+023
+  3.564584575166876E+023
+  3.546878548178937E+023
+  3.535726028648039E+023
+  3.532503548196821E+023
+  3.537216592109998E+023
+  3.548803158081206E+023
+  3.565486653548388E+023
+  3.585135790664446E+023
+  3.605591420668405E+023
+  3.624928840254018E+023
+  3.641637231889773E+023
+  3.654712180313361E+023
+  3.663669411356221E+023
+  3.668496398933714E+023
+  3.669563050682816E+023
+  3.667512973212876E+023
+  3.663152368848504E+023
+  3.657346805003817E+023
+  3.650932356415893E+023
+  3.644647163719099E+023
+  3.639086003579032E+023
+  3.634676834126002E+023
+  8.650353094752361E+023
+  8.650311473843457E+023
+  8.651218972566105E+023
+  8.653208081886641E+023
+  8.656286142233999E+023
+  8.660292233400652E+023
+  8.664868280869325E+023
+  8.669451127278201E+023
+  8.673290452526197E+023
+  8.675498254113956E+023
+  8.675131016735072E+023
+  8.671300388328877E+023
+  8.663304378082910E+023
+  8.650766449504808E+023
+  8.633764701757544E+023
+  8.612929451355066E+023
+  8.589485913435960E+023
+  8.565219776209026E+023
+  8.542347906741630E+023
+  8.523284805156566E+023
+  8.510307592137975E+023
+  8.505137060090979E+023
+  8.508467511602871E+023
+  8.519491193728575E+023
+  8.535471831633959E+023
+  8.551424817821577E+023
+  8.559959319217000E+023
+  8.551331668256522E+023
+  8.513752108475148E+023
+  8.433979165899088E+023
+  8.298225365026764E+023
+  8.093378568066815E+023
+  7.808506296003283E+023
+  7.436548735525916E+023
+  6.976019345789880E+023
+  6.432433111977598E+023
+  5.819104245696830E+023
+  5.156948840633082E+023
+  4.473045057366922E+023
+  3.797962218597124E+023
+  3.162229415754302E+023
+  2.591573509046028E+023
+  2.100223253422142E+023
+  1.689816743010472E+023
+  1.354261052644424E+023
+  1.083986835828562E+023
+  8.685303476249388E+022
+  6.979367584621315E+022
+  5.634103801514711E+022
+  4.575223628759125E+022
+  3.741810520010537E+022
+  3.084909606146111E+022
+  2.565725710852733E+022
+  2.153812410593552E+022
+  1.825433085965853E+022
+  1.562161422142468E+022
+  1.349728910245672E+022
+  1.177098275163382E+022
+  1.035730710887194E+022
+  9.190130599486348E+021
+  8.218137415046418E+021
+  7.401405875665072E+021
+  6.708783995150307E+021
+  6.115883594223747E+021
+  5.603551855590840E+021
+  5.156710556022499E+021
+  4.763478675213982E+021
+  4.414514469740019E+021
+  4.102529550196750E+021
+  3.821941439744939E+021
+  3.568644264990585E+021
+  3.339891829823241E+021
+  3.134306297314109E+021
+  2.952053251492473E+021
+  2.795266154978070E+021
+  2.668868964878203E+021
+  2.582046978813316E+021
+  2.550768090975178E+021
+  2.601976314087979E+021
+  2.780380108900149E+021
+  3.159138927240006E+021
+  3.856175939512991E+021
+  5.058203950949004E+021
+  7.054606152365374E+021
+  1.028262063800203E+022
+  1.538311591704366E+022
+  2.326158736188675E+022
+  3.514064026863795E+022
+  5.257717361923793E+022
+  7.739987287365701E+022
+  1.115032024137355E+023
+  1.564204054314635E+023
+  2.126843699072251E+023
+  2.793943825949286E+023
+  3.542688802460724E+023
+  4.339127392066534E+023
+  5.142827922178018E+023
+  5.912795397813136E+023
+  6.613141802052377E+023
+  7.217259863675930E+023
+  7.709870259807118E+023
+  8.086982322975193E+023
+  8.354280855012978E+023
+  8.524634729800236E+023
+  8.615364161033570E+023
+  8.645715530056963E+023
+  8.634783899435107E+023
+  8.599960921731648E+023
+  8.555890750235131E+023
+  8.513877718545088E+023
+  8.481682901089583E+023
+  8.463649668485923E+023
+  8.461097386633332E+023
+  8.472914040268011E+023
+  8.496267018669762E+023
+  8.527344168886871E+023
+  8.562040966403143E+023
+  8.596526341256820E+023
+  8.627646022257203E+023
+  8.653151370015603E+023
+  8.671766940884372E+023
+  8.683128160935422E+023
+  8.687630972910095E+023
+  8.686237003317106E+023
+  8.680269049757736E+023
+  8.671217507377853E+023
+  8.660571007354925E+023
+  8.649684337781722E+023
+  8.639689095861946E+023
+  8.631444450042228E+023
+  1.302933105093458E+023
+  1.303051706504601E+023
+  1.303217755274097E+023
+  1.303423165670499E+023
+  1.303648783370202E+023
+  1.303861754758249E+023
+  1.304014487208611E+023
+  1.304045708494651E+023
+  1.303883868150322E+023
+  1.303453334181203E+023
+  1.302683290040596E+023
+  1.301518632076735E+023
+  1.299931839671146E+023
+  1.297934368957271E+023
+  1.295585629950008E+023
+  1.292997294067540E+023
+  1.290330652087448E+023
+  1.287785020368465E+023
+  1.285575822166221E+023
+  1.283901997839140E+023
+  1.282903785704489E+023
+  1.282613509218014E+023
+  1.282903562941842E+023
+  1.283437044461105E+023
+  1.283627224049465E+023
+  1.282612200465008E+023
+  1.279250748810726E+023
+  1.272144742499161E+023
+  1.259692832649658E+023
+  1.240179273588652E+023
+  1.211900446593067E+023
+  1.173328858367671E+023
+  1.123309090041937E+023
+  1.061271611572562E+023
+  9.874388669995184E+022
+  9.029857014354070E+022
+  8.101076203313669E+022
+  7.119522150319533E+022
+  6.123874451888022E+022
+  5.156165248229685E+022
+  4.256961690238065E+022
+  3.459118683800769E+022
+  2.779215241602543E+022
+  2.216723208687988E+022
+  1.760991267642620E+022
+  1.397148510821344E+022
+  1.109598942485456E+022
+  8.838543595060504E+021
+  7.073275459872745E+021
+  5.695294800638593E+021
+  4.619580977525317E+021
+  3.778515695729379E+021
+  3.119027901815373E+021
+  2.599844963462575E+021
+  2.189068703343222E+021
+  1.862143811036990E+021
+  1.600209411992273E+021
+  1.388790322895882E+021
+  1.216773503309501E+021
+  1.075615991629911E+021
+  9.587366060638382E+020
+  8.610513357108315E+020
+  7.786198994401603E+020
+  7.083776792961222E+020
+  6.479329163779910E+020
+  5.954136969910915E+020
+  5.493529618434661E+020
+  5.086026948462104E+020
+  4.722707740093662E+020
+  4.396759039743396E+020
+  4.103178381343623E+020
+  3.838620305422407E+020
+  3.601403202591090E+020
+  3.391727907561252E+020
+  3.212213650376671E+020
+  3.068941540879351E+020
+  2.973326867084962E+020
+  2.945340046231433E+020
+  3.018886170999129E+020
+  3.250556435063482E+020
+  3.733487232527453E+020
+  4.618667443344427E+020
+  6.146592832629906E+020
+  8.692381341713747E+020
+  1.282676234615367E+021
+  1.939277396578643E+021
+  2.959212519863218E+021
+  4.506423885607899E+021
+  6.792337677407685E+021
+  1.006946521905819E+022
+  1.460611980033842E+022
+  2.063118312187526E+022
+  2.824865149535930E+022
+  3.737608933988412E+022
+  4.774521959057565E+022
+  5.893054803360840E+022
+  7.040541707664816E+022
+  8.161746432198725E+022
+  9.206420070335524E+022
+  1.013517951323591E+023
+  1.092275824161141E+023
+  1.155854368137090E+023
+  1.204496494111814E+023
+  1.239458690163258E+023
+  1.262673901188592E+023
+  1.276429250522644E+023
+  1.283093709625767E+023
+  1.284909089768414E+023
+  1.283844114674415E+023
+  1.281505112190059E+023
+  1.279095306690518E+023
+  1.277414966023175E+023
+  1.276894855747118E+023
+  1.277654885432781E+023
+  1.279578785404218E+023
+  1.282394921031262E+023
+  1.285753697681946E+023
+  1.289293737790002E+023
+  1.292691808865844E+023
+  1.295694608349454E+023
+  1.298133258374423E+023
+  1.299923422099389E+023
+  1.301055297741046E+023
+  1.301578143810587E+023
+  1.301583061498680E+023
+  1.301186089221090E+023
+  1.300512940150149E+023
+  1.299686925876767E+023
+  1.298820623218866E+023
+  1.298010771947381E+023
+  5.820041051728820E+025
+  5.820653722055514E+025
+  5.821388792500310E+025
+  5.822187508258035E+025
+  5.822949773066947E+025
+  5.823525164178318E+025
+  5.823709959074895E+025
+  5.823251916122185E+025
+  5.821863465472948E+025
+  5.819245061754998E+025
+  5.815118224691850E+025
+  5.809265408090414E+025
+  5.801572721270001E+025
+  5.792069986607339E+025
+  5.780960741574463E+025
+  5.768633646333288E+025
+  5.755646749943169E+025
+  5.742677219205225E+025
+  5.730431607907486E+025
+  5.719515734718638E+025
+  5.710268609761438E+025
+  5.702571000483655E+025
+  5.695645220231187E+025
+  5.687867554423379E+025
+  5.676617640243720E+025
+  5.658189819245901E+025
+  5.627790348335600E+025
+  5.579642198242521E+025
+  5.507216688764963E+025
+  5.403608120944065E+025
+  5.262061840424001E+025
+  5.076654016473690E+025
+  4.843098487625789E+025
+  4.559619650292198E+025
+  4.227782402146933E+025
+  3.853119951571470E+025
+  3.445367188967695E+025
+  3.018118793932222E+025
+  2.587811620010299E+025
+  2.172083310100060E+025
+  1.787753747018231E+025
+  1.448237662210991E+025
+  1.160022915844000E+025
+  9.224180743017179E+024
+  7.305470112903986E+024
+  5.778479922469574E+024
+  4.575379391132106E+024
+  3.633690344181524E+024
+  2.899462642158339E+024
+  2.327958259550665E+024
+  1.883065319822399E+024
+  1.536170625055574E+024
+  1.264893792974730E+024
+  1.051885814530613E+024
+  8.837790712133644E+023
+  7.503130715969090E+023
+  6.436287856361025E+023
+  5.577108817227176E+023
+  4.879532211936854E+023
+  4.308238171320373E+023
+  3.836083699034180E+023
+  3.442149818146228E+023
+  3.110260216150288E+023
+  2.827860705923112E+023
+  2.585173584761533E+023
+  2.374561051073620E+023
+  2.190047775353150E+023
+  2.026965235553516E+023
+  1.881690333236337E+023
+  1.751459008955933E+023
+  1.634243091393764E+023
+  1.528686669380689E+023
+  1.434108476812785E+023
+  1.350591400222827E+023
+  1.279202584422754E+023
+  1.222422561081038E+023
+  1.184916122453107E+023
+  1.174860142821666E+023
+  1.206164534484980E+023
+  1.302091618943649E+023
+  1.500999880381358E+023
+  1.865196570808482E+023
+  2.494128715113996E+023
+  3.543252582697338E+023
+  5.249661416761958E+023
+  7.964517974766216E+023
+  1.218993172635303E+024
+  1.861338119623703E+024
+  2.812539238939299E+024
+  4.179574196986937E+024
+  6.077113327791830E+024
+  8.604699404056923E+024
+  1.181101133765646E+025
+  1.566761902291981E+025
+  2.006833478629544E+025
+  2.484016709290434E+025
+  2.976584187301898E+025
+  3.461476897676127E+025
+  3.917452405903257E+025
+  4.327575906664720E+025
+  4.680644021783196E+025
+  4.971486742541957E+025
+  5.200366446196900E+025
+  5.371821332377725E+025
+  5.493296140203605E+025
+  5.573818530342139E+025
+  5.622872185841767E+025
+  5.649526886148277E+025
+  5.661827537713965E+025
+  5.666416431908675E+025
+  5.668355190492981E+025
+  5.671113455648824E+025
+  5.676692441702728E+025
+  5.685849840914010E+025
+  5.698389106143543E+025
+  5.713473789974928E+025
+  5.729929364261284E+025
+  5.746501980073405E+025
+  5.762054701416508E+025
+  5.775693912383333E+025
+  5.786829119408514E+025
+  5.795177249097732E+025
+  5.800727889398787E+025
+  5.803687685921277E+025
+  5.804418350277165E+025
+  5.803375760324112E+025
+  5.801054862876902E+025
+  5.797946464950135E+025
+  5.794507882212515E+025
+  5.791144826629930E+025
+  1.452711577402561E+026
+  1.452744042555139E+026
+  1.452868304145011E+026
+  1.453091251767722E+026
+  1.453404986927928E+026
+  1.453781381769369E+026
+  1.454168118384363E+026
+  1.454486941174164E+026
+  1.454634624217637E+026
+  1.454487443684124E+026
+  1.453909369638066E+026
+  1.452763537655761E+026
+  1.450926192463918E+026
+  1.448301790654965E+026
+  1.444837322085814E+026
+  1.440533428842851E+026
+  1.435449685848291E+026
+  1.429701486275972E+026
+  1.423446419534423E+026
+  1.416858927711302E+026
+  1.410093385264890E+026
+  1.403237443710515E+026
+  1.396259284044223E+026
+  1.388954037928486E+026
+  1.380895812777870E+026
+  1.371402331591598E+026
+  1.359519184445661E+026
+  1.344030240944405E+026
+  1.323500073520735E+026
+  1.296353288451438E+026
+  1.260994065938580E+026
+  1.215966150166577E+026
+  1.160147980160098E+026
+  1.092968892199966E+026
+  1.014620621801931E+026
+  9.262257353813247E+025
+  8.299156623637010E+025
+  7.287723915755156E+025
+  6.266058892149140E+025
+  5.275753186240200E+025
+  4.357096742475969E+025
+  3.542779493756139E+025
+  2.849156522042253E+025
+  2.275352822722007E+025
+  1.810332281814087E+025
+  1.438864666736169E+025
+  1.145044334667124E+025
+  9.141270908496722E+024
+  7.333184492487507E+024
+  5.919630247503523E+024
+  4.814254330314824E+024
+  3.948367496759678E+024
+  3.268034789272844E+024
+  2.731283408337502E+024
+  2.305645173087349E+024
+  1.966098919803356E+024
+  1.693401800654372E+024
+  1.472764604583510E+024
+  1.292815558580312E+024
+  1.144798128310170E+024
+  1.021954542117887E+024
+  9.190545585429165E+023
+  8.320366542747577E+023
+  7.577356096560895E+023
+  6.936762003483860E+023
+  6.379173811637624E+023
+  5.889350821902412E+023
+  5.455346843341466E+023
+  5.067865870789122E+023
+  4.719802382029551E+023
+  4.405938089776939E+023
+  4.122786690139706E+023
+  3.868603395603738E+023
+  3.643612454289373E+023
+  3.450561663301117E+023
+  3.295799983755497E+023
+  3.191209259704493E+023
+  3.157525006812509E+023
+  3.229878581744128E+023
+  3.466805286284704E+023
+  3.964495016781665E+023
+  4.878674440339767E+023
+  6.457068879241299E+023
+  9.085592457874419E+023
+  1.335067223395485E+024
+  2.011744751153570E+024
+  3.061756318341009E+024
+  4.652912063524334E+024
+  7.001345724456063E+024
+  1.036485206546219E+025
+  1.501697989012933E+025
+  2.119067178749316E+025
+  2.899133341043834E+025
+  3.833488481332930E+025
+  4.894962851021930E+025
+  6.040647773805685E+025
+  7.217661570385694E+025
+  8.370820244331408E+025
+  9.450244811383288E+025
+  1.041720213466083E+026
+  1.124724638643547E+026
+  1.193060699009742E+026
+  1.247042077366943E+026
+  1.287969066698173E+026
+  1.317781479198135E+026
+  1.338730597875441E+026
+  1.353105348361257E+026
+  1.363025870631251E+026
+  1.370303917065895E+026
+  1.376363124092988E+026
+  1.382210405570679E+026
+  1.388449688200656E+026
+  1.395329141696081E+026
+  1.402812362981150E+026
+  1.410663021194539E+026
+  1.418532069447971E+026
+  1.426037488640934E+026
+  1.432828840764568E+026
+  1.438632222575519E+026
+  1.443274672441068E+026
+  1.446689944991493E+026
+  1.448909568341144E+026
+  1.450044289309071E+026
+  1.450261189168475E+026
+  1.449760529560902E+026
+  1.448754428988209E+026
+  1.447448640445480E+026
+  1.446028951238748E+026
+  1.444652646973852E+026
+  1.443444296469774E+026
+  5.074117396196121E+025
+  5.074020628337676E+025
+  5.074422052003785E+025
+  5.075396642706361E+025
+  5.076953580395171E+025
+  5.079010084351357E+025
+  5.081371199440842E+025
+  5.083718998867012E+025
+  5.085613869315098E+025
+  5.086511386620170E+025
+  5.085796041320122E+025
+  5.082830515479747E+025
+  5.077017542544448E+025
+  5.067869135022279E+025
+  5.055075271914507E+025
+  5.038561987746738E+025
+  5.018527648072426E+025
+  4.995446199927774E+025
+  4.970027699888855E+025
+  4.943129843126949E+025
+  4.915619609965447E+025
+  4.888191053918079E+025
+  4.861152748613006E+025
+  4.834205301839723E+025
+  4.806234490683889E+025
+  4.775148225353150E+025
+  4.737785629555707E+025
+  4.689924616547967E+025
+  4.626411269183387E+025
+  4.541430363346559E+025
+  4.428930361769766E+025
+  4.283205287258558E+025
+  4.099616210563580E+025
+  3.875403629289221E+025
+  3.610499107939510E+025
+  3.308196956263494E+025
+  2.975510554146868E+025
+  2.623038053459079E+025
+  2.264222899146027E+025
+  1.914023458157959E+025
+  1.587181453043440E+025
+  1.295900643171026E+025
+  1.046584975461113E+025
+  8.393968827439008E+024
+  6.707513003218836E+024
+  5.354559450539279E+024
+  4.279883576715316E+024
+  3.431741533130171E+024
+  2.764883072607489E+024
+  2.241386019392229E+024
+  1.830348890019356E+024
+  1.507068897586846E+024
+  1.252058935804543E+024
+  1.050086641240889E+024
+  8.893186781216064E+023
+  7.605981357248197E+023
+  6.568544505726938E+023
+  5.726321976132328E+023
+  5.037205367928358E+023
+  4.468649357688675E+023
+  3.995446219314577E+023
+  3.598017365611674E+023
+  3.261107200242336E+023
+  2.972787689720471E+023
+  2.723701805974072E+023
+  2.506490262685445E+023
+  2.315359063643027E+023
+  2.145755784298816E+023
+  1.994130841824545E+023
+  1.857767020376159E+023
+  1.734667092898515E+023
+  1.623496617848541E+023
+  1.523588354229110E+023
+  1.435028312625245E+023
+  1.358864282163523E+023
+  1.297510122885836E+023
+  1.255469217292331E+023
+  1.240575908723098E+023
+  1.266063094842598E+023
+  1.353914567050819E+023
+  1.540152686380453E+023
+  1.882928951542877E+023
+  2.474474940582671E+023
+  3.458018249024911E+023
+  5.050455180790246E+023
+  7.570541237156234E+023
+  1.147009601058881E+024
+  1.736159921398267E+024
+  2.602904820566359E+024
+  3.840004275937725E+024
+  5.544700947606364E+024
+  7.797789983454954E+024
+  1.063185966156054E+025
+  1.400932856322922E+025
+  1.782432538747934E+025
+  2.191504287747512E+025
+  2.608593453284127E+025
+  3.013639684856500E+025
+  3.388858554791791E+025
+  3.720818453008758E+025
+  4.001491783025516E+025
+  4.228286556174475E+025
+  4.403299213824011E+025
+  4.532124674964672E+025
+  4.622536141118076E+025
+  4.683258679022874E+025
+  4.722959579981133E+025
+  4.749498171321091E+025
+  4.769429158546892E+025
+  4.787732118678935E+025
+  4.807734340788720E+025
+  4.831194261621227E+025
+  4.858511836754982E+025
+  4.889028628272848E+025
+  4.921376028037010E+025
+  4.953828234172590E+025
+  4.984620131782658E+025
+  5.012199739394562E+025
+  5.035398446733487E+025
+  5.053516379404255E+025
+  5.066331781636619E+025
+  5.074051167948747E+025
+  5.077221406928278E+025
+  5.076625305785694E+025
+  5.073177366365962E+025
+  5.067828639971689E+025
+  5.061485992626998E+025
+  5.054951694604296E+025
+  5.048885296402539E+025
+  5.043785362175935E+025
+  1.068907048887684E+023
+  1.068715404374986E+023
+  1.068759866228492E+023
+  1.069094573543488E+023
+  1.069749044149046E+023
+  1.070717401951994E+023
+  1.071949659598913E+023
+  1.073346487808244E+023
+  1.074758706746594E+023
+  1.075992792018658E+023
+  1.076823013626167E+023
+  1.077010006679130E+023
+  1.076324874860187E+023
+  1.074577067287408E+023
+  1.071643300955228E+023
+  1.067493973023119E+023
+  1.062212971697974E+023
+  1.056006653763300E+023
+  1.049198153036586E+023
+  1.042204255157251E+023
+  1.035493851807929E+023
+  1.029529333264717E+023
+  1.024694884001453E+023
+  1.021218091180031E+023
+  1.019093130347930E+023
+  1.018014748688990E+023
+  1.017332251374988E+023
+  1.016031904421686E+023
+  1.012754951552425E+023
+  1.005857076050673E+023
+  9.935135232431969E+022
+  9.738715825726067E+022
+  9.452475916455040E+022
+  9.063579149791582E+022
+  8.565620156066681E+022
+  7.960820071875083E+022
+  7.261508784255810E+022
+  6.490377145735006E+022
+  5.679101933075317E+022
+  4.865262242300763E+022
+  4.087939491199893E+022
+  3.381469466276727E+022
+  2.766359451666145E+022
+  2.247204965062823E+022
+  1.818472319351671E+022
+  1.469767102126308E+022
+  1.189110463505205E+022
+  9.647803085277872E+021
+  7.862163037572174E+021
+  6.443613311166921E+021
+  5.316904313034168E+021
+  4.420844725604718E+021
+  3.706409070492047E+021
+  3.134722598850851E+021
+  2.675176977542261E+021
+  2.303784425394962E+021
+  2.001798217571199E+021
+  1.754587090366970E+021
+  1.550733419140426E+021
+  1.381319865398281E+021
+  1.239370295895949E+021
+  1.119414606980328E+021
+  1.017151760567018E+021
+  9.291899531131959E+020
+  8.528470069655858E+020
+  7.859976531404499E+020
+  7.269573476828069E+020
+  6.743946869840071E+020
+  6.272664764335822E+020
+  5.847712290979451E+020
+  5.463185463315975E+020
+  5.115137475899646E+020
+  4.801596649507441E+020
+  4.522812610360437E+020
+  4.281844849924434E+020
+  4.085697141063734E+020
+  3.947338049197723E+020
+  3.889151165006780E+020
+  3.948648608377519E+020
+  4.187671089746600E+020
+  4.706778393675655E+020
+  5.667045046060954E+020
+  7.321855965180067E+020
+  1.006121198335032E+021
+  1.446990909233597E+021
+  2.139781158769060E+021
+  3.203402166939203E+021
+  4.796564806044426E+021
+  7.118514929634661E+021
+  1.039885625602019E+022
+  1.486845167526553E+022
+  2.070210487683987E+022
+  2.793574532546296E+022
+  3.641441245608710E+022
+  4.580651308045438E+022
+  5.564641137452197E+022
+  6.540142378746611E+022
+  7.455211177540172E+022
+  8.266538694380644E+022
+  8.944456939792471E+022
+  9.474953457174413E+022
+  9.858911049121166E+022
+  1.010937653950680E+023
+  1.024784295585719E+023
+  1.030039448600022E+023
+  1.029427913077851E+023
+  1.025518612825396E+023
+  1.020529574783190E+023
+  1.016205557279195E+023
+  1.013759700336178E+023
+  1.013870217109829E+023
+  1.016723437490173E+023
+  1.022093860473914E+023
+  1.029450149516254E+023
+  1.038074093713961E+023
+  1.047178664257660E+023
+  1.056012312563379E+023
+  1.063939737120209E+023
+  1.070493833012071E+023
+  1.075398286037542E+023
+  1.078564224394374E+023
+  1.080066978427395E+023
+  1.080110282381643E+023
+  1.078985141047356E+023
+  1.077029007664856E+023
+  1.074588650780420E+023
+  1.071988798190520E+023
+  1.069508418059856E+023
+  1.067365428263268E+023
+  1.065709495609545E+023
+  3.537045739658565E+025
+  3.537306046590510E+025
+  3.537722758980885E+025
+  3.538284701431613E+025
+  3.538948982362207E+025
+  3.539632123377311E+025
+  3.540205255688053E+025
+  3.540494874218508E+025
+  3.540289973011623E+025
+  3.539356987109830E+025
+  3.537462503491482E+025
+  3.534402097375710E+025
+  3.530032772897384E+025
+  3.524305322061146E+025
+  3.517291533233293E+025
+  3.509200248300303E+025
+  3.500376067103729E+025
+  3.491275080109507E+025
+  3.482413518037436E+025
+  3.474287795533192E+025
+  3.467268030124842E+025
+  3.461471354880522E+025
+  3.456625585338164E+025
+  3.451937342253964E+025
+  3.445980990813252E+025
+  3.436625474734436E+025
+  3.421015472939854E+025
+  3.395621809524989E+025
+  3.356374225466407E+025
+  3.298887428119825E+025
+  3.218787638744142E+025
+  3.112139355585526E+025
+  2.975957942356719E+025
+  2.808771044780714E+025
+  2.611161545113727E+025
+  2.386192308897522E+025
+  2.139590319047654E+025
+  1.879572429352424E+025
+  1.616242948418364E+025
+  1.360587799700081E+025
+  1.123213514068002E+025
+  9.127071227548033E+024
+  7.333814653209240E+024
+  5.850560830467618E+024
+  4.648964149279610E+024
+  3.689667017541741E+024
+  2.931476901614425E+024
+  2.336169315801997E+024
+  1.870557993962645E+024
+  1.507001029506688E+024
+  1.223099313946098E+024
+  1.001041543879760E+024
+  8.268493658878898E+023
+  6.896519541486110E+023
+  5.810469927104425E+023
+  4.945654599446232E+023
+  4.252375493321493E+023
+  3.692481405689718E+023
+  3.236673967263663E+023
+  2.862423069793564E+023
+  2.552365948391129E+023
+  2.293084367071104E+023
+  2.074174299567853E+023
+  1.887540237495574E+023
+  1.726861220778629E+023
+  1.587187897785702E+023
+  1.464639670105949E+023
+  1.356178666492547E+023
+  1.259443406471230E+023
+  1.172630108180299E+023
+  1.094414301501265E+023
+  1.023910498693555E+023
+  9.606741706277084E+022
+  9.047596220941194E+022
+  8.568616676500955E+022
+  8.185913428724656E+022
+  7.929705027316337E+022
+  7.852825705475269E+022
+  8.044932464709632E+022
+  8.655613544551493E+022
+  9.930977164508071E+022
+  1.226989179290636E+023
+  1.630751729633235E+023
+  2.303432609667434E+023
+  3.395695789557908E+023
+  5.130044624329838E+023
+  7.823586464387553E+023
+  1.190886233529577E+024
+  1.794362744884152E+024
+  2.659399423378033E+024
+  3.856783763497631E+024
+  5.446931923175370E+024
+  7.457385733919819E+024
+  9.866635619429828E+024
+  1.260433665974322E+025
+  1.555889089332575E+025
+  1.859222165365039E+025
+  2.155961931320599E+025
+  2.432958037595636E+025
+  2.679919828610641E+025
+  2.890262689837122E+025
+  3.061240795486244E+025
+  3.193515866555384E+025
+  3.290387802736024E+025
+  3.356905292424630E+025
+  3.399017778716676E+025
+  3.422861001088210E+025
+  3.434211182910388E+025
+  3.438107104909778E+025
+  3.438622825759142E+025
+  3.438769507008116E+025
+  3.440505271889188E+025
+  3.444832360794461E+025
+  3.451959290844227E+025
+  3.461503080952804E+025
+  3.472704947553112E+025
+  3.484634165427607E+025
+  3.496359743543584E+025
+  3.507077264447894E+025
+  3.516186647656029E+025
+  3.523323829983818E+025
+  3.528354657252761E+025
+  3.531342685692078E+025
+  3.532503515059917E+025
+  3.532155656561480E+025
+  3.530673313622804E+025
+  3.528444458357579E+025
+  3.525838222357864E+025
+  3.523182988498713E+025
+  3.520753670587628E+025
+  1.102729544346674E+025
+  1.102822109068608E+025
+  1.102962015346771E+025
+  1.103144375491596E+025
+  1.103354317494010E+025
+  1.103564501586778E+025
+  1.103734046215282E+025
+  1.103809333551920E+025
+  1.103726936193725E+025
+  1.103419075215690E+025
+  1.102821541050567E+025
+  1.101883477698808E+025
+  1.100578130541224E+025
+  1.098913277242240E+025
+  1.096939622052734E+025
+  1.094755149031507E+025
+  1.092503394249754E+025
+  1.090363831008467E+025
+  1.088533108602265E+025
+  1.087196786098537E+025
+  1.086492426143382E+025
+  1.086466324200102E+025
+  1.087027531442033E+025
+  1.087903948984883E+025
+  1.088605939855558E+025
+  1.088403049529064E+025
+  1.086319120945206E+025
+  1.081150527474020E+025
+  1.071511615703818E+025
+  1.055910744802911E+025
+  1.032859158707840E+025
+  1.001012562596237E+025
+  9.593407501974817E+024
+  9.073132840083444E+024
+  8.450792987020008E+024
+  7.736087745877778E+024
+  6.947550441547549E+024
+  6.111996230772866E+024
+  5.262560261111330E+024
+  4.435401848521526E+024
+  3.665557271921666E+024
+  2.981539598390957E+024
+  2.397916795507971E+024
+  1.914531360549701E+024
+  1.522471391894726E+024
+  1.209138777636114E+024
+  9.612586360718759E+023
+  7.664649835153306E+023
+  6.139932131408745E+023
+  4.948589604503106E+023
+  4.017699368563891E+023
+  3.289194269574375E+023
+  2.717448507065863E+023
+  2.266942111162626E+023
+  1.910195372227625E+023
+  1.626033935020473E+023
+  1.398178694378870E+023
+  1.214124644040429E+023
+  1.064262917213751E+023
+  9.412005922722465E+022
+  8.392377449360949E+022
+  7.539676269636457E+022
+  6.819722239254137E+022
+  6.205911478850979E+022
+  5.677466510631329E+022
+  5.218115009935020E+022
+  4.815096215172613E+022
+  4.458419048075195E+022
+  4.140315922901188E+022
+  3.854852850595703E+022
+  3.597671834638741E+022
+  3.365858230542323E+022
+  3.157947037790044E+022
+  2.974112741571774E+022
+  2.816634239409302E+022
+  2.690799594483153E+022
+  2.606528766696493E+022
+  2.581164059180883E+022
+  2.644128383588702E+022
+  2.844498925345166E+022
+  3.262992802509597E+022
+  4.030378840482607E+022
+  5.354803130763019E+022
+  7.560687178097135E+022
+  1.114123108035704E+023
+  1.682430016218878E+023
+  2.564637229073221E+023
+  3.901976746814478E+023
+  5.876321304384215E+023
+  8.704470042362689E+023
+  1.261612497570675E+024
+  1.780609070134101E+024
+  2.436061024300081E+024
+  3.220466118795032E+024
+  4.110308828753477E+024
+  5.068597669333691E+024
+  6.049759282044468E+024
+  7.006181640640045E+024
+  7.894734903587158E+024
+  8.681813371411631E+024
+  9.346090837091094E+024
+  9.878928613390017E+024
+  1.028293398760149E+025
+  1.056941426087193E+025
+  1.075544281459838E+025
+  1.086106500687287E+025
+  1.090694360878661E+025
+  1.091255612490697E+025
+  1.089493987580027E+025
+  1.086792818768768E+025
+  1.084180840171278E+025
+  1.082333501947184E+025
+  1.081603278319500E+025
+  1.082071906388766E+025
+  1.083616534665043E+025
+  1.085981092874730E+025
+  1.088844488563711E+025
+  1.091878755866058E+025
+  1.094792749387082E+025
+  1.097359740093606E+025
+  1.099429701874301E+025
+  1.100928894810890E+025
+  1.101850523544995E+025
+  1.102240582123785E+025
+  1.102182182499887E+025
+  1.101780211033521E+025
+  1.101147510636828E+025
+  1.100393942477922E+025
+  1.099618830250627E+025
+  1.098906370732642E+025
+  1.286280036853661E+026
+  1.286414324551961E+026
+  1.286576445967418E+026
+  1.286753681276838E+026
+  1.286924121525327E+026
+  1.287054638404342E+026
+  1.287100176890946E+026
+  1.287004758900500E+026
+  1.286704348341207E+026
+  1.286131969779461E+026
+  1.285224980722334E+026
+  1.283933871804884E+026
+  1.282231722907527E+026
+  1.280123101387915E+026
+  1.277650772416307E+026
+  1.274898335936548E+026
+  1.271986900017186E+026
+  1.269064150416621E+026
+  1.266284717963009E+026
+  1.263781622670253E+026
+  1.261629757295012E+026
+  1.259803730910536E+026
+  1.258133718697269E+026
+  1.256264035993531E+026
+  1.253619802196857E+026
+  1.249387222978068E+026
+  1.242512775202947E+026
+  1.231726106451472E+026
+  1.215590913881426E+026
+  1.192587382904802E+026
+  1.161228498539789E+026
+  1.120209857204221E+026
+  1.068587543983481E+026
+  1.005970615789847E+026
+  9.327041534304123E+025
+  8.500077763510249E+025
+  7.600272100820655E+025
+  6.657590237077905E+025
+  5.708263725742021E+025
+  4.791171862242848E+025
+  3.943391638930061E+025
+  3.194492585571112E+025
+  2.558769906094376E+025
+  2.034687866197050E+025
+  1.611484432803814E+025
+  1.274682566677859E+025
+  1.009319008328603E+025
+  8.016123555896879E+024
+  6.396629195427185E+024
+  5.136032514336506E+024
+  4.154686785383214E+024
+  3.389484984827061E+024
+  2.791067110885296E+024
+  2.321169967464715E+024
+  1.950311226470141E+024
+  1.655861172066845E+024
+  1.420486356242240E+024
+  1.230919484195795E+024
+  1.077001152797370E+024
+  9.509409555427661E+023
+  8.467518820241491E+023
+  7.598196403830788E+023
+  6.865759617324562E+023
+  6.242514767808291E+023
+  5.706892169084730E+023
+  5.242042199389783E+023
+  4.834782355617654E+023
+  4.474812849630884E+023
+  4.154140138099586E+023
+  3.866665865116766E+023
+  3.607915272468504E+023
+  3.374896897186379E+023
+  3.166107876116441E+023
+  2.981731425721203E+023
+  2.824122400866296E+023
+  2.698753930097293E+023
+  2.615917896195601E+023
+  2.593653965584961E+023
+  2.662648729485719E+023
+  2.874219483457907E+023
+  3.312983912211642E+023
+  4.116387063514490E+023
+  5.503797462034044E+023
+  7.818127848329934E+023
+  1.158236182292841E+024
+  1.757108870234324E+024
+  2.689184085385148E+024
+  4.106101647151147E+024
+  6.204287380432627E+024
+  9.219705341469510E+024
+  1.340529124440309E+025
+  1.898062376334981E+025
+  2.605311016360089E+025
+  3.456011048508794E+025
+  4.426751992781677E+025
+  5.479393495254083E+025
+  6.566032376608230E+025
+  7.635831373644844E+025
+  8.641960781114972E+025
+  9.547090316012741E+025
+  1.032652711025987E+026
+  1.096887974261439E+026
+  1.147473135515711E+026
+  1.185408798445557E+026
+  1.212335826829478E+026
+  1.230243435330534E+026
+  1.241220712173329E+026
+  1.247264861533485E+026
+  1.250146601974019E+026
+  1.251327042372865E+026
+  1.251918628546942E+026
+  1.252682878843897E+026
+  1.254057855757766E+026
+  1.256207960587802E+026
+  1.259087875343413E+026
+  1.262511965615133E+026
+  1.266220852216163E+026
+  1.269938421814291E+026
+  1.273414998028154E+026
+  1.276455081914089E+026
+  1.278930389501766E+026
+  1.280780646823787E+026
+  1.282005779857627E+026
+  1.282653526805939E+026
+  1.282805669209656E+026
+  1.282564529989288E+026
+  1.282040771244135E+026
+  1.281343834646505E+026
+  1.280575460083208E+026
+  1.279825701275309E+026
+  8.869603014828846E+025
+  8.870724754273844E+025
+  8.871893971751691E+025
+  8.872979651061563E+025
+  8.873798939176210E+025
+  8.874109202236810E+025
+  8.873608534534866E+025
+  8.871946641553321E+025
+  8.868746379356144E+025
+  8.863638012920490E+025
+  8.856305051873102E+025
+  8.846537153138414E+025
+  8.834284217586998E+025
+  8.819703849074496E+025
+  8.803191897873267E+025
+  8.785384458746346E+025
+  8.767120010618055E+025
+  8.749352332985293E+025
+  8.733008590672968E+025
+  8.718792776313583E+025
+  8.706942304015219E+025
+  8.696954069373801E+025
+  8.687304403838061E+025
+  8.675193690200075E+025
+  8.656349990503943E+025
+  8.624926624840841E+025
+  8.573526854511005E+025
+  8.493385859879846E+025
+  8.374736962292421E+025
+  8.207384865990386E+025
+  7.981500334523263E+025
+  7.688632402743613E+025
+  7.322899573278737E+025
+  6.882266884410389E+025
+  6.369744613735538E+025
+  5.794271222192937E+025
+  5.170997006080776E+025
+  4.520706384978211E+025
+  3.868240644177959E+025
+  3.240011870930380E+025
+  2.660986470063591E+025
+  2.150858873055002E+025
+  1.718881349468575E+025
+  1.363591279341028E+025
+  1.077340281312197E+025
+  8.500431502094978E+024
+  6.713610713219714E+024
+  5.318192840354294E+024
+  4.232668778089066E+024
+  3.389655775526868E+024
+  2.734911681294648E+024
+  2.225565795295861E+024
+  1.828165780961488E+024
+  1.516839298340268E+024
+  1.271695998491293E+024
+  1.077502306724099E+024
+  9.226153098195654E+023
+  7.981425298263124E+023
+  6.972890957228712E+023
+  6.148555900783211E+023
+  5.468545564099011E+023
+  4.902191333594778E+023
+  4.425825028945468E+023
+  4.021113940252133E+023
+  3.673806710205587E+023
+  3.372790918185002E+023
+  3.109387395653044E+023
+  2.876825220606255E+023
+  2.669856266956034E+023
+  2.484480493336441E+023
+  2.317764369499433E+023
+  2.167746775087842E+023
+  2.033441741122779E+023
+  1.914968892974670E+023
+  1.813875308221991E+023
+  1.733763885038705E+023
+  1.681423280473403E+023
+  1.668776240638699E+023
+  1.716142315902220E+023
+  1.857562415952958E+023
+  2.149262740830873E+023
+  2.682725786309724E+023
+  3.604213094881369E+023
+  5.142771812668114E+023
+  7.648407184894700E+023
+  1.164061858828520E+024
+  1.786397741933208E+024
+  2.734071919427257E+024
+  4.139931442784736E+024
+  6.164229312440296E+024
+  8.979787012690017E+024
+  1.273838610565254E+025
+  1.751766393382810E+025
+  2.328151943060672E+025
+  2.987808829120188E+025
+  3.705485595191586E+025
+  4.449111586058628E+025
+  5.184339560163958E+025
+  5.879221158854060E+025
+  6.507958601206625E+025
+  7.053105630823652E+025
+  7.506113610974160E+025
+  7.866528131999789E+025
+  8.140340147433472E+025
+  8.337997377283980E+025
+  8.472462190174754E+025
+  8.557545359402057E+025
+  8.606610116248026E+025
+  8.631652863949977E+025
+  8.642724077182324E+025
+  8.647640253457333E+025
+  8.651938497471307E+025
+  8.659027457574870E+025
+  8.670486822935098E+025
+  8.686463222715383E+025
+  8.706107203137294E+025
+  8.727998238311529E+025
+  8.750514305696704E+025
+  8.772117786211215E+025
+  8.791546254127097E+025
+  8.807911323883918E+025
+  8.820719847350878E+025
+  8.829839636621805E+025
+  8.835434823955467E+025
+  8.837890815909423E+025
+  8.837738815410923E+025
+  8.835586196720315E+025
+  8.832061462080333E+025
+  8.827776456190450E+025
+  8.823301708583700E+025
+  1.373847365606936E+026
+  1.373903707231190E+026
+  1.374034070194714E+026
+  1.374240365852908E+026
+  1.374511404952061E+026
+  1.374818444572820E+026
+  1.375112167251937E+026
+  1.375321725028431E+026
+  1.375356252350584E+026
+  1.375109518693652E+026
+  1.374467846689448E+026
+  1.373320808641902E+026
+  1.371573878857536E+026
+  1.369161762364356E+026
+  1.366060557332513E+026
+  1.362296493507427E+026
+  1.357948833375985E+026
+  1.353144649269444E+026
+  1.348043659312224E+026
+  1.342812192115338E+026
+  1.337586650874166E+026
+  1.332428437411827E+026
+  1.327273950788541E+026
+  1.321884726328068E+026
+  1.315803794640511E+026
+  1.308324789546460E+026
+  1.298480247341608E+026
+  1.285055080114800E+026
+  1.266630548226227E+026
+  1.241663187661080E+026
+  1.208601672100071E+026
+  1.166041695380882E+026
+  1.112913651956807E+026
+  1.048689487918698E+026
+  9.735838804386410E+025
+  8.887128870015067E+025
+  7.961647719316379E+025
+  6.989393072444026E+025
+  6.007293920494743E+025
+  5.055535902947429E+025
+  4.172937587955516E+025
+  3.390907108406074E+025
+  2.725095154251963E+025
+  2.174582566266436E+025
+  1.728691930085346E+025
+  1.372728155101590E+025
+  1.091361790507500E+025
+  8.703934128862665E+024
+  6.975089998677136E+024
+  5.624593712504306E+024
+  4.569432647102941E+024
+  3.743615604992755E+024
+  3.095359085219097E+024
+  2.584391339356582E+024
+  2.179581626829480E+024
+  1.856956757025414E+024
+  1.598093606577436E+024
+  1.388843871342201E+024
+  1.218337183487367E+024
+  1.078209858017331E+024
+  9.620125944664617E+023
+  8.647580314294847E+023
+  7.825764722477444E+023
+  7.124546821006378E+023
+  6.520381984682008E+023
+  5.994821151132916E+023
+  5.533389036729344E+023
+  5.124746790122996E+023
+  4.760075746936965E+023
+  4.432637780061598E+023
+  4.137485155224453E+023
+  3.871311671190410E+023
+  3.632460982081829E+023
+  3.421142740331689E+023
+  3.239960420340160E+023
+  3.094937765243295E+023
+  2.997359545894440E+023
+  2.966937157885820E+023
+  3.037093951242596E+023
+  3.263560041072660E+023
+  3.737977032434159E+023
+  4.608802812746480E+023
+  6.112348930515339E+023
+  8.616987014373778E+023
+  1.268286766114211E+024
+  1.913696715264496E+024
+  2.915753303901760E+024
+  4.435132474983844E+024
+  6.678987798638495E+024
+  9.894706229829856E+024
+  1.434523948240618E+025
+  2.025521579045345E+025
+  2.772760437051850E+025
+  3.668398434431848E+025
+  4.686570209245498E+025
+  5.786221314409144E+025
+  6.916587353866707E+025
+  8.024528123049399E+025
+  9.061836347825562E+025
+  9.990883447553423E+025
+  1.078769526166711E+026
+  1.144239093061767E+026
+  1.195754595315189E+026
+  1.234531863127348E+026
+  1.262414731399727E+026
+  1.281561452296660E+026
+  1.294181803277156E+026
+  1.302337784862954E+026
+  1.307807546104836E+026
+  1.312006012958854E+026
+  1.315953978336014E+026
+  1.320287443239349E+026
+  1.325299009228080E+026
+  1.331002512945859E+026
+  1.337211184358634E+026
+  1.343619165885660E+026
+  1.349876937263147E+026
+  1.355653261560580E+026
+  1.360679303572035E+026
+  1.364773786932847E+026
+  1.367850749682535E+026
+  1.369913375766640E+026
+  1.371038557382836E+026
+  1.371357071313298E+026
+  1.371033151746531E+026
+  1.370245430114682E+026
+  1.369170451999043E+026
+  1.367970230550990E+026
+  1.366784279373884E+026
+  1.365725448217453E+026
+  2.323338874062020E+026
+  2.323417559205505E+026
+  2.323633547239950E+026
+  2.323993725294015E+026
+  2.324481867690762E+026
+  2.325050607567122E+026
+  2.325615892142697E+026
+  2.326055056943141E+026
+  2.326209263564954E+026
+  2.325891487457302E+026
+  2.324900305376661E+026
+  2.323038671197684E+026
+  2.320136271154976E+026
+  2.316073243670358E+026
+  2.310802060913095E+026
+  2.304363632676534E+026
+  2.296893401410523E+026
+  2.288613394897104E+026
+  2.279806999600496E+026
+  2.270774743483312E+026
+  2.261771628427737E+026
+  2.252929315890688E+026
+  2.244169355785397E+026
+  2.235116191796287E+026
+  2.225020462826494E+026
+  2.212703921369333E+026
+  2.196537147385996E+026
+  2.174460430150705E+026
+  2.144057031537201E+026
+  2.102686527778050E+026
+  2.047683399543712E+026
+  1.976621128398061E+026
+  1.887633054244277E+026
+  1.779766954627730E+026
+  1.653331161295009E+026
+  1.510169406161799E+026
+  1.353786940548678E+026
+  1.189252811974603E+026
+  1.022832741812038E+026
+  8.613661356873246E+025
+  7.114786421954637E+025
+  5.785495488457980E+025
+  4.652824733038340E+025
+  3.715580904629106E+025
+  2.955894379733487E+025
+  2.348982563885725E+025
+  1.868915778558536E+025
+  1.491633171556104E+025
+  1.196241836974545E+025
+  9.653340282681843E+024
+  7.847975669080451E+024
+  6.434045873224664E+024
+  5.323376814448474E+024
+  4.447345059120087E+024
+  3.752865572397161E+024
+  3.199030191588070E+024
+  2.754380188876115E+024
+  2.394740415474888E+024
+  2.101524722603277E+024
+  1.860423859549599E+024
+  1.660397054669210E+024
+  1.492901151076026E+024
+  1.351303644206572E+024
+  1.230437065710905E+024
+  1.126261520723947E+024
+  1.035609831273318E+024
+  9.559958452460881E+023
+  8.854712914512319E+023
+  8.225203996376026E+023
+  7.659847066892319E+023
+  7.150134374170514E+023
+  6.690380701685069E+023
+  6.277738221966759E+023
+  5.912567361549784E+023
+  5.599341602368460E+023
+  5.348406340613866E+023
+  5.179132161581801E+023
+  5.125335938225810E+023
+  5.244328782837193E+023
+  5.631623306959666E+023
+  6.444202023008591E+023
+  7.936249647550432E+023
+  1.051216650139889E+024
+  1.480200852687772E+024
+  2.176328602128235E+024
+  3.280869738242498E+024
+  4.994952624082937E+024
+  7.592618589164829E+024
+  1.142681306644030E+025
+  1.691846262590283E+025
+  2.451407900855037E+025
+  3.459357131284564E+025
+  4.732807888244556E+025
+  6.257857249745463E+025
+  7.989872161011630E+025
+  9.858422722219644E+025
+  1.177671483262332E+026
+  1.365415235581027E+026
+  1.540880864667351E+026
+  1.697701665635313E+026
+  1.831854489659473E+026
+  1.941726458993250E+026
+  2.027828191132591E+026
+  2.092297722857643E+026
+  2.138333191873209E+026
+  2.169655773984839E+026
+  2.190060472714400E+026
+  2.203076343928919E+026
+  2.211735248396448E+026
+  2.218437854215735E+026
+  2.224902775428628E+026
+  2.232184803864591E+026
+  2.240748165073313E+026
+  2.250579613965798E+026
+  2.261324566779928E+026
+  2.272428677096883E+026
+  2.283268491493093E+026
+  2.293258420863321E+026
+  2.301926541284135E+026
+  2.308957329691948E+026
+  2.314204124332868E+026
+  2.317677423946070E+026
+  2.319517153712696E+026
+  2.319957386360559E+026
+  2.319290095386618E+026
+  2.317831402273871E+026
+  2.315892448972852E+026
+  2.313757409858047E+026
+  2.311669416238833E+026
+  2.309823263617713E+026
+  2.446238518515874E+026
+  2.446330669065875E+026
+  2.446567206215440E+026
+  2.446954483122221E+026
+  2.447474377695898E+026
+  2.448076028428780E+026
+  2.448670293259414E+026
+  2.449128135115751E+026
+  2.449283712088425E+026
+  2.448943397979148E+026
+  2.447900953046523E+026
+  2.445957926132234E+026
+  2.442947719476651E+026
+  2.438760882674437E+026
+  2.433368153621522E+026
+  2.426836992458875E+026
+  2.419337066962529E+026
+  2.411130394207916E+026
+  2.402542738965929E+026
+  2.393914547355521E+026
+  2.385532142253699E+026
+  2.377542887392296E+026
+  2.369861115675337E+026
+  2.362074311127280E+026
+  2.353360892026163E+026
+  2.342431728943730E+026
+  2.327507305012013E+026
+  2.306341502820442E+026
+  2.276301731111854E+026
+  2.234513488768481E+026
+  2.178074802289226E+026
+  2.104340780463583E+026
+  2.011268952530352E+026
+  1.897800780146443E+026
+  1.764234205072973E+026
+  1.612519919356045E+026
+  1.446398219564908E+026
+  1.271295669766709E+026
+  1.093932374633073E+026
+  9.216540014091798E+025
+  7.615863220102580E+025
+  6.195261147435972E+025
+  4.984061942439023E+025
+  3.981326794613990E+025
+  3.168192691091901E+025
+  2.518324011018580E+025
+  2.004096093417901E+025
+  1.599837954887139E+025
+  1.283236193504829E+025
+  1.035685287360815E+025
+  8.420926765237902E+024
+  6.904442125120974E+024
+  5.713007571628104E+024
+  4.773131973106770E+024
+  4.027945025903758E+024
+  3.433608076146594E+024
+  2.956399602377137E+024
+  2.570399276109150E+024
+  2.255674957690119E+024
+  1.996878235843967E+024
+  1.782164583708730E+024
+  1.602367598640450E+024
+  1.450370041065943E+024
+  1.320626199644964E+024
+  1.208800091215515E+024
+  1.111492164310650E+024
+  1.026033698590938E+024
+  9.503332465890876E+023
+  8.827635703030566E+023
+  8.220809533084724E+023
+  7.673719476812980E+023
+  7.180260684776350E+023
+  6.737373713998501E+023
+  6.345442262162089E+023
+  6.009263687234919E+023
+  5.739935600084258E+023
+  5.558237904494420E+023
+  5.500446583150325E+023
+  5.628035784848900E+023
+  6.043445884951983E+023
+  6.915025485142313E+023
+  8.515325077993777E+023
+  1.127789461840930E+024
+  1.587807972763472E+024
+  2.334199621603073E+024
+  3.518317427836036E+024
+  5.355578651730124E+024
+  8.139380444318144E+024
+  1.224740757814659E+025
+  1.812977421376729E+025
+  2.626341557119337E+025
+  3.705315402721780E+025
+  5.067934169954778E+025
+  6.698938726024632E+025
+  8.550115408819385E+025
+  1.054562539460684E+026
+  1.259215804782360E+026
+  1.459242992755630E+026
+  1.645857141167666E+026
+  1.812240801720151E+026
+  1.954099658975802E+026
+  2.069732057101601E+026
+  2.159719410122754E+026
+  2.226392464816656E+026
+  2.273221565024093E+026
+  2.304239661160254E+026
+  2.323559627810934E+026
+  2.335008832455813E+026
+  2.341879860028401E+026
+  2.346785293770090E+026
+  2.351601527919626E+026
+  2.357486746701942E+026
+  2.364958207087778E+026
+  2.374012741420185E+026
+  2.384272587213483E+026
+  2.395137705161557E+026
+  2.405926959435206E+026
+  2.415994312208622E+026
+  2.424811800411390E+026
+  2.432017062547603E+026
+  2.437428249632992E+026
+  2.441032775314969E+026
+  2.442958566225886E+026
+  2.443436894905559E+026
+  2.442763869441336E+026
+  2.441264355037139E+026
+  2.439260675134481E+026
+  2.437048819056742E+026
+  2.434883030674640E+026
+  2.432967632888612E+026
+  1.672698982887561E+026
+  1.672752026743999E+026
+  1.672902686512188E+026
+  1.673156035210691E+026
+  1.673500687717813E+026
+  1.673902964398775E+026
+  1.674302773980501E+026
+  1.674612020824451E+026
+  1.674716069787300E+026
+  1.674479131141984E+026
+  1.673753766129996E+026
+  1.672393965149649E+026
+  1.670270835679484E+026
+  1.667289369659802E+026
+  1.663404057225936E+026
+  1.658630585004131E+026
+  1.653050638870626E+026
+  1.646806952895038E+026
+  1.640086286356043E+026
+  1.633089064919161E+026
+  1.625985992511602E+026
+  1.618863881088966E+026
+  1.611664985387802E+026
+  1.604125941994969E+026
+  1.595723703879696E+026
+  1.585636467142381E+026
+  1.572727528344934E+026
+  1.555559476362022E+026
+  1.532445322653708E+026
+  1.501542097876103E+026
+  1.460990626697046E+026
+  1.409101670170590E+026
+  1.344582202298075E+026
+  1.266785436312546E+026
+  1.175954666934268E+026
+  1.073416447623600E+026
+  9.616683509219141E+025
+  8.443083411929553E+025
+  7.257738192834213E+025
+  6.109002540591371E+025
+  5.043643546903789E+025
+  4.099544840684165E+025
+  3.295609820334420E+025
+  2.630756473223191E+025
+  2.092127637112590E+025
+  1.662014477591958E+025
+  1.321937451640892E+025
+  1.054775105261306E+025
+  8.456761115043022E+024
+  6.822767091880021E+024
+  5.545606072885797E+024
+  4.545633304766327E+024
+  3.760334586601897E+024
+  3.141079085334356E+024
+  2.650262958877151E+024
+  2.258918954247559E+024
+  1.944778619216729E+024
+  1.690734617839685E+024
+  1.483638376009466E+024
+  1.313369604461680E+024
+  1.172121517263287E+024
+  1.053854663513789E+024
+  9.538812141049630E+023
+  8.685494642878652E+023
+  7.950049827114049E+023
+  7.310102775857741E+023
+  6.748091913053552E+023
+  6.250256589765888E+023
+  5.805891903513221E+023
+  5.406817055546924E+023
+  5.047024572290104E+023
+  4.722500523893185E+023
+  4.431235054727510E+023
+  4.173484601655011E+023
+  3.952411623793340E+023
+  3.775328266532228E+023
+  3.655926233283543E+023
+  3.618110899850819E+023
+  3.702401624770522E+023
+  3.976337419749537E+023
+  4.550943762378219E+023
+  5.606027328651218E+023
+  7.427717263288746E+023
+  1.046191162447343E+024
+  1.538644023260506E+024
+  2.320168716993854E+024
+  3.533246155610522E+024
+  5.372099985631791E+024
+  8.087025280393918E+024
+  1.197677119238084E+025
+  1.735865412670380E+025
+  2.450338661022283E+025
+  3.353440790318083E+025
+  4.435591711182837E+025
+  5.665461929295037E+025
+  6.993430693628392E+025
+  8.358230313713378E+025
+  9.695815016468324E+025
+  1.094817953752305E+026
+  1.207015218036950E+026
+  1.303307383541856E+026
+  1.382529055679831E+026
+  1.445014401354780E+026
+  1.492247717348771E+026
+  1.526463135140824E+026
+  1.550265372040794E+026
+  1.566312453204216E+026
+  1.577075840392604E+026
+  1.584677427949836E+026
+  1.590795443506079E+026
+  1.596629206856165E+026
+  1.602912700217667E+026
+  1.609966871104982E+026
+  1.617779822447410E+026
+  1.626102948087614E+026
+  1.634550574951935E+026
+  1.642691600269579E+026
+  1.650124201527350E+026
+  1.656528446960763E+026
+  1.661695577642216E+026
+  1.665536012808335E+026
+  1.668070443875633E+026
+  1.669409781221755E+026
+  1.669729956811728E+026
+  1.669246212497860E+026
+  1.668189276139103E+026
+  1.666784889534044E+026
+  1.665238447978028E+026
+  1.663725271768478E+026
+  1.662385668371831E+026
+  5.285797633901394E+025
+  5.285681305866199E+025
+  5.286066932796755E+025
+  5.287030569262323E+025
+  5.288581076671427E+025
+  5.290633215336839E+025
+  5.292986909212498E+025
+  5.295316234845935E+025
+  5.297170844456046E+025
+  5.297993453928960E+025
+  5.297154711308493E+025
+  5.294004074815498E+025
+  5.287933591844381E+025
+  5.278449165732775E+025
+  5.265241116168333E+025
+  5.248243605649060E+025
+  5.227671311256157E+025
+  5.204021748253689E+025
+  5.178033249883946E+025
+  5.150592176358875E+025
+  5.122588531948951E+025
+  5.094726337342431E+025
+  5.067302869365664E+025
+  5.039978006339017E+025
+  5.011560223038714E+025
+  4.979838500429008E+025
+  4.941489480780336E+025
+  4.892087220633052E+025
+  4.826239722362801E+025
+  4.737872315044340E+025
+  4.620671701064515E+025
+  4.468693107386677E+025
+  4.277112473764492E+025
+  4.043072809437939E+025
+  3.766529101675042E+025
+  3.450946554268375E+025
+  3.103669336989082E+025
+  2.735777356729310E+025
+  2.361312059799332E+025
+  1.995886739091784E+025
+  1.654879698481363E+025
+  1.351014075728556E+025
+  1.090959031783681E+025
+  8.748728852318095E+024
+  6.990064108401973E+024
+  5.579359385716549E+024
+  4.458954462637884E+024
+  3.574837709456805E+024
+  2.879785107358411E+024
+  2.334227039479272E+024
+  1.905924527047131E+024
+  1.569109317947570E+024
+  1.303456646692903E+024
+  1.093081563121379E+024
+  9.256454400625812E+023
+  7.916016424503596E+023
+  6.835796567502050E+023
+  5.958933692854893E+023
+  5.241544439636680E+023
+  4.649715898832645E+023
+  4.157184315956103E+023
+  3.743553321163326E+023
+  3.392931917774176E+023
+  3.092896621137831E+023
+  2.833702756944295E+023
+  2.607686916757722E+023
+  2.408816238032029E+023
+  2.232351035930062E+023
+  2.074596015320309E+023
+  1.932722610243481E+023
+  1.804651856933036E+023
+  1.688994749968222E+023
+  1.585056786916760E+023
+  1.492927545073832E+023
+  1.413697822749645E+023
+  1.349880682110649E+023
+  1.306164933677837E+023
+  1.290708207409228E+023
+  1.317290714014837E+023
+  1.408807620089386E+023
+  1.602778209894639E+023
+  1.959776451599623E+023
+  2.575886132760476E+023
+  3.600333861477880E+023
+  5.259128606619642E+023
+  7.884463980205573E+023
+  1.194728090010035E+024
+  1.808609431171575E+024
+  2.711840242417927E+024
+  4.001170501919795E+024
+  5.778065866252729E+024
+  8.126896760484422E+024
+  1.108182449182649E+025
+  1.460387554789662E+025
+  1.858285367618295E+025
+  2.285017118050958E+025
+  2.720195271112677E+025
+  3.142892141484688E+025
+  3.534540750632307E+025
+  3.881103159736794E+025
+  4.174170763304107E+025
+  4.411001869050982E+025
+  4.593746816528807E+025
+  4.728210457753370E+025
+  4.822477696403266E+025
+  4.885635744105345E+025
+  4.926721541767166E+025
+  4.953939044390970E+025
+  4.974140334707977E+025
+  4.992542098940946E+025
+  5.012643326027710E+025
+  5.036310170869573E+025
+  5.063993020621003E+025
+  5.095037134340216E+025
+  5.128043704083486E+025
+  5.161236302375669E+025
+  5.192791314794998E+025
+  5.221100772368828E+025
+  5.244950019464966E+025
+  5.263607285355489E+025
+  5.276834290405943E+025
+  5.284835285441081E+025
+  5.288166539241025E+025
+  5.287628630702887E+025
+  5.284158768483869E+025
+  5.278732433614227E+025
+  5.272279981863278E+025
+  5.265624374437448E+025
+  5.259442028071224E+025
+  5.254244221520656E+025
+  1.346111168060689E+022
+  1.345947045561852E+022
+  1.346033638541589E+022
+  1.346423946365115E+022
+  1.347143493138060E+022
+  1.348178978412303E+022
+  1.349469445755035E+022
+  1.350901541703764E+022
+  1.352310170577989E+022
+  1.353485932502671E+022
+  1.354189916925525E+022
+  1.354175446333116E+022
+  1.353215566395485E+022
+  1.351134100561364E+022
+  1.347836992632448E+022
+  1.343339756390789E+022
+  1.337786317307899E+022
+  1.331454479072790E+022
+  1.324743831546636E+022
+  1.318143282965155E+022
+  1.312177564374172E+022
+  1.307334834040851E+022
+  1.303980527296549E+022
+  1.302265358846675E+022
+  1.302037404231580E+022
+  1.302769139137671E+022
+  1.303510157786851E+022
+  1.302875286560344E+022
+  1.299076378779405E+022
+  1.290004505281250E+022
+  1.273367343097273E+022
+  1.246883430941085E+022
+  1.208529194269625E+022
+  1.156824870156161E+022
+  1.091131264927999E+022
+  1.011912377406227E+022
+  9.209043763546020E+021
+  8.211277178722497E+021
+  7.166954250187450E+021
+  6.124109815871244E+021
+  5.132084729075108E+021
+  4.233704230319222E+021
+  3.454024868087119E+021
+  2.797964829980461E+021
+  2.257751712294560E+021
+  1.819628293008621E+021
+  1.467994301230218E+021
+  1.187712595417579E+021
+  9.652248741663364E+020
+  7.889555757147517E+020
+  6.493246738121000E+020
+  5.385691092279257E+020
+  4.504893944974415E+020
+  3.801846980160537E+020
+  3.238076093547891E+020
+  2.783514096084786E+020
+  2.414727183001462E+020
+  2.113474258463958E+020
+  1.865557179547724E+020
+  1.659914502518262E+020
+  1.487913536218375E+020
+  1.342800965031024E+020
+  1.219278660401722E+020
+  1.113177452473666E+020
+  1.021207121446986E+020
+  9.407655395591270E+019
+  8.697937479223632E+019
+  8.066668760037945E+019
+  7.501133619017335E+019
+  6.991571253849113E+019
+  6.530794606020579E+019
+  6.113998106804454E+019
+  5.738777507846753E+019
+  5.405431379937988E+019
+  5.117685026507562E+019
+  4.884088086408052E+019
+  4.720506635156997E+019
+  4.654383423893824E+019
+  4.731801689636225E+019
+  5.028876946659283E+019
+  5.669609028879100E+019
+  6.852982399738801E+019
+  8.892611423890186E+019
+  1.227217871970695E+020
+  1.771856877307277E+020
+  2.629078049215813E+020
+  3.947478884927510E+020
+  5.926068888573385E+020
+  8.815738853966883E+020
+  1.290724949329785E+021
+  1.849558914392719E+021
+  2.580875608917006E+021
+  3.490379984440277E+021
+  4.559996927893227E+021
+  5.749379961417073E+021
+  7.000959152827452E+021
+  8.248103939820426E+021
+  9.425072801668594E+021
+  1.047621256221208E+022
+  1.136240254081315E+022
+  1.206383154571605E+022
+  1.257931633078768E+022
+  1.292311781012319E+022
+  1.312045961669972E+022
+  1.320280640035596E+022
+  1.320361751221565E+022
+  1.315493674013097E+022
+  1.308491532922857E+022
+  1.301621945475106E+022
+  1.296521909974078E+022
+  1.294184926025793E+022
+  1.295003875702543E+022
+  1.298859592341067E+022
+  1.305242124126935E+022
+  1.313389437064408E+022
+  1.322427130775872E+022
+  1.331493768887706E+022
+  1.339839900238641E+022
+  1.346894039945264E+022
+  1.352294457100209E+022
+  1.355890325764504E+022
+  1.357719015154483E+022
+  1.357967952984006E+022
+  1.356929499281291E+022
+  1.354955479198764E+022
+  1.352415361095413E+022
+  1.349660580126504E+022
+  1.346997288248130E+022
+  1.344668506519151E+022
+  1.342845279404184E+022
+  1.915090871876767E+026
+  1.915207538972335E+026
+  1.915409094025002E+026
+  1.915691485809003E+026
+  1.916033649590825E+026
+  1.916392322981939E+026
+  1.916698920963923E+026
+  1.916859268196962E+026
+  1.916756648761318E+026
+  1.916258994998466E+026
+  1.915230274095117E+026
+  1.913545280598890E+026
+  1.911106590162209E+026
+  1.907861820664219E+026
+  1.903818603798981E+026
+  1.899054148988276E+026
+  1.893716135777791E+026
+  1.888011927480531E+026
+  1.882183833461757E+026
+  1.876469449349110E+026
+  1.871047952463574E+026
+  1.865975435784438E+026
+  1.861114606832663E+026
+  1.856066089704521E+026
+  1.850109839216358E+026
+  1.842165656807002E+026
+  1.830781560007461E+026
+  1.814158052584352E+026
+  1.790215423454244E+026
+  1.756710033583191E+026
+  1.711403540397986E+026
+  1.652284972171275E+026
+  1.577838065365421E+026
+  1.487334352278856E+026
+  1.381116581332919E+026
+  1.260820078340478E+026
+  1.129467890016507E+026
+  9.913781392519990E+025
+  8.518473149979220E+025
+  7.166228367404123E+025
+  5.912429152547254E+025
+  4.801780894760409E+025
+  3.856503847661182E+025
+  3.075237140980127E+025
+  2.442744239048624E+025
+  1.938082964564938E+025
+  1.539419875496585E+025
+  1.226539807873145E+025
+  9.819189306034474E+024
+  7.909780177860248E+024
+  6.419140797970086E+024
+  5.253489113889967E+024
+  4.339273334628596E+024
+  3.619325488115694E+024
+  3.049480885394848E+024
+  2.595751267073903E+024
+  2.232034928357527E+024
+  1.938301031976733E+024
+  1.699171000660249E+024
+  1.502821594092747E+024
+  1.340142989919491E+024
+  1.204096038127034E+024
+  1.089223477899966E+024
+  9.912793181569280E+023
+  9.069485020124133E+023
+  8.336354273690123E+023
+  7.693050389291497E+023
+  7.123642603019446E+023
+  6.615747561112390E+023
+  6.159906946124488E+023
+  5.749176554239709E+023
+  5.378915007906794E+023
+  5.046794386568396E+023
+  4.753104112596987E+023
+  4.501494547683443E+023
+  4.300424038668781E+023
+  4.165754994822636E+023
+  4.125219991572536E+023
+  4.225881303943842E+023
+  4.546266820788005E+023
+  5.215590387017034E+023
+  6.443304459231606E+023
+  8.563010293951745E+023
+  1.209505531455631E+024
+  1.783118865314927E+024
+  2.694109325097607E+024
+  4.109250113722366E+024
+  6.256147958148716E+024
+  9.428510351484090E+024
+  1.397746353515068E+025
+  2.027676495784750E+025
+  2.864653562979624E+025
+  3.923504412126235E+025
+  5.193352180721847E+025
+  6.637696661828474E+025
+  8.198352221149915E+025
+  9.803159599493019E+025
+  1.137636861935119E+026
+  1.284903205368671E+026
+  1.416708047118322E+026
+  1.529577385346923E+026
+  1.622041519362507E+026
+  1.694410605488803E+026
+  1.748372595696089E+026
+  1.786527908729369E+026
+  1.811945622624089E+026
+  1.827789801469987E+026
+  1.837034580939181E+026
+  1.842267742128786E+026
+  1.845573712913213E+026
+  1.848484531978358E+026
+  1.851987449165419E+026
+  1.856577963121404E+026
+  1.862346306483327E+026
+  1.869084092924331E+026
+  1.876397108386971E+026
+  1.883811051649318E+026
+  1.890859746981320E+026
+  1.897149452875723E+026
+  1.902397307315392E+026
+  1.906445708932109E+026
+  1.909257164942706E+026
+  1.910895864352058E+026
+  1.911502644293521E+026
+  1.911268563436953E+026
+  1.910409829187120E+026
+  1.909145796924549E+026
+  1.907682116895941E+026
+  1.906199688780703E+026
+  1.904848526388440E+026
+  8.757078566958953E+025
+  8.757696174219917E+025
+  8.758647485373638E+025
+  8.759896786003840E+025
+  8.761334767231523E+025
+  8.762757217701465E+025
+  8.763852934279093E+025
+  8.764204215339555E+025
+  8.763301761043699E+025
+  8.760577483719215E+025
+  8.755455293942441E+025
+  8.747416135161277E+025
+  8.736071590404707E+025
+  8.721237735373103E+025
+  8.702997667734009E+025
+  8.681738920042727E+025
+  8.658151442849786E+025
+  8.633173120929031E+025
+  8.607873178738072E+025
+  8.583269723765153E+025
+  8.560085954258480E+025
+  8.538459362461619E+025
+  8.517628157277958E+025
+  8.495627483097616E+025
+  8.469033478661620E+025
+  8.432795187095758E+025
+  8.380193162347313E+025
+  8.302960465510770E+025
+  8.191597713242307E+025
+  8.035908688976920E+025
+  7.825773979109211E+025
+  7.552161697722598E+025
+  7.208340114061672E+025
+  6.791202648248749E+025
+  6.302543500090548E+025
+  5.750045570043728E+025
+  5.147689958748032E+025
+  4.515309662774420E+025
+  3.877126621363962E+025
+  3.259337613400688E+025
+  2.687107849207097E+025
+  2.180676419901924E+025
+  1.750013515249335E+025
+  1.394358050400980E+025
+  1.106654290098213E+025
+  8.772760652809245E+024
+  6.962169726635390E+024
+  5.542286140814179E+024
+  4.433042605390188E+024
+  3.567897070899834E+024
+  2.893029617044422E+024
+  2.365714323073966E+024
+  1.952469683163668E+024
+  1.627293076940472E+024
+  1.370112040050196E+024
+  1.165491030209235E+024
+  1.001585069843322E+024
+  8.693109106194030E+023
+  7.617000563288400E+023
+  6.733989250548293E+023
+  6.002855220132085E+023
+  5.391770233340652E+023
+  4.876075693703420E+023
+  4.436598951627040E+023
+  4.058380605924209E+023
+  3.729714994187358E+023
+  3.441429600774826E+023
+  3.186347639592044E+023
+  2.958892776294070E+023
+  2.754807175279815E+023
+  2.570965312610474E+023
+  2.405278131192029E+023
+  2.256697560675378E+023
+  2.125353623203262E+023
+  2.012890332028009E+023
+  1.923119667246789E+023
+  1.863195254403293E+023
+  1.845632186952279E+023
+  1.891682002854533E+023
+  2.036826058083339E+023
+  2.339480664330565E+023
+  2.894390980364479E+023
+  3.852548263371224E+023
+  5.449611535784384E+023
+  8.044392203742525E+023
+  1.216736416955101E+024
+  1.857549696985653E+024
+  2.830285492126631E+024
+  4.268532357180642E+024
+  6.332227549877060E+024
+  9.191981336980607E+024
+  1.299453472133577E+025
+  1.780905472769368E+025
+  2.358822363650101E+025
+  3.016822398861842E+025
+  3.728621525348880E+025
+  4.461501512249473E+025
+  5.181006755042213E+025
+  5.855666465278246E+025
+  6.460682186331246E+025
+  6.979981671038501E+025
+  7.406578635362321E+025
+  7.741585549069710E+025
+  7.992412069019144E+025
+  8.170667317461214E+025
+  8.290152047866934E+025
+  8.365163318925062E+025
+  8.409198025214305E+025
+  8.434055276478307E+025
+  8.449297124638635E+025
+  8.462015887549298E+025
+  8.476856930814626E+025
+  8.496246576063189E+025
+  8.520771533318893E+025
+  8.549650616535285E+025
+  8.581236230944147E+025
+  8.613486679467164E+025
+  8.644362306196134E+025
+  8.672116646539471E+025
+  8.695473340130483E+025
+  8.713696263740191E+025
+  8.726572554610527E+025
+  8.734336057575231E+025
+  8.737560759383090E+025
+  8.737047361732272E+025
+  8.733715070284389E+025
+  8.728506147706026E+025
+  8.722312576318302E+025
+  8.715927792283942E+025
+  8.710019360776271E+025
+  2.999394541869198E+026
+  2.999476524343205E+026
+  2.999777641653038E+026
+  3.000315878678558E+026
+  3.001075399554530E+026
+  3.001995194513399E+026
+  3.002961593456974E+026
+  3.003806372791262E+026
+  3.004311613099894E+026
+  3.004222929132804E+026
+  3.003271346380570E+026
+  3.001202557978155E+026
+  2.997811334672672E+026
+  2.992977633297064E+026
+  2.986699512793888E+026
+  2.979116909088149E+026
+  2.970519923178265E+026
+  2.961335630068064E+026
+  2.952088683472540E+026
+  2.943333343434523E+026
+  2.935557959248453E+026
+  2.929067061305886E+026
+  2.923850459673111E+026
+  2.919452411925733E+026
+  2.914856392133711E+026
+  2.908401939965075E+026
+  2.897749586653170E+026
+  2.879908408761415E+026
+  2.851338888825237E+026
+  2.808141561346341E+026
+  2.746338545733373E+026
+  2.662248577473338E+026
+  2.552944029716643E+026
+  2.416758762499503E+026
+  2.253788785461207E+026
+  2.066298165915381E+026
+  1.858920715131212E+026
+  1.638549373432866E+026
+  1.413844818229092E+026
+  1.194376768519231E+026
+  9.895214954865209E+025
+  8.070025619668415E+025
+  6.508610719920615E+025
+  5.211995263065128E+025
+  4.157576905097156E+025
+  3.312622711044193E+025
+  2.642326459671362E+025
+  2.114088568600980E+025
+  1.699416217351853E+025
+  1.374447640588590E+025
+  1.119755224202444E+025
+  9.198238141991187E+024
+  7.624278022353840E+024
+  6.380227472920716E+024
+  5.392040445539708E+024
+  4.602501778201709E+024
+  3.967500730942962E+024
+  3.453058147451319E+024
+  3.032991191294088E+024
+  2.687098738674137E+024
+  2.399762276293173E+024
+  2.158873250702961E+024
+  1.955014117783273E+024
+  1.780835067068310E+024
+  1.630580951009098E+024
+  1.499733284083464E+024
+  1.384740483303607E+024
+  1.282816114122336E+024
+  1.191790180438033E+024
+  1.110002923243461E+024
+  1.036234721942726E+024
+  9.696702083824422E+023
+  9.099005154190439E+023
+  8.569759803766249E+023
+  8.115344950175693E+023
+  7.750507603105452E+023
+  7.502827254335554E+023
+  7.420382787575085E+023
+  7.584532443686380E+023
+  8.130655732403261E+023
+  9.280909340817223E+023
+  1.139441852092424E+024
+  1.504154367414868E+024
+  2.110921431957321E+024
+  3.094245822153902E+024
+  4.652093205875404E+024
+  7.065523047805866E+024
+  1.071620601355252E+025
+  1.609365764075141E+025
+  2.377840604557242E+025
+  3.438093354850561E+025
+  4.841135465007169E+025
+  6.608068800161760E+025
+  8.716164936579584E+025
+  1.109970979523752E+026
+  1.365741518462502E+026
+  1.626608372819947E+026
+  1.879849303170787E+026
+  2.114092631993788E+026
+  2.320644977115886E+026
+  2.494185632922184E+026
+  2.632823387147207E+026
+  2.737660226101086E+026
+  2.812068860519703E+026
+  2.860878964547608E+026
+  2.889613233291764E+026
+  2.903851662737272E+026
+  2.908752024182746E+026
+  2.908723759820204E+026
+  2.907238972358660E+026
+  2.906761002685802E+026
+  2.908771588881188E+026
+  2.913877531780133E+026
+  2.921975861410235E+026
+  2.932453695836140E+026
+  2.944397363156181E+026
+  2.956786728974948E+026
+  2.968655618121763E+026
+  2.979206782451503E+026
+  2.987878083740000E+026
+  2.994363601255548E+026
+  2.998598435833149E+026
+  3.000719017135344E+026
+  3.001011282995809E+026
+  2.999856476709270E+026
+  2.997680009561698E+026
+  2.994906844819014E+026
+  2.991927146606785E+026
+  2.989073541058292E+026
+  2.986608758626823E+026
+  1.036756592067158E+026
+  1.036811024687345E+026
+  1.036915178910898E+026
+  1.037068325992404E+026
+  1.037260281874933E+026
+  1.037468369652552E+026
+  1.037655472512707E+026
+  1.037769625310588E+026
+  1.037745416144144E+026
+  1.037507668829398E+026
+  1.036977466349916E+026
+  1.036080116796847E+026
+  1.034754417500540E+026
+  1.032962239027169E+026
+  1.030697040483922E+026
+  1.027989633305835E+026
+  1.024909415149762E+026
+  1.021559413753342E+026
+  1.018063855679914E+026
+  1.014547658504143E+026
+  1.011108230046718E+026
+  1.007781147177712E+026
+  1.004502508765899E+026
+  1.001071813665362E+026
+  9.971199344667303E+025
+  9.920870541766855E+025
+  9.852153365492841E+025
+  9.755607401867156E+025
+  9.620278946720041E+025
+  9.434313171362197E+025
+  9.185851497066595E+025
+  8.864214152579868E+025
+  8.461327597274320E+025
+  7.973292605592399E+025
+  7.401903670879020E+025
+  6.755839464666276E+025
+  6.051180849382536E+025
+  5.310926302006088E+025
+  4.563309334371092E+025
+  3.838987481521041E+025
+  3.167518439857499E+025
+  2.572769471957046E+025
+  2.066593097962037E+025
+  1.648234607285488E+025
+  1.309523486100517E+025
+  1.039243117426077E+025
+  8.257046423239385E+024
+  6.580879156943596E+024
+  5.270143637593146E+024
+  4.246816802618555E+024
+  3.447732766323334E+024
+  2.822700103892041E+024
+  2.332351395924474E+024
+  1.946085100306066E+024
+  1.640257044287344E+024
+  1.396668259295657E+024
+  1.201340098761827E+024
+  1.043542992251951E+024
+  9.150375682850607E+023
+  8.094878147868758E+023
+  7.220106170014879E+023
+  6.488318193124284E+023
+  5.870246375803571E+023
+  5.343112812699436E+023
+  4.889128783387552E+023
+  4.494362450596908E+023
+  4.147887924355372E+023
+  3.841150278631744E+023
+  3.567498329737374E+023
+  3.321851321624076E+023
+  3.100478902045437E+023
+  2.900888092344404E+023
+  2.721829227434284E+023
+  2.563459143022105E+023
+  2.427740168446483E+023
+  2.319216374314480E+023
+  2.246406019424278E+023
+  2.224196770102118E+023
+  2.277845899269333E+023
+  2.449487391215065E+023
+  2.808436065585465E+023
+  3.467028094189636E+023
+  4.604152443553004E+023
+  6.498788791366358E+023
+  9.575351066066455E+023
+  1.446072956503994E+024
+  2.204857746982710E+024
+  3.355829118067000E+024
+  5.056308947132660E+024
+  7.494335762756743E+024
+  1.087002044076747E+025
+  1.535469850910125E+025
+  2.102764564304084E+025
+  2.783054383052633E+025
+  3.556804109852317E+025
+  4.392894822020632E+025
+  5.252759261728604E+025
+  6.095940167454806E+025
+  6.885646972373337E+025
+  7.593065097735935E+025
+  8.199722794119509E+025
+  8.697857386770254E+025
+  9.089200920146809E+025
+  9.382819095667327E+025
+  9.592615811472657E+025
+  9.734956795040949E+025
+  9.826672026512405E+025
+  9.883536212571237E+025
+  9.919225525670320E+025
+  9.944701737399205E+025
+  9.967961816057188E+025
+  9.994091517534818E+025
+  1.002556192231656E+026
+  1.006270351900339E+026
+  1.010428558943769E+026
+  1.014812504319569E+026
+  1.019165372733418E+026
+  1.023238831325860E+026
+  1.026826927167567E+026
+  1.029785936464659E+026
+  1.032041226951984E+026
+  1.033583647871385E+026
+  1.034458870905292E+026
+  1.034753305621799E+026
+  1.034579409332382E+026
+  1.034061863477729E+026
+  1.033325527382246E+026
+  1.032486277060987E+026
+  1.031645073061365E+026
+  1.030884756873599E+026
+  9.239719695587614E+020
+  9.237992239080110E+020
+  9.238329745587604E+020
+  9.241210965485625E+020
+  9.246900560740216E+020
+  9.255354191630387E+020
+  9.266141003754971E+020
+  9.278395971133783E+020
+  9.290812922271576E+020
+  9.301689627682642E+020
+  9.309030552992127E+020
+  9.310705852980574E+020
+  9.304659188476854E+020
+  9.289149518017388E+020
+  9.263003613341813E+020
+  9.225848810608095E+020
+  9.178290738820481E+020
+  9.121999346744636E+020
+  9.059669720584442E+020
+  8.994833168798224E+020
+  8.931509165302096E+020
+  8.873708842731594E+020
+  8.824823198501550E+020
+  8.786950409015090E+020
+  8.760232918724389E+020
+  8.742283572064314E+020
+  8.727780281324476E+020
+  8.708302154341155E+020
+  8.672469633857246E+020
+  8.606439384387171E+020
+  8.494790640713445E+020
+  8.321818037276984E+020
+  8.073207111430060E+020
+  7.738002902934259E+020
+  7.310685438538315E+020
+  6.793048731506240E+020
+  6.195475603112175E+020
+  5.537167009032928E+020
+  4.844985599600747E+020
+  4.150841826256285E+020
+  3.487954333996871E+020
+  2.885528377710105E+020
+  2.361007387556409E+020
+  1.918288261493505E+020
+  1.552645165070010E+020
+  1.255216160537491E+020
+  1.015792491571312E+020
+  8.243856746691838E+019
+  6.719975391629573E+019
+  5.509105932924090E+019
+  4.547124562473737E+019
+  3.781881898772854E+019
+  3.171591265497574E+019
+  2.683112808583083E+019
+  2.290349057195572E+019
+  1.972843483474959E+019
+  1.714605792040848E+019
+  1.503153321336394E+019
+  1.328742920218828E+019
+  1.183763261684948E+019
+  1.062258497869204E+019
+  9.595574184110154E+018
+  8.719862485949216E+018
+  7.966471485364243E+018
+  7.312480198419495E+018
+  6.739722714064143E+018
+  6.233797256341667E+018
+  5.783319084552905E+018
+  5.379366594198611E+018
+  5.015084646927876E+018
+  4.685423432751656E+018
+  4.387007504438510E+018
+  4.118151375253259E+018
+  3.879070035969319E+018
+  3.672381907269423E+018
+  3.504078035423667E+018
+  3.385248125630241E+018
+  3.335027647941782E+018
+  3.385477691323835E+018
+  3.589441724896778E+018
+  4.032833147138504E+018
+  4.853242597191950E+018
+  6.267076664958037E+018
+  8.607364558653617E+018
+  1.237338780700630E+019
+  1.829060179777575E+019
+  2.737383987567425E+019
+  4.097732298014644E+019
+  6.080074030911953E+019
+  8.880221341960479E+019
+  1.269498852656746E+020
+  1.767329482345001E+020
+  2.384555713643385E+020
+  3.107943096215751E+020
+  3.909213437374263E+020
+  4.748691482143331E+020
+  5.581026850425447E+020
+  6.362041081144145E+020
+  7.054952087059577E+020
+  7.634625824009505E+020
+  8.089273813915481E+020
+  8.419785075793544E+020
+  8.637381131588408E+020
+  8.760434977768167E+020
+  8.811178425499969E+020
+  8.812778935498239E+020
+  8.787021454732810E+020
+  8.752652279181286E+020
+  8.724345366821461E+020
+  8.712217095449253E+020
+  8.721812249295283E+020
+  8.754486193334223E+020
+  8.808102312866787E+020
+  8.877948959761187E+020
+  8.957763940635109E+020
+  9.040747311766282E+020
+  9.120452457453694E+020
+  9.191472307489842E+020
+  9.249876342767603E+020
+  9.293394857841017E+020
+  9.321380730182884E+020
+  9.334601337895120E+020
+  9.334924024937808E+020
+  9.324957337024718E+020
+  9.307696515570026E+020
+  9.286202090842054E+020
+  9.263329292761103E+020
+  9.241524093811632E+020
+  9.222692514440143E+020
+  9.208140089967857E+020
+  1.910247859306543E+026
+  1.910348556083111E+026
+  1.910541757273749E+026
+  1.910826235404916E+026
+  1.911183248342843E+026
+  1.911570944945915E+026
+  1.911920806259859E+026
+  1.912136955103391E+026
+  1.912098836391700E+026
+  1.911668134429268E+026
+  1.910700032443001E+026
+  1.909058067715592E+026
+  1.906631375890789E+026
+  1.903352497437350E+026
+  1.899213159485869E+026
+  1.894274902042767E+026
+  1.888671243261636E+026
+  1.882598303078039E+026
+  1.876291507637505E+026
+  1.869987273187718E+026
+  1.863870402640880E+026
+  1.858010138367303E+026
+  1.852290082867087E+026
+  1.846339154768728E+026
+  1.839472074211332E+026
+  1.830648408943240E+026
+  1.818459019436168E+026
+  1.801148059985201E+026
+  1.776677773196263E+026
+  1.742842129541206E+026
+  1.697433338745547E+026
+  1.638461232595512E+026
+  1.564418073625356E+026
+  1.474569520374231E+026
+  1.369236701804049E+026
+  1.250017480704609E+026
+  1.119883220543244E+026
+  9.830897839384595E+025
+  8.448663992582078E+025
+  7.108951123856963E+025
+  5.866576944206266E+025
+  4.765844671759408E+025
+  3.828814463613500E+025
+  3.054188409098659E+025
+  2.426915657402331E+025
+  1.926283641059710E+025
+  1.530687263198996E+025
+  1.220116046157181E+025
+  9.772187566466510E+024
+  7.875560003636414E+024
+  6.394349608344612E+024
+  5.235625040319637E+024
+  4.326481615262478E+024
+  3.610238044451309E+024
+  3.043092516199453E+024
+  2.591325547711779E+024
+  2.229033501671423E+024
+  1.936330935741261E+024
+  1.697945690582926E+024
+  1.502132247277136E+024
+  1.339837458257732E+024
+  1.204063456584172E+024
+  1.089383032209107E+024
+  9.915720608312771E+023
+  9.073313966741105E+023
+  8.340770191284282E+023
+  7.697823096889164E+023
+  7.128603457377297E+023
+  6.620772857670733E+023
+  6.164905751430420E+023
+  5.754081538145817E+023
+  5.383675007301854E+023
+  5.051367368838583E+023
+  4.757448844297606E+023
+  4.505558465704354E+023
+  4.304123307344017E+023
+  4.168940079357281E+023
+  4.127615596732329E+023
+  4.226982173935449E+023
+  4.545159185533205E+023
+  5.210650833279441E+023
+  6.431701530590083E+023
+  8.539897499518987E+023
+  1.205229793662218E+024
+  1.775541668525995E+024
+  2.681083573363583E+024
+  4.087416854783240E+024
+  6.220408378180041E+024
+  9.371393498850669E+024
+  1.388847765273750E+025
+  2.014193024182820E+025
+  2.844845185979980E+025
+  3.895392051065090E+025
+  5.154910825935067E+025
+  6.587086071607773E+025
+  8.134154074523904E+025
+  9.724581269059190E+025
+  1.128337438946772E+026
+  1.274238040244465E+026
+  1.404826788882914E+026
+  1.516690394321193E+026
+  1.608402170529349E+026
+  1.680295938724243E+026
+  1.734064705807467E+026
+  1.772297631802559E+026
+  1.798039283628342E+026
+  1.814419220612037E+026
+  1.824370227439343E+026
+  1.830434812670325E+026
+  1.834650901687986E+026
+  1.838505264842455E+026
+  1.842943325518221E+026
+  1.848424074330864E+026
+  1.855007997979833E+026
+  1.862464642701826E+026
+  1.870385741116150E+026
+  1.878290715694438E+026
+  1.885714153915387E+026
+  1.892269001566379E+026
+  1.897683663132293E+026
+  1.901814956946777E+026
+  1.904641582587738E+026
+  1.906244450668725E+026
+  1.906780596690098E+026
+  1.906455915997350E+026
+  1.905499470509511E+026
+  1.904141076873515E+026
+  1.902594234497336E+026
+  1.901045037289318E+026
+  1.899646157977879E+026
+  1.663397990529715E+026
+  1.663531973126276E+026
+  1.663720330242395E+026
+  1.663953161043968E+026
+  1.664207237952192E+026
+  1.664442426388861E+026
+  1.664599863739779E+026
+  1.664602493519486E+026
+  1.664358250803697E+026
+  1.663766512817555E+026
+  1.662727778960291E+026
+  1.661155829985969E+026
+  1.658991257139702E+026
+  1.656214766513220E+026
+  1.652858070517381E+026
+  1.649009783638465E+026
+  1.644813671672191E+026
+  1.640456877864641E+026
+  1.636146421629299E+026
+  1.632073402131862E+026
+  1.628365912150068E+026
+  1.625033509799702E+026
+  1.621907933119767E+026
+  1.618586270416776E+026
+  1.614383771795663E+026
+  1.608303800781615E+026
+  1.599032161632958E+026
+  1.584962423627814E+026
+  1.564258107924739E+026
+  1.534956649803177E+026
+  1.495118354360451E+026
+  1.443020072525572E+026
+  1.377386790181926E+026
+  1.297643943678847E+026
+  1.204159502387376E+026
+  1.098430291853128E+026
+  9.831571605158805E+025
+  8.621563299202044E+025
+  7.400767209051476E+025
+  6.219363861761293E+025
+  5.125471334674982E+025
+  4.157713744168586E+025
+  3.335049589994520E+025
+  2.655927484898420E+025
+  2.106780435958085E+025
+  1.669147300750696E+025
+  1.323858174052597E+025
+  1.053207225146188E+025
+  8.418738444173063E+024
+  6.771313659663357E+024
+  5.486908728471469E+024
+  4.483878743103729E+024
+  3.698271914095013E+024
+  3.080443662003962E+024
+  2.592088730867787E+024
+  2.203764389935056E+024
+  1.892887487577876E+024
+  1.642148644927471E+024
+  1.438274966064802E+024
+  1.271074570463570E+024
+  1.132704168960472E+024
+  1.017110590469720E+024
+  9.196065839032182E+023
+  8.365495334882331E+023
+  7.650987005104641E+023
+  7.030322738507519E+023
+  6.486100220126390E+023
+  6.004708879522481E+023
+  5.575576831523083E+023
+  5.190633745102559E+023
+  4.843956073117421E+023
+  4.531584214167277E+023
+  4.251530588603423E+023
+  4.004039846464468E+023
+  3.792227073528802E+023
+  3.623320840098444E+023
+  3.510894648298154E+023
+  3.478708010589854E+023
+  3.567126298977089E+023
+  3.843573435439125E+023
+  4.419102009096357E+023
+  5.473899600391266E+023
+  7.295237488908261E+023
+  1.033165672766040E+024
+  1.526639540381695E+024
+  2.311003634070107E+024
+  3.530538436706721E+024
+  5.382451874166446E+024
+  8.121681034871790E+024
+  1.205369568169930E+025
+  1.750472539367220E+025
+  2.475596594958302E+025
+  3.394110787047827E+025
+  4.497183023452836E+025
+  5.753729379328530E+025
+  7.113699473658842E+025
+  8.514654848356727E+025
+  9.890712735113304E+025
+  1.118156451234788E+026
+  1.233954312907788E+026
+  1.333358752900203E+026
+  1.414997771035411E+026
+  1.479049381883799E+026
+  1.526901038233717E+026
+  1.560751311109050E+026
+  1.583227602207838E+026
+  1.597062579752001E+026
+  1.604846014158944E+026
+  1.608852155682924E+026
+  1.610935023653605E+026
+  1.612481822023165E+026
+  1.614414842346040E+026
+  1.617232418076842E+026
+  1.621078912012341E+026
+  1.625832655517156E+026
+  1.631200105713242E+026
+  1.636805098389925E+026
+  1.642264266996676E+026
+  1.647243068573093E+026
+  1.651490522494088E+026
+  1.654853916107052E+026
+  1.657277056049277E+026
+  1.658787161372844E+026
+  1.659475913399427E+026
+  1.659478997186105E+026
+  1.658956402469310E+026
+  1.658074914456047E+026
+  1.656994571588543E+026
+  1.655859658108361E+026
+  1.654793460515822E+026
+  1.183388836386171E+026
+  1.183419080109302E+026
+  1.183523011220851E+026
+  1.183705698872456E+026
+  1.183960211641352E+026
+  1.184263274830340E+026
+  1.184572155699124E+026
+  1.184823369677374E+026
+  1.184933609873481E+026
+  1.184803533206023E+026
+  1.184324563706577E+026
+  1.183388337691138E+026
+  1.181898113046511E+026
+  1.179781052014083E+026
+  1.176999776597654E+026
+  1.173561208049746E+026
+  1.169520534302773E+026
+  1.164978224591309E+026
+  1.160068386709103E+026
+  1.154937509691442E+026
+  1.149713756711520E+026
+  1.144468366711530E+026
+  1.139172195244839E+026
+  1.133651739767011E+026
+  1.127549939227603E+026
+  1.120297488955378E+026
+  1.111100380918431E+026
+  1.098948998614501E+026
+  1.082653517241586E+026
+  1.060909582541340E+026
+  1.032396944461921E+026
+  9.959112248561773E+025
+  9.505244549781273E+025
+  8.957628327617287E+025
+  8.317805398077737E+025
+  7.594981067023699E+025
+  6.806664497414471E+025
+  5.978188416368074E+025
+  5.140878600435676E+025
+  4.328939562490102E+025
+  3.575513434091176E+025
+  2.907503746915807E+025
+  2.338400088878048E+025
+  1.867538147959684E+025
+  1.485899848564652E+025
+  1.181012253144274E+025
+  9.398382798188550E+024
+  7.502870752288406E+024
+  6.018632898333892E+024
+  4.858242547052428E+024
+  3.950834403201429E+024
+  3.240031612084691E+024
+  2.681562119319634E+024
+  2.240969992906785E+024
+  1.891600035814347E+024
+  1.612909826339287E+024
+  1.389100463072534E+024
+  1.208029396275360E+024
+  1.060359892676966E+024
+  9.389024968529339E+023
+  8.381089104253681E+023
+  7.536850876439767E+023
+  6.822966176490484E+023
+  6.213450379591728E+023
+  5.687984242416473E+023
+  5.230634387491884E+023
+  4.828890840625829E+023
+  4.472948276082354E+023
+  4.155176880269930E+023
+  3.869744811644554E+023
+  3.612369126808382E+023
+  3.380188222379631E+023
+  3.171769568249264E+023
+  2.987296399078909E+023
+  2.829022838113482E+023
+  2.702158418824535E+023
+  2.616453689072207E+023
+  2.588925989889489E+023
+  2.648408549163381E+023
+  2.842944372139494E+023
+  3.251483061083486E+023
+  4.001841191668256E+023
+  5.297345562763865E+023
+  7.454742480308983E+023
+  1.095534532933040E+024
+  1.650920356358956E+024
+  2.512712983826224E+024
+  3.818626140643251E+024
+  5.746014160863171E+024
+  8.506386506885193E+024
+  1.232411980841886E+025
+  1.739017018047727E+025
+  2.379069819845126E+025
+  3.145621102490812E+025
+  4.016310064697823E+025
+  4.955848492383055E+025
+  5.920758781206401E+025
+  6.865676884433196E+025
+  7.749603525967533E+025
+  8.540704512373438E+025
+  9.218893597001666E+025
+  9.776153177617097E+025
+  1.021508365447619E+026
+  1.054640612207764E+026
+  1.078611146739647E+026
+  1.095276505650854E+026
+  1.106525579639458E+026
+  1.114109767677918E+026
+  1.119527902539852E+026
+  1.123960248899717E+026
+  1.128244419040303E+026
+  1.132886047901891E+026
+  1.138097025553222E+026
+  1.143853515663809E+026
+  1.149965193525947E+026
+  1.156146784891544E+026
+  1.162083664338704E+026
+  1.167485143745678E+026
+  1.172121783124588E+026
+  1.175845890994413E+026
+  1.178596734658761E+026
+  1.180393633144126E+026
+  1.181321095166710E+026
+  1.181510322204097E+026
+  1.181120406142166E+026
+  1.180320953666764E+026
+  1.179277190365275E+026
+  1.178138800067038E+026
+  1.177032873373721E+026
+  1.176060369631253E+026
+  1.628130674623123E+026
+  1.628302695021917E+026
+  1.628504430515859E+026
+  1.628718347762418E+026
+  1.628915624270721E+026
+  1.629053785654652E+026
+  1.629076037861285E+026
+  1.628912760695987E+026
+  1.628485325758969E+026
+  1.627712715607668E+026
+  1.626520799601357E+026
+  1.624853450154807E+026
+  1.622684371978640E+026
+  1.620028093246850E+026
+  1.616948049627878E+026
+  1.613559376922270E+026
+  1.610024034722969E+026
+  1.606536217899136E+026
+  1.603296717333789E+026
+  1.600476017282116E+026
+  1.598167424229781E+026
+  1.596333241281936E+026
+  1.594748669622937E+026
+  1.592949453668517E+026
+  1.590190076435625E+026
+  1.585419486590405E+026
+  1.577281004983565E+026
+  1.564142447915521E+026
+  1.544161812122044E+026
+  1.515393008485962E+026
+  1.475934534810488E+026
+  1.424120577700241E+026
+  1.358747604755123E+026
+  1.279319302862262E+026
+  1.186279256222499E+026
+  1.081186673479641E+026
+  9.667812033376504E+025
+  8.468861442286046E+025
+  7.261219598772961E+025
+  6.094448259586948E+025
+  5.015795678220195E+025
+  4.062933627329434E+025
+  3.254078239828676E+025
+  2.587288236428744E+025
+  2.048873533698269E+025
+  1.620411692033510E+025
+  1.282859127604864E+025
+  1.018675439924332E+025
+  8.127149429491426E+024
+  6.524186586007257E+024
+  5.276496994451126E+024
+  4.303766123511610E+024
+  3.543178792467777E+024
+  2.946045253631209E+024
+  2.474852734602040E+024
+  2.100810528468012E+024
+  1.801868602522858E+024
+  1.561151584650906E+024
+  1.365738896756354E+024
+  1.205724201071622E+024
+  1.073495489383757E+024
+  9.631869508948481E+023
+  8.702632177755557E+023
+  7.912049054483122E+023
+  7.232713204051751E+023
+  6.643218470427694E+023
+  6.126820007351310E+023
+  5.670436487587256E+023
+  5.263916829162999E+023
+  4.899517310419066E+023
+  4.571556044541502E+023
+  4.276234382397506E+023
+  4.011643419144094E+023
+  3.778014770435923E+023
+  3.578337490977228E+023
+  3.419561002619168E+023
+  3.314756157554041E+023
+  3.286837878761521E+023
+  3.374792177402716E+023
+  3.643824756546969E+023
+  4.201467759195619E+023
+  5.222407035175296E+023
+  6.985481078005364E+023
+  9.926614930815177E+023
+  1.471072525841937E+024
+  2.232273784124206E+024
+  3.417111001023035E+024
+  5.218451536479841E+024
+  7.886160875726150E+024
+  1.172044720113540E+025
+  1.704317362317671E+025
+  2.413384282694128E+025
+  3.312931438618467E+025
+  4.395009561912488E+025
+  5.629840936682916E+025
+  6.968882453292892E+025
+  8.351137951368312E+025
+  9.711845795804648E+025
+  1.099131732777685E+026
+  1.214193640635560E+026
+  1.313216681185436E+026
+  1.394741165533714E+026
+  1.458833713688531E+026
+  1.506763429811653E+026
+  1.540618066957678E+026
+  1.562932718425138E+026
+  1.576373472712868E+026
+  1.583492983658508E+026
+  1.586558542346177E+026
+  1.587445454488648E+026
+  1.587586341543792E+026
+  1.587967166463782E+026
+  1.589161098550157E+026
+  1.591390885863166E+026
+  1.594609429852467E+026
+  1.598587587518660E+026
+  1.602998692018509E+026
+  1.607491222937148E+026
+  1.611744128302806E+026
+  1.615502689663004E+026
+  1.618595772597060E+026
+  1.620937532298731E+026
+  1.622518156484746E+026
+  1.623388718814653E+026
+  1.623644163189334E+026
+  1.623406507420535E+026
+  1.622809600114385E+026
+  1.621987145112782E+026
+  1.621064547269105E+026
+  1.620153840678257E+026
+  6.260983061133881E+025
+  6.261680521493876E+025
+  6.262458960302565E+025
+  6.263241979377041E+025
+  6.263912649416879E+025
+  6.264305558135665E+025
+  6.264205043253454E+025
+  6.263351211648833E+025
+  6.261454210685110E+025
+  6.258218471084299E+025
+  6.253376320421277E+025
+  6.246727886217775E+025
+  6.238183127154021E+025
+  6.227800317163331E+025
+  6.215813426712114E+025
+  6.202639727719263E+025
+  6.188859027734110E+025
+  6.175157215357075E+025
+  6.162229419886674E+025
+  6.150642242382159E+025
+  6.140660055680120E+025
+  6.132046669209530E+025
+  6.123859744143674E+025
+  6.114260204344708E+025
+  6.100361755846276E+025
+  6.078146266633473E+025
+  6.042469573760776E+025
+  5.987180123011069E+025
+  5.905370388380804E+025
+  5.789777876460053E+025
+  5.633346469802941E+025
+  5.429945865817416E+025
+  5.175222359351963E+025
+  4.867515520874449E+025
+  4.508724596574950E+025
+  4.104955816948143E+025
+  3.666747824898363E+025
+  3.208686125543637E+025
+  2.748304070072784E+025
+  2.304330028045819E+025
+  1.894545850388102E+025
+  1.533055312561826E+025
+  1.226578449254098E+025
+  9.742207221516749E+024
+  7.706713671700447E+024
+  6.088612459708078E+024
+  4.815150975100835E+024
+  3.819496931137208E+024
+  3.044053501882423E+024
+  2.441135218492005E+024
+  1.972305080628040E+024
+  1.607146623855172E+024
+  1.321897642219261E+024
+  1.098159144207333E+024
+  9.217702542468674E+023
+  7.818733781135942E+023
+  6.701609443394644E+023
+  5.802809107076055E+023
+  5.073742675997888E+023
+  4.477188566031080E+023
+  3.984570420227739E+023
+  3.573885748408234E+023
+  3.228136325912341E+023
+  2.934142085408419E+023
+  2.681646833325746E+023
+  2.462645634319129E+023
+  2.270880750184627E+023
+  2.101466380405667E+023
+  1.950613012073460E+023
+  1.815430912921798E+023
+  1.693800274032497E+023
+  1.584304024033197E+023
+  1.486230092130509E+023
+  1.399665291855286E+023
+  1.325726543516901E+023
+  1.267011963908691E+023
+  1.228411588728000E+023
+  1.218504540437878E+023
+  1.251897333304960E+023
+  1.353037100419852E+023
+  1.562267927135199E+023
+  1.945174277299068E+023
+  2.606519472003729E+023
+  3.710212367980773E+023
+  5.506472887520687E+023
+  8.366291278412213E+023
+  1.282074851042698E+024
+  1.959797395846528E+024
+  2.964268447712180E+024
+  4.409213338545214E+024
+  6.416910568623236E+024
+  9.094142316143250E+024
+  1.249436424979877E+025
+  1.658971558583569E+025
+  2.126996369441939E+025
+  2.635369133810507E+025
+  3.161177980704976E+025
+  3.679997478698807E+025
+  4.169219201497774E+025
+  4.610705001682384E+025
+  4.992322899115786E+025
+  5.308299892639601E+025
+  5.558616542163606E+025
+  5.747806777305015E+025
+  5.883524539956951E+025
+  5.975151550172864E+025
+  6.032607827573932E+025
+  6.065430478018087E+025
+  6.082124041581923E+025
+  6.089755745347499E+025
+  6.093760321863929E+025
+  6.097919580330879E+025
+  6.104483204723660E+025
+  6.114395844277147E+025
+  6.127592196408149E+025
+  6.143319477600133E+025
+  6.160448493587932E+025
+  6.177741722557695E+025
+  6.194058146352115E+025
+  6.208487001993498E+025
+  6.220413410210723E+025
+  6.229526992066923E+025
+  6.235790214007858E+025
+  6.239385113627677E+025
+  6.240653153759600E+025
+  6.240035685731714E+025
+  6.238019755568395E+025
+  6.235095601077797E+025
+  6.231727820328343E+025
+  6.228337271970714E+025
+  1.794110601073600E+026
+  1.794168314951910E+026
+  1.794331278654473E+026
+  1.794604953223849E+026
+  1.794977077646687E+026
+  1.795411418115542E+026
+  1.795843382994726E+026
+  1.796178371687491E+026
+  1.796293431117941E+026
+  1.796043143249094E+026
+  1.795269953068948E+026
+  1.793818338623128E+026
+  1.791551774590986E+026
+  1.788370827960063E+026
+  1.784229967401918E+026
+  1.779150099876968E+026
+  1.773223615885231E+026
+  1.766608861339709E+026
+  1.759511543444146E+026
+  1.752151722365284E+026
+  1.744716740861361E+026
+  1.737302541399820E+026
+  1.729848021097429E+026
+  1.722069025604854E+026
+  1.713399968067107E+026
+  1.702951700829835E+026
+  1.689494191784590E+026
+  1.671471969785584E+026
+  1.647059434402697E+026
+  1.614261965721768E+026
+  1.571066820507363E+026
+  1.515644018425821E+026
+  1.446590514860410E+026
+  1.363200025775774E+026
+  1.265726264207027E+026
+  1.155591650046785E+026
+  1.035482449907925E+026
+  9.092731801788126E+025
+  7.817457366418844E+025
+  6.581138180799247E+025
+  5.434225678826823E+025
+  4.417617150819777E+025
+  3.551765297666091E+025
+  2.835582031856960E+025
+  2.255277418014281E+025
+  1.791818257072885E+025
+  1.425327010265679E+025
+  1.137378365688672E+025
+  9.119847915439052E+024
+  7.358332519847652E+024
+  5.981361480793539E+024
+  4.903141420565832E+024
+  4.056321206504458E+024
+  3.388499722739884E+024
+  2.859152441486336E+024
+  2.437058481024850E+024
+  2.098214273682789E+024
+  1.824177637521090E+024
+  1.600772716164996E+024
+  1.417087590685774E+024
+  1.264704141890747E+024
+  1.137109505182931E+024
+  1.029248048170201E+024
+  9.371813155668279E+023
+  8.578305610534817E+023
+  7.887823400520518E+023
+  7.281423100527929E+023
+  6.744260720687109E+023
+  6.264788206278811E+023
+  5.834180161094048E+023
+  5.445955585947076E+023
+  5.095784007554397E+023
+  4.781496834324863E+023
+  4.503370125664338E+023
+  4.264814448626395E+023
+  4.073715955277965E+023
+  3.944840828747045E+023
+  3.903969380028998E+023
+  3.994796743544226E+023
+  4.290151342653170E+023
+  4.909746547507377E+023
+  6.047446493441733E+023
+  8.011728092678823E+023
+  1.128327736675455E+024
+  1.659274081663260E+024
+  2.501834024480264E+024
+  3.809555734939446E+024
+  5.791718042929979E+024
+  8.717966548760854E+024
+  1.291006379804310E+025
+  1.870963183635589E+025
+  2.640787451037903E+025
+  3.613707675826062E+025
+  4.779309743086270E+025
+  6.103735151612975E+025
+  7.533420397838187E+025
+  9.002270151156869E+025
+  1.044122489549568E+026
+  1.178776943191055E+026
+  1.299325308049934E+026
+  1.402684958783105E+026
+  1.487608063366467E+026
+  1.554464236404384E+026
+  1.604863272613171E+026
+  1.641223216782135E+026
+  1.666361259590607E+026
+  1.683151518545205E+026
+  1.694266287740087E+026
+  1.702000139217163E+026
+  1.708168284622654E+026
+  1.714068384304673E+026
+  1.720495006372486E+026
+  1.727795907187779E+026
+  1.735958470300018E+026
+  1.744713442755055E+026
+  1.753642552886105E+026
+  1.762277575636027E+026
+  1.770181191097064E+026
+  1.777004021373176E+026
+  1.782516487363054E+026
+  1.786617675358257E+026
+  1.789325910141432E+026
+  1.790757247274626E+026
+  1.791098359458571E+026
+  1.790578817261200E+026
+  1.789445369697050E+026
+  1.787939817243248E+026
+  1.786282380761953E+026
+  1.784661135831075E+026
+  1.783226618633042E+026
+  4.695423218877597E+025
+  4.695413972837134E+025
+  4.695806097406701E+025
+  4.696650664104629E+025
+  4.697942044880642E+025
+  4.699596520259601E+025
+  4.701436544012997E+025
+  4.703183615686670E+025
+  4.704461919267108E+025
+  4.704815675380988E+025
+  4.703741084363118E+025
+  4.700731357610700E+025
+  4.695331823546036E+025
+  4.687200110318180E+025
+  4.676164036677900E+025
+  4.662267997885822E+025
+  4.645797749752347E+025
+  4.627273719344475E+025
+  4.607404593820303E+025
+  4.586996280489253E+025
+  4.566816409810784E+025
+  4.547420909570658E+025
+  4.528955934294444E+025
+  4.510954498934392E+025
+  4.492151530747150E+025
+  4.470343107754236E+025
+  4.442315412130806E+025
+  4.403867000779071E+025
+  4.349945161889507E+025
+  4.274913574873354E+025
+  4.172963049498018E+025
+  4.038667001635329E+025
+  3.867664845089447E+025
+  3.657426793851534E+025
+  3.408013095406387E+025
+  3.122696030288724E+025
+  2.808279519592952E+025
+  2.474952360213467E+025
+  2.135569614755246E+025
+  1.804379160980774E+025
+  1.495375946347129E+025
+  1.220109392836285E+025
+  9.846169747156506E+024
+  7.890258342035305E+024
+  6.299193958095102E+024
+  5.023647344272631E+024
+  4.011216524495287E+024
+  3.212842182066912E+024
+  2.585651168433692E+024
+  2.093737010888728E+024
+  1.707860146543213E+024
+  1.404662375800222E+024
+  1.165730491125502E+024
+  9.766823389260234E+023
+  8.263538014401130E+023
+  7.061128311790127E+023
+  6.092997234431551E+023
+  5.307804787787754E+023
+  4.665958356969275E+023
+  4.136884379631077E+023
+  3.696923712780669E+023
+  3.327717192967180E+023
+  3.014972320949167E+023
+  2.747524061009899E+023
+  2.516621551142569E+023
+  2.315388003226047E+023
+  2.138413520468992E+023
+  1.981450442158753E+023
+  1.841188737379152E+023
+  1.715095615540937E+023
+  1.601309736487550E+023
+  1.498587219892044E+023
+  1.406305449805341E+023
+  1.324543401454288E+023
+  1.254276739920812E+023
+  1.197756373391951E+023
+  1.159186165039204E+023
+  1.145886367351828E+023
+  1.170232185314299E+023
+  1.252798603384116E+023
+  1.427323957270965E+023
+  1.748310470713548E+023
+  2.302261710166633E+023
+  3.223606264513413E+023
+  4.716069725945188E+023
+  7.079295650056451E+023
+  1.073839210129011E+024
+  1.627020193708183E+024
+  2.441395118083235E+024
+  3.604549509440819E+024
+  5.208481989379433E+024
+  7.329918202861899E+024
+  1.000035220755720E+025
+  1.318518587410200E+025
+  1.678523797029487E+025
+  2.064813495984984E+025
+  2.458905276984224E+025
+  2.841769848360432E+025
+  3.196462239144459E+025
+  3.510100828198163E+025
+  3.774886052224306E+025
+  3.988158337771392E+025
+  4.151717481286294E+025
+  4.270717697436826E+025
+  4.352432507740540E+025
+  4.405101476578092E+025
+  4.436975988183245E+025
+  4.455605387527875E+025
+  4.467358669269060E+025
+  4.477156473334396E+025
+  4.488383090090490E+025
+  4.502948494648600E+025
+  4.521469905646315E+025
+  4.543539238277249E+025
+  4.568038715553033E+025
+  4.593464935801839E+025
+  4.618224512393290E+025
+  4.640872711452507E+025
+  4.660278663047178E+025
+  4.675713580000507E+025
+  4.686869165470904E+025
+  4.693820895623642E+025
+  4.696955192048018E+025
+  4.696880036492301E+025
+  4.694334215883722E+025
+  4.690103474395215E+025
+  4.684948668697512E+025
+  4.679551525033608E+025
+  4.674479888409815E+025
+  4.670170303087162E+025
+  5.563090585480306E+025
+  5.562965381785915E+025
+  5.563366560888548E+025
+  5.564374076926509E+025
+  5.565997405512953E+025
+  5.568147204601127E+025
+  5.570613403817513E+025
+  5.573053445255868E+025
+  5.574993519671088E+025
+  5.575846623092867E+025
+  5.574948836435001E+025
+  5.571612417670641E+025
+  5.565192482971254E+025
+  5.555161642728526E+025
+  5.541184042299120E+025
+  5.523177910075705E+025
+  5.501354453623011E+025
+  5.476220955595907E+025
+  5.448537572197178E+025
+  5.419221050205545E+025
+  5.389194428371584E+025
+  5.359189282817880E+025
+  5.329515206850804E+025
+  5.299818692013337E+025
+  5.268859161294163E+025
+  5.234332793108618E+025
+  5.192774884154738E+025
+  5.139569462333160E+025
+  5.069091558560148E+025
+  4.975003239002894E+025
+  4.850717922784524E+025
+  4.690035550623798E+025
+  4.487929645285906E+025
+  4.241432917533042E+025
+  3.950521201228109E+025
+  3.618843586292168E+025
+  3.254107324160993E+025
+  2.867926536566604E+025
+  2.475010362849416E+025
+  2.091707048548344E+025
+  1.734111950246738E+025
+  1.415533774513778E+025
+  1.142936355774745E+025
+  9.164635109244997E+024
+  7.321688408997112E+024
+  5.843559258519356E+024
+  4.669735741841793E+024
+  3.743560266259032E+024
+  3.015510507200294E+024
+  2.444100745461844E+024
+  1.995537290569503E+024
+  1.642813569092861E+024
+  1.364631062486357E+024
+  1.144345831803070E+024
+  9.690311300119246E+023
+  8.286862724814377E+023
+  7.155908844833687E+023
+  6.237894260709945E+023
+  5.486859626200585E+023
+  4.867290053230561E+023
+  4.351682767584731E+023
+  3.918680314513244E+023
+  3.551643697426154E+023
+  3.237565198672531E+023
+  2.966242265815263E+023
+  2.729651667183129E+023
+  2.521477455109641E+023
+  2.336757661130308E+023
+  2.171623767802547E+023
+  2.023114671753818E+023
+  1.889054038575207E+023
+  1.767987851824522E+023
+  1.659189175941089E+023
+  1.562751959557768E+023
+  1.479818420154212E+023
+  1.413019955590936E+023
+  1.367266205601921E+023
+  1.351099224182862E+023
+  1.378949108330965E+023
+  1.474791741198863E+023
+  1.677919174694372E+023
+  2.051770596477493E+023
+  2.696980210295543E+023
+  3.769851557705916E+023
+  5.507128816625233E+023
+  8.256813613944089E+023
+  1.251230683937506E+024
+  1.894265798966870E+024
+  2.840459590395672E+024
+  4.191227558990197E+024
+  6.052966401564466E+024
+  8.514215511754213E+024
+  1.161096811789895E+025
+  1.530264028476996E+025
+  1.947404851425016E+025
+  2.394881966821235E+025
+  2.851356183636685E+025
+  3.294914753364833E+025
+  3.706108988087342E+025
+  4.070225838949284E+025
+  4.378441692229990E+025
+  4.627863492884039E+025
+  4.820718880075518E+025
+  4.963061466783036E+025
+  5.063332314216046E+025
+  5.131022401573131E+025
+  5.175570770141221E+025
+  5.205545301828432E+025
+  5.228099901159809E+025
+  5.248678278238108E+025
+  5.270928517903841E+025
+  5.296792656153590E+025
+  5.326734527361413E+025
+  5.360065323953420E+025
+  5.395321620055228E+025
+  5.430648696962669E+025
+  5.464145870250081E+025
+  5.494140839392566E+025
+  5.519374781560371E+025
+  5.539095226661737E+025
+  5.553066356308611E+025
+  5.561514995191741E+025
+  5.565035371004392E+025
+  5.564476055076180E+025
+  5.560827096841434E+025
+  5.555117046080254E+025
+  5.548325730516031E+025
+  5.541319228262168E+025
+  5.534809089444636E+025
+  5.529333083666537E+025
+  8.650863542565669E+025
+  8.651579332179547E+025
+  8.652560775258182E+025
+  8.653751717422070E+025
+  8.655028154788976E+025
+  8.656180192109735E+025
+  8.656902980145486E+025
+  8.656799631926884E+025
+  8.655397577553546E+025
+  8.652181493042845E+025
+  8.646642592973495E+025
+  8.638340415207866E+025
+  8.626971419816237E+025
+  8.612436256634401E+025
+  8.594894526018110E+025
+  8.574793853128057E+025
+  8.552859770277848E+025
+  8.530034322681940E+025
+  8.507354762837506E+025
+  8.485769519660481E+025
+  8.465896678400182E+025
+  8.447739628349583E+025
+  8.430383926623938E+025
+  8.411707233068052E+025
+  8.388139143089335E+025
+  8.354509359137146E+025
+  8.304021322731698E+025
+  8.228385328659879E+025
+  8.118141316114405E+025
+  7.963196655471180E+025
+  7.753595479877099E+025
+  7.480517992478258E+025
+  7.137474306449604E+025
+  6.721603676642499E+025
+  6.234918895268819E+025
+  5.685260654039549E+025
+  5.086676205606767E+025
+  4.458951473953269E+025
+  3.826142365760351E+025
+  3.214175131631886E+025
+  2.647874221584875E+025
+  2.147129117922830E+025
+  1.721652580494767E+025
+  1.370561655731903E+025
+  1.086777030432121E+025
+  8.607058043318709E+024
+  6.824033296641975E+024
+  5.426935470276703E+024
+  4.336422014775382E+024
+  3.486621771662392E+024
+  2.824307317787797E+024
+  2.307260260985226E+024
+  1.902424871757848E+024
+  1.584150528769650E+024
+  1.332652759069665E+024
+  1.132729911875176E+024
+  9.727259948520469E+023
+  8.437099461964810E+023
+  7.388355798431404E+023
+  6.528475292897532E+023
+  5.817026731054728E+023
+  5.222815784178711E+023
+  4.721693986086058E+023
+  4.294899805139093E+023
+  3.927805559419557E+023
+  3.608973318262187E+023
+  3.329446302609886E+023
+  3.082220672044681E+023
+  2.861857155166169E+023
+  2.664204066584622E+023
+  2.486214360906277E+023
+  2.325851317311944E+023
+  2.182092617198119E+023
+  2.055064352471986E+023
+  1.946369830226400E+023
+  1.859730103899452E+023
+  1.802133982310937E+023
+  1.785817890934571E+023
+  1.831575539305007E+023
+  1.974147816371302E+023
+  2.270769292793499E+023
+  2.814327821511865E+023
+  3.752950745984289E+023
+  5.317984070217970E+023
+  7.861928311346932E+023
+  1.190634112978198E+024
+  1.819612690907775E+024
+  2.774989437724264E+024
+  4.188513496313723E+024
+  6.218159168862305E+024
+  9.032813173410194E+024
+  1.277835090619138E+025
+  1.752472376906255E+025
+  2.322739495455907E+025
+  2.972691501740237E+025
+  3.676570276937951E+025
+  4.402184887223070E+025
+  5.115519435271899E+025
+  5.785387983556634E+025
+  6.387090224205794E+025
+  6.904470546605299E+025
+  7.330311813107829E+025
+  7.665398162535106E+025
+  7.916767025315624E+025
+  8.095659596752222E+025
+  8.215551053110376E+025
+  8.290481729482610E+025
+  8.333776156137392E+025
+  8.357151231657600E+025
+  8.370174376920088E+025
+  8.380021162567770E+025
+  8.391482571778245E+025
+  8.407173154985709E+025
+  8.427888462666125E+025
+  8.453054807489786E+025
+  8.481211152550622E+025
+  8.510466117271403E+025
+  8.538884364686600E+025
+  8.564773913508260E+025
+  8.586864670881911E+025
+  8.604384559220617E+025
+  8.617051485178695E+025
+  8.625007197043733E+025
+  8.628721276926778E+025
+  8.628887453126852E+025
+  8.626323739657946E+025
+  8.621883629154335E+025
+  8.616387461633793E+025
+  8.610576856093007E+025
+  8.605088142888810E+025
+  1.107756858771888E+025
+  1.107853291154567E+025
+  1.107994302384099E+025
+  1.108174189645911E+025
+  1.108377428417944E+025
+  1.108576273881201E+025
+  1.108729766502957E+025
+  1.108784599140740E+025
+  1.108678080531650E+025
+  1.108343599597737E+025
+  1.107718512597846E+025
+  1.106753848695402E+025
+  1.105424934650978E+025
+  1.103741660378023E+025
+  1.101756670730856E+025
+  1.099569489797697E+025
+  1.097324554567785E+025
+  1.095201373089034E+025
+  1.093395570995884E+025
+  1.092090491523247E+025
+  1.091420235450176E+025
+  1.091426432449721E+025
+  1.092012409821466E+025
+  1.092899534093646E+025
+  1.093591160121737E+025
+  1.093349759506756E+025
+  1.091192491564736E+025
+  1.085909917718275E+025
+  1.076111931320807E+025
+  1.060304272317437E+025
+  1.036997843165834E+025
+  1.004850665422756E+025
+  9.628377694992548E+024
+  9.104369422221936E+024
+  8.478083141087684E+024
+  7.759350577625312E+024
+  6.966849291875937E+024
+  6.127537934679178E+024
+  5.274679547970078E+024
+  4.444531649902650E+024
+  3.672188692057032E+024
+  2.986175764165169E+024
+  2.401024818754846E+024
+  1.916509778655345E+024
+  1.523640369776681E+024
+  1.209744557871664E+024
+  9.614843106438734E+023
+  7.664429319110214E+023
+  6.138168079732683E+023
+  4.945925268034683E+023
+  4.014567221332541E+023
+  3.285877178537052E+023
+  2.714125256947041E+023
+  2.263720476003983E+023
+  1.907135663062941E+023
+  1.623165473949936E+023
+  1.395511152006930E+023
+  1.211655714594770E+023
+  1.061983423396035E+023
+  9.390978118418528E+022
+  8.372975235447798E+022
+  7.521756738402834E+022
+  6.803148656439827E+022
+  6.190557290002242E+022
+  5.663217093050144E+022
+  5.204868017251307E+022
+  4.802761061157565E+022
+  4.446915869792952E+022
+  4.129574225444365E+022
+  3.844809947167889E+022
+  3.588271140662828E+022
+  3.357047435292627E+022
+  3.149676151209139E+022
+  2.966331991187713E+022
+  2.809291772961908E+022
+  2.683838939237540E+022
+  2.599886037766131E+022
+  2.574765066802081E+022
+  2.637886207219691E+022
+  2.838313473811494E+022
+  3.256755841761405E+022
+  4.023991707795481E+022
+  5.348220963634735E+022
+  7.554014315867235E+022
+  1.113490855104853E+023
+  1.681944789227892E+023
+  2.564537272387152E+023
+  3.902719399364860E+023
+  5.878719560541616E+023
+  8.709874717020331E+023
+  1.262663608036289E+024
+  1.782474770759563E+024
+  2.439146961544937E+024
+  3.225269100386119E+024
+  4.117387929268383E+024
+  5.078528955656305E+024
+  6.063080687974627E+024
+  7.023338111517067E+024
+  7.916033895580869E+024
+  8.707397787165338E+024
+  9.375931940041617E+024
+  9.912837131559811E+024
+  1.032058474353721E+025
+  1.061037867053478E+025
+  1.079922415272937E+025
+  1.090713270358048E+025
+  1.095476430579735E+025
+  1.096162034567932E+025
+  1.094478382676244E+025
+  1.091815048977646E+025
+  1.089208162270046E+025
+  1.087341191139740E+025
+  1.086574724529844E+025
+  1.086998208935158E+025
+  1.088495653739228E+025
+  1.090816650362166E+025
+  1.093644339084836E+025
+  1.096653466051729E+025
+  1.099554124972091E+025
+  1.102119522464860E+025
+  1.104198517883796E+025
+  1.105715495660893E+025
+  1.106661310221178E+025
+  1.107079399532963E+025
+  1.107050358990891E+025
+  1.106676800780339E+025
+  1.106069676336994E+025
+  1.105337426660282E+025
+  1.104578480198620E+025
+  1.103876674244619E+025
+  8.587394002952509E+024
+  8.587034407062140E+024
+  8.587818431227256E+024
+  8.589942776991611E+024
+  8.593463994365206E+024
+  8.598246508402474E+024
+  8.603925583915268E+024
+  8.609893015370990E+024
+  8.615311529382235E+024
+  8.619164574910894E+024
+  8.620343354733454E+024
+  8.617767321371383E+024
+  8.610530111671701E+024
+  8.598057705663875E+024
+  8.580259823824534E+024
+  8.557651104848719E+024
+  8.531416462814770E+024
+  8.503395736109889E+024
+  8.475967062535998E+024
+  8.451817033247627E+024
+  8.433598510198266E+024
+  8.423492812593374E+024
+  8.422709543367982E+024
+  8.430971868824909E+024
+  8.446045032658801E+024
+  8.463369774099178E+024
+  8.475860273908660E+024
+  8.473920033950170E+024
+  8.445721106651822E+024
+  8.377783538838009E+024
+  8.255880822036764E+024
+  8.066277517163731E+024
+  7.797268236802488E+024
+  7.440925014096481E+024
+  6.994871613620773E+024
+  6.463800999193677E+024
+  5.860368720141576E+024
+  5.205082988048354E+024
+  4.524925582499152E+024
+  3.850697772536384E+024
+  3.213452791170552E+024
+  2.639630368973626E+024
+  2.144164814575656E+024
+  1.729244705829255E+024
+  1.389158253915915E+024
+  1.114577066138585E+024
+  8.951726811906459E+023
+  7.210513639751464E+023
+  5.834297269152306E+023
+  4.748613980021604E+023
+  3.892207544401819E+023
+  3.215708595871817E+023
+  2.679889625307910E+023
+  2.253887957747144E+023
+  1.913585096053840E+023
+  1.640215366155675E+023
+  1.419215285760020E+023
+  1.239295215230764E+023
+  1.091702900606153E+023
+  9.696461414862450E+022
+  8.678440559782921E+022
+  7.821804859685952E+022
+  7.094375542523628E+022
+  6.470915911672506E+022
+  5.931573335995206E+022
+  5.460693950698281E+022
+  5.045925339778739E+022
+  4.677542803861447E+022
+  4.347951292738037E+022
+  4.051329115360477E+022
+  3.783392887156298E+022
+  3.541278069564052E+022
+  3.323548917031305E+022
+  3.130379976194324E+022
+  2.963994756172480E+022
+  2.829514805070918E+022
+  2.736476454647720E+022
+  2.701428318957333E+022
+  2.752246964865752E+022
+  2.935113912135342E+022
+  3.325481956458280E+022
+  4.044783172712768E+022
+  5.284980082439682E+022
+  7.343087794573781E+022
+  1.066704367354633E+023
+  1.591203778069158E+023
+  2.400160751315607E+023
+  3.617924107724313E+023
+  5.402299043001705E+023
+  7.937789889003517E+023
+  1.141418177376438E+024
+  1.598272034918188E+024
+  2.169108852230277E+024
+  2.844008940099829E+024
+  3.599037221392190E+024
+  4.399110325339592E+024
+  5.202859168159443E+024
+  5.968721082749997E+024
+  6.660708616276295E+024
+  7.252588624716173E+024
+  7.729853510352348E+024
+  8.089554864252861E+024
+  8.338546478207165E+024
+  8.490859869651564E+024
+  8.564864979888598E+024
+  8.580669907607749E+024
+  8.557997819655946E+024
+  8.514614021538239E+024
+  8.465281230757882E+024
+  8.421183564556407E+024
+  8.389754149954780E+024
+  8.374844363948363E+024
+  8.377170889378881E+024
+  8.394967070355196E+024
+  8.424752368814589E+024
+  8.462126225511718E+024
+  8.502497062079173E+024
+  8.541675496910396E+024
+  8.576289369452143E+024
+  8.604009472518071E+024
+  8.623601884183521E+024
+  8.634841919571321E+024
+  8.638335456040425E+024
+  8.635294704840038E+024
+  8.627305963894414E+024
+  8.616111763581960E+024
+  8.603421742966136E+024
+  8.590766044976058E+024
+  8.579397164617148E+024
+  8.570237744911239E+024
+  3.554823677661217E+025
+  3.555108294548241E+025
+  3.555523379038565E+025
+  3.556050522233794E+025
+  3.556641421848673E+025
+  3.557209941788749E+025
+  3.557628179026200E+025
+  3.557727901149520E+025
+  3.557308058609613E+025
+  3.556149709516715E+025
+  3.554038249467565E+025
+  3.550791254396361E+025
+  3.546289410745730E+025
+  3.540506898357567E+025
+  3.533536264931998E+025
+  3.525601953915386E+025
+  3.517056501666979E+025
+  3.508354047308001E+025
+  3.499997328289511E+025
+  3.492456909800767E+025
+  3.486064945814126E+025
+  3.480889911534124E+025
+  3.476602861814369E+025
+  3.472349169696098E+025
+  3.466641828967225E+025
+  3.457293032514523E+025
+  3.441400055666810E+025
+  3.415400003672519E+025
+  3.375206224989630E+025
+  3.316437066493759E+025
+  3.234743983928991E+025
+  3.126238500766375E+025
+  2.988003349028027E+025
+  2.818650483602676E+025
+  2.618858430241215E+025
+  2.391789216411387E+025
+  2.143262951398439E+025
+  1.881573405710523E+025
+  1.616876524013101E+025
+  1.360178592165857E+025
+  1.122073918060520E+025
+  9.111092231810825E+024
+  7.315409963182730E+024
+  5.831311698728218E+024
+  4.629949072112867E+024
+  3.671564675402665E+024
+  2.914668769845132E+024
+  2.320828169030302E+024
+  1.856718019396579E+024
+  1.494610149038704E+024
+  1.212056395558815E+024
+  9.912217260114749E+023
+  8.181205166759598E+023
+  6.818847915403292E+023
+  5.741208356956709E+023
+  4.883710752752936E+023
+  4.196781427078370E+023
+  3.642392207848671E+023
+  3.191360039254186E+023
+  2.821259255719449E+023
+  2.514819522920376E+023
+  2.258703081297333E+023
+  2.042575146230310E+023
+  1.858399250796708E+023
+  1.699904409216068E+023
+  1.562183276614556E+023
+  1.441390283533033E+023
+  1.334516449041930E+023
+  1.239223714745989E+023
+  1.153726747546030E+023
+  1.076714865999300E+023
+  1.007311823793984E+023
+  9.450776508046420E+022
+  8.900660469412003E+022
+  8.429650523183061E+022
+  8.053709332246960E+022
+  7.802796781733040E+022
+  7.729327068193969E+022
+  7.922297248416605E+022
+  8.530278810254144E+022
+  9.797841811964130E+022
+  1.212157973732942E+023
+  1.613338762180356E+023
+  2.281923864512731E+023
+  3.367990533206082E+023
+  5.093335055501170E+023
+  7.774312905868928E+023
+  1.184284233542044E+024
+  1.785649922097630E+024
+  2.648214125145774E+024
+  3.842993832146253E+024
+  5.430854487395547E+024
+  7.440039952661196E+024
+  9.849931647550990E+024
+  1.259110715743727E+025
+  1.555274113203779E+025
+  1.859721297560749E+025
+  2.157984192707836E+025
+  2.436869937003066E+025
+  2.686005694189301E+025
+  2.898696815981413E+025
+  3.072074080562842E+025
+  3.206676445926076E+025
+  3.305693082143840E+025
+  3.374081942548859E+025
+  3.417726370249404E+025
+  3.442722563162746E+025
+  3.454833638561457E+025
+  3.459110042468426E+025
+  3.459659361312276E+025
+  3.459544161131552E+025
+  3.460786946503161E+025
+  3.464461758422641E+025
+  3.470850508826006E+025
+  3.479639611145650E+025
+  3.490130839854412E+025
+  3.501441568066073E+025
+  3.512674318626686E+025
+  3.523043037127803E+025
+  3.531951687655854E+025
+  3.539027852908185E+025
+  3.544119264076096E+025
+  3.547264601946796E+025
+  3.548650873995154E+025
+  3.548567109083486E+025
+  3.547359570153609E+025
+  3.545391783063159E+025
+  3.543013377157660E+025
+  3.540539105926153E+025
+  3.538236487737828E+025
+  4.240360640866425E+025
+  4.240539155436013E+025
+  4.240971199184324E+025
+  4.241666655114137E+025
+  4.242592304619510E+025
+  4.243657776790565E+025
+  4.244706488673208E+025
+  4.245513698868464E+025
+  4.245793037029189E+025
+  4.245213599617572E+025
+  4.243427899557157E+025
+  4.240108932963543E+025
+  4.234993445542621E+025
+  4.227926928073583E+025
+  4.218904018810876E+025
+  4.208096651952396E+025
+  4.195861830667581E+025
+  4.182721412326508E+025
+  4.169307976409892E+025
+  4.156273927497821E+025
+  4.144165425865617E+025
+  4.133268093932512E+025
+  4.123436946058806E+025
+  4.113927727324523E+025
+  4.103250040977583E+025
+  4.089063889577744E+025
+  4.068140685929298E+025
+  4.036408006196879E+025
+  3.989095016468298E+025
+  3.920992640242366E+025
+  3.826837906175819E+025
+  3.701822855207073E+025
+  3.542211543882700E+025
+  3.346021654580645E+025
+  3.113690743982622E+025
+  2.848607589894610E+025
+  2.557360636594754E+025
+  2.249559303864649E+025
+  1.937139676230771E+025
+  1.633178549512119E+025
+  1.350388752577490E+025
+  1.099143375517573E+025
+  8.847409282889504E+024
+  7.071026803125567E+024
+  5.629539635978092E+024
+  4.476767870124379E+024
+  3.564088104173238E+024
+  2.846218066749075E+024
+  2.283739316180535E+024
+  1.843746012283037E+024
+  1.499520347525086E+024
+  1.229777160274469E+024
+  1.017781737359972E+024
+  8.504967446097961E+023
+  7.178278000278346E+023
+  6.119897275001415E+023
+  5.269913080964309E+023
+  4.582254451883375E+023
+  4.021480608573618E+023
+  3.560291691551063E+023
+  3.177613621292578E+023
+  2.857132754349393E+023
+  2.586179202434104E+023
+  2.354878437950100E+023
+  2.155508389818224E+023
+  1.982013631535843E+023
+  1.829639789190931E+023
+  1.694660413562203E+023
+  1.574175830860599E+023
+  1.465969563229079E+023
+  1.368413551067513E+023
+  1.280419544561569E+023
+  1.201441894831846E+023
+  1.131548315001579E+023
+  1.071592554718947E+023
+  1.023550035817590E+023
+  9.911194540184199E+022
+  9.807567555904090E+022
+  1.003400261963904E+023
+  1.077273636545940E+023
+  1.232318221075512E+023
+  1.516995430875482E+023
+  2.008371404556053E+023
+  2.826454235309953E+023
+  4.153516374537312E+023
+  6.258296408123411E+023
+  9.523089412368898E+023
+  1.446825501725203E+024
+  2.176310745803409E+024
+  3.220443494591145E+024
+  4.663502433927609E+024
+  6.576758367350963E+024
+  8.991417844518148E+024
+  1.187941826656788E+025
+  1.515413055668870E+025
+  1.867994739786732E+025
+  2.229043929922208E+025
+  2.581242379694518E+025
+  2.908978745626745E+025
+  3.200174162733720E+025
+  3.447261001127470E+025
+  3.647299594285393E+025
+  3.801421183577060E+025
+  3.913873571866279E+025
+  3.990933126123296E+025
+  4.039876147272195E+025
+  4.068118469667593E+025
+  4.082563509196160E+025
+  4.089156465085033E+025
+  4.092623125240152E+025
+  4.096366811080619E+025
+  4.102497468612255E+025
+  4.111966970751689E+025
+  4.124782441720232E+025
+  4.140266011816368E+025
+  4.157327491521793E+025
+  4.174718384352389E+025
+  4.191242212468855E+025
+  4.205906048700659E+025
+  4.218008850083533E+025
+  4.227171299565956E+025
+  4.233318427931715E+025
+  4.236630327097913E+025
+  4.237477119104400E+025
+  4.236350868297790E+025
+  4.233801307547729E+025
+  4.230379682461244E+025
+  4.226595657672126E+025
+  4.222888982748871E+025
+  4.219614034321064E+025
+  4.982003902934271E+023
+  4.982530394303262E+023
+  4.983178406311692E+023
+  4.983900028070286E+023
+  4.984609810553166E+023
+  4.985176947599420E+023
+  4.985423165526869E+023
+  4.985127941485833E+023
+  4.984041702932337E+023
+  4.981908518276621E+023
+  4.978497764383080E+023
+  4.973642083132580E+023
+  4.967277847027722E+023
+  4.959482904410332E+023
+  4.950504666021637E+023
+  4.940770562280166E+023
+  4.930872922183998E+023
+  4.921521437341711E+023
+  4.913458729199260E+023
+  4.907338294096343E+023
+  4.903569113207831E+023
+  4.902136909906217E+023
+  4.902417537260693E+023
+  4.903002346421385E+023
+  4.901557910087551E+023
+  4.894742918419577E+023
+  4.878203786238272E+023
+  4.846668305466110E+023
+  4.794154254424580E+023
+  4.714307060885294E+023
+  4.600875644106991E+023
+  4.448325029658854E+023
+  4.252564238263445E+023
+  4.011735739018644E+023
+  3.726969868201083E+023
+  3.402962229943189E+023
+  3.048201427481286E+023
+  2.674683282871530E+023
+  2.297018177286819E+023
+  1.930973779996475E+023
+  1.591670186232287E+023
+  1.291256588381997E+023
+  1.035741958402195E+023
+  8.247298401629424E+022
+  6.540607754010685E+022
+  5.180316933469612E+022
+  4.107033755732903E+022
+  3.265814103503379E+022
+  2.609066711774722E+022
+  2.097230253293845E+022
+  1.698305689000354E+022
+  1.386892776133873E+022
+  1.143091767167060E+022
+  9.514534432815161E+021
+  8.000573470850568E+021
+  6.797417546601158E+021
+  5.834805291054996E+021
+  5.058895101068809E+021
+  4.428412564445338E+021
+  3.911674771172887E+021
+  3.484309012853749E+021
+  3.127513238793049E+021
+  2.826734800882233E+021
+  2.570669828094028E+021
+  2.350507256501902E+021
+  2.159359184303774E+021
+  1.991833267415269E+021
+  1.843713927897608E+021
+  1.711727921819068E+021
+  1.593377097696816E+021
+  1.486827873136981E+021
+  1.390854156744307E+021
+  1.304839581916869E+021
+  1.228858032676771E+021
+  1.163871505741930E+021
+  1.112115689952332E+021
+  1.077792283334438E+021
+  1.068260857121488E+021
+  1.096031127252052E+021
+  1.182007170097246E+021
+  1.360631137480239E+021
+  1.687802433758871E+021
+  2.252662398972599E+021
+  3.194424915590757E+021
+  4.725187964766226E+021
+  7.158720784474849E+021
+  1.094305242911346E+022
+  1.669062077451074E+022
+  2.519315359046537E+022
+  3.739919479809590E+022
+  5.432135028138399E+022
+  7.683143329855668E+022
+  1.053414537764154E+023
+  1.395712768587627E+023
+  1.785462202628411E+023
+  2.206988169908730E+023
+  2.640736155514140E+023
+  3.066062190201947E+023
+  3.464052120603192E+023
+  3.819736982151683E+023
+  4.123342907330030E+023
+  4.370533580217708E+023
+  4.561846994427974E+023
+  4.701640738149268E+023
+  4.796853408172133E+023
+  4.855812280728904E+023
+  4.887220500124072E+023
+  4.899375896474772E+023
+  4.899622056564647E+023
+  4.894008286149913E+023
+  4.887128779308839E+023
+  4.882112196370448E+023
+  4.880733800354864E+023
+  4.883620561768258E+023
+  4.890516095735774E+023
+  4.900569750137959E+023
+  4.912615389886228E+023
+  4.925411570560021E+023
+  4.937824764885988E+023
+  4.948948439778045E+023
+  4.958160554107784E+023
+  4.965129439066321E+023
+  4.969783021280909E+023
+  4.972258012455639E+023
+  4.972842392290666E+023
+  4.971918328308105E+023
+  4.969910118587071E+023
+  4.967242824182242E+023
+  4.964313622309480E+023
+  4.961473813504528E+023
+  1.422007552644644E+022
+  1.421999551576594E+022
+  1.422140124035687E+022
+  1.422449969268738E+022
+  1.422929923858054E+022
+  1.423553965914677E+022
+  1.424264431572542E+022
+  1.424970511478613E+022
+  1.425550808245492E+022
+  1.425860891342722E+022
+  1.425746052891378E+022
+  1.425058625225869E+022
+  1.423678628274505E+022
+  1.421535779282672E+022
+  1.418630068123497E+022
+  1.415047476872181E+022
+  1.410967155259080E+022
+  1.406656520315434E+022
+  1.402451431874276E+022
+  1.398719902875256E+022
+  1.395809716847964E+022
+  1.393982656766789E+022
+  1.393340465215736E+022
+  1.393749751866556E+022
+  1.394774478044816E+022
+  1.395625176703056E+022
+  1.395133748651348E+022
+  1.391761779140215E+022
+  1.383649181231564E+022
+  1.368708724781294E+022
+  1.344770285712158E+022
+  1.309775472638298E+022
+  1.262017302405280E+022
+  1.200409676694614E+022
+  1.124757531913248E+022
+  1.035982808715645E+022
+  9.362490503342624E+021
+  8.289266758743566E+021
+  7.183599335434438E+021
+  6.094380419129224E+021
+  5.070303734097479E+021
+  4.152263698658013E+021
+  3.362676928852304E+021
+  2.703798187530304E+021
+  2.165551329131562E+021
+  1.732359727403255E+021
+  1.387279268205405E+021
+  1.114235623912451E+021
+  8.990534562223176E+020
+  7.297778025403846E+020
+  5.966173521053981E+020
+  4.917114984785928E+020
+  4.088365746305854E+020
+  3.431121920210629E+020
+  2.907362861236733E+020
+  2.487593504294105E+020
+  2.148988160923235E+020
+  1.873900143735923E+020
+  1.648684432758580E+020
+  1.462778210295917E+020
+  1.307988663411004E+020
+  1.177944642478315E+020
+  1.067676365384201E+020
+  9.732943805846399E+019
+  8.917450821112260E+019
+  8.206251316250383E+019
+  7.580412480234775E+019
+  7.025051077885699E+019
+  6.528557446824192E+019
+  6.082040760333921E+019
+  5.678962942672701E+019
+  5.314951978741852E+019
+  4.987815673416869E+019
+  4.697820902483291E+019
+  4.448370856815306E+019
+  4.247317805739022E+019
+  4.109310813107090E+019
+  4.059821076529441E+019
+  4.141839128351364E+019
+  4.426719898683034E+019
+  5.031262915721395E+019
+  6.143798406026501E+019
+  8.062632541591306E+019
+  1.125030631611278E+020
+  1.640603548374345E+020
+  2.455526893854748E+020
+  3.714788227422569E+020
+  5.614315878345834E+020
+  8.403880213058927E+020
+  1.237729346694711E+021
+  1.783966837735026E+021
+  2.503925560572803E+021
+  3.406513125746022E+021
+  4.477752315682941E+021
+  5.681569458797338E+021
+  6.964006903750118E+021
+  8.260612251074993E+021
+  9.505866828481460E+021
+  1.064224771574311E+022
+  1.162692300209205E+022
+  1.243506404266524E+022
+  1.305982742823552E+022
+  1.350981656497032E+022
+  1.380512956078808E+022
+  1.397301049271692E+022
+  1.404382375045509E+022
+  1.404773872664860E+022
+  1.401225224145372E+022
+  1.396052290002487E+022
+  1.391042808238802E+022
+  1.387424245492020E+022
+  1.385884103099661E+022
+  1.386632818711640E+022
+  1.389498107335315E+022
+  1.394037810718169E+022
+  1.399657260885823E+022
+  1.405717826162543E+022
+  1.411626011296474E+022
+  1.416896689402571E+022
+  1.421188656959419E+022
+  1.424314681283995E+022
+  1.426231055220611E+022
+  1.427013327488012E+022
+  1.426825146386621E+022
+  1.425885740450662E+022
+  1.424439258016606E+022
+  1.422728021561497E+022
+  1.420971775472022E+022
+  1.419353781036074E+022
+  1.418013280203301E+022
+  1.105266105612618E+024
+  1.105332714359435E+024
+  1.105466555744115E+024
+  1.105668619674030E+024
+  1.105928233508809E+024
+  1.106219757018796E+024
+  1.106500819139696E+024
+  1.106712675807922E+024
+  1.106783041037968E+024
+  1.106631890788115E+024
+  1.106180222320785E+024
+  1.105361177255238E+024
+  1.104132581471959E+024
+  1.102489508785258E+024
+  1.100474969637686E+024
+  1.098186482377502E+024
+  1.095776205022552E+024
+  1.093442519428290E+024
+  1.091411522231321E+024
+  1.089907839153190E+024
+  1.089115511767649E+024
+  1.089131264881988E+024
+  1.089914014516722E+024
+  1.091235757160425E+024
+  1.092639772433894E+024
+  1.093412275945266E+024
+  1.092573343641836E+024
+  1.088892297777163E+024
+  1.080932016418706E+024
+  1.067125834163366E+024
+  1.045889490104463E+024
+  1.015768168328979E+024
+  9.756140675525214E+023
+  9.247823895909270E+023
+  8.633233057344717E+023
+  7.921361163500628E+023
+  7.130434895404650E+023
+  6.287443925995908E+023
+  5.426198429185720E+023
+  4.583973975853220E+023
+  3.797227513282584E+023
+  3.095960487136198E+023
+  2.495918090860154E+023
+  1.997623422845174E+023
+  1.592455360937912E+023
+  1.267857005874401E+023
+  1.010450034951197E+023
+  8.076922215495550E+022
+  6.486157102569607E+022
+  5.240330181210006E+022
+  4.264634955851075E+022
+  3.499335180338762E+022
+  2.897369821697348E+022
+  2.422010195915304E+022
+  2.044773606287520E+022
+  1.743662228625484E+022
+  1.501726002964412E+022
+  1.305916139356313E+022
+  1.146184609951412E+022
+  1.014784567021561E+022
+  9.057311159422739E+021
+  8.143880615208023E+021
+  7.371525310387910E+021
+  6.712150623940524E+021
+  6.143775958941633E+021
+  5.649158015729677E+021
+  5.214753836822303E+021
+  4.829945513190103E+021
+  4.486468818235632E+021
+  4.178005119638888E+021
+  3.899911830351127E+021
+  3.649084015569058E+021
+  3.423962054800148E+021
+  3.224732411432116E+021
+  3.053817812061448E+021
+  2.916829923515905E+021
+  2.824276369671852E+021
+  2.794493169608981E+021
+  2.858534371200249E+021
+  3.068110914862598E+021
+  3.508133460218603E+021
+  4.315941892543863E+021
+  5.709776457903836E+021
+  8.029188349516422E+021
+  1.178938230086797E+022
+  1.774906819365076E+022
+  2.698601868114454E+022
+  4.096465637232340E+022
+  6.156429063318055E+022
+  9.101498490291394E+022
+  1.316634053458540E+023
+  1.854721220216372E+023
+  2.532550223970131E+023
+  3.341391075615344E+023
+  4.255919604685123E+023
+  5.237024619545891E+023
+  6.237039516884620E+023
+  7.206624695179033E+023
+  8.101544098963375E+023
+  8.887828626679490E+023
+  9.544513342186973E+023
+  1.006391899575976E+024
+  1.045002387854987E+024
+  1.071571751271842E+024
+  1.087968561162102E+024
+  1.096347104966574E+024
+  1.098901476817925E+024
+  1.097678604607783E+024
+  1.094449285164097E+024
+  1.090631100158049E+024
+  1.087255942260535E+024
+  1.084975188132299E+024
+  1.084095630992245E+024
+  1.084638585666950E+024
+  1.086413455606514E+024
+  1.089096293858467E+024
+  1.092304222358201E+024
+  1.095658266175879E+024
+  1.098829891376779E+024
+  1.101569585811743E+024
+  1.103718496228034E+024
+  1.105206112339244E+024
+  1.106038232463778E+024
+  1.106279769059398E+024
+  1.106036056251212E+024
+  1.105434746083715E+024
+  1.104609640766904E+024
+  1.103687932947325E+024
+  1.102781441291513E+024
+  1.101981450374576E+024
+  5.441742217626188E+023
+  5.441274612389690E+023
+  5.441686045734610E+023
+  5.443150191843824E+023
+  5.445740004750716E+023
+  5.449387809993467E+023
+  5.453855324356532E+023
+  5.458719332112968E+023
+  5.463377630941578E+023
+  5.467080226172465E+023
+  5.468987546721006E+023
+  5.468253653190915E+023
+  5.464129398597383E+023
+  5.456076829212464E+023
+  5.443882020960462E+023
+  5.427750258286589E+023
+  5.408365678475920E+023
+  5.386897626498679E+023
+  5.364938550770655E+023
+  5.344363835863646E+023
+  5.327112519766152E+023
+  5.314898609474144E+023
+  5.308874197514558E+023
+  5.309275892432682E+023
+  5.315093394130899E+023
+  5.323802220041736E+023
+  5.331201582591885E+023
+  5.331394337791329E+023
+  5.316940412362315E+023
+  5.279209156537423E+023
+  5.208948644642977E+023
+  5.097077341458699E+023
+  4.935680067810356E+023
+  4.719150504545106E+023
+  4.445365298786754E+023
+  4.116707616438676E+023
+  3.740701466170300E+023
+  3.330006409161648E+023
+  2.901591206691798E+023
+  2.475070178456050E+023
+  2.070424063212302E+023
+  1.704851030876265E+023
+  1.388268507594837E+023
+  1.122425115732367E+023
+  9.039572079136343E+022
+  7.271193843717066E+022
+  5.854632337782475E+022
+  4.727661742749531E+022
+  3.834758513104956E+022
+  3.128661946222664E+022
+  2.570360478154686E+022
+  2.128315957223640E+022
+  1.777397625695003E+022
+  1.497780414108938E+022
+  1.273931685344042E+022
+  1.093736230886662E+022
+  9.477693405104982E+021
+  8.287080499047351E+021
+  7.308625071445788E+021
+  6.498074705943750E+021
+  5.820950787002626E+021
+  5.250324149320045E+021
+  4.765100920234192E+021
+  4.348706611513377E+021
+  3.988079357724948E+021
+  3.672902525877909E+021
+  3.395022795218525E+021
+  3.148012631185079E+021
+  2.926846516054717E+021
+  2.727669239492227E+021
+  2.547643118335085E+021
+  2.384870650483628E+021
+  2.238401772138243E+021
+  2.108353379607915E+021
+  1.996197174401691E+021
+  1.905316024636093E+021
+  1.841996821682931E+021
+  1.817129096524944E+021
+  1.849023982349851E+021
+  1.967965244730164E+021
+  2.223350525356776E+021
+  2.694549411175348E+021
+  3.506818872513477E+021
+  4.853613148852990E+021
+  7.026108118594928E+021
+  1.044925572692731E+022
+  1.572053211638557E+022
+  2.364198942229525E+022
+  3.522770482679454E+022
+  5.165746039678101E+022
+  7.413544879674836E+022
+  1.036050707386819E+023
+  1.403296288484079E+023
+  1.836183707811289E+023
+  2.318795255120936E+023
+  2.828155986420690E+023
+  3.337457314753024E+023
+  3.820034052619948E+023
+  4.253081143033908E+023
+  4.620297575324226E+023
+  4.913075594862282E+023
+  5.130301813609813E+023
+  5.277141136110659E+023
+  5.363280674996244E+023
+  5.401057717022129E+023
+  5.403762254500462E+023
+  5.384263199306780E+023
+  5.354001004910764E+023
+  5.322329483589553E+023
+  5.296166741311267E+023
+  5.279912261604463E+023
+  5.275589100970418E+023
+  5.283168330726771E+023
+  5.301025775191200E+023
+  5.326472340695988E+023
+  5.356294366815026E+023
+  5.387243896345597E+023
+  5.416431695397658E+023
+  5.441595587048682E+023
+  5.461238101140895E+023
+  5.474645753096483E+023
+  5.481815016178391E+023
+  5.483316903252445E+023
+  5.480132509014295E+023
+  5.473485172501175E+023
+  5.464684673599035E+023
+  5.454993250418076E+023
+  5.445522555722804E+023
+  5.437165498173143E+023
+  5.430561404553356E+023
+  8.444423659405311E+024
+  8.442856700924539E+024
+  8.443175334775541E+024
+  8.445817851781298E+024
+  8.451026671023089E+024
+  8.458762188526222E+024
+  8.468633161152183E+024
+  8.479855163628402E+024
+  8.491247061443043E+024
+  8.501275835927811E+024
+  8.508154696406699E+024
+  8.509992807216224E+024
+  8.504989297499771E+024
+  8.491657287932827E+024
+  8.469055887121313E+024
+  8.437001463017392E+024
+  8.396225216319906E+024
+  8.348443011429973E+024
+  8.296306693255077E+024
+  8.243214827509730E+024
+  8.192975184961070E+024
+  8.149330215399871E+024
+  8.115377730703627E+024
+  8.092938641455646E+024
+  8.081938408322065E+024
+  8.079876414358574E+024
+  8.081457182575895E+024
+  8.078450846552244E+024
+  8.059840411669335E+024
+  8.012302347981650E+024
+  7.921054160638699E+024
+  7.771082539552072E+024
+  7.548729465873577E+024
+  7.243551897415949E+024
+  6.850279631468711E+024
+  6.370585452045458E+024
+  5.814283286140685E+024
+  5.199538461597917E+024
+  4.551769599098999E+024
+  3.901175141767283E+024
+  3.279198165798802E+024
+  2.713503314383436E+024
+  2.220672845607099E+024
+  1.804514628073578E+024
+  1.460688983578655E+024
+  1.180932816159955E+024
+  9.556904648226922E+023
+  7.755950003796550E+023
+  6.321985745186405E+023
+  5.182500620251527E+023
+  4.277211944551953E+023
+  3.557073664170288E+023
+  2.982773422477650E+023
+  2.523126389916902E+023
+  2.153570497219183E+023
+  1.854850478008856E+023
+  1.611913908037479E+023
+  1.413009812221568E+023
+  1.248966069211734E+023
+  1.112617560337749E+023
+  9.983578068235835E+022
+  9.017898507832431E+022
+  8.194558432222791E+022
+  7.486284761808786E+022
+  6.871507202394027E+022
+  6.333131872267114E+022
+  5.857608150671158E+022
+  5.434225115128498E+022
+  5.054589875447703E+022
+  4.712253928112894E+022
+  4.402467100167148E+022
+  4.122054028500118E+022
+  3.869428582092551E+022
+  3.644791698041168E+022
+  3.450604337783111E+022
+  3.292499024581691E+022
+  3.180903262065052E+022
+  3.133811435042102E+022
+  3.181374485791405E+022
+  3.373289300226778E+022
+  3.790354952968400E+022
+  4.561971878710299E+022
+  5.891662861630003E+022
+  8.092622761380141E+022
+  1.163437809941929E+023
+  1.719910621219218E+023
+  2.574100330477590E+023
+  3.853317447369531E+023
+  5.717309619318007E+023
+  8.350033983861250E+023
+  1.193623298523200E+024
+  1.661537181957275E+024
+  2.241516356872740E+024
+  2.920990304105959E+024
+  3.673205671452304E+024
+  4.460662655806294E+024
+  5.240510074096686E+024
+  5.971003414911256E+024
+  6.617378903922551E+024
+  7.155870207536202E+024
+  7.575318375650848E+024
+  7.876551235579927E+024
+  8.070180218694257E+024
+  8.173606574707057E+024
+  8.207919468547411E+024
+  8.195139270621976E+024
+  8.156027833579613E+024
+  8.108519342577113E+024
+  8.066734464528681E+024
+  8.040508463551976E+024
+  8.035361448413228E+024
+  8.052841473963684E+024
+  8.091165997583516E+024
+  8.146073225112775E+024
+  8.211779278241846E+024
+  8.281929641366657E+024
+  8.350441240074963E+024
+  8.412156056836749E+024
+  8.463263168036575E+024
+  8.501484315055799E+024
+  8.526050076480499E+024
+  8.537515140521717E+024
+  8.537471641043551E+024
+  8.528218684578850E+024
+  8.512433625279955E+024
+  8.492872588482209E+024
+  8.472117390963187E+024
+  8.452383972198846E+024
+  8.435398843595501E+024
+  8.422341046831068E+024
+  4.423988743564173E+023
+  4.423262667493681E+023
+  4.423467630314520E+023
+  4.424814539451554E+023
+  4.427415927580768E+023
+  4.431243525292090E+023
+  4.436094418780157E+023
+  4.441571552176302E+023
+  4.447083478446855E+023
+  4.451868481298267E+023
+  4.455045399054166E+023
+  4.455690087646631E+023
+  4.452933593612865E+023
+  4.446074602893238E+023
+  4.434694806552124E+023
+  4.418762511021582E+023
+  4.398707750938172E+023
+  4.375451753902521E+023
+  4.350375424596481E+023
+  4.325216099831219E+023
+  4.301889272061679E+023
+  4.282241681886006E+023
+  4.267752846836519E+023
+  4.259211988274899E+023
+  4.256404695523308E+023
+  4.257847311492262E+023
+  4.260606706317114E+023
+  4.260239681327306E+023
+  4.250881196841658E+023
+  4.225505038117058E+023
+  4.176373926853133E+023
+  4.095685628685844E+023
+  3.976402565955831E+023
+  3.813220016800871E+023
+  3.603580393437380E+023
+  3.348583689309431E+023
+  3.053593637642027E+023
+  2.728323971828065E+023
+  2.386240616059116E+023
+  2.043249201362006E+023
+  1.715836156850277E+023
+  1.418443049305078E+023
+  1.159662966820212E+023
+  9.413850292611984E+022
+  7.612382584085378E+022
+  6.148129921473205E+022
+  4.970409669210550E+022
+  4.029697702570840E+022
+  3.281425163398095E+022
+  2.687401166232022E+022
+  2.215920963267203E+022
+  1.841222660773544E+022
+  1.542681596906857E+022
+  1.303955410010854E+022
+  1.112186125865764E+022
+  9.573041608823566E+021
+  8.314456052621907E+021
+  7.284772139236250E+021
+  6.436161676401555E+021
+  5.731295494945773E+021
+  5.140989998791738E+021
+  4.642376678691697E+021
+  4.217485763091677E+021
+  3.852154839278528E+021
+  3.535190982014056E+021
+  3.257730100475885E+021
+  3.012749799637705E+021
+  2.794702301219485E+021
+  2.599242374826789E+021
+  2.423032497265827E+021
+  2.263614507643094E+021
+  2.119345060554951E+021
+  1.989402844158059E+021
+  1.873891178683194E+021
+  1.774083670283918E+021
+  1.692897944025646E+021
+  1.635739690164235E+021
+  1.611944400410456E+021
+  1.637165661771866E+021
+  1.737222427793915E+021
+  1.954119801391488E+021
+  2.355173574823298E+021
+  3.046331061763266E+021
+  4.190750147842464E+021
+  6.033225342125693E+021
+  8.929740617545538E+021
+  1.337874607165622E+022
+  2.004610194672940E+022
+  2.976860199152049E+022
+  4.351185209644703E+022
+  6.224878333326620E+022
+  8.671953018598253E+022
+  1.170836119648637E+023
+  1.527000305157087E+023
+  1.921844969311009E+023
+  2.335856077137158E+023
+  2.746641306698012E+023
+  3.132293389814889E+023
+  3.474466356822506E+023
+  3.760496709446852E+023
+  3.984275942369948E+023
+  4.145958980909209E+023
+  4.250841142392996E+023
+  4.307814218840684E+023
+  4.327757720021235E+023
+  4.322103258502463E+023
+  4.301689690263658E+023
+  4.275938553992054E+023
+  4.252331370515151E+023
+  4.236153162622294E+023
+  4.230465054451655E+023
+  4.236270231163149E+023
+  4.252835075725186E+023
+  4.278120286008643E+023
+  4.309268777729190E+023
+  4.343093208383929E+023
+  4.376509787490117E+023
+  4.406877409940006E+023
+  4.432219440128875E+023
+  4.451325009279798E+023
+  4.463743099364816E+023
+  4.469693786810811E+023
+  4.469926554946899E+023
+  4.465555326697514E+023
+  4.457893521641902E+023
+  4.448303208217778E+023
+  4.438067164135469E+023
+  4.428291691819237E+023
+  4.419843581301211E+023
+  4.413319931939349E+023
+  8.554130299907629E+023
+  8.552364662632031E+023
+  8.552618856803842E+023
+  8.555372485986127E+023
+  8.560898421442127E+023
+  8.569170412050327E+023
+  8.579787670922351E+023
+  8.591928682745916E+023
+  8.604344890235141E+023
+  8.615405282542839E+023
+  8.623197348961744E+023
+  8.625683021822924E+023
+  8.620902293041498E+023
+  8.607209907003145E+023
+  8.583522349535746E+023
+  8.549545293323669E+023
+  8.505947006099943E+023
+  8.454441873136563E+023
+  8.397751339146079E+023
+  8.339418404863087E+023
+  8.283466609173383E+023
+  8.233914058377367E+023
+  8.194174967159741E+023
+  8.166401817437842E+023
+  8.150836981525628E+023
+  8.145250856267469E+023
+  8.144543546665349E+023
+  8.140580505525638E+023
+  8.122322265650184E+023
+  8.076296895812482E+023
+  7.987450460082103E+023
+  7.840390355525024E+023
+  7.620999765277154E+023
+  7.318338897263981E+023
+  6.926656027929471E+023
+  6.447218191267326E+023
+  5.889569487586761E+023
+  5.271790120493282E+023
+  4.619423472603057E+023
+  3.962994560174162E+023
+  3.334430993747539E+023
+  2.761948253804410E+023
+  2.262585902802762E+023
+  1.840428320627153E+023
+  1.491265265306033E+023
+  1.206866291013761E+023
+  9.776500057933149E+022
+  7.941923006615328E+022
+  6.479743789007708E+022
+  5.316713005735769E+022
+  4.391843561135522E+022
+  3.655450608457135E+022
+  3.067661430478577E+022
+  2.596810774115602E+022
+  2.217931355475846E+022
+  1.911430154895294E+022
+  1.661975643151450E+022
+  1.457587632769431E+022
+  1.288906577035726E+022
+  1.148614532620123E+022
+  1.030980609155543E+022
+  9.315066347935398E+021
+  8.466524196216300E+021
+  7.736236491902941E+021
+  7.102087599532730E+021
+  6.546540133963808E+021
+  6.055683744430226E+021
+  5.618517532953085E+021
+  5.226417784884457E+021
+  4.872756666445109E+021
+  4.552651190505666E+021
+  4.262837411244785E+021
+  4.001685697597736E+021
+  3.769403664771650E+021
+  3.568520617009709E+021
+  3.404820700222910E+021
+  3.289004162737246E+021
+  3.239522768507431E+021
+  3.287272538631749E+021
+  3.483144987523311E+021
+  3.909828672168564E+021
+  4.699665315701514E+021
+  6.060665261519490E+021
+  8.312700118374876E+021
+  1.193492704205843E+022
+  1.762289445014057E+022
+  2.634849709354705E+022
+  3.940685739214600E+022
+  5.842057519239916E+022
+  8.525423146538711E+022
+  1.217740524518246E+023
+  1.693776993358942E+023
+  2.283182061377211E+023
+  2.972838698620631E+023
+  3.735226891946777E+023
+  4.531988669390986E+023
+  5.319473580596670E+023
+  6.055338061855103E+023
+  6.704515501681161E+023
+  7.243265030965205E+023
+  7.660751878762356E+023
+  7.958353092966191E+023
+  8.147360009763764E+023
+  8.245890218022529E+023
+  8.275705227984692E+023
+  8.259393368078000E+023
+  8.218140463367552E+023
+  8.170139878263762E+023
+  8.129601955273631E+023
+  8.106291136618026E+023
+  8.105516933199194E+023
+  8.128507393089082E+023
+  8.173087927560432E+023
+  8.234573583985622E+023
+  8.306766636496873E+023
+  8.382943822059852E+023
+  8.456726084929002E+023
+  8.522749509633317E+023
+  8.577093690114407E+023
+  8.617463539690793E+023
+  8.643153647363396E+023
+  8.654846330238733E+023
+  8.654305087798038E+023
+  8.644023993577879E+023
+  8.626880364379927E+023
+  8.605819304595848E+023
+  8.583587898420017E+023
+  8.562534555433639E+023
+  8.544480175376213E+023
+  8.530658567826678E+023
+  7.262704373931897E+022
+  7.261405839056618E+022
+  7.261668408490057E+022
+  7.263854082576550E+022
+  7.268161915150655E+022
+  7.274555738538860E+022
+  7.282705355348232E+022
+  7.291950761219257E+022
+  7.301297652271866E+022
+  7.309452926831521E+022
+  7.314904409162547E+022
+  7.316043548642246E+022
+  7.311325215798040E+022
+  7.299452993403766E+022
+  7.279571887449262E+022
+  7.251444830134185E+022
+  7.215585736432047E+022
+  7.173320886760338E+022
+  7.126752986629674E+022
+  7.078609327817758E+022
+  7.031967270363765E+022
+  6.989865872342094E+022
+  6.954829873516906E+022
+  6.928348591681647E+022
+  6.910364749945229E+022
+  6.898834755915375E+022
+  6.889421995438428E+022
+  6.875379543589131E+022
+  6.847670654603459E+022
+  6.795366252947107E+022
+  6.706347725053959E+022
+  6.568326250135167E+022
+  6.370159284424979E+022
+  6.103393006845268E+022
+  5.763883632561538E+022
+  5.353258837764526E+022
+  4.879899492525971E+022
+  4.359096878865108E+022
+  3.812121446940268E+022
+  3.264151111440855E+022
+  2.741323830898220E+022
+  2.266558427887623E+022
+  1.853482729127049E+022
+  1.505059627157100E+022
+  1.217478653030571E+022
+  9.836927178679788E+021
+  7.956135215061091E+021
+  6.453424466343936E+021
+  5.257732753012398E+021
+  4.308174369254934E+021
+  3.554204188956178E+021
+  2.954747931191332E+021
+  2.476916934295197E+021
+  2.094645706083840E+021
+  1.787420927956951E+021
+  1.539173024077675E+021
+  1.337348186635176E+021
+  1.172151889140518E+021
+  1.035943253837039E+021
+  9.227563004493808E+020
+  8.279249433320712E+020
+  7.477912430687874E+020
+  6.794796011503838E+020
+  6.207227131823425E+020
+  5.697279111235650E+020
+  5.250749377431282E+020
+  4.856381977983882E+020
+  4.505281604400605E+020
+  4.190479244937817E+020
+  3.906621150855833E+020
+  3.649764036063111E+020
+  3.417272255534848E+020
+  3.207829753884384E+020
+  3.021604607693441E+020
+  2.860642482459164E+020
+  2.729625085670321E+020
+  2.637221217448126E+020
+  2.598394172233558E+020
+  2.638223419335876E+020
+  2.798059702136282E+020
+  3.145155165248574E+020
+  3.787253685402826E+020
+  4.893883848355723E+020
+  6.726044909194052E+020
+  9.675215924240176E+020
+  1.431052278109288E+021
+  2.142861050334309E+021
+  3.209334037913046E+021
+  4.764121961068383E+021
+  6.961391904775011E+021
+  9.956412760015541E+021
+  1.386721955829824E+022
+  1.871913029535701E+022
+  2.440978364592304E+022
+  3.071848904093699E+022
+  3.733452637995337E+022
+  4.390181377552824E+022
+  5.007255639319635E+022
+  5.555618456824660E+022
+  6.015295498424986E+022
+  6.376758638687770E+022
+  6.640433606959317E+022
+  6.814886492695643E+022
+  6.914346125827868E+022
+  6.956130509603657E+022
+  6.958356187888288E+022
+  6.938117212619920E+022
+  6.910180072730293E+022
+  6.886164588363119E+022
+  6.874153275374059E+022
+  6.878668950046937E+022
+  6.900962113871975E+022
+  6.939545279199676E+022
+  6.990900009226077E+022
+  7.050269861221963E+022
+  7.112446643173810E+022
+  7.172464335705958E+022
+  7.226135687080091E+022
+  7.270396457909579E+022
+  7.303453938952897E+022
+  7.324762662988813E+022
+  7.334867773954884E+022
+  7.335165046320887E+022
+  7.327625771705778E+022
+  7.314524160096253E+022
+  7.298189742783625E+022
+  7.280798702145241E+022
+  7.264216552029561E+022
+  7.249897369514692E+022
+  7.238837184341209E+022
+  2.888336865465288E+025
+  2.888134539091894E+025
+  2.888308166892710E+025
+  2.888929873239906E+025
+  2.890026914968607E+025
+  2.891562748855724E+025
+  2.893421990593520E+025
+  2.895401747011312E+025
+  2.897211333421561E+025
+  2.898482807957715E+025
+  2.898793350033820E+025
+  2.897698846007500E+025
+  2.894776845746818E+025
+  2.889675506398017E+025
+  2.882163315798252E+025
+  2.872172875362578E+025
+  2.859831128615695E+025
+  2.845468294274618E+025
+  2.829598647208246E+025
+  2.812868451654133E+025
+  2.795969845924985E+025
+  2.779524024752892E+025
+  2.763942061845721E+025
+  2.749276364899746E+025
+  2.735079270756191E+025
+  2.720287131324479E+025
+  2.703148316268243E+025
+  2.681212236673642E+025
+  2.651394361588478E+025
+  2.610129557565085E+025
+  2.553622392538594E+025
+  2.478196674380396E+025
+  2.380735061623650E+025
+  2.259181007779593E+025
+  2.113049383840630E+025
+  1.943862544997680E+025
+  1.755404870106625E+025
+  1.553686069559188E+025
+  1.346537243553538E+025
+  1.142839660374297E+025
+  9.514928355845780E+024
+  7.800053073463257E+024
+  6.324915231340179E+024
+  5.093396371425526E+024
+  4.086602437662392E+024
+  3.275511723325301E+024
+  2.628613580873694E+024
+  2.116035694913974E+024
+  1.711438135607327E+024
+  1.392601266887186E+024
+  1.141317119619802E+024
+  9.429567948436740E+023
+  7.859265081126471E+023
+  6.611243253326215E+023
+  5.614501049510948E+023
+  4.813878400423845E+023
+  4.166621037223514E+023
+  3.639620104599673E+023
+  3.207229635319271E+023
+  2.849560270799192E+023
+  2.551156055654833E+023
+  2.299974361869860E+023
+  2.086602966131138E+023
+  1.903661206000460E+023
+  1.745343313172049E+023
+  1.607071331927969E+023
+  1.485232588810066E+023
+  1.376982728817348E+023
+  1.280100215125471E+023
+  1.192882331887884E+023
+  1.114076656856954E+023
+  1.042846343675492E+023
+  9.787732624248146E+022
+  9.219113585568223E+022
+  8.729153524128434E+022
+  8.332897655743742E+022
+  8.058338482551638E+022
+  7.954038506535286E+022
+  8.101802124761666E+022
+  8.637175639232961E+022
+  9.781694986727261E+022
+  1.189206666485634E+023
+  1.553252724430229E+023
+  2.157676151462428E+023
+  3.134364095896976E+023
+  4.676451833930317E+023
+  7.056582741996606E+023
+  1.064257021058568E+024
+  1.590243660990117E+024
+  2.338555936595287E+024
+  3.366087836748489E+024
+  4.718905018274056E+024
+  6.413142295699313E+024
+  8.422172900456900E+024
+  1.067841545990710E+025
+  1.308151095101249E+025
+  1.551232489205905E+025
+  1.785058642744509E+025
+  1.999164883009393E+025
+  2.185867408284476E+025
+  2.340842134615162E+025
+  2.463082170375984E+025
+  2.554391514980794E+025
+  2.618624862655251E+025
+  2.660863921805729E+025
+  2.686663571170576E+025
+  2.701438686102700E+025
+  2.710014173067054E+025
+  2.716332463659471E+025
+  2.723300899562215E+025
+  2.732758895299268E+025
+  2.745544953452970E+025
+  2.761642730248374E+025
+  2.780382632197966E+025
+  2.800672271693962E+025
+  2.821227776544542E+025
+  2.840780208509888E+025
+  2.858237553202456E+025
+  2.872791618481932E+025
+  2.883968454273050E+025
+  2.891628555308242E+025
+  2.895928277703414E+025
+  2.897256627211228E+025
+  2.896161590540395E+025
+  2.893276961497664E+025
+  2.889255798141548E+025
+  2.884714253232834E+025
+  2.880189561440133E+025
+  2.876113520904686E+025
+  2.872800173362585E+025
+  8.647818363177498E+024
+  8.646167340343435E+024
+  8.646476039588813E+024
+  8.649202611059060E+024
+  8.654602441271778E+024
+  8.662638590630349E+024
+  8.672909223727492E+024
+  8.684603993914468E+024
+  8.696499717794831E+024
+  8.707006068949351E+024
+  8.714266465481459E+024
+  8.716312521669693E+024
+  8.711264583957443E+024
+  8.697563703143363E+024
+  8.674212347250157E+024
+  8.640994267138789E+024
+  8.598639462083908E+024
+  8.548899025075936E+024
+  8.494497957149026E+024
+  8.438942961472011E+024
+  8.386177016533328E+024
+  8.340092029246449E+024
+  8.303932519338999E+024
+  8.279643583154972E+024
+  8.267231749477739E+024
+  8.264215211984438E+024
+  8.265239706374253E+024
+  8.261929618232589E+024
+  8.243033728482653E+024
+  8.194913646164817E+024
+  8.102409697105961E+024
+  7.950098483755463E+024
+  7.723919248998083E+024
+  7.413082930396251E+024
+  7.012084457730933E+024
+  6.522525365537821E+024
+  5.954352463093558E+024
+  5.326085173172993E+024
+  4.663701244906765E+024
+  3.998109935337631E+024
+  3.361532143884257E+024
+  2.782349376424091E+024
+  2.277606788797144E+024
+  1.851263357496264E+024
+  1.498923353462934E+024
+  1.212161089940190E+024
+  9.812162934151203E+023
+  7.965131143587868E+023
+  6.494102209398679E+023
+  5.324870394954253E+023
+  4.395720595808667E+023
+  3.656424188068691E+023
+  3.066708316261230E+023
+  2.594616851853549E+023
+  2.214973227174994E+023
+  1.908035200435781E+023
+  1.658365729706877E+023
+  1.453910625005328E+023
+  1.285258870756334E+023
+  1.145057054737936E+023
+  1.027550103650880E+023
+  9.282235717741399E+022
+  8.435264993473650E+022
+  7.706576011745580E+022
+  7.074009376931260E+022
+  6.520001402376312E+022
+  6.030626916161743E+022
+  5.594877466972628E+022
+  5.204126085627611E+022
+  4.851743901930272E+022
+  4.532847692855901E+022
+  4.244173207132150E+022
+  3.984090108339087E+022
+  3.752805238454074E+022
+  3.552848367998035E+022
+  3.390008254961015E+022
+  3.274999564583082E+022
+  3.226308758745477E+022
+  3.274905733903204E+022
+  3.471828499243352E+022
+  3.900042799015673E+022
+  4.692396890539134E+022
+  6.057800177497204E+022
+  8.317677038701006E+022
+  1.195379240252070E+023
+  1.766594265351783E+023
+  2.643270648844766E+023
+  3.955930378536691E+023
+  5.868285458431673E+023
+  8.568755793342234E+023
+  1.224640076242276E+024
+  1.704365242076659E+024
+  2.298816849215830E+024
+  2.995021319814381E+024
+  3.765471011469650E+024
+  4.571665350655593E+024
+  5.369656907896432E+024
+  6.116680099415383E+024
+  6.777171982853956E+024
+  7.326880540870320E+024
+  7.754500257031817E+024
+  8.061019434364605E+024
+  8.257446766226025E+024
+  8.361730943943702E+024
+  8.395573512193849E+024
+  8.381599294317879E+024
+  8.341110973482473E+024
+  8.292482003721452E+024
+  8.250149101530566E+024
+  8.224132928349711E+024
+  8.220013120182317E+024
+  8.239286412036622E+024
+  8.280031126275766E+024
+  8.337786828733837E+024
+  8.406541869716254E+024
+  8.479713879619728E+024
+  8.551016513393542E+024
+  8.615131129641141E+024
+  8.668139228731247E+024
+  8.707710893692707E+024
+  8.733077392822329E+024
+  8.744838138169034E+024
+  8.744662899209609E+024
+  8.734949231661044E+024
+  8.718482088354697E+024
+  8.698123969148834E+024
+  8.676553275829264E+024
+  8.656066401609388E+024
+  8.638450239104757E+024
+  8.624922532264982E+024
+  2.084458699161022E+023
+  2.084771910242087E+023
+  2.085049421061978E+023
+  2.085247639669203E+023
+  2.085314713846141E+023
+  2.085190335543835E+023
+  2.084807155155512E+023
+  2.084093995983694E+023
+  2.082980703122523E+023
+  2.081404941732844E+023
+  2.079320593279903E+023
+  2.076706724402507E+023
+  2.073575924222103E+023
+  2.069980496970925E+023
+  2.066014569882246E+023
+  2.061809985992628E+023
+  2.057524009820271E+023
+  2.053317345809078E+023
+  2.049321771966860E+023
+  2.045597863654607E+023
+  2.042084772033669E+023
+  2.038545646198981E+023
+  2.034513788471849E+023
+  2.029245758681512E+023
+  2.021688236660748E+023
+  2.010465504293447E+023
+  1.993894071771813E+023
+  1.970030482639816E+023
+  1.936757817580512E+023
+  1.891915638997980E+023
+  1.833476274572892E+023
+  1.759766128363504E+023
+  1.669722793406220E+023
+  1.563166510412680E+023
+  1.441048957942667E+023
+  1.305626901185409E+023
+  1.160499369279977E+023
+  1.010453537086213E+023
+  8.610934708027795E+022
+  7.182770768736364E+022
+  5.874490098475868E+022
+  4.728097209662896E+022
+  3.762063581706656E+022
+  2.971163135341237E+022
+  2.336761578395981E+022
+  1.835197889242598E+022
+  1.442603082213176E+022
+  1.137318707512626E+022
+  9.008486289718941E+021
+  7.179942550797503E+021
+  5.765856417997435E+021
+  4.670508093418071E+021
+  3.819547618705908E+021
+  3.155723572140340E+021
+  2.635208332020386E+021
+  2.224574260984495E+021
+  1.898376620421023E+021
+  1.637259201158665E+021
+  1.426489866680136E+021
+  1.254839360175546E+021
+  1.113728822616368E+021
+  9.965848103764246E+020
+  8.983530133647208E+020
+  8.151325460709735E+020
+  7.439014644796246E+020
+  6.823111876126538E+020
+  6.285330190153518E+020
+  5.811442545266210E+020
+  5.390447279409606E+020
+  5.013973996108868E+020
+  4.675890751378426E+020
+  4.372099514854206E+020
+  4.100539436852588E+020
+  3.861463753679068E+020
+  3.658126892121645E+020
+  3.498129132963088E+020
+  3.395839188253482E+020
+  3.376579669511861E+020
+  3.483652112897002E+020
+  3.789832192610282E+020
+  4.415700631728041E+020
+  5.558058302284617E+020
+  7.532555877770788E+020
+  1.083517646202099E+021
+  1.622659355532766E+021
+  2.484037577733154E+021
+  3.830851431650447E+021
+  5.888317946174647E+021
+  8.950931379466208E+021
+  1.337674701328766E+022
+  1.955633758932420E+022
+  2.784021957676157E+022
+  3.842216133943770E+022
+  5.124976790647647E+022
+  6.601574933071814E+022
+  8.218634728309707E+022
+  9.906841960529985E+022
+  1.159066517730595E+023
+  1.319859339656627E+023
+  1.467155819829996E+023
+  1.596809487454014E+023
+  1.706592287821080E+023
+  1.796053607927933E+023
+  1.866186049734815E+023
+  1.919007472321214E+023
+  1.957145034516652E+023
+  1.983473653331882E+023
+  2.000831647022267E+023
+  2.011816364178641E+023
+  2.018652443315600E+023
+  2.023122038858374E+023
+  2.026546339328446E+023
+  2.029808339344924E+023
+  2.033406857076938E+023
+  2.037531208823055E+023
+  2.042145498994436E+023
+  2.047072000646805E+023
+  2.052064985966580E+023
+  2.056869314262753E+023
+  2.061261300364655E+023
+  2.065072157918688E+023
+  2.068196471901077E+023
+  2.070589807933621E+023
+  2.072260286307308E+023
+  2.073257918279177E+023
+  2.073663392005288E+023
+  2.073577342836004E+023
+  2.073111876821332E+023
+  2.072384795065318E+023
+  2.071515435817501E+023
+  1.490957442225497E+021
+  1.490878082851036E+021
+  1.491001612379003E+021
+  1.491364514796750E+021
+  1.491978786679966E+021
+  1.492822512755063E+021
+  1.493832922689957E+021
+  1.494903292822414E+021
+  1.495884760750615E+021
+  1.496594258247446E+021
+  1.496828949608336E+021
+  1.496386603580412E+021
+  1.495090604674879E+021
+  1.492817417543431E+021
+  1.489523314294607E+021
+  1.485266382029922E+021
+  1.480219421989751E+021
+  1.474669422840783E+021
+  1.468999971452188E+021
+  1.463654381130059E+021
+  1.459079466925417E+021
+  1.455652582395716E+021
+  1.453597377240076E+021
+  1.452896270186383E+021
+  1.453209414748506E+021
+  1.453810695231524E+021
+  1.453551031063566E+021
+  1.450858269686794E+021
+  1.443781608040065E+021
+  1.430087005698246E+021
+  1.407408120270101E+021
+  1.373453908306287E+021
+  1.326267725055651E+021
+  1.264522217326515E+021
+  1.187819339513838E+021
+  1.096947522332093E+021
+  9.940339013315569E+020
+  8.825274385031977E+020
+  7.669678537544649E+020
+  6.525391515231496E+020
+  5.444685706098748E+020
+  4.472052762259020E+020
+  3.632549210296945E+020
+  2.929704421774589E+020
+  2.353724054820381E+020
+  1.888734147377179E+020
+  1.517199742703722E+020
+  1.222343738976498E+020
+  9.892826830630255E+019
+  8.054048130315651E+019
+  6.603387529361511E+019
+  5.457276028430706E+019
+  4.549321689556328E+019
+  3.827294077766856E+019
+  3.250377280583094E+019
+  2.786813320654230E+019
+  2.411954251304829E+019
+  2.106691087809715E+019
+  1.856207771683768E+019
+  1.649004510755389E+019
+  1.476138730414211E+019
+  1.330638820485488E+019
+  1.207053456010244E+019
+  1.101106403930314E+019
+  1.009432970617093E+019
+  9.293794858277272E+018
+  8.588514965863260E+018
+  7.961997835052026E+018
+  7.401360979550406E+018
+  6.896728913658084E+018
+  6.440835654469438E+018
+  6.028822929368328E+018
+  5.658257539682864E+018
+  5.329439325399080E+018
+  5.046144841930764E+018
+  4.817066439769429E+018
+  4.658382709933551E+018
+  4.598160270940747E+018
+  4.683666900872462E+018
+  4.993193855029844E+018
+  5.654636865238521E+018
+  6.873803706940677E+018
+  8.976006982012107E+018
+  1.246454485820622E+019
+  1.809840044267749E+019
+  2.698765988171925E+019
+  4.069701073850934E+019
+  6.133320225039267E+019
+  9.156994346516251E+019
+  1.345337748345881E+020
+  1.934418921927600E+020
+  2.708608664053433E+020
+  3.676065121028238E+020
+  4.820116371859573E+020
+  6.100411992715672E+020
+  7.457781314199695E+020
+  8.822458193134187E+020
+  1.012437554196867E+021
+  1.130290337558158E+021
+  1.231389178280723E+021
+  1.313297813070410E+021
+  1.375528184206244E+021
+  1.419241480086597E+021
+  1.446803164283665E+021
+  1.461302375944560E+021
+  1.466112417740778E+021
+  1.464532572218234E+021
+  1.459523572797130E+021
+  1.453532991377876E+021
+  1.448400409974670E+021
+  1.445331218440128E+021
+  1.444928320576648E+021
+  1.447270661708629E+021
+  1.452025836069198E+021
+  1.458581931456622E+021
+  1.466182596916810E+021
+  1.474050197926722E+021
+  1.481485156676826E+021
+  1.487934502841794E+021
+  1.493028008201517E+021
+  1.496584842952038E+021
+  1.498596889747684E+021
+  1.499196617578534E+021
+  1.498617587418476E+021
+  1.497153983635754E+021
+  1.495122944787971E+021
+  1.492832082743651E+021
+  1.490554501520883E+021
+  1.488512280387544E+021
+  1.486867936349684E+021
+  1.618232384471042E+022
+  1.618438177366054E+022
+  1.618652005300654E+022
+  1.618849648247025E+022
+  1.618997373952972E+022
+  1.619050536629547E+022
+  1.618953761546110E+022
+  1.618643065721342E+022
+  1.618049966873779E+022
+  1.617107953520632E+022
+  1.615761094365455E+022
+  1.613973941811604E+022
+  1.611741627941318E+022
+  1.609098686244957E+022
+  1.606124680610265E+022
+  1.602944475771732E+022
+  1.599721046987088E+022
+  1.596639095210557E+022
+  1.593878439761775E+022
+  1.591577244950208E+022
+  1.589786554733351E+022
+  1.588419193495890E+022
+  1.587197593615613E+022
+  1.585606277225362E+022
+  1.582855368825864E+022
+  1.577861603882084E+022
+  1.569252945502755E+022
+  1.555402352533814E+022
+  1.534495629947696E+022
+  1.504637520551656E+022
+  1.463998667618551E+022
+  1.411002725839775E+022
+  1.344546537684929E+022
+  1.264236253651064E+022
+  1.170609162416297E+022
+  1.065297477589411E+022
+  9.510817567795136E+021
+  8.317854996926687E+021
+  7.119852375783794E+021
+  5.965526042979407E+021
+  4.900979663631079E+021
+  3.962641945830265E+021
+  3.167721038782607E+021
+  2.513676051045382E+021
+  1.986544431411712E+021
+  1.567844459609299E+021
+  1.238599938533259E+021
+  9.814043527095948E+020
+  7.812733531331061E+020
+  6.258130594687843E+020
+  5.050422091530943E+020
+  4.110690245329575E+020
+  3.377333869638135E+020
+  2.802695212238992E+020
+  2.350125027496542E+020
+  1.991546966803846E+020
+  1.705497099989109E+020
+  1.475578113947395E+020
+  1.289257800652182E+020
+  1.136944534152133E+020
+  1.011280992508435E+020
+  9.066073952441188E+019
+  8.185550898918239E+019
+  7.437396741354591E+019
+  6.795297930061121E+019
+  6.238733660593757E+019
+  5.751674429173064E+019
+  5.321613651861212E+019
+  4.938856599897227E+019
+  4.596013568083856E+019
+  4.287664853385683E+019
+  4.010187124784938E+019
+  3.761758492364687E+019
+  3.542599217784160E+019
+  3.355565608516364E+019
+  3.207309403562864E+019
+  3.110362409715892E+019
+  3.086730616356868E+019
+  3.173912205965994E+019
+  3.434717084110329E+019
+  3.972873203644521E+019
+  4.957122495551868E+019
+  6.657201024519542E+019
+  9.495438227592482E+019
+  1.411705720360097E+020
+  2.147951108298437E+020
+  3.295469212316739E+020
+  5.042548235824063E+020
+  7.633783311926424E+020
+  1.136406840885180E+021
+  1.655116190496705E+021
+  2.347367553896961E+021
+  3.227320516602600E+021
+  4.288147561094558E+021
+  5.501680710935259E+021
+  6.821220875169139E+021
+  8.187543405204416E+021
+  9.537287473608387E+021
+  1.081158058306315E+022
+  1.196295035837719E+022
+  1.295937040236514E+022
+  1.378525208810216E+022
+  1.443994872122789E+022
+  1.493470347959506E+022
+  1.528897422916717E+022
+  1.552684679633659E+022
+  1.567395858767343E+022
+  1.575510559666482E+022
+  1.579254385826400E+022
+  1.580491795747570E+022
+  1.580672633305713E+022
+  1.580823471993194E+022
+  1.581575305820670E+022
+  1.583218823261860E+022
+  1.585777663361955E+022
+  1.589089433650320E+022
+  1.592884659384152E+022
+  1.596855579693311E+022
+  1.600709508545323E+022
+  1.604204585721923E+022
+  1.607168456253899E+022
+  1.609502494743164E+022
+  1.611175666823533E+022
+  1.612212674772044E+022
+  1.612680090217375E+022
+  1.612672338245666E+022
+  1.612298714453696E+022
+  1.611673067925039E+022
+  1.610906672419809E+022
+  1.610103540278631E+022
+  8.392242268281078E+020
+  8.393530789594034E+020
+  8.394628661524196E+020
+  8.395349683976814E+020
+  8.395478923148820E+020
+  8.394773236115683E+020
+  8.392967605345603E+020
+  8.389787770387361E+020
+  8.384968241447327E+020
+  8.378276829303395E+020
+  8.369544304593351E+020
+  8.358695250896140E+020
+  8.345775648906291E+020
+  8.330971697555875E+020
+  8.314612844607251E+020
+  8.297151356630837E+020
+  8.279111433456955E+020
+  8.261002695324221E+020
+  8.243195880967078E+020
+  8.225762939297306E+020
+  8.208289185660759E+020
+  8.189671154031975E+020
+  8.167919258641704E+020
+  8.139988481666464E+020
+  8.101662478481443E+020
+  8.047516747734626E+020
+  7.970985435460162E+020
+  7.864554777502922E+020
+  7.720104510757359E+020
+  7.529415725232644E+020
+  7.284856347041610E+020
+  6.980238661257480E+020
+  6.611811917293617E+020
+  6.179305004373992E+020
+  5.686873635799716E+020
+  5.143747150327581E+020
+  4.564337414355660E+020
+  3.967600264235498E+020
+  3.375555347629712E+020
+  2.811070793934986E+020
+  2.295261059165300E+020
+  1.844266019216308E+020
+  1.464969493263340E+020
+  1.155001666325097E+020
+  9.068014648031966E+019
+  7.109045563371640E+019
+  5.578234433203473E+019
+  4.389830411700250E+019
+  3.470816056562309E+019
+  2.761335015333510E+019
+  2.213558744106109E+019
+  1.789940432307739E+019
+  1.461367668460919E+019
+  1.205461127232771E+019
+  1.005116764839294E+019
+  8.473098961602118E+018
+  7.221416289808053E+018
+  6.220931410940770E+018
+  5.414503239698572E+018
+  4.758640860767571E+018
+  4.220166041633227E+018
+  3.773692165887411E+018
+  3.399726379505071E+018
+  3.083244366179705E+018
+  2.812622096389381E+018
+  2.578836751532543E+018
+  2.374870836988210E+018
+  2.195270423822887E+018
+  2.035821701184561E+018
+  1.893320824525734E+018
+  1.765421745639075E+018
+  1.650556867474806E+018
+  1.547937992007301E+018
+  1.457662952121586E+018
+  1.380980689703994E+018
+  1.320810448554606E+018
+  1.282677826429531E+018
+  1.276333210400572E+018
+  1.318470590833083E+018
+  1.437181009066841E+018
+  1.679062902865945E+018
+  2.120259745602607E+018
+  2.883047192552744E+018
+  4.159804358827189E+018
+  6.245986413500511E+018
+  9.582557711841335E+018
+  1.480545818883239E+019
+  2.279402107504222E+019
+  3.470077161427932E+019
+  5.193120665894221E+019
+  7.602515237444213E+019
+  1.083757898553402E+020
+  1.497747663617584E+020
+  2.000601311358706E+020
+  2.580761190563061E+020
+  3.217769306431824E+020
+  3.884818527372019E+020
+  4.552500729465230E+020
+  5.192788214939105E+020
+  5.782338461353198E+020
+  6.304549630165843E+020
+  6.750229410928941E+020
+  7.117095852062761E+020
+  7.408515150985744E+020
+  7.631900810550618E+020
+  7.797109460516043E+020
+  7.915040527782436E+020
+  7.996531457590982E+020
+  8.051561437773182E+020
+  8.088735803315973E+020
+  8.115009488264803E+020
+  8.135607468334876E+020
+  8.154102771546927E+020
+  8.172613282002471E+020
+  8.192076956627767E+020
+  8.212563839768248E+020
+  8.233585511431774E+020
+  8.254369827189795E+020
+  8.274079864781293E+020
+  8.291967908397960E+020
+  8.307465478811645E+020
+  8.320218363453014E+020
+  8.330081804355815E+020
+  8.337093756246251E+020
+  8.341440145868605E+020
+  8.343417951860033E+020
+  8.343399618321951E+020
+  8.341805375667021E+020
+  8.339084844448648E+020
+  8.335703358283194E+020
+  2.492324972649569E+026
+  2.492605918628612E+026
+  2.492947343540336E+026
+  2.493323646727773E+026
+  2.493690279416504E+026
+  2.493980180241466E+026
+  2.494103229487500E+026
+  2.493949544953032E+026
+  2.493396928312413E+026
+  2.492323171746880E+026
+  2.490622896302021E+026
+  2.488227473558380E+026
+  2.485126005231518E+026
+  2.481384589304235E+026
+  2.477160238414497E+026
+  2.472705309416280E+026
+  2.468358347448191E+026
+  2.464517866503606E+026
+  2.461596856213665E+026
+  2.459957794007743E+026
+  2.459830565621701E+026
+  2.461218648857784E+026
+  2.463801734698844E+026
+  2.466845160209087E+026
+  2.469127745859991E+026
+  2.468899756784564E+026
+  2.463881946931492E+026
+  2.451315429182648E+026
+  2.428070828996556E+026
+  2.390823748286110E+026
+  2.336301084959895E+026
+  2.261597458141789E+026
+  2.164550790177355E+026
+  2.044149635122813E+026
+  1.900922817498706E+026
+  1.737238535600528E+026
+  1.557424137142214E+026
+  1.367622047668079E+026
+  1.175333306370053E+026
+  9.886697571146724E+025
+  8.154258609019021E+025
+  6.618828693913867E+025
+  5.311774989010113E+025
+  4.231580587182801E+025
+  3.357342557930632E+025
+  2.660140795336132E+025
+  2.109752566711600E+025
+  1.678162285108191E+025
+  1.341069570041655E+025
+  1.078252420193173E+025
+  8.733399235765402E+024
+  7.133274104475785E+024
+  5.880197498187721E+024
+  4.894973451550326E+024
+  4.116463553471184E+024
+  3.497656696342325E+024
+  3.002484879470217E+024
+  2.603298571872249E+024
+  2.278894705773599E+024
+  2.012992478659049E+024
+  1.793064131367999E+024
+  1.609442914968489E+024
+  1.454645232501676E+024
+  1.322857057309508E+024
+  1.209545773896343E+024
+  1.111167587776708E+024
+  1.024947824988964E+024
+  9.487170949100840E+023
+  8.807907800607648E+023
+  8.198830478773920E+023
+  7.650500133008288E+023
+  7.156603767546979E+023
+  6.713965569290478E+023
+  6.322960754857085E+023
+  5.988532587732998E+023
+  5.722174172711277E+023
+  5.545486380666590E+023
+  5.496301984048867E+023
+  5.638920368497891E+023
+  6.080769566641048E+023
+  6.998816087315558E+023
+  8.680210464019668E+023
+  1.158274615497284E+024
+  1.642115782757808E+024
+  2.428400171442347E+024
+  3.678100165497039E+024
+  5.620957634390948E+024
+  8.570836627591063E+024
+  1.293317913782481E+025
+  1.919322814168700E+025
+  2.786815162630488E+025
+  3.940169781964637E+025
+  5.400049432935353E+025
+  7.151514883188304E+025
+  9.143957306290119E+025
+  1.129639096823014E+026
+  1.350803480872591E+026
+  1.567268805217214E+026
+  1.769322713651367E+026
+  1.949297430301586E+026
+  2.102208811013234E+026
+  2.225877066797151E+026
+  2.320633738137408E+026
+  2.388776902431127E+026
+  2.433932762262813E+026
+  2.460441628890816E+026
+  2.472836396120376E+026
+  2.475439927539493E+026
+  2.472081465665472E+026
+  2.465920036679650E+026
+  2.459359753045952E+026
+  2.454042492593693E+026
+  2.450903960888308E+026
+  2.450278208059084E+026
+  2.452033741765344E+026
+  2.455722925858701E+026
+  2.460726838285897E+026
+  2.466380807028289E+026
+  2.472070912085297E+026
+  2.477297479853152E+026
+  2.481706689186378E+026
+  2.485095289695599E+026
+  2.487396057128446E+026
+  2.488652500772914E+026
+  2.488989701209705E+026
+  2.488585051853271E+026
+  2.487641361799708E+026
+  2.486365262502687E+026
+  2.484952010543885E+026
+  2.483575729405338E+026
+  2.712123771884272E+026
+  2.712380088664743E+026
+  2.712738220881823E+026
+  2.713181158893209E+026
+  2.713668411575465E+026
+  2.714130605513927E+026
+  2.714467527828812E+026
+  2.714550695609009E+026
+  2.714230976451232E+026
+  2.713352194035840E+026
+  2.711770476932950E+026
+  2.709377828025566E+026
+  2.706127682033574E+026
+  2.702059308791651E+026
+  2.697316876116123E+026
+  2.692158332278601E+026
+  2.686949227956515E+026
+  2.682137212151907E+026
+  2.678204306720533E+026
+  2.675596286446931E+026
+  2.674631480181344E+026
+  2.675394725131815E+026
+  2.677625526552987E+026
+  2.680612130266327E+026
+  2.683104762089465E+026
+  2.683261564012923E+026
+  2.678639960453219E+026
+  2.666244796806904E+026
+  2.642643064993165E+026
+  2.604153339330249E+026
+  2.547115251586496E+026
+  2.468238522990785E+026
+  2.365019915700315E+026
+  2.236198377678465E+026
+  2.082194262321492E+026
+  1.905452275409328E+026
+  1.710589426471067E+026
+  1.504252914059565E+026
+  1.294631559781874E+026
+  1.090640750635262E+026
+  9.009006496789567E+025
+  7.324097123872169E+025
+  5.887255415966187E+025
+  4.697812328191777E+025
+  3.733591425486977E+025
+  2.963395530324148E+025
+  2.354412626593462E+025
+  1.876111245090310E+025
+  1.501935595471495E+025
+  1.209736937483425E+025
+  9.815490664579661E+024
+  8.030741478490805E+024
+  6.630840731366793E+024
+  5.528424876027773E+024
+  4.655942512438616E+024
+  3.961370242101338E+024
+  3.404733242953544E+024
+  2.955340700516409E+024
+  2.589622251817787E+024
+  2.289452763980814E+024
+  2.040865110859120E+024
+  1.833066553998427E+024
+  1.657690159535477E+024
+  1.508226819266269E+024
+  1.379595400496735E+024
+  1.267818326939025E+024
+  1.169777708632799E+024
+  1.083033312075406E+024
+  1.005688576751461E+024
+  9.362949812031904E+023
+  8.737888482472260E+023
+  8.174587740099730E+023
+  7.669470877959279E+023
+  7.222962595117687E+023
+  6.840626653134403E+023
+  6.535380596298046E+023
+  6.331469012602102E+023
+  6.271297666015740E+023
+  6.426845391937423E+023
+  6.918224482427332E+023
+  7.943065248556141E+023
+  9.821677051670975E+023
+  1.306411234144469E+024
+  1.846570012760193E+024
+  2.723610696512344E+024
+  4.116148701772802E+024
+  6.278679437087134E+024
+  9.558212611204433E+024
+  1.440196653581394E+025
+  2.134358029065478E+025
+  3.094928619778408E+025
+  4.370068465070871E+025
+  5.981371130460070E+025
+  7.910859696003799E+025
+  1.010117121742939E+026
+  1.246169235799663E+026
+  1.488050398782568E+026
+  1.724041812983243E+026
+  1.943501118226607E+026
+  2.138106914077725E+026
+  2.302544274737503E+026
+  2.434614201819085E+026
+  2.534887539717150E+026
+  2.606085431131360E+026
+  2.652362103507414E+026
+  2.678619940373279E+026
+  2.689930945975254E+026
+  2.691092643366211E+026
+  2.686317698907614E+026
+  2.679043535113007E+026
+  2.671845031652835E+026
+  2.666434071976521E+026
+  2.663730125959643E+026
+  2.663984802250049E+026
+  2.666940989762050E+026
+  2.672005547905443E+026
+  2.678415146708604E+026
+  2.685378471349614E+026
+  2.692183934294177E+026
+  2.698268704182296E+026
+  2.703250738068377E+026
+  2.706929922806335E+026
+  2.709267339053463E+026
+  2.710352565293539E+026
+  2.710367014765142E+026
+  2.709547748025148E+026
+  2.708154635918306E+026
+  2.706444201137618E+026
+  2.704651404110920E+026
+  2.702978358718620E+026
+  3.075633548961834E+026
+  3.075826583217808E+026
+  3.076217939664441E+026
+  3.076811624400275E+026
+  3.077578034320955E+026
+  3.078444715478652E+026
+  3.079291663107734E+026
+  3.079952847100030E+026
+  3.080224980305162E+026
+  3.079884913198019E+026
+  3.078715553206987E+026
+  3.076538551233307E+026
+  3.073250948474923E+026
+  3.068861678474072E+026
+  3.063522370042691E+026
+  3.057545921506308E+026
+  3.051406109411995E+026
+  3.045712147685692E+026
+  3.041153784208983E+026
+  3.038415350598378E+026
+  3.038061071144275E+026
+  3.040398462688903E+026
+  3.045331135131049E+026
+  3.052215964550146E+026
+  3.059741827621490E+026
+  3.065847582580495E+026
+  3.067695966492761E+026
+  3.061718163615060E+026
+  3.043741643754696E+026
+  3.009211590593615E+026
+  2.953512847446196E+026
+  2.872392553245015E+026
+  2.762470622224788E+026
+  2.621803747052604E+026
+  2.450439040994380E+026
+  2.250860786589899E+026
+  2.028209533695819E+026
+  1.790154342129081E+026
+  1.546342853823543E+026
+  1.307444634932645E+026
+  1.083924965788898E+026
+  8.844280410380263E+025
+  7.135374419385335E+025
+  5.714854732909951E+025
+  4.558795417696971E+025
+  3.631870998385329E+025
+  2.896262736303375E+025
+  2.316418901085496E+025
+  1.861192099580039E+025
+  1.504453229922461E+025
+  1.224901985470788E+025
+  1.005511623386048E+025
+  8.328559956401100E+024
+  6.964480563361073E+024
+  5.881490886169194E+024
+  5.016690169843165E+024
+  4.321580130869604E+024
+  3.758802693060024E+024
+  3.299574849107763E+024
+  2.921693952748501E+024
+  2.607998911032762E+024
+  2.345189959896962E+024
+  2.122927337669835E+024
+  1.933145194484930E+024
+  1.769530789060324E+024
+  1.627130341296076E+024
+  1.502052021496413E+024
+  1.391243798591783E+024
+  1.292329669767356E+024
+  1.203492663718150E+024
+  1.123397553584030E+024
+  1.051151181269485E+024
+  9.863046784688320E+023
+  9.289110861557600E+023
+  8.796659910153854E+023
+  8.401807998657841E+023
+  8.134722850188402E+023
+  8.048033355162883E+023
+  8.230844004974913E+023
+  8.831480143641473E+023
+  1.009340726175422E+024
+  1.241026855947658E+024
+  1.640731802389808E+024
+  2.305690439542000E+024
+  3.383359691168858E+024
+  5.090757066412516E+024
+  7.735941116316764E+024
+  1.173712132927308E+025
+  1.763039839974878E+025
+  2.605097222194704E+025
+  3.766567183822416E+025
+  5.302937424093026E+025
+  7.236639523590385E+025
+  9.541731038342764E+025
+  1.214480349904222E+026
+  1.493315396146911E+026
+  1.776988139005461E+026
+  2.051366187689922E+026
+  2.303815914794152E+026
+  2.524675991060954E+026
+  2.708032561478072E+026
+  2.851790080350418E+026
+  2.957196228322516E+026
+  3.028048733223291E+026
+  3.069798925339338E+026
+  3.088707567007488E+026
+  3.091139251820375E+026
+  3.083026025897449E+026
+  3.069497144801779E+026
+  3.054657304395674E+026
+  3.041492670304412E+026
+  3.031885055400653E+026
+  3.026714827704663E+026
+  3.026031031176417E+026
+  3.029263821367420E+026
+  3.035451969436736E+026
+  3.043458992475642E+026
+  3.052156234433030E+026
+  3.060559051516814E+026
+  3.067911077765910E+026
+  3.073719333682453E+026
+  3.077748720151821E+026
+  3.079988067191133E+026
+  3.080600863344045E+026
+  3.079871270475023E+026
+  3.078151570138790E+026
+  3.075815039946782E+026
+  3.073218524584251E+026
+  3.070676455405412E+026
+  3.068445331485385E+026
+  6.380235479024941E+018
+  6.380655159205266E+018
+  6.381458667940616E+018
+  6.382647889777017E+018
+  6.384157340775534E+018
+  6.385835832696503E+018
+  6.387437324653503E+018
+  6.388624313040642E+018
+  6.388985752703916E+018
+  6.388072301828412E+018
+  6.385448650138916E+018
+  6.380759320166797E+018
+  6.373802231991679E+018
+  6.364601710472288E+018
+  6.353469684633147E+018
+  6.341041869537997E+018
+  6.328275329768858E+018
+  6.316395177511181E+018
+  6.306781571559383E+018
+  6.300793938722221E+018
+  6.299537239255158E+018
+  6.303584276592166E+018
+  6.312677120788891E+018
+  6.325438121100166E+018
+  6.339125457200390E+018
+  6.349469175926383E+018
+  6.350621612497268E+018
+  6.335252244581068E+018
+  6.294812692501681E+018
+  6.219992956622734E+018
+  6.101383000804080E+018
+  5.930339820701877E+018
+  5.700033254300360E+018
+  5.406599590179910E+018
+  5.050271370716623E+018
+  4.636285059997674E+018
+  4.175319125148706E+018
+  3.683219116112401E+018
+  3.179857260484437E+018
+  2.687160807269255E+018
+  2.226592894697925E+018
+  1.815838158991030E+018
+  1.464217808434111E+018
+  1.172113294218948E+018
+  9.345262763228088E+017
+  7.441338245277935E+017
+  5.931177627376787E+017
+  4.741400995548858E+017
+  3.807790034552961E+017
+  3.076519921514385E+017
+  2.503745476962286E+017
+  2.054441453375513E+017
+  1.701005946745006E+017
+  1.421891478361240E+017
+  1.200384502608718E+017
+  1.023574341958119E+017
+  8.815113041572832E+016
+  7.665347245280766E+016
+  6.727449742232278E+016
+  5.955931434157210E+016
+  5.315646888108316E+016
+  4.779369305393630E+016
+  4.325939477600757E+016
+  3.938857430849344E+016
+  3.605213825656501E+016
+  3.314881555335925E+016
+  3.059906787322344E+016
+  2.834053620766821E+016
+  2.632468481457168E+016
+  2.451440396431866E+016
+  2.288242627782583E+016
+  2.141051332801674E+016
+  2.008949998838883E+016
+  1.892047277224452E+016
+  1.791764751224960E+016
+  1.711396243203968E+016
+  1.657109962137088E+016
+  1.639669972198509E+016
+  1.677306412180375E+016
+  1.800375206605143E+016
+  2.058719295645916E+016
+  2.532952748682816E+016
+  3.351165293353224E+016
+  4.712626956659181E+016
+  6.919655929852154E+016
+  1.041739130486824E+017
+  1.583805026864201E+017
+  2.404045086500081E+017
+  3.612636588363346E+017
+  5.340258607341441E+017
+  7.724315146938761E+017
+  1.087952031369667E+018
+  1.485302081787662E+018
+  1.959283730441584E+018
+  2.494952707788303E+018
+  3.069273373905671E+018
+  3.654197765313474E+018
+  4.220712797853968E+018
+  4.742823173852064E+018
+  5.200584646961484E+018
+  5.581710574230678E+018
+  5.881735180993507E+018
+  6.103054956610339E+018
+  6.253313512763938E+018
+  6.343570167941324E+018
+  6.386571984260240E+018
+  6.395307378039864E+018
+  6.381905202775664E+018
+  6.356873644048006E+018
+  6.328642984629451E+018
+  6.303369852285980E+018
+  6.284962576848091E+018
+  6.275287830390575E+018
+  6.274514578468000E+018
+  6.281544609511935E+018
+  6.294474208836268E+018
+  6.311033213540833E+018
+  6.328957377138458E+018
+  6.346265865664571E+018
+  6.361433595269489E+018
+  6.373463904640667E+018
+  6.381878792950800E+018
+  6.386651372367685E+018
+  6.388107184592923E+018
+  6.386815895080560E+018
+  6.383485754786437E+018
+  6.378868886044374E+018
+  6.373686099683228E+018
+  6.368574794122635E+018
+  6.364057814493096E+018
+  9.597100471780083E+024
+  9.596603396247831E+024
+  9.597446262884371E+024
+  9.599868454406937E+024
+  9.603947926121684E+024
+  9.609540347121856E+024
+  9.616235136400856E+024
+  9.623337415863117E+024
+  9.629882899505631E+024
+  9.634693476402643E+024
+  9.636475793741187E+024
+  9.633958756398754E+024
+  9.626060980687887E+024
+  9.612073284557287E+024
+  9.591834670734065E+024
+  9.565875079300403E+024
+  9.535495622618822E+024
+  9.502757685562545E+024
+  9.470357050302370E+024
+  9.441368888016039E+024
+  9.418863979807570E+024
+  9.405414517122457E+024
+  9.402526750030255E+024
+  9.410054445674205E+024
+  9.425658658222637E+024
+  9.444383935110738E+024
+  9.458418904320269E+024
+  9.457102172015276E+024
+  9.427225343698244E+024
+  9.353675204797524E+024
+  9.220444558116798E+024
+  9.012019213393270E+024
+  8.715107258550607E+024
+  8.320607125954554E+024
+  7.825611594913569E+024
+  7.235129485224056E+024
+  6.563112016988663E+024
+  5.832355747680969E+024
+  5.072979589849169E+024
+  4.319464361778705E+024
+  3.606656187358078E+024
+  2.964299587725024E+024
+  2.409278632374720E+024
+  1.944188769902669E+024
+  1.562748719110337E+024
+  1.254596626489156E+024
+  1.008224068743836E+024
+  8.125883365835647E+023
+  6.578745114192485E+023
+  5.357539916800001E+023
+  4.393699660745800E+023
+  3.631922571838237E+023
+  3.028238402119504E+023
+  2.548031513052625E+023
+  2.164234440446076E+023
+  1.855774958208650E+023
+  1.606290469125157E+023
+  1.403089835560712E+023
+  1.236329160642072E+023
+  1.098365199799489E+023
+  9.832524674233948E+022
+  8.863545748317942E+022
+  8.040452784590006E+022
+  7.334793858794223E+022
+  6.724177669051030E+022
+  6.190941666556035E+022
+  5.721143384805845E+022
+  5.303802856428899E+022
+  4.930342427386968E+022
+  4.594185988610149E+022
+  4.290494612371196E+022
+  4.016032314303110E+022
+  3.769177554714309E+022
+  3.550127985648525E+022
+  3.361394900447499E+022
+  3.208759962491185E+022
+  3.102983853431003E+022
+  3.062731731396602E+022
+  3.119432489731327E+022
+  3.325132019002698E+022
+  3.764831987381345E+022
+  4.575279948188753E+022
+  5.972563984295486E+022
+  8.290886387237517E+022
+  1.203403432493565E+023
+  1.793850645514776E+023
+  2.704183452650843E+023
+  4.074001681813360E+023
+  6.080312207625848E+023
+  8.929831852269431E+023
+  1.283481406090393E+024
+  1.796374925463282E+024
+  2.436836872356343E+024
+  3.193523298958737E+024
+  4.039367181351637E+024
+  4.934839090539831E+024
+  5.833441601499592E+024
+  6.688568183665575E+024
+  7.459978263325841E+024
+  8.118468431375431E+024
+  8.648052554901502E+024
+  9.045738234400973E+024
+  9.319520970582709E+024
+  9.485412234073113E+024
+  9.564235419793444E+024
+  9.578698332978026E+024
+  9.551007754283290E+024
+  9.501106262888008E+024
+  9.445505435618856E+024
+  9.396647953050772E+024
+  9.362725154103851E+024
+  9.347880043176049E+024
+  9.352723451185083E+024
+  9.375079826869339E+024
+  9.410864658645110E+024
+  9.454987087146513E+024
+  9.502176475889331E+024
+  9.547652725881912E+024
+  9.587592668804632E+024
+  9.619380517075039E+024
+  9.641661016958642E+024
+  9.654235598480388E+024
+  9.657853843073466E+024
+  9.653953908828962E+024
+  9.644394633612066E+024
+  9.631204866590703E+024
+  9.616366347024912E+024
+  9.601645704130267E+024
+  9.588482292748063E+024
+  9.577929079706150E+024
+  2.915303993588223E+026
+  2.915394873187968E+026
+  2.915686902947337E+026
+  2.916194470450627E+026
+  2.916900122714525E+026
+  2.917743925526027E+026
+  2.918616462965357E+026
+  2.919357087591413E+026
+  2.919758487554336E+026
+  2.919579106849147E+026
+  2.918563672188013E+026
+  2.916470616911981E+026
+  2.913104298420513E+026
+  2.908348755024213E+026
+  2.902198391949372E+026
+  2.894779990285747E+026
+  2.886360064692543E+026
+  2.877331935368569E+026
+  2.868178080097704E+026
+  2.859405555862908E+026
+  2.851455497814948E+026
+  2.844591597982823E+026
+  2.838776477042980E+026
+  2.833548327595425E+026
+  2.827912547629397E+026
+  2.820263992137975E+026
+  2.808355038125205E+026
+  2.789323320399732E+026
+  2.759791249793484E+026
+  2.716047342812632E+026
+  2.654316141320488E+026
+  2.571117221367605E+026
+  2.463702089065023E+026
+  2.330538853301486E+026
+  2.171788833624122E+026
+  1.989691069193639E+026
+  1.788749995983867E+026
+  1.575623302786778E+026
+  1.358645348285761E+026
+  1.147000285844613E+026
+  9.496643511626328E+025
+  7.740092259474798E+025
+  6.238621480567942E+025
+  4.992706613455929E+025
+  3.980217998218196E+025
+  3.169396351694164E+025
+  2.526582536800772E+025
+  2.020311185224371E+025
+  1.623117565644159E+025
+  1.312025187193834E+025
+  1.068343937954245E+025
+  8.771594697302666E+024
+  7.267280826191581E+024
+  6.078877056358351E+024
+  5.135348589459359E+024
+  4.381839850961180E+024
+  3.776083342185727E+024
+  3.285537515248469E+024
+  2.885140374485744E+024
+  2.555565244522049E+024
+  2.281876860351262E+024
+  2.052501688953930E+024
+  1.858442252401530E+024
+  1.692679503300551E+024
+  1.549719452496195E+024
+  1.425250232645031E+024
+  1.315883795039645E+024
+  1.218962790061573E+024
+  1.132418259362589E+024
+  1.054668023101514E+024
+  9.845496095141454E+023
+  9.212859017555375E+023
+  8.644872392838928E+023
+  8.142017442437955E+023
+  7.710379535315135E+023
+  7.364030334602082E+023
+  7.129295420869816E+023
+  7.052085087865086E+023
+  7.210117557464928E+023
+  7.732764113869655E+023
+  8.832401758844365E+023
+  1.085247829643232E+024
+  1.433867557585488E+024
+  2.013991720763193E+024
+  2.954421503613774E+024
+  4.444833636351888E+024
+  6.754687643619077E+024
+  1.025017248442475E+025
+  1.540137752943362E+025
+  2.276647428084049E+025
+  3.293353715380612E+025
+  4.639587721118562E+025
+  6.336147641710600E+025
+  8.361894247267515E+025
+  1.065446258028915E+026
+  1.311725787637316E+026
+  1.563245896169438E+026
+  1.807810397057575E+026
+  2.034488811469393E+026
+  2.234893225241164E+026
+  2.403851257005243E+026
+  2.539469043166170E+026
+  2.642720915967320E+026
+  2.716763048135218E+026
+  2.766157563305224E+026
+  2.796142609650179E+026
+  2.812024041464595E+026
+  2.818716002181657E+026
+  2.820428074444803E+026
+  2.820483482522462E+026
+  2.821249645446603E+026
+  2.824162802951333E+026
+  2.829828398797566E+026
+  2.838177137571168E+026
+  2.848654041626882E+026
+  2.860416356190665E+026
+  2.872517493829003E+026
+  2.884058925450075E+026
+  2.894299102832175E+026
+  2.902716275131920E+026
+  2.909028710748101E+026
+  2.913180616137479E+026
+  2.915304924055103E+026
+  2.915674668231309E+026
+  2.914652158120216E+026
+  2.912641056086261E+026
+  2.910044584494271E+026
+  2.907233411041737E+026
+  2.904524460891750E+026
+  2.902169423222332E+026
+  3.097837601163646E+026
+  3.097895973914764E+026
+  3.098199985908046E+026
+  3.098774015339490E+026
+  3.099605966374710E+026
+  3.100634743808861E+026
+  3.101741820127305E+026
+  3.102748781229167E+026
+  3.103422146457891E+026
+  3.103487221987614E+026
+  3.102651329235826E+026
+  3.100635121198189E+026
+  3.097209659337777E+026
+  3.092235601746380E+026
+  3.085699312293707E+026
+  3.077739552619076E+026
+  3.068657963138081E+026
+  3.058906877504741E+026
+  3.049049326550945E+026
+  3.039688557665586E+026
+  3.031367994844019E+026
+  3.024446940811961E+026
+  3.018961849017412E+026
+  3.014486921342990E+026
+  3.010010454182493E+026
+  3.003844400582680E+026
+  2.993584125076994E+026
+  2.976133788618552E+026
+  2.947810792054496E+026
+  2.904540358949306E+026
+  2.842147799791125E+026
+  2.756749267401834E+026
+  2.645229253142837E+026
+  2.505772648034844E+026
+  2.338391178831032E+026
+  2.145353031401477E+026
+  1.931401246591454E+026
+  1.703647353515542E+026
+  1.471067420062487E+026
+  1.243612825211343E+026
+  1.031062986346442E+026
+  8.415015626923419E+025
+  6.791921613068548E+025
+  5.442980721207202E+025
+  4.345149924782497E+025
+  3.464736044912646E+025
+  2.765786710837430E+025
+  2.214561179081508E+025
+  1.781527026506077E+025
+  1.441923448461703E+025
+  1.175570871111439E+025
+  9.663391856427348E+024
+  8.015076349828088E+024
+  6.711373955571052E+024
+  5.675120810555835E+024
+  4.846649205980163E+024
+  4.179925102185276E+024
+  3.639463460736201E+024
+  3.197902816044301E+024
+  2.834118957753769E+024
+  2.531769356833053E+024
+  2.278176370740326E+024
+  2.063473980451637E+024
+  1.879957965845987E+024
+  1.721592376874426E+024
+  1.583635838079771E+024
+  1.462359820966402E+024
+  1.354837850071578E+024
+  1.258790081106640E+024
+  1.172472288311272E+024
+  1.094602597665885E+024
+  1.024324015022401E+024
+  9.612068731294595E+023
+  9.053041078923256E+023
+  8.572857422268696E+023
+  8.186999476426794E+023
+  7.924404879579306E+023
+  7.835492323311906E+023
+  8.005533823820267E+023
+  8.576348623702709E+023
+  9.780544811151902E+023
+  1.199395467891330E+024
+  1.581316343810806E+024
+  2.216536850823040E+024
+  3.245581533693486E+024
+  4.875139968187460E+024
+  7.398432599546062E+024
+  1.121328768661179E+025
+  1.682938580935883E+025
+  2.485029977785456E+025
+  3.590936252909701E+025
+  5.053340777627043E+025
+  6.893558351748339E+025
+  9.087098486137175E+025
+  1.156468262283086E+026
+  1.422012117506464E+026
+  1.692469017818916E+026
+  1.954585297488290E+026
+  2.196554091425074E+026
+  2.409393179505045E+026
+  2.587657984076640E+026
+  2.729488282915426E+026
+  2.836141809192548E+026
+  2.911232042296237E+026
+  2.959873861591162E+026
+  2.987883885037275E+026
+  3.001116598928272E+026
+  3.004964812174256E+026
+  3.004021103888770E+026
+  3.001883016832986E+026
+  3.001081571930859E+026
+  3.003113223152864E+026
+  3.008555229415299E+026
+  3.017242290664803E+026
+  3.028479270654442E+026
+  3.041263096455469E+026
+  3.054488392546975E+026
+  3.067116675541926E+026
+  3.078296977153723E+026
+  3.087434493914635E+026
+  3.094211336397772E+026
+  3.098568804364082E+026
+  3.100663787189493E+026
+  3.100812434942927E+026
+  3.099431457480380E+026
+  3.096982880037289E+026
+  3.093925953296475E+026
+  3.090680161548439E+026
+  3.087600765830774E+026
+  3.084965631404426E+026
+  3.029445517701277E+026
+  3.029531186917176E+026
+  3.029837094036442E+026
+  3.030380955342575E+026
+  3.031146394731526E+026
+  3.032071549441024E+026
+  3.033041591474714E+026
+  3.033886904288656E+026
+  3.034388077471268E+026
+  3.034289348886928E+026
+  3.033320761692628E+026
+  3.031227746562971E+026
+  3.027805868369725E+026
+  3.022937237582121E+026
+  3.016623637848589E+026
+  3.009010356516240E+026
+  3.000394309397071E+026
+  2.991210415056952E+026
+  2.981991462244484E+026
+  2.973299098252756E+026
+  2.965627012336962E+026
+  2.959281554663631E+026
+  2.954249317377437E+026
+  2.950064900216106E+026
+  2.945694567322106E+026
+  2.939452446208394E+026
+  2.928965420984710E+026
+  2.911201403186475E+026
+  2.882573769590739E+026
+  2.839132535109522E+026
+  2.776849420929821E+026
+  2.691997421212462E+026
+  2.581613218931081E+026
+  2.444010922718928E+026
+  2.279288436532633E+026
+  2.089737881380086E+026
+  1.880049343975332E+026
+  1.657198644788788E+026
+  1.429949896758562E+026
+  1.207986537219027E+026
+  1.000795826135839E+026
+  8.161926248947358E+025
+  6.582663761755137E+025
+  5.271221278017400E+025
+  4.204745776024886E+025
+  3.350133618478995E+025
+  2.672181575076873E+025
+  2.137916869986824E+025
+  1.718519818943972E+025
+  1.389854589769851E+025
+  1.132270297973130E+025
+  9.300734598441342E+024
+  7.708979820769088E+024
+  6.450898106117199E+024
+  5.451593747454691E+024
+  4.653195773557978E+024
+  4.011088505570250E+024
+  3.490904413368043E+024
+  3.066161901475266E+024
+  2.716429765557358E+024
+  2.425911956609030E+024
+  2.182362570449758E+024
+  1.976257469397887E+024
+  1.800163838898793E+024
+  1.648261682451417E+024
+  1.515981712703195E+024
+  1.399732499511996E+024
+  1.296696404682685E+024
+  1.204679168954938E+024
+  1.122002493904100E+024
+  1.047433138495617E+024
+  9.801466177687464E+023
+  9.197294690436743E+023
+  8.662325447968273E+023
+  8.203008083275756E+023
+  7.834254021818736E+023
+  7.583951320144388E+023
+  7.500718280557459E+023
+  7.666828058205679E+023
+  8.219185543344775E+023
+  9.382454749722648E+023
+  1.151982016107911E+024
+  1.520809794372630E+024
+  2.134426993735735E+024
+  3.128862832540576E+024
+  4.704332599942022E+024
+  7.145093812389646E+024
+  1.083716557611316E+025
+  1.627564742793168E+025
+  2.404769716894018E+025
+  3.477077553918887E+025
+  4.896083159156575E+025
+  6.683129223468674E+025
+  8.815223736804333E+025
+  1.122589063432277E+026
+  1.381266335829651E+026
+  1.645090512822375E+026
+  1.901189901073040E+026
+  2.138058263413166E+026
+  2.346898242187094E+026
+  2.522324225796827E+026
+  2.662420298959455E+026
+  2.768299318040747E+026
+  2.843372387858225E+026
+  2.892525868812240E+026
+  2.921348653618341E+026
+  2.935489033370953E+026
+  2.940169458184825E+026
+  2.939856396497043E+026
+  2.938068790248628E+026
+  2.937305395507959E+026
+  2.939071813432051E+026
+  2.943987956289555E+026
+  2.951954743584276E+026
+  2.962355984149068E+026
+  2.974269748990801E+026
+  2.986664910134755E+026
+  2.998563505823773E+026
+  3.009157227283176E+026
+  3.017874625117853E+026
+  3.024402753318657E+026
+  3.028672092926126E+026
+  3.030816673118597E+026
+  3.031121883416202E+026
+  3.029969826604709E+026
+  3.027787722832650E+026
+  3.025002864442841E+026
+  3.022007909882088E+026
+  3.019137883776946E+026
+  3.016657645517944E+026
+  2.411378782601912E+026
+  2.411470501259196E+026
+  2.411703211504764E+026
+  2.412082862975458E+026
+  2.412591401717354E+026
+  2.413178661718710E+026
+  2.413756923645332E+026
+  2.414199319445772E+026
+  2.414342843185695E+026
+  2.413997172698134E+026
+  2.412959518830927E+026
+  2.411034601131107E+026
+  2.408058213342299E+026
+  2.403921994932161E+026
+  2.398595996013148E+026
+  2.392144865621209E+026
+  2.384733211170412E+026
+  2.376615918085667E+026
+  2.368110096060943E+026
+  2.359546963120681E+026
+  2.351204378862342E+026
+  2.343223661344192E+026
+  2.335517352152553E+026
+  2.327677238225800E+026
+  2.318893764687770E+026
+  2.307898748552743E+026
+  2.292943086617980E+026
+  2.271820251206079E+026
+  2.241945124335900E+026
+  2.200496135243272E+026
+  2.144626046403455E+026
+  2.071741618662910E+026
+  1.979842957221719E+026
+  1.867898311435290E+026
+  1.736209918891652E+026
+  1.586704700031688E+026
+  1.423068088971329E+026
+  1.250641663323351E+026
+  1.076036333859659E+026
+  9.064751527946257E+025
+  7.489620019940599E+025
+  6.091914605852172E+025
+  4.900404020406800E+025
+  3.914093758067714E+025
+  3.114373022976462E+025
+  2.475295679168971E+025
+  1.969660569180758E+025
+  1.572198353148888E+025
+  1.260949723130091E+025
+  1.017607698851135E+025
+  8.273241527220070E+024
+  6.782811018329330E+024
+  5.611946643720819E+024
+  4.688374246163207E+024
+  3.956171196066242E+024
+  3.372233675911575E+024
+  2.903408568358523E+024
+  2.524214762742257E+024
+  2.215059562438180E+024
+  1.960857184857393E+024
+  1.749966694817720E+024
+  1.573379925848579E+024
+  1.424103001256544E+024
+  1.296686702616386E+024
+  1.186870762170002E+024
+  1.091315189114595E+024
+  1.007398160524028E+024
+  9.330650795538856E+023
+  8.667174435664563E+023
+  8.071335370179358E+023
+  7.534160898948450E+023
+  7.049654377749802E+023
+  6.614810670851180E+023
+  6.230006967752253E+023
+  5.899956502966510E+023
+  5.635562568659585E+023
+  5.457242273790177E+023
+  5.400640380323719E+023
+  5.526165056712952E+023
+  5.934486507364613E+023
+  6.791054486015097E+023
+  8.363743376199673E+023
+  1.107869340170787E+024
+  1.559975626434596E+024
+  2.293566519664008E+024
+  3.457444607832789E+024
+  5.263419347875704E+024
+  8.000009873232571E+024
+  1.203867862478778E+025
+  1.782221481497009E+025
+  2.581993914016300E+025
+  3.643046620495075E+025
+  4.983189717493812E+025
+  6.587509005199240E+025
+  8.408687407648793E+025
+  1.037223058777532E+026
+  1.238643701948666E+026
+  1.435566228131901E+026
+  1.619347938196200E+026
+  1.783279216833793E+026
+  1.923128758779004E+026
+  2.037213000457502E+026
+  2.126092738138132E+026
+  2.192049156207570E+026
+  2.238484882055612E+026
+  2.269357014092594E+026
+  2.288702715076376E+026
+  2.300279991444663E+026
+  2.307322624124696E+026
+  2.312397370878666E+026
+  2.317348664091524E+026
+  2.323316174878383E+026
+  2.330810619599642E+026
+  2.339831994655605E+026
+  2.350012661046739E+026
+  2.360766782121726E+026
+  2.371428817442713E+026
+  2.381367489749896E+026
+  2.390067156529901E+026
+  2.397174404836631E+026
+  2.402512656023561E+026
+  2.406071116954144E+026
+  2.407976578126448E+026
+  2.408456972374334E+026
+  2.407803633137030E+026
+  2.406335948042387E+026
+  2.404370704232399E+026
+  2.402198800610715E+026
+  2.400070179772984E+026
+  2.398185845280918E+026
+  3.272723903312738E+026
+  3.272693995598791E+026
+  3.273035173346283E+026
+  3.273801022560496E+026
+  3.274996623913859E+026
+  3.276561874458114E+026
+  3.278360409011948E+026
+  3.280176763867276E+026
+  3.281723699892809E+026
+  3.282661885351672E+026
+  3.282632358645945E+026
+  3.281300116180117E+026
+  3.278405662852915E+026
+  3.273819541572581E+026
+  3.267592840035762E+026
+  3.259995162404874E+026
+  3.251530932923230E+026
+  3.242925346543382E+026
+  3.235073047965634E+026
+  3.228945926086677E+026
+  3.225461191735946E+026
+  3.225316683339075E+026
+  3.228806279734728E+026
+  3.235633388051756E+026
+  3.244743824546964E+026
+  3.254200532584108E+026
+  3.261121610346131E+026
+  3.261700748269227E+026
+  3.251326282732030E+026
+  3.224812032147820E+026
+  3.176749041552700E+026
+  3.101979945543023E+026
+  2.996183508077575E+026
+  2.856533137922844E+026
+  2.682359575099690E+026
+  2.475709489148162E+026
+  2.241661066414681E+026
+  1.988254718857298E+026
+  1.725941873922816E+026
+  1.466554763206645E+026
+  1.221939442530795E+026
+  1.002108881276822E+026
+  8.126435018674913E+025
+  6.542543350825523E+025
+  5.246521214791161E+025
+  4.201891521836056E+025
+  3.368582236111243E+025
+  2.708374365670095E+025
+  2.187441829321881E+025
+  1.777178155107305E+025
+  1.454101219957857E+025
+  1.199322763140938E+025
+  9.978624325468131E+024
+  8.379551574152038E+024
+  7.104225988860725E+024
+  6.081354307162011E+024
+  5.255698962206588E+024
+  4.584508850582221E+024
+  4.034693921102439E+024
+  3.580614608618457E+024
+  3.202366829117874E+024
+  2.884459648952296E+024
+  2.614800422891163E+024
+  2.383918696758791E+024
+  2.184374545705814E+024
+  2.010309043205738E+024
+  1.857104341928267E+024
+  1.721128694585504E+024
+  1.599548082713557E+024
+  1.490191501696605E+024
+  1.391462042153265E+024
+  1.302291559040299E+024
+  1.222144071754034E+024
+  1.151083717267599E+024
+  1.089939456455465E+024
+  1.040624219126277E+024
+  1.006705428535433E+024
+  9.943827508697043E+023
+  1.014113920333779E+024
+  1.083245720516211E+024
+  1.230154196506986E+024
+  1.500561584821151E+024
+  1.966834675140088E+024
+  2.741087512483023E+024
+  3.992638731041632E+024
+  5.969531137661442E+024
+  9.022012201401906E+024
+  1.362263314074723E+025
+  2.037257833756348E+025
+  2.997704806405649E+025
+  4.316506200910485E+025
+  6.052386380035665E+025
+  8.225166367806268E+025
+  1.079907278792556E+026
+  1.368489989603857E+026
+  1.675049192219146E+026
+  1.983888538258014E+026
+  2.279129173243863E+026
+  2.546906360889434E+026
+  2.776980978908677E+026
+  2.963523802680586E+026
+  3.105090513613787E+026
+  3.203988005211029E+026
+  3.265302597713237E+026
+  3.295837080031955E+026
+  3.303130042084618E+026
+  3.294649828199926E+026
+  3.277192580989072E+026
+  3.256477240795565E+026
+  3.236915602382213E+026
+  3.221533179850975E+026
+  3.212017910837715E+026
+  3.208873353398895E+026
+  3.211649687349630E+026
+  3.219221210170855E+026
+  3.230076104356435E+026
+  3.242585592133098E+026
+  3.255226008197218E+026
+  3.266737539730834E+026
+  3.276214747978833E+026
+  3.283133909340805E+026
+  3.287329368130076E+026
+  3.288935223263717E+026
+  3.288309333314484E+026
+  3.285953250935484E+026
+  3.282436247019427E+026
+  3.278328722278667E+026
+  3.274150144155123E+026
+  3.270333698664697E+026
+  3.267206737550989E+026
+  3.367737206011257E+026
+  3.367694794679796E+026
+  3.368018306509815E+026
+  3.368761231661467E+026
+  3.369929000395826E+026
+  3.371461831208361E+026
+  3.373222869669119E+026
+  3.374994221833239E+026
+  3.376482788965494E+026
+  3.377338178652317E+026
+  3.377183230236447E+026
+  3.375655664054395E+026
+  3.372457925602547E+026
+  3.367410527755110E+026
+  3.360502196984717E+026
+  3.351928608607818E+026
+  3.342110826091524E+026
+  3.331684907275079E+026
+  3.321455753598638E+026
+  3.312311390836378E+026
+  3.305098443134409E+026
+  3.300465152178344E+026
+  3.298684101264899E+026
+  3.299471860252979E+026
+  3.301826195898085E+026
+  3.303902797431923E+026
+  3.302952734550180E+026
+  3.295339727534894E+026
+  3.276653578931770E+026
+  3.241933120100671E+026
+  3.186007914349073E+026
+  3.103960426532181E+026
+  2.991696192153920E+026
+  2.846585979319577E+026
+  2.668110908926752E+026
+  2.458403962943938E+026
+  2.222551701358647E+026
+  1.968517809224811E+026
+  1.706594772250347E+026
+  1.448388440887840E+026
+  1.205476733866275E+026
+  9.876008688636297E+025
+  8.001208284879152E+025
+  6.436064625985264E+025
+  5.156932005997422E+025
+  4.127033491016676E+025
+  3.306281964354294E+025
+  2.656604703352318E+025
+  2.144399865030736E+025
+  1.741310706129613E+025
+  1.424099752428734E+025
+  1.174102315469229E+025
+  9.765337041721309E+024
+  8.197951857443571E+024
+  6.948469883819798E+024
+  5.946735523383241E+024
+  5.138435511810241E+024
+  4.481564088598618E+024
+  3.943629112855446E+024
+  3.499469035412613E+024
+  3.129561196855035E+024
+  2.818718778367463E+024
+  2.555091631355398E+024
+  2.329402787321387E+024
+  2.134366819105011E+024
+  1.964248202005841E+024
+  1.814527545747997E+024
+  1.681651347707188E+024
+  1.562847191190347E+024
+  1.455991625785337E+024
+  1.359522984011830E+024
+  1.272396945664548E+024
+  1.194089881304685E+024
+  1.124665488328950E+024
+  1.064936310154569E+024
+  1.016776755117005E+024
+  9.836828013739389E+023
+  9.717314945810826E+023
+  9.911770158960648E+023
+  1.059034667498189E+024
+  1.203149331635123E+024
+  1.468407014295104E+024
+  1.925885544606274E+024
+  2.685762622971374E+024
+  3.914537756165792E+024
+  5.856304529457172E+024
+  8.856039974902281E+024
+  1.337969601430279E+025
+  2.002090781725364E+025
+  2.947742051310986E+025
+  4.247291482058910E+025
+  5.959464683466173E+025
+  8.105012660859689E+025
+  1.065019275264159E+026
+  1.350873526585768E+026
+  1.655196145354707E+026
+  1.962644184450922E+026
+  2.257646691000580E+026
+  2.526559656713291E+026
+  2.759253511868208E+026
+  2.949893089051552E+026
+  3.096924655979156E+026
+  3.202464398416737E+026
+  3.271352596554796E+026
+  3.310115661245959E+026
+  3.326006944665830E+026
+  3.326217964010114E+026
+  3.317289889883841E+026
+  3.304718851017117E+026
+  3.292733644564100E+026
+  3.284221716765616E+026
+  3.280780272884775E+026
+  3.282868940741982E+026
+  3.290037257038388E+026
+  3.301195971097495E+026
+  3.314898623588880E+026
+  3.329601474459615E+026
+  3.343876363654032E+026
+  3.356561196055880E+026
+  3.366843830625270E+026
+  3.374284723444136E+026
+  3.378790503854897E+026
+  3.380554573735557E+026
+  3.379981372519203E+026
+  3.377607528969185E+026
+  3.374027667866605E+026
+  3.369829856641200E+026
+  3.365545624963461E+026
+  3.361616546902444E+026
+  3.358376266186196E+026
+  3.214379414766451E+026
+  3.214019422949311E+026
+  3.214269797416118E+026
+  3.215256370218324E+026
+  3.217037503156650E+026
+  3.219577524298464E+026
+  3.222726927084115E+026
+  3.226213223046304E+026
+  3.229645611777301E+026
+  3.232536707560523E+026
+  3.234342470966256E+026
+  3.234518988957876E+026
+  3.232592668337263E+026
+  3.228237922903164E+026
+  3.221353719134657E+026
+  3.212128160354287E+026
+  3.201079099409548E+026
+  3.189058866405362E+026
+  3.177212957217451E+026
+  3.166886280481662E+026
+  3.159476293229667E+026
+  3.156239543865838E+026
+  3.158065782605819E+026
+  3.165240616587513E+026
+  3.177222461725063E+026
+  3.192461508296836E+026
+  3.208287559733094E+026
+  3.220890694287608E+026
+  3.225414895976926E+026
+  3.216180862132686E+026
+  3.187049575681533E+026
+  3.131930579626322E+026
+  3.045424452593206E+026
+  2.923564093950475E+026
+  2.764582926449147E+026
+  2.569594438929949E+026
+  2.343029709220818E+026
+  2.092669634835365E+026
+  1.829150149936942E+026
+  1.564922846106093E+026
+  1.312806207319850E+026
+  1.083964326197066E+026
+  8.850047086146307E+025
+  7.173507909312919E+025
+  5.791392029998910E+025
+  4.669381772107734E+025
+  3.768144097168975E+025
+  3.049309336632199E+025
+  2.478393868986428E+025
+  2.025886354897079E+025
+  1.667318593382862E+025
+  1.382834674875061E+025
+  1.156559616580746E+025
+  9.759321153131600E+024
+  8.310833352171436E+024
+  7.142960627944420E+024
+  6.195526331396584E+024
+  5.421669827895569E+024
+  4.784905536347504E+024
+  4.256801982069303E+024
+  3.815166917791774E+024
+  3.442637806600450E+024
+  3.125592773951406E+024
+  2.853312605595217E+024
+  2.617338251334319E+024
+  2.410980159490589E+024
+  2.228945583842507E+024
+  2.067057981834348E+024
+  1.922049149632605E+024
+  1.791410363516489E+024
+  1.673294225078077E+024
+  1.566465058232340E+024
+  1.470303831360907E+024
+  1.384885469310065E+024
+  1.311164685964847E+024
+  1.251334830700600E+024
+  1.209467731655620E+024
+  1.192607347950149E+024
+  1.212582759330179E+024
+  1.288931227168114E+024
+  1.453477495125328E+024
+  1.757282719864471E+024
+  2.280805054471776E+024
+  3.148098202660324E+024
+  4.545523741468731E+024
+  6.744465750437673E+024
+  1.012549647129518E+025
+  1.519788294581260E+025
+  2.260291870746036E+025
+  3.308249924702091E+025
+  4.738695015955398E+025
+  6.609166214271804E+025
+  8.933018200247559E+025
+  1.166231224094723E+026
+  1.469177458582008E+026
+  1.787189076997567E+026
+  2.103002670872388E+026
+  2.399613228141236E+026
+  2.662648577261980E+026
+  2.882031548716290E+026
+  3.052695496081741E+026
+  3.174407724376972E+026
+  3.250947883750243E+026
+  3.288951992602115E+026
+  3.296694359854473E+026
+  3.282991218740290E+026
+  3.256318227413088E+026
+  3.224166205869497E+026
+  3.192622199759680E+026
+  3.166149528300026E+026
+  3.147539500210983E+026
+  3.138009081478116E+026
+  3.137417499519073E+026
+  3.144569771868701E+026
+  3.157568972251046E+026
+  3.174175461836714E+026
+  3.192133298042040E+026
+  3.209432371471802E+026
+  3.224487779878822E+026
+  3.236232182002712E+026
+  3.244129144557658E+026
+  3.248124071347014E+026
+  3.248553850736505E+026
+  3.246036606935699E+026
+  3.241358630876014E+026
+  3.235369020105618E+026
+  3.228888785599121E+026
+  3.222640464800606E+026
+  3.217201006774015E+026
+  3.212977268848429E+026
+  1.762260570856786E+026
+  1.762473001018893E+026
+  1.762707322203178E+026
+  1.762940625103805E+026
+  1.763138581820816E+026
+  1.763253478055360E+026
+  1.763224067879077E+026
+  1.762977705240779E+026
+  1.762434870382429E+026
+  1.761516540022610E+026
+  1.760154181357435E+026
+  1.758301441059142E+026
+  1.755946284061418E+026
+  1.753121899844851E+026
+  1.749914163806632E+026
+  1.746463139151926E+026
+  1.742956151890787E+026
+  1.739610368486447E+026
+  1.736643594421081E+026
+  1.734233241717873E+026
+  1.732465033938047E+026
+  1.731274839804793E+026
+  1.730388768098699E+026
+  1.729268021650783E+026
+  1.727065780736353E+026
+  1.722603505845194E+026
+  1.714373644719373E+026
+  1.700575056170440E+026
+  1.679186732569555E+026
+  1.648084510464894E+026
+  1.605203763170271E+026
+  1.548747396037025E+026
+  1.477431481234683E+026
+  1.390749784334602E+026
+  1.289223856331280E+026
+  1.174590191257458E+026
+  1.049866097500700E+026
+  9.192397603637454E+025
+  7.877547901228129E+025
+  6.608061528283750E+025
+  5.435235328572959E+025
+  4.399846044782971E+025
+  3.521480654244233E+025
+  2.797836738891128E+025
+  2.213881980279836E+025
+  1.749481470236967E+025
+  1.383861096551557E+025
+  1.097909187506312E+025
+  8.751382059735678E+024
+  7.018870842919879E+024
+  5.671372471328048E+024
+  4.621646442077489E+024
+  3.801506465612575E+024
+  3.158134841938978E+024
+  2.650865756849552E+024
+  2.248509697404637E+024
+  1.927195779057488E+024
+  1.668667707464476E+024
+  1.458957346246838E+024
+  1.287362702577218E+024
+  1.145666190742718E+024
+  1.027539817383388E+024
+  9.280943071014617E+023
+  8.435382901516477E+023
+  7.709212760765231E+023
+  7.079402928103802E+023
+  6.527949518691002E+023
+  6.040795292888529E+023
+  5.607036802935428E+023
+  5.218359095042311E+023
+  4.868662078943933E+023
+  4.553867145041673E+023
+  4.271923526546229E+023
+  4.023078159170809E+023
+  3.810540471459906E+023
+  3.641779326459655E+023
+  3.530853789499101E+023
+  3.502429437963843E+023
+  3.598499135675837E+023
+  3.889341225863680E+023
+  4.490920406130930E+023
+  5.591726687823437E+023
+  7.492802126004506E+023
+  1.066505770297580E+024
+  1.582721780233779E+024
+  2.404462412741010E+024
+  3.684185249495798E+024
+  5.630831847918078E+024
+  8.515355483970049E+024
+  1.266369661203662E+025
+  1.842591134409778E+025
+  2.610697734996452E+025
+  3.585811360468976E+025
+  4.759650724361796E+025
+  6.100250982018404E+025
+  7.555208313950011E+025
+  9.058459335827053E+025
+  1.053966479765153E+026
+  1.193379552924182E+026
+  1.318876045831271E+026
+  1.426981391079895E+026
+  1.516055716974578E+026
+  1.586118437246262E+026
+  1.638502004971308E+026
+  1.675438862936180E+026
+  1.699660376001345E+026
+  1.714054064781031E+026
+  1.721397824848415E+026
+  1.724171991164742E+026
+  1.724441589525688E+026
+  1.723798714261580E+026
+  1.723355191897675E+026
+  1.723776089344404E+026
+  1.725344202376169E+026
+  1.728044632633333E+026
+  1.731657811446823E+026
+  1.735849758714034E+026
+  1.740250363266475E+026
+  1.744513690334361E+026
+  1.748357900147312E+026
+  1.751585489201041E+026
+  1.754086943762642E+026
+  1.755832549031405E+026
+  1.756857691673862E+026
+  1.757245921155056E+026
+  1.757111974970956E+026
+  1.756586170898363E+026
+  1.755802010860387E+026
+  1.754887605406965E+026
+  1.753960142236017E+026
+  2.930438827774384E+026
+  2.930669627762412E+026
+  2.931051759082190E+026
+  2.931578213120729E+026
+  2.932213076409839E+026
+  2.932884197330922E+026
+  2.933479928442954E+026
+  2.933851345264589E+026
+  2.933820717410290E+026
+  2.933197395956435E+026
+  2.931800928239854E+026
+  2.929489717926189E+026
+  2.926192651687868E+026
+  2.921939992174517E+026
+  2.916888573429313E+026
+  2.911335512411618E+026
+  2.905714532324154E+026
+  2.900569648293336E+026
+  2.896502524250395E+026
+  2.894092389617570E+026
+  2.893790910406359E+026
+  2.895798450783877E+026
+  2.899932122097215E+026
+  2.905499216762157E+026
+  2.911191519570236E+026
+  2.915016359767957E+026
+  2.914279324817649E+026
+  2.905631860039366E+026
+  2.885195098826341E+026
+  2.848769253580762E+026
+  2.792134765940358E+026
+  2.711445046493644E+026
+  2.603698363542903E+026
+  2.467256338842213E+026
+  2.302349074694486E+026
+  2.111476986838014E+026
+  1.899597731683278E+026
+  1.673989232181690E+026
+  1.443721768275201E+026
+  1.218757058181579E+026
+  1.008804926231847E+026
+  8.218263311861242E+025
+  6.619692532738422E+025
+  5.293264140449630E+025
+  4.215612707710690E+025
+  3.352974878048346E+025
+  2.669483614536466E+025
+  2.131571447859302E+025
+  1.709921860832763E+025
+  1.380003348904675E+025
+  1.121861019773764E+025
+  9.195744654736767E+024
+  7.606123818924948E+024
+  6.352031876679381E+024
+  5.357756274971134E+024
+  4.564872576343242E+024
+  3.928401355988021E+024
+  3.413745465020551E+024
+  2.994286742085998E+024
+  2.649520667353450E+024
+  2.363619847251021E+024
+  2.124334030636566E+024
+  1.922151336583344E+024
+  1.749660687482874E+024
+  1.601068478871017E+024
+  1.471833233712909E+024
+  1.358390590034945E+024
+  1.257947787816745E+024
+  1.168332266846625E+024
+  1.087883545043069E+024
+  1.015381781484700E+024
+  9.500110348057795E+023
+  8.913611282397071E+023
+  8.394805364383519E+023
+  7.950057298978045E+023
+  7.594127182305568E+023
+  7.354679572768420E+023
+  7.280032594445225E+023
+  7.452084837483252E+023
+  8.007314873960857E+023
+  9.169980323900569E+023
+  1.130305480940375E+024
+  1.498371454359150E+024
+  2.111060007459050E+024
+  3.104825909427727E+024
+  4.680783241151195E+024
+  7.124883240370164E+024
+  1.082606832240254E+025
+  1.628409228259721E+025
+  2.409292181340472E+025
+  3.487903076291080E+025
+  4.916877915507112E+025
+  6.718524267855285E+025
+  8.870426969814081E+025
+  1.130601012842521E+026
+  1.392181983338162E+026
+  1.659128150361551E+026
+  1.918291505216579E+026
+  2.157835979484959E+026
+  2.368619488357314E+026
+  2.544936423621951E+026
+  2.684608989721351E+026
+  2.788569318027426E+026
+  2.860140840874995E+026
+  2.904217555831485E+026
+  2.926486316523641E+026
+  2.932773661779338E+026
+  2.928546980037176E+026
+  2.918568053633055E+026
+  2.906683020309396E+026
+  2.895729679699676E+026
+  2.887543951313882E+026
+  2.883047639510690E+026
+  2.882397949355851E+026
+  2.885176283236201E+026
+  2.890591782513395E+026
+  2.897675783446235E+026
+  2.905447590984957E+026
+  2.913038953265164E+026
+  2.919772492106589E+026
+  2.925196303022470E+026
+  2.929082139586934E+026
+  2.931397932619047E+026
+  2.932266349291924E+026
+  2.931918848813812E+026
+  2.930650633990261E+026
+  2.928780011009801E+026
+  2.926616025891701E+026
+  2.924435924109897E+026
+  2.922471433414382E+026
+  8.330558304396361E+024
+  8.329016700829886E+024
+  8.329368648362962E+024
+  8.332049745111812E+024
+  8.337298973388476E+024
+  8.345073029624994E+024
+  8.354977252699444E+024
+  8.366224614857674E+024
+  8.377632666028636E+024
+  8.387668676621271E+024
+  8.394547841479928E+024
+  8.396382854884046E+024
+  8.391377537682293E+024
+  8.378050295081564E+024
+  8.355465451709389E+024
+  8.323443913284230E+024
+  8.282720357170686E+024
+  8.235013089582404E+024
+  8.182975960866857E+024
+  8.130010390390213E+024
+  8.079929852720249E+024
+  8.036487990544076E+024
+  8.002802366210944E+024
+  7.980725365195599E+024
+  7.970228480085175E+024
+  7.968873682551723E+024
+  7.971445281974301E+024
+  7.969809161159514E+024
+  7.953056450064288E+024
+  7.907977786046967E+024
+  7.819901575839768E+024
+  7.673909922098812E+024
+  7.456410129705439E+024
+  7.156978644167208E+024
+  6.770304124487873E+024
+  6.297946739403725E+024
+  5.749532904902902E+024
+  5.142972710903856E+024
+  4.503381166169885E+024
+  3.860635075551289E+024
+  3.245874472157636E+024
+  2.686526039466530E+024
+  2.199062856783801E+024
+  1.787315502250811E+024
+  1.447042515533521E+024
+  1.170108052918488E+024
+  9.470858661372127E+023
+  7.687270038931812E+023
+  6.266847097027519E+023
+  5.137911645676102E+023
+  4.240849885071360E+023
+  3.527143362437806E+023
+  2.957890816177703E+023
+  2.502225074670828E+023
+  2.135828196295419E+023
+  1.839631933582912E+023
+  1.598726928021693E+023
+  1.401471647252419E+023
+  1.238777789574635E+023
+  1.103544569942556E+023
+  9.902150349524273E+022
+  8.944304929146164E+022
+  8.127627846500806E+022
+  7.425077370307396E+022
+  6.815264191453364E+022
+  6.281236430160648E+022
+  5.809554988120280E+022
+  5.389596309383340E+022
+  5.013035363583462E+022
+  4.673475321542019E+022
+  4.366203696544258E+022
+  4.088069956559180E+022
+  3.837499896802645E+022
+  3.614691870191793E+022
+  3.422085811400480E+022
+  3.265267115234475E+022
+  3.154576286059248E+022
+  3.107857084465197E+022
+  3.155006401692531E+022
+  3.345298666669106E+022
+  3.758838771138150E+022
+  4.523901621505738E+022
+  5.842214553131269E+022
+  8.024164364660515E+022
+  1.153498879163488E+023
+  1.705049828543630E+023
+  2.551575574465966E+023
+  3.819130693341262E+023
+  5.665826699759106E+023
+  8.273640190364474E+023
+  1.182516633416315E+024
+  1.645796473292456E+024
+  2.219873552703545E+024
+  2.892214153986028E+024
+  3.636243099831649E+024
+  4.414762736067666E+024
+  5.185309389662906E+024
+  5.906556644411277E+024
+  6.544132489444915E+024
+  7.074589864350568E+024
+  7.486989029582878E+024
+  7.782269498578771E+024
+  7.971056014691773E+024
+  8.070684516945028E+024
+  8.102124441474417E+024
+  8.087245870644763E+024
+  8.046650375713480E+024
+  7.998117840442801E+024
+  7.955631809872904E+024
+  7.928914430239997E+024
+  7.923399751701308E+024
+  7.940576754734028E+024
+  7.978628242966598E+024
+  8.033277811952489E+024
+  8.098741554748614E+024
+  8.168673718538668E+024
+  8.237003375475632E+024
+  8.298583590582422E+024
+  8.349610346317488E+024
+  8.387806481097525E+024
+  8.412397628582473E+024
+  8.423928387329203E+024
+  8.423977298750818E+024
+  8.414828365199183E+024
+  8.399144342365616E+024
+  8.379669053465299E+024
+  8.358975642067282E+024
+  8.339275699533679E+024
+  8.322295729243988E+024
+  8.309218488751492E+024
+  6.453414913095214E+025
+  6.453406254965751E+025
+  6.453951869051561E+025
+  6.455122890704374E+025
+  6.456913086331763E+025
+  6.459208988727736E+025
+  6.461767260595361E+025
+  6.464203282115855E+025
+  6.465993938667213E+025
+  6.466498706678701E+025
+  6.465000371668651E+025
+  6.460763598573278E+025
+  6.453107631543606E+025
+  6.441486754889858E+025
+  6.425568952716423E+025
+  6.405300700183850E+025
+  6.380944548802095E+025
+  6.353076308278533E+025
+  6.322530581842298E+025
+  6.290287645848091E+025
+  6.257301239361370E+025
+  6.224275171555376E+025
+  6.191405632070982E+025
+  6.158114276750651E+025
+  6.122803211823242E+025
+  6.082666060305098E+025
+  6.033589314967959E+025
+  5.970175892384386E+025
+  5.885919173049426E+025
+  5.773551059194877E+025
+  5.625580144482724E+025
+  5.435022307070181E+025
+  5.196301123713881E+025
+  4.906255845958920E+025
+  4.565141002098344E+025
+  4.177442777437467E+025
+  3.752293546863818E+025
+  3.303268297522272E+025
+  2.847424995887337E+025
+  2.403613627762208E+025
+  1.990297623691814E+025
+  1.622654380630453E+025
+  1.308520143220147E+025
+  1.047887470786515E+025
+  8.360689545332584E+024
+  6.663962339550696E+024
+  5.318237815644405E+024
+  4.257755849472492E+024
+  3.425168240897418E+024
+  2.772521849991461E+024
+  2.260817489792367E+024
+  1.858934276332784E+024
+  1.542362755724456E+024
+  1.291974940555513E+024
+  1.092933651670063E+024
+  9.337743542049279E+023
+  8.056572405438128E+023
+  7.017712460780777E+023
+  6.168662633441471E+023
+  5.468898558506141E+023
+  4.887072597922502E+023
+  4.398867630575822E+023
+  3.985358595109235E+023
+  3.631765493049201E+023
+  3.326506823760970E+023
+  3.060483172808558E+023
+  2.826537324652767E+023
+  2.619050464792911E+023
+  2.433644581159549E+023
+  2.266970018768003E+023
+  2.116565400746653E+023
+  1.980786178796710E+023
+  1.858809746134277E+023
+  1.750741931500634E+023
+  1.657875584864000E+023
+  1.583192335928421E+023
+  1.532261006944550E+023
+  1.514780250195031E+023
+  1.547149638887377E+023
+  1.656641961409368E+023
+  1.887991050725797E+023
+  2.313484280945946E+023
+  3.047893168869208E+023
+  4.269646134774930E+023
+  6.249273921586826E+023
+  9.384892309554956E+023
+  1.424167840022246E+024
+  2.158715511995864E+024
+  3.240593405929270E+024
+  4.786632530682900E+024
+  6.919842003990560E+024
+  9.743338471574793E+024
+  1.330055852917592E+025
+  1.754744590075843E+025
+  2.235427279373218E+025
+  2.752053371699200E+025
+  3.280225112582821E+025
+  3.794761819109445E+025
+  4.273184039144650E+025
+  4.698341320729381E+025
+  5.059772561940996E+025
+  5.353794979310312E+025
+  5.582613356046044E+025
+  5.752864420949367E+025
+  5.873986033026315E+025
+  5.956692966239228E+025
+  6.011715858003943E+025
+  6.048859226496534E+025
+  6.076372849513273E+025
+  6.100603105054860E+025
+  6.125883580598147E+025
+  6.154624266616582E+025
+  6.187557815097954E+025
+  6.224097339974952E+025
+  6.262755149069934E+025
+  6.301569663222875E+025
+  6.338492003071635E+025
+  6.371695153577138E+025
+  6.399784963886098E+025
+  6.421909266058100E+025
+  6.437775359186882E+025
+  6.447595673646437E+025
+  6.451986940687804E+025
+  6.451848876584835E+025
+  6.448242492398596E+025
+  6.442278655957532E+025
+  6.435023219856148E+025
+  6.427425971175223E+025
+  6.420275747128518E+025
+  6.414178580953129E+025
+  4.593831647008621E+020
+  4.594260473561761E+020
+  4.594839145672851E+020
+  4.595535240404972E+020
+  4.596278981175930E+020
+  4.596954404920843E+020
+  4.597395867227564E+020
+  4.597391570025478E+020
+  4.596694885525686E+020
+  4.595045033240267E+020
+  4.592196789187812E+020
+  4.587956845911550E+020
+  4.582223363963610E+020
+  4.575023846650615E+020
+  4.566544805808142E+020
+  4.557145629912054E+020
+  4.547348982137464E+020
+  4.537800997896944E+020
+  4.529196673768322E+020
+  4.522169306168280E+020
+  4.517147528646016E+020
+  4.514188889104324E+020
+  4.512804182458815E+020
+  4.511791017664485E+020
+  4.509097651703215E+020
+  4.501738705796762E+020
+  4.485783289685419E+020
+  4.456434023275898E+020
+  4.408213134791690E+020
+  4.335269113785127E+020
+  4.231812733825105E+020
+  4.092681534115659E+020
+  3.914013358576756E+020
+  3.693979851127566E+020
+  3.433491092110208E+020
+  3.136740267005060E+020
+  2.811428233174540E+020
+  2.468515035484073E+020
+  2.121409584179521E+020
+  1.784633555565738E+020
+  1.472157474738674E+020
+  1.195249219887056E+020
+  9.595297062716732E+019
+  7.647070434485161E+019
+  6.070051656018988E+019
+  4.812093583760407E+019
+  3.818735546139135E+019
+  3.039509079652224E+019
+  2.430643831357891E+019
+  1.955715865469220E+019
+  1.585235593656686E+019
+  1.295773723173608E+019
+  1.068958802405623E+019
+  8.905160872182022E+018
+  7.494221800831191E+018
+  6.371978339749401E+018
+  5.473349822386511E+018
+  4.748424045228640E+018
+  4.158907865303681E+018
+  3.675383217026738E+018
+  3.275201641879313E+018
+  2.940877493314671E+018
+  2.658866538696361E+018
+  2.418640250933526E+018
+  2.211985928907258E+018
+  2.032478960584176E+018
+  1.875086436870687E+018
+  1.735871485330959E+018
+  1.611775765306588E+018
+  1.500464278092859E+018
+  1.400222830563578E+018
+  1.309905158681983E+018
+  1.228935201596378E+018
+  1.157382204523789E+018
+  1.096144980273026E+018
+  1.047310781100855E+018
+  1.014799404563076E+018
+  1.005471623626483E+018
+  1.030981167915101E+018
+  1.110788898835656E+018
+  1.276938784144209E+018
+  1.581405388598480E+018
+  2.107018019437954E+018
+  2.983045425846182E+018
+  4.406290151612839E+018
+  6.667660876632712E+018
+  1.018217245707513E+019
+  1.551655262775651E+019
+  2.340254556554256E+019
+  3.471547283234965E+019
+  5.038767030628110E+019
+  7.121834146138956E+019
+  9.757841811311472E+019
+  1.291968913179808E+020
+  1.651609139388900E+020
+  2.040124393322695E+020
+  2.439397792094206E+020
+  2.830368776582425E+020
+  3.195639962355298E+020
+  3.521513780700510E+020
+  3.799128557393437E+020
+  4.024660414530140E+020
+  4.198782090084832E+020
+  4.325671988374754E+020
+  4.411858755651912E+020
+  4.465113698379823E+020
+  4.493513209446139E+020
+  4.504718338363357E+020
+  4.505471324001563E+020
+  4.501287034414909E+020
+  4.496311572112378E+020
+  4.493321098106461E+020
+  4.493834647687898E+020
+  4.498312911856367E+020
+  4.506411559701949E+020
+  4.517255340352986E+020
+  4.529700503548961E+020
+  4.542559043572654E+020
+  4.554767824088019E+020
+  4.565496256319670E+020
+  4.574195480461828E+020
+  4.580598940640296E+020
+  4.584688808298799E+020
+  4.586644078500018E+020
+  4.586782964622078E+020
+  4.585506438792298E+020
+  4.583247320901726E+020
+  4.580430153655875E+020
+  4.577443687207046E+020
+  4.574624080181274E+020
+  1.241378626535632E+019
+  1.241559644058273E+019
+  1.241718220736143E+019
+  1.241828721685641E+019
+  1.241860844512864E+019
+  1.241779421811185E+019
+  1.241545086177157E+019
+  1.241115898533489E+019
+  1.240449834658938E+019
+  1.239508327192825E+019
+  1.238260684812869E+019
+  1.236688827350238E+019
+  1.234791688506670E+019
+  1.232588473407602E+019
+  1.230119716865037E+019
+  1.227444976359620E+019
+  1.224636075854216E+019
+  1.221765069677255E+019
+  1.218886528563761E+019
+  1.216014387716842E+019
+  1.213094414363067E+019
+  1.209974252050581E+019
+  1.206373839568247E+019
+  1.201859646825794E+019
+  1.195826530621998E+019
+  1.187491083650739E+019
+  1.175900210416989E+019
+  1.159958436193734E+019
+  1.138477197617113E+019
+  1.110248923689712E+019
+  1.074147624467706E+019
+  1.029255219271210E+019
+  9.750082068824994E+018
+  9.113521878798932E+018
+  8.388827966279005E+018
+  7.589427931458786E+018
+  6.736401552077341E+018
+  5.857560088268847E+018
+  4.985281480756227E+018
+  4.153254447317542E+018
+  3.392642273230466E+018
+  2.727320739971544E+018
+  2.167533450712427E+018
+  1.709867642557172E+018
+  1.343236970009127E+018
+  1.053730424041163E+018
+  8.273874085603333E+017
+  6.515807195708943E+017
+  5.155520038561199E+017
+  4.104775634957577E+017
+  3.293033873344531E+017
+  2.664892625709105E+017
+  2.177374865725842E+017
+  1.797427440479187E+017
+  1.499776185743998E+017
+  1.265165261089248E+017
+  1.078952527305948E+017
+  9.300105285670229E+016
+  8.098781444456749E+016
+  7.121119607235618E+016
+  6.317936999588357E+016
+  5.651579707767797E+016
+  5.093119082028308E+016
+  4.620245367037178E+016
+  4.215688210713621E+016
+  3.866034672699537E+016
+  3.560847453826413E+016
+  3.292010990313272E+016
+  3.053252566406376E+016
+  2.839801528985896E+016
+  2.648164011311580E+016
+  2.476005595756778E+016
+  2.322153046382792E+016
+  2.186752811607307E+016
+  2.071664581911919E+016
+  1.981231795263393E+016
+  1.923670378282179E+016
+  1.913469221053158E+016
+  1.975421503659308E+016
+  2.151225680483220E+016
+  2.510020106869792E+016
+  3.164728201315922E+016
+  4.296607406675021E+016
+  6.190702490841605E+016
+  9.284571679754582E+016
+  1.423092792743804E+017
+  2.197055497413007E+017
+  3.380348911098532E+017
+  5.143244173459984E+017
+  7.693204606614405E+017
+  1.125724967602752E+018
+  1.604034313608748E+018
+  2.215816031297801E+018
+  2.958523383608652E+018
+  3.814933752375121E+018
+  4.754717028926973E+018
+  5.738234518693166E+018
+  6.722092982733495E+018
+  7.665025630921462E+018
+  8.532756953068860E+018
+  9.301011126520883E+018
+  9.956468287564870E+018
+  1.049599802429217E+019
+  1.092477223757564E+019
+  1.125388562197078E+019
+  1.149797854504998E+019
+  1.167316703417795E+019
+  1.179541396970353E+019
+  1.187935960850408E+019
+  1.193756968333854E+019
+  1.198013906291724E+019
+  1.201458821912510E+019
+  1.204599336526128E+019
+  1.207729180610704E+019
+  1.210970153126963E+019
+  1.214319235361372E+019
+  1.217694955494542E+019
+  1.220978217539179E+019
+  1.224044497172484E+019
+  1.226786114834536E+019
+  1.229124830128568E+019
+  1.231016185011513E+019
+  1.232447931441363E+019
+  1.233435266102735E+019
+  1.234014982529349E+019
+  1.234239430920624E+019
+  1.234170819399537E+019
+  1.233876831640197E+019
+  1.233427761850528E+019
+  1.232894488956325E+019
+  2.643956690835361E+026
+  2.644065469987739E+026
+  2.644342689980239E+026
+  2.644796932491914E+026
+  2.645409203904003E+026
+  2.646123791132504E+026
+  2.646842191830083E+026
+  2.647421482494915E+026
+  2.647678024521610E+026
+  2.647397848503975E+026
+  2.646353927861373E+026
+  2.644329306283261E+026
+  2.641144309886033E+026
+  2.636685090204897E+026
+  2.630929573969710E+026
+  2.623966047283457E+026
+  2.615999291325531E+026
+  2.607339468810051E+026
+  2.598369970413767E+026
+  2.589492317827701E+026
+  2.581048965585859E+026
+  2.573228176493696E+026
+  2.565958588808633E+026
+  2.558804085027730E+026
+  2.550871618997233E+026
+  2.540745495318997E+026
+  2.526461290629476E+026
+  2.505531521874484E+026
+  2.475033709760114E+026
+  2.431769686679221E+026
+  2.372502099435985E+026
+  2.294268413786315E+026
+  2.194762273604812E+026
+  2.072755326895172E+026
+  1.928510059585528E+026
+  1.764109688273959E+026
+  1.583613504429240E+026
+  1.392948295322903E+026
+  1.199480855753024E+026
+  1.011286106552074E+026
+  8.362174779072151E+025
+  6.806847982919618E+025
+  5.479609585803160E+025
+  4.379934491601348E+025
+  3.487536520615630E+025
+  2.773827917733039E+025
+  2.208715552669167E+025
+  1.764177250593036E+025
+  1.415820769040621E+025
+  1.143284083275981E+025
+  9.300339860601095E+024
+  7.628984761642188E+024
+  6.315208790454771E+024
+  5.278320808299294E+024
+  4.455838267088016E+024
+  3.799566876542906E+024
+  3.272413296126022E+024
+  2.845849844950918E+024
+  2.497928016232071E+024
+  2.211738405821827E+024
+  1.974225749962363E+024
+  1.775282184745840E+024
+  1.607056184922520E+024
+  1.463427474483198E+024
+  1.339609073410839E+024
+  1.231846549509809E+024
+  1.137191672016934E+024
+  1.053333300677341E+024
+  9.784728389702168E+023
+  9.112353374925982E+023
+  8.506108233305583E+023
+  7.959242299477944E+023
+  7.468371736852786E+023
+  7.033918505668151E+023
+  6.661180939480327E+023
+  6.362414296238137E+023
+  6.160559622804212E+023
+  6.095652071790608E+023
+  6.235511903353958E+023
+  6.693113509337573E+023
+  7.654048060124373E+023
+  9.418665513477866E+023
+  1.246454128711045E+024
+  1.753526870948880E+024
+  2.576010028638359E+024
+  3.880376248950532E+024
+  5.903409171064610E+024
+  8.967359289474080E+024
+  1.348665843534049E+025
+  1.995458553177810E+025
+  2.889279069965972E+025
+  4.074226960447691E+025
+  5.569589476967787E+025
+  7.357967528900948E+025
+  9.385735363240803E+025
+  1.156899770672826E+026
+  1.380484171719067E+026
+  1.598623631898949E+026
+  1.801676452005061E+026
+  1.982189934749459E+026
+  2.135503284640348E+026
+  2.259816994671746E+026
+  2.355845675711650E+026
+  2.426225691849346E+026
+  2.474840830407060E+026
+  2.506185416495541E+026
+  2.524832157732844E+026
+  2.535029529945896E+026
+  2.540427223305199E+026
+  2.543916251109504E+026
+  2.547567250853279E+026
+  2.552650748281512E+026
+  2.559723144581198E+026
+  2.568760767975001E+026
+  2.579322234332655E+026
+  2.590718218341393E+026
+  2.602169009832097E+026
+  2.612934387909985E+026
+  2.622406583573173E+026
+  2.630163782404943E+026
+  2.635987250174504E+026
+  2.639849177804164E+026
+  2.641880813627619E+026
+  2.642330994065483E+026
+  2.641523018710422E+026
+  2.639814124769298E+026
+  2.637560168700808E+026
+  2.635088566567685E+026
+  2.632680551784527E+026
+  2.630561573299183E+026
+  2.647943698944207E+026
+  2.648093437328729E+026
+  2.648393189208905E+026
+  2.648844518627267E+026
+  2.649422599830523E+026
+  2.650068158710076E+026
+  2.650682598667675E+026
+  2.651127596123760E+026
+  2.651229960597999E+026
+  2.650792979018809E+026
+  2.649614323119047E+026
+  2.647509343990682E+026
+  2.644337848717215E+026
+  2.640031489623361E+026
+  2.634617763686585E+026
+  2.628235828099234E+026
+  2.621139105698634E+026
+  2.613680032612035E+026
+  2.606273415524078E+026
+  2.599336851225536E+026
+  2.593209477340391E+026
+  2.588053679644381E+026
+  2.583747787639254E+026
+  2.579780681752186E+026
+  2.575161133628974E+026
+  2.568355370309532E+026
+  2.557265899700492E+026
+  2.539263454944455E+026
+  2.511282433469588E+026
+  2.469988440249803E+026
+  2.412023688577944E+026
+  2.334330348247852E+026
+  2.234541320543923E+026
+  2.111410850196684E+026
+  1.965234351293591E+026
+  1.798181879545920E+026
+  1.614451819133230E+026
+  1.420153919658110E+026
+  1.222866282051472E+026
+  1.030882137096491E+026
+  8.522563789374678E+025
+  6.935564273001376E+025
+  5.581364659188829E+025
+  4.459491450298999E+025
+  3.549254302228257E+025
+  2.821462621028441E+025
+  2.245377334749455E+025
+  1.792370798192190E+025
+  1.437523270723919E+025
+  1.160033734458164E+025
+  9.430147508266151E+024
+  7.730146290370348E+024
+  6.394593004626996E+024
+  5.341126053756272E+024
+  4.505990026688143E+024
+  3.840026578694411E+024
+  3.305415279648268E+024
+  2.873081588284126E+024
+  2.520666329435353E+024
+  2.230951869032094E+024
+  1.990651520425279E+024
+  1.789483474847677E+024
+  1.619465239063509E+024
+  1.474377708215606E+024
+  1.349359135905405E+024
+  1.240598381223509E+024
+  1.145104109529063E+024
+  1.060532393578581E+024
+  9.850597612458137E+023
+  9.172925784560392E+023
+  8.562072204053752E+023
+  8.011193576118209E+023
+  7.516856434878326E+023
+  7.079482393715790E+023
+  6.704435629816578E+023
+  6.404137294129559E+023
+  6.201856035471585E+023
+  6.138223656991469E+023
+  6.282107633183715E+023
+  6.748279703919736E+023
+  7.725361037016888E+023
+  9.518720807306786E+023
+  1.261409242558883E+024
+  1.776804685534324E+024
+  2.612997396215575E+024
+  3.939494545236351E+024
+  5.997494678743571E+024
+  9.115399765260522E+024
+  1.371575227853573E+025
+  2.030175404452133E+025
+  2.940590851124786E+025
+  4.147889896583855E+025
+  5.671869992782639E+025
+  7.494901877635876E+025
+  9.562324706157745E+025
+  1.178845573524182E+026
+  1.406802601042931E+026
+  1.629137524278561E+026
+  1.835951893068413E+026
+  2.019572312441759E+026
+  2.175174288763506E+026
+  2.300861609460154E+026
+  2.397319200529773E+026
+  2.467213604969091E+026
+  2.514507521224466E+026
+  2.543810472408198E+026
+  2.559834585624185E+026
+  2.566981071917041E+026
+  2.569056099632375E+026
+  2.569102583057195E+026
+  2.569331344815356E+026
+  2.571135483073756E+026
+  2.575171889302350E+026
+  2.581492480753722E+026
+  2.589705540378846E+026
+  2.599146251934724E+026
+  2.609036596069324E+026
+  2.618618762263632E+026
+  2.627252371562949E+026
+  2.634472477863440E+026
+  2.640011018491772E+026
+  2.643788516894431E+026
+  2.645885436700530E+026
+  2.646503233541788E+026
+  2.645923062431640E+026
+  2.644466458912237E+026
+  2.642460686890560E+026
+  2.640211882970221E+026
+  2.637987121275832E+026
+  2.636004283652596E+026
+  2.204327325512032E+026
+  2.204449248720513E+026
+  2.204685961838587E+026
+  2.205037332921348E+026
+  2.205482392469111E+026
+  2.205972697455406E+026
+  2.206428073434693E+026
+  2.206735732299609E+026
+  2.206753384142770E+026
+  2.206317357099532E+026
+  2.205255843031802E+026
+  2.203406407571829E+026
+  2.200636364327889E+026
+  2.196863872884543E+026
+  2.192076726075530E+026
+  2.186345157453581E+026
+  2.179824793336352E+026
+  2.172746127325094E+026
+  2.165387707913641E+026
+  2.158031716482323E+026
+  2.150902756069557E+026
+  2.144093256526639E+026
+  2.137481557536047E+026
+  2.130651025348842E+026
+  2.122820119439118E+026
+  2.112793959425188E+026
+  2.098947714418048E+026
+  2.079251328599419E+026
+  2.051344007484274E+026
+  2.012665499296111E+026
+  1.960648858298624E+026
+  1.892974720707331E+026
+  1.807878510487525E+026
+  1.704488305126279E+026
+  1.583152816147885E+026
+  1.445699362971671E+026
+  1.295547994903106E+026
+  1.137610566884574E+026
+  9.779322948105398E+025
+  8.230901059421800E+025
+  6.794364713634197E+025
+  5.521126486067447E+025
+  4.436878681327740E+025
+  3.540267814663360E+025
+  2.813995603192728E+025
+  2.234180893330851E+025
+  1.775882519234483E+025
+  1.415983131119973E+025
+  1.134426813822419E+025
+  9.145161756549964E+024
+  7.427248393367955E+024
+  6.082987567554858E+024
+  5.027987028014928E+024
+  4.196614523408821E+024
+  3.538136522674516E+024
+  3.013486443678573E+024
+  2.592644789824578E+024
+  2.252560388323714E+024
+  1.975525198480049E+024
+  1.747916876506466E+024
+  1.559233084389754E+024
+  1.401353826199985E+024
+  1.267980166846054E+024
+  1.154208407367513E+024
+  1.056207822529942E+024
+  9.709774332006089E+023
+  8.961631631012608E+023
+  8.299213642719226E+023
+  7.708183811514629E+023
+  7.177588934666808E+023
+  6.699386170515086E+023
+  6.268200167468101E+023
+  5.881336141235430E+023
+  5.539131293997822E+023
+  5.245813603409289E+023
+  5.011172239379796E+023
+  4.853553434079779E+023
+  4.805012821185989E+023
+  4.919918295952199E+023
+  5.288940529054886E+023
+  6.061200219881438E+023
+  7.478302221486875E+023
+  9.924871083435228E+023
+  1.400053620297985E+024
+  2.061718744780818E+024
+  3.112120458123720E+024
+  4.743100385814196E+024
+  7.216284689144500E+024
+  1.086898730440499E+025
+  1.610402603624229E+025
+  2.334950997088776E+025
+  3.297100646804893E+025
+  4.513570956798786E+025
+  5.971499903624553E+025
+  7.628615580439988E+025
+  9.417843753835624E+025
+  1.125623610706867E+026
+  1.305693387850326E+026
+  1.474110175797705E+026
+  1.624715898344513E+026
+  1.753582337682054E+026
+  1.859085392575118E+026
+  1.941640269585233E+026
+  2.003234259171077E+026
+  2.046888735453553E+026
+  2.076147636092939E+026
+  2.094647934603429E+026
+  2.105793171764688E+026
+  2.112529501377165E+026
+  2.117213696780722E+026
+  2.121559833156866E+026
+  2.126651485764984E+026
+  2.133006359305050E+026
+  2.140679283997228E+026
+  2.149387987461289E+026
+  2.158645228638279E+026
+  2.167881907550343E+026
+  2.176549022322645E+026
+  2.184191210274738E+026
+  2.190489803486223E+026
+  2.195277694441996E+026
+  2.198531431517858E+026
+  2.200347931858924E+026
+  2.200913676331651E+026
+  2.200472551367198E+026
+  2.199295559817819E+026
+  2.197654361788284E+026
+  2.195801045964420E+026
+  2.193954920194351E+026
+  2.192295295960179E+026
+  9.994233677360211E+025
+  9.994732298702721E+025
+  9.995771581013392E+025
+  9.997359487482413E+025
+  9.999408412855564E+025
+  1.000170374341534E+026
+  1.000388296576101E+026
+  1.000542992759677E+026
+  1.000568716586077E+026
+  1.000389104923653E+026
+  9.999230459669024E+025
+  9.990925322683594E+025
+  9.978318868207597E+025
+  9.960974147574113E+025
+  9.938761250033147E+025
+  9.911918719401952E+025
+  9.881071630048728E+025
+  9.847189789007898E+025
+  9.811473046096544E+025
+  9.775157256155675E+025
+  9.739243997437991E+025
+  9.704168771001511E+025
+  9.669434434003856E+025
+  9.633247110652514E+025
+  9.592199080222098E+025
+  9.541046255313340E+025
+  9.472627069469908E+025
+  9.377966111159313E+025
+  9.246600986519100E+025
+  9.067164579409469E+025
+  8.828244188909914E+025
+  8.519517953950111E+025
+  8.133130183017408E+025
+  7.665205716273009E+025
+  7.117321431180985E+025
+  6.497665170194263E+025
+  5.821550760314054E+025
+  5.110969569337209E+025
+  4.392987685235390E+025
+  3.697052349772923E+025
+  3.051604789487527E+025
+  2.479656335198186E+025
+  1.992682315098786E+025
+  1.590028911322816E+025
+  1.263897174510463E+025
+  1.003544022166509E+025
+  7.977588794660729E+024
+  6.361557277373710E+024
+  5.097266470920477E+024
+  4.109737051208419E+024
+  3.338237870332558E+024
+  2.734489920717028E+024
+  2.260608794737853E+024
+  1.887132683189201E+024
+  1.591287959341488E+024
+  1.355537958256916E+024
+  1.166406776319454E+024
+  1.013546138681926E+024
+  8.890059446742176E+023
+  7.866699169095385E+023
+  7.018222063923878E+023
+  6.308163409867026E+023
+  5.708233317748200E+023
+  5.196405675858364E+023
+  4.755471838669393E+023
+  4.371948993214757E+023
+  4.035259516879435E+023
+  3.737118439850354E+023
+  3.471082663274937E+023
+  3.232229360658793E+023
+  3.016943730196432E+023
+  2.822810069560496E+023
+  2.648617785765635E+023
+  2.494519358851971E+023
+  2.362416192695810E+023
+  2.256709030357089E+023
+  2.185643744530980E+023
+  2.163625780470119E+023
+  2.215084485299763E+023
+  2.380757346938025E+023
+  2.727637728339485E+023
+  3.364261150788949E+023
+  4.463402163805860E+023
+  6.294403475954040E+023
+  9.266852758996462E+023
+  1.398547406825736E+024
+  2.131189946062979E+024
+  3.242117751054947E+024
+  4.882831568850631E+024
+  7.234262327961880E+024
+  1.048872747627052E+025
+  1.481051112955853E+025
+  2.027489751962134E+025
+  2.682445233963693E+025
+  3.426982881135468E+025
+  4.231046797790058E+025
+  5.057466625423137E+025
+  5.867323889016859E+025
+  6.625302462502227E+025
+  7.303824448422254E+025
+  7.885306668508916E+025
+  8.362487627579686E+025
+  8.737234463943354E+025
+  9.018443439522014E+025
+  9.219624695527596E+025
+  9.356607586742958E+025
+  9.445615604473631E+025
+  9.501805373654998E+025
+  9.538267209170906E+025
+  9.565439677703261E+025
+  9.590878149934550E+025
+  9.619317669484933E+025
+  9.652970643691364E+025
+  9.691995432444334E+025
+  9.735065181008085E+025
+  9.779962806957504E+025
+  9.824133001703815E+025
+  9.865137070294700E+025
+  9.900978538022594E+025
+  9.930290901784387E+025
+  9.952398498247175E+025
+  9.967275385964665E+025
+  9.975435828505798E+025
+  9.977791947276514E+025
+  9.975506311849240E+025
+  9.969853887926763E+025
+  9.962102061089432E+025
+  9.953419436972525E+025
+  9.944816829862895E+025
+  9.937115683269056E+025
+  2.212595967684369E+026
+  2.212694063205933E+026
+  2.212919823909846E+026
+  2.213277525775371E+026
+  2.213749657488871E+026
+  2.214289588278434E+026
+  2.214816591043410E+026
+  2.215214279056221E+026
+  2.215333146234671E+026
+  2.214998302775246E+026
+  2.214022598277454E+026
+  2.212224337634128E+026
+  2.209448242874458E+026
+  2.205587550707452E+026
+  2.200604208807438E+026
+  2.194543459089280E+026
+  2.187538842991450E+026
+  2.179803867534277E+026
+  2.171607337777110E+026
+  2.163230815711231E+026
+  2.154908800149914E+026
+  2.146754830169609E+026
+  2.138679426984290E+026
+  2.130308168313243E+026
+  2.120909849346445E+026
+  2.109345413947549E+026
+  2.094048182780313E+026
+  2.073045129850762E+026
+  2.044027862349728E+026
+  2.004480532758237E+026
+  1.951869523869745E+026
+  1.883895073874073E+026
+  1.798796422075245E+026
+  1.695688439055844E+026
+  1.574889513940836E+026
+  1.438180934513748E+026
+  1.288924194202404E+026
+  1.131965060976229E+026
+  9.732815483724021E+025
+  8.193892388376833E+025
+  6.765914177081919E+025
+  5.499975824227461E+025
+  4.421666605213449E+025
+  3.529708584232473E+025
+  2.806972450443924E+025
+  2.229775837383583E+025
+  1.773370212273743E+025
+  1.414807453244730E+025
+  1.134171613353215E+025
+  9.148763910858354E+024
+  7.434809484811416E+024
+  6.092955717158625E+024
+  5.039285021123491E+024
+  4.208509640974680E+024
+  3.550142371021037E+024
+  3.025290254176889E+024
+  2.604054389246610E+024
+  2.263466023307353E+024
+  1.985872381531483E+024
+  1.757687293917720E+024
+  1.568431331284475E+024
+  1.409998310817462E+024
+  1.276096971802098E+024
+  1.161827232328589E+024
+  1.063359382955741E+024
+  9.776918733987131E+023
+  9.024691750055866E+023
+  8.358457986728071E+023
+  7.763862050421507E+023
+  7.229933927855872E+023
+  6.748617735680687E+023
+  6.314530047125709E+023
+  5.924973684185248E+023
+  5.580289317927185E+023
+  5.284713701305833E+023
+  5.048048335238483E+023
+  4.888651473407139E+023
+  4.838582702955307E+023
+  4.952190811391495E+023
+  5.320075998324149E+023
+  6.091184905854784E+023
+  7.506750933783104E+023
+  9.950666661979774E+023
+  1.402119623961925E+024
+  2.062779589912004E+024
+  3.111268844443963E+024
+  4.738749534250972E+024
+  7.205789707896400E+024
+  1.084814559839461E+025
+  1.606649441753735E+025
+  2.328625931025106E+025
+  3.287006466727706E+025
+  4.498255229895401E+025
+  5.949372677831013E+025
+  7.598125479953863E+025
+  9.377691355965911E+025
+  1.120558949965941E+026
+  1.299560469689327E+026
+  1.466964880196807E+026
+  1.616690389387307E+026
+  1.744878190347621E+026
+  1.849960079772417E+026
+  1.932389494345315E+026
+  1.994172582644006E+026
+  2.038330467399406E+026
+  2.068389334325273E+026
+  2.087953331693133E+026
+  2.100381006493812E+026
+  2.108564560920201E+026
+  2.114801294233968E+026
+  2.120743866306991E+026
+  2.127416087323979E+026
+  2.135280940346230E+026
+  2.144346516443339E+026
+  2.154294020172294E+026
+  2.164611242988486E+026
+  2.174716037074719E+026
+  2.184057704925308E+026
+  2.192189197168863E+026
+  2.198808277441338E+026
+  2.203770201391285E+026
+  2.207077561996153E+026
+  2.208854878034513E+026
+  2.209315926380642E+026
+  2.208730059873996E+026
+  2.207390754405600E+026
+  2.205588337637790E+026
+  2.203589288341029E+026
+  2.201622876666642E+026
+  2.199874089207455E+026
+  1.424140624856443E+026
+  1.424198066343528E+026
+  1.424339304475274E+026
+  1.424567909065041E+026
+  1.424873364731089E+026
+  1.425226214463665E+026
+  1.425574682362348E+026
+  1.425843461607700E+026
+  1.425935121485774E+026
+  1.425734851779069E+026
+  1.425118690239244E+026
+  1.423964749458903E+026
+  1.422166608829764E+026
+  1.419647548665350E+026
+  1.416373706359960E+026
+  1.412363794474763E+026
+  1.407692846178000E+026
+  1.402487567013923E+026
+  1.396911342560196E+026
+  1.391137861474298E+026
+  1.385313661747155E+026
+  1.379511566564884E+026
+  1.373678712290285E+026
+  1.367584406425180E+026
+  1.360774139841717E+026
+  1.352536575491716E+026
+  1.341890266640794E+026
+  1.327596385689176E+026
+  1.308203054157475E+026
+  1.282125949054120E+026
+  1.247768320288833E+026
+  1.203680552480825E+026
+  1.148753914814566E+026
+  1.082434461121532E+026
+  1.004931463029223E+026
+  9.173823356361715E+025
+  8.219272490096779E+025
+  7.216481630182943E+025
+  6.203450413543146E+025
+  5.221578228238611E+025
+  4.310897959601262E+025
+  3.503835228863442E+025
+  2.816576885215886E+025
+  2.248214071859287E+025
+  1.787763674436682E+025
+  1.420089679916199E+025
+  1.129394101343318E+025
+  9.010384280851070E+024
+  7.223243269176558E+024
+  5.826801036902473E+024
+  4.735412148826472E+024
+  3.880976093173328E+024
+  3.210041156649286E+024
+  2.681027849121883E+024
+  2.261786270003960E+024
+  1.927551859946554E+024
+  1.659288192115043E+024
+  1.442371931402878E+024
+  1.265564580768895E+024
+  1.120216754756974E+024
+  9.996569324591416E+023
+  8.987244203725154E+023
+  8.134138859574928E+023
+  7.406055956698139E+023
+  6.778611973245574E+023
+  6.232695409534265E+023
+  5.753307457836967E+023
+  5.328696497018127E+023
+  4.949721069587605E+023
+  4.609395414266646E+023
+  4.302589599971873E+023
+  4.025875805518116E+023
+  3.777537235687856E+023
+  3.557792113894037E+023
+  3.369340266494817E+023
+  3.218425776419198E+023
+  3.116742362752981E+023
+  3.084709624616867E+023
+  3.156942232286428E+023
+  3.391142067634781E+023
+  3.882170480898376E+023
+  4.783665818937921E+023
+  6.340129037944595E+023
+  8.932606147952040E+023
+  1.314037292532941E+024
+  1.981840594413516E+024
+  3.018447976336677E+024
+  4.589869753532250E+024
+  6.910053792355550E+024
+  1.023437900396775E+025
+  1.483411063367423E+025
+  2.094068799247106E+025
+  2.865965458557702E+025
+  3.790909873042683E+025
+  4.842108934504189E+025
+  5.977119084450152E+025
+  7.143524005404540E+025
+  8.286517580668466E+025
+  9.356447639151586E+025
+  1.031463084758195E+026
+  1.113650647894178E+026
+  1.181206540108229E+026
+  1.234413803447773E+026
+  1.274541049779788E+026
+  1.303500355535984E+026
+  1.323522952344306E+026
+  1.336887737704649E+026
+  1.345715828494935E+026
+  1.351830717221625E+026
+  1.356677247766877E+026
+  1.361290854452320E+026
+  1.366308520020785E+026
+  1.372012891793855E+026
+  1.378400343422332E+026
+  1.385262822873418E+026
+  1.392272880808270E+026
+  1.399062040298923E+026
+  1.405284863433221E+026
+  1.410664267273559E+026
+  1.415017004244489E+026
+  1.418261007947224E+026
+  1.420408264185140E+026
+  1.421548072967271E+026
+  1.421825819006516E+026
+  1.421421228360997E+026
+  1.420528161849549E+026
+  1.419337170376596E+026
+  1.418022321687913E+026
+  1.416732771184291E+026
+  1.415588381241656E+026
+  1.482003081061237E+026
+  1.482049388106136E+026
+  1.482189008848571E+026
+  1.482427965442103E+026
+  1.482757220315349E+026
+  1.483147261336747E+026
+  1.483544191795398E+026
+  1.483868065416077E+026
+  1.484013973565051E+026
+  1.483856672487677E+026
+  1.483258945793346E+026
+  1.482083244421516E+026
+  1.480205779589949E+026
+  1.477531728605864E+026
+  1.474009579149470E+026
+  1.469642160670519E+026
+  1.464491704124133E+026
+  1.458676357900720E+026
+  1.452356043547656E+026
+  1.445706450653590E+026
+  1.438881351550629E+026
+  1.431965136345307E+026
+  1.424919289381378E+026
+  1.417528160324670E+026
+  1.409350563495258E+026
+  1.399684312763829E+026
+  1.387550776097944E+026
+  1.371706073439875E+026
+  1.350684830487644E+026
+  1.322881436764285E+026
+  1.286672137705219E+026
+  1.240578171013465E+026
+  1.183464490905285E+026
+  1.114759689179921E+026
+  1.034670812443745E+026
+  9.443539834548287E+025
+  8.459926705600153E+025
+  7.427369472145964E+025
+  6.384754983546363E+025
+  5.374488708634453E+025
+  4.437608434871544E+025
+  3.607372483454469E+025
+  2.900375364465108E+025
+  2.315654459189274E+025
+  1.841903186364694E+025
+  1.463554305524272E+025
+  1.164365032919012E+025
+  9.292868732479416E+024
+  7.452665272002221E+024
+  6.014366841641201E+024
+  4.889928155727556E+024
+  4.009333777149894E+024
+  3.317621827448698E+024
+  2.772031198102640E+024
+  2.339492107516038E+024
+  1.994525983745638E+024
+  1.717542913264282E+024
+  1.493490524624873E+024
+  1.310797416505267E+024
+  1.160555407709595E+024
+  1.035891273459558E+024
+  9.314866213493691E+023
+  8.432123945114036E+023
+  7.678514422279466E+023
+  7.028884555190454E+023
+  6.463513430968043E+023
+  5.966919354062329E+023
+  5.526969114213787E+023
+  5.134222348107878E+023
+  4.781463804936970E+023
+  4.463394801748237E+023
+  4.176475218757299E+023
+  3.918933078514320E+023
+  3.690995799168620E+023
+  3.495453977657404E+023
+  3.338757156401375E+023
+  3.232978263087770E+023
+  3.199190971664629E+023
+  3.273106923634538E+023
+  3.514239590324788E+023
+  4.020403755242070E+023
+  4.949984265634630E+023
+  6.554979410532402E+023
+  9.228032384137068E+023
+  1.356591424746350E+024
+  2.044921721259387E+024
+  3.113189407305123E+024
+  4.732292632125775E+024
+  7.122417790977415E+024
+  1.054630996330534E+025
+  1.528295413178826E+025
+  2.157023229225408E+025
+  2.951639483515077E+025
+  3.903686560455537E+025
+  4.985595083069617E+025
+  6.153741145948980E+025
+  7.354300113022494E+025
+  8.531048208642952E+025
+  9.633110294725658E+025
+  1.062091858711100E+026
+  1.146942879494118E+026
+  1.216853402964884E+026
+  1.272128130807365E+026
+  1.314078693093634E+026
+  1.344670954742510E+026
+  1.366191292228107E+026
+  1.380967765337029E+026
+  1.391159700247793E+026
+  1.398615168081947E+026
+  1.404789319570263E+026
+  1.410714687048901E+026
+  1.417014534268089E+026
+  1.423950276360400E+026
+  1.431493300979025E+026
+  1.439410559834164E+026
+  1.447352887791271E+026
+  1.454935869320871E+026
+  1.461805413385918E+026
+  1.467683559893756E+026
+  1.472393546064455E+026
+  1.475866039618475E+026
+  1.478130447441996E+026
+  1.479296423669098E+026
+  1.479530929033157E+026
+  1.479034980717396E+026
+  1.478022208005474E+026
+  1.476700462207754E+026
+  1.475258027666987E+026
+  1.473854904761155E+026
+  1.472618420016480E+026
+  7.718547312307637E+025
+  7.718578999232000E+025
+  7.719235437338811E+025
+  7.720591285850671E+025
+  7.722631937657611E+025
+  7.725219162185971E+025
+  7.728065056524268E+025
+  7.730718870249577E+025
+  7.732570073154058E+025
+  7.732872427557739E+025
+  7.730790596938234E+025
+  7.725467202210334E+025
+  7.716106034774210E+025
+  7.702064099250434E+025
+  7.682941463492980E+025
+  7.658655004701211E+025
+  7.629480688080483E+025
+  7.596049187018737E+025
+  7.559281914241866E+025
+  7.520259426514223E+025
+  7.480021767810074E+025
+  7.439309965464916E+025
+  7.398268283249130E+025
+  7.356136321504741E+025
+  7.310967087626926E+025
+  7.259410759183979E+025
+  7.196603968528414E+025
+  7.116201883124496E+025
+  7.010586229117546E+025
+  6.871276893351509E+025
+  6.689565945796339E+025
+  6.457376522417252E+025
+  6.168319417495474E+025
+  5.818873335867142E+025
+  5.409551582753578E+025
+  4.945849037010477E+025
+  4.438712619425947E+025
+  3.904282533272376E+025
+  3.362745037798652E+025
+  2.836329705116150E+025
+  2.346741421267599E+025
+  1.911753177516042E+025
+  1.540449510657559E+025
+  1.232666566928356E+025
+  9.827434819846923E+024
+  7.827118417285359E+024
+  6.241859348247851E+024
+  4.993569077863345E+024
+  4.014259400605630E+024
+  3.247154191923423E+024
+  2.646129879903473E+024
+  2.174416674770738E+024
+  1.803082390505687E+024
+  1.509566346628614E+024
+  1.276382538314927E+024
+  1.090029859376591E+024
+  9.401056514680096E+023
+  8.186001724304213E+023
+  7.193434084292701E+023
+  6.375758706759034E+023
+  5.696180793770309E+023
+  5.126174236454638E+023
+  4.643550533814223E+023
+  4.230990099935189E+023
+  3.874928124503869E+023
+  3.564711819811175E+023
+  3.291965648231311E+023
+  3.050116762559987E+023
+  2.834045373179009E+023
+  2.639835208250844E+023
+  2.464608974253648E+023
+  2.306444375212578E+023
+  2.164379961698902E+023
+  2.038539906634015E+023
+  1.930437202137365E+023
+  1.843562179589203E+023
+  1.784436572108143E+023
+  1.764423970806978E+023
+  1.802748373251326E+023
+  1.931394712258407E+023
+  2.202850536710320E+023
+  2.701973591443403E+023
+  3.563561711476645E+023
+  4.997291612969276E+023
+  7.321264228703569E+023
+  1.100391847966376E+024
+  1.671078466340723E+024
+  2.534650442501202E+024
+  3.807291931825998E+024
+  5.627073592698076E+024
+  8.139706476344350E+024
+  1.146792695422787E+025
+  1.566463071208972E+025
+  2.067993944718323E+025
+  2.636304109766844E+025
+  3.247938864263986E+025
+  3.874255363270540E+025
+  4.485601370026863E+025
+  5.055415536480518E+025
+  5.563334284520120E+025
+  5.996816462857119E+025
+  6.351274700588790E+025
+  6.629051268750151E+025
+  6.837723508231489E+025
+  6.988196631297552E+025
+  7.092916418897786E+025
+  7.164387668749659E+025
+  7.214065706046432E+025
+  7.251615245821435E+025
+  7.284497714007429E+025
+  7.317839121749857E+025
+  7.354530434353038E+025
+  7.395511483952400E+025
+  7.440185015907085E+025
+  7.486901763984302E+025
+  7.533455157556633E+025
+  7.577529313277197E+025
+  7.617057331626792E+025
+  7.650465938106542E+025
+  7.676802244102863E+025
+  7.695754527706651E+025
+  7.707589972497263E+025
+  7.713038709555142E+025
+  7.713154349660762E+025
+  7.709174295807980E+025
+  7.702391980884608E+025
+  7.694048193829172E+025
+  7.685249918806674E+025
+  7.676919328174266E+025
+  7.669769085564103E+025
+  8.158133955221176E+025
+  8.159266410420367E+025
+  8.160347283224868E+025
+  8.161229352593607E+025
+  8.161725262879959E+025
+  8.161603803608466E+025
+  8.160593443117627E+025
+  8.158394370909654E+025
+  8.154698831097871E+025
+  8.149221279184234E+025
+  8.141737086109291E+025
+  8.132125590219348E+025
+  8.120412277944474E+025
+  8.106803345997543E+025
+  8.091703921805230E+025
+  8.075710222501561E+025
+  8.059566418364144E+025
+  8.044078857224612E+025
+  8.029983712001920E+025
+  8.017769207875025E+025
+  8.007460142418292E+025
+  7.998379644708571E+025
+  7.988909883609669E+025
+  7.976278589003943E+025
+  7.956401019538215E+025
+  7.923807278092586E+025
+  7.871683257761499E+025
+  7.792051047080261E+025
+  7.676112034880045E+025
+  7.514772476940232E+025
+  7.299363827751933E+025
+  7.022553441961033E+025
+  6.679409651673197E+025
+  6.268535784553643E+025
+  5.793123824353736E+025
+  5.261713624070316E+025
+  4.688404245923874E+025
+  4.092286385691257E+025
+  3.495979354501545E+025
+  2.923363621703366E+025
+  2.396857438190559E+025
+  1.933989723922899E+025
+  1.542794849997384E+025
+  1.221639877741711E+025
+  9.633541453806516E+024
+  7.586256899007225E+024
+  5.979694579387579E+024
+  4.727272982792023E+024
+  3.754725364600021E+024
+  3.000804182768594E+024
+  2.416311104420370E+024
+  1.962438252221262E+024
+  1.608959905556506E+024
+  1.332541159426955E+024
+  1.115273789088578E+024
+  9.434658334411585E+023
+  8.066703389740841E+023
+  6.969216126610487E+023
+  6.081430289187194E+023
+  5.356923858459151E+023
+  4.760153225736417E+023
+  4.263824500298464E+023
+  3.846906975312740E+023
+  3.493135834513657E+023
+  3.189886007624816E+023
+  2.927327090637975E+023
+  2.697791332355296E+023
+  2.495303931211217E+023
+  2.315238458801915E+023
+  2.154071381768033E+023
+  2.009219770842293E+023
+  1.878956998825464E+023
+  1.762414666254819E+023
+  1.659698155769232E+023
+  1.572172502348299E+023
+  1.503021099333652E+023
+  1.458251184435539E+023
+  1.448429016262257E+023
+  1.491588391269707E+023
+  1.617982476255028E+023
+  1.877647344667746E+023
+  2.352100791436153E+023
+  3.171848080051493E+023
+  4.541551146220891E+023
+  6.774429037170318E+023
+  1.033615806327277E+024
+  1.589541525065724E+024
+  2.437220540772118E+024
+  3.696519293662220E+024
+  5.512502636131712E+024
+  8.042350300035497E+024
+  1.142534438183399E+025
+  1.573510821655307E+025
+  2.094358063036602E+025
+  2.691845404359701E+025
+  3.343594980773183E+025
+  4.020929797797479E+025
+  4.692916900709495E+025
+  5.330569135320146E+025
+  5.910252921147831E+025
+  6.415726081829821E+025
+  6.838696194936938E+025
+  7.178160201192587E+025
+  7.438970075097222E+025
+  7.630076737494490E+025
+  7.762801102878461E+025
+  7.849342020779002E+025
+  7.901609465872534E+025
+  7.930391089435812E+025
+  7.944820515965735E+025
+  7.952103594718598E+025
+  7.957459287283388E+025
+  7.964234155077031E+025
+  7.974148682124041E+025
+  7.987630331117764E+025
+  8.004185680058468E+025
+  8.022765906937343E+025
+  8.042087955494043E+025
+  8.060886587705907E+025
+  8.078086758111995E+025
+  8.092898160935707E+025
+  8.104843412034019E+025
+  8.113738351519719E+025
+  8.119645738174410E+025
+  8.122819185870865E+025
+  8.123645470326224E+025
+  8.122590351094577E+025
+  8.120155540573039E+025
+  8.116849020454866E+025
+  8.113164737844034E+025
+  6.043893272590059E+025
+  6.044802969374094E+025
+  6.045618149992664E+025
+  6.046213848827179E+025
+  6.046440269479956E+025
+  6.046122156395110E+025
+  6.045063041028141E+025
+  6.043054978992303E+025
+  6.039893325927023E+025
+  6.035397462464891E+025
+  6.029436413259676E+025
+  6.021956296116396E+025
+  6.013005963013589E+025
+  6.002756254666564E+025
+  5.991507017342177E+025
+  5.979675459001183E+025
+  5.967759889613035E+025
+  5.956274306705288E+025
+  5.945651704263445E+025
+  5.936117510978335E+025
+  5.927539036958032E+025
+  5.919261677695168E+025
+  5.909947111305468E+025
+  5.897432076208571E+025
+  5.878628050838170E+025
+  5.849482248223169E+025
+  5.805019248050306E+025
+  5.739481036622841E+025
+  5.646581625694852E+025
+  5.519890107764271E+025
+  5.353350640354315E+025
+  5.141935607106722E+025
+  4.882405091945768E+025
+  4.574109940098798E+025
+  4.219729858164218E+025
+  3.825792242722089E+025
+  3.402790838038701E+025
+  2.964741774525647E+025
+  2.528099185664726E+025
+  2.110102955021548E+025
+  1.726815231314521E+025
+  1.390669597882336E+025
+  1.107195925164760E+025
+  8.749537065266440E+024
+  6.885455987319275E+024
+  5.410782390229549E+024
+  4.255800861970198E+024
+  3.357153877905024E+024
+  2.660672851716017E+024
+  2.121805306833410E+024
+  1.704848283238927E+024
+  1.381700285156442E+024
+  1.130519116187312E+024
+  9.344752389664650E+023
+  7.806775355274184E+023
+  6.592882922028883E+023
+  5.628150733436831E+023
+  4.855552691422493E+023
+  4.231663790891943E+023
+  3.723367959256851E+023
+  3.305353336369065E+023
+  2.958216104293781E+023
+  2.667030087792199E+023
+  2.420270462127136E+023
+  2.209005549048751E+023
+  2.026291227926962E+023
+  1.866718638729631E+023
+  1.726078426991094E+023
+  1.601114650434698E+023
+  1.489349550632648E+023
+  1.388967690242608E+023
+  1.298755641819300E+023
+  1.218103012098530E+023
+  1.147084242353248E+023
+  1.086661488501657E+023
+  1.039081559233571E+023
+  1.008590884275437E+023
+  1.002670441802601E+023
+  1.034107876391245E+023
+  1.124386948771489E+023
+  1.309090274275926E+023
+  1.646270062344949E+023
+  2.228998889732970E+023
+  3.203458156610588E+023
+  4.793734429341180E+023
+  7.333587547740439E+023
+  1.130323901726397E+024
+  1.736493493314951E+024
+  2.638389161288847E+024
+  3.941090371194197E+024
+  5.759033701387662E+024
+  8.194603384521526E+024
+  1.130379255734728E+025
+  1.506998389423475E+025
+  1.940154300393399E+025
+  2.414037243277332E+025
+  2.908182784844710E+025
+  3.400344208103411E+025
+  3.869508550843960E+025
+  4.298370072306915E+025
+  4.674838162258618E+025
+  4.992488946659537E+025
+  5.250137433173270E+025
+  5.450843407684600E+025
+  5.600674047302218E+025
+  5.707475218659799E+025
+  5.779804907203358E+025
+  5.826094958348755E+025
+  5.854048811270214E+025
+  5.870253364029187E+025
+  5.879973660447062E+025
+  5.887099206963145E+025
+  5.894212589302126E+025
+  5.902751014908464E+025
+  5.913229508670614E+025
+  5.925492971072757E+025
+  5.938965704586788E+025
+  5.952872524585931E+025
+  5.966414311435702E+025
+  5.978890473213172E+025
+  5.989769137249181E+025
+  5.998712404570004E+025
+  6.005568931331042E+025
+  6.010348209917791E+025
+  6.013187900729014E+025
+  6.014319411846903E+025
+  6.014034969709645E+025
+  6.012661446793387E+025
+  6.010542324826937E+025
+  6.008024739064386E+025
+  7.780921092457680E+025
+  7.782047882288352E+025
+  7.783094971682080E+025
+  7.783913000241057E+025
+  7.784317145875161E+025
+  7.784084801685796E+025
+  7.782959851083544E+025
+  7.780664567546583E+025
+  7.776918766891818E+025
+  7.771467538500312E+025
+  7.764116274968847E+025
+  7.754769032417459E+025
+  7.743465391240054E+025
+  7.730409642091172E+025
+  7.715984351326271E+025
+  7.700739510664485E+025
+  7.685349001355583E+025
+  7.670527909136252E+025
+  7.656907402683009E+025
+  7.644868591418141E+025
+  7.634342794160882E+025
+  7.624592249166063E+025
+  7.613991430239873E+025
+  7.599833770902461E+025
+  7.578191056950633E+025
+  7.543852948862365E+025
+  7.490372626580228E+025
+  7.410242374409112E+025
+  7.295220648869073E+025
+  7.136829014313073E+025
+  6.927030315389131E+025
+  6.659083608668576E+025
+  6.328541426918998E+025
+  5.934308275940184E+025
+  5.479619287177916E+025
+  4.972737543937519E+025
+  4.427132646972775E+025
+  3.860925548558288E+025
+  3.295493725874738E+025
+  2.753326536918161E+025
+  2.255462027706288E+025
+  1.818273394935698E+025
+  1.449161577914650E+025
+  1.146427856906918E+025
+  9.031830458133232E+024
+  7.105518112093483E+024
+  5.595245205614656E+024
+  4.418941829569647E+024
+  3.506319839534738E+024
+  2.799486362901258E+024
+  2.251989527234462E+024
+  1.827225181419434E+024
+  1.496711269616268E+024
+  1.238479161887021E+024
+  1.035684109222909E+024
+  8.754583721721119E+023
+  7.479921917657460E+023
+  6.458119555981347E+023
+  5.632210941864225E+023
+  4.958712608312125E+023
+  4.404357357131239E+023
+  3.943619320615220E+023
+  3.556845172680615E+023
+  3.228846690317401E+023
+  2.947842973943545E+023
+  2.704667214350797E+023
+  2.492173820690361E+023
+  2.304798040190783E+023
+  2.138233026327059E+023
+  1.989199836742668E+023
+  1.855295366894454E+023
+  1.734913286439567E+023
+  1.627245639976531E+023
+  1.532390716287612E+023
+  1.451620206742272E+023
+  1.387901594368299E+023
+  1.346838646612270E+023
+  1.338295093362512E+023
+  1.379117527395790E+023
+  1.497586452334153E+023
+  1.740505712117821E+023
+  2.184176498983806E+023
+  2.950833637364797E+023
+  4.232303314376487E+023
+  6.322382158887976E+023
+  9.658232927487245E+023
+  1.486817332747465E+024
+  2.281760415522333E+024
+  3.463548932063012E+024
+  5.169036237346205E+024
+  7.546857867097283E+024
+  1.072931934151846E+025
+  1.478749653081964E+025
+  1.969717651674230E+025
+  2.533610891129392E+025
+  3.149563444144125E+025
+  3.790711888276634E+025
+  4.427975162099799E+025
+  5.034001338690372E+025
+  5.586385060539647E+025
+  6.069608868515186E+025
+  6.475598236518782E+025
+  6.803129020396995E+025
+  7.056501485347918E+025
+  7.243904696417154E+025
+  7.375799930946070E+025
+  7.463521890679548E+025
+  7.518182378192634E+025
+  7.549885181271065E+025
+  7.567222965205258E+025
+  7.577015098751841E+025
+  7.584245639262084E+025
+  7.592162975997217E+025
+  7.602502235737882E+025
+  7.615788723894903E+025
+  7.631678472885312E+025
+  7.649293793509443E+025
+  7.667519148333842E+025
+  7.685234476101215E+025
+  7.701476113312696E+025
+  7.715526777050118E+025
+  7.726944849485343E+025
+  7.735549720800517E+025
+  7.741382638111183E+025
+  7.744658459619863E+025
+  7.745715574884305E+025
+  7.744968543436700E+025
+  7.742870477011764E+025
+  7.739887101324960E+025
+  7.736478661527717E+025
+  1.406895854987046E+025
+  1.407116442015142E+025
+  1.407301728115444E+025
+  1.407419495770847E+025
+  1.407432968441111E+025
+  1.407301030299342E+025
+  1.406979402147868E+025
+  1.406422836879654E+025
+  1.405588165441667E+025
+  1.404438370198791E+025
+  1.402947443161557E+025
+  1.401105366872069E+025
+  1.398922476179415E+025
+  1.396432294782123E+025
+  1.393691692638614E+025
+  1.390777112121082E+025
+  1.387775731631247E+025
+  1.384770744833355E+025
+  1.381820436778096E+025
+  1.378931458638879E+025
+  1.376027608142590E+025
+  1.372916401201971E+025
+  1.369256614949892E+025
+  1.364530646353634E+025
+  1.358025876312979E+025
+  1.348829261780230E+025
+  1.335839197478953E+025
+  1.317798434688129E+025
+  1.293351576668004E+025
+  1.261130203245362E+025
+  1.219867464225029E+025
+  1.168541172259587E+025
+  1.106539175099006E+025
+  1.033832755403646E+025
+  9.511337107293157E+024
+  8.600009102673621E+024
+  7.628567673591151E+024
+  6.628788501880488E+024
+  5.637512287575897E+024
+  4.692936802430702E+024
+  3.830271846958772E+024
+  3.076371596698466E+024
+  2.442609576699231E+024
+  1.924910668853403E+024
+  1.510549539581946E+024
+  1.183645160088809E+024
+  9.282989728734542E+023
+  7.301536243734466E+023
+  5.769916258535638E+023
+  4.588030864901096E+023
+  3.675934538354896E+023
+  2.970896347812644E+023
+  2.424298347691827E+023
+  1.998782859809751E+023
+  1.665810219195262E+023
+  1.403656616086202E+023
+  1.195818596902332E+023
+  1.029765962578979E+023
+  8.959800301801347E+022
+  7.872189834502050E+022
+  6.979604797248570E+022
+  6.239807799996854E+022
+  5.620380446280551E+022
+  5.096345899031701E+022
+  4.648387569312958E+022
+  4.261517111629693E+022
+  3.924081429807045E+022
+  3.627026720409805E+022
+  3.363359727344712E+022
+  3.127764435282159E+022
+  2.916348624282510E+022
+  2.726511642710521E+022
+  2.556945783356318E+022
+  2.407813481951535E+022
+  2.281188114666757E+022
+  2.181917598074529E+022
+  2.119181695220610E+022
+  2.109185170869307E+022
+  2.179683123830259E+022
+  2.377395635897191E+022
+  2.779849907606333E+022
+  3.513770432558052E+022
+  4.782728131254992E+022
+  6.907120013129065E+022
+  1.037919827063799E+023
+  1.593394996862513E+023
+  2.463182905060817E+023
+  3.793992049323202E+023
+  5.778228118927943E+023
+  8.650708476796170E+023
+  1.266897195971966E+024
+  1.806649133990345E+024
+  2.497679132823670E+024
+  3.337455831150169E+024
+  4.306864426514898E+024
+  5.371906165082100E+024
+  6.487926487755143E+024
+  7.605851118807700E+024
+  8.678826549102062E+024
+  9.667746089008343E+024
+  1.054470161776837E+025
+  1.129412554657976E+025
+  1.191198229222189E+025
+  1.240368150428328E+025
+  1.278142001158662E+025
+  1.306151245804187E+025
+  1.326205761447395E+025
+  1.340109469577446E+025
+  1.349527223650288E+025
+  1.355898359230789E+025
+  1.360389978765115E+025
+  1.363882965230879E+025
+  1.366984171737103E+025
+  1.370058365979063E+025
+  1.373273262556014E+025
+  1.376650780566416E+025
+  1.380118034016123E+025
+  1.383552747238670E+025
+  1.386819601717430E+025
+  1.389795974264852E+025
+  1.392387193669185E+025
+  1.394532749995530E+025
+  1.396205924939580E+025
+  1.397409783673145E+025
+  1.398171815698553E+025
+  1.398538162002113E+025
+  1.398567989818712E+025
+  1.398329105967938E+025
+  1.397895036266350E+025
+  1.397342800641471E+025
+  5.763166959794504E+023
+  5.764068946543427E+023
+  5.764826061494857E+023
+  5.765306399639115E+023
+  5.765359428401234E+023
+  5.764816874477414E+023
+  5.763497512750540E+023
+  5.761216114580626E+023
+  5.757795860449330E+023
+  5.753084943046438E+023
+  5.746976373402370E+023
+  5.739428285171475E+023
+  5.730481708843796E+023
+  5.720272118538532E+023
+  5.709030041562747E+023
+  5.697065618296583E+023
+  5.684732492661760E+023
+  5.672367676692566E+023
+  5.660206086755345E+023
+  5.648271390535132E+023
+  5.636248501298889E+023
+  5.623347052870958E+023
+  5.608168845039914E+023
+  5.588594964499340E+023
+  5.561709703451281E+023
+  5.523778537793201E+023
+  5.470296695467111E+023
+  5.396123815562927E+023
+  5.295719110017382E+023
+  5.163489530837474E+023
+  4.994258478986425E+023
+  4.783851088496279E+023
+  4.529770625202349E+023
+  4.231907669284398E+023
+  3.893182443358700E+023
+  3.519980333354046E+023
+  3.122218757385806E+023
+  2.712903149429991E+023
+  2.307109137226591E+023
+  1.920465173722083E+023
+  1.567374789506670E+023
+  1.258820706499333E+023
+  9.994502019480533E+022
+  7.875893429994471E+022
+  6.180255997651895E+022
+  4.842563746835372E+022
+  3.797730337935165E+022
+  2.986985284884527E+022
+  2.360321424252127E+022
+  1.876770103933701E+022
+  1.503612887890418E+022
+  1.215177832363121E+022
+  9.915694735892377E+021
+  8.175009226610718E+021
+  6.812941145398728E+021
+  5.740602803749204E+021
+  4.890469178169670E+021
+  4.211273876269235E+021
+  3.664073212154037E+021
+  3.219239783034836E+021
+  2.854181532104260E+021
+  2.551619552093657E+021
+  2.298292180922077E+021
+  2.083982225926553E+021
+  1.900788126927487E+021
+  1.742578972225063E+021
+  1.604588229871150E+021
+  1.483112648809189E+021
+  1.375291848264265E+021
+  1.278951502053562E+021
+  1.192499651330525E+021
+  1.114872608267586E+021
+  1.045535516323319E+021
+  9.845548384743197E+020
+  9.327786831024226E+020
+  8.921900996866108E+020
+  8.665441769983637E+020
+  8.624698394621097E+020
+  8.913212428389161E+020
+  9.722113142584123E+020
+  1.136856836484174E+021
+  1.437102839963137E+021
+  1.956235763828476E+021
+  2.825342648318922E+021
+  4.245829684776515E+021
+  6.518429259833093E+021
+  1.007706138523374E+022
+  1.552206060220942E+022
+  2.364079979582670E+022
+  3.539428152549128E+022
+  5.183661049781569E+022
+  7.392358272486323E+022
+  1.022021951980423E+023
+  1.365696277081495E+023
+  1.762445236465745E+023
+  2.198364187944821E+023
+  2.655186413395360E+023
+  3.112834020259909E+023
+  3.552134768933039E+023
+  3.957083372403812E+023
+  4.316254397707210E+023
+  4.623270239367761E+023
+  4.876471012422436E+023
+  5.078061316487379E+023
+  5.233023097201323E+023
+  5.348023740057925E+023
+  5.430461414560451E+023
+  5.487710860309254E+023
+  5.526578872771555E+023
+  5.552950702432730E+023
+  5.571599009365386E+023
+  5.586126686575309E+023
+  5.599016718090401E+023
+  5.611762785822782E+023
+  5.625053347243233E+023
+  5.638981120611613E+023
+  5.653251440105025E+023
+  5.667367794653249E+023
+  5.680780284431108E+023
+  5.692990715130576E+023
+  5.703614863950421E+023
+  5.712407792398405E+023
+  5.719262304065931E+023
+  5.724192566430488E+023
+  5.727312238577731E+023
+  5.728810927266087E+023
+  5.728931262182472E+023
+  5.727951044687863E+023
+  5.726171386628496E+023
+  5.723907677584451E+023
+  1.198558144455469E+024
+  1.198746060587705E+024
+  1.198903835824811E+024
+  1.199004016039557E+024
+  1.199015268899014E+024
+  1.198902568796132E+024
+  1.198628193583968E+024
+  1.198153586384323E+024
+  1.197441938770014E+024
+  1.196461646516689E+024
+  1.195190431838738E+024
+  1.193619569493943E+024
+  1.191757587165699E+024
+  1.189632670746231E+024
+  1.187292794238162E+024
+  1.184802510485730E+024
+  1.182235441653665E+024
+  1.179661771098391E+024
+  1.177130465436405E+024
+  1.174646567544475E+024
+  1.172144670515688E+024
+  1.169460514228042E+024
+  1.166303406936745E+024
+  1.162232739312938E+024
+  1.156642153236464E+024
+  1.148754956704551E+024
+  1.137634223804804E+024
+  1.122210803912211E+024
+  1.101332237200818E+024
+  1.073835176083857E+024
+  1.038642878876300E+024
+  9.948869491616262E+023
+  9.420480232396001E+023
+  8.801032714054684E+023
+  8.096599887187725E+023
+  7.320461682241589E+023
+  6.493243979621562E+023
+  5.641995029343949E+023
+  4.798068497988891E+023
+  3.993967626035174E+023
+  3.259647935899579E+023
+  2.617950434452430E+023
+  2.078540114459882E+023
+  1.637935653482339E+023
+  1.285296469438901E+023
+  1.007099022180782E+023
+  7.898072332652626E+022
+  6.211985561916897E+022
+  4.908729772832392E+022
+  3.903102430464276E+022
+  3.127059130166165E+022
+  2.527210158754089E+022
+  2.062179202774573E+022
+  1.700174419388249E+022
+  1.416909228653079E+022
+  1.193897926312948E+022
+  1.017097570210175E+022
+  8.758464918366625E+021
+  7.620457428173806E+021
+  6.695338516183970E+021
+  5.936124605663161E+021
+  5.306881644913222E+021
+  4.780030052899244E+021
+  4.334321672913236E+021
+  3.953324042404261E+021
+  3.624287017895050E+021
+  3.337297882017038E+021
+  3.084655168241581E+021
+  2.860410288982436E+021
+  2.660041418255284E+021
+  2.480237861874799E+021
+  2.318787558095819E+021
+  2.174578242911645E+021
+  2.047748197391103E+021
+  1.940061254840212E+021
+  1.855641516999603E+021
+  1.802298268183643E+021
+  1.793817280762191E+021
+  1.853810998060028E+021
+  2.022027126239954E+021
+  2.364424556120246E+021
+  2.988821255300972E+021
+  4.068421436610022E+021
+  5.875836724798712E+021
+  8.829916779674769E+021
+  1.355607410648324E+022
+  2.095670505807609E+022
+  3.228029249317967E+022
+  4.916430008185320E+022
+  7.360729260202235E+022
+  1.078014732322583E+023
+  1.537346208312968E+023
+  2.125443766891839E+023
+  2.840169978362725E+023
+  3.665276069093859E+023
+  4.571845537122856E+023
+  5.521889670492914E+023
+  6.473652476292728E+023
+  7.387260855841735E+023
+  8.229427586672859E+023
+  8.976389999070256E+023
+  9.614883507751120E+023
+  1.014145531842300E+024
+  1.056069008201118E+024
+  1.088294899840379E+024
+  1.112209892477092E+024
+  1.129352687137098E+024
+  1.141257132854845E+024
+  1.149338969740847E+024
+  1.154822276925182E+024
+  1.158699728874098E+024
+  1.161720694905187E+024
+  1.164401601803194E+024
+  1.167053093193786E+024
+  1.169818312652150E+024
+  1.172716473778645E+024
+  1.175686197615935E+024
+  1.178624107095356E+024
+  1.181415711794253E+024
+  1.183957276735917E+024
+  1.186168784373139E+024
+  1.187999208273519E+024
+  1.189426196561948E+024
+  1.190452666323367E+024
+  1.191102254629814E+024
+  1.191414420218541E+024
+  1.191439669483501E+024
+  1.191235835098358E+024
+  1.190865601414846E+024
+  1.190394618947246E+024
+  2.020965855243579E+023
+  2.021258665231944E+023
+  2.021527161930743E+023
+  2.021731809147503E+023
+  2.021824187172651E+023
+  2.021746477173383E+023
+  2.021432615289458E+023
+  2.020811361615294E+023
+  2.019811168026882E+023
+  2.018367181081756E+023
+  2.016430051530153E+023
+  2.013975533110957E+023
+  2.011013641916760E+023
+  2.007595814362173E+023
+  2.003818055047821E+023
+  1.999817852574067E+023
+  1.995762779666573E+023
+  1.991829157884309E+023
+  1.988169977271829E+023
+  1.984872456909718E+023
+  1.981907159520393E+023
+  1.979072247267540E+023
+  1.975938020734306E+023
+  1.971798057803181E+023
+  1.965633892808553E+023
+  1.956100231748511E+023
+  1.941537337472039E+023
+  1.920016683064451E+023
+  1.889425409231258E+023
+  1.847594320439993E+023
+  1.792472342080641E+023
+  1.722346257167253E+023
+  1.636096798563602E+023
+  1.533470132471146E+023
+  1.415328332833812E+023
+  1.283826951876797E+023
+  1.142458658115329E+023
+  9.959078649034256E+022
+  8.496895027411722E+022
+  7.095955591844131E+022
+  5.810350763386238E+022
+  4.682080049108059E+022
+  3.729989706102944E+022
+  2.949488156989575E+022
+  2.322644036623608E+022
+  1.826449442048603E+022
+  1.437588669545465E+022
+  1.134845684901785E+022
+  9.000643356428354E+021
+  7.182997824277688E+021
+  5.775672450314801E+021
+  4.684274055089506E+021
+  3.835388417487971E+021
+  3.172414932489573E+021
+  2.651972583221897E+021
+  2.240936010707904E+021
+  1.914061994359843E+021
+  1.652126288381711E+021
+  1.440481233660755E+021
+  1.267950001699084E+021
+  1.125984805842296E+021
+  1.008029259987019E+021
+  9.090370939313252E+020
+  8.251098182067184E+020
+  7.532245006462715E+020
+  6.910296904236928E+020
+  6.366929331141069E+020
+  5.887875340623524E+020
+  5.462095376547224E+020
+  5.081186043394051E+020
+  4.738989211246177E+020
+  4.431388704142121E+020
+  4.156314202674622E+020
+  3.914018103972411E+020
+  3.707761538314410E+020
+  3.545156060387691E+020
+  3.440579620973880E+020
+  3.419348328551087E+020
+  3.524714022613791E+020
+  3.829305991776620E+020
+  4.453360440147202E+020
+  5.592948848961177E+020
+  7.562275122193332E+020
+  1.085458800180528E+021
+  1.622560254038408E+021
+  2.480024336953397E+021
+  3.819603095578339E+021
+  5.864195224478393E+021
+  8.904761605837817E+021
+  1.329428254896288E+022
+  1.941656726459254E+022
+  2.761400208546521E+022
+  3.807195171154504E+022
+  5.073084214279331E+022
+  6.527868218597326E+022
+  8.118054531855936E+022
+  9.774621103182469E+022
+  1.142272111882234E+023
+  1.299183801141231E+023
+  1.442408283752753E+023
+  1.567922043259133E+023
+  1.673613243271026E+023
+  1.759132431201511E+023
+  1.825553800370771E+023
+  1.874955951068276E+023
+  1.910006834088721E+023
+  1.933604236258665E+023
+  1.948593794633730E+023
+  1.957566920163346E+023
+  1.962731165592480E+023
+  1.965842455942578E+023
+  1.968188652370906E+023
+  1.970614515930746E+023
+  1.973578071237490E+023
+  1.977227685412181E+023
+  1.981488647820816E+023
+  1.986148522641239E+023
+  1.990932448723156E+023
+  1.995562570854565E+023
+  1.999799096471924E+023
+  2.003463348098572E+023
+  2.006445415529466E+023
+  2.008700672755643E+023
+  2.010240104596538E+023
+  2.011118342061921E+023
+  2.011421224817840E+023
+  2.011254033908828E+023
+  2.010732180954138E+023
+  2.009974822427258E+023
+  2.009100384888568E+023
+  1.990893318006326E+022
+  1.991201540600637E+022
+  1.991463124393696E+022
+  1.991633398172470E+022
+  1.991660961832702E+022
+  1.991487882041523E+022
+  1.991051271107114E+022
+  1.990286357743663E+022
+  1.989130825680104E+022
+  1.987530681821691E+022
+  1.985447316648018E+022
+  1.982864815452090E+022
+  1.979796455249307E+022
+  1.976289079211511E+022
+  1.972423679443058E+022
+  1.968310370451624E+022
+  1.964076100833133E+022
+  1.959843888716507E+022
+  1.955703086002573E+022
+  1.951671211505402E+022
+  1.947649197509997E+022
+  1.943373307608925E+022
+  1.938368279977733E+022
+  1.931907216052970E+022
+  1.922984240761395E+022
+  1.910306011104295E+022
+  1.892307886038561E+022
+  1.867200194824002E+022
+  1.833049643567974E+022
+  1.787900224257053E+022
+  1.729936265993163E+022
+  1.657686286535796E+022
+  1.570258854019857E+022
+  1.467590254538398E+022
+  1.350669379962324E+022
+  1.221691162229075E+022
+  1.084082142120754E+022
+  9.423484195328711E+021
+  8.017236709534382E+021
+  6.676425797059986E+021
+  5.451224889339048E+021
+  4.379982630563040E+021
+  3.479054963158683E+021
+  2.742813678828222E+021
+  2.153297573005382E+021
+  1.688023639543979E+021
+  1.324453660712031E+021
+  1.042216938989564E+021
+  8.239678080666783E+020
+  6.554872628022787E+020
+  5.254137261035264E+020
+  4.248282211728365E+020
+  3.468154833512578E+020
+  2.860597636547507E+020
+  2.384984868588805E+020
+  2.010381298718713E+020
+  1.713276815089569E+020
+  1.475814831541762E+020
+  1.284425459953353E+020
+  1.128780985275066E+020
+  1.001003049044851E+020
+  8.950637916399858E+019
+  8.063350486242050E+019
+  7.312498242017567E+019
+  6.670485639416506E+019
+  6.115893676445841E+019
+  5.632064657515731E+019
+  5.206053041152308E+019
+  4.827857281284085E+019
+  4.489873237152625E+019
+  4.186532770644925E+019
+  3.914115273041072E+019
+  3.670749843982223E+019
+  3.456668401911096E+019
+  3.274834994817577E+019
+  3.132178457449348E+019
+  3.041814831954769E+019
+  3.026890032263216E+019
+  3.127035319125233E+019
+  3.408941769622202E+019
+  3.983244025457311E+019
+  5.030730651170646E+019
+  6.841734490617446E+019
+  9.873061746090641E+019
+  1.482630337489783E+020
+  2.274862384802599E+020
+  3.515026832845507E+020
+  5.411959968324574E+020
+  8.239393887696070E+020
+  1.233116280004792E+021
+  1.805303380422549E+021
+  2.573597910329145E+021
+  3.556813086585390E+021
+  4.751113360829570E+021
+  6.129054455565140E+021
+  7.642043782958743E+021
+  9.226396872173090E+021
+  1.081223909856238E+022
+  1.233296421488324E+022
+  1.373308791176959E+022
+  1.497313538002323E+022
+  1.603123528948680E+022
+  1.690193861274057E+022
+  1.759322371109205E+022
+  1.812269565670119E+022
+  1.851377634974744E+022
+  1.879237775916390E+022
+  1.898427629222245E+022
+  1.911321919846970E+022
+  1.919969704468703E+022
+  1.926028352378559E+022
+  1.930744291789430E+022
+  1.934971186000731E+022
+  1.939216361599762E+022
+  1.943705928241052E+022
+  1.948458729100042E+022
+  1.953359784096113E+022
+  1.958225589733545E+022
+  1.962856252935372E+022
+  1.967072257311686E+022
+  1.970736073488620E+022
+  1.973760713606255E+022
+  1.976108808876308E+022
+  1.977786450526670E+022
+  1.978835095383544E+022
+  1.979322914648274E+022
+  1.979336419278351E+022
+  1.978973926015050E+022
+  1.978341195901691E+022
+  1.977548164275591E+022
+  5.245019377656081E+020
+  5.245806990693565E+020
+  5.246492709558963E+020
+  5.246964790495656E+020
+  5.247092054063262E+020
+  5.246723620148393E+020
+  5.245692434163605E+020
+  5.243822987076943E+020
+  5.240942742183158E+020
+  5.236898037516538E+020
+  5.231573621610224E+020
+  5.224913338806748E+020
+  5.216939094196172E+020
+  5.207764524694098E+020
+  5.197598787757084E+020
+  5.186735430163134E+020
+  5.175521693002169E+020
+  5.164304749905166E+020
+  5.153353296811522E+020
+  5.142755710280746E+020
+  5.132299546166521E+020
+  5.121341029368313E+020
+  5.108676772207234E+020
+  5.092432662069728E+020
+  5.069986307322056E+020
+  5.037939612483184E+020
+  4.992157335755960E+020
+  4.927886414262876E+020
+  4.839969695324319E+020
+  4.723165846442039E+020
+  4.572582619957860E+020
+  4.384220121458324E+020
+  4.155601025213034E+020
+  3.886434385117231E+020
+  3.579221350001457E+020
+  3.239673280657290E+020
+  2.876791562222735E+020
+  2.502475312340574E+020
+  2.130595449251675E+020
+  1.775600113723190E+020
+  1.450869857153153E+020
+  1.166675253490479E+020
+  9.274561358492135E+019
+  7.318039326200686E+019
+  5.750169728261170E+019
+  4.511744848542691E+019
+  3.543252711254684E+019
+  2.790813948915417E+019
+  2.208492050566855E+019
+  1.758590995387882E+019
+  1.410961734079212E+019
+  1.141916238476159E+019
+  9.330729118161584E+018
+  7.702905016544038E+018
+  6.427530162040091E+018
+  5.422180325847505E+018
+  4.624166785909376E+018
+  3.985839445526653E+018
+  3.470959815563947E+018
+  3.051926921684141E+018
+  2.707670019158437E+018
+  2.422055620403653E+018
+  2.182687463203931E+018
+  1.980004720685783E+018
+  1.806605650396149E+018
+  1.656741367966167E+018
+  1.525938141100064E+018
+  1.410717249644078E+018
+  1.308389798611538E+018
+  1.216910684815546E+018
+  1.134782047527801E+018
+  1.061002965220993E+018
+  9.950701689092367E+017
+  9.370459213727712E+017
+  8.877265916653985E+017
+  8.489726905959444E+017
+  8.243036861759446E+017
+  8.199260689820918E+017
+  8.464596852701578E+017
+  9.217641099424430E+017
+  1.075448621930583E+018
+  1.355868469149044E+018
+  1.840630346823819E+018
+  2.651760177939797E+018
+  3.976542013592888E+018
+  6.094294991782166E+018
+  9.407518624273336E+018
+  1.447225177674743E+019
+  2.201649239599793E+019
+  3.292680693999738E+019
+  4.817257942296603E+019
+  6.862768137418893E+019
+  9.478267232669193E+019
+  1.265231059759308E+020
+  1.631059489480246E+020
+  2.032273317736248E+020
+  2.451858247676305E+020
+  2.871207394434022E+020
+  3.272642145066339E+020
+  3.641495559459221E+020
+  3.967398957820132E+020
+  4.244688688057340E+020
+  4.472074911695506E+020
+  4.651830807912899E+020
+  4.788771422866739E+020
+  4.889233931045261E+020
+  4.960189514596072E+020
+  5.008543994342995E+020
+  5.040634793538720E+020
+  5.061906350401058E+020
+  5.076737599946338E+020
+  5.088394962450058E+020
+  5.099085877574226E+020
+  5.110088175799402E+020
+  5.121929390559787E+020
+  5.134589214248426E+020
+  5.147699701494646E+020
+  5.160722471053062E+020
+  5.173089313372494E+020
+  5.184300352002657E+020
+  5.193980539187490E+020
+  5.201900425743295E+020
+  5.207971112175746E+020
+  5.212225002455482E+020
+  5.214791424572484E+020
+  5.215871023048852E+020
+  5.215711304922417E+020
+  5.214587567536681E+020
+  5.212790145065735E+020
+  5.210615169590647E+020
+  5.819433063216708E+025
+  5.820267074671637E+025
+  5.821040890467516E+025
+  5.821643098613447E+025
+  5.821935681039826E+025
+  5.821752188867859E+025
+  5.820900872662299E+025
+  5.819173530172005E+025
+  5.816359799681336E+025
+  5.812267906870354E+025
+  5.806750918081354E+025
+  5.799735535302129E+025
+  5.791249818510622E+025
+  5.781445211366145E+025
+  5.770606914889145E+025
+  5.759146009599116E+025
+  5.747567113237361E+025
+  5.736406709242134E+025
+  5.726139657089001E+025
+  5.717054916755547E+025
+  5.709106027116153E+025
+  5.701746827045956E+025
+  5.693767512400621E+025
+  5.683149606614172E+025
+  5.666960274157630E+025
+  5.641306564108686E+025
+  5.601369074488060E+025
+  5.541532898314596E+025
+  5.455632003462826E+025
+  5.337320826422075E+025
+  5.180581603251383E+025
+  4.980364102810502E+025
+  4.733332024757690E+025
+  4.438655408988094E+025
+  4.098743522252128E+025
+  3.719767465257973E+025
+  3.311794795972639E+025
+  2.888375210388250E+025
+  2.465497850356061E+025
+  2.059987262274549E+025
+  1.687585706500846E+025
+  1.360548306734850E+025
+  1.084419018804884E+025
+  8.579336817426361E+024
+  6.759438286222929E+024
+  5.318137727880424E+024
+  4.188061465003554E+024
+  3.307830761591464E+024
+  2.624873682642648E+024
+  2.095886181131156E+024
+  1.686119871969801E+024
+  1.368191331466419E+024
+  1.120792026705454E+024
+  9.274854601935116E+023
+  7.756680347966049E+023
+  6.557113163437289E+023
+  5.602746451407161E+023
+  4.837652034551309E+023
+  4.219197798268225E+023
+  3.714839731103440E+023
+  3.299678560050149E+023
+  2.954608075307325E+023
+  2.664916888021661E+023
+  2.419235324543302E+023
+  2.208743916172386E+023
+  2.026579818980442E+023
+  1.867393148672556E+023
+  1.727017419146795E+023
+  1.602227867727433E+023
+  1.490569323720747E+023
+  1.390242403328051E+023
+  1.300044342416214E+023
+  1.219370203763528E+023
+  1.148293623546110E+023
+  1.087766780942408E+023
+  1.040011397426893E+023
+  1.009222663093905E+023
+  1.002784474341928E+023
+  1.033307324747733E+023
+  1.121959475628862E+023
+  1.303772483114055E+023
+  1.635853446117623E+023
+  2.209684190906490E+023
+  3.168823056561172E+023
+  4.733130424599344E+023
+  7.229737059858212E+023
+  1.112878963442479E+024
+  1.707779442947780E+024
+  2.592139685512705E+024
+  3.868338211471162E+024
+  5.647552554040350E+024
+  8.028720355037393E+024
+  1.106494397193067E+025
+  1.473801500178514E+025
+  1.895637307737279E+025
+  2.356382391308022E+025
+  2.835933317839742E+025
+  3.312531781811086E+025
+  3.765717811330248E+025
+  4.178736473640068E+025
+  4.539989213505356E+025
+  4.843447709676070E+025
+  5.088209155576547E+025
+  5.277503041622014E+025
+  5.417466593294169E+025
+  5.515934755434242E+025
+  5.581393391601060E+025
+  5.622158981447824E+025
+  5.645791309847258E+025
+  5.658717272511746E+025
+  5.666035052941458E+025
+  5.671468151873991E+025
+  5.677440441679068E+025
+  5.685243107675226E+025
+  5.695262209455039E+025
+  5.707233948122424E+025
+  5.720496100116960E+025
+  5.734209645819363E+025
+  5.747533468223381E+025
+  5.759744746508590E+025
+  5.770306154061219E+025
+  5.778887559492739E+025
+  5.785354817209408E+025
+  5.789740235485822E+025
+  5.792206256390510E+025
+  5.793007781926764E+025
+  5.792456561822912E+025
+  5.790892921574397E+025
+  5.788666295292555E+025
+  5.786121672548001E+025
+  1.069563483592029E+026
+  1.069716153397693E+026
+  1.069860301581030E+026
+  1.069975943384389E+026
+  1.070037950918648E+026
+  1.070015672426502E+026
+  1.069873511481240E+026
+  1.069572622954825E+026
+  1.069073686956852E+026
+  1.068340949526072E+026
+  1.067347349873454E+026
+  1.066080170621808E+026
+  1.064546514660082E+026
+  1.062777714144567E+026
+  1.060831522079521E+026
+  1.058790812152499E+026
+  1.056757583816359E+026
+  1.054841326517419E+026
+  1.053141252975100E+026
+  1.051722587818728E+026
+  1.050587963129108E+026
+  1.049645921594289E+026
+  1.048679409914180E+026
+  1.047317810119514E+026
+  1.045016404809994E+026
+  1.041047191330128E+026
+  1.034504733902348E+026
+  1.024330412548090E+026
+  1.009358086617720E+026
+  9.883837385352319E+025
+  9.602606902938965E+025
+  9.240197951753522E+025
+  8.790098517571406E+025
+  8.250469780952106E+025
+  7.625532737662481E+025
+  6.926565679367369E+025
+  6.172178822208899E+025
+  5.387562058514751E+025
+  4.602552897769479E+025
+  3.848645222487803E+025
+  3.155398705175512E+025
+  2.545923624593740E+025
+  2.030817586466097E+025
+  1.607940536063521E+025
+  1.267854804342600E+025
+  9.982995053799820E+024
+  7.867838797916852E+024
+  6.219051941305892E+024
+  4.938821621221219E+024
+  3.946480636609973E+024
+  3.177231662350046E+024
+  2.579963273390589E+024
+  2.114868411591095E+024
+  1.751216601388948E+024
+  1.465425303908060E+024
+  1.239465430324913E+024
+  1.059581887797823E+024
+  9.152874866854726E+023
+  7.985828535271004E+023
+  7.033575550072618E+023
+  6.249335841786863E+023
+  5.597191306666871E+023
+  5.049469459368404E+023
+  4.584771559784161E+023
+  4.186489623579207E+023
+  3.841693630212382E+023
+  3.540299342346749E+023
+  3.274449869526853E+023
+  3.038061991431351E+023
+  2.826502952116372E+023
+  2.636376762232776E+023
+  2.465413151834339E+023
+  2.312470003143471E+023
+  2.177685310314523E+023
+  2.062853251157943E+023
+  1.972159268116921E+023
+  1.913503050897583E+023
+  1.900781729211632E+023
+  1.957717170849417E+023
+  2.124109252467124E+023
+  2.465789940241291E+023
+  3.090020901531779E+023
+  4.168536165900339E+023
+  5.970675642817370E+023
+  8.908676428085572E+023
+  1.359547966746035E+024
+  2.091129762280601E+024
+  3.206728115246680E+024
+  4.864156418904186E+024
+  7.254421280981081E+024
+  1.058450232220585E+025
+  1.503783743991512E+025
+  2.071142673075248E+025
+  2.756836169902026E+025
+  3.543439659616575E+025
+  4.401472262080868E+025
+  5.293144213484157E+025
+  6.177681126211857E+025
+  7.016860327385777E+025
+  7.779504149899379E+025
+  8.444170383427093E+025
+  8.999894230392927E+025
+  9.445324085753282E+025
+  9.786836377717327E+025
+  1.003622487133729E+026
+  1.020842406413290E+026
+  1.031954313704286E+026
+  1.038532700586705E+026
+  1.042005530306723E+026
+  1.043583781120374E+026
+  1.044224891396775E+026
+  1.044624436741784E+026
+  1.045230680728841E+026
+  1.046276549874877E+026
+  1.047823140160165E+026
+  1.049808513444516E+026
+  1.052095775248802E+026
+  1.054515465691926E+026
+  1.056898971945119E+026
+  1.059101533040471E+026
+  1.061015039812669E+026
+  1.062572101634224E+026
+  1.063743783160533E+026
+  1.064533789941915E+026
+  1.064971310753410E+026
+  1.065103586388448E+026
+  1.064988885523701E+026
+  1.064690894143408E+026
+  1.064274812663854E+026
+  1.063804646978714E+026
+  1.404072607808704E+025
+  1.404277056985338E+025
+  1.404465429155067E+025
+  1.404610345350227E+025
+  1.404678144950989E+025
+  1.404628510595772E+025
+  1.404415272432132E+025
+  1.403988566875429E+025
+  1.403298277486536E+025
+  1.402298994286805E+025
+  1.400956258074763E+025
+  1.399253376049815E+025
+  1.397197944448611E+025
+  1.394826974800355E+025
+  1.392209204441417E+025
+  1.389443022258643E+025
+  1.386648537718801E+025
+  1.383952646760479E+025
+  1.381466517811313E+025
+  1.379255763260499E+025
+  1.377304637848287E+025
+  1.375476784939795E+025
+  1.373476146927601E+025
+  1.370812482920790E+025
+  1.366776374368110E+025
+  1.360428634351974E+025
+  1.350608774700479E+025
+  1.335966799052953E+025
+  1.315022186336470E+025
+  1.286253364122137E+025
+  1.248219707424534E+025
+  1.199715240291911E+025
+  1.139947819817277E+025
+  1.068729180720514E+025
+  9.866504381892445E+024
+  8.952068090101657E+024
+  7.968288915291845E+024
+  6.947819452901249E+024
+  5.929142784722061E+024
+  4.952710816901435E+024
+  4.056334281872424E+024
+  3.269408153709101E+024
+  2.605175878746353E+024
+  2.060514812730996E+024
+  1.622976263354817E+024
+  1.276551660382018E+024
+  1.005002854463451E+024
+  7.935454321970041E+023
+  6.295219200771329E+023
+  5.025100511022086E+023
+  4.041494083832349E+023
+  3.278535309355956E+023
+  2.684985693084233E+023
+  2.221332643793790E+023
+  1.857285572175665E+023
+  1.569710063718826E+023
+  1.340972977069019E+023
+  1.157642988535912E+023
+  1.009484335027895E+023
+  8.886852141893824E+022
+  7.892702490848067E+022
+  7.066553460268522E+022
+  6.373116399394514E+022
+  5.785124490704666E+022
+  5.281431289563110E+022
+  4.845585046853053E+022
+  4.464763298904708E+022
+  4.128981590149194E+022
+  3.830513283961405E+022
+  3.563476357268319E+022
+  3.323560206107028E+022
+  3.107883574299511E+022
+  2.914997345127026E+022
+  2.745078164072622E+022
+  2.600408104565568E+022
+  2.486312687577376E+022
+  2.412849814604205E+022
+  2.397725840372251E+022
+  2.471186351848755E+022
+  2.684012023794447E+022
+  3.120256014067019E+022
+  3.916964261706071E+022
+  5.293717872575283E+022
+  7.595166319000883E+022
+  1.134925923980899E+023
+  1.734172598968654E+023
+  2.670211259511355E+023
+  4.098656853471092E+023
+  6.222579081344260E+023
+  9.288234735356072E+023
+  1.356323146933633E+024
+  1.928602746601354E+024
+  2.658520467086516E+024
+  3.541815134404687E+024
+  4.556597529681359E+024
+  5.665424891425903E+024
+  6.820039141898553E+024
+  7.968153961584257E+024
+  9.060549641314153E+024
+  1.005686392956248E+025
+  1.092909348007524E+025
+  1.166260464718568E+025
+  1.225508004094574E+025
+  1.271414378984765E+025
+  1.305442694462181E+025
+  1.329466428786776E+025
+  1.345518067899027E+025
+  1.355591988411205E+025
+  1.361503211481598E+025
+  1.364796801284234E+025
+  1.366700527421001E+025
+  1.368113457127809E+025
+  1.369623555927367E+025
+  1.371547315476500E+025
+  1.373983930845390E+025
+  1.376876162658016E+025
+  1.380070350119220E+025
+  1.383369370902193E+025
+  1.386574455453284E+025
+  1.389514086673462E+025
+  1.392060233210530E+025
+  1.394133731499291E+025
+  1.395701804064498E+025
+  1.396771193722808E+025
+  1.397379668195613E+025
+  1.397587180083362E+025
+  1.397467483110077E+025
+  1.397101468791119E+025
+  1.396572575180023E+025
+  1.395963568051076E+025
+  7.082823653695514E+025
+  7.083737400203587E+025
+  7.084656417891806E+025
+  7.085467878859944E+025
+  7.086020018637337E+025
+  7.086116831258171E+025
+  7.085519349558886E+025
+  7.083954867290341E+025
+  7.081134176310976E+025
+  7.076778369992568E+025
+  7.070654251412929E+025
+  7.062614742341272E+025
+  7.052639673978782E+025
+  7.040870867269759E+025
+  7.027633540856592E+025
+  7.013435073237966E+025
+  6.998932450040736E+025
+  6.984861306191267E+025
+  6.971922447790121E+025
+  6.960626282476502E+025
+  6.951101512379638E+025
+  6.942881053906270E+025
+  6.934684409341595E+025
+  6.924220571288239E+025
+  6.908038248901805E+025
+  6.881450602778269E+025
+  6.838560273694494E+025
+  6.772408223880478E+025
+  6.675267452014328E+025
+  6.539099420882620E+025
+  6.356184424269234E+025
+  6.119922540147217E+025
+  5.825774250039366E+025
+  5.472266506033761E+025
+  5.061933768411552E+025
+  4.602005947087753E+025
+  4.104619342636030E+025
+  3.586344634718492E+025
+  3.066924976501565E+025
+  2.567298926572792E+025
+  2.107210216123006E+025
+  1.702184248869830E+025
+  1.359450424827513E+025
+  1.077749128663411E+025
+  8.509338666240913E+024
+  6.709459479442088E+024
+  5.295436718363680E+024
+  4.191851085489852E+024
+  3.333890751315109E+024
+  2.668023707912277E+024
+  2.151190898926948E+024
+  1.749384508364791E+024
+  1.436085798993429E+024
+  1.190798159740371E+024
+  9.977738985235757E+023
+  8.449595884164545E+023
+  7.231484158327931E+023
+  6.253126756313487E+023
+  5.460855269746532E+023
+  4.813626369260611E+023
+  4.279981551056887E+023
+  3.835738674564413E+023
+  3.462245583149723E+023
+  3.145062490405349E+023
+  2.872970028473964E+023
+  2.637224207503783E+023
+  2.430998773494895E+023
+  2.248970495688510E+023
+  2.087014775535892E+023
+  1.941988737913823E+023
+  1.811587850269116E+023
+  1.694271554956521E+023
+  1.589265271988452E+023
+  1.496663083757106E+023
+  1.417681332663863E+023
+  1.355153909251479E+023
+  1.314423139961882E+023
+  1.304876379892183E+023
+  1.342520090445484E+023
+  1.454182247136407E+023
+  1.684195642759920E+023
+  2.104724782139079E+023
+  2.831200255953313E+023
+  4.044477937227341E+023
+  6.021071608378583E+023
+  9.171644085229200E+023
+  1.408516946354117E+024
+  2.157088082028177E+024
+  3.268140005956988E+024
+  4.868799094819736E+024
+  7.096396113054200E+024
+  1.007193612788225E+025
+  1.385807148907547E+025
+  1.842763660794410E+025
+  2.366181362999468E+025
+  2.936183644356562E+025
+  3.527445370992260E+025
+  4.112774444752984E+025
+  4.666810693541825E+025
+  5.169005194720150E+025
+  5.605380102335543E+025
+  5.968981643507401E+025
+  6.259263620540660E+025
+  6.480797642429731E+025
+  6.641709486794534E+025
+  6.752147720862493E+025
+  6.822967209434040E+025
+  6.864703318615080E+025
+  6.886842599612610E+025
+  6.897361446260760E+025
+  6.902493942130621E+025
+  6.906690613354558E+025
+  6.912731599394545E+025
+  6.921956754432912E+025
+  6.934571931533028E+025
+  6.949988311948982E+025
+  6.967153430816240E+025
+  6.984839971653017E+025
+  7.001870194583144E+025
+  7.017266878850211E+025
+  7.030332998556403E+025
+  7.040671052355524E+025
+  7.048159189160787E+025
+  7.052903607241651E+025
+  7.055182652500304E+025
+  7.055390224347891E+025
+  7.053983310288582E+025
+  7.051440502507923E+025
+  7.048233546134386E+025
+  7.044808528436629E+025
+  2.062490728739228E+026
+  2.062571786672726E+026
+  2.062777340137755E+026
+  2.063113281594798E+026
+  2.063564801734153E+026
+  2.064089266758182E+026
+  2.064611282498136E+026
+  2.065020957338347E+026
+  2.065176037259544E+026
+  2.064908962374089E+026
+  2.064039054774050E+026
+  2.062389124727437E+026
+  2.059805261572806E+026
+  2.056177854302143E+026
+  2.051461009730648E+026
+  2.045686890510804E+026
+  2.038971239782962E+026
+  2.031506528586028E+026
+  2.023539858083858E+026
+  2.015334091067133E+026
+  2.007112673212030E+026
+  1.998991044754064E+026
+  1.990900094440341E+026
+  1.982509359823473E+026
+  1.973159265764342E+026
+  1.961812411445011E+026
+  1.947033798159263E+026
+  1.927009180116879E+026
+  1.899609694564564E+026
+  1.862509583946429E+026
+  1.813361582480183E+026
+  1.750030182300416E+026
+  1.670875011967536E+026
+  1.575063910416977E+026
+  1.462878372156637E+026
+  1.335955855543505E+026
+  1.197400549307273E+026
+  1.051696310480579E+026
+  9.043816616862098E+025
+  7.614989723472355E+025
+  6.288987293611152E+025
+  5.113275557958351E+025
+  4.111660803579229E+025
+  3.283002792047642E+025
+  2.611435640015887E+025
+  2.074999816005978E+025
+  1.650737078412527E+025
+  1.317353371215345E+025
+  1.056364104200759E+025
+  8.523719023193965E+024
+  6.928969323952840E+024
+  5.680118321182270E+024
+  4.699217530629876E+024
+  3.925610701941264E+024
+  3.312382286353363E+024
+  2.823382923442068E+024
+  2.430816666357300E+024
+  2.113325425099384E+024
+  1.854490506711218E+024
+  1.641672561142600E+024
+  1.465120154147490E+024
+  1.317288429118773E+024
+  1.192320377174195E+024
+  1.085653065166965E+024
+  9.937194622144830E+023
+  9.137232736888619E+023
+  8.434695954182022E+023
+  7.812384651367752E+023
+  7.256917817101821E+023
+  6.758068929293701E+023
+  6.308327746890328E+023
+  5.902675712914326E+023
+  5.538599112014171E+023
+  5.216416662015100E+023
+  4.940078707374787E+023
+  4.718720796517961E+023
+  4.569448992283373E+023
+  4.522128529169847E+023
+  4.627376565613007E+023
+  4.969554986340316E+023
+  5.687327816637806E+023
+  7.005233123066892E+023
+  9.280528948969887E+023
+  1.306986579237842E+024
+  1.921927033465356E+024
+  2.897708228840522E+024
+  4.412079118660760E+024
+  6.707260339326103E+024
+  1.009527074900440E+025
+  1.494831953550591E+025
+  2.166139349035897E+025
+  3.057083529675807E+025
+  4.182871524402663E+025
+  5.531316201553433E+025
+  7.063078041809487E+025
+  8.716010251363704E+025
+  1.041348014508117E+026
+  1.207546001950414E+026
+  1.362954426733640E+026
+  1.501942674619417E+026
+  1.620948226267580E+026
+  1.718536584231313E+026
+  1.795148785222801E+026
+  1.852663756530020E+026
+  1.893897474273267E+026
+  1.922128656951334E+026
+  1.940701965544064E+026
+  1.952727853942892E+026
+  1.960878319830858E+026
+  1.967268612969822E+026
+  1.973412422934133E+026
+  1.980238110621344E+026
+  1.988153519081224E+026
+  1.997145920313769E+026
+  2.006902235667832E+026
+  2.016933982528273E+026
+  2.026692499948007E+026
+  2.035663208562134E+026
+  2.043432343680416E+026
+  2.049724538459233E+026
+  2.054413734263357E+026
+  2.057512782275780E+026
+  2.059148876061345E+026
+  2.059532326729079E+026
+  2.058924529260570E+026
+  2.057608153925738E+026
+  2.055861381036761E+026
+  2.053938400371401E+026
+  2.052056886162700E+026
+  2.050391453185859E+026
+  1.716842030230260E+026
+  1.716913994864492E+026
+  1.717085793243157E+026
+  1.717361265492654E+026
+  1.717727342902783E+026
+  1.718148263611670E+026
+  1.718561579553913E+026
+  1.718876776428033E+026
+  1.718977047400927E+026
+  1.718725078817459E+026
+  1.717973014610465E+026
+  1.716576007008255E+026
+  1.714408338736410E+026
+  1.711380513827568E+026
+  1.707454996377957E+026
+  1.702657749894835E+026
+  1.697082524729095E+026
+  1.690884984307699E+026
+  1.684264335140384E+026
+  1.677431229169613E+026
+  1.670562337481544E+026
+  1.663743995885670E+026
+  1.656909413822533E+026
+  1.649775782773072E+026
+  1.641788920503351E+026
+  1.632083676683348E+026
+  1.619468231967811E+026
+  1.602439846877454E+026
+  1.579238782257093E+026
+  1.547946011383009E+026
+  1.506628489354065E+026
+  1.453532126069088E+026
+  1.387315981149482E+026
+  1.307310712351026E+026
+  1.213770320220234E+026
+  1.108071225553058E+026
+  9.928021340379867E+025
+  8.716900239924600E+025
+  7.493293828922328E+025
+  6.307251152130983E+025
+  5.207164143677432E+025
+  4.232226625146717E+025
+  3.402007579679897E+025
+  2.715417676825284E+025
+  2.159193077963485E+025
+  1.715050193150483E+025
+  1.363904108082029E+025
+  1.088069848806779E+025
+  8.722060479517458E+024
+  7.035404971975020E+024
+  5.717259341847597E+024
+  4.685348555881526E+024
+  3.875096352009334E+024
+  3.236270609924407E+024
+  2.730032079070998E+024
+  2.326464404495239E+024
+  2.002571782809447E+024
+  1.740690050807210E+024
+  1.527244299121715E+024
+  1.351787451137906E+024
+  1.206261750336397E+024
+  1.084434496387196E+024
+  9.814685899430517E+023
+  8.935966302353365E+023
+  8.178742047464706E+023
+  7.519936344861987E+023
+  6.941439257453372E+023
+  6.429062182660507E+023
+  5.971768345548934E+023
+  5.561123810791090E+023
+  5.190935235382514E+023
+  4.857064138042840E+023
+  4.557437592031598E+023
+  4.292318665139077E+023
+  4.064966443523424E+023
+  3.882919292097236E+023
+  3.760295847266172E+023
+  3.721751582147773E+023
+  3.809083823895943E+023
+  4.091970843307878E+023
+  4.684967483705825E+023
+  5.773614394991296E+023
+  7.653191938277153E+023
+  1.078389923100837E+024
+  1.586536600881374E+024
+  2.393023954654227E+024
+  3.644940931547710E+024
+  5.542810475900074E+024
+  8.345068825985113E+024
+  1.236021082147392E+025
+  1.791593674637934E+025
+  2.529185374096161E+025
+  3.461549666629793E+025
+  4.578793793653805E+025
+  5.848548079854048E+025
+  7.219527866228913E+025
+  8.628390367030884E+025
+  1.000889545010906E+026
+  1.130102148996288E+026
+  1.245799454351144E+026
+  1.345010357566151E+026
+  1.426522376112060E+026
+  1.490675228405605E+026
+  1.539000633497376E+026
+  1.573809154366742E+026
+  1.597798415214445E+026
+  1.613725023268228E+026
+  1.624156184284911E+026
+  1.631300491452668E+026
+  1.636909705077079E+026
+  1.642241204427373E+026
+  1.648070816108157E+026
+  1.654745711550713E+026
+  1.662266282291808E+026
+  1.670384754805278E+026
+  1.678707757310615E+026
+  1.686790962493443E+026
+  1.694216564941475E+026
+  1.700648200051798E+026
+  1.705861964434134E+026
+  1.709755560677168E+026
+  1.712339958263764E+026
+  1.713719425261094E+026
+  1.714066097227397E+026
+  1.713593880871242E+026
+  1.712534168395211E+026
+  1.711114843902176E+026
+  1.709544407971600E+026
+  1.708001796437816E+026
+  1.706631058730004E+026
+  2.899001042099305E+025
+  2.898829669671809E+025
+  2.899031889833358E+025
+  2.899676562277849E+025
+  2.900787667102763E+025
+  2.902325783239886E+025
+  2.904173504944732E+025
+  2.906127251440956E+025
+  2.907897450173112E+025
+  2.909119473930190E+025
+  2.909376292033522E+025
+  2.908232145577804E+025
+  2.905275369387485E+025
+  2.900166937752398E+025
+  2.892689500922032E+025
+  2.882790196925589E+025
+  2.870609663836479E+025
+  2.856489582067884E+025
+  2.840951991109945E+025
+  2.824645813810639E+025
+  2.808259533879184E+025
+  2.792403519121969E+025
+  2.777470458002955E+025
+  2.763486986546819E+025
+  2.749973045668294E+025
+  2.735827296701565E+025
+  2.719256950589932E+025
+  2.697769014454610E+025
+  2.668237821309846E+025
+  2.627061082444792E+025
+  2.570413030606395E+025
+  2.494596838258546E+025
+  2.396486993202449E+025
+  2.274033616750277E+025
+  2.126774657292552E+025
+  1.956272212323534E+025
+  1.766365485606249E+025
+  1.563130323662434E+025
+  1.354469375810295E+025
+  1.149333500541777E+025
+  9.566822277374355E+024
+  7.840664995287238E+024
+  6.356165948825557E+024
+  5.117120236599347E+024
+  4.104414646717727E+024
+  3.288762857812761E+024
+  2.638393625235069E+024
+  2.123202225611667E+024
+  1.716653316626048E+024
+  1.396369193292620E+024
+  1.144017430231087E+024
+  9.448730365967177E+023
+  7.872691064161386E+023
+  6.620486683482440E+023
+  5.620704974247718E+023
+  4.817881136008255E+023
+  4.169035976583460E+023
+  3.640895253072450E+023
+  3.207691741243642E+023
+  2.849447378124918E+023
+  2.550641430049703E+023
+  2.299184030679269E+023
+  2.085628550356168E+023
+  1.902569288983149E+023
+  1.744182264194836E+023
+  1.605876261616094E+023
+  1.484028936779022E+023
+  1.375788855358191E+023
+  1.278929275112055E+023
+  1.191743642424441E+023
+  1.112976726803738E+023
+  1.041789713483322E+023
+  9.777633110523651E+022
+  9.209512799307584E+022
+  8.720096038248055E+022
+  8.324464742352084E+022
+  8.050689800845595E+022
+  7.947484776794132E+022
+  8.096930828247327E+022
+  8.635065500478075E+022
+  9.784275892739547E+022
+  1.190271206092303E+023
+  1.555700751852639E+023
+  2.162473838351998E+023
+  3.143093701137658E+023
+  4.691643300623388E+023
+  7.082175035453222E+023
+  1.068451271633292E+024
+  1.596940292577237E+024
+  2.348967157695195E+024
+  3.381821714296878E+024
+  4.741955263288141E+024
+  6.445769428636239E+024
+  8.466686214513243E+024
+  1.073691784919423E+025
+  1.315564109159807E+025
+  1.560303981709228E+025
+  1.795802607790952E+025
+  2.011510386245421E+025
+  2.199665417296743E+025
+  2.355880176401321E+025
+  2.479103593298048E+025
+  2.571116116239147E+025
+  2.635768322249011E+025
+  2.678154446607610E+025
+  2.703855039458555E+025
+  2.718320200056240E+025
+  2.726416250859276E+025
+  2.732130212190617E+025
+  2.738414508463987E+025
+  2.747151769094337E+025
+  2.759219803274002E+025
+  2.774635994034785E+025
+  2.792757666520589E+025
+  2.812511825378414E+025
+  2.832626283600253E+025
+  2.851836411977166E+025
+  2.869047902559557E+025
+  2.883444791036753E+025
+  2.894541242529880E+025
+  2.902183228183151E+025
+  2.906511369004161E+025
+  2.907898980436900E+025
+  2.906879449790373E+025
+  2.904073912287648E+025
+  2.900125334870581E+025
+  2.895642693266292E+025
+  2.891159033954854E+025
+  2.887104796445465E+025
+  2.883795124381240E+025
+  8.586833176292041E+024
+  8.585239390814987E+024
+  8.585603462090301E+024
+  8.588375875385831E+024
+  8.593803906327079E+024
+  8.601843134031363E+024
+  8.612086135969932E+024
+  8.623720216995256E+024
+  8.635524397006891E+024
+  8.645916235318631E+024
+  8.653053506011951E+024
+  8.654988964120904E+024
+  8.649870617638536E+024
+  8.636172781980983E+024
+  8.612935202402793E+024
+  8.579980713502257E+024
+  8.538077520252106E+024
+  8.489011093858516E+024
+  8.435534051989016E+024
+  8.381171359437232E+024
+  8.329872980900963E+024
+  8.285525574858852E+024
+  8.251356369380352E+024
+  8.229282513474599E+024
+  8.219274393751923E+024
+  8.218809114510106E+024
+  8.222489994119668E+024
+  8.221901179398392E+024
+  8.205756304383336E+024
+  8.160388840904120E+024
+  8.070618646998610E+024
+  7.921008842199287E+024
+  7.697490240560107E+024
+  7.389267505553392E+024
+  6.990828038258444E+024
+  6.503761299969838E+024
+  5.937995042958683E+024
+  5.312021755697430E+024
+  4.651785510468712E+024
+  3.988158377788399E+024
+  3.353325304945870E+024
+  2.775640879098366E+024
+  2.272146099837259E+024
+  1.846819637675663E+024
+  1.495297289285085E+024
+  1.209187383023290E+024
+  9.787613272172782E+023
+  7.944706104206950E+023
+  6.476964506733336E+023
+  5.310363609621124E+023
+  4.383330868388059E+023
+  3.645748864029698E+023
+  3.057431008548087E+023
+  2.586487953214223E+023
+  2.207794843106887E+023
+  1.901649572564022E+023
+  1.652646367229416E+023
+  1.448755512011291E+023
+  1.280585253310087E+023
+  1.140797427083935E+023
+  1.023649105122365E+023
+  9.246355760025536E+022
+  8.402137291713773E+022
+  7.675886412948725E+022
+  7.045495468652451E+022
+  6.493442882828040E+022
+  6.005837649997839E+022
+  5.571698803666559E+022
+  5.182421114872788E+022
+  4.831392380599950E+022
+  4.513741405864366E+022
+  4.226211522336099E+022
+  3.967175447735047E+022
+  3.736838094891989E+022
+  3.537721310009969E+022
+  3.375598021058935E+022
+  3.261155766286631E+022
+  3.212836774246921E+022
+  3.261539935762930E+022
+  3.458189845008053E+022
+  3.885571842979005E+022
+  4.676249329771459E+022
+  6.038687207186566E+022
+  8.293627583968164E+022
+  1.192181007544884E+023
+  1.762152983853396E+023
+  2.636923625098863E+023
+  3.946724525398928E+023
+  5.854891033805093E+023
+  8.549386602446537E+023
+  1.221877048565316E+024
+  1.700501568015712E+024
+  2.293549756193320E+024
+  2.988046573308239E+024
+  3.756508459986833E+024
+  4.560479665008460E+024
+  5.356070232080337E+024
+  6.100574521961665E+024
+  6.758482528989504E+024
+  7.305581612047692E+024
+  7.730589494378005E+024
+  8.034502807275243E+024
+  8.228327670205379E+024
+  8.330004758387963E+024
+  8.361227823255232E+024
+  8.344619030624560E+024
+  8.301487084020222E+024
+  8.250221998735579E+024
+  8.205287717377214E+024
+  8.176741305133153E+024
+  8.170205154750147E+024
+  8.187221341090472E+024
+  8.225911875181671E+024
+  8.281854185045180E+024
+  8.349065042958828E+024
+  8.420978420748808E+024
+  8.491310831141216E+024
+  8.554732929731058E+024
+  8.607303124841158E+024
+  8.646658229064440E+024
+  8.671989006557142E+024
+  8.683850451946929E+024
+  8.683867348095524E+024
+  8.674394782983526E+024
+  8.658180400489370E+024
+  8.638056583754028E+024
+  8.616680087754212E+024
+  8.596334571423932E+024
+  8.578802727970482E+024
+  8.565305502078157E+024
+  3.992976136400066E+025
+  3.992934437980258E+025
+  3.993275250462462E+025
+  3.994052694048633E+025
+  3.995269494482010E+025
+  3.996857243651082E+025
+  3.998661575834118E+025
+  4.000434961455031E+025
+  4.001839152759640E+025
+  4.002459942980848E+025
+  4.001835094978268E+025
+  3.999494241456143E+025
+  3.995008212226144E+025
+  3.988043460143884E+025
+  3.978415143644840E+025
+  3.966130765569928E+025
+  3.951415428199912E+025
+  3.934709878454901E+025
+  3.916633855178818E+025
+  3.897910108921694E+025
+  3.879248871203310E+025
+  3.861198113858631E+025
+  3.843970898474259E+025
+  3.827266514630025E+025
+  3.810106042492208E+025
+  3.790704884833627E+025
+  3.766404675926001E+025
+  3.733685303238922E+025
+  3.688275265596485E+025
+  3.625375453899474E+025
+  3.540006731639499E+025
+  3.427483060572573E+025
+  3.283996203338203E+025
+  3.107272750862476E+025
+  2.897229624108612E+025
+  2.656515763405308E+025
+  2.390798488577136E+025
+  2.108653097952740E+025
+  1.820963310692061E+025
+  1.539844239562838E+025
+  1.277241258781164E+025
+  1.043054132879200E+025
+  8.425049060030999E+024
+  6.757775682564596E+024
+  5.400246664662681E+024
+  4.310921916202249E+024
+  3.445506017664846E+024
+  2.762437116668538E+024
+  2.225335792281527E+024
+  1.803694079312896E+024
+  1.472639856793622E+024
+  1.212282778443445E+024
+  1.006927602689957E+024
+  8.443032997408657E+023
+  7.148755917242848E+023
+  6.112658786715749E+023
+  5.277764071663050E+023
+  4.600108966379316E+023
+  4.045760865565813E+023
+  3.588494807055976E+023
+  3.208000062303473E+023
+  2.888503133617076E+023
+  2.617714878788458E+023
+  2.386028034671216E+023
+  2.185907273269722E+023
+  2.011427012182676E+023
+  1.857922741479887E+023
+  1.721730007403725E+023
+  1.599991908579251E+023
+  1.490521611709544E+023
+  1.391711693191351E+023
+  1.302487945073333E+023
+  1.222312827901990E+023
+  1.151254684827038E+023
+  1.090155597275052E+023
+  1.040956888464294E+023
+  1.007281619832504E+023
+  9.954341565358053E+022
+  1.016064906808919E+023
+  1.086869439951698E+023
+  1.236845745463814E+023
+  1.512808002865876E+023
+  1.989007940212533E+023
+  2.780752326548583E+023
+  4.062652212743139E+023
+  6.091307719298732E+023
+  9.230405708609444E+023
+  1.397288590927422E+024
+  2.094958734760486E+024
+  3.090661511577976E+024
+  4.462558098009286E+024
+  6.275480070885372E+024
+  8.555332193726626E+024
+  1.127139222417669E+025
+  1.433782283362605E+025
+  1.762364296443714E+025
+  2.097065084940667E+025
+  2.421658759214415E+025
+  2.721760959634334E+025
+  2.986507944465433E+025
+  3.209408093280060E+025
+  3.388370320296658E+025
+  3.525103428340295E+025
+  3.624157360680333E+025
+  3.691858438246702E+025
+  3.735319240506681E+025
+  3.761622242781966E+025
+  3.777211519267925E+025
+  3.787487697835411E+025
+  3.796584209626324E+025
+  3.807298717479707E+025
+  3.821153854794259E+025
+  3.838560805122571E+025
+  3.859056391645839E+025
+  3.881580703269736E+025
+  3.904760594284301E+025
+  3.927166945048719E+025
+  3.947520947215949E+025
+  3.964835397225132E+025
+  3.978488267245015E+025
+  3.988235176125495E+025
+  3.994173830763440E+025
+  3.996677181729377E+025
+  3.996312469455014E+025
+  3.993759526090352E+025
+  3.989735607736229E+025
+  3.984931157627943E+025
+  3.979961321860265E+025
+  3.975334888704717E+025
+  3.971438845419993E+025
+  5.815818594896169E+025
+  5.816143651195781E+025
+  5.816779313824637E+025
+  5.817726143810711E+025
+  5.818928847963325E+025
+  5.820258799275761E+025
+  5.821503085187897E+025
+  5.822362777700678E+025
+  5.822462079253525E+025
+  5.821371007373102E+025
+  5.818641876424555E+025
+  5.813857185108966E+025
+  5.806685032854091E+025
+  5.796936186198035E+025
+  5.784614519389284E+025
+  5.769950860328397E+025
+  5.753409744916093E+025
+  5.735659316396857E+025
+  5.717496865055658E+025
+  5.699726583913881E+025
+  5.682991956169069E+025
+  5.667572198790129E+025
+  5.653159349958797E+025
+  5.638638731810468E+025
+  5.621899639183930E+025
+  5.599704693137203E+025
+  5.567645549778003E+025
+  5.520210361117137E+025
+  5.450985383383064E+025
+  5.353009395630890E+025
+  5.219293378324866E+025
+  5.043505568664867E+025
+  4.820799081037529E+025
+  4.548722672257241E+025
+  4.228106152221144E+025
+  3.863759158009867E+025
+  3.464784729607988E+025
+  3.044315670847764E+025
+  2.618558256648254E+025
+  2.205180107131601E+025
+  1.821279055207492E+025
+  1.480729156950109E+025
+  1.190518643359334E+025
+  9.503781492426444E+024
+  7.557471812857011E+024
+  6.002819043048490E+024
+  4.773376033487010E+024
+  3.807450591692973E+024
+  3.051457058562997E+024
+  2.460741899010440E+024
+  1.999103934944175E+024
+  1.637742476170249E+024
+  1.354042787305989E+024
+  1.130407812163789E+024
+  9.532283682340613E+023
+  8.120201386376156E+023
+  6.987233734733974E+023
+  6.071467735643231E+023
+  5.325324078917219E+023
+  4.712188743870940E+023
+  4.203824684432186E+023
+  3.778393693792798E+023
+  3.418950570702948E+023
+  3.112300218594190E+023
+  2.848132374460817E+023
+  2.618368321351295E+023
+  2.416669638039077E+023
+  2.238071431875576E+023
+  2.078712363928597E+023
+  1.935641999890090E+023
+  1.806693633427622E+023
+  1.690418984212742E+023
+  1.586091728299000E+023
+  1.493802022064696E+023
+  1.414687466115456E+023
+  1.351382295225423E+023
+  1.308822878614819E+023
+  1.295632788518207E+023
+  1.326434961728606E+023
+  1.425610933615013E+023
+  1.633249980972287E+023
+  2.014287968338754E+023
+  2.672071155648769E+023
+  3.767666454726247E+023
+  5.545931874459387E+023
+  8.368248674901419E+023
+  1.274929664848767E+024
+  1.939057897602984E+024
+  2.919589688735801E+024
+  4.324351872523359E+024
+  6.267769071924937E+024
+  8.847246364208220E+024
+  1.210671741258326E+025
+  1.601057091481129E+025
+  2.044424257133361E+025
+  2.522673772292518E+025
+  3.013474308622049E+025
+  3.493484112694229E+025
+  3.941557827471581E+025
+  4.341221185630017E+025
+  4.682016953082370E+025
+  4.959694040749585E+025
+  5.175486692958073E+025
+  5.334852122299251E+025
+  5.446020462131771E+025
+  5.518617805766064E+025
+  5.562510649264413E+025
+  5.586927579108186E+025
+  5.599856271282181E+025
+  5.607687332122806E+025
+  5.615069474568615E+025
+  5.624941036694469E+025
+  5.638703079361588E+025
+  5.656496565954309E+025
+  5.677541840925483E+025
+  5.700496202395730E+025
+  5.723787939763765E+025
+  5.745893840279121E+025
+  5.765540215717452E+025
+  5.781821534706641E+025
+  5.794242632457428E+025
+  5.802699022230497E+025
+  5.807415199077423E+025
+  5.808862116566848E+025
+  5.807670494041486E+025
+  5.804548809948217E+025
+  5.800211444489820E+025
+  5.795323478652429E+025
+  5.790464335986754E+025
+  5.786107659316698E+025
+  7.611089473784455E+024
+  7.609713951260818E+024
+  7.610047904268283E+024
+  7.612482726901237E+024
+  7.617231754162864E+024
+  7.624252942930484E+024
+  7.633186671171794E+024
+  7.643319026655530E+024
+  7.653579512334524E+024
+  7.662582425873097E+024
+  7.668716270769803E+024
+  7.670279597156857E+024
+  7.665656566262584E+024
+  7.653519274748924E+024
+  7.633036867388751E+024
+  7.604065499649518E+024
+  7.567289390741237E+024
+  7.524282284710065E+024
+  7.477461639023705E+024
+  7.429915769528086E+024
+  7.385097202123379E+024
+  7.346392583175208E+024
+  7.316598423028053E+024
+  7.297349621568204E+024
+  7.288561033083383E+024
+  7.287949057644344E+024
+  7.290699913820925E+024
+  7.289345308693407E+024
+  7.273897292326880E+024
+  7.232284182691106E+024
+  7.151117867261613E+024
+  7.016804759830737E+024
+  6.816980021356985E+024
+  6.542188869304393E+024
+  6.187656523836924E+024
+  5.754888433029473E+024
+  5.252753419585035E+024
+  4.697673713033177E+024
+  4.112632061937078E+024
+  3.524935276591651E+024
+  2.963017657609932E+024
+  2.451899469455182E+024
+  2.006584560508451E+024
+  1.630529661515695E+024
+  1.319824830779053E+024
+  1.067010937635367E+024
+  8.634578046300594E+023
+  7.007036179634755E+023
+  5.711156337757785E+023
+  4.681416290685726E+023
+  3.863339146598424E+023
+  3.212599621957474E+023
+  2.693667540925103E+023
+  2.278357337392307E+023
+  1.944468730061451E+023
+  1.674597735676035E+023
+  1.455139092660064E+023
+  1.275471649248364E+023
+  1.127305282822052E+023
+  1.004164029466404E+023
+  9.009808103656454E+022
+  8.137818535991588E+022
+  7.394422543027962E+022
+  6.754974334036309E+022
+  6.199982586732271E+022
+  5.714001757707027E+022
+  5.284788456379633E+022
+  4.902665375686334E+022
+  4.560049672943949E+022
+  4.251115174096418E+022
+  3.971569923239418E+022
+  3.718544499448932E+022
+  3.490605023800791E+022
+  3.287931960030721E+022
+  3.112747607293264E+022
+  2.970140038827126E+022
+  2.869530514593983E+022
+  2.827178993433338E+022
+  2.870332689981080E+022
+  3.043905202373700E+022
+  3.420921895848015E+022
+  4.118336762333086E+022
+  5.320099513454464E+022
+  7.309286243627460E+022
+  1.051026952995616E+023
+  1.553961469571997E+023
+  2.325972326187772E+023
+  3.482118424302391E+023
+  5.166766197440239E+023
+  7.546146028569261E+023
+  1.078717188012353E+024
+  1.501580001418722E+024
+  2.025694366953940E+024
+  2.639681700520935E+024
+  3.319342177390480E+024
+  4.030762517647710E+024
+  4.735194487348798E+024
+  5.394894029503325E+024
+  5.978431976942925E+024
+  6.464325192111569E+024
+  6.842491615166773E+024
+  7.113688736712965E+024
+  7.287521478261243E+024
+  7.379735536143187E+024
+  7.409413176471068E+024
+  7.396481170761757E+024
+  7.359731202363414E+024
+  7.315401018584259E+024
+  7.276282523704233E+024
+  7.251294112556471E+024
+  7.245452369908927E+024
+  7.260180644084649E+024
+  7.293887329904682E+024
+  7.342734083036411E+024
+  7.401500060925391E+024
+  7.464441478370409E+024
+  7.526052836967514E+024
+  7.581658321456149E+024
+  7.627794332339823E+024
+  7.662378646289150E+024
+  7.684690547512118E+024
+  7.695205617951690E+024
+  7.695338335084544E+024
+  7.687144911483449E+024
+  7.673027478727195E+024
+  7.655464372420252E+024
+  7.636781900744263E+024
+  7.618981204192126E+024
+  7.603626093838333E+024
+  7.591789626632415E+024
+  1.131230062218147E+022
+  1.131065963700777E+022
+  1.131126333918423E+022
+  1.131460522223014E+022
+  1.132093809781136E+022
+  1.133017145169977E+022
+  1.134178971307762E+022
+  1.135480529258951E+022
+  1.136775812053561E+022
+  1.137877414392826E+022
+  1.138568837103650E+022
+  1.138622977097973E+022
+  1.137825847862538E+022
+  1.136003729230734E+022
+  1.133050992229679E+022
+  1.128955042966154E+022
+  1.123814331617412E+022
+  1.117845276125526E+022
+  1.111374392202380E+022
+  1.104813034419117E+022
+  1.098613961859336E+022
+  1.093211299302552E+022
+  1.088948057369932E+022
+  1.085997781964054E+022
+  1.084288702491906E+022
+  1.083439646003204E+022
+  1.082716924567439E+022
+  1.081020591561163E+022
+  1.076907252179352E+022
+  1.068655257151790E+022
+  1.054376466127339E+022
+  1.032176132010823E+022
+  1.000357668069067E+022
+  9.576609600302018E+021
+  9.035110871375630E+021
+  8.382401928727683E+021
+  7.632329540853973E+021
+  6.809426869110685E+021
+  5.947382368828977E+021
+  5.085751184211038E+021
+  4.265335513064404E+021
+  3.521689433191400E+021
+  2.875733776915612E+021
+  2.331722667447033E+021
+  1.883379315566123E+021
+  1.519438757869757E+021
+  1.227076707117688E+021
+  9.938230999309852E+020
+  8.084916276855665E+020
+  6.615199653353816E+020
+  5.449854669586929E+020
+  4.524614359235173E+020
+  3.788104567833465E+020
+  3.199673263114397E+020
+  2.727375824046261E+020
+  2.346224125871300E+020
+  2.036724627288322E+020
+  1.783689299940524E+020
+  1.575285560010280E+020
+  1.402286592246325E+020
+  1.257485111557963E+020
+  1.135237984078537E+020
+  1.031114286550547E+020
+  9.416244003617522E+019
+  8.640122271279327E+019
+  7.960964445648280E+019
+  7.361498884570631E+019
+  6.828087178629768E+019
+  6.350051235166858E+019
+  5.919191521387811E+019
+  5.529469723551872E+019
+  5.176849001537363E+019
+  4.859311406515431E+019
+  4.577110708486332E+019
+  4.333378329399957E+019
+  4.135292389360267E+019
+  3.996161375441216E+019
+  3.938984759977027E+019
+  4.002354161103068E+019
+  4.249965044236850E+019
+  4.785512768962096E+019
+  5.775287596671656E+019
+  7.481197061827464E+019
+  1.030688757979054E+020
+  1.485849331291706E+020
+  2.201833306606427E+020
+  3.302326368015852E+020
+  4.952787953537599E+020
+  7.361527046047241E+020
+  1.076952258128898E+021
+  1.542058360661717E+021
+  2.150200044126100E+021
+  2.905820089296731E+021
+  3.793567918702541E+021
+  4.779635370161697E+021
+  5.816034450940061E+021
+  6.847444393237990E+021
+  7.819506381866291E+021
+  8.686449584421850E+021
+  9.416388748302369E+021
+  9.993551705748619E+021
+  1.041762905777111E+022
+  1.070105590254262E+022
+  1.086523496538353E+022
+  1.093658164161935E+022
+  1.094298328031753E+022
+  1.091096853150546E+022
+  1.086366402136054E+022
+  1.081949529411740E+022
+  1.079154473336975E+022
+  1.078747431188087E+022
+  1.080992412682470E+022
+  1.085729184659746E+022
+  1.092478152988193E+022
+  1.100559127583533E+022
+  1.109209993845687E+022
+  1.117692285015756E+022
+  1.125373693859418E+022
+  1.131782035453958E+022
+  1.136629930539573E+022
+  1.139813458033479E+022
+  1.141390708949736E+022
+  1.141547519558613E+022
+  1.140557606555509E+022
+  1.138742765327590E+022
+  1.136436504848914E+022
+  1.133953213671558E+022
+  1.131564758650623E+022
+  1.129485318064057E+022
+  1.127864087116451E+022
+  5.595676388038075E+023
+  5.594564785562531E+023
+  5.594770108345286E+023
+  5.596599766221627E+023
+  5.600225726859410E+023
+  5.605624794476382E+023
+  5.612530081745591E+023
+  5.620401595527584E+023
+  5.628422822871719E+023
+  5.635530435491775E+023
+  5.640480586848373E+023
+  5.641950827001163E+023
+  5.638672806841755E+023
+  5.629586208769469E+023
+  5.613999028570662E+023
+  5.591734768157548E+023
+  5.563244106711098E+023
+  5.529657774045805E+023
+  5.492759441237818E+023
+  5.454863228226161E+023
+  5.418590087488260E+023
+  5.386550112627833E+023
+  5.360952066667881E+023
+  5.343174826405612E+023
+  5.333345632681972E+023
+  5.329975315199755E+023
+  5.329700603521104E+023
+  5.327179287562389E+023
+  5.315177302075772E+023
+  5.284879339722246E+023
+  5.226445927004383E+023
+  5.129826599669362E+023
+  4.985814874394683E+023
+  4.787289807930689E+023
+  4.530528388354106E+023
+  4.216399100308704E+023
+  3.851180570169603E+023
+  3.446726621343063E+023
+  3.019760890664587E+023
+  2.590251675957116E+023
+  2.179071061737975E+023
+  1.804652441476069E+023
+  1.478115965068467E+023
+  1.202111343914213E+023
+  9.738679904396825E+022
+  7.879905634842979E+022
+  6.382040753594179E+022
+  5.183394799880182E+022
+  4.228221083118678E+022
+  3.468597126874325E+022
+  2.864631136022688E+022
+  2.383830172422428E+022
+  2.000122765731937E+022
+  1.692807475270334E+022
+  1.445564349034719E+022
+  1.245588370137403E+022
+  1.082861190782665E+022
+  9.495556120247380E+021
+  8.395575723019191E+021
+  7.480874195692511E+021
+  6.714026562777323E+021
+  6.065662579980056E+021
+  5.512670633268348E+021
+  5.036811262453387E+021
+  4.623650981270871E+021
+  4.261745840395939E+021
+  3.942019825846023E+021
+  3.657295971671571E+021
+  3.401948586941198E+021
+  3.171654133835779E+021
+  2.963227212453235E+021
+  2.774538342027554E+021
+  2.604523878726924E+021
+  2.453318486101041E+021
+  2.322571452538933E+021
+  2.216056054304071E+021
+  2.140754449126346E+021
+  2.108709454131789E+021
+  2.140089515529881E+021
+  2.268121031412585E+021
+  2.546797646802005E+021
+  3.062546052891295E+021
+  3.951224922339268E+021
+  5.421778036822567E+021
+  7.787234846656284E+021
+  1.150205178936330E+022
+  1.720133812558900E+022
+  2.573156985824377E+022
+  3.815348220110506E+022
+  5.568634795904426E+022
+  7.955107724156905E+022
+  1.106630376642256E+023
+  1.491901777878303E+023
+  1.942781056286364E+023
+  2.441308367657594E+023
+  2.962431905698576E+023
+  3.477627375623588E+023
+  3.959208707014827E+023
+  4.384230533575004E+023
+  4.737137698832042E+023
+  5.010803156527145E+023
+  5.206079692663419E+023
+  5.330303246857614E+023
+  5.395278440493823E+023
+  5.415201182083730E+023
+  5.404818799449246E+023
+  5.377973367481881E+023
+  5.346562140077492E+023
+  5.319889096751791E+023
+  5.304360811920935E+023
+  5.303478451442050E+023
+  5.318079356088816E+023
+  5.346777944871616E+023
+  5.386546082398384E+023
+  5.433362493973965E+023
+  5.482855879702916E+023
+  5.530871911448759E+023
+  5.573911092425188E+023
+  5.609408918886655E+023
+  5.635855668696432E+023
+  5.652774680389979E+023
+  5.660592326189415E+023
+  5.660439774524601E+023
+  5.653925923639344E+023
+  5.642912303856232E+023
+  5.629308479708443E+023
+  5.614899415952955E+023
+  5.601214881888405E+023
+  5.589445241730968E+023
+  5.580401945495832E+023
+  6.239097555565558E+021
+  6.237926133874369E+021
+  6.238162181651210E+021
+  6.240131659384634E+021
+  6.244014671668419E+021
+  6.249781104216564E+021
+  6.257138246405226E+021
+  6.265498893924922E+021
+  6.273977302400261E+021
+  6.281420698972914E+021
+  6.286480111950184E+021
+  6.287719472117307E+021
+  6.283757826886544E+021
+  6.273434428847670E+021
+  6.255980733308325E+021
+  6.231178418799915E+021
+  6.199479320965525E+021
+  6.162062251258085E+021
+  6.120803902292818E+021
+  6.078147246258246E+021
+  6.036861215461668E+021
+  5.999699219224244E+021
+  5.968979401147189E+021
+  5.946124003199955E+021
+  5.931206236931380E+021
+  5.922558829345296E+021
+  5.916498450644947E+021
+  5.907215649834442E+021
+  5.886872789740232E+021
+  5.845944412767591E+021
+  5.773824964050826E+021
+  5.659714097288790E+021
+  5.493763391956313E+021
+  5.268423465486391E+021
+  4.979864447318206E+021
+  4.629262630111467E+021
+  4.223674624230928E+021
+  3.776197091784975E+021
+  3.305178928493651E+021
+  2.832436181864993E+021
+  2.380695802650610E+021
+  1.969957070926912E+021
+  1.612193828098683E+021
+  1.310126542930155E+021
+  1.060578018219630E+021
+  8.575353030142708E+020
+  6.940552622439158E+020
+  5.633365959288035E+020
+  4.592477354465845E+020
+  3.765269445430472E+020
+  3.108004525142380E+020
+  2.585100136830828E+020
+  2.168036207633650E+020
+  1.834188645484175E+020
+  1.565737266641404E+020
+  1.348711093192917E+020
+  1.172187620276379E+020
+  1.027639088348184E+020
+  9.084084542935892E+019
+  8.092946857337831E+019
+  7.262276007316752E+019
+  6.560146681740298E+019
+  5.961448765059446E+019
+  5.446374443355390E+019
+  4.999255579729292E+019
+  4.607673945276518E+019
+  4.261784129065469E+019
+  3.953803009768808E+019
+  3.677631219433357E+019
+  3.428582038398421E+019
+  3.203202907180006E+019
+  2.999185900030370E+019
+  2.815378365693482E+019
+  2.651926781435469E+019
+  2.510620455467450E+019
+  2.395553835957948E+019
+  2.314305965319960E+019
+  2.279954219802936E+019
+  2.314408448420699E+019
+  2.453778606376649E+019
+  2.756768555786705E+019
+  3.317385323796268E+019
+  4.283472450004655E+019
+  5.882523004307988E+019
+  8.455554757957024E+019
+  1.249799150452858E+020
+  1.870274877326133E+020
+  2.799425280830578E+020
+  4.153238617734130E+020
+  6.065276447025484E+020
+  8.669675987985797E+020
+  1.206772941215938E+021
+  1.627966159766270E+021
+  2.121444099855955E+021
+  2.667826156144156E+021
+  3.239953027211472E+021
+  3.806802921828384E+021
+  4.338174331672130E+021
+  4.808940456185402E+021
+  5.201952862865048E+021
+  5.509198002117472E+021
+  5.731336549594267E+021
+  5.876097126364686E+021
+  5.956099551727055E+021
+  5.986602724017179E+021
+  5.983505642864616E+021
+  5.961762094037055E+021
+  5.934247584097711E+021
+  5.911051256629873E+021
+  5.899142202023318E+021
+  5.902357572811610E+021
+  5.921661534759289E+021
+  5.955620108632052E+021
+  6.001026772230224E+021
+  6.053602498672632E+021
+  6.108688780029138E+021
+  6.161858320115645E+021
+  6.209386321984560E+021
+  6.248551741965081E+021
+  6.277765789120916E+021
+  6.296548107962112E+021
+  6.305386478265887E+021
+  6.305523287464476E+021
+  6.298711273270147E+021
+  6.286971707779587E+021
+  6.272374838698488E+021
+  6.256854802595597E+021
+  6.242069865227166E+021
+  6.229312588930735E+021
+  6.219467913747646E+021
+  4.938215222184260E+025
+  4.938270903587057E+025
+  4.938704927346105E+025
+  4.939557327710261E+025
+  4.940811923798593E+025
+  4.942375750903892E+025
+  4.944064281974534E+025
+  4.945595315570949E+025
+  4.946593569045187E+025
+  4.946608870486194E+025
+  4.945148713671571E+025
+  4.941723509281488E+025
+  4.935901371757212E+025
+  4.927367308071006E+025
+  4.915979306970259E+025
+  4.901812015215220E+025
+  4.885177873502513E+025
+  4.866615905578754E+025
+  4.846840089699765E+025
+  4.826642707798381E+025
+  4.806753269581522E+025
+  4.787660065419333E+025
+  4.769408212849531E+025
+  4.751394125131669E+025
+  4.732180642694687E+025
+  4.709359042169687E+025
+  4.679483822655072E+025
+  4.638104202396988E+025
+  4.579913420058163E+025
+  4.499033358226046E+025
+  4.389446399957466E+025
+  4.245575840886135E+025
+  4.062996785212404E+025
+  3.839228380053197E+025
+  3.574516087030208E+025
+  3.272466484868941E+025
+  2.940363006620423E+025
+  2.588993446918544E+025
+  2.231882311804469E+025
+  1.883949480548202E+025
+  1.559788842230431E+025
+  1.271386667960499E+025
+  1.024941546598717E+025
+  8.204763476230688E+024
+  6.543265174056356E+024
+  5.212632951732420E+024
+  4.157565192209358E+024
+  3.326420238093588E+024
+  2.674151436929961E+024
+  2.163088547085533E+024
+  1.762595902457451E+024
+  1.448229306532823E+024
+  1.200741127374566E+024
+  1.005113618369062E+024
+  8.497013918577350E+023
+  7.255093828910725E+023
+  6.256046637850445E+023
+  5.446477669129381E+023
+  4.785248699448023E+023
+  4.240622040302537E+023
+  3.788059919081070E+023
+  3.408538172815188E+023
+  3.087259304029569E+023
+  2.812673352544180E+023
+  2.575734928735440E+023
+  2.369341091014332E+023
+  2.187907859654540E+023
+  2.027053549573306E+023
+  1.883365409086942E+023
+  1.754233013297491E+023
+  1.637738352213740E+023
+  1.532599651458054E+023
+  1.438175099288822E+023
+  1.354545859963234E+023
+  1.282717998853445E+023
+  1.225014515263075E+023
+  1.185777493559263E+023
+  1.172574023628191E+023
+  1.198206571922471E+023
+  1.283976266326554E+023
+  1.464837167918606E+023
+  1.797295695133970E+023
+  2.371102263810332E+023
+  3.325839910417676E+023
+  4.873225177753761E+023
+  7.324948002462800E+023
+  1.112367834643063E+024
+  1.687083455255939E+024
+  2.533829605081836E+024
+  3.744240333282675E+024
+  5.414850797117559E+024
+  7.626655048842375E+024
+  1.041387359841493E+025
+  1.374204330221258E+025
+  1.750929924394279E+025
+  2.155793342103596E+025
+  2.569574806962867E+025
+  2.972403131378946E+025
+  3.346499011495063E+025
+  3.678252837502239E+025
+  3.959310830279229E+025
+  4.186662662883475E+025
+  4.361956756113606E+025
+  4.490367530340315E+025
+  4.579320300729375E+025
+  4.637295472744123E+025
+  4.672835559973171E+025
+  4.693799425794822E+025
+  4.706859655736826E+025
+  4.717217247131814E+025
+  4.728502282831225E+025
+  4.742829576331935E+025
+  4.760977907351086E+025
+  4.782658457836948E+025
+  4.806833971377937E+025
+  4.832048153182105E+025
+  4.856727626276952E+025
+  4.879427129118911E+025
+  4.899000931735478E+025
+  4.914696487433315E+025
+  4.926177263478507E+025
+  4.933489377928395E+025
+  4.936991185420484E+025
+  4.937265622264800E+025
+  4.935030712545171E+025
+  4.931056562332546E+025
+  4.926093976459776E+025
+  4.920820457080322E+025
+  4.915805502996961E+025
+  4.911492918522198E+025
+  9.131542551704847E+024
+  9.131083666969386E+024
+  9.131890791572342E+024
+  9.134188852246848E+024
+  9.138049873609201E+024
+  9.143335476781193E+024
+  9.149655424899763E+024
+  9.156350753871712E+024
+  9.162508119530440E+024
+  9.167012698848179E+024
+  9.168641804942268E+024
+  9.166195309911374E+024
+  9.158654346102820E+024
+  9.145354112556787E+024
+  9.126150334484707E+024
+  9.101554021527262E+024
+  9.072806756014233E+024
+  9.041869398829574E+024
+  9.011301653416310E+024
+  8.984019134980942E+024
+  8.962928382150494E+024
+  8.950457319689659E+024
+  8.948016622782643E+024
+  8.955443253333288E+024
+  8.970488359796657E+024
+  8.988416090328739E+024
+  9.001777778565145E+024
+  9.000419295177442E+024
+  8.971770711211956E+024
+  8.901458148111419E+024
+  8.774265783060756E+024
+  8.575455053590299E+024
+  8.292408750175538E+024
+  7.916501466695915E+024
+  7.445003395861463E+024
+  6.882714810903613E+024
+  6.242938609572633E+024
+  5.547384204208074E+024
+  4.824715706147862E+024
+  4.107734150672271E+024
+  3.429576021726551E+024
+  2.818515616736126E+024
+  2.290590537728038E+024
+  1.848248848425241E+024
+  1.485499063129570E+024
+  1.192472532452101E+024
+  9.582137919441327E+023
+  7.722134167042255E+023
+  6.251321414705651E+023
+  5.090461028192626E+023
+  4.174324897602941E+023
+  3.450310730360696E+023
+  2.876598818011256E+023
+  2.420269651881261E+023
+  2.055584372174393E+023
+  1.762506825701295E+023
+  1.525480236610967E+023
+  1.332439462807392E+023
+  1.174026903686303E+023
+  1.042977456489888E+023
+  9.336402048562123E+022
+  8.416087891227782E+022
+  7.634371184009856E+022
+  6.964215314319979E+022
+  6.384344168530762E+022
+  5.877975874056845E+022
+  5.431863875202045E+022
+  5.035576748394177E+022
+  4.680965688948786E+022
+  4.361783546297275E+022
+  4.073433518901504E+022
+  3.812841529804838E+022
+  3.578467114261585E+022
+  3.370497963842114E+022
+  3.191319795774048E+022
+  3.046425565640199E+022
+  2.946039313162664E+022
+  2.907896524679428E+022
+  2.961862572533014E+022
+  3.157397144085519E+022
+  3.575282797648626E+022
+  4.345487078156737E+022
+  5.673396648053124E+022
+  7.876683324222144E+022
+  1.143424935066047E+023
+  1.704626858371822E+023
+  2.569918956091275E+023
+  3.872041897591509E+023
+  5.779327445206955E+023
+  8.488395556465425E+023
+  1.220118723816557E+024
+  1.707810227605530E+024
+  2.316858934583532E+024
+  3.036508145717813E+024
+  3.841048957864891E+024
+  4.692914670130036E+024
+  5.547900121090060E+024
+  6.361680764016822E+024
+  7.095969787376209E+024
+  7.722962781925102E+024
+  8.227415504644571E+024
+  8.606436645996790E+024
+  8.867585376999533E+024
+  9.026049137610414E+024
+  9.101599401612057E+024
+  9.115809200950238E+024
+  9.089785170089463E+024
+  9.042490603152176E+024
+  8.989635091520991E+024
+  8.943066687157128E+024
+  8.910596798812579E+024
+  8.896191323885695E+024
+  8.900459366695611E+024
+  8.921360268710803E+024
+  8.955035945495958E+024
+  8.996667502017085E+024
+  9.041260015083297E+024
+  9.084279293865205E+024
+  9.122095302124995E+024
+  9.152220746003903E+024
+  9.173362439484608E+024
+  9.185323618618487E+024
+  9.188806815203390E+024
+  9.185168178815679E+024
+  9.176163784477203E+024
+  9.163712165373952E+024
+  9.149688555778863E+024
+  9.135765638970751E+024
+  9.123307177385364E+024
+  9.113311873828127E+024
+  3.400277630677111E+025
+  3.400420482062554E+025
+  3.400774211365374E+025
+  3.401348112781780E+025
+  3.402116147844009E+025
+  3.403005553658540E+025
+  3.403889604404493E+025
+  3.404586277740177E+025
+  3.404863954070451E+025
+  3.404455834670198E+025
+  3.403083287070128E+025
+  3.400486666591785E+025
+  3.396461176254222E+025
+  3.390894042175430E+025
+  3.383797764696464E+025
+  3.375333114015533E+025
+  3.365815172055617E+025
+  3.355696159368619E+025
+  3.345520195052595E+025
+  3.335847699306271E+025
+  3.327150822125076E+025
+  3.319685697786614E+025
+  3.313351843395391E+025
+  3.307552893578935E+025
+  3.301075448053256E+025
+  3.292003775106411E+025
+  3.277687581080725E+025
+  3.254778529814448E+025
+  3.219349234826132E+025
+  3.167106100289877E+025
+  3.093703654173631E+025
+  2.995160717584489E+025
+  2.868365129084716E+025
+  2.711631786520294E+025
+  2.525249023328799E+025
+  2.311915942333555E+025
+  2.076949852035792E+025
+  1.828145645622192E+025
+  1.575214064999317E+025
+  1.328817327003692E+025
+  1.099342214265551E+025
+  8.952865192798449E+024
+  7.210238620121637E+024
+  5.765468123579685E+024
+  4.592365239078806E+024
+  3.653694754952454E+024
+  2.910131138612524E+024
+  2.324986693355795E+024
+  1.866285345641058E+024
+  1.507308411467073E+024
+  1.226344359604076E+024
+  1.006084297843097E+024
+  8.329112217968704E+023
+  6.962106402340691E+023
+  5.877597823014001E+023
+  5.012138303531259E+023
+  4.316877852769185E+023
+  3.754235925780448E+023
+  3.295291448330765E+023
+  2.917758183311952E+023
+  2.604426145493567E+023
+  2.341968433684493E+023
+  2.120031520874253E+023
+  1.930543796811644E+023
+  1.767191375720614E+023
+  1.625021843623431E+023
+  1.500145966005926E+023
+  1.389514776255386E+023
+  1.290755372044842E+023
+  1.202053688754874E+023
+  1.122077112371528E+023
+  1.049934796484967E+023
+  9.851799646103022E+022
+  9.278677366456975E+022
+  8.786962017581018E+022
+  8.392805834225854E+022
+  8.126445777297048E+022
+  8.040646568848471E+022
+  8.224784129433812E+022
+  8.827721937546909E+022
+  1.009397356301008E+023
+  1.241918008632629E+023
+  1.643231663433149E+023
+  2.311249457784338E+023
+  3.394625481430196E+023
+  5.112436868085204E+023
+  7.776174893289169E+023
+  1.180956756972372E+024
+  1.775722170128732E+024
+  2.626680004516337E+024
+  3.802226106694984E+024
+  5.360007510688632E+024
+  7.324873740291591E+024
+  9.673276610506121E+024
+  1.233393040918971E+025
+  1.519572836360506E+025
+  1.812263525638169E+025
+  2.097336894862927E+025
+  2.362083611511131E+025
+  2.596698730678418E+025
+  2.795073829254548E+025
+  2.954885124905639E+025
+  3.077132618743888E+025
+  3.165356651999086E+025
+  3.224747113948865E+025
+  3.261302452870729E+025
+  3.281126789241543E+025
+  3.289897468895033E+025
+  3.292500887562672E+025
+  3.292818922677446E+025
+  3.293644472283837E+025
+  3.296705076271462E+025
+  3.302773644123404E+025
+  3.311843402679699E+025
+  3.323341289005335E+025
+  3.336352330955041E+025
+  3.349829044012760E+025
+  3.362765180025116E+025
+  3.374321271799271E+025
+  3.383898212217985E+025
+  3.391162629188382E+025
+  3.396033254924729E+025
+  3.398640832240874E+025
+  3.399274820073024E+025
+  3.398327347699441E+025
+  3.396240141371902E+025
+  3.393458028364665E+025
+  3.390393099103924E+025
+  3.387400974671154E+025
+  3.384767723679792E+025
+  1.041212749800939E+025
+  1.041302040402617E+025
+  1.041434006292904E+025
+  1.041603545923998E+025
+  1.041796268325588E+025
+  1.041986200889227E+025
+  1.042134817781615E+025
+  1.042191822708069E+025
+  1.042097910961984E+025
+  1.041789894996949E+025
+  1.041208123868904E+025
+  1.040305631170068E+025
+  1.039058167623920E+025
+  1.037473916614712E+025
+  1.035601278706933E+025
+  1.033532846536433E+025
+  1.031403661395252E+025
+  1.029382064567819E+025
+  1.027651970696297E+025
+  1.026386237056425E+025
+  1.025711951591442E+025
+  1.025669785895288E+025
+  1.026170855542525E+025
+  1.026955578292907E+025
+  1.027559645593610E+025
+  1.027292356141093E+025
+  1.025232272764990E+025
+  1.020244635674779E+025
+  1.011024372500115E+025
+  9.961678827115234E+024
+  9.742756882428591E+024
+  9.440858073653439E+024
+  9.046334362620788E+024
+  8.554255991618107E+024
+  7.966100821058319E+024
+  7.291078929462007E+024
+  6.546713909055750E+024
+  5.758315347543508E+024
+  4.957124143139007E+024
+  4.177204048684163E+024
+  3.451535278299894E+024
+  2.806932777994754E+024
+  2.257066102798914E+024
+  1.801736429970316E+024
+  1.432507093902761E+024
+  1.137479072809443E+024
+  9.041250265301605E+023
+  7.207813074384490E+023
+  5.772984575573151E+023
+  4.652080806010220E+023
+  3.776384844190719E+023
+  3.091191710072479E+023
+  2.553526954018749E+023
+  2.129941735272547E+023
+  1.794563853641469E+023
+  1.527461458002863E+023
+  1.313313540848397E+023
+  1.140353175450358E+023
+  9.995401921770271E+022
+  8.839203659394027E+022
+  7.881328544721299E+022
+  7.080336866779625E+022
+  6.404091255949462E+022
+  5.827581179797619E+022
+  5.331276020949870E+022
+  4.899881761628224E+022
+  4.521406138164104E+022
+  4.186460709187271E+022
+  3.887747066105724E+022
+  3.619690083812596E+022
+  3.378195604842327E+022
+  3.160525643608224E+022
+  2.965304228982494E+022
+  2.792695824491545E+022
+  2.644842385418855E+022
+  2.526713960676818E+022
+  2.447634421146868E+022
+  2.423905323486096E+022
+  2.483186520801843E+022
+  2.671619236183027E+022
+  3.065100221390134E+022
+  3.786603482813675E+022
+  5.031893322100212E+022
+  7.106136294313191E+022
+  1.047333452375280E+023
+  1.581838726007247E+023
+  2.411679271783444E+023
+  3.669810630782367E+023
+  5.527498967104636E+023
+  8.188980356600930E+023
+  1.187077348878182E+024
+  1.675671974687213E+024
+  2.292863966685631E+024
+  3.031665017406422E+024
+  3.870010357726827E+024
+  4.773133185676395E+024
+  5.698159497272677E+024
+  6.600260473195008E+024
+  7.438790787842604E+024
+  8.182041244382662E+024
+  8.809843142107445E+024
+  9.313964291340271E+024
+  9.696762700945611E+024
+  9.968797902494786E+024
+  1.014607396746022E+025
+  1.024741147867802E+025
+  1.029223131668356E+025
+  1.029885670626937E+025
+  1.028333012588407E+025
+  1.025869200542525E+025
+  1.023465609087179E+025
+  1.021761875310688E+025
+  1.021094095019409E+025
+  1.021543652731760E+025
+  1.022999159173524E+025
+  1.025223345255799E+025
+  1.027917036838307E+025
+  1.030773759378520E+025
+  1.033520833759298E+025
+  1.035945410586383E+025
+  1.037906161432712E+025
+  1.039333045629188E+025
+  1.040218681249185E+025
+  1.040605180885788E+025
+  1.040569553417039E+025
+  1.040209391487827E+025
+  1.039629953663329E+025
+  1.038933924804793E+025
+  1.038214343205996E+025
+  1.037550295355951E+025
+  4.563300951127610E+025
+  4.563707477642128E+025
+  4.564246621545794E+025
+  4.564884867909932E+025
+  4.565553235984102E+025
+  4.566138411180947E+025
+  4.566478766951007E+025
+  4.566366834934341E+025
+  4.565558947868324E+025
+  4.563793634501252E+025
+  4.560818552732479E+025
+  4.556423795339277E+025
+  4.550478432718453E+025
+  4.542965844579532E+025
+  4.534011800500870E+025
+  4.523898221449332E+025
+  4.513055436375342E+025
+  4.502026575893367E+025
+  4.491399665098211E+025
+  4.481706160523042E+025
+  4.473289030031599E+025
+  4.466148524902161E+025
+  4.459778781177774E+025
+  4.453012479613096E+025
+  4.443893330978923E+025
+  4.429596876756964E+025
+  4.406419258984957E+025
+  4.369851860891985E+025
+  4.314757637339474E+025
+  4.235662375470444E+025
+  4.127169518126704E+025
+  3.984497597028876E+025
+  3.804121293107853E+025
+  3.584468458568030E+025
+  3.326587389437037E+025
+  3.034658459987572E+025
+  2.716197133620288E+025
+  2.381803220551862E+025
+  2.044373650863639E+025
+  1.717816060117019E+025
+  1.415455122480905E+025
+  1.147978045188908E+025
+  9.206268730240455E+024
+  7.329699732037004E+024
+  5.812525690688122E+024
+  4.603666893445253E+024
+  3.650089401209809E+024
+  2.902815127014881E+024
+  2.319468994859779E+024
+  1.864855115567947E+024
+  1.510523479487724E+024
+  1.233902115688811E+024
+  1.017313847797252E+024
+  8.470389856464450E+023
+  7.124938671803530E+023
+  6.055454297337425E+023
+  5.199570023212961E+023
+  4.509495919218418E+023
+  3.948596477895248E+023
+  3.488748282883967E+023
+  3.108314908158179E+023
+  2.790603102814739E+023
+  2.522690412064919E+023
+  2.294537418429223E+023
+  2.098317107117408E+023
+  1.927909559933745E+023
+  1.778522670018291E+023
+  1.646409392979679E+023
+  1.528659840926150E+023
+  1.423052991305916E+023
+  1.327958725101810E+023
+  1.242287299287460E+023
+  1.165491474245959E+023
+  1.097638165967865E+023
+  1.039584320792529E+023
+  9.933195586705500E+022
+  9.625813577900029E+022
+  9.539141332677040E+022
+  9.784395952148484E+022
+  1.054739695972464E+023
+  1.213427728950403E+023
+  1.504186265746460E+023
+  2.006241217008032E+023
+  2.843322398738237E+023
+  4.203944510566868E+023
+  6.367009695575246E+023
+  9.730810294619309E+023
+  1.483990320134348E+024
+  2.239848042470347E+024
+  3.325063545350786E+024
+  4.829828017467779E+024
+  6.831951550752180E+024
+  9.368551493767331E+024
+  1.241542774395196E+025
+  1.588684917031052E+025
+  1.964455872295454E+025
+  2.351589651824101E+025
+  2.731849348439606E+025
+  3.088521330375061E+025
+  3.408373914585141E+025
+  3.682760664827008E+025
+  3.907831605904713E+025
+  4.084031465326442E+025
+  4.215163545352961E+025
+  4.307291894775409E+025
+  4.367685840562705E+025
+  4.403925171903006E+025
+  4.423212353162011E+025
+  4.431892379618458E+025
+  4.435159376089734E+025
+  4.436923115925140E+025
+  4.439809128830923E+025
+  4.445266725389250E+025
+  4.453757719764189E+025
+  4.464995681271830E+025
+  4.478203643052014E+025
+  4.492359718196811E+025
+  4.506405936153929E+025
+  4.519404746023516E+025
+  4.530637630882488E+025
+  4.539648910772738E+025
+  4.546244235332769E+025
+  4.550457521377968E+025
+  4.552501355438732E+025
+  4.552712730109149E+025
+  4.551500336109231E+025
+  4.549297345629953E+025
+  4.546524616835753E+025
+  4.543565945382258E+025
+  4.540753293882718E+025
+  3.872687843593505E+023
+  3.872363194476075E+023
+  3.872658120060266E+023
+  3.873694426336489E+023
+  3.875522726604816E+023
+  3.878094286440935E+023
+  3.881239900388780E+023
+  3.884659844882510E+023
+  3.887928159262769E+023
+  3.890514771993371E+023
+  3.891826716753510E+023
+  3.891266989096252E+023
+  3.888307467669678E+023
+  3.882569727484558E+023
+  3.873904678766460E+023
+  3.862459641955611E+023
+  3.848720213746233E+023
+  3.833514373378891E+023
+  3.817968116090812E+023
+  3.803405847110433E+023
+  3.791194827806955E+023
+  3.782540588287815E+023
+  3.778248350911133E+023
+  3.778472801475474E+023
+  3.782483716740249E+023
+  3.788477196896459E+023
+  3.793461535611566E+023
+  3.793243872373216E+023
+  3.782539873791652E+023
+  3.755224472746246E+023
+  3.704736426245624E+023
+  3.624640492578407E+023
+  3.509334331123760E+023
+  3.354859023754343E+023
+  3.159731524058792E+023
+  2.925669661906316E+023
+  2.658040309013832E+023
+  2.365853152798647E+023
+  2.061171634852544E+023
+  1.757930013575796E+023
+  1.470314460192111E+023
+  1.210527765294365E+023
+  9.855976062978500E+022
+  7.967496552596864E+022
+  6.415807811529864E+022
+  5.159991646199008E+022
+  4.154165653697006E+022
+  3.354076070961117E+022
+  2.720248825560848E+022
+  2.219092918956843E+022
+  1.822886491129462E+022
+  1.509222587137910E+022
+  1.260249594534986E+022
+  1.061887034657938E+022
+  9.031047163397089E+021
+  7.753004820811452E+021
+  6.717834069829694E+021
+  5.873553341949702E+021
+  5.179778559108286E+021
+  4.605104979832658E+021
+  4.125066813360955E+021
+  3.720557359900470E+021
+  3.376611691470860E+021
+  3.081472273854408E+021
+  2.825874187492730E+021
+  2.602500355405607E+021
+  2.405568475591044E+021
+  2.230520473676743E+021
+  2.073792711064532E+021
+  1.932651536575609E+021
+  1.805084853724081E+021
+  1.689747216484415E+021
+  1.585964954648721E+021
+  1.493820952090406E+021
+  1.414358851965392E+021
+  1.349977781770778E+021
+  1.305136798381827E+021
+  1.287560144740271E+021
+  1.310237577472865E+021
+  1.394654011832430E+021
+  1.575857786750305E+021
+  1.910167699308820E+021
+  2.486471323509585E+021
+  3.442065498682726E+021
+  4.983624058346192E+021
+  7.412811422513181E+021
+  1.115382463851816E+022
+  1.677620438076963E+022
+  2.500020725292989E+022
+  3.666403012088671E+022
+  5.262361400014394E+022
+  7.355023956016214E+022
+  9.963279100125361E+022
+  1.303830158114435E+023
+  1.646728057125019E+023
+  2.008724530031062E+023
+  2.370791849639833E+023
+  2.713993467251639E+023
+  3.022123004972976E+023
+  3.283583359257638E+023
+  3.492234126744119E+023
+  3.647253831803562E+023
+  3.752279618556369E+023
+  3.814162799137375E+023
+  3.841641235072458E+023
+  3.844134916730427E+023
+  3.830770800223631E+023
+  3.809667414669693E+023
+  3.787467139690821E+023
+  3.769087757218781E+023
+  3.757662789498180E+023
+  3.754641498705082E+023
+  3.760018144892806E+023
+  3.772655100382559E+023
+  3.790658230944969E+023
+  3.811759514174405E+023
+  3.833664317205873E+023
+  3.854329911487204E+023
+  3.872155771529660E+023
+  3.886081383054475E+023
+  3.895600250106943E+023
+  3.900707823198152E+023
+  3.901805932319077E+023
+  3.899586628161631E+023
+  3.894913597989493E+023
+  3.888712059373839E+023
+  3.881874054198457E+023
+  3.875185605588993E+023
+  3.869278529941625E+023
+  3.864605784006710E+023
+  1.660565589892066E+022
+  1.660681948301063E+022
+  1.660881593168337E+022
+  1.661161410112152E+022
+  1.661502315395094E+022
+  1.661864871418212E+022
+  1.662187034915286E+022
+  1.662384805805478E+022
+  1.662356217336520E+022
+  1.661989359486200E+022
+  1.661174392604174E+022
+  1.659818697895819E+022
+  1.657863839552949E+022
+  1.655302407718885E+022
+  1.652192112480783E+022
+  1.648664030839771E+022
+  1.644921814494347E+022
+  1.641228979925391E+022
+  1.637882196407218E+022
+  1.635169834563037E+022
+  1.633316897513206E+022
+  1.632419627394052E+022
+  1.632375236431223E+022
+  1.632813989117036E+022
+  1.633041962390658E+022
+  1.632003104829356E+022
+  1.628268800865361E+022
+  1.620062303931882E+022
+  1.605324422497585E+022
+  1.581825735692673E+022
+  1.547328843018266E+022
+  1.499800575862230E+022
+  1.437667298664287E+022
+  1.360095398255038E+022
+  1.267264114519505E+022
+  1.160581652870061E+022
+  1.042783911005121E+022
+  9.178568444690771E+021
+  7.907465891661099E+021
+  6.668678174197854E+021
+  5.514820080700763E+021
+  4.488846019097618E+021
+  3.612844769891249E+021
+  2.886799341309538E+021
+  2.297518851547685E+021
+  1.826237815976623E+021
+  1.453135109788582E+021
+  1.159720229554607E+021
+  9.298800718487859E+020
+  7.501543414072101E+020
+  6.096090281591235E+020
+  4.995309893604534E+020
+  4.130689198330105E+020
+  3.448851810676753E+020
+  2.908473882921264E+020
+  2.477690640348527E+020
+  2.131986395091949E+020
+  1.852515480196561E+020
+  1.624786343899085E+020
+  1.437641285704556E+020
+  1.282471483103444E+020
+  1.152616414217257E+020
+  1.042906239455545E+020
+  9.493141894206538E+019
+  8.686932035605678E+019
+  7.985769642608619E+019
+  7.370301972413796E+019
+  6.825368490373063E+019
+  6.339177357319292E+019
+  5.902717501555585E+019
+  5.509370269398924E+019
+  5.154709755862758E+019
+  4.836513042951882E+019
+  4.555047854386455E+019
+  4.313776006955663E+019
+  4.120721599590901E+019
+  3.990924065664211E+019
+  3.950655002725655E+019
+  4.044454888476453E+019
+  4.346568547652917E+019
+  4.979032405653835E+019
+  6.139441149944380E+019
+  8.142125232514151E+019
+  1.147671252297684E+020
+  1.688708050917405E+020
+  2.547028099137301E+020
+  3.878730834306911E+020
+  5.896333385530100E+020
+  8.873223124662592E+020
+  1.313485959524113E+021
+  1.902541175991865E+021
+  2.683566160386084E+021
+  3.669219796682384E+021
+  4.847855992335239E+021
+  6.183769906201829E+021
+  7.621094591037864E+021
+  9.091228438432149E+021
+  1.052271145270679E+022
+  1.185102710573050E+022
+  1.302614269351501E+022
+  1.401658672334748E+022
+  1.480998876363439E+022
+  1.541084457645930E+022
+  1.583663571586701E+022
+  1.611338372649459E+022
+  1.627143131055159E+022
+  1.634189804150319E+022
+  1.635397645828381E+022
+  1.633306009857830E+022
+  1.629961687957684E+022
+  1.626870256529579E+022
+  1.625001269440194E+022
+  1.624837289947878E+022
+  1.626455869205427E+022
+  1.629632100355687E+022
+  1.633948392127501E+022
+  1.638898625610858E+022
+  1.643976263272799E+022
+  1.648739819739959E+022
+  1.652853365407358E+022
+  1.656103451174744E+022
+  1.658396595010306E+022
+  1.659743230465330E+022
+  1.660234497065290E+022
+  1.660016974574765E+022
+  1.659268198536721E+022
+  1.658174776320091E+022
+  1.656915173773490E+022
+  1.655647958156326E+022
+  1.654504853137902E+022
+  1.162390191833015E+026
+  1.162509408196986E+026
+  1.162650526398772E+026
+  1.162801481281103E+026
+  1.162942135536954E+026
+  1.163042509946108E+026
+  1.163062195393412E+026
+  1.162951280417416E+026
+  1.162652916121832E+026
+  1.162107868791508E+026
+  1.161260971539169E+026
+  1.160068911976183E+026
+  1.158508575325488E+026
+  1.156584862754595E+026
+  1.154336535283874E+026
+  1.151838405665327E+026
+  1.149198198094659E+026
+  1.146546622136719E+026
+  1.144019693559878E+026
+  1.141733118883860E+026
+  1.139749616692317E+026
+  1.138041259408505E+026
+  1.136450100060640E+026
+  1.134651301923310E+026
+  1.132123563634248E+026
+  1.128131776490182E+026
+  1.121726635239493E+026
+  1.111765507986588E+026
+  1.096958388904261E+026
+  1.075942147826292E+026
+  1.047385149117900E+026
+  1.010121889616633E+026
+  9.633127427870372E+025
+  9.066166726300157E+025
+  8.403552698169037E+025
+  7.656365278207827E+025
+  6.844002571080953E+025
+  5.993493786946046E+025
+  5.137473377131549E+025
+  4.310921284890353E+025
+  3.547159902960347E+025
+  2.872727768286151E+025
+  2.300405844671885E+025
+  1.828733847281249E+025
+  1.447962411362414E+025
+  1.145014547425652E+025
+  9.063898286043691E+024
+  7.196628531550520E+024
+  5.741102429850464E+024
+  4.608436353480910E+024
+  3.726912072412920E+024
+  3.039722975797896E+024
+  2.502450375926227E+024
+  2.080671326808347E+024
+  1.747869715844766E+024
+  1.483697977994187E+024
+  1.272574697048837E+024
+  1.102576587191099E+024
+  9.645756376964582E+023
+  8.515739909837217E+023
+  7.581949605408095E+023
+  6.802955710301144E+023
+  6.146727217601125E+023
+  5.588409736052773E+023
+  5.108648884182526E+023
+  4.692328432763573E+023
+  4.327624101484718E+023
+  4.005298783545136E+023
+  3.718184652178165E+023
+  3.460813890221593E+023
+  3.229174697772948E+023
+  3.020585201875408E+023
+  2.833698103473308E+023
+  2.668677856343454E+023
+  2.527636476578496E+023
+  2.415483322173226E+023
+  2.341451776669645E+023
+  2.321729254459222E+023
+  2.383856829286458E+023
+  2.573900216955441E+023
+  2.967831906348265E+023
+  3.689077909616150E+023
+  4.934670726832457E+023
+  7.012673033000463E+023
+  1.039302634711668E+024
+  1.577193805063243E+024
+  2.414515647106948E+024
+  3.687648790821475E+024
+  5.573325031152735E+024
+  8.283962071059228E+024
+  1.204743290415972E+025
+  1.706185966061426E+025
+  2.342474215823134E+025
+  3.108081994536923E+025
+  3.982062935116356E+025
+  4.930204703487110E+025
+  5.909478925448258E+025
+  6.874171516505188E+025
+  7.782123203839474E+025
+  8.599674637626543E+025
+  9.304500517403401E+025
+  9.886221279587796E+025
+  1.034522365678908E+026
+  1.069037711954012E+026
+  1.093632550328003E+026
+  1.110086651626834E+026
+  1.120271943572350E+026
+  1.125980125411818E+026
+  1.128801572444019E+026
+  1.130050446554450E+026
+  1.130729354143109E+026
+  1.131526999128127E+026
+  1.132842491004915E+026
+  1.134829658770777E+026
+  1.137454052590624E+026
+  1.140554869340543E+026
+  1.143904395931050E+026
+  1.147258958967674E+026
+  1.150397552134140E+026
+  1.153146707160524E+026
+  1.155392247974244E+026
+  1.157080125881197E+026
+  1.158209590060548E+026
+  1.158822285568916E+026
+  1.158990115603713E+026
+  1.158803326989587E+026
+  1.158359744020613E+026
+  1.157756354330184E+026
+  1.157083626910005E+026
+  1.156422022064236E+026
+  1.004985443295047E+024
+  1.004977310527002E+024
+  1.005079686183597E+024
+  1.005308393403748E+024
+  1.005664693365616E+024
+  1.006130211088326E+024
+  1.006663511710040E+024
+  1.007199116210823E+024
+  1.007649534689050E+024
+  1.007910990912139E+024
+  1.007872975379519E+024
+  1.007431146331335E+024
+  1.006502654264303E+024
+  1.005042420850276E+024
+  1.003058295752238E+024
+  1.000622559419056E+024
+  9.978770486088678E+023
+  9.950293050837547E+023
+  9.923376623881880E+023
+  9.900841600322760E+023
+  9.885355925781805E+023
+  9.878947222275630E+023
+  9.882454591993432E+023
+  9.894973459256083E+023
+  9.913357017919594E+023
+  9.931841471745887E+023
+  9.941859616615683E+023
+  9.932100439574243E+023
+  9.888863872047057E+023
+  9.796750695354457E+023
+  9.639715259288784E+023
+  9.402486017638792E+023
+  9.072315924788967E+023
+  8.640953044948870E+023
+  8.106620816390137E+023
+  7.475682413400501E+023
+  6.763572521796249E+023
+  5.994572304163267E+023
+  5.200139234832754E+023
+  4.415804285629600E+023
+  3.677066748165291E+023
+  3.013855957640169E+023
+  2.442740999398225E+023
+  1.965653539371992E+023
+  1.575533670618201E+023
+  1.261275013665422E+023
+  1.010726634844698E+023
+  8.123251961111464E+022
+  6.558517419471870E+022
+  5.326739671055895E+022
+  4.357124305646159E+022
+  3.592771314433191E+022
+  2.988584125047135E+022
+  2.509167122118032E+022
+  2.126922260040763E+022
+  1.820423408931898E+022
+  1.573077391577731E+022
+  1.372047349255137E+022
+  1.207401198326405E+022
+  1.071445882198971E+022
+  9.582112034888813E+021
+  8.630520691192816E+021
+  7.823433793081245E+021
+  7.132468081860185E+021
+  6.535330825780854E+021
+  6.014470043236839E+021
+  5.556054188051394E+021
+  5.149207009986753E+021
+  4.785442421563110E+021
+  4.458260408566335E+021
+  4.162880338143433E+021
+  3.896104995007136E+021
+  3.656330741800348E+021
+  3.443751238338196E+021
+  3.260851292858888E+021
+  3.113363897038524E+021
+  3.011981336451204E+021
+  2.975288173536121E+021
+  3.034639346481843E+021
+  3.242056203348328E+021
+  3.682655961051189E+021
+  4.493623320234417E+021
+  5.892149619362720E+021
+  8.214827070099992E+021
+  1.197017811296465E+022
+  1.790348377291809E+022
+  2.706765694982128E+022
+  4.088417959487751E+022
+  6.116294927543597E+022
+  9.002941946406770E+022
+  1.296848645088488E+023
+  1.819097357753609E+023
+  2.473205408462679E+023
+  3.248664731821742E+023
+  4.118913724539960E+023
+  5.044451732792458E+023
+  5.978257375595849E+023
+  6.872671778028750E+023
+  7.685991723780308E+023
+  8.387319850071726E+023
+  8.958940245986051E+023
+  9.396267226825284E+023
+  9.705964326172215E+023
+  9.903043045395609E+023
+  1.000768214437264E+024
+  1.004228940922051E+024
+  1.002908494974158E+024
+  9.988296213693755E+023
+  9.936944379180848E+023
+  9.888156688562326E+023
+  9.850931573976067E+023
+  9.830286886337429E+023
+  9.827720348374728E+023
+  9.841901539599095E+023
+  9.869501235501439E+023
+  9.906055613654646E+023
+  9.946767238522556E+023
+  9.987164235601579E+023
+  1.002356978079463E+024
+  1.005336795216101E+024
+  1.007508141063062E+024
+  1.008829749763132E+024
+  1.009349160262594E+024
+  1.009179869685053E+024
+  1.008477373563607E+024
+  1.007416498903198E+024
+  1.006171575265829E+024
+  1.004900979245046E+024
+  1.003736702941345E+024
+  1.002778638359551E+024
+  7.394307580819181E+023
+  7.395092997225847E+023
+  7.396054612841569E+023
+  7.397120231363621E+023
+  7.398162310431802E+023
+  7.398986496217369E+023
+  7.399328587707602E+023
+  7.398862311499873E+023
+  7.397218854272699E+023
+  7.394020379884860E+023
+  7.388926763388191E+023
+  7.381691560655370E+023
+  7.372221625597811E+023
+  7.360632651035917E+023
+  7.347290387436773E+023
+  7.332825772976980E+023
+  7.318112246571749E+023
+  7.304195165304673E+023
+  7.292166730787030E+023
+  7.282985381710835E+023
+  7.277246016131834E+023
+  7.274915820100850E+023
+  7.275058601450115E+023
+  7.275576975830507E+023
+  7.273005476096882E+023
+  7.262388310183514E+023
+  7.237273608366242E+023
+  7.189852752902366E+023
+  7.111269814511155E+023
+  6.992121962913788E+023
+  6.823164351237860E+023
+  6.596217353966140E+023
+  6.305244245326700E+023
+  5.947519668780388E+023
+  5.524745724904308E+023
+  5.043905336936299E+023
+  4.517597247423582E+023
+  3.963610215057106E+023
+  3.403598532450780E+023
+  2.860921973808426E+023
+  2.357972053967572E+023
+  1.912731604685150E+023
+  1.534082786417454E+023
+  1.221418402266552E+023
+  9.685592377887031E+022
+  7.670428940796222E+022
+  6.080606425816517E+022
+  4.834656962972678E+022
+  3.862028920433891E+022
+  3.104083896923267E+022
+  2.513398867272629E+022
+  2.052334904173259E+022
+  1.691407218751178E+022
+  1.407727647475207E+022
+  1.183637703505928E+022
+  1.005566893393274E+022
+  8.631089644644627E+021
+  7.482902821338345E+021
+  6.549988796107533E+021
+  5.785435133003462E+021
+  5.153156508115368E+021
+  4.625317550830282E+021
+  4.180375570985284E+021
+  3.801598389730333E+021
+  3.475944656985737E+021
+  3.193220202540743E+021
+  2.945444793190974E+021
+  2.726380058787126E+021
+  2.531182355082360E+021
+  2.356155126091953E+021
+  2.198585249549080E+021
+  2.056658512138539E+021
+  1.929462894858855E+021
+  1.817107765086649E+021
+  1.721016778721263E+021
+  1.644498694879211E+021
+  1.593772328548655E+021
+  1.579731141534294E+021
+  1.620893007451880E+021
+  1.748203893650397E+021
+  2.012654650798728E+021
+  2.497008677448742E+021
+  3.333255844271687E+021
+  4.727542838630276E+021
+  6.993968042040576E+021
+  1.059723810435048E+022
+  1.620097298415386E+022
+  2.471242386887745E+022
+  3.730460966073038E+022
+  5.538315660840954E+022
+  8.044905376014350E+022
+  1.137953312141958E+023
+  1.560345218427064E+023
+  2.067542778035105E+023
+  2.645134131802370E+023
+  3.269921923066425E+023
+  3.912952900655012E+023
+  4.543648682289312E+023
+  5.133981372569263E+023
+  5.661756650985188E+023
+  6.112468141948676E+023
+  6.479660032991062E+023
+  6.764096048597357E+023
+  6.972199759113937E+023
+  7.114221708010754E+023
+  7.202474313605620E+023
+  7.249832125651173E+023
+  7.268574816356346E+023
+  7.269573961144562E+023
+  7.261789063085423E+023
+  7.252028855792091E+023
+  7.244935212119195E+023
+  7.243148403768269E+023
+  7.247609913241020E+023
+  7.257953785561872E+023
+  7.272933764585879E+023
+  7.290835283014164E+023
+  7.309830467499313E+023
+  7.328249056073182E+023
+  7.344754575606850E+023
+  7.358429561653605E+023
+  7.368784523182437E+023
+  7.375712747573420E+023
+  7.379415508703366E+023
+  7.380317364020339E+023
+  7.378982074448356E+023
+  7.376035906752093E+023
+  7.372106695514394E+023
+  7.367781655984879E+023
+  7.363580867798503E+023
+  5.836347239080663E+025
+  5.837063432690521E+025
+  5.837809738674071E+025
+  5.838501040878617E+025
+  5.839018073796237E+025
+  5.839201951281743E+025
+  5.838854243627974E+025
+  5.837743856456917E+025
+  5.835620907979147E+025
+  5.832239000287102E+025
+  5.827385175756662E+025
+  5.820914624391765E+025
+  5.812786310165583E+025
+  5.803094398653266E+025
+  5.792088750562771E+025
+  5.780176837152625E+025
+  5.767899620493423E+025
+  5.755875202131822E+025
+  5.744706491874234E+025
+  5.734852938835120E+025
+  5.726471351322396E+025
+  5.719236432358410E+025
+  5.712157003787487E+025
+  5.703408084739559E+025
+  5.690201381485435E+025
+  5.668717170693467E+025
+  5.634119421494268E+025
+  5.580674080559097E+025
+  5.501988322787685E+025
+  5.391385815672460E+025
+  5.242427527063497E+025
+  5.049575554916959E+025
+  4.808974694245477E+025
+  4.519290636299507E+025
+  4.182497004362422E+025
+  3.804455395824422E+025
+  3.395102299061857E+025
+  2.968070814143203E+025
+  2.539656384951366E+025
+  2.127185969061927E+025
+  1.747038867925745E+025
+  1.412135584928293E+025
+  1.128543837919889E+025
+  8.952992738762854E+024
+  7.073783798903649E+024
+  5.581591308168565E+024
+  4.408537996600432E+024
+  3.492423492368791E+024
+  2.779740493676075E+024
+  2.226256190881066E+024
+  1.796364329741782E+024
+  1.461923408384488E+024
+  1.200974375192427E+024
+  9.965337785721010E+023
+  8.355447750658565E+023
+  7.080072401808436E+023
+  6.062779754037405E+023
+  5.245191946791925E+023
+  4.582700196955401E+023
+  4.041168758696142E+023
+  3.594417737472071E+023
+  3.222310591935044E+023
+  2.909306435005040E+023
+  2.643367140734664E+023
+  2.415134122628282E+023
+  2.217309710475347E+023
+  2.044193917374538E+023
+  1.891339805695707E+023
+  1.755300459545714E+023
+  1.633448651134615E+023
+  1.523857649561874E+023
+  1.425239456188404E+023
+  1.336946620967846E+023
+  1.259057901381357E+023
+  1.192589596277066E+023
+  1.139908122795204E+023
+  1.105471905593438E+023
+  1.097110589476562E+023
+  1.128167214147993E+023
+  1.220994069210772E+023
+  1.412509627577960E+023
+  1.762780057978797E+023
+  2.367836233544762E+023
+  3.378060082773924E+023
+  5.023244308311847E+023
+  7.644454868933135E+023
+  1.173051535745284E+024
+  1.795253043365110E+024
+  2.718263985711349E+024
+  4.047289591909780E+024
+  5.895786442268774E+024
+  8.363400907287398E+024
+  1.150111065719875E+025
+  1.528523846082812E+025
+  1.961613102439786E+025
+  2.432808580388706E+025
+  2.921065997834176E+025
+  3.403848681742526E+025
+  3.860195891669765E+025
+  4.273184371622786E+025
+  4.631371804267128E+025
+  4.929154070651875E+025
+  5.166236935826715E+025
+  5.346553085217467E+025
+  5.476956491211637E+025
+  5.565947597995965E+025
+  5.622579876624630E+025
+  5.655609712699033E+025
+  5.672893783243306E+025
+  5.681009944449007E+025
+  5.685069317852707E+025
+  5.688687702277263E+025
+  5.694085817265022E+025
+  5.702286883141577E+025
+  5.713377193462372E+025
+  5.726793301748845E+025
+  5.741600997681652E+025
+  5.756737579993758E+025
+  5.771198953140967E+025
+  5.784164113204929E+025
+  5.795059185799715E+025
+  5.803570502620236E+025
+  5.809621374012210E+025
+  5.813329091477168E+025
+  5.814955248128453E+025
+  5.814855899854163E+025
+  5.813435695720166E+025
+  5.811111723628794E+025
+  5.808288819891851E+025
+  5.805343568315895E+025
+  1.461882011683218E+022
+  1.461710954549149E+022
+  1.461801909531775E+022
+  1.462210249165599E+022
+  1.462962389526092E+022
+  1.464043793918077E+022
+  1.465389654889263E+022
+  1.466879921029831E+022
+  1.468340047855228E+022
+  1.469548948925006E+022
+  1.470254749319396E+022
+  1.470197895919126E+022
+  1.469140329921131E+022
+  1.466898386110727E+022
+  1.463375916837662E+022
+  1.458593177344977E+022
+  1.452706447098662E+022
+  1.446013316450942E+022
+  1.438939202462641E+022
+  1.432002126907641E+022
+  1.425755109753241E+022
+  1.420708504072798E+022
+  1.417237819703609E+022
+  1.415485525285967E+022
+  1.415267464678048E+022
+  1.415995529746343E+022
+  1.416628056267917E+022
+  1.415658335004739E+022
+  1.411150105183548E+022
+  1.400827217972274E+022
+  1.382222595248779E+022
+  1.352888207689841E+022
+  1.310661538544320E+022
+  1.253973421444006E+022
+  1.182166819926596E+022
+  1.095777942765888E+022
+  9.967155438312460E+021
+  8.882704853864574E+021
+  7.749054054090642E+021
+  6.618181070145421E+021
+  5.543361156076665E+021
+  4.570730057516140E+021
+  3.727163998238474E+021
+  3.017770435033714E+021
+  2.433968042452131E+021
+  1.960744712703725E+021
+  1.581133617397268E+021
+  1.278700444617061E+021
+  1.038742494564785E+021
+  8.487187220270459E+020
+  6.982580844641997E+020
+  5.789622564629584E+020
+  4.841285803155840E+020
+  4.084614860050452E+020
+  3.478058961504721E+020
+  2.989162889422261E+020
+  2.592643707015847E+020
+  2.268829819767434E+020
+  2.002416191765944E+020
+  1.781483856806269E+020
+  1.596734451397000E+020
+  1.440896534739862E+020
+  1.308267430946304E+020
+  1.194361046902499E+020
+  1.095638095379503E+020
+  1.009300230207006E+020
+  9.331337834453190E+019
+  8.653921828070315E+019
+  8.047088923189264E+019
+  7.500350949151806E+019
+  7.005986219427516E+019
+  6.558832187939888E+019
+  6.156306450789067E+019
+  5.798730952490215E+019
+  5.490110884936690E+019
+  5.239638814778591E+019
+  5.064377242393358E+019
+  4.993845339057326E+019
+  5.077625865260244E+019
+  5.397636208533056E+019
+  6.087364713350696E+019
+  7.361084335702807E+019
+  9.556611122566070E+019
+  1.319513410815157E+020
+  1.906020863338060E+020
+  2.829390830388890E+020
+  4.249961623411339E+020
+  6.382601781313858E+020
+  9.498409916081741E+020
+  1.391190462171931E+021
+  1.994272623192167E+021
+  2.783889832076683E+021
+  3.766459022253442E+021
+  4.922764479297446E+021
+  6.209533083176574E+021
+  7.564825647543240E+021
+  8.916799521648060E+021
+  1.019442188694590E+022
+  1.133740172307906E+022
+  1.230317400957854E+022
+  1.306994235465761E+022
+  1.363599340356245E+022
+  1.401630521769020E+022
+  1.423774396704575E+022
+  1.433398872041765E+022
+  1.434095826353970E+022
+  1.429313199177779E+022
+  1.422087246494572E+022
+  1.414869873735532E+022
+  1.409440019415695E+022
+  1.406887358939827E+022
+  1.407657060353902E+022
+  1.411643702354577E+022
+  1.418320434116703E+022
+  1.426887047793356E+022
+  1.436419379456458E+022
+  1.446003542473251E+022
+  1.454842199015026E+022
+  1.462325616763935E+022
+  1.468066216079702E+022
+  1.471900351831444E+022
+  1.473864531094086E+022
+  1.474155064818797E+022
+  1.473080176046498E+022
+  1.471011679700184E+022
+  1.468340498166713E+022
+  1.465438696293560E+022
+  1.462630499798958E+022
+  1.460173350634554E+022
+  1.458248556906440E+022
+  2.089093393924716E+021
+  2.089322444018219E+021
+  2.089591805680075E+021
+  2.089878764664857E+021
+  2.090145823086280E+021
+  2.090337738029705E+021
+  2.090380824819181E+021
+  2.090185141088741E+021
+  2.089649773179881E+021
+  2.088671826933591E+021
+  2.087158904195654E+021
+  2.085043970628993E+021
+  2.082301103183399E+021
+  2.078960039501274E+021
+  2.075116772894498E+021
+  2.070937032033244E+021
+  2.066649505577343E+021
+  2.062526127153000E+021
+  2.058847682893115E+021
+  2.055854507230243E+021
+  2.053684035287299E+021
+  2.052299252993881E+021
+  2.051414278506766E+021
+  2.050425049050545E+021
+  2.048354096004494E+021
+  2.043818578762591E+021
+  2.035030260490239E+021
+  2.019835260974511E+021
+  1.995800483384697E+021
+  1.960352486463875E+021
+  1.910972517896360E+021
+  1.845447039172252E+021
+  1.762164738437308E+021
+  1.660437746188280E+021
+  1.540807194942104E+021
+  1.405274813109021E+021
+  1.257389999241786E+021
+  1.102125894863520E+021
+  9.455073192087721E+020
+  7.940092633904970E+020
+  6.538160873970176E+020
+  5.298715771640578E+020
+  4.245861669075126E+020
+  3.377397633389499E+020
+  2.675746733296411E+020
+  2.117096726844951E+020
+  1.676766695536622E+020
+  1.331988178864197E+020
+  1.063079396631804E+020
+  8.537058156988103E+019
+  6.906735800466694E+019
+  5.635226141636691E+019
+  4.640673355285328E+019
+  3.859596312852668E+019
+  3.243063257827660E+019
+  2.753503092767242E+019
+  2.362129367762861E+019
+  2.046902752207865E+019
+  1.790942832478115E+019
+  1.581302848175040E+019
+  1.408031370943793E+019
+  1.263457538388833E+019
+  1.141648674348916E+019
+  1.037999892593092E+019
+  9.489242987808215E+018
+  8.716197250055025E+018
+  8.038937469303228E+018
+  7.440333038916755E+018
+  6.907088634402459E+018
+  6.429060722781193E+018
+  5.998805869504307E+018
+  5.611347276989091E+018
+  5.264183361018379E+018
+  4.957615738582704E+018
+  4.695555947380469E+018
+  4.487098253432251E+018
+  4.349344776195166E+018
+  4.312271167789160E+018
+  4.426863903389218E+018
+  4.778378829697514E+018
+  5.507377346021805E+018
+  6.842140373542033E+018
+  9.146952522654440E+018
+  1.299114478243518E+019
+  1.924281737924566E+019
+  2.918736220083633E+019
+  4.466206982852618E+019
+  6.818146819709434E+019
+  1.030009898506503E+020
+  1.530283961055219E+020
+  2.224474543046669E+020
+  3.148810134407538E+020
+  4.320824221552189E+020
+  5.729762892489037E+020
+  7.336377236536742E+020
+  9.076973838852783E+020
+  1.087170363192622E+021
+  1.263593615115327E+021
+  1.429180882931811E+021
+  1.577735401439001E+021
+  1.705170415109498E+021
+  1.809618014401547E+021
+  1.891207004613203E+021
+  1.951637411056404E+021
+  1.993677363764796E+021
+  2.020676966867468E+021
+  2.036154329250302E+021
+  2.043475656679333E+021
+  2.045630023323978E+021
+  2.045089394997242E+021
+  2.043741724492041E+021
+  2.042885237265010E+021
+  2.043272442904984E+021
+  2.045191786097168E+021
+  2.048573507986895E+021
+  2.053105333594765E+021
+  2.058344141351088E+021
+  2.063812268682979E+021
+  2.069071119194164E+021
+  2.073769192412543E+021
+  2.077665550472355E+021
+  2.080632682859234E+021
+  2.082644745856387E+021
+  2.083757840632262E+021
+  2.084087652161627E+021
+  2.083787242269324E+021
+  2.083026777656894E+021
+  2.081977470623833E+021
+  2.080800516395074E+021
+  2.079640118384238E+021
+  6.164207110139778E+023
+  6.165057918238331E+023
+  6.165877300624711E+023
+  6.166556124437201E+023
+  6.166954374526768E+023
+  6.166898023691357E+023
+  6.166181382385180E+023
+  6.164575912766920E+023
+  6.161845390639246E+023
+  6.157768607801579E+023
+  6.152168672306526E+023
+  6.144945759179016E+023
+  6.136109386968055E+023
+  6.125805118920354E+023
+  6.114329073866756E+023
+  6.102122863521929E+023
+  6.089741922119438E+023
+  6.077791602250409E+023
+  6.066827967338366E+023
+  6.057224054635018E+023
+  6.049007345252504E+023
+  6.041679665808383E+023
+  6.034035893865802E+023
+  6.024001779603455E+023
+  6.008513337161360E+023
+  5.983460500880519E+023
+  5.943716540064075E+023
+  5.883272870811203E+023
+  5.795496929618944E+023
+  5.673528120941252E+023
+  5.510821195076648E+023
+  5.301833785290560E+023
+  5.042830959761649E+023
+  4.732742302816021E+023
+  4.373958808136929E+023
+  3.972907908490086E+023
+  3.540215176065045E+023
+  3.090277999983094E+023
+  2.640162901747605E+023
+  2.207894804006767E+023
+  1.810401088507052E+023
+  1.460922978352893E+023
+  1.165535499364030E+023
+  9.230141435519493E+022
+  7.279517628084791E+022
+  5.733227805625397E+022
+  4.519693845410369E+022
+  3.573568212944909E+022
+  2.838791597720862E+022
+  2.269127489814403E+022
+  1.827432033593423E+022
+  1.484403336358514E+022
+  1.217217406684347E+022
+  1.008252022815199E+022
+  8.439818585156288E+021
+  7.140649613125598E+021
+  6.106096530225594E+021
+  5.275980018038570E+021
+  4.604387536644759E+021
+  4.056240740495320E+021
+  3.604678527796022E+021
+  3.229072011330832E+021
+  2.913524276951701E+021
+  2.645739522171405E+021
+  2.416172441822982E+021
+  2.217389861676647E+021
+  2.043593287536130E+021
+  1.890264050736353E+021
+  1.753902975525903E+021
+  1.631844915294321E+021
+  1.522136144471248E+021
+  1.423470685395561E+021
+  1.335191802511457E+021
+  1.257379377536353E+021
+  1.191066012228838E+021
+  1.138659342181802E+021
+  1.104702017546463E+021
+  1.097183138320423E+021
+  1.129736362868479E+021
+  1.225230852326067E+021
+  1.421486545693038E+021
+  1.780113354890804E+021
+  2.399736391682170E+021
+  3.435008282924846E+021
+  5.122590462157841E+021
+  7.814302510703666E+021
+  1.201527683597036E+022
+  1.842042076236759E+022
+  2.793499723740089E+022
+  4.165439026440082E+022
+  6.076518682440774E+022
+  8.631841492539198E+022
+  1.188688137569966E+023
+  1.582029251482503E+023
+  2.033200792130740E+023
+  2.525292314644327E+023
+  3.036643452500713E+023
+  3.543899041746068E+023
+  4.025182255814145E+023
+  4.462666470234139E+023
+  4.844111437499567E+023
+  5.163281756415504E+023
+  5.419445162369020E+023
+  5.616286941599761E+023
+  5.760582106984090E+023
+  5.860888794997254E+023
+  5.926421183808749E+023
+  5.966168538874003E+023
+  5.988266425299851E+023
+  5.999596154568925E+023
+  6.005579346391403E+023
+  6.010134822686268E+023
+  6.015766740043586E+023
+  6.023752283180482E+023
+  6.034394702735601E+023
+  6.047305561161687E+023
+  6.061681538617357E+023
+  6.076547307401994E+023
+  6.090945779168091E+023
+  6.104067828471063E+023
+  6.115322984848898E+023
+  6.124359829678337E+023
+  6.131050139254646E+023
+  6.135452944982576E+023
+  6.137771337019918E+023
+  6.138308178507283E+023
+  6.137424596712466E+023
+  6.135507036506867E+023
+  6.132944574155342E+023
+  6.130113496128063E+023
+  1.180923917955149E+026
+  1.181070831403975E+026
+  1.181224103205509E+026
+  1.181366361013068E+026
+  1.181473259492175E+026
+  1.181512414694947E+026
+  1.181443494266834E+026
+  1.181219721383823E+026
+  1.180790831496544E+026
+  1.180107758730252E+026
+  1.179128897435887E+026
+  1.177827326666576E+026
+  1.176198196628987E+026
+  1.174265210756216E+026
+  1.172084806545615E+026
+  1.169746454405800E+026
+  1.167367536380048E+026
+  1.165081532457733E+026
+  1.163018754314453E+026
+  1.161279654847968E+026
+  1.159901774327764E+026
+  1.158822539645843E+026
+  1.157841231621311E+026
+  1.156584290649395E+026
+  1.154478609978464E+026
+  1.150737536228763E+026
+  1.144364044643144E+026
+  1.134175145714244E+026
+  1.118851134776353E+026
+  1.097012732276787E+026
+  1.067328045110071E+026
+  1.028648834780723E+026
+  9.801709435193677E+025
+  9.216064136188850E+025
+  8.533452740535083E+025
+  7.765751047225058E+025
+  6.933202283142428E+025
+  6.063651848552489E+025
+  5.190437184892509E+025
+  4.349052380845991E+025
+  3.573094140835284E+025
+  2.889113763187161E+025
+  2.309656787803542E+025
+  1.832874981045577E+025
+  1.448594919099896E+025
+  1.143348665168240E+025
+  9.033071301594894E+024
+  7.157846026664835E+024
+  5.698602028595331E+024
+  4.565006859556431E+024
+  3.684309447333795E+024
+  2.998986038445495E+024
+  2.464133047646220E+024
+  2.045009169626496E+024
+  1.714896693715859E+024
+  1.453326585140950E+024
+  1.244649744656463E+024
+  1.076910421031628E+024
+  9.409705027376675E+023
+  8.298356579692769E+023
+  7.381405224551204E+023
+  6.617574291365499E+023
+  5.975001403224323E+023
+  5.429001283092865E+023
+  4.960380162347900E+023
+  4.554168825152316E+023
+  4.198673700646336E+023
+  3.884770771836170E+023
+  3.605387091109471E+023
+  3.355131211062998E+023
+  3.130048899491074E+023
+  2.927496549996677E+023
+  2.746144918345267E+023
+  2.586154719236326E+023
+  2.449609814476273E+023
+  2.341362836005352E+023
+  2.270555619211215E+023
+  2.253240510419041E+023
+  2.316769375177702E+023
+  2.506954852614868E+023
+  2.899451367982338E+023
+  3.617326370065576E+023
+  4.857296231603803E+023
+  6.927348569924990E+023
+  1.029799557183512E+024
+  1.566739861915164E+024
+  2.403586507753635E+024
+  3.677620025677105E+024
+  5.567161250759802E+024
+  8.287182280950219E+024
+  1.206929539659057E+025
+  1.711653611023543E+025
+  2.353201356079000E+025
+  3.126581841449066E+025
+  4.011248716434067E+025
+  4.973152430086685E+025
+  5.969121609548452E+025
+  6.952980372815122E+025
+  7.881834659076065E+025
+  8.721107876107543E+025
+  9.447486034226676E+025
+  1.004963627830107E+026
+  1.052711262398471E+026
+  1.088812837406138E+026
+  1.114687552657642E+026
+  1.132090975538823E+026
+  1.142890828800907E+026
+  1.148892661929502E+026
+  1.151716196706258E+026
+  1.152717421619898E+026
+  1.152949843367683E+026
+  1.153158418160231E+026
+  1.153799972336887E+026
+  1.155083703358621E+026
+  1.157024743205606E+026
+  1.159503320074198E+026
+  1.162322346130163E+026
+  1.165257538908390E+026
+  1.168096232221356E+026
+  1.170663303402276E+026
+  1.172834629526228E+026
+  1.174540005978653E+026
+  1.175758531849598E+026
+  1.176509855324955E+026
+  1.176843973951455E+026
+  1.176830951855741E+026
+  1.176551423920074E+026
+  1.176089072982313E+026
+  1.175525449935584E+026
+  1.174936588722788E+026
+  6.318578434907476E+020
+  6.317348252915474E+020
+  6.317529767229429E+020
+  6.319456524374531E+020
+  6.323316472113128E+020
+  6.329086319621164E+020
+  6.336477567918235E+020
+  6.344902789281803E+020
+  6.353469629148986E+020
+  6.361010410073033E+020
+  6.366151304322464E+020
+  6.367420238457172E+020
+  6.363388592989427E+020
+  6.352836679907403E+020
+  6.334927215372628E+020
+  6.309366010344368E+020
+  6.276525776577218E+020
+  6.237507898709486E+020
+  6.194119105394581E+020
+  6.148746026476185E+020
+  6.104120881899704E+020
+  6.062985247238620E+020
+  6.027674207691069E+020
+  5.999657785610150E+020
+  5.979087754375852E+020
+  5.964403962364591E+020
+  5.952054573027839E+020
+  5.936380230787750E+020
+  5.909705109144504E+020
+  5.862669696204318E+020
+  5.784830530586307E+020
+  5.665537239687036E+020
+  5.495070759221028E+020
+  5.265981864938107E+020
+  4.974503432504158E+020
+  4.621830152281942E+020
+  4.214988424883678E+020
+  3.766996170063141E+020
+  3.296080780647963E+020
+  2.823905865323065E+020
+  2.373031700012986E+020
+  1.963298180864871E+020
+  1.606554259477908E+020
+  1.305441995346640E+020
+  1.056743541777167E+020
+  8.544310139960259E+019
+  6.915622322415936E+019
+  5.613455944696284E+019
+  4.576631986275290E+019
+  3.752679926914964E+019
+  3.098002385045631E+019
+  2.577142437483977E+019
+  2.161687676180814E+019
+  1.829103717814727E+019
+  1.561643594461799E+019
+  1.345395177620674E+019
+  1.169482724717332E+019
+  1.025415313435196E+019
+  9.065647318928803E+018
+  8.077524058055255E+018
+  7.249255874219213E+018
+  6.549052479571025E+018
+  5.951908176949790E+018
+  5.438095851375300E+018
+  4.992009746207573E+018
+  4.601279899408024E+018
+  4.256098297768507E+018
+  3.948710819590463E+018
+  3.673040545883216E+018
+  3.424417993954297E+018
+  3.199403535878231E+018
+  2.995698374070259E+018
+  2.812155239081620E+018
+  2.648921718823642E+018
+  2.507782577358910E+018
+  2.392819336319877E+018
+  2.311584860368090E+018
+  2.277108829055798E+018
+  2.311218302522247E+018
+  2.449883721851250E+018
+  2.751579283164449E+018
+  3.309942358960762E+018
+  4.272235723039413E+018
+  5.865064670286822E+018
+  8.428132771952815E+018
+  1.245499212710679E+019
+  1.863601766459009E+019
+  2.789239630925043E+019
+  4.138022732053416E+019
+  6.043128475087038E+019
+  8.638403171432504E+019
+  1.202510565238245E+020
+  1.622389330350177E+020
+  2.114474801940890E+020
+  2.659539776453423E+020
+  3.230615003166740E+020
+  3.796882219698582E+020
+  4.328330081264393E+020
+  4.799984367983901E+020
+  5.194794882290334E+020
+  5.504784684360721E+020
+  5.730590884399253E+020
+  5.879866013402164E+020
+  5.965112122477671E+020
+  6.001440243917312E+020
+  6.004582279473845E+020
+  5.989315351273513E+020
+  5.968337318808785E+020
+  5.951566493232514E+020
+  5.945815133709081E+020
+  5.954784043509594E+020
+  5.979326952004865E+020
+  6.017929269341104E+020
+  6.067335660461242E+020
+  6.123249886967381E+020
+  6.181025519252979E+020
+  6.236272538019555E+020
+  6.285323292542003E+020
+  6.325527814731942E+020
+  6.355376358925755E+020
+  6.374470079258130E+020
+  6.383376006324006E+020
+  6.383409759821216E+020
+  6.376388537927695E+020
+  6.364387496462529E+020
+  6.349519252483593E+020
+  6.333748674327563E+020
+  6.318753744621003E+020
+  6.305836966787767E+020
+  6.295885156674872E+020
+  1.607912952605096E+023
+  1.608160186572774E+023
+  1.608371345315312E+023
+  1.608510804142021E+023
+  1.608537361533666E+023
+  1.608404325037216E+023
+  1.608060721874077E+023
+  1.607453729775661E+023
+  1.606532158171160E+023
+  1.605251199616757E+023
+  1.603578183023404E+023
+  1.601498571243799E+023
+  1.599021342621228E+023
+  1.596182693756231E+023
+  1.593046703333471E+023
+  1.589701472603901E+023
+  1.586249387772838E+023
+  1.582790500257274E+023
+  1.579398600923020E+023
+  1.576090402952746E+023
+  1.572789308067252E+023
+  1.569286382444792E+023
+  1.565202228133288E+023
+  1.559954228772103E+023
+  1.552734068385893E+023
+  1.542500469855596E+023
+  1.527991887846384E+023
+  1.507763583370111E+023
+  1.480253178814885E+023
+  1.443878239228511E+023
+  1.397168027216532E+023
+  1.338928359191880E+023
+  1.268432470726200E+023
+  1.185621572181383E+023
+  1.091287145538336E+023
+  9.871956273759284E+022
+  8.761098317281370E+022
+  7.616668017673370E+022
+  6.480939197548561E+022
+  5.397836197768727E+022
+  4.407935365192437E+022
+  3.542275365425610E+022
+  2.814127092616838E+022
+  2.218988662371145E+022
+  1.742381049037630E+022
+  1.366160822327019E+022
+  1.072131346790011E+022
+  8.438410072710473E+021
+  6.672780271616964E+021
+  5.309541135306578E+021
+  4.256880392855045E+021
+  3.442712457290944E+021
+  2.811137422748981E+021
+  2.319178453828399E+021
+  1.933985299111820E+021
+  1.630539643625061E+021
+  1.389825136487279E+021
+  1.197396055647685E+021
+  1.042272813199526E+021
+  9.160977701944786E+020
+  8.124943840858201E+020
+  7.265830657421843E+020
+  6.546166774130769E+020
+  5.937067755050108E+020
+  5.416184010588216E+020
+  4.966165647618254E+020
+  4.573517586243965E+020
+  4.227750747292284E+020
+  3.920760533167941E+020
+  3.646384565864439E+020
+  3.400110275883794E+020
+  3.178922447377454E+020
+  2.981305083486269E+020
+  2.807446397187837E+020
+  2.659748332254830E+020
+  2.543824468566834E+020
+  2.470299047848520E+020
+  2.457917315651202E+020
+  2.538770252910097E+020
+  2.766852090105108E+020
+  3.231721952278373E+020
+  4.079709083673792E+020
+  5.545775710417933E+020
+  7.999557582267489E+020
+  1.200868145599339E+021
+  1.842023035994137E+021
+  2.845567848831552E+021
+  4.380375313549331E+021
+  6.667745869798446E+021
+  9.977494923190364E+021
+  1.460513158909778E+022
+  2.081786399119029E+022
+  2.876722703415424E+022
+  3.842150825266930E+022
+  4.955810703989376E+022
+  6.178356414058743E+022
+  7.458265243287677E+022
+  8.739042902147716E+022
+  9.966872631320060E+022
+  1.109696045112730E+023
+  1.209747789324379E+023
+  1.295083986412519E+023
+  1.365273909820417E+023
+  1.420971604102537E+023
+  1.463607974904847E+023
+  1.495082376913434E+023
+  1.517493462740551E+023
+  1.532926870932395E+023
+  1.543302216612044E+023
+  1.550274032472099E+023
+  1.555178667819007E+023
+  1.559019077131426E+023
+  1.562479932819984E+023
+  1.565965612775674E+023
+  1.569653294017859E+023
+  1.573553137268077E+023
+  1.577567975494794E+023
+  1.581546309015134E+023
+  1.585324540383166E+023
+  1.588756678228819E+023
+  1.591731698525579E+023
+  1.594180281806521E+023
+  1.596073844609667E+023
+  1.597419323786500E+023
+  1.598252409873995E+023
+  1.598630354889348E+023
+  1.598625028922409E+023
+  1.598317499705792E+023
+  1.597794416030438E+023
+  1.597145321773402E+023
+  2.162665112189400E+026
+  2.162761790666190E+026
+  2.162973785214411E+026
+  2.163303155797446E+026
+  2.163731336483689E+026
+  2.164212307054532E+026
+  2.164668089392664E+026
+  2.164987565247890E+026
+  2.165029240335665E+026
+  2.164628988712928E+026
+  2.163612942018254E+026
+  2.161814709635070E+026
+  2.159095575605388E+026
+  2.155365591121643E+026
+  2.150602592590909E+026
+  2.144865527724914E+026
+  2.138298243659299E+026
+  2.131120119040335E+026
+  2.123600701847087E+026
+  2.116016959449106E+026
+  2.108593845058483E+026
+  2.101431430389458E+026
+  2.094424484592815E+026
+  2.087182666717301E+026
+  2.078961071365636E+026
+  2.068611529751876E+026
+  2.054564877500856E+026
+  2.034853627266612E+026
+  2.007183417866658E+026
+  1.969060234453585E+026
+  1.917978074137263E+026
+  1.851667163028932E+026
+  1.768394408675966E+026
+  1.667294387610996E+026
+  1.548691265944688E+026
+  1.414352832883759E+026
+  1.267604299051377E+026
+  1.113231973350646E+026
+  9.571348875895167E+025
+  8.057379202317168E+025
+  6.652527949122690E+025
+  5.407121423604925E+025
+  4.346357557013903E+025
+  3.468981627340060E+025
+  2.758133187643571E+025
+  2.190500090373066E+025
+  1.741720651895744E+025
+  1.389206077605592E+025
+  1.113353232872493E+025
+  8.978374456661698E+024
+  7.294310292807647E+024
+  5.976148720218794E+024
+  4.941321204254843E+024
+  4.125598117018850E+024
+  3.479317836534798E+024
+  2.964229543493669E+024
+  2.550933049626566E+024
+  2.216846850627135E+024
+  1.944619128175172E+024
+  1.720898011380647E+024
+  1.535386922445248E+024
+  1.380122805770849E+024
+  1.248926808491902E+024
+  1.136987435791125E+024
+  1.040545016887890E+024
+  9.566535081861045E+023
+  8.830013991878633E+023
+  8.177780149081023E+023
+  7.595751111978579E+023
+  7.073166622577920E+023
+  6.602125178842405E+023
+  6.177346192456182E+023
+  5.796183114067791E+023
+  5.458968358163134E+023
+  5.169855801113776E+023
+  4.938459211995691E+023
+  4.782790409808724E+023
+  4.734311784429245E+023
+  4.846371413982579E+023
+  5.207918669647038E+023
+  5.965212232397890E+023
+  7.355171776669484E+023
+  9.754886976872971E+023
+  1.375211777525198E+024
+  2.024050603710038E+024
+  3.053917367450749E+024
+  4.652720342143955E+024
+  7.076645519706958E+024
+  1.065587825988819E+025
+  1.578455243477782E+025
+  2.288128865980634E+025
+  3.230312856467723E+025
+  4.421255935167067E+025
+  5.848230163141611E+025
+  7.469731776273407E+025
+  9.220026125232819E+025
+  1.101791555676583E+026
+  1.277846413823731E+026
+  1.442467465841554E+026
+  1.589650319250404E+026
+  1.715576471479123E+026
+  1.818682571383173E+026
+  1.899398202127619E+026
+  1.959686330503909E+026
+  2.002515370217599E+026
+  2.031357964818320E+026
+  2.049770668885395E+026
+  2.061075000288906E+026
+  2.068139219600963E+026
+  2.073250426581027E+026
+  2.078063899015713E+026
+  2.083616706259460E+026
+  2.090392673202197E+026
+  2.098424785595718E+026
+  2.107419630383160E+026
+  2.116887686289873E+026
+  2.126264333944771E+026
+  2.135009695110139E+026
+  2.142680217698850E+026
+  2.148970051010710E+026
+  2.153724580481981E+026
+  2.156931590242290E+026
+  2.158697432282587E+026
+  2.159215968788545E+026
+  2.158736328702556E+026
+  2.157532662897572E+026
+  2.155877872127114E+026
+  2.154023655133791E+026
+  2.152187610822249E+026
+  2.150546360631345E+026
+  3.233900029085986E+025
+  3.233736534769705E+025
+  3.233954176618720E+025
+  3.234620933391443E+025
+  3.235757587239726E+025
+  3.237318352190761E+025
+  3.239175760388147E+025
+  3.241112381526649E+025
+  3.242821416132920E+025
+  3.243918689074632E+025
+  3.243967031999219E+025
+  3.242512236678672E+025
+  3.239128496343633E+025
+  3.233469615836338E+025
+  3.225320339679260E+025
+  3.214640570983902E+025
+  3.201594366407716E+025
+  3.186555541476438E+025
+  3.170082760320454E+025
+  3.152859389196282E+025
+  3.135597211727837E+025
+  3.118908016693296E+025
+  3.103152417192221E+025
+  3.088280187213626E+025
+  3.073680076200386E+025
+  3.058058932750971E+025
+  3.039369964757608E+025
+  3.014808506533365E+025
+  2.980891382789462E+025
+  2.933633137279978E+025
+  2.868828368707087E+025
+  2.782442322920466E+025
+  2.671099085078160E+025
+  2.532635956602515E+025
+  2.366663804808233E+025
+  2.175040583458546E+025
+  1.962139508957443E+025
+  1.734791356680629E+025
+  1.501818883751195E+025
+  1.273166549143832E+025
+  1.058747008486509E+025
+  8.668763730396254E+024
+  7.020598157953664E+024
+  5.646445212628209E+024
+  4.524484452538042E+024
+  3.621753351965796E+024
+  2.902666489279176E+024
+  2.333597932391711E+024
+  1.884966407700880E+024
+  1.531864480081994E+024
+  1.253914784651654E+024
+  1.034769691903166E+024
+  8.614912689942187E+023
+  7.239357931246616E+023
+  6.142005724262577E+023
+  5.261537305549452E+023
+  4.550482321139891E+023
+  3.972123177679872E+023
+  3.498051373641560E+023
+  3.106259885036616E+023
+  2.779665869719798E+023
+  2.504973281141673E+023
+  2.271800976778166E+023
+  2.072016590095527E+023
+  1.899229097334884E+023
+  1.748403528007861E+023
+  1.615569784535212E+023
+  1.497604338458831E+023
+  1.392069048200991E+023
+  1.297095979100994E+023
+  1.211311485206748E+023
+  1.133797668753804E+023
+  1.064095653487804E+023
+  1.002264295409304E+023
+  9.490220563465478E+022
+  9.060217235406963E+022
+  8.763414999199631E+022
+  8.653268022698605E+022
+  8.819904905650993E+022
+  9.412797160119232E+022
+  1.067644893015184E+023
+  1.300488425484745E+023
+  1.702191572929053E+023
+  2.369438041226292E+023
+  3.448325583112542E+023
+  5.153042492034123E+023
+  7.786342948120626E+023
+  1.175727932191803E+024
+  1.758730944068908E+024
+  2.589002416326901E+024
+  3.730322366025139E+024
+  5.234738166101677E+024
+  7.121316544513213E+024
+  9.361734005721838E+024
+  1.188203891592510E+025
+  1.457148053484755E+025
+  1.729785965031087E+025
+  1.992702613901902E+025
+  2.234153231606843E+025
+  2.445431859537554E+025
+  2.621536368626629E+025
+  2.761144746033249E+025
+  2.866073277666370E+025
+  2.940447304419736E+025
+  2.989795538071060E+025
+  3.020216789491961E+025
+  3.037699038043006E+025
+  3.047617020349094E+025
+  3.054402725269497E+025
+  3.061369696910004E+025
+  3.070669039660269E+025
+  3.083355252911655E+025
+  3.099539219820067E+025
+  3.118602864836108E+025
+  3.139446631343926E+025
+  3.160739446998308E+025
+  3.181143192397541E+025
+  3.199490298114842E+025
+  3.214902615312466E+025
+  3.226849698401050E+025
+  3.235152915484319E+025
+  3.239947450141359E+025
+  3.241617313596036E+025
+  3.240718611262081E+025
+  3.237902869055296E+025
+  3.233847000552833E+025
+  3.229193943022534E+025
+  3.224508114880763E+025
+  3.220247155138505E+025
+  3.216748494813798E+025
+  3.535994711719469E+025
+  3.536008781430210E+025
+  3.536322453320164E+025
+  3.536971787437166E+025
+  3.537950062717008E+025
+  3.539192117166534E+025
+  3.540563138626168E+025
+  3.541854131725106E+025
+  3.542785664438359E+025
+  3.543022060065706E+025
+  3.542196606704837E+025
+  3.539946529098944E+025
+  3.535955297110929E+025
+  3.529998325825297E+025
+  3.521986327701484E+025
+  3.511999201914494E+025
+  3.500302723032692E+025
+  3.487340535851059E+025
+  3.473695291772250E+025
+  3.460015408237022E+025
+  3.446907893304580E+025
+  3.434802583345750E+025
+  3.423798305835648E+025
+  3.413506060244964E+025
+  3.402907540713602E+025
+  3.390248755997723E+025
+  3.372988176437382E+025
+  3.347817252861419E+025
+  3.310768931151203E+025
+  3.257427084252534E+025
+  3.183245690234517E+025
+  3.083978928395322E+025
+  2.956209270675857E+025
+  2.797937880683299E+025
+  2.609170493338366E+025
+  2.392397491279256E+025
+  2.152840991957227E+025
+  1.898342524909172E+025
+  1.638809815701571E+025
+  1.385235477407607E+025
+  1.148427975687029E+025
+  9.373214216633474E+024
+  7.566133261186692E+024
+  6.064521003029603E+024
+  4.842521680412977E+024
+  3.862519002529769E+024
+  3.084444420653816E+024
+  2.470728503749457E+024
+  1.988505838128259E+024
+  1.610230766445706E+024
+  1.313458896794630E+024
+  1.080251786694433E+024
+  8.964629908404902E+023
+  7.510393627020502E+023
+  6.353985350929514E+023
+  5.429031205954940E+023
+  4.684313323024336E+023
+  4.080341438433488E+023
+  3.586657495371956E+023
+  3.179739435523284E+023
+  2.841383618303444E+023
+  2.557463630033928E+023
+  2.316981870152280E+023
+  2.111347159999950E+023
+  1.933826015484487E+023
+  1.779127090582824E+023
+  1.643087846937139E+023
+  1.522440090655049E+023
+  1.414637093999703E+023
+  1.317730127136573E+023
+  1.230287003393191E+023
+  1.151350484155719E+023
+  1.080441154869622E+023
+  1.017619175025589E+023
+  9.636343179200928E+022
+  9.202171162332612E+022
+  8.906000796538038E+022
+  8.804124191087907E+022
+  8.991707481180306E+022
+  9.626971190674245E+022
+  1.096935009694653E+023
+  1.343791723329146E+023
+  1.769774776533320E+023
+  2.478226734345590E+023
+  3.625740425761234E+023
+  5.442594863778110E+023
+  8.255416095278851E+023
+  1.250728259727761E+024
+  1.876577121676532E+024
+  2.770296202867813E+024
+  4.002409149492571E+024
+  5.631599691440736E+024
+  7.681673309872769E+024
+  1.012553397549691E+025
+  1.288637406033099E+025
+  1.584647880056037E+025
+  1.886323025572380E+025
+  2.178990691435110E+025
+  2.449595654458915E+025
+  2.688223700811623E+025
+  2.888885530933933E+025
+  3.049560514102402E+025
+  3.171671719277813E+025
+  3.259234327011195E+025
+  3.317903898123899E+025
+  3.354087548826383E+025
+  3.374208000023977E+025
+  3.384152076549004E+025
+  3.388899825417319E+025
+  3.392314870933030E+025
+  3.397072917752864E+025
+  3.404705705861929E+025
+  3.415737392284526E+025
+  3.429887907990101E+025
+  3.446314566197739E+025
+  3.463861507283427E+025
+  3.481288531773589E+025
+  3.497457087811250E+025
+  3.511460412987057E+025
+  3.522694695510621E+025
+  3.530876437155105E+025
+  3.536017062554251E+025
+  3.538369236252662E+025
+  3.538359841913679E+025
+  3.536521310659914E+025
+  3.533427750473377E+025
+  3.529639889622218E+025
+  3.525663193456013E+025
+  3.521920691200456E+025
+  3.518738966086194E+025
+  5.100570049374915E+018
+  5.100919095740548E+018
+  5.101562637718159E+018
+  5.102498251241729E+018
+  5.103670734649708E+018
+  5.104957991922610E+018
+  5.106164157974653E+018
+  5.107022565435419E+018
+  5.107210050341278E+018
+  5.106374764149447E+018
+  5.104177280519726E+018
+  5.100342115291485E+018
+  5.094715139572989E+018
+  5.087320339953108E+018
+  5.078407093966959E+018
+  5.068477601008645E+018
+  5.058283820409315E+018
+  5.048784357499938E+018
+  5.041054444481522E+018
+  5.036146702250979E+018
+  5.034906585045273E+018
+  5.037753619656526E+018
+  5.044446663606128E+018
+  5.053857203157096E+018
+  5.063778201990239E+018
+  5.070796777401659E+018
+  5.070257372562566E+018
+  5.056339090251214E+018
+  5.022267479878339E+018
+  4.960677452711844E+018
+  4.864138472426032E+018
+  4.725842052795986E+018
+  4.540430206059134E+018
+  4.304908353662757E+018
+  4.019538068938333E+018
+  3.688552184092555E+018
+  3.320496107133184E+018
+  2.928002832300058E+018
+  2.526881715978907E+018
+  2.134549498352002E+018
+  1.768029913498327E+018
+  1.441325550488702E+018
+  1.161785665930670E+018
+  9.296600154412924E+017
+  7.409332428101770E+017
+  5.897535585499580E+017
+  4.698852472454635E+017
+  3.754818864684667E+017
+  3.014308506309478E+017
+  2.434495253768554E+017
+  1.980510978869477E+017
+  1.624514176443222E+017
+  1.344573191021146E+017
+  1.123573646524213E+017
+  9.482454546874168E+016
+  8.083415075789301E+016
+  6.959674955070106E+016
+  6.050472818291719E+016
+  5.309030186173664E+016
+  4.699289821790754E+016
+  4.193402003507268E+016
+  3.769798305103072E+016
+  3.411721795794275E+016
+  3.106109101328560E+016
+  2.842742402319722E+016
+  2.613608082234566E+016
+  2.412413715550662E+016
+  2.234226971159900E+016
+  2.075209510498756E+016
+  1.932426925606285E+016
+  1.803723177736264E+016
+  1.687656081077974E+016
+  1.583500749114791E+016
+  1.491342883474842E+016
+  1.412306698900681E+016
+  1.348998002641405E+016
+  1.306298204298164E+016
+  1.292728453574792E+016
+  1.322724472145834E+016
+  1.420330435405839E+016
+  1.625035870186142E+016
+  2.000725760141012E+016
+  2.648934645872679E+016
+  3.727663165369558E+016
+  5.476688615214369E+016
+  8.249177968069211E+016
+  1.254690752958481E+017
+  1.905179452244225E+017
+  2.863912764241497E+017
+  4.234779433894328E+017
+  6.127131170303704E+017
+  8.632464874215209E+017
+  1.178879833803673E+018
+  1.555555781559658E+018
+  1.981479118468918E+018
+  2.438418605184010E+018
+  2.904140531138223E+018
+  3.355614752578123E+018
+  3.772175153749944E+018
+  4.137931530285395E+018
+  4.443052605681839E+018
+  4.683904861644034E+018
+  4.862300397501170E+018
+  4.984221978043154E+018
+  5.058374310268530E+018
+  5.094815494030123E+018
+  5.103810474752534E+018
+  5.094957675574662E+018
+  5.076584628106237E+018
+  5.055384205058920E+018
+  5.036257816506775E+018
+  5.022333496817097E+018
+  5.015127295012529E+018
+  5.014813193421140E+018
+  5.020561523386624E+018
+  5.030902190118352E+018
+  5.044070352097897E+018
+  5.058299829010166E+018
+  5.072042013493208E+018
+  5.084102143017715E+018
+  5.093697231336627E+018
+  5.100449222061453E+018
+  5.104332760161490E+018
+  5.105598504761372E+018
+  5.104688830724085E+018
+  5.102155623026543E+018
+  5.098586506719761E+018
+  5.094546326934204E+018
+  5.090536575919374E+018
+  5.086971040848953E+018
+  6.862224858490181E+020
+  6.863185140389071E+020
+  6.864083633614613E+020
+  6.864792966224536E+020
+  6.865154111005739E+020
+  6.864973635550811E+020
+  6.864026621896145E+020
+  6.862066190557640E+020
+  6.858839345506518E+020
+  6.854110389006303E+020
+  6.847690889347204E+020
+  6.839472828078382E+020
+  6.829460805641663E+020
+  6.817798010755756E+020
+  6.804779090374533E+020
+  6.790842273369905E+020
+  6.776533505946857E+020
+  6.762436869059679E+020
+  6.749068248704434E+020
+  6.736733265348822E+020
+  6.725355667732643E+020
+  6.714288138330237E+020
+  6.702122838709723E+020
+  6.686523144496407E+020
+  6.664100278559734E+020
+  6.630358861230111E+020
+  6.579734245327421E+020
+  6.505742705248119E+020
+  6.401263608113322E+020
+  6.258969915631413E+020
+  6.071917159472754E+020
+  5.834287088596011E+020
+  5.542255942004562E+020
+  5.194916496262893E+020
+  4.795130675806218E+020
+  4.350136841232858E+020
+  3.871704600036433E+020
+  3.375649715742997E+020
+  2.880616933904693E+020
+  2.406209381384812E+020
+  1.970753757955231E+020
+  1.588498180572387E+020
+  1.265854907785403E+020
+  1.001294611418721E+020
+  7.887640229281579E+019
+  6.204847645564877E+019
+  4.885693188425671E+019
+  3.858374762463909E+019
+  3.061425710898516E+019
+  2.444236387241993E+019
+  1.966210024555944E+019
+  1.595363625401891E+019
+  1.306815701893657E+019
+  1.081377946203070E+019
+  9.043395204371828E+018
+  7.644641235720328E+018
+  6.531865900645901E+018
+  5.639820535916776E+018
+  4.918774421477448E+018
+  4.330768802657615E+018
+  3.846764380332591E+018
+  3.444479996774297E+018
+  3.106760862287838E+018
+  2.820349750811747E+018
+  2.574963559858897E+018
+  2.362600874226784E+018
+  2.177024467057313E+018
+  2.013376931003551E+018
+  1.867898838069755E+018
+  1.737728019353692E+018
+  1.620766873361002E+018
+  1.515613396214004E+018
+  1.421562623523982E+018
+  1.338700840067110E+018
+  1.268138853392959E+018
+  1.212468108388942E+018
+  1.176581872548004E+018
+  1.169092990360068E+018
+  1.204711563925698E+018
+  1.308131900938252E+018
+  1.520223884651245E+018
+  1.907617604833032E+018
+  2.577060119304597E+018
+  3.696082615414225E+018
+  5.521291296375632E+018
+  8.434545447127267E+018
+  1.298473989798637E+019
+  1.992799460422607E+019
+  3.025090330450872E+019
+  4.514975189711825E+019
+  6.592440214819512E+019
+  9.373297248010276E+019
+  1.291997868490737E+020
+  1.721178189278912E+020
+  2.214244426636155E+020
+  2.753025829110436E+020
+  3.314110601185659E+020
+  3.872141825814102E+020
+  4.403260057075074E+020
+  4.887910473198604E+020
+  5.312537240503813E+020
+  5.670068612299368E+020
+  5.959400774485001E+020
+  6.184241677257104E+020
+  6.351684646910367E+020
+  6.470798709650877E+020
+  6.551409304609737E+020
+  6.603143472524801E+020
+  6.634747252731243E+020
+  6.653649751997371E+020
+  6.665737819663911E+020
+  6.675305392566878E+020
+  6.685143493181652E+020
+  6.696736542738653E+020
+  6.710528288137154E+020
+  6.726218887670121E+020
+  6.743056478111252E+020
+  6.760093182842314E+020
+  6.776385925796751E+020
+  6.791133804758140E+020
+  6.803753627732307E+020
+  6.813902813358389E+020
+  6.821464455151741E+020
+  6.826511588633762E+020
+  6.829264068689090E+020
+  6.830044322652417E+020
+  6.829235894831107E+020
+  6.827250850933496E+020
+  6.824507624268075E+020
+  6.821415846261754E+020
+  1.086142595471427E+026
+  1.086249416705996E+026
+  1.086383219251066E+026
+  1.086534477731151E+026
+  1.086685662915300E+026
+  1.086809345471935E+026
+  1.086867410636104E+026
+  1.086811727916224E+026
+  1.086586421758281E+026
+  1.086132094242294E+026
+  1.085391934958963E+026
+  1.084319207445473E+026
+  1.082885389771981E+026
+  1.081087952213875E+026
+  1.078956395241742E+026
+  1.076554944843379E+026
+  1.073980285866390E+026
+  1.071352912161095E+026
+  1.068801117766009E+026
+  1.066437385626951E+026
+  1.064327927398790E+026
+  1.062457279997540E+026
+  1.060690998177939E+026
+  1.058740409082874E+026
+  1.056133966960650E+026
+  1.052199908084472E+026
+  1.046064717829420E+026
+  1.036671531028350E+026
+  1.022822122574679E+026
+  1.003245558489050E+026
+  9.766954985016083E+025
+  9.420758735085907E+025
+  8.985904001654409E+025
+  8.459046464601370E+025
+  7.843004622750892E+025
+  7.147932598426745E+025
+  6.391764425606652E+025
+  5.599593392252002E+025
+  4.801798287059535E+025
+  4.031010549143970E+025
+  3.318377434618069E+025
+  2.688763288667067E+025
+  2.154208011992667E+025
+  1.713446221937211E+025
+  1.357454046275866E+025
+  1.074080303467813E+025
+  8.507603366867731E+024
+  6.759186480043646E+024
+  5.395579631191187E+024
+  4.333865954910592E+024
+  3.507103806017858E+024
+  2.862241642908696E+024
+  2.357775440697559E+024
+  1.961524564966764E+024
+  1.648687553079978E+024
+  1.400222927061772E+024
+  1.201541997376600E+024
+  1.041475438892619E+024
+  9.114680724113802E+023
+  8.049578389798164E+023
+  7.169003172178070E+023
+  6.434065838385637E+023
+  5.814684459683469E+023
+  5.287505510045611E+023
+  4.834334619083623E+023
+  4.440955017446461E+023
+  4.096241216262330E+023
+  3.791498632886617E+023
+  3.519978223000725E+023
+  3.276530377235567E+023
+  3.057376278035973E+023
+  2.859989863515484E+023
+  2.683102496255384E+023
+  2.526869608877724E+023
+  2.393280175555462E+023
+  2.286954824198838E+023
+  2.216579312916376E+023
+  2.197373331036973E+023
+  2.255219261683842E+023
+  2.433389390621385E+023
+  2.803219349682595E+023
+  3.480554481631792E+023
+  4.650248797120316E+023
+  6.601197964357445E+023
+  9.773899555372309E+023
+  1.482060941346587E+024
+  2.267368957390046E+024
+  3.460931556133272E+024
+  5.228000440627300E+024
+  7.767007324453075E+024
+  1.129053310686111E+025
+  1.598292827435004E+025
+  2.193400714861324E+025
+  2.909044899641059E+025
+  3.725477311080067E+025
+  4.610583972189807E+025
+  5.524076879525069E+025
+  6.423244546075634E+025
+  7.268788224333464E+025
+  8.029430351474012E+025
+  8.684537921568284E+025
+  9.224663664188392E+025
+  9.650414582112866E+025
+  9.970294159531741E+025
+  1.019815482022534E+026
+  1.035073958598761E+026
+  1.044559242709570E+026
+  1.049944839549351E+026
+  1.052710670877423E+026
+  1.054073865072438E+026
+  1.054956761466234E+026
+  1.055985953673276E+026
+  1.057516370393581E+026
+  1.059674074709295E+026
+  1.062410818771626E+026
+  1.065562974808349E+026
+  1.068907822680601E+026
+  1.072211524514885E+026
+  1.075265214460723E+026
+  1.077907919201926E+026
+  1.080036989007317E+026
+  1.081608177512187E+026
+  1.082628490169575E+026
+  1.083145235451502E+026
+  1.083233996510778E+026
+  1.082986921870656E+026
+  1.082502206799011E+026
+  1.081875895136997E+026
+  1.081196364055938E+026
+  1.080540994979680E+026
+  4.147826310216853E+025
+  4.147833851242312E+025
+  4.148207794687144E+025
+  4.148994323086780E+025
+  4.150188581605118E+025
+  4.151715638057403E+025
+  4.153416498867946E+025
+  4.155041834824752E+025
+  4.156255363970488E+025
+  4.156649497642714E+025
+  4.155774003396941E+025
+  4.153176341743496E+025
+  4.148450988600163E+025
+  4.141293272787098E+025
+  4.131551145534103E+025
+  4.119266667919996E+025
+  4.104698222285425E+025
+  4.088314653787840E+025
+  4.070753992680612E+025
+  4.052742386497716E+025
+  4.034973397543693E+025
+  4.017953482537563E+025
+  4.001825485123620E+025
+  3.986187368774896E+025
+  3.969927298313337E+025
+  3.951097996488699E+025
+  3.926853069407244E+025
+  3.893466255677085E+025
+  3.846452013093271E+025
+  3.780802697368325E+025
+  3.691352776823514E+025
+  3.573271584722809E+025
+  3.422669755949951E+025
+  3.237278195105261E+025
+  3.017122545201297E+025
+  2.765076472674391E+025
+  2.487147273452723E+025
+  2.192348170367359E+025
+  1.892063382013298E+025
+  1.598920555586163E+025
+  1.325331982501371E+025
+  1.081549742982115E+025
+  8.729447325352392E+024
+  6.996494325486228E+024
+  5.586527814153662E+024
+  4.455961407783101E+024
+  3.558450081438221E+024
+  2.850581577991012E+024
+  2.294403215355268E+024
+  1.858119809873010E+024
+  1.515833087543065E+024
+  1.246849372834551E+024
+  1.034852545093220E+024
+  8.670960217702589E+023
+  7.336835398830605E+023
+  6.269620765611656E+023
+  5.410263265098117E+023
+  4.713231866767776E+023
+  4.143408841970856E+023
+  3.673672592770799E+023
+  3.283032672588437E+023
+  2.955198920751381E+023
+  2.677488197634021E+023
+  2.439991699625233E+023
+  2.234942465188570E+023
+  2.056236384094386E+023
+  1.899071040492111E+023
+  1.759675469044100E+023
+  1.635110907317784E+023
+  1.523128512857376E+023
+  1.422075520183516E+023
+  1.330847358126703E+023
+  1.248891052463370E+023
+  1.176276536551965E+023
+  1.113869815553193E+023
+  1.063668930076809E+023
+  1.029405376614915E+023
+  1.017576490159664E+023
+  1.039165489570825E+023
+  1.112431524221141E+023
+  1.267312742462732E+023
+  1.552167552371148E+023
+  2.043739836176251E+023
+  2.861276682151149E+023
+  4.185471028427745E+023
+  6.282047168960937E+023
+  9.527921587802420E+023
+  1.443443149926246E+024
+  2.165667791439134E+024
+  3.197055973641025E+024
+  4.619061612637554E+024
+  6.499537505870885E+024
+  8.866175682566063E+024
+  1.168803665436579E+025
+  1.487692852975184E+025
+  1.829755154904378E+025
+  2.178592755499700E+025
+  2.517334615758103E+025
+  2.830969615834418E+025
+  3.108099494051560E+025
+  3.341839019984102E+025
+  3.529863836275225E+025
+  3.673803721690283E+025
+  3.778260316698955E+025
+  3.849710278737511E+025
+  3.895481754013787E+025
+  3.922907872593302E+025
+  3.938693702960780E+025
+  3.948492263306674E+025
+  3.956667158876000E+025
+  3.966214988417473E+025
+  3.978820962457902E+025
+  3.995020698703233E+025
+  4.014438354608173E+025
+  4.036067572598878E+025
+  4.058559931141849E+025
+  4.080488079253681E+025
+  4.100558125702471E+025
+  4.117756684494509E+025
+  4.131429431558367E+025
+  4.141297563505356E+025
+  4.147425175963898E+025
+  4.150154419834323E+025
+  4.150025836195081E+025
+  4.147697441713832E+025
+  4.143869940333877E+025
+  4.139222544076786E+025
+  4.134364368043950E+025
+  4.129803119616310E+025
+  4.125929221516037E+025
+  9.137233403378188E+024
+  9.136876184490931E+024
+  9.137741335460729E+024
+  9.140035743753167E+024
+  9.143816629712154E+024
+  9.148936587509538E+024
+  9.155004587818803E+024
+  9.161371211784823E+024
+  9.167144424567191E+024
+  9.171242925025353E+024
+  9.172488998246540E+024
+  9.169736803727080E+024
+  9.162027516810449E+024
+  9.148757246767626E+024
+  9.129837543999050E+024
+  9.105823575391329E+024
+  9.077982789937973E+024
+  9.048277680075428E+024
+  9.019240862855988E+024
+  8.993729883030333E+024
+  8.974562784179810E+024
+  8.964052299307389E+024
+  8.963474093380973E+024
+  8.972519907757436E+024
+  8.988797005413990E+024
+  9.007439406021022E+024
+  9.020894196462127E+024
+  9.018939586905626E+024
+  8.988982907853860E+024
+  8.916677688944995E+024
+  8.786887234423891E+024
+  8.585001287484793E+024
+  8.298573069092664E+024
+  7.919177857287212E+024
+  7.444300110925467E+024
+  6.878947212709800E+024
+  6.236599093716044E+024
+  5.539090250910388E+024
+  4.815141316300009E+024
+  4.097534093001797E+024
+  3.419314861078996E+024
+  2.808616905375884E+024
+  2.281327741696449E+024
+  1.839770936733677E+024
+  1.477863285373736E+024
+  1.185673735450020E+024
+  9.522078447740555E+023
+  7.669345578894577E+023
+  6.205050564514130E+023
+  5.049938454074566E+023
+  4.138813291716972E+023
+  3.419131785392362E+023
+  2.849145549666369E+023
+  2.396009435848735E+023
+  2.034056402113453E+023
+  1.743316515803649E+023
+  1.508292219327551E+023
+  1.316970213413680E+023
+  1.160037600442569E+023
+  1.030267405241283E+023
+  9.220409766858546E+022
+  8.309791071012111E+022
+  7.536584624777176E+022
+  6.873943940976959E+022
+  6.300751258786165E+022
+  5.800356081360297E+022
+  5.359620203549748E+022
+  4.968200698121208E+022
+  4.618019860428171E+022
+  4.302886041995609E+022
+  4.018243504968615E+022
+  3.761045281267837E+022
+  3.529763733028582E+022
+  3.324583661833301E+022
+  3.147869078554432E+022
+  3.005066696589757E+022
+  2.906319907551542E+022
+  2.869232820609954E+022
+  2.923462688069733E+022
+  3.118144438525513E+022
+  3.533560646646787E+022
+  4.298921991303261E+022
+  5.618494970308790E+022
+  7.808341889547135E+022
+  1.134513891345759E+023
+  1.692612953916483E+023
+  2.553415224001612E+023
+  3.849257245205274E+023
+  5.748085415812970E+023
+  8.446267378218519E+023
+  1.214580100080540E+024
+  1.700768189468299E+024
+  2.308270381415861E+024
+  3.026535211418446E+024
+  3.830095107681292E+024
+  4.681616628347248E+024
+  5.537074545393906E+024
+  6.352234774654183E+024
+  7.088793584108072E+024
+  7.718825359309760E+024
+  8.226881008149316E+024
+  8.609811700545227E+024
+  8.874899964203143E+024
+  9.037067652656057E+024
+  9.115855278022144E+024
+  9.132655626094224E+024
+  9.108455006138959E+024
+  9.062159740273343E+024
+  9.009484478841128E+024
+  8.962339004648566E+024
+  8.928644250534753E+024
+  8.912511587815719E+024
+  8.914717542483420E+024
+  8.933395807262852E+024
+  8.964854944654263E+024
+  9.004422197793768E+024
+  9.047218518443852E+024
+  9.088789390647026E+024
+  9.125546340474737E+024
+  9.155007318704761E+024
+  9.175852867528920E+024
+  9.187835322474238E+024
+  9.191589661735658E+024
+  9.188395946996595E+024
+  9.179933154453516E+024
+  9.168048196670613E+024
+  9.154555374381732E+024
+  9.141080807076491E+024
+  9.128958030073024E+024
+  9.119172126058950E+024
+  4.661478949911658E+025
+  4.661737928807921E+025
+  4.662250750325705E+025
+  4.663018815637399E+025
+  4.663998262180049E+025
+  4.665085871142858E+025
+  4.666110309660619E+025
+  4.666830900050959E+025
+  4.666945262461106E+025
+  4.666107971511835E+025
+  4.663960421080276E+025
+  4.660169940706430E+025
+  4.654474988533751E+025
+  4.646731616273586E+025
+  4.636954459840577E+025
+  4.625344139330445E+025
+  4.612292529762406E+025
+  4.598357971842017E+025
+  4.584204343434636E+025
+  4.570501243956081E+025
+  4.557787300997845E+025
+  4.546304307476329E+025
+  4.535815711854020E+025
+  4.525427957613041E+025
+  4.513436484582434E+025
+  4.497219455112874E+025
+  4.473201616794902E+025
+  4.436908811387338E+025
+  4.383131179033139E+025
+  4.306210082353450E+025
+  4.200458781460748E+025
+  4.060716984304032E+025
+  3.883020940415491E+025
+  3.665341211575783E+025
+  3.408300577155470E+025
+  3.115741770199897E+025
+  2.794984410219478E+025
+  2.456615523114047E+025
+  2.113719683381743E+025
+  1.780577773317605E+025
+  1.471025156490170E+025
+  1.196304555870760E+025
+  9.621021361840958E+024
+  7.682398696685015E+024
+  6.110671776471086E+024
+  4.854853862997607E+024
+  3.861457525567234E+024
+  3.080778432587791E+024
+  2.469616341436910E+024
+  1.991954198721781E+024
+  1.618580418972625E+024
+  1.326246613647590E+024
+  1.096691844731153E+024
+  9.157026068462437E+023
+  7.722834436013625E+023
+  6.579614284475396E+023
+  5.662214767581680E+023
+  4.920577212031463E+023
+  4.316223916254539E+023
+  3.819538865794856E+023
+  3.407677557457843E+023
+  3.062969121227247E+023
+  2.771699640227402E+023
+  2.523188494304692E+023
+  2.309088924225269E+023
+  2.122859848033404E+023
+  1.959368615582465E+023
+  1.814594380999871E+023
+  1.685409730649572E+023
+  1.569424843379711E+023
+  1.464884609673568E+023
+  1.370615809472073E+023
+  1.286029984735402E+023
+  1.211199940782668E+023
+  1.147046645923498E+023
+  1.095702691196726E+023
+  1.061163998958302E+023
+  1.050410329614666E+023
+  1.075275568915839E+023
+  1.155488095295718E+023
+  1.323481445306328E+023
+  1.631782722557716E+023
+  2.163975624242718E+023
+  3.050303132555840E+023
+  4.488723836658463E+023
+  6.771333744751296E+023
+  1.031402515667377E+024
+  1.568347356306740E+024
+  2.360947928470888E+024
+  3.496225273525651E+024
+  5.066448525431953E+024
+  7.150028484647837E+024
+  9.782060222563969E+024
+  1.293328812469703E+025
+  1.651064638406069E+025
+  2.036745161759316E+025
+  2.432295646749975E+025
+  2.818842973583620E+025
+  3.179308676082134E+025
+  3.500407158610689E+025
+  3.773729427253521E+025
+  3.995890898245461E+025
+  4.167943983804591E+025
+  4.294353902443721E+025
+  4.381823955136907E+025
+  4.438180890025388E+025
+  4.471439912908189E+025
+  4.489094155873771E+025
+  4.497626826808245E+025
+  4.502222956261053E+025
+  4.506652090118844E+025
+  4.513293755762100E+025
+  4.523277716238014E+025
+  4.536708766532371E+025
+  4.552942282898420E+025
+  4.570874699024626E+025
+  4.589215105151459E+025
+  4.606711118417208E+025
+  4.622312732227858E+025
+  4.635269246497080E+025
+  4.645164059738829E+025
+  4.651899081968896E+025
+  4.655644897379668E+025
+  4.656773852491945E+025
+  4.655789598565986E+025
+  4.653260333530314E+025
+  4.649760235631875E+025
+  4.645824378766341E+025
+  4.641918930691800E+025
+  4.638424579775552E+025
+  3.895925442543138E+023
+  3.895899992962600E+023
+  3.896305727387488E+023
+  3.897203589070970E+023
+  3.898597889163649E+023
+  3.900416701795250E+023
+  3.902498658801808E+023
+  3.904589201364656E+023
+  3.906348508244727E+023
+  3.907373693617681E+023
+  3.907235802520130E+023
+  3.905529737038420E+023
+  3.901933529422545E+023
+  3.896271280422371E+023
+  3.888571739028860E+023
+  3.879112740730791E+023
+  3.868440982449194E+023
+  3.857357092400300E+023
+  3.846857943793245E+023
+  3.838031928054028E+023
+  3.831908383194034E+023
+  3.829269022206923E+023
+  3.830436066022395E+023
+  3.835057702420852E+023
+  3.841915434970868E+023
+  3.848779285171246E+023
+  3.852335794671020E+023
+  3.848211125241080E+023
+  3.831108264347914E+023
+  3.795073821312828E+023
+  3.733905136902915E+023
+  3.641699672613750E+023
+  3.513532029544170E+023
+  3.346216201244454E+023
+  3.139071599003567E+023
+  2.894566865255385E+023
+  2.618680217017593E+023
+  2.320812143721894E+023
+  2.013138879500188E+023
+  1.709411494082780E+023
+  1.423367140953231E+023
+  1.166585672032200E+023
+  9.454748163471402E+022
+  7.607767129001693E+022
+  6.097539154649667E+022
+  4.881036938116655E+022
+  3.911199301940879E+022
+  3.143247221995157E+022
+  2.537611413770852E+022
+  2.060868548864595E+022
+  1.685609242810136E+022
+  1.389804544638127E+022
+  1.155995889548535E+022
+  9.704807886739808E+021
+  8.225757274337714E+021
+  7.039866730273911E+021
+  6.082906279682646E+021
+  5.305187770327687E+021
+  4.668267976321130E+021
+  4.142371123467624E+021
+  3.704390580058019E+021
+  3.336349016399762E+021
+  3.024217245223062E+021
+  2.757011385587200E+021
+  2.526104875723346E+021
+  2.324705954439379E+021
+  2.147462683627118E+021
+  1.990166755337979E+021
+  1.849534726952838E+021
+  1.723051600013881E+021
+  1.608867586391622E+021
+  1.505745477455273E+021
+  1.413064574983530E+021
+  1.330899546547720E+021
+  1.260211590757273E+021
+  1.203218902929463E+021
+  1.164059048264708E+021
+  1.149924333680929E+021
+  1.172950164109313E+021
+  1.253271713123880E+021
+  1.423835635378574E+021
+  1.737744544008390E+021
+  2.279073350676994E+021
+  3.178120741288316E+021
+  4.631746600201168E+021
+  6.928472291020474E+021
+  1.047592343968596E+022
+  1.582442943243887E+022
+  2.367471985510137E+022
+  3.484973681541024E+022
+  5.020184932314862E+022
+  7.042060947634165E+022
+  9.574507929241878E+022
+  1.257689433480998E+023
+  1.594644630493125E+023
+  1.953030022353576E+023
+  2.314647307723531E+023
+  2.661050363515020E+023
+  2.976097117282179E+023
+  3.247826806194623E+023
+  3.469379443370516E+023
+  3.638976008246678E+023
+  3.759190480555578E+023
+  3.835827071405995E+023
+  3.876689368370148E+023
+  3.890443389662858E+023
+  3.885682531906779E+023
+  3.870229298198875E+023
+  3.850665913437643E+023
+  3.832068474125153E+023
+  3.817916290296550E+023
+  3.810149417326951E+023
+  3.809346920839253E+023
+  3.814994633146319E+023
+  3.825805957553870E+023
+  3.840056077038568E+023
+  3.855891636173445E+023
+  3.871585513992770E+023
+  3.885718193153326E+023
+  3.897280363503014E+023
+  3.905702790482924E+023
+  3.910827645821641E+023
+  3.912840209611313E+023
+  3.912180597058593E+023
+  3.909451208259868E+023
+  3.905329198729875E+023
+  3.900489950875986E+023
+  3.895547431468920E+023
+  3.891013885912141E+023
+  3.887277683728497E+023
+  7.516783875991832E+023
+  7.516137972989070E+023
+  7.516732130306858E+023
+  7.518809614583347E+023
+  7.522472243011413E+023
+  7.527624749018157E+023
+  7.533933059875871E+023
+  7.540804485759631E+023
+  7.547396247214542E+023
+  7.552659246746511E+023
+  7.555419539467599E+023
+  7.554494665418756E+023
+  7.548837803973658E+023
+  7.537697595696667E+023
+  7.520775786453497E+023
+  7.498360272801571E+023
+  7.471408641591199E+023
+  7.441557464367385E+023
+  7.411036206328931E+023
+  7.382472358448127E+023
+  7.358586305725690E+023
+  7.341789430401758E+023
+  7.333714939557831E+023
+  7.334725254741673E+023
+  7.343449979661900E+023
+  7.356412867926078E+023
+  7.367804794106958E+023
+  7.369454031395837E+023
+  7.351037455606707E+023
+  7.300568016988594E+023
+  7.205183559199016E+023
+  7.052244671483478E+023
+  6.830716800281105E+023
+  6.532756868100678E+023
+  6.155345315886385E+023
+  5.701711057230509E+023
+  5.182218058155007E+023
+  4.614365482146404E+023
+  4.021648438920985E+023
+  3.431255293971766E+023
+  2.870907826165275E+023
+  2.364490949350098E+023
+  1.925806739718329E+023
+  1.557331454953636E+023
+  1.254446173524742E+023
+  1.009220186254153E+023
+  8.127387630082618E+022
+  6.563923769753056E+022
+  5.324945852991174E+022
+  4.345000312057690E+022
+  3.570039041361803E+022
+  2.956354388290107E+022
+  2.469108853403774E+022
+  2.080813014935220E+022
+  1.769924332604883E+022
+  1.519636357560020E+022
+  1.316872345053830E+022
+  1.151469835554915E+022
+  1.015531373504315E+022
+  9.029137989938370E+021
+  8.088300652859442E+021
+  7.295408043405678E+021
+  6.621165827366897E+021
+  6.042553533214530E+021
+  5.541427646806097E+021
+  5.103456641499583E+021
+  4.717313271144639E+021
+  4.374067207420475E+021
+  4.066735555200000E+021
+  3.789961162854019E+021
+  3.539800518732440E+021
+  3.313616395272269E+021
+  3.110087987075496E+021
+  2.929376971118188E+021
+  2.773527352877741E+021
+  2.647238242015260E+021
+  2.559242805541672E+021
+  2.524667230437356E+021
+  2.568945182109015E+021
+  2.734136690927403E+021
+  3.088842005835927E+021
+  3.743272700442201E+021
+  4.871337643819269E+021
+  6.741594000907853E+021
+  9.758191929710975E+021
+  1.451084870313209E+022
+  2.182850888396852E+022
+  3.282363846372879E+022
+  4.890229046653287E+022
+  7.169948090079039E+022
+  1.028827638978909E+023
+  1.437562597539271E+023
+  1.946790142752212E+023
+  2.546856379723096E+023
+  3.215610718407472E+023
+  3.921128260636267E+023
+  4.626193124978025E+023
+  5.293822206844777E+023
+  5.892421392692470E+023
+  6.399447524251902E+023
+  6.803048396534429E+023
+  7.101775866023459E+023
+  7.302888930573552E+023
+  7.419910115312413E+023
+  7.470023808193235E+023
+  7.471719201187325E+023
+  7.442884023675520E+023
+  7.399407685963240E+023
+  7.354269502012122E+023
+  7.317056168164351E+023
+  7.293848822929533E+023
+  7.287422750072945E+023
+  7.297700221306886E+023
+  7.322387066705559E+023
+  7.357711332961983E+023
+  7.399175595315236E+023
+  7.442239301136789E+023
+  7.482865527946982E+023
+  7.517894018460969E+023
+  7.545232223558029E+023
+  7.563881591754906E+023
+  7.573834077627766E+023
+  7.575883315517192E+023
+  7.571395442173244E+023
+  7.562075234520058E+023
+  7.549749017675034E+023
+  7.536177954277065E+023
+  7.522914308705258E+023
+  7.511206113993118E+023
+  7.501948128757293E+023
+  1.025000492698535E+023
+  1.024822882107762E+023
+  1.024867956947103E+023
+  1.025186421543071E+023
+  1.025805652709004E+023
+  1.026719546575523E+023
+  1.027880330581495E+023
+  1.029193694832993E+023
+  1.030518407464797E+023
+  1.031671634279542E+023
+  1.032440539167908E+023
+  1.032599960267788E+023
+  1.031935294117362E+023
+  1.030268903467868E+023
+  1.027487445743738E+023
+  1.023566736267806E+023
+  1.018590258040219E+023
+  1.012757304899315E+023
+  1.006377131593957E+023
+  9.998465127602146E+022
+  9.936098115490435E+022
+  9.881028941104203E+022
+  9.836847038149657E+022
+  9.805626283778809E+022
+  9.787195461496988E+022
+  9.778513345016484E+022
+  9.773235980010937E+022
+  9.761556139185294E+022
+  9.730383347577249E+022
+  9.663919890817303E+022
+  9.544672826652540E+022
+  9.354917915695434E+022
+  9.078587843436815E+022
+  8.703483126270909E+022
+  8.223595467578474E+022
+  7.641201979519744E+022
+  6.968272390020957E+022
+  6.226695205478666E+022
+  5.446944358772745E+022
+  4.665111324214373E+022
+  3.918681346330696E+022
+  3.240545969446209E+022
+  2.650308215891417E+022
+  2.152305217645048E+022
+  1.741166392415844E+022
+  1.406871098583791E+022
+  1.137891551874725E+022
+  9.229573547464151E+021
+  7.519213924293605E+021
+  6.160851664973125E+021
+  5.082246567228719E+021
+  4.224676235506748E+021
+  3.541109356062668E+021
+  2.994264481979172E+021
+  2.554796806222299E+021
+  2.199715566229156E+021
+  1.911058335402338E+021
+  1.674809829585575E+021
+  1.480036019715217E+021
+  1.318199460967006E+021
+  1.182622876275707E+021
+  1.068071755769719E+021
+  9.704312524839497E+020
+  8.864571072823359E+020
+  8.135843517761951E+020
+  7.497809836510052E+020
+  6.934366684596892E+020
+  6.432788513393777E+020
+  5.983105730120862E+020
+  5.577659379564288E+020
+  5.210807894341133E+020
+  4.878779813714109E+020
+  4.579690770471797E+020
+  4.313778873477866E+020
+  4.083967702149133E+020
+  3.896951630472504E+020
+  3.765129125887530E+020
+  3.709904434817154E+020
+  3.767155811444777E+020
+  3.996042021497199E+020
+  4.492779895461910E+020
+  5.411516595895621E+020
+  6.994787089310950E+020
+  9.615970551919980E+020
+  1.383506827234198E+021
+  2.046612233872545E+021
+  3.064845394993407E+021
+  4.590326764579800E+021
+  6.814112802931343E+021
+  9.956501397592521E+021
+  1.423920903590505E+022
+  1.983048492223764E+022
+  2.676572563953388E+022
+  3.489748923629252E+022
+  4.390893768329830E+022
+  5.335442460324268E+022
+  6.272351818341631E+022
+  7.151786506810539E+022
+  7.932128564204812E+022
+  8.584788716675050E+022
+  9.096157420223656E+022
+  9.466897860618564E+022
+  9.709347376372597E+022
+  9.843968435589074E+022
+  9.895662641155732E+022
+  9.890489808521165E+022
+  9.853058742746274E+022
+  9.804655502405342E+022
+  9.762065868908064E+022
+  9.737009744784414E+022
+  9.736101682794007E+022
+  9.761254601205406E+022
+  9.810437643376736E+022
+  9.878682822694595E+022
+  9.959216881501822E+022
+  1.004458618931384E+023
+  1.012765205633387E+023
+  1.020236305553269E+023
+  1.026425360674206E+023
+  1.031066328441876E+023
+  1.034070898549728E+023
+  1.035506730344228E+023
+  1.035563679445785E+023
+  1.034514887054908E+023
+  1.032678109358568E+023
+  1.030380504613445E+023
+  1.027928869947947E+023
+  1.025587106558377E+023
+  1.023561670128499E+023
+  1.021994684102552E+023
+  1.731382468234861E+023
+  1.731552362770650E+023
+  1.731775420034736E+023
+  1.732038043194265E+023
+  1.732312738538235E+023
+  1.732555008355401E+023
+  1.732702295627178E+023
+  1.732675602598975E+023
+  1.732384055239800E+023
+  1.731732975423760E+023
+  1.730635309485876E+023
+  1.729025479469277E+023
+  1.726874313891425E+023
+  1.724203184593794E+023
+  1.721094853995283E+023
+  1.717698149144509E+023
+  1.714223564390567E+023
+  1.710927273257556E+023
+  1.708081858740032E+023
+  1.705933407817308E+023
+  1.704646410305085E+023
+  1.704239951714318E+023
+  1.704520680351830E+023
+  1.705019621397686E+023
+  1.704940843082915E+023
+  1.703130159911365E+023
+  1.698071607236668E+023
+  1.687918623716763E+023
+  1.670565993751704E+023
+  1.643767586279129E+023
+  1.605303176366975E+023
+  1.553193964512980E+023
+  1.485959396951975E+023
+  1.402896601317369E+023
+  1.304348638987751E+023
+  1.191911673330169E+023
+  1.068520103462547E+023
+  9.383514562398913E+022
+  8.065172723027752E+022
+  6.785537725989920E+022
+  5.597877409631823E+022
+  4.545170891382202E+022
+  3.648902054260768E+022
+  2.908043048527146E+022
+  2.308290632700497E+022
+  1.829849727334275E+022
+  1.452030262642674E+022
+  1.155650187616657E+022
+  9.240683497354599E+021
+  7.434337469420120E+021
+  6.025305930743149E+021
+  4.924470087755504E+021
+  4.061944137828083E+021
+  3.383423328282208E+021
+  2.846970472716072E+021
+  2.420326868404289E+021
+  2.078733133759600E+021
+  1.803200977159908E+021
+  1.579162888719151E+021
+  1.395428149841506E+021
+  1.243381725981841E+021
+  1.116372874916221E+021
+  1.009250389079783E+021
+  9.180103479854074E+020
+  8.395298021126660E+020
+  7.713659609700696E+020
+  7.116053628131284E+020
+  6.587513693508165E+020
+  6.116414004172696E+020
+  5.693878777968245E+020
+  5.313392007762370E+020
+  4.970596128166115E+020
+  4.663300458191075E+020
+  4.391766633814741E+020
+  4.159409171260447E+020
+  3.974160041058564E+020
+  3.850917906191595E+020
+  3.815763039747342E+020
+  3.912999748800336E+020
+  4.216618343108842E+020
+  4.848456935955569E+020
+  6.006142491961993E+020
+  8.004633768319835E+020
+  1.133548814449765E+021
+  1.674708058708725E+021
+  2.534565128914013E+021
+  3.870937712137965E+021
+  5.899331390986864E+021
+  8.897988972761904E+021
+  1.319971799986493E+022
+  1.915893858217923E+022
+  2.707932471528347E+022
+  3.710150963503843E+022
+  4.912177545064170E+022
+  6.279205842230744E+022
+  7.755671286407834E+022
+  9.272542720379273E+022
+  1.075719396104882E+023
+  1.214333175033120E+023
+  1.337875526869125E+023
+  1.442968851061409E+023
+  1.528155627280021E+023
+  1.593693018070782E+023
+  1.641176070631091E+023
+  1.673098091702805E+023
+  1.692429003035831E+023
+  1.702258168531334E+023
+  1.705519625215545E+023
+  1.704799650647196E+023
+  1.702218299125747E+023
+  1.699374410549469E+023
+  1.697343934263005E+023
+  1.696721708517270E+023
+  1.697696155371008E+023
+  1.700145037445838E+023
+  1.703739492879274E+023
+  1.708044006445744E+023
+  1.712602191115563E+023
+  1.717001847719286E+023
+  1.720916789795310E+023
+  1.724126454815407E+023
+  1.726516982799488E+023
+  1.728069201260445E+023
+  1.728839495770610E+023
+  1.728938352536840E+023
+  1.728509188071114E+023
+  1.727709159909340E+023
+  1.726693960942615E+023
+  1.725607307132421E+023
+  1.724574423060920E+023
+  1.341102252421081E+022
+  1.341147579223737E+022
+  1.341300881025404E+022
+  1.341571154820008E+022
+  1.341951181994182E+022
+  1.342412439225260E+022
+  1.342901992581371E+022
+  1.343342213219866E+022
+  1.343633869374127E+022
+  1.343663311886120E+022
+  1.343313817363964E+022
+  1.342480408690639E+022
+  1.341086982563074E+022
+  1.339103967225719E+022
+  1.336564048760468E+022
+  1.333573014320439E+022
+  1.330312600265092E+022
+  1.327032451057311E+022
+  1.324028970058546E+022
+  1.321610049454595E+022
+  1.320046374287810E+022
+  1.319512027770821E+022
+  1.320019182716991E+022
+  1.321353399412971E+022
+  1.323017165285191E+022
+  1.324189657719205E+022
+  1.323710353209859E+022
+  1.320093296648241E+022
+  1.311577875170558E+022
+  1.296220886905486E+022
+  1.272033162758613E+022
+  1.237161047020113E+022
+  1.190107420592285E+022
+  1.129977678500200E+022
+  1.056723240852592E+022
+  9.713408750135485E+021
+  8.759752712441948E+021
+  7.738724791685311E+021
+  6.691502814648438E+021
+  5.663905606446508E+021
+  4.701115753833250E+021
+  3.840665698464689E+021
+  3.102666348182262E+021
+  2.488443649377913E+021
+  1.987943918669314E+021
+  1.586131385541616E+021
+  1.266834920867875E+021
+  1.014811772858800E+021
+  8.166810286040752E+020
+  6.611989709426501E+020
+  5.391860237271994E+020
+  4.432939502321998E+020
+  3.677204725250091E+020
+  3.079273675938393E+020
+  2.603879296223372E+020
+  2.223728827891017E+020
+  1.917750796367258E+020
+  1.669692376117662E+020
+  1.467014805045943E+020
+  1.300033191905930E+020
+  1.161252003848649E+020
+  1.044854721200071E+020
+  9.463135890481974E+019
+  8.620921925640382E+019
+  7.894194210186492E+019
+  7.261182168150200E+019
+  6.704764048837489E+019
+  6.211500022283003E+019
+  5.770918986528373E+019
+  5.375008969837678E+019
+  5.017880657395294E+019
+  4.695595142359799E+019
+  4.406174834988767E+019
+  4.149856728469522E+019
+  3.929708924211313E+019
+  3.752827452321282E+019
+  3.632478878674727E+019
+  3.591777785816600E+019
+  3.669812502295422E+019
+  3.931578888652802E+019
+  4.483652214458365E+019
+  5.498171910891714E+019
+  7.248278435461052E+019
+  1.015828044069306E+020
+  1.487089526054338E+020
+  2.233082707842427E+020
+  3.387718317892146E+020
+  5.132492344782803E+020
+  7.699611563662448E+020
+  1.136352278533980E+021
+  1.641128427912183E+021
+  2.307999968224984E+021
+  3.146203435559072E+021
+  4.143928397820458E+021
+  5.268835306269029E+021
+  6.471728631971903E+021
+  7.693207902796729E+021
+  8.872294030083133E+021
+  9.954829627545996E+021
+  1.089979150327891E+022
+  1.168253751591379E+022
+  1.229499014034683E+022
+  1.274346719155326E+022
+  1.304516108028514E+022
+  1.322420164279892E+022
+  1.330797380879622E+022
+  1.332405848721175E+022
+  1.329792410739247E+022
+  1.325135154356003E+022
+  1.320151337084940E+022
+  1.316061584012217E+022
+  1.313601591558074E+022
+  1.313072565153115E+022
+  1.314420602955609E+022
+  1.317333727053331E+022
+  1.321344292757378E+022
+  1.325924993587533E+022
+  1.330568943862162E+022
+  1.334847925904618E+022
+  1.338446891481638E+022
+  1.341176297033344E+022
+  1.342966393698970E+022
+  1.343849126284149E+022
+  1.343933617572454E+022
+  1.343380018848338E+022
+  1.342374499016287E+022
+  1.341107161166379E+022
+  1.339754742033431E+022
+  1.338468833674527E+022
+  1.337369175440848E+022
+  9.443142514841472E+020
+  9.444646385430065E+020
+  9.445881844153979E+020
+  9.446624571647191E+020
+  9.446622282765481E+020
+  9.445597249235381E+020
+  9.443254986327066E+020
+  9.439299352585309E+020
+  9.433452765093982E+020
+  9.425482612191595E+020
+  9.415232199372451E+020
+  9.402651815420828E+020
+  9.387825062595316E+020
+  9.370984600902759E+020
+  9.352509894094303E+020
+  9.332898962949251E+020
+  9.312707010215676E+020
+  9.292446862708948E+020
+  9.272449493988518E+020
+  9.252687592018632E+020
+  9.232571006064549E+020
+  9.210729216064803E+020
+  9.184801700167216E+020
+  9.151261292636917E+020
+  9.105297784683005E+020
+  9.040789192149600E+020
+  8.950386967626821E+020
+  8.825739880429039E+020
+  8.657879664810029E+020
+  8.437788540718530E+020
+  8.157160652018321E+020
+  7.809350683515896E+020
+  7.390467850199314E+020
+  6.900519967594408E+020
+  6.344445341271308E+020
+  5.732805224224655E+020
+  5.081874951760551E+020
+  4.412904911581512E+020
+  3.750452380075000E+020
+  3.119908401391888E+020
+  2.544610871099576E+020
+  2.042288970574098E+020
+  1.620353434574248E+020
+  1.275949662098679E+020
+  1.000495180509575E+020
+  7.833373114861517E+019
+  6.138377088711401E+019
+  4.824041749390581E+019
+  3.808836640366798E+019
+  3.026027925004814E+019
+  2.422363449627413E+019
+  1.956091014668497E+019
+  1.594876094543286E+019
+  1.313891168695029E+019
+  1.094182566075263E+019
+  9.213332357620994E+018
+  7.843982035333065E+018
+  6.750732279236298E+018
+  5.870542085386662E+018
+  5.155482268528515E+018
+  4.569028322557116E+018
+  4.083263218435268E+018
+  3.676773912386031E+018
+  3.333073303845985E+018
+  3.039418590757911E+018
+  2.785928174857036E+018
+  2.564923661483964E+018
+  2.370442397063668E+018
+  2.197880750370393E+018
+  2.043740363499433E+018
+  1.905460361695229E+018
+  1.781329743271218E+018
+  1.670488094502470E+018
+  1.573042512329754E+018
+  1.490358753475028E+018
+  1.425631890779346E+018
+  1.384915710352368E+018
+  1.378903544134737E+018
+  1.425921822521630E+018
+  1.556837253945212E+018
+  1.822898560083542E+018
+  2.307922168431166E+018
+  3.146627069793634E+018
+  4.551170476434985E+018
+  6.847712954953420E+018
+  1.052358406776632E+019
+  1.628245094306489E+019
+  2.509864992098002E+019
+  3.825132176366581E+019
+  5.730359265843163E+019
+  8.397300965594391E+019
+  1.198218936449220E+020
+  1.657536276983851E+020
+  2.216199871733731E+020
+  2.861715955944717E+020
+  3.571672643831155E+020
+  4.316515700919979E+020
+  5.063668916109927E+020
+  5.781939098282082E+020
+  6.445196800348379E+020
+  7.034690776604424E+020
+  7.539833332498937E+020
+  7.957689279617165E+020
+  8.291611125654663E+020
+  8.549488592297357E+020
+  8.741984763751960E+020
+  8.880990628200565E+020
+  8.978401907171574E+020
+  9.045234147185970E+020
+  9.091046040869557E+020
+  9.123625056481671E+020
+  9.148888810470721E+020
+  9.170958741037200E+020
+  9.192363782850413E+020
+  9.214330400768101E+020
+  9.237114239356570E+020
+  9.260331132568962E+020
+  9.283252929674921E+020
+  9.305045343930147E+020
+  9.324937652753448E+020
+  9.342324844942389E+020
+  9.356811298862844E+020
+  9.368211866396780E+020
+  9.376529367126934E+020
+  9.381923204560409E+020
+  9.384674954934388E+020
+  9.385154430047654E+020
+  9.383793326491823E+020
+  9.381067823471138E+020
+  9.377484867889147E+020
+  7.260649628617495E+025
+  7.261746611619356E+025
+  7.262723964697723E+025
+  7.263429996144479E+025
+  7.263683651302472E+025
+  7.263273951983927E+025
+  7.261965254064253E+025
+  7.259509029685349E+025
+  7.255661602811061E+025
+  7.250208913775566E+025
+  7.242997036260774E+025
+  7.233964768532513E+025
+  7.223173946613743E+025
+  7.210832015236815E+025
+  7.197299879672768E+025
+  7.183077388555014E+025
+  7.168759369311118E+025
+  7.154956841688849E+025
+  7.142180930698385E+025
+  7.130691218190980E+025
+  7.120315613675569E+025
+  7.110254633687168E+025
+  7.098888324790385E+025
+  7.083608050312434E+025
+  7.060697415656193E+025
+  7.025286705673427E+025
+  6.971403905920521E+025
+  6.892143537314653E+025
+  6.779972639536747E+025
+  6.627190481587150E+025
+  6.426552145447374E+025
+  6.172051428485767E+025
+  5.859830770194897E+025
+  5.489142890494305E+025
+  5.063233905161028E+025
+  4.589962896711230E+025
+  4.081941195674484E+025
+  3.555996958083840E+025
+  3.031872305672999E+025
+  2.530240640809888E+025
+  2.070352334811365E+025
+  1.667097870472459E+025
+  1.327084858386637E+025
+  1.048563204108682E+025
+  8.250415759553762E+024
+  6.482390376766363E+024
+  5.097849736902044E+024
+  4.020745452790151E+024
+  3.186073937477923E+024
+  2.540381562643129E+024
+  2.040839631008722E+024
+  1.653743382748570E+024
+  1.352899353011070E+024
+  1.118128242925812E+024
+  9.339752533565848E+023
+  7.886478538110919E+023
+  6.731660352146690E+023
+  5.806958907757485E+023
+  5.060341362533570E+023
+  4.452132491594022E+023
+  3.952010968779283E+023
+  3.536735749356226E+023
+  3.188431165562959E+023
+  2.893296724350481E+023
+  2.640638391490985E+023
+  2.422142812158771E+023
+  2.231335301742514E+023
+  2.063177529011149E+023
+  1.913772655116308E+023
+  1.780155388282846E+023
+  1.660153163808600E+023
+  1.552313870484367E+023
+  1.455907044291141E+023
+  1.371021810249373E+023
+  1.298809845503172E+023
+  1.241960780441186E+023
+  1.205558551430354E+023
+  1.198560634790339E+023
+  1.236280286357958E+023
+  1.344447215641520E+023
+  1.565680945516251E+023
+  1.969521594862864E+023
+  2.667471917277251E+023
+  3.834680125384268E+023
+  5.739670135818570E+023
+  8.782441901338630E+023
+  1.353861162896770E+024
+  2.080211584315797E+024
+  3.161043552000152E+024
+  4.722390669911938E+024
+  6.901560956110140E+024
+  9.821487093009443E+024
+  1.354956252432643E+025
+  1.806618220183472E+025
+  2.326180688790618E+025
+  2.894716085885239E+025
+  3.487705678226631E+025
+  4.078479856483181E+025
+  4.641833268954530E+025
+  5.156992074097216E+025
+  5.609425443900269E+025
+  5.991391454202427E+025
+  6.301428402347404E+025
+  6.543166430275869E+025
+  6.723846424253248E+025
+  6.852848346824382E+025
+  6.940413185128943E+025
+  6.996638090307094E+025
+  7.030754081357844E+025
+  7.050660185501967E+025
+  7.062676500035453E+025
+  7.071478783718958E+025
+  7.080179437657106E+025
+  7.090519725554946E+025
+  7.103135851756683E+025
+  7.117859723463969E+025
+  7.134016898845108E+025
+  7.150690800107011E+025
+  7.166932697078960E+025
+  7.181908430522598E+025
+  7.194982801602889E+025
+  7.205750336127133E+025
+  7.214027036664206E+025
+  7.219820270385561E+025
+  7.223290326087527E+025
+  7.224709807232620E+025
+  7.224424708669955E+025
+  7.222823477012696E+025
+  7.220315694149991E+025
+  7.217316695910023E+025
+  1.476312264563328E+026
+  1.476510210619850E+026
+  1.476708671254251E+026
+  1.476883349688152E+026
+  1.477001782280606E+026
+  1.477022390010505E+026
+  1.476894974530478E+026
+  1.476562945225806E+026
+  1.475967285064999E+026
+  1.475052558996783E+026
+  1.473774732626964E+026
+  1.472110004016487E+026
+  1.470063626676525E+026
+  1.467677385200966E+026
+  1.465033991401153E+026
+  1.462256462310380E+026
+  1.459500620011855E+026
+  1.456939210024911E+026
+  1.454736795005287E+026
+  1.453015576627114E+026
+  1.451813585324391E+026
+  1.451038101121163E+026
+  1.450418503878313E+026
+  1.449463770167137E+026
+  1.447430378655103E+026
+  1.443306426504372E+026
+  1.435817413158092E+026
+  1.423458625000303E+026
+  1.404558508987987E+026
+  1.377376741012763E+026
+  1.340239318159974E+026
+  1.291709951805316E+026
+  1.230791225572891E+026
+  1.157139802293015E+026
+  1.071267985835932E+026
+  9.746916297784337E+025
+  8.699766506443306E+025
+  7.606400907577594E+025
+  6.508826373883341E+025
+  5.451681463022298E+025
+  4.477141943442588E+025
+  3.618470064408478E+025
+  2.891312450307251E+025
+  2.293248755139498E+025
+  1.811423892311743E+025
+  1.428866500680084E+025
+  1.128170308979013E+025
+  8.933799179724663E+024
+  7.107674995281319E+024
+  5.689837224915494E+024
+  4.588924685037706E+024
+  3.732731870587314E+024
+  3.064920280374729E+024
+  2.541921724908401E+024
+  2.130245958745743E+024
+  1.804247663413850E+024
+  1.544329935756870E+024
+  1.335528415537602E+024
+  1.166411239146756E+024
+  1.028232946214127E+024
+  9.142883832816817E+023
+  8.194218779364185E+023
+  7.396557548311741E+023
+  6.719099417255430E+023
+  6.137907987027318E+023
+  5.634324570637714E+023
+  5.193780298522740E+023
+  4.804912457770001E+023
+  4.458915753307095E+023
+  4.149079928242178E+023
+  3.870484072565040E+023
+  3.619838040962387E+023
+  3.395486686698655E+023
+  3.197628739419872E+023
+  3.028857373294719E+023
+  2.895215873981797E+023
+  2.808096236246925E+023
+  2.787513264759701E+023
+  2.867588122062433E+023
+  3.105498414631841E+023
+  3.595707660631955E+023
+  4.491944420405713E+023
+  6.040037546333063E+023
+  8.625032416495062E+023
+  1.283542853694081E+024
+  1.954488567259974E+024
+  3.000582670270854E+024
+  4.593807775268651E+024
+  6.957714656287020E+024
+  1.036203019391270E+025
+  1.509770457632333E+025
+  2.142034832418303E+025
+  2.946081335781857E+025
+  3.915842265540640E+025
+  5.025736973261152E+025
+  6.233199698194612E+025
+  7.484134937295536E+025
+  8.720566599996682E+025
+  9.888522076140394E+025
+  1.094436951106771E+026
+  1.185854790105863E+026
+  1.261650984638410E+026
+  1.321738757824096E+026
+  1.367122920879627E+026
+  1.399565657501435E+026
+  1.421259561318135E+026
+  1.434546633852169E+026
+  1.441699208058483E+026
+  1.444763918051567E+026
+  1.445462626308627E+026
+  1.445142116918256E+026
+  1.444764526341858E+026
+  1.444930881430369E+026
+  1.445929877317556E+026
+  1.447803279122516E+026
+  1.450418753738625E+026
+  1.453541252979754E+026
+  1.456895601962882E+026
+  1.460215439249148E+026
+  1.463276440655653E+026
+  1.465914210559834E+026
+  1.468029119622309E+026
+  1.469581722223231E+026
+  1.470582902776597E+026
+  1.471082061478171E+026
+  1.471155012108563E+026
+  1.470892667258898E+026
+  1.470391991307452E+026
+  1.469749687127194E+026
+  1.469057941738090E+026
+  1.309582382300598E+025
+  1.309772950457871E+025
+  1.309947279350415E+025
+  1.310079629104012E+025
+  1.310138532773915E+025
+  1.310086461891555E+025
+  1.309880563450944E+025
+  1.309474623239828E+025
+  1.308822182438831E+025
+  1.307881026939799E+025
+  1.306618836496991E+025
+  1.305019339715120E+025
+  1.303088187754963E+025
+  1.300857543623482E+025
+  1.298388094790246E+025
+  1.295767060234699E+025
+  1.293100852665623E+025
+  1.290501354312390E+025
+  1.288065284349599E+025
+  1.285846904214341E+025
+  1.283825289568551E+025
+  1.281868475418122E+025
+  1.279697782827672E+025
+  1.276856394045402E+025
+  1.272686647693364E+025
+  1.266320565499372E+025
+  1.256687893114561E+025
+  1.242545595645211E+025
+  1.222532387448487E+025
+  1.195251357695385E+025
+  1.159382577925912E+025
+  1.113824918194026E+025
+  1.057861286683244E+025
+  9.913337257289084E+024
+  9.148048357967405E+024
+  8.296720153759051E+024
+  7.381951392122814E+024
+  6.434021790801889E+024
+  5.488555357050182E+024
+  4.582944504199259E+024
+  3.752089122349697E+024
+  3.023065946262127E+024
+  2.407992805010722E+024
+  1.903854520452293E+024
+  1.499029664634925E+024
+  1.178628226551274E+024
+  9.275703900073002E+023
+  7.321395960167393E+023
+  5.806008631658223E+023
+  4.632970125522727E+023
+  3.724851574333384E+023
+  3.020680220343425E+023
+  2.473042369256858E+023
+  2.045388847723505E+023
+  1.709710970068375E+023
+  1.444624527182329E+023
+  1.233835819920541E+023
+  1.064937781957892E+023
+  9.284781609039967E+022
+  8.172452948389860E+022
+  7.257244755126313E+022
+  6.496862134859016E+022
+  5.858755085598545E+022
+  5.317779478134648E+022
+  4.854439962146342E+022
+  4.453572889570999E+022
+  4.103362302510530E+022
+  3.794609264336781E+022
+  3.520196201374148E+022
+  3.274705455591829E+022
+  3.054167094302609E+022
+  2.855927734855476E+022
+  2.678653037274120E+022
+  2.522506267837453E+022
+  2.389590792127454E+022
+  2.284815534256575E+022
+  2.217453482773606E+022
+  2.203832992458363E+022
+  2.271852408589976E+022
+  2.468362550146855E+022
+  2.870930009156954E+022
+  3.606054834992897E+022
+  4.876471707222822E+022
+  7.000473482008151E+022
+  1.046577803081979E+023
+  1.599847505593437E+023
+  2.464275883046999E+023
+  3.783780929904861E+023
+  5.746266196537385E+023
+  8.579751041001919E+023
+  1.253227138318486E+024
+  1.782526663950477E+024
+  2.457895454082824E+024
+  3.275552530224167E+024
+  4.215422369821150E+024
+  5.243027639211282E+024
+  6.313846144658372E+024
+  7.379569371023554E+024
+  8.394656576550438E+024
+  9.321694386775815E+024
+  1.013464791838892E+025
+  1.081981299474474E+025
+  1.137485959528843E+025
+  1.180665072820030E+025
+  1.212853968832403E+025
+  1.235769265357517E+025
+  1.251276870170436E+025
+  1.261209969861358E+025
+  1.267238578443139E+025
+  1.270785842209692E+025
+  1.272984268609792E+025
+  1.274665071348100E+025
+  1.276374207642501E+025
+  1.278408646314987E+025
+  1.280865972078152E+025
+  1.283700097907943E+025
+  1.286776178412611E+025
+  1.289919049468736E+025
+  1.292951461512455E+025
+  1.295720501896863E+025
+  1.298112442826840E+025
+  1.300057680044083E+025
+  1.301528500896620E+025
+  1.302532872942357E+025
+  1.303106772281430E+025
+  1.303306210407823E+025
+  1.303199677365682E+025
+  1.302862158697615E+025
+  1.302371038472977E+025
+  1.301803225617136E+025
+  1.310642873858073E+025
+  1.310829377087776E+025
+  1.311004484468548E+025
+  1.311143617867479E+025
+  1.311216038013861E+025
+  1.311184381629917E+025
+  1.311005337064929E+025
+  1.310631643334144E+025
+  1.310015358589483E+025
+  1.309112628705788E+025
+  1.307889743597695E+025
+  1.306329806923392E+025
+  1.304439190552755E+025
+  1.302252711609053E+025
+  1.299836164340628E+025
+  1.297284689027607E+025
+  1.294715545107994E+025
+  1.292254161880180E+025
+  1.290012883172475E+025
+  1.288062628551740E+025
+  1.286398726332814E+025
+  1.284903308192679E+025
+  1.283307711508313E+025
+  1.281159135359518E+025
+  1.277796220693923E+025
+  1.272338259417026E+025
+  1.263692481149483E+025
+  1.250583486147878E+025
+  1.231608495355273E+025
+  1.205321545992605E+025
+  1.170348573640762E+025
+  1.125532647427944E+025
+  1.070103564499915E+025
+  1.003858105040287E+025
+  9.273270627520352E+024
+  8.418948698236565E+024
+  7.498314505583890E+024
+  6.541996391908607E+024
+  5.586198972514631E+024
+  4.669072451323184E+024
+  3.826363570369516E+024
+  3.085953995529111E+024
+  2.460531702011284E+024
+  1.947347071574899E+024
+  1.534826863822333E+024
+  1.208004300790874E+024
+  9.516613706470731E+023
+  7.519218974818987E+023
+  5.968929602497249E+023
+  4.767730256343829E+023
+  3.836934220303620E+023
+  3.114506425010215E+023
+  2.552155065807155E+023
+  2.112616033483691E+023
+  1.767304803772531E+023
+  1.494376887928207E+023
+  1.277172604430899E+023
+  1.102994875395758E+023
+  9.621620833699572E+022
+  8.472812984338282E+022
+  7.526945178543925E+022
+  6.740588562454584E+022
+  6.080294309996619E+022
+  5.520204469399608E+022
+  5.040255745460188E+022
+  4.624832079913794E+022
+  4.261757284093858E+022
+  3.941546589742747E+022
+  3.656857702476950E+022
+  3.402099777287542E+022
+  3.173174891914479E+022
+  2.967343679380962E+022
+  2.783228188002644E+022
+  2.620995548011410E+022
+  2.482812648675555E+022
+  2.373735009717426E+022
+  2.303306801817236E+022
+  2.288322631921566E+022
+  2.357458053073622E+022
+  2.558837010918544E+022
+  2.972081320183670E+022
+  3.726955912364873E+022
+  5.031282928545762E+022
+  7.211099728752627E+022
+  1.076558620881003E+023
+  1.643722874228672E+023
+  2.529271872128659E+023
+  3.880051597037856E+023
+  5.887517096003599E+023
+  8.783573544658349E+023
+  1.281981115346942E+024
+  1.821970564744381E+024
+  2.510240453527648E+024
+  3.342506354578722E+024
+  4.297844563809809E+024
+  5.340695907995565E+024
+  6.425379633890226E+024
+  7.502526438015030E+024
+  8.525780934393376E+024
+  9.457252730281489E+024
+  1.027079212228920E+025
+  1.095290901358746E+025
+  1.150174528376846E+025
+  1.192480676515878E+025
+  1.223617517591201E+025
+  1.245375731985911E+025
+  1.259690767479535E+025
+  1.268456678379516E+025
+  1.273392938872061E+025
+  1.275959232980189E+025
+  1.277311245170630E+025
+  1.278290541492916E+025
+  1.279442009839078E+025
+  1.281052239322959E+025
+  1.283201713581681E+025
+  1.285823301172633E+025
+  1.288759829902420E+025
+  1.291814798742173E+025
+  1.294792303602051E+025
+  1.297524489700372E+025
+  1.299886795307940E+025
+  1.301802765662036E+025
+  1.303241327748254E+025
+  1.304209862155421E+025
+  1.304745712543049E+025
+  1.304907397137414E+025
+  1.304766323877108E+025
+  1.304400209775046E+025
+  1.303888537451514E+025
+  1.303309408632530E+025
+  1.123585852576465E+026
+  1.123613637113385E+026
+  1.123716687264464E+026
+  1.123901026340267E+026
+  1.124160917758025E+026
+  1.124474549080299E+026
+  1.124800865376165E+026
+  1.125078135642774E+026
+  1.125224660631969E+026
+  1.125142242053854E+026
+  1.124722580497650E+026
+  1.123856268583809E+026
+  1.122443759655940E+026
+  1.120407291127155E+026
+  1.117702248617409E+026
+  1.114326082109796E+026
+  1.110322714849044E+026
+  1.105780439985988E+026
+  1.100821638277831E+026
+  1.095583343952343E+026
+  1.090188741383092E+026
+  1.084710997033601E+026
+  1.079132237588542E+026
+  1.073301753370227E+026
+  1.066898431094055E+026
+  1.059402878285233E+026
+  1.050084696229298E+026
+  1.038010008881993E+026
+  1.022073805602503E+026
+  1.001060909974189E+026
+  9.737381481667624E+025
+  9.389779216480888E+025
+  8.959090965791465E+025
+  8.440843507761450E+025
+  7.836440759371759E+025
+  7.154471890400826E+025
+  6.411322492025574E+025
+  5.630732974344530E+025
+  4.842086909415712E+025
+  4.077490152045398E+025
+  3.368069059085608E+025
+  2.739101148653204E+025
+  2.203256391912194E+025
+  1.759894141201401E+025
+  1.400518897121371E+025
+  1.113388468970034E+025
+  8.862324362793615E+024
+  7.076721187050994E+024
+  5.678307142409434E+024
+  4.584807439438851E+024
+  3.729530031575296E+024
+  3.059414470016486E+024
+  2.532789191387387E+024
+  2.117218475925729E+024
+  1.787606620412574E+024
+  1.524610141265712E+024
+  1.313349746491353E+024
+  1.142387609038042E+024
+  1.002927185802949E+024
+  8.881936062333399E+023
+  7.929574155043844E+023
+  7.131704539905509E+023
+  6.456885506773902E+023
+  5.880609486604433E+023
+  5.383708006461365E+023
+  4.951146808605953E+023
+  4.571119411779311E+023
+  4.234370134061369E+023
+  3.933695698391119E+023
+  3.663589648128088E+023
+  3.420007811630610E+023
+  3.200248293378494E+023
+  3.002959005963618E+023
+  2.828313943480822E+023
+  2.678442592329874E+023
+  2.558264283463072E+023
+  2.476983668885863E+023
+  2.450661293602878E+023
+  2.506503195464217E+023
+  2.689832155795277E+023
+  3.075114296229444E+023
+  3.782887395308117E+023
+  5.004868039432206E+023
+  7.039666805067364E+023
+  1.034096197493097E+024
+  1.557791646702151E+024
+  2.370296061425366E+024
+  3.601343599554613E+024
+  5.417976861489227E+024
+  8.019360952774774E+024
+  1.161671626558463E+025
+  1.638971831373855E+025
+  2.241930127224123E+025
+  2.963984709375135E+025
+  3.784076475801800E+025
+  4.668999696988712E+025
+  5.577870384191749E+025
+  6.468061401535177E+025
+  7.301081518249009E+025
+  8.047082618165379E+025
+  8.687276307371793E+025
+  9.214220920021569E+025
+  9.630443328130820E+025
+  9.946079006837641E+025
+  1.017618312094760E+026
+  1.033819170520146E+026
+  1.044980432098683E+026
+  1.052738952700981E+026
+  1.058490836109535E+026
+  1.063330188231148E+026
+  1.068027496386529E+026
+  1.073040824393330E+026
+  1.078552949147083E+026
+  1.084527015504479E+026
+  1.090772541481967E+026
+  1.097013295918423E+026
+  1.102949247722939E+026
+  1.108306599637094E+026
+  1.112872513493803E+026
+  1.116513832305184E+026
+  1.119181315252982E+026
+  1.120902431484405E+026
+  1.121766676962577E+026
+  1.121907537392234E+026
+  1.121484281843499E+026
+  1.120665219205798E+026
+  1.119613379029901E+026
+  1.118475796078126E+026
+  1.117376757526577E+026
+  1.116414446623000E+026
+  9.091398378734228E+024
+  9.091006396772429E+024
+  9.091854125348695E+024
+  9.094154849065230E+024
+  9.097971124169374E+024
+  9.103159024250253E+024
+  9.109328328761805E+024
+  9.115827000592616E+024
+  9.121756353972182E+024
+  9.126024029284069E+024
+  9.127436785373319E+024
+  9.124829123533483E+024
+  9.117219219405918E+024
+  9.103978115409618E+024
+  9.084991981078282E+024
+  9.060792470342264E+024
+  9.032627893252277E+024
+  9.002448645363658E+024
+  8.972784904445764E+024
+  8.946503744593289E+024
+  8.926446449116773E+024
+  8.914963629352594E+024
+  8.913383394189682E+024
+  8.921463318998835E+024
+  8.936887612235264E+024
+  8.954875060658453E+024
+  8.967961193202021E+024
+  8.966011507138705E+024
+  8.936514104916063E+024
+  8.865191000929208E+024
+  8.736955629024585E+024
+  8.537223340277970E+024
+  8.253542574256828E+024
+  7.877448576539607E+024
+  7.406347717805654E+024
+  6.845131779231699E+024
+  6.207132695019950E+024
+  5.514014944230770E+024
+  4.794322339065351E+024
+  4.080671270829426E+024
+  3.405972018169656E+024
+  2.798269633404703E+024
+  2.273431387589304E+024
+  1.833820578053234E+024
+  1.473423801357317E+024
+  1.182387571082362E+024
+  9.497907236741965E+023
+  7.651657852179760E+023
+  6.192162918017303E+023
+  5.040583727687083E+023
+  4.132047179769080E+023
+  3.414255932458322E+023
+  2.845646473642708E+023
+  2.393511225046511E+023
+  2.032284737891705E+023
+  1.742071672634587E+023
+  1.507429004040925E+023
+  1.316383172358452E+023
+  1.159650173226854E+023
+  1.030024006010646E+023
+  9.219012308642684E+022
+  8.309136662456060E+022
+  7.536459697496875E+022
+  6.874192861696287E+022
+  6.301260416572542E+022
+  5.801042371516767E+022
+  5.360422693891379E+022
+  4.969074594617387E+022
+  4.618932125165593E+022
+  4.303812178561177E+022
+  4.019165127709550E+022
+  3.761948129917961E+022
+  3.530635777106325E+022
+  3.325412840175959E+022
+  3.148639997554622E+022
+  3.005755193072221E+022
+  2.906883646183273E+022
+  2.869594844923455E+022
+  2.923482778237344E+022
+  3.117569813771582E+022
+  3.531942406390287E+022
+  4.295476039972909E+022
+  5.611875424652218E+022
+  7.796281064122964E+022
+  1.132389228589930E+023
+  1.688965095394210E+023
+  2.547292364703134E+023
+  3.839204139965717E+023
+  5.731951898348963E+023
+  8.421003804440936E+023
+  1.210729418448956E+024
+  1.695073133752491E+024
+  2.300126398037931E+024
+  3.015303257883824E+024
+  3.815163433648802E+024
+  4.662466398130124E+024
+  5.513338643471602E+024
+  6.323738797742280E+024
+  7.055572542881336E+024
+  7.681115442506593E+024
+  8.185090827113219E+024
+  8.564480355347207E+024
+  8.826649768288829E+024
+  8.986558017835416E+024
+  9.063742064662620E+024
+  9.079558080271088E+024
+  9.054930765170301E+024
+  9.008687442025043E+024
+  8.956453143434122E+024
+  8.910043339213091E+024
+  8.877285133088802E+024
+  8.862201061150230E+024
+  8.865487628251368E+024
+  8.885210344584562E+024
+  8.917623521424833E+024
+  8.958015142049440E+024
+  9.001481900573368E+024
+  9.043559073819136E+024
+  9.080660296021921E+024
+  9.110315665033587E+024
+  9.131225354906123E+024
+  9.143166228246412E+024
+  9.146800245070597E+024
+  9.143434728153994E+024
+  9.134774352805086E+024
+  9.122688708627682E+024
+  9.109010686183808E+024
+  9.095380214319848E+024
+  9.083139529370145E+024
+  9.073277355562217E+024
+  4.160574396158163E+023
+  4.160542257434835E+023
+  4.160974394789445E+023
+  4.161937001877198E+023
+  4.163435481095620E+023
+  4.165393353620864E+023
+  4.167638026486947E+023
+  4.169896701835882E+023
+  4.171804818421295E+023
+  4.172929810684638E+023
+  4.172810759646852E+023
+  4.171011944388803E+023
+  4.167186459466880E+023
+  4.161143812045576E+023
+  4.152912899720914E+023
+  4.142789880605015E+023
+  4.131359649568728E+023
+  4.119480142915147E+023
+  4.108220821519399E+023
+  4.098750714851515E+023
+  4.092177278601104E+023
+  4.089344444949402E+023
+  4.090605599609065E+023
+  4.095593567235182E+023
+  4.103013919742768E+023
+  4.110489428060377E+023
+  4.114482392017334E+023
+  4.110318743004487E+023
+  4.092334284525944E+023
+  4.054159658308602E+023
+  3.989155527897826E+023
+  3.891000114070118E+023
+  3.754413460479525E+023
+  3.575973147741744E+023
+  3.354934390483830E+023
+  3.093919800544177E+023
+  2.799306299786704E+023
+  2.481133438271478E+023
+  2.152413515080526E+023
+  1.827848353596989E+023
+  1.522130551899433E+023
+  1.247650706573238E+023
+  1.011271586447007E+023
+  8.137978567240429E+022
+  6.523119943811439E+022
+  5.222207167691582E+022
+  4.184974299657820E+022
+  3.363578871290082E+022
+  2.715735937263117E+022
+  2.205722581179783E+022
+  1.804239618799165E+022
+  1.487736419351587E+022
+  1.237546377205253E+022
+  1.039017347713528E+022
+  8.807242732507850E+021
+  7.537966034884636E+021
+  6.513642634622191E+021
+  5.681121217089934E+021
+  4.999275724713048E+021
+  4.436249871872301E+021
+  3.967320594217775E+021
+  3.573251518927925E+021
+  3.239029850305375E+021
+  2.952900807279074E+021
+  2.705631778530909E+021
+  2.489953416262540E+021
+  2.300137126139002E+021
+  2.131678211058719E+021
+  1.981061835479301E+021
+  1.845595681863705E+021
+  1.723299509660061E+021
+  1.612848856576686E+021
+  1.513579261454187E+021
+  1.425570659463492E+021
+  1.349851953720828E+021
+  1.288797442582809E+021
+  1.246835584754164E+021
+  1.231663845218063E+021
+  1.256269144228901E+021
+  1.342198172653891E+021
+  1.524705088214720E+021
+  1.860608222736578E+021
+  2.439859701573774E+021
+  3.401857162833215E+021
+  4.957191693270655E+021
+  7.414483287342663E+021
+  1.120971077334961E+022
+  1.693141515696089E+022
+  2.532887393273551E+022
+  3.728187657064277E+022
+  5.370140227405685E+022
+  7.532394629084885E+022
+  1.024038618311875E+023
+  1.345050786268913E+023
+  1.705269799314912E+023
+  2.088335860884157E+023
+  2.474780746275632E+023
+  2.844878470192420E+023
+  3.181374543394332E+023
+  3.471492462525535E+023
+  3.707915003926838E+023
+  3.888760681444911E+023
+  4.016803030288989E+023
+  4.098268136605559E+023
+  4.141517141314492E+023
+  4.155829692195783E+023
+  4.150403710424716E+023
+  4.133608662321132E+023
+  4.112483811424103E+023
+  4.092454294697515E+023
+  4.077234696454952E+023
+  4.068891232298118E+023
+  4.068033156337374E+023
+  4.074099935196185E+023
+  4.085705148709883E+023
+  4.100994645874657E+023
+  4.117978321677877E+023
+  4.134802973367366E+023
+  4.149946436754237E+023
+  4.162327278616711E+023
+  4.171336530294276E+023
+  4.176806696831421E+023
+  4.178938317562393E+023
+  4.178205143265912E+023
+  4.175254755744624E+023
+  4.170814601443584E+023
+  4.165609852490041E+023
+  4.160299397445837E+023
+  4.155432590021033E+023
+  4.151425494315128E+023
+  9.169543799230110E+023
+  9.168758109144292E+023
+  9.169482739530953E+023
+  9.172013819727620E+023
+  9.176475136926291E+023
+  9.182750347367755E+023
+  9.190432133508853E+023
+  9.198798051626217E+023
+  9.206820898166291E+023
+  9.213222011151440E+023
+  9.216570498993800E+023
+  9.215424940390717E+023
+  9.208508981204862E+023
+  9.194906023196312E+023
+  9.174251265822821E+023
+  9.146893786977537E+023
+  9.113998319262560E+023
+  9.077556581784094E+023
+  9.040282411007179E+023
+  9.005374373415132E+023
+  8.976144045245867E+023
+  8.955526402227531E+023
+  8.945508245144052E+023
+  8.946528070298616E+023
+  8.956913198446798E+023
+  8.972425348759945E+023
+  8.985984121806214E+023
+  8.987630916583360E+023
+  8.964786449106277E+023
+  8.902844953102664E+023
+  8.786135631300055E+023
+  8.599260714137657E+023
+  8.328779902578094E+023
+  7.965143947004230E+023
+  7.504683418012475E+023
+  6.951344867812744E+023
+  6.317770609029888E+023
+  5.625297956615296E+023
+  4.902569757924420E+023
+  4.182727096233414E+023
+  3.499557663985860E+023
+  2.882169205942031E+023
+  2.347377218106828E+023
+  1.898191529185353E+023
+  1.528974424203371E+023
+  1.230052827364411E+023
+  9.905557046098610E+022
+  7.999853395077390E+022
+  6.489702211682082E+022
+  5.295305163618255E+022
+  4.350771935707773E+022
+  3.602820349367374E+022
+  3.008982897194211E+022
+  2.535750527359802E+022
+  2.156864050509092E+022
+  1.851837844595395E+022
+  1.604732859538940E+022
+  1.403162501208652E+022
+  1.237501094766930E+022
+  1.100261304451609E+022
+  9.856087439286198E+021
+  8.889860015367525E+021
+  8.068228431380653E+021
+  7.363137008421520E+021
+  6.752474054936793E+021
+  6.218773809397809E+021
+  5.748231968756530E+021
+  5.329965416415080E+021
+  4.955464382673584E+021
+  4.618200366571205E+021
+  4.313367622547459E+021
+  4.037752312159128E+021
+  3.789744854059331E+021
+  3.569542306467521E+021
+  3.379635680387592E+021
+  3.225751770198700E+021
+  3.118533785223635E+021
+  3.076416417792254E+021
+  3.130396779312559E+021
+  3.331735953405992E+021
+  3.764042346327464E+021
+  4.561641243972309E+021
+  5.936495167788978E+021
+  8.215930905577459E+021
+  1.189255021554525E+022
+  1.768515086234549E+022
+  2.660414775615761E+022
+  4.000558826925788E+022
+  5.960345942877431E+022
+  8.739096844505466E+022
+  1.254011761176976E+023
+  1.752243867084306E+023
+  2.372991732174661E+023
+  3.104498783606257E+023
+  3.919775937512547E+023
+  4.779918209837900E+023
+  5.639567926881918E+023
+  6.453646705411160E+023
+  7.183640220963486E+023
+  7.802062382028176E+023
+  8.294455437258064E+023
+  8.659041586566413E+023
+  8.904655820126873E+023
+  9.047768353975926E+023
+  9.109314110102718E+023
+  9.111820076188421E+023
+  9.077081943496058E+023
+  9.024461548696741E+023
+  8.969775513870588E+023
+  8.924707061785866E+023
+  8.896668264591805E+023
+  8.889043309631084E+023
+  8.901740241416077E+023
+  8.931966574484145E+023
+  8.975129283614458E+023
+  9.025751410520876E+023
+  9.078303399296831E+023
+  9.127869218087082E+023
+  9.170600810728352E+023
+  9.203950813924654E+023
+  9.226704550591781E+023
+  9.238853913166327E+023
+  9.241367292961730E+023
+  9.235910366834125E+023
+  9.224561195664442E+023
+  9.209545766516684E+023
+  9.193010553793492E+023
+  9.176847443151885E+023
+  9.162577626980075E+023
+  9.151291886342887E+023
+  2.980975023047282E+025
+  2.980987813201490E+025
+  2.981270403104348E+025
+  2.981856351737132E+025
+  2.982741710936135E+025
+  2.983871421811088E+025
+  2.985129597233155E+025
+  2.986335651057046E+025
+  2.987247696265704E+025
+  2.987575069644101E+025
+  2.987000462550793E+025
+  2.985210571519362E+025
+  2.981933156299144E+025
+  2.976977060791846E+025
+  2.970270196963022E+025
+  2.961889305576465E+025
+  2.952074768659775E+025
+  2.941223959061657E+025
+  2.929857765330140E+025
+  2.918557228375023E+025
+  2.907870663817301E+025
+  2.898195897567761E+025
+  2.889646715487844E+025
+  2.881916591226077E+025
+  2.874155542377316E+025
+  2.864877182226514E+025
+  2.851912717411964E+025
+  2.832427228470677E+025
+  2.803011615745584E+025
+  2.759861257700387E+025
+  2.699048951927812E+025
+  2.616893231002545E+025
+  2.510411182185715E+025
+  2.377825502648188E+025
+  2.219068892655765E+025
+  2.036199292081154E+025
+  1.833617010369934E+025
+  1.617975013486454E+025
+  1.397711627233000E+025
+  1.182215321302587E+025
+  9.807404861282951E+024
+  8.009598878371127E+024
+  6.469388169608013E+024
+  5.188572021797640E+024
+  4.145526730725149E+024
+  3.308487355544109E+024
+  2.643500380753441E+024
+  2.118666952642571E+024
+  1.706043504469198E+024
+  1.382183978474988E+024
+  1.127966761376006E+024
+  9.280966899393291E+023
+  7.705029498910114E+023
+  6.457477437731821E+023
+  5.464983010081794E+023
+  4.670802409847230E+023
+  4.031124036773202E+023
+  3.512149866322418E+023
+  3.087798826735150E+023
+  2.737919322272450E+023
+  2.446908913001804E+023
+  2.202654488008734E+023
+  1.995721946892647E+023
+  1.818738647041002E+023
+  1.665924066952025E+023
+  1.532734204235021E+023
+  1.415593339470638E+023
+  1.311693248321485E+023
+  1.218845116356687E+023
+  1.135373763455210E+023
+  1.060047863813214E+023
+  9.920443321774858E+022
+  9.309508423604653E+022
+  8.768188366005997E+022
+  8.302922521444016E+022
+  7.928572422348689E+022
+  7.672891307699449E+022
+  7.584194640025156E+022
+  7.744136234393007E+022
+  8.288424963818557E+022
+  9.439504910928808E+022
+  1.155656467709799E+023
+  1.520941733663336E+023
+  2.128308389014822E+023
+  3.111797289502312E+023
+  4.668415712288160E+023
+  7.077420347954821E+023
+  1.071734588186206E+024
+  1.607263456673459E+024
+  2.371620354564915E+024
+  3.424806669273044E+024
+  4.816546803519114E+024
+  6.566595552912340E+024
+  8.651100312361413E+024
+  1.100372192693991E+025
+  1.352327783985679E+025
+  1.608752750503314E+025
+  1.857101863250230E+025
+  2.086242941549003E+025
+  2.287755753335639E+025
+  2.456594607344813E+025
+  2.591116820225746E+025
+  2.692625523567140E+025
+  2.764634974716204E+025
+  2.812052370280502E+025
+  2.840415336106443E+025
+  2.855261503132239E+025
+  2.861656655415141E+025
+  2.863877829876195E+025
+  2.865234653102497E+025
+  2.868009180681661E+025
+  2.873494899703142E+025
+  2.882115246613065E+025
+  2.893599832719364E+025
+  2.907193666563740E+025
+  2.921873130323296E+025
+  2.936544113293438E+025
+  2.950203051058626E+025
+  2.962049603435686E+025
+  2.971548250486880E+025
+  2.978443284900343E+025
+  2.982736734577717E+025
+  2.984641692911779E+025
+  2.984523985891806E+025
+  2.982842328229398E+025
+  2.980092604629052E+025
+  2.976759758574714E+025
+  2.973281042634799E+025
+  2.970021997725467E+025
+  2.967263918300568E+025
+  1.612501971177512E+022
+  1.612555979573394E+022
+  1.612740329886435E+022
+  1.613065972243421E+022
+  1.613524313623533E+022
+  1.614081082089326E+022
+  1.614672581175599E+022
+  1.615205345446755E+022
+  1.615559866684458E+022
+  1.615599254803549E+022
+  1.615182911016510E+022
+  1.614184394163073E+022
+  1.612512070065082E+022
+  1.610130402628211E+022
+  1.607078920251869E+022
+  1.603485300557151E+022
+  1.599568822811320E+022
+  1.595630699711012E+022
+  1.592028613684601E+022
+  1.589134236021660E+022
+  1.587274564737109E+022
+  1.586660365636028E+022
+  1.587307480293946E+022
+  1.588958855675909E+022
+  1.591016493350556E+022
+  1.592492932598520E+022
+  1.591991449236203E+022
+  1.587723175635462E+022
+  1.577568178490355E+022
+  1.559186260955243E+022
+  1.530181412118340E+022
+  1.488320275647569E+022
+  1.431798246047043E+022
+  1.359535643150720E+022
+  1.271470968747860E+022
+  1.168801028684742E+022
+  1.054104648361177E+022
+  9.312868902585586E+021
+  8.053028953774478E+021
+  6.816673806472327E+021
+  5.658194597129031E+021
+  4.622782886526479E+021
+  3.734666396259923E+021
+  2.995463374114358E+021
+  2.393092578708814E+021
+  1.909472301728623E+021
+  1.525150376319683E+021
+  1.221788677139809E+021
+  9.832873590136280E+020
+  7.961169580144129E+020
+  6.492310303722794E+020
+  5.337863921056310E+020
+  4.427999587674773E+020
+  3.708096754381534E+020
+  3.135707195881537E+020
+  2.677979301300029E+020
+  2.309548813998545E+020
+  2.010851033980257E+020
+  1.766791580226968E+020
+  1.565711192614593E+020
+  1.398585983941398E+020
+  1.258413205013744E+020
+  1.139741533982433E+020
+  1.038313075830668E+020
+  9.507912801444699E+019
+  8.745547974030365E+019
+  8.075419850242199E+019
+  7.481345097207310E+019
+  6.950714904794191E+019
+  6.473881503989459E+019
+  6.043753102056902E+019
+  5.655586527264984E+019
+  5.307000383115150E+019
+  4.998279986129768E+019
+  4.733119646086720E+019
+  4.520063579029403E+019
+  4.375085459041599E+019
+  4.326015774931608E+019
+  4.419916506103013E+019
+  4.735039966694846E+019
+  5.399694922231769E+019
+  6.621118875679028E+019
+  8.728134277516360E+019
+  1.223153268369010E+020
+  1.790500368696019E+020
+  2.688571764090245E+020
+  4.078552724869239E+020
+  6.178894005384008E+020
+  9.269063672050890E+020
+  1.367933710296603E+021
+  1.975511803581730E+021
+  2.778161703613038E+021
+  3.786976423065852E+021
+  4.987711526410087E+021
+  6.341412727016196E+021
+  7.788841945745926E+021
+  9.258487278396399E+021
+  1.067694895784237E+022
+  1.197905105442776E+022
+  1.311543798719054E+022
+  1.405647954504954E+022
+  1.479248813701241E+022
+  1.533110421450080E+022
+  1.569305568565305E+022
+  1.590741696385946E+022
+  1.600717554198057E+022
+  1.602554929412313E+022
+  1.599320769056664E+022
+  1.593637599367816E+022
+  1.587572722142641E+022
+  1.582595160700338E+022
+  1.579589807056065E+022
+  1.578918212601911E+022
+  1.580514238662319E+022
+  1.584000960652346E+022
+  1.588814047685449E+022
+  1.594317424364832E+022
+  1.599899748032872E+022
+  1.605044577186948E+022
+  1.609371928930756E+022
+  1.612653128561366E+022
+  1.614803916783451E+022
+  1.615862626723815E+022
+  1.615960630430142E+022
+  1.615290814922145E+022
+  1.614077430035661E+022
+  1.612549465104939E+022
+  1.610919789596100E+022
+  1.609370949407526E+022
+  1.608047077082970E+022
+  1.001303159297110E+021
+  1.001430217230223E+021
+  1.001562061306215E+021
+  1.001683690867469E+021
+  1.001774274845065E+021
+  1.001806296595939E+021
+  1.001745669201690E+021
+  1.001553036834874E+021
+  1.001186288846297E+021
+  1.000604514482523E+021
+  9.997732638860488E+020
+  9.986705956433754E+020
+  9.972932340535196E+020
+  9.956619382518813E+020
+  9.938249095028961E+020
+  9.918579109217265E+020
+  9.898598127412161E+020
+  9.879425028116197E+020
+  9.862145353545910E+020
+  9.847585559963584E+020
+  9.836034099151317E+020
+  9.826928106318767E+020
+  9.818533678629338E+020
+  9.807654881619855E+020
+  9.789410607561281E+020
+  9.757118969997488E+020
+  9.702326787510573E+020
+  9.615018268465857E+020
+  9.484033296372668E+020
+  9.297720995445346E+020
+  9.044844829598292E+020
+  8.715734797888265E+020
+  8.303643045062670E+020
+  7.806197284010357E+020
+  7.226765567973168E+020
+  6.575462649508764E+020
+  5.869475492694622E+020
+  5.132409625334413E+020
+  4.392498589059376E+020
+  3.679778874789121E+020
+  3.022659886808069E+020
+  2.443571842235745E+020
+  1.953084906639344E+020
+  1.549591031704536E+020
+  1.224444525590465E+020
+  9.662203595026404E+019
+  7.631957850738672E+019
+  6.046220941763283E+019
+  4.812489719129444E+019
+  3.854270424754058E+019
+  3.109971757001448E+019
+  2.530904406319556E+019
+  2.079068749730405E+019
+  1.725070709376953E+019
+  1.446309122343861E+019
+  1.225471943044222E+019
+  1.049326089299734E+019
+  9.077634493282320E+018
+  7.930594977654252E+018
+  6.993029162589627E+018
+  6.219599226127786E+018
+  5.575432110346863E+018
+  5.033613192631487E+018
+  4.573294004155175E+018
+  4.178266726922043E+018
+  3.835892880853648E+018
+  3.536301047054919E+018
+  3.271789951412466E+018
+  3.036390185208629E+018
+  2.825551821123006E+018
+  2.635937924603342E+018
+  2.465317527307067E+018
+  2.312568721234594E+018
+  2.177826961304718E+018
+  2.062851014607198E+018
+  1.971737404587010E+018
+  1.912205090929165E+018
+  1.897810513757783E+018
+  1.951656734468201E+018
+  2.112446099391981E+018
+  2.444100756741670E+018
+  3.050618281704710E+018
+  4.098257154879323E+018
+  5.847358187153794E+018
+  8.695707757949704E+018
+  1.323365805178304E+019
+  2.030721581359932E+019
+  3.107768696906954E+019
+  4.705395607334787E+019
+  7.005566150618860E+019
+  1.020442774099089E+020
+  1.447409289506009E+020
+  1.990228813588764E+020
+  2.644739136550490E+020
+  3.393619037004557E+020
+  4.208113415493407E+020
+  5.051729800562445E+020
+  5.885406859523642E+020
+  6.672830906029011E+020
+  7.384699333847350E+020
+  8.001219115942959E+020
+  8.512723240874772E+020
+  8.918753311587526E+020
+  9.226181914251209E+020
+  9.446949803163394E+020
+  9.595856686898327E+020
+  9.688665967481574E+020
+  9.740630374080823E+020
+  9.765445472657920E+020
+  9.774589533834066E+020
+  9.776994043552799E+020
+  9.778990088458358E+020
+  9.784478326869695E+020
+  9.795268500492637E+020
+  9.811529374768214E+020
+  9.832286260060389E+020
+  9.855905710740468E+020
+  9.880517751278126E+020
+  9.904343208802259E+020
+  9.925912847452747E+020
+  9.944181712925745E+020
+  9.958554884178020E+020
+  9.968849836609347E+020
+  9.975223904280419E+020
+  9.978089478510964E+020
+  9.978028389636821E+020
+  9.975712787170512E+020
+  9.971842454583845E+020
+  9.967101589386464E+020
+  9.962130434998062E+020
+  1.177942552467342E+026
+  1.178015019947143E+026
+  1.178142958421921E+026
+  1.178324610411080E+026
+  1.178547575042014E+026
+  1.178785495079428E+026
+  1.178995975906272E+026
+  1.179120238162514E+026
+  1.179084803530165E+026
+  1.178805730683003E+026
+  1.178195449956114E+026
+  1.177171734514168E+026
+  1.175668073710453E+026
+  1.173644337152141E+026
+  1.171096158781090E+026
+  1.168061147869731E+026
+  1.164619936023672E+026
+  1.160890210345198E+026
+  1.157012312566540E+026
+  1.153125760965276E+026
+  1.149337166229168E+026
+  1.145681351884568E+026
+  1.142078861402641E+026
+  1.138294214697022E+026
+  1.133900076051264E+026
+  1.128252817659071E+026
+  1.120484844302752E+026
+  1.109518632369566E+026
+  1.094106881596188E+026
+  1.072902459936949E+026
+  1.044560583612799E+026
+  1.007873197050880E+026
+  9.619309352522828E+025
+  9.063007910075507E+025
+  8.411979540836075E+025
+  7.676200036989832E+025
+  6.874045155377669E+025
+  6.031727377345474E+025
+  5.181373643476269E+025
+  4.357825570868669E+025
+  3.594636061380693E+025
+  2.918862058527059E+025
+  2.343898555234576E+025
+  1.868823789475717E+025
+  1.484303823890426E+025
+  1.177557527958310E+025
+  9.352791012185435E+024
+  7.451591318523879E+024
+  5.965330129408376E+024
+  4.805318913353301E+024
+  3.899781451725019E+024
+  3.191702566531712E+024
+  2.636376204292657E+024
+  2.199061196810183E+024
+  1.852922704031447E+024
+  1.577311834554562E+024
+  1.356372684953702E+024
+  1.177938221521232E+024
+  1.032667870485616E+024
+  9.133808251512786E+023
+  8.145444411929210E+023
+  7.318837272122410E+023
+  6.620844180794237E+023
+  6.025678554203500E+023
+  5.513207229208417E+023
+  5.067666116005410E+023
+  4.676695192037452E+023
+  4.330618524945851E+023
+  4.021914588631432E+023
+  3.744838421077371E+023
+  3.495172201126004E+023
+  3.270097065088521E+023
+  3.068199702231479E+023
+  2.889657074576735E+023
+  2.736688249228606E+023
+  2.614433595373860E+023
+  2.532532095471548E+023
+  2.507834889886256E+023
+  2.568937745686350E+023
+  2.763555263640504E+023
+  3.170200484537624E+023
+  3.916144369940540E+023
+  5.204102904418553E+023
+  7.350286207682119E+023
+  1.083586429219927E+024
+  1.637174961077958E+024
+  2.497167316021252E+024
+  3.801934999348081E+024
+  5.730072314178701E+024
+  8.495154937790841E+024
+  1.232464420711492E+025
+  1.741358485552888E+025
+  2.385279088703868E+025
+  3.157706970631286E+025
+  4.036566841256557E+025
+  4.986612304777225E+025
+  5.964101319723660E+025
+  6.923094225596825E+025
+  7.821760272006887E+025
+  8.627278150620173E+025
+  9.318538426145617E+025
+  9.886577559281789E+025
+  1.033321641113665E+026
+  1.066862038011612E+026
+  1.090847543282379E+026
+  1.107129514360419E+026
+  1.117615436320845E+026
+  1.124096303147979E+026
+  1.128127874181060E+026
+  1.130960298408113E+026
+  1.133509103207515E+026
+  1.136360596886652E+026
+  1.139804794963470E+026
+  1.143888501745389E+026
+  1.148480410280313E+026
+  1.153339669927834E+026
+  1.158179909273516E+026
+  1.162722394238647E+026
+  1.166734526161467E+026
+  1.170052578071392E+026
+  1.172589830384422E+026
+  1.174332891067947E+026
+  1.175330017825908E+026
+  1.175675519568059E+026
+  1.175493429683235E+026
+  1.174922103823991E+026
+  1.174100746839449E+026
+  1.173159120251686E+026
+  1.172210830067144E+026
+  1.171349638766440E+026
+  1.073965693547639E+026
+  1.074061077830277E+026
+  1.074189503224225E+026
+  1.074343606900393E+026
+  1.074507631883074E+026
+  1.074655252496623E+026
+  1.074748507646597E+026
+  1.074738213643902E+026
+  1.074566034946641E+026
+  1.074168592334277E+026
+  1.073483572051110E+026
+  1.072457351514109E+026
+  1.071053436947314E+026
+  1.069260702550405E+026
+  1.067100048177808E+026
+  1.064627850255085E+026
+  1.061934545624386E+026
+  1.059136867004086E+026
+  1.056362677752524E+026
+  1.053728075392781E+026
+  1.051307429274092E+026
+  1.049098180600335E+026
+  1.046983389682648E+026
+  1.044695974534445E+026
+  1.041789193473206E+026
+  1.037618118450714E+026
+  1.031336678525034E+026
+  1.021914467280214E+026
+  1.008177035248227E+026
+  9.888727879388018E+025
+  9.627685265578951E+025
+  9.287734213404939E+025
+  8.860870010088367E+025
+  8.343600773803856E+025
+  7.738487135715322E+025
+  7.055320668445935E+025
+  6.311587099275102E+025
+  5.531879124840227E+025
+  4.746068666530904E+025
+  3.986326529091483E+025
+  3.283435105152325E+025
+  2.662036987379063E+025
+  2.134141524963156E+025
+  1.698615048441988E+025
+  1.346643267068408E+025
+  1.066301078851816E+025
+  8.452339291126005E+024
+  6.720464572834051E+024
+  5.368882230762537E+024
+  4.315831779486581E+024
+  3.495260064904182E+024
+  2.854785794105040E+024
+  2.353403520147234E+024
+  1.959299450766050E+024
+  1.647939695446035E+024
+  1.400476562630326E+024
+  1.202460883376506E+024
+  1.042823274177121E+024
+  9.130798219138178E+023
+  8.067190700377597E+023
+  7.187323762060968E+023
+  6.452560037166385E+023
+  5.832994041323658E+023
+  5.305395183228581E+023
+  4.851654217697012E+023
+  4.457612923009490E+023
+  4.112185810213608E+023
+  3.806705486485037E+023
+  3.534441375616246E+023
+  3.290256493229048E+023
+  3.070380748817917E+023
+  2.872294053292126E+023
+  2.694731310545104E+023
+  2.537848352754533E+023
+  2.403629170607030E+023
+  2.296679294796330E+023
+  2.225650330116588E+023
+  2.205692613347010E+023
+  2.262555578945315E+023
+  2.439266002763639E+023
+  2.806718662502699E+023
+  3.479985826457513E+023
+  4.642595833281535E+023
+  6.581222648175082E+023
+  9.732732366325803E+023
+  1.474361080253675E+024
+  2.253735012394838E+024
+  3.437701994276518E+024
+  5.189669534073905E+024
+  7.705632497897606E+024
+  1.119521949327249E+025
+  1.583965659422220E+025
+  2.172615789264063E+025
+  2.880005200075037E+025
+  3.686415622260119E+025
+  4.559947479582543E+025
+  5.460701944332399E+025
+  6.346489068522686E+025
+  7.178599725046064E+025
+  7.926343609605240E+025
+  8.569610891792872E+025
+  9.099370075651031E+025
+  9.516514633252903E+025
+  9.829702235852905E+025
+  1.005281769869820E+026
+  1.020253266726863E+026
+  1.029623682821504E+026
+  1.035044885912037E+026
+  1.037970904228914E+026
+  1.039590519287153E+026
+  1.040796938685217E+026
+  1.042188379300918E+026
+  1.044093532929225E+026
+  1.046615538772775E+026
+  1.049687430608297E+026
+  1.053131621132758E+026
+  1.056716375217882E+026
+  1.060203613819119E+026
+  1.063384526517603E+026
+  1.066101787130013E+026
+  1.068259144668286E+026
+  1.069820617317092E+026
+  1.070802482209096E+026
+  1.071261545897959E+026
+  1.071282446153032E+026
+  1.070965404401663E+026
+  1.070415307798534E+026
+  1.069733246361201E+026
+  1.069010866720807E+026
+  1.068327048357121E+026
+  4.368922159114511E+025
+  4.369299804516356E+025
+  4.369829337527685E+025
+  4.370484640169422E+025
+  4.371203749183285E+025
+  4.371879606990609E+025
+  4.372355620738350E+025
+  4.372427652587908E+025
+  4.371853245081130E+025
+  4.370369661459725E+025
+  4.367720570802027E+025
+  4.363689304290199E+025
+  4.358135626939107E+025
+  4.351031646272437E+025
+  4.342490894569828E+025
+  4.332783588282036E+025
+  4.322330918050237E+025
+  4.311671998714053E+025
+  4.301398965237184E+025
+  4.292058810806806E+025
+  4.284024839139892E+025
+  4.277345580584660E+025
+  4.271583955762063E+025
+  4.265663538362298E+025
+  4.257741310469333E+025
+  4.245127047643687E+025
+  4.224268652586646E+025
+  4.190821005736998E+025
+  4.139813812271453E+025
+  4.065931376932646E+025
+  3.963912781989357E+025
+  3.829071737509086E+025
+  3.657918039158178E+025
+  3.448834911346288E+025
+  3.202729696192672E+025
+  2.923536271364749E+025
+  2.618420895001417E+025
+  2.297550089588117E+025
+  1.973338847011115E+025
+  1.659213171992834E+025
+  1.368070807899076E+025
+  1.110290893902740E+025
+  8.910085932610207E+024
+  7.098780772182862E+024
+  5.633334402285728E+024
+  4.464885419157743E+024
+  3.542558064952233E+024
+  2.819287284985236E+024
+  2.254302723361116E+024
+  1.813707277941659E+024
+  1.470076802773363E+024
+  1.201635924697428E+024
+  9.913186435047930E+023
+  8.258702533658946E+023
+  6.950588362724959E+023
+  5.910164465144410E+023
+  5.077058428062489E+023
+  4.404979555408022E+023
+  3.858419967307935E+023
+  3.410105616805558E+023
+  3.039041321454765E+023
+  2.729019399496339E+023
+  2.467486393409379E+023
+  2.244684396653479E+023
+  2.053002017791515E+023
+  1.886485088629913E+023
+  1.740469225874099E+023
+  1.611305806278010E+023
+  1.496160417361216E+023
+  1.392869079192478E+023
+  1.299843272752601E+023
+  1.216020996184150E+023
+  1.140868939329124E+023
+  1.074452170748145E+023
+  1.017605032421338E+023
+  9.722639545830930E+022
+  9.420648187869162E+022
+  9.333710435880503E+022
+  9.569915363636874E+022
+  1.030977147327086E+023
+  1.185052454390273E+023
+  1.467435217895620E+023
+  1.954978184632801E+023
+  2.767642726892117E+023
+  4.088098649505950E+023
+  6.186431086825982E+023
+  9.448066930207156E+023
+  1.439953810521263E+024
+  2.172104827823860E+024
+  3.222688173739103E+024
+  4.678543109953560E+024
+  6.614304907810252E+024
+  9.065022012302870E+024
+  1.200629951235601E+025
+  1.535425583469483E+025
+  1.897441306518873E+025
+  2.269938364713131E+025
+  2.635284882745722E+025
+  2.977369132800140E+025
+  3.283486735973464E+025
+  3.545395077862759E+025
+  3.759502925653189E+025
+  3.926371536953008E+025
+  4.049798596481085E+025
+  4.135749295091710E+025
+  4.191331572617111E+025
+  4.223929164829461E+025
+  4.240536540599552E+025
+  4.247295791119486E+025
+  4.249215000594665E+025
+  4.250042084357490E+025
+  4.252268603021360E+025
+  4.257238627804348E+025
+  4.265336100325346E+025
+  4.276221139336399E+025
+  4.289083825276720E+025
+  4.302885475414593E+025
+  4.316563201595977E+025
+  4.329182559853217E+025
+  4.340032970984613E+025
+  4.348669093242595E+025
+  4.354907609441901E+025
+  4.358793012260891E+025
+  4.360547185823402E+025
+  4.360514517088929E+025
+  4.359108752077479E+025
+  4.356765505791584E+025
+  4.353905223470492E+025
+  4.350908207008918E+025
+  4.348099795808775E+025
+  1.175087726756816E+025
+  1.175191749251953E+025
+  1.175342184819615E+025
+  1.175532625147288E+025
+  1.175746346729326E+025
+  1.175953831246662E+025
+  1.176111767490560E+025
+  1.176164014564666E+025
+  1.176044762890905E+025
+  1.175684312477464E+025
+  1.175017383342220E+025
+  1.173993314731257E+025
+  1.172587199567945E+025
+  1.170810606147424E+025
+  1.168720083055875E+025
+  1.166421351262813E+025
+  1.164067059068742E+025
+  1.161846230604852E+025
+  1.159964120669052E+025
+  1.158612140626765E+025
+  1.157928807153467E+025
+  1.157954143939646E+025
+  1.158581410525740E+025
+  1.159511195669142E+025
+  1.160213600930774E+025
+  1.159904379929342E+025
+  1.157540572047708E+025
+  1.151840579350176E+025
+  1.141332978038158E+025
+  1.124437619898595E+025
+  1.099581363823449E+025
+  1.065348263440130E+025
+  1.020659223692220E+025
+  9.649683377428534E+024
+  8.984525884675250E+024
+  8.221602674458395E+024
+  7.380755073353599E+024
+  6.490578535376498E+024
+  5.586324331313690E+024
+  4.706391717384382E+024
+  3.887925612550329E+024
+  3.161095504624287E+024
+  2.541242983685668E+024
+  2.028082424844085E+024
+  1.612054174074936E+024
+  1.279708349372000E+024
+  1.016897975226857E+024
+  8.104585758675046E+023
+  6.489391722197079E+023
+  5.227884367677424E+023
+  4.242580659317432E+023
+  3.471812513423835E+023
+  2.867146989037479E+023
+  2.390895277880985E+023
+  2.013912120856884E+023
+  1.713749040730740E+023
+  1.473154327352879E+023
+  1.278881089650926E+023
+  1.120754340360298E+023
+  9.909485707266967E+022
+  8.834325834581859E+022
+  7.935452176356156E+022
+  7.176724155898312E+022
+  6.530021715304156E+022
+  5.973390530027427E+022
+  5.489641994745545E+022
+  5.065300706178901E+022
+  4.689818775472888E+022
+  4.354997489303082E+022
+  4.054574502954569E+022
+  3.783951080617713E+022
+  3.540051570729462E+022
+  3.321329852253021E+022
+  3.127969920461245E+022
+  2.962377424478481E+022
+  2.830136440279004E+022
+  2.741725815817761E+022
+  2.715471143534093E+022
+  2.782473719612876E+022
+  2.994626346618843E+022
+  3.437302533878487E+022
+  4.248856070480869E+022
+  5.649573592411412E+022
+  7.982910610578108E+022
+  1.177118745511691E+023
+  1.778554554119822E+023
+  2.712457101618938E+023
+  4.128597741096057E+023
+  6.219964778949403E+023
+  9.216791865070594E+023
+  1.336330642304070E+024
+  1.886712766801172E+024
+  2.582115658776488E+024
+  3.414752728218429E+024
+  4.359851481626927E+024
+  5.378311877783000E+024
+  6.421868041430675E+024
+  7.440010213478096E+024
+  8.386898547539397E+024
+  9.226723307200622E+024
+  9.936650141888122E+024
+  1.050727971431591E+025
+  1.094114396029526E+025
+  1.125002576413592E+025
+  1.145186069805619E+025
+  1.156778110340847E+025
+  1.161962166825601E+025
+  1.162800696944646E+025
+  1.161101754812336E+025
+  1.158337493166415E+025
+  1.155607233657594E+025
+  1.153638050771189E+025
+  1.152815988040482E+025
+  1.153240475014886E+025
+  1.154793518672981E+025
+  1.157214543428689E+025
+  1.160172056055416E+025
+  1.163324898090242E+025
+  1.166368430093105E+025
+  1.169063887421095E+025
+  1.171251697561331E+025
+  1.172851460722805E+025
+  1.173852536880246E+025
+  1.174299543895084E+025
+  1.174276219883273E+025
+  1.173889574287540E+025
+  1.173255578695686E+025
+  1.172487824200246E+025
+  1.171689671445091E+025
+  1.170949445749791E+025
+  1.700635144911165E+026
+  1.700729646751877E+026
+  1.700910621290051E+026
+  1.701177572041341E+026
+  1.701514142673343E+026
+  1.701883034952810E+026
+  1.702222718566998E+026
+  1.702446688715050E+026
+  1.702445738703425E+026
+  1.702094026542757E+026
+  1.701259032211828E+026
+  1.699814757174480E+026
+  1.697657113478909E+026
+  1.694719889798723E+026
+  1.690989001078843E+026
+  1.686512244240048E+026
+  1.681401622640019E+026
+  1.675825489604154E+026
+  1.669988371638075E+026
+  1.664097453576428E+026
+  1.658316329419883E+026
+  1.652708582795632E+026
+  1.647175779101348E+026
+  1.641396200259731E+026
+  1.634771849926551E+026
+  1.626391755036815E+026
+  1.615019434863199E+026
+  1.599111811881455E+026
+  1.576876021861456E+026
+  1.546369522493747E+026
+  1.505647094946585E+026
+  1.452954750112031E+026
+  1.386963939551217E+026
+  1.307028991127935E+026
+  1.213436728706674E+026
+  1.107602319123054E+026
+  9.921549872413017E+025
+  8.708593774029243E+025
+  7.483403875054747E+025
+  6.296227356213659E+025
+  5.195532802140420E+025
+  4.220479490190836E+025
+  3.390537355764210E+025
+  2.704504518185493E+025
+  2.149014401802264E+025
+  1.705699133032436E+025
+  1.355410023252041E+025
+  1.080417270052963E+025
+  8.653504577885712E+024
+  6.974205558896977E+024
+  5.662724057840462E+024
+  4.636767658822074E+024
+  3.831782602190381E+024
+  3.197583028735025E+024
+  2.695388266087510E+024
+  2.295345102369316E+024
+  1.974520455838624E+024
+  1.715309469213957E+024
+  1.504191511875906E+024
+  1.330768070204156E+024
+  1.187024133060111E+024
+  1.066764174556369E+024
+  9.651831308349709E+023
+  8.785410070098596E+023
+  8.039166847885606E+023
+  7.390221523245842E+023
+  6.820628830248746E+023
+  6.316336407209090E+023
+  5.866418105304466E+023
+  5.462527040360582E+023
+  5.098534579905319E+023
+  4.770344949934157E+023
+  4.475905141825776E+023
+  4.215472978481119E+023
+  3.992272327502209E+023
+  3.813767684402317E+023
+  3.693950368584538E+023
+  3.657270845680355E+023
+  3.745205498286918E+023
+  4.026937812801838E+023
+  4.616270480681296E+023
+  5.697621152271228E+023
+  7.564634068749264E+023
+  1.067520115916026E+024
+  1.572583475699743E+024
+  2.374520137932751E+024
+  3.619948887056428E+024
+  5.508899459831051E+024
+  8.299392990891857E+024
+  1.229975402536511E+025
+  1.783798834316487E+025
+  2.519474834663695E+025
+  3.449952961567911E+025
+  4.565605546627473E+025
+  5.834332527941416E+025
+  7.205051807813783E+025
+  8.614493367319260E+025
+  9.996322054917712E+025
+  1.129025098324752E+026
+  1.244910281700489E+026
+  1.344268109392191E+026
+  1.425835887996884E+026
+  1.489907587186645E+026
+  1.537978503987283E+026
+  1.572335363742443E+026
+  1.595666225253485E+026
+  1.610732737426719E+026
+  1.620120977606707E+026
+  1.626070544790298E+026
+  1.630373874172046E+026
+  1.634335602643903E+026
+  1.638781883924889E+026
+  1.644109609500836E+026
+  1.650364765033408E+026
+  1.657338019210765E+026
+  1.664665047215962E+026
+  1.671919900732359E+026
+  1.678692235014744E+026
+  1.684642913851023E+026
+  1.689536459991218E+026
+  1.693252124992389E+026
+  1.695777713390393E+026
+  1.697191784560766E+026
+  1.697640214869251E+026
+  1.697311799265381E+026
+  1.696415318079338E+026
+  1.695159538060815E+026
+  1.693737966733581E+026
+  1.692318944609935E+026
+  1.691040269757028E+026
+  5.055960781615953E+020
+  5.055212195465595E+020
+  5.055473586841427E+020
+  5.056968075959671E+020
+  5.059810766833428E+020
+  5.063962470296212E+020
+  5.069192736344654E+020
+  5.075058417209112E+020
+  5.080903042886495E+020
+  5.085882622378843E+020
+  5.089020417008487E+020
+  5.089289532936676E+020
+  5.085719113032702E+020
+  5.077516118069061E+020
+  5.064190413838016E+020
+  5.045667275713624E+020
+  5.022369168087591E+020
+  4.995248190012760E+020
+  4.965752516318955E+020
+  4.935715104209414E+020
+  4.907160995099574E+020
+  4.882040071404276E+020
+  4.861903730403304E+020
+  4.847554732971382E+020
+  4.838707581496626E+020
+  4.833700854855017E+020
+  4.829302715068671E+020
+  4.820647206816891E+020
+  4.801333569639279E+020
+  4.763714707711259E+020
+  4.699393603693673E+020
+  4.599934689622061E+020
+  4.457775832852971E+020
+  4.267290504813363E+020
+  4.025897123696651E+020
+  3.735049590050582E+020
+  3.400888159751925E+020
+  3.034314434995967E+020
+  2.650312471336514E+020
+  2.266486315382729E+020
+  1.901003439362026E+020
+  1.569700895938347E+020
+  1.281901513251011E+020
+  1.039504857143771E+020
+  8.397192161271983E+019
+  6.775301825320519E+019
+  5.472278804952676E+019
+  4.432593789128672E+019
+  3.606428671432139E+019
+  2.951193612646183E+019
+  2.431598469844789E+019
+  2.019013882738495E+019
+  1.690551748024960E+019
+  1.428099104029416E+019
+  1.217421265293214E+019
+  1.047382276268065E+019
+  9.092939556311562E+018
+  7.963863715489493E+018
+  7.033847055403421E+018
+  6.261753309866888E+018
+  5.615446632498884E+018
+  5.069762828320662E+018
+  4.604941260813692E+018
+  4.205417698820894E+018
+  3.858898348515076E+018
+  3.555652369155792E+018
+  3.287974268685948E+018
+  3.049779022429026E+018
+  2.836302121031095E+018
+  2.643884826941261E+018
+  2.469832728426074E+018
+  2.312344559219889E+018
+  2.170520016616589E+018
+  2.044472557928890E+018
+  1.935599665127996E+018
+  1.847104230860745E+018
+  1.784923812786125E+018
+  1.759318493394380E+018
+  1.787502377760013E+018
+  1.897884887504745E+018
+  2.136712475084033E+018
+  2.578142205825722E+018
+  3.338962639953816E+018
+  4.599151490633626E+018
+  6.628948583509002E+018
+  9.821691751734225E+018
+  1.472871490380499E+019
+  2.208747332714337E+019
+  3.282627414715945E+019
+  4.801882438218193E+019
+  6.875115489192193E+019
+  9.585706436717388E+019
+  1.295333602552681E+020
+  1.690946812043107E+020
+  2.130334385415184E+020
+  2.592108533638867E+020
+  3.051623794772359E+020
+  3.484674421136985E+020
+  3.870891444199935E+020
+  4.196100159476747E+020
+  4.453308396684607E+020
+  4.642412244187872E+020
+  4.768980904572423E+020
+  4.842570896582557E+020
+  4.874962068017154E+020
+  4.878579255813765E+020
+  4.865231229937783E+020
+  4.845201182966202E+020
+  4.826669454402459E+020
+  4.815429498128489E+020
+  4.814855922940782E+020
+  4.826084777610385E+020
+  4.848363600255450E+020
+  4.879521288756924E+020
+  4.916499382173812E+020
+  4.955882278079914E+020
+  4.994368323300452E+020
+  5.029137383854609E+020
+  5.058090532287143E+020
+  5.079958761422037E+020
+  5.094295395823305E+020
+  5.101378826807416E+020
+  5.102058166961417E+020
+  5.097574135292771E+020
+  5.089380474199443E+020
+  5.078980955289095E+020
+  5.067791306438101E+020
+  5.057034532784848E+020
+  5.047673191096431E+020
+  5.040376975593279E+020
+  1.162633004450102E+021
+  1.162814304280266E+021
+  1.162964885718945E+021
+  1.163057955629627E+021
+  1.163063127476010E+021
+  1.162946598542197E+021
+  1.162672069273598E+021
+  1.162202445119430E+021
+  1.161502176070275E+021
+  1.160540382174465E+021
+  1.159294575112806E+021
+  1.157754450954213E+021
+  1.155925175418118E+021
+  1.153829457058619E+021
+  1.151507506493919E+021
+  1.149013902043987E+021
+  1.146410478677415E+021
+  1.143754600756568E+021
+  1.141082573290814E+021
+  1.138388511827737E+021
+  1.135599703875960E+021
+  1.132550267414343E+021
+  1.128955621497926E+021
+  1.124390815189092E+021
+  1.118276045922709E+021
+  1.109872741301025E+021
+  1.098293456551298E+021
+  1.082528660796804E+021
+  1.061493288511682E+021
+  1.034095559304894E+021
+  9.993295708371643E+020
+  9.563908578555616E+020
+  9.048098103570072E+020
+  8.445913009298415E+020
+  7.763406909206559E+020
+  7.013484533598568E+020
+  6.216014251298731E+020
+  5.396927383793113E+020
+  4.586183405063669E+020
+  3.814752565733839E+020
+  3.111093439592557E+020
+  2.496812743435320E+020
+  1.980912895981925E+020
+  1.559860189784244E+020
+  1.223131858738281E+020
+  9.576853121671176E+019
+  7.505036017359543E+019
+  5.898542069698840E+019
+  4.657674456223685E+019
+  3.700845479766426E+019
+  2.962959452023810E+019
+  2.392984059523208E+019
+  1.951401313461974E+019
+  1.607869923808638E+019
+  1.339227936609973E+019
+  1.127857721889128E+019
+  9.603846294161986E+018
+  8.266608738773346E+018
+  7.189826619764044E+018
+  6.314926867138999E+018
+  5.597271491612663E+018
+  5.002739843827047E+018
+  4.505158575553731E+018
+  4.084373642086198E+018
+  3.724806631971034E+018
+  3.414375860141302E+018
+  3.143692474531296E+018
+  2.905464921762094E+018
+  2.694063156365650E+018
+  2.505208663764797E+018
+  2.335769517931251E+018
+  2.183653420007170E+018
+  2.047808681569349E+018
+  1.928367243147602E+018
+  1.827000658184194E+018
+  1.747617750047193E+018
+  1.697623055672848E+018
+  1.690093870366299E+018
+  1.747439795351844E+018
+  1.907401598202329E+018
+  2.232637375822114E+018
+  2.825618867852048E+018
+  3.851044641533188E+018
+  5.568278310908032E+018
+  8.376048015003823E+018
+  1.287010744138256E+019
+  1.991068805480703E+019
+  3.068894596549276E+019
+  4.676875320906579E+019
+  7.006136479135234E+019
+  1.026672236018822E+020
+  1.464976967520933E+020
+  2.026596037198090E+020
+  2.709754479993968E+020
+  3.499229680147380E+020
+  4.367686629155597E+020
+  5.279067030889332E+020
+  6.193619942465851E+020
+  7.073279359818170E+020
+  7.886156779744086E+020
+  8.609365012148147E+020
+  9.229974701699740E+020
+  9.744388011196723E+020
+  1.015667020971570E+021
+  1.047641098951849E+021
+  1.071657036655759E+021
+  1.089159239011211E+021
+  1.101591369607023E+021
+  1.110288647018233E+021
+  1.116407903718669E+021
+  1.120889767980304E+021
+  1.124447230585634E+021
+  1.127575226645142E+021
+  1.130576000273448E+021
+  1.133594865950412E+021
+  1.136660866450481E+021
+  1.139727158648643E+021
+  1.142706929671836E+021
+  1.145502104455564E+021
+  1.148023657359243E+021
+  1.150203649660841E+021
+  1.152000137754494E+021
+  1.153396917842225E+021
+  1.154400454080198E+021
+  1.155035803611195E+021
+  1.155342246435352E+021
+  1.155369031516966E+021
+  1.155172106665159E+021
+  1.154811997711811E+021
+  1.154352181648541E+021
+  1.391990023804866E+026
+  1.392096419294495E+026
+  1.392256690814070E+026
+  1.392464812582136E+026
+  1.392703031157382E+026
+  1.392938538110153E+026
+  1.393121603581441E+026
+  1.393185707880024E+026
+  1.393049961550546E+026
+  1.392624360731573E+026
+  1.391817875494476E+026
+  1.390548774058224E+026
+  1.388756279806605E+026
+  1.386412235185618E+026
+  1.383530933181536E+026
+  1.380174930893395E+026
+  1.376454582830495E+026
+  1.372519237088618E+026
+  1.368538578075415E+026
+  1.364673536685222E+026
+  1.361037503424205E+026
+  1.357650134252843E+026
+  1.354387604546607E+026
+  1.350934486410516E+026
+  1.346743286258183E+026
+  1.341007986065230E+026
+  1.332657741373835E+026
+  1.320376384850948E+026
+  1.302652743173180E+026
+  1.277865959651464E+026
+  1.244408581635133E+026
+  1.200847248715988E+026
+  1.146115369812648E+026
+  1.079723535620988E+026
+  1.001961945646537E+026
+  9.140569756054159E+025
+  8.182357155952964E+025
+  7.176544601075502E+025
+  6.161656853872111E+025
+  5.179340366402379E+025
+  4.269584438903329E+025
+  3.464534179740813E+025
+  2.780006218744814E+025
+  2.214761889646316E+025
+  1.757562521228794E+025
+  1.393089592526234E+025
+  1.105425468602263E+025
+  8.798616384308672E+024
+  7.036664605747370E+024
+  5.662604486803880E+024
+  4.590878763853086E+024
+  3.753574248809514E+024
+  3.097477852873764E+024
+  2.581267456798764E+024
+  2.173048332753315E+024
+  1.848296370128835E+024
+  1.588194196101938E+024
+  1.378313370472966E+024
+  1.207585852173640E+024
+  1.067509472719101E+024
+  9.515386793616971E+023
+  8.546198212951350E+023
+  7.728380501102601E+023
+  7.031497956095898E+023
+  6.431805624051279E+023
+  5.910724969468060E+023
+  5.453699185552428E+023
+  5.049339543823139E+023
+  4.688797562134934E+023
+  4.365317191876982E+023
+  4.073939110019327E+023
+  3.811348481740430E+023
+  3.575882096290436E+023
+  3.367746036907616E+023
+  3.189549019564115E+023
+  3.047340827126937E+023
+  2.952476040181343E+023
+  2.924821520989957E+023
+  2.998116143593496E+023
+  3.228695224870024E+023
+  3.709316798550676E+023
+  4.590436841944134E+023
+  6.111849694899410E+023
+  8.647844248702435E+023
+  1.276835774671806E+024
+  1.931607675635117E+024
+  2.949361557764399E+024
+  4.494401401753281E+024
+  6.779018715974605E+024
+  1.005742418516926E+025
+  1.460086679237195E+025
+  2.064277128560790E+025
+  2.829340650609914E+025
+  3.747801529036951E+025
+  4.793671033069848E+025
+  5.925215480008490E+025
+  7.090459193967795E+025
+  8.234643071380864E+025
+  9.307727999763915E+025
+  1.027025847906788E+026
+  1.109663328309114E+026
+  1.177568513478706E+026
+  1.230911932961119E+026
+  1.270865659138826E+026
+  1.299270330149146E+026
+  1.318316273202222E+026
+  1.330274141980274E+026
+  1.337288826929691E+026
+  1.341236666305368E+026
+  1.343639541762318E+026
+  1.345627648084223E+026
+  1.347942823273357E+026
+  1.350974458407584E+026
+  1.354819493309142E+026
+  1.359357110310107E+026
+  1.364328214310353E+026
+  1.369410344854013E+026
+  1.374280562464016E+026
+  1.378661733667138E+026
+  1.382350745587125E+026
+  1.385229817323984E+026
+  1.387263994655326E+026
+  1.388489162873816E+026
+  1.388995262697073E+026
+  1.388908397428758E+026
+  1.388373744777364E+026
+  1.387540450398401E+026
+  1.386549983469744E+026
+  1.385528434035906E+026
+  1.384582109674293E+026
+  1.881620955427949E+026
+  1.881800083446428E+026
+  1.882034054159384E+026
+  1.882308309365566E+026
+  1.882593676906936E+026
+  1.882842848528456E+026
+  1.882988886628955E+026
+  1.882946403894468E+026
+  1.882615708929290E+026
+  1.881890549630897E+026
+  1.880669342150646E+026
+  1.878868973311400E+026
+  1.876439865690191E+026
+  1.873380450988133E+026
+  1.869748544363721E+026
+  1.865666698904955E+026
+  1.861318582722009E+026
+  1.856933774409801E+026
+  1.852759177466356E+026
+  1.849016580592560E+026
+  1.845847697368419E+026
+  1.843250106389848E+026
+  1.841009566525623E+026
+  1.838635858240740E+026
+  1.835310330699948E+026
+  1.829853611290900E+026
+  1.820721568003863E+026
+  1.806036876043920E+026
+  1.783662674132127E+026
+  1.751323736038759E+026
+  1.706778690647307E+026
+  1.648042870481459E+026
+  1.573653912383247E+026
+  1.482960361977410E+026
+  1.376397787809049E+026
+  1.255700288878837E+026
+  1.123984075658129E+026
+  9.856430772195849E+025
+  8.460223901838817E+025
+  7.108851036876240E+025
+  5.857520573351354E+025
+  4.750511003053890E+025
+  3.809549994663685E+025
+  3.032870840560210E+025
+  2.404943721539915E+025
+  1.904631898950272E+025
+  1.509986025872570E+025
+  1.200733444118583E+025
+  9.593336051867571E+024
+  7.712172376576735E+024
+  6.246073618721022E+024
+  5.101602417226996E+024
+  4.205584487933330E+024
+  3.501228765173190E+024
+  2.944726795573660E+024
+  2.502415117879410E+024
+  2.148480827890085E+024
+  1.863145271181029E+024
+  1.631247162071859E+024
+  1.441148650293378E+024
+  1.283896939908958E+024
+  1.152585175373977E+024
+  1.041867111196638E+024
+  9.475896177391152E+023
+  8.665150757541054E+023
+  7.961122139804373E+023
+  7.343991154091868E+023
+  6.798261852122619E+023
+  6.311900987764155E+023
+  5.875724246688629E+023
+  5.482990772145289E+023
+  5.129193984439750E+023
+  4.812070281144671E+023
+  4.531895411580150E+023
+  4.292212087002384E+023
+  4.101247612766085E+023
+  3.974459188552188E+023
+  3.938915890097909E+023
+  4.040623759404941E+023
+  4.356454706595559E+023
+  5.013061194691238E+023
+  6.215999591961671E+023
+  8.293074385358763E+023
+  1.175625184619879E+024
+  1.738559681461159E+024
+  2.633524078424396E+024
+  4.025343283915569E+024
+  6.139379423673719E+024
+  9.267069435667523E+024
+  1.375776153280564E+025
+  1.998474409458153E+025
+  2.827006811549942E+025
+  3.876735350737368E+025
+  5.137638502995044E+025
+  6.574217047573364E+025
+  8.129216656852515E+025
+  9.731127048578419E+025
+  1.130440431298149E+026
+  1.277979969770285E+026
+  1.410247448349455E+026
+  1.523657536719553E+026
+  1.616611673047078E+026
+  1.689290996695365E+026
+  1.743269254113194E+026
+  1.781058545098042E+026
+  1.805672402763234E+026
+  1.820255199269466E+026
+  1.827797093848546E+026
+  1.830934794332478E+026
+  1.831829503518214E+026
+  1.832110982186758E+026
+  1.832876879385467E+026
+  1.834736767373963E+026
+  1.837889683761319E+026
+  1.842222752880362E+026
+  1.847417647620470E+026
+  1.853052252826974E+026
+  1.858687292293780E+026
+  1.863931447330295E+026
+  1.868482624982781E+026
+  1.872146596819132E+026
+  1.874836876421448E+026
+  1.876561470780237E+026
+  1.877402697315233E+026
+  1.877494986190761E+026
+  1.877003248643427E+026
+  1.876103431015148E+026
+  1.874967292475764E+026
+  1.873752092281102E+026
+  1.872594358420469E+026
+  5.029341097825991E+025
+  5.030094145856074E+025
+  5.030763137479215E+025
+  5.031243357699132E+025
+  5.031409940151302E+025
+  5.031117367837252E+025
+  5.030202917114803E+025
+  5.028494520014387E+025
+  5.025822649120872E+025
+  5.022036985885490E+025
+  5.017027019256249E+025
+  5.010744076390743E+025
+  5.003221838890701E+025
+  4.994591643018702E+025
+  4.985087823258240E+025
+  4.975037891757931E+025
+  4.964832728747544E+025
+  4.954873110564764E+025
+  4.945490863123172E+025
+  4.936845792423345E+025
+  4.928803179310255E+025
+  4.920800588801071E+025
+  4.911716402359605E+025
+  4.899755223020529E+025
+  4.882366739287481E+025
+  4.856214743870831E+025
+  4.817212161360067E+025
+  4.760636722821931E+025
+  4.681340656258759E+025
+  4.574065869825679E+025
+  4.433871650791557E+025
+  4.256671737326021E+025
+  4.039858483180706E+025
+  3.782962220507111E+025
+  3.488256186987227E+025
+  3.161179817902749E+025
+  2.810431574070805E+025
+  2.447598050676978E+025
+  2.086256198023028E+025
+  1.740609503739911E+025
+  1.423870444050782E+025
+  1.146244119860093E+025
+  9.122357730466973E+024
+  7.206056828022386E+024
+  5.668599387114167E+024
+  4.452810842317207E+024
+  3.500964508799733E+024
+  2.760652017725722E+024
+  2.187099576630534E+024
+  1.743504103306065E+024
+  1.400388213450228E+024
+  1.134561419393368E+024
+  9.280064700856664E+023
+  7.668466114241497E+023
+  6.404566020518481E+023
+  5.407308975398761E+023
+  4.614984773410982E+023
+  3.980640881494593E+023
+  3.468535071686350E+023
+  3.051418905143420E+023
+  2.708471818809130E+023
+  2.423737748291087E+023
+  2.184946198921800E+023
+  1.982625470018678E+023
+  1.809436971907107E+023
+  1.659676573804936E+023
+  1.528902272636673E+023
+  1.413657861964497E+023
+  1.311270430502409E+023
+  1.219706190651070E+023
+  1.137475153921139E+023
+  1.063581500348924E+023
+  9.975243883444106E+022
+  9.393651871802137E+022
+  8.898942784753362E+022
+  8.509574590216523E+022
+  8.260439491502702E+022
+  8.213022000346462E+022
+  8.472446797076082E+022
+  9.215371102457272E+022
+  1.073445693117766E+023
+  1.350729651563164E+023
+  1.829979623464561E+023
+  2.631524515113272E+023
+  3.939878282364257E+023
+  6.029955887668602E+023
+  9.297467459470752E+023
+  1.428836496840689E+024
+  2.171632518081297E+024
+  3.244872627144966E+024
+  4.743118830379127E+024
+  6.751144968680492E+024
+  9.315642239292180E+024
+  1.242356523245359E+025
+  1.600006181000824E+025
+  1.991542025539891E+025
+  2.400138576747425E+025
+  2.807476500852460E+025
+  3.196225872378058E+025
+  3.552086790729613E+025
+  3.865037591120214E+025
+  4.129714103190681E+025
+  4.345064040474937E+025
+  4.513533548097801E+025
+  4.640051655952864E+025
+  4.731020412173202E+025
+  4.793437552032954E+025
+  4.834206668711401E+025
+  4.859641511688243E+025
+  4.875146509809620E+025
+  4.885047675755970E+025
+  4.892548066123393E+025
+  4.899783510170887E+025
+  4.907954356151163E+025
+  4.917507526063245E+025
+  4.928342022296627E+025
+  4.940012251062700E+025
+  4.951908086517887E+025
+  4.963397763518296E+025
+  4.973927525815808E+025
+  4.983078738171411E+025
+  4.990588461733177E+025
+  4.996343516010283E+025
+  5.000359776678701E+025
+  5.002755952851737E+025
+  5.003726000244503E+025
+  5.003512745627806E+025
+  5.002387024528085E+025
+  5.000633422887197E+025
+  4.998540028003667E+025
+  1.306303228272345E+025
+  1.306507594382785E+025
+  1.306678394527662E+025
+  1.306785619046241E+025
+  1.306795113527180E+025
+  1.306668785075226E+025
+  1.306365674326796E+025
+  1.305843946304168E+025
+  1.305063639951571E+025
+  1.303990340979758E+025
+  1.302599557515545E+025
+  1.300881193552249E+025
+  1.298843446761171E+025
+  1.296515309606599E+025
+  1.293946626435016E+025
+  1.291204569719831E+025
+  1.288365509509766E+025
+  1.285501532204192E+025
+  1.282661322356861E+025
+  1.279845776557278E+025
+  1.276979542743274E+025
+  1.273880569998605E+025
+  1.270230570389759E+025
+  1.265549902217749E+025
+  1.259180703975007E+025
+  1.250282145301224E+025
+  1.237841505642681E+025
+  1.220704569614246E+025
+  1.197628590953956E+025
+  1.167360649582615E+025
+  1.128743102345261E+025
+  1.080845224479976E+025
+  1.023115281597956E+025
+  9.555398572903451E+024
+  8.787879610361555E+024
+  7.943083862297239E+024
+  7.043439060436796E+024
+  6.118303763060569E+024
+  5.201667374962414E+024
+  4.328728281327801E+024
+  3.531890252706134E+024
+  2.835821885107670E+024
+  2.250902649025776E+024
+  1.773271945247685E+024
+  1.391109639795567E+024
+  1.089705598494070E+024
+  8.543518587219841E+023
+  6.717766247808232E+023
+  5.306926995878182E+023
+  4.218567516564679E+023
+  3.378894759524505E+023
+  2.730026868407467E+023
+  2.227119411269324E+023
+  1.835725378742801E+023
+  1.529536838990841E+023
+  1.288534663236738E+023
+  1.097514788217275E+023
+  9.449367781037057E+022
+  8.220361979884151E+022
+  7.221468133793766E+022
+  6.401864964550895E+022
+  5.722691682961885E+022
+  5.154128694607263E+022
+  4.673206737746938E+022
+  4.262165778592642E+022
+  3.907228136376495E+022
+  3.597684056486413E+022
+  3.325214109016477E+022
+  3.083393235342566E+022
+  2.867337923261536E+022
+  2.673472923140708E+022
+  2.499409519477732E+022
+  2.343946733377496E+022
+  2.207234292843136E+022
+  2.091178140445802E+022
+  2.000235000466889E+022
+  1.942845377882862E+022
+  1.933912083400920E+022
+  1.998965592516111E+022
+  2.180990182531126E+022
+  2.551328573588302E+022
+  3.226620669663201E+022
+  4.394278403784257E+022
+  6.349335197964303E+022
+  9.545190076251064E+022
+  1.465900815068428E+023
+  2.266812635553553E+023
+  3.492513751410304E+023
+  5.320472770413541E+023
+  7.967400572521351E+023
+  1.167117395094884E+024
+  1.664777359790395E+024
+  2.302135237709057E+024
+  3.076986457267688E+024
+  3.971844610264584E+024
+  4.955487645232109E+024
+  5.986835815018059E+024
+  7.020686135527872E+024
+  8.013828331562578E+024
+  8.930142499239844E+024
+  9.743791466990826E+024
+  1.044028733705405E+025
+  1.101576010066606E+025
+  1.147504576729666E+025
+  1.182924479475816E+025
+  1.209326718091889E+025
+  1.228368481433459E+025
+  1.241703416598376E+025
+  1.250859069219541E+025
+  1.257157283565616E+025
+  1.261671168837384E+025
+  1.265212150590914E+025
+  1.268341044620650E+025
+  1.271397226546747E+025
+  1.274539764780836E+025
+  1.277794224595566E+025
+  1.281099205777963E+025
+  1.284347771773508E+025
+  1.287420593209465E+025
+  1.290209413577987E+025
+  1.292630962072594E+025
+  1.294632626818614E+025
+  1.296192146262407E+025
+  1.297314009325774E+025
+  1.298024651268944E+025
+  1.298367285367721E+025
+  1.298396868947633E+025
+  1.298176200316977E+025
+  1.297773345975060E+025
+  1.297259674503657E+025
+  4.861377703699576E+022
+  4.862143085641229E+022
+  4.862771365164362E+022
+  4.863148314541759E+022
+  4.863145481029664E+022
+  4.862621230105215E+022
+  4.861424802659197E+022
+  4.859403507308193E+022
+  4.856412392776064E+022
+  4.852326987533568E+022
+  4.847058305429243E+022
+  4.840567936995424E+022
+  4.832880849131832E+022
+  4.824093024602393E+022
+  4.814370280067510E+022
+  4.803934299588482E+022
+  4.793032337005821E+022
+  4.781888057583492E+022
+  4.770632615867373E+022
+  4.759217384940850E+022
+  4.747312663762552E+022
+  4.734199835734805E+022
+  4.718667330836712E+022
+  4.698922890081055E+022
+  4.672535774861859E+022
+  4.636422732684655E+022
+  4.586891048149878E+022
+  4.519751311280084E+022
+  4.430511770461049E+022
+  4.314664621869283E+022
+  4.168070439664165E+022
+  3.987437310007085E+022
+  3.770873313989938E+022
+  3.518463790087325E+022
+  3.232790862741147E+022
+  2.919279936707699E+022
+  2.586240611065270E+022
+  2.244486637003227E+022
+  1.906485768774641E+022
+  1.585103635973010E+022
+  1.292140874974734E+022
+  1.036534028786073E+022
+  8.219741074469701E+021
+  6.469451653960087E+021
+  5.070348715918201E+021
+  3.967930263054622E+021
+  3.107886012915976E+021
+  2.441312923696767E+021
+  1.926686565715225E+021
+  1.530046057998878E+021
+  1.224310137496504E+021
+  9.882589341709614E+020
+  8.054682338619155E+020
+  6.633335960346079E+020
+  5.522373604498592E+020
+  4.648672981827170E+020
+  3.956746592292970E+020
+  3.404512451577156E+020
+  2.960037301269814E+020
+  2.599052156820451E+020
+  2.303069669731549E+020
+  2.057964291031419E+020
+  1.852905044457240E+020
+  1.679555232671306E+020
+  1.531473410964676E+020
+  1.403665871984443E+020
+  1.292253309172799E+020
+  1.194223944994781E+020
+  1.107252917759454E+020
+  1.029573828158205E+020
+  9.598938096944099E+019
+  8.973491818461558E+019
+  8.415057981402864E+019
+  7.924181961252351E+019
+  7.507769159484849E+019
+  7.181972912629758E+019
+  6.977404845814408E+019
+  6.948150518217941E+019
+  7.186928296058188E+019
+  7.849945703580361E+019
+  9.196633669258976E+019
+  1.165141635931594E+020
+  1.589669545216518E+020
+  2.300750146670293E+020
+  3.463717139099520E+020
+  5.325708486240099E+020
+  8.243747859881791E+020
+  1.271247395024104E+021
+  1.938171935449301E+021
+  2.904631210713548E+021
+  4.258077195690731E+021
+  6.078258559103624E+021
+  8.411671420682873E+021
+  1.125158779986243E+022
+  1.453544798241638E+022
+  1.815029286377428E+022
+  2.194673370205443E+022
+  2.575977278908124E+022
+  2.943111535885072E+022
+  3.282785677166816E+022
+  3.585427662527608E+022
+  3.845589513622789E+022
+  4.061695430377717E+022
+  4.235355706166686E+022
+  4.370483422813190E+022
+  4.472402917251970E+022
+  4.547068036675967E+022
+  4.600443372623780E+022
+  4.638056912355689E+022
+  4.664708978358938E+022
+  4.684314057307956E+022
+  4.699851665879250E+022
+  4.713403965786097E+022
+  4.726258497077439E+022
+  4.739053855784462E+022
+  4.751945736863938E+022
+  4.764772154252031E+022
+  4.777200638360103E+022
+  4.788846179285759E+022
+  4.799355020943555E+022
+  4.808454753386466E+022
+  4.815975333872007E+022
+  4.821849041766813E+022
+  4.826098944140069E+022
+  4.828823247411169E+022
+  4.830178362072913E+022
+  4.830362322345114E+022
+  4.829602108890781E+022
+  4.828145499312248E+022
+  4.826254684362193E+022
+  1.320281673840643E+026
+  1.320469094530651E+026
+  1.320649681071738E+026
+  1.320799570129894E+026
+  1.320888232931071E+026
+  1.320877915847574E+026
+  1.320724308753454E+026
+  1.320378656853433E+026
+  1.319791284974403E+026
+  1.318916775013851E+026
+  1.317720572166533E+026
+  1.316186311487047E+026
+  1.314322979128748E+026
+  1.312170763928563E+026
+  1.309804128083198E+026
+  1.307330463680067E+026
+  1.304882787334802E+026
+  1.302605247314831E+026
+  1.300630795135077E+026
+  1.299051233675750E+026
+  1.297880955759075E+026
+  1.297016897198153E+026
+  1.296198353966143E+026
+  1.294971162698569E+026
+  1.292661188059673E+026
+  1.288362081035115E+026
+  1.280941974837160E+026
+  1.269073350407820E+026
+  1.251289856293240E+026
+  1.226073291850417E+026
+  1.191972753131052E+026
+  1.147755227273953E+026
+  1.092581759079333E+026
+  1.026195199114748E+026
+  9.490950194977361E+025
+  8.626639578880160E+025
+  7.692046635124051E+025
+  6.718480633817151E+025
+  5.743139009018726E+025
+  4.805380355998280E+025
+  3.942235979205475E+025
+  3.182752405994208E+025
+  2.540382887221329E+025
+  2.012663518108450E+025
+  1.587982741289406E+025
+  1.251162945206464E+025
+  9.867021474232154E+024
+  7.804264968829155E+024
+  6.201637073935410E+024
+  4.958658418424924E+024
+  3.994552164284277E+024
+  3.245556033230227E+024
+  2.661976553510140E+024
+  2.205426573295342E+024
+  1.846429823077171E+024
+  1.562438114745390E+024
+  1.336238728804990E+024
+  1.154701010444981E+024
+  1.007803791158101E+024
+  8.878882183809147E+023
+  7.890878316171119E+023
+  7.068960580511459E+023
+  6.378391961164966E+023
+  5.792298188480183E+023
+  5.289812218461686E+023
+  4.854681254310425E+023
+  4.474224596939183E+023
+  4.138558892616202E+023
+  3.840029626308569E+023
+  3.572806040051103E+023
+  3.332613301753018E+023
+  3.116593400034123E+023
+  2.923308401004995E+023
+  2.752931319183571E+023
+  2.607718175132246E+023
+  2.492930415448964E+023
+  2.418494642149036E+023
+  2.401866179399385E+023
+  2.472827732056229E+023
+  2.681326800221920E+023
+  3.109945927463028E+023
+  3.893182412604985E+023
+  5.246282647409269E+023
+  7.506672462416331E+023
+  1.119053643519624E+024
+  1.706494161388994E+024
+  2.623073493347141E+024
+  4.020154333394976E+024
+  6.094788053734384E+024
+  9.085198959348290E+024
+  1.324909841628312E+025
+  1.881414875325731E+025
+  2.589931421816030E+025
+  3.445572665292537E+025
+  4.426279697314773E+025
+  5.494964398584483E+025
+  6.604236525707993E+025
+  7.703087947178602E+025
+  8.743821430587435E+025
+  9.687655083912621E+025
+  1.050805833219351E+026
+  1.119164557994347E+026
+  1.173706307561381E+026
+  1.215260550722243E+026
+  1.245330845236462E+026
+  1.265809068002829E+026
+  1.278729013274634E+026
+  1.286073740346441E+026
+  1.289637892784530E+026
+  1.290939746857756E+026
+  1.291175810495162E+026
+  1.291210910968668E+026
+  1.291597089113621E+026
+  1.292614470557519E+026
+  1.294326688203309E+026
+  1.296642959364184E+026
+  1.299379196686798E+026
+  1.302311840796272E+026
+  1.305220228413064E+026
+  1.307915680472797E+026
+  1.310257576683639E+026
+  1.312158298335633E+026
+  1.313580098281014E+026
+  1.314527428775806E+026
+  1.315037544034639E+026
+  1.315170767411143E+026
+  1.315001309849758E+026
+  1.314609914013590E+026
+  1.314078710571256E+026
+  1.313487670728876E+026
+  5.943732296707599E+025
+  5.944620407280990E+025
+  5.945417974285011E+025
+  5.946003126734776E+025
+  5.946229442354960E+025
+  5.945925168029180E+025
+  5.944897207153673E+025
+  5.942940489801171E+025
+  5.939852294381583E+025
+  5.935452434100872E+025
+  5.929608293203328E+025
+  5.922261725141229E+025
+  5.913454261562094E+025
+  5.903346156185514E+025
+  5.892223532212600E+025
+  5.880487331803910E+025
+  5.868618213700115E+025
+  5.857112921119893E+025
+  5.846389999246963E+025
+  5.836666190388604E+025
+  5.827809215933860E+025
+  5.819177432036784E+025
+  5.809461257887873E+025
+  5.796544582026894E+025
+  5.777406079516278E+025
+  5.748080490711628E+025
+  5.703698868341763E+025
+  5.638625294308438E+025
+  5.546706004198854E+025
+  5.421644580711525E+025
+  5.257511595523612E+025
+  5.049385041834661E+025
+  4.794095201396375E+025
+  4.491012387233594E+025
+  4.142771038263185E+025
+  3.755778743708922E+025
+  3.340332696145874E+025
+  2.910184186732982E+025
+  2.481474815133996E+025
+  2.071115608180108E+025
+  1.694860852411132E+025
+  1.364903647796287E+025
+  1.086662359272023E+025
+  8.587159063511391E+024
+  6.757616522837196E+024
+  5.310303821421514E+024
+  4.176774792525036E+024
+  3.294832767590890E+024
+  2.611305998521414E+024
+  2.082464561176065E+024
+  1.673266339890120E+024
+  1.356131038736266E+024
+  1.109622229456993E+024
+  9.172234282608417E+023
+  7.662835554982061E+023
+  6.471482220844122E+023
+  5.524646902297638E+023
+  4.766367136234210E+023
+  4.154028001453442E+023
+  3.655131192970510E+023
+  3.244836954134439E+023
+  2.904103262879121E+023
+  2.618282127246355E+023
+  2.376063393567090E+023
+  2.168681644330490E+023
+  1.989321930139579E+023
+  1.832675931144203E+023
+  1.694612483521344E+023
+  1.571936092527279E+023
+  1.462214986719489E+023
+  1.363667428988367E+023
+  1.275102542201841E+023
+  1.195921326444533E+023
+  1.126196947567394E+023
+  1.066873852214793E+023
+  1.020157332337578E+023
+  9.902152094697262E+022
+  9.843898192471428E+022
+  1.015231639995961E+023
+  1.103825798422013E+023
+  1.285094503278257E+023
+  1.616012429649182E+023
+  2.187924663163070E+023
+  3.144299815255428E+023
+  4.705067122598178E+023
+  7.197797133530884E+023
+  1.109381180314245E+024
+  1.704309585478944E+024
+  2.589486840906776E+024
+  3.868053723427096E+024
+  5.652343194456178E+024
+  8.042872116795221E+024
+  1.109464299188952E+025
+  1.479141260949439E+025
+  1.904332921385288E+025
+  2.369532346077452E+025
+  2.854664746330617E+025
+  3.337905626331484E+025
+  3.798639874491330E+025
+  4.219888496399323E+025
+  4.589787965427719E+025
+  4.902033162143152E+025
+  5.155457430589222E+025
+  5.353057084150596E+025
+  5.500777270184565E+025
+  5.606306449474270E+025
+  5.678030081344228E+025
+  5.724208477185334E+025
+  5.752386368850192E+025
+  5.769012725930244E+025
+  5.779240055533499E+025
+  5.786872507785286E+025
+  5.794433921810083E+025
+  5.803326904679671E+025
+  5.814052190558429E+025
+  5.826456068260792E+025
+  5.839975073245437E+025
+  5.853852582462598E+025
+  5.867310552213975E+025
+  5.879669082162460E+025
+  5.890414676801636E+025
+  5.899224456269510E+025
+  5.905958389970904E+025
+  5.910633678818306E+025
+  5.913392428919034E+025
+  5.914467706544146E+025
+  5.914151144156470E+025
+  5.912767255482378E+025
+  5.910655796594980E+025
+  5.908159156470245E+025
+  1.290561910421947E+025
+  1.290745139982610E+025
+  1.290916090475011E+025
+  1.291050428087721E+025
+  1.291117875147192E+025
+  1.291081758002163E+025
+  1.290899644570806E+025
+  1.290525245861416E+025
+  1.289911524019749E+025
+  1.289015234402408E+025
+  1.287802698905793E+025
+  1.286256160401383E+025
+  1.284379923933568E+025
+  1.282205267240235E+025
+  1.279792807620482E+025
+  1.277230866975033E+025
+  1.274628458737367E+025
+  1.272101814520392E+025
+  1.269753889525049E+025
+  1.267647060458170E+025
+  1.265770223590163E+025
+  1.264002594094643E+025
+  1.262077527850203E+025
+  1.259550462168802E+025
+  1.255775488394195E+025
+  1.249895112459831E+025
+  1.240847524839143E+025
+  1.227395346850584E+025
+  1.208179445143675E+025
+  1.181800880816952E+025
+  1.146932893508463E+025
+  1.102462193980430E+025
+  1.047653881034028E+025
+  9.823265749339697E+024
+  9.070144326281349E+024
+  8.230827082186825E+024
+  7.327575626693973E+024
+  6.390345283021774E+024
+  5.454480571441918E+024
+  4.557169620381480E+024
+  3.733205081650858E+024
+  3.009667221258901E+024
+  2.398794483501544E+024
+  1.897770678264045E+024
+  1.495192901966441E+024
+  1.176373209123936E+024
+  9.264023319608657E+023
+  7.316996184978232E+023
+  5.806341530088123E+023
+  4.636261151264657E+023
+  3.729888024951162E+023
+  3.026649683934523E+023
+  2.479412873684275E+023
+  2.051821853409490E+023
+  1.715999304609064E+023
+  1.450648766829123E+023
+  1.239534042338284E+023
+  1.070284857014253E+023
+  9.334717543799568E+022
+  8.218965412284044E+022
+  7.300518633474141E+022
+  6.537116583321616E+022
+  5.896219006523768E+022
+  5.352676833748318E+022
+  4.886981579558985E+022
+  4.483952505399824E+022
+  4.131755352158701E+022
+  3.821173440217192E+022
+  3.545073154785970E+022
+  3.298023247760687E+022
+  3.076043148448264E+022
+  2.876472127436649E+022
+  2.697972006935621E+022
+  2.540705816447334E+022
+  2.406780185213976E+022
+  2.301110324961353E+022
+  2.232977267511967E+022
+  2.218716226728571E+022
+  2.286224839023900E+022
+  2.482332405196050E+022
+  2.884536811442643E+022
+  3.619171703562961E+022
+  4.888614798451571E+022
+  7.010447925478968E+022
+  1.047104927921436E+023
+  1.599410328994002E+023
+  2.461968155526529E+023
+  3.778022924468206E+023
+  5.734434544720745E+023
+  8.557701101609077E+023
+  1.249380244311925E+024
+  1.776166890486685E+024
+  2.447887440184944E+024
+  3.260529083913263E+024
+  4.193857891689711E+024
+  5.213347024841491E+024
+  6.274553899970288E+024
+  7.329376058570283E+024
+  8.332580873352093E+024
+  9.247126292420990E+024
+  1.004736872031582E+025
+  1.071997674909985E+025
+  1.126294661024105E+025
+  1.168340517565089E+025
+  1.199490188648690E+025
+  1.221473335430620E+025
+  1.236162938810977E+025
+  1.245394038693233E+025
+  1.250834043396616E+025
+  1.253899763980440E+025
+  1.255714359580810E+025
+  1.257097423190741E+025
+  1.258581807371499E+025
+  1.260450721234964E+025
+  1.262788164584478E+025
+  1.265535409812136E+025
+  1.268546556613212E+025
+  1.271637425605915E+025
+  1.274624021315648E+025
+  1.277348956434513E+025
+  1.279696107745789E+025
+  1.281595228559575E+025
+  1.283019315117254E+025
+  1.283977956252720E+025
+  1.284509214929326E+025
+  1.284671244415024E+025
+  1.284534396117444E+025
+  1.284174978001429E+025
+  1.283670974987210E+025
+  1.283099089835374E+025
+  5.789823864235118E+023
+  5.790683152764465E+023
+  5.791446153956089E+023
+  5.791993164116538E+023
+  5.792181460334249E+023
+  5.791844587003390E+023
+  5.790796078817002E+023
+  5.788838163377095E+023
+  5.785774984331485E+023
+  5.781431234501625E+023
+  5.775675256401946E+023
+  5.768443790114718E+023
+  5.759765049975889E+023
+  5.749775962747804E+023
+  5.738728216106529E+023
+  5.726977226973251E+023
+  5.714948562833993E+023
+  5.703077642320004E+023
+  5.691720749342486E+023
+  5.681038626765608E+023
+  5.670858027669692E+023
+  5.660521095161733E+023
+  5.648736601102931E+023
+  5.633450208207179E+023
+  5.611752587199414E+023
+  5.579844395059968E+023
+  5.533076219781586E+023
+  5.466080267395002E+023
+  5.373009158068799E+023
+  5.247895043778699E+023
+  5.085137139377011E+023
+  4.880114081243980E+023
+  4.629895591350716E+023
+  4.333994037184920E+023
+  3.995053359731156E+023
+  3.619330002617758E+023
+  3.216795936890458E+023
+  2.800711902192146E+023
+  2.386599264220583E+023
+  1.990680655512613E+023
+  1.628032464910702E+023
+  1.310283208438563E+023
+  1.042541001412307E+023
+  8.233488262000110E+022
+  6.475362224941200E+022
+  5.085417366926340E+022
+  3.997478640963883E+022
+  3.151508210777961E+022
+  2.496239319368374E+022
+  1.989548268211506E+022
+  1.597707313864701E+022
+  1.294189879930753E+022
+  1.058392284726415E+022
+  8.744495973310150E+021
+  7.302170227326697E+021
+  6.164317988624156E+021
+  5.260433069809023E+021
+  4.536880805218432E+021
+  3.952839743214820E+021
+  3.477194700278828E+021
+  3.086174507105460E+021
+  2.761564780773680E+021
+  2.489360473448042E+021
+  2.258752531507513E+021
+  2.061367337612772E+021
+  1.890697081286406E+021
+  1.741674492448784E+021
+  1.610357263856476E+021
+  1.493696813684680E+021
+  1.389373668980979E+021
+  1.295688628295714E+021
+  1.211506094612806E+021
+  1.136254992162227E+021
+  1.070005511846263E+021
+  1.013659531115999E+021
+  9.693232601627634E+020
+  9.409786092152181E+020
+  9.356431085472903E+020
+  9.653167657583486E+020
+  1.050167773308014E+021
+  1.223612650414325E+021
+  1.540191129863112E+021
+  2.087380539124179E+021
+  3.002635307425033E+021
+  4.496766648722171E+021
+  6.883932212809365E+021
+  1.061642867917059E+022
+  1.631844315441431E+022
+  2.480618594005294E+022
+  3.707207269888679E+022
+  5.419872659174941E+022
+  7.715789381114583E+022
+  1.064870905433853E+023
+  1.420418270409246E+023
+  1.829714136393104E+023
+  2.277977076061791E+023
+  2.746009523002193E+023
+  3.212890736974653E+023
+  3.658812751464446E+023
+  4.067413208753301E+023
+  4.427204738700757E+023
+  4.732012388245044E+023
+  4.980582778464415E+023
+  5.175658050525007E+023
+  5.322818024916118E+023
+  5.429328077386065E+023
+  5.503137940982841E+023
+  5.552094514249190E+023
+  5.583376426113233E+023
+  5.603129944781991E+023
+  5.616276623448302E+023
+  5.626463023722828E+023
+  5.636124607226610E+023
+  5.646635975147368E+023
+  5.658518054891668E+023
+  5.671671616723808E+023
+  5.685607976574711E+023
+  5.699652992959925E+023
+  5.713108653480879E+023
+  5.725365470617554E+023
+  5.735966602606911E+023
+  5.744630602436357E+023
+  5.751244241052489E+023
+  5.755838776804083E+023
+  5.758560154161352E+023
+  5.759637808241630E+023
+  5.759354966594573E+023
+  5.758025307415696E+023
+  5.755977144105037E+023
+  5.753542119097593E+023
+  1.071825097165734E+024
+  1.071968245902889E+024
+  1.072110314257346E+024
+  1.072233498046411E+024
+  1.072314264086327E+024
+  1.072322667583233E+024
+  1.072222664418104E+024
+  1.071973615073668E+024
+  1.071532977489183E+024
+  1.070860408817159E+024
+  1.069923118795455E+024
+  1.068701919294566E+024
+  1.067197263998708E+024
+  1.065434354804336E+024
+  1.063466115504045E+024
+  1.061372687695796E+024
+  1.059256157703813E+024
+  1.057229469887268E+024
+  1.055398938168010E+024
+  1.053840458295599E+024
+  1.052570418255956E+024
+  1.051513297057109E+024
+  1.050468876705506E+024
+  1.049082710492971E+024
+  1.046823883058716E+024
+  1.042974142961850E+024
+  1.036632267003581E+024
+  1.026737170378501E+024
+  1.012112909346910E+024
+  9.915382438147349E+023
+  9.638424343502198E+023
+  9.280267448728536E+023
+  8.834069463782284E+023
+  8.297655546770825E+023
+  7.674940119054677E+023
+  6.976963086377120E+023
+  6.222201458934819E+023
+  5.435845064566373E+023
+  4.647875602185458E+023
+  3.890063896593812E+023
+  3.192344461846205E+023
+  2.578235021221309E+023
+  2.058664939023129E+023
+  1.631693519820387E+023
+  1.287975762250499E+023
+  1.015273447773244E+023
+  8.010765511687486E+022
+  6.339407811699080E+022
+  5.040338242432758E+022
+  4.032362954932181E+022
+  3.250185737547447E+022
+  2.642245972444289E+022
+  2.168345320088326E+022
+  1.797420156782626E+022
+  1.505608859444824E+022
+  1.274651271822001E+022
+  1.090602606587588E+022
+  9.428208856641479E+021
+  8.231809553514729E+021
+  7.254704445578712E+021
+  6.449288494832555E+021
+  5.778976278705420E+021
+  5.215555409499429E+021
+  4.737190099261752E+021
+  4.326918427358332E+021
+  3.971523844308688E+021
+  3.660690648030080E+021
+  3.386375998118964E+021
+  3.142349027409787E+021
+  2.923862423794078E+021
+  2.727435321955773E+021
+  2.550740643006768E+021
+  2.392607992927568E+021
+  2.253178889375554E+021
+  2.134290308304395E+021
+  2.040223901172767E+021
+  1.979053786269965E+021
+  1.964971452007370E+021
+  2.022180865424358E+021
+  2.191258474337756E+021
+  2.539269532572464E+021
+  3.175402701060588E+021
+  4.274342607070841E+021
+  6.109835074503075E+021
+  9.100496562563214E+021
+  1.386816186635961E+022
+  2.130486946597632E+022
+  3.263656014550242E+022
+  4.945835277373075E+022
+  7.369737078956343E+022
+  1.074364510930267E+023
+  1.525124807433969E+023
+  2.098796178022042E+023
+  2.791318459755305E+023
+  3.584739258080982E+023
+  4.448974206347300E+023
+  5.345654440457083E+023
+  6.233547998167207E+023
+  7.074165776163915E+023
+  7.836283317337581E+023
+  8.498618685392468E+023
+  9.050531311901421E+023
+  9.491099089284480E+023
+  9.827172685756152E+023
+  1.007101183223951E+024
+  1.023796765852962E+024
+  1.034448830352015E+024
+  1.040656316214491E+024
+  1.043861489312315E+024
+  1.045279623024573E+024
+  1.045863303458084E+024
+  1.046295585139104E+024
+  1.047006508406166E+024
+  1.048207350267214E+024
+  1.049936491428035E+024
+  1.052110414296481E+024
+  1.054573601370217E+024
+  1.057142204977730E+024
+  1.059638123368459E+024
+  1.061912073481639E+024
+  1.063855959928859E+024
+  1.065406155196872E+024
+  1.066540248447753E+024
+  1.067270177772303E+024
+  1.067634058823456E+024
+  1.067687855596461E+024
+  1.067497623885732E+024
+  1.067133357652503E+024
+  1.066664741561647E+024
+  1.066158303667289E+024
+  4.824393036637313E+025
+  4.825081565395792E+025
+  4.825724344808396E+025
+  4.826230317557989E+025
+  4.826486225637760E+025
+  4.826354924583062E+025
+  4.825677752651255E+025
+  4.824281606172938E+025
+  4.821990510896901E+025
+  4.818642539283879E+025
+  4.814111313393191E+025
+  4.808329669877975E+025
+  4.801312530159525E+025
+  4.793175183862446E+025
+  4.784142089697255E+025
+  4.774540758784469E+025
+  4.764775592470949E+025
+  4.755277642103497E+025
+  4.746428199333295E+025
+  4.738457012632127E+025
+  4.731319631148897E+025
+  4.724562454598543E+025
+  4.717187872312515E+025
+  4.707534767964707E+025
+  4.693191223799211E+025
+  4.670956424406872E+025
+  4.636867889910687E+025
+  4.586308849753264E+025
+  4.514209170301098E+025
+  4.415351287677705E+025
+  4.284788238417225E+025
+  4.118371061104306E+025
+  3.913364315864190E+025
+  3.669099621983927E+025
+  3.387580061586783E+025
+  3.073910988152749E+025
+  2.736410576240737E+025
+  2.386267323031501E+025
+  2.036679052704014E+025
+  1.701528877358981E+025
+  1.393802670363797E+025
+  1.123604593271568E+025
+  8.954964344219202E+024
+  7.084195626109023E+024
+  5.581106040475844E+024
+  4.390810791404351E+024
+  3.457611615773551E+024
+  2.730781292539963E+024
+  2.166880128940459E+024
+  1.730132149383908E+024
+  1.391833470103145E+024
+  1.129366535646418E+024
+  9.251330774756026E+023
+  7.655596733985535E+023
+  6.402389150466339E+023
+  5.412206503518806E+023
+  4.624440818586380E+023
+  3.992917497203638E+023
+  3.482440830578510E+023
+  3.066144592227068E+023
+  2.723474270767045E+023
+  2.438658043207714E+023
+  2.199552247463336E+023
+  1.996771883033201E+023
+  1.823037130517512E+023
+  1.672683305454591E+023
+  1.541294592671810E+023
+  1.425431988433719E+023
+  1.322433801816157E+023
+  1.230273568757013E+023
+  1.147466116547373E+023
+  1.073018732563302E+023
+  1.006432172980661E+023
+  9.477673342213817E+022
+  8.978103515976134E+022
+  8.583954124098865E+022
+  8.329859308714239E+022
+  8.276778912537473E+022
+  8.528824466118795E+022
+  9.260764103886220E+022
+  1.076183106764581E+023
+  1.350353648487610E+023
+  1.824123567230182E+023
+  2.616031904502471E+023
+  3.907629782800299E+023
+  5.969061360723035E+023
+  9.188597017532900E+023
+  1.410102027507966E+024
+  2.140400352020675E+024
+  3.194330475329068E+024
+  4.663757235021912E+024
+  6.630468025179595E+024
+  9.138433205815010E+024
+  1.217276445704923E+025
+  1.565801860950218E+025
+  1.946538090947978E+025
+  2.342899161706807E+025
+  2.736929076429686E+025
+  3.111739207039281E+025
+  3.453495043364191E+025
+  3.752614662655755E+025
+  4.004110957125393E+025
+  4.207225141750647E+025
+  4.364607408363882E+025
+  4.481306512473388E+025
+  4.563771316205966E+025
+  4.618987088257215E+025
+  4.653798874220233E+025
+  4.674427340118665E+025
+  4.686159024883455E+025
+  4.693185564688620E+025
+  4.698566600755381E+025
+  4.704292463092737E+025
+  4.711422476735957E+025
+  4.720273010946437E+025
+  4.730628075345838E+025
+  4.741946448248113E+025
+  4.753543961046711E+025
+  4.764736897315327E+025
+  4.774940524812244E+025
+  4.783723767805169E+025
+  4.790826432491601E+025
+  4.796149401083247E+025
+  4.799729846249314E+025
+  4.801710988633940E+025
+  4.802310871451878E+025
+  4.801792948935492E+025
+  4.800442816335992E+025
+  4.798552255582008E+025
+  4.796408199165716E+025
+  4.442728752853116E+025
+  4.443310985289999E+025
+  4.443895224537432E+025
+  4.444410091303781E+025
+  4.444760105695490E+025
+  4.444822463522669E+025
+  4.444447858513713E+025
+  4.443466191361669E+025
+  4.441697195435229E+025
+  4.438966934924499E+025
+  4.435129573206512E+025
+  4.430092175511095E+025
+  4.423839694132422E+025
+  4.416456378612393E+025
+  4.408138699358511E+025
+  4.399194253788111E+025
+  4.390021318479773E+025
+  4.381064689155132E+025
+  4.372745288659596E+025
+  4.365363830405837E+025
+  4.358982485323344E+025
+  4.353292583500880E+025
+  4.347480249443275E+025
+  4.340104872720034E+025
+  4.329006996859100E+025
+  4.311262469589594E+025
+  4.283198851592259E+025
+  4.240488703348419E+025
+  4.178332869760920E+025
+  4.091744890517528E+025
+  3.975943534181804E+025
+  3.826851329998451E+025
+  3.641679735936928E+025
+  3.419554554650632E+025
+  3.162100157696504E+025
+  2.873865281442379E+025
+  2.562451008354290E+025
+  2.238212982013148E+025
+  1.913471841365098E+025
+  1.601279181841350E+025
+  1.313927848938978E+025
+  1.061069445904552E+025
+  8.471770452356644E+024
+  6.714315055036098E+024
+  5.299716735816256E+024
+  4.177504198932660E+024
+  3.296124825297239E+024
+  2.608439021337752E+024
+  2.073959589335177E+024
+  1.659260592383591E+024
+  1.337465808454388E+024
+  1.087355829221702E+024
+  8.923893460038471E+023
+  7.397852059708201E+023
+  6.197263311559742E+023
+  5.247006742353913E+023
+  4.489717776589473E+023
+  3.881620195344489E+023
+  3.389291650842570E+023
+  2.987178234735637E+023
+  2.655698167361350E+023
+  2.379802333373416E+023
+  2.147885594372304E+023
+  1.950965592241913E+023
+  1.782064658588910E+023
+  1.635745671215882E+023
+  1.507764719924880E+023
+  1.394812839647766E+023
+  1.294326472882319E+023
+  1.204352417980492E+023
+  1.123458559686875E+023
+  1.050687560243813E+023
+  9.855580832633639E+022
+  9.281286788861063E+022
+  8.791555959124285E+022
+  8.404010327696597E+022
+  8.151876554642912E+022
+  8.093551356086246E+022
+  8.328627494936631E+022
+  9.024061907154187E+022
+  1.045580031100601E+023
+  1.307310950372614E+023
+  1.759475362537863E+023
+  2.514712095064011E+023
+  3.745275454346341E+023
+  5.707051792781823E+023
+  8.767138059498143E+023
+  1.343008086710971E+024
+  2.035243952025696E+024
+  3.032756266882398E+024
+  4.421314564782314E+024
+  6.276606033802902E+024
+  8.638040686812237E+024
+  1.148910611936529E+025
+  1.475616554322114E+025
+  1.831568508103940E+025
+  2.201004207332226E+025
+  2.566980683858654E+025
+  2.913678593377325E+025
+  3.228261033545507E+025
+  3.501974418989546E+025
+  3.730435774938808E+025
+  3.913253271534166E+025
+  4.053226245988130E+025
+  4.155373398724350E+025
+  4.225980064079202E+025
+  4.271778651928098E+025
+  4.299309790597511E+025
+  4.314467971528749E+025
+  4.322214007985687E+025
+  4.326430119878368E+025
+  4.329893724597521E+025
+  4.334347144605067E+025
+  4.340639871064649E+025
+  4.348918055742606E+025
+  4.358834467254697E+025
+  4.369753289958220E+025
+  4.380928769047590E+025
+  4.391644031557134E+025
+  4.401304479177673E+025
+  4.409487149958372E+025
+  4.415952801953830E+025
+  4.420631312071262E+025
+  4.423592445750755E+025
+  4.425011548781971E+025
+  4.425134842461607E+025
+  4.424247267422596E+025
+  4.422647099119588E+025
+  4.420628567483752E+025
+  4.418470355703759E+025
+  1.173323624991005E+025
+  1.173425148935788E+025
+  1.173574750558355E+025
+  1.173766547763756E+025
+  1.173984218651371E+025
+  1.174198453885200E+025
+  1.174365897482922E+025
+  1.174430064199820E+025
+  1.174324478700411E+025
+  1.173978462941821E+025
+  1.173325491952129E+025
+  1.172313477412256E+025
+  1.170916024441992E+025
+  1.169143308233786E+025
+  1.167050756633629E+025
+  1.164743428211076E+025
+  1.162373943054567E+025
+  1.160132075791442E+025
+  1.158224701810681E+025
+  1.156845741865711E+025
+  1.156137042800398E+025
+  1.156142619084748E+025
+  1.156760134619538E+025
+  1.157694678644199E+025
+  1.158420587294024E+025
+  1.158157207886225E+025
+  1.155864177411712E+025
+  1.150261193368946E+025
+  1.139876591766559E+025
+  1.123128305590998E+025
+  1.098439558878073E+025
+  1.064389138643206E+025
+  1.019891276997043E+025
+  9.643923746770027E+024
+  8.980612605841632E+024
+  8.219383249439174E+024
+  7.380008637423013E+024
+  6.491034499922137E+024
+  5.587687376581115E+024
+  4.708369913363512E+024
+  3.890257379450792E+024
+  3.163570148848204E+024
+  2.543707848163293E+024
+  2.030437079577677E+024
+  1.614239703263248E+024
+  1.281696317255505E+024
+  1.018680841594901E+024
+  8.120421389291386E+023
+  6.503369998887318E+023
+  5.240179847044756E+023
+  4.253381112445155E+023
+  3.481302943578982E+023
+  2.875500447523610E+023
+  2.398268253750743E+023
+  2.020442873045360E+023
+  1.719557723915868E+023
+  1.478344131611076E+023
+  1.283539882843212E+023
+  1.124956491345037E+023
+  9.947567608127171E+022
+  8.868994995946603E+022
+  7.967150764390548E+022
+  7.205823018721272E+022
+  6.556831954009820E+022
+  5.998173408190350E+022
+  5.512617393559914E+022
+  5.086654352233331E+022
+  4.709708468416992E+022
+  4.373558547374217E+022
+  4.071924633456371E+022
+  3.800194878127164E+022
+  3.555284858387991E+022
+  3.335644125478532E+022
+  3.141457248805397E+022
+  2.975136346247250E+022
+  2.842279687190913E+022
+  2.753391183179714E+022
+  2.726837530228051E+022
+  2.793785339745558E+022
+  3.006229339891574E+022
+  3.449699517716791E+022
+  4.262785167718335E+022
+  5.666118283913653E+022
+  8.003643915693308E+022
+  1.179834616366589E+023
+  1.782221455418590E+023
+  2.717483133667361E+023
+  4.135493269966481E+023
+  6.229319723932543E+023
+  9.229210119192349E+023
+  1.337927879788899E+024
+  1.888683122243705E+024
+  2.584419674254180E+024
+  3.417271072116456E+024
+  4.362375143882424E+024
+  5.380548390773505E+024
+  6.423463668011053E+024
+  7.440584326162696E+024
+  8.386083385474101E+024
+  9.224201594800357E+024
+  9.932184546299965E+024
+  1.050073084468128E+025
+  1.093247640880738E+025
+  1.123930373313243E+025
+  1.143923576755870E+025
+  1.155347483281396E+025
+  1.160390536509315E+025
+  1.161118045687236E+025
+  1.159338834800351E+025
+  1.156523902367832E+025
+  1.153769751342615E+025
+  1.151799322772343E+025
+  1.150993633230585E+025
+  1.151446654459978E+025
+  1.153034968661317E+025
+  1.155493029080783E+025
+  1.158485161882410E+025
+  1.161667043526170E+025
+  1.164731986541724E+025
+  1.167440279427925E+025
+  1.169632391072981E+025
+  1.171228770088537E+025
+  1.172220212674764E+025
+  1.172653130649148E+025
+  1.172613194000570E+025
+  1.172209287543759E+025
+  1.171559042083133E+025
+  1.170777371870707E+025
+  1.169968548091380E+025
+  1.169221363199205E+025
+  8.565672160653388E+025
+  8.566694724463093E+025
+  8.567803489929460E+025
+  8.568884584117223E+025
+  8.569770962495241E+025
+  8.570232936849037E+025
+  8.569976986190566E+025
+  8.568654912065304E+025
+  8.565883822880563E+025
+  8.561279131496185E+025
+  8.554499617036342E+025
+  8.545300288752582E+025
+  8.533587392484600E+025
+  8.519467908937553E+025
+  8.503283418351922E+025
+  8.485616783984243E+025
+  8.467260303048946E+025
+  8.449135769756042E+025
+  8.432160482720998E+025
+  8.417058854619568E+025
+  8.404126733417850E+025
+  8.392963964803981E+025
+  8.382198815675557E+025
+  8.369234282518393E+025
+  8.350050028687055E+025
+  8.319094445436629E+025
+  8.269299683084722E+025
+  8.192249600957738E+025
+  8.078527338961243E+025
+  7.918265044033577E+025
+  7.701910105288521E+025
+  7.421204523499729E+025
+  7.070340564856124E+025
+  6.647203079331710E+025
+  6.154539895681106E+025
+  5.600830445429789E+025
+  5.000577276300324E+025
+  4.373764776929030E+025
+  3.744348324802881E+025
+  3.137858245650665E+025
+  2.578482097095946E+025
+  2.085352710096641E+025
+  1.667521664334141E+025
+  1.323669606122432E+025
+  1.046476397761551E+025
+  8.262455336825595E+024
+  6.530177684711980E+024
+  5.176554850052206E+024
+  4.122909012597587E+024
+  3.304150067699727E+024
+  2.667846702787444E+024
+  2.172533691542442E+024
+  1.785836057048971E+024
+  1.482700054639020E+024
+  1.243853529558027E+024
+  1.054527887543280E+024
+  9.034291282258394E+023
+  7.819263247429791E+023
+  6.834206901437911E+023
+  6.028599678427543E+023
+  5.363673553739649E+023
+  4.809594123001566E+023
+  4.343324113956079E+023
+  3.947009686343338E+023
+  3.606764318866892E+023
+  3.311754526060497E+023
+  3.053514953003297E+023
+  2.825438649729057E+023
+  2.622402742473218E+023
+  2.440501617359410E+023
+  2.276870588855188E+023
+  2.129594603198397E+023
+  1.997711132647024E+023
+  1.881337307106119E+023
+  1.781983276184298E+023
+  1.703163746214623E+023
+  1.651497338417971E+023
+  1.638601655581680E+023
+  1.684265785795297E+023
+  1.821625681921339E+023
+  2.105387273034156E+023
+  2.624518825239510E+023
+  3.521196223572307E+023
+  5.017960606962194E+023
+  7.454699288830219E+023
+  1.133560916821992E+024
+  1.738287646062090E+024
+  2.658729712976552E+024
+  4.023540036184086E+024
+  5.987747399956466E+024
+  8.718284398935036E+024
+  1.236133816240672E+025
+  1.699088073536442E+025
+  2.257044731876369E+025
+  2.895144979381996E+025
+  3.588812243868403E+025
+  4.306923348417165E+025
+  5.016225315780491E+025
+  5.685866161078752E+025
+  6.291016715207082E+025
+  6.814980559099705E+025
+  7.249697240213509E+025
+  7.594939933086850E+025
+  7.856699151457253E+025
+  8.045243601100412E+025
+  8.173231882602016E+025
+  8.254096104378764E+025
+  8.300787678920245E+025
+  8.324890595031116E+025
+  8.336066327339060E+025
+  8.341782490011694E+025
+  8.347278022568383E+025
+  8.355719586593656E+025
+  8.368502151781715E+025
+  8.385642347306257E+025
+  8.406210069374271E+025
+  8.428746207655724E+025
+  8.451623940753418E+025
+  8.473326187474561E+025
+  8.492628443466295E+025
+  8.508690643310448E+025
+  8.521072591857864E+025
+  8.529695130914459E+025
+  8.534771941615616E+025
+  8.536731740047634E+025
+  8.536140809217493E+025
+  8.533632113717928E+025
+  8.529849522020227E+025
+  8.525409767855735E+025
+  8.520878170337267E+025
+  1.495677768630980E+026
+  1.495859895448444E+026
+  1.496057589834774E+026
+  1.496250719593305E+026
+  1.496409745491405E+026
+  1.496494131192731E+026
+  1.496452256387898E+026
+  1.496223200310817E+026
+  1.495740481226731E+026
+  1.494938125131505E+026
+  1.493758878755877E+026
+  1.492163791705886E+026
+  1.490142136850421E+026
+  1.487720280142077E+026
+  1.484967672583501E+026
+  1.481997888531851E+026
+  1.478962676833464E+026
+  1.476037322712038E+026
+  1.473396272827791E+026
+  1.471178994904538E+026
+  1.469447385641335E+026
+  1.468137550202845E+026
+  1.467010218966412E+026
+  1.465605198706538E+026
+  1.463205898100915E+026
+  1.458820072859847E+026
+  1.451182610446401E+026
+  1.438785630085521E+026
+  1.419940578958547E+026
+  1.392876265060850E+026
+  1.355875336560311E+026
+  1.307448610178198E+026
+  1.246540755774354E+026
+  1.172751514298967E+026
+  1.086544391972317E+026
+  9.894020880874215E+025
+  8.838797517204096E+025
+  7.735105269418318E+025
+  6.625388230309165E+025
+  5.554959357817519E+025
+  4.566822303668509E+025
+  3.695076507062957E+025
+  2.955982698565068E+025
+  2.347413797684030E+025
+  1.856575242063603E+025
+  1.466421071193852E+025
+  1.159402394237333E+025
+  9.193956749859322E+024
+  7.325042940677457E+024
+  5.872226331589204E+024
+  4.742766490665672E+024
+  3.863278032598420E+024
+  3.176434349105060E+024
+  2.637852002376764E+024
+  2.213375208181244E+024
+  1.876819386602034E+024
+  1.608152955845084E+024
+  1.392062374025172E+024
+  1.216835838010637E+024
+  1.073503649219430E+024
+  9.551810164240682E+023
+  8.565682389363562E+023
+  7.735720096968731E+023
+  7.030192802745554E+023
+  6.424415532598536E+023
+  5.899126630569483E+023
+  5.439272221333397E+023
+  5.033101361992528E+023
+  4.671501415862684E+023
+  4.347524244043583E+023
+  4.056073047586621E+023
+  3.793740227119206E+023
+  3.558812548096457E+023
+  3.351496986282497E+023
+  3.174477341487669E+023
+  3.034000369284895E+023
+  2.941828058141180E+023
+  2.918602412194401E+023
+  2.999477300890744E+023
+  3.243303721664224E+023
+  3.747220206393235E+023
+  4.669165792102918E+023
+  6.261470926362339E+023
+  8.918986069866746E+023
+  1.324457854903244E+024
+  2.013223871068545E+024
+  3.086194561679696E+024
+  4.718888887547430E+024
+  7.139074799968449E+024
+  1.062099027579798E+025
+  1.545955945073580E+025
+  2.191240641737176E+025
+  3.010860356072781E+025
+  3.998107076085930E+025
+  5.126386760856912E+025
+  6.351903206235575E+025
+  7.619313434456975E+025
+  8.869582573179071E+025
+  1.004802681550281E+026
+  1.111073028526033E+026
+  1.202827030602578E+026
+  1.278658840214892E+026
+  1.338554623135122E+026
+  1.383604158833246E+026
+  1.415655652378363E+026
+  1.436979973739147E+026
+  1.449983381873184E+026
+  1.456984592370974E+026
+  1.460057028284639E+026
+  1.460929872801236E+026
+  1.460939470977905E+026
+  1.461022788952327E+026
+  1.461744981480855E+026
+  1.463352793578646E+026
+  1.465844697355953E+026
+  1.469048067481046E+026
+  1.472694075601473E+026
+  1.476482657617320E+026
+  1.480132587951768E+026
+  1.483414664609459E+026
+  1.486168597265710E+026
+  1.488306158308889E+026
+  1.489804531972516E+026
+  1.490694294958117E+026
+  1.491045563328627E+026
+  1.490954112288300E+026
+  1.490528613803582E+026
+  1.489880524072991E+026
+  1.489117113740920E+026
+  1.488336967603512E+026
+  4.685686969042799E+025
+  4.686142210078250E+025
+  4.686723192152571E+025
+  4.687390814693468E+025
+  4.688070517813853E+025
+  4.688643908730237E+025
+  4.688945361446967E+025
+  4.688765135576166E+025
+  4.687859683072102E+025
+  4.685970673587956E+025
+  4.682852442579246E+025
+  4.678305593561319E+025
+  4.672213521495842E+025
+  4.664577309311064E+025
+  4.655542859679429E+025
+  4.645413122027943E+025
+  4.634638202356809E+025
+  4.623777029865090E+025
+  4.613426245528476E+025
+  4.604115242095386E+025
+  4.596170719565215E+025
+  4.589559235069611E+025
+  4.583721248167715E+025
+  4.577414252423351E+025
+  4.568585085096743E+025
+  4.554292171549414E+025
+  4.530697563734551E+025
+  4.493146837296966E+025
+  4.436352812999584E+025
+  4.354696477596735E+025
+  4.242653797913608E+025
+  4.095347301893897E+025
+  3.909202784393433E+025
+  3.682662052289011E+025
+  3.416863639587895E+025
+  3.116162374286911E+025
+  2.788331188429128E+025
+  2.444297029489908E+025
+  2.097327131073512E+025
+  1.761705201592492E+025
+  1.451095479946930E+025
+  1.176437904029607E+025
+  9.430757913547664E+024
+  7.505310415463683E+024
+  5.949208706560539E+024
+  4.709805651175685E+024
+  3.732512135430129E+024
+  2.966954217306172E+024
+  2.369575052775317E+024
+  1.904215125131456E+024
+  1.541658452399432E+024
+  1.258734957232499E+024
+  1.037306282637626E+024
+  8.633002782307975E+023
+  7.258655504822151E+023
+  6.166664729464019E+023
+  5.293134687875728E+023
+  4.589122326940467E+023
+  4.017122362964960E+023
+  3.548354572809585E+023
+  3.160685569283389E+023
+  2.837045084164519E+023
+  2.564223721615206E+023
+  2.331962894659437E+023
+  2.132267561938257E+023
+  1.958888545980560E+023
+  1.806934062464243E+023
+  1.672580189992283E+023
+  1.552858014968457E+023
+  1.445501824063407E+023
+  1.348848812160635E+023
+  1.261787321498106E+023
+  1.183758936203480E+023
+  1.114831675820519E+023
+  1.055879769755247E+023
+  1.008933986357426E+023
+  9.778107286433990E+022
+  9.691952517335219E+022
+  9.944527342426735E+022
+  1.072578230296962E+023
+  1.234875345726887E+023
+  1.532162257385117E+023
+  2.045500257979616E+023
+  2.901525278660857E+023
+  4.293244321065752E+023
+  6.506309738577421E+023
+  9.948818656447894E+023
+  1.517899056123530E+024
+  2.291907994339184E+024
+  3.403543367845089E+024
+  4.945467786212343E+024
+  6.997779986245552E+024
+  9.598991910347377E+024
+  1.272482922728423E+025
+  1.628791077800149E+025
+  2.014687040585332E+025
+  2.412484270466986E+025
+  2.803472585068331E+025
+  3.170475357509241E+025
+  3.499862779576954E+025
+  3.782691548125833E+025
+  4.014931099148657E+025
+  4.196958073866037E+025
+  4.332603466546462E+025
+  4.428031629485981E+025
+  4.490660538092457E+025
+  4.528245034502906E+025
+  4.548171036472087E+025
+  4.556961658634609E+025
+  4.559974005627329E+025
+  4.561259253746903E+025
+  4.563559152137244E+025
+  4.568412823882848E+025
+  4.576346252456859E+025
+  4.587113871035993E+025
+  4.599959712904840E+025
+  4.613867064518265E+025
+  4.627771453081414E+025
+  4.640721034849503E+025
+  4.651978580016901E+025
+  4.661067996922738E+025
+  4.667774849703054E+025
+  4.672114675823497E+025
+  4.674284275486657E+025
+  4.674608008262082E+025
+  4.673485392027698E+025
+  4.671343969158739E+025
+  4.668602441725567E+025
+  4.665645718329192E+025
+  4.662809789084400E+025
+  9.685733354496372E+017
+  9.688096089687305E+017
+  9.689605569229343E+017
+  9.689856099870785E+017
+  9.688459428773363E+017
+  9.685072216841633E+017
+  9.679427388855619E+017
+  9.671366637055132E+017
+  9.660869696306771E+017
+  9.648078839241037E+017
+  9.633314950990164E+017
+  9.617079698951455E+017
+  9.600039150148150E+017
+  9.582984731190021E+017
+  9.566767510745356E+017
+  9.552202850454733E+017
+  9.539944811000371E+017
+  9.530332838052463E+017
+  9.523216891966455E+017
+  9.517771185112282E+017
+  9.512310667555045E+017
+  9.504127669471928E+017
+  9.489367976404739E+017
+  9.462965740865272E+017
+  9.418655240587378E+017
+  9.349075357912746E+017
+  9.245980863211898E+017
+  9.100573981798861E+017
+  8.903970067759717E+017
+  8.647810285290470E+017
+  8.325027465976860E+017
+  7.930752805962961E+017
+  7.463315872395384E+017
+  6.925238017072472E+017
+  6.324056888625641E+017
+  5.672764567634210E+017
+  4.989622241332198E+017
+  4.297164203529572E+017
+  3.620345331110795E+017
+  2.984006860305843E+017
+  2.410080068020886E+017
+  1.914313192494908E+017
+  1.502105208307120E+017
+  1.168987065332812E+017
+  9.052241710555355E+016
+  6.994085268871382E+016
+  5.404538554460965E+016
+  4.185412333297471E+016
+  3.254402395991329E+016
+  2.544944540791377E+016
+  2.004503397108255E+016
+  1.592319502399181E+016
+  1.277150479832750E+016
+  1.035251925872370E+016
+  8.486827643391387E+015
+  7.039375958639457E+015
+  5.908713989306731E+015
+  5.018692213061478E+015
+  4.312131599147036E+015
+  3.746041139061058E+015
+  3.288028076230804E+015
+  2.913615781757056E+015
+  2.604246199422810E+015
+  2.345795381178489E+015
+  2.127472046173178E+015
+  1.941001545997401E+015
+  1.780022642850227E+015
+  1.639643662272192E+015
+  1.516119356659116E+015
+  1.406621639978780E+015
+  1.309087673731730E+015
+  1.222139212811106E+015
+  1.145079691101492E+015
+  1.077993077099682E+015
+  1.021995237868954E+015
+   979730622990940.     
+   956273521860168.     
+   960696388718840.     
+  1.008723623799306E+015
+  1.127115297107904E+015
+  1.360735323978102E+015
+  1.783649533980130E+015
+  2.516025611582713E+015
+  3.748936912706351E+015
+  5.779118543272213E+015
+  9.054756158818440E+015
+  1.423064790753953E+016
+  2.222537276324254E+016
+  3.426308487927132E+016
+  5.186733478558142E+016
+  7.675464160215797E+016
+  1.105558695341890E+017
+  1.543422321018549E+017
+  2.082304496006985E+017
+  2.712907791652595E+017
+  3.416004076894732E+017
+  4.164620721537259E+017
+  4.927672486866885E+017
+  5.674102282348994E+017
+  6.376565214797151E+017
+  7.013975963768154E+017
+  7.572667750198625E+017
+  8.046296627056018E+017
+  8.434856001239704E+017
+  8.743226033856986E+017
+  8.979617901967940E+017
+  9.154151923743585E+017
+  9.277687979003141E+017
+  9.360937737216049E+017
+  9.413838068324998E+017
+  9.445145891947561E+017
+  9.462213695032799E+017
+  9.470910496800928E+017
+  9.475658002594659E+017
+  9.479553623549330E+017
+  9.484552014616136E+017
+  9.491677343972219E+017
+  9.501241549294779E+017
+  9.513049323378771E+017
+  9.526576899823772E+017
+  9.541117550752660E+017
+  9.555892424788311E+017
+  9.570131576630872E+017
+  9.583134343577699E+017
+  9.594316179932951E+017
+  9.603242763518994E+017
+  9.609651924539720E+017
+  9.613468726614455E+017
+  9.614813886381985E+017
+  9.613999821957178E+017
+  5.223973423935134E+025
+  5.224656499120852E+025
+  5.225345410666248E+025
+  5.225957017176445E+025
+  5.226379527413425E+025
+  5.226468613699131E+025
+  5.226048322965201E+025
+  5.224917794485841E+025
+  5.222863836910054E+025
+  5.219680497682289E+025
+  5.215194915977994E+025
+  5.209296819492147E+025
+  5.201968289041441E+025
+  5.193309335828945E+025
+  5.183553467183452E+025
+  5.173066680144671E+025
+  5.162323547692847E+025
+  5.151855216468591E+025
+  5.142166309134016E+025
+  5.133621048183041E+025
+  5.126303253705841E+025
+  5.119859705166495E+025
+  5.113340940848291E+025
+  5.105057128005805E+025
+  5.092468628824462E+025
+  5.072131192419227E+025
+  5.039714692506930E+025
+  4.990112685659847E+025
+  4.917658276332346E+025
+  4.816459415355200E+025
+  4.680861893231858E+025
+  4.506037550985157E+025
+  4.288674935008395E+025
+  4.027717771415125E+025
+  3.725055292842435E+025
+  3.386026180202595E+025
+  3.019571647180063E+025
+  2.637886525024304E+025
+  2.255490102263936E+025
+  1.887772051742285E+025
+  1.549235729591452E+025
+  1.251277055848853E+025
+  9.991897552086351E+024
+  7.920273407928467E+024
+  6.252537712303737E+024
+  4.929310691250448E+024
+  3.889903332387433E+024
+  3.078801135658395E+024
+  2.448310948686606E+024
+  1.959048990818175E+024
+  1.579342585609025E+024
+  1.284181108324772E+024
+  1.054064743478605E+024
+  8.739240816820834E+023
+  7.321827854723943E+023
+  6.199813843974385E+023
+  5.305535682532042E+023
+  4.587351324127769E+023
+  4.005827954121148E+023
+  3.530812440915083E+023
+  3.139195836148842E+023
+  2.813216193402037E+023
+  2.539174792659773E+023
+  2.306467665613254E+023
+  2.106856566521508E+023
+  1.933921461364971E+023
+  1.782650766775280E+023
+  1.649136638907590E+023
+  1.530351336633236E+023
+  1.423987866645432E+023
+  1.328354649786245E+023
+  1.242320885659165E+023
+  1.165318016401933E+023
+  1.097415147442217E+023
+  1.039505326075880E+023
+  9.936693693016362E+022
+  9.638303207492405E+022
+  9.568823101622061E+022
+  9.845817222981024E+022
+  1.066634931646033E+023
+  1.235609330658252E+023
+  1.544522563275914E+023
+  2.078186706778737E+023
+  2.969497715298456E+023
+  4.421664113751862E+023
+  6.736515331937095E+023
+  1.034699406185324E+024
+  1.584804384225606E+024
+  2.401369434160264E+024
+  3.577898549760709E+024
+  5.215439335283092E+024
+  7.403092655897710E+024
+  1.018712054883166E+025
+  1.354779917301522E+025
+  1.739803832105273E+025
+  2.159194671062056E+025
+  2.594351304267713E+025
+  3.025290775505038E+025
+  3.433366369219731E+025
+  3.803458422689675E+025
+  4.125269975350588E+025
+  4.393662406831238E+025
+  4.608204904128586E+025
+  4.772228598983924E+025
+  4.891678805742488E+025
+  4.973990425825532E+025
+  5.027120903653967E+025
+  5.058796611605242E+025
+  5.075977024733587E+025
+  5.084515774519745E+025
+  5.088990058395778E+025
+  5.092670219325994E+025
+  5.097602633321487E+025
+  5.104778337082864E+025
+  5.114357469518601E+025
+  5.125917876231154E+025
+  5.138697560300030E+025
+  5.151806126675409E+025
+  5.164389035733482E+025
+  5.175738032591610E+025
+  5.185349412146264E+025
+  5.192938122069067E+025
+  5.198420247679970E+025
+  5.201878151506204E+025
+  5.203519586108583E+025
+  5.203636346969423E+025
+  5.202565968623058E+025
+  5.200661461925535E+025
+  5.198270567236714E+025
+  5.195722039309174E+025
+  7.592337786402423E+019
+  7.593550596978424E+019
+  7.594549466636067E+019
+  7.595154500822376E+019
+  7.595163315825181E+019
+  7.594352995205002E+019
+  7.592486944835926E+019
+  7.589326854058507E+019
+  7.584648732643051E+019
+  7.578263899366993E+019
+  7.570043593363620E+019
+  7.559943688373436E+019
+  7.548025645292021E+019
+  7.534469040059091E+019
+  7.519569749850867E+019
+  7.503717415780639E+019
+  7.487346485645430E+019
+  7.470856796363830E+019
+  7.454502297517964E+019
+  7.438250266420160E+019
+  7.421618052042437E+019
+  7.403499427354398E+019
+  7.381997216796803E+019
+  7.354282248803480E+019
+  7.316500430743900E+019
+  7.263749906224148E+019
+  7.190149363780588E+019
+  7.089017343895260E+019
+  6.953181103870263E+019
+  6.775431197908915E+019
+  6.549131450427142E+019
+  6.268978904619416E+019
+  5.931880167549736E+019
+  5.537867663501467E+019
+  5.090925631071556E+019
+  4.599543667973692E+019
+  4.076787971304163E+019
+  3.539707052691123E+019
+  3.007992949155606E+019
+  2.501997879928721E+019
+  2.040420233798819E+019
+  1.637455526492094E+019
+  1.299023144371190E+019
+  1.022812755822329E+019
+  8.019248940807077E+018
+  6.278043357474553E+018
+  4.919111726977210E+018
+  3.865474335888811E+018
+  3.051714449104012E+018
+  2.424296466044112E+018
+  1.940506275808598E+018
+  1.566858307402416E+018
+  1.277423092230956E+018
+  1.052293313123318E+018
+  8.762730229176726E+017
+  7.378046060568305E+017
+  6.281147026103823E+017
+  5.405473269201107E+017
+  4.700500709125935E+017
+  4.127819740617421E+017
+  3.658162555179094E+017
+  3.269160355075922E+017
+  2.943656944557022E+017
+  2.668443697750376E+017
+  2.433312376201408E+017
+  2.230347312592282E+017
+  2.053398048938636E+017
+  1.897688678849508E+017
+  1.759531984877340E+017
+  1.636126101300172E+017
+  1.525420062428744E+017
+  1.426043600214488E+017
+  1.337307714270802E+017
+  1.259298355359369E+017
+  1.193109713810996E+017
+  1.141301481163689E+017
+  1.108723724747271E+017
+  1.103943960349284E+017
+  1.141646159594491E+017
+  1.246563554966929E+017
+  1.459763752540467E+017
+  1.848416313415176E+017
+  2.520490714886192E+017
+  3.646030939923504E+017
+  5.486475439111325E+017
+  8.432484714781135E+017
+  1.304820055607162E+018
+  2.011485812730584E+018
+  3.065823797435263E+018
+  4.593209461074828E+018
+  6.731442423141693E+018
+  9.605933921426942E+018
+  1.328932556745642E+019
+  1.776999185051718E+019
+  2.294803650949767E+019
+  2.864401991819985E+019
+  3.462117521427271E+019
+  4.061841446999892E+019
+  4.638563304873992E+019
+  5.171322440502510E+019
+  5.645065431221993E+019
+  6.051278246295400E+019
+  6.387579078654031E+019
+  6.656626285227746E+019
+  6.864716553621531E+019
+  7.020371827012022E+019
+  7.133100951955354E+019
+  7.212419512332312E+019
+  7.267140776486520E+019
+  7.304913726143343E+019
+  7.331971329153962E+019
+  7.353051659504756E+019
+  7.371456965630451E+019
+  7.389216727679119E+019
+  7.407319708135206E+019
+  7.425979158913625E+019
+  7.444897377454334E+019
+  7.463502012726264E+019
+  7.481135952699213E+019
+  7.497192726564250E+019
+  7.511197936663539E+019
+  7.522843982308036E+019
+  7.531990761504622E+019
+  7.538647572848833E+019
+  7.542948013230349E+019
+  7.545122523231255E+019
+  7.545471327751553E+019
+  7.544343457933070E+019
+  7.542122942902714E+019
+  7.539217940430212E+019
+  6.130214677017012E+020
+  6.129087333202278E+020
+  6.129299153093063E+020
+  6.131162214046217E+020
+  6.134849304259521E+020
+  6.140332010513239E+020
+  6.147330291341986E+020
+  6.155281722490610E+020
+  6.163337493462678E+020
+  6.170392603478192E+020
+  6.175153892167764E+020
+  6.176244874621416E+020
+  6.172342385587981E+020
+  6.162335145448758E+020
+  6.145488830955243E+020
+  6.121597482983718E+020
+  6.091097983856460E+020
+  6.055123472813751E+020
+  6.015473749199127E+020
+  5.974486731523908E+020
+  5.934805091746858E+020
+  5.899045496349856E+020
+  5.869392719313416E+020
+  5.847154858450701E+020
+  5.832326535149500E+020
+  5.823212521030333E+020
+  5.816164276554343E+020
+  5.805477477651785E+020
+  5.783491732285473E+020
+  5.740925888697975E+020
+  5.667473058951958E+020
+  5.552665047247053E+020
+  5.386989973055578E+020
+  5.163203003770940E+020
+  4.877705715367781E+020
+  4.531791676509313E+020
+  4.132486736286554E+020
+  3.692690742073462E+020
+  3.230395471972475E+020
+  2.766933044654606E+020
+  2.324477919821552E+020
+  1.922499893767107E+020
+  1.572606472976601E+020
+  1.277365023638087E+020
+  1.033593736183223E+020
+  8.353570558418307E+019
+  6.758269015250049E+019
+  5.483275320503654E+019
+  4.468482706247087E+019
+  3.662361605601007E+019
+  3.022113150291386E+019
+  2.512943116598994E+019
+  2.106980751721257E+019
+  1.782129738863822E+019
+  1.520994834164963E+019
+  1.309944942301129E+019
+  1.138328191334636E+019
+  9.978317060779270E+018
+  8.819688097170377E+018
+  7.856734893108352E+018
+  7.049826246310930E+018
+  6.367886817407026E+018
+  5.786482454787416E+018
+  5.286343981157917E+018
+  4.852233258624591E+018
+  4.472075722806363E+018
+  4.136300490909448E+018
+  3.837342934344901E+018
+  3.569275922475238E+018
+  3.327545741253344E+018
+  3.108798214434724E+018
+  2.910791436897939E+018
+  2.732406001924331E+018
+  2.573784863730995E+018
+  2.436667673655159E+018
+  2.325035180642958E+018
+  2.246256995741839E+018
+  2.213051593340058E+018
+  2.246732182626982E+018
+  2.382433603733412E+018
+  2.677288642060718E+018
+  3.222812814578110E+018
+  4.162973325969051E+018
+  5.719370882356610E+018
+  8.224313846812531E+018
+  1.216078075998650E+019
+  1.820462396296921E+019
+  2.725806228579856E+019
+  4.045400462687338E+019
+  5.909842479017068E+019
+  8.450524611246506E+019
+  1.176708260526488E+020
+  1.588033728955560E+020
+  2.070271301084946E+020
+  2.604629621958119E+020
+  3.164697937456035E+020
+  3.720246925719540E+020
+  4.241786244574742E+020
+  4.704715746301748E+020
+  5.092169490167143E+020
+  5.396162082648654E+020
+  5.617159384016051E+020
+  5.762529574699864E+020
+  5.844433310753601E+020
+  5.877635331223750E+020
+  5.877558597884161E+020
+  5.858738691043432E+020
+  5.833717188600426E+020
+  5.812348171327505E+020
+  5.801468879146925E+020
+  5.804883357659349E+020
+  5.823609463007305E+020
+  5.856335815180850E+020
+  5.900025522623476E+020
+  5.950592728624531E+020
+  6.003573084216679E+020
+  6.054715169264873E+020
+  6.100437499472667E+020
+  6.138121314396141E+020
+  6.166236332598624E+020
+  6.184319092816140E+020
+  6.192838456816004E+020
+  6.192990096667881E+020
+  6.186461090678832E+020
+  6.175196735522590E+020
+  6.161188785670964E+020
+  6.146297024113734E+020
+  6.132114742857033E+020
+  6.119882575770694E+020
+  6.110448682712935E+020
+  4.310474811016802E+018
+  4.309664048552839E+018
+  4.309906734235731E+018
+  4.311443074721922E+018
+  4.314403872713379E+018
+  4.318765088138213E+018
+  4.324312756439142E+018
+  4.330624757100222E+018
+  4.337074921511977E+018
+  4.342864869675894E+018
+  4.347085818004084E+018
+  4.348808758029996E+018
+  4.347198011220033E+018
+  4.341639142933481E+018
+  4.331867851737908E+018
+  4.318082830630290E+018
+  4.301023444707963E+018
+  4.281992894929624E+018
+  4.262809969701912E+018
+  4.245678072579456E+018
+  4.232968981630342E+018
+  4.226929978687587E+018
+  4.229335051230298E+018
+  4.241111806928001E+018
+  4.261983578951218E+018
+  4.290169628866737E+018
+  4.322185236897902E+018
+  4.352778941253084E+018
+  4.375038105626228E+018
+  4.380687758715787E+018
+  4.360600805611558E+018
+  4.305527058398465E+018
+  4.207028543097850E+018
+  4.058573429619978E+018
+  3.856688222372602E+018
+  3.602003063614302E+018
+  3.299966499885144E+018
+  2.960985860532589E+018
+  2.599803151599474E+018
+  2.234062895536915E+018
+  1.882250349338945E+018
+  1.560758257859322E+018
+  1.279626269449486E+018
+  1.041498967625194E+018
+  8.442472381199745E+017
+  6.833922762693208E+017
+  5.536305398844879E+017
+  4.497030659509137E+017
+  3.668325083815750E+017
+  3.008970359907783E+017
+  2.484562644227294E+017
+  2.067020904201681E+017
+  1.733777060413091E+017
+  1.466888534177721E+017
+  1.252196123647029E+017
+  1.078581556399560E+017
+  9.373410499602406E+016
+  8.216715659966803E+016
+  7.262575230630389E+016
+  6.469427846904547E+016
+  5.804728606300036E+016
+  5.242937625251117E+016
+  4.763959364407060E+016
+  4.351937099631423E+016
+  3.994325419628693E+016
+  3.681179697798873E+016
+  3.404614938017343E+016
+  3.158397429228783E+016
+  2.937641752618491E+016
+  2.738593614043368E+016
+  2.558486722661280E+016
+  2.395470826788923E+016
+  2.248619868832954E+016
+  2.118046641435659E+016
+  2.005177111190475E+016
+  1.913279115477572E+016
+  1.848403662779080E+016
+  1.820991389915805E+016
+  1.848530896355088E+016
+  1.959835479404992E+016
+  2.201725422789113E+016
+  2.649135303255372E+016
+  3.419833433017603E+016
+  4.694886565057575E+016
+  6.745448914784874E+016
+  9.964965692176338E+016
+  1.490287014846157E+017
+  2.229068094624814E+017
+  3.304366760905818E+017
+  4.821132304566100E+017
+  6.883979334124938E+017
+  9.570403177049535E+017
+  1.289238953431153E+018
+  1.677260991630237E+018
+  2.105154981316532E+018
+  2.550791902824386E+018
+  2.989039921107486E+018
+  3.395541895898502E+018
+  3.750135163704243E+018
+  4.039175520604355E+018
+  4.256451909214338E+018
+  4.402801212162602E+018
+  4.484805458300588E+018
+  4.513034704857124E+018
+  4.500232327209656E+018
+  4.459704104759440E+018
+  4.404037029119878E+018
+  4.344176306948396E+018
+  4.288837391980400E+018
+  4.244212810387101E+018
+  4.213933586096017E+018
+  4.199247625524463E+018
+  4.199374799421194E+018
+  4.211990042178144E+018
+  4.233775815898375E+018
+  4.260979666520497E+018
+  4.289915837451527E+018
+  4.317363055193661E+018
+  4.340830872252272E+018
+  4.358689140154364E+018
+  4.370174246299786E+018
+  4.375298902953904E+018
+  4.374698941697987E+018
+  4.369450524768369E+018
+  4.360884425901799E+018
+  4.350414109806013E+018
+  4.339388345398137E+018
+  4.328977515823118E+018
+  4.320097985893969E+018
+  4.313373912292314E+018
+  2.888922731224614E+020
+  2.888343406001168E+020
+  2.888452990975840E+020
+  2.889412914372929E+020
+  2.891313715181606E+020
+  2.894144110822868E+020
+  2.897766187567199E+020
+  2.901900913480493E+020
+  2.906127594080468E+020
+  2.909900955193648E+020
+  2.912587586442522E+020
+  2.913521083038696E+020
+  2.912073131866311E+020
+  2.907735254898267E+020
+  2.900203108850238E+020
+  2.889452843633535E+020
+  2.875797493508734E+020
+  2.859911028534259E+020
+  2.842808941957814E+020
+  2.825777476576486E+020
+  2.810248871456235E+020
+  2.797626915895196E+020
+  2.789074712554738E+020
+  2.785283633970151E+020
+  2.786247747921048E+020
+  2.791070601477306E+020
+  2.797831009334398E+020
+  2.803531997149670E+020
+  2.804153388563469E+020
+  2.794824546885420E+020
+  2.770129249844576E+020
+  2.724547705738282E+020
+  2.653028016920216E+020
+  2.551657494241235E+020
+  2.418371638056482E+020
+  2.253598709891672E+020
+  2.060701879532350E+020
+  1.846068603591974E+020
+  1.618730073768455E+020
+  1.389483821897536E+020
+  1.169629260530214E+020
+  9.691636676620186E+019
+  7.941540503881233E+019
+  6.461052069238822E+019
+  5.235927056980887E+019
+  4.237647482246975E+019
+  3.432824293317391E+019
+  2.788526461600639E+019
+  2.274936512547869E+019
+  1.866386135039840E+019
+  1.541485978768234E+019
+  1.282799503624415E+019
+  1.076326850571342E+019
+  9.109457884290009E+018
+  7.778842714259084E+018
+  6.702570752634388E+018
+  5.826757847031738E+018
+  5.109295095411909E+018
+  4.517283771687161E+018
+  4.025001601639911E+018
+  3.612305635301934E+018
+  3.263386866892438E+018
+  2.965804398064318E+018
+  2.709739651170363E+018
+  2.487422735687784E+018
+  2.292693099724568E+018
+  2.120664972260740E+018
+  1.967474956991329E+018
+  1.830094788049366E+018
+  1.706197169510703E+018
+  1.594067417249503E+018
+  1.492559125397765E+018
+  1.401099419363030E+018
+  1.319760151505514E+018
+  1.249427997938720E+018
+  1.192132170048163E+018
+  1.151627849237657E+018
+  1.134391960076378E+018
+  1.151271140468883E+018
+  1.220133374945912E+018
+  1.370011817032449E+018
+  1.647373908984521E+018
+  2.125253925868427E+018
+  2.915955595216952E+018
+  4.187691406788309E+018
+  6.184607733523780E+018
+  9.247785920552432E+018
+  1.383161200414902E+019
+  2.050511577882969E+019
+  2.992171707750087E+019
+  4.273452233145831E+019
+  5.943087449185413E+019
+  8.009471783890985E+019
+  1.042590221102093E+020
+  1.309496226423809E+020
+  1.588108541653321E+020
+  1.863010003190613E+020
+  2.119248937437606E+020
+  2.344444056796033E+020
+  2.530213152054101E+020
+  2.672732595742129E+020
+  2.772495566602825E+020
+  2.833505155645271E+020
+  2.862188374341005E+020
+  2.866276070036846E+020
+  2.853810372934173E+020
+  2.832357818134967E+020
+  2.808446110621346E+020
+  2.787210392122673E+020
+  2.772223912570059E+020
+  2.765487530430382E+020
+  2.767553587834679E+020
+  2.777757816883136E+020
+  2.794527738852111E+020
+  2.815730154943847E+020
+  2.839017387987916E+020
+  2.862134585375545E+020
+  2.883159136800474E+020
+  2.900656229033705E+020
+  2.913748444948494E+020
+  2.922109004593044E+020
+  2.925896134043762E+020
+  2.925649903470305E+020
+  2.922172595575213E+020
+  2.916409184357856E+020
+  2.909338077152621E+020
+  2.901878506588022E+020
+  2.894820099084187E+020
+  2.888777084445344E+020
+  2.884166423905312E+020
+  5.671181210423913E+020
+  5.671624735086680E+020
+  5.672319086836358E+020
+  5.673243551624977E+020
+  5.674325592878650E+020
+  5.675427269328376E+020
+  5.676338754323934E+020
+  5.676781400039860E+020
+  5.676421676408179E+020
+  5.674898200554329E+020
+  5.671861609870349E+020
+  5.667024332032859E+020
+  5.660215778924275E+020
+  5.651436519509518E+020
+  5.640902701149711E+020
+  5.629070486985457E+020
+  5.616630034707608E+020
+  5.604459657407151E+020
+  5.593533510987585E+020
+  5.584780677154837E+020
+  5.578899711893501E+020
+  5.576139927919737E+020
+  5.576067789822611E+020
+  5.577342618235354E+020
+  5.577529354334099E+020
+  5.572977026587617E+020
+  5.558790137024766E+020
+  5.528917393729051E+020
+  5.476379005813296E+020
+  5.393650108534719E+020
+  5.273211923934204E+020
+  5.108270099418312E+020
+  4.893616526027712E+020
+  4.626573504733071E+020
+  4.307908604236256E+020
+  3.942554044148150E+020
+  3.539925888610224E+020
+  3.113645092238733E+020
+  2.680541612684026E+020
+  2.258980205712258E+020
+  1.866753193132897E+020
+  1.518334996290146E+020
+  1.221106193022095E+020
+  9.749580661845887E+019
+  7.753329426630597E+019
+  6.158033613767644E+019
+  4.896025535078367E+019
+  3.904301328330904E+019
+  3.128033616663720E+019
+  2.521472774239062E+019
+  2.047491712493844E+019
+  1.676530506331890E+019
+  1.385364786713815E+019
+  1.155915357233598E+019
+  9.741959240834599E+018
+  8.294295735840295E+018
+  7.133308328605346E+018
+  6.195349511621921E+018
+  5.431510381453728E+018
+  4.804158952578826E+018
+  4.284278933488665E+018
+  3.849435181966053E+018
+  3.482224560928617E+018
+  3.169099981756613E+018
+  2.899480023940020E+018
+  2.665076653019117E+018
+  2.459389663061719E+018
+  2.277329198253362E+018
+  2.114937849757223E+018
+  1.969192286239423E+018
+  1.837872209128164E+018
+  1.719492910177735E+018
+  1.613308548637346E+018
+  1.519408867398680E+018
+  1.438955954799138E+018
+  1.374644933071515E+018
+  1.331530198568753E+018
+  1.318446201601992E+018
+  1.350379219552927E+018
+  1.452323475614363E+018
+  1.665383538082085E+018
+  2.056148401317865E+018
+  2.730603759246494E+018
+  3.853936250700281E+018
+  5.677264994312762E+018
+  8.571189156938650E+018
+  1.306344506365495E+019
+  1.987315525811988E+019
+  2.992643308068817E+019
+  4.432736771091442E+019
+  6.424602089640949E+019
+  9.067523104399668E+019
+  1.240557480216492E+020
+  1.640080624859775E+020
+  2.093382477373290E+020
+  2.581670528483638E+020
+  3.081788075904088E+020
+  3.569541519865869E+020
+  4.023015666695068E+020
+  4.425136323384975E+020
+  4.765069614235249E+020
+  5.038427415038871E+020
+  5.246532290666954E+020
+  5.395121096741635E+020
+  5.492851778621983E+020
+  5.549881956916827E+020
+  5.576671873339125E+020
+  5.583068945514634E+020
+  5.577671876036880E+020
+  5.567445431662161E+020
+  5.557550442735159E+020
+  5.551354759247145E+020
+  5.550591556937100E+020
+  5.555628602765902E+020
+  5.565807274546360E+020
+  5.579806874592628E+020
+  5.595991466848763E+020
+  5.612704402659342E+020
+  5.628488409285506E+020
+  5.642223235206164E+020
+  5.653185177949576E+020
+  5.661041991669324E+020
+  5.665802605934677E+020
+  5.667742783822667E+020
+  5.667323623115292E+020
+  5.665112230104064E+020
+  5.661710548858529E+020
+  5.657699272559789E+020
+  5.653599434269486E+020
+  5.649849440681215E+020
+  1.465415332218496E+020
+  1.465569529619047E+020
+  1.465757354675015E+020
+  1.465964396964391E+020
+  1.466165428118934E+020
+  1.466322120884197E+020
+  1.466382396770005E+020
+  1.466281864018954E+020
+  1.465947528653836E+020
+  1.465304222164644E+020
+  1.464283604125319E+020
+  1.462834970686211E+020
+  1.460936791515822E+020
+  1.458607483633675E+020
+  1.455913437432705E+020
+  1.452972011238279E+020
+  1.449947214856987E+020
+  1.447036118654951E+020
+  1.444444695958442E+020
+  1.442352880553107E+020
+  1.440870057593582E+020
+  1.439983842044765E+020
+  1.439506582405822E+020
+  1.439025290411951E+020
+  1.437861435144903E+020
+  1.435047184067780E+020
+  1.429324325039544E+020
+  1.419171487424782E+020
+  1.402864595236372E+020
+  1.378574672706290E+020
+  1.344505666146249E+020
+  1.299071859242473E+020
+  1.241108590014591E+020
+  1.170100600802499E+020
+  1.086399905189077E+020
+  9.913919288752952E+019
+  8.875598768935521E+019
+  7.783999691956349E+019
+  6.681607686274809E+019
+  5.614192520218603E+019
+  4.625569325243952E+019
+  3.750864067396114E+019
+  3.007333376649605E+019
+  2.393630197774908E+019
+  1.897504466204217E+019
+  1.502258165789644E+019
+  1.190541764729592E+019
+  9.463267120183216E+018
+  7.557427287912703E+018
+  6.072685260764619E+018
+  4.915910778250885E+018
+  4.013220120311909E+018
+  3.306758562457828E+018
+  2.751631347756341E+018
+  2.313213170390478E+018
+  1.964902853424801E+018
+  1.686307779973979E+018
+  1.461806703587679E+018
+  1.279428696177018E+018
+  1.129987713410966E+018
+  1.006419428773466E+018
+  9.032757753955137E+017
+  8.163411845015752E+017
+  7.423420595644928E+017
+  6.787273598860494E+017
+  6.235033155530156E+017
+  5.751093905528549E+017
+  5.323258317356965E+017
+  4.942056954971695E+017
+  4.600263628194362E+017
+  4.292574990456049E+017
+  4.015445044322797E+017
+  3.767091522392153E+017
+  3.547729130251429E+017
+  3.360142806633004E+017
+  3.210805021172065E+017
+  3.111882207154677E+017
+  3.084689536852231E+017
+  3.165466940389955E+017
+  3.414787020806648E+017
+  3.932475574608235E+017
+  4.880590774342495E+017
+  6.517632947970804E+017
+  9.247426823709724E+017
+  1.368541741987383E+018
+  2.074240657634339E+018
+  3.171947797872112E+018
+  4.839606303438155E+018
+  7.307396359618067E+018
+  1.085132059832325E+019
+  1.576639836276664E+019
+  2.230728492899647E+019
+  3.059563951929695E+019
+  4.055248262183537E+019
+  5.189718890078024E+019
+  6.417667426207886E+019
+  7.682452463459636E+019
+  8.924178815897443E+019
+  1.008787632727384E+020
+  1.112994088917401E+020
+  1.202178353715470E+020
+  1.275055946718730E+020
+  1.331755702891956E+020
+  1.373515534253713E+020
+  1.402324236951500E+020
+  1.420576218871944E+020
+  1.430777990459564E+020
+  1.435321704961285E+020
+  1.436326034848528E+020
+  1.435537638292797E+020
+  1.434284575713001E+020
+  1.433473262719937E+020
+  1.433620821479797E+020
+  1.434914213128996E+020
+  1.437286543883135E+020
+  1.440500238205663E+020
+  1.444227157093081E+020
+  1.448117535011508E+020
+  1.451852494070320E+020
+  1.455178100186796E+020
+  1.457921728810707E+020
+  1.459993623739438E+020
+  1.461377966924249E+020
+  1.462118254124930E+020
+  1.462300808049397E+020
+  1.462038459324006E+020
+  1.461455691961852E+020
+  1.460676882050010E+020
+  1.459818199335668E+020
+  1.458982544591452E+020
+  3.754366944137628E+020
+  3.754116452132544E+020
+  3.754431994847204E+020
+  3.755419605201968E+020
+  3.757118745068348E+020
+  3.759476803483282E+020
+  3.762330458879932E+020
+  3.765397660505335E+020
+  3.768283191243748E+020
+  3.770501025293289E+020
+  3.771514498161077E+020
+  3.770792715746556E+020
+  3.767879609041051E+020
+  3.762469587379183E+020
+  3.754481022288882E+020
+  3.744116646436068E+020
+  3.731898854935087E+020
+  3.718668112725621E+020
+  3.705534564882524E+020
+  3.693776847127929E+020
+  3.684687979872126E+020
+  3.679375552047095E+020
+  3.678531131879730E+020
+  3.682190691857279E+020
+  3.689512597124875E+020
+  3.698601643303421E+020
+  3.706406767335503E+020
+  3.708717185876360E+020
+  3.700277967090694E+020
+  3.675042046274855E+020
+  3.626570677932379E+020
+  3.548585639334580E+020
+  3.435660192025249E+020
+  3.284008225638889E+020
+  3.092291395192369E+020
+  2.862317732090204E+020
+  2.599466660843113E+020
+  2.312668211099772E+020
+  2.013813078905875E+020
+  1.716585441692851E+020
+  1.434875287719986E+020
+  1.180596097179590E+020
+  9.605784690319439E+019
+  7.759743802619760E+019
+  6.243913584410232E+019
+  5.017931954399579E+019
+  4.036665855771999E+019
+  3.256651134655350E+019
+  2.639160679607935E+019
+  2.151269004062160E+019
+  1.765825502401519E+019
+  1.460901618665947E+019
+  1.219039654007280E+019
+  1.026479670533428E+019
+  8.724501721053352E+018
+  7.485566092329026E+018
+  6.482740539426995E+018
+  5.665367879795200E+018
+  4.994119675323438E+018
+  4.438432652209635E+018
+  3.974512346622830E+018
+  3.583788448131198E+018
+  3.251725421225851E+018
+  2.966910167713937E+018
+  2.720354533740747E+018
+  2.504964009078108E+018
+  2.315135071027067E+018
+  2.146452584227842E+018
+  1.995465949119463E+018
+  1.859528916769710E+018
+  1.736693936431904E+018
+  1.625658574021949E+018
+  1.525770289036451E+018
+  1.437108617832514E+018
+  1.360683400777575E+018
+  1.298818143138512E+018
+  1.255834398526306E+018
+  1.239223051792172E+018
+  1.261588915861831E+018
+  1.343791664645285E+018
+  1.519877302124634E+018
+  1.844581645469650E+018
+  2.404338212070362E+018
+  3.332725314943267E+018
+  4.830936449059742E+018
+  7.192825725297567E+018
+  1.083190688648819E+019
+  1.630384239115185E+019
+  2.431204934972936E+019
+  3.567620814718208E+019
+  5.123503160892183E+019
+  7.164915195861054E+019
+  9.711044237721487E+019
+  1.271507787339854E+020
+  1.606764075695011E+020
+  1.961008257344743E+020
+  2.315662251797625E+020
+  2.652182010687150E+020
+  2.954637222760861E+020
+  3.211558999668224E+020
+  3.416786353327893E+020
+  3.569352201547944E+020
+  3.672661511579198E+020
+  3.733289765640846E+020
+  3.759695021702571E+020
+  3.761045544037679E+020
+  3.746267466398461E+020
+  3.723343139711529E+020
+  3.698848966992010E+020
+  3.677705413032871E+020
+  3.663109786288388E+020
+  3.656623835139823E+020
+  3.658387151092723E+020
+  3.667422667742195E+020
+  3.681994562485987E+020
+  3.699975401113209E+020
+  3.719181489855256E+020
+  3.737643967200357E+020
+  3.753796423572302E+020
+  3.766574351549231E+020
+  3.775434216093721E+020
+  3.780308720980992E+020
+  3.781519666444218E+020
+  3.779670242826242E+020
+  3.775534157074743E+020
+  3.769952071369956E+020
+  3.763742054458680E+020
+  3.757630336055514E+020
+  3.752205110595364E+020
+  3.747892356332856E+020
+  3.228966029036397E+026
+  3.229046839694367E+026
+  3.229435070583114E+026
+  3.230163205808818E+026
+  3.231220102003549E+026
+  3.232537532284353E+026
+  3.233982277287930E+026
+  3.235356083372062E+026
+  3.236405060310565E+026
+  3.236840361695558E+026
+  3.236370252730407E+026
+  3.234741676409121E+026
+  3.231788026214490E+026
+  3.227478150978861E+026
+  3.221959775536633E+026
+  3.215589211480885E+026
+  3.208938818926564E+026
+  3.202774317228927E+026
+  3.197995946808402E+026
+  3.195540836303187E+026
+  3.196248628148456E+026
+  3.200697962872114E+026
+  3.209026991246380E+026
+  3.220755717383042E+026
+  3.234630859190195E+026
+  3.248514649208228E+026
+  3.259337789153421E+026
+  3.263134347189980E+026
+  3.255173608480211E+026
+  3.230201059812944E+026
+  3.182796857181750E+026
+  3.107852832939479E+026
+  3.001154975181502E+026
+  2.860034575775529E+026
+  2.684017844641039E+026
+  2.475365920384626E+026
+  2.239367613382761E+026
+  1.984245696922813E+026
+  1.720583721242487E+026
+  1.460280819154640E+026
+  1.215180378962812E+026
+  9.952332858946094E+025
+  8.059286536917356E+025
+  6.478878205319811E+025
+  5.187460730991667E+025
+  4.147975435343380E+025
+  3.319933319591051E+025
+  2.664837265288707E+025
+  2.148691314388398E+025
+  1.742798556603793E+025
+  1.423641636741708E+025
+  1.172333299159545E+025
+  9.739163581956017E+024
+  8.166610923028528E+024
+  6.914299268403241E+024
+  5.911353416407089E+024
+  5.102937690151567E+024
+  4.446671946819885E+024
+  3.909799280230058E+024
+  3.466973587770405E+024
+  3.098545717349413E+024
+  2.789243943234535E+024
+  2.527162666143804E+024
+  2.302990063955180E+024
+  2.109420020976683E+024
+  1.940705837225511E+024
+  1.792323100633827E+024
+  1.660717010798803E+024
+  1.543115815777860E+024
+  1.437397415492055E+024
+  1.342001266295336E+024
+  1.255883332805364E+024
+  1.178519104803425E+024
+  1.109970237191838E+024
+  1.051046527377762E+024
+  1.003620094865357E+024
+  9.711874071523720E+023
+  9.598330765991056E+023
+  9.798336336894222E+023
+  1.048255048673832E+024
+  1.193044526316472E+024
+  1.459281368879668E+024
+  1.918391993566044E+024
+  2.681159233569872E+024
+  3.915095918030316E+024
+  5.865929602674376E+024
+  8.881162485560496E+024
+  1.343045736298834E+025
+  2.011257147911146E+025
+  2.963175499359157E+025
+  4.271899392358981E+025
+  5.996811111149050E+025
+  8.158975129160453E+025
+  1.072434028060906E+026
+  1.360554466143671E+026
+  1.667198362986574E+026
+  1.976756878533884E+026
+  2.273345215699928E+026
+  2.542992824707050E+026
+  2.775268319500007E+026
+  2.964091793850638E+026
+  3.107744510467171E+026
+  3.208268983813149E+026
+  3.270524936588624E+026
+  3.301145805622467E+026
+  3.307569238087322E+026
+  3.297235026904582E+026
+  3.276981303521456E+026
+  3.252632955617926E+026
+  3.228761167760208E+026
+  3.208590521579010E+026
+  3.194031519348496E+026
+  3.185816332931244E+026
+  3.183712553560805E+026
+  3.186785241631646E+026
+  3.193674532697306E+026
+  3.202856982642595E+026
+  3.212864641824452E+026
+  3.222445408737231E+026
+  3.230659020393185E+026
+  3.236912603377996E+026
+  3.240946739925485E+026
+  3.242787217423870E+026
+  3.242678527121910E+026
+  3.241012109662613E+026
+  3.238257168927379E+026
+  3.234899188116828E+026
+  3.231391222343914E+026
+  3.228120180143687E+026
+  3.225387258759644E+026
+  3.252794314378150E+026
+  3.252438063963479E+026
+  3.252689445280449E+026
+  3.253673277393990E+026
+  3.255447005113307E+026
+  3.257974081704795E+026
+  3.261104043546237E+026
+  3.264563147573220E+026
+  3.267958726852779E+026
+  3.270800518339261E+026
+  3.272540128849064E+026
+  3.272627315399186E+026
+  3.270579700160272E+026
+  3.266060068784062E+026
+  3.258952691122903E+026
+  3.249427920944308E+026
+  3.237983135027977E+026
+  3.225448147845699E+026
+  3.212944962163942E+026
+  3.201795422572948E+026
+  3.193376021862656E+026
+  3.188926252522671E+026
+  3.189324503567802E+026
+  3.194852308192792E+026
+  3.204972537957593E+026
+  3.218149145223441E+026
+  3.231735255664879E+026
+  3.241953561668071E+026
+  3.243989206365227E+026
+  3.232211419834854E+026
+  3.200535522749028E+026
+  3.142929205766496E+026
+  3.054052497240689E+026
+  2.929995929323991E+026
+  2.769044990604289E+026
+  2.572355456683405E+026
+  2.344386681096880E+026
+  2.092930299521182E+026
+  1.828613516841773E+026
+  1.563860182912152E+026
+  1.311445204112186E+026
+  1.082479346409922E+026
+  8.835167223963181E+025
+  7.159358251907847E+025
+  5.778393581937083E+025
+  4.657718486220332E+025
+  3.757845719611691E+025
+  3.040313093376136E+025
+  2.470587547822973E+025
+  2.019136729931396E+025
+  1.661489092382415E+025
+  1.377795564590726E+025
+  1.152193221264873E+025
+  9.721348897243546E+024
+  8.277660532013198E+024
+  7.113829608438273E+024
+  6.169800460201602E+024
+  5.398818001262679E+024
+  4.764486879423518E+024
+  4.238451657633515E+024
+  3.798583522353997E+024
+  3.427572480542739E+024
+  3.111839964861332E+024
+  2.840702328034642E+024
+  2.605729646265724E+024
+  2.400256148780510E+024
+  2.219008424475851E+024
+  2.057825541225125E+024
+  1.913451741721411E+024
+  1.783388000892910E+024
+  1.665794151034293E+024
+  1.559439419195633E+024
+  1.463707326866140E+024
+  1.378672761908228E+024
+  1.305287249998303E+024
+  1.245736742593850E+024
+  1.204079624327319E+024
+  1.187337333928652E+024
+  1.207302544352833E+024
+  1.283454892776343E+024
+  1.447529605569406E+024
+  1.750451738740849E+024
+  2.272478040594259E+024
+  3.137374306712073E+024
+  4.531108607695763E+024
+  6.724558567520682E+024
+  1.009769838279174E+025
+  1.515918134793832E+025
+  2.254983538419341E+025
+  3.301152400510719E+025
+  4.729539802145520E+025
+  6.597905963851064E+025
+  8.920011101394127E+025
+  1.164850001764056E+026
+  1.467879160297509E+026
+  1.786207690015199E+026
+  2.102633363894199E+026
+  2.400193618223730E+026
+  2.664534112496387E+026
+  2.885569421122685E+026
+  3.058201078978148E+026
+  3.182146191696446E+026
+  3.261122073704260E+026
+  3.301696275941363E+026
+  3.312073528746745E+026
+  3.301003207132738E+026
+  3.276899621435637E+026
+  3.247199781779019E+026
+  3.217945967350996E+026
+  3.193566874696058E+026
+  3.176830017454156E+026
+  3.168939571222272E+026
+  3.169752551830853E+026
+  3.178081277773598E+026
+  3.192043988615095E+026
+  3.209422005407350E+026
+  3.227983876437785E+026
+  3.245745317298176E+026
+  3.261146686983733E+026
+  3.273143901350273E+026
+  3.281220853323344E+026
+  3.285339893304531E+026
+  3.285851425970406E+026
+  3.283383927412650E+026
+  3.278731369628138E+026
+  3.272748462392327E+026
+  3.266260362690402E+026
+  3.259992850175362E+026
+  3.254525699757796E+026
+  3.250268527293188E+026
+  4.682573611734554E+022
+  4.683302834467074E+022
+  4.683918245660960E+022
+  4.684313735388824E+022
+  4.684367713575241E+022
+  4.683943672596166E+022
+  4.682893946064052E+022
+  4.681066893072876E+022
+  4.678316968007508E+022
+  4.674518283790304E+022
+  4.669580873454929E+022
+  4.663467454128436E+022
+  4.656208225524361E+022
+  4.647910676407658E+022
+  4.638760535859915E+022
+  4.629009668694202E+022
+  4.618947106980353E+022
+  4.608850431801322E+022
+  4.598916390619946E+022
+  4.589172037326609E+022
+  4.579370707596029E+022
+  4.568880418964146E+022
+  4.556575289022372E+022
+  4.540742803235103E+022
+  4.519020939677171E+022
+  4.488379283548631E+022
+  4.445157667477211E+022
+  4.385175021843691E+022
+  4.303920214089653E+022
+  4.196835086283181E+022
+  4.059695852017324E+022
+  3.889089657874208E+022
+  3.682965633436727E+022
+  3.441213010019754E+022
+  3.166185258125705E+022
+  2.863056331697654E+022
+  2.539877186120117E+022
+  2.207216559020955E+022
+  1.877334430482199E+022
+  1.562948182884562E+022
+  1.275785788487928E+022
+  1.024797450734259E+022
+  8.137806808897571E+021
+  6.413883861993369E+021
+  5.033914385615793E+021
+  3.945079881552646E+021
+  3.094485661754955E+021
+  2.434354307480984E+021
+  1.924022562226384E+021
+  1.530169981580078E+021
+  1.226181270901899E+021
+  9.911696447047865E+020
+  8.089454415559961E+020
+  6.670671902178076E+020
+  5.560290315660881E+020
+  4.685944518058773E+020
+  3.992652629789306E+020
+  3.438664832054684E+020
+  2.992261654301539E+020
+  2.629307970784967E+020
+  2.331396955899480E+020
+  2.084448486404765E+020
+  1.877654325079015E+020
+  1.702686208034499E+020
+  1.553102437841192E+020
+  1.423904111695061E+020
+  1.311204266253716E+020
+  1.211982646841300E+020
+  1.123906180443695E+020
+  1.045201242603495E+020
+  9.745692016161849E+019
+  9.111423651537889E+019
+  8.544844618935724E+019
+  8.046497345383078E+019
+  7.623299055645100E+019
+  7.291420836217325E+019
+  7.081479045319280E+019
+  7.047512614333945E+019
+  7.282066632188777E+019
+  7.940904415712351E+019
+  9.282472027382645E+019
+  1.172917756780680E+020
+  1.595951083157554E+020
+  2.304122437035418E+020
+  3.461461302935944E+020
+  5.312852839583853E+020
+  8.211576371623153E+020
+  1.264630513381562E+021
+  1.925781753250940E+021
+  2.882797421990943E+021
+  4.221403982792937E+021
+  6.019276109720050E+021
+  8.320760817267983E+021
+  1.111727663811961E+022
+  1.434501042226018E+022
+  1.789060767149405E+022
+  2.160528139878347E+022
+  2.532559851566163E+022
+  2.889559888830711E+022
+  3.218518894366759E+022
+  3.510161705194409E+022
+  3.759325213043184E+022
+  3.964686729235527E+022
+  4.128067080158251E+022
+  4.253544017751357E+022
+  4.346562417600959E+022
+  4.413156726370595E+022
+  4.459336947254885E+022
+  4.490645593338163E+022
+  4.511870265010834E+022
+  4.526888752616568E+022
+  4.538623305523155E+022
+  4.549082198920338E+022
+  4.559467144078814E+022
+  4.570324249468960E+022
+  4.581715584054580E+022
+  4.593389641091239E+022
+  4.604932977134116E+022
+  4.615891381715970E+022
+  4.625855474086169E+022
+  4.634511197906661E+022
+  4.641660047718170E+022
+  4.647217309685242E+022
+  4.651198172286994E+022
+  4.653699376949908E+022
+  4.654879555852950E+022
+  4.654940134456756E+022
+  4.654110446855770E+022
+  4.652637838093036E+022
+  4.650780189068440E+022
+  1.284916491786953E+021
+  1.285119844804079E+021
+  1.285286778024176E+021
+  1.285386975282189E+021
+  1.285386358393510E+021
+  1.285247381665372E+021
+  1.284930130113852E+021
+  1.284394252884284E+021
+  1.283601558366374E+021
+  1.282519424273641E+021
+  1.281124806938651E+021
+  1.279408268920608E+021
+  1.277377391119700E+021
+  1.275058804450807E+021
+  1.272497866104491E+021
+  1.269754926461899E+021
+  1.266897244661938E+021
+  1.263985882424504E+021
+  1.261057339509236E+021
+  1.258100311689867E+021
+  1.255028726715264E+021
+  1.251653049760803E+021
+  1.247652613631127E+021
+  1.242552296709327E+021
+  1.235707171792122E+021
+  1.226298789219492E+021
+  1.213346624585886E+021
+  1.195738031888900E+021
+  1.172279837277820E+021
+  1.141774306776731E+021
+  1.103121125028241E+021
+  1.055444471982516E+021
+  9.982395412696454E+020
+  9.315256357842485E+020
+  8.559839814486489E+020
+  7.730497072951588E+020
+  6.849228596416099E+020
+  5.944678544275508E+020
+  5.049883099603801E+020
+  4.198942176370611E+020
+  3.423142214378922E+020
+  2.746187155796223E+020
+  2.177885495531276E+020
+  1.714248164865820E+020
+  1.343607501483641E+020
+  1.051540674734497E+020
+  8.236707935403962E+019
+  6.470496816974338E+019
+  5.106811619508752E+019
+  4.055708981717527E+019
+  3.245458530233858E+019
+  2.619850022798858E+019
+  2.135373170868523E+019
+  1.758634426761213E+019
+  1.464151548394277E+019
+  1.232549380010641E+019
+  1.049124579308545E+019
+  9.027254464350289E+018
+  7.848892479469683E+018
+  6.891840684563184E+018
+  6.107100504613945E+018
+  5.457232172581363E+018
+  4.913527003559448E+018
+  4.453886816186505E+018
+  4.061236581271603E+018
+  3.722338502185302E+018
+  3.426908632955599E+018
+  3.166962614222789E+018
+  2.936336993630179E+018
+  2.730348776246002E+018
+  2.545570324839399E+018
+  2.379711819662813E+018
+  2.231622179112257E+018
+  2.101445830389952E+018
+  1.991013159709279E+018
+  1.904605906234190E+018
+  1.850338053018134E+018
+  1.842545163964458E+018
+  1.905801677634971E+018
+  2.081507907690016E+018
+  2.438419261471352E+018
+  3.089013844204730E+018
+  4.214129668515212E+018
+  6.098639350759562E+018
+  9.180639158013832E+018
+  1.411495102028689E+019
+  2.184749127327144E+019
+  3.368868034961700E+019
+  5.135992371888015E+019
+  7.696645752041025E+019
+  1.128241648557273E+020
+  1.610441863969015E+020
+  2.228559492209817E+020
+  2.980781691283185E+020
+  3.850500665599980E+020
+  4.807756921455365E+020
+  5.812944695868731E+020
+  6.822331792302726E+020
+  7.793973085936068E+020
+  8.692662000166360E+020
+  9.493054246440504E+020
+  1.018074056198067E+021
+  1.075157702602515E+021
+  1.120986508073972E+021
+  1.156600936161240E+021
+  1.183415409158589E+021
+  1.203011061526498E+021
+  1.216971685765493E+021
+  1.226765096479685E+021
+  1.233665902466594E+021
+  1.238713494000768E+021
+  1.242698937776640E+021
+  1.246174887989435E+021
+  1.249482793088380E+021
+  1.252791527678359E+021
+  1.256141464136725E+021
+  1.259488360273617E+021
+  1.262742491914538E+021
+  1.265800039433056E+021
+  1.268565417700578E+021
+  1.270964657116275E+021
+  1.272951055322195E+021
+  1.274505217972383E+021
+  1.275632028707922E+021
+  1.276356508375652E+021
+  1.276719317183117E+021
+  1.276772337393191E+021
+  1.276575281246864E+021
+  1.276193496395671E+021
+  1.275696241270902E+021
+  1.614143446086540E+020
+  1.614400823970186E+020
+  1.614608413006581E+020
+  1.614727254054806E+020
+  1.614714052798588E+020
+  1.614521647989747E+020
+  1.614100425037767E+020
+  1.613400689600744E+020
+  1.612375763468046E+020
+  1.610985985979378E+020
+  1.609203354683394E+020
+  1.607016096429434E+020
+  1.604432411827727E+020
+  1.601482489810279E+020
+  1.598217641136884E+020
+  1.594705310921095E+020
+  1.591018872896260E+020
+  1.587221440050608E+020
+  1.583343448266138E+020
+  1.579354508358329E+020
+  1.575130946542224E+020
+  1.570421449673222E+020
+  1.564814140455599E+020
+  1.557709083542562E+020
+  1.548300584185606E+020
+  1.535573699716213E+020
+  1.518319245691765E+020
+  1.495171379973055E+020
+  1.464671626385177E+020
+  1.425362718887252E+020
+  1.375914281489614E+020
+  1.315279170558528E+020
+  1.242873395979378E+020
+  1.158763598610394E+020
+  1.063834967694648E+020
+  9.599018437176035E+019
+  8.497177866366756E+019
+  7.368477464140781E+019
+  6.253868660813727E+019
+  5.195476076122564E+019
+  4.231809653425693E+019
+  3.391895370256363E+019
+  2.687522815659151E+019
+  2.113432126419655E+019
+  1.654919731651842E+019
+  1.293937400609003E+019
+  1.012551951530390E+019
+  7.946450660537478E+018
+  6.265491239422861E+018
+  4.970987136685955E+018
+  3.973991819587135E+018
+  3.204874306170758E+018
+  2.609786925476348E+018
+  2.147439779652205E+018
+  1.786352605507772E+018
+  1.502610134257836E+018
+  1.278078797788975E+018
+  1.099016533854146E+018
+  9.550032662827512E+017
+  8.381257368530994E+017
+  7.423603109002792E+017
+  6.631078739052538E+017
+  5.968444986294300E+017
+  5.408596757021944E+017
+  4.930605109832525E+017
+  4.518255403312641E+017
+  4.158959049815847E+017
+  3.842947954766435E+017
+  3.562685395506775E+017
+  3.312447137453169E+017
+  3.088044480332577E+017
+  2.886679539772163E+017
+  2.706946081322980E+017
+  2.549021802771218E+017
+  2.415147693706828E+017
+  2.310568141402935E+017
+  2.245227685844555E+017
+  2.236708115517671E+017
+  2.315169109530936E+017
+  2.531453795740866E+017
+  2.970053955269764E+017
+  3.769280015591614E+017
+  5.151649530796184E+017
+  7.467937718654381E+017
+  1.125799683863249E+018
+  1.732941030932682E+018
+  2.684984186610833E+018
+  4.143861935493410E+018
+  6.322561453846274E+018
+  9.481977073852850E+018
+  1.390976484347232E+019
+  1.986925032517949E+019
+  2.751584899823129E+019
+  3.683141004380690E+019
+  4.761511541448196E+019
+  5.950060272986721E+019
+  7.200107815969935E+019
+  8.457705086020708E+019
+  9.670924194677098E+019
+  1.079599233691708E+020
+  1.180119089213294E+020
+  1.266823150812828E+020
+  1.339147873981812E+020
+  1.397574303449462E+020
+  1.443341703227298E+020
+  1.478157452658923E+020
+  1.503942085018700E+020
+  1.522627144047979E+020
+  1.536008808965670E+020
+  1.545652420463073E+020
+  1.552840251833287E+020
+  1.558554686278038E+020
+  1.563489487851266E+020
+  1.568082116276092E+020
+  1.572559916492272E+020
+  1.576992927591134E+020
+  1.581346530417121E+020
+  1.585528445773064E+020
+  1.589426507203044E+020
+  1.592935647025841E+020
+  1.595974220906874E+020
+  1.598491119280830E+020
+  1.600466200034906E+020
+  1.601907095323373E+020
+  1.602844731537381E+020
+  1.603328415647426E+020
+  1.603420971479416E+020
+  1.603195062905446E+020
+  1.602730884017869E+020
+  1.602114281130908E+020
+  1.447295346329795E+020
+  1.447509426281780E+020
+  1.447698873060591E+020
+  1.447833747735090E+020
+  1.447878410132842E+020
+  1.447791316236399E+020
+  1.447525899969095E+020
+  1.447032669337031E+020
+  1.446262404245097E+020
+  1.445170682978144E+020
+  1.443723507783566E+020
+  1.441903338414768E+020
+  1.439714724469149E+020
+  1.437188517809348E+020
+  1.434383352168431E+020
+  1.431382943174936E+020
+  1.428287865244712E+020
+  1.425200777041750E+020
+  1.422204606297390E+020
+  1.419333996333250E+020
+  1.416541326717787E+020
+  1.413659726766612E+020
+  1.410366527697150E+020
+  1.406151377274300E+020
+  1.400293660984517E+020
+  1.391853928781930E+020
+  1.379683817287852E+020
+  1.362458640495686E+020
+  1.338736480512406E+020
+  1.307047075269710E+020
+  1.266012519608117E+020
+  1.214498879813029E+020
+  1.151792357450134E+020
+  1.077785218596808E+020
+  9.931460172574120E+019
+  8.994380517155298E+019
+  7.991439659495558E+019
+  6.955589530252516E+019
+  5.925349943114426E+019
+  4.940937488440240E+019
+  4.039685344165801E+019
+  3.250342292711824E+019
+  2.585465687432935E+019
+  2.041330381421375E+019
+  1.605016184700235E+019
+  1.260173138999951E+019
+  9.903318591043828E+018
+  7.805616751629616E+018
+  6.181202374532325E+018
+  4.925423856074182E+018
+  3.954520568199001E+018
+  3.202638073953582E+018
+  2.618642050579318E+018
+  2.163170311214466E+018
+  1.806098888214943E+018
+  1.524458373706860E+018
+  1.300769252621845E+018
+  1.121737832930585E+018
+  9.772485281668284E+017
+  8.595926217591096E+017
+  7.628820601700974E+017
+  6.826060643539528E+017
+  6.152969301939364E+017
+  5.582787566707497E+017
+  5.094788974414566E+017
+  4.672867744924338E+017
+  4.304484929315136E+017
+  3.979886506258125E+017
+  3.691530524786092E+017
+  3.433679331349866E+017
+  3.202129981688374E+017
+  2.994073869497547E+017
+  2.808098960329797E+017
+  2.644379805477958E+017
+  2.505149067631712E+017
+  2.395620366300911E+017
+  2.325651056359876E+017
+  2.312615333446476E+017
+  2.386227221160834E+017
+  2.596433843120796E+017
+  3.026004929481506E+017
+  3.810052551368550E+017
+  5.165323597525203E+017
+  7.432461066933947E+017
+  1.113401391143720E+018
+  1.704888838523959E+018
+  2.629879440611814E+018
+  4.043223691856185E+018
+  6.147490059918503E+018
+  9.189105451864014E+018
+  1.343710183323436E+019
+  1.913331016120984E+019
+  2.641217569904836E+019
+  3.523921684827833E+019
+  4.540485373941172E+019
+  5.654373259031656E+019
+  6.818061777405568E+019
+  7.979703880137618E+019
+  9.090157148257580E+019
+  1.010877318463913E+020
+  1.100695310520865E+020
+  1.176924612683607E+020
+  1.239239382402556E+020
+  1.288304465417116E+020
+  1.325489047087935E+020
+  1.352581436760569E+020
+  1.371541085150984E+020
+  1.384303570358137E+020
+  1.392640538121708E+020
+  1.398069557567860E+020
+  1.401806538055509E+020
+  1.404753319074017E+020
+  1.407513476274633E+020
+  1.410429421534481E+020
+  1.413633504583847E+020
+  1.417105545586865E+020
+  1.420729612982165E+020
+  1.424344174539220E+020
+  1.427781779244378E+020
+  1.430896625942428E+020
+  1.433580258328940E+020
+  1.435767088453225E+020
+  1.437432571851585E+020
+  1.438587342937760E+020
+  1.439269901121591E+020
+  1.439538978993489E+020
+  1.439466279426672E+020
+  1.439130784887158E+020
+  1.438614930349776E+020
+  1.438001873191086E+020
+  9.806500756426814E+020
+  9.807800362021896E+020
+  9.809091418590314E+020
+  9.810212396889592E+020
+  9.810949191992362E+020
+  9.811028492543268E+020
+  9.810120144253903E+020
+  9.807850298808597E+020
+  9.803825378639852E+020
+  9.797668929389055E+020
+  9.789069966034861E+020
+  9.777837816977825E+020
+  9.763957119316454E+020
+  9.747634619023405E+020
+  9.729326890715631E+020
+  9.709736749420329E+020
+  9.689766592383995E+020
+  9.670419110695916E+020
+  9.652639913218800E+020
+  9.637102845892500E+020
+  9.623946905289732E+020
+  9.612482675857118E+020
+  9.600894749085190E+020
+  9.585973173644149E+020
+  9.562910634827423E+020
+  9.525202562920232E+020
+  9.464685433707197E+020
+  9.371745433534748E+020
+  9.235726328236338E+020
+  9.045560980514296E+020
+  8.790641849065645E+020
+  8.461925638386648E+020
+  8.053229142209377E+020
+  7.562613527091661E+020
+  6.993676765885187E+020
+  6.356494771069349E+020
+  5.667902844307974E+020
+  4.950834478631649E+020
+  4.232571752165328E+020
+  3.542012414087121E+020
+  2.906371865912222E+020
+  2.347017281048745E+020
+  1.873854671870198E+020
+  1.485078373755335E+020
+  1.172150019882762E+020
+  9.239055377475332E+019
+  7.289404465429272E+019
+  5.768259449091477E+019
+  4.586046966600769E+019
+  3.668814952023134E+019
+  2.957101970706960E+019
+  2.403962217910847E+019
+  1.972800308890979E+019
+  1.635340341099376E+019
+  1.369864499409138E+019
+  1.159754835097728E+019
+  9.923218006918107E+018
+  8.578821237591185E+018
+  7.490431405278694E+018
+  6.601528761801629E+018
+  5.868804824006719E+018
+  5.258977621410305E+018
+  4.746383101758156E+018
+  4.311158395771779E+018
+  3.937874468564388E+018
+  3.614509376243365E+018
+  3.331679947397991E+018
+  3.082070501152599E+018
+  2.860013598689350E+018
+  2.661191312296481E+018
+  2.482437753612254E+018
+  2.321636613721678E+018
+  2.177723819431505E+018
+  2.050828752908196E+018
+  1.942623164963692E+018
+  1.857002739028338E+018
+  1.801313206170655E+018
+  1.788465434948974E+018
+  1.840479180469800E+018
+  1.994269691121190E+018
+  2.310852569652771E+018
+  2.889570819207934E+018
+  3.889365230952503E+018
+  5.559324360728329E+018
+  8.280385377366737E+018
+  1.261846045890551E+019
+  1.938544939089264E+019
+  2.969729965411063E+019
+  4.500625113800670E+019
+  6.706720208436538E+019
+  9.777750301834360E+019
+  1.388116134341612E+020
+  1.910416179620772E+020
+  2.541024823907349E+020
+  3.263651698143758E+020
+  4.050962555066804E+020
+  4.868074755731371E+020
+  5.677486443260485E+020
+  6.444175990507103E+020
+  7.139717294936008E+020
+  7.744718967234108E+020
+  8.249463506133383E+020
+  8.653070653307569E+020
+  8.961729400665030E+020
+  9.186548805683520E+020
+  9.341450091553760E+020
+  9.441352627176271E+020
+  9.500759083568942E+020
+  9.532748281975333E+020
+  9.548336704139139E+020
+  9.556155283277968E+020
+  9.562388734689179E+020
+  9.570927229331786E+020
+  9.583678963707144E+020
+  9.600987801428284E+020
+  9.622096921061213E+020
+  9.645601844507215E+020
+  9.669846357288073E+020
+  9.693230948361062E+020
+  9.714421166128422E+020
+  9.732458733554384E+020
+  9.746790128331249E+020
+  9.757235907406909E+020
+  9.763927391650041E+020
+  9.767231831347853E+020
+  9.767676366878953E+020
+  9.765877264338591E+020
+  9.762483848117632E+020
+  9.758139970936996E+020
+  9.753458317026882E+020
+  1.108736032067488E+020
+  1.108623700772491E+020
+  1.108708232152257E+020
+  1.109029495337670E+020
+  1.109605338455873E+020
+  1.110422841890134E+020
+  1.111431718294554E+020
+  1.112541114806569E+020
+  1.113620836804050E+020
+  1.114508068299109E+020
+  1.115019984228121E+020
+  1.114971837851817E+020
+  1.114199448120796E+020
+  1.112584214548129E+020
+  1.110077904330070E+020
+  1.106723742228902E+020
+  1.102669937991594E+020
+  1.098171799305726E+020
+  1.093579122587406E+020
+  1.089306740693461E+020
+  1.085787937876221E+020
+  1.083412753843157E+020
+  1.082455671053898E+020
+  1.082999402735661E+020
+  1.084863080142019E+020
+  1.087543824314934E+020
+  1.090180467814629E+020
+  1.091547302683359E+020
+  1.090084532288669E+020
+  1.083970825474221E+020
+  1.071241820670320E+020
+  1.049955836980459E+020
+  1.018403210395930E+020
+  9.753474279089462E+019
+  9.202742532647161E+019
+  8.536108224451235E+019
+  7.768645455544674E+019
+  6.926287557871818E+019
+  6.044160272373265E+019
+  5.163144252451563E+019
+  4.325119302543929E+019
+  3.566353919405602E+019
+  2.908030084778278E+019
+  2.354280560904809E+019
+  1.898501786063410E+019
+  1.529030924446559E+019
+  1.232651944903784E+019
+  9.965472040719241E+018
+  8.092408285574565E+018
+  6.609393420634604E+018
+  5.435412340448557E+018
+  4.504846874181041E+018
+  3.765321799614796E+018
+  3.175455609651960E+018
+  2.702779960267448E+018
+  2.321935999901353E+018
+  2.013171493898173E+018
+  1.761120678979464E+018
+  1.553831042661507E+018
+  1.381996647538417E+018
+  1.238359560708286E+018
+  1.117245619732950E+018
+  1.014206189024865E+018
+  9.257428007669577E+017
+  8.490962432333742E+017
+  7.820856293484596E+017
+  7.229862504294030E+017
+  6.704376705980058E+017
+  6.233756798118839E+017
+  5.809835812396004E+017
+  5.426600759979423E+017
+  5.080030275026754E+017
+  4.768110498963187E+017
+  4.491087575459632E+017
+  4.252074910189494E+017
+  4.058226215365581E+017
+  3.922827862342175E+017
+  3.868876724176979E+017
+  3.935014279092133E+017
+  4.185099924275476E+017
+  4.723219776481713E+017
+  5.716482747478905E+017
+  7.428390254456621E+017
+  1.026553511841172E+018
+  1.483926590263830E+018
+  2.204075329726145E+018
+  3.312124199788856E+018
+  4.975761105791591E+018
+  7.406557490375630E+018
+  1.084994768231140E+019
+  1.555528728277383E+019
+  2.171587134584997E+019
+  2.938120730874211E+019
+  3.840029053773310E+019
+  4.843375879586474E+019
+  5.899592866948922E+019
+  6.952327548067726E+019
+  7.945826826792487E+019
+  8.832719951845040E+019
+  9.579503921576650E+019
+  1.016894940864916E+020
+  1.059958934010593E+020
+  1.088308619660707E+020
+  1.104048869013043E+020
+  1.109826891069509E+020
+  1.108474547325056E+020
+  1.102719955859973E+020
+  1.094976815645750E+020
+  1.087207495658316E+020
+  1.080851331327591E+020
+  1.076809091779169E+020
+  1.075475022513576E+020
+  1.076807443306153E+020
+  1.080427312072118E+020
+  1.085732246748861E+020
+  1.092012429641586E+020
+  1.098555549887312E+020
+  1.104730708649692E+020
+  1.110045443664952E+020
+  1.114174634222946E+020
+  1.116963982712265E+020
+  1.118413499116373E+020
+  1.118647857878543E+020
+  1.117880560359926E+020
+  1.116377405290413E+020
+  1.114422602818442E+020
+  1.112289651270616E+020
+  1.110218907051197E+020
+  1.108402694943216E+020
+  1.106977670202646E+020
+  6.878482341368906E+019
+  6.877500764887727E+019
+  6.877860617640033E+019
+  6.879856392745368E+019
+  6.883638377938586E+019
+  6.889150901749323E+019
+  6.896082989930883E+019
+  6.903839716476229E+019
+  6.911541269780927E+019
+  6.918057246073043E+019
+  6.922079570387312E+019
+  6.922232492831382E+019
+  6.917214031975710E+019
+  6.905958186106718E+019
+  6.887801523411621E+019
+  6.862632948237848E+019
+  6.831002435652633E+019
+  6.794163907291419E+019
+  6.754030008715257E+019
+  6.713023145219970E+019
+  6.673817897620754E+019
+  6.638984006587770E+019
+  6.610554617637269E+019
+  6.589558910902144E+019
+  6.575569075714338E+019
+  6.566317063809133E+019
+  6.557436313608027E+019
+  6.542378885828234E+019
+  6.512551270998027E+019
+  6.457704006565669E+019
+  6.366600317255165E+019
+  6.227973040036055E+019
+  6.031750192412889E+019
+  5.770480832374933E+019
+  5.440822095074544E+019
+  5.044863781649940E+019
+  4.590993567725967E+019
+  4.093986014815157E+019
+  3.574077735265390E+019
+  3.054991140299108E+019
+  2.561163906276708E+019
+  2.113857282541473E+019
+  1.725534957592449E+019
+  1.398658979242295E+019
+  1.129383910551576E+019
+  9.108872768452050E+018
+  7.354267854965015E+018
+  5.954862056728747E+018
+  4.843302238496314E+018
+  3.962058637728969E+018
+  3.263496337511925E+018
+  2.708995275685393E+018
+  2.267697236061519E+018
+  1.915194190111112E+018
+  1.632313094848080E+018
+  1.404061065879747E+018
+  1.218745435516328E+018
+  1.067258538140139E+018
+  9.425065842035643E+017
+  8.389592215192302E+017
+  7.522974487880184E+017
+  6.791402251469754E+017
+  6.168332507630767E+017
+  5.632864294821932E+017
+  5.168492360521402E+017
+  4.762155208760279E+017
+  4.403511928296505E+017
+  4.084397681389683E+017
+  3.798420378719114E+017
+  3.540671958446632E+017
+  3.307538211362432E+017
+  3.096603044347724E+017
+  2.906658894721674E+017
+  2.737858191491970E+017
+  2.592076391710000E+017
+  2.473612455953644E+017
+  2.390437466944887E+017
+  2.356328530658188E+017
+  2.394405850828225E+017
+  2.542834835709227E+017
+  2.863757793595774E+017
+  3.456845225770253E+017
+  4.479106903730077E+017
+  6.172572339058365E+017
+  8.900769178589678E+017
+  1.319301090257804E+018
+  1.979154591093780E+018
+  2.968971435482770E+018
+  4.413876851442132E+018
+  6.458729153260894E+018
+  9.250272202604794E+018
+  1.290157068102232E+019
+  1.744020128878491E+019
+  2.277513071899258E+019
+  2.870459525841062E+019
+  3.494160850377053E+019
+  4.115489383991277E+019
+  4.701854890809991E+019
+  5.225776610830798E+019
+  5.668065111473720E+019
+  6.019167128239085E+019
+  6.278786064329087E+019
+  6.454261557373566E+019
+  6.558312088261480E+019
+  6.606668350574558E+019
+  6.615953015654286E+019
+  6.601985043962755E+019
+  6.578555589254703E+019
+  6.556650124555024E+019
+  6.544064570125420E+019
+  6.545360012627729E+019
+  6.562102315605465E+019
+  6.593329412672308E+019
+  6.636179187820448E+019
+  6.686599630284417E+019
+  6.740057610624610E+019
+  6.792168603120224E+019
+  6.839188014350154E+019
+  6.878331594692375E+019
+  6.907920847075045E+019
+  6.927373066433622E+019
+  6.937071601499200E+019
+  6.938159919461041E+019
+  6.932302689423718E+019
+  6.921447693934740E+019
+  6.907608611703242E+019
+  6.892681074172577E+019
+  6.878303327757940E+019
+  6.865766216609663E+019
+  6.855970183559615E+019
+  9.757254819811178E+018
+  9.757290587467778E+018
+  9.758228352217340E+018
+  9.760181278429278E+018
+  9.763136837885452E+018
+  9.766912297077434E+018
+  9.771123944668099E+018
+  9.775176687146105E+018
+  9.778278795795046E+018
+  9.779487887862061E+018
+  9.777789509603488E+018
+  9.772204303279129E+018
+  9.761916124850070E+018
+  9.746408895670462E+018
+  9.725594701939649E+018
+  9.699911683762979E+018
+  9.670368554431388E+018
+  9.638513536197259E+018
+  9.606309734064732E+018
+  9.575907138452658E+018
+  9.549313471873741E+018
+  9.527980810188829E+018
+  9.512340219652968E+018
+  9.501330023929860E+018
+  9.491972471253690E+018
+  9.479057224912062E+018
+  9.454988468411462E+018
+  9.409847118940488E+018
+  9.331712697967315E+018
+  9.207281457956300E+018
+  9.022805855147744E+018
+  8.765358997395129E+018
+  8.424387648961674E+018
+  7.993451824874953E+018
+  7.471958347400009E+018
+  6.866594291645029E+018
+  6.192088440297649E+018
+  5.470927820710999E+018
+  4.731784153223194E+018
+  4.006678187349911E+018
+  3.327282967302899E+018
+  2.719979187267850E+018
+  2.198931283767996E+018
+  1.765087820530091E+018
+  1.411385907677747E+018
+  1.127252936558165E+018
+  9.013131905595397E+017
+  7.228401655671264E+017
+  5.824139457684037E+017
+  4.721157430338944E+017
+  3.854773500134991E+017
+  3.173181333106720E+017
+  2.635449008410763E+017
+  2.209540578484368E+017
+  1.870542709989311E+017
+  1.599160532052177E+017
+  1.380485326411275E+017
+  1.203007969438894E+017
+  1.057841546037932E+017
+  9.381155781471768E+016
+  8.385077434981437E+016
+  7.548839863690752E+016
+  6.840231250648535E+016
+  6.234068164726501E+016
+  5.710598252674476E+016
+  5.254289303163401E+016
+  4.852915348171367E+016
+  4.496872254019878E+016
+  4.178672756003310E+016
+  3.892585647201588E+016
+  3.634397688403992E+016
+  3.401292064052267E+016
+  3.191856948139277E+016
+  3.006266343184704E+016
+  2.846719207859558E+016
+  2.718291201882302E+016
+  2.630458808960750E+016
+  2.599714243978844E+016
+  2.653919343216826E+016
+  2.839362449660217E+016
+  3.231884752912105E+016
+  3.953895896625921E+016
+  5.199492206151810E+016
+  7.269979125181512E+016
+  1.062142281964563E+017
+  1.592365921332661E+017
+  2.412538672464745E+017
+  3.651126114156571E+017
+  5.472320342164667E+017
+  8.069945030499146E+017
+  1.164639446114886E+018
+  1.636832332984631E+018
+  2.229968940955161E+018
+  2.935562501227703E+018
+  3.730666163448348E+018
+  4.580522543536230E+018
+  5.443301199338796E+018
+  6.276204290091900E+018
+  7.041380575905679E+018
+  7.710337774172049E+018
+  8.266174582780919E+018
+  8.703647604365544E+018
+  9.027585674098170E+018
+  9.250364674730213E+018
+  9.389104587330914E+018
+  9.463061477181530E+018
+  9.491472273197083E+018
+  9.491940260194376E+018
+  9.479347530641318E+018
+  9.465237216050082E+018
+  9.457599096264980E+018
+  9.460994202477183E+018
+  9.476953130328302E+018
+  9.504575080270785E+018
+  9.541244066766658E+018
+  9.583372694109446E+018
+  9.627088738957898E+018
+  9.668797442724223E+018
+  9.705579401044886E+018
+  9.735413223906251E+018
+  9.757237165031377E+018
+  9.770881742137061E+018
+  9.776915816565907E+018
+  9.776450326162000E+018
+  9.770934612550676E+018
+  9.761965204548045E+018
+  9.751119585845275E+018
+  9.739828108660214E+018
+  9.729289150614112E+018
+  9.720423765362338E+018
+  2.789127201109112E+020
+  2.789119396630433E+020
+  2.789393103145018E+020
+  2.789986473115832E+020
+  2.790899593933247E+020
+  2.792081063039140E+020
+  2.793418781200272E+020
+  2.794736999339561E+020
+  2.795801102231245E+020
+  2.796331936632803E+020
+  2.796030079991879E+020
+  2.794608826698905E+020
+  2.791833544252428E+020
+  2.787563647948576E+020
+  2.781791851612420E+020
+  2.774674153498235E+020
+  2.766543503989551E+020
+  2.757900398416715E+020
+  2.749374940702824E+020
+  2.741657420539074E+020
+  2.735398107018373E+020
+  2.731081427262406E+020
+  2.728884330256982E+020
+  2.728532662138359E+020
+  2.729172105934672E+020
+  2.729271277231647E+020
+  2.726573990097306E+020
+  2.718116020333824E+020
+  2.700319534034223E+020
+  2.669175953789278E+020
+  2.620524680299498E+020
+  2.550428883280274E+020
+  2.455637921114842E+020
+  2.334106703380315E+020
+  2.185515470626853E+020
+  2.011703163954023E+020
+  1.816903934817146E+020
+  1.607675202619750E+020
+  1.392442660317558E+020
+  1.180668058238417E+020
+  9.817563609700730E+019
+  8.035876390814499E+019
+  6.504564517047078E+019
+  5.227546655015031E+019
+  4.184932839885388E+019
+  3.346266603669511E+019
+  2.678523009018786E+019
+  2.150427350925721E+019
+  1.734432832954095E+019
+  1.407329086521995E+019
+  1.150121113692472E+019
+  9.475696880129577E+018
+  7.876163395120382E+018
+  6.608104115051905E+018
+  5.597931088497789E+018
+  4.788584415937789E+018
+  4.135926101701887E+018
+  3.605847050732253E+018
+  3.171983365217262E+018
+  2.813933970181028E+018
+  2.515880815106495E+018
+  2.265527079207408E+018
+  2.053283707165850E+018
+  1.871648325543988E+018
+  1.714732444716890E+018
+  1.577902705993180E+018
+  1.457509916541223E+018
+  1.350685991664621E+018
+  1.255194058236110E+018
+  1.169321313340021E+018
+  1.091808320542830E+018
+  1.021812942714378E+018
+  9.589129669197330E+017
+  9.031599715188974E+017
+  8.552100125790999E+017
+  8.165769911791434E+017
+  7.900858442170917E+017
+  7.806497167714252E+017
+  7.965632703668568E+017
+  8.515975363185213E+017
+  9.683001944285710E+017
+  1.183037907822898E+018
+  1.553431084029388E+018
+  2.168852874740079E+018
+  3.164456841761905E+018
+  4.738538132908411E+018
+  7.171601867451332E+018
+  1.084292993493931E+019
+  1.623639008296948E+019
+  2.392174355300261E+019
+  3.449160662684959E+019
+  4.842982229308459E+019
+  6.591350770112538E+019
+  8.667780181930199E+019
+  1.100303290496245E+020
+  1.349317957428270E+020
+  1.601381260170423E+020
+  1.843823369471928E+020
+  2.065497308239021E+020
+  2.258076948729806E+020
+  2.416703311658658E+020
+  2.539987737164092E+020
+  2.629527143823006E+020
+  2.689144553102496E+020
+  2.724051335378334E+020
+  2.740070567501895E+020
+  2.742996803520831E+020
+  2.738117289872361E+020
+  2.729889897766642E+020
+  2.721760602148438E+020
+  2.716100925974289E+020
+  2.714246511317632E+020
+  2.716617679049935E+020
+  2.722900396372697E+020
+  2.732262724732692E+020
+  2.743579840214240E+020
+  2.755642042286443E+020
+  2.767325394089901E+020
+  2.777712729275170E+020
+  2.786161609920769E+020
+  2.792323431491554E+020
+  2.796123308279918E+020
+  2.797713540999268E+020
+  2.797413987170251E+020
+  2.795649919932998E+020
+  2.792893506026298E+020
+  2.789612802136901E+020
+  2.786232254365587E+020
+  2.783106312080176E+020
+  2.780505178942491E+020
+  1.132486350332093E+021
+  1.132666347334605E+021
+  1.132813421243636E+021
+  1.132900634928137E+021
+  1.132897807292376E+021
+  1.132771801037114E+021
+  1.132487510896516E+021
+  1.132009575413903E+021
+  1.131304655035717E+021
+  1.130344408704617E+021
+  1.129108977839745E+021
+  1.127590466977810E+021
+  1.125795866425024E+021
+  1.123748749701229E+021
+  1.121488896278199E+021
+  1.119068922751380E+021
+  1.116547105516201E+021
+  1.113975817277515E+021
+  1.111385380025598E+021
+  1.108763677184402E+021
+  1.106032544129453E+021
+  1.103022685514401E+021
+  1.099449533095406E+021
+  1.094892951342903E+021
+  1.088783958359872E+021
+  1.080401664136683E+021
+  1.068883513158103E+021
+  1.053251755991158E+021
+  1.032458898286843E+021
+  1.005454525471630E+021
+  9.712749374391234E+020
+  9.291547820363142E+020
+  8.786557009826023E+020
+  8.198006618727774E+020
+  7.531947468038642E+020
+  6.801055421524755E+020
+  6.024722765392489E+020
+  5.228168791875614E+020
+  4.440455810421503E+020
+  3.691560767958336E+020
+  3.008967208750478E+020
+  2.413476509420095E+020
+  1.913665939792602E+020
+  1.505984264251061E+020
+  1.180136606546808E+020
+  9.234143349383414E+019
+  7.231571093505252E+019
+  5.679671874168721E+019
+  4.481679477393682E+019
+  3.558463338686940E+019
+  2.846930137554083E+019
+  2.297647884345979E+019
+  1.872360412920046E+019
+  1.541712066854907E+019
+  1.283305913358177E+019
+  1.080115699258227E+019
+  9.192228722884828E+018
+  7.908311016858041E+018
+  6.875074890482948E+018
+  6.036037889339313E+018
+  5.348178769841599E+018
+  4.778630566520193E+018
+  4.302195187496889E+018
+  3.899479851474870E+018
+  3.555502338161047E+018
+  3.258649111745538E+018
+  2.999899336261137E+018
+  2.772250217993387E+018
+  2.570296605004129E+018
+  2.389932002668277E+018
+  2.228150888142426E+018
+  2.082945465168457E+018
+  1.953306417046793E+018
+  1.839360474099255E+018
+  1.742713120700183E+018
+  1.667120469977250E+018
+  1.619701534288818E+018
+  1.613035986901840E+018
+  1.668691577315297E+018
+  1.823008588400621E+018
+  2.136347499598051E+018
+  2.707466784014681E+018
+  3.695169151933024E+018
+  5.349652517752061E+018
+  8.055749543794442E+018
+  1.238876933236081E+019
+  1.917992956059276E+019
+  2.958100687139715E+019
+  4.510540100302689E+019
+  6.760456843401228E+019
+  9.911616779035317E+019
+  1.414992878647542E+020
+  1.958395128508813E+020
+  2.619835081972581E+020
+  3.384776488714818E+020
+  4.226938179406480E+020
+  5.111541190845550E+020
+  6.000153886813440E+020
+  6.855887854011255E+020
+  7.647752973410549E+020
+  8.353409443529007E+020
+  8.960118606395034E+020
+  9.464162034328639E+020
+  9.869248168316924E+020
+  1.018445813894743E+021
+  1.042217101799115E+021
+  1.059624362651189E+021
+  1.072056905830298E+021
+  1.080803378005316E+021
+  1.086983820208910E+021
+  1.091512631103026E+021
+  1.095086890494968E+021
+  1.098194865969329E+021
+  1.101139683725812E+021
+  1.104073021622353E+021
+  1.107033587622329E+021
+  1.109985466174805E+021
+  1.112852336225747E+021
+  1.115544945249328E+021
+  1.117980690546023E+021
+  1.120095396098559E+021
+  1.121848344111656E+021
+  1.123222407738633E+021
+  1.124221502632303E+021
+  1.124867066678710E+021
+  1.125194219239011E+021
+  1.125247977077811E+021
+  1.125080353196838E+021
+  1.124748485753814E+021
+  1.124313153443375E+021
+  3.858979479079785E+018
+  3.859434814050525E+018
+  3.859974283043326E+018
+  3.860554531401375E+018
+  3.861103404334421E+018
+  3.861515034213176E+018
+  3.861649711207873E+018
+  3.861339775178038E+018
+  3.860401949507160E+018
+  3.858657147846385E+018
+  3.855957165462284E+018
+  3.852215913744965E+018
+  3.847441953043672E+018
+  3.841767928606851E+018
+  3.835471192965608E+018
+  3.828979140020867E+018
+  3.822852890198826E+018
+  3.817743989247991E+018
+  3.814320825243284E+018
+  3.813164630892293E+018
+  3.814639072501781E+018
+  3.818742043701474E+018
+  3.824952653836432E+018
+  3.832089767669634E+018
+  3.838200256121944E+018
+  3.840495205053939E+018
+  3.835351042840537E+018
+  3.818390584133017E+018
+  3.784656961468316E+018
+  3.728891208230245E+018
+  3.645920436364915E+018
+  3.531155338093817E+018
+  3.381179835696382E+018
+  3.194389955564993E+018
+  2.971604496756882E+018
+  2.716533366088150E+018
+  2.435964452780754E+018
+  2.139536623347908E+018
+  1.839022828206671E+018
+  1.547156428037264E+018
+  1.276174811019248E+018
+  1.035944294979625E+018
+  8.314040521400273E+017
+  6.623392713289766E+017
+  5.254939304636217E+017
+  4.163514680908319E+017
+  3.301872587640364E+017
+  2.626193210071422E+017
+  2.098454120048398E+017
+  1.687006161828685E+017
+  1.366222605227052E+017
+  1.115743292105427E+017
+  9.196050252436430E+016
+  7.654066542102464E+016
+  6.435741788490876E+016
+  5.467456970737694E+016
+  4.692729722553132E+016
+  4.068261657591509E+016
+  3.560850459191826E+016
+  3.145002917724954E+016
+  2.801103729089757E+016
+  2.514018339877874E+016
+  2.272031207556268E+016
+  2.066041353577390E+016
+  1.888954366797820E+016
+  1.735224101671913E+016
+  1.600508547581762E+016
+  1.481413197965846E+016
+  1.375302280483738E+016
+  1.280164054186371E+016
+  1.194521758228744E+016
+  1.117387584178719E+016
+  1.048264394333857E+016
+  9.872104553525966E+015
+  9.349985907674100E+015
+  8.934263484838253E+015
+  8.658728692779398E+015
+  8.582574217888185E+015
+  8.806413311214037E+015
+  9.498359331338884E+015
+  1.093536310446115E+016
+  1.356683319222422E+016
+  1.810926979597632E+016
+  2.568134405808068E+016
+  3.798684291574445E+016
+  5.754528703553830E+016
+  8.795253458505040E+016
+  1.341209511980447E+017
+  2.023958089035715E+017
+  3.003703721356662E+017
+  4.361355662667196E+017
+  6.166297290327186E+017
+  8.450747698006619E+017
+  1.119113743661170E+018
+  1.430799559125966E+018
+  1.767423988122688E+018
+  2.113175974835167E+018
+  2.451394997752880E+018
+  2.766844030493285E+018
+  3.047492731833940E+018
+  3.285520733800268E+018
+  3.477508584915233E+018
+  3.623980011752920E+018
+  3.728549204635184E+018
+  3.796920882506933E+018
+  3.835928020638614E+018
+  3.852713898882054E+018
+  3.854099833240970E+018
+  3.846138754495150E+018
+  3.833835855614708E+018
+  3.821012815764441E+018
+  3.810293109161509E+018
+  3.803186799978292E+018
+  3.800251768663984E+018
+  3.801305239488129E+018
+  3.805657096876008E+018
+  3.812337095032336E+018
+  3.820292690430740E+018
+  3.828542053511322E+018
+  3.836275753057860E+018
+  3.842908602892654E+018
+  3.848089299461828E+018
+  3.851679642462197E+018
+  3.853716559482242E+018
+  3.854367649336668E+018
+  3.853886184042026E+018
+  3.852569481961260E+018
+  3.850725282115057E+018
+  3.848647860588893E+018
+  3.846602454115099E+018
+  4.863512995173420E+020
+  4.864172270923178E+020
+  4.864821114886364E+020
+  4.865376971596342E+020
+  4.865731615121854E+020
+  4.865748257193999E+020
+  4.865263163279909E+020
+  4.864092639805935E+020
+  4.862045368981660E+020
+  4.858941073224510E+020
+  4.854634768816872E+020
+  4.849044076479035E+020
+  4.842176385514028E+020
+  4.834151683371800E+020
+  4.825215616456332E+020
+  4.815736702315808E+020
+  4.806181873035672E+020
+  4.797065658753987E+020
+  4.788870396801612E+020
+  4.781937987161834E+020
+  4.776337770726188E+020
+  4.771719598978318E+020
+  4.767165383798391E+020
+  4.761055650093762E+020
+  4.750969368851128E+020
+  4.733635532471885E+020
+  4.704953915052873E+020
+  4.660100888128013E+020
+  4.593734497197273E+020
+  4.500310835975449E+020
+  4.374519253798215E+020
+  4.211833926519842E+020
+  4.009160355873533E+020
+  3.765525578408527E+020
+  3.482722221619138E+020
+  3.165777087813820E+020
+  2.823090568432533E+020
+  2.466105897363158E+020
+  2.108435693351238E+020
+  1.764498339825480E+020
+  1.447872845134359E+020
+  1.169221710265032E+020
+  9.334935915251686E+019
+  7.397983304720464E+019
+  5.838880229770501E+019
+  4.602040046071926E+019
+  3.630660686456078E+019
+  2.872790115810938E+019
+  2.283801247156170E+019
+  1.826846825961945E+019
+  1.472298040836424E+019
+  1.196761606951240E+019
+  9.820015312709947E+018
+  8.139274455887592E+018
+  6.817170510761000E+018
+  5.770895231407767E+018
+  4.937217516881500E+018
+  4.267888047538683E+018
+  3.726072666737105E+018
+  3.283611720811222E+018
+  2.918929045227329E+018
+  2.615444749101987E+018
+  2.360374831139498E+018
+  2.143825777014598E+018
+  1.958113129625613E+018
+  1.797249813347476E+018
+  1.656563251013766E+018
+  1.532410675362498E+018
+  1.421970203597255E+018
+  1.323091966078918E+018
+  1.234199689149132E+018
+  1.154239615455347E+018
+  1.082681791716499E+018
+  1.019590382079079E+018
+  9.657974396850853E+017
+  9.232423772974642E+017
+  8.955826867932460E+017
+  8.892474741132561E+017
+  9.152026517083933E+017
+  9.918333989886784E+017
+  1.149529473582337E+018
+  1.437772503574953E+018
+  1.935732340451453E+018
+  2.767486826438368E+018
+  4.122797603921055E+018
+  6.283579135682394E+018
+  9.654297591459951E+018
+  1.479089871023345E+019
+  2.241687140606684E+019
+  3.340648182039224E+019
+  4.870493204376211E+019
+  6.914629392092430E+019
+  9.516472768174047E+019
+  1.265777764271439E+020
+  1.625728583362954E+020
+  2.017867356925299E+020
+  2.424796997947072E+020
+  2.827812774006637E+020
+  3.209444938732181E+020
+  3.555511377779695E+020
+  3.856335083749130E+020
+  4.107064387364720E+020
+  4.307257298489084E+020
+  4.460001214534187E+020
+  4.570842173447545E+020
+  4.646734232352932E+020
+  4.695134887187967E+020
+  4.723299027615416E+020
+  4.737775690090070E+020
+  4.744088203182737E+020
+  4.746571213950372E+020
+  4.748338456819528E+020
+  4.751356435152627E+020
+  4.756598574460728E+020
+  4.764252199511209E+020
+  4.773949013163430E+020
+  4.784990888434354E+020
+  4.796547750753079E+020
+  4.807812289830339E+020
+  4.818105061126294E+020
+  4.826931237509827E+020
+  4.833996209264314E+020
+  4.839191530171860E+020
+  4.842564394852839E+020
+  4.844281133538371E+020
+  4.844589876422073E+020
+  4.843785646215573E+020
+  4.842182580554096E+020
+  4.840094713363547E+020
+  4.837823010661108E+020
+  8.315077285552692E+024
+  8.313548975423001E+024
+  8.313905854628574E+024
+  8.316580911750779E+024
+  8.321811211297861E+024
+  8.329552663354700E+024
+  8.339411383732399E+024
+  8.350603066402736E+024
+  8.361950213061889E+024
+  8.371927414548639E+024
+  8.378759504700419E+024
+  8.380570865933711E+024
+  8.375578549807847E+024
+  8.362314992455074E+024
+  8.339858397800034E+024
+  8.308042291598855E+024
+  8.267611530016850E+024
+  8.220291007535930E+024
+  8.168736581398742E+024
+  8.116346395733402E+024
+  8.066925076363338E+024
+  8.024212048069740E+024
+  7.991306020620398E+024
+  7.970037126948549E+024
+  7.960352845947863E+024
+  7.959791265308289E+024
+  7.963114895802167E+024
+  7.962171730768904E+024
+  7.946040429417030E+024
+  7.901505620553819E+024
+  7.813896626128289E+024
+  7.668303186213253E+024
+  7.451146052958519E+024
+  7.152019301399092E+024
+  6.765631125600405E+024
+  6.293560388313960E+024
+  5.745448472916004E+024
+  5.139214166806891E+024
+  4.499973261700323E+024
+  3.857595158742569E+024
+  3.243205588923739E+024
+  2.684213579822182E+024
+  2.197078060127281E+024
+  1.785622538070123E+024
+  1.445603819131203E+024
+  1.168887481491601E+024
+  9.460503635215117E+023
+  7.678473110189110E+023
+  6.259355008580658E+023
+  5.131508621535225E+023
+  4.235354166712986E+023
+  3.522403110318553E+023
+  2.953779943900027E+023
+  2.498639324950154E+023
+  2.132681608503517E+023
+  1.836853756858244E+023
+  1.596258978815184E+023
+  1.399266080779424E+023
+  1.236795241023307E+023
+  1.101752616905652E+023
+  9.885869333105285E+022
+  8.929441418630463E+022
+  8.113998812882967E+022
+  7.412530860459493E+022
+  6.803673680835655E+022
+  6.270496181398730E+022
+  5.799576204604404E+022
+  5.380303906003272E+022
+  5.004365203399937E+022
+  4.665371787002485E+022
+  4.358617474883759E+022
+  4.080955917347250E+022
+  3.830814918246443E+022
+  3.608392418428271E+022
+  3.416124975963371E+022
+  3.259590628043663E+022
+  3.149116764289176E+022
+  3.102525293087206E+022
+  3.149677677641975E+022
+  3.339791740054889E+022
+  3.752883053504712E+022
+  4.517087690942728E+022
+  5.833921311678451E+022
+  8.013455735471836E+022
+  1.152047386804959E+023
+  1.703015311267446E+023
+  2.548671452886092E+023
+  3.814964777727346E+023
+  5.659884396290020E+023
+  8.265281079188284E+023
+  1.181364680653711E+024
+  1.644250249294075E+024
+  2.217862431642740E+024
+  2.889688019365476E+024
+  3.633181222166731E+024
+  4.411176882365423E+024
+  5.181240439123716E+024
+  5.902065345236690E+024
+  6.539286552553329E+024
+  7.069450313381907E+024
+  7.481598510607863E+024
+  7.776644381042933E+024
+  7.965183030053088E+024
+  8.064521752396105E+024
+  8.095605911895850E+024
+  8.080288631832057E+024
+  8.039163114996686E+024
+  7.990009969339018E+024
+  7.946822204874552E+024
+  7.919339089461533E+024
+  7.913017762083952E+024
+  7.929374117569120E+024
+  7.966619299862451E+024
+  8.020504245943171E+024
+  8.085269188201232E+024
+  8.154587552993720E+024
+  8.222401478998919E+024
+  8.283570507880892E+024
+  8.334290679643453E+024
+  8.372279182916025E+024
+  8.396751392006268E+024
+  8.408238350084755E+024
+  8.408303115041788E+024
+  8.399213565507350E+024
+  8.383616811244337E+024
+  8.364242414604455E+024
+  8.343651325499418E+024
+  8.324045453830636E+024
+  8.307144343561069E+024
+  8.294126509464941E+024
+  7.638352731962503E+021
+  7.639359300226555E+021
+  7.640361385277927E+021
+  7.641234091146760E+021
+  7.641811694939074E+021
+  7.641882432302885E+021
+  7.641190229471762E+021
+  7.639444789132523E+021
+  7.636340032413187E+021
+  7.631582504533476E+021
+  7.624928687610726E+021
+  7.616227354525727E+021
+  7.605462048184484E+021
+  7.592787236923581E+021
+  7.578549735141500E+021
+  7.563285930430240E+021
+  7.547685710547977E+021
+  7.532515684500653E+021
+  7.518497465700634E+021
+  7.506141612222116E+021
+  7.495544097769682E+021
+  7.486159176765222E+021
+  7.476569113526377E+021
+  7.464276357544335E+021
+  7.445546587558672E+021
+  7.415331456891759E+021
+  7.367298401102209E+021
+  7.293992506606396E+021
+  7.187152882765051E+021
+  7.038202582764295E+021
+  6.838924039023386E+021
+  6.582316303416946E+021
+  6.263600753427063E+021
+  5.881295457884505E+021
+  5.438218139547722E+021
+  4.942216170255504E+021
+  4.406384062838436E+021
+  3.848548746390074E+021
+  3.289909552951711E+021
+  2.752914753247807E+021
+  2.258699681045344E+021
+  1.823851035547058E+021
+  1.456047444023627E+021
+  1.153867708564191E+021
+  9.106617902312726E+020
+  7.177427476851818E+020
+  5.662399942785708E+020
+  4.480436973552783E+020
+  3.561894141693441E+020
+  2.849279983474253E+020
+  2.296373067472981E+020
+  1.866684057775381E+020
+  1.531770896656469E+020
+  1.269659040142829E+020
+  1.063471669019956E+020
+  9.002958540139027E+019
+  7.702718018603075E+019
+  6.658760240233799E+019
+  5.813650501733752E+019
+  5.123480098276866E+019
+  4.554605554541761E+019
+  4.081173645275505E+019
+  3.683249700896997E+019
+  3.345405911709980E+019
+  3.055658874682028E+019
+  2.804671826220912E+019
+  2.585157687576173E+019
+  2.391435213323577E+019
+  2.219103269245823E+019
+  2.064808747580918E+019
+  1.926093152713243E+019
+  1.801313000358061E+019
+  1.689641878661723E+019
+  1.591180156656918E+019
+  1.507226050207892E+019
+  1.440805131745350E+019
+  1.397622925912598E+019
+  1.387708212012017E+019
+  1.428166396328237E+019
+  1.547675671853238E+019
+  1.793639447556281E+019
+  2.243241705967933E+019
+  3.019976477175734E+019
+  4.317390275533223E+019
+  6.431493510699641E+019
+  9.802057213151712E+019
+  1.506004872422625E+020
+  2.307278855471004E+020
+  3.496906628173956E+020
+  5.211308345767806E+020
+  7.598005045783838E+020
+  1.078723561837623E+021
+  1.484692621435451E+021
+  1.974889590638516E+021
+  2.536674937343773E+021
+  3.148825762604647E+021
+  3.784249745268361E+021
+  4.413813592417023E+021
+  5.010304560652869E+021
+  5.551628095272269E+021
+  6.022703791625626E+021
+  6.415963157661093E+021
+  6.730700834098524E+021
+  6.971702141538530E+021
+  7.147574316392165E+021
+  7.269109673483595E+021
+  7.347876998863951E+021
+  7.395123045114888E+021
+  7.420990777207063E+021
+  7.434024027459133E+021
+  7.440917023373699E+021
+  7.446467726257378E+021
+  7.453695898246167E+021
+  7.464085872549266E+021
+  7.477910646527524E+021
+  7.494591448027864E+021
+  7.513048854727100E+021
+  7.532009432807924E+021
+  7.550244379184757E+021
+  7.566730459299507E+021
+  7.580735547743015E+021
+  7.591840292989475E+021
+  7.599914026112759E+021
+  7.605065524742772E+021
+  7.607584946443930E+021
+  7.607884942818789E+021
+  7.606446028744551E+021
+  7.603773442322598E+021
+  7.600367576473651E+021
+  7.596704324642197E+021
+  1.100619285837240E+018
+  1.100759507480714E+018
+  1.100887113440122E+018
+  1.100982614123726E+018
+  1.101022028433129E+018
+  1.100976176775672E+018
+  1.100810621796041E+018
+  1.100486372241896E+018
+  1.099961300979136E+018
+  1.099192512225404E+018
+  1.098139577465049E+018
+  1.096768238572278E+018
+  1.095054112109882E+018
+  1.092985785868334E+018
+  1.090566476438942E+018
+  1.087813294374160E+018
+  1.084753194210417E+018
+  1.081414849054097E+018
+  1.077815995295515E+018
+  1.073946273539231E+018
+  1.069746237929757E+018
+  1.065083946965016E+018
+  1.059731274408536E+018
+  1.053342676779094E+018
+  1.045439544909096E+018
+  1.035403431387731E+018
+  1.022481429655866E+018
+  1.005806864662585E+018
+  9.844382704633812E+017
+  9.574192408297994E+017
+  9.238607547340017E+017
+  8.830453938201418E+017
+  8.345488835488850E+017
+  7.783683701227549E+017
+  7.150393241797423E+017
+  6.457156314867236E+017
+  5.721834274933421E+017
+  4.967827297197481E+017
+  4.222252280065498E+017
+  3.513214072899468E+017
+  2.866600849270177E+017
+  2.302107458270637E+017
+  1.827930372479503E+017
+  1.440799069388072E+017
+  1.131051660358665E+017
+  8.867262912696747E+016
+  6.958895521394033E+016
+  5.477868880992029E+016
+  4.332791425541933E+016
+  3.448857540988854E+016
+  2.766363728213448E+016
+  2.238484761391807E+016
+  1.828941032460974E+016
+  1.509859866453860E+016
+  1.259948190150412E+016
+  1.062996528642027E+016
+  9.066880218628642E+015
+  7.816681673668205E+015
+  6.808277864187527E+015
+  5.987554826078122E+015
+  5.313222932705103E+015
+  4.753680982720340E+015
+  4.284656391532595E+015
+  3.887433566361260E+015
+  3.547526304866046E+015
+  3.253684885503877E+015
+  2.997155744712796E+015
+  2.771132734229782E+015
+  2.570355439020633E+015
+  2.390823475030202E+015
+  2.229607750416072E+015
+  2.084752311796025E+015
+  1.955276120058104E+015
+  1.841306437929442E+015
+  1.744409641744735E+015
+  1.668238784914032E+015
+  1.619700909814838E+015
+  1.610975315951065E+015
+  1.662904195498998E+015
+  1.810546849455233E+015
+  2.112048106147663E+015
+  2.662406285933122E+015
+  3.614166164059071E+015
+  5.207330311180903E+015
+  7.810517220850300E+015
+  1.197396203540822E+016
+  1.849137490748592E+016
+  2.846064686134198E+016
+  4.332158866547222E+016
+  6.483165180126977E+016
+  9.491932564938173E+016
+  1.353353767628000E+017
+  1.870870338696641E+017
+  2.499998328890655E+017
+  3.226674854777864E+017
+  4.025798003324593E+017
+  4.864378002809412E+017
+  5.706170491022810E+017
+  6.516597480541061E+017
+  7.266829068000266E+017
+  7.936317549852906E+017
+  8.513614852709407E+017
+  8.995745121135395E+017
+  9.386634947658875E+017
+  9.695127867182696E+017
+  9.932999595712780E+017
+  1.011323194901585E+018
+  1.024866012606174E+018
+  1.035100979722783E+018
+  1.043028879375559E+018
+  1.049447974703714E+018
+  1.054947829692712E+018
+  1.059922402631043E+018
+  1.064597207049772E+018
+  1.069065211612796E+018
+  1.073326135708792E+018
+  1.077324248749397E+018
+  1.080980844905259E+018
+  1.084219061378399E+018
+  1.086980239739832E+018
+  1.089232271421656E+018
+  1.090971288508811E+018
+  1.092218760942971E+018
+  1.093016340906190E+018
+  1.093420224182553E+018
+  1.093495708151676E+018
+  1.093312316412617E+018
+  1.092940270008158E+018
+  1.092448417724885E+018
+  1.091902973936945E+018
+  1.743515675065751E+019
+  1.743831863502006E+019
+  1.744024503291234E+019
+  1.744036012411250E+019
+  1.743810761509546E+019
+  1.743297315773979E+019
+  1.742450625595214E+019
+  1.741233752346488E+019
+  1.739618541740066E+019
+  1.737585280670878E+019
+  1.735121112873355E+019
+  1.732216790383088E+019
+  1.728861595701650E+019
+  1.725036418631678E+019
+  1.720704971387648E+019
+  1.715803211501949E+019
+  1.710227238295790E+019
+  1.703820137338366E+019
+  1.696358431995333E+019
+  1.687538984830123E+019
+  1.676967382768679E+019
+  1.664149013438856E+019
+  1.648484170484369E+019
+  1.629268620557921E+019
+  1.605701171291787E+019
+  1.576899966640654E+019
+  1.541929557785824E+019
+  1.499841234428147E+019
+  1.449729472888842E+019
+  1.390807239377549E+019
+  1.322501604506868E+019
+  1.244567923895041E+019
+  1.157215249305388E+019
+  1.061227907438140E+019
+  9.580596393389543E+018
+  8.498699418295712E+018
+  7.394712107763706E+018
+  6.301643190860075E+018
+  5.254616689054487E+018
+  4.287278246359739E+018
+  3.428001474573551E+018
+  2.695580920776755E+018
+  2.093838744714865E+018
+  1.612905972550967E+018
+  1.236092402676442E+018
+  9.450443980895315E+017
+  7.224961308802956E+017
+  5.534832668875962E+017
+  4.256694535722811E+017
+  3.292155221614326E+017
+  2.564508505860828E+017
+  2.014907495201556E+017
+  1.598718355518716E+017
+  1.282357653147573E+017
+  1.040693987018197E+017
+  8.549859494326779E+016
+  7.112836544468929E+016
+  5.992097442903654E+016
+  5.110405102347318E+016
+  4.410189463748353E+016
+  3.848442058060711E+016
+  3.392937175134816E+016
+  3.019442676910216E+016
+  2.709664939433876E+016
+  2.449736445821865E+016
+  2.229103878432469E+016
+  2.039712037865464E+016
+  1.875407224459204E+016
+  1.731505263263142E+016
+  1.604486330082229E+016
+  1.491793262574005E+016
+  1.391724397053056E+016
+  1.303428969755913E+016
+  1.227036649860653E+016
+  1.163988570423176E+016
+  1.117693898478573E+016
+  1.094726206301865E+016
+  1.106915546080235E+016
+  1.174908718841649E+016
+  1.334089280036716E+016
+  1.644195191321430E+016
+  2.204551206576092E+016
+  3.177496644055389E+016
+  4.823172317837972E+016
+  7.548952298699949E+016
+  1.197573387548413E+017
+  1.901980393014384E+017
+  2.998129790463130E+017
+  4.661622713559551E+017
+  7.114695140722779E+017
+  1.061361857821583E+018
+  1.541176391706568E+018
+  2.169377503600075E+018
+  2.951790896586916E+018
+  3.879838012264291E+018
+  4.930687158209639E+018
+  6.069715467935174E+018
+  7.255133962604703E+018
+  8.443562430490899E+018
+  9.595222449270163E+018
+  1.067774441485472E+019
+  1.166814410307122E+019
+  1.255306302277071E+019
+  1.332771771867719E+019
+  1.399412414843106E+019
+  1.455910440509528E+019
+  1.503243142026723E+019
+  1.542530163428582E+019
+  1.574919388681282E+019
+  1.601509075792441E+019
+  1.623300060837771E+019
+  1.641171006845657E+019
+  1.655870311374156E+019
+  1.668019377507311E+019
+  1.678122979805211E+019
+  1.686583328123723E+019
+  1.693715270099191E+019
+  1.699760962719759E+019
+  1.704903175379484E+019
+  1.709276932965807E+019
+  1.712979415009205E+019
+  1.716078205230378E+019
+  1.718618459194740E+019
+  1.720629973568683E+019
+  1.722134638217395E+019
+  1.723153608053239E+019
+  1.723713576733963E+019
+  1.723852571152576E+019
+  1.723624894223068E+019
+  1.723103849340872E+019
+  2.112953871531505E+020
+  2.113278812325357E+020
+  2.113559058472055E+020
+  2.113748219190939E+020
+  2.113792288912155E+020
+  2.113629742182417E+020
+  2.113193177350562E+020
+  2.112412654222020E+020
+  2.111220511286925E+020
+  2.109557950890893E+020
+  2.107383027531414E+020
+  2.104679013101138E+020
+  2.101461959044886E+020
+  2.097785994852394E+020
+  2.093744499720919E+020
+  2.089465114152473E+020
+  2.085096731623002E+020
+  2.080787087630814E+020
+  2.076650356244314E+020
+  2.072725309298968E+020
+  2.068926038232725E+020
+  2.064988805435362E+020
+  2.060420030057411E+020
+  2.054451483767282E+020
+  2.046009328108979E+020
+  2.033703667547115E+020
+  2.015844975456048E+020
+  1.990493302039835E+020
+  1.955545705718143E+020
+  1.908866603240987E+020
+  1.848463889558309E+020
+  1.772709434215841E+020
+  1.680594595361893E+020
+  1.571999132520777E+020
+  1.447936378605890E+020
+  1.310722227323334E+020
+  1.164006920941596E+020
+  1.012615497041978E+020
+  8.621720532049125E+019
+  7.185342588427614E+019
+  5.871266778411835E+019
+  4.721134629272478E+019
+  3.752969528836968E+019
+  2.961106621435090E+019
+  2.326538174611841E+019
+  1.825311815564114E+019
+  1.433345254833996E+019
+  1.128832022991574E+019
+  8.931784790321776E+018
+  7.111254959528519E+018
+  5.704684534631219E+018
+  4.616180462082268E+018
+  3.771330979285204E+018
+  3.112890788836756E+018
+  2.597076842115512E+018
+  2.190525234075923E+018
+  1.867861974273869E+018
+  1.609801340213101E+018
+  1.401677364244970E+018
+  1.232320651576916E+018
+  1.093205186510383E+018
+  9.778033870148205E+017
+  8.811002641527464E+017
+  7.992283407249068E+017
+  7.291938487624668E+017
+  6.686718065723479E+017
+  6.158531277504959E+017
+  5.693312273145059E+017
+  5.280189679549373E+017
+  4.910895486293129E+017
+  4.579374195463439E+017
+  4.281579108824763E+017
+  4.015475031647043E+017
+  3.781312707872323E+017
+  3.582310611535759E+017
+  3.425989902833498E+017
+  3.326580513630028E+017
+  3.309179926936922E+017
+  3.416736886739377E+017
+  3.721485709474001E+017
+  4.343192681438291E+017
+  5.477463148260759E+017
+  7.438249861476637E+017
+  1.071923100761114E+018
+  1.607814391994252E+018
+  2.464515946223764E+018
+  3.804894932824716E+018
+  5.853958763678982E+018
+  8.906314479210839E+018
+  1.332075338494853E+019
+  1.948959305823328E+019
+  2.776649434237852E+019
+  3.834995650823941E+019
+  5.119353349828560E+019
+  6.599621035419127E+019
+  8.222976670113658E+019
+  9.920484431780569E+019
+  1.161674325615104E+020
+  1.324009824600887E+020
+  1.473108469397002E+020
+  1.604764779462112E+020
+  1.716679983227277E+020
+  1.808328749962715E+020
+  1.880631472749776E+020
+  1.935541092130663E+020
+  1.975630221498641E+020
+  2.003731320418552E+020
+  2.022653071247615E+020
+  2.034976048981337E+020
+  2.042920472309113E+020
+  2.048275403228654E+020
+  2.052378711911308E+020
+  2.056137790978537E+020
+  2.060081111797155E+020
+  2.064430223232641E+020
+  2.069181401323721E+020
+  2.074186686994322E+020
+  2.079225890178961E+020
+  2.084064001746809E+020
+  2.088491567494304E+020
+  2.092348257756099E+020
+  2.095531963074610E+020
+  2.097997370039617E+020
+  2.099748687843893E+020
+  2.100830181137846E+020
+  2.101316088160246E+020
+  2.101300891257833E+020
+  2.100891662020907E+020
+  2.100202878661111E+020
+  2.099352594525701E+020
+  1.092727973141899E+019
+  1.092834015600171E+019
+  1.092967636235040E+019
+  1.093119323434348E+019
+  1.093271376051446E+019
+  1.093395993499083E+019
+  1.093454534084989E+019
+  1.093398293742514E+019
+  1.093170957309702E+019
+  1.092713077410211E+019
+  1.091968507058381E+019
+  1.090892251015772E+019
+  1.089458976222976E+019
+  1.087671115067675E+019
+  1.085565124705987E+019
+  1.083214233289074E+019
+  1.080725990051571E+019
+  1.078233147231141E+019
+  1.075876871069116E+019
+  1.073782045442102E+019
+  1.072025470429930E+019
+  1.070598954160422E+019
+  1.069370468221784E+019
+  1.068047488322774E+019
+  1.066147219783541E+019
+  1.062978555401037E+019
+  1.057640396986394E+019
+  1.049040547983917E+019
+  1.035938892281868E+019
+  1.017017969294261E+019
+  9.909829628338229E+018
+  9.566908275699929E+018
+  9.133039496437629E+018
+  8.604568557375620E+018
+  7.984153723767413E+018
+  7.281980430848291E+018
+  6.516231893196943E+018
+  5.712469902100085E+018
+  4.901730254831642E+018
+  4.117425632459085E+018
+  3.391519086337580E+018
+  2.749602313650565E+018
+  2.204181085200053E+018
+  1.754149713678308E+018
+  1.390440378097039E+018
+  1.100752026164004E+018
+  8.723275480778395E+017
+  6.933937440578022E+017
+  5.537700715073032E+017
+  4.450046437960084E+017
+  3.602683878866662E+017
+  2.941453577337178E+017
+  2.423957402035476E+017
+  2.017301997219416E+017
+  1.696122665086081E+017
+  1.440935463869063E+017
+  1.236805457362384E+017
+  1.072292971925768E+017
+  9.386319319661210E+016
+  8.290957278298789E+016
+  7.385114049258590E+016
+  6.628894535323685E+016
+  5.991427753075170E+016
+  5.448739539293283E+016
+  4.982146098381976E+016
+  4.577043972940044E+016
+  4.222002053416384E+016
+  3.908084855372086E+016
+  3.628355010082727E+016
+  3.377518435349254E+016
+  3.151689903912970E+016
+  2.948272030895613E+016
+  2.765960116524580E+016
+  2.604913130984686E+016
+  2.467173744265064E+016
+  2.357486880764952E+016
+  2.284769653013730E+016
+  2.264642430005922E+016
+  2.323660692303274E+016
+  2.506208184185592E+016
+  2.885429801255134E+016
+  3.580070655367715E+016
+  4.779547321321147E+016
+  6.779776866249935E+016
+  1.003177901456773E+017
+  1.520308312687035E+017
+  2.324737799687736E+017
+  3.546920797832882E+017
+  5.355650290528630E+017
+  7.953398225761892E+017
+  1.155672719418349E+018
+  1.635283595826995E+018
+  2.243172059530803E+018
+  2.973661131406391E+018
+  3.806320054404920E+018
+  4.708094599772879E+018
+  5.637627152152279E+018
+  6.551162298922625E+018
+  7.408526143242593E+018
+  8.177835238064500E+018
+  8.838163920041356E+018
+  9.380076149979691E+018
+  9.804446066707522E+018
+  1.012023195364538E+019
+  1.034185622053212E+019
+  1.048668102921700E+019
+  1.057286424290109E+019
+  1.061770799030870E+019
+  1.063650214630110E+019
+  1.064181316955031E+019
+  1.064315441875836E+019
+  1.064697532515793E+019
+  1.065690859039267E+019
+  1.067421108986772E+019
+  1.069832719107722E+019
+  1.072749855300694E+019
+  1.075934785524845E+019
+  1.079137757349964E+019
+  1.082134639720219E+019
+  1.084750947896877E+019
+  1.086872912865960E+019
+  1.088447784200234E+019
+  1.089476582726301E+019
+  1.090002845912508E+019
+  1.090100176570849E+019
+  1.089860061719866E+019
+  1.089380887709467E+019
+  1.088759332130217E+019
+  1.088084529368416E+019
+  1.087434518820421E+019
+  3.109422630213405E+020
+  3.109699424331051E+020
+  3.110084382917476E+020
+  3.110557933058162E+020
+  3.111074558204107E+020
+  3.111556438554482E+020
+  3.111890752723533E+020
+  3.111931816936834E+020
+  3.111508641408660E+020
+  3.110439006203751E+020
+  3.108549863676003E+020
+  3.105702467983411E+020
+  3.101819883728747E+020
+  3.096913540411846E+020
+  3.091104340903173E+020
+  3.084633091071886E+020
+  3.077854940431936E+020
+  3.071213147598917E+020
+  3.065188920414998E+020
+  3.060226445871894E+020
+  3.056635440784514E+020
+  3.054477264457105E+020
+  3.053444276522271E+020
+  3.052745080972625E+020
+  3.051010084669755E+020
+  3.046232226732569E+020
+  3.035757000413093E+020
+  3.016334484908612E+020
+  2.984244498675346E+020
+  2.935504114726628E+020
+  2.866163588568699E+020
+  2.772690141111125E+020
+  2.652426490932512E+020
+  2.504090866742078E+020
+  2.328258235228241E+020
+  2.127733661119560E+020
+  1.907708813716385E+020
+  1.675597262636161E+020
+  1.440487565653881E+020
+  1.212237872618505E+020
+  1.000345910552017E+020
+  8.124854637708861E+019
+  6.525012483812836E+019
+  5.202219054410325E+019
+  4.131058437386446E+019
+  3.276294094245543E+019
+  2.601070396865101E+019
+  2.071202774951995E+019
+  1.657024375463999E+019
+  1.333834646046895E+019
+  1.081626330109871E+019
+  8.844971421198525E+018
+  7.299728346138716E+018
+  6.083571864328861E+018
+  5.121597447426226E+018
+  4.356167624989464E+018
+  3.743028435454584E+018
+  3.248228491580337E+018
+  2.845711008613521E+018
+  2.515451492953522E+018
+  2.242028242031316E+018
+  2.013531027101100E+018
+  1.820731252732998E+018
+  1.656452813751913E+018
+  1.515096293100515E+018
+  1.392280091738185E+018
+  1.284570814708040E+018
+  1.189282123869899E+018
+  1.104326742271514E+018
+  1.028110850513500E+018
+  9.594643166351656E+017
+  8.976047347231244E+017
+  8.421390203191474E+017
+  7.931146069575852E+017
+  7.511449863933138E+017
+  7.176541596858674E+017
+  6.953153089803034E+017
+  6.888055778324155E+017
+  7.060669358352372E+017
+  7.603578352479980E+017
+  8.735032154891776E+017
+  1.080892835001527E+018
+  1.438909948277863E+018
+  2.035524487302235E+018
+  3.004623150452282E+018
+  4.544047236792565E+018
+  6.935933855244423E+018
+  1.056539121446397E+019
+  1.592940230007498E+019
+  2.362206444532589E+019
+  3.427554050198632E+019
+  4.843065245169927E+019
+  6.633630013973292E+019
+  8.780460383307833E+019
+  1.122116034845328E+020
+  1.385636262698654E+020
+  1.656280732143136E+020
+  1.921099843230822E+020
+  2.168292352877965E+020
+  2.388586721605366E+020
+  2.576008316201669E+020
+  2.728010933983731E+020
+  2.845103669779641E+020
+  2.930173183012691E+020
+  2.987695506259276E+020
+  3.022981598590435E+020
+  3.041539415253275E+020
+  3.048584265906569E+020
+  3.048697154241981E+020
+  3.045616018406583E+020
+  3.042140984329283E+020
+  3.040135288466671E+020
+  3.040603975203676E+020
+  3.043831190475050E+020
+  3.049554530301436E+020
+  3.057153293947902E+020
+  3.065828398250884E+020
+  3.074755825495028E+020
+  3.083202048285509E+020
+  3.090597159139101E+020
+  3.096567784471439E+020
+  3.100936609066174E+020
+  3.103698466992097E+020
+  3.104983905517295E+020
+  3.105018930511282E+020
+  3.104085642439663E+020
+  3.102486770910181E+020
+  3.100517725506429E+020
+  3.098447469827928E+020
+  3.096506928877356E+020
+  2.421279843927037E+022
+  2.420785775452760E+022
+  2.420854372216651E+022
+  2.421619301052004E+022
+  2.423156562099645E+022
+  2.425458577987461E+022
+  2.428412957287034E+022
+  2.431789342729600E+022
+  2.435237317383290E+022
+  2.438298465841688E+022
+  2.440434141741164E+022
+  2.441068591662007E+022
+  2.439645443023976E+022
+  2.435693541267556E+022
+  2.428895839639278E+022
+  2.419153070660541E+022
+  2.406632618006611E+022
+  2.391792607482547E+022
+  2.375372083448396E+022
+  2.358340561969582E+022
+  2.341804340697376E+022
+  2.326872389895421E+022
+  2.314490741667709E+022
+  2.305260055636953E+022
+  2.299255456005557E+022
+  2.295870067718489E+022
+  2.293703732637243E+022
+  2.290516588561704E+022
+  2.283264362704546E+022
+  2.268229025500479E+022
+  2.241254696626566E+022
+  2.198092949790822E+022
+  2.134851388400499E+022
+  2.048521888318873E+022
+  1.937539097899007E+022
+  1.802288330967089E+022
+  1.645453756521851E+022
+  1.472088263926462E+022
+  1.289312788886167E+022
+  1.105624260474599E+022
+  9.298992281063521E+021
+  7.699709037178801E+021
+  6.305530004242267E+021
+  5.127495607966785E+021
+  4.153579937856108E+021
+  3.360616607568167E+021
+  2.721734487179560E+021
+  2.210550938710119E+021
+  1.803245006478444E+021
+  1.479351140770374E+021
+  1.221840964051168E+021
+  1.016849300465641E+021
+  8.532542548918501E+020
+  7.222267724190199E+020
+  6.168077687771219E+020
+  5.315377895421810E+020
+  4.621459749705802E+020
+  4.052958465703661E+020
+  3.583813360438498E+020
+  3.193652304780530E+020
+  2.866524038705332E+020
+  2.589910338478109E+020
+  2.353960335448886E+020
+  2.150899547716336E+020
+  1.974575495565480E+020
+  1.820109793700388E+020
+  1.683633294531693E+020
+  1.562086315891185E+020
+  1.453070478254618E+020
+  1.354742576272780E+020
+  1.265744713711614E+020
+  1.185169293232953E+020
+  1.112563269107802E+020
+  1.047984626154922E+020
+  9.921372096182308E+019
+  9.466304529553226E+019
+  9.144417970710212E+019
+  9.007060157869223E+019
+  9.140217413156299E+019
+  9.685541393675790E+019
+  1.087321684662848E+020
+  1.307170246753061E+020
+  1.686022078560326E+020
+  2.312964223414941E+020
+  3.321474189253780E+020
+  4.905357431225729E+020
+  7.335502220933140E+020
+  1.097302632318185E+021
+  1.627058938096648E+021
+  2.374874398312629E+021
+  3.392916604376391E+021
+  4.720379208241962E+021
+  6.364643550142170E+021
+  8.289546820683656E+021
+  1.041880550569700E+022
+  1.264589572850550E+022
+  1.484945321921445E+022
+  1.691162367165693E+022
+  1.873468135322619E+022
+  2.025231690075166E+022
+  2.143406441115051E+022
+  2.228339938488904E+022
+  2.283137010088416E+022
+  2.312802154127118E+022
+  2.323354966169971E+022
+  2.321046708638307E+022
+  2.311740249851370E+022
+  2.300467976849061E+022
+  2.291156700781508E+022
+  2.286499613430970E+022
+  2.287954655179926E+022
+  2.295849280568550E+022
+  2.309569979058371E+022
+  2.327810829750051E+022
+  2.348850920637650E+022
+  2.370828444612901E+022
+  2.391981736679259E+022
+  2.410834757564661E+022
+  2.426315006555554E+022
+  2.437802896351628E+022
+  2.445120792408045E+022
+  2.448476005520405E+022
+  2.448374929432598E+022
+  2.445525167836032E+022
+  2.440738795221803E+022
+  2.434844649904971E+022
+  2.428614549562981E+022
+  2.422707718406827E+022
+  2.417635242899698E+022
+  2.413743787253983E+022
+  8.246414542491829E+020
+  8.244831603887145E+020
+  8.245089236626988E+020
+  8.247620284845455E+020
+  8.252667344864233E+020
+  8.260197583522316E+020
+  8.269833033014747E+020
+  8.280807569612142E+020
+  8.291960309757354E+020
+  8.301775648506743E+020
+  8.308475014203427E+020
+  8.310159096596230E+020
+  8.304993909503019E+020
+  8.291427384296188E+020
+  8.268415649899415E+020
+  8.235631648131850E+020
+  8.193624441443941E+020
+  8.143896294280087E+020
+  8.088867458617828E+020
+  8.031706658826309E+020
+  7.976018834432948E+020
+  7.925399735223193E+020
+  7.882887125144985E+020
+  7.850357400080127E+020
+  7.827931018140128E+020
+  7.813457849364743E+020
+  7.802153742089376E+020
+  7.786453696610232E+020
+  7.756137717881723E+020
+  7.698774806163284E+020
+  7.600517961940877E+020
+  7.447263639218323E+020
+  7.226154307312528E+020
+  6.927343864522761E+020
+  6.545859042114800E+020
+  6.083284895453478E+020
+  5.548908921225315E+020
+  4.959928130251617E+020
+  4.340413866922906E+020
+  3.718969804484567E+020
+  3.125380199065100E+020
+  2.585839623082327E+020
+  2.116006416902413E+020
+  1.719398921124741E+020
+  1.391804657086737E+020
+  1.125299956523482E+020
+  9.107497739622905E+019
+  7.392127302676929E+019
+  6.026319884587228E+019
+  4.940962020929756E+019
+  4.078620155392129E+019
+  3.392580445084744E+019
+  2.845407889536827E+019
+  2.407411153937992E+019
+  2.055206524138082E+019
+  1.770463229125318E+019
+  1.538851552415395E+019
+  1.349184337160802E+019
+  1.192728997201010E+019
+  1.062663174690509E+019
+  9.536480109516724E+018
+  8.614959053705547E+018
+  7.829131909111874E+018
+  7.153016656665755E+018
+  6.566060912436236E+018
+  6.051974933438648E+018
+  5.597843639987866E+018
+  5.193457116078303E+018
+  4.830814218971426E+018
+  4.503767074900461E+018
+  4.207787032583644E+018
+  3.939847284432183E+018
+  3.698436852333089E+018
+  3.483749274816858E+018
+  3.298133386201277E+018
+  3.146961951336132E+018
+  3.040178582283572E+018
+  2.994938964225382E+018
+  3.039984125784172E+018
+  3.222681356166418E+018
+  3.620035372044592E+018
+  4.355361944109108E+018
+  5.622604856094240E+018
+  7.720209055339124E+018
+  1.109558231590198E+019
+  1.639876928799912E+019
+  2.453905162839217E+019
+  3.672970317230795E+019
+  5.449335394957010E+019
+  7.958388590659124E+019
+  1.137637083505315E+020
+  1.583654996144085E+020
+  2.136595110866368E+020
+  2.784571460451125E+020
+  3.502216610451599E+020
+  4.253952632709929E+020
+  4.999121677230022E+020
+  5.698123987343524E+020
+  6.317996834697179E+020
+  6.836224407394223E+020
+  7.242257940061465E+020
+  7.536915455196852E+020
+  7.730278632351856E+020
+  7.838840600602153E+020
+  7.882553903993684E+020
+  7.882209774991336E+020
+  7.857359699852304E+020
+  7.824830316351839E+020
+  7.797796150406304E+020
+  7.785343896995138E+020
+  7.792459126301061E+020
+  7.820368275763440E+020
+  7.867163513597505E+020
+  7.928624724110543E+020
+  7.999138278012876E+020
+  8.072605662385924E+020
+  8.143243232143545E+020
+  8.206198381978975E+020
+  8.257942186502619E+020
+  8.296435175784929E+020
+  8.321093282803373E+020
+  8.332601176108591E+020
+  8.332629882502848E+020
+  8.323514534268574E+020
+  8.307935784472233E+020
+  8.288630933484009E+020
+  8.268150870721453E+020
+  8.248677091448876E+020
+  8.231904762678689E+020
+  8.218989120124841E+020
+  8.487936892750347E+019
+  8.486551626730707E+019
+  8.486896529004057E+019
+  8.489365913349947E+019
+  8.494171113562640E+019
+  8.501260016275713E+019
+  8.510251909916430E+019
+  8.520398329140457E+019
+  8.530579047175481E+019
+  8.539342970534868E+019
+  8.544998570718211E+019
+  8.545752259978496E+019
+  8.539887925637058E+019
+  8.525974406504586E+019
+  8.503080406055104E+019
+  8.470970119115991E+019
+  8.430248862140632E+019
+  8.382426991712336E+019
+  8.329873427181609E+019
+  8.275638201133913E+019
+  8.223136886103402E+019
+  8.175707440430937E+019
+  8.136069656407397E+019
+  8.105735815623313E+019
+  8.084435137386448E+019
+  8.069621848400604E+019
+  8.056136675761670E+019
+  8.036085720198006E+019
+  7.998991611971720E+019
+  7.932261526180695E+019
+  7.822004118612867E+019
+  7.654207635191507E+019
+  7.416255818937231E+019
+  7.098698183072633E+019
+  6.697103682954257E+019
+  6.213721748746114E+019
+  5.658582671908950E+019
+  5.049642738470424E+019
+  4.411675181240075E+019
+  3.773853964706143E+019
+  3.166342227781496E+019
+  2.615477376315500E+019
+  2.136794765097112E+019
+  1.733494404579867E+019
+  1.400973645403461E+019
+  1.130927900257151E+019
+  9.138887674365863E+018
+  7.406416325438284E+018
+  6.029153392256177E+018
+  4.936356945025900E+018
+  4.069385774561459E+018
+  3.380647765014952E+018
+  2.832079622441260E+018
+  2.393547094868640E+018
+  2.041358538533978E+018
+  1.756972086736727E+018
+  1.525915499925185E+018
+  1.336907091132062E+018
+  1.181152957104281E+018
+  1.051792144722187E+018
+  9.434625505414318E+017
+  8.519635475965459E+017
+  7.739951175435036E+017
+  7.069569545407484E+017
+  6.487943119077074E+017
+  5.978801852661946E+017
+  5.529257612677546E+017
+  5.129129592185567E+017
+  4.770444470913330E+017
+  4.447078549426227E+017
+  4.154522079521352E+017
+  3.889760800432865E+017
+  3.651289302594467E+017
+  3.439299611951006E+017
+  3.256132625993065E+017
+  3.107148724601573E+017
+  3.002279140570395E+017
+  2.958676410859094E+017
+  3.005106037197761E+017
+  3.189023084647612E+017
+  3.587650763562170E+017
+  4.324777717409782E+017
+  5.595294292843700E+017
+  7.699439876040933E+017
+  1.108787495972966E+018
+  1.641629906592037E+018
+  2.460341621398554E+018
+  3.687749605319427E+018
+  5.478382305299078E+018
+  8.010843980567535E+018
+  1.146559369979992E+019
+  1.598085026330843E+019
+  2.158854813456284E+019
+  2.817367279082989E+019
+  3.548450303366851E+019
+  4.316467525985373E+019
+  5.080422407408676E+019
+  5.800120804587498E+019
+  6.441819022080095E+019
+  6.982128838182829E+019
+  7.409636064755255E+019
+  7.724383020875003E+019
+  7.935821862830934E+019
+  8.059990891088078E+019
+  8.116567754484718E+019
+  8.126238069388268E+019
+  8.108597469900777E+019
+  8.080643122834760E+019
+  8.055821845750663E+019
+  8.043569382337200E+019
+  8.049271710759330E+019
+  8.074581237428716E+019
+  8.118015980518441E+019
+  8.175757173470396E+019
+  8.242546589074257E+019
+  8.312578354821102E+019
+  8.380287850718157E+019
+  8.440963636048200E+019
+  8.491142284008571E+019
+  8.528781860464771E+019
+  8.553239605794416E+019
+  8.565099339127890E+019
+  8.565903928894572E+019
+  8.557847448765712E+019
+  8.543469668362581E+019
+  8.525378244127175E+019
+  8.506014321350477E+019
+  8.487475728657170E+019
+  8.471403646576874E+019
+  8.458929874287041E+019
+  7.642467243675025E+019
+  7.641115600052278E+019
+  7.641384823258505E+019
+  7.643650575131936E+019
+  7.648119013284956E+019
+  7.654751363791399E+019
+  7.663202395576082E+019
+  7.672782729906528E+019
+  7.682453563370416E+019
+  7.690862908724450E+019
+  7.696427801400469E+019
+  7.697461231558227E+019
+  7.692337771421005E+019
+  7.679685932277893E+019
+  7.658588551636689E+019
+  7.628766724584666E+019
+  7.590719016315027E+019
+  7.545786625847971E+019
+  7.496117797274034E+019
+  7.444512066597649E+019
+  7.394137135625694E+019
+  7.348127347587591E+019
+  7.309090791583409E+019
+  7.278569084356347E+019
+  7.256506890234243E+019
+  7.240795091399456E+019
+  7.226951670285489E+019
+  7.207999098770340E+019
+  7.174588729541258E+019
+  7.115413181183923E+019
+  7.017936273684002E+019
+  6.869452182497127E+019
+  6.658453449619916E+019
+  6.376233452329311E+019
+  6.018569924038292E+019
+  5.587240879116388E+019
+  5.091040289754689E+019
+  4.545935307971345E+019
+  3.974091469016844E+019
+  3.401713133092898E+019
+  2.855975869647112E+019
+  2.360679894270959E+019
+  1.929936701452900E+019
+  1.566752355778153E+019
+  1.267090320953522E+019
+  1.023558005882026E+019
+  8.276924829762583E+018
+  6.712400998120308E+018
+  5.467815157745302E+018
+  4.479638572156156E+018
+  3.695158273962819E+018
+  3.071556194138426E+018
+  2.574559709916466E+018
+  2.177015058187531E+018
+  1.857558463608932E+018
+  1.599458348481987E+018
+  1.389646718006091E+018
+  1.217929982120824E+018
+  1.076357439838820E+018
+  9.587222617004444E+017
+  8.601707441850127E+017
+  7.768984034125510E+017
+  7.059148212747668E+017
+  6.448624348173129E+017
+  5.918774055352108E+017
+  5.454832270842021E+017
+  5.045098199904638E+017
+  4.680325631038090E+017
+  4.353271062297914E+017
+  4.058370142193142E+017
+  3.791524631196525E+017
+  3.549995441025857E+017
+  3.332415046162968E+017
+  3.138958605073624E+017
+  2.971753180122135E+017
+  2.835666624263544E+017
+  2.739712941071301E+017
+  2.699452639673894E+017
+  2.740968774761811E+017
+  2.907271444219658E+017
+  3.268319630326382E+017
+  3.936207824851283E+017
+  5.087334386952809E+017
+  6.993317209593408E+017
+  1.006163531732026E+018
+  1.488479943444084E+018
+  2.229239756995351E+018
+  3.339263267642570E+018
+  4.957829214481305E+018
+  7.245691465307437E+018
+  1.036491341061367E+019
+  1.443899161988465E+019
+  1.949508496490413E+019
+  2.542754401053909E+019
+  3.200753055603639E+019
+  3.891234664272736E+019
+  4.577181307270519E+019
+  5.222403800358807E+019
+  5.796633899900628E+019
+  6.279025514392080E+019
+  6.659581468386455E+019
+  6.938649943638181E+019
+  7.125045261199381E+019
+  7.233475680666719E+019
+  7.281869288077467E+019
+  7.288992659826880E+019
+  7.272557218359259E+019
+  7.247862140165454E+019
+  7.226942982456629E+019
+  7.218166291157311E+019
+  7.226207366457435E+019
+  7.252350068709290E+019
+  7.295042976520800E+019
+  7.350634449097942E+019
+  7.414196203986156E+019
+  7.480339178810080E+019
+  7.543932810966529E+019
+  7.600660443152982E+019
+  7.647374748570377E+019
+  7.682249927918350E+019
+  7.704754679397222E+019
+  7.715488086030108E+019
+  7.715929369662928E+019
+  7.708151613590636E+019
+  7.694538511386460E+019
+  7.677527382370009E+019
+  7.659392813133772E+019
+  7.642083791143407E+019
+  7.627119656985906E+019
+  7.615542264306300E+019
+  5.295808369082173E+020
+  5.295061475649486E+020
+  5.295332311528705E+020
+  5.296845223699052E+020
+  5.299714755716715E+020
+  5.303898670960895E+020
+  5.309160621313576E+020
+  5.315048829209632E+020
+  5.320896154415945E+020
+  5.325847277784888E+020
+  5.328915549524393E+020
+  5.329068202693251E+020
+  5.325335466762951E+020
+  5.316935215090988E+020
+  5.303400383163136E+020
+  5.284692703567010E+020
+  5.261284033556413E+020
+  5.234186150022643E+020
+  5.204911981182678E+020
+  5.175356440875974E+020
+  5.147593435505021E+020
+  5.123596538262009E+020
+  5.104902811815212E+020
+  5.092250362168616E+020
+  5.085228476684183E+020
+  5.081983293545401E+020
+  5.079021626761226E+020
+  5.071151793772066E+020
+  5.051594693461321E+020
+  5.012292105776056E+020
+  4.944431535212554E+020
+  4.839194575497055E+020
+  4.688713317216828E+020
+  4.487181406558960E+020
+  4.232011260902484E+020
+  3.924863174110767E+020
+  3.572315094125630E+020
+  3.185926632029692E+020
+  2.781512840919587E+020
+  2.377599390101262E+020
+  1.993260380335157E+020
+  1.645085516584622E+020
+  1.342803972025540E+020
+  1.088348880933744E+020
+  8.787355161875576E+019
+  7.086564553371436E+019
+  5.720851793218540E+019
+  4.631696140653485E+019
+  3.766650256807961E+019
+  3.080913607393998E+019
+  2.537390718973139E+019
+  2.106007051914233E+019
+  1.762733566893563E+019
+  1.488565205109950E+019
+  1.268574312626818E+019
+  1.091088917982190E+019
+  9.470072289338661E+018
+  8.292404652681456E+018
+  7.322679597133050E+018
+  6.517862956041794E+018
+  5.844350762422357E+018
+  5.275840075801651E+018
+  4.791684164943800E+018
+  4.375626931804515E+018
+  4.014832590985473E+018
+  3.699144620265973E+018
+  3.420522861839743E+018
+  3.172619715584880E+018
+  2.950466225268315E+018
+  2.750247350776051E+018
+  2.569153918890486E+018
+  2.405308046664542E+018
+  2.257771136366315E+018
+  2.126661568462486E+018
+  2.013436927743928E+018
+  1.921438633063085E+018
+  1.856862828941521E+018
+  1.830419748233092E+018
+  1.860084378994047E+018
+  1.975531120142064E+018
+  2.225080751164408E+018
+  2.686241556444933E+018
+  3.481121652438257E+018
+  4.797966656226648E+018
+  6.919548083931506E+018
+  1.025763733428020E+019
+  1.538971978289196E+019
+  2.308872816716959E+019
+  3.432840499045781E+019
+  5.023621366093949E+019
+  7.195447287662133E+019
+  1.003635347837528E+020
+  1.356783943808062E+020
+  1.771904846569363E+020
+  2.233284129914205E+020
+  2.718560169472691E+020
+  3.201907418106233E+020
+  3.657903419723037E+020
+  4.065092464932542E+020
+  4.408469727751535E+020
+  4.680536424119909E+020
+  4.881012062068138E+020
+  5.015578945329765E+020
+  5.094128594700949E+020
+  5.128920914214192E+020
+  5.132933248151473E+020
+  5.118538361287686E+020
+  5.096548243037626E+020
+  5.075604185855066E+020
+  5.061872683442325E+020
+  5.059004290303604E+020
+  5.068314041853662E+020
+  5.089139414041511E+020
+  5.119324145966758E+020
+  5.155767456684401E+020
+  5.194973868449673E+020
+  5.233543269879575E+020
+  5.268554871910746E+020
+  5.297819372038393E+020
+  5.319995661981714E+020
+  5.334586878438562E+020
+  5.341843105684533E+020
+  5.342604364113437E+020
+  5.338117330108379E+020
+  5.329852029039861E+020
+  5.319334171842999E+020
+  5.308002918351745E+020
+  5.297102967238315E+020
+  5.287614723030625E+020
+  5.280220844349861E+020
+  1.059058859467409E+020
+  1.059025367473026E+020
+  1.059121193017510E+020
+  1.059367553369454E+020
+  1.059769411572062E+020
+  1.060309449927306E+020
+  1.060943762250347E+020
+  1.061600157415905E+020
+  1.062179754248731E+020
+  1.062562652369668E+020
+  1.062617896625250E+020
+  1.062217293884921E+020
+  1.061252158199113E+020
+  1.059651463482949E+020
+  1.057399211455827E+020
+  1.054548303036173E+020
+  1.051227953856131E+020
+  1.047641776799750E+020
+  1.044054152937569E+020
+  1.040763508703914E+020
+  1.038062604119886E+020
+  1.036187773232848E+020
+  1.035260984107322E+020
+  1.035230281568317E+020
+  1.035815346680474E+020
+  1.036465378405662E+020
+  1.036336290643702E+020
+  1.034293522327748E+020
+  1.028945849195453E+020
+  1.018714588466170E+020
+  1.001941254068595E+020
+  9.770343300385474E+019
+  9.426513520139187E+019
+  8.979050295124863E+019
+  8.425716174620846E+019
+  7.772676816597752E+019
+  7.035517179284879E+019
+  6.239060048994102E+019
+  5.415679045009551E+019
+  4.602109467892676E+019
+  3.835196100276279E+019
+  3.146121620939920E+019
+  2.552252587441804E+019
+  2.055750866548333E+019
+  1.649414505306329E+019
+  1.321808575431168E+019
+  1.060384349183554E+019
+  8.531788686692641E+018
+  6.896062662436653E+018
+  5.607144615527057E+018
+  4.591543897045732E+018
+  3.790136807786699E+018
+  3.156020420497846E+018
+  2.652347104806833E+018
+  2.250360003257954E+018
+  1.927712571688011E+018
+  1.667082710188824E+018
+  1.455057151167589E+018
+  1.281248160000472E+018
+  1.137602268365210E+018
+  1.017863803704899E+018
+  9.171611029103124E+017
+  8.316888175794583E+017
+  7.584648660127194E+017
+  6.951450708992796E+017
+  6.398822722697051E+017
+  5.912197583751388E+017
+  5.480113058815059E+017
+  5.093620999998643E+017
+  4.745864862561354E+017
+  4.431800989569937E+017
+  4.148056833489382E+017
+  3.892942377143884E+017
+  3.666664594278481E+017
+  3.471846309733681E+017
+  3.314530984204675E+017
+  3.205978385357891E+017
+  3.165741226387671E+017
+  3.226779791052835E+017
+  3.443736183581735E+017
+  3.905950319490545E+017
+  4.757310533571932E+017
+  6.225458333028186E+017
+  8.662917408501247E+017
+  1.260185254373189E+018
+  1.882151002389963E+018
+  2.842170908547702E+018
+  4.288559198544550E+018
+  6.409904204256436E+018
+  9.427295445451448E+018
+  1.356912756150258E+019
+  1.901915973105274E+019
+  2.583905836402726E+019
+  3.391632763127361E+019
+  4.297149398566514E+019
+  5.259131708020785E+019
+  6.228585759941346E+019
+  7.156049424723387E+019
+  7.998451758417861E+019
+  8.724120417738621E+019
+  9.315188410095477E+019
+  9.767466678098220E+019
+  1.008841854971121E+020
+  1.029408765230141E+020
+  1.040575341628416E+020
+  1.044685636858497E+020
+  1.044048079230380E+020
+  1.040748568346855E+020
+  1.036526060381752E+020
+  1.032703672583596E+020
+  1.030167545385866E+020
+  1.029386016664392E+020
+  1.030461464896491E+020
+  1.033206092130997E+020
+  1.037231493884403E+020
+  1.042041041219870E+020
+  1.047114661526988E+020
+  1.051977775130519E+020
+  1.056249486527286E+020
+  1.059668774799684E+020
+  1.062100555108133E+020
+  1.063525695249704E+020
+  1.064020321244387E+020
+  1.063729904716255E+020
+  1.062842494535233E+020
+  1.061563657446683E+020
+  1.060094757901116E+020
+  1.058616182789720E+020
+  1.057276178569081E+020
+  1.056184953904525E+020
+  1.512893898451842E+018
+  1.513236261659376E+018
+  1.513481409357772E+018
+  1.513574463585911E+018
+  1.513459875652706E+018
+  1.513084711398229E+018
+  1.512403052510272E+018
+  1.511381304611129E+018
+  1.510003900953840E+018
+  1.508279257429217E+018
+  1.506245401223019E+018
+  1.503974269837174E+018
+  1.501573655938221E+018
+  1.499185707534813E+018
+  1.496980770915407E+018
+  1.495145432155945E+018
+  1.493863945837567E+018
+  1.493292788805549E+018
+  1.493528814747663E+018
+  1.494572394778517E+018
+  1.496287932935353E+018
+  1.498365091866346E+018
+  1.500284775811317E+018
+  1.501294261747855E+018
+  1.500395811449672E+018
+  1.496352728038143E+018
+  1.487716333900933E+018
+  1.472876950996634E+018
+  1.450141725769472E+018
+  1.417841796920607E+018
+  1.374470151967181E+018
+  1.318848512626076E+018
+  1.250315729131070E+018
+  1.168921092635131E+018
+  1.075594617034949E+018
+  9.722554777897651E+017
+  8.618143909002894E+017
+  7.480321358043323E+017
+  6.352194405452408E+017
+  5.278020815977863E+017
+  4.298204504704458E+017
+  3.443231915106148E+017
+  2.725759196606159E+017
+  2.140837611391160E+017
+  1.673713649566072E+017
+  1.306099275789136E+017
+  1.019745918337889E+017
+  7.982125779109936E+016
+  6.275375259054553E+016
+  4.963049386420807E+016
+  3.954164600689210E+016
+  3.177486824498658E+016
+  2.577938605416573E+016
+  2.113306043263716E+016
+  1.751426864680741E+016
+  1.467890438657391E+016
+  1.244208910173640E+016
+  1.066390796228528E+016
+  9.238434389377656E+015
+  8.085365744233898E+015
+  7.143692618169861E+015
+  6.366930772358489E+015
+  5.719542459793989E+015
+  5.174257020504652E+015
+  4.710068531807009E+015
+  4.310742252902512E+015
+  3.963703721474920E+015
+  3.659216949913806E+015
+  3.389783583299162E+015
+  3.149715504716086E+015
+  2.934851724767779E+015
+  2.742409373640181E+015
+  2.570981950510262E+015
+  2.420730904498896E+015
+  2.293866805760142E+015
+  2.195595126345666E+015
+  2.135825149764236E+015
+  2.132130593113882E+015
+  2.214734071776040E+015
+  2.434692572100032E+015
+  2.877005526825714E+015
+  3.681034033840496E+015
+  5.071310513118013E+015
+  7.402272887486001E+015
+  1.122013845479610E+016
+  1.734308047746829E+016
+  2.695558411743411E+016
+  4.170232581985937E+016
+  6.374902572467311E+016
+  9.575134123227627E+016
+  1.406400053035576E+017
+  2.010997279255612E+017
+  2.787146377029045E+017
+  3.732910369699924E+017
+  4.827528387906957E+017
+  6.033069908323247E+017
+  7.298997901403026E+017
+  8.569110320728835E+017
+  9.789079999998170E+017
+  1.091286326292906E+018
+  1.190684503111257E+018
+  1.275139517840938E+018
+  1.344019229830257E+018
+  1.397804493628506E+018
+  1.437799989085890E+018
+  1.465837476502580E+018
+  1.484011691012975E+018
+  1.494467303784476E+018
+  1.499240245465683E+018
+  1.500148774651777E+018
+  1.498727069593495E+018
+  1.496194260015227E+018
+  1.493452630114373E+018
+  1.491109100682377E+018
+  1.489513850058400E+018
+  1.488809486557224E+018
+  1.488984145198828E+018
+  1.489922628173134E+018
+  1.491451177765294E+018
+  1.493373252146378E+018
+  1.495495365762257E+018
+  1.497643547029107E+018
+  1.499672260989333E+018
+  1.501468362159628E+018
+  1.502952173012157E+018
+  1.504076573381704E+018
+  1.504824732921527E+018
+  1.505207702080999E+018
+  1.505262153355785E+018
+  1.505047538066315E+018
+  4.289919749023478E+020
+  4.290214337643921E+020
+  4.290769666070055E+020
+  4.291585770040134E+020
+  4.292616902377827E+020
+  4.293759542928787E+020
+  4.294846828932448E+020
+  4.295651685420994E+020
+  4.295899966459492E+020
+  4.295295433232980E+020
+  4.293556333851611E+020
+  4.290461020933623E+020
+  4.285898579532401E+020
+  4.279918659958627E+020
+  4.272772728377863E+020
+  4.264937630680796E+020
+  4.257112135635979E+020
+  4.250178112717438E+020
+  4.245120415325278E+020
+  4.242903558503269E+020
+  4.244308751643155E+020
+  4.249741164348346E+020
+  4.259023505179111E+020
+  4.271197007415691E+020
+  4.284353877959214E+020
+  4.295525819352059E+020
+  4.300651704218002E+020
+  4.294644747610640E+020
+  4.271576512410959E+020
+  4.224991944256322E+020
+  4.148364947516478E+020
+  4.035694597318371E+020
+  3.882223832616114E+020
+  3.685232296245176E+020
+  3.444813400405689E+020
+  3.164499798633168E+020
+  2.851567496680444E+020
+  2.516851250398620E+020
+  2.173965900431516E+020
+  1.837956161918085E+020
+  1.523568644745054E+020
+  1.242976830407582E+020
+  1.002633765668776E+020
+  8.028670625265112E+019
+  6.403094820580867E+019
+  5.099891269493795E+019
+  4.065831834991284E+019
+  3.250880584096381E+019
+  2.611202621618817E+019
+  2.110028190660898E+019
+  1.717385569460666E+019
+  1.409319051926121E+019
+  1.166941210767734E+019
+  9.755013907733703E+018
+  8.235538475016917E+018
+  7.022541973790515E+018
+  6.047844588554115E+018
+  5.258938214966942E+018
+  4.615375926613242E+018
+  4.085964715061322E+018
+  3.646600152241112E+018
+  3.278605886017115E+018
+  2.967465727584295E+018
+  2.701858668652093E+018
+  2.472926488776414E+018
+  2.273719557017743E+018
+  2.098779268322623E+018
+  1.943825754536887E+018
+  1.805527677565871E+018
+  1.681337767562333E+018
+  1.569384161840787E+018
+  1.468414581403393E+018
+  1.377799350957605E+018
+  1.297612212567023E+018
+  1.228827707031134E+018
+  1.173704796084467E+018
+  1.136474169565251E+018
+  1.124518754053445E+018
+  1.150341706749665E+018
+  1.234760847854286E+018
+  1.411954068345478E+018
+  1.737191570651516E+018
+  2.298278824988853E+018
+  3.231788356220385E+018
+  4.744869818882113E+018
+  7.142449425422399E+018
+  1.085745822189968E+019
+  1.647775233594585E+019
+  2.475707701866004E+019
+  3.658875086524537E+019
+  5.291091025008456E+019
+  7.450469407253393E+019
+  1.016867966425282E+020
+  1.340937108064678E+020
+  1.706938893585702E+020
+  2.099020921252967E+020
+  2.497913003157359E+020
+  2.883707258200363E+020
+  3.238590292657571E+020
+  3.548920669160666E+020
+  3.806325733446791E+020
+  4.007807973226026E+020
+  4.155082622925063E+020
+  4.253466331299978E+020
+  4.310618878310440E+020
+  4.335356811180419E+020
+  4.336660579764098E+020
+  4.322918475398571E+020
+  4.301403175982921E+020
+  4.277956189387991E+020
+  4.256851302902143E+020
+  4.240809688641128E+020
+  4.231139746822457E+020
+  4.227971878792228E+020
+  4.230553619590633E+020
+  4.237567166573340E+020
+  4.247432307117813E+020
+  4.258564244092789E+020
+  4.269566634824804E+020
+  4.279352449301824E+020
+  4.287196195639425E+020
+  4.292729243289308E+020
+  4.295895107739387E+020
+  4.296882899129422E+020
+  4.296053654514949E+020
+  4.293868178174750E+020
+  4.290822083045412E+020
+  4.287394002619725E+020
+  4.284009400344495E+020
+  4.281018645216747E+020
+  5.159453739327260E+021
+  5.158544633043969E+021
+  5.158731823066399E+021
+  5.160267735874836E+021
+  5.163290209268701E+021
+  5.167771400326961E+021
+  5.173475843758038E+021
+  5.179934292671157E+021
+  5.186439105897287E+021
+  5.192067342429077E+021
+  5.195734625796240E+021
+  5.196279081939064E+021
+  5.192571499945169E+021
+  5.183643917802440E+021
+  5.168824334699375E+021
+  5.147861365830905E+021
+  5.121020079125935E+021
+  5.089129444350335E+021
+  5.053563446745243E+021
+  5.016142636417831E+021
+  4.978950888431157E+021
+  4.944072841560331E+021
+  4.913269483966634E+021
+  4.887620745155772E+021
+  4.867172750329544E+021
+  4.850632139419795E+021
+  4.835150147912873E+021
+  4.816235798468940E+021
+  4.787832111610412E+021
+  4.742582915185345E+021
+  4.672310155371450E+021
+  4.568709634580059E+021
+  4.424251790405587E+021
+  4.233238333738311E+021
+  3.992913354195043E+021
+  3.704464626289366E+021
+  3.373695402236075E+021
+  3.011130099553488E+021
+  2.631373157494346E+021
+  2.251686097847972E+021
+  1.889965270189364E+021
+  1.561873746302341E+021
+  1.276671807204259E+021
+  1.036286065978779E+021
+  8.379996516578169E+020
+  6.768896194535246E+020
+  5.473361149075265E+020
+  4.438658420589155E+020
+  3.615629756383041E+020
+  2.962207872551832E+020
+  2.443502600975364E+020
+  2.031182445151023E+020
+  1.702575943686701E+020
+  1.439724303331725E+020
+  1.228500191979484E+020
+  1.057840673911076E+020
+  9.191058794012076E+019
+  8.055567182203064E+019
+  7.119370773369946E+019
+  6.341437629212885E+019
+  5.689681068823414E+019
+  5.138950297388976E+019
+  4.669475788995218E+019
+  4.265671382463261E+019
+  3.915214590654564E+019
+  3.608343338572760E+019
+  3.337321187113225E+019
+  3.096034354973173E+019
+  2.879693071378932E+019
+  2.684617760240775E+019
+  2.508098290679992E+019
+  2.348323356954902E+019
+  2.204388784062448E+019
+  2.076410784638115E+019
+  1.965796688492682E+019
+  1.875766798480880E+019
+  1.812284029566680E+019
+  1.785641743478390E+019
+  1.813093953646111E+019
+  1.923092114260261E+019
+  2.161915153977642E+019
+  2.603716802956089E+019
+  3.365192930497033E+019
+  4.626038349883545E+019
+  6.655843265743015E+019
+  9.846642548912572E+019
+  1.474738601817842E+020
+  2.209148951529935E+020
+  3.280090622025085E+020
+  4.794012016303037E+020
+  6.858300839394775E+020
+  9.554934829559691E+020
+  1.290228889334505E+021
+  1.683101829234542E+021
+  2.119041552157866E+021
+  2.576777858384511E+021
+  3.031903198707557E+021
+  3.460554344454720E+021
+  3.842773168396003E+021
+  4.164815997953232E+021
+  4.420092644588140E+021
+  4.608830765519323E+021
+  4.736832267214085E+021
+  4.813772877806702E+021
+  4.851435427516743E+021
+  4.862137641267565E+021
+  4.857483301716833E+021
+  4.847469149646196E+021
+  4.839927159459699E+021
+  4.840262564836396E+021
+  4.851445750924596E+021
+  4.874217050617457E+021
+  4.907460337902113E+021
+  4.948693545558679E+021
+  4.994615828265845E+021
+  5.041647490929168E+021
+  5.086403989568549E+021
+  5.126059879060443E+021
+  5.158579414877625E+021
+  5.182812307892837E+021
+  5.198471063203603E+021
+  5.206018165138865E+021
+  5.206497050601437E+021
+  5.201340156021972E+021
+  5.192179880026048E+021
+  5.180677649188074E+021
+  5.168380347872877E+021
+  5.156612514095993E+021
+  5.146407716890826E+021
+  5.138477216583188E+021
+  1.815726493191597E+019
+  1.816218430963973E+019
+  1.816540608773674E+019
+  1.816610490322587E+019
+  1.816348858709631E+019
+  1.815686150012862E+019
+  1.814569968831175E+019
+  1.812973265584121E+019
+  1.810902280679396E+019
+  1.808403825462307E+019
+  1.805571002661345E+019
+  1.802546035684070E+019
+  1.799518957049725E+019
+  1.796720959116253E+019
+  1.794411212473757E+019
+  1.792856194139179E+019
+  1.792301112866339E+019
+  1.792933792711968E+019
+  1.794842317238812E+019
+  1.797968796057030E+019
+  1.802062680002530E+019
+  1.806637937025503E+019
+  1.810938918443735E+019
+  1.813919783999418E+019
+  1.814241940897222E+019
+  1.810293263175626E+019
+  1.800232170925752E+019
+  1.782059219067429E+019
+  1.753718710961293E+019
+  1.713232623709732E+019
+  1.658867888359595E+019
+  1.589334516721212E+019
+  1.504005044564292E+019
+  1.403134966137006E+019
+  1.288050559319614E+019
+  1.161258241810046E+019
+  1.026424331551633E+019
+  8.881831930972049E+018
+  7.517603929278749E+018
+  6.224437744673281E+018
+  5.049881620269552E+018
+  4.029087927878057E+018
+  3.175745465481762E+018
+  2.482694776927234E+018
+  1.931348736526645E+018
+  1.499174243320556E+018
+  1.163917938412438E+018
+  9.056652229313527E+017
+  7.075929331342879E+017
+  5.560077587905452E+017
+  4.400417307011819E+017
+  3.512200757459521E+017
+  2.830160922482928E+017
+  2.304472203712099E+017
+  1.897325067593750E+017
+  1.580139611870170E+017
+  1.331360321570861E+017
+  1.134743494708470E+017
+  9.780448545941648E+016
+  8.520233279086213E+016
+  7.496899460433216E+016
+  6.657443012269147E+016
+  5.961531679099226E+016
+  5.378361758852058E+016
+  4.884317526124643E+016
+  4.461231341504484E+016
+  4.095093553951029E+016
+  3.775100670758836E+016
+  3.492960820569830E+016
+  3.242400160644544E+016
+  3.018835569522616E+016
+  2.819201112143424E+016
+  2.641942682680971E+016
+  2.487232962574637E+016
+  2.357516268301037E+016
+  2.258583160046120E+016
+  2.201516785893977E+016
+  2.206072744823964E+016
+  2.306384289319071E+016
+  2.560359960411237E+016
+  3.064786350784042E+016
+  3.978951698053244E+016
+  5.560460812941174E+016
+  8.217526486580856E+016
+  1.258177775711971E+017
+  1.960339653879637E+017
+  3.066439245077366E+017
+  4.769360734266844E+017
+  7.324595381392068E+017
+  1.104768449902135E+018
+  1.629027784201003E+018
+  2.338004836007510E+018
+  3.252044637371972E+018
+  4.370912502262596E+018
+  5.672184871738983E+018
+  7.112777180946314E+018
+  8.633947414220392E+018
+  1.016924522049325E+019
+  1.165336784123194E+019
+  1.302987780981719E+019
+  1.425638832844899E+019
+  1.530675065043468E+019
+  1.617058926770171E+019
+  1.685099827995694E+019
+  1.736131245906518E+019
+  1.772170893085946E+019
+  1.795612880940098E+019
+  1.808975214426716E+019
+  1.814707693641483E+019
+  1.815055480636185E+019
+  1.811970241305911E+019
+  1.807060955018126E+019
+  1.801577694158721E+019
+  1.796422446308873E+019
+  1.792180994127441E+019
+  1.789169363088607E+019
+  1.787488069850643E+019
+  1.787077847784343E+019
+  1.787771724612213E+019
+  1.789339925713309E+019
+  1.791525706938888E+019
+  1.794071806562104E+019
+  1.796738746020914E+019
+  1.799317202070767E+019
+  1.801636328865636E+019
+  1.803568692356328E+019
+  1.805032353038072E+019
+  1.805991427931042E+019
+  1.806455414639516E+019
+  1.806476391784999E+019
+  7.561286648622709E+020
+  7.562361098781454E+020
+  7.563351630481358E+020
+  7.564113625535336E+020
+  7.564468932654346E+020
+  7.564203389098050E+020
+  7.563070449357686E+020
+  7.560801861594038E+020
+  7.557125001039428E+020
+  7.551788180568774E+020
+  7.544592793574639E+020
+  7.535428590539405E+020
+  7.524307617277015E+020
+  7.511391102985707E+020
+  7.497001909409299E+020
+  7.481614332229308E+020
+  7.465813518649423E+020
+  7.450218432293008E+020
+  7.435365238919732E+020
+  7.421552360636394E+020
+  7.408654065218336E+020
+  7.395915647592104E+020
+  7.381749045655348E+020
+  7.363552148074128E+020
+  7.337577457986627E+020
+  7.298876094884849E+020
+  7.241341884815745E+020
+  7.157878385337141E+020
+  7.040709642294065E+020
+  6.881852484404300E+020
+  6.673761365293854E+020
+  6.410141432340201E+020
+  6.086896671534623E+020
+  5.703135242694957E+020
+  5.262096857008153E+020
+  4.771809650764945E+020
+  4.245250272629576E+020
+  3.699803153140655E+020
+  3.155919777664740E+020
+  2.635066014510551E+020
+  2.157275623123437E+020
+  1.738088225033113E+020
+  1.384448575585077E+020
+  1.094607136928317E+020
+  8.618719260907300E+019
+  6.776760377855315E+019
+  5.333464094473730E+019
+  4.209956347579528E+019
+  3.338766601937832E+019
+  2.664375780101460E+019
+  2.142272928589348E+019
+  1.737408639972172E+019
+  1.422528520439571E+019
+  1.176623635315321E+019
+  9.835942784038281E+018
+  8.311484779461351E+018
+  7.099202134650968E+018
+  6.127774238094248E+018
+  5.342864181050675E+018
+  4.703013671714044E+018
+  4.176518464221814E+018
+  3.739061909591754E+018
+  3.371929027707906E+018
+  3.060662132540202E+018
+  2.794050907075165E+018
+  2.563375371169227E+018
+  2.361840277573346E+018
+  2.184155122147728E+018
+  2.026226246060697E+018
+  1.884937583469005E+018
+  1.758005714926980E+018
+  1.643904493377855E+018
+  1.541866523165876E+018
+  1.451985879443688E+018
+  1.375472594409035E+018
+  1.315150367567095E+018
+  1.276352811283531E+018
+  1.268471105332466E+018
+  1.307550129420226E+018
+  1.420533684818145E+018
+  1.652028721608864E+018
+  2.074780766969200E+018
+  2.805372066585780E+018
+  4.026831933554943E+018
+  6.019608371783489E+018
+  9.201209229169421E+018
+  1.417204414247347E+019
+  2.175962776078524E+019
+  3.304438288967619E+019
+  4.933740907192258E+019
+  7.206496320616305E+019
+  1.025005319951056E+020
+  1.413358879822375E+020
+  1.883546400905502E+020
+  2.424041178442379E+020
+  3.015042648775060E+020
+  3.630980787534371E+020
+  4.244112371094296E+020
+  4.828286002654684E+020
+  5.362019841921198E+020
+  5.830367291960710E+020
+  6.225461734393093E+020
+  6.545964921335834E+020
+  6.795812405539002E+020
+  6.982659997649868E+020
+  7.116345499143070E+020
+  7.207556474532653E+020
+  7.266785871085906E+020
+  7.303584466778594E+020
+  7.326082447339891E+020
+  7.340740691312154E+020
+  7.352292414657964E+020
+  7.363837984419654E+020
+  7.377055492945415E+020
+  7.392487243781003E+020
+  7.409860478869799E+020
+  7.428402636931950E+020
+  7.447118622632093E+020
+  7.465008810125457E+020
+  7.481218791585860E+020
+  7.495122495437569E+020
+  7.506348501357606E+020
+  7.514765470935204E+020
+  7.520445086815454E+020
+  7.523616953776948E+020
+  7.524622128225634E+020
+  7.523869428480348E+020
+  7.521801106882291E+020
+  7.518869558103414E+020
+  7.515521212073851E+020
+  1.948564897441925E+020
+  1.948855576860473E+020
+  1.949109630573087E+020
+  1.949285921674554E+020
+  1.949335989734545E+020
+  1.949203898800053E+020
+  1.948827501016034E+020
+  1.948141271841235E+020
+  1.947080542437836E+020
+  1.945587420711327E+020
+  1.943618092077218E+020
+  1.941150578531453E+020
+  1.938191887953241E+020
+  1.934783220613113E+020
+  1.931001518896201E+020
+  1.926955475618738E+020
+  1.922774259488681E+020
+  1.918587638360857E+020
+  1.914496894924140E+020
+  1.910536971942585E+020
+  1.906631610363636E+020
+  1.902544692736376E+020
+  1.897832346568248E+020
+  1.891801376097694E+020
+  1.883480136828709E+020
+  1.871608039236464E+020
+  1.854649601806483E+020
+  1.830838573821631E+020
+  1.798257217115799E+020
+  1.754955137835746E+020
+  1.699110348041264E+020
+  1.629231324181439E+020
+  1.544391505797772E+020
+  1.444476414736403E+020
+  1.330409312805881E+020
+  1.204307236620360E+020
+  1.069511329948487E+020
+  9.304416375597339E+019
+  7.922533582542099E+019
+  6.603185939935287E+019
+  5.396147141588525E+019
+  4.339644762727127E+019
+  3.450233672517908E+019
+  2.722719800414237E+019
+  2.139656647026103E+019
+  1.679056070067747E+019
+  1.318808926839561E+019
+  1.038894048269437E+019
+  8.222388159340996E+018
+  6.548312074274383E+018
+  5.254630293212653E+018
+  4.253269594702403E+018
+  3.475878325434299E+018
+  2.869866478537033E+018
+  2.395005858229193E+018
+  2.020636787536503E+018
+  1.723438093428058E+018
+  1.485681235978517E+018
+  1.293881945503155E+018
+  1.137768816598917E+018
+  1.009499731720802E+018
+  9.030694627220787E+017
+  8.138633529210289E+017
+  7.383218876451830E+017
+  6.736890946251625E+017
+  6.178242129181276E+017
+  5.690611636397058E+017
+  5.261043138270359E+017
+  4.879521251873642E+017
+  4.538428127043642E+017
+  4.232184176362605E+017
+  3.957060920641629E+017
+  3.711183721928876E+017
+  3.494784524119021E+017
+  3.310829406334449E+017
+  3.166247117530977E+017
+  3.074143113834750E+017
+  3.057626034628856E+017
+  3.156232730933319E+017
+  3.436446605325162E+017
+  4.008479983685059E+017
+  5.052305669680039E+017
+  6.856740709473885E+017
+  9.875867183171672E+017
+  1.480653444716655E+018
+  2.268792258047714E+018
+  3.501730933030249E+018
+  5.386284449812615E+018
+  8.193182730254601E+018
+  1.225205723160962E+019
+  1.792322710889023E+019
+  2.553133708478173E+019
+  3.525830840029984E+019
+  4.706093882826299E+019
+  6.066223968032859E+019
+  7.557675529562572E+019
+  9.117139811062268E+019
+  1.067541475249667E+020
+  1.216678187036926E+020
+  1.353675058875045E+020
+  1.474683515557680E+020
+  1.577605773304834E+020
+  1.661970728025465E+020
+  1.728631660732412E+020
+  1.779385939837123E+020
+  1.816595465784839E+020
+  1.842856238865433E+020
+  1.860738251583393E+020
+  1.872598490460546E+020
+  1.880460377317137E+020
+  1.885949831121507E+020
+  1.890278065398133E+020
+  1.894261826354203E+020
+  1.898371861601457E+020
+  1.902799959215690E+020
+  1.907534558648220E+020
+  1.912435458793905E+020
+  1.917299885947646E+020
+  1.921914857980290E+020
+  1.926093673023245E+020
+  1.929696828493567E+020
+  1.932639602000819E+020
+  1.934890002272102E+020
+  1.936461432526348E+020
+  1.937403452774528E+020
+  1.937792104841210E+020
+  1.937720693342757E+020
+  1.937292599083327E+020
+  1.936616476266454E+020
+  1.935802792396420E+020
+  4.490864746878036E+020
+  4.491168010263430E+020
+  4.491719318128507E+020
+  4.492515165881521E+020
+  4.493506929864796E+020
+  4.494588474460349E+020
+  4.495589785420450E+020
+  4.496278835261557E+020
+  4.496372952144155E+020
+  4.495561603761520E+020
+  4.493540480723568E+020
+  4.490054496397260E+020
+  4.484945962765504E+020
+  4.478202494426090E+020
+  4.469997239506661E+020
+  4.460712719358773E+020
+  4.450939284919988E+020
+  4.441440074467466E+020
+  4.433076590208946E+020
+  4.426692795658803E+020
+  4.422960853503546E+020
+  4.422197709384061E+020
+  4.424167766643008E+020
+  4.427891864706483E+020
+  4.431485829536590E+020
+  4.432052643813547E+020
+  4.425651062170712E+020
+  4.407361074024985E+020
+  4.371463827135614E+020
+  4.311750539105698E+020
+  4.221970092631299E+020
+  4.096415296919620E+020
+  3.930629246159309E+020
+  3.722182940283341E+020
+  3.471434091148037E+020
+  3.182132025587945E+020
+  2.861700980272859E+020
+  2.521037914758662E+020
+  2.173723831180109E+020
+  1.834675029523206E+020
+  1.518429873201064E+020
+  1.236902431418664E+020
+  9.962807347154205E+019
+  7.966642296346937E+019
+  6.345098030368771E+019
+  5.047200393986629E+019
+  4.018883691742024E+019
+  3.209591115103719E+019
+  2.575191942731852E+019
+  2.078771974505196E+019
+  1.690311498330946E+019
+  1.385864497694981E+019
+  1.146584772169409E+019
+  9.577775621964442E+018
+  8.080573203883207E+018
+  6.886381763346237E+018
+  5.927558388997989E+018
+  5.152070046512819E+018
+  4.519880037516814E+018
+  4.000143642947953E+018
+  3.569048631745456E+018
+  3.208161733128101E+018
+  2.903167777604227E+018
+  2.642911276592366E+018
+  2.418669832351930E+018
+  2.223604889948493E+018
+  2.052348276449634E+018
+  1.900693220065646E+018
+  1.765366726222604E+018
+  1.643867036803861E+018
+  1.534356264015271E+018
+  1.435605217701948E+018
+  1.346996323325471E+018
+  1.268603327579897E+018
+  1.201386090070981E+018
+  1.147569328289674E+018
+  1.111321488154948E+018
+  1.099921373917103E+018
+  1.125704228486658E+018
+  1.209222978964580E+018
+  1.384245747061942E+018
+  1.705423041443980E+018
+  2.259649554420313E+018
+  3.182207637584955E+018
+  4.678505767946292E+018
+  7.051271259297821E+018
+  1.073091938192723E+019
+  1.630288494377583E+019
+  2.451942263457712E+019
+  3.627469930301530E+019
+  5.251206758319550E+019
+  7.402469628070843E+019
+  1.011500983802460E+020
+  1.335538402908697E+020
+  1.702382824805634E+020
+  2.096522306579336E+020
+  2.498977202470815E+020
+  2.890035906842789E+020
+  3.251959885274422E+020
+  3.571055350091406E+020
+  3.838783330866026E+020
+  4.051891710997099E+020
+  4.211783241312579E+020
+  4.323433155468636E+020
+  4.394154913892182E+020
+  4.432432093583471E+020
+  4.446938836678284E+020
+  4.445793589664620E+020
+  4.436043126240797E+020
+  4.423352689874049E+020
+  4.411873248882885E+020
+  4.404257996695117E+020
+  4.401800625957015E+020
+  4.404665309801903E+020
+  4.412174050367544E+020
+  4.423114170999178E+020
+  4.436030073584718E+020
+  4.449470029043040E+020
+  4.462169475770507E+020
+  4.473164249613252E+020
+  4.481837642146965E+020
+  4.487912935804588E+020
+  4.491407951131155E+020
+  4.492569409309772E+020
+  4.491801374310539E+020
+  4.489595853780091E+020
+  4.486470787370975E+020
+  4.482921161118688E+020
+  4.479385436184901E+020
+  4.476225652887193E+020
+  3.441777531693728E+022
+  3.442225210691526E+022
+  3.442681446656394E+022
+  3.443092272484202E+022
+  3.443384294962484E+022
+  3.443462091072998E+022
+  3.443208909443752E+022
+  3.442491376826291E+022
+  3.441168260314673E+022
+  3.439104033269545E+022
+  3.436186756613107E+022
+  3.432348475504176E+022
+  3.427585808802531E+022
+  3.421977669595096E+022
+  3.415696129325255E+022
+  3.409005937726965E+022
+  3.402248364137800E+022
+  3.395805818360444E+022
+  3.390045202359251E+022
+  3.385240219485342E+022
+  3.381475827633411E+022
+  3.378541317124949E+022
+  3.375821606304586E+022
+  3.372198750567721E+022
+  3.365976982391017E+022
+  3.354844761000678E+022
+  3.335886568773593E+022
+  3.305656021085633E+022
+  3.260320606620061E+022
+  3.195886781097743E+022
+  3.108510917508962E+022
+  2.994894513793567E+022
+  2.852748578871549E+022
+  2.681290865366353E+022
+  2.481711906063428E+022
+  2.257517329956497E+022
+  2.014636040611453E+022
+  1.761192344245316E+022
+  1.506888546315595E+022
+  1.262033847114163E+022
+  1.036367440362170E+022
+  8.375674431421526E+021
+  6.692381953275951E+021
+  5.308065647222214E+021
+  4.192883179378375E+021
+  3.307497860434062E+021
+  2.611590203486000E+021
+  2.068214649560523E+021
+  1.645591174782440E+021
+  1.317450374439013E+021
+  1.062648162784574E+021
+  8.644752049210883E+020
+  7.098948150813920E+020
+  5.888257536237443E+020
+  4.935188823925051E+020
+  4.180402912048970E+020
+  3.578555313158544E+020
+  3.095019803996962E+020
+  2.703343130241516E+020
+  2.383287434948255E+020
+  2.119335477083719E+020
+  1.899555107365238E+020
+  1.714739851457425E+020
+  1.557760226897139E+020
+  1.423075200976027E+020
+  1.306365123912581E+020
+  1.204256902323742E+020
+  1.114119557997117E+020
+  1.033914139494637E+020
+  9.620867536068760E+019
+  8.974978540061953E+019
+  8.393855734297571E+019
+  7.873667382233940E+019
+  7.414875655790299E+019
+  7.023488268663843E+019
+  6.713502533192657E+019
+  6.511300788333500E+019
+  6.463230098273992E+019
+  6.648296731374849E+019
+  7.198885367853317E+019
+  8.333699275977394E+019
+  1.040863923254360E+020
+  1.399281119054197E+020
+  1.997758950160570E+020
+  2.972531007531467E+020
+  4.525839911022292E+020
+  6.947604850515378E+020
+  1.063594338057683E+021
+  1.610835766546638E+021
+  2.398927811103271E+021
+  3.495235065684396E+021
+  4.958958088941881E+021
+  6.820444677575004E+021
+  9.065744551467131E+021
+  1.163578389195435E+022
+  1.443221709774196E+022
+  1.733004541665140E+022
+  2.019530453901358E+022
+  2.290328992935175E+022
+  2.535320041780368E+022
+  2.747675011923267E+022
+  2.924033471511583E+022
+  3.064193509939537E+022
+  3.170471827939565E+022
+  3.246930486742597E+022
+  3.298620858646451E+022
+  3.330934293423218E+022
+  3.349096420727805E+022
+  3.357807663960352E+022
+  3.361015830342474E+022
+  3.361801724329928E+022
+  3.362359052697844E+022
+  3.364050773214059E+022
+  3.367523485642449E+022
+  3.372859765665744E+022
+  3.379747072407979E+022
+  3.387642673676276E+022
+  3.395917663664921E+022
+  3.403968982455281E+022
+  3.411294828369014E+022
+  3.417534529141528E+022
+  3.422478294353678E+022
+  3.426055359587059E+022
+  3.428310177711248E+022
+  3.429374332876317E+022
+  3.429438041082832E+022
+  3.428723709585997E+022
+  3.427464946608495E+022
+  3.425892049884732E+022
+  3.424222382566908E+022
+  1.394426472882861E+021
+  1.394626094836970E+021
+  1.394810514345541E+021
+  1.394952961854743E+021
+  1.395020425300045E+021
+  1.394973221514829E+021
+  1.394765720664086E+021
+  1.394348400782279E+021
+  1.393671160567295E+021
+  1.392688130139862E+021
+  1.391363760056096E+021
+  1.389679492042246E+021
+  1.387640166598889E+021
+  1.385279089385104E+021
+  1.382660366126947E+021
+  1.379876964256236E+021
+  1.377043050271088E+021
+  1.374279467576009E+021
+  1.371691775342154E+021
+  1.369341092777753E+021
+  1.367209048715961E+021
+  1.365159296481592E+021
+  1.362899134879110E+021
+  1.359945596756401E+021
+  1.355600807231602E+021
+  1.348941460448259E+021
+  1.338827019075478E+021
+  1.323930871932453E+021
+  1.302798294198286E+021
+  1.273934497363084E+021
+  1.235924801677209E+021
+  1.187586131433510E+021
+  1.128143693597404E+021
+  1.057418396308478E+021
+  9.759999132097941E+020
+  8.853695992952472E+020
+  7.879311383817771E+020
+  6.869108720821877E+020
+  5.861091971709470E+020
+  4.895192135263696E+020
+  4.008716324149198E+020
+  3.230647518695660E+020
+  2.574007867496272E+020
+  2.035654739656068E+020
+  1.603241704930800E+020
+  1.260916596827330E+020
+  9.926105814185237E+019
+  7.836992059151211E+019
+  6.216654446077734E+019
+  4.962049031142479E+019
+  3.990531784850751E+019
+  3.237004255233904E+019
+  2.650830547070925E+019
+  2.192967237231308E+019
+  1.833486463659693E+019
+  1.549532946625402E+019
+  1.323687750873707E+019
+  1.142683716423928E+019
+  9.964108803328324E+018
+  8.771539323838233E+018
+  7.790116418605557E+018
+  6.974570347071183E+018
+  6.290053843421193E+018
+  5.709642321990320E+018
+  5.212455583443920E+018
+  4.782249591512909E+018
+  4.406364161804914E+018
+  4.074941449947085E+018
+  3.780352947828703E+018
+  3.516791412701843E+018
+  3.280001079851155E+018
+  3.067137375374440E+018
+  2.876769697888063E+018
+  2.709072673356303E+018
+  2.566299931511753E+018
+  2.453710615322429E+018
+  2.381237631193161E+018
+  2.366368111134588E+018
+  2.438974672110039E+018
+  2.649214362041913E+018
+  3.080112422195138E+018
+  3.867046083976181E+018
+  5.226935092226988E+018
+  7.500272639341673E+018
+  1.120867717058858E+019
+  1.712851582310139E+019
+  2.637597720955035E+019
+  4.048897831179239E+019
+  6.147470603824941E+019
+  9.176768910084198E+019
+  1.340143322439712E+020
+  1.905742070327689E+020
+  2.627225122153422E+020
+  3.500440080042006E+020
+  4.503823113699897E+020
+  5.600442376854430E+020
+  6.742672435320839E+020
+  7.878893638970650E+020
+  8.960497383939494E+020
+  9.947605398516496E+020
+  1.081252940605615E+021
+  1.154077177187350E+021
+  1.212998769651995E+021
+  1.258764233095550E+021
+  1.292811468610635E+021
+  1.316983237302757E+021
+  1.333279110430409E+021
+  1.343661025643781E+021
+  1.349914064232906E+021
+  1.353557282065707E+021
+  1.355797281201335E+021
+  1.357517242566916E+021
+  1.359294543766638E+021
+  1.361440032563186E+021
+  1.364051550256064E+021
+  1.367073935760396E+021
+  1.370358085400352E+021
+  1.373712969195584E+021
+  1.376946595587174E+021
+  1.379894212824575E+021
+  1.382434027523076E+021
+  1.384492264279162E+021
+  1.386040533934324E+021
+  1.387088942383864E+021
+  1.387677644308285E+021
+  1.387868104861945E+021
+  1.387734861870909E+021
+  1.387359021847069E+021
+  1.386823812818605E+021
+  1.386211493896296E+021
+  1.986585086423135E+020
+  1.986883008012964E+020
+  1.987143762671066E+020
+  1.987325291478240E+020
+  1.987378023179534E+020
+  1.987244749738317E+020
+  1.986861969052118E+020
+  1.986162856777968E+020
+  1.985081689174283E+020
+  1.983560010142691E+020
+  1.981554219261072E+020
+  1.979043628025605E+020
+  1.976037877044237E+020
+  1.972582332838173E+020
+  1.968759692137419E+020
+  1.964685847673317E+020
+  1.960498219001064E+020
+  1.956335189998307E+020
+  1.952306034672340E+020
+  1.948451791301790E+020
+  1.944698914286606E+020
+  1.940809026764414E+020
+  1.936329477504474E+020
+  1.930550444249107E+020
+  1.922474878688014E+020
+  1.910807650396571E+020
+  1.893969959568614E+020
+  1.870144664731194E+020
+  1.837357720487974E+020
+  1.793600203718440E+020
+  1.736993661413975E+020
+  1.665997519524670E+020
+  1.579649804608063E+020
+  1.477820898113983E+020
+  1.361445420917224E+020
+  1.232682888648072E+020
+  1.094949613229256E+020
+  9.527706635761210E+019
+  8.114281491500933E+019
+  6.764302898525048E+019
+  5.528842907401110E+019
+  4.447168218614404E+019
+  3.536349252648050E+019
+  2.791164383706880E+019
+  2.193820058554814E+019
+  1.721849310796273E+019
+  1.352643266017442E+019
+  1.065718015170604E+019
+  8.436000001891309E+018
+  6.719439447676412E+018
+  5.392722227424014E+018
+  4.365637953391553E+018
+  3.568162238529566E+018
+  2.946407997295794E+018
+  2.459147625704498E+018
+  2.074954555338576E+018
+  1.769920525642393E+018
+  1.525867979734816E+018
+  1.328969153968362E+018
+  1.168689556978377E+018
+  1.036985161059540E+018
+  9.276953576558851E+017
+  8.360855307065037E+017
+  7.585032265497466E+017
+  6.921202170535356E+017
+  6.347394000528119E+017
+  5.846506952062367E+017
+  5.405241453771672E+017
+  5.013316085453042E+017
+  4.662910201356984E+017
+  4.348295416028171E+017
+  4.065643639148791E+017
+  3.813029905163760E+017
+  3.590691675942563E+017
+  3.401672636583884E+017
+  3.253082956139175E+017
+  3.158370361423654E+017
+  3.141244904206951E+017
+  3.242268464986799E+017
+  3.529641261032169E+017
+  4.116410035624135E+017
+  5.187156348661471E+017
+  7.038059642960724E+017
+  1.013471996084815E+018
+  1.519156556796678E+018
+  2.327382905491301E+018
+  3.591605812664893E+018
+  5.523744909120987E+018
+  8.401142902990779E+018
+  1.256137205931055E+019
+  1.837325241398590E+019
+  2.616878032491357E+019
+  3.613340392677170E+019
+  4.822164710978853E+019
+  6.214837475672669E+019
+  7.741491796389395E+019
+  9.337159557867397E+019
+  1.093087484779321E+020
+  1.245528978433747E+020
+  1.385460954804806E+020
+  1.508948024204998E+020
+  1.613851836357081E+020
+  1.699702745366648E+020
+  1.767389016179902E+020
+  1.818766323693260E+020
+  1.856268235227277E+020
+  1.882567196505629E+020
+  1.900307677943320E+020
+  1.911914285128472E+020
+  1.919467981188902E+020
+  1.924640372455858E+020
+  1.928675959670105E+020
+  1.932412864316097E+020
+  1.936332614540856E+020
+  1.940629092749770E+020
+  1.945286377114265E+020
+  1.950155727009263E+020
+  1.955023732742345E+020
+  1.959666390726743E+020
+  1.963886840303757E+020
+  1.967537055206299E+020
+  1.970525773316439E+020
+  1.972816472103038E+020
+  1.974419851579944E+020
+  1.975384311740619E+020
+  1.975785946813916E+020
+  1.975718990901506E+020
+  1.975288339726737E+020
+  1.974604519517063E+020
+  1.973780051129914E+020
+  1.488233034182174E+021
+  1.488457582007189E+021
+  1.488653459614134E+021
+  1.488788884382348E+021
+  1.488826504464518E+021
+  1.488723344745978E+021
+  1.488431851740875E+021
+  1.487902154594667E+021
+  1.487085404519740E+021
+  1.485938408147739E+021
+  1.484429308774221E+021
+  1.482543598663665E+021
+  1.480289631138525E+021
+  1.477702597465029E+021
+  1.474845642820426E+021
+  1.471806667745381E+021
+  1.468689476055255E+021
+  1.465598260792544E+021
+  1.462614975995811E+021
+  1.459769950734382E+021
+  1.457007127019642E+021
+  1.454146419766066E+021
+  1.450846727040801E+021
+  1.446573891691426E+021
+  1.440578324213965E+021
+  1.431887038585581E+021
+  1.419314634477018E+021
+  1.401497441187117E+021
+  1.376954701959574E+021
+  1.344180142823136E+021
+  1.301765964644830E+021
+  1.248558305523963E+021
+  1.183837609736299E+021
+  1.107508697757199E+021
+  1.020274376757869E+021
+  9.237556044061574E+020
+  8.205151133122210E+020
+  7.139461705059083E+020
+  6.080087342007077E+020
+  5.068313970603451E+020
+  4.142413742117817E+020
+  3.331804683202634E+020
+  2.649267616476983E+020
+  2.090878226682500E+020
+  1.643292764956506E+020
+  1.289667470920434E+020
+  1.013054313877456E+020
+  7.980994303359284E+019
+  6.317062338320451E+019
+  5.031234276127016E+019
+  4.037493859366792E+019
+  3.268238708589248E+019
+  2.670996338037773E+019
+  2.205388864302577E+019
+  1.840525927541137E+019
+  1.552862063598992E+019
+  1.324485726433360E+019
+  1.141779497496590E+019
+  9.943851643382759E+018
+  8.744119549708689E+018
+  7.758349384467321E+018
+  6.940401490006162E+018
+  6.254818411707258E+018
+  5.674248749471222E+018
+  5.177514661821597E+018
+  4.748165208305775E+018
+  4.373396800920879E+018
+  4.043252407696455E+018
+  3.750034948018342E+018
+  3.487889766494324E+018
+  3.252528576161339E+018
+  3.041085637891556E+018
+  2.852119833564101E+018
+  2.685808820974179E+018
+  2.544431146527720E+018
+  2.433310050113850E+018
+  2.362514320087598E+018
+  2.349797725299408E+018
+  2.425534357210832E+018
+  2.640797730918581E+018
+  3.080250345672343E+018
+  3.882135307836022E+018
+  5.268288678359509E+018
+  7.587459410298940E+018
+  1.137480593058696E+019
+  1.742831134240355E+019
+  2.689760377751822E+019
+  4.137042164949393E+019
+  6.292483318647629E+019
+  9.409044390137071E+019
+  1.376313909698243E+020
+  1.960364370803277E+020
+  2.706968649024223E+020
+  3.612740424602238E+020
+  4.656335218122779E+020
+  5.800403016581965E+020
+  6.996268768665464E+020
+  8.190751136159102E+020
+  9.333367647663902E+020
+  1.038228275720481E+021
+  1.130797421384140E+021
+  1.209438352893587E+021
+  1.273795844066229E+021
+  1.324532730798869E+021
+  1.363037515932029E+021
+  1.391132608053311E+021
+  1.410820318138211E+021
+  1.424082860343232E+021
+  1.432738471981736E+021
+  1.438348527563534E+021
+  1.442168125020517E+021
+  1.445132587093513E+021
+  1.447872779801158E+021
+  1.450752209880764E+021
+  1.453918503462604E+021
+  1.457361589617531E+021
+  1.460971295538696E+021
+  1.464588379420725E+021
+  1.468045072876675E+021
+  1.471193427157500E+021
+  1.473921668920316E+021
+  1.476160261580514E+021
+  1.477880511383481E+021
+  1.479089050776087E+021
+  1.479820804630037E+021
+  1.480131575621698E+021
+  1.480090946826451E+021
+  1.479776718650390E+021
+  1.479271158797259E+021
+  1.478658277610773E+021
+  1.134157220528991E+020
+  1.134270359160369E+020
+  1.134414716535272E+020
+  1.134580614690649E+020
+  1.134749626864583E+020
+  1.134892624543739E+020
+  1.134969106097483E+020
+  1.134928191776817E+020
+  1.134711446531298E+020
+  1.134257891174871E+020
+  1.133511107887076E+020
+  1.132427849814569E+020
+  1.130987313833993E+020
+  1.129199904950937E+020
+  1.127113927670400E+020
+  1.124818395161659E+020
+  1.122440138854738E+020
+  1.120133639333813E+020
+  1.118062519225909E+020
+  1.116372478260608E+020
+  1.115156579529708E+020
+  1.114415087323052E+020
+  1.114013313392312E+020
+  1.113641937350074E+020
+  1.112784863939178E+020
+  1.110699807156930E+020
+  1.106416524718626E+020
+  1.098757141699478E+020
+  1.086382457502958E+020
+  1.067867487008391E+020
+  1.041808350639021E+020
+  1.006960236780841E+020
+  9.624016134970861E+019
+  9.077125846574109E+019
+  8.431455864745014E+019
+  7.697563471747187E+019
+  6.894560723771486E+019
+  6.049477643439685E+019
+  5.195254542128601E+019
+  4.367457387497074E+019
+  3.600205057929088E+019
+  2.920920105450584E+019
+  2.343160663850435E+019
+  1.866015622299374E+019
+  1.480074884900147E+019
+  1.172443799523409E+019
+  9.296965584092846E+018
+  7.394140004010815E+018
+  5.908393252669406E+018
+  4.750306758844577E+018
+  3.847552413693472E+018
+  3.142714416534051E+018
+  2.590807207351294E+018
+  2.156902955963658E+018
+  1.814048847391922E+018
+  1.541527236804702E+018
+  1.323447647731398E+018
+  1.147631408235363E+018
+  1.004741066600150E+018
+  8.876079076009741E+017
+  7.907163475461695E+017
+  7.098107329316378E+017
+  6.415966541668492E+017
+  5.835147144735588E+017
+  5.335695916711258E+017
+  4.902012156748125E+017
+  4.521880571924092E+017
+  4.185750204800906E+017
+  3.886204148548141E+017
+  3.617581252560381E+017
+  3.375726156041640E+017
+  3.157860269808614E+017
+  2.962587009880252E+017
+  2.790074272547324E+017
+  2.642502564500065E+017
+  2.524938142788968E+017
+  2.446900617234770E+017
+  2.425061467227553E+017
+  2.487754413683915E+017
+  2.682319425672166E+017
+  3.086745370271855E+017
+  3.827592466877572E+017
+  5.106658886749701E+017
+  7.239058390608778E+017
+  1.070481804279676E+018
+  1.621397454934725E+018
+  2.478023909404324E+018
+  3.778910214127935E+018
+  5.703135720448260E+018
+  8.465210099708747E+018
+  1.229407860527673E+019
+  1.738678276370226E+019
+  2.383632874820476E+019
+  3.157921139298445E+019
+  4.039498370578293E+019
+  4.992937181604173E+019
+  5.974065127492066E+019
+  6.936275024341760E+019
+  7.836893802190525E+019
+  8.642180475017855E+019
+  9.330138457515154E+019
+  9.891050291191721E+019
+  1.032619324576754E+020
+  1.064544740007504E+020
+  1.086449180305285E+020
+  1.100210856061619E+020
+  1.107789553919011E+020
+  1.111050500131909E+020
+  1.111640920539352E+020
+  1.110913979931357E+020
+  1.109893344641160E+020
+  1.109271795024719E+020
+  1.109437512003587E+020
+  1.110521260918414E+020
+  1.112456901807441E+020
+  1.115047102552083E+020
+  1.118026441674496E+020
+  1.121115513418561E+020
+  1.124061933868886E+020
+  1.126666688068566E+020
+  1.128796480381688E+020
+  1.130384419455145E+020
+  1.131422479475486E+020
+  1.131949525228491E+020
+  1.132037922060187E+020
+  1.131780353563579E+020
+  1.131277890130530E+020
+  1.130630573550859E+020
+  1.129930950484207E+020
+  1.129260078762991E+020
+  7.607419224846523E+020
+  7.607817662064803E+020
+  7.608717479246539E+020
+  7.610137486666328E+020
+  7.612013648741807E+020
+  7.614174621549412E+020
+  7.616327841612534E+020
+  7.618060325432698E+020
+  7.618856755602099E+020
+  7.618138459687521E+020
+  7.615323357978180E+020
+  7.609902973574825E+020
+  7.601530114732767E+020
+  7.590107730989570E+020
+  7.575865901434477E+020
+  7.559411449344647E+020
+  7.541734009207503E+020
+  7.524153719862535E+020
+  7.508199470989254E+020
+  7.495413160294450E+020
+  7.487084546930887E+020
+  7.483932046293021E+020
+  7.485755604473490E+020
+  7.491096791827154E+020
+  7.496946933305838E+020
+  7.498545732357111E+020
+  7.489310856861787E+020
+  7.460934710846637E+020
+  7.403679609755729E+020
+  7.306897050720006E+020
+  7.159788373038605E+020
+  6.952407545408636E+020
+  6.676875279725020E+020
+  6.328722038939290E+020
+  5.908206730594213E+020
+  5.421379976412556E+020
+  4.880603332381286E+020
+  4.304240078126128E+020
+  3.715338567726374E+020
+  3.139346247055624E+020
+  2.601183168305204E+020
+  2.121382684285248E+020
+  1.710741790315054E+020
+  1.369646697010770E+020
+  1.092225041017561E+020
+  8.699070609795662E+019
+  6.935557559185837E+019
+  5.546012786843678E+019
+  4.455468456941429E+019
+  3.601105965155056E+019
+  2.931761421298752E+019
+  2.406565874961472E+019
+  1.993312394123029E+019
+  1.666857368755862E+019
+  1.407696062970939E+019
+  1.200759710913077E+019
+  1.034433554170677E+019
+  8.997731820870653E+018
+  7.898888056135085E+018
+  6.994667593665029E+018
+  6.244005644528034E+018
+  5.615080922877828E+018
+  5.083156490275534E+018
+  4.628936748672365E+018
+  4.237320606390389E+018
+  3.896458095607620E+018
+  3.597039635908338E+018
+  3.331764536068776E+018
+  3.094949247020206E+018
+  2.882247556610557E+018
+  2.690465804563196E+018
+  2.517468088724165E+018
+  2.362181719468693E+018
+  2.224735248498027E+018
+  2.106795205634501E+018
+  2.012220379310676E+018
+  1.948233962648112E+018
+  1.927436832428297E+018
+  1.971163957975836E+018
+  2.114932767220564E+018
+  2.417049013143568E+018
+  2.971796534129366E+018
+  3.928958932129430E+018
+  5.521515639853032E+018
+  8.102866284675083E+018
+  1.219327517627893E+019
+  1.853153442773750E+019
+  2.812107617722630E+019
+  4.224901344972182E+019
+  6.244179393752335E+019
+  9.030433920924785E+019
+  1.271767059589802E+020
+  1.736104305187352E+020
+  2.290008868008159E+020
+  2.916078859201189E+020
+  3.587497601307218E+020
+  4.271630844470666E+020
+  4.934746457420340E+020
+  5.546651551472205E+020
+  6.084216046169685E+020
+  6.533229447118936E+020
+  6.888574921297929E+020
+  7.153098110676367E+020
+  7.335714690737550E+020
+  7.449270353700225E+020
+  7.508525732903723E+020
+  7.528473514088150E+020
+  7.523061855557424E+020
+  7.504317167560440E+020
+  7.481823868518315E+020
+  7.462510932466991E+020
+  7.450697032268018E+020
+  7.448346430151190E+020
+  7.455482838670892E+020
+  7.470700767205306E+020
+  7.491708822050464E+020
+  7.515841977884747E+020
+  7.540491774296700E+020
+  7.563422449443585E+020
+  7.582962203134919E+020
+  7.598077272192035E+020
+  7.608350067115617E+020
+  7.613890997693649E+020
+  7.615215591523329E+020
+  7.613112181905110E+020
+  7.608514598452815E+020
+  7.602389172273269E+020
+  7.595646042956157E+020
+  7.589078623483245E+020
+  7.583328500656480E+020
+  1.024125579571578E+020
+  1.024130571623321E+020
+  1.024237939190844E+020
+  1.024460737810400E+020
+  1.024798080629238E+020
+  1.025230372389650E+020
+  1.025716127024456E+020
+  1.026191111097357E+020
+  1.026570341562266E+020
+  1.026753579711357E+020
+  1.026634442955576E+020
+  1.026112656348405E+020
+  1.025108549519736E+020
+  1.023578390560383E+020
+  1.021528568918409E+020
+  1.019026207412921E+020
+  1.016203608048207E+020
+  1.013254063291126E+020
+  1.010417064716602E+020
+  1.007951880804901E+020
+  1.006099839665589E+020
+  1.005037304857842E+020
+  1.004823034846554E+020
+  1.005345083734056E+020
+  1.006273379131937E+020
+  1.007024464079320E+020
+  1.006744647724238E+020
+  1.004317167489224E+020
+  9.983981633621120E+019
+  9.874853890856359E+019
+  9.700223627091773E+019
+  9.445383815129229E+019
+  9.098205198820267E+019
+  8.651065921015169E+019
+  8.102780934396220E+019
+  7.460208745645407E+019
+  6.739125334681619E+019
+  5.963950986381203E+019
+  5.166053411131680E+019
+  4.380649566003990E+019
+  3.642740155794963E+019
+  2.981653096091735E+019
+  2.413391794009562E+019
+  1.939457182168266E+019
+  1.552497665836580E+019
+  1.241227407526701E+019
+  9.933985511005213E+018
+  7.974072760707988E+018
+  6.430301564247000E+018
+  5.216515945471247E+018
+  4.262198757954003E+018
+  3.510771501913186E+018
+  2.917462998125662E+018
+  2.447184053492872E+018
+  2.072612692927998E+018
+  1.772564305688364E+018
+  1.530652728944577E+018
+  1.334215974842701E+018
+  1.173468139657675E+018
+  1.040837456411563E+018
+  9.304538471881512E+017
+  8.377545800844385E+017
+  7.591821590316627E+017
+  6.919536667285702E+017
+  6.338851822310828E+017
+  5.832585548833846E+017
+  5.387207815683501E+017
+  4.992086028658365E+017
+  4.638928404929855E+017
+  4.321386101034314E+017
+  4.034790615986567E+017
+  3.776019760224385E+017
+  3.543507221982109E+017
+  3.337442289041318E+017
+  3.160254622261926E+017
+  3.017554239958415E+017
+  2.919812938973804E+017
+  2.885247843247423E+017
+  2.944620123746273E+017
+  3.149008077798983E+017
+  3.582053568490179E+017
+  4.378673747989878E+017
+  5.752652472571425E+017
+  8.035605783177912E+017
+  1.172904627732428E+018
+  1.756882252992457E+018
+  2.659589571970806E+018
+  4.021782564314208E+018
+  6.023030836797023E+018
+  8.874773040299385E+018
+  1.279690527769027E+019
+  1.796890166360979E+019
+  2.445630789378005E+019
+  3.216049218579803E+019
+  4.082396639566927E+019
+  5.006028324172467E+019
+  5.940681520460608E+019
+  6.839232366772310E+019
+  7.660207744813662E+019
+  8.372613489813678E+019
+  8.958343011459157E+019
+  9.412196783198824E+019
+  9.740088234369479E+019
+  9.956227345093332E+019
+  1.008001147142327E+020
+  1.013314110431557E+020
+  1.013724023313856E+020
+  1.011207425548954E+020
+  1.007434789872005E+020
+  1.003701956425507E+020
+  1.000905980822411E+020
+  9.995584713276059E+019
+  9.998294012465073E+019
+  1.001613483209078E+020
+  1.004609938337363E+020
+  1.008405729050078E+020
+  1.012552774696988E+020
+  1.016631566784666E+020
+  1.020296571242065E+020
+  1.023302075335996E+020
+  1.025509965240247E+020
+  1.026882949442138E+020
+  1.027467927011767E+020
+  1.027374399397136E+020
+  1.026751829148794E+020
+  1.025768225854823E+020
+  1.024591419774631E+020
+  1.023374495122378E+020
+  1.022245977577094E+020
+  1.021304436835621E+020
+  5.158663758356482E+019
+  5.159488755882929E+019
+  5.160141266163617E+019
+  5.160494258487883E+019
+  5.160408201450727E+019
+  5.159732790747624E+019
+  5.158311431041697E+019
+  5.155988430684380E+019
+  5.152618089143344E+019
+  5.148076244471849E+019
+  5.142273465466786E+019
+  5.135167725422441E+019
+  5.126774311879866E+019
+  5.117170327817993E+019
+  5.106490403821675E+019
+  5.094909990367801E+019
+  5.082613052623381E+019
+  5.069742000552899E+019
+  5.056329250213850E+019
+  5.042212014295241E+019
+  5.026934675459823E+019
+  5.009646066062097E+019
+  4.989001689999419E+019
+  4.963082950130618E+019
+  4.929346555526219E+019
+  4.884617526057922E+019
+  4.825138903248337E+019
+  4.746690808922115E+019
+  4.644790931435717E+019
+  4.514987071092646E+019
+  4.353248049323641E+019
+  4.156449154401865E+019
+  3.922929616140653E+019
+  3.653071533236520E+019
+  3.349815095251897E+019
+  3.018992118314629E+019
+  2.669343612404609E+019
+  2.312106397016091E+019
+  1.960123063444177E+019
+  1.626545958244492E+019
+  1.323342848710944E+019
+  1.059472732177522E+019
+  8.384827398692703E+018
+  6.585930621517457E+018
+  5.150916383935576E+018
+  4.022460655006350E+018
+  3.143839038769099E+018
+  2.464201122854687E+018
+  1.940512634424507E+018
+  1.537674859023557E+018
+  1.227767099042333E+018
+  9.889603368428099E+017
+  8.043941448250326E+017
+  6.611551348043046E+017
+  5.494089150895926E+017
+  4.616925296309812E+017
+  3.923532730541411E+017
+  3.371118549969170E+017
+  2.927267771947290E+017
+  2.567388439944329E+017
+  2.272779463138560E+017
+  2.029176186930666E+017
+  1.825659133133996E+017
+  1.653837086839769E+017
+  1.507236621687587E+017
+  1.380846721270319E+017
+  1.270780051188197E+017
+  1.174022393150590E+017
+  1.088249503168236E+017
+  1.011696939636983E+017
+  9.430740027338778E+016
+  8.815187294194814E+016
+  8.265980458656749E+016
+  7.783673004100981E+016
+  7.375188484046091E+016
+  7.056736131300853E+016
+  6.859075674130233E+016
+  6.836635613126079E+016
+  7.082860989635002E+016
+  7.755410927587747E+016
+  9.116497334165283E+016
+  1.159570203039172E+017
+  1.588472833381182E+017
+  2.307494173079655E+017
+  3.484759289260484E+017
+  5.372037009533406E+017
+  8.333781992522248E+017
+  1.287610595715671E+018
+  1.966575840690169E+018
+  2.952112908785021E+018
+  4.334719403144843E+018
+  6.197680860204633E+018
+  8.590982209391785E+018
+  1.151067702420846E+019
+  1.489580624875691E+019
+  1.863346614854143E+019
+  2.257263522175209E+019
+  2.654514818616342E+019
+  3.038840886484278E+019
+  3.396461336690699E+019
+  3.717308461803254E+019
+  3.995476912199012E+019
+  4.229000441972665E+019
+  4.419178762164453E+019
+  4.569694772454171E+019
+  4.685715928606290E+019
+  4.773102233241335E+019
+  4.837777198583765E+019
+  4.885271800174674E+019
+  4.920426549183797E+019
+  4.947227713454580E+019
+  4.968752958712952E+019
+  4.987203360192522E+019
+  5.003999757255093E+019
+  5.019921323907032E+019
+  5.035264203896875E+019
+  5.049999683535456E+019
+  5.063915416069569E+019
+  5.076729050616253E+019
+  5.088169678699172E+019
+  5.098027513577420E+019
+  5.106176135142808E+019
+  5.112574921435068E+019
+  5.117260894952663E+019
+  5.120336980553884E+019
+  5.121959021213106E+019
+  5.122322816580397E+019
+  5.121654617319247E+019
+  5.120205508485615E+019
+  5.118246599250040E+019
+  8.153130831714543E+020
+  8.154432621638268E+020
+  8.155471659994921E+020
+  8.156049064021909E+020
+  8.155945206519607E+020
+  8.154922276749050E+020
+  8.152731389549366E+020
+  8.149124242866327E+020
+  8.143868070831517E+020
+  8.136764802042568E+020
+  8.127673109009052E+020
+  8.116529855049965E+020
+  8.103367261484522E+020
+  8.088321438040092E+020
+  8.071626715435312E+020
+  8.053589798685386E+020
+  8.034538477719012E+020
+  8.014741265836236E+020
+  7.994296884300262E+020
+  7.972996108357050E+020
+  7.950162991132061E+020
+  7.924487332652578E+020
+  7.893864688577874E+020
+  7.855263514321191E+020
+  7.804640826424657E+020
+  7.736928106357875E+020
+  7.646108586152371E+020
+  7.525406194446987E+020
+  7.367605446862943E+020
+  7.165519211728117E+020
+  6.912614416373717E+020
+  6.603789703874280E+020
+  6.236269374585294E+020
+  5.810533218323808E+020
+  5.331146545141719E+020
+  4.807301980951034E+020
+  4.252857972282210E+020
+  3.685689018372617E+020
+  3.126272649849857E+020
+  2.595623854020014E+020
+  2.112906996033490E+020
+  1.692514821818801E+020
+  1.340215659504491E+020
+  1.053269135378318E+020
+  8.242374152015983E+019
+  6.440343400253904E+019
+  5.036514810926418E+019
+  3.950033569444294E+019
+  3.112409936355035E+019
+  2.467741199258525E+019
+  1.971527505785826E+019
+  1.588956600290986E+019
+  1.293124553833358E+019
+  1.063414388492551E+019
+  8.841166302085618E+018
+  7.433038170446441E+018
+  6.319371349149384E+018
+  5.431705264990530E+018
+  4.718156996143275E+018
+  4.139346336642975E+018
+  3.665312408233858E+018
+  3.273191444125546E+018
+  2.945473569261794E+018
+  2.668697220951768E+018
+  2.432473064451051E+018
+  2.228755590160301E+018
+  2.051301096490007E+018
+  1.895266614725389E+018
+  1.756916681263244E+018
+  1.633414883627820E+018
+  1.522686041173190E+018
+  1.423344159667039E+018
+  1.334692755991762E+018
+  1.256820359341389E+018
+  1.190838738875402E+018
+  1.139350244773109E+018
+  1.107291508046803E+018
+  1.103394300589068E+018
+  1.142643722143609E+018
+  1.250312609065418E+018
+  1.468417635162717E+018
+  1.865768332462014E+018
+  2.553116439316618E+018
+  3.705132208004541E+018
+  5.590773905037880E+018
+  8.612609220986694E+018
+  1.335306258421630E+019
+  2.062042271786405E+019
+  3.147872113374877E+019
+  4.723273168794235E+019
+  6.932329764419786E+019
+  9.907313200813803E+019
+  1.372699154428385E+020
+  1.838376415067012E+020
+  2.377891886477021E+020
+  2.973093922542640E+020
+  3.599779199949477E+020
+  4.231057111372679E+020
+  4.840982714222205E+020
+  5.407622838551262E+020
+  5.915014817538477E+020
+  6.353869897402331E+020
+  6.721201864248600E+020
+  7.019239482744270E+020
+  7.254007459559012E+020
+  7.433885229695007E+020
+  7.568338443771917E+020
+  7.666912314656297E+020
+  7.738502223120385E+020
+  7.790877573034845E+020
+  7.830420645432750E+020
+  7.862041129614941E+020
+  7.889229665809994E+020
+  7.914215215946744E+020
+  7.938190714917608E+020
+  7.961571232160703E+020
+  7.984251361627745E+020
+  8.005835010287720E+020
+  8.025820182963142E+020
+  8.043731218033067E+020
+  8.059199121653453E+020
+  8.071997069718078E+020
+  8.082043476344597E+020
+  8.089387599805896E+020
+  8.094189092353607E+020
+  8.096695483476159E+020
+  8.097219805749088E+020
+  8.096123933691897E+020
+  8.093808420105675E+020
+  8.090704027675285E+020
+  9.462692916901822E+020
+  9.464189688668729E+020
+  9.465415316951351E+020
+  9.466146076344658E+020
+  9.466130877573227E+020
+  9.465093499982589E+020
+  9.462740683689939E+020
+  9.458776296186370E+020
+  9.452920275360865E+020
+  9.444933470028852E+020
+  9.434646799737617E+020
+  9.421990476277285E+020
+  9.407018653291124E+020
+  9.389923923912022E+020
+  9.371034554852306E+020
+  9.350786770522839E+020
+  9.329665224116577E+020
+  9.308106783418036E+020
+  9.286365932713814E+020
+  9.264344605878490E+020
+  9.241394925849381E+020
+  9.216109434002377E+020
+  9.186118972895603E+020
+  9.147922534723732E+020
+  9.096775585456133E+020
+  9.026663680665609E+020
+  8.930387237317524E+020
+  8.799781969226895E+020
+  8.626098014707791E+020
+  8.400557849028953E+020
+  8.115105012153101E+020
+  7.763336918977480E+020
+  7.341580137555545E+020
+  6.850013542940544E+020
+  6.293678690670414E+020
+  5.683152971501909E+020
+  5.034627616218466E+020
+  4.369166148347359E+020
+  3.711047896553465E+020
+  3.085321730095526E+020
+  2.514958124538269E+020
+  2.017347726755250E+020
+  1.599667696257531E+020
+  1.258959150529461E+020
+  9.866261371943282E+019
+  7.720538201750112E+019
+  6.046661089909014E+019
+  4.749407196561447E+019
+  3.747926678760948E+019
+  2.976100211834423E+019
+  2.381205531213156E+019
+  1.921933678588907E+019
+  1.566313180613915E+019
+  1.289809494249512E+019
+  1.073702879529592E+019
+  9.037616729483166E+018
+  7.691870613938223E+018
+  6.617896555858532E+018
+  5.753554383270660E+018
+  5.051621024195653E+018
+  4.476125667119119E+018
+  3.999585980577537E+018
+  3.600930813273194E+018
+  3.263942545083288E+018
+  2.976091232409159E+018
+  2.727663672856697E+018
+  2.511114707484615E+018
+  2.320586807332345E+018
+  2.151558608655227E+018
+  2.000594951250748E+018
+  1.865181608363401E+018
+  1.743638979554113E+018
+  1.635122742836208E+018
+  1.539738909311412E+018
+  1.458830413786633E+018
+  1.395538949208007E+018
+  1.355818658710106E+018
+  1.350190214788174E+018
+  1.396690224269014E+018
+  1.525707632091264E+018
+  1.787715348873992E+018
+  2.265290310922739E+018
+  3.091208871388900E+018
+  4.474652894101045E+018
+  6.737350002952346E+018
+  1.036024121482084E+019
+  1.603815396216635E+019
+  2.473380525424683E+019
+  3.771206885215215E+019
+  5.652019903541716E+019
+  8.286081243559726E+019
+  1.182869188114399E+020
+  1.637046457734556E+020
+  2.189843758613889E+020
+  2.829097250663730E+020
+  3.532829893684913E+020
+  4.271968065619517E+020
+  5.014392718612768E+020
+  5.729282226749150E+020
+  6.390751055493974E+020
+  6.980147644596696E+020
+  7.486846508660084E+020
+  7.907760315076434E+020
+  8.246006299614696E+020
+  8.509188180373217E+020
+  8.707661473795203E+020
+  8.853012036101201E+020
+  8.956851475161895E+020
+  9.029945940364532E+020
+  9.081648893472550E+020
+  9.119592352237035E+020
+  9.149590220831157E+020
+  9.175710387701007E+020
+  9.200473572683375E+020
+  9.225135862080775E+020
+  9.250011078133692E+020
+  9.274791813927259E+020
+  9.298835691378923E+020
+  9.321394974369221E+020
+  9.341779966767132E+020
+  9.359456998808873E+020
+  9.374089938429367E+020
+  9.385540736021484E+020
+  9.393847582942849E+020
+  9.399194996663695E+020
+  9.401881310510223E+020
+  9.402286752045367E+020
+  9.400849010372221E+020
+  9.398047505816120E+020
+  9.394390987771461E+020
+  2.476878320616498E+020
+  2.477337087726974E+020
+  2.477676551218209E+020
+  2.477823638630949E+020
+  2.477702022038539E+020
+  2.477234752444313E+020
+  2.476348197856068E+020
+  2.474977090681904E+020
+  2.473070089040242E+020
+  2.470595926162416E+020
+  2.467549582129336E+020
+  2.463957297028777E+020
+  2.459879258873459E+020
+  2.455408687160755E+020
+  2.450665776124459E+020
+  2.445784950184793E+020
+  2.440894217905555E+020
+  2.436086007897194E+020
+  2.431379708346907E+020
+  2.426677228669530E+020
+  2.421714194479449E+020
+  2.416010700981199E+020
+  2.408826662099558E+020
+  2.399127522041526E+020
+  2.385566372642201E+020
+  2.366488418069542E+020
+  2.339963444417626E+020
+  2.303851696397304E+020
+  2.255908356601987E+020
+  2.193931239802206E+020
+  2.115954334148894E+020
+  2.020484979209949E+020
+  1.906773427461783E+020
+  1.775089926853044E+020
+  1.626967776714148E+020
+  1.465355177361418E+020
+  1.294611350017369E+020
+  1.120292542610762E+020
+  9.487078924770682E+019
+  7.862819147838982E+019
+  6.388264197681425E+019
+  5.106601167176801E+019
+  4.034580307875752E+019
+  3.163092848126094E+019
+  2.468865583265290E+019
+  1.923760699530855E+019
+  1.500017339915442E+019
+  1.172799396130202E+019
+  9.211226862713741E+018
+  7.278979197711981E+018
+  5.795501826952291E+018
+  4.654814971860311E+018
+  3.775180861233240E+018
+  3.094090876090626E+018
+  2.564014939101373E+018
+  2.148942753471214E+018
+  1.821644835045618E+018
+  1.561543597400009E+018
+  1.353080062858375E+018
+  1.184472337738153E+018
+  1.046778069246551E+018
+  9.331897508338350E+017
+  8.385067708287492E+017
+  7.587407718051977E+017
+  6.908211635634060E+017
+  6.323757557544959E+017
+  5.815677892001091E+017
+  5.369755112224670E+017
+  4.975042217109979E+017
+  4.623237743721291E+017
+  4.308272289113457E+017
+  4.026091460158746E+017
+  3.774654487739193E+017
+  3.554216133039485E+017
+  3.368033320044015E+017
+  3.223753872335737E+017
+  3.135926761296435E+017
+  3.130353842630257E+017
+  3.251422421671656E+017
+  3.574158534191443E+017
+  4.223550915583805E+017
+  5.404693622621699E+017
+  7.448340535483660E+017
+  1.087718094300711E+018
+  1.649774577726397E+018
+  2.551992625961751E+018
+  3.969840551324659E+018
+  6.147485865206074E+018
+  9.407334629029466E+018
+  1.414620631228526E+019
+  2.080451736604742E+019
+  2.979012953892578E+019
+  4.135234211370349E+019
+  5.548113765414732E+019
+  7.189028955127427E+019
+  9.003973838956811E+019
+  1.092006734779389E+020
+  1.285559959240908E+020
+  1.473102744493029E+020
+  1.647838256656789E+020
+  1.804741314130301E+020
+  1.940795550354830E+020
+  2.054903324481231E+020
+  2.147573916237000E+020
+  2.220505455274797E+020
+  2.276154640406506E+020
+  2.317354313252078E+020
+  2.347006963433183E+020
+  2.367859617497196E+020
+  2.382353319040059E+020
+  2.392535940366060E+020
+  2.400026787802226E+020
+  2.406022456260762E+020
+  2.411334058334461E+020
+  2.416445981205851E+020
+  2.421586235110421E+020
+  2.426799009406187E+020
+  2.432011668207243E+020
+  2.437090882981732E+020
+  2.441885239340372E+020
+  2.446253906492766E+020
+  2.450082809963196E+020
+  2.453291385447334E+020
+  2.455833875288587E+020
+  2.457698209362071E+020
+  2.458903442774949E+020
+  2.459496309277848E+020
+  2.459548510930774E+020
+  2.459154942168483E+020
+  2.458431407722616E+020
+  5.149051451521363E+020
+  5.148303532698310E+020
+  5.148558520962966E+020
+  5.150038883145556E+020
+  5.152859309006264E+020
+  5.156980413404743E+020
+  5.162171845656976E+020
+  5.167991065447983E+020
+  5.173783079259784E+020
+  5.178706777893671E+020
+  5.181790408286091E+020
+  5.182014954373187E+020
+  5.178421098210339E+020
+  5.170231608027146E+020
+  5.156976687991055E+020
+  5.138606196089242E+020
+  5.115570390473639E+020
+  5.088850442235715E+020
+  5.059921969971148E+020
+  5.030639905840936E+020
+  5.003041202571913E+020
+  4.979072569636779E+020
+  4.960262162003986E+020
+  4.947365031909115E+020
+  4.940020284168417E+020
+  4.936461923742363E+020
+  4.933325103015192E+020
+  4.925585799292515E+020
+  4.906666475206987E+020
+  4.868734127178347E+020
+  4.803209654792380E+020
+  4.701495468719245E+020
+  4.555906427345078E+020
+  4.360752325651418E+020
+  4.113466525771772E+020
+  3.815611210016047E+020
+  3.473534091007725E+020
+  3.098436266031076E+020
+  2.705670866955796E+020
+  2.313243842255639E+020
+  1.939711752669792E+020
+  1.601229508712921E+020
+  1.307287221823850E+020
+  1.059792559150060E+020
+  8.558661464605308E+019
+  6.903644575057986E+019
+  5.574396219609345E+019
+  4.514092230280051E+019
+  3.671782390892113E+019
+  3.003929339527331E+019
+  2.474472472612975E+019
+  2.054168226759783E+019
+  1.719645574129955E+019
+  1.452415479134930E+019
+  1.237952300259993E+019
+  1.064895922760790E+019
+  9.243858772675703E+018
+  8.095199320943607E+018
+  7.149216460551264E+018
+  6.363992319939211E+018
+  5.706788601282088E+018
+  5.151975415112317E+018
+  4.679430924681269E+018
+  4.273309730010815E+018
+  3.921098408145892E+018
+  3.612894092258981E+018
+  3.340856402086506E+018
+  3.098794752563021E+018
+  2.881862647143103E+018
+  2.686338817585354E+018
+  2.509483048031909E+018
+  2.349463575812943E+018
+  2.205364946033132E+018
+  2.077302759920147E+018
+  1.966698753211038E+018
+  1.876811567267546E+018
+  1.813682853725850E+018
+  1.787754135624202E+018
+  1.816546758423902E+018
+  1.928982026007329E+018
+  2.172147797711482E+018
+  2.621564112601795E+018
+  3.396189454024919E+018
+  4.679385280599450E+018
+  6.746539182939445E+018
+  9.998592750760233E+018
+  1.499771837190172E+019
+  2.249615518306097E+019
+  3.344126608340178E+019
+  4.892948690750673E+019
+  7.007092507380403E+019
+  9.771974737015687E+019
+  1.320816098409993E+020
+  1.724628282162619E+020
+  2.173302946584352E+020
+  2.645050867979708E+020
+  3.114730293938227E+020
+  3.557614126102417E+020
+  3.952857523636130E+020
+  4.285910960367990E+020
+  4.549540075503511E+020
+  4.743537875738321E+020
+  4.873495912881110E+020
+  4.949092405703621E+020
+  4.982297372962780E+020
+  4.985764304786230E+020
+  4.971543303568569E+020
+  4.950151245109352E+020
+  4.929979680528798E+020
+  4.917000962170653E+020
+  4.914730790305183E+020
+  4.924406783330576E+020
+  4.945340065193513E+020
+  4.975389344071471E+020
+  5.011498356074120E+020
+  5.050233350555957E+020
+  5.088261657204619E+020
+  5.122726121147673E+020
+  5.151490419866144E+020
+  5.173251812423943E+020
+  5.187535915326959E+020
+  5.194600304135986E+020
+  5.195279885609925E+020
+  5.190806762415682E+020
+  5.182630251937591E+020
+  5.172252387142103E+020
+  5.161088461994821E+020
+  5.150361299369128E+020
+  5.141032897643531E+020
+  5.133771804692091E+020
+  1.048646277231720E+021
+  1.048757570024825E+021
+  1.048892818921504E+021
+  1.049041610111766E+021
+  1.049185786341984E+021
+  1.049297834455511E+021
+  1.049340446233907E+021
+  1.049267583178847E+021
+  1.049027175016627E+021
+  1.048565766913298E+021
+  1.047835010179205E+021
+  1.046799440860274E+021
+  1.045444768567845E+021
+  1.043785600531549E+021
+  1.041871172640005E+021
+  1.039787445950708E+021
+  1.037653931937269E+021
+  1.035613839142186E+021
+  1.033816618782770E+021
+  1.032392760888921E+021
+  1.031421726254145E+021
+  1.030895075013929E+021
+  1.030677989024122E+021
+  1.030473289420587E+021
+  1.029792576160080E+021
+  1.027939214479565E+021
+  1.024007637674744E+021
+  1.016902989154068E+021
+  1.005384632768055E+021
+  9.881364778832660E+020
+  9.638660236613540E+020
+  9.314318166520745E+020
+  8.899948084200411E+020
+  8.391823724447113E+020
+  7.792448041646825E+020
+  7.111747003778083E+020
+  6.367532850790888E+020
+  5.584896687508543E+020
+  4.794337941009857E+020
+  4.028721220846902E+020
+  3.319514853242025E+020
+  2.691955122571756E+020
+  2.158454526985805E+020
+  1.718071080284175E+020
+  1.362032930247195E+020
+  1.078370852147646E+020
+  8.546435963493963E+019
+  6.793544961056982E+019
+  5.425533175383436E+019
+  4.359739121349451E+019
+  3.529338103586888E+019
+  2.881311043420004E+019
+  2.374138210737117E+019
+  1.975598555332353E+019
+  1.660839990190665E+019
+  1.410768706939322E+019
+  1.210746604452913E+019
+  1.049560073805353E+019
+  9.186155465543035E+018
+  8.113184225934601E+018
+  7.225971223126266E+018
+  6.485403025084409E+018
+  5.861214034432212E+018
+  5.329901079952494E+018
+  4.873148368972694E+018
+  4.476640969364029E+018
+  4.129174366734956E+018
+  3.821990752291155E+018
+  3.548291025047105E+018
+  3.302886697466095E+018
+  3.081969858896779E+018
+  2.882994351053070E+018
+  2.704680338088724E+018
+  2.547181746560496E+018
+  2.412497807501741E+018
+  2.305275159938727E+018
+  2.234248242955988E+018
+  2.214719388995603E+018
+  2.272705183125190E+018
+  2.451689822638204E+018
+  2.823335287274942E+018
+  3.503975493377877E+018
+  4.679170450424689E+018
+  6.638789504117218E+018
+  9.824588729272205E+018
+  1.489029784080698E+019
+  2.276972319040134E+019
+  3.473990550828800E+019
+  5.245263594464168E+019
+  7.788830115131538E+019
+  1.131633481291448E+020
+  1.601039559136310E+020
+  2.195811362617005E+020
+  2.910253464890006E+020
+  3.724194999574076E+020
+  4.605087785451059E+020
+  5.512253777006110E+020
+  6.402686880011753E+020
+  7.236925130481917E+020
+  7.983674239713237E+020
+  8.622426068470728E+020
+  9.143980457201233E+020
+  9.549287211859505E+020
+  9.847260783529035E+020
+  1.005220792752472E+021
+  1.018134834009372E+021
+  1.025270696025910E+021
+  1.028348752210469E+021
+  1.028892932553583E+021
+  1.028159879343402E+021
+  1.027105387279394E+021
+  1.026382102266456E+021
+  1.026362653339082E+021
+  1.027182046144837E+021
+  1.028792430388703E+021
+  1.031022844265978E+021
+  1.033636807449791E+021
+  1.036381917062289E+021
+  1.039027669056572E+021
+  1.041390029447148E+021
+  1.043343295017532E+021
+  1.044821306146181E+021
+  1.045811107358287E+021
+  1.046342496209066E+021
+  1.046476212843069E+021
+  1.046292232582329E+021
+  1.045879097020814E+021
+  1.045325454964747E+021
+  1.044714225406403E+021
+  1.044118937439760E+021
+  8.111793073132801E+020
+  8.111533399736080E+020
+  8.112276840650767E+020
+  8.114188378900078E+020
+  8.117307238718645E+020
+  8.121500485670907E+020
+  8.126430030108141E+020
+  8.131539952097691E+020
+  8.136069414904556E+020
+  8.139097196840157E+020
+  8.139619479423746E+020
+  8.136657423919333E+020
+  8.129387305543118E+020
+  8.117281340478148E+020
+  8.100242145777557E+020
+  8.078709761304758E+020
+  8.053718267172317E+020
+  8.026879702838804E+020
+  8.000276904194512E+020
+  7.976254648441640E+020
+  7.957110064574987E+020
+  7.944697526168175E+020
+  7.939978171907939E+020
+  7.942557311126555E+020
+  7.950261981576810E+020
+  7.958814492081076E+020
+  7.961656040015196E+020
+  7.949969017284172E+020
+  7.912939523394002E+020
+  7.838293883716180E+020
+  7.713132720943755E+020
+  7.525067768326442E+020
+  7.263632131811863E+020
+  6.921877146273101E+020
+  6.497987584370192E+020
+  5.996653524231282E+020
+  5.429861952478381E+020
+  4.816762374816938E+020
+  4.182367262564038E+020
+  3.555088655237409E+020
+  2.963449443153714E+020
+  2.431616719513590E+020
+  1.973089727623017E+020
+  1.589613518266886E+020
+  1.275684522850826E+020
+  1.022513545335946E+020
+  8.204374254344700E+019
+  6.602348912544947E+019
+  5.337406980329632E+019
+  4.340463028175378E+019
+  3.554779177121763E+019
+  2.934693493891404E+019
+  2.443971225769701E+019
+  2.054138065381018E+019
+  1.742966452818938E+019
+  1.493179801436054E+019
+  1.291383284035933E+019
+  1.127202740605904E+019
+  9.926026417976775E+018
+  8.813521563903737E+018
+  7.886106644406537E+018
+  7.106079771976471E+018
+  6.443987620988269E+018
+  5.876746305846706E+018
+  5.386207992570377E+018
+  4.958071255546508E+018
+  4.581056736899675E+018
+  4.246288560608322E+018
+  3.946837232781062E+018
+  3.677392743796738E+018
+  3.434048901906641E+018
+  3.214193629594620E+018
+  3.016517817202470E+018
+  2.841181306628276E+018
+  2.690214437676960E+018
+  2.568295606244689E+018
+  2.484140761753241E+018
+  2.452883931820231E+018
+  2.500034240231809E+018
+  2.667876676077765E+018
+  3.025539543341483E+018
+  3.684345628574651E+018
+  4.820392460881426E+018
+  6.706343491760311E+018
+  9.753739518993068E+018
+  1.456508205807865E+019
+  2.199054099455944E+019
+  3.317627793274110E+019
+  4.957916596176309E+019
+  7.290629827350031E+019
+  1.049197404592327E+020
+  1.470346091254196E+020
+  1.997202506524170E+020
+  2.620983055628183E+020
+  3.319993163236477E+020
+  4.062207467378682E+020
+  4.809693828671879E+020
+  5.524189536261350E+020
+  6.172407519083802E+020
+  6.729905342329828E+020
+  7.182939550681705E+020
+  7.528358871985595E+020
+  7.772029987132374E+020
+  7.926455556105555E+020
+  8.008183468973653E+020
+  8.035426328320885E+020
+  8.026112977771805E+020
+  7.996441832283621E+020
+  7.959917549783262E+020
+  7.926817039405267E+020
+  7.904024908750768E+020
+  7.895181027157152E+020
+  7.901081366585938E+020
+  7.920264798480880E+020
+  7.949707366394377E+020
+  7.985539036201437E+020
+  8.023702132788590E+020
+  8.060487384790101E+020
+  8.092909343163127E+020
+  8.118911206633315E+020
+  8.137413389015877E+020
+  8.148237383588947E+020
+  8.151946216410546E+020
+  8.149644041308643E+020
+  8.142768725239566E+020
+  8.132897410599944E+020
+  8.121577790804844E+020
+  8.110197578531686E+020
+  8.099897408104016E+020
+  8.091524598506502E+020
+  6.572236990707390E+020
+  6.572246057516629E+020
+  6.572933343183853E+020
+  6.574388413535026E+020
+  6.576609544426245E+020
+  6.579472375266138E+020
+  6.582708907827595E+020
+  6.585901731751951E+020
+  6.588496975104267E+020
+  6.589840177414937E+020
+  6.589235901678892E+020
+  6.586027997356471E+020
+  6.579694689056756E+020
+  6.569949295091033E+020
+  6.556833592001547E+020
+  6.540788010251376E+020
+  6.522681682890570E+020
+  6.503786179664093E+020
+  6.485680009678789E+020
+  6.470077099343945E+020
+  6.458581347818719E+020
+  6.452380145621151E+020
+  6.451900857951799E+020
+  6.456463858504790E+020
+  6.463972091149291E+020
+  6.470679426024435E+020
+  6.471078479529103E+020
+  6.457944347846423E+020
+  6.422565438777493E+020
+  6.355186870270709E+020
+  6.245684003022223E+020
+  6.084469013463243E+020
+  5.863605665246125E+020
+  5.578061351943799E+020
+  5.226960957373926E+020
+  4.814634004507452E+020
+  4.351189338823629E+020
+  3.852348277698089E+020
+  3.338355573879616E+020
+  2.831980717513891E+020
+  2.355888706061616E+020
+  1.929105608015458E+020
+  1.562057532101508E+020
+  1.255792226476581E+020
+  1.005622223484700E+020
+  8.043018562326159E+019
+  6.439496915571489E+019
+  5.170891898592884E+019
+  4.171274096460336E+019
+  3.385044471631525E+019
+  2.766669842671725E+019
+  2.279598638823826E+019
+  1.894893830099756E+019
+  1.589866457932305E+019
+  1.346842827276883E+019
+  1.152114110679547E+019
+  9.950727966182554E+018
+  8.675193852335435E+018
+  7.631147551402873E+018
+  6.769525182399267E+018
+  6.052278100042886E+018
+  5.449823099521949E+018
+  4.939088255732236E+018
+  4.502020428378377E+018
+  4.124448771425845E+018
+  3.795222152719154E+018
+  3.505557499947504E+018
+  3.248551365312506E+018
+  3.018819307515739E+018
+  2.812238100091619E+018
+  2.625775591019985E+018
+  2.457403893436515E+018
+  2.306105671817948E+018
+  2.172003719940549E+018
+  2.056675356644793E+018
+  1.963761939151242E+018
+  1.900058990645819E+018
+  1.877385428397830E+018
+  1.915693729135087E+018
+  2.048106776793392E+018
+  2.328851350157360E+018
+  2.845376189567981E+018
+  3.736213956890311E+018
+  5.216194576934908E+018
+  7.610113867548157E+018
+  1.139436918042931E+019
+  1.724262663217497E+019
+  2.606537330890829E+019
+  3.902348702725194E+019
+  5.748279820132930E+019
+  8.286202811550920E+019
+  1.163160475702851E+020
+  1.582602658303848E+020
+  2.080463898740939E+020
+  2.639984272746044E+020
+  3.236078971294414E+020
+  3.838769023499015E+020
+  4.417563065642442E+020
+  4.945672322599601E+020
+  5.403128327693681E+020
+  5.778329646794146E+020
+  6.068040637360986E+020
+  6.276217587962034E+020
+  6.412176077361512E+020
+  6.488572186051455E+020
+  6.519532222160602E+020
+  6.519111181719154E+020
+  6.500139334725775E+020
+  6.473445074740989E+020
+  6.447412651116568E+020
+  6.427827978792740E+020
+  6.417967759126455E+020
+  6.418886511245193E+020
+  6.429850160629113E+020
+  6.448856573855438E+020
+  6.473178383669149E+020
+  6.499866344155822E+020
+  6.526163801822581E+020
+  6.549802226237200E+020
+  6.569169073183757E+020
+  6.583357715106401E+020
+  6.592122413424729E+020
+  6.595769004140521E+020
+  6.595013239895269E+020
+  6.590832259446158E+020
+  6.584324124881293E+020
+  6.576585006064417E+020
+  6.568613597810381E+020
+  6.561246677802906E+020
+  6.555123678954742E+020
+  3.072272793397838E+020
+  3.072263832774672E+020
+  3.072580608051134E+020
+  3.073267694503154E+020
+  3.074326307443190E+020
+  3.075699263763452E+020
+  3.077260811558795E+020
+  3.078813654237774E+020
+  3.080094850174355E+020
+  3.080792591344230E+020
+  3.080574274434497E+020
+  3.079124438391365E+020
+  3.076189843951295E+020
+  3.071627372744991E+020
+  3.065448627866468E+020
+  3.057853768904338E+020
+  3.049246547433154E+020
+  3.040222871025113E+020
+  3.031526737297991E+020
+  3.023970251151460E+020
+  3.018318623840833E+020
+  3.015146138381192E+020
+  3.014674320252753E+020
+  3.016608095193465E+020
+  3.019988759168084E+020
+  3.023083693238287E+020
+  3.023332022490944E+020
+  3.017363434367805E+020
+  3.001104883001908E+020
+  2.969987202611927E+020
+  2.919259936576514E+020
+  2.844415825107836E+020
+  2.741713416575692E+020
+  2.608764697381668E+020
+  2.445124392833185E+020
+  2.252783277272002E+020
+  2.036440857588168E+020
+  1.803431007227912E+020
+  1.563215314090185E+020
+  1.326449281101835E+020
+  1.103751512391770E+020
+  9.040468295297365E+019
+  7.322384755777018E+019
+  5.888381251574376E+019
+  4.716688869471848E+019
+  3.773520746269148E+019
+  3.022075249766227E+019
+  2.427414680560778E+019
+  1.958713807487971E+019
+  1.589966189729773E+019
+  1.299865799228492E+019
+  1.071303583507350E+019
+  8.907304795772110E+018
+  7.475197903658636E+018
+  6.333914390327884E+018
+  5.419211151782769E+018
+  4.681365398563039E+018
+  4.081931937832120E+018
+  3.591180859266652E+018
+  3.186095969037417E+018
+  2.848824107251844E+018
+  2.565481021913884E+018
+  2.325235944358096E+018
+  2.119612254416099E+018
+  1.941954832310216E+018
+  1.787025699373538E+018
+  1.650698478721466E+018
+  1.529729347978192E+018
+  1.421587911518430E+018
+  1.324336291252845E+018
+  1.236549331999191E+018
+  1.157273905500818E+018
+  1.086031903440511E+018
+  1.022881096526209E+018
+  9.685627378493009E+017
+  9.247876732093812E+017
+  8.947479964663508E+017
+  8.839942770836420E+017
+  9.018949648120859E+017
+  9.639994889445297E+017
+  1.095759636941859E+018
+  1.338212484056452E+018
+  1.756354638914370E+018
+  2.450958933414675E+018
+  3.574346796384424E+018
+  5.349880845021900E+018
+  8.093324031312201E+018
+  1.223129926747142E+019
+  1.830753002403613E+019
+  2.696138592395854E+019
+  3.885644242472552E+019
+  5.453191007169067E+019
+  7.417977870536427E+019
+  9.749320464810597E+019
+  1.236839473971635E+020
+  1.515744529546764E+020
+  1.797591285860649E+020
+  2.068099513149788E+020
+  2.314739581938441E+020
+  2.528190420490640E+020
+  2.703059520075017E+020
+  2.837877023236935E+020
+  2.934540837960204E+020
+  2.997454186390758E+020
+  3.032577239517136E+020
+  3.046549524468620E+020
+  3.045967287767155E+020
+  3.036843386892824E+020
+  3.024243971509085E+020
+  3.012082465500724E+020
+  3.003048865627849E+020
+  2.998653327493416E+020
+  2.999362676469560E+020
+  3.004805643453613E+020
+  3.014018720013659E+020
+  3.025702158109502E+020
+  3.038457027008588E+020
+  3.050980085179406E+020
+  3.062202370092739E+020
+  3.071367474624422E+020
+  3.078054182865310E+020
+  3.082154368391953E+020
+  3.083820662735448E+020
+  3.083398975001811E+020
+  3.081357880984891E+020
+  3.078221938825679E+020
+  3.074513452719020E+020
+  3.070707190600965E+020
+  3.067199895909609E+020
+  3.064293601862040E+020
+  1.537437800970163E+021
+  1.537665845405437E+021
+  1.537867245104389E+021
+  1.538010045580310E+021
+  1.538056298189726E+021
+  1.537961883180175E+021
+  1.537677484503961E+021
+  1.537150853276305E+021
+  1.536330233031502E+021
+  1.535169182153292E+021
+  1.533632547793119E+021
+  1.531702853247085E+021
+  1.529386235016832E+021
+  1.526716846762475E+021
+  1.523758338060584E+021
+  1.520600875299520E+021
+  1.517352283583950E+021
+  1.514122226355401E+021
+  1.510998914997528E+021
+  1.508018683070896E+021
+  1.505129832338044E+021
+  1.502153330381384E+021
+  1.498744026259288E+021
+  1.494356871253343E+021
+  1.488223071742124E+021
+  1.479341154201285E+021
+  1.466487697083451E+021
+  1.448252147883926E+021
+  1.423099783681109E+021
+  1.389466309514799E+021
+  1.345886232479378E+021
+  1.291154054279219E+021
+  1.224511520909862E+021
+  1.145845219213441E+021
+  1.055867445843971E+021
+  9.562420123219606E+020
+  8.496102447440943E+020
+  7.394772750918681E+020
+  6.299399650256324E+020
+  5.252752101834621E+020
+  4.294529054895932E+020
+  3.455298255859563E+020
+  2.748409925160928E+020
+  2.169901619455134E+020
+  1.706034432020305E+020
+  1.339423024611676E+020
+  1.052555385106419E+020
+  8.295558368865598E+019
+  6.568756925467626E+019
+  5.233876944724593E+019
+  4.201859758180052E+019
+  3.402686576012733E+019
+  2.781990509835325E+019
+  2.297921836494647E+019
+  1.918453587475431E+019
+  1.619165936310448E+019
+  1.381476129972195E+019
+  1.191251865026756E+019
+  1.037739790657908E+019
+  9.127454728919905E+018
+  8.100101056804336E+018
+  7.247390830762957E+018
+  6.532466719692202E+018
+  5.926888600986601E+018
+  5.408628950698493E+018
+  4.960571801924649E+018
+  4.569392343143461E+018
+  4.224725646968402E+018
+  3.918557647206429E+018
+  3.644791620273258E+018
+  3.398961568068398E+018
+  3.178082963125582E+018
+  2.980655083623436E+018
+  2.806862955773906E+018
+  2.659078537517226E+018
+  2.542841646812201E+018
+  2.468627431182221E+018
+  2.454900420186406E+018
+  2.533241353673674E+018
+  2.756737890639952E+018
+  3.213367831012255E+018
+  4.046750053349071E+018
+  5.487285560585139E+018
+  7.897087297988774E+018
+  1.183165530377901E+019
+  1.811903577651643E+019
+  2.795173904091395E+019
+  4.297605596837039E+019
+  6.534565461803940E+019
+  9.768058414180947E+019
+  1.428413531278637E+020
+  2.033994279507900E+020
+  2.807847081979607E+020
+  3.746311079831600E+020
+  4.827107445293638E+020
+  6.011392108556797E+020
+  7.248633689724400E+020
+  8.483698914286421E+020
+  9.664325357494165E+020
+  1.074727799608803E+021
+  1.170213119841237E+021
+  1.251243871966039E+021
+  1.317471944917527E+021
+  1.369602912442789E+021
+  1.409091712635373E+021
+  1.437839488673728E+021
+  1.457929970863388E+021
+  1.471422130579711E+021
+  1.480201217806519E+021
+  1.485882826340859E+021
+  1.489762171652670E+021
+  1.492800735267728E+021
+  1.495642892806854E+021
+  1.498655183455987E+021
+  1.501980486081948E+021
+  1.505599069239796E+021
+  1.509388885245074E+021
+  1.513178865884983E+021
+  1.516791126814711E+021
+  1.520070322191946E+021
+  1.522900398117097E+021
+  1.525210553366733E+021
+  1.526973403674117E+021
+  1.528198850909069E+021
+  1.528926395346465E+021
+  1.529217097067506E+021
+  1.529145928015196E+021
+  1.528795784907304E+021
+  1.528253458799030E+021
+  1.527606751108954E+021
+  1.358724357088678E+019
+  1.358941730645354E+019
+  1.359107508827398E+019
+  1.359187168522507E+019
+  1.359143543902179E+019
+  1.358937373638358E+019
+  1.358528439124364E+019
+  1.357877241804310E+019
+  1.356946974897427E+019
+  1.355705931907594E+019
+  1.354130158226979E+019
+  1.352205829205966E+019
+  1.349930851137031E+019
+  1.347315110501034E+019
+  1.344378630437702E+019
+  1.341146842479142E+019
+  1.337642297863769E+019
+  1.333872382239094E+019
+  1.329812955521516E+019
+  1.325388338504224E+019
+  1.320448693652103E+019
+  1.314746523496573E+019
+  1.307914630015154E+019
+  1.299448349124360E+019
+  1.288695148959188E+019
+  1.274854775442930E+019
+  1.256993116507461E+019
+  1.234072918045102E+019
+  1.205004410075359E+019
+  1.168718563566407E+019
+  1.124264576810920E+019
+  1.070930551588990E+019
+  1.008381505447589E+019
+  9.368017257567549E+018
+  8.570197996451839E+018
+  7.705865932618586E+018
+  6.797727359508100E+018
+  5.874575258982359E+018
+  4.968990615271279E+018
+  4.114048494352485E+018
+  3.339562806619647E+018
+  2.667540195526553E+018
+  2.106222746915648E+018
+  1.650435401134577E+018
+  1.287710534579684E+018
+  1.003135647004822E+018
+  7.820710830051386E+017
+  6.114599485029166E+017
+  4.802947401054437E+017
+  3.796263682140781E+017
+  3.023559156794714E+017
+  2.429475738162498E+017
+  1.971358980897471E+017
+  1.616615344169257E+017
+  1.340478129334943E+017
+  1.124193675123036E+017
+  9.535875366779152E+016
+  8.179516084839150E+016
+  7.091913433275258E+016
+  6.211781666844278E+016
+  5.492608614596341E+016
+  4.898985674266938E+016
+  4.403859934548968E+016
+  3.986481199831575E+016
+  3.630870690522722E+016
+  3.324680783289318E+016
+  3.058348195029298E+016
+  2.824468441854632E+016
+  2.617339135152006E+016
+  2.432635611897273E+016
+  2.267196514102904E+016
+  2.118911487731279E+016
+  1.986721040453516E+016
+  1.870763806513380E+016
+  1.772744932167148E+016
+  1.696659742461359E+016
+  1.650101779965644E+016
+  1.646530671207407E+016
+  1.709094127839367E+016
+  1.876911957934805E+016
+  2.215153289797588E+016
+  2.830760495076078E+016
+  3.896222044988416E+016
+  5.684176711453420E+016
+  8.615434921934330E+016
+  1.332149499928553E+017
+  2.071865263698491E+017
+  3.208277737153377E+017
+  4.910006538218389E+017
+  7.384857643201902E+017
+  1.086394520423524E+018
+  1.556217767620097E+018
+  2.161266574282492E+018
+  2.901416705133626E+018
+  3.762213591090923E+018
+  4.716007744796584E+018
+  5.725303131339423E+018
+  6.747945231355536E+018
+  7.742808054266902E+018
+  8.674664718212578E+018
+  9.517369791955186E+018
+  1.025509014183741E+019
+  1.088184043919754E+019
+  1.139986962048572E+019
+  1.181749731193440E+019
+  1.214688948738630E+019
+  1.240208698811220E+019
+  1.259743445933781E+019
+  1.274643893516665E+019
+  1.286102225672202E+019
+  1.295110663269458E+019
+  1.302446977852830E+019
+  1.308681045404889E+019
+  1.314196880584954E+019
+  1.319224706316870E+019
+  1.323877734318372E+019
+  1.328188816722040E+019
+  1.332143151477680E+019
+  1.335704630234557E+019
+  1.338834828347611E+019
+  1.341504764255582E+019
+  1.343700433994435E+019
+  1.345423898556797E+019
+  1.346692093939627E+019
+  1.347534967926951E+019
+  1.347993375118478E+019
+  1.348116927837326E+019
+  1.347962604071317E+019
+  1.347594150428141E+019
+  1.347081421538400E+019
+  1.757861962653531E+021
+  1.758143680551715E+021
+  1.758372122695936E+021
+  1.758504889574214E+021
+  1.758494735010913E+021
+  1.758290090892802E+021
+  1.757836659863822E+021
+  1.757080099750099E+021
+  1.755969544505119E+021
+  1.754462158725185E+021
+  1.752528425623931E+021
+  1.750157377943704E+021
+  1.747360919927217E+021
+  1.744176221247825E+021
+  1.740664888123500E+021
+  1.736907518326878E+021
+  1.732992405715452E+021
+  1.728997531622708E+021
+  1.724965566452759E+021
+  1.720872433412744E+021
+  1.716591021418606E+021
+  1.711852747354883E+021
+  1.706210680525613E+021
+  1.699008690711382E+021
+  1.689361473422823E+021
+  1.676150355895642E+021
+  1.658039613520081E+021
+  1.633517784954484E+021
+  1.600968213085537E+021
+  1.558772505517716E+021
+  1.505449117984018E+021
+  1.439825783467508E+021
+  1.361238041086843E+021
+  1.269736308054735E+021
+  1.166271728634359E+021
+  1.052819282954556E+021
+  9.323905312891427E+020
+  8.088946876398233E+020
+  6.868306878873372E+020
+  5.708337552873971E+020
+  4.651485303087464E+020
+  3.729823198316949E+020
+  2.956501670613874E+020
+  2.325920280694176E+020
+  1.822067857504621E+020
+  1.425221571319697E+020
+  1.115752761815393E+020
+  8.760013222626972E+019
+  6.909809827715359E+019
+  5.484415511877142E+019
+  4.386189866731752E+019
+  3.538659039938678E+019
+  2.882657081540215E+019
+  2.372796933357356E+019
+  1.974460641701800E+019
+  1.661339085633967E+019
+  1.413476117557693E+019
+  1.215742996892304E+019
+  1.056664142155230E+019
+  9.275217336573850E+018
+  8.216774875112971E+018
+  7.340613571550175E+018
+  6.607873602587316E+018
+  5.988656005664461E+018
+  5.459867899349411E+018
+  5.003613242584984E+018
+  4.605994534897830E+018
+  4.256225574525621E+018
+  3.945982473784589E+018
+  3.668942146194985E+018
+  3.420477152802557E+018
+  3.197496277292761E+018
+  2.998445542697562E+018
+  2.823520275432455E+018
+  2.675193616705256E+018
+  2.559252848312436E+018
+  2.486669508351853E+018
+  2.476835987695192E+018
+  2.563008822269699E+018
+  2.801236665618725E+018
+  3.284636804471182E+018
+  4.165597542263721E+018
+  5.689215180747785E+018
+  8.241740084893153E+018
+  1.241742462558080E+019
+  1.910490527027053E+019
+  2.958850724933515E+019
+  4.564849474805609E+019
+  6.962507108964626E+019
+  1.043827067180249E+020
+  1.530763289857020E+020
+  2.185883212967602E+020
+  3.026091340205742E+020
+  4.049167313601277E+020
+  5.232794078171563E+020
+  6.536475693679692E+020
+  7.906531974558671E+020
+  9.283571468360312E+020
+  1.061051875819166E+021
+  1.183935411565626E+021
+  1.293538393682953E+021
+  1.387873079808137E+021
+  1.466345514661368E+021
+  1.529510838207464E+021
+  1.578756890105851E+021
+  1.615984190480818E+021
+  1.643324922905706E+021
+  1.662920216882327E+021
+  1.676758875672981E+021
+  1.686572159717994E+021
+  1.693776223367703E+021
+  1.699453630456120E+021
+  1.704365952917462E+021
+  1.708989721116105E+021
+  1.713567825746242E+021
+  1.718168338833327E+021
+  1.722743216698651E+021
+  1.727180760142187E+021
+  1.731347819719309E+021
+  1.735119975302091E+021
+  1.738399807196989E+021
+  1.741124860452830E+021
+  1.743268115318887E+021
+  1.744834353054560E+021
+  1.745855026022607E+021
+  1.746382611416181E+021
+  1.746485013093113E+021
+  1.746241278855371E+021
+  1.745738851096175E+021
+  1.745071346705317E+021
+  3.224747878868002E+019
+  3.224759329592702E+019
+  3.225078692697599E+019
+  3.225745177162122E+019
+  3.226755477577835E+019
+  3.228048900907652E+019
+  3.229497223391732E+019
+  3.230901532970615E+019
+  3.231997682993331E+019
+  3.232472379802683E+019
+  3.231990328872606E+019
+  3.230231038370663E+019
+  3.226932633326496E+019
+  3.221938468787408E+019
+  3.215240548262600E+019
+  3.207012418146540E+019
+  3.197623649144557E+019
+  3.187628364338236E+019
+  3.177721748488653E+019
+  3.168661286993586E+019
+  3.161153599971685E+019
+  3.155712753675060E+019
+  3.152501129113355E+019
+  3.151168441723352E+019
+  3.150707561913969E+019
+  3.149346953367783E+019
+  3.144498910216956E+019
+  3.132780902695523E+019
+  3.110124939968917E+019
+  3.071987168060778E+019
+  3.013666090202341E+019
+  2.930730661433815E+019
+  2.819546123043309E+019
+  2.677863419401740E+019
+  2.505407452878484E+019
+  2.304365066805736E+019
+  2.079647100529238E+019
+  1.838798103537145E+019
+  1.591470016458363E+019
+  1.348468111436508E+019
+  1.120503552000465E+019
+  9.165222776142575E+018
+  7.413633705791861E+018
+  5.954107447321578E+018
+  4.763390708899876E+018
+  3.806283280575148E+018
+  3.044765198372481E+018
+  2.442909812199657E+018
+  1.969120694807883E+018
+  1.596806856881119E+018
+  1.304228374522432E+018
+  1.073959203941162E+018
+  8.922215449255567E+017
+  7.482252636691007E+017
+  6.335744381286327E+017
+  5.417631951990358E+017
+  4.677621623004621E+017
+  4.076870625352811E+017
+  3.585373552869243E+017
+  3.179924246274908E+017
+  2.842539235741880E+017
+  2.559245397025671E+017
+  2.319151758437270E+017
+  2.113741251544861E+017
+  1.936331859184609E+017
+  1.781667948334629E+017
+  1.645611742426894E+017
+  1.524912201132356E+017
+  1.417034456809349E+017
+  1.320037921303935E+017
+  1.232495844702248E+017
+  1.153454254519949E+017
+  1.082434868354105E+017
+  1.019496232852330E+017
+  9.653821539685622E+016
+  9.218095529360189E+016
+  8.919834745113515E+016
+  8.814805040967635E+016
+  8.997193365818298E+016
+  9.623436373438506E+016
+  1.094977741271786E+017
+  1.338967918591777E+017
+  1.759853291531867E+017
+  2.459337892301868E+017
+  3.591303529874757E+017
+  5.381657395777623E+017
+  8.150183511757972E+017
+  1.232962706871689E+018
+  1.847262164898044E+018
+  2.723078890450102E+018
+  3.928332802545442E+018
+  5.518729589768225E+018
+  7.515185612778174E+018
+  9.888329716389298E+018
+  1.256002211742779E+019
+  1.541239948797114E+019
+  1.830395418019158E+019
+  2.109019482413818E+019
+  2.364361313277717E+019
+  2.586853946952857E+019
+  2.770861131639527E+019
+  2.914692473175720E+019
+  3.020061437733946E+019
+  3.091227798144979E+019
+  3.134048069907009E+019
+  3.155093160779704E+019
+  3.160919721922494E+019
+  3.157524364916198E+019
+  3.149975782529024E+019
+  3.142205389621388E+019
+  3.136934184742896E+019
+  3.135714323388808E+019
+  3.139063599320301E+019
+  3.146668355447740E+019
+  3.157626648397701E+019
+  3.170701312216710E+019
+  3.184554088691187E+019
+  3.197937894147910E+019
+  3.209833406317499E+019
+  3.219526105188839E+019
+  3.226628447308076E+019
+  3.231057961588492E+019
+  3.232985638701928E+019
+  3.232769599079940E+019
+  3.230885935730903E+019
+  3.227863569546057E+019
+  3.224227454699044E+019
+  3.220454628473056E+019
+  3.216944895682393E+019
+  3.214004979171629E+019
+  3.450513140663132E+019
+  3.450464977308690E+019
+  3.450794801244333E+019
+  3.451558362115980E+019
+  3.452762131420008E+019
+  3.454345454560237E+019
+  3.456167949347530E+019
+  3.458004803078292E+019
+  3.459551932479078E+019
+  3.460443366686543E+019
+  3.460281461235259E+019
+  3.458678520743853E+019
+  3.455306976071860E+019
+  3.449953476011742E+019
+  3.442570224153133E+019
+  3.433315335428870E+019
+  3.422573273022186E+019
+  3.410946717956939E+019
+  3.399212777029798E+019
+  3.388239498064879E+019
+  3.378863209769843E+019
+  3.371732802543050E+019
+  3.367132923578003E+019
+  3.364803204153575E+019
+  3.363774182865261E+019
+  3.362242020503851E+019
+  3.357503480862188E+019
+  3.345970587997499E+019
+  3.323281661944378E+019
+  3.284522403375324E+019
+  3.224566494881390E+019
+  3.138537514774098E+019
+  3.022379610846555E+019
+  2.873500668942650E+019
+  2.691418544046217E+019
+  2.478303306072227E+019
+  2.239278846386218E+019
+  1.982345122299153E+019
+  1.717827284573255E+019
+  1.457356801896429E+019
+  1.212526595120949E+019
+  9.930772568831549E+018
+  8.043444216197468E+018
+  6.468539427042978E+018
+  5.181911442726281E+018
+  4.146310355109139E+018
+  3.321242386722353E+018
+  2.668303944175198E+018
+  2.153633316091440E+018
+  1.748674369401277E+018
+  1.430039000187678E+018
+  1.178949865202308E+018
+  9.805385287001969E+017
+  8.231441916537203E+017
+  6.976811125034322E+017
+  5.970996428244622E+017
+  5.159431107006253E+017
+  4.499920231549096E+017
+  3.959829796135757E+017
+  3.513891270814079E+017
+  3.142500827097478E+017
+  2.830409661164437E+017
+  2.565719974449197E+017
+  2.339117926834987E+017
+  2.143289382391256E+017
+  1.972476344961359E+017
+  1.822141775671228E+017
+  1.688718315194995E+017
+  1.569422743493985E+017
+  1.462123350608830E+017
+  1.365252433614749E+017
+  1.277761718368612E+017
+  1.199125758918505E+017
+  1.129408898851871E+017
+  1.069427531710745E+017
+  1.021064542868920E+017
+  9.878315732918138E+016
+  9.758329591449005E+016
+  9.953693148079610E+016
+  1.063533938864309E+017
+  1.208301315683372E+017
+  1.474770172084740E+017
+  1.934362297599105E+017
+  2.697801612254679E+017
+  3.932436667198699E+017
+  5.883647972095785E+017
+  8.898305959012567E+017
+  1.344505034418722E+018
+  2.012116677790399E+018
+  2.962908286749506E+018
+  4.269802627180136E+018
+  5.992105010122280E+018
+  8.151054716863070E+018
+  1.071320726415560E+019
+  1.359237910746784E+019
+  1.665976866345047E+019
+  1.976164715202553E+019
+  2.274188970524357E+019
+  2.546359437125554E+019
+  2.782501695516411E+019
+  2.976740850416158E+019
+  3.127489751035130E+019
+  3.236836411011863E+019
+  3.309595663269210E+019
+  3.352268141159541E+019
+  3.372078323895202E+019
+  3.376183882530406E+019
+  3.371086517026673E+019
+  3.362237931540965E+019
+  3.353819420639198E+019
+  3.348670640619680E+019
+  3.348344009267668E+019
+  3.353260680987286E+019
+  3.362940899863672E+019
+  3.376277340749599E+019
+  3.391817652674329E+019
+  3.408024214284163E+019
+  3.423485804650237E+019
+  3.437066147562525E+019
+  3.447985442751361E+019
+  3.455840540505074E+019
+  3.460576167167802E+019
+  3.462423459527302E+019
+  3.461822589141222E+019
+  3.459342764104635E+019
+  3.455607312123145E+019
+  3.451228721206271E+019
+  3.446758538658502E+019
+  3.442654070611028E+019
+  3.439260666587254E+019
+  1.103596230360858E+020
+  1.103550016945878E+020
+  1.103648968309083E+020
+  1.103917949847762E+020
+  1.104364069452916E+020
+  1.104970006345280E+020
+  1.105689169983755E+020
+  1.106443667395995E+020
+  1.107125831973504E+020
+  1.107604169708592E+020
+  1.107733980111202E+020
+  1.107372207613516E+020
+  1.106395556791536E+020
+  1.104720261048933E+020
+  1.102321170770194E+020
+  1.099247260456952E+020
+  1.095630373206760E+020
+  1.091684089588460E+020
+  1.087690121281456E+020
+  1.083970677255323E+020
+  1.080846826673639E+020
+  1.078584840873885E+020
+  1.077334561756238E+020
+  1.077065673435659E+020
+  1.077509029477120E+020
+  1.078110716976876E+020
+  1.078006330853383E+020
+  1.076022196288804E+020
+  1.070709303512050E+020
+  1.060414650650168E+020
+  1.043393281670543E+020
+  1.017961811588142E+020
+  9.826895650347046E+019
+  9.366156608480954E+019
+  8.794693292124794E+019
+  8.118580161221052E+019
+  7.353775011509279E+019
+  6.525968713008657E+019
+  5.668854411184117E+019
+  4.820811980114686E+019
+  4.020461203599068E+019
+  3.300601315061271E+019
+  2.679626702172070E+019
+  2.160016467637060E+019
+  1.734417790583746E+019
+  1.391007082721683E+019
+  1.116756029648309E+019
+  8.992164116307958E+018
+  7.273555653142252E+018
+  5.918318536396516E+018
+  4.849681389138723E+018
+  4.005821174355614E+018
+  3.337649449960140E+018
+  2.806568877007423E+018
+  2.382432683220732E+018
+  2.041796016955910E+018
+  1.766471786640258E+018
+  1.542366722691864E+018
+  1.358558832523762E+018
+  1.206574720584030E+018
+  1.079828237282147E+018
+  9.731871412871821E+017
+  8.826401338316110E+017
+  8.050419407873827E+017
+  7.379187642687190E+017
+  6.793203208143391E+017
+  6.277078593316430E+017
+  5.818701024663736E+017
+  5.408611188540389E+017
+  5.039558894344570E+017
+  4.706209992047190E+017
+  4.404997461584542E+017
+  4.134133886943972E+017
+  3.893837887649418E+017
+  3.686881340506802E+017
+  3.519648626593627E+017
+  3.404029026991104E+017
+  3.360658034844758E+017
+  3.424303728177396E+017
+  3.652576762460175E+017
+  4.139624441850826E+017
+  5.037001832423346E+017
+  6.584353429669558E+017
+  9.152579240900211E+017
+  1.330123211363538E+018
+  1.984908131995410E+018
+  2.995078623739104E+018
+  4.516194399757891E+018
+  6.745822061326208E+018
+  9.915210986779843E+018
+  1.426266866884338E+019
+  1.997892058520847E+019
+  2.712587218782286E+019
+  3.558232940091759E+019
+  4.505213214751214E+019
+  5.509963386287519E+019
+  6.521010415290366E+019
+  7.486556619054870E+019
+  8.361672163374416E+019
+  9.113515475159186E+019
+  9.723806758507182E+019
+  1.018863767322993E+020
+  1.051629564849249E+020
+  1.072400277921767E+020
+  1.083438315681377E+020
+  1.087222584448186E+020
+  1.086184220518808E+020
+  1.082511013141911E+020
+  1.078017865038819E+020
+  1.074075869703989E+020
+  1.071591805310758E+020
+  1.071030178034713E+020
+  1.072469704487611E+020
+  1.075684935822182E+020
+  1.080242197594931E+020
+  1.085598153339813E+020
+  1.091189920926332E+020
+  1.096508010156813E+020
+  1.101146933534933E+020
+  1.104832242177707E+020
+  1.107426075111379E+020
+  1.108915654001705E+020
+  1.109390456124114E+020
+  1.109013933826773E+020
+  1.107994432455104E+020
+  1.106558052026523E+020
+  1.104925193395545E+020
+  1.103292473637270E+020
+  1.101820705962804E+020
+  1.100628589816126E+020
+  5.087132641800756E+020
+  5.087059429746660E+020
+  5.087563504159755E+020
+  5.088730682315307E+020
+  5.090572074629812E+020
+  5.092997454450487E+020
+  5.095796780490171E+020
+  5.098633914918732E+020
+  5.101055522469949E+020
+  5.102518653873514E+020
+  5.102437849676502E+020
+  5.100249504210470E+020
+  5.095489007712360E+020
+  5.087873447149905E+020
+  5.077379568680713E+020
+  5.064304361139305E+020
+  5.049294574551623E+020
+  5.033331999083762E+020
+  5.017663786449682E+020
+  5.003671861220261E+020
+  4.992682486061244E+020
+  4.985725631516311E+020
+  4.983262731906596E+020
+  4.984909193621419E+020
+  4.989183309130243E+020
+  4.993315248471678E+020
+  4.993148671247120E+020
+  4.983164197508410E+020
+  4.956649755375173E+020
+  4.906038218865687E+020
+  4.823426496920716E+020
+  4.701278833106678E+020
+  4.533295594779743E+020
+  4.315393087339950E+020
+  4.046689665016830E+020
+  3.730336119196233E+020
+  3.373982866398044E+020
+  2.989672521986251E+020
+  2.593013842162534E+020
+  2.201642526015908E+020
+  1.833182254535504E+020
+  1.502489936775253E+020
+  1.217776039838323E+020
+  9.799688272137286E+019
+  7.855269740453075E+019
+  6.289015436974883E+019
+  5.040293336524271E+019
+  4.051440130247460E+019
+  3.271516110169593E+019
+  2.657501363363306E+019
+  2.174120460358963E+019
+  1.793024044483969E+019
+  1.491744730246027E+019
+  1.252648425628662E+019
+  1.061985526050531E+019
+  9.090808502483640E+018
+  7.856665913856659E+018
+  6.853460363137781E+018
+  6.031694421159900E+018
+  5.353024651774730E+018
+  4.787690900346379E+018
+  4.312535288572688E+018
+  3.909482556713883E+018
+  3.564378403130828E+018
+  3.266104191559799E+018
+  3.005904524958683E+018
+  2.776878913575848E+018
+  2.573600557680233E+018
+  2.391834780591721E+018
+  2.228337713310125E+018
+  2.080723458239356E+018
+  1.947396418874413E+018
+  1.827556484691797E+018
+  1.721300740490201E+018
+  1.629869879504359E+018
+  1.556125645124201E+018
+  1.505404397386055E+018
+  1.486980122109915E+018
+  1.516497574020776E+018
+  1.619910522864655E+018
+  1.839680704337653E+018
+  2.244238822113250E+018
+  2.941916368311092E+018
+  4.100587579266142E+018
+  5.973857800188495E+018
+  8.933379969399320E+018
+  1.350418075390041E+019
+  2.039503166208212E+019
+  3.050834247107010E+019
+  4.490386398968256E+019
+  6.467925379342799E+019
+  9.072264978351599E+019
+  1.233424774132661E+020
+  1.620169080074267E+020
+  2.054251772075154E+020
+  2.516030698873553E+020
+  2.982129345844960E+020
+  3.428863736210966E+020
+  3.835521829650859E+020
+  4.186772619745803E+020
+  4.473841927155125E+020
+  4.694480087429574E+020
+  4.852019888554931E+020
+  4.953928398650963E+020
+  5.010221641365451E+020
+  5.032001867170034E+020
+  5.030256181591127E+020
+  5.014961283768680E+020
+  4.994484043742679E+020
+  4.975245120783250E+020
+  4.961608840306651E+020
+  4.955964101480543E+020
+  4.958960365920753E+020
+  4.969857861306498E+020
+  4.986944514370797E+020
+  5.007968201292385E+020
+  5.030535377056842E+020
+  5.052437147509884E+020
+  5.071879382482247E+020
+  5.087610499694600E+020
+  5.098955220869971E+020
+  5.105773038984635E+020
+  5.108366099466015E+020
+  5.107362049941097E+020
+  5.103592187912365E+020
+  5.097976854066492E+020
+  5.091425696433610E+020
+  5.084760343335635E+020
+  5.078662570747437E+020
+  5.073646319469079E+020
+  6.726296146667977E+020
+  6.725792501393423E+020
+  6.726329570741815E+020
+  6.728106327346958E+020
+  6.731201090349859E+020
+  6.735524192493450E+020
+  6.740782485098888E+020
+  6.746462453772017E+020
+  6.751837350112594E+020
+  6.756004267251912E+020
+  6.757953244334547E+020
+  6.756665935173267E+020
+  6.751237834945827E+020
+  6.741013714744639E+020
+  6.725721048258430E+020
+  6.705582312061061E+020
+  6.681384936330519E+020
+  6.654487840857656E+020
+  6.626746571703937E+020
+  6.600345677665312E+020
+  6.577537143802703E+020
+  6.560296515015917E+020
+  6.549922022240556E+020
+  6.546614309911019E+020
+  6.549083103966563E+020
+  6.554230992368334E+020
+  6.556963371107379E+020
+  6.550168843633067E+020
+  6.524907875824632E+020
+  6.470840414530471E+020
+  6.376914180088454E+020
+  6.232319930436206E+020
+  6.027691326416147E+020
+  5.756478798324790E+020
+  5.416357684430472E+020
+  5.010450071446896E+020
+  4.548072395938420E+020
+  4.044708087931577E+020
+  3.520989284124536E+020
+  3.000672170224115E+020
+  2.507877765650362E+020
+  2.063291177846600E+020
+  1.678741804933200E+020
+  1.356165359344412E+020
+  1.091330466533397E+020
+  8.771540396563461E+019
+  7.057336035467503E+019
+  5.694674022968327E+019
+  4.615867222401825E+019
+  3.763393694393659E+019
+  3.089834166661526E+019
+  2.556896987805812E+019
+  2.134100859216533E+019
+  1.797421959355236E+019
+  1.528054016595531E+019
+  1.311340088998209E+019
+  1.135886698845430E+019
+  9.928473941374396E+018
+  8.753531804229498E+018
+  7.780651331398213E+018
+  6.968260163897130E+018
+  6.283907272912364E+018
+  5.702187319148269E+018
+  5.203148382371587E+018
+  4.771074542873879E+018
+  4.393558448580833E+018
+  4.060798384065409E+018
+  3.765069986094077E+018
+  3.500335446218256E+018
+  3.261963893774326E+018
+  3.046547029751631E+018
+  2.851805732741247E+018
+  2.676598650153069E+018
+  2.521066099614189E+018
+  2.386976861065198E+018
+  2.278398688719980E+018
+  2.202895197570556E+018
+  2.173574136120818E+018
+  2.212487794209212E+018
+  2.356125027233374E+018
+  2.664033431827647E+018
+  3.231937240733754E+018
+  4.210979786846210E+018
+  5.834723012403559E+018
+  8.454923135293096E+018
+  1.258529794590717E+019
+  1.894870604168210E+019
+  2.851645103584389E+019
+  4.251810930156524E+019
+  6.238659583119562E+019
+  8.958846938256158E+019
+  1.252798552753446E+020
+  1.697990415476887E+020
+  2.223330388744284E+020
+  2.809783825593320E+020
+  3.429736317065445E+020
+  4.050859914145283E+020
+  4.640903452171287E+020
+  5.172185267673970E+020
+  5.624804605535362E+020
+  5.988104591736645E+020
+  6.260460431020679E+020
+  6.447835416575772E+020
+  6.561678214271565E+020
+  6.616673202401171E+020
+  6.628695985763950E+020
+  6.613156031075873E+020
+  6.583779671764785E+020
+  6.551813718753360E+020
+  6.525601627203978E+020
+  6.510480200226598E+020
+  6.508946964134172E+020
+  6.521046245158562E+020
+  6.544913707541920E+020
+  6.577408877167857E+020
+  6.614759568743140E+020
+  6.653146436052076E+020
+  6.689171429888556E+020
+  6.720177574140799E+020
+  6.744413062809401E+020
+  6.761054471058349E+020
+  6.770119011949592E+020
+  6.772303911781462E+020
+  6.768791487973750E+020
+  6.761050455603224E+020
+  6.750651642232870E+020
+  6.739109597055813E+020
+  6.727760899192586E+020
+  6.717683716473864E+020
+  6.709656554809927E+020
+  5.460480234777601E+020
+  5.459743910267588E+020
+  5.460061093236396E+020
+  5.461659628838924E+020
+  5.464653337115416E+020
+  5.468994024404828E+020
+  5.474433628141069E+020
+  5.480503042172459E+020
+  5.486513120446775E+020
+  5.491583701886279E+020
+  5.494703190192344E+020
+  5.494817242495855E+020
+  5.490941845785671E+020
+  5.482292030127732E+020
+  5.468412941226614E+020
+  5.449296214968925E+020
+  5.425462297524846E+020
+  5.397988998022328E+020
+  5.368468792398494E+020
+  5.338882836382585E+020
+  5.311388388870065E+020
+  5.288027669786580E+020
+  5.270378560304328E+020
+  5.259178981329262E+020
+  5.253965251820672E+020
+  5.252768856780720E+020
+  5.251915618779171E+020
+  5.245967287584307E+020
+  5.227839745608686E+020
+  5.189125560704433E+020
+  5.120640766703645E+020
+  5.013203038876994E+020
+  4.858625204204320E+020
+  4.650868715271166E+020
+  4.387244529439382E+020
+  4.069480554861064E+020
+  3.704415699852165E+020
+  3.304064765658197E+020
+  2.884862803754301E+020
+  2.466059659782931E+020
+  2.067473801796286E+020
+  1.706343211119235E+020
+  1.392783815885460E+020
+  1.128818194618867E+020
+  9.113616372626853E+019
+  7.349153845742615E+019
+  5.932314277050325E+019
+  4.802405667917824E+019
+  3.905023467098229E+019
+  3.193688794407264E+019
+  2.629912760497176E+019
+  2.182489089837867E+019
+  1.826483478982587E+019
+  1.542174463110282E+019
+  1.314071625400038E+019
+  1.130063110981010E+019
+  9.807043508058755E+018
+  8.586398834494570E+018
+  7.581416424370702E+018
+  6.747448148878638E+018
+  6.049632233333463E+018
+  5.460683401325225E+018
+  4.959185718819863E+018
+  4.528279047012057E+018
+  4.154651936030737E+018
+  3.827772476784638E+018
+  3.539304057555172E+018
+  3.282665489620218E+018
+  3.052705195505130E+018
+  2.845467962919948E+018
+  2.658041274491186E+018
+  2.488477876403684E+018
+  2.335804019901150E+018
+  2.200141517007482E+018
+  2.083000500040215E+018
+  1.987844419463684E+018
+  1.921097269711269E+018
+  1.893865066153843E+018
+  1.924789496001827E+018
+  2.044648651813822E+018
+  2.303564263151386E+018
+  2.781937903441640E+018
+  3.606441203633066E+018
+  4.972361287719719E+018
+  7.173053820922447E+018
+  1.063570899479906E+019
+  1.595943867849969E+019
+  2.394611408827620E+019
+  3.560590525848301E+019
+  5.210838136410322E+019
+  7.463836489406017E+019
+  1.041086283059101E+020
+  1.407412662906291E+020
+  1.837996911483252E+020
+  2.316515763283102E+020
+  2.819743753631728E+020
+  3.320857932553144E+020
+  3.793452415398030E+020
+  4.215238702433679E+020
+  4.570625927899601E+020
+  4.851818008641765E+020
+  5.058516750132026E+020
+  5.196620130508042E+020
+  5.276403174836609E+020
+  5.310607812518181E+020
+  5.312729349147634E+020
+  5.295643801475859E+020
+  5.270614330057755E+020
+  5.246656445049331E+020
+  5.230220033704740E+020
+  5.225143857407048E+020
+  5.232839774767259E+020
+  5.252661298711137E+020
+  5.282403173622928E+020
+  5.318869498550439E+020
+  5.358443351217288E+020
+  5.397595333566874E+020
+  5.433282883986651E+020
+  5.463213547330687E+020
+  5.485968189911625E+020
+  5.500999288851703E+020
+  5.508532409166466E+020
+  5.509405569356873E+020
+  5.504881051086180E+020
+  5.496456797068158E+020
+  5.485693611133961E+020
+  5.474068269923023E+020
+  5.462861747372786E+020
+  5.453086453612096E+020
+  5.445450790262880E+020
+  4.001948259979460E+017
+  4.002027775960074E+017
+  4.002224890766006E+017
+  4.002536011250376E+017
+  4.002930994591094E+017
+  4.003339708634570E+017
+  4.003639496808923E+017
+  4.003644616196392E+017
+  4.003098449236781E+017
+  4.001670583567703E+017
+  3.998959888172228E+017
+  3.994503695397924E+017
+  3.987793012412427E+017
+  3.978293054240575E+017
+  3.965467268777016E+017
+  3.948802027939176E+017
+  3.927828459233439E+017
+  3.902137429068105E+017
+  3.871383590292412E+017
+  3.835274947557738E+017
+  3.793545765612995E+017
+  3.745912829626260E+017
+  3.692017851327598E+017
+  3.631361858856257E+017
+  3.563240314856980E+017
+  3.486690113305175E+017
+  3.400461264597559E+017
+  3.303026868808017E+017
+  3.192644760324817E+017
+  3.067482559778157E+017
+  2.925813857040836E+017
+  2.766285505255502E+017
+  2.588243263075051E+017
+  2.392084982961905E+017
+  2.179588859969204E+017
+  1.954143604462764E+017
+  1.720796405312482E+017
+  1.486044756948418E+017
+  1.257338780379936E+017
+  1.042330622633527E+017
+  8.479917435656414E+016
+  6.795009020530518E+016
+  5.387311613547243E+016
+  4.242940203250496E+016
+  3.330397957697222E+016
+  2.612447638909884E+016
+  2.052715678305842E+016
+  1.618841557812887E+016
+  1.283572609060477E+016
+  1.024752715442437E+016
+  8.247916284040264E+015
+  6.699503856638690E+015
+  5.496185920543040E+015
+  4.556646499097798E+015
+  3.818876202111217E+015
+  3.235725717021802E+015
+  2.771390537920988E+015
+  2.398680237390204E+015
+  2.096922764053313E+015
+  1.850369612706622E+015
+  1.646989281044062E+015
+  1.477558194135952E+015
+  1.334977661848726E+015
+  1.213761647507925E+015
+  1.109653209572562E+015
+  1.019337794608185E+015
+   940229566504394.     
+   870313124086416.     
+   808027754454791.     
+   752185264486908.     
+   701915927965902.     
+   656640758485165.     
+   616072910596484.     
+   580257564132797.     
+   549669684222623.     
+   525404806288497.     
+   509522636743303.     
+   505641010379194.     
+   519933725616155.     
+   562765166607324.     
+   651300413886764.     
+   813557744243689.     
+  1.094500996714560E+015
+  1.564851165309594E+015
+  2.333225797926911E+015
+  3.561807921497259E+015
+  5.484718743614628E+015
+  8.426241099896747E+015
+  1.281261529406147E+016
+  1.916608949175043E+016
+  2.806361126221030E+016
+  4.003657885828695E+016
+  5.540674980815884E+016
+  7.415913195707846E+016
+  9.592783111931456E+016
+  1.200320783810958E+017
+  1.455649683275485E+017
+  1.715240055171665E+017
+  1.969493504235907E+017
+  2.210377935917712E+017
+  2.432125549816560E+017
+  2.631443877858300E+017
+  2.807319589234205E+017
+  2.960559678516452E+017
+  3.093221166335982E+017
+  3.208049184125385E+017
+  3.307998355442214E+017
+  3.395871390254563E+017
+  3.474079954569585E+017
+  3.544516644351940E+017
+  3.608519769160588E+017
+  3.666910428591923E+017
+  3.720081003886097E+017
+  3.768114343187972E+017
+  3.810913626048977E+017
+  3.848324860282620E+017
+  3.880237784658777E+017
+  3.906656462822295E+017
+  3.927736956145129E+017
+  3.943794626938920E+017
+  3.955286926927017E+017
+  3.962779307547011E+017
+  3.966902946022101E+017
+  3.968312828294942E+017
+  3.967651861326993E+017
+  3.965522306576292E+017
+  3.962464653389244E+017
+  3.958945749522815E+017
+  3.955355743709958E+017
+  3.952010622862511E+017
+  1.166053057324706E+021
+  1.166160133510694E+021
+  1.166307479453038E+021
+  1.166487414188232E+021
+  1.166682509679886E+021
+  1.166863273063415E+021
+  1.166987231495157E+021
+  1.166999861989767E+021
+  1.166837580610848E+021
+  1.166433196152432E+021
+  1.165723742385420E+021
+  1.164660069929810E+021
+  1.163217292852537E+021
+  1.161404811494953E+021
+  1.159274197004565E+021
+  1.156922947135564E+021
+  1.154492100371578E+021
+  1.152155940947631E+021
+  1.150102582436239E+021
+  1.148505124854308E+021
+  1.147484307622265E+021
+  1.147064990951630E+021
+  1.147130176305337E+021
+  1.147377388358778E+021
+  1.147282902742767E+021
+  1.146079446687653E+021
+  1.142752701617437E+021
+  1.136061389131008E+021
+  1.124585105770928E+021
+  1.106803365857441E+021
+  1.081208116110625E+021
+  1.046449501890369E+021
+  1.001509931239601E+021
+  9.458938571329950E+020
+  8.798104709711019E+020
+  8.043155660873216E+020
+  7.213712585184246E+020
+  6.337839671436115E+020
+  5.449974515452278E+020
+  4.587497979152105E+020
+  3.786450034504887E+020
+  3.075980085946171E+020
+  2.470744052089191E+020
+  1.970183116780439E+020
+  1.564747219886777E+020
+  1.241149700407926E+020
+  9.854748161257392E+019
+  7.848054694705249E+019
+  6.279257293882981E+019
+  5.054934783356103E+019
+  4.099392023297996E+019
+  3.352448008970678E+019
+  2.766883687765908E+019
+  2.305988107824958E+019
+  1.941396390217243E+019
+  1.651278793965356E+019
+  1.418872045460277E+019
+  1.231313796987639E+019
+  1.078731409151151E+019
+  9.535370460041261E+018
+  8.498864773341341E+018
+  7.632658362715833E+018
+  6.901773362100798E+018
+  6.279009620206958E+018
+  5.743142205398290E+018
+  5.277561729046045E+018
+  4.869252734460492E+018
+  4.508031447299272E+018
+  4.185984898663351E+018
+  3.897070675691120E+018
+  3.636852463099684E+018
+  3.402363712337119E+018
+  3.192113646397298E+018
+  3.006281241684383E+018
+  2.847190938602653E+018
+  2.720238936941737E+018
+  2.635555386396431E+018
+  2.610864197060959E+018
+  2.676260031373826E+018
+  2.881980682750738E+018
+  3.310717963218363E+018
+  4.096548882320767E+018
+  5.453067550940376E+018
+  7.713493252454904E+018
+  1.138491360267709E+019
+  1.721653792209147E+019
+  2.627662115179906E+019
+  4.002299940236946E+019
+  6.033651411018583E+019
+  8.946470381080324E+019
+  1.297976973123936E+020
+  1.833777204075520E+020
+  2.511393924862869E+020
+  3.323615881921145E+020
+  4.246709423321320E+020
+  5.242943371357720E+020
+  6.265554352415884E+020
+  7.265443855792169E+020
+  8.197895213902003E+020
+  9.027806543493785E+020
+  9.732593763908620E+020
+  1.030268361367812E+021
+  1.074009449435099E+021
+  1.105586402587423E+021
+  1.126705914192036E+021
+  1.139391482150403E+021
+  1.145741452810219E+021
+  1.147743220293645E+021
+  1.147143432584215E+021
+  1.145368489466459E+021
+  1.143488205644849E+021
+  1.142215740677002E+021
+  1.141937075645631E+021
+  1.142762823391361E+021
+  1.144594244509848E+021
+  1.147194704869087E+021
+  1.150258126251320E+021
+  1.153467519024405E+021
+  1.156539163975573E+021
+  1.159250771514696E+021
+  1.161454364263477E+021
+  1.163076441987667E+021
+  1.164109185827414E+021
+  1.164596828706398E+021
+  1.164620497627384E+021
+  1.164283329200295E+021
+  1.163697014557758E+021
+  1.162971152379391E+021
+  1.162205917317181E+021
+  1.161487573369020E+021
+  8.933337020780991E+018
+  8.933150033878434E+018
+  8.934101962111656E+018
+  8.936370076568627E+018
+  8.939988232527921E+018
+  8.944797282841003E+018
+  8.950411950393767E+018
+  8.956212048142777E+018
+  8.961363870567624E+018
+  8.964878163014119E+018
+  8.965705954198748E+018
+  8.962867546417289E+018
+  8.955605454641167E+018
+  8.943546697871564E+018
+  8.926853943293041E+018
+  8.906340561393646E+018
+  8.883522770089544E+018
+  8.860583284324752E+018
+  8.840225991835442E+018
+  8.825410785767807E+018
+  8.818971608497262E+018
+  8.823137602493986E+018
+  8.838994579847422E+018
+  8.865938872854777E+018
+  8.901185384712077E+018
+  8.939394877376286E+018
+  8.972482562011681E+018
+  8.989662945013116E+018
+  8.977777275914698E+018
+  8.921941098075834E+018
+  8.806538073002930E+018
+  8.616565752329722E+018
+  8.339299642982779E+018
+  7.966175246425337E+018
+  7.494692578781593E+018
+  6.930037634841842E+018
+  6.286025876065646E+018
+  5.584960806681364E+018
+  4.856123915969638E+018
+  4.132893270228862E+018
+  3.448883764890625E+018
+  2.832701636939165E+018
+  2.300536834035361E+018
+  1.854836794993322E+018
+  1.489521473264326E+018
+  1.194596840685252E+018
+  9.589762869681106E+017
+  7.720299917184470E+017
+  6.243161511515163E+017
+  5.078278047507691E+017
+  4.159771805343395E+017
+  3.434546637003882E+017
+  2.860415914123089E+017
+  2.404192933823868E+017
+  2.039947867806778E+017
+  1.747510602997400E+017
+  1.511232270496740E+017
+  1.318985890506392E+017
+  1.161373561294434E+017
+  1.031104980682795E+017
+  9.225144541522240E+016
+  8.311879030073584E+016
+  7.536761866780005E+016
+  6.872755797159739E+016
+  6.298602137280598E+016
+  5.797546308740778E+016
+  5.356373207568525E+016
+  4.964683039144118E+016
+  4.614356002858097E+016
+  4.299169322877220E+016
+  4.014544482434507E+016
+  3.757418526764794E+016
+  3.526254189784046E+016
+  3.321233985388647E+016
+  3.144730014909895E+016
+  3.002213731892103E+016
+  2.903881451421122E+016
+  2.867438541034588E+016
+  2.922725992481098E+016
+  3.119201423081625E+016
+  3.537700212351702E+016
+  4.308359241097774E+016
+  5.636962646630349E+016
+  7.842000479230970E+016
+  1.140392847190815E+017
+  1.702569021750521E+017
+  2.569839786028392E+017
+  3.875686735918024E+017
+  5.789545743836113E+017
+  8.509561414755580E+017
+  1.223958107211576E+018
+  1.714205809262939E+018
+  2.326812892655309E+018
+  3.051090569343027E+018
+  3.861246625085778E+018
+  4.719448487077698E+018
+  5.581042251947811E+018
+  6.401107747323321E+018
+  7.140680434817835E+018
+  7.771274580926994E+018
+  8.277036607398278E+018
+  8.654597810715904E+018
+  8.911210139944769E+018
+  9.061940613301018E+018
+  9.126626049730932E+018
+  9.127076930224188E+018
+  9.084787347134893E+018
+  9.019230170910483E+018
+  8.946714341533005E+018
+  8.879741047622433E+018
+  8.826790098015239E+018
+  8.792471857547214E+018
+  8.777978779139327E+018
+  8.781760381957870E+018
+  8.800331620637858E+018
+  8.829115743751334E+018
+  8.863226354244818E+018
+  8.898111842464312E+018
+  8.930014978967291E+018
+  8.956233521183301E+018
+  8.975196635172335E+018
+  8.986392767548252E+018
+  8.990196493906926E+018
+  8.987643669748989E+018
+  8.980194535079357E+018
+  8.969508862484088E+018
+  8.957248815261117E+018
+  8.944924357238299E+018
+  8.933787748648339E+018
+  8.924774955819530E+018
+  6.957241746754027E+020
+  6.956930657970479E+020
+  6.957554950410189E+020
+  6.959276684448588E+020
+  6.962144202176501E+020
+  6.966049394114721E+020
+  6.970696707748870E+020
+  6.975590181082340E+020
+  6.980043348820216E+020
+  6.983217485955387E+020
+  6.984189833361119E+020
+  6.982048968253783E+020
+  6.976011119284406E+020
+  6.965547095794499E+020
+  6.950504870241272E+020
+  6.931209225924348E+020
+  6.908518078935280E+020
+  6.883815522899085E+020
+  6.858924935655403E+020
+  6.835932198065148E+020
+  6.816919170753260E+020
+  6.803620110565140E+020
+  6.797026923261421E+020
+  6.796980849131755E+020
+  6.801796321713366E+020
+  6.807966093298021E+020
+  6.809995348099173E+020
+  6.800407771705429E+020
+  6.769960280246668E+020
+  6.708096280220457E+020
+  6.603658394605396E+020
+  6.445865813540884E+020
+  6.225531878001963E+020
+  5.936448036266196E+020
+  5.576790042390325E+020
+  5.150321081987807E+020
+  4.667100384089696E+020
+  4.143396477373124E+020
+  3.600594276908608E+020
+  3.063091533965586E+020
+  2.555471549720562E+020
+  2.098645087566592E+020
+  1.704381825050408E+020
+  1.374334492624128E+020
+  1.103895510146461E+020
+  8.856014122760960E+019
+  7.112093580220832E+019
+  5.728337557722679E+019
+  4.634798523448542E+019
+  3.772211885279880E+019
+  3.091846838367923E+019
+  2.554442888345095E+019
+  2.128813687030921E+019
+  1.790428720553914E+019
+  1.520121539505898E+019
+  1.302981731567733E+019
+  1.127439174133274E+019
+  9.845255438841625E+018
+  8.672886906546905E+018
+  7.703336816703558E+018
+  6.894661603385261E+018
+  6.214169363781785E+018
+  5.636302985398142E+018
+  5.141018987636051E+018
+  4.712549949097774E+018
+  4.338463054566128E+018
+  4.008947422037267E+018
+  3.716279043177238E+018
+  3.454425265837738E+018
+  3.218761895992218E+018
+  3.005886598907970E+018
+  2.813524114030965E+018
+  2.640534263523317E+018
+  2.487056249953707E+018
+  2.354857290552035E+018
+  2.248007375112658E+018
+  2.174084617950399E+018
+  2.146239540843178E+018
+  2.186624973850326E+018
+  2.331941377027689E+018
+  2.642153484015960E+018
+  3.213771893995034E+018
+  4.199371532804044E+018
+  5.835041237414578E+018
+  8.476863934238484E+018
+  1.264573150834979E+019
+  1.907598033229875E+019
+  2.875653602367759E+019
+  4.294273248801142E+019
+  6.310290009392762E+019
+  9.074850510150464E+019
+  1.270862341857073E+020
+  1.725013851503865E+020
+  2.262135059467043E+020
+  2.863295538639705E+020
+  3.500711499484875E+020
+  4.141601718153284E+020
+  4.753019716738299E+020
+  5.306429691223787E+020
+  5.781021114494611E+020
+  6.165271447720251E+020
+  6.456812773129725E+020
+  6.661036500200766E+020
+  6.789010143788756E+020
+  6.855224294454171E+020
+  6.875530209921040E+020
+  6.865457305656670E+020
+  6.838968706498437E+020
+  6.807637512729404E+020
+  6.780196386283888E+020
+  6.762408317149295E+020
+  6.757208636049555E+020
+  6.765066757691623E+020
+  6.784508468525238E+020
+  6.812729705011051E+020
+  6.846227141679221E+020
+  6.881374806516919E+020
+  6.914890846659547E+020
+  6.944161455663930E+020
+  6.967413920599352E+020
+  6.983752115685322E+020
+  6.993082788462883E+020
+  6.995969303462778E+020
+  6.993450362726794E+020
+  6.986853473550312E+020
+  6.977620801019230E+020
+  6.967158608242864E+020
+  6.956721060203426E+020
+  6.947332878259118E+020
+  6.939748671842626E+020
+  1.865771960789218E+020
+  1.866044541234843E+020
+  1.866289030264057E+020
+  1.866467781673711E+020
+  1.866535475417931E+020
+  1.866438734450436E+020
+  1.866117177293923E+020
+  1.865506094782619E+020
+  1.864540624320532E+020
+  1.863161726737460E+020
+  1.861323673436942E+020
+  1.859002145840272E+020
+  1.856201884420371E+020
+  1.852962540969084E+020
+  1.849360995821523E+020
+  1.845508219206380E+020
+  1.841538883554565E+020
+  1.837592341376561E+020
+  1.833784288439979E+020
+  1.830169472432002E+020
+  1.826697138599014E+020
+  1.823162365285109E+020
+  1.819157802520510E+020
+  1.814031360278185E+020
+  1.806855953380130E+020
+  1.796417484130149E+020
+  1.781226962322917E+020
+  1.759562232152872E+020
+  1.729544311752762E+020
+  1.689252644022159E+020
+  1.636881896492888E+020
+  1.570939179016144E+020
+  1.490473478569688E+020
+  1.395318193551897E+020
+  1.286313755875686E+020
+  1.165463508444500E+020
+  1.035968051344395E+020
+  9.020890055307792E+019
+  7.688189371434145E+019
+  6.413798223806074E+019
+  5.246281657707576E+019
+  4.223131528099163E+019
+  3.360855288175004E+019
+  2.654815316084045E+019
+  2.088405738714812E+019
+  1.640530318755751E+019
+  1.289902360018318E+019
+  1.017203394679451E+019
+  8.059333169765630E+018
+  6.425319135028633E+018
+  5.161396872427539E+018
+  4.182141769261029E+018
+  3.421190960698014E+018
+  2.827435457393744E+018
+  2.361743515029920E+018
+  1.994263989577387E+018
+  1.702270466062750E+018
+  1.468471376021273E+018
+  1.279703435182938E+018
+  1.125931189404761E+018
+  9.994862208784863E+017
+  8.944914483122127E+017
+  8.064270130456881E+017
+  7.318037524286775E+017
+  6.679180877118140E+017
+  6.126684167979585E+017
+  5.644180207298282E+017
+  5.218933192556034E+017
+  4.841093122930956E+017
+  4.503165006103139E+017
+  4.199657945110024E+017
+  3.926902505625087E+017
+  3.683053859219572E+017
+  3.468339587194156E+017
+  3.285674261343023E+017
+  3.141861967494718E+017
+  3.049762564652766E+017
+  3.032033946429691E+017
+  3.127412495364168E+017
+  3.400988637740488E+017
+  3.960590371806792E+017
+  4.982175249831023E+017
+  6.747916850631872E+017
+  9.701121935986301E+017
+  1.452155879773043E+018
+  2.222204541984899E+018
+  3.426044491152204E+018
+  5.264820088773148E+018
+  8.001485356118627E+018
+  1.195565728264752E+019
+  1.747584732526930E+019
+  2.487461869372470E+019
+  3.432439281553127E+019
+  4.577771097056648E+019
+  5.895962123745754E+019
+  7.339324640477197E+019
+  8.845982694744616E+019
+  1.034855814597689E+020
+  1.178330777280794E+020
+  1.309763037606955E+020
+  1.425465696972287E+020
+  1.523464281998536E+020
+  1.603369206101968E+020
+  1.666076121550337E+020
+  1.713392000424976E+020
+  1.747663446765209E+020
+  1.771453959425729E+020
+  1.787290400209002E+020
+  1.797481114014552E+020
+  1.803999093753668E+020
+  1.808420628162246E+020
+  1.811909846873726E+020
+  1.815240124012053E+020
+  1.818843312254191E+020
+  1.822877259019795E+020
+  1.827301666917746E+020
+  1.831952853210275E+020
+  1.836609685277350E+020
+  1.841045640090630E+020
+  1.845064835422765E+020
+  1.848522369709651E+020
+  1.851331237060325E+020
+  1.853459551589590E+020
+  1.854922443182990E+020
+  1.855772046820978E+020
+  1.856087104174032E+020
+  1.855963103683732E+020
+  1.855504539868916E+020
+  1.854819688339966E+020
+  1.854016919298946E+020
+  1.076574353630879E+021
+  1.076733113662324E+021
+  1.076874621989094E+021
+  1.076976842728558E+021
+  1.077013397996645E+021
+  1.076953390997150E+021
+  1.076762051816777E+021
+  1.076402309191719E+021
+  1.075837209590932E+021
+  1.075033354894919E+021
+  1.073965186834139E+021
+  1.072619598922695E+021
+  1.071000264190915E+021
+  1.069130906408539E+021
+  1.067056519579040E+021
+  1.064841438220935E+021
+  1.062563237128536E+021
+  1.060301676054320E+021
+  1.058122311456480E+021
+  1.056054995535011E+021
+  1.054068246352031E+021
+  1.052041309396480E+021
+  1.049736507842267E+021
+  1.046775067103814E+021
+  1.042619916169537E+021
+  1.036569007259438E+021
+  1.027762532623881E+021
+  1.015207171722444E+021
+  9.978202386730536E+020
+  9.744961960908447E+020
+  9.441970459698585E+020
+  9.060659352052926E+020
+  8.595592366570221E+020
+  8.045860744226346E+020
+  7.416362604529758E+020
+  6.718696610125863E+020
+  5.971354554619040E+020
+  5.198930898514448E+020
+  4.430216217786652E+020
+  3.695304589817838E+020
+  3.022165818254127E+020
+  2.432374095082254E+020
+  1.935404562675875E+020
+  1.528549320687251E+020
+  1.202209757002578E+020
+  9.442066365509360E+019
+  7.422573746146833E+019
+  5.852188343878199E+019
+  4.635759679807410E+019
+  3.695107304952705E+019
+  2.967633505116657E+019
+  2.404105484795760E+019
+  1.966282828224614E+019
+  1.624719778434601E+019
+  1.356874787910197E+019
+  1.145555110960520E+019
+  9.776735911789511E+018
+  8.432743621354251E+018
+  7.347796891026901E+018
+  6.464133644783902E+018
+  5.737623022818479E+018
+  5.134448454310844E+018
+  4.628606869498096E+018
+  4.200027964028929E+018
+  3.833162594589896E+018
+  3.515925520524127E+018
+  3.238906077090703E+018
+  2.994782432840571E+018
+  2.777892388879264E+018
+  2.583927836798858E+018
+  2.409732756552817E+018
+  2.253198060552708E+018
+  2.113263338608930E+018
+  1.990059378424617E+018
+  1.885261725687453E+018
+  1.802782553513310E+018
+  1.750017114749330E+018
+  1.739997190760790E+018
+  1.795005452581486E+018
+  1.952489618545619E+018
+  2.274493300400103E+018
+  2.862274585206394E+018
+  3.878236935364450E+018
+  5.577558199281054E+018
+  8.351586517545935E+018
+  1.278350260269439E+019
+  1.971289282164745E+019
+  3.029838444266847E+019
+  4.605499790449843E+019
+  6.882476803903431E+019
+  1.006171074477370E+020
+  1.432355724004324E+020
+  1.976777209998712E+020
+  2.636753375255477E+020
+  3.396497028687293E+020
+  4.228578958863689E+020
+  5.097377938403132E+020
+  5.964078830862475E+020
+  6.791935157991552E+020
+  7.550597177162417E+020
+  8.218762783012654E+020
+  8.784987347121793E+020
+  9.246956536188017E+020
+  9.609766173682691E+020
+  9.883772366226976E+020
+  1.008245272022534E+021
+  1.022054815297508E+021
+  1.031260236562129E+021
+  1.037191335315362E+021
+  1.040985903845283E+021
+  1.043554201032122E+021
+  1.045569819274147E+021
+  1.047481746867700E+021
+  1.049542441877123E+021
+  1.051846440543944E+021
+  1.054373801754814E+021
+  1.057032970457632E+021
+  1.059698627789618E+021
+  1.062241624194095E+021
+  1.064549751628656E+021
+  1.066539536232318E+021
+  1.068160339284820E+021
+  1.069392898764170E+021
+  1.070244807736455E+021
+  1.070744887890281E+021
+  1.070937323678145E+021
+  1.070876084793306E+021
+  1.070620544412588E+021
+  1.070232518937076E+021
+  1.069774164524028E+021
+  7.052256095880633E+020
+  7.053219628497201E+020
+  7.054146755315610E+020
+  7.054913392890953E+020
+  7.055360301752510E+020
+  7.055289322876908E+020
+  7.054465770143196E+020
+  7.052628092511967E+020
+  7.049504676594176E+020
+  7.044839177766712E+020
+  7.038423345762921E+020
+  7.030133811042290E+020
+  7.019968431810017E+020
+  7.008076473769337E+020
+  6.994775172582188E+020
+  6.980544346833815E+020
+  6.965991109024670E+020
+  6.951778293311697E+020
+  6.938513083831724E+020
+  6.926596648694752E+020
+  6.916041179453362E+020
+  6.906266938243027E+020
+  6.895897749526240E+020
+  6.882577861801286E+020
+  6.862835575887721E+020
+  6.832019371827142E+020
+  6.784330972072701E+020
+  6.712977735047312E+020
+  6.610464569772662E+020
+  6.469042548735364E+020
+  6.281324926541144E+020
+  6.041066847523473E+020
+  5.744077816515791E+020
+  5.389193526791090E+020
+  4.979178853701691E+020
+  4.521378304765401E+020
+  4.027896568555294E+020
+  3.515111109715872E+020
+  3.002417077842414E+020
+  2.510282830382611E+020
+  2.057915176433490E+020
+  1.660321147401594E+020
+  1.324358741718654E+020
+  1.048592713590833E+020
+  8.268415857892930E+019
+  6.510930285350433E+019
+  5.131921713188622E+019
+  4.056985381580208E+019
+  3.222320066476830E+019
+  2.575322151731563E+019
+  2.073745145318254E+019
+  1.684270330573310E+019
+  1.380950869862292E+019
+  1.143757619323422E+019
+  9.573208822898350E+018
+  8.098905543057603E+018
+  6.925019457140973E+018
+  5.983199640922868E+018
+  5.221306958548667E+018
+  4.599511358860705E+018
+  4.087317149208322E+018
+  3.661307024014143E+018
+  3.303437356306027E+018
+  2.999753423453520E+018
+  2.739423168253411E+018
+  2.514012158792122E+018
+  2.316941378957931E+018
+  2.143084287151581E+018
+  1.988471232517329E+018
+  1.850078892874121E+018
+  1.725691081057323E+018
+  1.613826459336545E+018
+  1.513740231777755E+018
+  1.425523327760744E+018
+  1.350347721707485E+018
+  1.290945867156188E+018
+  1.252473521831035E+018
+  1.243998763878838E+018
+  1.280997968443404E+018
+  1.389433797087640E+018
+  1.612246457969160E+018
+  2.019394527679376E+018
+  2.722880741878993E+018
+  3.898357506915777E+018
+  5.814660199873884E+018
+  8.871502902770631E+018
+  1.364289150201252E+019
+  2.091865896334730E+019
+  3.172801508746802E+019
+  4.731678333329272E+019
+  6.903527237881623E+019
+  9.808084464324560E+019
+  1.350880653969739E+020
+  1.798194348313018E+020
+  2.311432095902167E+020
+  2.871427286905540E+020
+  3.453604435836822E+020
+  4.031445321794445E+020
+  4.580092058996644E+020
+  5.079269993043516E+020
+  5.515036155282135E+020
+  5.880258982721491E+020
+  6.174052653926835E+020
+  6.400547412270375E+020
+  6.567383754241513E+020
+  6.684229902527204E+020
+  6.761502699185416E+020
+  6.809367896761780E+020
+  6.837026912395936E+020
+  6.852262908235663E+020
+  6.861208485641534E+020
+  6.868297576137088E+020
+  6.876366013815524E+020
+  6.886864657814418E+020
+  6.900146140469659E+020
+  6.915784243854128E+020
+  6.932886693527451E+020
+  6.950369212713617E+020
+  6.967169819636999E+020
+  6.982394581412821E+020
+  6.995396634292523E+020
+  7.005798439246034E+020
+  7.013473222433664E+020
+  7.018503942643413E+020
+  7.021134296037015E+020
+  7.021718670107197E+020
+  7.020675357281469E+020
+  7.018449563965802E+020
+  7.015488095310601E+020
+  7.012222238545832E+020
+ object "field" class field
+   component "positions" 3
+   component "connections" 4
+   component "data" 5
Index: /tags/1.6.0/examples/c-example/plot.cc
===================================================================
--- /tags/1.6.0/examples/c-example/plot.cc	(revision 6168)
+++ /tags/1.6.0/examples/c-example/plot.cc	(revision 6168)
@@ -0,0 +1,122 @@
+// ======================================================================
+//  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+//  See the file "license.terms" for information on usage and
+//  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+// ======================================================================
+
+#include "rappture.h"
+
+#include <stdlib.h>
+#include <math.h>
+#include <iostream>
+#include <sstream>
+
+#ifdef DEBUG
+static int debug = 1;
+#else 
+static int debug = 0;
+#endif
+
+int main(int argc, char * argv[])
+{
+
+    RpLibrary* lib = NULL;
+
+    std::string filePath = "";
+    std::string xmltext = "";
+    double fmin, fmax;
+    std::string strFormula = "";
+    int i;
+
+    if (argc < 2) {
+        std::cout << "usage: " << argv[0] << " driver.xml" << std::endl;
+    }
+
+    filePath = std::string(argv[1]);
+
+    if (debug) {
+        std::cout << "filePath: " << filePath << std::endl;
+    }
+
+    // create a rappture library from the file filePath
+    lib = new RpLibrary(filePath);
+
+    if (lib) {
+        if(debug) {
+            std::cout << "created Rappture Library successfully" << std::endl;
+        }
+    }
+    else {
+        // cannot open file or out of memory
+        std::cout << "FAILED creating Rappture Library" << std::endl;
+        exit(1);
+    }
+
+    // get the xml that is stored in the rappture library lib
+    xmltext = lib->xml();
+
+    if(! (xmltext.empty()) ) {
+        if(debug) {
+        //printf("XML file content:\n");
+        //printf("%s\n", xmltext);
+    }
+    }
+    else {
+        printf("lib->xml() failed\n");
+        delete lib;
+        exit(1);
+    }
+
+    // get the min
+    xmltext = lib->getString("input.number(min).current");
+
+    if ( xmltext.empty() ) {
+        std::cout << "lib->getString(input.number(xmin).current) returns null" << std::endl;
+        delete lib;
+        exit(1);
+    }
+
+    if(debug) {
+        std::cout << "xml min :" << xmltext << ": len=" << xmltext.size() << std::endl;
+    }
+
+    // grab a double value from the xml
+    fmin = lib->getDouble("input.number(min).current");
+
+    if(debug) {
+        std::cout << "min: " << fmin << std::endl;
+    }
+
+    // get the max
+    fmax = lib->getDouble("input.(max).current");
+    if(debug) {
+        std::cout << "max: " << fmax << std::endl;
+    }
+
+    // label the graph with a title
+    lib->put("output.curve(result).about.label",
+        "Formula: Y Vs X","",RPLIB_OVERWRITE);
+
+    // evaluate formula and generate results
+    // science begains here
+    double fx, fy;
+    int npts = 100;
+    std::stringstream myStr;
+
+    for (i = 0; i<npts; i++) {
+        fx = i* (fmax - fmin)/npts + fmin;
+        fy = sin(fx);
+        myStr << fx << " " << fy << std::endl;
+        lib->put("output.curve(result).component.xy",
+            myStr.str(),"",RPLIB_APPEND);
+        myStr.str("");
+    }
+
+
+    // write output to run file and signal
+    lib->result();
+
+    delete lib;
+
+    return 0;
+}
Index: /tags/1.6.0/examples/c-example/plotc.c
===================================================================
--- /tags/1.6.0/examples/c-example/plotc.c	(revision 6168)
+++ /tags/1.6.0/examples/c-example/plotc.c	(revision 6168)
@@ -0,0 +1,125 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "rappture.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <math.h>
+
+#ifdef DEBUG
+static int debug = 1;
+#else 
+static int debug = 0;
+#endif
+
+int 
+main(int argc, char **argv)
+{
+
+    RpLibrary* lib = NULL;
+
+    const char* filePath;
+    const char* xmltext = NULL;
+    double fmin, fmax;
+    char strFormula[100];
+    int i;
+    int err = 0;
+
+    double fx, fy;
+    int npts = 100;
+    char str[50];
+
+    memset(strFormula, '\0', 100);
+
+    if (argc < 2) {
+        printf("usage: %s driver.xml\n", argv[0]);
+    }
+
+    filePath = argv[1];
+
+    if (debug)
+        printf("filePath: %s:\n", filePath);
+
+    // create a rappture library from the file filePath
+    lib = rpLibrary(argv[1]);
+
+    if (lib) {
+        if(debug) {
+            printf("created Rappture Library successfully\n");
+        }
+    }
+    else {
+        // cannot open file or out of memory
+        printf("FAILED creating Rappture Library\n");
+        return(1);
+    }
+
+    // get the xml that is stored in the rappture library lib
+    err = rpXml(lib,&xmltext);
+    if( !err ) {
+        if(debug) {
+        //printf("XML file content:\n");
+        //printf("%s\n", xmltext);
+        }
+    }
+    else {
+        printf("xml(lib) failed\n");
+        return(1);
+    }
+
+    // get the min
+    rpGetString (lib, "input.number(min).current",&xmltext);
+
+    if (! (xmltext) ) {
+        printf("getString(lib,input.number(xmin).current) returns null\n");
+        return(1);
+    }
+
+    // if you want to keep the string around, you will need to malloc
+    // space for it and strncpy() it to your own space. 
+    // it will live in rappture's memory until the next call to getString()
+
+    if(debug) {
+      printf("xml min: %s: len=%d\n", xmltext, (int)strlen(xmltext));
+    }
+
+    fmin = atof(xmltext);
+    // fmin = getDouble(lib,"input.number(min).current");
+    if(debug) {
+        printf("min: %f\n", fmin);
+    }
+
+    // get the max
+    rpGetDouble(lib,"input.(max).current",&fmax);
+    if(debug) {
+        printf("max: %f\n", fmax);
+    }
+
+    // label the graph with a title
+    rpPutString(lib,"output.curve(result).about.label",
+        "Formula: Y Vs X",RPLIB_OVERWRITE);
+
+    // evaluate formula and generate results
+    for (i = 0; i<npts; i++) {
+        fx = i* (fmax - fmin)/npts + fmin;
+        fy = sin(fx);
+        sprintf(str, "%f %f\n", fx, fy);
+        rpPutString(lib,"output.curve(result).component.xy",str,RPLIB_APPEND);
+    }
+
+
+    // write output to run file and signal
+    rpResult(lib);
+
+    // free the rappture library
+    rpFreeLibrary(&lib);
+
+    // exit program
+    return 0;
+}
Index: /tags/1.6.0/examples/c-example/tool.xml
===================================================================
--- /tags/1.6.0/examples/c-example/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/c-example/tool.xml	(revision 6168)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>SIN(x) Graph (C++ example)</title>
+        <about>Press Simulate to view results.</about>
+        <command> @tool/plot @driver</command>
+    </tool>
+    <input>
+        <number id="min">
+            <about> <label>From x</label> </about>
+            <default>0</default>
+        </number>
+        <number id="max">
+            <about> <label>To x</label> </about>
+            <default> 10</default>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/c-example/tool2.xml
===================================================================
--- /tags/1.6.0/examples/c-example/tool2.xml	(revision 6168)
+++ /tags/1.6.0/examples/c-example/tool2.xml	(revision 6168)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>SIN(x) Graph (C example)</title>
+        <about>Press Simulate to view results.</about>
+        <command> @tool/plotc @driver</command>
+    </tool>
+    <input>
+        <number id="min">
+            <about> <label>From x</label> </about>
+            <default>0</default>
+        </number>
+        <number id="max">
+            <about> <label>To x</label> </about>
+            <default> 10</default>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/canvas/Makefile.in
===================================================================
--- /tags/1.6.0/examples/canvas/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/canvas/Makefile.in	(revision 6168)
@@ -0,0 +1,37 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/hand.gif \
+		$(srcdir)/waveln.tcl \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/canvas
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/canvas/tool.xml
===================================================================
--- /tags/1.6.0/examples/canvas/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/canvas/tool.xml	(revision 6168)
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>Tk canvas</title>
+  <about>The Tk canvas can be used to create drawings
+for the output from your simulator.  This
+example draws the visible color spectrum
+and shows a wavelength value on the spectrum.
+  </about>
+  <command>
+    tclsh @tool/waveln.tcl @driver
+  </command>
+</tool>
+<input>
+  <number id="wavel">
+    <about>
+      <label>Wavelength</label>
+      <description>Enter a wavelength of light in the visible spectrum.</description>
+      <color>380 380nm 750 750nm</color>
+    </about>
+    <units>nm</units>
+    <min>380nm</min>
+    <max>750nm</max>
+    <default>400nm</default>
+    <preset>
+      <value>472nm</value>
+      <label>472nm (blue)</label>
+    </preset>
+    <preset>
+      <value>532nm</value>
+      <label>532nm (green)</label>
+    </preset>
+    <preset>
+      <value>685nm</value>
+      <label>685nm (red)</label>
+    </preset>
+  </number>
+</input>
+</run>
Index: /tags/1.6.0/examples/canvas/waveln.tcl
===================================================================
--- /tags/1.6.0/examples/canvas/waveln.tcl	(revision 6168)
+++ /tags/1.6.0/examples/canvas/waveln.tcl	(revision 6168)
@@ -0,0 +1,141 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <number> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+package require Tk
+package require Img
+
+# ---------------------------------------------------------------------
+# USAGE: wave2RGB <wavelength>
+#
+# Given a visible wavelength in nm, returns a Tk color of the form
+# #RRGGBB. Returns black for nonvisible wavelengths.  Based on code from
+# Dan Bruton (astro@tamu.edu) http://www.physics.sfasu.edu/astro/color/spectra.html
+# ----------------------------------------------------------------------
+
+proc wave2RGB {wl} {
+    if {$wl < 380 || $wl > 780} {
+	return black
+    }
+    set gamma 0.8
+    set r 0.0
+    set g 0.0
+    set b 0.0
+    if {$wl <= 440} {
+	set r [expr (440.0 - $wl) / 60.0]
+	set b 1.0
+    } elseif {$wl <= 490} {
+	set g [expr ($wl - 440.0) / 50.0]
+	set b 1.0
+    } elseif {$wl <= 510} {
+	set g 1.0
+	set b [expr (510.0 - $wl) / 20.0]
+    } elseif {$wl <= 580} {
+	set g 1.0
+	set r [expr ($wl - 510.0) / 70.0]
+    } elseif {$wl <= 645} {
+	set r 1.0
+	set g [expr (645.0 - $wl) / 65.0]
+    } else {
+	set r 1.0
+    }
+
+    if {$wl > 700} {
+	set sss [expr 0.3 + 0.7 * (780.0 - $wl) / 80.0]
+    } elseif {$wl < 420} {
+	set sss [expr 0.3 + 0.7 * ($wl - 380.0) / 40.0]
+    } else {
+	set sss 1.0
+    }
+    set r [expr int(255.0 * pow(($sss * $r), $gamma))]
+    set g [expr int(255.0 * pow(($sss * $g), $gamma))]
+    set b [expr int(255.0 * pow(($sss * $b), $gamma))]
+    return [format "#%.2X%.2X%.2X" $r $g $b]
+}
+
+
+wm withdraw .
+
+# open the XML file containing the run parameters
+set xml [Rappture::library [lindex $argv 0]]
+set wavel [$xml get input.number(wavel).current]
+set wavel [Rappture::Units::convert $wavel -to nm -units off]
+
+set tooldir [file dirname [info script]]
+set psfile "plot[pid].ps"
+set pngfile "plot[pid].png"
+
+
+# height and width of spectrum image
+# It will get scaled to fit window, but render at high
+# resolution so it looks good when large.
+set width 720
+set height 50
+
+# load the hand image
+set imh [image create photo -file [file join $tooldir hand.gif]]
+
+# Where to place the spectrum image. Leave room for the hand above it.
+set x0 [image width $imh]
+set y0 [image height $imh]
+
+# create canvas big enough to hold images
+canvas .c -height [expr $height + $y0 + 100] -width [expr $width + $x0 + 50]
+
+# spectrum range
+set start 380
+set stop 740
+
+# calculate some offsets
+set x1 [expr $x0 + $width]
+set y1 [expr $y0 + $height]
+set xmid [expr {0.5*($x0+$x1)}]
+set dwl [expr ($stop - $start)/$width.0]
+
+# draw spectrum image
+set x $x0
+for {set wl $start} {$wl < $stop} {set wl [expr $wl + $dwl]} {
+    set color [wave2RGB $wl]
+    .c create rectangle $x $y0 [expr $x+1] $y1 -outline "" -fill $color
+    incr x
+}
+.c create rectangle $x0 $y0 $x1 $y1 -outline black -fill ""
+.c create text $xmid [expr {$y1+20}] -anchor n -text "Visible Spectrum" -font "Helvetica 18"
+
+# now place the hand image
+set x [expr {($x1-$x0)/double($stop-$start) * ($wavel-380) + $x0}]
+.c create image $x $y0 -image $imh
+.c create text $x [expr {$y0-25}] \
+    -anchor s -text "$wavel nm" -font "Helvetica 14"
+
+#
+# Convert the PostScript from the canvas into an image.
+#
+set psdata [.c postscript -height [expr $height + $y0 + 100] -width [expr $width + $x0 + 50]]
+set fid [open $psfile w]
+puts $fid $psdata
+close $fid
+
+# convert postscript to png image
+set status [catch {exec convert $psfile $pngfile} result]
+
+if {$status == 0} {
+    set dest [image create photo -format png -file $pngfile]
+    $xml put output.image(diagram).current [$dest data -format png]
+    $xml put output.image(diagram).about.label "Visible Spectrum"
+    file delete -force $psfile $pngfile
+} else {
+    puts stderr "ERROR during postscript conversion:\n$result"
+    file delete -force $psfile $pngfile
+    exit 1
+}
+
+# save the updated XML describing the run...
+Rappture::result $xml
+exit 0
Index: /tags/1.6.0/examples/core/diff/difftest.tcl
===================================================================
--- /tags/1.6.0/examples/core/diff/difftest.tcl	(revision 6168)
+++ /tags/1.6.0/examples/core/diff/difftest.tcl	(revision 6168)
@@ -0,0 +1,24 @@
+#!/usr/bin/wish
+
+package require Rappture
+
+set lib [Rappture::library difftest1.xml]
+set lib2 [Rappture::library difftest2.xml]
+
+set i 0
+
+foreach {changeType path inVal outVal} [$lib diff $lib2] {
+    set label ""
+
+    if {$changeType == "c"} {
+        set label [$lib get $path.about.label]
+    }
+
+    puts "---- Change $i ----"
+    puts "changeType = $changeType"
+    puts "path = $path"
+    puts "inVal = $inVal"
+    puts "outVal = $outVal"
+    puts "label = $label"
+    incr i
+}
Index: /tags/1.6.0/examples/core/diff/difftest1.xml
===================================================================
--- /tags/1.6.0/examples/core/diff/difftest1.xml	(revision 6168)
+++ /tags/1.6.0/examples/core/diff/difftest1.xml	(revision 6168)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<run>
+  <tool>
+    <command></command>
+  </tool>
+  <input>
+    <group>
+      <choice id="pseudopotentialGa">
+        <about>
+          <label>Ga Pseudopotential</label>
+          <description>available Ga pseudopotentials</description>
+        </about>
+        <option>
+          <about>
+            <label>Ga pbe-nsp-van</label>
+            <description>...</description>
+          </about>
+          <value>Ga.pbe-nsp-van.UPF</value>
+        </option>
+        <default>Ga.pbe-nsp-van.UPF</default>
+        <current>Ga.pbe-nsp-van.UPF</current>
+      </choice>
+      <integer>
+        <default>10</default>
+        <current>12</current>
+      </integer>
+      <current/>
+    </group>
+  </input>
+  <output>
+      <number>
+          <about>
+              <label>ddd</label>
+          </about>
+          <current>1222</current>
+      </number>
+  </output>
+</run>
Index: /tags/1.6.0/examples/core/diff/difftest2.xml
===================================================================
--- /tags/1.6.0/examples/core/diff/difftest2.xml	(revision 6168)
+++ /tags/1.6.0/examples/core/diff/difftest2.xml	(revision 6168)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<run>
+  <tool>
+    <command></command>
+  </tool>
+  <input>
+    <group>
+      <number>
+        <default>1</default>
+        <current>5</current>
+      </number>
+      <choice id="pseudopotentialGa">
+        <about>
+          <label>Ga Pseudopotential</label>
+          <description>available Ga pseudopotentials</description>
+        </about>
+        <option>
+          <about>
+            <label>Ga pbe-nsp-van</label>
+            <description>...</description>
+          </about>
+          <value>Ga.pbe-nsp-van.UPF</value>
+        </option>
+        <default>Ga.pbe-nsp-van.UPF</default>
+        <current>hello</current>
+      </choice>
+      <current/>
+    </group>
+  </input>
+  <output>
+      <number>
+          <about>
+              <label>ddd</label>
+          </about>
+          <current>3333</current>
+      </number>
+  </output>
+</run>
Index: /tags/1.6.0/examples/demo.bash.in
===================================================================
--- /tags/1.6.0/examples/demo.bash.in	(revision 6168)
+++ /tags/1.6.0/examples/demo.bash.in	(revision 6168)
@@ -0,0 +1,106 @@
+#!/bin/bash
+#
+# use this script to run several rappture examples:
+#
+#	./demo.bash
+#		
+#        ./demo.bash all
+#
+# when you exit from one example, the next one will start and display on your
+# screen.
+#
+
+ZOO="\
+	./zoo/binary
+	./zoo/boolean
+	./zoo/choice
+	./zoo/curve
+	./zoo/drawing
+	./zoo/enable
+	./zoo/field
+	./zoo/group
+	./zoo/histogram
+	./zoo/image
+	./zoo/integer
+	./zoo/integer2
+	./zoo/loader
+	./zoo/log
+	./zoo/mesh
+	./zoo/note
+	./zoo/number
+	./zoo/number2
+	./zoo/parallelepiped
+	./zoo/periodicelement
+	./zoo/phase
+	./zoo/sequence
+	./zoo/string
+	./zoo/structure
+	./zoo/table
+"
+
+FLOW=" \
+	./flow/demo1
+	./flow/demo2
+	./flow/demo3
+	./flow
+"
+FERMI=" \
+	./app-fermi/cee
+	./app-fermi/fortran
+	./app-fermi/tcl
+	./app-fermi/perl
+	./app-fermi/python
+	./app-fermi/ruby
+	./app-fermi/java
+	./app-fermi/R
+	./app-fermi/matlab/uncompiled
+	./app-fermi/matlab/compiled
+	./app-fermi/octave/octave2
+	./app-fermi/octave/octave3
+	./app-fermi/wrapper/cee
+	./app-fermi/wrapper/tcl
+	./app-fermi/wrapper/perl
+	./app-fermi/wrapper/python
+"
+
+MISC=" \
+  ./lang/tcl/putfile \
+  ./lang/tcl/loadercopy \
+  ./graph \
+  ./c-example \
+  ./canvas \
+  ./objects/xmlparser \
+"
+
+ALL="$FERMI $ZOO $FLOW $MISC"
+
+STD="\
+  app-fermi/tcl  \
+  app-fermi/python  \
+  app-fermi/fortran  \
+  c-example  \
+  graph  \
+  zoo/structure  \
+  zoo/image  \
+  zoo/field \
+"
+dirs=$STD
+
+if test "$1" = "all" ; then 
+  dirs=$ALL
+elif test "$1" = "fermi" ; then 
+  dirs=$FERMI
+elif test "$1" = "flow" ; then 
+  dirs=$FLOW
+elif test "$1" = "misc" ; then 
+  dirs=$MISC
+elif test "$1" = "zoo" ; then 
+  dirs=$ZOO
+fi
+
+for d in $dirs ; do
+    echo $d
+    (cd $d ; rappture)
+done
+
+(cd 3D; rerun 3d_test_run.xml)
Index: /tags/1.6.0/examples/flow/Makefile.in
===================================================================
--- /tags/1.6.0/examples/flow/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/flow/Makefile.in	(revision 6168)
@@ -0,0 +1,47 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/flowtest.tcl \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/flow
+
+examples	= \
+		demo1 \
+		demo2 \
+		demo3
+
+.PHONY: all install clean distclean
+
+all: 
+	for i in $(examples) ; do \
+	  $(MAKE) -C $$i all; \
+	done
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(examples) ; do \
+	  $(MAKE) -C $$i install; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/flow/demo1/Makefile.in
===================================================================
--- /tags/1.6.0/examples/flow/demo1/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo1/Makefile.in	(revision 6168)
@@ -0,0 +1,35 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/demo1.tcl \
+		$(srcdir)/data-demo1.tcl \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/flow/demo1
+
+all: 
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: 
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/flow/demo1/data-demo1.tcl
===================================================================
--- /tags/1.6.0/examples/flow/demo1/data-demo1.tcl	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo1/data-demo1.tcl	(revision 6168)
@@ -0,0 +1,83162 @@
+set values {
+-0.0723048 -0.000179769 0
+-0.14526 -0.000236529 0
+-0.293014 -0.000235928 0
+-0.293088 7.40599e-05 0
+-0.294949 0.00186034 0
+-0.299754 0.00480568 0
+-0.308213 0.00845924 0
+-0.320406 0.0121929 0
+-0.335725 0.0153189 0
+-0.352981 0.0172557 0
+-0.370657 0.0176761 0
+-0.387248 0.0165913 0
+-0.401591 0.014343 0
+-0.413096 0.0115048 0
+-0.421816 0.00871989 0
+-0.428337 0.00652124 0
+-0.433526 0.00518905 0
+-0.438211 0.00468447 0
+-0.442888 0.0046769 0
+-0.447542 0.00465396 0
+-0.451624 0.00408208 0
+-0.454196 0.002572 0
+-0.454195 -3.12927e-07 0
+-0.45074 -0.00345544 0
+-0.443377 -0.00736341 0
+-0.432213 -0.0111635 0
+-0.417903 -0.0143097 0
+-0.401502 -0.0164012 0
+-0.384234 -0.0172684 0
+-0.367233 -0.0170005 0
+-0.351323 -0.0159107 0
+-0.336871 -0.0144519 0
+-0.323776 -0.0130946 0
+-0.311585 -0.0121914 0
+-0.299719 -0.0118659 0
+-0.287746 -0.0119724 0
+-0.275601 -0.0121454 0
+-0.263684 -0.0119169 0
+-0.252825 -0.0108595 0
+-0.244109 -0.00871556 0
+-0.238628 -0.00548092 0
+-0.237207 -0.0014214 0
+-0.240189 0.00298261 0
+-0.247339 0.00714965 0
+-0.257878 0.0105393 0
+-0.270668 0.0127896 0
+-0.284489 0.0138212 0
+-0.298368 0.0138791 0
+-0.311854 0.0134861 0
+-0.325165 0.0133111 0
+-0.339149 0.0139835 0
+-0.355055 0.0159064 0
+-0.374181 0.0191253 0
+-0.397472 0.0232911 0
+-0.425202 0.0277304 0
+-0.456802 0.0316 0
+-0.490879 0.0340767 0
+-0.525402 0.0345235 0
+-0.557996 0.0325934 0
+-0.586261 0.0282655 0
+-0.608081 0.0218193 0
+-0.621837 0.013756 0
+-0.626533 0.00469669 0
+-0.621837 -0.00469668 0
+-0.608081 -0.013756 0
+-0.586261 -0.0218193 0
+-0.557996 -0.0282655 0
+-0.525402 -0.0325934 0
+-0.490879 -0.0345235 0
+-0.456802 -0.0340767 0
+-0.425202 -0.0316 0
+-0.397472 -0.0277304 0
+-0.374181 -0.0232911 0
+-0.355055 -0.0191253 0
+-0.339149 -0.0159064 0
+-0.325165 -0.0139835 0
+-0.311854 -0.0133111 0
+-0.298368 -0.0134861 0
+-0.284489 -0.0138791 0
+-0.270668 -0.0138212 0
+-0.257878 -0.0127895 0
+-0.247339 -0.0105393 0
+-0.240189 -0.00714965 0
+-0.237207 -0.0029826 0
+-0.238628 0.0014214 0
+-0.244109 0.00548092 0
+-0.252825 0.00871556 0
+-0.263684 0.0108595 0
+-0.275601 0.0119169 0
+-0.287746 0.0121454 0
+-0.299719 0.0119724 0
+-0.311585 0.0118659 0
+-0.323776 0.0121914 0
+-0.336871 0.0130946 0
+-0.351323 0.0144519 0
+-0.367233 0.0159107 0
+-0.384234 0.0170005 0
+-0.401502 0.0172684 0
+-0.417903 0.0164012 0
+-0.432213 0.0143097 0
+-0.443377 0.0111635 0
+-0.45074 0.00736341 0
+-0.454195 0.00345544 0
+-0.454196 3.15745e-07 0
+-0.451624 -0.002572 0
+-0.447542 -0.00408208 0
+-0.442888 -0.00465396 0
+-0.438211 -0.0046769 0
+-0.433526 -0.00468447 0
+-0.428337 -0.00518904 0
+-0.421816 -0.00652124 0
+-0.413096 -0.00871988 0
+-0.401591 -0.0115048 0
+-0.387248 -0.014343 0
+-0.370657 -0.0165913 0
+-0.352981 -0.0176761 0
+-0.335725 -0.0172557 0
+-0.320406 -0.0153189 0
+-0.308213 -0.0121929 0
+-0.299754 -0.00845923 0
+-0.294948 -0.00480568 0
+-0.293088 -0.00186034 0
+-0.293014 -7.40608e-05 0
+-0.145259 0.000235927 0
+-0.0723048 0.000236529 0
+-0.0723048 0.000179769 0
+-0.271188 -0.000765196 0
+-0.543757 -0.000879546 0
+-1.09383 -0.00045829 0
+-1.09568 0.00192665 0
+-1.10415 0.0103355 0
+-1.12353 0.0241789 0
+-1.15651 0.0414442 0
+-1.20345 0.059125 0
+-1.26205 0.0739196 0
+-1.32783 0.0830437 0
+-1.3951 0.0849378 0
+-1.45817 0.0796623 0
+-1.51268 0.0688578 0
+-1.55645 0.0552697 0
+-1.58969 0.0419672 0
+-1.61466 0.0314861 0
+-1.63462 0.0251472 0
+-1.65268 0.0227461 0
+-1.67069 0.0226901 0
+-1.68856 0.0225278 0
+-1.7042 0.019716 0
+-1.71403 0.0124049 0
+-1.71404 1.1387e-05 0
+-1.7009 -0.0165982 0
+-1.6729 -0.0353607 0
+-1.63048 -0.0535885 0
+-1.57612 -0.0686667 0
+-1.51384 -0.0786786 0
+-1.44829 -0.0828188 0
+-1.38377 -0.0815194 0
+-1.3234 -0.076286 0
+-1.26856 -0.0692867 0
+-1.21889 -0.0627698 0
+-1.17266 -0.0584187 0
+-1.1277 -0.0568251 0
+-1.08238 -0.0572977 0
+-1.03643 -0.0580963 0
+-0.991357 -0.0569865 0
+-0.950295 -0.051921 0
+-0.917354 -0.0416574 0
+-0.896673 -0.0261614 0
+-0.891403 -0.00669172 0
+-0.90288 0.0144601 0
+-0.930241 0.0345109 0
+-0.970569 0.0508668 0
+-1.01956 0.0617821 0
+-1.0726 0.0668568 0
+-1.12595 0.067234 0
+-1.17785 0.0653837 0
+-1.22902 0.0644783 0
+-1.28254 0.067511 0
+-1.34305 0.0764093 0
+-1.41533 0.0914086 0
+-1.50292 0.110876 0
+-1.60682 0.13164 0
+-1.72494 0.149717 0
+-1.85208 0.161211 0
+-1.98065 0.163101 0
+-2.10182 0.153758 0
+-2.20668 0.133127 0
+-2.28746 0.102598 0
+-2.3383 0.064594 0
+-2.35564 0.0220368 0
+-2.3383 -0.0220367 0
+-2.28746 -0.064594 0
+-2.20668 -0.102598 0
+-2.10182 -0.133127 0
+-1.98065 -0.153758 0
+-1.85208 -0.163101 0
+-1.72494 -0.161211 0
+-1.60682 -0.149717 0
+-1.50292 -0.13164 0
+-1.41533 -0.110876 0
+-1.34305 -0.0914086 0
+-1.28254 -0.0764093 0
+-1.22902 -0.067511 0
+-1.17785 -0.0644783 0
+-1.12595 -0.0653837 0
+-1.0726 -0.0672339 0
+-1.01956 -0.0668568 0
+-0.970569 -0.0617821 0
+-0.930241 -0.0508668 0
+-0.90288 -0.0345109 0
+-0.891403 -0.0144601 0
+-0.896673 0.00669172 0
+-0.917353 0.0261614 0
+-0.950295 0.0416574 0
+-0.991357 0.051921 0
+-1.03643 0.0569865 0
+-1.08238 0.0580963 0
+-1.1277 0.0572977 0
+-1.17266 0.0568251 0
+-1.21889 0.0584187 0
+-1.26856 0.0627698 0
+-1.3234 0.0692867 0
+-1.38377 0.076286 0
+-1.44829 0.0815194 0
+-1.51384 0.0828188 0
+-1.57612 0.0786786 0
+-1.63048 0.0686667 0
+-1.6729 0.0535885 0
+-1.7009 0.0353607 0
+-1.71404 0.0165982 0
+-1.71403 -1.13754e-05 0
+-1.7042 -0.0124049 0
+-1.68856 -0.019716 0
+-1.67069 -0.0225278 0
+-1.65268 -0.0226901 0
+-1.63462 -0.0227461 0
+-1.61466 -0.0251472 0
+-1.58969 -0.0314861 0
+-1.55645 -0.0419672 0
+-1.51268 -0.0552696 0
+-1.45817 -0.0688578 0
+-1.39509 -0.0796623 0
+-1.32783 -0.0849377 0
+-1.26205 -0.0830437 0
+-1.20344 -0.0739195 0
+-1.15651 -0.0591249 0
+-1.12353 -0.0414442 0
+-1.10415 -0.0241789 0
+-1.09568 -0.0103355 0
+-1.09383 -0.00192665 0
+-0.543757 0.000458288 0
+-0.271188 0.000879545 0
+-0.271188 0.000765195 0
+-0.548849 -0.00172703 0
+-1.09737 -0.00162044 0
+-2.2003 0.000429765 0
+-2.20692 0.00854138 0
+-2.22752 0.0309379 0
+-2.27031 0.0669674 0
+-2.34062 0.111757 0
+-2.43907 0.157572 0
+-2.56096 0.195815 0
+-2.69715 0.219234 0
+-2.836 0.223786 0
+-2.96601 0.209672 0
+-3.07837 0.181213 0
+-3.1687 0.145605 0
+-3.2376 0.110862 0
+-3.28968 0.0835684 0
+-3.33164 0.0671101 0
+-3.36978 0.0608799 0
+-3.40775 0.0606631 0
+-3.44526 0.0600385 0
+-3.47792 0.0523795 0
+-3.49841 0.0328891 0
+-3.49848 8.30311e-05 0
+-3.47134 -0.0437377 0
+-3.41356 -0.0931431 0
+-3.32607 -0.141074 0
+-3.21407 -0.180672 0
+-3.08582 -0.206922 0
+-2.95091 -0.21773 0
+-2.81817 -0.214256 0
+-2.694 -0.200462 0
+-2.58125 -0.182036 0
+-2.47916 -0.164861 0
+-2.38424 -0.153338 0
+-2.29204 -0.149022 0
+-2.19922 -0.150122 0
+-2.10521 -0.152108 0
+-2.01305 -0.149144 0
+-1.92911 -0.135857 0
+-1.86181 -0.108957 0
+-1.81968 -0.0682979 0
+-1.80924 -0.0171275 0
+-1.83336 0.0385794 0
+-1.89038 0.09153 0
+-1.97441 0.1349 0
+-2.0767 0.164066 0
+-2.18774 0.177899 0
+-2.29979 0.179283 0
+-2.40897 0.174565 0
+-2.51643 0.171944 0
+-2.62811 0.179191 0
+-2.75305 0.201347 0
+-2.90074 0.239096 0
+-3.07817 0.288303 0
+-3.28738 0.34085 0
+-3.52416 0.386502 0
+-3.77816 0.415205 0
+-4.03422 0.419162 0
+-4.27467 0.394216 0
+-4.48196 0.340414 0
+-4.641 0.261633 0
+-4.74074 0.164336 0
+-4.77469 0.0559888 0
+-4.74074 -0.0559887 0
+-4.641 -0.164336 0
+-4.48196 -0.261633 0
+-4.27467 -0.340414 0
+-4.03422 -0.394216 0
+-3.77816 -0.419162 0
+-3.52416 -0.415205 0
+-3.28738 -0.386502 0
+-3.07817 -0.34085 0
+-2.90074 -0.288303 0
+-2.75305 -0.239096 0
+-2.62811 -0.201347 0
+-2.51643 -0.179191 0
+-2.40897 -0.171944 0
+-2.29979 -0.174565 0
+-2.18774 -0.179283 0
+-2.0767 -0.177899 0
+-1.97441 -0.164066 0
+-1.89038 -0.1349 0
+-1.83336 -0.0915299 0
+-1.80924 -0.0385794 0
+-1.81968 0.0171275 0
+-1.86181 0.0682979 0
+-1.92911 0.108957 0
+-2.01305 0.135857 0
+-2.10521 0.149144 0
+-2.19922 0.152108 0
+-2.29204 0.150122 0
+-2.38424 0.149022 0
+-2.47916 0.153338 0
+-2.58125 0.164861 0
+-2.694 0.182036 0
+-2.81817 0.200462 0
+-2.95091 0.214256 0
+-3.08582 0.21773 0
+-3.21407 0.206922 0
+-3.32607 0.180672 0
+-3.41356 0.141074 0
+-3.47134 0.0931431 0
+-3.49848 0.0437377 0
+-3.49841 -8.30039e-05 0
+-3.47792 -0.0328891 0
+-3.44526 -0.0523795 0
+-3.40775 -0.0600385 0
+-3.36978 -0.0606631 0
+-3.33164 -0.0608799 0
+-3.28968 -0.0671101 0
+-3.2376 -0.0835684 0
+-3.1687 -0.110862 0
+-3.07837 -0.145605 0
+-2.96601 -0.181213 0
+-2.836 -0.209672 0
+-2.69715 -0.223786 0
+-2.56096 -0.219234 0
+-2.43907 -0.195815 0
+-2.34062 -0.157572 0
+-2.27031 -0.111757 0
+-2.22752 -0.0669674 0
+-2.20692 -0.0309379 0
+-2.2003 -0.00854139 0
+-1.09737 -0.000429769 0
+-0.548849 0.00162044 0
+-0.548849 0.00172703 0
+-0.843722 -0.00286724 0
+-1.68073 -0.00196077 0
+-3.357 0.00358799 0
+-3.37091 0.0224515 0
+-3.40764 0.0676611 0
+-3.47909 0.138424 0
+-3.593 0.225667 0
+-3.74997 0.31454 0
+-3.94255 0.388399 0
+-4.15652 0.433204 0
+-4.37393 0.441197 0
+-4.57716 0.412894 0
+-4.75279 0.356842 0
+-4.89432 0.287139 0
+-5.00287 0.219414 0
+-5.08573 0.166421 0
+-5.15321 0.134596 0
+-5.2149 0.122568 0
+-5.27621 0.121973 0
+-5.33641 0.120238 0
+-5.38851 0.104478 0
+-5.42105 0.0654296 0
+-5.42126 0.000296431 0
+-5.37867 -0.0863319 0
+-5.28805 -0.183758 0
+-5.15102 -0.278109 0
+-4.97576 -0.355928 0
+-4.77528 -0.407402 0
+-4.56454 -0.428477 0
+-4.35731 -0.421479 0
+-4.16355 -0.394226 0
+-3.98771 -0.357877 0
+-3.82862 -0.323947 0
+-3.68092 -0.301043 0
+-3.53771 -0.292223 0
+-3.39381 -0.29403 0
+-3.24826 -0.297658 0
+-3.10568 -0.291718 0
+-2.97587 -0.265666 0
+-2.87187 -0.212963 0
+-2.80698 -0.133188 0
+-2.79153 -0.0325725 0
+-2.83021 0.0772536 0
+-2.92068 0.182006 0
+-3.05404 0.268257 0
+-3.2168 0.326825 0
+-3.3942 0.355301 0
+-3.57397 0.359052 0
+-3.74959 0.350185 0
+-3.92211 0.344466 0
+-4.09985 0.356929 0
+-4.29592 0.397419 0
+-4.52427 0.467441 0
+-4.79521 0.55925 0
+-5.1118 0.657439 0
+-5.46777 0.742472 0
+-5.84762 0.795056 0
+-6.22863 0.800174 0
+-6.58438 0.749962 0
+-6.88898 0.645013 0
+-7.12098 0.493629 0
+-7.26555 0.30891 0
+-7.31458 0.105016 0
+-7.26555 -0.105015 0
+-7.12098 -0.30891 0
+-6.88898 -0.493629 0
+-6.58438 -0.645013 0
+-6.22864 -0.749962 0
+-5.84762 -0.800174 0
+-5.46777 -0.795056 0
+-5.1118 -0.742472 0
+-4.79521 -0.657439 0
+-4.52427 -0.55925 0
+-4.29592 -0.467441 0
+-4.09985 -0.397419 0
+-3.92211 -0.356929 0
+-3.74959 -0.344466 0
+-3.57397 -0.350185 0
+-3.3942 -0.359052 0
+-3.2168 -0.355301 0
+-3.05404 -0.326825 0
+-2.92068 -0.268257 0
+-2.83021 -0.182006 0
+-2.79153 -0.0772536 0
+-2.80698 0.0325725 0
+-2.87187 0.133188 0
+-2.97587 0.212963 0
+-3.10568 0.265666 0
+-3.24826 0.291718 0
+-3.39381 0.297658 0
+-3.53771 0.29403 0
+-3.68091 0.292223 0
+-3.82862 0.301043 0
+-3.98771 0.323947 0
+-4.16355 0.357877 0
+-4.35731 0.394226 0
+-4.56454 0.421479 0
+-4.77528 0.428477 0
+-4.97576 0.407402 0
+-5.15102 0.355928 0
+-5.28805 0.278109 0
+-5.37867 0.183758 0
+-5.42126 0.086332 0
+-5.42105 -0.000296382 0
+-5.38851 -0.0654295 0
+-5.33641 -0.104478 0
+-5.27621 -0.120238 0
+-5.2149 -0.121973 0
+-5.15321 -0.122568 0
+-5.08572 -0.134596 0
+-5.00287 -0.166421 0
+-4.89432 -0.219414 0
+-4.75278 -0.287139 0
+-4.57716 -0.356842 0
+-4.37393 -0.412894 0
+-4.15652 -0.441196 0
+-3.94255 -0.433204 0
+-3.74997 -0.388399 0
+-3.593 -0.31454 0
+-3.47909 -0.225667 0
+-3.40763 -0.138424 0
+-3.37091 -0.0676611 0
+-3.357 -0.0224516 0
+-1.68073 -0.00358799 0
+-0.843721 0.00196077 0
+-0.843721 0.00286723 0
+-1.09972 -0.00396468 0
+-2.18068 -0.00154578 0
+-4.33526 0.00954072 0
+-4.35716 0.0443441 0
+-4.41034 0.120841 0
+-4.50952 0.237602 0
+-4.66392 0.380069 0
+-4.87368 0.524301 0
+-5.12871 0.643436 0
+-5.4104 0.714887 0
+-5.69554 0.726344 0
+-5.9616 0.678954 0
+-6.19161 0.586853 0
+-6.37759 0.473112 0
+-6.52132 0.363145 0
+-6.63241 0.277516 0
+-6.72418 0.226364 0
+-6.80869 0.207082 0
+-6.8925 0.20578 0
+-6.97417 0.201911 0
+-7.0443 0.174608 0
+-7.08787 0.108996 0
+-7.08831 0.000733861 0
+-7.03212 -0.142518 0
+-6.91273 -0.303152 0
+-6.73244 -0.458395 0
+-6.50218 -0.58619 0
+-6.23908 -0.670503 0
+-5.96277 -0.704779 0
+-5.69132 -0.692935 0
+-5.43769 -0.647859 0
+-5.20771 -0.587856 0
+-4.9999 -0.531751 0
+-4.80734 -0.493601 0
+-4.62113 -0.478437 0
+-4.43446 -0.480702 0
+-4.24599 -0.486124 0
+-4.06155 -0.476163 0
+-3.89368 -0.433534 0
+-3.75928 -0.347358 0
+-3.67579 -0.216681 0
+-3.65692 -0.0514431 0
+-3.70915 0.129479 0
+-3.82988 0.302737 0
+-4.00789 0.446274 0
+-4.22594 0.544866 0
+-4.46482 0.59419 0
+-4.70823 0.602454 0
+-4.94684 0.588796 0
+-5.18078 0.578405 0
+-5.41932 0.595473 0
+-5.67793 0.656023 0
+-5.9733 0.762813 0
+-6.31792 0.903876 0
+-6.7155 1.05502 0
+-7.15835 1.18532 0
+-7.62732 1.26402 0
+-8.09414 1.267 0
+-8.526 1.18182 0
+-8.89147 1.01048 0
+-9.16612 0.768285 0
+-9.3352 0.477983 0
+-9.39211 0.161927 0
+-9.3352 -0.161927 0
+-9.16612 -0.477983 0
+-8.89147 -0.768285 0
+-8.526 -1.01048 0
+-8.09414 -1.18182 0
+-7.62732 -1.267 0
+-7.15835 -1.26402 0
+-6.7155 -1.18532 0
+-6.31792 -1.05502 0
+-5.9733 -0.903877 0
+-5.67793 -0.762813 0
+-5.41932 -0.656023 0
+-5.18078 -0.595473 0
+-4.94684 -0.578405 0
+-4.70823 -0.588796 0
+-4.46482 -0.602454 0
+-4.22593 -0.59419 0
+-4.00789 -0.544866 0
+-3.82988 -0.446274 0
+-3.70915 -0.302737 0
+-3.65692 -0.129479 0
+-3.67579 0.0514431 0
+-3.75928 0.216681 0
+-3.89368 0.347358 0
+-4.06155 0.433534 0
+-4.24599 0.476163 0
+-4.43446 0.486124 0
+-4.62113 0.480702 0
+-4.80734 0.478437 0
+-4.9999 0.493602 0
+-5.20771 0.531751 0
+-5.43769 0.587856 0
+-5.69132 0.647859 0
+-5.96277 0.692935 0
+-6.23908 0.704779 0
+-6.50218 0.670503 0
+-6.73244 0.58619 0
+-6.91272 0.458395 0
+-7.03212 0.303152 0
+-7.08831 0.142518 0
+-7.08787 -0.000733788 0
+-7.0443 -0.108996 0
+-6.97417 -0.174608 0
+-6.8925 -0.201911 0
+-6.80869 -0.20578 0
+-6.72418 -0.207082 0
+-6.63241 -0.226364 0
+-6.52132 -0.277516 0
+-6.37759 -0.363145 0
+-6.19161 -0.473112 0
+-5.9616 -0.586853 0
+-5.69554 -0.678954 0
+-5.41039 -0.726344 0
+-5.12871 -0.714887 0
+-4.87368 -0.643435 0
+-4.66391 -0.524301 0
+-4.50951 -0.380069 0
+-4.41033 -0.237602 0
+-4.35715 -0.120841 0
+-4.33526 -0.0443441 0
+-2.18068 -0.00954072 0
+-1.09971 0.00154577 0
+-1.09971 0.00396468 0
+-1.28196 -0.00486579 0
+-2.5281 -0.000330951 0
+-4.99779 0.0178734 0
+-5.02591 0.0724605 0
+-5.09125 0.186184 0
+-5.20985 0.356206 0
+-5.39123 0.561448 0
+-5.63463 0.767698 0
+-5.92798 0.936787 0
+-6.24998 1.03689 0
+-6.57463 1.051 0
+-6.877 0.981323 0
+-7.13863 0.848478 0
+-7.35115 0.68563 0
+-7.51706 0.529057 0
+-7.64737 0.40783 0
+-7.75689 0.335881 0
+-7.85867 0.308859 0
+-7.95933 0.306448 0
+-8.05656 0.299134 0
+-8.13924 0.257286 0
+-8.19024 0.160002 0
+-8.19094 0.00143188 0
+-8.12629 -0.207171 0
+-7.98911 -0.440329 0
+-7.78235 -0.665159 0
+-7.51868 -0.849856 0
+-7.21783 -0.971359 0
+-6.90226 -1.02034 0
+-6.59258 -1.00261 0
+-6.30355 -0.936886 0
+-6.04182 -0.849592 0
+-5.80575 -0.767819 0
+-5.58759 -0.711766 0
+-5.37731 -0.688713 0
+-5.16718 -0.690828 0
+-4.95551 -0.697801 0
+-4.74857 -0.683099 0
+-4.56031 -0.621797 0
+-4.40972 -0.497949 0
+-4.31664 -0.309757 0
+-4.29696 -0.0711204 0
+-4.35853 0.191042 0
+-4.49899 0.443198 0
+-4.70624 0.653527 0
+-4.96123 0.799857 0
+-5.24241 0.875366 0
+-5.53086 0.890901 0
+-5.81491 0.872854 0
+-6.09293 0.856421 0
+-6.37317 0.875708 0
+-6.67071 0.95357 0
+-7.00231 1.09441 0
+-7.38059 1.28216 0
+-7.8093 1.48372 0
+-8.28043 1.65645 0
+-8.77383 1.75742 0
+-9.25928 1.75245 0
+-9.70155 1.62409 0
+-10.0679 1.37684 0
+-10.3359 1.03625 0
+-10.4965 0.63864 0
+-10.5497 0.21512 0
+-10.4965 -0.21512 0
+-10.3359 -0.638639 0
+-10.0679 -1.03625 0
+-9.70155 -1.37684 0
+-9.25928 -1.62409 0
+-8.77383 -1.75245 0
+-8.28043 -1.75742 0
+-7.8093 -1.65645 0
+-7.38059 -1.48372 0
+-7.00231 -1.28216 0
+-6.67071 -1.09441 0
+-6.37316 -0.95357 0
+-6.09293 -0.875708 0
+-5.81491 -0.856421 0
+-5.53086 -0.872854 0
+-5.24241 -0.890901 0
+-4.96123 -0.875366 0
+-4.70624 -0.799856 0
+-4.49899 -0.653527 0
+-4.35853 -0.443198 0
+-4.29696 -0.191042 0
+-4.31664 0.0711203 0
+-4.40972 0.309757 0
+-4.56031 0.497949 0
+-4.74857 0.621797 0
+-4.95551 0.683099 0
+-5.16718 0.697801 0
+-5.37731 0.690828 0
+-5.58759 0.688713 0
+-5.80575 0.711766 0
+-6.04182 0.767819 0
+-6.30355 0.849591 0
+-6.59258 0.936886 0
+-6.90226 1.00261 0
+-7.21782 1.02034 0
+-7.51868 0.971358 0
+-7.78234 0.849856 0
+-7.98911 0.665159 0
+-8.12629 0.440329 0
+-8.19094 0.207171 0
+-8.19024 -0.00143178 0
+-8.13923 -0.160002 0
+-8.05656 -0.257286 0
+-7.95933 -0.299134 0
+-7.85867 -0.306448 0
+-7.75689 -0.308859 0
+-7.64737 -0.335881 0
+-7.51706 -0.40783 0
+-7.35114 -0.529057 0
+-7.13863 -0.68563 0
+-6.877 -0.848478 0
+-6.57463 -0.981323 0
+-6.24998 -1.051 0
+-5.92798 -1.03689 0
+-5.63463 -0.936787 0
+-5.39123 -0.767698 0
+-5.20985 -0.561447 0
+-5.09125 -0.356206 0
+-5.02591 -0.186184 0
+-4.99779 -0.0724605 0
+-2.5281 -0.0178734 0
+-1.28196 0.000330945 0
+-1.28196 0.00486578 0
+-1.38429 -0.00549926 0
+-2.71285 0.00143347 0
+-5.32841 0.0273301 0
+-5.35881 0.102864 0
+-5.42785 0.25522 0
+-5.55104 0.479395 0
+-5.73688 0.747291 0
+-5.98353 1.01435 0
+-6.27817 1.23143 0
+-6.59938 1.3581 0
+-6.92175 1.37337 0
+-7.22143 1.281 0
+-7.48115 1.1082 0
+-7.69352 0.898002 0
+-7.86157 0.697104 0
+-7.99628 0.542542 0
+-8.1119 0.451498 0
+-8.2205 0.41746 0
+-8.3276 0.413544 0
+-8.42993 0.401468 0
+-8.51593 0.343289 0
+-8.56852 0.212592 0
+-8.56945 0.00235632 0
+-8.50413 -0.272487 0
+-8.36581 -0.578651 0
+-8.15774 -0.873224 0
+-7.89288 -1.11472 0
+-7.59113 -1.27311 0
+-7.2751 -1.33638 0
+-6.96543 -1.31229 0
+-6.67689 -1.22543 0
+-6.41612 -1.11036 0
+-6.18157 -1.00237 0
+-5.9656 -0.927736 0
+-5.75834 -0.895973 0
+-5.55205 -0.89712 0
+-5.34479 -0.905054 0
+-5.14243 -0.885456 0
+-4.95842 -0.805813 0
+-4.81139 -0.64498 0
+-4.7211 -0.40004 0
+-4.70368 -0.0885457 0
+-4.76745 0.254815 0
+-4.9108 0.586544 0
+-5.12251 0.865239 0
+-5.38444 1.06179 0
+-5.6756 1.16652 0
+-5.97684 1.19214 0
+-6.27525 1.17127 0
+-6.56696 1.14813 0
+-6.85726 1.16601 0
+-7.15795 1.25426 0
+-7.48267 1.41913 0
+-7.84182 1.6413 0
+-8.23837 1.88027 0
+-8.66532 2.08341 0
+-9.10475 2.19685 0
+-9.52898 2.17667 0
+-9.9049 2.00001 0
+-10.2025 1.67448 0
+-10.4061 1.23983 0
+-10.5196 0.752109 0
+-10.5554 0.250894 0
+-10.5196 -0.250894 0
+-10.4061 -0.752109 0
+-10.2025 -1.23983 0
+-9.9049 -1.67448 0
+-9.52898 -2.00001 0
+-9.10475 -2.17667 0
+-8.66532 -2.19685 0
+-8.23837 -2.08341 0
+-7.84182 -1.88027 0
+-7.48267 -1.6413 0
+-7.15795 -1.41913 0
+-6.85726 -1.25426 0
+-6.56696 -1.16601 0
+-6.27525 -1.14813 0
+-5.97684 -1.17127 0
+-5.6756 -1.19214 0
+-5.38444 -1.16652 0
+-5.12251 -1.06179 0
+-4.9108 -0.865239 0
+-4.76745 -0.586544 0
+-4.70368 -0.254815 0
+-4.7211 0.0885456 0
+-4.81139 0.40004 0
+-4.95842 0.64498 0
+-5.14243 0.805812 0
+-5.34479 0.885456 0
+-5.55204 0.905054 0
+-5.75834 0.89712 0
+-5.9656 0.895973 0
+-6.18157 0.927736 0
+-6.41612 1.00237 0
+-6.67689 1.11036 0
+-6.96543 1.22543 0
+-7.2751 1.31229 0
+-7.59113 1.33638 0
+-7.89288 1.27311 0
+-8.15774 1.11472 0
+-8.36581 0.873224 0
+-8.50413 0.578651 0
+-8.56945 0.272487 0
+-8.56852 -0.0023562 0
+-8.51593 -0.212592 0
+-8.42993 -0.343289 0
+-8.32759 -0.401468 0
+-8.2205 -0.413544 0
+-8.1119 -0.41746 0
+-7.99628 -0.451498 0
+-7.86157 -0.542542 0
+-7.69352 -0.697104 0
+-7.48115 -0.898001 0
+-7.22143 -1.1082 0
+-6.92175 -1.281 0
+-6.59938 -1.37337 0
+-6.27817 -1.3581 0
+-5.98353 -1.23143 0
+-5.73688 -1.01435 0
+-5.55104 -0.747291 0
+-5.42785 -0.479395 0
+-5.35881 -0.25522 0
+-5.32841 -0.102864 0
+-2.71285 -0.0273301 0
+-1.38429 -0.00143348 0
+-1.38429 0.00549925 0
+-1.42675 -0.00584606 0
+-2.77822 0.00332788 0
+-5.42003 0.0361785 0
+-5.44753 0.130366 0
+-5.50926 0.316942 0
+-5.61817 0.588305 0
+-5.78056 0.909687 0
+-5.99366 1.22744 0
+-6.24558 1.48335 0
+-6.51784 1.63036 0
+-6.78943 1.64495 0
+-7.04131 1.53289 0
+-7.26027 1.32716 0
+-7.44114 1.07887 0
+-7.58705 0.843015 0
+-7.70728 0.662767 0
+-7.81324 0.557462 0
+-7.91408 0.518292 0
+-8.01315 0.512619 0
+-8.10659 0.494908 0
+-8.18396 0.420658 0
+-8.23073 0.259365 0
+-8.2318 0.00342245 0
+-8.17526 -0.329026 0
+-8.05576 -0.698146 0
+-7.87641 -1.05258 0
+-7.64853 -1.3426 0
+-7.38936 -1.53227 0
+-7.11844 -1.6073 0
+-6.85354 -1.57718 0
+-6.60739 -1.47158 0
+-6.38571 -1.33204 0
+-6.18721 -1.20087 0
+-6.00544 -1.1095 0
+-5.83204 -1.06938 0
+-5.66032 -1.06884 0
+-5.48837 -1.07701 0
+-5.32072 -1.0531 0
+-5.16836 -0.958177 0
+-5.04683 -0.766505 0
+-4.97293 -0.473943 0
+-4.96061 -0.100864 0
+-5.01748 0.311682 0
+-5.1429 0.711967 0
+-5.32835 1.05069 0
+-5.55946 1.2929 0
+-5.81905 1.42611 0
+-6.09064 1.46373 0
+-6.36186 1.44248 0
+-6.62682 1.41309 0
+-6.8866 1.42579 0
+-7.14733 1.51499 0
+-7.41681 1.68861 0
+-7.70099 1.92549 0
+-8.0013 2.18059 0
+-8.31284 2.39494 0
+-8.62309 2.5071 0
+-8.91151 2.46509 0
+-9.15148 2.23998 0
+-9.31801 1.84101 0
+-9.40387 1.32569 0
+-9.43375 0.781991 0
+-9.43926 0.256404 0
+-9.43375 -0.256404 0
+-9.40387 -0.781991 0
+-9.31801 -1.32569 0
+-9.15148 -1.84101 0
+-8.91151 -2.23998 0
+-8.62309 -2.46509 0
+-8.31284 -2.50709 0
+-8.0013 -2.39494 0
+-7.70099 -2.18059 0
+-7.4168 -1.92549 0
+-7.14733 -1.68861 0
+-6.8866 -1.51499 0
+-6.62682 -1.42579 0
+-6.36186 -1.41309 0
+-6.09064 -1.44248 0
+-5.81905 -1.46373 0
+-5.55946 -1.42611 0
+-5.32835 -1.2929 0
+-5.1429 -1.05069 0
+-5.01748 -0.711967 0
+-4.96061 -0.311682 0
+-4.97293 0.100864 0
+-5.04683 0.473943 0
+-5.16836 0.766505 0
+-5.32072 0.958177 0
+-5.48837 1.0531 0
+-5.66032 1.07701 0
+-5.83204 1.06884 0
+-6.00544 1.06938 0
+-6.18721 1.1095 0
+-6.38571 1.20087 0
+-6.60739 1.33204 0
+-6.85354 1.47158 0
+-7.11843 1.57718 0
+-7.38936 1.6073 0
+-7.64853 1.53227 0
+-7.87641 1.3426 0
+-8.05576 1.05258 0
+-8.17526 0.698146 0
+-8.23179 0.329026 0
+-8.23073 -0.00342232 0
+-8.18396 -0.259364 0
+-8.10659 -0.420657 0
+-8.01315 -0.494908 0
+-7.91407 -0.512619 0
+-7.81324 -0.518292 0
+-7.70728 -0.557462 0
+-7.58705 -0.662767 0
+-7.44114 -0.843015 0
+-7.26027 -1.07887 0
+-7.04131 -1.32716 0
+-6.78942 -1.53289 0
+-6.51784 -1.64495 0
+-6.24558 -1.63036 0
+-5.99365 -1.48335 0
+-5.78056 -1.22744 0
+-5.61816 -0.909687 0
+-5.50925 -0.588305 0
+-5.44753 -0.316942 0
+-5.42003 -0.130366 0
+-2.77822 -0.0361785 0
+-1.42675 -0.00332789 0
+-1.42675 0.00584605 0
+-1.44477 -0.00590224 0
+-2.79843 0.00491541 0
+-5.42788 0.0426682 0
+-5.44727 0.149752 0
+-5.4904 0.360073 0
+-5.56565 0.663556 0
+-5.67619 1.02022 0
+-5.81882 1.37007 0
+-5.98463 1.64916 0
+-6.16114 1.80688 0
+-6.33528 1.81909 0
+-6.49613 1.69374 0
+-6.63683 1.46787 0
+-6.75539 1.19743 0
+-6.85444 0.94206 0
+-6.93985 0.748181 0
+-7.01825 0.635857 0
+-7.09424 0.594286 0
+-7.16852 0.5869 0
+-7.23727 0.56366 0
+-7.29296 0.476347 0
+-7.32607 0.292475 0
+-7.32719 0.00454229 0
+-7.2891 -0.367116 0
+-7.20871 -0.77854 0
+-7.08834 -1.17294 0
+-6.93575 -1.4952 0
+-6.76261 -1.70541 0
+-6.58214 -1.78777 0
+-6.40641 -1.75292 0
+-6.24403 -1.63395 0
+-6.09891 -1.47715 0
+-5.97021 -1.32958 0
+-5.85363 -1.22609 0
+-5.74355 -1.17945 0
+-5.63541 -1.17698 0
+-5.52761 -1.1848 0
+-5.42273 -1.15799 0
+-5.32751 -1.0534 0
+-5.25187 -0.84214 0
+-5.20679 -0.519019 0
+-5.20166 -0.105997 0
+-5.24195 0.351969 0
+-5.32807 0.798089 0
+-5.45558 1.1782 0
+-5.61631 1.45362 0
+-5.79984 1.60965 0
+-5.99528 1.65916 0
+-6.19296 1.64017 0
+-6.38612 1.60625 0
+-6.57141 1.61108 0
+-6.74814 1.69172 0
+-6.91666 1.85713 0
+-7.07709 2.08591 0
+-7.22857 2.33207 0
+-7.3688 2.53518 0
+-7.49302 2.63131 0
+-7.59204 2.56411 0
+-7.64988 2.29782 0
+-7.64599 1.83713 0
+-7.57656 1.25626 0
+-7.49753 0.702961 0
+-7.46435 0.223218 0
+-7.49753 -0.223218 0
+-7.57656 -0.702961 0
+-7.64599 -1.25626 0
+-7.64988 -1.83713 0
+-7.59204 -2.29782 0
+-7.49302 -2.56411 0
+-7.3688 -2.63131 0
+-7.22857 -2.53518 0
+-7.07709 -2.33207 0
+-6.91666 -2.08591 0
+-6.74814 -1.85713 0
+-6.57141 -1.69172 0
+-6.38612 -1.61108 0
+-6.19296 -1.60625 0
+-5.99527 -1.64017 0
+-5.79984 -1.65916 0
+-5.61631 -1.60965 0
+-5.45558 -1.45362 0
+-5.32807 -1.1782 0
+-5.24195 -0.798089 0
+-5.20166 -0.351969 0
+-5.20679 0.105997 0
+-5.25187 0.519018 0
+-5.3275 0.84214 0
+-5.42273 1.0534 0
+-5.52761 1.15799 0
+-5.6354 1.1848 0
+-5.74355 1.17698 0
+-5.85363 1.17945 0
+-5.97021 1.22609 0
+-6.09891 1.32958 0
+-6.24403 1.47715 0
+-6.4064 1.63395 0
+-6.58214 1.75292 0
+-6.76261 1.78777 0
+-6.93575 1.70541 0
+-7.08834 1.4952 0
+-7.20871 1.17294 0
+-7.2891 0.77854 0
+-7.32719 0.367116 0
+-7.32607 -0.00454215 0
+-7.29296 -0.292475 0
+-7.23727 -0.476347 0
+-7.16852 -0.56366 0
+-7.09424 -0.5869 0
+-7.01824 -0.594286 0
+-6.93985 -0.635856 0
+-6.85444 -0.748181 0
+-6.75539 -0.94206 0
+-6.63683 -1.19743 0
+-6.49612 -1.46787 0
+-6.33528 -1.69374 0
+-6.16114 -1.81909 0
+-5.98462 -1.80688 0
+-5.81882 -1.64916 0
+-5.67619 -1.37007 0
+-5.56565 -1.02022 0
+-5.4904 -0.663556 0
+-5.44727 -0.360073 0
+-5.42788 -0.149752 0
+-2.79843 -0.0426682 0
+-1.44477 -0.00491542 0
+-1.44477 0.00590223 0
+-1.47438 -0.00565721 0
+-2.84796 0.00586225 0
+-5.50611 0.0454322 0
+-5.51327 0.156916 0
+-5.52854 0.375335 0
+-5.55389 0.688909 0
+-5.58879 1.05513 0
+-5.63048 1.41176 0
+-5.67502 1.6937 0
+-5.71864 1.85049 0
+-5.75886 1.85931 0
+-5.79502 1.7299 0
+-5.82798 1.50083 0
+-5.85924 1.22869 0
+-5.89031 0.973136 0
+-5.92241 0.78028 0
+-5.95598 0.669428 0
+-5.99029 0.628591 0
+-6.02335 0.61996 0
+-6.05236 0.592671 0
+-6.07436 0.498342 0
+-6.0868 0.304921 0
+-6.08788 0.00562535 0
+-6.07651 -0.378488 0
+-6.05243 -0.80262 0
+-6.01664 -1.20874 0
+-5.97159 -1.54024 0
+-5.92095 -1.75605 0
+-5.86888 -1.83983 0
+-5.81924 -1.80256 0
+-5.77483 -1.67836 0
+-5.73693 -1.51506 0
+-5.70528 -1.36123 0
+-5.67852 -1.25285 0
+-5.65485 -1.20312 0
+-5.6327 -1.19913 0
+-5.61119 -1.20631 0
+-5.59048 -1.1787 0
+-5.57185 -1.07203 0
+-5.55758 -0.856403 0
+-5.55056 -0.526047 0
+-5.55353 -0.103022 0
+-5.56865 0.367084 0
+-5.59721 0.826652 0
+-5.63968 1.22067 0
+-5.69562 1.50955 0
+-5.76344 1.67747 0
+-5.84012 1.73584 0
+-5.921 1.72105 0
+-6.0001 1.68535 0
+-6.07067 1.68164 0
+-6.12553 1.74658 0
+-6.15761 1.88921 0
+-6.16093 2.08923 0
+-6.13195 2.3031 0
+-6.07059 2.47382 0
+-5.98035 2.54108 0
+-5.86639 2.45015 0
+-5.72861 2.16003 0
+-5.55018 1.6587 0
+-5.31135 1.01743 0
+-5.11984 0.511451 0
+-5.04914 0.152517 0
+-5.11984 -0.152517 0
+-5.31135 -0.511451 0
+-5.55018 -1.01743 0
+-5.72861 -1.65869 0
+-5.86639 -2.16003 0
+-5.98035 -2.45015 0
+-6.07059 -2.54108 0
+-6.13195 -2.47382 0
+-6.16093 -2.3031 0
+-6.15761 -2.08923 0
+-6.12553 -1.88921 0
+-6.07067 -1.74658 0
+-6.0001 -1.68164 0
+-5.921 -1.68535 0
+-5.84012 -1.72105 0
+-5.76344 -1.73584 0
+-5.69562 -1.67747 0
+-5.63968 -1.50955 0
+-5.59721 -1.22067 0
+-5.56864 -0.826652 0
+-5.55353 -0.367084 0
+-5.55055 0.103022 0
+-5.55758 0.526047 0
+-5.57185 0.856403 0
+-5.59048 1.07203 0
+-5.61119 1.1787 0
+-5.6327 1.20631 0
+-5.65485 1.19913 0
+-5.67852 1.20312 0
+-5.70528 1.25285 0
+-5.73693 1.36123 0
+-5.77483 1.51506 0
+-5.81924 1.67836 0
+-5.86888 1.80256 0
+-5.92094 1.83983 0
+-5.97158 1.75605 0
+-6.01663 1.54024 0
+-6.05243 1.20874 0
+-6.07651 0.80262 0
+-6.08788 0.378488 0
+-6.0868 -0.00562521 0
+-6.07435 -0.304921 0
+-6.05236 -0.498342 0
+-6.02335 -0.592671 0
+-5.99029 -0.61996 0
+-5.95598 -0.628591 0
+-5.92241 -0.669428 0
+-5.89031 -0.78028 0
+-5.85924 -0.973136 0
+-5.82798 -1.22869 0
+-5.79502 -1.50083 0
+-5.75886 -1.7299 0
+-5.71864 -1.85931 0
+-5.67502 -1.85049 0
+-5.63048 -1.6937 0
+-5.58879 -1.41176 0
+-5.55389 -1.05513 0
+-5.52853 -0.688909 0
+-5.51327 -0.375335 0
+-5.50611 -0.156916 0
+-2.84796 -0.0454322 0
+-1.47438 -0.00586226 0
+-1.47438 0.00565721 0
+-1.53853 -0.00509344 0
+-2.97359 0.00599915 0
+-5.75031 0.0437346 0
+-5.74299 0.149604 0
+-5.72487 0.357213 0
+-5.69033 0.654366 0
+-5.63493 0.999731 0
+-5.55719 1.33402 0
+-5.45974 1.59625 0
+-5.34929 1.74004 0
+-5.23544 1.74545 0
+-5.12854 1.623 0
+-5.03726 1.40955 0
+-4.96635 1.15778 0
+-4.91574 0.922523 0
+-4.88135 0.745892 0
+-4.85699 0.645073 0
+-4.83649 0.608089 0
+-4.81565 0.59912 0
+-4.79361 0.570634 0
+-4.77318 0.477907 0
+-4.75999 0.291737 0
+-4.76083 0.00646429 0
+-4.78142 -0.357897 0
+-4.82463 -0.759414 0
+-4.88973 -1.14364 0
+-4.97285 -1.45712 0
+-5.06801 -1.66089 0
+-5.1685 -1.73935 0
+-5.26825 -1.70281 0
+-5.36299 -1.58363 0
+-5.45078 -1.42726 0
+-5.53208 -1.27993 0
+-5.60908 -1.17585 0
+-5.6846 -1.1276 0
+-5.76071 -1.12302 0
+-5.83756 -1.12946 0
+-5.91271 -1.10355 0
+-5.98124 -1.0035 0
+-6.03664 -0.800998 0
+-6.07229 -0.490402 0
+-6.08309 -0.092218 0
+-6.06706 0.351051 0
+-6.02611 0.785706 0
+-5.9658 1.16036 0
+-5.89398 1.43773 0
+-5.81884 1.60233 0
+-5.74654 1.66355 0
+-5.67908 1.65359 0
+-5.61311 1.61938 0
+-5.54024 1.60877 0
+-5.44853 1.65487 0
+-5.32501 1.76569 0
+-5.15875 1.92297 0
+-4.94374 2.08809 0
+-4.68102 2.21109 0
+-4.38026 2.24032 0
+-4.0603 2.13019 0
+-3.74321 1.84295 0
+-3.4262 1.34169 0
+-3.03299 0.624222 0
+-2.76698 0.245443 0
+-2.67836 0.0638912 0
+-2.76698 -0.0638911 0
+-3.03299 -0.245443 0
+-3.4262 -0.624222 0
+-3.74321 -1.34169 0
+-4.0603 -1.84295 0
+-4.38026 -2.13019 0
+-4.68102 -2.24032 0
+-4.94374 -2.21109 0
+-5.15875 -2.08809 0
+-5.32501 -1.92297 0
+-5.44853 -1.76569 0
+-5.54024 -1.65487 0
+-5.61311 -1.60877 0
+-5.67908 -1.61938 0
+-5.74654 -1.65359 0
+-5.81884 -1.66355 0
+-5.89398 -1.60233 0
+-5.9658 -1.43773 0
+-6.02611 -1.16036 0
+-6.06706 -0.785706 0
+-6.08309 -0.351051 0
+-6.07229 0.0922178 0
+-6.03664 0.490402 0
+-5.98124 0.800998 0
+-5.91271 1.0035 0
+-5.83756 1.10355 0
+-5.76071 1.12946 0
+-5.68459 1.12302 0
+-5.60907 1.1276 0
+-5.53208 1.17585 0
+-5.45078 1.27993 0
+-5.36299 1.42726 0
+-5.26825 1.58363 0
+-5.1685 1.70281 0
+-5.06801 1.73935 0
+-4.97285 1.66089 0
+-4.88973 1.45712 0
+-4.82463 1.14364 0
+-4.78142 0.759414 0
+-4.76083 0.357897 0
+-4.75999 -0.00646416 0
+-4.77318 -0.291737 0
+-4.79361 -0.477907 0
+-4.81565 -0.570634 0
+-4.83649 -0.59912 0
+-4.85699 -0.608089 0
+-4.88135 -0.645073 0
+-4.91573 -0.745892 0
+-4.96635 -0.922523 0
+-5.03726 -1.15778 0
+-5.12854 -1.40955 0
+-5.23543 -1.623 0
+-5.34929 -1.74545 0
+-5.45974 -1.74004 0
+-5.55719 -1.59625 0
+-5.63493 -1.33402 0
+-5.69033 -0.999731 0
+-5.72487 -0.654366 0
+-5.74299 -0.357213 0
+-5.7503 -0.149604 0
+-2.97359 -0.0437346 0
+-1.53853 -0.00599916 0
+-1.53853 0.00509343 0
+-1.63933 -0.00420246 0
+-3.17857 0.00532289 0
+-6.16527 0.0375384 0
+-6.14335 0.127685 0
+-6.09102 0.304886 0
+-5.99475 0.558089 0
+-5.84636 0.851348 0
+-5.64624 1.1339 0
+-5.40421 1.35421 0
+-5.13788 1.47372 0
+-4.86893 1.4765 0
+-4.6183 1.37237 0
+-4.40171 1.19295 0
+-4.22647 0.982549 0
+-4.0907 0.786746 0
+-3.98515 0.640345 0
+-3.89735 0.557269 0
+-3.81618 0.526923 0
+-3.73586 0.518797 0
+-3.65804 0.492819 0
+-3.59172 0.41159 0
+-3.55096 0.250968 0
+-3.55111 0.0066191 0
+-3.60466 -0.304344 0
+-3.71756 -0.646518 0
+-3.88732 -0.973873 0
+-4.1035 -1.24095 0
+-4.35003 -1.41437 0
+-4.60871 -1.48067 0
+-4.86297 -1.44855 0
+-5.10093 -1.34566 0
+-5.31724 -1.21096 0
+-5.51311 -1.08406 0
+-5.69466 -0.994301 0
+-5.86975 -0.952507 0
+-6.04445 -0.948316 0
+-6.22007 -0.953839 0
+-6.39155 -0.932081 0
+-6.5476 -0.847442 0
+-6.67273 -0.675872 0
+-6.75057 -0.412562 0
+-6.768 -0.074789 0
+-6.71866 0.301708 0
+-6.60475 0.671799 0
+-6.43655 0.992166 0
+-6.22995 1.23113 0
+-6.00277 1.37515 0
+-5.7705 1.43129 0
+-5.54244 1.42553 0
+-5.31917 1.39611 0
+-5.09253 1.38214 0
+-4.84816 1.4105 0
+-4.56971 1.48725 0
+-4.24368 1.59694 0
+-3.86308 1.70749 0
+-3.42966 1.77768 0
+-2.95521 1.76586 0
+-2.46349 1.63847 0
+-1.99481 1.37427 0
+-1.5965 0.943379 0
+-1.127 0.154722 0
+-0.903173 0.0216145 0
+-0.842022 0.00274036 0
+-0.903173 -0.00274038 0
+-1.127 -0.0216145 0
+-1.5965 -0.154722 0
+-1.99481 -0.943378 0
+-2.46349 -1.37427 0
+-2.95521 -1.63847 0
+-3.42966 -1.76586 0
+-3.86308 -1.77768 0
+-4.24368 -1.70749 0
+-4.56971 -1.59694 0
+-4.84816 -1.48725 0
+-5.09253 -1.4105 0
+-5.31917 -1.38214 0
+-5.54244 -1.39611 0
+-5.7705 -1.42553 0
+-6.00277 -1.43129 0
+-6.22995 -1.37515 0
+-6.43655 -1.23113 0
+-6.60475 -0.992166 0
+-6.71866 -0.671798 0
+-6.768 -0.301708 0
+-6.75057 0.0747889 0
+-6.67273 0.412562 0
+-6.5476 0.675871 0
+-6.39154 0.847442 0
+-6.22007 0.93208 0
+-6.04445 0.953839 0
+-5.86975 0.948316 0
+-5.69465 0.952507 0
+-5.51311 0.994301 0
+-5.31723 1.08406 0
+-5.10093 1.21096 0
+-4.86297 1.34566 0
+-4.60871 1.44855 0
+-4.35002 1.48067 0
+-4.1035 1.41437 0
+-3.88732 1.24095 0
+-3.71756 0.973873 0
+-3.60466 0.646518 0
+-3.55111 0.304344 0
+-3.55095 -0.00661899 0
+-3.59172 -0.250968 0
+-3.65804 -0.41159 0
+-3.73586 -0.492819 0
+-3.81618 -0.518797 0
+-3.89734 -0.526923 0
+-3.98515 -0.557269 0
+-4.0907 -0.640345 0
+-4.22647 -0.786746 0
+-4.4017 -0.982549 0
+-4.6183 -1.19295 0
+-4.86893 -1.37237 0
+-5.13788 -1.4765 0
+-5.4042 -1.47372 0
+-5.64624 -1.35421 0
+-5.84636 -1.1339 0
+-5.99474 -0.851347 0
+-6.09102 -0.558089 0
+-6.14335 -0.304886 0
+-6.16527 -0.127685 0
+-3.17856 -0.0375384 0
+-1.63933 -0.0053229 0
+-1.63933 0.00420246 0
+-1.75843 -0.00300598 0
+-3.42365 0.00395751 0
+-6.66773 0.0274296 0
+-6.63305 0.0930042 0
+-6.5504 0.222234 0
+-6.39905 0.406735 0
+-6.16764 0.619936 0
+-5.85845 0.824715 0
+-5.48796 0.983728 0
+-5.08359 1.06935 0
+-4.67763 1.07053 0
+-4.30009 0.994832 0
+-3.9725 0.865364 0
+-3.7041 0.71415 0
+-3.4912 0.573846 0
+-3.32012 0.46926 0
+-3.17303 0.410178 0
+-3.0348 0.388689 0
+-2.89856 0.382558 0
+-2.76853 0.362789 0
+-2.65941 0.302478 0
+-2.59283 0.184385 0
+-2.59181 0.0055929 0
+-2.67476 -0.221388 0
+-2.85037 -0.47091 0
+-3.11463 -0.709614 0
+-3.45118 -0.904391 0
+-3.83476 -1.03079 0
+-4.23658 -1.07884 0
+-4.63028 -1.05485 0
+-4.99691 -0.979033 0
+-5.32793 -0.879939 0
+-5.62537 -0.786624 0
+-5.89907 -0.720599 0
+-6.16176 -0.68982 0
+-6.42334 -0.686727 0
+-6.68628 -0.690905 0
+-6.94307 -0.675287 0
+-7.17662 -0.613895 0
+-7.36323 -0.48926 0
+-7.47786 -0.297935 0
+-7.50021 -0.0524407 0
+-7.41993 0.221433 0
+-7.23927 0.491133 0
+-6.97242 0.725321 0
+-6.64222 0.900935 0
+-6.27496 1.00788 0
+-5.89453 1.05086 0
+-5.51704 1.04804 0
+-5.14734 1.02641 0
+-4.77876 1.01355 0
+-4.39648 1.02822 0
+-3.98345 1.07422 0
+-3.52647 1.13995 0
+-3.02062 1.20164 0
+-2.4712 1.22825 0
+-1.89217 1.18684 0
+-1.301 1.0473 0
+-0.712957 0.786223 0
+-0.16972 0.400142 0
+-0.0345412 0.0195428 0
+-0.014917 0.00199033 0
+-0.0123744 0.00019782 0
+-0.014917 -0.000197837 0
+-0.0345412 -0.00199034 0
+-0.16972 -0.0195428 0
+-0.712957 -0.400142 0
+-1.301 -0.786223 0
+-1.89217 -1.0473 0
+-2.4712 -1.18684 0
+-3.02062 -1.22825 0
+-3.52647 -1.20164 0
+-3.98345 -1.13995 0
+-4.39648 -1.07422 0
+-4.77875 -1.02822 0
+-5.14734 -1.01355 0
+-5.51704 -1.02641 0
+-5.89453 -1.04804 0
+-6.27496 -1.05086 0
+-6.64222 -1.00788 0
+-6.97242 -0.900935 0
+-7.23927 -0.725321 0
+-7.41993 -0.491133 0
+-7.5002 -0.221433 0
+-7.47786 0.0524406 0
+-7.36323 0.297935 0
+-7.17662 0.489259 0
+-6.94307 0.613895 0
+-6.68628 0.675287 0
+-6.42334 0.690905 0
+-6.16175 0.686727 0
+-5.89907 0.68982 0
+-5.62537 0.720599 0
+-5.32793 0.786624 0
+-4.99691 0.879938 0
+-4.63028 0.979033 0
+-4.23658 1.05485 0
+-3.83476 1.07884 0
+-3.45118 1.03079 0
+-3.11463 0.904391 0
+-2.85037 0.709614 0
+-2.67476 0.47091 0
+-2.5918 0.221388 0
+-2.59283 -0.00559282 0
+-2.65941 -0.184385 0
+-2.76853 -0.302478 0
+-2.89855 -0.362789 0
+-3.03479 -0.382558 0
+-3.17303 -0.388689 0
+-3.32012 -0.410178 0
+-3.4912 -0.46926 0
+-3.7041 -0.573846 0
+-3.9725 -0.71415 0
+-4.30009 -0.865364 0
+-4.67763 -0.994832 0
+-5.08359 -1.07053 0
+-5.48796 -1.06935 0
+-5.85844 -0.983728 0
+-6.16763 -0.824715 0
+-6.39905 -0.619936 0
+-6.5504 -0.406735 0
+-6.63305 -0.222234 0
+-6.66773 -0.0930042 0
+-3.42365 -0.0274296 0
+-1.75843 -0.00395752 0
+-1.75843 0.00300597 0
+-1.86495 -0.00156937 0
+-3.64384 0.002104 0
+-7.12135 0.0144646 0
+-7.07731 0.0489657 0
+-6.97216 0.117085 0
+-6.77973 0.214303 0
+-6.48629 0.326501 0
+-6.09565 0.434076 0
+-5.62934 0.517414 0
+-5.12209 0.562105 0
+-4.61405 0.562493 0
+-4.14189 0.522675 0
+-3.73138 0.454853 0
+-3.39305 0.375815 0
+-3.12181 0.302609 0
+-2.90069 0.24814 0
+-2.70797 0.217457 0
+-2.52561 0.206334 0
+-2.34611 0.203051 0
+-2.1757 0.192386 0
+-2.03349 0.160263 0
+-1.94681 0.0977035 0
+-1.94445 0.00323871 0
+-2.04932 -0.116523 0
+-2.27212 -0.248105 0
+-2.60775 -0.373984 0
+-3.03543 -0.476716 0
+-3.52286 -0.543359 0
+-4.03309 -0.568609 0
+-4.53218 -0.555761 0
+-4.9957 -0.515511 0
+-5.41268 -0.46296 0
+-5.78581 -0.413492 0
+-6.12792 -0.378491 0
+-6.45556 -0.362177 0
+-6.78173 -0.36056 0
+-7.10979 -0.36284 0
+-7.43038 -0.354702 0
+-7.72184 -0.322433 0
+-7.95425 -0.256849 0
+-8.09602 -0.156165 0
+-8.1215 -0.0269645 0
+-8.01731 0.117243 0
+-7.78558 0.259408 0
+-7.44334 0.383085 0
+-7.01853 0.476121 0
+-6.54377 0.533126 0
+-6.04933 0.556419 0
+-5.55665 0.555356 0
+-5.07411 0.543873 0
+-4.59678 0.536216 0
+-4.11054 0.541979 0
+-3.59924 0.562914 0
+-3.05196 0.59268 0
+-2.46876 0.618436 0
+-1.86371 0.623203 0
+-1.26546 0.588586 0
+-0.716239 0.498083 0
+-0.273594 0.343578 0
+-0.0184736 0.145021 0
+-0.00220276 0.00327189 0
+-0.000392274 0.000179873 0
+-0.000208385 1.39548e-05 0
+-0.000392271 -1.39534e-05 0
+-0.00220275 -0.000179875 0
+-0.0184736 -0.00327189 0
+-0.273594 -0.145021 0
+-0.716239 -0.343578 0
+-1.26546 -0.498083 0
+-1.86371 -0.588586 0
+-2.46876 -0.623203 0
+-3.05196 -0.618436 0
+-3.59924 -0.59268 0
+-4.11054 -0.562914 0
+-4.59678 -0.541979 0
+-5.07411 -0.536216 0
+-5.55664 -0.543873 0
+-6.04933 -0.555356 0
+-6.54377 -0.556418 0
+-7.01853 -0.533126 0
+-7.44334 -0.476121 0
+-7.78558 -0.383085 0
+-8.0173 -0.259408 0
+-8.1215 -0.117243 0
+-8.09602 0.0269644 0
+-7.95425 0.156165 0
+-7.72184 0.256849 0
+-7.43038 0.322433 0
+-7.10979 0.354702 0
+-6.78173 0.36284 0
+-6.45556 0.36056 0
+-6.12792 0.362177 0
+-5.78581 0.378491 0
+-5.41268 0.413492 0
+-4.9957 0.46296 0
+-4.53218 0.515511 0
+-4.03309 0.555761 0
+-3.52285 0.568608 0
+-3.03543 0.543359 0
+-2.60775 0.476716 0
+-2.27212 0.373984 0
+-2.04932 0.248105 0
+-1.94445 0.116523 0
+-1.94681 -0.00323867 0
+-2.03349 -0.0977034 0
+-2.1757 -0.160263 0
+-2.34611 -0.192386 0
+-2.52561 -0.203051 0
+-2.70797 -0.206334 0
+-2.90069 -0.217457 0
+-3.12181 -0.24814 0
+-3.39305 -0.302609 0
+-3.73138 -0.375815 0
+-4.14189 -0.454853 0
+-4.61405 -0.522675 0
+-5.12209 -0.562493 0
+-5.62933 -0.562104 0
+-6.09565 -0.517414 0
+-6.48629 -0.434076 0
+-6.77972 -0.326501 0
+-6.97216 -0.214303 0
+-7.07731 -0.117085 0
+-7.12134 -0.0489657 0
+-3.64384 -0.0144646 0
+-1.86495 -0.002104 0
+-1.86495 0.00156937 0
+-1.92782 9.16695e-10 0
+-3.77403 4.27489e-10 0
+-7.39007 9.34562e-10 0
+-7.3411 1.9104e-09 0
+-7.22402 3.28412e-09 0
+-7.00971 4.7736e-09 0
+-6.68321 6.04494e-09 0
+-6.24914 6.79824e-09 0
+-5.73172 6.87195e-09 0
+-5.16962 6.2965e-09 0
+-4.60712 5.28541e-09 0
+-4.08445 4.18408e-09 0
+-3.6296 3.38062e-09 0
+-3.25378 3.18522e-09 0
+-2.95117 3.70366e-09 0
+-2.70303 4.76749e-09 0
+-2.48558 5.99425e-09 0
+-2.27924 6.9475e-09 0
+-2.07619 7.29134e-09 0
+-1.8838 6.88206e-09 0
+-1.72354 5.79808e-09 0
+-1.62584 4.31477e-09 0
+-1.6226 2.82461e-09 0
+-1.73912 1.72451e-09 0
+-1.98723 1.30081e-09 0
+-2.36121 1.63561e-09 0
+-2.83793 2.57501e-09 0
+-3.38129 3.79283e-09 0
+-3.94989 4.91183e-09 0
+-4.50566 5.61208e-09 0
+-5.02117 5.70718e-09 0
+-5.48413 5.18882e-09 0
+-5.89762 4.22029e-09 0
+-6.27611 3.06496e-09 0
+-6.63829 1.98043e-09 0
+-6.99884 1.13969e-09 0
+-7.36169 6.08771e-10 0
+-7.71639 3.65487e-10 0
+-8.03882 3.39329e-10 0
+-8.29567 4.55181e-10 0
+-8.45183 6.63747e-10 0
+-8.4788 9.44828e-10 0
+-8.36156 1.28199e-09 0
+-8.10215 1.62681e-09 0
+-7.71906 1.88619e-09 0
+-7.24294 1.95e-09 0
+-6.70981 1.73747e-09 0
+-6.1534 1.23324e-09 0
+-5.59804 5.02104e-10 0
+-5.05417 -3.11824e-10 0
+-4.51795 -1.01088e-09 0
+-3.97597 -1.40087e-09 0
+-3.41306 -1.35779e-09 0
+-2.82038 -8.78075e-10 0
+-2.20194 -9.74858e-11 0
+-1.57874 7.38292e-10 0
+-0.990152 1.35224e-09 0
+-0.492069 1.54389e-09 0
+-0.148491 1.29742e-09 0
+-0.00346967 8.21684e-10 0
+-0.000197783 1.67725e-10 0
+-1.77728e-05 2.77086e-10 0
+-3.70187e-06 1.25836e-10 0
+-1.77737e-05 -1.31069e-10 0
+-0.00019777 -2.81942e-10 0
+-0.00346966 -1.64904e-10 0
+-0.148491 -5.29506e-10 0
+-0.492069 -2.31109e-10 0
+-0.990151 7.11123e-10 0
+-1.57874 2.27558e-09 0
+-2.20194 4.13353e-09 0
+-2.82038 5.80135e-09 0
+-3.41306 6.84226e-09 0
+-3.97597 7.02222e-09 0
+-4.51795 6.38002e-09 0
+-5.05417 5.19929e-09 0
+-5.59804 3.89663e-09 0
+-6.1534 2.86819e-09 0
+-6.70981 2.3609e-09 0
+-7.24294 2.40908e-09 0
+-7.71906 2.85025e-09 0
+-8.10215 3.41728e-09 0
+-8.36155 3.86394e-09 0
+-8.4788 4.05772e-09 0
+-8.45183 4.0047e-09 0
+-8.29567 3.81151e-09 0
+-8.03882 3.61472e-09 0
+-7.71639 3.5049e-09 0
+-7.36168 3.47524e-09 0
+-6.99884 3.41816e-09 0
+-6.63828 3.17654e-09 0
+-6.27611 2.62803e-09 0
+-5.89762 1.76035e-09 0
+-5.48412 7.00103e-10 0
+-5.02116 -3.16654e-10 0
+-4.50565 -1.01928e-09 0
+-3.94989 -1.20489e-09 0
+-3.38128 -8.32831e-10 0
+-2.83793 -6.89702e-11 0
+-2.36121 7.50254e-10 0
+-1.98723 1.22992e-09 0
+-1.73912 1.05924e-09 0
+-1.6226 1.2691e-10 0
+-1.62584 -1.43026e-09 0
+-1.72354 -3.25465e-09 0
+-1.8838 -4.87262e-09 0
+-2.07619 -5.85055e-09 0
+-2.27924 -5.94765e-09 0
+-2.48557 -5.20332e-09 0
+-2.70303 -3.92198e-09 0
+-2.95117 -2.56182e-09 0
+-3.25378 -1.5767e-09 0
+-3.62959 -1.27516e-09 0
+-4.08445 -1.73991e-09 0
+-4.60712 -2.81605e-09 0
+-5.16961 -4.16545e-09 0
+-5.73172 -5.37922e-09 0
+-6.24913 -6.1099e-09 0
+-6.68321 -6.17258e-09 0
+-7.00971 -5.57948e-09 0
+-7.22401 -4.50328e-09 0
+-7.3411 -3.19835e-09 0
+-7.39006 -1.91783e-09 0
+-3.77403 -9.38434e-10 0
+-1.92782 -7.48391e-10 0
+-1.92782 -4.56392e-09 0
+-1.92782 0.00156937 0
+-3.77403 -0.002104 0
+-7.39007 -0.0144646 0
+-7.3411 -0.0489657 0
+-7.22402 -0.117085 0
+-7.00971 -0.214303 0
+-6.68321 -0.326501 0
+-6.24914 -0.434076 0
+-5.73172 -0.517414 0
+-5.16962 -0.562105 0
+-4.60712 -0.562493 0
+-4.08445 -0.522675 0
+-3.6296 -0.454853 0
+-3.25378 -0.375815 0
+-2.95117 -0.302609 0
+-2.70303 -0.24814 0
+-2.48558 -0.217457 0
+-2.27924 -0.206334 0
+-2.07619 -0.203051 0
+-1.8838 -0.192386 0
+-1.72354 -0.160263 0
+-1.62584 -0.0977035 0
+-1.6226 -0.00323871 0
+-1.73912 0.116523 0
+-1.98723 0.248105 0
+-2.36121 0.373984 0
+-2.83793 0.476716 0
+-3.38129 0.543359 0
+-3.94989 0.568609 0
+-4.50566 0.555761 0
+-5.02117 0.515511 0
+-5.48413 0.46296 0
+-5.89762 0.413492 0
+-6.27611 0.378491 0
+-6.63829 0.362177 0
+-6.99884 0.36056 0
+-7.36169 0.36284 0
+-7.71639 0.354702 0
+-8.03882 0.322433 0
+-8.29567 0.256849 0
+-8.45183 0.156165 0
+-8.4788 0.0269645 0
+-8.36156 -0.117243 0
+-8.10215 -0.259408 0
+-7.71906 -0.383085 0
+-7.24294 -0.476121 0
+-6.70981 -0.533126 0
+-6.1534 -0.556419 0
+-5.59804 -0.555356 0
+-5.05417 -0.543873 0
+-4.51795 -0.536216 0
+-3.97597 -0.541979 0
+-3.41306 -0.562914 0
+-2.82038 -0.59268 0
+-2.20194 -0.618436 0
+-1.57874 -0.623203 0
+-0.990152 -0.588586 0
+-0.492069 -0.498083 0
+-0.148491 -0.343578 0
+-0.00346967 -0.145021 0
+-0.000197782 -0.00327189 0
+-1.77728e-05 -0.000179873 0
+-3.70212e-06 -1.39549e-05 0
+-1.77736e-05 1.39534e-05 0
+-0.000197768 0.000179875 0
+-0.00346966 0.00327189 0
+-0.148491 0.145021 0
+-0.492069 0.343578 0
+-0.990151 0.498083 0
+-1.57874 0.588586 0
+-2.20194 0.623203 0
+-2.82038 0.618436 0
+-3.41306 0.59268 0
+-3.97597 0.562914 0
+-4.51795 0.541979 0
+-5.05417 0.536216 0
+-5.59804 0.543873 0
+-6.1534 0.555356 0
+-6.70981 0.556418 0
+-7.24294 0.533126 0
+-7.71906 0.476121 0
+-8.10215 0.383085 0
+-8.36155 0.259408 0
+-8.4788 0.117243 0
+-8.45183 -0.0269644 0
+-8.29567 -0.156165 0
+-8.03882 -0.256849 0
+-7.71639 -0.322433 0
+-7.36168 -0.354702 0
+-6.99884 -0.36284 0
+-6.63828 -0.36056 0
+-6.27611 -0.362177 0
+-5.89762 -0.378491 0
+-5.48412 -0.413492 0
+-5.02116 -0.46296 0
+-4.50565 -0.515511 0
+-3.94989 -0.555761 0
+-3.38128 -0.568608 0
+-2.83793 -0.543359 0
+-2.36121 -0.476716 0
+-1.98723 -0.373984 0
+-1.73912 -0.248105 0
+-1.6226 -0.116523 0
+-1.62584 0.00323867 0
+-1.72354 0.0977034 0
+-1.8838 0.160263 0
+-2.07619 0.192386 0
+-2.27924 0.203051 0
+-2.48557 0.206334 0
+-2.70303 0.217457 0
+-2.95117 0.24814 0
+-3.25378 0.302609 0
+-3.62959 0.375815 0
+-4.08445 0.454853 0
+-4.60712 0.522675 0
+-5.16961 0.562493 0
+-5.73172 0.562104 0
+-6.24913 0.517414 0
+-6.68321 0.434076 0
+-7.00971 0.326501 0
+-7.22401 0.214303 0
+-7.3411 0.117085 0
+-7.39006 0.0489657 0
+-3.77403 0.0144646 0
+-1.92782 0.002104 0
+-1.92782 -0.00156936 0
+-1.86495 0.00300598 0
+-3.64384 -0.00395751 0
+-7.12135 -0.0274296 0
+-7.07731 -0.0930042 0
+-6.97216 -0.222234 0
+-6.77973 -0.406735 0
+-6.48629 -0.619936 0
+-6.09565 -0.824715 0
+-5.62934 -0.983728 0
+-5.12209 -1.06935 0
+-4.61405 -1.07053 0
+-4.14189 -0.994832 0
+-3.73138 -0.865364 0
+-3.39305 -0.71415 0
+-3.12181 -0.573846 0
+-2.90069 -0.46926 0
+-2.70797 -0.410178 0
+-2.52561 -0.388689 0
+-2.34611 -0.382558 0
+-2.1757 -0.362789 0
+-2.03349 -0.302478 0
+-1.94681 -0.184385 0
+-1.94445 -0.00559289 0
+-2.04932 0.221388 0
+-2.27212 0.47091 0
+-2.60775 0.709614 0
+-3.03543 0.904391 0
+-3.52286 1.03079 0
+-4.03309 1.07884 0
+-4.53218 1.05485 0
+-4.9957 0.979033 0
+-5.41268 0.879939 0
+-5.78581 0.786624 0
+-6.12792 0.720599 0
+-6.45556 0.68982 0
+-6.78173 0.686727 0
+-7.10979 0.690905 0
+-7.43038 0.675287 0
+-7.72184 0.613895 0
+-7.95425 0.48926 0
+-8.09602 0.297935 0
+-8.1215 0.0524407 0
+-8.01731 -0.221433 0
+-7.78558 -0.491133 0
+-7.44334 -0.725321 0
+-7.01853 -0.900935 0
+-6.54377 -1.00788 0
+-6.04933 -1.05086 0
+-5.55665 -1.04804 0
+-5.07411 -1.02641 0
+-4.59678 -1.01355 0
+-4.11054 -1.02822 0
+-3.59924 -1.07422 0
+-3.05196 -1.13995 0
+-2.46876 -1.20164 0
+-1.86371 -1.22825 0
+-1.26546 -1.18684 0
+-0.716239 -1.0473 0
+-0.273594 -0.786223 0
+-0.0184736 -0.400142 0
+-0.00220275 -0.0195428 0
+-0.000392274 -0.00199034 0
+-0.000208386 -0.000197821 0
+-0.000392271 0.000197838 0
+-0.00220275 0.00199034 0
+-0.0184736 0.0195428 0
+-0.273594 0.400142 0
+-0.716239 0.786223 0
+-1.26546 1.0473 0
+-1.86371 1.18684 0
+-2.46876 1.22825 0
+-3.05196 1.20164 0
+-3.59924 1.13995 0
+-4.11054 1.07422 0
+-4.59678 1.02822 0
+-5.07411 1.01355 0
+-5.55664 1.02641 0
+-6.04933 1.04804 0
+-6.54377 1.05086 0
+-7.01853 1.00788 0
+-7.44334 0.900935 0
+-7.78558 0.725321 0
+-8.0173 0.491133 0
+-8.1215 0.221433 0
+-8.09602 -0.0524406 0
+-7.95425 -0.297935 0
+-7.72184 -0.489259 0
+-7.43038 -0.613895 0
+-7.10979 -0.675287 0
+-6.78173 -0.690905 0
+-6.45556 -0.686727 0
+-6.12792 -0.68982 0
+-5.78581 -0.720599 0
+-5.41268 -0.786624 0
+-4.9957 -0.879938 0
+-4.53218 -0.979033 0
+-4.03309 -1.05485 0
+-3.52285 -1.07884 0
+-3.03543 -1.03079 0
+-2.60775 -0.904391 0
+-2.27212 -0.709614 0
+-2.04932 -0.47091 0
+-1.94445 -0.221388 0
+-1.94681 0.00559282 0
+-2.03349 0.184385 0
+-2.1757 0.302478 0
+-2.34611 0.362789 0
+-2.52561 0.382558 0
+-2.70797 0.388689 0
+-2.90069 0.410178 0
+-3.12181 0.46926 0
+-3.39305 0.573846 0
+-3.73138 0.71415 0
+-4.14189 0.865364 0
+-4.61405 0.994832 0
+-5.12209 1.07053 0
+-5.62933 1.06935 0
+-6.09565 0.983728 0
+-6.48629 0.824715 0
+-6.77972 0.619936 0
+-6.97216 0.406735 0
+-7.07731 0.222234 0
+-7.12134 0.0930042 0
+-3.64384 0.0274296 0
+-1.86495 0.00395752 0
+-1.86495 -0.00300597 0
+-1.75843 0.00420246 0
+-3.42365 -0.00532289 0
+-6.66773 -0.0375384 0
+-6.63305 -0.127685 0
+-6.5504 -0.304886 0
+-6.39905 -0.558089 0
+-6.16764 -0.851348 0
+-5.85845 -1.1339 0
+-5.48796 -1.35421 0
+-5.08359 -1.47372 0
+-4.67763 -1.4765 0
+-4.30009 -1.37237 0
+-3.9725 -1.19295 0
+-3.7041 -0.982549 0
+-3.4912 -0.786746 0
+-3.32012 -0.640345 0
+-3.17303 -0.557269 0
+-3.0348 -0.526923 0
+-2.89856 -0.518797 0
+-2.76853 -0.492819 0
+-2.65941 -0.41159 0
+-2.59283 -0.250968 0
+-2.59181 -0.00661909 0
+-2.67476 0.304344 0
+-2.85037 0.646518 0
+-3.11463 0.973873 0
+-3.45118 1.24095 0
+-3.83476 1.41437 0
+-4.23658 1.48067 0
+-4.63028 1.44855 0
+-4.99691 1.34566 0
+-5.32793 1.21096 0
+-5.62537 1.08406 0
+-5.89907 0.994301 0
+-6.16176 0.952507 0
+-6.42334 0.948316 0
+-6.68628 0.953839 0
+-6.94307 0.932081 0
+-7.17662 0.847442 0
+-7.36323 0.675872 0
+-7.47786 0.412562 0
+-7.50021 0.074789 0
+-7.41993 -0.301708 0
+-7.23927 -0.671799 0
+-6.97242 -0.992166 0
+-6.64222 -1.23113 0
+-6.27496 -1.37515 0
+-5.89453 -1.43129 0
+-5.51704 -1.42553 0
+-5.14734 -1.39611 0
+-4.77876 -1.38214 0
+-4.39648 -1.4105 0
+-3.98345 -1.48725 0
+-3.52647 -1.59694 0
+-3.02062 -1.70749 0
+-2.4712 -1.77768 0
+-1.89217 -1.76586 0
+-1.301 -1.63847 0
+-0.712957 -1.37427 0
+-0.16972 -0.943379 0
+-0.0345412 -0.154722 0
+-0.014917 -0.0216145 0
+-0.0123744 -0.00274036 0
+-0.014917 0.00274038 0
+-0.0345412 0.0216145 0
+-0.16972 0.154722 0
+-0.712957 0.943378 0
+-1.301 1.37427 0
+-1.89217 1.63847 0
+-2.4712 1.76586 0
+-3.02062 1.77768 0
+-3.52647 1.70749 0
+-3.98345 1.59694 0
+-4.39648 1.48725 0
+-4.77875 1.4105 0
+-5.14734 1.38214 0
+-5.51704 1.39611 0
+-5.89453 1.42553 0
+-6.27496 1.43129 0
+-6.64222 1.37515 0
+-6.97242 1.23113 0
+-7.23927 0.992166 0
+-7.41993 0.671799 0
+-7.5002 0.301708 0
+-7.47786 -0.0747889 0
+-7.36323 -0.412562 0
+-7.17662 -0.675871 0
+-6.94307 -0.847442 0
+-6.68628 -0.93208 0
+-6.42334 -0.953839 0
+-6.16175 -0.948316 0
+-5.89907 -0.952507 0
+-5.62537 -0.994301 0
+-5.32793 -1.08406 0
+-4.99691 -1.21096 0
+-4.63028 -1.34566 0
+-4.23658 -1.44855 0
+-3.83476 -1.48067 0
+-3.45118 -1.41437 0
+-3.11463 -1.24095 0
+-2.85037 -0.973873 0
+-2.67476 -0.646518 0
+-2.5918 -0.304344 0
+-2.59283 0.00661898 0
+-2.65941 0.250968 0
+-2.76853 0.41159 0
+-2.89855 0.492818 0
+-3.03479 0.518797 0
+-3.17303 0.526923 0
+-3.32012 0.557268 0
+-3.4912 0.640345 0
+-3.7041 0.786746 0
+-3.9725 0.982549 0
+-4.30009 1.19295 0
+-4.67763 1.37237 0
+-5.08359 1.4765 0
+-5.48796 1.47372 0
+-5.85844 1.35421 0
+-6.16763 1.1339 0
+-6.39905 0.851347 0
+-6.5504 0.558089 0
+-6.63305 0.304886 0
+-6.66773 0.127685 0
+-3.42365 0.0375384 0
+-1.75843 0.00532289 0
+-1.75843 -0.00420247 0
+-1.63933 0.00509344 0
+-3.17857 -0.00599915 0
+-6.16527 -0.0437346 0
+-6.14335 -0.149604 0
+-6.09102 -0.357213 0
+-5.99475 -0.654366 0
+-5.84636 -0.999731 0
+-5.64624 -1.33402 0
+-5.40421 -1.59625 0
+-5.13788 -1.74004 0
+-4.86893 -1.74545 0
+-4.6183 -1.623 0
+-4.40171 -1.40955 0
+-4.22647 -1.15778 0
+-4.0907 -0.922523 0
+-3.98515 -0.745892 0
+-3.89735 -0.645073 0
+-3.81618 -0.608089 0
+-3.73586 -0.59912 0
+-3.65804 -0.570634 0
+-3.59172 -0.477907 0
+-3.55096 -0.291737 0
+-3.55111 -0.00646429 0
+-3.60466 0.357897 0
+-3.71756 0.759414 0
+-3.88732 1.14364 0
+-4.1035 1.45712 0
+-4.35003 1.66089 0
+-4.60871 1.73935 0
+-4.86297 1.70281 0
+-5.10093 1.58363 0
+-5.31724 1.42726 0
+-5.51311 1.27993 0
+-5.69466 1.17585 0
+-5.86975 1.1276 0
+-6.04445 1.12302 0
+-6.22007 1.12946 0
+-6.39155 1.10355 0
+-6.5476 1.0035 0
+-6.67273 0.800998 0
+-6.75057 0.490402 0
+-6.768 0.092218 0
+-6.71866 -0.351051 0
+-6.60475 -0.785706 0
+-6.43655 -1.16036 0
+-6.22995 -1.43773 0
+-6.00277 -1.60233 0
+-5.7705 -1.66355 0
+-5.54244 -1.65359 0
+-5.31917 -1.61938 0
+-5.09253 -1.60877 0
+-4.84816 -1.65487 0
+-4.56971 -1.76569 0
+-4.24368 -1.92297 0
+-3.86308 -2.08809 0
+-3.42966 -2.21109 0
+-2.95521 -2.24032 0
+-2.46349 -2.13019 0
+-1.99481 -1.84295 0
+-1.5965 -1.34169 0
+-1.127 -0.624222 0
+-0.903173 -0.245443 0
+-0.842022 -0.0638912 0
+-0.903173 0.0638911 0
+-1.127 0.245443 0
+-1.5965 0.624222 0
+-1.99481 1.34169 0
+-2.46349 1.84295 0
+-2.95521 2.13019 0
+-3.42966 2.24032 0
+-3.86308 2.21109 0
+-4.24368 2.08809 0
+-4.56971 1.92297 0
+-4.84816 1.76569 0
+-5.09253 1.65487 0
+-5.31917 1.60877 0
+-5.54244 1.61938 0
+-5.7705 1.65359 0
+-6.00277 1.66355 0
+-6.22995 1.60233 0
+-6.43655 1.43773 0
+-6.60475 1.16036 0
+-6.71866 0.785706 0
+-6.768 0.351051 0
+-6.75057 -0.0922178 0
+-6.67273 -0.490402 0
+-6.5476 -0.800998 0
+-6.39154 -1.0035 0
+-6.22007 -1.10355 0
+-6.04445 -1.12946 0
+-5.86975 -1.12302 0
+-5.69465 -1.1276 0
+-5.51311 -1.17585 0
+-5.31723 -1.27993 0
+-5.10093 -1.42726 0
+-4.86297 -1.58363 0
+-4.60871 -1.70281 0
+-4.35002 -1.73935 0
+-4.1035 -1.66089 0
+-3.88732 -1.45712 0
+-3.71756 -1.14364 0
+-3.60466 -0.759414 0
+-3.55111 -0.357897 0
+-3.55095 0.00646416 0
+-3.59172 0.291737 0
+-3.65804 0.477907 0
+-3.73586 0.570634 0
+-3.81618 0.59912 0
+-3.89734 0.608089 0
+-3.98515 0.645073 0
+-4.0907 0.745892 0
+-4.22647 0.922523 0
+-4.4017 1.15778 0
+-4.6183 1.40955 0
+-4.86893 1.623 0
+-5.13788 1.74545 0
+-5.4042 1.74004 0
+-5.64624 1.59625 0
+-5.84636 1.33402 0
+-5.99474 0.999731 0
+-6.09102 0.654366 0
+-6.14335 0.357213 0
+-6.16527 0.149604 0
+-3.17856 0.0437346 0
+-1.63933 0.00599917 0
+-1.63933 -0.0050934 0
+-1.53853 0.00565721 0
+-2.97359 -0.00586225 0
+-5.75031 -0.0454322 0
+-5.74299 -0.156916 0
+-5.72487 -0.375335 0
+-5.69033 -0.688909 0
+-5.63493 -1.05513 0
+-5.55719 -1.41176 0
+-5.45974 -1.6937 0
+-5.34929 -1.85049 0
+-5.23544 -1.85931 0
+-5.12854 -1.7299 0
+-5.03726 -1.50083 0
+-4.96635 -1.22869 0
+-4.91574 -0.973136 0
+-4.88135 -0.78028 0
+-4.85699 -0.669428 0
+-4.83649 -0.628591 0
+-4.81565 -0.61996 0
+-4.79361 -0.592671 0
+-4.77318 -0.498342 0
+-4.75999 -0.304921 0
+-4.76083 -0.00562534 0
+-4.78142 0.378488 0
+-4.82463 0.80262 0
+-4.88973 1.20874 0
+-4.97285 1.54024 0
+-5.06801 1.75605 0
+-5.1685 1.83983 0
+-5.26825 1.80256 0
+-5.36299 1.67836 0
+-5.45078 1.51506 0
+-5.53208 1.36123 0
+-5.60908 1.25285 0
+-5.6846 1.20312 0
+-5.76071 1.19913 0
+-5.83756 1.20631 0
+-5.91271 1.1787 0
+-5.98124 1.07203 0
+-6.03664 0.856403 0
+-6.07229 0.526047 0
+-6.08309 0.103022 0
+-6.06706 -0.367084 0
+-6.02611 -0.826652 0
+-5.9658 -1.22067 0
+-5.89398 -1.50955 0
+-5.81884 -1.67747 0
+-5.74654 -1.73584 0
+-5.67908 -1.72105 0
+-5.61311 -1.68535 0
+-5.54024 -1.68164 0
+-5.44853 -1.74658 0
+-5.32501 -1.88921 0
+-5.15875 -2.08923 0
+-4.94374 -2.3031 0
+-4.68102 -2.47382 0
+-4.38026 -2.54108 0
+-4.0603 -2.45015 0
+-3.74321 -2.16003 0
+-3.4262 -1.6587 0
+-3.03299 -1.01743 0
+-2.76698 -0.511451 0
+-2.67836 -0.152517 0
+-2.76698 0.152517 0
+-3.03299 0.511451 0
+-3.4262 1.01743 0
+-3.74321 1.65869 0
+-4.0603 2.16003 0
+-4.38026 2.45015 0
+-4.68102 2.54108 0
+-4.94374 2.47382 0
+-5.15875 2.3031 0
+-5.32501 2.08923 0
+-5.44853 1.88921 0
+-5.54024 1.74658 0
+-5.61311 1.68164 0
+-5.67908 1.68535 0
+-5.74654 1.72105 0
+-5.81884 1.73584 0
+-5.89398 1.67747 0
+-5.9658 1.50955 0
+-6.02611 1.22067 0
+-6.06706 0.826652 0
+-6.08309 0.367084 0
+-6.07229 -0.103022 0
+-6.03664 -0.526047 0
+-5.98124 -0.856402 0
+-5.91271 -1.07203 0
+-5.83756 -1.1787 0
+-5.76071 -1.20631 0
+-5.68459 -1.19913 0
+-5.60907 -1.20312 0
+-5.53208 -1.25285 0
+-5.45078 -1.36123 0
+-5.36299 -1.51506 0
+-5.26825 -1.67836 0
+-5.1685 -1.80256 0
+-5.06801 -1.83983 0
+-4.97285 -1.75605 0
+-4.88973 -1.54024 0
+-4.82463 -1.20874 0
+-4.78142 -0.80262 0
+-4.76083 -0.378488 0
+-4.75999 0.0056252 0
+-4.77318 0.304921 0
+-4.79361 0.498342 0
+-4.81565 0.592671 0
+-4.83649 0.61996 0
+-4.85699 0.628591 0
+-4.88135 0.669428 0
+-4.91573 0.78028 0
+-4.96635 0.973136 0
+-5.03726 1.22869 0
+-5.12854 1.50083 0
+-5.23543 1.7299 0
+-5.34929 1.85931 0
+-5.45974 1.85049 0
+-5.55719 1.6937 0
+-5.63493 1.41176 0
+-5.69033 1.05513 0
+-5.72487 0.688909 0
+-5.74299 0.375335 0
+-5.7503 0.156916 0
+-2.97359 0.0454322 0
+-1.53853 0.00586225 0
+-1.53853 -0.00565724 0
+-1.47438 0.00590224 0
+-2.84796 -0.0049154 0
+-5.50611 -0.0426682 0
+-5.51327 -0.149752 0
+-5.52854 -0.360073 0
+-5.55389 -0.663556 0
+-5.58879 -1.02022 0
+-5.63048 -1.37007 0
+-5.67502 -1.64916 0
+-5.71864 -1.80688 0
+-5.75886 -1.81909 0
+-5.79502 -1.69374 0
+-5.82798 -1.46787 0
+-5.85924 -1.19743 0
+-5.89031 -0.94206 0
+-5.92241 -0.748181 0
+-5.95598 -0.635856 0
+-5.99029 -0.594286 0
+-6.02335 -0.5869 0
+-6.05236 -0.56366 0
+-6.07436 -0.476347 0
+-6.0868 -0.292475 0
+-6.08788 -0.00454228 0
+-6.07651 0.367116 0
+-6.05243 0.77854 0
+-6.01664 1.17294 0
+-5.97159 1.4952 0
+-5.92095 1.70541 0
+-5.86888 1.78777 0
+-5.81924 1.75292 0
+-5.77483 1.63395 0
+-5.73693 1.47715 0
+-5.70528 1.32958 0
+-5.67852 1.22609 0
+-5.65485 1.17945 0
+-5.6327 1.17698 0
+-5.61119 1.1848 0
+-5.59048 1.15799 0
+-5.57185 1.0534 0
+-5.55758 0.84214 0
+-5.55056 0.519019 0
+-5.55353 0.105997 0
+-5.56865 -0.351969 0
+-5.59721 -0.798089 0
+-5.63968 -1.1782 0
+-5.69562 -1.45362 0
+-5.76344 -1.60965 0
+-5.84012 -1.65916 0
+-5.921 -1.64017 0
+-6.0001 -1.60625 0
+-6.07067 -1.61108 0
+-6.12553 -1.69172 0
+-6.15761 -1.85713 0
+-6.16093 -2.08591 0
+-6.13195 -2.33207 0
+-6.07059 -2.53518 0
+-5.98035 -2.63131 0
+-5.86639 -2.56411 0
+-5.72861 -2.29782 0
+-5.55018 -1.83713 0
+-5.31135 -1.25626 0
+-5.11984 -0.702961 0
+-5.04914 -0.223218 0
+-5.11984 0.223218 0
+-5.31135 0.702961 0
+-5.55018 1.25626 0
+-5.72861 1.83713 0
+-5.86639 2.29782 0
+-5.98035 2.56411 0
+-6.07059 2.63131 0
+-6.13195 2.53518 0
+-6.16093 2.33207 0
+-6.15761 2.08591 0
+-6.12553 1.85713 0
+-6.07067 1.69172 0
+-6.0001 1.61108 0
+-5.921 1.60625 0
+-5.84012 1.64017 0
+-5.76344 1.65916 0
+-5.69562 1.60965 0
+-5.63968 1.45362 0
+-5.59721 1.1782 0
+-5.56864 0.798089 0
+-5.55353 0.351969 0
+-5.55055 -0.105997 0
+-5.55758 -0.519018 0
+-5.57185 -0.84214 0
+-5.59048 -1.0534 0
+-5.61119 -1.15799 0
+-5.6327 -1.1848 0
+-5.65485 -1.17698 0
+-5.67852 -1.17945 0
+-5.70528 -1.22609 0
+-5.73693 -1.32958 0
+-5.77483 -1.47715 0
+-5.81924 -1.63395 0
+-5.86888 -1.75292 0
+-5.92094 -1.78777 0
+-5.97158 -1.70541 0
+-6.01663 -1.4952 0
+-6.05243 -1.17294 0
+-6.07651 -0.77854 0
+-6.08788 -0.367116 0
+-6.0868 0.00454214 0
+-6.07435 0.292475 0
+-6.05236 0.476347 0
+-6.02335 0.56366 0
+-5.99029 0.5869 0
+-5.95598 0.594286 0
+-5.92241 0.635856 0
+-5.89031 0.748181 0
+-5.85924 0.94206 0
+-5.82798 1.19743 0
+-5.79502 1.46787 0
+-5.75886 1.69374 0
+-5.71864 1.81909 0
+-5.67502 1.80688 0
+-5.63048 1.64916 0
+-5.58879 1.37007 0
+-5.55389 1.02022 0
+-5.52853 0.663556 0
+-5.51327 0.360073 0
+-5.50611 0.149752 0
+-2.84796 0.0426682 0
+-1.47438 0.00491542 0
+-1.47438 -0.00590219 0
+-1.44477 0.00584606 0
+-2.79843 -0.00332788 0
+-5.42788 -0.0361784 0
+-5.44727 -0.130366 0
+-5.4904 -0.316942 0
+-5.56565 -0.588305 0
+-5.67619 -0.909687 0
+-5.81882 -1.22744 0
+-5.98463 -1.48335 0
+-6.16114 -1.63036 0
+-6.33528 -1.64495 0
+-6.49613 -1.53289 0
+-6.63683 -1.32716 0
+-6.75539 -1.07887 0
+-6.85444 -0.843015 0
+-6.93985 -0.662767 0
+-7.01825 -0.557462 0
+-7.09424 -0.518292 0
+-7.16852 -0.512619 0
+-7.23727 -0.494908 0
+-7.29296 -0.420658 0
+-7.32607 -0.259365 0
+-7.32719 -0.00342245 0
+-7.2891 0.329026 0
+-7.20871 0.698146 0
+-7.08834 1.05258 0
+-6.93575 1.3426 0
+-6.76261 1.53227 0
+-6.58214 1.6073 0
+-6.40641 1.57718 0
+-6.24403 1.47158 0
+-6.09891 1.33204 0
+-5.97021 1.20087 0
+-5.85363 1.1095 0
+-5.74355 1.06938 0
+-5.63541 1.06884 0
+-5.52761 1.07701 0
+-5.42273 1.0531 0
+-5.32751 0.958177 0
+-5.25187 0.766505 0
+-5.20679 0.473943 0
+-5.20166 0.100864 0
+-5.24195 -0.311682 0
+-5.32807 -0.711967 0
+-5.45558 -1.05069 0
+-5.61631 -1.2929 0
+-5.79984 -1.42611 0
+-5.99528 -1.46373 0
+-6.19296 -1.44248 0
+-6.38612 -1.41309 0
+-6.57141 -1.42579 0
+-6.74814 -1.51499 0
+-6.91666 -1.68861 0
+-7.07709 -1.92549 0
+-7.22857 -2.18059 0
+-7.3688 -2.39494 0
+-7.49302 -2.5071 0
+-7.59204 -2.46509 0
+-7.64988 -2.23998 0
+-7.64599 -1.84101 0
+-7.57656 -1.32569 0
+-7.49753 -0.781991 0
+-7.46435 -0.256404 0
+-7.49753 0.256404 0
+-7.57656 0.781991 0
+-7.64599 1.32569 0
+-7.64988 1.84101 0
+-7.59204 2.23998 0
+-7.49302 2.46509 0
+-7.3688 2.50709 0
+-7.22857 2.39494 0
+-7.07709 2.18059 0
+-6.91666 1.92549 0
+-6.74814 1.68861 0
+-6.57141 1.51499 0
+-6.38612 1.42579 0
+-6.19296 1.41309 0
+-5.99527 1.44248 0
+-5.79984 1.46373 0
+-5.61631 1.42611 0
+-5.45558 1.2929 0
+-5.32807 1.05069 0
+-5.24195 0.711967 0
+-5.20166 0.311682 0
+-5.20679 -0.100864 0
+-5.25187 -0.473943 0
+-5.3275 -0.766505 0
+-5.42273 -0.958177 0
+-5.52761 -1.0531 0
+-5.6354 -1.07701 0
+-5.74355 -1.06884 0
+-5.85363 -1.06938 0
+-5.97021 -1.1095 0
+-6.09891 -1.20087 0
+-6.24403 -1.33204 0
+-6.4064 -1.47158 0
+-6.58214 -1.57718 0
+-6.76261 -1.6073 0
+-6.93575 -1.53227 0
+-7.08834 -1.3426 0
+-7.20871 -1.05258 0
+-7.2891 -0.698146 0
+-7.32719 -0.329026 0
+-7.32607 0.00342232 0
+-7.29296 0.259364 0
+-7.23727 0.420657 0
+-7.16852 0.494908 0
+-7.09424 0.512619 0
+-7.01824 0.518292 0
+-6.93985 0.557462 0
+-6.85444 0.662767 0
+-6.75539 0.843015 0
+-6.63683 1.07887 0
+-6.49612 1.32716 0
+-6.33528 1.53289 0
+-6.16114 1.64495 0
+-5.98462 1.63036 0
+-5.81882 1.48335 0
+-5.67619 1.22744 0
+-5.56565 0.909687 0
+-5.4904 0.588305 0
+-5.44727 0.316942 0
+-5.42788 0.130366 0
+-2.79843 0.0361785 0
+-1.44477 0.00332788 0
+-1.44477 -0.00584608 0
+-1.42675 0.00549925 0
+-2.77822 -0.00143347 0
+-5.42003 -0.0273301 0
+-5.44753 -0.102864 0
+-5.50926 -0.25522 0
+-5.61817 -0.479395 0
+-5.78056 -0.747291 0
+-5.99366 -1.01435 0
+-6.24558 -1.23143 0
+-6.51784 -1.3581 0
+-6.78943 -1.37337 0
+-7.04131 -1.281 0
+-7.26027 -1.1082 0
+-7.44114 -0.898002 0
+-7.58705 -0.697104 0
+-7.70728 -0.542542 0
+-7.81324 -0.451498 0
+-7.91408 -0.41746 0
+-8.01315 -0.413544 0
+-8.10659 -0.401468 0
+-8.18396 -0.343289 0
+-8.23073 -0.212592 0
+-8.2318 -0.00235631 0
+-8.17526 0.272487 0
+-8.05576 0.578651 0
+-7.87641 0.873224 0
+-7.64853 1.11472 0
+-7.38936 1.27311 0
+-7.11844 1.33638 0
+-6.85354 1.31229 0
+-6.60739 1.22543 0
+-6.38571 1.11036 0
+-6.18721 1.00237 0
+-6.00544 0.927736 0
+-5.83204 0.895973 0
+-5.66032 0.89712 0
+-5.48837 0.905054 0
+-5.32072 0.885456 0
+-5.16836 0.805813 0
+-5.04683 0.64498 0
+-4.97293 0.40004 0
+-4.96061 0.0885457 0
+-5.01748 -0.254815 0
+-5.1429 -0.586544 0
+-5.32835 -0.865239 0
+-5.55946 -1.06179 0
+-5.81905 -1.16652 0
+-6.09064 -1.19214 0
+-6.36186 -1.17127 0
+-6.62682 -1.14813 0
+-6.8866 -1.16601 0
+-7.14733 -1.25426 0
+-7.41681 -1.41913 0
+-7.70099 -1.6413 0
+-8.0013 -1.88027 0
+-8.31284 -2.08341 0
+-8.62309 -2.19685 0
+-8.91151 -2.17667 0
+-9.15148 -2.00001 0
+-9.31801 -1.67448 0
+-9.40387 -1.23983 0
+-9.43375 -0.752109 0
+-9.43926 -0.250894 0
+-9.43375 0.250894 0
+-9.40387 0.752109 0
+-9.31801 1.23983 0
+-9.15148 1.67448 0
+-8.91151 2.00001 0
+-8.62309 2.17667 0
+-8.31284 2.19685 0
+-8.0013 2.08341 0
+-7.70099 1.88027 0
+-7.4168 1.6413 0
+-7.14733 1.41913 0
+-6.8866 1.25426 0
+-6.62682 1.16601 0
+-6.36186 1.14813 0
+-6.09064 1.17127 0
+-5.81905 1.19214 0
+-5.55946 1.16652 0
+-5.32835 1.06179 0
+-5.1429 0.865239 0
+-5.01748 0.586544 0
+-4.96061 0.254815 0
+-4.97293 -0.0885455 0
+-5.04683 -0.40004 0
+-5.16836 -0.64498 0
+-5.32072 -0.805812 0
+-5.48837 -0.885456 0
+-5.66032 -0.905054 0
+-5.83204 -0.89712 0
+-6.00544 -0.895973 0
+-6.18721 -0.927736 0
+-6.38571 -1.00237 0
+-6.60739 -1.11036 0
+-6.85354 -1.22543 0
+-7.11843 -1.31229 0
+-7.38936 -1.33638 0
+-7.64853 -1.27311 0
+-7.87641 -1.11472 0
+-8.05576 -0.873224 0
+-8.17526 -0.578651 0
+-8.23179 -0.272487 0
+-8.23073 0.00235619 0
+-8.18396 0.212592 0
+-8.10659 0.343289 0
+-8.01315 0.401468 0
+-7.91407 0.413544 0
+-7.81324 0.41746 0
+-7.70728 0.451498 0
+-7.58705 0.542542 0
+-7.44114 0.697104 0
+-7.26027 0.898001 0
+-7.04131 1.1082 0
+-6.78942 1.281 0
+-6.51784 1.37337 0
+-6.24558 1.3581 0
+-5.99365 1.23143 0
+-5.78056 1.01435 0
+-5.61816 0.747291 0
+-5.50925 0.479395 0
+-5.44753 0.25522 0
+-5.42003 0.102864 0
+-2.77822 0.0273301 0
+-1.42675 0.00143346 0
+-1.42675 -0.00549929 0
+-1.38429 0.00486579 0
+-2.71285 0.000330947 0
+-5.32841 -0.0178734 0
+-5.35881 -0.0724605 0
+-5.42785 -0.186184 0
+-5.55104 -0.356206 0
+-5.73688 -0.561448 0
+-5.98353 -0.767698 0
+-6.27817 -0.936787 0
+-6.59938 -1.03689 0
+-6.92175 -1.051 0
+-7.22143 -0.981323 0
+-7.48115 -0.848478 0
+-7.69352 -0.68563 0
+-7.86157 -0.529057 0
+-7.99628 -0.40783 0
+-8.1119 -0.335881 0
+-8.2205 -0.308859 0
+-8.3276 -0.306448 0
+-8.42993 -0.299134 0
+-8.51593 -0.257286 0
+-8.56852 -0.160002 0
+-8.56945 -0.00143187 0
+-8.50413 0.207171 0
+-8.36581 0.440329 0
+-8.15774 0.665159 0
+-7.89288 0.849856 0
+-7.59113 0.971359 0
+-7.2751 1.02034 0
+-6.96543 1.00261 0
+-6.67689 0.936886 0
+-6.41612 0.849592 0
+-6.18157 0.767819 0
+-5.9656 0.711766 0
+-5.75834 0.688713 0
+-5.55205 0.690828 0
+-5.34479 0.697801 0
+-5.14243 0.683099 0
+-4.95842 0.621797 0
+-4.81139 0.497949 0
+-4.7211 0.309757 0
+-4.70368 0.0711204 0
+-4.76745 -0.191042 0
+-4.9108 -0.443198 0
+-5.12251 -0.653527 0
+-5.38444 -0.799857 0
+-5.6756 -0.875366 0
+-5.97684 -0.890901 0
+-6.27525 -0.872854 0
+-6.56696 -0.856421 0
+-6.85726 -0.875708 0
+-7.15795 -0.95357 0
+-7.48267 -1.09441 0
+-7.84182 -1.28216 0
+-8.23837 -1.48372 0
+-8.66532 -1.65645 0
+-9.10475 -1.75742 0
+-9.52898 -1.75245 0
+-9.9049 -1.62409 0
+-10.2025 -1.37684 0
+-10.4061 -1.03625 0
+-10.5196 -0.63864 0
+-10.5554 -0.21512 0
+-10.5196 0.21512 0
+-10.4061 0.638639 0
+-10.2025 1.03625 0
+-9.9049 1.37684 0
+-9.52898 1.62409 0
+-9.10475 1.75245 0
+-8.66532 1.75742 0
+-8.23837 1.65645 0
+-7.84182 1.48372 0
+-7.48267 1.28216 0
+-7.15795 1.09441 0
+-6.85726 0.95357 0
+-6.56696 0.875708 0
+-6.27525 0.856421 0
+-5.97684 0.872854 0
+-5.6756 0.890901 0
+-5.38444 0.875366 0
+-5.12251 0.799856 0
+-4.9108 0.653527 0
+-4.76745 0.443198 0
+-4.70368 0.191042 0
+-4.7211 -0.0711203 0
+-4.81139 -0.309757 0
+-4.95842 -0.497949 0
+-5.14243 -0.621797 0
+-5.34479 -0.683099 0
+-5.55204 -0.697801 0
+-5.75834 -0.690828 0
+-5.9656 -0.688713 0
+-6.18157 -0.711766 0
+-6.41612 -0.767819 0
+-6.67689 -0.849591 0
+-6.96543 -0.936886 0
+-7.2751 -1.00261 0
+-7.59113 -1.02034 0
+-7.89288 -0.971358 0
+-8.15774 -0.849856 0
+-8.36581 -0.665159 0
+-8.50413 -0.440329 0
+-8.56945 -0.207171 0
+-8.56852 0.00143178 0
+-8.51593 0.160002 0
+-8.42993 0.257286 0
+-8.32759 0.299134 0
+-8.2205 0.306448 0
+-8.1119 0.308859 0
+-7.99628 0.335881 0
+-7.86157 0.40783 0
+-7.69352 0.529057 0
+-7.48115 0.68563 0
+-7.22143 0.848478 0
+-6.92175 0.981323 0
+-6.59938 1.051 0
+-6.27817 1.03689 0
+-5.98353 0.936787 0
+-5.73688 0.767698 0
+-5.55104 0.561447 0
+-5.42785 0.356206 0
+-5.35881 0.186184 0
+-5.32841 0.0724605 0
+-2.71285 0.0178734 0
+-1.38429 -0.000330929 0
+-1.38429 -0.00486565 0
+-1.28196 0.00396466 0
+-2.5281 0.00154577 0
+-4.99779 -0.00954072 0
+-5.02591 -0.0443441 0
+-5.09125 -0.120841 0
+-5.20985 -0.237602 0
+-5.39123 -0.380069 0
+-5.63463 -0.524301 0
+-5.92798 -0.643436 0
+-6.24998 -0.714887 0
+-6.57463 -0.726344 0
+-6.877 -0.678954 0
+-7.13863 -0.586853 0
+-7.35115 -0.473112 0
+-7.51706 -0.363145 0
+-7.64737 -0.277516 0
+-7.75689 -0.226364 0
+-7.85867 -0.207082 0
+-7.95933 -0.20578 0
+-8.05656 -0.201911 0
+-8.13924 -0.174608 0
+-8.19024 -0.108996 0
+-8.19094 -0.000733857 0
+-8.12629 0.142518 0
+-7.98911 0.303152 0
+-7.78235 0.458395 0
+-7.51868 0.58619 0
+-7.21783 0.670503 0
+-6.90226 0.704779 0
+-6.59258 0.692935 0
+-6.30355 0.647859 0
+-6.04182 0.587856 0
+-5.80575 0.531751 0
+-5.58759 0.493601 0
+-5.37731 0.478437 0
+-5.16718 0.480702 0
+-4.95551 0.486124 0
+-4.74857 0.476163 0
+-4.56031 0.433534 0
+-4.40972 0.347358 0
+-4.31664 0.216681 0
+-4.29696 0.0514431 0
+-4.35853 -0.129479 0
+-4.49899 -0.302737 0
+-4.70624 -0.446274 0
+-4.96123 -0.544866 0
+-5.24241 -0.59419 0
+-5.53086 -0.602454 0
+-5.81491 -0.588796 0
+-6.09293 -0.578405 0
+-6.37317 -0.595473 0
+-6.67071 -0.656023 0
+-7.00231 -0.762813 0
+-7.38059 -0.903876 0
+-7.8093 -1.05502 0
+-8.28043 -1.18532 0
+-8.77383 -1.26402 0
+-9.25928 -1.267 0
+-9.70155 -1.18182 0
+-10.0679 -1.01048 0
+-10.3359 -0.768285 0
+-10.4965 -0.477983 0
+-10.5497 -0.161927 0
+-10.4965 0.161927 0
+-10.3359 0.477983 0
+-10.0679 0.768285 0
+-9.70155 1.01048 0
+-9.25928 1.18182 0
+-8.77383 1.267 0
+-8.28043 1.26402 0
+-7.8093 1.18532 0
+-7.38059 1.05502 0
+-7.00231 0.903877 0
+-6.67071 0.762813 0
+-6.37316 0.656024 0
+-6.09293 0.595473 0
+-5.81491 0.578405 0
+-5.53086 0.588796 0
+-5.24241 0.602454 0
+-4.96123 0.59419 0
+-4.70624 0.544866 0
+-4.49899 0.446274 0
+-4.35853 0.302737 0
+-4.29696 0.129479 0
+-4.31664 -0.0514431 0
+-4.40972 -0.216681 0
+-4.56031 -0.347358 0
+-4.74857 -0.433534 0
+-4.95551 -0.476163 0
+-5.16718 -0.486124 0
+-5.37731 -0.480702 0
+-5.58758 -0.478437 0
+-5.80575 -0.493602 0
+-6.04182 -0.531751 0
+-6.30355 -0.587856 0
+-6.59258 -0.647859 0
+-6.90226 -0.692935 0
+-7.21782 -0.704779 0
+-7.51868 -0.670503 0
+-7.78234 -0.58619 0
+-7.98911 -0.458395 0
+-8.12629 -0.303152 0
+-8.19094 -0.142518 0
+-8.19024 0.000733787 0
+-8.13923 0.108996 0
+-8.05656 0.174608 0
+-7.95933 0.201911 0
+-7.85867 0.20578 0
+-7.75689 0.207082 0
+-7.64737 0.226364 0
+-7.51706 0.277516 0
+-7.35114 0.363145 0
+-7.13863 0.473112 0
+-6.877 0.586853 0
+-6.57463 0.678954 0
+-6.24998 0.726344 0
+-5.92798 0.714887 0
+-5.63463 0.643435 0
+-5.39123 0.524301 0
+-5.20985 0.380069 0
+-5.09125 0.237602 0
+-5.02591 0.120841 0
+-4.99779 0.0443441 0
+-2.5281 0.00954069 0
+-1.28196 -0.00154586 0
+-1.28196 -0.00396506 0
+-1.09972 0.00286723 0
+-2.18068 0.00196075 0
+-4.33526 -0.003588 0
+-4.35716 -0.0224515 0
+-4.41034 -0.0676611 0
+-4.50952 -0.138424 0
+-4.66392 -0.225667 0
+-4.87368 -0.31454 0
+-5.12871 -0.388399 0
+-5.4104 -0.433204 0
+-5.69554 -0.441197 0
+-5.9616 -0.412894 0
+-6.19161 -0.356842 0
+-6.37759 -0.287139 0
+-6.52132 -0.219414 0
+-6.63241 -0.166421 0
+-6.72418 -0.134596 0
+-6.80869 -0.122568 0
+-6.8925 -0.121973 0
+-6.97417 -0.120238 0
+-7.0443 -0.104478 0
+-7.08787 -0.0654296 0
+-7.08831 -0.000296428 0
+-7.03212 0.0863319 0
+-6.91273 0.183758 0
+-6.73244 0.278109 0
+-6.50218 0.355928 0
+-6.23908 0.407402 0
+-5.96277 0.428477 0
+-5.69132 0.421479 0
+-5.43769 0.394226 0
+-5.20771 0.357877 0
+-4.9999 0.323947 0
+-4.80734 0.301043 0
+-4.62113 0.292223 0
+-4.43446 0.29403 0
+-4.24599 0.297658 0
+-4.06155 0.291718 0
+-3.89368 0.265666 0
+-3.75928 0.212963 0
+-3.67579 0.133188 0
+-3.65692 0.0325725 0
+-3.70915 -0.0772536 0
+-3.82988 -0.182006 0
+-4.00789 -0.268257 0
+-4.22594 -0.326825 0
+-4.46482 -0.355301 0
+-4.70823 -0.359052 0
+-4.94684 -0.350185 0
+-5.18078 -0.344466 0
+-5.41932 -0.356929 0
+-5.67793 -0.397419 0
+-5.9733 -0.467441 0
+-6.31792 -0.55925 0
+-6.7155 -0.657439 0
+-7.15835 -0.742472 0
+-7.62732 -0.795056 0
+-8.09414 -0.800174 0
+-8.526 -0.749962 0
+-8.89147 -0.645013 0
+-9.16612 -0.493629 0
+-9.3352 -0.30891 0
+-9.39211 -0.105016 0
+-9.3352 0.105015 0
+-9.16612 0.30891 0
+-8.89147 0.493629 0
+-8.526 0.645013 0
+-8.09414 0.749962 0
+-7.62732 0.800174 0
+-7.15835 0.795056 0
+-6.7155 0.742472 0
+-6.31792 0.657439 0
+-5.9733 0.55925 0
+-5.67793 0.467441 0
+-5.41932 0.397419 0
+-5.18078 0.356929 0
+-4.94684 0.344466 0
+-4.70823 0.350185 0
+-4.46482 0.359052 0
+-4.22593 0.355301 0
+-4.00789 0.326825 0
+-3.82988 0.268257 0
+-3.70915 0.182006 0
+-3.65692 0.0772536 0
+-3.67579 -0.0325725 0
+-3.75928 -0.133188 0
+-3.89368 -0.212963 0
+-4.06155 -0.265666 0
+-4.24599 -0.291718 0
+-4.43446 -0.297658 0
+-4.62113 -0.29403 0
+-4.80734 -0.292223 0
+-4.9999 -0.301043 0
+-5.20771 -0.323947 0
+-5.43769 -0.357877 0
+-5.69132 -0.394226 0
+-5.96277 -0.421479 0
+-6.23908 -0.428477 0
+-6.50218 -0.407402 0
+-6.73244 -0.355928 0
+-6.91272 -0.278109 0
+-7.03212 -0.183758 0
+-7.08831 -0.086332 0
+-7.08787 0.000296382 0
+-7.0443 0.0654295 0
+-6.97417 0.104478 0
+-6.8925 0.120238 0
+-6.80869 0.121973 0
+-6.72418 0.122568 0
+-6.63241 0.134596 0
+-6.52132 0.166421 0
+-6.37759 0.219414 0
+-6.19161 0.287139 0
+-5.9616 0.356842 0
+-5.69554 0.412894 0
+-5.41039 0.441196 0
+-5.12871 0.433204 0
+-4.87368 0.388399 0
+-4.66391 0.31454 0
+-4.50951 0.225667 0
+-4.41033 0.138424 0
+-4.35715 0.0676611 0
+-4.33526 0.0224515 0
+-2.18068 0.00358798 0
+-1.09971 -0.00196069 0
+-1.09971 -0.00286657 0
+-0.843722 0.00172699 0
+-1.68073 0.00162041 0
+-3.357 -0.000429782 0
+-3.37091 -0.00854139 0
+-3.40764 -0.0309379 0
+-3.47909 -0.0669674 0
+-3.593 -0.111757 0
+-3.74997 -0.157572 0
+-3.94255 -0.195815 0
+-4.15652 -0.219234 0
+-4.37393 -0.223786 0
+-4.57716 -0.209672 0
+-4.75279 -0.181213 0
+-4.89432 -0.145605 0
+-5.00287 -0.110862 0
+-5.08573 -0.0835684 0
+-5.15321 -0.0671101 0
+-5.2149 -0.0608799 0
+-5.27621 -0.0606631 0
+-5.33641 -0.0600385 0
+-5.38851 -0.0523795 0
+-5.42105 -0.0328891 0
+-5.42126 -8.30292e-05 0
+-5.37867 0.0437377 0
+-5.28805 0.0931431 0
+-5.15102 0.141074 0
+-4.97576 0.180672 0
+-4.77528 0.206922 0
+-4.56454 0.21773 0
+-4.35731 0.214256 0
+-4.16355 0.200462 0
+-3.98771 0.182036 0
+-3.82862 0.164861 0
+-3.68092 0.153338 0
+-3.53771 0.149022 0
+-3.39381 0.150122 0
+-3.24826 0.152108 0
+-3.10568 0.149144 0
+-2.97587 0.135857 0
+-2.87187 0.108957 0
+-2.80698 0.0682979 0
+-2.79153 0.0171275 0
+-2.83021 -0.0385794 0
+-2.92068 -0.09153 0
+-3.05404 -0.1349 0
+-3.2168 -0.164066 0
+-3.3942 -0.177899 0
+-3.57397 -0.179283 0
+-3.74959 -0.174565 0
+-3.92211 -0.171944 0
+-4.09985 -0.179191 0
+-4.29592 -0.201347 0
+-4.52427 -0.239096 0
+-4.79521 -0.288303 0
+-5.1118 -0.34085 0
+-5.46777 -0.386502 0
+-5.84762 -0.415205 0
+-6.22863 -0.419162 0
+-6.58438 -0.394216 0
+-6.88898 -0.340414 0
+-7.12098 -0.261633 0
+-7.26555 -0.164336 0
+-7.31458 -0.0559888 0
+-7.26555 0.0559887 0
+-7.12098 0.164336 0
+-6.88898 0.261633 0
+-6.58438 0.340414 0
+-6.22864 0.394216 0
+-5.84762 0.419162 0
+-5.46777 0.415205 0
+-5.1118 0.386502 0
+-4.79521 0.34085 0
+-4.52427 0.288303 0
+-4.29592 0.239096 0
+-4.09985 0.201347 0
+-3.92211 0.179191 0
+-3.74959 0.171944 0
+-3.57397 0.174565 0
+-3.3942 0.179283 0
+-3.2168 0.177899 0
+-3.05404 0.164066 0
+-2.92068 0.1349 0
+-2.83021 0.0915299 0
+-2.79153 0.0385794 0
+-2.80698 -0.0171275 0
+-2.87187 -0.0682979 0
+-2.97587 -0.108957 0
+-3.10568 -0.135857 0
+-3.24826 -0.149144 0
+-3.39381 -0.152108 0
+-3.53771 -0.150122 0
+-3.68091 -0.149022 0
+-3.82862 -0.153338 0
+-3.98771 -0.164861 0
+-4.16355 -0.182036 0
+-4.35731 -0.200462 0
+-4.56454 -0.214256 0
+-4.77528 -0.21773 0
+-4.97576 -0.206922 0
+-5.15102 -0.180672 0
+-5.28805 -0.141074 0
+-5.37867 -0.0931431 0
+-5.42126 -0.0437377 0
+-5.42105 8.30039e-05 0
+-5.38851 0.0328891 0
+-5.33641 0.0523795 0
+-5.27621 0.0600385 0
+-5.2149 0.0606631 0
+-5.15321 0.0608799 0
+-5.08572 0.0671101 0
+-5.00287 0.0835684 0
+-4.89432 0.110862 0
+-4.75278 0.145605 0
+-4.57716 0.181213 0
+-4.37393 0.209672 0
+-4.15652 0.223786 0
+-3.94255 0.219234 0
+-3.74997 0.195815 0
+-3.593 0.157572 0
+-3.47909 0.111757 0
+-3.40763 0.0669674 0
+-3.37091 0.0309379 0
+-3.357 0.00854135 0
+-1.68073 0.000429683 0
+-0.843721 -0.00162074 0
+-0.843721 -0.00172843 0
+-0.548849 0.000765179 0
+-1.09737 0.000879518 0
+-2.2003 0.000458271 0
+-2.20692 -0.00192666 0
+-2.22752 -0.0103355 0
+-2.27031 -0.0241789 0
+-2.34062 -0.0414442 0
+-2.43907 -0.059125 0
+-2.56096 -0.0739196 0
+-2.69715 -0.0830437 0
+-2.836 -0.0849378 0
+-2.96601 -0.0796623 0
+-3.07837 -0.0688578 0
+-3.1687 -0.0552697 0
+-3.2376 -0.0419672 0
+-3.28968 -0.0314861 0
+-3.33164 -0.0251472 0
+-3.36978 -0.0227461 0
+-3.40775 -0.0226901 0
+-3.44526 -0.0225278 0
+-3.47792 -0.019716 0
+-3.49841 -0.0124049 0
+-3.49848 -1.1386e-05 0
+-3.47134 0.0165982 0
+-3.41356 0.0353607 0
+-3.32607 0.0535885 0
+-3.21407 0.0686667 0
+-3.08582 0.0786786 0
+-2.95091 0.0828188 0
+-2.81817 0.0815194 0
+-2.694 0.076286 0
+-2.58125 0.0692867 0
+-2.47916 0.0627698 0
+-2.38424 0.0584187 0
+-2.29204 0.0568251 0
+-2.19922 0.0572977 0
+-2.10521 0.0580963 0
+-2.01305 0.0569865 0
+-1.92911 0.051921 0
+-1.86181 0.0416574 0
+-1.81968 0.0261614 0
+-1.80924 0.00669172 0
+-1.83336 -0.0144601 0
+-1.89038 -0.0345109 0
+-1.97441 -0.0508668 0
+-2.0767 -0.0617821 0
+-2.18774 -0.0668568 0
+-2.29979 -0.067234 0
+-2.40897 -0.0653837 0
+-2.51643 -0.0644783 0
+-2.62811 -0.067511 0
+-2.75305 -0.0764093 0
+-2.90074 -0.0914086 0
+-3.07817 -0.110876 0
+-3.28738 -0.13164 0
+-3.52416 -0.149717 0
+-3.77816 -0.161211 0
+-4.03422 -0.163101 0
+-4.27467 -0.153758 0
+-4.48196 -0.133127 0
+-4.641 -0.102598 0
+-4.74074 -0.064594 0
+-4.77469 -0.0220368 0
+-4.74074 0.0220367 0
+-4.641 0.064594 0
+-4.48196 0.102598 0
+-4.27467 0.133127 0
+-4.03422 0.153758 0
+-3.77816 0.163101 0
+-3.52416 0.161211 0
+-3.28738 0.149717 0
+-3.07817 0.13164 0
+-2.90074 0.110876 0
+-2.75305 0.0914086 0
+-2.62811 0.0764093 0
+-2.51643 0.067511 0
+-2.40897 0.0644783 0
+-2.29979 0.0653837 0
+-2.18774 0.0672339 0
+-2.0767 0.0668568 0
+-1.97441 0.0617821 0
+-1.89038 0.0508668 0
+-1.83336 0.0345109 0
+-1.80924 0.0144601 0
+-1.81968 -0.00669172 0
+-1.86181 -0.0261614 0
+-1.92911 -0.0416574 0
+-2.01305 -0.051921 0
+-2.10521 -0.0569865 0
+-2.19922 -0.0580963 0
+-2.29204 -0.0572977 0
+-2.38424 -0.0568251 0
+-2.47916 -0.0584187 0
+-2.58125 -0.0627698 0
+-2.694 -0.0692867 0
+-2.81817 -0.076286 0
+-2.95091 -0.0815194 0
+-3.08582 -0.0828188 0
+-3.21407 -0.0786786 0
+-3.32607 -0.0686667 0
+-3.41356 -0.0535885 0
+-3.47134 -0.0353607 0
+-3.49848 -0.0165982 0
+-3.49841 1.13755e-05 0
+-3.47792 0.0124049 0
+-3.44526 0.019716 0
+-3.40775 0.0225278 0
+-3.36978 0.0226901 0
+-3.33164 0.0227461 0
+-3.28968 0.0251472 0
+-3.2376 0.0314861 0
+-3.1687 0.0419672 0
+-3.07837 0.0552696 0
+-2.96601 0.0688578 0
+-2.836 0.0796623 0
+-2.69715 0.0849377 0
+-2.56096 0.0830437 0
+-2.43907 0.0739195 0
+-2.34062 0.0591249 0
+-2.27031 0.0414442 0
+-2.22752 0.0241789 0
+-2.20692 0.0103355 0
+-2.2003 0.00192663 0
+-1.09737 -0.000458325 0
+-0.548849 -0.000879428 0
+-0.548849 -0.000763466 0
+-0.271188 0.00017974 0
+-0.543757 0.000236511 0
+-1.09383 0.000235918 0
+-1.09568 -7.40637e-05 0
+-1.10415 -0.00186034 0
+-1.12353 -0.00480568 0
+-1.15651 -0.00845924 0
+-1.20345 -0.0121929 0
+-1.26205 -0.0153189 0
+-1.32783 -0.0172557 0
+-1.3951 -0.0176761 0
+-1.45817 -0.0165913 0
+-1.51268 -0.014343 0
+-1.55645 -0.0115048 0
+-1.58969 -0.00871989 0
+-1.61466 -0.00652124 0
+-1.63462 -0.00518905 0
+-1.65268 -0.00468447 0
+-1.67069 -0.0046769 0
+-1.68856 -0.00465396 0
+-1.7042 -0.00408208 0
+-1.71403 -0.002572 0
+-1.71404 3.13225e-07 0
+-1.7009 0.00345544 0
+-1.6729 0.00736341 0
+-1.63048 0.0111635 0
+-1.57612 0.0143097 0
+-1.51384 0.0164012 0
+-1.44829 0.0172684 0
+-1.38377 0.0170005 0
+-1.3234 0.0159107 0
+-1.26856 0.0144519 0
+-1.21889 0.0130946 0
+-1.17266 0.0121914 0
+-1.1277 0.0118659 0
+-1.08238 0.0119724 0
+-1.03643 0.0121454 0
+-0.991357 0.0119169 0
+-0.950295 0.0108595 0
+-0.917354 0.00871556 0
+-0.896673 0.00548092 0
+-0.891403 0.0014214 0
+-0.90288 -0.00298261 0
+-0.930241 -0.00714965 0
+-0.970569 -0.0105393 0
+-1.01956 -0.0127896 0
+-1.0726 -0.0138212 0
+-1.12595 -0.0138791 0
+-1.17785 -0.0134861 0
+-1.22902 -0.0133111 0
+-1.28254 -0.0139835 0
+-1.34305 -0.0159064 0
+-1.41533 -0.0191253 0
+-1.50292 -0.0232911 0
+-1.60682 -0.0277304 0
+-1.72494 -0.0316 0
+-1.85208 -0.0340767 0
+-1.98065 -0.0345235 0
+-2.10182 -0.0325934 0
+-2.20668 -0.0282655 0
+-2.28746 -0.0218193 0
+-2.3383 -0.013756 0
+-2.35564 -0.00469669 0
+-2.3383 0.00469668 0
+-2.28746 0.013756 0
+-2.20668 0.0218193 0
+-2.10182 0.0282655 0
+-1.98065 0.0325934 0
+-1.85208 0.0345235 0
+-1.72494 0.0340767 0
+-1.60682 0.0316 0
+-1.50292 0.0277304 0
+-1.41533 0.0232911 0
+-1.34305 0.0191253 0
+-1.28254 0.0159064 0
+-1.22902 0.0139835 0
+-1.17785 0.0133111 0
+-1.12595 0.0134861 0
+-1.0726 0.0138791 0
+-1.01956 0.0138212 0
+-0.970569 0.0127895 0
+-0.930241 0.0105393 0
+-0.90288 0.00714965 0
+-0.891403 0.0029826 0
+-0.896673 -0.0014214 0
+-0.917353 -0.00548092 0
+-0.950295 -0.00871556 0
+-0.991357 -0.0108595 0
+-1.03643 -0.0119169 0
+-1.08238 -0.0121454 0
+-1.1277 -0.0119724 0
+-1.17266 -0.0118659 0
+-1.21889 -0.0121914 0
+-1.26856 -0.0130946 0
+-1.3234 -0.0144519 0
+-1.38377 -0.0159107 0
+-1.44829 -0.0170005 0
+-1.51384 -0.0172684 0
+-1.57612 -0.0164012 0
+-1.63048 -0.0143097 0
+-1.6729 -0.0111635 0
+-1.7009 -0.00736341 0
+-1.71404 -0.00345544 0
+-1.71403 -3.15678e-07 0
+-1.7042 0.002572 0
+-1.68856 0.00408208 0
+-1.67069 0.00465396 0
+-1.65268 0.0046769 0
+-1.63462 0.00468447 0
+-1.61466 0.00518904 0
+-1.58969 0.00652124 0
+-1.55645 0.00871988 0
+-1.51268 0.0115048 0
+-1.45817 0.014343 0
+-1.39509 0.0165913 0
+-1.32783 0.0176761 0
+-1.26205 0.0172557 0
+-1.20344 0.0153189 0
+-1.15651 0.0121929 0
+-1.12353 0.00845923 0
+-1.10415 0.00480568 0
+-1.09568 0.00186034 0
+-1.09383 7.40335e-05 0
+-0.543757 -0.000236067 0
+-0.271187 -0.000237303 0
+-0.271187 -0.000183968 0
+-0.0723048 0.00017974 0
+-0.14526 0.000236511 0
+-0.293014 0.000235918 0
+-0.293088 -7.40637e-05 0
+-0.294949 -0.00186034 0
+-0.299754 -0.00480568 0
+-0.308213 -0.00845924 0
+-0.320406 -0.0121929 0
+-0.335725 -0.0153189 0
+-0.352981 -0.0172557 0
+-0.370657 -0.0176761 0
+-0.387248 -0.0165913 0
+-0.401591 -0.014343 0
+-0.413096 -0.0115048 0
+-0.421816 -0.00871989 0
+-0.428337 -0.00652124 0
+-0.433526 -0.00518905 0
+-0.438211 -0.00468447 0
+-0.442888 -0.0046769 0
+-0.447542 -0.00465396 0
+-0.451624 -0.00408208 0
+-0.454196 -0.002572 0
+-0.454195 3.13225e-07 0
+-0.45074 0.00345544 0
+-0.443377 0.00736341 0
+-0.432213 0.0111635 0
+-0.417903 0.0143097 0
+-0.401502 0.0164012 0
+-0.384234 0.0172684 0
+-0.367233 0.0170005 0
+-0.351323 0.0159107 0
+-0.336871 0.0144519 0
+-0.323776 0.0130946 0
+-0.311585 0.0121914 0
+-0.299719 0.0118659 0
+-0.287746 0.0119724 0
+-0.275601 0.0121454 0
+-0.263684 0.0119169 0
+-0.252825 0.0108595 0
+-0.244109 0.00871556 0
+-0.238628 0.00548092 0
+-0.237207 0.0014214 0
+-0.240189 -0.00298261 0
+-0.247339 -0.00714965 0
+-0.257878 -0.0105393 0
+-0.270668 -0.0127896 0
+-0.284489 -0.0138212 0
+-0.298368 -0.0138791 0
+-0.311854 -0.0134861 0
+-0.325165 -0.0133111 0
+-0.339149 -0.0139835 0
+-0.355055 -0.0159064 0
+-0.374181 -0.0191253 0
+-0.397472 -0.0232911 0
+-0.425202 -0.0277304 0
+-0.456802 -0.0316 0
+-0.490879 -0.0340767 0
+-0.525402 -0.0345235 0
+-0.557996 -0.0325934 0
+-0.586261 -0.0282655 0
+-0.608081 -0.0218193 0
+-0.621837 -0.013756 0
+-0.626533 -0.00469669 0
+-0.621837 0.00469668 0
+-0.608081 0.013756 0
+-0.586261 0.0218193 0
+-0.557996 0.0282655 0
+-0.525402 0.0325934 0
+-0.490879 0.0345235 0
+-0.456802 0.0340767 0
+-0.425202 0.0316 0
+-0.397472 0.0277304 0
+-0.374181 0.0232911 0
+-0.355055 0.0191253 0
+-0.339149 0.0159064 0
+-0.325165 0.0139835 0
+-0.311854 0.0133111 0
+-0.298368 0.0134861 0
+-0.284489 0.0138791 0
+-0.270668 0.0138212 0
+-0.257878 0.0127895 0
+-0.247339 0.0105393 0
+-0.240189 0.00714965 0
+-0.237207 0.0029826 0
+-0.238628 -0.0014214 0
+-0.244109 -0.00548092 0
+-0.252825 -0.00871556 0
+-0.263684 -0.0108595 0
+-0.275601 -0.0119169 0
+-0.287746 -0.0121454 0
+-0.299719 -0.0119724 0
+-0.311585 -0.0118659 0
+-0.323776 -0.0121914 0
+-0.336871 -0.0130946 0
+-0.351323 -0.0144519 0
+-0.367233 -0.0159107 0
+-0.384234 -0.0170005 0
+-0.401502 -0.0172684 0
+-0.417903 -0.0164012 0
+-0.432213 -0.0143097 0
+-0.443377 -0.0111635 0
+-0.45074 -0.00736341 0
+-0.454195 -0.00345544 0
+-0.454196 -3.15678e-07 0
+-0.451624 0.002572 0
+-0.447542 0.00408208 0
+-0.442888 0.00465396 0
+-0.438211 0.0046769 0
+-0.433526 0.00468447 0
+-0.428337 0.00518904 0
+-0.421816 0.00652124 0
+-0.413096 0.00871988 0
+-0.401591 0.0115048 0
+-0.387248 0.014343 0
+-0.370657 0.0165913 0
+-0.352981 0.0176761 0
+-0.335725 0.0172557 0
+-0.320406 0.0153189 0
+-0.308213 0.0121929 0
+-0.299754 0.00845923 0
+-0.294948 0.00480568 0
+-0.293088 0.00186034 0
+-0.293014 7.40335e-05 0
+-0.14526 -0.000236067 0
+-0.0723066 -0.000237303 0
+-0.0723066 -0.000183968 0
+-0.0653829 -0.00187423 0
+-0.1291 -0.00342823 0
+-0.255846 -0.00582256 0
+-0.24689 -0.00895679 0
+-0.236989 -0.00990069 0
+-0.22991 -0.00707857 0
+-0.229291 -0.000619219 0
+-0.237294 0.0080032 0
+-0.254037 0.0167433 0
+-0.277901 0.0238634 0
+-0.306492 0.0285909 0
+-0.337811 0.0313195 0
+-0.371115 0.0333039 0
+-0.407106 0.0359907 0
+-0.447378 0.0402723 0
+-0.493349 0.0459707 0
+-0.545097 0.0517487 0
+-0.600572 0.0554751 0
+-0.655487 0.054915 0
+-0.704002 0.048515 0
+-0.740034 0.0360314 0
+-0.758831 0.0187972 0
+-0.758351 -0.00047983 0
+-0.739995 -0.018356 0
+-0.708458 -0.0315374 0
+-0.670722 -0.0377352 0
+-0.634468 -0.0362546 0
+-0.606281 -0.028187 0
+-0.590109 -0.0161719 0
+-0.586331 -0.00377737 0
+-0.591699 0.00536759 0
+-0.600187 0.00848842 0
+-0.60459 0.00440262 0
+-0.598471 -0.00611854 0
+-0.57799 -0.0204817 0
+-0.543085 -0.0349046 0
+-0.497661 -0.0454239 0
+-0.448651 -0.0490105 0
+-0.404196 -0.0444551 0
+-0.371461 -0.0327349 0
+-0.354729 -0.0167316 0
+-0.354354 -0.000374804 0
+-0.366881 0.0125268 0
+-0.386278 0.0193966 0
+-0.405868 0.0195905 0
+-0.420334 0.0144659 0
+-0.427153 0.00681889 0
+-0.427064 -8.87371e-05 0
+-0.423491 -0.00357263 0
+-0.421193 -0.0022989 0
+-0.424629 0.00343657 0
+-0.436597 0.0119678 0
+-0.457515 0.0209185 0
+-0.485517 0.028002 0
+-0.5172 0.0316822 0
+-0.548698 0.0314988 0
+-0.576702 0.0280038 0
+-0.5991 0.0223983 0
+-0.615152 0.0160512 0
+-0.625233 0.0100817 0
+-0.63035 0.00511716 0
+-0.631599 0.00124862 0
+-0.629742 -0.00185704 0
+-0.624989 -0.00475317 0
+-0.616998 -0.00799075 0
+-0.605054 -0.0119443 0
+-0.588329 -0.0167247 0
+-0.566161 -0.0221677 0
+-0.538314 -0.0278472 0
+-0.505237 -0.0330768 0
+-0.468321 -0.0369162 0
+-0.430067 -0.0382538 0
+-0.39404 -0.0360276 0
+-0.364456 -0.0295839 0
+-0.345382 -0.0190738 0
+-0.339668 -0.00571404 0
+-0.347933 0.00826478 0
+-0.367996 0.0200631 0
+-0.395067 0.0270711 0
+-0.422772 0.0277051 0
+-0.444787 0.0220149 0
+-0.456589 0.0118023 0
+-0.45674 0.000150986 0
+-0.447206 -0.00953472 0
+-0.432537 -0.0146688 0
+-0.418205 -0.0143322 0
+-0.408746 -0.0094589 0
+-0.406451 -0.00229489 0
+-0.411075 0.00462459 0
+-0.420624 0.00954847 0
+-0.43281 0.0121859 0
+-0.446515 0.013705 0
+-0.462573 0.0160582 0
+-0.483503 0.0209297 0
+-0.512262 0.0287593 0
+-0.550536 0.0382739 0
+-0.597285 0.0467493 0
+-0.648213 0.0509279 0
+-0.696465 0.0482523 0
+-0.734402 0.0379367 0
+-0.75585 0.021448 0
+-0.75804 0.00219 0
+-0.742526 -0.0155143 0
+-0.71474 -0.0277857 0
+-0.682331 -0.0324089 0
+-0.652842 -0.0294889 0
+-0.6315 -0.0213424 0
+-0.619796 -0.0117033 0
+-0.615265 -0.00453132 0
+-0.612455 -0.00281009 0
+-0.604759 -0.00769595 0
+-0.586512 -0.018247 0
+-0.55474 -0.0317723 0
+-0.510084 -0.0446559 0
+-0.456694 -0.0533895 0
+-0.401173 -0.0555214 0
+-0.350879 -0.0502936 0
+-0.312033 -0.0388466 0
+-0.288064 -0.0239687 0
+-0.278608 -0.00945633 0
+-0.279376 0.000768871 0
+-0.2831 0.00372395 0
+-0.283135 3.47259e-05 0
+-0.109166 0.00975214 0
+-0.0370448 0.0186654 0
+-0.0370448 0.0476708 0
+-0.247442 -0.00815519 0
+-0.487455 -0.0142135 0
+-0.963641 -0.0234081 0
+-0.937649 -0.0349488 0
+-0.909624 -0.0379265 0
+-0.891768 -0.0249336 0
+-0.89615 0.00376281 0
+-0.930102 0.041955 0
+-0.994208 0.0808493 0
+-1.08323 0.112886 0
+-1.18926 0.134625 0
+-1.30562 0.147679 0
+-1.42973 0.157414 0
+-1.56381 0.170063 0
+-1.71301 0.189481 0
+-1.88193 0.21489 0
+-2.07065 0.240464 0
+-2.27206 0.256887 0
+-2.47146 0.254312 0
+-2.6487 0.22576 0
+-2.78257 0.169899 0
+-2.85607 0.0922963 0
+-2.86123 0.00468084 0
+-2.80185 -0.0777338 0
+-2.69331 -0.140078 0
+-2.55942 -0.171629 0
+-2.42713 -0.168543 0
+-2.32037 -0.134941 0
+-2.25445 -0.082092 0
+-2.23236 -0.0258659 0
+-2.24408 0.0170801 0
+-2.26909 0.0335014 0
+-2.28182 0.0171281 0
+-2.25855 -0.0293824 0
+-2.18429 -0.0947467 0
+-2.05744 -0.16175 0
+-1.89103 -0.211832 0
+-1.7097 -0.230344 0
+-1.54327 -0.210882 0
+-1.41874 -0.157263 0
+-1.35302 -0.0824523 0
+-1.3487 -0.00469923 0
+-1.39408 0.0579122 0
+-1.46747 0.092779 0
+-1.54411 0.0962381 0
+-1.60372 0.0740729 0
+-1.63592 0.0390192 0
+-1.64229 0.00627904 0
+-1.63449 -0.0113715 0
+-1.6295 -0.00728958 0
+-1.64367 0.0176048 0
+-1.68763 0.0559329 0
+-1.76358 0.0968702 0
+-1.86544 0.129855 0
+-1.98143 0.147676 0
+-2.09794 0.148007 0
+-2.20307 0.133137 0
+-2.28899 0.108315 0
+-2.35251 0.0795717 0
+-2.39429 0.0518612 0
+-2.41718 0.0280133 0
+-2.4245 0.00856882 0
+-2.41865 -0.00771525 0
+-2.40042 -0.0229839 0
+-2.36907 -0.0393369 0
+-2.32289 -0.0581191 0
+-2.25999 -0.0796295 0
+-2.17898 -0.103177 0
+-2.07963 -0.127197 0
+-1.96351 -0.149195 0
+-1.83482 -0.165606 0
+-1.70113 -0.171948 0
+-1.57352 -0.16364 0
+-1.46556 -0.137544 0
+-1.39084 -0.0937863 0
+-1.35949 -0.0370656 0
+-1.37463 0.0234001 0
+-1.43025 0.0756842 0
+-1.51159 0.108415 0
+-1.59834 0.114454 0
+-1.66993 0.0936053 0
+-1.71134 0.0532076 0
+-1.71733 0.00614442 0
+-1.69359 -0.0332706 0
+-1.65407 -0.0541912 0
+-1.61552 -0.0528778 0
+-1.59156 -0.0334206 0
+-1.58858 -0.00527968 0
+-1.60518 0.0212294 0
+-1.63518 0.0395444 0
+-1.67257 0.0495745 0
+-1.7162 0.0573383 0
+-1.7718 0.0716553 0
+-1.85018 0.0993137 0
+-1.96226 0.140837 0
+-2.11274 0.188757 0
+-2.29528 0.229291 0
+-2.4913 0.246943 0
+-2.67338 0.230339 0
+-2.81249 0.177042 0
+-2.88646 0.0954144 0
+-2.88694 0.00267778 0
+-2.82222 -0.0802412 0
+-2.71473 -0.135278 0
+-2.59426 -0.152878 0
+-2.48896 -0.134784 0
+-2.41719 -0.0931114 0
+-2.38265 -0.0462486 0
+-2.37415 -0.0130319 0
+-2.36987 -0.00708986 0
+-2.34453 -0.0330305 0
+-2.2773 -0.0854759 0
+-2.15806 -0.151017 0
+-1.99041 -0.212302 0
+-1.79087 -0.252927 0
+-1.58463 -0.261761 0
+-1.39925 -0.235683 0
+-1.25785 -0.180246 0
+-1.17356 -0.108253 0
+-1.14651 -0.0365053 0
+-1.16445 0.0187104 0
+-1.20772 0.0469884 0
+-1.25877 0.0510818 0
+-0.618395 0.0613825 0
+-0.308623 0.0524545 0
+-0.308623 0.0879894 0
+-0.506454 -0.0188147 0
+-0.995124 -0.0319824 0
+-1.96177 -0.0513682 0
+-1.92207 -0.0746474 0
+-1.88124 -0.0787541 0
+-1.86037 -0.0458044 0
+-1.88072 0.0241152 0
+-1.95542 0.116651 0
+-2.08563 0.211058 0
+-2.26205 0.289312 0
+-2.47051 0.343081 0
+-2.69888 0.376051 0
+-2.9424 0.40093 0
+-3.2049 0.432567 0
+-3.49562 0.480202 0
+-3.82279 0.54206 0
+-4.18665 0.604317 0
+-4.57446 0.644701 0
+-4.95957 0.639421 0
+-5.30501 0.5712 0
+-5.57108 0.435968 0
+-5.72491 0.246134 0
+-5.74945 0.0292141 0
+-5.64899 -0.178191 0
+-5.44968 -0.339387 0
+-5.19451 -0.426796 0
+-4.93414 -0.428914 0
+-4.71553 -0.353557 0
+-4.57095 -0.226667 0
+-4.51012 -0.0867001 0
+-4.51748 0.0244394 0
+-4.55595 0.0719726 0
+-4.57655 0.0377271 0
+-4.53182 -0.0741071 0
+-4.38971 -0.236863 0
+-4.14386 -0.407595 0
+-3.81717 -0.53852 0
+-3.45683 -0.590685 0
+-3.12209 -0.545625 0
+-2.86819 -0.411164 0
+-2.73134 -0.219302 0
+-2.71938 -0.0166614 0
+-2.811 0.149538 0
+-2.9637 0.245475 0
+-3.12759 0.26013 0
+-3.26058 0.207061 0
+-3.33986 0.118302 0
+-3.3665 0.0329243 0
+-3.36221 -0.0156606 0
+-3.36001 -0.00949484 0
+-3.39238 0.0499761 0
+-3.481 0.144553 0
+-3.63109 0.246958 0
+-3.8316 0.330366 0
+-4.06028 0.376358 0
+-4.29112 0.378844 0
+-4.5013 0.343314 0
+-4.67557 0.282585 0
+-4.8073 0.211303 0
+-4.89684 0.141404 0
+-4.94854 0.0797164 0
+-4.96769 0.0277185 0
+-4.95822 -0.0171875 0
+-4.92163 -0.0595779 0
+-4.85719 -0.103777 0
+-4.76305 -0.152252 0
+-4.63752 -0.205161 0
+-4.47985 -0.260845 0
+-4.2907 -0.316353 0
+-4.07273 -0.367163 0
+-3.83202 -0.406315 0
+-3.57984 -0.424127 0
+-3.33378 -0.409705 0
+-3.11676 -0.35456 0
+-2.95327 -0.257279 0
+-2.86314 -0.127189 0
+-2.85494 0.0152018 0
+-2.92142 0.142159 0
+-3.03943 0.226427 0
+-3.17515 0.250175 0
+-3.29328 0.211728 0
+-3.36727 0.127206 0
+-3.38706 0.0259327 0
+-3.36105 -0.0592834 0
+-3.31149 -0.103747 0
+-3.26493 -0.0994433 0
+-3.24185 -0.0565026 0
+-3.25017 0.00304044 0
+-3.28523 0.0562901 0
+-3.3361 0.0904165 0
+-3.3951 0.108578 0
+-3.46583 0.128066 0
+-3.56545 0.171279 0
+-3.71952 0.253377 0
+-3.95077 0.372088 0
+-4.26639 0.504384 0
+-4.64907 0.611971 0
+-5.05613 0.654001 0
+-5.42816 0.602369 0
+-5.70484 0.453718 0
+-5.84271 0.233285 0
+-5.82875 -0.0112845 0
+-5.68473 -0.224254 0
+-5.46074 -0.359271 0
+-5.21982 -0.3938 0
+-5.01907 -0.335535 0
+-4.89324 -0.218942 0
+-4.84585 -0.093639 0
+-4.8501 -0.00877654 0
+-4.85876 0.00157006 0
+-4.8195 -0.0722922 0
+-4.69094 -0.214035 0
+-4.45475 -0.387204 0
+-4.12075 -0.546311 0
+-3.72415 -0.649524 0
+-3.31651 -0.669398 0
+-2.95299 -0.599205 0
+-2.67929 -0.453944 0
+-2.52132 -0.26622 0
+-2.47995 -0.0778752 0
+-2.53234 0.0710938 0
+-2.63965 0.154305 0
+-2.75768 0.169107 0
+-1.42557 0.14168 0
+-0.742238 0.0737785 0
+-0.742238 0.0834394 0
+-0.791058 -0.0322019 0
+-1.54961 -0.0537032 0
+-3.04501 -0.0843793 0
+-3.00025 -0.119412 0
+-2.95753 -0.121467 0
+-2.94428 -0.0590618 0
+-2.98846 0.0683006 0
+-3.10753 0.235719 0
+-3.30303 0.406562 0
+-3.5624 0.548675 0
+-3.86629 0.646971 0
+-4.19803 0.707796 0
+-4.55083 0.753732 0
+-4.92963 0.811364 0
+-5.34685 0.897421 0
+-5.8139 1.00911 0
+-6.33179 1.1222 0
+-6.88426 1.19718 0
+-7.43606 1.19122 0
+-7.93713 1.07227 0
+-8.33221 0.831041 0
+-8.57341 0.487334 0
+-8.63276 0.0885709 0
+-8.51089 -0.300058 0
+-8.23914 -0.61114 0
+-7.87438 -0.791557 0
+-7.48758 -0.815711 0
+-7.14837 -0.692771 0
+-6.90878 -0.466254 0
+-6.79018 -0.205298 0
+-6.777 0.0112513 0
+-6.81978 0.114753 0
+-6.84781 0.0657664 0
+-6.78869 -0.133235 0
+-6.58981 -0.435744 0
+-6.23577 -0.761634 0
+-5.75572 -1.01857 0
+-5.21773 -1.12867 0
+-4.71118 -1.05218 0
+-4.32219 -0.800148 0
+-4.10982 -0.431679 0
+-4.09024 -0.0362343 0
+-4.23423 0.293524 0
+-4.47827 0.489514 0
+-4.74559 0.527449 0
+-4.96974 0.431215 0
+-5.11305 0.261607 0
+-5.17441 0.0942838 0
+-5.18493 -0.00513991 0
+-5.19385 -0.00057499 0
+-5.25032 0.106451 0
+-5.38749 0.281725 0
+-5.61378 0.473244 0
+-5.91321 0.6298 0
+-6.25326 0.71641 0
+-6.59616 0.721742 0
+-6.9092 0.65635 0
+-7.1708 0.544187 0
+-7.37152 0.412027 0
+-7.5113 0.281187 0
+-7.59522 0.16363 0
+-7.62951 0.0620141 0
+-7.61881 -0.0278945 0
+-7.56486 -0.113522 0
+-7.46715 -0.201485 0
+-7.32466 -0.294742 0
+-7.1376 -0.392221 0
+-6.90782 -0.490623 0
+-6.63805 -0.586126 0
+-6.33154 -0.673676 0
+-5.99361 -0.74424 0
+-5.63495 -0.782791 0
+-5.27468 -0.769972 0
+-4.94085 -0.688393 0
+-4.66641 -0.531714 0
+-4.48119 -0.312415 0
+-4.40214 -0.0638453 0
+-4.42603 0.166049 0
+-4.52795 0.328349 0
+-4.66733 0.389551 0
+-4.79985 0.344246 0
+-4.89116 0.218514 0
+-4.92717 0.0619463 0
+-4.91683 -0.0696187 0
+-4.88583 -0.134746 0
+-4.8638 -0.121479 0
+-4.87097 -0.0493356 0
+-4.91069 0.0427681 0
+-4.97142 0.117013 0
+-5.03723 0.156228 0
+-5.10203 0.173384 0
+-5.18012 0.206148 0
+-5.30706 0.298221 0
+-5.52901 0.475325 0
+-5.88351 0.726595 0
+-6.37934 1.00021 0
+-6.98369 1.21633 0
+-7.62323 1.29354 0
+-8.20003 1.17917 0
+-8.61828 0.871972 0
+-8.81275 0.427752 0
+-8.76914 -0.054895 0
+-8.52894 -0.464451 0
+-8.17671 -0.711503 0
+-7.814 -0.756512 0
+-7.52883 -0.620707 0
+-7.37064 -0.377126 0
+-7.33827 -0.126009 0
+-7.38369 0.0366467 0
+-7.42946 0.0473321 0
+-7.39361 -0.108143 0
+-7.21434 -0.393302 0
+-6.86737 -0.734173 0
+-6.37186 -1.04182 0
+-5.78444 -1.23694 0
+-5.18426 -1.26958 0
+-4.65366 -1.12981 0
+-4.25939 -0.848217 0
+-4.03823 -0.487373 0
+-3.98998 -0.126124 0
+-4.07898 0.160087 0
+-4.24336 0.318693 0
+-4.40792 0.333664 0
+-2.29751 0.22672 0
+-1.19538 0.0726429 0
+-1.19538 0.0455741 0
+-1.0547 -0.0461655 0
+-2.05876 -0.0757864 0
+-4.03022 -0.116812 0
+-3.98849 -0.161142 0
+-3.95265 -0.157298 0
+-3.95241 -0.0593042 0
+-4.01835 0.134243 0
+-4.16976 0.387122 0
+-4.40838 0.645186 0
+-4.7201 0.860395 0
+-5.0829 1.00978 0
+-5.4774 1.10229 0
+-5.89507 1.1714 0
+-6.34061 1.25691 0
+-6.82749 1.3843 0
+-7.36882 1.55044 0
+-7.96714 1.72053 0
+-8.60678 1.83681 0
+-9.2511 1.83553 0
+-9.84593 1.66711 0
+-10.3288 1.31388 0
+-10.6419 0.800517 0
+-10.7469 0.193496 0
+-10.6353 -0.411616 0
+-10.3344 -0.912058 0
+-9.90365 -1.2223 0
+-9.42438 -1.29499 0
+-8.98277 -1.13437 0
+-8.64994 -0.799092 0
+-8.46336 -0.391871 0
+-8.41547 -0.0366435 0
+-8.45346 0.152748 0
+-8.4923 0.104605 0
+-8.43842 -0.187112 0
+-8.21826 -0.655908 0
+-7.80298 -1.17691 0
+-7.22119 -1.60036 0
+-6.55445 -1.7954 0
+-5.91619 -1.69044 0
+-5.41997 -1.29637 0
+-5.1472 -0.704453 0
+-5.12458 -0.0588507 0
+-5.3187 0.487645 0
+-5.64924 0.820055 0
+-6.01608 0.894283 0
+-6.33064 0.745775 0
+-6.54101 0.471985 0
+-6.64313 0.196402 0
+-6.67553 0.0272544 0
+-6.70097 0.0248684 0
+-6.78242 0.187904 0
+-6.96206 0.461361 0
+-7.25005 0.761233 0
+-7.62552 1.00527 0
+-8.04732 1.13821 0
+-8.46906 1.14348 0
+-8.85208 1.03937 0
+-9.17225 0.864354 0
+-9.4199 0.659676 0
+-9.59545 0.456733 0
+-9.70416 0.27234 0
+-9.75212 0.109976 0
+-9.74352 -0.036493 0
+-9.67945 -0.177596 0
+-9.55889 -0.322045 0
+-9.38159 -0.472035 0
+-9.15069 -0.623123 0
+-8.87243 -0.768886 0
+-8.55302 -0.905531 0
+-8.19602 -1.03068 0
+-7.80328 -1.13698 0
+-7.37983 -1.20625 0
+-6.9398 -1.20999 0
+-6.50969 -1.11851 0
+-6.12569 -0.915707 0
+-5.82518 -0.612925 0
+-5.63481 -0.254213 0
+-5.56041 0.0916447 0
+-5.58336 0.351294 0
+-5.66594 0.472135 0
+-5.76411 0.442418 0
+-5.84269 0.297096 0
+-5.88678 0.10603 0
+-5.90445 -0.0519474 0
+-5.91928 -0.119913 0
+-5.95576 -0.0849973 0
+-6.02498 0.0198875 0
+-6.11823 0.136018 0
+-6.21245 0.211226 0
+-6.28573 0.229511 0
+-6.33584 0.223491 0
+-6.39213 0.262439 0
+-6.51349 0.419586 0
+-6.77052 0.732358 0
+-7.21744 1.17351 0
+-7.86443 1.6472 0
+-8.66199 2.01388 0
+-9.50498 2.13653 0
+-10.2573 1.93147 0
+-10.7898 1.40448 0
+-11.0194 0.657346 0
+-10.9349 -0.139332 0
+-10.6011 -0.798284 0
+-10.1379 -1.1747 0
+-9.68329 -1.21115 0
+-9.35127 -0.952721 0
+-9.1999 -0.528502 0
+-9.21799 -0.107911 0
+-9.33372 0.152368 0
+-9.44041 0.154023 0
+-9.43074 -0.117812 0
+-9.22836 -0.595681 0
+-8.80824 -1.15429 0
+-8.20124 -1.64882 0
+-7.48359 -1.9546 0
+-6.75607 -1.99709 0
+-6.11976 -1.76612 0
+-5.65383 -1.31415 0
+-5.39971 -0.741493 0
+-5.35376 -0.172076 0
+-5.46938 0.275713 0
+-5.6677 0.517011 0
+-5.85419 0.520153 0
+-3.04497 0.3114 0
+-1.57508 0.0620759 0
+-1.57508 0.00100866 0
+-1.26776 -0.0589536 0
+-2.46497 -0.0956061 0
+-4.80479 -0.145115 0
+-4.77009 -0.195848 0
+-4.74336 -0.184028 0
+-4.75243 -0.0502282 0
+-4.82639 0.208201 0
+-4.984 0.544736 0
+-5.2275 0.888683 0
+-5.5436 1.1765 0
+-5.91075 1.37693 0
+-6.30902 1.50056 0
+-6.72824 1.59063 0
+-7.17075 1.69941 0
+-7.64773 1.86128 0
+-8.17145 2.07416 0
+-8.74643 2.29551 0
+-9.36227 2.45265 0
+-9.99002 2.46329 0
+-10.5833 2.26036 0
+-11.0841 1.81472 0
+-11.4337 1.15008 0
+-11.5854 0.345257 0
+-11.518 -0.479022 0
+-11.2439 -1.18618 0
+-10.8112 -1.65497 0
+-10.2978 -1.80847 0
+-9.79599 -1.63615 0
+-9.39186 -1.20322 0
+-9.14161 -0.642122 0
+-9.05382 -0.12443 0
+-9.08354 0.182472 0
+-9.14233 0.163391 0
+-9.12323 -0.206208 0
+-8.93427 -0.844868 0
+-8.52999 -1.5812 0
+-7.93025 -2.2001 0
+-7.21911 -2.50654 0
+-6.52287 -2.38668 0
+-5.9738 -1.84544 0
+-5.67122 -1.00703 0
+-5.65272 -0.0773507 0
+-5.88526 0.720179 0
+-6.27885 1.21365 0
+-6.71777 1.33321 0
+-7.09789 1.12589 0
+-7.35707 0.73116 0
+-7.4891 0.328437 0
+-7.53786 0.0760086 0
+-7.57539 0.062404 0
+-7.67336 0.285867 0
+-7.87833 0.666333 0
+-8.1993 1.08221 0
+-8.61001 1.41597 0
+-9.06284 1.59104 0
+-9.50714 1.58778 0
+-9.90393 1.43617 0
+-10.2321 1.19251 0
+-10.4858 0.913413 0
+-10.6678 0.638758 0
+-10.7836 0.388045 0
+-10.8382 0.16467 0
+-10.8351 -0.0396825 0
+-10.7733 -0.239311 0
+-10.6498 -0.445584 0
+-10.463 -0.65887 0
+-10.2181 -0.868038 0
+-9.92674 -1.0602 0
+-9.60042 -1.23186 0
+-9.24366 -1.38743 0
+-8.85379 -1.52685 0
+-8.42683 -1.6332 0
+-7.96658 -1.67024 0
+-7.49121 -1.59388 0
+-7.03347 -1.37346 0
+-6.63311 -1.01328 0
+-6.32442 -0.5629 0
+-6.12413 -0.108647 0
+-6.02558 0.252741 0
+-6.00233 0.448891 0
+-6.01999 0.460081 0
+-6.05081 0.327912 0
+-6.08425 0.13947 0
+-6.12852 -0.00767621 0
+-6.2019 -0.0465339 0
+-6.31767 0.0307694 0
+-6.47068 0.172901 0
+-6.63384 0.299178 0
+-6.76822 0.345602 0
+-6.84384 0.305134 0
+-6.86206 0.241707 0
+-6.86801 0.268389 0
+-6.9447 0.496278 0
+-7.18764 0.975295 0
+-7.66803 1.6539 0
+-8.39858 2.37775 0
+-9.31594 2.93124 0
+-10.2885 3.1091 0
+-11.1494 2.79232 0
+-11.7445 1.99958 0
+-11.98 0.892848 0
+-11.8519 -0.267384 0
+-11.4474 -1.20281 0
+-10.9162 -1.70584 0
+-10.4233 -1.7041 0
+-10.0977 -1.27825 0
+-9.99706 -0.629187 0
+-10.0954 -0.00954635 0
+-10.2985 0.35548 0
+-10.4776 0.333083 0
+-10.5105 -0.0849495 0
+-10.3169 -0.789246 0
+-9.87833 -1.59286 0
+-9.2384 -2.28875 0
+-8.48694 -2.70606 0
+-7.73463 -2.7494 0
+-7.08663 -2.41411 0
+-6.62116 -1.77962 0
+-6.37576 -0.986899 0
+-6.34216 -0.205669 0
+-6.46972 0.403275 0
+-6.67662 0.723902 0
+-6.86804 0.711582 0
+-3.5622 0.404461 0
+-1.83856 0.0626292 0
+-1.83856 -0.0298081 0
+-1.42204 -0.0696113 0
+-2.75419 -0.112035 0
+-5.34492 -0.168426 0
+-5.3166 -0.224166 0
+-5.29466 -0.205968 0
+-5.30179 -0.0430991 0
+-5.36246 0.268874 0
+-5.49345 0.675724 0
+-5.69821 1.09344 0
+-5.96694 1.44523 0
+-6.28169 1.69168 0
+-6.62406 1.84293 0
+-6.98209 1.94865 0
+-7.35315 2.07048 0
+-7.74227 2.2504 0
+-8.15757 2.48946 0
+-8.60503 2.74297 0
+-9.08337 2.93099 0
+-9.57976 2.95967 0
+-10.0672 2.74779 0
+-10.5048 2.25238 0
+-10.8428 1.48805 0
+-11.0316 0.534047 0
+-11.0349 -0.475724 0
+-10.8421 -1.37901 0
+-10.477 -2.02007 0
+-9.99943 -2.286 0
+-9.49621 -2.13937 0
+-9.06108 -1.63835 0
+-8.76855 -0.934658 0
+-8.64922 -0.243761 0
+-8.67624 0.209493 0
+-8.76946 0.25661 0
+-8.81837 -0.157292 0
+-8.71781 -0.945432 0
+-8.40462 -1.89439 0
+-7.88266 -2.72206 0
+-7.22654 -3.16266 0
+-6.56183 -3.0514 0
+-6.02748 -2.37978 0
+-5.73303 -1.30149 0
+-5.72507 -0.0853082 0
+-5.97488 0.96999 0
+-6.39107 1.62984 0
+-6.85251 1.79465 0
+-7.24899 1.52237 0
+-7.5149 0.997066 0
+-7.64469 0.458233 0
+-7.68625 0.117572 0
+-7.71652 0.0926738 0
+-7.80996 0.379306 0
+-8.01205 0.868423 0
+-8.32694 1.3971 0
+-8.72198 1.81102 0
+-9.14498 2.01404 0
+-9.54526 1.98807 0
+-9.88928 1.78018 0
+-10.1648 1.46806 0
+-10.3746 1.12322 0
+-10.5258 0.789935 0
+-10.6239 0.486164 0
+-10.6739 0.214598 0
+-10.6784 -0.0351132 0
+-10.635 -0.282776 0
+-10.5353 -0.545245 0
+-10.3723 -0.821896 0
+-10.1496 -1.09071 0
+-9.88438 -1.32542 0
+-9.59495 -1.52129 0
+-9.28905 -1.69333 0
+-8.96103 -1.85488 0
+-8.59821 -1.99601 0
+-8.19204 -2.07642 0
+-7.74782 -2.03809 0
+-7.28821 -1.83306 0
+-6.8482 -1.45329 0
+-6.46374 -0.947364 0
+-6.15934 -0.413048 0
+-5.94085 0.0342541 0
+-5.79715 0.305194 0
+-5.70988 0.372806 0
+-5.66582 0.283855 0
+-5.66496 0.138608 0
+-5.71936 0.0467233 0
+-5.8429 0.0770091 0
+-6.03631 0.224178 0
+-6.27568 0.412273 0
+-6.51274 0.536232 0
+-6.69003 0.522892 0
+-6.76684 0.38195 0
+-6.74501 0.219877 0
+-6.68165 0.205026 0
+-6.67966 0.494292 0
+-6.85581 1.15144 0
+-7.29668 2.09477 0
+-8.01951 3.10058 0
+-8.95378 3.86551 0
+-9.95238 4.1077 0
+-10.831 3.67097 0
+-11.4236 2.59218 0
+-11.6346 1.1038 0
+-11.4695 -0.432464 0
+-11.0328 -1.63949 0
+-10.4927 -2.24598 0
+-10.0257 -2.17112 0
+-9.76145 -1.54246 0
+-9.74676 -0.643876 0
+-9.93839 0.182079 0
+-10.2249 0.642027 0
+-10.4673 0.575461 0
+-10.5433 -0.00893228 0
+-10.3821 -0.950468 0
+-9.97915 -1.99581 0
+-9.39041 -2.8775 0
+-8.71058 -3.38589 0
+-8.0453 -3.41468 0
+-7.48667 -2.97275 0
+-7.09709 -2.16919 0
+-6.90174 -1.18226 0
+-6.88799 -0.219416 0
+-7.01044 0.525724 0
+-7.20053 0.91399 0
+-7.38114 0.892199 0
+-3.82383 0.510084 0
+-1.97763 0.0860912 0
+-1.97763 -0.0390986 0
+-1.5276 -0.0778798 0
+-2.94916 -0.125094 0
+-5.70151 -0.187677 0
+-5.67629 -0.249377 0
+-5.65186 -0.230403 0
+-5.64379 -0.0511729 0
+-5.67023 0.295324 0
+-5.74532 0.750814 0
+-5.87463 1.22275 0
+-6.05405 1.62466 0
+-6.27191 1.90953 0
+-6.51311 2.08413 0
+-6.7638 2.19934 0
+-7.01426 2.32095 0
+-7.25982 2.49596 0
+-7.50115 2.73079 0
+-7.74423 2.98606 0
+-7.99862 3.18538 0
+-8.27294 3.23399 0
+-8.56802 3.04287 0
+-8.87013 2.55448 0
+-9.14764 1.76556 0
+-9.35455 0.740957 0
+-9.4412 -0.389079 0
+-9.37004 -1.45017 0
+-9.13218 -2.25792 0
+-8.75847 -2.65972 0
+-8.31862 -2.57922 0
+-7.90555 -2.05141 0
+-7.60793 -1.23228 0
+-7.47989 -0.371801 0
+-7.51925 0.248851 0
+-7.66383 0.401192 0
+-7.8095 -0.0116233 0
+-7.84494 -0.909986 0
+-7.69118 -2.04815 0
+-7.33161 -3.08163 0
+-6.82155 -3.67272 0
+-6.27284 -3.60011 0
+-5.81822 -2.8344 0
+-5.56779 -1.55192 0
+-5.57316 -0.0799423 0
+-5.8121 1.20893 0
+-6.19929 2.01703 0
+-6.61862 2.21399 0
+-6.96447 1.86821 0
+-7.17597 1.20857 0
+-7.25246 0.534717 0
+-7.24568 0.110796 0
+-7.23395 0.0809414 0
+-7.28938 0.43474 0
+-7.45143 1.03047 0
+-7.71611 1.66178 0
+-8.04344 2.13834 0
+-8.37788 2.34848 0
+-8.67181 2.282 0
+-8.90129 2.00966 0
+-9.0678 1.63458 0
+-9.18665 1.24206 0
+-9.27091 0.874199 0
+-9.32545 0.540706 0
+-9.35627 0.245414 0
+-9.36883 -0.0225523 0
+-9.35989 -0.291711 0
+-9.31433 -0.590803 0
+-9.21251 -0.923722 0
+-9.04912 -1.2541 0
+-8.84598 -1.52856 0
+-8.63013 -1.73714 0
+-8.41531 -1.90815 0
+-8.19698 -2.07321 0
+-7.95804 -2.23495 0
+-7.68003 -2.35442 0
+-7.35446 -2.36366 0
+-6.98909 -2.19844 0
+-6.60642 -1.83597 0
+-6.23533 -1.31845 0
+-5.90042 -0.747957 0
+-5.61496 -0.25121 0
+-5.3814 0.0716363 0
+-5.1989 0.190308 0
+-5.07268 0.157634 0
+-5.01841 0.084341 0
+-5.05744 0.0857484 0
+-5.20404 0.223612 0
+-5.45034 0.470474 0
+-5.75677 0.718705 0
+-6.05591 0.835371 0
+-6.27215 0.739135 0
+-6.35196 0.461762 0
+-6.29264 0.160557 0
+-6.15564 0.0680228 0
+-6.05494 0.393598 0
+-6.12095 1.21745 0
+-6.45187 2.42569 0
+-7.07176 3.72048 0
+-7.9119 4.70566 0
+-8.82421 5.02 0
+-9.62395 4.47071 0
+-10.148 3.11618 0
+-10.3079 1.26376 0
+-10.1194 -0.620986 0
+-9.69557 -2.06332 0
+-9.2076 -2.73395 0
+-8.82608 -2.55265 0
+-8.66585 -1.70269 0
+-8.75405 -0.555677 0
+-9.03004 0.458076 0
+-9.37378 0.985766 0
+-9.65007 0.851746 0
+-9.75237 0.0933724 0
+-9.63185 -1.07098 0
+-9.30419 -2.32348 0
+-8.83547 -3.34621 0
+-8.31552 -3.90584 0
+-7.8303 -3.8999 0
+-7.44323 -3.35981 0
+-7.18829 -2.42413 0
+-7.07167 -1.29887 0
+-7.07752 -0.213571 0
+-7.17405 0.62225 0
+-7.31898 1.05893 0
+-7.46559 1.03881 0
+-3.86766 0.615903 0
+-2.00823 0.12859 0
+-2.00823 -0.0299587 0
+-1.60395 -0.0838056 0
+-3.09136 -0.135136 0
+-5.96291 -0.203982 0
+-5.93798 -0.274307 0
+-5.90572 -0.262662 0
+-5.87392 -0.0829786 0
+-5.85377 0.275175 0
+-5.85642 0.753468 0
+-5.88993 1.25626 0
+-5.95708 1.69181 0
+-6.05416 2.0066 0
+-6.17097 2.20094 0
+-6.2924 2.32076 0
+-6.40086 2.42941 0
+-6.48018 2.57528 0
+-6.52135 2.77196 0
+-6.52839 2.9931 0
+-6.52071 3.1777 0
+-6.529 3.24229 0
+-6.58465 3.09852 0
+-6.70571 2.67554 0
+-6.88514 1.94499 0
+-7.08685 0.942673 0
+-7.2529 -0.223033 0
+-7.32103 -1.38204 0
+-7.24812 -2.33083 0
+-7.03082 -2.87701 0
+-6.71386 -2.89618 0
+-6.38031 -2.38496 0
+-6.12549 -1.4871 0
+-6.02311 -0.474175 0
+-6.09661 0.322347 0
+-6.30733 0.611916 0
+-6.56575 0.24679 0
+-6.76241 -0.713322 0
+-6.80741 -2.00315 0
+-6.66367 -3.22537 0
+-6.36174 -3.97465 0
+-5.99003 -3.97182 0
+-5.66366 -3.16076 0
+-5.48344 -1.73214 0
+-5.50016 -0.0632207 0
+-5.69798 1.40675 0
+-6.00287 2.32193 0
+-6.31265 2.52376 0
+-6.53597 2.09154 0
+-6.62478 1.29738 0
+-6.58781 0.497746 0
+-6.48147 0.00446331 0
+-6.3833 -0.0172332 0
+-6.3596 0.411039 0
+-6.44062 1.1115 0
+-6.61247 1.83363 0
+-6.82758 2.35345 0
+-7.02796 2.54886 0
+-7.17025 2.42428 0
+-7.24166 2.08106 0
+-7.25959 1.65251 0
+-7.25467 1.23714 0
+-7.24658 0.866114 0
+-7.23565 0.529769 0
+-7.2323 0.242064 0
+-7.24936 -0.00548772 0
+-7.2866 -0.254468 0
+-7.32307 -0.554335 0
+-7.31952 -0.927274 0
+-7.24757 -1.32604 0
+-7.13465 -1.64148 0
+-7.01757 -1.85422 0
+-6.91806 -2.00767 0
+-6.83785 -2.15341 0
+-6.76247 -2.31033 0
+-6.6698 -2.4471 0
+-6.54041 -2.49305 0
+-6.36554 -2.37331 0
+-6.14923 -2.05227 0
+-5.90442 -1.56326 0
+-5.64591 -1.00646 0
+-5.38547 -0.511657 0
+-5.13249 -0.181338 0
+-4.89997 -0.0422142 0
+-4.71085 -0.0314807 0
+-4.5987 -0.0278164 0
+-4.59887 0.085923 0
+-4.73275 0.357495 0
+-4.99163 0.729346 0
+-5.32819 1.05526 0
+-5.66263 1.16982 0
+-5.90528 0.981777 0
+-5.98964 0.546122 0
+-5.90342 0.0743394 0
+-5.70294 -0.132458 0
+-5.50152 0.192184 0
+-5.43267 1.14859 0
+-5.60057 2.59359 0
+-6.0377 4.1576 0
+-6.68643 5.35439 0
+-7.41279 5.74636 0
+-8.04874 5.10665 0
+-8.44847 3.51592 0
+-8.53847 1.35377 0
+-8.34256 -0.816892 0
+-7.97231 -2.43357 0
+-7.58591 -3.12035 0
+-7.33123 -2.80733 0
+-7.29559 -1.73833 0
+-7.48131 -0.369952 0
+-7.81341 0.790178 0
+-8.17312 1.34547 0
+-8.44261 1.12124 0
+-8.54402 0.194777 0
+-8.4594 -1.1556 0
+-8.22717 -2.5557 0
+-7.9196 -3.65379 0
+-7.61265 -4.21279 0
+-7.36154 -4.15102 0
+-7.1907 -3.53065 0
+-7.09829 -2.51655 0
+-7.06838 -1.32878 0
+-7.08325 -0.1987 0
+-7.12992 0.668921 0
+-7.19942 1.12842 0
+-7.28166 1.12105 0
+-3.77084 0.69499 0
+-1.9631 0.173902 0
+-1.9631 -0.0114036 0
+-1.6698 -0.0873362 0
+-3.21973 -0.142085 0
+-6.21064 -0.21722 0
+-6.18619 -0.298756 0
+-6.1466 -0.302253 0
+-6.09204 -0.137541 0
+-6.02656 0.2097 0
+-5.95773 0.684631 0
+-5.89531 1.19385 0
+-5.84862 1.64511 0
+-5.82242 1.98041 0
+-5.81289 2.19141 0
+-5.80542 2.3133 0
+-5.77624 2.40023 0
+-5.6988 2.49784 0
+-5.55436 2.62752 0
+-5.34323 2.78197 0
+-5.09111 2.92557 0
+-4.84618 2.99736 0
+-4.66618 2.91852 0
+-4.59887 2.60823 0
+-4.66307 2.00919 0
+-4.83762 1.11723 0
+-5.06382 0.00315894 0
+-5.26284 -1.18302 0
+-5.36358 -2.23009 0
+-5.33057 -2.91002 0
+-5.18035 -3.0464 0
+-4.97844 -2.58686 0
+-4.81681 -1.64874 0
+-4.77964 -0.511341 0
+-4.91073 0.453432 0
+-5.19521 0.896401 0
+-5.56348 0.615053 0
+-5.91599 -0.360813 0
+-6.1597 -1.75944 0
+-6.2419 -3.14316 0
+-6.1685 -4.04805 0
+-5.99976 -4.14057 0
+-5.82514 -3.33538 0
+-5.72736 -1.82992 0
+-5.74985 -0.0407275 0
+-5.88072 1.53762 0
+-6.05958 2.50079 0
+-6.20406 2.66824 0
+-6.24436 2.13184 0
+-6.15134 1.20436 0
+-5.94683 0.293236 0
+-5.69285 -0.249513 0
+-5.46519 -0.2449 0
+-5.3228 0.268654 0
+-5.28588 1.07457 0
+-5.33092 1.87867 0
+-5.40398 2.42651 0
+-5.4455 2.59038 0
+-5.41615 2.39494 0
+-5.31283 1.97774 0
+-5.16759 1.50727 0
+-5.02741 1.09696 0
+-4.91956 0.758268 0
+-4.83008 0.440283 0
+-4.78086 0.192842 0
+-4.79439 0.00804524 0
+-4.87662 -0.172238 0
+-5.01015 -0.420802 0
+-5.13659 -0.800832 0
+-5.17636 -1.28628 0
+-5.17139 -1.64644 0
+-5.16665 -1.85896 0
+-5.19067 -1.98365 0
+-5.2555 -2.08858 0
+-5.3566 -2.20923 0
+-5.47585 -2.32785 0
+-5.5886 -2.3803 0
+-5.67176 -2.29015 0
+-5.70906 -2.01498 0
+-5.6918 -1.58052 0
+-5.61676 -1.0815 0
+-5.48483 -0.64359 0
+-5.3033 -0.362867 0
+-5.09134 -0.254179 0
+-4.88421 -0.238602 0
+-4.73097 -0.181056 0
+-4.68249 0.0374378 0
+-4.77272 0.447722 0
+-5.00077 0.957398 0
+-5.32201 1.37651 0
+-5.65446 1.50228 0
+-5.90199 1.2293 0
+-5.98809 0.632228 0
+-5.88786 -0.0258922 0
+-5.64377 -0.376553 0
+-5.35632 -0.0952638 0
+-5.15043 0.942701 0
+-5.12926 2.57242 0
+-5.33386 4.36221 0
+-5.72519 5.74572 0
+-6.19611 6.21728 0
+-6.60947 5.52001 0
+-6.84817 3.75462 0
+-6.85833 1.36392 0
+-6.66882 -1.0064 0
+-6.37942 -2.72297 0
+-6.12173 -3.37804 0
+-6.00845 -2.92061 0
+-6.09225 -1.65453 0
+-6.35044 -0.111757 0
+-6.69971 1.13944 0
+-7.03225 1.67802 0
+-7.25765 1.34664 0
+-7.33382 0.27094 0
+-7.27617 -1.21325 0
+-7.14352 -2.68836 0
+-7.00849 -3.78882 0
+-6.92655 -4.29473 0
+-6.91697 -4.1606 0
+-6.96266 -3.48496 0
+-7.02569 -2.45352 0
+-7.06925 -1.28522 0
+-7.07548 -0.19247 0
+-7.05142 0.644856 0
+-7.02173 1.09873 0
+-7.01285 1.11218 0
+-3.62265 0.718753 0
+-1.88344 0.202671 0
+-1.88344 0.00668471 0
+-1.73514 -0.0881234 0
+-3.35422 -0.145103 0
+-6.48516 -0.225502 0
+-6.46525 -0.318657 0
+-6.4257 -0.341809 0
+-6.3597 -0.203541 0
+-6.26392 0.113924 0
+-6.14102 0.561733 0
+-6.00047 1.0533 0
+-5.85612 1.50076 0
+-5.72043 1.84471 0
+-5.59704 2.06802 0
+-5.47506 2.19132 0
+-5.32907 2.25424 0
+-5.12679 2.29556 0
+-4.84261 2.34334 0
+-4.47223 2.41159 0
+-4.04229 2.49563 0
+-3.6094 2.56447 0
+-3.24705 2.55618 0
+-3.02383 2.385 0
+-2.9801 1.96547 0
+-3.11174 1.24887 0
+-3.36782 0.259234 0
+-3.66558 -0.88526 0
+-3.91876 -1.97691 0
+-4.06865 -2.76013 0
+-4.10571 -3.00934 0
+-4.07262 -2.61996 0
+-4.04712 -1.67424 0
+-4.11118 -0.447278 0
+-4.31856 0.660811 0
+-4.67333 1.25117 0
+-5.12757 1.0693 0
+-5.59895 0.110564 0
+-6.00116 -1.35723 0
+-6.27494 -2.86938 0
+-6.40705 -3.91594 0
+-6.43011 -4.1175 0
+-6.40401 -3.36148 0
+-6.38698 -1.84695 0
+-6.40878 -0.0189298 0
+-6.45757 1.58641 0
+-6.48615 2.52936 0
+-6.43437 2.61646 0
+-6.25764 1.95511 0
+-5.94898 0.895691 0
+-5.54505 -0.11069 0
+-5.11375 -0.68081 0
+-4.72865 -0.630002 0
+-4.44126 -0.0187323 0
+-4.26277 0.896079 0
+-4.16234 1.77824 0
+-4.08221 2.34639 0
+-3.96299 2.47116 0
+-3.76893 2.20088 0
+-3.5033 1.71211 0
+-3.20755 1.21153 0
+-2.94284 0.832242 0
+-2.74931 0.564737 0
+-2.58248 0.27346 0
+-2.4904 0.100756 0
+-2.49161 0.00925411 0
+-2.59348 -0.0703673 0
+-2.80393 -0.210347 0
+-3.07799 -0.526773 0
+-3.22904 -1.13523 0
+-3.34068 -1.5348 0
+-3.454 -1.74565 0
+-3.59842 -1.83922 0
+-3.79788 -1.88912 0
+-4.06239 -1.94472 0
+-4.3837 -2.00653 0
+-4.73843 -2.02557 0
+-5.09507 -1.93352 0
+-5.4208 -1.68925 0
+-5.68591 -1.31541 0
+-5.86615 -0.901259 0
+-5.94535 -0.564386 0
+-5.92031 -0.387905 0
+-5.80688 -0.367606 0
+-5.64349 -0.401995 0
+-5.48739 -0.33716 0
+-5.40132 -0.048631 0
+-5.43319 0.479592 0
+-5.59628 1.12049 0
+-5.85863 1.63885 0
+-6.14759 1.79124 0
+-6.37087 1.45258 0
+-6.44829 0.70965 0
+-6.34279 -0.131392 0
+-6.0774 -0.641945 0
+-5.72992 -0.442744 0
+-5.40598 0.618762 0
+-5.20012 2.36656 0
+-5.16003 4.32212 0
+-5.2692 5.8549 0
+-5.45545 6.40353 0
+-5.62161 5.68616 0
+-5.68589 3.8189 0
+-5.61564 1.29368 0
+-5.44077 -1.18128 0
+-5.24109 -2.92264 0
+-5.11263 -3.5065 0
+-5.12713 -2.90611 0
+-5.30233 -1.47933 0
+-5.59571 0.181623 0
+-5.92383 1.46756 0
+-6.19785 1.95204 0
+-6.35944 1.50822 0
+-6.40195 0.313454 0
+-6.36912 -1.24608 0
+-6.33246 -2.72501 0
+-6.35797 -3.76331 0
+-6.47714 -4.17555 0
+-6.67501 -3.96273 0
+-6.89863 -3.26133 0
+-7.08122 -2.27093 0
+-7.17097 -1.19547 0
+-7.1521 -0.211346 0
+-7.04946 0.542224 0
+-6.91571 0.964983 0
+-6.80743 1.00389 0
+-3.49894 0.672445 0
+-1.80838 0.201993 0
+-1.80838 0.0171705 0
+-1.79845 -0.0856166 0
+-3.49004 -0.14283 0
+-6.77368 -0.22573 0
+-6.76503 -0.327305 0
+-6.73761 -0.369234 0
+-6.67852 -0.26263 0
+-6.57664 0.0120404 0
+-6.42782 0.41292 0
+-6.23821 0.86368 0
+-6.02301 1.28556 0
+-5.80035 1.62206 0
+-5.58191 1.84958 0
+-5.36455 1.97396 0
+-5.1282 2.01789 0
+-4.84255 2.00991 0
+-4.4805 1.98129 0
+-4.03361 1.9647 0
+-3.52352 1.98554 0
+-3.00357 2.04452 0
+-2.54819 2.1008 0
+-2.23271 2.06952 0
+-2.10995 1.84271 0
+-2.19165 1.33057 0
+-2.44232 0.509903 0
+-2.78973 -0.537844 0
+-3.14915 -1.61749 0
+-3.45229 -2.45698 0
+-3.67011 -2.79152 0
+-3.82029 -2.46978 0
+-3.95666 -1.53786 0
+-4.14529 -0.258652 0
+-4.43675 0.952272 0
+-4.84556 1.65998 0
+-5.34409 1.56783 0
+-5.87285 0.639327 0
+-6.36271 -0.867375 0
+-6.75932 -2.47278 0
+-7.03948 -3.63577 0
+-7.21304 -3.94395 0
+-7.31036 -3.26415 0
+-7.36178 -1.79554 0
+-7.37856 -0.00214578 0
+-7.34477 1.55261 0
+-7.2239 2.4085 0
+-6.97728 2.36984 0
+-6.58558 1.56342 0
+-6.06397 0.374074 0
+-5.46328 -0.711372 0
+-4.85615 -1.28795 0
+-4.31304 -1.17311 0
+-3.87834 -0.453435 0
+-3.55603 0.573769 0
+-3.31096 1.53317 0
+-3.08499 2.12042 0
+-2.82192 2.20809 0
+-2.4911 1.87005 0
+-2.10017 1.32117 0
+-1.69244 0.803806 0
+-1.33252 0.472323 0
+-1.08195 0.31417 0
+-0.872931 0.0644383 0
+-0.78136 0.00918506 0
+-0.772888 0.0007823 0
+-0.840499 -0.00275585 0
+-1.03131 -0.0195323 0
+-1.41552 -0.142568 0
+-1.65994 -0.890812 0
+-1.89793 -1.29681 0
+-2.132 -1.51157 0
+-2.38872 -1.58251 0
+-2.70345 -1.57439 0
+-3.09973 -1.54844 0
+-3.58051 -1.52575 0
+-4.12892 -1.47716 0
+-4.71359 -1.34884 0
+-5.29483 -1.10802 0
+-5.82983 -0.780409 0
+-6.27752 -0.453563 0
+-6.60424 -0.237666 0
+-6.7911 -0.201049 0
+-6.84167 -0.317036 0
+-6.78638 -0.457279 0
+-6.67956 -0.443982 0
+-6.58706 -0.141136 0
+-6.56658 0.459116 0
+-6.6473 1.2012 0
+-6.817 1.80856 0
+-7.02302 1.99726 0
+-7.18828 1.61783 0
+-7.23803 0.759398 0
+-7.12748 -0.241935 0
+-6.85909 -0.910333 0
+-6.48225 -0.81959 0
+-6.07536 0.211876 0
+-5.717 2.00819 0
+-5.45723 4.06235 0
+-5.30176 5.69942 0
+-5.21575 6.31753 0
+-5.14508 5.61549 0
+-5.04475 3.71857 0
+-4.90193 1.15085 0
+-4.74345 -1.33976 0
+-4.62427 -3.04183 0
+-4.60184 -3.52892 0
+-4.70821 -2.79974 0
+-4.9323 -1.25524 0
+-5.22107 0.470391 0
+-5.50011 1.7466 0
+-5.70488 2.15682 0
+-5.80812 1.61146 0
+-5.8312 0.336532 0
+-5.83444 -1.24283 0
+-5.89031 -2.66915 0
+-6.05087 -3.60276 0
+-6.3239 -3.90252 0
+-6.66774 -3.61889 0
+-7.00608 -2.923 0
+-7.25657 -2.02044 0
+-7.36214 -1.0899 0
+-7.31204 -0.261442 0
+-7.1443 0.374485 0
+-6.92922 0.749899 0
+-6.74163 0.816308 0
+-3.44393 0.564889 0
+-1.76525 0.171096 0
+-1.76525 0.0172921 0
+-1.84952 -0.0793853 0
+-3.60357 -0.13406 0
+-7.02281 -0.214951 0
+-7.03209 -0.318022 0
+-7.02925 -0.372075 0
+-6.99644 -0.295438 0
+-6.91452 -0.0698826 0
+-6.77069 0.269087 0
+-6.5644 0.657397 0
+-6.30841 1.02957 0
+-6.02367 1.33732 0
+-5.72986 1.55577 0
+-5.43557 1.67967 0
+-5.13373 1.71604 0
+-4.80488 1.68106 0
+-4.42724 1.60365 0
+-3.98996 1.52742 0
+-3.50459 1.50017 0
+-3.00948 1.54941 0
+-2.56416 1.65547 0
+-2.23467 1.74003 0
+-2.07446 1.6825 0
+-2.10717 1.36328 0
+-2.31814 0.720877 0
+-2.65881 -0.197172 0
+-3.06274 -1.21357 0
+-3.4674 -2.05232 0
+-3.83364 -2.42528 0
+-4.15524 -2.14819 0
+-4.45542 -1.23769 0
+-4.77244 0.0583698 0
+-5.14089 1.32072 0
+-5.57603 2.09512 0
+-6.06695 2.05875 0
+-6.58048 1.15286 0
+-7.07356 -0.374302 0
+-7.50802 -2.03831 0
+-7.86114 -3.28266 0
+-8.12717 -3.67792 0
+-8.31021 -3.08111 0
+-8.41238 -1.69337 0
+-8.42401 0.00948602 0
+-8.32183 1.45043 0
+-8.07691 2.16358 0
+-7.66917 1.9621 0
+-7.1019 0.99615 0
+-6.40953 -0.318294 0
+-5.65398 -1.46693 0
+-4.9096 -2.03233 0
+-4.24177 -1.84094 0
+-3.68716 -1.00804 0
+-3.24372 0.130323 0
+-2.87437 1.16383 0
+-2.52401 1.77006 0
+-2.14349 1.82757 0
+-1.71133 1.43789 0
+-1.24341 0.853259 0
+-0.784909 0.345301 0
+-0.385691 0.0731049 0
+-0.0831272 0.0116071 0
+-0.0211406 0.00245173 0
+-0.0122315 0.000275944 0
+-0.0114544 5.20848e-06 0
+-0.0140149 -0.000195343 0
+-0.0316314 -0.00191582 0
+-0.153264 -0.0209355 0
+-0.576245 -0.467831 0
+-0.958409 -0.914647 0
+-1.30603 -1.16395 0
+-1.66493 -1.2236 0
+-2.07555 -1.16377 0
+-2.56421 -1.05978 0
+-3.14039 -0.949578 0
+-3.79706 -0.820488 0
+-4.51297 -0.632931 0
+-5.25511 -0.36588 0
+-5.98137 -0.0541496 0
+-6.64456 0.209632 0
+-7.19899 0.316764 0
+-7.60946 0.209418 0
+-7.86086 -0.065639 0
+-7.96486 -0.353279 0
+-7.96 -0.448844 0
+-7.90302 -0.198114 0
+-7.8526 0.408698 0
+-7.85046 1.19906 0
+-7.90699 1.86509 0
+-7.99738 2.08766 0
+-8.07043 1.69088 0
+-8.06728 0.756248 0
+-7.94305 -0.366167 0
+-7.68291 -1.17047 0
+-7.30679 -1.19571 0
+-6.86142 -0.233499 0
+-6.40317 1.54994 0
+-5.97852 3.63771 0
+-5.61094 5.33183 0
+-5.29998 6.00657 0
+-5.03203 5.34754 0
+-4.79588 3.48243 0
+-4.595 0.94997 0
+-4.44992 -1.48484 0
+-4.38953 -3.10221 0
+-4.43535 -3.48311 0
+-4.58665 -2.64845 0
+-4.81386 -1.02802 0
+-5.06463 0.721162 0
+-5.28212 1.96409 0
+-5.4284 2.30309 0
+-5.50175 1.68481 0
+-5.5392 0.373985 0
+-5.60221 -1.17982 0
+-5.75081 -2.52055 0
+-6.01673 -3.33683 0
+-6.387 -3.53226 0
+-6.8047 -3.20119 0
+-7.18665 -2.54104 0
+-7.45172 -1.75537 0
+-7.54931 -0.992316 0
+-7.47687 -0.33388 0
+-7.27946 0.177078 0
+-7.03203 0.502464 0
+-6.81216 0.596439 0
+-3.46387 0.427629 0
+-1.76358 0.121222 0
+-1.76358 0.00842488 0
+-1.87625 -0.0695074 0
+-3.66679 -0.118516 0
+-7.16893 -0.191903 0
+-7.19981 -0.287142 0
+-7.22955 -0.342326 0
+-7.23697 -0.288021 0
+-7.19551 -0.111342 0
+-7.08275 0.15633 0
+-6.88884 0.463489 0
+-6.6204 0.761129 0
+-6.29808 1.01499 0
+-5.94864 1.20633 0
+-5.59508 1.32612 0
+-5.24931 1.37027 0
+-4.9103 1.34205 0
+-4.56802 1.26137 0
+-4.21174 1.17115 0
+-3.83978 1.12821 0
+-3.4665 1.17613 0
+-3.12327 1.31224 0
+-2.85254 1.46931 0
+-2.6968 1.52675 0
+-2.68605 1.35254 0
+-2.82871 0.863531 0
+-3.10903 0.0831506 0
+-3.49221 -0.83039 0
+-3.93498 -1.60955 0
+-4.39794 -1.96231 0
+-4.85483 -1.6913 0
+-5.29553 -0.796989 0
+-5.7229 0.485736 0
+-6.14585 1.74367 0
+-6.57209 2.52136 0
+-7.00321 2.48987 0
+-7.43336 1.58301 0
+-7.85122 0.0435598 0
+-8.2433 -1.64622 0
+-8.59615 -2.92981 0
+-8.89587 -3.3782 0
+-9.12519 -2.85179 0
+-9.26039 -1.55817 0
+-9.27117 0.0202691 0
+-9.12569 1.30495 0
+-8.80018 1.83807 0
+-8.28981 1.45174 0
+-7.61633 0.322661 0
+-6.82856 -1.10606 0
+-5.99431 -2.30117 0
+-5.18489 -2.84175 0
+-4.45686 -2.56898 0
+-3.83718 -1.62771 0
+-3.31745 -0.389411 0
+-2.85996 0.706344 0
+-2.41478 1.32488 0
+-1.94218 1.35496 0
+-1.4327 0.928414 0
+-0.917261 0.33782 0
+-0.461678 -0.110281 0
+-0.142694 -0.245879 0
+-0.0051576 -0.125929 0
+-0.000567625 -0.00213824 0
+-0.000191272 -0.000100386 0
+-0.000175888 -1.01163e-05 0
+-0.00035882 -1.24204e-05 0
+-0.00205124 -0.00022341 0
+-0.0172173 -0.00576943 0
+-0.227723 -0.257324 0
+-0.564534 -0.577836 0
+-0.968089 -0.7604 0
+-1.418 -0.773694 0
+-1.91221 -0.66956 0
+-2.45611 -0.515875 0
+-3.05697 -0.348715 0
+-3.71981 -0.157651 0
+-4.44328 0.0905427 0
+-5.21543 0.406267 0
+-6.01046 0.740883 0
+-6.78891 0.988082 0
+-7.50255 1.0304 0
+-8.1035 0.810368 0
+-8.55537 0.386228 0
+-8.84307 -0.0655747 0
+-8.97781 -0.314111 0
+-8.99454 -0.181374 0
+-8.94192 0.356075 0
+-8.86732 1.12445 0
+-8.80238 1.80016 0
+-8.75432 2.0396 0
+-8.70591 1.64247 0
+-8.62396 0.674297 0
+-8.47253 -0.517596 0
+-8.22594 -1.41706 0
+-7.87734 -1.54431 0
+-7.44058 -0.670259 0
+-6.94537 1.05474 0
+-6.42812 3.12045 0
+-5.92288 4.82659 0
+-5.45665 5.54034 0
+-5.04979 4.94068 0
+-4.71912 3.15176 0
+-4.47995 0.7108 0
+-4.34468 -1.6201 0
+-4.31814 -3.12875 0
+-4.39227 -3.40899 0
+-4.54353 -2.49718 0
+-4.73544 -0.836106 0
+-4.92687 0.91259 0
+-5.08491 2.12213 0
+-5.19786 2.41604 0
+-5.28159 1.76854 0
+-5.37505 0.467442 0
+-5.52541 -1.02946 0
+-5.76823 -2.27773 0
+-6.11035 -2.99471 0
+-6.52261 -3.11999 0
+-6.94553 -2.77827 0
+-7.30622 -2.18036 0
+-7.54133 -1.52026 0
+-7.61792 -0.915721 0
+-7.54411 -0.407688 0
+-7.36535 -0.00168612 0
+-7.14785 0.284961 0
+-6.95589 0.404478 0
+-3.53323 0.303808 0
+-1.79521 0.0703582 0
+-1.79521 -0.00547254 0
+-1.87233 -0.0568381 0
+-3.66368 -0.0974079 0
+-7.17309 -0.158098 0
+-7.22414 -0.236093 0
+-7.2866 -0.279868 0
+-7.33809 -0.236525 0
+-7.34666 -0.102772 0
+-7.28106 0.0907246 0
+-7.12115 0.303585 0
+-6.86495 0.50493 0
+-6.52977 0.679812 0
+-6.14738 0.823932 0
+-5.75513 0.933872 0
+-5.38629 1.00144 0
+-5.06229 1.01805 0
+-4.78903 0.988105 0
+-4.55846 0.940582 0
+-4.35511 0.924858 0
+-4.16504 0.986062 0
+-3.98398 1.13118 0
+-3.82158 1.30691 0
+-3.70079 1.40595 0
+-3.65246 1.30421 0
+-3.70697 0.918044 0
+-3.88506 0.261243 0
+-4.19077 -0.524687 0
+-4.60887 -1.19144 0
+-5.10779 -1.46339 0
+-5.64647 -1.15261 0
+-6.18305 -0.260413 0
+-6.68299 0.985678 0
+-7.12526 2.18594 0
+-7.50521 2.90131 0
+-7.83335 2.818 0
+-8.12997 1.87964 0
+-8.41702 0.330608 0
+-8.70935 -1.3539 0
+-9.00783 -2.63133 0
+-9.29578 -3.09025 0
+-9.53965 -2.60792 0
+-9.69411 -1.40371 0
+-9.7112 0.0373553 0
+-9.55184 1.14559 0
+-9.1969 1.48312 0
+-8.65427 0.909116 0
+-7.95976 -0.371858 0
+-7.1708 -1.89502 0
+-6.35461 -3.11736 0
+-5.57319 -3.62317 0
+-4.86922 -3.27295 0
+-4.25673 -2.24019 0
+-3.71978 -0.926367 0
+-3.22035 0.206915 0
+-2.71417 0.818698 0
+-2.16976 0.810548 0
+-1.58537 0.344032 0
+-0.998899 -0.248653 0
+-0.485731 -0.623449 0
+-0.136759 -0.594851 0
+-0.00208257 -0.260606 0
+-2.57312e-05 -0.00419508 0
+3.20838e-06 -0.000129192 0
+4.32918e-07 -7.22505e-06 0
+-1.62931e-05 4.19239e-06 0
+-0.000215171 -2.46363e-05 0
+-0.00380362 -0.00218098 0
+-0.160187 -0.100941 0
+-0.518667 -0.219355 0
+-1.01748 -0.261583 0
+-1.58266 -0.208522 0
+-2.16177 -0.0904456 0
+-2.73112 0.0534763 0
+-3.2928 0.212965 0
+-3.86665 0.416193 0
+-4.47889 0.702786 0
+-5.1496 1.07698 0
+-5.88193 1.47321 0
+-6.65651 1.76267 0
+-7.43277 1.80666 0
+-8.15645 1.53404 0
+-8.77138 1.00116 0
+-9.23245 0.395496 0
+-9.51628 -0.0302768 0
+-9.62652 -0.0711333 0
+-9.59191 0.321464 0
+-9.45754 0.990082 0
+-9.27203 1.61465 0
+-9.07469 1.84226 0
+-8.88647 1.45425 0
+-8.70683 0.494659 0
+-8.51683 -0.707595 0
+-8.2872 -1.64669 0
+-7.98917 -1.84235 0
+-7.60506 -1.05437 0
+-7.13551 0.585188 0
+-6.60113 2.58608 0
+-6.03878 4.26424 0
+-5.49423 4.99579 0
+-5.01359 4.46004 0
+-4.63492 2.77309 0
+-4.38131 0.457183 0
+-4.25663 -1.74478 0
+-4.24552 -3.13987 0
+-4.31792 -3.33658 0
+-4.43736 -2.37774 0
+-4.57031 -0.703163 0
+-4.69439 1.03668 0
+-4.80389 2.23163 0
+-4.91087 2.52302 0
+-5.04083 1.8985 0
+-5.22311 0.649724 0
+-5.479 -0.773571 0
+-5.81155 -1.94518 0
+-6.20099 -2.60528 0
+-6.60737 -2.71362 0
+-6.97977 -2.40586 0
+-7.26961 -1.89051 0
+-7.44417 -1.34571 0
+-7.49601 -0.863879 0
+-7.44471 -0.45899 0
+-7.32985 -0.116541 0
+-7.19775 0.152863 0
+-7.08647 0.293188 0
+-3.61024 0.23168 0
+-1.84002 0.0354281 0
+-1.84002 -0.0199572 0
+-1.84239 -0.0430175 0
+-3.60155 -0.0734852 0
+-7.0458 -0.117999 0
+-7.11009 -0.171803 0
+-7.19662 -0.193341 0
+-7.28449 -0.148656 0
+-7.33977 -0.0474935 0
+-7.32534 0.0762967 0
+-7.21222 0.19047 0
+-6.98917 0.28188 0
+-6.66772 0.358357 0
+-6.28119 0.437402 0
+-5.87792 0.530605 0
+-5.5101 0.633613 0
+-5.22068 0.728631 0
+-5.03214 0.799564 0
+-4.94087 0.849318 0
+-4.91968 0.903666 0
+-4.92775 0.994133 0
+-4.92503 1.12846 0
+-4.8865 1.26838 0
+-4.81212 1.33158 0
+-4.72943 1.22152 0
+-4.68695 0.875559 0
+-4.73943 0.313729 0
+-4.92956 -0.334562 0
+-5.27246 -0.848538 0
+-5.74871 -0.987143 0
+-6.30794 -0.593389 0
+-6.88181 0.313456 0
+-7.40246 1.50633 0
+-7.82099 2.60447 0
+-8.12027 3.2006 0
+-8.31784 3.01558 0
+-8.45723 2.01904 0
+-8.59073 0.464103 0
+-8.75968 -1.18494 0
+-8.97924 -2.41177 0
+-9.23201 -2.83747 0
+-9.47208 -2.36786 0
+-9.63758 -1.2382 0
+-9.66805 0.0678239 0
+-9.52117 0.998708 0
+-9.18421 1.14616 0
+-8.67687 0.401778 0
+-8.04533 -1.0034 0
+-7.34989 -2.59046 0
+-6.65028 -3.81697 0
+-5.99246 -4.28099 0
+-5.39979 -3.86562 0
+-4.87003 -2.76996 0
+-4.37857 -1.41783 0
+-3.88751 -0.284137 0
+-3.35838 0.289569 0
+-2.76547 0.21763 0
+-2.1074 -0.314039 0
+-1.41584 -0.940212 0
+-0.761167 -1.27812 0
+-0.252378 -1.10364 0
+-0.00745405 -0.50553 0
+-0.000572656 -0.0110765 0
+-5.75421e-05 -0.000644178 0
+-8.47772e-06 -5.61784e-05 0
+-3.8044e-05 3.36409e-05 0
+-0.000383161 0.000320375 0
+-0.00573223 0.00316809 0
+-0.228908 0.122235 0
+-0.728073 0.279809 0
+-1.3969 0.407244 0
+-2.10951 0.504084 0
+-2.77256 0.57261 0
+-3.34027 0.621181 0
+-3.81366 0.686362 0
+-4.23013 0.832664 0
+-4.64621 1.11887 0
+-5.11772 1.54849 0
+-5.68204 2.03753 0
+-6.34671 2.42734 0
+-7.08624 2.54619 0
+-7.84692 2.29472 0
+-8.55796 1.7122 0
+-9.14673 0.984262 0
+-9.55467 0.377665 0
+-9.75055 0.124751 0
+-9.73754 0.308452 0
+-9.55194 0.804485 0
+-9.2536 1.3163 0
+-8.91037 1.49902 0
+-8.58076 1.12464 0
+-8.29936 0.213257 0
+-8.06905 -0.937904 0
+-7.86286 -1.85288 0
+-7.63534 -2.06987 0
+-7.34032 -1.34939 0
+-6.94915 0.194011 0
+-6.46298 2.09991 0
+-5.91495 3.71622 0
+-5.3617 4.44255 0
+-4.86734 3.96568 0
+-4.48522 2.39097 0
+-4.24326 0.215225 0
+-4.13762 -1.85042 0
+-4.13694 -3.14055 0
+-4.19572 -3.27779 0
+-4.27156 -2.30191 0
+-4.33958 -0.635136 0
+-4.39926 1.09636 0
+-4.47172 2.30408 0
+-4.58925 2.64055 0
+-4.78111 2.09036 0
+-5.06065 0.929262 0
+-5.41822 -0.416002 0
+-5.82237 -1.54102 0
+-6.22848 -2.19917 0
+-6.59104 -2.35106 0
+-6.87523 -2.12167 0
+-7.06455 -1.70119 0
+-7.1629 -1.24736 0
+-7.19096 -0.835816 0
+-7.1783 -0.471659 0
+-7.15369 -0.14115 0
+-7.13673 0.135907 0
+-7.13264 0.2891 0
+-3.65544 0.229885 0
+-1.87516 0.0253224 0
+-1.87516 -0.0319604 0
+-1.80239 -0.0301756 0
+-3.5124 -0.0505298 0
+-6.85103 -0.0781473 0
+-6.91761 -0.105224 0
+-7.01277 -0.0981759 0
+-7.1198 -0.0416302 0
+-7.20724 0.0399497 0
+-7.23696 0.106021 0
+-7.17489 0.1284 0
+-7.002 0.108985 0
+-6.72254 0.078902 0
+-6.36705 0.0819105 0
+-5.98838 0.151931 0
+-5.6505 0.295737 0
+-5.41188 0.490015 0
+-5.30826 0.695945 0
+-5.34097 0.882028 0
+-5.47531 1.038 0
+-5.65032 1.16915 0
+-5.79755 1.27568 0
+-5.86307 1.3339 0
+-5.82633 1.29483 0
+-5.7096 1.1048 0
+-5.57373 0.739685 0
+-5.49955 0.239548 0
+-5.56085 -0.273253 0
+-5.79857 -0.610819 0
+-6.20536 -0.580356 0
+-6.72606 -0.0726894 0
+-7.27389 0.861287 0
+-7.75699 1.98943 0
+-8.10664 2.95411 0
+-8.29789 3.39185 0
+-8.3554 3.07308 0
+-8.34181 2.00545 0
+-8.33307 0.455359 0
+-8.39005 -1.12796 0
+-8.53717 -2.26466 0
+-8.75472 -2.61991 0
+-8.98659 -2.13599 0
+-9.15956 -1.06523 0
+-9.20716 0.115433 0
+-9.08988 0.881428 0
+-8.80521 0.861484 0
+-8.3853 -0.0181312 0
+-7.88419 -1.50451 0
+-7.36002 -3.11462 0
+-6.85886 -4.31813 0
+-6.4046 -4.73525 0
+-5.99668 -4.27354 0
+-5.61426 -3.15239 0
+-5.22424 -1.80785 0
+-4.79051 -0.717862 0
+-4.28215 -0.218792 0
+-3.67913 -0.38539 0
+-2.9761 -1.01707 0
+-2.18639 -1.72992 0
+-1.35146 -2.11305 0
+-0.568205 -1.88689 0
+-0.0443864 -1.02935 0
+-0.00544689 -0.050016 0
+-0.0008336 -0.00525745 0
+-0.000331095 -0.000558651 0
+-0.00066607 0.000368581 0
+-0.0039633 0.0036176 0
+-0.0323255 0.0315303 0
+-0.483135 0.573045 0
+-1.24846 1.04513 0
+-2.13525 1.29404 0
+-2.99027 1.3591 0
+-3.70832 1.29066 0
+-4.23981 1.15267 0
+-4.59229 1.03885 0
+-4.82052 1.06089 0
+-5.00673 1.30507 0
+-5.23666 1.77842 0
+-5.5776 2.37847 0
+-6.06284 2.91258 0
+-6.68461 3.16796 0
+-7.39555 3.00566 0
+-8.11821 2.43486 0
+-8.76066 1.62671 0
+-9.23599 0.852992 0
+-9.4819 0.370661 0
+-9.47606 0.302613 0
+-9.24249 0.570921 0
+-8.84631 0.920116 0
+-8.37723 1.02994 0
+-7.92585 0.673272 0
+-7.55895 -0.153646 0
+-7.30147 -1.19539 0
+-7.13167 -2.02267 0
+-6.99179 -2.20975 0
+-6.81113 -1.53004 0
+-6.53379 -0.0833336 0
+-6.14062 1.70674 0
+-5.65738 3.23298 0
+-5.14611 3.93128 0
+-4.68335 3.50292 0
+-4.33372 2.04133 0
+-4.12862 0.0101304 0
+-4.05797 -1.92107 0
+-4.07794 -3.12059 0
+-4.13144 -3.22429 0
+-4.17276 -2.26058 0
+-4.18608 -0.621818 0
+-4.19065 1.10092 0
+-4.23084 2.34428 0
+-4.35548 2.76519 0
+-4.5953 2.33018 0
+-4.94775 1.28172 0
+-5.37506 0.0113024 0
+-5.81594 -1.10015 0
+-6.20608 -1.80902 0
+-6.49875 -2.05839 0
+-6.67759 -1.94284 0
+-6.75817 -1.6206 0
+-6.77894 -1.22659 0
+-6.78527 -0.829492 0
+-6.81298 -0.443945 0
+-6.87721 -0.0769218 0
+-6.96973 0.228428 0
+-7.06419 0.383559 0
+-3.64633 0.290782 0
+-1.88387 0.0376751 0
+-1.88387 -0.0407845 0
+-1.77463 -0.0204027 0
+-3.44308 -0.0324049 0
+-6.68664 -0.0454877 0
+-6.74343 -0.0484381 0
+-6.82916 -0.0124455 0
+-6.9334 0.0626108 0
+-7.03168 0.138235 0
+-7.09057 0.164906 0
+-7.07625 0.114084 0
+-6.96524 -0.00203174 0
+-6.75433 -0.132003 0
+-6.46685 -0.205575 0
+-6.15193 -0.162987 0
+-5.87494 0.0187479 0
+-5.69984 0.314917 0
+-5.6691 0.665211 0
+-5.7882 1.00112 0
+-6.0205 1.2703 0
+-6.29564 1.44429 0
+-6.52986 1.50991 0
+-6.65236 1.4564 0
+-6.62946 1.27193 0
+-6.47858 0.953923 0
+-6.26598 0.527082 0
+-6.08651 0.0600836 0
+-6.03186 -0.327912 0
+-6.15847 -0.484203 0
+-6.46701 -0.271821 0
+-6.9007 0.361003 0
+-7.36374 1.32433 0
+-7.7531 2.37879 0
+-7.99266 3.19367 0
+-8.05788 3.45707 0
+-7.98228 2.99748 0
+-7.84289 1.86607 0
+-7.73003 0.342497 0
+-7.71354 -1.14446 0
+-7.81851 -2.15969 0
+-8.01857 -2.41986 0
+-8.24793 -1.90663 0
+-8.42671 -0.886449 0
+-8.48951 0.178226 0
+-8.4065 0.798427 0
+-8.19028 0.645261 0
+-7.8871 -0.321317 0
+-7.55731 -1.8343 0
+-7.25317 -3.41877 0
+-7.00236 -4.56893 0
+-6.80253 -4.93508 0
+-6.62656 -4.44952 0
+-6.43457 -3.34437 0
+-6.18683 -2.05559 0
+-5.85262 -1.05207 0
+-5.41316 -0.658254 0
+-4.85912 -0.939425 0
+-4.18593 -1.69026 0
+-3.38995 -2.5259 0
+-2.46756 -3.03545 0
+-1.42297 -2.93148 0
+-0.351414 -2.1009 0
+-0.0657348 -0.335695 0
+-0.0235371 -0.0474552 0
+-0.0176161 -0.0064796 0
+-0.0217542 0.00450661 0
+-0.0552453 0.0371087 0
+-0.281276 0.257561 0
+-1.23239 1.52415 0
+-2.29396 2.10671 0
+-3.32712 2.3272 0
+-4.23194 2.26393 0
+-4.92651 1.98523 0
+-5.37223 1.59839 0
+-5.58574 1.25236 0
+-5.63252 1.10767 0
+-5.60775 1.28031 0
+-5.6122 1.78286 0
+-5.72977 2.49604 0
+-6.01081 3.19362 0
+-6.46274 3.61989 0
+-7.04876 3.59168 0
+-7.69435 3.08044 0
+-8.30118 2.23354 0
+-8.76707 1.31889 0
+-9.00913 0.612722 0
+-8.98505 0.278536 0
+-8.70622 0.292086 0
+-8.23732 0.451217 0
+-7.68093 0.473557 0
+-7.14994 0.142277 0
+-6.73527 -0.568314 0
+-6.47944 -1.45121 0
+-6.36556 -2.13656 0
+-6.32645 -2.24886 0
+-6.27152 -1.58497 0
+-6.12179 -0.233068 0
+-5.84006 1.42501 0
+-5.44445 2.83737 0
+-5.00016 3.48699 0
+-4.59344 3.09619 0
+-4.29843 1.74633 0
+-4.1502 -0.138096 0
+-4.13424 -1.93703 0
+-4.19641 -3.05842 0
+-4.26888 -3.15182 0
+-4.30078 -2.22869 0
+-4.28058 -0.642018 0
+-4.2409 1.06124 0
+-4.24334 2.34672 0
+-4.35011 2.87195 0
+-4.59493 2.575 0
+-4.96586 1.65265 0
+-5.40683 0.45227 0
+-5.8371 -0.669871 0
+-6.18041 -1.4657 0
+-6.39147 -1.84733 0
+-6.4694 -1.86491 0
+-6.45441 -1.63559 0
+-6.40988 -1.27112 0
+-6.39716 -0.842214 0
+-6.45314 -0.387957 0
+-6.57904 0.0489725 0
+-6.74352 0.392908 0
+-6.89727 0.53731 0
+-3.583 0.384569 0
+-1.86096 0.060633 0
+-1.86096 -0.0479281 0
+-1.77897 -0.015147 0
+-3.4372 -0.0219555 0
+-6.64731 -0.0254039 0
+-6.68449 -0.0112555 0
+-6.74509 0.0481474 0
+-6.82585 0.143379 0
+-6.91261 0.224993 0
+-6.98175 0.234043 0
+-7.00544 0.137779 0
+-6.96017 -0.0473084 0
+-6.83654 -0.255631 0
+-6.64736 -0.394753 0
+-6.43 -0.380345 0
+-6.23978 -0.171477 0
+-6.13448 0.209618 0
+-6.15518 0.685912 0
+-6.30985 1.15579 0
+-6.56594 1.52639 0
+-6.85618 1.73453 0
+-7.09749 1.75121 0
+-7.21738 1.57629 0
+-7.17925 1.2338 0
+-6.99763 0.772302 0
+-6.73698 0.266436 0
+-6.49218 -0.18472 0
+-6.35647 -0.463618 0
+-6.38841 -0.452261 0
+-6.58993 -0.0703008 0
+-6.90449 0.675561 0
+-7.23673 1.65657 0
+-7.48645 2.62851 0
+-7.58422 3.29145 0
+-7.51571 3.38856 0
+-7.32589 2.80766 0
+-7.10122 1.64139 0
+-6.93613 0.177414 0
+-6.89759 -1.183 0
+-7.00148 -2.05579 0
+-7.20932 -2.21202 0
+-7.44542 -1.67053 0
+-7.62731 -0.704557 0
+-7.69706 0.24798 0
+-7.64109 0.742457 0
+-7.49157 0.495738 0
+-7.31046 -0.502432 0
+-7.16345 -1.98131 0
+-7.09441 -3.48781 0
+-7.11013 -4.55321 0
+-7.18036 -4.86484 0
+-7.25134 -4.37854 0
+-7.2658 -3.32991 0
+-7.18065 -2.14074 0
+-6.97537 -1.25734 0
+-6.6496 -0.984031 0
+-6.21324 -1.37578 0
+-5.67607 -2.22744 0
+-5.04417 -3.15779 0
+-4.32978 -3.74984 0
+-3.5743 -3.68696 0
+-2.84142 -2.83378 0
+-1.84178 -1.33533 0
+-1.348 -0.54124 0
+-1.19499 -0.159488 0
+-1.28888 0.0983985 0
+-1.68344 0.431667 0
+-2.50789 1.08201 0
+-3.2469 2.26316 0
+-4.12427 2.98408 0
+-5.01224 3.21518 0
+-5.77828 3.02996 0
+-6.33145 2.5384 0
+-6.6345 1.90144 0
+-6.70538 1.32324 0
+-6.60728 1.00957 0
+-6.43005 1.10308 0
+-6.26907 1.62188 0
+-6.20623 2.4332 0
+-6.29547 3.28286 0
+-6.55372 3.87814 0
+-6.9575 3.99547 0
+-7.44559 3.56853 0
+-7.92854 2.71649 0
+-8.30566 1.69601 0
+-8.48784 0.794905 0
+-8.42171 0.212406 0
+-8.10766 -0.0219699 0
+-7.60453 -0.051905 0
+-7.01716 -0.113814 0
+-6.46792 -0.406964 0
+-6.0602 -0.976036 0
+-5.84606 -1.66535 0
+-5.81043 -2.17219 0
+-5.87861 -2.18068 0
+-5.94522 -1.51836 0
+-5.91434 -0.263944 0
+-5.73575 1.24641 0
+-5.42259 2.52422 0
+-5.04387 3.10826 0
+-4.69522 2.74755 0
+-4.46053 1.51163 0
+-4.37973 -0.218896 0
+-4.43569 -1.88107 0
+-4.56495 -2.92916 0
+-4.68737 -3.0294 0
+-4.74194 -2.17412 0
+-4.71345 -0.670506 0
+-4.63875 0.98654 0
+-4.58939 2.29737 0
+-4.6386 2.92116 0
+-4.82756 2.76397 0
+-5.14583 1.97092 0
+-5.53356 0.839993 0
+-5.9043 -0.299127 0
+-6.1785 -1.1915 0
+-6.31311 -1.71272 0
+-6.31557 -1.86245 0
+-6.2377 -1.71346 0
+-6.1531 -1.35572 0
+-6.12716 -0.868153 0
+-6.19233 -0.322793 0
+-6.33832 0.19497 0
+-6.52018 0.574764 0
+-6.67917 0.696304 0
+-3.48337 0.472225 0
+-1.81252 0.0787786 0
+-1.81252 -0.0558206 0
+-1.8234 -0.0147383 0
+-3.51522 -0.0201146 0
+-6.78267 -0.0201022 0
+-6.79554 0.00161944 0
+-6.82198 0.0745876 0
+-6.86521 0.186609 0
+-6.92244 0.282219 0
+-6.98307 0.294677 0
+-7.0299 0.184608 0
+-7.04394 -0.0332637 0
+-7.01221 -0.287365 0
+-6.93574 -0.471222 0
+-6.83415 -0.481939 0
+-6.74294 -0.26268 0
+-6.70329 0.16997 0
+-6.74732 0.729934 0
+-6.88366 1.29214 0
+-7.08915 1.73188 0
+-7.31134 1.95672 0
+-7.48315 1.92303 0
+-7.5453 1.63844 0
+-7.46836 1.15686 0
+-7.26619 0.570134 0
+-6.99485 -0.00490398 0
+-6.73575 -0.443819 0
+-6.56774 -0.631635 0
+-6.53774 -0.482261 0
+-6.64161 0.0335691 0
+-6.82392 0.85787 0
+-6.99808 1.83073 0
+-7.07941 2.70984 0
+-7.01799 3.23002 0
+-6.81856 3.18913 0
+-6.53976 2.52886 0
+-6.27267 1.3743 0
+-6.10637 0.0111137 0
+-6.09425 -1.19512 0
+-6.23442 -1.91562 0
+-6.47177 -1.97467 0
+-6.72079 -1.42151 0
+-6.89998 -0.525368 0
+-6.96391 0.311916 0
+-6.91977 0.698318 0
+-6.82205 0.398015 0
+-6.74886 -0.575624 0
+-6.77014 -1.96003 0
+-6.92009 -3.33786 0
+-7.18427 -4.28902 0
+-7.50576 -4.54335 0
+-7.80675 -4.07756 0
+-8.01604 -3.12062 0
+-8.091 -2.06578 0
+-8.02541 -1.32293 0
+-7.84184 -1.1676 0
+-7.57415 -1.64346 0
+-7.2498 -2.55179 0
+-6.88072 -3.52688 0
+-6.46552 -4.16504 0
+-5.99162 -4.16087 0
+-5.40428 -3.42111 0
+-4.55647 -2.18314 0
+-3.94908 -1.14863 0
+-3.71265 -0.39592 0
+-3.84605 0.231804 0
+-4.33511 0.920729 0
+-5.0757 1.82259 0
+-5.70551 2.89297 0
+-6.33248 3.61105 0
+-6.93009 3.81279 0
+-7.42036 3.52023 0
+-7.73928 2.85732 0
+-7.86167 2.02383 0
+-7.80405 1.26561 0
+-7.61534 0.820864 0
+-7.36226 0.850001 0
+-7.11466 1.37428 0
+-6.93369 2.25224 0
+-6.86329 3.21245 0
+-6.92384 3.93869 0
+-7.10759 4.17922 0
+-7.37644 3.83738 0
+-7.66476 3.00481 0
+-7.88995 1.9212 0
+-7.97131 0.876259 0
+-7.85365 0.0947469 0
+-7.52836 -0.347259 0
+-7.04307 -0.537196 0
+-6.49368 -0.663202 0
+-5.99814 -0.902507 0
+-5.65908 -1.3151 0
+-5.52869 -1.79574 0
+-5.5898 -2.11107 0
+-5.76183 -2.00865 0
+-5.93042 -1.34978 0
+-5.99029 -0.204068 0
+-5.88495 1.14107 0
+-5.62706 2.26633 0
+-5.29156 2.77276 0
+-4.98445 2.44044 0
+-4.80026 1.32744 0
+-4.78535 -0.233807 0
+-4.92159 -1.74483 0
+-5.13656 -2.71419 0
+-5.33556 -2.8304 0
+-5.44175 -2.06793 0
+-5.42764 -0.684618 0
+-5.32478 0.883684 0
+-5.20736 2.17994 0
+-5.15777 2.87157 0
+-5.2302 2.8364 0
+-5.42784 2.16856 0
+-5.7026 1.11475 0
+-5.97648 -0.0252541 0
+-6.17458 -0.993402 0
+-6.2553 -1.632 0
+-6.22489 -1.89286 0
+-6.13159 -1.80676 0
+-6.04274 -1.44458 0
+-6.01524 -0.895643 0
+-6.07264 -0.265393 0
+-6.198 0.32033 0
+-6.34482 0.721578 0
+-6.46008 0.811564 0
+-3.37046 0.521466 0
+-1.75048 0.0806027 0
+-1.75048 -0.0659314 0
+-1.89756 -0.0182118 0
+-3.66033 -0.0255238 0
+-7.06661 -0.0278676 0
+-7.05693 -0.00805888 0
+-7.04919 0.0668447 0
+-7.05069 0.188115 0
+-7.06853 0.300056 0
+-7.10552 0.331665 0
+-7.15751 0.236604 0
+-7.21379 0.0230099 0
+-7.26106 -0.240097 0
+-7.28971 -0.442571 0
+-7.29919 -0.472458 0
+-7.29974 -0.262122 0
+-7.30937 0.179591 0
+-7.34601 0.766583 0
+-7.41745 1.36358 0
+-7.51333 1.82776 0
+-7.60452 2.0479 0
+-7.65144 1.96995 0
+-7.61922 1.60622 0
+-7.49321 1.03085 0
+-7.28807 0.365001 0
+-7.04625 -0.246722 0
+-6.82524 -0.664836 0
+-6.67678 -0.780092 0
+-6.62515 -0.533894 0
+-6.65402 0.0624407 0
+-6.70955 0.913405 0
+-6.72022 1.8414 0
+-6.62615 2.61577 0
+-6.40587 3.00974 0
+-6.08882 2.87207 0
+-5.7479 2.18794 0
+-5.47448 1.10089 0
+-5.34505 -0.118319 0
+-5.39202 -1.14815 0
+-5.5905 -1.71714 0
+-5.86702 -1.69815 0
+-6.12767 -1.16086 0
+-6.29512 -0.35792 0
+-6.33944 0.356239 0
+-6.29006 0.648931 0
+-6.22345 0.331407 0
+-6.23231 -0.566764 0
+-6.38912 -1.80321 0
+-6.718 -3.00897 0
+-7.18505 -3.82198 0
+-7.7105 -4.0179 0
+-8.19751 -3.59054 0
+-8.56582 -2.7523 0
+-8.77683 -1.85478 0
+-8.84058 -1.25918 0
+-8.80332 -1.20487 0
+-8.7223 -1.72448 0
+-8.63964 -2.63445 0
+-8.56525 -3.60127 0
+-8.47242 -4.25786 0
+-8.30158 -4.33171 0
+-7.97055 -3.75215 0
+-7.44173 -2.71196 0
+-6.98497 -1.60539 0
+-6.783 -0.597893 0
+-6.88927 0.338082 0
+-7.26178 1.29323 0
+-7.75367 2.31449 0
+-8.1528 3.2921 0
+-8.4688 3.92705 0
+-8.71163 4.05561 0
+-8.86536 3.67396 0
+-8.91257 2.90454 0
+-8.85101 1.96227 0
+-8.69602 1.11062 0
+-8.47451 0.599356 0
+-8.21731 0.592801 0
+-7.95413 1.11109 0
+-7.71207 2.01018 0
+-7.51566 3.01604 0
+-7.38507 3.80811 0
+-7.33074 4.12489 0
+-7.34559 3.85223 0
+-7.39937 3.05859 0
+-7.44033 1.96217 0
+-7.40731 0.843232 0
+-7.25023 -0.0623327 0
+-6.95247 -0.64502 0
+-6.54515 -0.944517 0
+-6.10487 -1.10347 0
+-5.73222 -1.27516 0
+-5.51689 -1.53042 0
+-5.50281 -1.80982 0
+-5.66777 -1.94611 0
+-5.92784 -1.74858 0
+-6.16625 -1.11137 0
+-6.27657 -0.0937494 0
+-6.20314 1.06764 0
+-5.96272 2.0259 0
+-5.6381 2.44815 0
+-5.34603 2.14836 0
+-5.1919 1.17332 0
+-5.2294 -0.196304 0
+-5.44086 -1.53337 0
+-5.74585 -2.4092 0
+-6.03411 -2.54214 0
+-6.20918 -1.89286 0
+-6.22491 -0.668892 0
+-6.09979 0.758573 0
+-5.90427 1.98442 0
+-5.72796 2.69526 0
+-5.64224 2.75068 0
+-5.67386 2.20018 0
+-5.79933 1.24022 0
+-5.96061 0.136029 0
+-6.09364 -0.860373 0
+-6.1565 -1.56914 0
+-6.14505 -1.90431 0
+-6.08983 -1.86198 0
+-6.03726 -1.49715 0
+-6.02557 -0.907337 0
+-6.06698 -0.22398 0
+-6.14408 0.397433 0
+-6.22107 0.798564 0
+-6.26402 0.85452 0
+-3.25731 0.518663 0
+-1.68424 0.0641702 0
+-1.68424 -0.0770063 0
+-1.97214 -0.0235237 0
+-3.81608 -0.0348331 0
+-7.39058 -0.0434716 0
+-7.36599 -0.0326509 0
+-7.33266 0.033518 0
+-7.29853 0.153989 0
+-7.27679 0.278311 0
+-7.28115 0.336028 0
+-7.32031 0.275759 0
+-7.3938 0.0965073 0
+-7.49139 -0.142506 0
+-7.59599 -0.337977 0
+-7.68879 -0.379661 0
+-7.75503 -0.195882 0
+-7.78826 0.212824 0
+-7.79034 0.768663 0
+-7.76692 1.34016 0
+-7.72145 1.78229 0
+-7.65154 1.978 0
+-7.55053 1.86894 0
+-7.41343 1.46912 0
+-7.24389 0.861316 0
+-7.05783 0.178935 0
+-6.88105 -0.423499 0
+-6.74132 -0.804571 0
+-6.65617 -0.865239 0
+-6.62099 -0.569071 0
+-6.60406 0.0455043 0
+-6.55368 0.863026 0
+-6.41698 1.70471 0
+-6.16357 2.36237 0
+-5.80386 2.65003 0
+-5.39281 2.46102 0
+-5.01567 1.81081 0
+-4.76039 0.845609 0
+-4.68669 -0.192025 0
+-4.80305 -1.03179 0
+-5.06102 -1.45917 0
+-5.37072 -1.38846 0
+-5.63327 -0.898308 0
+-5.7784 -0.212786 0
+-5.79245 0.370294 0
+-5.72501 0.581485 0
+-5.67055 0.276951 0
+-5.73223 -0.505082 0
+-5.98252 -1.55292 0
+-6.43572 -2.55577 0
+-7.04196 -3.21574 0
+-7.70468 -3.35518 0
+-8.31492 -2.9803 0
+-8.78901 -2.27821 0
+-9.09526 -1.54854 0
+-9.25962 -1.09482 0
+-9.34903 -1.11546 0
+-9.44012 -1.63339 0
+-9.58602 -2.48856 0
+-9.79341 -3.39387 0
+-10.017 -4.03424 0
+-10.1729 -4.17581 0
+-10.1744 -3.7507 0
+-10.0034 -2.88292 0
+-9.79639 -1.81242 0
+-9.69044 -0.703845 0
+-9.74215 0.389789 0
+-9.91611 1.4672 0
+-10.1016 2.49996 0
+-10.1802 3.37071 0
+-10.1422 3.88903 0
+-10.0178 3.93121 0
+-9.83856 3.49475 0
+-9.63068 2.69665 0
+-9.41467 1.74627 0
+-9.2029 0.898848 0
+-8.99615 0.392607 0
+-8.7838 0.380452 0
+-8.54975 0.877042 0
+-8.28251 1.74295 0
+-7.98464 2.71817 0
+-7.67584 3.4993 0
+-7.38682 3.83587 0
+-7.14575 3.61116 0
+-6.96344 2.87627 0
+-6.82517 1.8239 0
+-6.69464 0.712695 0
+-6.52997 -0.227001 0
+-6.30616 -0.86883 0
+-6.03336 -1.21732 0
+-5.76086 -1.37598 0
+-5.56209 -1.47393 0
+-5.50502 -1.58749 0
+-5.61986 -1.69499 0
+-5.87887 -1.68709 0
+-6.19894 -1.42851 0
+-6.46807 -0.842234 0
+-6.58634 0.0245129 0
+-6.50494 0.986244 0
+-6.24767 1.76863 0
+-5.90515 2.10563 0
+-5.60302 1.84623 0
+-5.45566 1.02596 0
+-5.52361 -0.128356 0
+-5.79102 -1.26596 0
+-6.17192 -2.0283 0
+-6.54261 -2.17145 0
+-6.78737 -1.6481 0
+-6.83905 -0.617213 0
+-6.69869 0.618212 0
+-6.42821 1.71393 0
+-6.12167 2.38872 0
+-5.86854 2.49756 0
+-5.72388 2.05552 0
+-5.69593 1.21227 0
+-5.75344 0.193544 0
+-5.84681 -0.767007 0
+-5.93237 -1.48358 0
+-5.98886 -1.84782 0
+-6.0191 -1.83174 0
+-6.0389 -1.47735 0
+-6.06185 -0.884391 0
+-6.0889 -0.196927 0
+-6.10816 0.416699 0
+-6.10423 0.794635 0
+-6.07148 0.821766 0
+-3.13654 0.471459 0
+-1.61331 0.0382059 0
+-1.61331 -0.0842965 0
+-2.00512 -0.028138 0
+-3.89832 -0.0436579 0
+-7.5861 -0.0596877 0
+-7.55776 -0.0609913 0
+-7.51326 -0.0109759 0
+-7.45759 0.098311 0
+-7.405 0.22573 0
+-7.37549 0.306512 0
+-7.38775 0.288021 0
+-7.45155 0.160312 0
+-7.56233 -0.0317275 0
+-7.70016 -0.200148 0
+-7.8337 -0.246118 0
+-7.92865 -0.10094 0
+-7.95779 0.241972 0
+-7.90821 0.719078 0
+-7.78278 1.21473 0
+-7.59692 1.59643 0
+-7.37313 1.75421 0
+-7.13608 1.63189 0
+-6.90964 1.24267 0
+-6.71508 0.666754 0
+-6.56896 0.0328164 0
+-6.48012 -0.512342 0
+-6.44618 -0.838512 0
+-6.45004 -0.86138 0
+-6.45809 -0.561018 0
+-6.42372 0.0111358 0
+-6.29837 0.737673 0
+-6.0485 1.45484 0
+-5.67266 1.98653 0
+-5.21067 2.18804 0
+-4.73882 1.98917 0
+-4.35019 1.42218 0
+-4.12592 0.621339 0
+-4.10786 -0.210084 0
+-4.28225 -0.857405 0
+-4.58133 -1.16008 0
+-4.90456 -1.06523 0
+-5.15325 -0.649612 0
+-5.26678 -0.0992633 0
+-5.24632 0.349833 0
+-5.15638 0.491546 0
+-5.10217 0.222744 0
+-5.19078 -0.416472 0
+-5.49126 -1.25245 0
+-6.00892 -2.03811 0
+-6.6829 -2.54176 0
+-7.40755 -2.63053 0
+-8.06981 -2.31805 0
+-8.58841 -1.75961 0
+-8.9404 -1.19654 0
+-9.16509 -0.87012 0
+-9.34461 -0.935938 0
+-9.5689 -1.40911 0
+-9.89872 -2.15873 0
+-10.3401 -2.95247 0
+-10.8394 -3.53493 0
+-11.3022 -3.713 0
+-11.6348 -3.41811 0
+-11.7992 -2.71854 0
+-11.8452 -1.76643 0
+-11.8468 -0.702249 0
+-11.8416 0.384604 0
+-11.8104 1.43597 0
+-11.6933 2.3829 0
+-11.4399 3.11728 0
+-11.0614 3.51057 0
+-10.6115 3.48131 0
+-10.1556 3.0388 0
+-9.75029 2.29135 0
+-9.43062 1.42659 0
+-9.20189 0.670112 0
+-9.03815 0.228871 0
+-8.88953 0.231833 0
+-8.69819 0.6857 0
+-8.41876 1.46351 0
+-8.03578 2.3352 0
+-7.57079 3.03431 0
+-7.0752 3.34029 0
+-6.61142 3.14738 0
+-6.22975 2.4946 0
+-5.95109 1.54525 0
+-5.76312 0.524717 0
+-5.63163 -0.358486 0
+-5.52223 -0.978236 0
+-5.42167 -1.31787 0
+-5.34793 -1.44971 0
+-5.34256 -1.4793 0
+-5.44782 -1.48223 0
+-5.67885 -1.46396 0
+-6.00458 -1.36136 0
+-6.34817 -1.08493 0
+-6.60937 -0.581032 0
+-6.70104 0.116187 0
+-6.58499 0.870196 0
+-6.29229 1.47593 0
+-5.91834 1.73169 0
+-5.59273 1.52061 0
+-5.43427 0.867501 0
+-5.50818 -0.0544533 0
+-5.80167 -0.972463 0
+-6.22758 -1.60239 0
+-6.65468 -1.74435 0
+-6.9532 -1.34958 0
+-7.03776 -0.532661 0
+-6.89152 0.47198 0
+-6.56502 1.38742 0
+-6.15276 1.97645 0
+-5.75882 2.10363 0
+-5.46477 1.76146 0
+-5.31056 1.05806 0
+-5.29279 0.175777 0
+-5.37726 -0.682535 0
+-5.51819 -1.34265 0
+-5.67482 -1.69119 0
+-5.81871 -1.68785 0
+-5.93214 -1.36391 0
+-6.00325 -0.813287 0
+-6.02358 -0.176592 0
+-5.99084 0.383953 0
+-5.91484 0.718634 0
+-5.82177 0.7287 0
+-2.97986 0.401103 0
+-1.52483 0.0176097 0
+-1.52483 -0.0805093 0
+-1.95365 -0.0298351 0
+-3.81886 -0.0479631 0
+-7.47215 -0.0695475 0
+-7.45128 -0.0818568 0
+-7.41144 -0.0508191 0
+-7.35199 0.038863 0
+-7.28356 0.157298 0
+-7.22686 0.249811 0
+-7.2061 0.267266 0
+-7.23922 0.193434 0
+-7.3287 0.0577453 0
+-7.45669 -0.0721505 0
+-7.58706 -0.115755 0
+-7.67454 -0.013452 0
+-7.67844 0.245865 0
+-7.57497 0.615616 0
+-7.36418 1.00394 0
+-7.06958 1.30183 0
+-6.73194 1.41657 0
+-6.39977 1.29972 0
+-6.11906 0.961965 0
+-5.92427 0.471973 0
+-5.8315 -0.0599554 0
+-5.83482 -0.509027 0
+-5.90658 -0.766754 0
+-6.00117 -0.766784 0
+-6.06191 -0.500276 0
+-6.03152 -0.0192554 0
+-5.86597 0.572119 0
+-5.54906 1.13794 0
+-5.10299 1.54045 0
+-4.58933 1.67437 0
+-4.09745 1.49729 0
+-3.72153 1.04626 0
+-3.53286 0.432671 0
+-3.55683 -0.18612 0
+-3.76288 -0.651347 0
+-4.07214 -0.850829 0
+-4.38181 -0.755555 0
+-4.59961 -0.43181 0
+-4.6764 -0.0224778 0
+-4.625 0.298437 0
+-4.51745 0.383993 0
+-4.46039 0.165688 0
+-4.55691 -0.319952 0
+-4.86878 -0.940578 0
+-5.39371 -1.51318 0
+-6.06584 -1.86963 0
+-6.77905 -1.91732 0
+-7.42447 -1.67263 0
+-7.92852 -1.25557 0
+-8.27746 -0.847601 0
+-8.51967 -0.627914 0
+-8.745 -0.7106 0
+-9.04932 -1.10479 0
+-9.49711 -1.71094 0
+-10.0958 -2.35376 0
+-10.7912 -2.83955 0
+-11.4864 -3.01783 0
+-12.0794 -2.82511 0
+-12.5046 -2.2933 0
+-12.7522 -1.51888 0
+-12.8424 -0.612021 0
+-12.7911 0.333271 0
+-12.5932 1.23816 0
+-12.2329 2.02258 0
+-11.7114 2.59581 0
+-11.0718 2.87089 0
+-10.3904 2.7999 0
+-9.75364 2.4021 0
+-9.23373 1.77143 0
+-8.86935 1.06222 0
+-8.65526 0.456015 0
+-8.54245 0.116065 0
+-8.45106 0.140441 0
+-8.29359 0.528228 0
+-8.00235 1.17227 0
+-7.55196 1.88481 0
+-6.96852 2.45087 0
+-6.3214 2.69317 0
+-5.70038 2.52636 0
+-5.18656 1.98077 0
+-4.82837 1.18705 0
+-4.63178 0.328137 0
+-4.56765 -0.422623 0
+-4.59193 -0.953958 0
+-4.66906 -1.24073 0
+-4.78697 -1.3318 0
+-4.95644 -1.30983 0
+-5.19541 -1.24327 0
+-5.50634 -1.15303 0
+-5.85883 -1.00887 0
+-6.18774 -0.75602 0
+-6.41022 -0.358559 0
+-6.45597 0.161942 0
+-6.29853 0.712755 0
+-5.97368 1.15108 0
+-5.57571 1.33372 0
+-5.23059 1.1755 0
+-5.05468 0.691591 0
+-5.11411 0.00497614 0
+-5.40013 -0.686445 0
+-5.83008 -1.17244 0
+-6.2741 -1.30032 0
+-6.59789 -1.02579 0
+-6.70513 -0.425426 0
+-6.56457 0.331424 0
+-6.21422 1.03707 0
+-5.74396 1.50619 0
+-5.26492 1.62459 0
+-4.87705 1.37359 0
+-4.64524 0.826249 0
+-4.58961 0.120147 0
+-4.68994 -0.582205 0
+-4.89939 -1.1332 0
+-5.16046 -1.43012 0
+-5.41727 -1.43104 0
+-5.6229 -1.15829 0
+-5.74403 -0.692154 0
+-5.7656 -0.155023 0
+-5.69552 0.313872 0
+-5.56725 0.590363 0
+-5.43583 0.597286 0
+-2.74941 0.328673 0
+-1.39841 0.0149196 0
+-1.39841 -0.0588115 0
+-1.78824 -0.027481 0
+-3.51451 -0.0454404 0
+-6.91439 -0.068654 0
+-6.90874 -0.0875056 0
+-6.88596 -0.0735984 0
+-6.83897 -0.00812038 0
+-6.77163 0.0899517 0
+-6.70065 0.178838 0
+-6.6508 0.217411 0
+-6.64469 0.18733 0
+-6.69153 0.104583 0
+-6.77929 0.0156121 0
+-6.87439 -0.02066 0
+-6.92998 0.0421429 0
+-6.90053 0.216408 0
+-6.7569 0.471987 0
+-6.49669 0.743732 0
+-6.14652 0.951657 0
+-5.75612 1.02617 0
+-5.38646 0.93006 0
+-5.09532 0.670818 0
+-4.92362 0.300273 0
+-4.88564 -0.0979304 0
+-4.96511 -0.429555 0
+-5.11808 -0.613792 0
+-5.28155 -0.60331 0
+-5.38615 -0.395679 0
+-5.37084 -0.034559 0
+-5.1978 0.39908 0
+-4.86418 0.804312 0
+-4.40711 1.08338 0
+-3.89883 1.16609 0
+-3.43103 1.0295 0
+-3.0914 0.706629 0
+-2.93881 0.280081 0
+-2.98532 -0.139608 0
+-3.1914 -0.445264 0
+-3.47707 -0.56516 0
+-3.74672 -0.48591 0
+-3.92041 -0.258118 0
+-3.96136 0.0184686 0
+-3.88962 0.226701 0
+-3.77649 0.270859 0
+-3.7205 0.109708 0
+-3.81295 -0.227507 0
+-4.10486 -0.648671 0
+-4.58825 -1.02979 0
+-5.19868 -1.2592 0
+-5.83806 -1.27794 0
+-6.40938 -1.10131 0
+-6.85084 -0.814108 0
+-7.15703 -0.541407 0
+-7.37972 -0.405225 0
+-7.60802 -0.482306 0
+-7.93529 -0.777507 0
+-8.4247 -1.22154 0
+-9.08533 -1.69314 0
+-9.86745 -2.05742 0
+-10.6785 -2.20678 0
+-11.4138 -2.08983 0
+-11.9887 -1.71834 0
+-12.3564 -1.15127 0
+-12.5008 -0.467594 0
+-12.4212 0.253714 0
+-12.1224 0.939367 0
+-11.6186 1.51875 0
+-10.9462 1.92344 0
+-10.1728 2.09746 0
+-9.38894 2.01604 0
+-8.68839 1.70155 0
+-8.1447 1.22774 0
+-7.79167 0.709191 0
+-7.61302 0.277366 0
+-7.54478 0.0478311 0
+-7.49139 0.0870467 0
+-7.35231 0.389155 0
+-7.05211 0.872073 0
+-6.56424 1.39694 0
+-5.92032 1.80694 0
+-5.20102 1.97387 0
+-4.51138 1.83673 0
+-3.94928 1.41866 0
+-3.57833 0.816103 0
+-3.41475 0.164562 0
+-3.43168 -0.405694 0
+-3.57758 -0.808058 0
+-3.79993 -1.01839 0
+-4.06331 -1.06842 0
+-4.3543 -1.01884 0
+-4.67221 -0.925351 0
+-5.01166 -0.81358 0
+-5.34717 -0.673361 0
+-5.62914 -0.474045 0
+-5.79519 -0.192513 0
+-5.79335 0.160106 0
+-5.60766 0.527068 0
+-5.27419 0.8176 0
+-4.87877 0.938304 0
+-4.53495 0.831678 0
+-4.34865 0.505292 0
+-4.38223 0.0385495 0
+-4.63132 -0.437351 0
+-5.02367 -0.780093 0
+-5.44093 -0.883058 0
+-5.75596 -0.710762 0
+-5.87178 -0.309607 0
+-5.74888 0.208524 0
+-5.41319 0.701383 0
+-4.94444 1.03744 0
+-4.45062 1.13076 0
+-4.03765 0.96063 0
+-3.78367 0.572264 0
+-3.72409 0.0605742 0
+-3.84967 -0.456631 0
+-4.11507 -0.867798 0
+-4.45338 -1.09181 0
+-4.7914 -1.09302 0
+-5.06327 -0.886414 0
+-5.2221 -0.533329 0
+-5.24914 -0.127975 0
+-5.15955 0.224282 0
+-5.00223 0.433036 0
+-4.8512 0.446257 0
+-2.41759 0.263064 0
+-1.21778 0.0317091 0
+-1.21778 -0.0175156 0
+-1.50485 -0.0214572 0
+-2.97252 -0.036362 0
+-5.87823 -0.0567264 0
+-5.88956 -0.0761796 0
+-5.88903 -0.074124 0
+-5.86436 -0.0327901 0
+-5.81205 0.0376448 0
+-5.74221 0.10899 0
+-5.67598 0.151186 0
+-5.63668 0.148034 0
+-5.63816 0.106062 0
+-5.6756 0.0530542 0
+-5.72312 0.0268554 0
+-5.74002 0.0590426 0
+-5.68396 0.160349 0
+-5.52603 0.314063 0
+-5.26224 0.479935 0
+-4.91739 0.606809 0
+-4.54042 0.649201 0
+-4.19258 0.582223 0
+-3.93204 0.410275 0
+-3.79894 0.167174 0
+-3.80474 -0.0921336 0
+-3.92844 -0.305851 0
+-4.12073 -0.421501 0
+-4.31468 -0.409366 0
+-4.44046 -0.26989 0
+-4.44121 -0.0338118 0
+-4.28679 0.244659 0
+-3.98263 0.500157 0
+-3.57084 0.671591 0
+-3.12216 0.717413 0
+-2.71961 0.626947 0
+-2.43729 0.424308 0
+-2.32012 0.162905 0
+-2.3709 -0.0888229 0
+-2.54934 -0.266825 0
+-2.78407 -0.330432 0
+-2.9949 -0.275072 0
+-3.11876 -0.134259 0
+-3.13081 0.0305149 0
+-3.05347 0.149364 0
+-2.94964 0.167024 0
+-2.90169 0.0617595 0
+-2.98303 -0.146165 0
+-3.23183 -0.399868 0
+-3.63687 -0.624752 0
+-4.14112 -0.754951 0
+-4.66184 -0.757219 0
+-5.11986 -0.643283 0
+-5.46763 -0.46634 0
+-5.70599 -0.303044 0
+-5.88389 -0.227324 0
+-6.0811 -0.285099 0
+-6.38013 -0.478479 0
+-6.83713 -0.764538 0
+-7.46164 -1.06863 0
+-8.21186 -1.3072 0
+-9.00653 -1.41212 0
+-9.7483 -1.34806 0
+-10.349 -1.11762 0
+-10.7462 -0.754123 0
+-10.906 -0.307744 0
+-10.8188 0.166478 0
+-10.4942 0.614777 0
+-9.96203 0.986587 0
+-9.27561 1.23703 0
+-8.51161 1.33346 0
+-7.76071 1.26513 0
+-7.11028 1.05113 0
+-6.62439 0.74185 0
+-6.32713 0.411923 0
+-6.19456 0.144798 0
+-6.15883 0.012107 0
+-6.12484 0.0530534 0
+-5.99611 0.260425 0
+-5.70297 0.578938 0
+-5.22423 0.918198 0
+-4.59491 1.17762 0
+-3.89692 1.27589 0
+-3.23544 1.17524 0
+-2.70876 0.891987 0
+-2.38219 0.489525 0
+-2.27433 0.0567017 0
+-2.35952 -0.320496 0
+-2.58381 -0.583769 0
+-2.88695 -0.71525 0
+-3.22108 -0.734294 0
+-3.55879 -0.681119 0
+-3.88877 -0.595374 0
+-4.20306 -0.499287 0
+-4.48404 -0.392388 0
+-4.69882 -0.259259 0
+-4.80549 -0.0858504 0
+-4.76927 0.12389 0
+-4.58199 0.339791 0
+-4.27519 0.510795 0
+-3.91946 0.582573 0
+-3.60799 0.520212 0
+-3.42891 0.326209 0
+-3.43603 0.0456711 0
+-3.62899 -0.244388 0
+-3.95058 -0.458505 0
+-4.30297 -0.530667 0
+-4.57747 -0.436264 0
+-4.68717 -0.199906 0
+-4.59156 0.112914 0
+-4.30614 0.415962 0
+-3.89565 0.62696 0
+-3.45445 0.689563 0
+-3.08072 0.586899 0
+-2.85226 0.343799 0
+-2.80989 0.0182117 0
+-2.95166 -0.314863 0
+-3.23734 -0.582115 0
+-3.60055 -0.728605 0
+-3.96444 -0.729133 0
+-4.258 -0.592858 0
+-4.43061 -0.360715 0
+-4.46299 -0.0955943 0
+-4.37235 0.133642 0
+-4.21046 0.271148 0
+-4.05444 0.290237 0
+-1.98669 0.198941 0
+-0.984771 0.0553206 0
+-0.984771 0.0350138 0
+-1.13085 -0.0135344 0
+-2.24382 -0.0235066 0
+-4.45799 -0.0377148 0
+-4.48153 -0.0526453 0
+-4.4997 -0.0559536 0
+-4.49795 -0.0345411 0
+-4.46754 0.0072348 0
+-4.4119 0.053352 0
+-4.34627 0.085558 0
+-4.29092 0.0926862 0
+-4.26106 0.0761968 0
+-4.2579 0.0499005 0
+-4.26517 0.0341267 0
+-4.25293 0.0467986 0
+-4.18776 0.0951848 0
+-4.04549 0.171791 0
+-3.82155 0.255989 0
+-3.53534 0.3206 0
+-3.22707 0.340936 0
+-2.94801 0.303165 0
+-2.74707 0.209336 0
+-2.65754 0.0776387 0
+-2.68757 -0.0621071 0
+-2.81705 -0.176365 0
+-3.0017 -0.236858 0
+-3.18306 -0.228001 0
+-3.30207 -0.150882 0
+-3.31283 -0.023049 0
+-3.1938 0.125625 0
+-2.95366 0.260022 0
+-2.63033 0.348258 0
+-2.28258 0.369665 0
+-1.97592 0.320287 0
+-1.76585 0.214239 0
+-1.68314 0.0801972 0
+-1.72556 -0.0464051 0
+-1.85894 -0.133446 0
+-2.02781 -0.161566 0
+-2.17278 -0.1301 0
+-2.2496 -0.0574325 0
+-2.24375 0.0246631 0
+-2.17555 0.0811593 0
+-2.09378 0.0852583 0
+-2.05952 0.0275016 0
+-2.12519 -0.0804942 0
+-2.31589 -0.209171 0
+-2.61991 -0.320732 0
+-2.9924 -0.382462 0
+-3.37098 -0.378637 0
+-3.69779 -0.316477 0
+-3.94005 -0.224072 0
+-4.10208 -0.141022 0
+-4.22431 -0.105091 0
+-4.36998 -0.139431 0
+-4.60378 -0.244672 0
+-4.96995 -0.398371 0
+-5.4768 -0.561777 0
+-6.09266 -0.691342 0
+-6.75381 -0.750962 0
+-7.38097 -0.720905 0
+-7.89772 -0.600873 0
+-8.24465 -0.407189 0
+-8.3858 -0.166594 0
+-8.30924 0.0899163 0
+-8.02567 0.331204 0
+-7.56746 0.528383 0
+-6.98759 0.657157 0
+-6.35552 0.701389 0
+-5.74789 0.657507 0
+-5.2346 0.537837 0
+-4.86355 0.370801 0
+-4.64844 0.196813 0
+-4.56367 0.0600259 0
+-4.54902 -0.00254469 0
+-4.52426 0.0282975 0
+-4.41073 0.146888 0
+-4.15402 0.322226 0
+-3.74099 0.505174 0
+-3.20521 0.641834 0
+-2.61852 0.689199 0
+-2.07119 0.627916 0
+-1.64696 0.467756 0
+-1.40124 0.243812 0
+-1.34944 0.00489946 0
+-1.46829 -0.20165 0
+-1.70859 -0.343463 0
+-2.01359 -0.410252 0
+-2.33542 -0.412463 0
+-2.64376 -0.372778 0
+-2.92455 -0.314588 0
+-3.1713 -0.25254 0
+-3.37475 -0.188937 0
+-3.51697 -0.117036 0
+-3.57364 -0.0291828 0
+-3.52412 0.0743678 0
+-3.36485 0.180521 0
+-3.11925 0.265203 0
+-2.83836 0.301675 0
+-2.59 0.271852 0
+-2.4395 0.175709 0
+-2.42837 0.0345429 0
+-2.55902 -0.113741 0
+-2.79152 -0.226001 0
+-3.05431 -0.26788 0
+-3.26531 -0.225257 0
+-3.35634 -0.108883 0
+-3.29251 0.0490868 0
+-3.08137 0.204822 0
+-2.76971 0.315296 0
+-2.43002 0.349875 0
+-2.14109 0.297969 0
+-1.96828 0.170995 0
+-1.94867 -0.00140376 0
+-2.08407 -0.179462 0
+-2.34286 -0.323324 0
+-2.66899 -0.402474 0
+-2.99557 -0.402557 0
+-3.25998 -0.328448 0
+-3.41773 -0.202957 0
+-3.45226 -0.0610655 0
+-3.37835 0.059728 0
+-3.23858 0.131381 0
+-3.09533 0.146982 0
+-1.49629 0.127953 0
+-0.726748 0.0653424 0
+-0.726748 0.0783319 0
+-0.722239 -0.00617215 0
+-1.43852 -0.0110644 0
+-2.87005 -0.0182537 0
+-2.89639 -0.026301 0
+-2.9226 -0.029744 0
+-2.93556 -0.0215787 0
+-2.92516 -0.00316453 0
+-2.89039 0.0185804 0
+-2.84022 0.035388 0
+-2.78929 0.0417512 0
+-2.75054 0.0374477 0
+-2.72825 0.0276172 0
+-2.7146 0.02047 0
+-2.69142 0.0236241 0
+-2.63685 0.0406171 0
+-2.5341 0.0690397 0
+-2.37912 0.101011 0
+-2.18428 0.125752 0
+-1.9766 0.133259 0
+-1.79122 0.117785 0
+-1.66188 0.0799927 0
+-1.61137 0.0271299 0
+-1.64469 -0.0287875 0
+-1.74682 -0.07423 0
+-1.88583 -0.0978512 0
+-2.02029 -0.0935354 0
+-2.10918 -0.0619903 0
+-2.12166 -0.0105695 0
+-2.04458 0.0485407 0
+-1.88586 0.101301 0
+-1.67287 0.135272 0
+-1.44594 0.142735 0
+-1.24835 0.122693 0
+-1.11529 0.0811812 0
+-1.06476 0.0296685 0
+-1.09306 -0.0181075 0
+-1.17645 -0.0500546 0
+-1.27876 -0.0592613 0
+-1.36278 -0.046074 0
+-1.40221 -0.0180015 0
+-1.39018 0.0126297 0
+-1.34164 0.0326184 0
+-1.28859 0.0322053 0
+-1.26946 0.00837738 0
+-1.31604 -0.0339125 0
+-1.44212 -0.0830947 0
+-1.63812 -0.124735 0
+-1.87398 -0.146593 0
+-2.10953 -0.143088 0
+-2.30854 -0.11747 0
+-2.45171 -0.0809052 0
+-2.54391 -0.0488189 0
+-2.61325 -0.035756 0
+-2.70217 -0.0505115 0
+-2.8537 -0.0931407 0
+-3.09728 -0.154788 0
+-3.43876 -0.220291 0
+-3.85753 -0.272578 0
+-4.31114 -0.297352 0
+-4.7455 -0.286542 0
+-5.10675 -0.239623 0
+-5.35118 -0.162763 0
+-5.45113 -0.0666356 0
+-5.39719 0.0359738 0
+-5.19801 0.132026 0
+-4.87917 0.209537 0
+-4.48079 0.258778 0
+-4.05314 0.273735 0
+-3.6493 0.25367 0
+-3.31566 0.204198 0
+-3.08201 0.13715 0
+-2.95403 0.0688329 0
+-2.9107 0.0167006 0
+-2.90832 -0.00492983 0
+-2.89099 0.0109667 0
+-2.80556 0.0614565 0
+-2.61693 0.133598 0
+-2.31917 0.207417 0
+-1.93863 0.261296 0
+-1.52764 0.278205 0
+-1.15048 0.250756 0
+-0.86605 0.183329 0
+-0.712747 0.0905092 0
+-0.700245 -0.00760211 0
+-0.810353 -0.0915422 0
+-1.00583 -0.147982 0
+-1.24339 -0.17269 0
+-1.48578 -0.170081 0
+-1.70872 -0.149834 0
+-1.9011 -0.122206 0
+-2.0596 -0.0940406 0
+-2.18148 -0.0670546 0
+-2.25962 -0.0388962 0
+-2.28255 -0.00625167 0
+-2.23978 0.0315918 0
+-2.1298 0.0705457 0
+-1.9667 0.102103 0
+-1.78132 0.116294 0
+-1.61543 0.105962 0
+-1.51022 0.0704956 0
+-1.49302 0.0173399 0
+-1.56724 -0.0395221 0
+-1.70952 -0.0837146 0
+-1.87562 -0.101782 0
+-2.01318 -0.0876927 0
+-2.0772 -0.0448691 0
+-2.04297 0.0148618 0
+-1.91295 0.0747946 0
+-1.71574 0.118091 0
+-1.49822 0.132353 0
+-1.31307 0.112815 0
+-1.20546 0.0633921 0
+-1.2023 -0.00456648 0
+-1.30642 -0.0753398 0
+-1.4969 -0.132845 0
+-1.73481 -0.164565 0
+-1.97283 -0.164537 0
+-2.16649 -0.134785 0
+-2.28456 -0.0848925 0
+-2.31601 -0.0296077 0
+-2.2716 0.0153102 0
+-2.17897 0.0387487 0
+-2.07436 0.0423758 0
+-1.00837 0.0561966 0
+-0.486587 0.0493434 0
+-0.486587 0.0861394 0
+-0.352138 -0.00145396 0
+-0.703438 -0.00279471 0
+-1.40867 -0.0047655 0
+-1.42791 -0.00706629 0
+-1.44925 -0.0084005 0
+-1.46412 -0.00670684 0
+-1.46504 -0.00224857 0
+-1.44975 0.00329369 0
+-1.42223 0.00786572 0
+-1.3905 0.0100224 0
+-1.36259 0.00954353 0
+-1.34246 0.00748612 0
+-1.32768 0.00568526 0
+-1.30998 0.00592479 0
+-1.27849 0.0091272 0
+-1.22434 0.0148953 0
+-1.14491 0.0215804 0
+-1.046 0.0268351 0
+-0.94117 0.0284326 0
+-0.848444 0.0250596 0
+-0.785269 0.0168176 0
+-0.763418 0.00527899 0
+-0.785291 -0.00691416 0
+-0.842741 -0.0167801 0
+-0.918763 -0.0218287 0
+-0.991555 -0.0207434 0
+-1.03982 -0.0137291 0
+-1.04793 -0.00245445 0
+-1.00976 0.010374 0
+-0.930155 0.0216913 0
+-0.823722 0.02884 0
+-0.711225 0.0302375 0
+-0.614311 0.025779 0
+-0.549988 0.0168582 0
+-0.526304 0.00598469 0
+-0.540492 -0.00391946 0
+-0.580193 -0.0103536 0
+-0.627488 -0.0119663 0
+-0.664607 -0.00895464 0
+-0.67961 -0.00299808 0
+-0.670252 0.00327166 0
+-0.644749 0.00711489 0
+-0.619123 0.00657961 0
+-0.611907 0.00116123 0
+-0.637835 -0.00798476 0
+-0.702569 -0.0183597 0
+-0.800383 -0.0269218 0
+-0.915831 -0.0311446 0
+-1.02898 -0.0299426 0
+-1.12234 -0.0241055 0
+-1.18716 -0.0160822 0
+-1.22679 -0.00918916 0
+-1.25603 -0.00651837 0
+-1.29663 -0.00991131 0
+-1.37044 -0.0193363 0
+-1.49236 -0.0328622 0
+-1.66544 -0.0472158 0
+-1.8793 -0.0587158 0
+-2.11239 -0.0642631 0
+-2.33685 -0.0620797 0
+-2.52447 -0.0520059 0
+-2.65188 -0.0353506 0
+-2.70407 -0.0144496 0
+-2.67594 0.00784794 0
+-2.57253 0.0286155 0
+-2.40818 0.0451832 0
+-2.20484 0.0554377 0
+-1.98924 0.0581441 0
+-1.78884 0.0532611 0
+-1.62677 0.042135 0
+-1.51706 0.0274363 0
+-1.46098 0.0127571 0
+-1.44616 0.0018803 0
+-1.44894 -0.00214954 0
+-1.44006 0.00208355 0
+-1.39241 0.0138074 0
+-1.28889 0.0300753 0
+-1.12791 0.0464367 0
+-0.924741 0.058129 0
+-0.707981 0.0614452 0
+-0.512062 0.0548369 0
+-0.368104 0.0393714 0
+-0.295974 0.0183784 0
+-0.29998 -0.00359587 0
+-0.369356 -0.0221658 0
+-0.482998 -0.0343405 0
+-0.616491 -0.0391976 0
+-0.748778 -0.037794 0
+-0.866196 -0.0324155 0
+-0.962886 -0.0255161 0
+-1.03813 -0.0187932 0
+-1.09243 -0.0127566 0
+-1.12441 -0.00691588 0
+-1.13022 -0.000446616 0
+-1.10563 0.00700767 0
+-1.04988 0.0147973 0
+-0.969057 0.021276 0
+-0.877141 0.0243782 0
+-0.793697 0.0225181 0
+-0.738614 0.0154123 0
+-0.725734 0.00445994 0
+-0.757743 -0.0075129 0
+-0.824374 -0.0170836 0
+-0.90481 -0.0213453 0
+-0.973617 -0.0188864 0
+-1.00821 -0.010273 0
+-0.995464 0.00211288 0
+-0.935446 0.0147771 0
+-0.841462 0.0241059 0
+-0.736465 0.0273558 0
+-0.647028 0.0233783 0
+-0.596534 0.0128986 0
+-0.599397 -0.00170394 0
+-0.657703 -0.0170333 0
+-0.760996 -0.0295517 0
+-0.889092 -0.03647 0
+-1.01718 -0.0364499 0
+-1.122 -0.0299688 0
+-1.18763 -0.0192622 0
+-1.2094 -0.00783376 0
+-1.19448 0.000386338 0
+-1.15794 0.00220954 0
+-1.11369 -0.00187079 0
+-0.57267 0.00868778 0
+-0.291003 0.0180493 0
+-0.291003 0.0473118 0
+-0.0933262 -0.00145396 0
+-0.186733 -0.00279471 0
+-0.37513 -0.0047655 0
+-0.382197 -0.00706629 0
+-0.390597 -0.0084005 0
+-0.397304 -0.00670684 0
+-0.399552 -0.00224857 0
+-0.396259 0.00329369 0
+-0.388393 0.00786572 0
+-0.378371 0.0100224 0
+-0.368827 0.00954353 0
+-0.361341 0.00748612 0
+-0.355656 0.00568526 0
+-0.349731 0.00592479 0
+-0.340604 0.0091272 0
+-0.325708 0.0148953 0
+-0.304128 0.0215804 0
+-0.277293 0.0268351 0
+-0.24886 0.0284326 0
+-0.2238 0.0250596 0
+-0.206983 0.0168176 0
+-0.201704 0.00527899 0
+-0.208618 -0.00691416 0
+-0.225398 -0.0167801 0
+-0.247227 -0.0218287 0
+-0.26797 -0.0207434 0
+-0.281699 -0.0137291 0
+-0.284154 -0.00245445 0
+-0.27378 0.010374 0
+-0.252088 0.0216913 0
+-0.223248 0.02884 0
+-0.193011 0.0302375 0
+-0.167232 0.025779 0
+-0.150374 0.0168582 0
+-0.144389 0.00598469 0
+-0.148308 -0.00391946 0
+-0.158662 -0.0103536 0
+-0.170628 -0.0119663 0
+-0.179583 -0.00895464 0
+-0.182581 -0.00299808 0
+-0.179309 0.00327166 0
+-0.172194 0.00711489 0
+-0.165615 0.00657961 0
+-0.164453 0.00116123 0
+-0.172438 -0.00798476 0
+-0.190798 -0.0183597 0
+-0.21772 -0.0269218 0
+-0.248864 -0.0311446 0
+-0.278807 -0.0299426 0
+-0.302912 -0.0241055 0
+-0.318995 -0.0160822 0
+-0.328184 -0.00918916 0
+-0.334702 -0.00651837 0
+-0.344613 -0.00991131 0
+-0.36395 -0.0193363 0
+-0.396812 -0.0328622 0
+-0.444028 -0.0472158 0
+-0.502743 -0.0587158 0
+-0.567006 -0.0642631 0
+-0.629086 -0.0620797 0
+-0.681092 -0.0520059 0
+-0.716443 -0.0353506 0
+-0.730892 -0.0144496 0
+-0.723044 0.00784794 0
+-0.694429 0.0286155 0
+-0.649245 0.0451832 0
+-0.593808 0.0554377 0
+-0.535664 0.0581441 0
+-0.482402 0.0532611 0
+-0.440267 0.042135 0
+-0.412831 0.0274363 0
+-0.400074 0.0127571 0
+-0.398194 0.0018803 0
+-0.400343 -0.00214954 0
+-0.39826 0.00208355 0
+-0.384452 0.0138074 0
+-0.354377 0.0300753 0
+-0.30794 0.0464367 0
+-0.249811 0.058129 0
+-0.188366 0.0614452 0
+-0.133529 0.0548369 0
+-0.0941577 0.0393714 0
+-0.0757793 0.0183784 0
+-0.0793752 -0.00359587 0
+-0.101541 -0.0221658 0
+-0.135881 -0.0343405 0
+-0.175079 -0.0391976 0
+-0.212873 -0.037794 0
+-0.245288 -0.0324155 0
+-0.270805 -0.0255161 0
+-0.289598 -0.0187932 0
+-0.302354 -0.0127566 0
+-0.30927 -0.00691588 0
+-0.309717 -0.000446616 0
+-0.302709 0.00700767 0
+-0.287912 0.0147973 0
+-0.266636 0.021276 0
+-0.242257 0.0243782 0
+-0.219739 0.0225181 0
+-0.204327 0.0154123 0
+-0.199867 0.00445994 0
+-0.20738 -0.0075129 0
+-0.224464 -0.0170836 0
+-0.245809 -0.0213453 0
+-0.264695 -0.0188864 0
+-0.274968 -0.010273 0
+-0.272855 0.00211288 0
+-0.258078 0.0147771 0
+-0.233972 0.0241059 0
+-0.206616 0.0273558 0
+-0.183238 0.0233783 0
+-0.170339 0.0128986 0
+-0.172043 -0.00170394 0
+-0.189077 -0.0170333 0
+-0.218628 -0.0295517 0
+-0.255098 -0.03647 0
+-0.291548 -0.0364499 0
+-0.321517 -0.0299688 0
+-0.340779 -0.0192622 0
+-0.348613 -0.00783376 0
+-0.348227 0.000386338 0
+-0.346017 0.00220954 0
+-0.347888 -0.00187079 0
+-0.206719 0.00868778 0
+-0.121664 0.0180493 0
+-0.121664 0.0473118 0
+-0.108204 -0.00637982 0
+-0.211234 -0.0122329 0
+-0.412405 -0.0220085 0
+-0.375223 -0.0371821 0
+-0.324267 -0.0509567 0
+-0.26697 -0.0572964 0
+-0.212371 -0.0545988 0
+-0.167558 -0.0448132 0
+-0.13579 -0.0317677 0
+-0.116565 -0.0192248 0
+-0.107233 -0.00933188 0
+-0.105257 -0.00197628 0
+-0.110065 0.00480823 0
+-0.123703 0.0136382 0
+-0.150026 0.0263232 0
+-0.192797 0.0427704 0
+-0.253495 0.0606978 0
+-0.329755 0.0762601 0
+-0.415083 0.0853286 0
+-0.5 0.0849171 0
+-0.574226 0.074226 0
+-0.629177 0.0549511 0
+-0.659983 0.0308056 0
+-0.666465 0.00648226 0
+-0.652886 -0.0135785 0
+-0.626645 -0.0262415 0
+-0.596379 -0.0302659 0
+-0.570051 -0.0263281 0
+-0.553476 -0.0165746 0
+-0.549555 -0.00392153 0
+-0.55822 0.0086654 0
+-0.576959 0.018739 0
+-0.601669 0.0247098 0
+-0.627628 0.0259592 0
+-0.650397 0.022769 0
+-0.666518 0.0161214 0
+-0.67394 0.00742226 0
+-0.672138 -0.00180293 0
+-0.661933 -0.0102043 0
+-0.64507 -0.0168636 0
+-0.623597 -0.0214728 0
+-0.599215 -0.0243815 0
+-0.572764 -0.0264513 0
+-0.544075 -0.028689 0
+-0.512342 -0.0317328 0
+-0.47693 -0.0354118 0
+-0.438306 -0.0386241 0
+-0.39872 -0.039586 0
+-0.362382 -0.036338 0
+-0.335003 -0.0273787 0
+-0.322714 -0.0122895 0
+-0.330534 0.00782071 0
+-0.360773 0.0302388 0
+-0.411831 0.0510577 0
+-0.477883 0.0660527 0
+-0.549707 0.0718232 0
+-0.61657 0.0668634 0
+-0.668756 0.0521857 0
+-0.699982 0.0312259 0
+-0.708963 0.00898093 0
+-0.699558 -0.00940462 0
+-0.679386 -0.0201717 0
+-0.657289 -0.0220976 0
+-0.640419 -0.0168696 0
+-0.631875 -0.00854426 0
+-0.629615 -0.00226007 0
+-0.627012 -0.00260273 0
+-0.614907 -0.012105 0
+-0.584611 -0.0302963 0
+-0.53105 -0.053561 0
+-0.455189 -0.0758601 0
+-0.365004 -0.0901856 0
+-0.274549 -0.0904549 0
+-0.201159 -0.0733895 0
+-0.161335 -0.0398246 0
+-0.166361 0.00502623 0
+-0.218916 0.0525554 0
+-0.311731 0.0928144 0
+-0.428818 0.117087 0
+-0.549045 0.120227 0
+-0.651094 0.102049 0
+-0.718447 0.0673528 0
+-0.74302 0.0245731 0
+-0.726444 -0.0165755 0
+-0.67863 -0.0478145 0
+-0.614105 -0.0645251 0
+-0.547398 -0.0667066 0
+-0.489026 -0.0583723 0
+-0.443334 -0.0456924 0
+-0.408736 -0.034598 0
+-0.380056 -0.0286791 0
+-0.352005 -0.028051 0
+-0.322499 -0.0295061 0
+-0.294649 -0.0278503 0
+-0.276672 -0.0179766 0
+-0.27966 0.00298732 0
+-0.313823 0.0341638 0
+-0.384408 0.070585 0
+-0.488624 0.104215 0
+-0.614708 0.126085 0
+-0.743621 0.128913 0
+-0.853051 0.10943 0
+-0.922704 0.0696531 0
+-0.93938 0.0166761 0
+-0.900369 -0.0390112 0
+-0.814143 -0.0862258 0
+-0.698073 -0.11607 0
+-0.573753 -0.12432 0
+-0.461307 -0.112446 0
+-0.374428 -0.0868784 0
+-0.317679 -0.0567487 0
+-0.286807 -0.0308722 0
+-0.271808 -0.0149988 0
+-0.261524 -0.0102846 0
+-0.248038 -0.0134853 0
+-0.229293 -0.0187454 0
+-0.209019 -0.0202742 0
+-0.194118 -0.0149013 0
+-0.190553 -0.00356477 0
+-0.199376 0.00882302 0
+-0.21448 0.0151046 0
+-0.223377 0.00889647 0
+-0.214672 -0.00870501 0
+-0.0416688 0.00402357 0
+0.018211 0.0260386 0
+0.018211 0.0902101 0
+-0.409567 -0.0275931 0
+-0.798003 -0.0510183 0
+-1.55586 -0.0907063 0
+-1.43992 -0.153127 0
+-1.27701 -0.21386 0
+-1.08856 -0.245755 0
+-0.902913 -0.240241 0
+-0.743793 -0.203932 0
+-0.62377 -0.151791 0
+-0.544001 -0.0989937 0
+-0.498959 -0.0543737 0
+-0.483279 -0.0176556 0
+-0.49734 0.0188692 0
+-0.549015 0.065314 0
+-0.65083 0.128138 0
+-0.813752 0.205692 0
+-1.04029 0.287239 0
+-1.31989 0.355853 0
+-1.62854 0.393984 0
+-1.93312 0.389496 0
+-2.19882 0.339924 0
+-2.39737 0.253499 0
+-2.51339 0.146832 0
+-2.54722 0.0403104 0
+-2.51363 -0.0471729 0
+-2.43729 -0.102574 0
+-2.34656 -0.121001 0
+-2.26727 -0.105618 0
+-2.21821 -0.0656347 0
+-2.2088 -0.0133296 0
+-2.23904 0.0389084 0
+-2.30115 0.0808526 0
+-2.3822 0.105758 0
+-2.46704 0.110798 0
+-2.54109 0.096822 0
+-2.59261 0.0676394 0
+-2.61419 0.0289988 0
+-2.60339 -0.0125992 0
+-2.56246 -0.0511386 0
+-2.49707 -0.0822472 0
+-2.41447 -0.104081 0
+-2.32119 -0.117658 0
+-2.22129 -0.126352 0
+-2.11558 -0.134396 0
+-2.0026 -0.144712 0
+-1.881 -0.157015 0
+-1.7524 -0.167221 0
+-1.62364 -0.168352 0
+-1.50746 -0.152514 0
+-1.42141 -0.113434 0
+-1.38461 -0.0490825 0
+-1.41316 0.0363722 0
+-1.51498 0.132054 0
+-1.68582 0.221897 0
+-1.90793 0.288164 0
+-2.15231 0.316198 0
+-2.38445 0.299013 0
+-2.57236 0.240089 0
+-2.69432 0.153185 0
+-2.74422 0.0588818 0
+-2.73237 -0.0212534 0
+-2.68142 -0.071125 0
+-2.61847 -0.0850384 0
+-2.56596 -0.0693854 0
+-2.53404 -0.0404637 0
+-2.51713 -0.0191649 0
+-2.4955 -0.0242392 0
+-2.44148 -0.0661238 0
+-2.32878 -0.143 0
+-2.14223 -0.240108 0
+-1.88551 -0.332583 0
+-1.58436 -0.391326 0
+-1.28399 -0.390831 0
+-1.04027 -0.317112 0
+-0.906683 -0.173407 0
+-0.920129 0.0184721 0
+-1.08971 0.222136 0
+-1.39215 0.395258 0
+-1.77562 0.500559 0
+-2.17125 0.515856 0
+-2.5093 0.440093 0
+-2.73542 0.293472 0
+-2.82253 0.111686 0
+-2.77496 -0.0641492 0
+-2.62373 -0.199038 0
+-2.41474 -0.273512 0
+-2.19389 -0.287562 0
+-1.99437 -0.257891 0
+-1.83017 -0.209897 0
+-1.69725 -0.167515 0
+-1.58141 -0.14452 0
+-1.46934 -0.140119 0
+-1.35879 -0.140052 0
+-1.26404 -0.122608 0
+-1.21451 -0.0675065 0
+-1.24674 0.0352166 0
+-1.39183 0.179258 0
+-1.66244 0.341198 0
+-2.04362 0.485397 0
+-2.49095 0.573409 0
+-2.93726 0.575222 0
+-3.30673 0.478907 0
+-3.53268 0.295599 0
+-3.57406 0.0580577 0
+-3.42603 -0.187046 0
+-3.12119 -0.391062 0
+-2.72101 -0.516257 0
+-2.2994 -0.545928 0
+-1.92344 -0.488401 0
+-1.63695 -0.373371 0
+-1.45203 -0.241674 0
+-1.35101 -0.131883 0
+-1.2977 -0.0683146 0
+-1.25342 -0.0545583 0
+-1.19221 -0.0747033 0
+-1.10938 -0.101569 0
+-1.02093 -0.108726 0
+-0.954054 -0.0817788 0
+-0.932959 -0.0246596 0
+-0.965772 0.0416352 0
+-1.03863 0.0879661 0
+-1.12158 0.0918464 0
+-1.18825 0.0579633 0
+-0.565203 0.0527879 0
+-0.266725 0.0554372 0
+-0.266725 0.153826 0
+-0.833122 -0.0630283 0
+-1.62162 -0.115256 0
+-3.1589 -0.204012 0
+-2.96613 -0.34589 0
+-2.6882 -0.491794 0
+-2.35684 -0.577117 0
+-2.01883 -0.578251 0
+-1.71603 -0.506725 0
+-1.47364 -0.39418 0
+-1.29882 -0.273814 0
+-1.18796 -0.165235 0
+-1.13758 -0.0680349 0
+-1.15307 0.0343626 0
+-1.2509 0.163142 0
+-1.45306 0.330303 0
+-1.77619 0.528815 0
+-2.22 0.731051 0
+-2.76032 0.896175 0
+-3.34981 0.983471 0
+-3.92661 0.9663 0
+-4.42813 0.841447 0
+-4.80533 0.630692 0
+-5.03312 0.374624 0
+-5.11428 0.121475 0
+-5.0763 -0.0851503 0
+-4.96287 -0.216013 0
+-4.82289 -0.260978 0
+-4.70029 -0.228221 0
+-4.62666 -0.139257 0
+-4.61791 -0.0220821 0
+-4.67436 0.0953578 0
+-4.78349 0.189984 0
+-4.92402 0.246282 0
+-5.07042 0.257201 0
+-5.19737 0.223778 0
+-5.28363 0.153893 0
+-5.31496 0.0603263 0
+-5.28582 -0.0417361 0
+-5.19939 -0.137563 0
+-5.06586 -0.215782 0
+-4.89918 -0.27076 0
+-4.7131 -0.303738 0
+-4.51751 -0.321937 0
+-4.31665 -0.335254 0
+-4.11014 -0.351224 0
+-3.89667 -0.370483 0
+-3.67871 -0.385184 0
+-3.46629 -0.380772 0
+-3.27872 -0.340084 0
+-3.1433 -0.248854 0
+-3.09079 -0.101596 0
+-3.14809 0.0936733 0
+-3.32981 0.313776 0
+-3.63112 0.523212 0
+-4.02466 0.681703 0
+-4.46334 0.754881 0
+-4.88932 0.724986 0
+-5.24703 0.5978 0
+-5.49667 0.402824 0
+-5.6237 0.185914 0
+-5.64114 -0.00381368 0
+-5.58347 -0.1288 0
+-5.49386 -0.174641 0
+-5.40902 -0.154231 0
+-5.34653 -0.102954 0
+-5.29895 -0.0667418 0
+-5.2361 -0.0870838 0
+-5.11482 -0.187405 0
+-4.89356 -0.364261 0
+-4.54822 -0.585449 0
+-4.08508 -0.795724 0
+-3.54696 -0.929449 0
+-3.00973 -0.928058 0
+-2.56843 -0.758409 0
+-2.31532 -0.426524 0
+-2.31536 0.0185164 0
+-2.5864 0.493181 0
+-3.09043 0.899285 0
+-3.7395 1.14963 0
+-4.41539 1.19174 0
+-4.99755 1.02225 0
+-5.3914 0.687323 0
+-5.54894 0.269225 0
+-5.47586 -0.137222 0
+-5.22335 -0.451547 0
+-4.86749 -0.629379 0
+-4.48389 -0.671159 0
+-4.12662 -0.615162 0
+-3.81811 -0.518401 0
+-3.55256 -0.433068 0
+-3.31009 -0.386987 0
+-3.07566 -0.37455 0
+-2.85511 -0.360606 0
+-2.6823 -0.29542 0
+-2.6143 -0.135504 0
+-2.71551 0.136426 0
+-3.03525 0.498996 0
+-3.58592 0.891866 0
+-4.32908 1.22856 0
+-5.17491 1.41924 0
+-5.99663 1.39694 0
+-6.65704 1.13931 0
+-7.0404 0.678964 0
+-7.08099 0.098645 0
+-6.77993 -0.488109 0
+-6.20521 -0.96578 0
+-5.4741 -1.24737 0
+-4.72224 -1.29778 0
+-4.06842 -1.14222 0
+-3.58551 -0.856283 0
+-3.28678 -0.540402 0
+-3.13146 -0.2872 0
+-3.04711 -0.15267 0
+-2.96043 -0.14123 0
+-2.82548 -0.209661 0
+-2.63899 -0.288051 0
+-2.43806 -0.309661 0
+-2.28127 -0.238566 0
+-2.22122 -0.084715 0
+-2.27938 0.0997995 0
+-2.43442 0.24301 0
+-2.62963 0.287053 0
+-2.79467 0.222999 0
+-1.47057 0.113672 0
+-0.76478 0.0297082 0
+-0.76478 0.114191 0
+-1.28472 -0.106195 0
+-2.49901 -0.193449 0
+-4.8651 -0.342491 0
+-4.6259 -0.585085 0
+-4.27088 -0.846815 0
+-3.83336 -1.01463 0
+-3.36974 -1.04187 0
+-2.93462 -0.941847 0
+-2.56513 -0.763673 0
+-2.27808 -0.560857 0
+-2.07796 -0.365358 0
+-1.96942 -0.176572 0
+-1.96701 0.0319496 0
+-2.09649 0.292619 0
+-2.38662 0.620439 0
+-2.85483 0.997028 0
+-3.49318 1.36939 0
+-4.26116 1.66416 0
+-5.08909 1.8114 0
+-5.8913 1.76851 0
+-6.58504 1.53519 0
+-7.10864 1.15429 0
+-7.43358 0.699561 0
+-7.56752 0.255417 0
+-7.54856 -0.104108 0
+-7.43332 -0.331254 0
+-7.28297 -0.41132 0
+-7.15114 -0.36006 0
+-7.07586 -0.214531 0
+-7.07643 -0.0215104 0
+-7.15397 0.172899 0
+-7.2945 0.330512 0
+-7.47314 0.424919 0
+-7.65879 0.442858 0
+-7.8191 0.384084 0
+-7.92537 0.260167 0
+-7.95711 0.0920591 0
+-7.90511 -0.0937324 0
+-7.7725 -0.27017 0
+-7.5731 -0.415181 0
+-7.32742 -0.516447 0
+-7.05713 -0.574025 0
+-6.77972 -0.599348 0
+-6.50513 -0.609839 0
+-6.2362 -0.620159 0
+-5.97259 -0.634086 0
+-5.71638 -0.641397 0
+-5.47681 -0.620337 0
+-5.2731 -0.543796 0
+-5.13406 -0.387897 0
+-5.09398 -0.14167 0
+-5.1849 0.18459 0
+-5.42661 0.555486 0
+-5.81737 0.913973 0
+-6.32861 1.19295 0
+-6.90655 1.33282 0
+-7.48159 1.30002 0
+-7.98358 1.09979 0
+-8.35864 0.777891 0
+-8.58204 0.409307 0
+-8.66257 0.0767215 0
+-8.63655 -0.154823 0
+-8.5528 -0.258387 0
+-8.45429 -0.252739 0
+-8.36294 -0.194303 0
+-8.27255 -0.157139 0
+-8.15118 -0.208451 0
+-7.95168 -0.386899 0
+-7.62752 -0.688425 0
+-7.15072 -1.06225 0
+-6.5278 -1.41864 0
+-5.80888 -1.64837 0
+-5.08562 -1.65132 0
+-4.47585 -1.36818 0
+-4.097 -0.805368 0
+-4.03492 -0.0435687 0
+-4.31732 0.775581 0
+-4.90106 1.48303 0
+-5.67838 1.92695 0
+-6.50127 2.01464 0
+-7.21728 1.73826 0
+-7.70592 1.17596 0
+-7.90508 0.468385 0
+-7.81995 -0.222349 0
+-7.51203 -0.759473 0
+-7.07247 -1.06893 0
+-6.5902 -1.15343 0
+-6.12651 -1.07885 0
+-5.70479 -0.940119 0
+-5.31746 -0.820401 0
+-4.94568 -0.758768 0
+-4.58311 -0.737116 0
+-4.25385 -0.689866 0
+-4.01727 -0.531996 0
+-3.95726 -0.195521 0
+-4.15839 0.337558 0
+-4.6761 1.01671 0
+-5.51012 1.72588 0
+-6.5902 2.30864 0
+-7.78029 2.60933 0
+-8.90167 2.51833 0
+-9.77048 2.00812 0
+-10.24 1.14854 0
+-10.2368 0.0954223 0
+-9.77939 -0.945548 0
+-8.97458 -1.77059 0
+-7.99051 -2.23144 0
+-7.01285 -2.27544 0
+-6.19669 -1.95838 0
+-5.62861 -1.42436 0
+-5.31069 -0.858325 0
+-5.17153 -0.426356 0
+-5.10022 -0.223986 0
+-4.99103 -0.250421 0
+-4.78306 -0.417626 0
+-4.48074 -0.590376 0
+-4.14832 -0.642081 0
+-3.88101 -0.505873 0
+-3.76362 -0.202103 0
+-3.8328 0.168982 0
+-4.05789 0.468099 0
+-4.34756 0.57672 0
+-4.57645 0.451889 0
+-2.43619 0.150479 0
+-1.26674 -0.0637206 0
+-1.26674 -0.00315972 0
+-1.67676 -0.148617 0
+-3.25986 -0.270745 0
+-6.34262 -0.481099 0
+-6.09761 -0.830095 0
+-5.7212 -1.22323 0
+-5.23932 -1.49652 0
+-4.70637 -1.57482 0
+-4.18052 -1.4677 0
+-3.70688 -1.23731 0
+-3.31325 -0.954481 0
+-3.01674 -0.661871 0
+-2.83477 -0.358537 0
+-2.79296 -0.0098608 0
+-2.92424 0.423892 0
+-3.25856 0.954766 0
+-3.80761 1.54607 0
+-4.55156 2.11335 0
+-5.4347 2.5473 0
+-6.37261 2.7493 0
+-7.26905 2.66496 0
+-8.03699 2.30313 0
+-8.61665 1.73395 0
+-8.98542 1.06833 0
+-9.15783 0.427821 0
+-9.17683 -0.0851087 0
+-9.10031 -0.407776 0
+-8.98731 -0.524319 0
+-8.8876 -0.459762 0
+-8.83601 -0.266119 0
+-8.85089 -0.00663511 0
+-8.9352 0.257206 0
+-9.07864 0.473954 0
+-9.26004 0.606322 0
+-9.45019 0.633007 0
+-9.61578 0.549673 0
+-9.72473 0.369122 0
+-9.75213 0.119458 0
+-9.68513 -0.160731 0
+-9.52541 -0.429886 0
+-9.28829 -0.652301 0
+-8.99862 -0.806117 0
+-8.68456 -0.888088 0
+-8.37094 -0.912967 0
+-8.07452 -0.906257 0
+-7.80305 -0.891632 0
+-7.5583 -0.878837 0
+-7.34098 -0.858714 0
+-7.15541 -0.805908 0
+-7.01294 -0.686266 0
+-6.93337 -0.467469 0
+-6.94327 -0.131765 0
+-7.07067 0.31199 0
+-7.33652 0.821337 0
+-7.74515 1.3226 0
+-8.27701 1.7248 0
+-8.88723 1.94304 0
+-9.51195 1.92474 0
+-10.0816 1.66945 0
+-10.5374 1.23365 0
+-10.8454 0.717351 0
+-11.004 0.235344 0
+-11.04 -0.118877 0
+-10.9946 -0.303816 0
+-10.9057 -0.341595 0
+-10.7939 -0.306123 0
+-10.6563 -0.294709 0
+-10.4695 -0.39531 0
+-10.1969 -0.659424 0
+-9.80091 -1.08445 0
+-9.25657 -1.60659 0
+-8.56744 -2.10777 0
+-7.77693 -2.43888 0
+-6.97014 -2.45811 0
+-6.26205 -2.07627 0
+-5.7726 -1.29482 0
+-5.59466 -0.221505 0
+-5.76498 0.945897 0
+-6.24838 1.96644 0
+-6.94202 2.62059 0
+-7.69952 2.77214 0
+-8.36793 2.40667 0
+-8.82571 1.63374 0
+-9.00993 0.652605 0
+-8.92466 -0.307621 0
+-8.62835 -1.05578 0
+-8.20547 -1.49181 0
+-7.7342 -1.62469 0
+-7.26314 -1.54992 0
+-6.80516 -1.3981 0
+-6.34932 -1.27623 0
+-5.88422 -1.22387 0
+-5.42207 -1.19926 0
+-5.01312 -1.09882 0
+-4.74363 -0.80149 0
+-4.71721 -0.221946 0
+-5.02471 0.645067 0
+-5.7117 1.7037 0
+-6.75348 2.76766 0
+-8.04641 3.60156 0
+-9.41962 3.98255 0
+-10.6661 3.76483 0
+-11.5863 2.92827 0
+-12.0333 1.59553 0
+-11.9486 0.0107128 0
+-11.3773 -1.51679 0
+-10.4586 -2.68926 0
+-9.39133 -3.29875 0
+-8.38301 -3.28377 0
+-7.59654 -2.74485 0
+-7.10984 -1.91106 0
+-6.90185 -1.06632 0
+-6.86961 -0.458599 0
+-6.8711 -0.222489 0
+-6.77929 -0.342231 0
+-6.52835 -0.668573 0
+-6.13587 -0.982859 0
+-5.69351 -1.08443 0
+-5.32951 -0.869879 0
+-5.15632 -0.375293 0
+-5.22297 0.235638 0
+-5.49027 0.735395 0
+-5.83823 0.924686 0
+-6.10256 0.716218 0
+-3.22679 0.176246 0
+-1.66095 -0.185345 0
+-1.66095 -0.140276 0
+-1.94968 -0.183154 0
+-3.7883 -0.334676 0
+-7.36556 -0.59855 0
+-7.15065 -1.04501 0
+-6.80577 -1.5681 0
+-6.34361 -1.95868 0
+-5.80674 -2.11169 0
+-5.24776 -2.02668 0
+-4.71427 -1.7708 0
+-4.2438 -1.42496 0
+-3.86733 -1.03833 0
+-3.61617 -0.609698 0
+-3.52546 -0.100572 0
+-3.63026 0.528691 0
+-3.95435 1.27886 0
+-4.49688 2.08861 0
+-5.22367 2.84014 0
+-6.06828 3.39191 0
+-6.94369 3.62471 0
+-7.76094 3.4822 0
+-8.44823 2.99042 0
+-8.9642 2.24992 0
+-9.3018 1.40593 0
+-9.48305 0.609079 0
+-9.54793 -0.0202364 0
+-9.54168 -0.414025 0
+-9.5052 -0.560793 0
+-9.47028 -0.494687 0
+-9.45903 -0.277364 0
+-9.48541 0.019739 0
+-9.55623 0.328027 0
+-9.67077 0.588501 0
+-9.81926 0.754805 0
+-9.98191 0.795662 0
+-10.1307 0.698454 0
+-10.2344 0.472793 0
+-10.2657 0.150785 0
+-10.2082 -0.218213 0
+-10.0603 -0.577815 0
+-9.8353 -0.877273 0
+-9.5583 -1.08312 0
+-9.25992 -1.18646 0
+-8.96976 -1.20313 0
+-8.71071 -1.1653 0
+-8.49653 -1.10582 0
+-8.33277 -1.04259 0
+-8.21962 -0.971867 0
+-8.15485 -0.870677 0
+-8.13702 -0.704098 0
+-8.16861 -0.435881 0
+-8.25821 -0.0421588 0
+-8.42023 0.474002 0
+-8.67083 1.07194 0
+-9.02073 1.6725 0
+-9.46695 2.17102 0
+-9.98725 2.46334 0
+-10.5404 2.47791 0
+-11.0733 2.20238 0
+-11.5332 1.69354 0
+-11.8811 1.06523 0
+-12.102 0.456212 0
+-12.2057 -0.0151424 0
+-12.2161 -0.293436 0
+-12.1558 -0.401916 0
+-12.0365 -0.425401 0
+-11.8579 -0.473348 0
+-11.6114 -0.641741 0
+-11.2842 -0.986674 0
+-10.8599 -1.50872 0
+-10.3245 -2.14202 0
+-9.67685 -2.75539 0
+-8.94169 -3.17404 0
+-8.17653 -3.22327 0
+-7.46768 -2.78511 0
+-6.91304 -1.84946 0
+-6.59567 -0.538876 0
+-6.5571 0.907329 0
+-6.7805 2.18984 0
+-7.19126 3.03134 0
+-7.67604 3.25692 0
+-8.11415 2.84478 0
+-8.4101 1.92969 0
+-8.51606 0.758562 0
+-8.43687 -0.386809 0
+-8.21658 -1.27608 0
+-7.91257 -1.79582 0
+-7.56929 -1.96798 0
+-7.20318 -1.91603 0
+-6.80504 -1.79624 0
+-6.3578 -1.72347 0
+-5.8612 -1.72048 0
+-5.35181 -1.70865 0
+-4.90886 -1.54177 0
+-4.6418 -1.06855 0
+-4.66299 -0.200754 0
+-5.05408 1.03616 0
+-5.83635 2.48597 0
+-6.95407 3.88538 0
+-8.27639 4.92388 0
+-9.61841 5.32456 0
+-10.7772 4.92358 0
+-11.5743 3.72543 0
+-11.8957 1.91689 0
+-11.7177 -0.167305 0
+-11.1139 -2.12058 0
+-10.2389 -3.5642 0
+-9.29165 -4.24604 0
+-8.46534 -4.11008 0
+-7.89846 -3.31173 0
+-7.6399 -2.16962 0
+-7.6405 -1.06571 0
+-7.77484 -0.324256 0
+-7.88742 -0.109909 0
+-7.84837 -0.381283 0
+-7.59943 -0.917507 0
+-7.17394 -1.40835 0
+-6.68369 -1.57468 0
+-6.2768 -1.27677 0
+-6.08042 -0.571672 0
+-6.14926 0.304481 0
+-6.43965 1.02578 0
+-6.81983 1.30487 0
+-7.11457 1.01096 0
+-3.73373 0.234242 0
+-1.91455 -0.279984 0
+-1.91455 -0.250933 0
+-2.08104 -0.20583 0
+-4.04098 -0.378171 0
+-7.85009 -0.682215 0
+-7.68828 -1.20681 0
+-7.4127 -1.84368 0
+-7.02141 -2.34997 0
+-6.53994 -2.59315 0
+-6.00895 -2.55767 0
+-5.47335 -2.3064 0
+-4.9771 -1.9212 0
+-4.56291 -1.45252 0
+-4.27314 -0.899467 0
+-4.14776 -0.225955 0
+-4.21704 0.597968 0
+-4.49087 1.5527 0
+-4.95025 2.54798 0
+-5.54612 3.436 0
+-6.20783 4.05363 0
+-6.85906 4.27594 0
+-7.43561 4.05875 0
+-7.89878 3.45359 0
+-8.23965 2.5908 0
+-8.47386 1.64014 0
+-8.6301 0.765315 0
+-8.73735 0.0870134 0
+-8.81595 -0.33542 0
+-8.87559 -0.501151 0
+-8.91946 -0.450825 0
+-8.95089 -0.245925 0
+-8.97828 0.0471244 0
+-9.01518 0.364932 0
+-9.07576 0.649076 0
+-9.16761 0.846658 0
+-9.28591 0.913963 0
+-9.41221 0.824752 0
+-9.51905 0.579632 0
+-9.57826 0.209999 0
+-9.56933 -0.227148 0
+-9.48484 -0.662303 0
+-9.33192 -1.0302 0
+-9.12997 -1.28507 0
+-8.90621 -1.41023 0
+-8.69016 -1.41917 0
+-8.50859 -1.34688 0
+-8.38171 -1.23269 0
+-8.32151 -1.10279 0
+-8.33099 -0.962385 0
+-8.40411 -0.797561 0
+-8.52712 -0.581088 0
+-8.68255 -0.280446 0
+-8.85539 0.130677 0
+-9.03917 0.657785 0
+-9.23892 1.27169 0
+-9.46864 1.90223 0
+-9.74385 2.44624 0
+-10.0721 2.79159 0
+-10.4456 2.8514 0
+-10.8392 2.59604 0
+-11.2155 2.06976 0
+-11.5352 1.38493 0
+-11.7718 0.692859 0
+-11.9192 0.132192 0
+-11.9814 -0.231164 0
+-11.9605 -0.422825 0
+-11.8522 -0.533731 0
+-11.6524 -0.673136 0
+-11.367 -0.927183 0
+-11.0124 -1.34128 0
+-10.6029 -1.91813 0
+-10.1426 -2.60238 0
+-9.62809 -3.26988 0
+-9.06075 -3.74138 0
+-8.45831 -3.82571 0
+-7.86031 -3.38311 0
+-7.32268 -2.3871 0
+-6.9022 -0.959349 0
+-6.63697 0.642092 0
+-6.53116 2.08404 0
+-6.55187 3.05204 0
+-6.63994 3.34499 0
+-6.73092 2.93576 0
+-6.77678 1.97555 0
+-6.75905 0.740841 0
+-6.6878 -0.45806 0
+-6.58717 -1.3767 0
+-6.47504 -1.90795 0
+-6.34732 -2.0957 0
+-6.17567 -2.08768 0
+-5.92096 -2.05095 0
+-5.55724 -2.08718 0
+-5.09578 -2.18194 0
+-4.59771 -2.20672 0
+-4.1682 -1.97128 0
+-3.93203 -1.30471 0
+-3.99845 -0.134338 0
+-4.42712 1.46483 0
+-5.20645 3.2653 0
+-6.25019 4.92911 0
+-7.41296 6.08665 0
+-8.5203 6.4319 0
+-9.40534 5.80863 0
+-9.94358 4.26367 0
+-10.0781 2.0514 0
+-9.83038 -0.415011 0
+-9.29485 -2.65611 0
+-8.61766 -4.24138 0
+-7.96353 -4.90017 0
+-7.47655 -4.59706 0
+-7.24438 -3.5439 0
+-7.27574 -2.13826 0
+-7.49928 -0.84217 0
+-7.78657 -0.036965 0
+-7.99415 0.0976697 0
+-8.01198 -0.363454 0
+-7.80174 -1.12775 0
+-7.41099 -1.7991 0
+-6.95774 -2.02793 0
+-6.58925 -1.64526 0
+-6.42778 -0.733146 0
+-6.52312 0.39982 0
+-6.8308 1.33345 0
+-7.22566 1.69974 0
+-7.54782 1.33312 0
+-3.94511 0.353068 0
+-2.03052 -0.313469 0
+-2.03052 -0.314812 0
+-2.08252 -0.216043 0
+-4.04145 -0.399844 0
+-7.84428 -0.72864 0
+-7.74434 -1.30675 0
+-7.55724 -2.03078 0
+-7.26929 -2.63793 0
+-6.88873 -2.97371 0
+-6.44176 -3.00465 0
+-5.96682 -2.78134 0
+-5.50994 -2.37808 0
+-5.12069 -1.84178 0
+-4.84695 -1.1732 0
+-4.7271 -0.345809 0
+-4.77965 0.650522 0
+-4.99447 1.76752 0
+-5.33118 2.88469 0
+-5.72739 3.83221 0
+-6.11502 4.44126 0
+-6.43926 4.60018 0
+-6.67324 4.29273 0
+-6.82271 3.60306 0
+-6.91894 2.68703 0
+-7.00311 1.72431 0
+-7.10843 0.870636 0
+-7.24701 0.225599 0
+-7.40685 -0.175578 0
+-7.55981 -0.348194 0
+-7.67632 -0.334312 0
+-7.73983 -0.182414 0
+-7.75458 0.0618717 0
+-7.74381 0.354165 0
+-7.73981 0.64507 0
+-7.77033 0.877185 0
+-7.84756 0.991186 0
+-7.96413 0.941325 0
+-8.09741 0.712908 0
+-8.21853 0.331128 0
+-8.30194 -0.143742 0
+-8.33179 -0.632458 0
+-8.30436 -1.05762 0
+-8.22735 -1.36207 0
+-8.11772 -1.51986 0
+-7.99902 -1.53787 0
+-7.89834 -1.44757 0
+-7.84233 -1.2887 0
+-7.85255 -1.09257 0
+-7.94046 -0.874477 0
+-8.10288 -0.63514 0
+-8.32004 -0.363927 0
+-8.55865 -0.0418413 0
+-8.78087 0.352899 0
+-8.9568 0.833717 0
+-9.07528 1.39017 0
+-9.14805 1.975 0
+-9.20502 2.50321 0
+-9.2823 2.86887 0
+-9.40749 2.97659 0
+-9.5877 2.77624 0
+-9.80505 2.28711 0
+-10.0238 1.60372 0
+-10.2104 0.87946 0
+-10.3531 0.274865 0
+-10.4448 -0.139519 0
+-10.468 -0.399535 0
+-10.3976 -0.604228 0
+-10.2142 -0.856521 0
+-9.92606 -1.21529 0
+-9.57732 -1.69002 0
+-9.21646 -2.27899 0
+-8.87184 -2.947 0
+-8.54558 -3.59614 0
+-8.22095 -4.06601 0
+-7.87622 -4.17045 0
+-7.49826 -3.76106 0
+-7.09009 -2.79527 0
+-6.66927 -1.38017 0
+-6.2591 0.231925 0
+-5.87822 1.70316 0
+-5.5349 2.70873 0
+-5.22944 3.03953 0
+-4.96262 2.66894 0
+-4.74411 1.75704 0
+-4.59373 0.590461 0
+-4.53234 -0.519456 0
+-4.56589 -1.34315 0
+-4.67147 -1.80236 0
+-4.79398 -1.97319 0
+-4.85802 -2.02364 0
+-4.79301 -2.11595 0
+-4.56285 -2.31734 0
+-4.18784 -2.55695 0
+-3.7487 -2.64586 0
+-3.36855 -2.35143 0
+-3.1775 -1.49576 0
+-3.27165 -0.0401917 0
+-3.6817 1.87487 0
+-4.36223 3.94584 0
+-5.20385 5.77073 0
+-6.06249 6.94529 0
+-6.79605 7.16546 0
+-7.29734 6.30991 0
+-7.51514 4.48147 0
+-7.45999 1.99625 0
+-7.19591 -0.679094 0
+-6.82241 -3.02962 0
+-6.45163 -4.61216 0
+-6.18492 -5.16688 0
+-6.09211 -4.68987 0
+-6.19627 -3.43974 0
+-6.46721 -1.86731 0
+-6.82727 -0.48211 0
+-7.17074 0.306503 0
+-7.39409 0.32102 0
+-7.4289 -0.328643 0
+-7.26623 -1.29041 0
+-6.96279 -2.10255 0
+-6.62537 -2.36535 0
+-6.37647 -1.89416 0
+-6.31106 -0.798558 0
+-6.46072 0.549478 0
+-6.78043 1.65316 0
+-7.16469 2.084 0
+-7.48787 1.6563 0
+-3.9088 0.518044 0
+-2.0261 -0.288303 0
+-2.0261 -0.334516 0
+-1.98852 -0.21567 0
+-3.85785 -0.402464 0
+-7.48414 -0.74119 0
+-7.44388 -1.34701 0
+-7.34901 -2.12564 0
+-7.17941 -2.80753 0
+-6.92964 -3.22347 0
+-6.61212 -3.32217 0
+-6.25652 -3.13693 0
+-5.90628 -2.72832 0
+-5.61173 -2.13633 0
+-5.41979 -1.36513 0
+-5.36112 -0.404479 0
+-5.43751 0.726909 0
+-5.61614 1.94615 0
+-5.83585 3.1044 0
+-6.02456 4.02093 0
+-6.1223 4.539 0
+-6.10153 4.57941 0
+-5.97698 4.16818 0
+-5.80065 3.42672 0
+-5.64343 2.52982 0
+-5.56985 1.65072 0
+-5.61477 0.915563 0
+-5.77122 0.382052 0
+-5.99437 0.0475699 0
+-6.21986 -0.122709 0
+-6.38853 -0.16564 0
+-6.46757 -0.103373 0
+-6.46008 0.0543838 0
+-6.40053 0.294609 0
+-6.33917 0.583716 0
+-6.32264 0.860654 0
+-6.3785 1.04705 0
+-6.50941 1.07223 0
+-6.69689 0.900385 0
+-6.91084 0.545076 0
+-7.11961 0.0650259 0
+-7.29695 -0.45511 0
+-7.42504 -0.929539 0
+-7.4951 -1.29201 0
+-7.5081 -1.50686 0
+-7.47598 -1.56999 0
+-7.42211 -1.50144 0
+-7.37855 -1.33226 0
+-7.37916 -1.09195 0
+-7.44989 -0.803746 0
+-7.59902 -0.486015 0
+-7.81054 -0.152403 0
+-8.04469 0.192302 0
+-8.24771 0.55592 0
+-8.36905 0.95506 0
+-8.37949 1.40061 0
+-8.28259 1.8781 0
+-8.11451 2.33512 0
+-7.93163 2.68599 0
+-7.79054 2.8355 0
+-7.7271 2.7128 0
+-7.7425 2.30252 0
+-7.80422 1.66544 0
+-7.87316 0.948405 0
+-7.95341 0.355112 0
+-8.04243 -0.0504928 0
+-8.11171 -0.330255 0
+-8.1154 -0.600543 0
+-8.00536 -0.966562 0
+-7.76485 -1.45579 0
+-7.45833 -1.99655 0
+-7.16723 -2.57008 0
+-6.94936 -3.16487 0
+-6.82322 -3.72228 0
+-6.76772 -4.12151 0
+-6.73345 -4.20472 0
+-6.66122 -3.83328 0
+-6.50091 -2.95558 0
+-6.22408 -1.657 0
+-5.82787 -0.164288 0
+-5.33183 1.20712 0
+-4.77241 2.1493 0
+-4.19872 2.46585 0
+-3.66997 2.14019 0
+-3.25077 1.33784 0
+-3.00038 0.340068 0
+-2.95502 -0.564814 0
+-3.10989 -1.18829 0
+-3.41054 -1.50171 0
+-3.76055 -1.62318 0
+-4.04589 -1.7383 0
+-4.16994 -1.9919 0
+-4.08723 -2.40005 0
+-3.82294 -2.82125 0
+-3.46886 -2.99994 0
+-3.15533 -2.66496 0
+-3.00769 -1.6434 0
+-3.10274 0.054863 0
+-3.44209 2.21422 0
+-3.95298 4.45673 0
+-4.51486 6.33261 0
+-4.99994 7.43038 0
+-5.31274 7.47826 0
+-5.41549 6.41267 0
+-5.33282 4.3988 0
+-5.13673 1.80017 0
+-4.9201 -0.895727 0
+-4.7687 -3.18102 0
+-4.74045 -4.64041 0
+-4.85647 -5.05086 0
+-5.10313 -4.44322 0
+-5.44016 -3.10271 0
+-5.81054 -1.49694 0
+-6.15069 -0.141958 0
+-6.40188 0.557694 0
+-6.52281 0.441957 0
+-6.50161 -0.349843 0
+-6.36284 -1.42919 0
+-6.16519 -2.3002 0
+-5.98806 -2.54249 0
+-5.90848 -1.97374 0
+-5.9749 -0.732138 0
+-6.18837 0.762947 0
+-6.50063 1.96543 0
+-6.83184 2.41521 0
+-7.10154 1.926 0
+-3.70247 0.674592 0
+-1.92788 -0.236668 0
+-1.92788 -0.325837 0
+-1.84163 -0.207742 0
+-3.57417 -0.390784 0
+-6.93603 -0.726667 0
+-6.94721 -1.33582 0
+-6.93848 -2.13437 0
+-6.88911 -2.8569 0
+-6.78514 -3.32744 0
+-6.62756 -3.47974 0
+-6.43608 -3.32842 0
+-6.24713 -2.91727 0
+-6.1058 -2.27766 0
+-6.0522 -1.41873 0
+-6.10498 -0.351693 0
+-6.24802 0.869943 0
+-6.42848 2.12661 0
+-6.56984 3.24576 0
+-6.59612 4.0472 0
+-6.45897 4.40185 0
+-6.15757 4.27802 0
+-5.7432 3.75381 0
+-5.30583 2.98935 0
+-4.94697 2.17096 0
+-4.74741 1.45116 0
+-4.74068 0.908833 0
+-4.90291 0.54428 0
+-5.16332 0.307984 0
+-5.43086 0.144836 0
+-5.62625 0.0297461 0
+-5.70728 -0.0223465 0
+-5.67875 0.0258585 0
+-5.58501 0.200864 0
+-5.48994 0.488647 0
+-5.4536 0.824313 0
+-5.5144 1.10785 0
+-5.68206 1.23989 0
+-5.94085 1.15918 0
+-6.259 0.863232 0
+-6.59888 0.404904 0
+-6.9239 -0.130093 0
+-7.20159 -0.651849 0
+-7.40523 -1.08837 0
+-7.51706 -1.39503 0
+-7.53367 -1.55338 0
+-7.47085 -1.56426 0
+-7.36357 -1.43954 0
+-7.25835 -1.19718 0
+-7.19956 -0.862527 0
+-7.21414 -0.471443 0
+-7.29959 -0.0669464 0
+-7.42085 0.313563 0
+-7.51891 0.65398 0
+-7.5301 0.966247 0
+-7.40939 1.2799 0
+-7.14843 1.61714 0
+-6.78052 1.96721 0
+-6.37012 2.27559 0
+-5.99047 2.45586 0
+-5.69772 2.42005 0
+-5.50924 2.11404 0
+-5.39302 1.54922 0
+-5.29307 0.84845 0
+-5.26448 0.326524 0
+-5.32121 0.00623632 0
+-5.43243 -0.219034 0
+-5.54652 -0.486455 0
+-5.58226 -0.930814 0
+-5.44419 -1.59387 0
+-5.21575 -2.22498 0
+-5.00631 -2.77953 0
+-4.90406 -3.26712 0
+-4.95429 -3.67205 0
+-5.14792 -3.92788 0
+-5.42601 -3.92663 0
+-5.69912 -3.56017 0
+-5.87392 -2.78078 0
+-5.87768 -1.65325 0
+-5.67413 -0.367839 0
+-5.26885 0.801839 0
+-4.70649 1.58695 0
+-4.06367 1.82303 0
+-3.43883 1.51535 0
+-2.93754 0.836546 0
+-2.65146 0.0539949 0
+-2.63367 -0.582604 0
+-2.87842 -0.943536 0
+-3.31574 -1.06439 0
+-3.82618 -1.11274 0
+-4.27348 -1.291 0
+-4.54563 -1.71975 0
+-4.59073 -2.35495 0
+-4.43405 -2.97793 0
+-4.1685 -3.26549 0
+-3.92037 -2.91309 0
+-3.80203 -1.76175 0
+-3.86933 0.122169 0
+-4.10087 2.44576 0
+-4.40843 4.76429 0
+-4.67403 6.59821 0
+-4.79688 7.55322 0
+-4.7318 7.41318 0
+-4.50519 6.18607 0
+-4.20384 4.09744 0
+-3.94231 1.53864 0
+-3.82257 -1.01546 0
+-3.90083 -3.10276 0
+-4.17243 -4.36881 0
+-4.57878 -4.6445 0
+-5.03151 -3.99049 0
+-5.44165 -2.69256 0
+-5.74282 -1.19577 0
+-5.90269 0.0179108 0
+-5.92341 0.578414 0
+-5.83466 0.353211 0
+-5.68382 -0.500692 0
+-5.52598 -1.58702 0
+-5.41459 -2.41159 0
+-5.39158 -2.56549 0
+-5.47776 -1.88756 0
+-5.66591 -0.54399 0
+-5.92068 1.01772 0
+-6.18826 2.233 0
+-6.41494 2.64189 0
+-6.56839 2.07945 0
+-3.41013 0.756669 0
+-1.77075 -0.200196 0
+-1.77075 -0.307583 0
+-1.68013 -0.195311 0
+-3.26504 -0.369712 0
+-6.34592 -0.692496 0
+-6.39831 -1.28344 0
+-6.46455 -2.06814 0
+-6.52793 -2.79351 0
+-6.57065 -3.28473 0
+-6.58474 -3.46565 0
+-6.57909 -3.33407 0
+-6.57947 -2.91689 0
+-6.62062 -2.23651 0
+-6.73133 -1.30802 0
+-6.91694 -0.166081 0
+-7.14735 1.10035 0
+-7.35846 2.33772 0
+-7.46862 3.35592 0
+-7.40541 3.984 0
+-7.13347 4.12991 0
+-6.67231 3.81687 0
+-6.09664 3.17814 0
+-5.51784 2.41055 0
+-5.05241 1.70553 0
+-4.78677 1.18553 0
+-4.75058 0.872643 0
+-4.90927 0.70297 0
+-5.17887 0.577583 0
+-5.45685 0.422818 0
+-5.65707 0.229959 0
+-5.73589 0.0564788 0
+-5.70104 -0.0089957 0
+-5.60188 0.101707 0
+-5.5076 0.394368 0
+-5.48297 0.799684 0
+-5.57046 1.19534 0
+-5.78287 1.4523 0
+-6.10607 1.48238 0
+-6.50773 1.26488 0
+-6.94666 0.843842 0
+-7.37912 0.302361 0
+-7.76132 -0.269645 0
+-8.05142 -0.798268 0
+-8.21437 -1.23208 0
+-8.23077 -1.53698 0
+-8.10603 -1.689 0
+-7.87394 -1.67163 0
+-7.59021 -1.48091 0
+-7.31675 -1.13599 0
+-7.1017 -0.686489 0
+-6.96241 -0.206234 0
+-6.878 0.229147 0
+-6.79549 0.571471 0
+-6.64853 0.819288 0
+-6.38255 1.01392 0
+-5.97695 1.21154 0
+-5.45478 1.44505 0
+-4.8757 1.6965 0
+-4.31503 1.8952 0
+-3.83816 1.94318 0
+-3.47782 1.7537 0
+-3.20892 1.28031 0
+-2.92252 0.56205 0
+-2.78115 0.18515 0
+-2.79215 0.017238 0
+-2.92102 -0.0901593 0
+-3.14742 -0.260057 0
+-3.40095 -0.677279 0
+-3.40398 -1.59084 0
+-3.28657 -2.3424 0
+-3.17066 -2.89543 0
+-3.16757 -3.27022 0
+-3.35349 -3.48613 0
+-3.7433 -3.53807 0
+-4.28584 -3.38409 0
+-4.88137 -2.96464 0
+-5.41146 -2.25069 0
+-5.77042 -1.29429 0
+-5.88971 -0.248546 0
+-5.75087 0.662996 0
+-5.38735 1.22343 0
+-4.87854 1.31422 0
+-4.33689 0.973699 0
+-3.88757 0.387222 0
+-3.64126 -0.19231 0
+-3.66511 -0.55876 0
+-3.96091 -0.647731 0
+-4.46051 -0.56479 0
+-5.04285 -0.530397 0
+-5.56918 -0.764677 0
+-5.92537 -1.36356 0
+-6.05727 -2.22305 0
+-5.9859 -3.0493 0
+-5.79574 -3.45566 0
+-5.59912 -3.10971 0
+-5.4901 -1.87076 0
+-5.506 0.138069 0
+-5.61273 2.55249 0
+-5.72116 4.87272 0
+-5.72832 6.60537 0
+-5.56501 7.38991 0
+-5.22955 7.07772 0
+-4.79449 5.751 0
+-4.38355 3.68651 0
+-4.12811 1.28319 0
+-4.11996 -1.02361 0
+-4.37844 -2.84427 0
+-4.84322 -3.90403 0
+-5.39475 -4.09297 0
+-5.89429 -3.49096 0
+-6.22741 -2.35944 0
+-6.33489 -1.0883 0
+-6.22242 -0.0945541 0
+-5.95022 0.306209 0
+-5.60927 0.0122641 0
+-5.294 -0.815963 0
+-5.07958 -1.80144 0
+-5.00827 -2.48291 0
+-5.08421 -2.48955 0
+-5.2761 -1.69566 0
+-5.52722 -0.292872 0
+-5.77096 1.26147 0
+-5.94953 2.41157 0
+-6.03252 2.72487 0
+-6.03023 2.07716 0
+-3.10433 0.721855 0
+-1.59368 -0.208618 0
+-1.59368 -0.294168 0
+-1.53065 -0.180833 0
+-2.98113 -0.343335 0
+-5.8099 -0.64527 0
+-5.89324 -1.2001 0
+-6.02057 -1.9408 0
+-6.18171 -2.63237 0
+-6.35799 -3.10844 0
+-6.53411 -3.28954 0
+-6.70718 -3.161 0
+-6.8891 -2.73496 0
+-7.10033 -2.02528 0
+-7.35631 -1.05204 0
+-7.65187 0.129478 0
+-7.95197 1.40045 0
+-8.19444 2.58019 0
+-8.30555 3.46704 0
+-8.22461 3.90306 0
+-7.92866 3.83396 0
+-7.44731 3.33551 0
+-6.86068 2.59151 0
+-6.2804 1.83026 0
+-5.81891 1.24405 0
+-5.55647 0.923085 0
+-5.51733 0.833507 0
+-5.66499 0.850627 0
+-5.91789 0.830486 0
+-6.17942 0.684352 0
+-6.37054 0.421077 0
+-6.45317 0.139109 0
+-6.43686 -0.0253039 0
+-6.36853 0.0333711 0
+-6.31191 0.337748 0
+-6.32591 0.813686 0
+-6.44903 1.31846 0
+-6.6931 1.69638 0
+-7.04556 1.83484 0
+-7.47667 1.69599 0
+-7.94695 1.31413 0
+-8.4118 0.767208 0
+-8.82305 0.141611 0
+-9.13057 -0.490749 0
+-9.2876 -1.07505 0
+-9.26152 -1.56306 0
+-9.0463 -1.90422 0
+-8.66966 -2.04827 0
+-8.18933 -1.96123 0
+-7.67782 -1.6475 0
+-7.20055 -1.16375 0
+-6.79536 -0.611429 0
+-6.46111 -0.105103 0
+-6.16029 0.270654 0
+-5.83454 0.493535 0
+-5.42796 0.607342 0
+-4.91026 0.693837 0
+-4.2901 0.824884 0
+-3.6124 1.01881 0
+-2.94117 1.22396 0
+-2.33718 1.33919 0
+-1.84421 1.26073 0
+-1.47875 0.914852 0
+-1.06587 0.149165 0
+-0.900232 0.0195139 0
+-0.884662 0.00166854 0
+-0.971095 -0.00372726 0
+-1.20435 -0.0267984 0
+-1.67584 -0.205792 0
+-1.829 -1.43768 0
+-1.86497 -2.30642 0
+-1.86886 -2.89154 0
+-1.96206 -3.17702 0
+-2.24769 -3.2005 0
+-2.76667 -3.01909 0
+-3.48679 -2.66398 0
+-4.3173 -2.13412 0
+-5.13765 -1.43034 0
+-5.82934 -0.602602 0
+-6.30285 0.224962 0
+-6.51476 0.874902 0
+-6.47484 1.18352 0
+-6.24433 1.08371 0
+-5.92487 0.654231 0
+-5.63771 0.100063 0
+-5.49546 -0.334556 0
+-5.57232 -0.481899 0
+-5.88195 -0.338108 0
+-6.37183 -0.0749035 0
+-6.93838 0.0361527 0
+-7.45888 -0.244182 0
+-7.83004 -0.992394 0
+-8.00018 -2.05291 0
+-7.98297 -3.06651 0
+-7.84674 -3.59188 0
+-7.68259 -3.27385 0
+-7.56399 -1.98937 0
+-7.51495 0.0890309 0
+-7.50058 2.53812 0
+-7.44475 4.81689 0
+-7.26855 6.42917 0
+-6.93255 7.05391 0
+-6.46368 6.60885 0
+-5.95485 5.24218 0
+-5.53667 3.26833 0
+-5.33153 1.07804 0
+-5.40791 -0.947231 0
+-5.75247 -2.49971 0
+-6.27038 -3.38612 0
+-6.81361 -3.54973 0
+-7.2273 -3.07727 0
+-7.39738 -2.18936 0
+-7.28223 -1.20344 0
+-6.91881 -0.457975 0
+-6.40463 -0.207975 0
+-5.86453 -0.527838 0
+-5.41451 -1.26598 0
+-5.13365 -2.0823 0
+-5.04985 -2.56671 0
+-5.13938 -2.40002 0
+-5.33807 -1.49698 0
+-5.56137 -0.0695653 0
+-5.72843 1.42852 0
+-5.78457 2.46771 0
+-5.71814 2.65844 0
+-5.56819 1.92722 0
+-2.83546 0.574555 0
+-1.43242 -0.266814 0
+-1.43242 -0.292152 0
+-1.40716 -0.166095 0
+-2.74721 -0.314839 0
+-5.37074 -0.590671 0
+-5.47481 -1.09603 0
+-5.64679 -1.76882 0
+-5.88343 -2.39573 0
+-6.16653 -2.82534 0
+-6.474 -2.98207 0
+-6.79003 -2.84497 0
+-7.11002 -2.41497 0
+-7.43787 -1.69743 0
+-7.77662 -0.713289 0
+-8.11715 0.470003 0
+-8.43121 1.71451 0
+-8.67291 2.82189 0
+-8.78953 3.58366 0
+-8.7394 3.85292 0
+-8.51028 3.60485 0
+-8.13045 2.95568 0
+-7.66679 2.12785 0
+-7.20983 1.3733 0
+-6.84958 0.8838 0
+-6.64946 0.722961 0
+-6.62807 0.812124 0
+-6.7562 0.978755 0
+-6.96985 1.04414 0
+-7.19422 0.908721 0
+-7.36917 0.596022 0
+-7.46683 0.236773 0
+-7.49571 0.00357071 0
+-7.49172 0.0293885 0
+-7.50224 0.348261 0
+-7.57003 0.881478 0
+-7.72237 1.4708 0
+-7.96698 1.94099 0
+-8.29395 2.1618 0
+-8.68052 2.08257 0
+-9.09564 1.72925 0
+-9.50195 1.17351 0
+-9.85586 0.495527 0
+-10.1082 -0.238428 0
+-10.2088 -0.97445 0
+-10.1175 -1.65439 0
+-9.81784 -2.20385 0
+-9.32718 -2.53893 0
+-8.69601 -2.5924 0
+-7.99604 -2.34747 0
+-7.30009 -1.8597 0
+-6.6612 -1.25032 0
+-6.09871 -0.667596 0
+-5.59621 -0.231848 0
+-5.11143 0.00876182 0
+-4.59474 0.0906502 0
+-4.01054 0.109634 0
+-3.35302 0.167362 0
+-2.6487 0.314496 0
+-1.94404 0.519303 0
+-1.28256 0.677715 0
+-0.683158 0.661327 0
+-0.161584 0.393277 0
+-0.0326303 0.0202112 0
+-0.0150896 0.00197321 0
+-0.0135835 0.000162438 0
+-0.0169999 -0.000310934 0
+-0.0406001 -0.00319817 0
+-0.207988 -0.0384046 0
+-0.671723 -0.973948 0
+-0.942877 -2.03527 0
+-1.10536 -2.72906 0
+-1.31029 -2.97208 0
+-1.67605 -2.83474 0
+-2.25872 -2.43642 0
+-3.04735 -1.87534 0
+-3.97601 -1.20545 0
+-4.94598 -0.460371 0
+-5.85096 0.302375 0
+-6.59965 0.973647 0
+-7.13272 1.40798 0
+-7.43389 1.48469 0
+-7.5337 1.18353 0
+-7.50365 0.624177 0
+-7.43989 0.0363074 0
+-7.43914 -0.33531 0
+-7.57229 -0.348746 0
+-7.86388 -0.0465228 0
+-8.28479 0.346011 0
+-8.76212 0.513486 0
+-9.20336 0.197054 0
+-9.52685 -0.668909 0
+-9.68818 -1.89158 0
+-9.6925 -3.06219 0
+-9.58722 -3.69717 0
+-9.43788 -3.4232 0
+-9.29752 -2.12973 0
+-9.1831 -0.0253903 0
+-9.06951 2.42454 0
+-8.90416 4.65153 0
+-8.63658 6.16159 0
+-8.25049 6.66783 0
+-7.78264 6.14099 0
+-7.31902 4.77856 0
+-6.96873 2.91804 0
+-6.82489 0.934203 0
+-6.92797 -0.84415 0
+-7.24603 -2.18165 0
+-7.67991 -2.95225 0
+-8.09159 -3.13805 0
+-8.34609 -2.82278 0
+-8.35239 -2.18305 0
+-8.08903 -1.46681 0
+-7.60593 -0.941071 0
+-7.00451 -0.809394 0
+-6.40488 -1.12747 0
+-5.91192 -1.75893 0
+-5.59045 -2.40377 0
+-5.45435 -2.70281 0
+-5.46956 -2.3848 0
+-5.56809 -1.39845 0
+-5.66923 0.0315719 0
+-5.70265 1.46194 0
+-5.62796 2.39302 0
+-5.44709 2.47757 0
+-5.20794 1.68807 0
+-2.62938 0.366484 0
+-1.31245 -0.354569 0
+-1.31245 -0.300537 0
+-1.31479 -0.152477 0
+-2.57039 -0.28695 0
+-5.03573 -0.534156 0
+-5.14944 -0.982328 0
+-5.34638 -1.57188 0
+-5.62928 -2.11283 0
+-5.98076 -2.47386 0
+-6.37226 -2.59057 0
+-6.7745 -2.44273 0
+-7.1652 -2.02427 0
+-7.53153 -1.3311 0
+-7.86714 -0.377676 0
+-8.1662 0.769064 0
+-8.41802 1.96633 0
+-8.60502 3.00889 0
+-8.70579 3.68443 0
+-8.70296 3.85009 0
+-8.59298 3.49487 0
+-8.39314 2.75584 0
+-8.14189 1.8766 0
+-7.89169 1.1231 0
+-7.69578 0.687895 0
+-7.59301 0.620187 0
+-7.59677 0.815892 0
+-7.69279 1.07477 0
+-7.84634 1.19769 0
+-8.0161 1.07847 0
+-8.16875 0.74868 0
+-8.28886 0.356882 0
+-8.38039 0.0950978 0
+-8.46097 0.109972 0
+-8.55298 0.440273 0
+-8.67558 1.00407 0
+-8.83995 1.63517 0
+-9.04807 2.14912 0
+-9.29402 2.40775 0
+-9.56594 2.35449 0
+-9.847 2.0103 0
+-10.1145 1.44097 0
+-10.3378 0.718874 0
+-10.478 -0.098246 0
+-10.4906 -0.961825 0
+-10.3352 -1.80979 0
+-9.98822 -2.55083 0
+-9.45377 -3.07338 0
+-8.76657 -3.2796 0
+-7.98502 -3.12903 0
+-7.17642 -2.66829 0
+-6.39948 -2.02726 0
+-5.68979 -1.37729 0
+-5.05292 -0.868712 0
+-4.46696 -0.577203 0
+-3.89408 -0.482227 0
+-3.29827 -0.486175 0
+-2.66222 -0.468688 0
+-1.99667 -0.351058 0
+-1.33925 -0.138116 0
+-0.745428 0.0838922 0
+-0.279871 0.19577 0
+-0.0185343 0.131941 0
+-0.00214469 0.00382163 0
+-0.000384397 0.000212936 0
+-0.000236309 1.44312e-05 0
+-0.000512482 -3.4809e-05 0
+-0.00317068 -0.000539976 0
+-0.0262948 -0.0152804 0
+-0.261176 -0.739067 0
+-0.537318 -1.75913 0
+-0.811402 -2.45498 0
+-1.13488 -2.6486 0
+-1.57166 -2.39797 0
+-2.16093 -1.84715 0
+-2.90596 -1.13031 0
+-3.77592 -0.3355 0
+-4.71458 0.478294 0
+-5.65213 1.23992 0
+-6.51751 1.83903 0
+-7.25111 2.14158 0
+-7.81703 2.0506 0
+-8.21173 1.57823 0
+-8.46506 0.877513 0
+-8.63221 0.203456 0
+-8.77818 -0.189342 0
+-8.95885 -0.168072 0
+-9.20437 0.198996 0
+-9.51056 0.652202 0
+-9.84186 0.844786 0
+-10.1448 0.500019 0
+-10.3675 -0.44626 0
+-10.4776 -1.78146 0
+-10.4727 -3.06703 0
+-10.3778 -3.79214 0
+-10.2312 -3.5698 0
+-10.0669 -2.29403 0
+-9.8998 -0.19244 0
+-9.72186 2.24659 0
+-9.5096 4.43927 0
+-9.24115 5.89314 0
+-8.91463 6.3413 0
+-8.55885 5.78522 0
+-8.2299 4.44961 0
+-7.9938 2.68194 0
+-7.90187 0.842276 0
+-7.96878 -0.777248 0
+-8.16237 -1.98806 0
+-8.40997 -2.70465 0
+-8.61889 -2.92913 0
+-8.70403 -2.73764 0
+-8.61323 -2.27386 0
+-8.34129 -1.73875 0
+-7.92814 -1.35422 0
+-7.4433 -1.29424 0
+-6.96343 -1.60734 0
+-6.55116 -2.17119 0
+-6.24126 -2.71368 0
+-6.03652 -2.90755 0
+-5.91231 -2.50901 0
+-5.82707 -1.48368 0
+-5.736 -0.0594962 0
+-5.60439 1.33032 0
+-5.41753 2.20617 0
+-5.18579 2.24582 0
+-4.94484 1.44712 0
+-2.49328 0.174884 0
+-1.24544 -0.43765 0
+-1.24544 -0.313723 0
+-1.25572 -0.141251 0
+-2.4527 -0.262394 0
+-4.80371 -0.481559 0
+-4.91454 -0.871497 0
+-5.11369 -1.37273 0
+-5.40851 -1.81801 0
+-5.78285 -2.09952 0
+-6.20299 -2.17043 0
+-6.62741 -2.01831 0
+-7.01734 -1.63434 0
+-7.34497 -1.00347 0
+-7.59774 -0.124906 0
+-7.77801 0.949338 0
+-7.89886 2.08718 0
+-7.9775 3.08753 0
+-8.02895 3.73587 0
+-8.06243 3.88357 0
+-8.08156 3.514 0
+-8.08712 2.7614 0
+-8.08074 1.87021 0
+-8.0674 1.10977 0
+-8.05577 0.676265 0
+-8.056 0.62042 0
+-8.07674 0.836626 0
+-8.12289 1.12092 0
+-8.19525 1.27006 0
+-8.29186 1.17508 0
+-8.40988 0.866701 0
+-8.54676 0.493765 0
+-8.6997 0.248038 0
+-8.86424 0.274514 0
+-9.03379 0.609817 0
+-9.20075 1.17104 0
+-9.3585 1.79292 0
+-9.50287 2.29349 0
+-9.63258 2.53746 0
+-9.74825 2.47017 0
+-9.84996 2.112 0
+-9.93355 1.52456 0
+-9.98703 0.772358 0
+-9.98832 -0.0969545 0
+-9.90657 -1.04358 0
+-9.70837 -2.00799 0
+-9.36762 -2.89157 0
+-8.87517 -3.56583 0
+-8.24429 -3.91048 0
+-7.51001 -3.8633 0
+-6.72221 -3.45609 0
+-5.93436 -2.81511 0
+-5.19074 -2.12091 0
+-4.5156 -1.54385 0
+-3.90788 -1.18493 0
+-3.34467 -1.04543 0
+-2.79318 -1.03767 0
+-2.22669 -1.03517 0
+-1.63968 -0.938073 0
+-1.05769 -0.720105 0
+-0.539402 -0.434396 0
+-0.166196 -0.177436 0
+-0.00392628 -0.0303287 0
+-0.000228999 0.000124351 0
+-1.98198e-05 3.88307e-06 0
+-4.68323e-06 -5.48023e-07 0
+-3.31346e-05 -6.51273e-06 0
+-0.000356384 -0.00021683 0
+-0.00484634 -0.0107905 0
+-0.157287 -0.586626 0
+-0.468458 -1.44796 0
+-0.877574 -2.04586 0
+-1.34282 -2.18336 0
+-1.84909 -1.8917 0
+-2.39947 -1.29677 0
+-3.00527 -0.524513 0
+-3.67638 0.33561 0
+-4.41287 1.21479 0
+-5.19923 2.02628 0
+-6.00321 2.64301 0
+-6.78092 2.91929 0
+-7.48748 2.75716 0
+-8.08861 2.17936 0
+-8.56863 1.35753 0
+-8.9326 0.567428 0
+-9.20252 0.0805816 0
+-9.40888 0.0382902 0
+-9.58036 0.370469 0
+-9.73501 0.806856 0
+-9.87605 0.985832 0
+-9.99348 0.617442 0
+-10.0705 -0.369245 0
+-10.0918 -1.76012 0
+-10.0503 -3.10857 0
+-9.9492 -3.89324 0
+-9.80045 -3.71855 0
+-9.62005 -2.47443 0
+-9.42327 -0.389223 0
+-9.22145 2.04477 0
+-9.02127 4.2391 0
+-8.82667 5.69854 0
+-8.64243 6.15706 0
+-8.47704 5.61983 0
+-8.34222 4.3148 0
+-8.24887 2.58859 0
+-8.20148 0.794886 0
+-8.19399 -0.784745 0
+-8.20945 -1.97259 0
+-8.2241 -2.69 0
+-8.21419 -2.93904 0
+-8.16279 -2.78904 0
+-8.06392 -2.37272 0
+-7.92238 -1.88029 0
+-7.74931 -1.52729 0
+-7.5559 -1.48765 0
+-7.34829 -1.81495 0
+-7.12607 -2.39341 0
+-6.88454 -2.95521 0
+-6.6192 -3.17289 0
+-6.32994 -2.79827 0
+-6.02347 -1.79016 0
+-5.71328 -0.369687 0
+-5.41729 1.03433 0
+-5.1538 1.94268 0
+-4.93712 2.02914 0
+-4.77488 1.28488 0
+-2.42619 0.0689163 0
+-1.23075 -0.484464 0
+-1.23075 -0.325526 0
+-1.23379 -0.133663 0
+-2.40125 -0.243956 0
+-4.68717 -0.438972 0
+-4.78202 -0.776648 0
+-4.95974 -1.19501 0
+-5.23129 -1.54646 0
+-5.58314 -1.74767 0
+-5.97941 -1.77417 0
+-6.37017 -1.62754 0
+-6.7039 -1.30062 0
+-6.94085 -0.766521 0
+-7.06413 -0.00162105 0
+-7.08495 0.970154 0
+-7.03968 2.04192 0
+-6.97919 3.02704 0
+-6.95357 3.71025 0
+-6.99754 3.92754 0
+-7.12122 3.63768 0
+-7.30876 2.94895 0
+-7.52494 2.08638 0
+-7.72714 1.31197 0
+-7.87907 0.828199 0
+-7.96189 0.703238 0
+-7.97924 0.853974 0
+-7.95509 1.09677 0
+-7.92559 1.24056 0
+-7.92783 1.17732 0
+-7.98911 0.927984 0
+-8.11962 0.624279 0
+-8.3102 0.438617 0
+-8.53547 0.499777 0
+-8.76156 0.835911 0
+-8.95596 1.36544 0
+-9.09549 1.93246 0
+-9.17013 2.36812 0
+-9.18241 2.54974 0
+-9.14381 2.43157 0
+-9.06956 2.03776 0
+-8.97327 1.42826 0
+-8.86213 0.661223 0
+-8.73384 -0.225251 0
+-8.57582 -1.2016 0
+-8.36749 -2.21632 0
+-8.08519 -3.17387 0
+-7.70893 -3.94208 0
+-7.22943 -4.38998 0
+-6.65348 -4.43926 0
+-6.00583 -4.10374 0
+-5.32585 -3.49509 0
+-4.65844 -2.78831 0
+-4.04084 -2.16145 0
+-3.49051 -1.73525 0
+-3.00006 -1.53588 0
+-2.54149 -1.49624 0
+-2.07893 -1.49773 0
+-1.58679 -1.43022 0
+-1.06868 -1.23821 0
+-0.571498 -0.931583 0
+-0.18519 -0.563743 0
+-0.00488442 -0.210635 0
+-0.00034912 -0.00441095 0
+-3.68289e-05 -0.000308284 0
+-6.02925e-06 -3.11949e-05 0
+-2.35247e-05 1.08226e-05 0
+-0.000221741 -1.87169e-05 0
+-0.00396397 -0.00704825 0
+-0.19406 -0.39653 0
+-0.642258 -0.999757 0
+-1.24831 -1.43981 0
+-1.88269 -1.54898 0
+-2.45499 -1.3194 0
+-2.93301 -0.818742 0
+-3.3367 -0.120817 0
+-3.71884 0.71775 0
+-4.14024 1.63618 0
+-4.64669 2.53274 0
+-5.25401 3.25033 0
+-5.94449 3.60976 0
+-6.67372 3.48639 0
+-7.38305 2.88869 0
+-8.0135 1.98798 0
+-8.51818 1.07211 0
+-8.87117 0.43357 0
+-9.07121 0.238335 0
+-9.13948 0.438738 0
+-9.11196 0.779328 0
+-9.02885 0.902729 0
+-8.92457 0.51316 0
+-8.82063 -0.473185 0
+-8.72276 -1.85799 0
+-8.6228 -3.20853 0
+-8.5053 -4.01075 0
+-8.35705 -3.8668 0
+-8.17625 -2.65523 0
+-7.97747 -0.588003 0
+-7.7895 1.85679 0
+-7.64613 4.09573 0
+-7.57329 5.62571 0
+-7.5782 6.16197 0
+-7.64474 5.68637 0
+-7.73672 4.40677 0
+-7.80812 2.65999 0
+-7.8175 0.804269 0
+-7.74202 -0.860223 0
+-7.58631 -2.12831 0
+-7.3828 -2.89351 0
+-7.18286 -3.13897 0
+-7.04103 -2.93087 0
+-6.99692 -2.41684 0
+-7.0608 -1.8164 0
+-7.20788 -1.38022 0
+-7.383 -1.31253 0
+-7.51493 -1.68302 0
+-7.53603 -2.37231 0
+-7.4015 -3.08973 0
+-7.10228 -3.47212 0
+-6.66788 -3.23267 0
+-6.15912 -2.29892 0
+-5.65284 -0.875968 0
+-5.22255 0.604049 0
+-4.91962 1.63975 0
+-4.7594 1.86893 0
+-4.71597 1.24144 0
+-2.42905 0.0796911 0
+-1.26072 -0.48069 0
+-1.26072 -0.332615 0
+-1.25563 -0.13071 0
+-2.43089 -0.23399 0
+-4.71872 -0.411671 0
+-4.78621 -0.709155 0
+-4.92214 -1.05907 0
+-5.14067 -1.32793 0
+-5.43319 -1.45515 0
+-5.76631 -1.44104 0
+-6.08774 -1.30611 0
+-6.33895 -1.04941 0
+-6.47196 -0.63351 0
+-6.4657 -0.00788038 0
+-6.33627 0.84073 0
+-6.1362 1.84184 0
+-5.94131 2.83216 0
+-5.82911 3.59804 0
+-5.85546 3.95389 0
+-6.03733 3.81955 0
+-6.34723 3.25884 0
+-6.72115 2.46031 0
+-7.07762 1.66844 0
+-7.34227 1.09285 0
+-7.47039 0.831353 0
+-7.45952 0.843109 0
+-7.34812 0.985369 0
+-7.2013 1.09374 0
+-7.08924 1.06526 0
+-7.06563 0.904379 0
+-7.15311 0.711754 0
+-7.33942 0.624932 0
+-7.58429 0.744643 0
+-7.83361 1.08524 0
+-8.03601 1.56784 0
+-8.1555 2.05194 0
+-8.17685 2.38947 0
+-8.10411 2.47701 0
+-7.9551 2.28255 0
+-7.75463 1.83729 0
+-7.5286 1.20224 0
+-7.29941 0.432034 0
+-7.08274 -0.441917 0
+-6.88506 -1.39928 0
+-6.70136 -2.40002 0
+-6.51452 -3.36071 0
+-6.2981 -4.15851 0
+-6.02361 -4.66446 0
+-5.67091 -4.79196 0
+-5.23802 -4.53664 0
+-4.74582 -3.98729 0
+-4.23363 -3.30051 0
+-3.74573 -2.64935 0
+-3.31424 -2.16674 0
+-2.94587 -1.90425 0
+-2.61774 -1.82438 0
+-2.28484 -1.83063 0
+-1.89831 -1.81675 0
+-1.4296 -1.70692 0
+-0.894344 -1.46684 0
+-0.373327 -1.08476 0
+-0.028201 -0.55576 0
+-0.00368035 -0.0289316 0
+-0.000638453 -0.00335016 0
+-0.000278507 -0.000391076 0
+-0.000510449 0.000242705 0
+-0.00265481 0.00212563 0
+-0.0204421 0.0107391 0
+-0.392004 -0.0249682 0
+-1.10232 -0.289438 0
+-1.95706 -0.585066 0
+-2.7593 -0.746742 0
+-3.37408 -0.704623 0
+-3.75318 -0.43964 0
+-3.93158 0.0575889 0
+-4.00253 0.788695 0
+-4.08117 1.71483 0
+-4.26847 2.72003 0
+-4.62521 3.60707 0
+-5.16108 4.14563 0
+-5.83697 4.16228 0
+-6.57674 3.62846 0
+-7.28516 2.6964 0
+-7.86882 1.65577 0
+-8.25655 0.821294 0
+-8.41484 0.396632 0
+-8.35434 0.378232 0
+-8.12472 0.549712 0
+-7.79951 0.577518 0
+-7.4555 0.169153 0
+-7.15273 -0.775956 0
+-6.92019 -2.09053 0
+-6.75227 -3.37645 0
+-6.61814 -4.14488 0
+-6.48115 -4.0038 0
+-6.32061 -2.81577 0
+-6.14637 -0.762234 0
+-5.99886 1.70928 0
+-5.93322 4.03009 0
+-5.99402 5.6865 0
+-6.19143 6.35938 0
+-6.48947 5.98441 0
+-6.81167 4.72898 0
+-7.06319 2.91151 0
+-7.16227 0.903349 0
+-7.0701 -0.952397 0
+-6.80781 -2.39059 0
+-6.45396 -3.24736 0
+-6.12233 -3.4706 0
+-5.92703 -3.12617 0
+-5.94578 -2.39809 0
+-6.19403 -1.56816 0
+-6.61844 -0.955808 0
+-7.11103 -0.819939 0
+-7.53907 -1.25497 0
+-7.78167 -2.12971 0
+-7.76223 -3.10917 0
+-7.46765 -3.7667 0
+-6.94996 -3.75036 0
+-6.31151 -2.93737 0
+-5.67791 -1.50957 0
+-5.16549 0.0916232 0
+-4.85086 1.32512 0
+-4.74972 1.76778 0
+-4.80946 1.30119 0
+-2.50925 0.187466 0
+-1.32701 -0.435507 0
+-1.32701 -0.336072 0
+-1.3276 -0.132676 0
+-2.55798 -0.233521 0
+-4.93833 -0.402403 0
+-4.97207 -0.675422 0
+-5.05425 -0.976886 0
+-5.20209 -1.18009 0
+-5.41426 -1.24298 0
+-5.66494 -1.19035 0
+-5.9063 -1.06475 0
+-6.07953 -0.876187 0
+-6.13237 -0.580665 0
+-6.03849 -0.101764 0
+-5.81187 0.61411 0
+-5.5092 1.53918 0
+-5.21725 2.5402 0
+-5.02865 3.40943 0
+-5.01368 3.93893 0
+-5.1972 4.00308 0
+-5.54877 3.61041 0
+-5.98972 2.90126 0
+-6.41532 2.09404 0
+-6.72571 1.40324 0
+-6.85638 0.962025 0
+-6.79717 0.7839 0
+-6.59297 0.781166 0
+-6.32662 0.827391 0
+-6.09078 0.829417 0
+-5.95889 0.772492 0
+-5.96517 0.718034 0
+-6.09922 0.758984 0
+-6.31492 0.960341 0
+-6.54837 1.31869 0
+-6.73821 1.75768 0
+-6.84099 2.15472 0
+-6.83741 2.3859 0
+-6.73036 2.36995 0
+-6.53829 2.09048 0
+-6.28817 1.58717 0
+-6.01025 0.924317 0
+-5.73493 0.156715 0
+-5.49042 -0.68643 0
+-5.29888 -1.59082 0
+-5.17017 -2.52873 0
+-5.09582 -3.43506 0
+-5.04785 -4.20648 0
+-4.98525 -4.72706 0
+-4.86745 -4.90976 0
+-4.67008 -4.734 0
+-4.39616 -4.26121 0
+-4.0764 -3.62026 0
+-3.75724 -2.96852 0
+-3.48104 -2.44294 0
+-3.26638 -2.11892 0
+-3.096 -1.99476 0
+-2.91876 -2.00786 0
+-2.66626 -2.06924 0
+-2.2779 -2.09528 0
+-1.72316 -2.02159 0
+-1.01446 -1.79345 0
+-0.253763 -1.31646 0
+-0.0523674 -0.230327 0
+-0.0206574 -0.0350601 0
+-0.0156639 -0.0053846 0
+-0.0187487 0.0033275 0
+-0.0444032 0.0277802 0
+-0.20738 0.173716 0
+-1.02595 0.7936 0
+-2.06283 0.747446 0
+-3.11639 0.468492 0
+-4.00416 0.141028 0
+-4.5948 -0.113978 0
+-4.84646 -0.187984 0
+-4.81202 0.0231522 0
+-4.61445 0.591122 0
+-4.40535 1.50573 0
+-4.32212 2.6368 0
+-4.4559 3.74085 0
+-4.83591 4.52565 0
+-5.42832 4.75468 0
+-6.14644 4.34659 0
+-6.87032 3.42027 0
+-7.47264 2.2581 0
+-7.84724 1.19589 0
+-7.93398 0.483378 0
+-7.73327 0.177517 0
+-7.30458 0.121026 0
+-6.74881 0.0217514 0
+-6.17947 -0.400193 0
+-5.69133 -1.26409 0
+-5.33587 -2.44599 0
+-5.11199 -3.60032 0
+-4.97651 -4.28035 0
+-4.87094 -4.10937 0
+-4.75378 -2.93293 0
+-4.62425 -0.891758 0
+-4.52607 1.6111 0
+-4.52841 4.03243 0
+-4.69193 5.85002 0
+-5.03483 6.70228 0
+-5.51406 6.46363 0
+-6.0303 5.24523 0
+-6.45665 3.33786 0
+-6.68111 1.12781 0
+-6.64754 -0.985968 0
+-6.37941 -2.65872 0
+-5.97694 -3.64983 0
+-5.58795 -3.85959 0
+-5.36166 -3.35246 0
+-5.40083 -2.35892 0
+-5.72915 -1.23984 0
+-6.28407 -0.400884 0
+-6.93562 -0.168392 0
+-7.52378 -0.666811 0
+-7.9028 -1.75069 0
+-7.97942 -3.03255 0
+-7.73487 -4.01125 0
+-7.22648 -4.25875 0
+-6.57058 -3.59326 0
+-5.9113 -2.16885 0
+-5.38261 -0.437068 0
+-5.07281 1.01532 0
+-4.9995 1.69447 0
+-5.10085 1.40254 0
+-2.67704 0.331666 0
+-1.42446 -0.376745 0
+-1.42446 -0.34051 0
+-1.4499 -0.138675 0
+-2.78786 -0.241365 0
+-5.36665 -0.40975 0
+-5.36808 -0.673988 0
+-5.39716 -0.947802 0
+-5.47352 -1.10373 0
+-5.60419 -1.11231 0
+-5.77454 -1.02001 0
+-5.94694 -0.892347 0
+-6.06859 -0.754533 0
+-6.087 -0.562254 0
+-5.96953 -0.219233 0
+-5.7205 0.365073 0
+-5.38744 1.20612 0
+-5.05207 2.20484 0
+-4.80809 3.16546 0
+-4.7324 3.86323 0
+-4.85892 4.1296 0
+-5.16458 3.91607 0
+-5.57298 3.30966 0
+-5.97524 2.4963 0
+-6.26204 1.69003 0
+-6.35734 1.05732 0
+-6.24189 0.668454 0
+-5.95746 0.49673 0
+-5.59058 0.460511 0
+-5.24265 0.481492 0
+-4.99766 0.527497 0
+-4.89899 0.619366 0
+-4.94247 0.802469 0
+-5.08536 1.10323 0
+-5.26505 1.49838 0
+-5.41989 1.91252 0
+-5.50517 2.24 0
+-5.49971 2.38044 0
+-5.40361 2.27385 0
+-5.23156 1.91842 0
+-5.00622 1.36184 0
+-4.75467 0.672761 0
+-4.50746 -0.0904968 0
+-4.29785 -0.896038 0
+-4.15738 -1.73129 0
+-4.10677 -2.57934 0
+-4.14592 -3.39591 0
+-4.24935 -4.10304 0
+-4.37129 -4.60512 0
+-4.46018 -4.82087 0
+-4.47744 -4.71674 0
+-4.4126 -4.32605 0
+-4.28753 -3.74533 0
+-4.1472 -3.10884 0
+-4.03978 -2.55036 0
+-3.99304 -2.16565 0
+-3.9969 -1.9909 0
+-4.00137 -2.0034 0
+-3.93298 -2.13763 0
+-3.72475 -2.3035 0
+-3.35049 -2.39585 0
+-2.85296 -2.29099 0
+-2.33061 -1.83881 0
+-1.61834 -0.942595 0
+-1.23199 -0.421414 0
+-1.09451 -0.142864 0
+-1.16119 0.0700111 0
+-1.48 0.346587 0
+-2.13374 0.827451 0
+-2.8684 1.52827 0
+-3.82289 1.70194 0
+-4.79713 1.44273 0
+-5.58319 0.927084 0
+-6.04338 0.34621 0
+-6.13981 -0.0915505 0
+-5.9333 -0.183363 0
+-5.55594 0.213763 0
+-5.16872 1.11851 0
+-4.91825 2.38633 0
+-4.90422 3.72682 0
+-5.16255 4.78398 0
+-5.66265 5.25478 0
+-6.3159 4.99984 0
+-6.99378 4.09815 0
+-7.55408 2.8184 0
+-7.87228 1.51409 0
+-7.87199 0.48308 0
+-7.54571 -0.148762 0
+-6.95789 -0.466795 0
+-6.22736 -0.708778 0
+-5.49372 -1.13383 0
+-4.8778 -1.88001 0
+-4.44885 -2.87495 0
+-4.20993 -3.83925 0
+-4.10773 -4.38255 0
+-4.0636 -4.1535 0
+-4.01342 -2.98311 0
+-3.93937 -0.965804 0
+-3.87911 1.55084 0
+-3.90763 4.06095 0
+-4.0997 6.04209 0
+-4.48941 7.09199 0
+-5.04451 7.01874 0
+-5.66719 5.8679 0
+-6.22209 3.89275 0
+-6.58181 1.48753 0
+-6.67262 -0.895157 0
+-6.50281 -2.82853 0
+-6.16299 -3.98965 0
+-5.79801 -4.22456 0
+-5.56 -3.59047 0
+-5.55928 -2.35965 0
+-5.83096 -0.96816 0
+-6.32712 0.0952759 0
+-6.93409 0.438578 0
+-7.50707 -0.0938279 0
+-7.91054 -1.34722 0
+-8.05293 -2.89016 0
+-7.90716 -4.15703 0
+-7.51413 -4.65178 0
+-6.97006 -4.13733 0
+-6.40036 -2.73855 0
+-5.9264 -0.911035 0
+-5.63279 0.721711 0
+-5.54282 1.60451 0
+-5.60801 1.46772 0
+-2.93481 0.439101 0
+-1.55047 -0.337076 0
+-1.55047 -0.351016 0
+-1.61071 -0.146444 0
+-3.10169 -0.253724 0
+-5.97597 -0.427407 0
+-5.95554 -0.694411 0
+-5.94612 -0.957228 0
+-5.96795 -1.08189 0
+-6.03499 -1.04527 0
+-6.14436 -0.910639 0
+-6.27183 -0.764883 0
+-6.37519 -0.65117 0
+-6.40562 -0.531823 0
+-6.32459 -0.300262 0
+-6.12142 0.161901 0
+-5.8235 0.908196 0
+-5.49343 1.87477 0
+-5.21306 2.88508 0
+-5.05831 3.70847 0
+-5.0729 4.1442 0
+-5.25068 4.09385 0
+-5.53377 3.59275 0
+-5.82805 2.79058 0
+-6.03123 1.89321 0
+-6.06517 1.09126 0
+-5.90143 0.50471 0
+-5.56974 0.165043 0
+-5.14609 0.0368593 0
+-4.72566 0.0610608 0
+-4.39167 0.193509 0
+-4.19177 0.419471 0
+-4.12968 0.740379 0
+-4.17257 1.14612 0
+-4.26804 1.59386 0
+-4.36286 2.00733 0
+-4.41748 2.29463 0
+-4.41238 2.37534 0
+-4.34582 2.20729 0
+-4.22743 1.80003 0
+-4.07256 1.20698 0
+-3.90052 0.500722 0
+-3.73599 -0.255033 0
+-3.6099 -1.02213 0
+-3.55551 -1.78568 0
+-3.59833 -2.53652 0
+-3.74417 -3.25007 0
+-3.9723 -3.87491 0
+-4.23893 -4.3385 0
+-4.49081 -4.56899 0
+-4.68402 -4.52352 0
+-4.80022 -4.20985 0
+-4.85348 -3.69207 0
+-4.88427 -3.07805 0
+-4.94157 -2.49307 0
+-5.05887 -2.04835 0
+-5.23455 -1.81521 0
+-5.42706 -1.81089 0
+-5.56893 -1.99576 0
+-5.59475 -2.27768 0
+-5.47032 -2.52028 0
+-5.20247 -2.55884 0
+-4.79708 -2.24421 0
+-4.16879 -1.57088 0
+-3.66797 -0.922232 0
+-3.43948 -0.371354 0
+-3.52825 0.158777 0
+-3.94418 0.762522 0
+-4.60543 1.4887 0
+-5.27673 2.19957 0
+-6.02231 2.44752 0
+-6.73946 2.15988 0
+-7.27731 1.46493 0
+-7.52848 0.597382 0
+-7.46822 -0.151818 0
+-7.1555 -0.49608 0
+-6.70859 -0.233144 0
+-6.26818 0.678099 0
+-5.961 2.07916 0
+-5.87297 3.63879 0
+-6.03501 4.94603 0
+-6.42045 5.64022 0
+-6.9509 5.53028 0
+-7.50965 4.6569 0
+-7.96288 3.27163 0
+-8.18799 1.7392 0
+-8.10481 0.399902 0
+-7.70034 -0.553233 0
+-7.03666 -1.13048 0
+-6.23661 -1.50882 0
+-5.44989 -1.92056 0
+-4.80968 -2.52022 0
+-4.3946 -3.29002 0
+-4.20941 -4.02444 0
+-4.19234 -4.39962 0
+-4.2469 -4.09895 0
+-4.28574 -2.94428 0
+-4.26859 -0.982947 0
+-4.21803 1.50028 0
+-4.2064 4.04931 0
+-4.32012 6.15581 0
+-4.617 7.38887 0
+-5.09472 7.49645 0
+-5.68368 6.45687 0
+-6.26751 4.47658 0
+-6.72286 1.94288 0
+-6.96273 -0.655286 0
+-6.96656 -2.8247 0
+-6.78638 -4.16983 0
+-6.52749 -4.48345 0
+-6.31136 -3.8066 0
+-6.23557 -2.43544 0
+-6.34599 -0.857735 0
+-6.62859 0.377872 0
+-7.01966 0.829654 0
+-7.42808 0.314586 0
+-7.7609 -1.0144 0
+-7.94567 -2.70539 0
+-7.9455 -4.1572 0
+-7.76593 -4.83134 0
+-7.45236 -4.4509 0
+-7.07791 -3.113 0
+-6.72451 -1.26443 0
+-6.4608 0.457994 0
+-6.32105 1.46476 0
+-6.29142 1.43809 0
+-3.26386 0.457454 0
+-1.69972 -0.337303 0
+-1.69972 -0.36904 0
+-1.78319 -0.152595 0
+-3.44928 -0.264607 0
+-6.67305 -0.444963 0
+-6.64864 -0.718827 0
+-6.6265 -0.979364 0
+-6.62429 -1.0841 0
+-6.65853 -1.01104 0
+-6.73521 -0.833955 0
+-6.84337 -0.656725 0
+-6.95388 -0.540657 0
+-7.02517 -0.460538 0
+-7.01528 -0.310154 0
+-6.89736 0.0439814 0
+-6.67277 0.683609 0
+-6.37591 1.57791 0
+-6.06727 2.57644 0
+-5.81542 3.45662 0
+-5.67345 4.00223 0
+-5.65878 4.07918 0
+-5.74463 3.6786 0
+-5.86691 2.91287 0
+-5.94452 1.97083 0
+-5.90651 1.05325 0
+-5.71697 0.315175 0
+-5.38743 -0.164504 0
+-4.97127 -0.379299 0
+-4.54342 -0.366783 0
+-4.17422 -0.175697 0
+-3.90804 0.15329 0
+-3.75437 0.58671 0
+-3.6926 1.08435 0
+-3.68558 1.58684 0
+-3.69476 2.0165 0
+-3.69174 2.29161 0
+-3.66344 2.34704 0
+-3.60986 2.15371 0
+-3.538 1.72817 0
+-3.4572 1.12617 0
+-3.37858 0.422105 0
+-3.31811 -0.315508 0
+-3.299 -1.04123 0
+-3.34924 -1.73544 0
+-3.49267 -2.39309 0
+-3.73721 -3.00553 0
+-4.06721 -3.54491 0
+-4.44516 -3.96055 0
+-4.82286 -4.1913 0
+-5.15757 -4.18881 0
+-5.4272 -3.94022 0
+-5.63844 -3.48083 0
+-5.82385 -2.89265 0
+-6.02762 -2.28929 0
+-6.28467 -1.7913 0
+-6.602 -1.49789 0
+-6.95168 -1.46121 0
+-7.27946 -1.66798 0
+-7.52473 -2.03241 0
+-7.64006 -2.40494 0
+-7.59563 -2.60327 0
+-7.36418 -2.47566 0
+-6.93605 -1.99902 0
+-6.51894 -1.33934 0
+-6.29431 -0.595982 0
+-6.35118 0.215648 0
+-6.68295 1.09429 0
+-7.1754 1.98115 0
+-7.6612 2.68536 0
+-8.12256 2.90888 0
+-8.50942 2.54675 0
+-8.74605 1.70156 0
+-8.77848 0.629808 0
+-8.60311 -0.327185 0
+-8.26871 -0.830485 0
+-7.8593 -0.642548 0
+-7.46958 0.288378 0
+-7.18239 1.79197 0
+-7.05347 3.50986 0
+-7.10367 4.99623 0
+-7.31675 5.8533 0
+-7.64065 5.85419 0
+-7.99274 5.00899 0
+-8.27128 3.55017 0
+-8.37558 1.84349 0
+-8.23326 0.257583 0
+-7.82634 -0.960151 0
+-7.20438 -1.75244 0
+-6.47662 -2.23659 0
+-5.78282 -2.61436 0
+-5.25151 -3.05152 0
+-4.96005 -3.58149 0
+-4.91148 -4.073 0
+-5.03764 -4.27346 0
+-5.22796 -3.90863 0
+-5.37343 -2.7988 0
+-5.40814 -0.948236 0
+-5.33202 1.42416 0
+-5.20652 3.92381 0
+-5.12591 6.0752 0
+-5.17669 7.43966 0
+-5.40188 7.72164 0
+-5.78408 6.83906 0
+-6.25264 4.94515 0
+-6.71039 2.40063 0
+-7.0677 -0.297973 0
+-7.27075 -2.62166 0
+-7.31433 -4.12625 0
+-7.23657 -4.5612 0
+-7.09997 -3.94321 0
+-6.96897 -2.56644 0
+-6.89337 -0.933335 0
+-6.90075 0.385245 0
+-6.99639 0.925295 0
+-7.16666 0.484856 0
+-7.38264 -0.798417 0
+-7.60402 -2.48401 0
+-7.78556 -3.97566 0
+-7.88713 -4.72976 0
+-7.88445 -4.45359 0
+-7.77735 -3.2201 0
+-7.59245 -1.44932 0
+-7.37657 0.242113 0
+-7.18085 1.26904 0
+-7.04072 1.29796 0
+-3.61504 0.378517 0
+-1.85684 -0.374434 0
+-1.85684 -0.388943 0
+-1.9278 -0.153342 0
+-3.75245 -0.267116 0
+-7.30388 -0.450191 0
+-7.29655 -0.726157 0
+-7.29224 -0.983679 0
+-7.3017 -1.07464 0
+-7.33758 -0.975159 0
+-7.40903 -0.762499 0
+-7.51547 -0.550286 0
+-7.6415 -0.414629 0
+-7.75614 -0.345893 0
+-7.81832 -0.247977 0
+-7.78808 0.0137415 0
+-7.64105 0.536581 0
+-7.38065 1.31751 0
+-7.04129 2.23709 0
+-6.6796 3.09492 0
+-6.35592 3.67855 0
+-6.1134 3.83667 0
+-5.96283 3.52803 0
+-5.8795 2.82954 0
+-5.81327 1.90459 0
+-5.70813 0.94812 0
+-5.52409 0.131133 0
+-5.25194 -0.436654 0
+-4.91477 -0.71647 0
+-4.55652 -0.725037 0
+-4.22372 -0.508496 0
+-3.94883 -0.121599 0
+-3.7419 0.379782 0
+-3.59275 0.935193 0
+-3.4804 1.4745 0
+-3.384 1.9201 0
+-3.29075 2.19836 0
+-3.19895 2.25524 0
+-3.11534 2.0701 0
+-3.04939 1.66222 0
+-3.00894 1.08572 0
+-3.00012 0.413278 0
+-3.03077 -0.284852 0
+-3.11408 -0.95792 0
+-3.26812 -1.5814 0
+-3.50974 -2.15147 0
+-3.84515 -2.67012 0
+-4.26263 -3.12742 0
+-4.73246 -3.49072 0
+-5.21428 -3.70948 0
+-5.66927 -3.73382 0
+-6.07279 -3.53671 0
+-6.42278 -3.13084 0
+-6.73993 -2.57549 0
+-7.05848 -1.97074 0
+-7.41073 -1.43906 0
+-7.81173 -1.09688 0
+-8.25091 -1.02203 0
+-8.69395 -1.22494 0
+-9.0928 -1.63357 0
+-9.39674 -2.101 0
+-9.55855 -2.44146 0
+-9.54092 -2.49329 0
+-9.34975 -2.19018 0
+-9.1042 -1.58488 0
+-8.9427 -0.757479 0
+-8.94606 0.219009 0
+-9.10782 1.25605 0
+-9.34018 2.21351 0
+-9.53666 2.88184 0
+-9.66601 3.03824 0
+-9.71667 2.59741 0
+-9.6769 1.66179 0
+-9.54302 0.495925 0
+-9.3276 -0.542605 0
+-9.05792 -1.10016 0
+-8.76758 -0.932886 0
+-8.48807 0.00886619 0
+-8.24473 1.54863 0
+-8.05676 3.32189 0
+-7.93768 4.87715 0
+-7.89291 5.80852 0
+-7.91398 5.87525 0
+-7.97226 5.06728 0
+-8.01752 3.59542 0
+-7.98637 1.81235 0
+-7.82221 0.0934186 0
+-7.50025 -1.28211 0
+-7.04611 -2.20657 0
+-6.53721 -2.74549 0
+-6.08317 -3.0684 0
+-5.79061 -3.34408 0
+-5.72514 -3.64696 0
+-5.88541 -3.91273 0
+-6.20026 -3.95861 0
+-6.55109 -3.5578 0
+-6.8116 -2.53829 0
+-6.89019 -0.86965 0
+-6.75948 1.29345 0
+-6.46292 3.62725 0
+-6.09678 5.70906 0
+-5.77569 7.11857 0
+-5.59554 7.54149 0
+-5.60669 6.85021 0
+-5.80497 5.14343 0
+-6.14013 2.73578 0
+-6.53547 0.0973712 0
+-6.91035 -2.24678 0
+-7.19832 -3.83829 0
+-7.3575 -4.40202 0
+-7.37421 -3.9265 0
+-7.26317 -2.67747 0
+-7.06583 -1.13068 0
+-6.84534 0.164757 0
+-6.67593 0.75588 0
+-6.62563 0.43456 0
+-6.73576 -0.688292 0
+-7.00433 -2.21544 0
+-7.38197 -3.59802 0
+-7.78344 -4.32829 0
+-8.11233 -4.1247 0
+-8.29215 -3.04028 0
+-8.29273 -1.44874 0
+-8.14075 0.0901356 0
+-7.90884 1.03714 0
+-7.68685 1.07597 0
+-3.9098 0.239904 0
+-1.99131 -0.420738 0
+-1.99131 -0.397059 0
+-1.99991 -0.145579 0
+-3.92005 -0.255353 0
+-7.68285 -0.432385 0
+-7.71108 -0.697922 0
+-7.75143 -0.943338 0
+-7.80371 -1.02235 0
+-7.87003 -0.90884 0
+-7.95592 -0.676605 0
+-8.06659 -0.439618 0
+-8.19939 -0.281824 0
+-8.33668 -0.208607 0
+-8.44345 -0.1412 0
+-8.47301 0.0433028 0
+-8.38107 0.444639 0
+-8.14353 1.07997 0
+-7.76894 1.86251 0
+-7.29936 2.62534 0
+-6.79856 3.17774 0
+-6.33218 3.37029 0
+-5.94766 3.14351 0
+-5.66158 2.54346 0
+-5.45892 1.70193 0
+-5.30371 0.792908 0
+-5.15597 -0.0166076 0
+-4.98721 -0.605413 0
+-4.78816 -0.915521 0
+-4.56669 -0.94651 0
+-4.33864 -0.736539 0
+-4.11733 -0.342914 0
+-3.90712 0.169575 0
+-3.70382 0.73189 0
+-3.50019 1.27087 0
+-3.29272 1.71263 0
+-3.08593 1.99157 0
+-2.89286 2.06217 0
+-2.73154 1.90877 0
+-2.61922 1.5499 0
+-2.56784 1.03435 0
+-2.5833 0.428744 0
+-2.66844 -0.199714 0
+-2.82708 -0.799282 0
+-3.06585 -1.34263 0
+-3.39177 -1.82555 0
+-3.80642 -2.25547 0
+-4.30017 -2.63368 0
+-4.85008 -2.94081 0
+-5.42314 -3.13641 0
+-5.98383 -3.17313 0
+-6.50379 -3.01674 0
+-6.96997 -2.66465 0
+-7.38781 -2.15765 0
+-7.77783 -1.58073 0
+-8.16696 -1.04993 0
+-8.57776 -0.686077 0
+-9.01963 -0.580156 0
+-9.48443 -0.760143 0
+-9.94667 -1.17132 0
+-10.3666 -1.68105 0
+-10.6958 -2.11225 0
+-10.8904 -2.29873 0
+-10.9393 -2.14134 0
+-10.8921 -1.63199 0
+-10.8224 -0.827184 0
+-10.7773 0.173872 0
+-10.7523 1.23106 0
+-10.7003 2.1615 0
+-10.5751 2.75663 0
+-10.3773 2.84047 0
+-10.1381 2.35822 0
+-9.89551 1.41916 0
+-9.67995 0.28036 0
+-9.50601 -0.716548 0
+-9.36741 -1.23876 0
+-9.23793 -1.06236 0
+-9.08023 -0.148835 0
+-8.86097 1.32937 0
+-8.56623 3.02715 0
+-8.20983 4.52075 0
+-7.82988 5.42858 0
+-7.47427 5.51964 0
+-7.18091 4.77392 0
+-6.9617 3.37622 0
+-6.79817 1.64881 0
+-6.65238 -0.0523657 0
+-6.48969 -1.44481 0
+-6.30239 -2.39387 0
+-6.12201 -2.92586 0
+-6.01244 -3.17797 0
+-6.04516 -3.31137 0
+-6.26626 -3.42586 0
+-6.66909 -3.50989 0
+-7.18455 -3.44315 0
+-7.69413 -3.04822 0
+-8.06204 -2.17038 0
+-8.17549 -0.756206 0
+-7.97949 1.09745 0
+-7.4944 3.14215 0
+-6.81056 5.02522 0
+-6.06343 6.37143 0
+-5.39834 6.87641 0
+-4.93622 6.38809 0
+-4.74854 4.95575 0
+-4.84608 2.83331 0
+-5.18118 0.432478 0
+-5.66112 -1.76684 0
+-6.16853 -3.33088 0
+-6.58583 -3.98472 0
+-6.82085 -3.69147 0
+-6.82995 -2.66836 0
+-6.63247 -1.32817 0
+-6.31035 -0.157355 0
+-5.98966 0.435185 0
+-5.80573 0.250629 0
+-5.86123 -0.632789 0
+-6.19088 -1.88579 0
+-6.74633 -3.04257 0
+-7.4079 -3.66672 0
+-8.02118 -3.51143 0
+-8.44779 -2.61366 0
+-8.61251 -1.28403 0
+-8.52861 0.00623281 0
+-8.29123 0.799765 0
+-8.03989 0.824632 0
+-4.05476 0.103728 0
+-2.05911 -0.435769 0
+-2.05911 -0.374701 0
+-1.96123 -0.127999 0
+-3.87113 -0.226444 0
+-7.63987 -0.385867 0
+-7.71373 -0.624069 0
+-7.81381 -0.843256 0
+-7.92677 -0.909388 0
+-8.03965 -0.795963 0
+-8.14881 -0.567437 0
+-8.26042 -0.328013 0
+-8.38207 -0.160172 0
+-8.51035 -0.0803325 0
+-8.62104 -0.0305048 0
+-8.66872 0.0909835 0
+-8.59874 0.374663 0
+-8.36773 0.848948 0
+-7.96276 1.45754 0
+-7.41069 2.07327 0
+-6.77343 2.54049 0
+-6.13114 2.72799 0
+-5.5597 2.57208 0
+-5.11112 2.09488 0
+-4.80333 1.39414 0
+-4.62186 0.611441 0
+-4.53084 -0.107626 0
+-4.48751 -0.648741 0
+-4.45444 -0.948593 0
+-4.40541 -0.995535 0
+-4.32485 -0.817105 0
+-4.2037 -0.464057 0
+-4.036 0.00186789 0
+-3.81843 0.514325 0
+-3.55301 1.00546 0
+-3.25026 1.40988 0
+-2.93043 1.67174 0
+-2.62164 1.75338 0
+-2.35514 1.64228 0
+-2.15914 1.3539 0
+-2.05362 0.928819 0
+-2.04837 0.423497 0
+-2.14489 -0.103195 0
+-2.34036 -0.603807 0
+-2.63136 -1.05164 0
+-3.01499 -1.44192 0
+-3.48704 -1.78342 0
+-4.03805 -2.08267 0
+-4.64969 -2.32917 0
+-5.29408 -2.49202 0
+-5.93721 -2.53 0
+-6.54563 -2.40833 0
+-7.09407 -2.11621 0
+-7.57147 -1.68026 0
+-7.98337 -1.16882 0
+-8.35006 -0.683241 0
+-8.70074 -0.335402 0
+-9.06514 -0.215754 0
+-9.46423 -0.361058 0
+-9.90176 -0.733789 0
+-10.3591 -1.22371 0
+-10.7963 -1.67502 0
+-11.1635 -1.93155 0
+-11.4219 -1.88296 0
+-11.5615 -1.49238 0
+-11.5917 -0.796974 0
+-11.5201 0.10229 0
+-11.3415 1.05243 0
+-11.0462 1.86625 0
+-10.6448 2.3552 0
+-10.186 2.3817 0
+-9.74461 1.91679 0
+-9.39419 1.06874 0
+-9.18166 0.0678309 0
+-9.10971 -0.78849 0
+-9.13205 -1.21642 0
+-9.16381 -1.0306 0
+-9.10583 -0.206816 0
+-8.87601 1.09954 0
+-8.43721 2.58835 0
+-7.81137 3.89492 0
+-7.07422 4.69143 0
+-6.33214 4.77756 0
+-5.68969 4.13146 0
+-5.21975 2.90628 0
+-4.94709 1.37615 0
+-4.85085 -0.148608 0
+-4.88429 -1.41136 0
+-5.00286 -2.27531 0
+-5.18685 -2.74187 0
+-5.44801 -2.91681 0
+-5.8169 -2.94247 0
+-6.31711 -2.92566 0
+-6.93795 -2.88904 0
+-7.6183 -2.7628 0
+-8.2492 -2.41732 0
+-8.69619 -1.72339 0
+-8.8346 -0.617794 0
+-8.58662 0.849474 0
+-7.94768 2.50321 0
+-6.99372 4.07127 0
+-5.86773 5.24544 0
+-4.74984 5.75852 0
+-3.8193 5.45755 0
+-3.21715 4.35361 0
+-3.01741 2.63357 0
+-3.21234 0.627407 0
+-3.71476 -1.26442 0
+-4.37733 -2.6683 0
+-5.02637 -3.33568 0
+-5.50448 -3.21336 0
+-5.71228 -2.46056 0
+-5.63724 -1.40321 0
+-5.3594 -0.435198 0
+-5.02937 0.105161 0
+-4.82255 0.043803 0
+-4.88244 -0.572894 0
+-5.27175 -1.49648 0
+-5.94841 -2.36591 0
+-6.77625 -2.83888 0
+-7.56876 -2.71892 0
+-8.15211 -2.03031 0
+-8.42543 -1.01071 0
+-8.39616 -0.0230382 0
+-8.17689 0.580496 0
+-7.9428 0.59054 0
+-3.96889 0.0221897 0
+-2.01419 -0.387524 0
+-2.01419 -0.305582 0
+-1.79169 -0.101856 0
+-3.55988 -0.182005 0
+-7.07233 -0.312559 0
+-7.18937 -0.507028 0
+-7.34704 -0.685583 0
+-7.51953 -0.736895 0
+-7.6783 -0.637198 0
+-7.80823 -0.437501 0
+-7.91276 -0.223487 0
+-8.00616 -0.0667645 0
+-8.09785 0.0113577 0
+-8.17703 0.0486739 0
+-8.2068 0.120755 0
+-8.13264 0.300499 0
+-7.90242 0.618735 0
+-7.48896 1.04408 0
+-6.90509 1.4894 0
+-6.20532 1.84071 0
+-5.47322 1.9959 0
+-4.79968 1.89854 0
+-4.25976 1.55496 0
+-3.89611 1.03049 0
+-3.7133 0.428631 0
+-3.6828 -0.138131 0
+-3.75521 -0.576327 0
+-3.87452 -0.829288 0
+-3.98924 -0.880814 0
+-4.05837 -0.747966 0
+-4.0529 -0.469533 0
+-3.95532 -0.0957142 0
+-3.75959 0.318599 0
+-3.472 0.717868 0
+-3.11188 1.04976 0
+-2.7106 1.27046 0
+-2.30794 1.35072 0
+-1.94635 1.28069 0
+-1.66421 1.07176 0
+-1.48992 0.754527 0
+-1.43879 0.372368 0
+-1.51359 -0.0283935 0
+-1.70815 -0.409249 0
+-2.0122 -0.747592 0
+-2.4153 -1.03881 0
+-2.90816 -1.29055 0
+-3.48048 -1.51036 0
+-4.11657 -1.69308 0
+-4.79185 -1.81673 0
+-5.47294 -1.84891 0
+-6.12169 -1.75958 0
+-6.70226 -1.53564 0
+-7.18926 -1.19325 0
+-7.57494 -0.783142 0
+-7.87296 -0.385222 0
+-8.11709 -0.0912703 0
+-8.35388 0.0210379 0
+-8.63016 -0.0847794 0
+-8.97818 -0.38577 0
+-9.40305 -0.798831 0
+-9.87777 -1.2003 0
+-10.3494 -1.45995 0
+-10.7549 -1.47748 0
+-11.0382 -1.20901 0
+-11.158 -0.677185 0
+-11.0881 0.0323368 0
+-10.8201 0.784502 0
+-10.3724 1.41847 0
+-9.79929 1.78214 0
+-9.192 1.7744 0
+-8.65864 1.38343 0
+-8.29314 0.703243 0
+-8.14451 -0.0808013 0
+-8.19701 -0.735988 0
+-8.36845 -1.04498 0
+-8.52887 -0.870177 0
+-8.53589 -0.199796 0
+-8.27657 0.840225 0
+-7.7028 2.01458 0
+-6.84825 3.04036 0
+-5.82095 3.66414 0
+-4.7739 3.73051 0
+-3.86342 3.22098 0
+-3.2094 2.25226 0
+-2.86976 1.03651 0
+-2.83614 -0.182228 0
+-3.05085 -1.19665 0
+-3.43731 -1.88885 0
+-3.93066 -2.24851 0
+-4.49564 -2.35183 0
+-5.12528 -2.31282 0
+-5.82305 -2.2279 0
+-6.57729 -2.1348 0
+-7.34034 -1.99976 0
+-8.02176 -1.73589 0
+-8.50039 -1.24477 0
+-8.65225 -0.465934 0
+-8.38614 0.583368 0
+-7.67521 1.79228 0
+-6.57437 2.97043 0
+-5.218 3.88908 0
+-3.79789 4.33841 0
+-2.5262 4.18585 0
+-1.5918 3.41921 0
+-1.11969 2.16145 0
+-1.14287 0.650591 0
+-1.59427 -0.813029 0
+-2.32179 -1.94078 0
+-3.12535 -2.53212 0
+-3.80837 -2.53034 0
+-4.2305 -2.03843 0
+-4.34627 -1.28745 0
+-4.21673 -0.564735 0
+-3.98862 -0.122951 0
+-3.84547 -0.0993405 0
+-3.94548 -0.472884 0
+-4.36637 -1.07559 0
+-5.07657 -1.6557 0
+-5.94381 -1.97164 0
+-6.7796 -1.88314 0
+-7.40498 -1.40493 0
+-7.71421 -0.701471 0
+-7.7135 -0.0237475 0
+-7.52053 0.387526 0
+-7.32369 0.393696 0
+-3.6159 0.00837493 0
+-1.82877 -0.273353 0
+-1.82877 -0.186516 0
+-1.49818 -0.0710099 0
+-2.99466 -0.128383 0
+-5.98606 -0.222556 0
+-6.13057 -0.362517 0
+-6.32538 -0.490776 0
+-6.53619 -0.52608 0
+-6.72308 -0.450308 0
+-6.86134 -0.299245 0
+-6.95018 -0.134647 0
+-7.00673 -0.0102088 0
+-7.04957 0.054191 0
+-7.08072 0.0798307 0
+-7.07606 0.116089 0
+-6.98965 0.214093 0
+-6.77089 0.399973 0
+-6.38651 0.659701 0
+-5.83821 0.9411 0
+-5.16859 1.17109 0
+-4.45337 1.28068 0
+-3.78277 1.22794 0
+-3.23895 1.01114 0
+-2.87692 0.668466 0
+-2.71434 0.266047 0
+-2.73168 -0.120786 0
+-2.88137 -0.426642 0
+-3.10138 -0.609274 0
+-3.32851 -0.65369 0
+-3.50782 -0.568652 0
+-3.59787 -0.37948 0
+-3.57274 -0.120844 0
+-3.4227 0.168554 0
+-3.15435 0.449524 0
+-2.79005 0.685466 0
+-2.3656 0.846005 0
+-1.9258 0.910916 0
+-1.51828 0.873174 0
+-1.18663 0.740106 0
+-0.964167 0.532069 0
+-0.870162 0.278363 0
+-0.909339 0.0107838 0
+-1.07486 -0.243724 0
+-1.35353 -0.46893 0
+-1.73108 -0.661258 0
+-2.19542 -0.826217 0
+-2.7358 -0.969973 0
+-3.33852 -1.09037 0
+-3.98193 -1.17332 0
+-4.63439 -1.19646 0
+-5.25625 -1.13771 0
+-5.8061 -0.985795 0
+-6.24989 -0.74946 0
+-6.57087 -0.462167 0
+-6.77703 -0.179055 0
+-6.90306 0.0347521 0
+-7.00438 0.122365 0
+-7.14376 0.0545968 0
+-7.37313 -0.156404 0
+-7.71647 -0.455483 0
+-8.15989 -0.75688 0
+-8.6528 -0.967031 0
+-9.12006 -1.01022 0
+-9.47967 -0.849393 0
+-9.65999 -0.49687 0
+-9.61379 -0.0138572 0
+-9.32991 0.500618 0
+-8.8415 0.93006 0
+-8.22736 1.168 0
+-7.60075 1.1478 0
+-7.08391 0.866588 0
+-6.77441 0.393742 0
+-6.71426 -0.140957 0
+-6.87191 -0.578337 0
+-7.14433 -0.772561 0
+-7.38058 -0.633927 0
+-7.4217 -0.15867 0
+-7.14586 0.564383 0
+-6.50509 1.37381 0
+-5.54207 2.07734 0
+-4.38134 2.50342 0
+-3.19761 2.54678 0
+-2.1712 2.19458 0
+-1.44458 1.52563 0
+-1.09257 0.684502 0
+-1.11406 -0.160741 0
+-1.44589 -0.864821 0
+-1.99295 -1.34179 0
+-2.6621 -1.57937 0
+-3.38674 -1.6272 0
+-4.13396 -1.5656 0
+-4.8938 -1.46806 0
+-5.65722 -1.37138 0
+-6.39337 -1.2636 0
+-7.03649 -1.09277 0
+-7.48882 -0.792438 0
+-7.64017 -0.314584 0
+-7.3985 0.341696 0
+-6.72193 1.1157 0
+-5.64188 1.89039 0
+-4.26956 2.51676 0
+-2.78241 2.85126 0
+-1.39257 2.79601 0
+-0.303816 2.33046 0
+0.332918 1.52472 0
+0.454449 0.52906 0
+0.100927 -0.459506 0
+-0.593544 -1.24631 0
+-1.43496 -1.6907 0
+-2.22061 -1.74469 0
+-2.79363 -1.46541 0
+-3.08479 -0.996287 0
+-3.12825 -0.521277 0
+-3.04505 -0.206151 0
+-2.99876 -0.145628 0
+-3.13706 -0.334585 0
+-3.53876 -0.673892 0
+-4.18482 -1.00964 0
+-4.96411 -1.19235 0
+-5.71278 -1.13447 0
+-6.27343 -0.844277 0
+-6.55273 -0.422176 0
+-6.55641 -0.0200686 0
+-6.38996 0.22108 0
+-6.22605 0.229783 0
+-3.02861 0.0311079 0
+-1.51539 -0.128182 0
+-1.51539 -0.0379613 0
+-1.11688 -0.0410341 0
+-2.24437 -0.0752754 0
+-4.51149 -0.132011 0
+-4.6578 -0.216215 0
+-4.85543 -0.293141 0
+-5.06818 -0.313329 0
+-5.2528 -0.265692 0
+-5.38056 -0.171484 0
+-5.44739 -0.0678133 0
+-5.46978 0.0121803 0
+-5.47007 0.0544797 0
+-5.45921 0.0689767 0
+-5.42586 0.0827409 0
+-5.33737 0.125595 0
+-5.15235 0.214956 0
+-4.8392 0.34655 0
+-4.39251 0.494418 0
+-3.84096 0.619539 0
+-3.24354 0.683265 0
+-2.67593 0.660319 0
+-2.21165 0.546859 0
+-1.90457 0.361388 0
+-1.77752 0.138999 0
+-1.81969 -0.0786235 0
+-1.99234 -0.25399 0
+-2.23991 -0.3617 0
+-2.50214 -0.391459 0
+-2.72405 -0.34675 0
+-2.8624 -0.241125 0
+-2.88911 -0.0941343 0
+-2.79249 0.0719309 0
+-2.57733 0.234364 0
+-2.26386 0.372002 0
+-1.8852 0.467343 0
+-1.48301 0.508723 0
+-1.10181 0.491982 0
+-0.78279 0.421082 0
+-0.558092 0.30737 0
+-0.44707 0.167342 0
+-0.455354 0.0190673 0
+-0.577098 -0.121979 0
+-0.799659 -0.246369 0
+-1.10893 -0.351989 0
+-1.493 -0.44214 0
+-1.94222 -0.52076 0
+-2.44541 -0.587177 0
+-2.98499 -0.633738 0
+-3.53387 -0.647572 0
+-4.05618 -0.615405 0
+-4.51224 -0.529739 0
+-4.86717 -0.394527 0
+-5.10111 -0.228223 0
+-5.2178 -0.0623661 0
+-5.24804 0.0649928 0
+-5.2455 0.119826 0
+-5.2745 0.0835951 0
+-5.39244 -0.0384687 0
+-5.63208 -0.215839 0
+-5.98969 -0.399269 0
+-6.42311 -0.533612 0
+-6.86048 -0.572857 0
+-7.21681 -0.493063 0
+-7.41382 -0.299854 0
+-7.39889 -0.0287902 0
+-7.15978 0.261509 0
+-6.73217 0.502446 0
+-6.19668 0.632506 0
+-5.66353 0.614654 0
+-5.24618 0.44924 0
+-5.03022 0.177779 0
+-5.04645 -0.124721 0
+-5.25693 -0.367863 0
+-5.55941 -0.470081 0
+-5.81092 -0.382415 0
+-5.86493 -0.104654 0
+-5.61209 0.311537 0
+-5.01252 0.774241 0
+-4.10999 1.17481 0
+-3.02319 1.41662 0
+-1.91683 1.44041 0
+-0.961214 1.23896 0
+-0.292364 0.856783 0
+0.0161694 0.375969 0
+-0.0372352 -0.107336 0
+-0.392996 -0.50906 0
+-0.956544 -0.77824 0
+-1.6299 -0.906005 0
+-2.33712 -0.919978 0
+-3.03538 -0.867348 0
+-3.70981 -0.793624 0
+-4.35632 -0.724867 0
+-4.96061 -0.659311 0
+-5.48276 -0.570617 0
+-5.85412 -0.421081 0
+-5.98879 -0.17991 0
+-5.80684 0.15974 0
+-5.26199 0.570858 0
+-4.36509 0.993488 0
+-3.19516 1.34682 0
+-1.89337 1.54947 0
+-0.639796 1.54244 0
+0.38262 1.30804 0
+1.02828 0.879051 0
+1.223 0.334344 0
+0.982171 -0.218677 0
+0.406917 -0.671055 0
+-0.342495 -0.941289 0
+-1.08964 -0.997543 0
+-1.68942 -0.865638 0
+-2.06593 -0.61977 0
+-2.22892 -0.358294 0
+-2.26307 -0.172002 0
+-2.29347 -0.115221 0
+-2.43843 -0.189623 0
+-2.76573 -0.346593 0
+-3.26778 -0.5076 0
+-3.8647 -0.595428 0
+-4.4345 -0.564674 0
+-4.85908 -0.419694 0
+-5.06875 -0.212509 0
+-5.06828 -0.0205369 0
+-4.93585 0.0886533 0
+-4.79969 0.0936188 0
+-2.30758 0.042026 0
+-1.13581 -0.00991631 0
+-1.13581 0.0923388 0
+-0.707912 -0.0175102 0
+-1.42893 -0.0328195 0
+-2.8869 -0.0584177 0
+-3.00674 -0.096378 0
+-3.16901 -0.130872 0
+-3.34298 -0.139353 0
+-3.49167 -0.117007 0
+-3.58969 -0.0734603 0
+-3.63211 -0.0253947 0
+-3.632 0.0120725 0
+-3.60951 0.0319884 0
+-3.57833 0.0377951 0
+-3.53628 0.0406957 0
+-3.46439 0.0537023 0
+-3.33463 0.0851996 0
+-3.12285 0.134769 0
+-2.82122 0.192784 0
+-2.44534 0.243659 0
+-2.03334 0.271264 0
+-1.63741 0.264393 0
+-1.31094 0.220393 0
+-1.09546 0.145906 0
+-1.01128 0.0548135 0
+-1.05414 -0.0357598 0
+-1.19818 -0.109949 0
+-1.40328 -0.156603 0
+-1.62396 -0.17078 0
+-1.8173 -0.153404 0
+-1.94858 -0.109845 0
+-1.99449 -0.0482279 0
+-1.94456 0.0220003 0
+-1.80133 0.0911417 0
+-1.57948 0.150149 0
+-1.30368 0.191546 0
+-1.00531 0.210349 0
+-0.718083 0.204755 0
+-0.473394 0.176393 0
+-0.296031 0.130007 0
+-0.201218 0.0725288 0
+-0.193729 0.011578 0
+-0.269413 -0.046295 0
+-0.41868 -0.0971011 0
+-0.630676 -0.139993 0
+-0.896329 -0.176487 0
+-1.20865 -0.208438 0
+-1.56006 -0.235765 0
+-1.93847 -0.255333 0
+-2.32443 -0.261609 0
+-2.69115 -0.248685 0
+-3.00791 -0.212979 0
+-3.24667 -0.15577 0
+-3.39026 -0.0846359 0
+-3.43967 -0.0129535 0
+-3.41752 0.0428442 0
+-3.36548 0.0677825 0
+-3.33521 0.0533279 0
+-3.37476 0.00108334 0
+-3.51424 -0.0763564 0
+-3.75549 -0.158017 0
+-4.06917 -0.219939 0
+-4.40031 -0.241709 0
+-4.68109 -0.212289 0
+-4.84737 -0.133577 0
+-4.8554 -0.0207529 0
+-4.69468 0.100783 0
+-4.39358 0.20135 0
+-4.01568 0.254608 0
+-3.64609 0.245065 0
+-3.37024 0.173391 0
+-3.2502 0.0577311 0
+-3.30509 -0.0698242 0
+-3.5019 -0.171059 0
+-3.7601 -0.211872 0
+-3.97036 -0.172161 0
+-4.0226 -0.0524083 0
+-3.83626 0.125197 0
+-3.38377 0.321751 0
+-2.70047 0.491513 0
+-1.87775 0.593889 0
+-1.04135 0.604014 0
+-0.321234 0.518849 0
+0.178382 0.357168 0
+0.400631 0.15372 0
+0.34387 -0.0505758 0
+0.0544652 -0.219654 0
+-0.392441 -0.331333 0
+-0.917056 -0.38139 0
+-1.45551 -0.381527 0
+-1.97041 -0.352444 0
+-2.4492 -0.314832 0
+-2.89252 -0.281554 0
+-3.29826 -0.253572 0
+-3.64813 -0.220746 0
+-3.90223 -0.166973 0
+-4.00434 -0.0778046 0
+-3.89668 0.05208 0
+-3.5399 0.214078 0
+-2.93172 0.385307 0
+-2.11797 0.533071 0
+-1.19158 0.623083 0
+-0.278316 0.629171 0
+0.488089 0.541639 0
+0.995474 0.371666 0
+1.17971 0.15011 0
+1.04043 -0.079396 0
+0.640842 -0.271469 0
+0.0906598 -0.391107 0
+-0.483691 -0.423192 0
+-0.973103 -0.376226 0
+-1.31391 -0.278966 0
+-1.50138 -0.170817 0
+-1.58438 -0.0890085 0
+-1.64285 -0.0567455 0
+-1.75608 -0.0763922 0
+-1.97256 -0.130121 0
+-2.2923 -0.187859 0
+-2.66803 -0.219693 0
+-3.02464 -0.208062 0
+-3.28932 -0.155017 0
+-3.42034 -0.0814894 0
+-3.42255 -0.0183319 0
+-3.34286 0.0089667 0
+-3.25058 0.00133839 0
+-1.58011 0.0206386 0
+-0.776942 0.0373484 0
+-0.776942 0.143674 0
+-0.343245 -0.00395679 0
+-0.695175 -0.00779601 0
+-1.41078 -0.0141722 0
+-1.48355 -0.0236137 0
+-1.5823 -0.0321158 0
+-1.68766 -0.0339929 0
+-1.77647 -0.0282037 0
+-1.83273 -0.0172021 0
+-1.85301 -0.00511065 0
+-1.84526 0.00432153 0
+-1.82255 0.00927976 0
+-1.79519 0.0104344 0
+-1.76486 0.0103639 0
+-1.72335 0.0121951 0
+-1.65625 0.0180991 0
+-1.54975 0.028271 0
+-1.39773 0.0407588 0
+-1.2062 0.0521376 0
+-0.993655 0.0587154 0
+-0.787057 0.0577948 0
+-0.615215 0.0485515 0
+-0.501587 0.0322774 0
+-0.458749 0.011976 0
+-0.485998 -0.00851112 0
+-0.570413 -0.0255338 0
+-0.690564 -0.0364522 0
+-0.821323 -0.0400201 0
+-0.93838 -0.0363469 0
+-1.02163 -0.0265944 0
+-1.05726 -0.0125968 0
+-1.03874 0.00347738 0
+-0.966983 0.0193853 0
+-0.849864 0.0330301 0
+-0.700998 0.0426795 0
+-0.537828 0.0471796 0
+-0.379187 0.0461137 0
+-0.242651 0.0398569 0
+-0.142145 0.0295012 0
+-0.0862562 0.0166405 0
+-0.0777048 0.00302665 0
+-0.114162 -0.00983794 0
+-0.190214 -0.0210487 0
+-0.299767 -0.0304398 0
+-0.437846 -0.0384082 0
+-0.600845 -0.0454396 0
+-0.785043 -0.0515662 0
+-0.984292 -0.0560841 0
+-1.18821 -0.0576876 0
+-1.38196 -0.0549402 0
+-1.54802 -0.0469173 0
+-1.66997 -0.0338201 0
+-1.73727 -0.0173376 0
+-1.74967 -0.00055478 0
+-1.7195 0.0126733 0
+-1.67049 0.0187732 0
+-1.63279 0.0156311 0
+-1.63519 0.00348655 0
+-1.69672 -0.0148248 0
+-1.8203 -0.0344391 0
+-1.99053 -0.049707 0
+-2.1765 -0.0557396 0
+-2.33897 -0.0498198 0
+-2.44026 -0.0322888 0
+-2.45436 -0.00665749 0
+-2.37469 0.021122 0
+-2.21743 0.044088 0
+-2.01891 0.0560909 0
+-1.82741 0.053557 0
+-1.69072 0.0367022 0
+-1.64278 0.00979616 0
+-1.69292 -0.0196924 0
+-1.82104 -0.0429307 0
+-1.98082 -0.0520906 0
+-2.11038 -0.0426078 0
+-2.14812 -0.0146678 0
+-2.04949 0.0265653 0
+-1.79984 0.0721095 0
+-1.41977 0.111435 0
+-0.961082 0.135205 0
+-0.494766 0.137697 0
+-0.0941216 0.118205 0
+0.181994 0.0810528 0
+0.301434 0.0342795 0
+0.26346 -0.0126021 0
+0.0949668 -0.0511607 0
+-0.160198 -0.0761682 0
+-0.45499 -0.086598 0
+-0.751306 -0.085211 0
+-1.02677 -0.0769842 0
+-1.27458 -0.0670162 0
+-1.49748 -0.0586537 0
+-1.69861 -0.0524454 0
+-1.87314 -0.0462142 0
+-2.00395 -0.0361644 0
+-2.06313 -0.0186243 0
+-2.01922 0.00816598 0
+-1.84796 0.0428222 0
+-1.54323 0.0805825 0
+-1.12437 0.114209 0
+-0.637105 0.135815 0
+-0.147039 0.139105 0
+0.273224 0.121376 0
+0.560244 0.0846463 0
+0.67484 0.035514 0
+0.611768 -0.0163238 0
+0.400835 -0.0605365 0
+0.098664 -0.0889362 0
+-0.226825 -0.0977027 0
+-0.514723 -0.088328 0
+-0.726738 -0.0669507 0
+-0.85529 -0.0422647 0
+-0.921635 -0.0226632 0
+-0.964815 -0.0135661 0
+-1.02536 -0.0158424 0
+-1.1296 -0.0258886 0
+-1.28011 -0.0373407 0
+-1.45601 -0.0437975 0
+-1.62254 -0.0415321 0
+-1.74641 -0.0311493 0
+-1.81035 -0.0175473 0
+-1.82051 -0.00817624 0
+-1.80162 -0.00992245 0
+-1.77803 -0.0222503 0
+-0.928058 -0.00379318 0
+-0.486591 0.0215928 0
+-0.486591 0.0876589 0
+-0.0908158 -0.00395679 0
+-0.184212 -0.00779601 0
+-0.375254 -0.0141722 0
+-0.398868 -0.0236137 0
+-0.430983 -0.0321158 0
+-0.464976 -0.0339929 0
+-0.49318 -0.0282037 0
+-0.510382 -0.0172021 0
+-0.515493 -0.00511065 0
+-0.511171 0.00432153 0
+-0.501891 0.00927976 0
+-0.491457 0.0104344 0
+-0.481093 0.0103639 0
+-0.468898 0.0121951 0
+-0.450799 0.0180991 0
+-0.422528 0.028271 0
+-0.381769 0.0407588 0
+-0.329631 0.0521376 0
+-0.270916 0.0587154 0
+-0.213121 0.0577948 0
+-0.164569 0.0485515 0
+-0.132292 0.0322774 0
+-0.120316 0.011976 0
+-0.128827 -0.00851112 0
+-0.154361 -0.0255338 0
+-0.190813 -0.0364522 0
+-0.230833 -0.0400201 0
+-0.26718 -0.0363469 0
+-0.293774 -0.0265944 0
+-0.306371 -0.0125968 0
+-0.302894 0.00347738 0
+-0.283508 0.0193853 0
+-0.250478 0.0330301 0
+-0.207799 0.0426795 0
+-0.160619 0.0471796 0
+-0.114505 0.0461137 0
+-0.0746483 0.0398569 0
+-0.0451471 0.0295012 0
+-0.0285066 0.0166405 0
+-0.02548 0.00302665 0
+-0.0353179 -0.00983794 0
+-0.0563666 -0.0210487 0
+-0.0868064 -0.0304398 0
+-0.125215 -0.0384082 0
+-0.170654 -0.0454396 0
+-0.22222 -0.0515662 0
+-0.278304 -0.0560841 0
+-0.335992 -0.0576876 0
+-0.390932 -0.0549402 0
+-0.437849 -0.0469173 0
+-0.471669 -0.0338201 0
+-0.489007 -0.0173376 0
+-0.489562 -0.00055478 0
+-0.476889 0.0126733 0
+-0.458115 0.0187732 0
+-0.442484 0.0156311 0
+-0.438998 0.00348655 0
+-0.453822 -0.0148248 0
+-0.488262 -0.0344391 0
+-0.537968 -0.049707 0
+-0.593708 -0.0557396 0
+-0.643528 -0.0498198 0
+-0.675817 -0.0322888 0
+-0.682474 -0.00665749 0
+-0.661352 0.021122 0
+-0.617264 0.044088 0
+-0.561173 0.0560909 0
+-0.507616 0.053557 0
+-0.470914 0.0367022 0
+-0.461118 0.00979616 0
+-0.48081 -0.0196924 0
+-0.523741 -0.0429307 0
+-0.575832 -0.0520906 0
+-0.618439 -0.0426078 0
+-0.633107 -0.0146678 0
+-0.606542 0.0265653 0
+-0.534432 0.0721095 0
+-0.422997 0.111435 0
+-0.287792 0.135205 0
+-0.150095 0.137697 0
+-0.0318901 0.118205 0
+0.0491626 0.0810528 0
+0.0834421 0.0342795 0
+0.07084 -0.0126021 0
+0.0196793 -0.0511607 0
+-0.0564889 -0.0761682 0
+-0.143087 -0.086598 0
+-0.228298 -0.085211 0
+-0.305282 -0.0769842 0
+-0.372298 -0.0670162 0
+-0.430952 -0.0586537 0
+-0.483397 -0.0524454 0
+-0.529612 -0.0462142 0
+-0.565776 -0.0361644 0
+-0.5844 -0.0186243 0
+-0.576234 0.00816598 0
+-0.533412 0.0428222 0
+-0.45283 0.0805825 0
+-0.33862 0.114209 0
+-0.202805 0.135815 0
+-0.0636994 0.139105 0
+0.0576762 0.121376 0
+0.142323 0.0846463 0
+0.177836 0.035514 0
+0.161513 -0.0163238 0
+0.100976 -0.0605365 0
+0.01204 -0.0889362 0
+-0.0856626 -0.0977027 0
+-0.173991 -0.088328 0
+-0.240941 -0.0669507 0
+-0.283206 -0.0422647 0
+-0.305869 -0.0226632 0
+-0.319435 -0.0135661 0
+-0.335278 -0.0158424 0
+-0.361166 -0.0258886 0
+-0.398507 -0.0373407 0
+-0.442305 -0.0437975 0
+-0.483837 -0.0415321 0
+-0.514986 -0.0311493 0
+-0.532533 -0.0175473 0
+-0.540709 -0.00817624 0
+-0.550632 -0.00992245 0
+-0.572882 -0.0222503 0
+-0.353833 -0.00379318 0
+-0.217474 0.0215928 0
+-0.217474 0.0876589 0
+-0.159341 -0.00945236 0
+-0.320278 -0.0188434 0
+-0.64214 -0.0341555 0
+-0.585873 -0.0562665 0
+-0.513465 -0.0724084 0
+-0.439223 -0.074242 0
+-0.377568 -0.0616544 0
+-0.337548 -0.0400198 0
+-0.320576 -0.0169725 0
+-0.321288 0.000712676 0
+-0.330586 0.0092976 0
+-0.339366 0.00878079 0
+-0.341501 0.00213432 0
+-0.335108 -0.00639219 0
+-0.322 -0.0131079 0
+-0.305867 -0.0161337 0
+-0.290181 -0.0156857 0
+-0.276732 -0.0134485 0
+-0.265263 -0.0114695 0
+-0.254118 -0.0111447 0
+-0.241384 -0.012734 0
+-0.225859 -0.0155241 0
+-0.207436 -0.0184238 0
+-0.186833 -0.0206021 0
+-0.165018 -0.0218154 0
+-0.142745 -0.0222728 0
+-0.120587 -0.0221583 0
+-0.0994463 -0.0211403 0
+-0.0812232 -0.018223 0
+-0.0691072 -0.0121159 0
+-0.0671129 -0.00199427 0
+-0.0788545 0.0117417 0
+-0.106027 0.0271721 0
+-0.147321 0.0412948 0
+-0.19838 0.0510589 0
+-0.252879 0.054499 0
+-0.304301 0.0514226 0
+-0.347673 0.0433718 0
+-0.380581 0.0329084 0
+-0.403087 0.0225055 0
+-0.416577 0.0134907 0
+-0.422093 0.00551521 0
+-0.418949 -0.00314396 0
+-0.404448 -0.0145001 0
+-0.375011 -0.0294369 0
+-0.328388 -0.0466234 0
+-0.266064 -0.0623237 0
+-0.194791 -0.0712729 0
+-0.126426 -0.0683651 0
+-0.0758314 -0.0505948 0
+-0.0572767 -0.0185546 0
+-0.080396 0.0231193 0
+-0.147024 0.066628 0
+-0.250042 0.103018 0
+-0.374727 0.124685 0
+-0.502278 0.127552 0
+-0.614463 0.112185 0
+-0.697986 0.0835227 0
+-0.747309 0.049323 0
+-0.765194 0.0178849 0
+-0.760934 -0.00426034 0
+-0.746888 -0.0140452 0
+-0.734348 -0.0125399 0
+-0.729855 -0.00449331 0
+-0.732954 0.00309945 0
+-0.735978 0.00302403 0
+-0.725951 -0.010027 0
+-0.688207 -0.0377444 0
+-0.610864 -0.0773433 0
+-0.489049 -0.121814 0
+-0.327748 -0.161301 0
+-0.142392 -0.185356 0
+0.0431979 -0.18559 0
+0.201267 -0.158069 0
+0.306068 -0.104801 0
+0.339868 -0.0338 0
+0.297447 0.0424208 0
+0.187787 0.10966 0
+0.0323331 0.155454 0
+-0.139859 0.172192 0
+-0.298857 0.158998 0
+-0.420657 0.1218 0
+-0.492191 0.0715345 0
+-0.513204 0.021013 0
+-0.494567 -0.0186376 0
+-0.453622 -0.0409442 0
+-0.408034 -0.0455887 0
+-0.370063 -0.0379703 0
+-0.343098 -0.0269656 0
+-0.32148 -0.0216181 0
+-0.293631 -0.0278481 0
+-0.247367 -0.0462647 0
+-0.17558 -0.0717866 0
+-0.0803886 -0.0951914 0
+0.0257148 -0.106103 0
+0.122197 -0.0964817 0
+0.185692 -0.0634952 0
+0.19654 -0.0108487 0
+0.144656 0.051885 0
+0.0329267 0.111729 0
+-0.122876 0.155803 0
+-0.29767 0.174795 0
+-0.46304 0.16537 0
+-0.593868 0.130828 0
+-0.673749 0.0798805 0
+-0.697732 0.0239834 0
+-0.671818 -0.0259143 0
+-0.609598 -0.0622195 0
+-0.527297 -0.0823018 0
+-0.438882 -0.0884147 0
+-0.352842 -0.0860396 0
+-0.271552 -0.0812898 0
+-0.193217 -0.0783353 0
+-0.115417 -0.0777996 0
+-0.0386888 -0.0767286 0
+0.0314739 -0.0701627 0
+0.0852159 -0.053742 0
+0.111583 -0.0263674 0
+0.103456 0.00812726 0
+0.0624446 0.0410115 0
+0.0018893 0.0605553 0
+-0.0538658 0.0557551 0
+-0.0798423 0.0259766 0
+0.0488491 0.0309413 0
+0.0772844 0.0471672 0
+0.0772844 0.134343 0
+-0.597116 -0.0379089 0
+-1.19734 -0.0715925 0
+-2.39861 -0.127069 0
+-2.24843 -0.206444 0
+-2.05535 -0.265491 0
+-1.85903 -0.270563 0
+-1.69918 -0.2215 0
+-1.59881 -0.140394 0
+-1.55789 -0.0578883 0
+-1.55711 -7.13986e-05 0
+-1.56813 0.0203188 0
+-1.56551 0.00616154 0
+-1.53534 -0.0280336 0
+-1.47788 -0.0638526 0
+-1.40412 -0.0868703 0
+-1.32868 -0.0915712 0
+-1.2626 -0.0817622 0
+-1.20906 -0.0669873 0
+-1.16344 -0.0570941 0
+-1.11694 -0.0576393 0
+-1.06159 -0.0680903 0
+-0.993897 -0.0832116 0
+-0.915873 -0.0964478 0
+-0.833161 -0.103313 0
+-0.751936 -0.103041 0
+-0.676425 -0.0977834 0
+-0.608574 -0.0900091 0
+-0.549972 -0.0797415 0
+-0.504769 -0.0634258 0
+-0.481531 -0.0353542 0
+-0.492378 0.00885293 0
+-0.549146 0.06851 0
+-0.658057 0.136084 0
+-0.815499 0.198737 0
+-1.00718 0.242744 0
+-1.21128 0.258597 0
+-1.40422 0.244363 0
+-1.5668 0.205954 0
+-1.68825 0.154357 0
+-1.76669 0.100942 0
+-1.80593 0.0527333 0
+-1.8102 0.00978504 0
+-1.77946 -0.0338822 0
+-1.70808 -0.085881 0
+-1.58803 -0.149487 0
+-1.41563 -0.219026 0
+-1.1989 -0.279051 0
+-0.962157 -0.308015 0
+-0.745172 -0.28535 0
+-0.596178 -0.199589 0
+-0.56015 -0.0545827 0
+-0.665835 0.128805 0
+-0.915879 0.316672 0
+-1.28366 0.470803 0
+-1.71838 0.559403 0
+-2.15705 0.566221 0
+-2.53989 0.495029 0
+-2.82442 0.368048 0
+-2.99413 0.219034 0
+-3.05968 0.0834323 0
+-3.05261 -0.0113307 0
+-3.01386 -0.0527948 0
+-2.98033 -0.0460707 0
+-2.97306 -0.0117594 0
+-2.99006 0.0200966 0
+-3.00553 0.0184995 0
+-2.976 -0.0395622 0
+-2.85195 -0.161791 0
+-2.5926 -0.336695 0
+-2.18007 -0.53434 0
+-1.62939 -0.711986 0
+-0.991083 -0.82366 0
+-0.344981 -0.831692 0
+0.214351 -0.717401 0
+0.597524 -0.487973 0
+0.74094 -0.177216 0
+0.622709 0.160652 0
+0.269293 0.463076 0
+-0.249453 0.674201 0
+-0.836029 0.758768 0
+-1.38786 0.710825 0
+-1.82057 0.554512 0
+-2.08562 0.336592 0
+-2.17757 0.112956 0
+-2.12923 -0.0669769 0
+-1.99669 -0.173478 0
+-1.83884 -0.203446 0
+-1.69793 -0.178872 0
+-1.58757 -0.13733 0
+-1.49154 -0.117644 0
+-1.3739 -0.145494 0
+-1.19642 -0.223746 0
+-0.937546 -0.330656 0
+-0.606223 -0.426515 0
+-0.245695 -0.466631 0
+0.0743718 -0.416548 0
+0.275499 -0.264622 0
+0.292452 -0.0278015 0
+0.0930002 0.251336 0
+-0.31073 0.515459 0
+-0.862841 0.707914 0
+-1.47608 0.788037 0
+-2.05248 0.741762 0
+-2.50615 0.584502 0
+-2.78194 0.355668 0
+-2.86472 0.106771 0
+-2.7775 -0.113135 0
+-2.56946 -0.270262 0
+-2.2984 -0.353367 0
+-2.01333 -0.373478 0
+-1.7429 -0.356472 0
+-1.49289 -0.331301 0
+-1.25305 -0.318177 0
+-1.00985 -0.321001 0
+-0.759762 -0.326813 0
+-0.517405 -0.31252 0
+-0.314713 -0.256433 0
+-0.190841 -0.150239 0
+-0.176082 -0.00663242 0
+-0.276018 0.140948 0
+-0.463161 0.247698 0
+-0.682823 0.275417 0
+-0.878095 0.221249 0
+-0.41612 0.171331 0
+-0.199096 0.117252 0
+-0.199096 0.23072 0
+-1.18567 -0.0770829 0
+-2.37575 -0.142732 0
+-4.75931 -0.249633 0
+-4.56515 -0.400603 0
+-4.31948 -0.511163 0
+-4.0775 -0.512547 0
+-3.89146 -0.407539 0
+-3.78527 -0.24658 0
+-3.74686 -0.0962994 0
+-3.73725 -0.00967834 0
+-3.70985 -0.00707991 0
+-3.63051 -0.0731771 0
+-3.49003 -0.168514 0
+-3.3048 -0.249079 0
+-3.1067 -0.284967 0
+-2.92763 -0.270647 0
+-2.78582 -0.223563 0
+-2.67977 -0.173039 0
+-2.59142 -0.145445 0
+-2.4964 -0.152655 0
+-2.37585 -0.188645 0
+-2.22429 -0.234774 0
+-2.05058 -0.270152 0
+-1.8724 -0.281494 0
+-1.70773 -0.267706 0
+-1.56813 -0.237392 0
+-1.45702 -0.201112 0
+-1.37379 -0.162977 0
+-1.32069 -0.116525 0
+-1.30841 -0.047627 0
+-1.35621 0.0566549 0
+-1.48553 0.197822 0
+-1.70964 0.360196 0
+-2.02451 0.513606 0
+-2.40554 0.623774 0
+-2.8121 0.665163 0
+-3.19782 0.630084 0
+-3.52241 0.530538 0
+-3.76056 0.392512 0
+-3.90465 0.245035 0
+-3.96034 0.108417 0
+-3.93756 -0.0129856 0
+-3.84184 -0.129608 0
+-3.67072 -0.257001 0
+-3.41819 -0.402014 0
+-3.08529 -0.551925 0
+-2.69197 -0.672377 0
+-2.28422 -0.715757 0
+-1.9322 -0.637377 0
+-1.71777 -0.414017 0
+-1.7144 -0.057956 0
+-1.9652 0.379614 0
+-2.46695 0.818418 0
+-3.16603 1.16988 0
+-3.96882 1.3622 0
+-4.76373 1.36114 0
+-5.44819 1.17949 0
+-5.95233 0.872187 0
+-6.25259 0.519297 0
+-6.372 0.202842 0
+-6.36812 -0.0152124 0
+-6.31285 -0.108064 0
+-6.2697 -0.0892225 0
+-6.27412 -0.00733917 0
+-6.32156 0.067534 0
+-6.36603 0.0629746 0
+-6.32998 -0.0756093 0
+-6.12383 -0.36795 0
+-5.67139 -0.789129 0
+-4.93557 -1.27016 0
+-3.93743 -1.71012 0
+-2.76288 -1.99821 0
+-1.55338 -2.04119 0
+-0.481128 -1.78965 0
+0.286581 -1.25568 0
+0.625464 -0.516099 0
+0.484909 0.301208 0
+-0.0975598 1.04555 0
+-1.00287 1.57951 0
+-2.05721 1.81311 0
+-3.0724 1.72601 0
+-3.8887 1.37081 0
+-4.4085 0.856394 0
+-4.6117 0.316155 0
+-4.54925 -0.129429 0
+-4.3175 -0.405222 0
+-4.02179 -0.499161 0
+-3.74098 -0.459684 0
+-3.50457 -0.373736 0
+-3.28946 -0.332757 0
+-3.03684 -0.398116 0
+-2.683 -0.577586 0
+-2.19305 -0.820599 0
+-1.58578 -1.03378 0
+-0.940594 -1.11182 0
+-0.383289 -0.973854 0
+-0.0542428 -0.593668 0
+-0.0684868 -0.0135574 0
+-0.480058 0.662907 0
+-1.26178 1.29718 0
+-2.3069 1.75304 0
+-3.4525 1.93364 0
+-4.51779 1.80705 0
+-5.34648 1.41319 0
+-5.84106 0.850252 0
+-5.97984 0.245548 0
+-5.8126 -0.280376 0
+-5.43747 -0.645387 0
+-4.9669 -0.823939 0
+-4.49383 -0.846548 0
+-4.06892 -0.78138 0
+-3.69549 -0.704731 0
+-3.34269 -0.670983 0
+-2.97091 -0.69278 0
+-2.55915 -0.738566 0
+-2.12327 -0.748404 0
+-1.71742 -0.662286 0
+-1.41739 -0.450269 0
+-1.29153 -0.132491 0
+-1.37048 0.219898 0
+-1.62852 0.505743 0
+-1.9856 0.632497 0
+-2.32694 0.562591 0
+-1.28233 0.352656 0
+-0.702723 0.126336 0
+-0.702723 0.183145 0
+-1.76009 -0.110827 0
+-3.52582 -0.2026 0
+-7.06535 -0.349544 0
+-6.91367 -0.552277 0
+-6.73341 -0.691425 0
+-6.57592 -0.67004 0
+-6.48087 -0.50258 0
+-6.45096 -0.27649 0
+-6.44874 -0.0985215 0
+-6.41381 -0.044604 0
+-6.2905 -0.130388 0
+-6.05285 -0.310831 0
+-5.71605 -0.505311 0
+-5.33005 -0.635082 0
+-4.9587 -0.656308 0
+-4.65409 -0.575265 0
+-4.43688 -0.440768 0
+-4.29099 -0.318931 0
+-4.17374 -0.262694 0
+-4.03635 -0.290039 0
+-3.84511 -0.379883 0
+-3.59411 -0.485781 0
+-3.30493 -0.559328 0
+-3.01495 -0.571473 0
+-2.76064 -0.522015 0
+-2.56421 -0.433818 0
+-2.42962 -0.335701 0
+-2.3491 -0.243504 0
+-2.31592 -0.149698 0
+-2.33601 -0.0275401 0
+-2.4312 0.151841 0
+-2.63159 0.398215 0
+-2.96011 0.688719 0
+-3.41701 0.970511 0
+-3.97235 1.17911 0
+-4.57004 1.26285 0
+-5.14141 1.20146 0
+-5.62278 1.01192 0
+-5.97037 0.740103 0
+-6.16702 0.441686 0
+-6.21868 0.160073 0
+-6.14306 -0.0886025 0
+-5.95702 -0.315646 0
+-5.66987 -0.544154 0
+-5.28679 -0.785091 0
+-4.82075 -1.01796 0
+-4.30625 -1.18688 0
+-3.80731 -1.2147 0
+-3.41417 -1.03051 0
+-3.22724 -0.600953 0
+-3.33155 0.0463587 0
+-3.76991 0.817974 0
+-4.52432 1.57283 0
+-5.51361 2.15917 0
+-6.60952 2.45811 0
+-7.66695 2.41856 0
+-8.55882 2.07136 0
+-9.20475 1.51812 0
+-9.58509 0.899639 0
+-9.73781 0.355553 0
+-9.74085 -0.012166 0
+-9.68635 -0.162562 0
+-9.65324 -0.122339 0
+-9.68429 0.0237182 0
+-9.77217 0.155412 0
+-9.85716 0.147964 0
+-9.83791 -0.094859 0
+-9.59429 -0.61157 0
+-9.01922 -1.3642 0
+-8.05309 -2.23629 0
+-6.71182 -3.0514 0
+-5.09959 -3.61044 0
+-3.40025 -3.74053 0
+-1.84663 -3.34328 0
+-0.673335 -2.42897 0
+-0.0640483 -1.12539 0
+-0.10683 0.34399 0
+-0.770208 1.70892 0
+-1.9077 2.717 0
+-3.29088 3.1963 0
+-4.66273 3.09786 0
+-5.79673 2.50481 0
+-6.54529 1.60496 0
+-6.86465 0.63551 0
+-6.80998 -0.18409 0
+-6.5035 -0.711707 0
+-6.08607 -0.916595 0
+-5.66861 -0.877139 0
+-5.29921 -0.743133 0
+-4.95639 -0.675576 0
+-4.56992 -0.784592 0
+-4.06098 -1.08653 0
+-3.38712 -1.49445 0
+-2.57581 -1.8451 0
+-1.73417 -1.95346 0
+-1.03012 -1.6779 0
+-0.649592 -0.974199 0
+-0.742612 0.0794631 0
+-1.37534 1.29563 0
+-2.50317 2.42501 0
+-3.97391 3.22378 0
+-5.56056 3.52029 0
+-7.01482 3.26131 0
+-8.12579 2.52416 0
+-8.76741 1.49187 0
+-8.92147 0.399612 0
+-8.67056 -0.531289 0
+-8.16391 -1.15203 0
+-7.56752 -1.42033 0
+-7.01429 -1.39978 0
+-6.57004 -1.22562 0
+-6.22559 -1.04919 0
+-5.91613 -0.980443 0
+-5.55993 -1.04898 0
+-5.10133 -1.19716 0
+-4.54179 -1.30794 0
+-3.94696 -1.25712 0
+-3.42645 -0.970774 0
+-3.09344 -0.465508 0
+-3.0189 0.145365 0
+-3.19805 0.684888 0
+-3.54062 0.975067 0
+-3.8842 0.906174 0
+-2.12907 0.482992 0
+-1.14521 0.0554792 0
+-1.14521 0.0410705 0
+-2.17948 -0.125302 0
+-4.36355 -0.226156 0
+-8.7434 -0.38362 0
+-8.70472 -0.590959 0
+-8.68579 -0.710352 0
+-8.71617 -0.639664 0
+-8.79987 -0.418883 0
+-8.89979 -0.176563 0
+-8.94512 -0.0531948 0
+-8.858 -0.131714 0
+-8.58718 -0.401213 0
+-8.13286 -0.765143 0
+-7.55163 -1.08655 0
+-6.9384 -1.24831 0
+-6.39279 -1.20192 0
+-5.98339 -0.984663 0
+-5.72466 -0.699499 0
+-5.5756 -0.467984 0
+-5.46023 -0.378062 0
+-5.30052 -0.449756 0
+-5.04766 -0.632739 0
+-4.69898 -0.834456 0
+-4.29466 -0.963648 0
+-3.8977 -0.968437 0
+-3.56718 -0.852536 0
+-3.33698 -0.664019 0
+-3.20885 -0.463832 0
+-3.16178 -0.290566 0
+-3.17186 -0.139624 0
+-3.23173 0.0323336 0
+-3.35942 0.27953 0
+-3.59123 0.630031 0
+-3.96212 1.05961 0
+-4.48342 1.49181 0
+-5.12935 1.82505 0
+-5.83815 1.97165 0
+-6.52657 1.88987 0
+-7.1115 1.59685 0
+-7.53081 1.15942 0
+-7.75554 0.666413 0
+-7.78939 0.193926 0
+-7.65736 -0.22063 0
+-7.39048 -0.582527 0
+-7.01556 -0.919077 0
+-6.55559 -1.24506 0
+-6.03966 -1.53389 0
+-5.51523 -1.71131 0
+-5.05465 -1.67528 0
+-4.75064 -1.33453 0
+-4.69925 -0.652343 0
+-4.97416 0.321273 0
+-5.60064 1.44446 0
+-6.53954 2.51172 0
+-7.68898 3.30861 0
+-8.90541 3.67454 0
+-10.0378 3.55098 0
+-10.964 2.99757 0
+-11.617 2.17111 0
+-11.9937 1.27637 0
+-12.1459 0.507676 0
+-12.1582 0.000194945 0
+-12.123 -0.197829 0
+-12.1152 -0.1301 0
+-12.1739 0.0824226 0
+-12.2899 0.271456 0
+-12.403 0.261063 0
+-12.409 -0.0889452 0
+-12.1784 -0.842081 0
+-11.588 -1.9546 0
+-10.5578 -3.26654 0
+-9.08593 -4.52326 0
+-7.26871 -5.42766 0
+-5.29679 -5.71246 0
+-3.4256 -5.21447 0
+-1.92489 -3.92967 0
+-1.01901 -2.03127 0
+-0.833155 0.158133 0
+-1.36074 2.23651 0
+-2.46201 3.81826 0
+-3.89565 4.62993 0
+-5.37583 4.57805 0
+-6.6389 3.76788 0
+-7.50119 2.46725 0
+-7.89228 1.02661 0
+-7.8553 -0.221072 0
+-7.51533 -1.05168 0
+-7.0271 -1.40482 0
+-6.51991 -1.38433 0
+-6.05818 -1.20486 0
+-5.63059 -1.10317 0
+-5.17016 -1.24503 0
+-4.5969 -1.65978 0
+-3.86703 -2.22433 0
+-3.01049 -2.70164 0
+-2.14276 -2.82119 0
+-1.44489 -2.37577 0
+-1.11663 -1.30246 0
+-1.31701 0.279848 0
+-2.11135 2.08997 0
+-3.44184 3.7555 0
+-5.13176 4.9137 0
+-6.92312 5.31165 0
+-8.53749 4.87569 0
+-9.74295 3.72962 0
+-10.4081 2.15701 0
+-10.5279 0.519448 0
+-10.2147 -0.844515 0
+-9.65663 -1.7101 0
+-9.05735 -2.01961 0
+-8.57486 -1.88227 0
+-8.2791 -1.52139 0
+-8.14117 -1.18711 0
+-8.05683 -1.06478 0
+-7.89515 -1.21066 0
+-7.55476 -1.53756 0
+-7.00747 -1.85524 0
+-6.3134 -1.95119 0
+-5.6019 -1.68227 0
+-5.0248 -1.0426 0
+-4.69889 -0.180551 0
+-4.65816 0.644158 0
+-4.83229 1.1492 0
+-5.05758 1.13147 0
+-2.68642 0.545086 0
+-1.40096 -0.0408016 0
+-1.40096 -0.101512 0
+-2.36799 -0.115716 0
+-4.73321 -0.205089 0
+-9.47249 -0.338323 0
+-9.56752 -0.495927 0
+-9.73563 -0.542249 0
+-9.97532 -0.399967 0
+-10.2452 -0.148984 0
+-10.4642 0.0423901 0
+-10.5319 0.0144907 0
+-10.3638 -0.29974 0
+-9.92686 -0.83818 0
+-9.25877 -1.43323 0
+-8.4627 -1.88262 0
+-7.67607 -2.03494 0
+-7.02533 -1.85265 0
+-6.58361 -1.42639 0
+-6.34801 -0.935095 0
+-6.24561 -0.570381 0
+-6.16548 -0.458197 0
+-6.00355 -0.611688 0
+-5.70211 -0.934171 0
+-5.26842 -1.26815 0
+-4.76637 -1.46569 0
+-4.28713 -1.44768 0
+-3.91211 -1.22756 0
+-3.68414 -0.891982 0
+-3.59811 -0.549862 0
+-3.61346 -0.275218 0
+-3.68146 -0.0716277 0
+-3.77359 0.124465 0
+-3.89734 0.403281 0
+-4.0918 0.824495 0
+-4.40557 1.37338 0
+-4.86845 1.95469 0
+-5.47107 2.42766 0
+-6.16073 2.66132 0
+-6.85361 2.58275 0
+-7.45759 2.20084 0
+-7.89727 1.59909 0
+-8.13152 0.900669 0
+-8.15786 0.22026 0
+-8.00355 -0.374939 0
+-7.71019 -0.875886 0
+-7.3208 -1.30847 0
+-6.87614 -1.68971 0
+-6.42012 -1.98991 0
+-6.00764 -2.12379 0
+-5.7078 -1.97512 0
+-5.59821 -1.44411 0
+-5.74993 -0.500619 0
+-6.20641 0.777751 0
+-6.96386 2.20191 0
+-7.96203 3.50989 0
+-9.09152 4.4381 0
+-10.2176 4.80059 0
+-11.2131 4.54654 0
+-11.9896 3.77404 0
+-12.5142 2.6957 0
+-12.8086 1.57075 0
+-12.932 0.631079 0
+-12.9583 0.0264968 0
+-12.9564 -0.199689 0
+-12.9771 -0.109452 0
+-13.0441 0.149422 0
+-13.1486 0.376023 0
+-13.2455 0.357915 0
+-13.2524 -0.0820034 0
+-13.0582 -1.03629 0
+-12.5446 -2.46823 0
+-11.6211 -4.19006 0
+-10.2619 -5.8824 0
+-8.53171 -7.15786 0
+-6.58896 -7.65521 0
+-4.66421 -7.13922 0
+-3.01603 -5.57785 0
+-1.87494 -3.17236 0
+-1.38931 -0.327493 0
+-1.58799 2.43519 0
+-2.37087 4.60115 0
+-3.53162 5.79068 0
+-4.80713 5.85356 0
+-5.94037 4.90112 0
+-6.73886 3.26574 0
+-7.11263 1.40038 0
+-7.08152 -0.252182 0
+-6.75063 -1.38258 0
+-6.2632 -1.89225 0
+-5.74762 -1.89991 0
+-5.27689 -1.67559 0
+-4.85397 -1.52608 0
+-4.42673 -1.67227 0
+-3.92554 -2.16097 0
+-3.3088 -2.84106 0
+-2.59914 -3.4113 0
+-1.89624 -3.52409 0
+-1.36012 -2.91189 0
+-1.16871 -1.49386 0
+-1.46311 0.574248 0
+-2.29826 2.92512 0
+-3.61538 5.07262 0
+-5.24568 6.544 0
+-6.94561 7.01158 0
+-8.45436 6.38444 0
+-9.55778 4.83303 0
+-10.1406 2.73982 0
+-10.212 0.590867 0
+-9.8969 -1.15963 0
+-9.39463 -2.21238 0
+-8.91736 -2.49688 0
+-8.62647 -2.17316 0
+-8.58677 -1.56109 0
+-8.753 -1.02089 0
+-8.99276 -0.825017 0
+-9.13787 -1.06555 0
+-9.04657 -1.62886 0
+-8.65527 -2.24653 0
+-8.00202 -2.60445 0
+-7.21331 -2.47098 0
+-6.45906 -1.79685 0
+-5.89176 -0.747854 0
+-5.59155 0.343947 0
+-5.53658 1.09423 0
+-5.60993 1.20481 0
+-2.88527 0.581859 0
+-1.47257 -0.0903713 0
+-1.47257 -0.177594 0
+-2.32696 -0.0876762 0
+-4.63415 -0.150089 0
+-9.24357 -0.233489 0
+-9.43672 -0.30278 0
+-9.73707 -0.24189 0
+-10.1141 -0.0229152 0
+-10.4891 0.226018 0
+-10.751 0.304224 0
+-10.7875 0.0510368 0
+-10.5244 -0.562891 0
+-9.95659 -1.40594 0
+-9.15964 -2.23017 0
+-8.2722 -2.77006 0
+-7.4548 -2.85234 0
+-6.83821 -2.46924 0
+-6.48071 -1.78388 0
+-6.35096 -1.06485 0
+-6.34323 -0.578105 0
+-6.31965 -0.481774 0
+-6.16302 -0.768319 0
+-5.81978 -1.27741 0
+-5.31651 -1.77143 0
+-4.74472 -2.03748 0
+-4.22215 -1.97025 0
+-3.84739 -1.60232 0
+-3.6658 -1.07357 0
+-3.65932 -0.556348 0
+-3.7625 -0.172032 0
+-3.89669 0.0625617 0
+-4.00665 0.234423 0
+-4.08378 0.480418 0
+-4.1661 0.90681 0
+-4.31598 1.52326 0
+-4.58774 2.22645 0
+-5.00062 2.84054 0
+-5.5276 3.1883 0
+-6.10196 3.1571 0
+-6.63751 2.73638 0
+-7.05445 2.01603 0
+-7.30082 1.14704 0
+-7.36223 0.281669 0
+-7.25814 -0.479025 0
+-7.02953 -1.1045 0
+-6.72579 -1.6122 0
+-6.39767 -2.01783 0
+-6.09693 -2.29065 0
+-5.87839 -2.34233 0
+-5.79867 -2.05484 0
+-5.90963 -1.33316 0
+-6.24698 -0.163272 0
+-6.81707 1.34784 0
+-7.58695 2.97179 0
+-8.48384 4.40678 0
+-9.40761 5.36187 0
+-10.2543 5.64725 0
+-10.9429 5.23521 0
+-11.436 4.2671 0
+-11.7438 3.00349 0
+-11.9117 1.73866 0
+-11.9962 0.715611 0
+-12.0435 0.0737841 0
+-12.0812 -0.162033 0
+-12.1208 -0.0697898 0
+-12.1639 0.192492 0
+-12.204 0.416124 0
+-12.2226 0.376557 0
+-12.1794 -0.125271 0
+-12.0049 -1.2108 0
+-11.6096 -2.86351 0
+-10.9105 -4.88915 0
+-9.86427 -6.92863 0
+-8.49319 -8.52894 0
+-6.89454 -9.25386 0
+-5.23 -8.80376 0
+-3.6969 -7.11095 0
+-2.48736 -4.38189 0
+-1.74475 -1.0701 0
+-1.52871 2.21915 0
+-1.79893 4.87137 0
+-2.42366 6.41541 0
+-3.2119 6.6418 0
+-3.96067 5.64989 0
+-4.5041 3.80917 0
+-4.75003 1.64631 0
+-4.69355 -0.308658 0
+-4.40403 -1.6721 0
+-3.99102 -2.30526 0
+-3.56187 -2.32905 0
+-3.18605 -2.05141 0
+-2.87837 -1.83376 0
+-2.606 -1.94463 0
+-2.31516 -2.45181 0
+-1.96638 -3.18985 0
+-1.56459 -3.81308 0
+-1.17234 -3.91635 0
+-0.89995 -3.18427 0
+-0.875297 -1.51851 0
+-1.20281 0.901765 0
+-1.92551 3.64782 0
+-3.00235 6.14946 0
+-4.3088 7.85045 0
+-5.66156 8.36434 0
+-6.86152 7.5844 0
+-7.74337 5.71488 0
+-8.21814 3.2146 0
+-8.29632 0.669051 0
+-8.08375 -1.3722 0
+-7.75019 -2.54594 0
+-7.47874 -2.76833 0
+-7.41071 -2.24118 0
+-7.60295 -1.36886 0
+-8.01154 -0.612298 0
+-8.50767 -0.328879 0
+-8.92092 -0.652303 0
+-9.09579 -1.45398 0
+-8.94311 -2.39922 0
+-8.46881 -3.07874 0
+-7.77052 -3.16927 0
+-7.00312 -2.56425 0
+-6.32628 -1.42469 0
+-5.85303 -0.129307 0
+-5.61771 0.858917 0
+-5.57457 1.16167 0
+-2.79608 0.635644 0
+-1.41559 -0.0578489 0
+-1.41559 -0.169886 0
+-2.12019 -0.0538469 0
+-4.19406 -0.0847396 0
+-8.31204 -0.11172 0
+-8.52894 -0.0858858 0
+-8.85098 0.0801525 0
+-9.22977 0.355877 0
+-9.57193 0.568176 0
+-9.76501 0.497306 0
+-9.71257 -0.00139787 0
+-9.36911 -0.90635 0
+-8.76258 -2.01247 0
+-7.99434 -2.99841 0
+-7.21325 -3.55116 0
+-6.57029 -3.49529 0
+-6.16902 -2.87052 0
+-6.03058 -1.92232 0
+-6.08715 -1.00828 0
+-6.20684 -0.458418 0
+-6.24174 -0.446871 0
+-6.08193 -0.928121 0
+-5.69526 -1.66409 0
+-5.13743 -2.32926 0
+-4.52888 -2.64602 0
+-4.00847 -2.49066 0
+-3.683 -1.92779 0
+-3.59173 -1.16484 0
+-3.69779 -0.45029 0
+-3.9082 0.0383839 0
+-4.11332 0.267678 0
+-4.22964 0.350746 0
+-4.22939 0.480173 0
+-4.1457 0.823113 0
+-4.05281 1.43037 0
+-4.03234 2.20598 0
+-4.14111 2.94931 0
+-4.39207 3.43927 0
+-4.75252 3.51755 0
+-5.15784 3.14171 0
+-5.5342 2.39239 0
+-5.82089 1.43374 0
+-5.98497 0.44575 0
+-6.0247 -0.439303 0
+-5.96384 -1.16536 0
+-5.84215 -1.73389 0
+-5.7069 -2.15308 0
+-5.60748 -2.39007 0
+-5.59135 -2.35846 0
+-5.69864 -1.94754 0
+-5.95484 -1.07696 0
+-6.36357 0.245458 0
+-6.90172 1.886 0
+-7.51936 3.58944 0
+-8.14709 5.03451 0
+-8.71125 5.92603 0
+-9.15341 6.08941 0
+-9.44742 5.52921 0
+-9.60681 4.42649 0
+-9.67785 3.07454 0
+-9.71833 1.77913 0
+-9.77004 0.767327 0
+-9.8412 0.144945 0
+-9.91291 -0.0903238 0
+-9.95594 -0.026757 0
+-9.94894 0.185492 0
+-9.88836 0.355537 0
+-9.7839 0.272103 0
+-9.64106 -0.268109 0
+-9.44381 -1.40805 0
+-9.15103 -3.15629 0
+-8.71183 -5.32835 0
+-8.08657 -7.55389 0
+-7.26359 -9.35192 0
+-6.26826 -10.2492 0
+-5.16379 -9.90823 0
+-4.04374 -8.23099 0
+-3.01646 -5.40918 0
+-2.1832 -1.90336 0
+-1.61442 1.65037 0
+-1.33092 4.58786 0
+-1.29682 6.38132 0
+-1.42821 6.77318 0
+-1.61581 5.8375 0
+-1.75541 3.94876 0
+-1.77596 1.66686 0
+-1.65624 -0.428375 0
+-1.4247 -1.90364 0
+-1.14339 -2.58658 0
+-0.882255 -2.59019 0
+-0.693672 -2.24 0
+-0.596215 -1.93122 0
+-0.573241 -1.96761 0
+-0.585751 -2.4393 0
+-0.593787 -3.18181 0
+-0.577607 -3.82926 0
+-0.55039 -3.94357 0
+-0.557691 -3.17697 0
+-0.664052 -1.41215 0
+-0.931747 1.16946 0
+-1.39862 4.11469 0
+-2.06165 6.81249 0
+-2.87121 8.66001 0
+-3.73847 9.2316 0
+-4.5547 8.40063 0
+-5.21812 6.3783 0
+-5.66119 3.65767 0
+-5.87053 0.878388 0
+-5.89266 -1.35007 0
+-5.82235 -2.61625 0
+-5.77535 -2.81533 0
+-5.85279 -2.16374 0
+-6.10811 -1.11354 0
+-6.52781 -0.1926 0
+-7.03327 0.176578 0
+-7.50394 -0.181627 0
+-7.81479 -1.14313 0
+-7.87587 -2.33814 0
+-7.661 -3.29361 0
+-7.21533 -3.61494 0
+-6.63947 -3.14011 0
+-6.05715 -2.00701 0
+-5.5793 -0.60716 0
+-5.27721 0.556826 0
+-5.17234 1.05681 0
+-2.5553 0.704193 0
+-1.29455 0.0354874 0
+-1.29455 -0.102981 0
+-1.84235 -0.0282395 0
+-3.60697 -0.035208 0
+-7.07561 -0.0203646 0
+-7.23365 0.0721626 0
+-7.45527 0.30177 0
+-7.68952 0.590131 0
+-7.85704 0.735695 0
+-7.87748 0.517743 0
+-7.69887 -0.180003 0
+-7.32059 -1.28464 0
+-6.80169 -2.53137 0
+-6.24997 -3.55013 0
+-5.79221 -4.00891 0
+-5.5332 -3.75431 0
+-5.51778 -2.88593 0
+-5.71164 -1.72846 0
+-6.00884 -0.711078 0
+-6.2646 -0.202661 0
+-6.34294 -0.368532 0
+-6.1637 -1.10736 0
+-5.73214 -2.09565 0
+-5.13918 -2.92222 0
+-4.53082 -3.25438 0
+-4.05776 -2.96372 0
+-3.8244 -2.16115 0
+-3.85583 -1.13341 0
+-4.09335 -0.212767 0
+-4.41833 0.36337 0
+-4.69457 0.543911 0
+-4.81391 0.47009 0
+-4.72974 0.396001 0
+-4.46717 0.560545 0
+-4.1081 1.07131 0
+-3.75949 1.85737 0
+-3.51836 2.70818 0
+-3.44517 3.36608 0
+-3.55237 3.62474 0
+-3.80875 3.39809 0
+-4.15513 2.73877 0
+-4.52448 1.80309 0
+-4.85987 0.781137 0
+-5.12598 -0.173192 0
+-5.31296 -0.97838 0
+-5.43393 -1.61292 0
+-5.51829 -2.06872 0
+-5.60293 -2.30544 0
+-5.72307 -2.23831 0
+-5.90363 -1.76699 0
+-6.15163 -0.828963 0
+-6.45248 0.546306 0
+-6.7717 2.20522 0
+-7.06244 3.88017 0
+-7.27774 5.24981 0
+-7.38487 6.03315 0
+-7.37675 6.0813 0
+-7.27658 5.42904 0
+-7.13322 4.28313 0
+-7.00743 2.94875 0
+-6.95018 1.72189 0
+-6.9778 0.794947 0
+-7.05997 0.227118 0
+-7.14524 -0.00506059 0
+-7.17751 0.00551919 0
+-7.12027 0.12825 0
+-6.97106 0.206329 0
+-6.75512 0.0561551 0
+-6.5026 -0.520624 0
+-6.24404 -1.66661 0
+-5.99919 -3.40113 0
+-5.77758 -5.54997 0
+-5.57583 -7.75564 0
+-5.37299 -9.55475 0
+-5.13119 -10.491 0
+-4.80548 -10.2339 0
+-4.36033 -8.67614 0
+-3.7858 -5.98371 0
+-3.10561 -2.58356 0
+-2.37262 0.917385 0
+-1.65313 3.86837 0
+-1.00649 5.73468 0
+-0.468723 6.23541 0
+-0.0462461 5.41502 0
+0.278711 3.62381 0
+0.53447 1.4111 0
+0.744471 -0.638377 0
+0.916159 -2.07533 0
+1.03822 -2.70864 0
+1.08679 -2.63876 0
+1.03763 -2.19084 0
+0.878873 -1.77246 0
+0.619131 -1.70787 0
+0.287883 -2.10805 0
+-0.0716942 -2.82224 0
+-0.414247 -3.48671 0
+-0.703889 -3.65392 0
+-0.922873 -2.95799 0
+-1.07601 -1.25901 0
+-1.19043 1.28387 0
+-1.30998 4.23425 0
+-1.48442 6.98692 0
+-1.7551 8.9307 0
+-2.14142 9.61792 0
+-2.63226 8.89147 0
+-3.18609 6.93213 0
+-3.74078 4.21236 0
+-4.23083 1.36844 0
+-4.60702 -0.973877 0
+-4.85182 -2.37144 0
+-4.98453 -2.68262 0
+-5.05331 -2.09496 0
+-5.11686 -1.04999 0
+-5.22243 -0.0870308 0
+-5.38845 0.342598 0
+-5.59794 0.0278627 0
+-5.80486 -0.936216 0
+-5.9511 -2.1919 0
+-5.98782 -3.25689 0
+-5.89269 -3.71007 0
+-5.67718 -3.35562 0
+-5.38352 -2.30067 0
+-5.07471 -0.915963 0
+-4.82202 0.304129 0
+-4.69143 0.926223 0
+-2.30547 0.738821 0
+-1.16619 0.127807 0
+-1.16619 -0.0217997 0
+-1.58374 -0.0208078 0
+-3.06139 -0.0203884 0
+-5.9275 0.00595979 0
+-5.96599 0.110659 0
+-5.9978 0.333573 0
+-5.98316 0.575496 0
+-5.88087 0.633403 0
+-5.66912 0.305997 0
+-5.36095 -0.48818 0
+-5.00871 -1.63687 0
+-4.69557 -2.84451 0
+-4.51493 -3.73076 0
+-4.54238 -3.98147 0
+-4.80743 -3.48926 0
+-5.27576 -2.41761 0
+-5.8506 -1.15362 0
+-6.39494 -0.166742 0
+-6.76833 0.170734 0
+-6.86771 -0.269158 0
+-6.66013 -1.31494 0
+-6.19693 -2.55885 0
+-5.60236 -3.51679 0
+-5.03796 -3.81877 0
+-4.65331 -3.34837 0
+-4.53981 -2.27465 0
+-4.70379 -0.969427 0
+-5.06717 0.150614 0
+-5.49377 0.789967 0
+-5.83148 0.881621 0
+-5.9567 0.595315 0
+-5.80824 0.24754 0
+-5.40144 0.153744 0
+-4.81959 0.489453 0
+-4.18735 1.22514 0
+-3.63586 2.15669 0
+-3.27042 3.00063 0
+-3.14987 3.5042 0
+-3.28055 3.52878 0
+-3.62276 3.08098 0
+-4.10596 2.28628 0
+-4.64822 1.3234 0
+-5.17512 0.353709 0
+-5.63389 -0.519611 0
+-5.99995 -1.24686 0
+-6.27451 -1.79416 0
+-6.47498 -2.10496 0
+-6.62266 -2.09063 0
+-6.73171 -1.65794 0
+-6.80186 -0.758816 0
+-6.81706 0.561502 0
+-6.75142 2.13959 0
+-6.58112 3.70988 0
+-6.29809 4.96678 0
+-5.91928 5.65434 0
+-5.48675 5.64877 0
+-5.05858 5.00087 0
+-4.69471 3.91926 0
+-4.44279 2.69683 0
+-4.32545 1.60454 0
+-4.32584 0.795336 0
+-4.38051 0.28179 0
+-4.44353 0.0579616 0
+-4.45707 0.0190543 0
+-4.38175 0.0529284 0
+-4.2157 0.0402828 0
+-3.97849 -0.18106 0
+-3.66638 -0.832726 0
+-3.33718 -1.99582 0
+-3.07889 -3.65942 0
+-2.98768 -5.64118 0
+-3.12923 -7.6141 0
+-3.5028 -9.18118 0
+-4.02825 -9.96554 0
+-4.56247 -9.69972 0
+-4.93919 -8.29942 0
+-5.0177 -5.9052 0
+-4.72337 -2.87789 0
+-4.06651 0.260524 0
+-3.13444 2.93631 0
+-2.0624 4.66264 0
+-0.995234 5.16825 0
+-0.0531499 4.47294 0
+0.688906 2.88175 0
+1.20491 0.895099 0
+1.507 -0.940465 0
+1.62675 -2.19508 0
+1.59651 -2.6784 0
+1.43768 -2.47993 0
+1.15904 -1.91219 0
+0.763987 -1.37741 0
+0.2621 -1.20598 0
+-0.320649 -1.5253 0
+-0.937302 -2.20558 0
+-1.52283 -2.90118 0
+-2.00418 -3.17257 0
+-2.31616 -2.64601 0
+-2.42053 -1.15464 0
+-2.32348 1.18683 0
+-2.08401 3.99478 0
+-1.80706 6.70997 0
+-1.62064 8.74428 0
+-1.64243 9.63972 0
+-1.94515 9.19418 0
+-2.53147 7.51845 0
+-3.32733 5.00822 0
+-4.19734 2.23844 0
+-4.97927 -0.191944 0
+-5.52818 -1.82253 0
+-5.75624 -2.45457 0
+-5.65545 -2.19575 0
+-5.29659 -1.40885 0
+-4.8057 -0.577923 0
+-4.3264 -0.136703 0
+-3.97975 -0.318787 0
+-3.83365 -1.08231 0
+-3.89032 -2.13523 0
+-4.09367 -3.05354 0
+-4.35231 -3.45142 0
+-4.57022 -3.13772 0
+-4.67663 -2.19426 0
+-4.64846 -0.944131 0
+-4.51958 0.175247 0
+-4.37277 0.779414 0
+-2.15234 0.677298 0
+-1.07336 0.152697 0
+-1.07336 0.0315159 0
+-1.4031 -0.034315 0
+-2.68288 -0.0460056 0
+-5.13529 -0.0438497 0
+-5.03441 0.00978561 0
+-4.84802 0.147178 0
+-4.55518 0.282662 0
+-4.16436 0.242579 0
+-3.72277 -0.135594 0
+-3.31334 -0.897605 0
+-3.03836 -1.91185 0
+-2.99413 -2.88874 0
+-3.24372 -3.48118 0
+-3.79528 -3.42991 0
+-4.59254 -2.69199 0
+-5.52128 -1.48887 0
+-6.4314 -0.243498 0
+-7.17039 0.572253 0
+-7.61942 0.619767 0
+-7.72205 -0.166528 0
+-7.49865 -1.53834 0
+-7.04312 -3.01438 0
+-6.50099 -4.05892 0
+-6.03266 -4.28709 0
+-5.77098 -3.61006 0
+-5.78522 -2.2604 0
+-6.06315 -0.691499 0
+-6.51617 0.603636 0
+-7.00533 1.27913 0
+-7.37919 1.25548 0
+-7.51277 0.728899 0
+-7.33833 0.0730943 0
+-6.86143 -0.323157 0
+-6.15908 -0.21289 0
+-5.36046 0.426513 0
+-4.61527 1.41151 0
+-4.0596 2.44495 0
+-3.78857 3.23317 0
+-3.84101 3.58122 0
+-4.19676 3.43673 0
+-4.78589 2.87542 0
+-5.50757 2.04508 0
+-6.25394 1.10008 0
+-6.93275 0.159195 0
+-7.482 -0.697613 0
+-7.87277 -1.40338 0
+-8.10121 -1.87653 0
+-8.17522 -2.01662 0
+-8.10243 -1.73073 0
+-7.8833 -0.977944 0
+-7.51163 0.189833 0
+-6.98299 1.61095 0
+-6.3086 3.03549 0
+-5.52706 4.18525 0
+-4.70529 4.83257 0
+-3.92579 4.86927 0
+-3.26511 4.3402 0
+-2.77301 3.42715 0
+-2.46201 2.38583 0
+-2.31053 1.45307 0
+-2.26692 0.751719 0
+-2.23285 0.247728 0
+-2.2359 0.0610112 0
+-2.2305 0.0136537 0
+-2.18243 0.00485486 0
+-2.099 -0.0431444 0
+-1.99392 -0.286143 0
+-1.71329 -1.11336 0
+-1.33942 -2.36969 0
+-1.03382 -3.96502 0
+-0.991808 -5.68319 0
+-1.36327 -7.24264 0
+-2.18584 -8.35861 0
+-3.35947 -8.7919 0
+-4.6683 -8.3909 0
+-5.83945 -7.12826 0
+-6.61839 -5.12626 0
+-6.83673 -2.65954 0
+-6.45226 -0.123946 0
+-5.55065 2.0347 0
+-4.31247 3.42446 0
+-2.9597 3.81548 0
+-1.70012 3.21335 0
+-0.685421 1.86706 0
+0.00765286 0.202025 0
+0.372695 -1.30551 0
+0.451633 -2.27401 0
+0.30597 -2.53274 0
+-0.00781865 -2.16614 0
+-0.451066 -1.46894 0
+-1.00191 -0.826562 0
+-1.64392 -0.563974 0
+-2.35086 -0.818361 0
+-3.0747 -1.48174 0
+-3.74208 -2.2338 0
+-4.26231 -2.65235 0
+-4.54681 -2.3615 0
+-4.53694 -1.16451 0
+-4.23223 0.882121 0
+-3.70772 3.47027 0
+-3.10966 6.11191 0
+-2.62708 8.2617 0
+-2.44491 9.45755 0
+-2.6909 9.44017 0
+-3.39198 8.21953 0
+-4.45481 6.07105 0
+-5.67923 3.46286 0
+-6.80395 0.932776 0
+-7.57327 -1.05321 0
+-7.80577 -2.22207 0
+-7.44397 -2.55755 0
+-6.56997 -2.28285 0
+-5.38303 -1.76486 0
+-4.14598 -1.37375 0
+-3.11608 -1.34869 0
+-2.48045 -1.71793 0
+-2.31385 -2.30184 0
+-2.56874 -2.79865 0
+-3.09881 -2.92135 0
+-3.70777 -2.52876 0
+-4.20904 -1.69299 0
+-4.47983 -0.673347 0
+-4.49512 0.190535 0
+-4.33207 0.616367 0
+-2.14022 0.487297 0
+-1.04015 0.0744778 0
+-1.04015 0.0344018 0
+-1.31577 -0.0642439 0
+-2.50714 -0.10416 0
+-4.7805 -0.156098 0
+-4.56413 -0.206577 0
+-4.19678 -0.220177 0
+-3.67628 -0.237837 0
+-3.05663 -0.377066 0
+-2.44509 -0.747135 0
+-1.98117 -1.36153 0
+-1.80189 -2.09112 0
+-2.00365 -2.68698 0
+-2.61257 -2.87225 0
+-3.57267 -2.46981 0
+-4.75564 -1.50902 0
+-5.98888 -0.255624 0
+-7.09341 0.861024 0
+-7.92254 1.40138 0
+-8.39221 1.08944 0
+-8.49502 -0.063719 0
+-8.29619 -1.73716 0
+-7.91516 -3.39542 0
+-7.49717 -4.47691 0
+-7.18051 -4.60376 0
+-7.06582 -3.72474 0
+-7.1943 -2.13192 0
+-7.5399 -0.345898 0
+-8.01761 1.08135 0
+-8.50521 1.76672 0
+-8.87227 1.62254 0
+-9.00951 0.866143 0
+-8.85306 -0.0833634 0
+-8.40023 -0.775981 0
+-7.71345 -0.89967 0
+-6.90918 -0.37776 0
+-6.1332 0.635531 0
+-5.52909 1.84084 0
+-5.20858 2.91266 0
+-5.2302 3.60284 0
+-5.58961 3.79613 0
+-6.22324 3.50906 0
+-7.02482 2.84665 0
+-7.87049 1.94576 0
+-8.64552 0.934228 0
+-9.26378 -0.0793587 0
+-9.67454 -0.992618 0
+-9.85684 -1.69422 0
+-9.80706 -2.06641 0
+-9.52717 -2.01062 0
+-9.01914 -1.48598 0
+-8.28744 -0.541868 0
+-7.34975 0.673268 0
+-6.25105 1.93679 0
+-5.07094 3.00513 0
+-3.91583 3.67745 0
+-2.89574 3.84919 0
+-2.09372 3.53817 0
+-1.54049 2.87392 0
+-1.20732 2.05267 0
+-1.02514 1.27089 0
+-0.920798 0.647376 0
+-0.758645 0.0855741 0
+-0.707575 0.009942 0
+-0.694934 0.0010127 0
+-0.689196 -0.000883674 0
+-0.720087 -0.0122535 0
+-0.873768 -0.132462 0
+-0.700489 -1.28664 0
+-0.344813 -2.72536 0
+-0.0224645 -4.28737 0
+-0.00848836 -5.69717 0
+-0.519552 -6.73157 0
+-1.62745 -7.25072 0
+-3.22848 -7.19087 0
+-5.06969 -6.54968 0
+-6.81871 -5.37924 0
+-8.15361 -3.79137 0
+-8.8456 -1.96756 0
+-8.81134 -0.158206 0
+-8.12192 1.34528 0
+-6.97001 2.27256 0
+-5.61006 2.45552 0
+-4.29225 1.89555 0
+-3.20971 0.784511 0
+-2.47059 -0.537089 0
+-2.09793 -1.67816 0
+-2.051 -2.32094 0
+-2.25714 -2.3266 0
+-2.64171 -1.78157 0
+-3.14693 -0.963722 0
+-3.73609 -0.237407 0
+-4.38512 0.0850593 0
+-5.06749 -0.135997 0
+-5.73959 -0.809644 0
+-6.33374 -1.63965 0
+-6.76337 -2.22271 0
+-6.94176 -2.18312 0
+-6.8108 -1.29548 0
+-6.37173 0.443055 0
+-5.70532 2.80386 0
+-4.96988 5.37647 0
+-4.37311 7.66493 0
+-4.12232 9.20676 0
+-4.36511 9.68296 0
+-5.13741 8.99182 0
+-6.33637 7.27001 0
+-7.73007 4.85657 0
+-9.00571 2.20842 0
+-9.84593 -0.212989 0
+-10.0128 -2.05524 0
+-9.41414 -3.15617 0
+-8.13278 -3.56421 0
+-6.40853 -3.48912 0
+-4.57876 -3.20352 0
+-2.99324 -2.9342 0
+-1.92745 -2.78372 0
+-1.51793 -2.71137 0
+-1.73641 -2.58016 0
+-2.40905 -2.24872 0
+-3.27397 -1.66384 0
+-4.05993 -0.907036 0
+-4.56333 -0.169948 0
+-4.70272 0.329932 0
+-4.53707 0.450714 0
+-2.24801 0.195203 0
+-1.06838 -0.0930117 0
+-1.06838 -0.0096707 0
+-1.29884 -0.101306 0
+-2.48816 -0.177666 0
+-4.77067 -0.299633 0
+-4.4942 -0.483048 0
+-4.03112 -0.683252 0
+-3.39165 -0.87731 0
+-2.6579 -1.11081 0
+-1.9716 -1.43344 0
+-1.50057 -1.83255 0
+-1.39289 -2.1988 0
+-1.73308 -2.34679 0
+-2.51495 -2.09038 0
+-3.64008 -1.34468 0
+-4.94218 -0.206915 0
+-6.2286 1.0308 0
+-7.32543 1.95785 0
+-8.11423 2.19018 0
+-8.55213 1.52734 0
+-8.67137 0.0555217 0
+-8.56073 -1.8478 0
+-8.33785 -3.6183 0
+-8.12068 -4.69408 0
+-8.00404 -4.72041 0
+-8.0443 -3.68448 0
+-8.25307 -1.92314 0
+-8.59913 0.000162483 0
+-9.01741 1.49963 0
+-9.42283 2.17214 0
+-9.72642 1.92613 0
+-9.8514 0.991124 0
+-9.74836 -0.186399 0
+-9.40858 -1.11576 0
+-8.87201 -1.43624 0
+-8.22479 -1.02498 0
+-7.58409 -0.00516429 0
+-7.07386 1.33061 0
+-6.79807 2.63686 0
+-6.81817 3.62294 0
+-7.13998 4.11795 0
+-7.71321 4.08229 0
+-8.44401 3.57745 0
+-9.21733 2.71908 0
+-9.92219 1.63908 0
+-10.4712 0.469673 0
+-10.8085 -0.65534 0
+-10.9053 -1.59745 0
+-10.749 -2.22266 0
+-10.3335 -2.4261 0
+-9.65578 -2.16372 0
+-8.72172 -1.47593 0
+-7.55917 -0.489289 0
+-6.23118 0.608805 0
+-4.83935 1.6133 0
+-3.51029 2.34839 0
+-2.36691 2.70581 0
+-1.49362 2.66488 0
+-0.908545 2.28885 0
+-0.555025 1.69915 0
+-0.319289 1.03515 0
+-0.0918506 0.419938 0
+-0.0207861 0.0145095 0
+-0.0118965 0.0010524 0
+-0.0109782 9.44143e-05 0
+-0.0117453 -0.000116615 0
+-0.0220762 -0.00192254 0
+-0.118458 -0.0360806 0
+-0.205307 -1.19979 0
+-0.0132917 -2.91738 0
+0.203805 -4.50446 0
+0.125205 -5.61857 0
+-0.488989 -6.11738 0
+-1.72119 -6.01851 0
+-3.4732 -5.43886 0
+-5.49582 -4.52707 0
+-7.45905 -3.41601 0
+-9.04055 -2.20987 0
+-10.0062 -1.00187 0
+-10.2618 0.0973436 0
+-9.86279 0.946289 0
+-8.98468 1.39445 0
+-7.86602 1.33686 0
+-6.74554 0.775063 0
+-5.81121 -0.149818 0
+-5.1728 -1.1755 0
+-4.85997 -1.99099 0
+-4.84042 -2.3405 0
+-5.04786 -2.11916 0
+-5.40925 -1.42018 0
+-5.86345 -0.509525 0
+-6.36811 0.267255 0
+-6.89569 0.612634 0
+-7.42233 0.390643 0
+-7.9155 -0.316472 0
+-8.32639 -1.22875 0
+-8.59186 -1.95725 0
+-8.64765 -2.12732 0
+-8.45074 -1.49239 0
+-8.00418 -0.00350316 0
+-7.375 2.17467 0
+-6.69524 4.69671 0
+-6.14151 7.1112 0
+-5.89476 8.96001 0
+-6.08878 9.87697 0
+-6.76174 9.66478 0
+-7.82683 8.3351 0
+-9.07485 6.10459 0
+-10.2132 3.34673 0
+-10.9342 0.508077 0
+-10.9965 -1.99299 0
+-10.2936 -3.85903 0
+-8.89065 -4.96718 0
+-7.01528 -5.36448 0
+-5.00572 -5.21308 0
+-3.22796 -4.71196 0
+-1.98526 -4.02642 0
+-1.44454 -3.25209 0
+-1.6002 -2.42451 0
+-2.2853 -1.56361 0
+-3.22654 -0.722606 0
+-4.12598 -0.00759232 0
+-4.74577 0.449837 0
+-4.972 0.556161 0
+-4.84208 0.320801 0
+-2.40634 -0.11477 0
+-1.13866 -0.29087 0
+-1.13866 -0.0754531 0
+-1.30874 -0.135271 0
+-2.53345 -0.246982 0
+-4.91039 -0.438083 0
+-4.63961 -0.753829 0
+-4.18294 -1.13992 0
+-3.5536 -1.50665 0
+-2.83782 -1.82659 0
+-2.17832 -2.09294 0
+-1.73683 -2.27403 0
+-1.64694 -2.28869 0
+-1.97294 -2.02079 0
+-2.68903 -1.37428 0
+-3.68605 -0.347659 0
+-4.80282 0.909855 0
+-5.87058 2.09856 0
+-6.75516 2.84244 0
+-7.38455 2.81957 0
+-7.75614 1.89893 0
+-7.92404 0.223425 0
+-7.97258 -1.79925 0
+-7.98721 -3.60367 0
+-8.03273 -4.64855 0
+-8.1437 -4.60943 0
+-8.32598 -3.5022 0
+-8.56491 -1.68421 0
+-8.83476 0.270012 0
+-9.10554 1.7704 0
+-9.34617 2.41277 0
+-9.52509 2.10504 0
+-9.61108 1.07711 0
+-9.5776 -0.219877 0
+-9.41193 -1.28143 0
+-9.12573 -1.72244 0
+-8.76058 -1.39013 0
+-8.384 -0.381742 0
+-8.07602 1.02263 0
+-7.91022 2.47107 0
+-7.9351 3.64781 0
+-8.16116 4.34401 0
+-8.55781 4.47894 0
+-9.0609 4.08055 0
+-9.58891 3.24709 0
+-10.062 2.11219 0
+-10.4169 0.824525 0
+-10.6116 -0.460582 0
+-10.6211 -1.58799 0
+-10.4271 -2.41666 0
+-10.0113 -2.84187 0
+-9.35616 -2.81887 0
+-8.45449 -2.3776 0
+-7.32491 -1.61887 0
+-6.02479 -0.691308 0
+-4.65199 0.240508 0
+-3.33042 1.02681 0
+-2.18161 1.557 0
+-1.29137 1.77464 0
+-0.684456 1.68193 0
+-0.319853 1.33454 0
+-0.116018 0.831317 0
+-0.00958548 0.313505 0
+-0.00115574 0.0060798 0
+-0.000276606 0.000173288 0
+-0.000189847 7.7167e-06 0
+-0.000284084 -2.24193e-05 0
+-0.0016602 -0.000546434 0
+-0.0158205 -0.0219204 0
+-0.0642354 -1.15137 0
+-0.0210253 -2.96059 0
+-0.0166819 -4.50881 0
+-0.281231 -5.35402 0
+-0.993529 -5.40508 0
+-2.20597 -4.80607 0
+-3.82713 -3.8177 0
+-5.64965 -2.70455 0
+-7.40884 -1.65682 0
+-8.85275 -0.765957 0
+-9.80337 -0.0512466 0
+-10.1931 0.487094 0
+-10.0692 0.822342 0
+-9.56738 0.89265 0
+-8.86746 0.636948 0
+-8.14579 0.0533984 0
+-7.53936 -0.756255 0
+-7.12796 -1.58689 0
+-6.93466 -2.1843 0
+-6.93892 -2.33623 0
+-7.09525 -1.96283 0
+-7.35064 -1.16479 0
+-7.65721 -0.202953 0
+-7.97861 0.588657 0
+-8.2903 0.924318 0
+-8.57512 0.675462 0
+-8.81688 -0.074703 0
+-8.99503 -1.05061 0
+-9.08309 -1.86919 0
+-9.0527 -2.1577 0
+-8.88311 -1.66199 0
+-8.57378 -0.312831 0
+-8.15619 1.75708 0
+-7.69909 4.23961 0
+-7.30249 6.7146 0
+-7.07815 8.73567 0
+-7.11898 9.9178 0
+-7.46482 10.0106 0
+-8.07594 8.94621 0
+-8.82521 6.85386 0
+-9.51629 4.03781 0
+-9.92701 0.918801 0
+-9.86847 -2.05153 0
+-9.24213 -4.48537 0
+-8.07623 -6.13308 0
+-6.52974 -6.91097 0
+-4.86047 -6.88235 0
+-3.36387 -6.20856 0
+-2.29864 -5.09165 0
+-1.8203 -3.73042 0
+-1.94257 -2.30224 0
+-2.53867 -0.967508 0
+-3.38251 0.121234 0
+-4.21691 0.826817 0
+-4.82808 1.061 0
+-5.10437 0.832445 0
+-5.06402 0.280455 0
+-2.53058 -0.331042 0
+-1.21834 -0.439592 0
+-1.21834 -0.128084 0
+-1.30344 -0.158589 0
+-2.55065 -0.296985 0
+-4.99856 -0.54218 0
+-4.788 -0.964391 0
+-4.42425 -1.50367 0
+-3.91537 -2.01553 0
+-3.32985 -2.4121 0
+-2.78118 -2.64161 0
+-2.39495 -2.66026 0
+-2.26965 -2.41399 0
+-2.44518 -1.84527 0
+-2.8908 -0.928661 0
+-3.51692 0.278466 0
+-4.20576 1.59869 0
+-4.84882 2.74162 0
+-5.37724 3.37085 0
+-5.77498 3.21731 0
+-6.0726 2.19655 0
+-6.32603 0.476861 0
+-6.58915 -1.53614 0
+-6.89073 -3.30209 0
+-7.22506 -4.31423 0
+-7.55849 -4.27599 0
+-7.84733 -3.21336 0
+-8.05783 -1.4737 0
+-8.17985 0.392025 0
+-8.22897 1.81953 0
+-8.23755 2.42135 0
+-8.23932 2.10682 0
+-8.25487 1.09266 0
+-8.28484 -0.189903 0
+-8.31398 -1.2523 0
+-8.32291 -1.7135 0
+-8.30094 -1.4121 0
+-8.25348 -0.429202 0
+-8.20135 0.970502 0
+-8.17298 2.44269 0
+-8.19319 3.66803 0
+-8.2734 4.42422 0
+-8.40686 4.6124 0
+-8.57078 4.24446 0
+-8.7343 3.41061 0
+-8.86845 2.24633 0
+-8.95257 0.908653 0
+-8.97369 -0.439462 0
+-8.9193 -1.64237 0
+-8.76878 -2.56719 0
+-8.48957 -3.12108 0
+-8.04245 -3.26599 0
+-7.39529 -3.02476 0
+-6.54037 -2.47379 0
+-5.5078 -1.72388 0
+-4.36834 -0.898952 0
+-3.2223 -0.119233 0
+-2.17658 0.511287 0
+-1.31746 0.915513 0
+-0.689299 1.05378 0
+-0.288602 0.933847 0
+-0.0765601 0.619275 0
+-0.0017733 0.238718 0
+-9.71256e-05 0.00440363 0
+-1.20025e-05 8.82807e-05 0
+-5.03714e-06 9.00246e-07 0
+-1.50372e-05 -1.25812e-05 0
+-0.000181821 -0.000379748 0
+-0.00254742 -0.0195548 0
+-0.0595793 -1.09434 0
+-0.191998 -2.82817 0
+-0.46721 -4.23359 0
+-0.975791 -4.84543 0
+-1.77216 -4.60871 0
+-2.84107 -3.73716 0
+-4.0952 -2.56357 0
+-5.39734 -1.4024 0
+-6.59698 -0.457181 0
+-7.56813 0.20519 0
+-8.23722 0.617849 0
+-8.59404 0.843911 0
+-8.68459 0.912895 0
+-8.59013 0.798191 0
+-8.40092 0.44774 0
+-8.19432 -0.153202 0
+-8.02298 -0.9276 0
+-7.91355 -1.69632 0
+-7.87224 -2.22561 0
+-7.89204 -2.31642 0
+-7.95825 -1.89662 0
+-8.05157 -1.07148 0
+-8.15043 -0.104085 0
+-8.23405 0.672276 0
+-8.28614 0.976401 0
+-8.29854 0.687868 0
+-8.27334 -0.0999031 0
+-8.22188 -1.10207 0
+-8.16021 -1.93086 0
+-8.10185 -2.21606 0
+-8.0506 -1.71324 0
+-7.99706 -0.366368 0
+-7.92196 1.68198 0
+-7.80609 4.12373 0
+-7.64261 6.55113 0
+-7.44535 8.53841 0
+-7.24768 9.72013 0
+-7.09068 9.85362 0
+-7.00367 8.8592 0
+-6.98485 6.83504 0
+-6.99107 4.04403 0
+-6.94378 0.871514 0
+-6.75198 -2.24333 0
+-6.34509 -4.89226 0
+-5.70355 -6.77462 0
+-4.87648 -7.73805 0
+-3.97867 -7.78016 0
+-3.1651 -7.02213 0
+-2.58891 -5.66784 0
+-2.3561 -3.96324 0
+-2.49239 -2.16595 0
+-2.93461 -0.525283 0
+-3.5502 0.736825 0
+-4.1785 1.45512 0
+-4.67983 1.56233 0
+-4.97603 1.12865 0
+-5.07007 0.374492 0
+-2.55897 -0.360806 0
+-1.27533 -0.472617 0
+-1.27533 -0.138199 0
+-1.26067 -0.168555 0
+-2.48691 -0.321293 0
+-4.9133 -0.598013 0
+-4.79119 -1.08649 0
+-4.56821 -1.72665 0
+-4.24366 -2.34009 0
+-3.85581 -2.79995 0
+-3.47112 -3.0263 0
+-3.16165 -2.96973 0
+-2.97975 -2.59589 0
+-2.94035 -1.88466 0
+-3.01851 -0.8505 0
+-3.16326 0.423214 0
+-3.32196 1.7574 0
+-3.46447 2.88413 0
+-3.59653 3.50291 0
+-3.75666 3.37745 0
+-3.99795 2.43784 0
+-4.36241 0.841316 0
+-4.85768 -1.04087 0
+-5.44489 -2.71488 0
+-6.04412 -3.715 0
+-6.55705 -3.76306 0
+-6.89845 -2.87196 0
+-7.02455 -1.3476 0
+-6.9477 0.315177 0
+-6.73227 1.60409 0
+-6.47376 2.16285 0
+-6.26906 1.90212 0
+-6.18846 1.01206 0
+-6.25893 -0.11943 0
+-6.46309 -1.04814 0
+-6.7515 -1.42509 0
+-7.06157 -1.10203 0
+-7.33562 -0.155158 0
+-7.53282 1.1677 0
+-7.63325 2.54313 0
+-7.63536 3.67014 0
+-7.55013 4.33899 0
+-7.39536 4.45763 0
+-7.19239 4.04149 0
+-6.96553 3.18376 0
+-6.74201 2.02281 0
+-6.54907 0.715708 0
+-6.40682 -0.581713 0
+-6.31874 -1.73045 0
+-6.26431 -2.62162 0
+-6.19867 -3.18672 0
+-6.06161 -3.40304 0
+-5.79397 -3.29241 0
+-5.35562 -2.91214 0
+-4.73903 -2.34047 0
+-3.9742 -1.66378 0
+-3.1233 -0.970137 0
+-2.2664 -0.345616 0
+-1.48342 0.132533 0
+-0.83862 0.408983 0
+-0.372393 0.46762 0
+-0.0993424 0.346225 0
+-0.0017143 0.14109 0
+-3.7292e-05 0.00272663 0
+2.34869e-06 4.87566e-05 0
+1.98249e-06 1.42577e-06 0
+5.40054e-06 -1.61507e-05 0
+4.7515e-05 -0.000421957 0
+-0.000941043 -0.0185662 0
+-0.116401 -0.978879 0
+-0.469321 -2.47525 0
+-1.06147 -3.64144 0
+-1.82641 -4.08049 0
+-2.67276 -3.76237 0
+-3.50697 -2.90294 0
+-4.25014 -1.8204 0
+-4.85242 -0.800119 0
+-5.30192 -0.00768389 0
+-5.62391 0.527181 0
+-5.86943 0.863377 0
+-6.0966 1.07108 0
+-6.3507 1.167 0
+-6.6499 1.09739 0
+-6.9813 0.779144 0
+-7.30869 0.174184 0
+-7.58844 -0.647849 0
+-7.7868 -1.49796 0
+-7.89101 -2.1214 0
+-7.90987 -2.29756 0
+-7.86464 -1.94184 0
+-7.77606 -1.16006 0
+-7.6546 -0.225551 0
+-7.49864 0.51632 0
+-7.30119 0.778956 0
+-7.06192 0.448599 0
+-6.79879 -0.363037 0
+-6.55276 -1.3481 0
+-6.3811 -2.10253 0
+-6.33905 -2.25811 0
+-6.45544 -1.59685 0
+-6.71197 -0.109838 0
+-7.03701 2.00702 0
+-7.31914 4.40587 0
+-7.43738 6.66937 0
+-7.29802 8.39904 0
+-6.86552 9.28764 0
+-6.17637 9.16447 0
+-5.33015 8.01298 0
+-4.46054 5.96543 0
+-3.69623 3.27972 0
+-3.12578 0.301066 0
+-2.77864 -2.59046 0
+-2.62749 -5.04342 0
+-2.60832 -6.79378 0
+-2.64967 -7.6967 0
+-2.69997 -7.72986 0
+-2.74295 -6.97915 0
+-2.79586 -5.61493 0
+-2.8932 -3.8659 0
+-3.06479 -1.99436 0
+-3.31883 -0.271245 0
+-3.63698 1.05498 0
+-3.98223 1.80037 0
+-4.31437 1.89447 0
+-4.60487 1.41914 0
+-4.84351 0.613139 0
+-2.48233 -0.170938 0
+-1.29296 -0.364935 0
+-1.29296 -0.0944127 0
+-1.18566 -0.167434 0
+-2.34742 -0.322924 0
+-4.65454 -0.608906 0
+-4.61869 -1.12235 0
+-4.53844 -1.80691 0
+-4.40642 -2.47211 0
+-4.23077 -2.9756 0
+-4.02952 -3.22755 0
+-3.81976 -3.17948 0
+-3.60781 -2.80785 0
+-3.38574 -2.10672 0
+-3.1377 -1.09855 0
+-2.85394 0.139461 0
+-2.54677 1.45023 0
+-2.25977 2.59713 0
+-2.06429 3.30743 0
+-2.04185 3.355 0
+-2.25722 2.65321 0
+-2.73158 1.31568 0
+-3.42553 -0.34692 0
+-4.23847 -1.90194 0
+-5.02797 -2.92549 0
+-5.64555 -3.14548 0
+-5.97789 -2.53962 0
+-5.97983 -1.34567 0
+-5.68786 0.0232108 0
+-5.20976 1.12599 0
+-4.69382 1.64691 0
+-4.28805 1.49635 0
+-4.10225 0.826261 0
+-4.18381 -0.0378622 0
+-4.51258 -0.719372 0
+-5.01341 -0.924254 0
+-5.58022 -0.535217 0
+-6.10284 0.367464 0
+-6.48959 1.55445 0
+-6.68114 2.73468 0
+-6.65521 3.64421 0
+-6.42384 4.10762 0
+-6.02656 4.06035 0
+-5.52231 3.53725 0
+-4.98126 2.64271 0
+-4.47601 1.51756 0
+-4.07109 0.310793 0
+-3.81156 -0.841247 0
+-3.71293 -1.82908 0
+-3.75622 -2.57833 0
+-3.89078 -3.05216 0
+-4.04532 -3.2485 0
+-4.14417 -3.19356 0
+-4.12338 -2.93292 0
+-3.94248 -2.52137 0
+-3.59042 -2.01584 0
+-3.08572 -1.47483 0
+-2.47163 -0.959705 0
+-1.80822 -0.530875 0
+-1.16394 -0.235302 0
+-0.608319 -0.0879992 0
+-0.206481 -0.0556136 0
+-0.0104158 -0.0549748 0
+-0.00120161 -0.00648754 0
+-0.00024448 -0.000908357 0
+-0.000151765 -9.12246e-05 0
+-0.000236844 6.88933e-05 0
+-0.000696442 3.76328e-05 0
+-0.00417989 -0.0150828 0
+-0.258324 -0.724734 0
+-0.907421 -1.82615 0
+-1.83237 -2.71649 0
+-2.81953 -3.09333 0
+-3.66142 -2.92048 0
+-4.21235 -2.35201 0
+-4.41778 -1.61497 0
+-4.32028 -0.89762 0
+-4.04212 -0.285848 0
+-3.74847 0.233538 0
+-3.60055 0.715451 0
+-3.71126 1.18179 0
+-4.11626 1.57199 0
+-4.76857 1.7497 0
+-5.55739 1.56796 0
+-6.3435 0.960296 0
+-6.99961 0.00826319 0
+-7.44275 -1.05482 0
+-7.6487 -1.91545 0
+-7.64525 -2.30101 0
+-7.48927 -2.09782 0
+-7.23896 -1.41037 0
+-6.93323 -0.531284 0
+-6.58584 0.16893 0
+-6.19514 0.388262 0
+-5.76403 0.0174835 0
+-5.32038 -0.806686 0
+-4.92744 -1.74103 0
+-4.67623 -2.35374 0
+-4.65853 -2.2758 0
+-4.92799 -1.32739 0
+-5.46422 0.426387 0
+-6.15712 2.69992 0
+-6.82149 5.07024 0
+-7.24013 7.08802 0
+-7.22356 8.38247 0
+-6.66816 8.73225 0
+-5.59393 8.09023 0
+-4.14804 6.56709 0
+-2.57149 4.38888 0
+-1.13815 1.84638 0
+-0.0852536 -0.751828 0
+0.443224 -3.11894 0
+0.424015 -5.02421 0
+-0.0525499 -6.31722 0
+-0.818105 -6.93114 0
+-1.67777 -6.87019 0
+-2.46134 -6.19559 0
+-3.05896 -5.0173 0
+-3.43395 -3.49091 0
+-3.61414 -1.81417 0
+-3.66982 -0.215572 0
+-3.68712 1.07228 0
+-3.74435 1.85759 0
+-3.89463 2.04475 0
+-4.1553 1.67982 0
+-4.50233 0.960169 0
+-2.35368 0.194822 0
+-1.27996 -0.145022 0
+-1.27996 -0.00868435 0
+-1.1066 -0.16072 0
+-2.18796 -0.31147 0
+-4.33257 -0.590974 0
+-4.35711 -1.09781 0
+-4.38445 -1.77956 0
+-4.40705 -2.44951 0
+-4.4135 -2.96914 0
+-4.38616 -3.2549 0
+-4.29974 -3.26589 0
+-4.12404 -2.98355 0
+-3.8321 -2.39866 0
+-3.41304 -1.5176 0
+-2.88582 -0.387762 0
+-2.30776 0.872168 0
+-1.77219 2.06156 0
+-1.39258 2.92782 0
+-1.27547 3.2379 0
+-1.48902 2.86676 0
+-2.03671 1.86337 0
+-2.84572 0.46209 0
+-3.77498 -0.972685 0
+-4.64395 -2.05652 0
+-5.27638 -2.51306 0
+-5.5466 -2.2694 0
+-5.41407 -1.47819 0
+-4.93494 -0.455922 0
+-4.24689 0.437946 0
+-3.53213 0.932142 0
+-2.97004 0.934257 0
+-2.69366 0.549883 0
+-2.76121 0.0296918 0
+-3.14842 -0.332162 0
+-3.76165 -0.311025 0
+-4.46587 0.169001 0
+-5.11795 1.01955 0
+-5.59622 2.03272 0
+-5.82029 2.95876 0
+-5.75936 3.58327 0
+-5.43036 3.77862 0
+-4.88936 3.51936 0
+-4.21933 2.86722 0
+-3.51629 1.93967 0
+-2.87487 0.876135 0
+-2.37436 -0.189718 0
+-2.06705 -1.14855 0
+-1.97101 -1.92512 0
+-2.06897 -2.48037 0
+-2.3138 -2.80733 0
+-2.6393 -2.923 0
+-2.97303 -2.85983 0
+-3.2472 -2.65875 0
+-3.40582 -2.36276 0
+-3.40904 -2.01262 0
+-3.2367 -1.64717 0
+-2.89131 -1.3051 0
+-2.39964 -1.02254 0
+-1.81109 -0.823857 0
+-1.1901 -0.708983 0
+-0.603782 -0.641934 0
+-0.1284 -0.530357 0
+-0.0286744 -0.106213 0
+-0.0133306 -0.0162521 0
+-0.011225 -0.00219685 0
+-0.0134797 0.00232364 0
+-0.0273772 0.0139351 0
+-0.101776 0.0593156 0
+-0.717773 -0.108736 0
+-1.732 -0.81192 0
+-2.9239 -1.52459 0
+-4.01933 -1.9979 0
+-4.77053 -2.16928 0
+-5.02748 -2.09506 0
+-4.77716 -1.8653 0
+-4.14332 -1.53146 0
+-3.34951 -1.07965 0
+-2.65639 -0.459583 0
+-2.29098 0.35004 0
+-2.38759 1.27839 0
+-2.95712 2.14153 0
+-3.89337 2.68595 0
+-5.01107 2.68566 0
+-6.10128 2.05051 0
+-6.98675 0.89373 0
+-7.56138 -0.480197 0
+-7.80361 -1.67321 0
+-7.76214 -2.34248 0
+-7.52228 -2.33769 0
+-7.16794 -1.76471 0
+-6.75445 -0.944766 0
+-6.30137 -0.284157 0
+-5.80557 -0.107533 0
+-5.26734 -0.520745 0
+-4.71698 -1.35705 0
+-4.22926 -2.22875 0
+-3.91627 -2.66674 0
+-3.89591 -2.29616 0
+-4.24422 -0.97908 0
+-4.94929 1.13146 0
+-5.8878 3.63843 0
+-6.83727 6.01972 0
+-7.52399 7.77474 0
+-7.69444 8.55292 0
+-7.18994 8.22774 0
+-6.00128 6.90157 0
+-4.28452 4.85033 0
+-2.33027 2.43463 0
+-0.493681 0.0097961 0
+0.894316 -2.13983 0
+1.60814 -3.83276 0
+1.57718 -4.99326 0
+0.891665 -5.6317 0
+-0.232669 -5.80681 0
+-1.51815 -5.58471 0
+-2.69814 -5.0156 0
+-3.57835 -4.13709 0
+-4.07127 -2.99798 0
+-4.19951 -1.68593 0
+-4.07231 -0.342765 0
+-3.84511 0.84508 0
+-3.67325 1.68573 0
+-3.67054 2.04204 0
+-3.88018 1.88946 0
+-4.26214 1.34213 0
+-2.27266 0.630501 0
+-1.27025 0.114965 0
+-1.27025 0.0874815 0
+-1.06038 -0.154359 0
+-2.08637 -0.298134 0
+-4.11083 -0.56456 0
+-4.16044 -1.04819 0
+-4.24323 -1.69677 0
+-4.35889 -2.33385 0
+-4.49189 -2.83614 0
+-4.60908 -3.13771 0
+-4.66302 -3.21196 0
+-4.60192 -3.04465 0
+-4.38456 -2.61601 0
+-3.99683 -1.90533 0
+-3.46509 -0.919507 0
+-2.86096 0.268045 0
+-2.2935 1.49409 0
+-1.88838 2.5227 0
+-1.75808 3.1076 0
+-1.96968 3.07836 0
+-2.51986 2.41355 0
+-3.32575 1.26799 0
+-4.23631 -0.0621323 0
+-5.06381 -1.22901 0
+-5.62933 -1.94754 0
+-5.8094 -2.08932 0
+-5.57 -1.71759 0
+-4.97671 -1.04921 0
+-4.17777 -0.360998 0
+-3.36519 0.119567 0
+-2.72596 0.295025 0
+-2.39731 0.221234 0
+-2.43726 0.069637 0
+-2.81628 0.0468623 0
+-3.43129 0.303985 0
+-4.13624 0.873946 0
+-4.77882 1.66213 0
+-5.23283 2.48672 0
+-5.41912 3.14505 0
+-5.31338 3.47754 0
+-4.94242 3.40766 0
+-4.37268 2.94961 0
+-3.69467 2.18921 0
+-3.00609 1.25109 0
+-2.3959 0.265945 0
+-1.93184 -0.653782 0
+-1.65315 -1.42724 0
+-1.56924 -2.00902 0
+-1.66367 -2.38594 0
+-1.90152 -2.56948 0
+-2.23777 -2.58675 0
+-2.62394 -2.47366 0
+-3.0113 -2.27139 0
+-3.35093 -2.02313 0
+-3.59393 -1.76962 0
+-3.69543 -1.54566 0
+-3.62324 -1.3773 0
+-3.3687 -1.27708 0
+-2.95557 -1.23698 0
+-2.44342 -1.22113 0
+-1.92449 -1.16086 0
+-1.50128 -0.953571 0
+-1.10116 -0.506332 0
+-0.896682 -0.220731 0
+-0.84202 -0.0568586 0
+-0.914979 0.0752823 0
+-1.13956 0.238515 0
+-1.54812 0.467879 0
+-2.24901 0.592153 0
+-3.30592 0.244989 0
+-4.47379 -0.356722 0
+-5.45439 -1.0173 0
+-6.00018 -1.62349 0
+-5.98485 -2.11039 0
+-5.43766 -2.41249 0
+-4.53372 -2.43539 0
+-3.54389 -2.06949 0
+-2.75939 -1.24408 0
+-2.41297 0.00362023 0
+-2.61902 1.48444 0
+-3.35042 2.87294 0
+-4.45757 3.7931 0
+-5.71894 3.94703 0
+-6.90444 3.23601 0
+-7.83252 1.82182 0
+-8.40653 0.0938138 0
+-8.62188 -1.45786 0
+-8.54511 -2.41926 0
+-8.275 -2.60779 0
+-7.90196 -2.13775 0
+-7.48084 -1.36589 0
+-7.02586 -0.739136 0
+-6.52684 -0.606545 0
+-5.97774 -1.06985 0
+-5.40479 -1.92999 0
+-4.88225 -2.7513 0
+-4.52627 -3.02271 0
+-4.4643 -2.35813 0
+-4.78661 -0.656772 0
+-5.4978 1.84265 0
+-6.48916 4.62978 0
+-7.54578 7.07634 0
+-8.39018 8.61914 0
+-8.75181 8.91455 0
+-8.44358 7.91951 0
+-7.42241 5.8804 0
+-5.81392 3.24184 0
+-3.89069 0.511397 0
+-2.00793 -1.87296 0
+-0.514621 -3.63314 0
+0.333651 -4.68103 0
+0.43409 -5.0937 0
+-0.147634 -5.04998 0
+-1.20593 -4.74851 0
+-2.45678 -4.33387 0
+-3.61401 -3.85837 0
+-4.4588 -3.2923 0
+-4.88423 -2.57255 0
+-4.9065 -1.66366 0
+-4.64426 -0.605012 0
+-4.27408 0.474907 0
+-3.97513 1.38678 0
+-3.8769 1.94381 0
+-4.02236 2.03491 0
+-4.35497 1.67474 0
+-2.34798 1.00851 0
+-1.31081 0.327198 0
+-1.31081 0.154938 0
+-1.07471 -0.152068 0
+-2.10503 -0.290696 0
+-4.12768 -0.545107 0
+-4.1734 -1.00248 0
+-4.26544 -1.60473 0
+-4.41549 -2.1838 0
+-4.617 -2.63463 0
+-4.84034 -2.91436 0
+-5.03613 -3.01617 0
+-5.14641 -2.93437 0
+-5.12101 -2.64142 0
+-4.93464 -2.0917 0
+-4.60012 -1.25402 0
+-4.17322 -0.158857 0
+-3.74615 1.06703 0
+-3.42977 2.20631 0
+-3.32702 3.00486 0
+-3.5035 3.25484 0
+-3.96349 2.87354 0
+-4.63991 1.94441 0
+-5.4029 0.700866 0
+-6.08729 -0.544625 0
+-6.53343 -1.5014 0
+-6.63048 -1.99227 0
+-6.34846 -1.99961 0
+-5.74851 -1.64916 0
+-4.96771 -1.14179 0
+-4.18303 -0.665119 0
+-3.56564 -0.322365 0
+-3.23894 -0.105462 0
+-3.25087 0.0815707 0
+-3.56674 0.362731 0
+-4.08401 0.82125 0
+-4.66366 1.4536 0
+-5.16708 2.16555 0
+-5.48701 2.80665 0
+-5.5656 3.22364 0
+-5.39815 3.31008 0
+-5.02523 3.03474 0
+-4.51773 2.44212 0
+-3.959 1.63048 0
+-3.42771 0.719795 0
+-2.98457 -0.177196 0
+-2.66536 -0.972984 0
+-2.48116 -1.61145 0
+-2.42439 -2.06578 0
+-2.47794 -2.33239 0
+-2.62348 -2.42395 0
+-2.84619 -2.36403 0
+-3.13429 -2.18556 0
+-3.47373 -1.93196 0
+-3.84073 -1.65613 0
+-4.19652 -1.41383 0
+-4.48935 -1.25284 0
+-4.66549 -1.20116 0
+-4.68611 -1.25645 0
+-4.5436 -1.3795 0
+-4.26976 -1.49497 0
+-3.92732 -1.5033 0
+-3.56968 -1.31121 0
+-3.16947 -0.906548 0
+-2.88994 -0.500253 0
+-2.80637 -0.14043 0
+-2.94325 0.212163 0
+-3.30303 0.598287 0
+-3.84235 1.0072 0
+-4.52429 1.27409 0
+-5.39216 1.11286 0
+-6.28271 0.533821 0
+-6.95946 -0.340543 0
+-7.22819 -1.35476 0
+-7.00912 -2.32945 0
+-6.36459 -3.05702 0
+-5.48166 -3.31832 0
+-4.61805 -2.9331 0
+-4.02846 -1.83367 0
+-3.89381 -0.131034 0
+-4.27476 1.86539 0
+-5.10364 3.70181 0
+-6.2142 4.90366 0
+-7.39517 5.12801 0
+-8.44802 4.28886 0
+-9.2325 2.60629 0
+-9.68975 0.551072 0
+-9.83962 -1.30799 0
+-9.75558 -2.50329 0
+-9.52832 -2.83506 0
+-9.23178 -2.43429 0
+-8.90364 -1.69404 0
+-8.54529 -1.09749 0
+-8.13903 -1.01281 0
+-7.67377 -1.53511 0
+-7.16878 -2.43499 0
+-6.68632 -3.23376 0
+-6.32698 -3.38206 0
+-6.20485 -2.48026 0
+-6.40773 -0.453889 0
+-6.9559 2.39082 0
+-7.77589 5.44977 0
+-8.70168 8.00213 0
+-9.50623 9.42369 0
+-9.9561 9.36443 0
+-9.87467 7.83807 0
+-9.19565 5.20139 0
+-7.99044 2.03663 0
+-6.4584 -1.02064 0
+-4.88049 -3.45087 0
+-3.54837 -4.96526 0
+-2.69016 -5.53924 0
+-2.41551 -5.36835 0
+-2.6956 -4.76989 0
+-3.38074 -4.06337 0
+-4.24735 -3.46725 0
+-5.06021 -3.04551 0
+-5.63271 -2.7198 0
+-5.86912 -2.33614 0
+-5.77918 -1.7536 0
+-5.46307 -0.921121 0
+-5.07274 0.0845792 0
+-4.76123 1.07526 0
+-4.63368 1.81627 0
+-4.71317 2.1144 0
+-4.93169 1.89326 0
+-2.6501 1.22899 0
+-1.44047 0.423454 0
+-1.44047 0.162952 0
+-1.15376 -0.153808 0
+-2.25943 -0.290355 0
+-4.42806 -0.536988 0
+-4.45857 -0.971966 0
+-4.53706 -1.52624 0
+-4.68662 -2.03424 0
+-4.91515 -2.4061 0
+-5.20774 -2.62177 0
+-5.52681 -2.6971 0
+-5.82007 -2.64111 0
+-6.03383 -2.42766 0
+-6.12788 -1.99764 0
+-6.08833 -1.29357 0
+-5.93519 -0.311993 0
+-5.72251 0.854343 0
+-5.52905 2.01286 0
+-5.43967 2.91548 0
+-5.5209 3.33607 0
+-5.79782 3.15046 0
+-6.24004 2.38662 0
+-6.76269 1.22352 0
+-7.2445 -0.0628213 0
+-7.5596 -1.1863 0
+-7.61443 -1.93744 0
+-7.37736 -2.23669 0
+-6.89068 -2.13583 0
+-6.26056 -1.77192 0
+-5.62778 -1.2979 0
+-5.12904 -0.821108 0
+-4.86042 -0.374084 0
+-4.85351 0.0746672 0
+-5.07047 0.579686 0
+-5.41909 1.16987 0
+-5.78263 1.81714 0
+-6.05344 2.43636 0
+-6.15932 2.91253 0
+-6.07605 3.14037 0
+-5.82543 3.05946 0
+-5.4626 2.6719 0
+-5.05781 2.03733 0
+-4.67786 1.25053 0
+-4.37126 0.413204 0
+-4.1603 -0.388155 0
+-4.04133 -1.09196 0
+-3.9928 -1.65998 0
+-3.98798 -2.07061 0
+-4.0075 -2.31287 0
+-4.04764 -2.38381 0
+-4.12145 -2.29022 0
+-4.25246 -2.05456 0
+-4.4628 -1.72161 0
+-4.75986 -1.35907 0
+-5.12639 -1.04729 0
+-5.51936 -0.859873 0
+-5.87952 -0.840998 0
+-6.149 -0.986974 0
+-6.28962 -1.23887 0
+-6.29335 -1.49124 0
+-6.17724 -1.61941 0
+-5.96305 -1.52541 0
+-5.67232 -1.19728 0
+-5.43351 -0.739061 0
+-5.35722 -0.216719 0
+-5.49512 0.350064 0
+-5.83682 0.939994 0
+-6.31005 1.48043 0
+-6.83598 1.80002 0
+-7.39866 1.67554 0
+-7.90514 1.0403 0
+-8.21957 -0.0261088 0
+-8.2367 -1.33764 0
+-7.9355 -2.63066 0
+-7.39595 -3.59657 0
+-6.77834 -3.93593 0
+-6.27502 -3.43642 0
+-6.05198 -2.05671 0
+-6.20027 0.017255 0
+-6.71329 2.37842 0
+-7.49622 4.48475 0
+-8.40105 5.80849 0
+-9.27252 5.99947 0
+-9.9885 5.00484 0
+-10.4834 3.1012 0
+-10.7516 0.819233 0
+-10.8334 -1.2262 0
+-10.7909 -2.54578 0
+-10.6824 -2.94357 0
+-10.5443 -2.57233 0
+-10.3858 -1.85259 0
+-10.1946 -1.2886 0
+-9.95239 -1.25506 0
+-9.65033 -1.83717 0
+-9.3023 -2.78301 0
+-8.94989 -3.58617 0
+-8.65824 -3.67371 0
+-8.50148 -2.63701 0
+-8.54039 -0.414982 0
+-8.79839 2.64882 0
+-9.24399 5.89537 0
+-9.78767 8.54581 0
+-10.2967 9.93276 0
+-10.6255 9.69316 0
+-10.6525 7.86508 0
+-10.3153 4.8642 0
+-9.63198 1.35332 0
+-8.70228 -1.95034 0
+-7.68547 -4.46768 0
+-6.76004 -5.89068 0
+-6.07719 -6.2221 0
+-5.72289 -5.72265 0
+-5.70028 -4.7925 0
+-5.93546 -3.82818 0
+-6.30281 -3.09991 0
+-6.66154 -2.68678 0
+-6.89422 -2.48712 0
+-6.93699 -2.29337 0
+-6.79275 -1.89784 0
+-6.52345 -1.19042 0
+-6.22507 -0.213806 0
+-5.99289 0.843081 0
+-5.88667 1.71005 0
+-5.90578 2.13352 0
+-5.98401 1.97149 0
+-3.17117 1.25627 0
+-1.66696 0.383313 0
+-1.66696 0.103628 0
+-1.273 -0.155956 0
+-2.50492 -0.29158 0
+-4.93176 -0.532526 0
+-4.95619 -0.947532 0
+-5.02734 -1.45508 0
+-5.17371 -1.88787 0
+-5.41378 -2.16603 0
+-5.74765 -2.2879 0
+-6.15394 -2.2908 0
+-6.59236 -2.2027 0
+-7.011 -2.00902 0
+-7.35684 -1.6518 0
+-7.58745 -1.06297 0
+-7.68241 -0.217032 0
+-7.65181 0.823746 0
+-7.53772 1.89877 0
+-7.40552 2.78328 0
+-7.32591 3.25646 0
+-7.35244 3.17699 0
+-7.50214 2.53632 0
+-7.74646 1.46784 0
+-8.0173 0.208019 0
+-8.22758 -0.976014 0
+-8.30023 -1.86478 0
+-8.19524 -2.34168 0
+-7.92465 -2.40642 0
+-7.54989 -2.14668 0
+-7.16212 -1.68566 0
+-6.85275 -1.13048 0
+-6.68414 -0.542691 0
+-6.67046 0.0609818 0
+-6.77477 0.684002 0
+-6.92335 1.31845 0
+-7.03154 1.92533 0
+-7.03142 2.43625 0
+-6.89159 2.7727 0
+-6.62337 2.87214 0
+-6.27366 2.70976 0
+-5.90861 2.30685 0
+-5.59381 1.72253 0
+-5.37695 1.03368 0
+-5.27698 0.313228 0
+-5.28199 -0.383142 0
+-5.35601 -1.01794 0
+-5.45236 -1.56362 0
+-5.52961 -1.99336 0
+-5.56501 -2.27747 0
+-5.56159 -2.38723 0
+-5.54711 -2.3047 0
+-5.56503 -2.03663 0
+-5.66028 -1.62637 0
+-5.86379 -1.15555 0
+-6.18074 -0.730343 0
+-6.58646 -0.454151 0
+-7.03218 -0.395279 0
+-7.45839 -0.560758 0
+-7.81051 -0.886751 0
+-8.05009 -1.25166 0
+-8.15785 -1.51165 0
+-8.13272 -1.55054 0
+-8.00388 -1.32612 0
+-7.86388 -0.879064 0
+-7.8086 -0.271994 0
+-7.88872 0.430188 0
+-8.09259 1.14386 0
+-8.35517 1.74302 0
+-8.60518 2.05003 0
+-8.81318 1.88354 0
+-8.94413 1.17124 0
+-8.95683 -0.0134053 0
+-8.83237 -1.4621 0
+-8.59747 -2.86555 0
+-8.32638 -3.86766 0
+-8.11987 -4.14243 0
+-8.07088 -3.48542 0
+-8.2311 -1.89649 0
+-8.59269 0.378843 0
+-9.09229 2.87801 0
+-9.63474 5.02719 0
+-10.1259 6.29964 0
+-10.5018 6.37538 0
+-10.7436 5.24662 0
+-10.8736 3.23121 0
+-10.9374 0.883082 0
+-10.9814 -1.18221 0
+-11.0347 -2.49248 0
+-11.1024 -2.87589 0
+-11.1698 -2.5049 0
+-11.2142 -1.80825 0
+-11.2166 -1.28617 0
+-11.17 -1.30166 0
+-11.0801 -1.92711 0
+-10.9609 -2.90216 0
+-10.8288 -3.71829 0
+-10.6973 -3.8052 0
+-10.5761 -2.75826 0
+-10.4721 -0.518965 0
+-10.3907 2.56748 0
+-10.3339 5.83858 0
+-10.2968 8.50862 0
+-10.2652 9.90125 0
+-10.2173 9.64517 0
+-10.1267 7.77456 0
+-9.97081 4.70828 0
+-9.73802 1.12052 0
+-9.43494 -2.25341 0
+-9.08805 -4.81458 0
+-8.73818 -6.24055 0
+-8.42923 -6.53106 0
+-8.19542 -5.95646 0
+-8.05213 -4.93579 0
+-7.99261 -3.8877 0
+-7.99066 -3.10186 0
+-8.00829 -2.66915 0
+-8.00719 -2.48822 0
+-7.96116 -2.3394 0
+-7.86431 -1.99469 0
+-7.73188 -1.32285 0
+-7.59335 -0.352333 0
+-7.47985 0.729574 0
+-7.40856 1.63876 0
+-7.36905 2.09401 0
+-7.31766 1.9201 0
+-3.80951 1.12616 0
+-1.95205 0.242747 0
+-1.95205 -0.00121337 0
+-1.38518 -0.153053 0
+-2.74714 -0.284944 0
+-5.45069 -0.516332 0
+-5.49224 -0.905976 0
+-5.58383 -1.36349 0
+-5.75027 -1.72143 0
+-6.00985 -1.90646 0
+-6.3689 -1.92884 0
+-6.81789 -1.84181 0
+-7.32919 -1.69139 0
+-7.85767 -1.48054 0
+-8.34511 -1.16436 0
+-8.72959 -0.678483 0
+-8.95946 0.0128362 0
+-9.00895 0.873243 0
+-8.88946 1.77928 0
+-8.65054 2.54437 0
+-8.3685 2.97442 0
+-8.12513 2.93362 0
+-7.98344 2.39463 0
+-7.96906 1.45346 0
+-8.06428 0.303238 0
+-8.21736 -0.82293 0
+-8.36351 -1.71863 0
+-8.44938 -2.25582 0
+-8.45151 -2.40429 0
+-8.38177 -2.21642 0
+-8.27814 -1.78929 0
+-8.18518 -1.22343 0
+-8.13265 -0.59522 0
+-8.12094 0.049273 0
+-8.11933 0.682394 0
+-8.0777 1.27682 0
+-7.94665 1.79428 0
+-7.69767 2.18727 0
+-7.33567 2.41071 0
+-6.89988 2.43635 0
+-6.45351 2.26339 0
+-6.06635 1.91969 0
+-5.79624 1.45243 0
+-5.67481 0.912241 0
+-5.70115 0.339568 0
+-5.84442 -0.239871 0
+-6.05387 -0.808486 0
+-6.27326 -1.34424 0
+-6.45559 -1.81102 0
+-6.57444 -2.15862 0
+-6.62931 -2.33236 0
+-6.644 -2.29001 0
+-6.65885 -2.02178 0
+-6.71904 -1.56618 0
+-6.86218 -1.01241 0
+-7.1082 -0.484321 0
+-7.45408 -0.108271 0
+-7.87465 0.0252901 0
+-8.32869 -0.106716 0
+-8.76776 -0.447685 0
+-9.14473 -0.874688 0
+-9.42103 -1.23535 0
+-9.57503 -1.39653 0
+-9.61557 -1.28558 0
+-9.59136 -0.903272 0
+-9.56037 -0.302982 0
+-9.55531 0.425121 0
+-9.56838 1.15693 0
+-9.56112 1.73576 0
+-9.4982 1.98711 0
+-9.37857 1.76391 0
+-9.22313 1.0158 0
+-9.06361 -0.172932 0
+-8.94054 -1.58517 0
+-8.90055 -2.90554 0
+-8.98568 -3.78253 0
+-9.21635 -3.91176 0
+-9.57566 -3.12611 0
+-10.0047 -1.46745 0
+-10.4145 0.788644 0
+-10.7125 3.17603 0
+-10.834 5.14864 0
+-10.7654 6.2311 0
+-10.5512 6.16119 0
+-10.2796 4.97501 0
+-10.0524 3.00401 0
+-9.94962 0.780298 0
+-10.0035 -1.12836 0
+-10.1926 -2.3034 0
+-10.4575 -2.61098 0
+-10.7296 -2.23281 0
+-10.9593 -1.57846 0
+-11.1323 -1.11322 0
+-11.2664 -1.16752 0
+-11.3943 -1.79929 0
+-11.5378 -2.7586 0
+-11.6885 -3.56756 0
+-11.801 -3.6927 0
+-11.8056 -2.75366 0
+-11.6354 -0.689181 0
+-11.2555 2.18758 0
+-10.6819 5.26492 0
+-9.98256 7.80931 0
+-9.26219 9.18088 0
+-8.63455 9.01753 0
+-8.19253 7.33254 0
+-7.98444 4.50019 0
+-8.00379 1.13987 0
+-8.1953 -2.0619 0
+-8.47448 -4.5354 0
+-8.75315 -5.96188 0
+-8.9625 -6.32171 0
+-9.0675 -5.85146 0
+-9.07024 -4.93304 0
+-9.00245 -3.95549 0
+-8.91015 -3.19416 0
+-8.83605 -2.74324 0
+-8.80589 -2.51838 0
+-8.8227 -2.32259 0
+-8.8696 -1.94779 0
+-8.91868 -1.27377 0
+-8.94251 -0.328499 0
+-8.92336 0.71042 0
+-8.85638 1.57177 0
+-8.74531 1.98295 0
+-8.59222 1.767 0
+-4.38911 0.920045 0
+-2.21369 0.0776363 0
+-2.21369 -0.1049 0
+-1.4356 -0.140419 0
+-2.87235 -0.261735 0
+-5.74929 -0.473136 0
+-5.83255 -0.822716 0
+-5.97681 -1.21924 0
+-6.19459 -1.50365 0
+-6.49169 -1.60936 0
+-6.86838 -1.55215 0
+-7.31792 -1.39227 0
+-7.82213 -1.18718 0
+-8.34629 -0.956385 0
+-8.83731 -0.673339 0
+-9.22907 -0.286723 0
+-9.45615 0.239916 0
+-9.47316 0.890257 0
+-9.27262 1.57873 0
+-8.8935 2.16524 0
+-8.41573 2.49665 0
+-7.94112 2.45901 0
+-7.56654 2.02005 0
+-7.35852 1.24544 0
+-7.33793 0.28265 0
+-7.47971 -0.681151 0
+-7.72677 -1.47157 0
+-8.01195 -1.97064 0
+-8.27916 -2.13708 0
+-8.49579 -1.99979 0
+-8.65284 -1.63224 0
+-8.75486 -1.12141 0
+-8.8059 -0.54418 0
+-8.79891 0.0422815 0
+-8.71391 0.597392 0
+-8.52568 1.0886 0
+-8.21705 1.48565 0
+-7.79127 1.76149 0
+-7.27813 1.89756 0
+-6.73126 1.88949 0
+-6.21737 1.7495 0
+-5.80096 1.50328 0
+-5.52966 1.18113 0
+-5.42466 0.80724 0
+-5.47852 0.393431 0
+-5.66006 -0.0583361 0
+-5.92382 -0.544724 0
+-6.2211 -1.04696 0
+-6.50967 -1.52245 0
+-6.76066 -1.90763 0
+-6.9617 -2.13132 0
+-7.11633 -2.13537 0
+-7.24055 -1.89756 0
+-7.35793 -1.44881 0
+-7.49442 -0.875915 0
+-7.67342 -0.30532 0
+-7.91124 0.129543 0
+-8.21343 0.327481 0
+-8.57235 0.252204 0
+-8.96637 -0.0536687 0
+-9.36156 -0.479491 0
+-9.71711 -0.879803 0
+-9.99533 -1.11832 0
+-10.1746 -1.10631 0
+-10.2562 -0.821642 0
+-10.2531 -0.306063 0
+-10.1736 0.345538 0
+-10.0142 0.997603 0
+-9.76905 1.49059 0
+-9.44952 1.66758 0
+-9.10042 1.41482 0
+-8.79246 0.707841 0
+-8.60414 -0.361251 0
+-8.60242 -1.58689 0
+-8.82433 -2.68364 0
+-9.26116 -3.34569 0
+-9.84967 -3.32325 0
+-10.4763 -2.49944 0
+-10.9984 -0.945357 0
+-11.2795 1.06974 0
+-11.2301 3.12655 0
+-10.8386 4.75719 0
+-10.1816 5.57405 0
+-9.40566 5.38529 0
+-8.68794 4.25729 0
+-8.18472 2.50079 0
+-7.98613 0.581705 0
+-8.09306 -1.02143 0
+-8.42638 -1.97008 0
+-8.86447 -2.17289 0
+-9.29321 -1.80407 0
+-9.64748 -1.22419 0
+-9.92779 -0.8329 0
+-10.1865 -0.908851 0
+-10.4903 -1.4954 0
+-10.8761 -2.37281 0
+-11.3164 -3.12734 0
+-11.7114 -3.2977 0
+-11.9136 -2.5514 0
+-11.7773 -0.825531 0
+-11.2135 1.62385 0
+-10.2306 4.28201 0
+-8.94372 6.52239 0
+-7.55171 7.78888 0
+-6.28858 7.7544 0
+-5.36413 6.40808 0
+-4.91223 4.04829 0
+-4.96121 1.18885 0
+-5.43416 -1.58896 0
+-6.17785 -3.79171 0
+-7.0096 -5.13013 0
+-7.76664 -5.56467 0
+-8.34373 -5.27437 0
+-8.70976 -4.56702 0
+-8.90093 -3.76432 0
+-8.9952 -3.0999 0
+-9.07758 -2.66086 0
+-9.20844 -2.38752 0
+-9.40447 -2.12656 0
+-9.63742 -1.71484 0
+-9.84938 -1.06181 0
+-9.97812 -0.199758 0
+-9.98286 0.71516 0
+-9.86142 1.45033 0
+-9.65237 1.7739 0
+-9.41943 1.53406 0
+-4.7131 0.718563 0
+-2.34953 -0.0328481 0
+-2.34953 -0.153252 0
+-1.38108 -0.11656 0
+-2.78706 -0.218499 0
+-5.62663 -0.395934 0
+-5.7638 -0.685548 0
+-5.97772 -1.00532 0
+-6.26391 -1.21746 0
+-6.60773 -1.26554 0
+-6.99406 -1.16582 0
+-7.41081 -0.975523 0
+-7.84487 -0.753106 0
+-8.27369 -0.527568 0
+-8.65808 -0.288949 0
+-8.94255 -0.00224688 0
+-9.066 0.363363 0
+-8.98063 0.804882 0
+-8.67223 1.27034 0
+-8.17314 1.66616 0
+-7.56145 1.88496 0
+-6.94529 1.84285 0
+-6.43666 1.51143 0
+-6.12344 0.932223 0
+-6.0488 0.208007 0
+-6.20439 -0.525557 0
+-6.53861 -1.13735 0
+-6.97558 -1.53367 0
+-7.43706 -1.67559 0
+-7.85931 -1.57754 0
+-8.20014 -1.2914 0
+-8.43649 -0.88506 0
+-8.5565 -0.424175 0
+-8.55198 0.0377676 0
+-8.41572 0.46113 0
+-8.14456 0.817437 0
+-7.74588 1.08697 0
+-7.24308 1.25869 0
+-6.67687 1.33135 0
+-6.10102 1.31363 0
+-5.57348 1.22195 0
+-5.14562 1.07543 0
+-4.85326 0.888766 0
+-4.71222 0.6662 0
+-4.7193 0.400513 0
+-4.8571 0.0794648 0
+-5.10004 -0.301789 0
+-5.41917 -0.727823 0
+-5.78503 -1.15659 0
+-6.16898 -1.52368 0
+-6.54405 -1.75625 0
+-6.88609 -1.79333 0
+-7.1761 -1.60756 0
+-7.40391 -1.22099 0
+-7.57207 -0.707754 0
+-7.69765 -0.179736 0
+-7.8101 0.241989 0
+-7.9444 0.46178 0
+-8.13088 0.438687 0
+-8.38459 0.20004 0
+-8.69809 -0.165989 0
+-9.04113 -0.536763 0
+-9.3682 -0.791247 0
+-9.63123 -0.843281 0
+-9.79077 -0.662099 0
+-9.81972 -0.277107 0
+-9.70325 0.229063 0
+-9.4411 0.735451 0
+-9.05495 1.10444 0
+-8.59748 1.21011 0
+-8.1541 0.971436 0
+-7.82936 0.383099 0
+-7.72236 -0.468251 0
+-7.89909 -1.41016 0
+-8.36861 -2.21412 0
+-9.06915 -2.64515 0
+-9.86996 -2.52243 0
+-10.5924 -1.77698 0
+-11.0492 -0.488612 0
+-11.093 1.11363 0
+-10.6619 2.69545 0
+-9.80389 3.89915 0
+-8.67181 4.44196 0
+-7.48667 4.20015 0
+-6.47921 3.24983 0
+-5.82748 1.84906 0
+-5.60956 0.363784 0
+-5.78814 -0.842838 0
+-6.23392 -1.5243 0
+-6.77957 -1.62724 0
+-7.2834 -1.30025 0
+-7.67773 -0.829851 0
+-7.9837 -0.526934 0
+-8.2876 -0.604945 0
+-8.68914 -1.09386 0
+-9.24186 -1.82009 0
+-9.90908 -2.46012 0
+-10.5539 -2.65287 0
+-10.9709 -2.13444 0
+-10.9502 -0.84622 0
+-10.3515 1.02514 0
+-9.16018 3.09072 0
+-7.50691 4.86912 0
+-5.64316 5.92513 0
+-3.88136 5.9926 0
+-2.51768 5.0444 0
+-1.76071 3.29133 0
+-1.68621 1.11434 0
+-2.22941 -1.04575 0
+-3.2151 -2.80603 0
+-4.41376 -3.93147 0
+-5.60528 -4.37314 0
+-6.6311 -4.24855 0
+-7.42117 -3.77694 0
+-7.99125 -3.19424 0
+-8.41474 -2.67641 0
+-8.78114 -2.29446 0
+-9.15589 -2.01277 0
+-9.55496 -1.72748 0
+-9.94174 -1.32807 0
+-10.2456 -0.757968 0
+-10.3941 -0.0511875 0
+-10.3474 0.668432 0
+-10.1215 1.22443 0
+-9.79434 1.44672 0
+-9.48879 1.22851 0
+-4.63649 0.559365 0
+-2.2785 -0.0474888 0
+-2.2785 -0.110652 0
+-1.20607 -0.0843176 0
+-2.45292 -0.159564 0
+-4.99141 -0.291007 0
+-5.17325 -0.50371 0
+-5.44483 -0.733732 0
+-5.78571 -0.876578 0
+-6.16105 -0.890194 0
+-6.5388 -0.788067 0
+-6.89839 -0.615929 0
+-7.22886 -0.422637 0
+-7.51931 -0.237116 0
+-7.74846 -0.0597938 0
+-7.88036 0.129648 0
+-7.87036 0.353368 0
+-7.68054 0.615063 0
+-7.29845 0.888239 0
+-6.75109 1.1188 0
+-6.10742 1.24129 0
+-5.46678 1.20221 0
+-4.93649 0.981138 0
+-4.60565 0.601381 0
+-4.52377 0.126126 0
+-4.69093 -0.358395 0
+-5.06186 -0.766423 0
+-5.56128 -1.03425 0
+-6.10412 -1.13275 0
+-6.61353 -1.06813 0
+-7.03165 -0.87328 0
+-7.32221 -0.594508 0
+-7.46711 -0.279272 0
+-7.46123 0.0318866 0
+-7.30868 0.308584 0
+-7.022 0.530759 0
+-6.62301 0.687981 0
+-6.1432 0.778873 0
+-5.62195 0.810109 0
+-5.10248 0.794166 0
+-4.62614 0.745615 0
+-4.22698 0.676273 0
+-3.92856 0.590339 0
+-3.74401 0.481653 0
+-3.67888 0.335382 0
+-3.73444 0.135028 0
+-3.90924 -0.126992 0
+-4.19756 -0.439503 0
+-4.58577 -0.768384 0
+-5.04878 -1.06067 0
+-5.54889 -1.25615 0
+-6.03849 -1.30373 0
+-6.46747 -1.17858 0
+-6.79418 -0.89428 0
+-6.99694 -0.504993 0
+-7.08188 -0.0947923 0
+-7.08353 0.243634 0
+-7.05665 0.434902 0
+-7.06111 0.443147 0
+-7.14405 0.282985 0
+-7.32529 0.0152456 0
+-7.59084 -0.271212 0
+-7.89675 -0.485337 0
+-8.18113 -0.558895 0
+-8.37956 -0.463666 0
+-8.43897 -0.2177 0
+-8.32876 0.118853 0
+-8.04966 0.456348 0
+-7.63985 0.694634 0
+-7.17586 0.746116 0
+-6.76394 0.559516 0
+-6.51988 0.13904 0
+-6.54067 -0.447456 0
+-6.87533 -1.0755 0
+-7.50268 -1.58677 0
+-8.32326 -1.82457 0
+-9.17041 -1.67528 0
+-9.84172 -1.10567 0
+-10.1459 -0.184463 0
+-9.95407 0.921831 0
+-9.24088 1.98226 0
+-8.10014 2.75841 0
+-6.72804 3.06987 0
+-5.37578 2.84788 0
+-4.28463 2.15868 0
+-3.62277 1.1872 0
+-3.44328 0.184297 0
+-3.67765 -0.608467 0
+-4.16847 -1.03348 0
+-4.73045 -1.06526 0
+-5.2175 -0.813205 0
+-5.57063 -0.476713 0
+-5.82931 -0.268256 0
+-6.10228 -0.331977 0
+-6.50957 -0.68657 0
+-7.11733 -1.21233 0
+-7.88987 -1.68758 0
+-8.6785 -1.86424 0
+-9.25468 -1.55825 0
+-9.37824 -0.72266 0
+-8.87728 0.524177 0
+-7.71192 1.92536 0
+-6.00021 3.1574 0
+-3.99771 3.92264 0
+-2.03754 4.03242 0
+-0.449264 3.45613 0
+0.518995 2.32307 0
+0.753542 0.879795 0
+0.289636 -0.581846 0
+-0.713676 -1.80271 0
+-2.02789 -2.61725 0
+-3.4201 -2.98093 0
+-4.70892 -2.95974 0
+-5.79641 -2.68945 0
+-6.66992 -2.32073 0
+-7.37751 -1.96882 0
+-7.98841 -1.68356 0
+-8.55366 -1.44752 0
+-9.0809 -1.20025 0
+-9.53108 -0.877884 0
+-9.83708 -0.451967 0
+-9.93591 0.0476415 0
+-9.8022 0.534722 0
+-9.47112 0.893344 0
+-9.04382 1.01943 0
+-8.67496 0.859643 0
+-4.1301 0.426115 0
+-1.98602 0.0132084 0
+-1.98602 0.0139624 0
+-0.930196 -0.0501876 0
+-1.90471 -0.0962785 0
+-3.90356 -0.177369 0
+-4.09938 -0.307892 0
+-4.38648 -0.446634 0
+-4.73499 -0.528067 0
+-5.09864 -0.526534 0
+-5.43551 -0.451202 0
+-5.71972 -0.331718 0
+-5.94177 -0.200581 0
+-6.09993 -0.0789557 0
+-6.18896 0.0292303 0
+-6.19304 0.133738 0
+-6.08745 0.247771 0
+-5.84876 0.376374 0
+-5.46958 0.509057 0
+-4.97083 0.620062 0
+-4.40577 0.676229 0
+-3.85277 0.649209 0
+-3.39868 0.527047 0
+-3.11789 0.320598 0
+-3.05407 0.0623035 0
+-3.21029 -0.202178 0
+-3.55039 -0.426319 0
+-4.01013 -0.574512 0
+-4.51348 -0.6294 0
+-4.98851 -0.593103 0
+-5.37859 -0.483197 0
+-5.64722 -0.325881 0
+-5.77742 -0.14907 0
+-5.76825 0.0227132 0
+-5.63074 0.171082 0
+-5.38472 0.284736 0
+-5.05619 0.359455 0
+-4.67482 0.397499 0
+-4.27094 0.40623 0
+-3.87253 0.395753 0
+-3.5027 0.375791 0
+-3.17873 0.352303 0
+-2.91313 0.324736 0
+-2.71661 0.285136 0
+-2.60147 0.220243 0
+-2.58316 0.116711 0
+-2.67825 -0.0318921 0
+-2.89877 -0.21899 0
+-3.24448 -0.422676 0
+-3.69654 -0.608602 0
+-4.21513 -0.737555 0
+-4.74291 -0.775955 0
+-5.21485 -0.706633 0
+-5.57266 -0.536469 0
+-5.77994 -0.297721 0
+-5.8331 -0.0416256 0
+-5.76399 0.174519 0
+-5.6322 0.303113 0
+-5.50898 0.319928 0
+-5.45715 0.231158 0
+-5.51334 0.0714323 0
+-5.67799 -0.106558 0
+-5.91599 -0.247336 0
+-6.16693 -0.307961 0
+-6.36139 -0.269197 0
+-6.43887 -0.140222 0
+-6.36357 0.0435488 0
+-6.13581 0.228586 0
+-5.79687 0.355697 0
+-5.42537 0.374615 0
+-5.12387 0.258024 0
+-4.99664 0.0118072 0
+-5.12249 -0.321609 0
+-5.5293 -0.66868 0
+-6.17717 -0.938898 0
+-6.95613 -1.04561 0
+-7.702 -0.929407 0
+-8.22951 -0.578161 0
+-8.37655 -0.0374196 0
+-8.04868 0.593957 0
+-7.25062 1.1842 0
+-6.09351 1.6013 0
+-4.77286 1.74922 0
+-3.52152 1.59654 0
+-2.55033 1.18749 0
+-1.99409 0.63096 0
+-1.87933 0.0695429 0
+-2.12494 -0.362864 0
+-2.57638 -0.582034 0
+-3.06279 -0.57885 0
+-3.4566 -0.419397 0
+-3.71441 -0.218905 0
+-3.88427 -0.0983933 0
+-4.07701 -0.13924 0
+-4.41211 -0.351465 0
+-4.95777 -0.666675 0
+-5.68677 -0.958579 0
+-6.4657 -1.08531 0
+-7.08386 -0.940091 0
+-7.31418 -0.492335 0
+-6.98575 0.195748 0
+-6.0435 0.983111 0
+-4.57525 1.68916 0
+-2.79765 2.14503 0
+-1.00562 2.2404 0
+0.498705 1.95181 0
+1.47665 1.34513 0
+1.80337 0.553074 0
+1.48534 -0.263814 0
+0.642848 -0.960222 0
+-0.534191 -1.44021 0
+-1.84172 -1.6734 0
+-3.11109 -1.69037 0
+-4.23931 -1.56124 0
+-5.1939 -1.36614 0
+-5.99495 -1.16776 0
+-6.68371 -0.994804 0
+-7.29065 -0.840579 0
+-7.81492 -0.675977 0
+-8.2221 -0.470697 0
+-8.46003 -0.214044 0
+-8.48544 0.0730529 0
+-8.29066 0.339939 0
+-7.91976 0.522444 0
+-7.46959 0.569267 0
+-7.08115 0.471197 0
+-3.30048 0.281438 0
+-1.54628 0.0801977 0
+-1.54628 0.155341 0
+-0.604592 -0.0218876 0
+-1.24493 -0.0428967 0
+-2.56754 -0.0801554 0
+-2.7355 -0.139934 0
+-2.9797 -0.202429 0
+-3.27055 -0.237224 0
+-3.56408 -0.233003 0
+-3.82079 -0.194485 0
+-4.01674 -0.135772 0
+-4.14486 -0.0724596 0
+-4.20856 -0.0152494 0
+-4.21225 0.0329122 0
+-4.15412 0.0756138 0
+-4.02513 0.118786 0
+-3.81449 0.165732 0
+-3.51916 0.213725 0
+-3.15278 0.253682 0
+-2.74956 0.273011 0
+-2.36077 0.260417 0
+-2.0444 0.210674 0
+-1.85127 0.127473 0
+-1.81222 0.0232512 0
+-1.93047 -0.0839255 0
+-2.18156 -0.175229 0
+-2.52019 -0.235887 0
+-2.89123 -0.258351 0
+-3.24127 -0.24307 0
+-3.52736 -0.197106 0
+-3.72177 -0.131464 0
+-3.81264 -0.0582084 0
+-3.80179 0.0118653 0
+-3.70139 0.0706884 0
+-3.53025 0.113597 0
+-3.31025 0.139453 0
+-3.06305 0.150303 0
+-2.80735 0.150521 0
+-2.55703 0.145439 0
+-2.32092 0.139679 0
+-2.10412 0.135499 0
+-1.91101 0.131635 0
+-1.74903 0.123153 0
+-1.63151 0.102723 0
+-1.57805 0.0632527 0
+-1.61115 0.00120459 0
+-1.7495 -0.0806428 0
+-1.99996 -0.172212 0
+-2.35103 -0.257535 0
+-2.77028 -0.318296 0
+-3.20755 -0.338689 0
+-3.60383 -0.31035 0
+-3.90448 -0.235826 0
+-4.07299 -0.129207 0
+-4.10132 -0.013294 0
+-4.01292 0.08612 0
+-3.85708 0.147274 0
+-3.69573 0.158578 0
+-3.58646 0.121885 0
+-3.56685 0.0518182 0
+-3.64477 -0.0286332 0
+-3.79732 -0.0947816 0
+-3.97818 -0.127101 0
+-4.13098 -0.116405 0
+-4.20502 -0.0661752 0
+-4.16978 0.00830613 0
+-4.02487 0.0836794 0
+-3.80344 0.134263 0
+-3.56749 0.13867 0
+-3.39539 0.0859201 0
+-3.36318 -0.0203989 0
+-3.52367 -0.161117 0
+-3.8881 -0.304258 0
+-4.41555 -0.411447 0
+-5.01423 -0.446928 0
+-5.55628 -0.387357 0
+-5.90456 -0.229886 0
+-5.94607 0.00409826 0
+-5.62359 0.271471 0
+-4.95584 0.516451 0
+-4.03902 0.68448 0
+-3.02701 0.737205 0
+-2.09439 0.66392 0
+-1.39244 0.485544 0
+-1.01085 0.249373 0
+-0.957014 0.0157023 0
+-1.15988 -0.159996 0
+-1.49798 -0.243931 0
+-1.84271 -0.234127 0
+-2.10213 -0.159974 0
+-2.25002 -0.0710127 0
+-2.32971 -0.0187007 0
+-2.43152 -0.0374379 0
+-2.65161 -0.131367 0
+-3.04682 -0.271465 0
+-3.60127 -0.404136 0
+-4.21767 -0.468909 0
+-4.73813 -0.419637 0
+-4.98865 -0.241813 0
+-4.83312 0.0402179 0
+-4.21871 0.368699 0
+-3.19807 0.668523 0
+-1.92152 0.868479 0
+-0.601995 0.92087 0
+0.53616 0.813653 0
+1.30934 0.571945 0
+1.61325 0.249163 0
+1.43828 -0.0888418 0
+0.859567 -0.381507 0
+0.00719349 -0.587841 0
+-0.972771 -0.693439 0
+-1.95415 -0.708992 0
+-2.85356 -0.661819 0
+-3.63578 -0.583916 0
+-4.30277 -0.500777 0
+-4.87303 -0.424547 0
+-5.36021 -0.353396 0
+-5.75946 -0.276722 0
+-6.0464 -0.18376 0
+-6.18843 -0.0720191 0
+-6.16322 0.0478477 0
+-5.97618 0.152898 0
+-5.66861 0.21487 0
+-5.31227 0.212926 0
+-4.99639 0.155319 0
+-2.33723 0.124823 0
+-1.08887 0.088456 0
+-1.08887 0.21364 0
+-0.298362 -0.00501635 0
+-0.616858 -0.010341 0
+-1.27919 -0.019726 0
+-1.38438 -0.0347444 0
+-1.53667 -0.0501381 0
+-1.71568 -0.0582158 0
+-1.89229 -0.0563915 0
+-2.04074 -0.0460312 0
+-2.14574 -0.0307698 0
+-2.2036 -0.0146055 0
+-2.2185 -0.000350504 0
+-2.19668 0.0110923 0
+-2.14156 0.0204927 0
+-2.05211 0.0293376 0
+-1.92503 0.0386577 0
+-1.75948 0.0481771 0
+-1.56195 0.0561487 0
+-1.34886 0.0599237 0
+-1.14545 0.0569991 0
+-0.980876 0.0461044 0
+-0.881296 0.0278929 0
+-0.863017 0.00497229 0
+-0.928209 -0.0187335 0
+-1.0644 -0.0390421 0
+-1.24769 -0.0525974 0
+-1.44842 -0.0576167 0
+-1.63737 -0.0541183 0
+-1.79082 -0.0436592 0
+-1.89352 -0.0287608 0
+-1.93948 -0.0122493 0
+-1.93093 0.0033129 0
+-1.87625 0.0160157 0
+-1.78747 0.0248094 0
+-1.67757 0.0295572 0
+-1.55821 0.0309423 0
+-1.43791 0.0302194 0
+-1.3213 0.0288313 0
+-1.20958 0.0279542 0
+-1.10215 0.0280735 0
+-0.999228 0.0287122 0
+-0.904511 0.0284361 0
+-0.827006 0.0252182 0
+-0.780881 0.0171281 0
+-0.782843 0.00316635 0
+-0.847431 -0.016055 0
+-0.981564 -0.0380787 0
+-1.18014 -0.0589589 0
+-1.42429 -0.0741431 0
+-1.68331 -0.0796737 0
+-1.92026 -0.0733992 0
+-2.10026 -0.0558239 0
+-2.1992 -0.0302676 0
+-2.2103 -0.00219409 0
+-2.14634 0.0221594 0
+-2.03653 0.0374683 0
+-1.91876 0.0408066 0
+-1.82934 0.0324586 0
+-1.79331 0.0157938 0
+-1.81819 -0.00375226 0
+-1.89272 -0.0202571 0
+-1.99085 -0.0289673 0
+-2.07968 -0.0275735 0
+-2.12905 -0.0168048 0
+-2.12051 -0.000235534 0
+-2.05345 0.0166229 0
+-1.94692 0.0277301 0
+-1.83637 0.0281192 0
+-1.76579 0.0153399 0
+-1.77659 -0.00960129 0
+-1.89563 -0.0420722 0
+-2.12535 -0.0745398 0
+-2.43867 -0.0981231 0
+-2.78089 -0.104716 0
+-3.07901 -0.0892309 0
+-3.2575 -0.0513976 0
+-3.25689 0.00348544 0
+-3.05066 0.065239 0
+-2.65518 0.120977 0
+-2.12903 0.158325 0
+-1.56064 0.168817 0
+-1.04715 0.150433 0
+-0.669997 0.10839 0
+-0.474462 0.0538381 0
+-0.459475 0.000714637 0
+-0.581113 -0.0383581 0
+-0.769148 -0.0558958 0
+-0.951484 -0.0517911 0
+-1.07833 -0.0331249 0
+-1.13781 -0.0115371 0
+-1.15749 0.000978765 0
+-1.19135 -0.00357209 0
+-1.29656 -0.0261618 0
+-1.50795 -0.0600704 0
+-1.81924 -0.0928533 0
+-2.17775 -0.1104 0
+-2.49558 -0.101806 0
+-2.67402 -0.0633718 0
+-2.63349 -0.000314181 0
+-2.33919 0.0744048 0
+-1.81436 0.143691 0
+-1.13703 0.191148 0
+-0.421733 0.205575 0
+0.208115 0.183805 0
+0.64893 0.131131 0
+0.838717 0.0593751 0
+0.76653 -0.0166543 0
+0.468199 -0.0831758 0
+0.0110597 -0.130702 0
+-0.526691 -0.155689 0
+-1.07542 -0.160262 0
+-1.58688 -0.150359 0
+-2.03774 -0.133056 0
+-2.42446 -0.114054 0
+-2.75288 -0.0961338 0
+-3.02727 -0.0790021 0
+-3.24353 -0.0604634 0
+-3.38893 -0.0383608 0
+-3.44845 -0.0124959 0
+-3.41483 0.0142242 0
+-3.29778 0.0358471 0
+-3.12755 0.0446421 0
+-2.94823 0.0336106 0
+-2.79749 0.00457711 0
+-1.39754 0.0165621 0
+-0.697799 0.0384871 0
+-0.697799 0.129156 0
+-0.079896 -0.00501635 0
+-0.165449 -0.010341 0
+-0.344636 -0.019726 0
+-0.379381 -0.0347444 0
+-0.429519 -0.0501381 0
+-0.487735 -0.0582158 0
+-0.544126 -0.0563915 0
+-0.590157 -0.0460312 0
+-0.620927 -0.0307698 0
+-0.635532 -0.0146055 0
+-0.635882 -0.000350504 0
+-0.62479 0.0110923 0
+-0.604297 0.0204927 0
+-0.57496 0.0293376 0
+-0.536302 0.0386577 0
+-0.488125 0.0481771 0
+-0.431976 0.0561487 0
+-0.372052 0.0599237 0
+-0.315053 0.0569991 0
+-0.268949 0.0461044 0
+-0.241056 0.0278929 0
+-0.236083 0.00497229 0
+-0.254817 -0.0187335 0
+-0.293859 -0.0390421 0
+-0.346456 -0.0525974 0
+-0.404073 -0.0576167 0
+-0.458191 -0.0541183 0
+-0.50185 -0.0436592 0
+-0.530611 -0.0287608 0
+-0.542861 -0.0122493 0
+-0.539548 0.0033129 0
+-0.523532 0.0160157 0
+-0.498722 0.0248094 0
+-0.469165 0.0295572 0
+-0.438223 0.0309423 0
+-0.408003 0.0302194 0
+-0.379172 0.0288313 0
+-0.351218 0.0279542 0
+-0.323144 0.0280735 0
+-0.294432 0.0287122 0
+-0.265996 0.0284361 0
+-0.240778 0.0252182 0
+-0.22365 0.0171281 0
+-0.220483 0.00316635 0
+-0.236538 -0.016055 0
+-0.274617 -0.0380787 0
+-0.333576 -0.0589589 0
+-0.407719 -0.0741431 0
+-0.487392 -0.0796737 0
+-0.560792 -0.0733992 0
+-0.616615 -0.0558239 0
+-0.646883 -0.0302676 0
+-0.649077 -0.00219409 0
+-0.626918 0.0221594 0
+-0.589449 0.0374683 0
+-0.548643 0.0408066 0
+-0.516184 0.0324586 0
+-0.50039 0.0157938 0
+-0.504143 -0.00375226 0
+-0.5244 -0.0202571 0
+-0.553367 -0.0289673 0
+-0.58094 -0.0275735 0
+-0.597745 -0.0168048 0
+-0.597981 -0.000235534 0
+-0.581358 0.0166229 0
+-0.553628 0.0277301 0
+-0.525508 0.0281192 0
+-0.510169 0.0153399 0
+-0.51977 -0.00960129 0
+-0.561842 -0.0420722 0
+-0.636382 -0.0745398 0
+-0.734505 -0.0981231 0
+-0.83922 -0.104716 0
+-0.928451 -0.0892309 0
+-0.979849 -0.0513976 0
+-0.976363 0.00348544 0
+-0.911124 0.065239 0
+-0.790147 0.120977 0
+-0.631822 0.158325 0
+-0.463005 0.168817 0
+-0.312572 0.150433 0
+-0.204181 0.10839 0
+-0.150343 0.0538381 0
+-0.149629 0.000714637 0
+-0.187987 -0.0383581 0
+-0.243883 -0.0558958 0
+-0.295674 -0.0517911 0
+-0.328799 -0.0331249 0
+-0.340336 -0.0115371 0
+-0.339357 0.000978765 0
+-0.342929 -0.00357209 0
+-0.369091 -0.0261618 0
+-0.429161 -0.0600704 0
+-0.522014 -0.0928533 0
+-0.632415 -0.1104 0
+-0.734221 -0.101806 0
+-0.797593 -0.0633718 0
+-0.797907 -0.000314181 0
+-0.723502 0.0744048 0
+-0.579811 0.143691 0
+-0.388663 0.191148 0
+-0.183088 0.205575 0
+0.000717461 0.183805 0
+0.131848 0.131131 0
+0.191223 0.0593751 0
+0.174569 -0.0166543 0
+0.0913933 -0.0831758 0
+-0.0393089 -0.130702 0
+-0.194998 -0.155689 0
+-0.35526 -0.160262 0
+-0.505619 -0.150359 0
+-0.638675 -0.133056 0
+-0.752729 -0.114054 0
+-0.848863 -0.0961338 0
+-0.927865 -0.0790021 0
+-0.988329 -0.0604634 0
+-1.02669 -0.0383608 0
+-1.03919 -0.0124959 0
+-1.02496 0.0142242 0
+-0.989114 0.0358471 0
+-0.944472 0.0446421 0
+-0.910861 0.0336106 0
+-0.906284 0.00457711 0
+-0.534538 0.0165621 0
+-0.317354 0.0384871 0
+-0.317354 0.129156 0
+-0.152687 -0.0136104 0
+-0.306104 -0.0265288 0
+-0.611635 -0.0471377 0
+-0.53545 -0.0761847 0
+-0.437964 -0.0974852 0
+-0.337939 -0.100025 0
+-0.254038 -0.0839008 0
+-0.197576 -0.0564613 0
+-0.169697 -0.0278784 0
+-0.162758 -0.00693916 0
+-0.164545 0.0017875 0
+-0.163275 -0.00126929 0
+-0.151429 -0.0118457 0
+-0.127284 -0.0241446 0
+-0.0941052 -0.0331787 0
+-0.0578608 -0.036244 0
+-0.02472 -0.0331405 0
+0.000640254 -0.0253599 0
+0.0155092 -0.0148686 0
+0.0186738 -0.0031643 0
+0.00967926 0.0089949 0
+-0.0115432 0.0212228 0
+-0.0444284 0.0328854 0
+-0.0871413 0.0427132 0
+-0.136089 0.0489483 0
+-0.186068 0.049979 0
+-0.231167 0.0450988 0
+-0.266079 0.0349122 0
+-0.28716 0.0210815 0
+-0.292647 0.00548725 0
+-0.281906 -0.010741 0
+-0.254191 -0.0277144 0
+-0.207792 -0.0463989 0
+-0.140339 -0.0674535 0
+-0.0504591 -0.0898793 0
+0.059792 -0.110251 0
+0.182893 -0.1231 0
+0.305423 -0.12253 0
+0.409969 -0.104545 0
+0.479134 -0.0691643 0
+0.500444 -0.0213103 0
+0.470354 0.0300909 0
+0.395705 0.0746492 0
+0.291914 0.103791 0
+0.178404 0.11351 0
+0.0729092 0.105495 0
+-0.0133019 0.0862113 0
+-0.0776688 0.0643671 0
+-0.125493 0.0478249 0
+-0.166618 0.0411246 0
+-0.211061 0.0444436 0
+-0.265269 0.0542076 0
+-0.330201 0.0649328 0
+-0.401662 0.071461 0
+-0.472362 0.0707004 0
+-0.53467 0.0623081 0
+-0.582937 0.0482664 0
+-0.614691 0.0317546 0
+-0.630608 0.0159172 0
+-0.633617 0.00300882 0
+-0.627705 -0.00591163 0
+-0.616833 -0.0108724 0
+-0.604098 -0.0127342 0
+-0.59111 -0.0129883 0
+-0.577474 -0.0136365 0
+-0.560435 -0.0170382 0
+-0.534887 -0.0255485 0
+-0.494054 -0.0408327 0
+-0.431122 -0.0629315 0
+-0.341702 -0.0894197 0
+-0.22651 -0.115192 0
+-0.0931774 -0.133332 0
+0.0439309 -0.137108 0
+0.166512 -0.122581 0
+0.257335 -0.0908225 0
+0.306004 -0.0486686 0
+0.313362 -0.00735811 0
+0.292569 0.0207929 0
+0.26592 0.0266489 0
+0.258038 0.00788229 0
+0.287546 -0.0295077 0
+0.360079 -0.0725325 0
+0.465177 -0.105098 0
+0.578344 -0.113166 0
+0.667764 -0.0894202 0
+0.703573 -0.0358089 0
+0.666659 0.0369141 0
+0.55422 0.112439 0
+0.380485 0.173735 0
+0.172706 0.207779 0
+-0.0359589 0.208665 0
+-0.214256 0.178297 0
+-0.339072 0.124817 0
+-0.398697 0.0596249 0
+-0.392886 -0.00581057 0
+-0.330516 -0.0623703 0
+-0.226071 -0.104445 0
+-0.0961572 -0.129914 0
+0.0432303 -0.139387 0
+0.178448 -0.135217 0
+0.29908 -0.120633 0
+0.398175 -0.0990947 0
+0.471987 -0.0738116 0
+0.519328 -0.0473413 0
+0.540643 -0.021315 0
+0.537068 0.00357555 0
+0.509861 0.0272073 0
+0.460546 0.0493143 0
+0.391827 0.0687195 0
+0.308877 0.0829501 0
+0.220254 0.0886225 0
+0.137578 0.0826765 0
+0.0734887 0.0640893 0
+0.0381674 0.0353213 0
+0.0355122 0.00265525 0
+0.0606045 -0.0250922 0
+0.0999655 -0.0393609 0
+0.135255 -0.0352893 0
+0.149746 -0.0144911 0
+0.135648 0.0140978 0
+0.0996688 0.0359793 0
+0.063877 0.0357918 0
+0.0534351 0.0104419 0
+0.152181 0.0362515 0
+0.14772 0.0677066 0
+0.14772 0.18459 0
+-0.574514 -0.0547587 0
+-1.14815 -0.101588 0
+-2.29217 -0.177141 0
+-2.08551 -0.282842 0
+-1.82134 -0.361652 0
+-1.55246 -0.368905 0
+-1.3314 -0.304961 0
+-1.18809 -0.199768 0
+-1.12189 -0.094082 0
+-1.107 -0.021824 0
+-1.10649 0.00127828 0
+-1.08775 -0.0200057 0
+-1.03328 -0.066312 0
+-0.943471 -0.113956 0
+-0.831996 -0.144652 0
+-0.717418 -0.150821 0
+-0.615398 -0.13516 0
+-0.534849 -0.105907 0
+-0.478764 -0.0709532 0
+-0.447955 -0.0339714 0
+-0.444745 0.00578585 0
+-0.474038 0.0505164 0
+-0.541046 0.0998946 0
+-0.64698 0.148648 0
+-0.785269 0.187238 0
+-0.940683 0.205393 0
+-1.09218 0.196593 0
+-1.21825 0.160991 0
+-1.30218 0.105009 0
+-1.33441 0.0377204 0
+-1.31118 -0.0339706 0
+-1.23052 -0.10838 0
+-1.08868 -0.188239 0
+-0.879995 -0.276135 0
+-0.601243 -0.36863 0
+-0.258989 -0.452504 0
+0.123686 -0.505775 0
+0.505271 -0.504114 0
+0.831349 -0.430623 0
+1.04712 -0.284935 0
+1.11306 -0.0872518 0
+1.01782 0.125331 0
+0.78289 0.309584 0
+0.456556 0.430126 0
+0.0989897 0.471077 0
+-0.2361 0.440586 0
+-0.516372 0.366484 0
+-0.737089 0.285085 0
+-0.917147 0.227883 0
+-1.08735 0.211326 0
+-1.27601 0.233108 0
+-1.49752 0.275715 0
+-1.74765 0.315066 0
+-2.00656 0.330372 0
+-2.24711 0.311254 0
+-2.4446 0.259791 0
+-2.58395 0.187621 0
+-2.66243 0.110234 0
+-2.68786 0.0413459 0
+-2.67438 -0.0104715 0
+-2.63791 -0.042378 0
+-2.59276 -0.0560213 0
+-2.54952 -0.0559727 0
+-2.51366 -0.048847 0
+-2.48415 -0.0431513 0
+-2.45202 -0.049167 0
+-2.3997 -0.0778699 0
+-2.3024 -0.138126 0
+-2.13305 -0.23229 0
+-1.87072 -0.351744 0
+-1.51089 -0.475027 0
+-1.07325 -0.570969 0
+-0.602961 -0.607396 0
+-0.162382 -0.563159 0
+0.185746 -0.43895 0
+0.398854 -0.261776 0
+0.471297 -0.0798006 0
+0.440067 0.0520233 0
+0.375632 0.0910843 0
+0.359611 0.0239036 0
+0.456335 -0.126231 0
+0.688225 -0.304423 0
+1.02407 -0.440941 0
+1.38493 -0.474022 0
+1.66629 -0.370782 0
+1.7693 -0.138824 0
+1.63073 0.17549 0
+1.24192 0.501243 0
+0.651403 0.764257 0
+-0.0487595 0.907942 0
+-0.747027 0.906932 0
+-1.33878 0.770047 0
+-1.7472 0.533242 0
+-1.9341 0.246522 0
+-1.89995 -0.0399589 0
+-1.676 -0.286318 0
+-1.31256 -0.467883 0
+-0.867367 -0.57511 0
+-0.39629 -0.610464 0
+0.0529072 -0.584415 0
+0.444198 -0.511923 0
+0.754751 -0.409648 0
+0.974456 -0.293516 0
+1.10349 -0.176373 0
+1.14826 -0.0660899 0
+1.11687 0.0349689 0
+1.01573 0.128347 0
+0.849189 0.215856 0
+0.622644 0.295265 0
+0.348028 0.357566 0
+0.0487762 0.387874 0
+-0.239208 0.37066 0
+-0.472916 0.297798 0
+-0.613619 0.176024 0
+-0.640759 0.0297963 0
+-0.562661 -0.10319 0
+-0.418398 -0.183624 0
+-0.267956 -0.185732 0
+-0.172464 -0.109983 0
+-0.171208 0.0128423 0
+-0.265362 0.130133 0
+-0.419219 0.189649 0
+-0.587431 0.178654 0
+-0.236813 0.197365 0
+-0.100612 0.173105 0
+-0.100612 0.330619 0
+-1.14048 -0.112339 0
+-2.27777 -0.204895 0
+-4.54911 -0.352881 0
+-4.27425 -0.5577 0
+-3.92742 -0.708486 0
+-3.58363 -0.712691 0
+-3.3144 -0.574193 0
+-3.15366 -0.360498 0
+-3.0881 -0.159639 0
+-3.06975 -0.0401796 0
+-3.0413 -0.0271681 0
+-2.96122 -0.100081 0
+-2.81789 -0.209644 0
+-2.62849 -0.303351 0
+-2.42572 -0.347419 0
+-2.24029 -0.336246 0
+-2.08821 -0.287236 0
+-1.96829 -0.225822 0
+-1.86973 -0.16952 0
+-1.78445 -0.119243 0
+-1.71703 -0.061634 0
+-1.68633 0.0198226 0
+-1.71797 0.13153 0
+-1.83111 0.261793 0
+-2.02644 0.382568 0
+-2.28122 0.460178 0
+-2.55417 0.46954 0
+-2.79766 0.404487 0
+-2.97143 0.278777 0
+-3.05105 0.117337 0
+-3.02783 -0.0571855 0
+-2.90162 -0.234585 0
+-2.67216 -0.417703 0
+-2.33548 -0.612809 0
+-1.88883 -0.815287 0
+-1.34217 -0.999163 0
+-0.730393 -1.11755 0
+-0.118345 -1.11616 0
+0.406741 -0.955707 0
+0.755377 -0.633569 0
+0.862182 -0.194055 0
+0.708012 0.279504 0
+0.327954 0.689644 0
+-0.199349 0.957431 0
+-0.777705 1.04943 0
+-1.32464 0.987521 0
+-1.79557 0.837419 0
+-2.19186 0.681377 0
+-2.55077 0.586788 0
+-2.92273 0.583293 0
+-3.346 0.656371 0
+-3.82871 0.758433 0
+-4.34504 0.831393 0
+-4.84529 0.830628 0
+-5.2746 0.740562 0
+-5.59156 0.576747 0
+-5.77962 0.375689 0
+-5.84817 0.178777 0
+-5.82496 0.0181432 0
+-5.74527 -0.0901658 0
+-5.64254 -0.145101 0
+-5.54341 -0.155154 0
+-5.46612 -0.133269 0
+-5.42007 -0.0948952 0
+-5.40432 -0.0588993 0
+-5.4044 -0.0490822 0
+-5.38899 -0.0932827 0
+-5.30969 -0.217422 0
+-5.10794 -0.434043 0
+-4.7306 -0.729084 0
+-4.15134 -1.05429 0
+-3.38979 -1.33251 0
+-2.51878 -1.47841 0
+-1.65269 -1.42925 0
+-0.917262 -1.17438 0
+-0.409389 -0.769647 0
+-0.161582 -0.327607 0
+-0.126001 0.016443 0
+-0.186832 0.151917 0
+-0.199105 0.036177 0
+-0.0412831 -0.284051 0
+0.337203 -0.682908 0
+0.891273 -0.99501 0
+1.4882 -1.07095 0
+1.94645 -0.82903 0
+2.09218 -0.284551 0
+1.81413 0.453546 0
+1.09856 1.21681 0
+0.0339385 1.82888 0
+-1.21402 2.1559 0
+-2.44626 2.13917 0
+-3.47796 1.80175 0
+-4.17559 1.23087 0
+-4.47532 0.546249 0
+-4.38227 -0.133004 0
+-3.95593 -0.712662 0
+-3.28929 -1.13452 0
+-2.48847 -1.37593 0
+-1.65619 -1.44274 0
+-0.880071 -1.36054 0
+-0.224851 -1.16714 0
+0.271638 -0.906137 0
+0.598397 -0.620274 0
+0.76624 -0.344215 0
+0.79821 -0.0980594 0
+0.717897 0.115282 0
+0.539993 0.306251 0
+0.267543 0.488306 0
+-0.101929 0.664738 0
+-0.563316 0.818953 0
+-1.08983 0.914387 0
+-1.6258 0.906631 0
+-2.09253 0.764526 0
+-2.40811 0.49161 0
+-2.51545 0.137134 0
+-2.40737 -0.211273 0
+-2.13701 -0.453984 0
+-1.80614 -0.516596 0
+-1.53296 -0.383165 0
+-1.41043 -0.109687 0
+-1.47252 0.192226 0
+-1.6838 0.400925 0
+-1.95282 0.447674 0
+-1.08245 0.373883 0
+-0.608673 0.198234 0
+-0.608673 0.297015 0
+-1.68989 -0.164387 0
+-3.37578 -0.296744 0
+-6.74813 -0.505551 0
+-6.51679 -0.789036 0
+-6.23795 -0.987321 0
+-5.9838 -0.966844 0
+-5.81301 -0.744978 0
+-5.73668 -0.436823 0
+-5.71478 -0.181533 0
+-5.67932 -0.0756443 0
+-5.56942 -0.137063 0
+-5.36037 -0.309131 0
+-5.07316 -0.496844 0
+-4.76172 -0.614789 0
+-4.48536 -0.623776 0
+-4.28075 -0.540857 0
+-4.14688 -0.421105 0
+-4.0498 -0.322895 0
+-3.94407 -0.275245 0
+-3.79988 -0.263432 0
+-3.6224 -0.239111 0
+-3.45379 -0.148788 0
+-3.35659 0.0343401 0
+-3.38621 0.291407 0
+-3.56491 0.561269 0
+-3.86935 0.764625 0
+-4.23681 0.837 0
+-4.58672 0.7544 0
+-4.84714 0.539196 0
+-4.97382 0.244016 0
+-4.95421 -0.0767865 0
+-4.79712 -0.391673 0
+-4.51633 -0.698494 0
+-4.11932 -1.00982 0
+-3.6082 -1.3264 0
+-2.99246 -1.6149 0
+-2.30582 -1.80418 0
+-1.6164 -1.80557 0
+-1.02127 -1.55084 0
+-0.623723 -1.03111 0
+-0.501048 -0.316727 0
+-0.6764 0.454858 0
+-1.10862 1.12187 0
+-1.70626 1.55508 0
+-2.3612 1.70438 0
+-2.98779 1.61411 0
+-3.55071 1.40035 0
+-4.07009 1.20076 0
+-4.60255 1.11924 0
+-5.20761 1.18835 0
+-5.91426 1.36303 0
+-6.70196 1.54613 0
+-7.50351 1.63294 0
+-8.22768 1.5548 0
+-8.79097 1.30385 0
+-9.14464 0.930424 0
+-9.28676 0.51781 0
+-9.25615 0.14817 0
+-9.11394 -0.124065 0
+-8.92277 -0.281335 0
+-8.73282 -0.335052 0
+-8.5779 -0.310073 0
+-8.47836 -0.23281 0
+-8.44474 -0.128516 0
+-8.47768 -0.0259579 0
+-8.56259 0.0358292 0
+-8.66103 0.00515875 0
+-8.70459 -0.17386 0
+-8.59955 -0.539082 0
+-8.24782 -1.08082 0
+-7.58115 -1.72095 0
+-6.59637 -2.31729 0
+-5.37492 -2.69985 0
+-4.07366 -2.7305 0
+-2.88467 -2.36337 0
+-1.97536 -1.67896 0
+-1.43059 -0.87237 0
+-1.2205 -0.193645 0
+-1.20927 0.140683 0
+-1.20469 0.0316018 0
+-1.03161 -0.457132 0
+-0.601918 -1.1126 0
+0.0454579 -1.64238 0
+0.750381 -1.77588 0
+1.2817 -1.36035 0
+1.4138 -0.416655 0
+1.00202 0.865325 0
+0.0307472 2.18809 0
+-1.38044 3.24007 0
+-3.01124 3.7867 0
+-4.6005 3.72843 0
+-5.90976 3.11102 0
+-6.77127 2.09238 0
+-7.11012 0.885095 0
+-6.9411 -0.302026 0
+-6.34833 -1.30542 0
+-5.45815 -2.0247 0
+-4.41323 -2.42085 0
+-3.35167 -2.5043 0
+-2.39089 -2.32132 0
+-1.61537 -1.94266 0
+-1.06869 -1.45281 0
+-0.75208 -0.936889 0
+-0.632129 -0.464166 0
+-0.65777 -0.0724181 0
+-0.782212 0.239725 0
+-0.981931 0.505971 0
+-1.26404 0.770417 0
+-1.65707 1.05777 0
+-2.18724 1.34912 0
+-2.84968 1.57683 0
+-3.58846 1.64541 0
+-4.29706 1.47313 0
+-4.84369 1.03824 0
+-5.11431 0.407755 0
+-5.05728 -0.268303 0
+-4.71009 -0.801173 0
+-4.19427 -1.03241 0
+-3.67693 -0.90051 0
+-3.3119 -0.474717 0
+-3.18328 0.0636119 0
+-3.2727 0.490346 0
+-3.45667 0.631643 0
+-1.90043 0.435738 0
+-1.03236 0.109651 0
+-1.03236 0.145169 0
+-2.09211 -0.192421 0
+-4.17939 -0.343983 0
+-8.35908 -0.578569 0
+-8.26246 -0.885652 0
+-8.17417 -1.07561 0
+-8.13942 -1.0016 0
+-8.17347 -0.710923 0
+-8.24072 -0.36957 0
+-8.26573 -0.156514 0
+-8.16896 -0.172412 0
+-7.90782 -0.3982 0
+-7.50195 -0.715002 0
+-7.02961 -0.969183 0
+-6.59631 -1.04808 0
+-6.28987 -0.930211 0
+-6.14251 -0.688218 0
+-6.11754 -0.446071 0
+-6.12701 -0.313417 0
+-6.07259 -0.329663 0
+-5.89153 -0.444486 0
+-5.58733 -0.543309 0
+-5.23133 -0.504785 0
+-4.93455 -0.262439 0
+-4.80196 0.158823 0
+-4.88905 0.648358 0
+-5.17901 1.05458 0
+-5.58958 1.24758 0
+-6.00519 1.17001 0
+-6.31897 0.85297 0
+-6.46574 0.39079 0
+-6.43272 -0.109805 0
+-6.24647 -0.577922 0
+-5.94687 -0.998095 0
+-5.56406 -1.39262 0
+-5.1107 -1.77976 0
+-4.59177 -2.13384 0
+-4.02448 -2.37147 0
+-3.45497 -2.37508 0
+-2.95963 -2.04617 0
+-2.62681 -1.36393 0
+-2.52554 -0.417989 0
+-2.67677 0.606085 0
+-3.04268 1.48779 0
+-3.54192 2.05432 0
+-4.08503 2.24749 0
+-4.61385 2.14293 0
+-5.12569 1.91219 0
+-5.6703 1.74537 0
+-6.32085 1.7698 0
+-7.13187 1.99938 0
+-8.1032 2.33436 0
+-9.16639 2.60933 0
+-10.2003 2.66686 0
+-11.0696 2.42407 0
+-11.6695 1.9038 0
+-11.9588 1.2197 0
+-11.9669 0.525904 0
+-11.7757 -0.0430283 0
+-11.4858 -0.413976 0
+-11.1842 -0.582877 0
+-10.9279 -0.591445 0
+-10.7449 -0.493063 0
+-10.6471 -0.330578 0
+-10.6408 -0.134784 0
+-10.7297 0.062934 0
+-10.9077 0.21377 0
+-11.1431 0.240565 0
+-11.3621 0.0451717 0
+-11.4451 -0.45609 0
+-11.2482 -1.27767 0
+-10.6492 -2.31998 0
+-9.60039 -3.3661 0
+-8.16571 -4.13453 0
+-6.52078 -4.37543 0
+-4.90983 -3.97432 0
+-3.57132 -3.01747 0
+-2.65915 -1.78454 0
+-2.19087 -0.661926 0
+-2.04542 -0.00476413 0
+-2.01379 -3.05707e-05 0
+-1.88405 -0.586865 0
+-1.52801 -1.46863 0
+-0.955547 -2.21485 0
+-0.315585 -2.41584 0
+0.156372 -1.8323 0
+0.223606 -0.483887 0
+-0.266407 1.35534 0
+-1.32759 3.24928 0
+-2.82904 4.74151 0
+-4.53458 5.49224 0
+-6.16971 5.36356 0
+-7.49016 4.43147 0
+-8.33098 2.9332 0
+-8.62624 1.18036 0
+-8.40201 -0.526255 0
+-7.75323 -1.95421 0
+-6.81604 -2.96189 0
+-5.74303 -3.49387 0
+-4.68297 -3.56436 0
+-3.76323 -3.24106 0
+-3.07334 -2.63255 0
+-2.65173 -1.87442 0
+-2.48104 -1.10758 0
+-2.49734 -0.447863 0
+-2.61458 0.0448255 0
+-2.75828 0.383423 0
+-2.89637 0.644057 0
+-3.05351 0.927561 0
+-3.30009 1.30435 0
+-3.71713 1.76616 0
+-4.34983 2.20954 0
+-5.16935 2.46493 0
+-6.06161 2.36539 0
+-6.85215 1.82877 0
+-7.36104 0.916651 0
+-7.46799 -0.16136 0
+-7.16083 -1.10833 0
+-6.54581 -1.64742 0
+-5.8124 -1.63392 0
+-5.16442 -1.1227 0
+-4.7438 -0.357005 0
+-4.57624 0.32278 0
+-4.5585 0.613911 0
+-2.39864 0.373178 0
+-1.24268 -0.0236826 0
+-1.24268 -0.00641599 0
+-2.28669 -0.190391 0
+-4.56276 -0.336021 0
+-9.11859 -0.55452 0
+-9.1834 -0.820838 0
+-9.31816 -0.940856 0
+-9.52782 -0.791928 0
+-9.76974 -0.469003 0
+-9.95423 -0.185081 0
+-9.97442 -0.136318 0
+-9.75332 -0.393512 0
+-9.28541 -0.866102 0
+-8.65138 -1.34903 0
+-7.99599 -1.62457 0
+-7.4761 -1.56796 0
+-7.19979 -1.20652 0
+-7.1824 -0.705598 0
+-7.33923 -0.289244 0
+-7.51892 -0.133719 0
+-7.56484 -0.283735 0
+-7.37923 -0.630102 0
+-6.96374 -0.958792 0
+-6.41973 -1.04879 0
+-5.90805 -0.774115 0
+-5.58536 -0.163865 0
+-5.5433 0.606298 0
+-5.77524 1.28652 0
+-6.18309 1.65543 0
+-6.61932 1.60624 0
+-6.94443 1.17808 0
+-7.07461 0.520977 0
+-7.00039 -0.184029 0
+-6.77202 -0.806287 0
+-6.46365 -1.30646 0
+-6.13659 -1.71968 0
+-5.81962 -2.09673 0
+-5.51259 -2.44087 0
+-5.20682 -2.67724 0
+-4.90829 -2.67361 0
+-4.64882 -2.30565 0
+-4.47754 -1.5352 0
+-4.43723 -0.458297 0
+-4.53972 0.708574 0
+-4.75675 1.70482 0
+-5.03412 2.33169 0
+-5.32346 2.53683 0
+-5.6149 2.43437 0
+-5.95156 2.24884 0
+-6.41566 2.20948 0
+-7.09056 2.44469 0
+-8.01463 2.92345 0
+-9.14838 3.46811 0
+-10.3712 3.83217 0
+-11.5122 3.80781 0
+-12.4032 3.31514 0
+-12.934 2.43458 0
+-13.085 1.37068 0
+-12.9264 0.367316 0
+-12.5847 -0.384759 0
+-12.1927 -0.805943 0
+-11.8475 -0.928056 0
+-11.5941 -0.84484 0
+-11.4381 -0.649044 0
+-11.371 -0.397768 0
+-11.3885 -0.117275 0
+-11.4973 0.171772 0
+-11.7075 0.424021 0
+-12.0112 0.544206 0
+-12.3519 0.385877 0
+-12.6074 -0.200596 0
+-12.6057 -1.27931 0
+-12.1771 -2.74858 0
+-11.2217 -4.32157 0
+-9.76359 -5.59261 0
+-7.96551 -6.17351 0
+-6.0912 -5.84863 0
+-4.42688 -4.68179 0
+-3.18937 -3.02204 0
+-2.45722 -1.39408 0
+-2.15305 -0.30893 0
+-2.08526 -0.0678199 0
+-2.03236 -0.639765 0
+-1.83568 -1.66531 0
+-1.4631 -2.58743 0
+-1.01919 -2.85974 0
+-0.699602 -2.15189 0
+-0.710247 -0.473241 0
+-1.18508 1.83018 0
+-2.1343 4.1985 0
+-3.43979 6.047 0
+-4.89414 6.94659 0
+-6.26329 6.73271 0
+-7.34718 5.51536 0
+-8.01893 3.60495 0
+-8.23592 1.39735 0
+-8.02887 -0.733299 0
+-7.48075 -2.50233 0
+-6.70611 -3.73653 0
+-5.83515 -4.36483 0
+-5.00015 -4.39936 0
+-4.31953 -3.92168 0
+-3.87768 -3.07439 0
+-3.70486 -2.04724 0
+-3.76638 -1.04605 0
+-3.97047 -0.243773 0
+-4.19763 0.271979 0
+-4.34472 0.530516 0
+-4.36807 0.667405 0
+-4.30683 0.866322 0
+-4.27365 1.27117 0
+-4.41195 1.90445 0
+-4.8338 2.63139 0
+-5.5627 3.19383 0
+-6.5061 3.30879 0
+-7.47242 2.7951 0
+-8.22994 1.67417 0
+-8.58657 0.195265 0
+-8.45953 -1.23538 0
+-7.90606 -2.20089 0
+-7.1014 -2.43858 0
+-6.27173 -1.95238 0
+-5.60883 -1.0199 0
+-5.2012 -0.0848502 0
+-5.01138 0.424092 0
+-2.52801 0.279177 0
+-1.27009 -0.10097 0
+-1.27009 -0.0748777 0
+-2.28971 -0.165699 0
+-4.55333 -0.286633 0
+-9.07097 -0.458359 0
+-9.25325 -0.638556 0
+-9.54348 -0.650623 0
+-9.90758 -0.427829 0
+-10.2527 -0.123836 0
+-10.4499 0.0120408 0
+-10.3794 -0.206794 0
+-9.98401 -0.788886 0
+-9.30457 -1.54554 0
+-8.48021 -2.17338 0
+-7.70828 -2.3965 0
+-7.17667 -2.09958 0
+-6.99435 -1.38884 0
+-7.14829 -0.551656 0
+-7.5054 0.0678743 0
+-7.86051 0.221396 0
+-8.01276 -0.131485 0
+-7.84125 -0.801613 0
+-7.35048 -1.44955 0
+-6.66774 -1.73153 0
+-5.99338 -1.44848 0
+-5.52397 -0.63327 0
+-5.37904 0.461369 0
+-5.56014 1.46762 0
+-5.95737 2.05266 0
+-6.39844 2.04732 0
+-6.71795 1.49758 0
+-6.81695 0.619983 0
+-6.68934 -0.311641 0
+-6.40756 -1.08807 0
+-6.0795 -1.63452 0
+-5.79973 -1.99945 0
+-5.61763 -2.27883 0
+-5.53286 -2.52564 0
+-5.51382 -2.69628 0
+-5.52496 -2.66246 0
+-5.54728 -2.28333 0
+-5.58143 -1.50105 0
+-5.63479 -0.404934 0
+-5.70444 0.778228 0
+-5.7709 1.77127 0
+-5.81003 2.37083 0
+-5.81795 2.54475 0
+-5.83312 2.44954 0
+-5.93931 2.35503 0
+-6.24213 2.5123 0
+-6.82606 3.02863 0
+-7.70979 3.80717 0
+-8.82067 4.579 0
+-10.0032 5.01472 0
+-11.0618 4.86638 0
+-11.8225 4.07584 0
+-12.1898 2.80192 0
+-12.1751 1.35595 0
+-11.885 0.0772274 0
+-11.4755 -0.794287 0
+-11.0906 -1.19084 0
+-10.8143 -1.20437 0
+-10.6587 -1.00037 0
+-10.5925 -0.715331 0
+-10.5797 -0.410574 0
+-10.6024 -0.0945111 0
+-10.6673 0.23669 0
+-10.8014 0.558099 0
+-11.0313 0.774062 0
+-11.3415 0.696071 0
+-11.6395 0.0974576 0
+-11.7612 -1.15763 0
+-11.5195 -2.99027 0
+-10.7767 -5.06437 0
+-9.50862 -6.86069 0
+-7.83274 -7.84938 0
+-5.98507 -7.69631 0
+-4.25075 -6.41611 0
+-2.87381 -4.39899 0
+-1.98079 -2.28709 0
+-1.54933 -0.74039 0
+-1.43377 -0.183376 0
+-1.43622 -0.637317 0
+-1.39205 -1.70948 0
+-1.23397 -2.74551 0
+-1.00954 -3.08417 0
+-0.848495 -2.31293 0
+-0.897779 -0.423956 0
+-1.2547 2.18709 0
+-1.92615 4.86995 0
+-2.82741 6.94827 0
+-3.81516 7.93435 0
+-4.73569 7.65323 0
+-5.46629 6.24596 0
+-5.93608 4.07474 0
+-6.12527 1.58654 0
+-6.05222 -0.806346 0
+-5.76035 -2.7942 0
+-5.31203 -4.18486 0
+-4.78835 -4.88851 0
+-4.28708 -4.90062 0
+-3.91057 -4.29819 0
+-3.74156 -3.2434 0
+-3.81405 -1.97475 0
+-4.09279 -0.767317 0
+-4.47477 0.138217 0
+-4.8184 0.615601 0
+-4.99344 0.705564 0
+-4.9344 0.608362 0
+-4.67477 0.606693 0
+-4.34534 0.941743 0
+-4.13255 1.69167 0
+-4.20961 2.70845 0
+-4.66565 3.64987 0
+-5.46134 4.10447 0
+-6.43076 3.76452 0
+-7.33202 2.57542 0
+-7.92896 0.79221 0
+-8.07317 -1.09117 0
+-7.75367 -2.52039 0
+-7.09494 -3.09731 0
+-6.30474 -2.74258 0
+-5.59436 -1.73029 0
+-5.10532 -0.573883 0
+-4.8746 0.193371 0
+-2.39362 0.260089 0
+-1.19832 -0.0624002 0
+-1.19832 -0.0413838 0
+-2.17188 -0.133837 0
+-4.29203 -0.22448 0
+-8.4971 -0.341416 0
+-8.70803 -0.42763 0
+-9.02219 -0.336455 0
+-9.37962 -0.0703977 0
+-9.66374 0.160286 0
+-9.73827 0.0865661 0
+-9.49976 -0.445299 0
+-8.9266 -1.36205 0
+-8.1028 -2.36934 0
+-7.20339 -3.07279 0
+-6.44274 -3.15715 0
+-6.00258 -2.53974 0
+-5.96617 -1.42525 0
+-6.28465 -0.233181 0
+-6.79008 0.573311 0
+-7.25223 0.683548 0
+-7.45904 0.0753292 0
+-7.2919 -0.968757 0
+-6.76779 -1.97366 0
+-6.03226 -2.46706 0
+-5.30517 -2.17557 0
+-4.79958 -1.13886 0
+-4.64485 0.306643 0
+-4.84347 1.66624 0
+-5.27729 2.48648 0
+-5.75901 2.52904 0
+-6.1063 1.84487 0
+-6.20779 0.721473 0
+-6.05522 -0.464204 0
+-5.73218 -1.4111 0
+-5.36913 -1.99757 0
+-5.08802 -2.28056 0
+-4.96117 -2.40567 0
+-4.99873 -2.48808 0
+-5.16253 -2.53248 0
+-5.39351 -2.43147 0
+-5.63695 -2.03989 0
+-5.8544 -1.2836 0
+-6.02066 -0.238672 0
+-6.11491 0.87248 0
+-6.11815 1.77452 0
+-6.02321 2.27589 0
+-5.85242 2.37396 0
+-5.67003 2.26715 0
+-5.57635 2.26135 0
+-5.67988 2.61583 0
+-6.0558 3.40455 0
+-6.70799 4.45937 0
+-7.55311 5.42411 0
+-8.43744 5.89905 0
+-9.18343 5.61237 0
+-9.64871 4.54113 0
+-9.77434 2.92755 0
+-9.60273 1.18434 0
+-9.25795 -0.267553 0
+-8.89545 -1.15679 0
+-8.64017 -1.44612 0
+-8.53932 -1.30521 0
+-8.55692 -0.982772 0
+-8.61995 -0.652306 0
+-8.67099 -0.359528 0
+-8.68149 -0.0840148 0
+-8.65161 0.206816 0
+-8.61323 0.519719 0
+-8.6231 0.783931 0
+-8.71952 0.792488 0
+-8.87115 0.249084 0
+-8.96829 -1.06048 0
+-8.85736 -3.10121 0
+-8.39975 -5.52197 0
+-7.53158 -7.72887 0
+-6.30008 -9.08087 0
+-4.86037 -9.13602 0
+-3.43055 -7.84592 0
+-2.22146 -5.60808 0
+-1.36869 -3.13986 0
+-0.894874 -1.21421 0
+-0.717072 -0.361177 0
+-0.694315 -0.660073 0
+-0.692498 -1.71129 0
+-0.637194 -2.80082 0
+-0.532749 -3.18861 0
+-0.443615 -2.40206 0
+-0.451743 -0.415827 0
+-0.613202 2.34855 0
+-0.934204 5.19095 0
+-1.37422 7.38828 0
+-1.86916 8.42929 0
+-2.3586 8.14268 0
+-2.80181 6.68917 0
+-3.17698 4.44991 0
+-3.46937 1.87893 0
+-3.66045 -0.615258 0
+-3.72849 -2.72616 0
+-3.66264 -4.25071 0
+-3.48261 -5.06854 0
+-3.25017 -5.13306 0
+-3.06113 -4.48723 0
+-3.01605 -3.28848 0
+-3.17971 -1.8111 0
+-3.5469 -0.40012 0
+-4.03194 0.623257 0
+-4.49027 1.07393 0
+-4.76764 0.982929 0
+-4.75954 0.600264 0
+-4.45768 0.304835 0
+-3.9633 0.44736 0
+-3.45922 1.18759 0
+-3.14853 2.39775 0
+-3.18146 3.68281 0
+-3.59805 4.52106 0
+-4.30926 4.47573 0
+-5.1253 3.39147 0
+-5.8216 1.48851 0
+-6.21709 -0.69568 0
+-6.23464 -2.50284 0
+-5.92065 -3.41129 0
+-5.41843 -3.2448 0
+-4.90908 -2.23963 0
+-4.54656 -0.936404 0
+-4.41396 0.0607689 0
+-2.15997 0.361197 0
+-1.1053 0.0798926 0
+-1.1053 0.0600488 0
+-2.02227 -0.110483 0
+-3.96225 -0.178957 0
+-7.77516 -0.256927 0
+-7.92203 -0.280759 0
+-8.12371 -0.134768 0
+-8.31302 0.118911 0
+-8.38349 0.230752 0
+-8.22947 -0.0674491 0
+-7.79288 -0.881884 0
+-7.09789 -2.05704 0
+-6.25776 -3.20947 0
+-5.44815 -3.88239 0
+-4.85411 -3.75119 0
+-4.60817 -2.78567 0
+-4.74188 -1.29154 0
+-5.16978 0.19472 0
+-5.71347 1.117 0
+-6.15845 1.12853 0
+-6.32488 0.24176 0
+-6.12839 -1.16524 0
+-5.61001 -2.49205 0
+-4.92348 -3.15358 0
+-4.28305 -2.816 0
+-3.88894 -1.53297 0
+-3.8577 0.27541 0
+-4.18315 1.99168 0
+-4.74244 3.04577 0
+-5.34422 3.13082 0
+-5.79913 2.29978 0
+-5.98478 0.907124 0
+-5.88086 -0.568124 0
+-5.56362 -1.72835 0
+-5.16622 -2.39496 0
+-4.82496 -2.62182 0
+-4.63467 -2.59596 0
+-4.62933 -2.49343 0
+-4.78904 -2.37277 0
+-5.06226 -2.15825 0
+-5.38917 -1.71298 0
+-5.71585 -0.956919 0
+-5.99717 0.0426449 0
+-6.19429 1.06961 0
+-6.27619 1.85641 0
+-6.229 2.2287 0
+-6.06907 2.21403 0
+-5.84958 2.04766 0
+-5.65206 2.06384 0
+-5.56152 2.52528 0
+-5.63346 3.47649 0
+-5.86727 4.69319 0
+-6.19978 5.75662 0
+-6.52459 6.22387 0
+-6.73116 5.81894 0
+-6.74752 4.5575 0
+-6.56897 2.749 0
+-6.26101 0.876385 0
+-5.93584 -0.592728 0
+-5.71051 -1.38212 0
+-5.65973 -1.49689 0
+-5.77876 -1.18619 0
+-5.98119 -0.780333 0
+-6.16295 -0.470551 0
+-6.26661 -0.25587 0
+-6.26525 -0.085375 0
+-6.14577 0.0873385 0
+-5.9186 0.292554 0
+-5.64118 0.506508 0
+-5.39909 0.550404 0
+-5.24211 0.0921047 0
+-5.16164 -1.14096 0
+-5.09638 -3.16646 0
+-4.9568 -5.66155 0
+-4.66191 -8.02375 0
+-4.17566 -9.56712 0
+-3.52652 -9.78517 0
+-2.79998 -8.57246 0
+-2.10624 -6.30182 0
+-1.53774 -3.70836 0
+-1.13637 -1.61557 0
+-0.885119 -0.61243 0
+-0.726333 -0.818858 0
+-0.595336 -1.84229 0
+-0.450894 -2.94526 0
+-0.28795 -3.35156 0
+-0.129784 -2.56023 0
+-0.00845236 -0.537158 0
+0.0527609 2.28734 0
+0.0447746 5.19894 0
+-0.0346639 7.46772 0
+-0.19282 8.58745 0
+-0.44677 8.39663 0
+-0.814422 7.05682 0
+-1.2949 4.93039 0
+-1.85001 2.43403 0
+-2.4003 -0.0649678 0
+-2.84335 -2.2831 0
+-3.0901 -4.00397 0
+-3.10425 -5.05438 0
+-2.92598 -5.31133 0
+-2.66635 -4.74686 0
+-2.47165 -3.48318 0
+-2.47018 -1.81257 0
+-2.72171 -0.148582 0
+-3.19005 1.09159 0
+-3.75006 1.63395 0
+-4.22836 1.46122 0
+-4.46348 0.835386 0
+-4.36427 0.205625 0
+-3.9449 0.0279898 0
+-3.3235 0.566195 0
+-2.6844 1.75864 0
+-2.21697 3.21538 0
+-2.05299 4.35708 0
+-2.22475 4.64749 0
+-2.65935 3.82607 0
+-3.21064 2.0398 0
+-3.71555 -0.190768 0
+-4.05215 -2.16624 0
+-4.17719 -3.28626 0
+-4.1308 -3.29119 0
+-4.01034 -2.3601 0
+-3.9273 -1.01944 0
+-3.9654 0.0988672 0
+-1.98324 0.546549 0
+-1.04593 0.256409 0
+-1.04593 0.170696 0
+-1.91294 -0.104923 0
+-3.71745 -0.168119 0
+-7.23148 -0.238552 0
+-7.25478 -0.257461 0
+-7.25704 -0.132509 0
+-7.18051 0.0423845 0
+-6.95695 0.00719726 0
+-6.54046 -0.483937 0
+-5.93729 -1.48506 0
+-5.21827 -2.77606 0
+-4.50647 -3.92126 0
+-3.943 -4.44586 0
+-3.64257 -4.05163 0
+-3.65434 -2.7739 0
+-3.94201 -1.00387 0
+-4.39081 0.643521 0
+-4.84021 1.5664 0
+-5.13189 1.42021 0
+-5.15807 0.267941 0
+-4.896 -1.42731 0
+-4.41847 -2.96957 0
+-3.87561 -3.69644 0
+-3.45101 -3.2406 0
+-3.30439 -1.67959 0
+-3.51901 0.490031 0
+-4.07247 2.54514 0
+-4.84229 3.8156 0
+-5.64512 3.93365 0
+-6.29526 2.94993 0
+-6.66136 1.27322 0
+-6.70111 -0.528373 0
+-6.46363 -1.96582 0
+-6.06192 -2.79668 0
+-5.62922 -3.05452 0
+-5.27816 -2.94702 0
+-5.07716 -2.69442 0
+-5.04827 -2.40166 0
+-5.17909 -2.02743 0
+-5.43752 -1.45455 0
+-5.78144 -0.612994 0
+-6.1621 0.423304 0
+-6.52559 1.43309 0
+-6.818 2.14882 0
+-6.99585 2.40656 0
+-7.03775 2.25593 0
+-6.95023 1.96014 0
+-6.763 1.8766 0
+-6.51391 2.27619 0
+-6.23053 3.19311 0
+-5.91803 4.38068 0
+-5.56077 5.39937 0
+-5.13786 5.80095 0
+-4.64447 5.32555 0
+-4.10733 4.02036 0
+-3.58536 2.22703 0
+-3.1549 0.445934 0
+-2.88682 -0.86081 0
+-2.8246 -1.44435 0
+-2.9682 -1.35329 0
+-3.25989 -0.894499 0
+-3.57723 -0.462992 0
+-3.80922 -0.238556 0
+-3.93235 -0.132745 0
+-3.9399 -0.0778251 0
+-3.8067 -0.0458608 0
+-3.49183 -0.022312 0
+-2.98775 0.00243261 0
+-2.40347 -0.0338765 0
+-1.87453 -0.436837 0
+-1.52782 -1.48767 0
+-1.4431 -3.25119 0
+-1.62421 -5.48044 0
+-1.99925 -7.64871 0
+-2.44974 -9.11662 0
+-2.85339 -9.38152 0
+-3.12054 -8.30531 0
+-3.21103 -6.21133 0
+-3.12958 -3.78981 0
+-2.90812 -1.83703 0
+-2.58703 -0.933513 0
+-2.2039 -1.20199 0
+-1.79085 -2.25534 0
+-1.37577 -3.36034 0
+-0.981974 -3.74535 0
+-0.625926 -2.91628 0
+-0.316611 -0.846472 0
+-0.0606312 2.03136 0
+0.127112 5.0112 0
+0.21299 7.38184 0
+0.143375 8.65706 0
+-0.141255 8.68126 0
+-0.67839 7.59396 0
+-1.45227 5.70427 0
+-2.37512 3.35689 0
+-3.29435 0.854258 0
+-4.0289 -1.54855 0
+-4.42486 -3.60801 0
+-4.40973 -5.06951 0
+-4.02379 -5.69728 0
+-3.4146 -5.35605 0
+-2.79518 -4.1026 0
+-2.37933 -2.22842 0
+-2.31567 -0.212239 0
+-2.64143 1.41735 0
+-3.27049 2.26301 0
+-4.01905 2.20978 0
+-4.66065 1.47699 0
+-4.99369 0.538663 0
+-4.90082 -0.0648793 0
+-4.38255 0.0479238 0
+-3.5552 0.931297 0
+-2.61455 2.27473 0
+-1.77686 3.51939 0
+-1.21649 4.08711 0
+-1.02051 3.63009 0
+-1.17464 2.19394 0
+-1.58276 0.21735 0
+-2.10965 -1.63935 0
+-2.62925 -2.76666 0
+-3.06061 -2.85982 0
+-3.38097 -2.03974 0
+-3.61518 -0.785229 0
+-3.80848 0.292162 0
+-1.96959 0.729545 0
+-1.05221 0.381517 0
+-1.05221 0.236483 0
+-1.87646 -0.117222 0
+-3.63197 -0.193083 0
+-7.03367 -0.289703 0
+-6.92636 -0.364779 0
+-6.72048 -0.338381 0
+-6.37667 -0.301429 0
+-5.87719 -0.492278 0
+-5.24559 -1.11554 0
+-4.55401 -2.17663 0
+-3.91077 -3.4193 0
+-3.43017 -4.40185 0
+-3.19573 -4.6803 0
+-3.23105 -4.01631 0
+-3.48998 -2.51496 0
+-3.86957 -0.624273 0
+-4.24047 1.01442 0
+-4.48429 1.81021 0
+-4.52583 1.46175 0
+-4.35146 0.0935689 0
+-4.01141 -1.76735 0
+-3.60847 -3.37252 0
+-3.27563 -4.02927 0
+-3.14601 -3.37022 0
+-3.31957 -1.50603 0
+-3.83418 1.00464 0
+-4.64974 3.3607 0
+-5.65243 4.81829 0
+-6.68034 4.96156 0
+-7.5639 3.83349 0
+-8.16844 1.87776 0
+-8.42542 -0.271391 0
+-8.34328 -2.04795 0
+-7.99618 -3.14378 0
+-7.49701 -3.55369 0
+-6.96625 -3.47778 0
+-6.50779 -3.15288 0
+-6.19706 -2.71239 0
+-6.07924 -2.14525 0
+-6.1707 -1.36308 0
+-6.4598 -0.323893 0
+-6.90732 0.870827 0
+-7.44975 1.97552 0
+-8.00741 2.70648 0
+-8.49658 2.89574 0
+-8.84196 2.6013 0
+-8.98501 2.1032 0
+-8.88677 1.77836 0
+-8.52643 1.91586 0
+-7.90012 2.5668 0
+-7.02397 3.50454 0
+-5.94201 4.3174 0
+-4.73362 4.59256 0
+-3.51233 4.10425 0
+-2.4096 2.91764 0
+-1.5457 1.36313 0
+-0.997628 -0.10214 0
+-0.778451 -1.07999 0
+-0.838716 -1.38408 0
+-1.09007 -1.10194 0
+-1.43118 -0.553393 0
+-1.73324 -0.160924 0
+-1.91363 -0.0581715 0
+-2.00968 -0.0366876 0
+-2.04454 -0.0429721 0
+-2.00286 -0.0875384 0
+-1.79892 -0.22625 0
+-1.23587 -0.56062 0
+-0.429983 -0.839761 0
+0.405061 -1.27188 0
+0.997248 -2.07985 0
+1.10995 -3.36389 0
+0.62898 -4.99947 0
+-0.399519 -6.62021 0
+-1.78908 -7.72706 0
+-3.27546 -7.89513 0
+-4.59414 -6.98663 0
+-5.54545 -5.26002 0
+-6.02999 -3.30528 0
+-6.05059 -1.81643 0
+-5.68883 -1.29527 0
+-5.0692 -1.82162 0
+-4.32326 -3.00127 0
+-3.56191 -4.12169 0
+-2.85997 -4.4473 0
+-2.25468 -3.52157 0
+-1.7574 -1.34374 0
+-1.37417 1.64812 0
+-1.1268 4.76383 0
+-1.06425 7.3193 0
+-1.25579 8.8486 0
+-1.76482 9.19029 0
+-2.6115 8.44064 0
+-3.73917 6.83194 0
+-5.00175 4.61947 0
+-6.18301 2.03552 0
+-7.04676 -0.6848 0
+-7.40337 -3.25139 0
+-7.1702 -5.30268 0
+-6.40425 -6.46322 0
+-5.29521 -6.46509 0
+-4.12015 -5.27766 0
+-3.1732 -3.17537 0
+-2.68964 -0.695798 0
+-2.78474 1.51245 0
+-3.42288 2.90114 0
+-4.4248 3.2117 0
+-5.51158 2.56377 0
+-6.37516 1.40225 0
+-6.75819 0.318158 0
+-6.52217 -0.188101 0
+-5.68467 0.0938022 0
+-4.4144 1.00446 0
+-2.9841 2.08908 0
+-1.69474 2.79775 0
+-0.794435 2.72979 0
+-0.417529 1.81703 0
+-0.561879 0.361699 0
+-1.10837 -1.09286 0
+-1.8716 -2.00344 0
+-2.66108 -2.07034 0
+-3.33153 -1.36929 0
+-3.80761 -0.309149 0
+-4.07968 0.564235 0
+-2.15471 0.826903 0
+-1.13492 0.396756 0
+-1.13492 0.228885 0
+-1.90157 -0.139547 0
+-3.68816 -0.239896 0
+-7.15646 -0.385993 0
+-6.96084 -0.560393 0
+-6.61221 -0.687017 0
+-6.08867 -0.824964 0
+-5.41623 -1.16471 0
+-4.67514 -1.85663 0
+-3.98651 -2.86525 0
+-3.47882 -3.92699 0
+-3.24497 -4.6357 0
+-3.30716 -4.61811 0
+-3.60502 -3.71845 0
+-4.01352 -2.10646 0
+-4.38412 -0.253669 0
+-4.5928 1.2231 0
+-4.57692 1.79433 0
+-4.34886 1.23369 0
+-3.98447 -0.270819 0
+-3.59573 -2.15609 0
+-3.30103 -3.66721 0
+-3.2022 -4.12811 0
+-3.37069 -3.20172 0
+-3.84052 -1.0362 0
+-4.60405 1.76817 0
+-5.60973 4.36639 0
+-6.76401 5.97257 0
+-7.94105 6.13861 0
+-9.00189 4.89433 0
+-9.81976 2.69563 0
+-10.3052 0.214101 0
+-10.4243 -1.92889 0
+-10.2038 -3.3643 0
+-9.72324 -4.03423 0
+-9.0969 -4.10412 0
+-8.45194 -3.79783 0
+-7.90892 -3.2554 0
+-7.5662 -2.48798 0
+-7.48781 -1.44147 0
+-7.69489 -0.116812 0
+-8.16285 1.33879 0
+-8.82566 2.63834 0
+-9.58607 3.46689 0
+-10.3288 3.63847 0
+-10.9334 3.2059 0
+-11.285 2.45484 0
+-11.2843 1.77764 0
+-10.8583 1.48988 0
+-9.97484 1.6833 0
+-8.65825 2.18795 0
+-7.00208 2.66123 0
+-5.16829 2.75878 0
+-3.36592 2.30188 0
+-1.80875 1.36047 0
+-0.662838 0.217218 0
+-0.00203512 -0.762943 0
+0.21077 -1.29279 0
+0.10652 -1.27983 0
+-0.141918 -0.853498 0
+-0.392694 -0.302616 0
+-0.549059 -0.00455906 0
+-0.609367 0.00213618 0
+-0.645915 -0.000139614 0
+-0.686379 -0.00250775 0
+-0.756642 -0.017275 0
+-0.849603 -0.133289 0
+-0.415929 -0.994294 0
+0.407147 -1.66284 0
+1.35869 -2.22342 0
+2.05206 -2.77322 0
+2.12902 -3.44085 0
+1.3892 -4.25965 0
+-0.147273 -5.08374 0
+-2.25282 -5.62151 0
+-4.56703 -5.58092 0
+-6.7016 -4.85207 0
+-8.33932 -3.62229 0
+-9.29917 -2.34543 0
+-9.55452 -1.56108 0
+-9.20885 -1.64095 0
+-8.44434 -2.58613 0
+-7.46369 -3.98192 0
+-6.44244 -5.14293 0
+-5.50249 -5.38724 0
+-4.70963 -4.31443 0
+-4.0908 -1.96258 0
+-3.66125 1.21857 0
+-3.44873 4.55131 0
+-3.50285 7.37342 0
+-3.88339 9.22915 0
+-4.63033 9.93724 0
+-5.72712 9.53742 0
+-7.07343 8.17826 0
+-8.48231 6.02834 0
+-9.70843 3.26165 0
+-10.503 0.109725 0
+-10.6789 -3.07546 0
+-10.1666 -5.81501 0
+-9.04135 -7.58844 0
+-7.51517 -7.99127 0
+-5.89399 -6.89883 0
+-4.5117 -4.55767 0
+-3.65545 -1.55204 0
+-3.49893 1.35593 0
+-4.058 3.46021 0
+-5.17974 4.33344 0
+-6.57031 3.95434 0
+-7.85932 2.69126 0
+-8.68867 1.14752 0
+-8.80445 -0.0723285 0
+-8.12594 -0.584707 0
+-6.77021 -0.351263 0
+-5.02207 0.340942 0
+-3.25585 1.03153 0
+-1.83224 1.30618 0
+-1.00276 0.987549 0
+-0.852032 0.210974 0
+-1.29398 -0.650913 0
+-2.11812 -1.17929 0
+-3.06515 -1.12331 0
+-3.90324 -0.531197 0
+-4.48075 0.268362 0
+-4.74352 0.827003 0
+-2.50318 0.804245 0
+-1.28409 0.296864 0
+-1.28409 0.1528 0
+-1.94558 -0.160403 0
+-3.7989 -0.286933 0
+-7.42238 -0.487829 0
+-7.20907 -0.773703 0
+-6.82619 -1.0699 0
+-6.26075 -1.39041 0
+-5.56061 -1.86485 0
+-4.83266 -2.58457 0
+-4.21669 -3.48122 0
+-3.8402 -4.30348 0
+-3.77049 -4.7054 0
+-3.98441 -4.4042 0
+-4.37048 -3.33237 0
+-4.76538 -1.71156 0
+-5.01096 -0.00808736 0
+-5.00918 1.22132 0
+-4.75314 1.5383 0
+-4.32367 0.80422 0
+-3.85543 -0.739058 0
+-3.49016 -2.52135 0
+-3.33726 -3.82011 0
+-3.45454 -4.01083 0
+-3.85063 -2.80563 0
+-4.50059 -0.386236 0
+-5.36255 2.63013 0
+-6.38614 5.38998 0
+-7.51112 7.09755 0
+-8.66165 7.28914 0
+-9.74446 5.97714 0
+-10.6566 3.60774 0
+-11.3026 0.86011 0
+-11.6168 -1.61472 0
+-11.5821 -3.39897 0
+-11.2389 -4.37741 0
+-10.6797 -4.66333 0
+-10.032 -4.44552 0
+-9.43452 -3.85289 0
+-9.0119 -2.9106 0
+-8.85313 -1.60024 0
+-8.99746 0.0275252 0
+-9.43078 1.77212 0
+-10.0917 3.29923 0
+-10.8831 4.25836 0
+-11.6851 4.44044 0
+-12.3649 3.88573 0
+-12.7868 2.87667 0
+-12.8233 1.81417 0
+-12.3733 1.03989 0
+-11.385 0.695009 0
+-9.88062 0.683545 0
+-7.97203 0.75265 0
+-5.85636 0.643109 0
+-3.7839 0.229424 0
+-2.00307 -0.420363 0
+-0.697841 -1.08801 0
+0.0605415 -1.52132 0
+0.329067 -1.56132 0
+0.269275 -1.22004 0
+0.0929142 -0.677137 0
+-0.0104612 -0.199241 0
+-0.0123264 -0.00269384 0
+-0.0104511 0.00026084 0
+-0.0106359 4.52048e-05 0
+-0.0128483 -0.000295323 0
+-0.0272729 -0.00285046 0
+-0.123295 -0.0372672 0
+-0.0668157 -1.05077 0
+0.501708 -2.23136 0
+1.284 -3.00571 0
+1.83594 -3.32516 0
+1.75852 -3.36343 0
+0.823689 -3.32482 0
+-0.961742 -3.29831 0
+-3.36636 -3.21689 0
+-6.00925 -2.93803 0
+-8.47054 -2.39078 0
+-10.3999 -1.69294 0
+-11.591 -1.15435 0
+-12.0058 -1.14626 0
+-11.7508 -1.89593 0
+-11.0214 -3.31555 0
+-10.0376 -4.96575 0
+-8.99161 -6.18888 0
+-8.02015 -6.3587 0
+-7.20241 -5.13216 0
+-6.57822 -2.58677 0
+-6.17332 0.813676 0
+-6.01904 4.39702 0
+-6.1566 7.51098 0
+-6.62353 9.69608 0
+-7.42745 10.7412 0
+-8.51884 10.6288 0
+-9.77609 9.43552 0
+-11.0123 7.26455 0
+-12.0058 4.25518 0
+-12.5477 0.651583 0
+-12.4923 -3.13085 0
+-11.7971 -6.51023 0
+-10.5401 -8.84538 0
+-8.91228 -9.61914 0
+-7.18557 -8.62554 0
+-5.66445 -6.07878 0
+-4.62691 -2.58958 0
+-4.26545 0.994467 0
+-4.63872 3.83349 0
+-5.64605 5.34077 0
+-7.03566 5.34395 0
+-8.45203 4.10762 0
+-9.51688 2.21237 0
+-9.92551 0.336303 0
+-9.53071 -0.979505 0
+-8.3873 -1.49467 0
+-6.74054 -1.30582 0
+-4.9582 -0.750811 0
+-3.4259 -0.226123 0
+-2.43958 0.00123795 0
+-2.13071 -0.0978969 0
+-2.44685 -0.334771 0
+-3.1895 -0.436641 0
+-4.09025 -0.222563 0
+-4.89521 0.273764 0
+-5.42917 0.802322 0
+-5.62364 1.02147 0
+-2.9267 0.691495 0
+-1.47082 0.129727 0
+-1.47082 0.0412621 0
+-1.95662 -0.169732 0
+-3.85275 -0.314234 0
+-7.59361 -0.557056 0
+-7.43266 -0.934647 0
+-7.12451 -1.37805 0
+-6.65355 -1.86137 0
+-6.06204 -2.45635 0
+-5.44732 -3.19929 0
+-4.93394 -3.9946 0
+-4.6288 -4.60862 0
+-4.577 -4.7572 0
+-4.73825 -4.24294 0
+-4.9965 -3.07412 0
+-5.20125 -1.5068 0
+-5.22486 0.0155216 0
+-5.01173 1.00819 0
+-4.5991 1.12567 0
+-4.10134 0.306466 0
+-3.66621 -1.17419 0
+-3.423 -2.76456 0
+-3.44436 -3.79875 0
+-3.73504 -3.72015 0
+-4.24785 -2.29282 0
+-4.91512 0.281038 0
+-5.67848 3.39349 0
+-6.50331 6.21481 0
+-7.37361 7.96786 0
+-8.27345 8.18898 0
+-9.16764 6.87133 0
+-9.99359 4.43369 0
+-10.6698 1.53629 0
+-11.118 -1.16651 0
+-11.2903 -3.22668 0
+-11.1891 -4.47858 0
+-10.8724 -4.98003 0
+-10.4417 -4.8762 0
+-10.0181 -4.27652 0
+-9.71362 -3.21505 0
+-9.60747 -1.70639 0
+-9.73237 0.152431 0
+-10.0745 2.11421 0
+-10.583 3.80773 0
+-11.1829 4.85832 0
+-11.7848 5.04234 0
+-12.2888 4.38973 0
+-12.5868 3.17468 0
+-12.5687 1.79602 0
+-12.1373 0.608512 0
+-11.2331 -0.20912 0
+-9.8617 -0.687907 0
+-8.11218 -0.996865 0
+-6.15554 -1.31353 0
+-4.21491 -1.7112 0
+-2.51404 -2.12124 0
+-1.21962 -2.38243 0
+-0.39864 -2.3423 0
+-0.00713215 -1.95282 0
+0.0850926 -1.31226 0
+0.0427357 -0.63478 0
+0.00105199 -0.157557 0
+-0.000465519 -0.00117633 0
+-0.000246834 4.21765e-05 0
+-0.000210153 8.58191e-06 0
+-0.000458926 -4.65701e-05 0
+-0.00260468 -0.000704711 0
+-0.0179224 -0.0219495 0
+-0.00454582 -1.06415 0
+0.258179 -2.49408 0
+0.634302 -3.38184 0
+0.805243 -3.49609 0
+0.462117 -3.0203 0
+-0.571707 -2.29099 0
+-2.28329 -1.58672 0
+-4.47742 -1.02276 0
+-6.83849 -0.576964 0
+-9.0222 -0.207062 0
+-10.7455 0.0303912 0
+-11.8472 -0.052695 0
+-12.3048 -0.688623 0
+-12.2116 -1.98915 0
+-11.7277 -3.79949 0
+-11.027 -5.6664 0
+-10.2576 -6.95824 0
+-9.52366 -7.09268 0
+-8.88857 -5.76725 0
+-8.3912 -3.08414 0
+-8.06268 0.485159 0
+-7.93534 4.26968 0
+-8.03928 7.61493 0
+-8.38897 10.0458 0
+-8.96639 11.3186 0
+-9.70934 11.3718 0
+-10.5115 10.2376 0
+-11.2361 7.98915 0
+-11.7406 4.75974 0
+-11.905 0.815969 0
+-11.6558 -3.38003 0
+-10.9817 -7.18439 0
+-9.93761 -9.88942 0
+-8.64085 -10.9159 0
+-7.25882 -10.0076 0
+-5.98964 -7.34796 0
+-5.03319 -3.54603 0
+-4.55334 0.514618 0
+-4.6366 3.91675 0
+-5.25803 5.96219 0
+-6.2686 6.35453 0
+-7.41573 5.25475 0
+-8.39861 3.19524 0
+-8.9465 0.884202 0
+-8.89634 -1.02967 0
+-8.24349 -2.14752 0
+-7.14683 -2.40248 0
+-5.88253 -2.01511 0
+-4.76006 -1.34859 0
+-4.02932 -0.729506 0
+-3.81139 -0.315825 0
+-4.0757 -0.0704623 0
+-4.66766 0.155317 0
+-5.3719 0.481684 0
+-5.98468 0.886546 0
+-6.36926 1.1869 0
+-6.47928 1.13149 0
+-3.31695 0.563581 0
+-1.65434 -0.0271353 0
+-1.65434 -0.0594892 0
+-1.89667 -0.162822 0
+-3.76304 -0.311086 0
+-7.47578 -0.571076 0
+-7.41158 -0.998846 0
+-7.25003 -1.5396 0
+-6.96428 -2.1471 0
+-6.56908 -2.85155 0
+-6.12291 -3.64545 0
+-5.70838 -4.40914 0
+-5.39819 -4.9188 0
+-5.22217 -4.93322 0
+-5.15111 -4.314 0
+-5.10688 -3.11835 0
+-4.99606 -1.61762 0
+-4.753 -0.227537 0
+-4.37301 0.628208 0
+-3.92009 0.672748 0
+-3.50532 -0.1083 0
+-3.24557 -1.43394 0
+-3.22013 -2.79 0
+-3.44335 -3.57553 0
+-3.86418 -3.29932 0
+-4.39168 -1.76531 0
+-4.93415 0.823511 0
+-5.43387 3.89321 0
+-5.88276 6.6637 0
+-6.31355 8.39865 0
+-6.77254 8.64798 0
+-7.28797 7.38676 0
+-7.84933 4.99505 0
+-8.40683 2.09379 0
+-8.89011 -0.68322 0
+-9.23705 -2.87974 0
+-9.41933 -4.2963 0
+-9.45382 -4.94554 0
+-9.39582 -4.9342 0
+-9.31823 -4.35411 0
+-9.28618 -3.24709 0
+-9.33742 -1.65515 0
+-9.47555 0.290555 0
+-9.67694 2.31561 0
+-9.90561 4.0364 0
+-10.1266 5.07936 0
+-10.311 5.22667 0
+-10.4299 4.50868 0
+-10.4452 3.18997 0
+-10.3029 1.6537 0
+-9.93877 0.244373 0
+-9.2964 -0.851482 0
+-8.35257 -1.63174 0
+-7.13877 -2.21066 0
+-5.74723 -2.70507 0
+-4.31482 -3.1436 0
+-2.98882 -3.44724 0
+-1.88696 -3.4843 0
+-1.06817 -3.16108 0
+-0.526364 -2.49463 0
+-0.209389 -1.62924 0
+-0.0522492 -0.791919 0
+-0.000890373 -0.208916 0
+-7.74771e-05 -0.00198923 0
+-1.58367e-05 -1.93346e-05 0
+-7.55492e-06 4.29704e-07 0
+-3.9889e-05 -1.43745e-05 0
+-0.000345195 -0.000399513 0
+-0.00326477 -0.0190299 0
+-0.0585496 -1.00886 0
+-0.142874 -2.40976 0
+-0.29862 -3.22609 0
+-0.641406 -3.15331 0
+-1.28879 -2.37291 0
+-2.29689 -1.28289 0
+-3.62795 -0.255662 0
+-5.15494 0.504233 0
+-6.69776 0.965854 0
+-8.07556 1.17075 0
+-9.15504 1.10987 0
+-9.87777 0.670043 0
+-10.26 -0.306439 0
+-10.3693 -1.87984 0
+-10.2921 -3.87669 0
+-10.105 -5.85344 0
+-9.86087 -7.2024 0
+-9.59007 -7.36348 0
+-9.31292 -6.0444 0
+-9.0521 -3.34496 0
+-8.83752 0.270577 0
+-8.70053 4.1327 0
+-8.66122 7.57561 0
+-8.71622 10.1008 0
+-8.83438 11.4367 0
+-8.96319 11.5006 0
+-9.04398 10.3184 0
+-9.02935 7.97452 0
+-8.89501 4.6254 0
+-8.64101 0.561974 0
+-8.28267 -3.73837 0
+-7.8371 -7.62996 0
+-7.31387 -10.4126 0
+-6.71662 -11.5132 0
+-6.05597 -10.6682 0
+-5.36659 -8.03734 0
+-4.71699 -4.19562 0
+-4.20287 0.000493167 0
+-3.92188 3.63576 0
+-3.9377 5.97801 0
+-4.24803 6.66486 0
+-4.77245 5.77918 0
+-5.36894 3.79173 0
+-5.87568 1.39094 0
+-6.16364 -0.741709 0
+-6.18036 -2.13081 0
+-5.96768 -2.61516 0
+-5.64495 -2.33784 0
+-5.36336 -1.63018 0
+-5.24999 -0.84288 0
+-5.36398 -0.201832 0
+-5.68152 0.247075 0
+-6.11315 0.586944 0
+-6.54354 0.912083 0
+-6.87539 1.21839 0
+-7.05909 1.3706 0
+-7.09839 1.17079 0
+-3.58398 0.498828 0
+-1.79431 -0.10206 0
+-1.79431 -0.108704 0
+-1.75693 -0.14177 0
+-3.50258 -0.279342 0
+-6.99543 -0.529727 0
+-7.03364 -0.960637 0
+-7.03354 -1.53969 0
+-6.95567 -2.22498 0
+-6.77924 -3.02798 0
+-6.51151 -3.91317 0
+-6.18134 -4.7393 0
+-5.82198 -5.27816 0
+-5.45335 -5.30185 0
+-5.07374 -4.69361 0
+-4.66608 -3.526 0
+-4.21619 -2.06751 0
+-3.7336 -0.710128 0
+-3.26323 0.157842 0
+-2.87986 0.289379 0
+-2.66576 -0.322401 0
+-2.68022 -1.41948 0
+-2.93292 -2.53729 0
+-3.37254 -3.13591 0
+-3.89744 -2.77442 0
+-4.38654 -1.27621 0
+-4.73919 1.17617 0
+-4.90867 4.06269 0
+-4.91574 6.67078 0
+-4.83716 8.32007 0
+-4.77402 8.58484 0
+-4.81331 7.42605 0
+-4.99861 5.18036 0
+-5.32124 2.41642 0
+-5.73295 -0.271513 0
+-6.17192 -2.44076 0
+-6.58887 -3.87935 0
+-6.96145 -4.57296 0
+-7.292 -4.60365 0
+-7.59218 -4.05393 0
+-7.86444 -2.97483 0
+-8.09101 -1.42858 0
+-8.23667 0.436222 0
+-8.2643 2.34324 0
+-8.15485 3.92695 0
+-7.92084 4.84535 0
+-7.60535 4.91118 0
+-7.26612 4.16946 0
+-6.9519 2.87576 0
+-6.68214 1.38394 0
+-6.43924 0.00147489 0
+-6.17664 -1.11408 0
+-5.83884 -1.96953 0
+-5.38446 -2.66504 0
+-4.80195 -3.28759 0
+-4.11197 -3.83357 0
+-3.35733 -4.20188 0
+-2.58727 -4.25435 0
+-1.84553 -3.90282 0
+-1.16894 -3.17122 0
+-0.597826 -2.20036 0
+-0.189436 -1.20031 0
+-0.00506347 -0.393289 0
+-0.000326987 -0.00672571 0
+-2.7619e-05 -0.000318572 0
+-1.39667e-06 -2.56569e-05 0
+-3.53097e-06 -1.23719e-05 0
+-5.88875e-05 -0.000344258 0
+-0.00268454 -0.0164043 0
+-0.182962 -0.828587 0
+-0.663808 -1.92891 0
+-1.39573 -2.49417 0
+-2.27099 -2.27805 0
+-3.18397 -1.45993 0
+-4.04787 -0.418986 0
+-4.79776 0.494234 0
+-5.39362 1.1001 0
+-5.82541 1.39764 0
+-6.11628 1.46162 0
+-6.31879 1.31238 0
+-6.50118 0.852427 0
+-6.72595 -0.0816587 0
+-7.02843 -1.57736 0
+-7.40411 -3.50101 0
+-7.81088 -5.44666 0
+-8.18566 -6.82762 0
+-8.46895 -7.08019 0
+-8.62652 -5.88682 0
+-8.6581 -3.31338 0
+-8.5888 0.20128 0
+-8.44798 3.99187 0
+-8.24713 7.37476 0
+-7.9696 9.82324 0
+-7.57894 11.0461 0
+-7.04306 10.9647 0
+-6.36299 9.63836 0
+-5.59163 7.20315 0
+-4.83085 3.86463 0
+-4.20455 -0.064323 0
+-3.81602 -4.1269 0
+-3.70666 -7.73933 0
+-3.83381 -10.2855 0
+-4.07868 -11.2683 0
+-4.28332 -10.4636 0
+-4.30362 -8.01704 0
+-4.05843 -4.44081 0
+-3.55654 -0.501397 0
+-2.89261 2.97184 0
+-2.21493 5.30033 0
+-1.67837 6.12829 0
+-1.40019 5.501 0
+-1.43333 3.82487 0
+-1.76335 1.72096 0
+-2.32586 -0.179197 0
+-3.03457 -1.4221 0
+-3.80745 -1.84228 0
+-4.58136 -1.56393 0
+-5.31286 -0.898687 0
+-5.97018 -0.185557 0
+-6.5252 0.353187 0
+-6.9521 0.673972 0
+-7.23439 0.869235 0
+-7.37595 1.05364 0
+-7.40829 1.25072 0
+-7.38695 1.34926 0
+-7.37442 1.15827 0
+-3.68815 0.53707 0
+-1.86546 -0.0612871 0
+-1.86546 -0.0870394 0
+-1.56081 -0.11421 0
+-3.11308 -0.231727 0
+-6.2254 -0.453282 0
+-6.33519 -0.850852 0
+-6.45678 -1.41809 0
+-6.54502 -2.13674 0
+-6.55218 -3.02082 0
+-6.44192 -4.02342 0
+-6.19469 -4.98653 0
+-5.80711 -5.66573 0
+-5.28976 -5.8192 0
+-4.6668 -5.31656 0
+-3.97836 -4.21444 0
+-3.28311 -2.76276 0
+-2.65699 -1.33625 0
+-2.18436 -0.31479 0
+-1.94118 0.0462018 0
+-1.97445 -0.289133 0
+-2.28452 -1.1094 0
+-2.81604 -2.00577 0
+-3.46189 -2.49007 0
+-4.08281 -2.1535 0
+-4.53999 -0.819027 0
+-4.73191 1.36808 0
+-4.62356 3.95434 0
+-4.25733 6.30455 0
+-3.74045 7.80319 0
+-3.21264 8.05703 0
+-2.80529 7.0187 0
+-2.60706 4.98213 0
+-2.64812 2.45749 0
+-2.90615 -0.0134869 0
+-3.3274 -2.01951 0
+-3.85102 -3.35573 0
+-4.42482 -3.99915 0
+-5.007 -4.02147 0
+-5.55664 -3.50429 0
+-6.02255 -2.50891 0
+-6.34064 -1.11049 0
+-6.44507 0.540657 0
+-6.2904 2.18857 0
+-5.87476 3.51131 0
+-5.25217 4.22277 0
+-4.52645 4.18545 0
+-3.82689 3.4699 0
+-3.27451 2.32338 0
+-2.95073 1.06016 0
+-2.87903 -0.0702194 0
+-3.02386 -0.969253 0
+-3.30441 -1.68899 0
+-3.61653 -2.35292 0
+-3.85529 -3.04882 0
+-3.9331 -3.75576 0
+-3.79183 -4.34315 0
+-3.41 -4.63618 0
+-2.80646 -4.50636 0
+-2.04162 -3.93605 0
+-1.21754 -3.02444 0
+-0.481536 -1.93632 0
+-0.0331006 -0.841724 0
+-0.00377165 -0.0360547 0
+-0.000588706 -0.0035015 0
+-0.000248234 -0.000366079 0
+-0.000376308 0.000115679 0
+-0.00163009 0.000909522 0
+-0.0141063 -0.00392809 0
+-0.433969 -0.408724 0
+-1.38991 -0.972965 0
+-2.68188 -1.20219 0
+-4.00881 -0.951119 0
+-5.09002 -0.378723 0
+-5.73249 0.223491 0
+-5.86332 0.625065 0
+-5.53243 0.769202 0
+-4.88975 0.754955 0
+-4.14392 0.715787 0
+-3.51188 0.680343 0
+-3.16974 0.510286 0
+-3.21519 -0.0362059 0
+-3.65016 -1.14239 0
+-4.38814 -2.76303 0
+-5.28393 -4.55087 0
+-6.1767 -5.93485 0
+-6.93293 -6.32396 0
+-7.47489 -5.34487 0
+-7.78467 -3.0036 0
+-7.88382 0.300423 0
+-7.79928 3.90734 0
+-7.53398 7.10946 0
+-7.0584 9.34766 0
+-6.32957 10.3172 0
+-5.32956 9.96468 0
+-4.10496 8.41377 0
+-2.78673 5.88492 0
+-1.57576 2.65366 0
+-0.693901 -0.946185 0
+-0.315086 -4.50571 0
+-0.502103 -7.55231 0
+-1.17381 -9.61378 0
+-2.11692 -10.3252 0
+-3.04023 -9.54028 0
+-3.65445 -7.40282 0
+-3.75199 -4.34328 0
+-3.26235 -0.991034 0
+-2.26821 1.97769 0
+-0.98044 4.01256 0
+0.31755 4.8303 0
+1.33881 4.47975 0
+1.85657 3.30711 0
+1.74831 1.82922 0
+1.01235 0.556758 0
+-0.242729 -0.167015 0
+-1.82935 -0.255661 0
+-3.52316 0.129879 0
+-5.10659 0.684748 0
+-6.40583 1.11369 0
+-7.31601 1.26336 0
+-7.81211 1.17007 0
+-7.94522 1.00234 0
+-7.82569 0.934118 0
+-7.59623 1.02127 0
+-7.39894 1.15196 0
+-7.34083 1.10016 0
+-3.65469 0.658471 0
+-1.86884 0.0758157 0
+-1.86884 -0.0042831 0
+-1.35433 -0.0900119 0
+-2.68769 -0.186203 0
+-5.35325 -0.373102 0
+-5.4824 -0.721702 0
+-5.65248 -1.24801 0
+-5.82539 -1.96383 0
+-5.94752 -2.89869 0
+-5.96216 -4.00878 0
+-5.82024 -5.12844 0
+-5.49063 -5.99534 0
+-4.97001 -6.33982 0
+-4.29053 -5.99604 0
+-3.52178 -4.98319 0
+-2.76426 -3.52028 0
+-2.13339 -1.96711 0
+-1.73672 -0.711462 0
+-1.64946 -0.0410531 0
+-1.89531 -0.0432826 0
+-2.43746 -0.567254 0
+-3.18116 -1.26207 0
+-3.98757 -1.68366 0
+-4.69803 -1.44304 0
+-5.16596 -0.351091 0
+-5.29006 1.49218 0
+-5.03996 3.70425 0
+-4.4659 5.73049 0
+-3.68723 7.02452 0
+-2.86178 7.23158 0
+-2.14518 6.3021 0
+-1.6539 4.49085 0
+-1.44454 2.24812 0
+-1.5141 0.0560734 0
+-1.8169 -1.71671 0
+-2.28729 -2.88535 0
+-2.85676 -3.42968 0
+-3.45929 -3.41895 0
+-4.0267 -2.93688 0
+-4.48252 -2.05309 0
+-4.74404 -0.848969 0
+-4.73718 0.533801 0
+-4.42049 1.87189 0
+-3.80784 2.89866 0
+-2.97832 3.39324 0
+-2.06649 3.27362 0
+-1.23461 2.63802 0
+-0.635574 1.72434 0
+-0.378579 0.80317 0
+-0.507098 0.0583 0
+-0.993117 -0.483234 0
+-1.74568 -0.936429 0
+-2.62886 -1.46974 0
+-3.48477 -2.19291 0
+-4.15867 -3.08186 0
+-4.5242 -3.97762 0
+-4.50572 -4.65466 0
+-4.09315 -4.91893 0
+-3.34346 -4.68574 0
+-2.36488 -4.00301 0
+-1.28939 -3.01181 0
+-0.294626 -1.83649 0
+-0.0553148 -0.275366 0
+-0.0210132 -0.037803 0
+-0.0160228 -0.0053565 0
+-0.0186119 0.00270476 0
+-0.0403472 0.0226448 0
+-0.181659 0.137383 0
+-1.12908 0.538693 0
+-2.59624 0.4942 0
+-4.29687 0.498435 0
+-5.86667 0.618687 0
+-6.96002 0.714626 0
+-7.3489 0.612375 0
+-6.97897 0.255129 0
+-5.97325 -0.236513 0
+-4.59056 -0.62773 0
+-3.15513 -0.719643 0
+-1.97804 -0.496746 0
+-1.28952 -0.178233 0
+-1.19632 -0.129408 0
+-1.67177 -0.666942 0
+-2.57826 -1.85653 0
+-3.71394 -3.4152 0
+-4.86949 -4.7793 0
+-5.87877 -5.31467 0
+-6.64811 -4.57553 0
+-7.15561 -2.49609 0
+-7.42308 0.567887 0
+-7.47474 3.959 0
+-7.30417 6.93889 0
+-6.86751 8.91101 0
+-6.10892 9.55865 0
+-5.00736 8.86312 0
+-3.6229 7.02931 0
+-2.11844 4.38046 0
+-0.740952 1.27617 0
+0.237871 -1.92501 0
+0.603711 -4.87155 0
+0.275149 -7.22375 0
+-0.65627 -8.68236 0
+-1.93747 -9.04398 0
+-3.21442 -8.26333 0
+-4.12363 -6.49362 0
+-4.38727 -4.07963 0
+-3.88509 -1.49321 0
+-2.68463 0.777234 0
+-1.02445 2.35238 0
+0.742941 3.06291 0
+2.23264 2.99004 0
+3.11349 2.42627 0
+3.17868 1.76403 0
+2.38553 1.3499 0
+0.857197 1.36132 0
+-1.15165 1.75318 0
+-3.31601 2.29424 0
+-5.31324 2.68198 0
+-6.88933 2.68978 0
+-7.90396 2.27799 0
+-8.34562 1.61173 0
+-8.31648 0.973205 0
+-7.99421 0.611848 0
+-7.58244 0.609494 0
+-7.26202 0.831543 0
+-7.15239 0.99054 0
+-3.56459 0.793396 0
+-1.83418 0.244719 0
+-1.83418 0.103867 0
+-1.18824 -0.0773278 0
+-2.33456 -0.158723 0
+-4.6076 -0.318869 0
+-4.70409 -0.625215 0
+-4.84676 -1.10534 0
+-5.01802 -1.79256 0
+-5.18302 -2.73369 0
+-5.29378 -3.89802 0
+-5.29645 -5.12577 0
+-5.1439 -6.14789 0
+-4.81222 -6.6715 0
+-4.31578 -6.49248 0
+-3.71422 -5.58474 0
+-3.10657 -4.12793 0
+-2.61216 -2.46152 0
+-2.34331 -0.980314 0
+-2.37765 -0.00671167 0
+-2.73798 0.317047 0
+-3.38438 0.0791405 0
+-4.21898 -0.427464 0
+-5.10147 -0.801167 0
+-5.87321 -0.671295 0
+-6.38733 0.163036 0
+-6.53999 1.64484 0
+-6.29553 3.45979 0
+-5.69759 5.13255 0
+-4.86048 6.18741 0
+-3.94112 6.31223 0
+-3.09932 5.46031 0
+-2.45966 3.85119 0
+-2.08784 1.8763 0
+-1.98772 -0.044048 0
+-2.11618 -1.58825 0
+-2.40602 -2.59551 0
+-2.78533 -3.05037 0
+-3.18616 -3.01812 0
+-3.54291 -2.58013 0
+-3.78778 -1.80821 0
+-3.8525 -0.784249 0
+-3.68098 0.362281 0
+-3.24961 1.44051 0
+-2.58546 2.23451 0
+-1.77236 2.58015 0
+-0.939631 2.44089 0
+-0.236031 1.93442 0
+0.202458 1.28585 0
+0.280935 0.724693 0
+-0.0372501 0.376485 0
+-0.726144 0.20566 0
+-1.7029 0.0403234 0
+-2.83973 -0.332911 0
+-3.98031 -1.05232 0
+-4.96093 -2.10125 0
+-5.63625 -3.3023 0
+-5.90692 -4.38399 0
+-5.74224 -5.08362 0
+-5.1906 -5.23738 0
+-4.37426 -4.81935 0
+-3.47037 -3.9157 0
+-2.65566 -2.6512 0
+-1.7496 -1.18142 0
+-1.31645 -0.470953 0
+-1.17619 -0.145617 0
+-1.23928 0.0657936 0
+-1.54161 0.324976 0
+-2.19791 0.793684 0
+-3.1952 1.53599 0
+-4.67338 1.97238 0
+-6.33668 2.16173 0
+-7.79422 2.07623 0
+-8.69651 1.61692 0
+-8.8319 0.747759 0
+-8.17739 -0.399374 0
+-6.89386 -1.52005 0
+-5.27319 -2.2484 0
+-3.65838 -2.33445 0
+-2.3609 -1.79422 0
+-1.59603 -0.943098 0
+-1.44876 -0.27668 0
+-1.87382 -0.241883 0
+-2.72525 -1.0051 0
+-3.80489 -2.33556 0
+-4.91608 -3.66811 0
+-5.90865 -4.3221 0
+-6.70281 -3.78137 0
+-7.28509 -1.91381 0
+-7.67921 0.962001 0
+-7.9056 4.1854 0
+-7.94959 6.98288 0
+-7.75559 8.71701 0
+-7.25302 9.05608 0
+-6.40343 8.01354 0
+-5.24787 5.87374 0
+-3.93096 3.06355 0
+-2.68562 0.0308408 0
+-1.77702 -2.83361 0
+-1.42237 -5.2262 0
+-1.7151 -6.93102 0
+-2.58208 -7.81538 0
+-3.79062 -7.83544 0
+-5.00373 -7.05022 0
+-5.86681 -5.63053 0
+-6.10061 -3.84583 0
+-5.57472 -2.01911 0
+-4.34308 -0.454405 0
+-2.63393 0.643236 0
+-0.797866 1.22684 0
+0.772882 1.41929 0
+1.73439 1.46477 0
+1.86869 1.62973 0
+1.13027 2.08833 0
+-0.348852 2.84044 0
+-2.29563 3.69997 0
+-4.36501 4.36362 0
+-6.22238 4.53935 0
+-7.61703 4.08443 0
+-8.42784 3.0888 0
+-8.67194 1.85583 0
+-8.47847 0.779735 0
+-8.03945 0.172823 0
+-7.55434 0.124388 0
+-7.18353 0.460727 0
+-7.02049 0.827501 0
+-3.52329 0.858431 0
+-1.81023 0.363892 0
+-1.81023 0.189262 0
+-1.09872 -0.0794581 0
+-2.13571 -0.157108 0
+-4.17096 -0.307196 0
+-4.2029 -0.593272 0
+-4.26852 -1.03973 0
+-4.37916 -1.68192 0
+-4.5371 -2.57575 0
+-4.72679 -3.70832 0
+-4.91135 -4.94122 0
+-5.03927 -6.01997 0
+-5.06142 -6.64934 0
+-4.95219 -6.60171 0
+-4.72575 -5.81118 0
+-4.43998 -4.41371 0
+-4.18537 -2.71612 0
+-4.06251 -1.10318 0
+-4.15508 0.085867 0
+-4.50651 0.668477 0
+-5.10585 0.678478 0
+-5.88556 0.352243 0
+-6.73084 0.0441198 0
+-7.49948 0.0973401 0
+-8.04994 0.7135 0
+-8.27336 1.86827 0
+-8.12161 3.30804 0
+-7.62233 4.63327 0
+-6.87398 5.43906 0
+-6.02008 5.45833 0
+-5.21025 4.65048 0
+-4.56164 3.20257 0
+-4.13401 1.44868 0
+-3.92594 -0.252114 0
+-3.89006 -1.62413 0
+-3.95789 -2.52768 0
+-4.06225 -2.946 0
+-4.14877 -2.93159 0
+-4.17565 -2.55325 0
+-4.10791 -1.87595 0
+-3.91504 -0.977119 0
+-3.57711 0.0243523 0
+-3.09722 0.960625 0
+-2.51237 1.64966 0
+-1.89476 1.96254 0
+-1.34053 1.88667 0
+-0.949336 1.54322 0
+-0.802628 1.13914 0
+-0.948285 0.870351 0
+-1.39492 0.823116 0
+-2.11426 0.925 0
+-3.04699 0.973063 0
+-4.10811 0.728207 0
+-5.19163 0.0312 0
+-6.17848 -1.1144 0
+-6.95133 -2.52945 0
+-7.41657 -3.91875 0
+-7.52769 -4.9725 0
+-7.301 -5.46406 0
+-6.81437 -5.30598 0
+-6.17917 -4.5509 0
+-5.46919 -3.36118 0
+-4.63084 -2.01978 0
+-4.06233 -1.03946 0
+-3.83331 -0.374638 0
+-3.9311 0.163581 0
+-4.36052 0.7544 0
+-5.10032 1.53348 0
+-6.03195 2.46762 0
+-7.22146 3.1619 0
+-8.48268 3.42295 0
+-9.52058 3.11413 0
+-10.0701 2.16647 0
+-9.98778 0.665414 0
+-9.2892 -1.09795 0
+-8.13423 -2.67502 0
+-6.77294 -3.60968 0
+-5.47543 -3.63196 0
+-4.4679 -2.80176 0
+-3.89072 -1.52027 0
+-3.7842 -0.3832 0
+-4.09886 0.0727756 0
+-4.72238 -0.381582 0
+-5.51429 -1.54365 0
+-6.34077 -2.84163 0
+-7.10272 -3.56015 0
+-7.75048 -3.1336 0
+-8.2802 -1.38409 0
+-8.71242 1.39422 0
+-9.06142 4.5344 0
+-9.30981 7.23127 0
+-9.40244 8.80964 0
+-9.26565 8.91929 0
+-8.84559 7.59348 0
+-8.14936 5.17751 0
+-7.26969 2.18388 0
+-6.37838 -0.860468 0
+-5.68486 -3.52713 0
+-5.37178 -5.53928 0
+-5.53062 -6.77218 0
+-6.12197 -7.22403 0
+-6.97617 -6.98124 0
+-7.83457 -6.19183 0
+-8.41844 -5.04666 0
+-8.50494 -3.75932 0
+-7.98905 -2.535 0
+-6.91523 -1.52823 0
+-5.47108 -0.800908 0
+-3.94471 -0.299531 0
+-2.65614 0.130723 0
+-1.87999 0.68862 0
+-1.77937 1.52911 0
+-2.36849 2.67745 0
+-3.51338 3.98533 0
+-4.97013 5.15671 0
+-6.45026 5.84374 0
+-7.69397 5.78307 0
+-8.52921 4.91967 0
+-8.90026 3.45985 0
+-8.86107 1.81664 0
+-8.54023 0.4589 0
+-8.09293 -0.274477 0
+-7.65638 -0.312159 0
+-7.32127 0.125612 0
+-7.1251 0.631337 0
+-3.61634 0.800742 0
+-1.84449 0.371767 0
+-1.84449 0.210796 0
+-1.09369 -0.093671 0
+-2.11601 -0.178241 0
+-4.11085 -0.335701 0
+-4.07777 -0.626354 0
+-4.05997 -1.05753 0
+-4.09751 -1.64438 0
+-4.23465 -2.43861 0
+-4.49824 -3.44472 0
+-4.88034 -4.55912 0
+-5.33407 -5.56624 0
+-5.78614 -6.19727 0
+-6.16147 -6.22637 0
+-6.41007 -5.56258 0
+-6.52563 -4.29814 0
+-6.54951 -2.69224 0
+-6.55904 -1.09365 0
+-6.64437 0.171201 0
+-6.88093 0.905033 0
+-7.30503 1.10259 0
+-7.89907 0.946283 0
+-8.58984 0.734889 0
+-9.26167 0.769176 0
+-9.78298 1.23481 0
+-10.0408 2.12607 0
+-9.97366 3.24092 0
+-9.59177 4.25138 0
+-8.97538 4.82268 0
+-8.25086 4.73381 0
+-7.55209 3.95172 0
+-6.9817 2.63218 0
+-6.58608 1.05306 0
+-6.35212 -0.486073 0
+-6.22413 -1.75213 0
+-6.13123 -2.62057 0
+-6.01261 -3.06463 0
+-5.83098 -3.11322 0
+-5.57277 -2.81147 0
+-5.24025 -2.20846 0
+-4.84438 -1.37299 0
+-4.40341 -0.416617 0
+-3.94658 0.503791 0
+-3.517 1.22009 0
+-3.16823 1.61377 0
+-2.95328 1.67171 0
+-2.91066 1.50061 0
+-3.05466 1.28314 0
+-3.3747 1.19039 0
+-3.84365 1.29207 0
+-4.42986 1.5112 0
+-5.10557 1.64877 0
+-5.84675 1.4694 0
+-6.62485 0.809302 0
+-7.39703 -0.342228 0
+-8.10329 -1.82318 0
+-8.67518 -3.34687 0
+-9.05345 -4.59422 0
+-9.20637 -5.31115 0
+-9.13721 -5.37514 0
+-8.87282 -4.81529 0
+-8.43832 -3.79568 0
+-7.87177 -2.58632 0
+-7.41414 -1.4971 0
+-7.2036 -0.585177 0
+-7.2831 0.243089 0
+-7.64158 1.11288 0
+-8.20533 2.09723 0
+-8.85202 3.11431 0
+-9.55699 3.86687 0
+-10.2173 4.08325 0
+-10.6791 3.57597 0
+-10.816 2.30334 0
+-10.585 0.434368 0
+-10.0408 -1.64214 0
+-9.31153 -3.40427 0
+-8.5528 -4.36841 0
+-7.90189 -4.28287 0
+-7.44846 -3.25519 0
+-7.22741 -1.74132 0
+-7.22936 -0.381251 0
+-7.41799 0.2614 0
+-7.74494 -0.0546269 0
+-8.15893 -1.12966 0
+-8.61127 -2.3893 0
+-9.06152 -3.1099 0
+-9.48372 -2.7114 0
+-9.86928 -0.998525 0
+-10.2224 1.74736 0
+-10.5478 4.85976 0
+-10.8356 7.51909 0
+-11.0534 9.02743 0
+-11.1517 9.01758 0
+-11.0845 7.52628 0
+-10.8363 4.92936 0
+-10.4432 1.79072 0
+-9.9952 -1.30845 0
+-9.61617 -3.90616 0
+-9.42405 -5.7314 0
+-9.48729 -6.70894 0
+-9.79442 -6.91689 0
+-10.2497 -6.52594 0
+-10.6973 -5.7443 0
+-10.9654 -4.77854 0
+-10.9177 -3.80699 0
+-10.4952 -2.95756 0
+-9.73704 -2.28634 0
+-8.77511 -1.76283 0
+-7.80135 -1.27329 0
+-7.01776 -0.652863 0
+-6.58208 0.252939 0
+-6.56528 1.51231 0
+-6.93397 3.04614 0
+-7.56279 4.61415 0
+-8.27293 5.86686 0
+-8.88505 6.45586 0
+-9.26918 6.1672 0
+-9.37492 5.02541 0
+-9.2324 3.31733 0
+-8.92703 1.51127 0
+-8.56089 0.0927609 0
+-8.21661 -0.618759 0
+-7.93594 -0.592827 0
+-7.71793 -0.0923976 0
+-7.53491 0.44832 0
+-3.86758 0.628053 0
+-1.95879 0.256737 0
+-1.95879 0.153197 0
+-1.14947 -0.112344 0
+-2.23324 -0.209511 0
+-4.35361 -0.384523 0
+-4.28519 -0.694776 0
+-4.2205 -1.12222 0
+-4.21905 -1.64582 0
+-4.35693 -2.30073 0
+-4.69687 -3.10478 0
+-5.25938 -3.9966 0
+-6.00732 -4.8183 0
+-6.85109 -5.3535 0
+-7.67321 -5.40425 0
+-8.36311 -4.87269 0
+-8.84981 -3.81144 0
+-9.12189 -2.42016 0
+-9.22854 -0.986995 0
+-9.26211 0.204776 0
+-9.32749 0.970417 0
+-9.50778 1.28287 0
+-9.83631 1.27482 0
+-10.2835 1.18211 0
+-10.7632 1.24885 0
+-11.1576 1.62918 0
+-11.3546 2.32308 0
+-11.2853 3.17167 0
+-10.9482 3.91427 0
+-10.4102 4.28462 0
+-9.78384 4.1075 0
+-9.18968 3.35756 0
+-8.71728 2.15979 0
+-8.40093 0.736701 0
+-8.2172 -0.669796 0
+-8.10318 -1.86614 0
+-7.98522 -2.73852 0
+-7.80537 -3.24448 0
+-7.53571 -3.38287 0
+-7.1787 -3.16848 0
+-6.7585 -2.62867 0
+-6.31116 -1.82033 0
+-5.87853 -0.849239 0
+-5.50572 0.130974 0
+-5.23794 0.952312 0
+-5.11318 1.48901 0
+-5.15085 1.70939 0
+-5.34212 1.69188 0
+-5.64864 1.58966 0
+-6.01338 1.55513 0
+-6.38075 1.65944 0
+-6.71786 1.84832 0
+-7.02712 1.95804 0
+-7.34306 1.78533 0
+-7.71377 1.18002 0
+-8.17541 0.119409 0
+-8.73136 -1.26723 0
+-9.34557 -2.73265 0
+-9.95189 -3.9879 0
+-10.4736 -4.78943 0
+-10.8433 -5.00546 0
+-11.0155 -4.64311 0
+-10.9762 -3.83497 0
+-10.7695 -2.79297 0
+-10.5412 -1.72543 0
+-10.413 -0.713392 0
+-10.4386 0.268746 0
+-10.6044 1.2787 0
+-10.8357 2.32845 0
+-11.0333 3.31196 0
+-11.1541 3.98762 0
+-11.1668 4.096 0
+-11.0508 3.46001 0
+-10.8178 2.07029 0
+-10.5217 0.138282 0
+-10.2442 -1.91962 0
+-10.0622 -3.58629 0
+-10.0157 -4.41485 0
+-10.0939 -4.20476 0
+-10.2446 -3.10444 0
+-10.4042 -1.58169 0
+-10.529 -0.256467 0
+-10.6133 0.345697 0
+-10.6853 0.0173937 0
+-10.7852 -1.02978 0
+-10.9393 -2.23518 0
+-11.1452 -2.904 0
+-11.3741 -2.48255 0
+-11.5869 -0.78567 0
+-11.7541 1.91455 0
+-11.8667 4.97229 0
+-11.9343 7.58677 0
+-11.9737 9.06677 0
+-11.995 9.03884 0
+-11.9977 7.52898 0
+-11.9765 4.90825 0
+-11.9329 1.74708 0
+-11.8835 -1.35783 0
+-11.8606 -3.9291 0
+-11.9003 -5.69165 0
+-12.0251 -6.58415 0
+-12.2276 -6.71438 0
+-12.4658 -6.28779 0
+-12.6719 -5.53815 0
+-12.7737 -4.67674 0
+-12.7191 -3.86158 0
+-12.4967 -3.18 0
+-12.1433 -2.63975 0
+-11.7358 -2.17026 0
+-11.3683 -1.64083 0
+-11.1204 -0.900766 0
+-11.029 0.161556 0
+-11.0728 1.55611 0
+-11.1771 3.15046 0
+-11.2387 4.67569 0
+-11.1619 5.79011 0
+-10.8945 6.18842 0
+-10.4477 5.72038 0
+-9.89312 4.47087 0
+-9.33572 2.75993 0
+-8.87371 1.04926 0
+-8.5633 -0.217652 0
+-8.40191 -0.780147 0
+-8.33509 -0.659643 0
+-8.28169 -0.145802 0
+-8.1656 0.332236 0
+-4.21669 0.4073 0
+-2.1305 0.0659502 0
+-2.1305 0.0376157 0
+-1.21884 -0.125952 0
+-2.39246 -0.233843 0
+-4.70932 -0.4245 0
+-4.65256 -0.751542 0
+-4.60333 -1.17144 0
+-4.62561 -1.62354 0
+-4.80631 -2.12002 0
+-5.22479 -2.6863 0
+-5.91917 -3.30222 0
+-6.8632 -3.87427 0
+-7.96381 -4.25288 0
+-9.08182 -4.28624 0
+-10.069 -3.88555 0
+-10.8089 -3.07149 0
+-11.2487 -1.98031 0
+-11.411 -0.824766 0
+-11.3821 0.175888 0
+-11.2819 0.870284 0
+-11.2236 1.22456 0
+-11.2766 1.32782 0
+-11.4453 1.35082 0
+-11.67 1.47349 0
+-11.85 1.80916 0
+-11.882 2.35514 0
+-11.6996 2.98925 0
+-11.2989 3.51352 0
+-10.7413 3.72706 0
+-10.1324 3.49856 0
+-9.5847 2.80989 0
+-9.18095 1.75604 0
+-8.9503 0.506057 0
+-8.86644 -0.753655 0
+-8.86514 -1.86745 0
+-8.87172 -2.73194 0
+-8.8261 -3.2901 0
+-8.69652 -3.51245 0
+-8.48058 -3.38442 0
+-8.19824 -2.91101 0
+-7.88325 -2.13532 0
+-7.57707 -1.15542 0
+-7.32486 -0.121236 0
+-7.17008 0.797535 0
+-7.14473 1.46366 0
+-7.25666 1.82133 0
+-7.48008 1.9153 0
+-7.75656 1.86614 0
+-8.01037 1.80894 0
+-8.17474 1.82381 0
+-8.21942 1.893 0
+-8.16738 1.906 0
+-8.09205 1.71 0
+-8.09429 1.18226 0
+-8.2676 0.292722 0
+-8.66497 -0.869863 0
+-9.27987 -2.11775 0
+-10.0474 -3.22039 0
+-10.8631 -3.97372 0
+-11.6115 -4.25706 0
+-12.1952 -4.0594 0
+-12.5605 -3.46966 0
+-12.7182 -2.63528 0
+-12.7445 -1.6991 0
+-12.7193 -0.738586 0
+-12.6829 0.232312 0
+-12.6234 1.21918 0
+-12.4865 2.19156 0
+-12.2123 3.03776 0
+-11.7876 3.56297 0
+-11.2504 3.55871 0
+-10.6825 2.89215 0
+-10.1976 1.58545 0
+-9.91474 -0.14463 0
+-9.92016 -1.91419 0
+-10.2322 -3.27427 0
+-10.7851 -3.8619 0
+-11.445 -3.54489 0
+-12.0538 -2.49562 0
+-12.4859 -1.14955 0
+-12.6919 -0.0504871 0
+-12.7097 0.363506 0
+-12.6386 -0.0537701 0
+-12.5879 -1.08043 0
+-12.6264 -2.19675 0
+-12.753 -2.77738 0
+-12.9026 -2.33287 0
+-12.9804 -0.707883 0
+-12.9077 1.84177 0
+-12.6582 4.72279 0
+-12.2695 7.19811 0
+-11.8267 8.624 0
+-11.4294 8.64151 0
+-11.1588 7.25835 0
+-11.0582 4.80773 0
+-11.1303 1.81916 0
+-11.3462 -1.14194 0
+-11.6614 -3.61389 0
+-12.0295 -5.32352 0
+-12.41 -6.20374 0
+-12.7696 -6.35472 0
+-13.0824 -5.97501 0
+-13.3296 -5.29096 0
+-13.503 -4.50332 0
+-13.6092 -3.75538 0
+-13.671 -3.11817 0
+-13.7233 -2.58753 0
+-13.8009 -2.09265 0
+-13.9226 -1.51905 0
+-14.0756 -0.747854 0
+-14.2076 0.293554 0
+-14.2349 1.58341 0
+-14.0648 2.98039 0
+-13.6285 4.23942 0
+-12.9124 5.07403 0
+-11.9752 5.25115 0
+-10.941 4.68623 0
+-9.96843 3.49828 0
+-9.20257 1.99408 0
+-8.72959 0.576272 0
+-8.55095 -0.396285 0
+-8.58868 -0.742418 0
+-8.71864 -0.529687 0
+-8.81656 -0.0478799 0
+-8.79538 0.311051 0
+-4.52942 0.229575 0
+-2.29025 -0.11393 0
+-2.29025 -0.0820524 0
+-1.24733 -0.12675 0
+-2.47894 -0.236419 0
+-4.93804 -0.428848 0
+-4.93785 -0.751732 0
+-4.96541 -1.14388 0
+-5.07359 -1.51535 0
+-5.33659 -1.85702 0
+-5.82677 -2.19611 0
+-6.58435 -2.54463 0
+-7.59221 -2.86641 0
+-8.76758 -3.07751 0
+-9.97586 -3.07796 0
+-11.0633 -2.79809 0
+-11.8982 -2.23665 0
+-12.4062 -1.47231 0
+-12.5889 -0.642087 0
+-12.518 0.105083 0
+-12.3087 0.660906 0
+-12.0789 0.994839 0
+-11.9116 1.16053 0
+-11.8295 1.26866 0
+-11.793 1.43698 0
+-11.7213 1.73746 0
+-11.5281 2.16202 0
+-11.1595 2.62058 0
+-10.618 2.97207 0
+-9.96624 3.07529 0
+-9.30662 2.83894 0
+-8.74792 2.2512 0
+-8.37114 1.37926 0
+-8.20786 0.342776 0
+-8.23778 -0.723738 0
+-8.40338 -1.70184 0
+-8.63303 -2.50229 0
+-8.86183 -3.0613 0
+-9.04355 -3.33073 0
+-9.15283 -3.27514 0
+-9.18191 -2.88193 0
+-9.13696 -2.18026 0
+-9.03665 -1.25573 0
+-8.91147 -0.246423 0
+-8.79974 0.685814 0
+-8.73752 1.40144 0
+-8.74374 1.82755 0
+-8.80733 1.9789 0
+-8.88453 1.94334 0
+-8.91133 1.83574 0
+-8.82911 1.74159 0
+-8.61372 1.6776 0
+-8.29519 1.58748 0
+-7.95831 1.37311 0
+-7.72163 0.945585 0
+-7.70199 0.273082 0
+-7.9773 -0.594559 0
+-8.56115 -1.5339 0
+-9.39762 -2.38391 0
+-10.3768 -2.99459 0
+-11.3643 -3.26946 0
+-12.2364 -3.18736 0
+-12.9086 -2.7974 0
+-13.3532 -2.19075 0
+-13.5919 -1.46042 0
+-13.6614 -0.669012 0
+-13.582 0.152874 0
+-13.3448 0.981999 0
+-12.9219 1.76868 0
+-12.2964 2.41224 0
+-11.4994 2.76598 0
+-10.6236 2.68292 0
+-9.81316 2.0817 0
+-9.23327 1.00555 0
+-9.02489 -0.353003 0
+-9.25684 -1.68224 0
+-9.89353 -2.63758 0
+-10.795 -2.96042 0
+-11.755 -2.58493 0
+-12.5664 -1.68418 0
+-13.0907 -0.625298 0
+-13.3014 0.160243 0
+-13.2839 0.346044 0
+-13.1892 -0.148528 0
+-13.1619 -1.10767 0
+-13.2747 -2.08392 0
+-13.495 -2.55712 0
+-13.6981 -2.12976 0
+-13.7206 -0.685402 0
+-13.4297 1.5509 0
+-12.7807 4.07382 0
+-11.8391 6.25646 0
+-10.761 7.54588 0
+-9.74341 7.62395 0
+-8.96609 6.48103 0
+-8.54647 4.38811 0
+-8.51985 1.79255 0
+-8.84496 -0.816835 0
+-9.42798 -3.03087 0
+-10.1544 -4.59712 0
+-10.9176 -5.44054 0
+-11.6377 -5.6346 0
+-12.269 -5.34368 0
+-12.7986 -4.76141 0
+-13.2397 -4.06216 0
+-13.6234 -3.37169 0
+-13.9872 -2.75435 0
+-14.3625 -2.21229 0
+-14.7599 -1.69524 0
+-15.1573 -1.12168 0
+-15.4939 -0.411169 0
+-15.6773 0.476961 0
+-15.6037 1.50978 0
+-15.1901 2.56682 0
+-14.4087 3.45801 0
+-13.3103 3.97558 0
+-12.0259 3.96676 0
+-10.7413 3.40164 0
+-9.64895 2.40593 0
+-8.89267 1.23779 0
+-8.5253 0.208906 0
+-8.49679 -0.424794 0
+-8.67877 -0.560435 0
+-8.91678 -0.291679 0
+-9.088 0.123335 0
+-9.13674 0.359796 0
+-4.64311 0.157114 0
+-2.3432 -0.198987 0
+-2.3432 -0.139264 0
+-1.19206 -0.111781 0
+-2.39798 -0.210531 0
+-4.83333 -0.383963 0
+-4.91396 -0.671102 0
+-5.05196 -1.00587 0
+-5.27835 -1.28897 0
+-5.63717 -1.4982 0
+-6.17521 -1.65807 0
+-6.92126 -1.79858 0
+-7.86444 -1.92322 0
+-8.94263 -1.99932 0
+-10.0482 -1.97241 0
+-11.0512 -1.79505 0
+-11.8333 -1.45456 0
+-12.3198 -0.985831 0
+-12.4991 -0.462724 0
+-12.4223 0.0282277 0
+-12.1817 0.420297 0
+-11.8778 0.691027 0
+-11.5853 0.868019 0
+-11.3301 1.0134 0
+-11.0865 1.1934 0
+-10.7948 1.44578 0
+-10.3916 1.75883 0
+-9.84175 2.07073 0
+-9.15912 2.28944 0
+-8.40854 2.32471 0
+-7.68869 2.11909 0
+-7.10335 1.66586 0
+-6.73243 1.00834 0
+-6.6133 0.22365 0
+-6.7375 -0.599537 0
+-7.06088 -1.37846 0
+-7.5201 -2.04306 0
+-8.04766 -2.53374 0
+-8.58079 -2.7976 0
+-9.06472 -2.79121 0
+-9.45391 -2.49273 0
+-9.71501 -1.91916 0
+-9.83252 -1.13822 0
+-9.81412 -0.264814 0
+-9.69069 0.56238 0
+-9.50728 1.21804 0
+-9.30663 1.6269 0
+-9.1115 1.78377 0
+-8.91501 1.74684 0
+-8.6855 1.60624 0
+-8.38598 1.44207 0
+-8.00007 1.2917 0
+-7.5528 1.14021 0
+-7.11571 0.936024 0
+-6.79285 0.622727 0
+-6.69179 0.172017 0
+-6.89024 -0.396109 0
+-7.41051 -1.01363 0
+-8.21056 -1.58386 0
+-9.1941 -2.01104 0
+-10.2355 -2.22808 0
+-11.2105 -2.21237 0
+-12.0231 -1.98479 0
+-12.6196 -1.59417 0
+-12.9849 -1.09519 0
+-13.1223 -0.531581 0
+-13.0348 0.0653535 0
+-12.717 0.664164 0
+-12.1638 1.21556 0
+-11.3931 1.64152 0
+-10.4698 1.84264 0
+-9.51499 1.72815 0
+-8.69196 1.25867 0
+-8.1697 0.483291 0
+-8.07413 -0.44858 0
+-8.44253 -1.31384 0
+-9.20043 -1.87968 0
+-10.1744 -1.9865 0
+-11.1416 -1.61772 0
+-11.9018 -0.923913 0
+-12.3446 -0.182517 0
+-12.4839 0.299558 0
+-12.4444 0.306534 0
+-12.4023 -0.190616 0
+-12.5048 -1.00516 0
+-12.8008 -1.78796 0
+-13.2112 -2.14675 0
+-13.5517 -1.78918 0
+-13.5998 -0.637384 0
+-13.1786 1.1297 0
+-12.2275 3.12276 0
+-10.8311 4.86004 0
+-9.19829 5.91309 0
+-7.60281 6.02847 0
+-6.30817 5.18638 0
+-5.50422 3.58416 0
+-5.27234 1.56066 0
+-5.58381 -0.505357 0
+-6.32569 -2.28899 0
+-7.34158 -3.58124 0
+-8.47333 -4.30879 0
+-9.5925 -4.51543 0
+-10.6163 -4.31987 0
+-11.5092 -3.86855 0
+-12.2741 -3.29728 0
+-12.9383 -2.7074 0
+-13.5374 -2.15533 0
+-14.0974 -1.65225 0
+-14.6206 -1.17206 0
+-15.0749 -0.66736 0
+-15.3937 -0.0924008 0
+-15.4876 0.570861 0
+-15.2693 1.29154 0
+-14.6857 1.98322 0
+-13.7471 2.51937 0
+-12.542 2.77054 0
+-11.2287 2.65339 0
+-10.0002 2.17316 0
+-9.0337 1.43944 0
+-8.43887 0.642957 0
+-8.22603 -0.0039284 0
+-8.30786 -0.342971 0
+-8.53629 -0.332004 0
+-8.76253 -0.0654358 0
+-8.89685 0.257654 0
+-8.94087 0.403819 0
+-4.43566 0.182089 0
+-2.21233 -0.155432 0
+-2.21233 -0.0877142 0
+-1.03652 -0.0840225 0
+-2.10786 -0.160345 0
+-4.29439 -0.295224 0
+-4.44864 -0.516851 0
+-4.68701 -0.767506 0
+-5.01582 -0.960153 0
+-5.44371 -1.07031 0
+-5.98486 -1.11691 0
+-6.65027 -1.13317 0
+-7.43276 -1.14072 0
+-8.29488 -1.1372 0
+-9.16737 -1.09992 0
+-9.96123 -1.00119 0
+-10.5899 -0.825877 0
+-10.9934 -0.582324 0
+-11.1549 -0.301251 0
+-11.1029 -0.0237296 0
+-10.8985 0.215847 0
+-10.6111 0.403661 0
+-10.2938 0.550761 0
+-9.96615 0.685709 0
+-9.61157 0.83882 0
+-9.19075 1.02496 0
+-8.66449 1.23257 0
+-8.01745 1.4237 0
+-7.27327 1.54526 0
+-6.49513 1.54658 0
+-5.77215 1.39611 0
+-5.19707 1.09078 0
+-4.84404 0.655316 0
+-4.75389 0.133505 0
+-4.93033 -0.423095 0
+-5.34536 -0.96344 0
+-5.94878 -1.43964 0
+-6.67689 -1.80563 0
+-7.45784 -2.01664 0
+-8.21524 -2.03381 0
+-8.87298 -1.835 0
+-9.36399 -1.42814 0
+-9.64225 -0.859963 0
+-9.69375 -0.213308 0
+-9.54074 0.409368 0
+-9.23501 0.912312 0
+-8.84115 1.23304 0
+-8.41562 1.35824 0
+-7.99079 1.32201 0
+-7.57138 1.18682 0
+-7.14528 1.01597 0
+-6.7035 0.849917 0
+-6.25928 0.695989 0
+-5.85731 0.534059 0
+-5.5681 0.333515 0
+-5.46927 0.073188 0
+-5.62097 -0.244406 0
+-6.04473 -0.589873 0
+-6.71352 -0.915072 0
+-7.55628 -1.16828 0
+-8.4746 -1.30976 0
+-9.3653 -1.32167 0
+-10.1409 -1.20921 0
+-10.7411 -0.993918 0
+-11.1329 -0.703444 0
+-11.3007 -0.363736 0
+-11.2372 0.00183055 0
+-10.9399 0.366823 0
+-10.4184 0.694093 0
+-9.70929 0.932428 0
+-8.88983 1.02317 0
+-8.08004 0.918363 0
+-7.4263 0.604926 0
+-7.06739 0.124386 0
+-7.09249 -0.423487 0
+-7.50602 -0.900299 0
+-8.21555 -1.17015 0
+-9.0521 -1.14995 0
+-9.82077 -0.849052 0
+-10.3656 -0.379039 0
+-10.6247 0.0765621 0
+-10.6513 0.32615 0
+-10.5903 0.245539 0
+-10.616 -0.164943 0
+-10.8545 -0.766662 0
+-11.3217 -1.32076 0
+-11.9016 -1.56684 0
+-12.3754 -1.31533 0
+-12.4924 -0.520372 0
+-12.0569 0.694154 0
+-10.9998 2.06568 0
+-9.40986 3.27007 0
+-7.51385 4.01709 0
+-5.61636 4.13098 0
+-4.02092 3.59094 0
+-2.95937 2.52261 0
+-2.54876 1.15005 0
+-2.78307 -0.271047 0
+-3.55548 -1.51659 0
+-4.69951 -2.4372 0
+-6.0345 -2.97381 0
+-7.40258 -3.14735 0
+-8.69043 -3.03202 0
+-9.83493 -2.72404 0
+-10.8167 -2.31555 0
+-11.6461 -1.87791 0
+-12.3472 -1.45428 0
+-12.9402 -1.05929 0
+-13.4279 -0.684294 0
+-13.7877 -0.307527 0
+-13.9721 0.0919614 0
+-13.9204 0.519151 0
+-13.5804 0.951515 0
+-12.9338 1.3367 0
+-12.0177 1.60322 0
+-10.9306 1.68341 0
+-9.81903 1.54186 0
+-8.84395 1.19808 0
+-8.13628 0.731766 0
+-7.7577 0.264383 0
+-7.68198 -0.0796496 0
+-7.80636 -0.218589 0
+-7.99151 -0.146856 0
+-8.117 0.0600584 0
+-8.13341 0.274064 0
+-8.09259 0.362998 0
+-3.88949 0.228286 0
+-1.88874 -0.0253821 0
+-1.88874 0.063948 0
+-0.796622 -0.0512032 0
+-1.63511 -0.0993772 0
+-3.36301 -0.18534 0
+-3.55382 -0.326043 0
+-3.84 -0.481324 0
+-4.2087 -0.59145 0
+-4.64087 -0.638135 0
+-5.1241 -0.633677 0
+-5.6538 -0.603476 0
+-6.22515 -0.56937 0
+-6.82258 -0.539763 0
+-7.41364 -0.508858 0
+-7.95159 -0.463245 0
+-8.38619 -0.391273 0
+-8.6783 -0.290208 0
+-8.81161 -0.16794 0
+-8.79633 -0.0390099 0
+-8.66303 0.0825552 0
+-8.44913 0.189759 0
+-8.18359 0.285225 0
+-7.87647 0.378586 0
+-7.51759 0.479948 0
+-7.08516 0.592534 0
+-6.56062 0.708028 0
+-5.94379 0.806865 0
+-5.26201 0.863473 0
+-4.56968 0.854247 0
+-3.93852 0.764947 0
+-3.44239 0.594651 0
+-3.14229 0.355217 0
+-3.07618 0.0673946 0
+-3.25542 -0.243848 0
+-3.66653 -0.552335 0
+-4.27497 -0.83119 0
+-5.02851 -1.05209 0
+-5.85939 -1.18577 0
+-6.68733 -1.20587 0
+-7.42603 -1.0963 0
+-7.99456 -0.859605 0
+-8.33223 -0.522295 0
+-8.41222 -0.133317 0
+-8.24842 0.245568 0
+-7.89131 0.555202 0
+-7.41315 0.754878 0
+-6.88739 0.832494 0
+-6.37022 0.804837 0
+-5.89135 0.707954 0
+-5.45736 0.581986 0
+-5.06451 0.457068 0
+-4.71428 0.345754 0
+-4.42404 0.243828 0
+-4.22827 0.137738 0
+-4.16973 0.0146518 0
+-4.28484 -0.129298 0
+-4.58906 -0.285653 0
+-5.06826 -0.435869 0
+-5.67903 -0.557514 0
+-6.35736 -0.631427 0
+-7.03215 -0.646878 0
+-7.6383 -0.603053 0
+-8.12519 -0.50703 0
+-8.45859 -0.370045 0
+-8.61776 -0.204565 0
+-8.59202 -0.0239144 0
+-8.38087 0.155675 0
+-7.9993 0.312529 0
+-7.48617 0.419295 0
+-6.91031 0.447313 0
+-6.36787 0.375923 0
+-5.9669 0.203955 0
+-5.80078 -0.0417328 0
+-5.91802 -0.306237 0
+-6.30004 -0.518284 0
+-6.85801 -0.612178 0
+-7.45471 -0.553244 0
+-7.94717 -0.356591 0
+-8.23667 -0.0895389 0
+-8.30676 0.146646 0
+-8.23229 0.251681 0
+-8.1526 0.165858 0
+-8.21622 -0.101332 0
+-8.51677 -0.466107 0
+-9.0448 -0.792728 0
+-9.67479 -0.936848 0
+-10.1947 -0.795413 0
+-10.3696 -0.345507 0
+-10.0176 0.342215 0
+-9.07279 1.12084 0
+-7.61205 1.80933 0
+-5.83961 2.24465 0
+-4.03488 2.32625 0
+-2.48291 2.03897 0
+-1.40982 1.44952 0
+-0.940683 0.680921 0
+-1.08777 -0.123961 0
+-1.76665 -0.837709 0
+-2.83079 -1.37306 0
+-4.11204 -1.69256 0
+-5.45545 -1.80394 0
+-6.74161 -1.74586 0
+-7.89481 -1.57084 0
+-8.87977 -1.33059 0
+-9.69126 -1.06642 0
+-10.3406 -0.804925 0
+-10.8421 -0.557768 0
+-11.2019 -0.324493 0
+-11.4116 -0.0978361 0
+-11.4489 0.129271 0
+-11.2862 0.356425 0
+-10.9053 0.570607 0
+-10.3144 0.745806 0
+-9.56024 0.849044 0
+-8.72888 0.852047 0
+-7.9319 0.744869 0
+-7.27953 0.545714 0
+-6.84912 0.301352 0
+-6.66027 0.0755358 0
+-6.66785 -0.0720716 0
+-6.77754 -0.108901 0
+-6.88014 -0.0442494 0
+-6.89295 0.0728621 0
+-6.79481 0.175925 0
+-6.65005 0.21824 0
+-3.10978 0.208124 0
+-1.4565 0.0933431 0
+-1.4565 0.234594 0
+-0.51623 -0.022637 0
+-1.0676 -0.0450282 0
+-2.21402 -0.0853917 0
+-2.38871 -0.151348 0
+-2.64754 -0.222495 0
+-2.96951 -0.269478 0
+-3.32437 -0.283269 0
+-3.68808 -0.269965 0
+-4.0487 -0.24286 0
+-4.40341 -0.214653 0
+-4.75085 -0.192324 0
+-5.08385 -0.175855 0
+-5.38678 -0.160319 0
+-5.63839 -0.139654 0
+-5.81855 -0.110049 0
+-5.91501 -0.0714785 0
+-5.927 -0.0270244 0
+-5.86372 0.0192835 0
+-5.73872 0.0647533 0
+-5.56268 0.109191 0
+-5.33845 0.15436 0
+-5.06056 0.202057 0
+-4.71988 0.251848 0
+-4.31149 0.299643 0
+-3.84252 0.337894 0
+-3.33646 0.35742 0
+-2.8323 0.350086 0
+-2.37856 0.311204 0
+-2.02464 0.240728 0
+-1.81238 0.142958 0
+-1.77021 0.0252329 0
+-1.9106 -0.103461 0
+-2.22976 -0.233177 0
+-2.70809 -0.352854 0
+-3.31023 -0.44995 0
+-3.98511 -0.510892 0
+-4.66787 -0.523098 0
+-5.28568 -0.478496 0
+-5.76791 -0.377373 0
+-6.05941 -0.230792 0
+-6.13275 -0.0599779 0
+-5.99499 0.107815 0
+-5.68578 0.245991 0
+-5.26649 0.335588 0
+-4.80396 0.369963 0
+-4.35448 0.355362 0
+-3.95377 0.307242 0
+-3.6158 0.244016 0
+-3.3396 0.180869 0
+-3.11981 0.125963 0
+-2.95595 0.0799688 0
+-2.85667 0.0384594 0
+-2.83775 -0.0042691 0
+-2.91538 -0.0516697 0
+-3.09802 -0.103017 0
+-3.38033 -0.153552 0
+-3.74156 -0.196282 0
+-4.14857 -0.224421 0
+-4.56205 -0.233394 0
+-4.94338 -0.221725 0
+-5.25966 -0.190754 0
+-5.48598 -0.143721 0
+-5.60555 -0.0849903 0
+-5.60951 -0.0199549 0
+-5.49826 0.0444237 0
+-5.28482 0.0990864 0
+-4.99879 0.133267 0
+-4.68798 0.136509 0
+-4.41434 0.102279 0
+-4.24249 0.0321028 0
+-4.22252 -0.0617011 0
+-4.37209 -0.156668 0
+-4.6651 -0.22527 0
+-5.03359 -0.243689 0
+-5.38531 -0.201516 0
+-5.63348 -0.108429 0
+-5.72879 0.00577552 0
+-5.68138 0.0992315 0
+-5.562 0.132301 0
+-5.47936 0.0832269 0
+-5.53969 -0.0410035 0
+-5.80242 -0.203382 0
+-6.24861 -0.346535 0
+-6.77487 -0.410591 0
+-7.21686 -0.353421 0
+-7.39615 -0.166211 0
+-7.17524 0.121304 0
+-6.50244 0.448036 0
+-5.43187 0.738762 0
+-4.11266 0.925447 0
+-2.75193 0.965525 0
+-1.56451 0.851552 0
+-0.725076 0.610085 0
+-0.335646 0.291491 0
+-0.41465 -0.0449562 0
+-0.906654 -0.345705 0
+-1.70633 -0.573385 0
+-2.68775 -0.711133 0
+-3.73071 -0.760974 0
+-4.73842 -0.738153 0
+-5.64515 -0.664109 0
+-6.41538 -0.560358 0
+-7.03734 -0.444463 0
+-7.51407 -0.328196 0
+-7.85438 -0.217452 0
+-8.06546 -0.113417 0
+-8.14864 -0.0146564 0
+-8.09962 0.0802518 0
+-7.9133 0.170105 0
+-7.59208 0.249388 0
+-7.1547 0.308429 0
+-6.64158 0.335918 0
+-6.11288 0.323351 0
+-5.63792 0.269913 0
+-5.2778 0.185587 0
+-5.06689 0.0904449 0
+-5.00071 0.00935732 0
+-5.03612 -0.036659 0
+-5.10569 -0.0393298 0
+-5.14172 -0.00822411 0
+-5.10036 0.0314983 0
+-4.97585 0.0514185 0
+-4.80573 0.0481177 0
+-2.26189 0.106307 0
+-1.05049 0.116469 0
+-1.05049 0.296962 0
+-0.254249 -0.00521987 0
+-0.52865 -0.0109703 0
+-1.10408 -0.0212882 0
+-1.2173 -0.038132 0
+-1.38396 -0.0558378 0
+-1.58671 -0.0667207 0
+-1.80139 -0.0685885 0
+-2.00821 -0.0631483 0
+-2.19704 -0.0540289 0
+-2.36685 -0.0448455 0
+-2.52132 -0.0378489 0
+-2.66371 -0.0334629 0
+-2.79338 -0.0306534 0
+-2.90526 -0.0277739 0
+-2.99188 -0.023425 0
+-3.04639 -0.0169649 0
+-3.06488 -0.00853925 0
+-3.04685 0.00125899 0
+-2.99393 0.0118358 0
+-2.90762 0.0228836 0
+-2.78763 0.0343652 0
+-2.6318 0.0462312 0
+-2.43801 0.0580524 0
+-2.20715 0.0687902 0
+-1.94611 0.0768547 0
+-1.66915 0.0804508 0
+-1.39713 0.0780662 0
+-1.15481 0.0688894 0
+-0.967076 0.0529924 0
+-0.85536 0.0312432 0
+-0.835188 0.00506126 0
+-0.914851 -0.0237981 0
+-1.09474 -0.0532909 0
+-1.36662 -0.0809722 0
+-1.71268 -0.103888 0
+-2.10486 -0.11871 0
+-2.50569 -0.122272 0
+-2.87172 -0.112458 0
+-3.15994 -0.0891553 0
+-3.33588 -0.0548526 0
+-3.38134 -0.0145174 0
+-3.29889 0.0253699 0
+-3.11129 0.05839 0
+-2.85555 0.0798509 0
+-2.57354 0.0879447 0
+-2.30214 0.0839635 0
+-2.06641 0.0715201 0
+-1.87753 0.0551295 0
+-1.7354 0.0387401 0
+-1.63418 0.0247474 0
+-1.56796 0.0137424 0
+-1.53443 0.00493057 0
+-1.53563 -0.00306286 0
+-1.57593 -0.0113701 0
+-1.6586 -0.0203463 0
+-1.78269 -0.0294614 0
+-1.94141 -0.0375682 0
+-2.12247 -0.0433597 0
+-2.31006 -0.045798 0
+-2.48743 -0.0443604 0
+-2.63911 -0.0390723 0
+-2.75242 -0.0304066 0
+-2.81823 -0.0191839 0
+-2.83162 -0.00656565 0
+-2.79307 0.00587105 0
+-2.71008 0.0160967 0
+-2.59861 0.0217968 0
+-2.48296 0.0208616 0
+-2.39285 0.0121664 0
+-2.35715 -0.00359527 0
+-2.39542 -0.0234249 0
+-2.50981 -0.0422776 0
+-2.68083 -0.0542579 0
+-2.86996 -0.0545554 0
+-3.02997 -0.041506 0
+-3.12048 -0.0179218 0
+-3.12377 0.00906599 0
+-3.05445 0.02992 0
+-2.95807 0.0359181 0
+-2.89743 0.0225895 0
+-2.93046 -0.00797837 0
+-3.08685 -0.0469876 0
+-3.35219 -0.0811928 0
+-3.66584 -0.096949 0
+-3.93452 -0.0847399 0
+-4.05809 -0.0426325 0
+-3.95938 0.0225885 0
+-3.6084 0.0970555 0
+-3.03333 0.16369 0
+-2.31487 0.206993 0
+-1.56652 0.217172 0
+-0.907315 0.19235 0
+-0.435597 0.138367 0
+-0.210633 0.0665273 0
+-0.245847 -0.00974154 0
+-0.513341 -0.0782113 0
+-0.956468 -0.130258 0
+-1.50571 -0.161891 0
+-2.09325 -0.17343 0
+-2.66317 -0.168238 0
+-3.17614 -0.151138 0
+-3.60949 -0.127011 0
+-3.95408 -0.0998751 0
+-4.2098 -0.0724766 0
+-4.38097 -0.046281 0
+-4.47263 -0.0217507 0
+-4.48849 0.00119676 0
+-4.43087 0.0226344 0
+-4.30287 0.0421092 0
+-4.11183 0.0583416 0
+-3.87272 0.0693234 0
+-3.6097 0.0728953 0
+-3.35404 0.0676903 0
+-3.13823 0.0541069 0
+-2.98748 0.0348397 0
+-2.91159 0.0145543 0
+-2.90081 -0.0014196 0
+-2.9284 -0.00907403 0
+-2.96002 -0.00770539 0
+-2.96717 -0.00107948 0
+-2.93852 0.00284555 0
+-2.88144 -0.00565613 0
+-2.80591 -0.0274122 0
+-1.43958 0.0104927 0
+-0.730588 0.0518977 0
+-0.730588 0.175089 0
+-0.0680937 -0.00521987 0
+-0.14189 -0.0109703 0
+-0.29802 -0.0212882 0
+-0.336152 -0.038132 0
+-0.39199 -0.0558378 0
+-0.45871 -0.0667207 0
+-0.527299 -0.0685885 0
+-0.590447 -0.0631483 0
+-0.644475 -0.0540289 0
+-0.689321 -0.0448455 0
+-0.727169 -0.0378489 0
+-0.760632 -0.0334629 0
+-0.791285 -0.0306534 0
+-0.819059 -0.0277739 0
+-0.842484 -0.023425 0
+-0.859449 -0.0169649 0
+-0.867988 -0.00853925 0
+-0.866729 0.00125899 0
+-0.854893 0.0118358 0
+-0.832009 0.0228836 0
+-0.797644 0.0343652 0
+-0.751412 0.0462312 0
+-0.69336 0.0580524 0
+-0.624569 0.0687902 0
+-0.547715 0.0768547 0
+-0.467264 0.0804508 0
+-0.389197 0.0780662 0
+-0.320308 0.0688894 0
+-0.267316 0.0529924 0
+-0.236072 0.0312432 0
+-0.231011 0.00506126 0
+-0.254809 -0.0237981 0
+-0.3081 -0.0532909 0
+-0.389072 -0.0809722 0
+-0.49296 -0.103888 0
+-0.61167 -0.11871 0
+-0.733942 -0.122272 0
+-0.846401 -0.112458 0
+-0.935556 -0.0891553 0
+-0.990408 -0.0548526 0
+-1.00493 -0.0145174 0
+-0.979555 0.0253699 0
+-0.921165 0.05839 0
+-0.841314 0.0798509 0
+-0.753369 0.0879447 0
+-0.669406 0.0839635 0
+-0.597886 0.0715201 0
+-0.542756 0.0551295 0
+-0.504016 0.0387401 0
+-0.479269 0.0247474 0
+-0.465526 0.0137424 0
+-0.460595 0.00493057 0
+-0.463658 -0.00306286 0
+-0.475028 -0.0113701 0
+-0.495375 -0.0203463 0
+-0.524836 -0.0294614 0
+-0.562404 -0.0375682 0
+-0.605764 -0.0433597 0
+-0.651562 -0.045798 0
+-0.695922 -0.0443604 0
+-0.734994 -0.0390723 0
+-0.765401 -0.0304066 0
+-0.784584 -0.0191839 0
+-0.79115 -0.00656565 0
+-0.785279 0.00587105 0
+-0.769182 0.0160967 0
+-0.747385 0.0217968 0
+-0.726524 0.0208616 0
+-0.714357 0.0121664 0
+-0.717952 -0.00359527 0
+-0.741377 -0.0234249 0
+-0.783654 -0.0422776 0
+-0.837912 -0.0542579 0
+-0.892468 -0.0545554 0
+-0.933974 -0.041506 0
+-0.951895 -0.0179218 0
+-0.942829 0.00906599 0
+-0.912909 0.02992 0
+-0.876991 0.0359181 0
+-0.854401 0.0225895 0
+-0.86238 -0.00797837 0
+-0.909367 -0.0469876 0
+-0.99056 -0.0811928 0
+-1.08751 -0.096949 0
+-1.17225 -0.0847399 0
+-1.21488 -0.0426325 0
+-1.19229 0.0225885 0
+-1.09524 0.0970555 0
+-0.931547 0.16369 0
+-0.724554 0.206993 0
+-0.507382 0.217172 0
+-0.315032 0.19235 0
+-0.176665 0.138367 0
+-0.110138 0.0665273 0
+-0.119879 -0.00974154 0
+-0.198091 -0.0782113 0
+-0.328349 -0.130258 0
+-0.49024 -0.161891 0
+-0.66367 -0.17343 0
+-0.831907 -0.168238 0
+-0.983045 -0.151138 0
+-1.11006 -0.127011 0
+-1.20993 -0.0998751 0
+-1.28241 -0.0724766 0
+-1.32869 -0.046281 0
+-1.35044 -0.0217507 0
+-1.34924 0.00119676 0
+-1.32661 0.0226344 0
+-1.2845 0.0421092 0
+-1.22616 0.0583416 0
+-1.15683 0.0693234 0
+-1.08394 0.0728953 0
+-1.01625 0.0676903 0
+-0.962141 0.0541069 0
+-0.927301 0.0348397 0
+-0.912747 0.0145543 0
+-0.914166 -0.0014196 0
+-0.92324 -0.00907403 0
+-0.930946 -0.00770539 0
+-0.932025 -0.00107948 0
+-0.92918 0.00284555 0
+-0.934836 -0.00565613 0
+-0.962248 -0.0274122 0
+-0.600259 0.0104927 0
+-0.369864 0.0518977 0
+-0.369864 0.175089 0
+-0.155155 -0.0155247 0
+-0.312172 -0.0308194 0
+-0.624932 -0.0553062 0
+-0.535154 -0.0897776 0
+-0.420289 -0.114864 0
+-0.3022 -0.118088 0
+-0.201597 -0.100602 0
+-0.129705 -0.0718905 0
+-0.0856524 -0.0440509 0
+-0.0589543 -0.0266963 0
+-0.0351037 -0.0238489 0
+-0.0015879 -0.0335141 0
+0.047963 -0.0495492 0
+0.11259 -0.0646257 0
+0.185482 -0.0728899 0
+0.256859 -0.0713753 0
+0.316857 -0.0599958 0
+0.357501 -0.040643 0
+0.373681 -0.0161775 0
+0.363564 0.0101187 0
+0.328978 0.0345877 0
+0.275823 0.0531565 0
+0.214075 0.061749 0
+0.156705 0.0573725 0
+0.11714 0.039566 0
+0.105681 0.0114608 0
+0.126017 -0.0203346 0
+0.173386 -0.0473682 0
+0.23548 -0.0620924 0
+0.296143 -0.060661 0
+0.340668 -0.0445235 0
+0.360678 -0.0200096 0
+0.356646 0.00403408 0
+0.337037 0.0196097 0
+0.314498 0.02254 0
+0.300684 0.013815 0
+0.301895 -0.00121013 0
+0.317259 -0.0153634 0
+0.340063 -0.022803 0
+0.36143 -0.021366 0
+0.374538 -0.0131078 0
+0.377421 -0.00288196 0
+0.373159 0.00426312 0
+0.367595 0.00556561 0
+0.365856 0.00174063 0
+0.369444 -0.00358761 0
+0.375234 -0.00578827 0
+0.376657 -0.00142252 0
+0.366312 0.0103463 0
+0.338598 0.0277149 0
+0.291188 0.0474108 0
+0.224875 0.0663141 0
+0.142254 0.0826221 0
+0.0462618 0.0959931 0
+-0.0604639 0.106726 0
+-0.175048 0.114585 0
+-0.293097 0.118049 0
+-0.407626 0.114529 0
+-0.509125 0.1015 0
+-0.587144 0.0780192 0
+-0.632941 0.0457973 0
+-0.642164 0.00922335 0
+-0.616382 -0.0257814 0
+-0.562742 -0.0536398 0
+-0.491756 -0.0709861 0
+-0.413927 -0.0778285 0
+-0.336325 -0.0776017 0
+-0.260285 -0.0760388 0
+-0.181185 -0.0791003 0
+-0.0906636 -0.0905206 0
+0.0191685 -0.109832 0
+0.150954 -0.131785 0
+0.298675 -0.147721 0
+0.447346 -0.14867 0
+0.576464 -0.129117 0
+0.666365 -0.0899003 0
+0.705275 -0.0389093 0
+0.694379 0.0108968 0
+0.64882 0.0455599 0
+0.594019 0.0548016 0
+0.558458 0.035562 0
+0.565373 -0.00691467 0
+0.626191 -0.0608172 0
+0.73782 -0.111628 0
+0.884478 -0.146657 0
+1.04309 -0.158608 0
+1.19012 -0.147028 0
+1.30744 -0.117327 0
+1.38551 -0.0780673 0
+1.42328 -0.0377642 0
+1.42578 -0.00250064 0
+1.40086 0.0249219 0
+1.3565 0.0443562 0
+1.29959 0.0569172 0
+1.23586 0.063724 0
+1.1705 0.0653653 0
+1.10837 0.0621273 0
+1.0538 0.0545655 0
+1.00993 0.04388 0
+0.978143 0.0317828 0
+0.958195 0.0199481 0
+0.948759 0.00943566 0
+0.948244 0.000515914 0
+0.955174 -0.00692958 0
+0.967819 -0.0126454 0
+0.983217 -0.0153971 0
+0.996269 -0.0130526 0
+0.999802 -0.00353246 0
+0.986066 0.0137367 0
+0.949405 0.0366607 0
+0.88898 0.0604253 0
+0.810079 0.0789008 0
+0.722991 0.0870887 0
+0.639459 0.0835316 0
+0.568025 0.0714342 0
+0.510325 0.0577003 0
+0.460309 0.0500163 0
+0.407244 0.0530653 0
+0.341762 0.0654822 0
+0.262789 0.0789724 0
+0.182566 0.0802232 0
+0.126669 0.0558975 0
+0.118897 0.00777202 0
+0.21935 0.0357472 0
+0.202177 0.0808421 0
+0.202177 0.232073 0
+-0.586977 -0.0611024 0
+-1.17594 -0.114878 0
+-2.35138 -0.202235 0
+-2.11686 -0.324293 0
+-1.81836 -0.413359 0
+-1.51641 -0.420035 0
+-1.26706 -0.349949 0
+-1.09634 -0.242607 0
+-0.99351 -0.146873 0
+-0.920952 -0.0992479 0
+-0.833346 -0.111449 0
+-0.696797 -0.170057 0
+-0.500305 -0.246036 0
+-0.256613 -0.308312 0
+0.00549973 -0.334997 0
+0.252325 -0.318195 0
+0.454476 -0.262141 0
+0.591501 -0.177661 0
+0.652359 -0.0770297 0
+0.634426 0.0280582 0
+0.543608 0.125413 0
+0.396179 0.200591 0
+0.220484 0.23745 0
+0.0554059 0.222456 0
+-0.0564892 0.151466 0
+-0.0804463 0.035423 0
+-0.00176623 -0.0990095 0
+0.166691 -0.215821 0
+0.38614 -0.281536 0
+0.60336 -0.277876 0
+0.768267 -0.209425 0
+0.850658 -0.102396 0
+0.849273 0.00542414 0
+0.78945 0.0794361 0
+0.710626 0.101367 0
+0.649229 0.0752154 0
+0.624403 0.0236185 0
+0.632536 -0.0234936 0
+0.652458 -0.0427227 0
+0.658298 -0.0272026 0
+0.633507 0.0116869 0
+0.579269 0.0513597 0
+0.513469 0.070067 0
+0.461137 0.0579015 0
+0.441387 0.0214948 0
+0.457305 -0.0195013 0
+0.493438 -0.0419174 0
+0.521569 -0.0295493 0
+0.511447 0.0204714 0
+0.441121 0.098045 0
+0.302274 0.186261 0
+0.0990063 0.269585 0
+-0.158007 0.339638 0
+-0.457855 0.395844 0
+-0.792362 0.441235 0
+-1.15418 0.476402 0
+-1.53161 0.495483 0
+-1.90388 0.486798 0
+-2.24046 0.438086 0
+-2.50611 0.343673 0
+-2.67004 0.209724 0
+-2.71545 0.0546408 0
+-2.64534 -0.0958983 0
+-2.48178 -0.217195 0
+-2.25901 -0.293759 0
+-2.01227 -0.324562 0
+-1.76625 -0.323621 0
+-1.52678 -0.315511 0
+-1.27931 -0.326562 0
+-0.995842 -0.373991 0
+-0.648902 -0.45677 0
+-0.228134 -0.552551 0
+0.247541 -0.623393 0
+0.728358 -0.629484 0
+1.14534 -0.546099 0
+1.43224 -0.3768 0
+1.55008 -0.15674 0
+1.50473 0.0562508 0
+1.35022 0.200068 0
+1.17552 0.229509 0
+1.07888 0.132201 0
+1.1387 -0.0667323 0
+1.39077 -0.312886 0
+1.81955 -0.540403 0
+2.36556 -0.69266 0
+2.94527 -0.738316 0
+3.47565 -0.67741 0
+3.89469 -0.536365 0
+4.17176 -0.355134 0
+4.30646 -0.172457 0
+4.31905 -0.0150877 0
+4.23829 0.10568 0
+4.09198 0.190676 0
+3.90279 0.246106 0
+3.6889 0.277614 0
+3.4664 0.287867 0
+3.25076 0.277776 0
+3.05599 0.249332 0
+2.89242 0.207454 0
+2.76481 0.159392 0
+2.67263 0.112125 0
+2.6124 0.0696645 0
+2.58058 0.0323419 0
+2.57472 -0.0010731 0
+2.59158 -0.0295027 0
+2.62271 -0.0465215 0
+2.65043 -0.0407743 0
+2.64766 -0.000763814 0
+2.58363 0.0777681 0
+2.43453 0.185761 0
+2.19485 0.300111 0
+1.88361 0.390142 0
+1.54128 0.429417 0
+1.21695 0.407856 0
+0.950296 0.338094 0
+0.755902 0.252094 0
+0.617589 0.18833 0
+0.496278 0.174377 0
+0.349235 0.212525 0
+0.152653 0.275554 0
+-0.0836952 0.316572 0
+-0.32138 0.293582 0
+-0.52684 0.213233 0
+-0.185766 0.217762 0
+-0.0638318 0.205597 0
+-0.0638318 0.419315 0
+-1.16703 -0.121388 0
+-2.33518 -0.223735 0
+-4.67075 -0.388407 0
+-4.3799 -0.615139 0
+-4.0197 -0.773556 0
+-3.67497 -0.764764 0
+-3.41697 -0.607933 0
+-3.2647 -0.394871 0
+-3.17885 -0.232708 0
+-3.08438 -0.193714 0
+-2.90676 -0.289051 0
+-2.60417 -0.472636 0
+-2.18197 -0.668229 0
+-1.68618 -0.804088 0
+-1.18241 -0.838756 0
+-0.732147 -0.768448 0
+-0.377303 -0.616973 0
+-0.137404 -0.417549 0
+-0.0161842 -0.198237 0
+-0.00978048 0.0216666 0
+-0.109375 0.225019 0
+-0.296379 0.387607 0
+-0.534526 0.475609 0
+-0.766745 0.454684 0
+-0.923092 0.307824 0
+-0.940082 0.0524224 0
+-0.784529 -0.254553 0
+-0.470776 -0.529563 0
+-0.0615432 -0.690759 0
+0.350463 -0.689872 0
+0.673889 -0.532841 0
+0.850107 -0.278606 0
+0.87114 -0.0156002 0
+0.776553 0.174031 0
+0.631291 0.246636 0
+0.494971 0.21154 0
+0.396752 0.121843 0
+0.326956 0.0463072 0
+0.248565 0.0356731 0
+0.122154 0.0992146 0
+-0.0686131 0.20246 0
+-0.303902 0.286656 0
+-0.533694 0.299866 0
+-0.699843 0.224058 0
+-0.763326 0.0849853 0
+-0.723473 -0.0593461 0
+-0.620277 -0.145106 0
+-0.519352 -0.130468 0
+-0.487372 -0.011501 0
+-0.569746 0.180425 0
+-0.780193 0.396715 0
+-1.10522 0.59462 0
+-1.5188 0.753221 0
+-1.99783 0.874879 0
+-2.52967 0.97308 0
+-3.10821 1.05495 0
+-3.72191 1.10918 0
+-4.34185 1.10674 0
+-4.91809 1.01433 0
+-5.38799 0.813571 0
+-5.69358 0.515317 0
+-5.80035 0.161416 0
+-5.70891 -0.187339 0
+-5.45482 -0.471283 0
+-5.09691 -0.65167 0
+-4.69795 -0.723514 0
+-4.30366 -0.717915 0
+-3.92646 -0.692703 0
+-3.54079 -0.712234 0
+-3.09395 -0.82082 0
+-2.53161 -1.01911 0
+-1.82929 -1.25486 0
+-1.01687 -1.43581 0
+-0.18306 -1.46329 0
+0.545585 -1.27474 0
+1.04617 -0.877381 0
+1.24647 -0.357036 0
+1.15885 0.14388 0
+0.886413 0.472509 0
+0.597197 0.51873 0
+0.474454 0.254949 0
+0.660503 -0.252776 0
+1.21391 -0.866287 0
+2.0945 -1.42099 0
+3.18 -1.77816 0
+4.30646 -1.86477 0
+5.31651 -1.68746 0
+6.0983 -1.31814 0
+6.60333 -0.860156 0
+6.8413 -0.410429 0
+6.85897 -0.0327493 0
+6.71492 0.249741 0
+6.4611 0.444495 0
+6.13604 0.571176 0
+5.76767 0.645981 0
+5.37988 0.675664 0
+4.99637 0.661292 0
+4.63952 0.606178 0
+4.32595 0.521033 0
+4.06291 0.422428 0
+3.84921 0.325832 0
+3.68037 0.238505 0
+3.55477 0.157939 0
+3.47554 0.0781679 0
+3.44513 0.000899676 0
+3.45437 -0.0557536 0
+3.47188 -0.0582893 0
+3.44232 0.0287975 0
+3.29806 0.222033 0
+2.98275 0.501077 0
+2.47763 0.805224 0
+1.81806 1.04971 0
+1.09002 1.15746 0
+0.404946 1.09293 0
+-0.138842 0.881882 0
+-0.492472 0.605726 0
+-0.674432 0.370291 0
+-0.761023 0.260969 0
+-0.852232 0.303734 0
+-1.02754 0.450858 0
+-1.31213 0.601166 0
+-1.67004 0.651491 0
+-2.02109 0.564282 0
+-1.13852 0.426471 0
+-0.646945 0.234258 0
+-0.646945 0.386244 0
+-1.72852 -0.170434 0
+-3.45758 -0.309326 0
+-6.92142 -0.528677 0
+-6.71532 -0.821239 0
+-6.48827 -1.0006 0
+-6.32137 -0.931648 0
+-6.26373 -0.665561 0
+-6.29371 -0.364878 0
+-6.32325 -0.203152 0
+-6.23785 -0.2791 0
+-5.94945 -0.577438 0
+-5.43586 -0.986209 0
+-4.74919 -1.35489 0
+-3.99202 -1.56124 0
+-3.2756 -1.55516 0
+-2.68121 -1.36282 0
+-2.24195 -1.05621 0
+-1.94971 -0.709779 0
+-1.77842 -0.369507 0
+-1.7073 -0.0494343 0
+-1.72955 0.247282 0
+-1.84248 0.500554 0
+-2.02709 0.66024 0
+-2.23222 0.659823 0
+-2.3766 0.452222 0
+-2.37246 0.0482904 0
+-2.16127 -0.465729 0
+-1.74438 -0.946437 0
+-1.19151 -1.24361 0
+-0.62034 -1.26103 0
+-0.15462 -0.998546 0
+0.120525 -0.553739 0
+0.185822 -0.0808851 0
+0.0854683 0.274394 0
+-0.102539 0.434651 0
+-0.308164 0.417172 0
+-0.502541 0.316227 0
+-0.706624 0.250396 0
+-0.97153 0.300586 0
+-1.34111 0.468804 0
+-1.81652 0.677875 0
+-2.34187 0.812018 0
+-2.81964 0.777642 0
+-3.14926 0.553687 0
+-3.27078 0.206516 0
+-3.19268 -0.137437 0
+-2.99081 -0.346962 0
+-2.77945 -0.341817 0
+-2.66847 -0.122471 0
+-2.7265 0.238463 0
+-2.96581 0.636036 0
+-3.3532 0.982019 0
+-3.83811 1.23813 0
+-4.38146 1.41824 0
+-4.96997 1.5616 0
+-5.6096 1.69458 0
+-6.30392 1.80351 0
+-7.0313 1.83412 0
+-7.73516 1.71819 0
+-8.33405 1.41246 0
+-8.74714 0.928409 0
+-8.92223 0.336512 0
+-8.8532 -0.256364 0
+-8.58074 -0.743746 0
+-8.17793 -1.05447 0
+-7.72618 -1.17526 0
+-7.28754 -1.15655 0
+-6.88098 -1.09926 0
+-6.47195 -1.12126 0
+-5.98398 -1.30879 0
+-5.33312 -1.66996 0
+-4.47423 -2.11375 0
+-3.43902 -2.47101 0
+-2.34592 -2.55638 0
+-1.37167 -2.24899 0
+-0.691643 -1.5574 0
+-0.410789 -0.637882 0
+-0.51324 0.246338 0
+-0.85294 0.812217 0
+-1.19177 0.857572 0
+-1.27289 0.336069 0
+-0.902838 -0.622818 0
+-0.0127716 -1.75635 0
+1.32278 -2.75653 0
+2.91435 -3.36972 0
+4.52027 -3.47068 0
+5.91883 -3.08601 0
+6.96378 -2.36309 0
+7.60634 -1.5027 0
+7.88184 -0.685919 0
+7.87361 -0.0245129 0
+7.673 0.450354 0
+7.35218 0.76533 0
+6.95648 0.966879 0
+6.51241 1.09005 0
+6.04055 1.14753 0
+5.5634 1.13844 0
+5.10421 1.06537 0
+4.68004 0.945213 0
+4.29639 0.806077 0
+3.94928 0.672945 0
+3.63456 0.553227 0
+3.35832 0.434182 0
+3.13942 0.297062 0
+2.99881 0.141516 0
+2.93817 0.00489105 0
+2.91908 -0.0392001 0
+2.85679 0.0910926 0
+2.63792 0.440906 0
+2.16005 0.978945 0
+1.37846 1.58681 0
+0.338571 2.0896 0
+-0.823852 2.31989 0
+-1.91983 2.18891 0
+-2.7698 1.73185 0
+-3.26712 1.10305 0
+-3.41572 0.518884 0
+-3.32484 0.170098 0
+-3.16242 0.141315 0
+-3.08624 0.374673 0
+-3.18197 0.696895 0
+-3.4313 0.900826 0
+-3.71197 0.844949 0
+-2.07464 0.519341 0
+-1.13872 0.133431 0
+-1.13872 0.209445 0
+-2.13766 -0.189082 0
+-4.27276 -0.336127 0
+-8.55534 -0.560427 0
+-8.53819 -0.838387 0
+-8.58849 -0.950288 0
+-8.75833 -0.761795 0
+-9.04174 -0.382141 0
+-9.35064 -0.0559616 0
+-9.5386 -0.0151821 0
+-9.46048 -0.357199 0
+-9.03785 -1.00005 0
+-8.29724 -1.7268 0
+-7.36272 -2.28939 0
+-6.40671 -2.51723 0
+-5.58333 -2.37852 0
+-4.9757 -1.97043 0
+-4.58036 -1.45153 0
+-4.33228 -0.957842 0
+-4.15339 -0.548381 0
+-3.99716 -0.205641 0
+-3.86593 0.116072 0
+-3.79398 0.42862 0
+-3.80882 0.675094 0
+-3.89489 0.745912 0
+-3.9823 0.539652 0
+-3.96917 0.035173 0
+-3.76749 -0.667394 0
+-3.34898 -1.36493 0
+-2.76623 -1.82634 0
+-2.13685 -1.8904 0
+-1.59733 -1.53804 0
+-1.24944 -0.901615 0
+-1.1252 -0.205118 0
+-1.187 0.336206 0
+-1.3608 0.608464 0
+-1.58366 0.640036 0
+-1.84007 0.572648 0
+-2.16778 0.578108 0
+-2.62941 0.762224 0
+-3.26461 1.10402 0
+-4.04839 1.46167 0
+-4.87957 1.64321 0
+-5.60848 1.50656 0
+-6.0931 1.03832 0
+-6.25785 0.371278 0
+-6.12726 -0.268021 0
+-5.81835 -0.655861 0
+-5.49527 -0.664889 0
+-5.30705 -0.31068 0
+-5.33676 0.268188 0
+-5.58367 0.882947 0
+-5.98333 1.38169 0
+-6.45232 1.70713 0
+-6.9329 1.89882 0
+-7.4152 2.04391 0
+-7.92768 2.20707 0
+-8.5041 2.37993 0
+-9.14726 2.47729 0
+-9.81094 2.38187 0
+-10.4101 2.01164 0
+-10.8533 1.37157 0
+-11.0777 0.560924 0
+-11.0693 -0.26469 0
+-10.8631 -0.950013 0
+-10.5281 -1.38939 0
+-10.1461 -1.55727 0
+-9.78384 -1.51884 0
+-9.46502 -1.41807 0
+-9.15208 -1.4342 0
+-8.75289 -1.70798 0
+-8.15862 -2.26423 0
+-7.30067 -2.97169 0
+-6.20124 -3.57044 0
+-4.99026 -3.76735 0
+-3.87444 -3.3648 0
+-3.06548 -2.36635 0
+-2.69475 -1.00861 0
+-2.75007 0.301664 0
+-3.06318 1.12534 0
+-3.35643 1.15082 0
+-3.33294 0.312587 0
+-2.77693 -1.17882 0
+-1.62633 -2.90694 0
+0.0086727 -4.39153 0
+1.886 -5.24705 0
+3.71316 -5.29783 0
+5.23702 -4.60986 0
+6.30883 -3.4349 0
+6.90435 -2.09821 0
+7.09902 -0.880573 0
+7.01612 0.0583952 0
+6.77386 0.692623 0
+6.45252 1.08668 0
+6.08944 1.32996 0
+5.69482 1.48468 0
+5.27271 1.56964 0
+4.83346 1.5777 0
+4.39226 1.50657 0
+3.95927 1.3782 0
+3.53225 1.2331 0
+3.10025 1.10495 0
+2.65828 0.995202 0
+2.22325 0.869218 0
+1.83781 0.682506 0
+1.55359 0.425735 0
+1.39746 0.161028 0
+1.3369 0.0213601 0
+1.26597 0.162027 0
+1.0265 0.680373 0
+0.463173 1.54227 0
+-0.507553 2.55754 0
+-1.84506 3.42711 0
+-3.37583 3.85065 0
+-4.83802 3.65111 0
+-5.96577 2.8596 0
+-6.58065 1.71794 0
+-6.65303 0.591265 0
+-6.30742 -0.175512 0
+-5.7695 -0.396611 0
+-5.27682 -0.118003 0
+-4.98964 0.409715 0
+-4.93503 0.846221 0
+-5.00032 0.910233 0
+-2.66327 0.494996 0
+-1.39288 -0.00524957 0
+-1.39288 0.0368781 0
+-2.3341 -0.173966 0
+-4.65423 -0.298009 0
+-9.30486 -0.473131 0
+-9.49359 -0.649651 0
+-9.84094 -0.602939 0
+-10.3573 -0.245405 0
+-10.9696 0.230125 0
+-11.5203 0.494821 0
+-11.8147 0.279183 0
+-11.6967 -0.475158 0
+-11.1202 -1.57651 0
+-10.178 -2.66898 0
+-9.07271 -3.3947 0
+-8.0405 -3.54944 0
+-7.26183 -3.15717 0
+-6.79938 -2.43287 0
+-6.5905 -1.66039 0
+-6.49486 -1.05346 0
+-6.37128 -0.671938 0
+-6.14518 -0.431727 0
+-5.83452 -0.194565 0
+-5.52492 0.119034 0
+-5.31038 0.460572 0
+-5.23308 0.668631 0
+-5.25414 0.560721 0
+-5.26989 0.0509432 0
+-5.16409 -0.773184 0
+-4.86771 -1.66129 0
+-4.39512 -2.29893 0
+-3.83815 -2.44736 0
+-3.32285 -2.05332 0
+-2.95298 -1.27147 0
+-2.77046 -0.387627 0
+-2.75233 0.318082 0
+-2.84294 0.699083 0
+-3.00116 0.798267 0
+-3.23462 0.806108 0
+-3.60038 0.943878 0
+-4.16959 1.33144 0
+-4.97341 1.90784 0
+-5.95992 2.44819 0
+-6.98827 2.67156 0
+-7.86818 2.38648 0
+-8.42994 1.60009 0
+-8.59328 0.534624 0
+-8.4025 -0.458787 0
+-8.01082 -1.04753 0
+-7.62007 -1.05564 0
+-7.40285 -0.52789 0
+-7.44185 0.307201 0
+-7.71217 1.15327 0
+-8.11167 1.7812 0
+-8.52164 2.1171 0
+-8.86604 2.24324 0
+-9.14077 2.31864 0
+-9.40097 2.46728 0
+-9.71707 2.69603 0
+-10.1257 2.88589 0
+-10.603 2.85922 0
+-11.0752 2.48378 0
+-11.4561 1.75254 0
+-11.687 0.791811 0
+-11.7514 -0.200318 0
+-11.6694 -1.03196 0
+-11.4858 -1.57301 0
+-11.2582 -1.78483 0
+-11.0422 -1.73489 0
+-10.8644 -1.59585 0
+-10.6949 -1.60371 0
+-10.4426 -1.96022 0
+-9.98893 -2.71795 0
+-9.24748 -3.71314 0
+-8.22282 -4.59509 0
+-7.0347 -4.95547 0
+-5.89043 -4.50906 0
+-5.01122 -3.24555 0
+-4.54139 -1.47842 0
+-4.47977 0.240053 0
+-4.66485 1.31043 0
+-4.82346 1.30944 0
+-4.66592 0.155061 0
+-3.99077 -1.85397 0
+-2.75802 -4.13968 0
+-1.10314 -6.0464 0
+0.712228 -7.0624 0
+2.39093 -6.97653 0
+3.69561 -5.91453 0
+4.51228 -4.25155 0
+4.86206 -2.44799 0
+4.86403 -0.882541 0
+4.67164 0.250798 0
+4.41291 0.951359 0
+4.15804 1.34156 0
+3.92099 1.56702 0
+3.68463 1.72105 0
+3.42962 1.82466 0
+3.14996 1.85736 0
+2.84974 1.8068 0
+2.52895 1.69899 0
+2.17333 1.58873 0
+1.75963 1.51865 0
+1.27631 1.47852 0
+0.746644 1.39889 0
+0.235861 1.19329 0
+-0.169728 0.831326 0
+-0.407927 0.39923 0
+-0.48977 0.103205 0
+-0.524546 0.196805 0
+-0.700134 0.855962 0
+-1.21815 2.06029 0
+-2.20691 3.54631 0
+-3.64981 4.87001 0
+-5.364 5.56484 0
+-7.04461 5.33172 0
+-8.36127 4.17626 0
+-9.07 2.42667 0
+-9.09572 0.616987 0
+-8.552 -0.719224 0
+-7.69108 -1.25753 0
+-6.80611 -1.00298 0
+-6.12629 -0.270104 0
+-5.74588 0.465812 0
+-5.61257 0.776927 0
+-2.85406 0.464722 0
+-1.4489 -0.054997 0
+-1.4489 -0.0267616 0
+-2.3339 -0.136413 0
+-4.62996 -0.216589 0
+-9.21479 -0.306331 0
+-9.54003 -0.324403 0
+-10.0779 -0.0650464 0
+-10.7997 0.476428 0
+-11.5787 1.0091 0
+-12.2123 1.12848 0
+-12.487 0.553899 0
+-12.2627 -0.69947 0
+-11.5398 -2.29937 0
+-10.4745 -3.73433 0
+-9.32885 -4.54032 0
+-8.3749 -4.50337 0
+-7.79185 -3.74021 0
+-7.60289 -2.62182 0
+-7.67923 -1.58404 0
+-7.80841 -0.924274 0
+-7.79405 -0.686285 0
+-7.54052 -0.68524 0
+-7.08468 -0.650387 0
+-6.56364 -0.401989 0
+-6.13844 0.0353785 0
+-5.91325 0.443459 0
+-5.88927 0.536755 0
+-5.9725 0.134178 0
+-6.02713 -0.718543 0
+-5.94447 -1.74394 0
+-5.69181 -2.55157 0
+-5.31863 -2.82053 0
+-4.92156 -2.45038 0
+-4.59151 -1.6015 0
+-4.37382 -0.605314 0
+-4.2621 0.206368 0
+-4.22584 0.662831 0
+-4.25182 0.824252 0
+-4.37217 0.926467 0
+-4.65976 1.23147 0
+-5.18955 1.86124 0
+-5.98454 2.70283 0
+-6.97606 3.43972 0
+-8.00424 3.69975 0
+-8.8648 3.24705 0
+-9.38461 2.11991 0
+-9.49201 0.642035 0
+-9.24885 -0.701942 0
+-8.82768 -1.46869 0
+-8.44313 -1.44018 0
+-8.26738 -0.703636 0
+-8.36711 0.406938 0
+-8.68905 1.47521 0
+-9.09842 2.19059 0
+-9.44983 2.46851 0
+-9.65513 2.44854 0
+-9.71624 2.37976 0
+-9.70985 2.46089 0
+-9.73592 2.72211 0
+-9.85997 3.00995 0
+-10.0812 3.08042 0
+-10.3439 2.74647 0
+-10.5825 1.99119 0
+-10.7624 0.971654 0
+-10.878 -0.084661 0
+-10.9325 -0.977421 0
+-10.9277 -1.57781 0
+-10.8724 -1.84019 0
+-10.7924 -1.81487 0
+-10.7165 -1.67171 0
+-10.6372 -1.68305 0
+-10.489 -2.10835 0
+-10.1692 -3.03776 0
+-9.59044 -4.29192 0
+-8.73861 -5.44692 0
+-7.70238 -5.9917 0
+-6.65488 -5.55655 0
+-5.79084 -4.10958 0
+-5.24511 -2.02414 0
+-5.02936 0.0243025 0
+-5.01701 1.29809 0
+-4.9862 1.27864 0
+-4.70453 -0.126608 0
+-4.02105 -2.53744 0
+-2.92754 -5.23318 0
+-1.56399 -7.40995 0
+-0.167087 -8.4593 0
+1.01586 -8.15947 0
+1.81149 -6.71015 0
+2.17006 -4.61012 0
+2.16391 -2.44183 0
+1.94108 -0.659698 0
+1.6588 0.533083 0
+1.42736 1.1828 0
+1.28604 1.48289 0
+1.21502 1.63804 0
+1.16942 1.76665 0
+1.11286 1.88123 0
+1.03223 1.93799 0
+0.929272 1.90975 0
+0.79959 1.82868 0
+0.617897 1.77043 0
+0.343943 1.79261 0
+-0.0507502 1.87322 0
+-0.551003 1.89914 0
+-1.08389 1.72618 0
+-1.53849 1.28593 0
+-1.81715 0.677891 0
+-1.89602 0.182073 0
+-1.86247 0.163263 0
+-1.90389 0.897384 0
+-2.24377 2.40017 0
+-3.04762 4.35016 0
+-4.33885 6.16124 0
+-5.96387 7.18987 0
+-7.62645 6.9943 0
+-8.98108 5.53089 0
+-9.7495 3.19509 0
+-9.81395 0.681438 0
+-9.25067 -1.2825 0
+-8.29259 -2.21561 0
+-7.23991 -2.05567 0
+-6.35758 -1.15244 0
+-5.80084 -0.0909187 0
+-5.59496 0.571043 0
+-2.75832 0.541164 0
+-1.39761 0.0554766 0
+-1.39761 0.0451141 0
+-2.20456 -0.0945922 0
+-4.33641 -0.127014 0
+-8.55995 -0.125165 0
+-8.90618 0.0218304 0
+-9.45929 0.488073 0
+-10.1656 1.18271 0
+-10.8773 1.72088 0
+-11.39 1.64116 0
+-11.5121 0.67602 0
+-11.1449 -1.06668 0
+-10.3364 -3.10784 0
+-9.2814 -4.78933 0
+-8.25984 -5.56188 0
+-7.53501 -5.2282 0
+-7.25317 -4.02204 0
+-7.38876 -2.48623 0
+-7.76033 -1.21245 0
+-8.11083 -0.573769 0
+-8.21655 -0.580552 0
+-7.97687 -0.924907 0
+-7.44619 -1.18106 0
+-6.7973 -1.05087 0
+-6.23703 -0.524888 0
+-5.91548 0.121918 0
+-5.86998 0.491266 0
+-6.02505 0.289256 0
+-6.24167 -0.501924 0
+-6.38689 -1.59871 0
+-6.38871 -2.54975 0
+-6.25202 -2.95721 0
+-6.03468 -2.66771 0
+-5.80362 -1.83255 0
+-5.59924 -0.809686 0
+-5.42749 0.0346186 0
+-5.28046 0.515802 0
+-5.16839 0.71219 0
+-5.13953 0.897612 0
+-5.2718 1.36373 0
+-5.63644 2.22588 0
+-6.25062 3.31702 0
+-7.04547 4.23458 0
+-7.87138 4.52566 0
+-8.54435 3.92003 0
+-8.91565 2.49122 0
+-8.93366 0.660054 0
+-8.66844 -0.967161 0
+-8.28575 -1.85138 0
+-7.9804 -1.74553 0
+-7.89763 -0.786394 0
+-8.07711 0.586422 0
+-8.44405 1.84215 0
+-8.85038 2.59693 0
+-9.14559 2.76372 0
+-9.24292 2.54588 0
+-9.15017 2.28702 0
+-8.95262 2.26335 0
+-8.76036 2.52985 0
+-8.64948 2.89906 0
+-8.62992 3.06087 0
+-8.66037 2.77692 0
+-8.70358 2.03441 0
+-8.77293 1.041 0
+-8.89392 0.03633 0
+-9.05727 -0.814062 0
+-9.21157 -1.42351 0
+-9.2949 -1.75685 0
+-9.28362 -1.82615 0
+-9.20798 -1.74735 0
+-9.0988 -1.79223 0
+-8.9447 -2.26245 0
+-8.69142 -3.29104 0
+-8.27603 -4.7073 0
+-7.67234 -6.05062 0
+-6.92067 -6.74336 0
+-6.12397 -6.35324 0
+-5.40913 -4.82442 0
+-4.87107 -2.56219 0
+-4.52715 -0.319616 0
+-4.30526 1.0762 0
+-4.07358 1.04696 0
+-3.69954 -0.500648 0
+-3.11179 -3.12518 0
+-2.33706 -6.00791 0
+-1.49494 -8.25206 0
+-0.752545 -9.2017 0
+-0.258845 -8.65317 0
+-0.0874738 -6.88151 0
+-0.212125 -4.48546 0
+-0.523415 -2.13054 0
+-0.877354 -0.305754 0
+-1.15228 0.808018 0
+-1.2889 1.31943 0
+-1.29753 1.49152 0
+-1.23354 1.57404 0
+-1.15728 1.6904 0
+-1.1015 1.82544 0
+-1.06311 1.89961 0
+-1.02173 1.86837 0
+-0.97064 1.77759 0
+-0.93846 1.73825 0
+-0.984458 1.8386 0
+-1.16665 2.05542 0
+-1.49997 2.23245 0
+-1.93072 2.15693 0
+-2.34744 1.70265 0
+-2.62894 0.959396 0
+-2.70915 0.262283 0
+-2.62586 0.0799785 0
+-2.52495 0.796474 0
+-2.61134 2.48655 0
+-3.06413 4.80295 0
+-3.95225 7.04936 0
+-5.18912 8.42674 0
+-6.54846 8.35364 0
+-7.73665 6.71908 0
+-8.49272 3.95116 0
+-8.67587 0.86459 0
+-8.30701 -1.65136 0
+-7.55116 -2.97147 0
+-6.65315 -2.95367 0
+-5.85702 -1.94856 0
+-5.34164 -0.606306 0
+-5.19196 0.421365 0
+-2.53535 0.751721 0
+-1.31144 0.304805 0
+-1.31144 0.214233 0
+-2.0284 -0.0642823 0
+-3.94622 -0.0606897 0
+-7.70204 0.0106859 0
+-7.96144 0.281231 0
+-8.36613 0.892771 0
+-8.85636 1.67295 0
+-9.30203 2.16655 0
+-9.54204 1.88117 0
+-9.44479 0.578784 0
+-8.96887 -1.5426 0
+-8.19698 -3.87973 0
+-7.32341 -5.6629 0
+-6.59296 -6.29233 0
+-6.21169 -5.60946 0
+-6.26559 -3.96814 0
+-6.68336 -2.06845 0
+-7.26153 -0.634271 0
+-7.74323 -0.092062 0
+-7.91812 -0.405661 0
+-7.70155 -1.14146 0
+-7.16027 -1.72233 0
+-6.4758 -1.73533 0
+-5.86474 -1.13594 0
+-5.49292 -0.249894 0
+-5.42029 0.418639 0
+-5.59604 0.465011 0
+-5.89888 -0.199083 0
+-6.1977 -1.29989 0
+-6.40256 -2.34489 0
+-6.48495 -2.87482 0
+-6.46482 -2.68784 0
+-6.3795 -1.91786 0
+-6.25653 -0.93265 0
+-6.1059 -0.116015 0
+-5.93287 0.342779 0
+-5.75893 0.538256 0
+-5.63323 0.771911 0
+-5.62337 1.35387 0
+-5.78682 2.38933 0
+-6.13622 3.66643 0
+-6.6183 4.71666 0
+-7.1215 5.02885 0
+-7.5132 4.31173 0
+-7.6921 2.67012 0
+-7.63223 0.600191 0
+-7.39743 -1.20197 0
+-7.11752 -2.13129 0
+-6.93522 -1.92783 0
+-6.94633 -0.775277 0
+-7.15996 0.800051 0
+-7.49655 2.17875 0
+-7.82473 2.9251 0
+-8.01961 2.9586 0
+-8.0153 2.54157 0
+-7.82698 2.0987 0
+-7.53344 1.96981 0
+-7.23085 2.22726 0
+-6.98227 2.65049 0
+-6.79022 2.86882 0
+-6.61363 2.60033 0
+-6.43749 1.85827 0
+-6.3504 0.953911 0
+-6.4269 0.112834 0
+-6.65384 -0.587117 0
+-6.93086 -1.1465 0
+-7.11406 -1.57364 0
+-7.10325 -1.83696 0
+-6.93057 -1.92002 0
+-6.6785 -2.0443 0
+-6.4142 -2.52674 0
+-6.16362 -3.54162 0
+-5.91502 -4.9559 0
+-5.64029 -6.32534 0
+-5.31944 -7.06421 0
+-4.95437 -6.71831 0
+-4.56554 -5.21325 0
+-4.17571 -2.95201 0
+-3.7932 -0.702128 0
+-3.40683 0.689843 0
+-2.99728 0.637412 0
+-2.55827 -0.93965 0
+-2.11501 -3.56845 0
+-1.72746 -6.39545 0
+-1.47391 -8.50561 0
+-1.42001 -9.25559 0
+-1.58714 -8.48603 0
+-1.93545 -6.5332 0
+-2.37141 -4.04949 0
+-2.77854 -1.72341 0
+-3.0589 -0.0253873 0
+-3.16789 0.917003 0
+-3.1267 1.27825 0
+-3.00662 1.37144 0
+-2.89144 1.45887 0
+-2.83596 1.63492 0
+-2.84086 1.83034 0
+-2.85749 1.91625 0
+-2.82073 1.83161 0
+-2.69261 1.64948 0
+-2.49291 1.53854 0
+-2.29775 1.64345 0
+-2.20453 1.9622 0
+-2.28016 2.30808 0
+-2.52057 2.39734 0
+-2.84451 2.02659 0
+-3.12769 1.24258 0
+-3.26248 0.397069 0
+-3.21422 0.0317241 0
+-3.04586 0.628106 0
+-2.89689 2.33759 0
+-2.92502 4.83107 0
+-3.23642 7.36077 0
+-3.83647 9.0268 0
+-4.62204 9.1392 0
+-5.41729 7.51434 0
+-6.03656 4.57043 0
+-6.34785 1.17587 0
+-6.31303 -1.68618 0
+-5.99255 -3.29194 0
+-5.51858 -3.42765 0
+-5.05253 -2.4146 0
+-4.74462 -0.914216 0
+-4.70423 0.380975 0
+-2.32355 1.02312 0
+-1.23167 0.59891 0
+-1.23167 0.410593 0
+-1.87058 -0.0526661 0
+-3.60084 -0.033054 0
+-6.94767 0.0701545 0
+-7.06227 0.395839 0
+-7.23138 1.06188 0
+-7.40602 1.8476 0
+-7.50337 2.26391 0
+-7.43758 1.81539 0
+-7.15837 0.299584 0
+-6.68308 -2.01788 0
+-6.10704 -4.45576 0
+-5.58332 -6.18661 0
+-5.27425 -6.6014 0
+-5.29054 -5.59317 0
+-5.64275 -3.61592 0
+-6.22734 -1.48386 0
+-6.85608 -0.00552191 0
+-7.31972 0.371587 0
+-7.46167 -0.263714 0
+-7.23264 -1.37048 0
+-6.70468 -2.25029 0
+-6.03943 -2.40058 0
+-5.42556 -1.74981 0
+-5.01233 -0.663116 0
+-4.86631 0.272623 0
+-4.96531 0.564014 0
+-5.22587 0.061477 0
+-5.54651 -0.97925 0
+-5.84548 -2.04591 0
+-6.07876 -2.64153 0
+-6.23623 -2.53037 0
+-6.32516 -1.82892 0
+-6.3545 -0.903309 0
+-6.32928 -0.141235 0
+-6.25633 0.26983 0
+-6.15414 0.436072 0
+-6.05704 0.674815 0
+-6.00772 1.30455 0
+-6.0401 2.42172 0
+-6.16127 3.7876 0
+-6.34283 4.89823 0
+-6.52825 5.21428 0
+-6.6544 4.43788 0
+-6.67863 2.69435 0
+-6.59906 0.520629 0
+-6.45814 -1.34288 0
+-6.32601 -2.26342 0
+-6.26994 -1.98389 0
+-6.32318 -0.722039 0
+-6.46767 0.944548 0
+-6.63935 2.35042 0
+-6.75417 3.03992 0
+-6.7435 2.94794 0
+-6.5824 2.38048 0
+-6.29741 1.81371 0
+-5.95008 1.62248 0
+-5.60435 1.88154 0
+-5.29337 2.33952 0
+-5.00079 2.57624 0
+-4.66989 2.26943 0
+-4.27682 1.4652 0
+-4.02213 0.69922 0
+-4.0252 0.115906 0
+-4.27091 -0.341406 0
+-4.63988 -0.777523 0
+-4.92311 -1.29041 0
+-4.89292 -1.86715 0
+-4.59285 -2.22009 0
+-4.16314 -2.47401 0
+-3.76125 -2.92864 0
+-3.5116 -3.79127 0
+-3.47052 -4.99698 0
+-3.61573 -6.18013 0
+-3.86185 -6.81809 0
+-4.09306 -6.48711 0
+-4.20017 -5.10614 0
+-4.1112 -3.04097 0
+-3.80958 -1.00374 0
+-3.33878 0.219042 0
+-2.79338 0.0920189 0
+-2.29757 -1.43546 0
+-1.97425 -3.89177 0
+-1.91172 -6.45798 0
+-2.13722 -8.28011 0
+-2.60581 -8.78699 0
+-3.20967 -7.88218 0
+-3.80658 -5.93629 0
+-4.26041 -3.59566 0
+-4.48134 -1.50248 0
+-4.4526 -0.0541278 0
+-4.23443 0.698835 0
+-3.94308 0.986896 0
+-3.71007 1.13843 0
+-3.63421 1.38301 0
+-3.74361 1.74432 0
+-3.98379 2.07052 0
+-4.23921 2.17167 0
+-4.38191 1.9743 0
+-4.32781 1.59538 0
+-4.07621 1.28694 0
+-3.71338 1.28062 0
+-3.37706 1.62587 0
+-3.19722 2.12825 0
+-3.23995 2.44008 0
+-3.47935 2.26599 0
+-3.80933 1.57256 0
+-4.08914 0.676883 0
+-4.20171 0.144299 0
+-4.09937 0.525763 0
+-3.81868 2.0569 0
+-3.46099 4.47338 0
+-3.15018 7.04996 0
+-2.98744 8.86406 0
+-3.02016 9.17192 0
+-3.23328 7.72745 0
+-3.5616 4.89875 0
+-3.91537 1.52964 0
+-4.20939 -1.39215 0
+-4.38752 -3.11382 0
+-4.43768 -3.37749 0
+-4.39626 -2.45602 0
+-4.34152 -0.968953 0
+-4.37407 0.413521 0
+-2.20964 1.22925 0
+-1.17876 0.82384 0
+-1.17876 0.566675 0
+-1.76147 -0.0571026 0
+-3.37012 -0.0403938 0
+-6.45645 0.0580914 0
+-6.43319 0.372582 0
+-6.38003 1.00873 0
+-6.2684 1.73598 0
+-6.0741 2.06961 0
+-5.79408 1.53537 0
+-5.45802 -0.0364646 0
+-5.12905 -2.34685 0
+-4.89169 -4.69312 0
+-4.82899 -6.2493 0
+-4.99455 -6.43584 0
+-5.38868 -5.19904 0
+-5.94841 -3.05618 0
+-6.55701 -0.875261 0
+-7.07228 0.509754 0
+-7.36596 0.665272 0
+-7.36109 -0.268571 0
+-7.05466 -1.67691 0
+-6.5174 -2.78755 0
+-5.87076 -3.04721 0
+-5.2495 -2.37106 0
+-4.76404 -1.14857 0
+-4.47603 -0.0153851 0
+-4.39366 0.481643 0
+-4.48435 0.152176 0
+-4.69567 -0.767927 0
+-4.97419 -1.7674 0
+-5.27654 -2.33917 0
+-5.57234 -2.23457 0
+-5.84187 -1.55938 0
+-6.07286 -0.672315 0
+-6.25879 0.0446961 0
+-6.399 0.410047 0
+-6.4989 0.535974 0
+-6.56822 0.744133 0
+-6.61677 1.3531 0
+-6.64989 2.45485 0
+-6.66721 3.80493 0
+-6.66589 4.89691 0
+-6.6458 5.19419 0
+-6.61316 4.40525 0
+-6.58038 2.66157 0
+-6.56209 0.502345 0
+-6.56879 -1.33618 0
+-6.60021 -2.232 0
+-6.64096 -1.94314 0
+-6.66119 -0.701797 0
+-6.62344 0.906793 0
+-6.49406 2.22105 0
+-6.25524 2.80111 0
+-5.91241 2.60511 0
+-5.49383 1.9619 0
+-5.04188 1.36176 0
+-4.59852 1.17912 0
+-4.19022 1.47324 0
+-3.81856 1.96786 0
+-3.4564 2.21408 0
+-3.03694 1.84997 0
+-2.45753 0.885793 0
+-2.09238 0.334069 0
+-2.0353 0.058826 0
+-2.25156 -0.125144 0
+-2.66787 -0.361209 0
+-3.10134 -0.856948 0
+-3.08659 -1.88189 0
+-2.72284 -2.58384 0
+-2.19626 -3.00058 0
+-1.7419 -3.383 0
+-1.57524 -3.95792 0
+-1.81677 -4.75544 0
+-2.45041 -5.54648 0
+-3.33028 -5.93821 0
+-4.23004 -5.58734 0
+-4.91627 -4.41991 0
+-5.22186 -2.73537 0
+-5.09741 -1.12819 0
+-4.62568 -0.252682 0
+-3.99495 -0.538716 0
+-3.4387 -1.9917 0
+-3.16065 -4.16981 0
+-3.26965 -6.34898 0
+-3.74633 -7.80343 0
+-4.45237 -8.08095 0
+-5.17806 -7.15648 0
+-5.7112 -5.40315 0
+-5.90399 -3.40287 0
+-5.71671 -1.68976 0
+-5.22579 -0.545047 0
+-4.59628 0.0693284 0
+-4.02941 0.420033 0
+-3.70133 0.810349 0
+-3.71009 1.39177 0
+-4.04604 2.08028 0
+-4.59538 2.61986 0
+-5.17724 2.75354 0
+-5.6042 2.40127 0
+-5.74661 1.73779 0
+-5.57802 1.11835 0
+-5.18402 0.886622 0
+-4.72999 1.17185 0
+-4.39974 1.79799 0
+-4.32802 2.36836 0
+-4.55179 2.48976 0
+-4.99712 2.01789 0
+-5.50503 1.18479 0
+-5.8854 0.524677 0
+-5.97912 0.619482 0
+-5.70746 1.78524 0
+-5.09437 3.86029 0
+-4.25786 6.21346 0
+-3.37577 7.98197 0
+-2.63669 8.43284 0
+-2.1894 7.28016 0
+-2.10387 4.81322 0
+-2.35482 1.78059 0
+-2.83354 -0.913431 0
+-3.38547 -2.56188 0
+-3.862 -2.90096 0
+-4.16937 -2.14864 0
+-4.29788 -0.84045 0
+-4.31988 0.43552 0
+-2.22201 1.26496 0
+-1.16267 0.900742 0
+-1.16267 0.641884 0
+-1.69631 -0.0682988 0
+-3.24724 -0.0651363 0
+-6.22168 0.00674762 0
+-6.11878 0.269678 0
+-5.93675 0.826701 0
+-5.66782 1.46706 0
+-5.33755 1.73935 0
+-5.00832 1.20616 0
+-4.76715 -0.277622 0
+-4.7004 -2.4136 0
+-4.86493 -4.52858 0
+-5.26682 -5.8474 0
+-5.85542 -5.84723 0
+-6.53465 -4.51979 0
+-7.18672 -2.40409 0
+-7.69983 -0.362146 0
+-7.99154 0.801471 0
+-8.02216 0.695905 0
+-7.79633 -0.494399 0
+-7.35509 -2.11814 0
+-6.76329 -3.37934 0
+-6.0964 -3.7141 0
+-5.42931 -3.03815 0
+-4.82839 -1.74948 0
+-4.34678 -0.49699 0
+-4.02182 0.156692 0
+-3.87337 0.00372775 0
+-3.90233 -0.738959 0
+-4.09039 -1.57932 0
+-4.40292 -2.02663 0
+-4.79631 -1.84117 0
+-5.22798 -1.1277 0
+-5.6649 -0.23539 0
+-6.08668 0.466486 0
+-6.48223 0.805597 0
+-6.84229 0.896034 0
+-7.15283 1.05468 0
+-7.39364 1.59392 0
+-7.54433 2.60554 0
+-7.59659 3.85719 0
+-7.56617 4.8665 0
+-7.49563 5.12366 0
+-7.44299 4.35261 0
+-7.45945 2.67803 0
+-7.56606 0.60896 0
+-7.74017 -1.16206 0
+-7.91829 -2.05388 0
+-8.01463 -1.84679 0
+-7.94883 -0.767589 0
+-7.6726 0.630567 0
+-7.18527 1.73373 0
+-6.53229 2.14813 0
+-5.78785 1.86068 0
+-5.03 1.20405 0
+-4.31828 0.650047 0
+-3.68119 0.542027 0
+-3.11624 0.908288 0
+-2.60248 1.4541 0
+-2.12193 1.73353 0
+-1.66237 1.39042 0
+-1.00051 0.223935 0
+-0.695942 0.0294994 0
+-0.640092 0.00297555 0
+-0.760771 -0.00446465 0
+-1.08964 -0.0323396 0
+-1.69355 -0.253037 0
+-1.75999 -1.81545 0
+-1.49497 -2.84886 0
+-1.06538 -3.43016 0
+-0.744219 -3.70416 0
+-0.801527 -3.90061 0
+-1.39466 -4.1623 0
+-2.50767 -4.43346 0
+-3.95286 -4.49302 0
+-5.42983 -4.11037 0
+-6.62129 -3.22844 0
+-7.29408 -2.06258 0
+-7.37245 -1.04982 0
+-6.9595 -0.66563 0
+-6.29892 -1.19929 0
+-5.68943 -2.6012 0
+-5.38139 -4.47785 0
+-5.4927 -6.23766 0
+-5.9735 -7.32263 0
+-6.63108 -7.42336 0
+-7.20363 -6.58393 0
+-7.45416 -5.15262 0
+-7.25082 -3.6062 0
+-6.60741 -2.33317 0
+-5.67407 -1.47838 0
+-4.68641 -0.918325 0
+-3.89312 -0.373255 0
+-3.48542 0.402654 0
+-3.54719 1.45354 0
+-4.03676 2.56985 0
+-4.80318 3.38629 0
+-5.63171 3.58207 0
+-6.30643 3.07598 0
+-6.67308 2.10445 0
+-6.68402 1.12929 0
+-6.41074 0.613341 0
+-6.01911 0.780223 0
+-5.71406 1.49294 0
+-5.67056 2.32486 0
+-5.97284 2.79204 0
+-6.5813 2.62635 0
+-7.33815 1.94164 0
+-8.0108 1.19732 0
+-8.36014 0.968826 0
+-8.2133 1.6384 0
+-7.51924 3.16623 0
+-6.37071 5.06493 0
+-4.98484 6.5961 0
+-3.64582 7.09382 0
+-2.62533 6.25967 0
+-2.10479 4.29268 0
+-2.12491 1.8007 0
+-2.58016 -0.458176 0
+-3.26113 -1.88091 0
+-3.92927 -2.23282 0
+-4.39657 -1.68134 0
+-4.5817 -0.655325 0
+-4.52512 0.378947 0
+-2.33918 1.10453 0
+-1.18621 0.819002 0
+-1.18621 0.632476 0
+-1.64821 -0.0757027 0
+-3.17357 -0.0858927 0
+-6.11734 -0.0423831 0
+-6.01219 0.164536 0
+-5.82495 0.639463 0
+-5.56145 1.20357 0
+-5.2734 1.45131 0
+-5.05426 0.987023 0
+-5.01316 -0.318703 0
+-5.23535 -2.1914 0
+-5.74542 -4.0185 0
+-6.48998 -5.10283 0
+-7.34802 -4.98918 0
+-8.16527 -3.70253 0
+-8.79867 -1.77068 0
+-9.15354 -0.00726776 0
+-9.20066 0.84861 0
+-8.96963 0.464878 0
+-8.52465 -0.939369 0
+-7.936 -2.70677 0
+-7.26006 -4.05527 0
+-6.53476 -4.43939 0
+-5.7887 -3.7842 0
+-5.05547 -2.4827 0
+-4.38343 -1.16902 0
+-3.83418 -0.392548 0
+-3.46935 -0.361087 0
+-3.33177 -0.876531 0
+-3.43036 -1.48073 0
+-3.73683 -1.72015 0
+-4.19642 -1.38157 0
+-4.74727 -0.576836 0
+-5.33855 0.355892 0
+-5.93839 1.06633 0
+-6.52916 1.39638 0
+-7.09484 1.46172 0
+-7.60996 1.5698 0
+-8.03838 2.02234 0
+-8.34476 2.91193 0
+-8.51424 4.02668 0
+-8.56933 4.9216 0
+-8.57158 5.12592 0
+-8.60249 4.38353 0
+-8.72953 2.80508 0
+-8.9723 0.851734 0
+-9.28523 -0.849115 0
+-9.56605 -1.77306 0
+-9.68763 -1.7252 0
+-9.54122 -0.913993 0
+-9.07393 0.163284 0
+-8.30576 0.965568 0
+-7.31957 1.16194 0
+-6.22957 0.770683 0
+-5.14338 0.117868 0
+-4.13341 -0.359918 0
+-3.22684 -0.364539 0
+-2.41311 0.0945565 0
+-1.65957 0.700565 0
+-0.927436 1.0014 0
+-0.226702 0.689683 0
+-0.0390784 0.0363114 0
+-0.0130832 0.00350425 0
+-0.0104142 0.00030651 0
+-0.0145126 -0.000366182 0
+-0.0427135 -0.00413869 0
+-0.242674 -0.0530763 0
+-0.698946 -1.35917 0
+-0.804716 -2.74309 0
+-0.724324 -3.51055 0
+-0.757295 -3.67118 0
+-1.17454 -3.48336 0
+-2.12592 -3.21091 0
+-3.58764 -2.97174 0
+-5.36314 -2.71751 0
+-7.14033 -2.33318 0
+-8.58834 -1.78042 0
+-9.46245 -1.18846 0
+-9.68154 -0.830726 0
+-9.35082 -0.996346 0
+-8.7208 -1.82931 0
+-8.09617 -3.22582 0
+-7.72769 -4.84632 0
+-7.72694 -6.23841 0
+-8.03502 -7.01453 0
+-8.45497 -7.00342 0
+-8.73263 -6.30626 0
+-8.65365 -5.23159 0
+-8.12014 -4.1397 0
+-7.18175 -3.27156 0
+-6.0151 -2.64502 0
+-4.86466 -2.06877 0
+-3.96906 -1.26884 0
+-3.49736 -0.0690458 0
+-3.51117 1.46736 0
+-3.95852 3.01721 0
+-4.69587 4.12364 0
+-5.53004 4.41625 0
+-6.26932 3.81526 0
+-6.77233 2.60746 0
+-6.98369 1.34066 0
+-6.94756 0.577216 0
+-6.79409 0.626752 0
+-6.69976 1.39861 0
+-6.8305 2.4556 0
+-7.28315 3.2447 0
+-8.04358 3.38678 0
+-8.97631 2.87437 0
+-9.85243 2.07345 0
+-10.4106 1.52704 0
+-10.4349 1.66268 0
+-9.82574 2.55704 0
+-8.64127 3.88046 0
+-7.09224 5.04707 0
+-5.48797 5.48956 0
+-4.14836 4.92006 0
+-3.31018 3.45451 0
+-3.05995 1.55047 0
+-3.31698 -0.201146 0
+-3.87249 -1.32539 0
+-4.4689 -1.63642 0
+-4.88831 -1.26193 0
+-5.01812 -0.525516 0
+-4.87458 0.235405 0
+-2.50833 0.817067 0
+-1.24417 0.636729 0
+-1.24417 0.567006 0
+-1.58723 -0.0725516 0
+-3.07883 -0.0874571 0
+-5.9825 -0.0576166 0
+-5.93672 0.118761 0
+-5.84341 0.546161 0
+-5.71141 1.07157 0
+-5.59067 1.33058 0
+-5.56782 0.964196 0
+-5.7391 -0.14741 0
+-6.17028 -1.76021 0
+-6.86142 -3.32733 0
+-7.7336 -4.23064 0
+-8.64524 -4.07752 0
+-9.43293 -2.91483 0
+-9.96004 -1.24355 0
+-10.1539 0.186603 0
+-10.0174 0.712177 0
+-9.61314 0.0605827 0
+-9.02861 -1.52389 0
+-8.34124 -3.39413 0
+-7.59747 -4.79904 0
+-6.81416 -5.22268 0
+-5.99791 -4.60045 0
+-5.16948 -3.31111 0
+-4.37933 -1.95916 0
+-3.70494 -1.06692 0
+-3.23063 -0.83538 0
+-3.01914 -1.08801 0
+-3.08907 -1.41079 0
+-3.40923 -1.39997 0
+-3.91236 -0.87842 0
+-4.52077 0.0315821 0
+-5.17081 1.00595 0
+-5.82493 1.72046 0
+-6.46718 2.03863 0
+-7.08789 2.08244 0
+-7.66853 2.15045 0
+-8.17722 2.53104 0
+-8.57904 3.31375 0
+-8.8561 4.30376 0
+-9.02575 5.09126 0
+-9.14361 5.24378 0
+-9.28561 4.52553 0
+-9.51434 3.03382 0
+-9.84495 1.18235 0
+-10.2272 -0.466831 0
+-10.554 -1.44632 0
+-10.6934 -1.5857 0
+-10.5336 -1.07385 0
+-10.0196 -0.350669 0
+-9.17052 0.116485 0
+-8.06788 0.0593081 0
+-6.82411 -0.473077 0
+-5.54584 -1.1604 0
+-4.30891 -1.59684 0
+-3.15434 -1.51911 0
+-2.10364 -0.956135 0
+-1.18407 -0.219001 0
+-0.454794 0.272122 0
+-0.0312628 0.266153 0
+-0.00349001 0.00853865 0
+-0.000460781 0.000475061 0
+-0.000188802 3.46448e-05 0
+-0.000510399 -4.45927e-05 0
+-0.00386492 -0.000784179 0
+-0.0335952 -0.023346 0
+-0.322144 -1.07062 0
+-0.654022 -2.41121 0
+-1.01353 -3.15104 0
+-1.53229 -3.15241 0
+-2.35893 -2.65671 0
+-3.57204 -1.99779 0
+-5.13117 -1.4126 0
+-6.871 -0.977672 0
+-8.54096 -0.663208 0
+-9.87877 -0.442608 0
+-10.6931 -0.374103 0
+-10.9258 -0.598075 0
+-10.6692 -1.25295 0
+-10.1318 -2.36667 0
+-9.56289 -3.79471 0
+-9.16455 -5.24465 0
+-9.02455 -6.37841 0
+-9.09485 -6.94423 0
+-9.22197 -6.87629 0
+-9.21478 -6.31346 0
+-8.92114 -5.52522 0
+-8.28407 -4.77677 0
+-7.35863 -4.19699 0
+-6.28851 -3.71514 0
+-5.25642 -3.10084 0
+-4.42957 -2.09568 0
+-3.91881 -0.579799 0
+-3.76085 1.30941 0
+-3.92248 3.17885 0
+-4.31963 4.5208 0
+-4.84272 4.93934 0
+-5.38237 4.35492 0
+-5.85225 3.07734 0
+-6.20722 1.69563 0
+-6.45447 0.824466 0
+-6.65359 0.825879 0
+-6.90121 1.64623 0
+-7.29975 2.85414 0
+-7.91711 3.86206 0
+-8.74961 4.21928 0
+-9.70288 3.82764 0
+-10.6015 2.97211 0
+-11.2299 2.15538 0
+-11.3942 1.82706 0
+-10.9881 2.15088 0
+-10.0364 2.92883 0
+-8.70134 3.71197 0
+-7.24168 4.0299 0
+-5.93918 3.61756 0
+-5.0151 2.53043 0
+-4.5677 1.10308 0
+-4.55286 -0.215986 0
+-4.81374 -1.06451 0
+-5.14608 -1.30407 0
+-5.37216 -1.03585 0
+-5.39541 -0.502272 0
+-5.21975 0.0597509 0
+-2.66981 0.534362 0
+-1.32318 0.451662 0
+-1.32318 0.491065 0
+-1.49696 -0.058635 0
+-2.91874 -0.0668754 0
+-5.70535 -0.0295163 0
+-5.74091 0.154324 0
+-5.77868 0.58394 0
+-5.8215 1.11439 0
+-5.89662 1.40572 0
+-6.05655 1.12414 0
+-6.36133 0.157376 0
+-6.84927 -1.27225 0
+-7.51022 -2.66637 0
+-8.275 -3.46585 0
+-9.02813 -3.32437 0
+-9.64001 -2.30294 0
+-10.0056 -0.877968 0
+-10.0737 0.254773 0
+-9.85553 0.493991 0
+-9.40918 -0.385758 0
+-8.81024 -2.12282 0
+-8.12199 -4.08237 0
+-7.3797 -5.54132 0
+-6.59469 -6.00768 0
+-5.77395 -5.42117 0
+-4.94303 -4.14202 0
+-4.1588 -2.74338 0
+-3.50401 -1.7217 0
+-3.06466 -1.27472 0
+-2.90019 -1.25246 0
+-3.02089 -1.29007 0
+-3.38378 -1.03707 0
+-3.90873 -0.353463 0
+-4.50688 0.629749 0
+-5.10807 1.60715 0
+-5.67534 2.28773 0
+-6.20208 2.56537 0
+-6.69616 2.57653 0
+-7.16166 2.61594 0
+-7.58877 2.95816 0
+-7.95757 3.68256 0
+-8.25273 4.59893 0
+-8.47967 5.3182 0
+-8.67099 5.43511 0
+-8.87674 4.73129 0
+-9.14104 3.29813 0
+-9.47578 1.51709 0
+-9.84466 -0.0979399 0
+-10.1663 -1.12464 0
+-10.3366 -1.41546 0
+-10.2607 -1.14976 0
+-9.88268 -0.728648 0
+-9.19972 -0.566462 0
+-8.25644 -0.883969 0
+-7.12456 -1.60495 0
+-5.87944 -2.40551 0
+-4.5861 -2.89018 0
+-3.30182 -2.80339 0
+-2.09334 -2.16462 0
+-1.05762 -1.25472 0
+-0.325635 -0.459858 0
+-0.00785496 -0.0516264 0
+-0.000472164 0.00115586 0
+-3.50368e-05 3.80693e-05 0
+3.21041e-07 -6.00054e-07 0
+-3.83487e-05 -6.02852e-06 0
+-0.000515945 -0.000306688 0
+-0.00779413 -0.0160678 0
+-0.280883 -0.797534 0
+-0.877689 -1.8144 0
+-1.71758 -2.31114 0
+-2.73799 -2.13199 0
+-3.90677 -1.48792 0
+-5.19404 -0.710512 0
+-6.54267 -0.0639482 0
+-7.85519 0.334852 0
+-9.00437 0.485979 0
+-9.86488 0.417912 0
+-10.3532 0.114258 0
+-10.4588 -0.492523 0
+-10.2512 -1.46052 0
+-9.85939 -2.75849 0
+-9.42866 -4.22544 0
+-9.07292 -5.60038 0
+-8.84048 -6.61083 0
+-8.70669 -7.07802 0
+-8.59473 -6.98824 0
+-8.41413 -6.49405 0
+-8.09941 -5.83993 0
+-7.63318 -5.243 0
+-7.04634 -4.78383 0
+-6.39957 -4.3619 0
+-5.75765 -3.74275 0
+-5.1698 -2.68353 0
+-4.66339 -1.08619 0
+-4.25077 0.896793 0
+-3.9414 2.86949 0
+-3.75044 4.32984 0
+-3.69802 4.88692 0
+-3.80015 4.45705 0
+-4.05784 3.33503 0
+-4.45225 2.09005 0
+-4.95058 1.32279 0
+-5.52015 1.39545 0
+-6.14202 2.26811 0
+-6.81478 3.52689 0
+-7.54432 4.5916 0
+-8.32356 4.99852 0
+-9.11177 4.61586 0
+-9.82599 3.68633 0
+-10.3524 2.68181 0
+-10.5774 2.05202 0
+-10.4276 2.00107 0
+-9.90328 2.40454 0
+-9.08906 2.89775 0
+-8.13489 3.07574 0
+-7.2133 2.69597 0
+-6.46815 1.78528 0
+-5.9749 0.609822 0
+-5.72705 -0.463834 0
+-5.65277 -1.13879 0
+-5.65255 -1.3043 0
+-5.64052 -1.04788 0
+-5.57206 -0.570729 0
+-5.44857 -0.0637446 0
+-2.78176 0.388549 0
+-1.40565 0.356595 0
+-1.40565 0.447445 0
+-1.38283 -0.0400098 0
+-2.69605 -0.0337984 0
+-5.27431 0.0271043 0
+-5.36841 0.248426 0
+-5.50408 0.719624 0
+-5.6749 1.28521 0
+-5.87928 1.6101 0
+-6.12791 1.37279 0
+-6.43954 0.469012 0
+-6.82733 -0.884441 0
+-7.2835 -2.21019 0
+-7.77063 -2.9787 0
+-8.2256 -2.8694 0
+-8.57537 -1.95315 0
+-8.75862 -0.694702 0
+-8.74354 0.239706 0
+-8.53402 0.284481 0
+-8.16186 -0.757906 0
+-7.66973 -2.61493 0
+-7.09421 -4.65788 0
+-6.45776 -6.17777 0
+-5.77329 -6.69213 0
+-5.05816 -6.1363 0
+-4.34866 -4.8515 0
+-3.70583 -3.38621 0
+-3.20673 -2.22078 0
+-2.92321 -1.55822 0
+-2.89634 -1.27933 0
+-3.11863 -1.06776 0
+-3.53336 -0.622319 0
+-4.05179 0.164977 0
+-4.58094 1.15891 0
+-5.05046 2.07667 0
+-5.42809 2.66537 0
+-5.71903 2.85631 0
+-5.95172 2.80923 0
+-6.15828 2.82251 0
+-6.35906 3.15894 0
+-6.55785 3.88136 0
+-6.74807 4.78915 0
+-6.92471 5.49484 0
+-7.09405 5.60446 0
+-7.27482 4.91207 0
+-7.48941 3.51272 0
+-7.74942 1.77711 0
+-8.04312 0.195763 0
+-8.33116 -0.836587 0
+-8.55325 -1.19337 0
+-8.64274 -1.06025 0
+-8.54304 -0.828337 0
+-8.21899 -0.890505 0
+-7.65995 -1.44301 0
+-6.87595 -2.38894 0
+-5.89238 -3.38907 0
+-4.74919 -4.03337 0
+-3.50773 -4.04484 0
+-2.26323 -3.40911 0
+-1.15482 -2.36313 0
+-0.356619 -1.25806 0
+-0.00856444 -0.39968 0
+-0.000518595 -0.00688998 0
+-4.75556e-05 -0.000432827 0
+-5.68375e-06 -4.23696e-05 0
+-4.42579e-05 3.24296e-05 0
+-0.00047473 0.00012369 0
+-0.00862206 -0.00792042 0
+-0.401184 -0.404971 0
+-1.33404 -0.881533 0
+-2.63745 -1.00773 0
+-4.06899 -0.700436 0
+-5.42494 -0.131962 0
+-6.57342 0.43798 0
+-7.45301 0.815652 0
+-8.05628 0.938122 0
+-8.40963 0.839335 0
+-8.55651 0.5648 0
+-8.54634 0.104096 0
+-8.4278 -0.61106 0
+-8.24375 -1.64457 0
+-8.02667 -2.97557 0
+-7.79576 -4.45635 0
+-7.55774 -5.83839 0
+-7.31227 -6.8563 0
+-7.06039 -7.3299 0
+-6.81236 -7.23627 0
+-6.58989 -6.71651 0
+-6.41962 -6.0102 0
+-6.31859 -5.34403 0
+-6.2778 -4.8246 0
+-6.25267 -4.38703 0
+-6.16768 -3.82772 0
+-5.93736 -2.91384 0
+-5.49792 -1.52562 0
+-4.83851 0.237384 0
+-4.01904 2.05003 0
+-3.16514 3.47595 0
+-2.43875 4.16053 0
+-1.99285 4.01115 0
+-1.92617 3.26835 0
+-2.25459 2.41846 0
+-2.91023 1.97844 0
+-3.76778 2.253 0
+-4.68625 3.18658 0
+-5.54921 4.38985 0
+-6.28897 5.33137 0
+-6.88842 5.59798 0
+-7.36407 5.09151 0
+-7.74117 4.06343 0
+-8.0336 2.97424 0
+-8.23674 2.25515 0
+-8.33383 2.09817 0
+-8.30968 2.38039 0
+-8.16272 2.75079 0
+-7.90939 2.82241 0
+-7.57982 2.3664 0
+-7.20868 1.41415 0
+-6.82701 0.228148 0
+-6.45914 -0.831705 0
+-6.12531 -1.47262 0
+-5.8463 -1.5833 0
+-5.64485 -1.24933 0
+-5.53998 -0.675592 0
+-5.53402 -0.0697057 0
+-2.83786 0.449956 0
+-1.47762 0.398329 0
+-1.47762 0.458638 0
+-1.26974 -0.0261268 0
+-2.45881 -0.00566047 0
+-4.7805 0.0810777 0
+-4.87862 0.346544 0
+-5.02868 0.86969 0
+-5.21879 1.47533 0
+-5.42868 1.82 0
+-5.64024 1.58436 0
+-5.84337 0.672157 0
+-6.03546 -0.692345 0
+-6.21587 -2.02976 0
+-6.37946 -2.8151 0
+-6.51291 -2.73594 0
+-6.59628 -1.86977 0
+-6.60904 -0.681933 0
+-6.53728 0.16795 0
+-6.37788 0.125092 0
+-6.13737 -0.998402 0
+-5.82667 -2.92563 0
+-5.45574 -5.0288 0
+-5.03243 -6.60107 0
+-4.56693 -7.15763 0
+-4.08002 -6.6232 0
+-3.60996 -5.32155 0
+-3.21228 -3.78388 0
+-2.9496 -2.48345 0
+-2.87349 -1.63433 0
+-3.00484 -1.14797 0
+-3.32174 -0.750845 0
+-3.7614 -0.18265 0
+-4.23618 0.639763 0
+-4.65789 1.58063 0
+-4.96148 2.38027 0
+-5.11996 2.82385 0
+-5.14607 2.88243 0
+-5.08151 2.74467 0
+-4.97882 2.71982 0
+-4.88356 3.06368 0
+-4.82294 3.82075 0
+-4.80415 4.77036 0
+-4.82095 5.51165 0
+-4.86443 5.64795 0
+-4.93216 4.9798 0
+-5.03156 3.61213 0
+-5.17626 1.92181 0
+-5.37723 0.396738 0
+-5.63306 -0.580746 0
+-5.92335 -0.903075 0
+-6.20769 -0.775912 0
+-6.43025 -0.605773 0
+-6.52812 -0.79263 0
+-6.4413 -1.52982 0
+-6.12283 -2.70741 0
+-5.54848 -3.96341 0
+-4.72604 -4.85581 0
+-3.70316 -5.06772 0
+-2.5715 -4.54077 0
+-1.46477 -3.46986 0
+-0.553129 -2.1697 0
+-0.0356639 -0.917146 0
+-0.0041252 -0.0384286 0
+-0.000661269 -0.00389672 0
+-0.000282622 -0.000420978 0
+-0.000611741 0.000361473 0
+-0.00375037 0.00326232 0
+-0.0333254 0.0216547 0
+-0.685584 0.247288 0
+-1.99415 0.427039 0
+-3.6602 0.658316 0
+-5.32289 0.962268 0
+-6.67283 1.21799 0
+-7.51841 1.28357 0
+-7.81151 1.10876 0
+-7.63384 0.760458 0
+-7.15351 0.359007 0
+-6.56726 -0.021452 0
+-6.04472 -0.418437 0
+-5.68809 -0.967689 0
+-5.51549 -1.81717 0
+-5.47099 -3.02008 0
+-5.45744 -4.46989 0
+-5.38136 -5.91447 0
+-5.19409 -7.04357 0
+-4.91484 -7.60913 0
+-4.627 -7.52411 0
+-4.44823 -6.89529 0
+-4.48396 -5.97446 0
+-4.78016 -5.04783 0
+-5.29245 -4.3123 0
+-5.8848 -3.79468 0
+-6.3607 -3.35182 0
+-6.51882 -2.75571 0
+-6.21624 -1.8282 0
+-5.41946 -0.559382 0
+-4.22643 0.856996 0
+-2.8501 2.09963 0
+-1.56616 2.87659 0
+-0.638993 3.08399 0
+-0.248921 2.87828 0
+-0.444292 2.61384 0
+-1.13413 2.66828 0
+-2.12283 3.2417 0
+-3.17359 4.23734 0
+-4.07803 5.2943 0
+-4.70931 5.96264 0
+-5.0438 5.93247 0
+-5.14887 5.19658 0
+-5.14561 4.06017 0
+-5.16229 2.99093 0
+-5.29398 2.38683 0
+-5.57824 2.38243 0
+-5.99019 2.79235 0
+-6.45451 3.21511 0
+-6.86949 3.23739 0
+-7.13681 2.63372 0
+-7.19003 1.46737 0
+-7.0149 0.0530158 0
+-6.65597 -1.19063 0
+-6.20687 -1.92172 0
+-5.78571 -2.00446 0
+-5.50175 -1.5333 0
+-5.42193 -0.75541 0
+-5.54545 0.05381 0
+-2.872 0.694159 0
+-1.53712 0.557025 0
+-1.53712 0.517589 0
+-1.19095 -0.0256994 0
+-2.2785 -7.50116e-06 0
+-4.3755 0.0986965 0
+-4.41567 0.386713 0
+-4.48351 0.937533 0
+-4.57054 1.56237 0
+-4.65895 1.90842 0
+-4.72865 1.65407 0
+-4.76432 0.707833 0
+-4.75951 -0.697151 0
+-4.71651 -2.07275 0
+-4.64304 -2.88856 0
+-4.54802 -2.83095 0
+-4.43867 -1.97911 0
+-4.32012 -0.800474 0
+-4.1967 0.0445309 0
+-4.07277 0.00117522 0
+-3.95173 -1.11944 0
+-3.83355 -3.04381 0
+-3.7133 -5.14905 0
+-3.5827 -6.73167 0
+-3.43571 -7.30462 0
+-3.27637 -6.78253 0
+-3.12498 -5.47295 0
+-3.01773 -3.89111 0
+-2.99798 -2.50319 0
+-3.10096 -1.53135 0
+-3.33788 -0.911037 0
+-3.68642 -0.402307 0
+-4.09221 0.223148 0
+-4.48142 1.02898 0
+-4.77978 1.87899 0
+-4.93167 2.53217 0
+-4.91334 2.80552 0
+-4.7363 2.7054 0
+-4.4408 2.44917 0
+-4.08214 2.36116 0
+-3.71501 2.69656 0
+-3.38102 3.48676 0
+-3.10286 4.49221 0
+-2.88625 5.29503 0
+-2.72774 5.48945 0
+-2.62482 4.87689 0
+-2.58352 3.57082 0
+-2.61994 1.95824 0
+-2.75492 0.531712 0
+-3.00352 -0.332142 0
+-3.36393 -0.542663 0
+-3.80972 -0.33012 0
+-4.28839 -0.127098 0
+-4.72689 -0.354129 0
+-5.04308 -1.21363 0
+-5.16078 -2.5897 0
+-5.02527 -4.09892 0
+-4.61628 -5.2648 0
+-3.95545 -5.72854 0
+-3.10407 -5.39215 0
+-2.14722 -4.4267 0
+-1.16829 -3.14864 0
+-0.273703 -1.81173 0
+-0.0521612 -0.25997 0
+-0.0202513 -0.0358066 0
+-0.0155334 -0.00513881 0
+-0.0188231 0.00365116 0
+-0.0485278 0.032967 0
+-0.257705 0.230832 0
+-1.39655 1.38614 0
+-3.00146 2.03195 0
+-4.79166 2.44852 0
+-6.42314 2.59375 0
+-7.57266 2.36752 0
+-8.03975 1.75066 0
+-7.79947 0.868487 0
+-6.99622 -0.0427903 0
+-5.88914 -0.748066 0
+-4.77099 -1.1396 0
+-3.88574 -1.30369 0
+-3.36757 -1.48586 0
+-3.21666 -1.96808 0
+-3.31773 -2.919 0
+-3.49504 -4.29258 0
+-3.585 -5.82451 0
+-3.50072 -7.12785 0
+-3.26527 -7.84458 0
+-3.00212 -7.78725 0
+-2.88641 -7.011 0
+-3.0744 -5.78646 0
+-3.63583 -4.4864 0
+-4.51321 -3.43493 0
+-5.52362 -2.78427 0
+-6.40396 -2.47147 0
+-6.88566 -2.27401 0
+-6.77542 -1.93843 0
+-6.01774 -1.31706 0
+-4.72033 -0.440416 0
+-3.1333 0.512605 0
+-1.58611 1.3294 0
+-0.39918 1.89706 0
+0.20348 2.27562 0
+0.153141 2.66418 0
+-0.451897 3.27332 0
+-1.38454 4.17434 0
+-2.36333 5.21613 0
+-3.13779 6.06876 0
+-3.55724 6.38209 0
+-3.60322 5.97846 0
+-3.37935 4.97271 0
+-3.06639 3.74721 0
+-2.86025 2.78479 0
+-2.91271 2.43929 0
+-3.29034 2.76006 0
+-3.95985 3.46185 0
+-4.80093 4.0562 0
+-5.6423 4.07876 0
+-6.31114 3.30256 0
+-6.68274 1.83897 0
+-6.7162 0.0864735 0
+-6.4652 -1.44163 0
+-6.05968 -2.32725 0
+-5.66335 -2.40079 0
+-5.42075 -1.7759 0
+-5.41061 -0.765547 0
+-5.61933 0.262523 0
+-2.94691 1.01324 0
+-1.59815 0.754405 0
+-1.59815 0.589959 0
+-1.17315 -0.0429651 0
+-2.2182 -0.0270627 0
+-4.20389 0.0578285 0
+-4.1423 0.325131 0
+-4.05739 0.852621 0
+-3.95347 1.45846 0
+-3.83765 1.79261 0
+-3.71681 1.53324 0
+-3.59549 0.586524 0
+-3.47426 -0.81838 0
+-3.34875 -2.19825 0
+-3.21088 -3.02643 0
+-3.05274 -2.98908 0
+-2.87267 -2.15917 0
+-2.68067 -0.992473 0
+-2.50024 -0.135892 0
+-2.36415 -0.134916 0
+-2.30432 -1.17926 0
+-2.33979 -3.00833 0
+-2.46797 -5.02087 0
+-2.66387 -6.53576 0
+-2.88895 -7.07954 0
+-3.10656 -6.56491 0
+-3.29707 -5.28243 0
+-3.46491 -3.72328 0
+-3.63395 -2.33415 0
+-3.83347 -1.33182 0
+-4.08131 -0.663189 0
+-4.37201 -0.111604 0
+-4.67452 0.525658 0
+-4.93976 1.29423 0
+-5.1144 2.05364 0
+-5.1554 2.57318 0
+-5.04035 2.69047 0
+-4.77121 2.43626 0
+-4.37141 2.04937 0
+-3.87849 1.86824 0
+-3.33537 2.15344 0
+-2.78327 2.93465 0
+-2.25767 3.96661 0
+-1.78747 4.82484 0
+-1.39632 5.0983 0
+-1.10507 4.58564 0
+-0.933478 3.39923 0
+-0.899561 1.92433 0
+-1.01629 0.648441 0
+-1.2866 -0.0618245 0
+-1.6988 -0.130465 0
+-2.22396 0.195037 0
+-2.81624 0.46519 0
+-3.41621 0.24584 0
+-3.95687 -0.672971 0
+-4.37195 -2.17461 0
+-4.60554 -3.86533 0
+-4.62204 -5.24829 0
+-4.41499 -5.9356 0
+-4.01187 -5.79526 0
+-3.47314 -4.96543 0
+-2.88616 -3.73561 0
+-2.33496 -2.36293 0
+-1.6045 -0.990433 0
+-1.25276 -0.387542 0
+-1.13051 -0.127387 0
+-1.18798 0.0611179 0
+-1.51542 0.360414 0
+-2.30371 1.01912 0
+-3.24784 2.33027 0
+-4.58012 3.36423 0
+-6.06184 3.93025 0
+-7.35069 3.8826 0
+-8.13719 3.15403 0
+-8.23902 1.8525 0
+-7.65013 0.279601 0
+-6.53426 -1.15866 0
+-5.16963 -2.11269 0
+-3.86555 -2.44367 0
+-2.87674 -2.2925 0
+-2.33907 -2.02354 0
+-2.2436 -2.06355 0
+-2.45596 -2.70663 0
+-2.77496 -3.97358 0
+-3.01075 -5.58872 0
+-3.05506 -7.08353 0
+-2.91864 -7.981 0
+-2.72316 -7.98273 0
+-2.65158 -7.08258 0
+-2.87468 -5.56336 0
+-3.47969 -3.88139 0
+-4.42565 -2.48896 0
+-5.54158 -1.66834 0
+-6.56912 -1.44392 0
+-7.23605 -1.60707 0
+-7.33692 -1.83756 0
+-6.79699 -1.85698 0
+-5.70074 -1.53666 0
+-4.27528 -0.912853 0
+-2.83132 -0.114556 0
+-1.67751 0.743245 0
+-1.03378 1.63189 0
+-0.971556 2.60195 0
+-1.40055 3.70231 0
+-2.10575 4.87954 0
+-2.82099 5.93137 0
+-3.31375 6.56152 0
+-3.4531 6.52144 0
+-3.24039 5.76575 0
+-2.79647 4.52879 0
+-2.31403 3.26477 0
+-1.99365 2.46442 0
+-1.98455 2.43019 0
+-2.34552 3.12104 0
+-3.03356 4.14989 0
+-3.91992 4.94256 0
+-4.82831 4.98715 0
+-5.58484 4.05909 0
+-6.06662 2.32075 0
+-6.23497 0.254817 0
+-6.14277 -1.53382 0
+-5.91248 -2.55754 0
+-5.69101 -2.62226 0
+-5.59704 -1.86986 0
+-5.67923 -0.683355 0
+-5.90051 0.483796 0
+-3.12864 1.26589 0
+-1.68642 0.887749 0
+-1.68642 0.627621 0
+-1.22374 -0.0757139 0
+-2.30347 -0.085269 0
+-4.33811 -0.0428585 0
+-4.1667 0.153721 0
+-3.91158 0.597503 0
+-3.59471 1.14161 0
+-3.26191 1.45982 0
+-2.96633 1.23766 0
+-2.7498 0.370002 0
+-2.6271 -0.941075 0
+-2.57883 -2.24652 0
+-2.55722 -3.04804 0
+-2.50489 -3.0414 0
+-2.38037 -2.28369 0
+-2.17992 -1.19292 0
+-1.94575 -0.370053 0
+-1.75542 -0.325241 0
+-1.6953 -1.23938 0
+-1.8283 -2.87533 0
+-2.16886 -4.68031 0
+-2.67591 -6.02871 0
+-3.26731 -6.48814 0
+-3.84954 -5.98267 0
+-4.34941 -4.78256 0
+-4.73395 -3.33874 0
+-5.0115 -2.05659 0
+-5.2163 -1.12702 0
+-5.38624 -0.493243 0
+-5.54441 0.0465692 0
+-5.69101 0.672264 0
+-5.80653 1.40974 0
+-5.86188 2.109 0
+-5.82926 2.54057 0
+-5.68886 2.55007 0
+-5.43039 2.17779 0
+-5.05171 1.67069 0
+-4.55755 1.37409 0
+-3.96092 1.55681 0
+-3.28692 2.26065 0
+-2.57641 3.25611 0
+-1.88532 4.13375 0
+-1.27777 4.49076 0
+-0.814567 4.12244 0
+-0.540531 3.12519 0
+-0.475034 1.85883 0
+-0.609081 0.782489 0
+-0.910316 0.239411 0
+-1.33407 0.293287 0
+-1.83588 0.696852 0
+-2.38026 1.00957 0
+-2.94233 0.807919 0
+-3.50289 -0.112417 0
+-4.04008 -1.63742 0
+-4.52326 -3.38214 0
+-4.9138 -4.85776 0
+-5.17435 -5.67504 0
+-5.28282 -5.68679 0
+-5.24195 -5.0063 0
+-5.07256 -3.90499 0
+-4.77124 -2.66426 0
+-4.24522 -1.51645 0
+-3.84453 -0.788226 0
+-3.64539 -0.326526 0
+-3.68543 0.101158 0
+-4.03496 0.70995 0
+-4.70681 1.69097 0
+-5.44217 3.06563 0
+-6.33729 4.25935 0
+-7.27625 4.86922 0
+-8.03034 4.6367 0
+-8.37975 3.50343 0
+-8.1996 1.67235 0
+-7.50132 -0.418672 0
+-6.42703 -2.23295 0
+-5.20543 -3.33429 0
+-4.08636 -3.56274 0
+-3.27398 -3.10488 0
+-2.87621 -2.4213 0
+-2.88333 -2.05643 0
+-3.18142 -2.40854 0
+-3.59704 -3.55796 0
+-3.9591 -5.22666 0
+-4.15723 -6.8854 0
+-4.17674 -7.9615 0
+-4.09865 -8.06081 0
+-4.06563 -7.1156 0
+-4.22586 -5.40313 0
+-4.67409 -3.43315 0
+-5.40958 -1.75347 0
+-6.32546 -0.752459 0
+-7.2339 -0.535486 0
+-7.91918 -0.921795 0
+-8.20189 -1.55484 0
+-7.99491 -2.06397 0
+-7.33417 -2.1974 0
+-6.37356 -1.87346 0
+-5.34269 -1.14542 0
+-4.47892 -0.120526 0
+-3.95505 1.10802 0
+-3.82789 2.47479 0
+-4.02643 3.90086 0
+-4.38366 5.23677 0
+-4.69927 6.24698 0
+-4.80982 6.67208 0
+-4.64114 6.35276 0
+-4.22588 5.35049 0
+-3.68366 3.98657 0
+-3.17487 2.75598 0
+-2.8472 2.13674 0
+-2.7934 2.37639 0
+-3.03146 3.3591 0
+-3.50807 4.6265 0
+-4.12003 5.55453 0
+-4.74552 5.61264 0
+-5.277 4.59056 0
+-5.6483 2.69206 0
+-5.8494 0.45592 0
+-5.92382 -1.4594 0
+-5.94816 -2.53321 0
+-5.99943 -2.57099 0
+-6.12117 -1.74812 0
+-6.30144 -0.50309 0
+-6.47438 0.656738 0
+-3.45386 1.34291 0
+-1.82608 0.87611 0
+-1.82608 0.589303 0
+-1.32506 -0.115742 0
+-2.50706 -0.161292 0
+-4.74041 -0.182625 0
+-4.49059 -0.0960956 0
+-4.10724 0.214153 0
+-3.62709 0.661472 0
+-3.13359 0.966322 0
+-2.72853 0.832607 0
+-2.49529 0.136778 0
+-2.46562 -0.970742 0
+-2.60317 -2.10896 0
+-2.81281 -2.8384 0
+-2.97529 -2.87892 0
+-2.99584 -2.26314 0
+-2.84683 -1.34192 0
+-2.58543 -0.631447 0
+-2.33703 -0.573642 0
+-2.24986 -1.32654 0
+-2.43878 -2.6864 0
+-2.94097 -4.17812 0
+-3.70163 -5.26804 0
+-4.59512 -5.59464 0
+-5.47097 -5.10681 0
+-6.20419 -4.04934 0
+-6.72884 -2.81408 0
+-7.04403 -1.7414 0
+-7.1952 -0.97584 0
+-7.24406 -0.444377 0
+-7.24222 0.0447349 0
+-7.21809 0.648137 0
+-7.1782 1.36986 0
+-7.11657 2.04738 0
+-7.02329 2.4473 0
+-6.88669 2.41349 0
+-6.68992 1.98103 0
+-6.4073 1.38807 0
+-6.00699 0.973789 0
+-5.46271 1.01253 0
+-4.77141 1.56937 0
+-3.96852 2.45322 0
+-3.13067 3.29591 0
+-2.36182 3.72191 0
+-1.766 3.52662 0
+-1.41675 2.77595 0
+-1.33524 1.77732 0
+-1.4861 0.933354 0
+-1.79358 0.546886 0
+-2.17177 0.671481 0
+-2.55664 1.08172 0
+-2.92626 1.37919 0
+-3.3013 1.18296 0
+-3.72626 0.312542 0
+-4.24043 -1.12325 0
+-4.85174 -2.77084 0
+-5.52565 -4.18385 0
+-6.1943 -5.00639 0
+-6.7799 -5.10118 0
+-7.21799 -4.56821 0
+-7.46504 -3.65795 0
+-7.48705 -2.64224 0
+-7.27241 -1.73108 0
+-7.00266 -1.05798 0
+-6.80226 -0.526925 0
+-6.75393 0.052833 0
+-6.90939 0.865417 0
+-7.23376 2.01535 0
+-7.57272 3.40459 0
+-7.91829 4.60492 0
+-8.22094 5.17187 0
+-8.3831 4.79886 0
+-8.3116 3.43194 0
+-7.9639 1.32465 0
+-7.36852 -1.01405 0
+-6.61881 -2.98265 0
+-5.84764 -4.10546 0
+-5.19351 -4.21686 0
+-4.76802 -3.53037 0
+-4.63121 -2.55811 0
+-4.77963 -1.908 0
+-5.14952 -2.03865 0
+-5.63534 -3.07214 0
+-6.1198 -4.7422 0
+-6.50749 -6.4977 0
+-6.75186 -7.71713 0
+-6.86688 -7.94579 0
+-6.91945 -7.06303 0
+-7.00434 -5.31823 0
+-7.20941 -3.22808 0
+-7.58205 -1.38084 0
+-8.10816 -0.226344 0
+-8.71118 0.0675324 0
+-9.27241 -0.360555 0
+-9.66754 -1.15972 0
+-9.80774 -1.92376 0
+-9.67146 -2.33368 0
+-9.31409 -2.23083 0
+-8.84975 -1.60975 0
+-8.40999 -0.560292 0
+-8.09447 0.792511 0
+-7.9341 2.31442 0
+-7.88245 3.84921 0
+-7.83987 5.1942 0
+-7.69952 6.10663 0
+-7.39468 6.36724 0
+-6.92695 5.88504 0
+-6.36418 4.78771 0
+-5.81101 3.43341 0
+-5.36727 2.31223 0
+-5.09269 1.86217 0
+-4.99249 2.27619 0
+-5.02638 3.39299 0
+-5.13337 4.73349 0
+-5.25873 5.6799 0
+-5.37223 5.72613 0
+-5.47303 4.69136 0
+-5.58326 2.80229 0
+-5.73476 0.607419 0
+-5.9537 -1.24047 0
+-6.2471 -2.2398 0
+-6.59384 -2.22425 0
+-6.94149 -1.40048 0
+-7.21109 -0.23349 0
+-7.31415 0.759801 0
+-3.90126 1.21718 0
+-2.0211 0.699371 0
+-2.0211 0.461355 0
+-1.43783 -0.151502 0
+-2.75302 -0.234319 0
+-5.26562 -0.325393 0
+-4.99779 -0.363916 0
+-4.57279 -0.210844 0
+-4.03178 0.120475 0
+-3.47977 0.41432 0
+-3.05205 0.404905 0
+-2.86443 -0.0508423 0
+-2.96472 -0.870436 0
+-3.30651 -1.76717 0
+-3.75892 -2.38598 0
+-4.15304 -2.48479 0
+-4.34881 -2.06736 0
+-4.29528 -1.39545 0
+-4.05711 -0.869606 0
+-3.79424 -0.836502 0
+-3.70168 -1.4191 0
+-3.93407 -2.45399 0
+-4.5463 -3.56588 0
+-5.47397 -4.34035 0
+-6.56037 -4.50824 0
+-7.61548 -4.05169 0
+-8.48033 -3.18449 0
+-9.06991 -2.22449 0
+-9.38127 -1.43003 0
+-9.47041 -0.88669 0
+-9.41524 -0.499542 0
+-9.28362 -0.0868768 0
+-9.11875 0.483274 0
+-8.94236 1.19348 0
+-8.76636 1.87139 0
+-8.60061 2.28156 0
+-8.45005 2.26293 0
+-8.30346 1.83445 0
+-8.12398 1.20859 0
+-7.85173 0.701544 0
+-7.42337 0.584173 0
+-6.80265 0.94865 0
+-6.00797 1.65854 0
+-5.12157 2.40951 0
+-4.27226 2.87261 0
+-3.59628 2.85064 0
+-3.19099 2.37067 0
+-3.08096 1.6673 0
+-3.21123 1.06362 0
+-3.47189 0.807545 0
+-3.74455 0.944143 0
+-3.95137 1.28854 0
+-4.08568 1.51351 0
+-4.2113 1.30859 0
+-4.43141 0.532648 0
+-4.84092 -0.713737 0
+-5.48315 -2.1286 0
+-6.32902 -3.33797 0
+-7.28625 -4.04915 0
+-8.23139 -4.15604 0
+-9.04671 -3.75288 0
+-9.64462 -3.06003 0
+-9.97622 -2.31064 0
+-10.0458 -1.66147 0
+-9.95033 -1.15348 0
+-9.79147 -0.685777 0
+-9.64686 -0.0917745 0
+-9.55239 0.770946 0
+-9.47564 1.9386 0
+-9.33141 3.26037 0
+-9.09831 4.37183 0
+-8.78388 4.85744 0
+-8.40597 4.42095 0
+-7.9932 3.01918 0
+-7.58452 0.915971 0
+-7.22141 -1.37715 0
+-6.93778 -3.26628 0
+-6.75431 -4.28893 0
+-6.68055 -4.29061 0
+-6.72202 -3.4889 0
+-6.88621 -2.39392 0
+-7.18188 -1.61233 0
+-7.61042 -1.6101 0
+-8.15379 -2.52876 0
+-8.76686 -4.12912 0
+-9.38077 -5.88379 0
+-9.91864 -7.17926 0
+-10.3187 -7.54574 0
+-10.5559 -6.82583 0
+-10.6528 -5.22134 0
+-10.6739 -3.20694 0
+-10.7048 -1.34996 0
+-10.8222 -0.108961 0
+-11.0665 0.31187 0
+-11.4274 0.000321054 0
+-11.849 -0.738116 0
+-12.2533 -1.51937 0
+-12.5707 -2.01628 0
+-12.7629 -2.03863 0
+-12.8292 -1.54348 0
+-12.793 -0.596547 0
+-12.6774 0.676972 0
+-12.485 2.12198 0
+-12.1928 3.55703 0
+-11.7688 4.77026 0
+-11.2001 5.53786 0
+-10.5156 5.68274 0
+-9.7897 5.15918 0
+-9.12009 4.1181 0
+-8.58951 2.90284 0
+-8.23024 1.95296 0
+-8.00911 1.64104 0
+-7.84234 2.10941 0
+-7.63416 3.18481 0
+-7.32195 4.42129 0
+-6.90703 5.26497 0
+-6.45753 5.27664 0
+-6.0833 4.31714 0
+-5.89417 2.61316 0
+-5.95873 0.671983 0
+-6.27884 -0.920363 0
+-6.7876 -1.73104 0
+-7.36861 -1.64323 0
+-7.88616 -0.882924 0
+-8.21508 0.0954236 0
+-8.26446 0.809182 0
+-4.37989 0.953035 0
+-2.23956 0.412035 0
+-2.23956 0.270296 0
+-1.51246 -0.171987 0
+-2.93868 -0.283031 0
+-5.70309 -0.431809 0
+-5.48635 -0.580647 0
+-5.12179 -0.575394 0
+-4.64084 -0.360468 0
+-4.14482 -0.0816838 0
+-3.77567 0.0357655 0
+-3.66285 -0.163657 0
+-3.86683 -0.666446 0
+-4.34466 -1.28933 0
+-4.95635 -1.77429 0
+-5.51408 -1.92705 0
+-5.85695 -1.72448 0
+-5.91978 -1.33261 0
+-5.76499 -1.02439 0
+-5.56172 -1.03976 0
+-5.51985 -1.46096 0
+-5.8067 -2.16712 0
+-6.48181 -2.89076 0
+-7.47632 -3.34583 0
+-8.62331 -3.36124 0
+-9.72245 -2.95254 0
+-10.6091 -2.29782 0
+-11.1988 -1.63473 0
+-11.4935 -1.13541 0
+-11.5537 -0.826486 0
+-11.4583 -0.594919 0
+-11.2717 -0.273385 0
+-11.0329 0.244453 0
+-10.7638 0.924427 0
+-10.4861 1.59367 0
+-10.2289 2.0244 0
+-10.0211 2.05511 0
+-9.871 1.68434 0
+-9.74838 1.08598 0
+-9.58319 0.53636 0
+-9.28771 0.288698 0
+-8.79538 0.456318 0
+-8.09865 0.961825 0
+-7.26621 1.57707 0
+-6.42787 2.03428 0
+-5.73089 2.15366 0
+-5.285 1.92479 0
+-5.12017 1.50247 0
+-5.17632 1.11978 0
+-5.33101 0.962235 0
+-5.45416 1.0673 0
+-5.46643 1.30081 0
+-5.37545 1.42253 0
+-5.27416 1.20729 0
+-5.30206 0.560557 0
+-5.58688 -0.428915 0
+-6.19184 -1.52364 0
+-7.09034 -2.43946 0
+-8.17627 -2.96322 0
+-9.30155 -3.03076 0
+-10.3217 -2.73276 0
+-11.1295 -2.25218 0
+-11.6701 -1.77008 0
+-11.9438 -1.38779 0
+-12.0031 -1.09412 0
+-11.9122 -0.776627 0
+-11.7187 -0.285356 0
+-11.4356 0.487871 0
+-11.0353 1.53833 0
+-10.4756 2.70071 0
+-9.7632 3.6594 0
+-8.96352 4.05777 0
+-8.18507 3.64251 0
+-7.55042 2.38453 0
+-7.16038 0.525928 0
+-7.06192 -1.47561 0
+-7.23348 -3.09471 0
+-7.59568 -3.92672 0
+-8.04453 -3.84176 0
+-8.49369 -3.03973 0
+-8.90774 -1.97987 0
+-9.31148 -1.20858 0
+-9.77086 -1.15071 0
+-10.3537 -1.94592 0
+-11.088 -3.3948 0
+-11.9371 -5.03468 0
+-12.8031 -6.3133 0
+-13.5577 -6.79106 0
+-14.0889 -6.29469 0
+-14.3426 -4.96764 0
+-14.3453 -3.20419 0
+-14.1969 -1.49838 0
+-14.0366 -0.269187 0
+-13.9962 0.271407 0
+-14.1567 0.160841 0
+-14.5279 -0.366912 0
+-15.0539 -0.993332 0
+-15.6396 -1.43061 0
+-16.1824 -1.49579 0
+-16.5969 -1.12905 0
+-16.8233 -0.370142 0
+-16.8246 0.67832 0
+-16.5799 1.8773 0
+-16.0841 3.06123 0
+-15.3576 4.04373 0
+-14.4592 4.63944 0
+-13.4896 4.71319 0
+-12.5749 4.24445 0
+-11.8296 3.3728 0
+-11.3139 2.38716 0
+-11.0045 1.64354 0
+-10.7966 1.43315 0
+-10.5417 1.85452 0
+-10.1079 2.75105 0
+-9.43866 3.75202 0
+-8.58362 4.40993 0
+-7.68801 4.38103 0
+-6.94306 3.57218 0
+-6.51761 2.18771 0
+-6.49775 0.652123 0
+-6.8575 -0.560613 0
+-7.47016 -1.11838 0
+-8.15288 -0.960509 0
+-8.72428 -0.311529 0
+-9.05177 0.422918 0
+-9.07263 0.830042 0
+-4.74479 0.668323 0
+-2.41101 0.122227 0
+-2.41101 0.0798656 0
+-1.5044 -0.170483 0
+-2.96646 -0.292833 0
+-5.84246 -0.472447 0
+-5.73175 -0.69136 0
+-5.51211 -0.795019 0
+-5.19274 -0.679827 0
+-4.84637 -0.428048 0
+-4.59281 -0.21778 0
+-4.5535 -0.202949 0
+-4.79598 -0.423958 0
+-5.29506 -0.790238 0
+-5.93221 -1.13713 0
+-6.53782 -1.32143 0
+-6.96073 -1.30156 0
+-7.13457 -1.15877 0
+-7.11009 -1.04885 0
+-7.03734 -1.1125 0
+-7.10442 -1.39387 0
+-7.45983 -1.81169 0
+-8.15242 -2.19816 0
+-9.11412 -2.38411 0
+-10.1905 -2.28483 0
+-11.2024 -1.94062 0
+-12.009 -1.4912 0
+-12.5457 -1.09802 0
+-12.8242 -0.856929 0
+-12.9022 -0.748496 0
+-12.8434 -0.653671 0
+-12.6899 -0.426845 0
+-12.4585 0.0130218 0
+-12.1574 0.623411 0
+-11.8087 1.24494 0
+-11.4567 1.67245 0
+-11.1566 1.75494 0
+-10.9457 1.47343 0
+-10.8168 0.957151 0
+-10.7099 0.429412 0
+-10.5308 0.109587 0
+-10.1923 0.117869 0
+-9.65799 0.427519 0
+-8.96693 0.886014 0
+-8.22581 1.29317 0
+-7.56915 1.49701 0
+-7.10461 1.46025 0
+-6.86817 1.26604 0
+-6.81036 1.06197 0
+-6.82103 0.972904 0
+-6.78251 1.02878 0
+-6.62732 1.14563 0
+-6.37397 1.16919 0
+-6.12442 0.95774 0
+-6.02427 0.460419 0
+-6.2039 -0.249281 0
+-6.72622 -1.00132 0
+-7.56292 -1.60276 0
+-8.60645 -1.91969 0
+-9.70898 -1.92822 0
+-10.729 -1.71276 0
+-11.5656 -1.41554 0
+-12.1713 -1.1644 0
+-12.5453 -1.0138 0
+-12.7158 -0.923563 0
+-12.7124 -0.780088 0
+-12.5455 -0.452207 0
+-12.1998 0.14219 0
+-11.6425 0.981052 0
+-10.8543 1.91247 0
+-9.87261 2.67773 0
+-8.80836 2.99353 0
+-7.82842 2.66257 0
+-7.1116 1.66771 0
+-6.79291 0.207246 0
+-6.91729 -1.35123 0
+-7.42244 -2.58955 0
+-8.16052 -3.18864 0
+-8.95192 -3.05036 0
+-9.65097 -2.34067 0
+-10.1974 -1.43345 0
+-10.6325 -0.773457 0
+-11.0735 -0.709729 0
+-11.6557 -1.36365 0
+-12.4678 -2.5827 0
+-13.5057 -3.99685 0
+-14.6649 -5.15405 0
+-15.7744 -5.68157 0
+-16.6565 -5.41253 0
+-17.1912 -4.43302 0
+-17.358 -3.03731 0
+-17.243 -1.61338 0
+-17.0064 -0.505787 0
+-16.8267 0.0917256 0
+-16.8424 0.176516 0
+-17.1131 -0.0961514 0
+-17.6122 -0.494278 0
+-18.246 -0.79684 0
+-18.8881 -0.853648 0
+-19.4126 -0.604518 0
+-19.7162 -0.0665985 0
+-19.7281 0.690252 0
+-19.4138 1.56306 0
+-18.7782 2.4256 0
+-17.8708 3.13637 0
+-16.7893 3.55786 0
+-15.6698 3.59375 0
+-14.66 3.23464 0
+-13.8756 2.58839 0
+-13.3577 1.86928 0
+-13.0502 1.33603 0
+-12.8125 1.19549 0
+-12.4691 1.51111 0
+-11.8788 2.16074 0
+-10.997 2.87015 0
+-9.90308 3.31606 0
+-8.78055 3.2585 0
+-7.85404 2.64567 0
+-7.30923 1.6429 0
+-7.2264 0.569297 0
+-7.55409 -0.232927 0
+-8.13199 -0.540478 0
+-8.75214 -0.340357 0
+-9.23225 0.168578 0
+-9.47114 0.661811 0
+-9.46308 0.821977 0
+-4.84288 0.46637 0
+-2.44586 -0.0593265 0
+-2.44586 -0.0309657 0
+-1.38829 -0.146902 0
+-2.77513 -0.260877 0
+-5.54106 -0.437743 0
+-5.5591 -0.67331 0
+-5.52435 -0.829763 0
+-5.41794 -0.786229 0
+-5.26857 -0.577402 0
+-5.1536 -0.332735 0
+-5.16889 -0.187645 0
+-5.38222 -0.210618 0
+-5.79465 -0.377799 0
+-6.33151 -0.600259 0
+-6.87045 -0.782477 0
+-7.29524 -0.876772 0
+-7.55014 -0.903862 0
+-7.66823 -0.930747 0
+-7.75909 -1.02163 0
+-7.96088 -1.19206 0
+-8.37923 -1.39333 0
+-9.04103 -1.53634 0
+-9.88383 -1.5413 0
+-10.7836 -1.38504 0
+-11.6058 -1.11841 0
+-12.2544 -0.842603 0
+-12.6968 -0.655555 0
+-12.9568 -0.596978 0
+-13.0828 -0.622514 0
+-13.1131 -0.623271 0
+-13.057 -0.483015 0
+-12.8997 -0.144271 0
+-12.6279 0.351633 0
+-12.256 0.873071 0
+-11.8365 1.25296 0
+-11.4456 1.36402 0
+-11.1502 1.17806 0
+-10.9739 0.780904 0
+-10.8808 0.336314 0
+-10.7875 0.016275 0
+-10.5998 -0.0698493 0
+-10.2568 0.084556 0
+-9.76151 0.390721 0
+-9.18176 0.713436 0
+-8.62101 0.936261 0
+-8.17173 1.01098 0
+-7.87403 0.968344 0
+-7.69951 0.88746 0
+-7.56882 0.842215 0
+-7.39494 0.854903 0
+-7.13154 0.88223 0
+-6.80293 0.840582 0
+-6.50099 0.655807 0
+-6.35034 0.309768 0
+-6.45782 -0.1418 0
+-6.86933 -0.589797 0
+-7.55235 -0.919731 0
+-8.40957 -1.06247 0
+-9.31496 -1.02283 0
+-10.1546 -0.873074 0
+-10.855 -0.71518 0
+-11.389 -0.630437 0
+-11.7628 -0.639953 0
+-11.9929 -0.693451 0
+-12.0827 -0.690329 0
+-12.0104 -0.524486 0
+-11.733 -0.135232 0
+-11.2058 0.453859 0
+-10.4159 1.12261 0
+-9.4163 1.67815 0
+-8.33798 1.91521 0
+-7.36923 1.69383 0
+-6.70598 1.00447 0
+-6.49001 -0.00872194 0
+-6.75891 -1.08232 0
+-7.42962 -1.91884 0
+-8.32497 -2.29329 0
+-9.23568 -2.13964 0
+-9.99496 -1.58137 0
+-10.537 -0.89138 0
+-10.9163 -0.394129 0
+-11.2798 -0.34631 0
+-11.8021 -0.841294 0
+-12.6111 -1.77376 0
+-13.7307 -2.87721 0
+-15.0658 -3.81891 0
+-16.4321 -4.31533 0
+-17.6191 -4.22549 0
+-18.4625 -3.58957 0
+-18.8974 -2.60248 0
+-18.9744 -1.53637 0
+-18.8357 -0.644445 0
+-18.6611 -0.082832 0
+-18.6071 0.122519 0
+-18.7615 0.0581872 0
+-19.1268 -0.128966 0
+-19.6326 -0.29097 0
+-20.1652 -0.321052 0
+-20.6003 -0.16943 0
+-20.8292 0.162327 0
+-20.7747 0.635707 0
+-20.399 1.18744 0
+-19.7098 1.73635 0
+-18.7631 2.18969 0
+-17.6623 2.45709 0
+-16.5441 2.4755 0
+-15.5485 2.23904 0
+-14.7783 1.81817 0
+-14.2608 1.35182 0
+-13.9314 1.00658 0
+-13.6498 0.913904 0
+-13.25 1.11137 0
+-12.6059 1.51666 0
+-11.6871 1.95135 0
+-10.5806 2.20955 0
+-9.46645 2.14433 0
+-8.55497 1.7342 0
+-8.00989 1.09783 0
+-7.88827 0.447668 0
+-8.12171 0.000517791 0
+-8.54623 -0.115961 0
+-8.96782 0.0812402 0
+-9.23736 0.438113 0
+-9.30509 0.72954 0
+-9.23178 0.748667 0
+-4.57842 0.374991 0
+-2.27778 -0.0793058 0
+-2.27778 -0.00606177 0
+-1.16665 -0.107854 0
+-2.36051 -0.197135 0
+-4.77166 -0.341338 0
+-4.90157 -0.543402 0
+-5.03469 -0.696639 0
+-5.12757 -0.69334 0
+-5.16453 -0.540428 0
+-5.17504 -0.322215 0
+-5.22109 -0.141579 0
+-5.36394 -0.0677593 0
+-5.62974 -0.111984 0
+-5.99372 -0.236279 0
+-6.39182 -0.384364 0
+-6.75418 -0.514407 0
+-7.04244 -0.61559 0
+-7.27123 -0.70195 0
+-7.50203 -0.790825 0
+-7.8125 -0.881578 0
+-8.25686 -0.948961 0
+-8.8374 -0.955783 0
+-9.50125 -0.877439 0
+-10.1632 -0.723098 0
+-10.7422 -0.539422 0
+-11.1927 -0.392023 0
+-11.5157 -0.332522 0
+-11.7445 -0.368205 0
+-11.9154 -0.451618 0
+-12.0404 -0.49827 0
+-12.0972 -0.426133 0
+-12.0432 -0.19834 0
+-11.8441 0.152592 0
+-11.5034 0.532362 0
+-11.0725 0.822127 0
+-10.6372 0.928638 0
+-10.2833 0.824218 0
+-10.0609 0.558517 0
+-9.96194 0.237345 0
+-9.92451 -0.0211538 0
+-9.86125 -0.133102 0
+-9.69862 -0.0780775 0
+-9.40853 0.100642 0
+-9.01777 0.32268 0
+-8.59119 0.509691 0
+-8.19799 0.617781 0
+-7.87815 0.648505 0
+-7.62606 0.635372 0
+-7.39941 0.615569 0
+-7.14843 0.603926 0
+-6.85003 0.583836 0
+-6.52893 0.519484 0
+-6.2545 0.381381 0
+-6.11454 0.169808 0
+-6.17853 -0.0778028 0
+-6.468 -0.300322 0
+-6.94731 -0.440425 0
+-7.53795 -0.471817 0
+-8.14846 -0.412312 0
+-8.70541 -0.316125 0
+-9.17187 -0.24872 0
+-9.54672 -0.255583 0
+-9.84753 -0.339143 0
+-10.0867 -0.454306 0
+-10.252 -0.524967 0
+-10.3012 -0.47529 0
+-10.1726 -0.263856 0
+-9.81071 0.091988 0
+-9.19919 0.511087 0
+-8.38819 0.867151 0
+-7.50141 1.02844 0
+-6.71407 0.906498 0
+-6.20558 0.495974 0
+-6.10219 -0.112106 0
+-6.43174 -0.752768 0
+-7.10981 -1.24076 0
+-7.96596 -1.43713 0
+-8.80246 -1.30314 0
+-9.46457 -0.919256 0
+-9.89581 -0.46014 0
+-10.1566 -0.133357 0
+-10.3985 -0.104333 0
+-10.8042 -0.435633 0
+-11.5146 -1.06332 0
+-12.5731 -1.81876 0
+-13.905 -2.48696 0
+-15.3413 -2.87904 0
+-16.6743 -2.89252 0
+-17.7252 -2.53864 0
+-18.3984 -1.92929 0
+-18.7034 -1.23131 0
+-18.7405 -0.607354 0
+-18.6571 -0.166259 0
+-18.5949 0.0603355 0
+-18.6473 0.11059 0
+-18.8396 0.0633259 0
+-19.1339 0.00337543 0
+-19.4507 -0.00419955 0
+-19.6953 0.0751713 0
+-19.7804 0.247335 0
+-19.6412 0.496508 0
+-19.2451 0.791439 0
+-18.5977 1.08893 0
+-17.7455 1.33749 0
+-16.774 1.48562 0
+-15.795 1.49642 0
+-14.9209 1.36499 0
+-14.2323 1.12951 0
+-13.7475 0.867042 0
+-13.4112 0.670318 0
+-13.1096 0.612268 0
+-12.7111 0.712905 0
+-12.1196 0.925174 0
+-11.3176 1.14934 0
+-10.3808 1.27269 0
+-9.45501 1.21858 0
+-8.70362 0.982806 0
+-8.24498 0.639187 0
+-8.10704 0.309732 0
+-8.21767 0.111144 0
+-8.43516 0.101528 0
+-8.60647 0.252554 0
+-8.63004 0.461686 0
+-8.50051 0.600009 0
+-8.32199 0.570142 0
+-3.97072 0.334406 0
+-1.91475 0.0222671 0
+-1.91475 0.145747 0
+-0.870267 -0.0643718 0
+-1.77928 -0.121003 0
+-3.63638 -0.215482 0
+-3.82742 -0.35236 0
+-4.06089 -0.463165 0
+-4.28061 -0.473615 0
+-4.44089 -0.380133 0
+-4.53348 -0.229622 0
+-4.58877 -0.086276 0
+-4.65598 -0.000539283 0
+-4.77605 0.00808598 0
+-4.96288 -0.0494385 0
+-5.20211 -0.145125 0
+-5.46589 -0.250619 0
+-5.73361 -0.347871 0
+-6.0057 -0.429849 0
+-6.30266 -0.493854 0
+-6.65011 -0.534116 0
+-7.05918 -0.53988 0
+-7.51399 -0.500966 0
+-7.97405 -0.417371 0
+-8.39096 -0.306173 0
+-8.73056 -0.199813 0
+-8.98821 -0.134367 0
+-9.18833 -0.132387 0
+-9.36765 -0.188881 0
+-9.55054 -0.268723 0
+-9.73 -0.318791 0
+-9.86538 -0.29075 0
+-9.89938 -0.164326 0
+-9.78703 0.0402534 0
+-9.52203 0.267363 0
+-9.14697 0.447079 0
+-8.7415 0.523175 0
+-8.39299 0.475706 0
+-8.16296 0.328492 0
+-8.06435 0.138732 0
+-8.05934 -0.0261604 0
+-8.07819 -0.114246 0
+-8.04976 -0.106504 0
+-7.92968 -0.0194338 0
+-7.71389 0.106892 0
+-7.43275 0.228558 0
+-7.13056 0.315597 0
+-6.84198 0.359925 0
+-6.57772 0.371116 0
+-6.32634 0.364195 0
+-6.06987 0.34746 0
+-5.80359 0.317555 0
+-5.5482 0.264095 0
+-5.34706 0.180248 0
+-5.24942 0.0721679 0
+-5.28815 -0.0390714 0
+-5.46354 -0.124931 0
+-5.74131 -0.162647 0
+-6.06584 -0.147285 0
+-6.38202 -0.0961328 0
+-6.65541 -0.0427271 0
+-6.88144 -0.0226925 0
+-7.0796 -0.0574162 0
+-7.27599 -0.142752 0
+-7.48229 -0.24801 0
+-7.68097 -0.326277 0
+-7.8238 -0.332466 0
+-7.84526 -0.242387 0
+-7.68764 -0.0656274 0
+-7.3294 0.152849 0
+-6.80632 0.344071 0
+-6.21485 0.436975 0
+-5.69261 0.384258 0
+-5.37955 0.18292 0
+-5.37235 -0.119309 0
+-5.68894 -0.436169 0
+-6.25851 -0.671184 0
+-6.94312 -0.752524 0
+-7.58507 -0.661184 0
+-8.06337 -0.440952 0
+-8.33819 -0.185311 0
+-8.4662 -0.00534451 0
+-8.58031 0.00977927 0
+-8.84106 -0.174877 0
+-9.37752 -0.526851 0
+-10.2394 -0.956853 0
+-11.3776 -1.34874 0
+-12.6591 -1.59763 0
+-13.9092 -1.64237 0
+-14.9663 -1.48151 0
+-15.7274 -1.16823 0
+-16.1708 -0.787871 0
+-16.3506 -0.427598 0
+-16.3668 -0.150018 0
+-16.3268 0.020351 0
+-16.3112 0.0950416 0
+-16.3561 0.108196 0
+-16.4525 0.0997189 0
+-16.5589 0.102283 0
+-16.6192 0.135464 0
+-16.5778 0.205889 0
+-16.3912 0.309978 0
+-16.0361 0.436311 0
+-15.514 0.566852 0
+-14.855 0.678455 0
+-14.1162 0.74678 0
+-13.3732 0.753453 0
+-12.7028 0.694618 0
+-12.1599 0.586622 0
+-11.7572 0.464322 0
+-11.4572 0.370347 0
+-11.1833 0.338387 0
+-10.8481 0.377625 0
+-10.3891 0.46623 0
+-9.79826 0.558486 0
+-9.12942 0.603842 0
+-8.48083 0.569996 0
+-7.95727 0.459247 0
+-7.62763 0.309551 0
+-7.49632 0.178422 0
+-7.50127 0.116091 0
+-7.53994 0.140196 0
+-7.51226 0.224873 0
+-7.36249 0.311921 0
+-7.10558 0.343095 0
+-6.83893 0.303489 0
+-3.16114 0.255081 0
+-1.46299 0.131888 0
+-1.46299 0.327521 0
+-0.550554 -0.0279805 0
+-1.13529 -0.0543694 0
+-2.34274 -0.099568 0
+-2.52846 -0.166641 0
+-2.76893 -0.222693 0
+-3.01136 -0.231179 0
+-3.20312 -0.188371 0
+-3.31841 -0.114322 0
+-3.36608 -0.0385972 0
+-3.38004 0.0134295 0
+-3.40093 0.0289725 0
+-3.45948 0.00912282 0
+-3.5691 -0.0355073 0
+-3.72848 -0.0912311 0
+-3.93008 -0.146268 0
+-4.16744 -0.192481 0
+-4.43687 -0.224419 0
+-4.73323 -0.237757 0
+-5.04399 -0.229112 0
+-5.34709 -0.197859 0
+-5.6157 -0.148754 0
+-5.82873 -0.0931346 0
+-5.98164 -0.0468951 0
+-6.09093 -0.0250764 0
+-6.18824 -0.0350674 0
+-6.30541 -0.0717079 0
+-6.45684 -0.117289 0
+-6.6282 -0.147416 0
+-6.77812 -0.140829 0
+-6.85344 -0.0889934 0
+-6.81222 -0.000965773 0
+-6.64386 0.099009 0
+-6.37721 0.180433 0
+-6.07232 0.218287 0
+-5.7992 0.202594 0
+-5.6126 0.141886 0
+-5.53323 0.059367 0
+-5.54306 -0.0163243 0
+-5.59556 -0.061745 0
+-5.63573 -0.0663399 0
+-5.62078 -0.0343755 0
+-5.53295 0.0190588 0
+-5.37996 0.0755751 0
+-5.18517 0.120814 0
+-4.97361 0.148368 0
+-4.76164 0.159145 0
+-4.55493 0.157483 0
+-4.35433 0.146867 0
+-4.1647 0.127921 0
+-4.0002 0.0995978 0
+-3.88231 0.0623546 0
+-3.83098 0.0208449 0
+-3.85402 -0.0160307 0
+-3.94071 -0.0382411 0
+-4.06389 -0.0394612 0
+-4.19013 -0.021044 0
+-4.29341 0.00714518 0
+-4.36596 0.0298313 0
+-4.42098 0.0323242 0
+-4.48539 0.00699514 0
+-4.58559 -0.042544 0
+-4.73206 -0.101538 0
+-4.90956 -0.148784 0
+-5.07765 -0.164373 0
+-5.18238 -0.13765 0
+-5.17563 -0.0723737 0
+-5.03575 0.0129687 0
+-4.78184 0.09016 0
+-4.47518 0.130318 0
+-4.20519 0.114271 0
+-4.06288 0.0406145 0
+-4.11028 -0.0719097 0
+-4.35708 -0.18937 0
+-4.75436 -0.2739 0
+-5.20941 -0.297471 0
+-5.61757 -0.253024 0
+-5.9001 -0.158413 0
+-6.03414 -0.0512691 0
+-6.06316 0.0236741 0
+-6.08363 0.0302533 0
+-6.21233 -0.0461746 0
+-6.54594 -0.193235 0
+-7.12741 -0.375381 0
+-7.93064 -0.545512 0
+-8.86823 -0.660038 0
+-9.81855 -0.692049 0
+-10.6619 -0.638196 0
+-11.3127 -0.517377 0
+-11.7382 -0.362418 0
+-11.9574 -0.208362 0
+-12.0255 -0.0819274 0
+-12.0094 0.00429206 0
+-11.966 0.0516806 0
+-11.9288 0.0709702 0
+-11.9052 0.0760956 0
+-11.8822 0.079303 0
+-11.8355 0.0887924 0
+-11.7382 0.108523 0
+-11.5671 0.138942 0
+-11.3084 0.177558 0
+-10.9607 0.219144 0
+-10.5383 0.256098 0
+-10.0713 0.279798 0
+-9.6011 0.28323 0
+-9.17069 0.264215 0
+-8.81173 0.227658 0
+-8.53256 0.185153 0
+-8.31351 0.151297 0
+-8.11291 0.137793 0
+-7.88321 0.147918 0
+-7.59123 0.174252 0
+-7.23403 0.201292 0
+-6.84249 0.212297 0
+-6.46991 0.197422 0
+-6.16984 0.159173 0
+-5.97238 0.112097 0
+-5.87018 0.0762176 0
+-5.82085 0.0667659 0
+-5.76562 0.0849673 0
+-5.6555 0.114746 0
+-5.4721 0.128528 0
+-5.23279 0.103776 0
+-4.98573 0.0564333 0
+-2.33061 0.115641 0
+-1.0739 0.144778 0
+-1.0739 0.384161 0
+-0.266497 -0.0063672 0
+-0.552954 -0.013175 0
+-1.1506 -0.0249114 0
+-1.27459 -0.0426476 0
+-1.43969 -0.0575962 0
+-1.61067 -0.0601946 0
+-1.74969 -0.0493508 0
+-1.83408 -0.0299234 0
+-1.86336 -0.00931201 0
+-1.85575 0.0058182 0
+-1.83845 0.0116751 0
+-1.83722 0.00789144 0
+-1.86946 -0.00326027 0
+-1.94242 -0.0182672 0
+-2.05507 -0.0336227 0
+-2.20106 -0.0464889 0
+-2.37066 -0.0548124 0
+-2.55117 -0.0572408 0
+-2.72709 -0.0531938 0
+-2.88175 -0.0431899 0
+-3.00131 -0.0291988 0
+-3.07982 -0.0146152 0
+-3.12316 -0.0035504 0
+-3.14875 0.000508816 0
+-3.18002 -0.00379252 0
+-3.23701 -0.0147163 0
+-3.32667 -0.0276237 0
+-3.43761 -0.0364713 0
+-3.5423 -0.0361332 0
+-3.6067 -0.0245953 0
+-3.60364 -0.00402509 0
+-3.52445 0.0198279 0
+-3.38373 0.0397097 0
+-3.21501 0.0495718 0
+-3.05921 0.0468004 0
+-2.95041 0.0330799 0
+-2.90465 0.0136053 0
+-2.91601 -0.00496201 0
+-2.96083 -0.0169208 0
+-3.0078 -0.0193737 0
+-3.02934 -0.012826 0
+-3.00984 -0.000445649 0
+-2.9478 0.0135373 0
+-2.85248 0.0254957 0
+-2.73753 0.0334174 0
+-2.61534 0.0369596 0
+-2.49463 0.0367734 0
+-2.38143 0.0336638 0
+-2.28164 0.0281386 0
+-2.2026 0.0205494 0
+-2.15184 0.0116005 0
+-2.13374 0.00274401 0
+-2.14582 -0.00394719 0
+-2.17756 -0.00650202 0
+-2.21298 -0.00404305 0
+-2.23651 0.00248894 0
+-2.23969 0.0103261 0
+-2.22556 0.0157019 0
+-2.20849 0.0152517 0
+-2.20894 0.00744562 0
+-2.24493 -0.00654636 0
+-2.3235 -0.0229725 0
+-2.43563 -0.0366508 0
+-2.55722 -0.0427877 0
+-2.65606 -0.038808 0
+-2.70293 -0.0255033 0
+-2.68291 -0.0070468 0
+-2.60294 0.010192 0
+-2.49233 0.0197116 0
+-2.39525 0.0171911 0
+-2.35689 0.00225526 0
+-2.40777 -0.0210242 0
+-2.55191 -0.0452382 0
+-2.76368 -0.0621202 0
+-2.99558 -0.0655751 0
+-3.19448 -0.0541231 0
+-3.32111 -0.0317751 0
+-3.36547 -0.00691481 0
+-3.35227 0.0104766 0
+-3.33429 0.0122724 0
+-3.37554 -0.0049227 0
+-3.53027 -0.0385054 0
+-3.825 -0.0806504 0
+-4.2497 -0.12081 0
+-4.76071 -0.14902 0
+-5.29391 -0.158846 0
+-5.7831 -0.149007 0
+-6.17725 -0.123225 0
+-6.45116 -0.0885034 0
+-6.6069 -0.0526243 0
+-6.66701 -0.0218121 0
+-6.66334 0.000618832 0
+-6.62601 0.0143579 0
+-6.57625 0.0212122 0
+-6.52402 0.0238626 0
+-6.46956 0.0248463 0
+-6.40681 0.0260423 0
+-6.32687 0.0285863 0
+-6.22089 0.0329614 0
+-6.08238 0.0390486 0
+-5.90934 0.0461019 0
+-5.70601 0.0527738 0
+-5.48358 0.0573654 0
+-5.25871 0.0583641 0
+-5.04963 0.0551289 0
+-4.87037 0.0483973 0
+-4.72548 0.0402633 0
+-4.60766 0.0334839 0
+-4.50019 0.0303231 0
+-4.38373 0.0314545 0
+-4.24499 0.0355106 0
+-4.0833 0.0396109 0
+-3.91173 0.0407261 0
+-3.75158 0.0372688 0
+-3.6225 0.0300917 0
+-3.53268 0.022276 0
+-3.47409 0.0176316 0
+-3.4258 0.0184767 0
+-3.36451 0.0236765 0
+-3.27765 0.0278881 0
+-3.17163 0.0225027 0
+-3.06666 -0.00119207 0
+-2.97103 -0.0391961 0
+-1.54271 0.00537921 0
+-0.792997 0.0628118 0
+-0.792997 0.221448 0
+-0.0707005 -0.0063672 0
+-0.147065 -0.013175 0
+-0.308094 -0.0249114 0
+-0.350741 -0.0426476 0
+-0.408337 -0.0575962 0
+-0.468531 -0.0601946 0
+-0.517881 -0.0493508 0
+-0.547803 -0.0299234 0
+-0.557115 -0.00931201 0
+-0.551296 0.0058182 0
+-0.53962 0.0116751 0
+-0.531728 0.00789144 0
+-0.534988 -0.00326027 0
+-0.553254 -0.0182672 0
+-0.586877 -0.0336227 0
+-0.633365 -0.0464889 0
+-0.688177 -0.0548124 0
+-0.745416 -0.0572408 0
+-0.798609 -0.0531938 0
+-0.841798 -0.0431899 0
+-0.870996 -0.0291988 0
+-0.885611 -0.0146152 0
+-0.88916 -0.0035504 0
+-0.888651 0.000508816 0
+-0.892443 -0.00379252 0
+-0.907158 -0.0147163 0
+-0.934781 -0.0276237 0
+-0.971251 -0.0364713 0
+-1.00738 -0.0361332 0
+-1.03198 -0.0245953 0
+-1.036 -0.00402509 0
+-1.01617 0.0198279 0
+-0.976464 0.0397097 0
+-0.926891 0.0495718 0
+-0.880091 0.0468004 0
+-0.847011 0.0330799 0
+-0.833405 0.0136053 0
+-0.838367 -0.00496201 0
+-0.855288 -0.0169208 0
+-0.874661 -0.0193737 0
+-0.887487 -0.012826 0
+-0.887932 -0.000445649 0
+-0.874394 0.0135373 0
+-0.848898 0.0254957 0
+-0.81548 0.0334174 0
+-0.778521 0.0369596 0
+-0.741747 0.0367734 0
+-0.708083 0.0336638 0
+-0.679944 0.0281386 0
+-0.659395 0.0205494 0
+-0.647794 0.0116005 0
+-0.64505 0.00274401 0
+-0.648997 -0.00394719 0
+-0.655498 -0.00650202 0
+-0.659541 -0.00404305 0
+-0.657052 0.00248894 0
+-0.646726 0.0103261 0
+-0.631023 0.0157019 0
+-0.615772 0.0152517 0
+-0.608326 0.00744562 0
+-0.614872 -0.00654636 0
+-0.637844 -0.0229725 0
+-0.674495 -0.0366508 0
+-0.717282 -0.0427877 0
+-0.75609 -0.038808 0
+-0.781593 -0.0255033 0
+-0.78864 -0.0070468 0
+-0.778447 0.010192 0
+-0.758735 0.0197116 0
+-0.741544 0.0171911 0
+-0.739288 0.00225526 0
+-0.760312 -0.0210242 0
+-0.80555 -0.0452382 0
+-0.86767 -0.0621202 0
+-0.933245 -0.0655751 0
+-0.987367 -0.0541231 0
+-1.01914 -0.0317751 0
+-1.02606 -0.00691481 0
+-1.01558 0.0104766 0
+-1.00331 0.0122724 0
+-1.00823 -0.0049227 0
+-1.04673 -0.0385054 0
+-1.12738 -0.0806504 0
+-1.24819 -0.12081 0
+-1.39721 -0.14902 0
+-1.55606 -0.158846 0
+-1.70507 -0.149007 0
+-1.82829 -0.123225 0
+-1.91679 -0.0885034 0
+-1.96942 -0.0526243 0
+-1.99123 -0.0218121 0
+-1.99061 0.000618832 0
+-1.97625 0.0143579 0
+-1.95504 0.0212122 0
+-1.93117 0.0238626 0
+-1.90633 0.0248463 0
+-1.88029 0.0260423 0
+-1.8517 0.0285863 0
+-1.81874 0.0329614 0
+-1.77969 0.0390486 0
+-1.73359 0.0461019 0
+-1.68081 0.0527738 0
+-1.62345 0.0573654 0
+-1.56508 0.0583641 0
+-1.50995 0.0551289 0
+-1.46156 0.0483973 0
+-1.42129 0.0402633 0
+-1.38781 0.0334839 0
+-1.35749 0.0303231 0
+-1.32603 0.0314545 0
+-1.29052 0.0355106 0
+-1.25091 0.0396109 0
+-1.21018 0.0407261 0
+-1.17291 0.0372688 0
+-1.14282 0.0300917 0
+-1.12055 0.022276 0
+-1.10292 0.0176316 0
+-1.08444 0.0184767 0
+-1.06076 0.0236765 0
+-1.03287 0.0278881 0
+-1.01037 0.0225027 0
+-1.01156 -0.00119207 0
+-1.05076 -0.0391961 0
+-0.67877 0.00537921 0
+-0.429927 0.0628118 0
+-0.429927 0.221448 0
+-0.182035 -0.0235437 0
+-0.364326 -0.0460891 0
+-0.724281 -0.0817095 0
+-0.592841 -0.13144 0
+-0.425155 -0.167686 0
+-0.2544 -0.170755 0
+-0.114455 -0.139944 0
+-0.0276464 -0.0868079 0
+0.000355729 -0.0280014 0
+-0.0209854 0.0213419 0
+-0.072993 0.0520083 0
+-0.134965 0.0619732 0
+-0.189883 0.0549185 0
+-0.227242 0.0373592 0
+-0.243186 0.0159448 0
+-0.239123 -0.00406273 0
+-0.220067 -0.0190555 0
+-0.193335 -0.026731 0
+-0.167415 -0.0259192 0
+-0.150469 -0.0169459 0
+-0.148231 -0.00223705 0
+-0.161784 0.013553 0
+-0.186267 0.024484 0
+-0.211587 0.0253209 0
+-0.225412 0.0138248 0
+-0.217629 -0.00778225 0
+-0.184565 -0.0330638 0
+-0.131118 -0.0534462 0
+-0.0697713 -0.0613459 0
+-0.0167654 -0.0530053 0
+0.0130345 -0.0297993 0
+0.0105309 0.00250417 0
+-0.0255449 0.0360763 0
+-0.0893361 0.0637918 0
+-0.170514 0.0811789 0
+-0.257357 0.0868434 0
+-0.338852 0.0814955 0
+-0.405256 0.0664044 0
+-0.447554 0.0422984 0
+-0.456908 0.00935365 0
+-0.425109 -0.0317982 0
+-0.346356 -0.0787526 0
+-0.219726 -0.12663 0
+-0.0511362 -0.168589 0
+0.146352 -0.197488 0
+0.354312 -0.207959 0
+0.552266 -0.197953 0
+0.721314 -0.169047 0
+0.846802 -0.125487 0
+0.919376 -0.0725732 0
+0.934637 -0.0152608 0
+0.89227 0.0423682 0
+0.795544 0.0967263 0
+0.651568 0.143976 0
+0.471866 0.179703 0
+0.272352 0.199514 0
+0.071902 0.20045 0
+-0.110608 0.18251 0
+-0.259986 0.149378 0
+-0.367782 0.107796 0
+-0.433434 0.0656518 0
+-0.462941 0.0295071 0
+-0.465498 0.00255735 0
+-0.449346 -0.0161517 0
+-0.418386 -0.0309599 0
+-0.370764 -0.0476216 0
+-0.29985 -0.0709141 0
+-0.197153 -0.102697 0
+-0.0561285 -0.141024 0
+0.124341 -0.18047 0
+0.337729 -0.213388 0
+0.56941 -0.231681 0
+0.798025 -0.228614 0
+0.998389 -0.200363 0
+1.14544 -0.147053 0
+1.2186 -0.0731609 0
+1.20576 0.0128431 0
+1.10611 0.0996522 0
+0.93109 0.175019 0
+0.702985 0.228105 0
+0.451223 0.251762 0
+0.207122 0.244102 0
+-0.00168465 0.208807 0
+-0.155685 0.154001 0
+-0.245709 0.090024 0
+-0.272569 0.0268601 0
+-0.244666 -0.0279027 0
+-0.174705 -0.0699607 0
+-0.0767694 -0.0979359 0
+0.0354457 -0.112215 0
+0.149186 -0.11374 0
+0.252604 -0.103418 0
+0.334981 -0.0823773 0
+0.387761 -0.0527793 0
+0.406264 -0.0185026 0
+0.391343 0.014921 0
+0.349976 0.0413671 0
+0.294119 0.0558567 0
+0.237885 0.0562349 0
+0.193886 0.0439989 0
+0.170056 0.0238303 0
+0.16809 0.00196549 0
+0.184025 -0.0159349 0
+0.210577 -0.0265516 0
+0.240225 -0.0296482 0
+0.267864 -0.0276384 0
+0.292214 -0.0243507 0
+0.315837 -0.0236223 0
+0.344085 -0.0282485 0
+0.383536 -0.0394503 0
+0.440218 -0.0566827 0
+0.517726 -0.0775073 0
+0.615194 -0.0974684 0
+0.72546 -0.110266 0
+0.83417 -0.10871 0
+0.920914 -0.0867443 0
+0.963171 -0.042257 0
+0.94287 0.0203015 0
+0.854081 0.0887888 0
+0.709329 0.144752 0
+0.541859 0.16747 0
+0.401241 0.140618 0
+0.331356 0.0698848 0
+0.345186 0.0809179 0
+0.276648 0.112421 0
+0.276648 0.282217 0
+-0.693316 -0.0931455 0
+-1.38071 -0.173371 0
+-2.74184 -0.302648 0
+-2.38973 -0.483541 0
+-1.93883 -0.618586 0
+-1.48156 -0.628025 0
+-1.113 -0.508499 0
+-0.892889 -0.306921 0
+-0.831049 -0.0898392 0
+-0.894456 0.0847519 0
+-1.02756 0.185115 0
+-1.17484 0.209253 0
+-1.29643 0.17651 0
+-1.37311 0.114042 0
+-1.40262 0.045456 0
+-1.39263 -0.0140514 0
+-1.35534 -0.0563351 0
+-1.30558 -0.0764887 0
+-1.26063 -0.0708761 0
+-1.23862 -0.0389493 0
+-1.2536 0.0127402 0
+-1.30826 0.068218 0
+-1.38861 0.104833 0
+-1.4647 0.101417 0
+-1.4994 0.0485296 0
+-1.46264 -0.0445402 0
+-1.34533 -0.150373 0
+-1.16639 -0.232383 0
+-0.96907 -0.258666 0
+-0.807507 -0.214566 0
+-0.729066 -0.108238 0
+-0.759731 0.0331712 0
+-0.898154 0.174501 0
+-1.11963 0.285274 0
+-1.38672 0.348264 0
+-1.66059 0.360715 0
+-1.90807 0.328978 0
+-2.10231 0.260646 0
+-2.21911 0.159097 0
+-2.23329 0.0235343 0
+-2.1192 -0.145879 0
+-1.85671 -0.34125 0
+-1.44025 -0.543079 0
+-0.886596 -0.722246 0
+-0.236564 -0.847518 0
+0.450678 -0.8952 0
+1.10897 -0.856244 0
+1.67751 -0.737589 0
+2.10958 -0.557554 0
+2.37526 -0.338245 0
+2.45924 -0.0992439 0
+2.35724 0.144374 0
+2.07445 0.379522 0
+1.62755 0.590869 0
+1.04851 0.758744 0
+0.386259 0.86177 0
+-0.296986 0.883696 0
+-0.935544 0.82107 0
+-1.47352 0.687352 0
+-1.87635 0.510626 0
+-2.13591 0.325216 0
+-2.2669 0.160499 0
+-2.29593 0.0315841 0
+-2.24778 -0.0642998 0
+-2.13432 -0.144416 0
+-1.95014 -0.231802 0
+-1.6762 -0.344858 0
+-1.28969 -0.489197 0
+-0.77635 -0.654369 0
+-0.140892 -0.815926 0
+0.587156 -0.941435 0
+1.35368 -0.998205 0
+2.08583 -0.960758 0
+2.70216 -0.816697 0
+3.12539 -0.570285 0
+3.29561 -0.243373 0
+3.18189 0.126561 0
+2.7901 0.491448 0
+2.16459 0.800526 0
+1.38266 1.01004 0
+0.541822 1.0926 0
+-0.257581 1.04351 0
+-0.930237 0.881463 0
+-1.41939 0.643151 0
+-1.70244 0.373074 0
+-1.78781 0.112236 0
+-1.70537 -0.110342 0
+-1.49477 -0.280559 0
+-1.19633 -0.396373 0
+-0.847033 -0.461515 0
+-0.481255 -0.479518 0
+-0.133421 -0.451251 0
+0.1612 -0.376997 0
+0.369823 -0.261401 0
+0.46922 -0.117899 0
+0.45351 0.0306314 0
+0.338551 0.156327 0
+0.159931 0.234477 0
+-0.035684 0.25185 0
+-0.203026 0.211341 0
+-0.309897 0.130701 0
+-0.343715 0.0357844 0
+-0.310939 -0.0487106 0
+-0.230444 -0.107047 0
+-0.124288 -0.135805 0
+-0.00975471 -0.142171 0
+0.104836 -0.138941 0
+0.220358 -0.139145 0
+0.344656 -0.152546 0
+0.489625 -0.184418 0
+0.668286 -0.235344 0
+0.891179 -0.3004 0
+1.16103 -0.367323 0
+1.466 -0.415236 0
+1.77398 -0.416682 0
+2.0322 -0.344972 0
+2.17602 -0.186074 0
+2.14713 0.049193 0
+1.91697 0.318952 0
+1.50609 0.555627 0
+0.988566 0.684996 0
+0.471062 0.658121 0
+0.0399825 0.500964 0
+0.0758996 0.410927 0
+0.0529708 0.306559 0
+0.0529708 0.518348 0
+-1.38074 -0.187111 0
+-2.74802 -0.342655 0
+-5.46336 -0.592713 0
+-5.00446 -0.942442 0
+-4.42055 -1.2025 0
+-3.84189 -1.20668 0
+-3.39822 -0.952162 0
+-3.16009 -0.545052 0
+-3.12072 -0.129205 0
+-3.21479 0.178834 0
+-3.35722 0.327541 0
+-3.48031 0.33235 0
+-3.55332 0.249524 0
+-3.57981 0.140536 0
+-3.58043 0.0460881 0
+-3.57441 -0.0200734 0
+-3.57053 -0.0602128 0
+-3.57044 -0.0765689 0
+-3.57809 -0.0632237 0
+-3.60546 -0.0115749 0
+-3.66818 0.0754578 0
+-3.77223 0.172275 0
+-3.90052 0.233124 0
+-4.00957 0.210471 0
+-4.04194 0.0809075 0
+-3.95077 -0.135705 0
+-3.7252 -0.375944 0
+-3.40349 -0.554085 0
+-3.06592 -0.596239 0
+-2.80901 -0.471469 0
+-2.71227 -0.204977 0
+-2.81178 0.132691 0
+-3.09179 0.454508 0
+-3.49593 0.689421 0
+-3.95083 0.80317 0
+-4.38937 0.799257 0
+-4.76304 0.702652 0
+-5.03982 0.537425 0
+-5.19241 0.311693 0
+-5.18695 0.018077 0
+-4.98131 -0.35152 0
+-4.53615 -0.786406 0
+-3.83394 -1.24528 0
+-2.89591 -1.66028 0
+-1.78734 -1.95608 0
+-0.607527 -2.07501 0
+0.531676 -1.99544 0
+1.52902 -1.73493 0
+2.30902 -1.33755 0
+2.82455 -0.853766 0
+3.04963 -0.324322 0
+2.97048 0.223526 0
+2.58273 0.76728 0
+1.89785 1.27575 0
+0.95481 1.70179 0
+-0.171902 1.98848 0
+-1.37576 2.08756 0
+-2.53564 1.98095 0
+-3.54176 1.69348 0
+-4.31991 1.28877 0
+-4.84354 0.848842 0
+-5.12891 0.445872 0
+-5.21593 0.118606 0
+-5.14345 -0.136777 0
+-4.9297 -0.358162 0
+-4.56547 -0.596029 0
+-4.02188 -0.888452 0
+-3.26866 -1.24241 0
+-2.29535 -1.62768 0
+-1.12756 -1.98371 0
+0.166454 -2.23545 0
+1.48018 -2.31193 0
+2.6823 -2.16288 0
+3.63582 -1.77022 0
+4.21939 -1.15385 0
+4.34765 -0.371632 0
+3.98783 0.486383 0
+3.16958 1.3097 0
+1.98502 1.98509 0
+0.576888 2.41817 0
+-0.884826 2.55432 0
+-2.23352 2.3922 0
+-3.33617 1.98412 0
+-4.11435 1.42133 0
+-4.54974 0.808461 0
+-4.67338 0.235879 0
+-4.5442 -0.23952 0
+-4.2262 -0.598564 0
+-3.77354 -0.849026 0
+-3.22832 -1.00674 0
+-2.62882 -1.07901 0
+-2.02107 -1.059 0
+-1.46458 -0.933489 0
+-1.02689 -0.699092 0
+-0.767537 -0.377247 0
+-0.718335 -0.0185697 0
+-0.86933 0.307322 0
+-1.16789 0.533039 0
+-1.53238 0.616339 0
+-1.87532 0.554284 0
+-2.12685 0.382236 0
+-2.24955 0.158485 0
+-2.24021 -0.0580562 0
+-2.12034 -0.226919 0
+-1.92185 -0.334291 0
+-1.67498 -0.38904 0
+-1.40248 -0.411442 0
+-1.1194 -0.422218 0
+-0.834701 -0.437248 0
+-0.551028 -0.468091 0
+-0.262629 -0.523744 0
+0.0452322 -0.60826 0
+0.39064 -0.71273 0
+0.78162 -0.806215 0
+1.1992 -0.834257 0
+1.58633 -0.732108 0
+1.85267 -0.452414 0
+1.89928 0.00258425 0
+1.65737 0.560862 0
+1.12523 1.08777 0
+0.383664 1.42656 0
+-0.422807 1.46459 0
+-1.1281 1.20626 0
+-0.772374 0.823987 0
+-0.505924 0.404402 0
+-0.505924 0.497134 0
+-2.04059 -0.267864 0
+-4.06563 -0.485256 0
+-8.10189 -0.83212 0
+-7.73099 -1.31333 0
+-7.27731 -1.65618 0
+-6.86603 -1.61795 0
+-6.60584 -1.21235 0
+-6.52832 -0.622564 0
+-6.57992 -0.0775966 0
+-6.65983 0.258751 0
+-6.67727 0.34498 0
+-6.59613 0.251222 0
+-6.44573 0.0991287 0
+-6.29617 -0.0090158 0
+-6.21592 -0.0341623 0
+-6.23643 0.000443518 0
+-6.34234 0.0457079 0
+-6.48918 0.0702753 0
+-6.63438 0.0819821 0
+-6.76073 0.114779 0
+-6.8777 0.19243 0
+-7.0013 0.295885 0
+-7.12735 0.359171 0
+-7.21742 0.300553 0
+-7.20954 0.0730261 0
+-7.04998 -0.295258 0
+-6.72968 -0.696242 0
+-6.30407 -0.979691 0
+-5.88329 -1.01701 0
+-5.59489 -0.759865 0
+-5.53577 -0.264093 0
+-5.73613 0.333061 0
+-6.15185 0.870225 0
+-6.68708 1.22466 0
+-7.23418 1.35027 0
+-7.71007 1.27515 0
+-8.07217 1.06476 0
+-8.30896 0.774215 0
+-8.41432 0.417064 0
+-8.36335 -0.0328919 0
+-8.10546 -0.609407 0
+-7.58045 -1.31142 0
+-6.74946 -2.07627 0
+-5.6241 -2.78564 0
+-4.27746 -3.30272 0
+-2.83049 -3.52197 0
+-1.42044 -3.40548 0
+-0.167249 -2.98812 0
+0.846271 -2.35107 0
+1.57324 -1.58073 0
+1.98621 -0.737291 0
+2.05957 0.150177 0
+1.76489 1.06196 0
+1.08456 1.95608 0
+0.0363937 2.74996 0
+-1.30616 3.33104 0
+-2.81279 3.5942 0
+-4.31921 3.48736 0
+-5.66608 3.04036 0
+-6.73766 2.36035 0
+-7.48298 1.59416 0
+-7.91143 0.874328 0
+-8.06661 0.273784 0
+-7.99238 -0.211005 0
+-7.70714 -0.643398 0
+-7.19674 -1.10643 0
+-6.42763 -1.65756 0
+-5.3731 -2.29694 0
+-4.04074 -2.96004 0
+-2.49011 -3.53434 0
+-0.834947 -3.89061 0
+0.769665 -3.91654 0
+2.15035 -3.54356 0
+3.14239 -2.76225 0
+3.61524 -1.6267 0
+3.49348 -0.249872 0
+2.77136 1.2085 0
+1.51905 2.56202 0
+-0.122139 3.62628 0
+-1.95813 4.25416 0
+-3.77387 4.37006 0
+-5.37318 3.99151 0
+-6.61608 3.22702 0
+-7.44141 2.24666 0
+-7.86624 1.23329 0
+-7.9622 0.331846 0
+-7.81863 -0.383093 0
+-7.50804 -0.909148 0
+-7.06875 -1.28831 0
+-6.51077 -1.56472 0
+-5.83992 -1.74986 0
+-5.08604 -1.81288 0
+-4.319 -1.70053 0
+-3.64245 -1.37564 0
+-3.16648 -0.853215 0
+-2.9707 -0.214352 0
+-3.07449 0.411118 0
+-3.42784 0.886382 0
+-3.92653 1.11503 0
+-4.44482 1.07258 0
+-4.87118 0.808601 0
+-5.13308 0.42038 0
+-5.20339 0.0122544 0
+-5.09093 -0.339374 0
+-4.82449 -0.600729 0
+-4.44054 -0.772988 0
+-3.97932 -0.872665 0
+-3.48624 -0.915303 0
+-3.011 -0.91248 0
+-2.5986 -0.880491 0
+-2.2733 -0.849044 0
+-2.02469 -0.856871 0
+-1.80731 -0.930109 0
+-1.56018 -1.05335 0
+-1.24118 -1.15326 0
+-0.860425 -1.11286 0
+-0.493188 -0.819651 0
+-0.260215 -0.230388 0
+-0.279265 0.579912 0
+-0.607802 1.41631 0
+-1.20412 2.02288 0
+-1.92525 2.18572 0
+-2.55405 1.83506 0
+-1.58864 1.08761 0
+-0.934754 0.341491 0
+-0.934754 0.30684 0
+-2.50839 -0.306899 0
+-5.00389 -0.54854 0
+-9.99488 -0.928293 0
+-9.86604 -1.44217 0
+-9.75549 -1.76673 0
+-9.74449 -1.62894 0
+-9.86844 -1.08839 0
+-10.0757 -0.415314 0
+-10.2436 0.090307 0
+-10.2406 0.255774 0
+-9.99853 0.102925 0
+-9.55478 -0.192518 0
+-9.04148 -0.414165 0
+-8.6271 -0.423392 0
+-8.44102 -0.220239 0
+-8.51972 0.0791476 0
+-8.80055 0.32655 0
+-9.16278 0.432509 0
+-9.4903 0.4095 0
+-9.7207 0.345191 0
+-9.85603 0.327763 0
+-9.93442 0.374284 0
+-9.98507 0.409825 0
+-9.99692 0.312407 0
+-9.92139 -0.00249376 0
+-9.70744 -0.509207 0
+-9.34697 -1.05671 0
+-8.90196 -1.42469 0
+-8.49435 -1.42462 0
+-8.26072 -0.993489 0
+-8.29391 -0.230894 0
+-8.60151 0.64066 0
+-9.10248 1.3712 0
+-9.66322 1.7854 0
+-10.1537 1.84079 0
+-10.4953 1.61677 0
+-10.677 1.24639 0
+-10.7343 0.831579 0
+-10.7065 0.389234 0
+-10.5956 -0.143829 0
+-10.3526 -0.852406 0
+-9.89781 -1.76615 0
+-9.16435 -2.80973 0
+-8.14018 -3.80979 0
+-6.88631 -4.55659 0
+-5.52065 -4.88763 0
+-4.17759 -4.74853 0
+-2.9657 -4.20001 0
+-1.94615 -3.37061 0
+-1.14124 -2.38564 0
+-0.564005 -1.31451 0
+-0.247376 -0.166446 0
+-0.251644 1.06624 0
+-0.642589 2.34703 0
+-1.45077 3.55814 0
+-2.63504 4.51531 0
+-4.07242 5.03158 0
+-5.58274 4.99769 0
+-6.97826 4.43587 0
+-8.11524 3.49734 0
+-8.92419 2.40311 0
+-9.40621 1.35636 0
+-9.60132 0.468893 0
+-9.54853 -0.263795 0
+-9.25811 -0.93381 0
+-8.70745 -1.65709 0
+-7.86059 -2.50443 0
+-6.70106 -3.45646 0
+-5.2618 -4.3993 0
+-3.6389 -5.15724 0
+-1.98467 -5.54484 0
+-0.483261 -5.41795 0
+0.681972 -4.70879 0
+1.35964 -3.43991 0
+1.45343 -1.72048 0
+0.935349 0.268213 0
+-0.149603 2.29346 0
+-1.68604 4.09846 0
+-3.4993 5.43954 0
+-5.37782 6.13269 0
+-7.10785 6.10009 0
+-8.51515 5.39882 0
+-9.50209 4.21396 0
+-10.0653 2.80988 0
+-10.2842 1.45216 0
+-10.2816 0.329224 0
+-10.171 -0.49366 0
+-10.0126 -1.06751 0
+-9.79728 -1.50365 0
+-9.46605 -1.89596 0
+-8.95603 -2.25987 0
+-8.25041 -2.5185 0
+-7.4084 -2.54254 0
+-6.5603 -2.22373 0
+-5.86873 -1.54478 0
+-5.47306 -0.610021 0
+-5.44098 0.379033 0
+-5.74729 1.1927 0
+-6.2868 1.65454 0
+-6.91271 1.69848 0
+-7.482 1.37789 0
+-7.88878 0.827167 0
+-8.07568 0.199149 0
+-8.02624 -0.388807 0
+-7.75098 -0.875995 0
+-7.27947 -1.24449 0
+-6.66309 -1.48905 0
+-5.98118 -1.5972 0
+-5.33819 -1.55547 0
+-4.84224 -1.37644 0
+-4.56855 -1.12273 0
+-4.52361 -0.901813 0
+-4.63153 -0.822186 0
+-4.75628 -0.928595 0
+-4.75577 -1.15377 0
+-4.54547 -1.32315 0
+-4.14082 -1.22431 0
+-3.65507 -0.716131 0
+-3.25035 0.175188 0
+-3.0628 1.22876 0
+-3.13639 2.09647 0
+-3.39439 2.44372 0
+-3.65743 2.09809 0
+-2.04092 1.13086 0
+-1.0897 0.201417 0
+-1.0897 0.11987 0
+-2.70861 -0.297479 0
+-5.40366 -0.519712 0
+-10.804 -0.857587 0
+-10.9596 -1.28659 0
+-11.2519 -1.47437 0
+-11.6997 -1.18121 0
+-12.2419 -0.546116 0
+-12.7296 0.0723868 0
+-12.972 0.332701 0
+-12.8214 0.105211 0
+-12.2534 -0.46506 0
+-11.3981 -1.04788 0
+-10.5012 -1.31104 0
+-9.82994 -1.09465 0
+-9.56573 -0.484444 0
+-9.73593 0.249356 0
+-10.2158 0.806453 0
+-10.7969 1.01357 0
+-11.2837 0.896277 0
+-11.5695 0.631067 0
+-11.6565 0.414709 0
+-11.6173 0.335103 0
+-11.5301 0.32261 0
+-11.4266 0.208916 0
+-11.2834 -0.145624 0
+-11.0568 -0.735867 0
+-10.7342 -1.37925 0
+-10.3691 -1.78976 0
+-10.0731 -1.72069 0
+-9.96778 -1.09876 0
+-10.123 -0.0756853 0
+-10.5143 1.03203 0
+-11.0265 1.88338 0
+-11.5008 2.25971 0
+-11.8035 2.14344 0
+-11.8797 1.69302 0
+-11.7668 1.13352 0
+-11.561 0.625757 0
+-11.3567 0.184917 0
+-11.1914 -0.309159 0
+-11.0246 -1.01913 0
+-10.7619 -2.02889 0
+-10.3082 -3.2634 0
+-9.62231 -4.49571 0
+-8.74063 -5.43827 0
+-7.75988 -5.86837 0
+-6.78966 -5.71874 0
+-5.90405 -5.08561 0
+-5.12054 -4.15412 0
+-4.41754 -3.08863 0
+-3.77824 -1.95381 0
+-3.23202 -0.712654 0
+-2.86599 0.700209 0
+-2.79607 2.27711 0
+-3.1115 3.87357 0
+-3.82235 5.22617 0
+-4.83917 6.0484 0
+-5.99618 6.15471 0
+-7.10707 5.54676 0
+-8.02567 4.41593 0
+-8.68233 3.05978 0
+-9.07954 1.75357 0
+-9.25395 0.643308 0
+-9.2338 -0.283945 0
+-9.01401 -1.1536 0
+-8.55789 -2.1132 0
+-7.82368 -3.23864 0
+-6.80316 -4.47697 0
+-5.55072 -5.65174 0
+-4.1892 -6.51876 0
+-2.89083 -6.8432 0
+-1.841 -6.46777 0
+-1.19833 -5.35146 0
+-1.06417 -3.57407 0
+-1.4685 -1.31615 0
+-2.37111 1.17082 0
+-3.67194 3.59429 0
+-5.22462 5.65115 0
+-6.8521 7.06701 0
+-8.36763 7.64822 0
+-9.60474 7.33721 0
+-10.4531 6.24715 0
+-10.8888 4.64969 0
+-10.984 2.90514 0
+-10.8844 1.35257 0
+-10.7569 0.201718 0
+-10.7256 -0.524997 0
+-10.8222 -0.970926 0
+-10.9747 -1.35116 0
+-11.0413 -1.82934 0
+-10.8768 -2.42438 0
+-10.4025 -2.99276 0
+-9.64974 -3.29532 0
+-8.75706 -3.11641 0
+-7.92394 -2.37789 0
+-7.34076 -1.1932 0
+-7.12519 0.163459 0
+-7.28979 1.3573 0
+-7.75009 2.11485 0
+-8.36394 2.31233 0
+-8.98067 1.99462 0
+-9.47813 1.32463 0
+-9.7761 0.497123 0
+-9.83026 -0.334649 0
+-9.62184 -1.08441 0
+-9.15759 -1.70874 0
+-8.48314 -2.16349 0
+-7.69842 -2.38192 0
+-6.95593 -2.29796 0
+-6.42884 -1.90353 0
+-6.25284 -1.29873 0
+-6.46507 -0.689577 0
+-6.97177 -0.315485 0
+-7.5672 -0.333169 0
+-8.00298 -0.717997 0
+-8.081 -1.24513 0
+-7.72911 -1.57619 0
+-7.02469 -1.42055 0
+-6.15557 -0.693929 0
+-5.33743 0.410618 0
+-4.7266 1.48564 0
+-4.36744 2.08456 0
+-4.19648 1.92713 0
+-2.121 1.04101 0
+-1.05097 0.118855 0
+-1.05097 0.0560828 0
+-2.65835 -0.253367 0
+-5.28996 -0.424401 0
+-10.5574 -0.664946 0
+-10.9233 -0.92063 0
+-11.5119 -0.885821 0
+-12.2844 -0.408682 0
+-13.0993 0.268842 0
+-13.7355 0.708514 0
+-13.9631 0.560391 0
+-13.6414 -0.216512 0
+-12.796 -1.31051 0
+-11.6353 -2.20854 0
+-10.4881 -2.45818 0
+-9.68324 -1.89955 0
+-9.42328 -0.744394 0
+-9.71114 0.537218 0
+-10.3626 1.45796 0
+-11.0978 1.74872 0
+-11.6635 1.46196 0
+-11.9277 0.895267 0
+-11.9039 0.390963 0
+-11.7044 0.135598 0
+-11.4573 0.0754631 0
+-11.2379 -0.0104733 0
+-11.0495 -0.334032 0
+-10.8551 -0.930239 0
+-10.6329 -1.60143 0
+-10.4155 -2.00718 0
+-10.2866 -1.84956 0
+-10.3364 -1.04895 0
+-10.6019 0.189804 0
+-11.0295 1.45966 0
+-11.4844 2.33823 0
+-11.8039 2.57921 0
+-11.8698 2.20934 0
+-11.6614 1.48464 0
+-11.263 0.735161 0
+-10.8214 0.184108 0
+-10.4745 -0.161964 0
+-10.2881 -0.495546 0
+-10.231 -1.0762 0
+-10.2007 -2.05918 0
+-10.0833 -3.3808 0
+-9.81418 -4.76484 0
+-9.40589 -5.84656 0
+-8.92971 -6.34454 0
+-8.4642 -6.18425 0
+-8.04362 -5.50619 0
+-7.6383 -4.55943 0
+-7.17965 -3.54727 0
+-6.61485 -2.51861 0
+-5.9581 -1.36939 0
+-5.30621 0.0483212 0
+-4.80648 1.77739 0
+-4.59249 3.65958 0
+-4.72152 5.35521 0
+-5.14665 6.47353 0
+-5.73684 6.7449 0
+-6.33365 6.14358 0
+-6.81555 4.89783 0
+-7.13709 3.38132 0
+-7.32101 1.93749 0
+-7.40862 0.730922 0
+-7.41699 -0.275576 0
+-7.32208 -1.2485 0
+-7.06729 -2.36798 0
+-6.59619 -3.70974 0
+-5.89955 -5.1736 0
+-5.04186 -6.50943 0
+-4.15619 -7.40443 0
+-3.41243 -7.58696 0
+-2.97136 -6.90883 0
+-2.94187 -5.38096 0
+-3.35615 -3.15979 0
+-4.16933 -0.502963 0
+-5.27825 2.27974 0
+-6.54733 4.86337 0
+-7.83065 6.93447 0
+-8.98658 8.22295 0
+-9.89015 8.5518 0
+-10.4504 7.89749 0
+-10.6342 6.43094 0
+-10.4871 4.50261 0
+-10.1368 2.55475 0
+-9.76565 0.981458 0
+-9.55589 -0.00803122 0
+-9.62295 -0.457941 0
+-9.96713 -0.626743 0
+-10.4672 -0.85113 0
+-10.9227 -1.37382 0
+-11.1306 -2.21649 0
+-10.9642 -3.15918 0
+-10.4226 -3.83684 0
+-9.63107 -3.90796 0
+-8.79297 -3.21599 0
+-8.11684 -1.86932 0
+-7.74826 -0.205116 0
+-7.73286 1.3419 0
+-8.02003 2.40202 0
+-8.49821 2.79051 0
+-9.04001 2.53642 0
+-9.53526 1.81988 0
+-9.90091 0.862772 0
+-10.0737 -0.161888 0
+-10.0026 -1.15544 0
+-9.65777 -2.05361 0
+-9.05594 -2.76532 0
+-8.28921 -3.14865 0
+-7.5301 -3.05707 0
+-6.99614 -2.43749 0
+-6.87701 -1.41786 0
+-7.25206 -0.314525 0
+-8.03799 0.470437 0
+-8.99732 0.626161 0
+-9.81157 0.0962609 0
+-10.1917 -0.865008 0
+-9.97955 -1.78834 0
+-9.19758 -2.20252 0
+-8.0281 -1.86341 0
+-6.73656 -0.880919 0
+-5.57717 0.32625 0
+-4.72293 1.23031 0
+-4.24682 1.45102 0
+-1.99082 0.950179 0
+-0.952836 0.177142 0
+-0.952836 0.141818 0
+-2.43817 -0.198618 0
+-4.82078 -0.308614 0
+-9.56292 -0.434042 0
+-9.99496 -0.488591 0
+-10.6681 -0.212659 0
+-11.51 0.433211 0
+-12.3441 1.10296 0
+-12.933 1.29736 0
+-13.0572 0.684636 0
+-12.6076 -0.666081 0
+-11.6501 -2.26803 0
+-10.4275 -3.43118 0
+-9.28664 -3.59899 0
+-8.55413 -2.63206 0
+-8.4113 -0.887213 0
+-8.82724 0.953158 0
+-9.58131 2.21203 0
+-10.3644 2.53187 0
+-10.9094 2.00688 0
+-11.0876 1.07352 0
+-10.9321 0.235492 0
+-10.5847 -0.211831 0
+-10.2059 -0.303384 0
+-9.8993 -0.317023 0
+-9.68711 -0.54622 0
+-9.53817 -1.07917 0
+-9.42177 -1.71782 0
+-9.34747 -2.08148 0
+-9.36571 -1.83132 0
+-9.53012 -0.884526 0
+-9.84749 0.507171 0
+-10.2488 1.861 0
+-10.6026 2.69206 0
+-10.7667 2.7433 0
+-10.6529 2.09555 0
+-10.2719 1.10362 0
+-9.73399 0.19724 0
+-9.20418 -0.345695 0
+-8.83207 -0.534073 0
+-8.69024 -0.63737 0
+-8.75109 -1.01535 0
+-8.91229 -1.89798 0
+-9.05611 -3.23698 0
+-9.1096 -4.71134 0
+-9.07252 -5.88363 0
+-8.99888 -6.41819 0
+-8.94538 -6.23774 0
+-8.92006 -5.53151 0
+-8.86388 -4.61561 0
+-8.6783 -3.73285 0
+-8.28349 -2.91342 0
+-7.67303 -1.97985 0
+-6.9321 -0.692602 0
+-6.2071 1.05238 0
+-5.64215 3.09463 0
+-5.31664 5.0297 0
+-5.21568 6.37258 0
+-5.24687 6.77609 0
+-5.29245 6.18916 0
+-5.2713 4.87669 0
+-5.18102 3.29105 0
+-5.08827 1.84473 0
+-5.05032 0.692976 0
+-5.076 -0.249893 0
+-5.12369 -1.20081 0
+-5.11283 -2.37885 0
+-4.95827 -3.8643 0
+-4.6396 -5.49227 0
+-4.2221 -6.92692 0
+-3.83609 -7.79044 0
+-3.63261 -7.79044 0
+-3.73209 -6.80935 0
+-4.18402 -4.92903 0
+-4.95278 -2.39102 0
+-5.93334 0.4776 0
+-6.98678 3.33318 0
+-7.97796 5.85456 0
+-8.7999 7.75641 0
+-9.38006 8.80311 0
+-9.67647 8.84821 0
+-9.67627 7.89729 0
+-9.40391 6.15858 0
+-8.93406 4.03276 0
+-8.39505 2.01575 0
+-7.94931 0.535714 0
+-7.74882 -0.208515 0
+-7.8803 -0.326464 0
+-8.32496 -0.182077 0
+-8.95507 -0.221028 0
+-9.57307 -0.755817 0
+-9.97969 -1.80986 0
+-10.0436 -3.09526 0
+-9.74478 -4.13567 0
+-9.1753 -4.47743 0
+-8.49985 -3.89144 0
+-7.89468 -2.47449 0
+-7.49118 -0.608617 0
+-7.34533 1.19605 0
+-7.4402 2.49689 0
+-7.71291 3.06322 0
+-8.0875 2.91101 0
+-8.49543 2.22781 0
+-8.87574 1.24308 0
+-9.16252 0.124902 0
+-9.27812 -1.03984 0
+-9.14813 -2.18361 0
+-8.73934 -3.17411 0
+-8.10222 -3.78578 0
+-7.38885 -3.77043 0
+-6.82422 -3.00212 0
+-6.63123 -1.61086 0
+-6.93751 -0.00824805 0
+-7.70691 1.23984 0
+-8.73141 1.65066 0
+-9.69244 1.05729 0
+-10.2687 -0.288734 0
+-10.2463 -1.81072 0
+-9.58643 -2.86242 0
+-8.42678 -3.02307 0
+-7.02494 -2.28276 0
+-5.6741 -1.02459 0
+-4.62789 0.1841 0
+-4.05768 0.880817 0
+-1.83912 0.934012 0
+-0.8918 0.364181 0
+-0.8918 0.326901 0
+-2.15046 -0.155549 0
+-4.20678 -0.21647 0
+-8.25392 -0.247974 0
+-8.60379 -0.138718 0
+-9.14068 0.324237 0
+-9.78842 1.08095 0
+-10.3918 1.70632 0
+-10.7616 1.66718 0
+-10.7403 0.663394 0
+-10.2699 -1.13647 0
+-9.43435 -3.10363 0
+-8.45222 -4.4133 0
+-7.61236 -4.43885 0
+-7.16987 -3.07454 0
+-7.24559 -0.811497 0
+-7.77656 1.48413 0
+-8.54377 2.97925 0
+-9.26524 3.25334 0
+-9.7103 2.45194 0
+-9.78148 1.1447 0
+-9.52915 -0.0168364 0
+-9.10015 -0.64083 0
+-8.655 -0.748528 0
+-8.29972 -0.672301 0
+-8.06338 -0.78256 0
+-7.92239 -1.22016 0
+-7.8461 -1.79411 0
+-7.83045 -2.09712 0
+-7.89939 -1.76239 0
+-8.07672 -0.707192 0
+-8.35051 0.780961 0
+-8.65572 2.16621 0
+-8.8888 2.92514 0
+-8.94887 2.80337 0
+-8.78522 1.9319 0
+-8.42686 0.745249 0
+-7.97784 -0.251771 0
+-7.57857 -0.74497 0
+-7.34932 -0.763317 0
+-7.34228 -0.64441 0
+-7.52476 -0.832866 0
+-7.80213 -1.62061 0
+-8.06867 -2.97044 0
+-8.25934 -4.52067 0
+-8.37411 -5.76887 0
+-8.46132 -6.33098 0
+-8.57132 -6.12774 0
+-8.70932 -5.3935 0
+-8.81753 -4.5074 0
+-8.79878 -3.7516 0
+-8.5686 -3.14359 0
+-8.10483 -2.44363 0
+-7.46544 -1.33199 0
+-6.76428 0.351231 0
+-6.11846 2.44881 0
+-5.59668 4.50792 0
+-5.19539 5.97128 0
+-4.8521 6.43279 0
+-4.48671 5.82378 0
+-4.05394 4.44392 0
+-3.5943 2.83141 0
+-3.24713 1.49756 0
+-3.09218 0.538033 0
+-3.13056 -0.211514 0
+-3.31078 -1.0206 0
+-3.5293 -2.16032 0
+-3.64714 -3.74646 0
+-3.6313 -5.50811 0
+-3.55175 -7.00647 0
+-3.53431 -7.80789 0
+-3.70507 -7.61967 0
+-4.13932 -6.3751 0
+-4.83009 -4.23826 0
+-5.68858 -1.53253 0
+-6.57623 1.36525 0
+-7.35349 4.11044 0
+-7.92291 6.42399 0
+-8.24842 8.08192 0
+-8.34644 8.90113 0
+-8.26028 8.76205 0
+-8.03651 7.67353 0
+-7.71713 5.8392 0
+-7.34778 3.66341 0
+-6.98981 1.65778 0
+-6.72073 0.266641 0
+-6.61579 -0.313456 0
+-6.71767 -0.224585 0
+-7.01141 0.111665 0
+-7.4205 0.188065 0
+-7.82888 -0.347436 0
+-8.12004 -1.51871 0
+-8.21638 -2.99892 0
+-8.1027 -4.24935 0
+-7.82532 -4.75481 0
+-7.46937 -4.24738 0
+-7.12585 -2.81802 0
+-6.86341 -0.871047 0
+-6.71611 1.04875 0
+-6.68878 2.46956 0
+-6.77288 3.14732 0
+-6.96039 3.09852 0
+-7.24498 2.5124 0
+-7.60773 1.60583 0
+-7.99671 0.513876 0
+-8.31823 -0.71831 0
+-8.45518 -2.04666 0
+-8.31283 -3.31647 0
+-7.87371 -4.22489 0
+-7.23139 -4.41275 0
+-6.57779 -3.65573 0
+-6.14047 -2.04817 0
+-6.09307 -0.0556485 0
+-6.47863 1.6254 0
+-7.18187 2.3539 0
+-7.964 1.83942 0
+-8.54576 0.293033 0
+-8.70428 -1.6522 0
+-8.34495 -3.22175 0
+-7.52427 -3.84374 0
+-6.42352 -3.3835 0
+-5.29198 -2.15613 0
+-4.38306 -0.724821 0
+-3.89873 0.396483 0
+-1.79903 0.977869 0
+-0.906955 0.591348 0
+-0.906955 0.525723 0
+-1.88267 -0.136367 0
+-3.63516 -0.173689 0
+-7.03082 -0.158136 0
+-7.20253 0.0329933 0
+-7.45784 0.579548 0
+-7.74176 1.36487 0
+-7.96523 1.92979 0
+-8.03627 1.73822 0
+-7.89412 0.521243 0
+-7.53898 -1.49161 0
+-7.04723 -3.59538 0
+-6.56152 -4.899 0
+-6.25048 -4.7499 0
+-6.24648 -3.07854 0
+-6.58718 -0.470789 0
+-7.19087 2.08782 0
+-7.88172 3.67009 0
+-8.45653 3.82816 0
+-8.76262 2.75802 0
+-8.74987 1.13196 0
+-8.47444 -0.29226 0
+-8.05709 -1.05817 0
+-7.6224 -1.18321 0
+-7.25177 -1.04293 0
+-6.97058 -1.06375 0
+-6.76739 -1.42335 0
+-6.62518 -1.93632 0
+-6.54182 -2.18049 0
+-6.52842 -1.77578 0
+-6.59153 -0.644082 0
+-6.715 0.90443 0
+-6.85566 2.30688 0
+-6.95659 3.02607 0
+-6.97136 2.81814 0
+-6.88721 1.84775 0
+-6.73574 0.59379 0
+-6.58499 -0.402527 0
+-6.51424 -0.815712 0
+-6.58137 -0.696189 0
+-6.79652 -0.42926 0
+-7.11526 -0.514125 0
+-7.45626 -1.2796 0
+-7.73705 -2.68964 0
+-7.91071 -4.34701 0
+-7.98354 -5.69604 0
+-8.00304 -6.31148 0
+-8.02246 -6.10832 0
+-8.0628 -5.35315 0
+-8.09554 -4.47467 0
+-8.05662 -3.79051 0
+-7.88333 -3.31688 0
+-7.55083 -2.77613 0
+-7.08642 -1.79639 0
+-6.55396 -0.181232 0
+-6.01925 1.9141 0
+-5.51746 4.00614 0
+-5.04013 5.49396 0
+-4.5456 5.93826 0
+-3.98254 5.26072 0
+-3.31822 3.77961 0
+-2.59854 2.11173 0
+-2.08555 0.98458 0
+-1.86673 0.319213 0
+-1.92539 -0.152859 0
+-2.21912 -0.726857 0
+-2.63947 -1.73998 0
+-2.93524 -3.45069 0
+-3.087 -5.35635 0
+-3.19091 -6.90256 0
+-3.3747 -7.6241 0
+-3.73908 -7.25529 0
+-4.31491 -5.79927 0
+-5.04644 -3.50673 0
+-5.80879 -0.770173 0
+-6.45472 2.01118 0
+-6.87151 4.52723 0
+-7.02304 6.57552 0
+-6.9583 8.01718 0
+-6.78389 8.72671 0
+-6.61545 8.59362 0
+-6.5322 7.59028 0
+-6.55468 5.86168 0
+-6.65188 3.7606 0
+-6.76771 1.77361 0
+-6.84984 0.348769 0
+-6.8672 -0.296089 0
+-6.81312 -0.278669 0
+-6.69955 -0.0018993 0
+-6.54992 0.0384358 0
+-6.39347 -0.503892 0
+-6.26015 -1.65202 0
+-6.17456 -3.08451 0
+-6.1494 -4.27452 0
+-6.18089 -4.72332 0
+-6.2487 -4.17957 0
+-6.3218 -2.74492 0
+-6.36979 -0.823062 0
+-6.37674 1.0557 0
+-6.35267 2.44549 0
+-6.33702 3.13167 0
+-6.39035 3.15185 0
+-6.57323 2.69528 0
+-6.91642 1.94902 0
+-7.39254 0.989997 0
+-7.90454 -0.206307 0
+-8.30372 -1.64747 0
+-8.43783 -3.18236 0
+-8.21302 -4.44971 0
+-7.64193 -4.98384 0
+-6.85224 -4.44541 0
+-6.04742 -2.85299 0
+-5.43439 -0.668678 0
+-5.14893 1.33994 0
+-5.20982 2.4148 0
+-5.51862 2.14822 0
+-5.90141 0.675822 0
+-6.17303 -1.38059 0
+-6.19846 -3.19632 0
+-5.9315 -4.11071 0
+-5.42381 -3.89119 0
+-4.80781 -2.77213 0
+-4.25989 -1.27274 0
+-3.94955 0.0861463 0
+-1.91902 1.00675 0
+-0.993744 0.7484 0
+-0.993744 0.65943 0
+-1.6856 -0.14072 0
+-3.22016 -0.181664 0
+-6.14947 -0.170967 0
+-6.12628 0.00981046 0
+-6.0737 0.526963 0
+-5.97027 1.26145 0
+-5.81149 1.771 0
+-5.61856 1.54529 0
+-5.43379 0.336483 0
+-5.30839 -1.61702 0
+-5.29095 -3.61281 0
+-5.41978 -4.77018 0
+-5.71534 -4.45433 0
+-6.1703 -2.62358 0
+-6.74067 0.0995769 0
+-7.34588 2.69303 0
+-7.88428 4.2085 0
+-8.26212 4.20601 0
+-8.42407 2.91998 0
+-8.36943 1.07732 0
+-8.14543 -0.516259 0
+-7.8219 -1.3817 0
+-7.46199 -1.54312 0
+-7.10447 -1.40045 0
+-6.76426 -1.40395 0
+-6.44561 -1.742 0
+-6.15503 -2.2269 0
+-5.90443 -2.43109 0
+-5.70412 -1.97608 0
+-5.55494 -0.793262 0
+-5.44777 0.797258 0
+-5.37159 2.2307 0
+-5.32373 2.97821 0
+-5.31491 2.80932 0
+-5.36645 1.89929 0
+-5.50218 0.729523 0
+-5.73942 -0.165286 0
+-6.08131 -0.473818 0
+-6.51138 -0.266122 0
+-6.99137 0.0507376 0
+-7.46462 -0.0408736 0
+-7.86669 -0.877533 0
+-8.14246 -2.41387 0
+-8.26391 -4.22556 0
+-8.2397 -5.72025 0
+-8.10979 -6.44138 0
+-7.92579 -6.29233 0
+-7.72667 -5.55227 0
+-7.52369 -4.67766 0
+-7.30255 -4.01165 0
+-7.04008 -3.57935 0
+-6.72292 -3.09328 0
+-6.35572 -2.16359 0
+-5.9547 -0.582256 0
+-5.53321 1.49261 0
+-5.09059 3.56352 0
+-4.61194 5.01531 0
+-4.07739 5.40371 0
+-3.46818 4.65151 0
+-2.75026 3.06169 0
+-1.87213 1.23359 0
+-1.32208 0.434532 0
+-1.11781 0.114944 0
+-1.1996 -0.0710639 0
+-1.57112 -0.355339 0
+-2.19553 -1.11557 0
+-2.57636 -3.06986 0
+-2.7991 -5.1336 0
+-3.00353 -6.69813 0
+-3.31511 -7.31252 0
+-3.80468 -6.76572 0
+-4.45897 -5.14497 0
+-5.18069 -2.78502 0
+-5.82226 -0.128595 0
+-6.243 2.43191 0
+-6.36808 4.65231 0
+-6.22476 6.4322 0
+-5.93852 7.73094 0
+-5.68888 8.47707 0
+-5.64212 8.54686 0
+-5.88865 7.8368 0
+-6.40982 6.38286 0
+-7.08517 4.43596 0
+-7.73344 2.42188 0
+-8.16939 0.784726 0
+-8.25724 -0.208241 0
+-7.94741 -0.588493 0
+-7.29055 -0.658768 0
+-6.42625 -0.825858 0
+-5.54773 -1.38241 0
+-4.84945 -2.35031 0
+-4.47279 -3.46117 0
+-4.46782 -4.27949 0
+-4.78436 -4.40678 0
+-5.29512 -3.66881 0
+-5.84167 -2.19837 0
+-6.2865 -0.37823 0
+-6.55353 1.32274 0
+-6.64554 2.5375 0
+-6.63586 3.122 0
+-6.63921 3.1552 0
+-6.77085 2.82692 0
+-7.10457 2.28273 0
+-7.63965 1.52508 0
+-8.28771 0.441759 0
+-8.8878 -1.04739 0
+-9.2504 -2.81976 0
+-9.21859 -4.48151 0
+-8.72428 -5.47816 0
+-7.81673 -5.35295 0
+-6.65177 -4.01795 0
+-5.44606 -1.87439 0
+-4.41437 0.308253 0
+-3.7121 1.71253 0
+-3.40055 1.83667 0
+-3.44193 0.717208 0
+-3.72102 -1.1015 0
+-4.0848 -2.83255 0
+-4.38913 -3.80637 0
+-4.5406 -3.73972 0
+-4.52197 -2.79076 0
+-4.39121 -1.4035 0
+-4.24989 -0.0551779 0
+-2.16895 0.945078 0
+-1.1237 0.760626 0
+-1.1237 0.685662 0
+-1.56902 -0.15862 0
+-2.98832 -0.221791 0
+-5.67937 -0.253619 0
+-5.51743 -0.152127 0
+-5.24295 0.252486 0
+-4.8661 0.8846 0
+-4.45515 1.36005 0
+-4.12425 1.2144 0
+-3.99501 0.207245 0
+-4.14966 -1.46236 0
+-4.59922 -3.16326 0
+-5.28062 -4.08877 0
+-6.08115 -3.65379 0
+-6.87628 -1.82845 0
+-7.56366 0.786964 0
+-8.08198 3.21136 0
+-8.41332 4.53985 0
+-8.57416 4.36685 0
+-8.60057 2.94639 0
+-8.532 1.00875 0
+-8.39747 -0.650784 0
+-8.20856 -1.57061 0
+-7.96197 -1.78971 0
+-7.65041 -1.71201 0
+-7.27564 -1.77871 0
+-6.8552 -2.16245 0
+-6.41781 -2.66428 0
+-5.99034 -2.85857 0
+-5.58613 -2.38028 0
+-5.20569 -1.1737 0
+-4.85083 0.442399 0
+-4.54223 1.9221 0
+-4.32606 2.76205 0
+-4.26241 2.74567 0
+-4.40073 2.03761 0
+-4.75676 1.08556 0
+-5.30362 0.381576 0
+-5.98017 0.20273 0
+-6.70943 0.463143 0
+-7.41662 0.75793 0
+-8.04008 0.582581 0
+-8.53439 -0.383219 0
+-8.86915 -2.07911 0
+-9.02809 -4.06661 0
+-9.01104 -5.7373 0
+-8.83606 -6.61636 0
+-8.53699 -6.59139 0
+-8.15516 -5.93409 0
+-7.72902 -5.10379 0
+-7.28679 -4.45387 0
+-6.84432 -4.02181 0
+-6.40633 -3.53127 0
+-5.968 -2.60192 0
+-5.51616 -1.03409 0
+-5.03203 1.00849 0
+-4.49709 3.02857 0
+-3.90108 4.41931 0
+-3.25014 4.75277 0
+-2.57286 3.97422 0
+-1.8974 2.38624 0
+-0.975515 0.311704 0
+-0.578024 0.0370408 0
+-0.467285 0.00420543 0
+-0.534766 -0.00358305 0
+-0.855377 -0.0347279 0
+-1.65463 -0.316318 0
+-2.07092 -2.65356 0
+-2.40946 -4.79506 0
+-2.78973 -6.31787 0
+-3.30978 -6.79247 0
+-4.00415 -6.07135 0
+-4.81759 -4.33152 0
+-5.61974 -1.98287 0
+-6.25115 0.502821 0
+-6.58419 2.76495 0
+-6.57767 4.6458 0
+-6.30429 6.15882 0
+-5.93711 7.36376 0
+-5.69631 8.23628 0
+-5.77356 8.62411 0
+-6.26145 8.3247 0
+-7.11417 7.23558 0
+-8.15323 5.47501 0
+-9.11556 3.38421 0
+-9.72768 1.39685 0
+-9.78387 -0.152053 0
+-9.20773 -1.16463 0
+-8.08172 -1.78478 0
+-6.63404 -2.27354 0
+-5.18142 -2.83503 0
+-4.0415 -3.49023 0
+-3.4424 -4.06026 0
+-3.46088 -4.26102 0
+-4.01052 -3.85713 0
+-4.8829 -2.79643 0
+-5.82403 -1.25725 0
+-6.61631 0.414058 0
+-7.13759 1.84401 0
+-7.38118 2.78109 0
+-7.43771 3.17853 0
+-7.45119 3.16869 0
+-7.56649 2.94221 0
+-7.88259 2.59884 0
+-8.42067 2.06316 0
+-9.11159 1.13267 0
+-9.8065 -0.352472 0
+-10.311 -2.31527 0
+-10.4364 -4.35606 0
+-10.055 -5.85956 0
+-9.14152 -6.26647 0
+-7.78861 -5.37087 0
+-6.19094 -3.47206 0
+-4.60167 -1.28101 0
+-3.27349 0.384351 0
+-2.39931 0.962485 0
+-2.0674 0.385297 0
+-2.24255 -0.926347 0
+-2.78028 -2.29481 0
+-3.47278 -3.11388 0
+-4.11296 -3.09953 0
+-4.55425 -2.34947 0
+-4.74274 -1.21501 0
+-4.70967 -0.0882451 0
+-2.46683 0.768247 0
+-1.26001 0.622733 0
+-1.26001 0.609692 0
+-1.51156 -0.176379 0
+-2.89531 -0.266339 0
+-5.53084 -0.35288 0
+-5.32747 -0.355487 0
+-4.98313 -0.0918553 0
+-4.52699 0.42846 0
+-4.06593 0.899004 0
+-3.75992 0.908389 0
+-3.76489 0.212221 0
+-4.16767 -1.05957 0
+-4.94432 -2.3866 0
+-5.96258 -3.07051 0
+-7.02732 -2.58904 0
+-7.9481 -0.907667 0
+-8.59883 1.43769 0
+-8.94664 3.55918 0
+-9.04336 4.63657 0
+-8.9889 4.31239 0
+-8.88482 2.84232 0
+-8.79648 0.920412 0
+-8.73617 -0.711092 0
+-8.67071 -1.63606 0
+-8.54717 -1.91324 0
+-8.32327 -1.9359 0
+-7.9877 -2.11428 0
+-7.56139 -2.58876 0
+-7.08099 -3.14468 0
+-6.57625 -3.3633 0
+-6.05736 -2.89917 0
+-5.52237 -1.70869 0
+-4.9806 -0.0993667 0
+-4.47495 1.41646 0
+-4.08494 2.37205 0
+-3.90424 2.56497 0
+-4.00318 2.13655 0
+-4.39712 1.4795 0
+-5.03827 1.02272 0
+-5.83409 0.998553 0
+-6.68041 1.30947 0
+-7.49114 1.56866 0
+-8.21245 1.30389 0
+-8.81911 0.223437 0
+-9.29889 -1.59932 0
+-9.63763 -3.72787 0
+-9.81568 -5.55924 0
+-9.8162 -6.61584 0
+-9.63701 -6.77058 0
+-9.29693 -6.27418 0
+-8.83229 -5.56843 0
+-8.28573 -5.00043 0
+-7.69238 -4.61516 0
+-7.06939 -4.15427 0
+-6.41307 -3.25824 0
+-5.70542 -1.74174 0
+-4.92781 0.230883 0
+-4.0754 2.17616 0
+-3.16271 3.50662 0
+-2.21335 3.80341 0
+-1.24143 3.0023 0
+-0.300486 1.4453 0
+-0.0460084 0.0572266 0
+-0.0135639 0.00459635 0
+-0.00975604 0.000397564 0
+-0.0129699 -0.000369196 0
+-0.0429122 -0.0047855 0
+-0.291669 -0.0675615 0
+-1.07808 -1.86715 0
+-1.7966 -4.07654 0
+-2.54748 -5.56698 0
+-3.44049 -5.89946 0
+-4.48391 -5.02793 0
+-5.58713 -3.2283 0
+-6.59872 -0.971273 0
+-7.35996 1.26406 0
+-7.76012 3.16512 0
+-7.77962 4.6653 0
+-7.50711 5.88631 0
+-7.12198 6.97863 0
+-6.84396 7.95826 0
+-6.86379 8.64395 0
+-7.27741 8.73832 0
+-8.04623 8.0044 0
+-8.99788 6.42667 0
+-9.86865 4.25498 0
+-10.3762 1.90445 0
+-10.3028 -0.22544 0
+-9.56575 -1.90172 0
+-8.25496 -3.09557 0
+-6.6225 -3.906 0
+-5.0194 -4.43813 0
+-3.79638 -4.71325 0
+-3.20142 -4.65522 0
+-3.31047 -4.15196 0
+-4.01622 -3.15138 0
+-5.07731 -1.73534 0
+-6.20636 -0.128198 0
+-7.16155 1.36925 0
+-7.80909 2.49155 0
+-8.14039 3.11239 0
+-8.24759 3.28573 0
+-8.27478 3.19588 0
+-8.36545 3.03288 0
+-8.62109 2.85448 0
+-9.07643 2.5185 0
+-9.69034 1.74658 0
+-10.3509 0.308124 0
+-10.8953 -1.77094 0
+-11.1432 -4.10815 0
+-10.9411 -6.0616 0
+-10.2071 -7.00048 0
+-8.96429 -6.61369 0
+-7.35143 -5.08492 0
+-5.60287 -3.02958 0
+-3.99932 -1.2192 0
+-2.80028 -0.236551 0
+-2.17617 -0.238811 0
+-2.16141 -0.941106 0
+-2.64658 -1.80965 0
+-3.41577 -2.34469 0
+-4.21699 -2.29831 0
+-4.8383 -1.72817 0
+-5.15986 -0.893446 0
+-5.16501 -0.0831031 0
+-2.71595 0.520553 0
+-1.36859 0.39845 0
+-1.36859 0.476931 0
+-1.47822 -0.182805 0
+-2.86201 -0.290728 0
+-5.52868 -0.418351 0
+-5.38069 -0.503471 0
+-5.12085 -0.351695 0
+-4.78082 0.088435 0
+-4.46405 0.582241 0
+-4.32062 0.764962 0
+-4.49092 0.382527 0
+-5.04215 -0.508344 0
+-5.92853 -1.50021 0
+-6.99653 -2.00251 0
+-8.03466 -1.5509 0
+-8.84681 -0.095514 0
+-9.317 1.90789 0
+-9.43955 3.68174 0
+-9.3055 4.50252 0
+-9.05536 4.06226 0
+-8.82079 2.60775 0
+-8.6791 0.778727 0
+-8.63673 -0.753458 0
+-8.64377 -1.62902 0
+-8.62857 -1.92844 0
+-8.53386 -2.03061 0
+-8.33724 -2.31089 0
+-8.04881 -2.87719 0
+-7.6913 -3.50218 0
+-7.27783 -3.77676 0
+-6.80336 -3.37363 0
+-6.25724 -2.2548 0
+-5.64924 -0.707357 0
+-5.0309 0.79812 0
+-4.49496 1.83611 0
+-4.14887 2.21889 0
+-4.0747 2.06238 0
+-4.29675 1.70156 0
+-4.77451 1.50048 0
+-5.42346 1.64751 0
+-6.15111 2.03712 0
+-6.88838 2.30594 0
+-7.60266 2.01818 0
+-8.28915 0.909927 0
+-8.94763 -0.940844 0
+-9.56037 -3.11513 0
+-10.0854 -5.03418 0
+-10.4676 -6.23361 0
+-10.6587 -6.57956 0
+-10.6333 -6.29954 0
+-10.394 -5.80774 0
+-9.96205 -5.43236 0
+-9.362 -5.2152 0
+-8.60804 -4.90822 0
+-7.70083 -4.16544 0
+-6.6374 -2.80516 0
+-5.4301 -0.976412 0
+-4.12468 0.870744 0
+-2.80654 2.18848 0
+-1.59138 2.58824 0
+-0.613745 2.02467 0
+-0.0431462 0.874697 0
+-0.00448194 0.0185624 0
+-0.000589152 0.000703606 0
+-0.000235656 4.41165e-05 0
+-0.000556115 -4.87809e-05 0
+-0.00443989 -0.000901754 0
+-0.0444187 -0.0275827 0
+-0.56585 -1.34571 0
+-1.42049 -3.2219 0
+-2.53224 -4.45523 0
+-3.86105 -4.57065 0
+-5.31779 -3.5712 0
+-6.76068 -1.78541 0
+-8.02776 0.295812 0
+-8.97708 2.21338 0
+-9.52172 3.70976 0
+-9.65268 4.79627 0
+-9.4446 5.67823 0
+-9.04073 6.57477 0
+-8.61822 7.53576 0
+-8.34055 8.36628 0
+-8.30963 8.7074 0
+-8.53218 8.22696 0
+-8.91208 6.80657 0
+-9.27385 4.61675 0
+-9.41339 2.04399 0
+-9.16331 -0.47552 0
+-8.45421 -2.61082 0
+-7.35182 -4.19795 0
+-6.05327 -5.20454 0
+-4.83685 -5.65455 0
+-3.97908 -5.57102 0
+-3.66838 -4.96591 0
+-3.9476 -3.87274 0
+-4.7072 -2.39178 0
+-5.73056 -0.711977 0
+-6.7711 0.912342 0
+-7.62943 2.22758 0
+-8.20238 3.06449 0
+-8.49139 3.40141 0
+-8.57667 3.37102 0
+-8.57473 3.19394 0
+-8.59824 3.05639 0
+-8.7295 2.98574 0
+-9.008 2.79701 0
+-9.42639 2.16497 0
+-9.92952 0.811259 0
+-10.4173 -1.28319 0
+-10.7559 -3.76953 0
+-10.8028 -6.01467 0
+-10.4441 -7.35925 0
+-9.63532 -7.42243 0
+-8.43185 -6.28839 0
+-6.99224 -4.46918 0
+-5.54883 -2.66261 0
+-4.34946 -1.43593 0
+-3.58744 -1.00083 0
+-3.34406 -1.18449 0
+-3.56619 -1.58751 0
+-4.08952 -1.82137 0
+-4.69823 -1.6896 0
+-5.19611 -1.23028 0
+-5.4598 -0.629753 0
+-5.45653 -0.0863727 0
+-2.84266 0.294382 0
+-1.42661 0.189729 0
+-1.42661 0.351736 0
+-1.43821 -0.173344 0
+-2.81421 -0.282597 0
+-5.49945 -0.421004 0
+-5.46759 -0.535333 0
+-5.39287 -0.426407 0
+-5.29588 -0.0085545 0
+-5.24251 0.528884 0
+-5.3286 0.851053 0
+-5.64105 0.694987 0
+-6.21259 0.0631948 0
+-6.99271 -0.720082 0
+-7.85186 -1.14336 0
+-8.62011 -0.782645 0
+-9.14516 0.429534 0
+-9.3448 2.10754 0
+-9.23197 3.56891 0
+-8.90286 4.17342 0
+-8.49559 3.655 0
+-8.13838 2.25055 0
+-7.90927 0.549612 0
+-7.82188 -0.840841 0
+-7.83884 -1.61206 0
+-7.90133 -1.86594 0
+-7.95786 -1.97407 0
+-7.97847 -2.29029 0
+-7.95067 -2.90498 0
+-7.86454 -3.58831 0
+-7.69982 -3.94147 0
+-7.42624 -3.6472 0
+-7.01928 -2.66175 0
+-6.48293 -1.2437 0
+-5.86472 0.179916 0
+-5.25147 1.22286 0
+-4.74473 1.71216 0
+-4.42712 1.74477 0
+-4.33626 1.61071 0
+-4.45942 1.62363 0
+-4.75027 1.93837 0
+-5.15765 2.4445 0
+-5.65032 2.79861 0
+-6.22565 2.59351 0
+-6.89866 1.58294 0
+-7.67813 -0.161369 0
+-8.54399 -2.24927 0
+-9.43902 -4.13915 0
+-10.2785 -5.39416 0
+-10.971 -5.88701 0
+-11.4398 -5.83074 0
+-11.6338 -5.61373 0
+-11.5265 -5.53968 0
+-11.1063 -5.63541 0
+-10.3678 -5.64664 0
+-9.31214 -5.22114 0
+-7.95797 -4.15933 0
+-6.36066 -2.57371 0
+-4.62813 -0.86179 0
+-2.92468 0.485043 0
+-1.45744 1.121 0
+-0.440566 1.0078 0
+-0.0105435 0.444675 0
+-0.00061889 0.00863778 0
+-5.74038e-05 0.000142268 0
+-1.27129e-05 -4.80663e-07 0
+-5.70988e-05 -4.48904e-06 0
+-0.000647141 -0.000311826 0
+-0.0108773 -0.0173526 0
+-0.430331 -0.926261 0
+-1.41331 -2.23892 0
+-2.85106 -3.01748 0
+-4.56321 -2.8585 0
+-6.35304 -1.78136 0
+-8.03587 -0.102582 0
+-9.46115 1.7211 0
+-10.5262 3.27846 0
+-11.1801 4.36363 0
+-11.4202 5.03636 0
+-11.2862 5.54428 0
+-10.8531 6.14158 0
+-10.221 6.90372 0
+-9.50197 7.64723 0
+-8.79976 8.0052 0
+-8.18848 7.61568 0
+-7.69525 6.31334 0
+-7.29576 4.21727 0
+-6.9278 1.67602 0
+-6.52113 -0.882188 0
+-6.03429 -3.09766 0
+-5.48323 -4.74901 0
+-4.94739 -5.74038 0
+-4.54708 -6.05487 0
+-4.39964 -5.71846 0
+-4.57233 -4.79323 0
+-5.05215 -3.39292 0
+-5.74626 -1.69766 0
+-6.5128 0.054567 0
+-7.20821 1.60776 0
+-7.73037 2.74974 0
+-8.04069 3.37481 0
+-8.16009 3.52081 0
+-8.14646 3.35739 0
+-8.06797 3.11544 0
+-7.98477 2.97319 0
+-7.94365 2.94462 0
+-7.98089 2.83425 0
+-8.12374 2.30782 0
+-8.38358 1.0711 0
+-8.74171 -0.925061 0
+-9.13701 -3.37422 0
+-9.46733 -5.68436 0
+-9.61135 -7.21522 0
+-9.46724 -7.56654 0
+-8.99358 -6.76204 0
+-8.23455 -5.22821 0
+-7.31566 -3.5815 0
+-6.40848 -2.34311 0
+-5.67627 -1.73304 0
+-5.22188 -1.63887 0
+-5.0592 -1.75019 0
+-5.11933 -1.76124 0
+-5.2868 -1.52213 0
+-5.44757 -1.06951 0
+-5.52681 -0.550516 0
+-5.50201 -0.111165 0
+-2.82549 0.184038 0
+-1.42933 0.0905186 0
+-1.42933 0.290791 0
+-1.37691 -0.151035 0
+-2.71172 -0.244948 0
+-5.33959 -0.361253 0
+-5.43088 -0.444044 0
+-5.55846 -0.29882 0
+-5.72582 0.158808 0
+-5.94624 0.74931 0
+-6.24206 1.14687 0
+-6.6318 1.08474 0
+-7.11134 0.542732 0
+-7.63946 -0.191958 0
+-8.13812 -0.644685 0
+-8.51098 -0.409781 0
+-8.67457 0.593133 0
+-8.58939 2.02236 0
+-8.27675 3.25627 0
+-7.81344 3.71012 0
+-7.3061 3.14767 0
+-6.85702 1.80147 0
+-6.53636 0.228955 0
+-6.37159 -1.00561 0
+-6.35474 -1.62891 0
+-6.45892 -1.76176 0
+-6.65233 -1.78066 0
+-6.90257 -2.04004 0
+-7.17224 -2.63531 0
+-7.41314 -3.3474 0
+-7.56728 -3.78733 0
+-7.57776 -3.63672 0
+-7.40603 -2.83348 0
+-7.04753 -1.60219 0
+-6.53748 -0.330132 0
+-5.94299 0.628374 0
+-5.34424 1.11341 0
+-4.81261 1.21315 0
+-4.39529 1.19339 0
+-4.11233 1.34067 0
+-3.96618 1.79222 0
+-3.95789 2.43621 0
+-4.1008 2.94152 0
+-4.42362 2.91633 0
+-4.95968 2.119 0
+-5.72714 0.606096 0
+-6.7099 -1.2665 0
+-7.84844 -3.00061 0
+-9.04499 -4.1976 0
+-10.1806 -4.75135 0
+-11.1363 -4.87508 0
+-11.8091 -4.94097 0
+-12.1194 -5.22928 0
+-12.0116 -5.74323 0
+-11.4526 -6.20564 0
+-10.437 -6.23672 0
+-8.99851 -5.59785 0
+-7.22377 -4.34845 0
+-5.26135 -2.8242 0
+-3.31874 -1.45756 0
+-1.64502 -0.552723 0
+-0.491508 -0.145714 0
+-0.0112683 -0.0355649 0
+-0.000714943 -0.00191557 0
+-8.03275e-05 -0.000492206 0
+-1.92709e-05 -6.14447e-05 0
+-8.0648e-05 5.67921e-05 0
+-0.000686954 0.000294361 0
+-0.0109411 -0.00709845 0
+-0.502015 -0.435186 0
+-1.68993 -1.051 0
+-3.39362 -1.31379 0
+-5.32765 -0.924464 0
+-7.23241 0.123408 0
+-8.92084 1.58585 0
+-10.2872 3.08742 0
+-11.2921 4.28346 0
+-11.9345 5.00593 0
+-12.2211 5.32301 0
+-12.1506 5.47379 0
+-11.7156 5.70658 0
+-10.9218 6.10996 0
+-9.81164 6.53704 0
+-8.47734 6.6709 0
+-7.0552 6.19354 0
+-5.70054 4.95868 0
+-4.55414 3.07087 0
+-3.71407 0.835956 0
+-3.22336 -1.3729 0
+-3.07504 -3.24598 0
+-3.22723 -4.59683 0
+-3.61861 -5.34899 0
+-4.17927 -5.49421 0
+-4.83579 -5.06194 0
+-5.51353 -4.11549 0
+-6.14042 -2.76602 0
+-6.65508 -1.183 0
+-7.01749 0.416972 0
+-7.21727 1.80755 0
+-7.27394 2.80641 0
+-7.22678 3.32765 0
+-7.11794 3.41197 0
+-6.97661 3.21606 0
+-6.81269 2.95153 0
+-6.62404 2.78454 0
+-6.41376 2.73434 0
+-6.20817 2.62866 0
+-6.06363 2.16328 0
+-6.05479 1.06226 0
+-6.24584 -0.73401 0
+-6.65671 -2.96335 0
+-7.24114 -5.09993 0
+-7.88967 -6.5667 0
+-8.45922 -6.99699 0
+-8.81827 -6.403 0
+-8.8886 -5.15788 0
+-8.66667 -3.80344 0
+-8.21682 -2.79296 0
+-7.64203 -2.30783 0
+-7.04682 -2.23408 0
+-6.50872 -2.28829 0
+-6.06784 -2.20212 0
+-5.73412 -1.85584 0
+-5.50358 -1.30006 0
+-5.37203 -0.682064 0
+-5.3381 -0.145094 0
+-2.70691 0.238226 0
+-1.39397 0.144911 0
+-1.39397 0.320433 0
+-1.29887 -0.124379 0
+-2.55821 -0.193074 0
+-5.04352 -0.265117 0
+-5.21526 -0.272303 0
+-5.48244 -0.031642 0
+-5.83393 0.510308 0
+-6.23713 1.15251 0
+-6.65025 1.56 0
+-7.03371 1.4682 0
+-7.35575 0.864779 0
+-7.59107 0.0433693 0
+-7.71621 -0.519542 0
+-7.70788 -0.418114 0
+-7.54802 0.433285 0
+-7.2343 1.70864 0
+-6.78964 2.81162 0
+-6.26394 3.18442 0
+-5.72477 2.60851 0
+-5.24126 1.31796 0
+-4.86948 -0.142821 0
+-4.64605 -1.22904 0
+-4.58977 -1.68519 0
+-4.70544 -1.64608 0
+-4.98382 -1.50228 0
+-5.39646 -1.62739 0
+-5.89066 -2.14111 0
+-6.39155 -2.84651 0
+-6.81483 -3.36405 0
+-7.08609 -3.36545 0
+-7.15807 -2.76149 0
+-7.01863 -1.74162 0
+-6.68777 -0.660986 0
+-6.207 0.147601 0
+-5.62702 0.533432 0
+-4.99851 0.58464 0
+-4.3678 0.562684 0
+-3.77694 0.749818 0
+-3.26669 1.28197 0
+-2.88078 2.0503 0
+-2.66917 2.72992 0
+-2.68622 2.93338 0
+-2.98124 2.41403 0
+-3.58389 1.20875 0
+-4.48913 -0.36126 0
+-5.6473 -1.84244 0
+-6.96467 -2.88023 0
+-8.31548 -3.40053 0
+-9.56119 -3.62937 0
+-10.5693 -3.93282 0
+-11.2268 -4.57178 0
+-11.4471 -5.52293 0
+-11.1754 -6.47735 0
+-10.3961 -7.01601 0
+-9.1432 -6.85078 0
+-7.50859 -5.98306 0
+-5.64243 -4.69037 0
+-3.74105 -3.35894 0
+-2.02601 -2.26776 0
+-0.7232 -1.44853 0
+-0.0425972 -0.716168 0
+-0.0051557 -0.0393571 0
+-0.000816405 -0.00483146 0
+-0.000330053 -0.000547731 0
+-0.000849612 0.000576328 0
+-0.00519991 0.00464464 0
+-0.0413492 0.0290509 0
+-0.771487 0.294952 0
+-2.19786 0.375373 0
+-4.01679 0.505142 0
+-5.90764 0.966389 0
+-7.62219 1.83796 0
+-9.02049 2.98415 0
+-10.0688 4.13571 0
+-10.8048 5.01951 0
+-11.2847 5.48578 0
+-11.5322 5.57054 0
+-11.5134 5.45497 0
+-11.147 5.34022 0
+-10.3478 5.31079 0
+-9.08261 5.27183 0
+-7.4134 5.00168 0
+-5.50769 4.28784 0
+-3.61043 3.06142 0
+-1.98847 1.44891 0
+-0.868382 -0.284127 0
+-0.387884 -1.8534 0
+-0.571787 -3.06208 0
+-1.33272 -3.83589 0
+-2.4929 -4.18882 0
+-3.823 -4.1641 0
+-5.09034 -3.7946 0
+-6.10486 -3.10096 0
+-6.7529 -2.11798 0
+-7.01103 -0.924869 0
+-6.93758 0.34352 0
+-6.64488 1.51485 0
+-6.2609 2.42243 0
+-5.89127 2.95803 0
+-5.59249 3.11319 0
+-5.36369 2.98726 0
+-5.15941 2.74725 0
+-4.91896 2.54409 0
+-4.60271 2.41809 0
+-4.22218 2.24812 0
+-3.85156 1.79266 0
+-3.61308 0.823782 0
+-3.63812 -0.708967 0
+-4.01732 -2.58416 0
+-4.75962 -4.35762 0
+-5.77805 -5.54828 0
+-6.90866 -5.86638 0
+-7.95533 -5.35632 0
+-8.74242 -4.37078 0
+-9.15616 -3.3897 0
+-9.16301 -2.7861 0
+-8.80439 -2.66646 0
+-8.17584 -2.86263 0
+-7.4013 -3.06284 0
+-6.60945 -2.99397 0
+-5.91521 -2.55008 0
+-5.40656 -1.80871 0
+-5.13617 -0.952454 0
+-5.11638 -0.164881 0
+-2.58357 0.434546 0
+-1.35836 0.326899 0
+-1.35836 0.425727 0
+-1.22211 -0.103327 0
+-2.39142 -0.147178 0
+-4.68779 -0.171371 0
+-4.86906 -0.0910278 0
+-5.16466 0.263962 0
+-5.55719 0.902836 0
+-5.99107 1.58639 0
+-6.39158 1.96051 0
+-6.69017 1.7668 0
+-6.84446 1.01908 0
+-6.84392 0.0428301 0
+-6.7014 -0.662064 0
+-6.43892 -0.680589 0
+-6.07749 0.0718645 0
+-5.63611 1.26726 0
+-5.13771 2.31322 0
+-4.61474 2.66145 0
+-4.10833 2.10211 0
+-3.66173 0.871364 0
+-3.31348 -0.491076 0
+-3.09513 -1.44738 0
+-3.0324 -1.74792 0
+-3.14432 -1.53416 0
+-3.43661 -1.20999 0
+-3.891 -1.173 0
+-4.45785 -1.57425 0
+-5.06003 -2.24433 0
+-5.60972 -2.81435 0
+-6.0309 -2.94427 0
+-6.27565 -2.51674 0
+-6.32738 -1.68989 0
+-6.19266 -0.795709 0
+-5.88949 -0.155561 0
+-5.44002 0.0839601 0
+-4.87008 0.0147117 0
+-4.21296 -0.0944437 0
+-3.5123 0.0491653 0
+-2.82218 0.59185 0
+-2.20508 1.4332 0
+-1.72945 2.25429 0
+-1.46512 2.66905 0
+-1.47453 2.42344 0
+-1.80063 1.53485 0
+-2.45339 0.291503 0
+-3.39933 -0.896492 0
+-4.55978 -1.71979 0
+-5.82092 -2.13939 0
+-7.05244 -2.39785 0
+-8.12692 -2.85833 0
+-8.9336 -3.76509 0
+-9.38533 -5.0712 0
+-9.42291 -6.43976 0
+-9.02165 -7.41728 0
+-8.20025 -7.67217 0
+-7.02732 -7.15598 0
+-5.61802 -6.09967 0
+-4.11624 -4.86072 0
+-2.66311 -3.72089 0
+-1.36177 -2.74986 0
+-0.302927 -1.77501 0
+-0.0581983 -0.284086 0
+-0.0213186 -0.0417112 0
+-0.0163115 -0.00555475 0
+-0.0219168 0.00618162 0
+-0.0613177 0.0440455 0
+-0.31191 0.279643 0
+-1.52587 1.50891 0
+-3.08121 1.93071 0
+-4.73326 2.1572 0
+-6.25485 2.48798 0
+-7.4729 3.05601 0
+-8.31963 3.83088 0
+-8.83625 4.65233 0
+-9.13163 5.31489 0
+-9.31582 5.66996 0
+-9.43679 5.69151 0
+-9.44793 5.4661 0
+-9.2219 5.11419 0
+-8.60723 4.69612 0
+-7.50442 4.16903 0
+-5.92924 3.42651 0
+-4.03634 2.39494 0
+-2.09359 1.11867 0
+-0.417669 -0.227014 0
+0.705191 -1.40699 0
+1.08808 -2.23629 0
+0.685562 -2.65956 0
+-0.396422 -2.7539 0
+-1.92365 -2.6616 0
+-3.58692 -2.50083 0
+-5.07403 -2.30749 0
+-6.14106 -2.03393 0
+-6.66328 -1.59576 0
+-6.65166 -0.93649 0
+-6.23167 -0.0764697 0
+-5.59313 0.876309 0
+-4.92849 1.75779 0
+-4.37887 2.40841 0
+-4.00272 2.73704 0
+-3.77368 2.75822 0
+-3.6056 2.57916 0
+-3.39538 2.33388 0
+-3.07028 2.09298 0
+-2.62525 1.8031 0
+-2.13823 1.30564 0
+-1.75519 0.440745 0
+-1.64667 -0.817496 0
+-1.94891 -2.28191 0
+-2.71141 -3.59512 0
+-3.87123 -4.38846 0
+-5.26408 -4.47353 0
+-6.667 -3.9534 0
+-7.85576 -3.18203 0
+-8.65693 -2.58853 0
+-8.98059 -2.46245 0
+-8.82939 -2.81765 0
+-8.2882 -3.40382 0
+-7.50071 -3.85033 0
+-6.6382 -3.85648 0
+-5.86517 -3.3231 0
+-5.30836 -2.36553 0
+-5.03629 -1.22452 0
+-5.05393 -0.147248 0
+-2.57624 0.68836 0
+-1.37252 0.550242 0
+-1.37252 0.555282 0
+-1.16721 -0.0950652 0
+-2.26021 -0.123884 0
+-4.38359 -0.115311 0
+-4.50465 0.0300358 0
+-4.71413 0.473439 0
+-4.99762 1.18634 0
+-5.30505 1.89382 0
+-5.56818 2.22365 0
+-5.726 1.92463 0
+-5.74486 1.03794 0
+-5.6232 -0.0788313 0
+-5.38117 -0.904086 0
+-5.04512 -1.01664 0
+-4.63788 -0.33538 0
+-4.17961 0.808998 0
+-3.69521 1.82882 0
+-3.21877 2.18501 0
+-2.78944 1.67278 0
+-2.44125 0.523179 0
+-2.19561 -0.736713 0
+-2.06238 -1.58062 0
+-2.04739 -1.7629 0
+-2.15852 -1.42303 0
+-2.40325 -0.965258 0
+-2.77771 -0.798546 0
+-3.25483 -1.09712 0
+-3.7819 -1.71726 0
+-4.29177 -2.30447 0
+-4.72222 -2.51382 0
+-5.03137 -2.20759 0
+-5.20109 -1.52016 0
+-5.22919 -0.767607 0
+-5.11866 -0.266095 0
+-4.87199 -0.162702 0
+-4.49324 -0.364034 0
+-3.99415 -0.593539 0
+-3.39919 -0.545788 0
+-2.74738 -0.059965 0
+-2.09186 0.777686 0
+-1.49847 1.6609 0
+-1.04115 2.21173 0
+-0.792146 2.17445 0
+-0.807726 1.55043 0
+-1.11253 0.596307 0
+-1.68854 -0.320478 0
+-2.47511 -0.933216 0
+-3.38222 -1.23228 0
+-4.31149 -1.46858 0
+-5.17464 -1.99518 0
+-5.90163 -3.0381 0
+-6.43854 -4.53429 0
+-6.74293 -6.13536 0
+-6.78473 -7.37547 0
+-6.55475 -7.90215 0
+-6.0751 -7.63563 0
+-5.40284 -6.77192 0
+-4.62196 -5.64159 0
+-3.82696 -4.51589 0
+-3.10686 -3.46996 0
+-2.51042 -2.37145 0
+-1.72571 -1.0688 0
+-1.344 -0.423414 0
+-1.24667 -0.102885 0
+-1.38747 0.146978 0
+-1.84638 0.502956 0
+-2.75432 1.18759 0
+-3.61035 2.36494 0
+-4.66956 2.98993 0
+-5.73547 3.22311 0
+-6.59233 3.34484 0
+-7.10494 3.56863 0
+-7.25482 3.98076 0
+-7.13388 4.53139 0
+-6.89825 5.07927 0
+-6.69798 5.46969 0
+-6.60912 5.60265 0
+-6.59671 5.45369 0
+-6.52577 5.04325 0
+-6.21805 4.3884 0
+-5.53184 3.48282 0
+-4.43173 2.32639 0
+-3.01979 0.983003 0
+-1.51711 -0.384007 0
+-0.204845 -1.53928 0
+0.652032 -2.26386 0
+0.873751 -2.45801 0
+0.410853 -2.19666 0
+-0.641963 -1.70108 0
+-2.06553 -1.23803 0
+-3.56696 -0.999391 0
+-4.8508 -1.02364 0
+-5.69127 -1.19346 0
+-5.98405 -1.30298 0
+-5.76194 -1.1586 0
+-5.17073 -0.667683 0
+-4.41525 0.120832 0
+-3.69462 1.03716 0
+-3.14737 1.86116 0
+-2.82155 2.41121 0
+-2.67534 2.61202 0
+-2.60497 2.50878 0
+-2.48949 2.21841 0
+-2.23944 1.84293 0
+-1.83586 1.39952 0
+-1.34781 0.817586 0
+-0.919654 0.0125929 0
+-0.728478 -1.00867 0
+-0.923998 -2.08639 0
+-1.57312 -2.946 0
+-2.63094 -3.33064 0
+-3.94911 -3.15535 0
+-5.31688 -2.58563 0
+-6.51766 -1.98124 0
+-7.38108 -1.72511 0
+-7.81602 -2.02751 0
+-7.82059 -2.81308 0
+-7.47282 -3.75159 0
+-6.90759 -4.41555 0
+-6.28403 -4.48004 0
+-5.74851 -3.85863 0
+-5.40162 -2.71242 0
+-5.27904 -1.3471 0
+-5.35368 -0.0726111 0
+-2.78701 0.892186 0
+-1.48345 0.705015 0
+-1.48345 0.640702 0
+-1.14614 -0.101214 0
+-2.19889 -0.129836 0
+-4.21975 -0.11536 0
+-4.23805 0.0483453 0
+-4.28509 0.520481 0
+-4.35504 1.25628 0
+-4.4257 1.96448 0
+-4.46843 2.26638 0
+-4.46115 1.91735 0
+-4.39539 0.972171 0
+-4.27253 -0.201684 0
+-4.09322 -1.08339 0
+-3.85048 -1.25938 0
+-3.53481 -0.651049 0
+-3.14921 0.423405 0
+-2.72264 1.40225 0
+-2.30936 1.77173 0
+-1.97094 1.33436 0
+-1.75084 0.303086 0
+-1.65801 -0.829549 0
+-1.66969 -1.56893 0
+-1.75097 -1.68162 0
+-1.8774 -1.29661 0
+-2.04589 -0.796767 0
+-2.26797 -0.576461 0
+-2.55184 -0.813251 0
+-2.88696 -1.38214 0
+-3.24202 -1.94941 0
+-3.57653 -2.17931 0
+-3.85647 -1.92765 0
+-4.06303 -1.3136 0
+-4.19076 -0.639872 0
+-4.23922 -0.217639 0
+-4.20529 -0.196632 0
+-4.0807 -0.488615 0
+-3.85466 -0.819586 0
+-3.5195 -0.88094 0
+-3.07831 -0.501157 0
+-2.55296 0.252338 0
+-1.98959 1.09753 0
+-1.4565 1.67864 0
+-1.03181 1.74976 0
+-0.782967 1.30158 0
+-0.745724 0.559065 0
+-0.912544 -0.153658 0
+-1.23782 -0.607944 0
+-1.65896 -0.811138 0
+-2.1227 -1.00484 0
+-2.60177 -1.51611 0
+-3.09276 -2.54711 0
+-3.59853 -4.02852 0
+-4.10835 -5.62554 0
+-4.59003 -6.89379 0
+-4.99871 -7.49347 0
+-5.29568 -7.33867 0
+-5.46469 -6.60291 0
+-5.51606 -5.59021 0
+-5.47601 -4.55595 0
+-5.3613 -3.58466 0
+-5.12971 -2.60304 0
+-4.63026 -1.56825 0
+-4.26248 -0.791185 0
+-4.16572 -0.199646 0
+-4.38548 0.366738 0
+-4.93238 1.04986 0
+-5.68622 1.94142 0
+-6.25528 2.93401 0
+-6.75662 3.49127 0
+-7.12678 3.59327 0
+-7.2423 3.46036 0
+-7.02608 3.35241 0
+-6.49598 3.45066 0
+-5.76622 3.80163 0
+-5.00971 4.32276 0
+-4.3958 4.85578 0
+-4.02682 5.23368 0
+-3.89961 5.32648 0
+-3.90903 5.05267 0
+-3.89328 4.37266 0
+-3.70219 3.29173 0
+-3.25971 1.88391 0
+-2.59553 0.318819 0
+-1.83578 -1.14375 0
+-1.16063 -2.21443 0
+-0.747548 -2.67695 0
+-0.719951 -2.4856 0
+-1.11369 -1.80292 0
+-1.86648 -0.948301 0
+-2.83076 -0.273746 0
+-3.80792 -0.0222285 0
+-4.59727 -0.234301 0
+-5.04769 -0.743032 0
+-5.09609 -1.25458 0
+-4.77955 -1.47514 0
+-4.21775 -1.22948 0
+-3.57224 -0.524676 0
+-2.997 0.461919 0
+-2.59601 1.46018 0
+-2.39972 2.21492 0
+-2.36491 2.57721 0
+-2.39627 2.54014 0
+-2.3825 2.20464 0
+-2.23742 1.69785 0
+-1.93525 1.09736 0
+-1.52873 0.411063 0
+-1.14015 -0.375988 0
+-0.924127 -1.22469 0
+-1.01311 -1.99741 0
+-1.46701 -2.4921 0
+-2.24845 -2.5492 0
+-3.23385 -2.16995 0
+-4.25402 -1.56546 0
+-5.14586 -1.0894 0
+-5.79503 -1.07593 0
+-6.15712 -1.66543 0
+-6.25641 -2.71379 0
+-6.16917 -3.83883 0
+-5.99836 -4.58636 0
+-5.84532 -4.63308 0
+-5.78315 -3.92079 0
+-5.83643 -2.65914 0
+-5.97375 -1.20977 0
+-6.12069 0.0743308 0
+-3.25614 0.967044 0
+-1.71554 0.706538 0
+-1.71554 0.624563 0
+-1.1552 -0.11735 0
+-2.20927 -0.159578 0
+-4.21904 -0.167062 0
+-4.13308 -0.037621 0
+-4.00387 0.391276 0
+-3.83338 1.0858 0
+-3.63579 1.76689 0
+-3.43796 2.06856 0
+-3.27358 1.75297 0
+-3.16905 0.867637 0
+-3.12605 -0.244676 0
+-3.11111 -1.09833 0
+-3.06285 -1.30765 0
+-2.91971 -0.79418 0
+-2.65603 0.15972 0
+-2.30444 1.05067 0
+-1.94853 1.41583 0
+-1.68628 1.07211 0
+-1.58368 0.200486 0
+-1.64466 -0.76857 0
+-1.81402 -1.39957 0
+-2.0105 -1.48514 0
+-2.1696 -1.1375 0
+-2.27168 -0.69469 0
+-2.34145 -0.506694 0
+-2.4235 -0.731199 0
+-2.55165 -1.25398 0
+-2.73083 -1.77023 0
+-2.93971 -1.97042 0
+-3.14808 -1.71928 0
+-3.33479 -1.12688 0
+-3.49536 -0.479304 0
+-3.63673 -0.0762682 0
+-3.76468 -0.06868 0
+-3.87158 -0.38172 0
+-3.93091 -0.760246 0
+-3.90219 -0.909659 0
+-3.74589 -0.657461 0
+-3.44343 -0.0501201 0
+-3.01284 0.666943 0
+-2.51071 1.17651 0
+-2.01665 1.2557 0
+-1.60532 0.890257 0
+-1.31884 0.272585 0
+-1.15459 -0.317904 0
+-1.07684 -0.685701 0
+-1.0473 -0.840672 0
+-1.05774 -0.994398 0
+-1.14447 -1.42938 0
+-1.37478 -2.3168 0
+-1.81211 -3.59119 0
+-2.47987 -4.95778 0
+-3.34425 -6.0294 0
+-4.32404 -6.51369 0
+-5.31948 -6.34322 0
+-6.24297 -5.67943 0
+-7.03548 -4.7977 0
+-7.66229 -3.92914 0
+-8.09175 -3.1552 0
+-8.27407 -2.42072 0
+-8.17902 -1.6633 0
+-8.03015 -0.940048 0
+-8.0066 -0.223197 0
+-8.19107 0.551213 0
+-8.55991 1.41869 0
+-8.95489 2.33641 0
+-9.14137 3.12049 0
+-9.12313 3.47303 0
+-8.88667 3.3568 0
+-8.38734 2.96103 0
+-7.60094 2.56601 0
+-6.56413 2.41385 0
+-5.38512 2.62262 0
+-4.22268 3.16032 0
+-3.24138 3.87449 0
+-2.56043 4.55273 0
+-2.21734 4.98339 0
+-2.1624 4.99773 0
+-2.28573 4.49599 0
+-2.4639 3.46991 0
+-2.60497 2.02498 0
+-2.67342 0.387271 0
+-2.6886 -1.12857 0
+-2.70299 -2.20004 0
+-2.77382 -2.60612 0
+-2.94001 -2.31941 0
+-3.20995 -1.53298 0
+-3.55943 -0.598818 0
+-3.93676 0.103583 0
+-4.27331 0.31432 0
+-4.49926 -0.00835101 0
+-4.5625 -0.67979 0
+-4.44525 -1.37183 0
+-4.17172 -1.74868 0
+-3.80291 -1.59829 0
+-3.41987 -0.907723 0
+-3.10062 0.142673 0
+-2.89834 1.2579 0
+-2.8267 2.14329 0
+-2.85647 2.60697 0
+-2.92432 2.60799 0
+-2.95288 2.2332 0
+-2.87822 1.62319 0
+-2.67756 0.896698 0
+-2.38614 0.119638 0
+-2.09251 -0.66962 0
+-1.90944 -1.40776 0
+-1.92986 -1.97698 0
+-2.18741 -2.23455 0
+-2.64124 -2.09537 0
+-3.19321 -1.61799 0
+-3.72869 -1.02998 0
+-4.16098 -0.657111 0
+-4.45931 -0.777605 0
+-4.65125 -1.47348 0
+-4.80349 -2.56155 0
+-4.99204 -3.65028 0
+-5.27386 -4.30454 0
+-5.66854 -4.23841 0
+-6.15145 -3.43788 0
+-6.6552 -2.15539 0
+-7.07814 -0.786835 0
+-7.30358 0.299779 0
+-3.93303 0.900424 0
+-2.05237 0.536287 0
+-2.05237 0.487319 0
+-1.17471 -0.134888 0
+-2.25677 -0.198144 0
+-4.32384 -0.246001 0
+-4.17095 -0.190509 0
+-3.91457 0.134901 0
+-3.55789 0.729116 0
+-3.1441 1.35311 0
+-2.75049 1.67496 0
+-2.46468 1.46716 0
+-2.34873 0.751689 0
+-2.40651 -0.1869 0
+-2.57221 -0.932624 0
+-2.73144 -1.14842 0
+-2.77086 -0.754759 0
+-2.63427 0.023136 0
+-2.35435 0.770749 0
+-2.04001 1.10148 0
+-1.8238 0.855899 0
+-1.79674 0.173431 0
+-1.9653 -0.600002 0
+-2.25302 -1.11185 0
+-2.54386 -1.19429 0
+-2.74167 -0.939688 0
+-2.81259 -0.623769 0
+-2.79019 -0.529091 0
+-2.74566 -0.775732 0
+-2.74432 -1.25532 0
+-2.81428 -1.70027 0
+-2.94231 -1.84239 0
+-3.09427 -1.56732 0
+-3.24327 -0.977886 0
+-3.38732 -0.335247 0
+-3.54728 0.0836932 0
+-3.74809 0.132131 0
+-3.99495 -0.13486 0
+-4.2579 -0.497292 0
+-4.47428 -0.693274 0
+-4.56998 -0.56176 0
+-4.49063 -0.129466 0
+-4.22752 0.403833 0
+-3.82402 0.773016 0
+-3.35769 0.789371 0
+-2.90587 0.438439 0
+-2.51273 -0.120557 0
+-2.17661 -0.654019 0
+-1.86678 -0.995535 0
+-1.56147 -1.14598 0
+-1.28515 -1.27072 0
+-1.12106 -1.59348 0
+-1.18851 -2.24935 0
+-1.59491 -3.18479 0
+-2.38724 -4.16545 0
+-3.52815 -4.88849 0
+-4.90741 -5.13442 0
+-6.37974 -4.8709 0
+-7.80746 -4.25171 0
+-9.08722 -3.51794 0
+-10.1519 -2.86446 0
+-10.9555 -2.35162 0
+-11.464 -1.91222 0
+-11.6868 -1.4405 0
+-11.7491 -0.877695 0
+-11.7851 -0.187204 0
+-11.8665 0.632561 0
+-11.9717 1.52396 0
+-11.9904 2.35512 0
+-11.7969 2.92694 0
+-11.3742 3.05036 0
+-10.7319 2.71447 0
+-9.87038 2.09953 0
+-8.79334 1.48896 0
+-7.53247 1.15299 0
+-6.16369 1.25384 0
+-4.80393 1.80055 0
+-3.58807 2.65863 0
+-2.63498 3.59963 0
+-2.01725 4.36566 0
+-1.74799 4.72848 0
+-1.78854 4.53654 0
+-2.07006 3.75143 0
+-2.51626 2.47118 0
+-3.05656 0.92757 0
+-3.62779 -0.557338 0
+-4.17044 -1.65738 0
+-4.62805 -2.1485 0
+-4.95388 -1.99359 0
+-5.12233 -1.36453 0
+-5.13757 -0.58358 0
+-5.03249 -0.00148708 0
+-4.85709 0.138917 0
+-4.66151 -0.203929 0
+-4.48193 -0.859366 0
+-4.3346 -1.51916 0
+-4.21878 -1.8645 0
+-4.12535 -1.69172 0
+-4.04605 -0.987023 0
+-3.97918 0.0758121 0
+-3.92952 1.20823 0
+-3.90254 2.11632 0
+-3.89612 2.60055 0
+-3.89427 2.60614 0
+-3.86868 2.20761 0
+-3.79064 1.54515 0
+-3.64933 0.755394 0
+-3.46614 -0.0635537 0
+-3.29372 -0.842036 0
+-3.19595 -1.50553 0
+-3.21646 -1.95647 0
+-3.35284 -2.09816 0
+-3.553 -1.8952 0
+-3.73891 -1.43208 0
+-3.84708 -0.921819 0
+-3.86467 -0.639524 0
+-3.84224 -0.800032 0
+-3.87673 -1.43899 0
+-4.07299 -2.36529 0
+-4.50107 -3.22219 0
+-5.16786 -3.63775 0
+-6.01296 -3.39332 0
+-6.92501 -2.52582 0
+-7.76655 -1.31385 0
+-8.39607 -0.157316 0
+-8.68442 0.588124 0
+-4.67394 0.750071 0
+-2.42731 0.255633 0
+-2.42731 0.262561 0
+-1.17532 -0.144471 0
+-2.28158 -0.227111 0
+-4.41468 -0.317941 0
+-4.25501 -0.350173 0
+-3.96164 -0.158473 0
+-3.52972 0.297198 0
+-3.01274 0.836135 0
+-2.51631 1.17853 0
+-2.16375 1.1146 0
+-2.04474 0.63268 0
+-2.17015 -0.061484 0
+-2.45776 -0.645008 0
+-2.76117 -0.845002 0
+-2.93323 -0.582699 0
+-2.89485 -0.0152434 0
+-2.67326 0.549158 0
+-2.38785 0.816072 0
+-2.18975 0.657805 0
+-2.18662 0.170303 0
+-2.39206 -0.394561 0
+-2.72524 -0.778664 0
+-3.05825 -0.861282 0
+-3.28283 -0.715098 0
+-3.35988 -0.546715 0
+-3.32727 -0.561705 0
+-3.26715 -0.835849 0
+-3.25567 -1.2668 0
+-3.32472 -1.63122 0
+-3.45526 -1.71185 0
+-3.60138 -1.42119 0
+-3.72697 -0.852298 0
+-3.83137 -0.230843 0
+-3.94986 0.202188 0
+-4.12982 0.312089 0
+-4.39692 0.132246 0
+-4.73059 -0.16362 0
+-5.0628 -0.361061 0
+-5.30249 -0.322071 0
+-5.37419 -0.0577601 0
+-5.25137 0.281016 0
+-4.96675 0.488393 0
+-4.59372 0.416343 0
+-4.20865 0.05337 0
+-3.85491 -0.474291 0
+-3.52986 -0.979066 0
+-3.20382 -1.32157 0
+-2.86124 -1.48856 0
+-2.53943 -1.59253 0
+-2.33958 -1.79333 0
+-2.39984 -2.18908 0
+-2.84191 -2.74272 0
+-3.71794 -3.28941 0
+-4.98495 -3.62148 0
+-6.51815 -3.60122 0
+-8.15397 -3.23507 0
+-9.73882 -2.66685 0
+-11.1605 -2.09626 0
+-12.3525 -1.67245 0
+-13.2796 -1.42454 0
+-13.926 -1.26576 0
+-14.306 -1.06049 0
+-14.4833 -0.700412 0
+-14.5324 -0.138077 0
+-14.4961 0.59623 0
+-14.3643 1.39213 0
+-14.0855 2.07637 0
+-13.6145 2.45597 0
+-12.9601 2.39587 0
+-12.1538 1.90817 0
+-11.2185 1.16433 0
+-10.1624 0.432863 0
+-8.99216 -0.0172968 0
+-7.73241 -0.00591353 0
+-6.43815 0.506296 0
+-5.19275 1.41324 0
+-4.09291 2.49979 0
+-3.22795 3.5007 0
+-2.66294 4.16347 0
+-2.43068 4.30428 0
+-2.53085 3.85161 0
+-2.93087 2.87119 0
+-3.56508 1.56178 0
+-4.33458 0.212166 0
+-5.1141 -0.877855 0
+-5.77102 -1.49158 0
+-6.19487 -1.56974 0
+-6.3279 -1.2315 0
+-6.1837 -0.727779 0
+-5.8438 -0.341381 0
+-5.43147 -0.273418 0
+-5.07192 -0.563471 0
+-4.85422 -1.07707 0
+-4.80841 -1.56497 0
+-4.905 -1.7679 0
+-5.07425 -1.52246 0
+-5.23614 -0.825135 0
+-5.32886 0.168535 0
+-5.32577 1.20514 0
+-5.23605 2.02659 0
+-5.09124 2.45575 0
+-4.92593 2.44082 0
+-4.76327 2.04496 0
+-4.61314 1.39502 0
+-4.48137 0.623621 0
+-4.38086 -0.164062 0
+-4.33355 -0.88934 0
+-4.35877 -1.48032 0
+-4.454 -1.86124 0
+-4.58214 -1.97002 0
+-4.67805 -1.79929 0
+-4.67685 -1.43328 0
+-4.55213 -1.04653 0
+-4.34363 -0.848022 0
+-4.15692 -0.986748 0
+-4.13113 -1.46478 0
+-4.38699 -2.10943 0
+-4.97787 -2.63131 0
+-5.86605 -2.74957 0
+-6.93344 -2.32592 0
+-8.01855 -1.44071 0
+-8.96013 -0.372274 0
+-9.62748 0.51004 0
+-9.92633 0.886973 0
+-5.27356 0.608124 0
+-2.73112 -0.0178164 0
+-2.73112 0.0320695 0
+-1.12833 -0.13956 0
+-2.22006 -0.231705 0
+-4.35356 -0.352108 0
+-4.24664 -0.457092 0
+-4.01244 -0.392675 0
+-3.63033 -0.0849044 0
+-3.14233 0.348138 0
+-2.65307 0.689281 0
+-2.29494 0.756472 0
+-2.17115 0.508896 0
+-2.30415 0.0715204 0
+-2.61718 -0.331976 0
+-2.96262 -0.49956 0
+-3.18706 -0.358258 0
+-3.20225 -4.79684e-05 0
+-3.02554 0.372448 0
+-2.76803 0.558563 0
+-2.5765 0.466275 0
+-2.55981 0.153614 0
+-2.73849 -0.215878 0
+-3.04265 -0.474497 0
+-3.35631 -0.547624 0
+-3.58108 -0.490325 0
+-3.6836 -0.444193 0
+-3.70269 -0.542611 0
+-3.71669 -0.821845 0
+-3.79325 -1.19024 0
+-3.95146 -1.473 0
+-4.15647 -1.50684 0
+-4.34677 -1.23089 0
+-4.4755 -0.723566 0
+-4.54064 -0.165703 0
+-4.5871 0.248654 0
+-4.68041 0.405402 0
+-4.86724 0.31907 0
+-5.14469 0.11384 0
+-5.45534 -0.0504116 0
+-5.71101 -0.066402 0
+-5.83343 0.0646634 0
+-5.79044 0.238036 0
+-5.60871 0.306662 0
+-5.35642 0.164056 0
+-5.10605 -0.197003 0
+-4.89845 -0.681889 0
+-4.72956 -1.14795 0
+-4.56836 -1.48278 0
+-4.39602 -1.66089 0
+-4.24252 -1.74603 0
+-4.19669 -1.83916 0
+-4.38062 -2.00514 0
+-4.89959 -2.22375 0
+-5.79315 -2.39585 0
+-7.01295 -2.40168 0
+-8.43778 -2.17639 0
+-9.9164 -1.75645 0
+-11.3149 -1.26837 0
+-12.5457 -0.865419 0
+-13.5694 -0.648784 0
+-14.3763 -0.617626 0
+-14.968 -0.674021 0
+-15.3527 -0.675795 0
+-15.5496 -0.50357 0
+-15.5797 -0.10792 0
+-15.4537 0.470193 0
+-15.1678 1.10626 0
+-14.7161 1.6247 0
+-14.1132 1.853 0
+-13.4055 1.68821 0
+-12.6488 1.15147 0
+-11.8781 0.393686 0
+-11.0944 -0.350919 0
+-10.2711 -0.840552 0
+-9.37609 -0.900917 0
+-8.39473 -0.475065 0
+-7.34572 0.364229 0
+-6.28376 1.43784 0
+-5.29062 2.50756 0
+-4.4597 3.33255 0
+-3.87901 3.72359 0
+-3.61415 3.58675 0
+-3.69171 2.94875 0
+-4.08506 1.95514 0
+-4.70842 0.835521 0
+-5.42587 -0.160404 0
+-6.0788 -0.838649 0
+-6.52672 -1.12182 0
+-6.68859 -1.06963 0
+-6.56855 -0.847817 0
+-6.25417 -0.655759 0
+-5.88588 -0.641701 0
+-5.60822 -0.841132 0
+-5.52104 -1.16425 0
+-5.64881 -1.4372 0
+-5.93817 -1.47854 0
+-6.28278 -1.17785 0
+-6.56416 -0.543761 0
+-6.69222 0.296602 0
+-6.6312 1.14412 0
+-6.40307 1.79846 0
+-6.07052 2.1232 0
+-5.70937 2.07968 0
+-5.38405 1.71964 0
+-5.13617 1.14714 0
+-4.98686 0.474306 0
+-4.94478 -0.206136 0
+-5.01012 -0.824004 0
+-5.1697 -1.32073 0
+-5.38788 -1.64307 0
+-5.60374 -1.75416 0
+-5.74416 -1.65888 0
+-5.75274 -1.42469 0
+-5.62315 -1.17613 0
+-5.41834 -1.05283 0
+-5.26114 -1.14395 0
+-5.29458 -1.43133 0
+-5.62662 -1.77739 0
+-6.28374 -1.97419 0
+-7.19554 -1.83777 0
+-8.21765 -1.30382 0
+-9.18198 -0.476384 0
+-9.95103 0.396771 0
+-10.4513 1.01036 0
+-10.6691 1.10474 0
+-5.52838 0.541243 0
+-2.84258 -0.166324 0
+-2.84258 -0.102874 0
+-1.0163 -0.11887 0
+-2.02828 -0.206328 0
+-4.03539 -0.332653 0
+-4.01809 -0.474399 0
+-3.90996 -0.500795 0
+-3.67192 -0.322944 0
+-3.31868 -0.00509316 0
+-2.92905 0.299654 0
+-2.61911 0.446529 0
+-2.49 0.379789 0
+-2.5768 0.158331 0
+-2.82631 -0.0824719 0
+-3.11771 -0.208152 0
+-3.31814 -0.157827 0
+-3.34543 0.02724 0
+-3.20582 0.232838 0
+-2.98692 0.339674 0
+-2.81035 0.2897 0
+-2.76989 0.113155 0
+-2.88847 -0.09729 0
+-3.11545 -0.247519 0
+-3.36283 -0.300238 0
+-3.55776 -0.295393 0
+-3.68079 -0.321158 0
+-3.76975 -0.453648 0
+-3.88967 -0.701923 0
+-4.0885 -0.991396 0
+-4.36513 -1.19638 0
+-4.66756 -1.2044 0
+-4.92143 -0.977021 0
+-5.07134 -0.573648 0
+-5.11149 -0.125551 0
+-5.08858 0.225744 0
+-5.07624 0.393067 0
+-5.13535 0.378178 0
+-5.28166 0.260156 0
+-5.47789 0.14582 0
+-5.6539 0.109616 0
+-5.74399 0.154755 0
+-5.72111 0.215153 0
+-5.60994 0.195503 0
+-5.47243 0.0265457 0
+-5.37442 -0.295014 0
+-5.35291 -0.703397 0
+-5.40293 -1.09793 0
+-5.49177 -1.39393 0
+-5.59203 -1.56063 0
+-5.71295 -1.62511 0
+-5.90995 -1.64215 0
+-6.26478 -1.6503 0
+-6.84579 -1.64274 0
+-7.66986 -1.57178 0
+-8.6871 -1.38444 0
+-9.79647 -1.06701 0
+-10.8834 -0.669528 0
+-11.8589 -0.292895 0
+-12.6807 -0.0436187 0
+-13.3488 0.0193846 0
+-13.8831 -0.0833557 0
+-14.2988 -0.258271 0
+-14.5955 -0.379137 0
+-14.7588 -0.340281 0
+-14.7678 -0.0988888 0
+-14.6042 0.306532 0
+-14.263 0.765131 0
+-13.7653 1.12699 0
+-13.1646 1.25232 0
+-12.5395 1.06306 0
+-11.9664 0.578389 0
+-11.4892 -0.0834812 0
+-11.1015 -0.738642 0
+-10.7495 -1.19253 0
+-10.3535 -1.29694 0
+-9.83736 -0.991203 0
+-9.15621 -0.316919 0
+-8.31305 0.594688 0
+-7.36165 1.55615 0
+-6.3968 2.3677 0
+-5.53529 2.86209 0
+-4.89077 2.94223 0
+-4.54625 2.60423 0
+-4.52981 1.9387 0
+-4.80128 1.107 0
+-5.25715 0.295466 0
+-5.75628 -0.339513 0
+-6.16095 -0.71715 0
+-6.37985 -0.850733 0
+-6.39686 -0.830799 0
+-6.2735 -0.779122 0
+-6.12269 -0.792507 0
+-6.06363 -0.900188 0
+-6.175 -1.05287 0
+-6.46469 -1.14751 0
+-6.8671 -1.07613 0
+-7.26789 -0.777055 0
+-7.54534 -0.266307 0
+-7.61189 0.363154 0
+-7.44063 0.972859 0
+-7.06859 1.42642 0
+-6.57846 1.63307 0
+-6.06878 1.56999 0
+-5.62613 1.27699 0
+-5.3096 0.830604 0
+-5.14893 0.313638 0
+-5.15041 -0.204652 0
+-5.30192 -0.672492 0
+-5.57292 -1.04974 0
+-5.91218 -1.3038 0
+-6.25099 -1.41536 0
+-6.51788 -1.39198 0
+-6.66414 -1.27843 0
+-6.68965 -1.15063 0
+-6.6544 -1.08808 0
+-6.66469 -1.13365 0
+-6.83457 -1.26146 0
+-7.23705 -1.3749 0
+-7.86759 -1.34365 0
+-8.63837 -1.06699 0
+-9.40823 -0.533958 0
+-10.0363 0.151681 0
+-10.4367 0.797134 0
+-10.6111 1.18485 0
+-10.6438 1.13735 0
+-5.31675 0.541062 0
+-2.68105 -0.137869 0
+-2.68105 -0.069597 0
+-0.839977 -0.0867879 0
+-1.69932 -0.156484 0
+-3.4289 -0.26416 0
+-3.50271 -0.400581 0
+-3.53575 -0.46776 0
+-3.47448 -0.38421 0
+-3.30257 -0.176997 0
+-3.06097 0.0580523 0
+-2.83348 0.219046 0
+-2.70621 0.25252 0
+-2.72302 0.175144 0
+-2.8616 0.0561068 0
+-3.04352 -0.0262214 0
+-3.17358 -0.0277656 0
+-3.18751 0.0411699 0
+-3.08288 0.128208 0
+-2.9171 0.173903 0
+-2.77486 0.147461 0
+-2.72382 0.0621093 0
+-2.78328 -0.0378262 0
+-2.92211 -0.108681 0
+-3.08487 -0.137478 0
+-3.22912 -0.151134 0
+-3.35146 -0.198818 0
+-3.48717 -0.317936 0
+-3.68477 -0.504318 0
+-3.9711 -0.705062 0
+-4.32782 -0.839658 0
+-4.6933 -0.838911 0
+-4.98938 -0.680939 0
+-5.15827 -0.40476 0
+-5.18978 -0.0940331 0
+-5.12459 0.160549 0
+-5.03229 0.300772 0
+-4.9766 0.322496 0
+-4.98591 0.26946 0
+-5.0441 0.204022 0
+-5.1056 0.171112 0
+-5.12531 0.174464 0
+-5.08711 0.176963 0
+-5.01545 0.123837 0
+-4.96419 -0.024708 0
+-4.98981 -0.269395 0
+-5.1241 -0.569103 0
+-5.36204 -0.859991 0
+-5.67112 -1.08484 0
+-6.01593 -1.21582 0
+-6.38248 -1.25857 0
+-6.78724 -1.23739 0
+-7.26504 -1.17249 0
+-7.84285 -1.06494 0
+-8.51528 -0.899343 0
+-9.23701 -0.662705 0
+-9.93723 -0.366792 0
+-10.5485 -0.0582264 0
+-11.0342 0.192764 0
+-11.399 0.321216 0
+-11.6788 0.299174 0
+-11.9153 0.153172 0
+-12.1313 -0.0422984 0
+-12.3177 -0.192686 0
+-12.438 -0.220066 0
+-12.4434 -0.0934299 0
+-12.2949 0.15806 0
+-11.9824 0.452628 0
+-11.5371 0.681631 0
+-11.0305 0.74572 0
+-10.5576 0.590213 0
+-10.2067 0.227463 0
+-10.0276 -0.262582 0
+-10.0124 -0.753865 0
+-10.095 -1.10993 0
+-10.1698 -1.22209 0
+-10.1223 -1.0387 0
+-9.86117 -0.578061 0
+-9.34345 0.0769689 0
+-8.58663 0.799342 0
+-7.6661 1.44717 0
+-6.69932 1.89531 0
+-5.82006 2.06298 0
+-5.14737 1.93153 0
+-4.75639 1.54773 0
+-4.65933 1.00993 0
+-4.80363 0.439773 0
+-5.0902 -0.0529472 0
+-5.40682 -0.400519 0
+-5.66581 -0.591747 0
+-5.83153 -0.665073 0
+-5.92716 -0.683493 0
+-6.01758 -0.702087 0
+-6.17557 -0.742193 0
+-6.44523 -0.783213 0
+-6.81771 -0.775024 0
+-7.22911 -0.664737 0
+-7.58084 -0.42532 0
+-7.77391 -0.0732332 0
+-7.74319 0.332428 0
+-7.47875 0.708421 0
+-7.02739 0.975066 0
+-6.47564 1.08133 0
+-5.92297 1.01732 0
+-5.45657 0.81059 0
+-5.13636 0.510402 0
+-4.99201 0.169282 0
+-5.02735 -0.169305 0
+-5.22591 -0.473935 0
+-5.55356 -0.722088 0
+-5.96002 -0.897336 0
+-6.38398 -0.991397 0
+-6.76577 -1.01018 0
+-7.06624 -0.977959 0
+-7.28403 -0.932836 0
+-7.46084 -0.911277 0
+-7.66744 -0.927049 0
+-7.9726 -0.956291 0
+-8.40716 -0.940351 0
+-8.9407 -0.810109 0
+-9.48443 -0.523261 0
+-9.92182 -0.0965687 0
+-10.1556 0.385497 0
+-10.1527 0.794204 0
+-9.97077 1.00292 0
+-9.76156 0.928148 0
+-4.66371 0.524576 0
+-2.26406 0.0149216 0
+-2.26406 0.123502 0
+-0.619344 -0.0516322 0
+-1.26834 -0.0964507 0
+-2.59289 -0.169258 0
+-2.72512 -0.268341 0
+-2.86071 -0.332174 0
+-2.94163 -0.303284 0
+-2.9295 -0.189126 0
+-2.83082 -0.0406275 0
+-2.69392 0.082153 0
+-2.58234 0.140937 0
+-2.54086 0.133666 0
+-2.57324 0.0884929 0
+-2.64303 0.0435719 0
+-2.69595 0.0251562 0
+-2.69063 0.035851 0
+-2.62048 0.058053 0
+-2.51518 0.0686077 0
+-2.42239 0.054674 0
+-2.38122 0.0209371 0
+-2.40334 -0.0157031 0
+-2.47221 -0.0398017 0
+-2.55966 -0.0500268 0
+-2.64864 -0.0621553 0
+-2.7476 -0.0998517 0
+-2.88716 -0.178376 0
+-3.10047 -0.29101 0
+-3.39867 -0.406856 0
+-3.75593 -0.482393 0
+-4.11342 -0.481422 0
+-4.40126 -0.393102 0
+-4.56752 -0.23849 0
+-4.59955 -0.0620098 0
+-4.52685 0.0878534 0
+-4.40492 0.17885 0
+-4.28869 0.206264 0
+-4.2094 0.190172 0
+-4.1663 0.160927 0
+-4.13621 0.141022 0
+-4.09464 0.132893 0
+-4.03642 0.118745 0
+-3.98446 0.0718771 0
+-3.98213 -0.0270349 0
+-4.07387 -0.177649 0
+-4.28489 -0.358087 0
+-4.61094 -0.533936 0
+-5.02318 -0.672602 0
+-5.48406 -0.754936 0
+-5.96433 -0.778297 0
+-6.451 -0.750718 0
+-6.94229 -0.681199 0
+-7.43399 -0.573233 0
+-7.90721 -0.426126 0
+-8.32674 -0.243174 0
+-8.65278 -0.0407441 0
+-8.86003 0.149021 0
+-8.95304 0.285772 0
+-8.96829 0.33647 0
+-8.96044 0.291327 0
+-8.97893 0.17166 0
+-9.04618 0.0249549 0
+-9.14753 -0.0913373 0
+-9.23687 -0.130717 0
+-9.25526 -0.0750378 0
+-9.15514 0.057939 0
+-8.92186 0.21935 0
+-8.58502 0.34479 0
+-8.21493 0.375632 0
+-7.90397 0.279254 0
+-7.73791 0.0614055 0
+-7.76705 -0.233441 0
+-7.98724 -0.533678 0
+-8.3371 -0.760066 0
+-8.71208 -0.847116 0
+-8.99052 -0.760262 0
+-9.06407 -0.504505 0
+-8.86415 -0.122945 0
+-8.37835 0.313542 0
+-7.65362 0.722446 0
+-6.78616 1.02785 0
+-5.90012 1.17694 0
+-5.11977 1.15118 0
+-4.54148 0.969441 0
+-4.21308 0.681532 0
+-4.12688 0.353577 0
+-4.22907 0.0492388 0
+-4.44246 -0.187125 0
+-4.69462 -0.339585 0
+-4.94071 -0.418984 0
+-5.1725 -0.451701 0
+-5.41058 -0.464 0
+-5.68388 -0.468897 0
+-6.00594 -0.461149 0
+-6.35882 -0.422142 0
+-6.69166 -0.331893 0
+-6.93475 -0.182234 0
+-7.02305 0.015074 0
+-6.91961 0.228986 0
+-6.62941 0.418225 0
+-6.19899 0.544646 0
+-5.70283 0.58516 0
+-5.2229 0.537396 0
+-4.82975 0.417436 0
+-4.57105 0.251702 0
+-4.46934 0.0675728 0
+-4.5257 -0.112943 0
+-4.72482 -0.274817 0
+-5.03855 -0.408355 0
+-5.42852 -0.507363 0
+-5.85055 -0.569371 0
+-6.26309 -0.597639 0
+-6.63867 -0.602375 0
+-6.9733 -0.598212 0
+-7.28745 -0.597129 0
+-7.61493 -0.599568 0
+-7.98199 -0.589229 0
+-8.3857 -0.536645 0
+-8.78319 -0.41261 0
+-9.09982 -0.206632 0
+-9.25519 0.0587929 0
+-9.19706 0.327372 0
+-8.92906 0.526202 0
+-8.52391 0.597777 0
+-8.13169 0.535922 0
+-3.74352 0.403597 0
+-1.72993 0.15897 0
+-1.72993 0.358343 0
+-0.388615 -0.0223862 0
+-0.804024 -0.0434888 0
+-1.66303 -0.0791117 0
+-1.80144 -0.129935 0
+-1.96679 -0.166821 0
+-2.10905 -0.16102 0
+-2.18498 -0.113197 0
+-2.18148 -0.0441222 0
+-2.119 0.019674 0
+-2.03711 0.05905 0
+-1.97254 0.0690909 0
+-1.94194 0.0578996 0
+-1.93786 0.0394923 0
+-1.93813 0.0254279 0
+-1.92199 0.0197048 0
+-1.88296 0.0190325 0
+-1.83166 0.0173064 0
+-1.78784 0.0108492 0
+-1.76783 0.00092946 0
+-1.77565 -0.00787533 0
+-1.80337 -0.0120795 0
+-1.84017 -0.0132274 0
+-1.88392 -0.0184047 0
+-1.94724 -0.0365297 0
+-2.05325 -0.0723639 0
+-2.22246 -0.121803 0
+-2.45779 -0.171526 0
+-2.73642 -0.203762 0
+-3.01377 -0.204066 0
+-3.23867 -0.168203 0
+-3.37259 -0.104565 0
+-3.4038 -0.0307995 0
+-3.34963 0.0336811 0
+-3.24635 0.0755771 0
+-3.13224 0.0921591 0
+-3.03242 0.0903527 0
+-2.95278 0.0812874 0
+-2.88515 0.0733862 0
+-2.8199 0.0676509 0
+-2.75864 0.0574816 0
+-2.71966 0.0328986 0
+-2.73342 -0.0132761 0
+-2.83041 -0.0806525 0
+-3.02812 -0.160382 0
+-3.32366 -0.238389 0
+-3.69553 -0.300732 0
+-4.11231 -0.338153 0
+-4.54298 -0.347631 0
+-4.96294 -0.330753 0
+-5.35352 -0.290616 0
+-5.69702 -0.229737 0
+-5.97263 -0.15051 0
+-6.15795 -0.0578487 0
+-6.23686 0.0381581 0
+-6.20992 0.122086 0
+-6.10092 0.176776 0
+-5.95408 0.189627 0
+-5.82141 0.15866 0
+-5.74488 0.095125 0
+-5.74087 0.0209477 0
+-5.7939 -0.038303 0
+-5.86234 -0.062282 0
+-5.89416 -0.0432169 0
+-5.84716 0.0109488 0
+-5.70655 0.0787408 0
+-5.49372 0.131959 0
+-5.26298 0.144888 0
+-5.08664 0.102912 0
+-5.03299 0.00775997 0
+-5.14418 -0.122248 0
+-5.42099 -0.256865 0
+-5.81913 -0.361927 0
+-6.25792 -0.408323 0
+-6.63871 -0.379476 0
+-6.86777 -0.275446 0
+-6.87784 -0.112874 0
+-6.64322 0.0789235 0
+-6.18534 0.264572 0
+-5.56789 0.410403 0
+-4.88266 0.491703 0
+-4.22933 0.497858 0
+-3.69401 0.434119 0
+-3.33189 0.319409 0
+-3.15894 0.180631 0
+-3.15482 0.0451151 0
+-3.27552 -0.0664218 0
+-3.47103 -0.144075 0
+-3.70119 -0.188819 0
+-3.94413 -0.208758 0
+-4.1947 -0.213435 0
+-4.45483 -0.208769 0
+-4.72117 -0.194803 0
+-4.97627 -0.167038 0
+-5.18775 -0.120417 0
+-5.31612 -0.0538601 0
+-5.32801 0.0269581 0
+-5.20895 0.109931 0
+-4.97057 0.179847 0
+-4.64914 0.223213 0
+-4.29646 0.232482 0
+-3.96699 0.207926 0
+-3.70613 0.15658 0
+-3.54348 0.0890543 0
+-3.49183 0.0159241 0
+-3.55008 -0.0546947 0
+-3.70717 -0.117726 0
+-3.94513 -0.170396 0
+-4.24118 -0.211312 0
+-4.57035 -0.240201 0
+-4.90969 -0.258307 0
+-5.24349 -0.268573 0
+-5.56704 -0.274656 0
+-5.88563 -0.278544 0
+-6.20733 -0.277865 0
+-6.53176 -0.264794 0
+-6.84015 -0.228261 0
+-7.09318 -0.159576 0
+-7.24037 -0.0594456 0
+-7.23868 0.0571066 0
+-7.07271 0.161398 0
+-6.76576 0.219253 0
+-6.37584 0.207855 0
+-5.98889 0.148978 0
+-2.77737 0.188519 0
+-1.26878 0.176163 0
+-1.26878 0.443815 0
+-0.187102 -0.00507952 0
+-0.39003 -0.0105679 0
+-0.814963 -0.0199696 0
+-0.911056 -0.0338406 0
+-1.03342 -0.0444607 0
+-1.15021 -0.0442235 0
+-1.23044 -0.0329663 0
+-1.25906 -0.0155018 0
+-1.24111 0.00172188 0
+-1.19574 0.0136836 0
+-1.14515 0.0184987 0
+-1.10462 0.0173671 0
+-1.07829 0.0131722 0
+-1.06156 0.00868959 0
+-1.04723 0.00537658 0
+-1.03142 0.00322716 0
+-1.01562 0.00150931 0
+-1.0045 -0.00027783 0
+-1.00165 -0.00191958 0
+-1.00675 -0.00277026 0
+-1.01628 -0.00254518 0
+-1.02752 -0.00199402 0
+-1.04304 -0.00288411 0
+-1.07241 -0.00716001 0
+-1.12908 -0.0156928 0
+-1.22353 -0.0273508 0
+-1.35604 -0.0390124 0
+-1.51315 -0.0466525 0
+-1.67017 -0.0470407 0
+-1.79915 -0.0392198 0
+-1.87871 -0.0250119 0
+-1.90122 -0.00828175 0
+-1.87423 0.00668315 0
+-1.81552 0.0168774 0
+-1.74492 0.0215543 0
+-1.67662 0.0220542 0
+-1.61599 0.0206572 0
+-1.56171 0.0191118 0
+-1.51168 0.0176191 0
+-1.46898 0.0147768 0
+-1.44454 0.00846667 0
+-1.45499 -0.00282617 0
+-1.51667 -0.0189759 0
+-1.63906 -0.0379922 0
+-1.82077 -0.0566754 0
+-2.04976 -0.0717492 0
+-2.30705 -0.0808594 0
+-2.5717 -0.082983 0
+-2.82426 -0.0781912 0
+-3.04777 -0.0670981 0
+-3.22703 -0.0504784 0
+-3.34819 -0.029354 0
+-3.40057 -0.00546399 0
+-3.38073 0.0183178 0
+-3.29676 0.0381144 0
+-3.16993 0.0499485 0
+-3.03146 0.0511581 0
+-2.91449 0.041686 0
+-2.84392 0.0245581 0
+-2.82817 0.00520156 0
+-2.85625 -0.0102258 0
+-2.90163 -0.0168964 0
+-2.93184 -0.0130067 0
+-2.92041 -0.000488253 0
+-2.85719 0.0155248 0
+-2.75353 0.0283041 0
+-2.64033 0.031686 0
+-2.5595 0.0220849 0
+-2.55147 -0.000276686 0
+-2.64244 -0.0312764 0
+-2.83538 -0.0639246 0
+-3.10713 -0.0901778 0
+-3.41244 -0.103011 0
+-3.69372 -0.0981928 0
+-3.89384 -0.0753214 0
+-3.9688 -0.0379181 0
+-3.89727 0.00739132 0
+-3.68506 0.0523624 0
+-3.36359 0.0889372 0
+-2.98286 0.11097 0
+-2.6005 0.115497 0
+-2.26961 0.103232 0
+-2.02836 0.0781614 0
+-1.89405 0.0463173 0
+-1.86302 0.0140907 0
+-1.91605 -0.0133879 0
+-2.02684 -0.0332868 0
+-2.17044 -0.0452234 0
+-2.32862 -0.0505715 0
+-2.49076 -0.0512981 0
+-2.65065 -0.0488746 0
+-2.80173 -0.0437284 0
+-2.93335 -0.0354177 0
+-3.0304 -0.0233641 0
+-3.07654 -0.00771588 0
+-3.05971 0.0101203 0
+-2.97734 0.0275638 0
+-2.83903 0.0415374 0
+-2.66525 0.0494345 0
+-2.48271 0.049946 0
+-2.31818 0.0433958 0
+-2.19307 0.0314705 0
+-2.12054 0.0165177 0
+-2.10538 0.000770503 0
+-2.14591 -0.0141622 0
+-2.23624 -0.0274007 0
+-2.36804 -0.0385991 0
+-2.53166 -0.0476906 0
+-2.7171 -0.05476 0
+-2.91535 -0.0600565 0
+-3.11993 -0.0639899 0
+-3.32766 -0.0669245 0
+-3.53746 -0.0687462 0
+-3.7469 -0.0684268 0
+-3.94772 -0.0639738 0
+-4.1229 -0.0530766 0
+-4.24806 -0.0344224 0
+-4.29827 -0.00923466 0
+-4.25884 0.0176813 0
+-4.13544 0.0379946 0
+-3.95738 0.0411986 0
+-3.76723 0.0177026 0
+-3.59086 -0.027395 0
+-1.84588 0.0192751 0
+-0.938971 0.0762315 0
+-0.938971 0.26111 0
+-0.049531 -0.00507952 0
+-0.103584 -0.0105679 0
+-0.218222 -0.0199696 0
+-0.252062 -0.0338406 0
+-0.296523 -0.0444607 0
+-0.340746 -0.0442235 0
+-0.373712 -0.0329663 0
+-0.389214 -0.0155018 0
+-0.387492 0.00172188 0
+-0.373808 0.0136836 0
+-0.355309 0.0184987 0
+-0.337942 0.0173671 0
+-0.324769 0.0131722 0
+-0.31608 0.00868959 0
+-0.310703 0.00537658 0
+-0.307476 0.00322716 0
+-0.305966 0.00150931 0
+-0.306244 -0.00027783 0
+-0.308163 -0.00191958 0
+-0.310933 -0.00277026 0
+-0.313478 -0.00254518 0
+-0.315472 -0.00199402 0
+-0.318356 -0.00288411 0
+-0.325516 -0.00716001 0
+-0.341208 -0.0156928 0
+-0.368559 -0.0273508 0
+-0.407571 -0.0390124 0
+-0.454223 -0.0466525 0
+-0.501264 -0.0470407 0
+-0.540483 -0.0392198 0
+-0.565495 -0.0250119 0
+-0.573777 -0.00828175 0
+-0.567093 0.00668315 0
+-0.550216 0.0168774 0
+-0.528661 0.0215543 0
+-0.506607 0.0220542 0
+-0.485949 0.0206572 0
+-0.466837 0.0191118 0
+-0.449218 0.0176191 0
+-0.434441 0.0147768 0
+-0.425974 0.00846667 0
+-0.428801 -0.00282617 0
+-0.447776 -0.0189759 0
+-0.485768 -0.0379922 0
+-0.542444 -0.0566754 0
+-0.614193 -0.0717492 0
+-0.695052 -0.0808594 0
+-0.778035 -0.082983 0
+-0.856226 -0.0781912 0
+-0.923324 -0.0670981 0
+-0.973802 -0.0504784 0
+-1.00316 -0.029354 0
+-1.00862 -0.00546399 0
+-0.990302 0.0183178 0
+-0.952187 0.0381144 0
+-0.902238 0.0499485 0
+-0.85108 0.0511581 0
+-0.809394 0.041686 0
+-0.784836 0.0245581 0
+-0.779634 0.00520156 0
+-0.78986 -0.0102258 0
+-0.806756 -0.0168964 0
+-0.819763 -0.0130067 0
+-0.820251 -0.000488253 0
+-0.804726 0.0155248 0
+-0.776422 0.0283041 0
+-0.744736 0.031686 0
+-0.722651 0.0220849 0
+-0.722927 -0.000276686 0
+-0.754204 -0.0312764 0
+-0.818128 -0.0639246 0
+-0.908306 -0.0901778 0
+-1.01132 -0.103011 0
+-1.10951 -0.0981928 0
+-1.18483 -0.0753214 0
+-1.22275 -0.0379181 0
+-1.21536 0.00739132 0
+-1.16299 0.0523624 0
+-1.07406 0.0889372 0
+-0.963087 0.11097 0
+-0.84759 0.115497 0
+-0.744358 0.103232 0
+-0.666197 0.0781614 0
+-0.619879 0.0463173 0
+-0.605789 0.0140907 0
+-0.619176 -0.0133879 0
+-0.652463 -0.0332868 0
+-0.697686 -0.0452234 0
+-0.748258 -0.0505715 0
+-0.799556 -0.0512981 0
+-0.84843 -0.0488746 0
+-0.892158 -0.0437284 0
+-0.927576 -0.0354177 0
+-0.95094 -0.0233641 0
+-0.958656 -0.00771588 0
+-0.948536 0.0101203 0
+-0.920972 0.0275638 0
+-0.879434 0.0415374 0
+-0.83 0.0494345 0
+-0.780053 0.049946 0
+-0.736658 0.0433958 0
+-0.705187 0.0314705 0
+-0.688669 0.0165177 0
+-0.687899 0.000770503 0
+-0.702061 -0.0141622 0
+-0.729462 -0.0274007 0
+-0.768061 -0.0385991 0
+-0.815751 -0.0476906 0
+-0.870511 -0.05476 0
+-0.930568 -0.0600565 0
+-0.994557 -0.0639899 0
+-1.06148 -0.0669245 0
+-1.13023 -0.0687462 0
+-1.19865 -0.0684268 0
+-1.26263 -0.0639738 0
+-1.31571 -0.0530766 0
+-1.35013 -0.0344224 0
+-1.35936 -0.00923466 0
+-1.34168 0.0176813 0
+-1.30369 0.0379946 0
+-1.26249 0.0411986 0
+-1.24478 0.0177026 0
+-1.27218 -0.027395 0
+-0.813377 0.0192751 0
+-0.511398 0.0762315 0
+-0.511398 0.26111 0
+-0.184499 -0.0265472 0
+-0.369971 -0.0515996 0
+-0.736331 -0.0903905 0
+-0.593512 -0.142819 0
+-0.417189 -0.176323 0
+-0.248103 -0.169085 0
+-0.125723 -0.12238 0
+-0.073552 -0.0521708 0
+-0.0935056 0.0199536 0
+-0.168669 0.0751636 0
+-0.27159 0.102921 0
+-0.37406 0.10247 0
+-0.454781 0.0807203 0
+-0.503005 0.0482239 0
+-0.518237 0.0152326 0
+-0.50746 -0.0107769 0
+-0.481646 -0.0258148 0
+-0.452736 -0.0289094 0
+-0.431408 -0.0213279 0
+-0.425379 -0.00602955 0
+-0.438064 0.0126856 0
+-0.467809 0.0297447 0
+-0.508208 0.0403986 0
+-0.549892 0.0416838 0
+-0.583501 0.0336096 0
+-0.602842 0.0193406 0
+-0.606901 0.00405925 0
+-0.599787 -0.00711383 0
+-0.588587 -0.0112001 0
+-0.580152 -0.00843461 0
+-0.578338 -0.00181417 0
+-0.58294 0.0046019 0
+-0.590663 0.00772266 0
+-0.597406 0.00674327 0
+-0.600547 0.00314093 0
+-0.600026 -0.000520711 0
+-0.597799 -0.00222727 0
+-0.596134 -0.00166541 0
+-0.595824 -0.0003093 0
+-0.595331 -0.00049323 0
+-0.591258 -0.00407304 0
+-0.579813 -0.0114454 0
+-0.558404 -0.0214091 0
+-0.526588 -0.0318158 0
+-0.486082 -0.040506 0
+-0.440152 -0.0459299 0
+-0.392994 -0.0471574 0
+-0.349535 -0.0434597 0
+-0.315553 -0.0339815 0
+-0.297587 -0.0179664 0
+-0.302001 0.00441374 0
+-0.333089 0.0310882 0
+-0.390788 0.0576989 0
+-0.469114 0.0783265 0
+-0.556409 0.0872949 0
+-0.637801 0.0813916 0
+-0.699312 0.061511 0
+-0.73221 0.0328983 0
+-0.735964 0.00375371 0
+-0.718617 -0.0173463 0
+-0.694339 -0.0242784 0
+-0.678892 -0.0154472 0
+-0.684478 0.00558627 0
+-0.715571 0.0310929 0
+-0.766997 0.0514256 0
+-0.824808 0.0578114 0
+-0.869665 0.0448573 0
+-0.881754 0.0120885 0
+-0.845907 -0.0358471 0
+-0.755613 -0.0902933 0
+-0.614936 -0.140677 0
+-0.437918 -0.177018 0
+-0.245704 -0.192215 0
+-0.0621236 -0.18358 0
+0.0911408 -0.153264 0
+0.198665 -0.107524 0
+0.253734 -0.0550698 0
+0.258706 -0.00497159 0
+0.223366 0.03534 0
+0.161882 0.0614837 0
+0.0892076 0.0726745 0
+0.0178379 0.0713697 0
+-0.0443461 0.0621839 0
+-0.0947388 0.0503928 0
+-0.135151 0.0404117 0
+-0.169794 0.0346435 0
+-0.202808 0.0330141 0
+-0.236158 0.0333497 0
+-0.268651 0.0324928 0
+-0.296426 0.027775 0
+-0.31471 0.0182844 0
+-0.320104 0.00539365 0
+-0.312391 -0.00771299 0
+-0.295044 -0.0173468 0
+-0.274133 -0.0209106 0
+-0.256052 -0.0180818 0
+-0.245002 -0.0110492 0
+-0.241318 -0.00368458 0
+-0.241316 -1.97425e-06 0
+-0.238755 -0.00256124 0
+-0.227279 -0.0114757 0
+-0.202885 -0.0243944 0
+-0.165481 -0.0374036 0
+-0.119049 -0.0464321 0
+-0.0704309 -0.048618 0
+-0.027217 -0.0432139 0
+0.00464917 -0.0318662 0
+0.0229726 -0.0183234 0
+0.0306658 -0.00769324 0
+0.0359829 -0.00531706 0
+0.0512824 -0.0152994 0
+0.0901317 -0.0388494 0
+0.163004 -0.0728718 0
+0.272519 -0.109516 0
+0.409896 -0.137377 0
+0.554493 -0.144597 0
+0.677747 -0.123254 0
+0.751335 -0.0735883 0
+0.75756 -0.00622457 0
+0.698584 0.0589763 0
+0.600928 0.0976561 0
+0.511837 0.089091 0
+0.474636 0.0372009 0
+0.460322 0.0850857 0
+0.354378 0.138419 0
+0.354378 0.337985 0
+-0.708026 -0.104031 0
+-1.41081 -0.191271 0
+-2.80308 -0.328733 0
+-2.43262 -0.513278 0
+-1.9801 -0.628846 0
+-1.56141 -0.587777 0
+-1.2878 -0.395993 0
+-1.21965 -0.120321 0
+-1.35034 0.15065 0
+-1.61797 0.342793 0
+-1.93429 0.419235 0
+-2.21655 0.384729 0
+-2.41011 0.274281 0
+-2.49621 0.134324 0
+-2.48673 0.00575172 0
+-2.41224 -0.0852617 0
+-2.31005 -0.128001 0
+-2.2159 -0.123063 0
+-2.15931 -0.0779203 0
+-2.1605 -0.00483355 0
+-2.22729 0.0794707 0
+-2.35246 0.154916 0
+-2.51411 0.202045 0
+-2.68077 0.208345 0
+-2.82105 0.173887 0
+-2.9143 0.112591 0
+-2.95758 0.0473422 0
+-2.96529 0.000601268 0
+-2.96138 -0.0151152 0
+-2.96775 -0.00206626 0
+-2.99459 0.0250328 0
+-3.03715 0.0471602 0
+-3.08002 0.0505859 0
+-3.10621 0.0329326 0
+-3.1059 0.00283987 0
+-3.08036 -0.0260618 0
+-3.03941 -0.0431771 0
+-2.99458 -0.0464961 0
+-2.952 -0.0428932 0
+-2.90899 -0.0435036 0
+-2.85588 -0.0571816 0
+-2.7815 -0.0858233 0
+-2.67902 -0.123888 0
+-2.54906 -0.161776 0
+-2.39909 -0.190479 0
+-2.24053 -0.204487 0
+-2.08623 -0.201464 0
+-1.95001 -0.179679 0
+-1.84813 -0.135863 0
+-1.80016 -0.0659323 0
+-1.82679 0.0310437 0
+-1.94353 0.147832 0
+-2.15238 0.266547 0
+-2.43546 0.361401 0
+-2.75485 0.406693 0
+-3.06046 0.386994 0
+-3.30384 0.304891 0
+-3.45334 0.182404 0
+-3.50455 0.0549649 0
+-3.48194 -0.0399605 0
+-3.43087 -0.0753494 0
+-3.40257 -0.0437411 0
+-3.43697 0.0399863 0
+-3.54874 0.14286 0
+-3.72083 0.22351 0
+-3.90723 0.244217 0
+-4.04415 0.181776 0
+-4.06631 0.0342462 0
+-3.92416 -0.177994 0
+-3.59751 -0.416944 0
+-3.10214 -0.636049 0
+-2.4879 -0.791262 0
+-1.82879 -0.85132 0
+-1.20766 -0.804713 0
+-0.699207 -0.661714 0
+-0.355612 -0.451119 0
+-0.197946 -0.212735 0
+-0.215162 0.0122439 0
+-0.370234 0.190412 0
+-0.611358 0.302607 0
+-0.885025 0.346342 0
+-1.14769 0.334038 0
+-1.37338 0.287867 0
+-1.55567 0.232682 0
+-1.70411 0.188852 0
+-1.8363 0.166837 0
+-1.96834 0.16505 0
+-2.10677 0.171782 0
+-2.24498 0.170701 0
+-2.36535 0.148144 0
+-2.44647 0.0994086 0
+-2.4725 0.0314266 0
+-2.44071 -0.0395043 0
+-2.36389 -0.0941728 0
+-2.26638 -0.118418 0
+-2.17528 -0.109176 0
+-2.11038 -0.0759569 0
+-2.07694 -0.0371203 0
+-2.06436 -0.0125871 0
+-2.0508 -0.016119 0
+-2.01196 -0.0503145 0
+-1.93024 -0.106114 0
+-1.80105 -0.166589 0
+-1.63438 -0.213106 0
+-1.4516 -0.231401 0
+-1.27911 -0.215701 0
+-1.14068 -0.170293 0
+-1.05013 -0.108873 0
+-1.00562 -0.0522081 0
+-0.986781 -0.0241553 0
+-0.9563 -0.0457805 0
+-0.867303 -0.127846 0
+-0.676756 -0.263419 0
+-0.362333 -0.423939 0
+0.0627219 -0.562431 0
+0.543766 -0.625642 0
+0.993503 -0.572991 0
+1.31584 -0.395923 0
+1.43858 -0.128971 0
+1.3428 0.154756 0
+1.07426 0.3662 0
+0.723914 0.439438 0
+0.369524 0.391591 0
+0.293326 0.436329 0
+0.173811 0.385577 0
+0.173811 0.639816 0
+-1.41528 -0.206412 0
+-2.81704 -0.371747 0
+-5.60226 -0.629784 0
+-5.14477 -0.970774 0
+-4.60718 -1.16643 0
+-4.15908 -1.03587 0
+-3.9542 -0.600871 0
+-4.05734 -0.0171816 0
+-4.4241 0.517404 0
+-4.92932 0.848015 0
+-5.42288 0.912794 0
+-5.78471 0.746559 0
+-5.95726 0.446834 0
+-5.94788 0.124939 0
+-5.80835 -0.133771 0
+-5.60707 -0.286546 0
+-5.40757 -0.327502 0
+-5.25942 -0.271215 0
+-5.19806 -0.13928 0
+-5.24607 0.0431791 0
+-5.41051 0.24391 0
+-5.67727 0.421675 0
+-6.00853 0.533307 0
+-6.34933 0.549142 0
+-6.64393 0.46849 0
+-6.85583 0.324495 0
+-6.98132 0.172826 0
+-7.04871 0.0679981 0
+-7.10275 0.0389235 0
+-7.18143 0.0766084 0
+-7.2971 0.140712 0
+-7.43137 0.18143 0
+-7.54569 0.164903 0
+-7.60153 0.0887721 0
+-7.57904 -0.0196488 0
+-7.48467 -0.120438 0
+-7.34468 -0.183163 0
+-7.18937 -0.201806 0
+-7.03717 -0.195095 0
+-6.8873 -0.193375 0
+-6.72397 -0.22051 0
+-6.52847 -0.281321 0
+-6.29144 -0.360922 0
+-6.01846 -0.434749 0
+-5.72716 -0.481787 0
+-5.43933 -0.492317 0
+-5.17478 -0.46601 0
+-4.95117 -0.403294 0
+-4.78922 -0.29781 0
+-4.71794 -0.137208 0
+-4.77314 0.0862414 0
+-4.98644 0.361127 0
+-5.36827 0.648383 0
+-5.89344 0.886567 0
+-6.49816 1.01142 0
+-7.09302 0.981851 0
+-7.58834 0.800209 0
+-7.9226 0.516665 0
+-8.08248 0.21484 0
+-8.1066 -0.0158388 0
+-8.07164 -0.110303 0
+-8.06572 -0.0496626 0
+-8.15796 0.132219 0
+-8.3738 0.358709 0
+-8.68343 0.533139 0
+-9.00625 0.567039 0
+-9.23021 0.405733 0
+-9.24055 0.0445801 0
+-8.95063 -0.467911 0
+-8.32699 -1.04058 0
+-7.40207 -1.56097 0
+-6.27123 -1.9221 0
+-5.07453 -2.04802 0
+-3.96775 -1.9115 0
+-3.08987 -1.53959 0
+-2.53523 -1.00576 0
+-2.33713 -0.410843 0
+-2.46633 0.141445 0
+-2.84401 0.568093 0
+-3.36467 0.823265 0
+-3.92263 0.90431 0
+-4.43541 0.846817 0
+-4.85843 0.710881 0
+-5.18816 0.562412 0
+-5.45349 0.45419 0
+-5.69817 0.411517 0
+-5.95977 0.426651 0
+-6.25218 0.464188 0
+-6.55782 0.476339 0
+-6.83288 0.423202 0
+-7.02393 0.290465 0
+-7.08964 0.0971296 0
+-7.01862 -0.110523 0
+-6.83603 -0.276757 0
+-6.59575 -0.358701 0
+-6.36123 -0.343692 0
+-6.18295 -0.254244 0
+-6.0813 -0.138768 0
+-6.04156 -0.0523259 0
+-6.0219 -0.0357831 0
+-5.97043 -0.101781 0
+-5.84418 -0.232361 0
+-5.62308 -0.387691 0
+-5.31521 -0.520977 0
+-4.95336 -0.593247 0
+-4.58553 -0.583536 0
+-4.26243 -0.493393 0
+-4.02426 -0.347039 0
+-3.888 -0.188475 0
+-3.83715 -0.0750007 0
+-3.81778 -0.0651498 0
+-3.74538 -0.200251 0
+-3.52562 -0.483175 0
+-3.08657 -0.86299 0
+-2.41266 -1.23634 0
+-1.56603 -1.47227 0
+-0.681809 -1.45721 0
+0.0670267 -1.14476 0
+0.526095 -0.58804 0
+0.615657 0.0651944 0
+0.3602 0.621657 0
+-0.125411 0.925049 0
+-0.680517 0.946696 0
+-0.509679 0.847969 0
+-0.376122 0.526221 0
+-0.376122 0.655364 0
+-2.09589 -0.291631 0
+-4.17561 -0.516382 0
+-8.32343 -0.859977 0
+-7.99632 -1.29788 0
+-7.66721 -1.49555 0
+-7.51066 -1.19242 0
+-7.66017 -0.45137 0
+-8.12939 0.452039 0
+-8.80292 1.19094 0
+-9.48936 1.53446 0
+-10.0034 1.42683 0
+-10.2354 0.978605 0
+-10.1797 0.391107 0
+-9.91563 -0.13915 0
+-9.56034 -0.489068 0
+-9.22057 -0.626308 0
+-8.96604 -0.582039 0
+-8.82977 -0.407479 0
+-8.82453 -0.144524 0
+-8.95717 0.175819 0
+-9.22934 0.516085 0
+-9.62604 0.818369 0
+-10.1045 1.01177 0
+-10.5969 1.04158 0
+-11.0309 0.902462 0
+-11.3584 0.651988 0
+-11.577 0.391464 0
+-11.7297 0.220648 0
+-11.8806 0.189794 0
+-12.0795 0.275583 0
+-12.3337 0.394885 0
+-12.6015 0.449216 0
+-12.8123 0.375688 0
+-12.9007 0.177227 0
+-12.8373 -0.0830469 0
+-12.6395 -0.318327 0
+-12.3585 -0.464141 0
+-12.0517 -0.508616 0
+-11.7548 -0.491913 0
+-11.4705 -0.477733 0
+-11.1759 -0.515096 0
+-10.8446 -0.612645 0
+-10.4668 -0.738733 0
+-10.0573 -0.844195 0
+-9.64786 -0.891252 0
+-9.27065 -0.869523 0
+-8.94656 -0.790097 0
+-8.68561 -0.664249 0
+-8.49922 -0.484196 0
+-8.41421 -0.222221 0
+-8.47587 0.147909 0
+-8.73398 0.619234 0
+-9.21618 1.13058 0
+-9.90278 1.57317 0
+-10.718 1.82667 0
+-11.5454 1.80922 0
+-12.2625 1.51732 0
+-12.7812 1.03539 0
+-13.0762 0.50983 0
+-13.1908 0.0987157 0
+-13.2188 -0.0823358 0
+-13.27 0.00157347 0
+-13.4313 0.293484 0
+-13.7346 0.662051 0
+-14.1421 0.940679 0
+-14.5511 0.976 0
+-14.8175 0.672179 0
+-14.793 0.0200006 0
+-14.365 -0.895889 0
+-13.492 -1.91353 0
+-12.2224 -2.83056 0
+-10.6919 -3.45265 0
+-9.09877 -3.64114 0
+-7.66286 -3.3474 0
+-6.57797 -2.62448 0
+-5.9707 -1.61303 0
+-5.87623 -0.505313 0
+-6.23699 0.502206 0
+-6.9234 1.25451 0
+-7.77011 1.66997 0
+-8.61735 1.75155 0
+-9.34695 1.57642 0
+-9.90439 1.26832 0
+-10.3021 0.96017 0
+-10.6041 0.756134 0
+-10.8953 0.702727 0
+-11.2462 0.777573 0
+-11.6827 0.900625 0
+-12.1724 0.966107 0
+-12.6345 0.885312 0
+-12.9685 0.624436 0
+-13.0931 0.221674 0
+-12.9788 -0.224757 0
+-12.6618 -0.593806 0
+-12.2316 -0.788848 0
+-11.8002 -0.775155 0
+-11.4624 -0.592008 0
+-11.2659 -0.335273 0
+-11.1992 -0.119027 0
+-11.2018 -0.0331521 0
+-11.1897 -0.11395 0
+-11.0845 -0.33751 0
+-10.8374 -0.634798 0
+-10.4397 -0.91868 0
+-9.92229 -1.11065 0
+-9.34666 -1.15917 0
+-8.79135 -1.0487 0
+-8.33524 -0.803152 0
+-8.03726 -0.486456 0
+-7.91416 -0.198102 0
+-7.92249 -0.0568173 0
+-7.95513 -0.167608 0
+-7.86158 -0.576724 0
+-7.49304 -1.23153 0
+-6.76032 -1.96907 0
+-5.68165 -2.55094 0
+-4.39617 -2.74269 0
+-3.12997 -2.41095 0
+-2.12264 -1.59537 0
+-1.54221 -0.515239 0
+-1.4248 0.504249 0
+-1.66312 1.16337 0
+-2.03523 1.31881 0
+-1.28826 1.0405 0
+-0.780125 0.467664 0
+-0.780125 0.474797 0
+-2.58042 -0.329428 0
+-5.14757 -0.570118 0
+-10.2855 -0.923787 0
+-10.2454 -1.33798 0
+-10.3345 -1.40642 0
+-10.6846 -0.842386 0
+-11.3492 0.213234 0
+-12.2453 1.34814 0
+-13.1706 2.11624 0
+-13.885 2.24888 0
+-14.2117 1.7535 0
+-14.1067 0.873649 0
+-13.6661 -0.0494744 0
+-13.0724 -0.732904 0
+-12.5128 -1.04866 0
+-12.1125 -1.02659 0
+-11.9114 -0.783176 0
+-11.8866 -0.432272 0
+-11.9976 -0.0335353 0
+-12.2209 0.399192 0
+-12.5554 0.850524 0
+-12.9998 1.2628 0
+-13.5267 1.53863 0
+-14.0741 1.58903 0
+-14.5664 1.39471 0
+-14.9506 1.0362 0
+-15.2265 0.66739 0
+-15.4481 0.442206 0
+-15.693 0.434687 0
+-16.0161 0.598685 0
+-16.4129 0.791698 0
+-16.8143 0.850598 0
+-17.1161 0.677536 0
+-17.2281 0.289244 0
+-17.1156 -0.19561 0
+-16.8122 -0.621642 0
+-16.3994 -0.876966 0
+-15.9635 -0.944485 0
+-15.5569 -0.898513 0
+-15.182 -0.852669 0
+-14.8053 -0.89179 0
+-14.3904 -1.02758 0
+-13.9278 -1.20131 0
+-13.4447 -1.32734 0
+-12.9893 -1.34662 0
+-12.6037 -1.25513 0
+-12.3034 -1.09042 0
+-12.0786 -0.888982 0
+-11.9163 -0.646539 0
+-11.8262 -0.312259 0
+-11.8533 0.174985 0
+-12.063 0.828889 0
+-12.5064 1.57399 0
+-13.1839 2.25069 0
+-14.0284 2.67114 0
+-14.9194 2.70028 0
+-15.7232 2.32103 0
+-16.3386 1.6508 0
+-16.7303 0.901527 0
+-16.9346 0.303095 0
+-17.0404 0.0234693 0
+-17.1534 0.11457 0
+-17.3577 0.497735 0
+-17.6846 0.988953 0
+-18.0974 1.35351 0
+-18.4946 1.37323 0
+-18.7313 0.908816 0
+-18.6544 -0.0569223 0
+-18.1459 -1.40437 0
+-17.1627 -2.89671 0
+-15.7613 -4.232 0
+-14.0979 -5.11605 0
+-12.402 -5.33706 0
+-10.9278 -4.82154 0
+-9.89711 -3.65519 0
+-9.44782 -2.06232 0
+-9.60406 -0.349078 0
+-10.2751 1.17325 0
+-11.2832 2.26261 0
+-12.4114 2.79813 0
+-13.4575 2.79772 0
+-14.2812 2.40004 0
+-14.831 1.81816 0
+-15.148 1.27716 0
+-15.3423 0.950485 0
+-15.5507 0.911037 0
+-15.8846 1.11156 0
+-16.3876 1.40358 0
+-17.0143 1.59285 0
+-17.6439 1.51487 0
+-18.1221 1.10269 0
+-18.3191 0.418663 0
+-18.1788 -0.365118 0
+-17.741 -1.03154 0
+-17.128 -1.40189 0
+-16.5001 -1.40301 0
+-16.0011 -1.091 0
+-15.7127 -0.623674 0
+-15.6352 -0.196583 0
+-15.6971 0.0287929 0
+-15.7869 -0.0241921 0
+-15.7905 -0.333922 0
+-15.6227 -0.802531 0
+-15.2446 -1.29688 0
+-14.6669 -1.68835 0
+-13.9467 -1.87932 0
+-13.1786 -1.81684 0
+-12.4797 -1.50202 0
+-11.9655 -1.00063 0
+-11.7141 -0.449471 0
+-11.7279 -0.0430196 0
+-11.9092 0.0136721 0
+-12.0687 -0.417237 0
+-11.9751 -1.32509 0
+-11.4351 -2.50913 0
+-10.373 -3.61306 0
+-8.87502 -4.24064 0
+-7.17192 -4.11405 0
+-5.56174 -3.20555 0
+-4.30316 -1.77382 0
+-3.52392 -0.274987 0
+-3.18132 0.820767 0
+-3.08538 1.22286 0
+-1.6939 0.929368 0
+-0.890669 0.288302 0
+-0.890669 0.283798 0
+-2.79048 -0.313718 0
+-5.56823 -0.522796 0
+-11.1381 -0.804805 0
+-11.4103 -1.06575 0
+-11.9414 -0.87532 0
+-12.7915 0.00771566 0
+-13.9067 1.32838 0
+-15.0978 2.53926 0
+-16.0924 3.1108 0
+-16.6391 2.79558 0
+-16.6145 1.72895 0
+-16.0777 0.336827 0
+-15.2445 -0.882612 0
+-14.3956 -1.58182 0
+-13.7636 -1.68073 0
+-13.4553 -1.33482 0
+-13.4431 -0.795366 0
+-13.6185 -0.2569 0
+-13.8714 0.219349 0
+-14.147 0.674762 0
+-14.4523 1.15585 0
+-14.8193 1.62977 0
+-15.2567 1.97605 0
+-15.7273 2.05968 0
+-16.1648 1.83221 0
+-16.5168 1.38819 0
+-16.783 0.933604 0
+-17.0209 0.680083 0
+-17.3123 0.726066 0
+-17.71 0.996346 0
+-18.1962 1.27792 0
+-18.6791 1.33349 0
+-19.0305 1.02898 0
+-19.1457 0.404448 0
+-18.9923 -0.349025 0
+-18.6229 -0.991097 0
+-18.1452 -1.35461 0
+-17.668 -1.4217 0
+-17.2516 -1.31495 0
+-16.8905 -1.21368 0
+-16.5352 -1.2471 0
+-16.1362 -1.42661 0
+-15.6838 -1.65369 0
+-15.2183 -1.79284 0
+-14.8058 -1.75914 0
+-14.4976 -1.56336 0
+-14.3006 -1.28741 0
+-14.1789 -1.01065 0
+-14.0851 -0.740404 0
+-14.0005 -0.39678 0
+-13.9586 0.133089 0
+-14.033 0.90326 0
+-14.2975 1.83848 0
+-14.7808 2.73395 0
+-15.4422 3.33255 0
+-16.1825 3.4406 0
+-16.8827 3.02125 0
+-17.4494 2.2175 0
+-17.8446 1.29668 0
+-18.089 0.547484 0
+-18.2439 0.178425 0
+-18.3836 0.254288 0
+-18.5675 0.681657 0
+-18.819 1.24042 0
+-19.1136 1.64806 0
+-19.3781 1.63775 0
+-19.5017 1.03239 0
+-19.3599 -0.198741 0
+-18.8513 -1.9129 0
+-17.9375 -3.81056 0
+-16.6705 -5.49898 0
+-15.1981 -6.58849 0
+-13.7399 -6.79517 0
+-12.541 -6.02044 0
+-11.8126 -4.38362 0
+-11.6786 -2.19632 0
+-12.1435 0.115769 0
+-13.0912 2.12103 0
+-14.3168 3.48815 0
+-15.5788 4.06015 0
+-16.6598 3.87872 0
+-17.4171 3.15738 0
+-17.8133 2.2143 0
+-17.9182 1.3821 0
+-17.8828 0.915089 0
+-17.8883 0.916469 0
+-18.0841 1.30744 0
+-18.5342 1.85367 0
+-19.1896 2.24826 0
+-19.9022 2.22748 0
+-20.4764 1.6768 0
+-20.7403 0.682575 0
+-20.6099 -0.495517 0
+-20.119 -1.52237 0
+-19.4057 -2.11526 0
+-18.6607 -2.14802 0
+-18.0621 -1.68961 0
+-17.72 -0.965748 0
+-17.651 -0.265569 0
+-17.7861 0.163908 0
+-18.0033 0.192998 0
+-18.168 -0.169195 0
+-18.1668 -0.803751 0
+-17.9271 -1.53663 0
+-17.4257 -2.18973 0
+-16.6929 -2.61209 0
+-15.8142 -2.69554 0
+-14.9254 -2.39083 0
+-14.1911 -1.73493 0
+-13.7608 -0.879737 0
+-13.7103 -0.0935447 0
+-13.9905 0.293842 0
+-14.4135 0.0057598 0
+-14.694 -1.04454 0
+-14.5404 -2.66277 0
+-13.762 -4.39145 0
+-12.3475 -5.6551 0
+-10.4761 -5.98546 0
+-8.45377 -5.22793 0
+-6.60199 -3.62559 0
+-5.14813 -1.72885 0
+-4.16423 -0.163133 0
+-3.58048 0.639102 0
+-1.73054 0.62398 0
+-0.808996 0.134087 0
+-0.808996 0.211517 0
+-2.73963 -0.259588 0
+-5.45568 -0.40427 0
+-10.8953 -0.558905 0
+-11.3804 -0.580565 0
+-12.1964 -0.0593303 0
+-13.3286 1.13986 0
+-14.6294 2.62921 0
+-15.8387 3.74857 0
+-16.663 3.93502 0
+-16.8878 3.02047 0
+-16.4736 1.3147 0
+-15.5834 -0.553309 0
+-14.5261 -1.93992 0
+-13.6347 -2.47323 0
+-13.1381 -2.17732 0
+-13.0865 -1.38644 0
+-13.3634 -0.518486 0
+-13.7714 0.15108 0
+-14.1402 0.58813 0
+-14.3983 0.932901 0
+-14.5765 1.33403 0
+-14.753 1.80629 0
+-14.9847 2.20777 0
+-15.2689 2.3439 0
+-15.5559 2.11917 0
+-15.7959 1.62822 0
+-15.9846 1.12231 0
+-16.1736 0.868992 0
+-16.4382 0.990732 0
+-16.824 1.38209 0
+-17.3042 1.75812 0
+-17.7785 1.80784 0
+-18.1145 1.36495 0
+-18.21 0.499916 0
+-18.0428 -0.516194 0
+-17.6803 -1.35356 0
+-17.2438 -1.79113 0
+-16.8474 -1.81815 0
+-16.5453 -1.61705 0
+-16.3159 -1.443 0
+-16.0902 -1.47288 0
+-15.805 -1.71175 0
+-15.4503 -2.0084 0
+-15.0783 -2.16483 0
+-14.7716 -2.06583 0
+-14.5907 -1.74427 0
+-14.5357 -1.34242 0
+-14.5469 -0.999467 0
+-14.5434 -0.743901 0
+-14.4752 -0.464985 0
+-14.3559 0.0138337 0
+-14.2564 0.803754 0
+-14.2638 1.84587 0
+-14.4327 2.9028 0
+-14.7568 3.65674 0
+-15.1759 3.8597 0
+-15.608 3.45329 0
+-15.9866 2.59607 0
+-16.2809 1.59105 0
+-16.493 0.759536 0
+-16.6417 0.327192 0
+-16.7505 0.363038 0
+-16.8385 0.769647 0
+-16.9161 1.31808 0
+-16.9805 1.71242 0
+-17.0081 1.66535 0
+-16.949 0.973307 0
+-16.7329 -0.414893 0
+-16.2942 -2.3516 0
+-15.6061 -4.4986 0
+-14.7066 -6.39846 0
+-13.7052 -7.58989 0
+-12.7672 -7.73321 0
+-12.0777 -6.70994 0
+-11.7947 -4.6666 0
+-12.0041 -1.98691 0
+-12.6914 0.803052 0
+-13.7406 3.1702 0
+-14.9614 4.70895 0
+-16.1362 5.23503 0
+-17.0732 4.81563 0
+-17.6505 3.73475 0
+-17.8446 2.40843 0
+-17.7336 1.27102 0
+-17.4748 0.656289 0
+-17.2592 0.70087 0
+-17.2509 1.29913 0
+-17.5302 2.13305 0
+-18.0621 2.78014 0
+-18.7046 2.86995 0
+-19.259 2.23124 0
+-19.5432 0.966781 0
+-19.4585 -0.58029 0
+-19.0233 -1.9575 0
+-18.3626 -2.77603 0
+-17.6581 -2.8525 0
+-17.085 -2.26266 0
+-16.7583 -1.29249 0
+-16.707 -0.316865 0
+-16.8803 0.337245 0
+-17.175 0.487613 0
+-17.4685 0.124364 0
+-17.6463 -0.625977 0
+-17.6165 -1.56646 0
+-17.3194 -2.48683 0
+-16.7389 -3.19256 0
+-15.9187 -3.51575 0
+-14.9742 -3.33525 0
+-14.085 -2.62419 0
+-13.4531 -1.5116 0
+-13.2333 -0.313357 0
+-13.4577 0.518261 0
+-13.9938 0.54178 0
+-14.5634 -0.474856 0
+-14.8274 -2.39879 0
+-14.5035 -4.71535 0
+-13.4704 -6.68825 0
+-11.8106 -7.64527 0
+-9.77583 -7.26266 0
+-7.6935 -5.70792 0
+-5.85951 -3.56284 0
+-4.46609 -1.55656 0
+-3.59347 -0.233518 0
+-1.57242 0.297009 0
+-0.685901 0.106247 0
+-0.685901 0.288186 0
+-2.5026 -0.191823 0
+-4.95644 -0.263409 0
+-9.84308 -0.278058 0
+-10.3761 -0.0475301 0
+-11.2234 0.787904 0
+-12.3134 2.22986 0
+-13.4525 3.76832 0
+-14.3755 4.67165 0
+-14.8342 4.39365 0
+-14.695 2.88132 0
+-14.0068 0.626426 0
+-12.9997 -1.56036 0
+-12.009 -2.93064 0
+-11.3476 -3.13458 0
+-11.1856 -2.33939 0
+-11.4924 -1.07956 0
+-12.072 0.0611103 0
+-12.668 0.746999 0
+-13.0838 1.00394 0
+-13.256 1.10513 0
+-13.2488 1.32682 0
+-13.1854 1.74287 0
+-13.1652 2.18766 0
+-13.2172 2.39589 0
+-13.3086 2.21052 0
+-13.3931 1.71277 0
+-13.4593 1.18849 0
+-13.5449 0.95458 0
+-13.7104 1.15622 0
+-13.9908 1.66255 0
+-14.3595 2.12682 0
+-14.728 2.17633 0
+-14.9842 1.62115 0
+-15.0476 0.563263 0
+-14.9107 -0.653038 0
+-14.6443 -1.61997 0
+-14.361 -2.07446 0
+-14.1576 -2.02147 0
+-14.0674 -1.70733 0
+-14.0479 -1.4625 0
+-14.0137 -1.50706 0
+-13.8934 -1.83206 0
+-13.6775 -2.22424 0
+-13.4273 -2.41503 0
+-13.2373 -2.25585 0
+-13.1759 -1.80568 0
+-13.2416 -1.27674 0
+-13.3617 -0.879347 0
+-13.4338 -0.671819 0
+-13.383 -0.515735 0
+-13.2013 -0.167917 0
+-12.9457 0.54817 0
+-12.7022 1.60236 0
+-12.5399 2.74055 0
+-12.4844 3.60119 0
+-12.5196 3.89487 0
+-12.6111 3.54479 0
+-12.7298 2.71482 0
+-12.8592 1.72043 0
+-12.9838 0.884148 0
+-13.0771 0.420476 0
+-13.1079 0.393839 0
+-13.0521 0.71385 0
+-12.9061 1.17203 0
+-12.6911 1.49742 0
+-12.4394 1.41374 0
+-12.1688 0.702682 0
+-11.8718 -0.711891 0
+-11.5333 -2.69011 0
+-11.1522 -4.87972 0
+-10.7535 -6.7972 0
+-10.389 -7.95431 0
+-10.1305 -7.99177 0
+-10.0549 -6.78552 0
+-10.2255 -4.49601 0
+-10.6702 -1.54223 0
+-11.3659 1.49883 0
+-12.2365 4.04074 0
+-13.1658 5.63828 0
+-14.0233 6.09253 0
+-14.6918 5.48413 0
+-15.0923 4.13521 0
+-15.2017 2.51786 0
+-15.0615 1.13085 0
+-14.7725 0.367259 0
+-14.4717 0.400093 0
+-14.2929 1.12032 0
+-14.3205 2.16063 0
+-14.5563 3.01599 0
+-14.9168 3.23046 0
+-15.2649 2.57931 0
+-15.4644 1.16623 0
+-15.4327 -0.611999 0
+-15.1694 -2.22079 0
+-14.7501 -3.19529 0
+-14.2926 -3.31003 0
+-13.9127 -2.64254 0
+-13.6899 -1.51527 0
+-13.6524 -0.354329 0
+-13.7819 0.466717 0
+-14.0287 0.734384 0
+-14.327 0.422702 0
+-14.6029 -0.350106 0
+-14.7752 -1.39418 0
+-14.759 -2.50304 0
+-14.4813 -3.47019 0
+-13.912 -4.08512 0
+-13.0975 -4.14975 0
+-12.1773 -3.54436 0
+-11.3604 -2.32852 0
+-10.8589 -0.814868 0
+-10.8006 0.459964 0
+-11.16 0.901194 0
+-11.7451 0.110315 0
+-12.2534 -1.89057 0
+-12.3756 -4.59308 0
+-11.906 -7.15786 0
+-10.8098 -8.74144 0
+-9.2263 -8.84621 0
+-7.41323 -7.52099 0
+-5.66632 -5.30975 0
+-4.24957 -2.97331 0
+-3.36039 -1.1227 0
+-1.40449 0.064916 0
+-0.618339 0.211093 0
+-0.618339 0.465906 0
+-2.17528 -0.132851 0
+-4.26801 -0.145121 0
+-8.38962 -0.0484921 0
+-8.81284 0.375684 0
+-9.45067 1.42574 0
+-10.204 2.98321 0
+-10.8927 4.45695 0
+-11.3182 5.09718 0
+-11.3371 4.41256 0
+-10.9223 2.46651 0
+-10.1899 -0.105942 0
+-9.37518 -2.37509 0
+-8.75693 -3.5489 0
+-8.55376 -3.33775 0
+-8.83524 -2.0579 0
+-9.49304 -0.421758 0
+-10.2901 0.85819 0
+-10.9658 1.4227 0
+-11.3445 1.38258 0
+-11.3938 1.15444 0
+-11.2085 1.14158 0
+-10.9375 1.47179 0
+-10.7008 1.951 0
+-10.5448 2.23985 0
+-10.4499 2.11562 0
+-10.3754 1.6383 0
+-10.3037 1.11679 0
+-10.2555 0.906388 0
+-10.271 1.17175 0
+-10.3746 1.76609 0
+-10.5493 2.30152 0
+-10.7389 2.36593 0
+-10.8747 1.75703 0
+-10.9127 0.601267 0
+-10.8591 -0.706648 0
+-10.7705 -1.70857 0
+-10.7256 -2.11942 0
+-10.7814 -1.96566 0
+-10.9389 -1.54982 0
+-11.138 -1.26339 0
+-11.2884 -1.35668 0
+-11.3211 -1.79933 0
+-11.2312 -2.31416 0
+-11.0835 -2.56276 0
+-10.9755 -2.36378 0
+-10.9792 -1.80198 0
+-11.0965 -1.1595 0
+-11.2562 -0.719668 0
+-11.3526 -0.575422 0
+-11.3004 -0.567922 0
+-11.0739 -0.394431 0
+-10.7098 0.184169 0
+-10.2797 1.17216 0
+-9.85378 2.31467 0
+-9.48036 3.22778 0
+-9.18327 3.59778 0
+-8.97243 3.33395 0
+-8.8528 2.59519 0
+-8.82053 1.68816 0
+-8.84606 0.909679 0
+-8.865 0.439418 0
+-8.8091 0.337939 0
+-8.62213 0.52688 0
+-8.28771 0.837616 0
+-7.84456 1.05427 0
+-7.36624 0.935414 0
+-6.91401 0.250459 0
+-6.53208 -1.09382 0
+-6.26937 -2.95282 0
+-6.17714 -4.97196 0
+-6.2862 -6.68815 0
+-6.58783 -7.65267 0
+-7.03401 -7.54559 0
+-7.55572 -6.2638 0
+-8.08739 -3.96434 0
+-8.58495 -1.04467 0
+-9.03185 1.94573 0
+-9.43471 4.4436 0
+-9.81325 6.01682 0
+-10.1869 6.46618 0
+-10.56 5.85724 0
+-10.9116 4.48681 0
+-11.1969 2.80315 0
+-11.3641 1.29801 0
+-11.38 0.383172 0
+-11.2508 0.270883 0
+-11.0238 0.893353 0
+-10.7685 1.90538 0
+-10.5475 2.79495 0
+-10.3941 3.07709 0
+-10.3087 2.49385 0
+-10.2703 1.12787 0
+-10.255 -0.627343 0
+-10.2468 -2.22898 0
+-10.2389 -3.20316 0
+-10.2279 -3.3211 0
+-10.2092 -2.66116 0
+-10.1806 -1.54386 0
+-10.1494 -0.385564 0
+-10.1383 0.455643 0
+-10.1827 0.77876 0
+-10.3164 0.55635 0
+-10.5497 -0.116769 0
+-10.8479 -1.09593 0
+-11.1219 -2.22912 0
+-11.2428 -3.34925 0
+-11.0851 -4.24287 0
+-10.5834 -4.6514 0
+-9.77991 -4.34786 0
+-8.83165 -3.27678 0
+-7.96635 -1.68017 0
+-7.39879 -0.107594 0
+-7.24388 0.74628 0
+-7.46648 0.332919 0
+-7.89122 -1.46584 0
+-8.26692 -4.21738 0
+-8.35666 -7.06811 0
+-8.01594 -9.08216 0
+-7.23265 -9.6295 0
+-6.1238 -8.62984 0
+-4.90067 -6.53288 0
+-3.81894 -4.05503 0
+-3.1255 -1.81614 0
+-1.34192 -0.0571553 0
+-0.633496 0.375944 0
+-0.633496 0.662488 0
+-1.84174 -0.0951725 0
+-3.56991 -0.0750675 0
+-6.91977 0.0789909 0
+-7.13818 0.59409 0
+-7.42433 1.71189 0
+-7.68019 3.23907 0
+-7.7879 4.56467 0
+-7.66642 4.9757 0
+-7.30947 4.05561 0
+-6.79572 1.95275 0
+-6.27192 -0.629733 0
+-5.9146 -2.73242 0
+-5.8767 -3.58679 0
+-6.23157 -2.98288 0
+-6.93512 -1.35435 0
+-7.82858 0.471695 0
+-8.68913 1.71874 0
+-9.31145 2.04501 0
+-9.5826 1.65373 0
+-9.51371 1.08556 0
+-9.21446 0.842322 0
+-8.82809 1.08543 0
+-8.46538 1.58828 0
+-8.17151 1.94598 0
+-7.93584 1.87996 0
+-7.72739 1.42985 0
+-7.52783 0.917225 0
+-7.34264 0.7212 0
+-7.19058 1.01969 0
+-7.08605 1.66155 0
+-7.02963 2.24511 0
+-7.01113 2.34743 0
+-7.01976 1.76565 0
+-7.05435 0.635865 0
+-7.12855 -0.632452 0
+-7.26736 -1.56976 0
+-7.494 -1.89278 0
+-7.81056 -1.6491 0
+-8.18303 -1.17735 0
+-8.54331 -0.90311 0
+-8.81315 -1.08684 0
+-8.94106 -1.67142 0
+-8.93182 -2.32341 0
+-8.84773 -2.64685 0
+-8.77689 -2.43463 0
+-8.78461 -1.79425 0
+-8.87641 -1.0677 0
+-8.99441 -0.601665 0
+-9.04787 -0.521964 0
+-8.9577 -0.658091 0
+-8.68934 -0.662796 0
+-8.25872 -0.246454 0
+-7.71586 0.629305 0
+-7.12425 1.72306 0
+-6.54645 2.64998 0
+-6.03653 3.08787 0
+-5.63581 2.93323 0
+-5.3682 2.32758 0
+-5.23194 1.55191 0
+-5.18471 0.862447 0
+-5.13641 0.391121 0
+-5.02433 0.225853 0
+-4.78159 0.284145 0
+-4.3803 0.43632 0
+-3.86134 0.535309 0
+-3.30805 0.382121 0
+-2.76052 -0.297069 0
+-2.28973 -1.56461 0
+-2.03029 -3.21226 0
+-2.12469 -4.87755 0
+-2.6403 -6.17254 0
+-3.51894 -6.77403 0
+-4.58553 -6.47901 0
+-5.60693 -5.2424 0
+-6.37166 -3.19961 0
+-6.75803 -0.658295 0
+-6.76817 1.95586 0
+-6.52122 4.19665 0
+-6.21286 5.70847 0
+-6.05246 6.30577 0
+-6.19351 5.99829 0
+-6.67871 4.97201 0
+-7.42076 3.5452 0
+-8.22977 2.10703 0
+-8.87901 1.03241 0
+-9.1829 0.574772 0
+-9.05631 0.766765 0
+-8.53501 1.38408 0
+-7.75646 2.01639 0
+-6.91458 2.23521 0
+-6.20615 1.78542 0
+-5.78264 0.704366 0
+-5.71618 -0.693809 0
+-5.98463 -1.96053 0
+-6.47958 -2.70821 0
+-7.03798 -2.7627 0
+-7.49192 -2.20722 0
+-7.7222 -1.31358 0
+-7.69714 -0.410617 0
+-7.48141 0.239904 0
+-7.21102 0.508378 0
+-7.04415 0.389476 0
+-7.10345 -0.0574652 0
+-7.42693 -0.772459 0
+-7.94245 -1.71361 0
+-8.47793 -2.81377 0
+-8.81049 -3.91031 0
+-8.74318 -4.71871 0
+-8.18267 -4.90838 0
+-7.18487 -4.27457 0
+-5.94569 -2.91935 0
+-4.73772 -1.31556 0
+-3.8184 -0.173042 0
+-3.34651 -0.138972 0
+-3.338 -1.47435 0
+-3.67284 -3.88253 0
+-4.14411 -6.59685 0
+-4.52843 -8.69784 0
+-4.65544 -9.50248 0
+-4.45936 -8.82592 0
+-4.00105 -6.9912 0
+-3.45276 -4.60332 0
+-3.04316 -2.22573 0
+-1.41331 -0.129738 0
+-0.712109 0.501603 0
+-0.712109 0.803262 0
+-1.55593 -0.0797329 0
+-2.98114 -0.0554428 0
+-5.6969 0.0989731 0
+-5.69941 0.596609 0
+-5.62394 1.63642 0
+-5.39318 3.00831 0
+-4.97402 4.14551 0
+-4.41566 4.41733 0
+-3.84401 3.48396 0
+-3.41885 1.52759 0
+-3.27881 -0.76977 0
+-3.49959 -2.51164 0
+-4.07624 -3.01014 0
+-4.92716 -2.13196 0
+-5.91254 -0.36897 0
+-6.86353 1.42269 0
+-7.62103 2.47624 0
+-8.07706 2.50105 0
+-8.20337 1.78004 0
+-8.05191 0.934101 0
+-7.72514 0.515549 0
+-7.33057 0.690852 0
+-6.94308 1.2008 0
+-6.59206 1.59495 0
+-6.27322 1.56111 0
+-5.97069 1.12732 0
+-5.67265 0.619182 0
+-5.37433 0.422884 0
+-5.07522 0.720575 0
+-4.781 1.36733 0
+-4.51151 1.97562 0
+-4.30455 2.14047 0
+-4.20738 1.66848 0
+-4.2587 0.68718 0
+-4.47233 -0.418822 0
+-4.83203 -1.21006 0
+-5.29727 -1.42753 0
+-5.81268 -1.13369 0
+-6.31543 -0.674605 0
+-6.74282 -0.475716 0
+-7.045 -0.784663 0
+-7.20108 -1.51534 0
+-7.22959 -2.2949 0
+-7.1837 -2.69274 0
+-7.12877 -2.48955 0
+-7.11102 -1.812 0
+-7.13415 -1.04457 0
+-7.15782 -0.578003 0
+-7.11783 -0.561953 0
+-6.95475 -0.821168 0
+-6.63515 -0.982392 0
+-6.1588 -0.722811 0
+-5.55559 0.0260942 0
+-4.88025 1.04773 0
+-4.20449 1.97421 0
+-3.60278 2.48616 0
+-3.13294 2.46339 0
+-2.81911 2.01375 0
+-2.64626 1.37906 0
+-2.55933 0.775515 0
+-2.44557 0.277358 0
+-2.32195 0.10223 0
+-2.12491 0.0871067 0
+-1.8143 0.125712 0
+-1.41977 0.140776 0
+-1.01062 -0.0270253 0
+-0.478748 -0.828942 0
+0.0826966 -2.12606 0
+0.420303 -3.54987 0
+0.268766 -4.72601 0
+-0.497454 -5.40632 0
+-1.78652 -5.48497 0
+-3.31069 -4.95484 0
+-4.68701 -3.86608 0
+-5.57072 -2.31589 0
+-5.77129 -0.457728 0
+-5.31337 1.49794 0
+-4.42791 3.31119 0
+-3.48197 4.76253 0
+-2.86776 5.69156 0
+-2.88009 6.01062 0
+-3.61841 5.71033 0
+-4.94734 4.87414 0
+-6.53361 3.69329 0
+-7.94966 2.44846 0
+-8.80798 1.43308 0
+-8.87861 0.837398 0
+-8.15269 0.658157 0
+-6.83738 0.701087 0
+-5.29016 0.687996 0
+-3.91471 0.409966 0
+-3.04888 -0.161465 0
+-2.8746 -0.868089 0
+-3.37321 -1.46192 0
+-4.33941 -1.74201 0
+-5.45126 -1.65085 0
+-6.37514 -1.28335 0
+-6.87096 -0.81776 0
+-6.862 -0.419574 0
+-6.44684 -0.17526 0
+-5.85332 -0.085138 0
+-5.35586 -0.107984 0
+-5.18536 -0.227964 0
+-5.45623 -0.501588 0
+-6.12683 -1.04301 0
+-7.00319 -1.9374 0
+-7.78876 -3.12474 0
+-8.17094 -4.33653 0
+-7.92086 -5.15845 0
+-6.97295 -5.22248 0
+-5.45458 -4.43772 0
+-3.65393 -3.11622 0
+-1.93702 -1.88994 0
+-0.642755 -1.43324 0
+0.0100442 -2.12714 0
+-0.0236086 -3.84888 0
+-0.612911 -6.00755 0
+-1.50004 -7.81072 0
+-2.38582 -8.6167 0
+-3.02738 -8.18436 0
+-3.31516 -6.70342 0
+-3.29856 -4.61992 0
+-3.14491 -2.37939 0
+-1.57947 -0.229143 0
+-0.816541 0.516812 0
+-0.816541 0.848314 0
+-1.33829 -0.0790218 0
+-2.54802 -0.0702385 0
+-4.82733 0.0431773 0
+-4.67442 0.443698 0
+-4.34129 1.30329 0
+-3.77839 2.4454 0
+-3.02919 3.39631 0
+-2.24665 3.6348 0
+-1.6493 2.8866 0
+-1.43729 1.31558 0
+-1.71286 -0.4942 0
+-2.44431 -1.78019 0
+-3.48567 -1.96878 0
+-4.63451 -0.983125 0
+-5.69585 0.692368 0
+-6.52748 2.25432 0
+-7.05921 3.00797 0
+-7.29049 2.73233 0
+-7.27307 1.76262 0
+-7.08467 0.745698 0
+-6.80113 0.232013 0
+-6.47648 0.366199 0
+-6.13758 0.8619 0
+-5.79255 1.24992 0
+-5.44362 1.21219 0
+-5.09361 0.777304 0
+-4.74226 0.267836 0
+-4.37983 0.0604546 0
+-3.99051 0.331255 0
+-3.57168 0.948506 0
+-3.15682 1.56076 0
+-2.82008 1.80373 0
+-2.65251 1.50091 0
+-2.72126 0.75593 0
+-3.03622 -0.10386 0
+-3.54398 -0.702298 0
+-4.15057 -0.820944 0
+-4.75653 -0.527738 0
+-5.28399 -0.147144 0
+-5.6877 -0.0720084 0
+-5.95496 -0.517405 0
+-6.09939 -1.3709 0
+-6.15142 -2.24287 0
+-6.14816 -2.696 0
+-6.12248 -2.51523 0
+-6.09187 -1.84262 0
+-6.05174 -1.08469 0
+-5.97757 -0.652172 0
+-5.8347 -0.704826 0
+-5.58959 -1.06628 0
+-5.21748 -1.3545 0
+-4.70859 -1.2317 0
+-4.0772 -0.605295 0
+-3.36981 0.340336 0
+-2.66299 1.26739 0
+-2.04392 1.86709 0
+-1.57722 1.99669 0
+-1.27542 1.71195 0
+-1.09738 1.20102 0
+-0.980981 0.659119 0
+-0.791097 0.0874735 0
+-0.69859 0.00972349 0
+-0.613455 0.00197194 0
+-0.489921 0.002177 0
+-0.347434 -0.0017103 0
+-0.278457 -0.0960023 0
+0.155933 -1.26333 0
+0.773784 -2.74391 0
+1.19923 -3.97531 0
+1.06205 -4.58883 0
+0.189893 -4.53417 0
+-1.30554 -3.98953 0
+-3.06523 -3.19515 0
+-4.6133 -2.31802 0
+-5.52461 -1.40458 0
+-5.56921 -0.413125 0
+-4.78913 0.717852 0
+-3.48812 2.01018 0
+-2.14263 3.41704 0
+-1.26055 4.80948 0
+-1.2262 5.97628 0
+-2.17592 6.66005 0
+-3.94491 6.64312 0
+-6.10755 5.85593 0
+-8.10217 4.44308 0
+-9.40008 2.731 0
+-9.663 1.10031 0
+-8.83953 -0.165316 0
+-7.17568 -0.962762 0
+-5.13934 -1.34834 0
+-3.28178 -1.4476 0
+-2.07854 -1.3647 0
+-1.79651 -1.15012 0
+-2.42568 -0.832748 0
+-3.69674 -0.470951 0
+-5.17896 -0.168621 0
+-6.42501 -0.0372971 0
+-7.11193 -0.130846 0
+-7.13082 -0.400685 0
+-6.59917 -0.706911 0
+-5.7997 -0.884601 0
+-5.07634 -0.831348 0
+-4.72601 -0.578297 0
+-4.91479 -0.312801 0
+-5.63258 -0.325224 0
+-6.69166 -0.878324 0
+-7.77017 -2.04623 0
+-8.49464 -3.61205 0
+-8.54466 -5.10843 0
+-7.7513 -6.01584 0
+-6.1582 -6.03083 0
+-4.02287 -5.25154 0
+-1.75463 -4.15819 0
+0.194102 -3.38197 0
+1.45083 -3.38387 0
+1.82401 -4.22207 0
+1.35147 -5.535 0
+0.279212 -6.73846 0
+-1.02541 -7.31208 0
+-2.19836 -7.01141 0
+-2.99499 -5.90678 0
+-3.35057 -4.26434 0
+-3.36041 -2.36954 0
+-1.7667 -0.393306 0
+-0.910367 0.410412 0
+-0.910367 0.801219 0
+-1.1833 -0.0824533 0
+-2.2573 -0.0957101 0
+-4.2818 -0.0388796 0
+-4.07101 0.23291 0
+-3.64422 0.876497 0
+-2.97557 1.77675 0
+-2.15353 2.57428 0
+-1.3806 2.86186 0
+-0.907453 2.41346 0
+-0.930553 1.33868 0
+-1.50596 0.0812046 0
+-2.52393 -0.762225 0
+-3.75463 -0.738074 0
+-4.93794 0.200192 0
+-5.87171 1.62614 0
+-6.46144 2.84405 0
+-6.72038 3.26692 0
+-6.73272 2.74466 0
+-6.60309 1.63299 0
+-6.41409 0.556698 0
+-6.20545 0.0233744 0
+-5.97837 0.139117 0
+-5.7173 0.600833 0
+-5.414 0.946621 0
+-5.0786 0.876783 0
+-4.73155 0.430253 0
+-4.38402 -0.0796869 0
+-4.02416 -0.299406 0
+-3.62499 -0.0679164 0
+-3.17505 0.498566 0
+-2.71064 1.09635 0
+-2.32128 1.41437 0
+-2.11802 1.29765 0
+-2.18063 0.818539 0
+-2.51523 0.230744 0
+-3.04819 -0.169344 0
+-3.65882 -0.210314 0
+-4.22981 0.0432564 0
+-4.68612 0.309158 0
+-5.00659 0.248465 0
+-5.21291 -0.31108 0
+-5.34516 -1.23866 0
+-5.43714 -2.15089 0
+-5.50393 -2.62921 0
+-5.54237 -2.47679 0
+-5.53874 -1.84625 0
+-5.47734 -1.1461 0
+-5.34593 -0.783587 0
+-5.13615 -0.914602 0
+-4.83933 -1.3631 0
+-4.44199 -1.75184 0
+-3.92967 -1.74402 0
+-3.30375 -1.23121 0
+-2.60024 -0.363177 0
+-1.89361 0.560758 0
+-1.27625 1.24973 0
+-0.817488 1.53793 0
+-0.521645 1.41611 0
+-0.313812 0.993184 0
+-0.0933281 0.438635 0
+-0.0208872 0.0150326 0
+-0.0120813 0.000917549 0
+-0.0102063 9.69373e-05 0
+-0.00809131 6.20444e-05 0
+-0.00849714 -0.00130448 0
+-0.0636469 -0.0408526 0
+0.110829 -1.43781 0
+0.595572 -3.22865 0
+0.958091 -4.33783 0
+0.78877 -4.41951 0
+-0.0950277 -3.65037 0
+-1.57976 -2.5048 0
+-3.30509 -1.46981 0
+-4.80001 -0.823101 0
+-5.64944 -0.555154 0
+-5.63396 -0.428606 0
+-4.80258 -0.113524 0
+-3.46131 0.668914 0
+-2.08453 2.04025 0
+-1.17682 3.90177 0
+-1.12269 5.92216 0
+-2.06517 7.60253 0
+-3.8509 8.42885 0
+-6.06357 8.06861 0
+-8.14027 6.51978 0
+-9.53628 4.12701 0
+-9.88622 1.45026 0
+-9.11151 -0.940035 0
+-7.44395 -2.63031 0
+-5.35796 -3.43434 0
+-3.42873 -3.37682 0
+-2.16185 -2.63159 0
+-1.84694 -1.46502 0
+-2.48122 -0.198471 0
+-3.78732 0.835144 0
+-5.31868 1.36274 0
+-6.61357 1.2576 0
+-7.34145 0.597035 0
+-7.39186 -0.350279 0
+-6.88185 -1.21692 0
+-6.09022 -1.67623 0
+-5.35291 -1.56867 0
+-4.9603 -0.970906 0
+-5.08257 -0.190526 0
+-5.73113 0.32333 0
+-6.75527 0.145823 0
+-7.87258 -0.928922 0
+-8.73132 -2.75331 0
+-8.99793 -4.84183 0
+-8.45174 -6.56203 0
+-7.0605 -7.42207 0
+-5.0096 -7.30244 0
+-2.66897 -6.49881 0
+-0.501331 -5.54962 0
+1.06373 -4.94893 0
+1.75169 -4.91003 0
+1.52086 -5.30417 0
+0.566658 -5.78426 0
+-0.752614 -5.9928 0
+-2.04246 -5.72157 0
+-3.00118 -4.94806 0
+-3.49814 -3.76738 0
+-3.5723 -2.29538 0
+-1.90218 -0.599341 0
+-0.968938 0.231985 0
+-0.968938 0.701051 0
+-1.0725 -0.0815408 0
+-2.06355 -0.111233 0
+-3.95284 -0.10141 0
+-3.7783 0.0583693 0
+-3.41743 0.515628 0
+-2.85794 1.21727 0
+-2.19278 1.90911 0
+-1.61218 2.28126 0
+-1.33763 2.13892 0
+-1.52648 1.52753 0
+-2.19626 0.75099 0
+-3.20938 0.250893 0
+-4.32603 0.37858 0
+-5.29806 1.17221 0
+-5.95727 2.28535 0
+-6.25964 3.14642 0
+-6.27277 3.28005 0
+-6.12236 2.59425 0
+-5.92809 1.43872 0
+-5.75814 0.386741 0
+-5.61804 -0.116716 0
+-5.47237 -0.00655649 0
+-5.28184 0.410306 0
+-5.03321 0.697992 0
+-4.74532 0.588885 0
+-4.45038 0.135319 0
+-4.16564 -0.364434 0
+-3.87704 -0.588002 0
+-3.55008 -0.394881 0
+-3.16415 0.112641 0
+-2.74678 0.678972 0
+-2.37969 1.04728 0
+-2.16778 1.08574 0
+-2.1872 0.837956 0
+-2.44373 0.487276 0
+-2.86701 0.253938 0
+-3.3438 0.26648 0
+-3.76972 0.469172 0
+-4.08926 0.628701 0
+-4.30548 0.464685 0
+-4.46179 -0.154771 0
+-4.60783 -1.09262 0
+-4.76853 -1.99019 0
+-4.93319 -2.46454 0
+-5.06597 -2.344 0
+-5.1275 -1.78472 0
+-5.094 -1.1796 0
+-4.96393 -0.913656 0
+-4.75015 -1.12838 0
+-4.46356 -1.64968 0
+-4.09978 -2.11562 0
+-3.64052 -2.20328 0
+-3.07346 -1.79828 0
+-2.41741 -1.01923 0
+-1.73311 -0.123539 0
+-1.10824 0.624865 0
+-0.620327 1.05001 0
+-0.29777 1.09355 0
+-0.109367 0.80478 0
+-0.00911006 0.338379 0
+-0.000985107 0.00690766 0
+-0.000243313 0.000175759 0
+-0.00015521 8.83249e-06 0
+-8.17535e-05 -1.14917e-05 0
+-0.000710704 -0.000675531 0
+-0.0118138 -0.0297495 0
+0.030301 -1.47992 0
+0.221813 -3.42016 0
+0.310744 -4.42676 0
+0.00250896 -4.11127 0
+-0.829938 -2.81793 0
+-2.08629 -1.24845 0
+-3.48588 -0.0702201 0
+-4.67705 0.36807 0
+-5.36089 0.128684 0
+-5.38788 -0.401619 0
+-4.80331 -0.698091 0
+-3.83368 -0.300716 0
+-2.82149 1.02806 0
+-2.12956 3.20983 0
+-2.0389 5.8315 0
+-2.66477 8.2284 0
+-3.91417 9.67825 0
+-5.50113 9.65557 0
+-7.02102 8.03967 0
+-8.0654 5.17139 0
+-8.34362 1.72848 0
+-7.77334 -1.51031 0
+-6.51216 -3.89149 0
+-4.91617 -5.03032 0
+-3.43268 -4.86032 0
+-2.46243 -3.60184 0
+-2.23744 -1.69001 0
+-2.75578 0.31987 0
+-3.79622 1.87559 0
+-5.00619 2.5727 0
+-6.02781 2.27922 0
+-6.61326 1.18248 0
+-6.68861 -0.274921 0
+-6.35077 -1.55476 0
+-5.80937 -2.21763 0
+-5.30576 -2.07227 0
+-5.04219 -1.23447 0
+-5.13772 -0.094997 0
+-5.60952 0.795128 0
+-6.37126 0.907563 0
+-7.24458 -0.0555997 0
+-7.98698 -2.01091 0
+-8.34087 -4.48794 0
+-8.10076 -6.80214 0
+-7.18271 -8.34012 0
+-5.67081 -8.81434 0
+-3.81684 -8.35278 0
+-1.98391 -7.38255 0
+-0.546313 -6.38653 0
+0.22276 -5.6791 0
+0.235274 -5.31668 0
+-0.389596 -5.15939 0
+-1.37641 -5.00599 0
+-2.39757 -4.70041 0
+-3.18639 -4.15925 0
+-3.61093 -3.34284 0
+-3.68148 -2.22482 0
+-1.94362 -0.778341 0
+-0.984238 0.0654018 0
+-0.984238 0.603105 0
+-0.9872 -0.0730684 0
+-1.91861 -0.106709 0
+-3.72147 -0.118327 0
+-3.64201 -0.0210975 0
+-3.45045 0.324074 0
+-3.13825 0.905066 0
+-2.76918 1.54005 0
+-2.47296 1.98503 0
+-2.39748 2.06343 0
+-2.64089 1.77094 0
+-3.19853 1.30863 0
+-3.95415 1.00651 0
+-4.72214 1.14657 0
+-5.32087 1.77095 0
+-5.64148 2.60596 0
+-5.68009 3.18503 0
+-5.52162 3.12158 0
+-5.28799 2.36061 0
+-5.07925 1.22999 0
+-4.93638 0.243862 0
+-4.84005 -0.213037 0
+-4.74038 -0.106232 0
+-4.59638 0.266311 0
+-4.40177 0.503384 0
+-4.18357 0.370679 0
+-3.97779 -0.0704615 0
+-3.80035 -0.541874 0
+-3.63364 -0.754708 0
+-3.43894 -0.589584 0
+-3.18757 -0.138728 0
+-2.89004 0.381436 0
+-2.60202 0.759264 0
+-2.40109 0.884815 0
+-2.34695 0.783815 0
+-2.44907 0.589395 0
+-2.66148 0.466352 0
+-2.9079 0.512897 0
+-3.12187 0.68315 0
+-3.27831 0.785132 0
+-3.39916 0.585545 0
+-3.53296 -0.0209798 0
+-3.72033 -0.90525 0
+-3.96616 -1.74436 0
+-4.23391 -2.1968 0
+-4.46358 -2.11433 0
+-4.60132 -1.64698 0
+-4.623 -1.15792 0
+-4.53919 -0.997467 0
+-4.37994 -1.28763 0
+-4.16989 -1.85973 0
+-3.90952 -2.37598 0
+-3.57477 -2.53804 0
+-3.13641 -2.23664 0
+-2.58764 -1.56799 0
+-1.9618 -0.749383 0
+-1.32855 -0.00838361 0
+-0.7699 0.491364 0
+-0.350171 0.67382 0
+-0.0976131 0.552223 0
+-0.0021537 0.242919 0
+-0.000112385 0.00486634 0
+-1.61269e-05 7.95445e-05 0
+-7.51031e-06 3.31419e-07 0
+-1.03221e-05 -8.84156e-06 0
+-0.000172805 -0.000513093 0
+-0.00284783 -0.0270745 0
+-0.0631882 -1.41958 0
+-0.200686 -3.28267 0
+-0.48597 -4.14148 0
+-0.986801 -3.61044 0
+-1.69935 -2.10538 0
+-2.53577 -0.412028 0
+-3.35669 0.750699 0
+-4.0222 1.03358 0
+-4.436 0.542483 0
+-4.56752 -0.270098 0
+-4.45097 -0.814636 0
+-4.16862 -0.583068 0
+-3.82751 0.686951 0
+-3.53749 2.91981 0
+-3.39181 5.68581 0
+-3.44793 8.28453 0
+-3.70951 9.93982 0
+-4.11588 10.0619 0
+-4.54861 8.47239 0
+-4.86027 5.48306 0
+-4.92119 1.7894 0
+-4.66904 -1.76246 0
+-4.14205 -4.41849 0
+-3.47729 -5.69508 0
+-2.86862 -5.46899 0
+-2.49895 -3.9715 0
+-2.47416 -1.7148 0
+-2.78631 0.632022 0
+-3.32224 2.41151 0
+-3.91299 3.16346 0
+-4.40091 2.76713 0
+-4.69381 1.47538 0
+-4.78481 -0.183916 0
+-4.73491 -1.60466 0
+-4.63348 -2.31906 0
+-4.56018 -2.14557 0
+-4.56619 -1.22846 0
+-4.67616 0.0149705 0
+-4.89822 1.01718 0
+-5.22669 1.23604 0
+-5.63173 0.349441 0
+-6.04415 -1.59849 0
+-6.35234 -4.17975 0
+-6.42441 -6.73007 0
+-6.15433 -8.6102 0
+-5.51398 -9.45469 0
+-4.58471 -9.28206 0
+-3.54783 -8.41942 0
+-2.63177 -7.30259 0
+-2.03449 -6.27638 0
+-1.85396 -5.49721 0
+-2.05744 -4.95591 0
+-2.50337 -4.56006 0
+-3.00474 -4.19904 0
+-3.40327 -3.76072 0
+-3.61966 -3.12645 0
+-3.66 -2.18448 0
+-1.89731 -0.854974 0
+-0.966549 -0.0110164 0
+-0.966549 0.555741 0
+-0.916916 -0.0595214 0
+-1.7927 -0.084617 0
+-3.50832 -0.0892577 0
+-3.53331 0.00389678 0
+-3.53397 0.324726 0
+-3.5006 0.871698 0
+-3.45244 1.49189 0
+-3.43759 1.97019 0
+-3.51317 2.13901 0
+-3.71458 1.97235 0
+-4.02986 1.62391 0
+-4.39415 1.37081 0
+-4.71059 1.463 0
+-4.8897 1.95006 0
+-4.88853 2.6048 0
+-4.72886 3.02536 0
+-4.48414 2.87685 0
+-4.24173 2.1182 0
+-4.06123 1.04949 0
+-3.95174 0.13438 0
+-3.87934 -0.285445 0
+-3.7972 -0.188373 0
+-3.67836 0.147477 0
+-3.531 0.356023 0
+-3.38886 0.228541 0
+-3.28555 -0.173775 0
+-3.23051 -0.59691 0
+-3.20205 -0.783167 0
+-3.16049 -0.631146 0
+-3.07176 -0.227459 0
+-2.92699 0.236663 0
+-2.74746 0.579734 0
+-2.57275 0.710104 0
+-2.43933 0.650399 0
+-2.36233 0.512392 0
+-2.33104 0.435069 0
+-2.32089 0.502748 0
+-2.31455 0.67681 0
+-2.31925 0.789823 0
+-2.36791 0.634206 0
+-2.50041 0.111525 0
+-2.73603 -0.669631 0
+-3.05457 -1.42583 0
+-3.39786 -1.8535 0
+-3.69264 -1.81955 0
+-3.88271 -1.45691 0
+-3.95219 -1.08845 0
+-3.92632 -1.02334 0
+-3.85001 -1.36394 0
+-3.75741 -1.95233 0
+-3.65043 -2.48297 0
+-3.49737 -2.6911 0
+-3.25022 -2.48379 0
+-2.87146 -1.94675 0
+-2.35733 -1.26352 0
+-1.74676 -0.618948 0
+-1.11478 -0.140618 0
+-0.556545 0.115585 0
+-0.166918 0.162595 0
+-0.00392341 0.079925 0
+-0.000279229 0.00122216 0
+-3.84801e-05 -0.00016116 0
+-1.56656e-05 -2.23246e-05 0
+-4.42476e-05 1.96215e-05 0
+-0.000218623 -0.000338761 0
+-0.0032303 -0.0240628 0
+-0.201451 -1.22136 0
+-0.706443 -2.77767 0
+-1.39951 -3.44841 0
+-2.08955 -2.92041 0
+-2.6207 -1.57423 0
+-2.92382 -0.108907 0
+-3.02993 0.856815 0
+-3.04973 1.05337 0
+-3.12402 0.616772 0
+-3.36048 -0.0336315 0
+-3.78027 -0.394846 0
+-4.29825 -0.0650873 0
+-4.7483 1.137 0
+-4.94566 3.11718 0
+-4.76174 5.50188 0
+-4.17962 7.70241 0
+-3.30618 9.06639 0
+-2.3354 9.09116 0
+-1.48013 7.61712 0
+-0.902619 4.90555 0
+-0.6723 1.55908 0
+-0.763066 -1.67169 0
+-1.08207 -4.09948 0
+-1.51052 -5.26663 0
+-1.93859 -5.04092 0
+-2.28421 -3.62589 0
+-2.49781 -1.5012 0
+-2.56233 0.696542 0
+-2.4945 2.34368 0
+-2.34616 3.01512 0
+-2.19832 2.61928 0
+-2.14184 1.4189 0
+-2.24645 -0.0792991 0
+-2.52937 -1.32174 0
+-2.9401 -1.90834 0
+-3.37319 -1.71248 0
+-3.70772 -0.893927 0
+-3.85859 0.165838 0
+-3.81636 0.974952 0
+-3.65519 1.07486 0
+-3.50191 0.196166 0
+-3.47882 -1.62159 0
+-3.647 -4.01156 0
+-3.97824 -6.39883 0
+-4.36912 -8.21933 0
+-4.68958 -9.13423 0
+-4.84086 -9.13078 0
+-4.79389 -8.46639 0
+-4.59151 -7.50497 0
+-4.31797 -6.54992 0
+-4.05589 -5.75929 0
+-3.85413 -5.15768 0
+-3.72043 -4.69377 0
+-3.63686 -4.28261 0
+-3.58427 -3.81331 0
+-3.55927 -3.15145 0
+-3.57416 -2.16959 0
+-1.82069 -0.789574 0
+-0.943485 0.0394565 0
+-0.943485 0.581059 0
+-0.861393 -0.0471043 0
+-1.68159 -0.0568978 0
+-3.29473 -0.0352661 0
+-3.38934 0.0985009 0
+-3.53062 0.466009 0
+-3.70922 1.0503 0
+-3.90532 1.68799 0
+-4.09439 2.15926 0
+-4.25364 2.29826 0
+-4.36611 2.08482 0
+-4.41993 1.67773 0
+-4.40456 1.35543 0
+-4.30981 1.36826 0
+-4.13191 1.77216 0
+-3.88398 2.35687 0
+-3.60198 2.74336 0
+-3.337 2.61187 0
+-3.13411 1.91532 0
+-3.00983 0.9252 0
+-2.94414 0.0686996 0
+-2.8946 -0.334988 0
+-2.82385 -0.259121 0
+-2.72286 0.0464877 0
+-2.61484 0.247995 0
+-2.53853 0.152238 0
+-2.5232 -0.189103 0
+-2.57143 -0.548682 0
+-2.65902 -0.695578 0
+-2.7484 -0.541768 0
+-2.80387 -0.171985 0
+-2.80099 0.233776 0
+-2.72967 0.508417 0
+-2.59322 0.573658 0
+-2.40505 0.462226 0
+-2.18453 0.291867 0
+-1.95344 0.203979 0
+-1.7348 0.284108 0
+-1.55493 0.496944 0
+-1.44648 0.681371 0
+-1.44567 0.633399 0
+-1.5779 0.243754 0
+-1.83957 -0.407961 0
+-2.18912 -1.07628 0
+-2.55491 -1.48771 0
+-2.8605 -1.51396 0
+-3.05628 -1.26113 0
+-3.13977 -1.00495 0
+-3.15184 -1.01127 0
+-3.15036 -1.36542 0
+-3.17644 -1.92625 0
+-3.23212 -2.42729 0
+-3.27865 -2.64457 0
+-3.25164 -2.5108 0
+-3.0857 -2.11269 0
+-2.74004 -1.60918 0
+-2.21664 -1.14235 0
+-1.56782 -0.789442 0
+-0.893526 -0.558704 0
+-0.329383 -0.401548 0
+-0.0196762 -0.229781 0
+-0.0024754 -0.0159786 0
+-0.000409468 -0.00222708 0
+-0.000204942 -0.000226776 0
+-0.000570686 0.000385363 0
+-0.00274834 0.00183889 0
+-0.0169712 -0.00984002 0
+-0.469175 -0.769157 0
+-1.41359 -1.83326 0
+-2.49981 -2.36218 0
+-3.32861 -2.09161 0
+-3.64439 -1.25845 0
+-3.41762 -0.335669 0
+-2.83957 0.27876 0
+-2.24226 0.456066 0
+-1.97136 0.345872 0
+-2.25301 0.248019 0
+-3.0986 0.450744 0
+-4.28356 1.11986 0
+-5.41306 2.2665 0
+-6.05365 3.75777 0
+-5.88533 5.33357 0
+-4.81963 6.63671 0
+-3.03893 7.28568 0
+-0.941542 6.99377 0
+0.985792 5.68978 0
+2.3184 3.57294 0
+2.81198 1.0655 0
+2.45302 -1.31273 0
+1.43816 -3.08462 0
+0.100287 -3.92876 0
+-1.19159 -3.74904 0
+-2.12688 -2.6906 0
+-2.52184 -1.10623 0
+-2.35288 0.527574 0
+-1.75141 1.74222 0
+-0.961886 2.22559 0
+-0.27075 1.92815 0
+0.0769215 1.07123 0
+-0.0491753 0.0467976 0
+-0.624066 -0.746848 0
+-1.47595 -1.05645 0
+-2.34332 -0.845115 0
+-2.96235 -0.274901 0
+-3.15662 0.36011 0
+-2.8995 0.717836 0
+-2.32612 0.501477 0
+-1.68783 -0.442118 0
+-1.26393 -2.04549 0
+-1.26343 -4.01206 0
+-1.75526 -5.907 0
+-2.65243 -7.32216 0
+-3.75238 -8.03428 0
+-4.81186 -8.0713 0
+-5.62322 -7.65502 0
+-6.06428 -7.06391 0
+-6.11162 -6.50258 0
+-5.82487 -6.04604 0
+-5.31706 -5.66548 0
+-4.72302 -5.28781 0
+-4.17169 -4.83394 0
+-3.76429 -4.22071 0
+-3.55993 -3.35581 0
+-3.57008 -2.15945 0
+-1.80801 -0.601219 0
+-0.955575 0.194382 0
+-0.955575 0.665626 0
+-0.826995 -0.0424536 0
+-1.60029 -0.0386091 0
+-3.1126 0.012627 0
+-3.21741 0.203307 0
+-3.40262 0.651223 0
+-3.66454 1.31222 0
+-3.96502 1.98847 0
+-4.23842 2.43265 0
+-4.41375 2.47359 0
+-4.44141 2.11248 0
+-4.30934 1.54566 0
+-4.04115 1.08724 0
+-3.68151 1.00863 0
+-3.28087 1.37151 0
+-2.88763 1.96363 0
+-2.5461 2.40183 0
+-2.292 2.35777 0
+-2.14172 1.76504 0
+-2.08203 0.86551 0
+-2.07203 0.0587039 0
+-2.06177 -0.345255 0
+-2.01841 -0.302476 0
+-1.94346 -0.0284707 0
+-1.86926 0.1738 0
+-1.83777 0.120748 0
+-1.87597 -0.150905 0
+-1.98342 -0.441235 0
+-2.13672 -0.542278 0
+-2.3028 -0.375688 0
+-2.44826 -0.0265236 0
+-2.54123 0.326748 0
+-2.55241 0.519595 0
+-2.46081 0.482065 0
+-2.26281 0.264222 0
+-1.9779 0.0069582 0
+-1.64617 -0.127752 0
+-1.31855 -0.0435123 0
+-1.0463 0.224698 0
+-0.874705 0.509771 0
+-0.838261 0.596954 0
+-0.950889 0.356382 0
+-1.19509 -0.163761 0
+-1.51912 -0.752243 0
+-1.84819 -1.15865 0
+-2.11009 -1.25205 0
+-2.26532 -1.1059 0
+-2.32454 -0.945724 0
+-2.3416 -0.99421 0
+-2.38418 -1.32284 0
+-2.49859 -1.81185 0
+-2.68729 -2.23859 0
+-2.90752 -2.42433 0
+-3.08575 -2.33257 0
+-3.13991 -2.05853 0
+-3.00377 -1.74532 0
+-2.64822 -1.4979 0
+-2.09531 -1.34236 0
+-1.41891 -1.2351 0
+-0.727566 -1.0929 0
+-0.153249 -0.804098 0
+-0.0291453 -0.140083 0
+-0.0104601 -0.0209123 0
+-0.00895848 -0.00172842 0
+-0.0144441 0.00587101 0
+-0.0415192 0.028914 0
+-0.182906 0.131547 0
+-1.15235 0.200284 0
+-2.53671 -0.448901 0
+-3.87201 -1.02688 0
+-4.71476 -1.24886 0
+-4.80393 -1.16929 0
+-4.16172 -0.977873 0
+-3.08536 -0.797598 0
+-2.03791 -0.59139 0
+-1.48065 -0.211382 0
+-1.70512 0.47249 0
+-2.71927 1.46489 0
+-4.22776 2.62835 0
+-5.71836 3.7571 0
+-6.62715 4.66655 0
+-6.52829 5.23471 0
+-5.28418 5.3926 0
+-3.10171 5.10321 0
+-0.472636 4.3647 0
+1.98053 3.23661 0
+3.69544 1.85803 0
+4.32947 0.431468 0
+3.83964 -0.822896 0
+2.47096 -1.71595 0
+0.667804 -2.12561 0
+-1.06081 -2.02043 0
+-2.27901 -1.47241 0
+-2.73045 -0.654789 0
+-2.392 0.189125 0
+-1.46471 0.814929 0
+-0.305077 1.06596 0
+0.685182 0.937889 0
+1.17973 0.576683 0
+1.02315 0.203372 0
+0.2726 0.00370587 0
+-0.828127 0.0442771 0
+-1.93209 0.25885 0
+-2.70137 0.494379 0
+-2.91389 0.572626 0
+-2.53447 0.338415 0
+-1.72819 -0.3048 0
+-0.809257 -1.36105 0
+-0.139508 -2.71524 0
+-0.0105344 -4.14103 0
+-0.551315 -5.36622 0
+-1.69348 -6.17999 0
+-3.20287 -6.52488 0
+-4.76015 -6.51402 0
+-6.05671 -6.35846 0
+-6.87279 -6.24783 0
+-7.11888 -6.25649 0
+-6.83907 -6.32585 0
+-6.18439 -6.32017 0
+-5.36603 -6.10617 0
+-4.59877 -5.6012 0
+-4.04762 -4.77186 0
+-3.79302 -3.61041 0
+-3.82561 -2.12686 0
+-1.96175 -0.360364 0
+-1.04743 0.380324 0
+-1.04743 0.764482 0
+-0.819964 -0.0494613 0
+-1.56818 -0.0410725 0
+-3.01285 0.0271204 0
+-3.06939 0.259846 0
+-3.19652 0.778353 0
+-3.40102 1.51671 0
+-3.6517 2.23916 0
+-3.88182 2.66278 0
+-4.01266 2.60443 0
+-3.98591 2.08573 0
+-3.78569 1.34543 0
+-3.43919 0.740748 0
+-3.00057 0.570003 0
+-2.53184 0.90278 0
+-2.09148 1.52327 0
+-1.73009 2.04044 0
+-1.48483 2.11252 0
+-1.36863 1.64883 0
+-1.36073 0.857612 0
+-1.41073 0.108708 0
+-1.45973 -0.296256 0
+-1.46866 -0.293553 0
+-1.43615 -0.0609804 0
+-1.39431 0.131968 0
+-1.38597 0.112403 0
+-1.43937 -0.0975011 0
+-1.55631 -0.324293 0
+-1.71743 -0.381165 0
+-1.89526 -0.197856 0
+-2.06175 0.139971 0
+-2.18718 0.452173 0
+-2.23922 0.571638 0
+-2.18981 0.432648 0
+-2.02768 0.102095 0
+-1.7677 -0.253024 0
+-1.44925 -0.446201 0
+-1.12474 -0.368017 0
+-0.846336 -0.0537083 0
+-0.657867 0.321303 0
+-0.590469 0.529557 0
+-0.655487 0.4214 0
+-0.836017 0.0167696 0
+-1.08444 -0.503818 0
+-1.3328 -0.91029 0
+-1.51725 -1.0676 0
+-1.60704 -1.01612 0
+-1.62109 -0.931671 0
+-1.6201 -0.9952 0
+-1.67663 -1.26632 0
+-1.83973 -1.64874 0
+-2.11287 -1.96545 0
+-2.45341 -2.08379 0
+-2.78805 -1.99793 0
+-3.0332 -1.81338 0
+-3.11544 -1.66308 0
+-2.9914 -1.62194 0
+-2.66507 -1.66869 0
+-2.19695 -1.70322 0
+-1.69594 -1.5939 0
+-1.27327 -1.22678 0
+-0.828263 -0.585086 0
+-0.640158 -0.209018 0
+-0.653405 0.0115188 0
+-0.848579 0.201045 0
+-1.27151 0.451846 0
+-1.97545 0.835485 0
+-2.9493 1.17413 0
+-4.24679 0.848593 0
+-5.44281 0.169133 0
+-6.09915 -0.59252 0
+-5.9703 -1.29813 0
+-5.09932 -1.84885 0
+-3.80159 -2.09533 0
+-2.55001 -1.84297 0
+-1.80697 -0.954425 0
+-1.86144 0.526964 0
+-2.72368 2.32713 0
+-4.11101 4.01568 0
+-5.5313 5.1774 0
+-6.43873 5.57398 0
+-6.41294 5.20891 0
+-5.30345 4.28311 0
+-3.28852 3.08828 0
+-0.824837 1.90102 0
+1.49511 0.916665 0
+3.12554 0.227606 0
+3.72495 -0.167941 0
+3.24059 -0.338538 0
+1.90425 -0.379612 0
+0.149693 -0.371045 0
+-1.5192 -0.351532 0
+-2.66836 -0.323245 0
+-3.04476 -0.278386 0
+-2.63347 -0.22217 0
+-1.64776 -0.170778 0
+-0.455383 -0.126415 0
+0.538051 -0.0555445 0
+1.01319 0.101545 0
+0.830406 0.386154 0
+0.0639842 0.770128 0
+-1.03232 1.14058 0
+-2.11291 1.33944 0
+-2.84971 1.23118 0
+-3.03166 0.754577 0
+-2.62881 -0.0644308 0
+-1.80352 -1.13009 0
+-0.862748 -2.30182 0
+-0.162946 -3.41504 0
+0.00291221 -4.30689 0
+-0.502963 -4.86035 0
+-1.62463 -5.05832 0
+-3.13779 -5.01173 0
+-4.72505 -4.92676 0
+-6.07075 -5.01276 0
+-6.94295 -5.37564 0
+-7.24184 -5.9576 0
+-7.00949 -6.5582 0
+-6.40532 -6.92434 0
+-5.65459 -6.8569 0
+-4.98147 -6.27432 0
+-4.54439 -5.20894 0
+-4.39583 -3.75898 0
+-4.48317 -2.03952 0
+-2.35615 -0.154374 0
+-1.25443 0.504121 0
+-1.25443 0.817728 0
+-0.839922 -0.0674139 0
+-1.59324 -0.0670904 0
+-3.0287 -0.00456095 0
+-3.00147 0.232613 0
+-2.9995 0.776385 0
+-3.04036 1.55757 0
+-3.11866 2.31746 0
+-3.20033 2.74445 0
+-3.2352 2.6393 0
+-3.17918 2.0297 0
+-3.01113 1.17738 0
+-2.73575 0.465365 0
+-2.37628 0.210536 0
+-1.96763 0.494131 0
+-1.55503 1.11067 0
+-1.19315 1.67856 0
+-0.936233 1.8556 0
+-0.817696 1.53029 0
+-0.831184 0.871101 0
+-0.928905 0.206428 0
+-1.04306 -0.182097 0
+-1.11931 -0.217305 0
+-1.14149 -0.0388066 0
+-1.13251 0.122992 0
+-1.13315 0.113041 0
+-1.17497 -0.0556811 0
+-1.26523 -0.234028 0
+-1.38987 -0.256529 0
+-1.52643 -0.0612932 0
+-1.65357 0.267107 0
+-1.75144 0.55005 0
+-1.79941 0.619608 0
+-1.77868 0.411917 0
+-1.68019 0.00360535 0
+-1.51109 -0.422128 0
+-1.29393 -0.663357 0
+-1.05971 -0.602244 0
+-0.840938 -0.272476 0
+-0.669036 0.1494 0
+-0.572437 0.432958 0
+-0.569593 0.418556 0
+-0.657674 0.104851 0
+-0.805249 -0.356243 0
+-0.958394 -0.757146 0
+-1.0629 -0.963098 0
+-1.09297 -0.986044 0
+-1.06888 -0.955761 0
+-1.05054 -1.01354 0
+-1.10907 -1.20779 0
+-1.29264 -1.46517 0
+-1.60543 -1.65266 0
+-2.00851 -1.68071 0
+-2.4367 -1.56973 0
+-2.81739 -1.43269 0
+-3.08567 -1.39479 0
+-3.19777 -1.50984 0
+-3.14345 -1.72301 0
+-2.95259 -1.89407 0
+-2.68409 -1.8624 0
+-2.38347 -1.5274 0
+-2.03047 -0.938083 0
+-1.86194 -0.377545 0
+-1.96724 0.116817 0
+-2.36906 0.602865 0
+-3.05545 1.13823 0
+-3.9315 1.71153 0
+-4.85146 2.09409 0
+-5.85496 1.85209 0
+-6.69796 1.01214 0
+-7.07114 -0.219336 0
+-6.79483 -1.57444 0
+-5.91326 -2.73042 0
+-4.68354 -3.32505 0
+-3.48195 -3.04456 0
+-2.67125 -1.76512 0
+-2.47732 0.333027 0
+-2.91464 2.76446 0
+-3.78148 4.88252 0
+-4.72196 6.11788 0
+-5.33686 6.18888 0
+-5.31176 5.18382 0
+-4.52328 3.49462 0
+-3.08643 1.65143 0
+-1.32341 0.137999 0
+0.337415 -0.744159 0
+1.49554 -0.930517 0
+1.89725 -0.569658 0
+1.50224 0.0564739 0
+0.483405 0.639225 0
+-0.833195 0.945555 0
+-2.0667 0.881969 0
+-2.88871 0.498772 0
+-3.11092 -0.0561806 0
+-2.73091 -0.602179 0
+-1.9243 -0.977389 0
+-0.984547 -1.06617 0
+-0.228125 -0.811967 0
+0.104857 -0.231436 0
+-0.078022 0.569033 0
+-0.701168 1.39327 0
+-1.55555 1.99497 0
+-2.3713 2.15519 0
+-2.90179 1.76167 0
+-2.99609 0.848876 0
+-2.64353 -0.416989 0
+-1.97931 -1.79431 0
+-1.2468 -3.03433 0
+-0.723931 -3.93791 0
+-0.635401 -4.39542 0
+-1.08149 -4.41426 0
+-2.00947 -4.13034 0
+-3.23623 -3.78497 0
+-4.51006 -3.65293 0
+-5.58681 -3.93601 0
+-6.2944 -4.66804 0
+-6.56953 -5.68248 0
+-6.4625 -6.66522 0
+-6.1135 -7.27334 0
+-5.70588 -7.26452 0
+-5.40666 -6.57354 0
+-5.31017 -5.30543 0
+-5.40541 -3.66374 0
+-5.58468 -1.86025 0
+-3.00262 -0.0427648 0
+-1.58681 0.495365 0
+-1.58681 0.775002 0
+-0.876489 -0.0910592 0
+-1.66202 -0.109795 0
+-3.14925 -0.0762359 0
+-3.03726 0.120627 0
+-2.888 0.627119 0
+-2.72406 1.39364 0
+-2.5712 2.16459 0
+-2.44502 2.61828 0
+-2.34609 2.54036 0
+-2.26178 1.94539 0
+-2.16979 1.0854 0
+-2.04115 0.336722 0
+-1.84664 0.0160236 0
+-1.57092 0.218409 0
+-1.2297 0.76945 0
+-0.876689 1.32555 0
+-0.58879 1.5677 0
+-0.432321 1.37382 0
+-0.428932 0.867712 0
+-0.54357 0.321066 0
+-0.703687 -0.0219804 0
+-0.838162 -0.0828298 0
+-0.911359 0.0343902 0
+-0.932218 0.143851 0
+-0.936524 0.117347 0
+-0.9581 -0.0341051 0
+-1.00904 -0.183086 0
+-1.07896 -0.186615 0
+-1.14814 0.00789326 0
+-1.20128 0.320248 0
+-1.23216 0.580928 0
+-1.24054 0.627984 0
+-1.22768 0.399059 0
+-1.19424 -0.0298316 0
+-1.13971 -0.47666 0
+-1.06202 -0.741047 0
+-0.958753 -0.705513 0
+-0.832089 -0.39914 0
+-0.695683 0.0129937 0
+-0.576535 0.31381 0
+-0.50604 0.348061 0
+-0.502629 0.10144 0
+-0.556928 -0.301944 0
+-0.631977 -0.682096 0
+-0.682649 -0.912426 0
+-0.6844 -0.984293 0
+-0.65285 -0.98731 0
+-0.640187 -1.02621 0
+-0.709699 -1.13828 0
+-0.904269 -1.2706 0
+-1.22742 -1.32951 0
+-1.64572 -1.26241 0
+-2.1062 -1.10925 0
+-2.55388 -0.985018 0
+-2.94181 -1.00686 0
+-3.23567 -1.21599 0
+-3.41683 -1.54184 0
+-3.48426 -1.82665 0
+-3.45033 -1.89633 0
+-3.33159 -1.64614 0
+-3.16419 -1.10549 0
+-3.11384 -0.427888 0
+-3.2995 0.302474 0
+-3.75724 1.06061 0
+-4.43829 1.81928 0
+-5.20742 2.48066 0
+-5.92143 2.8081 0
+-6.56308 2.49374 0
+-7.02336 1.47241 0
+-7.14903 -0.0936639 0
+-6.84982 -1.87365 0
+-6.16116 -3.41908 0
+-5.2384 -4.24781 0
+-4.29907 -3.98388 0
+-3.54624 -2.51796 0
+-3.10465 -0.108561 0
+-2.9898 2.64961 0
+-3.11367 5.00639 0
+-3.31676 6.32097 0
+-3.41711 6.28923 0
+-3.26674 5.03345 0
+-2.80166 3.02954 0
+-2.0683 0.918081 0
+-1.21365 -0.716657 0
+-0.439229 -1.51858 0
+0.0645794 -1.43432 0
+0.179454 -0.684533 0
+-0.105765 0.341693 0
+-0.694668 1.22813 0
+-1.41356 1.66444 0
+-2.06129 1.5297 0
+-2.46553 0.903018 0
+-2.53122 0.00951157 0
+-2.26741 -0.86599 0
+-1.78303 -1.46177 0
+-1.2506 -1.5986 0
+-0.848411 -1.21415 0
+-0.701222 -0.378625 0
+-0.841626 0.709437 0
+-1.20599 1.75764 0
+-1.66328 2.45226 0
+-2.06167 2.55358 0
+-2.27566 1.97566 0
+-2.24201 0.815222 0
+-1.97853 -0.680469 0
+-1.58201 -2.19084 0
+-1.2031 -3.41324 0
+-1.00169 -4.13932 0
+-1.09519 -4.30193 0
+-1.51915 -3.9903 0
+-2.21689 -3.4326 0
+-3.06179 -2.94007 0
+-3.90154 -2.81318 0
+-4.6057 -3.23185 0
+-5.10031 -4.17343 0
+-5.38165 -5.40114 0
+-5.50916 -6.53771 0
+-5.58174 -7.20076 0
+-5.70367 -7.1426 0
+-5.94635 -6.33085 0
+-6.31421 -4.93756 0
+-6.72696 -3.25099 0
+-7.0312 -1.55601 0
+-3.82805 -0.02534 0
+-2.01494 0.342522 0
+-2.01494 0.620007 0
+-0.910372 -0.112464 0
+-1.73935 -0.155282 0
+-3.31347 -0.165707 0
+-3.1485 -0.0443411 0
+-2.88849 0.367104 0
+-2.55092 1.05607 0
+-2.18368 1.79734 0
+-1.84879 2.28339 0
+-1.60116 2.29273 0
+-1.46781 1.81205 0
+-1.43415 1.05174 0
+-1.4438 0.346374 0
+-1.41717 -0.0106074 0
+-1.28624 0.0874794 0
+-1.03112 0.514337 0
+-0.696716 0.99114 0
+-0.375605 1.24659 0
+-0.163404 1.16162 0
+-0.111005 0.815313 0
+-0.201733 0.411794 0
+-0.366215 0.142502 0
+-0.523928 0.0748828 0
+-0.624332 0.134794 0
+-0.663406 0.182925 0
+-0.670078 0.124019 0
+-0.676947 -0.0272359 0
+-0.696991 -0.163043 0
+-0.719737 -0.163869 0
+-0.725008 0.0131642 0
+-0.701142 0.296383 0
+-0.654579 0.534365 0
+-0.60656 0.579966 0
+-0.5813 0.373799 0
+-0.592717 -0.018414 0
+-0.635615 -0.433763 0
+-0.685215 -0.691447 0
+-0.706779 -0.683948 0
+-0.672811 -0.433109 0
+-0.579745 -0.0800724 0
+-0.453544 0.187609 0
+-0.338366 0.232883 0
+-0.272962 0.036037 0
+-0.268749 -0.306158 0
+-0.304527 -0.646319 0
+-0.342932 -0.874021 0
+-0.358592 -0.968633 0
+-0.359011 -0.986891 0
+-0.383882 -1.00133 0
+-0.483567 -1.03859 0
+-0.691576 -1.06259 0
+-1.0086 -1.01249 0
+-1.40627 -0.864737 0
+-1.84446 -0.671069 0
+-2.28761 -0.541863 0
+-2.71075 -0.583718 0
+-3.09594 -0.8308 0
+-3.4262 -1.21159 0
+-3.68275 -1.5701 0
+-3.84809 -1.73099 0
+-3.91742 -1.5768 0
+-3.92494 -1.09797 0
+-3.97361 -0.379218 0
+-4.15427 0.483139 0
+-4.49447 1.4008 0
+-4.94456 2.26938 0
+-5.39651 2.93261 0
+-5.75421 3.1658 0
+-6.00352 2.74305 0
+-6.12974 1.59863 0
+-6.10291 -0.12049 0
+-5.90604 -2.07053 0
+-5.55484 -3.77027 0
+-5.09137 -4.71129 0
+-4.56139 -4.51386 0
+-3.99555 -3.08379 0
+-3.40691 -0.697209 0
+-2.80373 2.04643 0
+-2.20468 4.40733 0
+-1.64188 5.75818 0
+-1.15119 5.79855 0
+-0.759416 4.64167 0
+-0.47784 2.74796 0
+-0.304597 0.744838 0
+-0.231256 -0.789999 0
+-0.247472 -1.50236 0
+-0.340956 -1.34084 0
+-0.494744 -0.530744 0
+-0.68557 0.532518 0
+-0.884991 1.42755 0
+-1.06201 1.84147 0
+-1.1866 1.65429 0
+-1.23565 0.952067 0
+-1.2015 -0.0246417 0
+-1.09907 -0.968415 0
+-0.9655 -1.59535 0
+-0.84867 -1.71543 0
+-0.787847 -1.27498 0
+-0.795714 -0.370758 0
+-0.852278 0.766 0
+-0.914805 1.82017 0
+-0.937929 2.47538 0
+-0.892678 2.50833 0
+-0.776787 1.85977 0
+-0.615432 0.653867 0
+-0.4554 -0.840501 0
+-0.355368 -2.29087 0
+-0.372731 -3.39587 0
+-0.547387 -3.96466 0
+-0.8865 -3.96281 0
+-1.35804 -3.51876 0
+-1.89953 -2.89111 0
+-2.44063 -2.39896 0
+-2.92978 -2.32403 0
+-3.35224 -2.80939 0
+-3.73273 -3.79295 0
+-4.12319 -5.01068 0
+-4.58186 -6.07904 0
+-5.15184 -6.63078 0
+-5.84534 -6.44909 0
+-6.63396 -5.54223 0
+-7.44266 -4.12886 0
+-8.14794 -2.54572 0
+-8.58435 -1.11959 0
+-4.67657 -0.0424526 0
+-2.46221 0.105295 0
+-2.46221 0.385717 0
+-0.918509 -0.123896 0
+-1.77762 -0.187838 0
+-3.42593 -0.243495 0
+-3.25912 -0.211147 0
+-2.96274 0.0707238 0
+-2.53851 0.631843 0
+-2.03802 1.29685 0
+-1.55029 1.79566 0
+-1.17113 1.91357 0
+-0.964879 1.6058 0
+-0.934478 1.02134 0
+-1.01488 0.426773 0
+-1.09711 0.0716273 0
+-1.07617 0.0665415 0
+-0.901082 0.339245 0
+-0.600154 0.690212 0
+-0.265883 0.912317 0
+-0.00668473 0.902426 0
+0.107489 0.701139 0
+0.0751512 0.444132 0
+-0.0461651 0.263818 0
+-0.179292 0.208009 0
+-0.269975 0.225478 0
+-0.307131 0.22008 0
+-0.312919 0.129807 0
+-0.315024 -0.0251309 0
+-0.322601 -0.155467 0
+-0.321194 -0.165275 0
+-0.287146 -0.0208843 0
+-0.209158 0.218396 0
+-0.101692 0.426898 0
+-0.00195482 0.480229 0
+0.047257 0.324587 0
+0.0194785 0.00936456 0
+-0.0798319 -0.334452 0
+-0.212208 -0.559071 0
+-0.321562 -0.574594 0
+-0.359976 -0.394694 0
+-0.311326 -0.128723 0
+-0.199613 0.0758969 0
+-0.0763239 0.109593 0
+0.00684871 -0.0471355 0
+0.0241267 -0.323436 0
+-0.0152962 -0.606896 0
+-0.0805758 -0.808741 0
+-0.145241 -0.903968 0
+-0.207797 -0.924334 0
+-0.293324 -0.915808 0
+-0.436402 -0.895513 0
+-0.658467 -0.840522 0
+-0.955357 -0.715599 0
+-1.30237 -0.517729 0
+-1.67107 -0.302364 0
+-2.04438 -0.168551 0
+-2.41955 -0.208549 0
+-2.79892 -0.451433 0
+-3.17651 -0.833993 0
+-3.53038 -1.21623 0
+-3.82702 -1.43435 0
+-4.03871 -1.36511 0
+-4.16752 -0.969156 0
+-4.25556 -0.291187 0
+-4.34786 0.575443 0
+-4.45714 1.51007 0
+-4.55316 2.3654 0
+-4.58267 2.96212 0
+-4.51708 3.10021 0
+-4.38813 2.6141 0
+-4.25407 1.46457 0
+-4.16617 -0.208388 0
+-4.15051 -2.08619 0
+-4.19546 -3.72532 0
+-4.24303 -4.66372 0
+-4.19325 -4.56363 0
+-3.93081 -3.34624 0
+-3.3704 -1.25762 0
+-2.50284 1.17887 0
+-1.41706 3.32154 0
+-0.282535 4.62365 0
+0.702282 4.81373 0
+1.37292 3.97103 0
+1.64768 2.4732 0
+1.5458 0.846725 0
+1.17244 -0.416644 0
+0.680178 -1.0101 0
+0.222238 -0.882901 0
+-0.0876302 -0.220876 0
+-0.199049 0.643937 0
+-0.128263 1.35676 0
+0.0582346 1.65497 0
+0.272493 1.44003 0
+0.434882 0.789678 0
+0.494874 -0.0846337 0
+0.439037 -0.912578 0
+0.288762 -1.44507 0
+0.0924899 -1.51916 0
+-0.0849266 -1.09756 0
+-0.176142 -0.279542 0
+-0.129124 0.718982 0
+0.0744687 1.61657 0
+0.408089 2.14176 0
+0.80339 2.11303 0
+1.1678 1.49536 0
+1.40978 0.411889 0
+1.46244 -0.893167 0
+1.29843 -2.12686 0
+0.933579 -3.03102 0
+0.420999 -3.45208 0
+-0.162127 -3.37969 0
+-0.733636 -2.94725 0
+-1.2295 -2.39525 0
+-1.62557 -2.00289 0
+-1.94911 -2.0005 0
+-2.27286 -2.48563 0
+-2.69137 -3.37444 0
+-3.28754 -4.41451 0
+-4.10222 -5.26435 0
+-5.11879 -5.61421 0
+-6.2672 -5.30067 0
+-7.44227 -4.36717 0
+-8.52435 -3.04678 0
+-9.3914 -1.67867 0
+-9.91559 -0.595403 0
+-5.34119 -0.0123225 0
+-2.81329 -0.10719 0
+-2.81329 0.151552 0
+-0.88131 -0.120625 0
+-1.73199 -0.195757 0
+-3.3878 -0.283944 0
+-3.27004 -0.328908 0
+-3.02047 -0.178851 0
+-2.61821 0.229589 0
+-2.09905 0.77769 0
+-1.55269 1.2493 0
+-1.0922 1.45308 0
+-0.807692 1.32129 0
+-0.725424 0.939069 0
+-0.793157 0.494507 0
+-0.901623 0.180093 0
+-0.934265 0.0991837 0
+-0.821484 0.226464 0
+-0.571086 0.439814 0
+-0.258723 0.599954 0
+0.0154628 0.628239 0
+0.178689 0.537913 0
+0.216862 0.405959 0
+0.170238 0.310442 0
+0.100657 0.27759 0
+0.0538491 0.272286 0
+0.0401613 0.233768 0
+0.0420983 0.12787 0
+0.0386805 -0.0217131 0
+0.0273454 -0.144132 0
+0.0284244 -0.166354 0
+0.0704177 -0.0628777 0
+0.167127 0.121687 0
+0.302302 0.291723 0
+0.431948 0.350582 0
+0.50356 0.252975 0
+0.482199 0.0307257 0
+0.369797 -0.22205 0
+0.207255 -0.396529 0
+0.0572107 -0.42455 0
+-0.0248192 -0.312664 0
+-0.0165341 -0.137008 0
+0.0615732 -0.00221041 0
+0.158416 0.0127504 0
+0.219392 -0.108111 0
+0.212756 -0.3168 0
+0.140249 -0.534389 0
+0.0270623 -0.695555 0
+-0.100331 -0.776575 0
+-0.232666 -0.791999 0
+-0.380834 -0.76764 0
+-0.563283 -0.713064 0
+-0.788743 -0.615062 0
+-1.04759 -0.456749 0
+-1.31802 -0.247301 0
+-1.58188 -0.0385028 0
+-1.83811 0.0876738 0
+-2.10364 0.0569849 0
+-2.4009 -0.154174 0
+-2.73958 -0.495308 0
+-3.10414 -0.851676 0
+-3.4549 -1.08359 0
+-3.74357 -1.07645 0
+-3.93442 -0.7783 0
+-4.0155 -0.210113 0
+-3.98772 0.547664 0
+-3.8499 1.37226 0
+-3.59575 2.11124 0
+-3.22847 2.59484 0
+-2.78663 2.65838 0
+-2.35732 2.18479 0
+-2.05252 1.15977 0
+-1.96957 -0.29134 0
+-2.15265 -1.90311 0
+-2.56447 -3.3135 0
+-3.07761 -4.15058 0
+-3.49587 -4.14537 0
+-3.60768 -3.23443 0
+-3.25825 -1.60704 0
+-2.41334 0.33397 0
+-1.18521 2.09341 0
+0.194415 3.24403 0
+1.44558 3.56257 0
+2.32766 3.08894 0
+2.71029 2.09058 0
+2.60405 0.952967 0
+2.14446 0.0429418 0
+1.53945 -0.405088 0
+1.00125 -0.344701 0
+0.685491 0.0948819 0
+0.654393 0.675036 0
+0.871816 1.13934 0
+1.22802 1.29877 0
+1.5831 1.08495 0
+1.81342 0.559362 0
+1.84646 -0.117683 0
+1.67656 -0.742677 0
+1.36109 -1.1296 0
+1.00197 -1.16004 0
+0.718183 -0.813773 0
+0.6144 -0.175759 0
+0.751354 0.582028 0
+1.12518 1.24275 0
+1.66348 1.60346 0
+2.24188 1.53463 0
+2.71691 1.02033 0
+2.96462 0.164175 0
+2.91259 -0.841131 0
+2.5561 -1.77037 0
+1.95535 -2.43028 0
+1.2162 -2.71293 0
+0.460413 -2.6239 0
+-0.20753 -2.2793 0
+-0.730298 -1.87248 0
+-1.11636 -1.61683 0
+-1.44007 -1.67679 0
+-1.8197 -2.106 0
+-2.37796 -2.81618 0
+-3.19767 -3.59481 0
+-4.28946 -4.17256 0
+-5.58461 -4.31906 0
+-6.95578 -3.9295 0
+-8.25625 -3.0667 0
+-9.36056 -1.94247 0
+-10.1881 -0.851084 0
+-10.6942 -0.0893488 0
+-5.62501 0.110105 0
+-2.9447 -0.189349 0
+-2.9447 0.0172442 0
+-0.789384 -0.102625 0
+-1.57601 -0.175594 0
+-3.13167 -0.27462 0
+-3.09486 -0.365721 0
+-2.95343 -0.32028 0
+-2.66393 -0.0599123 0
+-2.23371 0.347466 0
+-1.73059 0.746186 0
+-1.2603 0.982786 0
+-0.92189 0.982879 0
+-0.763262 0.780442 0
+-0.759512 0.490756 0
+-0.825814 0.246396 0
+-0.859068 0.132437 0
+-0.786963 0.154359 0
+-0.598889 0.25174 0
+-0.343325 0.344391 0
+-0.0955485 0.380463 0
+0.0840784 0.358286 0
+0.17719 0.312848 0
+0.206668 0.280964 0
+0.212873 0.271385 0
+0.225085 0.260074 0
+0.24688 0.211973 0
+0.262626 0.112124 0
+0.257469 -0.0165556 0
+0.235108 -0.121771 0
+0.220561 -0.151807 0
+0.245939 -0.0882553 0
+0.328594 0.0390318 0
+0.455817 0.1645 0
+0.586108 0.220292 0
+0.667214 0.171869 0
+0.661668 0.0362714 0
+0.566375 -0.126757 0
+0.415719 -0.245873 0
+0.266011 -0.274841 0
+0.168781 -0.215434 0
+0.146517 -0.114745 0
+0.183371 -0.0390648 0
+0.235337 -0.0392149 0
+0.253652 -0.126427 0
+0.207957 -0.271105 0
+0.0965139 -0.422945 0
+-0.0606218 -0.538419 0
+-0.238738 -0.598459 0
+-0.423411 -0.607327 0
+-0.613836 -0.577215 0
+-0.814388 -0.512511 0
+-1.02279 -0.406661 0
+-1.22524 -0.254301 0
+-1.40319 -0.0693463 0
+-1.54749 0.105793 0
+-1.66954 0.209729 0
+-1.80083 0.188273 0
+-1.97915 0.0241456 0
+-2.22844 -0.246016 0
+-2.54284 -0.537277 0
+-2.88346 -0.742969 0
+-3.1895 -0.770412 0
+-3.39723 -0.570573 0
+-3.45604 -0.151301 0
+-3.33442 0.426047 0
+-3.02099 1.05882 0
+-2.52808 1.61834 0
+-1.90077 1.96753 0
+-1.22635 1.98395 0
+-0.631716 1.59016 0
+-0.258423 0.786481 0
+-0.222223 -0.32754 0
+-0.570343 -1.55499 0
+-1.25021 -2.63363 0
+-2.10329 -3.29751 0
+-2.89364 -3.35503 0
+-3.36976 -2.75831 0
+-3.34302 -1.63378 0
+-2.7541 -0.254949 0
+-1.6997 1.039 0
+-0.405906 1.95024 0
+0.842843 2.31382 0
+1.79248 2.13931 0
+2.2932 1.58986 0
+2.33428 0.911888 0
+2.03187 0.34535 0
+1.57877 0.048018 0
+1.17671 0.0573602 0
+0.974538 0.297049 0
+1.03033 0.619248 0
+1.30579 0.863872 0
+1.69083 0.913727 0
+2.04691 0.728868 0
+2.2538 0.352477 0
+2.24536 -0.109247 0
+2.02597 -0.52328 0
+1.66601 -0.769639 0
+1.28053 -0.774561 0
+0.997304 -0.530546 0
+0.921606 -0.100061 0
+1.10549 0.398148 0
+1.5296 0.818633 0
+2.10416 1.0289 0
+2.69048 0.948313 0
+3.13748 0.573324 0
+3.32196 -0.0202989 0
+3.18022 -0.699398 0
+2.72227 -1.31241 0
+2.02519 -1.7332 0
+1.2089 -1.89663 0
+0.401348 -1.81636 0
+-0.297747 -1.58021 0
+-0.84587 -1.32436 0
+-1.27116 -1.19154 0
+-1.66475 -1.2832 0
+-2.15129 -1.61946 0
+-2.84497 -2.12251 0
+-3.80532 -2.63445 0
+-5.00988 -2.968 0
+-6.35536 -2.97358 0
+-7.68828 -2.59659 0
+-8.85401 -1.90098 0
+-9.74648 -1.04999 0
+-10.3403 -0.257286 0
+-10.6885 0.25891 0
+-5.41912 0.287298 0
+-2.77856 -0.102599 0
+-2.77856 0.0551904 0
+-0.647343 -0.0745669 0
+-1.31197 -0.133343 0
+-2.64752 -0.220623 0
+-2.69349 -0.31975 0
+-2.67861 -0.335167 0
+-2.54406 -0.194455 0
+-2.2678 0.0712072 0
+-1.88479 0.363177 0
+-1.47587 0.573858 0
+-1.13215 0.639158 0
+-0.914112 0.562409 0
+-0.826369 0.403013 0
+-0.820395 0.240422 0
+-0.822639 0.134681 0
+-0.772059 0.103779 0
+-0.646977 0.126658 0
+-0.468234 0.165648 0
+-0.279883 0.192111 0
+-0.12122 0.199623 0
+-0.0073885 0.199016 0
+0.0714828 0.202093 0
+0.135368 0.2075 0
+0.19608 0.199362 0
+0.248716 0.159337 0
+0.277843 0.0829963 0
+0.272883 -0.0115955 0
+0.241075 -0.0899626 0
+0.208418 -0.11915 0
+0.207085 -0.0869228 0
+0.25665 -0.0105333 0
+0.350554 0.0705957 0
+0.456287 0.114559 0
+0.529891 0.098265 0
+0.537355 0.0288081 0
+0.471643 -0.0610456 0
+0.356347 -0.130577 0
+0.233915 -0.152409 0
+0.144543 -0.126062 0
+0.106703 -0.0769039 0
+0.109304 -0.0416663 0
+0.119044 -0.0489552 0
+0.0981258 -0.105508 0
+0.0221158 -0.195095 0
+-0.111572 -0.289258 0
+-0.287719 -0.362273 0
+-0.485138 -0.401039 0
+-0.687456 -0.405008 0
+-0.886133 -0.378538 0
+-1.07556 -0.323086 0
+-1.24612 -0.236104 0
+-1.38248 -0.117939 0
+-1.47028 0.018452 0
+-1.50764 0.143158 0
+-1.51371 0.215793 0
+-1.52704 0.201605 0
+-1.59256 0.0896712 0
+-1.74221 -0.0963664 0
+-1.97829 -0.301201 0
+-2.26734 -0.453922 0
+-2.5471 -0.490645 0
+-2.74293 -0.374742 0
+-2.78627 -0.107969 0
+-2.62938 0.269162 0
+-2.25562 0.685068 0
+-1.68675 1.04946 0
+-0.987773 1.26855 0
+-0.266459 1.26264 0
+0.338192 0.98551 0
+0.68209 0.442584 0
+0.652956 -0.298407 0
+0.208395 -1.11042 0
+-0.59731 -1.82793 0
+-1.61002 -2.28479 0
+-2.6038 -2.36125 0
+-3.3373 -2.0248 0
+-3.62321 -1.34787 0
+-3.38644 -0.491723 0
+-2.68841 0.340973 0
+-1.70675 0.968575 0
+-0.677316 1.28438 0
+0.179714 1.28228 0
+0.723102 1.04647 0
+0.922606 0.712384 0
+0.852348 0.415608 0
+0.6522 0.248165 0
+0.473724 0.235837 0
+0.429904 0.340869 0
+0.563942 0.485211 0
+0.844252 0.583561 0
+1.18383 0.574154 0
+1.47484 0.43785 0
+1.62605 0.201266 0
+1.59142 -0.0746138 0
+1.38299 -0.31485 0
+1.06641 -0.453061 0
+0.742013 -0.450161 0
+0.516942 -0.305475 0
+0.475112 -0.0582318 0
+0.65214 0.221121 0
+1.02216 0.448617 0
+1.50125 0.549807 0
+1.9678 0.481764 0
+2.29435 0.246775 0
+2.38145 -0.107402 0
+2.18328 -0.501233 0
+1.71767 -0.846805 0
+1.0581 -1.07362 0
+0.310586 -1.14912 0
+-0.417792 -1.08798 0
+-1.05025 -0.947752 0
+-1.56308 -0.811521 0
+-1.99308 -0.761547 0
+-2.42573 -0.850549 0
+-2.96575 -1.07944 0
+-3.69761 -1.39065 0
+-4.6495 -1.68256 0
+-5.77475 -1.84276 0
+-6.95934 -1.78899 0
+-8.05438 -1.50154 0
+-8.92271 -1.03264 0
+-9.4847 -0.488007 0
+-9.75144 0.00945125 0
+-9.84011 0.347583 0
+-4.76574 0.40708 0
+-2.3428 0.0872519 0
+-2.3428 0.254765 0
+-0.47338 -0.0440945 0
+-0.972461 -0.0820866 0
+-1.99093 -0.142249 0
+-2.09204 -0.218645 0
+-2.17526 -0.251949 0
+-2.17872 -0.190991 0
+-2.06133 -0.0461862 0
+-1.828 0.129845 0
+-1.52855 0.274415 0
+-1.23397 0.344578 0
+-1.00411 0.332547 0
+-0.863703 0.262605 0
+-0.797558 0.174277 0
+-0.765088 0.102211 0
+-0.724329 0.0630203 0
+-0.651799 0.0541282 0
+-0.548531 0.0623798 0
+-0.431681 0.0752605 0
+-0.319489 0.0874318 0
+-0.220124 0.0996512 0
+-0.130764 0.112732 0
+-0.0455947 0.12233 0
+0.0346352 0.119132 0
+0.0992995 0.0946729 0
+0.133643 0.0486524 0
+0.129756 -0.00770809 0
+0.0950901 -0.0552966 0
+0.0522043 -0.0762642 0
+0.0288807 -0.0635992 0
+0.0438421 -0.0254947 0
+0.0962017 0.0182361 0
+0.164839 0.0459214 0
+0.218377 0.0447272 0
+0.230594 0.0165906 0
+0.19318 -0.023631 0
+0.11919 -0.0565874 0
+0.0355567 -0.0687762 0
+-0.0312201 -0.0592853 0
+-0.0685731 -0.039551 0
+-0.0835953 -0.026644 0
+-0.0984856 -0.0340649 0
+-0.138854 -0.0651398 0
+-0.22166 -0.112289 0
+-0.349078 -0.161839 0
+-0.510454 -0.200897 0
+-0.689464 -0.222029 0
+-0.870964 -0.223509 0
+-1.04333 -0.206171 0
+-1.19619 -0.170222 0
+-1.31725 -0.115049 0
+-1.39263 -0.0425601 0
+-1.41261 0.0384309 0
+-1.38004 0.110589 0
+-1.316 0.151757 0
+-1.25773 0.143334 0
+-1.24771 0.0796515 0
+-1.31767 -0.0264071 0
+-1.47413 -0.144744 0
+-1.69175 -0.236305 0
+-1.91727 -0.265123 0
+-2.08237 -0.209638 0
+-2.12073 -0.0696064 0
+-1.98442 0.132849 0
+-1.65666 0.35731 0
+-1.15983 0.552626 0
+-0.557709 0.666434 0
+0.0493106 0.655617 0
+0.538123 0.496698 0
+0.786164 0.194542 0
+0.70093 -0.213173 0
+0.248963 -0.658457 0
+-0.524724 -1.05424 0
+-1.49568 -1.31384 0
+-2.48244 -1.37449 0
+-3.28964 -1.2176 0
+-3.76009 -0.877415 0
+-3.81861 -0.433203 0
+-3.49146 0.0138203 0
+-2.89384 0.370958 0
+-2.19012 0.580668 0
+-1.54165 0.6338 0
+-1.06078 0.565599 0
+-0.785981 0.437587 0
+-0.683751 0.313377 0
+-0.673188 0.237602 0
+-0.662023 0.224671 0
+-0.580713 0.25956 0
+-0.403899 0.308397 0
+-0.154121 0.333782 0
+0.110966 0.309067 0
+0.321655 0.227161 0
+0.421053 0.101868 0
+0.383966 -0.0375268 0
+0.224985 -0.155869 0
+-0.00538682 -0.222689 0
+-0.234617 -0.22093 0
+-0.388091 -0.152002 0
+-0.410171 -0.0361519 0
+-0.281101 0.092051 0
+-0.0249532 0.192469 0
+0.29436 0.230494 0
+0.588727 0.187397 0
+0.76902 0.0664825 0
+0.768936 -0.107318 0
+0.562294 -0.294591 0
+0.168649 -0.45316 0
+-0.354236 -0.550739 0
+-0.928668 -0.574686 0
+-1.48071 -0.535931 0
+-1.96263 -0.465839 0
+-2.36755 -0.406601 0
+-2.73168 -0.397418 0
+-3.12203 -0.4602 0
+-3.61203 -0.589429 0
+-4.25204 -0.750639 0
+-5.04489 -0.889712 0
+-5.93651 -0.951135 0
+-6.82649 -0.89901 0
+-7.59578 -0.732248 0
+-8.14194 -0.486491 0
+-8.41014 -0.219799 0
+-8.4153 0.0146049 0
+-8.26673 0.199014 0
+-3.85625 0.36409 0
+-1.79429 0.237374 0
+-1.79429 0.4887 0
+-0.294799 -0.0190029 0
+-0.612571 -0.0369408 0
+-1.27068 -0.0667462 0
+-1.38198 -0.107345 0
+-1.50297 -0.130966 0
+-1.58194 -0.112017 0
+-1.57556 -0.0525643 0
+-1.47174 0.0260237 0
+-1.29382 0.096487 0
+-1.08755 0.13831 0
+-0.899838 0.144838 0
+-0.7603 0.123066 0
+-0.673761 0.0877379 0
+-0.625136 0.0535854 0
+-0.591811 0.0296949 0
+-0.555776 0.0180931 0
+-0.509447 0.0160515 0
+-0.453908 0.0197214 0
+-0.393016 0.0265399 0
+-0.328628 0.0352631 0
+-0.26029 0.0443939 0
+-0.188826 0.0508667 0
+-0.120172 0.0504785 0
+-0.0655883 0.040089 0
+-0.0370801 0.0201442 0
+-0.0404304 -0.00435779 0
+-0.0702607 -0.0254663 0
+-0.110676 -0.0358492 0
+-0.141828 -0.0324474 0
+-0.149178 -0.0181444 0
+-0.130502 -0.00043985 0
+-0.0968 0.0122195 0
+-0.0665836 0.0145107 0
+-0.0565649 0.00657192 0
+-0.0736463 -0.00654966 0
+-0.112306 -0.0179273 0
+-0.158525 -0.0225574 0
+-0.197912 -0.019898 0
+-0.223585 -0.0138779 0
+-0.239694 -0.0105352 0
+-0.259049 -0.0147107 0
+-0.296558 -0.0276306 0
+-0.36228 -0.0465662 0
+-0.457643 -0.0664759 0
+-0.576122 -0.082418 0
+-0.706904 -0.0912471 0
+-0.83861 -0.0918025 0
+-0.960837 -0.0839437 0
+-1.06348 -0.0675746 0
+-1.13584 -0.0426983 0
+-1.16775 -0.010649 0
+-1.15372 0.0244013 0
+-1.09816 0.0550302 0
+-1.01854 0.0721403 0
+-0.943471 0.0682643 0
+-0.905036 0.0412162 0
+-0.927734 -0.00370845 0
+-1.01825 -0.0542312 0
+-1.16022 -0.0943276 0
+-1.31629 -0.109053 0
+-1.43671 -0.089224 0
+-1.47188 -0.0344351 0
+-1.38533 0.0463036 0
+-1.16423 0.136208 0
+-0.825605 0.214 0
+-0.417276 0.258105 0
+-0.0127671 0.251108 0
+0.299996 0.183934 0
+0.435473 0.0590662 0
+0.330325 -0.108026 0
+-0.0379768 -0.290154 0
+-0.639274 -0.452944 0
+-1.39077 -0.562344 0
+-2.17171 -0.593554 0
+-2.8507 -0.538607 0
+-3.31847 -0.409642 0
+-3.51562 -0.23606 0
+-3.44576 -0.0560392 0
+-3.16952 0.0947234 0
+-2.78184 0.192983 0
+-2.38114 0.233101 0
+-2.04147 0.225932 0
+-1.79637 0.192484 0
+-1.63824 0.155249 0
+-1.53116 0.130525 0
+-1.43071 0.124215 0
+-1.30308 0.131934 0
+-1.13734 0.142654 0
+-0.947621 0.144067 0
+-0.766148 0.127594 0
+-0.630438 0.091451 0
+-0.569638 0.0410687 0
+-0.594292 -0.0128731 0
+-0.692292 -0.0578694 0
+-0.831651 -0.0833298 0
+-0.968942 -0.0836389 0
+-1.06108 -0.0598687 0
+-1.07744 -0.0197912 0
+-1.00926 0.023876 0
+-0.873512 0.0567196 0
+-0.709675 0.0666572 0
+-0.569888 0.0476096 0
+-0.504984 0.0015783 0
+-0.550597 -0.0617046 0
+-0.717606 -0.127582 0
+-0.989863 -0.180903 0
+-1.3299 -0.210703 0
+-1.69091 -0.213672 0
+-2.0315 -0.195343 0
+-2.32881 -0.168534 0
+-2.58604 -0.149371 0
+-2.83161 -0.151847 0
+-3.10933 -0.182479 0
+-3.46186 -0.236896 0
+-3.91251 -0.299986 0
+-4.45197 -0.350255 0
+-5.03569 -0.367412 0
+-5.59407 -0.340638 0
+-6.05213 -0.274181 0
+-6.35117 -0.187459 0
+-6.46282 -0.108144 0
+-6.39149 -0.0567257 0
+-6.18003 -0.012441 0
+-2.91625 0.175652 0
+-1.3402 0.230492 0
+-1.3402 0.549882 0
+-0.141108 -0.00428777 0
+-0.295717 -0.00896339 0
+-0.620532 -0.0169031 0
+-0.699618 -0.0282588 0
+-0.794836 -0.0357479 0
+-0.874246 -0.0326064 0
+-0.907811 -0.0189988 0
+-0.881967 0.000178806 0
+-0.803891 0.0184116 0
+-0.696075 0.0304945 0
+-0.585511 0.034274 0
+-0.493229 0.030784 0
+-0.428573 0.0230817 0
+-0.389569 0.0145818 0
+-0.367613 0.00773912 0
+-0.353088 0.00356747 0
+-0.338983 0.00194702 0
+-0.321536 0.00227439 0
+-0.298946 0.00394995 0
+-0.270139 0.00645623 0
+-0.234894 0.00914891 0
+-0.195127 0.0110992 0
+-0.155907 0.0112589 0
+-0.124758 0.00893926 0
+-0.108926 0.00431242 0
+-0.11185 -0.00143385 0
+-0.130839 -0.00647742 0
+-0.157544 -0.00914433 0
+-0.181295 -0.00869591 0
+-0.193749 -0.00569045 0
+-0.192479 -0.00170963 0
+-0.181675 0.00141482 0
+-0.169632 0.00246865 0
+-0.164429 0.0013682 0
+-0.17005 -0.000928515 0
+-0.184943 -0.00303397 0
+-0.203584 -0.00391622 0
+-0.220048 -0.00343415 0
+-0.231569 -0.00235699 0
+-0.240209 -0.00189491 0
+-0.251892 -0.0030281 0
+-0.273515 -0.0060077 0
+-0.309809 -0.0102725 0
+-0.361517 -0.0147674 0
+-0.42551 -0.0184247 0
+-0.496245 -0.0205128 0
+-0.567354 -0.020693 0
+-0.632444 -0.0188538 0
+-0.685075 -0.0149437 0
+-0.718769 -0.00900471 0
+-0.727989 -0.00142891 0
+-0.710336 0.00674871 0
+-0.669104 0.0137984 0
+-0.614627 0.0176626 0
+-0.563045 0.0166828 0
+-0.532221 0.0103919 0
+-0.535921 -8.62978e-06 0
+-0.578395 -0.0117569 0
+-0.651482 -0.021241 0
+-0.735465 -0.0250703 0
+-0.803556 -0.0211332 0
+-0.82869 -0.00930051 0
+-0.790795 0.00840808 0
+-0.682778 0.0281909 0
+-0.514007 0.0452289 0
+-0.310568 0.0546659 0
+-0.112092 0.052633 0
+0.0346715 0.0371705 0
+0.0848357 0.00890197 0
+0.00551398 -0.0287042 0
+-0.214985 -0.069655 0
+-0.561494 -0.106435 0
+-0.992217 -0.131621 0
+-1.446 -0.139767 0
+-1.85561 -0.129004 0
+-2.16352 -0.101734 0
+-2.33552 -0.0640515 0
+-2.36756 -0.024002 0
+-2.28359 0.0107571 0
+-2.12566 0.0350453 0
+-1.93983 0.0472777 0
+-1.7632 0.0492987 0
+-1.61585 0.0451347 0
+-1.49985 0.0392446 0
+-1.40428 0.0349524 0
+-1.31363 0.033569 0
+-1.21608 0.0343831 0
+-1.10879 0.0353695 0
+-0.998975 0.0342476 0
+-0.900852 0.0294706 0
+-0.830226 0.0208256 0
+-0.798663 0.00950563 0
+-0.809244 -0.00229272 0
+-0.855056 -0.0120573 0
+-0.92068 -0.0177054 0
+-0.986133 -0.0181856 0
+-1.0322 -0.0138032 0
+-1.04579 -0.00619977 0
+-1.02394 0.00202335 0
+-0.975195 0.00797727 0
+-0.917841 0.00930301 0
+-0.875133 0.00490194 0
+-0.868884 -0.00467118 0
+-0.91327 -0.0173186 0
+-1.01084 -0.0300118 0
+-1.15202 -0.0397268 0
+-1.31831 -0.0444094 0
+-1.48832 -0.0436642 0
+-1.64472 -0.0389411 0
+-1.78012 -0.0331351 0
+-1.89981 -0.0296771 0
+-2.02031 -0.0313478 0
+-2.16363 -0.0391641 0
+-2.34878 -0.0517469 0
+-2.58326 -0.065503 0
+-2.85779 -0.0757229 0
+-3.14686 -0.078343 0
+-3.41569 -0.0718065 0
+-3.63153 -0.0583396 0
+-3.77483 -0.0441596 0
+-3.84444 -0.0385364 0
+-3.85003 -0.0511349 0
+-3.78548 -0.0769929 0
+-1.99858 0.0116895 0
+-1.02981 0.0948992 0
+-1.02981 0.312313 0
+-0.0372461 -0.00428777 0
+-0.0783503 -0.00896339 0
+-0.165972 -0.0169031 0
+-0.19423 -0.0282588 0
+-0.229978 -0.0357479 0
+-0.262585 -0.0326064 0
+-0.281583 -0.0189988 0
+-0.281405 0.000178806 0
+-0.262993 0.0184116 0
+-0.232499 0.0304945 0
+-0.198225 0.034274 0
+-0.167441 0.030784 0
+-0.144359 0.0230817 0
+-0.129777 0.0145818 0
+-0.122038 0.00773912 0
+-0.11847 0.00356747 0
+-0.116523 0.00194702 0
+-0.114249 0.00227439 0
+-0.110299 0.00394995 0
+-0.103843 0.00645623 0
+-0.0946939 0.00914891 0
+-0.0835947 0.0110992 0
+-0.0723358 0.0112589 0
+-0.0633965 0.00893926 0
+-0.0590841 0.00431242 0
+-0.060518 -0.00143385 0
+-0.0669954 -0.00647742 0
+-0.0761397 -0.00914433 0
+-0.0848356 -0.00869591 0
+-0.0905261 -0.00569045 0
+-0.0922357 -0.00170963 0
+-0.0908209 0.00141482 0
+-0.0883522 0.00246865 0
+-0.086984 0.0013682 0
+-0.0879125 -0.000928515 0
+-0.0909465 -0.00303397 0
+-0.0948627 -0.00391622 0
+-0.0982969 -0.00343415 0
+-0.100654 -0.00235699 0
+-0.102549 -0.00189491 0
+-0.105577 -0.0030281 0
+-0.111585 -0.0060077 0
+-0.121857 -0.0102725 0
+-0.136624 -0.0147674 0
+-0.155049 -0.0184247 0
+-0.175562 -0.0205128 0
+-0.196255 -0.020693 0
+-0.215109 -0.0188538 0
+-0.230052 -0.0149437 0
+-0.239057 -0.00900471 0
+-0.240486 -0.00142891 0
+-0.233737 0.00674871 0
+-0.219939 0.0137984 0
+-0.202276 0.0176626 0
+-0.185593 0.0166828 0
+-0.175202 0.0103919 0
+-0.17521 -8.62978e-06 0
+-0.186967 -0.0117569 0
+-0.208208 -0.021241 0
+-0.233278 -0.0250703 0
+-0.254412 -0.0211332 0
+-0.263712 -0.00930051 0
+-0.255304 0.00840808 0
+-0.227113 0.0281909 0
+-0.181884 0.0452289 0
+-0.127218 0.0546659 0
+-0.0745853 0.052633 0
+-0.0374148 0.0371705 0
+-0.0285129 0.00890197 0
+-0.0572171 -0.0287042 0
+-0.126872 -0.069655 0
+-0.233307 -0.106435 0
+-0.364928 -0.131621 0
+-0.504695 -0.139767 0
+-0.6337 -0.129004 0
+-0.735434 -0.101734 0
+-0.799485 -0.0640515 0
+-0.823487 -0.024002 0
+-0.81273 0.0107571 0
+-0.777685 0.0350453 0
+-0.730407 0.0472777 0
+-0.681108 0.0492987 0
+-0.635974 0.0451347 0
+-0.596729 0.0392446 0
+-0.561777 0.0349524 0
+-0.528208 0.033569 0
+-0.493825 0.0343831 0
+-0.458455 0.0353695 0
+-0.424207 0.0342476 0
+-0.394737 0.0294706 0
+-0.373911 0.0208256 0
+-0.364406 0.00950563 0
+-0.366698 -0.00229272 0
+-0.378756 -0.0120573 0
+-0.396461 -0.0177054 0
+-0.414647 -0.0181856 0
+-0.42845 -0.0138032 0
+-0.43465 -0.00619977 0
+-0.432626 0.00202335 0
+-0.424649 0.00797727 0
+-0.415346 0.00930301 0
+-0.410444 0.00490194 0
+-0.415115 -0.00467118 0
+-0.432434 -0.0173186 0
+-0.462446 -0.0300118 0
+-0.502172 -0.0397268 0
+-0.546582 -0.0444094 0
+-0.590246 -0.0436642 0
+-0.629187 -0.0389411 0
+-0.662322 -0.0331351 0
+-0.691999 -0.0296771 0
+-0.723347 -0.0313478 0
+-0.762511 -0.0391641 0
+-0.814258 -0.0517469 0
+-0.879761 -0.065503 0
+-0.955484 -0.0757229 0
+-1.03383 -0.078343 0
+-1.10563 -0.0718065 0
+-1.16397 -0.0583396 0
+-1.20813 -0.0441596 0
+-1.24667 -0.0385364 0
+-1.2978 -0.0511349 0
+-1.3748 -0.0769929 0
+-0.908946 0.0116895 0
+-0.580144 0.0948992 0
+-0.580144 0.312313 0
+-0.170179 -0.027563 0
+-0.342341 -0.0531747 0
+-0.683284 -0.0923081 0
+-0.539098 -0.144186 0
+-0.364034 -0.175064 0
+-0.200156 -0.163878 0
+-0.085945 -0.114211 0
+-0.0414945 -0.0444505 0
+-0.0641318 0.0226372 0
+-0.133187 0.0690549 0
+-0.220079 0.0868926 0
+-0.298831 0.0787517 0
+-0.353073 0.054242 0
+-0.377977 0.0249043 0
+-0.377976 -8.87141e-07 0
+-0.362532 -0.0154441 0
+-0.342164 -0.0203682 0
+-0.32588 -0.0162842 0
+-0.319961 -0.00591861 0
+-0.327452 0.00749127 0
+-0.347888 0.0204357 0
+-0.377358 0.0294694 0
+-0.409348 0.0319905 0
+-0.436586 0.0272381 0
+-0.453443 0.0168565 0
+-0.457896 0.00445282 0
+-0.452036 -0.00585966 0
+-0.440765 -0.0112709 0
+-0.429306 -0.0114592 0
+-0.420833 -0.00847233 0
+-0.415469 -0.00536429 0
+-0.411087 -0.00438176 0
+-0.405339 -0.00574848 0
+-0.39762 -0.00771871 0
+-0.389824 -0.00779597 0
+-0.385494 -0.00432977 0
+-0.387969 0.00247454 0
+-0.398649 0.0106805 0
+-0.416351 0.0177017 0
+-0.43795 0.0215989 0
+-0.459746 0.0217962 0
+-0.478628 0.0188816 0
+-0.492424 0.0137963 0
+-0.499533 0.00710844 0
+-0.49848 -0.00105296 0
+-0.48812 -0.0103601 0
+-0.468652 -0.0194672 0
+-0.442905 -0.025747 0
+-0.416896 -0.0260099 0
+-0.398898 -0.0179976 0
+-0.397026 -0.00187178 0
+-0.416225 0.0191991 0
+-0.456054 0.0398286 0
+-0.51037 0.0543161 0
+-0.569164 0.0587937 0
+-0.621779 0.0526153 0
+-0.660175 0.0383959 0
+-0.680975 0.0208003 0
+-0.685721 0.00474597 0
+-0.67955 -0.00617093 0
+-0.669056 -0.0104941 0
+-0.660154 -0.00890169 0
+-0.656496 -0.00365854 0
+-0.658595 0.00209901 0
+-0.663581 0.00498587 0
+-0.665411 0.0018299 0
+-0.655488 -0.00992317 0
+-0.6238 -0.0316871 0
+-0.560772 -0.063028 0
+-0.459791 -0.100982 0
+-0.319925 -0.139866 0
+-0.147868 -0.172057 0
+0.0419588 -0.189827 0
+0.229715 -0.187756 0
+0.394497 -0.164782 0
+0.519433 -0.124936 0
+0.595755 -0.076322 0
+0.624411 -0.028656 0
+0.61476 0.0096505 0
+0.581045 0.0337155 0
+0.538091 0.042954 0
+0.497754 0.0403363 0
+0.467023 0.0307313 0
+0.447855 0.0191679 0
+0.438224 0.00963117 0
+0.433681 0.00454308 0
+0.428975 0.00470588 0
+0.419558 0.00941684 0
+0.402897 0.0166617 0
+0.379373 0.0235239 0
+0.352405 0.0269678 0
+0.327494 0.0249111 0
+0.310318 0.0171757 0
+0.304542 0.00577659 0
+0.310311 -0.00576913 0
+0.324237 -0.0139258 0
+0.340984 -0.0167473 0
+0.355775 -0.0147907 0
+0.366602 -0.0108272 0
+0.375062 -0.00846004 0
+0.385394 -0.010332 0
+0.402206 -0.0168125 0
+0.427985 -0.0257786 0
+0.461515 -0.0335297 0
+0.497847 -0.0363329 0
+0.529741 -0.0318933 0
+0.549962 -0.0202216 0
+0.553716 -0.00375334 0
+0.540579 0.0131368 0
+0.515539 0.0250398 0
+0.48876 0.0267792 0
+0.473729 0.0150313 0
+0.483649 -0.00992007 0
+0.526583 -0.0429348 0
+0.600787 -0.0742032 0
+0.692372 -0.0915854 0
+0.777336 -0.0849645 0
+0.82863 -0.0512933 0
+0.826795 0.00183498 0
+0.770649 0.0561461 0
+0.683616 0.087033 0
+0.61112 0.0724961 0
+0.593617 0.0175029 0
+0.560244 0.0855897 0
+0.425536 0.15836 0
+0.425536 0.390363 0
+-0.658359 -0.107149 0
+-1.31368 -0.194639 0
+-2.61505 -0.330273 0
+-2.25203 -0.507201 0
+-1.82255 -0.604545 0
+-1.44803 -0.538398 0
+-1.2366 -0.325645 0
+-1.23593 -0.0451166 0
+-1.42139 0.208092 0
+-1.715 0.362664 0
+-2.02118 0.393072 0
+-2.26147 0.319051 0
+-2.39505 0.187815 0
+-2.42062 0.0504808 0
+-2.36468 -0.0559499 0
+-2.26496 -0.115163 0
+-2.15747 -0.127851 0
+-2.07012 -0.10364 0
+-2.02139 -0.0546448 0
+-2.02065 0.00674458 0
+-2.06757 0.0673643 0
+-2.15158 0.113476 0
+-2.25336 0.133768 0
+-2.35025 0.124133 0
+-2.42425 0.0908496 0
+-2.46885 0.049053 0
+-2.49092 0.0162128 0
+-2.50593 0.00374309 0
+-2.52889 0.0115 0
+-2.56589 0.0285299 0
+-2.61105 0.0397884 0
+-2.65037 0.0349458 0
+-2.67026 0.0141381 0
+-2.6654 -0.0125834 0
+-2.64168 -0.0315128 0
+-2.61271 -0.0333035 0
+-2.5923 -0.0179362 0
+-2.58765 0.00603129 0
+-2.5969 0.0269604 0
+-2.6119 0.0365911 0
+-2.62355 0.033445 0
+-2.62617 0.0215101 0
+-2.6182 0.00582366 0
+-2.59965 -0.0114462 0
+-2.56928 -0.0314226 0
+-2.52448 -0.0551559 0
+-2.46484 -0.0791118 0
+-2.39732 -0.0932671 0
+-2.33925 -0.0840801 0
+-2.31582 -0.0414231 0
+-2.35196 0.0342679 0
+-2.46178 0.129017 0
+-2.64079 0.218837 0
+-2.86501 0.278536 0
+-3.09783 0.291617 0
+-3.30171 0.256493 0
+-3.44962 0.186307 0
+-3.5318 0.102983 0
+-3.55587 0.0288171 0
+-3.54152 -0.0205212 0
+-3.51277 -0.0392434 0
+-3.49075 -0.0309195 0
+-3.48865 -0.00576372 0
+-3.50903 0.02248 0
+-3.54302 0.0389797 0
+-3.57065 0.0294556 0
+-3.56225 -0.0183198 0
+-3.48177 -0.112175 0
+-3.29289 -0.251908 0
+-2.96844 -0.425425 0
+-2.50117 -0.607134 0
+-1.91206 -0.761169 0
+-1.25178 -0.850106 0
+-0.592724 -0.846815 0
+-0.0127164 -0.744789 0
+0.42448 -0.562132 0
+0.685035 -0.336878 0
+0.771546 -0.115166 0
+0.718272 0.0629247 0
+0.577762 0.174225 0
+0.404529 0.216187 0
+0.24163 0.203236 0
+0.113684 0.158677 0
+0.0265597 0.106292 0
+-0.0284214 0.0646123 0
+-0.0684365 0.0445582 0
+-0.112997 0.0492668 0
+-0.178235 0.0746541 0
+-0.271874 0.110301 0
+-0.389777 0.141427 0
+-0.515619 0.15281 0
+-0.624943 0.134235 0
+-0.693141 0.0853731 0
+-0.70467 0.0173055 0
+-0.659472 -0.0509667 0
+-0.573273 -0.100125 0
+-0.471133 -0.118886 0
+-0.376981 -0.108944 0
+-0.303935 -0.0838731 0
+-0.249946 -0.0624486 0
+-0.200585 -0.0596935 0
+-0.137336 -0.0800617 0
+-0.0472952 -0.115819 0
+0.0700559 -0.150881 0
+0.201472 -0.167749 0
+0.323802 -0.154224 0
+0.411108 -0.107527 0
+0.442661 -0.0353063 0
+0.410136 0.0456615 0
+0.322867 0.11231 0
+0.209833 0.139813 0
+0.116463 0.108402 0
+0.0945406 0.0120019 0
+0.185727 -0.134121 0
+0.402942 -0.291418 0
+0.717388 -0.406031 0
+1.05943 -0.427002 0
+1.33735 -0.329218 0
+1.47008 -0.130898 0
+1.42124 0.104987 0
+1.21694 0.291335 0
+0.929721 0.359716 0
+0.616917 0.330307 0
+0.461884 0.444458 0
+0.273749 0.440002 0
+0.273749 0.748088 0
+-1.32085 -0.210769 0
+-2.63003 -0.373082 0
+-5.23653 -0.62019 0
+-4.81212 -0.931617 0
+-4.349 -1.06766 0
+-4.02952 -0.857879 0
+-4.00209 -0.353072 0
+-4.30558 0.258374 0
+-4.85724 0.759757 0
+-5.49607 1.00149 0
+-6.05239 0.949387 0
+-6.40883 0.675496 0
+-6.52858 0.307561 0
+-6.44636 -0.0317408 0
+-6.23592 -0.266386 0
+-5.97499 -0.376093 0
+-5.72375 -0.37909 0
+-5.52075 -0.306646 0
+-5.38898 -0.186407 0
+-5.34171 -0.0405307 0
+-5.38196 0.107619 0
+-5.49817 0.229687 0
+-5.66288 0.298471 0
+-5.83999 0.301245 0
+-5.99926 0.250124 0
+-6.1301 0.179892 0
+-6.24562 0.131731 0
+-6.3731 0.131217 0
+-6.53537 0.173779 0
+-6.73393 0.227089 0
+-6.94382 0.249674 0
+-7.12388 0.21501 0
+-7.23655 0.126807 0
+-7.26578 0.0166442 0
+-7.22308 -0.0742097 0
+-7.13891 -0.11748 0
+-7.04526 -0.111588 0
+-6.96024 -0.0789885 0
+-6.88311 -0.0501611 0
+-6.8013 -0.0452204 0
+-6.70316 -0.0647019 0
+-6.58745 -0.094192 0
+-6.46366 -0.117967 0
+-6.34407 -0.131035 0
+-6.2348 -0.140702 0
+-6.13331 -0.156638 0
+-6.03544 -0.176987 0
+-5.94733 -0.181376 0
+-5.89381 -0.1376 0
+-5.91548 -0.0197479 0
+-6.05363 0.172417 0
+-6.32958 0.40496 0
+-6.72936 0.61862 0
+-7.20252 0.751694 0
+-7.67648 0.765581 0
+-8.08019 0.660204 0
+-8.3662 0.472315 0
+-8.52217 0.258954 0
+-8.56881 0.0754558 0
+-8.54773 -0.0416027 0
+-8.50611 -0.0808598 0
+-8.48395 -0.0530863 0
+-8.5061 0.0163912 0
+-8.57861 0.0949907 0
+-8.68731 0.147679 0
+-8.79741 0.139551 0
+-8.85409 0.0383681 0
+-8.78646 -0.179807 0
+-8.51816 -0.520213 0
+-7.9865 -0.957084 0
+-7.16662 -1.42701 0
+-6.09186 -1.83593 0
+-4.85968 -2.08228 0
+-3.61665 -2.08985 0
+-2.52425 -1.83719 0
+-1.7166 -1.36978 0
+-1.2654 -0.788084 0
+-1.16513 -0.215436 0
+-1.34304 0.240836 0
+-1.68808 0.519269 0
+-2.08631 0.614419 0
+-2.44971 0.566632 0
+-2.73068 0.439651 0
+-2.92199 0.297596 0
+-3.04696 0.189587 0
+-3.14608 0.14368 0
+-3.26348 0.166661 0
+-3.43434 0.24552 0
+-3.67368 0.34964 0
+-3.96841 0.436153 0
+-4.27668 0.461078 0
+-4.53757 0.395122 0
+-4.69021 0.238021 0
+-4.69612 0.0232127 0
+-4.55504 -0.192044 0
+-4.30648 -0.348689 0
+-4.01496 -0.410404 0
+-3.74518 -0.378728 0
+-3.53802 -0.291032 0
+-3.39814 -0.202332 0
+-3.29771 -0.160119 0
+-3.19333 -0.184441 0
+-3.04725 -0.261902 0
+-2.84369 -0.354439 0
+-2.59487 -0.416571 0
+-2.33678 -0.412313 0
+-2.11848 -0.325826 0
+-1.9887 -0.16509 0
+-1.98177 0.0387318 0
+-2.10386 0.234403 0
+-2.32184 0.357798 0
+-2.56022 0.346773 0
+-2.71264 0.164426 0
+-2.67093 -0.17583 0
+-2.36553 -0.596821 0
+-1.80216 -0.969396 0
+-1.07562 -1.15354 0
+-0.347981 -1.05686 0
+0.20556 -0.68444 0
+0.461933 -0.151386 0
+0.394802 0.358467 0
+0.0731461 0.681371 0
+-0.37776 0.781212 0
+-0.328539 0.829162 0
+-0.280944 0.594704 0
+-0.280944 0.786237 0
+-1.96073 -0.296265 0
+-3.90388 -0.511464 0
+-7.7848 -0.826964 0
+-7.52106 -1.19536 0
+-7.32799 -1.26073 0
+-7.40202 -0.783852 0
+-7.86992 0.114831 0
+-8.70576 1.09421 0
+-9.73425 1.78825 0
+-10.7071 1.97436 0
+-11.4063 1.64857 0
+-11.7219 0.991061 0
+-11.6724 0.258094 0
+-11.3687 -0.335484 0
+-10.9491 -0.68591 0
+-10.5245 -0.800754 0
+-10.1549 -0.748672 0
+-9.86105 -0.600483 0
+-9.64966 -0.397797 0
+-9.53114 -0.159049 0
+-9.51841 0.0948865 0
+-9.61269 0.323966 0
+-9.79246 0.478239 0
+-10.0183 0.527064 0
+-10.2531 0.484909 0
+-10.4844 0.411235 0
+-10.7324 0.379686 0
+-11.0349 0.433786 0
+-11.4184 0.557261 0
+-11.8707 0.679367 0
+-12.335 0.713973 0
+-12.7296 0.609618 0
+-12.9832 0.380449 0
+-13.0661 0.0994732 0
+-12.9989 -0.141401 0
+-12.8363 -0.280089 0
+-12.6349 -0.312899 0
+-12.4265 -0.287426 0
+-12.2099 -0.266794 0
+-11.9656 -0.289501 0
+-11.6801 -0.350171 0
+-11.363 -0.411312 0
+-11.0459 -0.435123 0
+-10.7653 -0.411576 0
+-10.5433 -0.362731 0
+-10.3792 -0.320693 0
+-10.2606 -0.295609 0
+-10.1843 -0.257676 0
+-10.1736 -0.148282 0
+-10.2772 0.0837821 0
+-10.5471 0.442366 0
+-11.0078 0.865646 0
+-11.6323 1.24311 0
+-12.3415 1.46087 0
+-13.0276 1.45169 0
+-13.591 1.22367 0
+-13.9727 0.854012 0
+-14.1676 0.453876 0
+-14.217 0.124778 0
+-14.1865 -0.072085 0
+-14.1438 -0.123565 0
+-14.1426 -0.0542511 0
+-14.2157 0.0894469 0
+-14.3722 0.251479 0
+-14.5965 0.371995 0
+-14.8456 0.388678 0
+-15.0457 0.238512 0
+-15.0929 -0.132651 0
+-14.8654 -0.747756 0
+-14.2533 -1.56918 0
+-13.2004 -2.47983 0
+-11.7427 -3.29366 0
+-10.0229 -3.80214 0
+-8.26908 -3.84363 0
+-6.7394 -3.36686 0
+-5.65028 -2.4589 0
+-5.11647 -1.32189 0
+-5.12511 -0.206805 0
+-5.55217 0.667898 0
+-6.21177 1.17887 0
+-6.91636 1.31901 0
+-7.52525 1.17552 0
+-7.96823 0.882629 0
+-8.24408 0.573446 0
+-8.40289 0.348404 0
+-8.52263 0.263413 0
+-8.68578 0.329818 0
+-8.95744 0.517178 0
+-9.36497 0.757169 0
+-9.88335 0.954532 0
+-10.4336 1.01129 0
+-10.9002 0.861789 0
+-11.1672 0.504942 0
+-11.1593 0.0153512 0
+-10.8735 -0.477853 0
+-10.3828 -0.83935 0
+-9.81091 -0.982315 0
+-9.28638 -0.903252 0
+-8.89755 -0.67986 0
+-8.66638 -0.433505 0
+-8.55096 -0.275541 0
+-8.47191 -0.263487 0
+-8.34826 -0.385551 0
+-8.12716 -0.575541 0
+-7.79857 -0.745165 0
+-7.39502 -0.815859 0
+-6.98194 -0.738911 0
+-6.64294 -0.504085 0
+-6.46061 -0.143594 0
+-6.49106 0.264845 0
+-6.73481 0.601555 0
+-7.11475 0.726706 0
+-7.47666 0.526341 0
+-7.62413 -0.0283647 0
+-7.38372 -0.837229 0
+-6.67795 -1.67516 0
+-5.57204 -2.25945 0
+-4.26671 -2.36219 0
+-3.0325 -1.91865 0
+-2.11089 -1.07299 0
+-1.62653 -0.125895 0
+-1.54862 0.603455 0
+-1.70333 0.935925 0
+-1.0876 0.917363 0
+-0.668028 0.509477 0
+-0.668028 0.601407 0
+-2.42378 -0.336007 0
+-4.82598 -0.560012 0
+-9.63543 -0.864814 0
+-9.67229 -1.15849 0
+-9.93311 -0.999912 0
+-10.5797 -0.137247 0
+-11.6593 1.19445 0
+-13.0402 2.47507 0
+-14.446 3.19402 0
+-15.5673 3.09566 0
+-16.1888 2.2701 0
+-16.267 1.06922 0
+-15.9237 -0.0851253 0
+-15.3692 -0.88999 0
+-14.8004 -1.25472 0
+-14.3302 -1.27099 0
+-13.9763 -1.10252 0
+-13.7024 -0.874396 0
+-13.4743 -0.62596 0
+-13.2938 -0.339479 0
+-13.194 -0.00496127 0
+-13.2067 0.336669 0
+-13.3342 0.605707 0
+-13.5463 0.739185 0
+-13.8056 0.744256 0
+-14.0998 0.70542 0
+-14.4551 0.734934 0
+-14.918 0.896707 0
+-15.5151 1.1544 0
+-16.2166 1.38085 0
+-16.9294 1.42679 0
+-17.5283 1.20848 0
+-17.9082 0.760379 0
+-18.0292 0.220447 0
+-17.9274 -0.243223 0
+-17.6873 -0.52012 0
+-17.393 -0.607206 0
+-17.087 -0.593486 0
+-16.761 -0.592806 0
+-16.3807 -0.66978 0
+-15.9253 -0.805537 0
+-15.4149 -0.921737 0
+-14.9078 -0.942215 0
+-14.4718 -0.847571 0
+-14.1498 -0.684767 0
+-13.9441 -0.526378 0
+-13.83 -0.409678 0
+-13.7878 -0.299867 0
+-13.8305 -0.10563 0
+-14.0063 0.259617 0
+-14.3722 0.80827 0
+-14.9524 1.44578 0
+-15.7078 1.99854 0
+-16.5368 2.2899 0
+-17.308 2.22282 0
+-17.9085 1.82424 0
+-18.2838 1.2293 0
+-18.4482 0.618265 0
+-18.4671 0.143654 0
+-18.4243 -0.114892 0
+-18.3944 -0.153443 0
+-18.4303 -0.0183297 0
+-18.5623 0.221433 0
+-18.8001 0.489274 0
+-19.1322 0.704145 0
+-19.5201 0.776565 0
+-19.8873 0.605701 0
+-20.1114 0.0914406 0
+-20.0333 -0.825892 0
+-19.4948 -2.10762 0
+-18.3998 -3.57483 0
+-16.7737 -4.9198 0
+-14.7912 -5.78461 0
+-12.7513 -5.88354 0
+-11.0002 -5.11797 0
+-9.83002 -3.62908 0
+-9.39196 -1.75995 0
+-9.6583 0.0595401 0
+-10.4461 1.45567 0
+-11.4883 2.22112 0
+-12.5211 2.3518 0
+-13.3529 2.00731 0
+-13.8971 1.42679 0
+-14.1678 0.844224 0
+-14.2535 0.434031 0
+-14.2817 0.291653 0
+-14.386 0.434073 0
+-14.6726 0.803838 0
+-15.1897 1.27428 0
+-15.9033 1.66804 0
+-16.693 1.80109 0
+-17.3793 1.54802 0
+-17.7774 0.903062 0
+-17.7643 0.00229353 0
+-17.3282 -0.913991 0
+-16.5777 -1.5899 0
+-15.7045 -1.85549 0
+-14.9145 -1.69324 0
+-14.3566 -1.23775 0
+-14.0793 -0.710765 0
+-14.0294 -0.325448 0
+-14.0865 -0.206437 0
+-14.1135 -0.358561 0
+-14.0009 -0.688103 0
+-13.6924 -1.05367 0
+-13.1925 -1.31581 0
+-12.5638 -1.36754 0
+-11.9188 -1.14908 0
+-11.4007 -0.661773 0
+-11.1476 0.0117638 0
+-11.2404 0.694402 0
+-11.6493 1.13557 0
+-12.2079 1.08491 0
+-12.6408 0.404624 0
+-12.6481 -0.829927 0
+-12.0184 -2.30488 0
+-10.7227 -3.55515 0
+-8.94048 -4.14444 0
+-6.99949 -3.85964 0
+-5.25284 -2.81964 0
+-3.9478 -1.43094 0
+-3.14431 -0.200038 0
+-2.71349 0.505103 0
+-1.44966 0.61946 0
+-0.73695 0.265055 0
+-0.73695 0.395551 0
+-2.64473 -0.327469 0
+-5.25857 -0.516504 0
+-10.4919 -0.733725 0
+-10.8227 -0.827659 0
+-11.5061 -0.316599 0
+-12.6367 0.993386 0
+-14.1568 2.71458 0
+-15.8291 4.14738 0
+-17.308 4.67289 0
+-18.2772 4.06488 0
+-18.5827 2.57562 0
+-18.291 0.777443 0
+-17.644 -0.732135 0
+-16.9385 -1.59548 0
+-16.3948 -1.79835 0
+-16.083 -1.58284 0
+-15.936 -1.24952 0
+-15.8304 -0.97997 0
+-15.6778 -0.778527 0
+-15.4733 -0.543996 0
+-15.2807 -0.197616 0
+-15.1768 0.232768 0
+-15.1999 0.628813 0
+-15.337 0.876347 0
+-15.5535 0.960688 0
+-15.8359 0.987885 0
+-16.2139 1.11293 0
+-16.74 1.42279 0
+-17.4409 1.85532 0
+-18.2732 2.21314 0
+-19.1165 2.27004 0
+-19.8137 1.90571 0
+-20.2385 1.18523 0
+-20.3506 0.332508 0
+-20.2066 -0.387198 0
+-19.9213 -0.80549 0
+-19.6012 -0.927289 0
+-19.2921 -0.902584 0
+-18.969 -0.915886 0
+-18.5727 -1.0661 0
+-18.0658 -1.31239 0
+-17.4717 -1.51584 0
+-16.8707 -1.54321 0
+-16.3591 -1.35922 0
+-15.9994 -1.04443 0
+-15.7964 -0.72934 0
+-15.7122 -0.493891 0
+-15.708 -0.304142 0
+-15.7819 -0.0316967 0
+-15.9765 0.454232 0
+-16.3486 1.18042 0
+-16.9215 2.01863 0
+-17.6499 2.72689 0
+-18.4227 3.06277 0
+-19.104 2.90409 0
+-19.5887 2.30895 0
+-19.8436 1.4842 0
+-19.9107 0.685384 0
+-19.876 0.108986 0
+-19.8263 -0.164622 0
+-19.8214 -0.158373 0
+-19.8928 0.053105 0
+-20.0555 0.384116 0
+-20.3159 0.749681 0
+-20.672 1.06026 0
+-21.104 1.20854 0
+-21.555 1.05671 0
+-21.91 0.446414 0
+-21.9959 -0.739951 0
+-21.6228 -2.48075 0
+-20.6591 -4.53855 0
+-19.1104 -6.4685 0
+-17.1602 -7.73481 0
+-15.1443 -7.8994 0
+-13.4604 -6.80191 0
+-12.4441 -4.64532 0
+-12.2627 -1.94142 0
+-12.8674 0.66431 0
+-14.0239 2.61215 0
+-15.4006 3.59782 0
+-16.677 3.6282 0
+-17.6284 2.95869 0
+-18.1636 1.96202 0
+-18.3175 0.99806 0
+-18.2158 0.332351 0
+-18.0333 0.109132 0
+-17.9524 0.353252 0
+-18.1231 0.974516 0
+-18.6209 1.77207 0
+-19.4134 2.46049 0
+-20.3513 2.739 0
+-21.2007 2.39743 0
+-21.7147 1.41706 0
+-21.7219 0.00954008 0
+-21.1951 -1.44085 0
+-20.2667 -2.51825 0
+-19.1834 -2.93875 0
+-18.2171 -2.65957 0
+-17.5716 -1.88323 0
+-17.3235 -0.958902 0
+-17.4151 -0.233901 0
+-17.6939 0.0724436 0
+-17.9734 -0.0791011 0
+-18.0863 -0.575178 0
+-17.919 -1.22098 0
+-17.4273 -1.80749 0
+-16.6454 -2.1495 0
+-15.6902 -2.10427 0
+-14.753 -1.59899 0
+-14.0608 -0.680341 0
+-13.8042 0.437787 0
+-14.0486 1.37991 0
+-14.6717 1.70802 0
+-15.3682 1.10114 0
+-15.7371 -0.461023 0
+-15.4259 -2.61611 0
+-14.2703 -4.71069 0
+-12.3645 -6.05023 0
+-10.0252 -6.19897 0
+-7.66637 -5.17847 0
+-5.64389 -3.45342 0
+-4.14334 -1.70059 0
+-3.16453 -0.473711 0
+-1.44407 0.0752583 0
+-0.616206 0.020003 0
+-0.616206 0.305575 0
+-2.64288 -0.287695 0
+-5.2336 -0.416452 0
+-10.4001 -0.503547 0
+-10.8942 -0.33353 0
+-11.7839 0.573035 0
+-13.088 2.29751 0
+-14.6605 4.28714 0
+-16.2055 5.69232 0
+-17.3751 5.8425 0
+-17.9126 4.60235 0
+-17.7673 2.43038 0
+-17.1206 0.130689 0
+-16.3034 -1.54929 0
+-15.6472 -2.25175 0
+-15.342 -2.10347 0
+-15.3762 -1.54869 0
+-15.5803 -1.04536 0
+-15.7447 -0.815639 0
+-15.7364 -0.786774 0
+-15.5541 -0.726303 0
+-15.2984 -0.45337 0
+-15.0917 0.0261547 0
+-15.0065 0.543585 0
+-15.0442 0.914069 0
+-15.17 1.08647 0
+-15.3662 1.18404 0
+-15.6611 1.40781 0
+-16.1104 1.87211 0
+-16.7441 2.48902 0
+-17.5175 2.98659 0
+-18.3042 3.05675 0
+-18.941 2.54243 0
+-19.3014 1.54567 0
+-19.3557 0.386795 0
+-19.1796 -0.563311 0
+-18.9071 -1.07794 0
+-18.6544 -1.18006 0
+-18.4593 -1.09763 0
+-18.2737 -1.10146 0
+-18.0092 -1.33061 0
+-17.6066 -1.71502 0
+-17.0835 -2.03894 0
+-16.5305 -2.09619 0
+-16.0608 -1.82895 0
+-15.7488 -1.35637 0
+-15.5994 -0.878788 0
+-15.5635 -0.529797 0
+-15.5865 -0.281096 0
+-15.6529 0.0346936 0
+-15.7967 0.598034 0
+-16.0716 1.45529 0
+-16.5007 2.44778 0
+-17.0419 3.26805 0
+-17.5924 3.61331 0
+-18.0335 3.34517 0
+-18.2871 2.56255 0
+-18.3518 1.54888 0
+-18.296 0.62959 0
+-18.2141 0.0270141 0
+-18.1751 -0.203569 0
+-18.2012 -0.132321 0
+-18.2846 0.136584 0
+-18.4162 0.515676 0
+-18.5967 0.930213 0
+-18.8361 1.29965 0
+-19.1424 1.51486 0
+-19.4975 1.41181 0
+-19.8223 0.771194 0
+-19.9659 -0.596394 0
+-19.7429 -2.70368 0
+-19.012 -5.26948 0
+-17.7596 -7.72092 0
+-16.1469 -9.34748 0
+-14.4889 -9.55742 0
+-13.1649 -8.1259 0
+-12.4941 -5.31614 0
+-12.6264 -1.80913 0
+-13.495 1.53292 0
+-14.8482 3.96541 0
+-16.343 5.09254 0
+-17.6561 4.94129 0
+-18.5694 3.87205 0
+-19.0042 2.39677 0
+-19.0081 1.00201 0
+-18.7188 0.0430002 0
+-18.3228 -0.286819 0
+-18.0193 0.0497321 0
+-17.9808 0.936047 0
+-18.3086 2.09987 0
+-18.9904 3.14223 0
+-19.8831 3.63173 0
+-20.742 3.25633 0
+-21.2965 1.97153 0
+-21.3488 0.0618629 0
+-20.8532 -1.93646 0
+-19.9382 -3.43328 0
+-18.8604 -4.0165 0
+-17.9105 -3.60948 0
+-17.3122 -2.48153 0
+-17.1567 -1.11441 0
+-17.3925 0.00196691 0
+-17.8641 0.544007 0
+-18.371 0.427797 0
+-18.7205 -0.225688 0
+-18.7597 -1.18178 0
+-18.3942 -2.17297 0
+-17.607 -2.93673 0
+-16.481 -3.23029 0
+-15.2103 -2.86967 0
+-14.074 -1.81667 0
+-13.3581 -0.278088 0
+-13.2435 1.26537 0
+-13.7071 2.17161 0
+-14.4919 1.88588 0
+-15.1757 0.222812 0
+-15.32 -2.4718 0
+-14.6355 -5.39518 0
+-13.0905 -7.59527 0
+-10.9127 -8.37676 0
+-8.48973 -7.60146 0
+-6.22096 -5.72219 0
+-4.39658 -3.52496 0
+-3.16246 -1.70784 0
+-1.27922 -0.498779 0
+-0.482309 -0.113814 0
+-0.482309 0.359081 0
+-2.4884 -0.240418 0
+-4.89166 -0.308767 0
+-9.64125 -0.270452 0
+-10.1182 0.14344 0
+-10.9249 1.3797 0
+-12.0171 3.3897 0
+-13.2103 5.48034 0
+-14.2263 6.70832 0
+-14.7955 6.41172 0
+-14.7754 4.58226 0
+-14.2269 1.88185 0
+-13.4039 -0.69227 0
+-12.6525 -2.30071 0
+-12.262 -2.64225 0
+-12.342 -2.02352 0
+-12.7877 -1.10293 0
+-13.3516 -0.481519 0
+-13.7771 -0.390133 0
+-13.9213 -0.642552 0
+-13.8007 -0.846884 0
+-13.5462 -0.707885 0
+-13.3071 -0.212917 0
+-13.1699 0.406397 0
+-13.1373 0.881409 0
+-13.1675 1.11668 0
+-13.2347 1.25126 0
+-13.3623 1.5354 0
+-13.6067 2.11655 0
+-14.006 2.88827 0
+-14.5312 3.51182 0
+-15.0787 3.60421 0
+-15.5111 2.97484 0
+-15.7258 1.76035 0
+-15.7088 0.369846 0
+-15.5417 -0.730456 0
+-15.354 -1.26564 0
+-15.2492 -1.28487 0
+-15.247 -1.09975 0
+-15.2784 -1.07013 0
+-15.2345 -1.37443 0
+-15.0407 -1.90891 0
+-14.7055 -2.37413 0
+-14.3169 -2.4847 0
+-13.9887 -2.15723 0
+-13.7946 -1.55043 0
+-13.7357 -0.937745 0
+-13.7558 -0.509681 0
+-13.791 -0.245837 0
+-13.8153 0.0589593 0
+-13.8527 0.635462 0
+-13.9509 1.55347 0
+-14.135 2.6319 0
+-14.377 3.51003 0
+-14.6022 3.83848 0
+-14.7294 3.47243 0
+-14.7196 2.55269 0
+-14.6009 1.43019 0
+-14.4541 0.482772 0
+-14.3626 -0.0644622 0
+-14.3596 -0.20655 0
+-14.4142 -0.0777063 0
+-14.4741 0.196431 0
+-14.5078 0.549364 0
+-14.5119 0.934364 0
+-14.5054 1.29316 0
+-14.5207 1.53011 0
+-14.5817 1.47287 0
+-14.6637 0.853135 0
+-14.6781 -0.581985 0
+-14.5003 -2.88144 0
+-14.0275 -5.74226 0
+-13.242 -8.50641 0
+-12.249 -10.3405 0
+-11.2648 -10.5416 0
+-10.5532 -8.83752 0
+-10.3332 -5.53616 0
+-10.6972 -1.4451 0
+-11.5764 2.41214 0
+-12.7681 5.15703 0
+-14.0101 6.33461 0
+-15.0672 5.99838 0
+-15.7899 4.59475 0
+-16.1307 2.73759 0
+-16.1256 0.99692 0
+-15.8649 -0.21776 0
+-15.4716 -0.680065 0
+-15.089 -0.332882 0
+-14.8616 0.708662 0
+-14.9005 2.13876 0
+-15.2383 3.48003 0
+-15.7989 4.19231 0
+-16.4072 3.86458 0
+-16.8462 2.41055 0
+-16.9415 0.157228 0
+-16.6342 -2.24381 0
+-16.0066 -4.06085 0
+-15.25 -4.77314 0
+-14.5889 -4.27061 0
+-14.1996 -2.87082 0
+-14.1571 -1.1569 0
+-14.4274 0.272281 0
+-14.8977 1.01432 0
+-15.4198 0.949895 0
+-15.8428 0.197263 0
+-16.0275 -0.997025 0
+-15.8556 -2.34486 0
+-15.2508 -3.54157 0
+-14.2185 -4.26255 0
+-12.885 -4.2032 0
+-11.5 -3.20161 0
+-10.3792 -1.39897 0
+-9.79224 0.678446 0
+-9.84475 2.22413 0
+-10.4119 2.45299 0
+-11.166 0.976945 0
+-11.6929 -1.94492 0
+-11.6458 -5.44226 0
+-10.8689 -8.37214 0
+-9.4383 -9.80738 0
+-7.61256 -9.4272 0
+-5.72905 -7.60571 0
+-4.10261 -5.1514 0
+-2.97454 -2.83591 0
+-1.15881 -0.949267 0
+-0.441796 -0.125288 0
+-0.441796 0.501164 0
+-2.26329 -0.204352 0
+-4.40522 -0.232636 0
+-8.58033 -0.113172 0
+-8.8896 0.45271 0
+-9.37503 1.86513 0
+-9.95527 3.96994 0
+-10.4682 5.99329 0
+-10.7304 6.97053 0
+-10.6152 6.29646 0
+-10.1189 4.08602 0
+-9.38477 1.14771 0
+-8.66435 -1.41269 0
+-8.22576 -2.73929 0
+-8.24254 -2.62547 0
+-8.71612 -1.54995 0
+-9.47485 -0.344201 0
+-10.2548 0.29839 0
+-10.8214 0.176501 0
+-11.0679 -0.396028 0
+-11.0388 -0.876033 0
+-10.8733 -0.87338 0
+-10.7112 -0.374946 0
+-10.6209 0.316017 0
+-10.5872 0.847785 0
+-10.556 1.08549 0
+-10.4927 1.18791 0
+-10.4144 1.45708 0
+-10.3769 2.07911 0
+-10.4308 2.9421 0
+-10.5796 3.66063 0
+-10.7707 3.79539 0
+-10.9235 3.1276 0
+-10.9771 1.81394 0
+-10.9297 0.322458 0
+-10.8435 -0.816681 0
+-10.8098 -1.29936 0
+-10.893 -1.20166 0
+-11.0873 -0.90544 0
+-11.3151 -0.842336 0
+-11.4708 -1.21874 0
+-11.4838 -1.89584 0
+-11.3608 -2.49715 0
+-11.1787 -2.66681 0
+-11.0351 -2.30089 0
+-10.9893 -1.59622 0
+-11.0334 -0.893584 0
+-11.1077 -0.435445 0
+-11.1444 -0.209095 0
+-11.1092 0.0237888 0
+-11.0136 0.539806 0
+-10.8953 1.43517 0
+-10.7837 2.52029 0
+-10.6773 3.40364 0
+-10.5493 3.71046 0
+-10.3733 3.2965 0
+-10.1517 2.33107 0
+-9.92675 1.20522 0
+-9.7652 0.321228 0
+-9.7175 -0.112168 0
+-9.77165 -0.1524 0
+-9.84473 -0.00462112 0
+-9.85323 0.204935 0
+-9.75978 0.455906 0
+-9.56104 0.735631 0
+-9.27584 1.00796 0
+-8.9402 1.19447 0
+-8.59527 1.12794 0
+-8.26411 0.521976 0
+-7.95791 -0.888185 0
+-7.68271 -3.15664 0
+-7.44171 -5.98326 0
+-7.24108 -8.70704 0
+-7.0992 -10.4824 0
+-7.05061 -10.5902 0
+-7.13713 -8.751 0
+-7.38783 -5.28546 0
+-7.79909 -1.03384 0
+-8.32805 2.9411 0
+-8.90657 5.73555 0
+-9.46932 6.89736 0
+-9.9778 6.50686 0
+-10.4232 5.04013 0
+-10.8066 3.121 0
+-11.1134 1.30378 0
+-11.3047 -0.026486 0
+-11.3363 -0.64851 0
+-11.1948 -0.474312 0
+-10.9238 0.437607 0
+-10.6165 1.83143 0
+-10.3771 3.24067 0
+-10.272 4.08716 0
+-10.3004 3.89302 0
+-10.4026 2.5128 0
+-10.4976 0.252189 0
+-10.5269 -2.21447 0
+-10.4806 -4.10717 0
+-10.3931 -4.86065 0
+-10.3176 -4.34618 0
+-10.2961 -2.89223 0
+-10.3441 -1.10898 0
+-10.4526 0.38078 0
+-10.6037 1.16545 0
+-10.7806 1.12678 0
+-10.9606 0.377338 0
+-11.0943 -0.863353 0
+-11.0885 -2.35069 0
+-10.819 -3.81106 0
+-10.1808 -4.90077 0
+-9.15679 -5.2272 0
+-7.86538 -4.49302 0
+-6.54919 -2.71516 0
+-5.49799 -0.372753 0
+-4.93708 1.66321 0
+-4.93428 2.45019 0
+-5.3708 1.41347 0
+-5.98827 -1.32745 0
+-6.4873 -4.94323 0
+-6.63171 -8.22773 0
+-6.31757 -10.1215 0
+-5.58934 -10.1554 0
+-4.61116 -8.58389 0
+-3.61634 -6.14622 0
+-2.85759 -3.59465 0
+-1.19533 -1.24074 0
+-0.516226 -0.0854292 0
+-0.516226 0.64478 0
+-2.03301 -0.1872 0
+-3.91756 -0.204743 0
+-7.53319 -0.0668679 0
+-7.60518 0.524694 0
+-7.66356 1.92351 0
+-7.61781 3.9242 0
+-7.37644 5.75191 0
+-6.89976 6.49385 0
+-6.23114 5.62783 0
+-5.49496 3.34984 0
+-4.8643 0.51704 0
+-4.50996 -1.76702 0
+-4.54544 -2.70381 0
+-4.98353 -2.18738 0
+-5.72272 -0.810756 0
+-6.57665 0.509723 0
+-7.342 1.06374 0
+-7.87684 0.711339 0
+-8.14958 -0.123284 0
+-8.23182 -0.793795 0
+-8.24017 -0.86503 0
+-8.26353 -0.35158 0
+-8.3192 0.371679 0
+-8.35939 0.887979 0
+-8.31606 1.04216 0
+-8.14997 1.02183 0
+-7.87404 1.18114 0
+-7.54252 1.74758 0
+-7.22023 2.61981 0
+-6.95454 3.39494 0
+-6.76408 3.60493 0
+-6.64486 3.00838 0
+-6.58633 1.75541 0
+-6.58741 0.323536 0
+-6.66225 -0.741837 0
+-6.82999 -1.13162 0
+-7.09255 -0.9391 0
+-7.41595 -0.582038 0
+-7.73278 -0.525504 0
+-7.97074 -0.980788 0
+-8.09185 -1.77473 0
+-8.11529 -2.4737 0
+-8.10557 -2.67653 0
+-8.1323 -2.27417 0
+-8.22768 -1.50084 0
+-8.36848 -0.752778 0
+-8.49137 -0.312553 0
+-8.52791 -0.172558 0
+-8.43538 -0.0687369 0
+-8.20824 0.312665 0
+-7.87013 1.09705 0
+-7.45643 2.1066 0
+-7.00418 2.95139 0
+-6.5516 3.25788 0
+-6.13847 2.88337 0
+-5.80361 1.9962 0
+-5.58026 0.981875 0
+-5.48959 0.230558 0
+-5.52773 -0.0740355 0
+-5.6415 -0.0386258 0
+-5.71434 0.068221 0
+-5.66841 0.159 0
+-5.485 0.2725 0
+-5.16357 0.4142 0
+-4.71166 0.556046 0
+-4.1378 0.620608 0
+-3.42951 0.419653 0
+-2.62357 -0.283968 0
+-1.86543 -1.64633 0
+-1.36574 -3.65633 0
+-1.30219 -6.04681 0
+-1.7348 -8.27443 0
+-2.5742 -9.64296 0
+-3.60967 -9.55475 0
+-4.57991 -7.78077 0
+-5.25771 -4.60766 0
+-5.51916 -0.772393 0
+-5.37691 2.79885 0
+-4.97238 5.33102 0
+-4.53353 6.45851 0
+-4.30752 6.28085 0
+-4.48208 5.21468 0
+-5.1164 3.75532 0
+-6.10777 2.29515 0
+-7.21379 1.07954 0
+-8.1299 0.2676 0
+-8.59497 -0.00923902 0
+-8.48201 0.324641 0
+-7.83705 1.18648 0
+-6.85495 2.25857 0
+-5.80878 3.04099 0
+-4.96524 3.04948 0
+-4.51592 2.06348 0
+-4.53962 0.275895 0
+-4.99665 -1.75744 0
+-5.74899 -3.35483 0
+-6.59893 -4.01071 0
+-7.33852 -3.60659 0
+-7.80044 -2.43031 0
+-7.8994 -1.01001 0
+-7.65345 0.134825 0
+-7.1778 0.689803 0
+-6.6492 0.598179 0
+-6.24528 -0.0265884 0
+-6.0743 -1.03433 0
+-6.12193 -2.30307 0
+-6.24324 -3.68974 0
+-6.21367 -4.93033 0
+-5.82363 -5.61724 0
+-4.97636 -5.34029 0
+-3.74272 -3.9488 0
+-2.34694 -1.76853 0
+-1.0907 0.406964 0
+-0.249802 1.6093 0
+0.0148596 1.1488 0
+-0.297613 -1.01498 0
+-1.03638 -4.20447 0
+-1.95167 -7.31244 0
+-2.77378 -9.2994 0
+-3.29569 -9.63352 0
+-3.43574 -8.44383 0
+-3.26057 -6.3214 0
+-2.95849 -3.89673 0
+-1.39994 -1.43018 0
+-0.672972 -0.090711 0
+-0.672972 0.715964 0
+-1.83375 -0.185829 0
+-3.51094 -0.218549 0
+-6.6886 -0.119581 0
+-6.5447 0.380798 0
+-6.21896 1.59777 0
+-5.63224 3.33748 0
+-4.78259 4.90226 0
+-3.77901 5.49027 0
+-2.81773 4.66655 0
+-2.11184 2.64396 0
+-1.81246 0.217654 0
+-1.9601 -1.61938 0
+-2.48313 -2.18078 0
+-3.23389 -1.43662 0
+-4.04076 -0.00388368 0
+-4.75752 1.22648 0
+-5.29956 1.60579 0
+-5.65948 1.07126 0
+-5.89549 0.112728 0
+-6.09394 -0.595348 0
+-6.32061 -0.638364 0
+-6.58488 -0.0873034 0
+-6.83563 0.622428 0
+-6.98891 1.04125 0
+-6.96899 1.02225 0
+-6.73951 0.792339 0
+-6.31224 0.753878 0
+-5.73818 1.17352 0
+-5.0938 1.97543 0
+-4.47009 2.77123 0
+-3.95977 3.09461 0
+-3.63783 2.68644 0
+-3.54103 1.65862 0
+-3.65823 0.44073 0
+-3.93813 -0.461935 0
+-4.30936 -0.760388 0
+-4.70059 -0.54787 0
+-5.05271 -0.229924 0
+-5.32517 -0.253045 0
+-5.50308 -0.802872 0
+-5.60362 -1.67419 0
+-5.67197 -2.40536 0
+-5.7624 -2.58611 0
+-5.91127 -2.1253 0
+-6.11641 -1.29569 0
+-6.33484 -0.534357 0
+-6.49889 -0.148502 0
+-6.53984 -0.131605 0
+-6.40608 -0.202492 0
+-6.07215 -0.0212708 0
+-5.54393 0.568834 0
+-4.86349 1.42616 0
+-4.11207 2.19997 0
+-3.3991 2.54491 0
+-2.83144 2.31572 0
+-2.4766 1.64136 0
+-2.34078 0.846052 0
+-2.3751 0.26488 0
+-2.50445 0.0553133 0
+-2.64743 0.104353 0
+-2.68324 0.104039 0
+-2.60432 0.0800791 0
+-2.42341 0.0915906 0
+-2.13665 0.127441 0
+-1.73939 0.158784 0
+-1.20319 0.0843999 0
+-0.310997 -0.472536 0
+0.915582 -1.51055 0
+2.15534 -2.88608 0
+2.94245 -4.44344 0
+2.892 -5.99637 0
+1.87835 -7.26079 0
+0.102649 -7.86726 0
+-1.96666 -7.48544 0
+-3.75216 -5.99526 0
+-4.7636 -3.59622 0
+-4.7608 -0.775195 0
+-3.82792 1.86597 0
+-2.34018 3.84328 0
+-0.844002 4.96233 0
+0.108858 5.32799 0
+0.126199 5.19734 0
+-0.90521 4.78673 0
+-2.78007 4.17001 0
+-5.03018 3.32964 0
+-7.06243 2.29985 0
+-8.3372 1.26554 0
+-8.52896 0.516396 0
+-7.6178 0.275315 0
+-5.88689 0.527667 0
+-3.83259 0.986686 0
+-2.02005 1.23695 0
+-0.928303 0.971731 0
+-0.824974 0.172566 0
+-1.70163 -0.880783 0
+-3.28589 -1.77058 0
+-5.12688 -2.16973 0
+-6.72863 -2.00484 0
+-7.69033 -1.46861 0
+-7.81113 -0.889215 0
+-7.13121 -0.545093 0
+-5.90323 -0.538177 0
+-4.50853 -0.796524 0
+-3.34223 -1.19289 0
+-2.69493 -1.68162 0
+-2.66202 -2.33598 0
+-3.11048 -3.24128 0
+-3.72052 -4.32029 0
+-4.09423 -5.24352 0
+-3.89605 -5.53848 0
+-2.97492 -4.86993 0
+-1.42476 -3.31869 0
+0.437014 -1.45481 0
+2.16454 -0.11823 0
+3.32116 -0.00782093 0
+3.61637 -1.31018 0
+2.99829 -3.58639 0
+1.66916 -5.9833 0
+0.0137227 -7.64397 0
+-1.53677 -8.08304 0
+-2.65321 -7.32739 0
+-3.20871 -5.7659 0
+-3.28912 -3.81632 0
+-1.71154 -1.60233 0
+-0.860414 -0.206472 0
+-0.860414 0.680975 0
+-1.67343 -0.190575 0
+-3.20408 -0.252346 0
+-6.0929 -0.226414 0
+-5.82122 0.109123 0
+-5.26386 1.04041 0
+-4.36094 2.43456 0
+-3.18589 3.72721 0
+-1.95794 4.26232 0
+-0.972518 3.68113 0
+-0.480246 2.15168 0
+-0.579583 0.316991 0
+-1.18055 -1.01841 0
+-2.05462 -1.30671 0
+-2.93842 -0.552818 0
+-3.63549 0.693183 0
+-4.0724 1.66339 0
+-4.29666 1.83004 0
+-4.4302 1.2048 0
+-4.6039 0.286432 0
+-4.8994 -0.299849 0
+-5.31853 -0.219235 0
+-5.78898 0.383146 0
+-6.19925 1.03269 0
+-6.44284 1.28485 0
+-6.44977 1.02917 0
+-6.19508 0.537645 0
+-5.69141 0.250208 0
+-4.98188 0.463997 0
+-4.14417 1.13771 0
+-3.29723 1.92429 0
+-2.58905 2.38643 0
+-2.15614 2.25353 0
+-2.07135 1.57383 0
+-2.31114 0.680518 0
+-2.76432 -0.00875753 0
+-3.27884 -0.245865 0
+-3.72057 -0.106138 0
+-4.01451 0.0640113 0
+-4.15446 -0.11309 0
+-4.18832 -0.769016 0
+-4.19122 -1.67129 0
+-4.23511 -2.36147 0
+-4.36383 -2.45739 0
+-4.58063 -1.90849 0
+-4.85032 -1.02601 0
+-5.11269 -0.27198 0
+-5.29915 0.0379504 0
+-5.34403 -0.0867253 0
+-5.18979 -0.356727 0
+-4.7931 -0.417964 0
+-4.14136 -0.0829015 0
+-3.279 0.563797 0
+-2.32226 1.24323 0
+-1.43831 1.66096 0
+-0.788299 1.66571 0
+-0.461497 1.31456 0
+-0.436436 0.82099 0
+-0.593382 0.421827 0
+-0.778137 0.240068 0
+-0.887585 0.213801 0
+-0.834217 0.0506717 0
+-0.762086 0.00794757 0
+-0.672754 0.00225882 0
+-0.547787 0.00247387 0
+-0.388332 -0.000670833 0
+-0.210485 -0.0934469 0
+0.658798 -1.34182 0
+2.14768 -2.99943 0
+3.74221 -4.48061 0
+4.75264 -5.45386 0
+4.63196 -5.87569 0
+3.20993 -5.83875 0
+0.776264 -5.43359 0
+-2.0082 -4.70098 0
+-4.33693 -3.66653 0
+-5.53505 -2.39811 0
+-5.28798 -1.02227 0
+-3.74265 0.320641 0
+-1.45242 1.55305 0
+0.802374 2.70754 0
+2.25218 3.87818 0
+2.36268 5.08684 0
+0.986415 6.163 0
+-1.5958 6.75222 0
+-4.75358 6.48742 0
+-7.68454 5.23082 0
+-9.64105 3.22204 0
+-10.1405 1.01583 0
+-9.09924 -0.765929 0
+-6.8535 -1.71807 0
+-4.06128 -1.80553 0
+-1.51526 -1.30908 0
+0.0798316 -0.623363 0
+0.303747 -0.0513488 0
+-0.865538 0.288501 0
+-3.0566 0.420484 0
+-5.6273 0.400978 0
+-7.86434 0.232198 0
+-9.19188 -0.141062 0
+-9.32269 -0.758409 0
+-8.31108 -1.5567 0
+-6.50539 -2.34387 0
+-4.42931 -2.87261 0
+-2.63199 -2.9902 0
+-1.54161 -2.772 0
+-1.35195 -2.52564 0
+-1.96869 -2.62454 0
+-3.0343 -3.25468 0
+-4.03256 -4.24526 0
+-4.44846 -5.12258 0
+-3.93695 -5.38144 0
+-2.44637 -4.80926 0
+-0.253021 -3.64816 0
+2.11102 -2.48227 0
+4.01996 -1.91676 0
+4.95669 -2.24691 0
+4.68585 -3.31555 0
+3.33083 -4.62829 0
+1.32001 -5.63314 0
+-0.778669 -5.98436 0
+-2.46415 -5.64191 0
+-3.45949 -4.77056 0
+-3.75667 -3.51913 0
+-2.03805 -1.80964 0
+-1.03157 -0.435229 0
+-1.03157 0.552848 0
+-1.5413 -0.190892 0
+-2.97042 -0.280835 0
+-5.68445 -0.33201 0
+-5.39792 -0.177411 0
+-4.803 0.4455 0
+-3.85493 1.48648 0
+-2.66369 2.53597 0
+-1.49225 3.09088 0
+-0.663942 2.85282 0
+-0.420492 1.90823 0
+-0.807614 0.704114 0
+-1.65252 -0.173511 0
+-2.64533 -0.313895 0
+-3.47867 0.28053 0
+-3.97195 1.18646 0
+-4.12326 1.81469 0
+-4.07662 1.7834 0
+-4.03338 1.16156 0
+-4.15495 0.408009 0
+-4.49918 0.0443756 0
+-5.0113 0.292887 0
+-5.56379 0.935639 0
+-6.01767 1.48657 0
+-6.27179 1.53897 0
+-6.27914 1.03652 0
+-6.03293 0.291438 0
+-5.54536 -0.23736 0
+-4.84322 -0.238142 0
+-3.9875 0.28199 0
+-3.0961 1.03289 0
+-2.33612 1.62645 0
+-1.87323 1.79063 0
+-1.8008 1.50141 0
+-2.09161 0.971322 0
+-2.60451 0.504146 0
+-3.14551 0.295135 0
+-3.54967 0.29802 0
+-3.74076 0.255099 0
+-3.74275 -0.111097 0
+-3.64903 -0.86274 0
+-3.57154 -1.74877 0
+-3.59258 -2.34043 0
+-3.73878 -2.31119 0
+-3.9831 -1.66416 0
+-4.26649 -0.742617 0
+-4.52317 -0.0152994 0
+-4.69486 0.209639 0
+-4.72942 -0.0521635 0
+-4.57317 -0.512981 0
+-4.17317 -0.817968 0
+-3.50065 -0.755422 0
+-2.59135 -0.3455 0
+-1.57018 0.222065 0
+-0.627489 0.718263 0
+0.0496522 0.988566 0
+0.358184 1.00603 0
+0.328499 0.850675 0
+0.114986 0.635339 0
+-0.0693564 0.42441 0
+-0.0626134 0.207058 0
+-0.0199965 0.00805476 0
+-0.0126848 0.000635881 0
+-0.0105388 0.00011278 0
+-0.00816463 9.97523e-05 0
+-0.00739393 -0.00144154 0
+-0.0492263 -0.0516145 0
+0.520518 -1.91156 0
+1.90749 -4.3864 0
+3.48545 -6.05858 0
+4.47295 -6.44137 0
+4.27788 -5.68062 0
+2.72604 -4.28692 0
+0.135648 -2.8432 0
+-2.78635 -1.77898 0
+-5.18886 -1.26402 0
+-6.37127 -1.2157 0
+-6.02103 -1.37251 0
+-4.31367 -1.38671 0
+-1.84636 -0.914258 0
+0.55808 0.303096 0
+2.10077 2.33549 0
+2.23403 4.95359 0
+0.808861 7.58817 0
+-1.88861 9.44969 0
+-5.21644 9.81525 0
+-8.35036 8.36474 0
+-10.5072 5.37885 0
+-11.1594 1.66812 0
+-10.1839 -1.74146 0
+-7.90122 -4.00077 0
+-4.98982 -4.71694 0
+-2.29443 -4.00446 0
+-0.583591 -2.3342 0
+-0.326541 -0.308399 0
+-1.55964 1.5216 0
+-3.88775 2.74859 0
+-6.62056 3.13378 0
+-8.99414 2.60579 0
+-10.3982 1.26298 0
+-10.5338 -0.622828 0
+-9.46125 -2.62922 0
+-7.54191 -4.26321 0
+-5.31229 -5.10223 0
+-3.33678 -4.96572 0
+-2.06988 -4.0389 0
+-1.74847 -2.84705 0
+-2.33122 -2.04179 0
+-3.50264 -2.08327 0
+-4.75182 -2.99607 0
+-5.51714 -4.35727 0
+-5.36229 -5.53629 0
+-4.13003 -6.04153 0
+-2.01683 -5.76136 0
+0.468261 -4.96736 0
+2.65861 -4.10711 0
+3.9515 -3.5398 0
+4.01594 -3.37999 0
+2.90329 -3.51563 0
+1.01234 -3.7422 0
+-1.07608 -3.89594 0
+-2.8192 -3.89878 0
+-3.88737 -3.70238 0
+-4.22393 -3.18258 0
+-2.29506 -2.04453 0
+-1.15572 -0.717862 0
+-1.15572 0.38078 0
+-1.42034 -0.179995 0
+-2.76556 -0.285406 0
+-5.35352 -0.391819 0
+-5.14843 -0.382501 0
+-4.68417 -0.0187584 0
+-3.92044 0.722754 0
+-2.95719 1.57271 0
+-2.03021 2.1639 0
+-1.42346 2.24606 0
+-1.33821 1.82299 0
+-1.79099 1.15689 0
+-2.59926 0.634762 0
+-3.46507 0.551911 0
+-4.11145 0.926909 0
+-4.39964 1.47466 0
+-4.37039 1.78544 0
+-4.19789 1.61089 0
+-4.08973 1.05341 0
+-4.18713 0.505409 0
+-4.51149 0.36873 0
+-4.97506 0.756456 0
+-5.43938 1.39997 0
+-5.78341 1.83059 0
+-5.94387 1.69943 0
+-5.91241 1.00506 0
+-5.70339 0.0824204 0
+-5.32436 -0.616392 0
+-4.77571 -0.786792 0
+-4.08178 -0.411938 0
+-3.32582 0.276929 0
+-2.65111 0.951736 0
+-2.21425 1.35378 0
+-2.11285 1.40001 0
+-2.3319 1.19037 0
+-2.74458 0.916827 0
+-3.17019 0.720747 0
+-3.45702 0.58485 0
+-3.54457 0.342647 0
+-3.47445 -0.181211 0
+-3.35295 -0.984244 0
+-3.29108 -1.81064 0
+-3.3527 -2.27882 0
+-3.5348 -2.12909 0
+-3.78358 -1.41538 0
+-4.02998 -0.496217 0
+-4.22028 0.175007 0
+-4.32417 0.313527 0
+-4.31986 -0.0564769 0
+-4.17354 -0.659303 0
+-3.83557 -1.15593 0
+-3.2649 -1.32609 0
+-2.47396 -1.13645 0
+-1.55999 -0.691899 0
+-0.688754 -0.152975 0
+-0.0327527 0.332564 0
+0.304953 0.66832 0
+0.339382 0.816246 0
+0.195986 0.778736 0
+0.0452431 0.575153 0
+-0.00316565 0.255467 0
+-0.000736936 0.00562604 0
+-0.000244046 0.00014299 0
+-0.000143016 1.1736e-05 0
+-3.24804e-05 -1.08762e-05 0
+-0.000534775 -0.000939248 0
+-0.00812178 -0.0440275 0
+0.302106 -2.22179 0
+1.19023 -5.27452 0
+2.25295 -7.1213 0
+2.87209 -7.06051 0
+2.57284 -5.38136 0
+1.22427 -2.93834 0
+-0.909435 -0.709498 0
+-3.26334 0.574931 0
+-5.17354 0.64617 0
+-6.10941 -0.279825 0
+-5.85115 -1.63077 0
+-4.55435 -2.68351 0
+-2.68623 -2.78238 0
+-0.869233 -1.5139 0
+0.304568 1.16169 0
+0.433184 4.82497 0
+-0.596422 8.61777 0
+-2.58494 11.4382 0
+-5.07249 12.3028 0
+-7.45396 10.7462 0
+-9.13487 7.05976 0
+-9.69258 2.22583 0
+-9.00124 -2.43281 0
+-7.28197 -5.72003 0
+-5.05178 -6.94713 0
+-2.97738 -6.07887 0
+-1.67604 -3.63554 0
+-1.52623 -0.458209 0
+-2.55348 2.54885 0
+-4.43371 4.62882 0
+-6.61178 5.31186 0
+-8.4875 4.4815 0
+-9.59697 2.37245 0
+-9.72741 -0.492391 0
+-8.93874 -3.41788 0
+-7.50551 -5.69644 0
+-5.8189 -6.78883 0
+-4.28661 -6.49801 0
+-3.24722 -5.07829 0
+-2.90134 -3.19292 0
+-3.26202 -1.68111 0
+-4.13702 -1.20827 0
+-5.1616 -1.9715 0
+-5.89103 -3.62783 0
+-5.93837 -5.48895 0
+-5.11576 -6.86414 0
+-3.52348 -7.35363 0
+-1.54128 -6.94956 0
+0.288455 -5.93685 0
+1.44893 -4.70027 0
+1.63557 -3.56663 0
+0.861939 -2.742 0
+-0.56208 -2.31818 0
+-2.16773 -2.29029 0
+-3.51331 -2.55321 0
+-4.33098 -2.88472 0
+-4.57451 -2.93904 0
+-2.43448 -2.25005 0
+-1.22237 -0.961743 0
+-1.22237 0.228867 0
+-1.2978 -0.157107 0
+-2.55253 -0.259954 0
+-5.00167 -0.385483 0
+-4.92994 -0.454224 0
+-4.69327 -0.25543 0
+-4.24645 0.275933 0
+-3.64314 0.969399 0
+-3.03917 1.55994 0
+-2.63258 1.83947 0
+-2.56909 1.75951 0
+-2.86566 1.45346 0
+-3.39684 1.16594 0
+-3.95404 1.10911 0
+-4.34587 1.31874 0
+-4.4852 1.614 0
+-4.4177 1.71793 0
+-4.28102 1.47422 0
+-4.22249 0.994875 0
+-4.32221 0.605132 0
+-4.56158 0.608096 0
+-4.84818 1.04307 0
+-5.076 1.62778 0
+-5.18161 1.93621 0
+-5.16426 1.68208 0
+-5.0629 0.903696 0
+-4.91188 -0.0685935 0
+-4.70962 -0.818658 0
+-4.42325 -1.07316 0
+-4.02641 -0.808776 0
+-3.54151 -0.207968 0
+-3.05253 0.462758 0
+-2.67432 0.975558 0
+-2.49476 1.22045 0
+-2.52603 1.22164 0
+-2.69651 1.0873 0
+-2.88972 0.913964 0
+-3.00729 0.702412 0
+-3.01835 0.353714 0
+-2.96758 -0.231982 0
+-2.94025 -1.01158 0
+-3.00815 -1.74274 0
+-3.18815 -2.09882 0
+-3.43598 -1.88126 0
+-3.67532 -1.17604 0
+-3.84103 -0.33051 0
+-3.90855 0.242532 0
+-3.89232 0.297296 0
+-3.81723 -0.131561 0
+-3.68557 -0.79097 0
+-3.4645 -1.377 0
+-3.10551 -1.68508 0
+-2.58559 -1.65636 0
+-1.94165 -1.33584 0
+-1.27002 -0.824613 0
+-0.688806 -0.248646 0
+-0.284363 0.263877 0
+-0.0736368 0.60552 0
+-0.00534421 0.710443 0
+0.000568372 0.56924 0
+-0.000265858 0.256301 0
+-6.16353e-05 0.00542182 0
+-1.51324e-05 9.64986e-05 0
+-6.03437e-06 2.74152e-06 0
+-4.18456e-06 -1.28844e-05 0
+-0.000135378 -0.000808066 0
+-0.000838152 -0.0433247 0
+0.0778363 -2.30046 0
+0.31439 -5.51108 0
+0.56382 -7.37073 0
+0.58114 -7.07782 0
+0.181452 -4.98167 0
+-0.663767 -2.09312 0
+-1.80897 0.435705 0
+-2.99014 1.7561 0
+-3.92569 1.58172 0
+-4.41771 0.212197 0
+-4.41235 -1.63614 0
+-4.00142 -3.09444 0
+-3.37426 -3.40954 0
+-2.74896 -2.13921 0
+-2.31392 0.726648 0
+-2.19343 4.70448 0
+-2.43364 8.85798 0
+-2.99854 12.0031 0
+-3.77175 13.076 0
+-4.57 11.5445 0
+-5.17839 7.66815 0
+-5.40928 2.45671 0
+-5.17058 -2.67151 0
+-4.51609 -6.37452 0
+-3.6473 -7.81592 0
+-2.85502 -6.87115 0
+-2.41894 -4.07161 0
+-2.50503 -0.372121 0
+-3.10544 3.14925 0
+-4.04789 5.57128 0
+-5.06857 6.33253 0
+-5.91221 5.32515 0
+-6.41321 2.87345 0
+-6.52627 -0.379334 0
+-6.30572 -3.63843 0
+-5.85812 -6.14404 0
+-5.30093 -7.34602 0
+-4.74536 -7.05359 0
+-4.29624 -5.52741 0
+-4.04776 -3.4414 0
+-4.05983 -1.66904 0
+-4.32061 -0.947491 0
+-4.72058 -1.57152 0
+-5.06623 -3.28219 0
+-5.14299 -5.41218 0
+-4.8075 -7.19964 0
+-4.06578 -8.09535 0
+-3.09374 -7.9216 0
+-2.18078 -6.84981 0
+-1.61659 -5.26446 0
+-1.5723 -3.61092 0
+-2.03301 -2.2813 0
+-2.81399 -1.5372 0
+-3.64996 -1.45432 0
+-4.30943 -1.89373 0
+-4.67618 -2.51797 0
+-4.76187 -2.85335 0
+-2.45938 -2.3563 0
+-1.24124 -1.08145 0
+-1.24124 0.151892 0
+-1.1708 -0.127035 0
+-2.3172 -0.211244 0
+-4.58104 -0.319701 0
+-4.6418 -0.393464 0
+-4.64354 -0.253684 0
+-4.53394 0.16633 0
+-4.30665 0.742112 0
+-4.01659 1.26987 0
+-3.75827 1.58114 0
+-3.61936 1.6206 0
+-3.63571 1.46981 0
+-3.77382 1.30405 0
+-3.95172 1.28701 0
+-4.08658 1.45359 0
+-4.14071 1.66813 0
+-4.13789 1.71512 0
+-4.13975 1.47608 0
+-4.19792 1.05304 0
+-4.31388 0.721098 0
+-4.43359 0.727798 0
+-4.48072 1.0902 0
+-4.40669 1.55375 0
+-4.22406 1.75358 0
+-4.00133 1.45936 0
+-3.8226 0.724957 0
+-3.73769 -0.153503 0
+-3.73398 -0.822361 0
+-3.74623 -1.06092 0
+-3.69625 -0.858758 0
+-3.53741 -0.36681 0
+-3.27862 0.20397 0
+-2.97573 0.672667 0
+-2.69772 0.942449 0
+-2.48982 1.01374 0
+-2.35608 0.953569 0
+-2.27107 0.828954 0
+-2.21062 0.641962 0
+-2.17929 0.322384 0
+-2.21378 -0.197494 0
+-2.35684 -0.868523 0
+-2.61883 -1.48074 0
+-2.95539 -1.76226 0
+-3.27808 -1.55856 0
+-3.4943 -0.959827 0
+-3.55286 -0.271954 0
+-3.46761 0.157284 0
+-3.30483 0.134515 0
+-3.14268 -0.293705 0
+-3.02748 -0.906176 0
+-2.95181 -1.45267 0
+-2.86499 -1.77191 0
+-2.70527 -1.81608 0
+-2.43386 -1.60725 0
+-2.0533 -1.20518 0
+-1.60263 -0.69931 0
+-1.13664 -0.202121 0
+-0.705688 0.174572 0
+-0.349908 0.354663 0
+-0.106094 0.325426 0
+-0.00263014 0.152837 0
+-0.000217603 0.00300928 0
+-3.44201e-05 -8.66713e-05 0
+-1.72955e-05 -1.42288e-05 0
+-4.53402e-05 1.50529e-05 0
+-0.000143423 -0.000709993 0
+-0.00205141 -0.0414167 0
+-0.183157 -2.11936 0
+-0.669206 -5.02503 0
+-1.34281 -6.69713 0
+-2.00241 -6.41822 0
+-2.47413 -4.50995 0
+-2.66178 -1.90548 0
+-2.56943 0.343357 0
+-2.30382 1.49049 0
+-2.04782 1.32572 0
+-2.00155 0.165932 0
+-2.30382 -1.33387 0
+-2.96195 -2.4363 0
+-3.82654 -2.54496 0
+-4.63056 -1.33518 0
+-5.08241 1.17849 0
+-4.97726 4.59933 0
+-4.28012 8.16085 0
+-3.14379 10.8668 0
+-1.85378 11.786 0
+-0.725884 10.4166 0
+-0.00210219 6.94437 0
+0.21249 2.24212 0
+-0.0460484 -2.41297 0
+-0.642812 -5.77776 0
+-1.40305 -7.05568 0
+-2.15887 -6.11532 0
+-2.77254 -3.45794 0
+-3.14535 0.000689011 0
+-3.2273 3.2312 0
+-3.0334 5.37738 0
+-2.65678 5.95591 0
+-2.26005 4.92842 0
+-2.03337 2.64677 0
+-2.12668 -0.286028 0
+-2.58352 -3.18159 0
+-3.31112 -5.41644 0
+-4.10742 -6.54972 0
+-4.73816 -6.42285 0
+-5.03113 -5.23445 0
+-4.9436 -3.52893 0
+-4.57085 -2.0418 0
+-4.09358 -1.42476 0
+-3.69373 -1.97137 0
+-3.48277 -3.49315 0
+-3.47594 -5.41901 0
+-3.61735 -7.05822 0
+-3.83196 -7.88074 0
+-4.06918 -7.68438 0
+-4.31417 -6.60482 0
+-4.56771 -5.01092 0
+-4.81713 -3.3615 0
+-5.02393 -2.07449 0
+-5.13897 -1.42215 0
+-5.13494 -1.45835 0
+-5.03284 -1.99583 0
+-4.90196 -2.64885 0
+-4.82839 -2.92692 0
+-2.42325 -2.32094 0
+-1.2395 -1.03515 0
+-1.2395 0.175565 0
+-1.04636 -0.0976995 0
+-2.07066 -0.154691 0
+-4.10469 -0.22171 0
+-4.25368 -0.244468 0
+-4.43154 -0.0758267 0
+-4.58497 0.319762 0
+-4.65858 0.815718 0
+-4.61891 1.2302 0
+-4.46758 1.42982 0
+-4.23982 1.39284 0
+-3.98948 1.21947 0
+-3.76841 1.08298 0
+-3.61126 1.12986 0
+-3.53314 1.37547 0
+-3.53711 1.67209 0
+-3.62004 1.79805 0
+-3.76742 1.62347 0
+-3.94054 1.22616 0
+-4.07169 0.852239 0
+-4.08149 0.737602 0
+-3.91604 0.924743 0
+-3.58299 1.2207 0
+-3.16154 1.33213 0
+-2.77531 1.07313 0
+-2.5402 0.489852 0
+-2.5146 -0.179105 0
+-2.67698 -0.659977 0
+-2.93967 -0.798231 0
+-3.18672 -0.611707 0
+-3.31598 -0.237547 0
+-3.27028 0.15827 0
+-3.04894 0.451324 0
+-2.69864 0.592145 0
+-2.29075 0.605849 0
+-1.89744 0.560255 0
+-1.57762 0.50914 0
+-1.37601 0.440349 0
+-1.32787 0.274245 0
+-1.45773 -0.0676332 0
+-1.76379 -0.562465 0
+-2.19752 -1.04701 0
+-2.66074 -1.29905 0
+-3.03112 -1.18818 0
+-3.20889 -0.782053 0
+-3.16091 -0.31993 0
+-2.93672 -0.0669094 0
+-2.64649 -0.15571 0
+-2.4126 -0.527604 0
+-2.31951 -0.999266 0
+-2.38495 -1.38722 0
+-2.56087 -1.59599 0
+-2.75512 -1.62182 0
+-2.86234 -1.50003 0
+-2.79722 -1.2703 0
+-2.51939 -0.977133 0
+-2.04398 -0.677532 0
+-1.43833 -0.431082 0
+-0.810246 -0.273419 0
+-0.292592 -0.192228 0
+-0.0164582 -0.123297 0
+-0.00205921 -0.0113897 0
+-0.000348365 -0.00179751 0
+-0.000195027 -0.000167482 0
+-0.000559636 0.00037967 0
+-0.00225836 0.00098873 0
+-0.0114752 -0.0321999 0
+-0.549124 -1.58171 0
+-1.80388 -3.77027 0
+-3.35139 -5.14962 0
+-4.61122 -5.15839 0
+-5.12605 -3.99512 0
+-4.71228 -2.31925 0
+-3.51563 -0.853297 0
+-1.96874 -0.0563934 0
+-0.655262 0.01224 0
+-0.114158 -0.375172 0
+-0.645137 -0.802889 0
+-2.18167 -0.899775 0
+-4.28817 -0.438455 0
+-6.29119 0.667848 0
+-7.49796 2.38526 0
+-7.4268 4.52817 0
+-5.96924 6.70329 0
+-3.42725 8.32478 0
+-0.414478 8.77322 0
+2.33879 7.6633 0
+4.20407 5.07909 0
+4.82156 1.62463 0
+4.16999 -1.7614 0
+2.53643 -4.14419 0
+0.412249 -4.9315 0
+-1.64316 -4.05991 0
+-3.13431 -1.96679 0
+-3.73712 0.603498 0
+-3.36927 2.86334 0
+-2.21023 4.21835 0
+-0.659206 4.40489 0
+0.769496 3.49971 0
+1.5928 1.82347 0
+1.5062 -0.199436 0
+0.482556 -2.15794 0
+-1.21719 -3.71669 0
+-3.12876 -4.63814 0
+-4.73689 -4.81472 0
+-5.64296 -4.32838 0
+-5.68876 -3.48313 0
+-4.99252 -2.73804 0
+-3.88825 -2.52903 0
+-2.79842 -3.0612 0
+-2.09384 -4.19774 0
+-1.99226 -5.52059 0
+-2.52191 -6.52857 0
+-3.54525 -6.8574 0
+-4.81879 -6.41084 0
+-6.06233 -5.36128 0
+-7.02232 -4.05092 0
+-7.52448 -2.85935 0
+-7.51141 -2.08757 0
+-7.05605 -1.87751 0
+-6.34151 -2.1729 0
+-5.60731 -2.73003 0
+-5.07706 -3.1791 0
+-4.89072 -3.11326 0
+-2.41417 -2.15251 0
+-1.25632 -0.842597 0
+-1.25632 0.28699 0
+-0.936831 -0.0767876 0
+-1.84052 -0.107697 0
+-3.63057 -0.127027 0
+-3.80132 -0.0737244 0
+-4.05106 0.173917 0
+-4.33655 0.605255 0
+-4.58137 1.06054 0
+-4.70064 1.34947 0
+-4.63439 1.36358 0
+-4.37634 1.13478 0
+-3.98179 0.824923 0
+-3.54872 0.649921 0
+-3.18186 0.762994 0
+-2.95868 1.15229 0
+-2.9113 1.62471 0
+-3.02422 1.91097 0
+-3.23981 1.83905 0
+-3.46719 1.45354 0
+-3.59958 0.984633 0
+-3.54532 0.683338 0
+-3.26594 0.64537 0
+-2.80221 0.756965 0
+-2.26872 0.79864 0
+-1.81429 0.618695 0
+-1.56565 0.241217 0
+-1.58158 -0.16318 0
+-1.83672 -0.404837 0
+-2.23728 -0.397672 0
+-2.6545 -0.194481 0
+-2.96076 0.0687061 0
+-3.06151 0.259021 0
+-2.91855 0.308364 0
+-2.5583 0.231899 0
+-2.06145 0.108993 0
+-1.53742 0.0362296 0
+-1.09498 0.0667016 0
+-0.820308 0.165676 0
+-0.766339 0.220276 0
+-0.947935 0.113963 0
+-1.33427 -0.176134 0
+-1.84195 -0.539326 0
+-2.34492 -0.796074 0
+-2.70816 -0.82495 0
+-2.83586 -0.654344 0
+-2.7114 -0.444397 0
+-2.40653 -0.37178 0
+-2.05402 -0.508221 0
+-1.79717 -0.784455 0
+-1.73981 -1.05662 0
+-1.91555 -1.21148 0
+-2.28222 -1.22932 0
+-2.73487 -1.16917 0
+-3.13155 -1.10335 0
+-3.33236 -1.06949 0
+-3.24191 -1.06758 0
+-2.84043 -1.07901 0
+-2.1915 -1.08002 0
+-1.42254 -1.04238 0
+-0.685884 -0.928888 0
+-0.130754 -0.678426 0
+-0.0239599 -0.118184 0
+-0.0083511 -0.0174063 0
+-0.00748349 -0.00103509 0
+-0.0128668 0.00576296 0
+-0.0365361 0.024658 0
+-0.14397 0.0752336 0
+-1.2751 -0.450582 0
+-3.21411 -1.83126 0
+-5.34767 -3.01606 0
+-6.95504 -3.55103 0
+-7.4709 -3.47926 0
+-6.6876 -3.10255 0
+-4.83979 -2.7011 0
+-2.54266 -2.35352 0
+-0.596976 -1.93345 0
+0.279437 -1.25159 0
+-0.295317 -0.228134 0
+-2.21657 1.02148 0
+-4.90628 2.25125 0
+-7.49121 3.25278 0
+-9.08122 3.97527 0
+-9.05426 4.50121 0
+-7.25568 4.90472 0
+-4.04767 5.11677 0
+-0.195186 4.92073 0
+3.36917 4.09895 0
+5.81864 2.62962 0
+6.65464 0.788625 0
+5.81649 -0.923248 0
+3.66354 -1.99124 0
+0.850672 -2.11864 0
+-1.85634 -1.35291 0
+-3.7742 -0.0489221 0
+-4.46513 1.29443 0
+-3.839 2.23721 0
+-2.17088 2.55023 0
+-0.0236223 2.25763 0
+1.91126 1.56484 0
+3.01348 0.721249 0
+2.91628 -0.102236 0
+1.61315 -0.85482 0
+-0.547487 -1.55606 0
+-2.97686 -2.20877 0
+-5.03084 -2.76074 0
+-6.20748 -3.15173 0
+-6.2947 -3.39591 0
+-5.42091 -3.61183 0
+-3.9949 -3.95504 0
+-2.56117 -4.49492 0
+-1.6264 -5.13251 0
+-1.51617 -5.63082 0
+-2.30142 -5.74332 0
+-3.80344 -5.35538 0
+-5.66217 -4.55211 0
+-7.4412 -3.58226 0
+-8.74298 -2.74914 0
+-9.31103 -2.29129 0
+-9.09521 -2.30339 0
+-8.25849 -2.71423 0
+-7.11814 -3.31324 0
+-6.03891 -3.80926 0
+-5.31703 -3.90099 0
+-5.0973 -3.33299 0
+-2.5276 -1.90581 0
+-1.33422 -0.577972 0
+-1.33422 0.438345 0
+-0.853416 -0.0688052 0
+-1.65623 -0.0830896 0
+-3.22991 -0.0661492 0
+-3.3584 0.0547685 0
+-3.57166 0.387176 0
+-3.8461 0.879702 0
+-4.11643 1.33086 0
+-4.29206 1.5251 0
+-4.2921 1.36362 0
+-4.08405 0.926727 0
+-3.70398 0.444857 0
+-3.24505 0.190991 0
+-2.82102 0.338958 0
+-2.52567 0.856946 0
+-2.4067 1.50574 0
+-2.45842 1.96269 0
+-2.62645 2.00709 0
+-2.81932 1.6464 0
+-2.92944 1.09476 0
+-2.86641 0.620304 0
+-2.59451 0.373475 0
+-2.1557 0.318159 0
+-1.66092 0.303853 0
+-1.24963 0.207409 0
+-1.03697 0.0285547 0
+-1.07407 -0.126081 0
+-1.33711 -0.141794 0
+-1.74292 0.00813373 0
+-2.17672 0.23932 0
+-2.52014 0.412124 0
+-2.6775 0.41638 0
+-2.59964 0.230506 0
+-2.29864 -0.0691002 0
+-1.84499 -0.344651 0
+-1.34593 -0.462837 0
+-0.914173 -0.365053 0
+-0.640945 -0.107552 0
+-0.580702 0.160033 0
+-0.745008 0.278268 0
+-1.09797 0.176824 0
+-1.5546 -0.0826959 0
+-1.99398 -0.356691 0
+-2.29274 -0.526185 0
+-2.3695 -0.577585 0
+-2.21902 -0.59488 0
+-1.91692 -0.673876 0
+-1.59172 -0.833427 0
+-1.37856 -0.997613 0
+-1.37584 -1.05934 0
+-1.6187 -0.968618 0
+-2.07211 -0.775911 0
+-2.6387 -0.60258 0
+-3.17833 -0.563722 0
+-3.54257 -0.705254 0
+-3.61929 -0.990856 0
+-3.37135 -1.32696 0
+-2.85215 -1.59921 0
+-2.191 -1.70353 0
+-1.55283 -1.56706 0
+-1.07127 -1.15998 0
+-0.655117 -0.534335 0
+-0.493324 -0.179198 0
+-0.518064 0.0237046 0
+-0.707445 0.195144 0
+-1.10051 0.417726 0
+-1.74734 0.722065 0
+-2.98849 0.790566 0
+-4.93078 0.111026 0
+-7.02981 -0.917026 0
+-8.58511 -1.99572 0
+-9.04001 -3.02437 0
+-8.19208 -3.95047 0
+-6.27881 -4.61437 0
+-3.91191 -4.72042 0
+-1.87926 -3.9661 0
+-0.879736 -2.25111 0
+-1.28091 0.173039 0
+-2.98343 2.724 0
+-5.44198 4.7098 0
+-7.8352 5.646 0
+-9.32398 5.46404 0
+-9.31418 4.49141 0
+-7.6431 3.23364 0
+-4.63227 2.10594 0
+-0.990366 1.27883 0
+2.4007 0.707888 0
+4.74436 0.285955 0
+5.54828 -0.0153014 0
+4.74088 -0.115847 0
+2.66365 0.0859945 0
+-0.0460631 0.591078 0
+-2.63858 1.23961 0
+-4.44844 1.76094 0
+-5.05919 1.90517 0
+-4.40164 1.57966 0
+-2.76213 0.910726 0
+-0.695421 0.190919 0
+1.13739 -0.26797 0
+2.16094 -0.302305 0
+2.05082 0.00788282 0
+0.821371 0.374629 0
+-1.1901 0.455414 0
+-3.43359 0.0347162 0
+-5.31478 -0.87954 0
+-6.37267 -2.09385 0
+-6.41424 -3.35435 0
+-5.56431 -4.46176 0
+-4.21428 -5.30507 0
+-2.88899 -5.82021 0
+-2.07996 -5.94155 0
+-2.10169 -5.60909 0
+-3.01281 -4.83221 0
+-4.61646 -3.75172 0
+-6.52974 -2.63883 0
+-8.29674 -1.81525 0
+-9.51517 -1.53071 0
+-9.94632 -1.86015 0
+-9.57869 -2.67101 0
+-8.62221 -3.67071 0
+-7.43007 -4.50537 0
+-6.3746 -4.86474 0
+-5.72463 -4.55096 0
+-5.57162 -3.486 0
+-2.83344 -1.65183 0
+-1.50703 -0.339678 0
+-1.50703 0.563253 0
+-0.800403 -0.0735233 0
+-1.53491 -0.0848254 0
+-2.9537 -0.0545163 0
+-2.99906 0.100123 0
+-3.09679 0.484903 0
+-3.24586 1.02878 0
+-3.41555 1.50055 0
+-3.54818 1.65774 0
+-3.5799 1.39533 0
+-3.47052 0.817349 0
+-3.22442 0.198758 0
+-2.88942 -0.144014 0
+-2.53636 -0.0140968 0
+-2.23381 0.554395 0
+-2.03033 1.30227 0
+-1.94596 1.87831 0
+-1.96722 2.02835 0
+-2.04528 1.72446 0
+-2.10458 1.15406 0
+-2.06826 0.583983 0
+-1.89355 0.198769 0
+-1.5979 0.0225059 0
+-1.25723 -0.0368152 0
+-0.974522 -0.0752985 0
+-0.83599 -0.109977 0
+-0.878774 -0.0832966 0
+-1.08361 0.0630465 0
+-1.38908 0.313603 0
+-1.71366 0.563899 0
+-1.9751 0.67356 0
+-2.10658 0.547856 0
+-2.07187 0.195801 0
+-1.87618 -0.264787 0
+-1.56567 -0.655167 0
+-1.21327 -0.815235 0
+-0.89733 -0.680994 0
+-0.683308 -0.321574 0
+-0.613766 0.0904905 0
+-0.703161 0.367664 0
+-0.931734 0.405396 0
+-1.2411 0.22667 0
+-1.54233 -0.0554631 0
+-1.74238 -0.326132 0
+-1.78087 -0.5391 0
+-1.65798 -0.717766 0
+-1.43696 -0.894892 0
+-1.21953 -1.05086 0
+-1.1084 -1.10875 0
+-1.1751 -0.992645 0
+-1.44278 -0.700935 0
+-1.88317 -0.335516 0
+-2.42285 -0.0628997 0
+-2.95555 -0.0310286 0
+-3.36458 -0.296218 0
+-3.556 -0.799435 0
+-3.49075 -1.39221 0
+-3.19989 -1.89008 0
+-2.77296 -2.13045 0
+-2.31981 -2.02021 0
+-1.91156 -1.56823 0
+-1.53263 -0.91327 0
+-1.36636 -0.345462 0
+-1.46381 0.121154 0
+-1.83367 0.565 0
+-2.47567 1.05972 0
+-3.35453 1.60092 0
+-4.51185 1.94789 0
+-6.06239 1.66156 0
+-7.69513 0.715712 0
+-8.90945 -0.781401 0
+-9.27969 -2.65413 0
+-8.64285 -4.58731 0
+-7.17159 -6.08563 0
+-5.32145 -6.57057 0
+-3.67706 -5.61049 0
+-2.75376 -3.17441 0
+-2.82307 0.242344 0
+-3.82315 3.72408 0
+-5.38105 6.2677 0
+-6.93036 7.19531 0
+-7.8853 6.41899 0
+-7.81964 4.42575 0
+-6.59996 2.01397 0
+-4.43366 -0.0603676 0
+-1.81306 -1.34176 0
+0.629862 -1.73504 0
+2.31168 -1.39586 0
+2.8656 -0.569218 0
+2.23706 0.512693 0
+0.683154 1.6399 0
+-1.31629 2.59052 0
+-3.20193 3.12526 0
+-4.48773 3.04674 0
+-4.88431 2.30175 0
+-4.36503 1.06037 0
+-3.16024 -0.294057 0
+-1.68203 -1.28729 0
+-0.400469 -1.54953 0
+0.292353 -0.995126 0
+0.190523 0.109713 0
+-0.676218 1.24137 0
+-2.06267 1.84187 0
+-3.58674 1.55879 0
+-4.84281 0.376526 0
+-5.52125 -1.41541 0
+-5.50188 -3.37371 0
+-4.89087 -5.07277 0
+-3.98491 -6.21103 0
+-3.17238 -6.63274 0
+-2.80615 -6.30778 0
+-3.09357 -5.32167 0
+-4.03896 -3.88682 0
+-5.45134 -2.33934 0
+-7.00814 -1.08203 0
+-8.35201 -0.471382 0
+-9.19329 -0.68943 0
+-9.3917 -1.66174 0
+-8.9938 -3.06892 0
+-8.21118 -4.45333 0
+-7.34252 -5.37404 0
+-6.66541 -5.54185 0
+-6.33931 -4.87706 0
+-6.35846 -3.46684 0
+-3.34549 -1.43796 0
+-1.78572 -0.208094 0
+-1.78572 0.601697 0
+-0.772373 -0.0862369 0
+-1.47276 -0.107171 0
+-2.80985 -0.0885624 0
+-2.76517 0.0554465 0
+-2.7184 0.438137 0
+-2.68525 0.995619 0
+-2.67666 1.49197 0
+-2.6882 1.66927 0
+-2.6987 1.40584 0
+-2.67918 0.797824 0
+-2.60456 0.124141 0
+-2.46143 -0.287144 0
+-2.25093 -0.224604 0
+-1.9906 0.294073 0
+-1.71563 1.02729 0
+-1.47314 1.63582 0
+-1.30502 1.86024 0
+-1.2253 1.64474 0
+-1.20814 1.1369 0
+-1.1993 0.575143 0
+-1.14739 0.146856 0
+-1.03537 -0.0895088 0
+-0.89076 -0.18143 0
+-0.768049 -0.198009 0
+-0.716799 -0.161227 0
+-0.756705 -0.0433913 0
+-0.872776 0.179118 0
+-1.0279 0.468727 0
+-1.1802 0.716203 0
+-1.29477 0.788126 0
+-1.34845 0.601541 0
+-1.33183 0.179172 0
+-1.24995 -0.346666 0
+-1.12028 -0.784837 0
+-0.967064 -0.968446 0
+-0.815569 -0.832489 0
+-0.689972 -0.447171 0
+-0.613972 0.0144906 0
+-0.607959 0.361651 0
+-0.678907 0.476344 0
+-0.808591 0.356354 0
+-0.952186 0.0881322 0
+-1.05442 -0.223894 0
+-1.07709 -0.516433 0
+-1.021 -0.773855 0
+-0.927823 -0.98807 0
+-0.86098 -1.1177 0
+-0.878687 -1.09104 0
+-1.01457 -0.856757 0
+-1.27216 -0.443351 0
+-1.62906 0.0213879 0
+-2.04366 0.351692 0
+-2.46017 0.38549 0
+-2.81627 0.059874 0
+-3.05733 -0.558373 0
+-3.1535 -1.29604 0
+-3.10928 -1.93429 0
+-2.95838 -2.28135 0
+-2.74478 -2.23381 0
+-2.50263 -1.81039 0
+-2.26789 -1.14801 0
+-2.17453 -0.438826 0
+-2.30455 0.251172 0
+-2.67899 0.939446 0
+-3.26983 1.65056 0
+-4.00533 2.33642 0
+-4.84204 2.7846 0
+-5.82371 2.64323 0
+-6.82376 1.71576 0
+-7.5913 -0.0138595 0
+-7.89377 -2.35165 0
+-7.63341 -4.84767 0
+-6.8907 -6.82834 0
+-5.89122 -7.57005 0
+-4.92036 -6.58134 0
+-4.22402 -3.87075 0
+-3.93228 -0.0493996 0
+-4.0312 3.823 0
+-4.38143 6.61793 0
+-4.76413 7.57802 0
+-4.94237 6.59723 0
+-4.7283 4.21168 0
+-4.04422 1.32989 0
+-2.95978 -1.14481 0
+-1.686 -2.61555 0
+-0.518342 -2.90269 0
+0.256239 -2.17044 0
+0.454407 -0.767386 0
+0.0568227 0.910277 0
+-0.788624 2.48534 0
+-1.81901 3.6209 0
+-2.74139 4.04763 0
+-3.3197 3.62506 0
+-3.43675 2.41881 0
+-3.11593 0.739551 0
+-2.50078 -0.909216 0
+-1.80238 -1.98569 0
+-1.23314 -2.11878 0
+-0.947842 -1.28042 0
+-1.0088 0.170669 0
+-1.38089 1.61346 0
+-1.9511 2.41207 0
+-2.56233 2.17002 0
+-3.05546 0.869665 0
+-3.31539 -1.15548 0
+-3.3115 -3.3776 0
+-3.11663 -5.26764 0
+-2.89004 -6.43762 0
+-2.82402 -6.69876 0
+-3.07289 -6.05891 0
+-3.6939 -4.70066 0
+-4.6244 -2.95631 0
+-5.70209 -1.26165 0
+-6.71756 -0.0665641 0
+-7.47961 0.290674 0
+-7.87277 -0.296275 0
+-7.89048 -1.64402 0
+-7.6345 -3.3249 0
+-7.27905 -4.80878 0
+-7.00878 -5.6443 0
+-6.9493 -5.60134 0
+-7.11433 -4.71203 0
+-7.39022 -3.19095 0
+-4.0021 -1.26006 0
+-2.14484 -0.208012 0
+-2.14484 0.526206 0
+-0.755242 -0.0996203 0
+-1.44492 -0.137362 0
+-2.7579 -0.148604 0
+-2.64901 -0.0534414 0
+-2.48224 0.271365 0
+-2.27772 0.791096 0
+-2.07846 1.29271 0
+-1.93187 1.52268 0
+-1.86779 1.34175 0
+-1.88301 0.81304 0
+-1.93824 0.179379 0
+-1.96918 -0.256203 0
+-1.90979 -0.283994 0
+-1.72148 0.105757 0
+-1.41538 0.721188 0
+-1.05324 1.27368 0
+-0.721643 1.52864 0
+-0.491416 1.41451 0
+-0.385975 1.03146 0
+-0.37774 0.566908 0
+-0.413138 0.182254 0
+-0.447369 -0.0552786 0
+-0.465183 -0.163615 0
+-0.476836 -0.186356 0
+-0.497728 -0.140335 0
+-0.530346 -0.010774 0
+-0.561412 0.210184 0
+-0.573153 0.480468 0
+-0.557423 0.700473 0
+-0.521818 0.752521 0
+-0.485026 0.564749 0
+-0.466149 0.160295 0
+-0.474388 -0.338427 0
+-0.503469 -0.755757 0
+-0.533112 -0.938803 0
+-0.538225 -0.827376 0
+-0.50297 -0.482426 0
+-0.432135 -0.0563451 0
+-0.351048 0.280564 0
+-0.291702 0.416999 0
+-0.273441 0.338093 0
+-0.292166 0.106856 0
+-0.326598 -0.189462 0
+-0.357097 -0.485933 0
+-0.382396 -0.748557 0
+-0.421455 -0.949011 0
+-0.500018 -1.03914 0
+-0.633423 -0.957634 0
+-0.818703 -0.671477 0
+-1.03979 -0.222268 0
+-1.27915 0.260752 0
+-1.52593 0.59847 0
+-1.77522 0.634785 0
+-2.02201 0.306667 0
+-2.25673 -0.323657 0
+-2.4655 -1.08727 0
+-2.63293 -1.76686 0
+-2.74432 -2.16996 0
+-2.78779 -2.19034 0
+-2.76189 -1.83628 0
+-2.69626 -1.21363 0
+-2.67332 -0.461769 0
+-2.75749 0.335346 0
+-2.96532 1.14727 0
+-3.26483 1.95008 0
+-3.59305 2.66463 0
+-3.90995 3.10151 0
+-4.24565 2.97894 0
+-4.6022 2.0723 0
+-4.9349 0.318841 0
+-5.1885 -2.09805 0
+-5.33004 -4.70613 0
+-5.35294 -6.80545 0
+-5.25858 -7.66441 0
+-5.03697 -6.80295 0
+-4.66528 -4.24244 0
+-4.12858 -0.586095 0
+-3.44943 3.14385 0
+-2.70071 5.86921 0
+-1.98526 6.86256 0
+-1.39386 6.00582 0
+-0.969373 3.78719 0
+-0.699436 1.05995 0
+-0.540293 -1.30395 0
+-0.453024 -2.70281 0
+-0.426168 -2.92955 0
+-0.470781 -2.12583 0
+-0.594903 -0.643264 0
+-0.77884 1.09421 0
+-0.970555 2.67706 0
+-1.10463 3.75498 0
+-1.13293 4.07593 0
+-1.04893 3.54105 0
+-0.891955 2.26183 0
+-0.728597 0.576193 0
+-0.620562 -1.01725 0
+-0.595056 -2.01119 0
+-0.632733 -2.0811 0
+-0.679915 -1.23324 0
+-0.679134 0.169888 0
+-0.601178 1.53551 0
+-0.460292 2.27119 0
+-0.305642 2.01537 0
+-0.198733 0.762756 0
+-0.193613 -1.1606 0
+-0.330128 -3.24109 0
+-0.637156 -4.96061 0
+-1.13392 -5.94085 0
+-1.82074 -6.01194 0
+-2.66294 -5.21671 0
+-3.58181 -3.78179 0
+-4.46512 -2.07301 0
+-5.19744 -0.529332 0
+-5.69825 0.434245 0
+-5.95129 0.543711 0
+-6.01284 -0.234716 0
+-5.99511 -1.66176 0
+-6.03059 -3.28942 0
+-6.23 -4.60937 0
+-6.64576 -5.22854 0
+-7.24964 -4.99745 0
+-7.92722 -4.03445 0
+-8.48683 -2.63134 0
+-4.66711 -1.06489 0
+-2.51504 -0.293294 0
+-2.51504 0.35999 0
+-0.730645 -0.106431 0
+-1.41345 -0.160578 0
+-2.72247 -0.20709 0
+-2.59576 -0.180143 0
+-2.37292 0.0485184 0
+-2.06483 0.483013 0
+-1.72622 0.954098 0
+-1.4376 1.23407 0
+-1.27103 1.17518 0
+-1.25519 0.797207 0
+-1.35671 0.280894 0
+-1.48785 -0.125057 0
+-1.54045 -0.231399 0
+-1.43294 -0.00174882 0
+-1.14888 0.437126 0
+-0.745873 0.870676 0
+-0.328554 1.11132 0
+0.000275089 1.08568 0
+0.183086 0.848648 0
+0.22269 0.527304 0
+0.164999 0.239946 0
+0.065785 0.043935 0
+-0.0351639 -0.0626666 0
+-0.119202 -0.102319 0
+-0.177661 -0.0818748 0
+-0.199622 0.0111863 0
+-0.170826 0.181389 0
+-0.0841484 0.393791 0
+0.048114 0.568211 0
+0.191175 0.60946 0
+0.298099 0.457825 0
+0.328919 0.129475 0
+0.269099 -0.278607 0
+0.138402 -0.625059 0
+-0.0147233 -0.785678 0
+-0.132143 -0.709957 0
+-0.170812 -0.443756 0
+-0.121339 -0.105818 0
+-0.0101233 0.169348 0
+0.116211 0.290664 0
+0.214317 0.239987 0
+0.260915 0.0602581 0
+0.253777 -0.182323 0
+0.199953 -0.43211 0
+0.103486 -0.65209 0
+-0.0365475 -0.808977 0
+-0.217316 -0.85837 0
+-0.422647 -0.752303 0
+-0.623322 -0.470802 0
+-0.789553 -0.0560371 0
+-0.907857 0.379055 0
+-0.990813 0.681426 0
+-1.07297 0.716946 0
+-1.1953 0.428988 0
+-1.38672 -0.13223 0
+-1.65122 -0.822771 0
+-1.96444 -1.45365 0
+-2.28033 -1.85407 0
+-2.54633 -1.92434 0
+-2.724 -1.65862 0
+-2.80859 -1.12904 0
+-2.83153 -0.438827 0
+-2.82443 0.328241 0
+-2.79379 1.11664 0
+-2.71766 1.87395 0
+-2.56349 2.51046 0
+-2.32811 2.86612 0
+-2.07191 2.72274 0
+-1.8884 1.8888 0
+-1.87124 0.301685 0
+-2.08871 -1.88058 0
+-2.55476 -4.24008 0
+-3.19966 -6.16054 0
+-3.85935 -7.00472 0
+-4.3037 -6.35861 0
+-4.30709 -4.23905 0
+-3.73922 -1.15396 0
+-2.63488 2.03951 0
+-1.20264 4.43697 0
+0.240001 5.41992 0
+1.37747 4.86836 0
+2.0016 3.16306 0
+2.06701 0.99455 0
+1.67986 -0.916807 0
+1.03704 -2.05999 0
+0.35186 -2.24437 0
+-0.200734 -1.57324 0
+-0.507945 -0.336053 0
+-0.52079 1.10706 0
+-0.249357 2.40562 0
+0.240848 3.26478 0
+0.835313 3.48147 0
+1.38866 2.98771 0
+1.75927 1.89123 0
+1.85417 0.481291 0
+1.66756 -0.83064 0
+1.29326 -1.6369 0
+0.899184 -1.68702 0
+0.667792 -1.00185 0
+0.724357 0.113323 0
+1.08413 1.17573 0
+1.64316 1.71216 0
+2.21623 1.44229 0
+2.60209 0.376904 0
+2.64589 -1.2044 0
+2.27621 -2.87141 0
+1.51065 -4.19506 0
+0.439782 -4.86999 0
+-0.796762 -4.7754 0
+-2.03488 -3.97859 0
+-3.11301 -2.70366 0
+-3.90443 -1.28159 0
+-4.35051 -0.0832525 0
+-4.48272 0.566458 0
+-4.42057 0.48156 0
+-4.3405 -0.314787 0
+-4.4231 -1.57916 0
+-4.79701 -2.91551 0
+-5.50026 -3.90612 0
+-6.47185 -4.25694 0
+-7.57211 -3.8972 0
+-8.61586 -2.9907 0
+-9.39488 -1.85232 0
+-5.15815 -0.787952 0
+-2.78955 -0.365644 0
+-2.78955 0.177381 0
+-0.681999 -0.10207 0
+-1.34015 -0.16539 0
+-2.61942 -0.239097 0
+-2.5235 -0.276056 0
+-2.32166 -0.153326 0
+-2.00596 0.167316 0
+-1.62097 0.569105 0
+-1.25382 0.866916 0
+-0.998535 0.919892 0
+-0.911514 0.710186 0
+-0.980752 0.350132 0
+-1.12561 0.0197995 0
+-1.2296 -0.12741 0
+-1.19209 -0.0392578 0
+-0.973861 0.218898 0
+-0.613168 0.509983 0
+-0.204357 0.70251 0
+0.148123 0.733199 0
+0.374384 0.622386 0
+0.459674 0.442014 0
+0.434865 0.264755 0
+0.349395 0.129405 0
+0.246852 0.0398762 0
+0.156235 -0.0117015 0
+0.0973083 -0.022948 0
+0.0883543 0.0201403 0
+0.145706 0.124037 0
+0.273836 0.265661 0
+0.454073 0.387974 0
+0.642424 0.421109 0
+0.781443 0.318806 0
+0.822246 0.0886707 0
+0.746378 -0.202738 0
+0.576533 -0.455215 0
+0.369961 -0.579105 0
+0.196263 -0.536259 0
+0.109191 -0.356684 0
+0.125756 -0.122384 0
+0.222801 0.0723032 0
+0.351684 0.161781 0
+0.461544 0.130127 0
+0.51757 0.00423173 0
+0.505845 -0.170598 0
+0.426684 -0.352949 0
+0.286121 -0.511527 0
+0.0941622 -0.617018 0
+-0.129915 -0.634293 0
+-0.353062 -0.529157 0
+-0.533312 -0.290553 0
+-0.635404 0.0460553 0
+-0.649594 0.393245 0
+-0.602206 0.634038 0
+-0.550432 0.665171 0
+-0.562602 0.441159 0
+-0.692632 -0.00220051 0
+-0.959427 -0.555976 0
+-1.33903 -1.07404 0
+-1.77191 -1.42119 0
+-2.18252 -1.51374 0
+-2.50374 -1.3374 0
+-2.69573 -0.937055 0
+-2.74806 -0.386496 0
+-2.66233 0.242519 0
+-2.43631 0.89061 0
+-2.06151 1.49914 0
+-1.53759 1.98655 0
+-0.900611 2.22914 0
+-0.247364 2.06949 0
+0.273509 1.36792 0
+0.495534 0.0796599 0
+0.28598 -1.67103 0
+-0.394285 -3.55981 0
+-1.44337 -5.11146 0
+-2.6114 -5.83669 0
+-3.55323 -5.41678 0
+-3.93467 -3.85761 0
+-3.55617 -1.53246 0
+-2.44068 0.924015 0
+-0.841241 2.83753 0
+0.841203 3.73748 0
+2.19584 3.51372 0
+2.93649 2.42241 0
+2.97925 0.951787 0
+2.44077 -0.378324 0
+1.57154 -1.19076 0
+0.662729 -1.33557 0
+-0.0343406 -0.876167 0
+-0.355564 -0.01483 0
+-0.239561 0.991058 0
+0.276362 1.8897 0
+1.0705 2.47064 0
+1.96043 2.59154 0
+2.74001 2.20813 0
+3.22983 1.4014 0
+3.33124 0.37988 0
+3.06472 -0.564124 0
+2.57256 -1.14474 0
+2.07645 -1.1909 0
+1.79965 -0.725053 0
+1.88205 0.0309232 0
+2.32333 0.734457 0
+2.97958 1.0559 0
+3.61431 0.807565 0
+3.9801 0.0111122 0
+3.89687 -1.12117 0
+3.29922 -2.27375 0
+2.2435 -3.13934 0
+0.882473 -3.50896 0
+-0.576671 -3.31625 0
+-1.91809 -2.63717 0
+-2.96129 -1.66046 0
+-3.60027 -0.642614 0
+-3.83156 0.148037 0
+-3.76072 0.495615 0
+-3.57884 0.299679 0
+-3.50986 -0.383767 0
+-3.74271 -1.3463 0
+-4.37212 -2.28611 0
+-5.37106 -2.90718 0
+-6.60591 -3.0221 0
+-7.88621 -2.6169 0
+-9.02323 -1.85368 0
+-9.85991 -1.01564 0
+-5.30384 -0.411272 0
+-2.85324 -0.326591 0
+-2.85324 0.07938 0
+-0.600118 -0.0860953 0
+-1.19984 -0.147716 0
+-2.38556 -0.231293 0
+-2.35323 -0.308391 0
+-2.2333 -0.273258 0
+-1.99689 -0.0690879 0
+-1.66367 0.235883 0
+-1.30389 0.507134 0
+-1.01036 0.626361 0
+-0.854702 0.554532 0
+-0.851079 0.34651 0
+-0.946849 0.115569 0
+-1.04589 -0.028364 0
+-1.05324 -0.0319132 0
+-0.918253 0.0839126 0
+-0.654566 0.246296 0
+-0.327924 0.375868 0
+-0.0211403 0.426415 0
+0.203085 0.398161 0
+0.322265 0.322834 0
+0.350749 0.236271 0
+0.321252 0.158902 0
+0.266447 0.0946806 0
+0.211235 0.0435113 0
+0.175419 0.0128672 0
+0.178412 0.0171473 0
+0.23765 0.0647995 0
+0.359425 0.143886 0
+0.528539 0.218859 0
+0.705797 0.243851 0
+0.838263 0.18634 0
+0.879397 0.0475364 0
+0.809805 -0.133145 0
+0.648022 -0.293432 0
+0.445122 -0.376205 0
+0.264732 -0.355869 0
+0.15747 -0.249422 0
+0.141912 -0.106826 0
+0.200806 0.0134084 0
+0.292942 0.0696459 0
+0.37266 0.0504089 0
+0.405992 -0.0291005 0
+0.376511 -0.141117 0
+0.282062 -0.2585 0
+0.129367 -0.358832 0
+-0.0672049 -0.420447 0
+-0.282571 -0.418927 0
+-0.479447 -0.33228 0
+-0.614836 -0.155164 0
+-0.655331 0.0865506 0
+-0.594764 0.332677 0
+-0.464179 0.503453 0
+-0.32703 0.528023 0
+-0.259874 0.374002 0
+-0.326097 0.0640222 0
+-0.553358 -0.328715 0
+-0.923445 -0.703958 0
+-1.37783 -0.966798 0
+-1.83598 -1.05559 0
+-2.21844 -0.954941 0
+-2.46492 -0.690571 0
+-2.53994 -0.311475 0
+-2.42637 0.128942 0
+-2.11728 0.581528 0
+-1.61517 0.997027 0
+-0.942083 1.31346 0
+-0.158672 1.44573 0
+0.619739 1.29108 0
+1.22755 0.760109 0
+1.48018 -0.172969 0
+1.22947 -1.42032 0
+0.429334 -2.75968 0
+-0.814255 -3.86787 0
+-2.23827 -4.41268 0
+-3.47951 -4.17554 0
+-4.18382 -3.1533 0
+-4.12984 -1.58644 0
+-3.31549 0.109668 0
+-1.96642 1.48845 0
+-0.459026 2.23009 0
+0.810006 2.24469 0
+1.55304 1.67937 0
+1.66955 0.835275 0
+1.25051 0.0407171 0
+0.520386 -0.460628 0
+-0.249354 -0.565825 0
+-0.819032 -0.30649 0
+-1.03061 0.19675 0
+-0.82657 0.787016 0
+-0.246977 1.31011 0
+0.586258 1.63741 0
+1.49535 1.68245 0
+2.28434 1.41913 0
+2.78738 0.898365 0
+2.9179 0.24936 0
+2.70133 -0.347556 0
+2.27381 -0.717211 0
+1.83976 -0.756859 0
+1.599 -0.484296 0
+1.67 -0.0400718 0
+2.04127 0.363188 0
+2.57233 0.524841 0
+3.04363 0.336266 0
+3.23346 -0.178718 0
+2.99045 -0.878157 0
+2.27631 -1.55962 0
+1.16953 -2.03256 0
+-0.163362 -2.17607 0
+-1.5138 -1.96582 0
+-2.68059 -1.47038 0
+-3.51407 -0.826977 0
+-3.94983 -0.206849 0
+-4.02618 0.224381 0
+-3.87831 0.347747 0
+-3.70516 0.126529 0
+-3.71329 -0.375642 0
+-4.05334 -1.00624 0
+-4.7716 -1.56785 0
+-5.79632 -1.88246 0
+-6.96655 -1.85187 0
+-8.09359 -1.48986 0
+-9.03006 -0.917212 0
+-9.71013 -0.335573 0
+-5.01881 -0.00601962 0
+-2.6367 -0.142923 0
+-2.6367 0.143966 0
+-0.486448 -0.0621817 0
+-0.989276 -0.111931 0
+-2.00142 -0.186191 0
+-2.03844 -0.271367 0
+-2.02361 -0.288089 0
+-1.91273 -0.179972 0
+-1.69754 0.0206987 0
+-1.41885 0.228442 0
+-1.15036 0.357868 0
+-0.963312 0.367487 0
+-0.891652 0.274849 0
+-0.916245 0.140162 0
+-0.975945 0.0313369 0
+-0.998703 -0.00915607 0
+-0.935689 0.020899 0
+-0.780876 0.0914832 0
+-0.567685 0.162678 0
+-0.347615 0.206345 0
+-0.164854 0.215401 0
+-0.0407308 0.198711 0
+0.0265803 0.16896 0
+0.0518125 0.13367 0
+0.0516517 0.0948414 0
+0.0402494 0.0549136 0
+0.0312373 0.0218793 0
+0.0406033 0.00778134 0
+0.0846497 0.0207531 0
+0.172098 0.0564379 0
+0.295119 0.0958382 0
+0.426324 0.112646 0
+0.525889 0.0867744 0
+0.557015 0.0164105 0
+0.502567 -0.0786968 0
+0.374355 -0.16522 0
+0.209804 -0.211654 0
+0.0570512 -0.203116 0
+-0.0445297 -0.147841 0
+-0.0790729 -0.0722824 0
+-0.0576178 -0.00804671 0
+-0.00985332 0.0218814 0
+0.0300167 0.010539 0
+0.0353928 -0.0344766 0
+-0.00757179 -0.0981521 0
+-0.101179 -0.164893 0
+-0.239167 -0.220844 0
+-0.407352 -0.252262 0
+-0.581965 -0.244313 0
+-0.729757 -0.184489 0
+-0.814214 -0.0707067 0
+-0.80833 0.0806665 0
+-0.708966 0.233313 0
+-0.545066 0.339553 0
+-0.373894 0.356852 0
+-0.265066 0.265175 0
+-0.278088 0.0770433 0
+-0.44223 -0.164573 0
+-0.74645 -0.399738 0
+-1.14264 -0.570604 0
+-1.56001 -0.638226 0
+-1.92405 -0.590898 0
+-2.17252 -0.442096 0
+-2.26302 -0.220973 0
+-2.17242 0.038339 0
+-1.89357 0.302681 0
+-1.43534 0.538788 0
+-0.82915 0.707279 0
+-0.140899 0.757476 0
+0.5195 0.630683 0
+1.00233 0.277279 0
+1.14408 -0.314718 0
+0.814648 -1.09089 0
+-0.0265067 -1.91852 0
+-1.2881 -2.60628 0
+-2.7433 -2.95747 0
+-4.07788 -2.84097 0
+-4.98125 -2.24992 0
+-5.24909 -1.3186 0
+-4.85541 -0.284013 0
+-3.96201 0.59505 0
+-2.85954 1.12762 0
+-1.86501 1.25016 0
+-1.21838 1.03275 0
+-1.01788 0.634774 0
+-1.21243 0.235264 0
+-1.64356 -0.0294923 0
+-2.11125 -0.0981414 0
+-2.4355 0.0177692 0
+-2.49664 0.257889 0
+-2.25125 0.541625 0
+-1.73047 0.789329 0
+-1.02764 0.934577 0
+-0.277981 0.932783 0
+0.370365 0.770788 0
+0.792892 0.475838 0
+0.925646 0.116606 0
+0.789283 -0.211193 0
+0.487049 -0.414978 0
+0.171647 -0.441457 0
+-0.0104126 -0.302237 0
+0.02383 -0.0743144 0
+0.258916 0.128102 0
+0.584241 0.199515 0
+0.834301 0.0862061 0
+0.84854 -0.192957 0
+0.526425 -0.556043 0
+-0.141845 -0.89135 0
+-1.07614 -1.09826 0
+-2.13312 -1.11909 0
+-3.1464 -0.952535 0
+-3.96782 -0.648955 0
+-4.50152 -0.293278 0
+-4.72599 0.0176218 0
+-4.70032 0.19871 0
+-4.55125 0.198674 0
+-4.44059 0.0158697 0
+-4.51881 -0.297416 0
+-4.87789 -0.647167 0
+-5.52011 -0.925634 0
+-6.35615 -1.04641 0
+-7.23579 -0.972236 0
+-8.00282 -0.722825 0
+-8.55833 -0.361699 0
+-8.9136 0.0196937 0
+-4.36446 0.283215 0
+-2.179 0.112983 0
+-2.179 0.364182 0
+-0.352915 -0.0365866 0
+-0.728973 -0.0687809 0
+-1.49943 -0.120237 0
+-1.5843 -0.186497 0
+-1.65443 -0.217962 0
+-1.66107 -0.173335 0
+-1.57636 -0.0640038 0
+-1.41245 0.064532 0
+-1.21627 0.161684 0
+-1.04571 0.196929 0
+-0.941546 0.170685 0
+-0.91002 0.108636 0
+-0.924011 0.045327 0
+-0.940141 0.00697474 0
+-0.921258 0.0020152 0
+-0.85217 0.0223957 0
+-0.741871 0.0523787 0
+-0.613802 0.0782756 0
+-0.491975 0.0935732 0
+-0.391338 0.0980735 0
+-0.316189 0.0938112 0
+-0.264444 0.081925 0
+-0.23241 0.0628075 0
+-0.216076 0.0385796 0
+-0.209065 0.0148685 0
+-0.200761 -0.000522806 0
+-0.178164 -0.00184382 0
+-0.131952 0.0102259 0
+-0.0634648 0.0273508 0
+0.0122519 0.0369298 0
+0.0704298 0.0285965 0
+0.0866351 0.000205286 0
+0.0481731 -0.0402348 0
+-0.0390678 -0.0779792 0
+-0.152117 -0.0986051 0
+-0.260273 -0.0949604 0
+-0.337752 -0.0703614 0
+-0.373484 -0.0365505 0
+-0.373683 -0.00784805 0
+-0.356919 0.00511697 0
+-0.345261 -0.00111819 0
+-0.356424 -0.0233141 0
+-0.400018 -0.0545584 0
+-0.477665 -0.0872453 0
+-0.584325 -0.114184 0
+-0.708499 -0.128089 0
+-0.831443 -0.121368 0
+-0.927937 -0.0879949 0
+-0.971235 -0.0274093 0
+-0.942316 0.0517484 0
+-0.84007 0.131067 0
+-0.687129 0.186612 0
+-0.527268 0.19699 0
+-0.413978 0.151884 0
+-0.394056 0.0571218 0
+-0.492449 -0.0661798 0
+-0.704069 -0.188117 0
+-0.99527 -0.279404 0
+-1.31365 -0.319842 0
+-1.60178 -0.302767 0
+-1.80947 -0.234414 0
+-1.9009 -0.129539 0
+-1.8564 -0.0061593 0
+-1.67148 0.117759 0
+-1.35702 0.224327 0
+-0.943018 0.293277 0
+-0.485247 0.299706 0
+-0.0702628 0.215698 0
+0.18862 0.0183959 0
+0.170298 -0.296396 0
+-0.220149 -0.700441 0
+-1.01123 -1.12744 0
+-2.13489 -1.48262 0
+-3.42387 -1.66849 0
+-4.64571 -1.61912 0
+-5.56703 -1.3286 0
+-6.02607 -0.859557 0
+-5.98465 -0.325434 0
+-5.53731 0.147709 0
+-4.87351 0.463824 0
+-4.20922 0.585858 0
+-3.71637 0.539896 0
+-3.47709 0.395496 0
+-3.4756 0.233772 0
+-3.62341 0.118321 0
+-3.80132 0.0797668 0
+-3.89959 0.116039 0
+-3.84465 0.202947 0
+-3.61001 0.306983 0
+-3.21548 0.394806 0
+-2.71951 0.438608 0
+-2.20651 0.419776 0
+-1.7688 0.333079 0
+-1.48373 0.190766 0
+-1.39034 0.0232233 0
+-1.47425 -0.127286 0
+-1.66916 -0.220073 0
+-1.87838 -0.232227 0
+-2.01063 -0.16999 0
+-2.01626 -0.0686812 0
+-1.90854 0.0203813 0
+-1.75987 0.0508428 0
+-1.67432 0.00065883 0
+-1.74823 -0.119055 0
+-2.03501 -0.269258 0
+-2.52726 -0.399098 0
+-3.16037 -0.465157 0
+-3.8335 -0.445959 0
+-4.43876 -0.347277 0
+-4.88938 -0.198333 0
+-5.14065 -0.042006 0
+-5.20031 0.0772779 0
+-5.12678 0.125184 0
+-5.01486 0.0867548 0
+-4.97042 -0.0285787 0
+-5.07949 -0.188345 0
+-5.38074 -0.345912 0
+-5.85106 -0.455318 0
+-6.41052 -0.486947 0
+-6.94611 -0.436645 0
+-7.347 -0.321945 0
+-7.545 -0.163694 0
+-7.56636 0.0410513 0
+-3.54051 0.333251 0
+-1.65081 0.291329 0
+-1.65081 0.607266 0
+-0.218551 -0.015695 0
+-0.457463 -0.0308928 0
+-0.95533 -0.0564569 0
+-1.04997 -0.091861 0
+-1.15414 -0.113783 0
+-1.22632 -0.10116 0
+-1.23377 -0.0565514 0
+-1.1709 0.00166218 0
+-1.06052 0.0512966 0
+-0.940664 0.0770772 0
+-0.845915 0.0759368 0
+-0.793061 0.0557815 0
+-0.777428 0.0296942 0
+-0.779692 0.00923835 0
+-0.777854 0.000177862 0
+-0.757468 0.00200963 0
+-0.715536 0.0104465 0
+-0.657932 0.0206713 0
+-0.593748 0.0293891 0
+-0.530711 0.0350364 0
+-0.473796 0.036897 0
+-0.426281 0.0344093 0
+-0.390861 0.0273882 0
+-0.369128 0.016846 0
+-0.359689 0.00543014 0
+-0.35693 -0.00328235 0
+-0.352278 -0.00649553 0
+-0.338144 -0.00390859 0
+-0.312548 0.0017546 0
+-0.281551 0.00593279 0
+-0.257554 0.00460033 0
+-0.253868 -0.00348165 0
+-0.278168 -0.0159342 0
+-0.328288 -0.0278589 0
+-0.392606 -0.0342876 0
+-0.454911 -0.0326557 0
+-0.501277 -0.0239949 0
+-0.525534 -0.012294 0
+-0.530875 -0.00250641 0
+-0.527384 0.00162558 0
+-0.527319 -0.00118264 0
+-0.540784 -0.00984979 0
+-0.573434 -0.0219078 0
+-0.626183 -0.0344969 0
+-0.695595 -0.0447714 0
+-0.773877 -0.0498062 0
+-0.848605 -0.0466408 0
+-0.903554 -0.0330461 0
+-0.922 -0.00896299 0
+-0.892428 0.0221764 0
+-0.81466 0.0532986 0
+-0.703342 0.0752947 0
+-0.586373 0.0800206 0
+-0.497967 0.0634782 0
+-0.468577 0.0277316 0
+-0.515392 -0.0193644 0
+-0.636951 -0.0665584 0
+-0.813633 -0.102722 0
+-1.0134 -0.120074 0
+-1.20023 -0.115941 0
+-1.34201 -0.09263 0
+-1.4157 -0.0558494 0
+-1.40914 -0.0127182 0
+-1.32098 0.0295968 0
+-1.16071 0.064057 0
+-0.950401 0.0829675 0
+-0.727901 0.0772055 0
+-0.54901 0.036807 0
+-0.484485 -0.0461288 0
+-0.608365 -0.172516 0
+-0.977518 -0.331288 0
+-1.60759 -0.497372 0
+-2.455 -0.635212 0
+-3.41528 -0.708207 0
+-4.34314 -0.691264 0
+-5.09045 -0.58129 0
+-5.54951 -0.400499 0
+-5.68474 -0.190205 0
+-5.53987 0.00284071 0
+-5.21794 0.141892 0
+-4.84301 0.21093 0
+-4.51972 0.216613 0
+-4.30593 0.1817 0
+-4.20612 0.133966 0
+-4.18371 0.0959061 0
+-4.18306 0.0791189 0
+-4.15118 0.0841591 0
+-4.05227 0.104036 0
+-3.87382 0.128537 0
+-3.62643 0.147415 0
+-3.33996 0.152137 0
+-3.05723 0.137046 0
+-2.82489 0.100736 0
+-2.68161 0.0474851 0
+-2.64593 -0.0124526 0
+-2.70832 -0.0648989 0
+-2.83209 -0.0962999 0
+-2.96508 -0.099233 0
+-3.05883 -0.0762477 0
+-3.08777 -0.0397367 0
+-3.06006 -0.00732732 0
+-3.01461 0.00539249 0
+-3.00543 -0.00852353 0
+-3.07994 -0.0445406 0
+-3.26042 -0.0887783 0
+-3.53561 -0.123913 0
+-3.86472 -0.136041 0
+-4.19104 -0.119643 0
+-4.45927 -0.079043 0
+-4.63115 -0.0264556 0
+-4.69532 0.0221613 0
+-4.66994 0.0518966 0
+-4.59786 0.0531053 0
+-4.53532 0.0242169 0
+-4.53637 -0.0275245 0
+-4.63682 -0.0879003 0
+-4.84258 -0.140152 0
+-5.12688 -0.171015 0
+-5.43762 -0.176207 0
+-5.7117 -0.162566 0
+-5.88944 -0.144202 0
+-5.92405 -0.129089 0
+-5.80007 -0.0829293 0
+-2.75453 0.172068 0
+-1.26513 0.275401 0
+-1.26513 0.651165 0
+-0.104216 -0.00352653 0
+-0.220322 -0.00748183 0
+-0.466286 -0.0142984 0
+-0.533918 -0.0242284 0
+-0.616573 -0.031129 0
+-0.688359 -0.0293735 0
+-0.725669 -0.0192419 0
+-0.719086 -0.0049205 0
+-0.67606 0.00827032 0
+-0.615345 0.0163623 0
+-0.55748 0.0180718 0
+-0.516401 0.0147032 0
+-0.495704 0.00899718 0
+-0.490148 0.00368225 0
+-0.490413 0.000443078 0
+-0.488054 -0.000350073 0
+-0.478336 0.000728985 0
+-0.460432 0.00276737 0
+-0.436001 0.00495806 0
+-0.407694 0.00672948 0
+-0.378469 0.00767139 0
+-0.351537 0.00747725 0
+-0.330178 0.00602916 0
+-0.316893 0.003561 0
+-0.312178 0.000715865 0
+-0.313823 -0.00163804 0
+-0.317525 -0.00279307 0
+-0.318854 -0.00257999 0
+-0.315604 -0.00149474 0
+-0.309207 -0.000464614 0
+-0.304246 -0.000360309 0
+-0.306207 -0.00152087 0
+-0.318581 -0.00356002 0
+-0.340875 -0.00556471 0
+-0.368588 -0.00657538 0
+-0.39516 -0.00608284 0
+-0.414878 -0.0042774 0
+-0.425237 -0.00193515 0
+-0.427711 -3.21572e-05 0
+-0.426771 0.000685026 0
+-0.427906 -4.7601e-05 0
+-0.435738 -0.0020175 0
+-0.452929 -0.00471679 0
+-0.479893 -0.00753268 0
+-0.514832 -0.0098322 0
+-0.553679 -0.010959 0
+-0.590056 -0.010264 0
+-0.615824 -0.00727806 0
+-0.622775 -0.00201167 0
+-0.605379 0.00477991 0
+-0.563657 0.0115771 0
+-0.504801 0.0164378 0
+-0.442406 0.0176262 0
+-0.393206 0.0142785 0
+-0.372282 0.00680705 0
+-0.388495 -0.00315071 0
+-0.441823 -0.0132304 0
+-0.523465 -0.0210804 0
+-0.61849 -0.0250479 0
+-0.709868 -0.0245631 0
+-0.782373 -0.0201258 0
+-0.825242 -0.0129802 0
+-0.833272 -0.00468789 0
+-0.806857 0.00318121 0
+-0.751912 0.00911234 0
+-0.680446 0.0115013 0
+-0.61174 0.00849948 0
+-0.57306 -0.00187239 0
+-0.598052 -0.0211374 0
+-0.721208 -0.0493594 0
+-0.968374 -0.084122 0
+-1.34563 -0.120113 0
+-1.83099 -0.14985 0
+-2.37358 -0.165622 0
+-2.90276 -0.162083 0
+-3.34562 -0.138426 0
+-3.64701 -0.0991113 0
+-3.78458 -0.0526362 0
+-3.77296 -0.00877935 0
+-3.65563 0.0245595 0
+-3.48829 0.0435963 0
+-3.32083 0.0491484 0
+-3.18452 0.0453941 0
+-3.08825 0.0376942 0
+-3.02288 0.0305378 0
+-2.97015 0.026389 0
+-2.91161 0.0256147 0
+-2.83471 0.0271375 0
+-2.73543 0.0292575 0
+-2.61827 0.0302544 0
+-2.49484 0.0287039 0
+-2.38147 0.0236818 0
+-2.29576 0.0150203 0
+-2.25186 0.00358843 0
+-2.25568 -0.00863486 0
+-2.30163 -0.0189439 0
+-2.37316 -0.0247771 0
+-2.44761 -0.0247788 0
+-2.50432 -0.0195353 0
+-2.53253 -0.0115319 0
+-2.53562 -0.00423448 0
+-2.52957 -0.000657868 0
+-2.53601 -0.00208706 0
+-2.57299 -0.00755967 0
+-2.64742 -0.014342 0
+-2.75219 -0.0191431 0
+-2.86875 -0.0194904 0
+-2.97371 -0.014681 0
+-3.04676 -0.00598809 0
+-3.07707 0.00385198 0
+-3.0665 0.0115926 0
+-3.02912 0.0145183 0
+-2.9873 0.0112863 0
+-2.96546 0.00237191 0
+-2.98298 -0.0100061 0
+-3.04834 -0.0225392 0
+-3.1565 -0.0319943 0
+-3.29089 -0.0366251 0
+-3.4297 -0.0373878 0
+-3.55376 -0.0385073 0
+-3.65084 -0.0471265 0
+-3.70888 -0.0710441 0
+-3.68976 -0.102055 0
+-1.99446 0.00766658 0
+-1.04396 0.11167 0
+-1.04396 0.362505 0
+-0.0274652 -0.00352653 0
+-0.058331 -0.00748183 0
+-0.124811 -0.0142984 0
+-0.14904 -0.0242284 0
+-0.180169 -0.031129 0
+-0.209542 -0.0293735 0
+-0.228784 -0.0192419 0
+-0.233705 -0.0049205 0
+-0.225434 0.00827032 0
+-0.209072 0.0163623 0
+-0.191 0.0180718 0
+-0.176297 0.0147032 0
+-0.1673 0.00899718 0
+-0.163617 0.00368225 0
+-0.163174 0.000443078 0
+-0.163524 -0.000350073 0
+-0.162795 0.000728985 0
+-0.160028 0.00276737 0
+-0.15507 0.00495806 0
+-0.148341 0.00672948 0
+-0.140669 0.00767139 0
+-0.133192 0.00747725 0
+-0.127163 0.00602916 0
+-0.123602 0.003561 0
+-0.122886 0.000715865 0
+-0.124524 -0.00163804 0
+-0.127317 -0.00279307 0
+-0.129897 -0.00257999 0
+-0.131392 -0.00149474 0
+-0.131856 -0.000464614 0
+-0.132217 -0.000360309 0
+-0.133738 -0.00152087 0
+-0.137298 -0.00356002 0
+-0.142862 -0.00556471 0
+-0.149438 -0.00657538 0
+-0.15552 -0.00608284 0
+-0.159798 -0.0042774 0
+-0.161733 -0.00193515 0
+-0.161765 -3.21572e-05 0
+-0.16108 0.000685026 0
+-0.161128 -4.7601e-05 0
+-0.163145 -0.0020175 0
+-0.167862 -0.00471679 0
+-0.175395 -0.00753268 0
+-0.185227 -0.0098322 0
+-0.196186 -0.010959 0
+-0.20645 -0.010264 0
+-0.213728 -0.00727806 0
+-0.21574 -0.00201167 0
+-0.21096 0.00477991 0
+-0.199383 0.0115771 0
+-0.182945 0.0164378 0
+-0.165319 0.0176262 0
+-0.15104 0.0142785 0
+-0.144233 0.00680705 0
+-0.147384 -0.00315071 0
+-0.160614 -0.0132304 0
+-0.181695 -0.0210804 0
+-0.206743 -0.0250479 0
+-0.231306 -0.0245631 0
+-0.251432 -0.0201258 0
+-0.264412 -0.0129802 0
+-0.2691 -0.00468789 0
+-0.265919 0.00318121 0
+-0.256806 0.00911234 0
+-0.245305 0.0115013 0
+-0.236805 0.00849948 0
+-0.238678 -0.00187239 0
+-0.259815 -0.0211374 0
+-0.309175 -0.0493594 0
+-0.393297 -0.084122 0
+-0.51341 -0.120113 0
+-0.663259 -0.14985 0
+-0.828882 -0.165622 0
+-0.990965 -0.162083 0
+-1.12939 -0.138426 0
+-1.2285 -0.0991113 0
+-1.28114 -0.0526362 0
+-1.28992 -0.00877935 0
+-1.26536 0.0245595 0
+-1.22176 0.0435963 0
+-1.17261 0.0491484 0
+-1.12722 0.0453941 0
+-1.08953 0.0376942 0
+-1.05899 0.0305378 0
+-1.0326 0.026389 0
+-1.00698 0.0256147 0
+-0.979847 0.0271375 0
+-0.950589 0.0292575 0
+-0.920335 0.0302544 0
+-0.891631 0.0287039 0
+-0.867949 0.0236818 0
+-0.852929 0.0150203 0
+-0.84934 0.00358843 0
+-0.857975 -0.00863486 0
+-0.876919 -0.0189439 0
+-0.901696 -0.0247771 0
+-0.926475 -0.0247788 0
+-0.94601 -0.0195353 0
+-0.957542 -0.0115319 0
+-0.961777 -0.00423448 0
+-0.962435 -0.000657868 0
+-0.964522 -0.00208706 0
+-0.972081 -0.00755967 0
+-0.986423 -0.014342 0
+-1.00557 -0.0191431 0
+-1.02506 -0.0194904 0
+-1.03974 -0.014681 0
+-1.04573 -0.00598809 0
+-1.04187 0.00385198 0
+-1.03028 0.0115926 0
+-1.01576 0.0145183 0
+-1.00448 0.0112863 0
+-1.0021 0.00237191 0
+-1.01211 -0.0100061 0
+-1.03465 -0.0225392 0
+-1.06664 -0.0319943 0
+-1.10327 -0.0366251 0
+-1.14066 -0.0373878 0
+-1.17916 -0.0385073 0
+-1.22629 -0.0471265 0
+-1.29734 -0.0710441 0
+-1.39939 -0.102055 0
+-0.961311 0.00766658 0
+-0.62772 0.11167 0
+-0.62772 0.362505 0
+-0.172061 -0.037802 0
+-0.342908 -0.0706168 0
+-0.677549 -0.119189 0
+-0.495667 -0.181882 0
+-0.276738 -0.218929 0
+-0.0719479 -0.20479 0
+0.0720026 -0.143951 0
+0.131513 -0.0595106 0
+0.112139 0.0193744 0
+0.042935 0.0692039 0
+-0.0367492 0.0796842 0
+-0.0919264 0.0551772 0
+-0.102483 0.0105566 0
+-0.0665499 -0.0359331 0
+0.00293481 -0.0694847 0
+0.0856066 -0.0826718 0
+0.161347 -0.0757402 0
+0.215546 -0.0541993 0
+0.241078 -0.0255322 0
+0.237683 0.00339566 0
+0.21009 0.0275925 0
+0.165956 0.0441341 0
+0.114016 0.0519402 0
+0.0624549 0.0515608 0
+0.0174998 0.0449551 0
+-0.0175044 0.0350042 0
+-0.0421402 0.0246357 0
+-0.057953 0.0158128 0
+-0.066862 0.00890903 0
+-0.0697556 0.00289357 0
+-0.0660621 -0.00369346 0
+-0.0545553 -0.0115068 0
+-0.034907 -0.0196483 0
+-0.00901464 -0.0258923 0
+0.0187684 -0.027783 0
+0.0427295 -0.0239612 0
+0.0576703 -0.0149408 0
+0.0605809 -0.00291056 0
+0.0513237 0.00925715 0
+0.0321674 0.0191563 0
+0.00665584 0.0255115 0
+-0.0214595 0.0281153 0
+-0.0487684 0.0273089 0
+-0.0723035 0.0235351 0
+-0.0896416 0.0173382 0
+-0.099396 0.00975436 0
+-0.102053 0.00265672 0
+-0.100625 -0.00142813 0
+-0.100446 -0.000178662 0
+-0.107787 0.00734123 0
+-0.127645 0.0198578 0
+-0.161648 0.0340028 0
+-0.207111 0.0454636 0
+-0.257777 0.0506655 0
+-0.305929 0.0481524 0
+-0.344913 0.0389839 0
+-0.370925 0.0260119 0
+-0.383418 0.0124931 0
+-0.384207 0.000789253 0
+-0.375945 -0.00826293 0
+-0.360767 -0.0151776 0
+-0.339618 -0.0211491 0
+-0.312256 -0.027362 0
+-0.277603 -0.0346531 0
+-0.233956 -0.0436465 0
+-0.178739 -0.055217 0
+-0.107824 -0.0709147 0
+-0.0149516 -0.0928729 0
+0.107928 -0.122879 0
+0.268699 -0.160772 0
+0.471628 -0.202928 0
+0.71353 -0.241902 0
+0.981446 -0.267916 0
+1.25344 -0.271992 0
+1.50295 -0.249509 0
+1.70548 -0.202528 0
+1.84514 -0.139659 0
+1.91853 -0.0733959 0
+1.93459 -0.0160612 0
+1.91073 0.0238634 0
+1.86716 0.0435682 0
+1.82169 0.0454689 0
+1.78652 0.0351685 0
+1.76744 0.0190875 0
+1.76462 0.00281202 0
+1.77416 -0.00953619 0
+1.78948 -0.0153159 0
+1.80286 -0.013388 0
+1.80727 -0.00440405 0
+1.79832 0.00894517 0
+1.77603 0.0222956 0
+1.74514 0.0308898 0
+1.71373 0.0314111 0
+1.69026 0.0234685 0
+1.68042 0.00983929 0
+1.68522 -0.00480452 0
+1.70131 -0.0160881 0
+1.7232 -0.0218934 0
+1.74626 -0.0230544 0
+1.76874 -0.0224841 0
+1.79205 -0.0233046 0
+1.8191 -0.0270483 0
+1.85193 -0.0328392 0
+1.88976 -0.0378237 0
+1.92819 -0.0384314 0
+1.95994 -0.0317548 0
+1.97646 -0.0165186 0
+1.96999 0.00647033 0
+1.93575 0.0342443 0
+1.87383 0.0619145 0
+1.79037 0.0834614 0
+1.69699 0.0933849 0
+1.60788 0.089107 0
+1.53464 0.073243 0
+1.48037 0.0542681 0
+1.43605 0.0443205 0
+1.38195 0.0541038 0
+1.29534 0.0866105 0
+1.16268 0.132657 0
+0.991602 0.171076 0
+0.816926 0.174676 0
+0.695111 0.121815 0
+0.670115 0.0249961 0
+0.632384 0.0791827 0
+0.48566 0.165206 0
+0.48566 0.435673 0
+-0.674048 -0.14952 0
+-1.33037 -0.265777 0
+-2.61895 -0.441306 0
+-2.13345 -0.66738 0
+-1.5534 -0.798986 0
+-1.02878 -0.729402 0
+-0.697049 -0.475685 0
+-0.621831 -0.134728 0
+-0.773864 0.171407 0
+-1.05181 0.347145 0
+-1.32789 0.355765 0
+-1.49648 0.223774 0
+-1.50631 0.0203852 0
+-1.36691 -0.175335 0
+-1.13229 -0.3041 0
+-0.873336 -0.34163 0
+-0.652214 -0.296862 0
+-0.507724 -0.19869 0
+-0.452909 -0.0803475 0
+-0.480812 0.0312993 0
+-0.572587 0.119367 0
+-0.7042 0.175747 0
+-0.851077 0.198817 0
+-0.991786 0.19227 0
+-1.11148 0.164648 0
+-1.20433 0.127856 0
+-1.27333 0.0936385 0
+-1.32663 0.0691055 0
+-1.3716 0.0538813 0
+-1.4098 0.0410897 0
+-1.43568 0.0221894 0
+-1.44026 -0.00692883 0
+-1.41762 -0.0422835 0
+-1.3705 -0.0730107 0
+-1.31138 -0.0869091 0
+-1.25827 -0.0770646 0
+-1.22759 -0.0456275 0
+-1.22784 -0.00265416 0
+-1.25756 0.0389776 0
+-1.30769 0.0692873 0
+-1.36644 0.0842523 0
+-1.42337 0.0850451 0
+-1.47099 0.0749313 0
+-1.5041 0.0566495 0
+-1.51904 0.0322774 0
+-1.51463 0.0053436 0
+-1.49492 -0.017049 0
+-1.47173 -0.0246224 0
+-1.46419 -0.0077189 0
+-1.49401 0.0371569 0
+-1.57752 0.103368 0
+-1.71817 0.174659 0
+-1.90336 0.230656 0
+-2.10761 0.25491 0
+-2.30086 0.241399 0
+-2.45805 0.196174 0
+-2.56561 0.133577 0
+-2.62252 0.0693999 0
+-2.63644 0.0147078 0
+-2.61784 -0.0268585 0
+-2.57515 -0.0578694 0
+-2.51262 -0.0836819 0
+-2.43077 -0.109211 0
+-2.32783 -0.137589 0
+-2.20034 -0.171138 0
+-2.04166 -0.213899 0
+-1.83863 -0.273944 0
+-1.5684 -0.363096 0
+-1.19897 -0.492317 0
+-0.696299 -0.663439 0
+-0.0381523 -0.861075 0
+0.770112 -1.05017 0
+1.68513 -1.18293 0
+2.62742 -1.21429 0
+3.49763 -1.11971 0
+4.2023 -0.907207 0
+4.67974 -0.617092 0
+4.91548 -0.309135 0
+4.94209 -0.0426779 0
+4.82452 0.141439 0
+4.63821 0.229874 0
+4.44913 0.234554 0
+4.30166 0.182634 0
+4.21582 0.10493 0
+4.19062 0.0280079 0
+4.20977 -0.0286824 0
+4.24722 -0.0527644 0
+4.27296 -0.0391339 0
+4.26018 0.00838252 0
+4.19352 0.0755992 0
+4.07599 0.139829 0
+3.93031 0.17657 0
+3.79261 0.169109 0
+3.69976 0.11632 0
+3.67564 0.033953 0
+3.72287 -0.0520297 0
+3.82381 -0.117023 0
+3.95022 -0.148305 0
+4.0763 -0.149133 0
+4.18856 -0.13475 0
+4.28831 -0.123053 0
+4.38655 -0.125285 0
+4.49501 -0.141302 0
+4.618 -0.160818 0
+4.74821 -0.168636 0
+4.86697 -0.150514 0
+4.94782 -0.0973718 0
+4.96196 -0.00767431 0
+4.88523 0.110976 0
+4.70628 0.240864 0
+4.43426 0.35549 0
+4.10198 0.425662 0
+3.76028 0.43081 0
+3.46174 0.37178 0
+3.23828 0.277727 0
+3.08261 0.199993 0
+2.94532 0.191393 0
+2.75397 0.277956 0
+2.4495 0.437131 0
+2.02362 0.596955 0
+1.53457 0.663727 0
+1.07989 0.57649 0
+0.714761 0.390128 0
+0.534155 0.423513 0
+0.334935 0.438374 0
+0.334935 0.825914 0
+-1.36064 -0.302579 0
+-2.68161 -0.529465 0
+-5.28228 -0.869906 0
+-4.64521 -1.30445 0
+-3.90381 -1.54039 0
+-3.28695 -1.34626 0
+-2.99843 -0.764209 0
+-3.11405 -0.019107 0
+-3.55339 0.610752 0
+-4.12385 0.917604 0
+-4.60693 0.838839 0
+-4.84395 0.460799 0
+-4.78524 -0.0383302 0
+-4.48823 -0.472344 0
+-4.07498 -0.717343 0
+-3.67523 -0.741383 0
+-3.38197 -0.590126 0
+-3.23426 -0.346392 0
+-3.22531 -0.0893043 0
+-3.32268 0.12867 0
+-3.48701 0.283699 0
+-3.68212 0.370862 0
+-3.87807 0.394761 0
+-4.05236 0.366567 0
+-4.19295 0.305233 0
+-4.30148 0.236383 0
+-4.39278 0.184942 0
+-4.48765 0.163971 0
+-4.60087 0.167103 0
+-4.731 0.171226 0
+-4.85866 0.149847 0
+-4.95561 0.0900254 0
+-5.00031 0.00241053 0
+-4.99082 -0.0825031 0
+-4.94739 -0.130339 0
+-4.90282 -0.121626 0
+-4.8863 -0.0621473 0
+-4.90994 0.0209827 0
+-4.96528 0.094316 0
+-5.03038 0.13439 0
+-5.08191 0.135775 0
+-5.1045 0.107638 0
+-5.09303 0.0634632 0
+-5.04885 0.0124743 0
+-4.97541 -0.0411702 0
+-4.87811 -0.0919517 0
+-4.76932 -0.125844 0
+-4.67397 -0.119969 0
+-4.62976 -0.0519316 0
+-4.67808 0.0854788 0
+-4.84816 0.273446 0
+-5.14184 0.468345 0
+-5.52776 0.616571 0
+-5.94906 0.676209 0
+-6.34186 0.634201 0
+-6.65564 0.50995 0
+-6.86612 0.344056 0
+-6.97591 0.179194 0
+-7.00492 0.0437146 0
+-6.97728 -0.0544959 0
+-6.91178 -0.12337 0
+-6.81875 -0.176711 0
+-6.70215 -0.225809 0
+-6.56299 -0.276755 0
+-6.40015 -0.333978 0
+-6.20621 -0.40784 0
+-5.95844 -0.521708 0
+-5.60964 -0.711893 0
+-5.087 -1.01496 0
+-4.30676 -1.44368 0
+-3.20534 -1.96249 0
+-1.77693 -2.47858 0
+-0.099932 -2.85993 0
+1.6641 -2.97832 0
+3.30472 -2.76032 0
+4.61967 -2.22216 0
+5.47311 -1.47054 0
+5.83146 -0.667484 0
+5.76384 0.0249442 0
+5.41005 0.495227 0
+4.93233 0.707595 0
+4.47109 0.695791 0
+4.11866 0.535067 0
+3.91343 0.310159 0
+3.84773 0.0937102 0
+3.88024 -0.0611889 0
+3.94823 -0.12076 0
+3.98068 -0.0715863 0
+3.91521 0.07386 0
+3.71823 0.272579 0
+3.40155 0.456507 0
+3.02552 0.552603 0
+2.6829 0.511725 0
+2.4671 0.332119 0
+2.4376 0.0634562 0
+2.59856 -0.212987 0
+2.90061 -0.419081 0
+3.26432 -0.51201 0
+3.6131 -0.49791 0
+3.90005 -0.421704 0
+4.11782 -0.340824 0
+4.29047 -0.297932 0
+4.45486 -0.305695 0
+4.64168 -0.34764 0
+4.86273 -0.389679 0
+5.1056 -0.393384 0
+5.33374 -0.325512 0
+5.49073 -0.164669 0
+5.51072 0.090991 0
+5.33709 0.41449 0
+4.94711 0.74547 0
+4.37263 1.00014 0
+3.70318 1.10026 0
+3.0621 1.01286 0
+2.55996 0.779868 0
+2.24467 0.51528 0
+2.0753 0.360764 0
+1.93864 0.414617 0
+1.70614 0.669625 0
+1.30383 0.999264 0
+0.754151 1.21341 0
+0.158617 1.17202 0
+-0.365917 0.914662 0
+-0.331912 0.744204 0
+-0.261624 0.530849 0
+-0.261624 0.844412 0
+-2.02484 -0.442792 0
+-3.99903 -0.767128 0
+-7.9027 -1.2472 0
+-7.36044 -1.84671 0
+-6.77773 -2.1231 0
+-6.40513 -1.71886 0
+-6.44637 -0.722975 0
+-6.93704 0.471566 0
+-7.72188 1.3956 0
+-8.52781 1.72353 0
+-9.08726 1.39829 0
+-9.24861 0.622148 0
+-9.024 -0.262948 0
+-8.56059 -0.935746 0
+-8.05945 -1.21849 0
+-7.68742 -1.11341 0
+-7.52358 -0.753968 0
+-7.55629 -0.313679 0
+-7.71867 0.0730684 0
+-7.93392 0.343926 0
+-8.14583 0.495607 0
+-8.3257 0.55073 0
+-8.464 0.533066 0
+-8.56099 0.463559 0
+-8.62499 0.369228 0
+-8.67631 0.287699 0
+-8.74784 0.256472 0
+-8.87529 0.291425 0
+-9.07905 0.370866 0
+-9.34836 0.44053 0
+-9.63984 0.441329 0
+-9.89478 0.344965 0
+-10.0672 0.174812 0
+-10.1467 -0.00295217 0
+-10.1626 -0.114465 0
+-10.1654 -0.118839 0
+-10.1978 -0.0297248 0
+-10.2716 0.0947403 0
+-10.3632 0.185917 0
+-10.4293 0.200523 0
+-10.4305 0.137007 0
+-10.3486 0.0256883 0
+-10.1887 -0.0964138 0
+-9.96977 -0.206473 0
+-9.71244 -0.298499 0
+-9.43568 -0.368708 0
+-9.16355 -0.397974 0
+-8.93528 -0.348242 0
+-8.8073 -0.179909 0
+-8.84028 0.118457 0
+-9.07431 0.507479 0
+-9.50507 0.899103 0
+-10.0755 1.18701 0
+-10.6903 1.29105 0
+-11.2478 1.19166 0
+-11.6731 0.935297 0
+-11.9379 0.608856 0
+-12.0577 0.298929 0
+-12.0728 0.0588452 0
+-12.0263 -0.10103 0
+-11.9493 -0.200332 0
+-11.8594 -0.266633 0
+-11.7659 -0.3193 0
+-11.6764 -0.366285 0
+-11.5973 -0.413064 0
+-11.5258 -0.479303 0
+-11.4325 -0.61503 0
+-11.2418 -0.902573 0
+-10.8262 -1.43063 0
+-10.0284 -2.24139 0
+-8.71666 -3.27428 0
+-6.85289 -4.34235 0
+-4.54489 -5.16793 0
+-2.04922 -5.474 0
+0.285237 -5.09477 0
+2.11641 -4.05333 0
+3.21192 -2.56605 0
+3.51379 -0.96935 0
+3.14092 0.397815 0
+2.33404 1.30211 0
+1.37159 1.67004 0
+0.492383 1.575 0
+-0.150287 1.17774 0
+-0.498739 0.658611 0
+-0.577314 0.172286 0
+-0.470929 -0.167574 0
+-0.303567 -0.288123 0
+-0.214032 -0.161121 0
+-0.323266 0.183094 0
+-0.695046 0.644359 0
+-1.30381 1.06527 0
+-2.02877 1.27757 0
+-2.6857 1.16865 0
+-3.08934 0.735758 0
+-3.12154 0.0956586 0
+-2.77435 -0.56018 0
+-2.14842 -1.04501 0
+-1.409 -1.25143 0
+-0.721653 -1.18525 0
+-0.197205 -0.946152 0
+0.133349 -0.671379 0
+0.310664 -0.475247 0
+0.417688 -0.412719 0
+0.54595 -0.475902 0
+0.768377 -0.612106 0
+1.12009 -0.745095 0
+1.58437 -0.789799 0
+2.08497 -0.665266 0
+2.49281 -0.316849 0
+2.65662 0.250684 0
+2.45661 0.945473 0
+1.86342 1.59333 0
+0.971916 1.99177 0
+-0.015836 2.00061 0
+-0.861441 1.62547 0
+-1.38694 1.04078 0
+-1.54995 0.523773 0
+-1.45551 0.320175 0
+-1.2948 0.508918 0
+-1.24201 0.946476 0
+-1.36638 1.33777 0
+-1.60674 1.41239 0
+-1.80712 1.11504 0
+-1.16128 0.687436 0
+-0.673137 0.317845 0
+-0.673137 0.596626 0
+-2.5045 -0.530955 0
+-4.96399 -0.910396 0
+-9.84982 -1.45987 0
+-9.57974 -2.11678 0
+-9.38047 -2.32238 0
+-9.46212 -1.6372 0
+-9.95883 -0.226267 0
+-10.822 1.33472 0
+-11.8207 2.3943 0
+-12.6437 2.54657 0
+-13.0447 1.7993 0
+-12.9536 0.531046 0
+-12.4995 -0.717068 0
+-11.9389 -1.49638 0
+-11.5319 -1.62548 0
+-11.4322 -1.21311 0
+-11.6421 -0.544019 0
+-12.0445 0.0886888 0
+-12.4803 0.508849 0
+-12.8243 0.687941 0
+-13.0224 0.693712 0
+-13.0841 0.612468 0
+-13.0511 0.500035 0
+-12.9688 0.381255 0
+-12.8776 0.27807 0
+-12.8192 0.229304 0
+-12.8417 0.278927 0
+-12.9904 0.440103 0
+-13.2852 0.665725 0
+-13.6999 0.85522 0
+-14.1612 0.902566 0
+-14.5754 0.75918 0
+-14.871 0.470467 0
+-15.0324 0.158375 0
+-15.1033 -0.0435455 0
+-15.1578 -0.0642724 0
+-15.2545 0.0669028 0
+-15.4012 0.241496 0
+-15.552 0.336677 0
+-15.6334 0.281922 0
+-15.5839 0.0875532 0
+-15.3814 -0.176848 0
+-15.0451 -0.432733 0
+-14.6174 -0.634168 0
+-14.1418 -0.774127 0
+-13.6535 -0.856977 0
+-13.1878 -0.863664 0
+-12.795 -0.74104 0
+-12.5458 -0.42912 0
+-12.5155 0.0881656 0
+-12.7512 0.743144 0
+-13.2394 1.38739 0
+-13.8968 1.84432 0
+-14.5917 1.98601 0
+-15.1913 1.79125 0
+-15.6074 1.35142 0
+-15.8204 0.821791 0
+-15.8698 0.34834 0
+-15.8231 0.012171 0
+-15.7426 -0.181546 0
+-15.6686 -0.274293 0
+-15.6223 -0.312919 0
+-15.6171 -0.324524 0
+-15.6677 -0.315749 0
+-15.7903 -0.290409 0
+-15.9909 -0.278681 0
+-16.2385 -0.367434 0
+-16.4327 -0.708437 0
+-16.3883 -1.47498 0
+-15.8647 -2.76504 0
+-14.645 -4.4939 0
+-12.6428 -6.3446 0
+-9.98385 -7.82687 0
+-7.01772 -8.44013 0
+-4.23769 -7.87481 0
+-2.13487 -6.15615 0
+-1.04424 -3.65667 0
+-1.04624 -0.967347 0
+-1.96096 1.31254 0
+-3.42901 2.77015 0
+-5.03662 3.27765 0
+-6.43149 2.96987 0
+-7.39195 2.13819 0
+-7.8429 1.10956 0
+-7.83646 0.165853 0
+-7.52059 -0.483449 0
+-7.10636 -0.702352 0
+-6.829 -0.438473 0
+-6.89366 0.247748 0
+-7.40986 1.16056 0
+-8.33808 1.9935 0
+-9.48001 2.41949 0
+-10.5308 2.21949 0
+-11.1822 1.38714 0
+-11.2349 0.148288 0
+-10.6711 -1.12394 0
+-9.65541 -2.06069 0
+-8.46532 -2.44153 0
+-7.38739 -2.26318 0
+-6.62469 -1.70886 0
+-6.24886 -1.0472 0
+-6.20387 -0.520243 0
+-6.34429 -0.272293 0
+-6.4846 -0.335597 0
+-6.44439 -0.652308 0
+-6.08889 -1.1006 0
+-5.3684 -1.51029 0
+-4.35201 -1.68165 0
+-3.2366 -1.43226 0
+-2.30901 -0.676898 0
+-1.85644 0.492902 0
+-2.05104 1.78793 0
+-2.86082 2.80155 0
+-4.03803 3.17783 0
+-5.2033 2.79074 0
+-5.99399 1.83148 0
+-6.20751 0.737289 0
+-5.86816 -0.0191779 0
+-5.18541 -0.173832 0
+-4.42938 0.190454 0
+-3.79344 0.701833 0
+-3.31624 0.935181 0
+-2.89665 0.695451 0
+-1.55817 0.182173 0
+-0.743509 -0.100337 0
+-0.743509 0.305613 0
+-2.7324 -0.557434 0
+-5.43468 -0.943785 0
+-10.8202 -1.48483 0
+-10.8536 -2.08329 0
+-11.0585 -2.11749 0
+-11.561 -1.13474 0
+-12.3864 0.599165 0
+-13.3943 2.34257 0
+-14.3117 3.31175 0
+-14.8542 3.089 0
+-14.868 1.81314 0
+-14.417 0.08006 0
+-13.7628 -1.37128 0
+-13.2473 -2.01193 0
+-13.1374 -1.73538 0
+-13.5123 -0.838128 0
+-14.2476 0.191192 0
+-15.0938 0.934982 0
+-15.8008 1.21581 0
+-16.2162 1.10332 0
+-16.3183 0.795851 0
+-16.1831 0.477231 0
+-15.9214 0.238392 0
+-15.6302 0.0899795 0
+-15.3773 0.025209 0
+-15.2147 0.0667179 0
+-15.1925 0.256736 0
+-15.3544 0.601996 0
+-15.713 1.02432 0
+-16.225 1.36717 0
+-16.7907 1.46827 0
+-17.2889 1.25737 0
+-17.6313 0.812894 0
+-17.8055 0.332534 0
+-17.8771 0.0281336 0
+-17.9484 0.00700826 0
+-18.0951 0.213549 0
+-18.3207 0.467089 0
+-18.554 0.569994 0
+-18.6885 0.416478 0
+-18.6377 0.0367758 0
+-18.3726 -0.441968 0
+-17.9237 -0.881662 0
+-17.3539 -1.20396 0
+-16.726 -1.402 0
+-16.0874 -1.49557 0
+-15.4787 -1.4724 0
+-14.9535 -1.26621 0
+-14.5881 -0.794564 0
+-14.4645 -0.035434 0
+-14.6323 0.910979 0
+-15.0706 1.82563 0
+-15.677 2.45073 0
+-16.2978 2.60687 0
+-16.7861 2.2795 0
+-17.0574 1.62274 0
+-17.1142 0.878627 0
+-17.0272 0.261305 0
+-16.8895 -0.12556 0
+-16.7746 -0.296459 0
+-16.7212 -0.327699 0
+-16.7451 -0.289018 0
+-16.8581 -0.211489 0
+-17.0782 -0.0956525 0
+-17.4284 0.0598067 0
+-17.9233 0.216193 0
+-18.5369 0.246193 0
+-19.1572 -0.0881569 0
+-19.5593 -1.07288 0
+-19.4366 -2.88776 0
+-18.5005 -5.43 0
+-16.6177 -8.22735 0
+-13.9209 -10.5237 0
+-10.8278 -11.5332 0
+-7.94396 -10.7586 0
+-5.87739 -8.22272 0
+-5.04106 -4.49301 0
+-5.52527 -0.483134 0
+-7.08886 2.87612 0
+-9.26228 4.94357 0
+-11.5087 5.5241 0
+-13.374 4.83511 0
+-14.5766 3.34084 0
+-15.0298 1.56279 0
+-14.8177 -0.0462406 0
+-14.156 -1.14524 0
+-13.3494 -1.50893 0
+-12.7389 -1.04898 0
+-12.6245 0.133353 0
+-13.1718 1.70784 0
+-14.335 3.15672 0
+-15.8421 3.92655 0
+-17.2673 3.6447 0
+-18.1753 2.29518 0
+-18.2796 0.252586 0
+-17.5459 -1.8576 0
+-16.1966 -3.41005 0
+-14.6181 -4.02004 0
+-13.2191 -3.66218 0
+-12.3005 -2.62747 0
+-11.9832 -1.36442 0
+-12.2042 -0.299266 0
+-12.7588 0.282248 0
+-13.3608 0.266474 0
+-13.7031 -0.310018 0
+-13.5186 -1.28511 0
+-12.6501 -2.3788 0
+-11.1192 -3.21255 0
+-9.16372 -3.38774 0
+-7.20454 -2.63609 0
+-5.72641 -0.985224 0
+-5.10354 1.16506 0
+-5.44255 3.14056 0
+-6.52242 4.2577 0
+-7.87108 4.13939 0
+-8.95093 2.91132 0
+-9.36786 1.15422 0
+-9.00497 -0.382071 0
+-8.02215 -1.15665 0
+-6.73429 -1.09741 0
+-5.44283 -0.589621 0
+-4.31491 -0.192742 0
+-3.37492 -0.244534 0
+-1.56961 -0.568775 0
+-0.627107 -0.531695 0
+-0.627107 0.12086 0
+-2.72963 -0.536918 0
+-5.441 -0.896039 0
+-10.8468 -1.37628 0
+-11.0853 -1.84485 0
+-11.5309 -1.67188 0
+-12.2115 -0.454088 0
+-13.0498 1.4374 0
+-13.8498 3.14263 0
+-14.3594 3.82137 0
+-14.3873 3.11683 0
+-13.916 1.34184 0
+-13.1442 -0.691662 0
+-12.4239 -2.09159 0
+-12.1137 -2.32214 0
+-12.4194 -1.42966 0
+-13.303 0.0454601 0
+-14.5071 1.39523 0
+-15.6781 2.10605 0
+-16.5196 2.05724 0
+-16.8953 1.47905 0
+-16.8434 0.743924 0
+-16.5122 0.146071 0
+-16.0712 -0.202658 0
+-15.6477 -0.333493 0
+-15.3143 -0.30817 0
+-15.1118 -0.135776 0
+-15.0755 0.220388 0
+-15.2371 0.763615 0
+-15.6008 1.38802 0
+-16.1149 1.8813 0
+-16.67 2.02336 0
+-17.1361 1.72344 0
+-17.4235 1.1003 0
+-17.5303 0.439313 0
+-17.543 0.0408642 0
+-17.586 0.0500736 0
+-17.7478 0.375318 0
+-18.028 0.747264 0
+-18.337 0.878989 0
+-18.545 0.624442 0
+-18.5479 0.039769 0
+-18.3117 -0.678233 0
+-17.8721 -1.3212 0
+-17.3019 -1.77415 0
+-16.6708 -2.03317 0
+-16.0262 -2.14009 0
+-15.403 -2.09561 0
+-14.8462 -1.823 0
+-14.4248 -1.21598 0
+-14.2173 -0.242976 0
+-14.2721 0.965835 0
+-14.5675 2.121 0
+-15.0001 2.88336 0
+-15.4183 3.02501 0
+-15.6848 2.54604 0
+-15.736 1.67395 0
+-15.6022 0.744789 0
+-15.3796 0.0387454 0
+-15.1742 -0.331027 0
+-15.0536 -0.41706 0
+-15.0382 -0.343029 0
+-15.127 -0.200266 0
+-15.3232 -0.0152359 0
+-15.6416 0.222697 0
+-16.1039 0.522115 0
+-16.7283 0.840572 0
+-17.499 1.01691 0
+-18.3124 0.725299 0
+-18.9439 -0.441427 0
+-19.0768 -2.75485 0
+-18.4064 -6.10044 0
+-16.785 -9.84871 0
+-14.3421 -12.9666 0
+-11.5083 -14.367 0
+-8.91344 -13.3535 0
+-7.18974 -9.94642 0
+-6.75998 -4.92277 0
+-7.70065 0.457534 0
+-9.73326 4.90874 0
+-12.337 7.54729 0
+-14.9238 8.11095 0
+-17.0011 6.91234 0
+-18.2678 4.60758 0
+-18.6372 1.93219 0
+-18.2108 -0.472692 0
+-17.2379 -2.11807 0
+-16.0738 -2.67303 0
+-15.1223 -2.00047 0
+-14.7481 -0.240918 0
+-15.1643 2.12407 0
+-16.338 4.33042 0
+-17.9672 5.55579 0
+-19.5631 5.24055 0
+-20.6172 3.34934 0
+-20.788 0.423345 0
+-20.0232 -2.62242 0
+-18.5682 -4.86505 0
+-16.8626 -5.72562 0
+-15.3787 -5.1461 0
+-14.4724 -3.53381 0
+-14.2981 -1.53871 0
+-14.7985 0.20117 0
+-15.7454 1.22914 0
+-16.7987 1.31981 0
+-17.5677 0.458915 0
+-17.6792 -1.17355 0
+-16.8668 -3.19121 0
+-15.0704 -5.00899 0
+-12.5079 -5.95023 0
+-9.66391 -5.48005 0
+-7.16539 -3.48375 0
+-5.57209 -0.428248 0
+-5.16548 2.73396 0
+-5.83567 4.92789 0
+-7.12652 5.43024 0
+-8.42256 4.20736 0
+-9.19047 1.92213 0
+-9.16289 -0.409649 0
+-8.38682 -1.93272 0
+-7.13237 -2.35186 0
+-5.72892 -1.99307 0
+-4.42748 -1.49417 0
+-3.36688 -1.30514 0
+-1.43357 -1.27164 0
+-0.523492 -0.83484 0
+-0.523492 0.0709723 0
+-2.56817 -0.494067 0
+-5.11937 -0.814391 0
+-10.1901 -1.22187 0
+-10.4763 -1.55872 0
+-10.9186 -1.22957 0
+-11.46 0.0873368 0
+-11.9638 1.94115 0
+-12.2456 3.42447 0
+-12.1438 3.71956 0
+-11.6053 2.57831 0
+-10.7459 0.482441 0
+-9.84315 -1.59439 0
+-9.24814 -2.6866 0
+-9.24494 -2.32534 0
+-9.92224 -0.752358 0
+-11.125 1.24821 0
+-12.5169 2.78716 0
+-13.7236 3.31272 0
+-14.4812 2.81488 0
+-14.7178 1.71557 0
+-14.5365 0.562611 0
+-14.129 -0.261346 0
+-13.6769 -0.654793 0
+-13.2926 -0.717826 0
+-13.0185 -0.582271 0
+-12.863 -0.291289 0
+-12.8363 0.193723 0
+-12.9583 0.885613 0
+-13.2352 1.66498 0
+-13.629 2.27504 0
+-14.049 2.44336 0
+-14.3836 2.05808 0
+-14.5568 1.27351 0
+-14.5741 0.456578 0
+-14.5239 -0.00936641 0
+-14.5282 0.0543734 0
+-14.6706 0.517758 0
+-14.9463 1.02293 0
+-15.2639 1.19665 0
+-15.4969 0.857383 0
+-15.5483 0.0912241 0
+-15.3916 -0.83495 0
+-15.0662 -1.64661 0
+-14.6412 -2.19914 0
+-14.1755 -2.49892 0
+-13.6994 -2.61615 0
+-13.2256 -2.56944 0
+-12.7742 -2.27438 0
+-12.3909 -1.5993 0
+-12.1384 -0.495456 0
+-12.0623 0.889738 0
+-12.1526 2.2113 0
+-12.3314 3.06219 0
+-12.4811 3.17464 0
+-12.5001 2.56506 0
+-12.355 1.52887 0
+-12.095 0.484793 0
+-11.8205 -0.235798 0
+-11.6253 -0.526186 0
+-11.5509 -0.491493 0
+-11.584 -0.309947 0
+-11.6983 -0.0858958 0
+-11.8859 0.172358 0
+-12.153 0.489764 0
+-12.5112 0.8803 0
+-12.9721 1.30152 0
+-13.5271 1.5719 0
+-14.0953 1.29342 0
+-14.5055 -0.0311639 0
+-14.5244 -2.73594 0
+-13.9327 -6.69219 0
+-12.6335 -11.1479 0
+-10.7452 -14.855 0
+-8.62062 -16.4916 0
+-6.76575 -15.2084 0
+-5.67901 -11.0332 0
+-5.6794 -4.92238 0
+-6.79782 1.57595 0
+-8.77588 6.8868 0
+-11.1652 9.93657 0
+-13.4754 10.4212 0
+-15.3066 8.74354 0
+-16.4205 5.72149 0
+-16.7491 2.26074 0
+-16.3682 -0.853604 0
+-15.4696 -3.01661 0
+-14.34 -3.80263 0
+-13.3271 -3.01339 0
+-12.7697 -0.798376 0
+-12.893 2.24739 0
+-13.7103 5.1477 0
+-14.9876 6.83316 0
+-16.3091 6.56199 0
+-17.2259 4.26613 0
+-17.427 0.624527 0
+-16.8534 -3.19602 0
+-15.7069 -6.01159 0
+-14.3594 -7.07316 0
+-13.2115 -6.29399 0
+-12.565 -4.18031 0
+-12.5529 -1.55078 0
+-13.1339 0.782131 0
+-14.1251 2.22033 0
+-15.2428 2.43753 0
+-16.1383 1.35448 0
+-16.4435 -0.868358 0
+-15.8476 -3.78717 0
+-14.2049 -6.65165 0
+-11.6341 -8.52101 0
+-8.54506 -8.56913 0
+-5.54973 -6.47908 0
+-3.27059 -2.70738 0
+-2.12099 1.58436 0
+-2.15856 4.96546 0
+-3.08124 6.35292 0
+-4.36593 5.49205 0
+-5.48067 3.03687 0
+-6.07059 0.180275 0
+-6.04021 -1.96311 0
+-5.51414 -2.87794 0
+-4.72152 -2.78568 0
+-3.8828 -2.33289 0
+-3.16549 -2.02245 0
+-1.3683 -1.7123 0
+-0.543191 -0.981336 0
+-0.543191 0.0965924 0
+-2.33031 -0.450296 0
+-4.63615 -0.739877 0
+-9.19111 -1.09813 0
+-9.38703 -1.3628 0
+-9.6192 -0.997393 0
+-9.77654 0.244678 0
+-9.72231 1.88692 0
+-9.35229 3.05444 0
+-8.64623 3.0135 0
+-7.69753 1.62961 0
+-6.70823 -0.506861 0
+-5.94262 -2.36 0
+-5.64472 -2.9845 0
+-5.94421 -2.02584 0
+-6.79191 0.0953393 0
+-7.96407 2.42037 0
+-9.14476 3.96785 0
+-10.0505 4.21848 0
+-10.5343 3.2987 0
+-10.618 1.79921 0
+-10.4445 0.389113 0
+-10.1872 -0.518615 0
+-9.96959 -0.872416 0
+-9.83326 -0.854157 0
+-9.75824 -0.657291 0
+-9.70958 -0.339955 0
+-9.67621 0.160357 0
+-9.67955 0.888951 0
+-9.75104 1.73648 0
+-9.89802 2.42201 0
+-10.0848 2.63019 0
+-10.2468 2.22001 0
+-10.33 1.35674 0
+-10.3303 0.456848 0
+-10.3 -0.0396522 0
+-10.3154 0.0697704 0
+-10.4249 0.627227 0
+-10.6143 1.21242 0
+-10.8136 1.39593 0
+-10.9384 0.982191 0
+-10.9388 0.0915896 0
+-10.8214 -0.952379 0
+-10.6354 -1.83262 0
+-10.4368 -2.39771 0
+-10.256 -2.67966 0
+-10.0871 -2.78507 0
+-9.90146 -2.75511 0
+-9.67523 -2.50062 0
+-9.4125 -1.86203 0
+-9.14796 -0.759994 0
+-8.92439 0.666166 0
+-8.76105 2.04795 0
+-8.63752 2.93866 0
+-8.50558 3.0427 0
+-8.32271 2.3822 0
+-8.08486 1.29102 0
+-7.83519 0.235122 0
+-7.64158 -0.429412 0
+-7.55556 -0.612199 0
+-7.57742 -0.469637 0
+-7.65655 -0.230813 0
+-7.74483 0.00238197 0
+-7.82738 0.254907 0
+-7.90133 0.563715 0
+-7.96232 0.941288 0
+-8.00182 1.34102 0
+-7.99397 1.56405 0
+-7.86699 1.16644 0
+-7.55723 -0.340924 0
+-7.03333 -3.25984 0
+-6.29618 -7.42934 0
+-5.38653 -12.0575 0
+-4.40335 -15.8381 0
+-3.50876 -17.3862 0
+-2.89799 -15.8191 0
+-2.7383 -11.1928 0
+-3.10568 -4.555 0
+-3.95296 2.42323 0
+-5.12657 8.06041 0
+-6.42344 11.2334 0
+-7.65835 11.6561 0
+-8.70729 9.79247 0
+-9.50921 6.52342 0
+-10.0377 2.78927 0
+-10.2742 -0.617131 0
+-10.21 -3.08085 0
+-9.87808 -4.13454 0
+-9.38415 -3.50732 0
+-8.89945 -1.28308 0
+-8.60334 1.95129 0
+-8.60219 5.14655 0
+-8.87417 7.10514 0
+-9.27769 6.96551 0
+-9.6216 4.61004 0
+-9.75743 0.760363 0
+-9.64316 -3.31029 0
+-9.34864 -6.30611 0
+-9.00867 -7.41312 0
+-8.75639 -6.54627 0
+-8.67388 -4.26281 0
+-8.77985 -1.44481 0
+-9.04718 1.04947 0
+-9.42476 2.5979 0
+-9.83865 2.85143 0
+-10.1705 1.68629 0
+-10.2383 -0.800505 0
+-9.8175 -4.20797 0
+-8.71687 -7.75228 0
+-6.88511 -10.3528 0
+-4.48774 -10.9665 0
+-1.89891 -9.06791 0
+0.404251 -5.01055 0
+2.00123 -0.012625 0
+2.66734 4.29936 0
+2.43092 6.58933 0
+1.53165 6.39133 0
+0.310503 4.25802 0
+-0.911738 1.40252 0
+-1.91652 -0.958325 0
+-2.60821 -2.18625 0
+-2.98608 -2.40781 0
+-3.10273 -2.21624 0
+-3.04218 -2.08301 0
+-1.47859 -1.83036 0
+-0.693799 -1.0368 0
+-0.693799 0.108121 0
+-2.08144 -0.416881 0
+-4.13041 -0.693605 0
+-8.14937 -1.04395 0
+-8.18648 -1.32569 0
+-8.11573 -1.06814 0
+-7.8073 -0.0637589 0
+-7.17437 1.25399 0
+-6.23513 2.11521 0
+-5.12427 1.90264 0
+-4.05299 0.558336 0
+-3.24109 -1.31876 0
+-2.85032 -2.75077 0
+-2.9384 -2.89642 0
+-3.4423 -1.52194 0
+-4.19569 0.848725 0
+-4.98197 3.20665 0
+-5.61041 4.59628 0
+-5.98423 4.59231 0
+-6.12703 3.4415 0
+-6.15262 1.82481 0
+-6.19535 0.431839 0
+-6.33958 -0.37439 0
+-6.58483 -0.62716 0
+-6.85861 -0.580377 0
+-7.06208 -0.45382 0
+-7.12112 -0.280922 0
+-7.01906 0.0582959 0
+-6.80062 0.670514 0
+-6.54924 1.4851 0
+-6.34932 2.22209 0
+-6.25173 2.53259 0
+-6.26016 2.22844 0
+-6.34385 1.44043 0
+-6.46407 0.577071 0
+-6.59304 0.0893226 0
+-6.7129 0.189631 0
+-6.80245 0.716768 0
+-6.83076 1.24073 0
+-6.76941 1.33457 0
+-6.61622 0.829005 0
+-6.40988 -0.114752 0
+-6.21982 -1.14243 0
+-6.11641 -1.93604 0
+-6.13872 -2.37539 0
+-6.27635 -2.54203 0
+-6.47148 -2.58994 0
+-6.63838 -2.58821 0
+-6.69272 -2.44628 0
+-6.58119 -1.97355 0
+-6.29998 -1.0412 0
+-5.89077 0.256958 0
+-5.41984 1.57702 0
+-4.95481 2.47363 0
+-4.54792 2.63582 0
+-4.23154 2.06582 0
+-4.02224 1.08172 0
+-3.92492 0.137807 0
+-3.93325 -0.421078 0
+-4.02699 -0.518466 0
+-4.16404 -0.332581 0
+-4.27295 -0.121902 0
+-4.30538 0.0348065 0
+-4.25145 0.200973 0
+-4.10078 0.413054 0
+-3.83369 0.674198 0
+-3.40927 0.91659 0
+-2.71518 0.869973 0
+-1.6312 0.0824635 0
+-0.253266 -1.71886 0
+1.12158 -4.63469 0
+2.14083 -8.44858 0
+2.54881 -12.4655 0
+2.2778 -15.5671 0
+1.46094 -16.5693 0
+0.379723 -14.7379 0
+-0.629432 -10.1837 0
+-1.28081 -3.90361 0
+-1.42733 2.56974 0
+-1.10461 7.73769 0
+-0.519797 10.6486 0
+0.0106497 11.1257 0
+0.160384 9.64274 0
+-0.29533 6.97913 0
+-1.39103 3.88497 0
+-2.94139 0.93323 0
+-4.59056 -1.43167 0
+-5.92831 -2.7968 0
+-6.62769 -2.80793 0
+-6.54749 -1.36328 0
+-5.76188 1.16567 0
+-4.5178 3.90247 0
+-3.1508 5.73814 0
+-1.99661 5.81133 0
+-1.32108 3.9345 0
+-1.27248 0.711764 0
+-1.85459 -2.72818 0
+-2.92314 -5.23757 0
+-4.21254 -6.12372 0
+-5.39554 -5.36327 0
+-6.1667 -3.49166 0
+-6.32862 -1.28289 0
+-5.85313 0.573977 0
+-4.89142 1.63619 0
+-3.71988 1.67989 0
+-2.63291 0.599314 0
+-1.82276 -1.61065 0
+-1.3012 -4.72954 0
+-0.903809 -8.14967 0
+-0.377466 -10.8791 0
+0.491927 -11.8359 0
+1.77301 -10.349 0
+3.3489 -6.58643 0
+4.95138 -1.61511 0
+6.24577 3.00497 0
+6.93096 5.90414 0
+6.82438 6.4979 0
+5.91082 5.17159 0
+4.3448 2.96854 0
+2.40781 0.978665 0
+0.434483 -0.21293 0
+-1.2688 -0.704525 0
+-2.48966 -0.99538 0
+-3.14452 -1.42814 0
+-1.75278 -1.69913 0
+-0.920033 -1.10047 0
+-0.920033 0.0351477 0
+-1.85933 -0.394646 0
+-3.68648 -0.67533 0
+-7.25415 -1.05612 0
+-7.14377 -1.43607 0
+-6.80678 -1.40513 0
+-6.12252 -0.748018 0
+-5.07666 0.208132 0
+-3.81081 0.849358 0
+-2.58676 0.678589 0
+-1.68194 -0.346479 0
+-1.27387 -1.72683 0
+-1.37288 -2.65176 0
+-1.8298 -2.4395 0
+-2.40533 -0.946413 0
+-2.86623 1.30963 0
+-3.07145 3.41187 0
+-3.01813 4.54296 0
+-2.83228 4.40646 0
+-2.70811 3.31733 0
+-2.82018 1.93688 0
+-3.24646 0.858126 0
+-3.93688 0.316021 0
+-4.73786 0.173828 0
+-5.4546 0.136359 0
+-5.91795 0.00953559 0
+-6.03144 -0.167432 0
+-5.79073 -0.18242 0
+-5.27967 0.159454 0
+-4.64748 0.852915 0
+-4.06848 1.64309 0
+-3.69127 2.15538 0
+-3.59431 2.13149 0
+-3.7664 1.61252 0
+-4.11827 0.928937 0
+-4.51558 0.486629 0
+-4.81781 0.491869 0
+-4.9136 0.812554 0
+-4.7497 1.07683 0
+-4.34985 0.934717 0
+-3.81411 0.293273 0
+-3.29047 -0.638395 0
+-2.92619 -1.50672 0
+-2.82012 -2.04211 0
+-2.99541 -2.2001 0
+-3.3985 -2.13894 0
+-3.91648 -2.07196 0
+-4.40288 -2.1018 0
+-4.70836 -2.1408 0
+-4.71675 -1.96517 0
+-4.38102 -1.37693 0
+-3.74288 -0.381177 0
+-2.92502 0.759154 0
+-2.0971 1.64571 0
+-1.42405 1.96277 0
+-1.0175 1.65927 0
+-0.906875 0.971094 0
+-1.03814 0.269075 0
+-1.30175 -0.157471 0
+-1.5828 -0.237414 0
+-1.8038 -0.111585 0
+-1.90774 -0.0179555 0
+-1.89562 0.0226782 0
+-1.77262 0.0779785 0
+-1.52037 0.160801 0
+-1.11251 0.266339 0
+-0.486674 0.290754 0
+0.725758 -0.342459 0
+2.75576 -1.94754 0
+5.27332 -4.23642 0
+7.5606 -6.92197 0
+8.8524 -9.74038 0
+8.65843 -12.2715 0
+6.96085 -13.8696 0
+4.23615 -13.8446 0
+1.30529 -11.8071 0
+-0.933495 -7.9449 0
+-1.79825 -3.03885 0
+-1.04414 1.81563 0
+1.06253 5.63102 0
+3.833 7.87815 0
+6.36661 8.59209 0
+7.81456 8.19478 0
+7.6226 7.17109 0
+5.68994 5.81762 0
+2.40357 4.2196 0
+-1.46406 2.43596 0
+-4.96862 0.70777 0
+-7.25755 -0.519004 0
+-7.80443 -0.816397 0
+-6.54647 -0.0922878 0
+-3.89192 1.24792 0
+-0.60331 2.44953 0
+2.40759 2.80043 0
+4.32044 2.02165 0
+4.62364 0.408561 0
+3.25073 -1.35526 0
+0.595038 -2.58188 0
+-2.60429 -2.9244 0
+-5.47087 -2.49669 0
+-7.23075 -1.73177 0
+-7.41512 -1.09853 0
+-5.97463 -0.86651 0
+-3.2802 -1.05824 0
+-0.0105138 -1.58979 0
+3.04728 -2.45848 0
+5.23078 -3.79415 0
+6.19738 -5.69613 0
+6.01446 -7.96676 0
+5.11216 -9.97681 0
+4.11673 -10.8405 0
+3.62513 -9.8574 0
+3.99767 -6.95897 0
+5.23491 -2.85235 0
+6.97681 1.26307 0
+8.62584 4.25511 0
+9.5557 5.56804 0
+9.3326 5.39469 0
+7.86526 4.43589 0
+5.42604 3.41788 0
+2.54159 2.67152 0
+-0.192089 2.02916 0
+-2.28857 1.1011 0
+-3.47835 -0.238362 0
+-2.10451 -1.45528 0
+-1.14868 -1.24506 0
+-1.14868 -0.1462 0
+-1.67606 -0.377804 0
+-3.33254 -0.670526 0
+-6.57101 -1.10181 0
+-6.38286 -1.62422 0
+-5.9098 -1.87819 0
+-5.05431 -1.6035 0
+-3.86499 -0.981188 0
+-2.56814 -0.447501 0
+-1.49439 -0.395155 0
+-0.932068 -0.908803 0
+-0.987507 -1.67139 0
+-1.53021 -2.10905 0
+-2.25044 -1.71928 0
+-2.79661 -0.40024 0
+-2.92554 1.43856 0
+-2.59963 3.08596 0
+-1.99378 3.93711 0
+-1.41561 3.82829 0
+-1.17601 3.07772 0
+-1.46439 2.22525 0
+-2.28004 1.67378 0
+-3.44422 1.4802 0
+-4.67802 1.40763 0
+-5.70153 1.15987 0
+-6.30972 0.617723 0
+-6.40687 -0.0702769 0
+-6.00957 -0.579722 0
+-5.23571 -0.614413 0
+-4.28461 -0.0981801 0
+-3.39925 0.757732 0
+-2.80551 1.56164 0
+-2.64319 1.96917 0
+-2.91766 1.88699 0
+-3.49594 1.50722 0
+-4.15015 1.14084 0
+-4.6313 0.973012 0
+-4.74836 0.929621 0
+-4.42874 0.757204 0
+-3.74164 0.247622 0
+-2.87406 -0.574307 0
+-2.06463 -1.44783 0
+-1.5232 -2.04815 0
+-1.37007 -2.19524 0
+-1.6149 -1.95526 0
+-2.17108 -1.58277 0
+-2.88536 -1.35768 0
+-3.5675 -1.41966 0
+-4.02033 -1.68798 0
+-4.07884 -1.90665 0
+-3.65888 -1.7969 0
+-2.79875 -1.2413 0
+-1.66569 -0.373906 0
+-0.512947 0.492967 0
+0.400314 1.04951 0
+0.894244 1.16534 0
+0.926345 0.938994 0
+0.601098 0.594322 0
+0.124581 0.319045 0
+-0.287428 0.174595 0
+-0.517109 0.118096 0
+-0.555268 0.0202036 0
+-0.534152 0.00156257 0
+-0.457784 0.00161007 0
+-0.302134 0.00515191 0
+-0.047895 0.0120999 0
+0.305837 -0.062978 0
+1.72166 -1.75829 0
+4.43227 -4.65814 0
+7.80048 -7.60463 0
+10.7264 -9.84787 0
+12.123 -11.137 0
+11.3407 -11.4893 0
+8.42754 -10.9564 0
+4.14664 -9.56372 0
+-0.253523 -7.40689 0
+-3.44161 -4.75682 0
+-4.43956 -2.04091 0
+-2.94148 0.317544 0
+0.591921 2.09762 0
+5.08429 3.38579 0
+9.17177 4.5046 0
+11.595 5.77153 0
+11.5425 7.22364 0
+8.86288 8.49723 0
+4.10341 8.97907 0
+-1.63179 8.17116 0
+-6.96901 6.04499 0
+-10.6271 3.13909 0
+-11.7593 0.315773 0
+-10.182 -1.66953 0
+-6.42822 -2.50588 0
+-1.60654 -2.37215 0
+2.89934 -1.70545 0
+5.8134 -0.89241 0
+6.32522 -0.103257 0
+4.31574 0.65421 0
+0.379231 1.35464 0
+-4.36339 1.81823 0
+-8.59361 1.73352 0
+-11.1588 0.833415 0
+-11.3654 -0.891896 0
+-9.13429 -3.09764 0
+-4.99521 -5.19732 0
+0.0660135 -6.65101 0
+4.87167 -7.26414 0
+8.36799 -7.29046 0
+9.91219 -7.24034 0
+9.44591 -7.50048 0
+7.49509 -8.02599 0
+4.98909 -8.33446 0
+2.95157 -7.81987 0
+2.16085 -6.16826 0
+2.89224 -3.58374 0
+4.83324 -0.677931 0
+7.20779 1.88055 0
+9.0694 3.70644 0
+9.65198 4.8121 0
+8.63829 5.44958 0
+6.24101 5.81515 0
+3.07952 5.83301 0
+-0.0727369 5.18142 0
+-2.54779 3.57615 0
+-3.9472 1.16104 0
+-2.42471 -1.22628 0
+-1.31892 -1.48302 0
+-1.31892 -0.409255 0
+-1.52664 -0.359 0
+-3.05615 -0.660616 0
+-6.06961 -1.13836 0
+-5.89473 -1.7991 0
+-5.44824 -2.32468 0
+-4.6558 -2.39595 0
+-3.59544 -2.04155 0
+-2.51518 -1.52777 0
+-1.74485 -1.16548 0
+-1.54005 -1.1136 0
+-1.94414 -1.2673 0
+-2.74895 -1.30425 0
+-3.57928 -0.888946 0
+-4.05901 0.0794868 0
+-3.97714 1.35669 0
+-3.37715 2.48597 0
+-2.5336 3.09356 0
+-1.83293 3.12763 0
+-1.61414 2.85893 0
+-2.03817 2.64929 0
+-3.03919 2.67479 0
+-4.36972 2.81073 0
+-5.70673 2.74463 0
+-6.76067 2.21382 0
+-7.34217 1.19922 0
+-7.3777 -0.0347448 0
+-6.89784 -1.05959 0
+-6.02393 -1.48832 0
+-4.95713 -1.16499 0
+-3.95183 -0.247568 0
+-3.25856 0.868373 0
+-3.04597 1.75658 0
+-3.33562 2.17664 0
+-3.98447 2.15608 0
+-4.72859 1.88496 0
+-5.27291 1.51733 0
+-5.39306 1.04977 0
+-5.01154 0.375681 0
+-4.22104 -0.542882 0
+-3.24528 -1.55006 0
+-2.35344 -2.33967 0
+-1.76762 -2.63397 0
+-1.60253 -2.36033 0
+-1.85394 -1.70385 0
+-2.42347 -1.01324 0
+-3.15247 -0.628676 0
+-3.84808 -0.724043 0
+-4.30624 -1.22982 0
+-4.34698 -1.86592 0
+-3.86625 -2.27762 0
+-2.88948 -2.21808 0
+-1.59122 -1.67217 0
+-0.253839 -0.844414 0
+0.822004 -0.0263314 0
+1.41924 0.5681 0
+1.47832 0.879913 0
+1.11479 0.957854 0
+0.573071 0.860762 0
+0.130867 0.616799 0
+-0.0245586 0.273521 0
+-0.0107278 0.0063728 0
+-0.00898073 -0.000184501 0
+-0.00738946 1.88072e-05 0
+-0.00269907 0.000461508 0
+0.00937279 2.80213e-05 0
+0.0139461 -0.0675513 0
+1.22602 -2.97036 0
+3.97529 -7.40741 0
+7.42365 -11.053 0
+10.3232 -12.7474 0
+11.5096 -12.3233 0
+10.3239 -10.3036 0
+6.86898 -7.5015 0
+2.01418 -4.70892 0
+-2.86385 -2.52887 0
+-6.32208 -1.29858 0
+-7.32238 -1.0406 0
+-5.56824 -1.4366 0
+-1.59591 -1.87471 0
+3.4005 -1.61062 0
+7.93175 -0.0266471 0
+10.6357 3.06758 0
+10.6389 7.22047 0
+7.77529 11.3608 0
+2.62387 14.1305 0
+-3.63743 14.4325 0
+-9.5278 11.9354 0
+-13.6441 7.25537 0
+-15.0325 1.70414 0
+-13.4522 -3.2498 0
+-9.4543 -6.50377 0
+-4.24203 -7.58442 0
+0.658831 -6.60631 0
+3.83167 -4.06525 0
+4.37576 -0.647348 0
+2.15998 2.87 0
+-2.15786 5.67247 0
+-7.34563 7.00599 0
+-11.9641 6.35198 0
+-14.7623 3.63164 0
+-14.9881 -0.666115 0
+-12.5467 -5.53907 0
+-7.99273 -9.75126 0
+-2.37497 -12.2688 0
+3.03035 -12.6695 0
+7.04446 -11.3046 0
+8.89681 -9.09269 0
+8.43533 -7.039 0
+6.16392 -5.75458 0
+3.08071 -5.25125 0
+0.355673 -5.09484 0
+-1.05347 -4.75911 0
+-0.717293 -3.91992 0
+1.13376 -2.52898 0
+3.717 -0.702682 0
+6.00762 1.41581 0
+7.12818 3.69154 0
+6.65773 5.92004 0
+4.73947 7.73341 0
+1.96313 8.60935 0
+-0.898155 8.0427 0
+-3.16318 5.84118 0
+-4.4184 2.41627 0
+-2.62596 -1.08697 0
+-1.39693 -1.76639 0
+-1.39693 -0.690936 0
+-1.3991 -0.333338 0
+-2.82622 -0.631814 0
+-5.67189 -1.13158 0
+-5.58668 -1.88431 0
+-5.30322 -2.60814 0
+-4.76197 -2.9372 0
+-4.029 -2.77451 0
+-3.30901 -2.24776 0
+-2.86923 -1.60526 0
+-2.90744 -1.0754 0
+-3.43725 -0.737496 0
+-4.25961 -0.481882 0
+-5.04192 -0.106641 0
+-5.46648 0.504048 0
+-5.37431 1.26452 0
+-4.83478 1.94644 0
+-4.11155 2.37033 0
+-3.54534 2.56141 0
+-3.41044 2.72403 0
+-3.81015 3.049 0
+-4.65363 3.51827 0
+-5.71446 3.87157 0
+-6.73073 3.7609 0
+-7.49194 2.97504 0
+-7.87791 1.58519 0
+-7.85226 -0.0604007 0
+-7.44092 -1.47093 0
+-6.72313 -2.20611 0
+-5.83579 -2.05232 0
+-4.96827 -1.11508 0
+-4.32548 0.225581 0
+-4.06182 1.49292 0
+-4.21599 2.3308 0
+-4.68372 2.62381 0
+-5.24847 2.44971 0
+-5.66041 1.92928 0
+-5.73056 1.11992 0
+-5.40002 0.0451398 0
+-4.75657 -1.18633 0
+-3.99225 -2.31437 0
+-3.32343 -3.0085 0
+-2.91347 -3.04394 0
+-2.83138 -2.44242 0
+-3.05504 -1.48018 0
+-3.50063 -0.567657 0
+-4.05039 -0.0789124 0
+-4.56508 -0.209356 0
+-4.89038 -0.904512 0
+-4.87733 -1.87897 0
+-4.42481 -2.73014 0
+-3.53209 -3.1108 0
+-2.32866 -2.87559 0
+-1.04876 -2.12432 0
+0.0422818 -1.11737 0
+0.739336 -0.128954 0
+0.968342 0.650907 0
+0.808002 1.11819 0
+0.453957 1.21481 0
+0.135701 0.935055 0
+0.00216913 0.407053 0
+0.000218521 0.00832341 0
+-4.35028e-05 7.75234e-05 0
+-2.33268e-05 -1.36118e-06 0
+0.00040169 3.64322e-05 0
+0.00156244 -0.00113273 0
+0.00395412 -0.069943 0
+0.72608 -3.69248 0
+2.60353 -9.28487 0
+5.03873 -13.4882 0
+7.02355 -14.7322 0
+7.63371 -12.9335 0
+6.3724 -9.04229 0
+3.35638 -4.48547 0
+-0.69747 -0.655072 0
+-4.68889 1.46255 0
+-7.48788 1.5004 0
+-8.30233 -0.226144 0
+-6.93064 -2.80829 0
+-3.81846 -4.98689 0
+0.0891965 -5.51828 0
+3.63391 -3.57136 0
+5.76559 0.935903 0
+5.81125 7.17481 0
+3.63555 13.5365 0
+-0.330317 18.0964 0
+-5.19181 19.2939 0
+-9.80774 16.5513 0
+-13.0784 10.5261 0
+-14.239 2.86475 0
+-13.0786 -4.4102 0
+-10.016 -9.56644 0
+-5.99623 -11.6042 0
+-2.22675 -10.3758 0
+0.173995 -6.466 0
+0.504766 -0.978118 0
+-1.32047 4.69523 0
+-4.76815 9.12016 0
+-8.8663 11.1041 0
+-12.4976 9.98327 0
+-14.7026 5.8366 0
+-14.9078 -0.460845 0
+-13.0373 -7.40956 0
+-9.50402 -13.2846 0
+-5.10022 -16.6726 0
+-0.80883 -16.9608 0
+2.43602 -14.5494 0
+3.99238 -10.6491 0
+3.69224 -6.73886 0
+1.89621 -3.95854 0
+-0.614353 -2.74069 0
+-2.88815 -2.82104 0
+-4.12092 -3.52634 0
+-3.92657 -4.11426 0
+-2.45827 -3.99728 0
+-0.328095 -2.83286 0
+1.64463 -0.556908 0
+2.75148 2.58468 0
+2.64581 6.02571 0
+1.42709 8.95213 0
+-0.457196 10.4936 0
+-2.42323 10.0087 0
+-3.96592 7.38387 0
+-4.78835 3.23869 0
+-2.67145 -1.0543 0
+-1.37979 -2.01364 0
+-1.37979 -0.916088 0
+-1.28269 -0.300241 0
+-2.61308 -0.579936 0
+-5.29961 -1.06694 0
+-5.34265 -1.84127 0
+-5.295 -2.6558 0
+-5.10273 -3.12946 0
+-4.78755 -3.08969 0
+-4.46397 -2.57134 0
+-4.29659 -1.77264 0
+-4.41662 -0.955368 0
+-4.84421 -0.309903 0
+-5.46341 0.137312 0
+-6.06774 0.497694 0
+-6.45479 0.891099 0
+-6.52039 1.33012 0
+-6.30377 1.72982 0
+-5.96224 2.0288 0
+-5.69132 2.2905 0
+-5.63372 2.66643 0
+-5.82334 3.23862 0
+-6.18841 3.88335 0
+-6.60348 4.28664 0
+-6.95428 4.11169 0
+-7.17745 3.19822 0
+-7.25921 1.66695 0
+-7.20658 -0.113037 0
+-7.02193 -1.65558 0
+-6.70334 -2.5247 0
+-6.2681 -2.48756 0
+-5.77555 -1.60764 0
+-5.32368 -0.226282 0
+-5.01358 1.18282 0
+-4.90012 2.21734 0
+-4.95984 2.68353 0
+-5.09768 2.58755 0
+-5.19141 2.02301 0
+-5.15041 1.07892 0
+-4.95726 -0.148012 0
+-4.67119 -1.47239 0
+-4.39313 -2.59244 0
+-4.21395 -3.18768 0
+-4.17624 -3.08164 0
+-4.26812 -2.35055 0
+-4.44558 -1.30272 0
+-4.6618 -0.35144 0
+-4.88028 0.139571 0
+-5.06537 -0.0242712 0
+-5.16385 -0.806033 0
+-5.10017 -1.94264 0
+-4.79763 -3.03269 0
+-4.2186 -3.68983 0
+-3.40017 -3.69402 0
+-2.45609 -3.0684 0
+-1.54146 -2.032 0
+-0.797141 -0.873274 0
+-0.3013 0.155066 0
+-0.0504345 0.867329 0
+0.0242384 1.14013 0
+0.0164726 0.942821 0
+0.000568932 0.422957 0
+5.76865e-05 0.00883465 0
+4.95925e-06 0.000130261 0
+3.13108e-06 6.16388e-07 0
+4.51283e-05 -5.71882e-06 0
+0.000138898 -0.00122651 0
+0.0020135 -0.0718176 0
+0.210844 -3.90131 0
+0.760904 -9.83493 0
+1.43288 -14.1602 0
+1.84109 -15.1404 0
+1.63855 -12.731 0
+0.663 -8.06674 0
+-0.99069 -2.83178 0
+-2.98805 1.34229 0
+-4.85933 3.33383 0
+-6.15397 2.79504 0
+-6.58643 0.206317 0
+-6.11937 -3.27535 0
+-4.96084 -6.14543 0
+-3.48792 -6.9912 0
+-2.13354 -4.92574 0
+-1.27753 0.0798931 0
+-1.16604 7.06331 0
+-1.8653 14.2358 0
+-3.24813 19.4792 0
+-5.01469 21.0605 0
+-6.75299 18.2896 0
+-8.03808 11.8112 0
+-8.55194 3.37862 0
+-8.18777 -4.77437 0
+-7.09788 -10.6563 0
+-5.65795 -13.0441 0
+-4.35202 -11.6817 0
+-3.61659 -7.20143 0
+-3.70164 -0.893072 0
+-4.60021 5.5938 0
+-6.06828 10.5882 0
+-7.71766 12.7535 0
+-9.13759 11.4032 0
+-9.99901 6.69802 0
+-10.1164 -0.343463 0
+-9.46801 -8.05795 0
+-8.18916 -14.5634 0
+-6.54814 -18.3136 0
+-4.90105 -18.6079 0
+-3.61746 -15.833 0
+-2.98141 -11.2851 0
+-3.09548 -6.6248 0
+-3.82995 -3.22407 0
+-4.8514 -1.71924 0
+-5.73357 -1.93888 0
+-6.11374 -3.14618 0
+-5.83076 -4.39724 0
+-4.98347 -4.84456 0
+-3.88196 -3.93438 0
+-2.91318 -1.52569 0
+-2.38318 2.05468 0
+-2.40734 6.04987 0
+-2.89322 9.43802 0
+-3.61192 11.2123 0
+-4.31088 10.7077 0
+-4.80787 7.88087 0
+-5.02616 3.45698 0
+-2.58561 -1.11021 0
+-1.29301 -2.14843 0
+-1.29301 -1.02367 0
+-1.17239 -0.263104 0
+-2.40077 -0.510559 0
+-4.90634 -0.951467 0
+-5.07233 -1.67528 0
+-5.25939 -2.46874 0
+-5.41523 -2.97363 0
+-5.50489 -3.00002 0
+-5.53601 -2.54022 0
+-5.55811 -1.75053 0
+-5.63727 -0.876213 0
+-5.81999 -0.127176 0
+-6.10711 0.424428 0
+-6.45306 0.843648 0
+-6.79107 1.22911 0
+-7.06755 1.6066 0
+-7.26281 1.92508 0
+-7.38504 2.15102 0
+-7.44453 2.34999 0
+-7.43046 2.65236 0
+-7.31091 3.11907 0
+-7.05859 3.63103 0
+-6.68455 3.9126 0
+-6.25437 3.6815 0
+-5.87182 2.81567 0
+-5.63596 1.43108 0
+-5.59414 -0.154851 0
+-5.71715 -1.53257 0
+-5.91003 -2.33181 0
+-6.05316 -2.34444 0
+-6.05217 -1.60863 0
+-5.87198 -0.406472 0
+-5.53998 0.850824 0
+-5.12208 1.79943 0
+-4.69014 2.25159 0
+-4.30142 2.19883 0
+-3.99773 1.71932 0
+-3.81529 0.896473 0
+-3.7885 -0.1748 0
+-3.93763 -1.32326 0
+-4.247 -2.28307 0
+-4.6524 -2.78228 0
+-5.05226 -2.68178 0
+-5.34255 -2.06026 0
+-5.45863 -1.18664 0
+-5.40122 -0.408846 0
+-5.23167 -0.0299819 0
+-5.03843 -0.217506 0
+-4.89204 -0.952426 0
+-4.81127 -2.02341 0
+-4.75682 -3.08714 0
+-4.65257 -3.79408 0
+-4.42241 -3.92418 0
+-4.0228 -3.468 0
+-3.45573 -2.59908 0
+-2.76172 -1.56728 0
+-2.00497 -0.601691 0
+-1.26332 0.125687 0
+-0.626003 0.502812 0
+-0.186645 0.503463 0
+-0.00458013 0.240892 0
+-0.000391425 0.00464594 0
+-6.31628e-05 -0.000197991 0
+-3.39678e-05 -2.84317e-05 0
+-0.000103329 6.34877e-05 0
+-0.000472434 -0.000857418 0
+-0.00602174 -0.0662683 0
+-0.380951 -3.52638 0
+-1.36268 -8.8532 0
+-2.74714 -12.7757 0
+-4.14886 -13.7387 0
+-5.20021 -11.6796 0
+-5.66412 -7.60283 0
+-5.49271 -3.00319 0
+-4.83895 0.688527 0
+-4.01572 2.5106 0
+-3.40379 2.18311 0
+-3.32804 0.130569 0
+-3.93957 -2.66382 0
+-5.14608 -4.93891 0
+-6.62691 -5.51037 0
+-7.93164 -3.62101 0
+-8.62781 0.776069 0
+-8.44486 6.88036 0
+-7.36307 13.154 0
+-5.61837 17.7345 0
+-3.62627 19.0684 0
+-1.85724 16.5206 0
+-0.70919 10.6631 0
+-0.414898 3.08433 0
+-1.00205 -4.18722 0
+-2.30183 -9.35656 0
+-3.99319 -11.3527 0
+-5.67238 -10.0025 0
+-6.94018 -5.93363 0
+-7.49767 -0.335585 0
+-7.23082 5.32695 0
+-6.25548 9.61289 0
+-4.89746 11.3955 0
+-3.60304 10.1088 0
+-2.80365 5.89863 0
+-2.78129 -0.365828 0
+-3.58392 -7.25531 0
+-5.02148 -13.1259 0
+-6.74058 -16.5945 0
+-8.34525 -17.0033 0
+-9.51526 -14.663 0
+-10.0812 -10.7191 0
+-10.0394 -6.66667 0
+-9.51666 -3.74678 0
+-8.714 -2.5219 0
+-7.85169 -2.80118 0
+-7.12745 -3.87041 0
+-6.68376 -4.84094 0
+-6.58024 -4.94808 0
+-6.77624 -3.73838 0
+-7.13634 -1.16558 0
+-7.46892 2.38726 0
+-7.59131 6.17227 0
+-7.39859 9.24529 0
+-6.90591 10.7197 0
+-6.24427 10.046 0
+-5.60947 7.24606 0
+-5.18429 3.0318 0
+-2.44657 -1.23242 0
+-1.18371 -2.13404 0
+-1.18371 -0.987287 0
+-1.06929 -0.227373 0
+-2.18993 -0.435547 0
+-4.48749 -0.808098 0
+-4.73612 -1.42665 0
+-5.09617 -2.10868 0
+-5.51986 -2.54994 0
+-5.92542 -2.59446 0
+-6.22801 -2.23763 0
+-6.37571 -1.60283 0
+-6.37597 -0.875957 0
+-6.29725 -0.205894 0
+-6.24274 0.369915 0
+-6.30898 0.909892 0
+-6.5496 1.46973 0
+-6.95689 2.01389 0
+-7.4614 2.42958 0
+-7.9437 2.63333 0
+-8.25687 2.66315 0
+-8.26238 2.65787 0
+-7.87699 2.73369 0
+-7.11503 2.86906 0
+-6.10309 2.90066 0
+-5.05318 2.63159 0
+-4.20039 1.96288 0
+-3.72907 0.959763 0
+-3.71541 -0.16851 0
+-4.10564 -1.14234 0
+-4.73441 -1.70304 0
+-5.3759 -1.70295 0
+-5.81163 -1.1729 0
+-5.89357 -0.324533 0
+-5.5812 0.538455 0
+-4.94233 1.16057 0
+-4.12383 1.43309 0
+-3.30947 1.38447 0
+-2.68 1.08985 0
+-2.37968 0.59615 0
+-2.48646 -0.0680209 0
+-2.98664 -0.823078 0
+-3.76594 -1.50377 0
+-4.63148 -1.91674 0
+-5.36533 -1.94793 0
+-5.79259 -1.633 0
+-5.83699 -1.14224 0
+-5.54199 -0.703851 0
+-5.05096 -0.521007 0
+-4.55591 -0.712563 0
+-4.2327 -1.27563 0
+-4.18396 -2.07215 0
+-4.40771 -2.8634 0
+-4.79949 -3.40229 0
+-5.18655 -3.53711 0
+-5.38376 -3.2708 0
+-5.24807 -2.73476 0
+-4.71557 -2.09978 0
+-3.81759 -1.49967 0
+-2.67963 -1.01228 0
+-1.50507 -0.671752 0
+-0.543097 -0.458505 0
+-0.0313373 -0.270868 0
+-0.00397165 -0.0227197 0
+-0.000657626 -0.00351202 0
+-0.000348168 -0.000337847 0
+-0.00110276 0.000818056 0
+-0.00531436 0.00335418 0
+-0.0331105 -0.0384722 0
+-1.13336 -2.42613 0
+-3.65457 -6.33199 0
+-6.91075 -9.51952 0
+-9.87413 -10.7753 0
+-11.6125 -9.94127 0
+-11.5818 -7.63353 0
+-9.79303 -4.79193 0
+-6.82183 -2.28267 0
+-3.64631 -0.664914 0
+-1.34775 -0.11545 0
+-0.76179 -0.455395 0
+-2.19522 -1.23039 0
+-5.30526 -1.82887 0
+-9.19294 -1.62269 0
+-12.6781 -0.135813 0
+-14.6582 2.75614 0
+-14.4349 6.65709 0
+-11.9137 10.6328 0
+-7.6243 13.4451 0
+-2.56679 14.0109 0
+2.06348 11.8903 0
+5.19067 7.53591 0
+6.12772 2.14728 0
+4.73745 -2.79696 0
+1.45728 -6.07638 0
+-2.81259 -7.08285 0
+-6.93374 -5.88139 0
+-9.82001 -3.04736 0
+-10.7271 0.571506 0
+-9.46233 4.06218 0
+-6.44561 6.59617 0
+-2.59257 7.54248 0
+0.949947 6.56625 0
+3.13349 3.71508 0
+3.29898 -0.531322 0
+1.34304 -5.29937 0
+-2.2813 -9.50152 0
+-6.7177 -12.1581 0
+-10.9592 -12.7618 0
+-14.122 -11.5001 0
+-15.6644 -9.17678 0
+-15.4944 -6.8367 0
+-13.9518 -5.28934 0
+-11.6817 -4.79202 0
+-9.44137 -5.04149 0
+-7.89139 -5.42039 0
+-7.41876 -5.31356 0
+-8.03777 -4.32907 0
+-9.40063 -2.37553 0
+-10.9237 0.357491 0
+-11.9938 3.45732 0
+-12.1815 6.35999 0
+-11.381 8.44481 0
+-9.82476 9.16342 0
+-7.97723 8.19851 0
+-6.35947 5.6283 0
+-5.37561 2.04795 0
+-2.36302 -1.41342 0
+-1.11032 -1.98984 0
+-1.11032 -0.824368 0
+-0.97798 -0.198085 0
+-1.99262 -0.367847 0
+-4.07077 -0.665589 0
+-4.3447 -1.15273 0
+-4.78288 -1.6705 0
+-5.34904 -1.98378 0
+-5.9399 -2.00361 0
+-6.41503 -1.76251 0
+-6.65367 -1.36418 0
+-6.61477 -0.914856 0
+-6.36609 -0.454577 0
+-6.06274 0.0665688 0
+-5.88469 0.731836 0
+-5.9643 1.54934 0
+-6.33482 2.38441 0
+-6.91435 3.00911 0
+-7.52488 3.24386 0
+-7.94025 3.07852 0
+-7.95458 2.6722 0
+-7.45506 2.23418 0
+-6.47301 1.88701 0
+-5.18777 1.61542 0
+-3.87676 1.32058 0
+-2.83078 0.916904 0
+-2.26819 0.397168 0
+-2.2768 -0.159893 0
+-2.79593 -0.623215 0
+-3.63649 -0.862476 0
+-4.53164 -0.807802 0
+-5.20804 -0.496505 0
+-5.46088 -0.071691 0
+-5.20934 0.286915 0
+-4.51344 0.464664 0
+-3.54977 0.469424 0
+-2.56021 0.394917 0
+-1.79216 0.321793 0
+-1.44219 0.246178 0
+-1.60862 0.0984108 0
+-2.26002 -0.171673 0
+-3.23413 -0.529661 0
+-4.27858 -0.872293 0
+-5.12586 -1.10066 0
+-5.57606 -1.1828 0
+-5.55569 -1.16261 0
+-5.13331 -1.12623 0
+-4.4923 -1.16202 0
+-3.87382 -1.33104 0
+-3.50645 -1.643 0
+-3.53915 -2.03945 0
+-3.99506 -2.40749 0
+-4.76001 -2.63734 0
+-5.61167 -2.68545 0
+-6.28464 -2.59783 0
+-6.54688 -2.47252 0
+-6.26219 -2.38447 0
+-5.42486 -2.337 0
+-4.16196 -2.27518 0
+-2.70144 -2.13227 0
+-1.3103 -1.84964 0
+-0.253323 -1.32785 0
+-0.0459072 -0.230136 0
+-0.0148177 -0.0346015 0
+-0.0120668 -0.00308868 0
+-0.021099 0.00985024 0
+-0.066 0.0482551 0
+-0.291764 0.187292 0
+-2.40523 -0.312667 0
+-6.10348 -2.63375 0
+-10.4711 -5.15194 0
+-14.2708 -6.97563 0
+-16.3546 -7.85747 0
+-16.0517 -7.93642 0
+-13.4109 -7.43272 0
+-9.22051 -6.47305 0
+-4.78875 -5.09667 0
+-1.54194 -3.36226 0
+-0.566174 -1.43116 0
+-2.24673 0.450168 0
+-6.12806 2.05246 0
+-11.0468 3.29609 0
+-15.4893 4.30661 0
+-18.0451 5.31195 0
+-17.8164 6.42842 0
+-14.6674 7.48381 0
+-9.25486 8.03249 0
+-2.84167 7.59769 0
+3.04635 6.00228 0
+7.02312 3.55915 0
+8.19632 0.974079 0
+6.3863 -0.986941 0
+2.16458 -1.85466 0
+-3.29356 -1.62472 0
+-8.50987 -0.665071 0
+-12.0895 0.532274 0
+-13.0978 1.57982 0
+-11.322 2.28637 0
+-7.3323 2.60646 0
+-2.31549 2.52567 0
+2.26992 1.98084 0
+5.10728 0.877718 0
+5.37694 -0.800976 0
+2.95435 -2.87678 0
+-1.59127 -4.9559 0
+-7.18245 -6.56692 0
+-12.542 -7.4022 0
+-16.5373 -7.50486 0
+-18.4659 -7.24822 0
+-18.2098 -7.09278 0
+-16.2241 -7.27498 0
+-13.3734 -7.64273 0
+-10.6673 -7.74765 0
+-8.96729 -7.12037 0
+-8.74217 -5.53868 0
+-9.93992 -3.13133 0
+-12.0219 -0.293555 0
+-14.1583 2.49387 0
+-15.5241 4.82313 0
+-15.5867 6.42261 0
+-14.2746 7.13273 0
+-11.9686 6.85744 0
+-9.33467 5.56454 0
+-7.07938 3.37301 0
+-5.72683 0.695397 0
+-2.44123 -1.65715 0
+-1.12969 -1.78341 0
+-1.12969 -0.591406 0
+-0.902642 -0.177842 0
+-1.82302 -0.31662 0
+-3.69528 -0.548147 0
+-3.94021 -0.907801 0
+-4.35996 -1.25074 0
+-4.93588 -1.40786 0
+-5.57238 -1.36711 0
+-6.11861 -1.21627 0
+-6.42659 -1.0562 0
+-6.42135 -0.920094 0
+-6.14362 -0.732312 0
+-5.7384 -0.338653 0
+-5.39513 0.388569 0
+-5.27094 1.42515 0
+-5.43092 2.5444 0
+-5.82385 3.40205 0
+-6.29543 3.71544 0
+-6.63366 3.41674 0
+-6.63714 2.67568 0
+-6.1889 1.78593 0
+-5.30792 1.00603 0
+-4.15336 0.460857 0
+-2.97603 0.143255 0
+-2.03846 -0.0206649 0
+-1.53731 -0.103982 0
+-1.55357 -0.143629 0
+-2.03796 -0.138828 0
+-2.82685 -0.0735805 0
+-3.683 0.0483457 0
+-4.35599 0.176487 0
+-4.65073 0.223044 0
+-4.48226 0.118447 0
+-3.8964 -0.121197 0
+-3.05043 -0.376547 0
+-2.16597 -0.489541 0
+-1.47229 -0.371891 0
+-1.15234 -0.0737665 0
+-1.29745 0.243513 0
+-1.87776 0.40864 0
+-2.7425 0.335079 0
+-3.66008 0.0452852 0
+-4.38953 -0.371201 0
+-4.75643 -0.815899 0
+-4.70366 -1.21538 0
+-4.30194 -1.52795 0
+-3.72389 -1.74006 0
+-3.19462 -1.86031 0
+-2.93093 -1.9067 0
+-3.07997 -1.89041 0
+-3.67171 -1.81575 0
+-4.60226 -1.70679 0
+-5.65719 -1.63053 0
+-6.57061 -1.68442 0
+-7.1001 -1.94302 0
+-7.09169 -2.39288 0
+-6.5191 -2.9096 0
+-5.49204 -3.30223 0
+-4.23297 -3.39134 0
+-3.02148 -3.06113 0
+-2.08656 -2.26277 0
+-1.24462 -1.07208 0
+-0.871787 -0.40743 0
+-0.838551 -0.0363247 0
+-1.10381 0.275108 0
+-1.75191 0.696361 0
+-2.90924 1.34461 0
+-5.03024 1.80834 0
+-8.54043 0.876443 0
+-12.6916 -1.00082 0
+-16.3199 -3.34732 0
+-18.3219 -5.85548 0
+-18.0426 -8.21569 0
+-15.5135 -9.96175 0
+-11.472 -10.5145 0
+-7.14985 -9.41886 0
+-3.8911 -6.62102 0
+-2.72115 -2.60111 0
+-4.01143 1.74045 0
+-7.35533 5.39636 0
+-11.6942 7.63498 0
+-15.6447 8.25705 0
+-17.9126 7.57989 0
+-17.6673 6.18314 0
+-14.7737 4.59019 0
+-9.82646 3.08523 0
+-3.9837 1.75493 0
+1.35001 0.668563 0
+4.90079 0.00837088 0
+5.85812 0.016755 0
+4.07779 0.793386 0
+0.111216 2.11192 0
+-4.94104 3.42754 0
+-9.71498 4.10886 0
+-12.9407 3.75795 0
+-13.7832 2.42233 0
+-12.0723 0.575474 0
+-8.34751 -1.1183 0
+-3.69927 -2.12257 0
+0.546298 -2.26472 0
+3.19863 -1.77461 0
+3.51862 -1.12097 0
+1.39451 -0.752668 0
+-2.65855 -0.902844 0
+-7.66325 -1.56222 0
+-12.4595 -2.60594 0
+-16.0218 -3.94257 0
+-17.7268 -5.54319 0
+-17.4975 -7.32206 0
+-15.787 -8.98557 0
+-13.4146 -10.0151 0
+-11.3084 -9.8538 0
+-10.2267 -8.2021 0
+-10.5342 -5.23117 0
+-12.0972 -1.56836 0
+-14.3342 1.94353 0
+-16.4191 4.57871 0
+-17.5707 5.97472 0
+-17.3242 6.17616 0
+-15.6788 5.48736 0
+-13.0713 4.24989 0
+-10.1997 2.69298 0
+-7.77931 0.952582 0
+-6.32458 -0.759331 0
+-2.74979 -1.95664 0
+-1.28237 -1.60092 0
+-1.28237 -0.365817 0
+-0.843629 -0.165905 0
+-1.68842 -0.284323 0
+-3.38917 -0.467998 0
+-3.56986 -0.727114 0
+-3.89963 -0.920974 0
+-4.37821 -0.929273 0
+-4.93954 -0.805786 0
+-5.46134 -0.694469 0
+-5.80837 -0.70917 0
+-5.89134 -0.837127 0
+-5.70854 -0.91511 0
+-5.34623 -0.700964 0
+-4.93997 -0.0176914 0
+-4.6204 1.10558 0
+-4.46805 2.39204 0
+-4.48917 3.42316 0
+-4.61431 3.84058 0
+-4.71916 3.5216 0
+-4.66638 2.62291 0
+-4.35944 1.47899 0
+-3.78745 0.434041 0
+-3.03769 -0.288899 0
+-2.26761 -0.62683 0
+-1.65037 -0.637904 0
+-1.32007 -0.434279 0
+-1.33594 -0.127764 0
+-1.6703 0.19554 0
+-2.21678 0.472896 0
+-2.81565 0.647216 0
+-3.29493 0.655767 0
+-3.51919 0.447307 0
+-3.4292 0.0284547 0
+-3.05566 -0.494743 0
+-2.50351 -0.928694 0
+-1.91821 -1.07484 0
+-1.44895 -0.841151 0
+-1.21627 -0.306442 0
+-1.2841 0.311345 0
+-1.63867 0.763213 0
+-2.18498 0.881382 0
+-2.77135 0.631662 0
+-3.23827 0.0957148 0
+-3.47149 -0.582679 0
+-3.43719 -1.24968 0
+-3.18847 -1.77668 0
+-2.84743 -2.0811 0
+-2.57263 -2.13511 0
+-2.51837 -1.96095 0
+-2.79066 -1.61812 0
+-3.41004 -1.19637 0
+-4.29795 -0.818879 0
+-5.29349 -0.634986 0
+-6.19629 -0.781616 0
+-6.82121 -1.3181 0
+-7.04555 -2.16854 0
+-6.83714 -3.11801 0
+-6.26042 -3.87895 0
+-5.45762 -4.19414 0
+-4.59724 -3.92151 0
+-3.78061 -3.0794 0
+-2.95593 -1.89676 0
+-2.47047 -0.892896 0
+-2.42521 -0.0815793 0
+-2.84576 0.695658 0
+-3.75117 1.60177 0
+-5.09761 2.69105 0
+-6.90566 3.61639 0
+-9.51511 3.4859 0
+-12.5721 2.05615 0
+-15.3051 -0.614285 0
+-16.9163 -4.24434 0
+-16.9048 -8.22717 0
+-15.2555 -11.611 0
+-12.456 -13.314 0
+-9.34749 -12.5274 0
+-6.85888 -9.10963 0
+-5.71033 -3.74966 0
+-6.18353 2.21365 0
+-8.03858 7.25141 0
+-10.5969 10.1933 0
+-12.953 10.6131 0
+-14.2459 8.87288 0
+-13.9126 5.84975 0
+-11.8526 2.53019 0
+-8.46362 -0.303701 0
+-4.53355 -2.17514 0
+-1.01885 -2.84614 0
+1.22433 -2.23481 0
+1.67469 -0.433605 0
+0.279452 2.18862 0
+-2.54243 4.9338 0
+-6.01926 6.90437 0
+-9.23055 7.32015 0
+-11.3448 5.87223 0
+-11.8348 2.91232 0
+-10.6146 -0.644771 0
+-8.05827 -3.6746 0
+-4.89193 -5.28891 0
+-1.98966 -5.167 0
+-0.135912 -3.62836 0
+0.177934 -1.43481 0
+-1.12949 0.554754 0
+-3.72461 1.69227 0
+-6.96382 1.67699 0
+-10.0817 0.511902 0
+-12.4117 -1.6125 0
+-13.574 -4.38091 0
+-13.5685 -7.32758 0
+-12.747 -9.80706 0
+-11.6788 -11.0833 0
+-10.9594 -10.5732 0
+-11.0217 -8.13979 0
+-12.0016 -4.25129 0
+-13.6921 0.122168 0
+-15.6046 3.85599 0
+-17.1262 6.10032 0
+-17.7263 6.57482 0
+-17.1375 5.58734 0
+-15.4438 3.79362 0
+-13.0451 1.85128 0
+-10.5184 0.16623 0
+-8.43043 -1.13538 0
+-7.17163 -2.01812 0
+-3.2904 -2.26735 0
+-1.57783 -1.5063 0
+-1.57783 -0.218765 0
+-0.795948 -0.158625 0
+-1.58389 -0.266486 0
+-3.15455 -0.422925 0
+-3.26264 -0.61903 0
+-3.47164 -0.711973 0
+-3.79358 -0.607336 0
+-4.19956 -0.399797 0
+-4.6185 -0.27553 0
+-4.95725 -0.370428 0
+-5.13441 -0.659964 0
+-5.1089 -0.940617 0
+-4.88873 -0.921133 0
+-4.52093 -0.385494 0
+-4.07405 0.658702 0
+-3.6218 1.93979 0
+-3.22717 3.02853 0
+-2.92545 3.53886 0
+-2.71166 3.30781 0
+-2.54331 2.45456 0
+-2.36312 1.2988 0
+-2.13164 0.202558 0
+-1.8502 -0.570336 0
+-1.56096 -0.916074 0
+-1.32653 -0.872333 0
+-1.20331 -0.557495 0
+-1.22102 -0.110055 0
+-1.37273 0.347247 0
+-1.61492 0.715089 0
+-1.8777 0.909995 0
+-2.08513 0.863197 0
+-2.18039 0.542568 0
+-2.14405 -0.00788415 0
+-1.99561 -0.643185 0
+-1.77956 -1.14474 0
+-1.54767 -1.30674 0
+-1.34819 -1.04062 0
+-1.22218 -0.432455 0
+-1.1989 0.288065 0
+-1.28594 0.850246 0
+-1.46001 1.05546 0
+-1.66998 0.841631 0
+-1.85523 0.280963 0
+-1.97043 -0.467477 0
+-2.00326 -1.21686 0
+-1.97844 -1.8015 0
+-1.95074 -2.1088 0
+-1.99175 -2.09411 0
+-2.17194 -1.78076 0
+-2.53858 -1.25149 0
+-3.0955 -0.639445 0
+-3.79603 -0.118342 0
+-4.55348 0.122457 0
+-5.26477 -0.0703188 0
+-5.83721 -0.745665 0
+-6.20733 -1.79843 0
+-6.34878 -2.97655 0
+-6.27178 -3.95595 0
+-6.01427 -4.45165 0
+-5.62127 -4.31452 0
+-5.11997 -3.5807 0
+-4.5468 -2.46992 0
+-4.13918 -1.30052 0
+-4.05321 -0.167543 0
+-4.34393 0.986372 0
+-4.9863 2.24414 0
+-5.87502 3.57977 0
+-6.93342 4.67479 0
+-8.31676 4.86924 0
+-9.94389 3.68328 0
+-11.493 0.934787 0
+-12.5799 -3.15743 0
+-12.9339 -7.8731 0
+-12.4973 -12.0477 0
+-11.4342 -14.3771 0
+-10.0667 -13.8949 0
+-8.76634 -10.41 0
+-7.83927 -4.67673 0
+-7.43752 1.8119 0
+-7.52545 7.33934 0
+-7.90207 10.5699 0
+-8.26484 10.9759 0
+-8.3016 8.90963 0
+-7.79062 5.33877 0
+-6.683 1.42257 0
+-5.1373 -1.8494 0
+-3.4844 -3.82804 0
+-2.1258 -4.20474 0
+-1.40095 -2.95965 0
+-1.47649 -0.358072 0
+-2.29898 3.01111 0
+-3.62295 6.25778 0
+-5.09296 8.37438 0
+-6.34287 8.57006 0
+-7.08297 6.61233 0
+-7.15934 2.98869 0
+-6.57954 -1.22457 0
+-5.50353 -4.75061 0
+-4.20273 -6.58971 0
+-2.99584 -6.37389 0
+-2.17478 -4.44942 0
+-1.93589 -1.6737 0
+-2.33113 0.949988 0
+-3.25385 2.615 0
+-4.47011 2.89325 0
+-5.69517 1.73696 0
+-6.69479 -0.612877 0
+-7.37122 -3.70448 0
+-7.79387 -6.90494 0
+-8.15936 -9.44157 0
+-8.70093 -10.5417 0
+-9.58924 -9.6849 0
+-10.8631 -6.86591 0
+-12.4081 -2.70628 0
+-13.9823 1.69631 0
+-15.2789 5.15263 0
+-16.0106 6.83207 0
+-15.9924 6.55658 0
+-15.1999 4.79481 0
+-13.7846 2.37835 0
+-12.0396 0.106274 0
+-10.3242 -1.54921 0
+-8.96639 -2.49315 0
+-8.16765 -2.81687 0
+-3.98302 -2.49665 0
+-1.98204 -1.50594 0
+-1.98204 -0.186351 0
+-0.750132 -0.150924 0
+-1.49257 -0.253995 0
+-2.96438 -0.398986 0
+-3.01667 -0.566735 0
+-3.1168 -0.611846 0
+-3.27809 -0.446041 0
+-3.50198 -0.175909 0
+-3.77121 -0.00630494 0
+-4.04797 -0.0936645 0
+-4.27854 -0.429399 0
+-4.4015 -0.817656 0
+-4.35808 -0.964553 0
+-4.10647 -0.637105 0
+-3.6407 0.192939 0
+-3.0062 1.30529 0
+-2.298 2.32032 0
+-1.63464 2.87551 0
+-1.11743 2.7906 0
+-0.796539 2.13366 0
+-0.662249 1.16451 0
+-0.662633 0.202943 0
+-0.733257 -0.499712 0
+-0.821314 -0.828017 0
+-0.89564 -0.798008 0
+-0.944799 -0.508335 0
+-0.969663 -0.0851906 0
+-0.975363 0.352947 0
+-0.965676 0.705401 0
+-0.942231 0.88655 0
+-0.908895 0.829861 0
+-0.877076 0.510749 0
+-0.86475 -0.0202104 0
+-0.88603 -0.621905 0
+-0.937614 -1.09316 0
+-0.994191 -1.25016 0
+-1.0196 -1.01521 0
+-0.987687 -0.464368 0
+-0.898123 0.1985 0
+-0.776374 0.728497 0
+-0.659934 0.93902 0
+-0.582445 0.764142 0
+-0.565402 0.26392 0
+-0.618312 -0.414567 0
+-0.742331 -1.09284 0
+-0.93353 -1.6103 0
+-1.18566 -1.85667 0
+-1.49288 -1.78689 0
+-1.85066 -1.42297 0
+-2.25315 -0.849 0
+-2.68911 -0.20348 0
+-3.14194 0.334491 0
+-3.59535 0.575864 0
+-4.04028 0.374615 0
+-4.47613 -0.309825 0
+-4.90288 -1.37167 0
+-5.30925 -2.57018 0
+-5.6656 -3.5996 0
+-5.92662 -4.19062 0
+-6.04232 -4.19882 0
+-5.97857 -3.64445 0
+-5.75974 -2.68876 0
+-5.51883 -1.54144 0
+-5.37208 -0.314287 0
+-5.36262 0.976913 0
+-5.45453 2.33604 0
+-5.55494 3.68018 0
+-5.60483 4.72469 0
+-5.70216 4.96656 0
+-5.94429 3.92541 0
+-6.36102 1.35151 0
+-6.92899 -2.58945 0
+-7.59413 -7.20796 0
+-8.27305 -11.3688 0
+-8.84621 -13.8039 0
+-9.16716 -13.574 0
+-9.09789 -10.4792 0
+-8.55929 -5.21533 0
+-7.57233 0.82494 0
+-6.26721 6.03422 0
+-4.84892 9.15164 0
+-3.53105 9.658 0
+-2.472 7.85058 0
+-1.74486 4.61163 0
+-1.34939 1.02711 0
+-1.24706 -1.95173 0
+-1.38792 -3.68718 0
+-1.71104 -3.88162 0
+-2.12729 -2.5434 0
+-2.5122 0.026834 0
+-2.731 3.22991 0
+-2.69149 6.21827 0
+-2.39312 8.07601 0
+-1.93746 8.11439 0
+-1.48877 6.16364 0
+-1.20328 2.70321 0
+-1.16281 -1.26504 0
+-1.34414 -4.56928 0
+-1.63641 -6.29743 0
+-1.89513 -6.11517 0
+-2.00511 -4.33944 0
+-1.92271 -1.7561 0
+-1.68126 0.70854 0
+-1.36615 2.29989 0
+-1.08259 2.60969 0
+-0.938163 1.59254 0
+-1.04369 -0.507352 0
+-1.5147 -3.23348 0
+-2.45134 -5.96829 0
+-3.89326 -7.99966 0
+-5.77223 -8.66274 0
+-7.89666 -7.56048 0
+-9.98683 -4.77574 0
+-11.7508 -0.942342 0
+-12.9673 2.91282 0
+-13.5408 5.72616 0
+-13.5088 6.80001 0
+-13.0067 6.05447 0
+-12.2147 4.00287 0
+-11.3119 1.47551 0
+-10.4518 -0.753818 0
+-9.75661 -2.24439 0
+-9.30905 -2.94071 0
+-9.12286 -3.00306 0
+-4.67271 -2.52482 0
+-2.41196 -1.53633 0
+-2.41196 -0.248967 0
+-0.695088 -0.13826 0
+-1.39091 -0.236894 0
+-2.77144 -0.377029 0
+-2.80022 -0.537958 0
+-2.83484 -0.577225 0
+-2.87849 -0.402391 0
+-2.94654 -0.10786 0
+-3.06169 0.10885 0
+-3.23788 0.0825279 0
+-3.46044 -0.206845 0
+-3.67309 -0.605008 0
+-3.78235 -0.855292 0
+-3.68465 -0.734804 0
+-3.31004 -0.181673 0
+-2.66302 0.65828 0
+-1.83647 1.49377 0
+-0.986106 2.02514 0
+-0.275736 2.08023 0
+0.179807 1.67812 0
+0.346885 0.997431 0
+0.269854 0.279974 0
+0.0413944 -0.271253 0
+-0.234696 -0.551927 0
+-0.472381 -0.560323 0
+-0.617623 -0.363093 0
+-0.649851 -0.0529623 0
+-0.57606 0.279156 0
+-0.423075 0.552416 0
+-0.23157 0.695044 0
+-0.051683 0.649974 0
+0.0637452 0.395321 0
+0.0724867 -0.0289519 0
+-0.0388056 -0.510613 0
+-0.240993 -0.890973 0
+-0.465459 -1.02569 0
+-0.627813 -0.852859 0
+-0.662692 -0.42949 0
+-0.551521 0.0873302 0
+-0.328984 0.50596 0
+-0.0673084 0.677345 0
+0.150623 0.54621 0
+0.256068 0.158475 0
+0.209571 -0.36807 0
+0.00566112 -0.888928 0
+-0.330623 -1.27401 0
+-0.752916 -1.43437 0
+-1.20581 -1.334 0
+-1.63702 -0.991761 0
+-2.00703 -0.478986 0
+-2.29619 0.0856704 0
+-2.51045 0.548751 0
+-2.68451 0.749931 0
+-2.87738 0.567482 0
+-3.15621 -0.0309949 0
+-3.57066 -0.957217 0
+-4.12787 -2.01298 0
+-4.78095 -2.94652 0
+-5.43833 -3.53323 0
+-5.99155 -3.6456 0
+-6.35328 -3.28271 0
+-6.49453 -2.54751 0
+-6.45559 -1.58038 0
+-6.28643 -0.483444 0
+-6.00131 0.691796 0
+-5.56808 1.90281 0
+-4.93312 3.04523 0
+-4.09105 3.88262 0
+-3.16482 4.04033 0
+-2.37128 3.13188 0
+-1.95848 0.938703 0
+-2.13707 -2.41086 0
+-3.00182 -6.3432 0
+-4.46112 -9.90945 0
+-6.21384 -12.0512 0
+-7.80459 -11.9833 0
+-8.75356 -9.53027 0
+-8.71686 -5.25203 0
+-7.61205 -0.279872 0
+-5.6545 4.07668 0
+-3.28669 6.78383 0
+-1.03094 7.40225 0
+0.669974 6.14967 0
+1.56222 3.71938 0
+1.61175 0.977584 0
+0.969091 -1.30908 0
+-0.0951711 -2.62292 0
+-1.25274 -2.72405 0
+-2.17004 -1.6261 0
+-2.56283 0.419629 0
+-2.2622 2.92928 0
+-1.27818 5.23426 0
+0.173731 6.62409 0
+1.71506 6.57306 0
+2.91668 4.96202 0
+3.44372 2.17616 0
+3.17422 -0.995535 0
+2.2408 -3.63587 0
+0.978068 -5.0347 0
+-0.201112 -4.93599 0
+-0.948022 -3.59253 0
+-1.08322 -1.6209 0
+-0.63117 0.256491 0
+0.212961 1.45576 0
+1.15404 1.66861 0
+1.87027 0.876303 0
+2.07145 -0.708527 0
+1.54596 -2.70799 0
+0.206905 -4.62924 0
+-1.86621 -5.92654 0
+-4.41311 -6.11584 0
+-7.03267 -4.94092 0
+-9.28284 -2.52557 0
+-10.8119 0.586772 0
+-11.4686 3.56951 0
+-11.3405 5.59799 0
+-10.7031 6.16263 0
+-9.90461 5.25599 0
+-9.24064 3.3389 0
+-8.8746 1.10947 0
+-8.8297 -0.798717 0
+-9.03829 -2.0358 0
+-9.40133 -2.57767 0
+-9.80518 -2.59921 0
+-5.1638 -2.25897 0
+-2.74458 -1.48723 0
+-2.74458 -0.329583 0
+-0.62185 -0.118322 0
+-1.25695 -0.208256 0
+-2.52559 -0.340505 0
+-2.56459 -0.498959 0
+-2.58833 -0.553486 0
+-2.58234 -0.408373 0
+-2.55799 -0.132216 0
+-2.55559 0.106452 0
+-2.62441 0.151346 0
+-2.78854 -0.0427148 0
+-3.01722 -0.376325 0
+-3.21869 -0.65382 0
+-3.2671 -0.686392 0
+-3.05492 -0.393862 0
+-2.54675 0.150109 0
+-1.80595 0.75297 0
+-0.977753 1.19695 0
+-0.236139 1.33861 0
+0.279067 1.16291 0
+0.505577 0.770922 0
+0.466705 0.318846 0
+0.247962 -0.0525095 0
+-0.0409292 -0.263036 0
+-0.300559 -0.300694 0
+-0.462563 -0.201089 0
+-0.495658 -0.0198668 0
+-0.402114 0.185612 0
+-0.211008 0.36131 0
+0.0281039 0.455933 0
+0.251945 0.426133 0
+0.394656 0.25261 0
+0.405724 -0.0400194 0
+0.270799 -0.375688 0
+0.024848 -0.645022 0
+-0.25329 -0.747553 0
+-0.467433 -0.638716 0
+-0.541522 -0.355401 0
+-0.450184 -0.00400738 0
+-0.227922 0.283698 0
+0.0456002 0.403822 0
+0.274843 0.316967 0
+0.378509 0.0548091 0
+0.310265 -0.299825 0
+0.0664433 -0.645107 0
+-0.317775 -0.889795 0
+-0.779997 -0.972152 0
+-1.24607 -0.86793 0
+-1.64604 -0.591788 0
+-1.92864 -0.196386 0
+-2.07344 0.230474 0
+-2.09969 0.574995 0
+-2.06834 0.718584 0
+-2.07248 0.571621 0
+-2.21362 0.11015 0
+-2.56879 -0.60205 0
+-3.16039 -1.42138 0
+-3.94264 -2.16428 0
+-4.81176 -2.66412 0
+-5.63672 -2.82064 0
+-6.29845 -2.62098 0
+-6.72101 -2.12494 0
+-6.87743 -1.42396 0
+-6.76208 -0.598799 0
+-6.36318 0.292901 0
+-5.65606 1.19568 0
+-4.62477 2.01394 0
+-3.31311 2.57096 0
+-1.88004 2.60727 0
+-0.601492 1.85333 0
+0.180768 0.156443 0
+0.154291 -2.38439 0
+-0.844308 -5.3446 0
+-2.72724 -8.02651 0
+-5.12412 -9.65433 0
+-7.45517 -9.6522 0
+-9.09818 -7.88727 0
+-9.59109 -4.75911 0
+-8.78966 -1.08131 0
+-6.91441 2.20142 0
+-4.46862 4.33804 0
+-2.06511 4.99874 0
+-0.235926 4.32048 0
+0.703627 2.77983 0
+0.701477 0.979735 0
+-0.0645382 -0.543064 0
+-1.26282 -1.42463 0
+-2.4916 -1.49527 0
+-3.35569 -0.762016 0
+-3.54075 0.604687 0
+-2.88844 2.27697 0
+-1.45724 3.80306 0
+0.463327 4.70353 0
+2.41245 4.62393 0
+3.88931 3.48516 0
+4.51501 1.55047 0
+4.16202 -0.642545 0
+2.99648 -2.47033 0
+1.41471 -3.45293 0
+-0.0991464 -3.42213 0
+-1.13547 -2.55621 0
+-1.47909 -1.27728 0
+-1.15008 -0.0725186 0
+-0.367316 0.672993 0
+0.533526 0.767772 0
+1.19002 0.219806 0
+1.28913 -0.807631 0
+0.627157 -2.04602 0
+-0.841661 -3.16042 0
+-2.97376 -3.79445 0
+-5.44198 -3.64761 0
+-7.79901 -2.58388 0
+-9.59689 -0.727693 0
+-10.5282 1.51803 0
+-10.5315 3.57289 0
+-9.81167 4.87813 0
+-8.75813 5.10909 0
+-7.7977 4.29555 0
+-7.24627 2.78748 0
+-7.2244 1.08759 0
+-7.66503 -0.358086 0
+-8.39415 -1.30668 0
+-9.22684 -1.74497 0
+-10.0109 -1.81515 0
+-5.28229 -1.70007 0
+-2.84956 -1.25941 0
+-2.84956 -0.319824 0
+-0.526878 -0.0918795 0
+-1.07854 -0.166776 0
+-2.19279 -0.281822 0
+-2.26382 -0.427924 0
+-2.32016 -0.497143 0
+-2.32888 -0.399662 0
+-2.28502 -0.176069 0
+-2.22531 0.0467426 0
+-2.21258 0.13861 0
+-2.29859 0.0433008 0
+-2.48568 -0.189237 0
+-2.70993 -0.429565 0
+-2.85896 -0.53737 0
+-2.81874 -0.434077 0
+-2.52751 -0.141121 0
+-2.00876 0.234216 0
+-1.36609 0.554274 0
+-0.742886 0.715413 0
+-0.26785 0.687877 0
+-0.0123204 0.515392 0
+0.0240512 0.282474 0
+-0.100812 0.0723539 0
+-0.301399 -0.0624485 0
+-0.494678 -0.107415 0
+-0.619739 -0.0760283 0
+-0.644923 0.0053175 0
+-0.566543 0.107232 0
+-0.40478 0.199546 0
+-0.199638 0.250791 0
+-0.00559432 0.232089 0
+0.118711 0.128305 0
+0.12725 -0.0485588 0
+0.00557818 -0.254015 0
+-0.217481 -0.421964 0
+-0.474491 -0.490543 0
+-0.682108 -0.431099 0
+-0.773208 -0.264301 0
+-0.723631 -0.0535847 0
+-0.561166 0.121234 0
+-0.353842 0.196499 0
+-0.184589 0.147714 0
+-0.124005 -0.00577493 0
+-0.211012 -0.212818 0
+-0.445577 -0.410541 0
+-0.792434 -0.542938 0
+-1.192 -0.572591 0
+-1.5745 -0.485427 0
+-1.87468 -0.291605 0
+-2.04574 -0.0253251 0
+-2.07179 0.256523 0
+-1.9769 0.480104 0
+-1.82681 0.568496 0
+-1.71878 0.463585 0
+-1.75817 0.149539 0
+-2.02701 -0.333202 0
+-2.55556 -0.892829 0
+-3.30882 -1.41102 0
+-4.19437 -1.77857 0
+-5.08833 -1.92668 0
+-5.86829 -1.84102 0
+-6.43925 -1.55399 0
+-6.74137 -1.12184 0
+-6.7393 -0.60087 0
+-6.40839 -0.0380076 0
+-5.73233 0.519628 0
+-4.7201 1.0017 0
+-3.44151 1.29237 0
+-2.06486 1.23062 0
+-0.863751 0.652215 0
+-0.175539 -0.531769 0
+-0.310781 -2.24914 0
+-1.43555 -4.21984 0
+-3.4716 -5.99046 0
+-6.06616 -7.05977 0
+-8.662 -7.05636 0
+-10.6559 -5.89333 0
+-11.5902 -3.82488 0
+-11.3007 -1.37077 0
+-9.96262 0.863331 0
+-8.01621 2.39163 0
+-6.00982 2.99235 0
+-4.42668 2.73734 0
+-3.5601 1.91325 0
+-3.46914 0.888773 0
+-4.00672 -0.00548582 0
+-4.88791 -0.543437 0
+-5.76651 -0.616674 0
+-6.30555 -0.222975 0
+-6.24353 0.542668 0
+-5.45821 1.49164 0
+-4.01573 2.36058 0
+-2.17946 2.86726 0
+-0.356457 2.80093 0
+1.01606 2.11264 0
+1.61 0.956535 0
+1.31727 -0.349819 0
+0.285079 -1.43813 0
+-1.14069 -2.02716 0
+-2.54002 -2.02281 0
+-3.55934 -1.53689 0
+-4.01393 -0.822687 0
+-3.92076 -0.165687 0
+-3.46434 0.216568 0
+-2.92342 0.226858 0
+-2.59133 -0.112284 0
+-2.70945 -0.68951 0
+-3.41717 -1.33831 0
+-4.71527 -1.86232 0
+-6.44747 -2.06226 0
+-8.31499 -1.78009 0
+-9.93879 -0.960085 0
+-10.9652 0.29873 0
+-11.1841 1.73695 0
+-10.6107 2.99944 0
+-9.48876 3.75621 0
+-8.20697 3.82731 0
+-7.16008 3.24866 0
+-6.61673 2.24414 0
+-6.65017 1.12103 0
+-7.15551 0.147247 0
+-7.935 -0.527182 0
+-8.801 -0.878975 0
+-9.63597 -0.980178 0
+-4.95439 -0.98311 0
+-2.64904 -0.836233 0
+-2.64904 -0.135414 0
+-0.413741 -0.0624951 0
+-0.858524 -0.117176 0
+-1.76927 -0.205015 0
+-1.87418 -0.323006 0
+-1.97904 -0.392284 0
+-2.03826 -0.340448 0
+-2.02814 -0.186183 0
+-1.96899 -0.0124099 0
+-1.91806 0.0876803 0
+-1.93782 0.0630613 0
+-2.05744 -0.0696195 0
+-2.24948 -0.237523 0
+-2.43579 -0.351057 0
+-2.52087 -0.348998 0
+-2.43602 -0.22597 0
+-2.1717 -0.0301045 0
+-1.78212 0.164688 0
+-1.36138 0.29467 0
+-1.00496 0.331465 0
+-0.775839 0.286268 0
+-0.689029 0.195664 0
+-0.717142 0.100467 0
+-0.809131 0.0295401 0
+-0.911021 -0.00552437 0
+-0.980366 -0.00668417 0
+-0.992263 0.0172147 0
+-0.939691 0.0546599 0
+-0.832117 0.0919725 0
+-0.694169 0.112843 0
+-0.562859 0.100779 0
+-0.480347 0.045793 0
+-0.481247 -0.0476587 0
+-0.578004 -0.157258 0
+-0.751606 -0.248362 0
+-0.954368 -0.287781 0
+-1.12605 -0.259416 0
+-1.21714 -0.173217 0
+-1.20861 -0.0621055 0
+-1.11916 0.0317786 0
+-0.9971 0.0744393 0
+-0.901954 0.0525678 0
+-0.884086 -0.0236438 0
+-0.970072 -0.126832 0
+-1.1573 -0.223318 0
+-1.417 -0.283234 0
+-1.70273 -0.286855 0
+-1.96104 -0.227118 0
+-2.14252 -0.110127 0
+-2.21263 0.0447846 0
+-2.16173 0.205618 0
+-2.01248 0.330856 0
+-1.82126 0.377274 0
+-1.66989 0.31222 0
+-1.64702 0.126668 0
+-1.82319 -0.15703 0
+-2.22825 -0.487769 0
+-2.84005 -0.799228 0
+-3.58919 -1.02943 0
+-4.3777 -1.13817 0
+-5.10338 -1.11533 0
+-5.67986 -0.977518 0
+-6.04525 -0.756447 0
+-6.15977 -0.486357 0
+-5.9998 -0.19797 0
+-5.55796 0.0777835 0
+-4.85481 0.298556 0
+-3.96203 0.399587 0
+-3.02592 0.294513 0
+-2.2714 -0.102308 0
+-1.96979 -0.833378 0
+-2.36761 -1.85133 0
+-3.59356 -2.99389 0
+-5.5801 -4.00392 0
+-8.04024 -4.59963 0
+-10.5233 -4.57325 0
+-12.5399 -3.87673 0
+-13.7119 -2.65289 0
+-13.8892 -1.1935 0
+-13.1861 0.160214 0
+-11.9259 1.13148 0
+-10.5216 1.58801 0
+-9.34348 1.55922 0
+-8.62418 1.19396 0
+-8.42392 0.688512 0
+-8.65072 0.221307 0
+-9.11085 -0.0833039 0
+-9.5653 -0.162222 0
+-9.78099 -0.00729012 0
+-9.57786 0.339539 0
+-8.87375 0.787532 0
+-7.71898 1.20581 0
+-6.30294 1.45122 0
+-4.91668 1.41467 0
+-3.87251 1.06847 0
+-3.4047 0.488718 0
+-3.59 -0.164513 0
+-4.3228 -0.705336 0
+-5.35648 -0.99348 0
+-6.39361 -0.98568 0
+-7.18651 -0.743983 0
+-7.60877 -0.400424 0
+-7.67552 -0.098938 0
+-7.51551 0.0565537 0
+-7.31623 0.0275821 0
+-7.26643 -0.16209 0
+-7.51028 -0.445657 0
+-8.11547 -0.733117 0
+-9.05237 -0.925418 0
+-10.1867 -0.927921 0
+-11.2953 -0.671479 0
+-12.114 -0.141441 0
+-12.4134 0.598131 0
+-12.0807 1.40428 0
+-11.1717 2.09047 0
+-9.9047 2.48919 0
+-8.59158 2.5142 0
+-7.53303 2.1901 0
+-6.92241 1.63352 0
+-6.7992 0.997816 0
+-7.06677 0.414822 0
+-7.55984 -0.0341158 0
+-8.12917 -0.309643 0
+-8.71149 -0.39786 0
+-4.26697 -0.344312 0
+-2.18704 -0.326262 0
+-2.18704 0.212945 0
+-0.292603 -0.0352051 0
+-0.615247 -0.0683008 0
+-1.28586 -0.123781 0
+-1.40686 -0.20201 0
+-1.54448 -0.254657 0
+-1.65059 -0.234339 0
+-1.68969 -0.147085 0
+-1.66404 -0.0380601 0
+-1.6143 0.0379415 0
+-1.59725 0.0460085 0
+-1.65395 -0.0129201 0
+-1.78603 -0.105441 0
+-1.9526 -0.18449 0
+-2.08892 -0.212673 0
+-2.13663 -0.178258 0
+-2.0697 -0.0970343 0
+-1.90383 -0.00118497 0
+-1.68647 0.0773125 0
+-1.47476 0.119749 0
+-1.31327 0.124775 0
+-1.22145 0.103849 0
+-1.19365 0.0726669 0
+-1.20805 0.0439341 0
+-1.23797 0.0244026 0
+-1.26038 0.015727 0
+-1.25983 0.0166655 0
+-1.22952 0.0243412 0
+-1.17161 0.0340669 0
+-1.09778 0.0390148 0
+-1.02847 0.031468 0
+-0.988834 0.0061561 0
+-1.00068 -0.0358082 0
+-1.07284 -0.0851032 0
+-1.19468 -0.126524 0
+-1.33732 -0.145137 0
+-1.46335 -0.133385 0
+-1.5413 -0.0952684 0
+-1.55823 -0.0451726 0
+-1.52462 -0.00183313 0
+-1.46962 0.0194413 0
+-1.42957 0.0125085 0
+-1.435 -0.0182068 0
+-1.50135 -0.0604867 0
+-1.62544 -0.0992217 0
+-1.78765 -0.121024 0
+-1.95739 -0.117123 0
+-2.09999 -0.0845135 0
+-2.18389 -0.0262227 0
+-2.18771 0.0486025 0
+-2.107 0.124907 0
+-1.95934 0.183198 0
+-1.78529 0.203218 0
+-1.64276 0.169697 0
+-1.59451 0.0784127 0
+-1.6913 -0.0602361 0
+-1.95665 -0.222419 0
+-2.37878 -0.377102 0
+-2.91312 -0.495086 0
+-3.49409 -0.557197 0
+-4.05105 -0.558367 0
+-4.52214 -0.506428 0
+-4.86162 -0.416973 0
+-5.04047 -0.3075 0
+-5.04426 -0.194181 0
+-4.8735 -0.0929818 0
+-4.55065 -0.0242948 0
+-4.13344 -0.0176182 0
+-3.72794 -0.110987 0
+-3.48941 -0.340837 0
+-3.60002 -0.722773 0
+-4.2209 -1.23044 0
+-5.43027 -1.78452 0
+-7.17167 -2.26252 0
+-9.23951 -2.53179 0
+-11.3174 -2.49538 0
+-13.0623 -2.13186 0
+-14.2055 -1.50966 0
+-14.6314 -0.767537 0
+-14.4029 -0.0682962 0
+-13.7257 0.454272 0
+-12.8706 0.732921 0
+-12.087 0.775585 0
+-11.5396 0.646567 0
+-11.285 0.43387 0
+-11.283 0.219323 0
+-11.4281 0.0618384 0
+-11.5842 -0.00610545 0
+-11.6157 0.0241915 0
+-11.4158 0.13961 0
+-10.9336 0.305363 0
+-10.1959 0.468109 0
+-9.31218 0.567474 0
+-8.45352 0.556008 0
+-7.80502 0.419971 0
+-7.50588 0.189585 0
+-7.60129 -0.0691014 0
+-8.02743 -0.2792 0
+-8.63713 -0.383786 0
+-9.25502 -0.367784 0
+-9.73821 -0.260789 0
+-10.0179 -0.120763 0
+-10.1087 -0.00815055 0
+-10.0887 0.0365943 0
+-10.0642 0.00312455 0
+-10.1346 -0.09175 0
+-10.3662 -0.21405 0
+-10.7768 -0.322475 0
+-11.3272 -0.375025 0
+-11.9207 -0.334472 0
+-12.4157 -0.176475 0
+-12.6564 0.0992493 0
+-12.5181 0.459889 0
+-11.9545 0.840627 0
+-11.0245 1.16046 0
+-9.88406 1.34877 0
+-8.74027 1.37041 0
+-7.78597 1.23581 0
+-7.14298 0.990531 0
+-6.83651 0.69135 0
+-6.80676 0.385068 0
+-6.94622 0.105346 0
+-7.14757 -0.108291 0
+-7.36449 -0.180938 0
+-3.45016 0.00447864 0
+-1.65446 0.0722261 0
+-1.65446 0.571589 0
+-0.177671 -0.0146395 0
+-0.378013 -0.0295675 0
+-0.800963 -0.0555528 0
+-0.909269 -0.0937039 0
+-1.04232 -0.121603 0
+-1.16002 -0.116639 0
+-1.22721 -0.0798932 0
+-1.23531 -0.0299592 0
+-1.20667 0.00929636 0
+-1.18176 0.0211001 0
+-1.19763 0.00295019 0
+-1.26925 -0.0338184 0
+-1.38295 -0.0707932 0
+-1.50408 -0.0915486 0
+-1.59387 -0.0884665 0
+-1.6264 -0.0644968 0
+-1.59767 -0.0299225 0
+-1.52374 0.00338893 0
+-1.43102 0.0270232 0
+-1.34444 0.0381952 0
+-1.27946 0.0388768 0
+-1.24007 0.0332709 0
+-1.22156 0.0254233 0
+-1.21521 0.018052 0
+-1.21204 0.0125615 0
+-1.20488 0.00949903 0
+-1.18927 0.00873853 0
+-1.16446 0.00925896 0
+-1.13443 0.008976 0
+-1.10817 0.00521308 0
+-1.09797 -0.00404747 0
+-1.11509 -0.0186903 0
+-1.16445 -0.035739 0
+-1.24088 -0.0500943 0
+-1.32938 -0.0566326 0
+-1.4101 -0.052668 0
+-1.46592 -0.0394442 0
+-1.4893 -0.0217955 0
+-1.48501 -0.00612217 0
+-1.46785 0.00227446 0
+-1.45653 0.00119723 0
+-1.46682 -0.00791874 0
+-1.50638 -0.0209283 0
+-1.57294 -0.0326587 0
+-1.65546 -0.038513 0
+-1.73709 -0.0354855 0
+-1.79903 -0.0225771 0
+-1.82435 -0.000903373 0
+-1.802 0.0262567 0
+-1.73063 0.0535297 0
+-1.6214 0.0739767 0
+-1.4986 0.0804112 0
+-1.39634 0.0674392 0
+-1.35152 0.0335915 0
+-1.39433 -0.0174278 0
+-1.53958 -0.0771697 0
+-1.78204 -0.134634 0
+-2.09766 -0.179466 0
+-2.44998 -0.204878 0
+-2.79918 -0.209168 0
+-3.11024 -0.195369 0
+-3.35775 -0.169466 0
+-3.52698 -0.138267 0
+-3.61307 -0.108097 0
+-3.62106 -0.0849895 0
+-3.5692 -0.0761565 0
+-3.49528 -0.091531 0
+-3.46274 -0.143534 0
+-3.56 -0.243574 0
+-3.88736 -0.395418 0
+-4.52983 -0.587964 0
+-5.52276 -0.791591 0
+-6.82343 -0.961853 0
+-8.30396 -1.05126 0
+-9.77379 -1.02555 0
+-11.0279 -0.87777 0
+-11.9043 -0.633286 0
+-12.329 -0.342837 0
+-12.3312 -0.0660952 0
+-12.0241 0.147226 0
+-11.5621 0.270872 0
+-11.0919 0.305411 0
+-10.7172 0.271923 0
+-10.4841 0.200714 0
+-10.3856 0.120857 0
+-10.378 0.0542207 0
+-10.3982 0.0140527 0
+-10.3797 0.00573111 0
+-10.2674 0.0272778 0
+-10.0312 0.069206 0
+-9.67841 0.115307 0
+-9.25721 0.146275 0
+-8.84747 0.146269 0
+-8.53741 0.109908 0
+-8.39368 0.0458574 0
+-8.43712 -0.0256644 0
+-8.63529 -0.0810297 0
+-8.9158 -0.103272 0
+-9.19446 -0.0891297 0
+-9.40558 -0.0496669 0
+-9.52183 -0.00451524 0
+-9.55692 0.0269391 0
+-9.55329 0.0329724 0
+-9.5627 0.0125292 0
+-9.62812 -0.0263256 0
+-9.77184 -0.0703284 0
+-9.98958 -0.104738 0
+-10.2489 -0.115697 0
+-10.4915 -0.0919076 0
+-10.641 -0.0269276 0
+-10.6194 0.0776448 0
+-10.3692 0.209677 0
+-9.87579 0.34721 0
+-9.17906 0.463734 0
+-8.36686 0.536575 0
+-7.55076 0.554304 0
+-6.83386 0.518909 0
+-6.28467 0.441337 0
+-5.92677 0.333447 0
+-5.74399 0.202291 0
+-5.69114 0.0524955 0
+-5.70078 -0.0986517 0
+-5.70104 -0.180674 0
+-2.72449 0.0401247 0
+-1.28749 0.201729 0
+-1.28749 0.684462 0
+-0.0835351 -0.00322278 0
+-0.179351 -0.00698419 0
+-0.3849 -0.0136529 0
+-0.454827 -0.0237767 0
+-0.544929 -0.031501 0
+-0.630537 -0.0310317 0
+-0.687986 -0.0224436 0
+-0.707909 -0.0100363 0
+-0.69911 0.000497417 0
+-0.682918 0.00490761 0
+-0.682074 0.00210666 0
+-0.71012 -0.00577271 0
+-0.766168 -0.0147447 0
+-0.836786 -0.0209309 0
+-0.903111 -0.0221412 0
+-0.949172 -0.0184358 0
+-0.967478 -0.0116167 0
+-0.959977 -0.00411193 0
+-0.935053 0.00209897 0
+-0.902905 0.0060469 0
+-0.871762 0.00773405 0
+-0.846218 0.00772701 0
+-0.827514 0.00671971 0
+-0.814748 0.00528604 0
+-0.806023 0.00383593 0
+-0.799173 0.00264944 0
+-0.792299 0.00186429 0
+-0.78444 0.00139982 0
+-0.776375 0.000910836 0
+-0.771046 -0.000115542 0
+-0.772995 -0.00209833 0
+-0.786632 -0.00505345 0
+-0.813938 -0.00843342 0
+-0.852771 -0.0112607 0
+-0.896869 -0.0125348 0
+-0.937819 -0.0117184 0
+-0.968225 -0.00903815 0
+-0.984591 -0.00542904 0
+-0.988568 -0.00214552 0
+-0.986053 -0.000240302 0
+-0.98469 -0.000165787 0
+-0.990947 -0.00166193 0
+-1.00794 -0.00393057 0
+-1.03464 -0.00596352 0
+-1.06629 -0.0068594 0
+-1.09575 -0.00602702 0
+-1.11506 -0.00327122 0
+-1.11714 0.0011818 0
+-1.09756 0.00667222 0
+-1.05615 0.0121204 0
+-0.998308 0.0161354 0
+-0.935178 0.0172814 0
+-0.882226 0.0144869 0
+-0.856103 0.00746863 0
+-0.870507 -0.00302345 0
+-0.932382 -0.0152951 0
+-1.03987 -0.0271482 0
+-1.18281 -0.0365223 0
+-1.3456 -0.0420853 0
+-1.51122 -0.043547 0
+-1.665 -0.0415974 0
+-1.79691 -0.0375492 0
+-1.90229 -0.0328941 0
+-1.98138 -0.0290081 0
+-2.03921 -0.0271518 0
+-2.08664 -0.0287344 0
+-2.14256 -0.0356054 0
+-2.23609 -0.0500092 0
+-2.40576 -0.073904 0
+-2.6935 -0.107673 0
+-3.13274 -0.148723 0
+-3.73353 -0.190803 0
+-4.47059 -0.22479 0
+-5.28078 -0.241068 0
+-6.07352 -0.23281 0
+-6.7525 -0.198791 0
+-7.2414 -0.144387 0
+-7.50407 -0.0801686 0
+-7.55158 -0.0185826 0
+-7.43423 0.0298725 0
+-7.22277 0.0594101 0
+-6.98706 0.0697007 0
+-6.77981 0.0646762 0
+-6.62941 0.0503152 0
+-6.54111 0.0325604 0
+-6.50299 0.0160966 0
+-6.49296 0.00402159 0
+-6.48517 -0.0020556 0
+-6.45593 -0.00195843 0
+-6.38971 0.00297907 0
+-6.28441 0.0100103 0
+-6.15376 0.0156264 0
+-6.02428 0.0167898 0
+-5.92666 0.0122819 0
+-5.88422 0.00342257 0
+-5.90353 -0.00636084 0
+-5.97152 -0.0130389 0
+-6.06094 -0.0138512 0
+-6.14148 -0.00859156 0
+-6.19148 0.000340774 0
+-6.2051 0.00909993 0
+-6.19227 0.0141071 0
+-6.17274 0.013449 0
+-6.1676 0.00738101 0
+-6.19185 -0.00207377 0
+-6.25019 -0.0119834 0
+-6.33563 -0.0192978 0
+-6.43 -0.0213287 0
+-6.50587 -0.0160381 0
+-6.5304 -0.00240224 0
+-6.47183 0.0190781 0
+-6.30814 0.0459885 0
+-6.03511 0.0741813 0
+-5.67013 0.0987549 0
+-5.24909 0.115531 0
+-4.81704 0.122254 0
+-4.41687 0.118735 0
+-4.08129 0.10576 0
+-3.83124 0.0833957 0
+-3.67872 0.0497746 0
+-3.62743 0.00120133 0
+-3.6609 -0.0651799 0
+-3.70901 -0.132566 0
+-2.04356 -0.0261199 0
+-1.10351 0.100468 0
+-1.10351 0.396347 0
+-0.0218343 -0.00322278 0
+-0.0470698 -0.00698419 0
+-0.102133 -0.0136529 0
+-0.12591 -0.0237767 0
+-0.157411 -0.031501 0
+-0.188442 -0.0310317 0
+-0.210886 -0.0224436 0
+-0.220922 -0.0100363 0
+-0.220425 0.000497417 0
+-0.215517 0.00490761 0
+-0.21341 0.00210666 0
+-0.219183 -0.00577271 0
+-0.233928 -0.0147447 0
+-0.254859 -0.0209309 0
+-0.277 -0.0221412 0
+-0.295436 -0.0184358 0
+-0.307052 -0.0116167 0
+-0.311164 -0.00411193 0
+-0.309065 0.00209897 0
+-0.303019 0.0060469 0
+-0.295284 0.00773405 0
+-0.287557 0.00772701 0
+-0.280838 0.00671971 0
+-0.275552 0.00528604 0
+-0.271716 0.00383593 0
+-0.269066 0.00264944 0
+-0.267202 0.00186429 0
+-0.265802 0.00139982 0
+-0.264891 0.000910836 0
+-0.265007 -0.000115542 0
+-0.267105 -0.00209833 0
+-0.272159 -0.00505345 0
+-0.280592 -0.00843342 0
+-0.291853 -0.0112607 0
+-0.304388 -0.0125348 0
+-0.316106 -0.0117184 0
+-0.325144 -0.00903815 0
+-0.330573 -0.00542904 0
+-0.332719 -0.00214552 0
+-0.332959 -0.000240302 0
+-0.333125 -0.000165787 0
+-0.334787 -0.00166193 0
+-0.338717 -0.00393057 0
+-0.344681 -0.00596352 0
+-0.35154 -0.0068594 0
+-0.357567 -0.00602702 0
+-0.360838 -0.00327122 0
+-0.359657 0.0011818 0
+-0.352984 0.00667222 0
+-0.340864 0.0121204 0
+-0.324729 0.0161354 0
+-0.307447 0.0172814 0
+-0.29296 0.0144869 0
+-0.285492 0.00746863 0
+-0.288515 -0.00302345 0
+-0.30381 -0.0152951 0
+-0.330959 -0.0271482 0
+-0.367481 -0.0365223 0
+-0.409566 -0.0420853 0
+-0.453113 -0.043547 0
+-0.494711 -0.0415974 0
+-0.53226 -0.0375492 0
+-0.565154 -0.0328941 0
+-0.594162 -0.0290081 0
+-0.621314 -0.0271518 0
+-0.650048 -0.0287344 0
+-0.685653 -0.0356054 0
+-0.735663 -0.0500092 0
+-0.809567 -0.073904 0
+-0.917239 -0.107673 0
+-1.06596 -0.148723 0
+-1.25677 -0.190803 0
+-1.48156 -0.22479 0
+-1.72262 -0.241068 0
+-1.95543 -0.23281 0
+-2.15422 -0.198791 0
+-2.29861 -0.144387 0
+-2.37878 -0.0801686 0
+-2.39736 -0.0185826 0
+-2.36749 0.0298725 0
+-2.30808 0.0594101 0
+-2.23838 0.0697007 0
+-2.1737 0.0646762 0
+-2.12339 0.0503152 0
+-2.09083 0.0325604 0
+-2.07473 0.0160966 0
+-2.07071 0.00402159 0
+-2.07277 -0.0020556 0
+-2.07472 -0.00195843 0
+-2.07174 0.00297907 0
+-2.06173 0.0100103 0
+-2.04611 0.0156264 0
+-2.02932 0.0167898 0
+-2.01704 0.0122819 0
+-2.01361 0.00342257 0
+-2.01997 -0.00636084 0
+-2.03301 -0.0130389 0
+-2.04686 -0.0138512 0
+-2.05546 -0.00859156 0
+-2.05512 0.000340774 0
+-2.04602 0.00909993 0
+-2.03191 0.0141071 0
+-2.01846 0.013449 0
+-2.01108 0.00738101 0
+-2.01315 -0.00207377 0
+-2.02514 -0.0119834 0
+-2.04443 -0.0192978 0
+-2.06576 -0.0213287 0
+-2.0818 -0.0160381 0
+-2.0842 -0.00240224 0
+-2.06512 0.0190781 0
+-2.01914 0.0459885 0
+-1.94495 0.0741813 0
+-1.8462 0.0987549 0
+-1.73067 0.115531 0
+-1.60841 0.122254 0
+-1.48968 0.118735 0
+-1.38392 0.10576 0
+-1.30052 0.0833957 0
+-1.25075 0.0497746 0
+-1.24955 0.00120133 0
+-1.31473 -0.0651799 0
+-1.44729 -0.132566 0
+-1.02337 -0.0261199 0
+-0.685718 0.100468 0
+-0.685718 0.396347 0
+-0.178566 -0.0459788 0
+-0.359201 -0.0871717 0
+-0.714802 -0.148814 0
+-0.485303 -0.229497 0
+-0.20234 -0.28296 0
+0.0759359 -0.278273 0
+0.293783 -0.217843 0
+0.418544 -0.124755 0
+0.448373 -0.0298227 0
+0.407961 0.0404189 0
+0.336188 0.0717797 0
+0.271518 0.0646768 0
+0.240575 0.0309499 0
+0.253077 -0.0124958 0
+0.303334 -0.0502503 0
+0.376144 -0.0728022 0
+0.453963 -0.0778116 0
+0.522665 -0.0686947 0
+0.574483 -0.0518101 0
+0.608115 -0.033624 0
+0.626887 -0.0187632 0
+0.636131 -0.00923646 0
+0.640779 -0.00463951 0
+0.643761 -0.00297345 0
+0.64548 -0.00171058 0
+0.644299 0.00118902 0
+0.637755 0.00655224 0
+0.624021 0.0137423 0
+0.603078 0.0209523 0
+0.577153 0.0259334 0
+0.550294 0.026867 0
+0.527283 0.0230204 0
+0.512365 0.0149265 0
+0.508302 0.00407141 0
+0.515998 -0.00768739 0
+0.534658 -0.0186508 0
+0.562206 -0.0275396 0
+0.595707 -0.033492 0
+0.631696 -0.0359799 0
+0.666543 -0.0348388 0
+0.697001 -0.0304495 0
+0.720922 -0.0239122 0
+0.737895 -0.0169646 0
+0.749412 -0.0115081 0
+0.758275 -0.0088542 0
+0.76733 -0.00904727 0
+0.778013 -0.0106744 0
+0.789413 -0.0113916 0
+0.798465 -0.00904342 0
+0.801393 -0.00291945 0
+0.795969 0.00543213 0
+0.783708 0.0122688 0
+0.771039 0.0126761 0
+0.768801 0.00224474 0
+0.789963 -0.0211552 0
+0.846072 -0.0561032 0
+0.943391 -0.0973125 0
+1.07985 -0.136456 0
+1.24386 -0.163998 0
+1.41548 -0.171614 0
+1.57003 -0.15455 0
+1.68329 -0.113247 0
+1.73699 -0.0536968 0
+1.72336 0.0136347 0
+1.6473 0.0760733 0
+1.52571 0.121591 0
+1.38421 0.141502 0
+1.25187 0.132348 0
+1.15527 0.0965979 0
+1.11322 0.0420533 0
+1.1331 -0.0198709 0
+1.20978 -0.0766783 0
+1.32741 -0.117624 0
+1.46361 -0.136194 0
+1.59512 -0.131512 0
+1.7033 -0.108176 0
+1.77779 -0.0744799 0
+1.8174 -0.0396111 0
+1.82826 -0.0108492 0
+1.82007 0.00819524 0
+1.80233 0.0177397 0
+1.78177 0.0205638 0
+1.76167 0.0201109 0
+1.74275 0.0189214 0
+1.72473 0.0180197 0
+1.70747 0.0172699 0
+1.69128 0.0161908 0
+1.67669 0.0145922 0
+1.66402 0.0126708 0
+1.65337 0.0106599 0
+1.64492 0.00844756 0
+1.63938 0.00554476 0
+1.63791 0.0014715 0
+1.64164 -0.00373041 0
+1.65092 -0.00927542 0
+1.66485 -0.0139304 0
+1.68154 -0.0166866 0
+1.69893 -0.0173794 0
+1.71575 -0.016827 0
+1.73209 -0.0163381 0
+1.74891 -0.0168186 0
+1.76687 -0.0179519 0
+1.78478 -0.0179053 0
+1.79854 -0.0137672 0
+1.80115 -0.00260307 0
+1.78395 0.0172039 0
+1.7392 0.0447448 0
+1.66329 0.0759105 0
+1.55969 0.103604 0
+1.44059 0.119104 0
+1.32598 0.114608 0
+1.23948 0.0865037 0
+1.20114 0.038339 0
+1.21915 -0.0180134 0
+1.28346 -0.0643083 0
+1.36483 -0.0813646 0
+1.42157 -0.0567449 0
+1.41348 0.00809739 0
+1.31891 0.0945708 0
+1.14891 0.169991 0
+0.951892 0.197023 0
+0.80351 0.148382 0
+0.764324 0.0391857 0
+0.709133 0.0914254 0
+0.542389 0.182664 0
+0.542389 0.482901 0
+-0.706055 -0.179068 0
+-1.40388 -0.324426 0
+-2.78032 -0.547716 0
+-2.1674 -0.842408 0
+-1.4092 -1.04115 0
+-0.67291 -1.01455 0
+-0.120923 -0.769812 0
+0.157106 -0.402764 0
+0.16879 -0.0414839 0
+0.0025581 0.206674 0
+-0.21529 0.289652 0
+-0.369107 0.218518 0
+-0.389211 0.0510782 0
+-0.264076 -0.137607 0
+-0.0302916 -0.284009 0
+0.250768 -0.353836 0
+0.518078 -0.345094 0
+0.728914 -0.279503 0
+0.865898 -0.188765 0
+0.934303 -0.102 0
+0.953604 -0.0380343 0
+0.947554 -0.00315595 0
+0.935927 0.0070175 0
+0.92956 0.00342397 0
+0.929137 -0.00125676 0
+0.927371 0.00298491 0
+0.913581 0.0203738 0
+0.879056 0.0482973 0
+0.821365 0.0786751 0
+0.746016 0.101314 0
+0.664983 0.107931 0
+0.592891 0.0951439 0
+0.542675 0.0651747 0
+0.522544 0.0242345 0
+0.535166 -0.0202777 0
+0.578688 -0.0621407 0
+0.648375 -0.0971951 0
+0.737775 -0.12286 0
+0.839152 -0.137325 0
+0.943857 -0.139511 0
+1.04349 -0.130051 0
+1.13209 -0.112477 0
+1.20845 -0.0932985 0
+1.27712 -0.0801468 0
+1.34672 -0.0784232 0
+1.4258 -0.0880919 0
+1.51778 -0.102627 0
+1.6177 -0.111273 0
+1.71278 -0.104099 0
+1.78764 -0.0777481 0
+1.83226 -0.0391532 0
+1.84978 -0.00522701 0
+1.86068 0.00180987 0
+1.90094 -0.0379915 0
+2.01419 -0.134381 0
+2.23943 -0.281318 0
+2.59782 -0.455673 0
+3.08234 -0.620957 0
+3.65382 -0.735449 0
+4.24503 -0.762801 0
+4.77284 -0.682331 0
+5.15563 -0.496012 0
+5.3319 -0.229946 0
+5.2752 0.0703622 0
+5.00152 0.349777 0
+4.56734 0.555783 0
+4.05881 0.650056 0
+3.5745 0.616665 0
+3.20581 0.465311 0
+3.0187 0.229174 0
+3.04098 -0.0421333 0
+3.25763 -0.293313 0
+3.61588 -0.475859 0
+4.03913 -0.55943 0
+4.44642 -0.538792 0
+4.77196 -0.4337 0
+4.97876 -0.281254 0
+5.06237 -0.123212 0
+5.04456 0.00698034 0
+4.96029 0.0924806 0
+4.84415 0.133897 0
+4.72125 0.143484 0
+4.60494 0.136432 0
+4.50005 0.123822 0
+4.40794 0.110148 0
+4.32992 0.095299 0
+4.26768 0.0784434 0
+4.2216 0.0606878 0
+4.1894 0.0448802 0
+4.1668 0.0332739 0
+4.14995 0.025306 0
+4.13801 0.0175002 0
+4.13372 0.00576847 0
+4.14151 -0.011508 0
+4.16415 -0.0319042 0
+4.20038 -0.0501572 0
+4.24519 -0.0614793 0
+4.29262 -0.0648042 0
+4.33954 -0.0637424 0
+4.38764 -0.0644263 0
+4.44215 -0.0713199 0
+4.50747 -0.0832707 0
+4.58153 -0.0919573 0
+4.65144 -0.0836669 0
+4.69271 -0.0438734 0
+4.67305 0.0368704 0
+4.56037 0.157435 0
+4.33371 0.302571 0
+3.99453 0.442795 0
+3.57455 0.539085 0
+3.13608 0.55308 0
+2.76106 0.461527 0
+2.52861 0.27079 0
+2.48593 0.0246654 0
+2.62283 -0.201207 0
+2.86253 -0.321062 0
+3.07804 -0.272254 0
+3.13395 -0.0478074 0
+2.94095 0.28757 0
+2.50051 0.61043 0
+1.91433 0.783204 0
+1.33887 0.72384 0
+0.87756 0.500499 0
+0.619757 0.493016 0
+0.382036 0.484455 0
+0.382036 0.911661 0
+-1.42239 -0.354402 0
+-2.82425 -0.63519 0
+-5.59824 -1.06765 0
+-4.79993 -1.6407 0
+-3.81923 -2.02183 0
+-2.90212 -1.93163 0
+-2.28296 -1.38895 0
+-2.07197 -0.613712 0
+-2.21884 0.105434 0
+-2.5498 0.537683 0
+-2.84929 0.589188 0
+-2.94531 0.314578 0
+-2.7639 -0.130282 0
+-2.33751 -0.563949 0
+-1.77346 -0.848019 0
+-1.20328 -0.923961 0
+-0.736118 -0.812202 0
+-0.431463 -0.584103 0
+-0.295044 -0.325128 0
+-0.291934 -0.105052 0
+-0.367216 0.0373065 0
+-0.465812 0.0954986 0
+-0.546746 0.0880105 0
+-0.590363 0.0471001 0
+-0.598776 0.00721504 0
+-0.59056 -0.00517073 0
+-0.591396 0.0212692 0
+-0.623333 0.0802947 0
+-0.69618 0.151583 0
+-0.804105 0.209299 0
+-0.928583 0.232471 0
+-1.04597 0.212595 0
+-1.13583 0.155095 0
+-1.18606 0.0745274 0
+-1.19316 -0.013119 0
+-1.15884 -0.0963962 0
+-1.08624 -0.169728 0
+-0.978351 -0.23069 0
+-0.839039 -0.276575 0
+-0.674792 -0.303696 0
+-0.494438 -0.310342 0
+-0.305815 -0.301038 0
+-0.110893 -0.288159 0
+0.0972348 -0.288212 0
+0.332448 -0.313574 0
+0.608386 -0.363966 0
+0.928962 -0.42314 0
+1.28184 -0.464092 0
+1.63946 -0.461648 0
+1.96874 -0.406968 0
+2.24653 -0.316879 0
+2.4743 -0.232938 0
+2.68577 -0.209601 0
+2.94324 -0.295413 0
+3.32268 -0.513763 0
+3.89113 -0.849715 0
+4.68292 -1.24741 0
+5.68151 -1.61949 0
+6.81291 -1.86679 0
+7.9538 -1.90364 0
+8.95359 -1.68206 0
+9.66544 -1.20781 0
+9.97892 -0.543372 0
+9.84592 0.203404 0
+9.29377 0.901974 0
+8.42234 1.42726 0
+7.38617 1.68626 0
+6.36546 1.63741 0
+5.53168 1.29913 0
+5.01444 0.746446 0
+4.87614 0.0961908 0
+5.10019 -0.517329 0
+5.59667 -0.972314 0
+6.22589 -1.18862 0
+6.83444 -1.14731 0
+7.29376 -0.892985 0
+7.52879 -0.516254 0
+7.52775 -0.122137 0
+7.33128 0.203481 0
+7.00788 0.415915 0
+6.62726 0.514551 0
+6.24249 0.528285 0
+5.88548 0.493472 0
+5.57286 0.436474 0
+5.31467 0.368361 0
+5.11896 0.291035 0
+4.98999 0.207441 0
+4.92338 0.127321 0
+4.90379 0.0644957 0
+4.90865 0.028432 0
+4.91691 0.0170757 0
+4.91752 0.0169065 0
+4.91255 0.0107598 0
+4.9128 -0.0117393 0
+4.92917 -0.0482504 0
+4.96536 -0.0863279 0
+5.01664 -0.112745 0
+5.07506 -0.123209 0
+5.13727 -0.125935 0
+5.20943 -0.136567 0
+5.3054 -0.167281 0
+5.4384 -0.216249 0
+5.60962 -0.263168 0
+5.79911 -0.273146 0
+5.96266 -0.207405 0
+6.03663 -0.0370951 0
+5.95065 0.24343 0
+5.64642 0.60681 0
+5.09991 0.989307 0
+4.34127 1.29774 0
+3.46416 1.4302 0
+2.61557 1.31012 0
+1.9613 0.925061 0
+1.63223 0.35374 0
+1.66881 -0.23778 0
+1.98887 -0.641124 0
+2.40056 -0.683939 0
+2.66546 -0.312705 0
+2.59262 0.360405 0
+2.12287 1.08019 0
+1.35771 1.54837 0
+0.507168 1.57438 0
+-0.216456 1.22412 0
+-0.31108 0.900822 0
+-0.271552 0.586926 0
+-0.271552 0.921462 0
+-2.0941 -0.50334 0
+-4.17064 -0.89784 0
+-8.3036 -1.50367 0
+-7.64171 -2.30258 0
+-6.85985 -2.80367 0
+-6.21019 -2.58125 0
+-5.91174 -1.68734 0
+-6.02286 -0.502541 0
+-6.41223 0.494862 0
+-6.82501 0.950529 0
+-6.99981 0.764053 0
+-6.77695 0.0917787 0
+-6.15199 -0.755177 0
+-5.26023 -1.45563 0
+-4.31023 -1.79795 0
+-3.50247 -1.73165 0
+-2.96793 -1.34666 0
+-2.7444 -0.80756 0
+-2.78851 -0.280935 0
+-3.0084 0.114929 0
+-3.29959 0.32858 0
+-3.57266 0.368654 0
+-3.76918 0.284609 0
+-3.86701 0.145016 0
+-3.87757 0.0178575 0
+-3.8366 -0.046053 0
+-3.79015 -0.0250896 0
+-3.77866 0.0688913 0
+-3.82393 0.196941 0
+-3.92393 0.309389 0
+-4.05748 0.366102 0
+-4.19608 0.351283 0
+-4.31648 0.27559 0
+-4.40723 0.165365 0
+-4.46658 0.0463156 0
+-4.49475 -0.0681278 0
+-4.48687 -0.177523 0
+-4.43152 -0.28595 0
+-4.31565 -0.392348 0
+-4.13145 -0.48781 0
+-3.87952 -0.562181 0
+-3.56557 -0.614904 0
+-3.19244 -0.661194 0
+-2.75347 -0.727095 0
+-2.23269 -0.834258 0
+-1.61374 -0.982823 0
+-0.893162 -1.14362 0
+-0.0902665 -1.26689 0
+0.753729 -1.30555 0
+1.58927 -1.24242 0
+2.37997 -1.10747 0
+3.12258 -0.975456 0
+3.85638 -0.943303 0
+4.65666 -1.0956 0
+5.61352 -1.47053 0
+6.80178 -2.03789 0
+8.25073 -2.69627 0
+9.92255 -3.29122 0
+11.7064 -3.65055 0
+13.4314 -3.62852 0
+14.8963 -3.1469 0
+15.9095 -2.2209 0
+16.3282 -0.962004 0
+16.0895 0.44219 0
+15.2259 1.76561 0
+13.8638 2.78948 0
+12.2042 3.34589 0
+10.4906 3.35105 0
+8.96653 2.82326 0
+7.83092 1.88211 0
+7.19914 0.728016 0
+7.07862 -0.396764 0
+7.36765 -1.2613 0
+7.88153 -1.70244 0
+8.40171 -1.66745 0
+8.73407 -1.22528 0
+8.75653 -0.538665 0
+8.43989 0.19456 0
+7.83651 0.806911 0
+7.04612 1.20636 0
+6.17652 1.3842 0
+5.31638 1.38847 0
+4.52746 1.28244 0
+3.85148 1.11249 0
+3.31982 0.900062 0
+2.95546 0.655438 0
+2.76541 0.39752 0
+2.73071 0.162062 0
+2.80417 -0.00893469 0
+2.92185 -0.089211 0
+3.02424 -0.085274 0
+3.07641 -0.0352327 0
+3.07603 0.0111726 0
+3.04543 0.0188898 0
+3.01374 -0.0165359 0
+3.00043 -0.0729866 0
+3.00958 -0.121873 0
+3.03665 -0.150252 0
+3.08115 -0.170416 0
+3.15581 -0.211198 0
+3.28538 -0.296828 0
+3.49519 -0.426042 0
+3.79487 -0.562831 0
+4.16455 -0.642801 0
+4.54857 -0.591414 0
+4.85854 -0.347046 0
+4.98536 0.116629 0
+4.82043 0.771752 0
+4.28556 1.52419 0
+3.36753 2.21577 0
+2.14661 2.65113 0
+0.802251 2.65448 0
+-0.418323 2.14564 0
+-1.26998 1.20541 0
+-1.59835 0.0905953 0
+-1.41029 -0.829185 0
+-0.887564 -1.20666 0
+-0.325386 -0.87488 0
+-0.0132758 0.0482971 0
+-0.109974 1.17689 0
+-0.575124 2.01352 0
+-1.19441 2.19367 0
+-1.67362 1.70333 0
+-1.18879 0.939086 0
+-0.717624 0.357589 0
+-0.717624 0.629689 0
+-2.54379 -0.58087 0
+-5.09124 -1.03033 0
+-10.1956 -1.71406 0
+-9.90096 -2.59721 0
+-9.62469 -3.07991 0
+-9.55244 -2.65346 0
+-9.79947 -1.44025 0
+-10.3086 0.00661547 0
+-10.8527 1.03906 0
+-11.1335 1.23142 0
+-10.9182 0.548842 0
+-10.1444 -0.68197 0
+-8.94547 -1.95403 0
+-7.59272 -2.80831 0
+-6.38868 -3.00191 0
+-5.56362 -2.55662 0
+-5.21632 -1.69387 0
+-5.31237 -0.711412 0
+-5.72558 0.132366 0
+-6.29446 0.68391 0
+-6.86983 0.904049 0
+-7.34247 0.841398 0
+-7.65263 0.594863 0
+-7.78814 0.280628 0
+-7.77677 0.00658066 0
+-7.67414 -0.148581 0
+-7.54732 -0.151807 0
+-7.45568 -0.0226463 0
+-7.43449 0.17585 0
+-7.48803 0.36303 0
+-7.59583 0.474013 0
+-7.72877 0.484326 0
+-7.86559 0.412505 0
+-8.00007 0.299953 0
+-8.13522 0.181571 0
+-8.26944 0.0661962 0
+-8.38514 -0.0617208 0
+-8.44798 -0.223 0
+-8.41735 -0.42288 0
+-8.2608 -0.644245 0
+-7.96313 -0.859744 0
+-7.52431 -1.05362 0
+-6.94863 -1.23677 0
+-6.23305 -1.44256 0
+-5.3636 -1.7036 0
+-4.32326 -2.02305 0
+-3.10711 -2.35965 0
+-1.73463 -2.63926 0
+-0.249699 -2.79035 0
+1.29408 -2.78606 0
+2.85665 -2.66992 0
+4.43169 -2.55036 0
+6.05321 -2.56469 0
+7.78485 -2.82711 0
+9.69507 -3.38063 0
+11.8265 -4.16917 0
+14.1686 -5.03822 0
+16.6418 -5.76435 0
+19.0988 -6.10737 0
+21.3431 -5.87275 0
+23.1633 -4.96694 0
+24.37 -3.42747 0
+24.8276 -1.4194 0
+24.4753 0.794574 0
+23.3396 2.90135 0
+21.5367 4.59249 0
+19.265 5.61766 0
+16.7853 5.83087 0
+14.3838 5.22483 0
+12.3236 3.94231 0
+10.7929 2.25883 0
+9.8616 0.534567 0
+9.46295 -0.862594 0
+9.40945 -1.64888 0
+9.44548 -1.70341 0
+9.32103 -1.10078 0
+8.86035 -0.0779113 0
+7.99992 1.05505 0
+6.78478 2.02212 0
+5.33144 2.65976 0
+3.78039 2.93531 0
+2.2606 2.90832 0
+0.876546 2.66655 0
+-0.288091 2.27718 0
+-1.16536 1.77738 0
+-1.70894 1.19907 0
+-1.91129 0.599909 0
+-1.81971 0.0705262 0
+-1.53575 -0.292847 0
+-1.19071 -0.434214 0
+-0.905189 -0.370751 0
+-0.752076 -0.188306 0
+-0.741304 0.000439065 0
+-0.832616 0.110239 0
+-0.966357 0.117239 0
+-1.09344 0.0541311 0
+-1.18891 -0.0263768 0
+-1.24564 -0.0934909 0
+-1.25737 -0.15866 0
+-1.20491 -0.263628 0
+-1.05524 -0.446472 0
+-0.773549 -0.707707 0
+-0.341053 -0.995302 0
+0.230001 -1.21383 0
+0.888466 -1.24986 0
+1.54316 -1.00172 0
+2.06736 -0.407548 0
+2.31159 0.527535 0
+2.13089 1.70492 0
+1.42917 2.91749 0
+0.211885 3.86843 0
+-1.37673 4.24311 0
+-3.05982 3.82874 0
+-4.49323 2.63882 0
+-5.37661 0.973982 0
+-5.5674 -0.63839 0
+-5.14205 -1.63201 0
+-4.36645 -1.65047 0
+-3.57995 -0.7382 0
+-3.04409 0.641032 0
+-2.83067 1.8001 0
+-2.80529 2.16829 0
+-2.71095 1.60898 0
+-1.56959 0.542176 0
+-0.780296 -0.0803909 0
+-0.780296 0.289113 0
+-2.70953 -0.582171 0
+-5.44876 -1.0226 0
+-10.9673 -1.67909 0
+-11.0762 -2.48829 0
+-11.3457 -2.8104 0
+-11.851 -2.14817 0
+-12.5584 -0.732741 0
+-13.2804 0.728697 0
+-13.7243 1.48296 0
+-13.6146 1.12183 0
+-12.8251 -0.240595 0
+-11.4502 -2.05675 0
+-9.78202 -3.62218 0
+-8.20431 -4.38594 0
+-7.05706 -4.14908 0
+-6.53128 -3.08231 0
+-6.63409 -1.59097 0
+-7.22415 -0.121255 0
+-8.08652 0.994834 0
+-9.00729 1.60477 0
+-9.82145 1.7183 0
+-10.4292 1.4492 0
+-10.791 0.956812 0
+-10.9161 0.405803 0
+-10.8504 -0.0590316 0
+-10.6653 -0.333546 0
+-10.4429 -0.374156 0
+-10.2564 -0.20904 0
+-10.1523 0.0718408 0
+-10.1414 0.352247 0
+-10.2057 0.538464 0
+-10.3177 0.596382 0
+-10.4599 0.554854 0
+-10.6331 0.473205 0
+-10.8459 0.394514 0
+-11.0955 0.315871 0
+-11.3514 0.194301 0
+-11.5558 -0.0185159 0
+-11.6393 -0.339252 0
+-11.5435 -0.740003 0
+-11.2356 -1.16748 0
+-10.7093 -1.5798 0
+-9.97132 -1.97469 0
+-9.02487 -2.3889 0
+-7.86098 -2.86738 0
+-6.46252 -3.42139 0
+-4.8181 -4.00395 0
+-2.935 -4.52222 0
+-0.84093 -4.88429 0
+1.42815 -5.055 0
+3.84666 -5.08828 0
+6.4123 -5.11586 0
+9.1443 -5.29654 0
+12.0667 -5.74934 0
+15.1842 -6.49793 0
+18.4601 -7.44491 0
+21.804 -8.38201 0
+25.0727 -9.0328 0
+28.0846 -9.11915 0
+30.6487 -8.43665 0
+32.5977 -6.91575 0
+33.8125 -4.64211 0
+34.2219 -1.82868 0
+33.7937 1.22296 0
+32.5329 4.1623 0
+30.4943 6.63113 0
+27.8056 8.30656 0
+24.6816 8.95489 0
+21.4077 8.49881 0
+18.293 7.05713 0
+15.6079 4.94393 0
+13.5203 2.62231 0
+12.0487 0.609056 0
+11.0564 -0.656512 0
+10.2935 -0.940501 0
+9.47742 -0.28458 0
+8.37953 1.02005 0
+6.8854 2.54925 0
+5.00726 3.90033 0
+2.85458 4.81251 0
+0.585905 5.20404 0
+-1.63167 5.12595 0
+-3.64282 4.67775 0
+-5.30916 3.94357 0
+-6.51524 2.9835 0
+-7.18705 1.87092 0
+-7.32041 0.733311 0
+-7.0019 -0.247942 0
+-6.40238 -0.892322 0
+-5.73572 -1.10084 0
+-5.19601 -0.91042 0
+-4.90153 -0.482739 0
+-4.87166 -0.0293907 0
+-5.04487 0.283478 0
+-5.3235 0.395905 0
+-5.61877 0.349436 0
+-5.87406 0.228949 0
+-6.06152 0.0939958 0
+-6.16327 -0.056883 0
+-6.15471 -0.272164 0
+-6.00119 -0.599966 0
+-5.66782 -1.04105 0
+-5.13374 -1.52935 0
+-4.40244 -1.94511 0
+-3.50649 -2.14578 0
+-2.51188 -1.9963 0
+-1.52575 -1.39366 0
+-0.702725 -0.295466 0
+-0.234998 1.23721 0
+-0.311418 2.99393 0
+-1.0469 4.60392 0
+-2.4075 5.60372 0
+-4.173 5.59425 0
+-5.97155 4.43737 0
+-7.38874 2.39118 0
+-8.11194 0.0848148 0
+-8.04451 -1.69944 0
+-7.33173 -2.36325 0
+-6.28135 -1.78858 0
+-5.21634 -0.423971 0
+-4.33499 0.918749 0
+-3.65145 1.48474 0
+-3.05084 1.00838 0
+-1.50011 -0.0595187 0
+-0.626741 -0.496646 0
+-0.626741 0.0765026 0
+-2.63239 -0.532655 0
+-5.30759 -0.921486 0
+-10.7083 -1.48102 0
+-11.0827 -2.1139 0
+-11.688 -2.20502 0
+-12.4837 -1.35242 0
+-13.3031 0.0867251 0
+-13.8751 1.30067 0
+-13.9135 1.52146 0
+-13.2417 0.450103 0
+-11.8891 -1.5931 0
+-10.1093 -3.83657 0
+-8.30423 -5.42714 0
+-6.88796 -5.80214 0
+-6.14827 -4.8887 0
+-6.16778 -3.06271 0
+-6.83019 -0.928484 0
+-7.89483 0.943466 0
+-9.09422 2.19431 0
+-10.2097 2.72031 0
+-11.1038 2.61249 0
+-11.7158 2.06132 0
+-12.0405 1.28156 0
+-12.1084 0.473771 0
+-11.9751 -0.192242 0
+-11.7151 -0.593424 0
+-11.4128 -0.676387 0
+-11.1463 -0.47548 0
+-10.9689 -0.105535 0
+-10.8977 0.281182 0
+-10.9191 0.559886 0
+-11.0077 0.685135 0
+-11.1491 0.696343 0
+-11.3476 0.671765 0
+-11.6147 0.661685 0
+-11.9456 0.646862 0
+-12.3011 0.549896 0
+-12.6083 0.288729 0
+-12.7801 -0.167364 0
+-12.7422 -0.777787 0
+-12.4518 -1.45781 0
+-11.8993 -2.13219 0
+-11.095 -2.77887 0
+-10.0495 -3.43436 0
+-8.75942 -4.15734 0
+-7.20655 -4.97416 0
+-5.36723 -5.84317 0
+-3.22405 -6.66528 0
+-0.769859 -7.33836 0
+1.99821 -7.82293 0
+5.08681 -8.17673 0
+8.50556 -8.53445 0
+12.2524 -9.04317 0
+16.2905 -9.78734 0
+20.5301 -10.7373 0
+24.8228 -11.7374 0
+28.9741 -12.5331 0
+32.767 -12.8255 0
+35.9954 -12.3474 0
+38.5037 -10.9447 0
+40.2248 -8.63662 0
+41.1881 -5.60522 0
+41.4546 -2.09502 0
+41.0503 1.6274 0
+39.9415 5.27127 0
+38.0632 8.50949 0
+35.3965 10.9734 0
+32.0494 12.3021 0
+28.2595 12.2889 0
+24.3481 10.9686 0
+20.6517 8.64046 0
+17.4408 5.8333 0
+14.8481 3.20175 0
+12.8326 1.35904 0
+11.1995 0.692724 0
+9.67315 1.24183 0
+7.99325 2.70002 0
+5.99312 4.54946 0
+3.6336 6.25991 0
+0.990554 7.45562 0
+-1.78397 7.97862 0
+-4.50157 7.84361 0
+-6.96465 7.14087 0
+-8.98401 5.96297 0
+-10.3995 4.39905 0
+-11.1123 2.58378 0
+-11.1226 0.743634 0
+-10.5525 -0.817992 0
+-9.63305 -1.81177 0
+-8.6482 -2.08565 0
+-7.85451 -1.70407 0
+-7.41024 -0.926975 0
+-7.34604 -0.093564 0
+-7.58626 0.52373 0
+-8.00322 0.8129 0
+-8.47253 0.818774 0
+-8.90408 0.660529 0
+-9.24318 0.433115 0
+-9.45431 0.154274 0
+-9.50598 -0.220478 0
+-9.36717 -0.738747 0
+-9.01384 -1.39436 0
+-8.43563 -2.10754 0
+-7.63587 -2.74485 0
+-6.62716 -3.15446 0
+-5.4336 -3.18985 0
+-4.10887 -2.71837 0
+-2.76558 -1.63874 0
+-1.59369 0.065335 0
+-0.840408 2.24066 0
+-0.739271 4.50279 0
+-1.40849 6.27294 0
+-2.76671 6.95249 0
+-4.5179 6.18856 0
+-6.22782 4.10111 0
+-7.46823 1.32522 0
+-7.96614 -1.20152 0
+-7.68934 -2.64005 0
+-6.82863 -2.64929 0
+-5.68984 -1.56276 0
+-4.55541 -0.215674 0
+-3.59059 0.519923 0
+-2.84591 0.263697 0
+-1.24166 -0.545104 0
+-0.474744 -0.714572 0
+-0.474744 0.0388857 0
+-2.40704 -0.467322 0
+-4.8483 -0.794225 0
+-9.76291 -1.24337 0
+-10.1857 -1.69106 0
+-10.7995 -1.59122 0
+-11.4742 -0.677714 0
+-11.9743 0.586857 0
+-12.034 1.3605 0
+-11.4628 0.950309 0
+-10.2388 -0.773872 0
+-8.54664 -3.28523 0
+-6.73659 -5.64657 0
+-5.2162 -6.94748 0
+-4.3163 -6.702 0
+-4.18727 -5.01768 0
+-4.769 -2.48093 0
+-5.84132 0.143903 0
+-7.12236 2.22456 0
+-8.36375 3.43575 0
+-9.40409 3.7607 0
+-10.1726 3.38102 0
+-10.6615 2.55031 0
+-10.8945 1.51462 0
+-10.9077 0.486968 0
+-10.7459 -0.353934 0
+-10.4667 -0.872588 0
+-10.1397 -1.00335 0
+-9.8366 -0.778514 0
+-9.61352 -0.328563 0
+-9.49624 0.163952 0
+-9.47992 0.543623 0
+-9.54499 0.750264 0
+-9.67799 0.829389 0
+-9.8808 0.874626 0
+-10.1603 0.941272 0
+-10.5064 0.992983 0
+-10.8753 0.918878 0
+-11.1923 0.605773 0
+-11.3716 0.011983 0
+-11.3421 -0.807287 0
+-11.0642 -1.73556 0
+-10.5322 -2.66422 0
+-9.76058 -3.55039 0
+-8.76577 -4.4291 0
+-7.54872 -5.37433 0
+-6.08834 -6.43446 0
+-4.34569 -7.58575 0
+-2.27322 -8.73766 0
+0.178465 -9.78993 0
+3.05813 -10.7025 0
+6.40873 -11.5272 0
+10.251 -12.3766 0
+14.5562 -13.3482 0
+19.2201 -14.4511 0
+24.0543 -15.5713 0
+28.8029 -16.4859 0
+33.1795 -16.9094 0
+36.9121 -16.5579 0
+39.7888 -15.2239 0
+41.7078 -12.8635 0
+42.7378 -9.66637 0
+43.1388 -6.006 0
+43.1707 -2.12676 0
+42.9431 1.8551 0
+42.3662 5.84835 0
+41.1975 9.67835 0
+39.1981 12.9729 0
+36.3367 15.1636 0
+32.7719 15.8537 0
+28.7882 14.9524 0
+24.7293 12.6993 0
+20.9227 9.64005 0
+17.5976 6.52685 0
+14.827 4.12972 0
+12.5185 3.00129 0
+10.4641 3.29626 0
+8.42508 4.73912 0
+6.21401 6.76059 0
+3.74406 8.72991 0
+1.03721 10.1625 0
+-1.79569 10.8116 0
+-4.58429 10.6322 0
+-7.12641 9.68303 0
+-9.21446 8.05105 0
+-10.6675 5.85214 0
+-11.3723 3.28856 0
+-11.3245 0.695831 0
+-10.6517 -1.4907 0
+-9.59847 -2.86501 0
+-8.46719 -3.2169 0
+-7.5349 -2.63634 0
+-6.97942 -1.48243 0
+-6.84755 -0.225417 0
+-7.07399 0.750193 0
+-7.53308 1.27202 0
+-8.09195 1.37766 0
+-8.64158 1.21018 0
+-9.10201 0.893559 0
+-9.41388 0.466155 0
+-9.5316 -0.102741 0
+-9.42486 -0.845468 0
+-9.08391 -1.7353 0
+-8.51887 -2.67256 0
+-7.74764 -3.51607 0
+-6.77816 -4.12393 0
+-5.60126 -4.36673 0
+-4.20926 -4.11036 0
+-2.64029 -3.2077 0
+-1.02518 -1.54976 0
+0.399941 0.815551 0
+1.34152 3.56122 0
+1.55049 6.06397 0
+0.935331 7.56765 0
+-0.371814 7.49571 0
+-2.0359 5.76519 0
+-3.62488 2.91421 0
+-4.75691 -0.0694909 0
+-5.22492 -2.17203 0
+-5.04618 -2.82803 0
+-4.42054 -2.18839 0
+-3.62647 -1.00974 0
+-2.91268 -0.193871 0
+-2.44021 -0.208774 0
+-1.04158 -0.692418 0
+-0.446939 -0.686098 0
+-0.446939 0.126149 0
+-2.13172 -0.413434 0
+-4.27293 -0.695304 0
+-8.55003 -1.0705 0
+-8.831 -1.41007 0
+-9.1662 -1.256 0
+-9.37892 -0.464958 0
+-9.24603 0.454015 0
+-8.59944 0.713949 0
+-7.41232 -0.236777 0
+-5.83275 -2.35341 0
+-4.1505 -4.96744 0
+-2.71047 -7.08658 0
+-1.80487 -7.85305 0
+-1.58315 -6.92368 0
+-2.01353 -4.58726 0
+-2.91159 -1.58283 0
+-4.02137 1.25372 0
+-5.10908 3.3123 0
+-6.02615 4.35286 0
+-6.72052 4.45509 0
+-7.20598 3.86651 0
+-7.5189 2.86325 0
+-7.68799 1.68374 0
+-7.7267 0.5257 0
+-7.64268 -0.437924 0
+-7.45305 -1.06219 0
+-7.19439 -1.26199 0
+-6.92041 -1.05246 0
+-6.68712 -0.561819 0
+-6.53419 0.0110518 0
+-6.47549 0.484946 0
+-6.50531 0.780118 0
+-6.61347 0.937577 0
+-6.79433 1.0555 0
+-7.04108 1.18805 0
+-7.33118 1.2831 0
+-7.61729 1.20502 0
+-7.83356 0.822072 0
+-7.91355 0.0920088 0
+-7.80858 -0.912226 0
+-7.49707 -2.04703 0
+-6.98286 -3.17839 0
+-6.28471 -4.2485 0
+-5.42072 -5.29306 0
+-4.39233 -6.40267 0
+-3.17424 -7.6525 0
+-1.71416 -9.04577 0
+0.0593399 -10.5111 0
+2.22643 -11.957 0
+4.86515 -13.3411 0
+8.0351 -14.697 0
+11.7507 -16.092 0
+15.9484 -17.5458 0
+20.465 -18.9675 0
+25.0429 -20.149 0
+29.3661 -20.8089 0
+33.1145 -20.6577 0
+36.015 -19.4582 0
+37.8806 -17.0893 0
+38.6548 -13.6375 0
+38.5214 -9.53276 0
+38.0675 -5.55187 0
+37.7943 -1.85345 0
+37.8974 1.75215 0
+38.2253 5.52062 0
+38.32 9.58372 0
+37.6451 13.6479 0
+36.068 16.7409 0
+33.6714 18.2504 0
+30.6392 17.9845 0
+27.2217 16.1169 0
+23.7013 13.1605 0
+20.3359 9.89233 0
+17.2965 7.16913 0
+14.632 5.66578 0
+12.2787 5.64961 0
+10.1067 6.9112 0
+7.97805 8.88928 0
+5.79264 10.9154 0
+3.51205 12.4431 0
+1.16524 13.1584 0
+-1.1574 12.9549 0
+-3.31799 11.8436 0
+-5.15336 9.88644 0
+-6.50626 7.20506 0
+-7.2639 4.04622 0
+-7.39589 0.827829 0
+-6.97774 -1.90883 0
+-6.18502 -3.65771 0
+-5.25244 -4.14947 0
+-4.41025 -3.47851 0
+-3.82469 -2.06797 0
+-3.56814 -0.481951 0
+-3.6267 0.808762 0
+-3.93143 1.57676 0
+-4.3907 1.83695 0
+-4.90898 1.72848 0
+-5.3931 1.37769 0
+-5.7559 0.828966 0
+-5.92526 0.0666258 0
+-5.85747 -0.913251 0
+-5.54695 -2.0458 0
+-5.02302 -3.19648 0
+-4.32982 -4.20926 0
+-3.49627 -4.95747 0
+-2.51342 -5.34957 0
+-1.33957 -5.28419 0
+0.0586539 -4.60591 0
+1.6451 -3.1362 0
+3.2688 -0.808134 0
+4.6706 2.15943 0
+5.55282 5.18176 0
+5.68692 7.43356 0
+5.01086 8.17178 0
+3.66929 7.10676 0
+1.97593 4.60757 0
+0.3114 1.59504 0
+-1.0031 -0.857526 0
+-1.80565 -2.02548 0
+-2.12691 -1.86713 0
+-2.14631 -0.990342 0
+-2.09626 -0.243928 0
+-2.15963 -0.145402 0
+-1.03268 -0.457816 0
+-0.557798 -0.477801 0
+-0.557798 0.249233 0
+-1.87747 -0.382745 0
+-3.73849 -0.649431 0
+-7.41777 -1.01228 0
+-7.46232 -1.36549 0
+-7.38155 -1.33675 0
+-6.99474 -0.851736 0
+-6.15593 -0.384754 0
+-4.85203 -0.589908 0
+-3.2412 -1.84758 0
+-1.61075 -3.98382 0
+-0.278128 -6.30004 0
+0.516788 -7.88148 0
+0.684399 -8.02065 0
+0.301333 -6.5406 0
+-0.430305 -3.8556 0
+-1.26262 -0.750497 0
+-1.9896 1.98072 0
+-2.50733 3.83006 0
+-2.82305 4.66859 0
+-3.01559 4.64765 0
+-3.17547 4.0264 0
+-3.35793 3.04572 0
+-3.56688 1.8927 0
+-3.76606 0.724893 0
+-3.90346 -0.300506 0
+-3.93723 -1.02841 0
+-3.85547 -1.34373 0
+-3.68352 -1.2244 0
+-3.47464 -0.770683 0
+-3.28828 -0.175291 0
+-3.16896 0.36564 0
+-3.13746 0.748625 0
+-3.19449 0.994628 0
+-3.32686 1.18789 0
+-3.50791 1.36912 0
+-3.69527 1.47048 0
+-3.83468 1.34445 0
+-3.87296 0.860367 0
+-3.77256 -0.00837158 0
+-3.51821 -1.16655 0
+-3.11367 -2.45155 0
+-2.57407 -3.71796 0
+-1.91815 -4.90439 0
+-1.15919 -6.05199 0
+-0.293401 -7.26843 0
+0.710136 -8.656 0
+1.91101 -10.2466 0
+3.38824 -11.9883 0
+5.22481 -13.7935 0
+7.49018 -15.6064 0
+10.2194 -17.4262 0
+13.3872 -19.2597 0
+16.8828 -21.0412 0
+20.502 -22.5867 0
+23.9694 -23.6162 0
+26.9862 -23.8256 0
+29.2872 -22.9585 0
+30.6798 -20.8506 0
+31.0508 -17.4601 0
+30.3547 -12.9412 0
+28.7464 -7.92436 0
+27.3079 -4.11324 0
+26.7254 -1.27077 0
+27.2177 1.25997 0
+28.6162 4.12222 0
+30.2984 7.9016 0
+31.3003 12.6461 0
+31.5628 16.4785 0
+31.1234 18.6899 0
+29.9859 19.122 0
+28.1827 17.9202 0
+25.8251 15.5182 0
+23.1037 12.6137 0
+20.2472 10.0257 0
+17.4678 8.4452 0
+14.9198 8.19768 0
+12.6806 9.15038 0
+10.7528 10.8171 0
+9.07997 12.5883 0
+7.57331 13.9498 0
+6.14477 14.587 0
+4.73701 14.3627 0
+3.3416 13.2391 0
+2.00091 11.2271 0
+0.795749 8.41023 0
+-0.177128 5.01911 0
+-0.833309 1.48402 0
+-1.12888 -1.61324 0
+-1.0789 -3.70769 0
+-0.75699 -4.47136 0
+-0.275633 -3.95986 0
+0.242624 -2.58622 0
+0.689122 -0.928438 0
+0.982304 0.51559 0
+1.07463 1.48444 0
+0.959715 1.95187 0
+0.678756 2.00944 0
+0.318103 1.73835 0
+-0.0084946 1.15557 0
+-0.189991 0.24813 0
+-0.149439 -0.953795 0
+0.135442 -2.33067 0
+0.630539 -3.69157 0
+1.26493 -4.84365 0
+1.96727 -5.6598 0
+2.70479 -6.08708 0
+3.5032 -6.0826 0
+4.42963 -5.53233 0
+5.53934 -4.2459 0
+6.81118 -2.07997 0
+8.10833 0.862281 0
+9.19114 4.09896 0
+9.78353 6.84118 0
+9.66837 8.28693 0
+8.77372 8.00142 0
+7.21335 6.16795 0
+5.26059 3.5478 0
+3.25935 1.14371 0
+1.505 -0.271123 0
+0.14786 -0.509992 0
+-0.832932 -0.00954879 0
+-1.57089 0.494027 0
+-2.19534 0.479047 0
+-1.22853 0.0499528 0
+-0.757626 -0.209896 0
+-0.757626 0.329389 0
+-1.67873 -0.372616 0
+-3.32849 -0.65139 0
+-6.56592 -1.05949 0
+-6.39077 -1.54063 0
+-5.93427 -1.79323 0
+-5.04214 -1.74383 0
+-3.67263 -1.75422 0
+-1.97035 -2.29215 0
+-0.245437 -3.57245 0
+1.13862 -5.36785 0
+1.90948 -7.07087 0
+1.98855 -7.96053 0
+1.50813 -7.54021 0
+0.746352 -5.7788 0
+0.0168765 -3.12612 0
+-0.440769 -0.292841 0
+-0.532408 2.07237 0
+-0.320085 3.61775 0
+0.026981 4.32154 0
+0.315683 4.35897 0
+0.406127 3.93597 0
+0.250611 3.20125 0
+-0.110968 2.2543 0
+-0.581824 1.19577 0
+-1.04459 0.162283 0
+-1.39395 -0.679037 0
+-1.56399 -1.17368 0
+-1.54576 -1.24261 0
+-1.38612 -0.930315 0
+-1.16563 -0.395761 0
+-0.966357 0.166383 0
+-0.845741 0.628028 0
+-0.825044 0.973952 0
+-0.889151 1.25202 0
+-0.992325 1.47232 0
+-1.06993 1.54811 0
+-1.05774 1.33228 0
+-0.913208 0.715863 0
+-0.626409 -0.295146 0
+-0.213566 -1.57937 0
+0.299974 -2.96506 0
+0.893714 -4.31167 0
+1.55677 -5.56742 0
+2.2891 -6.78429 0
+3.10654 -8.08583 0
+4.04766 -9.59707 0
+5.17294 -11.3718 0
+6.55107 -13.3663 0
+8.23693 -15.4793 0
+10.2499 -17.6193 0
+12.5563 -19.7325 0
+15.0558 -21.7591 0
+17.5777 -23.563 0
+19.8954 -24.9043 0
+21.7645 -25.4851 0
+22.9738 -25.0348 0
+23.3904 -23.375 0
+22.98 -20.4401 0
+21.7817 -16.2617 0
+19.7808 -10.9402 0
+16.7492 -4.89267 0
+14.6121 -1.9761 0
+13.8735 -0.532079 0
+14.5946 0.538914 0
+16.7431 1.9738 0
+19.869 4.7758 0
+22.3141 10.2011 0
+24.4632 14.3295 0
+26.273 16.8802 0
+27.4702 17.9248 0
+27.7777 17.6128 0
+27.0489 16.247 0
+25.3338 14.3289 0
+22.8743 12.4853 0
+20.0423 11.2772 0
+17.2464 10.9936 0
+14.8339 11.5629 0
+13.016 12.635 0
+11.8327 13.7716 0
+11.168 14.6145 0
+10.805 14.95 0
+10.4976 14.6701 0
+10.0344 13.7023 0
+9.28164 11.9799 0
+8.20494 9.48695 0
+6.87299 6.35109 0
+5.44164 2.91539 0
+4.11638 -0.287975 0
+3.09873 -2.69002 0
+2.53217 -3.90479 0
+2.46496 -3.89264 0
+2.83917 -2.96042 0
+3.5066 -1.59586 0
+4.26725 -0.245052 0
+4.92313 0.828576 0
+5.33421 1.5408 0
+5.45755 1.88612 0
+5.35286 1.84305 0
+5.1524 1.35605 0
+5.00948 0.391062 0
+5.04742 -0.991725 0
+5.32466 -2.60789 0
+5.82215 -4.18906 0
+6.45446 -5.47594 0
+7.1038 -6.30914 0
+7.67035 -6.65362 0
+8.11974 -6.53199 0
+8.50237 -5.91495 0
+8.92791 -4.67143 0
+9.50139 -2.65345 0
+10.2489 0.114782 0
+11.0687 3.2792 0
+11.7346 6.17529 0
+11.9587 8.06278 0
+11.4957 8.46445 0
+10.2477 7.41598 0
+8.32096 5.47451 0
+5.99843 3.46624 0
+3.63295 2.09436 0
+1.51401 1.60896 0
+-0.219346 1.7238 0
+-1.56904 1.84372 0
+-2.57615 1.48615 0
+-1.56236 0.65214 0
+-0.978812 0.00822904 0
+-0.978812 0.325739 0
+-1.53858 -0.372108 0
+-3.05597 -0.67692 0
+-6.03601 -1.16189 0
+-5.74023 -1.83639 0
+-5.08206 -2.45138 0
+-3.94687 -2.87899 0
+-2.38297 -3.31808 0
+-0.643817 -4.03126 0
+0.882028 -5.09825 0
+1.82755 -6.31334 0
+2.00765 -7.25094 0
+1.49808 -7.45094 0
+0.59824 -6.64036 0
+-0.294285 -4.88627 0
+-0.833748 -2.58664 0
+-0.839953 -0.286626 0
+-0.340538 1.57297 0
+0.463744 2.81349 0
+1.29021 3.4951 0
+1.88138 3.76783 0
+2.08359 3.73381 0
+1.87162 3.41327 0
+1.32584 2.80013 0
+0.588903 1.93275 0
+-0.175056 0.926281 0
+-0.814034 -0.0400252 0
+-1.21919 -0.768487 0
+-1.3506 -1.11118 0
+-1.24498 -1.03591 0
+-0.99663 -0.644085 0
+-0.718681 -0.111536 0
+-0.503247 0.41263 0
+-0.39549 0.866236 0
+-0.385746 1.24232 0
+-0.417957 1.50458 0
+-0.412519 1.54272 0
+-0.298332 1.21814 0
+-0.0405124 0.458089 0
+0.35218 -0.687795 0
+0.844184 -2.07133 0
+1.40048 -3.52132 0
+2.00501 -4.91616 0
+2.66273 -6.22509 0
+3.394 -7.5155 0
+4.23264 -8.9244 0
+5.22753 -10.5919 0
+6.43731 -12.5815 0
+7.91099 -14.8399 0
+9.6599 -17.2281 0
+11.6339 -19.5932 0
+13.7112 -21.8097 0
+15.7039 -23.7517 0
+17.3801 -25.2392 0
+18.5031 -26.0272 0
+18.8812 -25.8631 0
+18.4122 -24.5657 0
+17.1055 -22.0681 0
+15.0834 -18.418 0
+12.5879 -13.7662 0
+9.91147 -8.26373 0
+6.21999 -1.20116 0
+4.41641 -0.172504 0
+3.90776 -0.0233998 0
+4.42293 0.0237639 0
+6.22747 0.169277 0
+9.88332 1.11997 0
+13.0368 7.04761 0
+16.6727 10.6936 0
+20.3773 13.1756 0
+23.5736 14.7286 0
+25.7164 15.4702 0
+26.4285 15.5349 0
+25.6166 15.1408 0
+23.5084 14.5935 0
+20.5955 14.1901 0
+17.5014 14.0878 0
+14.8181 14.2462 0
+12.9601 14.4931 0
+12.078 14.6536 0
+12.0546 14.638 0
+12.5708 14.4338 0
+13.2127 14.0283 0
+13.5776 13.3374 0
+13.3599 12.1977 0
+12.4087 10.4381 0
+10.7588 8.0011 0
+8.62544 5.04874 0
+6.35782 1.97967 0
+4.35218 -0.684353 0
+2.94897 -2.50156 0
+2.34491 -3.28857 0
+2.54697 -3.16246 0
+3.3803 -2.42917 0
+4.54732 -1.41206 0
+5.72067 -0.344759 0
+6.64033 0.621154 0
+7.18093 1.34554 0
+7.36617 1.65782 0
+7.33148 1.39076 0
+7.2584 0.464162 0
+7.30985 -1.04316 0
+7.58388 -2.88191 0
+8.08979 -4.69495 0
+8.74676 -6.1329 0
+9.40861 -6.97097 0
+9.91599 -7.161 0
+10.1631 -6.77911 0
+10.1505 -5.90231 0
+9.9939 -4.51484 0
+9.87779 -2.53733 0
+9.96696 0.0256139 0
+10.3127 2.93345 0
+10.7967 5.69135 0
+11.1466 7.71285 0
+11.0306 8.58048 0
+10.1959 8.25066 0
+8.58773 7.08267 0
+6.38281 5.67118 0
+3.9158 4.56137 0
+1.53947 3.98529 0
+-0.498892 3.76217 0
+-2.09212 3.43695 0
+-3.2028 2.59683 0
+-1.93441 1.18459 0
+-1.16429 0.118786 0
+-1.16429 0.241238 0
+-1.44082 -0.36901 0
+-2.88535 -0.697123 0
+-5.75089 -1.25614 0
+-5.4646 -2.12266 0
+-4.8304 -3.08555 0
+-3.77122 -3.93814 0
+-2.38215 -4.70709 0
+-0.946425 -5.46694 0
+0.15785 -6.20248 0
+0.621109 -6.77655 0
+0.348222 -6.97801 0
+-0.492689 -6.61 0
+-1.54014 -5.59289 0
+-2.3857 -4.04069 0
+-2.72486 -2.24747 0
+-2.45231 -0.559158 0
+-1.67581 0.796494 0
+-0.655642 1.79336 0
+0.299427 2.54009 0
+0.936262 3.13107 0
+1.12219 3.54796 0
+0.854498 3.68103 0
+0.228754 3.42595 0
+-0.604914 2.76649 0
+-1.47746 1.79889 0
+-2.22877 0.711341 0
+-2.73643 -0.260782 0
+-2.94421 -0.903359 0
+-2.87612 -1.10397 0
+-2.62321 -0.896953 0
+-2.30637 -0.428329 0
+-2.03225 0.138573 0
+-1.86027 0.694315 0
+-1.78946 1.17159 0
+-1.76696 1.48216 0
+-1.71514 1.49097 0
+-1.56807 1.07115 0
+-1.29989 0.189981 0
+-0.928674 -1.05895 0
+-0.494652 -2.5053 0
+-0.0294745 -3.98643 0
+0.462843 -5.40841 0
+1.00589 -6.76806 0
+1.64111 -8.15065 0
+2.42086 -9.70406 0
+3.40506 -11.576 0
+4.65198 -13.8283 0
+6.1956 -16.3835 0
+8.01511 -19.0475 0
+10.0111 -21.5891 0
+12.0016 -23.8 0
+13.7413 -25.4912 0
+14.9623 -26.46 0
+15.4284 -26.4933 0
+14.9901 -25.4248 0
+13.617 -23.1925 0
+11.3883 -19.8394 0
+8.43935 -15.469 0
+4.91554 -10.2423 0
+1.22229 -4.57047 0
+0.214942 -0.193808 0
+0.0630438 -0.0206057 0
+0.041925 -0.00228061 0
+0.0633573 0.00233186 0
+0.213097 0.0195379 0
+1.17713 0.155936 0
+5.19299 3.03177 0
+9.76012 6.12655 0
+14.319 8.61678 0
+18.3507 10.6969 0
+21.2722 12.5487 0
+22.6242 14.1829 0
+22.2433 15.5218 0
+20.3341 16.5028 0
+17.4234 17.1008 0
+14.2187 17.2926 0
+11.4184 17.0464 0
+9.53574 16.3758 0
+8.7863 15.4031 0
+9.06899 14.3554 0
+10.0323 13.4705 0
+11.1908 12.8698 0
+12.0509 12.4774 0
+12.2169 12.0318 0
+11.4692 11.1859 0
+9.80972 9.66063 0
+7.46547 7.39305 0
+4.83914 4.60605 0
+2.41001 1.74482 0
+0.609624 -0.701153 0
+-0.289295 -2.38963 0
+-0.236447 -3.21529 0
+0.598161 -3.26376 0
+1.88968 -2.70356 0
+3.26556 -1.72061 0
+4.41756 -0.530821 0
+5.17926 0.583865 0
+5.54476 1.29236 0
+5.63209 1.30346 0
+5.61774 0.478547 0
+5.67215 -1.09754 0
+5.91241 -3.12215 0
+6.3734 -5.15592 0
+6.99632 -6.7558 0
+7.64112 -7.61576 0
+8.12998 -7.64985 0
+8.31613 -6.96524 0
+8.15232 -5.73849 0
+7.72514 -4.08765 0
+7.23162 -2.0438 0
+6.89966 0.35758 0
+6.8803 2.95281 0
+7.15865 5.41301 0
+7.53104 7.34047 0
+7.6723 8.43921 0
+7.27219 8.65077 0
+6.17688 8.17798 0
+4.46065 7.38741 0
+2.38857 6.63345 0
+0.295389 6.07847 0
+-1.54347 5.60103 0
+-2.97183 4.86531 0
+-3.91482 3.53982 0
+-2.25236 1.54858 0
+-1.27945 0.124038 0
+-1.27945 0.112622 0
+-1.36277 -0.355046 0
+-2.76117 -0.690433 0
+-5.57814 -1.2912 0
+-5.41217 -2.28862 0
+-4.99651 -3.50118 0
+-4.28088 -4.65373 0
+-3.35535 -5.63257 0
+-2.4523 -6.36993 0
+-1.86154 -6.79318 0
+-1.79762 -6.84041 0
+-2.29218 -6.48341 0
+-3.17087 -5.73127 0
+-4.12472 -4.63901 0
+-4.83451 -3.33088 0
+-5.08732 -1.99465 0
+-4.83917 -0.807283 0
+-4.20941 0.166774 0
+-3.42018 1.00418 0
+-2.711 1.83098 0
+-2.26339 2.68355 0
+-2.1617 3.44637 0
+-2.39588 3.91533 0
+-2.89052 3.92069 0
+-3.53644 3.41251 0
+-4.21222 2.47475 0
+-4.79962 1.29881 0
+-5.20273 0.142382 0
+-5.37116 -0.734876 0
+-5.3152 -1.15989 0
+-5.10027 -1.11182 0
+-4.8205 -0.708035 0
+-4.56341 -0.118444 0
+-4.38113 0.512113 0
+-4.27782 1.06838 0
+-4.2165 1.42093 0
+-4.14222 1.41679 0
+-4.01203 0.941048 0
+-3.81587 -0.00609071 0
+-3.57619 -1.29855 0
+-3.32728 -2.75414 0
+-3.08912 -4.22451 0
+-2.85263 -5.64482 0
+-2.58142 -7.03918 0
+-2.22218 -8.50979 0
+-1.71317 -10.213 0
+-0.989317 -12.2997 0
+0.00834916 -14.8259 0
+1.31294 -17.6879 0
+2.90508 -20.6394 0
+4.69162 -23.3755 0
+6.50203 -25.6103 0
+8.10777 -27.0968 0
+9.26211 -27.6143 0
+9.75218 -26.9832 0
+9.4492 -25.1217 0
+8.34003 -22.0833 0
+6.53104 -18.0303 0
+4.24332 -13.1813 0
+1.86754 -7.86654 0
+0.161145 -2.86408 0
+0.0205904 -0.0532531 0
+0.0029304 -0.00294569 0
+0.000931613 -0.000281808 0
+0.00297901 0.00028449 0
+0.0201482 0.00236868 0
+0.153785 0.0222998 0
+2.05469 1.13088 0
+5.12672 3.05455 0
+8.54797 5.19559 0
+11.645 7.5999 0
+13.8484 10.3454 0
+14.7588 13.2726 0
+14.243 16.0378 0
+12.4765 18.2694 0
+9.90189 19.6755 0
+7.11158 20.0829 0
+4.69134 19.4667 0
+3.07402 17.9931 0
+2.44605 16.0311 0
+2.72962 14.0719 0
+3.63484 12.5654 0
+4.75407 11.7506 0
+5.66493 11.5666 0
+6.01976 11.677 0
+5.61304 11.5927 0
+4.42303 10.8507 0
+2.61874 9.19741 0
+0.522674 6.70218 0
+-1.4694 3.73694 0
+-2.99193 0.82141 0
+-3.8045 -1.57704 0
+-3.84807 -3.17171 0
+-3.24602 -3.86578 0
+-2.25177 -3.69779 0
+-1.16173 -2.81062 0
+-0.225094 -1.46743 0
+0.417769 -0.0589618 0
+0.750057 0.960107 0
+0.851132 1.20243 0
+0.848463 0.481254 0
+0.871492 -1.12053 0
+1.01769 -3.26832 0
+1.32937 -5.46757 0
+1.77934 -7.20575 0
+2.27187 -8.10827 0
+2.66859 -8.04655 0
+2.83962 -7.13626 0
+2.72308 -5.62194 0
+2.36486 -3.72942 0
+1.91456 -1.59349 0
+1.5709 0.701241 0
+1.49364 3.03008 0
+1.71875 5.1879 0
+2.12094 6.93828 0
+2.45143 8.10873 0
+2.44208 8.66013 0
+1.92685 8.69322 0
+0.916638 8.39762 0
+-0.412566 7.96266 0
+-1.80697 7.47287 0
+-3.04138 6.83544 0
+-3.98036 5.80429 0
+-4.56293 4.1224 0
+-2.45975 1.71725 0
+-1.31474 0.0676081 0
+-1.31474 -0.00865366 0
+-1.28542 -0.328144 0
+-2.63362 -0.648884 0
+-5.39209 -1.24355 0
+-5.40506 -2.27563 0
+-5.31614 -3.59008 0
+-5.09037 -4.87945 0
+-4.77263 -5.95026 0
+-4.48776 -6.65475 0
+-4.38918 -6.8917 0
+-4.58333 -6.64621 0
+-5.07282 -5.99387 0
+-5.75009 -5.05396 0
+-6.4429 -3.94617 0
+-6.98534 -2.78843 0
+-7.27805 -1.70191 0
+-7.31335 -0.771957 0
+-7.16102 0.0144908 0
+-6.92877 0.772001 0
+-6.71812 1.62042 0
+-6.59424 2.55978 0
+-6.57849 3.43074 0
+-6.65967 3.99664 0
+-6.81153 4.07267 0
+-7.00409 3.60518 0
+-7.20557 2.67633 0
+-7.38095 1.47426 0
+-7.49542 0.256912 0
+-7.52469 -0.705559 0
+-7.46563 -1.2189 0
+-7.33891 -1.23848 0
+-7.18049 -0.86639 0
+-7.02621 -0.272644 0
+-6.89775 0.383748 0
+-6.79665 0.967381 0
+-6.70896 1.33335 0
+-6.61817 1.32611 0
+-6.51935 0.842321 0
+-6.42575 -0.0995973 0
+-6.36325 -1.36096 0
+-6.35553 -2.76179 0
+-6.40918 -4.17078 0
+-6.5074 -5.54652 0
+-6.61357 -6.93292 0
+-6.67949 -8.44376 0
+-6.65165 -10.2407 0
+-6.47427 -12.477 0
+-6.09307 -15.2069 0
+-5.46479 -18.316 0
+-4.57238 -21.5317 0
+-3.44077 -24.5069 0
+-2.14539 -26.9054 0
+-0.807929 -28.4341 0
+0.42171 -28.8437 0
+1.39346 -27.9548 0
+1.98763 -25.7157 0
+2.13986 -22.2354 0
+1.8579 -17.7483 0
+1.23874 -12.5621 0
+0.503854 -7.13164 0
+0.0220075 -2.38223 0
+0.00225287 -0.0334985 0
+0.000280467 -0.000973139 0
+7.10338e-05 -7.22541e-05 0
+0.000286809 6.87049e-05 0
+0.00219886 0.000456563 0
+0.0217584 0.00274046 0
+0.573 0.579647 0
+1.55185 2.07573 0
+2.57697 4.17053 0
+3.32496 6.852 0
+3.56782 10.1027 0
+3.18722 13.6533 0
+2.19242 17.0327 0
+0.721066 19.7409 0
+-0.989793 21.3864 0
+-2.6594 21.7526 0
+-4.03051 20.8379 0
+-4.92786 18.8905 0
+-5.2907 16.3939 0
+-5.17309 13.9543 0
+-4.71685 12.1092 0
+-4.11071 11.1445 0
+-3.54878 11.0047 0
+-3.19571 11.3241 0
+-3.15933 11.5564 0
+-3.47133 11.1628 0
+-4.08017 9.80633 0
+-4.86244 7.48451 0
+-5.6545 4.52905 0
+-6.29733 1.46428 0
+-6.68016 -1.19419 0
+-6.76756 -3.08428 0
+-6.60142 -4.03191 0
+-6.27823 -4.02096 0
+-5.912 -3.17682 0
+-5.59752 -1.78187 0
+-5.38777 -0.268671 0
+-5.29089 0.863271 0
+-5.28217 1.19375 0
+-5.32062 0.519742 0
+-5.36183 -1.07928 0
+-5.36619 -3.26394 0
+-5.30645 -5.52727 0
+-5.17739 -7.33479 0
+-5.00307 -8.28257 0
+-4.83348 -8.21613 0
+-4.72573 -7.24399 0
+-4.7148 -5.63286 0
+-4.78776 -3.65645 0
+-4.87766 -1.50358 0
+-4.88545 0.709047 0
+-4.72513 2.86977 0
+-4.37268 4.83546 0
+-3.89278 6.45839 0
+-3.42368 7.63963 0
+-3.1218 8.35826 0
+-3.09188 8.66331 0
+-3.33978 8.64552 0
+-3.77435 8.39722 0
+-4.25624 7.95477 0
+-4.66365 7.24286 0
+-4.93506 6.07569 0
+-5.06458 4.25192 0
+-2.55061 1.70851 0
+-1.28412 0.0017484 0
+-1.28412 -0.0775999 0
+-1.19891 -0.291856 0
+-2.47445 -0.578202 0
+-5.11572 -1.11981 0
+-5.30502 -2.08632 0
+-5.54757 -3.34751 0
+-5.81768 -4.6093 0
+-6.09929 -5.66861 0
+-6.39118 -6.3628 0
+-6.69972 -6.5831 0
+-7.02889 -6.31698 0
+-7.37544 -5.64727 0
+-7.7311 -4.69827 0
+-8.08954 -3.5877 0
+-8.45272 -2.42522 0
+-8.83076 -1.32385 0
+-9.2324 -0.370284 0
+-9.65041 0.432547 0
+-10.0518 1.17351 0
+-10.382 1.95066 0
+-10.5822 2.76009 0
+-10.6128 3.46146 0
+-10.4693 3.8533 0
+-10.1849 3.78841 0
+-9.81994 3.24028 0
+-9.44412 2.30059 0
+-9.11857 1.14877 0
+-8.88182 0.0202114 0
+-8.74388 -0.843455 0
+-8.68931 -1.27343 0
+-8.68704 -1.2407 0
+-8.70197 -0.851398 0
+-8.70376 -0.270774 0
+-8.67201 0.35209 0
+-8.59971 0.89518 0
+-8.49608 1.22983 0
+-8.38683 1.21696 0
+-8.30901 0.764594 0
+-8.30095 -0.107575 0
+-8.39143 -1.27041 0
+-8.59302 -2.56014 0
+-8.90152 -3.86221 0
+-9.30002 -5.14796 0
+-9.76446 -6.4684 0
+-10.2686 -7.93956 0
+-10.786 -9.72313 0
+-11.2884 -11.9744 0
+-11.7398 -14.7553 0
+-12.0901 -17.9656 0
+-12.2731 -21.3484 0
+-12.2135 -24.5663 0
+-11.8412 -27.2776 0
+-11.1087 -29.1664 0
+-10.0065 -29.9456 0
+-8.57282 -29.3884 0
+-6.8946 -27.3938 0
+-5.10038 -24.0295 0
+-3.34349 -19.5051 0
+-1.78699 -14.1185 0
+-0.611023 -8.30757 0
+-0.0234492 -2.96979 0
+-0.0024939 -0.0544536 0
+-0.000331475 -0.00313549 0
+-0.000100305 -0.000303419 0
+-0.000337777 0.000306052 0
+-0.00243951 0.00255816 0
+-0.0231975 0.0234986 0
+-0.679997 1.23646 0
+-2.09927 3.49505 0
+-4.06037 6.13171 0
+-6.28114 9.07287 0
+-8.46747 12.2891 0
+-10.3555 15.5415 0
+-11.7618 18.4391 0
+-12.6176 20.5968 0
+-12.9724 21.7413 0
+-12.9669 21.7472 0
+-12.7843 20.6553 0
+-12.5945 18.7008 0
+-12.5085 16.308 0
+-12.555 14.0008 0
+-12.6854 12.2396 0
+-12.8014 11.2606 0
+-12.793 10.9965 0
+-12.5757 11.1068 0
+-12.116 11.0969 0
+-11.4427 10.4896 0
+-10.6407 9.00442 0
+-9.83078 6.67468 0
+-9.14041 3.83872 0
+-8.67409 0.997993 0
+-8.49119 -1.37707 0
+-8.59501 -2.98044 0
+-8.93432 -3.69258 0
+-9.41706 -3.53819 0
+-9.93458 -2.65927 0
+-10.3909 -1.32551 0
+-10.7279 0.0683421 0
+-10.9369 1.07233 0
+-11.0533 1.31014 0
+-11.1364 0.602949 0
+-11.2448 -0.970877 0
+-11.4139 -3.09475 0
+-11.645 -5.29622 0
+-11.9052 -7.0745 0
+-12.1407 -8.04709 0
+-12.2947 -8.06206 0
+-12.326 -7.21276 0
+-12.2175 -5.74131 0
+-11.9755 -3.89845 0
+-11.62 -1.85906 0
+-11.1754 0.264493 0
+-10.6656 2.35996 0
+-10.1139 4.28374 0
+-9.54492 5.88943 0
+-8.98426 7.07898 0
+-8.4536 7.82761 0
+-7.9636 8.17331 0
+-7.5088 8.19072 0
+-7.06997 7.9584 0
+-6.6269 7.5117 0
+-6.17798 6.79394 0
+-5.75598 5.65369 0
+-5.42712 3.92305 0
+-2.569 1.5481 0
+-1.22112 -0.0438257 0
+-1.22112 -0.0729118 0
+-1.1033 -0.252896 0
+-2.28089 -0.493189 0
+-4.73457 -0.949114 0
+-5.04813 -1.77275 0
+-5.54051 -2.8551 0
+-6.19614 -3.95364 0
+-6.94861 -4.91609 0
+-7.69065 -5.62071 0
+-8.30522 -5.96847 0
+-8.71177 -5.91038 0
+-8.90423 -5.45477 0
+-8.95862 -4.64384 0
+-9.0056 -3.54069 0
+-9.1825 -2.2483 0
+-9.58464 -0.921679 0
+-10.2304 0.275548 0
+-11.0491 1.2513 0
+-11.8967 2.02114 0
+-12.5981 2.65214 0
+-13.0022 3.16431 0
+-13.027 3.48631 0
+-12.6772 3.50364 0
+-12.0341 3.14539 0
+-11.2274 2.43371 0
+-10.4043 1.47747 0
+-9.69881 0.443375 0
+-9.20588 -0.472676 0
+-8.96148 -1.08782 0
+-8.93902 -1.29585 0
+-9.06449 -1.11519 0
+-9.24419 -0.671645 0
+-9.39323 -0.121666 0
+-9.45623 0.415167 0
+-9.41829 0.857328 0
+-9.30628 1.11791 0
+-9.17876 1.08952 0
+-9.10518 0.691092 0
+-9.14225 -0.0704377 0
+-9.31931 -1.09328 0
+-9.63934 -2.24006 0
+-10.0912 -3.41032 0
+-10.6629 -4.57619 0
+-11.3493 -5.78189 0
+-12.1542 -7.13457 0
+-13.089 -8.7883 0
+-14.166 -10.8973 0
+-15.3834 -13.5378 0
+-16.7023 -16.6465 0
+-18.0269 -20.0237 0
+-19.1988 -23.3942 0
+-20.0136 -26.4625 0
+-20.2547 -28.9251 0
+-19.737 -30.4631 0
+-18.351 -30.7741 0
+-16.098 -29.6466 0
+-13.1015 -27.0258 0
+-9.59233 -23.0142 0
+-5.89069 -17.82 0
+-2.47166 -11.7266 0
+-0.202739 -5.23869 0
+-0.026139 -0.231053 0
+-0.00398446 -0.02529 0
+-0.00147452 -0.00281333 0
+-0.00403199 0.00286354 0
+-0.0256891 0.0242153 0
+-0.195318 0.193128 0
+-2.65792 3.69908 0
+-6.77171 7.60888 0
+-11.6049 10.965 0
+-16.3998 13.8679 0
+-20.4877 16.3772 0
+-23.3451 18.399 0
+-24.7019 19.796 0
+-24.604 20.499 0
+-23.3909 20.5283 0
+-21.5937 19.95 0
+-19.7864 18.848 0
+-18.4356 17.35 0
+-17.7926 15.6649 0
+-17.8558 14.064 0
+-18.4072 12.7911 0
+-19.1001 11.9536 0
+-19.565 11.4615 0
+-19.5048 11.0467 0
+-18.7635 10.3556 0
+-17.3606 9.08675 0
+-15.4858 7.12973 0
+-13.4526 4.64157 0
+-11.6196 2.00571 0
+-10.3006 -0.320984 0
+-9.68956 -1.98807 0
+-9.8191 -2.85088 0
+-10.562 -2.94961 0
+-11.6749 -2.42528 0
+-12.8719 -1.46226 0
+-13.9072 -0.290211 0
+-14.638 0.799207 0
+-15.0475 1.48186 0
+-15.2238 1.48645 0
+-15.3105 0.689718 0
+-15.4512 -0.830119 0
+-15.7443 -2.80167 0
+-16.2158 -4.82466 0
+-16.8133 -6.47704 0
+-17.4205 -7.43984 0
+-17.8937 -7.5889 0
+-18.108 -6.99841 0
+-17.9991 -5.85013 0
+-17.5823 -4.31523 0
+-16.9426 -2.49883 0
+-16.2007 -0.477398 0
+-15.4682 1.62752 0
+-14.8072 3.62273 0
+-14.2102 5.29241 0
+-13.6101 6.47893 0
+-12.9168 7.13433 0
+-12.0622 7.31864 0
+-11.0311 7.15969 0
+-9.86569 6.79296 0
+-8.64701 6.29302 0
+-7.47535 5.62228 0
+-6.4625 4.64084 0
+-5.73505 3.1956 0
+-2.59421 1.24584 0
+-1.17231 -0.078376 0
+-1.17231 -0.00546021 0
+-1.00534 -0.218027 0
+-2.06942 -0.410958 0
+-4.28513 -0.769618 0
+-4.64593 -1.41193 0
+-5.25827 -2.24275 0
+-6.12177 -3.09012 0
+-7.14848 -3.88934 0
+-8.17199 -4.59716 0
+-8.99933 -5.14108 0
+-9.49057 -5.41909 0
+-9.62431 -5.32099 0
+-9.51116 -4.75697 0
+-9.34916 -3.70267 0
+-9.34673 -2.2507 0
+-9.64811 -0.62028 0
+-10.2852 0.912624 0
+-11.1661 2.1323 0
+-12.1035 2.95854 0
+-12.8742 3.4229 0
+-13.2916 3.58179 0
+-13.2602 3.45499 0
+-12.7929 3.03644 0
+-11.9927 2.34525 0
+-11.0167 1.45781 0
+-10.0398 0.500603 0
+-9.22129 -0.375106 0
+-8.67387 -1.02006 0
+-8.43888 -1.32278 0
+-8.47958 -1.25512 0
+-8.69936 -0.895381 0
+-8.97744 -0.393516 0
+-9.20607 0.107011 0
+-9.31692 0.526082 0
+-9.29412 0.83459 0
+-9.174 0.997859 0
+-9.03042 0.946 0
+-8.9469 0.607634 0
+-8.98672 -0.0305685 0
+-9.17684 -0.903117 0
+-9.51366 -1.90319 0
+-9.98293 -2.94101 0
+-10.5787 -3.98042 0
+-11.3121 -5.04843 0
+-12.2128 -6.23371 0
+-13.327 -7.67403 0
+-14.7088 -9.51546 0
+-16.3991 -11.8473 0
+-18.3923 -14.6531 0
+-20.6018 -17.8141 0
+-22.8429 -21.1529 0
+-24.8439 -24.4614 0
+-26.2821 -27.4866 0
+-26.8392 -29.9059 0
+-26.2645 -31.3486 0
+-24.434 -31.477 0
+-21.3812 -30.0784 0
+-17.2808 -27.1144 0
+-12.3836 -22.7172 0
+-6.96587 -17.1442 0
+-1.66447 -10.5401 0
+-0.302715 -1.59281 0
+-0.0973301 -0.230674 0
+-0.0688851 -0.0312579 0
+-0.0976213 0.0316001 0
+-0.300768 0.227362 0
+-1.61873 1.51109 0
+-7.24051 9.32089 0
+-13.6989 14.0673 0
+-20.2035 17.4697 0
+-26.1045 19.769 0
+-30.7034 20.9763 0
+-33.4457 21.1413 0
+-34.1037 20.4542 0
+-32.8567 19.2522 0
+-30.2462 17.9179 0
+-27.0301 16.734 0
+-23.9844 15.8023 0
+-21.7118 15.0774 0
+-20.5127 14.4659 0
+-20.3519 13.9032 0
+-20.9173 13.3565 0
+-21.7409 12.7773 0
+-22.3352 12.0558 0
+-22.311 11.0226 0
+-21.4604 9.50506 0
+-19.7975 7.42389 0
+-17.551 4.88324 0
+-15.1059 2.19657 0
+-12.905 -0.195196 0
+-11.3348 -1.89114 0
+-10.6309 -2.692 0
+-10.8259 -2.65582 0
+-11.7537 -2.02185 0
+-13.1057 -1.07327 0
+-14.5261 -0.0418031 0
+-15.7158 0.899465 0
+-16.5095 1.59301 0
+-16.9017 1.87402 0
+-17.0158 1.60065 0
+-17.0411 0.715066 0
+-17.1627 -0.708509 0
+-17.5072 -2.45721 0
+-18.11 -4.22179 0
+-18.9069 -5.68017 0
+-19.7508 -6.59589 0
+-20.4567 -6.88297 0
+-20.8621 -6.593 0
+-20.8823 -5.82994 0
+-20.5371 -4.66046 0
+-19.9377 -3.09821 0
+-19.2395 -1.17555 0
+-18.5781 0.966156 0
+-18.0127 3.05726 0
+-17.5001 4.77983 0
+-16.9152 5.89407 0
+-16.1109 6.33005 0
+-14.9905 6.19818 0
+-13.554 5.72325 0
+-11.8969 5.13581 0
+-10.1687 4.56479 0
+-8.52808 3.9817 0
+-7.12414 3.23691 0
+-6.10897 2.18042 0
+-2.71509 0.798302 0
+-1.18787 -0.145055 0
+-1.18787 0.0845415 0
+-0.913542 -0.191496 0
+-1.86385 -0.344632 0
+-3.82785 -0.614805 0
+-4.1612 -1.07858 0
+-4.75945 -1.64448 0
+-5.64158 -2.20796 0
+-6.73143 -2.79946 0
+-7.85934 -3.46922 0
+-8.81313 -4.18726 0
+-9.42329 -4.80889 0
+-9.63734 -5.1069 0
+-9.54114 -4.85314 0
+-9.31855 -3.92524 0
+-9.17555 -2.39368 0
+-9.26536 -0.530448 0
+-9.63932 1.2866 0
+-10.2332 2.72624 0
+-10.891 3.61638 0
+-11.42 3.95187 0
+-11.658 3.81991 0
+-11.5256 3.32261 0
+-11.0405 2.55139 0
+-10.2989 1.6037 0
+-9.4408 0.599754 0
+-8.61704 -0.323123 0
+-7.9611 -1.03103 0
+-7.56242 -1.41872 0
+-7.44509 -1.44009 0
+-7.56336 -1.13683 0
+-7.82081 -0.637906 0
+-8.10497 -0.109323 0
+-8.32082 0.322898 0
+-8.41217 0.617473 0
+-8.37053 0.792999 0
+-8.23378 0.861158 0
+-8.07311 0.785373 0
+-7.96781 0.502377 0
+-7.9771 -0.0212436 0
+-8.12484 -0.755342 0
+-8.40596 -1.62204 0
+-8.80725 -2.53968 0
+-9.327 -3.46065 0
+-9.98455 -4.39083 0
+-10.8228 -5.39542 0
+-11.908 -6.58875 0
+-13.3237 -8.09973 0
+-15.1494 -10.0216 0
+-17.424 -12.3784 0
+-20.1058 -15.1323 0
+-23.0471 -18.2114 0
+-25.9951 -21.5132 0
+-28.6164 -24.8652 0
+-30.5427 -27.9793 0
+-31.4347 -30.4564 0
+-31.0523 -31.8592 0
+-29.3154 -31.8152 0
+-26.3352 -30.0943 0
+-22.4223 -26.6299 0
+-18.0935 -21.4729 0
+-13.9381 -14.6953 0
+-8.83776 -6.69313 0
+-6.35843 -2.70996 0
+-5.66165 -0.728011 0
+-6.36396 0.73394 0
+-8.84287 2.7063 0
+-13.9054 6.57365 0
+-18.5356 13.9512 0
+-24.0024 19.5342 0
+-29.5955 23.0629 0
+-34.4633 24.6369 0
+-37.8726 24.3857 0
+-39.3443 22.6131 0
+-38.7628 19.8729 0
+-36.4044 16.8938 0
+-32.8632 14.3767 0
+-28.8989 12.7698 0
+-25.2491 12.1526 0
+-22.4591 12.2874 0
+-20.7769 12.7837 0
+-20.1378 13.2641 0
+-20.2332 13.452 0
+-20.6284 13.1724 0
+-20.8862 12.3137 0
+-20.6688 10.8051 0
+-19.8028 8.63911 0
+-18.3083 5.92944 0
+-16.3862 2.96122 0
+-14.3637 0.174029 0
+-12.6063 -1.95249 0
+-11.4222 -3.07528 0
+-10.9837 -3.13044 0
+-11.2898 -2.34974 0
+-12.1739 -1.13768 0
+-13.3567 0.109555 0
+-14.529 1.13045 0
+-15.4417 1.81221 0
+-15.9726 2.12394 0
+-16.1448 2.04628 0
+-16.096 1.55183 0
+-16.0166 0.635653 0
+-16.0852 -0.639896 0
+-16.4191 -2.12329 0
+-17.0461 -3.59476 0
+-17.8988 -4.82747 0
+-18.8337 -5.66095 0
+-19.6757 -6.04097 0
+-20.2757 -5.99299 0
+-20.5599 -5.54573 0
+-20.5484 -4.67197 0
+-20.3356 -3.31094 0
+-20.0421 -1.46906 0
+-19.7562 0.680271 0
+-19.489 2.79009 0
+-19.1613 4.4521 0
+-18.6327 5.36553 0
+-17.766 5.46327 0
+-16.4956 4.92782 0
+-14.8654 4.09301 0
+-13.0122 3.28263 0
+-11.1124 2.66497 0
+-9.32941 2.19876 0
+-7.79834 1.70584 0
+-6.65205 1.03413 0
+-2.99938 0.21483 0
+-1.30946 -0.295921 0
+-1.30946 0.141581 0
+-0.833468 -0.173782 0
+-1.68312 -0.299478 0
+-3.41732 -0.503619 0
+-3.67239 -0.823503 0
+-4.15537 -1.16149 0
+-4.90327 -1.46004 0
+-5.87618 -1.82653 0
+-6.94803 -2.39734 0
+-7.93896 -3.19631 0
+-8.68167 -4.06616 0
+-9.08687 -4.70167 0
+-9.17185 -4.76814 0
+-9.04122 -4.05584 0
+-8.83734 -2.59754 0
+-8.68662 -0.681154 0
+-8.65961 1.25962 0
+-8.75239 2.81904 0
+-8.89338 3.7574 0
+-8.97595 4.03446 0
+-8.9054 3.74938 0
+-8.63803 3.05527 0
+-8.19383 2.10722 0
+-7.64236 1.05226 0
+-7.07685 0.034265 0
+-6.59059 -0.809369 0
+-6.25839 -1.36321 0
+-6.12006 -1.55703 0
+-6.16846 -1.39168 0
+-6.35101 -0.954266 0
+-6.58823 -0.400664 0
+-6.80064 0.10311 0
+-6.9299 0.452178 0
+-6.94798 0.635586 0
+-6.85851 0.703555 0
+-6.69499 0.697669 0
+-6.51403 0.604442 0
+-6.37942 0.367788 0
+-6.34127 -0.0593646 0
+-6.42284 -0.673743 0
+-6.6239 -1.42096 0
+-6.93657 -2.22698 0
+-7.36161 -3.03557 0
+-7.91784 -3.83458 0
+-8.64705 -4.66618 0
+-9.61772 -5.61804 0
+-10.9231 -6.79434 0
+-12.6645 -8.28002 0
+-14.9198 -10.1231 0
+-17.7056 -12.3463 0
+-20.9513 -14.9657 0
+-24.4876 -17.9768 0
+-28.0534 -21.2993 0
+-31.3185 -24.714 0
+-33.9281 -27.8466 0
+-35.567 -30.2201 0
+-36.0305 -31.3515 0
+-35.2789 -30.8458 0
+-33.4526 -28.456 0
+-30.808 -24.1173 0
+-27.4686 -18.0346 0
+-23.0762 -11.0854 0
+-20.0582 -5.72793 0
+-19.0279 -1.75816 0
+-20.0386 1.74471 0
+-23.0658 5.73357 0
+-27.5499 11.0579 0
+-31.3315 17.7328 0
+-34.925 23.1278 0
+-38.149 26.287 0
+-40.5132 27.0012 0
+-41.5657 25.4383 0
+-41.0669 22.1144 0
+-39.0602 17.8662 0
+-35.858 13.6917 0
+-31.9607 10.4795 0
+-27.936 8.74515 0
+-24.2922 8.50885 0
+-21.3755 9.37076 0
+-19.3161 10.7243 0
+-18.0358 11.9839 0
+-17.3089 12.7251 0
+-16.8483 12.7119 0
+-16.3882 11.8537 0
+-15.7424 10.1593 0
+-14.8345 7.73129 0
+-13.7036 4.79858 0
+-12.4842 1.74183 0
+-11.3642 -0.945976 0
+-10.529 -2.78763 0
+-10.1089 -3.49536 0
+-10.1446 -3.09475 0
+-10.5787 -1.91569 0
+-11.2709 -0.445387 0
+-12.0337 0.872351 0
+-12.6805 1.77728 0
+-13.0781 2.20985 0
+-13.1845 2.23035 0
+-13.0569 1.91864 0
+-12.8263 1.32126 0
+-12.6518 0.461145 0
+-12.6727 -0.618966 0
+-12.9736 -1.82241 0
+-13.5659 -3.00244 0
+-14.3882 -4.00508 0
+-15.3264 -4.72273 0
+-16.2508 -5.11657 0
+-17.0591 -5.18468 0
+-17.7053 -4.89954 0
+-18.2005 -4.17675 0
+-18.5873 -2.92416 0
+-18.9016 -1.15477 0
+-19.1402 0.918927 0
+-19.2465 2.89642 0
+-19.1203 4.32584 0
+-18.6518 4.89708 0
+-17.7708 4.5823 0
+-16.4875 3.64446 0
+-14.9012 2.5067 0
+-13.1684 1.54984 0
+-11.4482 0.944811 0
+-9.8612 0.611745 0
+-8.48702 0.331662 0
+-7.40173 -0.0511611 0
+-3.46515 -0.450087 0
+-1.55591 -0.556761 0
+-1.55591 0.1171 0
+-0.765037 -0.161911 0
+-1.53322 -0.272348 0
+-3.08031 -0.436974 0
+-3.24088 -0.662934 0
+-3.56177 -0.840588 0
+-4.08985 -0.931957 0
+-4.82904 -1.08732 0
+-5.72212 -1.50425 0
+-6.65632 -2.26209 0
+-7.49617 -3.22629 0
+-8.12651 -4.07131 0
+-8.48339 -4.41124 0
+-8.56228 -3.97693 0
+-8.40762 -2.75218 0
+-8.09299 -0.995761 0
+-7.69752 0.864176 0
+-7.28251 2.40405 0
+-6.87644 3.35134 0
+-6.47748 3.63552 0
+-6.07288 3.3448 0
+-5.66163 2.64403 0
+-5.26485 1.71046 0
+-4.91987 0.70729 0
+-4.66601 -0.219583 0
+-4.5321 -0.943268 0
+-4.52823 -1.36707 0
+-4.64036 -1.44489 0
+-4.82952 -1.2025 0
+-5.04012 -0.74365 0
+-5.21677 -0.224001 0
+-5.3206 0.206965 0
+-5.33548 0.467077 0
+-5.2637 0.563819 0
+-5.11997 0.559837 0
+-4.93037 0.508093 0
+-4.7333 0.407388 0
+-4.57459 0.209091 0
+-4.49566 -0.138271 0
+-4.52265 -0.646739 0
+-4.66484 -1.27876 0
+-4.92266 -1.96915 0
+-5.29838 -2.65983 0
+-5.8049 -3.32803 0
+-6.47335 -3.9977 0
+-7.36041 -4.73095 0
+-8.55056 -5.60415 0
+-10.1461 -6.68439 0
+-12.2446 -8.0246 0
+-14.9108 -9.68004 0
+-18.1541 -11.7223 0
+-21.9112 -14.2195 0
+-26.0358 -17.1746 0
+-30.2957 -20.454 0
+-34.3892 -23.7529 0
+-37.9866 -26.6225 0
+-40.7892 -28.5486 0
+-42.5863 -29.0484 0
+-43.2799 -27.7621 0
+-42.8539 -24.5431 0
+-41.3047 -19.5836 0
+-38.7862 -13.6037 0
+-36.6769 -7.8371 0
+-35.853 -2.58191 0
+-36.5844 2.47629 0
+-38.6516 7.80085 0
+-41.242 13.6484 0
+-43.0956 19.5865 0
+-44.154 24.1864 0
+-44.4128 26.5459 0
+-43.7787 26.3672 0
+-42.1892 23.849 0
+-39.7015 19.6268 0
+-36.5061 14.6709 0
+-32.8858 10.0715 0
+-29.1505 6.74418 0
+-25.5755 5.17024 0
+-22.3595 5.29288 0
+-19.603 6.6143 0
+-17.3097 8.43104 0
+-15.409 10.0831 0
+-13.7942 11.1104 0
+-12.3654 11.2831 0
+-11.0606 10.5488 0
+-9.86915 8.96789 0
+-8.82766 6.68981 0
+-8.00128 3.97221 0
+-7.45705 1.19761 0
+-7.23471 -1.16831 0
+-7.32516 -2.69717 0
+-7.66613 -3.15438 0
+-8.1569 -2.60398 0
+-8.68334 -1.38924 0
+-9.14086 0.0121549 0
+-9.44857 1.18007 0
+-9.55745 1.88618 0
+-9.45809 2.1105 0
+-9.18697 1.95924 0
+-8.8247 1.55638 0
+-8.48089 0.977464 0
+-8.26896 0.24922 0
+-8.27953 -0.608382 0
+-8.56093 -1.54101 0
+-9.11085 -2.45251 0
+-9.8815 -3.23442 0
+-10.7983 -3.80589 0
+-11.7871 -4.12774 0
+-12.7971 -4.1747 0
+-13.8058 -3.89085 0
+-14.8024 -3.18014 0
+-15.7606 -1.96599 0
+-16.6191 -0.296168 0
+-17.2835 1.58332 0
+-17.6467 3.25954 0
+-17.62 4.29921 0
+-17.1639 4.44092 0
+-16.3068 3.72522 0
+-15.146 2.48367 0
+-13.823 1.18367 0
+-12.4811 0.207984 0
+-11.2253 -0.310965 0
+-10.1051 -0.508479 0
+-9.1289 -0.644537 0
+-8.30108 -0.878972 0
+-4.06153 -1.08131 0
+-1.9087 -0.89698 0
+-1.9087 -0.00583124 0
+-0.702589 -0.151013 0
+-1.40551 -0.254163 0
+-2.80812 -0.400757 0
+-2.89076 -0.580288 0
+-3.05967 -0.67167 0
+-3.35876 -0.632865 0
+-3.82618 -0.61988 0
+-4.47328 -0.857136 0
+-5.26621 -1.46914 0
+-6.12271 -2.36977 0
+-6.92608 -3.26793 0
+-7.55079 -3.78651 0
+-7.89251 -3.63519 0
+-7.89537 -2.7493 0
+-7.56774 -1.32337 0
+-6.97837 0.27483 0
+-6.23235 1.65805 0
+-5.43798 2.55699 0
+-4.682 2.87955 0
+-4.02277 2.68558 0
+-3.49706 2.11833 0
+-3.12831 1.34171 0
+-2.92837 0.50736 0
+-2.89432 -0.253632 0
+-3.00518 -0.832403 0
+-3.22177 -1.15047 0
+-3.49017 -1.17648 0
+-3.74991 -0.942759 0
+-3.94729 -0.546249 0
+-4.04976 -0.121523 0
+-4.05247 0.209694 0
+-3.9722 0.386819 0
+-3.83309 0.424721 0
+-3.65608 0.382838 0
+-3.45926 0.311284 0
+-3.26526 0.213398 0
+-3.10544 0.049278 0
+-3.01537 -0.228331 0
+-3.02558 -0.636515 0
+-3.15531 -1.14901 0
+-3.41297 -1.71147 0
+-3.80158 -2.2712 0
+-4.32671 -2.80288 0
+-5.00589 -3.31851 0
+-5.87799 -3.85882 0
+-7.00801 -4.4741 0
+-8.48258 -5.20978 0
+-10.3969 -6.11023 0
+-12.8386 -7.23827 0
+-15.8726 -8.68826 0
+-19.5251 -10.567 0
+-23.763 -12.9366 0
+-28.4732 -15.7437 0
+-33.4516 -18.7744 0
+-38.4158 -21.6582 0
+-43.0408 -23.9234 0
+-47.0065 -25.0825 0
+-50.0373 -24.7311 0
+-51.9274 -22.6528 0
+-52.584 -18.9268 0
+-52.1904 -13.9971 0
+-51.4837 -8.54357 0
+-51.1084 -2.95693 0
+-51.3122 2.6802 0
+-51.8915 8.38032 0
+-52.2455 14.0026 0
+-51.6877 19.0289 0
+-50.0859 22.5847 0
+-47.559 24.0191 0
+-44.3096 23.1178 0
+-40.5901 20.1296 0
+-36.6832 15.72 0
+-32.8559 10.8436 0
+-29.3042 6.51976 0
+-26.1176 3.5576 0
+-23.282 2.33476 0
+-20.715 2.72588 0
+-18.3121 4.21137 0
+-15.9862 6.10518 0
+-13.6915 7.78847 0
+-11.4331 8.85202 0
+-9.26691 9.11696 0
+-7.29107 8.57298 0
+-5.62832 7.30516 0
+-4.40035 5.46185 0
+-3.69579 3.26766 0
+-3.53836 1.04019 0
+-3.86581 -0.840841 0
+-4.53206 -2.03092 0
+-5.33819 -2.34823 0
+-6.08415 -1.858 0
+-6.61965 -0.85373 0
+-6.87229 0.264816 0
+-6.8448 1.15259 0
+-6.59084 1.63223 0
+-6.18803 1.7077 0
+-5.72066 1.49188 0
+-5.27268 1.10841 0
+-4.92408 0.628869 0
+-4.7447 0.069855 0
+-4.7852 -0.567876 0
+-5.06866 -1.25754 0
+-5.58792 -1.93324 0
+-6.31205 -2.51029 0
+-7.20144 -2.9165 0
+-8.22425 -3.10491 0
+-9.36236 -3.03658 0
+-10.5987 -2.65453 0
+-11.891 -1.88784 0
+-13.1503 -0.706641 0
+-14.2432 0.796713 0
+-15.0228 2.36292 0
+-15.3761 3.61286 0
+-15.2644 4.1875 0
+-14.7386 3.91517 0
+-13.9246 2.9112 0
+-12.9836 1.54269 0
+-12.0639 0.263948 0
+-11.2616 -0.594304 0
+-10.6069 -0.965697 0
+-10.0771 -1.03824 0
+-9.62487 -1.09679 0
+-9.19984 -1.30399 0
+-4.66632 -1.52318 0
+-2.30145 -1.22126 0
+-2.30145 -0.193816 0
+-0.637352 -0.136446 0
+-1.28123 -0.234216 0
+-2.56366 -0.373536 0
+-2.60573 -0.538219 0
+-2.67471 -0.602676 0
+-2.79893 -0.508636 0
+-3.03019 -0.388614 0
+-3.42777 -0.459544 0
+-4.02624 -0.870663 0
+-4.80408 -1.59192 0
+-5.66997 -2.40202 0
+-6.47601 -2.98045 0
+-7.05676 -3.05442 0
+-7.28098 -2.52505 0
+-7.09502 -1.50931 0
+-6.53819 -0.281982 0
+-5.72407 0.843947 0
+-4.79937 1.63229 0
+-3.90191 1.9821 0
+-3.13516 1.91884 0
+-2.56219 1.54537 0
+-2.21082 0.990334 0
+-2.08025 0.376796 0
+-2.14525 -0.188626 0
+-2.35908 -0.618564 0
+-2.65814 -0.851403 0
+-2.97043 -0.864179 0
+-3.22863 -0.684542 0
+-3.38552 -0.389349 0
+-3.42538 -0.0816494 0
+-3.36408 0.148406 0
+-3.2359 0.258643 0
+-3.07477 0.263606 0
+-2.90237 0.210446 0
+-2.72981 0.138726 0
+-2.56873 0.0523279 0
+-2.44075 -0.0786887 0
+-2.37747 -0.291604 0
+-2.41221 -0.601761 0
+-2.57058 -0.990629 0
+-2.86574 -1.41629 0
+-3.30038 -1.83654 0
+-3.87386 -2.22938 0
+-4.59222 -2.60013 0
+-5.47763 -2.97339 0
+-6.5733 -3.37841 0
+-7.94201 -3.84105 0
+-9.66039 -4.39183 0
+-11.813 -5.08561 0
+-14.4869 -6.01432 0
+-17.7613 -7.29249 0
+-21.6871 -9.01068 0
+-26.2568 -11.174 0
+-31.3762 -13.6548 0
+-36.852 -16.1822 0
+-42.4016 -18.3736 0
+-47.6834 -19.8005 0
+-52.3399 -20.0744 0
+-56.0508 -18.9416 0
+-58.6094 -16.368 0
+-60.0318 -12.5744 0
+-60.6203 -7.95484 0
+-60.7044 -2.87259 0
+-60.4243 2.40035 0
+-59.6597 7.61591 0
+-58.0987 12.4418 0
+-55.4603 16.3906 0
+-51.7652 18.8898 0
+-47.2771 19.5311 0
+-42.3885 18.2293 0
+-37.5288 15.2699 0
+-33.0803 11.2715 0
+-29.2995 7.06288 0
+-26.2642 3.48449 0
+-23.8719 1.16533 0
+-21.8934 0.356246 0
+-20.0597 0.892293 0
+-18.1474 2.29908 0
+-16.0314 3.98919 0
+-13.6985 5.45562 0
+-11.2305 6.384 0
+-8.77356 6.66008 0
+-6.50764 6.30708 0
+-4.617 5.41454 0
+-3.2603 4.10517 0
+-2.53694 2.54431 0
+-2.45484 0.958099 0
+-2.91274 -0.382931 0
+-3.71186 -1.23179 0
+-4.60203 -1.45805 0
+-5.34931 -1.1107 0
+-5.79789 -0.405135 0
+-5.89957 0.366507 0
+-5.70169 0.954722 0
+-5.30639 1.23694 0
+-4.82595 1.22727 0
+-4.35446 1.02041 0
+-3.96063 0.714589 0
+-3.69363 0.361874 0
+-3.59027 -0.0334917 0
+-3.67669 -0.481448 0
+-3.96517 -0.96905 0
+-4.45185 -1.44656 0
+-5.12051 -1.84162 0
+-5.95218 -2.08481 0
+-6.93312 -2.12397 0
+-8.05096 -1.91874 0
+-9.27555 -1.42993 0
+-10.5343 -0.629044 0
+-11.7019 0.460926 0
+-12.6198 1.71464 0
+-13.1453 2.8884 0
+-13.2072 3.67476 0
+-12.8405 3.82086 0
+-12.1807 3.25529 0
+-11.4176 2.14812 0
+-10.7311 0.856156 0
+-10.2351 -0.232044 0
+-9.95602 -0.873338 0
+-9.85041 -1.07131 0
+-9.84635 -1.04229 0
+-9.87885 -1.06429 0
+-9.88844 -1.29441 0
+-5.10883 -1.63859 0
+-2.62223 -1.3954 0
+-2.62223 -0.360951 0
+-0.561175 -0.115667 0
+-1.13985 -0.204615 0
+-2.29917 -0.335871 0
+-2.34142 -0.495975 0
+-2.37822 -0.565872 0
+-2.41446 -0.47238 0
+-2.49356 -0.309507 0
+-2.6927 -0.260399 0
+-3.08917 -0.474179 0
+-3.71445 -0.966629 0
+-4.52024 -1.59621 0
+-5.37626 -2.12442 0
+-6.10479 -2.32588 0
+-6.53944 -2.09038 0
+-6.58214 -1.46658 0
+-6.23301 -0.631092 0
+-5.58192 0.192866 0
+-4.77054 0.820933 0
+-3.94628 1.15785 0
+-3.22791 1.20048 0
+-2.69106 1.00853 0
+-2.36925 0.668529 0
+-2.2612 0.268757 0
+-2.33808 -0.111741 0
+-2.54929 -0.407346 0
+-2.82912 -0.571568 0
+-3.1068 -0.586488 0
+-3.32056 -0.47077 0
+-3.4323 -0.277596 0
+-3.43632 -0.0776206 0
+-3.35613 0.068223 0
+-3.22957 0.132091 0
+-3.09035 0.124398 0
+-2.9572 0.0772992 0
+-2.83628 0.0178152 0
+-2.73295 -0.0509964 0
+-2.66253 -0.149099 0
+-2.65228 -0.30185 0
+-2.73415 -0.519876 0
+-2.93443 -0.790342 0
+-3.26685 -1.08385 0
+-3.73283 -1.37055 0
+-4.32779 -1.63441 0
+-5.05048 -1.87742 0
+-5.91081 -2.11303 0
+-6.93342 -2.35578 0
+-8.15698 -2.61747 0
+-9.63287 -2.9159 0
+-11.4265 -3.2919 0
+-13.6203 -3.82056 0
+-16.3106 -4.60213 0
+-19.593 -5.7282 0
+-23.5328 -7.2341 0
+-28.1298 -9.05773 0
+-33.2896 -11.0223 0
+-38.8124 -12.8507 0
+-44.4038 -14.2089 0
+-49.7075 -14.7706 0
+-54.358 -14.2909 0
+-58.0537 -12.6722 0
+-60.6329 -9.99502 0
+-62.1006 -6.48691 0
+-62.5319 -2.44106 0
+-61.9634 1.832 0
+-60.3508 6.00352 0
+-57.6153 9.70642 0
+-53.7622 12.5377 0
+-48.9942 14.1218 0
+-43.6944 14.2314 0
+-38.3435 12.8785 0
+-33.4173 10.3438 0
+-29.2863 7.14053 0
+-26.1348 3.91144 0
+-23.9262 1.27586 0
+-22.429 -0.331788 0
+-21.3004 -0.772287 0
+-20.1942 -0.213903 0
+-18.8539 0.958794 0
+-17.1611 2.29644 0
+-15.1335 3.42808 0
+-12.8891 4.13966 0
+-10.6012 4.37212 0
+-8.46055 4.1665 0
+-6.64968 3.60368 0
+-5.31945 2.77495 0
+-4.56319 1.78807 0
+-4.38919 0.784111 0
+-4.70465 -0.0674625 0
+-5.3267 -0.60972 0
+-6.02627 -0.758465 0
+-6.59242 -0.544538 0
+-6.8907 -0.106838 0
+-6.88995 0.365763 0
+-6.64814 0.712931 0
+-6.26993 0.858735 0
+-5.86046 0.817817 0
+-5.49691 0.656868 0
+-5.22407 0.441751 0
+-5.06578 0.203591 0
+-5.03846 -0.060802 0
+-5.15695 -0.36295 0
+-5.43196 -0.694035 0
+-5.8651 -1.01341 0
+-6.44796 -1.25875 0
+-7.16607 -1.36669 0
+-8.0019 -1.28813 0
+-8.92916 -0.991475 0
+-9.89734 -0.461741 0
+-10.8167 0.290336 0
+-11.5603 1.20449 0
+-11.9932 2.14756 0
+-12.0232 2.9184 0
+-11.6482 3.29982 0
+-10.9742 3.14682 0
+-10.1876 2.46872 0
+-9.4925 1.45302 0
+-9.0391 0.402758 0
+-8.87892 -0.392224 0
+-8.96681 -0.785446 0
+-9.20588 -0.83223 0
+-9.50793 -0.740245 0
+-9.83106 -0.74116 0
+-10.1604 -0.965049 0
+-5.22335 -1.38699 0
+-2.74114 -1.30674 0
+-2.74114 -0.393605 0
+-0.470041 -0.0891853 0
+-0.967961 -0.163262 0
+-1.97719 -0.277827 0
+-2.04744 -0.425724 0
+-2.10741 -0.505888 0
+-2.13822 -0.441569 0
+-2.15997 -0.287747 0
+-2.24041 -0.179952 0
+-2.4694 -0.245179 0
+-2.91198 -0.524041 0
+-3.56495 -0.943225 0
+-4.34096 -1.3484 0
+-5.09027 -1.57655 0
+-5.65164 -1.52899 0
+-5.90881 -1.2094 0
+-5.82699 -0.712897 0
+-5.4557 -0.178407 0
+-4.90195 0.267194 0
+-4.29073 0.546647 0
+-3.73127 0.641026 0
+-3.29884 0.576108 0
+-3.03142 0.401114 0
+-2.93441 0.171756 0
+-2.98718 -0.0589682 0
+-3.14899 -0.245533 0
+-3.36565 -0.354891 0
+-3.57906 -0.373068 0
+-3.7397 -0.310123 0
+-3.81895 -0.19834 0
+-3.81547 -0.0810878 0
+-3.75139 0.00415396 0
+-3.65926 0.0399697 0
+-3.56687 0.0320173 0
+-3.48871 -0.00086104 0
+-3.42829 -0.0425924 0
+-3.38817 -0.0911099 0
+-3.37932 -0.157948 0
+-3.42331 -0.257845 0
+-3.54654 -0.396645 0
+-3.77093 -0.565938 0
+-4.10751 -0.747257 0
+-4.55603 -0.922009 0
+-5.11032 -1.0801 0
+-5.76571 -1.22202 0
+-6.52464 -1.35409 0
+-7.39832 -1.48207 0
+-8.40602 -1.60975 0
+-9.57577 -1.74613 0
+-10.9495 -1.9181 0
+-12.591 -2.17902 0
+-14.5895 -2.60369 0
+-17.0511 -3.26653 0
+-20.0761 -4.20896 0
+-23.7251 -5.4087 0
+-27.9843 -6.76297 0
+-32.7424 -8.09255 0
+-37.7842 -9.16692 0
+-42.8082 -9.74644 0
+-47.4654 -9.63347 0
+-51.4173 -8.72012 0
+-54.3954 -7.01672 0
+-56.2339 -4.64822 0
+-56.8514 -1.82343 0
+-56.2159 1.19672 0
+-54.3323 4.12006 0
+-51.2657 6.63994 0
+-47.1903 8.46234 0
+-42.4222 9.35386 0
+-37.394 9.2033 0
+-32.5823 8.06682 0
+-28.4159 6.17746 0
+-25.187 3.91175 0
+-22.9894 1.71382 0
+-21.7044 -0.00916442 0
+-21.0456 -0.990529 0
+-20.6492 -1.16859 0
+-20.1783 -0.684836 0
+-19.4036 0.184191 0
+-18.2381 1.13094 0
+-16.7216 1.91162 0
+-14.9774 2.39548 0
+-13.1645 2.55928 0
+-11.444 2.44602 0
+-9.96069 2.12035 0
+-8.8313 1.64558 0
+-8.12954 1.08632 0
+-7.86654 0.521118 0
+-7.97749 0.0435005 0
+-8.32818 -0.259014 0
+-8.74764 -0.338993 0
+-9.07795 -0.214214 0
+-9.22018 0.035408 0
+-9.15541 0.301004 0
+-8.93291 0.490441 0
+-8.63523 0.561072 0
+-8.34059 0.523184 0
+-8.10048 0.416767 0
+-7.93844 0.279717 0
+-7.86274 0.127896 0
+-7.88022 -0.0433071 0
+-8.00188 -0.241284 0
+-8.2389 -0.457009 0
+-8.59493 -0.657372 0
+-9.06119 -0.792481 0
+-9.61658 -0.811292 0
+-10.2292 -0.675528 0
+-10.8539 -0.366727 0
+-11.4262 0.110561 0
+-11.8588 0.722942 0
+-12.0528 1.39846 0
+-11.9272 2.02197 0
+-11.4587 2.44992 0
+-10.7107 2.5518 0
+-9.83089 2.26704 0
+-9.01106 1.64889 0
+-8.42187 0.863837 0
+-8.1533 0.134191 0
+-8.19007 -0.355456 0
+-8.435 -0.540518 0
+-8.76817 -0.499058 0
+-9.11135 -0.397062 0
+-9.46402 -0.388493 0
+-9.88491 -0.544159 0
+-4.92696 -0.878194 0
+-2.57062 -0.939234 0
+-2.57062 -0.206611 0
+-0.366062 -0.0603047 0
+-0.7653 -0.114371 0
+-1.58682 -0.202118 0
+-1.69045 -0.322088 0
+-1.79695 -0.399388 0
+-1.87038 -0.368136 0
+-1.90443 -0.253693 0
+-1.94156 -0.142814 0
+-2.05972 -0.127014 0
+-2.33392 -0.249824 0
+-2.79378 -0.48336 0
+-3.39962 -0.742542 0
+-4.05009 -0.926076 0
+-4.61737 -0.961694 0
+-4.99299 -0.833768 0
+-5.12286 -0.583004 0
+-5.01817 -0.283089 0
+-4.74164 -0.00931881 0
+-4.38039 0.185411 0
+-4.019 0.279642 0
+-3.72207 0.279187 0
+-3.52786 0.206911 0
+-3.44921 0.0931058 0
+-3.47728 -0.0308831 0
+-3.58603 -0.136775 0
+-3.73764 -0.203283 0
+-3.89032 -0.220374 0
+-4.00832 -0.19211 0
+-4.07122 -0.135438 0
+-4.07846 -0.0738354 0
+-4.04635 -0.0279468 0
+-3.99848 -0.00789161 0
+-3.9549 -0.0115556 0
+-3.9261 -0.0296602 0
+-3.91467 -0.0540119 0
+-3.9224 -0.0833725 0
+-3.95699 -0.123354 0
+-4.03371 -0.181117 0
+-4.17123 -0.259125 0
+-4.38478 -0.352376 0
+-4.68135 -0.450678 0
+-5.05941 -0.543936 0
+-5.51289 -0.626619 0
+-6.03634 -0.698552 0
+-6.62831 -0.762103 0
+-7.29164 -0.818731 0
+-8.0326 -0.86877 0
+-8.8624 -0.916315 0
+-9.80337 -0.977108 0
+-10.8983 -1.08407 0
+-12.2171 -1.28485 0
+-13.8542 -1.62937 0
+-15.9127 -2.15048 0
+-18.4769 -2.84445 0
+-21.5811 -3.6587 0
+-25.1822 -4.49136 0
+-29.1451 -5.20393 0
+-33.2461 -5.64526 0
+-37.1972 -5.68231 0
+-40.6863 -5.23083 0
+-43.4258 -4.27708 0
+-45.1903 -2.88366 0
+-45.8341 -1.17943 0
+-45.2961 0.658858 0
+-43.6035 2.4275 0
+-40.882 3.91859 0
+-37.3664 4.94683 0
+-33.3935 5.38104 0
+-29.3652 5.17504 0
+-25.6853 4.38694 0
+-22.6859 3.1781 0
+-20.5617 1.78761 0
+-19.3316 0.483706 0
+-18.842 -0.498684 0
+-18.8165 -1.01605 0
+-18.9358 -1.04921 0
+-18.9236 -0.697065 0
+-18.6064 -0.132969 0
+-17.9331 0.457712 0
+-16.9543 0.932832 0
+-15.7798 1.22102 0
+-14.5372 1.31669 0
+-13.345 1.25379 0
+-12.3021 1.07748 0
+-11.485 0.828461 0
+-10.9418 0.543147 0
+-10.6818 0.261149 0
+-10.6661 0.0277928 0
+-10.8103 -0.114808 0
+-11.005 -0.144244 0
+-11.1486 -0.0705713 0
+-11.1781 0.0649157 0
+-11.0834 0.20629 0
+-10.8992 0.306219 0
+-10.6808 0.342742 0
+-10.4786 0.320989 0
+-10.323 0.261094 0
+-10.225 0.181719 0
+-10.1871 0.0900351 0
+-10.2137 -0.0166523 0
+-10.3144 -0.14059 0
+-10.4988 -0.272677 0
+-10.7677 -0.388412 0
+-11.1073 -0.452871 0
+-11.4874 -0.43124 0
+-11.8637 -0.299224 0
+-12.1806 -0.0497638 0
+-12.3736 0.303519 0
+-12.3745 0.72393 0
+-12.1265 1.1504 0
+-11.6061 1.50155 0
+-10.8471 1.69093 0
+-9.94963 1.65436 0
+-9.06361 1.38102 0
+-8.34591 0.931195 0
+-7.90739 0.425316 0
+-7.77411 0.000916101 0
+-7.88371 -0.245854 0
+-8.12029 -0.303936 0
+-8.37134 -0.248008 0
+-8.5798 -0.188607 0
+-8.77124 -0.197051 0
+-9.05332 -0.262081 0
+-4.28862 -0.34918 0
+-2.1429 -0.419418 0
+-2.1429 0.181248 0
+-0.257283 -0.0337873 0
+-0.54591 -0.0664641 0
+-1.14987 -0.121959 0
+-1.27023 -0.201725 0
+-1.41015 -0.25947 0
+-1.52778 -0.250501 0
+-1.59825 -0.183217 0
+-1.63719 -0.10387 0
+-1.698 -0.0661994 0
+-1.84591 -0.101904 0
+-2.12376 -0.205506 0
+-2.52758 -0.338713 0
+-3.00396 -0.449685 0
+-3.46935 -0.496289 0
+-3.84094 -0.462174 0
+-4.06429 -0.359637 0
+-4.12685 -0.220521 0
+-4.05448 -0.0816836 0
+-3.89662 0.027568 0
+-3.7087 0.0917218 0
+-3.53844 0.108935 0
+-3.4188 0.0872729 0
+-3.36599 0.0403031 0
+-3.38045 -0.0164153 0
+-3.44919 -0.0680265 0
+-3.54959 -0.102878 0
+-3.65505 -0.114904 0
+-3.74208 -0.105074 0
+-3.79675 -0.0807695 0
+-3.81782 -0.0527509 0
+-3.81499 -0.030776 0
+-3.80286 -0.0200156 0
+-3.79424 -0.0201673 0
+-3.79631 -0.0275861 0
+-3.81147 -0.0388508 0
+-3.84149 -0.0533428 0
+-3.89158 -0.0732642 0
+-3.97129 -0.101399 0
+-4.09197 -0.138444 0
+-4.26249 -0.18185 0
+-4.4863 -0.226856 0
+-4.7614 -0.26883 0
+-5.08283 -0.305178 0
+-5.44581 -0.335564 0
+-5.84736 -0.360543 0
+-6.28603 -0.380058 0
+-6.76118 -0.393609 0
+-7.27459 -0.402893 0
+-7.83585 -0.415834 0
+-8.47047 -0.449425 0
+-9.22662 -0.528683 0
+-10.1753 -0.68065 0
+-11.401 -0.924769 0
+-12.9826 -1.26282 0
+-14.9693 -1.67194 0
+-17.3573 -2.10334 0
+-20.0735 -2.48761 0
+-22.9726 -2.74618 0
+-25.848 -2.80673 0
+-28.4592 -2.61955 0
+-30.5658 -2.17039 0
+-31.9631 -1.48629 0
+-32.5092 -0.633209 0
+-32.1434 0.293072 0
+-30.896 1.18022 0
+-28.8926 1.91522 0
+-26.3473 2.4016 0
+-23.5427 2.5765 0
+-20.7923 2.42461 0
+-18.3903 1.98504 0
+-16.56 1.34781 0
+-15.411 0.638576 0
+-14.92 -0.00723178 0
+-14.9432 -0.475525 0
+-15.258 -0.701141 0
+-15.6252 -0.681996 0
+-15.8484 -0.473864 0
+-15.8139 -0.167426 0
+-15.4993 0.143116 0
+-14.9537 0.387218 0
+-14.2639 0.531237 0
+-13.5227 0.575492 0
+-12.8096 0.540702 0
+-12.1851 0.453077 0
+-11.6922 0.335523 0
+-11.3558 0.206772 0
+-11.1794 0.0847299 0
+-11.1399 -0.0116903 0
+-11.1891 -0.0655918 0
+-11.2647 -0.0686338 0
+-11.3089 -0.0263021 0
+-11.2866 0.042608 0
+-11.1934 0.113077 0
+-11.051 0.163847 0
+-10.893 0.184684 0
+-10.7491 0.17715 0
+-10.6374 0.149395 0
+-10.5648 0.109071 0
+-10.5339 0.0591815 0
+-10.5497 -0.000850924 0
+-10.62 -0.0702553 0
+-10.7508 -0.141901 0
+-10.9385 -0.200702 0
+-11.1648 -0.226564 0
+-11.3957 -0.200308 0
+-11.5851 -0.109829 0
+-11.6804 0.0455655 0
+-11.63 0.25304 0
+-11.392 0.48592 0
+-10.947 0.70541 0
+-10.3113 0.865871 0
+-9.54556 0.92522 0
+-8.75066 0.859461 0
+-8.04587 0.676231 0
+-7.53397 0.419297 0
+-7.26626 0.157611 0
+-7.22494 -0.0404003 0
+-7.33354 -0.137259 0
+-7.49205 -0.145419 0
+-7.6194 -0.120666 0
+-7.68169 -0.126313 0
+-7.69912 -0.179622 0
+-7.75599 -0.20521 0
+-3.52384 -0.0365393 0
+-1.64555 0.0210272 0
+-1.64555 0.593419 0
+-0.155474 -0.013978 0
+-0.334281 -0.0286794 0
+-0.715029 -0.054658 0
+-0.823173 -0.0935812 0
+-0.958787 -0.123854 0
+-1.08557 -0.123713 0
+-1.17399 -0.0947961 0
+-1.22208 -0.0557731 0
+-1.25834 -0.0299417 0
+-1.3273 -0.0329344 0
+-1.46698 -0.065823 0
+-1.68987 -0.115824 0
+-1.97642 -0.163131 0
+-2.28281 -0.189893 0
+-2.55794 -0.187032 0
+-2.76121 -0.156361 0
+-2.87368 -0.108046 0
+-2.89979 -0.0555629 0
+-2.8614 -0.0108192 0
+-2.78843 0.0187542 0
+-2.71031 0.0308247 0
+-2.65027 0.0272308 0
+-2.62247 0.0125099 0
+-2.63137 -0.0075089 0
+-2.67247 -0.0269312 0
+-2.7344 -0.0409432 0
+-2.80247 -0.0468278 0
+-2.86299 -0.0445468 0
+-2.90724 -0.0365213 0
+-2.93345 -0.0265316 0
+-2.94608 -0.0181439 0
+-2.95267 -0.0134173 0
+-2.9603 -0.0125372 0
+-2.9734 -0.0144828 0
+-2.99405 -0.0181983 0
+-3.02393 -0.0234596 0
+-3.06629 -0.0309049 0
+-3.12636 -0.0413217 0
+-3.21002 -0.0547862 0
+-3.32156 -0.0702986 0
+-3.46227 -0.0861457 0
+-3.63041 -0.100684 0
+-3.82263 -0.112959 0
+-4.03545 -0.122736 0
+-4.26597 -0.130018 0
+-4.51147 -0.134552 0
+-4.76908 -0.135992 0
+-5.03703 -0.134937 0
+-5.31839 -0.134468 0
+-5.62659 -0.141216 0
+-5.99026 -0.164995 0
+-6.4543 -0.216598 0
+-7.07487 -0.304184 0
+-7.90826 -0.429407 0
+-8.9956 -0.58458 0
+-10.347 -0.751892 0
+-11.9295 -0.905136 0
+-13.6618 -1.01383 0
+-15.4194 -1.04909 0
+-17.0489 -0.990017 0
+-18.39 -0.829207 0
+-19.3005 -0.575724 0
+-19.6788 -0.254852 0
+-19.481 0.0952844 0
+-18.7302 0.429475 0
+-17.5175 0.702584 0
+-15.993 0.877097 0
+-14.3464 0.929989 0
+-12.7795 0.857695 0
+-11.4724 0.677948 0
+-10.5521 0.427565 0
+-10.0694 0.155883 0
+-9.99117 -0.0854699 0
+-10.2123 -0.254353 0
+-10.5854 -0.328101 0
+-10.9591 -0.308217 0
+-11.2152 -0.217814 0
+-11.29 -0.0926061 0
+-11.1779 0.0310258 0
+-10.9169 0.126234 0
+-10.5662 0.180641 0
+-10.1859 0.195191 0
+-9.82417 0.178947 0
+-9.51433 0.143243 0
+-9.27679 0.0979886 0
+-9.12095 0.0509415 0
+-9.04495 0.00873747 0
+-9.0343 -0.0223356 0
+-9.06281 -0.0370777 0
+-9.09812 -0.0333176 0
+-9.1109 -0.0135213 0
+-9.08372 0.0154355 0
+-9.01527 0.0446325 0
+-8.91784 0.0664291 0
+-8.81005 0.0768991 0
+-8.70902 0.0761239 0
+-8.62612 0.0664983 0
+-8.56747 0.0504272 0
+-8.53731 0.0290228 0
+-8.54073 0.00257087 0
+-8.58326 -0.0277241 0
+-8.66711 -0.0580435 0
+-8.78626 -0.0815553 0
+-8.92308 -0.0897316 0
+-9.04855 -0.0748345 0
+-9.12584 -0.0325384 0
+-9.11644 0.0361711 0
+-8.98758 0.124178 0
+-8.72018 0.218523 0
+-8.31668 0.301913 0
+-7.80661 0.355803 0
+-7.24656 0.365169 0
+-6.71124 0.324146 0
+-6.27533 0.240324 0
+-5.99083 0.134799 0
+-5.86932 0.0360996 0
+-5.87864 -0.0310755 0
+-5.958 -0.0578982 0
+-6.04551 -0.0579149 0
+-6.10346 -0.0627102 0
+-6.12474 -0.105031 0
+-6.11442 -0.189946 0
+-6.07542 -0.244205 0
+-2.84394 0.00311806 0
+-1.31987 0.188073 0
+-1.31987 0.738162 0
+-0.0728358 -0.00306308 0
+-0.158212 -0.00675349 0
+-0.343288 -0.013408 0
+-0.413145 -0.0237241 0
+-0.504963 -0.0320348 0
+-0.595974 -0.0327015 0
+-0.664911 -0.0258579 0
+-0.704928 -0.0157544 0
+-0.72695 -0.0079185 0
+-0.753529 -0.00635249 0
+-0.807475 -0.0118751 0
+-0.901187 -0.0221099 0
+-1.03146 -0.032853 0
+-1.18135 -0.0400026 0
+-1.32725 -0.041131 0
+-1.4475 -0.0361109 0
+-1.5288 -0.0267403 0
+-1.5686 -0.0157601 0
+-1.57361 -0.00580932 0
+-1.55613 0.00128048 0
+-1.53003 0.00473074 0
+-1.50751 0.00471103 0
+-1.49707 0.00206806 0
+-1.5026 -0.00197903 0
+-1.52339 -0.00613206 0
+-1.55504 -0.0092925 0
+-1.59107 -0.0108009 0
+-1.62504 -0.010571 0
+-1.65251 -0.00904961 0
+-1.67205 -0.00699188 0
+-1.68505 -0.00514087 0
+-1.69451 -0.00396011 0
+-1.70349 -0.00354799 0
+-1.71422 -0.00375468 0
+-1.72802 -0.00440102 0
+-1.74603 -0.00544455 0
+-1.76994 -0.00699024 0
+-1.8021 -0.00916095 0
+-1.84495 -0.0119397 0
+-1.90014 -0.015105 0
+-1.96798 -0.0183032 0
+-2.04746 -0.0211979 0
+-2.13683 -0.0235849 0
+-2.23418 -0.0253921 0
+-2.33761 -0.0265833 0
+-2.44509 -0.0270705 0
+-2.55432 -0.0267605 0
+-2.66347 -0.0257838 0
+-2.77311 -0.0248156 0
+-2.88903 -0.0252983 0
+-3.02465 -0.0293647 0
+-3.20187 -0.0393789 0
+-3.44886 -0.0571796 0
+-3.79501 -0.0832546 0
+-4.26346 -0.116117 0
+-4.86324 -0.152103 0
+-5.58267 -0.185689 0
+-6.38615 -0.210337 0
+-7.2155 -0.219721 0
+-7.99637 -0.209126 0
+-8.64887 -0.176687 0
+-9.10043 -0.12414 0
+-9.29839 -0.0568648 0
+-9.21991 0.0168199 0
+-8.87739 0.0869756 0
+-8.31851 0.143722 0
+-7.62038 0.178983 0
+-6.87839 0.188004 0
+-6.19105 0.170366 0
+-5.64336 0.130267 0
+-5.29171 0.0759198 0
+-5.15386 0.0180443 0
+-5.20695 -0.0323695 0
+-5.39475 -0.0665556 0
+-5.64282 -0.0800242 0
+-5.87756 -0.0734621 0
+-6.04327 -0.0521044 0
+-6.11209 -0.0237781 0
+-6.08469 0.00363927 0
+-5.98283 0.0243802 0
+-5.83802 0.0358356 0
+-5.68115 0.0383216 0
+-5.53617 0.0339738 0
+-5.4184 0.0254742 0
+-5.33561 0.0152013 0
+-5.28966 0.00499495 0
+-5.27723 -0.0036823 0
+-5.28998 -0.00958268 0
+-5.31528 -0.0117745 0
+-5.33863 -0.00996916 0
+-5.34735 -0.00479475 0
+-5.33418 0.00226719 0
+-5.29889 0.0093439 0
+-5.24727 0.0148141 0
+-5.18815 0.0177825 0
+-5.13017 0.0181471 0
+-5.07996 0.0162886 0
+-5.04218 0.0126443 0
+-5.02063 0.00747426 0
+-5.01902 0.000965992 0
+-5.04032 -0.00642287 0
+-5.08471 -0.0136484 0
+-5.14722 -0.0190411 0
+-5.21633 -0.0206277 0
+-5.27446 -0.0167035 0
+-5.30056 -0.00643379 0
+-5.2741 0.00971346 0
+-5.17973 0.0298087 0
+-5.01181 0.0506086 0
+-4.77793 0.0680335 0
+-4.50013 0.0780012 0
+-4.21253 0.0775698 0
+-3.95451 0.0661306 0
+-3.76034 0.0461501 0
+-3.64841 0.0228721 0
+-3.61498 0.00266968 0
+-3.63641 -0.00964063 0
+-3.68079 -0.0135197 0
+-3.72456 -0.0141469 0
+-3.76563 -0.0216386 0
+-3.82262 -0.0480372 0
+-3.91074 -0.101832 0
+-3.98917 -0.165776 0
+-2.18225 -0.0436335 0
+-1.17516 0.100847 0
+-1.17516 0.434035 0
+-0.0190016 -0.00306308 0
+-0.0414721 -0.00675349 0
+-0.0911032 -0.013408 0
+-0.114827 -0.0237241 0
+-0.146862 -0.0320348 0
+-0.179563 -0.0327015 0
+-0.205421 -0.0258579 0
+-0.221175 -0.0157544 0
+-0.229093 -0.0079185 0
+-0.235445 -0.00635249 0
+-0.247319 -0.0118751 0
+-0.269428 -0.0221099 0
+-0.302281 -0.032853 0
+-0.342283 -0.0400026 0
+-0.383413 -0.041131 0
+-0.419523 -0.0361109 0
+-0.446263 -0.0267403 0
+-0.462022 -0.0157601 0
+-0.467831 -0.00580932 0
+-0.46655 0.00128048 0
+-0.461818 0.00473074 0
+-0.457107 0.00471103 0
+-0.455038 0.00206806 0
+-0.457017 -0.00197903 0
+-0.463148 -0.00613206 0
+-0.47244 -0.0092925 0
+-0.483241 -0.0108009 0
+-0.493811 -0.010571 0
+-0.50286 -0.00904961 0
+-0.509852 -0.00699188 0
+-0.514992 -0.00514087 0
+-0.518952 -0.00396011 0
+-0.522499 -0.00354799 0
+-0.526254 -0.00375468 0
+-0.530654 -0.00440102 0
+-0.536098 -0.00544455 0
+-0.543088 -0.00699024 0
+-0.552249 -0.00916095 0
+-0.564188 -0.0119397 0
+-0.579293 -0.015105 0
+-0.597595 -0.0183032 0
+-0.618793 -0.0211979 0
+-0.642377 -0.0235849 0
+-0.667768 -0.0253921 0
+-0.694351 -0.0265833 0
+-0.721421 -0.0270705 0
+-0.748181 -0.0267605 0
+-0.773964 -0.0257838 0
+-0.798778 -0.0248156 0
+-0.824076 -0.0252983 0
+-0.853439 -0.0293647 0
+-0.892817 -0.0393789 0
+-0.949995 -0.0571796 0
+-1.03325 -0.0832546 0
+-1.14936 -0.116117 0
+-1.30146 -0.152103 0
+-1.48715 -0.185689 0
+-1.69748 -0.210337 0
+-1.9172 -0.219721 0
+-2.12632 -0.209126 0
+-2.303 -0.176687 0
+-2.42713 -0.12414 0
+-2.48399 -0.0568648 0
+-2.46717 0.0168199 0
+-2.38019 0.0869756 0
+-2.23646 0.143722 0
+-2.05747 0.178983 0
+-1.86947 0.188004 0
+-1.6991 0.170366 0
+-1.56883 0.130267 0
+-1.49291 0.0759198 0
+-1.47486 0.0180443 0
+-1.50723 -0.0323695 0
+-1.57378 -0.0665556 0
+-1.65381 -0.0800242 0
+-1.72727 -0.0734621 0
+-1.77937 -0.0521044 0
+-1.80314 -0.0237781 0
+-1.7995 0.00363927 0
+-1.77512 0.0243802 0
+-1.73928 0.0358356 0
+-1.70096 0.0383216 0
+-1.66699 0.0339738 0
+-1.64151 0.0254742 0
+-1.62631 0.0152013 0
+-1.62131 0.00499495 0
+-1.62499 -0.0036823 0
+-1.63458 -0.00958268 0
+-1.64635 -0.0117745 0
+-1.65632 -0.00996916 0
+-1.66111 -0.00479475 0
+-1.65884 0.00226719 0
+-1.6495 0.0093439 0
+-1.63468 0.0148141 0
+-1.6169 0.0177825 0
+-1.59875 0.0181471 0
+-1.58246 0.0162886 0
+-1.56982 0.0126443 0
+-1.56234 0.00747426 0
+-1.56138 0.000965992 0
+-1.5678 -0.00642287 0
+-1.58145 -0.0136484 0
+-1.60049 -0.0190411 0
+-1.62112 -0.0206277 0
+-1.63782 -0.0167035 0
+-1.64425 -0.00643379 0
+-1.63454 0.00971346 0
+-1.60473 0.0298087 0
+-1.55412 0.0506086 0
+-1.48609 0.0680335 0
+-1.40808 0.0780012 0
+-1.33051 0.0775698 0
+-1.26438 0.0661306 0
+-1.21823 0.0461501 0
+-1.19536 0.0228721 0
+-1.19269 0.00266968 0
+-1.20233 -0.00964063 0
+-1.21585 -0.0135197 0
+-1.23 -0.0141469 0
+-1.25164 -0.0216386 0
+-1.29967 -0.0480372 0
+-1.4015 -0.101832 0
+-1.56728 -0.165776 0
+-1.11145 -0.0436335 0
+-0.747956 0.100847 0
+-0.747956 0.434035 0
+-0.169255 -0.0497588 0
+-0.341827 -0.0944289 0
+-0.682034 -0.160773 0
+-0.43545 -0.246581 0
+-0.132913 -0.302533 0
+0.162577 -0.295485 0
+0.389994 -0.22741 0
+0.512508 -0.122507 0
+0.526723 -0.0142059 0
+0.459543 0.0671883 0
+0.356109 0.103443 0
+0.264142 0.0919755 0
+0.220115 0.0440341 0
+0.241001 -0.0208779 0
+0.322929 -0.0819194 0
+0.445856 -0.122919 0
+0.581847 -0.135984 0
+0.704024 -0.122168 0
+0.793579 -0.089547 0
+0.84325 -0.0496615 0
+0.856856 -0.0135972 0
+0.845777 0.0110885 0
+0.823996 0.0217892 0
+0.803567 0.0204388 0
+0.791844 0.011732 0
+0.790978 0.00087481 0
+0.79919 -0.00820307 0
+0.812796 -0.0135975 0
+0.827935 -0.0151292 0
+0.84141 -0.0134668 0
+0.850739 -0.00931911 0
+0.853889 -0.00314128 0
+0.84928 0.00461803 0
+0.836215 0.0130741 0
+0.815507 0.0207175 0
+0.789787 0.0257288 0
+0.763108 0.0266878 0
+0.739817 0.0232996 0
+0.7231 0.0167262 0
+0.713777 0.00933152 0
+0.709828 0.00395773 0
+0.706764 0.00307216 0
+0.698634 0.00813817 0
+0.679252 0.0193907 0
+0.643298 0.0359619 0
+0.587147 0.0561584 0
+0.509447 0.077708 0
+0.411514 0.0979401 0
+0.297523 0.113999 0
+0.174316 0.123213 0
+0.0506922 0.123631 0
+-0.0638704 0.114569 0
+-0.160798 0.0969338 0
+-0.233916 0.0731241 0
+-0.280414 0.0465041 0
+-0.301035 0.0206269 0
+-0.299527 -0.00150114 0
+-0.281648 -0.017873 0
+-0.25407 -0.027571 0
+-0.223459 -0.0306039 0
+-0.195762 -0.0276903 0
+-0.175618 -0.0201369 0
+-0.165798 -0.00981282 0
+-0.166673 0.000882956 0
+-0.175817 0.00915034 0
+-0.187826 0.0120168 0
+-0.19445 0.00663107 0
+-0.185088 -0.00935456 0
+-0.147855 -0.0372258 0
+-0.0713836 -0.0764639 0
+0.0526722 -0.124048 0
+0.226941 -0.174261 0
+0.446398 -0.219448 0
+0.698227 -0.251819 0
+0.964048 -0.265811 0
+1.22412 -0.260065 0
+1.46218 -0.23805 0
+1.66906 -0.206861 0
+1.84365 -0.174581 0
+1.991 -0.14734 0
+2.11839 -0.127378 0
+2.23136 -0.112955 0
+2.33141 -0.100038 0
+2.41622 -0.0847954 0
+2.48186 -0.0656323 0
+2.5257 -0.043832 0
+2.54839 -0.0226701 0
+2.55407 -0.00567183 0
+2.5491 0.00497561 0
+2.54002 0.00909434 0
+2.5319 0.00813243 0
+2.52772 0.00418851 0
+2.5286 -0.000876475 0
+2.53441 -0.00579674 0
+2.54417 -0.0097537 0
+2.55629 -0.0121023 0
+2.56865 -0.0123558 0
+2.57916 -0.0104969 0
+2.58646 -0.00729926 0
+2.59067 -0.00420405 0
+2.59321 -0.00252655 0
+2.59547 -0.00225713 0
+2.59662 -0.00114515 0
+2.59144 0.00518483 0
+2.5697 0.0217428 0
+2.51804 0.0516676 0
+2.42434 0.0937014 0
+2.28347 0.140877 0
+2.10214 0.181332 0
+1.90072 0.201426 0
+1.71031 0.190411 0
+1.56512 0.145189 0
+1.49176 0.0733651 0
+1.49868 -0.0069234 0
+1.56983 -0.0711412 0
+1.66568 -0.0958548 0
+1.7333 -0.067612 0
+1.72342 0.00987176 0
+1.61005 0.113377 0
+1.40545 0.204603 0
+1.16447 0.240972 0
+0.972955 0.191518 0
+0.901141 0.0718134 0
+0.804684 0.124254 0
+0.603833 0.212856 0
+0.603833 0.534615 0
+-0.677828 -0.192382 0
+-1.3501 -0.34957 0
+-2.67695 -0.590094 0
+-2.01836 -0.905161 0
+-1.20525 -1.11563 0
+-0.419176 -1.08154 0
+0.160463 -0.807025 0
+0.429989 -0.392004 0
+0.391476 0.0243372 0
+0.140604 0.318092 0
+-0.174948 0.419025 0
+-0.40728 0.324337 0
+-0.451847 0.0886301 0
+-0.271011 -0.201685 0
+0.105567 -0.458469 0
+0.599448 -0.616772 0
+1.11222 -0.648723 0
+1.55484 -0.564757 0
+1.86943 -0.404102 0
+2.03864 -0.218847 0
+2.08207 -0.0569892 0
+2.04272 0.0504719 0
+1.96957 0.0949771 0
+1.90233 0.0877094 0
+1.86312 0.0509777 0
+1.85617 0.00785374 0
+1.87365 -0.0256465 0
+1.90337 -0.0432839 0
+1.93465 -0.0463747 0
+1.9603 -0.0390845 0
+1.97545 -0.0244348 0
+1.97549 -0.00315003 0
+1.95548 0.0246596 0
+1.91176 0.0568286 0
+1.8447 0.0878099 0
+1.76051 0.109956 0
+1.67036 0.116866 0
+1.58681 0.106886 0
+1.51883 0.0847387 0
+1.46783 0.0603656 0
+1.42623 0.0455878 0
+1.37906 0.050276 0
+1.30751 0.0797139 0
+1.19299 0.133938 0
+1.02033 0.208654 0
+0.779874 0.296642 0
+0.468859 0.38875 0
+0.0924849 0.474341 0
+-0.335327 0.541836 0
+-0.792169 0.58008 0
+-1.24919 0.580674 0
+-1.67513 0.540537 0
+-2.04168 0.463503 0
+-2.32851 0.359975 0
+-2.52654 0.244557 0
+-2.6384 0.13251 0
+-2.67632 0.036441 0
+-2.65855 -0.035625 0
+-2.60568 -0.0804169 0
+-2.53784 -0.0984199 0
+-2.47276 -0.0927439 0
+-2.42426 -0.0686109 0
+-2.40062 -0.0334326 0
+-2.40284 0.00312563 0
+-2.42324 0.0295833 0
+-2.44474 0.03354 0
+-2.44085 0.0027632 0
+-2.37677 -0.0734117 0
+-2.21219 -0.201776 0
+-1.90688 -0.381746 0
+-1.42928 -0.601625 0
+-0.766585 -0.836921 0
+0.0671192 -1.05312 0
+1.029 -1.21366 0
+2.0543 -1.29108 0
+3.07103 -1.27675 0
+4.01758 -1.18455 0
+4.85652 -1.04576 0
+5.57902 -0.897033 0
+6.1983 -0.766578 0
+6.73599 -0.665012 0
+7.20798 -0.584899 0
+7.61665 -0.508659 0
+7.95214 -0.420243 0
+8.201 -0.314441 0
+8.35659 -0.199375 0
+8.42573 -0.0917684 0
+8.42847 -0.0083632 0
+8.39197 0.0415121 0
+8.34249 0.0586115 0
+8.29941 0.0512538 0
+8.2735 0.0301436 0
+8.26863 0.00402797 0
+8.28454 -0.0216646 0
+8.31835 -0.0435307 0
+8.36468 -0.0583926 0
+8.41546 -0.0631046 0
+8.46136 -0.0563582 0
+8.49491 -0.0408236 0
+8.51388 -0.0231407 0
+8.52178 -0.0104014 0
+8.52378 -0.00423243 0
+8.51847 0.00418826 0
+8.48927 0.0344073 0
+8.40067 0.110366 0
+8.20344 0.248916 0
+7.84944 0.447715 0
+7.31209 0.67824 0
+6.60515 0.888283 0
+5.79164 1.01495 0
+4.97693 1.00513 0
+4.28499 0.837132 0
+3.82263 0.535728 0
+3.6421 0.173616 0
+3.71532 -0.144353 0
+3.93191 -0.312446 0
+4.12696 -0.262656 0
+4.13405 0.00278412 0
+3.84768 0.399745 0
+3.27068 0.781611 0
+2.52119 0.990459 0
+1.78022 0.932486 0
+1.17282 0.679215 0
+0.765968 0.642143 0
+0.446077 0.581406 0
+0.446077 1.0165 0
+-1.37109 -0.377023 0
+-2.72659 -0.679466 0
+-5.41022 -1.14551 0
+-4.55354 -1.76182 0
+-3.49688 -2.17227 0
+-2.50612 -2.07226 0
+-1.84173 -1.47137 0
+-1.63653 -0.597147 0
+-1.84925 0.237114 0
+-2.2932 0.762101 0
+-2.7143 0.840185 0
+-2.88113 0.491229 0
+-2.65415 -0.138297 0
+-2.01584 -0.839942 0
+-1.06039 -1.41387 0
+0.0463343 -1.72343 0
+1.11981 -1.72214 0
+2.00657 -1.45145 0
+2.61787 -1.01535 0
+2.94083 -0.541731 0
+3.02682 -0.142919 0
+2.9639 0.113464 0
+2.84366 0.215284 0
+2.73446 0.196979 0
+2.66888 0.116622 0
+2.64713 0.0296669 0
+2.65123 -0.029676 0
+2.6612 -0.0531844 0
+2.66536 -0.0504734 0
+2.66139 -0.0350382 0
+2.65038 -0.0133571 0
+2.63 0.0173003 0
+2.59194 0.0627865 0
+2.52554 0.123295 0
+2.42476 0.188655 0
+2.2935 0.241284 0
+2.14528 0.265153 0
+1.99692 0.255312 0
+1.85938 0.222341 0
+1.73055 0.189262 0
+1.59338 0.182824 0
+1.41985 0.223865 0
+1.1783 0.321324 0
+0.840568 0.471725 0
+0.386636 0.662642 0
+-0.19346 0.876794 0
+-0.898828 1.09417 0
+-1.71651 1.29207 0
+-2.61982 1.44519 0
+-3.56789 1.5282 0
+-4.50856 1.52139 0
+-5.38541 1.41743 0
+-6.14765 1.22578 0
+-6.7597 0.972058 0
+-7.20699 0.691894 0
+-7.49629 0.421847 0
+-7.65077 0.190962 0
+-7.70264 0.016288 0
+-7.68623 -0.0967863 0
+-7.63351 -0.151098 0
+-7.57192 -0.15429 0
+-7.52284 -0.117639 0
+-7.49929 -0.0569386 0
+-7.50279 0.00667311 0
+-7.52063 0.0474642 0
+-7.52413 0.0370858 0
+-7.46792 -0.0533959 0
+-7.29014 -0.251149 0
+-6.9152 -0.576665 0
+-6.26231 -1.03459 0
+-5.2615 -1.60238 0
+-3.87502 -2.22334 0
+-2.11696 -2.81112 0
+-0.0614026 -3.26915 0
+2.16747 -3.51988 0
+4.42303 -3.53223 0
+6.5721 -3.33354 0
+8.52492 -2.99849 0
+10.2466 -2.61863 0
+11.7465 -2.26634 0
+13.052 -1.97042 0
+14.1818 -1.71463 0
+15.1315 -1.45826 0
+15.8778 -1.16641 0
+16.3969 -0.833404 0
+16.6853 -0.487672 0
+16.7711 -0.177437 0
+16.7098 0.0529939 0
+16.5689 0.182529 0
+16.409 0.218602 0
+16.2722 0.188127 0
+16.1805 0.12195 0
+16.1416 0.0429323 0
+16.1565 -0.0364819 0
+16.2219 -0.108809 0
+16.3287 -0.165053 0
+16.4594 -0.193762 0
+16.59 -0.186916 0
+16.6969 -0.147667 0
+16.7662 -0.0923023 0
+16.7977 -0.0418717 0
+16.7995 -0.00594942 0
+16.7713 0.0324453 0
+16.6856 0.120126 0
+16.4766 0.319382 0
+16.0465 0.679113 0
+15.2913 1.2029 0
+14.1409 1.82873 0
+12.5973 2.43187 0
+10.7585 2.85379 0
+8.81285 2.95079 0
+7.00252 2.64748 0
+5.56104 1.97721 0
+4.64235 1.09232 0
+4.26428 0.233728 0
+4.29016 -0.338324 0
+4.46309 -0.435575 0
+4.48951 -0.0236326 0
+4.14681 0.742444 0
+3.37185 1.55658 0
+2.28544 2.07687 0
+1.12965 2.08828 0
+0.150404 1.65846 0
+-0.182666 1.21901 0
+-0.245645 0.753165 0
+-0.245645 1.04383 0
+-2.01566 -0.528886 0
+-4.02362 -0.951316 0
+-8.02528 -1.60393 0
+-7.31803 -2.46906 0
+-6.46726 -3.023 0
+-5.73971 -2.79976 0
+-5.37685 -1.83417 0
+-5.45737 -0.516549 0
+-5.85681 0.636638 0
+-6.30242 1.20779 0
+-6.48293 1.02077 0
+-6.1599 0.168275 0
+-5.23939 -1.05873 0
+-3.78743 -2.29182 0
+-1.99617 -3.20506 0
+-0.12087 -3.59864 0
+1.58932 -3.43223 0
+2.9487 -2.81073 0
+3.86854 -1.93509 0
+4.36188 -1.03497 0
+4.52115 -0.302085 0
+4.47728 0.157439 0
+4.35449 0.338175 0
+4.23638 0.315194 0
+4.1539 0.199206 0
+4.09633 0.0873315 0
+4.03636 0.0304067 0
+3.95489 0.0283841 0
+3.85371 0.0508074 0
+3.75156 0.0672237 0
+3.66915 0.0691511 0
+3.61419 0.0723734 0
+3.57575 0.101326 0
+3.53099 0.168158 0
+3.45853 0.261223 0
+3.34946 0.350465 0
+3.20886 0.405852 0
+3.04731 0.41697 0
+2.8678 0.40195 0
+2.6562 0.400961 0
+2.3804 0.458717 0
+1.99827 0.606087 0
+1.46957 0.850106 0
+0.765784 1.1756 0
+-0.12588 1.55439 0
+-1.2034 1.95439 0
+-2.45212 2.34297 0
+-3.84466 2.68468 0
+-5.33831 2.93891 0
+-6.87311 3.06306 0
+-8.37471 3.02305 0
+-9.76405 2.80682 0
+-10.9717 2.43349 0
+-11.9518 1.95222 0
+-12.6899 1.43009 0
+-13.202 0.933977 0
+-13.5252 0.514169 0
+-13.7054 0.196525 0
+-13.787 -0.0151319 0
+-13.8077 -0.130245 0
+-13.7985 -0.163517 0
+-13.7831 -0.132924 0
+-13.7769 -0.063072 0
+-13.7818 0.0116516 0
+-13.7823 0.048042 0
+-13.7429 -0.00234023 0
+-13.6055 -0.190684 0
+-13.2872 -0.569366 0
+-12.6787 -1.18515 0
+-11.6519 -2.06129 0
+-10.0825 -3.17167 0
+-7.88487 -4.42093 0
+-5.0487 -5.64719 0
+-1.66121 -6.65654 0
+2.10017 -7.28114 0
+6.0057 -7.43762 0
+9.82913 -7.15682 0
+13.3983 -6.5675 0
+16.619 -5.8392 0
+19.4644 -5.11159 0
+21.9396 -4.44539 0
+24.0435 -3.81838 0
+25.7505 -3.16502 0
+27.0193 -2.43503 0
+27.823 -1.63698 0
+28.1795 -0.843996 0
+28.1636 -0.161313 0
+27.8937 0.323042 0
+27.5008 0.5756 0
+27.0957 0.623887 0
+26.751 0.532934 0
+26.503 0.370107 0
+26.3656 0.180513 0
+26.3443 -0.0150987 0
+26.4405 -0.204798 0
+26.6442 -0.368661 0
+26.9265 -0.475909 0
+27.2388 -0.499109 0
+27.5256 -0.434258 0
+27.7426 -0.309262 0
+27.8705 -0.169631 0
+27.91 -0.0453256 0
+27.8596 0.0828975 0
+27.6847 0.295179 0
+27.295 0.709162 0
+26.5477 1.42642 0
+25.2803 2.47036 0
+23.3654 3.74374 0
+20.7696 5.02765 0
+17.5952 6.02828 0
+14.0854 6.46062 0
+10.5878 6.14507 0
+7.47855 5.08651 0
+5.06494 3.50594 0
+3.49522 1.80347 0
+2.70759 0.449319 0
+2.4456 -0.173584 0
+2.34567 0.0763136 0
+2.07192 1.01619 0
+1.44593 2.18257 0
+0.510849 3.01195 0
+-0.502318 3.10144 0
+-1.27618 2.43232 0
+-1.06773 1.42114 0
+-0.700769 0.573128 0
+-0.700769 0.744604 0
+-2.43557 -0.600911 0
+-4.89222 -1.07779 0
+-9.82812 -1.81265 0
+-9.52048 -2.77667 0
+-9.20703 -3.33641 0
+-9.07018 -2.93655 0
+-9.22606 -1.6782 0
+-9.61829 -0.124227 0
+-10.0142 1.03264 0
+-10.093 1.2867 0
+-9.57158 0.499439 0
+-8.30648 -1.09674 0
+-6.33519 -3.02992 0
+-3.85353 -4.77338 0
+-1.15116 -5.90733 0
+1.46511 -6.21481 0
+3.7373 -5.7043 0
+5.49994 -4.57324 0
+6.69831 -3.13332 0
+7.3813 -1.71782 0
+7.67138 -0.592032 0
+7.71901 0.109951 0
+7.6551 0.402218 0
+7.55812 0.412319 0
+7.44725 0.31021 0
+7.30209 0.232621 0
+7.09663 0.236005 0
+6.82915 0.296005 0
+6.53294 0.347154 0
+6.26384 0.336459 0
+6.07366 0.259476 0
+5.98583 0.160339 0
+5.98713 0.100167 0
+6.03831 0.117115 0
+6.09516 0.204512 0
+6.12592 0.31984 0
+6.11518 0.416728 0
+6.05381 0.478469 0
+5.92347 0.532427 0
+5.68656 0.637993 0
+5.28863 0.85677 0
+4.67183 1.223 0
+3.79197 1.73008 0
+2.63005 2.33763 0
+1.19367 2.99087 0
+-0.489333 3.6375 0
+-2.37833 4.23205 0
+-4.42231 4.72875 0
+-6.5569 5.07358 0
+-8.701 5.20723 0
+-10.7595 5.08162 0
+-12.6353 4.6827 0
+-14.2476 4.04583 0
+-15.549 3.25364 0
+-16.534 2.41523 0
+-17.2353 1.63534 0
+-17.7086 0.987484 0
+-18.0143 0.502284 0
+-18.2037 0.174386 0
+-18.3146 -0.0192992 0
+-18.3744 -0.103617 0
+-18.405 -0.102266 0
+-18.4214 -0.0466279 0
+-18.4259 0.0162092 0
+-18.4026 0.0247693 0
+-18.3144 -0.0904127 0
+-18.1003 -0.404693 0
+-17.6672 -1.00246 0
+-16.8804 -1.97186 0
+-15.5656 -3.37605 0
+-13.5326 -5.20455 0
+-10.6239 -7.32952 0
+-6.77212 -9.49884 0
+-2.04312 -11.3854 0
+3.35898 -12.6831 0
+9.13199 -13.2104 0
+14.947 -12.9717 0
+20.5206 -12.1409 0
+25.6562 -10.9746 0
+30.2422 -9.6973 0
+34.2159 -8.41882 0
+37.5228 -7.125 0
+40.0983 -5.74027 0
+41.8839 -4.22033 0
+42.8656 -2.61845 0
+43.1093 -1.08743 0
+42.7673 0.180996 0
+42.0494 1.04119 0
+41.172 1.45326 0
+40.31 1.48606 0
+39.5747 1.26845 0
+39.0215 0.92361 0
+38.6754 0.526798 0
+38.5537 0.106809 0
+38.6692 -0.32008 0
+39.0162 -0.71542 0
+39.5527 -1.01218 0
+40.1963 -1.14256 0
+40.8415 -1.07926 0
+41.3899 -0.85753 0
+41.7764 -0.555942 0
+41.9721 -0.240867 0
+41.9608 0.0943716 0
+41.6995 0.556627 0
+41.0862 1.32259 0
+39.9552 2.55746 0
+38.1089 4.3168 0
+35.3768 6.47596 0
+31.6841 8.72041 0
+27.1059 10.6065 0
+21.8891 11.6774 0
+16.4315 11.6028 0
+11.2157 10.3023 0
+6.70911 8.01254 0
+3.25012 5.26247 0
+0.957406 2.74205 0
+-0.300596 1.08443 0
+-0.85234 0.628067 0
+-1.09539 1.25925 0
+-1.34205 2.42923 0
+-1.70713 3.37704 0
+-2.09094 3.48525 0
+-2.26059 2.60196 0
+-1.40387 1.15305 0
+-0.726256 0.169331 0
+-0.726256 0.397321 0
+-2.57297 -0.59002 0
+-5.20103 -1.05021 0
+-10.5196 -1.75107 0
+-10.6543 -2.64194 0
+-10.9305 -3.06014 0
+-11.3946 -2.4724 0
+-11.9779 -1.09486 0
+-12.4582 0.35623 0
+-12.5143 1.08878 0
+-11.8433 0.615797 0
+-10.2787 -1.06506 0
+-7.85048 -3.52483 0
+-4.76934 -6.11097 0
+-1.35443 -8.18819 0
+2.0552 -9.31685 0
+5.17137 -9.33084 0
+7.79483 -8.32763 0
+9.8256 -6.60386 0
+11.2564 -4.56398 0
+12.156 -2.61729 0
+12.6423 -1.07818 0
+12.8462 -0.0937491 0
+12.8743 0.374296 0
+12.7848 0.501962 0
+12.5873 0.507861 0
+12.2667 0.553369 0
+11.8188 0.684053 0
+11.2781 0.836913 0
+10.722 0.903385 0
+10.2495 0.809135 0
+9.9446 0.564548 0
+9.84582 0.259284 0
+9.93705 0.0091007 0
+10.1625 -0.108198 0
+10.4541 -0.0868716 0
+10.7531 0.0210112 0
+11.0155 0.154403 0
+11.2014 0.292727 0
+11.2588 0.475211 0
+11.1162 0.78071 0
+10.6903 1.28283 0
+9.90536 2.00811 0
+8.71508 2.92049 0
+7.11502 3.93781 0
+5.14035 4.96565 0
+2.85317 5.92479 0
+0.329085 6.75624 0
+-2.34868 7.4066 0
+-5.08713 7.81212 0
+-7.78014 7.9003 0
+-10.3122 7.61377 0
+-12.573 6.94354 0
+-14.4781 5.95099 0
+-15.9877 4.76324 0
+-17.1133 3.54097 0
+-17.9102 2.43229 0
+-18.456 1.5333 0
+-18.8265 0.872889 0
+-19.0787 0.426619 0
+-19.2469 0.148982 0
+-19.352 0.00149997 0
+-19.411 -0.0431045 0
+-19.438 -0.0196502 0
+-19.4349 0.013261 0
+-19.3859 -0.0242165 0
+-19.2547 -0.221532 0
+-18.9832 -0.67613 0
+-18.4791 -1.50646 0
+-17.5964 -2.85454 0
+-16.1258 -4.84653 0
+-13.8161 -7.51425 0
+-10.4291 -10.7163 0
+-5.81683 -14.111 0
+0.0126338 -17.2147 0
+6.86852 -19.5388 0
+14.408 -20.7497 0
+22.2121 -20.7755 0
+29.8734 -19.8019 0
+37.0579 -18.1588 0
+43.5212 -16.1602 0
+49.0853 -13.9826 0
+53.6083 -11.6476 0
+56.973 -9.10461 0
+59.1102 -6.35722 0
+60.0399 -3.54772 0
+59.9013 -0.948547 0
+58.9476 1.1351 0
+57.4968 2.49226 0
+55.8622 3.08824 0
+54.2911 3.05742 0
+52.9414 2.61846 0
+51.8967 1.96861 0
+51.2031 1.22074 0
+50.8977 0.412441 0
+51.0113 -0.433349 0
+51.545 -1.24891 0
+52.4435 -1.91032 0
+53.5848 -2.28364 0
+54.8014 -2.29556 0
+55.9204 -1.97631 0
+56.8033 -1.43864 0
+57.3609 -0.798221 0
+57.5359 -0.080497 0
+57.2654 0.827378 0
+56.4446 2.14353 0
+54.9169 4.08526 0
+52.4964 6.73751 0
+49.0163 9.9561 0
+44.3884 13.3485 0
+38.6536 16.3414 0
+32.0153 18.3158 0
+24.8434 18.7747 0
+17.643 17.5027 0
+10.9804 14.6752 0
+5.37273 10.8702 0
+1.16684 6.94796 0
+-1.54945 3.80073 0
+-2.96036 2.03898 0
+-3.44112 1.74002 0
+-3.41001 2.39812 0
+-3.17937 3.14641 0
+-2.87857 3.18445 0
+-2.48981 2.2132 0
+-1.24121 0.658631 0
+-0.508397 -0.204846 0
+-0.508397 0.198759 0
+-2.47251 -0.524673 0
+-5.01863 -0.920159 0
+-10.1915 -1.50741 0
+-10.6256 -2.20781 0
+-11.2805 -2.40517 0
+-12.061 -1.69187 0
+-12.7252 -0.430573 0
+-12.9261 0.557186 0
+-12.3207 0.483547 0
+-10.6995 -1.00535 0
+-8.06838 -3.69609 0
+-4.64666 -6.94646 0
+-0.787657 -9.96988 0
+3.13286 -12.1086 0
+6.80858 -12.9925 0
+10.0438 -12.5659 0
+12.7456 -11.0293 0
+14.8929 -8.751 0
+16.508 -6.17887 0
+17.6408 -3.74995 0
+18.3596 -1.79675 0
+18.7373 -0.471362 0
+18.8352 0.276658 0
+18.6899 0.647404 0
+18.3176 0.880332 0
+17.7331 1.13801 0
+16.9764 1.44091 0
+16.1299 1.68364 0
+15.3141 1.71937 0
+14.6606 1.46279 0
+14.2734 0.951899 0
+14.1984 0.334457 0
+14.4165 -0.208788 0
+14.8613 -0.552897 0
+15.4486 -0.67399 0
+16.0976 -0.627758 0
+16.7351 -0.48295 0
+17.2853 -0.257352 0
+17.657 0.103701 0
+17.7411 0.696771 0
+17.4242 1.59984 0
+16.6132 2.8193 0
+15.2592 4.27462 0
+13.3703 5.82685 0
+11.0062 7.32985 0
+8.26108 8.67001 0
+5.24546 9.77195 0
+2.07705 10.5751 0
+-1.11955 11.0088 0
+-4.21196 10.9928 0
+-7.06679 10.4687 0
+-9.56645 9.44325 0
+-11.6304 8.01499 0
+-13.2316 6.36453 0
+-14.4003 4.70969 0
+-15.2114 3.24338 0
+-15.76 2.08198 0
+-16.1339 1.24689 0
+-16.3941 0.686857 0
+-16.5719 0.326839 0
+-16.6824 0.112026 0
+-16.7397 0.0143232 0
+-16.7573 -0.00198701 0
+-16.7364 -0.00762737 0
+-16.6577 -0.102875 0
+-16.4812 -0.39796 0
+-16.1478 -1.0095 0
+-15.5688 -2.08532 0
+-14.6002 -3.82313 0
+-13.0228 -6.42384 0
+-10.555 -9.98202 0
+-6.90452 -14.3667 0
+-1.85137 -19.164 0
+4.66906 -23.735 0
+12.5166 -27.3861 0
+21.355 -29.5879 0
+30.7164 -30.1367 0
+40.0918 -29.1768 0
+49.0076 -27.0744 0
+57.0665 -24.2187 0
+63.9506 -20.8663 0
+69.413 -17.1096 0
+73.2829 -12.974 0
+75.4915 -8.56535 0
+76.1074 -4.16319 0
+75.3529 -0.193643 0
+73.5801 2.90827 0
+71.2063 4.86647 0
+68.6313 5.66364 0
+66.1718 5.51725 0
+64.0383 4.75233 0
+62.3551 3.65214 0
+61.2017 2.37452 0
+60.6426 0.971833 0
+60.7273 -0.517705 0
+61.4619 -1.98317 0
+62.7763 -3.22443 0
+64.5117 -4.0188 0
+66.441 -4.22454 0
+68.3137 -3.84869 0
+69.9037 -3.02837 0
+71.0362 -1.93051 0
+71.5844 -0.628403 0
+71.4441 0.967897 0
+70.5077 3.08007 0
+68.6541 5.93907 0
+65.7597 9.63209 0
+61.7244 13.9916 0
+56.5005 18.5725 0
+50.1206 22.7213 0
+42.7256 25.7109 0
+34.5911 26.9093 0
+26.1413 25.9525 0
+17.9272 22.8893 0
+10.5513 18.2461 0
+4.54369 12.9555 0
+0.227225 8.11721 0
+-2.37109 4.63731 0
+-3.51379 2.88273 0
+-3.64653 2.53086 0
+-3.23922 2.73911 0
+-2.65428 2.59951 0
+-2.10949 1.66841 0
+-0.864821 0.303881 0
+-0.29066 -0.346817 0
+-0.29066 0.203963 0
+-2.229 -0.442249 0
+-4.5241 -0.759767 0
+-9.18115 -1.2135 0
+-9.68598 -1.70296 0
+-10.3802 -1.71088 0
+-11.0594 -1.01266 0
+-11.3797 -0.110156 0
+-10.964 0.141554 0
+-9.53988 -0.940542 0
+-7.04859 -3.49656 0
+-3.67155 -7.07306 0
+0.23648 -10.8544 0
+4.27123 -14.0045 0
+8.10032 -15.9376 0
+11.5305 -16.4226 0
+14.5029 -15.5382 0
+17.0374 -13.5636 0
+19.169 -10.8825 0
+20.9121 -7.92177 0
+22.2582 -5.09593 0
+23.1937 -2.73208 0
+23.7149 -0.992386 0
+23.8334 0.158333 0
+23.5754 0.905598 0
+22.9832 1.47273 0
+22.1218 1.99954 0
+21.0867 2.47619 0
+20.0045 2.76597 0
+19.0213 2.7027 0
+18.277 2.20726 0
+17.874 1.35509 0
+17.8547 0.35397 0
+18.1989 -0.552871 0
+18.8416 -1.19543 0
+19.6968 -1.52905 0
+20.6736 -1.60435 0
+21.6767 -1.48586 0
+22.5984 -1.17891 0
+23.3129 -0.610649 0
+23.6815 0.328367 0
+23.5703 1.71113 0
+22.876 3.51378 0
+21.5483 5.60246 0
+19.6012 7.77404 0
+17.107 9.82415 0
+14.1779 11.5992 0
+10.947 13.003 0
+7.55659 13.9655 0
+4.1551 14.4104 0
+0.892794 14.2551 0
+-2.08893 13.4504 0
+-4.67532 12.0297 0
+-6.79609 10.1358 0
+-8.43589 8.00437 0
+-9.63281 5.90665 0
+-10.4646 4.07523 0
+-11.026 2.64337 0
+-11.4037 1.62466 0
+-11.659 0.942179 0
+-11.824 0.491908 0
+-11.9153 0.203384 0
+-11.9518 0.0508553 0
+-11.9495 -0.00417075 0
+-11.9081 -0.0489789 0
+-11.801 -0.209937 0
+-11.5715 -0.62748 0
+-11.1364 -1.44447 0
+-10.3953 -2.82646 0
+-9.21046 -5.00786 0
+-7.38712 -8.24713 0
+-4.67289 -12.6962 0
+-0.791474 -18.248 0
+4.49124 -24.4466 0
+11.2863 -30.5298 0
+19.5176 -35.6171 0
+28.9038 -38.9738 0
+38.9947 -40.2274 0
+49.2449 -39.4266 0
+59.0928 -36.9219 0
+68.0216 -33.147 0
+75.5944 -28.4386 0
+81.4769 -22.9916 0
+85.4599 -16.9565 0
+87.4864 -10.5914 0
+87.6718 -4.34813 0
+86.2999 1.17878 0
+83.7829 5.42569 0
+80.591 8.05882 0
+77.1716 9.08341 0
+73.8893 8.79995 0
+71.0048 7.63722 0
+68.6927 5.96453 0
+67.0762 3.99138 0
+66.2499 1.79852 0
+66.2761 -0.543636 0
+67.1588 -2.86549 0
+68.8136 -4.87891 0
+71.0574 -6.26225 0
+73.6256 -6.79245 0
+76.2128 -6.43554 0
+78.5182 -5.33349 0
+80.2797 -3.69181 0
+81.2872 -1.63564 0
+81.3798 0.875588 0
+80.4399 4.02023 0
+78.3923 7.98686 0
+75.2069 12.8176 0
+70.8965 18.3021 0
+65.5056 23.9635 0
+59.099 29.1279 0
+51.7677 33.0423 0
+43.6625 35.0145 0
+35.0472 34.5679 0
+26.336 31.6005 0
+18.0773 26.5048 0
+10.8624 20.1704 0
+5.17898 13.8007 0
+1.26702 8.54928 0
+-0.95397 5.10372 0
+-1.84643 3.42333 0
+-1.92098 2.81365 0
+-1.6741 2.35264 0
+-1.47484 1.46915 0
+-0.545644 0.365541 0
+-0.211977 -0.190571 0
+-0.211977 0.360593 0
+-1.93763 -0.371322 0
+-3.91344 -0.627166 0
+-7.89493 -0.981569 0
+-8.26599 -1.33188 0
+-8.69336 -1.28348 0
+-8.9139 -0.792069 0
+-8.57601 -0.447993 0
+-7.3781 -1.05629 0
+-5.19696 -3.12162 0
+-2.14544 -6.54802 0
+1.46626 -10.6847 0
+5.24371 -14.6318 0
+8.84124 -17.602 0
+12.0566 -19.1529 0
+14.8519 -19.2177 0
+17.3019 -17.9881 0
+19.5071 -15.7686 0
+21.5193 -12.8945 0
+23.314 -9.71632 0
+24.8095 -6.59131 0
+25.9093 -3.83172 0
+26.5404 -1.62331 0
+26.6757 0.0232165 0
+26.3411 1.24036 0
+25.6126 2.20135 0
+24.6064 3.00586 0
+23.4641 3.61865 0
+22.3362 3.89401 0
+21.3659 3.67313 0
+20.6725 2.90078 0
+20.3358 1.69198 0
+20.3861 0.303754 0
+20.8071 -0.973707 0
+21.5479 -1.9361 0
+22.5371 -2.51813 0
+23.688 -2.75511 0
+24.8955 -2.69315 0
+26.0326 -2.31594 0
+26.9555 -1.53339 0
+27.5164 -0.232341 0
+27.5827 1.64498 0
+27.0571 4.03946 0
+25.8943 6.76538 0
+24.1085 9.55994 0
+21.7687 12.164 0
+18.9838 14.3842 0
+15.8857 16.1011 0
+12.6186 17.2326 0
+9.33247 17.6966 0
+6.17408 17.4136 0
+3.27338 16.3512 0
+0.72796 14.5751 0
+-1.40668 12.2705 0
+-3.11805 9.71578 0
+-4.43026 7.21889 0
+-5.39342 5.03843 0
+-6.07096 3.32095 0
+-6.52689 2.08063 0
+-6.81576 1.2311 0
+-6.97809 0.654274 0
+-7.04675 0.272086 0
+-7.06258 0.0667197 0
+-7.04933 -0.0173823 0
+-7.00624 -0.0920259 0
+-6.90104 -0.315103 0
+-6.64515 -0.883333 0
+-6.07842 -2.01116 0
+-5.04699 -3.85784 0
+-3.41125 -6.64355 0
+-1.03463 -10.6237 0
+2.22999 -15.9607 0
+6.54246 -22.5603 0
+12.0516 -29.9556 0
+18.8446 -37.3226 0
+26.8873 -43.6595 0
+35.9838 -48.0701 0
+45.7754 -50.0187 0
+55.7787 -49.4295 0
+65.4466 -46.5893 0
+74.2353 -41.9353 0
+81.6646 -35.8674 0
+87.3678 -28.6944 0
+91.1311 -20.7193 0
+92.9157 -12.3755 0
+92.8595 -4.29146 0
+91.2533 2.7854 0
+88.4945 8.18498 0
+85.0258 11.5279 0
+81.2754 12.8342 0
+77.612 12.4637 0
+74.3282 10.9214 0
+71.6463 8.64677 0
+69.7338 5.90416 0
+68.7113 2.8213 0
+68.6451 -0.477092 0
+69.5294 -3.74953 0
+71.271 -6.62018 0
+73.6853 -8.6762 0
+76.5094 -9.61625 0
+79.4287 -9.35458 0
+82.1103 -8.01484 0
+84.2358 -5.81696 0
+85.5285 -2.9281 0
+85.7764 0.627936 0
+84.8505 4.94635 0
+82.7178 10.1197 0
+79.4399 16.0957 0
+75.1474 22.5948 0
+69.9922 29.1189 0
+64.0958 35.0243 0
+57.5251 39.6131 0
+50.3156 42.2241 0
+42.543 42.3405 0
+34.4073 39.7363 0
+26.2793 34.6329 0
+18.6689 27.7808 0
+12.1095 20.3601 0
+6.99819 13.6606 0
+3.4643 8.63761 0
+1.33117 5.55647 0
+0.192641 3.95218 0
+-0.432159 2.97744 0
+-0.935306 1.97229 0
+-0.432088 0.928623 0
+-0.291349 0.20206 0
+-0.291349 0.571338 0
+-1.66583 -0.324476 0
+-3.33777 -0.549636 0
+-6.67141 -0.867845 0
+-6.80067 -1.2026 0
+-6.80248 -1.28164 0
+-6.40384 -1.19067 0
+-5.32241 -1.52936 0
+-3.40436 -2.97429 0
+-0.708934 -5.81699 0
+2.50277 -9.75966 0
+5.86458 -14.0464 0
+9.03604 -17.8032 0
+11.808 -20.3738 0
+14.1437 -21.4885 0
+16.1484 -21.2223 0
+17.9874 -19.827 0
+19.7935 -17.5747 0
+21.605 -14.7059 0
+23.3557 -11.4669 0
+24.9108 -8.14631 0
+26.1215 -5.04225 0
+26.8724 -2.37408 0
+27.1122 -0.216537 0
+26.8663 1.48642 0
+26.2307 2.83701 0
+25.35 3.88672 0
+24.3834 4.58535 0
+23.4751 4.80238 0
+22.7376 4.41076 0
+22.2481 3.39042 0
+22.0512 1.88899 0
+22.1629 0.192159 0
+22.5753 -1.38604 0
+23.2616 -2.62226 0
+24.1759 -3.43238 0
+25.2479 -3.82698 0
+26.3767 -3.82179 0
+27.4349 -3.37408 0
+28.2849 -2.38327 0
+28.7984 -0.74575 0
+28.8723 1.57121 0
+28.4374 4.47445 0
+27.4643 7.73859 0
+25.9661 11.0582 0
+23.9957 14.1344 0
+21.6371 16.7429 0
+18.9942 18.7441 0
+16.1825 20.0443 0
+13.3224 20.5567 0
+10.5278 20.2082 0
+7.89318 18.9858 0
+5.48464 16.9837 0
+3.34169 14.4135 0
+1.48723 11.5703 0
+-0.063476 8.76963 0
+-1.30076 6.27575 0
+-2.22508 4.2453 0
+-2.85392 2.7095 0
+-3.22601 1.60321 0
+-3.39737 0.825667 0
+-3.43511 0.309849 0
+-3.43592 0.067561 0
+-3.43117 -0.0221139 0
+-3.42267 -0.100492 0
+-3.39192 -0.345832 0
+-3.22358 -1.05165 0
+-2.57276 -2.66194 0
+-1.18246 -5.24809 0
+1.10166 -8.92761 0
+4.332 -13.8539 0
+8.4867 -20.1153 0
+13.5168 -27.5903 0
+19.3831 -35.8218 0
+26.0601 -43.9994 0
+33.5043 -51.1034 0
+41.6067 -56.1722 0
+50.1555 -58.5673 0
+58.8276 -58.1012 0
+67.2126 -54.974 0
+74.8649 -49.5873 0
+81.3699 -42.372 0
+86.409 -33.7329 0
+89.8054 -24.1152 0
+91.5392 -14.1089 0
+91.7311 -4.48296 0
+90.6072 3.90967 0
+88.4595 10.3331 0
+85.6113 14.3764 0
+82.3912 16.0546 0
+79.1142 15.7411 0
+76.0673 13.9685 0
+73.4996 11.2147 0
+71.6101 7.7939 0
+70.5352 3.8965 0
+70.3373 -0.278972 0
+71.0011 -4.41308 0
+72.4367 -8.0555 0
+74.4871 -10.7263 0
+76.9354 -12.0643 0
+79.5129 -11.9318 0
+81.9132 -10.4149 0
+83.8172 -7.7207 0
+84.9292 -4.03993 0
+85.0187 0.538642 0
+83.9585 6.00672 0
+81.749 12.3294 0
+78.5148 19.3301 0
+74.4658 26.6439 0
+69.8284 33.7564 0
+64.7694 40.0834 0
+59.3465 45.0362 0
+53.5131 48.0575 0
+47.1846 48.6691 0
+40.3403 46.5807 0
+33.117 41.8562 0
+25.8432 35.0546 0
+18.984 27.2192 0
+13.0087 19.6359 0
+8.23458 13.4118 0
+4.7229 9.06815 0
+2.28045 6.39464 0
+0.569976 4.68791 0
+-0.716947 3.25922 0
+-0.546085 1.89443 0
+-0.475776 0.701477 0
+-0.475776 0.746933 0
+-1.44654 -0.300052 0
+-2.87916 -0.524058 0
+-5.71043 -0.867681 0
+-5.60468 -1.30833 0
+-5.20486 -1.68144 0
+-4.26288 -2.13261 0
+-2.60196 -3.19023 0
+-0.22978 -5.34641 0
+2.63579 -8.6825 0
+5.64362 -12.7674 0
+8.44323 -16.846 0
+10.8043 -20.1643 0
+12.6725 -22.2419 0
+14.1511 -22.9671 0
+15.4335 -22.5046 0
+16.7153 -21.1087 0
+18.1216 -18.9809 0
+19.6697 -16.2539 0
+21.2763 -13.0733 0
+22.7969 -9.66683 0
+24.0753 -6.32057 0
+24.9858 -3.28451 0
+25.4638 -0.694469 0
+25.5229 1.42747 0
+25.2518 3.10815 0
+24.7876 4.35094 0
+24.2727 5.10035 0
+23.8176 5.25761 0
+23.4871 4.74134 0
+23.3094 3.56815 0
+23.2939 1.90456 0
+23.4445 0.0416697 0
+23.7644 -1.70586 0
+24.2524 -3.11016 0
+24.891 -4.07093 0
+25.6324 -4.56829 0
+26.3924 -4.5817 0
+27.0624 -4.04404 0
+27.5349 -2.85574 0
+27.7267 -0.937404 0
+27.5868 1.71116 0
+27.0921 4.96922 0
+26.2396 8.59112 0
+25.0439 12.2541 0
+23.5361 15.6422 0
+21.7621 18.517 0
+19.7775 20.7288 0
+17.6448 22.177 0
+15.4282 22.7734 0
+13.1845 22.4519 0
+10.9552 21.2151 0
+8.76714 19.1718 0
+6.64654 16.5341 0
+4.6376 13.5792 0
+2.81021 10.597 0
+1.24969 7.8363 0
+0.0329119 5.46211 0
+-0.798934 3.54138 0
+-1.26072 2.06502 0
+-1.42315 0.988118 0
+-1.38576 0.272481 0
+-1.36568 0.0474887 0
+-1.37665 -0.0111236 0
+-1.42109 -0.0560415 0
+-1.53642 -0.230487 0
+-1.66473 -0.923315 0
+-1.06196 -3.26468 0
+0.614111 -6.92411 0
+3.52839 -11.8418 0
+7.64565 -17.9711 0
+12.76 -25.2295 0
+18.5801 -33.4102 0
+24.8267 -42.0682 0
+31.301 -50.4734 0
+37.8976 -57.6998 0
+44.5691 -62.8433 0
+51.265 -65.2628 0
+57.8789 -64.7148 0
+64.2268 -61.3214 0
+70.0651 -55.4252 0
+75.1422 -47.4488 0
+79.2594 -37.8497 0
+82.3119 -27.1674 0
+84.2942 -16.0909 0
+85.2731 -5.46146 0
+85.3514 3.83172 0
+84.6477 11.037 0
+83.2983 15.7261 0
+81.4703 17.8829 0
+79.3704 17.8411 0
+77.2362 16.1029 0
+75.3081 13.1431 0
+73.7918 9.31037 0
+72.8258 4.86274 0
+72.4664 0.080574 0
+72.6967 -4.64315 0
+73.4475 -8.80603 0
+74.6146 -11.8933 0
+76.0609 -13.5104 0
+77.6062 -13.4769 0
+79.0222 -11.8306 0
+80.0473 -8.74561 0
+80.4243 -4.41681 0
+79.9509 1.01226 0
+78.5259 7.43189 0
+76.1761 14.6792 0
+73.0506 22.4557 0
+69.3782 30.3165 0
+65.3971 37.7375 0
+61.2776 44.203 0
+57.0649 49.2489 0
+52.6681 52.4543 0
+47.9043 53.4329 0
+42.5907 51.8943 0
+36.6553 47.7916 0
+30.2206 41.4894 0
+23.6159 33.8239 0
+17.2986 25.9532 0
+11.7091 19.0012 0
+7.12592 13.6513 0
+3.59624 9.92432 0
+0.982315 7.30184 0
+-0.892118 5.13365 0
+-0.825263 3.05341 0
+-0.691205 1.17656 0
+-0.691205 0.836244 0
+-1.28435 -0.288381 0
+-2.55468 -0.528094 0
+-5.06402 -0.933737 0
+-4.81772 -1.55462 0
+-4.18518 -2.31395 0
+-2.96179 -3.35596 0
+-1.07022 -5.08174 0
+1.3613 -7.77788 0
+4.02557 -11.3467 0
+6.55607 -15.2979 0
+8.66933 -18.9592 0
+10.2537 -21.7485 0
+11.3728 -23.3609 0
+12.2048 -23.7991 0
+12.9603 -23.26 0
+13.8127 -21.9611 0
+14.8571 -20.0251 0
+16.0989 -17.4956 0
+17.4697 -14.4441 0
+18.8568 -11.0538 0
+20.1343 -7.59803 0
+21.1914 -4.34158 0
+21.9581 -1.46113 0
+22.4264 0.959267 0
+22.6542 2.88037 0
+22.7424 4.26281 0
+22.7918 5.05107 0
+22.8661 5.1833 0
+22.9826 4.62491 0
+23.1284 3.42245 0
+23.2865 1.74649 0
+23.4535 -0.125255 0
+23.6419 -1.89419 0
+23.8698 -3.33802 0
+24.1423 -4.34338 0
+24.4336 -4.85953 0
+24.6833 -4.83131 0
+24.814 -4.17467 0
+24.7616 -2.80338 0
+24.4979 -0.673602 0
+24.0298 2.17933 0
+23.3826 5.61645 0
+22.5819 9.39184 0
+21.6459 13.1901 0
+20.586 16.7021 0
+19.4097 19.6933 0
+18.1221 22.0164 0
+16.7269 23.5722 0
+15.2256 24.2747 0
+13.6137 24.0639 0
+11.8793 22.9496 0
+10.0135 21.0377 0
+8.03395 18.5136 0
+6.00693 15.6063 0
+4.05046 12.5535 0
+2.31221 9.57457 0
+0.930791 6.84356 0
+-0.00480938 4.477 0
+-0.487204 2.54743 0
+-0.600863 1.10179 0
+-0.431502 0.103126 0
+-0.390835 0.00682724 0
+-0.401652 -0.000302158 0
+-0.455026 -0.00266273 0
+-0.656645 -0.0288619 0
+-1.24057 -0.339383 0
+-0.810111 -3.69511 0
+0.892271 -8.62643 0
+4.06772 -15.0172 0
+8.63306 -22.5363 0
+14.2508 -30.847 0
+20.441 -39.6001 0
+26.7223 -48.3492 0
+32.7314 -56.4822 0
+38.2825 -63.2506 0
+43.3545 -67.9149 0
+48.0249 -69.9329 0
+52.3887 -69.0782 0
+56.4963 -65.4287 0
+60.335 -59.2635 0
+63.8512 -50.9647 0
+66.993 -40.9912 0
+69.7382 -29.9123 0
+72.09 -18.4424 0
+74.0468 -7.418 0
+75.5752 2.30352 0
+76.6122 10.0002 0
+77.0999 15.2387 0
+77.0324 17.9506 0
+76.4867 18.387 0
+75.619 16.9708 0
+74.6267 14.1356 0
+73.6944 10.2429 0
+72.9481 5.60924 0
+72.4387 0.590139 0
+72.158 -4.36228 0
+72.0704 -8.71828 0
+72.1352 -11.9579 0
+72.3035 -13.6785 0
+72.4961 -13.6694 0
+72.5857 -11.9201 0
+72.4023 -8.56202 0
+71.7672 -3.78158 0
+70.5417 2.2378 0
+68.6699 9.3038 0
+66.1985 17.1507 0
+63.2673 25.387 0
+60.0702 33.5136 0
+56.7992 41.0086 0
+53.5844 47.4179 0
+50.4482 52.3851 0
+47.2874 55.6152 0
+43.8925 56.8279 0
+40.0106 55.7762 0
+35.4436 52.3587 0
+30.152 46.781 0
+24.3181 39.6578 0
+18.3249 31.9465 0
+12.6452 24.6809 0
+7.68885 18.6077 0
+3.68583 13.9273 0
+0.672791 10.3149 0
+-1.40564 7.21208 0
+-1.17254 4.17201 0
+-0.874367 1.5393 0
+-0.874367 0.833647 0
+-1.1666 -0.278521 0
+-2.33646 -0.534522 0
+-4.67171 -1.00417 0
+-4.41537 -1.81093 0
+-3.78301 -2.94629 0
+-2.62028 -4.51864 0
+-0.916386 -6.78557 0
+1.15099 -9.84519 0
+3.27272 -13.4683 0
+5.13701 -17.1621 0
+6.55282 -20.3749 0
+7.50082 -22.6964 0
+8.10055 -23.9605 0
+8.53274 -24.2312 0
+8.96708 -23.6942 0
+9.52159 -22.5155 0
+10.2526 -20.7561 0
+11.1628 -18.4057 0
+12.2155 -15.4967 0
+13.3483 -12.1865 0
+14.4833 -8.73301 0
+15.5395 -5.39772 0
+16.4518 -2.37338 0
+17.1941 0.217045 0
+17.7895 2.28502 0
+18.2949 3.75742 0
+18.7658 4.58028 0
+19.2246 4.72454 0
+19.6551 4.1945 0
+20.0209 3.05672 0
+20.2922 1.47525 0
+20.4622 -0.295232 0
+20.5475 -1.9794 0
+20.5746 -3.36503 0
+20.5601 -4.32882 0
+20.4942 -4.79354 0
+20.3395 -4.67662 0
+20.051 -3.88609 0
+19.6046 -2.3569 0
+19.0152 -0.0841845 0
+18.3304 2.86411 0
+17.6069 6.34004 0
+16.8874 10.1114 0
+16.1915 13.886 0
+15.5174 17.3763 0
+14.847 20.3637 0
+14.1519 22.7115 0
+13.3968 24.3274 0
+12.5415 25.1301 0
+11.5409 25.0644 0
+10.35 24.1406 0
+8.93908 22.4486 0
+7.3204 20.1323 0
+5.56846 17.3583 0
+3.81881 14.3032 0
+2.23998 11.1534 0
+0.990849 8.09271 0
+0.18101 5.28685 0
+-0.155374 2.88382 0
+-0.0892192 1.03564 0
+-0.013564 0.0274707 0
+-0.00759202 0.000855375 0
+-0.00784462 -4.94827e-05 0
+-0.0102456 -0.000261639 0
+-0.034464 -0.00464338 0
+-0.276475 -0.0973715 0
+-0.429944 -3.54161 0
+0.744923 -9.80123 0
+3.46771 -17.7398 0
+7.59853 -26.6669 0
+12.7441 -35.9923 0
+18.3592 -45.2149 0
+23.8866 -53.8762 0
+28.8909 -61.4861 0
+33.1414 -67.5007 0
+36.6195 -71.3926 0
+39.4633 -72.7763 0
+41.8809 -71.4955 0
+44.0721 -67.6196 0
+46.1846 -61.3757 0
+48.3122 -53.092 0
+50.5142 -43.1929 0
+52.8292 -32.227 0
+55.2644 -20.8774 0
+57.7692 -9.92256 0
+60.2189 -0.146022 0
+62.4335 7.78589 0
+64.2292 13.4432 0
+65.4811 16.6989 0
+66.1636 17.7047 0
+66.3511 16.7836 0
+66.1797 14.3072 0
+65.7911 10.6317 0
+65.2857 6.11475 0
+64.7073 1.16873 0
+64.06 -3.71475 0
+63.3408 -7.99892 0
+62.5608 -11.1777 0
+61.7385 -12.8561 0
+60.8742 -12.805 0
+59.927 -10.9727 0
+58.8148 -7.44978 0
+57.4423 -2.40898 0
+55.7396 3.94067 0
+53.6937 11.3497 0
+51.3591 19.4853 0
+48.8437 27.9025 0
+46.2784 36.079 0
+43.7808 43.5061 0
+41.4229 49.7759 0
+39.2045 54.6035 0
+37.0385 57.7813 0
+34.7498 59.1166 0
+32.105 58.421 0
+28.8788 55.5849 0
+24.9489 50.711 0
+20.3792 44.2275 0
+15.4418 36.8839 0
+10.5495 29.5731 0
+6.12418 23.0331 0
+2.46779 17.5837 0
+-0.288813 13.0715 0
+-2.12935 9.05262 0
+-1.49709 5.05805 0
+-0.986751 1.75875 0
+-0.986751 0.769562 0
+-1.07454 -0.263058 0
+-2.17727 -0.522982 0
+-4.41797 -1.02865 0
+-4.26533 -1.96356 0
+-3.84175 -3.36984 0
+-3.04428 -5.31606 0
+-1.89031 -7.93949 0
+-0.536886 -11.1985 0
+0.780479 -14.7856 0
+1.85402 -18.2355 0
+2.58886 -21.1096 0
+3.02046 -23.1279 0
+3.26763 -24.2076 0
+3.46315 -24.4266 0
+3.70506 -23.936 0
+4.04392 -22.8543 0
+4.49492 -21.207 0
+5.05524 -18.966 0
+5.71383 -16.1553 0
+6.45123 -12.9239 0
+7.23488 -9.51661 0
+8.01974 -6.18252 0
+8.76049 -3.11407 0
+9.43102 -0.453418 0
+10.0359 1.68025 0
+10.6016 3.19177 0
+11.1522 4.0298 0
+11.6868 4.19002 0
+12.1768 3.70458 0
+12.5819 2.65171 0
+12.8717 1.18547 0
+13.039 -0.462448 0
+13.0984 -2.03871 0
+13.0743 -3.34078 0
+12.9837 -4.23812 0
+12.8241 -4.63393 0
+12.5748 -4.42725 0
+12.2134 -3.5246 0
+11.7384 -1.88188 0
+11.1809 0.473407 0
+10.5956 3.44946 0
+10.0392 6.89642 0
+9.55061 10.6 0
+9.14297 14.2937 0
+8.8072 17.7121 0
+8.51921 20.6517 0
+8.24622 22.9846 0
+7.95029 24.6233 0
+7.58923 25.4912 0
+7.11672 25.537 0
+6.4872 24.7702 0
+5.67036 23.2654 0
+4.67246 21.1303 0
+3.55177 18.479 0
+2.41501 15.44 0
+1.39297 12.1755 0
+0.605478 8.88022 0
+0.127689 5.76465 0
+-0.0405122 3.05203 0
+-0.0106973 1.00582 0
+-0.00066434 0.0174378 0
+-8.44846e-05 0.000275558 0
+-0.000124584 -9.38495e-06 0
+-0.000349963 -3.63188e-05 0
+-0.00372447 -0.00126887 0
+-0.0416573 -0.0594384 0
+-0.129196 -3.45406 0
+0.506283 -10.4366 0
+2.22849 -19.4619 0
+5.00294 -29.4411 0
+8.54017 -39.5292 0
+12.4132 -49.0876 0
+16.1759 -57.6384 0
+19.4721 -64.7819 0
+22.1076 -70.1357 0
+24.065 -73.3495 0
+25.4668 -74.1777 0
+26.5091 -72.5375 0
+27.3964 -68.5065 0
+28.2999 -62.2789 0
+29.3465 -54.1384 0
+30.6253 -44.4715 0
+32.1914 -33.793 0
+34.0545 -22.7403 0
+36.1584 -12.0263 0
+38.3733 -2.36075 0
+40.5155 5.64395 0
+42.3942 11.5647 0
+43.8654 15.228 0
+44.8672 16.7031 0
+45.422 16.229 0
+45.6066 14.1229 0
+45.5088 10.7296 0
+45.1926 6.43123 0
+44.6868 1.67481 0
+44.0003 -3.02805 0
+43.1473 -7.14576 0
+42.1618 -10.192 0
+41.0899 -11.784 0
+39.9672 -11.6822 0
+38.7987 -9.80408 0
+37.5578 -6.20874 0
+36.2048 -1.05589 0
+34.7142 5.4314 0
+33.0933 12.9707 0
+31.3846 21.1941 0
+29.6517 29.6354 0
+27.96 37.7707 0
+26.3601 45.1061 0
+24.8782 51.2578 0
+23.5095 55.9722 0
+22.2079 59.0829 0
+20.8743 60.4503 0
+19.3566 59.9387 0
+17.4812 57.4603 0
+15.1179 53.0744 0
+12.2549 47.0906 0
+9.04003 40.0987 0
+5.75363 32.8595 0
+2.71764 26.0691 0
+0.188901 20.1125 0
+-1.70118 14.9616 0
+-2.92333 10.2748 0
+-1.74253 5.59064 0
+-1.01832 1.84862 0
+-1.01832 0.691306 0
+-0.992025 -0.24006 0
+-2.03353 -0.485992 0
+-4.18966 -0.984089 0
+-4.20154 -1.95167 0
+-4.10632 -3.46503 0
+-3.85189 -5.57044 0
+-3.45671 -8.33461 0
+-3.01236 -11.6428 0
+-2.63804 -15.1598 0
+-2.41737 -18.4561 0
+-2.35907 -21.1678 0
+-2.40355 -23.0833 0
+-2.46478 -24.1462 0
+-2.4761 -24.4152 0
+-2.41297 -23.9991 0
+-2.28647 -22.9807 0
+-2.12102 -21.3724 0
+-1.93443 -19.1525 0
+-1.73132 -16.3583 0
+-1.50929 -13.1458 0
+-1.2693 -9.75653 0
+-1.02048 -6.43127 0
+-0.775039 -3.35943 0
+-0.537885 -0.690482 0
+-0.300543 1.44301 0
+-0.0463254 2.93766 0
+0.236079 3.74751 0
+0.540959 3.88526 0
+0.84495 3.40071 0
+1.11778 2.379 0
+1.33666 0.966709 0
+1.49531 -0.620979 0
+1.60312 -2.1464 0
+1.67602 -3.41357 0
+1.72485 -4.28683 0
+1.748 -4.65698 0
+1.73363 -4.41278 0
+1.67044 -3.46132 0
+1.55999 -1.77136 0
+1.4214 0.612066 0
+1.28447 3.58645 0
+1.17622 7.00473 0
+1.10983 10.6664 0
+1.08242 14.3211 0
+1.08071 17.7139 0
+1.08961 20.6428 0
+1.09804 22.9762 0
+1.0994 24.622 0
+1.08751 25.5031 0
+1.05178 25.5727 0
+0.976679 24.8453 0
+0.848359 23.3938 0
+0.665508 21.3132 0
+0.446879 18.6976 0
+0.228866 15.658 0
+0.0531499 12.3512 0
+-0.0493582 8.98274 0
+-0.0716177 5.78692 0
+-0.0380076 3.01842 0
+-0.00153005 0.969347 0
+-4.06262e-05 0.0159484 0
+5.8626e-06 0.000229226 0
+-8.56579e-07 -2.59061e-06 0
+-2.2382e-05 -1.48817e-05 0
+-0.000395225 -0.000896161 0
+-0.0051534 -0.0546799 0
+-0.0501494 -3.40904 0
+0.0704388 -10.5572 0
+0.522292 -19.9136 0
+1.33119 -30.2498 0
+2.41365 -40.6114 0
+3.62246 -50.296 0
+4.79459 -58.8101 0
+5.79646 -65.7832 0
+6.55511 -70.8938 0
+7.06609 -73.86 0
+7.37876 -74.4899 0
+7.56883 -72.7272 0
+7.71237 -68.6498 0
+7.87149 -62.4378 0
+8.09346 -54.3601 0
+8.41606 -44.7939 0
+8.86864 -34.2454 0
+9.46417 -23.3356 0
+10.1865 -12.7484 0
+10.9835 -3.15754 0
+11.7754 4.85236 0
+12.4761 10.8643 0
+13.0196 14.6848 0
+13.3763 16.3467 0
+13.5537 16.052 0
+13.5811 14.0958 0
+13.4895 10.8215 0
+13.2969 6.62417 0
+13.0071 1.96486 0
+12.6211 -2.64176 0
+12.1503 -6.67466 0
+11.6219 -9.66334 0
+11.0718 -11.2337 0
+10.5291 -11.1393 0
+10.0042 -9.27895 0
+9.48726 -5.69169 0
+8.95939 -0.527889 0
+8.40649 5.9844 0
+7.82824 13.549 0
+7.23667 21.7857 0
+6.64765 30.2245 0
+6.07321 38.3452 0
+5.52079 45.6585 0
+4.99881 51.7798 0
+4.52068 56.4504 0
+4.09823 59.5054 0
+3.72365 60.8249 0
+3.35157 60.3108 0
+2.89909 57.9128 0
+2.27452 53.699 0
+1.42551 47.9396 0
+0.379145 41.1451 0
+-0.75463 33.9933 0
+-1.82425 27.1387 0
+-2.70004 20.9883 0
+-3.31997 15.5815 0
+-3.6865 10.6413 0
+-1.90105 5.7185 0
+-0.986038 1.84019 0
+-0.986038 0.641353 0
+-0.910277 -0.212393 0
+-1.87975 -0.428755 0
+-3.91574 -0.877186 0
+-4.08926 -1.77813 0
+-4.329 -3.22526 0
+-4.63213 -5.26728 0
+-5.00958 -7.95709 0
+-5.47764 -11.1747 0
+-6.03625 -14.6011 0
+-6.6537 -17.8385 0
+-7.26996 -20.5514 0
+-7.81769 -22.5355 0
+-8.24885 -23.715 0
+-8.55336 -24.1105 0
+-8.7606 -23.7917 0
+-8.92415 -22.8171 0
+-9.09833 -21.1982 0
+-9.31944 -18.9313 0
+-9.59967 -16.078 0
+-9.93241 -12.813 0
+-10.3011 -9.38778 0
+-10.6846 -6.04762 0
+-11.0594 -2.98458 0
+-11.4002 -0.349536 0
+-11.6838 1.72677 0
+-11.8932 3.14712 0
+-12.0206 3.8751 0
+-12.0693 3.93409 0
+-12.0513 3.3829 0
+-11.9828 2.31065 0
+-11.8768 0.860887 0
+-11.7379 -0.759764 0
+-11.5619 -2.32231 0
+-11.3412 -3.63406 0
+-11.0717 -4.5562 0
+-10.7548 -4.97381 0
+-10.3953 -4.7721 0
+-9.99849 -3.85804 0
+-9.56826 -2.20149 0
+-9.10944 0.153343 0
+-8.63097 3.10806 0
+-8.14846 6.52229 0
+-7.6842 10.2022 0
+-7.26292 13.8999 0
+-6.90316 17.3541 0
+-6.60743 20.3471 0
+-6.357 22.7258 0
+-6.11525 24.3803 0
+-5.83813 25.226 0
+-5.48592 25.2206 0
+-5.03153 24.391 0
+-4.46437 22.8267 0
+-3.79217 20.641 0
+-3.04199 17.9475 0
+-2.26003 14.8761 0
+-1.50843 11.5996 0
+-0.857598 8.33193 0
+-0.372796 5.30213 0
+-0.0930217 2.73865 0
+-0.00137503 0.877702 0
+-0.000108277 0.0146817 0
+-2.17855e-05 0.000142884 0
+-5.97643e-06 -1.83167e-05 0
+6.4591e-06 -2.73984e-05 0
+0.000246459 -0.0011363 0
+0.00225172 -0.0566848 0
+-0.0807093 -3.32606 0
+-0.514224 -10.1236 0
+-1.42785 -18.9998 0
+-2.78402 -28.8934 0
+-4.44107 -38.954 0
+-6.21225 -48.5244 0
+-7.91405 -57.1078 0
+-9.403 -64.2938 0
+-10.5978 -69.6985 0
+-11.485 -72.9723 0
+-12.111 -73.8635 0
+-12.5632 -72.2746 0
+-12.9469 -68.2657 0
+-13.3624 -62.022 0
+-13.8867 -53.8355 0
+-14.5652 -44.1152 0
+-15.4094 -33.4009 0
+-16.4004 -22.3444 0
+-17.4942 -11.6543 0
+-18.6298 -2.02165 0
+-19.7387 5.96158 0
+-20.7559 11.8818 0
+-21.6294 15.5587 0
+-22.3273 17.045 0
+-22.8406 16.5657 0
+-23.182 14.4376 0
+-23.3798 11.0196 0
+-23.4671 6.7119 0
+-23.4718 1.96985 0
+-23.4082 -2.70497 0
+-23.277 -6.80555 0
+-23.0693 -9.87076 0
+-22.7742 -11.5285 0
+-22.3852 -11.5281 0
+-21.9036 -9.76026 0
+-21.3391 -6.25602 0
+-20.7067 -1.16012 0
+-20.0244 5.3022 0
+-19.312 12.8367 0
+-18.5929 21.0667 0
+-17.8945 29.5262 0
+-17.2443 37.695 0
+-16.6586 45.0729 0
+-16.1291 51.2504 0
+-15.6153 55.9367 0
+-15.0505 58.9406 0
+-14.3621 60.1365 0
+-13.4999 59.4486 0
+-12.4577 56.8706 0
+-11.2779 52.5192 0
+-10.0354 46.6971 0
+-8.80866 39.9184 0
+-7.65592 32.8406 0
+-6.60942 26.0922 0
+-5.69053 20.0694 0
+-4.93128 14.8222 0
+-4.3835 10.0935 0
+-2.01234 5.44172 0
+-0.928647 1.75503 0
+-0.928647 0.639515 0
+-0.8285 -0.185323 0
+-1.71219 -0.364308 0
+-3.58078 -0.73592 0
+-3.86244 -1.49645 0
+-4.348 -2.73968 0
+-5.08042 -4.53482 0
+-6.0707 -6.96676 0
+-7.28069 -9.9646 0
+-8.62167 -13.2601 0
+-9.9774 -16.4827 0
+-11.2397 -19.289 0
+-12.337 -21.438 0
+-13.2459 -22.806 0
+-13.9873 -23.3691 0
+-14.6147 -23.1642 0
+-15.1971 -22.2346 0
+-15.7988 -20.5964 0
+-16.4635 -18.2665 0
+-17.2084 -15.3329 0
+-18.0266 -11.9948 0
+-18.8919 -8.52234 0
+-19.764 -5.1754 0
+-20.5949 -2.15354 0
+-21.3405 0.396241 0
+-21.9721 2.3585 0
+-22.4797 3.65489 0
+-22.8666 4.2621 0
+-23.1405 4.20819 0
+-23.3097 3.55226 0
+-23.3821 2.38325 0
+-23.3645 0.84345 0
+-23.2598 -0.864358 0
+-23.0662 -2.51575 0
+-22.7801 -3.92002 0
+-22.3981 -4.93804 0
+-21.916 -5.45579 0
+-21.3265 -5.36137 0
+-20.6227 -4.56172 0
+-19.8062 -3.01792 0
+-18.8952 -0.757506 0
+-17.9257 2.13862 0
+-16.9447 5.54146 0
+-16.0024 9.25992 0
+-15.1422 13.0398 0
+-14.3909 16.6029 0
+-13.7473 19.7036 0
+-13.1769 22.1555 0
+-12.618 23.8214 0
+-11.995 24.6031 0
+-11.2351 24.4607 0
+-10.2809 23.4368 0
+-9.10232 21.6481 0
+-7.70862 19.2473 0
+-6.15721 16.3961 0
+-4.55191 13.2708 0
+-3.02783 10.0756 0
+-1.72605 7.03017 0
+-0.763435 4.33952 0
+-0.200506 2.17573 0
+-0.00475394 0.681952 0
+-0.00102275 0.0109506 0
+-0.000222679 -0.000657146 0
+-5.9051e-05 -0.000181886 0
+4.28925e-05 -0.000129344 0
+0.00203837 -0.00313177 0
+0.026217 -0.080863 0
+-0.111602 -3.18821 0
+-1.14136 -9.09375 0
+-3.34771 -16.7933 0
+-6.63558 -25.6053 0
+-10.6738 -34.9155 0
+-15.0141 -44.1838 0
+-19.2058 -52.9156 0
+-22.8958 -60.6033 0
+-25.8906 -66.7033 0
+-28.1697 -70.6927 0
+-29.8558 -72.1771 0
+-31.1569 -70.9732 0
+-32.3041 -67.118 0
+-33.5021 -60.8238 0
+-34.9017 -52.4357 0
+-36.5933 -42.4233 0
+-38.6092 -31.3848 0
+-40.9229 -20.0303 0
+-43.4482 -9.12865 0
+-46.0441 0.574573 0
+-48.5364 8.45425 0
+-50.7534 14.0992 0
+-52.5637 17.3694 0
+-53.9022 18.384 0
+-54.7759 17.4399 0
+-55.248 14.9101 0
+-55.4084 11.1804 0
+-55.3417 6.64556 0
+-55.105 1.73354 0
+-54.7237 -3.08584 0
+-54.2018 -7.32715 0
+-53.5357 -10.5366 0
+-52.7229 -12.341 0
+-51.7622 -12.4886 0
+-50.6499 -10.8723 0
+-49.3805 -7.52519 0
+-47.9512 -2.58918 0
+-46.3702 3.72129 0
+-44.6626 11.1293 0
+-42.8734 19.2776 0
+-41.0612 27.7141 0
+-39.2846 35.9185 0
+-37.5817 43.3701 0
+-35.9508 49.6195 0
+-34.3406 54.3266 0
+-32.6562 57.2562 0
+-30.7801 58.2604 0
+-28.6044 57.2729 0
+-26.067 54.3332 0
+-23.1799 49.6321 0
+-20.0383 43.5556 0
+-16.8037 36.6838 0
+-13.6649 29.7018 0
+-10.7971 23.2244 0
+-8.33796 17.6103 0
+-6.39019 12.8745 0
+-5.04248 8.74582 0
+-2.14799 4.79447 0
+-0.897579 1.58969 0
+-0.897579 0.674286 0
+-0.751129 -0.163675 0
+-1.54307 -0.306782 0
+-3.21401 -0.595227 0
+-3.52727 -1.18318 0
+-4.11906 -2.14787 0
+-5.07114 -3.5827 0
+-6.41029 -5.62757 0
+-8.08228 -8.29254 0
+-9.9591 -11.3832 0
+-11.8822 -14.5595 0
+-13.716 -17.4551 0
+-15.3809 -19.773 0
+-16.8559 -21.3308 0
+-18.1638 -22.061 0
+-19.3527 -21.9752 0
+-20.479 -21.1081 0
+-21.5921 -19.4832 0
+-22.7216 -17.1369 0
+-23.8731 -14.1813 0
+-25.0304 -10.8373 0
+-26.1601 -7.39257 0
+-27.215 -4.12028 0
+-28.1445 -1.22391 0
+-28.9102 1.16202 0
+-29.5006 2.94913 0
+-29.9326 4.08704 0
+-30.2371 4.56673 0
+-30.443 4.4142 0
+-30.5697 3.67921 0
+-30.6295 2.44312 0
+-30.6292 0.843392 0
+-30.5713 -0.922087 0
+-30.4529 -2.63408 0
+-30.2671 -4.10564 0
+-30.0035 -5.20147 0
+-29.6439 -5.81525 0
+-29.16 -5.84509 0
+-28.5207 -5.20092 0
+-27.707 -3.83144 0
+-26.7255 -1.73885 0
+-25.6091 1.02234 0
+-24.4078 4.34019 0
+-23.1767 8.029 0
+-21.9669 11.83 0
+-20.8142 15.4503 0
+-19.7288 18.6182 0
+-18.6887 21.1155 0
+-17.6447 22.7774 0
+-16.5326 23.491 0
+-15.2872 23.2153 0
+-13.853 22.0027 0
+-12.1977 19.9928 0
+-10.3287 17.3783 0
+-8.30712 14.3746 0
+-6.24804 11.2118 0
+-4.30147 8.12904 0
+-2.6206 5.34931 0
+-1.32622 3.04516 0
+-0.476709 1.32623 0
+-0.0580564 0.263304 0
+-0.0158181 -0.0312875 0
+-0.00587884 -0.0105963 0
+-0.00373118 -0.00232946 0
+-0.00322333 -0.000637096 0
+0.00509205 -0.011447 0
+0.129269 -0.20504 0
+-0.201783 -2.85714 0
+-1.88939 -7.40608 0
+-5.09624 -13.5863 0
+-9.65827 -21.0431 0
+-15.1709 -29.4026 0
+-21.0946 -38.2597 0
+-26.8904 -47.1195 0
+-32.1434 -55.3499 0
+-36.6361 -62.2102 0
+-40.3547 -66.9737 0
+-43.4403 -69.091 0
+-46.1116 -68.3016 0
+-48.5885 -64.6407 0
+-51.0429 -58.369 0
+-53.5824 -49.8958 0
+-56.2596 -39.7458 0
+-59.0849 -28.559 0
+-62.0278 -17.087 0
+-65.0065 -6.14955 0
+-67.8842 3.45267 0
+-70.4875 11.058 0
+-72.6474 16.2596 0
+-74.2474 18.9698 0
+-75.2564 19.3934 0
+-75.7347 17.9186 0
+-75.8092 14.9851 0
+-75.6303 11.0019 0
+-75.3259 6.3415 0
+-74.973 1.38101 0
+-74.5952 -3.46322 0
+-74.1805 -7.74149 0
+-73.7025 -11.0142 0
+-73.1313 -12.9119 0
+-72.431 -13.1885 0
+-71.5547 -11.7483 0
+-70.4453 -8.63437 0
+-69.0479 -3.98627 0
+-67.3275 2.00109 0
+-65.2834 9.08542 0
+-62.9554 16.9498 0
+-60.4168 25.1756 0
+-57.7541 33.2559 0
+-55.0388 40.6549 0
+-52.3008 46.8816 0
+-49.5136 51.5394 0
+-46.5971 54.3398 0
+-43.4378 55.1011 0
+-39.9233 53.7585 0
+-35.9859 50.3958 0
+-31.643 45.2892 0
+-27.0187 38.9314 0
+-22.3298 31.9949 0
+-17.8362 25.2081 0
+-13.7786 19.1668 0
+-10.3359 14.1675 0
+-7.62272 10.1613 0
+-5.72762 6.85072 0
+-2.38521 3.83967 0
+-0.944721 1.3195 0
+-0.944721 0.706182 0
+-0.683514 -0.149697 0
+-1.3897 -0.265583 0
+-2.86365 -0.483099 0
+-3.13887 -0.907947 0
+-3.6995 -1.58723 0
+-4.65517 -2.627 0
+-6.06275 -4.21995 0
+-7.8916 -6.46365 0
+-10.0257 -9.24905 0
+-12.3066 -12.2785 0
+-14.5904 -15.1712 0
+-16.7832 -17.5802 0
+-18.8454 -19.2686 0
+-20.7763 -20.13 0
+-22.5959 -20.1555 0
+-24.3285 -19.3755 0
+-25.9884 -17.8231 0
+-27.5711 -15.554 0
+-29.0527 -12.6996 0
+-30.3966 -9.49324 0
+-31.5606 -6.22843 0
+-32.5024 -3.17834 0
+-33.1888 -0.537303 0
+-33.6111 1.58446 0
+-33.7966 3.13473 0
+-33.8049 4.09549 0
+-33.7085 4.47054 0
+-33.5714 4.27722 0
+-33.4386 3.5466 0
+-33.3382 2.34278 0
+-33.2847 0.790053 0
+-33.2813 -0.925292 0
+-33.3208 -2.59447 0
+-33.3875 -4.03885 0
+-33.4568 -5.13194 0
+-33.4907 -5.78119 0
+-33.4343 -5.90139 0
+-33.2238 -5.41128 0
+-32.8046 -4.25048 0
+-32.1472 -2.39613 0
+-31.2509 0.126144 0
+-30.1371 3.22651 0
+-28.8409 6.73288 0
+-27.4046 10.3938 0
+-25.8706 13.9164 0
+-24.2722 17.0198 0
+-22.6258 19.4691 0
+-20.9321 21.0837 0
+-19.182 21.741 0
+-17.3616 21.3949 0
+-15.455 20.0961 0
+-13.4512 17.989 0
+-11.3591 15.2862 0
+-9.22352 12.2391 0
+-7.12981 9.11811 0
+-5.19108 6.19034 0
+-3.52423 3.68248 0
+-2.22375 1.7447 0
+-1.34022 0.442715 0
+-0.859969 -0.216932 0
+-0.60889 -0.282359 0
+-0.457939 -0.161542 0
+-0.396946 -0.0633171 0
+-0.393673 -0.00390467 0
+-0.383551 -0.0215615 0
+-0.219848 -0.368731 0
+-1.01672 -2.06023 0
+-3.12007 -5.30267 0
+-6.66024 -10.0461 0
+-11.5109 -16.1923 0
+-17.3288 -23.5844 0
+-23.6559 -31.9324 0
+-30.0448 -40.7302 0
+-36.1652 -49.2293 0
+-41.8525 -56.5226 0
+-47.0942 -61.7317 0
+-51.9704 -64.2144 0
+-56.5802 -63.6914 0
+-60.9834 -60.2371 0
+-65.1778 -54.1742 0
+-69.1129 -45.9603 0
+-72.7251 -36.1331 0
+-75.9665 -25.3171 0
+-78.8096 -14.2435 0
+-81.2287 -3.72995 0
+-83.1814 5.40588 0
+-84.6088 12.4858 0
+-85.4607 17.1119 0
+-85.7322 19.2418 0
+-85.4907 19.1523 0
+-84.8783 17.3066 0
+-84.087 14.1941 0
+-83.3136 10.229 0
+-82.714 5.74225 0
+-82.373 1.04037 0
+-82.3023 -3.53362 0
+-82.4593 -7.58408 0
+-82.7715 -10.7017 0
+-83.149 -12.5341 0
+-83.4846 -12.8526 0
+-83.6512 -11.5813 0
+-83.5078 -8.77753 0
+-82.9172 -4.57663 0
+-81.7716 0.855761 0
+-80.0156 7.32969 0
+-77.6588 14.5932 0
+-74.7719 22.2889 0
+-71.4651 29.9493 0
+-67.8544 37.0443 0
+-64.0259 43.0532 0
+-60.0128 47.5264 0
+-55.7926 50.1196 0
+-51.305 50.6135 0
+-46.4871 48.9406 0
+-41.3186 45.2273 0
+-35.8625 39.8332 0
+-30.2829 33.3517 0
+-24.8232 26.5352 0
+-19.7484 20.1334 0
+-15.2776 14.696 0
+-11.5437 10.4337 0
+-8.6041 7.22167 0
+-6.49813 4.74476 0
+-2.77688 2.67598 0
+-1.10853 0.919844 0
+-1.10853 0.682695 0
+-0.628108 -0.142321 0
+-1.26392 -0.242439 0
+-2.56956 -0.411896 0
+-2.76543 -0.712075 0
+-3.20088 -1.15176 0
+-3.99898 -1.82887 0
+-5.2522 -2.9667 0
+-6.98073 -4.73509 0
+-9.11946 -7.11028 0
+-11.5444 -9.85344 0
+-14.1195 -12.5961 0
+-16.7334 -14.9662 0
+-19.3134 -16.6886 0
+-21.8192 -17.624 0
+-24.2305 -17.7442 0
+-26.5306 -17.0753 0
+-28.6921 -15.6615 0
+-30.669 -13.577 0
+-32.4011 -10.9674 0
+-33.8272 -8.06704 0
+-34.8973 -5.15815 0
+-35.5809 -2.49464 0
+-35.8734 -0.24462 0
+-35.8061 1.51722 0
+-35.4505 2.77931 0
+-34.9105 3.55564 0
+-34.2999 3.85997 0
+-33.7192 3.69671 0
+-33.2445 3.07205 0
+-32.926 2.02437 0
+-32.7907 0.654828 0
+-32.8441 -0.871722 0
+-33.0732 -2.36523 0
+-33.4503 -3.66167 0
+-33.9342 -4.64786 0
+-34.4667 -5.24858 0
+-34.9686 -5.3994 0
+-35.3461 -5.03363 0
+-35.507 -4.08945 0
+-35.3766 -2.52644 0
+-34.905 -0.345349 0
+-34.0667 2.38833 0
+-32.8593 5.52561 0
+-31.304 8.83862 0
+-29.4437 12.0562 0
+-27.3362 14.9123 0
+-25.0467 17.1796 0
+-22.6434 18.6805 0
+-20.1952 19.2929 0
+-17.7653 18.965 0
+-15.4021 17.733 0
+-13.1367 15.7237 0
+-10.9898 13.1394 0
+-8.98576 10.235 0
+-7.1609 7.29327 0
+-5.56184 4.5913 0
+-4.23557 2.35624 0
+-3.21682 0.725977 0
+-2.51158 -0.262505 0
+-2.06955 -0.658941 0
+-1.75061 -0.601285 0
+-1.53396 -0.37818 0
+-1.44579 -0.151468 0
+-1.4784 0.028716 0
+-1.59964 0.0996953 0
+-1.82747 -0.140874 0
+-2.70976 -1.17791 0
+-4.62932 -3.38305 0
+-7.73063 -6.94467 0
+-11.9575 -11.9653 0
+-17.1105 -18.4313 0
+-22.9279 -26.1149 0
+-29.1691 -34.4888 0
+-35.6685 -42.7296 0
+-42.3409 -49.8499 0
+-49.1444 -54.9279 0
+-56.0244 -57.334 0
+-62.8677 -56.8477 0
+-69.4839 -53.6205 0
+-75.6248 -48.0329 0
+-81.0327 -40.5519 0
+-85.4993 -31.6661 0
+-88.9076 -21.9083 0
+-91.2409 -11.9097 0
+-92.5594 -2.41099 0
+-92.9658 5.81282 0
+-92.5815 12.1019 0
+-91.5416 16.0725 0
+-90.0046 17.7051 0
+-88.1616 17.3098 0
+-86.2351 15.3805 0
+-84.4603 12.4197 0
+-83.0535 8.82249 0
+-82.1768 4.86582 0
+-81.9131 0.777016 0
+-82.2618 -3.18461 0
+-83.1518 -6.69374 0
+-84.4612 -9.39195 0
+-86.0307 -10.9643 0
+-87.6692 -11.2138 0
+-89.1585 -10.0917 0
+-90.2662 -7.66959 0
+-90.7686 -4.07395 0
+-90.4804 0.567872 0
+-89.2828 6.13232 0
+-87.142 12.4526 0
+-84.1115 19.2585 0
+-80.3136 26.1516 0
+-75.9039 32.6348 0
+-71.0302 38.1795 0
+-65.8017 42.2979 0
+-60.2801 44.5981 0
+-54.495 44.8283 0
+-48.4764 42.9221 0
+-42.2951 39.046 0
+-36.0909 33.6289 0
+-30.0733 27.3342 0
+-24.4855 20.9474 0
+-19.541 15.1889 0
+-15.3662 10.5212 0
+-11.9809 7.04843 0
+-9.33211 4.57288 0
+-7.36849 2.78114 0
+-3.32552 1.44647 0
+-1.40019 0.39638 0
+-1.40019 0.561286 0
+-0.582637 -0.13786 0
+-1.16587 -0.231864 0
+-2.34491 -0.376916 0
+-2.4559 -0.601078 0
+-2.73381 -0.873838 0
+-3.29907 -1.26359 0
+-4.27298 -1.99277 0
+-5.73376 -3.27428 0
+-7.68559 -5.15841 0
+-10.0595 -7.47946 0
+-12.7414 -9.91414 0
+-15.6069 -12.1006 0
+-18.5465 -13.749 0
+-21.4753 -14.6951 0
+-24.3299 -14.8895 0
+-27.0546 -14.3505 0
+-29.5855 -13.1304 0
+-31.843 -11.3193 0
+-33.7388 -9.07147 0
+-35.1941 -6.61157 0
+-36.1573 -4.19485 0
+-36.6127 -2.03913 0
+-36.5841 -0.273086 0
+-36.1364 1.06968 0
+-35.3734 2.01644 0
+-34.4262 2.60851 0
+-33.4329 2.8668 0
+-32.5189 2.78275 0
+-31.7842 2.33749 0
+-31.2999 1.54013 0
+-31.1062 0.461217 0
+-31.2126 -0.765176 0
+-31.6012 -1.97655 0
+-32.2329 -3.02986 0
+-33.0523 -3.82831 0
+-33.9867 -4.31415 0
+-34.9426 -4.44336 0
+-35.8094 -4.16667 0
+-36.4701 -3.42866 0
+-36.8144 -2.182 0
+-36.7485 -0.411159 0
+-36.201 1.84089 0
+-35.1299 4.45466 0
+-33.5308 7.23955 0
+-31.44 9.96547 0
+-28.9318 12.4042 0
+-26.111 14.3588 0
+-23.1045 15.674 0
+-20.0518 16.2402 0
+-17.0896 16.0028 0
+-14.3335 14.9769 0
+-11.8641 13.2543 0
+-9.72533 11.0006 0
+-7.93097 8.44067 0
+-6.47425 5.83657 0
+-5.33393 3.45101 0
+-4.47849 1.50081 0
+-3.86845 0.115972 0
+-3.45405 -0.676887 0
+-3.1677 -0.945263 0
+-2.93468 -0.834278 0
+-2.76917 -0.543663 0
+-2.71265 -0.207969 0
+-2.78226 0.098346 0
+-2.97755 0.295015 0
+-3.34108 0.222684 0
+-4.10692 -0.412029 0
+-5.53973 -1.95019 0
+-7.80533 -4.67902 0
+-10.9671 -8.80348 0
+-15.0249 -14.3733 0
+-19.9609 -21.1788 0
+-25.7666 -28.6829 0
+-32.4386 -36.0574 0
+-39.9424 -42.3458 0
+-48.1651 -46.7049 0
+-56.8803 -48.6184 0
+-65.7438 -47.9839 0
+-74.3226 -45.0412 0
+-82.1516 -40.2034 0
+-88.8047 -33.8985 0
+-93.9621 -26.5082 0
+-97.4569 -18.4131 0
+-99.2858 -10.0804 0
+-99.5875 -2.10883 0
+-98.6008 4.82662 0
+-96.6203 10.1218 0
+-93.96 13.4126 0
+-90.9306 14.6761 0
+-87.8258 14.2054 0
+-84.9163 12.4712 0
+-82.4431 9.94675 0
+-80.6076 6.9873 0
+-79.5558 3.81428 0
+-79.3623 0.583748 0
+-80.0217 -2.5249 0
+-81.4506 -5.26456 0
+-83.4964 -7.34594 0
+-85.9485 -8.5119 0
+-88.5507 -8.61124 0
+-91.0159 -7.62627 0
+-93.0464 -5.6389 0
+-94.3598 -2.76027 0
+-94.7179 0.926198 0
+-93.9534 5.3681 0
+-91.9914 10.4907 0
+-88.8563 16.1236 0
+-84.6612 21.9566 0
+-79.5766 27.5503 0
+-73.7923 32.3953 0
+-67.4843 35.99 0
+-60.8033 37.9172 0
+-53.8854 37.9105 0
+-46.8782 35.9149 0
+-39.9658 32.1336 0
+-33.3761 27.0392 0
+-27.3577 21.3159 0
+-22.1276 15.7173 0
+-17.8114 10.8727 0
+-14.4075 7.11728 0
+-11.7988 4.43976 0
+-9.80947 2.58352 0
+-8.28351 1.25518 0
+-3.96811 0.333234 0
+-1.7915 -0.190415 0
+-1.7915 0.33413 0
+-0.540709 -0.131679 0
+-1.08395 -0.224282 0
+-2.17221 -0.361347 0
+-2.22234 -0.550942 0
+-2.36652 -0.729645 0
+-2.70729 -0.922805 0
+-3.37734 -1.3227 0
+-4.49987 -2.15172 0
+-6.14438 -3.51387 0
+-8.30269 -5.32112 0
+-10.8946 -7.32222 0
+-13.7952 -9.19995 0
+-16.8682 -10.6759 0
+-19.9906 -11.5726 0
+-23.0612 -11.8189 0
+-25.9921 -11.4195 0
+-28.6945 -10.4279 0
+-31.0706 -8.94308 0
+-33.0217 -7.12028 0
+-34.4673 -5.16581 0
+-35.3639 -3.29821 0
+-35.7124 -1.69044 0
+-35.5577 -0.427688 0
+-34.9822 0.494249 0
+-34.0985 1.13286 0
+-33.0386 1.54866 0
+-31.9393 1.76755 0
+-30.9286 1.77218 0
+-30.1159 1.52489 0
+-29.5845 1.00874 0
+-29.3851 0.261894 0
+-29.5323 -0.617895 0
+-30.0065 -1.50228 0
+-30.762 -2.27425 0
+-31.7355 -2.85473 0
+-32.8489 -3.20069 0
+-34.008 -3.28417 0
+-35.1025 -3.07206 0
+-36.0109 -2.52017 0
+-36.6088 -1.58403 0
+-36.7783 -0.241534 0
+-36.419 1.48166 0
+-35.4609 3.49665 0
+-33.878 5.65675 0
+-31.6963 7.78374 0
+-28.993 9.70098 0
+-25.8905 11.2564 0
+-22.5465 12.33 0
+-19.1402 12.8339 0
+-15.8538 12.7165 0
+-12.8497 11.9728 0
+-10.2501 10.6547 0
+-8.12639 8.87692 0
+-6.49795 6.81226 0
+-5.33714 4.67579 0
+-4.57883 2.69271 0
+-4.13363 1.05565 0
+-3.90352 -0.114111 0
+-3.7953 -0.785076 0
+-3.73104 -1.0095 0
+-3.66464 -0.900651 0
+-3.61021 -0.59806 0
+-3.60314 -0.215008 0
+-3.6664 0.161628 0
+-3.81009 0.43874 0
+-4.0637 0.476329 0
+-4.53249 0.0567876 0
+-5.38349 -1.09915 0
+-6.79369 -3.26877 0
+-8.93817 -6.65895 0
+-11.9979 -11.3135 0
+-16.1587 -17.0179 0
+-21.5845 -23.2571 0
+-28.3659 -29.2758 0
+-36.4621 -34.2494 0
+-45.6617 -37.5051 0
+-55.5812 -38.6986 0
+-65.7047 -37.86 0
+-75.4498 -35.2958 0
+-84.243 -31.4098 0
+-91.5904 -26.5506 0
+-97.1351 -20.963 0
+-100.694 -14.8532 0
+-102.273 -8.5012 0
+-102.05 -2.33208 0
+-100.339 3.11648 0
+-97.5422 7.32543 0
+-94.0876 9.95829 0
+-90.3797 10.9684 0
+-86.7649 10.5908 0
+-83.519 9.22561 0
+-80.8533 7.28129 0
+-78.9265 5.06073 0
+-77.8509 2.7389 0
+-77.6875 0.420532 0
+-78.4336 -1.77853 0
+-80.0121 -3.6859 0
+-82.2673 -5.09048 0
+-84.9728 -5.80613 0
+-87.8483 -5.73557 0
+-90.5833 -4.89105 0
+-92.864 -3.35797 0
+-94.3979 -1.22611 0
+-94.936 1.46447 0
+-94.2923 4.72461 0
+-92.362 8.56051 0
+-89.1323 12.8941 0
+-84.6812 17.5056 0
+-79.1596 22.0289 0
+-72.764 25.9997 0
+-65.711 28.937 0
+-58.2258 30.4321 0
+-50.5467 30.2315 0
+-42.9367 28.3049 0
+-35.687 24.8838 0
+-29.0976 20.4499 0
+-23.4322 15.6504 0
+-18.8577 11.1429 0
+-15.3992 7.41415 0
+-12.9341 4.65219 0
+-11.235 2.7407 0
+-10.0402 1.38867 0
+-9.11789 0.33288 0
+-4.57821 -0.475222 0
+-2.20768 -0.721844 0
+-2.20768 0.0460767 0
+-0.494287 -0.120076 0
+-0.999828 -0.210255 0
+-2.01277 -0.344713 0
+-2.04047 -0.52323 0
+-2.10843 -0.661678 0
+-2.28978 -0.741439 0
+-2.70617 -0.906297 0
+-3.49904 -1.35882 0
+-4.78193 -2.23095 0
+-6.59954 -3.50349 0
+-8.91322 -5.00851 0
+-11.616 -6.49716 0
+-14.5654 -7.72636 0
+-17.6171 -8.52091 0
+-20.643 -8.79289 0
+-23.5323 -8.53007 0
+-26.1818 -7.77835 0
+-28.49 -6.63473 0
+-30.3649 -5.24526 0
+-31.7403 -3.79032 0
+-32.5907 -2.44771 0
+-32.9353 -1.34577 0
+-32.831 -0.531944 0
+-32.3612 0.0245252 0
+-31.6258 0.397519 0
+-30.7334 0.656353 0
+-29.7956 0.829775 0
+-28.9214 0.898095 0
+-28.2117 0.815218 0
+-27.7501 0.547148 0
+-27.5924 0.104275 0
+-27.7585 -0.45167 0
+-28.232 -1.02877 0
+-28.9677 -1.53848 0
+-29.9029 -1.91944 0
+-30.964 -2.13953 0
+-32.0672 -2.18095 0
+-33.1166 -2.02254 0
+-34.0044 -1.63235 0
+-34.6135 -0.974819 0
+-34.8258 -0.0291329 0
+-34.5342 1.19009 0
+-33.6585 2.62104 0
+-32.1615 4.15975 0
+-30.0581 5.68044 0
+-27.4172 7.06009 0
+-24.3553 8.19461 0
+-21.0277 9.00248 0
+-17.6154 9.42163 0
+-14.3078 9.40894 0
+-11.2817 8.94661 0
+-8.68002 8.05313 0
+-6.59649 6.79341 0
+-5.06656 5.28235 0
+-4.0667 3.67594 0
+-3.5216 2.14763 0
+-3.32001 0.854085 0
+-3.33674 -0.0973546 0
+-3.45524 -0.66655 0
+-3.58606 -0.878647 0
+-3.68009 -0.806588 0
+-3.73255 -0.545571 0
+-3.75941 -0.188122 0
+-3.77606 0.178311 0
+-3.79415 0.456859 0
+-3.83838 0.520589 0
+-3.97766 0.196095 0
+-4.34523 -0.731557 0
+-5.13567 -2.4783 0
+-6.59922 -5.19535 0
+-9.02654 -8.88612 0
+-12.7105 -13.3339 0
+-17.883 -18.0845 0
+-24.6405 -22.5182 0
+-32.887 -26.0026 0
+-42.3182 -28.0737 0
+-52.4552 -28.5612 0
+-62.7173 -27.5976 0
+-72.5036 -25.5091 0
+-81.2644 -22.6486 0
+-88.5501 -19.2645 0
+-94.0425 -15.4702 0
+-97.5761 -11.3192 0
+-99.1512 -6.9258 0
+-98.9343 -2.54855 0
+-97.2393 1.42177 0
+-94.4821 4.56853 0
+-91.1173 6.59379 0
+-87.5707 7.42213 0
+-84.1891 7.20943 0
+-81.2213 6.25801 0
+-78.8305 4.89065 0
+-77.1221 3.35253 0
+-76.1674 1.78433 0
+-76.0084 0.261679 0
+-76.6453 -1.14142 0
+-78.0167 -2.31437 0
+-79.9862 -3.1208 0
+-82.3459 -3.44622 0
+-84.8358 -3.24542 0
+-87.1729 -2.55381 0
+-89.0785 -1.45218 0
+-90.2984 -0.00604956 0
+-90.6137 1.77998 0
+-89.8495 3.96052 0
+-87.8852 6.59637 0
+-84.6682 9.67719 0
+-80.2231 13.0607 0
+-74.6527 16.4585 0
+-68.1282 19.4753 0
+-60.877 21.6859 0
+-53.1732 22.7284 0
+-45.3325 22.3908 0
+-37.7038 20.6763 0
+-30.6479 17.8279 0
+-24.4942 14.2962 0
+-19.4826 10.6388 0
+-15.7104 7.37076 0
+-13.1115 4.8152 0
+-11.4823 3.02302 0
+-10.5483 1.80667 0
+-10.035 0.875362 0
+-9.70444 0.00235697 0
+-4.99155 -0.844522 0
+-2.53252 -1.05048 0
+-2.53252 -0.204657 0
+-0.436835 -0.101667 0
+-0.89603 -0.184155 0
+-1.82385 -0.311306 0
+-1.86479 -0.482288 0
+-1.91913 -0.607322 0
+-2.02531 -0.635247 0
+-2.27417 -0.657427 0
+-2.7957 -0.837264 0
+-3.71815 -1.30848 0
+-5.12156 -2.10005 0
+-7.0094 -3.12064 0
+-9.30906 -4.19746 0
+-11.8962 -5.13919 0
+-14.6272 -5.78988 0
+-17.3636 -6.05641 0
+-19.9818 -5.91182 0
+-22.3719 -5.3882 0
+-24.4374 -4.56911 0
+-26.1026 -3.58005 0
+-27.3242 -2.56867 0
+-28.1 -1.67177 0
+-28.4666 -0.979176 0
+-28.4864 -0.512031 0
+-28.2336 -0.228225 0
+-27.7831 -0.0529253 0
+-27.2077 0.0810218 0
+-26.5804 0.202498 0
+-25.9773 0.295051 0
+-25.4768 0.314797 0
+-25.1517 0.222066 0
+-25.0561 0.00872475 0
+-25.2142 -0.293523 0
+-25.6166 -0.626361 0
+-26.2262 -0.928835 0
+-26.9893 -1.1563 0
+-27.8442 -1.28463 0
+-28.7239 -1.30119 0
+-29.5542 -1.19219 0
+-30.2502 -0.936234 0
+-30.7165 -0.508498 0
+-30.8519 0.106314 0
+-30.5612 0.899458 0
+-29.7706 1.83045 0
+-28.4422 2.8314 0
+-26.5833 3.82159 0
+-24.2474 4.72423 0
+-21.5294 5.47664 0
+-18.5577 6.03087 0
+-15.4849 6.3488 0
+-12.4749 6.39899 0
+-9.68815 6.15985 0
+-7.26384 5.62883 0
+-5.30398 4.83357 0
+-3.8605 3.83889 0
+-2.92878 2.74424 0
+-2.44996 1.66882 0
+-2.32354 0.727685 0
+-2.42835 0.00747653 0
+-2.64602 -0.448849 0
+-2.88069 -0.64395 0
+-3.0704 -0.616852 0
+-3.18738 -0.428558 0
+-3.22588 -0.149594 0
+-3.19061 0.143069 0
+-3.09489 0.361167 0
+-2.97116 0.396885 0
+-2.89211 0.117067 0
+-2.99315 -0.630499 0
+-3.48292 -1.98849 0
+-4.63784 -4.0404 0
+-6.7731 -6.75081 0
+-10.1862 -9.92069 0
+-15.0813 -13.1893 0
+-21.4978 -16.1015 0
+-29.2706 -18.2297 0
+-38.042 -19.3021 0
+-47.3225 -19.2804 0
+-56.5757 -18.3441 0
+-65.2964 -16.7881 0
+-73.0592 -14.8855 0
+-79.5356 -12.7878 0
+-84.4945 -10.5109 0
+-87.8055 -8.00776 0
+-89.4526 -5.27845 0
+-89.5499 -2.45094 0
+-88.3447 0.216899 0
+-86.1911 2.41514 0
+-83.494 3.89685 0
+-80.6398 4.56819 0
+-77.9392 4.50899 0
+-75.6011 3.92004 0
+-73.7437 3.03334 0
+-72.427 2.03602 0
+-71.6849 1.04232 0
+-71.5372 0.114076 0
+-71.9803 -0.698171 0
+-72.9661 -1.32837 0
+-74.3861 -1.70066 0
+-76.0723 -1.75995 0
+-77.8165 -1.50109 0
+-79.3986 -0.971529 0
+-80.6105 -0.240189 0
+-81.2666 0.650232 0
+-81.2037 1.71725 0
+-80.2771 3.03405 0
+-78.3642 4.6835 0
+-75.3785 6.69158 0
+-71.2905 8.97277 0
+-66.1457 11.3138 0
+-60.0747 13.4043 0
+-53.2931 14.9044 0
+-46.0934 15.5287 0
+-38.8278 15.1252 0
+-31.8798 13.7283 0
+-25.6203 11.5684 0
+-20.3509 9.02685 0
+-16.2482 6.53607 0
+-13.3298 4.45238 0
+-11.4629 2.94828 0
+-10.4164 1.97651 0
+-9.93744 1.32773 0
+-9.8146 0.752527 0
+-9.88675 0.0745094 0
+-5.05978 -0.764102 0
+-2.63792 -1.06259 0
+-2.63792 -0.293662 0
+-0.365891 -0.0778235 0
+-0.762915 -0.146033 0
+-1.5762 -0.255685 0
+-1.65005 -0.408438 0
+-1.7342 -0.52316 0
+-1.83439 -0.535049 0
+-2.00034 -0.491462 0
+-2.32847 -0.509122 0
+-2.93466 -0.702271 0
+-3.91269 -1.12199 0
+-5.30004 -1.73327 0
+-7.06571 -2.43177 0
+-9.12128 -3.08359 0
+-11.3451 -3.56603 0
+-13.6063 -3.79515 0
+-15.7808 -3.73726 0
+-17.7595 -3.40945 0
+-19.4546 -2.87394 0
+-20.8079 -2.22675 0
+-21.7984 -1.57806 0
+-22.4446 -1.02553 0
+-22.7954 -0.628343 0
+-22.9141 -0.393304 0
+-22.8616 -0.280631 0
+-22.6871 -0.227375 0
+-22.4284 -0.1777 0
+-22.1199 -0.105962 0
+-21.8022 -0.0226553 0
+-21.5252 0.0379185 0
+-21.3435 0.0403357 0
+-21.3032 -0.0315027 0
+-21.4303 -0.166409 0
+-21.724 -0.332632 0
+-22.16 -0.492829 0
+-22.699 -0.617238 0
+-23.2955 -0.688151 0
+-23.9009 -0.695681 0
+-24.4628 -0.630264 0
+-24.9207 -0.478345 0
+-25.2045 -0.22468 0
+-25.2379 0.139813 0
+-24.9477 0.609287 0
+-24.276 1.15877 0
+-23.1922 1.74759 0
+-21.6995 2.32892 0
+-19.8354 2.86014 0
+-17.6672 3.3085 0
+-15.2864 3.65012 0
+-12.8027 3.8651 0
+-10.3374 3.9337 0
+-8.01491 3.83736 0
+-5.95122 3.56516 0
+-4.2407 3.12306 0
+-2.94293 2.54113 0
+-2.07311 1.87444 0
+-1.59956 1.19529 0
+-1.45062 0.578764 0
+-1.52991 0.0867763 0
+-1.73534 -0.243393 0
+-1.97637 -0.402899 0
+-2.18487 -0.408333 0
+-2.31812 -0.295278 0
+-2.35539 -0.112302 0
+-2.2941 0.0818048 0
+-2.15068 0.217772 0
+-1.9682 0.214425 0
+-1.83031 -0.0208012 0
+-1.87655 -0.584239 0
+-2.30916 -1.55587 0
+-3.3825 -2.96703 0
+-5.36852 -4.76473 0
+-8.4993 -6.78985 0
+-12.8999 -8.78858 0
+-18.5353 -10.466 0
+-25.195 -11.5697 0
+-32.5263 -11.9706 0
+-40.1043 -11.7023 0
+-47.5124 -10.9358 0
+-54.4015 -9.89876 0
+-60.5102 -8.77648 0
+-65.6528 -7.64492 0
+-69.6955 -6.46795 0
+-72.5462 -5.15686 0
+-74.1673 -3.65708 0
+-74.6047 -2.01334 0
+-74.0091 -0.378546 0
+-72.6308 1.03703 0
+-70.7809 2.04713 0
+-68.7713 2.55873 0
+-66.8583 2.59608 0
+-65.2123 2.27416 0
+-63.9215 1.74265 0
+-63.0188 1.13346 0
+-62.5123 0.53592 0
+-62.401 0.00280278 0
+-62.6706 -0.428404 0
+-63.2787 -0.720235 0
+-64.1414 -0.837859 0
+-65.1358 -0.765393 0
+-66.1167 -0.520087 0
+-66.9392 -0.148988 0
+-67.4746 0.295384 0
+-67.6127 0.788392 0
+-67.2505 1.35517 0
+-66.281 2.06461 0
+-64.5913 2.99387 0
+-62.0777 4.17808 0
+-58.6735 5.56862 0
+-54.3795 7.01989 0
+-49.2873 8.3122 0
+-43.5873 9.20442 0
+-37.559 9.5004 0
+-31.5435 9.10967 0
+-25.8992 8.08408 0
+-20.9468 6.616 0
+-16.9116 4.99166 0
+-13.8829 3.50743 0
+-11.8058 2.37523 0
+-10.5136 1.65613 0
+-9.79346 1.25637 0
+-9.45849 0.99276 0
+-9.39836 0.692396 0
+-9.57888 0.255039 0
+-4.7255 -0.385965 0
+-2.44547 -0.753275 0
+-2.44547 -0.130291 0
+-0.284154 -0.0520931 0
+-0.602535 -0.101248 0
+-1.26557 -0.183729 0
+-1.37071 -0.3033 0
+-1.49615 -0.397712 0
+-1.62354 -0.407647 0
+-1.7636 -0.351389 0
+-1.971 -0.30171 0
+-2.33228 -0.34098 0
+-2.93514 -0.519125 0
+-3.8359 -0.83249 0
+-5.03979 -1.22786 0
+-6.49949 -1.62387 0
+-8.12801 -1.93749 0
+-9.81758 -2.10555 0
+-11.4574 -2.09738 0
+-12.9481 -1.91872 0
+-14.2133 -1.60875 0
+-15.2093 -1.23074 0
+-15.9303 -0.856937 0
+-16.4061 -0.549756 0
+-16.6894 -0.34504 0
+-16.8387 -0.2439 0
+-16.9022 -0.217153 0
+-16.9088 -0.220746 0
+-16.8711 -0.215378 0
+-16.7954 -0.181631 0
+-16.6936 -0.12441 0
+-16.5898 -0.0658466 0
+-16.5181 -0.0313672 0
+-16.5131 -0.0365126 0
+-16.5987 -0.0807453 0
+-16.7814 -0.149952 0
+-17.0498 -0.224383 0
+-17.3806 -0.286458 0
+-17.7444 -0.324291 0
+-18.1097 -0.330359 0
+-18.442 -0.297983 0
+-18.7012 -0.219116 0
+-18.8403 -0.0855311 0
+-18.8076 0.107089 0
+-18.5529 0.354695 0
+-18.0372 0.643077 0
+-17.2399 0.950256 0
+-16.163 1.25204 0
+-14.8305 1.52773 0
+-13.2848 1.7628 0
+-11.5823 1.94761 0
+-9.79088 2.07369 0
+-7.98769 2.13053 0
+-6.25599 2.10567 0
+-4.67929 1.98846 0
+-3.33239 1.77617 0
+-2.27071 1.47946 0
+-1.52054 1.12427 0
+-1.07385 0.748608 0
+-0.890079 0.395002 0
+-0.90477 0.101481 0
+-1.04238 -0.105772 0
+-1.22919 -0.21607 0
+-1.40321 -0.234295 0
+-1.51967 -0.178798 0
+-1.55312 -0.0788356 0
+-1.49867 0.0273734 0
+-1.37481 0.093927 0
+-1.22891 0.0685444 0
+-1.14505 -0.104642 0
+-1.25084 -0.478432 0
+-1.71684 -1.08984 0
+-2.74179 -1.94205 0
+-4.51983 -2.98665 0
+-7.19355 -4.11608 0
+-10.8059 -5.17614 0
+-15.2703 -6.00157 0
+-20.3744 -6.46552 0
+-25.8219 -6.52297 0
+-31.2974 -6.22664 0
+-36.529 -5.70405 0
+-41.3241 -5.10344 0
+-45.5677 -4.53268 0
+-49.192 -4.02051 0
+-52.1409 -3.51884 0
+-54.3539 -2.94371 0
+-55.7778 -2.23304 0
+-56.3999 -1.39106 0
+-56.2808 -0.497526 0
+-55.5646 0.320956 0
+-54.4585 0.941111 0
+-53.1883 1.28866 0
+-51.9511 1.35889 0
+-50.8835 1.20665 0
+-50.0573 0.916507 0
+-49.4951 0.571343 0
+-49.1932 0.234052 0
+-49.1362 -0.054128 0
+-49.2988 -0.265704 0
+-49.6387 -0.380277 0
+-50.0908 -0.385632 0
+-50.5715 -0.284669 0
+-50.9915 -0.100043 0
+-51.2716 0.131206 0
+-51.3503 0.374166 0
+-51.1781 0.616292 0
+-50.7023 0.879374 0
+-49.8516 1.21394 0
+-48.5332 1.67559 0
+-46.6475 2.29239 0
+-44.117 3.03816 0
+-40.9212 3.82411 0
+-37.1233 4.5144 0
+-32.8805 4.96164 0
+-28.4314 5.0513 0
+-24.0629 4.74115 0
+-20.0609 4.08214 0
+-16.656 3.2111 0
+-13.9775 2.31313 0
+-12.0324 1.56237 0
+-10.7191 1.06197 0
+-9.87276 0.809766 0
+-9.32663 0.710242 0
+-8.96737 0.633492 0
+-8.76795 0.492982 0
+-8.79768 0.284773 0
+-4.08543 0.0165199 0
+-2.00442 -0.269394 0
+-2.00442 0.261879 0
+-0.198824 -0.0288721 0
+-0.428331 -0.0581599 0
+-0.914795 -0.109355 0
+-1.0317 -0.186394 0
+-1.17938 -0.250028 0
+-1.32789 -0.259126 0
+-1.46157 -0.217706 0
+-1.59938 -0.163884 0
+-1.79432 -0.146034 0
+-2.11459 -0.198846 0
+-2.61786 -0.329209 0
+-3.3304 -0.515306 0
+-4.23812 -0.716133 0
+-5.29 -0.885589 0
+-6.40988 -0.985649 0
+-7.51185 -0.995394 0
+-8.51566 -0.914888 0
+-9.36031 -0.764071 0
+-10.0139 -0.577164 0
+-10.4773 -0.393482 0
+-10.7804 -0.246674 0
+-10.9698 -0.15556 0
+-11.0938 -0.119942 0
+-11.1877 -0.123168 0
+-11.268 -0.140434 0
+-11.3341 -0.149287 0
+-11.3779 -0.137847 0
+-11.3947 -0.107545 0
+-11.3907 -0.069826 0
+-11.383 -0.0391348 0
+-11.3935 -0.0259101 0
+-11.4415 -0.0327975 0
+-11.5363 -0.0551235 0
+-11.6764 -0.0843008 0
+-11.8512 -0.111618 0
+-12.0451 -0.130346 0
+-12.2398 -0.135667 0
+-12.4143 -0.123457 0
+-12.5439 -0.0894724 0
+-12.5995 -0.0299171 0
+-12.5492 0.0567825 0
+-12.3627 0.16815 0
+-12.0167 0.297124 0
+-11.4999 0.433444 0
+-10.8142 0.566401 0
+-9.97396 0.687484 0
+-9.00261 0.791462 0
+-7.93043 0.87544 0
+-6.7934 0.936663 0
+-5.63346 0.970603 0
+-4.49849 0.970706 0
+-3.44024 0.930211 0
+-2.50942 0.845353 0
+-1.74845 0.718498 0
+-1.18381 0.559644 0
+-0.82063 0.385436 0
+-0.64155 0.21593 0
+-0.610386 0.0703264 0
+-0.679292 -0.0368566 0
+-0.797172 -0.0981788 0
+-0.917363 -0.114092 0
+-1.00353 -0.0926135 0
+-1.03392 -0.0484361 0
+-1.00468 -0.00185448 0
+-0.933185 0.0224437 0
+-0.861574 -0.00305469 0
+-0.859997 -0.106205 0
+-1.02747 -0.310944 0
+-1.48668 -0.630612 0
+-2.36909 -1.05961 0
+-3.78942 -1.56629 0
+-5.8137 -2.09176 0
+-8.43117 -2.55861 0
+-11.5426 -2.89007 0
+-14.9739 -3.03415 0
+-18.5138 -2.98295 0
+-21.9633 -2.77706 0
+-25.1765 -2.49071 0
+-28.0774 -2.20248 0
+-30.6459 -1.96409 0
+-32.8844 -1.78187 0
+-34.7834 -1.61975 0
+-36.3049 -1.42205 0
+-37.393 -1.14486 0
+-38.0034 -0.780605 0
+-38.1364 -0.364395 0
+-37.8549 0.039485 0
+-37.2769 0.363236 0
+-36.5486 0.560371 0
+-35.8086 0.618919 0
+-35.1613 0.559393 0
+-34.6665 0.421745 0
+-34.3449 0.249789 0
+-34.1912 0.0803906 0
+-34.1852 -0.0600226 0
+-34.2968 -0.154044 0
+-34.4857 -0.191397 0
+-34.7019 -0.169402 0
+-34.8914 -0.0950899 0
+-35.0058 0.0143948 0
+-35.0107 0.136205 0
+-34.8876 0.251027 0
+-34.6245 0.353292 0
+-34.2016 0.456533 0
+-33.5772 0.589556 0
+-32.6851 0.78346 0
+-31.447 1.05438 0
+-29.7984 1.38954 0
+-27.7175 1.7433 0
+-25.2491 2.04602 0
+-22.5111 2.22368 0
+-19.6819 2.22205 0
+-16.9681 2.0274 0
+-14.5618 1.6758 0
+-12.5968 1.24616 0
+-11.1202 0.836483 0
+-10.0878 0.530053 0
+-9.38968 0.363814 0
+-8.89386 0.313946 0
+-8.49278 0.309169 0
+-8.13154 0.272256 0
+-7.81545 0.176884 0
+-7.62574 0.0950702 0
+-3.37454 0.192952 0
+-1.52402 0.135453 0
+-1.52402 0.687588 0
+-0.119538 -0.0118237 0
+-0.261106 -0.0248209 0
+-0.566649 -0.0483836 0
+-0.668018 -0.085023 0
+-0.80182 -0.116223 0
+-0.939091 -0.121851 0
+-1.05509 -0.101703 0
+-1.14795 -0.0710205 0
+-1.2432 -0.0507724 0
+-1.38448 -0.0575609 0
+-1.61659 -0.0970969 0
+-1.969 -0.162888 0
+-2.4457 -0.239424 0
+-3.02351 -0.307766 0
+-3.65785 -0.351306 0
+-4.29313 -0.360103 0
+-4.87498 -0.333028 0
+-5.36149 -0.277549 0
+-5.73129 -0.20735 0
+-5.98638 -0.138375 0
+-6.14877 -0.0842707 0
+-6.2517 -0.052628 0
+-6.32832 -0.0433048 0
+-6.40202 -0.0494649 0
+-6.48156 -0.0608877 0
+-6.56268 -0.0681546 0
+-6.63453 -0.065987 0
+-6.68759 -0.054477 0
+-6.71944 -0.0379686 0
+-6.73615 -0.0224185 0
+-6.74943 -0.0126292 0
+-6.77164 -0.0105833 0
+-6.81141 -0.0153458 0
+-6.87156 -0.0241382 0
+-6.94947 -0.0337055 0
+-7.03859 -0.0412115 0
+-7.12984 -0.0444141 0
+-7.21188 -0.0414089 0
+-7.2709 -0.030446 0
+-7.29065 -0.0101586 0
+-7.25371 0.0198518 0
+-7.14401 0.0584605 0
+-6.94983 0.102945 0
+-6.66596 0.149581 0
+-6.29423 0.194679 0
+-5.84227 0.235529 0
+-5.32153 0.270733 0
+-4.74585 0.299762 0
+-4.13122 0.322037 0
+-3.49672 0.33611 0
+-2.86549 0.339484 0
+-2.26454 0.329263 0
+-1.72257 0.303382 0
+-1.26596 0.261891 0
+-0.913985 0.207677 0
+-0.674827 0.146282 0
+-0.543746 0.0848529 0
+-0.504033 0.0306193 0
+-0.530299 -0.0105852 0
+-0.593085 -0.0353862 0
+-0.663769 -0.0434021 0
+-0.719044 -0.0373313 0
+-0.74474 -0.0227319 0
+-0.738997 -0.00759062 0
+-0.714846 -0.00169983 0
+-0.702107 -0.0157861 0
+-0.748066 -0.0602377 0
+-0.915791 -0.143209 0
+-1.27837 -0.268016 0
+-1.90774 -0.430225 0
+-2.85842 -0.61558 0
+-4.14978 -0.800372 0
+-5.75285 -0.955514 0
+-7.58875 -1.05413 0
+-9.54244 -1.08042 0
+-11.4892 -1.03611 0
+-13.3252 -0.94099 0
+-14.9897 -0.826205 0
+-16.4695 -0.722579 0
+-17.7849 -0.648681 0
+-18.9625 -0.604155 0
+-20.0108 -0.571435 0
+-20.9077 -0.525113 0
+-21.6079 -0.444535 0
+-22.0647 -0.323802 0
+-22.2543 -0.174761 0
+-22.1926 -0.0221608 0
+-21.9355 0.10619 0
+-21.5646 0.189452 0
+-21.1654 0.219728 0
+-20.8083 0.20233 0
+-20.538 0.151527 0
+-20.373 0.0847483 0
+-20.3105 0.0179486 0
+-20.3339 -0.0366339 0
+-20.417 -0.0708594 0
+-20.5279 -0.0805238 0
+-20.6317 -0.0655559 0
+-20.6964 -0.0303762 0
+-20.6986 0.0166119 0
+-20.6276 0.0652876 0
+-20.4842 0.107645 0
+-20.2726 0.141675 0
+-19.9892 0.173162 0
+-19.6135 0.213885 0
+-19.1064 0.276354 0
+-18.419 0.367029 0
+-17.5104 0.480967 0
+-16.3676 0.600486 0
+-15.0205 0.69894 0
+-13.5455 0.748733 0
+-12.0545 0.730992 0
+-10.6706 0.643527 0
+-9.49861 0.503827 0
+-8.59757 0.345123 0
+-7.96682 0.205738 0
+-7.55155 0.114781 0
+-7.26729 0.0795627 0
+-7.03403 0.0806849 0
+-6.80378 0.0789172 0
+-6.56598 0.03446 0
+-6.32697 -0.0621286 0
+-6.09632 -0.135579 0
+-2.7981 0.10445 0
+-1.2585 0.256246 0
+-1.2585 0.82674 0
+-0.0557376 -0.00256998 0
+-0.123039 -0.00579096 0
+-0.271005 -0.0117415 0
+-0.334767 -0.0212603 0
+-0.421533 -0.0294555 0
+-0.512261 -0.0311216 0
+-0.587982 -0.0259786 0
+-0.641511 -0.0174888 0
+-0.681656 -0.0106247 0
+-0.729666 -0.00954826 0
+-0.810727 -0.0160331 0
+-0.944586 -0.0290265 0
+-1.13875 -0.0452547 0
+-1.38606 -0.0604496 0
+-1.66667 -0.0706989 0
+-1.95324 -0.0735238 0
+-2.21781 -0.068455 0
+-2.43832 -0.0570294 0
+-2.60341 -0.0422533 0
+-2.7141 -0.0276836 0
+-2.78199 -0.0163814 0
+-2.82455 -0.0100589 0
+-2.85915 -0.00870008 0
+-2.89783 -0.0107862 0
+-2.94469 -0.0140205 0
+-2.99659 -0.0162502 0
+-3.04636 -0.0162141 0
+-3.08699 -0.0138406 0
+-3.11492 -0.0100376 0
+-3.1312 -0.00614065 0
+-3.14051 -0.00330865 0
+-3.14896 -0.00213121 0
+-3.16175 -0.00255857 0
+-3.18179 -0.00408899 0
+-3.20945 -0.00604353 0
+-3.24289 -0.00777 0
+-3.27859 -0.0087143 0
+-3.31159 -0.00840337 0
+-3.3356 -0.00643145 0
+-3.34324 -0.00251366 0
+-3.32679 0.00340302 0
+-3.27937 0.0110453 0
+-3.19624 0.0198199 0
+-3.07561 0.0289527 0
+-2.91864 0.03771 0
+-2.7287 0.0455897 0
+-2.51034 0.0523809 0
+-2.26864 0.058058 0
+-2.00917 0.0625722 0
+-1.73872 0.0656657 0
+-1.46606 0.0668193 0
+-1.20217 0.0653807 0
+-0.959616 0.0608264 0
+-0.750768 0.0530442 0
+-0.585598 0.0425083 0
+-0.469584 0.0302707 0
+-0.402496 0.0177665 0
+-0.378383 0.00650819 0
+-0.386736 -0.00222966 0
+-0.414461 -0.00765741 0
+-0.448244 -0.00961627 0
+-0.476944 -0.0086283 0
+-0.493804 -0.00586793 0
+-0.498324 -0.00306775 0
+-0.497658 -0.00236162 0
+-0.507384 -0.00605682 0
+-0.551305 -0.0163124 0
+-0.659815 -0.0346945 0
+-0.86621 -0.0616146 0
+-1.20067 -0.0957578 0
+-1.68249 -0.133746 0
+-2.3125 -0.170352 0
+-3.06851 -0.199487 0
+-3.90677 -0.215852 0
+-4.7704 -0.216764 0
+-5.60312 -0.203375 0
+-6.3635 -0.180589 0
+-7.0342 -0.15548 0
+-7.62203 -0.134718 0
+-8.14866 -0.122032 0
+-8.63593 -0.11686 0
+-9.09253 -0.114814 0
+-9.50783 -0.109781 0
+-9.85563 -0.0967156 0
+-10.1055 -0.0738715 0
+-10.2368 -0.0435321 0
+-10.2479 -0.0110337 0
+-10.159 0.0173423 0
+-10.0061 0.0365995 0
+-9.83086 0.0444636 0
+-9.67013 0.0416172 0
+-9.54952 0.0309277 0
+-9.481 0.0162375 0
+-9.46434 0.00129395 0
+-9.49007 -0.0108876 0
+-9.54265 -0.0182696 0
+-9.60331 -0.019862 0
+-9.65308 -0.0157761 0
+-9.67621 -0.00722949 0
+-9.66326 0.0036744 0
+-9.6125 0.0145302 0
+-9.52834 0.0235023 0
+-9.41681 0.0301512 0
+-9.27941 0.0357756 0
+-9.10849 0.0429728 0
+-8.8866 0.0544701 0
+-8.59122 0.0716558 0
+-8.20369 0.0934463 0
+-7.71924 0.116043 0
+-7.15411 0.133809 0
+-6.54643 0.141059 0
+-5.94961 0.134177 0
+-5.41938 0.113299 0
+-4.99837 0.0828221 0
+-4.70358 0.0503358 0
+-4.52189 0.0240526 0
+-4.4166 0.00949356 0
+-4.34367 0.00663417 0
+-4.27174 0.00876118 0
+-4.19656 0.00373481 0
+-4.13951 -0.0225876 0
+-4.12113 -0.0805122 0
+-4.10432 -0.152388 0
+-2.23846 -0.0242475 0
+-1.19499 0.122749 0
+-1.19499 0.480863 0
+-0.0144959 -0.00256998 0
+-0.032156 -0.00579096 0
+-0.0717498 -0.0117415 0
+-0.0930099 -0.0212603 0
+-0.122465 -0.0294555 0
+-0.153586 -0.0311216 0
+-0.179564 -0.0259786 0
+-0.197052 -0.0174888 0
+-0.207676 -0.0106247 0
+-0.217224 -0.00954826 0
+-0.233256 -0.0160331 0
+-0.262282 -0.0290265 0
+-0.307536 -0.0452547 0
+-0.367985 -0.0604496 0
+-0.438682 -0.0706989 0
+-0.512205 -0.0735238 0
+-0.580659 -0.068455 0
+-0.637687 -0.0570294 0
+-0.679939 -0.0422533 0
+-0.707621 -0.0276836 0
+-0.724001 -0.0163814 0
+-0.734059 -0.0100589 0
+-0.742758 -0.00870008 0
+-0.753544 -0.0107862 0
+-0.767563 -0.0140205 0
+-0.783813 -0.0162502 0
+-0.800026 -0.0162141 0
+-0.813866 -0.0138406 0
+-0.823903 -0.0100376 0
+-0.830043 -0.00614065 0
+-0.833351 -0.00330865 0
+-0.835481 -0.00213121 0
+-0.838039 -0.00255857 0
+-0.842127 -0.00408899 0
+-0.84817 -0.00604353 0
+-0.855939 -0.00777 0
+-0.864652 -0.0087143 0
+-0.873055 -0.00840337 0
+-0.879486 -0.00643145 0
+-0.881998 -0.00251366 0
+-0.878595 0.00340302 0
+-0.867548 0.0110453 0
+-0.847728 0.0198199 0
+-0.818774 0.0289527 0
+-0.781064 0.03771 0
+-0.735473 0.0455897 0
+-0.683092 0.0523809 0
+-0.625033 0.058058 0
+-0.56246 0.0625722 0
+-0.496794 0.0656657 0
+-0.429974 0.0668193 0
+-0.364593 0.0653807 0
+-0.303766 0.0608264 0
+-0.250722 0.0530442 0
+-0.208213 0.0425083 0
+-0.177942 0.0302707 0
+-0.160175 0.0177665 0
+-0.153666 0.00650819 0
+-0.155895 -0.00222966 0
+-0.163551 -0.00765741 0
+-0.173167 -0.00961627 0
+-0.181794 -0.0086283 0
+-0.187661 -0.00586793 0
+-0.190728 -0.00306775 0
+-0.193089 -0.00236162 0
+-0.199145 -0.00605682 0
+-0.215456 -0.0163124 0
+-0.250149 -0.0346945 0
+-0.311762 -0.0616146 0
+-0.407517 -0.0957578 0
+-0.54126 -0.133746 0
+-0.711609 -0.170352 0
+-0.911092 -0.199487 0
+-1.12694 -0.215852 0
+-1.3437 -0.216764 0
+-1.54707 -0.203375 0
+-1.72765 -0.180589 0
+-1.88312 -0.15548 0
+-2.01784 -0.134718 0
+-2.13986 -0.122032 0
+-2.25672 -0.11686 0
+-2.37152 -0.114814 0
+-2.4813 -0.109781 0
+-2.57801 -0.0967156 0
+-2.65188 -0.0738715 0
+-2.6954 -0.0435321 0
+-2.70643 -0.0110337 0
+-2.68909 0.0173423 0
+-2.65248 0.0365995 0
+-2.60802 0.0444636 0
+-2.5664 0.0416172 0
+-2.53547 0.0309277 0
+-2.51923 0.0162375 0
+-2.51793 0.00129395 0
+-2.52882 -0.0108876 0
+-2.54708 -0.0182696 0
+-2.56694 -0.019862 0
+-2.58272 -0.0157761 0
+-2.58994 -0.00722949 0
+-2.58627 0.0036744 0
+-2.57173 0.0145302 0
+-2.54823 0.0235023 0
+-2.51807 0.0301512 0
+-2.4823 0.0357756 0
+-2.43932 0.0429728 0
+-2.38485 0.0544701 0
+-2.31319 0.0716558 0
+-2.21974 0.0934463 0
+-2.1037 0.116043 0
+-1.96989 0.133809 0
+-1.82883 0.141059 0
+-1.69465 0.134177 0
+-1.58135 0.113299 0
+-1.49853 0.0828221 0
+-1.44819 0.0503358 0
+-1.42414 0.0240526 0
+-1.41464 0.00949356 0
+-1.40801 0.00663417 0
+-1.39925 0.00876118 0
+-1.39551 0.00373481 0
+-1.4181 -0.0225876 0
+-1.49861 -0.0805122 0
+-1.651 -0.152388 0
+-1.18037 -0.0242475 0
+-0.796475 0.122749 0
+-0.796475 0.480863 0
+-0.197922 -0.0621462 0
+-0.400918 -0.117165 0
+-0.801869 -0.197977 0
+-0.500386 -0.301484 0
+-0.13482 -0.365566 0
+0.214607 -0.349427 0
+0.471277 -0.25667 0
+0.589408 -0.118131 0
+0.564353 0.0250554 0
+0.42754 0.136813 0
+0.231279 0.196262 0
+0.0306235 0.200656 0
+-0.131315 0.161939 0
+-0.23106 0.0997445 0
+-0.265176 0.0341164 0
+-0.245477 -0.0196984 0
+-0.191929 -0.053548 0
+-0.125789 -0.0661396 0
+-0.0645392 -0.0612497 0
+-0.0191705 -0.0453685 0
+0.00631149 -0.0254818 0
+0.0136994 -0.00738769 0
+0.00841863 0.005281 0
+-0.00288222 0.0113011 0
+-0.014355 0.011473 0
+-0.0221784 0.00782369 0
+-0.024872 0.00269382 0
+-0.0228646 -0.00200715 0
+-0.0176696 -0.00519481 0
+-0.0110447 -0.0066247 0
+-0.00441022 -0.00663424 0
+0.0013729 -0.0057829 0
+0.00592023 -0.00454711 0
+0.00908308 -0.00316262 0
+0.010717 -0.00163373 0
+0.0105871 0.000130162 0
+0.00846117 0.00212615 0
+0.00435382 0.00410756 0
+-0.00119833 0.00555237 0
+-0.0069938 0.00579569 0
+-0.0113062 0.00431259 0
+-0.0123703 0.0010643 0
+-0.00913061 -0.00323944 0
+-0.00200946 -0.00712094 0
+0.00664353 -0.00865278 0
+0.0127175 -0.00607371 0
+0.0112279 0.00148976 0
+-0.00225339 0.0134815 0
+-0.0300659 0.0278127 0
+-0.0713702 0.0413044 0
+-0.121931 0.050561 0
+-0.174904 0.0529727 0
+-0.222384 0.0474804 0
+-0.25722 0.0348361 0
+-0.274529 0.0173098 0
+-0.272544 -0.00198554 0
+-0.252686 -0.0198569 0
+-0.21906 -0.0336263 0
+-0.17761 -0.0414495 0
+-0.135197 -0.0424132 0
+-0.0986551 -0.0365416 0
+-0.073865 -0.02479 0
+-0.0648712 -0.00899359 0
+-0.0731994 0.00832835 0
+-0.0975519 0.0243527 0
+-0.133981 0.0364295 0
+-0.176487 0.0425057 0
+-0.21789 0.0414031 0
+-0.250863 0.0329738 0
+-0.269055 0.0181923 0
+-0.268226 -0.000829222 0
+-0.24721 -0.0210156 0
+-0.208403 -0.0388069 0
+-0.157478 -0.0509254 0
+-0.102242 -0.0552355 0
+-0.05086 -0.0513821 0
+-0.00993165 -0.0409282 0
+0.0169584 -0.02689 0
+0.0297724 -0.0128138 0
+0.0315034 -0.00173089 0
+0.0268691 0.00463444 0
+0.0207252 0.00614403 0
+0.0167469 0.00397838 0
+0.0167487 -1.61895e-06 0
+0.0207239 -0.00397509 0
+0.0274208 -0.00669687 0
+0.035126 -0.00770505 0
+0.0423359 -0.00720982 0
+0.0481246 -0.00578861 0
+0.0521767 -0.00405202 0
+0.0545895 -0.00241277 0
+0.0556068 -0.00101723 0
+0.0554324 0.000174497 0
+0.054209 0.00122346 0
+0.052164 0.00204498 0
+0.0498447 0.00231937 0
+0.0483082 0.00153657 0
+0.0491176 -0.000809362 0
+0.0540344 -0.00491673 0
+0.0643985 -0.0103642 0
+0.0803293 -0.0159307 0
+0.100013 -0.0196836 0
+0.119418 -0.0194049 0
+0.132733 -0.0133155 0
+0.133668 -0.000934765 0
+0.117493 0.0161748 0
+0.0834469 0.0340466 0
+0.0368898 0.046557 0
+-0.00952618 0.046416 0
+-0.0364372 0.026911 0
+-0.0206697 -0.0157675 0
+0.0594013 -0.080071 0
+0.216703 -0.157302 0
+0.448246 -0.231543 0
+0.730504 -0.282258 0
+1.02032 -0.28982 0
+1.26327 -0.242949 0
+1.40888 -0.145611 0
+1.42909 -0.0202045 0
+1.33361 0.0954833 0
+1.17561 0.157998 0
+1.04157 0.13404 0
+1.00354 0.0380246 0
+0.898388 0.129167 0
+0.670391 0.238321 0
+0.670391 0.589312 0
+-0.801875 -0.238862 0
+-1.59822 -0.429289 0
+-3.17191 -0.716897 0
+-2.38527 -1.08812 0
+-1.4345 -1.31634 0
+-0.55445 -1.22947 0
+0.0281215 -0.83924 0
+0.185771 -0.275779 0
+-0.076518 0.287345 0
+-0.6417 0.701997 0
+-1.33461 0.889171 0
+-1.98289 0.848937 0
+-2.46279 0.641843 0
+-2.71915 0.356103 0
+-2.76089 0.0758521 0
+-2.64098 -0.1396 0
+-2.43158 -0.262951 0
+-2.20227 -0.295446 0
+-2.00574 -0.257779 0
+-1.8714 -0.179707 0
+-1.80585 -0.0910328 0
+-1.79808 -0.0151582 0
+-1.82718 0.0343773 0
+-1.87026 0.0543889 0
+-1.90879 0.0500033 0
+-1.93196 0.0309967 0
+-1.93705 0.00778107 0
+-1.92733 -0.0117232 0
+-1.90896 -0.0235639 0
+-1.88806 -0.0275309 0
+-1.86891 -0.0257833 0
+-1.85354 -0.0211448 0
+-1.84234 -0.0157534 0
+-1.83507 -0.0104344 0
+-1.83187 -0.00483013 0
+-1.83365 0.00190885 0
+-1.84173 0.0102073 0
+-1.85693 0.0193097 0
+-1.87842 0.0270456 0
+-1.90296 0.0303398 0
+-1.9251 0.0264481 0
+-1.9386 0.0145699 0
+-1.93903 -0.00281622 0
+-1.92649 -0.0196537 0
+-1.90759 -0.0275518 0
+-1.8952 -0.0184686 0
+-1.90571 0.0120037 0
+-1.9543 0.0620682 0
+-2.04958 0.1231 0
+-2.18979 0.181516 0
+-2.36187 0.22264 0
+-2.54408 0.235184 0
+-2.71124 0.214636 0
+-2.84071 0.164313 0
+-2.91731 0.0939028 0
+-2.93564 0.0163453 0
+-2.89997 -0.0555188 0
+-2.82225 -0.111345 0
+-2.7194 -0.144304 0
+-2.6107 -0.151115 0
+-2.51538 -0.131854 0
+-2.4502 -0.0899779 0
+-2.42684 -0.0323485 0
+-2.44987 0.0313638 0
+-2.51571 0.0901908 0
+-2.61314 0.133861 0
+-2.72513 0.15449 0
+-2.83125 0.147526 0
+-2.91048 0.11221 0
+-2.94428 0.0519835 0
+-2.91994 -0.0251619 0
+-2.83392 -0.107042 0
+-2.69368 -0.179041 0
+-2.51726 -0.227344 0
+-2.32971 -0.242785 0
+-2.15728 -0.223814 0
+-2.02097 -0.177236 0
+-1.93167 -0.116194 0
+-1.88843 -0.0560523 0
+-1.88044 -0.00971958 0
+-1.89163 0.0158243 0
+-1.90612 0.020636 0
+-1.91257 0.0104326 0
+-1.90618 -0.00639654 0
+-1.88812 -0.02203 0
+-1.86332 -0.0314993 0
+-1.8376 -0.0334217 0
+-1.81551 -0.0293013 0
+-1.79927 -0.0220287 0
+-1.78897 -0.0143491 0
+-1.78351 -0.00787833 0
+-1.78163 -0.00289028 0
+-1.78269 0.00122923 0
+-1.78663 0.00516634 0
+-1.79345 0.00886517 0
+-1.80219 0.0110552 0
+-1.81002 0.0093735 0
+-1.81201 0.00117755 0
+-1.80184 -0.015091 0
+-1.77379 -0.038409 0
+-1.72556 -0.064165 0
+-1.66096 -0.0842799 0
+-1.59153 -0.0888355 0
+-1.53575 -0.0690963 0
+-1.51542 -0.0212626 0
+-1.54935 0.0500998 0
+-1.64539 0.130087 0
+-1.79272 0.193886 0
+-1.95652 0.210221 0
+-2.07767 0.148066 0
+-2.07969 -0.0137481 0
+-1.88425 -0.275518 0
+-1.43417 -0.607379 0
+-0.71923 -0.946483 0
+0.20406 -1.20555 0
+1.20926 -1.29502 0
+2.12164 -1.15533 0
+2.76468 -0.788657 0
+3.01957 -0.275092 0
+2.87472 0.240331 0
+2.43814 0.59458 0
+1.88908 0.683104 0
+1.35796 0.569142 0
+0.906608 0.677208 0
+0.525565 0.661607 0
+0.525565 1.13433 0
+-1.63029 -0.46502 0
+-3.2413 -0.825094 0
+-6.43309 -1.36917 0
+-5.45045 -2.07077 0
+-4.29134 -2.47544 0
+-3.31124 -2.20957 0
+-2.84506 -1.30542 0
+-3.05299 -0.0678477 0
+-3.87098 1.10533 0
+-5.05931 1.89034 0
+-6.30761 2.13747 0
+-7.34282 1.88415 0
+-7.99994 1.29896 0
+-8.24074 0.596909 0
+-8.12995 -0.0349356 0
+-7.79015 -0.479398 0
+-7.35627 -0.696832 0
+-6.94216 -0.709561 0
+-6.62287 -0.577067 0
+-6.43063 -0.371939 0
+-6.36054 -0.161126 0
+-6.38206 0.00636958 0
+-6.45311 0.105422 0
+-6.53323 0.134516 0
+-6.59335 0.110124 0
+-6.62 0.0576465 0
+-6.61412 0.00190331 0
+-6.58595 -0.0398902 0
+-6.54864 -0.0608721 0
+-6.51306 -0.0631146 0
+-6.48518 -0.0536619 0
+-6.46617 -0.0401543 0
+-6.45425 -0.0276659 0
+-6.44723 -0.0174564 0
+-6.44451 -0.00755297 0
+-6.44797 0.00537596 0
+-6.46139 0.0236241 0
+-6.48848 0.0464029 0
+-6.53043 0.0689977 0
+-6.58382 0.0837339 0
+-6.64022 0.0828469 0
+-6.68821 0.0625591 0
+-6.71784 0.0268144 0
+-6.72616 -0.0113299 0
+-6.72154 -0.0321733 0
+-6.7243 -0.0157018 0
+-6.76249 0.0501932 0
+-6.86339 0.162964 0
+-7.04368 0.303395 0
+-7.30204 0.439876 0
+-7.61724 0.537842 0
+-7.95287 0.570813 0
+-8.26688 0.528649 0
+-8.52236 0.419798 0
+-8.69562 0.267165 0
+-8.77931 0.100038 0
+-8.78078 -0.0540553 0
+-8.71764 -0.174477 0
+-8.61325 -0.248702 0
+-8.49324 -0.271124 0
+-8.38323 -0.241859 0
+-8.30618 -0.16703 0
+-8.2788 -0.059724 0
+-8.30802 0.0605807 0
+-8.38913 0.171308 0
+-8.50676 0.251493 0
+-8.6377 0.285429 0
+-8.75421 0.264033 0
+-8.82708 0.185081 0
+-8.82927 0.0541788 0
+-8.74098 -0.113455 0
+-8.55556 -0.292461 0
+-8.2841 -0.4505 0
+-7.95577 -0.555675 0
+-7.61246 -0.586093 0
+-7.29865 -0.537625 0
+-7.04972 -0.426162 0
+-6.88305 -0.282866 0
+-6.79507 -0.144032 0
+-6.76523 -0.0395593 0
+-6.76483 0.0154287 0
+-6.76708 0.0228844 0
+-6.75456 -0.00208216 0
+-6.72203 -0.0389265 0
+-6.67442 -0.0696394 0
+-6.62195 -0.0839706 0
+-6.57477 -0.0806021 0
+-6.53924 -0.0648274 0
+-6.51677 -0.0445006 0
+-6.50488 -0.0262342 0
+-6.49956 -0.0132006 0
+-6.49752 -0.00492544 0
+-6.49763 0.00133582 0
+-6.50089 0.00842724 0
+-6.50919 0.0171669 0
+-6.52315 0.0250122 0
+-6.53989 0.026118 0
+-6.55182 0.0131031 0
+-6.54723 -0.0196759 0
+-6.5134 -0.0722379 0
+-6.4416 -0.135969 0
+-6.33274 -0.193136 0
+-6.20155 -0.220033 0
+-6.07698 -0.193666 0
+-5.99771 -0.100531 0
+-6.00255 0.0549457 0
+-6.1173 0.244834 0
+-6.34044 0.417025 0
+-6.63105 0.500835 0
+-6.90287 0.419887 0
+-7.02918 0.112557 0
+-6.86288 -0.441821 0
+-6.27317 -1.19708 0
+-5.19366 -2.02599 0
+-3.6678 -2.73141 0
+-1.8707 -3.09212 0
+-0.0875156 -2.93851 0
+1.35797 -2.23414 0
+2.20741 -1.12454 0
+2.36388 0.0838668 0
+1.92957 1.02889 0
+1.15361 1.45907 0
+0.317381 1.40537 0
+-0.0716116 1.28079 0
+-0.199864 0.885508 0
+-0.199864 1.19532 0
+-2.40228 -0.648588 0
+-4.79195 -1.14119 0
+-9.5558 -1.87877 0
+-8.81302 -2.81354 0
+-8.02125 -3.26722 0
+-7.56136 -2.66946 0
+-7.75822 -1.10855 0
+-8.70224 0.876168 0
+-10.211 2.61414 0
+-11.9205 3.5998 0
+-13.4379 3.65487 0
+-14.4781 2.92435 0
+-14.9309 1.75173 0
+-14.8515 0.517539 0
+-14.401 -0.485384 0
+-13.774 -1.1064 0
+-13.142 -1.32889 0
+-12.6234 -1.22818 0
+-12.2768 -0.923601 0
+-12.1085 -0.540216 0
+-12.0864 -0.183277 0
+-12.1567 0.0766816 0
+-12.2612 0.209924 0
+-12.3516 0.224955 0
+-12.3993 0.157809 0
+-12.3976 0.0559347 0
+-12.3575 -0.0382347 0
+-12.2987 -0.0986418 0
+-12.2408 -0.118812 0
+-12.1964 -0.107537 0
+-12.1694 -0.0805985 0
+-12.1569 -0.0526737 0
+-12.1524 -0.0321656 0
+-12.1502 -0.0196713 0
+-12.1482 -0.00953591 0
+-12.1494 0.00654879 0
+-12.1608 0.0350952 0
+-12.1913 0.0768706 0
+-12.2472 0.124861 0
+-12.3288 0.165339 0
+-12.4284 0.182535 0
+-12.532 0.166085 0
+-12.6238 0.118662 0
+-12.6951 0.0599049 0
+-12.7505 0.0232659 0
+-12.8113 0.0451421 0
+-12.9108 0.149684 0
+-13.0835 0.33563 0
+-13.3517 0.571659 0
+-13.7154 0.803554 0
+-14.1489 0.971312 0
+-14.6076 1.02948 0
+-15.041 0.962098 0
+-15.4073 0.786087 0
+-15.6825 0.542378 0
+-15.8626 0.280112 0
+-15.9584 0.0417567 0
+-15.9881 -0.14472 0
+-15.9715 -0.265356 0
+-15.9275 -0.315106 0
+-15.8753 -0.294023 0
+-15.834 -0.208358 0
+-15.8191 -0.0746329 0
+-15.8379 0.0793736 0
+-15.8867 0.220145 0
+-15.9525 0.317286 0
+-16.0165 0.349441 0
+-16.057 0.304466 0
+-16.0494 0.177514 0
+-15.9678 -0.027383 0
+-15.7895 -0.291818 0
+-15.5031 -0.578822 0
+-15.1175 -0.836119 0
+-14.6644 -1.00874 0
+-14.1935 -1.05697 0
+-13.7595 -0.971685 0
+-13.4061 -0.779552 0
+-13.1542 -0.534792 0
+-12.9976 -0.300615 0
+-12.9091 -0.128025 0
+-12.8529 -0.0408078 0
+-12.7978 -0.0321902 0
+-12.7268 -0.073084 0
+-12.6388 -0.126878 0
+-12.5446 -0.163834 0
+-12.459 -0.169643 0
+-12.3934 -0.14618 0
+-12.3522 -0.106062 0
+-12.332 -0.0646555 0
+-12.325 -0.0332745 0
+-12.3223 -0.0158111 0
+-12.3182 -0.00908473 0
+-12.311 -0.00582039 0
+-12.3039 0.00124839 0
+-12.3021 0.0154591 0
+-12.3107 0.03356 0
+-12.3299 0.0453083 0
+-12.3529 0.0360748 0
+-12.365 -0.00756801 0
+-12.3466 -0.0905701 0
+-12.2796 -0.203009 0
+-12.155 -0.317703 0
+-11.9809 -0.394173 0
+-11.7853 -0.38921 0
+-11.6142 -0.271641 0
+-11.5221 -0.0371704 0
+-11.5581 0.28084 0
+-11.7485 0.607457 0
+-12.0786 0.830916 0
+-12.4769 0.818131 0
+-12.8081 0.44378 0
+-12.8837 -0.366195 0
+-12.4974 -1.58336 0
+-11.4869 -3.03653 0
+-9.80754 -4.41078 0
+-7.58927 -5.31039 0
+-5.14072 -5.38705 0
+-2.87941 -4.49545 0
+-1.19939 -2.80456 0
+-0.326841 -0.788681 0
+-0.233016 0.935061 0
+-0.651823 1.87787 0
+-1.18073 1.93427 0
+-0.997641 1.4638 0
+-0.675703 0.73048 0
+-0.675703 0.904071 0
+-2.9076 -0.73277 0
+-5.8339 -1.27385 0
+-11.7115 -2.06612 0
+-11.5025 -3.0225 0
+-11.4664 -3.30335 0
+-11.9061 -2.22973 0
+-13.0094 -0.00531197 0
+-14.7024 2.56918 0
+-16.6592 4.57094 0
+-18.4418 5.38242 0
+-19.6808 4.89384 0
+-20.2013 3.4449 0
+-20.0483 1.59871 0
+-19.4227 -0.1081 0
+-18.5803 -1.32778 0
+-17.7448 -1.94188 0
+-17.0623 -2.01133 0
+-16.5968 -1.69372 0
+-16.348 -1.17239 0
+-16.2755 -0.612696 0
+-16.3187 -0.140046 0
+-16.4126 0.170524 0
+-16.5003 0.297619 0
+-16.5436 0.268231 0
+-16.5281 0.142356 0
+-16.4623 -0.00985116 0
+-16.3695 -0.131086 0
+-16.2764 -0.191691 0
+-16.2036 -0.191614 0
+-16.1599 -0.151244 0
+-16.1429 -0.0975754 0
+-16.1431 -0.0524352 0
+-16.1491 -0.026208 0
+-16.1518 -0.0169869 0
+-16.1478 -0.0135419 0
+-16.1406 -0.000618733 0
+-16.1402 0.0346881 0
+-16.1603 0.0969848 0
+-16.2143 0.178855 0
+-16.3101 0.261175 0
+-16.4464 0.318777 0
+-16.6114 0.331148 0
+-16.7877 0.294943 0
+-16.96 0.232205 0
+-17.1248 0.188044 0
+-17.2954 0.215711 0
+-17.4993 0.353659 0
+-17.7682 0.604546 0
+-18.1233 0.926711 0
+-18.5637 1.24391 0
+-19.0632 1.4709 0
+-19.5781 1.54436 0
+-20.0614 1.44542 0
+-20.4788 1.20343 0
+-20.8166 0.880256 0
+-21.0809 0.544371 0
+-21.2872 0.248098 0
+-21.4501 0.0181641 0
+-21.5765 -0.139025 0
+-21.667 -0.224579 0
+-21.7228 -0.238175 0
+-21.7503 -0.180864 0
+-21.7588 -0.066149 0
+-21.7541 0.0746533 0
+-21.7348 0.200826 0
+-21.695 0.277537 0
+-21.6299 0.284306 0
+-21.536 0.210643 0
+-21.4065 0.0479948 0
+-21.2256 -0.208297 0
+-20.9712 -0.546259 0
+-20.6249 -0.925074 0
+-20.1852 -1.27583 0
+-19.6746 -1.51933 0
+-19.1372 -1.59437 0
+-18.6258 -1.48312 0
+-18.1846 -1.22075 0
+-17.8354 -0.883994 0
+-17.573 -0.562964 0
+-17.372 -0.328994 0
+-17.2004 -0.212428 0
+-17.0336 -0.198988 0
+-16.8628 -0.243881 0
+-16.6948 -0.294945 0
+-16.5449 -0.3137 0
+-16.4282 -0.286285 0
+-16.3522 -0.222225 0
+-16.3138 -0.144435 0
+-16.3019 -0.0765833 0
+-16.3017 -0.0335154 0
+-16.2999 -0.0175867 0
+-16.2885 -0.0205036 0
+-16.2659 -0.0283805 0
+-16.2369 -0.0277221 0
+-16.2105 -0.0109352 0
+-16.1965 0.0195834 0
+-16.2013 0.0500263 0
+-16.223 0.0578495 0
+-16.2498 0.0191491 0
+-16.2598 -0.0805548 0
+-16.2272 -0.235628 0
+-16.1303 -0.41454 0
+-15.9614 -0.563075 0
+-15.7331 -0.617491 0
+-15.4804 -0.524382 0
+-15.2564 -0.261171 0
+-15.1238 0.148258 0
+-15.1417 0.625307 0
+-15.3471 1.03632 0
+-15.7316 1.20264 0
+-16.2161 0.928354 0
+-16.6363 0.0539479 0
+-16.7546 -1.46504 0
+-16.3141 -3.47706 0
+-15.128 -5.59685 0
+-13.177 -7.26142 0
+-10.6637 -7.90032 0
+-7.982 -7.17717 0
+-5.59207 -5.19449 0
+-3.84732 -2.53343 0
+-2.85463 -0.0576342 0
+-2.44109 1.46434 0
+-2.24417 1.73735 0
+-1.35423 1.10651 0
+-0.693558 0.318647 0
+-0.693558 0.555273 0
+-3.07757 -0.712648 0
+-6.212 -1.21323 0
+-12.5463 -1.91263 0
+-12.9042 -2.66462 0
+-13.6461 -2.56138 0
+-14.9255 -0.950394 0
+-16.7182 1.78743 0
+-18.7575 4.60841 0
+-20.6133 6.4268 0
+-21.8715 6.64067 0
+-22.3043 5.32663 0
+-21.9431 3.08371 0
+-21.0308 0.686404 0
+-19.8975 -1.2414 0
+-18.8331 -2.3922 0
+-18.0123 -2.76271 0
+-17.4864 -2.53717 0
+-17.2203 -1.9599 0
+-17.1389 -1.25377 0
+-17.1623 -0.589261 0
+-17.2221 -0.0802917 0
+-17.2665 0.214994 0
+-17.263 0.294063 0
+-17.1991 0.204373 0
+-17.0829 0.0261926 0
+-16.9382 -0.154586 0
+-16.7951 -0.274192 0
+-16.6793 -0.307469 0
+-16.6042 -0.266741 0
+-16.569 -0.186395 0
+-16.5632 -0.103459 0
+-16.5719 -0.0436938 0
+-16.5817 -0.0163651 0
+-16.5833 -0.015401 0
+-16.5731 -0.0237236 0
+-16.5545 -0.0192972 0
+-16.5374 0.0176624 0
+-16.5379 0.0974497 0
+-16.5745 0.215427 0
+-16.6638 0.350525 0
+-16.8151 0.470038 0
+-17.0259 0.541964 0
+-17.2831 0.552148 0
+-17.569 0.518128 0
+-17.8708 0.489804 0
+-18.1874 0.532344 0
+-18.5304 0.696644 0
+-18.9166 0.990743 0
+-19.3567 1.36686 0
+-19.8454 1.73256 0
+-20.3582 1.98373 0
+-20.8592 2.0454 0
+-21.315 1.90123 0
+-21.7083 1.59672 0
+-22.0433 1.2152 0
+-22.3395 0.840633 0
+-22.6186 0.527124 0
+-22.8898 0.289438 0
+-23.1448 0.115929 0
+-23.3622 -0.00721872 0
+-23.5216 -0.0787314 0
+-23.6151 -0.0873699 0
+-23.6454 -0.0358166 0
+-23.6165 0.0457329 0
+-23.5282 0.112537 0
+-23.3815 0.130851 0
+-23.1872 0.0900077 0
+-22.9652 -0.0113466 0
+-22.7313 -0.185917 0
+-22.484 -0.455589 0
+-22.2033 -0.826932 0
+-21.8622 -1.26624 0
+-21.443 -1.69503 0
+-20.9499 -2.0124 0
+-20.4101 -2.13416 0
+-19.8639 -2.0293 0
+-19.3493 -1.73533 0
+-18.8887 -1.34463 0
+-18.484 -0.967641 0
+-18.1225 -0.690482 0
+-17.7884 -0.546544 0
+-17.4738 -0.513611 0
+-17.1833 -0.534383 0
+-16.9309 -0.547363 0
+-16.7318 -0.512743 0
+-16.5946 -0.423479 0
+-16.5165 -0.300381 0
+-16.4839 -0.177011 0
+-16.4774 -0.0830362 0
+-16.4776 -0.0333314 0
+-16.4696 -0.0256508 0
+-16.4451 -0.0449997 0
+-16.4028 -0.0706874 0
+-16.3473 -0.0831563 0
+-16.2884 -0.0698961 0
+-16.2383 -0.0304467 0
+-16.209 0.0206748 0
+-16.2066 0.0554565 0
+-16.2275 0.040049 0
+-16.256 -0.05208 0
+-16.2662 -0.225386 0
+-16.2286 -0.452168 0
+-16.1184 -0.673249 0
+-15.9243 -0.811587 0
+-15.6538 -0.794836 0
+-15.3363 -0.578681 0
+-15.0239 -0.16421 0
+-14.79 0.391402 0
+-14.721 0.967385 0
+-14.8938 1.37542 0
+-15.3363 1.3709 0
+-15.9825 0.700138 0
+-16.6438 -0.803731 0
+-17.0274 -3.09345 0
+-16.8155 -5.80883 0
+-15.7875 -8.28942 0
+-13.9335 -9.75428 0
+-11.4926 -9.61806 0
+-8.87973 -7.80737 0
+-6.52373 -4.88943 0
+-4.69586 -1.8855 0
+-3.42285 0.191335 0
+-2.54006 0.854556 0
+-1.18904 0.448596 0
+-0.4494 -0.0888017 0
+-0.4494 0.360074 0
+-2.96181 -0.619234 0
+-6.00149 -1.0177 0
+-12.1588 -1.52335 0
+-12.9023 -1.9212 0
+-14.1346 -1.32901 0
+-15.8373 0.752298 0
+-17.7814 3.73151 0
+-19.5621 6.38909 0
+-20.7444 7.60915 0
+-21.0479 6.94416 0
+-20.4647 4.74343 0
+-19.2492 1.86824 0
+-17.7946 -0.768219 0
+-16.4705 -2.56555 0
+-15.5038 -3.35885 0
+-14.9466 -3.31991 0
+-14.7202 -2.76356 0
+-14.6919 -1.98824 0
+-14.7381 -1.20756 0
+-14.7744 -0.552981 0
+-14.7567 -0.0979716 0
+-14.6707 0.129018 0
+-14.5213 0.144617 0
+-14.326 0.00911004 0
+-14.1114 -0.188473 0
+-13.9073 -0.358627 0
+-13.74 -0.441491 0
+-13.624 -0.423452 0
+-13.5589 -0.331818 0
+-13.5325 -0.212873 0
+-13.5277 -0.108192 0
+-13.53 -0.0414499 0
+-13.5293 -0.017073 0
+-13.5202 -0.0244976 0
+-13.5009 -0.0429776 0
+-13.4736 -0.0466144 0
+-13.4452 -0.0107425 0
+-13.4286 0.080864 0
+-13.4427 0.229535 0
+-13.5099 0.417719 0
+-13.6504 0.610562 0
+-13.8754 0.766934 0
+-14.1827 0.859428 0
+-14.5586 0.89411 0
+-14.9849 0.916095 0
+-15.4456 0.992999 0
+-15.9307 1.18171 0
+-16.4344 1.49454 0
+-16.9501 1.88254 0
+-17.464 2.24648 0
+-17.9545 2.47414 0
+-18.3972 2.48819 0
+-18.7768 2.28077 0
+-19.0954 1.91533 0
+-19.3745 1.49427 0
+-19.6451 1.11127 0
+-19.9327 0.814719 0
+-20.2429 0.599671 0
+-20.5563 0.429268 0
+-20.8354 0.271968 0
+-21.0448 0.130672 0
+-21.1687 0.0365393 0
+-21.2085 0.00389153 0
+-21.1672 0.00452785 0
+-21.0434 -0.0113329 0
+-20.8383 -0.0741981 0
+-20.5717 -0.176639 0
+-20.2814 -0.301603 0
+-20.002 -0.465379 0
+-19.7436 -0.713948 0
+-19.4887 -1.08186 0
+-19.2033 -1.55164 0
+-18.8553 -2.04298 0
+-18.429 -2.4387 0
+-17.9298 -2.63334 0
+-17.3797 -2.5794 0
+-16.8066 -2.30848 0
+-16.2339 -1.91726 0
+-15.6765 -1.52511 0
+-15.1424 -1.22452 0
+-14.6402 -1.04875 0
+-14.1832 -0.970603 0
+-13.7891 -0.928482 0
+-13.4743 -0.86223 0
+-13.2468 -0.740221 0
+-13.1025 -0.567721 0
+-13.0255 -0.377396 0
+-12.9924 -0.210082 0
+-12.9793 -0.0961991 0
+-12.9668 -0.0458089 0
+-12.943 -0.0494452 0
+-12.9023 -0.0857274 0
+-12.8433 -0.129645 0
+-12.7681 -0.158369 0
+-12.6824 -0.155641 0
+-12.5961 -0.116667 0
+-12.5227 -0.0527429 0
+-12.4751 0.00780912 0
+-12.4607 0.0256559 0
+-12.4766 -0.0361487 0
+-12.5071 -0.194871 0
+-12.5253 -0.433946 0
+-12.4986 -0.699972 0
+-12.3955 -0.914753 0
+-12.1922 -0.998052 0
+-11.8805 -0.890384 0
+-11.4772 -0.567494 0
+-11.0375 -0.0483904 0
+-10.6628 0.592718 0
+-10.4922 1.20484 0
+-10.6637 1.54237 0
+-11.2486 1.28507 0
+-12.1824 0.130089 0
+-13.2308 -2.04508 0
+-14.0278 -5.01182 0
+-14.1915 -8.12577 0
+-13.4756 -10.4701 0
+-11.8843 -11.2094 0
+-9.68139 -10.0103 0
+-7.28436 -7.28647 0
+-5.09602 -4.07385 0
+-3.37161 -1.53307 0
+-2.19993 -0.317128 0
+-0.787825 -0.134064 0
+-0.196198 -0.27242 0
+-0.196198 0.385362 0
+-2.66513 -0.494389 0
+-5.39905 -0.768327 0
+-10.9198 -1.04862 0
+-11.7813 -1.05965 0
+-13.0933 -0.0169872 0
+-14.6907 2.34969 0
+-16.2153 5.25616 0
+-17.2376 7.41133 0
+-17.4339 7.80544 0
+-16.7325 6.24282 0
+-15.347 3.35786 0
+-13.6799 0.201173 0
+-12.1543 -2.29385 0
+-11.0585 -3.66131 0
+-10.4747 -3.94261 0
+-10.3063 -3.48833 0
+-10.3684 -2.70145 0
+-10.4826 -1.87412 0
+-10.5316 -1.15852 0
+-10.4683 -0.616281 0
+-10.296 -0.270284 0
+-10.0442 -0.12279 0
+-9.75096 -0.148585 0
+-9.45351 -0.288339 0
+-9.18351 -0.458469 0
+-8.96435 -0.577789 0
+-8.80783 -0.598004 0
+-8.71159 -0.519691 0
+-8.66046 -0.382949 0
+-8.63353 -0.2398 0
+-8.61334 -0.128387 0
+-8.59105 -0.0637306 0
+-8.5653 -0.0428216 0
+-8.5376 -0.0521999 0
+-8.5091 -0.0714751 0
+-8.48031 -0.0754013 0
+-8.45287 -0.0381858 0
+-8.43255 0.0605417 0
+-8.43269 0.229678 0
+-8.47552 0.460553 0
+-8.58836 0.723406 0
+-8.79509 0.973661 0
+-9.10756 1.1719 0
+-9.52197 1.30852 0
+-10.021 1.41511 0
+-10.5788 1.55077 0
+-11.166 1.76899 0
+-11.7542 2.08267 0
+-12.3174 2.44577 0
+-12.8336 2.76265 0
+-13.2845 2.92512 0
+-13.6591 2.86278 0
+-13.9585 2.58015 0
+-14.2 2.15685 0
+-14.4143 1.70852 0
+-14.6347 1.33173 0
+-14.8847 1.06465 0
+-15.1667 0.88166 0
+-15.4585 0.721063 0
+-15.7188 0.532293 0
+-15.9082 0.320138 0
+-16.0157 0.144034 0
+-16.0489 0.037079 0
+-16.0124 -0.0319409 0
+-15.9 -0.123794 0
+-15.7045 -0.269728 0
+-15.441 -0.440138 0
+-15.154 -0.58859 0
+-14.8858 -0.733515 0
+-14.6526 -0.947207 0
+-14.4404 -1.29402 0
+-14.2163 -1.77573 0
+-13.943 -2.31629 0
+-13.5915 -2.79024 0
+-13.1479 -3.07689 0
+-12.6151 -3.11225 0
+-12.0089 -2.91463 0
+-11.3537 -2.57251 0
+-10.6776 -2.20119 0
+-10.0113 -1.89076 0
+-9.38749 -1.67261 0
+-8.83781 -1.52028 0
+-8.38756 -1.37873 0
+-8.04892 -1.20087 0
+-7.81778 -0.971366 0
+-7.67557 -0.709923 0
+-7.59524 -0.457731 0
+-7.54862 -0.256697 0
+-7.51306 -0.131757 0
+-7.47488 -0.0839845 0
+-7.4286 -0.0957276 0
+-7.3728 -0.141525 0
+-7.30601 -0.196439 0
+-7.22554 -0.238833 0
+-7.12984 -0.251337 0
+-7.02192 -0.224591 0
+-6.91125 -0.163414 0
+-6.81273 -0.0907112 0
+-6.74257 -0.0445034 0
+-6.71214 -0.0665736 0
+-6.72195 -0.185057 0
+-6.75833 -0.397566 0
+-6.79403 -0.664275 0
+-6.79158 -0.917202 0
+-6.70792 -1.08171 0
+-6.50144 -1.09686 0
+-6.14548 -0.92345 0
+-5.65023 -0.543645 0
+-5.0871 0.0295903 0
+-4.60017 0.717909 0
+-4.38561 1.32781 0
+-4.62964 1.5291 0
+-5.41793 0.918387 0
+-6.65524 -0.807779 0
+-8.04511 -3.62194 0
+-9.16187 -7.00902 0
+-9.60031 -10.0317 0
+-9.13947 -11.6703 0
+-7.83793 -11.3118 0
+-6.01014 -9.11425 0
+-4.09925 -5.98475 0
+-2.5197 -3.11261 0
+-1.55465 -1.28218 0
+-0.415008 -0.342158 0
+-0.0752123 -0.142271 0
+-0.0752123 0.590441 0
+-2.29272 -0.372486 0
+-4.61911 -0.532883 0
+-9.27303 -0.616595 0
+-10.0211 -0.311562 0
+-11.0666 1.02845 0
+-12.1539 3.43706 0
+-12.9013 6.00357 0
+-12.9723 7.48227 0
+-12.2372 7.07039 0
+-10.8418 4.84743 0
+-9.14615 1.66219 0
+-7.57172 -1.37326 0
+-6.43748 -3.4281 0
+-5.86025 -4.23853 0
+-5.75407 -4.04879 0
+-5.91162 -3.33078 0
+-6.11356 -2.4995 0
+-6.2084 -1.77928 0
+-6.13625 -1.23067 0
+-5.90868 -0.84385 0
+-5.57431 -0.604655 0
+-5.19161 -0.505486 0
+-4.81343 -0.52677 0
+-4.47928 -0.622482 0
+-4.2126 -0.725149 0
+-4.02122 -0.769174 0
+-3.89908 -0.720135 0
+-3.82841 -0.590361 0
+-3.78441 -0.426953 0
+-3.74407 -0.28014 0
+-3.69505 -0.177402 0
+-3.6381 -0.120675 0
+-3.58159 -0.0993311 0
+-3.53369 -0.100099 0
+-3.49817 -0.107003 0
+-3.47437 -0.0992006 0
+-3.45917 -0.0533833 0
+-3.45039 0.0517622 0
+-3.45242 0.231713 0
+-3.48149 0.489626 0
+-3.5652 0.807112 0
+-3.7345 1.14296 0
+-4.01271 1.45011 0
+-4.40755 1.70336 0
+-4.9084 1.91597 0
+-5.48749 2.12986 0
+-6.10433 2.38583 0
+-6.714 2.69235 0
+-7.27711 3.00887 0
+-7.76678 3.25233 0
+-8.17069 3.32903 0
+-8.49013 3.18221 0
+-8.73899 2.82901 0
+-8.94156 2.35942 0
+-9.12635 1.89331 0
+-9.31707 1.52245 0
+-9.52557 1.27314 0
+-9.74919 1.10528 0
+-9.96982 0.941694 0
+-10.154 0.71651 0
+-10.2689 0.435004 0
+-10.3235 0.19867 0
+-10.3384 0.051973 0
+-10.3201 -0.0502218 0
+-10.2576 -0.186328 0
+-10.128 -0.399294 0
+-9.92477 -0.643411 0
+-9.68714 -0.82622 0
+-9.45356 -0.967098 0
+-9.24054 -1.16022 0
+-9.04301 -1.49155 0
+-8.8406 -1.97813 0
+-8.60454 -2.55235 0
+-8.30395 -3.09083 0
+-7.91266 -3.46817 0
+-7.41653 -3.60838 0
+-6.81885 -3.51231 0
+-6.14148 -3.24988 0
+-5.42155 -2.92112 0
+-4.70569 -2.60662 0
+-4.04268 -2.33562 0
+-3.47433 -2.08862 0
+-3.02611 -1.82694 0
+-2.7016 -1.52538 0
+-2.48412 -1.18885 0
+-2.34467 -0.84937 0
+-2.25175 -0.550646 0
+-2.1793 -0.329151 0
+-2.1112 -0.199858 0
+-2.04193 -0.153252 0
+-1.97302 -0.164634 0
+-1.90682 -0.207725 0
+-1.84126 -0.261997 0
+-1.76903 -0.31106 0
+-1.68116 -0.339201 0
+-1.57225 -0.333508 0
+-1.44443 -0.291229 0
+-1.309 -0.226145 0
+-1.18473 -0.168773 0
+-1.09269 -0.158605 0
+-1.04863 -0.22912 0
+-1.056 -0.390197 0
+-1.1025 -0.617768 0
+-1.15982 -0.859883 0
+-1.18474 -1.05679 0
+-1.12238 -1.15923 0
+-0.915972 -1.12986 0
+-0.528032 -0.931585 0
+0.0287753 -0.527216 0
+0.662871 0.0838132 0
+1.19729 0.793389 0
+1.40461 1.32179 0
+1.08672 1.23627 0
+0.175443 0.103503 0
+-1.19504 -2.25146 0
+-2.69402 -5.51004 0
+-3.89703 -8.82865 0
+-4.45079 -11.1165 0
+-4.22374 -11.5388 0
+-3.36606 -9.97193 0
+-2.24911 -7.1017 0
+-1.31739 -4.04433 0
+-0.924798 -1.67478 0
+-0.212405 -0.0551127 0
+-0.105697 0.266806 0
+-0.105697 0.888396 0
+-1.92208 -0.273111 0
+-3.8318 -0.349731 0
+-7.5953 -0.299433 0
+-8.10143 0.194572 0
+-8.70405 1.63108 0
+-9.1213 3.8543 0
+-9.03871 5.92098 0
+-8.28744 6.731 0
+-6.94914 5.73209 0
+-5.33001 3.2283 0
+-3.82482 0.156999 0
+-2.75169 -2.44638 0
+-2.241 -3.93879 0
+-2.21856 -4.26097 0
+-2.47386 -3.79349 0
+-2.76829 -3.03635 0
+-2.92753 -2.34026 0
+-2.88019 -1.82662 0
+-2.64159 -1.46927 0
+-2.27194 -1.2135 0
+-1.84088 -1.03572 0
+-1.41015 -0.936216 0
+-1.02722 -0.909693 0
+-0.721204 -0.928502 0
+-0.500965 -0.945387 0
+-0.358121 -0.912018 0
+-0.272831 -0.805424 0
+-0.219156 -0.644036 0
+-0.170768 -0.475341 0
+-0.108946 -0.341962 0
+-0.0294554 -0.256892 0
+0.0580805 -0.20821 0
+0.138681 -0.179931 0
+0.200946 -0.162364 0
+0.240155 -0.146211 0
+0.257004 -0.116049 0
+0.256357 -0.0527349 0
+0.245493 0.0626268 0
+0.228461 0.248746 0
+0.198102 0.519986 0
+0.132869 0.872346 0
+0.00257581 1.27326 0
+-0.220744 1.67343 0
+-0.553258 2.03588 0
+-0.993216 2.35593 0
+-1.51786 2.65451 0
+-2.08546 2.95343 0
+-2.64539 3.25227 0
+-3.15352 3.51701 0
+-3.58442 3.68322 0
+-3.93396 3.67857 0
+-4.21447 3.46272 0
+-4.44768 3.06222 0
+-4.6574 2.56914 0
+-4.8612 2.09711 0
+-5.06375 1.725 0
+-5.25716 1.46655 0
+-5.42875 1.27688 0
+-5.56664 1.07958 0
+-5.65269 0.802553 0
+-5.6619 0.444214 0
+-5.64688 0.183652 0
+-5.63971 0.0448046 0
+-5.64472 -0.0452049 0
+-5.65204 -0.179014 0
+-5.6246 -0.426735 0
+-5.50853 -0.759476 0
+-5.33407 -1.00068 0
+-5.12706 -1.17411 0
+-4.90316 -1.38412 0
+-4.67288 -1.72183 0
+-4.43946 -2.21155 0
+-4.19411 -2.7977 0
+-3.91425 -3.37069 0
+-3.56893 -3.81348 0
+-3.13128 -4.04603 0
+-2.59195 -4.05164 0
+-1.96619 -3.87564 0
+-1.29173 -3.59558 0
+-0.620053 -3.2783 0
+-0.0043993 -2.95127 0
+0.513221 -2.60624 0
+0.912713 -2.22643 0
+1.19935 -1.81201 0
+1.39759 -1.38709 0
+1.53909 -0.990875 0
+1.65176 -0.663314 0
+1.75392 -0.431303 0
+1.85308 -0.29902 0
+1.94783 -0.248 0
+2.03237 -0.249167 0
+2.10284 -0.278201 0
+2.16222 -0.321375 0
+2.22054 -0.369377 0
+2.291 -0.409663 0
+2.38489 -0.427394 0
+2.50729 -0.413626 0
+2.6539 -0.37276 0
+2.80972 -0.324593 0
+2.95162 -0.3005 0
+3.05541 -0.332906 0
+3.10426 -0.439052 0
+3.0945 -0.608009 0
+3.03794 -0.803316 0
+2.96306 -0.981914 0
+2.91608 -1.11224 0
+2.95836 -1.17213 0
+3.15443 -1.12766 0
+3.54723 -0.920016 0
+4.12416 -0.493119 0
+4.78776 0.129791 0
+5.35246 0.757091 0
+5.58642 1.00231 0
+5.29761 0.392314 0
+4.43223 -1.38608 0
+3.13236 -4.21017 0
+1.70783 -7.40412 0
+0.518434 -9.92711 0
+-0.184215 -10.8362 0
+-0.375327 -9.78082 0
+-0.270081 -7.20695 0
+-0.21801 -4.0964 0
+-0.522273 -1.37051 0
+-0.206667 0.671639 0
+-0.238842 0.846684 0
+-0.238842 1.19452 0
+-1.5974 -0.202068 0
+-3.14144 -0.228461 0
+-6.12986 -0.111808 0
+-6.37559 0.440305 0
+-6.53776 1.79324 0
+-6.35978 3.67633 0
+-5.64311 5.20431 0
+-4.3964 5.48429 0
+-2.86559 4.20128 0
+-1.426 1.78872 0
+-0.408182 -0.860822 0
+0.0378698 -2.89243 0
+-0.0237101 -3.87721 0
+-0.378447 -3.90623 0
+-0.772768 -3.39917 0
+-1.01415 -2.79497 0
+-1.02037 -2.33404 0
+-0.809441 -2.03756 0
+-0.452649 -1.82606 0
+-0.0274788 -1.63867 0
+0.404835 -1.46803 0
+0.799679 -1.33106 0
+1.12558 -1.23559 0
+1.36686 -1.16978 0
+1.52692 -1.10545 0
+1.62454 -1.00964 0
+1.68539 -0.866279 0
+1.73518 -0.693823 0
+1.79497 -0.535134 0
+1.87582 -0.422814 0
+1.97459 -0.355659 0
+2.07679 -0.310406 0
+2.16613 -0.269275 0
+2.2324 -0.228631 0
+2.27182 -0.185628 0
+2.28406 -0.128286 0
+2.27218 -0.0408626 0
+2.24406 0.0907556 0
+2.20864 0.284157 0
+2.16725 0.561385 0
+2.10759 0.931999 0
+2.00671 1.37414 0
+1.83948 1.84065 0
+1.5871 2.28825 0
+1.24414 2.6989 0
+0.824775 3.07387 0
+0.364133 3.41407 0
+-0.0912084 3.70761 0
+-0.501035 3.92684 0
+-0.846293 4.02848 0
+-1.13168 3.96396 0
+-1.37759 3.70864 0
+-1.60889 3.29353 0
+-1.84448 2.80473 0
+-2.08809 2.34073 0
+-2.32385 1.96076 0
+-2.52215 1.66485 0
+-2.65627 1.411 0
+-2.71785 1.14117 0
+-2.70801 0.792713 0
+-2.59381 0.330013 0
+-2.51527 0.105111 0
+-2.49215 0.0216819 0
+-2.51493 -0.0224153 0
+-2.58902 -0.10493 0
+-2.68852 -0.327237 0
+-2.66549 -0.782504 0
+-2.55465 -1.11152 0
+-2.36382 -1.36493 0
+-2.11023 -1.6377 0
+-1.82475 -2.00731 0
+-1.53764 -2.49866 0
+-1.26339 -3.07195 0
+-0.992468 -3.64161 0
+-0.695145 -4.1108 0
+-0.337138 -4.40404 0
+0.101388 -4.49017 0
+0.61453 -4.38878 0
+1.17157 -4.15261 0
+1.72681 -3.83354 0
+2.23317 -3.45762 0
+2.6558 -3.02888 0
+2.98207 -2.5527 0
+3.22267 -2.05261 0
+3.40284 -1.56725 0
+3.54911 -1.13715 0
+3.68004 -0.79424 0
+3.80402 -0.555274 0
+3.92137 -0.416375 0
+4.02743 -0.354053 0
+4.11616 -0.337896 0
+4.18482 -0.346862 0
+4.23728 -0.373836 0
+4.28365 -0.415741 0
+4.33695 -0.462963 0
+4.40973 -0.500175 0
+4.51132 -0.515212 0
+4.64437 -0.505808 0
+4.80112 -0.481342 0
+4.96285 -0.462227 0
+5.10491 -0.474972 0
+5.20491 -0.539046 0
+5.24901 -0.652109 0
+5.23469 -0.789001 0
+5.17219 -0.91941 0
+5.08729 -1.02734 0
+5.02469 -1.10954 0
+5.04752 -1.1505 0
+5.22682 -1.09931 0
+5.61608 -0.882381 0
+6.21312 -0.46725 0
+6.9248 0.04541 0
+7.56163 0.365478 0
+7.88377 0.0701771 0
+7.69282 -1.19513 0
+6.92911 -3.44646 0
+5.71753 -6.19253 0
+4.32377 -8.53336 0
+3.03154 -9.54396 0
+2.00299 -8.75227 0
+1.20466 -6.40862 0
+0.451907 -3.34365 0
+-0.436319 -0.482287 0
+-0.356464 1.66693 0
+-0.410214 1.47169 0
+-0.410214 1.45148 0
+-1.33547 -0.156243 0
+-2.59115 -0.159481 0
+-4.98141 -0.0288788 0
+-5.02556 0.484453 0
+-4.87128 1.63896 0
+-4.31669 3.12174 0
+-3.2802 4.16783 0
+-1.90275 4.10684 0
+-0.511264 2.80979 0
+0.537485 0.739968 0
+1.02926 -1.35259 0
+0.975503 -2.83868 0
+0.57425 -3.47596 0
+0.0938939 -3.42588 0
+-0.245142 -3.06013 0
+-0.336803 -2.70331 0
+-0.190162 -2.48069 0
+0.11672 -2.34444 0
+0.494666 -2.20401 0
+0.879833 -2.02383 0
+1.237 -1.8252 0
+1.54489 -1.63895 0
+1.78734 -1.47805 0
+1.95777 -1.34021 0
+2.06533 -1.21301 0
+2.13169 -1.076 0
+2.18118 -0.915766 0
+2.23368 -0.746324 0
+2.30206 -0.603512 0
+2.38989 -0.51064 0
+2.48975 -0.455527 0
+2.58708 -0.407728 0
+2.66878 -0.350976 0
+2.72871 -0.288564 0
+2.76516 -0.222075 0
+2.77637 -0.139492 0
+2.7617 -0.0261975 0
+2.72613 0.12633 0
+2.67933 0.33095 0
+2.62789 0.612835 0
+2.56827 0.99162 0
+2.4873 1.45511 0
+2.36756 1.96039 0
+2.19289 2.46292 0
+1.95432 2.93747 0
+1.65768 3.37052 0
+1.32773 3.74402 0
+1.00105 4.03429 0
+0.708965 4.21892 0
+0.462702 4.27474 0
+0.251374 4.17529 0
+0.051426 3.90859 0
+-0.160651 3.50561 0
+-0.397318 3.04139 0
+-0.651505 2.59491 0
+-0.893669 2.20292 0
+-1.07963 1.8508 0
+-1.16963 1.501 0
+-1.15234 1.12388 0
+-1.05641 0.696781 0
+-0.827642 0.101246 0
+-0.733868 0.0113378 0
+-0.713223 0.00103719 0
+-0.734561 -0.00107786 0
+-0.827961 -0.0115305 0
+-1.05195 -0.103251 0
+-1.11993 -0.714518 0
+-1.08477 -1.14668 0
+-0.926719 -1.52298 0
+-0.669484 -1.89494 0
+-0.362039 -2.31475 0
+-0.0539585 -2.80674 0
+0.223492 -3.3494 0
+0.46814 -3.88625 0
+0.704533 -4.34719 0
+0.967885 -4.66739 0
+1.28346 -4.80574 0
+1.65372 -4.75904 0
+2.05837 -4.55726 0
+2.46359 -4.23875 0
+2.83435 -3.82838 0
+3.14622 -3.34075 0
+3.39307 -2.79955 0
+3.58662 -2.24615 0
+3.74712 -1.72775 0
+3.89168 -1.2817 0
+4.02808 -0.930641 0
+4.15626 -0.683457 0
+4.2726 -0.532713 0
+4.37278 -0.454232 0
+4.4535 -0.418607 0
+4.51453 -0.407895 0
+4.56027 -0.419569 0
+4.59879 -0.454261 0
+4.63967 -0.503842 0
+4.69282 -0.553325 0
+4.76804 -0.59043 0
+4.87239 -0.610158 0
+5.00521 -0.614161 0
+5.155 -0.612018 0
+5.30206 -0.622035 0
+5.42533 -0.662317 0
+5.50834 -0.735116 0
+5.54151 -0.82217 0
+5.52254 -0.900439 0
+5.45821 -0.963009 0
+5.36943 -1.02076 0
+5.29847 -1.07953 0
+5.31282 -1.11367 0
+5.49569 -1.06525 0
+5.91395 -0.885512 0
+6.56844 -0.609078 0
+7.35175 -0.417829 0
+8.04853 -0.626606 0
+8.39719 -1.5438 0
+8.19469 -3.24396 0
+7.39177 -5.3896 0
+6.12003 -7.26161 0
+4.62589 -8.04983 0
+3.14403 -7.2704 0
+1.78831 -5.0529 0
+0.53718 -2.09252 0
+-0.662004 0.716897 0
+-0.597917 2.71627 0
+-0.569045 2.03638 0
+-0.569045 1.63475 0
+-1.13514 -0.128892 0
+-2.17985 -0.125517 0
+-4.14792 -0.00988577 0
+-4.08036 0.416898 0
+-3.77715 1.33575 0
+-3.09855 2.44315 0
+-2.04793 3.1172 0
+-0.826609 2.88552 0
+0.242801 1.74038 0
+0.879776 0.102992 0
+0.986245 -1.45906 0
+0.676592 -2.52903 0
+0.194062 -2.99343 0
+-0.218209 -3.01361 0
+-0.41344 -2.8649 0
+-0.367527 -2.74922 0
+-0.145422 -2.70279 0
+0.15831 -2.64817 0
+0.469445 -2.51515 0
+0.752584 -2.30697 0
+0.998979 -2.07159 0
+1.20501 -1.84498 0
+1.36366 -1.63669 0
+1.47187 -1.44842 0
+1.53893 -1.28007 0
+1.5838 -1.12086 0
+1.62541 -0.957383 0
+1.67631 -0.797223 0
+1.74187 -0.669067 0
+1.82058 -0.589354 0
+1.90421 -0.539158 0
+1.98137 -0.484888 0
+2.04411 -0.413712 0
+2.09069 -0.335143 0
+2.12135 -0.252739 0
+2.13343 -0.151571 0
+2.12318 -0.0159481 0
+2.09181 0.157704 0
+2.04683 0.375925 0
+1.9963 0.663371 0
+1.94243 1.04549 0
+1.8806 1.51694 0
+1.80176 2.03924 0
+1.69487 2.56981 0
+1.55079 3.08155 0
+1.36939 3.55192 0
+1.16522 3.94819 0
+0.963292 4.23622 0
+0.785288 4.39693 0
+0.636932 4.4231 0
+0.506461 4.30576 0
+0.373276 4.04177 0
+0.219279 3.65961 0
+0.0381115 3.22256 0
+-0.158451 2.79148 0
+-0.339063 2.38353 0
+-0.459528 1.97127 0
+-0.475487 1.51696 0
+-0.354659 1.00306 0
+-0.107293 0.449414 0
+-0.0226902 0.0166436 0
+-0.0124124 0.00105995 0
+-0.0114383 6.30565e-05 0
+-0.0124527 -6.35047e-05 0
+-0.0228775 -0.00110567 0
+-0.108413 -0.0177155 0
+-0.340066 -0.482864 0
+-0.417138 -1.06961 0
+-0.337232 -1.60289 0
+-0.145898 -2.08627 0
+0.101144 -2.56179 0
+0.351898 -3.0575 0
+0.571247 -3.56875 0
+0.750599 -4.0656 0
+0.906998 -4.50359 0
+1.06977 -4.83015 0
+1.26241 -4.99839 0
+1.49109 -4.98771 0
+1.74435 -4.81052 0
+2.00058 -4.49498 0
+2.2375 -4.06531 0
+2.44069 -3.54393 0
+2.60852 -2.96738 0
+2.75075 -2.38838 0
+2.88055 -1.85755 0
+3.00574 -1.40689 0
+3.12596 -1.05085 0
+3.23625 -0.793747 0
+3.33204 -0.628497 0
+3.41109 -0.533289 0
+3.47337 -0.480885 0
+3.52092 -0.455445 0
+3.55791 -0.456548 0
+3.5895 -0.485851 0
+3.62078 -0.535125 0
+3.65744 -0.589983 0
+3.70715 -0.640135 0
+3.77815 -0.681162 0
+3.87434 -0.710346 0
+3.99084 -0.728521 0
+4.11464 -0.745838 0
+4.22963 -0.777306 0
+4.32175 -0.827232 0
+4.38101 -0.881429 0
+4.40089 -0.920317 0
+4.37789 -0.940009 0
+4.3146 -0.957467 0
+4.22851 -0.99344 0
+4.1643 -1.04946 0
+4.19878 -1.09974 0
+4.42336 -1.11009 0
+4.8981 -1.08382 0
+5.59447 -1.11419 0
+6.36273 -1.39487 0
+6.95746 -2.13853 0
+7.12394 -3.41044 0
+6.70797 -4.97363 0
+5.72759 -6.28124 0
+4.3599 -6.68213 0
+2.84638 -5.75689 0
+1.37754 -3.58406 0
+0.0379918 -0.752968 0
+-1.14127 1.89616 0
+-0.875072 3.61952 0
+-0.688155 2.4709 0
+-0.688155 1.74584 0
+-0.986065 -0.11351 0
+-1.88247 -0.110576 0
+-3.56715 -0.0175869 0
+-3.46939 0.319138 0
+-3.16286 1.02922 0
+-2.56282 1.84311 0
+-1.71444 2.26881 0
+-0.811069 1.98215 0
+-0.108972 1.03828 0
+0.20842 -0.2144 0
+0.124201 -1.37484 0
+-0.218757 -2.18607 0
+-0.608925 -2.60326 0
+-0.873642 -2.74889 0
+-0.940515 -2.79803 0
+-0.834412 -2.85532 0
+-0.632235 -2.90497 0
+-0.410887 -2.86952 0
+-0.215097 -2.71093 0
+-0.0546269 -2.46744 0
+0.0776175 -2.20384 0
+0.186235 -1.9536 0
+0.268344 -1.7188 0
+0.321857 -1.50194 0
+0.353401 -1.31161 0
+0.376459 -1.14392 0
+0.403493 -0.984417 0
+0.440905 -0.834635 0
+0.48922 -0.717381 0
+0.544688 -0.644821 0
+0.600528 -0.594997 0
+0.649706 -0.534066 0
+0.688868 -0.452874 0
+0.719046 -0.36532 0
+0.741495 -0.275187 0
+0.753739 -0.163815 0
+0.751295 -0.0135038 0
+0.733054 0.175946 0
+0.70351 0.40547 0
+0.669442 0.69744 0
+0.635382 1.07955 0
+0.601926 1.5504 0
+0.565973 2.07519 0
+0.521057 2.61472 0
+0.459457 3.14315 0
+0.377859 3.63352 0
+0.282721 4.04333 0
+0.188745 4.33019 0
+0.109881 4.47579 0
+0.0504008 4.48258 0
+0.00342896 4.35273 0
+-0.0432467 4.08845 0
+-0.0994429 3.7158 0
+-0.166664 3.28978 0
+-0.234866 2.85968 0
+-0.283254 2.43192 0
+-0.287093 1.97511 0
+-0.229782 1.45965 0
+-0.118984 0.892259 0
+-0.0109496 0.34138 0
+-0.00113275 0.00682678 0
+-0.000237058 0.000164211 0
+-0.000177805 3.64854e-06 0
+-0.000237817 -3.65106e-06 0
+-0.00116185 -0.000181698 0
+-0.0112006 -0.00767672 0
+-0.111759 -0.382306 0
+-0.195564 -0.985804 0
+-0.208815 -1.58964 0
+-0.153487 -2.1416 0
+-0.0556133 -2.65967 0
+0.0531376 -3.16624 0
+0.148197 -3.6638 0
+0.221027 -4.13843 0
+0.280336 -4.5629 0
+0.343959 -4.89377 0
+0.426709 -5.08114 0
+0.532455 -5.09346 0
+0.654092 -4.93216 0
+0.778807 -4.61969 0
+0.894417 -4.18092 0
+0.994396 -3.6439 0
+1.08016 -3.05314 0
+1.15899 -2.46721 0
+1.23822 -1.93678 0
+1.31978 -1.48845 0
+1.39956 -1.13064 0
+1.4714 -0.865581 0
+1.53128 -0.68838 0
+1.57861 -0.580618 0
+1.6151 -0.517378 0
+1.6436 -0.483942 0
+1.6672 -0.48014 0
+1.68827 -0.50692 0
+1.70824 -0.555096 0
+1.72915 -0.610892 0
+1.75573 -0.666722 0
+1.79499 -0.720414 0
+1.85226 -0.767616 0
+1.92705 -0.803317 0
+2.0123 -0.831083 0
+2.09748 -0.862482 0
+2.17273 -0.902481 0
+2.23093 -0.939631 0
+2.26695 -0.956335 0
+2.27544 -0.948501 0
+2.25064 -0.932665 0
+2.19238 -0.935182 0
+2.1193 -0.976378 0
+2.08138 -1.06181 0
+2.15644 -1.18514 0
+2.41923 -1.34661 0
+2.88996 -1.58492 0
+3.49036 -1.99526 0
+4.04174 -2.6899 0
+4.32115 -3.68986 0
+4.15582 -4.8083 0
+3.50544 -5.63086 0
+2.48081 -5.6575 0
+1.28366 -4.55974 0
+0.106324 -2.40672 0
+-0.937948 0.291304 0
+-1.80102 2.75923 0
+-1.15614 4.22504 0
+-0.76405 2.73896 0
+-0.76405 1.7998 0
+-0.875499 -0.105705 0
+-1.66732 -0.10458 0
+-3.16019 -0.0289674 0
+-3.08268 0.241628 0
+-2.85998 0.806523 0
+-2.44967 1.4328 0
+-1.90315 1.72229 0
+-1.36132 1.44033 0
+-0.985355 0.662313 0
+-0.868877 -0.330878 0
+-0.991341 -1.25238 0
+-1.2398 -1.93761 0
+-1.47756 -2.3655 0
+-1.61151 -2.61494 0
+-1.62076 -2.78878 0
+-1.54184 -2.93424 0
+-1.43155 -3.01525 0
+-1.33385 -2.96722 0
+-1.26587 -2.77891 0
+-1.22345 -2.50987 0
+-1.19581 -2.23148 0
+-1.17695 -1.97245 0
+-1.16711 -1.72864 0
+-1.16707 -1.50198 0
+-1.17327 -1.30541 0
+-1.17858 -1.1386 0
+-1.17667 -0.98633 0
+-1.16514 -0.846165 0
+-1.14562 -0.736898 0
+-1.12209 -0.668357 0
+-1.09897 -0.618116 0
+-1.07933 -0.5537 0
+-1.06361 -0.468593 0
+-1.05022 -0.378715 0
+-1.03801 -0.287396 0
+-1.02818 -0.173645 0
+-1.0233 -0.0183828 0
+-1.02445 0.177098 0
+-1.02948 0.410504 0
+-1.03391 0.701864 0
+-1.03315 1.07879 0
+-1.02451 1.54175 0
+-1.00841 2.0591 0
+-0.988906 2.59522 0
+-0.972268 3.12652 0
+-0.963257 3.62451 0
+-0.961353 4.04143 0
+-0.960323 4.32916 0
+-0.951861 4.46733 0
+-0.930153 4.46087 0
+-0.893652 4.31623 0
+-0.843367 4.03816 0
+-0.779794 3.65223 0
+-0.70086 3.21085 0
+-0.602164 2.76098 0
+-0.480072 2.30983 0
+-0.337272 1.83231 0
+-0.188763 1.31114 0
+-0.0646119 0.768108 0
+-0.00180909 0.278578 0
+-8.97523e-05 0.00510744 0
+-7.42097e-06 8.18827e-05 0
+-3.7602e-06 -3.79732e-08 0
+-7.26597e-06 -1.84738e-07 0
+-9.26829e-05 -9.63184e-05 0
+-0.00182482 -0.00594458 0
+-0.0622635 -0.321867 0
+-0.177369 -0.870698 0
+-0.310325 -1.45668 0
+-0.434408 -2.01751 0
+-0.538234 -2.55584 0
+-0.621878 -3.0826 0
+-0.690552 -3.59513 0
+-0.748261 -4.08072 0
+-0.794555 -4.5166 0
+-0.82604 -4.86229 0
+-0.840677 -5.0665 0
+-0.840932 -5.0932 0
+-0.833428 -4.93966 0
+-0.825863 -4.62725 0
+-0.823459 -4.18332 0
+-0.826792 -3.64057 0
+-0.831909 -3.04802 0
+-0.832843 -2.46628 0
+-0.825335 -1.94429 0
+-0.80942 -1.50436 0
+-0.789064 -1.15099 0
+-0.769382 -0.885262 0
+-0.753803 -0.703957 0
+-0.74305 -0.591369 0
+-0.73586 -0.524567 0
+-0.730339 -0.489462 0
+-0.725149 -0.485329 0
+-0.720151 -0.511917 0
+-0.716034 -0.559212 0
+-0.712795 -0.61413 0
+-0.70813 -0.671386 0
+-0.697481 -0.731062 0
+-0.676301 -0.788796 0
+-0.643003 -0.836614 0
+-0.600281 -0.873805 0
+-0.553802 -0.908961 0
+-0.509361 -0.946922 0
+-0.470674 -0.978317 0
+-0.439647 -0.987362 0
+-0.419149 -0.968999 0
+-0.415682 -0.936132 0
+-0.437412 -0.913452 0
+-0.48492 -0.92887 0
+-0.538575 -1.00816 0
+-0.553517 -1.1702 0
+-0.473454 -1.42668 0
+-0.263824 -1.79455 0
+0.051598 -2.31069 0
+0.376588 -3.01489 0
+0.569621 -3.88289 0
+0.506629 -4.74531 0
+0.14646 -5.27069 0
+-0.443096 -5.06795 0
+-1.11979 -3.88304 0
+-1.74181 -1.78471 0
+-2.23139 0.780885 0
+-2.58118 3.10902 0
+-1.439 4.44274 0
+-0.813307 2.82681 0
+-0.813307 1.81213 0
+-0.792346 -0.103322 0
+-1.50741 -0.103866 0
+-2.86092 -0.0370068 0
+-2.81835 0.199057 0
+-2.70143 0.689602 0
+-2.49852 1.2299 0
+-2.24915 1.47292 0
+-2.02781 1.21898 0
+-1.90208 0.536585 0
+-1.89647 -0.336491 0
+-1.98461 -1.16424 0
+-2.11009 -1.81213 0
+-2.21893 -2.25666 0
+-2.28397 -2.5499 0
+-2.3099 -2.76285 0
+-2.32032 -2.92382 0
+-2.33863 -2.99694 0
+-2.37575 -2.9301 0
+-2.42995 -2.72472 0
+-2.4938 -2.44602 0
+-2.56039 -2.16489 0
+-2.62517 -1.90768 0
+-2.68536 -1.66844 0
+-2.73941 -1.44793 0
+-2.78645 -1.25837 0
+-2.8256 -1.09946 0
+-2.85581 -0.956121 0
+-2.8771 -0.824867 0
+-2.8916 -0.722405 0
+-2.90252 -0.657432 0
+-2.91201 -0.608621 0
+-2.92012 -0.545598 0
+-2.92585 -0.462853 0
+-2.92863 -0.375935 0
+-2.9282 -0.287828 0
+-2.92394 -0.177911 0
+-2.9149 -0.0274163 0
+-2.90032 0.162521 0
+-2.87909 0.389268 0
+-2.84854 0.671319 0
+-2.80461 1.03486 0
+-2.744 1.48114 0
+-2.66658 1.98167 0
+-2.57575 2.5044 0
+-2.47699 3.02776 0
+-2.37594 3.52345 0
+-2.27687 3.94236 0
+-2.18105 4.23334 0
+-2.08531 4.37159 0
+-1.98224 4.35781 0
+-1.86233 4.19632 0
+-1.71629 3.89212 0
+-1.53629 3.47223 0
+-1.31714 2.9917 0
+-1.05947 2.50332 0
+-0.774647 2.02501 0
+-0.4883 1.54596 0
+-0.238984 1.06182 0
+-0.0689229 0.598047 0
+-0.00137115 0.211026 0
+-8.16166e-05 0.0038179 0
+-1.16064e-05 1.19154e-05 0
+-4.19082e-06 -7.41424e-06 0
+-1.17619e-05 7.41189e-06 0
+-7.8674e-05 -2.94029e-05 0
+-0.00135539 -0.00466786 0
+-0.0712707 -0.251951 0
+-0.250377 -0.691591 0
+-0.515247 -1.19181 0
+-0.820313 -1.71245 0
+-1.1234 -2.25275 0
+-1.39612 -2.80988 0
+-1.62552 -3.36572 0
+-1.81138 -3.89486 0
+-1.9614 -4.36658 0
+-2.08632 -4.73736 0
+-2.19645 -4.95636 0
+-2.3004 -4.98926 0
+-2.40474 -4.83531 0
+-2.51327 -4.51872 0
+-2.62574 -4.07085 0
+-2.7378 -3.52851 0
+-2.84301 -2.94281 0
+-2.9356 -2.37368 0
+-3.01236 -1.86752 0
+-3.07295 -1.44377 0
+-3.11942 -1.10452 0
+-3.1553 -0.849385 0
+-3.18429 -0.674963 0
+-3.20894 -0.566715 0
+-3.23021 -0.503296 0
+-3.24836 -0.471315 0
+-3.26415 -0.469535 0
+-3.27913 -0.496937 0
+-3.2948 -0.543541 0
+-3.3117 -0.597227 0
+-3.32902 -0.654067 0
+-3.34471 -0.715375 0
+-3.35607 -0.777429 0
+-3.36096 -0.83173 0
+-3.35904 -0.875721 0
+-3.35208 -0.915922 0
+-3.34236 -0.956642 0
+-3.33061 -0.990066 0
+-3.31573 -1.00223 0
+-3.29739 -0.98734 0
+-3.27961 -0.953913 0
+-3.27189 -0.921171 0
+-3.2852 -0.915561 0
+-3.32371 -0.969652 0
+-3.37731 -1.1166 0
+-3.42202 -1.38197 0
+-3.4323 -1.78427 0
+-3.40078 -2.3422 0
+-3.35189 -3.06379 0
+-3.33514 -3.89964 0
+-3.39597 -4.68447 0
+-3.53993 -5.12674 0
+-3.71607 -4.8918 0
+-3.83727 -3.76185 0
+-3.82956 -1.79242 0
+-3.67981 0.631141 0
+-3.44975 2.87896 0
+-1.74806 4.24373 0
+-0.867109 2.73121 0
+-0.867109 1.78856 0
+-0.728611 -0.105486 0
+-1.38477 -0.108926 0
+-2.62803 -0.0460621 0
+-2.6079 0.17893 0
+-2.56852 0.650222 0
+-2.5212 1.18257 0
+-2.4931 1.44483 0
+-2.50445 1.23034 0
+-2.55143 0.583558 0
+-2.61167 -0.276251 0
+-2.66446 -1.11145 0
+-2.7054 -1.77119 0
+-2.74601 -2.21605 0
+-2.80403 -2.49188 0
+-2.89356 -2.67332 0
+-3.01866 -2.79872 0
+-3.17166 -2.84395 0
+-3.33761 -2.76415 0
+-3.5031 -2.55923 0
+-3.66197 -2.28715 0
+-3.81291 -2.01395 0
+-3.95328 -1.76731 0
+-4.07761 -1.54411 0
+-4.18213 -1.34341 0
+-4.26832 -1.17219 0
+-4.34067 -1.02711 0
+-4.4026 -0.894187 0
+-4.45589 -0.77158 0
+-4.50267 -0.675621 0
+-4.54537 -0.614733 0
+-4.58424 -0.56975 0
+-4.61707 -0.512767 0
+-4.64222 -0.437706 0
+-4.66046 -0.357694 0
+-4.67263 -0.275657 0
+-4.67651 -0.174034 0
+-4.66767 -0.0362584 0
+-4.6429 0.137753 0
+-4.60095 0.347322 0
+-4.53978 0.610149 0
+-4.45503 0.950116 0
+-4.3426 1.36871 0
+-4.20191 1.84098 0
+-4.03607 2.33857 0
+-3.85006 2.84175 0
+-3.65043 3.32382 0
+-3.44596 3.73789 0
+-3.24534 4.03272 0
+-3.05169 4.17794 0
+-2.85904 4.16516 0
+-2.65434 3.99162 0
+-2.42254 3.66032 0
+-2.15051 3.20021 0
+-1.83001 2.6712 0
+-1.46258 2.13589 0
+-1.06569 1.62812 0
+-0.674925 1.15519 0
+-0.338562 0.72546 0
+-0.105348 0.364833 0
+-0.00412631 0.109804 0
+-0.000563438 0.000255029 0
+-8.57644e-05 -0.000465692 0
+-2.01763e-05 -7.28409e-05 0
+-8.50048e-05 7.23976e-05 0
+-0.000534322 0.000419976 0
+-0.00387527 -0.00132691 0
+-0.112573 -0.143254 0
+-0.37278 -0.431383 0
+-0.753204 -0.811382 0
+-1.19546 -1.27018 0
+-1.64184 -1.80637 0
+-2.04981 -2.4019 0
+-2.39814 -3.01739 0
+-2.68679 -3.60621 0
+-2.93122 -4.12215 0
+-3.15257 -4.51601 0
+-3.36848 -4.74045 0
+-3.58901 -4.76873 0
+-3.81728 -4.60703 0
+-4.05132 -4.28468 0
+-4.28496 -3.83721 0
+-4.50935 -3.30412 0
+-4.71602 -2.73614 0
+-4.89959 -2.19011 0
+-5.0578 -1.70931 0
+-5.19004 -1.31153 0
+-5.29691 -0.997643 0
+-5.38114 -0.765159 0
+-5.44754 -0.608563 0
+-5.50125 -0.513001 0
+-5.5461 -0.458448 0
+-5.58486 -0.432551 0
+-5.62039 -0.434008 0
+-5.65548 -0.461837 0
+-5.69184 -0.507188 0
+-5.72976 -0.559304 0
+-5.76914 -0.61468 0
+-5.80992 -0.674603 0
+-5.85123 -0.73611 0
+-5.89098 -0.791984 0
+-5.92674 -0.83996 0
+-5.95709 -0.885566 0
+-5.98122 -0.932519 0
+-5.99719 -0.974094 0
+-6.00155 -0.99787 0
+-5.99153 -0.997368 0
+-5.96853 -0.976907 0
+-5.94075 -0.948948 0
+-5.92317 -0.933139 0
+-5.93439 -0.958433 0
+-5.9902 -1.06079 0
+-6.09614 -1.27604 0
+-6.24358 -1.63683 0
+-6.41282 -2.17296 0
+-6.58048 -2.89612 0
+-6.72396 -3.75617 0
+-6.81777 -4.59065 0
+-6.82512 -5.1194 0
+-6.6951 -5.02181 0
+-6.37644 -4.0805 0
+-5.84756 -2.3213 0
+-5.14946 -0.0669598 0
+-4.40402 2.13352 0
+-2.12406 3.65439 0
+-0.963976 2.45242 0
+-0.963976 1.72045 0
+-0.678871 -0.111375 0
+-1.28929 -0.121147 0
+-2.44249 -0.0644797 0
+-2.42016 0.156594 0
+-2.40544 0.635502 0
+-2.42738 1.20452 0
+-2.51169 1.52913 0
+-2.65189 1.37053 0
+-2.80501 0.736687 0
+-2.921 -0.160266 0
+-2.97982 -1.05263 0
+-3.00408 -1.74693 0
+-3.04076 -2.17937 0
+-3.13219 -2.40045 0
+-3.29719 -2.50832 0
+-3.5278 -2.5681 0
+-3.79716 -2.57459 0
+-4.07373 -2.48758 0
+-4.33583 -2.29713 0
+-4.57722 -2.04576 0
+-4.79977 -1.79139 0
+-5.00237 -1.56471 0
+-5.17851 -1.36797 0
+-5.32372 -1.1982 0
+-5.44147 -1.05444 0
+-5.54021 -0.928366 0
+-5.62679 -0.807606 0
+-5.70473 -0.693637 0
+-5.7767 -0.603656 0
+-5.84473 -0.546698 0
+-5.90773 -0.50675 0
+-5.96174 -0.458762 0
+-6.00436 -0.395078 0
+-6.03713 -0.324926 0
+-6.06164 -0.251148 0
+-6.07483 -0.160837 0
+-6.07016 -0.0409324 0
+-6.04261 0.1102 0
+-5.99014 0.29486 0
+-5.91002 0.530028 0
+-5.79636 0.836455 0
+-5.64306 1.2154 0
+-5.44787 1.6458 0
+-5.21263 2.10332 0
+-4.94145 2.57057 0
+-4.64176 3.02413 0
+-4.32653 3.42266 0
+-4.01173 3.71791 0
+-3.70831 3.87453 0
+-3.41615 3.87299 0
+-3.12526 3.70073 0
+-2.82164 3.3567 0
+-2.49164 2.87021 0
+-2.12499 2.30455 0
+-1.72008 1.73098 0
+-1.29072 1.19877 0
+-0.867889 0.732362 0
+-0.492571 0.350142 0
+-0.203697 0.0759598 0
+-0.0304029 -0.0634901 0
+-0.00589749 -0.0242504 0
+-0.00139219 -0.00497099 0
+-0.000652083 -0.000812942 0
+-0.00135195 0.00077227 0
+-0.00571018 0.0047782 0
+-0.0292821 0.0222451 0
+-0.218289 0.0457534 0
+-0.55092 -0.0987518 0
+-0.990188 -0.372112 0
+-1.48389 -0.776481 0
+-1.97967 -1.31059 0
+-2.43877 -1.94281 0
+-2.84359 -2.61257 0
+-3.19894 -3.25086 0
+-3.52577 -3.79531 0
+-3.84896 -4.19283 0
+-4.18541 -4.40399 0
+-4.53949 -4.41464 0
+-4.90562 -4.2409 0
+-5.2729 -3.9174 0
+-5.6281 -3.482 0
+-5.95838 -2.97384 0
+-6.25457 -2.43994 0
+-6.51314 -1.93154 0
+-6.73441 -1.48804 0
+-6.91939 -1.12654 0
+-7.06918 -0.847852 0
+-7.18695 -0.647393 0
+-7.27889 -0.516614 0
+-7.35236 -0.439533 0
+-7.41351 -0.397297 0
+-7.46721 -0.378845 0
+-7.51802 -0.3832 0
+-7.56975 -0.410103 0
+-7.62424 -0.4527 0
+-7.68157 -0.501973 0
+-7.74196 -0.55429 0
+-7.8065 -0.610067 0
+-7.8755 -0.667104 0
+-7.94685 -0.720634 0
+-8.01658 -0.770229 0
+-8.08075 -0.821395 0
+-8.13587 -0.877399 0
+-8.17776 -0.932199 0
+-8.20131 -0.974323 0
+-8.20242 -0.99626 0
+-8.18109 -0.99824 0
+-8.14408 -0.985958 0
+-8.10685 -0.970368 0
+-8.09361 -0.971666 0
+-8.13275 -1.02165 0
+-8.24638 -1.1624 0
+-8.43828 -1.44494 0
+-8.68702 -1.92421 0
+-8.94836 -2.63479 0
+-9.16402 -3.54051 0
+-9.27143 -4.48324 0
+-9.21016 -5.18067 0
+-8.9262 -5.30577 0
+-8.3809 -4.6258 0
+-7.56974 -3.13246 0
+-6.54848 -1.08822 0
+-5.4591 1.04414 0
+-2.60838 2.75033 0
+-1.14082 1.99565 0
+-1.14082 1.58717 0
+-0.638829 -0.11934 0
+-1.21459 -0.140113 0
+-2.29703 -0.0977594 0
+-2.25064 0.110203 0
+-2.20893 0.593795 0
+-2.21351 1.20909 0
+-2.30173 1.61736 0
+-2.47128 1.54008 0
+-2.67389 0.939296 0
+-2.84846 0.01431 0
+-2.96481 -0.936283 0
+-3.0412 -1.67054 0
+-3.12701 -2.09356 0
+-3.27075 -2.25671 0
+-3.4968 -2.28228 0
+-3.7987 -2.2662 0
+-4.14625 -2.22704 0
+-4.50159 -2.13224 0
+-4.83688 -1.96184 0
+-5.14216 -1.74048 0
+-5.41836 -1.51519 0
+-5.66489 -1.31818 0
+-5.87614 -1.15672 0
+-6.04867 -1.02567 0
+-6.18747 -0.915641 0
+-6.30295 -0.81288 0
+-6.40409 -0.706469 0
+-6.49626 -0.601468 0
+-6.58341 -0.516508 0
+-6.66796 -0.462144 0
+-6.74815 -0.426561 0
+-6.81871 -0.388201 0
+-6.87615 -0.337635 0
+-6.9216 -0.27948 0
+-6.95676 -0.21599 0
+-6.97865 -0.138947 0
+-6.98046 -0.0391167 0
+-6.95667 0.0864093 0
+-6.90435 0.242544 0
+-6.81917 0.444851 0
+-6.69281 0.710089 0
+-6.51614 1.03874 0
+-6.2839 1.41356 0
+-5.99537 1.8148 0
+-5.65322 2.22841 0
+-5.26528 2.6362 0
+-4.84766 3.00504 0
+-4.42227 3.29253 0
+-4.00824 3.4605 0
+-3.6146 3.47935 0
+-3.24041 3.32654 0
+-2.87935 2.99564 0
+-2.52268 2.51354 0
+-2.16083 1.9427 0
+-1.78799 1.35814 0
+-1.40933 0.820108 0
+-1.04406 0.367084 0
+-0.720668 0.0267543 0
+-0.467806 -0.176901 0
+-0.301873 -0.229423 0
+-0.1821 -0.144023 0
+-0.117742 -0.069329 0
+-0.0979971 -0.0205575 0
+-0.117049 0.019824 0
+-0.18178 0.0695093 0
+-0.306333 0.146799 0
+-0.500214 0.239635 0
+-0.80553 0.206565 0
+-1.19697 0.0193249 0
+-1.63352 -0.339922 0
+-2.07746 -0.866651 0
+-2.50418 -1.51608 0
+-2.90681 -2.20993 0
+-3.29604 -2.86163 0
+-3.69354 -3.39781 0
+-4.11976 -3.76662 0
+-4.58271 -3.94103 0
+-5.07491 -3.92245 0
+-5.57827 -3.73754 0
+-6.07115 -3.42452 0
+-6.53319 -3.01996 0
+-6.94864 -2.5584 0
+-7.30935 -2.07923 0
+-7.61539 -1.6255 0
+-7.87159 -1.23184 0
+-8.08289 -0.915244 0
+-8.25301 -0.677731 0
+-8.3867 -0.513699 0
+-8.49124 -0.412074 0
+-8.57493 -0.355845 0
+-8.64495 -0.32727 0
+-8.70729 -0.316506 0
+-8.76755 -0.322942 0
+-8.83038 -0.347272 0
+-8.89806 -0.385011 0
+-8.97091 -0.429127 0
+-9.04935 -0.475846 0
+-9.13481 -0.524612 0
+-9.22777 -0.574143 0
+-9.3257 -0.622698 0
+-9.4235 -0.672434 0
+-9.51552 -0.729366 0
+-9.59658 -0.796342 0
+-9.66127 -0.867504 0
+-9.70406 -0.931539 0
+-9.72102 -0.979302 0
+-9.71224 -1.00701 0
+-9.68371 -1.01449 0
+-9.64899 -1.00509 0
+-9.62994 -0.990711 0
+-9.6534 -0.998197 0
+-9.74162 -1.07419 0
+-9.90007 -1.28649 0
+-10.1098 -1.71443 0
+-10.3295 -2.41516 0
+-10.5045 -3.36547 0
+-10.5785 -4.40923 0
+-10.4985 -5.26071 0
+-10.2146 -5.58965 0
+-9.68258 -5.15782 0
+-8.87776 -3.93728 0
+-7.82314 -2.14285 0
+-6.62664 -0.152359 0
+-3.2243 1.65173 0
+-1.42277 1.38097 0
+-1.42277 1.36553 0
+-0.603976 -0.126704 0
+-1.15387 -0.162376 0
+-2.18454 -0.144499 0
+-2.10535 0.0310123 0
+-2.00535 0.493795 0
+-1.9313 1.13504 0
+-1.93972 1.62578 0
+-2.05604 1.65639 0
+-2.25516 1.13842 0
+-2.48147 0.240614 0
+-2.68868 -0.729065 0
+-2.86644 -1.49278 0
+-3.03838 -1.92162 0
+-3.24171 -2.05338 0
+-3.50499 -2.019 0
+-3.83408 -1.93711 0
+-4.21002 -1.8511 0
+-4.59962 -1.74265 0
+-4.97285 -1.58861 0
+-5.31426 -1.39907 0
+-5.62043 -1.20902 0
+-5.88986 -1.04875 0
+-6.11867 -0.927904 0
+-6.30533 -0.839006 0
+-6.45535 -0.765624 0
+-6.57896 -0.689275 0
+-6.68555 -0.599872 0
+-6.78201 -0.505011 0
+-6.87402 -0.424495 0
+-6.96517 -0.370995 0
+-7.05396 -0.337768 0
+-7.13459 -0.30757 0
+-7.20235 -0.269879 0
+-7.25698 -0.224851 0
+-7.29958 -0.173382 0
+-7.32783 -0.110698 0
+-7.33619 -0.0307624 0
+-7.31976 0.069984 0
+-7.27495 0.19773 0
+-7.19558 0.365483 0
+-7.0708 0.585311 0
+-6.88845 0.856386 0
+-6.63993 1.16503 0
+-6.32157 1.49644 0
+-5.93424 1.84108 0
+-5.48541 2.18737 0
+-4.99231 2.51194 0
+-4.48003 2.78025 0
+-3.97392 2.95439 0
+-3.49263 2.99806 0
+-3.04716 2.88107 0
+-2.64299 2.59147 0
+-2.28041 2.15096 0
+-1.95385 1.61614 0
+-1.65494 1.05923 0
+-1.37911 0.544283 0
+-1.12977 0.117748 0
+-0.915725 -0.187295 0
+-0.7436 -0.349027 0
+-0.607548 -0.365474 0
+-0.480246 -0.271326 0
+-0.39252 -0.157055 0
+-0.361813 -0.0512635 0
+-0.392853 0.0508634 0
+-0.485036 0.161693 0
+-0.627044 0.288807 0
+-0.795967 0.408558 0
+-1.01735 0.427945 0
+-1.2881 0.290081 0
+-1.59273 -0.0352936 0
+-1.91827 -0.541106 0
+-2.26067 -1.17368 0
+-2.6259 -1.84471 0
+-3.02809 -2.45944 0
+-3.48367 -2.94223 0
+-4.00176 -3.24852 0
+-4.57632 -3.36647 0
+-5.18575 -3.31302 0
+-5.79971 -3.12357 0
+-6.38741 -2.83682 0
+-6.92322 -2.48415 0
+-7.39021 -2.0914 0
+-7.78245 -1.68699 0
+-8.10434 -1.3036 0
+-8.36597 -0.970208 0
+-8.57736 -0.703851 0
+-8.74625 -0.508842 0
+-8.87961 -0.380335 0
+-8.98525 -0.30643 0
+-9.07108 -0.270018 0
+-9.14381 -0.254536 0
+-9.20932 -0.250999 0
+-9.27347 -0.258791 0
+-9.34147 -0.279267 0
+-9.41636 -0.310121 0
+-9.49908 -0.346406 0
+-9.59025 -0.384669 0
+-9.6909 -0.423967 0
+-9.80077 -0.464272 0
+-9.9166 -0.506869 0
+-10.0327 -0.556375 0
+-10.1429 -0.619153 0
+-10.242 -0.697246 0
+-10.3252 -0.784248 0
+-10.3886 -0.868162 0
+-10.4301 -0.937801 0
+-10.4511 -0.985981 0
+-10.4569 -1.00871 0
+-10.4564 -1.00558 0
+-10.4621 -0.985074 0
+-10.4871 -0.973134 0
+-10.5401 -1.02123 0
+-10.6185 -1.20804 0
+-10.7079 -1.62502 0
+-10.7872 -2.33591 0
+-10.8367 -3.31594 0
+-10.8412 -4.40472 0
+-10.7816 -5.32036 0
+-10.6214 -5.74981 0
+-10.3021 -5.47713 0
+-9.75651 -4.48289 0
+-8.94241 -2.95694 0
+-7.8888 -1.20597 0
+-3.95847 0.516853 0
+-1.81223 0.657745 0
+-1.81223 1.04456 0
+-0.569069 -0.13026 0
+-1.09769 -0.181939 0
+-2.09057 -0.195978 0
+-1.98643 -0.0731321 0
+-1.82602 0.333382 0
+-1.65132 0.96035 0
+-1.53562 1.51008 0
+-1.54159 1.66236 0
+-1.68516 1.28199 0
+-1.93224 0.487693 0
+-2.22566 -0.435641 0
+-2.51827 -1.20017 0
+-2.792 -1.6479 0
+-3.05767 -1.7877 0
+-3.34061 -1.73606 0
+-3.66076 -1.61696 0
+-4.01842 -1.49344 0
+-4.39435 -1.36672 0
+-4.76277 -1.22019 0
+-5.10498 -1.05686 0
+-5.41265 -0.901348 0
+-5.68246 -0.778943 0
+-5.91194 -0.698426 0
+-6.10103 -0.649913 0
+-6.2545 -0.612159 0
+-6.38031 -0.563465 0
+-6.4864 -0.493777 0
+-6.58001 -0.411409 0
+-6.66826 -0.336242 0
+-6.75633 -0.282922 0
+-6.84405 -0.25005 0
+-6.92621 -0.225407 0
+-6.99743 -0.198661 0
+-7.0558 -0.166479 0
+-7.10134 -0.127841 0
+-7.13239 -0.0796466 0
+-7.14523 -0.0179217 0
+-7.13613 0.0608816 0
+-7.10104 0.162636 0
+-7.03233 0.296777 0
+-6.9175 0.470481 0
+-6.74255 0.68144 0
+-6.49671 0.919191 0
+-6.17419 1.17393 0
+-5.77432 1.44121 0
+-5.30335 1.7164 0
+-4.77711 1.9857 0
+-4.22011 2.22325 0
+-3.66004 2.39432 0
+-3.12253 2.46054 0
+-2.62936 2.3879 0
+-2.19806 2.16018 0
+-1.83938 1.79228 0
+-1.55414 1.3309 0
+-1.33421 0.839304 0
+-1.16769 0.377759 0
+-1.0434 -0.00654352 0
+-0.950841 -0.27985 0
+-0.87724 -0.422627 0
+-0.806311 -0.436403 0
+-0.726256 -0.351381 0
+-0.662237 -0.221073 0
+-0.638276 -0.0752237 0
+-0.664389 0.0769766 0
+-0.736113 0.233418 0
+-0.834403 0.387097 0
+-0.935356 0.509511 0
+-1.04553 0.538117 0
+-1.1735 0.418053 0
+-1.32827 0.11948 0
+-1.52252 -0.346855 0
+-1.77207 -0.924138 0
+-2.09293 -1.52384 0
+-2.49825 -2.05411 0
+-2.99435 -2.44613 0
+-3.57564 -2.66723 0
+-4.22159 -2.72052 0
+-4.89928 -2.63532 0
+-5.57082 -2.45203 0
+-6.20112 -2.20652 0
+-6.7631 -1.92217 0
+-7.24062 -1.61388 0
+-7.6301 -1.29751 0
+-7.93924 -0.994456 0
+-8.18213 -0.72732 0
+-8.37322 -0.512754 0
+-8.52423 -0.357831 0
+-8.64444 -0.260122 0
+-8.74185 -0.209025 0
+-8.82312 -0.188742 0
+-8.89348 -0.184174 0
+-8.95767 -0.186811 0
+-9.02099 -0.195473 0
+-9.08871 -0.211545 0
+-9.16451 -0.234315 0
+-9.25007 -0.260846 0
+-9.34605 -0.288688 0
+-9.45261 -0.317411 0
+-9.56835 -0.348531 0
+-9.68941 -0.385804 0
+-9.8104 -0.435386 0
+-9.9264 -0.503146 0
+-10.0341 -0.589549 0
+-10.1315 -0.686823 0
+-10.2179 -0.781745 0
+-10.2944 -0.861379 0
+-10.3636 -0.916762 0
+-10.4288 -0.943491 0
+-10.4915 -0.942836 0
+-10.55 -0.926642 0
+-10.5977 -0.925415 0
+-10.6236 -0.995305 0
+-10.6149 -1.21673 0
+-10.5648 -1.67511 0
+-10.4826 -2.4182 0
+-10.3973 -3.40121 0
+-10.3472 -4.45481 0
+-10.354 -5.31349 0
+-10.3973 -5.7065 0
+-10.4048 -5.46967 0
+-10.2681 -4.61963 0
+-9.87928 -3.34573 0
+-9.17521 -1.91004 0
+-4.74636 -0.473084 0
+-2.27771 -0.0840159 0
+-2.27771 0.642399 0
+-0.528594 -0.12719 0
+-1.0342 -0.192061 0
+-1.99222 -0.238973 0
+-1.88434 -0.181013 0
+-1.6887 0.137734 0
+-1.43186 0.703519 0
+-1.19205 1.27026 0
+-1.06305 1.53336 0
+-1.10555 1.32449 0
+-1.31948 0.70163 0
+-1.65169 -0.103432 0
+-2.02826 -0.823603 0
+-2.39007 -1.28609 0
+-2.71377 -1.464 0
+-3.01037 -1.43946 0
+-3.30563 -1.3217 0
+-3.61705 -1.18203 0
+-3.94291 -1.04085 0
+-4.26779 -0.895316 0
+-4.57503 -0.749618 0
+-4.85435 -0.622026 0
+-5.10137 -0.531927 0
+-5.31462 -0.485171 0
+-5.49472 -0.469813 0
+-5.64452 -0.462366 0
+-5.76821 -0.439769 0
+-5.87052 -0.391466 0
+-5.95733 -0.324605 0
+-6.03605 -0.257515 0
+-6.11321 -0.20577 0
+-6.19062 -0.172636 0
+-6.26494 -0.151089 0
+-6.33122 -0.132377 0
+-6.38649 -0.111206 0
+-6.42965 -0.0846846 0
+-6.45933 -0.0499626 0
+-6.47321 -0.00404612 0
+-6.46845 0.0561194 0
+-6.44072 0.134915 0
+-6.3818 0.23785 0
+-6.27906 0.367743 0
+-6.11876 0.521147 0
+-5.89008 0.690507 0
+-5.58677 0.870613 0
+-5.20726 1.06171 0
+-4.75586 1.26499 0
+-4.24476 1.47461 0
+-3.69423 1.67272 0
+-3.12989 1.82998 0
+-2.57967 1.91032 0
+-2.07194 1.88018 0
+-1.63311 1.72134 0
+-1.28274 1.44191 0
+-1.02863 1.07679 0
+-0.86567 0.676348 0
+-0.77935 0.291439 0
+-0.750055 -0.0358378 0
+-0.755347 -0.274557 0
+-0.771403 -0.406571 0
+-0.777211 -0.430594 0
+-0.763776 -0.364817 0
+-0.744374 -0.240475 0
+-0.736198 -0.0833994 0
+-0.747762 0.0885418 0
+-0.775064 0.26072 0
+-0.803201 0.415235 0
+-0.81645 0.522761 0
+-0.817392 0.539059 0
+-0.822056 0.422718 0
+-0.85586 0.153284 0
+-0.948984 -0.25373 0
+-1.12955 -0.743575 0
+-1.41715 -1.23624 0
+-1.81925 -1.65201 0
+-2.32994 -1.93545 0
+-2.92988 -2.06729 0
+-3.5881 -2.06229 0
+-4.26672 -1.95671 0
+-4.9275 -1.79125 0
+-5.53762 -1.5964 0
+-6.07294 -1.38685 0
+-6.51992 -1.16689 0
+-6.8766 -0.94083 0
+-7.15157 -0.71948 0
+-7.36003 -0.518857 0
+-7.51851 -0.354277 0
+-7.64128 -0.235058 0
+-7.73943 -0.161971 0
+-7.82109 -0.127363 0
+-7.89171 -0.118121 0
+-7.95477 -0.121112 0
+-8.01338 -0.1282 0
+-8.07158 -0.13727 0
+-8.13401 -0.149116 0
+-8.20441 -0.163908 0
+-8.28479 -0.18047 0
+-8.37562 -0.197854 0
+-8.4762 -0.216835 0
+-8.58431 -0.240418 0
+-8.69631 -0.273802 0
+-8.80841 -0.323286 0
+-8.91843 -0.393128 0
+-9.0265 -0.481477 0
+-9.13451 -0.578806 0
+-9.24537 -0.670886 0
+-9.36244 -0.744312 0
+-9.48833 -0.79087 0
+-9.62228 -0.809538 0
+-9.75695 -0.808171 0
+-9.87646 -0.807131 0
+-9.95751 -0.844361 0
+-9.97487 -0.977944 0
+-9.91212 -1.27948 0
+-9.77578 -1.81145 0
+-9.60597 -2.588 0
+-9.47284 -3.53435 0
+-9.45265 -4.475 0
+-9.59166 -5.17449 0
+-9.87628 -5.42188 0
+-10.226 -5.11996 0
+-10.513 -4.33259 0
+-10.597 -3.26171 0
+-10.3528 -2.15431 0
+-5.46823 -1.14538 0
+-2.74521 -0.715751 0
+-2.74521 0.219352 0
+-0.477963 -0.116036 0
+-0.951773 -0.187591 0
+-1.86286 -0.260478 0
+-1.77778 -0.266095 0
+-1.58863 -0.0514155 0
+-1.29851 0.413399 0
+-0.974043 0.945794 0
+-0.722038 1.28136 0
+-0.637833 1.24028 0
+-0.759669 0.823466 0
+-1.0559 0.192797 0
+-1.44801 -0.431488 0
+-1.85201 -0.8821 0
+-2.21392 -1.10209 0
+-2.52229 -1.13108 0
+-2.79551 -1.04848 0
+-3.05747 -0.920068 0
+-3.31966 -0.778654 0
+-3.57885 -0.636131 0
+-3.82543 -0.503033 0
+-4.0519 -0.395562 0
+-4.25538 -0.328444 0
+-4.43605 -0.304504 0
+-4.59492 -0.310938 0
+-4.73266 -0.324632 0
+-4.84927 -0.32316 0
+-4.9452 -0.295533 0
+-5.02338 -0.24643 0
+-5.08988 -0.191014 0
+-5.15154 -0.144109 0
+-5.21213 -0.112045 0
+-5.27088 -0.0923388 0
+-5.3245 -0.0787538 0
+-5.37003 -0.0656742 0
+-5.40567 -0.049047 0
+-5.42994 -0.0256915 0
+-5.44102 0.00703349 0
+-5.43636 0.0514594 0
+-5.41152 0.110071 0
+-5.35863 0.184964 0
+-5.2667 0.275812 0
+-5.12431 0.378762 0
+-4.92268 0.488871 0
+-4.65666 0.604594 0
+-4.32445 0.729503 0
+-3.92798 0.868528 0
+-3.47448 1.0211 0
+-2.97764 1.17588 0
+-2.45757 1.30991 0
+-1.93989 1.39264 0
+-1.45425 1.39454 0
+-1.03085 1.29795 0
+-0.694521 1.10558 0
+-0.458695 0.840959 0
+-0.322968 0.540621 0
+-0.274914 0.243385 0
+-0.293794 -0.0169574 0
+-0.35391 -0.214441 0
+-0.428092 -0.332388 0
+-0.493011 -0.365674 0
+-0.535845 -0.321981 0
+-0.557551 -0.218769 0
+-0.564581 -0.0763683 0
+-0.560834 0.0847951 0
+-0.544097 0.243983 0
+-0.507328 0.378466 0
+-0.445581 0.461015 0
+-0.366587 0.460065 0
+-0.29261 0.348742 0
+-0.257053 0.117728 0
+-0.296793 -0.21399 0
+-0.442354 -0.598013 0
+-0.709965 -0.968625 0
+-1.09846 -1.26352 0
+-1.59081 -1.44309 0
+-2.15833 -1.49977 0
+-2.766 -1.45462 0
+-3.37809 -1.34462 0
+-3.96288 -1.20645 0
+-4.49534 -1.06394 0
+-4.95788 -0.924307 0
+-5.34073 -0.784037 0
+-5.64258 -0.638985 0
+-5.87037 -0.491687 0
+-6.03716 -0.352061 0
+-6.15845 -0.232988 0
+-6.24884 -0.144663 0
+-6.32018 -0.0906354 0
+-6.38075 -0.0667923 0
+-6.43532 -0.0635468 0
+-6.48615 -0.0702824 0
+-6.53482 -0.0795288 0
+-6.58376 -0.0883261 0
+-6.63628 -0.0965949 0
+-6.69539 -0.104795 0
+-6.76279 -0.113077 0
+-6.83861 -0.122024 0
+-6.92175 -0.1337 0
+-7.0101 -0.152064 0
+-7.1014 -0.182501 0
+-7.19457 -0.230121 0
+-7.2909 -0.296793 0
+-7.39412 -0.378257 0
+-7.50919 -0.463732 0
+-7.64091 -0.539168 0
+-7.79258 -0.59264 0
+-7.96429 -0.619164 0
+-8.15024 -0.623583 0
+-8.33616 -0.622254 0
+-8.49866 -0.644631 0
+-8.6089 -0.734122 0
+-8.64172 -0.945123 0
+-8.58955 -1.33166 0
+-8.47649 -1.92451 0
+-8.36379 -2.70071 0
+-8.33758 -3.56056 0
+-8.47852 -4.33406 0
+-8.82607 -4.82694 0
+-9.35585 -4.89209 0
+-9.98264 -4.49317 0
+-10.587 -3.72821 0
+-11.0464 -2.80237 0
+-11.2392 -1.96152 0
+-5.9647 -1.38588 0
+-3.09985 -1.09645 0
+-3.09985 -0.121801 0
+-0.414906 -0.0973143 0
+-0.842506 -0.166931 0
+-1.68039 -0.252544 0
+-1.64004 -0.306449 0
+-1.49984 -0.191619 0
+-1.23696 0.150519 0
+-0.89215 0.600987 0
+-0.563033 0.95224 0
+-0.359762 1.03701 0
+-0.352429 0.816134 0
+-0.542097 0.382465 0
+-0.869039 -0.104546 0
+-1.24837 -0.502772 0
+-1.6097 -0.740761 0
+-1.9195 -0.821282 0
+-2.17872 -0.789256 0
+-2.40436 -0.69443 0
+-2.61115 -0.571868 0
+-2.80426 -0.443017 0
+-2.98254 -0.324749 0
+-3.14467 -0.233434 0
+-3.2921 -0.181014 0
+-3.42798 -0.168631 0
+-3.55445 -0.184463 0
+-3.67086 -0.208218 0
+-3.77393 -0.220094 0
+-3.86007 -0.20939 0
+-3.9285 -0.178001 0
+-3.98259 -0.136925 0
+-4.02814 -0.0985575 0
+-4.06996 -0.0702263 0
+-4.1097 -0.052597 0
+-4.14634 -0.0421127 0
+-4.17792 -0.0340982 0
+-4.20258 -0.0243822 0
+-4.21861 -0.00966888 0
+-4.22401 0.01244 0
+-4.21609 0.0435386 0
+-4.19054 0.0845175 0
+-4.14077 0.135202 0
+-4.05861 0.193646 0
+-3.93624 0.256393 0
+-3.76805 0.320682 0
+-3.55079 0.387337 0
+-3.28272 0.461436 0
+-2.96342 0.549228 0
+-2.59506 0.652734 0
+-2.1844 0.765227 0
+-1.74458 0.870086 0
+-1.29587 0.94393 0
+-0.86477 0.96344 0
+-0.480467 0.913644 0
+-0.168826 0.793937 0
+0.0535491 0.618584 0
+0.18244 0.411731 0
+0.225451 0.200375 0
+0.199312 0.00918183 0
+0.126715 -0.141844 0
+0.0328146 -0.238488 0
+-0.0591566 -0.273703 0
+-0.13239 -0.248748 0
+-0.178464 -0.172694 0
+-0.194585 -0.0602461 0
+-0.179961 0.0701716 0
+-0.133848 0.197871 0
+-0.0562589 0.300877 0
+0.048256 0.356501 0
+0.165245 0.343076 0
+0.268622 0.245365 0
+0.324005 0.0623459 0
+0.296703 -0.186688 0
+0.161479 -0.462789 0
+-0.0902337 -0.716911 0
+-0.448639 -0.905109 0
+-0.889336 -1.0024 0
+-1.38012 -1.00898 0
+-1.88807 -0.946671 0
+-2.38484 -0.847845 0
+-2.84916 -0.742126 0
+-3.26651 -0.646591 0
+-3.62736 -0.563458 0
+-3.92612 -0.485275 0
+-4.16148 -0.403619 0
+-4.33725 -0.315918 0
+-4.46212 -0.227188 0
+-4.54801 -0.147099 0
+-4.60761 -0.0850649 0
+-4.65215 -0.0460958 0
+-4.68984 -0.0290959 0
+-4.72534 -0.0280471 0
+-4.76044 -0.0351839 0
+-4.79574 -0.0442287 0
+-4.83216 -0.0518995 0
+-4.87135 -0.0574002 0
+-4.91501 -0.0611344 0
+-4.96407 -0.0640175 0
+-5.01841 -0.0676821 0
+-5.07716 -0.0749505 0
+-5.13935 -0.089873 0
+-5.20492 -0.116937 0
+-5.27572 -0.159316 0
+-5.35599 -0.216526 0
+-5.45151 -0.282731 0
+-5.56798 -0.347265 0
+-5.70919 -0.397955 0
+-5.87572 -0.42611 0
+-6.06372 -0.431162 0
+-6.26371 -0.423601 0
+-6.45992 -0.426041 0
+-6.63191 -0.47264 0
+-6.75981 -0.606223 0
+-6.83369 -0.871245 0
+-6.86483 -1.30052 0
+-6.8935 -1.89584 0
+-6.98583 -2.60838 0
+-7.2152 -3.33118 0
+-7.63311 -3.91615 0
+-8.24297 -4.21708 0
+-8.99205 -4.14301 0
+-9.78868 -3.69654 0
+-10.5378 -2.97907 0
+-11.1725 -2.16765 0
+-11.6451 -1.48897 0
+-6.0819 -1.19617 0
+-3.21137 -1.12603 0
+-3.21137 -0.259502 0
+-0.340467 -0.0735422 0
+-0.705337 -0.132887 0
+-1.43556 -0.215478 0
+-1.44892 -0.293085 0
+-1.38506 -0.255482 0
+-1.19979 -0.0347559 0
+-0.901851 0.303053 0
+-0.562164 0.612553 0
+-0.283672 0.758519 0
+-0.152791 0.685252 0
+-0.202417 0.432091 0
+-0.405497 0.0985338 0
+-0.697472 -0.210797 0
+-1.01018 -0.428055 0
+-1.2973 -0.53416 0
+-1.54106 -0.545501 0
+-1.74329 -0.4922 0
+-1.91221 -0.402947 0
+-2.05444 -0.300783 0
+-2.17439 -0.204797 0
+-2.27693 -0.1309 0
+-2.36869 -0.089253 0
+-2.45657 -0.0807479 0
+-2.5448 -0.0962359 0
+-2.63292 -0.120093 0
+-2.71627 -0.136753 0
+-2.78872 -0.136936 0
+-2.84634 -0.120376 0
+-2.8894 -0.0938712 0
+-2.92159 -0.0663652 0
+-2.94747 -0.0443437 0
+-2.97013 -0.0299399 0
+-2.99052 -0.021726 0
+-3.00806 -0.0165536 0
+-3.02141 -0.0110285 0
+-3.02879 -0.00229612 0
+-3.02796 0.011613 0
+-3.01609 0.0316717 0
+-2.9894 0.0578291 0
+-2.94313 0.0889244 0
+-2.87221 0.122732 0
+-2.77254 0.156717 0
+-2.64156 0.189709 0
+-2.47778 0.223553 0
+-2.2795 0.263157 0
+-2.04442 0.314151 0
+-1.77078 0.379086 0
+-1.45972 0.454175 0
+-1.11802 0.528381 0
+-0.759696 0.585608 0
+-0.405712 0.609455 0
+-0.0808599 0.588793 0
+0.191378 0.521699 0
+0.394045 0.415918 0
+0.519808 0.285968 0
+0.571243 0.14894 0
+0.559225 0.0211999 0
+0.500643 -0.0832622 0
+0.415812 -0.153656 0
+0.325434 -0.183325 0
+0.247509 -0.170822 0
+0.195288 -0.120473 0
+0.177055 -0.0420122 0
+0.196701 0.0505253 0
+0.254128 0.140444 0
+0.344814 0.210191 0
+0.458258 0.243057 0
+0.576061 0.225274 0
+0.67201 0.149416 0
+0.715766 0.0185896 0
+0.679922 -0.150843 0
+0.547936 -0.330803 0
+0.319355 -0.48833 0
+0.00985403 -0.595607 0
+-0.353745 -0.638797 0
+-0.74107 -0.621654 0
+-1.12531 -0.562425 0
+-1.48751 -0.485651 0
+-1.81704 -0.412594 0
+-2.10919 -0.354438 0
+-2.36175 -0.310895 0
+-2.57289 -0.274132 0
+-2.74125 -0.235259 0
+-2.86744 -0.189734 0
+-2.95534 -0.139285 0
+-3.01219 -0.0902462 0
+-3.04728 -0.0499701 0
+-3.06999 -0.0233885 0
+-3.08786 -0.0112274 0
+-3.10553 -0.0103747 0
+-3.12488 -0.0158283 0
+-3.14617 -0.0229421 0
+-3.16929 -0.0287817 0
+-3.19442 -0.032261 0
+-3.22194 -0.0336171 0
+-3.25198 -0.0339753 0
+-3.28439 -0.035274 0
+-3.31905 -0.0402919 0
+-3.35656 -0.0523625 0
+-3.39898 -0.0745093 0
+-3.45028 -0.10802 0
+-3.51589 -0.150917 0
+-3.60139 -0.197227 0
+-3.71065 -0.238008 0
+-3.84427 -0.264329 0
+-3.99901 -0.271378 0
+-4.16792 -0.262251 0
+-4.3413 -0.25022 0
+-4.5084 -0.258938 0
+-4.66068 -0.32036 0
+-4.79695 -0.469948 0
+-4.92975 -0.738452 0
+-5.09019 -1.14007 0
+-5.32708 -1.65894 0
+-5.69609 -2.23937 0
+-6.23939 -2.78788 0
+-6.96292 -3.19262 0
+-7.82327 -3.35673 0
+-8.73403 -3.23225 0
+-9.59376 -2.83681 0
+-10.3274 -2.24544 0
+-10.9233 -1.57173 0
+-11.4367 -0.975536 0
+-5.74526 -0.726809 0
+-2.99481 -0.812071 0
+-2.99481 -0.109222 0
+-0.259159 -0.0486012 0
+-0.54741 -0.0920277 0
+-1.1371 -0.15818 0
+-1.19649 -0.2337 0
+-1.21114 -0.240831 0
+-1.12578 -0.120121 0
+-0.921468 0.0987454 0
+-0.635761 0.326845 0
+-0.348035 0.470793 0
+-0.142276 0.479494 0
+-0.0709452 0.36076 0
+-0.138958 0.166547 0
+-0.311905 -0.0378505 0
+-0.538633 -0.201327 0
+-0.773304 -0.299489 0
+-0.986763 -0.332042 0
+-1.16625 -0.312715 0
+-1.30928 -0.259916 0
+-1.41825 -0.191808 0
+-1.49841 -0.124645 0
+-1.55771 -0.0715971 0
+-1.60618 -0.0407822 0
+-1.65352 -0.0334108 0
+-1.70603 -0.0437272 0
+-1.76463 -0.0614896 0
+-1.82523 -0.0761563 0
+-1.8813 -0.0808606 0
+-1.92736 -0.0743144 0
+-1.96128 -0.0599548 0
+-1.98443 -0.0432116 0
+-2.00011 -0.0286676 0
+-2.01153 -0.018516 0
+-2.02069 -0.0125643 0
+-2.02813 -0.00911784 0
+-2.03319 -0.00596852 0
+-2.03437 -0.00111929 0
+-2.02954 0.00678803 0
+-2.01614 0.018272 0
+-1.99128 0.0329628 0
+-1.95202 0.0496745 0
+-1.896 0.0667064 0
+-1.82184 0.0825574 0
+-1.72911 0.0969779 0
+-1.61734 0.111784 0
+-1.48483 0.130649 0
+-1.32824 0.157558 0
+-1.14363 0.194475 0
+-0.928815 0.239365 0
+-0.686086 0.285653 0
+-0.42405 0.323573 0
+-0.157632 0.343038 0
+0.0942391 0.336922 0
+0.312583 0.303355 0
+0.482435 0.246066 0
+0.595503 0.172901 0
+0.650872 0.0935707 0
+0.654288 0.0177838 0
+0.616811 -0.0457843 0
+0.553211 -0.0900562 0
+0.480064 -0.110177 0
+0.413573 -0.104331 0
+0.367529 -0.0744289 0
+0.351788 -0.0262715 0
+0.371295 0.0310187 0
+0.425518 0.0862221 0
+0.508112 0.127598 0
+0.606655 0.144514 0
+0.702765 0.129164 0
+0.77361 0.078572 0
+0.795621 -0.00342121 0
+0.750067 -0.105289 0
+0.628621 -0.209356 0
+0.436396 -0.296104 0
+0.190784 -0.349995 0
+-0.0836114 -0.364401 0
+-0.36187 -0.343394 0
+-0.62474 -0.299555 0
+-0.861613 -0.248776 0
+-1.06986 -0.20435 0
+-1.25146 -0.172829 0
+-1.40911 -0.153246 0
+-1.54364 -0.139599 0
+-1.65391 -0.124988 0
+-1.73843 -0.105214 0
+-1.7974 -0.0803176 0
+-1.83383 -0.0538158 0
+-1.85329 -0.0305057 0
+-1.86254 -0.0141396 0
+-1.86775 -0.00601708 0
+-1.87321 -0.00491561 0
+-1.88095 -0.00808981 0
+-1.89127 -0.0126164 0
+-1.90367 -0.0163823 0
+-1.9175 -0.0184332 0
+-1.93225 -0.0188675 0
+-1.94761 -0.0186178 0
+-1.96359 -0.0192914 0
+-1.98089 -0.0229879 0
+-2.00134 -0.0319105 0
+-2.02819 -0.0476588 0
+-2.06592 -0.070292 0
+-2.11932 -0.0975192 0
+-2.19197 -0.124579 0
+-2.28468 -0.145292 0
+-2.3947 -0.154309 0
+-2.5161 -0.149983 0
+-2.64144 -0.136913 0
+-2.76438 -0.127271 0
+-2.88293 -0.140388 0
+-3.003 -0.20029 0
+-3.14188 -0.331072 0
+-3.33024 -0.550096 0
+-3.61056 -0.859746 0
+-4.02967 -1.23984 0
+-4.62449 -1.64454 0
+-5.40443 -2.00795 0
+-6.33717 -2.25987 0
+-7.34656 -2.34735 0
+-8.32667 -2.25213 0
+-9.17068 -1.99281 0
+-9.80754 -1.60858 0
+-10.241 -1.13822 0
+-10.5859 -0.630705 0
+-5.03265 -0.241362 0
+-2.49393 -0.310393 0
+-2.49393 0.296524 0
+-0.178124 -0.0266329 0
+-0.383033 -0.0527202 0
+-0.811557 -0.0953722 0
+-0.895058 -0.150199 0
+-0.964674 -0.171214 0
+-0.966506 -0.118289 0
+-0.866461 -0.00130008 0
+-0.673845 0.13423 0
+-0.438516 0.235464 0
+-0.22711 0.268087 0
+-0.0943018 0.227952 0
+-0.064379 0.136624 0
+-0.129465 0.027235 0
+-0.26066 -0.070132 0
+-0.423108 -0.137041 0
+-0.587181 -0.167969 0
+-0.732996 -0.1669 0
+-0.850044 -0.142869 0
+-0.935229 -0.106623 0
+-0.991298 -0.0685756 0
+-1.02558 -0.0373127 0
+-1.04815 -0.0182145 0
+-1.06905 -0.012513 0
+-1.09537 -0.0174032 0
+-1.12942 -0.0274457 0
+-1.16877 -0.0368055 0
+-1.20825 -0.0413807 0
+-1.24265 -0.0399125 0
+-1.26888 -0.0337269 0
+-1.28661 -0.0254792 0
+-1.29757 -0.0177095 0
+-1.30418 -0.0119068 0
+-1.30843 -0.00830674 0
+-1.31134 -0.00621405 0
+-1.3128 -0.00450953 0
+-1.31181 -0.00210483 0
+-1.30676 0.00174269 0
+-1.29576 0.00726319 0
+-1.27693 0.0141402 0
+-1.24887 0.0216071 0
+-1.21087 0.0287097 0
+-1.16307 0.0347569 0
+-1.10594 0.0398544 0
+-1.03939 0.0452302 0
+-0.961765 0.053024 0
+-0.869652 0.0654454 0
+-0.758764 0.0835868 0
+-0.625845 0.106446 0
+-0.470867 0.130675 0
+-0.298581 0.151286 0
+-0.118631 0.163088 0
+0.0559776 0.162314 0
+0.211583 0.14775 0
+0.336699 0.12095 0
+0.424019 0.0855817 0
+0.471194 0.0463952 0
+0.480664 0.00831374 0
+0.458997 -0.0241172 0
+0.416006 -0.0470645 0
+0.363597 -0.0577685 0
+0.314286 -0.0550187 0
+0.279463 -0.0396064 0
+0.2677 -0.0145085 0
+0.283351 0.0153685 0
+0.325686 0.0438872 0
+0.38863 0.0646538 0
+0.461071 0.0720729 0
+0.527843 0.0623921 0
+0.571699 0.0347161 0
+0.576477 -0.00819828 0
+0.531008 -0.0598206 0
+0.432537 -0.110885 0
+0.288088 -0.151655 0
+0.112869 -0.174775 0
+-0.0739447 -0.177587 0
+-0.254476 -0.162862 0
+-0.416468 -0.137563 0
+-0.555102 -0.110141 0
+-0.671937 -0.0875147 0
+-0.771804 -0.0729613 0
+-0.859317 -0.0657325 0
+-0.936586 -0.0623297 0
+-1.00291 -0.0586587 0
+-1.05615 -0.0519796 0
+-1.09462 -0.0418445 0
+-1.1186 -0.0298331 0
+-1.13064 -0.0184662 0
+-1.13483 -0.00995154 0
+-1.13551 -0.00533443 0
+-1.1361 -0.00432237 0
+-1.1385 -0.0056937 0
+-1.14316 -0.00795928 0
+-1.14961 -0.00992809 0
+-1.15705 -0.010997 0
+-1.16472 -0.0111919 0
+-1.17226 -0.0110831 0
+-1.17989 -0.0116545 0
+-1.18876 -0.0141154 0
+-1.20108 -0.0195978 0
+-1.22001 -0.0287209 0
+-1.2492 -0.0411063 0
+-1.29167 -0.0550525 0
+-1.3486 -0.0676477 0
+-1.41837 -0.0755223 0
+-1.49648 -0.0762 0
+-1.57675 -0.0697094 0
+-1.65373 -0.0599277 0
+-1.72586 -0.0551422 0
+-1.79878 -0.0674755 0
+-1.88805 -0.111014 0
+-2.02047 -0.198654 0
+-2.23261 -0.337951 0
+-2.56567 -0.526692 0
+-3.05582 -0.749689 0
+-3.72157 -0.978794 0
+-4.55163 -1.17789 0
+-5.4988 -1.31269 0
+-6.48401 -1.36214 0
+-7.41067 -1.32547 0
+-8.1846 -1.21888 0
+-8.73406 -1.05912 0
+-9.03372 -0.838561 0
+-9.15911 -0.505314 0
+-4.17519 0.0168564 0
+-1.92351 0.116636 0
+-1.92351 0.746266 0
+-0.105521 -0.0108045 0
+-0.230461 -0.0224407 0
+-0.497495 -0.0425672 0
+-0.577075 -0.0706184 0
+-0.662334 -0.0859555 0
+-0.711356 -0.0692672 0
+-0.690058 -0.0225981 0
+-0.592169 0.0363409 0
+-0.442087 0.0853821 0
+-0.282479 0.10848 0
+-0.155702 0.101175 0
+-0.0889599 0.069882 0
+-0.0887487 0.0270239 0
+-0.144198 -0.0146825 0
+-0.235051 -0.0461885 0
+-0.339569 -0.063451 0
+-0.439711 -0.0667579 0
+-0.523363 -0.0592168 0
+-0.584704 -0.0452822 0
+-0.62367 -0.0296091 0
+-0.644822 -0.0161616 0
+-0.655525 -0.00751055 0
+-0.663609 -0.00442954 0
+-0.675053 -0.00595919 0
+-0.692515 -0.00998379 0
+-0.715194 -0.0141269 0
+-0.739966 -0.0166085 0
+-0.763152 -0.0167264 0
+-0.782058 -0.0148206 0
+-0.795695 -0.0118422 0
+-0.804598 -0.00880595 0
+-0.810115 -0.00639063 0
+-0.813622 -0.00479887 0
+-0.816 -0.00383622 0
+-0.817413 -0.00309663 0
+-0.817361 -0.00215663 0
+-0.814894 -0.000724157 0
+-0.808909 0.00127755 0
+-0.798463 0.00369464 0
+-0.783054 0.0061981 0
+-0.762758 0.00841412 0
+-0.738119 0.0101179 0
+-0.709697 0.0114325 0
+-0.677391 0.0129244 0
+-0.639857 0.0154896 0
+-0.594426 0.0200145 0
+-0.537762 0.0269227 0
+-0.46713 0.0358144 0
+-0.38184 0.045385 0
+-0.284254 0.0537002 0
+-0.17991 0.058744 0
+-0.0766241 0.0590284 0
+0.0171066 0.0540195 0
+0.093825 0.0442313 0
+0.148401 0.0310059 0
+0.178653 0.0161432 0
+0.185406 0.00156029 0
+0.172224 -0.0109352 0
+0.144954 -0.0197942 0
+0.111068 -0.0238824 0
+0.0787285 -0.0226788 0
+0.0555909 -0.0164686 0
+0.0475148 -0.00643233 0
+0.0574347 0.00544878 0
+0.0846397 0.0166823 0
+0.124607 0.0246863 0
+0.169424 0.0272562 0
+0.208802 0.023014 0
+0.231722 0.0117965 0
+0.228624 -0.00509961 0
+0.193767 -0.024964 0
+0.127031 -0.0441486 0
+0.0343366 -0.0589606 0
+-0.0737106 -0.0667274 0
+-0.18467 -0.0666272 0
+-0.287617 -0.0599152 0
+-0.375763 -0.0494166 0
+-0.447427 -0.0384768 0
+-0.505142 -0.0297994 0
+-0.55346 -0.0246426 0
+-0.596527 -0.0226654 0
+-0.636443 -0.0224133 0
+-0.672949 -0.0221531 0
+-0.704277 -0.0206513 0
+-0.72854 -0.0175811 0
+-0.744908 -0.0134647 0
+-0.754098 -0.00927514 0
+-0.758108 -0.00594138 0
+-0.759458 -0.00398465 0
+-0.760375 -0.00340536 0
+-0.762264 -0.00380414 0
+-0.765599 -0.00462416 0
+-0.770143 -0.00538401 0
+-0.775318 -0.00582166 0
+-0.78057 -0.00593941 0
+-0.785672 -0.00598044 0
+-0.790963 -0.00636339 0
+-0.797499 -0.0075791 0
+-0.807056 -0.0100413 0
+-0.821877 -0.0138991 0
+-0.844128 -0.0188557 0
+-0.875099 -0.024081 0
+-0.914427 -0.0283194 0
+-0.959697 -0.0302524 0
+-1.00681 -0.0290828 0
+-1.05133 -0.0251903 0
+-1.09062 -0.0206408 0
+-1.12643 -0.0193317 0
+-1.16728 -0.0266227 0
+-1.2299 -0.0483969 0
+-1.33895 -0.0896062 0
+-1.5244 -0.152501 0
+-1.81613 -0.234958 0
+-2.23625 -0.329571 0
+-2.79076 -0.424288 0
+-3.46354 -0.50511 0
+-4.21572 -0.560513 0
+-4.99175 -0.586111 0
+-5.73011 -0.587106 0
+-6.37289 -0.576103 0
+-6.86748 -0.564529 0
+-7.16142 -0.544626 0
+-7.22252 -0.444206 0
+-3.39832 0.00647111 0
+-1.55735 0.253551 0
+-1.55735 0.894058 0
+-0.0486564 -0.00233023 0
+-0.107545 -0.00522765 0
+-0.236172 -0.0104028 0
+-0.288735 -0.0180558 0
+-0.351748 -0.0229422 0
+-0.400897 -0.0201181 0
+-0.413721 -0.00977474 0
+-0.381564 0.0041838 0
+-0.312823 0.0166412 0
+-0.227986 0.0236424 0
+-0.150529 0.0237182 0
+-0.0985396 0.0178925 0
+-0.0802556 0.00873985 0
+-0.0940947 -0.000843351 0
+-0.131694 -0.00858957 0
+-0.181858 -0.0132873 0
+-0.233864 -0.0147512 0
+-0.279535 -0.0135463 0
+-0.314164 -0.0106528 0
+-0.336607 -0.00716664 0
+-0.348715 -0.00405273 0
+-0.354266 -0.00195977 0
+-0.357577 -0.00111914 0
+-0.362178 -0.00135791 0
+-0.369935 -0.00222657 0
+-0.380865 -0.00319673 0
+-0.393621 -0.00385248 0
+-0.406344 -0.00400379 0
+-0.417474 -0.00369091 0
+-0.426214 -0.00310135 0
+-0.432566 -0.00245488 0
+-0.437044 -0.00191233 0
+-0.440307 -0.00153599 0
+-0.442844 -0.0012986 0
+-0.444821 -0.00112039 0
+-0.446065 -0.000912617 0
+-0.446175 -0.00061328 0
+-0.44469 -0.000208049 0
+-0.441261 0.000266202 0
+-0.435799 0.000735985 0
+-0.428508 0.00112316 0
+-0.419779 0.00138878 0
+-0.40992 0.00157403 0
+-0.398812 0.00181568 0
+-0.385639 0.00231644 0
+-0.368894 0.00326969 0
+-0.346734 0.00476343 0
+-0.317626 0.0067058 0
+-0.281051 0.00881066 0
+-0.238009 0.0106579 0
+-0.191075 0.0118102 0
+-0.143989 0.0119419 0
+-0.100899 0.0109298 0
+-0.0655424 0.00887491 0
+-0.0405965 0.00606009 0
+-0.0273269 0.00287361 0
+-0.0255028 -0.000263682 0
+-0.0334876 -0.00295033 0
+-0.0484412 -0.00484057 0
+-0.0666426 -0.00568101 0
+-0.0839661 -0.00535533 0
+-0.0965072 -0.00392744 0
+-0.101278 -0.00166192 0
+-0.0968256 0.000996853 0
+-0.0836335 0.00349027 0
+-0.0641904 0.00524318 0
+-0.0427073 0.00577314 0
+-0.0244868 0.00479357 0
+-0.0149871 0.00229686 0
+-0.0186846 -0.00140204 0
+-0.0379591 -0.00568944 0
+-0.0723409 -0.00976675 0
+-0.118455 -0.0128461 0
+-0.170808 -0.0143748 0
+-0.223231 -0.0142042 0
+-0.270515 -0.0126305 0
+-0.309651 -0.0102809 0
+-0.34024 -0.00788759 0
+-0.364001 -0.00603848 0
+-0.383637 -0.0050056 0
+-0.401592 -0.00471059 0
+-0.419178 -0.00482715 0
+-0.436371 -0.00496014 0
+-0.452205 -0.00481658 0
+-0.465486 -0.00430033 0
+-0.475443 -0.00350725 0
+-0.482074 -0.00264412 0
+-0.486094 -0.00192148 0
+-0.488608 -0.00147025 0
+-0.490704 -0.00130997 0
+-0.493139 -0.00136853 0
+-0.496232 -0.00153153 0
+-0.499921 -0.00169404 0
+-0.503947 -0.00179625 0
+-0.508049 -0.00183749 0
+-0.512156 -0.00187264 0
+-0.516524 -0.00199574 0
+-0.52179 -0.00231294 0
+-0.528926 -0.00290545 0
+-0.539038 -0.00378682 0
+-0.553027 -0.00486629 0
+-0.571171 -0.00593763 0
+-0.592776 -0.00671371 0
+-0.616112 -0.00691695 0
+-0.63878 -0.00641419 0
+-0.65861 -0.00536093 0
+-0.674945 -0.00430506 0
+-0.690076 -0.00420106 0
+-0.710397 -0.00630165 0
+-0.746875 -0.0119183 0
+-0.814409 -0.0220726 0
+-0.929812 -0.0370977 0
+-1.10847 -0.0563001 0
+-1.3602 -0.0778386 0
+-1.6855 -0.0989865 0
+-2.07375 -0.116864 0
+-2.50472 -0.129538 0
+-2.95368 -0.13715 0
+-3.39818 -0.142609 0
+-3.82279 -0.151499 0
+-4.2161 -0.171212 0
+-4.55258 -0.208145 0
+-4.75211 -0.244682 0
+-2.61535 -0.0581661 0
+-1.39827 0.124252 0
+-1.39827 0.520787 0
+-0.0125688 -0.00233023 0
+-0.0279448 -0.00522765 0
+-0.0622893 -0.0104028 0
+-0.0803452 -0.0180558 0
+-0.103287 -0.0229422 0
+-0.123405 -0.0201181 0
+-0.13318 -0.00977474 0
+-0.128996 0.0041838 0
+-0.112355 0.0166412 0
+-0.0887128 0.0236424 0
+-0.0649946 0.0237182 0
+-0.0471021 0.0178925 0
+-0.0383623 0.00873985 0
+-0.0392056 -0.000843351 0
+-0.0477952 -0.00858957 0
+-0.0610824 -0.0132873 0
+-0.0758337 -0.0147512 0
+-0.08938 -0.0135463 0
+-0.100033 -0.0106528 0
+-0.107199 -0.00716664 0
+-0.111252 -0.00405273 0
+-0.113212 -0.00195977 0
+-0.114331 -0.00111914 0
+-0.115689 -0.00135791 0
+-0.117916 -0.00222657 0
+-0.121112 -0.00319673 0
+-0.124965 -0.00385248 0
+-0.128969 -0.00400379 0
+-0.132659 -0.00369091 0
+-0.135761 -0.00310135 0
+-0.138216 -0.00245488 0
+-0.140128 -0.00191233 0
+-0.141664 -0.00153599 0
+-0.142963 -0.0012986 0
+-0.144083 -0.00112039 0
+-0.144996 -0.000912617 0
+-0.145609 -0.00061328 0
+-0.145817 -0.000208049 0
+-0.145551 0.000266202 0
+-0.144815 0.000735985 0
+-0.143692 0.00112316 0
+-0.142303 0.00138878 0
+-0.140729 0.00157403 0
+-0.138913 0.00181568 0
+-0.136597 0.00231644 0
+-0.133327 0.00326969 0
+-0.128563 0.00476343 0
+-0.121858 0.0067058 0
+-0.113047 0.00881066 0
+-0.102389 0.0106579 0
+-0.0905789 0.0118102 0
+-0.078637 0.0119419 0
+-0.0677072 0.0109298 0
+-0.0588323 0.00887491 0
+-0.0527722 0.00606009 0
+-0.0498985 0.00287361 0
+-0.0501622 -0.000263682 0
+-0.0531125 -0.00295033 0
+-0.0579531 -0.00484057 0
+-0.0636341 -0.00568101 0
+-0.0689894 -0.00535533 0
+-0.0729168 -0.00392744 0
+-0.0745787 -0.00166192 0
+-0.0735819 0.000996853 0
+-0.0700916 0.00349027 0
+-0.0648484 0.00524318 0
+-0.0590753 0.00577314 0
+-0.0542817 0.00479357 0
+-0.0519848 0.00229686 0
+-0.0533868 -0.00140204 0
+-0.0590762 -0.00568944 0
+-0.068843 -0.00976675 0
+-0.0816891 -0.0128461 0
+-0.0960638 -0.0143748 0
+-0.110268 -0.0142042 0
+-0.122898 -0.0126305 0
+-0.133179 -0.0102809 0
+-0.141067 -0.00788759 0
+-0.147105 -0.00603848 0
+-0.152111 -0.0050056 0
+-0.156821 -0.00471059 0
+-0.161648 -0.00482715 0
+-0.166609 -0.00496014 0
+-0.171425 -0.00481658 0
+-0.175725 -0.00430033 0
+-0.179233 -0.00350725 0
+-0.181877 -0.00264412 0
+-0.183798 -0.00192148 0
+-0.185268 -0.00147025 0
+-0.186578 -0.00130997 0
+-0.187947 -0.00136853 0
+-0.189478 -0.00153153 0
+-0.191172 -0.00169404 0
+-0.192969 -0.00179625 0
+-0.194806 -0.00183749 0
+-0.196679 -0.00187264 0
+-0.198674 -0.00199574 0
+-0.200987 -0.00231294 0
+-0.203893 -0.00290545 0
+-0.207679 -0.00378682 0
+-0.212546 -0.00486629 0
+-0.218483 -0.00593763 0
+-0.225197 -0.00671371 0
+-0.232114 -0.00691695 0
+-0.238528 -0.00641419 0
+-0.243889 -0.00536093 0
+-0.248194 -0.00430506 0
+-0.252395 -0.00420106 0
+-0.258697 -0.00630165 0
+-0.270615 -0.0119183 0
+-0.292688 -0.0220726 0
+-0.329785 -0.0370977 0
+-0.386086 -0.0563001 0
+-0.463924 -0.0778386 0
+-0.562911 -0.0989865 0
+-0.679775 -0.116864 0
+-0.809313 -0.129538 0
+-0.946464 -0.13715 0
+-1.08907 -0.142609 0
+-1.24057 -0.151499 0
+-1.41178 -0.171212 0
+-1.61993 -0.208145 0
+-1.86461 -0.244682 0
+-1.33059 -0.0581661 0
+-0.89321 0.124252 0
+-0.89321 0.520787 0
+-0.211029 -0.0757693 0
+-0.429347 -0.142132 0
+-0.861777 -0.238722 0
+-0.500373 -0.361405 0
+-0.0627491 -0.437623 0
+0.357623 -0.420372 0
+0.672085 -0.314462 0
+0.827931 -0.155846 0
+0.819626 0.00830519 0
+0.682327 0.137299 0
+0.474086 0.20824 0
+0.255271 0.218815 0
+0.0725028 0.182768 0
+-0.0491153 0.121618 0
+-0.105613 0.0564982 0
+-0.108345 0.0027313 0
+-0.076229 -0.0321158 0
+-0.0288382 -0.0473908 0
+0.0181999 -0.0470382 0
+0.0552146 -0.0370146 0
+0.0784147 -0.0232001 0
+0.0885211 -0.0101063 0
+0.0888905 -0.000369451 0
+0.0837404 0.0051501 0
+0.0768425 0.00689788 0
+0.0708223 0.00602019 0
+0.0670075 0.00381488 0
+0.0656514 0.00135604 0
+0.0663259 -0.000674472 0
+0.0683109 -0.00198499 0
+0.0708827 -0.00257182 0
+0.0734689 -0.00258615 0
+0.075687 -0.00221817 0
+0.0773099 -0.00162292 0
+0.0782044 -0.000894478 0
+0.0782868 -8.23823e-05 0
+0.0775232 0.00076365 0
+0.0759819 0.00154122 0
+0.0739212 0.0020607 0
+0.0718651 0.00205614 0
+0.0706037 0.00126141 0
+0.0710562 -0.0004525 0
+0.0739735 -0.00291734 0
+0.0795288 -0.00555523 0
+0.0869231 -0.0073943 0
+0.09419 -0.00726699 0
+0.0983703 -0.00418025 0
+0.0961322 0.00223815 0
+0.0847485 0.0113836 0
+0.0631638 0.0215848 0
+0.0327809 0.0303828 0
+-0.00236367 0.0351446 0
+-0.0361943 0.0338307 0
+-0.0618518 0.0256575 0
+-0.0732726 0.0114208 0
+-0.0666485 -0.00662411 0
+-0.0413845 -0.0252641 0
+-0.000356954 -0.0410275 0
+0.0505235 -0.0508805 0
+0.103308 -0.0527842 0
+0.149376 -0.0460682 0
+0.180975 -0.0315987 0
+0.192674 -0.011699 0
+0.18244 0.0102331 0
+0.152057 0.030383 0
+0.106765 0.0452921 0
+0.0542402 0.0525251 0
+0.0031642 0.051076 0
+-0.0383187 0.0414829 0
+-0.0640213 0.0257025 0
+-0.0707959 0.00677459 0
+-0.0590716 -0.0117243 0
+-0.0326679 -0.0264037 0
+0.00215739 -0.0348253 0
+0.0382388 -0.0360814 0
+0.0692065 -0.0309677 0
+0.0908632 -0.0216568 0
+0.10184 -0.0109769 0
+0.1034 -0.00156016 0
+0.0985604 0.00483989 0
+0.0909113 0.00764911 0
+0.0835565 0.00735482 0
+0.078465 0.00509151 0
+0.0763277 0.00213727 0
+0.076816 -0.000488297 0
+0.0790372 -0.0022212 0
+0.0819823 -0.00294512 0
+0.0848324 -0.00285005 0
+0.0870839 -0.00225157 0
+0.0885292 -0.00144523 0
+0.0891612 -0.000632039 0
+0.0890755 8.57488e-05 0
+0.0884127 0.000662707 0
+0.0873598 0.00105291 0
+0.0861955 0.00116437 0
+0.0853505 0.000845008 0
+0.0854374 -8.69437e-05 0
+0.0872016 -0.0017642 0
+0.0913546 -0.00415299 0
+0.0982809 -0.00692631 0
+0.10766 -0.00937865 0
+0.118107 -0.0104471 0
+0.127005 -0.00889874 0
+0.130717 -0.00371166 0
+0.125331 0.00538587 0
+0.108003 0.0173281 0
+0.0787435 0.0292595 0
+0.042294 0.0364494 0
+0.0094788 0.0328153 0
+-0.00275721 0.012236 0
+0.0265827 -0.0293399 0
+0.117909 -0.0913262 0
+0.284173 -0.166265 0
+0.523303 -0.23913 0
+0.812717 -0.289414 0
+1.10928 -0.296561 0
+1.35719 -0.247907 0
+1.50374 -0.146551 0
+1.51924 -0.015508 0
+1.41424 0.105008 0
+1.24621 0.168024 0
+1.10875 0.137459 0
+1.07905 0.0297053 0
+0.971628 0.128058 0
+0.728354 0.252026 0
+0.728354 0.636966 0
+-0.868687 -0.290129 0
+-1.7337 -0.519348 0
+-3.44541 -0.86294 0
+-2.50288 -1.30394 0
+-1.36397 -1.57654 0
+-0.304071 -1.48027 0
+0.412189 -1.03072 0
+0.636965 -0.380621 0
+0.376013 0.269257 0
+-0.237208 0.75052 0
+-1.00547 0.976499 0
+-1.73775 0.951097 0
+-2.29967 0.744689 0
+-2.63307 0.455021 0
+-2.74797 0.171394 0
+-2.6984 -0.046842 0
+-2.55492 -0.175588 0
+-2.38274 -0.219575 0
+-2.229 -0.200777 0
+-2.11904 -0.146977 0
+-2.0589 -0.0833351 0
+-2.04126 -0.0277475 0
+-2.05211 0.0104774 0
+-2.07652 0.0295577 0
+-2.10246 0.0328458 0
+-2.12253 0.0260842 0
+-2.13379 0.0150785 0
+-2.13668 0.00424018 0
+-2.13342 -0.00393105 0
+-2.12676 -0.00864817 0
+-2.11906 -0.0102721 0
+-2.11195 -0.00968712 0
+-2.10637 -0.00780325 0
+-2.10273 -0.00526401 0
+-2.10126 -0.00236732 0
+-2.10217 0.000833243 0
+-2.10571 0.00430632 0
+-2.11195 0.0077794 0
+-2.12043 0.0105396 0
+-2.1298 0.0114252 0
+-2.13765 0.00911624 0
+-2.14084 0.00273661 0
+-2.13638 -0.0073838 0
+-2.12283 -0.0190979 0
+-2.10186 -0.0283651 0
+-2.07913 -0.0300015 0
+-2.06404 -0.0192667 0
+-2.06791 0.00610461 0
+-2.1007 0.0441765 0
+-2.16735 0.0882305 0
+-2.26482 0.127856 0
+-2.38127 0.151598 0
+-2.49781 0.15037 0
+-2.59256 0.120408 0
+-2.64586 0.0647146 0
+-2.64497 -0.00750771 0
+-2.58715 -0.0830843 0
+-2.48031 -0.147871 0
+-2.3416 -0.189588 0
+-2.19443 -0.199958 0
+-2.0644 -0.176096 0
+-1.97478 -0.121218 0
+-1.94202 -0.0444645 0
+-1.97233 0.0405436 0
+-2.06036 0.118421 0
+-2.19036 0.175284 0
+-2.33934 0.201509 0
+-2.48152 0.193257 0
+-2.59284 0.152802 0
+-2.65516 0.0880199 0
+-2.65956 0.0111805 0
+-2.60817 -0.0631166 0
+-2.51369 -0.120884 0
+-2.39646 -0.152053 0
+-2.27947 -0.153079 0
+-2.18267 -0.127766 0
+-2.1185 -0.0858218 0
+-2.08987 -0.0396114 0
+-2.09109 -0.000341387 0
+-2.11116 0.0249113 0
+-2.13789 0.0343826 0
+-2.16143 0.0308901 0
+-2.17616 0.019822 0
+-2.18086 0.00683875 0
+-2.1775 -0.00384873 0
+-2.16952 -0.0102015 0
+-2.16031 -0.0121492 0
+-2.15232 -0.0108411 0
+-2.14678 -0.00779789 0
+-2.14394 -0.00428487 0
+-2.14353 -0.00103943 0
+-2.14513 0.00168459 0
+-2.14835 0.00388193 0
+-2.15281 0.00551131 0
+-2.15791 0.0062713 0
+-2.16258 0.0055122 0
+-2.165 0.00233674 0
+-2.16269 -0.00408155 0
+-2.15286 -0.0139838 0
+-2.13336 -0.0264197 0
+-2.10399 -0.0387559 0
+-2.06784 -0.0465893 0
+-2.03238 -0.0443616 0
+-2.00924 -0.0268497 0
+-2.0124 0.00854829 0
+-2.05422 0.0591399 0
+-2.13956 0.114606 0
+-2.25909 0.155979 0
+-2.38329 0.157017 0
+-2.46005 0.0889918 0
+-2.41869 -0.0707004 0
+-2.183 -0.327015 0
+-1.69336 -0.655906 0
+-0.933972 -0.998517 0
+0.0437355 -1.26712 0
+1.11383 -1.36666 0
+2.09523 -1.22931 0
+2.79972 -0.851037 0
+3.09685 -0.312642 0
+2.97043 0.231427 0
+2.53474 0.603711 0
+1.98277 0.689429 0
+1.45328 0.5592 0
+0.982823 0.682152 0
+0.579004 0.691916 0
+0.579004 1.22355 0
+-1.77618 -0.562664 0
+-3.53411 -0.995264 0
+-7.01957 -1.64459 0
+-5.84475 -2.47876 0
+-4.45848 -2.96281 0
+-3.28144 -2.6573 0
+-2.70887 -1.60329 0
+-2.92815 -0.161347 0
+-3.86278 1.20389 0
+-5.23367 2.12141 0
+-6.68516 2.42799 0
+-7.91084 2.17677 0
+-8.73158 1.56542 0
+-9.11117 0.834616 0
+-9.12358 0.1838 0
+-8.89887 -0.271553 0
+-8.57265 -0.5018 0
+-8.25262 -0.53961 0
+-8.00453 -0.448862 0
+-7.85342 -0.298096 0
+-7.79335 -0.143401 0
+-7.80041 -0.0206914 0
+-7.84476 0.0548317 0
+-7.89977 0.0845653 0
+-7.94703 0.0801126 0
+-7.97764 0.0566887 0
+-7.99052 0.0279573 0
+-7.98946 0.00318644 0
+-7.9801 -0.0132964 0
+-7.96766 -0.0210859 0
+-7.95587 -0.0220629 0
+-7.9467 -0.018857 0
+-7.94075 -0.0137502 0
+-7.93791 -0.00810503 0
+-7.938 -0.00227903 0
+-7.94123 0.00406754 0
+-7.94832 0.0113968 0
+-7.96015 0.0196001 0
+-7.977 0.0273957 0
+-7.9977 0.0321285 0
+-8.01889 0.0303004 0
+-8.03511 0.0189617 0
+-8.04017 -0.00232532 0
+-8.02958 -0.0296915 0
+-8.00361 -0.0543293 0
+-7.96974 -0.0638792 0
+-7.94295 -0.0460555 0
+-7.94315 0.00631129 0
+-7.98964 0.0906593 0
+-8.09414 0.192729 0
+-8.25504 0.288762 0
+-8.45518 0.351734 0
+-8.66446 0.359656 0
+-8.84691 0.30285 0
+-8.96961 0.18742 0
+-9.01083 0.033707 0
+-8.96464 -0.129273 0
+-8.84161 -0.270902 0
+-8.66613 -0.365065 0
+-8.47189 -0.394194 0
+-8.29628 -0.351707 0
+-8.17391 -0.243588 0
+-8.12976 -0.0886215 0
+-8.17346 0.084251 0
+-8.29703 0.241983 0
+-8.47678 0.355036 0
+-8.67876 0.403489 0
+-8.86535 0.379853 0
+-9.00171 0.289157 0
+-9.06155 0.14786 0
+-9.03228 -0.0180891 0
+-8.91838 -0.177017 0
+-8.74141 -0.297849 0
+-8.53551 -0.357956 0
+-8.33884 -0.349748 0
+-8.18365 -0.282955 0
+-8.0883 -0.181169 0
+-8.05414 -0.0737794 0
+-8.06791 0.0134274 0
+-8.10834 0.0653502 0
+-8.15393 0.0799691 0
+-8.18897 0.0659332 0
+-8.20632 0.0371649 0
+-8.2066 0.00712523 0
+-8.19534 -0.0151071 0
+-8.17947 -0.0260784 0
+-8.16468 -0.0269411 0
+-8.15422 -0.0213007 0
+-8.14894 -0.0130711 0
+-8.14816 -0.00506941 0
+-8.15064 0.00144008 0
+-8.1554 0.00644324 0
+-8.162 0.010482 0
+-8.1704 0.013912 0
+-8.18046 0.0163311 0
+-8.19125 0.0163082 0
+-8.20044 0.0115201 0
+-8.20392 -0.000603514 0
+-8.19619 -0.021709 0
+-8.17162 -0.0509872 0
+-8.12667 -0.083709 0
+-8.06275 -0.110512 0
+-7.98888 -0.118225 0
+-7.92292 -0.0928112 0
+-7.88994 -0.0244286 0
+-7.91695 0.0861441 0
+-8.02355 0.221209 0
+-8.2096 0.342026 0
+-8.44199 0.389411 0
+-8.64486 0.291863 0
+-8.69901 -0.0165502 0
+-8.45712 -0.568906 0
+-7.77861 -1.33442 0
+-6.58082 -2.1963 0
+-4.89242 -2.95552 0
+-2.88504 -3.37404 0
+-0.858231 -3.25612 0
+0.833576 -2.54284 0
+1.89622 -1.37528 0
+2.2076 -0.0799516 0
+1.86672 0.944587 0
+1.13974 1.41641 0
+0.330472 1.36847 0
+-0.0655084 1.2653 0
+-0.194922 0.903771 0
+-0.194922 1.28363 0
+-2.61733 -0.782706 0
+-5.22723 -1.37392 0
+-10.435 -2.25345 0
+-9.54885 -3.36493 0
+-8.60531 -3.90634 0
+-8.06184 -3.20077 0
+-8.30863 -1.3565 0
+-9.45323 0.98325 0
+-11.2769 3.0276 0
+-13.3485 4.19299 0
+-15.2102 4.2897 0
+-16.5381 3.50462 0
+-17.2152 2.24253 0
+-17.3128 0.932238 0
+-17.0146 -0.114365 0
+-16.5312 -0.755011 0
+-16.0372 -0.995754 0
+-15.6434 -0.933476 0
+-15.3954 -0.696845 0
+-15.2893 -0.404135 0
+-15.2916 -0.141179 0
+-15.3571 0.0448733 0
+-15.4439 0.141643 0
+-15.5213 0.161932 0
+-15.5731 0.131867 0
+-15.5961 0.0797275 0
+-15.5961 0.0279286 0
+-15.5823 -0.0105617 0
+-15.5639 -0.031754 0
+-15.5471 -0.0378116 0
+-15.5354 -0.0337623 0
+-15.5294 -0.0248977 0
+-15.528 -0.0151715 0
+-15.5296 -0.00649857 0
+-15.5331 0.00119705 0
+-15.5383 0.00936108 0
+-15.5467 0.019796 0
+-15.5606 0.0334073 0
+-15.5821 0.0489412 0
+-15.6122 0.0622404 0
+-15.6487 0.0667569 0
+-15.6855 0.055791 0
+-15.7139 0.0261242 0
+-15.7254 -0.0182124 0
+-15.7159 -0.0638918 0
+-15.69 -0.0897862 0
+-15.6632 -0.0728372 0
+-15.6597 0.00280371 0
+-15.7057 0.136676 0
+-15.8203 0.307334 0
+-16.0069 0.475354 0
+-16.2493 0.594111 0
+-16.5144 0.624759 0
+-16.761 0.549516 0
+-16.9514 0.377783 0
+-17.0605 0.142823 0
+-17.0809 -0.108842 0
+-17.0219 -0.329936 0
+-16.9052 -0.48176 0
+-16.7607 -0.538681 0
+-16.6223 -0.490111 0
+-16.5229 -0.342973 0
+-16.4876 -0.123945 0
+-16.5265 0.123126 0
+-16.6317 0.347169 0
+-16.78 0.503367 0
+-16.9396 0.56313 0
+-17.0767 0.516869 0
+-17.1598 0.372248 0
+-17.1645 0.152589 0
+-17.0785 -0.10406 0
+-16.9068 -0.348708 0
+-16.6737 -0.530973 0
+-16.4186 -0.613043 0
+-16.1859 -0.582415 0
+-16.0121 -0.456844 0
+-15.9149 -0.278274 0
+-15.8908 -0.0979365 0
+-15.9183 0.040896 0
+-15.9683 0.115349 0
+-16.0145 0.126227 0
+-16.0409 0.0923367 0
+-16.0435 0.0397941 0
+-16.028 -0.00844884 0
+-16.0042 -0.038927 0
+-15.9815 -0.0486958 0
+-15.9661 -0.0424119 0
+-15.9595 -0.0278847 0
+-15.9603 -0.0122192 0
+-15.9657 0.000331495 0
+-15.973 0.00869039 0
+-15.9806 0.0140173 0
+-15.9884 0.0182773 0
+-15.9973 0.0229068 0
+-16.0089 0.0278342 0
+-16.0235 0.0309317 0
+-16.04 0.0280363 0
+-16.0544 0.0137772 0
+-16.0595 -0.0166087 0
+-16.0459 -0.0645802 0
+-16.0043 -0.125284 0
+-15.9294 -0.18537 0
+-15.8245 -0.223131 0
+-15.7051 -0.212294 0
+-15.5997 -0.129803 0
+-15.5469 0.0333513 0
+-15.586 0.260362 0
+-15.7428 0.498768 0
+-16.0097 0.656373 0
+-16.3261 0.6082 0
+-16.5632 0.220567 0
+-16.5279 -0.604181 0
+-15.9947 -1.86761 0
+-14.7711 -3.41991 0
+-12.7835 -4.94318 0
+-10.1506 -6.00689 0
+-7.20194 -6.20481 0
+-4.40836 -5.33642 0
+-2.23411 -3.54954 0
+-0.964703 -1.34935 0
+-0.595935 0.575819 0
+-0.845636 1.66611 0
+-1.27043 1.79326 0
+-1.05088 1.36819 0
+-0.697827 0.696147 0
+-0.697827 0.959337 0
+-3.15866 -0.884319 0
+-6.35145 -1.53461 0
+-12.7738 -2.48015 0
+-12.5204 -3.61831 0
+-12.4765 -3.95026 0
+-13.0159 -2.66142 0
+-14.3749 0.00253095 0
+-16.4711 3.07942 0
+-18.9144 5.47091 0
+-21.1813 6.45989 0
+-22.835 5.94347 0
+-23.6747 4.3443 0
+-23.7579 2.32567 0
+-23.3183 0.492657 0
+-22.6438 -0.788841 0
+-21.976 -1.42281 0
+-21.462 -1.50974 0
+-21.1544 -1.24106 0
+-21.0377 -0.813576 0
+-21.0601 -0.381742 0
+-21.1596 -0.0416645 0
+-21.2809 0.166192 0
+-21.3846 0.245301 0
+-21.4501 0.227427 0
+-21.4742 0.15599 0
+-21.4659 0.0714022 0
+-21.4394 0.00146562 0
+-21.4085 -0.0414641 0
+-21.3827 -0.0575559 0
+-21.3666 -0.0539719 0
+-21.3605 -0.0398381 0
+-21.3623 -0.0230578 0
+-21.3687 -0.00874518 0
+-21.3765 0.0012614 0
+-21.3834 0.00807396 0
+-21.3888 0.0148264 0
+-21.3944 0.0253769 0
+-21.4037 0.0426563 0
+-21.4214 0.0666586 0
+-21.4519 0.0927155 0
+-21.4965 0.111415 0
+-21.552 0.111287 0
+-21.61 0.0840859 0
+-21.6592 0.0309783 0
+-21.69 -0.0330663 0
+-21.7001 -0.0797162 0
+-21.6983 -0.0745668 0
+-21.7051 0.00955759 0
+-21.7465 0.178034 0
+-21.8448 0.405728 0
+-22.0094 0.639877 0
+-22.2306 0.815293 0
+-22.4824 0.876579 0
+-22.7309 0.798092 0
+-22.9459 0.592776 0
+-23.1092 0.306052 0
+-23.2166 -0.00138034 0
+-23.2743 -0.272283 0
+-23.292 -0.464012 0
+-23.2809 -0.549853 0
+-23.2541 -0.516854 0
+-23.2285 -0.368581 0
+-23.2198 -0.132637 0
+-23.2354 0.138676 0
+-23.2702 0.382037 0
+-23.3108 0.543922 0
+-23.3418 0.594189 0
+-23.3505 0.525473 0
+-23.3244 0.346214 0
+-23.251 0.0791501 0
+-23.1203 -0.234758 0
+-22.9328 -0.53618 0
+-22.7053 -0.758507 0
+-22.4695 -0.848786 0
+-22.2633 -0.788641 0
+-22.1168 -0.603398 0
+-22.0416 -0.353429 0
+-22.0282 -0.111365 0
+-22.0513 0.0640296 0
+-22.0817 0.145698 0
+-22.0968 0.141402 0
+-22.0877 0.0831694 0
+-22.0579 0.0100571 0
+-22.0191 -0.0472497 0
+-21.9838 -0.0742399 0
+-21.9606 -0.0719411 0
+-21.9521 -0.0509039 0
+-21.956 -0.0239992 0
+-21.9671 -0.00107085 0
+-21.9802 0.0133815 0
+-21.9913 0.0197994 0
+-21.9988 0.0215858 0
+-22.0034 0.0228405 0
+-22.0071 0.0266 0
+-22.0129 0.0336622 0
+-22.0238 0.0417922 0
+-22.0411 0.0453975 0
+-22.0635 0.0361319 0
+-22.085 0.00491697 0
+-22.0951 -0.0544724 0
+-22.0797 -0.140726 0
+-22.0244 -0.240615 0
+-21.9204 -0.327216 0
+-21.7696 -0.363073 0
+-21.5901 -0.309283 0
+-21.4172 -0.139495 0
+-21.3004 0.143543 0
+-21.2932 0.491585 0
+-21.4352 0.79828 0
+-21.7241 0.897134 0
+-22.0848 0.581319 0
+-22.3464 -0.342601 0
+-22.2489 -1.96516 0
+-21.4978 -4.17103 0
+-19.8662 -6.57469 0
+-17.3137 -8.55945 0
+-14.062 -9.45645 0
+-10.5724 -8.82602 0
+-7.4039 -6.71808 0
+-5.00348 -3.74978 0
+-3.52865 -0.899007 0
+-2.79799 0.935454 0
+-2.39767 1.39294 0
+-1.42288 0.867811 0
+-0.708279 0.201055 0
+-0.708279 0.567099 0
+-3.33079 -0.863698 0
+-6.74612 -1.469 0
+-13.6617 -2.30809 0
+-14.0719 -3.20805 0
+-14.9422 -3.08002 0
+-16.4756 -1.12794 0
+-18.6655 2.19238 0
+-21.206 5.6199 0
+-23.5874 7.85237 0
+-25.3156 8.18808 0
+-26.1192 6.74705 0
+-26.0333 4.25833 0
+-25.3353 1.62774 0
+-24.3953 -0.447393 0
+-23.5286 -1.6555 0
+-22.9164 -2.03505 0
+-22.6018 -1.82427 0
+-22.5351 -1.30784 0
+-22.627 -0.721646 0
+-22.7891 -0.219602 0
+-22.9534 0.122614 0
+-23.0778 0.290533 0
+-23.1443 0.311891 0
+-23.1548 0.237922 0
+-23.124 0.125159 0
+-23.0724 0.0197688 0
+-23.0191 -0.0518182 0
+-22.977 -0.0835076 0
+-22.9516 -0.08303 0
+-22.9421 -0.0634196 0
+-22.945 -0.0369903 0
+-22.9553 -0.012747 0
+-22.9683 0.0043155 0
+-22.9803 0.0132182 0
+-22.9886 0.0163835 0
+-22.9923 0.0185253 0
+-22.9924 0.0254668 0
+-22.9924 0.0426568 0
+-22.9984 0.0726775 0
+-23.0179 0.112207 0
+-23.0571 0.150621 0
+-23.1182 0.172359 0
+-23.1973 0.163171 0
+-23.2847 0.11837 0
+-23.3677 0.0499309 0
+-23.4358 -0.0115294 0
+-23.4868 -0.0236339 0
+-23.5288 0.051608 0
+-23.5788 0.228007 0
+-23.6548 0.481771 0
+-23.7681 0.75311 0
+-23.9174 0.964584 0
+-24.0902 1.04946 0
+-24.2698 0.977615 0
+-24.4436 0.766596 0
+-24.6094 0.471893 0
+-24.7728 0.162031 0
+-24.9383 -0.106787 0
+-25.1006 -0.301706 0
+-25.244 -0.406488 0
+-25.3515 -0.409355 0
+-25.4157 -0.30438 0
+-25.4386 -0.109727 0
+-25.4232 0.123234 0
+-25.3684 0.32728 0
+-25.2743 0.449837 0
+-25.1502 0.470005 0
+-25.0138 0.389143 0
+-24.8807 0.213061 0
+-24.7536 -0.0478915 0
+-24.6242 -0.364211 0
+-24.4824 -0.67793 0
+-24.3281 -0.912817 0
+-24.1744 -1.00249 0
+-24.042 -0.921036 0
+-23.9478 -0.697646 0
+-23.8952 -0.40603 0
+-23.8725 -0.134062 0
+-23.8589 0.0504324 0
+-23.8347 0.121576 0
+-23.7903 0.0969372 0
+-23.7284 0.0212823 0
+-23.6613 -0.0569944 0
+-23.6037 -0.104864 0
+-23.566 -0.111981 0
+-23.5513 -0.0866789 0
+-23.5559 -0.0462363 0
+-23.5725 -0.00743429 0
+-23.5928 0.0192036 0
+-23.6103 0.0309205 0
+-23.6215 0.0309994 0
+-23.6255 0.0255638 0
+-23.6233 0.0207121 0
+-23.6176 0.0208666 0
+-23.6119 0.0279273 0
+-23.6105 0.0404319 0
+-23.6178 0.052684 0
+-23.6363 0.0546392 0
+-23.6648 0.0334107 0
+-23.6962 -0.0230995 0
+-23.7164 -0.120467 0
+-23.7059 -0.251115 0
+-23.6434 -0.389727 0
+-23.5123 -0.494245 0
+-23.3073 -0.514214 0
+-23.0416 -0.405225 0
+-22.7512 -0.146867 0
+-22.4968 0.23723 0
+-22.3567 0.658107 0
+-22.4036 0.944091 0
+-22.6646 0.842339 0
+-23.0702 0.0629709 0
+-23.419 -1.61638 0
+-23.3911 -4.19892 0
+-22.6325 -7.33328 0
+-20.8962 -10.2957 0
+-18.1813 -12.1714 0
+-14.7875 -12.2198 0
+-11.233 -10.2726 0
+-8.05579 -6.92701 0
+-5.59657 -3.35822 0
+-3.88673 -0.774387 0
+-2.71516 0.22137 0
+-1.24227 0.0202912 0
+-0.43927 -0.30476 0
+-0.43927 0.332057 0
+-3.19621 -0.75793 0
+-6.50691 -1.2467 0
+-13.2274 -1.86271 0
+-14.0839 -2.35147 0
+-15.5206 -1.64338 0
+-17.5389 0.890429 0
+-19.893 4.54645 0
+-22.1199 7.84676 0
+-23.7128 9.44528 0
+-24.3448 8.82007 0
+-24.0083 6.4106 0
+-22.9951 3.24517 0
+-21.7431 0.375731 0
+-20.6481 -1.54241 0
+-19.9375 -2.3661 0
+-19.6474 -2.32515 0
+-19.6807 -1.79095 0
+-19.8917 -1.09691 0
+-20.1501 -0.463216 0
+-20.3702 0.000466874 0
+-20.5111 0.263534 0
+-20.5657 0.345182 0
+-20.5478 0.293965 0
+-20.4816 0.171743 0
+-20.3946 0.0380868 0
+-20.3108 -0.0640139 0
+-20.2464 -0.116208 0
+-20.2073 -0.12258 0
+-20.1911 -0.0992378 0
+-20.1912 -0.0632977 0
+-20.2009 -0.0273496 0
+-20.2146 0.000949127 0
+-20.2283 0.0180671 0
+-20.2394 0.0243106 0
+-20.2461 0.0231303 0
+-20.2475 0.0198788 0
+-20.2432 0.0211643 0
+-20.235 0.0344189 0
+-20.2279 0.065568 0
+-20.2302 0.114597 0
+-20.2519 0.172284 0
+-20.3011 0.221523 0
+-20.3814 0.243487 0
+-20.4896 0.226563 0
+-20.6151 0.175443 0
+-20.743 0.116387 0
+-20.8596 0.093005 0
+-20.9578 0.149717 0
+-21.0381 0.308355 0
+-21.1069 0.550541 0
+-21.1711 0.817298 0
+-21.235 1.02852 0
+-21.3003 1.11476 0
+-21.3696 1.04695 0
+-21.4519 0.848839 0
+-21.5637 0.583731 0
+-21.7234 0.321735 0
+-21.9378 0.107614 0
+-22.1904 -0.0491254 0
+-22.4415 -0.15537 0
+-22.6458 -0.20511 0
+-22.7746 -0.175595 0
+-22.8193 -0.064996 0
+-22.7796 0.0835924 0
+-22.6571 0.204693 0
+-22.4616 0.254382 0
+-22.2237 0.23212 0
+-21.9904 0.155873 0
+-21.8021 0.0246853 0
+-21.674 -0.175996 0
+-21.596 -0.442174 0
+-21.5453 -0.728642 0
+-21.5015 -0.956617 0
+-21.4553 -1.04868 0
+-21.407 -0.96937 0
+-21.3587 -0.745897 0
+-21.3083 -0.456481 0
+-21.2481 -0.194244 0
+-21.1701 -0.0275391 0
+-21.072 0.0235062 0
+-20.9608 -0.0142539 0
+-20.8513 -0.0882618 0
+-20.7602 -0.148141 0
+-20.6993 -0.165716 0
+-20.6717 -0.139543 0
+-20.672 -0.0864225 0
+-20.6898 -0.0284596 0
+-20.7142 0.0169385 0
+-20.7365 0.041568 0
+-20.7518 0.0462491 0
+-20.7585 0.0376198 0
+-20.7568 0.0239311 0
+-20.7482 0.012066 0
+-20.734 0.00672815 0
+-20.7167 0.01059 0
+-20.6999 0.0236714 0
+-20.6891 0.0418256 0
+-20.6901 0.0556258 0
+-20.7074 0.0507839 0
+-20.7413 0.0107613 0
+-20.784 -0.077737 0
+-20.8184 -0.216711 0
+-20.8188 -0.389421 0
+-20.7545 -0.5585 0
+-20.5965 -0.672219 0
+-20.3249 -0.676848 0
+-19.9402 -0.53154 0
+-19.4771 -0.225834 0
+-19.0149 0.195916 0
+-18.6731 0.602291 0
+-18.5794 0.748598 0
+-18.8067 0.290282 0
+-19.2985 -1.1246 0
+-19.8232 -3.67424 0
+-20.0041 -7.15239 0
+-19.441 -10.8588 0
+-17.8836 -13.7287 0
+-15.3691 -14.7343 0
+-12.2372 -13.4046 0
+-8.99888 -10.1653 0
+-6.12866 -6.22844 0
+-3.9016 -3.00144 0
+-2.3814 -1.29883 0
+-0.81845 -0.783032 0
+-0.160334 -0.591984 0
+-0.160334 0.325954 0
+-2.87325 -0.615058 0
+-5.85456 -0.960714 0
+-11.886 -1.3168 0
+-12.8802 -1.35727 0
+-14.4055 -0.118079 0
+-16.2871 2.77208 0
+-18.1249 6.38421 0
+-19.4307 9.15261 0
+-19.8401 9.85464 0
+-19.2844 8.26441 0
+-18.0224 5.14859 0
+-16.5138 1.73658 0
+-15.2151 -0.922996 0
+-14.4093 -2.3482 0
+-14.1459 -2.62958 0
+-14.2923 -2.17866 0
+-14.6433 -1.43996 0
+-15.0169 -0.723299 0
+-15.3018 -0.178375 0
+-15.4572 0.155857 0
+-15.4907 0.297062 0
+-15.4339 0.288393 0
+-15.325 0.185013 0
+-15.1989 0.0456545 0
+-15.083 -0.0777568 0
+-14.9949 -0.152092 0
+-14.941 -0.170159 0
+-14.9172 -0.146371 0
+-14.9135 -0.102903 0
+-14.9198 -0.057083 0
+-14.929 -0.0180815 0
+-14.9379 0.00985972 0
+-14.945 0.0251301 0
+-14.9498 0.0290886 0
+-14.9523 0.0256457 0
+-14.9519 0.019532 0
+-14.9471 0.01629 0
+-14.9365 0.0238608 0
+-14.9222 0.0512868 0
+-14.9106 0.102982 0
+-14.9118 0.173427 0
+-14.9376 0.24733 0
+-14.999 0.304888 0
+-15.1018 0.329406 0
+-15.2428 0.316408 0
+-15.4084 0.282041 0
+-15.5789 0.263444 0
+-15.7337 0.304526 0
+-15.8568 0.431435 0
+-15.9387 0.632502 0
+-15.9776 0.856152 0
+-15.9785 1.02947 0
+-15.9533 1.08957 0
+-15.9203 1.01396 0
+-15.9049 0.833426 0
+-15.9378 0.616598 0
+-16.047 0.430925 0
+-16.2435 0.304149 0
+-16.5073 0.214679 0
+-16.7857 0.122969 0
+-17.0154 0.0245917 0
+-17.1593 -0.0316505 0
+-17.2077 -0.0165695 0
+-17.1601 0.0359362 0
+-17.017 0.0615816 0
+-16.789 0.0263997 0
+-16.5151 -0.041798 0
+-16.2604 -0.0988187 0
+-16.0792 -0.156486 0
+-15.992 -0.263189 0
+-15.9859 -0.448274 0
+-16.0286 -0.685913 0
+-16.085 -0.900295 0
+-16.1276 -1.00609 0
+-16.1395 -0.957376 0
+-16.1118 -0.773636 0
+-16.0404 -0.527864 0
+-15.9271 -0.307616 0
+-15.7806 -0.173954 0
+-15.6177 -0.139433 0
+-15.4597 -0.172257 0
+-15.3278 -0.220181 0
+-15.2366 -0.239355 0
+-15.1898 -0.212521 0
+-15.1802 -0.149132 0
+-15.1942 -0.072434 0
+-15.2176 -0.00505173 0
+-15.2398 0.0391657 0
+-15.255 0.0568092 0
+-15.2617 0.052881 0
+-15.2607 0.0366983 0
+-15.254 0.0172039 0
+-15.2423 0.000302874 0
+-15.225 -0.0105223 0
+-15.2019 -0.0125482 0
+-15.1741 -0.00408202 0
+-15.1456 0.0133416 0
+-15.123 0.0330052 0
+-15.1146 0.0423838 0
+-15.1278 0.0239819 0
+-15.1647 -0.0409115 0
+-15.2172 -0.164137 0
+-15.2656 -0.341072 0
+-15.2779 -0.546141 0
+-15.213 -0.737166 0
+-15.0248 -0.865023 0
+-14.6738 -0.88259 0
+-14.146 -0.753574 0
+-13.4791 -0.471014 0
+-12.7812 -0.0955866 0
+-12.2251 0.192489 0
+-11.9988 0.0640056 0
+-12.2163 -0.907173 0
+-12.8218 -3.06874 0
+-13.5477 -6.42646 0
+-13.9734 -10.4331 0
+-13.6827 -14.0194 0
+-12.4517 -15.9653 0
+-10.3641 -15.4922 0
+-7.78672 -12.7426 0
+-5.21899 -8.79618 0
+-3.10954 -5.11089 0
+-1.75055 -2.65782 0
+-0.428349 -1.23753 0
+-0.0182935 -0.567097 0
+-0.0182935 0.509203 0
+-2.4746 -0.473717 0
+-5.0189 -0.687065 0
+-10.1155 -0.813915 0
+-10.9879 -0.484958 0
+-12.2136 1.10771 0
+-13.5057 4.06413 0
+-14.4302 7.30874 0
+-14.6089 9.33127 0
+-13.9112 9.15694 0
+-12.5303 6.88347 0
+-10.897 3.51535 0
+-9.48555 0.325125 0
+-8.62016 -1.78839 0
+-8.37848 -2.58988 0
+-8.61933 -2.38872 0
+-9.09567 -1.70231 0
+-9.57762 -0.958006 0
+-9.9246 -0.376319 0
+-10.0927 -0.010289 0
+-10.1032 0.166361 0
+-10.006 0.199846 0
+-9.85438 0.13679 0
+-9.69231 0.0229449 0
+-9.54962 -0.0970283 0
+-9.44256 -0.184824 0
+-9.37602 -0.218629 0
+-9.34541 -0.200772 0
+-9.33898 -0.152794 0
+-9.34295 -0.0989397 0
+-9.34737 -0.0526655 0
+-9.34849 -0.0169612 0
+-9.34649 0.00786248 0
+-9.34257 0.0212097 0
+-9.33824 0.0247594 0
+-9.33522 0.0226273 0
+-9.33384 0.0181518 0
+-9.33166 0.0141118 0
+-9.325 0.0171956 0
+-9.31229 0.0385793 0
+-9.29623 0.0869277 0
+-9.28399 0.161187 0
+-9.28704 0.250379 0
+-9.32014 0.337989 0
+-9.39707 0.406335 0
+-9.52366 0.442995 0
+-9.69282 0.451203 0
+-9.88519 0.45581 0
+-10.0741 0.49341 0
+-10.2316 0.588976 0
+-10.335 0.735843 0
+-10.3723 0.893458 0
+-10.3465 1.0037 0
+-10.2747 1.01782 0
+-10.1842 0.92339 0
+-10.1078 0.757049 0
+-10.0802 0.589021 0
+-10.1306 0.481354 0
+-10.2715 0.444972 0
+-10.4853 0.428514 0
+-10.7191 0.356727 0
+-10.9042 0.209741 0
+-11.014 0.0781551 0
+-11.0488 0.0182298 0
+-11.0102 -0.00264903 0
+-10.8956 -0.0530527 0
+-10.7048 -0.164422 0
+-10.4665 -0.280037 0
+-10.2514 -0.313965 0
+-10.1144 -0.293477 0
+-10.0747 -0.302836 0
+-10.1201 -0.402949 0
+-10.218 -0.588001 0
+-10.3289 -0.789391 0
+-10.4164 -0.918572 0
+-10.4531 -0.920688 0
+-10.4229 -0.803825 0
+-10.3231 -0.627716 0
+-10.1652 -0.465421 0
+-9.97368 -0.365516 0
+-9.77888 -0.334234 0
+-9.60965 -0.341493 0
+-9.48609 -0.343742 0
+-9.41531 -0.310135 0
+-9.39091 -0.236923 0
+-9.39709 -0.14295 0
+-9.416 -0.0535227 0
+-9.43421 0.0131568 0
+-9.44504 0.0499936 0
+-9.44723 0.0590087 0
+-9.44269 0.0483324 0
+-9.43445 0.0284577 0
+-9.42481 0.00756718 0
+-9.41371 -0.0107923 0
+-9.39876 -0.0254718 0
+-9.37699 -0.0343249 0
+-9.34678 -0.0342875 0
+-9.30906 -0.0243756 0
+-9.26814 -0.00792167 0
+-9.23233 0.00657464 0
+-9.21279 0.00444455 0
+-9.21936 -0.0343439 0
+-9.25503 -0.128469 0
+-9.3117 -0.284394 0
+-9.36781 -0.49004 0
+-9.3865 -0.718471 0
+-9.31524 -0.936282 0
+-9.09077 -1.10706 0
+-8.65515 -1.1892 0
+-7.98495 -1.1412 0
+-7.12717 -0.953374 0
+-6.22326 -0.711418 0
+-5.49523 -0.664028 0
+-5.17592 -1.22648 0
+-5.39729 -2.84737 0
+-6.08858 -5.73516 0
+-6.95254 -9.56917 0
+-7.55774 -13.4142 0
+-7.51937 -16.0037 0
+-6.68014 -16.3314 0
+-5.19326 -14.2295 0
+-3.46287 -10.5266 0
+-1.98033 -6.59343 0
+-1.14797 -3.49019 0
+-0.214235 -1.2229 0
+-0.0315121 -0.262938 0
+-0.0315121 0.796181 0
+-2.07966 -0.3559 0
+-4.17606 -0.468537 0
+-8.31045 -0.433603 0
+-8.92104 0.125632 0
+-9.65998 1.84665 0
+-10.2035 4.60767 0
+-10.1898 7.295 0
+-9.43177 8.57325 0
+-8.04253 7.76771 0
+-6.39734 5.23829 0
+-4.95903 2.07703 0
+-4.07394 -0.559965 0
+-3.84828 -2.01405 0
+-4.151 -2.28715 0
+-4.71732 -1.82241 0
+-5.28329 -1.13634 0
+-5.68081 -0.560482 0
+-5.85959 -0.197542 0
+-5.85221 -0.0176689 0
+-5.72428 0.0384344 0
+-5.54068 0.0162448 0
+-5.35196 -0.0519304 0
+-5.19085 -0.13817 0
+-5.07262 -0.215252 0
+-4.99899 -0.258455 0
+-4.96338 -0.25424 0
+-4.9543 -0.20985 0
+-4.95751 -0.149584 0
+-4.96022 -0.0962304 0
+-4.95604 -0.0568464 0
+-4.94559 -0.027409 0
+-4.93222 -0.00551317 0
+-4.91835 0.00734672 0
+-4.90601 0.0124121 0
+-4.89786 0.0144763 0
+-4.89536 0.0156605 0
+-4.89631 0.0150557 0
+-4.8959 0.01679 0
+-4.89043 0.0331018 0
+-4.87925 0.075751 0
+-4.86513 0.147064 0
+-4.85559 0.240843 0
+-4.86457 0.346969 0
+-4.90954 0.451302 0
+-5.00336 0.536821 0
+-5.14657 0.594412 0
+-5.32523 0.634467 0
+-5.51388 0.682058 0
+-5.68086 0.75596 0
+-5.79605 0.85103 0
+-5.84077 0.938178 0
+-5.81534 0.978272 0
+-5.73872 0.941195 0
+-5.64101 0.825674 0
+-5.55476 0.670799 0
+-5.50881 0.543074 0
+-5.5235 0.496045 0
+-5.60564 0.527107 0
+-5.742 0.564876 0
+-5.88918 0.503905 0
+-5.97881 0.299373 0
+-6.02086 0.12021 0
+-6.03201 0.0293735 0
+-6.01425 -0.0204021 0
+-5.96331 -0.104002 0
+-5.86196 -0.265768 0
+-5.70332 -0.438678 0
+-5.55723 -0.460056 0
+-5.46893 -0.381779 0
+-5.45457 -0.317191 0
+-5.50937 -0.34815 0
+-5.61127 -0.486097 0
+-5.72651 -0.674157 0
+-5.81803 -0.827045 0
+-5.85394 -0.884787 0
+-5.81459 -0.843169 0
+-5.69857 -0.743737 0
+-5.5245 -0.639496 0
+-5.32556 -0.564453 0
+-5.13808 -0.521714 0
+-4.99018 -0.489386 0
+-4.89549 -0.438434 0
+-4.8522 -0.353428 0
+-4.84632 -0.2428 0
+-4.85838 -0.130894 0
+-4.87151 -0.040394 0
+-4.87677 0.0184164 0
+-4.87288 0.0461032 0
+-4.86253 0.0486573 0
+-4.84935 0.0351558 0
+-4.83668 0.0157853 0
+-4.82641 -0.00269652 0
+-4.81773 -0.0194722 0
+-4.80722 -0.0359801 0
+-4.79075 -0.0507984 0
+-4.76509 -0.0599446 0
+-4.72848 -0.0609889 0
+-4.68152 -0.0548809 0
+-4.62926 -0.0456895 0
+-4.58197 -0.0428473 0
+-4.55236 -0.0639448 0
+-4.55044 -0.130389 0
+-4.57897 -0.255865 0
+-4.6303 -0.43871 0
+-4.68263 -0.666144 0
+-4.69541 -0.923501 0
+-4.60739 -1.19508 0
+-4.34301 -1.45358 0
+-3.83285 -1.65137 0
+-3.04998 -1.73625 0
+-2.05321 -1.70819 0
+-1.01223 -1.705 0
+-0.182802 -2.05591 0
+0.181391 -3.21157 0
+-0.0480339 -5.50574 0
+-0.780782 -8.83642 0
+-1.71087 -12.4841 0
+-2.43688 -15.2777 0
+-2.65018 -16.1181 0
+-2.29248 -14.5872 0
+-1.59255 -11.2265 0
+-0.957839 -7.22814 0
+-0.775432 -3.67259 0
+-0.199597 -0.790547 0
+-0.150993 0.216311 0
+-0.150993 1.10373 0
+-1.73196 -0.26868 0
+-3.43136 -0.316796 0
+-6.72025 -0.193063 0
+-7.04954 0.454924 0
+-7.31096 2.10807 0
+-7.20728 4.50399 0
+-6.50547 6.59319 0
+-5.21673 7.2845 0
+-3.63294 6.18393 0
+-2.19366 3.799 0
+-1.27292 1.15629 0
+-1.01952 -0.813367 0
+-1.32938 -1.70419 0
+-1.93732 -1.67921 0
+-2.55745 -1.20228 0
+-2.99529 -0.698512 0
+-3.18755 -0.368221 0
+-3.17262 -0.212474 0
+-3.03029 -0.159997 0
+-2.83448 -0.157376 0
+-2.6367 -0.181534 0
+-2.46864 -0.219992 0
+-2.3461 -0.260702 0
+-2.27058 -0.29078 0
+-2.23331 -0.295725 0
+-2.22177 -0.265773 0
+-2.22335 -0.208272 0
+-2.22615 -0.14679 0
+-2.22142 -0.100953 0
+-2.20723 -0.0710366 0
+-2.18772 -0.0469278 0
+-2.16761 -0.0256174 0
+-2.14876 -0.0115007 0
+-2.1322 -0.00415189 0
+-2.12068 0.00295464 0
+-2.11664 0.0116194 0
+-2.11875 0.0171711 0
+-2.12266 0.0207005 0
+-2.1245 0.0349363 0
+-2.12213 0.0733858 0
+-2.11461 0.139543 0
+-2.10427 0.230506 0
+-2.1008 0.343496 0
+-2.12057 0.471075 0
+-2.17905 0.595296 0
+-2.28216 0.697527 0
+-2.42277 0.775073 0
+-2.58153 0.840816 0
+-2.73002 0.904452 0
+-2.83774 0.958752 0
+-2.8838 0.984237 0
+-2.86703 0.961502 0
+-2.80624 0.880403 0
+-2.73052 0.749955 0
+-2.66746 0.607743 0
+-2.63532 0.51093 0
+-2.63963 0.500352 0
+-2.67443 0.561909 0
+-2.72724 0.617682 0
+-2.77211 0.548779 0
+-2.73211 0.259378 0
+-2.69697 0.0850604 0
+-2.68562 0.0180275 0
+-2.69083 -0.0151959 0
+-2.71634 -0.0784842 0
+-2.74115 -0.240961 0
+-2.68096 -0.498867 0
+-2.61278 -0.528236 0
+-2.56419 -0.430367 0
+-2.55164 -0.329748 0
+-2.58486 -0.314929 0
+-2.65812 -0.412832 0
+-2.74868 -0.583596 0
+-2.82391 -0.751813 0
+-2.85179 -0.856911 0
+-2.81143 -0.883531 0
+-2.70166 -0.8535 0
+-2.54323 -0.797933 0
+-2.37088 -0.736798 0
+-2.21903 -0.673565 0
+-2.10968 -0.598736 0
+-2.04844 -0.499675 0
+-2.0271 -0.37477 0
+-2.02917 -0.240731 0
+-2.03689 -0.123176 0
+-2.03816 -0.0391244 0
+-2.02974 0.00999639 0
+-2.01469 0.031062 0
+-1.99742 0.0313881 0
+-1.98106 0.0187866 0
+-1.96766 0.00238736 0
+-1.95821 -0.0121391 0
+-1.95155 -0.0261421 0
+-1.94435 -0.0431757 0
+-1.93294 -0.0622084 0
+-1.91427 -0.0786103 0
+-1.8854 -0.089858 0
+-1.84383 -0.0964572 0
+-1.79027 -0.0992489 0
+-1.73115 -0.101967 0
+-1.67739 -0.117708 0
+-1.64033 -0.167444 0
+-1.62814 -0.268057 0
+-1.64328 -0.423567 0
+-1.67911 -0.630312 0
+-1.71449 -0.888122 0
+-1.7082 -1.20138 0
+-1.59632 -1.56546 0
+-1.29795 -1.94974 0
+-0.737662 -2.29653 0
+0.111419 -2.55727 0
+1.17768 -2.77126 0
+2.26818 -3.1464 0
+3.10707 -4.05046 0
+3.4388 -5.83746 0
+3.15355 -8.55117 0
+2.363 -11.6936 0
+1.36714 -14.2818 0
+0.510976 -15.262 0
+0.00297024 -14.0792 0
+-0.195975 -11.0276 0
+-0.336796 -7.08731 0
+-0.707819 -3.30157 0
+-0.342876 -0.0966052 0
+-0.315565 0.750961 0
+-0.315565 1.37427 0
+-1.44765 -0.209613 0
+-2.8281 -0.223335 0
+-5.45181 -0.0684468 0
+-5.55981 0.562931 0
+-5.47656 2.02481 0
+-4.96767 3.9951 0
+-3.93185 5.55738 0
+-2.52492 5.87757 0
+-1.11746 4.77647 0
+-0.109128 2.79067 0
+0.272663 0.774501 0
+0.0611692 -0.601873 0
+-0.507918 -1.1351 0
+-1.13858 -1.04855 0
+-1.60705 -0.733805 0
+-1.82403 -0.481532 0
+-1.81919 -0.373061 0
+-1.68017 -0.351499 0
+-1.49154 -0.348618 0
+-1.30602 -0.342902 0
+-1.14855 -0.339 0
+-1.03065 -0.337895 0
+-0.955911 -0.335441 0
+-0.918733 -0.327958 0
+-0.90659 -0.307868 0
+-0.906523 -0.26584 0
+-0.908691 -0.206104 0
+-0.905767 -0.149714 0
+-0.89354 -0.11318 0
+-0.873339 -0.091238 0
+-0.850789 -0.0694776 0
+-0.83025 -0.0461565 0
+-0.811971 -0.0297794 0
+-0.795463 -0.0206599 0
+-0.782991 -0.00951743 0
+-0.777478 0.00610612 0
+-0.778566 0.0182593 0
+-0.78313 0.0252646 0
+-0.788563 0.0403694 0
+-0.793081 0.0779042 0
+-0.793916 0.140378 0
+-0.789246 0.225836 0
+-0.783573 0.337822 0
+-0.789061 0.476563 0
+-0.819537 0.625772 0
+-0.882809 0.760799 0
+-0.97709 0.869354 0
+-1.0905 0.954224 0
+-1.20168 1.01564 0
+-1.2847 1.04177 0
+-1.32025 1.01978 0
+-1.30661 0.947868 0
+-1.26057 0.834361 0
+-1.20734 0.696722 0
+-1.16796 0.568368 0
+-1.15086 0.493826 0
+-1.14822 0.497712 0
+-1.13884 0.552529 0
+-1.10307 0.581914 0
+-1.04175 0.487453 0
+-0.869281 0.0869123 0
+-0.794969 0.0107482 0
+-0.778004 0.00106326 0
+-0.792205 -0.000995675 0
+-0.860413 -0.0102756 0
+-1.01839 -0.0829878 0
+-1.06404 -0.453211 0
+-1.08109 -0.511189 0
+-1.07151 -0.439947 0
+-1.05981 -0.341449 0
+-1.072 -0.30274 0
+-1.11677 -0.36806 0
+-1.18188 -0.518484 0
+-1.24131 -0.692384 0
+-1.26645 -0.831776 0
+-1.23762 -0.912357 0
+-1.15341 -0.937714 0
+-1.03269 -0.918648 0
+-0.906069 -0.863422 0
+-0.801189 -0.778445 0
+-0.732169 -0.667756 0
+-0.698366 -0.533479 0
+-0.689317 -0.383819 0
+-0.690701 -0.239347 0
+-0.68987 -0.124007 0
+-0.680521 -0.0484732 0
+-0.663868 -0.00665686 0
+-0.644924 0.0121186 0
+-0.627564 0.0140282 0
+-0.613072 0.00429411 0
+-0.601777 -0.00890708 0
+-0.59383 -0.0200862 0
+-0.588151 -0.031821 0
+-0.582266 -0.0490612 0
+-0.573812 -0.0706618 0
+-0.561063 -0.0913596 0
+-0.541424 -0.109497 0
+-0.510963 -0.126919 0
+-0.467155 -0.143057 0
+-0.412178 -0.156944 0
+-0.352947 -0.176939 0
+-0.298319 -0.222072 0
+-0.25657 -0.309806 0
+-0.233926 -0.446211 0
+-0.232406 -0.631833 0
+-0.24622 -0.874307 0
+-0.257104 -1.19049 0
+-0.227979 -1.59458 0
+-0.0966586 -2.08106 0
+0.220534 -2.61373 0
+0.801198 -3.13794 0
+1.66411 -3.63418 0
+2.71593 -4.19822 0
+3.73876 -5.07329 0
+4.44803 -6.54674 0
+4.60947 -8.71261 0
+4.15838 -11.2425 0
+3.24501 -13.3684 0
+2.16161 -14.1785 0
+1.18184 -13.0994 0
+0.412649 -10.2584 0
+-0.236155 -6.43851 0
+-0.930425 -2.6073 0
+-0.583935 0.670574 0
+-0.479533 1.24153 0
+-0.479533 1.57968 0
+-1.22566 -0.1722 0
+-2.36641 -0.171482 0
+-4.50597 -0.0199329 0
+-4.48206 0.539018 0
+-4.22368 1.76644 0
+-3.56826 3.33968 0
+-2.51149 4.50061 0
+-1.27407 4.64015 0
+-0.211796 3.71419 0
+0.37462 2.20425 0
+0.3955 0.753621 0
+-0.00686619 -0.199506 0
+-0.565396 -0.576573 0
+-1.03423 -0.57971 0
+-1.28395 -0.484083 0
+-1.31316 -0.452325 0
+-1.19917 -0.487056 0
+-1.03251 -0.518157 0
+-0.873116 -0.50801 0
+-0.743217 -0.472802 0
+-0.645073 -0.437144 0
+-0.578146 -0.404821 0
+-0.541554 -0.372034 0
+-0.529033 -0.340478 0
+-0.529281 -0.30762 0
+-0.531972 -0.263148 0
+-0.531099 -0.206977 0
+-0.523561 -0.157251 0
+-0.508453 -0.128288 0
+-0.488496 -0.111195 0
+-0.468871 -0.0891023 0
+-0.452591 -0.0624365 0
+-0.438555 -0.0438161 0
+-0.425236 -0.0339783 0
+-0.414206 -0.0205481 0
+-0.408202 0.000102845 0
+-0.407447 0.017504 0
+-0.410098 0.0279154 0
+-0.415081 0.0453527 0
+-0.421718 0.0845408 0
+-0.427134 0.145794 0
+-0.427483 0.226186 0
+-0.423214 0.333554 0
+-0.421479 0.474828 0
+-0.432185 0.636478 0
+-0.462311 0.790925 0
+-0.513149 0.920191 0
+-0.579118 1.02019 0
+-0.646555 1.08308 0
+-0.696212 1.09143 0
+-0.71238 1.03595 0
+-0.692759 0.928247 0
+-0.649757 0.791359 0
+-0.601996 0.648961 0
+-0.563547 0.529919 0
+-0.536812 0.46709 0
+-0.508793 0.469693 0
+-0.449925 0.493662 0
+-0.319121 0.451109 0
+-0.0976998 0.266032 0
+-0.0232821 0.0124946 0
+-0.0135257 0.000991881 0
+-0.0125391 7.65678e-05 0
+-0.0134655 -6.91901e-05 0
+-0.0228084 -0.000932742 0
+-0.093901 -0.0118952 0
+-0.298631 -0.248481 0
+-0.408647 -0.401174 0
+-0.446699 -0.401894 0
+-0.458124 -0.330025 0
+-0.476835 -0.284029 0
+-0.517024 -0.32787 0
+-0.573295 -0.462213 0
+-0.627324 -0.638355 0
+-0.657355 -0.801744 0
+-0.64806 -0.921652 0
+-0.598529 -0.987244 0
+-0.523866 -0.993311 0
+-0.447434 -0.939855 0
+-0.388419 -0.83746 0
+-0.353993 -0.702182 0
+-0.340244 -0.547227 0
+-0.337814 -0.386249 0
+-0.336884 -0.240277 0
+-0.33053 -0.130361 0
+-0.31707 -0.0619331 0
+-0.299869 -0.0238579 0
+-0.283711 -0.00404024 0
+-0.270913 0.00123087 0
+-0.261032 -0.005587 0
+-0.253199 -0.0167399 0
+-0.247157 -0.0261281 0
+-0.242203 -0.036775 0
+-0.236841 -0.0544237 0
+-0.230024 -0.0774789 0
+-0.2214 -0.0999829 0
+-0.20945 -0.121447 0
+-0.19043 -0.145939 0
+-0.160513 -0.172974 0
+-0.118973 -0.198485 0
+-0.0689336 -0.226978 0
+-0.0157381 -0.275267 0
+0.034657 -0.360201 0
+0.0766394 -0.488193 0
+0.106189 -0.661383 0
+0.122181 -0.890298 0
+0.127715 -1.19603 0
+0.134849 -1.60172 0
+0.175533 -2.12174 0
+0.311808 -2.75 0
+0.627895 -3.45402 0
+1.19146 -4.19774 0
+1.99432 -5.00108 0
+2.90807 -5.98705 0
+3.69565 -7.33431 0
+4.0943 -9.11125 0
+3.93843 -11.0866 0
+3.25069 -12.6807 0
+2.23321 -13.1611 0
+1.15202 -12.0182 0
+0.188434 -9.29479 0
+-0.633812 -5.61626 0
+-1.38414 -1.85697 0
+-0.87197 1.34255 0
+-0.619546 1.62205 0
+-0.619546 1.71467 0
+-1.05636 -0.149748 0
+-2.02331 -0.145229 0
+-3.82521 -0.0108341 0
+-3.74913 0.462936 0
+-3.45736 1.47467 0
+-2.8496 2.73192 0
+-1.97086 3.62187 0
+-1.03418 3.70346 0
+-0.319613 2.99963 0
+-0.017775 1.90242 0
+-0.130585 0.866431 0
+-0.492876 0.162785 0
+-0.883918 -0.185532 0
+-1.14252 -0.321108 0
+-1.21873 -0.407871 0
+-1.15427 -0.516786 0
+-1.02713 -0.614203 0
+-0.901359 -0.643924 0
+-0.805313 -0.604056 0
+-0.738912 -0.539202 0
+-0.693692 -0.482365 0
+-0.665689 -0.432824 0
+-0.654156 -0.383567 0
+-0.655118 -0.339516 0
+-0.660743 -0.301996 0
+-0.664172 -0.259719 0
+-0.662394 -0.208756 0
+-0.65495 -0.164694 0
+-0.642687 -0.140552 0
+-0.62825 -0.125632 0
+-0.61524 -0.102112 0
+-0.605235 -0.0724416 0
+-0.596781 -0.0522697 0
+-0.58828 -0.0424793 0
+-0.580584 -0.0282445 0
+-0.575612 -0.00486895 0
+-0.573723 0.0156147 0
+-0.57407 0.0282633 0
+-0.576543 0.0478251 0
+-0.58114 0.0891382 0
+-0.58561 0.150264 0
+-0.585991 0.226567 0
+-0.580564 0.328126 0
+-0.572293 0.466557 0
+-0.566949 0.631135 0
+-0.569743 0.793719 0
+-0.583405 0.933853 0
+-0.606656 1.04344 0
+-0.632236 1.10866 0
+-0.647717 1.10691 0
+-0.641596 1.02983 0
+-0.610452 0.897103 0
+-0.560251 0.741158 0
+-0.50083 0.58954 0
+-0.439115 0.468205 0
+-0.37555 0.403525 0
+-0.303785 0.397929 0
+-0.213931 0.403808 0
+-0.104428 0.341607 0
+-0.00944427 0.171048 0
+-0.0011359 0.00418624 0
+-0.00027458 0.0001305 0
+-0.000204053 5.88729e-06 0
+-0.000268524 -4.87412e-06 0
+-0.00107639 -0.00012494 0
+-0.00885026 -0.00412137 0
+-0.0950614 -0.16227 0
+-0.190183 -0.306052 0
+-0.264411 -0.327667 0
+-0.323112 -0.271324 0
+-0.379546 -0.227595 0
+-0.441146 -0.26627 0
+-0.505579 -0.39778 0
+-0.563053 -0.580881 0
+-0.601532 -0.763265 0
+-0.612897 -0.910287 0
+-0.598164 -1.00198 0
+-0.568284 -1.02319 0
+-0.538493 -0.969645 0
+-0.519815 -0.856138 0
+-0.514445 -0.707552 0
+-0.517655 -0.544018 0
+-0.522625 -0.381278 0
+-0.523927 -0.238974 0
+-0.519058 -0.13523 0
+-0.509007 -0.0719841 0
+-0.497377 -0.0354884 0
+-0.487673 -0.0137437 0
+-0.480932 -0.00551079 0
+-0.476067 -0.0104519 0
+-0.471957 -0.0208503 0
+-0.468299 -0.0297855 0
+-0.46478 -0.0402945 0
+-0.460719 -0.0584847 0
+-0.455917 -0.0822805 0
+-0.450763 -0.105137 0
+-0.44468 -0.127529 0
+-0.435022 -0.155597 0
+-0.418324 -0.189672 0
+-0.392667 -0.224142 0
+-0.358707 -0.260937 0
+-0.319099 -0.314876 0
+-0.27754 -0.40176 0
+-0.237784 -0.527949 0
+-0.202579 -0.696587 0
+-0.173802 -0.919076 0
+-0.154049 -1.21578 0
+-0.1456 -1.61017 0
+-0.141315 -2.12602 0
+-0.109957 -2.78136 0
+0.00970752 -3.57369 0
+0.289463 -4.4775 0
+0.765075 -5.47669 0
+1.38502 -6.60699 0
+1.99274 -7.94203 0
+2.3712 -9.48971 0
+2.34115 -11.0566 0
+1.85941 -12.199 0
+1.04788 -12.3495 0
+0.123777 -11.0941 0
+-0.724913 -8.4461 0
+-1.42615 -4.91502 0
+-2.00335 -1.27978 0
+-1.17861 1.7968 0
+-0.732574 1.85731 0
+-0.732574 1.78618 0
+-0.927693 -0.13723 0
+-1.76903 -0.133597 0
+-3.33524 -0.0172877 0
+-3.25725 0.384941 0
+-3.01574 1.23316 0
+-2.55625 2.27243 0
+-1.93352 2.99914 0
+-1.30748 3.07742 0
+-0.859472 2.55162 0
+-0.689393 1.73234 0
+-0.767669 0.944707 0
+-0.969591 0.364707 0
+-1.15743 0.00231183 0
+-1.2497 -0.228843 0
+-1.23995 -0.417622 0
+-1.17041 -0.586321 0
+-1.09113 -0.693489 0
+-1.0323 -0.702746 0
+-0.999429 -0.636931 0
+-0.984208 -0.554423 0
+-0.977991 -0.488582 0
+-0.977642 -0.433173 0
+-0.983019 -0.378189 0
+-0.992475 -0.33006 0
+-1.0021 -0.29237 0
+-1.0083 -0.253517 0
+-1.00976 -0.207301 0
+-1.00707 -0.16738 0
+-1.00175 -0.145878 0
+-0.995679 -0.131699 0
+-0.990564 -0.107227 0
+-0.986906 -0.0760994 0
+-0.983909 -0.0552667 0
+-0.980727 -0.0456621 0
+-0.97751 -0.0314612 0
+-0.974951 -0.00742765 0
+-0.973327 0.0139903 0
+-0.972555 0.0274918 0
+-0.972708 0.0479775 0
+-0.973477 0.0899071 0
+-0.973049 0.149836 0
+-0.968347 0.221865 0
+-0.956999 0.316778 0
+-0.9391 0.448658 0
+-0.917234 0.609269 0
+-0.895233 0.771718 0
+-0.876611 0.915231 0
+-0.862701 1.02953 0
+-0.850938 1.09689 0
+-0.835021 1.09099 0
+-0.807774 1.00258 0
+-0.764556 0.853885 0
+-0.704122 0.680724 0
+-0.62669 0.512108 0
+-0.532018 0.373533 0
+-0.42 0.291507 0
+-0.293889 0.271818 0
+-0.165002 0.27492 0
+-0.0569592 0.233564 0
+-0.0016074 0.115697 0
+-9.41474e-05 0.00267299 0
+-1.12894e-05 4.76242e-05 0
+-5.67021e-06 2.30213e-07 0
+-1.06888e-05 9.95082e-08 0
+-8.74353e-05 -4.82331e-05 0
+-0.00151767 -0.00269113 0
+-0.0542344 -0.109553 0
+-0.1573 -0.202987 0
+-0.28048 -0.204487 0
+-0.401678 -0.150126 0
+-0.51088 -0.118393 0
+-0.605282 -0.171867 0
+-0.684354 -0.318708 0
+-0.747327 -0.517909 0
+-0.793193 -0.717399 0
+-0.822407 -0.881074 0
+-0.838717 -0.985666 0
+-0.849077 -1.01283 0
+-0.860781 -0.957941 0
+-0.877727 -0.839193 0
+-0.898878 -0.686401 0
+-0.919974 -0.522921 0
+-0.936619 -0.364633 0
+-0.946408 -0.229186 0
+-0.949461 -0.132177 0
+-0.947908 -0.0735371 0
+-0.944688 -0.0387088 0
+-0.942047 -0.0163846 0
+-0.940646 -0.00691173 0
+-0.939961 -0.0111366 0
+-0.939355 -0.0214561 0
+-0.938588 -0.0305528 0
+-0.937577 -0.0413053 0
+-0.936255 -0.0598072 0
+-0.934821 -0.0837143 0
+-0.933681 -0.106277 0
+-0.932684 -0.128526 0
+-0.930467 -0.157814 0
+-0.924822 -0.195317 0
+-0.91387 -0.235094 0
+-0.897106 -0.277701 0
+-0.875751 -0.336231 0
+-0.852246 -0.425264 0
+-0.829013 -0.551183 0
+-0.807305 -0.718295 0
+-0.78783 -0.938551 0
+-0.773448 -1.23016 0
+-0.770726 -1.61289 0
+-0.785313 -2.11144 0
+-0.810428 -2.75624 0
+-0.816533 -3.56758 0
+-0.755637 -4.53839 0
+-0.587814 -5.64451 0
+-0.320554 -6.87425 0
+-0.0341851 -8.2284 0
+0.134761 -9.65865 0
+0.0568174 -10.9786 0
+-0.313338 -11.8288 0
+-0.900089 -11.7628 0
+-1.54431 -10.4499 0
+-2.09446 -7.89595 0
+-2.48493 -4.52454 0
+-2.74093 -1.02379 0
+-1.50141 1.96227 0
+-0.83175 1.93246 0
+-0.83175 1.80284 0
+-0.828766 -0.131525 0
+-1.57716 -0.131138 0
+-2.97187 -0.0294798 0
+-2.91018 0.323253 0
+-2.74349 1.06647 0
+-2.44856 1.9775 0
+-2.06897 2.61955 0
+-1.69785 2.7063 0
+-1.42413 2.2779 0
+-1.28513 1.59333 0
+-1.25684 0.91642 0
+-1.28087 0.388742 0
+-1.3033 0.0247418 0
+-1.29982 -0.232328 0
+-1.27635 -0.441086 0
+-1.25217 -0.610502 0
+-1.24168 -0.703983 0
+-1.24729 -0.697142 0
+-1.26358 -0.620638 0
+-1.2844 -0.533606 0
+-1.30603 -0.466951 0
+-1.32671 -0.412493 0
+-1.34563 -0.359263 0
+-1.36253 -0.31316 0
+-1.37707 -0.277832 0
+-1.38844 -0.242149 0
+-1.39607 -0.19967 0
+-1.40068 -0.162765 0
+-1.40392 -0.14264 0
+-1.40684 -0.128779 0
+-1.40939 -0.104678 0
+-1.41139 -0.074103 0
+-1.41321 -0.0534394 0
+-1.41516 -0.043721 0
+-1.41673 -0.0298857 0
+-1.41735 -0.00681016 0
+-1.41721 0.0138546 0
+-1.4169 0.0271782 0
+-1.41614 0.0472215 0
+-1.41354 0.0873015 0
+-1.40719 0.143489 0
+-1.39505 0.209723 0
+-1.37482 0.29655 0
+-1.34478 0.418618 0
+-1.30539 0.569881 0
+-1.25979 0.726117 0
+-1.2121 0.867534 0
+-1.16518 0.982619 0
+-1.11989 1.0516 0
+-1.07535 1.04645 0
+-1.02893 0.956169 0
+-0.975628 0.80058 0
+-0.908041 0.613136 0
+-0.817669 0.421736 0
+-0.697268 0.253131 0
+-0.544739 0.138978 0
+-0.368869 0.095948 0
+-0.194483 0.100534 0
+-0.0605914 0.0996726 0
+-0.00137982 0.056485 0
+-8.54795e-05 0.00137865 0
+-1.10987e-05 -2.67193e-05 0
+-3.95743e-06 -6.86493e-06 0
+-1.1698e-05 7.87936e-06 0
+-9.21922e-05 3.22791e-05 0
+-0.00146954 -0.00131378 0
+-0.0633161 -0.0477068 0
+-0.202185 -0.064118 0
+-0.382278 -0.0243932 0
+-0.56306 0.0306564 0
+-0.718405 0.0369512 0
+-0.839075 -0.0511966 0
+-0.927807 -0.229977 0
+-0.992855 -0.452861 0
+-1.04351 -0.666742 0
+-1.08796 -0.836628 0
+-1.1321 -0.941521 0
+-1.1788 -0.966132 0
+-1.22792 -0.908819 0
+-1.2773 -0.78982 0
+-1.32375 -0.63995 0
+-1.36391 -0.482764 0
+-1.3952 -0.33334 0
+-1.41699 -0.207398 0
+-1.43078 -0.118387 0
+-1.4391 -0.0652102 0
+-1.44416 -0.0336527 0
+-1.4474 -0.0131418 0
+-1.44989 -0.00442761 0
+-1.45233 -0.00869303 0
+-1.45488 -0.0189094 0
+-1.45729 -0.0281437 0
+-1.45954 -0.0390513 0
+-1.46204 -0.0573119 0
+-1.46514 -0.0806129 0
+-1.46885 -0.102561 0
+-1.47301 -0.12437 0
+-1.47732 -0.153502 0
+-1.48103 -0.191613 0
+-1.48285 -0.233268 0
+-1.48197 -0.278578 0
+-1.47908 -0.339122 0
+-1.47617 -0.428182 0
+-1.47507 -0.552282 0
+-1.47646 -0.716907 0
+-1.48056 -0.934447 0
+-1.48941 -1.22131 0
+-1.50883 -1.59347 0
+-1.54765 -2.07262 0
+-1.61254 -2.69135 0
+-1.70032 -3.4798 0
+-1.79438 -4.44433 0
+-1.87312 -5.56578 0
+-1.92975 -6.81761 0
+-1.99031 -8.16785 0
+-2.11049 -9.53847 0
+-2.34421 -10.7449 0
+-2.69931 -11.4737 0
+-3.11323 -11.3489 0
+-3.47377 -10.0894 0
+-3.67893 -7.6908 0
+-3.69626 -4.50721 0
+-3.579 -1.14105 0
+-1.86056 1.81441 0
+-0.941683 1.84221 0
+-0.941683 1.76704 0
+-0.751202 -0.130722 0
+-1.42867 -0.136073 0
+-2.69155 -0.0474746 0
+-2.64092 0.272617 0
+-2.53091 0.956468 0
+-2.36018 1.80677 0
+-2.15915 2.41853 0
+-1.966 2.51315 0
+-1.80015 2.11205 0
+-1.65895 1.45213 0
+-1.53388 0.791355 0
+-1.42512 0.279982 0
+-1.3424 -0.0579846 0
+-1.29691 -0.277812 0
+-1.29322 -0.444774 0
+-1.32523 -0.578499 0
+-1.37792 -0.651293 0
+-1.43498 -0.640078 0
+-1.48712 -0.568496 0
+-1.53351 -0.487221 0
+-1.57585 -0.424604 0
+-1.61333 -0.375014 0
+-1.6439 -0.328692 0
+-1.66796 -0.289101 0
+-1.68795 -0.257849 0
+-1.70519 -0.224901 0
+-1.71953 -0.18533 0
+-1.73156 -0.150739 0
+-1.74292 -0.131282 0
+-1.75397 -0.117728 0
+-1.76327 -0.0953792 0
+-1.77016 -0.0672137 0
+-1.77613 -0.0474676 0
+-1.78252 -0.0373261 0
+-1.78842 -0.0239878 0
+-1.79224 -0.00298885 0
+-1.79422 0.0158287 0
+-1.79546 0.0284236 0
+-1.79524 0.0469961 0
+-1.79086 0.0829236 0
+-1.78004 0.13267 0
+-1.76145 0.191136 0
+-1.733 0.2681 0
+-1.69173 0.377349 0
+-1.63662 0.514763 0
+-1.57027 0.65977 0
+-1.49709 0.794352 0
+-1.42084 0.906377 0
+-1.34504 0.97579 0
+-1.27371 0.975132 0
+-1.20911 0.891565 0
+-1.1475 0.738968 0
+-1.0781 0.543742 0
+-0.986393 0.330026 0
+-0.859081 0.125819 0
+-0.689609 -0.0304935 0
+-0.485024 -0.108637 0
+-0.272104 -0.112386 0
+-0.09612 -0.0763113 0
+-0.00491022 -0.0347248 0
+-0.000580653 -0.00295091 0
+-7.32515e-05 -0.000534064 0
+-1.2974e-05 -6.6991e-05 0
+-7.9308e-05 7.43634e-05 0
+-0.000640172 0.000593197 0
+-0.00550422 0.00355027 0
+-0.105486 0.0522753 0
+-0.295851 0.126247 0
+-0.524398 0.204154 0
+-0.742046 0.248304 0
+-0.918649 0.213554 0
+-1.04608 0.0762298 0
+-1.13277 -0.143279 0
+-1.19489 -0.390739 0
+-1.24917 -0.612465 0
+-1.30853 -0.777267 0
+-1.37911 -0.870947 0
+-1.45921 -0.886023 0
+-1.542 -0.826037 0
+-1.6202 -0.711619 0
+-1.68912 -0.571027 0
+-1.74637 -0.425512 0
+-1.79094 -0.28877 0
+-1.82352 -0.174824 0
+-1.84659 -0.0953123 0
+-1.86299 -0.0488104 0
+-1.8744 -0.0222433 0
+-1.88185 -0.00568736 0
+-1.887 0.00071884 0
+-1.89178 -0.00391397 0
+-1.89704 -0.0136481 0
+-1.9025 -0.0226858 0
+-1.90813 -0.0334217 0
+-1.91468 -0.0507626 0
+-1.9226 -0.0726859 0
+-1.93148 -0.0936839 0
+-1.94096 -0.114892 0
+-1.95152 -0.142941 0
+-1.96361 -0.179525 0
+-1.97665 -0.220231 0
+-1.98985 -0.265375 0
+-2.00377 -0.325198 0
+-2.02027 -0.41169 0
+-2.04099 -0.531555 0
+-2.06679 -0.691113 0
+-2.09854 -0.902689 0
+-2.13845 -1.1814 0
+-2.19095 -1.54096 0
+-2.26409 -1.99949 0
+-2.36999 -2.58545 0
+-2.52201 -3.32779 0
+-2.72885 -4.23749 0
+-2.99073 -5.3039 0
+-3.30188 -6.50647 0
+-3.6563 -7.81342 0
+-4.04853 -9.14625 0
+-4.46443 -10.329 0
+-4.86686 -11.0713 0
+-5.18874 -11.027 0
+-5.3468 -9.93131 0
+-5.27743 -7.76017 0
+-4.97758 -4.80706 0
+-4.52626 -1.59237 0
+-2.28986 1.36821 0
+-1.09283 1.58477 0
+-1.09283 1.67141 0
+-0.688854 -0.133181 0
+-1.31119 -0.147678 0
+-2.46964 -0.0750429 0
+-2.41427 0.217253 0
+-2.32254 0.864737 0
+-2.20974 1.69396 0
+-2.1033 2.31209 0
+-2.01272 2.42257 0
+-1.91746 2.01679 0
+-1.78917 1.32384 0
+-1.62427 0.626456 0
+-1.45329 0.109001 0
+-1.32112 -0.190152 0
+-1.25988 -0.339056 0
+-1.27473 -0.429924 0
+-1.34613 -0.507096 0
+-1.44241 -0.555016 0
+-1.53595 -0.546528 0
+-1.61461 -0.489842 0
+-1.68037 -0.421458 0
+-1.7383 -0.366675 0
+-1.78844 -0.324876 0
+-1.82824 -0.288891 0
+-1.85853 -0.25881 0
+-1.88336 -0.233016 0
+-1.90543 -0.202839 0
+-1.92496 -0.165797 0
+-1.94267 -0.133033 0
+-1.96027 -0.113673 0
+-1.97767 -0.100334 0
+-1.99242 -0.0806276 0
+-2.00345 -0.0561839 0
+-2.01286 -0.0380613 0
+-2.02266 -0.027521 0
+-2.0318 -0.0148471 0
+-2.03823 0.00344079 0
+-2.04227 0.0198627 0
+-2.04535 0.0315042 0
+-2.04639 0.048035 0
+-2.04185 0.0783862 0
+-2.02912 0.119945 0
+-2.00726 0.169276 0
+-1.97421 0.235049 0
+-1.92607 0.329205 0
+-1.86048 0.449175 0
+-1.77916 0.578451 0
+-1.68614 0.701333 0
+-1.58564 0.805872 0
+-1.48331 0.873467 0
+-1.38751 0.879332 0
+-1.30536 0.80941 0
+-1.23624 0.669851 0
+-1.16968 0.477184 0
+-1.08923 0.249574 0
+-0.978137 0.0147245 0
+-0.824665 -0.183966 0
+-0.628593 -0.304708 0
+-0.407152 -0.333827 0
+-0.194227 -0.289237 0
+-0.0347505 -0.194201 0
+-0.0056405 -0.0320609 0
+-0.00106018 -0.00511438 0
+-0.00038464 -0.000742532 0
+-0.00112037 0.000810098 0
+-0.00611416 0.00558698 0
+-0.0385492 0.0359853 0
+-0.214716 0.228442 0
+-0.44843 0.359961 0
+-0.690686 0.446409 0
+-0.903352 0.460971 0
+-1.06485 0.375051 0
+-1.1742 0.185583 0
+-1.24614 -0.0713376 0
+-1.30167 -0.335208 0
+-1.36038 -0.553759 0
+-1.43566 -0.701984 0
+-1.53134 -0.775274 0
+-1.64089 -0.776474 0
+-1.75186 -0.715067 0
+-1.85305 -0.610422 0
+-1.93867 -0.485407 0
+-2.0073 -0.356882 0
+-2.05961 -0.236461 0
+-2.09786 -0.136574 0
+-2.12572 -0.0674491 0
+-2.14649 -0.0280438 0
+-2.16159 -0.0071439 0
+-2.17173 0.00444685 0
+-2.17879 0.00778329 0
+-2.18539 0.00268861 0
+-2.1928 -0.00623907 0
+-2.20074 -0.0147485 0
+-2.20921 -0.0249458 0
+-2.21922 -0.0407579 0
+-2.2313 -0.0606054 0
+-2.24481 -0.0801778 0
+-2.25932 -0.100382 0
+-2.27581 -0.126446 0
+-2.2955 -0.159831 0
+-2.31831 -0.197428 0
+-2.34351 -0.240172 0
+-2.37157 -0.297137 0
+-2.40421 -0.379056 0
+-2.44307 -0.492688 0
+-2.48958 -0.644607 0
+-2.546 -0.846267 0
+-2.61589 -1.11151 0
+-2.70392 -1.45293 0
+-2.81773 -1.88568 0
+-2.97148 -2.43171 0
+-3.18634 -3.11292 0
+-3.48439 -3.93944 0
+-3.87865 -4.90964 0
+-4.36551 -6.0196 0
+-4.92228 -7.25665 0
+-5.5088 -8.55973 0
+-6.0711 -9.7667 0
+-6.54493 -10.5974 0
+-6.85898 -10.7129 0
+-6.94317 -9.84712 0
+-6.74847 -7.95487 0
+-6.27599 -5.27954 0
+-5.60437 -2.264 0
+-2.82358 0.67482 0
+-1.31463 1.16348 0
+-1.31463 1.50068 0
+-0.636799 -0.136878 0
+-1.21602 -0.16417 0
+-2.29229 -0.114169 0
+-2.21801 0.14298 0
+-2.10658 0.753299 0
+-1.98542 1.57281 0
+-1.8919 2.21857 0
+-1.83616 2.36683 0
+-1.78782 1.96845 0
+-1.70349 1.23951 0
+-1.56756 0.490527 0
+-1.40717 -0.05139 0
+-1.27267 -0.324652 0
+-1.20605 -0.40567 0
+-1.22107 -0.414908 0
+-1.30167 -0.426498 0
+-1.41432 -0.442359 0
+-1.52684 -0.434006 0
+-1.62297 -0.393716 0
+-1.70287 -0.341561 0
+-1.77169 -0.297854 0
+-1.83022 -0.266344 0
+-1.87649 -0.242625 0
+-1.91167 -0.223624 0
+-1.94019 -0.204497 0
+-1.96518 -0.177849 0
+-1.9874 -0.143577 0
+-2.00806 -0.112376 0
+-2.02914 -0.0925904 0
+-2.05035 -0.0791216 0
+-2.06877 -0.06221 0
+-2.08291 -0.0420425 0
+-2.09483 -0.026144 0
+-2.10672 -0.0156349 0
+-2.11764 -0.00392025 0
+-2.12563 0.0114274 0
+-2.13107 0.0253047 0
+-2.13545 0.0358859 0
+-2.13759 0.0501672 0
+-2.13379 0.0745886 0
+-2.12147 0.107625 0
+-2.09981 0.147614 0
+-2.06661 0.20185 0
+-2.01723 0.279828 0
+-1.94804 0.379984 0
+-1.85933 0.489742 0
+-1.75416 0.596158 0
+-1.63681 0.68853 0
+-1.51463 0.751284 0
+-1.39918 0.763878 0
+-1.30175 0.711983 0
+-1.226 0.594096 0
+-1.1651 0.416289 0
+-1.10512 0.189594 0
+-1.02974 -0.0606522 0
+-0.924435 -0.289275 0
+-0.782482 -0.446662 0
+-0.612349 -0.50396 0
+-0.439591 -0.461996 0
+-0.294952 -0.338839 0
+-0.162872 -0.164141 0
+-0.0977471 -0.070239 0
+-0.079505 -0.0189847 0
+-0.100511 0.0218158 0
+-0.171738 0.0768147 0
+-0.318312 0.182559 0
+-0.478621 0.388751 0
+-0.670101 0.551441 0
+-0.859193 0.635501 0
+-1.01549 0.617266 0
+-1.12571 0.485275 0
+-1.19569 0.255562 0
+-1.24379 -0.0232373 0
+-1.2913 -0.287701 0
+-1.35555 -0.489506 0
+-1.44626 -0.611277 0
+-1.56291 -0.658625 0
+-1.69462 -0.644763 0
+-1.82518 -0.584509 0
+-1.94095 -0.494647 0
+-2.03541 -0.390949 0
+-2.10793 -0.284362 0
+-2.16087 -0.183524 0
+-2.19835 -0.0990881 0
+-2.22551 -0.0402892 0
+-2.24634 -0.00721244 0
+-2.26227 0.00878554 0
+-2.27365 0.0158229 0
+-2.28206 0.0161973 0
+-2.29003 0.0106538 0
+-2.29886 0.0025886 0
+-2.30836 -0.0052457 0
+-2.31867 -0.0146313 0
+-2.33094 -0.0284964 0
+-2.3458 -0.0457439 0
+-2.36268 -0.0632985 0
+-2.38128 -0.0817792 0
+-2.40283 -0.104897 0
+-2.42882 -0.133838 0
+-2.45932 -0.166929 0
+-2.49357 -0.205925 0
+-2.53183 -0.258875 0
+-2.57568 -0.335204 0
+-2.62701 -0.441357 0
+-2.6882 -0.583422 0
+-2.76334 -0.771126 0
+-2.85832 -1.01653 0
+-2.97998 -1.33127 0
+-3.1375 -1.72816 0
+-3.34612 -2.22309 0
+-3.62799 -2.83104 0
+-4.00599 -3.56145 0
+-4.49261 -4.42302 0
+-5.08066 -5.43155 0
+-5.74013 -6.59718 0
+-6.42218 -7.87768 0
+-7.06772 -9.12116 0
+-7.61419 -10.051 0
+-7.99657 -10.3305 0
+-8.14778 -9.6959 0
+-8.00901 -8.09364 0
+-7.55472 -5.73384 0
+-6.82667 -2.99204 0
+-3.48055 -0.17759 0
+-1.62754 0.595997 0
+-1.62754 1.2392 0
+-0.590399 -0.13927 0
+-1.13508 -0.18177 0
+-2.14771 -0.161849 0
+-2.05015 0.04542 0
+-1.89634 0.59949 0
+-1.71918 1.39565 0
+-1.5734 2.07278 0
+-1.49262 2.28606 0
+-1.46305 1.93887 0
+-1.43905 1.21551 0
+-1.38314 0.434616 0
+-1.29297 -0.141566 0
+-1.19819 -0.419427 0
+-1.13798 -0.465879 0
+-1.13807 -0.414821 0
+-1.19894 -0.365625 0
+-1.29883 -0.34247 0
+-1.40883 -0.324002 0
+-1.50948 -0.29307 0
+-1.59589 -0.25515 0
+-1.67021 -0.223533 0
+-1.73306 -0.203493 0
+-1.78333 -0.192357 0
+-1.82226 -0.184701 0
+-1.8535 -0.173247 0
+-1.87983 -0.151528 0
+-1.90241 -0.120988 0
+-1.92319 -0.0916028 0
+-1.94458 -0.0711964 0
+-1.96653 -0.0571774 0
+-1.98618 -0.0425577 0
+-2.00179 -0.0264289 0
+-2.01486 -0.013079 0
+-2.02726 -0.00323606 0
+-2.03833 0.00714902 0
+-2.0465 0.0196028 0
+-2.05221 0.0310127 0
+-2.05674 0.040419 0
+-2.05904 0.0524647 0
+-2.0559 0.0714544 0
+-2.0451 0.0968221 0
+-2.02579 0.128305 0
+-1.99555 0.171604 0
+-1.94926 0.233536 0
+-1.88226 0.312985 0
+-1.79334 0.400824 0
+-1.68436 0.487177 0
+-1.55947 0.563645 0
+-1.42691 0.618725 0
+-1.2999 0.63686 0
+-1.19233 0.604421 0
+-1.11202 0.513779 0
+-1.05769 0.361961 0
+-1.02108 0.15299 0
+-0.989673 -0.0920643 0
+-0.948668 -0.33028 0
+-0.885345 -0.509984 0
+-0.795631 -0.593674 0
+-0.686354 -0.571272 0
+-0.566581 -0.458613 0
+-0.434484 -0.296239 0
+-0.346099 -0.158624 0
+-0.317648 -0.0474357 0
+-0.352238 0.0564062 0
+-0.450254 0.17483 0
+-0.597539 0.329843 0
+-0.732626 0.523839 0
+-0.857278 0.676093 0
+-0.960779 0.739002 0
+-1.03235 0.688839 0
+-1.07228 0.525204 0
+-1.09348 0.276765 0
+-1.11525 -0.00147453 0
+-1.15513 -0.247814 0
+-1.22434 -0.420297 0
+-1.32621 -0.509413 0
+-1.45527 -0.529566 0
+-1.59777 -0.502258 0
+-1.73624 -0.446036 0
+-1.85647 -0.37442 0
+-1.95163 -0.295794 0
+-2.02139 -0.214596 0
+-2.06925 -0.135664 0
+-2.1009 -0.067441 0
+-2.12282 -0.0183642 0
+-2.13987 0.00983801 0
+-2.15379 0.0227023 0
+-2.1647 0.0267317 0
+-2.17353 0.0250259 0
+-2.18208 0.0192066 0
+-2.19136 0.0118635 0
+-2.20127 0.00466359 0
+-2.21212 -0.00378147 0
+-2.2251 -0.0155083 0
+-2.241 -0.0298461 0
+-2.25951 -0.0447921 0
+-2.28057 -0.0607198 0
+-2.30539 -0.0800751 0
+-2.33529 -0.103938 0
+-2.37018 -0.132041 0
+-2.40916 -0.166942 0
+-2.45235 -0.215682 0
+-2.50139 -0.286166 0
+-2.55885 -0.383896 0
+-2.6286 -0.513671 0
+-2.71698 -0.682749 0
+-2.83276 -0.900755 0
+-2.98604 -1.17799 0
+-3.18855 -1.52564 0
+-3.45538 -1.95626 0
+-3.80413 -2.4823 0
+-4.24868 -3.11689 0
+-4.79075 -3.88095 0
+-5.41527 -4.80704 0
+-6.09291 -5.91953 0
+-6.78796 -7.18264 0
+-7.46475 -8.44437 0
+-8.08569 -9.43003 0
+-8.60116 -9.81508 0
+-8.94152 -9.35555 0
+-9.02348 -8.01168 0
+-8.77528 -5.98204 0
+-8.17342 -3.5939 0
+-4.24747 -1.06299 0
+-2.03367 -0.0718724 0
+-2.03367 0.883228 0
+-0.544919 -0.137672 0
+-1.05924 -0.195101 0
+-2.02049 -0.209754 0
+-1.90799 -0.0670778 0
+-1.71183 0.40333 0
+-1.46075 1.14457 0
+-1.22451 1.83654 0
+-1.0701 2.13165 0
+-1.01865 1.88743 0
+-1.03859 1.23545 0
+-1.07495 0.470968 0
+-1.0865 -0.130016 0
+-1.06537 -0.440549 0
+-1.03303 -0.498227 0
+-1.02078 -0.427069 0
+-1.04847 -0.33793 0
+-1.1142 -0.276745 0
+-1.20047 -0.23773 0
+-1.28914 -0.204405 0
+-1.37086 -0.173433 0
+-1.44342 -0.150969 0
+-1.50603 -0.140884 0
+-1.55775 -0.140637 0
+-1.59923 -0.143214 0
+-1.63259 -0.139892 0
+-1.65945 -0.124669 0
+-1.68105 -0.0993898 0
+-1.69983 -0.0728223 0
+-1.7187 -0.0523189 0
+-1.73822 -0.0376565 0
+-1.75623 -0.0245569 0
+-1.77101 -0.0116488 0
+-1.78332 -0.000767775 0
+-1.79443 0.00788125 0
+-1.80392 0.016635 0
+-1.81072 0.0264015 0
+-1.81522 0.0355147 0
+-1.81841 0.0436037 0
+-1.81947 0.0535321 0
+-1.81603 0.0680157 0
+-1.80636 0.0871461 0
+-1.7895 0.111447 0
+-1.76283 0.144939 0
+-1.7212 0.1919 0
+-1.6595 0.25129 0
+-1.57553 0.316846 0
+-1.47018 0.381836 0
+-1.34733 0.440791 0
+-1.21512 0.486513 0
+-1.08654 0.508278 0
+-0.976025 0.49391 0
+-0.894229 0.431983 0
+-0.84545 0.313182 0
+-0.828207 0.135747 0
+-0.835579 -0.0846927 0
+-0.854778 -0.311081 0
+-0.86928 -0.495482 0
+-0.864399 -0.598554 0
+-0.831875 -0.603797 0
+-0.770079 -0.520409 0
+-0.686683 -0.379635 0
+-0.620755 -0.224551 0
+-0.598078 -0.0701124 0
+-0.627363 0.0856912 0
+-0.702185 0.249652 0
+-0.797294 0.424953 0
+-0.870554 0.597098 0
+-0.912807 0.718346 0
+-0.923855 0.75005 0
+-0.909018 0.674001 0
+-0.880968 0.497154 0
+-0.857942 0.25374 0
+-0.857666 -0.00175088 0
+-0.891538 -0.213943 0
+-0.962859 -0.348976 0
+-1.06799 -0.40428 0
+-1.19741 -0.400151 0
+-1.33671 -0.362956 0
+-1.46985 -0.312892 0
+-1.58402 -0.260254 0
+-1.67268 -0.20713 0
+-1.73524 -0.152035 0
+-1.7752 -0.0957028 0
+-1.79876 -0.0438807 0
+-1.8131 -0.00402821 0
+-1.82377 0.0205058 0
+-1.83312 0.0320573 0
+-1.84143 0.0350349 0
+-1.84901 0.032605 0
+-1.85675 0.0269482 0
+-1.86513 0.0202421 0
+-1.87407 0.0136057 0
+-1.88399 0.00613668 0
+-1.89604 -0.00345275 0
+-1.91109 -0.0148027 0
+-1.92914 -0.0267408 0
+-1.95033 -0.0395246 0
+-1.97562 -0.0547893 0
+-2.00583 -0.0737266 0
+-2.04061 -0.0972616 0
+-2.07908 -0.128473 0
+-2.12151 -0.173245 0
+-2.17007 -0.237613 0
+-2.22852 -0.325447 0
+-2.30262 -0.439572 0
+-2.40098 -0.584385 0
+-2.53496 -0.766777 0
+-2.71732 -0.995633 0
+-2.96118 -1.28178 0
+-3.27921 -1.63823 0
+-3.68077 -2.08073 0
+-4.1668 -2.63086 0
+-4.72625 -3.3215 0
+-5.33922 -4.19408 0
+-5.98667 -5.27207 0
+-6.65979 -6.50952 0
+-7.35835 -7.74581 0
+-8.0751 -8.71328 0
+-8.77484 -9.11534 0
+-9.38228 -8.7481 0
+-9.78971 -7.60425 0
+-9.88268 -5.88907 0
+-9.5693 -3.90727 0
+-5.06415 -1.82479 0
+-2.50576 -0.75426 0
+-2.50576 0.455777 0
+-0.49585 -0.129959 0
+-0.978464 -0.198618 0
+-1.89053 -0.246454 0
+-1.78185 -0.175754 0
+-1.56545 0.186931 0
+-1.25536 0.834479 0
+-0.924754 1.50594 0
+-0.66892 1.87581 0
+-0.550146 1.76865 0
+-0.566418 1.25173 0
+-0.662172 0.566723 0
+-0.766805 -0.025384 0
+-0.83269 -0.374663 0
+-0.852097 -0.478821 0
+-0.848418 -0.430747 0
+-0.852205 -0.334143 0
+-0.880332 -0.248617 0
+-0.931206 -0.186856 0
+-0.993893 -0.141717 0
+-1.05871 -0.108616 0
+-1.12056 -0.089116 0
+-1.17695 -0.0845016 0
+-1.22633 -0.0912541 0
+-1.26819 -0.101357 0
+-1.3026 -0.105474 0
+-1.3296 -0.0976736 0
+-1.34982 -0.0791674 0
+-1.36567 -0.0569717 0
+-1.38028 -0.0377094 0
+-1.39496 -0.0229745 0
+-1.40865 -0.0108735 0
+-1.42007 -0.000221798 0
+-1.42944 0.00860148 0
+-1.4374 0.0158387 0
+-1.44362 0.0228599 0
+-1.44747 0.0302444 0
+-1.44922 0.037268 0
+-1.44953 0.0439147 0
+-1.44787 0.0518701 0
+-1.44265 0.0627911 0
+-1.43258 0.0770811 0
+-1.4166 0.0954671 0
+-1.39207 0.120404 0
+-1.35426 0.154094 0
+-1.29846 0.195487 0
+-1.22223 0.240624 0
+-1.12606 0.285664 0
+-1.0133 0.328024 0
+-0.890999 0.364214 0
+-0.770213 0.387493 0
+-0.663868 0.387565 0
+-0.583527 0.351643 0
+-0.537571 0.267226 0
+-0.530545 0.128721 0
+-0.561453 -0.053784 0
+-0.621338 -0.251196 0
+-0.693546 -0.423274 0
+-0.758323 -0.533777 0
+-0.799117 -0.563003 0
+-0.807676 -0.511849 0
+-0.788929 -0.398382 0
+-0.76515 -0.24833 0
+-0.755947 -0.079315 0
+-0.768935 0.0986788 0
+-0.797542 0.278258 0
+-0.821961 0.449372 0
+-0.817882 0.59302 0
+-0.7784 0.678864 0
+-0.709792 0.681442 0
+-0.626804 0.591013 0
+-0.549172 0.419523 0
+-0.49673 0.201297 0
+-0.483418 -0.0150631 0
+-0.513617 -0.183744 0
+-0.583035 -0.279558 0
+-0.682263 -0.305052 0
+-0.799558 -0.282856 0
+-0.922121 -0.240393 0
+-1.03757 -0.197448 0
+-1.13617 -0.161648 0
+-1.21247 -0.130835 0
+-1.26524 -0.0992586 0
+-1.2969 -0.0640475 0
+-1.31273 -0.0280453 0
+-1.31948 0.0027195 0
+-1.32288 0.0238994 0
+-1.32595 0.0351308 0
+-1.3295 0.0385827 0
+-1.33366 0.0367693 0
+-1.33865 0.0319333 0
+-1.34444 0.0260306 0
+-1.35087 0.0200412 0
+-1.35833 0.0135972 0
+-1.36781 0.00602349 0
+-1.38011 -0.00250267 0
+-1.39544 -0.0114062 0
+-1.41399 -0.0209802 0
+-1.43629 -0.0324871 0
+-1.46268 -0.0473354 0
+-1.49271 -0.0672273 0
+-1.52591 -0.0952781 0
+-1.56321 -0.135948 0
+-1.6077 -0.193117 0
+-1.66456 -0.268585 0
+-1.74117 -0.362962 0
+-1.84756 -0.478001 0
+-1.99606 -0.61828 0
+-2.19982 -0.791872 0
+-2.47076 -1.01083 0
+-2.81712 -1.29187 0
+-3.24011 -1.65775 0
+-3.7313 -2.13967 0
+-4.27467 -2.77813 0
+-4.85592 -3.61283 0
+-5.47515 -4.65284 0
+-6.1519 -5.83277 0
+-6.91318 -6.98453 0
+-7.76811 -7.85835 0
+-8.68342 -8.20003 0
+-9.57532 -7.8562 0
+-10.324 -6.85557 0
+-10.7994 -5.41368 0
+-10.8722 -3.83451 0
+-5.81611 -2.30092 0
+-2.97644 -1.32526 0
+-2.97644 0.0194261 0
+-0.439725 -0.115282 0
+-0.883596 -0.188444 0
+-1.73635 -0.26124 0
+-1.65425 -0.257855 0
+-1.45385 -0.0134638 0
+-1.12657 0.507201 0
+-0.732999 1.11236 0
+-0.379824 1.52264 0
+-0.162942 1.55177 0
+-0.117866 1.20665 0
+-0.209038 0.657896 0
+-0.358961 0.124539 0
+-0.493306 -0.240319 0
+-0.573785 -0.398341 0
+-0.603537 -0.400995 0
+-0.609004 -0.328677 0
+-0.615912 -0.241709 0
+-0.636112 -0.166656 0
+-0.668993 -0.108836 0
+-0.709336 -0.0682734 0
+-0.752667 -0.0457846 0
+-0.796178 -0.0409909 0
+-0.837933 -0.0494992 0
+-0.876265 -0.0630253 0
+-0.909393 -0.0723457 0
+-0.935603 -0.0714641 0
+-0.954393 -0.0603772 0
+-0.967402 -0.0439629 0
+-0.97744 -0.0276717 0
+-0.986348 -0.0140659 0
+-0.994186 -0.00303539 0
+-1.00042 0.00600969 0
+-1.00507 0.0132493 0
+-1.00836 0.0191368 0
+-1.01005 0.0245469 0
+-1.00973 0.0299257 0
+-1.00757 0.0351054 0
+-1.00392 0.0402637 0
+-0.998436 0.0463875 0
+-0.990117 0.054472 0
+-0.977988 0.0649525 0
+-0.960909 0.0783878 0
+-0.936484 0.0959793 0
+-0.900909 0.118519 0
+-0.850483 0.145061 0
+-0.783301 0.173441 0
+-0.69976 0.202124 0
+-0.602487 0.230751 0
+-0.496668 0.258396 0
+-0.39029 0.281116 0
+-0.293347 0.290621 0
+-0.216497 0.274793 0
+-0.170081 0.22081 0
+-0.162787 0.121427 0
+-0.198685 -0.0178861 0
+-0.273601 -0.17628 0
+-0.374034 -0.322841 0
+-0.480473 -0.427339 0
+-0.573557 -0.469919 0
+-0.640159 -0.445247 0
+-0.677575 -0.360967 0
+-0.693575 -0.23233 0
+-0.697369 -0.075521 0
+-0.692804 0.0941137 0
+-0.675971 0.261425 0
+-0.636836 0.410237 0
+-0.565812 0.521996 0
+-0.463616 0.576668 0
+-0.341815 0.559641 0
+-0.219386 0.468584 0
+-0.117702 0.317839 0
+-0.0544885 0.138083 0
+-0.0384535 -0.0310981 0
+-0.0674627 -0.154734 0
+-0.131375 -0.215645 0
+-0.217204 -0.219223 0
+-0.313001 -0.187058 0
+-0.409109 -0.144285 0
+-0.497988 -0.108569 0
+-0.574027 -0.085608 0
+-0.633557 -0.0713049 0
+-0.674938 -0.0578784 0
+-0.698884 -0.0401008 0
+-0.708713 -0.0182163 0
+-0.709576 0.00358261 0
+-0.706577 0.0209003 0
+-0.703109 0.0316622 0
+-0.700653 0.036127 0
+-0.69963 0.0357458 0
+-0.700041 0.0323452 0
+-0.70163 0.0276192 0
+-0.704147 0.0225579 0
+-0.707812 0.0172622 0
+-0.713313 0.0115247 0
+-0.721257 0.00544129 0
+-0.73185 -0.00081346 0
+-0.745176 -0.00765422 0
+-0.761439 -0.0162238 0
+-0.780715 -0.0280594 0
+-0.80284 -0.0451022 0
+-0.828141 -0.0699766 0
+-0.858558 -0.105531 0
+-0.89817 -0.153506 0
+-0.953034 -0.21372 0
+-1.03102 -0.28498 0
+-1.14176 -0.367257 0
+-1.29619 -0.463849 0
+-1.50513 -0.582934 0
+-1.77724 -0.738714 0
+-2.1167 -0.952415 0
+-2.52127 -1.25318 0
+-2.98292 -1.67803 0
+-3.49359 -2.26745 0
+-4.05583 -3.05059 0
+-4.69147 -4.0172 0
+-5.43809 -5.08615 0
+-6.329 -6.09362 0
+-7.36548 -6.82187 0
+-8.49791 -7.0676 0
+-9.62961 -6.7245 0
+-10.6438 -5.8414 0
+-11.4317 -4.62571 0
+-11.8841 -3.3822 0
+-6.34494 -2.37163 0
+-3.33544 -1.64219 0
+-3.33544 -0.32154 0
+-0.375088 -0.0944988 0
+-0.768909 -0.163918 0
+-1.54103 -0.248121 0
+-1.50392 -0.29497 0
+-1.35674 -0.160646 0
+-1.06639 0.216856 0
+-0.667398 0.713367 0
+-0.256577 1.11182 0
+0.054979 1.24021 0
+0.198486 1.06314 0
+0.175995 0.680387 0
+0.0476352 0.252899 0
+-0.107921 -0.0847628 0
+-0.232362 -0.2739 0
+-0.305185 -0.328172 0
+-0.336513 -0.297349 0
+-0.347709 -0.230514 0
+-0.355606 -0.158759 0
+-0.367733 -0.0967079 0
+-0.38539 -0.0506171 0
+-0.407852 -0.023322 0
+-0.434241 -0.0146025 0
+-0.463454 -0.0202863 0
+-0.493625 -0.0328539 0
+-0.521972 -0.0439986 0
+-0.545507 -0.0479295 0
+-0.56245 -0.043434 0
+-0.573176 -0.0332371 0
+-0.579593 -0.0212547 0
+-0.583529 -0.01013 0
+-0.585801 -0.000762626 0
+-0.586589 0.00679732 0
+-0.586056 0.0127163 0
+-0.584324 0.0174043 0
+-0.581223 0.0214465 0
+-0.576522 0.0252243 0
+-0.570269 0.0288526 0
+-0.562596 0.0325909 0
+-0.553244 0.0370352 0
+-0.541544 0.0427718 0
+-0.526706 0.0501147 0
+-0.507655 0.0593372 0
+-0.482497 0.0708212 0
+-0.448592 0.0846141 0
+-0.403566 0.100035 0
+-0.346334 0.116209 0
+-0.277309 0.133098 0
+-0.19816 0.151602 0
+-0.111866 0.172102 0
+-0.0230859 0.192336 0
+0.0615748 0.20596 0
+0.133483 0.202885 0
+0.182249 0.172043 0
+0.197236 0.10644 0
+0.170936 0.00841385 0
+0.102994 -0.108338 0
+0.00214825 -0.221996 0
+-0.115611 -0.309579 0
+-0.231784 -0.353746 0
+-0.330571 -0.346461 0
+-0.402404 -0.289134 0
+-0.444315 -0.190418 0
+-0.456537 -0.0632988 0
+-0.439226 0.0768023 0
+-0.391116 0.213315 0
+-0.310493 0.329614 0
+-0.198474 0.409978 0
+-0.0629907 0.441184 0
+0.080794 0.415856 0
+0.213239 0.336139 0
+0.315056 0.216022 0
+0.372887 0.0802533 0
+0.383432 -0.0416433 0
+0.353779 -0.125081 0
+0.297474 -0.159341 0
+0.228751 -0.1505 0
+0.15829 -0.116597 0
+0.0921633 -0.0781576 0
+0.033154 -0.04956 0
+-0.0172999 -0.0351541 0
+-0.0578057 -0.0307991 0
+-0.0868624 -0.0288217 0
+-0.103722 -0.0232412 0
+-0.109418 -0.01252 0
+-0.10687 0.00103428 0
+-0.0997937 0.0138241 0
+-0.0913337 0.0232021 0
+-0.083429 0.0282223 0
+-0.0769791 0.0292959 0
+-0.0722045 0.0275706 0
+-0.0689228 0.0243375 0
+-0.0668899 0.020525 0
+-0.0661468 0.016519 0
+-0.0670304 0.0124083 0
+-0.06985 0.00826094 0
+-0.074681 0.00401752 0
+-0.0815038 -0.000831457 0
+-0.0903879 -0.00733965 0
+-0.101505 -0.0169421 0
+-0.115283 -0.0313245 0
+-0.132993 -0.0522666 0
+-0.157432 -0.0810923 0
+-0.193094 -0.117843 0
+-0.245805 -0.161009 0
+-0.322275 -0.20851 0
+-0.429826 -0.259707 0
+-0.576018 -0.317657 0
+-0.767919 -0.391032 0
+-1.01112 -0.495511 0
+-1.30898 -0.654554 0
+-1.66302 -0.899142 0
+-2.07587 -1.26517 0
+-2.55745 -1.78588 0
+-3.13156 -2.47648 0
+-3.83645 -3.31232 0
+-4.7125 -4.21009 0
+-5.77849 -5.02763 0
+-7.00775 -5.59262 0
+-8.32034 -5.75501 0
+-9.60202 -5.44281 0
+-10.7453 -4.69808 0
+-11.6866 -3.68443 0
+-12.3928 -2.67605 0
+-6.48921 -2.02121 0
+-3.4507 -1.59799 0
+-3.4507 -0.442301 0
+-0.303147 -0.0701053 0
+-0.634315 -0.128184 0
+-1.29841 -0.208485 0
+-1.31301 -0.28037 0
+-1.24301 -0.230651 0
+-1.03615 0.00999798 0
+-0.695757 0.372976 0
+-0.291843 0.707904 0
+0.0712508 0.87712 0
+0.306868 0.827526 0
+0.383834 0.603421 0
+0.330297 0.306435 0
+0.208036 0.0374984 0
+0.0778496 -0.143713 0
+-0.0235149 -0.226808 0
+-0.0868485 -0.234015 0
+-0.120094 -0.197268 0
+-0.135638 -0.143215 0
+-0.143139 -0.0892067 0
+-0.148474 -0.0452824 0
+-0.155222 -0.0165737 0
+-0.165701 -0.00412346 0
+-0.180898 -0.00509021 0
+-0.200032 -0.0137197 0
+-0.220607 -0.0234229 0
+-0.23934 -0.0291973 0
+-0.253632 -0.0291417 0
+-0.262617 -0.0242517 0
+-0.267006 -0.0168661 0
+-0.26807 -0.00906647 0
+-0.266807 -0.00202518 0
+-0.263819 0.00380967 0
+-0.2595 0.00839652 0
+-0.254057 0.0119618 0
+-0.247475 0.0148649 0
+-0.239659 0.017408 0
+-0.230604 0.0197974 0
+-0.220303 0.0222899 0
+-0.20852 0.0252526 0
+-0.194763 0.0290148 0
+-0.178389 0.0337407 0
+-0.158534 0.0394821 0
+-0.133935 0.0462215 0
+-0.103086 0.0537652 0
+-0.0648088 0.0617581 0
+-0.0187006 0.0701008 0
+0.0349532 0.0794445 0
+0.09552 0.0910348 0
+0.162028 0.105594 0
+0.232609 0.121755 0
+0.303587 0.134982 0
+0.368615 0.137857 0
+0.418502 0.122156 0
+0.442576 0.0823653 0
+0.431836 0.0191545 0
+0.382717 -0.0592189 0
+0.299401 -0.13868 0
+0.193263 -0.203441 0
+0.0798632 -0.240346 0
+-0.0248893 -0.241709 0
+-0.107795 -0.206228 0
+-0.15973 -0.138484 0
+-0.17533 -0.0476988 0
+-0.152263 0.0537355 0
+-0.0908857 0.151938 0
+0.00543483 0.233294 0
+0.129368 0.286045 0
+0.268743 0.301809 0
+0.407225 0.277374 0
+0.526911 0.216452 0
+0.612418 0.130515 0
+0.655229 0.0374422 0
+0.656367 -0.0427813 0
+0.625651 -0.0943655 0
+0.577519 -0.111208 0
+0.525524 -0.098506 0
+0.478386 -0.0694585 0
+0.439155 -0.038927 0
+0.407043 -0.017448 0
+0.380202 -0.00831249 0
+0.357817 -0.0084148 0
+0.340651 -0.0116556 0
+0.330142 -0.0127317 0
+0.32701 -0.00938806 0
+0.330481 -0.00243654 0
+0.33857 0.00573453 0
+0.348968 0.0128046 0
+0.359767 0.0174229 0
+0.369744 0.0193193 0
+0.378326 0.018988 0
+0.385425 0.0172391 0
+0.391152 0.0147979 0
+0.395561 0.0121103 0
+0.398585 0.00938368 0
+0.400174 0.00667177 0
+0.400371 0.00382045 0
+0.399207 0.000333197 0
+0.396522 -0.00465447 0
+0.391827 -0.0122471 0
+0.384092 -0.0235895 0
+0.371404 -0.0395791 0
+0.350734 -0.0604223 0
+0.31811 -0.0852183 0
+0.269148 -0.112047 0
+0.199561 -0.138924 0
+0.105352 -0.165498 0
+-0.0173045 -0.195001 0
+-0.17237 -0.235967 0
+-0.364517 -0.303363 0
+-0.600264 -0.418807 0
+-0.890119 -0.609287 0
+-1.25197 -0.903325 0
+-1.71466 -1.32318 0
+-2.31854 -1.8726 0
+-3.10804 -2.52282 0
+-4.11425 -3.20388 0
+-5.33192 -3.80996 0
+-6.70261 -4.22193 0
+-8.11698 -4.34065 0
+-9.4432 -4.11659 0
+-10.5764 -3.56492 0
+-11.4882 -2.7726 0
+-12.238 -1.92626 0
+-6.15997 -1.38254 0
+-3.22879 -1.19197 0
+-3.22879 -0.253423 0
+-0.2278 -0.0456401 0
+-0.486278 -0.0875322 0
+-1.01691 -0.151275 0
+-1.07486 -0.222421 0
+-1.08287 -0.222639 0
+-0.980404 -0.0924725 0
+-0.744756 0.137328 0
+-0.41282 0.375967 0
+-0.0652566 0.529557 0
+0.213238 0.549031 0
+0.371244 0.445415 0
+0.405394 0.272284 0
+0.349804 0.0930885 0
+0.252125 -0.0460333 0
+0.152044 -0.126727 0
+0.0715966 -0.153568 0
+0.0168889 -0.14256 0
+-0.0150644 -0.111262 0
+-0.0303933 -0.0738778 0
+-0.0354775 -0.0401982 0
+-0.0361074 -0.0159438 0
+-0.0370792 -0.00315159 0
+-0.0415641 -0.000605385 0
+-0.0505321 -0.0047517 0
+-0.0627713 -0.0111836 0
+-0.0757252 -0.0162434 0
+-0.0868047 -0.0180621 0
+-0.0944392 -0.0166172 0
+-0.0983146 -0.0129908 0
+-0.0989163 -0.00846481 0
+-0.0969529 -0.00398853 0
+-0.0930611 -8.20982e-05 0
+-0.0877359 0.0030713 0
+-0.0812961 0.00552198 0
+-0.073877 0.0074458 0
+-0.0655079 0.00903892 0
+-0.056192 0.0104815 0
+-0.045872 0.0119698 0
+-0.0343392 0.0137198 0
+-0.0212239 0.0158996 0
+-0.00605151 0.0185683 0
+0.01175 0.0216805 0
+0.0328567 0.0251147 0
+0.0579206 0.0287013 0
+0.0873381 0.0323406 0
+0.121183 0.036256 0
+0.159451 0.0411764 0
+0.202372 0.0481141 0
+0.250344 0.057622 0
+0.30327 0.0688286 0
+0.359441 0.0788111 0
+0.414463 0.0828352 0
+0.460938 0.0756818 0
+0.489548 0.0537555 0
+0.491608 0.0170939 0
+0.462175 -0.0297859 0
+0.402244 -0.0787482 0
+0.319019 -0.120216 0
+0.224316 -0.145643 0
+0.132003 -0.149396 0
+0.0554697 -0.129695 0
+0.00573511 -0.0887494 0
+-0.00968779 -0.0322759 0
+0.0125932 0.0314544 0
+0.0715872 0.0929437 0
+0.161931 0.14295 0
+0.27413 0.173845 0
+0.395186 0.180754 0
+0.51003 0.16253 0
+0.603985 0.122498 0
+0.66595 0.0685501 0
+0.69141 0.0119821 0
+0.683841 -0.0352124 0
+0.653442 -0.0639662 0
+0.613373 -0.0711399 0
+0.57517 -0.0603028 0
+0.545482 -0.03977 0
+0.525439 -0.0188846 0
+0.512407 -0.0044156 0
+0.50276 0.00133446 0
+0.494161 0.000183708 0
+0.486402 -0.00389637 0
+0.480791 -0.00712025 0
+0.478843 -0.00743985 0
+0.481221 -0.00481547 0
+0.487459 -0.00050317 0
+0.496326 0.00393749 0
+0.506399 0.0073501 0
+0.516484 0.00923478 0
+0.52581 0.00966129 0
+0.53403 0.00901947 0
+0.54107 0.00775807 0
+0.54696 0.0062202 0
+0.551747 0.00459674 0
+0.555494 0.00292421 0
+0.558261 0.00105344 0
+0.559987 -0.00139239 0
+0.56033 -0.00499739 0
+0.558523 -0.0104404 0
+0.553245 -0.018311 0
+0.542532 -0.0288669 0
+0.523879 -0.0417688 0
+0.494602 -0.055941 0
+0.452361 -0.0698064 0
+0.395497 -0.0820603 0
+0.322894 -0.0928944 0
+0.233266 -0.105373 0
+0.123903 -0.126604 0
+-0.011096 -0.168365 0
+-0.183047 -0.246856 0
+-0.411225 -0.38111 0
+-0.725055 -0.589495 0
+-1.16435 -0.883884 0
+-1.77493 -1.26202 0
+-2.59733 -1.70041 0
+-3.64927 -2.15195 0
+-4.90724 -2.55199 0
+-6.29653 -2.83264 0
+-7.69771 -2.93946 0
+-8.97311 -2.84119 0
+-10.0103 -2.52776 0
+-10.776 -2.00684 0
+-11.3704 -1.33185 0
+-5.42328 -0.714754 0
+-2.70552 -0.579248 0
+-2.70552 0.213265 0
+-0.15491 -0.0247076 0
+-0.336865 -0.049588 0
+-0.719314 -0.0903891 0
+-0.799389 -0.142346 0
+-0.862128 -0.1599 0
+-0.851116 -0.103484 0
+-0.730453 0.0166646 0
+-0.509223 0.154737 0
+-0.238017 0.25835 0
+0.0163371 0.294677 0
+0.200361 0.261391 0
+0.291713 0.180932 0
+0.299351 0.0854503 0
+0.251028 0.00229012 0
+0.177944 -0.0536429 0
+0.104282 -0.0799063 0
+0.0438587 -0.0821371 0
+0.00168643 -0.0690897 0
+-0.0229256 -0.0492658 0
+-0.0337827 -0.0293411 0
+-0.0360612 -0.0136653 0
+-0.03499 -0.00422281 0
+-0.034714 -0.000881396 0
+-0.0374945 -0.00197118 0
+-0.0435347 -0.00514344 0
+-0.051512 -0.00826614 0
+-0.05954 -0.0100341 0
+-0.066056 -0.0101011 0
+-0.0702433 -0.00880351 0
+-0.0719672 -0.0067409 0
+-0.0714922 -0.00446347 0
+-0.0692322 -0.00234213 0
+-0.0656005 -0.000560423 0
+-0.0609248 0.000846297 0
+-0.0554141 0.00193511 0
+-0.0491776 0.00280242 0
+-0.0422522 0.00355612 0
+-0.0345932 0.00431084 0
+-0.0260498 0.00517637 0
+-0.0163769 0.00622664 0
+-0.00528151 0.00747293 0
+0.00753494 0.00886409 0
+0.0223387 0.010311 0
+0.0393052 0.0117348 0
+0.0584877 0.0131581 0
+0.0799229 0.0148209 0
+0.103879 0.0172202 0
+0.131052 0.0209416 0
+0.162416 0.0262573 0
+0.198598 0.0326468 0
+0.238896 0.0385135 0
+0.280381 0.0413497 0
+0.317629 0.0384341 0
+0.343503 0.0278809 0
+0.350984 0.00961367 0
+0.335411 -0.014213 0
+0.29624 -0.0395775 0
+0.237611 -0.0615861 0
+0.167643 -0.0756752 0
+0.0968706 -0.0786238 0
+0.0363555 -0.0691796 0
+-0.00411569 -0.0482782 0
+-0.0175076 -0.018884 0
+-0.000565435 0.0145123 0
+0.0457061 0.0466722 0
+0.116148 0.0725078 0
+0.202074 0.0879191 0
+0.292365 0.0904633 0
+0.375053 0.0798418 0
+0.439386 0.0581651 0
+0.478104 0.0298318 0
+0.489296 0.000790654 0
+0.476963 -0.0228795 0
+0.449731 -0.0367349 0
+0.417955 -0.0393637 0
+0.39036 -0.0327079 0
+0.371678 -0.021088 0
+0.362172 -0.00937872 0
+0.358961 -0.00120407 0
+0.358222 0.00207344 0
+0.357137 0.0012683 0
+0.354795 -0.00155459 0
+0.351937 -0.00426153 0
+0.350007 -0.00551038 0
+0.350199 -0.00500758 0
+0.352943 -0.00324703 0
+0.357914 -0.00103302 0
+0.364337 0.000926807 0
+0.371345 0.00222674 0
+0.378229 0.00277724 0
+0.384544 0.00270416 0
+0.390086 0.00221627 0
+0.394804 0.00150244 0
+0.398723 0.000678193 0
+0.401885 -0.000238093 0
+0.404281 -0.00134256 0
+0.40574 -0.00285147 0
+0.405813 -0.00507082 0
+0.40369 -0.00831747 0
+0.39818 -0.0128003 0
+0.387794 -0.0184815 0
+0.370986 -0.0249609 0
+0.346516 -0.0314703 0
+0.313797 -0.0370878 0
+0.272965 -0.0412276 0
+0.224417 -0.0443473 0
+0.167751 -0.0487067 0
+0.100111 -0.0589635 0
+0.0141335 -0.0823875 0
+-0.104249 -0.128473 0
+-0.27764 -0.207719 0
+-0.537756 -0.329379 0
+-0.923413 -0.498227 0
+-1.47449 -0.710941 0
+-2.22138 -0.953519 0
+-3.1717 -1.20163 0
+-4.29866 -1.42503 0
+-5.53629 -1.595 0
+-6.78502 -1.69074 0
+-7.9268 -1.69941 0
+-8.84804 -1.60652 0
+-9.47546 -1.37942 0
+-9.8511 -0.956202 0
+-4.51256 -0.276493 0
+-2.09919 -0.0369923 0
+-2.09919 0.732864 0
+-0.0909811 -0.00992568 0
+-0.201071 -0.0209224 0
+-0.437937 -0.0400604 0
+-0.513591 -0.0666915 0
+-0.592842 -0.0806501 0
+-0.633231 -0.0630954 0
+-0.600402 -0.0161638 0
+-0.488255 0.0425896 0
+-0.321399 0.0914944 0
+-0.142039 0.115317 0
+0.00894508 0.110408 0
+0.106362 0.0835152 0
+0.145203 0.0466094 0
+0.13628 0.011213 0
+0.0978182 -0.0151809 0
+0.0478395 -0.0299277 0
+-0.000188811 -0.0341088 0
+-0.0385124 -0.0307661 0
+-0.0643664 -0.0234118 0
+-0.0785951 -0.0151124 0
+-0.0842132 -0.00804713 0
+-0.0850696 -0.00336636 0
+-0.0846929 -0.0012581 0
+-0.0854771 -0.00118704 0
+-0.0883678 -0.00225269 0
+-0.0930716 -0.00356236 0
+-0.0986075 -0.00449826 0
+-0.103901 -0.0048074 0
+-0.108173 -0.00453193 0
+-0.111048 -0.00386614 0
+-0.112482 -0.0030288 0
+-0.112633 -0.00219146 0
+-0.111737 -0.00145619 0
+-0.110029 -0.000861416 0
+-0.107694 -0.000400291 0
+-0.104851 -4.07762e-05 0
+-0.101555 0.000260553 0
+-0.0977951 0.000550755 0
+-0.0934907 0.000871975 0
+-0.0885135 0.00124946 0
+-0.0827232 0.00168255 0
+-0.0760052 0.00214609 0
+-0.0682985 0.00260433 0
+-0.0596018 0.00303809 0
+-0.0499284 0.00348468 0
+-0.0391831 0.00407551 0
+-0.0269964 0.00503359 0
+-0.0126471 0.00659224 0
+0.00477438 0.00883582 0
+0.0258972 0.0115239 0
+0.0504117 0.0139991 0
+0.0764945 0.0152669 0
+0.100659 0.01427 0
+0.118258 0.0102816 0
+0.124609 0.00326253 0
+0.116378 -0.00598156 0
+0.0927232 -0.0159231 0
+0.0558034 -0.0246663 0
+0.010524 -0.0303958 0
+-0.0363199 -0.0317799 0
+-0.0772498 -0.0282497 0
+-0.105406 -0.0201215 0
+-0.115734 -0.00855688 0
+-0.105857 0.00463539 0
+-0.0765083 0.0173238 0
+-0.0314386 0.0274381 0
+0.0231495 0.033331 0
+0.0795487 0.0340642 0
+0.129793 0.029597 0
+0.167099 0.0208591 0
+0.187276 0.00965471 0
+0.189731 -0.0016642 0
+0.177609 -0.0107575 0
+0.156827 -0.015953 0
+0.134211 -0.0167474 0
+0.115413 -0.0139097 0
+0.103441 -0.00911575 0
+0.0983331 -0.00427133 0
+0.0979588 -0.000829696 0
+0.0994217 0.000610468 0
+0.100385 0.000305221 0
+0.0997901 -0.000959874 0
+0.0978423 -0.00231376 0
+0.0954807 -0.00314876 0
+0.09373 -0.00325691 0
+0.0932487 -0.00276569 0
+0.0941862 -0.00197051 0
+0.096283 -0.00117007 0
+0.099076 -0.00056619 0
+0.102091 -0.000237877 0
+0.104963 -0.000167822 0
+0.10747 -0.000290246 0
+0.109507 -0.000534803 0
+0.11104 -0.000855426 0
+0.112048 -0.00124607 0
+0.112454 -0.00174812 0
+0.11205 -0.00244788 0
+0.110438 -0.00345792 0
+0.107 -0.00487953 0
+0.10095 -0.00675098 0
+0.0914626 -0.00899392 0
+0.0778823 -0.0113807 0
+0.0599695 -0.0135575 0
+0.0380416 -0.0151599 0
+0.0128463 -0.0160323 0
+-0.0149791 -0.0165219 0
+-0.0459091 -0.0177767 0
+-0.0829192 -0.0219534 0
+-0.133067 -0.0322399 0
+-0.208939 -0.0526012 0
+-0.329484 -0.0871743 0
+-0.519574 -0.139289 0
+-0.80758 -0.210221 0
+-1.22051 -0.298012 0
+-1.77708 -0.396946 0
+-2.48041 -0.498305 0
+-3.31281 -0.592631 0
+-4.23502 -0.672795 0
+-5.18963 -0.736129 0
+-6.10561 -0.783427 0
+-6.89943 -0.812695 0
+-7.47521 -0.80364 0
+-7.75831 -0.673105 0
+-3.66954 -0.136177 0
+-1.70007 0.192305 0
+-1.70007 0.928529 0
+-0.041676 -0.00212464 0
+-0.0932671 -0.00484197 0
+-0.206888 -0.00973918 0
+-0.256574 -0.0170054 0
+-0.315655 -0.0215697 0
+-0.360104 -0.0186457 0
+-0.367831 -0.00843713 0
+-0.33048 0.00523855 0
+-0.256427 0.0174413 0
+-0.165557 0.0244473 0
+-0.080139 0.0249894 0
+-0.0167881 0.0201643 0
+0.0173919 0.0124293 0
+0.0242155 0.00438934 0
+0.0111 -0.00206549 0
+-0.0127616 -0.00606599 0
+-0.0392441 -0.00762637 0
+-0.0627054 -0.00730478 0
+-0.0802518 -0.00586534 0
+-0.0913284 -0.00403584 0
+-0.0970062 -0.00236932 0
+-0.0991859 -0.00118664 0
+-0.0998643 -0.000579728 0
+-0.10059 -0.000461673 0
+-0.102196 -0.000646575 0
+-0.104824 -0.000934271 0
+-0.108148 -0.00117376 0
+-0.111666 -0.00128976 0
+-0.114923 -0.00127451 0
+-0.117629 -0.00116089 0
+-0.119663 -0.000994702 0
+-0.121038 -0.000816366 0
+-0.121841 -0.000652927 0
+-0.122185 -0.000517284 0
+-0.122174 -0.000411173 0
+-0.121886 -0.000329237 0
+-0.121363 -0.000262426 0
+-0.120612 -0.000200507 0
+-0.119605 -0.000134529 0
+-0.118296 -5.94908e-05 0
+-0.116638 2.3956e-05 0
+-0.114602 0.000110199 0
+-0.11219 0.000192438 0
+-0.109421 0.000269535 0
+-0.106291 0.0003548 0
+-0.102698 0.000482475 0
+-0.0983691 0.000704295 0
+-0.0928464 0.00106959 0
+-0.0856013 0.00159073 0
+-0.0762848 0.00220736 0
+-0.0650556 0.00276996 0
+-0.0528488 0.00306005 0
+-0.0414287 0.00284987 0
+-0.0331322 0.00198518 0
+-0.0303287 0.000458975 0
+-0.0347543 -0.00155596 0
+-0.0469458 -0.00373152 0
+-0.0659555 -0.00565672 0
+-0.0894191 -0.00693211 0
+-0.11394 -0.00725864 0
+-0.135688 -0.00650251 0
+-0.151082 -0.00472673 0
+-0.157454 -0.00218542 0
+-0.153538 0.000719361 0
+-0.139725 0.00351103 0
+-0.118013 0.00572641 0
+-0.0916819 0.00699959 0
+-0.0647455 0.00712771 0
+-0.0412606 0.00611219 0
+-0.0245716 0.00417011 0
+-0.0166235 0.00170653 0
+-0.0175253 -0.000762338 0
+-0.0255514 -0.00273138 0
+-0.03766 -0.00384446 0
+-0.0504105 -0.00399685 0
+-0.0609652 -0.00335492 0
+-0.0678015 -0.00227944 0
+-0.0708886 -0.00118422 0
+-0.0713266 -0.000391785 0
+-0.0706713 -4.48236e-05 0
+-0.0702656 -0.000100476 0
+-0.0708311 -0.000394327 0
+-0.0724117 -0.000733185 0
+-0.0745881 -0.000972306 0
+-0.0767944 -0.00105061 0
+-0.0785769 -0.000983177 0
+-0.0797187 -0.000828759 0
+-0.0802347 -0.000654058 0
+-0.0802916 -0.000509277 0
+-0.0801104 -0.000419132 0
+-0.0798921 -0.000386105 0
+-0.0797826 -0.000399749 0
+-0.0798709 -0.000446483 0
+-0.0802094 -0.000516878 0
+-0.0808455 -0.000609968 0
+-0.0818587 -0.000734952 0
+-0.0833967 -0.000909933 0
+-0.0856978 -0.00115681 0
+-0.0890852 -0.00149214 0
+-0.0939207 -0.00191548 0
+-0.100516 -0.00239856 0
+-0.109016 -0.00288103 0
+-0.119293 -0.00328019 0
+-0.130932 -0.00352138 0
+-0.143374 -0.00358993 0
+-0.156299 -0.00359667 0
+-0.170235 -0.00384031 0
+-0.187344 -0.00484515 0
+-0.212232 -0.00735211 0
+-0.252588 -0.0122443 0
+-0.319367 -0.020396 0
+-0.426205 -0.0324504 0
+-0.58786 -0.0485656 0
+-0.817656 -0.0682166 0
+-1.12442 -0.090183 0
+-1.50988 -0.112845 0
+-1.9677 -0.134811 0
+-2.48479 -0.155706 0
+-3.0441 -0.176812 0
+-3.62627 -0.201263 0
+-4.20524 -0.233723 0
+-4.73071 -0.278168 0
+-5.08996 -0.313857 0
+-2.81517 -0.100607 0
+-1.51785 0.112177 0
+-1.51785 0.552663 0
+-0.0107214 -0.00212464 0
+-0.0241454 -0.00484197 0
+-0.0544256 -0.00973918 0
+-0.071431 -0.0170054 0
+-0.0930007 -0.0215697 0
+-0.111646 -0.0186457 0
+-0.120084 -0.00843713 0
+-0.114845 0.00523855 0
+-0.0974037 0.0174413 0
+-0.0729564 0.0244473 0
+-0.047967 0.0249894 0
+-0.0278027 0.0201643 0
+-0.0153734 0.0124293 0
+-0.010984 0.00438934 0
+-0.0130495 -0.00206549 0
+-0.0191155 -0.00606599 0
+-0.0267419 -0.00762637 0
+-0.0340466 -0.00730478 0
+-0.039912 -0.00586534 0
+-0.0439478 -0.00403584 0
+-0.0463171 -0.00236932 0
+-0.0475038 -0.00118664 0
+-0.0480835 -0.000579728 0
+-0.0485452 -0.000461673 0
+-0.0491918 -0.000646575 0
+-0.050126 -0.000934271 0
+-0.0512998 -0.00117376 0
+-0.0525895 -0.00128976 0
+-0.0538641 -0.00127451 0
+-0.0550249 -0.00116089 0
+-0.0560196 -0.000994702 0
+-0.056836 -0.000816366 0
+-0.0574889 -0.000652927 0
+-0.0580062 -0.000517284 0
+-0.0584174 -0.000411173 0
+-0.0587466 -0.000329237 0
+-0.0590091 -0.000262426 0
+-0.0592096 -0.000200507 0
+-0.0593441 -0.000134529 0
+-0.0594036 -5.94908e-05 0
+-0.0593796 2.3956e-05 0
+-0.0592694 0.000110199 0
+-0.059077 0.000192438 0
+-0.0588075 0.000269535 0
+-0.0584527 0.0003548 0
+-0.0579702 0.000482475 0
+-0.0572659 0.000704295 0
+-0.0561963 0.00106959 0
+-0.0546056 0.00159073 0
+-0.0523982 0.00220736 0
+-0.0496282 0.00276996 0
+-0.0465682 0.00306005 0
+-0.0437183 0.00284987 0
+-0.0417331 0.00198518 0
+-0.0412742 0.000458975 0
+-0.0428301 -0.00155596 0
+-0.0465617 -0.00373152 0
+-0.0522184 -0.00565672 0
+-0.0591505 -0.00693211 0
+-0.0664091 -0.00725864 0
+-0.0729116 -0.00650251 0
+-0.0776384 -0.00472673 0
+-0.0798238 -0.00218542 0
+-0.0791044 0.000719361 0
+-0.0755934 0.00351103 0
+-0.069867 0.00572641 0
+-0.0628674 0.00699959 0
+-0.0557397 0.00712771 0
+-0.0496275 0.00611219 0
+-0.0454574 0.00417011 0
+-0.0437509 0.00170653 0
+-0.0445132 -0.000762338 0
+-0.0472446 -0.00273138 0
+-0.051089 -0.00384446 0
+-0.0550859 -0.00399685 0
+-0.0584408 -0.00335492 0
+-0.0607203 -0.00227944 0
+-0.0619045 -0.00118422 0
+-0.0622963 -0.000391785 0
+-0.0623411 -4.48236e-05 0
+-0.0624416 -0.000100476 0
+-0.0628359 -0.000394327 0
+-0.0635691 -0.000733185 0
+-0.0645414 -0.000972306 0
+-0.065592 -0.00105061 0
+-0.0665752 -0.000983177 0
+-0.0674039 -0.000828759 0
+-0.068058 -0.000654058 0
+-0.0685673 -0.000509277 0
+-0.0689864 -0.000419132 0
+-0.0693725 -0.000386105 0
+-0.0697722 -0.000399749 0
+-0.0702187 -0.000446483 0
+-0.0707356 -0.000516878 0
+-0.0713456 -0.000609968 0
+-0.0720805 -0.000734952 0
+-0.0729905 -0.000909933 0
+-0.0741473 -0.00115681 0
+-0.0756394 -0.00149214 0
+-0.0775549 -0.00191548 0
+-0.0799535 -0.00239856 0
+-0.0828345 -0.00288103 0
+-0.0861147 -0.00328019 0
+-0.0896361 -0.00352138 0
+-0.093226 -0.00358993 0
+-0.0968227 -0.00359667 0
+-0.100663 -0.00384031 0
+-0.105508 -0.00484515 0
+-0.11286 -0.00735211 0
+-0.125105 -0.0122443 0
+-0.145501 -0.020396 0
+-0.177951 -0.0324504 0
+-0.226517 -0.0485656 0
+-0.294733 -0.0682166 0
+-0.384916 -0.090183 0
+-0.497762 -0.112845 0
+-0.632573 -0.134811 0
+-0.788278 -0.155706 0
+-0.96509 -0.176812 0
+-1.16635 -0.201263 0
+-1.40008 -0.233723 0
+-1.67824 -0.278168 0
+-1.9921 -0.313857 0
+-1.42992 -0.100607 0
+-0.965789 0.112177 0
+-0.965789 0.552663 0
+-0.213644 -0.0883233 0
+-0.437209 -0.165044 0
+-0.881878 -0.275766 0
+-0.46669 -0.415188 0
+0.0359312 -0.502621 0
+0.522385 -0.486454 0
+0.894835 -0.37245 0
+1.09504 -0.200204 0
+1.11612 -0.0210843 0
+0.995069 0.121054 0
+0.79317 0.201899 0
+0.573902 0.219268 0
+0.386066 0.187836 0
+0.256028 0.130037 0
+0.18859 0.0674379 0
+0.173314 0.0152759 0
+0.192527 -0.019213 0
+0.228135 -0.0356078 0
+0.265885 -0.0377501 0
+0.297004 -0.0311192 0
+0.317884 -0.02088 0
+0.328707 -0.0108224 0
+0.331779 -0.00307238 0
+0.330096 0.00168334 0
+0.326364 0.00373224 0
+0.322521 0.00384278 0
+0.319647 0.00287385 0
+0.31811 0.00153728 0
+0.317807 0.000302669 0
+0.318404 -0.000597366 0
+0.319513 -0.00110888 0
+0.320796 -0.00128273 0
+0.322005 -0.00120913 0
+0.322978 -0.000972644 0
+0.323609 -0.000631456 0
+0.323828 -0.000218902 0
+0.323591 0.000237213 0
+0.322906 0.00068534 0
+0.321882 0.00102348 0
+0.32079 0.00109189 0
+0.320088 0.000702097 0
+0.320378 -0.000289386 0
+0.322249 -0.00187173 0
+0.326019 -0.00376944 0
+0.331407 -0.00538827 0
+0.337286 -0.00587919 0
+0.34164 -0.00435342 0
+0.341861 -0.00022152 0
+0.335419 0.00644237 0
+0.320761 0.0146578 0
+0.298204 0.0225573 0
+0.27047 0.0277332 0
+0.24261 0.02786 0
+0.221191 0.0214195 0
+0.212893 0.00829795 0
+0.222843 -0.00995041 0
+0.25312 -0.0302764 0
+0.301835 -0.0487152 0
+0.363069 -0.0612338 0
+0.427719 -0.0646508 0
+0.485151 -0.0574319 0
+0.525328 -0.0401771 0
+0.540973 -0.0156447 0
+0.529213 0.0117598 0
+0.492261 0.0369526 0
+0.436922 0.0553391 0
+0.373081 0.0638411 0
+0.311571 0.0615095 0
+0.261958 0.0496127 0
+0.230723 0.0312351 0
+0.220217 0.0105064 0
+0.228585 -0.00836802 0
+0.250641 -0.0220557 0
+0.279428 -0.0287875 0
+0.30803 -0.0286015 0
+0.331116 -0.0230867 0
+0.345848 -0.0147319 0
+0.351969 -0.0061213 0
+0.351213 0.000756516 0
+0.346326 0.00488664 0
+0.340089 0.00623739 0
+0.334607 0.00548215 0
+0.331011 0.00359521 0
+0.329526 0.00148527 0
+0.329755 -0.000228896 0
+0.331032 -0.00127699 0
+0.332703 -0.00167067 0
+0.334284 -0.00158075 0
+0.335503 -0.00121946 0
+0.336266 -0.00076317 0
+0.33659 -0.000323522 0
+0.336546 4.36363e-05 0
+0.336237 0.000309434 0
+0.335796 0.000440894 0
+0.335415 0.000380593 0
+0.33537 4.52802e-05 0
+0.336022 -0.00065196 0
+0.337777 -0.00175499 0
+0.340975 -0.00319805 0
+0.345708 -0.00473322 0
+0.351586 -0.00587781 0
+0.357506 -0.0059201 0
+0.361535 -0.00402887 0
+0.361039 0.000496029 0
+0.353213 0.00782597 0
+0.336102 0.0171106 0
+0.310083 0.0260194 0
+0.279553 0.0305296 0
+0.25432 0.0252335 0
+0.249895 0.00442453 0
+0.285825 -0.0359296 0
+0.3814 -0.0955753 0
+0.5489 -0.1675 0
+0.785799 -0.236899 0
+1.06883 -0.283032 0
+1.35358 -0.284752 0
+1.58256 -0.228975 0
+1.70188 -0.119326 0
+1.68273 0.0191552 0
+1.53985 0.142883 0
+1.33854 0.201303 0
+1.18201 0.156531 0
+1.15326 0.02875 0
+1.04287 0.127566 0
+0.785356 0.264683 0
+0.785356 0.683967 0
+-0.896181 -0.336925 0
+-1.79243 -0.601893 0
+-3.56979 -0.996535 0
+-2.48427 -1.50071 0
+-1.16929 -1.81759 0
+0.0683049 -1.72405 0
+0.933802 -1.23795 0
+1.26177 -0.52817 0
+1.05573 0.184957 0
+0.458288 0.718492 0
+-0.319801 0.979988 0
+-1.07579 0.975257 0
+-1.6682 0.780251 0
+-2.03601 0.497847 0
+-2.18831 0.219733 0
+-2.1779 0.00486424 0
+-2.07271 -0.124403 0
+-1.93415 -0.174168 0
+-1.80563 -0.166263 0
+-1.71013 -0.126622 0
+-1.65353 -0.0774804 0
+-1.63058 -0.033769 0
+-1.63088 -0.00277723 0
+-1.64345 0.014253 0
+-1.65951 0.0197934 0
+-1.67349 0.0178232 0
+-1.68285 0.0122305 0
+-1.68726 0.00595175 0
+-1.68769 0.000731118 0
+-1.68556 -0.00272747 0
+-1.68223 -0.00443504 0
+-1.67875 -0.00477125 0
+-1.67575 -0.00420319 0
+-1.67362 -0.00310657 0
+-1.67256 -0.00169323 0
+-1.67274 -3.16386e-05 0
+-1.67436 0.00185762 0
+-1.67754 0.00385761 0
+-1.68212 0.00561061 0
+-1.68748 0.00644821 0
+-1.69226 0.00547847 0
+-1.69443 0.00188585 0
+-1.69173 -0.00457439 0
+-1.68248 -0.0130224 0
+-1.66676 -0.0211003 0
+-1.64751 -0.0251279 0
+-1.6309 -0.0209648 0
+-1.62562 -0.00550572 0
+-1.64079 0.0216134 0
+-1.68291 0.0567752 0
+-1.75263 0.0922816 0
+-1.84265 0.117754 0
+-1.93762 0.12283 0
+-2.0166 0.100395 0
+-2.05758 0.0492827 0
+-2.04305 -0.0244879 0
+-1.96492 -0.108399 0
+-1.82775 -0.185888 0
+-1.64905 -0.239931 0
+-1.45679 -0.256911 0
+-1.28423 -0.229991 0
+-1.16315 -0.161264 0
+-1.11679 -0.0620067 0
+-1.15442 0.0493935 0
+-1.26906 0.151589 0
+-1.43905 0.225337 0
+-1.63313 0.257913 0
+-1.81725 0.245635 0
+-1.96177 0.194133 0
+-2.04713 0.116596 0
+-2.06715 0.030523 0
+-2.02913 -0.0463824 0
+-1.95091 -0.10028 0
+-1.85553 -0.124168 0
+-1.76523 -0.118904 0
+-1.69634 -0.0919762 0
+-1.65654 -0.0545288 0
+-1.64491 -0.0177501 0
+-1.6543 0.0101406 0
+-1.67483 0.0254177 0
+-1.69727 0.0286814 0
+-1.71522 0.0234362 0
+-1.72583 0.0141989 0
+-1.72923 0.00488839 0
+-1.7274 -0.00206359 0
+-1.72284 -0.00582947 0
+-1.71774 -0.00676983 0
+-1.7135 -0.00582354 0
+-1.71074 -0.00398005 0
+-1.70953 -0.00196984 0
+-1.70968 -0.000182326 0
+-1.71089 0.00125426 0
+-1.7129 0.00231869 0
+-1.7154 0.0029442 0
+-1.71794 0.00291805 0
+-1.71975 0.00186213 0
+-1.71972 -0.000687448 0
+-1.71638 -0.0050916 0
+-1.70826 -0.0113188 0
+-1.69439 -0.0185989 0
+-1.67515 -0.0251177 0
+-1.65316 -0.0279122 0
+-1.63401 -0.0231796 0
+-1.62631 -0.00720322 0
+-1.64049 0.0220069 0
+-1.68588 0.062497 0
+-1.76591 0.106046 0
+-1.87197 0.136594 0
+-1.97739 0.130652 0
+-2.03399 0.0610263 0
+-1.97471 -0.0952101 0
+-1.7253 -0.344986 0
+-1.22611 -0.666689 0
+-0.460441 -1.00257 0
+0.519855 -1.26333 0
+1.585 -1.34989 0
+2.54654 -1.19052 0
+3.20853 -0.781315 0
+3.43806 -0.210372 0
+3.22695 0.353991 0
+2.70854 0.719712 0
+2.09835 0.766725 0
+1.54504 0.582057 0
+1.05278 0.68986 0
+0.629416 0.717811 0
+0.629416 1.31007 0
+-1.84465 -0.650716 0
+-3.67614 -1.15074 0
+-7.31237 -1.898 0
+-5.95595 -2.85713 0
+-4.34455 -3.42899 0
+-2.94968 -3.11893 0
+-2.21631 -1.97132 0
+-2.35756 -0.386914 0
+-3.29291 1.1203 0
+-4.71855 2.14413 0
+-6.24906 2.5105 0
+-7.55586 2.28206 0
+-8.44998 1.67437 0
+-8.89508 0.942954 0
+-8.96873 0.29338 0
+-8.80307 -0.16079 0
+-8.53203 -0.39545 0
+-8.2585 -0.447696 0
+-8.04292 -0.381843 0
+-7.90705 -0.262491 0
+-7.84543 -0.139097 0
+-7.83832 -0.040888 0
+-7.86235 0.0212544 0
+-7.89753 0.0494405 0
+-7.93039 0.0526499 0
+-7.95416 0.041594 0
+-7.96733 0.0254036 0
+-7.97158 0.0101946 0
+-7.96988 -0.000968332 0
+-7.96524 -0.00736443 0
+-7.95998 -0.00969351 0
+-7.95552 -0.00923729 0
+-7.95248 -0.00724337 0
+-7.95101 -0.0045723 0
+-7.95112 -0.00158493 0
+-7.95293 0.00177865 0
+-7.95683 0.00576009 0
+-7.96339 0.0104135 0
+-7.97297 0.0151943 0
+-7.9852 0.0186808 0
+-7.99837 0.0186474 0
+-8.00916 0.0126727 0
+-8.01305 -0.000680771 0
+-8.00571 -0.0203669 0
+-7.98515 -0.0416638 0
+-7.95414 -0.056134 0
+-7.92172 -0.0533893 0
+-7.90259 -0.0246322 0
+-7.91396 0.0329818 0
+-7.97004 0.112859 0
+-8.07594 0.198178 0
+-8.22303 0.264849 0
+-8.38807 0.287869 0
+-8.53685 0.249179 0
+-8.63191 0.14434 0
+-8.64206 -0.0143379 0
+-8.55113 -0.19933 0
+-8.36345 -0.373572 0
+-8.10477 -0.498614 0
+-7.81841 -0.543268 0
+-7.55727 -0.491132 0
+-7.37284 -0.345686 0
+-7.30344 -0.131413 0
+-7.3646 0.110553 0
+-7.54503 0.332021 0
+-7.80944 0.489748 0
+-8.10719 0.555659 0
+-8.38385 0.522295 0
+-8.59273 0.403014 0
+-8.70408 0.22795 0
+-8.71038 0.036816 0
+-8.62642 -0.130336 0
+-8.48414 -0.242564 0
+-8.32321 -0.285098 0
+-8.1804 -0.261711 0
+-8.08082 -0.191558 0
+-8.03363 -0.101718 0
+-8.03307 -0.0183101 0
+-8.06358 0.0406506 0
+-8.10663 0.068466 0
+-8.14665 0.0687059 0
+-8.17443 0.0512096 0
+-8.18748 0.0272514 0
+-8.18834 0.00574996 0
+-8.1819 -0.0085061 0
+-8.17304 -0.0146828 0
+-8.16528 -0.0145367 0
+-8.16032 -0.0107833 0
+-8.15845 -0.00585202 0
+-8.15914 -0.001275 0
+-8.16168 0.00235883 0
+-8.16552 0.00509685 0
+-8.17039 0.00718939 0
+-8.17615 0.00870054 0
+-8.18249 0.00925546 0
+-8.18859 0.00796397 0
+-8.19283 0.00355283 0
+-8.19267 -0.00525406 0
+-8.1849 -0.0190909 0
+-8.1664 -0.037094 0
+-8.13551 -0.0560059 0
+-8.09385 -0.0695763 0
+-8.04825 -0.0687768 0
+-8.01204 -0.0434181 0
+-8.00444 0.0144155 0
+-8.04712 0.105174 0
+-8.15677 0.21569 0
+-8.33397 0.313794 0
+-8.54981 0.346493 0
+-8.73414 0.245364 0
+-8.77197 -0.0573803 0
+-8.51571 -0.601245 0
+-7.81912 -1.36328 0
+-6.59097 -2.23072 0
+-4.85419 -3.00011 0
+-2.78395 -3.42013 0
+-0.69529 -3.27918 0
+1.03466 -2.51126 0
+2.09365 -1.26937 0
+2.35893 0.0887096 0
+1.9508 1.12785 0
+1.16843 1.54909 0
+0.339192 1.4113 0
+-0.0695076 1.25655 0
+-0.19492 0.911838 0
+-0.19492 1.36579 0
+-2.71792 -0.902076 0
+-5.44035 -1.58606 0
+-10.8814 -2.60112 0
+-9.85066 -3.8879 0
+-8.73395 -4.54571 0
+-8.04825 -3.80463 0
+-8.23929 -1.78028 0
+-9.43465 0.808441 0
+-11.3942 3.07986 0
+-13.641 4.39092 0
+-15.6725 4.54201 0
+-17.1386 3.74817 0
+-17.9183 2.45405 0
+-18.0927 1.11733 0
+-17.8582 0.0588929 0
+-17.433 -0.58599 0
+-16.9921 -0.836301 0
+-16.6413 -0.798585 0
+-16.4201 -0.603028 0
+-16.3214 -0.361195 0
+-16.313 -0.14744 0
+-16.3563 0.00235014 0
+-16.4175 0.0825088 0
+-16.474 0.105949 0
+-16.5145 0.0931172 0
+-16.5367 0.0637831 0
+-16.5438 0.0325452 0
+-16.5413 0.00767805 0
+-16.5344 -0.00787555 0
+-16.5271 -0.0146987 0
+-16.5216 -0.0151469 0
+-16.5189 -0.0119802 0
+-16.5187 -0.00746285 0
+-16.5203 -0.00292711 0
+-16.5232 0.00129674 0
+-16.5271 0.00570947 0
+-16.5326 0.0112572 0
+-16.5409 0.0186903 0
+-16.5534 0.0277487 0
+-16.5712 0.0364656 0
+-16.5936 0.0409969 0
+-16.6173 0.036383 0
+-16.6365 0.0184928 0
+-16.6437 -0.0130874 0
+-16.6331 -0.0522673 0
+-16.6038 -0.0854762 0
+-16.5631 -0.0940297 0
+-16.5276 -0.0601444 0
+-16.5196 0.0249226 0
+-16.5605 0.153736 0
+-16.6624 0.300136 0
+-16.8212 0.423648 0
+-17.0138 0.480435 0
+-17.202 0.437382 0
+-17.3418 0.2842 0
+-17.3952 0.0390696 0
+-17.3405 -0.254084 0
+-17.1786 -0.53544 0
+-16.9344 -0.742804 0
+-16.6525 -0.825209 0
+-16.3891 -0.754494 0
+-16.201 -0.533839 0
+-16.1314 -0.200992 0
+-16.1986 0.177723 0
+-16.3901 0.523597 0
+-16.6669 0.766531 0
+-16.9735 0.862238 0
+-17.2514 0.800181 0
+-17.4512 0.602779 0
+-17.5422 0.318973 0
+-17.5188 0.0134007 0
+-17.4008 -0.248331 0
+-17.2276 -0.415743 0
+-17.0466 -0.466086 0
+-16.8997 -0.40866 0
+-16.8123 -0.278949 0
+-16.7891 -0.124865 0
+-16.8168 0.00939666 0
+-16.8719 0.0957556 0
+-16.9304 0.12696 0
+-16.9751 0.113371 0
+-16.9986 0.0747507 0
+-17.0026 0.0312546 0
+-16.994 -0.00293109 0
+-16.9806 -0.0218427 0
+-16.9689 -0.0264322 0
+-16.962 -0.0214517 0
+-16.9604 -0.0123466 0
+-16.963 -0.00323849 0
+-16.9681 0.00379647 0
+-16.9742 0.00847952 0
+-16.9807 0.0115803 0
+-16.9876 0.014075 0
+-16.9953 0.0164719 0
+-17.0045 0.018394 0
+-17.0149 0.0184111 0
+-17.0255 0.01415 0
+-17.0335 0.00277893 0
+-17.0346 -0.0180336 0
+-17.023 -0.0486815 0
+-16.9932 -0.0858624 0
+-16.9418 -0.120945 0
+-16.8712 -0.139329 0
+-16.7927 -0.12198 0
+-16.7281 -0.0501672 0
+-16.7091 0.0862039 0
+-16.7708 0.277409 0
+-16.9391 0.482016 0
+-17.211 0.618471 0
+-17.5325 0.566781 0
+-17.7784 0.188598 0
+-17.7515 -0.628174 0
+-17.2111 -1.90366 0
+-15.942 -3.49982 0
+-13.8499 -5.09222 0
+-11.0485 -6.22154 0
+-7.88687 -6.44084 0
+-4.87743 -5.5207 0
+-2.53015 -3.61665 0
+-1.15653 -1.28491 0
+-0.743701 0.71502 0
+-0.972687 1.77808 0
+-1.36007 1.79868 0
+-1.11518 1.28637 0
+-0.725895 0.64481 0
+-0.725895 1.00418 0
+-3.26738 -1.01784 0
+-6.59384 -1.77293 0
+-13.3012 -2.87058 0
+-12.9856 -4.20356 0
+-12.8848 -4.64644 0
+-13.4275 -3.26195 0
+-14.8927 -0.315084 0
+-17.1971 3.11284 0
+-19.9063 5.78907 0
+-22.4354 6.92001 0
+-24.3009 6.40747 0
+-25.286 4.73327 0
+-25.4596 2.62772 0
+-25.0787 0.736446 0
+-24.4508 -0.569036 0
+-23.8266 -1.2102 0
+-23.3525 -1.31036 0
+-23.0754 -1.07578 0
+-22.9736 -0.704736 0
+-22.9937 -0.341161 0
+-23.0767 -0.064418 0
+-23.1749 0.100566 0
+-23.2578 0.165426 0
+-23.312 0.160143 0
+-23.3371 0.118185 0
+-23.3401 0.066797 0
+-23.3305 0.022925 0
+-23.3166 -0.00624486 0
+-23.3041 -0.0203577 0
+-23.2961 -0.0227249 0
+-23.2933 -0.0179351 0
+-23.295 -0.010264 0
+-23.2997 -0.00274252 0
+-23.3058 0.00315388 0
+-23.3119 0.00739453 0
+-23.3173 0.01115 0
+-23.3225 0.0164039 0
+-23.3289 0.0251525 0
+-23.3394 0.0381685 0
+-23.3566 0.0537361 0
+-23.3826 0.0669374 0
+-23.4163 0.0701233 0
+-23.453 0.0552306 0
+-23.4842 0.0180911 0
+-23.4999 -0.0365619 0
+-23.4932 -0.0921682 0
+-23.4649 -0.122361 0
+-23.4261 -0.0989902 0
+-23.3968 -0.00428957 0
+-23.4005 0.157411 0
+-23.4546 0.35421 0
+-23.5626 0.531649 0
+-23.7103 0.628114 0
+-23.8684 0.595461 0
+-24.0009 0.416793 0
+-24.0763 0.114427 0
+-24.0757 -0.254673 0
+-23.9977 -0.613423 0
+-23.8576 -0.882953 0
+-23.6839 -0.998871 0
+-23.5147 -0.923752 0
+-23.3908 -0.657726 0
+-23.346 -0.245777 0
+-23.3955 0.227196 0
+-23.5303 0.658398 0
+-23.7213 0.957543 0
+-23.9292 1.07011 0
+-24.1138 0.98487 0
+-24.2413 0.730218 0
+-24.2895 0.36716 0
+-24.2544 -0.0217091 0
+-24.1525 -0.35016 0
+-24.0174 -0.550903 0
+-23.8888 -0.59466 0
+-23.8002 -0.49722 0
+-23.7683 -0.310867 0
+-23.7895 -0.103698 0
+-23.8444 0.0643546 0
+-23.9077 0.159036 0
+-23.9577 0.17695 0
+-23.9831 0.138726 0
+-23.9838 0.0754941 0
+-23.968 0.0154654 0
+-23.9466 -0.0243746 0
+-23.9285 -0.0398773 0
+-23.9188 -0.0362025 0
+-23.9179 -0.0223373 0
+-23.9237 -0.00652827 0
+-23.933 0.00607049 0
+-23.943 0.013729 0
+-23.9517 0.0172665 0
+-23.9589 0.0187281 0
+-23.965 0.0201512 0
+-23.9712 0.0227198 0
+-23.9791 0.0263042 0
+-23.9899 0.0292216 0
+-24.004 0.0281991 0
+-24.0199 0.0187392 0
+-24.0341 -0.00388248 0
+-24.0399 -0.0428642 0
+-24.0284 -0.0973607 0
+-23.9898 -0.159525 0
+-23.917 -0.212177 0
+-23.81 -0.228937 0
+-23.6815 -0.178676 0
+-23.5599 -0.0353666 0
+-23.4893 0.206809 0
+-23.5219 0.514588 0
+-23.7004 0.796973 0
+-24.0289 0.895212 0
+-24.4358 0.595527 0
+-24.7446 -0.319391 0
+-24.6742 -1.97398 0
+-23.8946 -4.27946 0
+-22.1394 -6.84745 0
+-19.3449 -9.01604 0
+-15.7457 -10.04 0
+-11.8553 -9.41104 0
+-8.30624 -7.16575 0
+-5.60511 -3.98604 0
+-3.92603 -0.964066 0
+-3.05805 0.910104 0
+-2.53849 1.27911 0
+-1.50003 0.656411 0
+-0.729423 0.0608434 0
+-0.729423 0.563567 0
+-3.42719 -0.996534 0
+-6.97864 -1.70586 0
+-14.1931 -2.69269 0
+-14.6221 -3.77454 0
+-15.5495 -3.71899 0
+-17.2166 -1.59487 0
+-19.6328 2.10111 0
+-22.4653 5.94537 0
+-25.1449 8.46865 0
+-27.1186 8.89372 0
+-28.0868 7.37569 0
+-28.0929 4.7393 0
+-27.4435 1.97831 0
+-26.5369 -0.170082 0
+-25.7039 -1.40205 0
+-25.1268 -1.78733 0
+-24.8429 -1.59421 0
+-24.796 -1.12278 0
+-24.8936 -0.607113 0
+-25.0487 -0.186002 0
+-25.1989 0.0857726 0
+-25.3099 0.211567 0
+-25.3713 0.226775 0
+-25.3887 0.177592 0
+-25.3764 0.10582 0
+-25.3498 0.0402188 0
+-25.3215 -0.00539991 0
+-25.2989 -0.0288149 0
+-25.2851 -0.0341349 0
+-25.2801 -0.0276826 0
+-25.2823 -0.0157476 0
+-25.2893 -0.00334576 0
+-25.2985 0.00648061 0
+-25.308 0.0126491 0
+-25.3162 0.0155841 0
+-25.322 0.016983 0
+-25.3253 0.0197353 0
+-25.3274 0.0272416 0
+-25.3311 0.0418893 0
+-25.3407 0.0632777 0
+-25.3606 0.0868394 0
+-25.3939 0.103457 0
+-25.4399 0.101261 0
+-25.4926 0.0707075 0
+-25.541 0.0118666 0
+-25.5732 -0.0599155 0
+-25.5811 -0.114473 0
+-25.5646 -0.1155 0
+-25.5332 -0.0356912 0
+-25.503 0.127236 0
+-25.4903 0.341477 0
+-25.5042 0.545575 0
+-25.5432 0.667042 0
+-25.596 0.648317 0
+-25.6482 0.468934 0
+-25.6882 0.154488 0
+-25.7121 -0.230838 0
+-25.7216 -0.603889 0
+-25.7201 -0.884425 0
+-25.7091 -1.00985 0
+-25.6909 -0.94197 0
+-25.6734 -0.675268 0
+-25.6681 -0.251017 0
+-25.6823 0.241359 0
+-25.7137 0.689826 0
+-25.7549 0.998737 0
+-25.8001 1.1153 0
+-25.846 1.03072 0
+-25.8865 0.77077 0
+-25.9121 0.392781 0
+-25.9154 -0.0184199 0
+-25.8982 -0.367348 0
+-25.8733 -0.575806 0
+-25.859 -0.609036 0
+-25.8696 -0.486556 0
+-25.9085 -0.271976 0
+-25.9657 -0.0464711 0
+-26.0232 0.121791 0
+-26.063 0.198832 0
+-26.0751 0.189046 0
+-26.0603 0.123909 0
+-26.0281 0.0433824 0
+-25.992 -0.0206711 0
+-25.9633 -0.0531137 0
+-25.948 -0.0551022 0
+-25.9467 -0.0375835 0
+-25.9555 -0.0135066 0
+-25.9695 0.00747227 0
+-25.9842 0.0207473 0
+-25.9965 0.0260898 0
+-26.0053 0.0259915 0
+-26.0104 0.0238811 0
+-26.013 0.0227114 0
+-26.0145 0.024213 0
+-26.0168 0.0286464 0
+-26.0222 0.0345846 0
+-26.0326 0.0386123 0
+-26.0492 0.0353293 0
+-26.0711 0.0180298 0
+-26.0942 -0.0197779 0
+-26.1098 -0.0817235 0
+-26.1047 -0.164624 0
+-26.0627 -0.254167 0
+-25.969 -0.322616 0
+-25.8165 -0.331196 0
+-25.6131 -0.238748 0
+-25.3892 -0.0171474 0
+-25.201 0.326415 0
+-25.1256 0.721557 0
+-25.2383 1.0079 0
+-25.5694 0.92664 0
+-26.0473 0.158502 0
+-26.454 -1.56721 0
+-26.4336 -4.29994 0
+-25.5822 -7.6988 0
+-23.6113 -10.987 0
+-20.5133 -13.138 0
+-16.6329 -13.2914 0
+-12.5722 -11.2265 0
+-8.9536 -7.60461 0
+-6.16157 -3.7561 0
+-4.21469 -1.03677 0
+-2.85656 -0.0790189 0
+-1.29919 -0.355867 0
+-0.436523 -0.545865 0
+-0.436523 0.282536 0
+-3.27307 -0.881445 0
+-6.71118 -1.46535 0
+-13.7163 -2.21147 0
+-14.6418 -2.84905 0
+-16.2009 -2.1599 0
+-18.4096 0.613845 0
+-21.0094 4.70086 0
+-23.4921 8.42814 0
+-25.2955 10.272 0
+-26.0593 9.65752 0
+-25.782 7.09831 0
+-24.7893 3.74662 0
+-23.555 0.744066 0
+-22.4924 -1.23271 0
+-21.8254 -2.06907 0
+-21.5771 -2.03568 0
+-21.6397 -1.53158 0
+-21.8644 -0.89808 0
+-22.1243 -0.347181 0
+-22.3402 0.0298462 0
+-22.4785 0.224078 0
+-22.5383 0.271437 0
+-22.537 0.225422 0
+-22.4984 0.139035 0
+-22.4458 0.053165 0
+-22.3963 -0.00922585 0
+-22.3595 -0.0422446 0
+-22.3376 -0.0507296 0
+-22.3287 -0.0430239 0
+-22.3294 -0.0269744 0
+-22.3361 -0.00898968 0
+-22.3458 0.00636101 0
+-22.3562 0.0168822 0
+-22.366 0.0223754 0
+-22.374 0.0236316 0
+-22.3793 0.0222901 0
+-22.3811 0.0214857 0
+-22.3794 0.0256 0
+-22.3761 0.0385939 0
+-22.3749 0.0620361 0
+-22.3814 0.0933897 0
+-22.4024 0.124459 0
+-22.4427 0.141539 0
+-22.502 0.129997 0
+-22.5733 0.083185 0
+-22.6441 0.0108671 0
+-22.6997 -0.0588923 0
+-22.7278 -0.0873889 0
+-22.7224 -0.0411476 0
+-22.6846 0.0894805 0
+-22.6211 0.27803 0
+-22.5404 0.464829 0
+-22.4504 0.577066 0
+-22.3599 0.557744 0
+-22.2806 0.389632 0
+-22.2291 0.10308 0
+-22.2244 -0.235554 0
+-22.2793 -0.549017 0
+-22.3898 -0.773913 0
+-22.5298 -0.869879 0
+-22.6603 -0.8115 0
+-22.7498 -0.585764 0
+-22.7835 -0.217279 0
+-22.7585 0.216367 0
+-22.68 0.61128 0
+-22.5655 0.884234 0
+-22.4493 0.999172 0
+-22.3716 0.953018 0
+-22.3565 0.755606 0
+-22.4032 0.43954 0
+-22.4943 0.0726715 0
+-22.6084 -0.253227 0
+-22.7293 -0.454956 0
+-22.8469 -0.491415 0
+-22.9543 -0.379198 0
+-23.0434 -0.182785 0
+-23.105 0.0150823 0
+-23.131 0.147808 0
+-23.1198 0.187584 0
+-23.0782 0.147455 0
+-23.0202 0.065975 0
+-22.9624 -0.0145094 0
+-22.918 -0.0650633 0
+-22.894 -0.0771083 0
+-22.89 -0.0590926 0
+-22.9004 -0.0271758 0
+-22.9178 0.00394733 0
+-22.9361 0.0257621 0
+-22.9514 0.0360119 0
+-22.962 0.0366652 0
+-22.9677 0.03176 0
+-22.9694 0.0255668 0
+-22.968 0.0212747 0
+-22.9644 0.0206217 0
+-22.9599 0.0241581 0
+-22.9565 0.0311718 0
+-22.9569 0.0390389 0
+-22.9644 0.0427631 0
+-22.9815 0.0351891 0
+-23.0091 0.00777799 0
+-23.0432 -0.0475601 0
+-23.0734 -0.134475 0
+-23.0812 -0.246386 0
+-23.042 -0.361748 0
+-22.9295 -0.443699 0
+-22.7227 -0.445561 0
+-22.4175 -0.322398 0
+-22.0409 -0.0501778 0
+-21.6636 0.344318 0
+-21.3989 0.743183 0
+-21.3731 0.900784 0
+-21.6612 0.446636 0
+-22.204 -1.02445 0
+-22.7505 -3.75338 0
+-22.8842 -7.56513 0
+-22.1567 -11.7144 0
+-20.2901 -15.0046 0
+-17.3403 -16.2412 0
+-13.7145 -14.8523 0
+-10.0098 -11.3094 0
+-6.75951 -7.00637 0
+-4.24567 -3.55061 0
+-2.50182 -1.82287 0
+-0.847547 -1.3386 0
+-0.133963 -0.935276 0
+-0.133963 0.236438 0
+-2.9341 -0.72597 0
+-6.03086 -1.15463 0
+-12.3197 -1.6188 0
+-13.3985 -1.77028 0
+-15.0563 -0.502119 0
+-17.1093 2.66683 0
+-19.1238 6.71534 0
+-20.5651 9.86944 0
+-21.0365 10.7435 0
+-20.4748 9.09585 0
+-19.1782 5.80174 0
+-17.653 2.22134 0
+-16.3793 -0.529584 0
+-15.6323 -1.9797 0
+-15.435 -2.26643 0
+-15.6316 -1.83903 0
+-16.009 -1.15423 0
+-16.3911 -0.515995 0
+-16.6779 -0.0603664 0
+-16.8389 0.190909 0
+-16.8881 0.273286 0
+-16.8591 0.242346 0
+-16.788 0.154367 0
+-16.7054 0.0564015 0
+-16.6323 -0.0199463 0
+-16.5797 -0.0618353 0
+-16.5493 -0.0726332 0
+-16.5366 -0.0633455 0
+-16.5355 -0.0441562 0
+-16.5407 -0.0218173 0
+-16.5485 -0.00115911 0
+-16.5566 0.0144404 0
+-16.5638 0.024073 0
+-16.5701 0.0287079 0
+-16.5757 0.0292491 0
+-16.5799 0.0264937 0
+-16.5814 0.0229783 0
+-16.5792 0.0233374 0
+-16.5729 0.0323742 0
+-16.5642 0.0533001 0
+-16.5574 0.0865895 0
+-16.5604 0.1275 0
+-16.5825 0.163612 0
+-16.63 0.177528 0
+-16.7031 0.156286 0
+-16.794 0.101714 0
+-16.8873 0.0343726 0
+-16.9627 -0.0119147 0
+-17 -0.00391069 0
+-16.9832 0.0727255 0
+-16.9045 0.199327 0
+-16.765 0.325295 0
+-16.5759 0.388026 0
+-16.3603 0.34213 0
+-16.1525 0.181855 0
+-15.9948 -0.0547004 0
+-15.9285 -0.301817 0
+-15.981 -0.496479 0
+-16.1485 -0.606457 0
+-16.3853 -0.633027 0
+-16.6176 -0.579254 0
+-16.7813 -0.422098 0
+-16.8412 -0.157296 0
+-16.7865 0.161593 0
+-16.6267 0.451526 0
+-16.3981 0.655612 0
+-16.1684 0.769463 0
+-16.0154 0.800076 0
+-15.9859 0.726091 0
+-16.0817 0.535322 0
+-16.272 0.262998 0
+-16.5125 -0.0127638 0
+-16.7594 -0.208015 0
+-16.9777 -0.27314 0
+-17.1435 -0.213417 0
+-17.2443 -0.082018 0
+-17.278 0.048841 0
+-17.2528 0.122616 0
+-17.1857 0.120478 0
+-17.0993 0.061033 0
+-17.016 -0.0172853 0
+-16.9527 -0.0778518 0
+-16.9171 -0.100616 0
+-16.9083 -0.0859629 0
+-16.9185 -0.048836 0
+-16.9379 -0.00783397 0
+-16.9579 0.023929 0
+-16.9737 0.0416306 0
+-16.9841 0.0463741 0
+-16.9894 0.0419994 0
+-16.9909 0.0332109 0
+-16.9895 0.0242225 0
+-16.9859 0.0176277 0
+-16.9798 0.0144903 0
+-16.971 0.0153661 0
+-16.9603 0.0204536 0
+-16.9497 0.028484 0
+-16.9428 0.0358842 0
+-16.9444 0.0368152 0
+-16.9598 0.0230869 0
+-16.9916 -0.0156702 0
+-17.037 -0.0891119 0
+-17.0835 -0.199881 0
+-17.1079 -0.33733 0
+-17.0763 -0.475363 0
+-16.9468 -0.575026 0
+-16.6789 -0.590303 0
+-16.2506 -0.478524 0
+-15.6839 -0.222359 0
+-15.069 0.128283 0
+-14.5661 0.397933 0
+-14.3634 0.243949 0
+-14.585 -0.802855 0
+-15.1824 -3.15603 0
+-15.8761 -6.87145 0
+-16.2115 -11.379 0
+-15.7346 -15.4816 0
+-14.2083 -17.7675 0
+-11.7465 -17.314 0
+-8.77712 -14.2787 0
+-5.85576 -9.92774 0
+-3.45349 -5.95288 0
+-1.85519 -3.42117 0
+-0.435944 -1.97813 0
+0.0259078 -1.01057 0
+0.0259078 0.385412 0
+-2.5264 -0.571737 0
+-5.17503 -0.85587 0
+-10.4999 -1.0701 0
+-11.4504 -0.819767 0
+-12.7851 0.832627 0
+-14.1908 4.07249 0
+-15.1924 7.71693 0
+-15.3783 10.0554 0
+-14.618 9.98316 0
+-13.1435 7.62135 0
+-11.4416 4.09987 0
+-10.0243 0.803975 0
+-9.2142 -1.33966 0
+-9.05565 -2.13824 0
+-9.36896 -1.95312 0
+-9.88713 -1.32085 0
+-10.3839 -0.657455 0
+-10.7349 -0.165033 0
+-10.9116 0.116364 0
+-10.944 0.223302 0
+-10.8835 0.212774 0
+-10.7797 0.138596 0
+-10.6699 0.0445701 0
+-10.5768 -0.0367538 0
+-10.5108 -0.0859371 0
+-10.4731 -0.0995238 0
+-10.4579 -0.087839 0
+-10.4561 -0.0651272 0
+-10.46 -0.040285 0
+-10.4652 -0.0166056 0
+-10.4698 0.00342761 0
+-10.4727 0.0173303 0
+-10.4739 0.0253105 0
+-10.4749 0.0296542 0
+-10.4768 0.03117 0
+-10.4794 0.029158 0
+-10.4815 0.0250178 0
+-10.4813 0.0231742 0
+-10.4772 0.0282686 0
+-10.4678 0.0438476 0
+-10.4543 0.0730885 0
+-10.443 0.116216 0
+-10.4443 0.164927 0
+-10.469 0.20222 0
+-10.5241 0.211397 0
+-10.6094 0.187034 0
+-10.7145 0.139482 0
+-10.8181 0.0916564 0
+-10.8916 0.069618 0
+-10.9066 0.0876905 0
+-10.8417 0.134426 0
+-10.6886 0.172179 0
+-10.4566 0.156018 0
+-10.1753 0.0608982 0
+-9.89256 -0.100915 0
+-9.66564 -0.281616 0
+-9.54933 -0.418128 0
+-9.58046 -0.465352 0
+-9.75903 -0.42789 0
+-10.0316 -0.360479 0
+-10.3015 -0.309336 0
+-10.4905 -0.233114 0
+-10.5584 -0.0893788 0
+-10.4912 0.0943728 0
+-10.2982 0.258579 0
+-10.0188 0.376196 0
+-9.73616 0.486816 0
+-9.55333 0.617241 0
+-9.52798 0.700741 0
+-9.66079 0.668135 0
+-9.91285 0.515052 0
+-10.226 0.300436 0
+-10.5394 0.1053 0
+-10.8014 -0.0110793 0
+-10.9792 -0.0356408 0
+-11.0613 4.00854e-05 0
+-11.0559 0.0434956 0
+-10.9864 0.0530713 0
+-10.884 0.018155 0
+-10.7804 -0.042651 0
+-10.6988 -0.0988656 0
+-10.6504 -0.126219 0
+-10.6346 -0.116466 0
+-10.6425 -0.0780076 0
+-10.6622 -0.0291053 0
+-10.6829 0.0128013 0
+-10.698 0.0390111 0
+-10.7061 0.0497179 0
+-10.7087 0.0490401 0
+-10.7081 0.0414041 0
+-10.7059 0.0310167 0
+-10.7031 0.0213797 0
+-10.6995 0.0140201 0
+-10.6938 0.00885439 0
+-10.6846 0.00616865 0
+-10.6712 0.00702448 0
+-10.6542 0.0114489 0
+-10.6357 0.0173829 0
+-10.6201 0.0212421 0
+-10.6144 0.0173709 0
+-10.6262 -0.00389876 0
+-10.66 -0.0552862 0
+-10.7134 -0.146506 0
+-10.7732 -0.27748 0
+-10.8124 -0.436135 0
+-10.7873 -0.600198 0
+-10.6389 -0.738677 0
+-10.3049 -0.812488 0
+-9.74524 -0.782043 0
+-8.98031 -0.636647 0
+-8.12594 -0.45644 0
+-7.39353 -0.488464 0
+-7.02792 -1.16846 0
+-7.18778 -2.99617 0
+-7.82294 -6.23629 0
+-8.63131 -10.5706 0
+-9.15073 -14.9621 0
+-8.96154 -17.9567 0
+-7.89512 -18.3805 0
+-6.12649 -16.0473 0
+-4.09848 -11.9558 0
+-2.3335 -7.71786 0
+-1.25157 -4.50309 0
+-0.207923 -2.15366 0
+0.0262366 -0.803814 0
+0.0262366 0.644143 0
+-2.12727 -0.441873 0
+-4.31818 -0.614256 0
+-8.65385 -0.64932 0
+-9.32899 -0.144625 0
+-10.1461 1.64977 0
+-10.7478 4.67419 0
+-10.735 7.70407 0
+-9.90688 9.22728 0
+-8.4022 8.47848 0
+-6.64997 5.86911 0
+-5.16231 2.61221 0
+-4.30027 -0.0580631 0
+-4.14493 -1.495 0
+-4.5221 -1.76107 0
+-5.13566 -1.33956 0
+-5.71762 -0.738889 0
+-6.11649 -0.258579 0
+-6.3019 0.0203761 0
+-6.31763 0.132095 0
+-6.2307 0.136366 0
+-6.10138 0.0834561 0
+-5.97232 0.00953438 0
+-5.86713 -0.0606123 0
+-5.7941 -0.109786 0
+-5.75207 -0.127966 0
+-5.73479 -0.116804 0
+-5.7329 -0.0897307 0
+-5.7367 -0.0613298 0
+-5.73998 -0.0370084 0
+-5.74108 -0.0154989 0
+-5.74024 0.00258327 0
+-5.73735 0.014444 0
+-5.73293 0.0208848 0
+-5.72899 0.0257149 0
+-5.72743 0.0296127 0
+-5.72827 0.0299949 0
+-5.73036 0.0271144 0
+-5.73258 0.0253876 0
+-5.73292 0.0286073 0
+-5.72802 0.0389519 0
+-5.71585 0.0609178 0
+-5.69935 0.0997159 0
+-5.68692 0.1525 0
+-5.68973 0.20503 0
+-5.71848 0.240143 0
+-5.77963 0.248182 0
+-5.87002 0.229875 0
+-5.9727 0.194339 0
+-6.05863 0.155547 0
+-6.09436 0.123418 0
+-6.05141 0.0914788 0
+-5.91477 0.0355327 0
+-5.69031 -0.0684416 0
+-5.40884 -0.220574 0
+-5.12205 -0.387705 0
+-4.89021 -0.513451 0
+-4.76723 -0.541112 0
+-4.78743 -0.445148 0
+-4.9516 -0.263719 0
+-5.20789 -0.104188 0
+-5.44854 -0.0686854 0
+-5.60974 -0.0719149 0
+-5.66656 -0.0325588 0
+-5.60748 0.0352903 0
+-5.43692 0.0880149 0
+-5.17689 0.116171 0
+-4.8975 0.207422 0
+-4.71432 0.434064 0
+-4.68568 0.672101 0
+-4.81404 0.796492 0
+-5.0645 0.765511 0
+-5.37953 0.615466 0
+-5.6933 0.419071 0
+-5.94788 0.243503 0
+-6.10722 0.123696 0
+-6.16298 0.0558065 0
+-6.13131 0.0118266 0
+-6.04418 -0.0340638 0
+-5.93887 -0.0871507 0
+-5.84732 -0.134202 0
+-5.78798 -0.158212 0
+-5.76388 -0.150311 0
+-5.76703 -0.113323 0
+-5.78481 -0.0602201 0
+-5.80516 -0.00876453 0
+-5.81974 0.0273878 0
+-5.82577 0.0450411 0
+-5.82513 0.0490802 0
+-5.82133 0.0452326 0
+-5.81684 0.036919 0
+-5.81286 0.027035 0
+-5.80986 0.0183776 0
+-5.80736 0.011519 0
+-5.80359 0.00509233 0
+-5.79641 -0.0010124 0
+-5.78442 -0.00496725 0
+-5.76705 -0.00592177 0
+-5.74445 -0.00521413 0
+-5.71876 -0.00444782 0
+-5.69561 -0.00577954 0
+-5.68349 -0.0160196 0
+-5.69084 -0.047935 0
+-5.72274 -0.114609 0
+-5.77758 -0.222643 0
+-5.84245 -0.371259 0
+-5.88712 -0.555536 0
+-5.85907 -0.766723 0
+-5.68469 -0.986862 0
+-5.28365 -1.18309 0
+-4.60346 -1.31683 0
+-3.67037 -1.38953 0
+-2.63051 -1.52833 0
+-1.74063 -2.05834 0
+-1.28277 -3.45403 0
+-1.4247 -6.09437 0
+-2.09953 -9.89576 0
+-2.99033 -14.0713 0
+-3.65657 -17.2905 0
+-3.74972 -18.2873 0
+-3.19719 -16.5999 0
+-2.24431 -12.9086 0
+-1.33243 -8.62974 0
+-0.888247 -4.94727 0
+-0.183937 -1.91619 0
+-0.0827079 -0.417139 0
+-0.0827079 0.930911 0
+-1.77657 -0.343693 0
+-3.5607 -0.441938 0
+-7.0257 -0.373965 0
+-7.40728 0.236954 0
+-7.72414 1.96664 0
+-7.6462 4.59624 0
+-6.9133 6.97118 0
+-5.53932 7.85329 0
+-3.85238 6.79155 0
+-2.3397 4.35643 0
+-1.40287 1.67538 0
+-1.18222 -0.278712 0
+-1.53998 -1.13724 0
+-2.17866 -1.12239 0
+-2.80247 -0.715756 0
+-3.23054 -0.310817 0
+-3.42127 -0.0678559 0
+-3.42617 0.0252844 0
+-3.32512 0.0310383 0
+-3.18498 -0.00376818 0
+-3.04917 -0.0523566 0
+-2.94098 -0.0986535 0
+-2.86787 -0.133722 0
+-2.82633 -0.15133 0
+-2.80832 -0.145971 0
+-2.80537 -0.119757 0
+-2.80901 -0.086094 0
+-2.8119 -0.0584429 0
+-2.81075 -0.0381498 0
+-2.80666 -0.0195975 0
+-2.80133 -0.00273954 0
+-2.7948 0.0079119 0
+-2.78721 0.0132978 0
+-2.78059 0.0190866 0
+-2.77689 0.025915 0
+-2.77601 0.0291202 0
+-2.77707 0.0281687 0
+-2.77992 0.0282434 0
+-2.78355 0.0322293 0
+-2.78419 0.0395929 0
+-2.77776 0.0544895 0
+-2.76408 0.086041 0
+-2.74806 0.136478 0
+-2.73801 0.194974 0
+-2.74415 0.246289 0
+-2.77615 0.28018 0
+-2.83687 0.290592 0
+-2.91577 0.273245 0
+-2.98861 0.228385 0
+-3.02439 0.159197 0
+-2.99484 0.0619317 0
+-2.88342 -0.0758881 0
+-2.69387 -0.257987 0
+-2.45513 -0.45932 0
+-2.21622 -0.626609 0
+-2.03103 -0.698646 0
+-1.94104 -0.631098 0
+-1.9649 -0.421288 0
+-2.09489 -0.133734 0
+-2.28702 0.0879407 0
+-2.42707 0.0713733 0
+-2.51118 0.0121864 0
+-2.54136 -0.002371 0
+-2.50892 0.00284735 0
+-2.41481 -0.00609515 0
+-2.25134 -0.0472967 0
+-2.03013 -0.0137856 0
+-1.87223 0.27616 0
+-1.82962 0.629486 0
+-1.91585 0.882724 0
+-2.11349 0.963149 0
+-2.37749 0.879464 0
+-2.64717 0.688756 0
+-2.86562 0.461952 0
+-2.99762 0.255691 0
+-3.03707 0.0952599 0
+-3.00258 -0.0226666 0
+-2.92675 -0.109884 0
+-2.8445 -0.169401 0
+-2.7823 -0.196404 0
+-2.7514 -0.18911 0
+-2.74837 -0.153349 0
+-2.76187 -0.0998193 0
+-2.78001 -0.042076 0
+-2.79409 0.00531484 0
+-2.79984 0.0331368 0
+-2.79774 0.042936 0
+-2.79152 0.0428622 0
+-2.78493 0.0386443 0
+-2.77956 0.0315482 0
+-2.77555 0.0230242 0
+-2.77294 0.0157661 0
+-2.7713 0.00988317 0
+-2.76901 0.00279633 0
+-2.76402 -0.00599364 0
+-2.75511 -0.0138832 0
+-2.74136 -0.0196705 0
+-2.72151 -0.02506 0
+-2.69524 -0.0307204 0
+-2.66541 -0.0356118 0
+-2.63837 -0.0430545 0
+-2.6221 -0.0642128 0
+-2.62412 -0.11259 0
+-2.64958 -0.197175 0
+-2.69755 -0.323296 0
+-2.75501 -0.498077 0
+-2.79 -0.731732 0
+-2.7454 -1.03146 0
+-2.53861 -1.38988 0
+-2.07877 -1.77668 0
+-1.31103 -2.15726 0
+-0.27753 -2.56183 0
+0.842811 -3.17868 0
+1.76048 -4.3717 0
+2.18304 -6.51693 0
+1.96398 -9.6767 0
+1.20621 -13.3136 0
+0.238775 -16.3231 0
+-0.544735 -17.5038 0
+-0.900542 -16.2441 0
+-0.867453 -12.9417 0
+-0.729961 -8.76723 0
+-0.830783 -4.84645 0
+-0.321326 -1.41555 0
+-0.241492 0.0337087 0
+-0.241492 1.18905 0
+-1.48771 -0.274739 0
+-2.94196 -0.330373 0
+-5.71612 -0.219532 0
+-5.86725 0.388092 0
+-5.82636 1.92575 0
+-5.33176 4.10165 0
+-4.26568 5.90509 0
+-2.79513 6.38275 0
+-1.32365 5.32006 0
+-0.280404 3.31318 0
+0.102775 1.2922 0
+-0.120385 -0.0555532 0
+-0.688808 -0.568817 0
+-1.29708 -0.51411 0
+-1.73364 -0.2792 0
+-1.93153 -0.112928 0
+-1.93583 -0.0635605 0
+-1.8338 -0.0767455 0
+-1.69876 -0.103993 0
+-1.57198 -0.130547 0
+-1.47152 -0.152817 0
+-1.40352 -0.166662 0
+-1.3657 -0.171536 0
+-1.34971 -0.167321 0
+-1.34627 -0.149414 0
+-1.34855 -0.117478 0
+-1.35125 -0.0833861 0
+-1.35026 -0.0594412 0
+-1.34478 -0.0436279 0
+-1.33744 -0.0269355 0
+-1.33039 -0.00979124 0
+-1.32315 0.000676687 0
+-1.31524 0.00538762 0
+-1.30833 0.0121692 0
+-1.30411 0.0216977 0
+-1.30214 0.0271521 0
+-1.30159 0.0276184 0
+-1.30325 0.0298994 0
+-1.30742 0.036401 0
+-1.31118 0.043358 0
+-1.31012 0.0534307 0
+-1.30234 0.0782558 0
+-1.28955 0.123691 0
+-1.27606 0.181481 0
+-1.26892 0.239149 0
+-1.27734 0.288598 0
+-1.30713 0.320385 0
+-1.35334 0.319451 0
+-1.39857 0.273615 0
+-1.41869 0.179318 0
+-1.39084 0.0340863 0
+-1.30108 -0.165653 0
+-1.15231 -0.406755 0
+-0.969382 -0.642246 0
+-0.794123 -0.801868 0
+-0.66936 -0.823408 0
+-0.620388 -0.680071 0
+-0.644034 -0.397641 0
+-0.712514 -0.0652544 0
+-0.791236 0.166662 0
+-0.77169 0.051828 0
+-0.766481 0.00697682 0
+-0.769457 0.000605709 0
+-0.765996 -0.000614245 0
+-0.765486 -0.00660453 0
+-0.765279 -0.047504 0
+-0.659138 -0.119927 0
+-0.559148 0.176171 0
+-0.51004 0.580378 0
+-0.547979 0.920663 0
+-0.678901 1.09407 0
+-0.874376 1.07494 0
+-1.08444 0.898824 0
+-1.25897 0.636479 0
+-1.36672 0.363443 0
+-1.40275 0.131283 0
+-1.3834 -0.0420148 0
+-1.33581 -0.157471 0
+-1.28735 -0.21786 0
+-1.25675 -0.22701 0
+-1.24912 -0.196737 0
+-1.25806 -0.144411 0
+-1.27302 -0.0848534 0
+-1.28576 -0.0293389 0
+-1.29204 0.0115986 0
+-1.29107 0.0321592 0
+-1.28498 0.0368534 0
+-1.27762 0.0354963 0
+-1.27174 0.032765 0
+-1.26763 0.0274353 0
+-1.26452 0.0199216 0
+-1.26232 0.0135632 0
+-1.26094 0.00849907 0
+-1.25918 0.00104327 0
+-1.25553 -0.00964417 0
+-1.24932 -0.0200931 0
+-1.24002 -0.0289706 0
+-1.22597 -0.0391147 0
+-1.20536 -0.051331 0
+-1.17862 -0.0623468 0
+-1.14913 -0.0725461 0
+-1.12206 -0.0912816 0
+-1.10353 -0.131127 0
+-1.09986 -0.200839 0
+-1.11532 -0.307837 0
+-1.14819 -0.465204 0
+-1.18621 -0.693711 0
+-1.19951 -1.01816 0
+-1.13103 -1.45835 0
+-0.894596 -2.01312 0
+-0.39815 -2.65371 0
+0.401255 -3.36124 0
+1.43286 -4.21028 0
+2.4842 -5.42304 0
+3.25158 -7.28432 0
+3.46873 -9.89384 0
+3.05226 -12.8971 0
+2.1669 -15.4377 0
+1.14638 -16.4833 0
+0.303698 -15.4014 0
+-0.246075 -12.392 0
+-0.624544 -8.38877 0
+-1.05729 -4.41371 0
+-0.561718 -0.826986 0
+-0.407719 0.453627 0
+-0.407719 1.38938 0
+-1.25863 -0.228471 0
+-2.4607 -0.262902 0
+-4.72329 -0.146065 0
+-4.73451 0.399312 0
+-4.50934 1.70058 0
+-3.86446 3.45676 0
+-2.78687 4.82751 0
+-1.5103 5.10617 0
+-0.413705 4.22347 0
+0.190475 2.709 0
+0.222256 1.26042 0
+-0.156409 0.323112 0
+-0.669244 -0.0559817 0
+-1.08154 -0.101818 0
+-1.28749 -0.0732451 0
+-1.30502 -0.0953997 0
+-1.21448 -0.154103 0
+-1.09405 -0.197176 0
+-0.987088 -0.210951 0
+-0.905782 -0.211854 0
+-0.849856 -0.208742 0
+-0.817375 -0.199143 0
+-0.804027 -0.184884 0
+-0.802077 -0.169271 0
+-0.804197 -0.147294 0
+-0.806354 -0.115321 0
+-0.806338 -0.0834012 0
+-0.802535 -0.063245 0
+-0.795485 -0.0506776 0
+-0.787976 -0.0344443 0
+-0.781758 -0.016009 0
+-0.775916 -0.00516565 0
+-0.769571 -0.000957709 0
+-0.763981 0.00657912 0
+-0.760446 0.0181635 0
+-0.75824 0.024946 0
+-0.756502 0.0258805 0
+-0.756383 0.0297804 0
+-0.759069 0.0390863 0
+-0.762848 0.0471376 0
+-0.76419 0.054772 0
+-0.760892 0.0749582 0
+-0.752726 0.115525 0
+-0.740646 0.169401 0
+-0.728006 0.226509 0
+-0.721457 0.282049 0
+-0.726952 0.32588 0
+-0.743161 0.33566 0
+-0.759389 0.289843 0
+-0.759626 0.179555 0
+-0.728285 0.00274516 0
+-0.655462 -0.238476 0
+-0.54305 -0.519168 0
+-0.409213 -0.776083 0
+-0.284746 -0.926336 0
+-0.19981 -0.908344 0
+-0.167515 -0.712366 0
+-0.171078 -0.394078 0
+-0.158416 -0.0779167 0
+-0.0650805 0.0733265 0
+-0.0200969 0.00684441 0
+-0.0137878 0.000667762 0
+-0.0132439 6.1796e-05 0
+-0.0137982 -5.9941e-05 0
+-0.019773 -0.000629737 0
+-0.060998 -0.00627899 0
+-0.130657 -0.0502677 0
+-0.11183 0.157344 0
+-0.0807047 0.549253 0
+-0.0980872 0.938045 0
+-0.183893 1.17988 0
+-0.322433 1.21348 0
+-0.477194 1.05358 0
+-0.610015 0.769301 0
+-0.697209 0.450636 0
+-0.735254 0.169329 0
+-0.736182 -0.0410871 0
+-0.719009 -0.174644 0
+-0.701966 -0.234903 0
+-0.696335 -0.232641 0
+-0.703369 -0.189702 0
+-0.716769 -0.131011 0
+-0.729066 -0.0725566 0
+-0.736187 -0.022218 0
+-0.737472 0.0128839 0
+-0.734039 0.0287259 0
+-0.728205 0.0310194 0
+-0.722791 0.0300828 0
+-0.719291 0.029265 0
+-0.717087 0.0252307 0
+-0.71509 0.0179252 0
+-0.713291 0.0117642 0
+-0.711954 0.00716124 0
+-0.710354 -0.000556685 0
+-0.70747 -0.012528 0
+-0.703162 -0.0244011 0
+-0.697416 -0.0347162 0
+-0.688905 -0.0476254 0
+-0.675567 -0.0646691 0
+-0.656554 -0.0813604 0
+-0.632927 -0.0961728 0
+-0.60706 -0.117149 0
+-0.582491 -0.155696 0
+-0.563846 -0.219484 0
+-0.555319 -0.316365 0
+-0.558724 -0.461799 0
+-0.572543 -0.679891 0
+-0.588597 -1.00211 0
+-0.581486 -1.46547 0
+-0.495481 -2.09913 0
+-0.246312 -2.90288 0
+0.245192 -3.85274 0
+0.991343 -4.95643 0
+1.88103 -6.31273 0
+2.67764 -8.08092 0
+3.10134 -10.3175 0
+2.96913 -12.7649 0
+2.307 -14.7756 0
+1.34503 -15.5213 0
+0.381751 -14.4381 0
+-0.392224 -11.618 0
+-0.980044 -7.80095 0
+-1.50623 -3.88752 0
+-0.856857 -0.302198 0
+-0.56036 0.779876 0
+-0.56036 1.52345 0
+-1.07997 -0.198099 0
+-2.09474 -0.223514 0
+-3.99106 -0.117129 0
+-3.9414 0.34965 0
+-3.67213 1.43131 0
+-3.06728 2.85191 0
+-2.16777 3.928 0
+-1.19844 4.13685 0
+-0.454382 3.47941 0
+-0.128427 2.38305 0
+-0.210279 1.34227 0
+-0.522744 0.635576 0
+-0.848505 0.26978 0
+-1.04581 0.0954888 0
+-1.08661 -0.0324437 0
+-1.02229 -0.159722 0
+-0.923759 -0.252634 0
+-0.838418 -0.282517 0
+-0.780149 -0.26922 0
+-0.743606 -0.248397 0
+-0.721794 -0.230555 0
+-0.711903 -0.209034 0
+-0.711367 -0.185421 0
+-0.715242 -0.165396 0
+-0.718874 -0.143662 0
+-0.720339 -0.113855 0
+-0.719275 -0.0844651 0
+-0.715531 -0.0669889 0
+-0.709992 -0.0562174 0
+-0.704687 -0.0397491 0
+-0.700668 -0.0200275 0
+-0.69705 -0.00878428 0
+-0.693055 -0.00495246 0
+-0.689504 0.00302858 0
+-0.687213 0.0158722 0
+-0.685474 0.0232069 0
+-0.683541 0.0239479 0
+-0.68234 0.0285791 0
+-0.68309 0.039836 0
+-0.685053 0.0491012 0
+-0.686018 0.0557366 0
+-0.68421 0.0731505 0
+-0.6785 0.109814 0
+-0.667926 0.158827 0
+-0.653136 0.211719 0
+-0.637861 0.266774 0
+-0.626668 0.314687 0
+-0.620336 0.329328 0
+-0.613924 0.283432 0
+-0.598917 0.164548 0
+-0.566397 -0.0297755 0
+-0.509886 -0.294987 0
+-0.429063 -0.599991 0
+-0.33294 -0.872206 0
+-0.238152 -1.02112 0
+-0.161342 -0.985154 0
+-0.110062 -0.763646 0
+-0.0772554 -0.426885 0
+-0.0443761 -0.110796 0
+-0.0053528 0.0343032 0
+-0.000862731 0.00235435 0
+-0.000287435 9.2414e-05 0
+-0.000231429 5.63202e-06 0
+-0.000285783 -5.74844e-06 0
+-0.000823253 -9.23268e-05 0
+-0.00475511 -0.00234713 0
+-0.0319174 -0.0231054 0
+-0.0439748 0.169401 0
+-0.0563334 0.561612 0
+-0.095143 0.976855 0
+-0.170447 1.25518 0
+-0.273183 1.31621 0
+-0.382366 1.16277 0
+-0.476299 0.863234 0
+-0.542211 0.516549 0
+-0.579345 0.206462 0
+-0.595585 -0.0248471 0
+-0.602 -0.168228 0
+-0.608329 -0.228574 0
+-0.61967 -0.2213 0
+-0.63515 -0.174222 0
+-0.650099 -0.116062 0
+-0.660408 -0.0622479 0
+-0.665072 -0.0175541 0
+-0.665331 0.0131432 0
+-0.662934 0.0263284 0
+-0.659666 0.0277519 0
+-0.657162 0.0275786 0
+-0.65598 0.0280825 0
+-0.655327 0.0245776 0
+-0.654345 0.0169438 0
+-0.65316 0.0105791 0
+-0.652156 0.00615702 0
+-0.650971 -0.00174195 0
+-0.649003 -0.014496 0
+-0.646329 -0.027075 0
+-0.643179 -0.0378662 0
+-0.638795 -0.052009 0
+-0.63164 -0.0718243 0
+-0.620599 -0.0924011 0
+-0.605487 -0.111285 0
+-0.586906 -0.13573 0
+-0.566504 -0.176098 0
+-0.546977 -0.23901 0
+-0.530778 -0.332564 0
+-0.519123 -0.473454 0
+-0.513329 -0.685685 0
+-0.515575 -0.999861 0
+-0.522591 -1.45845 0
+-0.511555 -2.11016 0
+-0.429796 -2.98464 0
+-0.2064 -4.07614 0
+0.205645 -5.36848 0
+0.772662 -6.87974 0
+1.3496 -8.65786 0
+1.71654 -10.6845 0
+1.68377 -12.7321 0
+1.20633 -14.2981 0
+0.421703 -14.7367 0
+-0.430116 -13.5863 0
+-1.1524 -10.8957 0
+-1.69195 -7.2614 0
+-2.11389 -3.46558 0
+-1.17945 0.0518741 0
+-0.696202 0.97871 0
+-0.696202 1.59409 0
+-0.940505 -0.178391 0
+-1.81607 -0.200944 0
+-3.44874 -0.108725 0
+-3.38782 0.288727 0
+-3.1554 1.1989 0
+-2.6842 2.38071 0
+-2.02724 3.27103 0
+-1.35538 3.46498 0
+-0.862207 2.98624 0
+-0.649773 2.17061 0
+-0.681492 1.37399 0
+-0.827962 0.782046 0
+-0.958006 0.399824 0
+-1.00499 0.142469 0
+-0.974435 -0.0629953 0
+-0.909123 -0.225034 0
+-0.849022 -0.312735 0
+-0.811527 -0.320012 0
+-0.794253 -0.286494 0
+-0.788122 -0.254528 0
+-0.787241 -0.231435 0
+-0.790097 -0.206177 0
+-0.795879 -0.179638 0
+-0.802407 -0.158868 0
+-0.807382 -0.138687 0
+-0.809921 -0.111317 0
+-0.810283 -0.0841034 0
+-0.809032 -0.068239 0
+-0.806952 -0.058298 0
+-0.804961 -0.0417396 0
+-0.803454 -0.0215353 0
+-0.802082 -0.0101557 0
+-0.800564 -0.00647022 0
+-0.799199 0.00166355 0
+-0.798239 0.014912 0
+-0.797332 0.0222996 0
+-0.796127 0.0227424 0
+-0.79498 0.0274324 0
+-0.794461 0.0393175 0
+-0.794394 0.0490338 0
+-0.793784 0.0551272 0
+-0.791309 0.0706755 0
+-0.785386 0.103891 0
+-0.774332 0.147773 0
+-0.757486 0.194873 0
+-0.736311 0.245599 0
+-0.713708 0.292084 0
+-0.691871 0.307491 0
+-0.67075 0.262311 0
+-0.648064 0.141863 0
+-0.620061 -0.057779 0
+-0.582462 -0.332586 0
+-0.531849 -0.650603 0
+-0.467019 -0.937036 0
+-0.38916 -1.09898 0
+-0.301043 -1.07327 0
+-0.20704 -0.857648 0
+-0.115138 -0.518787 0
+-0.0398555 -0.186079 0
+-0.00111369 -0.00443864 0
+-7.65945e-05 0.00131725 0
+-1.38247e-05 2.9628e-05 0
+-7.72751e-06 -4.99982e-07 0
+-1.3705e-05 1.84599e-07 0
+-7.28556e-05 -3.32284e-05 0
+-0.0010255 -0.00139448 0
+-0.0362816 0.0121507 0
+-0.104507 0.237627 0
+-0.188996 0.646101 0
+-0.278207 1.06607 0
+-0.365421 1.34239 0
+-0.445803 1.3966 0
+-0.515054 1.23202 0
+-0.570185 0.918365 0
+-0.611068 0.557432 0
+-0.640737 0.236131 0
+-0.663957 -0.00162681 0
+-0.685207 -0.146979 0
+-0.707145 -0.206636 0
+-0.729838 -0.198607 0
+-0.751058 -0.153002 0
+-0.767896 -0.0992243 0
+-0.778789 -0.051354 0
+-0.784294 -0.0120493 0
+-0.786202 0.015051 0
+-0.786314 0.0264404 0
+-0.785945 0.027383 0
+-0.785865 0.0274988 0
+-0.786184 0.0284013 0
+-0.786493 0.0248863 0
+-0.786463 0.0169144 0
+-0.786221 0.0103369 0
+-0.786002 0.00593767 0
+-0.785725 -0.00201915 0
+-0.785179 -0.0150419 0
+-0.784398 -0.0278556 0
+-0.783493 -0.0387718 0
+-0.782175 -0.0533263 0
+-0.779699 -0.0743008 0
+-0.775193 -0.0969074 0
+-0.767977 -0.118501 0
+-0.757901 -0.145805 0
+-0.745769 -0.188231 0
+-0.733162 -0.251617 0
+-0.721354 -0.344372 0
+-0.710725 -0.484084 0
+-0.702406 -0.694003 0
+-0.700771 -1.0015 0
+-0.711947 -1.44727 0
+-0.735081 -2.08703 0
+-0.750667 -2.96905 0
+-0.718485 -4.10832 0
+-0.597313 -5.48965 0
+-0.383993 -7.09306 0
+-0.146907 -8.89495 0
+-0.0184928 -10.8129 0
+-0.132443 -12.6182 0
+-0.537117 -13.8935 0
+-1.14954 -14.1243 0
+-1.79524 -12.9406 0
+-2.31289 -10.378 0
+-2.64436 -6.92994 0
+-2.83745 -3.27248 0
+-1.52556 0.174524 0
+-0.825542 1.03528 0
+-0.825542 1.60638 0
+-0.830205 -0.165911 0
+-1.59994 -0.189064 0
+-3.03557 -0.109968 0
+-2.98274 0.235906 0
+-2.8119 1.02805 0
+-2.48811 2.05693 0
+-2.05442 2.83734 0
+-1.61535 3.02591 0
+-1.27373 2.64462 0
+-1.07438 1.97127 0
+-0.993755 1.29337 0
+-0.972438 0.760729 0
+-0.958367 0.385753 0
+-0.930687 0.114789 0
+-0.895917 -0.0977658 0
+-0.86891 -0.252041 0
+-0.857319 -0.324326 0
+-0.85896 -0.318371 0
+-0.867781 -0.277673 0
+-0.879178 -0.243131 0
+-0.890885 -0.219728 0
+-0.901895 -0.195168 0
+-0.911862 -0.169671 0
+-0.920698 -0.150032 0
+-0.927999 -0.131386 0
+-0.933233 -0.106082 0
+-0.936586 -0.0807509 0
+-0.938972 -0.0658531 0
+-0.940988 -0.0562818 0
+-0.942473 -0.040254 0
+-0.943313 -0.0206952 0
+-0.94396 -0.00950953 0
+-0.944772 -0.00565738 0
+-0.945479 0.00236979 0
+-0.945743 0.0151765 0
+-0.945753 0.0223089 0
+-0.945751 0.0227405 0
+-0.945478 0.0271602 0
+-0.944599 0.0384378 0
+-0.943213 0.0476478 0
+-0.941259 0.0531731 0
+-0.937585 0.0670013 0
+-0.930175 0.0964817 0
+-0.917224 0.134822 0
+-0.897759 0.175409 0
+-0.871843 0.219682 0
+-0.841082 0.261323 0
+-0.808894 0.275302 0
+-0.779343 0.23276 0
+-0.755108 0.117627 0
+-0.736272 -0.076615 0
+-0.720076 -0.348782 0
+-0.700338 -0.670341 0
+-0.666678 -0.970696 0
+-0.605822 -1.15984 0
+-0.506653 -1.17244 0
+-0.368323 -0.995978 0
+-0.20907 -0.67804 0
+-0.070414 -0.324735 0
+-0.00186834 -0.0729843 0
+-0.000124656 -0.000426442 0
+-1.42452e-05 -8.07388e-05 0
+-4.53578e-06 -1.01632e-05 0
+-1.43626e-05 1.00482e-05 0
+-0.000128406 8.08253e-05 0
+-0.00195656 0.000433668 0
+-0.0739881 0.0841823 0
+-0.219701 0.38334 0
+-0.386367 0.812767 0
+-0.529487 1.20919 0
+-0.62956 1.44247 0
+-0.687893 1.45493 0
+-0.717133 1.26126 0
+-0.732352 0.933585 0
+-0.745265 0.570344 0
+-0.762436 0.253302 0
+-0.786137 0.0220742 0
+-0.81556 -0.117556 0
+-0.847647 -0.174549 0
+-0.878317 -0.167937 0
+-0.904188 -0.127131 0
+-0.923661 -0.079752 0
+-0.936773 -0.0382417 0
+-0.944601 -0.00422089 0
+-0.948843 0.0192925 0
+-0.951294 0.0288917 0
+-0.953116 0.029205 0
+-0.954594 0.0289763 0
+-0.955693 0.0295007 0
+-0.956591 0.025784 0
+-0.957517 0.017841 0
+-0.958455 0.011275 0
+-0.959335 0.00681683 0
+-0.960318 -0.00103555 0
+-0.961591 -0.0137691 0
+-0.963041 -0.0264055 0
+-0.964454 -0.0373593 0
+-0.965837 -0.0519433 0
+-0.967174 -0.0729636 0
+-0.967951 -0.0961308 0
+-0.967361 -0.11909 0
+-0.965114 -0.148052 0
+-0.961839 -0.191506 0
+-0.958671 -0.254784 0
+-0.956615 -0.346429 0
+-0.956434 -0.484265 0
+-0.95951 -0.690927 0
+-0.969659 -0.991347 0
+-0.99449 -1.42244 0
+-1.04332 -2.03819 0
+-1.12037 -2.89201 0
+-1.21802 -4.01067 0
+-1.31972 -5.38794 0
+-1.41678 -6.996 0
+-1.52895 -8.78279 0
+-1.70785 -10.634 0
+-2.00906 -12.317 0
+-2.44384 -13.4587 0
+-2.94691 -13.6212 0
+-3.39486 -12.4926 0
+-3.67299 -10.0999 0
+-3.74398 -6.85894 0
+-3.66341 -3.35306 0
+-1.91132 0.0437795 0
+-0.968175 0.94355 0
+-0.968175 1.56111 0
+-0.741288 -0.158429 0
+-1.42823 -0.185179 0
+-2.70961 -0.119018 0
+-2.66288 0.189175 0
+-2.53986 0.905026 0
+-2.32777 1.84483 0
+-2.05704 2.56662 0
+-1.77802 2.74689 0
+-1.52679 2.39338 0
+-1.31382 1.7583 0
+-1.13686 1.11641 0
+-0.995895 0.619764 0
+-0.895845 0.285704 0
+-0.840544 0.0594878 0
+-0.826703 -0.111607 0
+-0.842368 -0.236376 0
+-0.871132 -0.295561 0
+-0.900088 -0.289416 0
+-0.92487 -0.252891 0
+-0.946921 -0.221081 0
+-0.967228 -0.19942 0
+-0.984533 -0.177864 0
+-0.998229 -0.155975 0
+-1.00962 -0.138637 0
+-1.01972 -0.121294 0
+-1.02809 -0.0977076 0
+-1.03471 -0.0741278 0
+-1.04072 -0.0598486 0
+-1.04655 -0.050449 0
+-1.05119 -0.035619 0
+-1.05414 -0.017745 0
+-1.05658 -0.00707115 0
+-1.05943 -0.00280284 0
+-1.06194 0.00488357 0
+-1.06329 0.016524 0
+-1.06416 0.0231736 0
+-1.06536 0.0239402 0
+-1.06618 0.0279799 0
+-1.06553 0.0377935 0
+-1.0637 0.0458186 0
+-1.06127 0.0507361 0
+-1.05702 0.0627588 0
+-1.04849 0.0879451 0
+-1.03385 0.12019 0
+-1.01224 0.153797 0
+-0.982977 0.190416 0
+-0.946886 0.225232 0
+-0.908413 0.23683 0
+-0.874753 0.1991 0
+-0.852302 0.0951757 0
+-0.844172 -0.0847448 0
+-0.849348 -0.343605 0
+-0.860583 -0.659107 0
+-0.861453 -0.969826 0
+-0.827597 -1.1937 0
+-0.735055 -1.26498 0
+-0.57317 -1.15786 0
+-0.357953 -0.893256 0
+-0.142022 -0.540666 0
+-0.00882024 -0.206186 0
+-0.000945598 -0.00830109 0
+-9.67405e-05 -0.000929551 0
+-7.35855e-06 -9.93956e-05 0
+-9.83957e-05 0.000101232 0
+-0.000985094 0.000967564 0
+-0.00941798 0.00886655 0
+-0.154481 0.229245 0
+-0.391235 0.620093 0
+-0.626898 1.04843 0
+-0.801253 1.38354 0
+-0.8953 1.53651 0
+-0.921209 1.48084 0
+-0.907278 1.24733 0
+-0.882934 0.909241 0
+-0.868357 0.555767 0
+-0.871875 0.256821 0
+-0.893095 0.0432938 0
+-0.92675 -0.083901 0
+-0.965226 -0.136073 0
+-1.00117 -0.131995 0
+-1.03023 -0.0980705 0
+-1.05168 -0.0582994 0
+-1.06658 -0.0233443 0
+-1.07616 0.0053626 0
+-1.08195 0.0250836 0
+-1.08582 0.0327613 0
+-1.08896 0.0323376 0
+-1.09135 0.0313745 0
+-1.09292 0.031064 0
+-1.0943 0.0271692 0
+-1.09616 0.0196968 0
+-1.09829 0.0134049 0
+-1.10033 0.00885988 0
+-1.10266 0.00129268 0
+-1.10581 -0.0106179 0
+-1.10956 -0.0226605 0
+-1.11338 -0.0335381 0
+-1.11746 -0.0478555 0
+-1.12235 -0.0680806 0
+-1.1278 -0.0906748 0
+-1.13303 -0.113859 0
+-1.13784 -0.143242 0
+-1.14294 -0.186409 0
+-1.14931 -0.248421 0
+-1.15813 -0.337607 0
+-1.17135 -0.471038 0
+-1.19174 -0.670544 0
+-1.22311 -0.959973 0
+-1.27266 -1.37289 0
+-1.35365 -1.95721 0
+-1.48411 -2.76154 0
+-1.68029 -3.81449 0
+-1.94975 -5.11848 0
+-2.29053 -6.65522 0
+-2.69628 -8.37704 0
+-3.16027 -10.17 0
+-3.67026 -11.807 0
+-4.19309 -12.9359 0
+-4.66145 -13.1528 0
+-4.98273 -12.1714 0
+-5.07803 -10.0046 0
+-4.9299 -7.00708 0
+-4.60318 -3.67978 0
+-2.36495 -0.330977 0
+-1.14886 0.700832 0
+-1.14886 1.4518 0
+-0.667971 -0.154124 0
+-1.28879 -0.187745 0
+-2.44596 -0.137547 0
+-2.39384 0.137052 0
+-2.28734 0.798525 0
+-2.13043 1.68792 0
+-1.95047 2.38666 0
+-1.76891 2.56534 0
+-1.58261 2.20709 0
+-1.37874 1.55442 0
+-1.16266 0.900336 0
+-0.965038 0.422139 0
+-0.822581 0.143247 0
+-0.754674 -0.00841917 0
+-0.754665 -0.111617 0
+-0.796884 -0.194157 0
+-0.851557 -0.240889 0
+-0.899169 -0.241804 0
+-0.935743 -0.216317 0
+-0.965981 -0.190843 0
+-0.992885 -0.172516 0
+-1.01525 -0.1555 0
+-1.03237 -0.138852 0
+-1.04631 -0.124695 0
+-1.05886 -0.108748 0
+-1.06974 -0.0868238 0
+-1.07892 -0.0649451 0
+-1.08774 -0.0510378 0
+-1.09652 -0.0416634 0
+-1.10369 -0.0284476 0
+-1.10849 -0.0129482 0
+-1.11248 -0.0030805 0
+-1.11693 0.00164981 0
+-1.12083 0.00878249 0
+-1.12308 0.0187678 0
+-1.12464 0.0247342 0
+-1.12669 0.0259921 0
+-1.12832 0.0296086 0
+-1.12809 0.0375685 0
+-1.12646 0.0441827 0
+-1.12436 0.0486357 0
+-1.1205 0.0589041 0
+-1.11204 0.0794834 0
+-1.09713 0.105277 0
+-1.07498 0.131647 0
+-1.0446 0.16004 0
+-1.00646 0.187096 0
+-0.965615 0.195981 0
+-0.931081 0.164566 0
+-0.911692 0.0757866 0
+-0.913147 -0.0832898 0
+-0.936953 -0.3198 0
+-0.977274 -0.618786 0
+-1.01617 -0.930934 0
+-1.02378 -1.18608 0
+-0.967246 -1.32152 0
+-0.824382 -1.30073 0
+-0.596589 -1.12105 0
+-0.317805 -0.81945 0
+-0.0636821 -0.460309 0
+-0.00927071 -0.0627125 0
+-0.00145573 -0.00874452 0
+-0.000349209 -0.00120592 0
+-0.00144533 0.00119736 0
+-0.00959458 0.00911681 0
+-0.0677646 0.0670366 0
+-0.345564 0.507045 0
+-0.655838 0.930367 0
+-0.911194 1.30379 0
+-1.06897 1.54132 0
+-1.12463 1.59218 0
+-1.10294 1.45915 0
+-1.04313 1.18751 0
+-0.982398 0.848511 0
+-0.944223 0.517592 0
+-0.936065 0.248662 0
+-0.95429 0.0615187 0
+-0.989769 -0.048422 0
+-1.03145 -0.0943902 0
+-1.06972 -0.0937227 0
+-1.09961 -0.0681802 0
+-1.121 -0.0369096 0
+-1.1357 -0.00864924 0
+-1.14521 0.0148703 0
+-1.15107 0.0309507 0
+-1.15527 0.0369535 0
+-1.15896 0.0360274 0
+-1.16191 0.034327 0
+-1.1639 0.0330537 0
+-1.16579 0.0290597 0
+-1.16843 0.0223398 0
+-1.17152 0.0164969 0
+-1.17456 0.0118929 0
+-1.17805 0.00479002 0
+-1.18279 -0.00587807 0
+-1.18852 -0.0169296 0
+-1.1946 -0.0274585 0
+-1.20137 -0.0410939 0
+-1.20967 -0.0597767 0
+-1.21947 -0.0808709 0
+-1.23001 -0.103322 0
+-1.24117 -0.132078 0
+-1.25375 -0.173834 0
+-1.26867 -0.233499 0
+-1.28743 -0.31885 0
+-1.31321 -0.445254 0
+-1.35067 -0.633089 0
+-1.40521 -0.905432 0
+-1.48528 -1.29282 0
+-1.60707 -1.83542 0
+-1.796 -2.57261 0
+-2.08061 -3.52988 0
+-2.48121 -4.71788 0
+-2.99982 -6.13662 0
+-3.61606 -7.7608 0
+-4.29032 -9.49573 0
+-4.97076 -11.1265 0
+-5.5969 -12.3097 0
+-6.09762 -12.6521 0
+-6.39436 -11.8746 0
+-6.42245 -9.97652 0
+-6.16534 -7.26419 0
+-5.67908 -4.16603 0
+-2.9153 -0.911156 0
+-1.3918 0.309321 0
+-1.3918 1.26625 0
+-0.605659 -0.151031 0
+-1.17294 -0.194584 0
+-2.22969 -0.166025 0
+-2.16174 0.0691045 0
+-2.04077 0.677546 0
+-1.88319 1.53035 0
+-1.72555 2.22902 0
+-1.58812 2.42791 0
+-1.45558 2.07455 0
+-1.29834 1.39718 0
+-1.10941 0.711406 0
+-0.91718 0.22991 0
+-0.765595 -0.0083377 0
+-0.685239 -0.088775 0
+-0.678305 -0.118551 0
+-0.722162 -0.150299 0
+-0.784882 -0.178169 0
+-0.842749 -0.183937 0
+-0.888576 -0.17049 0
+-0.925943 -0.153476 0
+-0.958135 -0.140323 0
+-0.984518 -0.129117 0
+-1.00474 -0.118635 0
+-1.02101 -0.108421 0
+-1.03529 -0.0944721 0
+-1.04754 -0.0745706 0
+-1.05803 -0.0544516 0
+-1.06832 -0.0407495 0
+-1.07874 -0.0312407 0
+-1.08751 -0.0196823 0
+-1.09368 -0.00677638 0
+-1.09881 0.00205059 0
+-1.10422 0.00705921 0
+-1.10889 0.0134499 0
+-1.11169 0.0215689 0
+-1.11364 0.0266829 0
+-1.11599 0.0283412 0
+-1.11788 0.0315014 0
+-1.11796 0.0376498 0
+-1.11681 0.0430267 0
+-1.11546 0.0472866 0
+-1.11259 0.0560332 0
+-1.10523 0.0721247 0
+-1.09149 0.0915405 0
+-1.07061 0.11077 0
+-1.04159 0.131016 0
+-1.00481 0.150313 0
+-0.96535 0.156525 0
+-0.932701 0.131918 0
+-0.916875 0.0599599 0
+-0.925761 -0.0744034 0
+-0.964055 -0.281506 0
+-1.02953 -0.553309 0
+-1.10718 -0.853291 0
+-1.16809 -1.12516 0
+-1.17732 -1.31229 0
+-1.10718 -1.37087 0
+-0.95111 -1.27712 0
+-0.73425 -1.03631 0
+-0.507307 -0.687252 0
+-0.265427 -0.304592 0
+-0.15032 -0.123851 0
+-0.117524 -0.0340025 0
+-0.150805 0.0344785 0
+-0.271631 0.129943 0
+-0.533263 0.328669 0
+-0.787627 0.761409 0
+-1.036 1.17874 0
+-1.21752 1.48531 0
+-1.2987 1.62249 0
+-1.28331 1.57679 0
+-1.20218 1.37802 0
+-1.09739 1.08273 0
+-1.00616 0.757274 0
+-0.949878 0.461312 0
+-0.932815 0.2316 0
+-0.94787 0.0765744 0
+-0.982877 -0.0134154 0
+-1.02459 -0.052682 0
+-1.06218 -0.0561271 0
+-1.09041 -0.0399483 0
+-1.10949 -0.0178313 0
+-1.12176 0.00361487 0
+-1.12916 0.0222788 0
+-1.13354 0.035323 0
+-1.13692 0.0403388 0
+-1.14039 0.0395003 0
+-1.14351 0.0374395 0
+-1.14584 0.0353844 0
+-1.14815 0.0313754 0
+-1.15128 0.0254651 0
+-1.1549 0.0201209 0
+-1.15854 0.0155329 0
+-1.1628 0.00904942 0
+-1.16856 -0.000120741 0
+-1.17565 -0.00984358 0
+-1.1835 -0.0196007 0
+-1.19258 -0.0320141 0
+-1.20386 -0.0485023 0
+-1.21734 -0.0673912 0
+-1.23225 -0.0884053 0
+-1.24849 -0.115845 0
+-1.2668 -0.155517 0
+-1.28821 -0.212092 0
+-1.3146 -0.292458 0
+-1.35028 -0.409581 0
+-1.40194 -0.581421 0
+-1.47802 -0.829357 0
+-1.59055 -1.18029 0
+-1.75937 -1.66659 0
+-2.01287 -2.31911 0
+-2.38101 -3.16174 0
+-2.88321 -4.21568 0
+-3.51732 -5.50251 0
+-4.25534 -7.02278 0
+-5.04838 -8.70269 0
+-5.83775 -10.3372 0
+-6.56182 -11.5856 0
+-7.1532 -12.0607 0
+-7.53589 -11.4919 0
+-7.63803 -9.87438 0
+-7.42049 -7.48173 0
+-6.90408 -4.68244 0
+-3.57802 -1.62543 0
+-1.71421 -0.215171 0
+-1.71421 0.992916 0
+-0.55019 -0.146925 0
+-1.07303 -0.202118 0
+-2.04863 -0.201048 0
+-1.96237 -0.0171537 0
+-1.80857 0.523748 0
+-1.60973 1.3315 0
+-1.41856 2.03784 0
+-1.27569 2.28504 0
+-1.1779 1.97675 0
+-1.08879 1.30807 0
+-0.977075 0.599689 0
+-0.843223 0.096058 0
+-0.715746 -0.135814 0
+-0.628478 -0.176044 0
+-0.599177 -0.147852 0
+-0.621508 -0.127969 0
+-0.672445 -0.127232 0
+-0.728543 -0.127839 0
+-0.778038 -0.120994 0
+-0.820008 -0.111507 0
+-0.855932 -0.104399 0
+-0.885431 -0.0996187 0
+-0.908475 -0.0955903 0
+-0.926912 -0.0899838 0
+-0.942321 -0.0790631 0
+-0.954911 -0.0619809 0
+-0.965412 -0.0439508 0
+-0.975629 -0.0305325 0
+-0.986054 -0.0208159 0
+-0.995082 -0.0106543 0
+-1.00174 -0.000115084 0
+-1.00726 0.00756613 0
+-1.01274 0.0125427 0
+-1.01734 0.0180505 0
+-1.02011 0.0243372 0
+-1.02193 0.0284982 0
+-1.02391 0.0303256 0
+-1.02544 0.033033 0
+-1.02551 0.0377184 0
+-1.02472 0.0422362 0
+-1.02395 0.0465173 0
+-1.0219 0.0539788 0
+-1.01577 0.0659962 0
+-1.00375 0.0795249 0
+-0.985149 0.0921664 0
+-0.959174 0.105041 0
+-0.926302 0.117441 0
+-0.89115 0.121373 0
+-0.862521 0.103288 0
+-0.850556 0.0479956 0
+-0.86481 -0.0601498 0
+-0.913207 -0.233109 0
+-0.998145 -0.46837 0
+-1.11028 -0.741154 0
+-1.22622 -1.00923 0
+-1.31381 -1.2247 0
+-1.34229 -1.34239 0
+-1.29281 -1.3266 0
+-1.16543 -1.16368 0
+-0.975128 -0.877559 0
+-0.73782 -0.5419 0
+-0.577876 -0.283795 0
+-0.523832 -0.088047 0
+-0.58013 0.0907766 0
+-0.750081 0.299894 0
+-1.0108 0.589387 0
+-1.23019 0.980796 0
+-1.38548 1.33403 0
+-1.45372 1.55356 0
+-1.429 1.59777 0
+-1.32896 1.47675 0
+-1.18793 1.23698 0
+-1.04485 0.939647 0
+-0.931004 0.643431 0
+-0.862032 0.39234 0
+-0.837873 0.207441 0
+-0.848554 0.0872554 0
+-0.880168 0.0181991 0
+-0.918666 -0.0141838 0
+-0.953024 -0.0217699 0
+-0.977898 -0.0150737 0
+-0.993392 -0.00233714 0
+-1.00196 0.0121814 0
+-1.00596 0.0262843 0
+-1.00761 0.0369724 0
+-1.00906 0.0417872 0
+-1.01132 0.041755 0
+-1.01384 0.0399677 0
+-1.01605 0.0375873 0
+-1.01838 0.0337114 0
+-1.02146 0.0285408 0
+-1.02501 0.0236685 0
+-1.02868 0.0192024 0
+-1.03308 0.0134515 0
+-1.03907 0.00587253 0
+-1.04663 -0.00228235 0
+-1.05542 -0.010813 0
+-1.06594 -0.0214991 0
+-1.07905 -0.0353893 0
+-1.0947 -0.0517408 0
+-1.11209 -0.0710106 0
+-1.13104 -0.0969003 0
+-1.15229 -0.134264 0
+-1.17715 -0.187237 0
+-1.20819 -0.261414 0
+-1.25093 -0.366839 0
+-1.3143 -0.518056 0
+-1.41035 -0.733302 0
+-1.55552 -1.03512 0
+-1.77245 -1.44966 0
+-2.08798 -2.00359 0
+-2.52509 -2.72462 0
+-3.09294 -3.64783 0
+-3.781 -4.81445 0
+-4.56101 -6.24277 0
+-5.39535 -7.86835 0
+-6.24489 -9.48764 0
+-7.06678 -10.7638 0
+-7.80263 -11.3249 0
+-8.37125 -10.9233 0
+-8.68032 -9.5653 0
+-8.65416 -7.50789 0
+-8.25856 -5.07804 0
+-4.34064 -2.36492 0
+-2.11838 -0.82978 0
+-2.11838 0.631507 0
+-0.497528 -0.139616 0
+-0.980997 -0.2057 0
+-1.88863 -0.235076 0
+-1.79199 -0.113794 0
+-1.60593 0.337686 0
+-1.34969 1.07526 0
+-1.08967 1.77783 0
+-0.896412 2.09178 0
+-0.796705 1.87705 0
+-0.76306 1.27443 0
+-0.743429 0.580057 0
+-0.700355 0.0529844 0
+-0.630301 -0.205868 0
+-0.556747 -0.249598 0
+-0.508377 -0.196222 0
+-0.499137 -0.137209 0
+-0.522871 -0.103499 0
+-0.563161 -0.0875493 0
+-0.606582 -0.077573 0
+-0.6474 -0.0706892 0
+-0.683908 -0.0678902 0
+-0.714934 -0.0685923 0
+-0.74014 -0.0703851 0
+-0.760453 -0.0696709 0
+-0.776673 -0.0628422 0
+-0.789038 -0.0496167 0
+-0.798624 -0.0343648 0
+-0.807421 -0.0217347 0
+-0.816226 -0.0120116 0
+-0.823959 -0.00292062 0
+-0.829814 0.00573968 0
+-0.834576 0.0123281 0
+-0.839021 0.0169873 0
+-0.842529 0.0215588 0
+-0.844421 0.0262293 0
+-0.845372 0.029449 0
+-0.846274 0.0312275 0
+-0.846787 0.0335463 0
+-0.846293 0.0372243 0
+-0.845277 0.0412201 0
+-0.844267 0.0455074 0
+-0.842032 0.0517439 0
+-0.836216 0.0601802 0
+-0.825304 0.0686125 0
+-0.808801 0.075663 0
+-0.786304 0.0825441 0
+-0.758408 0.0895451 0
+-0.728917 0.0918823 0
+-0.705252 0.0796235 0
+-0.696911 0.0396538 0
+-0.714382 -0.042678 0
+-0.768143 -0.179349 0
+-0.86486 -0.371653 0
+-1.00148 -0.604536 0
+-1.16206 -0.84864 0
+-1.32028 -1.06648 0
+-1.44555 -1.21712 0
+-1.51013 -1.26203 0
+-1.49619 -1.17761 0
+-1.40206 -0.971696 0
+-1.25239 -0.691566 0
+-1.12962 -0.406562 0
+-1.08376 -0.133912 0
+-1.13188 0.138902 0
+-1.26401 0.432025 0
+-1.43305 0.758427 0
+-1.5503 1.09804 0
+-1.58324 1.36697 0
+-1.5271 1.49742 0
+-1.39646 1.46713 0
+-1.21962 1.29991 0
+-1.03079 1.04815 0
+-0.861871 0.770728 0
+-0.735028 0.516588 0
+-0.658576 0.315888 0
+-0.628285 0.17715 0
+-0.63257 0.09154 0
+-0.657443 0.0430721 0
+-0.689558 0.0179315 0
+-0.718612 0.00728389 0
+-0.739306 0.00562048 0
+-0.751153 0.00951026 0
+-0.75611 0.0171381 0
+-0.756564 0.0267383 0
+-0.754957 0.0353657 0
+-0.753552 0.0403814 0
+-0.753435 0.0416379 0
+-0.75423 0.0407632 0
+-0.755315 0.0386722 0
+-0.756808 0.0352039 0
+-0.759008 0.0307415 0
+-0.761681 0.0263412 0
+-0.764615 0.0221362 0
+-0.768352 0.0171891 0
+-0.773641 0.0111611 0
+-0.780591 0.00466792 0
+-0.789077 -0.00232761 0
+-0.799541 -0.0110343 0
+-0.812596 -0.0223346 0
+-0.828052 -0.0362847 0
+-0.845161 -0.0539016 0
+-0.863784 -0.0782777 0
+-0.884866 -0.113182 0
+-0.910324 -0.16178 0
+-0.943786 -0.227952 0
+-0.992106 -0.318519 0
+-1.06616 -0.444006 0
+-1.1808 -0.618663 0
+-1.35496 -0.860955 0
+-1.61081 -1.19381 0
+-1.96931 -1.6451 0
+-2.4427 -2.25123 0
+-3.02918 -3.06135 0
+-3.71478 -4.12886 0
+-4.48226 -5.47529 0
+-5.31995 -7.03067 0
+-6.21963 -8.58796 0
+-7.16044 -9.82295 0
+-8.089 -10.3963 0
+-8.91332 -10.099 0
+-9.51974 -8.95889 0
+-9.80094 -7.22668 0
+-9.66886 -5.21013 0
+-5.14814 -2.98585 0
+-2.58117 -1.4522 0
+-2.58117 0.206687 0
+-0.443977 -0.127489 0
+-0.888442 -0.200781 0
+-1.73259 -0.25831 0
+-1.64202 -0.204366 0
+-1.443 0.138675 0
+-1.14129 0.773551 0
+-0.805605 1.44214 0
+-0.531787 1.81796 0
+-0.383913 1.72917 0
+-0.36009 1.2506 0
+-0.404798 0.624765 0
+-0.450922 0.0991082 0
+-0.458329 -0.198461 0
+-0.426776 -0.281151 0
+-0.382118 -0.240879 0
+-0.351345 -0.167981 0
+-0.345863 -0.108981 0
+-0.361624 -0.0717886 0
+-0.389086 -0.0501112 0
+-0.420835 -0.03894 0
+-0.452618 -0.0361077 0
+-0.481878 -0.0393313 0
+-0.507285 -0.0449782 0
+-0.528434 -0.0485227 0
+-0.545031 -0.0462451 0
+-0.556959 -0.037688 0
+-0.56526 -0.0260643 0
+-0.57188 -0.015115 0
+-0.577925 -0.00596655 0
+-0.583015 0.00216926 0
+-0.58669 0.0094152 0
+-0.589413 0.0150511 0
+-0.591649 0.019223 0
+-0.593005 0.0229154 0
+-0.593075 0.0262986 0
+-0.592335 0.0287096 0
+-0.591431 0.0303231 0
+-0.590229 0.0323442 0
+-0.588378 0.0353738 0
+-0.586126 0.0389674 0
+-0.583602 0.0429835 0
+-0.579728 0.0478702 0
+-0.572765 0.0532169 0
+-0.561702 0.0575495 0
+-0.546384 0.0603454 0
+-0.526803 0.062963 0
+-0.503585 0.0663268 0
+-0.479557 0.0678541 0
+-0.46048 0.0605467 0
+-0.454668 0.0338416 0
+-0.472626 -0.02472 0
+-0.526107 -0.125867 0
+-0.624705 -0.273055 0
+-0.770701 -0.458541 0
+-0.955624 -0.663716 0
+-1.16052 -0.861578 0
+-1.35883 -1.01882 0
+-1.52084 -1.10002 0
+-1.62069 -1.07776 0
+-1.64654 -0.94585 0
+-1.61258 -0.72552 0
+-1.5652 -0.453949 0
+-1.54383 -0.155283 0
+-1.5645 0.159572 0
+-1.61584 0.483371 0
+-1.65929 0.801878 0
+-1.64355 1.08229 0
+-1.54796 1.27139 0
+-1.38018 1.32964 0
+-1.16538 1.25233 0
+-0.935343 1.06987 0
+-0.719988 0.8328 0
+-0.541908 0.592648 0
+-0.413254 0.387934 0
+-0.335111 0.237744 0
+-0.299994 0.142034 0
+-0.296188 0.0877331 0
+-0.311282 0.0581666 0
+-0.334064 0.0407134 0
+-0.355859 0.0290784 0
+-0.3717 0.0214617 0
+-0.380273 0.0180832 0
+-0.382493 0.0193583 0
+-0.380183 0.0244288 0
+-0.37561 0.0307922 0
+-0.371 0.0357716 0
+-0.367626 0.0382634 0
+-0.365498 0.038636 0
+-0.364203 0.0373769 0
+-0.363669 0.0346699 0
+-0.363943 0.0310152 0
+-0.364796 0.0271943 0
+-0.366094 0.0234344 0
+-0.36824 0.0193355 0
+-0.371797 0.0147177 0
+-0.376926 0.00979666 0
+-0.383618 0.00436457 0
+-0.392174 -0.00247851 0
+-0.402915 -0.0115931 0
+-0.415606 -0.0235942 0
+-0.429746 -0.0397611 0
+-0.445547 -0.0624769 0
+-0.464457 -0.0942722 0
+-0.489247 -0.136989 0
+-0.524624 -0.192575 0
+-0.578375 -0.264767 0
+-0.662057 -0.360324 0
+-0.79079 -0.48993 0
+-0.982276 -0.669468 0
+-1.25431 -0.921773 0
+-1.62016 -1.27925 0
+-2.08407 -1.78732 0
+-2.64178 -2.50364 0
+-3.28843 -3.48221 0
+-4.02932 -4.73439 0
+-4.8824 -6.17759 0
+-5.86363 -7.60672 0
+-6.96083 -8.72575 0
+-8.11312 -9.24403 0
+-9.21367 -8.99845 0
+-10.1372 -8.03536 0
+-10.7685 -6.59535 0
+-10.9949 -4.98371 0
+-5.89346 -3.33042 0
+-3.04197 -1.95891 0
+-3.04197 -0.219025 0
+-0.386778 -0.110054 0
+-0.787947 -0.184409 0
+-1.56279 -0.261889 0
+-1.49785 -0.269309 0
+-1.31749 -0.0416884 0
+-1.00644 0.462504 0
+-0.620385 1.05609 0
+-0.264525 1.4621 0
+-0.0341128 1.49876 0
+0.0373753 1.17911 0
+-0.0127136 0.674854 0
+-0.109181 0.195576 0
+-0.18539 -0.122252 0
+-0.212585 -0.253957 0
+-0.199652 -0.253812 0
+-0.172411 -0.195222 0
+-0.1521 -0.129291 0
+-0.146774 -0.0771153 0
+-0.154837 -0.0420479 0
+-0.171656 -0.0221214 0
+-0.19305 -0.0147136 0
+-0.215907 -0.0164742 0
+-0.238011 -0.022874 0
+-0.257691 -0.028843 0
+-0.273507 -0.0304289 0
+-0.284645 -0.0265498 0
+-0.291634 -0.0190754 0
+-0.296018 -0.0107306 0
+-0.299008 -0.00297736 0
+-0.30083 0.00399138 0
+-0.301451 0.0100368 0
+-0.301214 0.014814 0
+-0.300415 0.0184235 0
+-0.298869 0.02137 0
+-0.296396 0.0238253 0
+-0.293318 0.0256318 0
+-0.290049 0.0270534 0
+-0.286533 0.0288283 0
+-0.282522 0.031363 0
+-0.278001 0.0344466 0
+-0.27281 0.0377928 0
+-0.266127 0.0411871 0
+-0.256906 0.043996 0
+-0.244727 0.0453697 0
+-0.229788 0.0454069 0
+-0.212347 0.0455219 0
+-0.192913 0.0468924 0
+-0.173332 0.0482734 0
+-0.15772 0.0449346 0
+-0.152849 0.0289707 0
+-0.168262 -0.00930673 0
+-0.215476 -0.078653 0
+-0.305222 -0.18331 0
+-0.443357 -0.320405 0
+-0.627678 -0.479395 0
+-0.846841 -0.642415 0
+-1.08095 -0.784711 0
+-1.30382 -0.877143 0
+-1.48839 -0.89319 0
+-1.61566 -0.818587 0
+-1.68398 -0.657194 0
+-1.71057 -0.42736 0
+-1.71484 -0.151015 0
+-1.70536 0.150091 0
+-1.67485 0.452869 0
+-1.60291 0.729929 0
+-1.4685 0.947886 0
+-1.26942 1.07231 0
+-1.02352 1.08374 0
+-0.759899 0.988702 0
+-0.508193 0.818166 0
+-0.291187 0.615794 0
+-0.121723 0.423184 0
+-0.00274165 0.268953 0
+0.0707224 0.16428 0
+0.108202 0.104554 0
+0.120335 0.0755994 0
+0.116768 0.0617341 0
+0.105554 0.0519273 0
+0.0929613 0.0416712 0
+0.0831059 0.0313171 0
+0.0779259 0.0232633 0
+0.0777258 0.0195584 0
+0.081724 0.0204305 0
+0.0883382 0.024178 0
+0.0956877 0.0284221 0
+0.10241 0.0315414 0
+0.108044 0.0330019 0
+0.112623 0.0327974 0
+0.116177 0.0311157 0
+0.118755 0.0284379 0
+0.120561 0.0253878 0
+0.121716 0.0222799 0
+0.121999 0.0190527 0
+0.121078 0.0156386 0
+0.11884 0.0120342 0
+0.11528 0.0079245 0
+0.110244 0.00255794 0
+0.103574 -0.00492305 0
+0.0953549 -0.0153754 0
+0.0855869 -0.0299931 0
+0.0734423 -0.0503323 0
+0.0568213 -0.0776512 0
+0.0322486 -0.112417 0
+-0.00545731 -0.154869 0
+-0.0638116 -0.206413 0
+-0.152973 -0.271162 0
+-0.285297 -0.357606 0
+-0.474039 -0.480727 0
+-0.731148 -0.664664 0
+-1.06487 -0.945532 0
+-1.47966 -1.37253 0
+-1.98123 -2.00207 0
+-2.58557 -2.87787 0
+-3.32445 -3.9955 0
+-4.23728 -5.26477 0
+-5.34646 -6.49754 0
+-6.62852 -7.4437 0
+-8.00091 -7.87163 0
+-9.33936 -7.66 0
+-10.5193 -6.85542 0
+-11.4481 -5.66658 0
+-12.039 -4.39282 0
+-6.42355 -3.27299 0
+-3.3963 -2.20592 0
+-3.3963 -0.541221 0
+-0.324803 -0.0882414 0
+-0.674955 -0.156448 0
+-1.3655 -0.241259 0
+-1.34166 -0.29315 0
+-1.21244 -0.170911 0
+-0.94015 0.190214 0
+-0.554849 0.670785 0
+-0.150833 1.05809 0
+0.162722 1.18521 0
+0.319917 1.02192 0
+0.325469 0.669302 0
+0.238725 0.282319 0
+0.132496 -0.0160226 0
+0.0564637 -0.177924 0
+0.0243883 -0.221737 0
+0.024288 -0.195122 0
+0.0369592 -0.141962 0
+0.0486011 -0.0887572 0
+0.0534456 -0.0468925 0
+0.0508409 -0.0195166 0
+0.0421333 -0.006006 0
+0.0291892 -0.00353008 0
+0.0140207 -0.00770553 0
+-0.0012109 -0.0136113 0
+-0.0143503 -0.0172895 0
+-0.0238729 -0.0170272 0
+-0.029524 -0.0134244 0
+-0.0321265 -0.00812814 0
+-0.0326527 -0.00245115 0
+-0.0316296 0.00296827 0
+-0.0293501 0.00775732 0
+-0.0261773 0.0116411 0
+-0.0223822 0.0146284 0
+-0.0179674 0.0169552 0
+-0.0129197 0.0187776 0
+-0.00745429 0.0201664 0
+-0.00179177 0.0213909 0
+0.00413932 0.0228972 0
+0.0105831 0.0249193 0
+0.0177302 0.0272995 0
+0.0258418 0.0296812 0
+0.0354029 0.031626 0
+0.0468183 0.0325806 0
+0.060004 0.032184 0
+0.074527 0.0308839 0
+0.0900674 0.0299815 0
+0.106368 0.0305913 0
+0.122462 0.0321796 0
+0.135705 0.0316916 0
+0.141034 0.0236421 0
+0.130618 0.00110908 0
+0.0944292 -0.0424641 0
+0.0222266 -0.111107 0
+-0.0935252 -0.204654 0
+-0.255042 -0.317879 0
+-0.457551 -0.439906 0
+-0.68846 -0.553801 0
+-0.927799 -0.637805 0
+-1.15128 -0.669712 0
+-1.33638 -0.633484 0
+-1.469 -0.524574 0
+-1.54565 -0.350709 0
+-1.56804 -0.128623 0
+-1.5369 0.118952 0
+-1.44929 0.365258 0
+-1.30071 0.581341 0
+-1.09176 0.738941 0
+-0.835475 0.81602 0
+-0.55643 0.804698 0
+-0.28348 0.715752 0
+-0.0412888 0.575976 0
+0.155046 0.419459 0
+0.301075 0.277155 0
+0.400924 0.169105 0
+0.463725 0.101478 0
+0.499887 0.0683926 0
+0.518359 0.0571277 0
+0.525677 0.0544158 0
+0.526446 0.0511584 0
+0.524133 0.0439844 0
+0.52144 0.0340102 0
+0.520342 0.0243607 0
+0.522053 0.0178474 0
+0.526921 0.0155633 0
+0.534371 0.0167274 0
+0.543216 0.0195771 0
+0.552279 0.0224783 0
+0.560828 0.0244534 0
+0.568519 0.0251067 0
+0.575184 0.0244508 0
+0.5808 0.0228217 0
+0.585497 0.0206908 0
+0.589388 0.0183883 0
+0.592423 0.0160186 0
+0.594484 0.0135774 0
+0.595552 0.0109655 0
+0.595643 0.00783385 0
+0.594657 0.00354402 0
+0.592405 -0.00267106 0
+0.588634 -0.0116041 0
+0.582736 -0.0240956 0
+0.573279 -0.0408751 0
+0.557762 -0.062134 0
+0.53266 -0.0873144 0
+0.493416 -0.115626 0
+0.434285 -0.147282 0
+0.348286 -0.185164 0
+0.227503 -0.236823 0
+0.0636319 -0.316856 0
+-0.151633 -0.449399 0
+-0.427402 -0.669764 0
+-0.777028 -1.0229 0
+-1.22431 -1.55478 0
+-1.80872 -2.29346 0
+-2.58213 -3.22209 0
+-3.59089 -4.25601 0
+-4.84665 -5.24179 0
+-6.30099 -5.98936 0
+-7.84319 -6.32943 0
+-9.33134 -6.17184 0
+-10.6467 -5.54009 0
+-11.7354 -4.57782 0
+-12.5844 -3.54385 0
+-6.57622 -2.78534 0
+-3.51267 -2.08049 0
+-3.51267 -0.632325 0
+-0.25902 -0.0643009 0
+-0.54945 -0.119991 0
+-1.13572 -0.198357 0
+-1.15795 -0.270914 0
+-1.10046 -0.2284 0
+-0.908825 -0.00142289 0
+-0.583258 0.345218 0
+-0.191167 0.665997 0
+0.165607 0.828432 0
+0.403636 0.783891 0
+0.49487 0.578068 0
+0.468133 0.309056 0
+0.381861 0.0702491 0
+0.2906 -0.0866626 0
+0.225028 -0.156165 0
+0.191048 -0.161143 0
+0.180417 -0.131331 0
+0.181916 -0.0902556 0
+0.187103 -0.0520794 0
+0.191148 -0.0235615 0
+0.191777 -0.00663588 0
+0.188347 -9.96311e-05 0
+0.181415 -0.000773802 0
+0.172504 -0.00470008 0
+0.16365 -0.00843599 0
+0.156655 -0.0100319 0
+0.152422 -0.00919086 0
+0.15091 -0.00661634 0
+0.151641 -0.0031827 0
+0.154151 0.000458569 0
+0.158047 0.00386181 0
+0.162943 0.00674464 0
+0.168543 0.00902854 0
+0.174705 0.010793 0
+0.181334 0.0121487 0
+0.188282 0.0132189 0
+0.195458 0.014214 0
+0.202972 0.015384 0
+0.21106 0.0168313 0
+0.219949 0.0184098 0
+0.229834 0.0197964 0
+0.240862 0.0205982 0
+0.252972 0.0204702 0
+0.265788 0.0193681 0
+0.27884 0.017832 0
+0.291927 0.0168948 0
+0.305103 0.0174144 0
+0.318107 0.019176 0
+0.32949 0.0203086 0
+0.335829 0.017303 0
+0.33131 0.00562795 0
+0.308046 -0.0191996 0
+0.257329 -0.0603907 0
+0.171523 -0.118848 0
+0.0460058 -0.192361 0
+-0.119088 -0.274812 0
+-0.317333 -0.355556 0
+-0.53522 -0.419918 0
+-0.753208 -0.451723 0
+-0.949179 -0.437513 0
+-1.10306 -0.370692 0
+-1.20007 -0.253701 0
+-1.23098 -0.0977177 0
+-1.19115 0.0791253 0
+-1.08025 0.254365 0
+-0.903396 0.404482 0
+-0.673217 0.508762 0
+-0.410848 0.553651 0
+-0.142874 0.536724 0
+0.104827 0.468051 0
+0.31327 0.367533 0
+0.473738 0.258991 0
+0.587494 0.163398 0
+0.662763 0.0938364 0
+0.710618 0.0536232 0
+0.741296 0.0377142 0
+0.762011 0.0364129 0
+0.776665 0.0397616 0
+0.786949 0.0408748 0
+0.793756 0.0371773 0
+0.798103 0.0296629 0
+0.801367 0.0210974 0
+0.805029 0.0141849 0
+0.810209 0.0103832 0
+0.817289 0.00964769 0
+0.825924 0.0109418 0
+0.835407 0.012996 0
+0.845041 0.0148193 0
+0.854296 0.0158512 0
+0.862817 0.01593 0
+0.870436 0.0152026 0
+0.877161 0.0139661 0
+0.883064 0.0124845 0
+0.888186 0.0108965 0
+0.892545 0.00921898 0
+0.896176 0.00733425 0
+0.899074 0.00493568 0
+0.901084 0.00153432 0
+0.901852 -0.0034392 0
+0.900771 -0.0105229 0
+0.896798 -0.0201231 0
+0.888258 -0.0323347 0
+0.872839 -0.0467151 0
+0.847807 -0.0622823 0
+0.810205 -0.0780241 0
+0.756889 -0.0939665 0
+0.684398 -0.112672 0
+0.588621 -0.141046 0
+0.464029 -0.192264 0
+0.302001 -0.287371 0
+0.0877145 -0.455477 0
+-0.204411 -0.730774 0
+-0.614944 -1.14425 0
+-1.19895 -1.70945 0
+-2.01537 -2.40567 0
+-3.10449 -3.16689 0
+-4.46018 -3.8861 0
+-6.0112 -4.43833 0
+-7.62687 -4.71377 0
+-9.15323 -4.64548 0
+-10.4713 -4.22205 0
+-11.5517 -3.49742 0
+-12.4628 -2.63273 0
+-6.25582 -1.99028 0
+-3.29215 -1.57541 0
+-3.29215 -0.39765 0
+-0.192472 -0.0412555 0
+-0.416616 -0.0806938 0
+-0.880258 -0.141624 0
+-0.940094 -0.211079 0
+-0.953912 -0.214582 0
+-0.861299 -0.0940363 0
+-0.638346 0.122265 0
+-0.320018 0.347669 0
+0.0156375 0.492776 0
+0.287378 0.51215 0
+0.447308 0.418138 0
+0.493959 0.262405 0
+0.460386 0.103823 0
+0.390501 -0.0167785 0
+0.319332 -0.0849953 0
+0.265177 -0.106988 0
+0.232102 -0.0982562 0
+0.216445 -0.0745986 0
+0.212205 -0.0478397 0
+0.213768 -0.0251245 0
+0.216808 -0.00967617 0
+0.218513 -0.00180436 0
+0.217633 0.000106697 0
+0.214349 -0.00141683 0
+0.209835 -0.0039216 0
+0.205546 -0.00574257 0
+0.202576 -0.00622099 0
+0.201408 -0.00544805 0
+0.202061 -0.00383632 0
+0.204344 -0.00182439 0
+0.207977 0.000229027 0
+0.212644 0.00207797 0
+0.218063 0.0036088 0
+0.224038 0.00481801 0
+0.230427 0.00576029 0
+0.237119 0.00652635 0
+0.24409 0.00724341 0
+0.251443 0.00803104 0
+0.25936 0.00891408 0
+0.267994 0.0097756 0
+0.277398 0.0103923 0
+0.287478 0.0105189 0
+0.297943 0.0100045 0
+0.308365 0.00894625 0
+0.318403 0.0077939 0
+0.32806 0.00723768 0
+0.337655 0.00781982 0
+0.347389 0.00944245 0
+0.356657 0.0110398 0
+0.363382 0.0105786 0
+0.363619 0.00539129 0
+0.351675 -0.0072564 0
+0.320806 -0.0295217 0
+0.26434 -0.0623817 0
+0.177032 -0.105054 0
+0.0565915 -0.154371 0
+-0.0946725 -0.204292 0
+-0.268524 -0.246067 0
+-0.450667 -0.26958 0
+-0.622414 -0.265766 0
+-0.763802 -0.229305 0
+-0.856971 -0.160532 0
+-0.888739 -0.0659491 0
+-0.852284 0.0426699 0
+-0.748204 0.150285 0
+-0.585061 0.24134 0
+-0.379097 0.302798 0
+-0.152411 0.326965 0
+0.070898 0.313415 0
+0.269761 0.269188 0
+0.43045 0.206844 0
+0.54852 0.140921 0
+0.627902 0.0840161 0
+0.677874 0.0438647 0
+0.709257 0.0222399 0
+0.731177 0.015794 0
+0.749297 0.0182931 0
+0.765776 0.0232825 0
+0.780479 0.026172 0
+0.792544 0.0251125 0
+0.80155 0.0206574 0
+0.807959 0.0146882 0
+0.812924 0.00921913 0
+0.817752 0.00555605 0
+0.823377 0.00402209 0
+0.830144 0.00417541 0
+0.837896 0.00524387 0
+0.84622 0.00649545 0
+0.854642 0.00742827 0
+0.862757 0.00781508 0
+0.870299 0.00766087 0
+0.877161 0.00710401 0
+0.883343 0.00630246 0
+0.888883 0.00535721 0
+0.89382 0.00428136 0
+0.898173 0.00298156 0
+0.901864 0.00124447 0
+0.904638 -0.00123923 0
+0.906 -0.00480123 0
+0.905176 -0.0096993 0
+0.901065 -0.0160119 0
+0.892249 -0.0235189 0
+0.877157 -0.0316226 0
+0.854331 -0.0394563 0
+0.82263 -0.046323 0
+0.781161 -0.0524976 0
+0.728807 -0.0603188 0
+0.663193 -0.0754318 0
+0.578879 -0.10795 0
+0.464597 -0.173089 0
+0.299656 -0.290535 0
+0.0504338 -0.481552 0
+-0.330727 -0.763088 0
+-0.900819 -1.13936 0
+-1.71291 -1.59359 0
+-2.79533 -2.08446 0
+-4.13009 -2.55135 0
+-5.64093 -2.92748 0
+-7.20035 -3.15435 0
+-8.65804 -3.18779 0
+-9.88725 -2.99285 0
+-10.8422 -2.54245 0
+-11.6166 -1.85834 0
+-5.52259 -1.14994 0
+-2.76488 -0.846728 0
+-2.76488 0.132812 0
+-0.12968 -0.0220699 0
+-0.286034 -0.0451599 0
+-0.617524 -0.0835842 0
+-0.695214 -0.133388 0
+-0.757963 -0.151833 0
+-0.751111 -0.100888 0
+-0.639294 0.0104481 0
+-0.430719 0.139095 0
+-0.173715 0.235771 0
+0.0682944 0.270142 0
+0.245531 0.240902 0
+0.338319 0.169617 0
+0.356144 0.0859978 0
+0.325007 0.0143591 0
+0.272938 -0.0329263 0
+0.22074 -0.0547902 0
+0.179497 -0.0570133 0
+0.152451 -0.0475521 0
+0.138136 -0.033525 0
+0.132975 -0.0199631 0
+0.132956 -0.00965805 0
+0.134655 -0.00350281 0
+0.135792 -0.00103034 0
+0.135407 -0.00103171 0
+0.133638 -0.00215242 0
+0.13123 -0.00333518 0
+0.129017 -0.00400794 0
+0.127597 -0.00402807 0
+0.127268 -0.00350706 0
+0.128094 -0.00265004 0
+0.129985 -0.00166223 0
+0.132765 -0.000702482 0
+0.136237 0.00013691 0
+0.140229 0.000826322 0
+0.144609 0.00137994 0
+0.149295 0.00184012 0
+0.154275 0.00226379 0
+0.159611 0.00269508 0
+0.165396 0.00312887 0
+0.171678 0.00349409 0
+0.178396 0.00367422 0
+0.185356 0.00355816 0
+0.192252 0.0031093 0
+0.198762 0.00243604 0
+0.204738 0.00181794 0
+0.210349 0.00162707 0
+0.216032 0.00213586 0
+0.222187 0.0032881 0
+0.22868 0.00454694 0
+0.234364 0.0048941 0
+0.236772 0.00298378 0
+0.232112 -0.00259715 0
+0.215618 -0.0130274 0
+0.18218 -0.0289438 0
+0.127241 -0.0501142 0
+0.0479517 -0.075082 0
+-0.0554497 -0.100891 0
+-0.178378 -0.123139 0
+-0.311352 -0.136606 0
+-0.44069 -0.136427 0
+-0.550487 -0.119508 0
+-0.625363 -0.0856567 0
+-0.653269 -0.0380429 0
+-0.627777 0.0171775 0
+-0.549479 0.0719874 0
+-0.426263 0.118124 0
+-0.272285 0.14882 0
+-0.105611 0.160291 0
+0.0552176 0.152587 0
+0.19489 0.129515 0
+0.304172 0.0975622 0
+0.380975 0.0641175 0
+0.429436 0.0355559 0
+0.457505 0.015795 0
+0.474014 0.00573154 0
+0.486173 0.00363501 0
+0.498218 0.00624746 0
+0.511375 0.0101261 0
+0.524815 0.0127321 0
+0.536985 0.0129422 0
+0.546697 0.0109453 0
+0.553657 0.00772764 0
+0.558429 0.00444789 0
+0.562025 0.00195967 0
+0.565438 0.000609163 0
+0.569321 0.000292478 0
+0.573912 0.000653224 0
+0.579121 0.00128593 0
+0.58468 0.00186961 0
+0.590273 0.00222202 0
+0.59564 0.00229334 0
+0.600623 0.00212105 0
+0.605154 0.00177174 0
+0.609217 0.00129412 0
+0.612807 0.000691941 0
+0.615878 -8.9439e-05 0
+0.618285 -0.00116333 0
+0.619726 -0.00268007 0
+0.619706 -0.00478083 0
+0.617543 -0.00753689 0
+0.612417 -0.0108859 0
+0.603478 -0.0145793 0
+0.590036 -0.0181813 0
+0.571765 -0.0211853 0
+0.54875 -0.023308 0
+0.521222 -0.0249697 0
+0.488811 -0.0279069 0
+0.449193 -0.0358142 0
+0.396081 -0.054838 0
+0.316643 -0.0936503 0
+0.188837 -0.16273 0
+-0.0202287 -0.272486 0
+-0.353184 -0.430133 0
+-0.856619 -0.635927 0
+-1.56995 -0.880256 0
+-2.51084 -1.14357 0
+-3.66196 -1.40023 0
+-4.96474 -1.6247 0
+-6.32318 -1.79591 0
+-7.6168 -1.89417 0
+-8.72096 -1.88869 0
+-9.54251 -1.7209 0
+-10.1019 -1.29894 0
+-4.61329 -0.542808 0
+-2.15294 -0.187269 0
+-2.15294 0.722345 0
+-0.0755925 -0.00878105 0
+-0.169508 -0.0188703 0
+-0.373558 -0.0366909 0
+-0.445037 -0.0619092 0
+-0.521053 -0.0758167 0
+-0.561416 -0.0605254 0
+-0.533245 -0.0177235 0
+-0.430462 0.0363127 0
+-0.276132 0.0814407 0
+-0.109667 0.103677 0
+0.0313013 0.0999335 0
+0.124248 0.0766698 0
+0.16539 0.0448558 0
+0.165047 0.0147025 0
+0.139594 -0.00747329 0
+0.104564 -0.0197606 0
+0.0709916 -0.0234408 0
+0.0447328 -0.0212933 0
+0.0274588 -0.0162511 0
+0.0181473 -0.0106516 0
+0.0144614 -0.00597213 0
+0.0138186 -0.00286009 0
+0.0141058 -0.00131747 0
+0.0140284 -0.000954361 0
+0.0131212 -0.00124517 0
+0.0115137 -0.00172775 0
+0.00961144 -0.00210566 0
+0.00783822 -0.00225485 0
+0.00650497 -0.00217382 0
+0.00577856 -0.00192363 0
+0.00569947 -0.00158314 0
+0.00621876 -0.00122177 0
+0.00724185 -0.000886182 0
+0.00866619 -0.000598023 0
+0.0104049 -0.000358796 0
+0.0124018 -0.000156723 0
+0.0146404 2.51318e-05 0
+0.0171381 0.00019737 0
+0.0199147 0.000352341 0
+0.0229486 0.000460184 0
+0.0261444 0.000478355 0
+0.0293296 0.000373012 0
+0.0322926 0.000146304 0
+0.0348692 -0.000140577 0
+0.0370527 -0.000365602 0
+0.0390618 -0.000381942 0
+0.0412879 -9.03251e-05 0
+0.0440967 0.000479306 0
+0.0475291 0.00111456 0
+0.0510023 0.00142088 0
+0.0531091 0.000876973 0
+0.0515833 -0.00107131 0
+0.0434548 -0.00489891 0
+0.0253918 -0.0108807 0
+-0.00576457 -0.0189579 0
+-0.0522512 -0.0285953 0
+-0.114467 -0.0386751 0
+-0.19009 -0.0475159 0
+-0.273595 -0.0531005 0
+-0.356507 -0.053515 0
+-0.428523 -0.0474921 0
+-0.479303 -0.0348769 0
+-0.500502 -0.0168437 0
+-0.487553 0.004228 0
+-0.440765 0.0252002 0
+-0.36548 0.042838 0
+-0.271178 0.0545179 0
+-0.169694 0.0588064 0
+-0.0728693 0.0557625 0
+0.0097718 0.046874 0
+0.0727025 0.0346314 0
+0.114962 0.0218581 0
+0.139522 0.0109954 0
+0.151758 0.00355975 0
+0.15757 -8.05404e-05 0
+0.161777 -0.000572451 0
+0.167199 0.000825367 0
+0.174576 0.00274922 0
+0.183152 0.0041563 0
+0.19155 0.00454385 0
+0.19856 0.00393574 0
+0.203586 0.00270149 0
+0.206717 0.00131705 0
+0.208509 0.00016777 0
+0.209668 -0.000550302 0
+0.210789 -0.000828418 0
+0.212223 -0.000780478 0
+0.214073 -0.000563891 0
+0.216261 -0.000318985 0
+0.218621 -0.000137893 0
+0.220975 -6.0042e-05 0
+0.223181 -8.59283e-05 0
+0.225152 -0.000198658 0
+0.22683 -0.000383649 0
+0.228163 -0.00064171 0
+0.229069 -0.000995043 0
+0.229391 -0.00148556 0
+0.228875 -0.00216363 0
+0.227161 -0.00306739 0
+0.223821 -0.00419699 0
+0.218425 -0.00548994 0
+0.210654 -0.00680794 0
+0.200425 -0.00795237 0
+0.187972 -0.00873201 0
+0.173764 -0.0091 0
+0.158152 -0.0093576 0
+0.140641 -0.0103967 0
+0.118755 -0.0139276 0
+0.086527 -0.0226101 0
+0.0328542 -0.0399775 0
+-0.0598431 -0.0700326 0
+-0.215893 -0.116436 0
+-0.464665 -0.181361 0
+-0.836252 -0.264339 0
+-1.3548 -0.361704 0
+-2.03114 -0.467239 0
+-2.85719 -0.574169 0
+-3.80425 -0.677644 0
+-4.82434 -0.77582 0
+-5.85114 -0.867367 0
+-6.79616 -0.943671 0
+-7.54481 -0.972255 0
+-7.99267 -0.851078 0
+-3.77896 -0.26442 0
+-1.75992 0.133755 0
+-1.75992 0.964751 0
+-0.0344254 -0.00186584 0
+-0.0781936 -0.00433502 0
+-0.17565 -0.00885532 0
+-0.221884 -0.0156747 0
+-0.277575 -0.0201256 0
+-0.320396 -0.0177052 0
+-0.329592 -0.00852711 0
+-0.29719 0.00391047 0
+-0.230813 0.0150639 0
+-0.148677 0.0215409 0
+-0.070979 0.0222352 0
+-0.0125028 0.0181936 0
+0.0207058 0.0116472 0
+0.0305195 0.00488879 0
+0.0235304 -0.000484242 0
+0.00756997 -0.00380021 0
+-0.0107263 -0.00514454 0
+-0.0269899 -0.00502964 0
+-0.0391518 -0.0040892 0
+-0.0469251 -0.00287832 0
+-0.0511166 -0.00178061 0
+-0.0529842 -0.000992508 0
+-0.0537478 -0.000553828 0
+-0.0543007 -0.000401451 0
+-0.0551185 -0.00042742 0
+-0.0563198 -0.000526391 0
+-0.0578025 -0.000623022 0
+-0.0593787 -0.000678612 0
+-0.0608686 -0.000683932 0
+-0.0621448 -0.000647404 0
+-0.0631433 -0.000584645 0
+-0.0638538 -0.000511287 0
+-0.064301 -0.000439007 0
+-0.0645247 -0.00037427 0
+-0.0645646 -0.000318906 0
+-0.0644497 -0.000271598 0
+-0.0641947 -0.000229889 0
+-0.0638046 -0.000192708 0
+-0.0632897 -0.000162593 0
+-0.0626834 -0.000146129 0
+-0.0620534 -0.000151605 0
+-0.0614962 -0.000184249 0
+-0.0611093 -0.000240537 0
+-0.0609458 -0.000304091 0
+-0.0609648 -0.000346592 0
+-0.0610104 -0.00033636 0
+-0.0608471 -0.000253665 0
+-0.0602605 -0.000107277 0
+-0.0592009 5.49839e-05 0
+-0.0579266 0.00014656 0
+-0.0571033 5.37007e-05 0
+-0.0578297 -0.000344918 0
+-0.0615744 -0.00115426 0
+-0.0700188 -0.00243632 0
+-0.0847962 -0.00418048 0
+-0.107119 -0.00627271 0
+-0.13732 -0.00847358 0
+-0.174413 -0.0104228 0
+-0.215827 -0.011687 0
+-0.25749 -0.0118516 0
+-0.294346 -0.0106367 0
+-0.321223 -0.00799934 0
+-0.333883 -0.00418447 0
+-0.329953 0.000298929 0
+-0.309528 0.00477442 0
+-0.275233 0.00854371 0
+-0.231758 0.0110421 0
+-0.184914 0.0119631 0
+-0.140473 0.0113208 0
+-0.103032 0.00943281 0
+-0.0752292 0.00682897 0
+-0.0574815 0.00411041 0
+-0.048286 0.00179987 0
+-0.0449527 0.000226501 0
+-0.0445096 -0.000523703 0
+-0.0444987 -0.000583278 0
+-0.0434527 -0.000220707 0
+-0.0409696 0.000266151 0
+-0.0374557 0.000642417 0
+-0.0336989 0.000787028 0
+-0.0304578 0.000694667 0
+-0.0281969 0.000440523 0
+-0.0270097 0.000129889 0
+-0.0266961 -0.000145871 0
+-0.0269125 -0.000333908 0
+-0.0273178 -0.000423071 0
+-0.0276659 -0.000432377 0
+-0.0278354 -0.000394437 0
+-0.027813 -0.000341338 0
+-0.0276545 -0.000296358 0
+-0.0274429 -0.00027166 0
+-0.0272584 -0.000270403 0
+-0.0271661 -0.000291024 0
+-0.0272182 -0.000331565 0
+-0.0274671 -0.000392741 0
+-0.0279829 -0.000479303 0
+-0.028869 -0.000599403 0
+-0.0302709 -0.000761747 0
+-0.0323675 -0.0009708 0
+-0.0353434 -0.00122111 0
+-0.0393408 -0.00149256 0
+-0.0443994 -0.00174928 0
+-0.0504057 -0.00194609 0
+-0.0570907 -0.00204702 0
+-0.0641323 -0.00205841 0
+-0.0714152 -0.00207471 0
+-0.0794826 -0.00232933 0
+-0.0901733 -0.00323688 0
+-0.107376 -0.00540781 0
+-0.137741 -0.00961261 0
+-0.191098 -0.0166754 0
+-0.280241 -0.0272931 0
+-0.419789 -0.0418126 0
+-0.624076 -0.0600525 0
+-0.904483 -0.0812976 0
+-1.26714 -0.10458 0
+-1.71207 -0.129245 0
+-2.2341 -0.155613 0
+-2.82453 -0.185384 0
+-3.47037 -0.221524 0
+-4.14639 -0.267656 0
+-4.79305 -0.325593 0
+-5.2743 -0.369824 0
+-2.93204 -0.138931 0
+-1.59496 0.101055 0
+-1.59496 0.585091 0
+-0.00882282 -0.00186584 0
+-0.0201719 -0.00433502 0
+-0.0460868 -0.00885532 0
+-0.0617615 -0.0156747 0
+-0.0818871 -0.0201256 0
+-0.0995924 -0.0177052 0
+-0.108119 -0.00852711 0
+-0.104209 0.00391047 0
+-0.0891451 0.0150639 0
+-0.0676042 0.0215409 0
+-0.045369 0.0222352 0
+-0.0271754 0.0181936 0
+-0.0155283 0.0116472 0
+-0.0106395 0.00488879 0
+-0.0111237 -0.000484242 0
+-0.0149239 -0.00380021 0
+-0.0200684 -0.00514454 0
+-0.0250981 -0.00502964 0
+-0.0291873 -0.0040892 0
+-0.0320656 -0.00287832 0
+-0.0338462 -0.00178061 0
+-0.0348387 -0.000992508 0
+-0.0353926 -0.000553828 0
+-0.035794 -0.000401451 0
+-0.0362214 -0.00042742 0
+-0.0367478 -0.000526391 0
+-0.0373708 -0.000623022 0
+-0.0380495 -0.000678612 0
+-0.0387334 -0.000683932 0
+-0.0393808 -0.000647404 0
+-0.0399654 -0.000584645 0
+-0.0404767 -0.000511287 0
+-0.0409157 -0.000439007 0
+-0.04129 -0.00037427 0
+-0.0416089 -0.000318906 0
+-0.0418805 -0.000271598 0
+-0.0421104 -0.000229889 0
+-0.0423031 -0.000192708 0
+-0.0424657 -0.000162593 0
+-0.0426118 -0.000146129 0
+-0.0427634 -0.000151605 0
+-0.0429477 -0.000184249 0
+-0.0431882 -0.000240537 0
+-0.0434923 -0.000304091 0
+-0.0438389 -0.000346592 0
+-0.0441753 -0.00033636 0
+-0.0444289 -0.000253665 0
+-0.0445362 -0.000107277 0
+-0.0444812 5.49839e-05 0
+-0.0443347 0.00014656 0
+-0.044281 5.37007e-05 0
+-0.0446259 -0.000344918 0
+-0.0457801 -0.00115426 0
+-0.0482165 -0.00243632 0
+-0.0523969 -0.00418048 0
+-0.0586696 -0.00627271 0
+-0.0671432 -0.00847358 0
+-0.077566 -0.0104228 0
+-0.089253 -0.011687 0
+-0.101105 -0.0118516 0
+-0.111741 -0.0106367 0
+-0.119741 -0.00799934 0
+-0.123925 -0.00418447 0
+-0.123626 0.000298929 0
+-0.118852 0.00477442 0
+-0.110308 0.00854371 0
+-0.0992659 0.0110421 0
+-0.0873028 0.0119631 0
+-0.075982 0.0113208 0
+-0.0665492 0.00943281 0
+-0.0597202 0.00682897 0
+-0.0556098 0.00411041 0
+-0.0538099 0.00179987 0
+-0.0535834 0.000226501 0
+-0.0541071 -0.000523703 0
+-0.0546904 -0.000583278 0
+-0.0549111 -0.000220707 0
+-0.0546449 0.000266151 0
+-0.0540025 0.000642417 0
+-0.0532155 0.000787028 0
+-0.0525208 0.000694667 0
+-0.0520803 0.000440523 0
+-0.0519504 0.000129889 0
+-0.0520963 -0.000145871 0
+-0.0524302 -0.000333908 0
+-0.0528533 -0.000423071 0
+-0.0532856 -0.000432377 0
+-0.0536801 -0.000394437 0
+-0.0540214 -0.000341338 0
+-0.0543178 -0.000296358 0
+-0.0545894 -0.00027166 0
+-0.0548598 -0.000270403 0
+-0.0551509 -0.000291024 0
+-0.0554824 -0.000331565 0
+-0.0558752 -0.000392741 0
+-0.0563545 -0.000479303 0
+-0.0569539 -0.000599403 0
+-0.0577156 -0.000761747 0
+-0.0586864 -0.0009708 0
+-0.0599075 -0.00122111 0
+-0.0614001 -0.00149256 0
+-0.0631494 -0.00174928 0
+-0.0650955 -0.00194609 0
+-0.0671425 -0.00204702 0
+-0.0692009 -0.00205841 0
+-0.0712756 -0.00207471 0
+-0.0736049 -0.00232933 0
+-0.0768418 -0.00323688 0
+-0.0822496 -0.00540781 0
+-0.0918622 -0.00961261 0
+-0.108538 -0.0166754 0
+-0.135831 -0.0272931 0
+-0.177643 -0.0418126 0
+-0.237696 -0.0600525 0
+-0.318994 -0.0812976 0
+-0.423573 -0.10458 0
+-0.552819 -0.129245 0
+-0.708432 -0.155613 0
+-0.893816 -0.185384 0
+-1.11534 -0.221524 0
+-1.383 -0.267656 0
+-1.70859 -0.325593 0
+-2.07841 -0.369824 0
+-1.50678 -0.138931 0
+-1.02683 0.101055 0
+-1.02683 0.585091 0
+-0.208297 -0.099457 0
+-0.429507 -0.185327 0
+-0.872044 -0.308227 0
+-0.410541 -0.461505 0
+0.147898 -0.558442 0
+0.692229 -0.544334 0
+1.11798 -0.425756 0
+1.36277 -0.244795 0
+1.41829 -0.0555232 0
+1.32203 0.0962562 0
+1.13664 0.185388 0
+0.926919 0.209715 0
+0.742663 0.184251 0
+0.611041 0.131619 0
+0.537795 0.0732415 0
+0.51379 0.0240016 0
+0.522963 -0.00917668 0
+0.548881 -0.0259211 0
+0.57866 -0.029783 0
+0.604346 -0.025689 0
+0.6225 -0.0181577 0
+0.632918 -0.0104203 0
+0.637173 -0.00425857 0
+0.637437 -0.000267319 0
+0.635711 0.00172314 0
+0.633464 0.00224495 0
+0.631562 0.00189871 0
+0.630374 0.00118588 0
+0.629926 0.000445057 0
+0.630067 -0.000144038 0
+0.630587 -0.000522504 0
+0.63129 -0.000704793 0
+0.632024 -0.00073669 0
+0.632687 -0.000665515 0
+0.633209 -0.00052406 0
+0.633534 -0.000327497 0
+0.633614 -8.1573e-05 0
+0.633411 0.000200804 0
+0.632929 0.000479566 0
+0.632255 0.000671916 0
+0.631601 0.000652373 0
+0.631318 0.000280824 0
+0.63185 -0.000534284 0
+0.633594 -0.00174531 0
+0.636669 -0.00307687 0
+0.640656 -0.0039894 0
+0.644405 -0.00375064 0
+0.646052 -0.00164923 0
+0.643382 0.0026691 0
+0.634544 0.00883559 0
+0.619026 0.0155166 0
+0.598564 0.0204605 0
+0.577631 0.0209319 0
+0.563132 0.0144975 0
+0.563163 -3.33782e-05 0
+0.584993 -0.0218307 0
+0.63274 -0.0477492 0
+0.70546 -0.0727216 0
+0.796285 -0.0908263 0
+0.893067 -0.0967838 0
+0.98054 -0.0874742 0
+1.04356 -0.0630185 0
+1.07061 -0.0270526 0
+1.05664 0.0139649 0
+1.00437 0.0522732 0
+0.92364 0.0807286 0
+0.829086 0.0945536 0
+0.736675 0.0924106 0
+0.660146 0.0765281 0
+0.608259 0.0518876 0
+0.583516 0.024742 0
+0.582598 0.000918393 0
+0.598181 -0.0155833 0
+0.621478 -0.0232967 0
+0.644642 -0.0231643 0
+0.662386 -0.0177441 0
+0.67251 -0.0101241 0
+0.675461 -0.00295125 0
+0.673317 0.00214481 0
+0.668658 0.00465831 0
+0.663706 0.00495184 0
+0.659871 0.0038355 0
+0.657701 0.00216959 0
+0.657096 0.000605666 0
+0.657603 -0.000507338 0
+0.658692 -0.00108923 0
+0.659923 -0.00123101 0
+0.661014 -0.00109127 0
+0.661835 -0.000821227 0
+0.662364 -0.000528392 0
+0.662636 -0.0002722 0
+0.662714 -7.85852e-05 0
+0.662675 3.91251e-05 0
+0.662613 6.21639e-05 0
+0.662656 -4.31954e-05 0
+0.662979 -0.000323369 0
+0.663801 -0.00082138 0
+0.665347 -0.00154624 0
+0.667777 -0.00243005 0
+0.671057 -0.00328071 0
+0.674804 -0.00374646 0
+0.678122 -0.00331817 0
+0.679526 -0.00140408 0
+0.677038 0.00248762 0
+0.668599 0.00843902 0
+0.652892 0.0157076 0
+0.630593 0.0222985 0
+0.605884 0.0247093 0
+0.587766 0.0181177 0
+0.590459 -0.00269343 0
+0.631959 -0.0414996 0
+0.730024 -0.0980653 0
+0.895606 -0.165582 0
+1.12506 -0.229457 0
+1.39408 -0.26902 0
+1.65719 -0.263109 0
+1.85605 -0.198861 0
+1.93691 -0.080854 0
+1.87305 0.0638543 0
+1.68425 0.188803 0
+1.44363 0.240622 0
+1.26338 0.180245 0
+1.23165 0.0317358 0
+1.11528 0.13033 0
+0.841961 0.279051 0
+0.841961 0.731286 0
+-0.893408 -0.377922 0
+-1.79241 -0.674703 0
+-3.58083 -1.11407 0
+-2.36986 -1.67248 0
+-0.898862 -2.02945 0
+0.501613 -1.94482 0
+1.51366 -1.43782 0
+1.95738 -0.688533 0
+1.83252 0.0693254 0
+1.28571 0.643043 0
+0.534765 0.936322 0
+-0.2114 0.955864 0
+-0.807448 0.780285 0
+-1.19011 0.514272 0
+-1.36634 0.249454 0
+-1.38577 0.0434199 0
+-1.31209 -0.0828668 0
+-1.2022 -0.13583 0
+-1.09582 -0.13617 0
+-1.01396 -0.107558 0
+-0.962543 -0.0695892 0
+-0.937996 -0.0349782 0
+-0.932512 -0.00975267 0
+-0.93781 0.00501972 0
+-0.947224 0.0111275 0
+-0.956426 0.0114372 0
+-0.963257 0.00871954 0
+-0.967151 0.00507137 0
+-0.968489 0.00177316 0
+-0.968042 -0.000599675 0
+-0.966613 -0.00196037 0
+-0.96484 -0.00248615 0
+-0.963147 -0.00243788 0
+-0.961779 -0.00204168 0
+-0.96088 -0.00143028 0
+-0.960578 -0.000636992 0
+-0.961032 0.000364054 0
+-0.962419 0.00158049 0
+-0.96485 0.00290417 0
+-0.968208 0.00402266 0
+-0.971951 0.0043878 0
+-0.974981 0.0033043 0
+-0.97571 0.000187978 0
+-0.972443 -0.00501906 0
+-0.964134 -0.0113925 0
+-0.951375 -0.0167541 0
+-0.937272 -0.0178608 0
+-0.927667 -0.0112604 0
+-0.93022 0.00521623 0
+-0.9521 0.0307097 0
+-0.996625 0.0600357 0
+-1.05981 0.0836422 0
+-1.12825 0.0893597 0
+-1.17962 0.0658657 0
+-1.18666 0.00700224 0
+-1.12398 -0.0845131 0
+-0.976207 -0.195531 0
+-0.744876 -0.304058 0
+-0.45175 -0.383958 0
+-0.136898 -0.411641 0
+0.148522 -0.3729 0
+0.353315 -0.267817 0
+0.438365 -0.112107 0
+0.386432 0.0658942 0
+0.206712 0.23199 0
+-0.0672763 0.354715 0
+-0.385868 0.413143 0
+-0.695117 0.401659 0
+-0.94907 0.33048 0
+-1.11918 0.221993 0
+-1.1985 0.104064 0
+-1.19992 0.00234308 0
+-1.14946 -0.0660463 0
+-1.07719 -0.0955696 0
+-1.0089 -0.0914499 0
+-0.960851 -0.0657958 0
+-0.938455 -0.0325196 0
+-0.938422 -0.00298431 0
+-0.952649 0.0163717 0
+-0.972195 0.0242039 0
+-0.990081 0.0228377 0
+-1.00248 0.0162357 0
+-1.00853 0.00822273 0
+-1.00937 0.00144163 0
+-1.00697 -0.00291142 0
+-1.00325 -0.00480489 0
+-0.99962 -0.00486205 0
+-0.996828 -0.00388393 0
+-0.995108 -0.00254089 0
+-0.994385 -0.00125178 0
+-0.994456 -0.000201504 0
+-0.995105 0.000570154 0
+-0.99613 0.00106372 0
+-0.997303 0.00123483 0
+-0.998294 0.000947698 0
+-0.998595 -2.28458e-05 0
+-0.997484 -0.00193238 0
+-0.994087 -0.00494345 0
+-0.987579 -0.00893866 0
+-0.977567 -0.0132934 0
+-0.964648 -0.0166655 0
+-0.95106 -0.0169066 0
+-0.941214 -0.01125 0
+-0.941769 0.0030421 0
+-0.960757 0.0274271 0
+-1.00528 0.0602306 0
+-1.07747 0.0944911 0
+-1.16899 0.116222 0
+-1.25516 0.104289 0
+-1.29126 0.0334112 0
+-1.21426 -0.118498 0
+-0.95356 -0.358769 0
+-0.452216 -0.666927 0
+0.30441 -0.986084 0
+1.26203 -1.22664 0
+2.28714 -1.28822 0
+3.18667 -1.0984 0
+3.76175 -0.655933 0
+3.88239 -0.0567789 0
+3.55247 0.518714 0
+2.92576 0.86734 0
+2.23892 0.86708 0
+1.64811 0.622545 0
+1.12515 0.710585 0
+0.677971 0.750197 0
+0.677971 1.39766 0
+-1.85354 -0.726569 0
+-3.70284 -1.28698 0
+-7.38202 -2.12145 0
+-5.8629 -3.19161 0
+-4.04371 -3.84865 0
+-2.43508 -3.55347 0
+-1.52249 -2.35044 0
+-1.54253 -0.668522 0
+-2.41604 0.942809 0
+-3.82513 2.05211 0
+-5.36626 2.47742 0
+-6.69746 2.28704 0
+-7.6238 1.7066 0
+-8.10788 0.998333 0
+-8.22687 0.368421 0
+-8.11036 -0.0731109 0
+-7.88717 -0.306083 0
+-7.65413 -0.368888 0
+-7.46682 -0.323505 0
+-7.34493 -0.22947 0
+-7.28418 -0.130363 0
+-7.2685 -0.0506772 0
+-7.27934 0.00107488 0
+-7.30116 0.0268131 0
+-7.3235 0.0334509 0
+-7.34095 0.0288729 0
+-7.35189 0.0196443 0
+-7.357 0.0101643 0
+-7.35798 0.00273443 0
+-7.35666 -0.00193732 0
+-7.35451 -0.00412032 0
+-7.3525 -0.00451612 0
+-7.35108 -0.00386757 0
+-7.35041 -0.00272969 0
+-7.35049 -0.00136947 0
+-7.35137 0.000230685 0
+-7.35329 0.00227374 0
+-7.35669 0.00496301 0
+-7.36205 0.00825632 0
+-7.36965 0.0116067 0
+-7.37906 0.0137912 0
+-7.38877 0.0129979 0
+-7.39594 0.00734796 0
+-7.39687 -0.00410535 0
+-7.38815 -0.0201218 0
+-7.36862 -0.036294 0
+-7.34141 -0.0450868 0
+-7.31512 -0.0375579 0
+-7.30304 -0.00688213 0
+-7.31946 0.0471224 0
+-7.37365 0.114211 0
+-7.46284 0.17283 0
+-7.56727 0.193774 0
+-7.64986 0.148448 0
+-7.6626 0.0197348 0
+-7.55884 -0.188287 0
+-7.3085 -0.445886 0
+-6.91141 -0.701154 0
+-6.40401 -0.891368 0
+-5.85634 -0.959327 0
+-5.35924 -0.870007 0
+-5.00446 -0.622612 0
+-4.86252 -0.254051 0
+-4.96474 0.168105 0
+-5.2947 0.56194 0
+-5.79205 0.85206 0
+-6.36742 0.988514 0
+-6.92403 0.958264 0
+-7.38004 0.786482 0
+-7.68581 0.527767 0
+-7.83153 0.249783 0
+-7.84335 0.0141644 0
+-7.77019 -0.139207 0
+-7.66626 -0.199505 0
+-7.57554 -0.182171 0
+-7.52289 -0.118446 0
+-7.51314 -0.0422722 0
+-7.53644 0.0203143 0
+-7.57637 0.0563032 0
+-7.6173 0.065133 0
+-7.64884 0.0543805 0
+-7.66702 0.0344142 0
+-7.67297 0.0141741 0
+-7.67059 -0.000942408 0
+-7.66428 -0.00922083 0
+-7.65753 -0.0115567 0
+-7.65235 -0.0100344 0
+-7.64946 -0.00677398 0
+-7.6487 -0.00330123 0
+-7.64956 -0.00039879 0
+-7.6515 0.0017403 0
+-7.65417 0.00323855 0
+-7.65737 0.00426191 0
+-7.66095 0.00481448 0
+-7.66462 0.00462466 0
+-7.66778 0.00313055 0
+-7.66929 -0.000419794 0
+-7.66751 -0.00672299 0
+-7.66044 -0.0160077 0
+-7.64626 -0.0274742 0
+-7.62425 -0.038678 0
+-7.5961 -0.0450603 0
+-7.56737 -0.0399768 0
+-7.54862 -0.0157131 0
+-7.55521 0.0340189 0
+-7.60483 0.109846 0
+-7.71143 0.201096 0
+-7.87529 0.280084 0
+-8.07003 0.299022 0
+-8.23014 0.193525 0
+-8.24562 -0.103024 0
+-7.97206 -0.632322 0
+-7.26348 -1.37551 0
+-6.02691 -2.22266 0
+-4.28486 -2.96869 0
+-2.21722 -3.35586 0
+-0.14999 -3.16562 0
+1.52667 -2.3326 0
+2.49449 -1.02459 0
+2.6403 0.372898 0
+2.11063 1.39702 0
+1.23626 1.74145 0
+0.362967 1.49584 0
+-0.0718753 1.27569 0
+-0.199184 0.933228 0
+-0.199184 1.44982 0
+-2.73132 -1.00287 0
+-5.48503 -1.77057 0
+-11.0015 -2.90869 0
+-9.83606 -4.35707 0
+-8.5465 -5.13823 0
+-7.69641 -4.40358 0
+-7.77912 -2.26776 0
+-8.94393 0.496252 0
+-10.9402 2.93899 0
+-13.2608 4.37272 0
+-15.3735 4.59005 0
+-16.9113 3.82481 0
+-17.751 2.54625 0
+-17.9792 1.22649 0
+-17.7974 0.186666 0
+-17.4243 -0.446289 0
+-17.0304 -0.699968 0
+-16.7154 -0.683973 0
+-16.5143 -0.524579 0
+-16.4192 -0.324616 0
+-16.401 -0.148636 0
+-16.4265 -0.0251596 0
+-16.4686 0.0430976 0
+-16.5093 0.0675402 0
+-16.54 0.0641692 0
+-16.5587 0.0475426 0
+-16.5672 0.0280762 0
+-16.5688 0.0117075 0
+-16.5668 0.000764265 0
+-16.564 -0.0048073 0
+-16.5618 -0.00628646 0
+-16.5611 -0.00528793 0
+-16.5617 -0.00321006 0
+-16.5635 -0.000970007 0
+-16.566 0.00108804 0
+-16.569 0.00316694 0
+-16.5726 0.00585795 0
+-16.5775 0.00984496 0
+-16.5847 0.0154901 0
+-16.5954 0.0223239 0
+-16.6102 0.0285601 0
+-16.6282 0.0309569 0
+-16.6463 0.025455 0
+-16.6593 0.00882727 0
+-16.6605 -0.0188972 0
+-16.6447 -0.0520958 0
+-16.6111 -0.0787195 0
+-16.5662 -0.082475 0
+-16.5244 -0.0486979 0
+-16.5045 0.0271863 0
+-16.522 0.131729 0
+-16.5795 0.230306 0
+-16.6581 0.27234 0
+-16.7153 0.205651 0
+-16.6921 -0.00344965 0
+-16.529 -0.351485 0
+-16.1861 -0.788734 0
+-15.6622 -1.22511 0
+-15.0029 -1.55069 0
+-14.2972 -1.66501 0
+-13.661 -1.5063 0
+-13.2112 -1.07236 0
+-13.0385 -0.426753 0
+-13.1834 0.312998 0
+-13.6254 1.00392 0
+-14.2876 1.51426 0
+-15.0556 1.75647 0
+-15.8046 1.70724 0
+-16.4284 1.41026 0
+-16.8624 0.961812 0
+-17.0948 0.482104 0
+-17.1609 0.0803429 0
+-17.1255 -0.174645 0
+-17.0573 -0.267676 0
+-17.0087 -0.230834 0
+-17.0045 -0.122599 0
+-17.0438 -0.00294476 0
+-17.1091 0.085549 0
+-17.1781 0.125294 0
+-17.2335 0.120548 0
+-17.2672 0.0880643 0
+-17.2797 0.0469532 0
+-17.2772 0.0116288 0
+-17.2672 -0.0108929 0
+-17.2563 -0.0201521 0
+-17.2482 -0.0196099 0
+-17.2444 -0.0138753 0
+-17.2444 -0.00679662 0
+-17.247 -0.000676226 0
+-17.251 0.00366369 0
+-17.2557 0.00639937 0
+-17.2606 0.00814142 0
+-17.2658 0.00945827 0
+-17.2715 0.0105491 0
+-17.278 0.0110664 0
+-17.2849 0.0100634 0
+-17.2914 0.00608114 0
+-17.2956 -0.00255047 0
+-17.2945 -0.0171122 0
+-17.2844 -0.03757 0
+-17.2617 -0.0613909 0
+-17.2244 -0.0823267 0
+-17.1747 -0.0896851 0
+-17.1215 -0.0689683 0
+-17.0825 -0.00496161 0
+-17.0844 0.111815 0
+-17.1585 0.275105 0
+-17.3291 0.45069 0
+-17.5958 0.565751 0
+-17.9092 0.506944 0
+-18.1491 0.136865 0
+-18.1186 -0.66285 0
+-17.5709 -1.92318 0
+-16.279 -3.51459 0
+-14.1372 -5.11046 0
+-11.2577 -6.23531 0
+-8.00411 -6.41926 0
+-4.91613 -5.42058 0
+-2.53022 -3.4105 0
+-1.16604 -0.991279 0
+-0.792203 1.02318 0
+-1.05373 2.00297 0
+-1.43528 1.87739 0
+-1.18037 1.24933 0
+-0.760944 0.614037 0
+-0.760944 1.05119 0
+-3.26923 -1.12838 0
+-6.63036 -1.97924 0
+-13.4301 -3.21861 0
+-13.0473 -4.73987 0
+-12.8669 -5.31858 0
+-13.3612 -3.9094 0
+-14.8483 -0.780665 0
+-17.2515 2.89941 0
+-20.1075 5.79491 0
+-22.7879 7.05314 0
+-24.7769 6.57896 0
+-25.8482 4.89614 0
+-26.0801 2.77813 0
+-25.7442 0.890551 0
+-25.1576 -0.39997 0
+-24.5722 -1.03177 0
+-24.1296 -1.14258 0
+-23.8709 -0.942694 0
+-23.7719 -0.623661 0
+-23.7802 -0.316299 0
+-23.8424 -0.0864258 0
+-23.9177 0.050099 0
+-23.9818 0.107148 0
+-24.0249 0.110657 0
+-24.0473 0.0864976 0
+-24.054 0.0542109 0
+-24.0514 0.0254824 0
+-24.0451 0.00540405 0
+-24.039 -0.00537058 0
+-24.0352 -0.00864258 0
+-24.0344 -0.00712093 0
+-24.0364 -0.00336475 0
+-24.0403 0.000735626 0
+-24.0454 0.00408573 0
+-24.0507 0.00639602 0
+-24.0557 0.00815328 0
+-24.0603 0.0104485 0
+-24.0651 0.0146331 0
+-24.0715 0.0218332 0
+-24.0814 0.0322365 0
+-24.097 0.0441537 0
+-24.1194 0.0533189 0
+-24.1472 0.0532343 0
+-24.1756 0.0371546 0
+-24.1961 0.00163392 0
+-24.1989 -0.0493515 0
+-24.1758 -0.101766 0
+-24.1253 -0.133041 0
+-24.0545 -0.119542 0
+-23.9783 -0.0490355 0
+-23.9128 0.0662712 0
+-23.8653 0.182812 0
+-23.8242 0.231138 0
+-23.7546 0.136026 0
+-23.6046 -0.153376 0
+-23.3215 -0.634621 0
+-22.8725 -1.23776 0
+-22.2631 -1.83457 0
+-21.5438 -2.27001 0
+-20.804 -2.40486 0
+-20.1546 -2.15569 0
+-19.7056 -1.52139 0
+-19.5414 -0.590956 0
+-19.7005 0.472109 0
+-20.1652 1.46861 0
+-20.8653 2.2143 0
+-21.6937 2.58486 0
+-22.5294 2.54292 0
+-23.2636 2.14449 0
+-23.8247 1.52294 0
+-24.1931 0.850473 0
+-24.3986 0.285885 0
+-24.5017 -0.0715793 0
+-24.5661 -0.203232 0
+-24.6369 -0.160051 0
+-24.7306 -0.0289511 0
+-24.8393 0.105771 0
+-24.9433 0.189528 0
+-25.0237 0.205765 0
+-25.0712 0.168011 0
+-25.0871 0.10398 0
+-25.0807 0.040487 0
+-25.0635 -0.00548112 0
+-25.0458 -0.0286635 0
+-25.0334 -0.0325702 0
+-25.0282 -0.0247482 0
+-25.0294 -0.0126831 0
+-25.0347 -0.00151894 0
+-25.0418 0.00639791 0
+-25.049 0.0108723 0
+-25.0555 0.0129012 0
+-25.0612 0.0138356 0
+-25.0665 0.014779 0
+-25.0722 0.0162269 0
+-25.079 0.0178927 0
+-25.0876 0.0186187 0
+-25.0978 0.0163569 0
+-25.1088 0.00837038 0
+-25.1177 -0.00816467 0
+-25.1202 -0.0350637 0
+-25.1101 -0.0715148 0
+-25.0804 -0.112013 0
+-25.0257 -0.144343 0
+-24.9459 -0.148779 0
+-24.8507 -0.100212 0
+-24.7639 0.0249993 0
+-24.7249 0.236146 0
+-24.7836 0.509341 0
+-24.9838 0.765968 0
+-25.334 0.857204 0
+-25.7676 0.570429 0
+-26.1073 -0.323145 0
+-26.0611 -1.96942 0
+-25.2759 -4.29974 0
+-23.4584 -6.92801 0
+-20.5278 -9.16586 0
+-16.7269 -10.2202 0
+-12.6051 -9.54235 0
+-8.84416 -7.17142 0
+-5.98667 -3.84877 0
+-4.20878 -0.754715 0
+-3.26954 1.06373 0
+-2.66733 1.27518 0
+-1.58136 0.50673 0
+-0.760227 -0.0524196 0
+-0.760227 0.561509 0
+-3.40765 -1.10491 0
+-6.98858 -1.91133 0
+-14.2946 -3.04107 0
+-14.7234 -4.31112 0
+-15.6659 -4.37609 0
+-17.3945 -2.18085 0
+-19.9374 1.76215 0
+-22.9467 5.90869 0
+-25.8108 8.65901 0
+-27.9344 9.17668 0
+-28.9992 7.64374 0
+-29.0574 4.95432 0
+-28.4378 2.15851 0
+-27.5567 0.00936964 0
+-26.7502 -1.2065 0
+-26.1964 -1.58555 0
+-25.9257 -1.41329 0
+-25.8775 -0.990975 0
+-25.9602 -0.540973 0
+-26.0918 -0.184695 0
+-26.217 0.0387301 0
+-26.3083 0.141332 0
+-26.3594 0.158297 0
+-26.3771 0.128304 0
+-26.373 0.0823513 0
+-26.3585 0.0397194 0
+-26.3422 0.0091022 0
+-26.3289 -0.00789776 0
+-26.3208 -0.013455 0
+-26.3182 -0.0113144 0
+-26.32 -0.00531517 0
+-26.3249 0.00157213 0
+-26.3317 0.00750499 0
+-26.3392 0.0115522 0
+-26.3464 0.0135795 0
+-26.3526 0.0143109 0
+-26.3574 0.0152078 0
+-26.3609 0.0181452 0
+-26.3641 0.0250664 0
+-26.3692 0.0373223 0
+-26.3794 0.0543147 0
+-26.3981 0.0719582 0
+-26.4271 0.0822443 0
+-26.4649 0.0749094 0
+-26.5047 0.041419 0
+-26.5346 -0.019428 0
+-26.5399 -0.096519 0
+-26.507 -0.165915 0
+-26.4284 -0.198172 0
+-26.3042 -0.173279 0
+-26.1399 -0.0980469 0
+-25.9399 -0.0171711 0
+-25.6998 -0.00899881 0
+-25.4021 -0.161647 0
+-25.0209 -0.534592 0
+-24.5344 -1.12114 0
+-23.9411 -1.83115 0
+-23.2694 -2.50628 0
+-22.5759 -2.96358 0
+-21.9317 -3.04902 0
+-21.4081 -2.67932 0
+-21.0661 -1.86344 0
+-20.9504 -0.706693 0
+-21.0825 0.604245 0
+-21.4566 1.8426 0
+-22.0393 2.79705 0
+-22.7733 3.31887 0
+-23.5802 3.34979 0
+-24.3721 2.93641 0
+-25.0741 2.22487 0
+-25.6453 1.42173 0
+-26.0865 0.727036 0
+-26.4273 0.269269 0
+-26.7046 0.0740073 0
+-26.9428 0.0781846 0
+-27.1478 0.176063 0
+-27.312 0.269954 0
+-27.4255 0.302993 0
+-27.4854 0.265707 0
+-27.4995 0.18206 0
+-27.483 0.0875371 0
+-27.4535 0.0110004 0
+-27.4252 -0.0338062 0
+-27.4063 -0.0476119 0
+-27.3989 -0.0399145 0
+-27.4012 -0.0224506 0
+-27.4094 -0.00452728 0
+-27.4197 0.00882334 0
+-27.4297 0.0163569 0
+-27.4379 0.0191197 0
+-27.4441 0.0190813 0
+-27.4485 0.0182401 0
+-27.4518 0.0180822 0
+-27.4549 0.0193222 0
+-27.4589 0.0218493 0
+-27.4649 0.0246434 0
+-27.4741 0.02557 0
+-27.4871 0.0213194 0
+-27.503 0.00779777 0
+-27.5191 -0.0189512 0
+-27.5295 -0.0611751 0
+-27.5246 -0.116918 0
+-27.4921 -0.176767 0
+-27.4199 -0.221042 0
+-27.3006 -0.219516 0
+-27.1395 -0.136063 0
+-26.9627 0.0593458 0
+-26.8226 0.369251 0
+-26.7948 0.738113 0
+-26.9567 1.01912 0
+-27.3432 0.956966 0
+-27.8846 0.218184 0
+-28.3541 -1.49986 0
+-28.371 -4.28285 0
+-27.494 -7.80497 0
+-25.4001 -11.2598 0
+-22.0727 -13.5476 0
+-17.8864 -13.7287 0
+-13.5028 -11.555 0
+-9.60311 -7.74842 0
+-6.59791 -3.75991 0
+-4.49019 -1.04399 0
+-2.98715 -0.227862 0
+-1.3635 -0.653323 0
+-0.445948 -0.755252 0
+-0.445948 0.232096 0
+-3.23471 -0.981705 0
+-6.69523 -1.65726 0
+-13.7823 -2.53624 0
+-14.7491 -3.34433 0
+-16.3796 -2.74561 0
+-18.7027 0.142224 0
+-21.4548 4.51422 0
+-24.097 8.55089 0
+-26.0267 10.5886 0
+-26.8608 10.0108 0
+-26.6058 7.38869 0
+-25.6154 3.96386 0
+-24.3884 0.931513 0
+-23.3456 -1.03345 0
+-22.7024 -1.84966 0
+-22.469 -1.81906 0
+-22.5299 -1.35238 0
+-22.7372 -0.783715 0
+-22.9707 -0.30745 0
+-23.1599 0.00447053 0
+-23.2787 0.157554 0
+-23.3307 0.193291 0
+-23.3337 0.161234 0
+-23.3089 0.103516 0
+-23.2746 0.0480215 0
+-23.2428 0.0078729 0
+-23.2192 -0.0145278 0
+-23.205 -0.0220601 0
+-23.1992 -0.019255 0
+-23.1997 -0.0108516 0
+-23.2041 -0.000899492 0
+-23.2106 0.00805454 0
+-23.218 0.0148732 0
+-23.2256 0.0190756 0
+-23.2326 0.020635 0
+-23.2387 0.0203312 0
+-23.2432 0.0196972 0
+-23.2457 0.0206429 0
+-23.2461 0.0254766 0
+-23.2455 0.0367468 0
+-23.2469 0.055709 0
+-23.2549 0.0798909 0
+-23.2743 0.101643 0
+-23.3083 0.108887 0
+-23.3553 0.0883717 0
+-23.4062 0.031516 0
+-23.4441 -0.0586789 0
+-23.4458 -0.164231 0
+-23.3866 -0.257384 0
+-23.2446 -0.31526 0
+-23.004 -0.338708 0
+-22.6554 -0.365779 0
+-22.1951 -0.46924 0
+-21.6251 -0.731709 0
+-20.9565 -1.2032 0
+-20.2178 -1.85989 0
+-19.46 -2.58901 0
+-18.7518 -3.21449 0
+-18.1606 -3.55483 0
+-17.727 -3.48266 0
+-17.4519 -2.95438 0
+-17.3095 -2.00586 0
+-17.2743 -0.741989 0
+-17.3377 0.667606 0
+-17.5136 2.01847 0
+-17.834 3.11746 0
+-18.3305 3.81539 0
+-19.0019 4.02111 0
+-19.7988 3.73338 0
+-20.6419 3.06792 0
+-21.4538 2.23367 0
+-22.1831 1.45627 0
+-22.8064 0.892589 0
+-23.3179 0.585466 0
+-23.7169 0.477268 0
+-24.0043 0.463449 0
+-24.1847 0.450337 0
+-24.2711 0.389402 0
+-24.2859 0.280486 0
+-24.257 0.153164 0
+-24.2115 0.0420641 0
+-24.1698 -0.0306983 0
+-24.1428 -0.0608614 0
+-24.1326 -0.057809 0
+-24.1358 -0.0367167 0
+-24.1466 -0.0116079 0
+-24.1598 0.00861583 0
+-24.1717 0.0207792 0
+-24.181 0.0256247 0
+-24.1874 0.0255047 0
+-24.1913 0.0229708 0
+-24.1932 0.0201969 0
+-24.1938 0.0186588 0
+-24.1935 0.0190335 0
+-24.193 0.0213792 0
+-24.1935 0.0251423 0
+-24.1967 0.0287193 0
+-24.2044 0.0290625 0
+-24.2185 0.0218122 0
+-24.2392 0.00181074 0
+-24.2644 -0.0359765 0
+-24.287 -0.0943521 0
+-24.2936 -0.17013 0
+-24.2649 -0.249773 0
+-24.1778 -0.306572 0
+-24.0123 -0.301607 0
+-23.7619 -0.191084 0
+-23.4489 0.0562922 0
+-23.1386 0.427804 0
+-22.9406 0.821081 0
+-22.9819 0.998273 0
+-23.3415 0.577834 0
+-23.9603 -0.881064 0
+-24.5739 -3.66928 0
+-24.7334 -7.6454 0
+-23.9495 -12.0438 0
+-21.9167 -15.5804 0
+-18.7006 -16.9447 0
+-14.7572 -15.4985 0
+-10.7462 -11.7594 0
+-7.24214 -7.264 0
+-4.527 -3.75913 0
+-2.60842 -2.14644 0
+-0.886027 -1.79683 0
+-0.121717 -1.24385 0
+-0.121717 0.141405 0
+-2.88733 -0.81656 0
+-6.00265 -1.3286 0
+-12.364 -1.91127 0
+-13.4984 -2.20993 0
+-15.2407 -1.00332 0
+-17.4014 2.30293 0
+-19.5241 6.63686 0
+-21.0408 10.0676 0
+-21.533 11.0807 0
+-20.9449 9.42267 0
+-19.6079 6.0517 0
+-18.0626 2.41853 0
+-16.8016 -0.329441 0
+-16.0868 -1.74833 0
+-15.9169 -2.01952 0
+-16.12 -1.61597 0
+-16.4814 -0.990981 0
+-16.8349 -0.430309 0
+-17.0928 -0.0495005 0
+-17.2346 0.146203 0
+-17.2787 0.201671 0
+-17.2586 0.173136 0
+-17.2068 0.109424 0
+-17.1483 0.0449713 0
+-17.0983 -0.00191155 0
+-17.0634 -0.0270816 0
+-17.0432 -0.0347255 0
+-17.0344 -0.030838 0
+-17.0333 -0.0203583 0
+-17.0367 -0.0075218 0
+-17.0419 0.00425633 0
+-17.0473 0.0134538 0
+-17.0525 0.0200871 0
+-17.0576 0.0241805 0
+-17.0626 0.0255809 0
+-17.0672 0.0249516 0
+-17.0712 0.0237045 0
+-17.0738 0.0232211 0
+-17.0737 0.0253592 0
+-17.0703 0.0333333 0
+-17.0649 0.0503213 0
+-17.0613 0.076246 0
+-17.0652 0.105573 0
+-17.0834 0.127089 0
+-17.1204 0.1253 0
+-17.1735 0.0846684 0
+-17.2293 -0.00291725 0
+-17.2615 -0.132069 0
+-17.233 -0.285845 0
+-17.101 -0.447273 0
+-16.8244 -0.615346 0
+-16.3733 -0.816934 0
+-15.7377 -1.10483 0
+-14.935 -1.53446 0
+-14.0151 -2.1231 0
+-13.0627 -2.81235 0
+-12.1892 -3.46247 0
+-11.51 -3.89372 0
+-11.1051 -3.95977 0
+-10.9783 -3.60955 0
+-11.0428 -2.88985 0
+-11.1621 -1.88666 0
+-11.2257 -0.678444 0
+-11.19 0.631972 0
+-11.0919 1.92033 0
+-11.0422 3.06769 0
+-11.1868 3.95999 0
+-11.6219 4.45622 0
+-12.3461 4.45755 0
+-13.2751 3.99692 0
+-14.2886 3.24718 0
+-15.2726 2.44022 0
+-16.1411 1.76112 0
+-16.8412 1.28555 0
+-17.35 0.986131 0
+-17.6717 0.785113 0
+-17.8327 0.611332 0
+-17.8749 0.431643 0
+-17.846 0.251505 0
+-17.7889 0.0960569 0
+-17.7347 -0.0120546 0
+-17.6997 -0.0657113 0
+-17.6868 -0.0737382 0
+-17.6911 -0.0535975 0
+-17.7045 -0.0233155 0
+-17.7199 0.00385875 0
+-17.7329 0.0216212 0
+-17.7419 0.0297162 0
+-17.7472 0.0309122 0
+-17.7499 0.0282244 0
+-17.7509 0.024002 0
+-17.7508 0.0200438 0
+-17.7496 0.0174618 0
+-17.7471 0.0166077 0
+-17.7433 0.0175701 0
+-17.7386 0.0203967 0
+-17.7342 0.0243805 0
+-17.7325 0.0273401 0
+-17.7364 0.0257154 0
+-17.7494 0.0147685 0
+-17.7738 -0.0115388 0
+-17.8086 -0.0595882 0
+-17.846 -0.132761 0
+-17.869 -0.226688 0
+-17.8504 -0.325245 0
+-17.7533 -0.398719 0
+-17.5389 -0.405451 0
+-17.1822 -0.300394 0
+-16.6969 -0.0574757 0
+-16.162 0.286142 0
+-15.7293 0.565569 0
+-15.5865 0.435062 0
+-15.8644 -0.603196 0
+-16.5183 -3.01535 0
+-17.2576 -6.90611 0
+-17.5978 -11.7036 0
+-17.0507 -16.1276 0
+-15.3658 -18.6296 0
+-12.679 -18.1853 0
+-9.46386 -14.9745 0
+-6.31538 -10.4125 0
+-3.71525 -6.35926 0
+-1.93686 -3.92482 0
+-0.452439 -2.59866 0
+0.0551996 -1.41757 0
+0.0551996 0.249199 0
+-2.4816 -0.653014 0
+-5.14905 -1.01171 0
+-10.5415 -1.33004 0
+-11.546 -1.20551 0
+-12.9535 0.404197 0
+-14.4315 3.78097 0
+-15.4752 7.68051 0
+-15.6496 10.2419 0
+-14.827 10.2581 0
+-13.2726 7.86826 0
+-11.5159 4.29503 0
+-10.0922 0.994817 0
+-9.31443 -1.10726 0
+-9.19522 -1.86755 0
+-9.52658 -1.68817 0
+-10.0333 -1.10929 0
+-10.4997 -0.524603 0
+-10.8186 -0.111357 0
+-10.9751 0.106924 0
+-11.0046 0.17573 0
+-10.9577 0.154767 0
+-10.8787 0.0941192 0
+-10.7979 0.0286203 0
+-10.732 -0.0209258 0
+-10.6873 -0.0466687 0
+-10.6624 -0.0519398 0
+-10.652 -0.04518 0
+-10.6499 -0.0328793 0
+-10.6521 -0.018181 0
+-10.6559 -0.0037821 0
+-10.6593 0.00764433 0
+-10.6615 0.0156497 0
+-10.663 0.0215574 0
+-10.6645 0.0257191 0
+-10.6664 0.0274806 0
+-10.6688 0.0273616 0
+-10.672 0.0268173 0
+-10.6751 0.0263929 0
+-10.6765 0.0266949 0
+-10.674 0.03084 0
+-10.667 0.0433631 0
+-10.657 0.0662364 0
+-10.6481 0.0966023 0
+-10.6473 0.126318 0
+-10.6629 0.140923 0
+-10.6988 0.120526 0
+-10.7479 0.0461263 0
+-10.7872 -0.0927066 0
+-10.7763 -0.296759 0
+-10.6597 -0.563885 0
+-10.3772 -0.897842 0
+-9.88069 -1.31351 0
+-9.15271 -1.83282 0
+-8.22232 -2.46488 0
+-7.17263 -3.17281 0
+-6.13647 -3.84854 0
+-5.27477 -4.32421 0
+-4.73655 -4.43197 0
+-4.60543 -4.09092 0
+-4.84696 -3.36805 0
+-5.28808 -2.44876 0
+-5.67839 -1.49638 0
+-5.83815 -0.518709 0
+-5.69858 0.492369 0
+-5.31068 1.53241 0
+-4.84907 2.60605 0
+-4.57783 3.68874 0
+-4.68948 4.56786 0
+-5.23144 4.9995 0
+-6.1237 4.88917 0
+-7.21437 4.33785 0
+-8.33593 3.56177 0
+-9.34573 2.77092 0
+-10.1486 2.08839 0
+-10.7045 1.54202 0
+-11.0247 1.10532 0
+-11.1577 0.744345 0
+-11.1692 0.443183 0
+-11.1228 0.205084 0
+-11.0664 0.0396587 0
+-11.0271 -0.0513975 0
+-11.0125 -0.080226 0
+-11.018 -0.0683051 0
+-11.0338 -0.0378219 0
+-11.0512 -0.00585932 0
+-11.0649 0.0175887 0
+-11.073 0.0296931 0
+-11.0762 0.0329338 0
+-11.0766 0.0313269 0
+-11.076 0.0275496 0
+-11.075 0.0230111 0
+-11.0738 0.0188928 0
+-11.0723 0.0159008 0
+-11.0695 0.0138906 0
+-11.0648 0.0127792 0
+-11.0575 0.0131572 0
+-11.0483 0.0151936 0
+-11.0386 0.0175725 0
+-11.0308 0.017963 0
+-11.0294 0.0133249 0
+-11.0396 -0.0013155 0
+-11.0658 -0.0334195 0
+-11.108 -0.0904768 0
+-11.1589 -0.175825 0
+-11.1988 -0.285321 0
+-11.1924 -0.405187 0
+-11.0875 -0.51027 0
+-10.8238 -0.564149 0
+-10.3542 -0.527052 0
+-9.68374 -0.38434 0
+-8.90944 -0.208729 0
+-8.2309 -0.243478 0
+-7.89563 -0.93846 0
+-8.07672 -2.83427 0
+-8.73596 -6.24687 0
+-9.56573 -10.8738 0
+-10.0797 -15.6136 0
+-9.8326 -18.8768 0
+-8.64941 -19.3685 0
+-6.72252 -16.9014 0
+-4.51954 -12.6154 0
+-2.57658 -8.30223 0
+-1.31683 -5.18457 0
+-0.206874 -2.93528 0
+0.0698865 -1.30681 0
+0.0698865 0.470785 0
+-2.09006 -0.514498 0
+-4.30206 -0.752927 0
+-8.70409 -0.878972 0
+-9.42707 -0.482539 0
+-10.3013 1.27842 0
+-10.9439 4.42353 0
+-10.9279 7.66451 0
+-10.0438 9.35776 0
+-8.45208 8.66642 0
+-6.62359 6.03977 0
+-5.10406 2.77549 0
+-4.25706 0.147811 0
+-4.13637 -1.22795 0
+-4.53364 -1.47028 0
+-5.13617 -1.08566 0
+-5.68379 -0.561679 0
+-6.04548 -0.16292 0
+-6.20799 0.0511437 0
+-6.22175 0.120675 0
+-6.15184 0.105809 0
+-6.05199 0.054912 0
+-5.9565 -0.00137834 0
+-5.88166 -0.0462321 0
+-5.83162 -0.0709771 0
+-5.80401 -0.0742805 0
+-5.79288 -0.0630778 0
+-5.79085 -0.0472196 0
+-5.79216 -0.0315755 0
+-5.79417 -0.0161823 0
+-5.79581 -0.00214179 0
+-5.7961 0.00792249 0
+-5.79473 0.0142784 0
+-5.79278 0.0195929 0
+-5.79134 0.0242767 0
+-5.7906 0.0267318 0
+-5.7907 0.0274566 0
+-5.79236 0.0284665 0
+-5.7955 0.0295308 0
+-5.79833 0.0295227 0
+-5.79844 0.0309435 0
+-5.79409 0.0390063 0
+-5.78442 0.0565599 0
+-5.77035 0.0825258 0
+-5.75655 0.112512 0
+-5.75113 0.135491 0
+-5.76084 0.130237 0
+-5.78408 0.0693568 0
+-5.80421 -0.0725861 0
+-5.78467 -0.316303 0
+-5.66886 -0.679712 0
+-5.38998 -1.17673 0
+-4.89223 -1.81128 0
+-4.1568 -2.56827 0
+-3.22357 -3.39813 0
+-2.19987 -4.19653 0
+-1.24916 -4.79929 0
+-0.555752 -5.01765 0
+-0.271696 -4.71606 0
+-0.460452 -3.9022 0
+-1.05067 -2.77786 0
+-1.81013 -1.68932 0
+-2.39314 -0.913397 0
+-2.61277 -0.299095 0
+-2.40523 0.284802 0
+-1.80985 0.937024 0
+-1.00267 1.79885 0
+-0.346891 3.03295 0
+-0.100833 4.32178 0
+-0.357096 5.25575 0
+-1.06278 5.59485 0
+-2.06486 5.33993 0
+-3.16803 4.66494 0
+-4.19078 3.79367 0
+-5.00617 2.90378 0
+-5.56037 2.09623 0
+-5.86817 1.41311 0
+-5.99014 0.866317 0
+-6.00231 0.455345 0
+-5.97091 0.173685 0
+-5.9394 0.00815537 0
+-5.92688 -0.0639196 0
+-5.93387 -0.0732367 0
+-5.95161 -0.0505688 0
+-5.97058 -0.0188517 0
+-5.98491 0.00847129 0
+-5.99261 0.0252888 0
+-5.99439 0.0314708 0
+-5.99258 0.0311264 0
+-5.98978 0.0285264 0
+-5.98744 0.0252126 0
+-5.98575 0.0213184 0
+-5.98447 0.0176161 0
+-5.98327 0.0146956 0
+-5.98125 0.0118768 0
+-5.97718 0.00870828 0
+-5.97024 0.00620972 0
+-5.96024 0.00519598 0
+-5.94739 0.00472346 0
+-5.93278 0.00335191 0
+-5.91954 8.75338e-05 0
+-5.91306 -0.00780152 0
+-5.91967 -0.0268097 0
+-5.94472 -0.0654263 0
+-5.98981 -0.130732 0
+-6.04825 -0.226882 0
+-6.0987 -0.354733 0
+-6.09882 -0.510159 0
+-5.98253 -0.680436 0
+-5.66897 -0.840611 0
+-5.09302 -0.960292 0
+-4.258 -1.04375 0
+-3.28663 -1.21484 0
+-2.42537 -1.79973 0
+-1.96633 -3.29331 0
+-2.10036 -6.11284 0
+-2.77751 -10.1966 0
+-3.67648 -14.7146 0
+-4.33412 -18.2191 0
+-4.37909 -19.3235 0
+-3.73102 -17.5495 0
+-2.64206 -13.7044 0
+-1.56555 -9.37874 0
+-0.943411 -5.80671 0
+-0.167004 -2.85673 0
+-0.0259733 -1.01087 0
+-0.0259733 0.726458 0
+-1.74741 -0.408086 0
+-3.55414 -0.56428 0
+-7.08392 -0.575266 0
+-7.50884 -0.0576202 0
+-7.87368 1.64324 0
+-7.82311 4.37295 0
+-7.07598 6.91737 0
+-5.64841 7.93018 0
+-3.89621 6.91421 0
+-2.34019 4.48375 0
+-1.39612 1.8314 0
+-1.18972 -0.0585879 0
+-1.55409 -0.863599 0
+-2.17224 -0.852132 0
+-2.75222 -0.505691 0
+-3.13399 -0.179909 0
+-3.29632 -0.000606002 0
+-3.2984 0.0532165 0
+-3.21599 0.0382586 0
+-3.1075 -0.00268821 0
+-3.00784 -0.0447513 0
+-2.93258 -0.0766508 0
+-2.88374 -0.0950811 0
+-2.85667 -0.098053 0
+-2.84524 -0.0857104 0
+-2.84315 -0.0651767 0
+-2.84428 -0.0460956 0
+-2.84485 -0.031011 0
+-2.84435 -0.0166945 0
+-2.84319 -0.00330753 0
+-2.84085 0.0055804 0
+-2.83714 0.0105604 0
+-2.8333 0.0157465 0
+-2.83042 0.0213916 0
+-2.82823 0.0245297 0
+-2.82657 0.025796 0
+-2.8265 0.0283897 0
+-2.82855 0.0315778 0
+-2.83142 0.032381 0
+-2.83313 0.0326468 0
+-2.83209 0.0379662 0
+-2.82636 0.0508208 0
+-2.81406 0.0702255 0
+-2.7963 0.0947409 0
+-2.77824 0.117431 0
+-2.76561 0.117596 0
+-2.7586 0.0623391 0
+-2.74586 -0.0853297 0
+-2.69856 -0.363613 0
+-2.56782 -0.810463 0
+-2.29297 -1.4516 0
+-1.82336 -2.2809 0
+-1.14698 -3.24468 0
+-0.314169 -4.23097 0
+0.554336 -5.06507 0
+1.28529 -5.53028 0
+1.70059 -5.43299 0
+1.68184 -4.69735 0
+1.22133 -3.44172 0
+0.433289 -1.98985 0
+-0.45151 -0.804544 0
+-1.03214 -0.332787 0
+-1.23361 -0.0976303 0
+-1.04046 0.0916359 0
+-0.44422 0.340774 0
+0.498083 0.856536 0
+1.36739 2.16363 0
+1.90696 3.7822 0
+1.97558 5.18713 0
+1.56338 6.00703 0
+0.787001 6.1163 0
+-0.161697 5.61363 0
+-1.08574 4.71771 0
+-1.84039 3.65843 0
+-2.3608 2.61664 0
+-2.65776 1.71007 0
+-2.78983 0.998382 0
+-2.82824 0.493755 0
+-2.83084 0.176286 0
+-2.83178 0.00909685 0
+-2.84326 -0.0524418 0
+-2.86298 -0.0535129 0
+-2.88326 -0.0302957 0
+-2.89816 -0.00394791 0
+-2.90597 0.0162853 0
+-2.90771 0.0270238 0
+-2.90538 0.0291423 0
+-2.90144 0.0271866 0
+-2.89801 0.0250956 0
+-2.8958 0.0230055 0
+-2.89435 0.0198617 0
+-2.89323 0.0164957 0
+-2.89232 0.0137906 0
+-2.89098 0.0105348 0
+-2.88802 0.00574968 0
+-2.88265 0.000834107 0
+-2.87451 -0.00293923 0
+-2.86306 -0.00672383 0
+-2.84795 -0.0117673 0
+-2.83044 -0.0174163 0
+-2.81411 -0.0241324 0
+-2.80416 -0.0367603 0
+-2.80671 -0.0628822 0
+-2.82762 -0.109823 0
+-2.8694 -0.185094 0
+-2.92584 -0.298299 0
+-2.97478 -0.461222 0
+-2.96962 -0.685592 0
+-2.83404 -0.976188 0
+-2.47319 -1.32115 0
+-1.81477 -1.70217 0
+-0.874267 -2.15534 0
+0.192289 -2.86628 0
+1.10001 -4.20103 0
+1.53933 -6.55216 0
+1.33838 -9.99569 0
+0.587549 -13.9638 0
+-0.373804 -17.2578 0
+-1.12787 -18.5695 0
+-1.41045 -17.2669 0
+-1.25474 -13.8601 0
+-0.954806 -9.67868 0
+-0.876728 -5.88479 0
+-0.289835 -2.50852 0
+-0.174597 -0.641399 0
+-0.174597 0.961228 0
+-1.46379 -0.331122 0
+-2.93952 -0.437094 0
+-5.77295 -0.394044 0
+-5.96472 0.134142 0
+-5.96866 1.64717 0
+-5.50169 3.90596 0
+-4.43182 5.84749 0
+-2.93289 6.43123 0
+-1.43077 5.41208 0
+-0.371978 3.42495 0
+0.0150059 1.44442 0
+-0.196552 0.152965 0
+-0.729204 -0.330952 0
+-1.27996 -0.301383 0
+-1.65729 -0.128362 0
+-1.81687 -0.02034 0
+-1.81386 -0.00362135 0
+-1.7301 -0.0305549 0
+-1.62661 -0.0652385 0
+-1.53477 -0.0945302 0
+-1.4667 -0.112828 0
+-1.42386 -0.119498 0
+-1.4011 -0.117852 0
+-1.3912 -0.107961 0
+-1.38864 -0.0882751 0
+-1.38937 -0.0644573 0
+-1.38973 -0.0457364 0
+-1.38799 -0.0327577 0
+-1.3851 -0.01959 0
+-1.38221 -0.00621136 0
+-1.37878 0.00214537 0
+-1.37442 0.00619581 0
+-1.37032 0.011641 0
+-1.3674 0.0184667 0
+-1.36493 0.0220549 0
+-1.36241 0.0232678 0
+-1.36093 0.0269091 0
+-1.36136 0.0320042 0
+-1.36283 0.0338452 0
+-1.36412 0.0339292 0
+-1.36452 0.038362 0
+-1.36225 0.0485371 0
+-1.3541 0.0620769 0
+-1.33843 0.0790609 0
+-1.31689 0.0958826 0
+-1.29199 0.0926906 0
+-1.2628 0.0331477 0
+-1.22093 -0.127214 0
+-1.1455 -0.439051 0
+-0.999765 -0.956208 0
+-0.737151 -1.71423 0
+-0.320669 -2.69741 0
+0.250778 -3.81615 0
+0.920535 -4.90076 0
+1.56812 -5.71269 0
+2.03051 -5.99271 0
+2.15672 -5.55924 0
+1.88187 -4.42252 0
+1.2822 -2.84208 0
+0.55439 -1.26205 0
+-0.130522 -0.11964 0
+-0.449376 -0.013938 0
+-0.544932 -0.00207942 0
+-0.455141 0.00184094 0
+-0.128574 0.0142027 0
+0.600879 0.127078 0
+1.40333 1.36118 0
+2.08874 3.09677 0
+2.42761 4.84824 0
+2.31915 6.11549 0
+1.8232 6.61225 0
+1.10494 6.33189 0
+0.352818 5.46982 0
+-0.288067 4.29931 0
+-0.747892 3.07646 0
+-1.02847 1.99065 0
+-1.17547 1.14538 0
+-1.24487 0.563159 0
+-1.28031 0.21172 0
+-1.30619 0.0349768 0
+-1.33093 -0.027702 0
+-1.35341 -0.0310288 0
+-1.36981 -0.0138969 0
+-1.37855 0.00479443 0
+-1.38115 0.018879 0
+-1.37999 0.0258696 0
+-1.37695 0.026105 0
+-1.37367 0.0238981 0
+-1.37141 0.0228397 0
+-1.37025 0.0218475 0
+-1.36936 0.0189733 0
+-1.36839 0.0155187 0
+-1.36755 0.0129478 0
+-1.36652 0.00950906 0
+-1.36437 0.00359953 0
+-1.36055 -0.00298845 0
+-1.35491 -0.00857776 0
+-1.34675 -0.0148832 0
+-1.33499 -0.0235279 0
+-1.31957 -0.032834 0
+-1.30209 -0.0416214 0
+-1.28538 -0.0534676 0
+-1.27363 -0.0746328 0
+-1.27239 -0.111057 0
+-1.28698 -0.170506 0
+-1.31929 -0.265997 0
+-1.36362 -0.416887 0
+-1.39916 -0.650057 0
+-1.378 -0.997342 0
+-1.21853 -1.48062 0
+-0.822622 -2.09808 0
+-0.127944 -2.85002 0
+0.821023 -3.81525 0
+1.83023 -5.21024 0
+2.5944 -7.31633 0
+2.82871 -10.23 0
+2.43159 -13.5667 0
+1.56628 -16.3925 0
+0.582856 -17.586 0
+-0.185052 -16.499 0
+-0.612764 -13.4324 0
+-0.830584 -9.46086 0
+-1.09131 -5.62406 0
+-0.519367 -2.05752 0
+-0.336674 -0.289577 0
+-0.336674 1.14582 0
+-1.23608 -0.277038 0
+-2.45543 -0.354892 0
+-4.76638 -0.295792 0
+-4.81507 0.182829 0
+-4.63212 1.46421 0
+-4.01712 3.29095 0
+-2.94764 4.778 0
+-1.66384 5.14742 0
+-0.557907 4.30614 0
+0.0543378 2.8127 0
+0.104327 1.39442 0
+-0.232269 0.489555 0
+-0.679713 0.116486 0
+-1.02169 0.0405856 0
+-1.1767 0.026645 0
+-1.17688 -0.0201715 0
+-1.09957 -0.0809403 0
+-1.00854 -0.121589 0
+-0.933337 -0.140448 0
+-0.879776 -0.148098 0
+-0.846119 -0.146493 0
+-0.828892 -0.136732 0
+-0.822499 -0.124252 0
+-0.821126 -0.109341 0
+-0.821454 -0.0879532 0
+-0.821864 -0.0640541 0
+-0.820781 -0.0468265 0
+-0.817717 -0.0358275 0
+-0.814088 -0.0232257 0
+-0.811038 -0.00926679 0
+-0.807923 -0.000976134 0
+-0.80419 0.00245716 0
+-0.800841 0.00828663 0
+-0.7986 0.0162195 0
+-0.796546 0.0199951 0
+-0.793978 0.0206941 0
+-0.791815 0.0247409 0
+-0.790875 0.031059 0
+-0.790533 0.0334971 0
+-0.79015 0.0335405 0
+-0.789839 0.0380453 0
+-0.788532 0.0472237 0
+-0.783109 0.0566485 0
+-0.770754 0.0667001 0
+-0.750681 0.0758029 0
+-0.72245 0.0644535 0
+-0.683395 -0.0059142 0
+-0.626808 -0.18381 0
+-0.538871 -0.526997 0
+-0.395643 -1.09945 0
+-0.167034 -1.94285 0
+0.168465 -3.03293 0
+0.603491 -4.25121 0
+1.08507 -5.38238 0
+1.51059 -6.13825 0
+1.74689 -6.22905 0
+1.67895 -5.49134 0
+1.27769 -4.02129 0
+0.658348 -2.22275 0
+0.101732 -0.705443 0
+0.000420398 -0.0183287 0
+-0.0121831 -0.00133463 0
+-0.0141644 -9.82077e-05 0
+-0.0124048 8.12659e-05 0
+0.000479448 0.00131838 0
+0.108625 0.018932 0
+0.721752 0.748047 0
+1.4215 2.39702 0
+1.8899 4.37983 0
+1.98518 6.02019 0
+1.7299 6.86752 0
+1.25141 6.81038 0
+0.705537 6.01569 0
+0.216177 4.78867 0
+-0.153152 3.44579 0
+-0.396494 2.23399 0
+-0.542595 1.29148 0
+-0.628319 0.648883 0
+-0.682002 0.265403 0
+-0.719644 0.0726186 0
+-0.747844 0.000497662 0
+-0.767873 -0.0109993 0
+-0.779623 -0.00214779 0
+-0.78448 0.00965162 0
+-0.785317 0.0197155 0
+-0.784488 0.0250403 0
+-0.783055 0.0246724 0
+-0.781728 0.0225708 0
+-0.781135 0.0222469 0
+-0.781072 0.021784 0
+-0.78074 0.0186405 0
+-0.77996 0.0147391 0
+-0.779188 0.012175 0
+-0.778353 0.00867376 0
+-0.776767 0.00201314 0
+-0.774129 -0.00562656 0
+-0.770536 -0.0121711 0
+-0.765477 -0.0199428 0
+-0.757856 -0.03115 0
+-0.747107 -0.0435832 0
+-0.733586 -0.0551426 0
+-0.718231 -0.0688237 0
+-0.702962 -0.0899023 0
+-0.691253 -0.122767 0
+-0.687192 -0.174568 0
+-0.693886 -0.259303 0
+-0.712675 -0.398099 0
+-0.740172 -0.62256 0
+-0.75813 -0.979384 0
+-0.718977 -1.51978 0
+-0.542487 -2.27457 0
+-0.142533 -3.24997 0
+0.512609 -4.47039 0
+1.33461 -6.03224 0
+2.09883 -8.08055 0
+2.52038 -10.6516 0
+2.40274 -13.449 0
+1.7651 -15.7548 0
+0.844908 -16.6658 0
+-0.0446275 -15.6094 0
+-0.704916 -12.7721 0
+-1.14795 -9.01782 0
+-1.52503 -5.24698 0
+-0.810032 -1.64515 0
+-0.493248 -0.0156467 0
+-0.493248 1.26985 0
+-1.05537 -0.239104 0
+-2.08073 -0.301954 0
+-4.01002 -0.24493 0
+-3.99272 0.165524 0
+-3.75937 1.23086 0
+-3.18019 2.71176 0
+-2.28948 3.88727 0
+-1.317 4.17494 0
+-0.564791 3.55392 0
+-0.223251 2.47115 0
+-0.271736 1.4429 0
+-0.528253 0.746065 0
+-0.786319 0.374545 0
+-0.925964 0.180225 0
+-0.937186 0.0378593 0
+-0.874586 -0.0827777 0
+-0.798117 -0.157417 0
+-0.739808 -0.179905 0
+-0.703806 -0.176457 0
+-0.683208 -0.168703 0
+-0.672747 -0.156961 0
+-0.669757 -0.139729 0
+-0.670976 -0.12304 0
+-0.672954 -0.107371 0
+-0.674132 -0.0867821 0
+-0.674286 -0.0639059 0
+-0.673061 -0.0480583 0
+-0.670524 -0.038371 0
+-0.667811 -0.0259453 0
+-0.665704 -0.0113794 0
+-0.663646 -0.00304026 0
+-0.661173 -2.20621e-05 0
+-0.65898 0.00608841 0
+-0.657547 0.0147804 0
+-0.656109 0.0185517 0
+-0.654041 0.0186205 0
+-0.65191 0.0226043 0
+-0.650237 0.0293795 0
+-0.648559 0.0318142 0
+-0.646561 0.0315367 0
+-0.644622 0.0361002 0
+-0.642228 0.0448236 0
+-0.637044 0.0514584 0
+-0.62639 0.05604 0
+-0.608473 0.0578801 0
+-0.581465 0.0374393 0
+-0.542352 -0.0450342 0
+-0.486659 -0.239512 0
+-0.407149 -0.606517 0
+-0.291858 -1.21475 0
+-0.126036 -2.10869 0
+0.0993445 -3.25833 0
+0.375728 -4.52763 0
+0.66722 -5.67391 0
+0.908341 -6.37941 0
+1.01665 -6.3374 0
+0.926455 -5.40118 0
+0.638798 -3.73366 0
+0.265451 -1.84942 0
+0.0159402 -0.455938 0
+0.00101632 -0.00340498 0
+-0.00020478 -0.000113604 0
+-0.000296356 -6.78161e-06 0
+-0.000217665 2.41918e-06 0
+0.00100961 9.10332e-05 0
+0.0168416 0.00309992 0
+0.293901 0.470984 0
+0.719013 1.9719 0
+1.0557 4.04313 0
+1.16985 5.90603 0
+1.05369 6.98368 0
+0.78072 7.08334 0
+0.448858 6.34755 0
+0.137958 5.09957 0
+-0.109236 3.69299 0
+-0.285295 2.41005 0
+-0.403816 1.41 0
+-0.483386 0.728453 0
+-0.538254 0.320271 0
+-0.576856 0.111219 0
+-0.603686 0.0273277 0
+-0.621073 0.00638737 0
+-0.630762 0.00754101 0
+-0.635164 0.014054 0
+-0.637034 0.0215849 0
+-0.638104 0.0261106 0
+-0.638836 0.0254038 0
+-0.639419 0.0231532 0
+-0.640139 0.0229669 0
+-0.640831 0.0224754 0
+-0.640989 0.0187984 0
+-0.640606 0.0143559 0
+-0.640138 0.0117069 0
+-0.639632 0.00816733 0
+-0.638657 0.0010371 0
+-0.637066 -0.00721754 0
+-0.635025 -0.0142129 0
+-0.63226 -0.0227081 0
+-0.628025 -0.0353861 0
+-0.621791 -0.0498174 0
+-0.613394 -0.0635402 0
+-0.602775 -0.0794432 0
+-0.590466 -0.102212 0
+-0.578177 -0.135056 0
+-0.56807 -0.184675 0
+-0.561729 -0.265644 0
+-0.56097 -0.398859 0
+-0.568759 -0.614772 0
+-0.584654 -0.963488 0
+-0.592441 -1.51199 0
+-0.547845 -2.31917 0
+-0.383327 -3.41449 0
+-0.0439182 -4.8098 0
+0.454171 -6.53033 0
+0.982344 -8.60872 0
+1.32612 -10.9953 0
+1.29044 -13.4133 0
+0.824277 -15.2887 0
+0.0673524 -15.9089 0
+-0.731142 -14.8109 0
+-1.36904 -12.1342 0
+-1.80131 -8.58555 0
+-2.11558 -4.93271 0
+-1.13546 -1.36911 0
+-0.640917 0.147454 0
+-0.640917 1.33329 0
+-0.911529 -0.212105 0
+-1.78961 -0.267098 0
+-3.43763 -0.217895 0
+-3.40242 0.130312 0
+-3.19585 1.02427 0
+-2.7387 2.25461 0
+-2.07921 3.22777 0
+-1.39314 3.48886 0
+-0.880238 3.04101 0
+-0.641931 2.23284 0
+-0.636779 1.43774 0
+-0.735913 0.845193 0
+-0.818783 0.457409 0
+-0.833307 0.194742 0
+-0.792897 -0.00255787 0
+-0.736729 -0.138952 0
+-0.693932 -0.200221 0
+-0.671951 -0.201893 0
+-0.664431 -0.183984 0
+-0.663495 -0.169646 0
+-0.665463 -0.155001 0
+-0.669343 -0.135857 0
+-0.673975 -0.118415 0
+-0.677861 -0.103492 0
+-0.680317 -0.0843327 0
+-0.68148 -0.0627492 0
+-0.681587 -0.0479574 0
+-0.68094 -0.0390253 0
+-0.680078 -0.0268135 0
+-0.679333 -0.0121301 0
+-0.678528 -0.0038513 0
+-0.677517 -0.00103902 0
+-0.676567 0.00513284 0
+-0.675835 0.0140429 0
+-0.674981 0.0176919 0
+-0.673687 0.0173202 0
+-0.672069 0.0209814 0
+-0.670248 0.0275522 0
+-0.668011 0.0295716 0
+-0.665232 0.0287516 0
+-0.662005 0.0328681 0
+-0.657911 0.0407237 0
+-0.651508 0.0450489 0
+-0.640846 0.0453724 0
+-0.62411 0.0411374 0
+-0.599648 0.0129707 0
+-0.566035 -0.0786544 0
+-0.522449 -0.283107 0
+-0.468473 -0.660503 0
+-0.403173 -1.28007 0
+-0.324878 -2.18701 0
+-0.232647 -3.35059 0
+-0.128771 -4.63153 0
+-0.0213193 -5.7814 0
+0.0742471 -6.47502 0
+0.136887 -6.40008 0
+0.148355 -5.41268 0
+0.107464 -3.6928 0
+0.0422541 -1.78423 0
+0.00156099 -0.41525 0
+9.30057e-05 -0.00193709 0
+-7.73626e-06 -1.28806e-05 0
+-1.06103e-05 -3.92798e-06 0
+-9.60074e-06 1.37551e-06 0
+8.7551e-05 -6.19793e-06 0
+0.00168906 0.00149834 0
+0.0503955 0.422275 0
+0.132939 1.88935 0
+0.191457 3.9846 0
+0.189324 5.90815 0
+0.124799 7.04819 0
+0.0187107 7.18942 0
+-0.102447 6.4687 0
+-0.218144 5.21526 0
+-0.317939 3.79278 0
+-0.399952 2.49206 0
+-0.46666 1.47671 0
+-0.520945 0.782738 0
+-0.564427 0.363753 0
+-0.597912 0.144704 0
+-0.62226 0.0516759 0
+-0.638709 0.0228365 0
+-0.648933 0.0177645 0
+-0.655 0.0201208 0
+-0.658886 0.0254704 0
+-0.6618 0.0290241 0
+-0.664133 0.027737 0
+-0.665996 0.0250155 0
+-0.667501 0.0244711 0
+-0.668624 0.0235989 0
+-0.669256 0.0194295 0
+-0.669486 0.014586 0
+-0.669574 0.0117941 0
+-0.669596 0.00818888 0
+-0.669416 0.000856928 0
+-0.668977 -0.00765756 0
+-0.668319 -0.0148715 0
+-0.667317 -0.0237101 0
+-0.665654 -0.0370498 0
+-0.663009 -0.0524632 0
+-0.659043 -0.0675072 0
+-0.653373 -0.0851134 0
+-0.645995 -0.109591 0
+-0.637659 -0.143393 0
+-0.629379 -0.192955 0
+-0.621703 -0.27332 0
+-0.615412 -0.40515 0
+-0.613592 -0.616593 0
+-0.621761 -0.955319 0
+-0.642093 -1.49166 0
+-0.662622 -2.29864 0
+-0.65115 -3.42597 0
+-0.568108 -4.89284 0
+-0.402514 -6.69593 0
+-0.210222 -8.80101 0
+-0.115302 -11.0902 0
+-0.251297 -13.2773 0
+-0.669732 -14.8702 0
+-1.28613 -15.2925 0
+-1.91871 -14.1784 0
+-2.40115 -11.6518 0
+-2.68107 -8.30563 0
+-2.82182 -4.79197 0
+-1.49006 -1.28429 0
+-0.787553 0.184589 0
+-0.787553 1.33877 0
+-0.795604 -0.192558 0
+-1.55942 -0.24394 0
+-2.99277 -0.203348 0
+-2.95932 0.096862 0
+-2.8036 0.868549 0
+-2.4796 1.9306 0
+-2.02711 2.77527 0
+-1.55722 3.01896 0
+-1.18203 2.66581 0
+-0.951304 2.0021 0
+-0.842076 1.32851 0
+-0.795694 0.798805 0
+-0.76331 0.425018 0
+-0.727202 0.158627 0
+-0.693203 -0.0365627 0
+-0.671451 -0.160712 0
+-0.66441 -0.207268 0
+-0.667566 -0.198743 0
+-0.675372 -0.176186 0
+-0.684445 -0.16058 0
+-0.693234 -0.146218 0
+-0.701138 -0.12796 0
+-0.708087 -0.111472 0
+-0.713998 -0.0975881 0
+-0.718532 -0.0798054 0
+-0.721641 -0.0596466 0
+-0.723856 -0.045749 0
+-0.72563 -0.0372578 0
+-0.72688 -0.0255694 0
+-0.72753 -0.0114854 0
+-0.727939 -0.00344865 0
+-0.72838 -0.000604114 0
+-0.72864 0.00538749 0
+-0.728518 0.0139149 0
+-0.728196 0.0173646 0
+-0.727764 0.0168825 0
+-0.726883 0.0200952 0
+-0.725291 0.0259543 0
+-0.723134 0.0274089 0
+-0.720464 0.0260757 0
+-0.716827 0.0292258 0
+-0.711568 0.035458 0
+-0.703986 0.0374609 0
+-0.692963 0.0343436 0
+-0.677087 0.0252551 0
+-0.655787 -0.00833589 0
+-0.630464 -0.103985 0
+-0.604956 -0.308622 0
+-0.585859 -0.67961 0
+-0.58237 -1.28357 0
+-0.603861 -2.16553 0
+-0.65447 -3.30001 0
+-0.726765 -4.55927 0
+-0.797856 -5.71035 0
+-0.831009 -6.44191 0
+-0.785366 -6.44577 0
+-0.635162 -5.56293 0
+-0.395792 -3.9322 0
+-0.145184 -2.03485 0
+-0.00455465 -0.555885 0
+-0.00031962 -0.00617221 0
+-2.77825e-05 -0.000304689 0
+-5.3346e-06 -2.63378e-05 0
+-2.59178e-05 2.19834e-05 0
+-0.000314281 0.000282141 0
+-0.00468344 0.00586742 0
+-0.153348 0.570936 0
+-0.421333 2.15733 0
+-0.678387 4.24165 0
+-0.837989 6.06774 0
+-0.881803 7.092 0
+-0.838167 7.14578 0
+-0.753382 6.38391 0
+-0.669252 5.13113 0
+-0.611051 3.73458 0
+-0.585816 2.46683 0
+-0.58788 1.47877 0
+-0.60666 0.801517 0
+-0.63227 0.389362 0
+-0.657721 0.170155 0
+-0.679134 0.0730882 0
+-0.695296 0.0389978 0
+-0.706755 0.0292234 0
+-0.714672 0.0280384 0
+-0.720141 0.0309383 0
+-0.72409 0.0329732 0
+-0.727207 0.0308531 0
+-0.729739 0.0275473 0
+-0.73165 0.0263816 0
+-0.733025 0.0249741 0
+-0.734122 0.0205261 0
+-0.73507 0.0155329 0
+-0.735839 0.012563 0
+-0.73651 0.00885937 0
+-0.737264 0.00161039 0
+-0.738104 -0.00681821 0
+-0.738859 -0.0141168 0
+-0.739475 -0.0230954 0
+-0.740012 -0.0365129 0
+-0.740331 -0.0521447 0
+-0.740013 -0.0678265 0
+-0.738668 -0.0864582 0
+-0.736221 -0.112039 0
+-0.732953 -0.146661 0
+-0.729443 -0.196466 0
+-0.726366 -0.276399 0
+-0.724526 -0.40699 0
+-0.726093 -0.615026 0
+-0.736878 -0.944534 0
+-0.766684 -1.46185 0
+-0.8245 -2.24082 0
+-0.910723 -3.33974 0
+-1.01539 -4.78818 0
+-1.13035 -6.58096 0
+-1.2703 -8.66106 0
+-1.48166 -10.8789 0
+-1.81905 -12.94 0
+-2.29472 -14.3945 0
+-2.84014 -14.7471 0
+-3.32326 -13.6952 0
+-3.62282 -11.3522 0
+-3.70412 -8.22433 0
+-3.63075 -4.86534 0
+-1.88597 -1.41129 0
+-0.948947 0.0891825 0
+-0.948947 1.28602 0
+-0.700629 -0.178163 0
+-1.37343 -0.229303 0
+-2.63618 -0.198226 0
+-2.60475 0.0654194 0
+-2.48935 0.753148 0
+-2.26643 1.70767 0
+-1.96425 2.47308 0
+-1.64169 2.6964 0
+-1.34778 2.37189 0
+-1.10312 1.75743 0
+-0.909565 1.13495 0
+-0.765661 0.654894 0
+-0.671221 0.330572 0
+-0.623481 0.110881 0
+-0.613264 -0.0467857 0
+-0.625654 -0.148329 0
+-0.645509 -0.187419 0
+-0.664005 -0.180255 0
+-0.679911 -0.160287 0
+-0.694685 -0.145813 0
+-0.708127 -0.132783 0
+-0.719231 -0.116864 0
+-0.728369 -0.102341 0
+-0.736427 -0.0895361 0
+-0.743228 -0.0730113 0
+-0.74846 -0.0544214 0
+-0.752838 -0.0413773 0
+-0.756936 -0.0331659 0
+-0.760165 -0.0223462 0
+-0.76213 -0.00952591 0
+-0.763666 -0.0019187 0
+-0.765421 0.00114497 0
+-0.766785 0.00674649 0
+-0.767256 0.0143799 0
+-0.767465 0.017568 0
+-0.767861 0.0172737 0
+-0.767753 0.0199812 0
+-0.766601 0.0247966 0
+-0.764907 0.02571 0
+-0.762901 0.0240636 0
+-0.759635 0.0259539 0
+-0.754184 0.0300016 0
+-0.74643 0.0297009 0
+-0.735995 0.0239031 0
+-0.721998 0.0112522 0
+-0.705158 -0.0251829 0
+-0.689808 -0.119342 0
+-0.684345 -0.314094 0
+-0.701813 -0.662152 0
+-0.76027 -1.22513 0
+-0.878511 -2.04731 0
+-1.06512 -3.11342 0
+-1.30512 -4.31931 0
+-1.55082 -5.46469 0
+-1.7225 -6.27027 0
+-1.72514 -6.44317 0
+-1.486 -5.8021 0
+-1.00935 -4.40889 0
+-0.431309 -2.61291 0
+-0.0295028 -0.957697 0
+-0.00288774 -0.0327874 0
+-0.000218967 -0.00297348 0
+3.22056e-05 -0.000277416 0
+-0.000206138 0.00026042 0
+-0.00288138 0.00295736 0
+-0.030406 0.0333919 0
+-0.459782 1.00031 0
+-1.08962 2.78715 0
+-1.61535 4.76737 0
+-1.8785 6.33088 0
+-1.86806 7.08155 0
+-1.66457 6.94228 0
+-1.37852 6.09786 0
+-1.104 4.85661 0
+-0.895555 3.52613 0
+-0.767052 2.33832 0
+-0.705346 1.41706 0
+-0.687807 0.783978 0
+-0.694095 0.395649 0
+-0.709958 0.186017 0
+-0.726977 0.0901074 0
+-0.741504 0.0535243 0
+-0.752903 0.0406223 0
+-0.761439 0.0365737 0
+-0.767414 0.0369134 0
+-0.77155 0.0371082 0
+-0.774823 0.0341262 0
+-0.777612 0.0303358 0
+-0.779719 0.0284883 0
+-0.781269 0.0265233 0
+-0.782784 0.0220407 0
+-0.784398 0.0171468 0
+-0.785832 0.0139965 0
+-0.78717 0.010197 0
+-0.788869 0.0033086 0
+-0.790986 -0.0047016 0
+-0.793172 -0.011932 0
+-0.795421 -0.0208465 0
+-0.798092 -0.0338423 0
+-0.801163 -0.0490745 0
+-0.804155 -0.0648355 0
+-0.806768 -0.0838452 0
+-0.809016 -0.109792 0
+-0.810937 -0.144741 0
+-0.812945 -0.194458 0
+-0.816347 -0.272997 0
+-0.823003 -0.400335 0
+-0.835432 -0.602597 0
+-0.859552 -0.920415 0
+-0.908645 -1.41276 0
+-1.00364 -2.14583 0
+-1.16704 -3.17634 0
+-1.41405 -4.54118 0
+-1.74801 -6.247 0
+-2.164 -8.24507 0
+-2.65531 -10.3876 0
+-3.21077 -12.3845 0
+-3.79718 -13.8081 0
+-4.34124 -14.203 0
+-4.73917 -13.2973 0
+-4.90394 -11.1874 0
+-4.81917 -8.3091 0
+-4.55234 -5.13217 0
+-2.34604 -1.74383 0
+-1.14511 -0.141728 0
+-1.14511 1.16939 0
+-0.621372 -0.167109 0
+-1.22022 -0.221208 0
+-2.34387 -0.202768 0
+-2.30619 0.0277339 0
+-2.20543 0.65238 0
+-2.03488 1.53711 0
+-1.82003 2.25822 0
+-1.59145 2.46781 0
+-1.36051 2.14094 0
+-1.12693 1.52385 0
+-0.901865 0.909878 0
+-0.713272 0.466295 0
+-0.588469 0.205764 0
+-0.535334 0.0577399 0
+-0.538822 -0.0433036 0
+-0.571433 -0.115724 0
+-0.608259 -0.1506 0
+-0.637447 -0.151073 0
+-0.659668 -0.138073 0
+-0.678994 -0.126493 0
+-0.696147 -0.115637 0
+-0.710019 -0.102998 0
+-0.721233 -0.0911339 0
+-0.731183 -0.0795918 0
+-0.73981 -0.0643906 0
+-0.746732 -0.0475054 0
+-0.752828 -0.0352876 0
+-0.758744 -0.0272562 0
+-0.763575 -0.0175206 0
+-0.766715 -0.00639163 0
+-0.769253 0.000613957 0
+-0.77206 0.00394639 0
+-0.774322 0.00900352 0
+-0.775377 0.0154293 0
+-0.776112 0.0182979 0
+-0.777193 0.0183491 0
+-0.777753 0.0205362 0
+-0.777131 0.024169 0
+-0.776054 0.0246279 0
+-0.774877 0.0228808 0
+-0.772418 0.0234894 0
+-0.767681 0.025259 0
+-0.761003 0.0230181 0
+-0.752616 0.0155103 0
+-0.742183 0.000812919 0
+-0.731485 -0.0358871 0
+-0.727049 -0.123784 0
+-0.740743 -0.300408 0
+-0.790647 -0.612257 0
+-0.901751 -1.11403 0
+-1.10063 -1.84845 0
+-1.4013 -2.81277 0
+-1.78771 -3.93292 0
+-2.20083 -5.0516 0
+-2.53694 -5.9342 0
+-2.66502 -6.31513 0
+-2.46905 -5.9981 0
+-1.90749 -4.97047 0
+-1.06818 -3.45224 0
+-0.22063 -1.80525 0
+-0.0292567 -0.224161 0
+-0.00348753 -0.0287427 0
+2.82527e-05 -0.0037933 0
+-0.00326672 0.00355529 0
+-0.0293186 0.0290091 0
+-0.227534 0.231607 0
+-1.13161 1.90438 0
+-2.05134 3.70687 0
+-2.68006 5.39607 0
+-2.9034 6.55421 0
+-2.75639 6.93452 0
+-2.36736 6.55325 0
+-1.88999 5.62049 0
+-1.44926 4.41587 0
+-1.11475 3.19162 0
+-0.90112 2.12469 0
+-0.787122 1.30306 0
+-0.739417 0.736273 0
+-0.728624 0.384856 0
+-0.734476 0.191868 0
+-0.745209 0.10084 0
+-0.75569 0.0640048 0
+-0.764685 0.0496164 0
+-0.771928 0.0438163 0
+-0.777136 0.0421215 0
+-0.780736 0.0407073 0
+-0.783729 0.0371192 0
+-0.786476 0.0330828 0
+-0.788633 0.030644 0
+-0.7903 0.0281907 0
+-0.792123 0.0238631 0
+-0.794225 0.0192484 0
+-0.796189 0.01596 0
+-0.798116 0.012123 0
+-0.800633 0.00582531 0
+-0.803852 -0.00148314 0
+-0.807356 -0.00842933 0
+-0.811209 -0.0169942 0
+-0.815966 -0.0290853 0
+-0.821682 -0.0433593 0
+-0.827843 -0.058675 0
+-0.834217 -0.0774718 0
+-0.8409 -0.10311 0
+-0.847814 -0.137827 0
+-0.855304 -0.186969 0
+-0.865244 -0.263058 0
+-0.88088 -0.3847 0
+-0.906607 -0.576871 0
+-0.95072 -0.876302 0
+-1.03042 -1.33306 0
+-1.17377 -2.00248 0
+-1.41429 -2.93582 0
+-1.7793 -4.17617 0
+-2.2778 -5.7485 0
+-2.8948 -7.62806 0
+-3.59483 -9.68755 0
+-4.32895 -11.6504 0
+-5.03519 -13.1019 0
+-5.6332 -13.605 0
+-6.03093 -12.8996 0
+-6.15616 -11.0622 0
+-5.99533 -8.46994 0
+-5.60601 -5.52149 0
+-2.89379 -2.25018 0
+-1.39579 -0.506059 0
+-1.39579 0.979144 0
+-0.553675 -0.157597 0
+-1.09157 -0.217359 0
+-2.10095 -0.216465 0
+-2.04941 -0.0238123 0
+-1.93784 0.540813 0
+-1.77223 1.37149 0
+-1.58653 2.07253 0
+-1.4087 2.28997 0
+-1.23637 1.96861 0
+-1.05174 1.33921 0
+-0.853932 0.712069 0
+-0.669852 0.282209 0
+-0.535243 0.0711495 0
+-0.46958 -0.00792813 0
+-0.466093 -0.0467964 0
+-0.499417 -0.0824053 0
+-0.542099 -0.107924 0
+-0.578494 -0.114684 0
+-0.606837 -0.109736 0
+-0.630638 -0.102698 0
+-0.651035 -0.0952456 0
+-0.667388 -0.0866519 0
+-0.680528 -0.0779992 0
+-0.691936 -0.0681905 0
+-0.701665 -0.0546667 0
+-0.709524 -0.0396524 0
+-0.716563 -0.0282544 0
+-0.723477 -0.0203478 0
+-0.729283 -0.0117199 0
+-0.733284 -0.00239546 0
+-0.736558 0.00388273 0
+-0.740003 0.00738627 0
+-0.742814 0.0118092 0
+-0.744331 0.0169418 0
+-0.74548 0.0194412 0
+-0.746968 0.0198322 0
+-0.747953 0.0215164 0
+-0.747797 0.0240085 0
+-0.747276 0.0241018 0
+-0.746795 0.0223944 0
+-0.745244 0.0219335 0
+-0.741802 0.0218119 0
+-0.737131 0.018341 0
+-0.731877 0.0102516 0
+-0.726187 -0.00488268 0
+-0.722522 -0.0395578 0
+-0.728584 -0.117729 0
+-0.758254 -0.270745 0
+-0.832769 -0.53775 0
+-0.981575 -0.965239 0
+-1.23691 -1.59313 0
+-1.61925 -2.43045 0
+-2.11883 -3.43337 0
+-2.68076 -4.4897 0
+-3.2004 -5.4146 0
+-3.53766 -5.97791 0
+-3.55887 -5.97693 0
+-3.20112 -5.32826 0
+-2.53177 -4.12162 0
+-1.7409 -2.59613 0
+-0.868061 -1.09701 0
+-0.464872 -0.431938 0
+-0.350041 -0.11863 0
+-0.459146 0.112655 0
+-0.870081 0.439939 0
+-1.78748 1.149 0
+-2.65296 2.76986 0
+-3.40804 4.46194 0
+-3.8298 5.81781 0
+-3.82635 6.55074 0
+-3.45557 6.56374 0
+-2.86531 5.96299 0
+-2.22108 4.97625 0
+-1.65211 3.8469 0
+-1.22643 2.76595 0
+-0.953121 1.85138 0
+-0.803028 1.15297 0
+-0.734517 0.667761 0
+-0.711281 0.36162 0
+-0.708526 0.189113 0
+-0.712356 0.10467 0
+-0.717111 0.0687595 0
+-0.721645 0.0541502 0
+-0.725721 0.0478917 0
+-0.728849 0.0452491 0
+-0.731154 0.0430118 0
+-0.733386 0.0393509 0
+-0.735728 0.035424 0
+-0.737709 0.0326254 0
+-0.739361 0.0298413 0
+-0.741288 0.0257899 0
+-0.743591 0.0215513 0
+-0.745842 0.0182104 0
+-0.748163 0.0144435 0
+-0.751232 0.00889339 0
+-0.755211 0.00249501 0
+-0.759741 -0.00390023 0
+-0.764969 -0.0117659 0
+-0.771533 -0.0225224 0
+-0.779516 -0.0353773 0
+-0.788392 -0.049799 0
+-0.797921 -0.0679434 0
+-0.808204 -0.0928287 0
+-0.819162 -0.126869 0
+-0.831238 -0.174894 0
+-0.846858 -0.247438 0
+-0.870855 -0.360703 0
+-0.91073 -0.536996 0
+-0.979297 -0.807736 0
+-1.09864 -1.21372 0
+-1.30046 -1.80065 0
+-1.61945 -2.61683 0
+-2.08149 -3.71413 0
+-2.69203 -5.13796 0
+-3.43058 -6.88951 0
+-4.25452 -8.86362 0
+-5.10781 -10.7971 0
+-5.92404 -12.2857 0
+-6.62237 -12.9067 0
+-7.11175 -12.4102 0
+-7.31571 -10.8582 0
+-7.20378 -8.58187 0
+-6.80198 -5.92329 0
+-3.54158 -2.86837 0
+-1.71527 -0.988641 0
+-1.71527 0.70675 0
+-0.493865 -0.147732 0
+-0.980435 -0.2145 0
+-1.89557 -0.235836 0
+-1.82898 -0.090413 0
+-1.6917 0.403531 0
+-1.49627 1.17605 0
+-1.29146 1.86771 0
+-1.12245 2.12096 0
+-0.995079 1.84123 0
+-0.881576 1.2257 0
+-0.756098 0.586587 0
+-0.620402 0.146508 0
+-0.499848 -0.0494095 0
+-0.421533 -0.0862485 0
+-0.395517 -0.0728172 0
+-0.410788 -0.0671405 0
+-0.445576 -0.0731418 0
+-0.482246 -0.0780197 0
+-0.514204 -0.0777836 0
+-0.541592 -0.0753161 0
+-0.564771 -0.0720721 0
+-0.583435 -0.0679936 0
+-0.598414 -0.0630265 0
+-0.610925 -0.0556848 0
+-0.621117 -0.0444795 0
+-0.629133 -0.0316416 0
+-0.636195 -0.0211984 0
+-0.643075 -0.0134729 0
+-0.648962 -0.00583746 0
+-0.653212 0.00184936 0
+-0.656693 0.0073595 0
+-0.660172 0.01086 0
+-0.662995 0.014628 0
+-0.664628 0.0185698 0
+-0.665863 0.0206714 0
+-0.667319 0.0212841 0
+-0.668317 0.0225096 0
+-0.668348 0.0240353 0
+-0.668099 0.0238477 0
+-0.667968 0.0222596 0
+-0.667138 0.0210985 0
+-0.6651 0.0197693 0
+-0.662648 0.0158841 0
+-0.660594 0.00819266 0
+-0.659424 -0.00605859 0
+-0.661931 -0.0370559 0
+-0.676148 -0.103517 0
+-0.716667 -0.230233 0
+-0.806003 -0.448422 0
+-0.975424 -0.795828 0
+-1.26025 -1.30832 0
+-1.68716 -2.00356 0
+-2.25744 -2.86311 0
+-2.93193 -3.81523 0
+-3.62285 -4.72371 0
+-4.20089 -5.3999 0
+-4.52647 -5.65139 0
+-4.50095 -5.35381 0
+-4.1118 -4.5108 0
+-3.42977 -3.27819 0
+-2.56192 -1.96488 0
+-1.98376 -1.01011 0
+-1.7855 -0.316914 0
+-1.97553 0.302675 0
+-2.56936 1.03376 0
+-3.49473 2.07435 0
+-4.25799 3.5331 0
+-4.72616 4.93009 0
+-4.8015 5.89314 0
+-4.47902 6.22826 0
+-3.85558 5.94029 0
+-3.08455 5.19195 0
+-2.31891 4.21061 0
+-1.67043 3.19842 0
+-1.19275 2.28826 0
+-0.885818 1.54445 0
+-0.715056 0.982206 0
+-0.63459 0.587295 0
+-0.604192 0.331221 0
+-0.596041 0.180961 0
+-0.594697 0.103326 0
+-0.594207 0.0682697 0
+-0.593763 0.0537054 0
+-0.593614 0.047742 0
+-0.593577 0.045212 0
+-0.593711 0.0431458 0
+-0.594465 0.0401046 0
+-0.595795 0.0367534 0
+-0.597147 0.033977 0
+-0.598434 0.0311276 0
+-0.600096 0.0274522 0
+-0.602187 0.0236412 0
+-0.604347 0.0203697 0
+-0.606712 0.0168085 0
+-0.609907 0.0120874 0
+-0.614133 0.00672007 0
+-0.619164 0.00113078 0
+-0.625207 -0.00572383 0
+-0.632846 -0.0148842 0
+-0.642133 -0.0260913 0
+-0.652538 -0.0393945 0
+-0.663767 -0.056715 0
+-0.675902 -0.0806939 0
+-0.689064 -0.113708 0
+-0.704163 -0.159796 0
+-0.72453 -0.227072 0
+-0.756964 -0.32827 0
+-0.812606 -0.481355 0
+-0.908966 -0.711376 0
+-1.07149 -1.05119 0
+-1.33085 -1.54129 0
+-1.7151 -2.23258 0
+-2.24032 -3.18892 0
+-2.90487 -4.47341 0
+-3.68991 -6.10447 0
+-4.56482 -7.98871 0
+-5.49082 -9.87109 0
+-6.41508 -11.3614 0
+-7.26063 -12.0612 0
+-7.92988 -11.7409 0
+-8.32974 -10.4584 0
+-8.4006 -8.51102 0
+-8.12048 -6.20341 0
+-4.27759 -3.49937 0
+-2.10584 -1.54854 0
+-2.10584 0.354224 0
+-0.438502 -0.135742 0
+-0.879775 -0.208693 0
+-1.71505 -0.254227 0
+-1.64068 -0.164789 0
+-1.4785 0.241355 0
+-1.23876 0.936296 0
+-0.982422 1.61136 0
+-0.780837 1.91937 0
+-0.665102 1.72549 0
+-0.612206 1.1728 0
+-0.57406 0.548438 0
+-0.517016 0.0894606 0
+-0.440165 -0.126265 0
+-0.366248 -0.160171 0
+-0.319239 -0.119831 0
+-0.30731 -0.0790748 0
+-0.321839 -0.0586183 0
+-0.34857 -0.0512943 0
+-0.377737 -0.048621 0
+-0.405341 -0.0477178 0
+-0.429702 -0.0477162 0
+-0.44998 -0.0477208 0
+-0.46647 -0.0465419 0
+-0.4798 -0.0423598 0
+-0.490068 -0.034217 0
+-0.49768 -0.0240341 0
+-0.503955 -0.0149282 0
+-0.509785 -0.00764739 0
+-0.51473 -0.000896954 0
+-0.51834 0.0054543 0
+-0.521225 0.0102404 0
+-0.523945 0.0135758 0
+-0.526055 0.0167336 0
+-0.527189 0.0196998 0
+-0.527933 0.0214104 0
+-0.528749 0.0220961 0
+-0.529175 0.0229314 0
+-0.528877 0.0237332 0
+-0.528394 0.0233603 0
+-0.52809 0.0219519 0
+-0.527498 0.0205015 0
+-0.526399 0.0186657 0
+-0.525505 0.0149855 0
+-0.525547 0.0082307 0
+-0.527195 -0.00441525 0
+-0.533346 -0.03091 0
+-0.551809 -0.0850591 0
+-0.596844 -0.185204 0
+-0.690543 -0.354729 0
+-0.86357 -0.62281 0
+-1.15167 -1.02023 0
+-1.58604 -1.56919 0
+-2.17995 -2.26922 0
+-2.91478 -3.08042 0
+-3.72912 -3.90941 0
+-4.51769 -4.61136 0
+-5.14899 -5.02012 0
+-5.50176 -5.00107 0
+-5.50618 -4.50641 0
+-5.17288 -3.61152 0
+-4.62286 -2.51493 0
+-4.17161 -1.46139 0
+-3.99772 -0.490833 0
+-4.15966 0.464592 0
+-4.62337 1.49745 0
+-5.22114 2.6721 0
+-5.61998 3.93192 0
+-5.6728 4.9829 0
+-5.34778 5.56811 0
+-4.70419 5.58466 0
+-3.86429 5.10038 0
+-2.97055 4.29821 0
+-2.14629 3.38635 0
+-1.47252 2.52464 0
+-0.98176 1.7975 0
+-0.664772 1.22746 0
+-0.48559 0.803024 0
+-0.399247 0.500951 0
+-0.365466 0.297439 0
+-0.35526 0.170754 0
+-0.351916 0.0999811 0
+-0.348715 0.0650685 0
+-0.344749 0.0497394 0
+-0.340757 0.0437495 0
+-0.337208 0.0416628 0
+-0.334462 0.0403997 0
+-0.332889 0.0385305 0
+-0.332355 0.0362197 0
+-0.33232 0.0339412 0
+-0.332587 0.0313939 0
+-0.333374 0.0282386 0
+-0.334661 0.024928 0
+-0.336178 0.0218856 0
+-0.338045 0.018675 0
+-0.340759 0.0148009 0
+-0.344526 0.010487 0
+-0.34925 0.00585328 0
+-0.355126 0.000151676 0
+-0.36258 -0.00743082 0
+-0.371583 -0.0170889 0
+-0.381645 -0.0293332 0
+-0.392503 -0.045857 0
+-0.404384 -0.0688142 0
+-0.417935 -0.100157 0
+-0.435018 -0.142713 0
+-0.460284 -0.201806 0
+-0.502477 -0.286078 0
+-0.575368 -0.408464 0
+-0.698534 -0.588211 0
+-0.89638 -0.853349 0
+-1.19346 -1.24421 0
+-1.60757 -1.81847 0
+-2.1455 -2.65099 0
+-2.80484 -3.81407 0
+-3.58033 -5.32898 0
+-4.46776 -7.10128 0
+-5.45631 -8.88254 0
+-6.50953 -10.3082 0
+-7.55032 -11.0204 0
+-8.46854 -10.8227 0
+-9.15236 -9.77456 0
+-9.51632 -8.14706 0
+-9.49184 -6.22789 0
+-5.05227 -4.00712 0
+-2.54828 -2.10669 0
+-2.54828 -0.0533633 0
+-0.384523 -0.120398 0
+-0.782561 -0.196255 0
+-1.54483 -0.263377 0
+-1.47686 -0.232756 0
+-1.30643 0.0709149 0
+-1.0318 0.661662 0
+-0.715324 1.29488 0
+-0.450364 1.65441 0
+-0.30098 1.5761 0
+-0.26592 1.13774 0
+-0.29165 0.574165 0
+-0.315876 0.113683 0
+-0.305032 -0.137113 0
+-0.263292 -0.201914 0
+-0.215667 -0.16746 0
+-0.184179 -0.110568 0
+-0.17559 -0.0672117 0
+-0.18467 -0.0422196 0
+-0.203272 -0.0300235 0
+-0.225387 -0.0256083 0
+-0.247344 -0.0257638 0
+-0.267102 -0.0279681 0
+-0.283881 -0.0297681 0
+-0.297399 -0.0288465 0
+-0.307416 -0.0242045 0
+-0.314316 -0.017139 0
+-0.319319 -0.00992966 0
+-0.323395 -0.00357526 0
+-0.32654 0.00224391 0
+-0.328595 0.00750513 0
+-0.32999 0.011631 0
+-0.331106 0.0146873 0
+-0.331696 0.01732 0
+-0.331558 0.0195578 0
+-0.331074 0.0209229 0
+-0.330553 0.0215712 0
+-0.329732 0.022106 0
+-0.32844 0.0224372 0
+-0.32707 0.0219872 0
+-0.325935 0.0208127 0
+-0.32484 0.0194021 0
+-0.323731 0.0175525 0
+-0.323096 0.0143468 0
+-0.323468 0.00859763 0
+-0.325611 -0.00227636 0
+-0.332402 -0.024124 0
+-0.351055 -0.0664104 0
+-0.394608 -0.141657 0
+-0.483168 -0.266175 0
+-0.644648 -0.461337 0
+-0.912734 -0.752156 0
+-1.32062 -1.16132 0
+-1.89125 -1.6986 0
+-2.62546 -2.34624 0
+-3.48975 -3.04514 0
+-4.40939 -3.69175 0
+-5.27473 -4.15482 0
+-5.9648 -4.31103 0
+-6.38351 -4.08774 0
+-6.49915 -3.49592 0
+-6.38079 -2.63332 0
+-6.20716 -1.63505 0
+-6.12329 -0.574738 0
+-6.18714 0.528416 0
+-6.35848 1.66876 0
+-6.49739 2.81099 0
+-6.41148 3.84598 0
+-6.01223 4.58363 0
+-5.31839 4.87426 0
+-4.4225 4.68877 0
+-3.44838 4.12626 0
+-2.51228 3.36211 0
+-1.69876 2.57283 0
+-1.05337 1.87925 0
+-0.586245 1.33038 0
+-0.280501 0.921713 0
+-0.102639 0.625161 0
+-0.013447 0.411759 0
+0.0230641 0.260928 0
+0.0343787 0.159439 0
+0.0376914 0.0966679 0
+0.0409413 0.0618182 0
+0.0459655 0.0447148 0
+0.0521243 0.0375903 0
+0.0584493 0.0353375 0
+0.0641135 0.0347351 0
+0.0685454 0.0340982 0
+0.0717185 0.0330461 0
+0.0740022 0.031657 0
+0.0756082 0.0297874 0
+0.0764968 0.0273496 0
+0.0767544 0.0246698 0
+0.0765908 0.0220487 0
+0.0759371 0.0193281 0
+0.0744673 0.0162701 0
+0.0720261 0.0129277 0
+0.0686508 0.00922787 0
+0.0642145 0.00458739 0
+0.0584824 -0.00169943 0
+0.0515281 -0.0101352 0
+0.0436698 -0.0214756 0
+0.0349033 -0.0370911 0
+0.0245584 -0.05847 0
+0.0111448 -0.0867441 0
+-0.00834945 -0.12322 0
+-0.0396903 -0.170466 0
+-0.0923936 -0.233375 0
+-0.180093 -0.320765 0
+-0.320033 -0.448272 0
+-0.530824 -0.64256 0
+-0.828431 -0.946607 0
+-1.22318 -1.42372 0
+-1.72167 -2.15249 0
+-2.33402 -3.20173 0
+-3.08049 -4.58251 0
+-3.98732 -6.19445 0
+-5.06583 -7.80403 0
+-6.2844 -9.08962 0
+-7.55498 -9.74979 0
+-8.75096 -9.62675 0
+-9.74874 -8.77679 0
+-10.4562 -7.43963 0
+-10.784 -5.90001 0
+-5.76759 -4.23671 0
+-2.98895 -2.54278 0
+-2.98895 -0.454891 0
+-0.329664 -0.101423 0
+-0.682685 -0.174956 0
+-1.37024 -0.256072 0
+-1.32522 -0.277778 0
+-1.17365 -0.0806547 0
+-0.89501 0.383011 0
+-0.538625 0.938491 0
+-0.205058 1.32084 0
+0.0135983 1.35744 0
+0.0861575 1.06517 0
+0.050016 0.610304 0
+-0.0238028 0.187499 0
+-0.0763901 -0.084529 0
+-0.0862362 -0.192072 0
+-0.0648039 -0.188896 0
+-0.0352895 -0.140087 0
+-0.0144024 -0.0881035 0
+-0.00725983 -0.0493669 0
+-0.0116537 -0.0256344 0
+-0.023315 -0.0139517 0
+-0.0384153 -0.0106682 0
+-0.0541878 -0.0122002 0
+-0.0688399 -0.0151205 0
+-0.0811256 -0.0165652 0
+-0.0902214 -0.0151131 0
+-0.0961319 -0.0112328 0
+-0.0997081 -0.00635761 0
+-0.101827 -0.00146065 0
+-0.102801 0.00321428 0
+-0.102755 0.00745535 0
+-0.102049 0.0109204 0
+-0.100969 0.0136042 0
+-0.0994413 0.0157881 0
+-0.0973956 0.0175084 0
+-0.0950712 0.0185947 0
+-0.0926614 0.0191578 0
+-0.0900525 0.0194933 0
+-0.0871937 0.0195748 0
+-0.0843588 0.0191486 0
+-0.0817871 0.0182373 0
+-0.0794315 0.0170427 0
+-0.0772838 0.0154009 0
+-0.0756058 0.0126649 0
+-0.0747732 0.00776106 0
+-0.0756492 -0.00140461 0
+-0.081002 -0.0187754 0
+-0.0971535 -0.0502633 0
+-0.135167 -0.103648 0
+-0.211882 -0.189465 0
+-0.350747 -0.322478 0
+-0.581198 -0.521712 0
+-0.935369 -0.807163 0
+-1.44173 -1.19225 0
+-2.11554 -1.67244 0
+-2.94707 -2.21363 0
+-3.89167 -2.74717 0
+-4.86866 -3.17785 0
+-5.77413 -3.40559 0
+-6.50753 -3.35438 0
+-7.00572 -2.99776 0
+-7.27204 -2.36703 0
+-7.37564 -1.53149 0
+-7.39009 -0.560311 0
+-7.34784 0.486134 0
+-7.22328 1.54417 0
+-6.94225 2.52994 0
+-6.42637 3.33007 0
+-5.66282 3.82006 0
+-4.71242 3.92384 0
+-3.67989 3.65623 0
+-2.67425 3.12061 0
+-1.77871 2.46657 0
+-1.03918 1.8333 0
+-0.468395 1.30847 0
+-0.0566033 0.918585 0
+0.218797 0.646312 0
+0.386595 0.457363 0
+0.477068 0.321285 0
+0.518259 0.219736 0
+0.533071 0.144627 0
+0.537462 0.0922765 0
+0.540251 0.0590286 0
+0.544735 0.040231 0
+0.551183 0.0311413 0
+0.558774 0.0277463 0
+0.566478 0.0270301 0
+0.57348 0.0270965 0
+0.579446 0.0270792 0
+0.584436 0.0266666 0
+0.588539 0.0256843 0
+0.591768 0.0241202 0
+0.594227 0.0222103 0
+0.596084 0.0201906 0
+0.597344 0.0180673 0
+0.597859 0.0157553 0
+0.597564 0.0132214 0
+0.596502 0.0102895 0
+0.594621 0.00646708 0
+0.5918 0.00112114 0
+0.588023 -0.00635867 0
+0.583252 -0.0167057 0
+0.576983 -0.0308223 0
+0.567913 -0.0494009 0
+0.55376 -0.0725913 0
+0.53083 -0.100291 0
+0.493381 -0.133018 0
+0.433257 -0.173251 0
+0.340142 -0.227651 0
+0.202502 -0.310632 0
+0.00907556 -0.449134 0
+-0.250203 -0.687329 0
+-0.5863 -1.08763 0
+-1.01757 -1.72123 0
+-1.57737 -2.64193 0
+-2.31447 -3.84541 0
+-3.27741 -5.23151 0
+-4.48375 -6.59768 0
+-5.89045 -7.68293 0
+-7.38829 -8.25195 0
+-8.83308 -8.18196 0
+-10.0993 -7.5106 0
+-11.1127 -6.42617 0
+-11.8088 -5.2039 0
+-6.27933 -4.05936 0
+-3.33038 -2.71375 0
+-3.33038 -0.747334 0
+-0.272956 -0.0796931 0
+-0.576382 -0.144968 0
+-1.1799 -0.228921 0
+-1.17058 -0.287096 0
+-1.06572 -0.185523 0
+-0.825027 0.142311 0
+-0.473439 0.586898 0
+-0.0998465 0.947239 0
+0.19158 1.06601 0
+0.3392 0.917551 0
+0.349637 0.599864 0
+0.279797 0.257337 0
+0.195855 -0.000589916 0
+0.139871 -0.136091 0
+0.120968 -0.169997 0
+0.127062 -0.146185 0
+0.141682 -0.102727 0
+0.153854 -0.0615434 0
+0.159403 -0.0311879 0
+0.158334 -0.0128868 0
+0.152327 -0.00466577 0
+0.143414 -0.00329195 0
+0.133518 -0.00522844 0
+0.124364 -0.00741553 0
+0.117272 -0.00802516 0
+0.112769 -0.00673404 0
+0.110572 -0.00416386 0
+0.110117 -0.00100945 0
+0.111019 0.00230792 0
+0.113003 0.00546812 0
+0.115728 0.00819135 0
+0.118934 0.0103951 0
+0.122563 0.0121557 0
+0.126579 0.0134888 0
+0.130818 0.0143526 0
+0.135147 0.0148248 0
+0.139586 0.0150515 0
+0.144115 0.0150423 0
+0.148554 0.0147057 0
+0.152743 0.0140452 0
+0.156677 0.0131052 0
+0.16036 0.0117148 0
+0.163646 0.00937488 0
+0.166184 0.00521881 0
+0.167008 -0.00223214 0
+0.163576 -0.015347 0
+0.150721 -0.0374123 0
+0.119844 -0.0727756 0
+0.0580956 -0.127721 0
+-0.0525695 -0.211818 0
+-0.235835 -0.338453 0
+-0.519925 -0.523082 0
+-0.933937 -0.778246 0
+-1.50076 -1.10563 0
+-2.2269 -1.48751 0
+-3.09211 -1.88198 0
+-4.04416 -2.22583 0
+-5.00344 -2.44633 0
+-5.87894 -2.4789 0
+-6.59181 -2.28493 0
+-7.09684 -1.86202 0
+-7.38719 -1.24117 0
+-7.47308 -0.474454 0
+-7.35923 0.372257 0
+-7.03553 1.22045 0
+-6.48524 1.97963 0
+-5.70958 2.5544 0
+-4.75409 2.86456 0
+-3.70613 2.87588 0
+-2.66896 2.61905 0
+-1.73061 2.18226 0
+-0.943877 1.67984 0
+-0.323838 1.21326 0
+0.141329 0.843298 0
+0.475814 0.5841 0
+0.705721 0.416404 0
+0.854715 0.308368 0
+0.943608 0.232391 0
+0.990919 0.172425 0
+1.0127 0.12284 0
+1.0216 0.083379 0
+1.02603 0.0546046 0
+1.0304 0.0358577 0
+1.0363 0.0252419 0
+1.04373 0.0203176 0
+1.05201 0.0187489 0
+1.06036 0.01874 0
+1.06827 0.0191745 0
+1.07548 0.0194506 0
+1.0819 0.0192662 0
+1.08746 0.018555 0
+1.09223 0.0174482 0
+1.0963 0.0161154 0
+1.09974 0.0146244 0
+1.10254 0.0129593 0
+1.10471 0.0110526 0
+1.1063 0.00869888 0
+1.10727 0.00549088 0
+1.10748 0.000909883 0
+1.10669 -0.00556405 0
+1.10441 -0.0144268 0
+1.09963 -0.0260474 0
+1.09062 -0.0403929 0
+1.07488 -0.056849 0
+1.04908 -0.0744932 0
+1.00901 -0.0929469 0
+0.94965 -0.113893 0
+0.865494 -0.143496 0
+0.750715 -0.195853 0
+0.598499 -0.296918 0
+0.398336 -0.487166 0
+0.130344 -0.819634 0
+-0.241998 -1.34889 0
+-0.775254 -2.10867 0
+-1.53769 -3.08298 0
+-2.58475 -4.18444 0
+-3.92505 -5.25739 0
+-5.49505 -6.11293 0
+-7.16306 -6.58393 0
+-8.77031 -6.57471 0
+-10.1936 -6.08736 0
+-11.3887 -5.231 0
+-12.3577 -4.23491 0
+-6.42962 -3.4401 0
+-3.44397 -2.50415 0
+-3.44397 -0.801841 0
+-0.215051 -0.0571131 0
+-0.463473 -0.109126 0
+-0.969454 -0.184111 0
+-0.999336 -0.257217 0
+-0.958395 -0.226467 0
+-0.792361 -0.0237266 0
+-0.498491 0.293023 0
+-0.139356 0.588099 0
+0.18885 0.737803 0
+0.408123 0.698275 0
+0.493893 0.514092 0
+0.474659 0.276569 0
+0.404479 0.0695874 0
+0.33156 -0.0631747 0
+0.281386 -0.119825 0
+0.257654 -0.122457 0
+0.252553 -0.0976289 0
+0.256375 -0.0653701 0
+0.262125 -0.0369414 0
+0.266097 -0.0168623 0
+0.26696 -0.00553302 0
+0.26482 -0.00115587 0
+0.260617 -0.00102927 0
+0.255716 -0.00251733 0
+0.25145 -0.00376319 0
+0.248677 -0.00396419 0
+0.247629 -0.00311996 0
+0.248165 -0.0015481 0
+0.250053 0.000416457 0
+0.253045 0.00247311 0
+0.256855 0.00437754 0
+0.261245 0.00600231 0
+0.266079 0.00731859 0
+0.271252 0.00831251 0
+0.276625 0.0089764 0
+0.282089 0.00935779 0
+0.287607 0.00953059 0
+0.293131 0.0095156 0
+0.298546 0.00928739 0
+0.303754 0.00883438 0
+0.308732 0.00812462 0
+0.313453 0.00699031 0
+0.317765 0.00505927 0
+0.321251 0.0017301 0
+0.322903 -0.00388705 0
+0.320573 -0.0130207 0
+0.310413 -0.0272557 0
+0.286392 -0.048759 0
+0.239658 -0.0809913 0
+0.157547 -0.129711 0
+0.022586 -0.203497 0
+-0.187666 -0.312836 0
+-0.498806 -0.467113 0
+-0.934768 -0.669675 0
+-1.50994 -0.912346 0
+-2.22014 -1.17179 0
+-3.03595 -1.41003 0
+-3.90226 -1.58005 0
+-4.74565 -1.63553 0
+-5.48847 -1.54213 0
+-6.06406 -1.28646 0
+-6.42577 -0.879482 0
+-6.5456 -0.354644 0
+-6.40943 0.236064 0
+-6.01585 0.82685 0
+-5.38126 1.34502 0
+-4.54874 1.72187 0
+-3.59223 1.90804 0
+-2.60586 1.88951 0
+-1.68164 1.69483 0
+-0.886789 1.3874 0
+-0.251723 1.04477 0
+0.227385 0.734149 0
+0.575591 0.495091 0
+0.82404 0.33565 0
+0.999626 0.240817 0
+1.1216 0.186391 0
+1.20311 0.150887 0
+1.25414 0.121385 0
+1.28357 0.0934155 0
+1.29936 0.0675879 0
+1.30799 0.0459714 0
+1.31392 0.0299263 0
+1.31966 0.0195074 0
+1.32621 0.0137614 0
+1.33367 0.0112872 0
+1.34169 0.0107265 0
+1.34983 0.0110345 0
+1.35775 0.0115222 0
+1.36522 0.0117947 0
+1.37208 0.0116965 0
+1.37828 0.0112474 0
+1.38386 0.0105333 0
+1.38888 0.00961175 0
+1.39335 0.00848145 0
+1.39733 0.00707161 0
+1.40083 0.00520518 0
+1.40373 0.00258758 0
+1.40577 -0.00113145 0
+1.40647 -0.00626583 0
+1.40505 -0.0130067 0
+1.4003 -0.0212972 0
+1.39058 -0.0306743 0
+1.37397 -0.0402431 0
+1.34848 -0.049004 0
+1.31221 -0.0566764 0
+1.26343 -0.0651101 0
+1.20028 -0.0803511 0
+1.11963 -0.1152 0
+1.01426 -0.191552 0
+0.868101 -0.341006 0
+0.64993 -0.601464 0
+0.308687 -1.00764 0
+-0.224311 -1.57567 0
+-1.02093 -2.28636 0
+-2.12931 -3.07606 0
+-3.54342 -3.84328 0
+-5.18494 -4.47141 0
+-6.91227 -4.8566 0
+-8.56115 -4.92583 0
+-10.0061 -4.64243 0
+-11.217 -4.02012 0
+-12.2667 -3.18522 0
+-6.12176 -2.49821 0
+-3.22808 -1.90286 0
+-3.22808 -0.519395 0
+-0.158179 -0.0361452 0
+-0.347852 -0.0722973 0
+-0.743976 -0.129283 0
+-0.804848 -0.196346 0
+-0.826314 -0.205005 0
+-0.750355 -0.0996891 0
+-0.552567 0.0952312 0
+-0.264608 0.300136 0
+0.0407017 0.432491 0
+0.28792 0.451054 0
+0.433718 0.368293 0
+0.478218 0.232067 0
+0.452528 0.0952759 0
+0.396213 -0.0068621 0
+0.339663 -0.0632784 0
+0.297947 -0.0807437 0
+0.273744 -0.0734289 0
+0.263345 -0.0549747 0
+0.26139 -0.034989 0
+0.263236 -0.0187123 0
+0.265702 -0.00800154 0
+0.267072 -0.00252921 0
+0.266871 -0.000831672 0
+0.265505 -0.0011537 0
+0.26379 -0.00205118 0
+0.262496 -0.00267317 0
+0.26209 -0.00271647 0
+0.262745 -0.00220608 0
+0.26446 -0.00130142 0
+0.267129 -0.000198329 0
+0.270578 0.000925304 0
+0.27463 0.00194866 0
+0.279137 0.00280869 0
+0.283973 0.00347368 0
+0.289012 0.00393522 0
+0.294152 0.004215 0
+0.299333 0.00434772 0
+0.304496 0.00434967 0
+0.309567 0.00421408 0
+0.314478 0.00392153 0
+0.31918 0.0034192 0
+0.323594 0.00257408 0
+0.327505 0.00114562 0
+0.330446 -0.00121296 0
+0.331501 -0.00494539 0
+0.329059 -0.0105813 0
+0.320565 -0.018765 0
+0.302259 -0.0304556 0
+0.268664 -0.0473998 0
+0.211695 -0.0727447 0
+0.119566 -0.111372 0
+-0.0238438 -0.169431 0
+-0.238238 -0.252724 0
+-0.543899 -0.364021 0
+-0.956234 -0.500019 0
+-1.47894 -0.649095 0
+-2.09796 -0.791021 0
+-2.77874 -0.899282 0
+-3.46843 -0.945855 0
+-4.10312 -0.907454 0
+-4.61802 -0.771581 0
+-4.95694 -0.540575 0
+-5.07886 -0.232743 0
+-4.96204 0.119228 0
+-4.6075 0.472301 0
+-4.04204 0.779554 0
+-3.31897 0.998791 0
+-2.51311 1.10217 0
+-1.70776 1.08416 0
+-0.976789 0.963855 0
+-0.368951 0.779562 0
+0.0989518 0.576865 0
+0.438038 0.395062 0
+0.675666 0.257462 0
+0.842342 0.168973 0
+0.96262 0.120538 0
+1.05203 0.0969822 0
+1.1187 0.0842158 0
+1.16686 0.0732247 0
+1.19973 0.0605458 0
+1.2208 0.0465135 0
+1.23379 0.0329806 0
+1.24205 0.0216627 0
+1.24814 0.0134212 0
+1.25366 0.00824283 0
+1.2594 0.00554709 0
+1.26558 0.00454491 0
+1.27211 0.00449725 0
+1.2788 0.00483568 0
+1.28541 0.00518776 0
+1.29174 0.00536057 0
+1.29769 0.00529704 0
+1.30321 0.00500954 0
+1.30831 0.00451785 0
+1.31297 0.00381347 0
+1.31721 0.00284037 0
+1.32093 0.00148099 0
+1.32395 -0.000435099 0
+1.3259 -0.00308514 0
+1.32622 -0.00658308 0
+1.32411 -0.010902 0
+1.31861 -0.0157913 0
+1.30866 -0.0207229 0
+1.29338 -0.0249652 0
+1.27228 -0.027907 0
+1.24532 -0.0297224 0
+1.21262 -0.0324081 0
+1.17341 -0.0411421 0
+1.12393 -0.0657148 0
+1.05383 -0.121451 0
+0.941487 -0.228668 0
+0.749588 -0.409566 0
+0.423936 -0.681993 0
+-0.100673 -1.05106 0
+-0.88523 -1.50181 0
+-1.96401 -1.99728 0
+-3.32245 -2.48484 0
+-4.88597 -2.90789 0
+-6.5275 -3.21506 0
+-8.09507 -3.35826 0
+-9.45612 -3.28138 0
+-10.5554 -2.92088 0
+-11.4789 -2.26172 0
+-5.4144 -1.50315 0
+-2.70944 -1.0678 0
+-2.70944 0.0720667 0
+-0.105678 -0.0191193 0
+-0.236829 -0.0399757 0
+-0.517784 -0.0753213 0
+-0.591848 -0.122283 0
+-0.654781 -0.142075 0
+-0.655499 -0.0989737 0
+-0.560094 -0.000176752 0
+-0.375293 0.115332 0
+-0.14542 0.202616 0
+0.0713728 0.23426 0
+0.230134 0.20953 0
+0.313966 0.148234 0
+0.332325 0.0769154 0
+0.308835 0.0166256 0
+0.268083 -0.0225276 0
+0.227667 -0.04033 0
+0.196451 -0.0422153 0
+0.176562 -0.035088 0
+0.166341 -0.02477 0
+0.1627 -0.0150736 0
+0.162562 -0.00786551 0
+0.163577 -0.00354685 0
+0.164371 -0.00162751 0
+0.164464 -0.0012487 0
+0.163987 -0.00157709 0
+0.163334 -0.00202164 0
+0.16289 -0.00227459 0
+0.162925 -0.00224292 0
+0.163578 -0.00195727 0
+0.164882 -0.00150384 0
+0.166785 -0.00097924 0
+0.169194 -0.000462259 0
+0.172006 -5.13645e-06 0
+0.175115 0.000362082 0
+0.178421 0.000627971 0
+0.181836 0.000797687 0
+0.185298 0.000883877 0
+0.188752 0.000893817 0
+0.192141 0.000823518 0
+0.195405 0.000655536 0
+0.198474 0.000348772 0
+0.201223 -0.000176863 0
+0.203413 -0.00104589 0
+0.204615 -0.00241732 0
+0.204134 -0.00446657 0
+0.200925 -0.00737376 0
+0.19351 -0.0113525 0
+0.179828 -0.0167753 0
+0.156849 -0.0244237 0
+0.119888 -0.0357861 0
+0.0617276 -0.0532141 0
+-0.0280023 -0.0797047 0
+-0.162571 -0.11816 0
+-0.356432 -0.170164 0
+-0.621876 -0.234581 0
+-0.964543 -0.306434 0
+-1.37899 -0.376581 0
+-1.84576 -0.432516 0
+-2.33126 -0.460364 0
+-2.79094 -0.44779 0
+-3.17535 -0.387182 0
+-3.43769 -0.278243 0
+-3.5412 -0.12924 0
+-3.46545 0.0434674 0
+-3.21086 0.217696 0
+-2.80059 0.369281 0
+-2.27874 0.476938 0
+-1.70373 0.527154 0
+-1.13729 0.517711 0
+-0.631778 0.458345 0
+-0.220075 0.367858 0
+0.0883237 0.268466 0
+0.303947 0.179438 0
+0.448922 0.112486 0
+0.547473 0.0704216 0
+0.618989 0.0490207 0
+0.675316 0.0406548 0
+0.721677 0.0378538 0
+0.759395 0.0355062 0
+0.788559 0.0313811 0
+0.809625 0.0254465 0
+0.823853 0.0187525 0
+0.833027 0.0124877 0
+0.838988 0.00746002 0
+0.843262 0.00396756 0
+0.846906 0.00190252 0
+0.850516 0.000935102 0
+0.854335 0.000677246 0
+0.858385 0.000785409 0
+0.862565 0.00100645 0
+0.86674 0.00118559 0
+0.870787 0.00124953 0
+0.874621 0.00117462 0
+0.878184 0.000953899 0
+0.881423 0.000573609 0
+0.884263 -2.65346e-07 0
+0.88657 -0.000826035 0
+0.88811 -0.00197579 0
+0.888531 -0.00350676 0
+0.887367 -0.00542033 0
+0.884083 -0.00761877 0
+0.878164 -0.00987212 0
+0.869263 -0.0118226 0
+0.857373 -0.0130765 0
+0.842904 -0.0134383 0
+0.826502 -0.0133211 0
+0.808417 -0.0143236 0
+0.787172 -0.0198984 0
+0.757377 -0.0359206 0
+0.706757 -0.0708313 0
+0.613009 -0.13492 0
+0.441842 -0.2384 0
+0.148174 -0.388326 0
+-0.317684 -0.585206 0
+-0.998568 -0.820925 0
+-1.91617 -1.07968 0
+-3.05875 -1.34225 0
+-4.37562 -1.59103 0
+-5.77982 -1.81086 0
+-7.15706 -1.98102 0
+-8.38032 -2.05813 0
+-9.34258 -1.95862 0
+-10.0456 -1.55865 0
+-4.54818 -0.752924 0
+-2.1144 -0.305833 0
+-2.1144 0.725553 0
+-0.0611786 -0.00753742 0
+-0.139397 -0.0165432 0
+-0.311265 -0.0327301 0
+-0.37741 -0.0561394 0
+-0.449512 -0.0699738 0
+-0.490831 -0.0576558 0
+-0.470736 -0.0202735 0
+-0.383062 0.0276564 0
+-0.248437 0.0679901 0
+-0.102369 0.0881908 0
+0.021547 0.0856125 0
+0.103657 0.0661235 0
+0.141143 0.039429 0
+0.143431 0.0143356 0
+0.124822 -0.00391886 0
+0.0984406 -0.0139503 0
+0.0732599 -0.017036 0
+0.0537571 -0.0155865 0
+0.0409813 -0.0119957 0
+0.0339595 -0.00805322 0
+0.030891 -0.00479845 0
+0.0299657 -0.002623 0
+0.0298118 -0.00147492 0
+0.0296371 -0.00107536 0
+0.0291543 -0.00109567 0
+0.0283989 -0.00126751 0
+0.027546 -0.00142303 0
+0.0267879 -0.00148605 0
+0.026273 -0.00144368 0
+0.0260859 -0.00131799 0
+0.0262497 -0.0011442 0
+0.0267425 -0.000956236 0
+0.0275162 -0.000779997 0
+0.0285092 -0.000632112 0
+0.0296566 -0.000520559 0
+0.0308993 -0.000446201 0
+0.0321885 -0.000406408 0
+0.0334809 -0.000399673 0
+0.0347321 -0.000428845 0
+0.03589 -0.000503495 0
+0.0368811 -0.000643484 0
+0.0375855 -0.000882405 0
+0.0378052 -0.00126683 0
+0.0372365 -0.00184977 0
+0.0354502 -0.00268156 0
+0.0318814 -0.00380622 0
+0.0258056 -0.005278 0
+0.0162448 -0.0072159 0
+0.00171908 -0.00989943 0
+-0.0201935 -0.0138752 0
+-0.0534015 -0.0200078 0
+-0.103709 -0.029399 0
+-0.178744 -0.0431267 0
+-0.28709 -0.0618213 0
+-0.436501 -0.0851732 0
+-0.631417 -0.111522 0
+-0.870308 -0.137695 0
+-1.14361 -0.159215 0
+-1.43303 -0.170954 0
+-1.71267 -0.16815 0
+-1.95223 -0.147634 0
+-2.12156 -0.108913 0
+-2.19601 -0.0548004 0
+-2.16122 0.00867807 0
+-2.01669 0.073157 0
+-1.7769 0.129486 0
+-1.46962 0.169652 0
+-1.13109 0.188626 0
+-0.798975 0.185595 0
+-0.50475 0.164119 0
+-0.267944 0.131052 0
+-0.0939988 0.0945194 0
+0.0237776 0.0616608 0
+0.0993148 0.036948 0
+0.148112 0.0216238 0
+0.182858 0.0142741 0
+0.21143 0.0120819 0
+0.237145 0.0121386 0
+0.260323 0.0123279 0
+0.280084 0.011619 0
+0.295642 0.009888 0
+0.306869 0.00752532 0
+0.314299 0.00505714 0
+0.318855 0.00290314 0
+0.321538 0.00128435 0
+0.323203 0.000237021 0
+0.324462 -0.000324464 0
+0.325678 -0.000539362 0
+0.327013 -0.00054963 0
+0.32849 -0.000471192 0
+0.330059 -0.000383533 0
+0.33164 -0.000332346 0
+0.333154 -0.000339904 0
+0.334525 -0.000417412 0
+0.335673 -0.000574911 0
+0.336499 -0.000826946 0
+0.336866 -0.00119322 0
+0.336582 -0.00169287 0
+0.335407 -0.00233207 0
+0.333074 -0.00308774 0
+0.329347 -0.00389244 0
+0.324103 -0.00462829 0
+0.317422 -0.00514262 0
+0.309649 -0.00530366 0
+0.301323 -0.00511317 0
+0.292884 -0.00488192 0
+0.284012 -0.00545267 0
+0.272538 -0.00842474 0
+0.25291 -0.0162934 0
+0.214458 -0.0323799 0
+0.139962 -0.0604239 0
+0.00534767 -0.103786 0
+-0.21858 -0.164398 0
+-0.561921 -0.241866 0
+-1.04952 -0.333327 0
+-1.69466 -0.434545 0
+-2.49488 -0.542035 0
+-3.4309 -0.655003 0
+-4.46677 -0.774996 0
+-5.54653 -0.901264 0
+-6.58389 -1.02076 0
+-7.45252 -1.08999 0
+-8.02354 -0.987628 0
+-3.77777 -0.364266 0
+-1.75732 0.0911666 0
+-1.75732 1.00794 0
+-0.0277107 -0.0015903 0
+-0.0639637 -0.00377231 0
+-0.145676 -0.00783817 0
+-0.187719 -0.0140969 0
+-0.239304 -0.0183894 0
+-0.280377 -0.0165836 0
+-0.29197 -0.00868085 0
+-0.266549 0.00223453 0
+-0.210673 0.0121126 0
+-0.14042 0.0179377 0
+-0.073554 0.018746 0
+-0.0229092 0.0154783 0
+0.00643169 0.0100877 0
+0.016229 0.00453777 0
+0.0121542 0.000155438 0
+0.00074188 -0.00253859 0
+-0.0126395 -0.00365527 0
+-0.0245888 -0.00363788 0
+-0.0335851 -0.00300011 0
+-0.039472 -0.00216705 0
+-0.0428575 -0.00141365 0
+-0.0446127 -0.000868389 0
+-0.0455384 -0.000549929 0
+-0.0462011 -0.000413349 0
+-0.0469061 -0.000391268 0
+-0.0477525 -0.000421783 0
+-0.0487147 -0.000461484 0
+-0.0497144 -0.000486942 0
+-0.0506684 -0.00049032 0
+-0.0515134 -0.000473534 0
+-0.0522151 -0.000443107 0
+-0.0527654 -0.000406484 0
+-0.053176 -0.00036998 0
+-0.0534707 -0.000338018 0
+-0.0536788 -0.000313041 0
+-0.0538297 -0.000295852 0
+-0.0539502 -0.000286385 0
+-0.0540658 -0.000284682 0
+-0.0542035 -0.000291715 0
+-0.0543975 -0.000310041 0
+-0.0546971 -0.000344476 0
+-0.0551776 -0.000402455 0
+-0.0559515 -0.000493447 0
+-0.0571747 -0.000627221 0
+-0.059045 -0.000811806 0
+-0.0617987 -0.00105316 0
+-0.0657177 -0.0013597 0
+-0.0711795 -0.00175474 0
+-0.0787831 -0.00229661 0
+-0.0895592 -0.00309981 0
+-0.105224 -0.00434405 0
+-0.128367 -0.00625697 0
+-0.162432 -0.00906183 0
+-0.211361 -0.0128939 0
+-0.278833 -0.0177027 0
+-0.367188 -0.0231683 0
+-0.476223 -0.0286621 0
+-0.602161 -0.0332793 0
+-0.737157 -0.0359601 0
+-0.869615 -0.0356942 0
+-0.985474 -0.0317765 0
+-1.07034 -0.0240488 0
+-1.11209 -0.0130503 0
+-1.10341 -1.25177e-05 0
+-1.04357 0.013324 0
+-0.939134 0.0250438 0
+-0.802951 0.0334685 0
+-0.651868 0.0375421 0
+-0.503353 0.03708 0
+-0.37203 0.0327949 0
+-0.267056 0.0260773 0
+-0.191127 0.01859 0
+-0.141281 0.0118146 0
+-0.111039 0.0067059 0
+-0.0929781 0.00356254 0
+-0.0808291 0.00212464 0
+-0.0705646 0.0018171 0
+-0.0604443 0.00201799 0
+-0.0503688 0.0022521 0
+-0.0410184 0.00226824 0
+-0.033147 0.0020163 0
+-0.0271934 0.0015715 0
+-0.0231898 0.0010532 0
+-0.0208541 0.00056719 0
+-0.019749 0.000178862 0
+-0.0194232 -8.90701e-05 0
+-0.0195024 -0.00024553 0
+-0.0197256 -0.000316421 0
+-0.0199433 -0.00033228 0
+-0.0200944 -0.000320345 0
+-0.0201773 -0.000300913 0
+-0.020223 -0.000286981 0
+-0.0202772 -0.000285943 0
+-0.0203929 -0.000302018 0
+-0.0206298 -0.00033836 0
+-0.0210588 -0.000398264 0
+-0.0217672 -0.000485154 0
+-0.0228592 -0.00060115 0
+-0.0244473 -0.000744303 0
+-0.0266301 -0.000905273 0
+-0.0294581 -0.00106479 0
+-0.0328927 -0.00119395 0
+-0.0367754 -0.00126033 0
+-0.0408359 -0.00124345 0
+-0.0447872 -0.00116219 0
+-0.0485554 -0.001114 0
+-0.0526882 -0.00132024 0
+-0.0589477 -0.00216549 0
+-0.0710306 -0.00421085 0
+-0.0952536 -0.00815713 0
+-0.140939 -0.0147389 0
+-0.220172 -0.0245532 0
+-0.3467 -0.0378712 0
+-0.534036 -0.0545296 0
+-0.793334 -0.0740296 0
+-1.13196 -0.0959182 0
+-1.55361 -0.120386 0
+-2.0598 -0.148817 0
+-2.65089 -0.183903 0
+-3.32304 -0.229114 0
+-4.05615 -0.287648 0
+-4.78655 -0.359591 0
+-5.35949 -0.414694 0
+-2.99438 -0.169568 0
+-1.64057 0.0942541 0
+-1.64057 0.619432 0
+-0.00707638 -0.0015903 0
+-0.0164436 -0.00377231 0
+-0.0381176 -0.00783817 0
+-0.0522146 -0.0140969 0
+-0.0706041 -0.0183894 0
+-0.0871879 -0.0165836 0
+-0.095869 -0.00868085 0
+-0.0936347 0.00223453 0
+-0.0815222 0.0121126 0
+-0.0635847 0.0179377 0
+-0.0448389 0.018746 0
+-0.0293607 0.0154783 0
+-0.0192731 0.0100877 0
+-0.0147355 0.00453777 0
+-0.0145802 0.000155438 0
+-0.0171189 -0.00253859 0
+-0.0207744 -0.00365527 0
+-0.0244124 -0.00363788 0
+-0.0274127 -0.00300011 0
+-0.02958 -0.00216705 0
+-0.0309938 -0.00141365 0
+-0.0318624 -0.000868389 0
+-0.0324125 -0.000549929 0
+-0.032826 -0.000413349 0
+-0.0332175 -0.000391268 0
+-0.0336394 -0.000421783 0
+-0.0341011 -0.000461484 0
+-0.0345882 -0.000486942 0
+-0.0350787 -0.00049032 0
+-0.0355524 -0.000473534 0
+-0.0359957 -0.000443107 0
+-0.0364023 -0.000406484 0
+-0.0367724 -0.00036998 0
+-0.0371106 -0.000338018 0
+-0.0374238 -0.000313041 0
+-0.0377198 -0.000295852 0
+-0.0380064 -0.000286385 0
+-0.0382912 -0.000284682 0
+-0.0385831 -0.000291715 0
+-0.0388933 -0.000310041 0
+-0.0392379 -0.000344476 0
+-0.0396405 -0.000402455 0
+-0.0401341 -0.000493447 0
+-0.0407615 -0.000627221 0
+-0.0415735 -0.000811806 0
+-0.0426268 -0.00105316 0
+-0.0439867 -0.0013597 0
+-0.0457416 -0.00175474 0
+-0.0480384 -0.00229661 0
+-0.0511385 -0.00309981 0
+-0.0554827 -0.00434405 0
+-0.06174 -0.00625697 0
+-0.0708021 -0.00906183 0
+-0.0836963 -0.0128939 0
+-0.101399 -0.0177027 0
+-0.124568 -0.0231683 0
+-0.153231 -0.0286621 0
+-0.186511 -0.0332793 0
+-0.222471 -0.0359601 0
+-0.258166 -0.0356942 0
+-0.289943 -0.0317765 0
+-0.313993 -0.0240488 0
+-0.327043 -0.0130503 0
+-0.327057 -1.25177e-05 0
+-0.313733 0.013324 0
+-0.28869 0.0250438 0
+-0.255222 0.0334685 0
+-0.21768 0.0375421 0
+-0.1806 0.03708 0
+-0.147805 0.0327949 0
+-0.121728 0.0260773 0
+-0.103138 0.01859 0
+-0.0913235 0.0118146 0
+-0.0846178 0.0067059 0
+-0.0810554 0.00356254 0
+-0.0789308 0.00212464 0
+-0.0771139 0.0018171 0
+-0.075096 0.00201799 0
+-0.072844 0.0022521 0
+-0.0705759 0.00226824 0
+-0.0685597 0.0020163 0
+-0.0669883 0.0015715 0
+-0.0659352 0.0010532 0
+-0.0653681 0.00056719 0
+-0.0651893 0.000178862 0
+-0.0652785 -8.90701e-05 0
+-0.0655241 -0.00024553 0
+-0.0658407 -0.000316421 0
+-0.0661731 -0.00033228 0
+-0.0664935 -0.000320345 0
+-0.0667945 -0.000300913 0
+-0.0670816 -0.000286981 0
+-0.0673677 -0.000285943 0
+-0.0676698 -0.000302018 0
+-0.0680083 -0.00033836 0
+-0.0684066 -0.000398264 0
+-0.0688919 -0.000485154 0
+-0.0694932 -0.00060115 0
+-0.0702376 -0.000744303 0
+-0.071143 -0.000905273 0
+-0.0722079 -0.00106479 0
+-0.0734019 -0.00119395 0
+-0.0746624 -0.00126033 0
+-0.0759059 -0.00124345 0
+-0.0770682 -0.00116219 0
+-0.0781824 -0.001114 0
+-0.0795027 -0.00132024 0
+-0.0816683 -0.00216549 0
+-0.0858793 -0.00421085 0
+-0.0940365 -0.00815713 0
+-0.108775 -0.0147389 0
+-0.133329 -0.0245532 0
+-0.1712 -0.0378712 0
+-0.22573 -0.0545296 0
+-0.29976 -0.0740296 0
+-0.395678 -0.0959182 0
+-0.516064 -0.120386 0
+-0.664881 -0.148817 0
+-0.848785 -0.183903 0
+-1.0779 -0.229114 0
+-1.36555 -0.287648 0
+-1.72514 -0.359591 0
+-2.13983 -0.414694 0
+-1.56976 -0.169568 0
+-1.07959 0.0942541 0
+-1.07959 0.619432 0
+-0.19319 -0.106871 0
+-0.402226 -0.198816 0
+-0.823635 -0.329359 0
+-0.333179 -0.490455 0
+0.259831 -0.593007 0
+0.841505 -0.581671 0
+1.30507 -0.463555 0
+1.58647 -0.2814 0
+1.67616 -0.0896837 0
+1.61046 0.0657105 0
+1.45074 0.159723 0
+1.26058 0.190174 0
+1.08888 0.171701 0
+0.962725 0.126166 0
+0.88868 0.0740518 0
+0.859263 0.0294252 0
+0.860491 -0.00122072 0
+0.877964 -0.0174655 0
+0.900383 -0.0224103 0
+0.920707 -0.0203159 0
+0.935744 -0.015029 0
+0.945014 -0.00926157 0
+0.949528 -0.00450491 0
+0.950822 -0.00128518 0
+0.950355 0.000475573 0
+0.949227 0.00113751 0
+0.948117 0.00111897 0
+0.947353 0.000773354 0
+0.947019 0.000343559 0
+0.947064 -3.53527e-05 0
+0.947384 -0.000310129 0
+0.947871 -0.000477209 0
+0.948435 -0.000554236 0
+0.949004 -0.000559468 0
+0.949515 -0.000500437 0
+0.949897 -0.000371939 0
+0.950069 -0.000162728 0
+0.949949 0.000130538 0
+0.949474 0.000485103 0
+0.948648 0.000835662 0
+0.947589 0.00106931 0
+0.946556 0.00104293 0
+0.945936 0.000629571 0
+0.946159 -0.000213392 0
+0.947553 -0.00138319 0
+0.950192 -0.0026294 0
+0.95387 -0.00366828 0
+0.958323 -0.00444294 0
+0.963821 -0.00548751 0
+0.972092 -0.00826153 0
+0.987355 -0.0152533 0
+1.01703 -0.029665 0
+1.07165 -0.0546122 0
+1.16363 -0.0919638 0
+1.30477 -0.14113 0
+1.50297 -0.198195 0
+1.75872 -0.255735 0
+2.06229 -0.303554 0
+2.39263 -0.330322 0
+2.71859 -0.325945 0
+3.00281 -0.284206 0
+3.20785 -0.205018 0
+3.30342 -0.0955532 0
+3.27309 0.0303428 0
+3.11854 0.154554 0
+2.86009 0.258459 0
+2.533 0.327098 0
+2.18041 0.352598 0
+1.84455 0.335864 0
+1.55861 0.285949 0
+1.34135 0.21726 0
+1.19591 0.14544 0
+1.11259 0.0833243 0
+1.07431 0.0382845 0
+1.06262 0.0116902 0
+1.06234 0.000283765 0
+1.06376 -0.00142713 0
+1.06262 0.00114623 0
+1.05848 0.00414425 0
+1.0528 0.00567522 0
+1.04737 0.00543789 0
+1.04336 0.00400777 0
+1.04118 0.00217993 0
+1.04061 0.000567573 0
+1.04114 -0.000530476 0
+1.04223 -0.00108394 0
+1.04344 -0.00121551 0
+1.04454 -0.00109259 0
+1.0454 -0.000859761 0
+1.04601 -0.000613301 0
+1.04642 -0.000404083 0
+1.04667 -0.000253384 0
+1.04684 -0.000170461 0
+1.04701 -0.000165825 0
+1.04727 -0.000257457 0
+1.04773 -0.000468795 0
+1.04855 -0.000817632 0
+1.04985 -0.00129542 0
+1.05169 -0.00183814 0
+1.05398 -0.00229352 0
+1.05638 -0.00239584 0
+1.05814 -0.00176735 0
+1.05812 2.61545e-05 0
+1.05478 0.00333424 0
+1.04661 0.00817156 0
+1.03275 0.013865 0
+1.01408 0.0186653 0
+0.994602 0.0194804 0
+0.982614 0.0119882 0
+0.991179 -0.00856558 0
+1.03685 -0.045666 0
+1.13588 -0.0990341 0
+1.2979 -0.162025 0
+1.51817 -0.220261 0
+1.77134 -0.253169 0
+2.01087 -0.239539 0
+2.17745 -0.166576 0
+2.21699 -0.0395362 0
+2.10424 0.112751 0
+1.86329 0.240941 0
+1.57491 0.288385 0
+1.36099 0.21392 0
+1.31666 0.0443277 0
+1.18816 0.139435 0
+0.897089 0.295481 0
+0.897089 0.778265 0
+-0.850746 -0.404446 0
+-1.71388 -0.722625 0
+-3.43827 -1.19102 0
+-2.14589 -1.78283 0
+-0.571864 -2.16703 0
+0.942939 -2.09646 0
+2.06995 -1.59055 0
+2.62132 -0.832748 0
+2.59208 -0.0604141 0
+2.12623 0.531587 0
+1.43951 0.846462 0
+0.738849 0.890864 0
+0.168196 0.742379 0
+-0.208739 0.503128 0
+-0.395933 0.261272 0
+-0.43781 0.071328 0
+-0.391727 -0.0472772 0
+-0.308625 -0.100539 0
+-0.223902 -0.107106 0
+-0.156396 -0.0877932 0
+-0.111959 -0.0594364 0
+-0.0884515 -0.0327393 0
+-0.0801886 -0.0127373 0
+-0.0810048 -0.000438008 0
+-0.0858808 0.00538305 0
+-0.0914801 0.00676866 0
+-0.0960285 0.00569959 0
+-0.0989036 0.00368113 0
+-0.100176 0.00164909 0
+-0.10023 5.20977e-05 0
+-0.0995099 -0.00099713 0
+-0.0983851 -0.00156826 0
+-0.0971154 -0.00178997 0
+-0.0958745 -0.00176621 0
+-0.0948084 -0.00153235 0
+-0.0940964 -0.00104957 0
+-0.0939896 -0.000235149 0
+-0.0947996 0.000975031 0
+-0.0968196 0.0025396 0
+-0.100171 0.00422173 0
+-0.104605 0.0055381 0
+-0.109331 0.00580278 0
+-0.112977 0.00431051 0
+-0.113804 0.000648818 0
+-0.110177 -0.00497601 0
+-0.101131 -0.0116397 0
+-0.0866322 -0.0181325 0
+-0.0669179 -0.0241223 0
+-0.0404572 -0.0319136 0
+-0.000502161 -0.0481822 0
+0.0689434 -0.0846648 0
+0.196092 -0.15678 0
+0.421245 -0.27973 0
+0.791987 -0.462668 0
+1.35342 -0.70252 0
+2.13487 -0.979603 0
+3.13611 -1.25692 0
+4.31676 -1.48415 0
+5.59274 -1.60623 0
+6.84198 -1.57513 0
+7.9203 -1.36245 0
+8.68506 -0.969718 0
+9.02254 -0.432972 0
+8.87251 0.180435 0
+8.24382 0.78329 0
+7.21615 1.28616 0
+5.92619 1.61709 0
+4.54063 1.73818 0
+3.22235 1.65416 0
+2.09863 1.40969 0
+1.24026 1.07564 0
+0.657215 0.728491 0
+0.310415 0.430131 0
+0.133787 0.214919 0
+0.0578154 0.0876669 0
+0.0268957 0.0312085 0
+0.0068293 0.0186438 0
+-0.0166464 0.0246261 0
+-0.0445006 0.0320024 0
+-0.0719549 0.0331333 0
+-0.0940428 0.0275292 0
+-0.108245 0.0182132 0
+-0.114746 0.00868358 0
+-0.11545 0.00127514 0
+-0.112783 -0.0031947 0
+-0.108833 -0.00503153 0
+-0.104986 -0.00506081 0
+-0.10193 -0.00414577 0
+-0.0998539 -0.00293414 0
+-0.0986644 -0.00180088 0
+-0.0981633 -0.000903559 0
+-0.098139 -0.000276083 0
+-0.0983922 8.42565e-05 0
+-0.0987126 0.000155865 0
+-0.0988327 -0.00013618 0
+-0.0983848 -0.000915618 0
+-0.0968878 -0.00231358 0
+-0.0937975 -0.00438484 0
+-0.0886549 -0.00697988 0
+-0.0813625 -0.00958527 0
+-0.0725878 -0.0111698 0
+-0.064243 -0.0101116 0
+-0.0598902 -0.00432613 0
+-0.0648038 0.00824834 0
+-0.085286 0.0286542 0
+-0.126769 0.0553489 0
+-0.190352 0.0822484 0
+-0.267843 0.0969721 0
+-0.336262 0.0804072 0
+-0.353965 0.00913708 0
+-0.261793 -0.137837 0
+0.00704917 -0.367876 0
+0.506433 -0.661409 0
+1.24865 -0.962482 0
+2.17696 -1.18148 0
+3.15422 -1.21679 0
+3.98253 -0.994887 0
+4.45909 -0.516098 0
+4.45504 0.1168 0
+3.98459 0.711394 0
+3.22156 1.05141 0
+2.42642 1.00906 0
+1.76879 0.701962 0
+1.19741 0.755947 0
+0.721326 0.790142 0
+0.721326 1.48364 0
+-1.7817 -0.773647 0
+-3.57123 -1.37506 0
+-7.14177 -2.26793 0
+-5.51312 -3.41147 0
+-3.54672 -4.13341 0
+-1.77191 -3.87125 0
+-0.696591 -2.66583 0
+-0.573713 -0.955585 0
+-1.331 0.696921 0
+-2.65081 1.85144 0
+-4.12813 2.32383 0
+-5.42079 2.18357 0
+-6.33444 1.65608 0
+-6.83064 0.999376 0
+-6.98198 0.412662 0
+-6.91005 -0.000561948 0
+-6.73406 -0.223213 0
+-6.54229 -0.292265 0
+-6.38469 -0.26466 0
+-6.27911 -0.193322 0
+-6.22271 -0.115779 0
+-6.20293 -0.0524719 0
+-6.20529 -0.010324 0
+-6.21775 0.012081 0
+-6.23222 0.0199115 0
+-6.24436 0.0189627 0
+-6.25261 0.0140107 0
+-6.25713 0.00825944 0
+-6.25885 0.00342565 0
+-6.25885 0.000112964 0
+-6.25804 -0.00175365 0
+-6.25699 -0.00255562 0
+-6.25601 -0.00271372 0
+-6.25519 -0.00252016 0
+-6.25461 -0.00205554 0
+-6.25441 -0.0011837 0
+-6.25497 0.000379813 0
+-6.25686 0.00292628 0
+-6.26079 0.0065394 0
+-6.26735 0.0108365 0
+-6.2765 0.0147575 0
+-6.28719 0.0165505 0
+-6.29692 0.0141075 0
+-6.30191 0.00569745 0
+-6.29771 -0.00911425 0
+-6.28034 -0.0289516 0
+-6.24701 -0.0513967 0
+-6.1953 -0.0757662 0
+-6.11938 -0.107768 0
+-6.003 -0.164497 0
+-5.81073 -0.276877 0
+-5.48107 -0.486375 0
+-4.9264 -0.834328 0
+-4.0437 -1.3453 0
+-2.73686 -2.00927 0
+-0.947185 -2.76919 0
+1.31588 -3.51987 0
+3.95284 -4.12098 0
+6.76945 -4.4227 0
+9.49356 -4.29908 0
+11.8124 -3.68109 0
+13.4238 -2.58101 0
+14.0923 -1.10134 0
+13.6973 0.575593 0
+12.2634 2.21724 0
+9.96429 3.5854 0
+7.09461 4.48684 0
+4.01485 4.81799 0
+1.07866 4.59038 0
+-1.43732 3.92569 0
+-3.38023 3.01856 0
+-4.73048 2.07876 0
+-5.57423 1.27389 0
+-6.05309 0.693781 0
+-6.31211 0.346704 0
+-6.4637 0.182805 0
+-6.57435 0.129301 0
+-6.67077 0.121055 0
+-6.75554 0.116779 0
+-6.82272 0.10032 0
+-6.86788 0.0727001 0
+-6.89166 0.0420005 0
+-6.89887 0.0158899 0
+-6.8959 -0.00168765 0
+-6.88853 -0.0105598 0
+-6.88073 -0.0128263 0
+-6.87456 -0.0112242 0
+-6.87064 -0.00805827 0
+-6.86878 -0.00479391 0
+-6.86847 -0.00211213 0
+-6.8692 -0.000166373 0
+-6.87061 0.00113873 0
+-6.87245 0.00192933 0
+-6.87452 0.00222365 0
+-6.87652 0.00186607 0
+-6.87796 0.000527072 0
+-6.87805 -0.00222509 0
+-6.87567 -0.00675926 0
+-6.86955 -0.0131001 0
+-6.8586 -0.0205329 0
+-6.84262 -0.0271483 0
+-6.82326 -0.0294652 0
+-6.8052 -0.0223919 0
+-6.79703 7.80255e-05 0
+-6.81133 0.0429549 0
+-6.86272 0.106741 0
+-6.96283 0.182363 0
+-7.11138 0.245521 0
+-7.28386 0.252887 0
+-7.41889 0.144172 0
+-7.41155 -0.145178 0
+-7.12159 -0.657834 0
+-6.4047 -1.3783 0
+-5.16739 -2.1998 0
+-3.43199 -2.91687 0
+-1.38242 -3.26636 0
+0.645009 -3.02232 0
+2.24658 -2.11767 0
+3.09569 -0.732314 0
+3.08606 0.721024 0
+2.38976 1.74771 0
+1.37327 2.02555 0
+0.410413 1.66482 0
+-0.0769438 1.34672 0
+-0.213007 0.969747 0
+-0.213007 1.52974 0
+-2.62675 -1.06226 0
+-5.29787 -1.88743 0
+-10.6658 -3.11069 0
+-9.40408 -4.67313 0
+-7.97781 -5.55965 0
+-6.9747 -4.87432 0
+-6.91865 -2.72182 0
+-7.97866 0.10448 0
+-9.90684 2.62517 0
+-12.1884 4.13302 0
+-14.2825 4.418 0
+-15.8193 3.72047 0
+-16.6767 2.5135 0
+-16.9415 1.26425 0
+-16.8111 0.282383 0
+-16.4954 -0.316228 0
+-16.1546 -0.563948 0
+-15.8798 -0.567069 0
+-15.7018 -0.44256 0
+-15.6131 -0.28191 0
+-15.5888 -0.140048 0
+-15.6014 -0.0398354 0
+-15.6289 0.0172844 0
+-15.6574 0.0406381 0
+-15.6799 0.0425079 0
+-15.6946 0.0337007 0
+-15.7023 0.0218321 0
+-15.7053 0.0112623 0
+-15.7056 0.00378748 0
+-15.7049 -0.00046182 0
+-15.7044 -0.00220538 0
+-15.7044 -0.002418 0
+-15.7051 -0.00196144 0
+-15.7062 -0.00137412 0
+-15.7074 -0.000770961 0
+-15.7087 0.000153455 0
+-15.7102 0.0020249 0
+-15.7128 0.00558602 0
+-15.7175 0.0113448 0
+-15.7257 0.0190639 0
+-15.7381 0.0272174 0
+-15.7541 0.0326882 0
+-15.771 0.031045 0
+-15.7828 0.017647 0
+-15.7813 -0.0105989 0
+-15.7563 -0.0538176 0
+-15.6978 -0.109892 0
+-15.5943 -0.179168 0
+-15.4285 -0.273435 0
+-15.1665 -0.426458 0
+-14.7433 -0.699983 0
+-14.0517 -1.17784 0
+-12.9423 -1.94366 0
+-11.2427 -3.04476 0
+-8.79873 -4.45313 0
+-5.52856 -6.0392 0
+-1.47568 -7.57256 0
+3.15896 -8.75539 0
+8.01916 -9.28265 0
+12.634 -8.91361 0
+16.4878 -7.53466 0
+19.1039 -5.19684 0
+20.1238 -2.12097 0
+19.3718 1.32789 0
+16.895 4.69415 0
+12.9709 7.50966 0
+8.07206 9.38584 0
+2.78666 10.1035 0
+-2.29626 9.67337 0
+-6.70701 8.33648 0
+-10.1798 6.49137 0
+-12.6726 4.57158 0
+-14.3205 2.92182 0
+-15.349 1.72228 0
+-15.9862 0.983967 0
+-16.4056 0.60218 0
+-16.7085 0.432233 0
+-16.9385 0.351031 0
+-17.1075 0.285766 0
+-17.2188 0.211694 0
+-17.2795 0.133354 0
+-17.3019 0.0643869 0
+-17.3007 0.0147372 0
+-17.289 -0.0134003 0
+-17.2756 -0.0239121 0
+-17.2652 -0.0232049 0
+-17.2592 -0.0172733 0
+-17.257 -0.0102624 0
+-17.2574 -0.00430585 0
+-17.2595 -4.08582e-05 0
+-17.2624 0.00272436 0
+-17.2657 0.00446882 0
+-17.2694 0.00560518 0
+-17.2734 0.00628111 0
+-17.2779 0.0062882 0
+-17.2824 0.00504622 0
+-17.2863 0.00166683 0
+-17.2882 -0.00485066 0
+-17.2861 -0.0152195 0
+-17.2774 -0.0292193 0
+-17.2597 -0.0448279 0
+-17.2319 -0.057268 0
+-17.196 -0.0583232 0
+-17.1593 -0.0365777 0
+-17.1368 0.0204536 0
+-17.1513 0.121226 0
+-17.2303 0.261394 0
+-17.3968 0.411971 0
+-17.6515 0.507607 0
+-17.9493 0.441997 0
+-18.1753 0.0808304 0
+-18.1355 -0.69763 0
+-17.5804 -1.93346 0
+-16.2737 -3.50647 0
+-14.0992 -5.09138 0
+-11.1653 -6.20022 0
+-7.84669 -6.34095 0
+-4.70866 -5.25569 0
+-2.31564 -3.12534 0
+-0.999336 -0.595279 0
+-0.712404 1.46078 0
+-1.06084 2.37399 0
+-1.48681 2.09079 0
+-1.25113 1.29413 0
+-0.808761 0.606427 0
+-0.808761 1.09078 0
+-3.12947 -1.19008 0
+-6.38722 -2.10797 0
+-13.0059 -3.44956 0
+-12.5653 -5.11368 0
+-12.2989 -5.826 0
+-12.7037 -4.46955 0
+-14.1276 -1.29779 0
+-16.5077 2.48463 0
+-19.3733 5.49078 0
+-22.0789 6.83876 0
+-24.0967 6.43586 0
+-25.1994 4.82322 0
+-25.4702 2.78428 0
+-25.1834 0.977505 0
+-24.6523 -0.248588 0
+-24.1199 -0.848631 0
+-23.7181 -0.965699 0
+-23.4819 -0.803149 0
+-23.3866 -0.537773 0
+-23.3842 -0.284315 0
+-23.4277 -0.0964309 0
+-23.4832 0.015724 0
+-23.5313 0.0654691 0
+-23.5647 0.0740232 0
+-23.5832 0.0611434 0
+-23.5906 0.0411542 0
+-23.5912 0.0225093 0
+-23.5889 0.00898031 0
+-23.5862 0.00121673 0
+-23.5848 -0.00183435 0
+-23.5851 -0.00183416 0
+-23.587 -0.000386994 0
+-23.5902 0.00127063 0
+-23.5939 0.00242589 0
+-23.5976 0.00297573 0
+-23.6007 0.00340936 0
+-23.6033 0.00470559 0
+-23.6058 0.00815724 0
+-23.6094 0.0149821 0
+-23.6158 0.0255744 0
+-23.627 0.0385037 0
+-23.6439 0.0496219 0
+-23.6645 0.0518016 0
+-23.6827 0.0358898 0
+-23.6863 -0.00694493 0
+-23.6574 -0.0826207 0
+-23.573 -0.194199 0
+-23.404 -0.348102 0
+-23.1094 -0.567941 0
+-22.6236 -0.912171 0
+-21.8382 -1.48522 0
+-20.5879 -2.4281 0
+-18.6526 -3.87883 0
+-15.7907 -5.90653 0
+-11.8035 -8.4401 0
+-6.61902 -11.2234 0
+-0.365634 -13.8257 0
+6.59505 -15.7157 0
+13.6969 -16.3841 0
+20.2557 -15.4719 0
+25.5843 -12.8628 0
+29.0983 -8.71049 0
+30.388 -3.41017 0
+29.2631 2.45316 0
+25.785 8.1726 0
+20.2833 13.0116 0
+13.3433 16.326 0
+5.73562 17.7113 0
+-1.72421 17.1333 0
+-8.35041 14.9627 0
+-13.7252 11.8662 0
+-17.7433 8.5898 0
+-20.5544 5.73287 0
+-22.4411 3.60899 0
+-23.697 2.23994 0
+-24.5491 1.45432 0
+-25.1378 1.02089 0
+-25.5373 0.75056 0
+-25.789 0.537434 0
+-25.9254 0.348145 0
+-25.9801 0.188021 0
+-25.9856 0.069961 0
+-25.969 -0.00185155 0
+-25.9482 -0.0341983 0
+-25.9323 -0.039852 0
+-25.9237 -0.0317461 0
+-25.9215 -0.0194574 0
+-25.9234 -0.00834733 0
+-25.9274 -0.000383986 0
+-25.9319 0.00448729 0
+-25.9363 0.00717212 0
+-25.9405 0.00869421 0
+-25.9448 0.00981556 0
+-25.9493 0.0108607 0
+-25.9547 0.0116452 0
+-25.9611 0.0114421 0
+-25.9684 0.00897385 0
+-25.9758 0.00252533 0
+-25.9813 -0.00968008 0
+-25.9818 -0.0287364 0
+-25.9727 -0.0538921 0
+-25.949 -0.0809932 0
+-25.9065 -0.100806 0
+-25.8451 -0.0979678 0
+-25.7727 -0.0519231 0
+-25.7098 0.058258 0
+-25.6915 0.243149 0
+-25.7648 0.485273 0
+-25.9737 0.716516 0
+-26.3306 0.798846 0
+-26.7745 0.524792 0
+-27.1317 -0.340409 0
+-27.1047 -1.96046 0
+-26.3229 -4.28835 0
+-24.4667 -6.94752 0
+-21.4346 -9.23232 0
+-17.4694 -10.3062 0
+-13.1502 -9.57493 0
+-9.20671 -7.06879 0
+-6.22244 -3.57955 0
+-4.3821 -0.379558 0
+-3.416 1.40788 0
+-2.77534 1.45013 0
+-1.6698 0.466421 0
+-0.805224 -0.134896 0
+-0.805224 0.548452 0
+-3.23904 -1.16295 0
+-6.70248 -2.03963 0
+-13.808 -3.27849 0
+-14.2169 -4.70481 0
+-15.1284 -4.91445 0
+-16.8351 -2.76281 0
+-19.3854 1.2525 0
+-22.4331 5.53241 0
+-25.3501 8.40792 0
+-27.5226 9.01129 0
+-28.6261 7.5394 0
+-28.7195 4.91671 0
+-28.1408 2.2056 0
+-27.3077 0.144406 0
+-26.5488 -1.00746 0
+-26.0312 -1.36618 0
+-25.7775 -1.21935 0
+-25.7259 -0.854677 0
+-25.7898 -0.473791 0
+-25.8953 -0.178826 0
+-25.9949 0.00328836 0
+-26.0672 0.088003 0
+-26.1083 0.106651 0
+-26.1243 0.0900869 0
+-26.1243 0.0611744 0
+-26.1165 0.0334355 0
+-26.1069 0.012972 0
+-26.099 0.00111996 0
+-26.0943 -0.00342609 0
+-26.093 -0.00305535 0
+-26.0946 -0.000138563 0
+-26.0984 0.00347356 0
+-26.1036 0.00649406 0
+-26.1093 0.00821868 0
+-26.1149 0.00861267 0
+-26.1197 0.00827058 0
+-26.1232 0.0083164 0
+-26.1254 0.0103885 0
+-26.1267 0.0164203 0
+-26.1289 0.0278019 0
+-26.1343 0.043966 0
+-26.1454 0.0607626 0
+-26.1626 0.0691016 0
+-26.1814 0.0547466 0
+-26.1884 0.000169879 0
+-26.1587 -0.112275 0
+-26.0533 -0.299522 0
+-25.8167 -0.584622 0
+-25.3702 -1.01437 0
+-24.5988 -1.68345 0
+-23.3337 -2.75019 0
+-21.3405 -4.42126 0
+-18.3307 -6.88846 0
+-14.0143 -10.2227 0
+-8.19312 -14.2611 0
+-0.872304 -18.5439 0
+7.65413 -22.3517 0
+16.7933 -24.8544 0
+25.7419 -25.3322 0
+33.6511 -23.3805 0
+39.7986 -19.0097 0
+43.6852 -12.5965 0
+45.0227 -4.74711 0
+43.6897 3.78673 0
+39.7201 12.1427 0
+33.3456 19.3864 0
+25.0667 24.6052 0
+15.6729 27.1052 0
+6.12123 26.6851 0
+-2.69116 23.7752 0
+-10.141 19.3161 0
+-15.978 14.4268 0
+-20.2805 10.0353 0
+-23.3185 6.64702 0
+-25.4077 4.32913 0
+-26.815 2.86169 0
+-27.7321 1.93793 0
+-28.2913 1.30981 0
+-28.5933 0.839462 0
+-28.723 0.477834 0
+-28.7521 0.217126 0
+-28.7353 0.053146 0
+-28.7075 -0.0296325 0
+-28.6859 -0.0557571 0
+-28.6753 -0.0504357 0
+-28.6739 -0.0331196 0
+-28.678 -0.0154165 0
+-28.6841 -0.00223967 0
+-28.6902 0.00572628 0
+-28.6954 0.00970054 0
+-28.6995 0.0113262 0
+-28.7028 0.012013 0
+-28.7057 0.0127165 0
+-28.7088 0.0138723 0
+-28.7125 0.0153939 0
+-28.7177 0.0166382 0
+-28.725 0.0162798 0
+-28.7347 0.0122313 0
+-28.7462 0.0018397 0
+-28.7574 -0.0175161 0
+-28.764 -0.0473276 0
+-28.7588 -0.086184 0
+-28.7323 -0.127312 0
+-28.6743 -0.155987 0
+-28.578 -0.148171 0
+-28.4471 -0.0726745 0
+-28.3039 0.0999152 0
+-28.1967 0.378093 0
+-28.1988 0.718647 0
+-28.3895 0.989543 0
+-28.8095 0.94484 0
+-29.3955 0.245575 0
+-29.9198 -1.43621 0
+-29.9843 -4.22386 0
+-29.1133 -7.81849 0
+-26.9442 -11.4014 0
+-23.4395 -13.8109 0
+-18.9907 -14.0237 0
+-14.3133 -11.7462 0
+-10.152 -7.74088 0
+-6.95398 -3.57759 0
+-4.71398 -0.832125 0
+-3.09923 -0.164617 0
+-1.43481 -0.818593 0
+-0.469566 -0.927066 0
+-0.469566 0.167108 0
+-3.05287 -1.0347 0
+-6.39301 -1.77989 0
+-13.2785 -2.76809 0
+-14.2487 -3.7346 0
+-15.8831 -3.27999 0
+-18.2221 -0.423779 0
+-21.0086 4.03908 0
+-23.6953 8.21919 0
+-25.663 10.3756 0
+-26.5207 9.86897 0
+-26.2824 7.30117 0
+-25.3164 3.95078 0
+-24.1281 1.0173 0
+-23.1304 -0.853307 0
+-22.5231 -1.61471 0
+-22.3039 -1.58538 0
+-22.3548 -1.16838 0
+-22.5342 -0.675227 0
+-22.7328 -0.275197 0
+-22.8902 -0.0214213 0
+-22.9872 0.100331 0
+-23.0297 0.130577 0
+-23.0343 0.111244 0
+-23.0184 0.0742398 0
+-22.9957 0.0385466 0
+-22.9746 0.0123489 0
+-22.9588 -0.00277501 0
+-22.9493 -0.00839076 0
+-22.9452 -0.00739538 0
+-22.9454 -0.00289623 0
+-22.9482 0.00272024 0
+-22.9526 0.00798943 0
+-22.9581 0.0119647 0
+-22.9639 0.0141026 0
+-22.9697 0.0144744 0
+-22.9751 0.0136739 0
+-22.9793 0.012623 0
+-22.9817 0.0128221 0
+-22.9818 0.0165397 0
+-22.98 0.0260701 0
+-22.9781 0.0421283 0
+-22.979 0.0617335 0
+-22.9854 0.07552 0
+-22.9958 0.0652253 0
+-22.9989 0.00323792 0
+-22.9656 -0.145464 0
+-22.8424 -0.422641 0
+-22.5432 -0.883755 0
+-21.9406 -1.61691 0
+-20.8544 -2.76956 0
+-19.0406 -4.56388 0
+-16.1918 -7.2699 0
+-11.9691 -11.111 0
+-6.08116 -16.1103 0
+1.59152 -21.9334 0
+10.8663 -27.8183 0
+21.1847 -32.6695 0
+31.6599 -35.3289 0
+41.2666 -34.9381 0
+49.1204 -31.2335 0
+54.7178 -24.6062 0
+57.9736 -15.8514 0
+58.9903 -5.76295 0
+57.8267 4.95098 0
+54.4095 15.5605 0
+48.6183 25.1781 0
+40.5286 32.6953 0
+30.6654 36.9687 0
+19.964 37.3867 0
+9.4948 34.2445 0
+0.145705 28.6652 0
+-7.57153 22.1441 0
+-13.5347 15.9985 0
+-17.8951 11.0074 0
+-20.9286 7.36264 0
+-22.9277 4.86083 0
+-24.1542 3.16441 0
+-24.8312 1.9869 0
+-25.1467 1.15489 0
+-25.2516 0.582787 0
+-25.2565 0.222045 0
+-25.2305 0.0270949 0
+-25.2074 -0.0526609 0
+-25.1976 -0.0655477 0
+-25.1992 -0.0488667 0
+-25.2066 -0.0256696 0
+-25.2153 -0.00676389 0
+-25.2226 0.00507263 0
+-25.2278 0.0109839 0
+-25.2313 0.0131542 0
+-25.2334 0.0134703 0
+-25.2347 0.0132751 0
+-25.2354 0.0134255 0
+-25.2358 0.0143231 0
+-25.2364 0.0159904 0
+-25.2379 0.0180846 0
+-25.2412 0.0196522 0
+-25.2478 0.0188186 0
+-25.2588 0.0127668 0
+-25.2743 -0.00194927 0
+-25.2929 -0.0287532 0
+-25.3094 -0.0696751 0
+-25.3139 -0.122859 0
+-25.2907 -0.179141 0
+-25.2202 -0.218659 0
+-25.0835 -0.209373 0
+-24.8727 -0.110882 0
+-24.606 0.111374 0
+-24.3432 0.455845 0
+-24.1905 0.836857 0
+-24.2769 1.03119 0
+-24.6888 0.657522 0
+-25.3745 -0.750454 0
+-26.0652 -3.5332 0
+-26.2856 -7.5981 0
+-25.5016 -12.1854 0
+-23.3672 -15.9453 0
+-19.9402 -17.4507 0
+-15.714 -15.9723 0
+-11.4134 -12.0415 0
+-7.66581 -7.32521 0
+-4.76561 -3.73232 0
+-2.69576 -2.23446 0
+-0.9298 -2.10466 0
+-0.122608 -1.50912 0
+-0.122608 0.0282439 0
+-2.71022 -0.865393 0
+-5.71392 -1.44458 0
+-11.8911 -2.13318 0
+-13.0389 -2.58683 0
+-14.7987 -1.52016 0
+-16.9824 1.75992 0
+-19.1285 6.18524 0
+-20.6577 9.74849 0
+-21.1451 10.863 0
+-20.5441 9.26797 0
+-19.206 5.96309 0
+-17.6849 2.42972 0
+-16.4677 -0.199836 0
+-15.7948 -1.5262 0
+-15.644 -1.76555 0
+-15.8354 -1.39394 0
+-16.1617 -0.842122 0
+-16.4712 -0.365683 0
+-16.6906 -0.055789 0
+-16.8077 0.0957198 0
+-16.8435 0.136099 0
+-16.8286 0.115737 0
+-16.7907 0.0733349 0
+-16.749 0.0326045 0
+-16.7143 0.00380865 0
+-16.69 -0.0118972 0
+-16.6756 -0.0171179 0
+-16.669 -0.0150045 0
+-16.6676 -0.00875338 0
+-16.6692 -0.00130839 0
+-16.672 0.00559532 0
+-16.6754 0.0113968 0
+-16.6791 0.0156854 0
+-16.683 0.0180482 0
+-16.6872 0.0186824 0
+-16.6917 0.0181822 0
+-16.696 0.0169881 0
+-16.6991 0.0159501 0
+-16.6997 0.0171251 0
+-16.6967 0.0231605 0
+-16.6903 0.0357018 0
+-16.6819 0.053418 0
+-16.6747 0.0683491 0
+-16.6698 0.060344 0
+-16.6589 -0.00761566 0
+-16.613 -0.191374 0
+-16.4678 -0.567771 0
+-16.1088 -1.2427 0
+-15.3571 -2.36852 0
+-13.9607 -4.16591 0
+-11.5958 -6.92865 0
+-7.89161 -10.9739 0
+-2.49459 -16.5078 0
+4.81624 -23.4208 0
+13.98 -31.0967 0
+24.5251 -38.3628 0
+35.5426 -43.6864 0
+45.8323 -45.6177 0
+54.2245 -43.3294 0
+59.9919 -37 0
+63.1671 -27.7805 0
+64.4935 -17.1769 0
+64.747 -6.01558 0
+64.2613 5.43747 0
+62.7681 17.0544 0
+59.5119 28.4348 0
+53.7175 38.4902 0
+45.3097 45.3769 0
+34.9953 47.7013 0
+23.9355 45.3044 0
+13.3142 39.2867 0
+4.01528 31.443 0
+-3.49917 23.513 0
+-9.1436 16.6519 0
+-13.0857 11.3047 0
+-15.6252 7.40032 0
+-17.1069 4.64618 0
+-17.8646 2.74455 0
+-18.183 1.47333 0
+-18.2761 0.675889 0
+-18.2812 0.227165 0
+-18.2697 0.0156046 0
+-18.2673 -0.055017 0
+-18.2758 -0.0570707 0
+-18.2889 -0.0357634 0
+-18.301 -0.0136109 0
+-18.3093 0.00157673 0
+-18.3138 0.00956631 0
+-18.3156 0.0127837 0
+-18.316 0.0135349 0
+-18.3157 0.0132136 0
+-18.3151 0.0126629 0
+-18.3141 0.0124542 0
+-18.3126 0.0128411 0
+-18.3105 0.0138864 0
+-18.308 0.015614 0
+-18.3061 0.0176747 0
+-18.3061 0.0188205 0
+-18.3101 0.0167922 0
+-18.3205 0.00845123 0
+-18.3391 -0.010167 0
+-18.3654 -0.0433306 0
+-18.3944 -0.0938318 0
+-18.4137 -0.159918 0
+-18.4009 -0.231436 0
+-18.3242 -0.286056 0
+-18.1473 -0.287779 0
+-17.8435 -0.192383 0
+-17.4202 0.032496 0
+-16.9467 0.363347 0
+-16.5675 0.652031 0
+-16.4713 0.561315 0
+-16.7992 -0.422575 0
+-17.5177 -2.81471 0
+-18.3319 -6.78385 0
+-18.7285 -11.7888 0
+-18.1756 -16.4982 0
+-16.3926 -19.2337 0
+-13.5231 -18.8418 0
+-10.0836 -15.481 0
+-6.71846 -10.6904 0
+-3.933 -6.51778 0
+-1.99342 -4.17404 0
+-0.47056 -3.05335 0
+0.0734517 -1.77648 0
+0.0734517 0.0911314 0
+-2.32226 -0.698654 0
+-4.89457 -1.12095 0
+-10.1333 -1.5401 0
+-11.1556 -1.56452 0
+-12.5851 -0.090641 0
+-14.0824 3.25724 0
+-15.1315 7.23436 0
+-15.2899 9.90692 0
+-14.4369 10.0101 0
+-12.8595 7.69055 0
+-11.1083 4.2119 0
+-9.72048 1.04189 0
+-8.98786 -0.932454 0
+-8.89444 -1.61962 0
+-9.21616 -1.44382 0
+-9.68272 -0.927377 0
+-10.0968 -0.428002 0
+-10.3702 -0.0923012 0
+-10.499 0.0729939 0
+-10.5212 0.117981 0
+-10.4835 0.0983319 0
+-10.423 0.055307 0
+-10.3635 0.013787 0
+-10.3165 -0.0143891 0
+-10.2852 -0.0274679 0
+-10.2675 -0.0295999 0
+-10.2592 -0.0253643 0
+-10.2568 -0.0174338 0
+-10.2575 -0.00806295 0
+-10.2592 0.00038274 0
+-10.2606 0.007034 0
+-10.2616 0.0124426 0
+-10.2626 0.0166453 0
+-10.2636 0.0191077 0
+-10.2651 0.0201787 0
+-10.2675 0.0206424 0
+-10.2709 0.0203851 0
+-10.2743 0.0193173 0
+-10.2761 0.0189681 0
+-10.2746 0.0217307 0
+-10.2681 0.0291932 0
+-10.2557 0.0410683 0
+-10.2388 0.0514543 0
+-10.2186 0.0401384 0
+-10.1886 -0.0375386 0
+-10.121 -0.259002 0
+-9.94566 -0.743076 0
+-9.52645 -1.66187 0
+-8.64024 -3.25467 0
+-6.9703 -5.83576 0
+-4.12513 -9.77369 0
+0.303799 -15.4027 0
+6.63352 -22.8372 0
+14.9344 -31.7212 0
+24.8663 -41.0281 0
+35.5842 -49.0799 0
+45.8034 -53.9047 0
+54.078 -53.8914 0
+59.2511 -48.5015 0
+60.9493 -38.6972 0
+59.9749 -26.8051 0
+58.2945 -15.4956 0
+57.4603 -5.18047 0
+58.0609 4.83768 0
+59.632 15.4839 0
+60.6708 27.3966 0
+59.1513 40.0102 0
+54.1697 50.3588 0
+46.0161 55.8551 0
+35.7978 55.5229 0
+24.9425 50.1421 0
+14.7509 41.6347 0
+6.12098 32.1429 0
+-0.529606 23.3025 0
+-5.19784 15.973 0
+-8.16254 10.365 0
+-9.84153 6.32517 0
+-10.6693 3.57229 0
+-11.0117 1.81573 0
+-11.1255 0.789754 0
+-11.1589 0.260518 0
+-11.1773 0.0340902 0
+-11.1985 -0.0339087 0
+-11.22 -0.0355649 0
+-11.2367 -0.0190437 0
+-11.2464 -0.0038248 0
+-11.2501 0.00525802 0
+-11.2499 0.00932858 0
+-11.248 0.0108758 0
+-11.2459 0.0114498 0
+-11.2441 0.0114619 0
+-11.2426 0.0111483 0
+-11.241 0.0108716 0
+-11.2389 0.0107231 0
+-11.2357 0.0106788 0
+-11.2311 0.0110397 0
+-11.2255 0.0120252 0
+-11.2197 0.0130142 0
+-11.2154 0.01255 0
+-11.2155 0.00858286 0
+-11.2237 -0.00197379 0
+-11.2434 -0.0236226 0
+-11.2758 -0.0614267 0
+-11.3167 -0.119049 0
+-11.352 -0.196108 0
+-11.3534 -0.284658 0
+-11.2759 -0.365364 0
+-11.0624 -0.4058 0
+-10.6633 -0.366617 0
+-10.072 -0.227945 0
+-9.3691 -0.0508961 0
+-8.74152 -0.0662602 0
+-8.43806 -0.726038 0
+-8.64769 -2.60507 0
+-9.34935 -6.08219 0
+-10.2344 -10.9037 0
+-10.7908 -15.9419 0
+-10.5376 -19.4869 0
+-9.28119 -20.0982 0
+-7.22504 -17.5371 0
+-4.86571 -13.0497 0
+-2.76234 -8.62116 0
+-1.34516 -5.59121 0
+-0.201498 -3.53593 0
+0.105716 -1.75746 0
+0.105716 0.27167 0
+-1.95371 -0.557067 0
+-4.08926 -0.854557 0
+-8.37178 -1.07462 0
+-9.11778 -0.818515 0
+-10.0203 0.81185 0
+-10.6852 3.9222 0
+-10.6735 7.22264 0
+-9.77358 9.00704 0
+-8.16069 8.39723 0
+-6.32791 5.85778 0
+-4.83167 2.71566 0
+-4.0228 0.233023 0
+-3.92705 -1.02822 0
+-4.3142 -1.23248 0
+-4.87161 -0.886413 0
+-5.35852 -0.440471 0
+-5.66724 -0.119285 0
+-5.79869 0.0391482 0
+-5.80571 0.0800082 0
+-5.74805 0.0603171 0
+-5.67088 0.0211612 0
+-5.6001 -0.015472 0
+-5.54635 -0.0399664 0
+-5.51133 -0.0494116 0
+-5.49212 -0.0466776 0
+-5.48355 -0.0381737 0
+-5.48063 -0.0282802 0
+-5.48034 -0.0177187 0
+-5.48106 -0.0073393 0
+-5.48144 0.000761032 0
+-5.48075 0.00634689 0
+-5.47939 0.0110939 0
+-5.47798 0.0152387 0
+-5.4766 0.0177345 0
+-5.47554 0.0191254 0
+-5.47561 0.0207161 0
+-5.47713 0.0219187 0
+-5.47948 0.021672 0
+-5.48161 0.0211138 0
+-5.48206 0.0221896 0
+-5.47827 0.0254154 0
+-5.46746 0.0302746 0
+-5.44833 0.0323351 0
+-5.41994 0.0117646 0
+-5.37499 -0.082476 0
+-5.28547 -0.348501 0
+-5.0788 -0.949722 0
+-4.60645 -2.13418 0
+-3.61671 -4.24436 0
+-1.74985 -7.70251 0
+1.42493 -12.9483 0
+6.31518 -20.2927 0
+13.1491 -29.6708 0
+21.7829 -40.3545 0
+31.5408 -50.7852 0
+41.1899 -58.7282 0
+49.1439 -61.8577 0
+53.8995 -58.6459 0
+54.5673 -49.1683 0
+51.2784 -35.4073 0
+45.5066 -21.0325 0
+40.7454 -10.7336 0
+38.9065 -3.34084 0
+40.5664 3.17841 0
+45.2944 10.7564 0
+51.2469 21.4446 0
+54.851 36.4065 0
+54.4983 50.7118 0
+49.9359 60.4178 0
+41.9767 63.4823 0
+32.1135 60.0054 0
+21.9922 51.7561 0
+12.9522 41.1829 0
+5.78047 30.4743 0
+0.691447 21.062 0
+-2.53466 13.5912 0
+-4.34969 8.1402 0
+-5.24814 4.47074 0
+-5.63956 2.20716 0
+-5.79723 0.947431 0
+-5.86793 0.331227 0
+-5.91185 0.0780162 0
+-5.94465 -0.00110387 0
+-5.96699 -0.0132274 0
+-5.97876 -0.00727118 0
+-5.98227 -0.000305085 0
+-5.98081 0.00380218 0
+-5.97723 0.00575347 0
+-5.97355 0.00719763 0
+-5.97073 0.00863082 0
+-5.96874 0.00947481 0
+-5.96717 0.00958095 0
+-5.96567 0.00937364 0
+-5.96377 0.008828 0
+-5.96077 0.00768313 0
+-5.95611 0.00637578 0
+-5.94961 0.00553047 0
+-5.94144 0.00485155 0
+-5.93231 0.00342175 0
+-5.9241 0.000371697 0
+-5.92018 -0.00588918 0
+-5.92505 -0.0187515 0
+-5.94337 -0.0431128 0
+-5.97797 -0.0844507 0
+-6.02598 -0.14809 0
+-6.07292 -0.237718 0
+-6.08562 -0.352667 0
+-6.00697 -0.484444 0
+-5.76014 -0.613447 0
+-5.27383 -0.714262 0
+-4.53309 -0.791635 0
+-3.63663 -0.962714 0
+-2.8152 -1.54748 0
+-2.36555 -3.05472 0
+-2.501 -5.94674 0
+-3.19328 -10.2114 0
+-4.12239 -15.0128 0
+-4.80333 -18.8059 0
+-4.83658 -20.065 0
+-4.12718 -18.2465 0
+-2.93197 -14.2449 0
+-1.71869 -9.83443 0
+-0.944853 -6.36505 0
+-0.137656 -3.59945 0
+0.0272651 -1.54817 0
+0.0272651 0.492196 0
+-1.63279 -0.446982 0
+-3.37942 -0.656734 0
+-6.81957 -0.753114 0
+-7.27417 -0.363916 0
+-7.67754 1.21523 0
+-7.66248 3.90716 0
+-6.93667 6.49684 0
+-5.51689 7.58727 0
+-3.77213 6.65247 0
+-2.2355 4.32114 0
+-1.31922 1.79937 0
+-1.12901 0.0428064 0
+-1.47727 -0.67996 0
+-2.04375 -0.666001 0
+-2.55432 -0.375852 0
+-2.87503 -0.119771 0
+-3.00212 0.00779297 0
+-2.99723 0.0342502 0
+-2.92864 0.0114146 0
+-2.8449 -0.0234291 0
+-2.77208 -0.0516647 0
+-2.71921 -0.0683578 0
+-2.6855 -0.0736793 0
+-2.66685 -0.0680656 0
+-2.65858 -0.0549488 0
+-2.65584 -0.0409236 0
+-2.65485 -0.0292721 0
+-2.6542 -0.0183764 0
+-2.65359 -0.00794403 0
+-2.65233 -0.000506048 0
+-2.64995 0.00396692 0
+-2.64714 0.00828539 0
+-2.64455 0.0126546 0
+-2.64194 0.0151243 0
+-2.6393 0.0164831 0
+-2.63747 0.0188908 0
+-2.63691 0.0213685 0
+-2.63718 0.0219493 0
+-2.6379 0.0218397 0
+-2.63858 0.0228756 0
+-2.63718 0.0240184 0
+-2.63032 0.0234298 0
+-2.615 0.0170207 0
+-2.58771 -0.0155127 0
+-2.53856 -0.131612 0
+-2.43823 -0.448815 0
+-2.21401 -1.17392 0
+-1.71548 -2.63267 0
+-0.683585 -5.27619 0
+1.25219 -9.63817 0
+4.52214 -16.2181 0
+9.49132 -25.2615 0
+16.2646 -36.4436 0
+24.4694 -48.5586 0
+33.1164 -59.4313 0
+40.6676 -66.2784 0
+45.4014 -66.5904 0
+46.0291 -59.2725 0
+42.2873 -45.4255 0
+35.0177 -28.1369 0
+25.6834 -11.6975 0
+19.5036 -4.55333 0
+17.3971 -1.23391 0
+19.3925 1.18335 0
+25.5846 4.56464 0
+35.1405 11.8891 0
+42.7624 28.785 0
+46.8586 46.6159 0
+46.4482 60.8285 0
+41.6979 68.2328 0
+33.8915 67.812 0
+24.841 60.8067 0
+16.2226 49.8013 0
+9.14523 37.5516 0
+4.03449 26.1728 0
+0.764783 16.8609 0
+-1.09375 9.99874 0
+-2.03717 5.41418 0
+-2.47354 2.64353 0
+-2.66832 1.14222 0
+-2.76141 0.42432 0
+-2.81219 0.128796 0
+-2.84097 0.0276901 0
+-2.85486 0.00066024 0
+-2.85874 -0.00338414 0
+-2.85724 -0.00179931 0
+-2.85366 0.000220249 0
+-2.84981 0.00191398 0
+-2.84672 0.00410574 0
+-2.84467 0.00658262 0
+-2.84325 0.00806783 0
+-2.842 0.00833173 0
+-2.84076 0.00812973 0
+-2.83928 0.0073527 0
+-2.83696 0.0053644 0
+-2.83322 0.00264411 0
+-2.82779 0.000104159 0
+-2.82038 -0.00255667 0
+-2.8108 -0.00616453 0
+-2.79967 -0.0107562 0
+-2.78895 -0.0166081 0
+-2.78188 -0.0258177 0
+-2.78298 -0.0420088 0
+-2.79756 -0.0698767 0
+-2.82952 -0.116122 0
+-2.87717 -0.190068 0
+-2.92647 -0.303371 0
+-2.94148 -0.469431 0
+-2.85579 -0.699137 0
+-2.57755 -0.992504 0
+-2.02388 -1.3453 0
+-1.18536 -1.80124 0
+-0.189432 -2.5434 0
+0.693472 -3.93763 0
+1.14378 -6.39705 0
+0.963215 -10.0309 0
+0.220688 -14.2702 0
+-0.744197 -17.8411 0
+-1.49306 -19.3161 0
+-1.73726 -18.0023 0
+-1.49779 -14.4844 0
+-1.07354 -10.2587 0
+-0.849392 -6.5892 0
+-0.236119 -3.38477 0
+-0.105743 -1.25602 0
+-0.105743 0.699493 0
+-1.36621 -0.365491 0
+-2.79341 -0.518858 0
+-5.55771 -0.551252 0
+-5.78482 -0.136803 0
+-5.83713 1.26755 0
+-5.42058 3.49061 0
+-4.39307 5.46934 0
+-2.92781 6.12201 0
+-1.45621 5.18086 0
+-0.424425 3.28936 0
+-0.0484984 1.42343 0
+-0.239237 0.233536 0
+-0.715614 -0.203591 0
+-1.19054 -0.191087 0
+-1.49918 -0.0672196 0
+-1.61796 -0.00100424 0
+-1.60629 -0.00388833 0
+-1.53663 -0.0354188 0
+-1.45756 -0.0676622 0
+-1.39169 -0.0893051 0
+-1.34577 -0.0976036 0
+-1.31795 -0.0961848 0
+-1.30283 -0.0888058 0
+-1.2956 -0.0753027 0
+-1.29298 -0.057578 0
+-1.29202 -0.04189 0
+-1.29064 -0.0306536 0
+-1.28877 -0.0202535 0
+-1.28697 -0.00975431 0
+-1.28477 -0.00270859 0
+-1.28173 0.000927784 0
+-1.27859 0.00514596 0
+-1.27593 0.00999195 0
+-1.27316 0.0123542 0
+-1.26997 0.013296 0
+-1.26712 0.016036 0
+-1.26496 0.0192143 0
+-1.263 0.0199965 0
+-1.26127 0.0201065 0
+-1.26023 0.0218405 0
+-1.25896 0.0227555 0
+-1.25486 0.0193397 0
+-1.24489 0.00706194 0
+-1.22438 -0.0360124 0
+-1.18158 -0.17441 0
+-1.0867 -0.543673 0
+-0.870914 -1.38969 0
+-0.393913 -3.10963 0
+0.586093 -6.25612 0
+2.41288 -11.4648 0
+5.4731 -19.278 0
+10.0571 -29.8451 0
+16.1482 -42.5342 0
+23.203 -55.6125 0
+30.0427 -66.2701 0
+35.0001 -71.2345 0
+36.406 -67.9952 0
+33.3617 -56.2271 0
+26.4953 -38.5584 0
+17.9719 -19.6129 0
+8.61751 -2.34291 0
+4.35473 -0.290373 0
+3.15807 -0.0370965 0
+4.30587 0.0356777 0
+8.58015 0.290497 0
+18.1011 2.36832 0
+26.9223 19.964 0
+34.1267 39.4119 0
+37.395 57.5605 0
+35.9841 69.6439 0
+30.788 73.0082 0
+23.577 68.0178 0
+16.162 57.2164 0
+9.82969 43.884 0
+5.15527 30.8472 0
+2.1183 19.8979 0
+0.362368 11.7547 0
+-0.552471 6.32902 0
+-0.99113 3.08219 0
+-1.19133 1.34243 0
+-1.2816 0.514588 0
+-1.32203 0.169237 0
+-1.33856 0.0442222 0
+-1.34302 0.00512002 0
+-1.3421 -0.00429674 0
+-1.33976 -0.00412796 0
+-1.33759 -0.0019492 0
+-1.33584 0.000168687 0
+-1.33464 0.00291125 0
+-1.33398 0.00592347 0
+-1.33341 0.00750144 0
+-1.33258 0.0075033 0
+-1.3316 0.0071487 0
+-1.33048 0.00624007 0
+-1.32879 0.00367792 0
+-1.3261 -4.08437e-05 0
+-1.32225 -0.00374287 0
+-1.31688 -0.00792439 0
+-1.3094 -0.013647 0
+-1.29966 -0.0204978 0
+-1.28834 -0.0279265 0
+-1.2769 -0.0372492 0
+-1.26798 -0.0509292 0
+-1.26577 -0.0720886 0
+-1.27526 -0.106627 0
+-1.30027 -0.165059 0
+-1.34003 -0.263611 0
+-1.38191 -0.427549 0
+-1.38886 -0.692188 0
+-1.28901 -1.09235 0
+-0.985101 -1.64921 0
+-0.399502 -2.38684 0
+0.452378 -3.39528 0
+1.40445 -4.8897 0
+2.1606 -7.1532 0
+2.42117 -10.2914 0
+2.05875 -13.9078 0
+1.2208 -17.0031 0
+0.263112 -18.3584 0
+-0.460254 -17.2789 0
+-0.807222 -14.1374 0
+-0.907363 -10.1585 0
+-1.03203 -6.46453 0
+-0.443502 -3.05185 0
+-0.25688 -0.968476 0
+-0.25688 0.864479 0
+-1.1501 -0.306176 0
+-2.3273 -0.425137 0
+-4.57917 -0.431279 0
+-4.66525 -0.0507241 0
+-4.53464 1.13694 0
+-3.97707 2.93305 0
+-2.96053 4.45279 0
+-1.72168 4.88316 0
+-0.650798 4.10997 0
+-0.0555272 2.69408 0
+0.00837592 1.35952 0
+-0.278267 0.52017 0
+-0.652003 0.170136 0
+-0.922001 0.0789014 0
+-1.03025 0.0410194 0
+-1.01722 -0.0140415 0
+-0.952237 -0.0688877 0
+-0.88427 -0.103398 0
+-0.832047 -0.119897 0
+-0.797363 -0.124 0
+-0.777318 -0.11766 0
+-0.76756 -0.105953 0
+-0.763286 -0.09309 0
+-0.761398 -0.0771997 0
+-0.760604 -0.0583812 0
+-0.759705 -0.0427963 0
+-0.757808 -0.032558 0
+-0.755431 -0.0226365 0
+-0.753362 -0.011829 0
+-0.751192 -0.0048833 0
+-0.748442 -0.00182557 0
+-0.745759 0.00245954 0
+-0.743597 0.0078278 0
+-0.741236 0.00999204 0
+-0.738214 0.0102739 0
+-0.735108 0.0129311 0
+-0.732108 0.0162158 0
+-0.728582 0.016473 0
+-0.724595 0.0161235 0
+-0.721049 0.0182985 0
+-0.717932 0.0196447 0
+-0.713901 0.0153144 0
+-0.707033 0.000201399 0
+-0.69323 -0.0498066 0
+-0.661283 -0.206346 0
+-0.584476 -0.620465 0
+-0.404443 -1.56969 0
+-0.0051778 -3.50886 0
+0.811572 -7.07279 0
+2.32491 -12.978 0
+4.83942 -21.7923 0
+8.55656 -33.5619 0
+13.3827 -47.3596 0
+18.7364 -60.9654 0
+23.4732 -71.0057 0
+26.0569 -73.817 0
+25.0429 -66.98 0
+19.7934 -50.9765 0
+11.191 -29.9554 0
+2.2838 -10.7054 0
+0.285182 -0.344278 0
+0.0235923 -0.0287801 0
+-0.011052 -0.00244999 0
+0.0222682 0.00235949 0
+0.284138 0.0286294 0
+2.30621 0.346251 0
+11.4223 10.8481 0
+20.3187 30.5158 0
+25.7824 52.097 0
+26.8165 68.6101 0
+24.0535 75.7713 0
+19.0304 73.041 0
+13.4065 62.8403 0
+8.41057 48.8799 0
+4.63921 34.6186 0
+2.14838 22.3887 0
+0.684052 13.219 0
+-0.093578 7.10666 0
+-0.472026 3.46065 0
+-0.642205 1.51262 0
+-0.71212 0.584508 0
+-0.737045 0.194168 0
+-0.74355 0.0507321 0
+-0.743801 0.00537607 0
+-0.743146 -0.00494775 0
+-0.743416 -0.00385295 0
+-0.744411 -0.000950021 0
+-0.745409 0.00117105 0
+-0.746222 0.00372829 0
+-0.746888 0.00659321 0
+-0.747145 0.00776185 0
+-0.746826 0.00718773 0
+-0.746209 0.00653435 0
+-0.74547 0.00550478 0
+-0.744327 0.00253693 0
+-0.742514 -0.00185095 0
+-0.740023 -0.00623137 0
+-0.73661 -0.0113355 0
+-0.731688 -0.0185675 0
+-0.72489 -0.0272942 0
+-0.716269 -0.0365459 0
+-0.706104 -0.0474125 0
+-0.695305 -0.061727 0
+-0.686076 -0.0813164 0
+-0.681665 -0.111036 0
+-0.685597 -0.161127 0
+-0.701177 -0.248031 0
+-0.728962 -0.399763 0
+-0.757908 -0.663241 0
+-0.750872 -1.09939 0
+-0.636173 -1.76391 0
+-0.32511 -2.6979 0
+0.232978 -3.95337 0
+0.978343 -5.63506 0
+1.70806 -7.88292 0
+2.13863 -10.722 0
+2.05615 -13.8253 0
+1.46001 -16.407 0
+0.582096 -17.4805 0
+-0.253469 -16.4434 0
+-0.834226 -13.5567 0
+-1.17088 -9.82188 0
+-1.43139 -6.20402 0
+-0.716856 -2.73468 0
+-0.40899 -0.743625 0
+-0.40899 0.975342 0
+-0.976373 -0.262613 0
+-1.96178 -0.360671 0
+-3.83353 -0.359594 0
+-3.8513 -0.0329566 0
+-3.66641 0.95205 0
+-3.13986 2.40649 0
+-2.29694 3.60988 0
+-1.36276 3.94897 0
+-0.634721 3.38193 0
+-0.294528 2.35388 0
+-0.313895 1.37888 0
+-0.514809 0.721074 0
+-0.709366 0.364684 0
+-0.800731 0.170255 0
+-0.792311 0.0325887 0
+-0.736214 -0.0701503 0
+-0.679382 -0.125732 0
+-0.641056 -0.141736 0
+-0.619735 -0.141229 0
+-0.608891 -0.134856 0
+-0.604507 -0.122055 0
+-0.603951 -0.10652 0
+-0.60461 -0.0924418 0
+-0.60504 -0.0767795 0
+-0.605085 -0.0583448 0
+-0.604523 -0.0433667 0
+-0.603087 -0.0340014 0
+-0.60132 -0.0244105 0
+-0.59984 -0.0133149 0
+-0.598337 -0.00639088 0
+-0.596435 -0.00373185 0
+-0.59458 0.000601257 0
+-0.593061 0.0063066 0
+-0.591273 0.0082022 0
+-0.588786 0.00778724 0
+-0.585935 0.0100797 0
+-0.582733 0.0130156 0
+-0.57856 0.0123022 0
+-0.57335 0.0109171 0
+-0.567822 0.0127744 0
+-0.562287 0.0141153 0
+-0.556333 0.00936682 0
+-0.549181 -0.00694398 0
+-0.538167 -0.0608119 0
+-0.515077 -0.229425 0
+-0.460868 -0.674658 0
+-0.335895 -1.69464 0
+-0.0634747 -3.78123 0
+0.486146 -7.62232 0
+1.49446 -13.9862 0
+3.15575 -23.4533 0
+5.58606 -35.9917 0
+8.68727 -50.4601 0
+12.014 -64.2911 0
+14.733 -73.7235 0
+15.7739 -74.8566 0
+14.23 -65.4349 0
+9.97818 -46.7238 0
+4.34914 -24.3258 0
+0.299116 -6.65518 0
+0.0274843 -0.0726435 0
+0.00154683 -0.0028425 0
+-0.000706872 -0.0001962 0
+0.00147621 0.00017649 0
+0.027359 0.00274676 0
+0.302138 0.0714741 0
+4.45345 6.69687 0
+10.2664 24.703 0
+14.6687 47.695 0
+16.2394 67.0397 0
+15.0925 76.9184 0
+12.197 75.9365 0
+8.70557 66.3318 0
+5.50417 52.0814 0
+3.0441 37.0786 0
+1.39709 24.0357 0
+0.414871 14.2012 0
+-0.115504 7.63704 0
+-0.377499 3.72265 0
+-0.495329 1.63045 0
+-0.542128 0.631313 0
+-0.557723 0.209768 0
+-0.562217 0.0552312 0
+-0.564444 0.0076083 0
+-0.567394 -0.00199332 0
+-0.571303 6.09798e-05 0
+-0.575272 0.00302351 0
+-0.57849 0.00439352 0
+-0.58086 0.00610164 0
+-0.582569 0.00830679 0
+-0.583582 0.00877814 0
+-0.583895 0.00750415 0
+-0.583813 0.00645555 0
+-0.583554 0.00524855 0
+-0.582979 0.00196556 0
+-0.581964 -0.00286411 0
+-0.580567 -0.00762581 0
+-0.578663 -0.0132371 0
+-0.575846 -0.0213822 0
+-0.571819 -0.0313197 0
+-0.566456 -0.0419073 0
+-0.559563 -0.0543035 0
+-0.551173 -0.0701161 0
+-0.542121 -0.090367 0
+-0.533888 -0.119268 0
+-0.528091 -0.166923 0
+-0.526987 -0.249133 0
+-0.534177 -0.392572 0
+-0.551585 -0.645833 0
+-0.569417 -1.08155 0
+-0.552857 -1.78047 0
+-0.440148 -2.81061 0
+-0.170335 -4.22318 0
+0.259235 -6.06463 0
+0.742037 -8.36572 0
+1.07493 -11.0549 0
+1.0575 -13.8079 0
+0.624709 -15.9742 0
+-0.0919963 -16.7638 0
+-0.840005 -15.6954 0
+-1.40999 -12.9867 0
+-1.75829 -9.47357 0
+-1.98648 -5.97583 0
+-1.03053 -2.52494 0
+-0.55838 -0.613848 0
+-0.55838 1.02986 0
+-0.836272 -0.229869 0
+-1.67387 -0.314816 0
+-3.26069 -0.313874 0
+-3.25529 -0.0383639 0
+-3.08754 0.784303 0
+-2.66923 1.98818 0
+-2.04095 2.9816 0
+-1.37556 3.28358 0
+-0.870816 2.87717 0
+-0.624141 2.1072 0
+-0.592107 1.34684 0
+-0.652315 0.781272 0
+-0.698625 0.410984 0
+-0.69245 0.164069 0
+-0.651025 -0.00884759 0
+-0.606988 -0.1142 0
+-0.579206 -0.153526 0
+-0.568313 -0.152642 0
+-0.566841 -0.142713 0
+-0.568844 -0.132865 0
+-0.572106 -0.118805 0
+-0.575816 -0.102821 0
+-0.579069 -0.0891998 0
+-0.581321 -0.0745371 0
+-0.582655 -0.0570201 0
+-0.583235 -0.0427953 0
+-0.583162 -0.0340813 0
+-0.582747 -0.0248328 0
+-0.58228 -0.0137875 0
+-0.581696 -0.00698085 0
+-0.580877 -0.00455506 0
+-0.579983 -0.000296305 0
+-0.579083 0.0054046 0
+-0.577883 0.00700064 0
+-0.576126 0.00602901 0
+-0.57382 0.00777422 0
+-0.57084 0.010037 0
+-0.566798 0.0082617 0
+-0.56151 0.00563244 0
+-0.55515 0.0064187 0
+-0.547855 0.00682603 0
+-0.539565 0.00108247 0
+-0.529967 -0.016535 0
+-0.517692 -0.0730778 0
+-0.498959 -0.248148 0
+-0.466224 -0.707378 0
+-0.405727 -1.75511 0
+-0.292329 -3.89458 0
+-0.0832905 -7.83126 0
+0.282949 -14.3522 0
+0.874408 -24.0444 0
+1.73257 -36.8494 0
+2.82085 -51.5477 0
+3.97401 -65.4433 0
+4.88514 -74.6334 0
+5.16945 -75.1396 0
+4.52663 -64.7908 0
+2.9865 -45.1827 0
+1.14177 -22.4805 0
+0.0383724 -5.5516 0
+0.00261618 -0.0368849 0
+0.000151269 -0.000377497 0
+-5.94269e-06 -3.89818e-05 0
+0.00014213 2.84255e-05 0
+0.0025849 0.000304067 0
+0.0388161 0.0352444 0
+1.17182 5.56395 0
+3.07792 22.7972 0
+4.67211 46.101 0
+5.32745 66.3846 0
+5.00921 77.2368 0
+4.03906 76.9068 0
+2.83045 67.5405 0
+1.70837 53.2035 0
+0.839826 37.9472 0
+0.25229 24.6233 0
+-0.106333 14.5599 0
+-0.309807 7.84052 0
+-0.41993 3.83278 0
+-0.477579 1.68811 0
+-0.507073 0.660813 0
+-0.522648 0.225348 0
+-0.532376 0.0649644 0
+-0.540202 0.0154398 0
+-0.547493 0.0053021 0
+-0.55428 0.0068525 0
+-0.560121 0.00886928 0
+-0.564711 0.008988 0
+-0.568125 0.00952004 0
+-0.570599 0.0107848 0
+-0.572276 0.0104588 0
+-0.573285 0.00851661 0
+-0.573853 0.00702689 0
+-0.57416 0.00555826 0
+-0.574225 0.00203378 0
+-0.574043 -0.00304351 0
+-0.573649 -0.00801756 0
+-0.572978 -0.013906 0
+-0.571836 -0.0225219 0
+-0.570053 -0.0331012 0
+-0.567472 -0.0444861 0
+-0.563821 -0.0579529 0
+-0.55887 -0.0750656 0
+-0.552795 -0.0964411 0
+-0.546136 -0.125925 0
+-0.539406 -0.173652 0
+-0.533312 -0.255227 0
+-0.530116 -0.395768 0
+-0.53446 -0.641488 0
+-0.550099 -1.06591 0
+-0.570913 -1.75965 0
+-0.57247 -2.80905 0
+-0.518556 -4.2771 0
+-0.39207 -6.19111 0
+-0.235413 -8.52238 0
+-0.160668 -11.1296 0
+-0.298285 -13.6703 0
+-0.704219 -15.5682 0
+-1.29808 -16.17 0
+-1.89745 -15.096 0
+-2.33495 -12.5492 0
+-2.5633 -9.24523 0
+-2.6566 -5.88253 0
+-1.3772 -2.47399 0
+-0.710717 -0.594613 0
+-0.710717 1.02881 0
+-0.722131 -0.204625 0
+-1.44353 -0.281295 0
+-2.80978 -0.282875 0
+-2.80041 -0.0477394 0
+-2.67256 0.656456 0
+-2.37119 1.6868 0
+-1.9304 2.5408 0
+-1.46211 2.81528 0
+-1.08198 2.49704 0
+-0.841977 1.86718 0
+-0.720455 1.22531 0
+-0.661848 0.722655 0
+-0.621952 0.371077 0
+-0.585819 0.127924 0
+-0.557674 -0.0370035 0
+-0.54318 -0.128707 0
+-0.54122 -0.155498 0
+-0.546528 -0.147347 0
+-0.554513 -0.13474 0
+-0.562727 -0.124664 0
+-0.570134 -0.11141 0
+-0.576494 -0.096472 0
+-0.581872 -0.0838321 0
+-0.586165 -0.0702545 0
+-0.589264 -0.05393 0
+-0.591459 -0.0406092 0
+-0.593139 -0.0324085 0
+-0.594334 -0.0236451 0
+-0.594991 -0.0131372 0
+-0.595364 -0.00661231 0
+-0.595676 -0.00424809 0
+-0.595767 -0.000208887 0
+-0.59547 0.00510497 0
+-0.594881 0.00640981 0
+-0.593972 0.00511962 0
+-0.592407 0.00620858 0
+-0.589947 0.00757795 0
+-0.58657 0.00488712 0
+-0.582058 0.0011236 0
+-0.575974 0.000338752 0
+-0.568093 -0.00104979 0
+-0.558332 -0.00867336 0
+-0.546255 -0.0286049 0
+-0.531362 -0.0879621 0
+-0.514731 -0.264769 0
+-0.502138 -0.719956 0
+-0.509149 -1.74808 0
+-0.567351 -3.83633 0
+-0.727733 -7.67079 0
+-1.05568 -14.0241 0
+-1.61338 -23.4864 0
+-2.42805 -36.0342 0
+-3.44918 -50.5258 0
+-4.50827 -64.3832 0
+-5.30835 -73.8321 0
+-5.47952 -74.9671 0
+-4.73095 -65.5381 0
+-3.09641 -46.8163 0
+-1.17797 -24.3984 0
+-0.0392357 -6.69015 0
+-0.00264815 -0.0734699 0
+-0.000150847 -0.00287471 0
+6.59556e-06 -0.000196417 0
+-0.00014148 0.00017651 0
+-0.00261501 0.00277768 0
+-0.0396569 0.0722879 0
+-1.20717 6.73156 0
+-3.18514 24.7753 0
+-4.87111 47.7873 0
+-5.62933 67.1431 0
+-5.42204 77.0298 0
+-4.56229 76.0472 0
+-3.44881 66.4271 0
+-2.3961 52.1508 0
+-1.57339 37.1245 0
+-1.02132 24.0712 0
+-0.701864 14.2404 0
+-0.547299 7.68596 0
+-0.492361 3.77785 0
+-0.488159 1.68391 0
+-0.503992 0.676651 0
+-0.5238 0.245162 0
+-0.541248 0.0824177 0
+-0.555093 0.0292899 0
+-0.565847 0.0160615 0
+-0.574232 0.0152423 0
+-0.580837 0.0154784 0
+-0.586052 0.0142079 0
+-0.590066 0.0135377 0
+-0.593041 0.0137641 0
+-0.595244 0.0126661 0
+-0.596909 0.0101849 0
+-0.598136 0.00825748 0
+-0.599032 0.00645664 0
+-0.599774 0.00277954 0
+-0.600469 -0.00234634 0
+-0.601079 -0.00740521 0
+-0.601564 -0.0134185 0
+-0.601929 -0.0221543 0
+-0.602106 -0.0329222 0
+-0.601913 -0.0446779 0
+-0.601127 -0.0587367 0
+-0.599527 -0.0766639 0
+-0.596969 -0.0989979 0
+-0.593564 -0.129329 0
+-0.589641 -0.177575 0
+-0.585534 -0.259332 0
+-0.582239 -0.399061 0
+-0.583563 -0.640164 0
+-0.597878 -1.0516 0
+-0.635944 -1.72159 0
+-0.704294 -2.7407 0
+-0.800669 -4.18072 0
+-0.920816 -6.07097 0
+-1.07653 -8.36667 0
+-1.307 -10.8992 0
+-1.6602 -13.3171 0
+-2.1444 -15.084 0
+-2.68868 -15.6257 0
+-3.1603 -14.6244 0
+-3.4417 -12.2678 0
+-3.50698 -9.17994 0
+-3.4272 -5.96231 0
+-1.76511 -2.60162 0
+-0.878282 -0.692828 0
+-0.878282 0.971254 0
+-0.627913 -0.184678 0
+-1.25577 -0.256739 0
+-2.44516 -0.26273 0
+-2.43382 -0.0590804 0
+-2.33825 0.56088 0
+-2.12568 1.47423 0
+-1.82039 2.23551 0
+-1.48568 2.48057 0
+-1.17933 2.19068 0
+-0.929087 1.61693 0
+-0.739359 1.03557 0
+-0.606756 0.590042 0
+-0.526456 0.290767 0
+-0.490501 0.091958 0
+-0.486069 -0.0414468 0
+-0.497779 -0.117009 0
+-0.513244 -0.140045 0
+-0.527183 -0.13342 0
+-0.539753 -0.122183 0
+-0.551593 -0.112836 0
+-0.561977 -0.101037 0
+-0.570552 -0.0879087 0
+-0.577909 -0.0764854 0
+-0.584198 -0.0639751 0
+-0.589084 -0.0490532 0
+-0.592912 -0.0367902 0
+-0.596296 -0.0290317 0
+-0.599033 -0.0209159 0
+-0.600785 -0.011391 0
+-0.60209 -0.00531298 0
+-0.603464 -0.00287889 0
+-0.604495 0.000818884 0
+-0.604827 0.00543454 0
+-0.604899 0.00647939 0
+-0.604894 0.00511372 0
+-0.604202 0.00551651 0
+-0.602514 0.00589013 0
+-0.600148 0.00252321 0
+-0.596906 -0.00211574 0
+-0.591891 -0.00467251 0
+-0.584596 -0.00834014 0
+-0.574871 -0.0183929 0
+-0.562093 -0.0413752 0
+-0.546573 -0.103474 0
+-0.534115 -0.277217 0
+-0.543373 -0.710684 0
+-0.617687 -1.67374 0
+-0.841227 -3.61274 0
+-1.35088 -7.16105 0
+-2.32875 -13.0461 0
+-3.95989 -21.855 0
+-6.34532 -33.6483 0
+-9.37609 -47.4943 0
+-12.6088 -61.1495 0
+-15.2232 -71.2165 0
+-16.1615 -74.0274 0
+-14.518 -67.1804 0
+-10.1625 -51.1708 0
+-4.42858 -30.1318 0
+-0.30466 -10.8139 0
+-0.0280424 -0.350084 0
+-0.00166186 -0.029255 0
+0.000617325 -0.0024755 0
+-0.00158938 0.00238331 0
+-0.0279069 0.0290954 0
+-0.307626 0.35201 0
+-4.53219 10.9562 0
+-10.4489 30.6923 0
+-14.9532 52.2919 0
+-16.6212 68.8114 0
+-15.5747 75.9835 0
+-12.7827 73.2553 0
+-9.38564 63.0301 0
+-6.25622 49.0214 0
+-3.84303 34.7113 0
+-2.22777 22.456 0
+-1.27689 13.2895 0
+-0.786747 7.19582 0
+-0.573577 3.56468 0
+-0.506292 1.61663 0
+-0.504387 0.674752 0
+-0.524339 0.265119 0
+-0.546398 0.104482 0
+-0.564115 0.0470118 0
+-0.57685 0.0288015 0
+-0.585771 0.0241689 0
+-0.592348 0.0220591 0
+-0.597585 0.0194502 0
+-0.601762 0.0177187 0
+-0.604952 0.0169579 0
+-0.607493 0.0152105 0
+-0.609679 0.012375 0
+-0.611485 0.0100667 0
+-0.612936 0.00791129 0
+-0.614339 0.0041852 0
+-0.615888 -0.000794984 0
+-0.617486 -0.00580409 0
+-0.619121 -0.0117818 0
+-0.62097 -0.020303 0
+-0.623048 -0.030842 0
+-0.625142 -0.0425815 0
+-0.627097 -0.0567797 0
+-0.628763 -0.0749968 0
+-0.6298 -0.0979593 0
+-0.63003 -0.129098 0
+-0.629857 -0.177746 0
+-0.630012 -0.259177 0
+-0.631651 -0.397421 0
+-0.638771 -0.633042 0
+-0.662517 -1.02785 0
+-0.723657 -1.66044 0
+-0.849222 -2.61513 0
+-1.06338 -3.96657 0
+-1.37851 -5.75583 0
+-1.79375 -7.95144 0
+-2.29958 -10.3933 0
+-2.87718 -12.7395 0
+-3.48425 -14.477 0
+-4.0407 -15.0692 0
+-4.44236 -14.2227 0
+-4.61028 -12.0999 0
+-4.54023 -9.24999 0
+-4.30432 -6.19822 0
+-2.2118 -2.90309 0
+-1.07691 -0.911254 0
+-1.07691 0.852411 0
+-0.549002 -0.168328 0
+-1.10019 -0.23896 0
+-2.14444 -0.252602 0
+-2.12568 -0.0778457 0
+-2.04193 0.477133 0
+-1.87711 1.30941 0
+-1.65327 2.01167 0
+-1.407 2.23429 0
+-1.16098 1.94465 0
+-0.924674 1.38062 0
+-0.712378 0.823267 0
+-0.547497 0.425151 0
+-0.447897 0.191157 0
+-0.412187 0.0562368 0
+-0.420692 -0.032953 0
+-0.447601 -0.0901115 0
+-0.474157 -0.113502 0
+-0.49442 -0.113168 0
+-0.510755 -0.10586 0
+-0.525513 -0.0980901 0
+-0.538299 -0.0882622 0
+-0.548777 -0.0774422 0
+-0.557812 -0.0674602 0
+-0.565691 -0.0561057 0
+-0.571996 -0.0427579 0
+-0.577146 -0.0316487 0
+-0.581892 -0.0242932 0
+-0.585888 -0.0169273 0
+-0.588623 -0.00866192 0
+-0.590779 -0.00316271 0
+-0.593043 -0.00061912 0
+-0.594886 0.00265825 0
+-0.595864 0.00640966 0
+-0.596617 0.00723022 0
+-0.597469 0.0059646 0
+-0.597691 0.00573757 0
+-0.596954 0.00515428 0
+-0.595784 0.00135392 0
+-0.59402 -0.00387658 0
+-0.590571 -0.00811867 0
+-0.584851 -0.0140556 0
+-0.576802 -0.0264363 0
+-0.565988 -0.0521826 0
+-0.553885 -0.115571 0
+-0.550567 -0.280525 0
+-0.585213 -0.676024 0
+-0.722847 -1.53608 0
+-1.08762 -3.24793 0
+-1.8816 -6.36698 0
+-3.3782 -11.5493 0
+-5.86731 -19.3656 0
+-9.53519 -29.98 0
+-14.2837 -42.7452 0
+-19.5423 -55.89 0
+-24.1847 -66.5729 0
+-26.6838 -71.5272 0
+-25.5833 -68.2796 0
+-20.219 -56.534 0
+-11.4529 -38.8972 0
+-2.34918 -19.9173 0
+-0.299554 -2.39969 0
+-0.0314972 -0.297308 0
+0.00381458 -0.0377845 0
+-0.0301378 0.0363383 0
+-0.298406 0.297367 0
+-2.37129 2.4249 0
+-11.6836 20.2687 0
+-20.7441 39.753 0
+-26.3224 57.8706 0
+-27.4417 69.9309 0
+-24.7613 73.3033 0
+-19.8304 68.3245 0
+-14.3006 57.5003 0
+-9.38264 44.1035 0
+-5.66179 30.9905 0
+-3.19775 19.9919 0
+-1.75116 11.843 0
+-0.996694 6.44136 0
+-0.652711 3.2207 0
+-0.524748 1.48868 0
+-0.49685 0.646859 0
+-0.507135 0.275409 0
+-0.526546 0.123898 0
+-0.544005 0.0644755 0
+-0.556762 0.0415637 0
+-0.565337 0.0327483 0
+-0.57134 0.0280671 0
+-0.576093 0.0242078 0
+-0.579981 0.021611 0
+-0.58306 0.02004 0
+-0.585696 0.017851 0
+-0.588194 0.0148765 0
+-0.590428 0.0123036 0
+-0.592356 0.00984294 0
+-0.594345 0.00617683 0
+-0.596646 0.00150871 0
+-0.599152 -0.00329481 0
+-0.601899 -0.0090328 0
+-0.605199 -0.0170005 0
+-0.609142 -0.026897 0
+-0.613503 -0.0382185 0
+-0.618151 -0.0521308 0
+-0.622958 -0.0701879 0
+-0.627441 -0.0934745 0
+-0.631172 -0.125366 0
+-0.634571 -0.174346 0
+-0.639028 -0.254718 0
+-0.647289 -0.38916 0
+-0.666223 -0.614107 0
+-0.711781 -0.982293 0
+-0.812409 -1.55982 0
+-1.00612 -2.42143 0
+-1.32908 -3.6436 0
+-1.79995 -5.28496 0
+-2.40907 -7.34232 0
+-3.11925 -9.68313 0
+-3.87365 -11.9851 0
+-4.59994 -13.7507 0
+-5.21076 -14.4584 0
+-5.61605 -13.8174 0
+-5.75564 -11.9603 0
+-5.6308 -9.37483 0
+-5.30175 -6.52727 0
+-2.73533 -3.35004 0
+-1.3222 -1.24718 0
+-1.3222 0.66473 0
+-0.481702 -0.153981 0
+-0.969199 -0.225681 0
+-1.89334 -0.251282 0
+-1.86196 -0.109223 0
+-1.76981 0.384975 0
+-1.61332 1.15291 0
+-1.42227 1.82062 0
+-1.2295 2.04151 0
+-1.04322 1.75836 0
+-0.855495 1.19288 0
+-0.669537 0.637301 0
+-0.508835 0.264439 0
+-0.4003 0.0826121 0
+-0.353777 0.00970249 0
+-0.356787 -0.0299529 0
+-0.3847 -0.0622105 0
+-0.41603 -0.0821833 0
+-0.44161 -0.0875988 0
+-0.462118 -0.0853632 0
+-0.479781 -0.0804381 0
+-0.494679 -0.073375 0
+-0.506819 -0.0653133 0
+-0.517175 -0.0571134 0
+-0.526089 -0.0472011 0
+-0.533249 -0.0356068 0
+-0.539195 -0.0257114 0
+-0.544735 -0.0187598 0
+-0.549507 -0.012162 0
+-0.552959 -0.005216 0
+-0.555759 -0.000368353 0
+-0.558613 0.00223037 0
+-0.561016 0.00505713 0
+-0.562547 0.00793846 0
+-0.563886 0.00856644 0
+-0.565404 0.00748195 0
+-0.566421 0.00675351 0
+-0.566652 0.00538534 0
+-0.566668 0.00137208 0
+-0.566371 -0.00417143 0
+-0.564743 -0.00974428 0
+-0.561322 -0.0174722 0
+-0.556305 -0.0314488 0
+-0.549871 -0.0586106 0
+-0.545014 -0.12042 0
+-0.555223 -0.270306 0
+-0.616561 -0.614673 0
+-0.80687 -1.34575 0
+-1.27276 -2.782 0
+-2.25334 -5.38634 0
+-4.07835 -9.7242 0
+-7.11481 -16.3289 0
+-11.6401 -25.4543 0
+-17.6421 -36.7427 0
+-24.5981 -48.9331 0
+-31.353 -59.817 0
+-36.2457 -66.6334 0
+-37.5888 -66.9353 0
+-34.4527 -59.669 0
+-27.4532 -45.8959 0
+-18.7829 -28.587 0
+-9.24964 -11.9326 0
+-4.90453 -4.64219 0
+-3.68655 -1.25558 0
+-4.85414 1.2041 0
+-9.20966 4.65307 0
+-18.9096 12.125 0
+-27.8794 29.2389 0
+-35.2192 47.0933 0
+-38.5808 61.2325 0
+-37.2326 68.583 0
+-32.099 68.1699 0
+-24.9697 61.1954 0
+-17.6506 50.1812 0
+-11.4061 37.859 0
+-6.79055 26.3749 0
+-3.77839 16.9798 0
+-2.02539 10.09 0
+-1.11071 5.52668 0
+-0.683366 2.79337 0
+-0.508525 1.31384 0
+-0.451601 0.589941 0
+-0.443633 0.267446 0
+-0.452428 0.132698 0
+-0.464382 0.0764349 0
+-0.474434 0.0516204 0
+-0.481469 0.039787 0
+-0.486312 0.0329151 0
+-0.490093 0.0279927 0
+-0.493229 0.0247511 0
+-0.49582 0.0226352 0
+-0.498237 0.0202708 0
+-0.500746 0.0173888 0
+-0.503169 0.0147301 0
+-0.50542 0.0120969 0
+-0.507846 0.00860648 0
+-0.510716 0.00438083 0
+-0.513961 -4.73976e-05 0
+-0.517677 -0.005314 0
+-0.522251 -0.0124246 0
+-0.527816 -0.0213299 0
+-0.534138 -0.0318942 0
+-0.541031 -0.0452364 0
+-0.548286 -0.0629311 0
+-0.55531 -0.0864487 0
+-0.561584 -0.119091 0
+-0.567741 -0.168188 0
+-0.576359 -0.246099 0
+-0.593212 -0.372306 0
+-0.630399 -0.576919 0
+-0.71032 -0.902371 0
+-0.866751 -1.40338 0
+-1.13944 -2.14874 0
+-1.56175 -3.22128 0
+-2.14595 -4.70076 0
+-2.8742 -6.61406 0
+-3.70116 -8.85618 0
+-4.56402 -11.1222 0
+-5.38888 -12.9258 0
+-6.09139 -13.7559 0
+-6.58549 -13.3233 0
+-6.80859 -11.7372 0
+-6.74567 -9.43776 0
+-6.42454 -6.8484 0
+-3.34413 -3.8852 0
+-1.62544 -1.68514 0
+-1.62544 0.402387 0
+-0.4228 -0.140045 0
+-0.856431 -0.214024 0
+-1.68067 -0.255382 0
+-1.63652 -0.153384 0
+-1.52422 0.272672 0
+-1.34703 0.97572 0
+-1.14783 1.62141 0
+-0.973435 1.8671 0
+-0.836824 1.62175 0
+-0.718209 1.07426 0
+-0.596783 0.515867 0
+-0.474639 0.142287 0
+-0.372884 -0.0191517 0
+-0.311667 -0.0515238 0
+-0.294774 -0.0468568 0
+-0.309078 -0.0479169 0
+-0.335902 -0.0553696 0
+-0.362872 -0.0606393 0
+-0.386435 -0.0618113 0
+-0.406685 -0.0601984 0
+-0.423541 -0.0565292 0
+-0.437226 -0.0516373 0
+-0.448634 -0.0457155 0
+-0.458103 -0.037741 0
+-0.465552 -0.0281656 0
+-0.471665 -0.0196061 0
+-0.477279 -0.0131526 0
+-0.482151 -0.00729592 0
+-0.485823 -0.00155047 0
+-0.488842 0.00264606 0
+-0.491815 0.00519879 0
+-0.494354 0.00759255 0
+-0.49614 0.00972236 0
+-0.497765 0.0101891 0
+-0.499577 0.00929225 0
+-0.501056 0.00823233 0
+-0.502013 0.0063419 0
+-0.502966 0.00232649 0
+-0.503897 -0.00323818 0
+-0.504057 -0.00958161 0
+-0.503216 -0.0183097 0
+-0.501859 -0.0328018 0
+-0.500941 -0.0595226 0
+-0.504912 -0.116442 0
+-0.529332 -0.245878 0
+-0.613003 -0.530989 0
+-0.837241 -1.12149 0
+-1.35326 -2.26595 0
+-2.40849 -4.33105 0
+-4.35181 -7.78077 0
+-7.59249 -13.0881 0
+-12.4886 -20.5578 0
+-19.1592 -30.0716 0
+-27.2604 -40.8312 0
+-35.829 -51.2475 0
+-43.3336 -59.1278 0
+-48.0359 -62.2318 0
+-48.6219 -59.0818 0
+-44.8141 -49.7026 0
+-37.4531 -35.9471 0
+-27.9764 -21.4087 0
+-21.694 -10.924 0
+-19.5523 -3.39673 0
+-21.5792 3.23152 0
+-27.8718 10.9461 0
+-37.5706 21.8244 0
+-45.2869 36.9557 0
+-49.453 51.2598 0
+-49.0872 60.8671 0
+-44.3691 63.8652 0
+-36.6074 60.4084 0
+-27.6314 52.2195 0
+-19.1124 41.6622 0
+-12.1346 30.8813 0
+-7.09571 21.336 0
+-3.85568 13.7398 0
+-1.99079 8.22508 0
+-1.02517 4.56107 0
+-0.571971 2.34018 0
+-0.377337 1.11921 0
+-0.300797 0.513406 0
+-0.274579 0.241232 0
+-0.268987 0.127111 0
+-0.271293 0.0787455 0
+-0.275607 0.0559386 0
+-0.279345 0.0435298 0
+-0.282083 0.0356565 0
+-0.284261 0.0301752 0
+-0.286118 0.0266123 0
+-0.28776 0.0242807 0
+-0.289517 0.0220314 0
+-0.291605 0.0194793 0
+-0.293842 0.01697 0
+-0.296119 0.0143773 0
+-0.298707 0.0111977 0
+-0.301841 0.00751681 0
+-0.305503 0.00361747 0
+-0.309828 -0.000986764 0
+-0.31518 -0.00707086 0
+-0.321667 -0.0148407 0
+-0.329015 -0.0245445 0
+-0.336918 -0.0373318 0
+-0.34505 -0.0547973 0
+-0.352878 -0.0786195 0
+-0.36025 -0.111717 0
+-0.368737 -0.159699 0
+-0.383082 -0.231753 0
+-0.413113 -0.342274 0
+-0.476423 -0.513608 0
+-0.599928 -0.778865 0
+-0.817196 -1.18611 0
+-1.16051 -1.80542 0
+-1.65039 -2.7314 0
+-2.28787 -4.06328 0
+-3.05405 -5.84789 0
+-3.91651 -7.99371 0
+-4.83454 -10.2042 0
+-5.75418 -12.0062 0
+-6.59931 -12.9107 0
+-7.27727 -12.6454 0
+-7.70549 -11.3089 0
+-7.83675 -9.3065 0
+-7.65109 -7.03406 0
+-4.02612 -4.41497 0
+-1.98842 -2.18522 0
+-1.98842 0.0693246 0
+-0.369379 -0.125102 0
+-0.755821 -0.200721 0
+-1.4952 -0.25919 0
+-1.44475 -0.203833 0
+-1.31333 0.141248 0
+-1.10284 0.765229 0
+-0.866635 1.3852 0
+-0.673535 1.674 0
+-0.556981 1.50519 0
+-0.498699 1.01597 0
+-0.455824 0.472985 0
+-0.399011 0.085466 0
+-0.32897 -0.0892007 0
+-0.266062 -0.114441 0
+-0.22895 -0.0839782 0
+-0.221221 -0.0556555 0
+-0.233591 -0.0430099 0
+-0.25448 -0.03976 0
+-0.276835 -0.039466 0
+-0.297647 -0.0393963 0
+-0.315581 -0.0386041 0
+-0.330394 -0.0368331 0
+-0.342535 -0.0335835 0
+-0.352202 -0.028082 0
+-0.359502 -0.0208732 0
+-0.365208 -0.0139075 0
+-0.370174 -0.00819252 0
+-0.374385 -0.00309111 0
+-0.377579 0.00163833 0
+-0.380172 0.00523469 0
+-0.382622 0.0076448 0
+-0.384693 0.00965993 0
+-0.386194 0.0112201 0
+-0.387572 0.011565 0
+-0.389113 0.0108326 0
+-0.390504 0.0096227 0
+-0.391669 0.00750699 0
+-0.393045 0.00370261 0
+-0.394704 -0.00157735 0
+-0.396226 -0.00805761 0
+-0.3976 -0.0169317 0
+-0.399503 -0.0308951 0
+-0.403492 -0.0555285 0
+-0.414924 -0.105005 0
+-0.449776 -0.211018 0
+-0.545689 -0.435066 0
+-0.779537 -0.887627 0
+-1.29268 -1.75278 0
+-2.31736 -3.30632 0
+-4.18884 -5.9092 0
+-7.32139 -9.95536 0
+-12.1247 -15.7543 0
+-18.8488 -23.3472 0
+-27.3809 -32.2986 0
+-37.0701 -41.5576 0
+-46.6926 -49.5044 0
+-54.6549 -54.2684 0
+-59.439 -54.2966 0
+-60.1378 -49.0026 0
+-56.8565 -39.2274 0
+-51.038 -27.2262 0
+-46.2191 -15.7419 0
+-44.3545 -5.26048 0
+-46.0343 4.91214 0
+-50.8165 15.729 0
+-56.8158 27.8244 0
+-60.4154 40.5558 0
+-60.0359 50.8808 0
+-55.4485 56.2801 0
+-47.4824 55.8993 0
+-37.6445 50.5707 0
+-27.588 42.1631 0
+-18.645 32.7193 0
+-11.5788 23.8151 0
+-6.57417 16.3314 0
+-3.38967 10.5553 0
+-1.5708 6.40622 0
+-0.638711 3.62898 0
+-0.207587 1.90906 0
+-0.0233289 0.934957 0
+0.0536228 0.436458 0
+0.087534 0.207326 0
+0.103527 0.111122 0
+0.110836 0.0714408 0
+0.113776 0.0530029 0
+0.114925 0.0423847 0
+0.115473 0.035112 0
+0.115725 0.0299267 0
+0.115798 0.0265434 0
+0.115694 0.0243881 0
+0.115181 0.022547 0
+0.114107 0.0205567 0
+0.112616 0.0184641 0
+0.110818 0.0161782 0
+0.108551 0.0134668 0
+0.105663 0.0104074 0
+0.102159 0.00712456 0
+0.097935 0.00323903 0
+0.0927512 -0.00188501 0
+0.0865982 -0.0086858 0
+0.079799 -0.0177435 0
+0.0727083 -0.0302395 0
+0.0655702 -0.0476577 0
+0.0584203 -0.0714681 0
+0.0503232 -0.103619 0
+0.0379206 -0.147296 0
+0.0138035 -0.207634 0
+-0.0351372 -0.293333 0
+-0.128836 -0.419909 0
+-0.292769 -0.614931 0
+-0.552809 -0.926073 0
+-0.927951 -1.43028 0
+-1.42564 -2.23371 0
+-2.04378 -3.44514 0
+-2.77863 -5.11303 0
+-3.63051 -7.14183 0
+-4.59583 -9.23888 0
+-5.64451 -10.9575 0
+-6.70137 -11.8539 0
+-7.65461 -11.6921 0
+-8.39253 -10.571 0
+-8.8349 -8.86413 0
+-8.91633 -6.95263 0
+-4.73673 -4.80855 0
+-2.39519 -2.67125 0
+-2.39519 -0.309385 0
+-0.318904 -0.10821 0
+-0.661515 -0.182848 0
+-1.32467 -0.255926 0
+-1.27983 -0.248677 0
+-1.14325 0.00466358 0
+-0.90676 0.528733 0
+-0.624216 1.10265 0
+-0.382794 1.43257 0
+-0.24405 1.36644 0
+-0.207643 0.979562 0
+-0.224197 0.489532 0
+-0.238009 0.0992717 0
+-0.221806 -0.105412 0
+-0.182173 -0.154082 0
+-0.141433 -0.124726 0
+-0.116527 -0.0805702 0
+-0.110833 -0.0487137 0
+-0.118927 -0.0316746 0
+-0.13404 -0.024362 0
+-0.151309 -0.0221366 0
+-0.167852 -0.0220696 0
+-0.18235 -0.0223441 0
+-0.194398 -0.0215428 0
+-0.203787 -0.0187014 0
+-0.210572 -0.0140948 0
+-0.215451 -0.0090353 0
+-0.219234 -0.00441564 0
+-0.222141 -0.000189499 0
+-0.224154 0.00364614 0
+-0.225607 0.00668322 0
+-0.226837 0.00887126 0
+-0.227752 0.0105716 0
+-0.228279 0.0117447 0
+-0.228733 0.0120168 0
+-0.229336 0.0114342 0
+-0.22996 0.0102452 0
+-0.230636 0.00818284 0
+-0.231724 0.00479165 0
+-0.233376 7.56037e-05 0
+-0.235445 -0.00598708 0
+-0.238066 -0.0143073 0
+-0.241972 -0.0269859 0
+-0.248999 -0.048497 0
+-0.264669 -0.0893296 0
+-0.303818 -0.171862 0
+-0.399869 -0.339005 0
+-0.619704 -0.667779 0
+-1.08531 -1.28715 0
+-1.99825 -2.39335 0
+-3.6562 -4.25118 0
+-6.44492 -7.16653 0
+-10.7849 -11.4141 0
+-17.0177 -17.1141 0
+-25.2397 -24.0762 0
+-35.1296 -31.6671 0
+-45.8526 -38.7806 0
+-56.1289 -43.9912 0
+-64.5104 -45.914 0
+-69.8217 -43.6903 0
+-71.6479 -37.4 0
+-70.7468 -28.1261 0
+-69.0895 -17.3981 0
+-68.2559 -6.09298 0
+-68.8486 5.50581 0
+-70.3918 17.2731 0
+-71.3557 28.789 0
+-69.7095 38.9102 0
+-64.5926 45.7643 0
+-56.3349 48.0227 0
+-46.0611 45.6257 0
+-35.2002 39.71 0
+-25.0482 32.0111 0
+-16.493 24.1642 0
+-9.93484 17.2569 0
+-5.35195 11.7485 0
+-2.44182 7.64514 0
+-0.774622 4.73902 0
+0.0789885 2.77538 0
+0.466636 1.52142 0
+0.624097 0.7775 0
+0.685373 0.375187 0
+0.712939 0.179764 0
+0.729557 0.0945084 0
+0.741299 0.0597026 0
+0.749672 0.0446342 0
+0.755645 0.036415 0
+0.760023 0.0307378 0
+0.76333 0.0266239 0
+0.765922 0.0239545 0
+0.767949 0.0223644 0
+0.769313 0.0211864 0
+0.769922 0.0199502 0
+0.769872 0.0185166 0
+0.769259 0.0167941 0
+0.768031 0.0146977 0
+0.766146 0.0122943 0
+0.763663 0.00961038 0
+0.760578 0.00632589 0
+0.756821 0.00187401 0
+0.752476 -0.00433825 0
+0.7478 -0.0130658 0
+0.742935 -0.0253731 0
+0.737624 -0.0423451 0
+0.730882 -0.0647252 0
+0.720223 -0.0929582 0
+0.700485 -0.127556 0
+0.662773 -0.169921 0
+0.593959 -0.224518 0
+0.477413 -0.303362 0
+0.295808 -0.433326 0
+0.0354169 -0.66568 0
+-0.311479 -1.08338 0
+-0.750156 -1.79503 0
+-1.29327 -2.90202 0
+-1.97014 -4.43616 0
+-2.82281 -6.28916 0
+-3.88038 -8.18131 0
+-5.122 -9.71586 0
+-6.45649 -10.5194 0
+-7.74222 -10.4064 0
+-8.84027 -9.47297 0
+-9.65436 -8.05004 0
+-10.1007 -6.50625 0
+-5.38794 -4.9149 0
+-2.79907 -3.02697 0
+-2.79907 -0.674713 0
+-0.269502 -0.0892042 0
+-0.568508 -0.158746 0
+-1.15703 -0.239878 0
+-1.13136 -0.274354 0
+-1.01225 -0.114455 0
+-0.775432 0.291915 0
+-0.462376 0.789589 0
+-0.165247 1.13544 0
+0.0302013 1.17098 0
+0.0955781 0.91418 0
+0.0663474 0.518758 0
+0.00697114 0.158642 0
+-0.0320799 -0.0663669 0
+-0.0352077 -0.150961 0
+-0.0145134 -0.145428 0
+0.0102938 -0.105386 0
+0.0265489 -0.0649772 0
+0.0312502 -0.0363843 0
+0.0268656 -0.0199858 0
+0.0172009 -0.0124803 0
+0.00547218 -0.0103489 0
+-0.00619302 -0.0106867 0
+-0.0165176 -0.0112257 0
+-0.0246996 -0.0105264 0
+-0.0304683 -0.00833276 0
+-0.0342131 -0.00529676 0
+-0.0365589 -0.00207565 0
+-0.0378477 0.00109401 0
+-0.0382511 0.00404476 0
+-0.0380755 0.0065033 0
+-0.0375944 0.00838645 0
+-0.0368346 0.00980852 0
+-0.0358215 0.010729 0
+-0.0347802 0.0109734 0
+-0.0338912 0.0105437 0
+-0.0331616 0.00951476 0
+-0.0327018 0.00772265 0
+-0.0328111 0.00490128 0
+-0.0336848 0.000950141 0
+-0.0353599 -0.00431039 0
+-0.0380578 -0.0116071 0
+-0.0424987 -0.022542 0
+-0.05054 -0.0404518 0
+-0.0672721 -0.0725926 0
+-0.105333 -0.133795 0
+-0.192146 -0.252184 0
+-0.381675 -0.478239 0
+-0.771855 -0.89695 0
+-1.52568 -1.63949 0
+-2.88922 -2.8876 0
+-5.19473 -4.86095 0
+-8.83265 -7.77607 0
+-14.1772 -11.7693 0
+-21.4632 -16.79 0
+-30.6366 -22.4932 0
+-41.2336 -28.183 0
+-52.3578 -32.8662 0
+-62.8172 -35.4537 0
+-71.4284 -35.0781 0
+-77.4189 -31.4085 0
+-80.7673 -24.7766 0
+-82.1927 -15.9715 0
+-82.4749 -5.80975 0
+-81.9533 4.98517 0
+-80.3552 15.6759 0
+-76.9222 25.3568 0
+-70.9029 32.8915 0
+-62.2757 37.1376 0
+-51.7919 37.5392 0
+-40.6263 34.4602 0
+-29.9534 29.0372 0
+-20.6439 22.7017 0
+-13.1519 16.6722 0
+-7.5563 11.6613 0
+-3.67674 7.86896 0
+-1.19374 5.16215 0
+0.256595 3.28868 0
+1.01657 2.01541 0
+1.36559 1.1724 0
+1.50224 0.640851 0
+1.5476 0.329833 0
+1.56295 0.164415 0
+1.57233 0.0851345 0
+1.5817 0.0503353 0
+1.591 0.0353316 0
+1.59942 0.0280027 0
+1.60661 0.0235561 0
+1.61263 0.0206029 0
+1.61773 0.0188542 0
+1.62208 0.0180202 0
+1.62566 0.0176122 0
+1.62841 0.0171987 0
+1.63039 0.0165462 0
+1.63165 0.0155367 0
+1.63222 0.0141268 0
+1.63217 0.0123477 0
+1.63162 0.0101589 0
+1.63068 0.00727289 0
+1.62937 0.00318538 0
+1.62774 -0.00270647 0
+1.62577 -0.0110911 0
+1.62307 -0.0226738 0
+1.61858 -0.0378557 0
+1.61022 -0.0563597 0
+1.59439 -0.0771283 0
+1.56552 -0.0986923 0
+1.51601 -0.120409 0
+1.43687 -0.145374 0
+1.31925 -0.185745 0
+1.15631 -0.27038 0
+0.943426 -0.452796 0
+0.673893 -0.813851 0
+0.32876 -1.4499 0
+-0.134636 -2.43862 0
+-0.784738 -3.78606 0
+-1.69681 -5.37709 0
+-2.9125 -6.96561 0
+-4.39771 -8.23065 0
+-6.02986 -8.88726 0
+-7.63441 -8.80182 0
+-9.05582 -8.05157 0
+-10.2081 -6.89772 0
+-11.0356 -5.67877 0
+-5.848 -4.60742 0
+-3.11097 -3.11272 0
+-3.11097 -0.926306 0
+-0.220303 -0.0688217 0
+-0.473646 -0.128726 0
+-0.982897 -0.208606 0
+-0.986568 -0.270685 0
+-0.907981 -0.193046 0
+-0.706332 0.0902614 0
+-0.400766 0.484019 0
+-0.0715146 0.806181 0
+0.185813 0.913652 0
+0.315388 0.784601 0
+0.324737 0.509405 0
+0.266144 0.217231 0
+0.197747 0.00202428 0
+0.154225 -0.107445 0
+0.141278 -0.132489 0
+0.147654 -0.111768 0
+0.159718 -0.0770486 0
+0.169 -0.045674 0
+0.172656 -0.0236498 0
+0.171157 -0.0109886 0
+0.166193 -0.00539155 0
+0.159549 -0.00405044 0
+0.152752 -0.00443515 0
+0.146979 -0.00475976 0
+0.142886 -0.00424577 0
+0.140515 -0.00293188 0
+0.13957 -0.00113529 0
+0.139768 0.000891123 0
+0.140881 0.0029269 0
+0.142633 0.00474747 0
+0.144782 0.00623385 0
+0.147219 0.00736902 0
+0.149846 0.00809948 0
+0.152481 0.00833588 0
+0.154963 0.00806021 0
+0.157201 0.00727583 0
+0.159043 0.0058803 0
+0.160236 0.00370873 0
+0.160566 0.000620627 0
+0.159881 -0.00362492 0
+0.157889 -0.00961309 0
+0.153869 -0.0185193 0
+0.14607 -0.0326501 0
+0.130151 -0.0566694 0
+0.0961019 -0.0997402 0
+0.0229812 -0.179056 0
+-0.129767 -0.325481 0
+-0.435465 -0.591239 0
+-1.01704 -1.05789 0
+-2.06377 -1.84083 0
+-3.84013 -3.08454 0
+-6.6751 -4.941 0
+-10.9189 -7.52531 0
+-16.8598 -10.8489 0
+-24.6088 -14.7439 0
+-33.9829 -18.8085 0
+-44.4368 -22.4117 0
+-55.0992 -24.7907 0
+-64.94 -25.2365 0
+-73.0396 -23.308 0
+-78.8439 -18.9713 0
+-82.2315 -12.583 0
+-83.2909 -4.74944 0
+-82.0789 3.77405 0
+-78.5244 12.1222 0
+-72.5209 19.3539 0
+-64.1804 24.5515 0
+-54.0787 27.0362 0
+-43.1871 26.6479 0
+-32.581 23.8543 0
+-23.1328 19.589 0
+-15.3396 14.9086 0
+-9.32285 10.6555 0
+-4.93945 7.27795 0
+-1.91674 4.84625 0
+0.0480848 3.19734 0
+1.23752 2.09925 0
+1.89487 1.35806 0
+2.21712 0.850154 0
+2.35139 0.50659 0
+2.39575 0.285472 0
+2.40642 0.153754 0
+2.40956 0.0819988 0
+2.41391 0.0459934 0
+2.42048 0.028764 0
+2.42813 0.0203484 0
+2.43581 0.0158869 0
+2.44298 0.013434 0
+2.44955 0.0122881 0
+2.45554 0.0120355 0
+2.46091 0.0122393 0
+2.46561 0.0124989 0
+2.46963 0.0125383 0
+2.47296 0.0122007 0
+2.47567 0.0114189 0
+2.47785 0.0101703 0
+2.47964 0.00837056 0
+2.48115 0.00577469 0
+2.48234 0.00198962 0
+2.48307 -0.00343584 0
+2.4829 -0.0109104 0
+2.48085 -0.0206274 0
+2.47526 -0.032268 0
+2.46363 -0.0447261 0
+2.44263 -0.0561248 0
+2.40836 -0.0644237 0
+2.35701 -0.0690509 0
+2.28573 -0.0740981 0
+2.1933 -0.0933106 0
+2.07903 -0.156107 0
+1.93829 -0.312058 0
+1.75339 -0.62895 0
+1.48203 -1.17853 0
+1.05079 -2.00739 0
+0.364315 -3.09958 0
+-0.663519 -4.34925 0
+-2.06349 -5.56564 0
+-3.77357 -6.52056 0
+-5.63842 -7.02241 0
+-7.45914 -6.98111 0
+-9.07558 -6.43512 0
+-10.4296 -5.54368 0
+-11.5364 -4.57195 0
+-5.97037 -3.85346 0
+-3.20844 -2.81436 0
+-3.20844 -0.935972 0
+-0.171659 -0.0485727 0
+-0.376544 -0.0952156 0
+-0.79837 -0.164288 0
+-0.833654 -0.235403 0
+-0.809434 -0.21727 0
+-0.673932 -0.0452446 0
+-0.421671 0.231754 0
+-0.108076 0.492582 0
+0.179631 0.625943 0
+0.371116 0.593114 0
+0.445408 0.43511 0
+0.42928 0.233356 0
+0.3709 0.0603998 0
+0.311543 -0.0480928 0
+0.27181 -0.092761 0
+0.253774 -0.0937371 0
+0.250398 -0.073679 0
+0.253601 -0.0488834 0
+0.257845 -0.0278995 0
+0.260453 -0.0136032 0
+0.260732 -0.00567649 0
+0.259071 -0.00239567 0
+0.256359 -0.00172869 0
+0.253588 -0.00199479 0
+0.251525 -0.0021872 0
+0.250525 -0.00193689 0
+0.250624 -0.00123908 0
+0.251727 -0.000215824 0
+0.253683 0.000966429 0
+0.256293 0.00213405 0
+0.259362 0.00316244 0
+0.262747 0.00398085 0
+0.266318 0.00452648 0
+0.269911 0.0047406 0
+0.273374 0.00459646 0
+0.276575 0.00407314 0
+0.279352 0.00310329 0
+0.281484 0.00157667 0
+0.28275 -0.000645406 0
+0.282921 -0.00379475 0
+0.281625 -0.00831593 0
+0.278121 -0.0150129 0
+0.270819 -0.0253461 0
+0.256225 -0.0420716 0
+0.226898 -0.0704095 0
+0.167897 -0.12005 0
+0.050797 -0.208373 0
+-0.175541 -0.36489 0
+-0.597336 -0.636079 0
+-1.34942 -1.08872 0
+-2.62532 -1.8086 0
+-4.67614 -2.89013 0
+-7.78834 -4.413 0
+-12.2327 -6.40441 0
+-18.1838 -8.79254 0
+-25.6259 -11.3662 0
+-34.274 -13.7632 0
+-43.5539 -15.5103 0
+-52.6699 -16.1199 0
+-60.7574 -15.2199 0
+-67.0618 -12.6662 0
+-71.0535 -8.59054 0
+-72.427 -3.37522 0
+-71.0554 2.40305 0
+-66.9768 8.0442 0
+-60.4399 12.8174 0
+-51.9754 16.0875 0
+-42.4066 17.4676 0
+-32.7078 16.9492 0
+-23.7699 14.9165 0
+-16.1976 12.0168 0
+-10.2313 8.94223 0
+-5.80167 6.22588 0
+-2.66101 4.1373 0
+-0.512748 2.69799 0
+0.907897 1.77669 0
+1.80817 1.19898 0
+2.34468 0.821561 0
+2.63761 0.557227 0
+2.77946 0.364741 0
+2.83788 0.227061 0
+2.85731 0.134325 0
+2.86279 0.0765188 0
+2.86572 0.0430702 0
+2.86974 0.0247514 0
+2.87512 0.0149651 0
+2.88125 0.00976494 0
+2.88757 0.00711761 0
+2.89382 0.00603457 0
+2.89992 0.00593949 0
+2.90579 0.00637552 0
+2.91134 0.00695687 0
+2.91648 0.00739468 0
+2.92118 0.00750169 0
+2.92543 0.00717171 0
+2.92927 0.00633632 0
+2.93274 0.00489826 0
+2.93584 0.00268251 0
+2.93838 -0.000546013 0
+2.93994 -0.00500196 0
+2.93979 -0.0107581 0
+2.93674 -0.0175754 0
+2.92918 -0.0247057 0
+2.91525 -0.0307921 0
+2.89321 -0.0340831 0
+2.86201 -0.0332207 0
+2.82186 -0.0288963 0
+2.77434 -0.0265806 0
+2.72117 -0.0401369 0
+2.66035 -0.0952853 0
+2.57901 -0.230724 0
+2.44383 -0.493761 0
+2.19309 -0.9278 0
+1.73802 -1.55231 0
+0.98023 -2.3418 0
+-0.153451 -3.21557 0
+-1.67004 -4.04905 0
+-3.48395 -4.70664 0
+-5.42564 -5.08071 0
+-7.29207 -5.11468 0
+-8.92543 -4.80177 0
+-10.2859 -4.18319 0
+-11.4636 -3.39425 0
+-5.66712 -2.77875 0
+-2.99214 -2.12137 0
+-2.99214 -0.602495 0
+-0.125088 -0.0303505 0
+-0.279916 -0.0621869 0
+-0.606904 -0.113502 0
+-0.666256 -0.176053 0
+-0.69408 -0.189448 0
+-0.636957 -0.10237 0
+-0.470844 0.0656374 0
+-0.22285 0.244585 0
+0.041961 0.361129 0
+0.256201 0.378872 0
+0.381952 0.309357 0
+0.420375 0.194932 0
+0.399491 0.0812815 0
+0.353653 -0.00225904 0
+0.308362 -0.0474738 0
+0.275638 -0.0610176 0
+0.257111 -0.0551566 0
+0.249343 -0.0411204 0
+0.247839 -0.0264003 0
+0.248968 -0.0147374 0
+0.250463 -0.00717635 0
+0.251278 -0.00321513 0
+0.251254 -0.00170889 0
+0.25074 -0.00148473 0
+0.250227 -0.00167857 0
+0.2501 -0.00181406 0
+0.250568 -0.00171015 0
+0.251703 -0.00135431 0
+0.253485 -0.000818931 0
+0.255825 -0.000207945 0
+0.258601 0.000384007 0
+0.261694 0.0008853 0
+0.26498 0.0012388 0
+0.268319 0.00140025 0
+0.271572 0.00134216 0
+0.274604 0.00103957 0
+0.27726 0.000446964 0
+0.279346 -0.000509822 0
+0.280641 -0.00194019 0
+0.280868 -0.00402116 0
+0.279604 -0.00705085 0
+0.276113 -0.0115206 0
+0.269027 -0.0182578 0
+0.255687 -0.0287293 0
+0.230902 -0.0456217 0
+0.184721 -0.0738643 0
+0.098625 -0.122272 0
+-0.0604359 -0.205822 0
+-0.348293 -0.348211 0
+-0.853175 -0.583827 0
+-1.70414 -0.9576 0
+-3.07368 -1.52055 0
+-5.16789 -2.31873 0
+-8.1979 -3.37431 0
+-12.3295 -4.66083 0
+-17.6164 -6.07906 0
+-23.9342 -7.44512 0
+-30.9407 -8.50348 0
+-38.0888 -8.97147 0
+-44.7 -8.60821 0
+-50.0797 -7.28605 0
+-53.6311 -5.03868 0
+-54.9347 -2.07116 0
+-53.7965 1.26531 0
+-50.2799 4.52793 0
+-44.7228 7.2607 0
+-37.7231 9.088 0
+-30.0605 9.80523 0
+-22.5467 9.4356 0
+-15.8505 8.22032 0
+-10.3709 6.53721 0
+-6.20842 4.77978 0
+-3.23062 3.24809 0
+-1.18607 2.09275 0
+0.189095 1.32283 0
+1.10802 0.857776 0
+1.71755 0.589452 0
+2.11218 0.426933 0
+2.35534 0.314066 0
+2.49443 0.225656 0
+2.56688 0.154618 0
+2.60101 0.1002 0
+2.61598 0.0615455 0
+2.62297 0.0360824 0
+2.62741 0.0203173 0
+2.63139 0.0109893 0
+2.63547 0.00568411 0
+2.63973 0.00286816 0
+2.64414 0.00162738 0
+2.6487 0.00137887 0
+2.65339 0.00169148 0
+2.65812 0.00222226 0
+2.66281 0.00270874 0
+2.66735 0.00296658 0
+2.67165 0.00287567 0
+2.67563 0.00235286 0
+2.67922 0.00131836 0
+2.68222 -0.000321702 0
+2.68433 -0.00265405 0
+2.68503 -0.00569606 0
+2.68358 -0.00930415 0
+2.67907 -0.0130681 0
+2.6706 -0.0162332 0
+2.65755 -0.0177461 0
+2.64004 -0.0165637 0
+2.6192 -0.0123824 0
+2.59721 -0.0069041 0
+2.57625 -0.00562008 0
+2.55588 -0.0197675 0
+2.52821 -0.0676144 0
+2.4712 -0.173714 0
+2.3421 -0.364658 0
+2.07504 -0.660735 0
+1.58787 -1.06514 0
+0.80134 -1.55526 0
+-0.332105 -2.08213 0
+-1.79986 -2.5813 0
+-3.51495 -2.99155 0
+-5.3265 -3.26916 0
+-7.05591 -3.38527 0
+-8.55216 -3.30551 0
+-9.75849 -2.97686 0
+-10.7792 -2.37353 0
+-5.00556 -1.6665 0
+-2.49105 -1.19639 0
+-2.49105 0.0468384 0
+-0.082923 -0.0158848 0
+-0.189069 -0.0339861 0
+-0.41914 -0.0652816 0
+-0.487178 -0.108016 0
+-0.548195 -0.128433 0
+-0.556397 -0.0941708 0
+-0.480381 -0.0103815 0
+-0.325014 0.089216 0
+-0.129099 0.165213 0
+0.0561696 0.193602 0
+0.191636 0.173889 0
+0.263172 0.123394 0
+0.279587 0.0648645 0
+0.261442 0.0158842 0
+0.229495 -0.0155293 0
+0.198134 -0.0296601 0
+0.174248 -0.0312737 0
+0.159189 -0.0260648 0
+0.151393 -0.0186077 0
+0.148373 -0.0117207 0
+0.147847 -0.00665352 0
+0.148207 -0.00357798 0
+0.148585 -0.0020903 0
+0.148703 -0.00160537 0
+0.148625 -0.00160363 0
+0.148542 -0.00173304 0
+0.148636 -0.00180681 0
+0.149037 -0.00175777 0
+0.149808 -0.00159179 0
+0.150948 -0.0013508 0
+0.152416 -0.00108575 0
+0.154143 -0.000842845 0
+0.156041 -0.000660367 0
+0.158008 -0.000567678 0
+0.159935 -0.000585709 0
+0.161707 -0.00073383 0
+0.163194 -0.00104012 0
+0.164233 -0.00154876 0
+0.16462 -0.00232758 0
+0.164082 -0.00348251 0
+0.16221 -0.00517837 0
+0.158358 -0.00766822 0
+0.151454 -0.011352 0
+0.139629 -0.0169032 0
+0.119528 -0.0255188 0
+0.0850326 -0.0393656 0
+0.0250597 -0.0622956 0
+-0.0799225 -0.100835 0
+-0.262811 -0.165316 0
+-0.575824 -0.270804 0
+-1.09622 -0.437189 0
+-1.92924 -0.687513 0
+-3.20447 -1.04346 0
+-5.06137 -1.51736 0
+-7.62102 -2.1011 0
+-10.9453 -2.75465 0
+-14.9915 -3.39878 0
+-19.5767 -3.91813 0
+-24.3693 -4.17866 0
+-28.9191 -4.0582 0
+-32.7227 -3.48217 0
+-35.3085 -2.45252 0
+-36.3195 -1.05986 0
+-35.5795 0.525521 0
+-33.1341 2.0828 0
+-29.2581 3.3849 0
+-24.4189 4.24895 0
+-19.1938 4.58021 0
+-14.153 4.39483 0
+-9.74331 3.81068 0
+-6.21351 3.00742 0
+-3.60471 2.171 0
+-1.80071 1.44409 0
+-0.608005 0.900044 0
+0.169702 0.545126 0
+0.686199 0.341281 0
+1.04082 0.234838 0
+1.28906 0.178695 0
+1.46069 0.142433 0
+1.5744 0.111953 0
+1.64524 0.0837732 0
+1.68656 0.0588892 0
+1.70932 0.0387893 0
+1.72148 0.0239173 0
+1.72811 0.0136935 0
+1.73203 0.00707041 0
+1.73471 0.00300972 0
+1.73688 0.000697942 0
+1.73895 -0.00044073 0
+1.74115 -0.000814969 0
+1.74357 -0.000733635 0
+1.74624 -0.000440245 0
+1.74907 -0.000123688 0
+1.75197 7.74489e-05 0
+1.75478 6.73541e-05 0
+1.75735 -0.000219378 0
+1.7595 -0.000830322 0
+1.76098 -0.00179792 0
+1.76145 -0.00312329 0
+1.7605 -0.00474073 0
+1.75766 -0.00647128 0
+1.75258 -0.0079824 0
+1.74513 -0.00878666 0
+1.73572 -0.00833423 0
+1.72543 -0.00626777 0
+1.71595 -0.00289984 0
+1.70897 7.32405e-05 0
+1.70464 -0.00128776 0
+1.69878 -0.0139024 0
+1.67897 -0.047809 0
+1.62036 -0.115101 0
+1.48292 -0.227215 0
+1.21296 -0.390777 0
+0.751136 -0.603311 0
+0.0470559 -0.851183 0
+-0.922929 -1.11214 0
+-2.14148 -1.36275 0
+-3.54588 -1.58715 0
+-5.03522 -1.77982 0
+-6.4851 -1.93539 0
+-7.76627 -2.02434 0
+-8.77796 -1.96516 0
+-9.53588 -1.61562 0
+-4.23564 -0.831561 0
+-1.93942 -0.359267 0
+-1.93942 0.75517 0
+-0.0476994 -0.00620786 0
+-0.110564 -0.013932 0
+-0.250409 -0.0280785 0
+-0.309399 -0.0490267 0
+-0.375517 -0.0623162 0
+-0.416549 -0.0531406 0
+-0.404967 -0.0219648 0
+-0.334597 0.0188442 0
+-0.222963 0.0535787 0
+-0.10073 0.0713685 0
+0.00321427 0.0699443 0
+0.0722507 0.0543567 0
+0.104283 0.0328313 0
+0.10748 0.0126861 0
+0.0938135 -0.00186452 0
+0.0739843 -0.00983255 0
+0.0550748 -0.0123661 0
+0.0404523 -0.0114443 0
+0.0307856 -0.00894296 0
+0.0252618 -0.00619876 0
+0.0225476 -0.00394129 0
+0.0213847 -0.00241689 0
+0.0208632 -0.00157068 0
+0.020469 -0.0012129 0
+0.0200001 -0.00113641 0
+0.0194435 -0.00117805 0
+0.0188705 -0.00123529 0
+0.0183697 -0.00125839 0
+0.0180112 -0.0012346 0
+0.0178319 -0.00117269 0
+0.0178356 -0.00109055 0
+0.0179994 -0.00100757 0
+0.0182793 -0.000941101 0
+0.018616 -0.000905097 0
+0.0189401 -0.000910356 0
+0.0191727 -0.000966982 0
+0.0192204 -0.00108814 0
+0.0189651 -0.0012936 0
+0.0182509 -0.00161346 0
+0.0168617 -0.00209322 0
+0.0144838 -0.00280015 0
+0.0106487 -0.00383269 0
+0.00463669 -0.00533941 0
+-0.00470465 -0.00756102 0
+-0.0193078 -0.0109144 0
+-0.0425284 -0.0161435 0
+-0.0802631 -0.0245589 0
+-0.142727 -0.0383679 0
+-0.246984 -0.0610553 0
+-0.420076 -0.0977064 0
+-0.702188 -0.15507 0
+-1.14863 -0.241055 0
+-1.82877 -0.363308 0
+-2.81952 -0.526577 0
+-4.19161 -0.728982 0
+-5.9883 -0.957906 0
+-8.19993 -1.18708 0
+-10.7411 -1.37691 0
+-13.4398 -1.4798 0
+-16.0474 -1.45046 0
+-18.2705 -1.25897 0
+-19.8204 -0.902439 0
+-20.4691 -0.411044 0
+-20.0978 0.154318 0
+-18.7278 0.712912 0
+-16.5242 1.18139 0
+-13.7682 1.49306 0
+-10.8018 1.61382 0
+-7.95645 1.54955 0
+-5.48789 1.34213 0
+-3.5357 1.05525 0
+-2.11979 0.755087 0
+-1.16891 0.493222 0
+-0.56605 0.297184 0
+-0.191532 0.17061 0
+0.0491632 0.100589 0
+0.216425 0.0675788 0
+0.341546 0.0535757 0
+0.437655 0.0463259 0
+0.509842 0.0397676 0
+0.561354 0.0322635 0
+0.595902 0.024343 0
+0.61767 0.0170232 0
+0.630595 0.0109939 0
+0.63783 0.00646 0
+0.641612 0.00328969 0
+0.643411 0.00121278 0
+0.644159 -4.87695e-05 0
+0.644449 -0.0007289 0
+0.644649 -0.00101323 0
+0.644967 -0.00104987 0
+0.645486 -0.000958203 0
+0.646197 -0.000832612 0
+0.64702 -0.000744284 0
+0.647832 -0.000743693 0
+0.648479 -0.000864273 0
+0.648775 -0.00112542 0
+0.64851 -0.00153152 0
+0.647453 -0.00206441 0
+0.645383 -0.00267006 0
+0.642157 -0.00324394 0
+0.637801 -0.00362472 0
+0.632627 -0.00361134 0
+0.627319 -0.00302504 0
+0.622891 -0.00183858 0
+0.620377 -0.000384983 0
+0.620083 0.000368086 0
+0.620257 -0.00146089 0
+0.615183 -0.00882726 0
+0.592997 -0.0256218 0
+0.533954 -0.0560569 0
+0.410266 -0.103526 0
+0.188663 -0.169173 0
+-0.163856 -0.250791 0
+-0.672093 -0.342945 0
+-1.34527 -0.438959 0
+-2.17349 -0.534528 0
+-3.1295 -0.631136 0
+-4.17301 -0.736309 0
+-5.25068 -0.857721 0
+-6.28539 -0.989633 0
+-7.16136 -1.08919 0
+-7.75543 -1.02155 0
+-3.60935 -0.397197 0
+-1.66021 0.0823282 0
+-1.66021 1.06541 0
+-0.0214957 -0.00130092 0
+-0.050472 -0.00315359 0
+-0.116642 -0.00667092 0
+-0.153465 -0.0122037 0
+-0.199584 -0.0161979 0
+-0.237724 -0.015002 0
+-0.251179 -0.00850974 0
+-0.233018 0.000682224 0
+-0.188546 0.00910599 0
+-0.131349 0.014172 0
+-0.0764592 0.0150539 0
+-0.03465 0.0125473 0
+-0.0101068 0.00828775 0
+-0.00131576 0.00389455 0
+-0.0036169 0.000435969 0
+-0.0117598 -0.00169045 0
+-0.0215324 -0.00259436 0
+-0.0303407 -0.00263682 0
+-0.0370671 -0.00221742 0
+-0.0416134 -0.00165336 0
+-0.0444151 -0.00114048 0
+-0.0460678 -0.000765067 0
+-0.0471019 -0.000537366 0
+-0.0478882 -0.000427403 0
+-0.0486324 -0.000392979 0
+-0.0494148 -0.000396405 0
+-0.0502396 -0.000411233 0
+-0.051076 -0.000422613 0
+-0.0518864 -0.000424782 0
+-0.0526418 -0.00041784 0
+-0.053328 -0.000404901 0
+-0.0539459 -0.000390104 0
+-0.05451 -0.00037749 0
+-0.0550449 -0.000370501 0
+-0.0555836 -0.000371962 0
+-0.0561663 -0.000384556 0
+-0.056843 -0.000411598 0
+-0.0576789 -0.000457864 0
+-0.058762 -0.000530475 0
+-0.0602153 -0.000639904 0
+-0.0622142 -0.000801177 0
+-0.0650111 -0.00103562 0
+-0.0689757 -0.00137451 0
+-0.0746692 -0.00186722 0
+-0.0829856 -0.00259754 0
+-0.0954155 -0.00371291 0
+-0.114503 -0.00547043 0
+-0.14457 -0.00829991 0
+-0.192747 -0.0128768 0
+-0.270266 -0.0201851 0
+-0.393799 -0.0315331 0
+-0.586385 -0.0484644 0
+-0.877191 -0.0724946 0
+-1.29914 -0.104617 0
+-1.88353 -0.144581 0
+-2.65134 -0.190075 0
+-3.60228 -0.236102 0
+-4.70421 -0.274945 0
+-5.88686 -0.29711 0
+-7.04397 -0.2933 0
+-8.04581 -0.25707 0
+-8.76086 -0.18733 0
+-9.08208 -0.0897717 0
+-8.95117 0.0234675 0
+-8.37423 0.136017 0
+-7.42369 0.230882 0
+-6.22505 0.294451 0
+-4.93093 0.319726 0
+-3.68912 0.307749 0
+-2.61375 0.266762 0
+-1.76789 0.209393 0
+-1.16169 0.148894 0
+-0.764238 0.095769 0
+-0.522891 0.0558388 0
+-0.382424 0.0301444 0
+-0.298113 0.0162787 0
+-0.240842 0.0103084 0
+-0.195708 0.00844325 0
+-0.157362 0.00798117 0
+-0.125093 0.0074992 0
+-0.0993877 0.00655913 0
+-0.0803023 0.00525862 0
+-0.0671388 0.0038606 0
+-0.0587304 0.00258651 0
+-0.0538213 0.00155191 0
+-0.0513124 0.000781663 0
+-0.0503476 0.000248956 0
+-0.0503034 -9.20895e-05 0
+-0.0507428 -0.000288576 0
+-0.0513728 -0.000382386 0
+-0.0520126 -0.000409176 0
+-0.0525712 -0.000398723 0
+-0.0530278 -0.000375145 0
+-0.0534142 -0.00035702 0
+-0.0537994 -0.00035769 0
+-0.0542771 -0.00038576 0
+-0.0549563 -0.000445389 0
+-0.0559513 -0.00053579 0
+-0.0573654 -0.000649546 0
+-0.0592646 -0.000770106 0
+-0.061638 -0.000869729 0
+-0.0643517 -0.000910272 0
+-0.067112 -0.000850348 0
+-0.0694732 -0.000663138 0
+-0.0709426 -0.000368506 0
+-0.0712471 -7.97562e-05 0
+-0.0708198 -5.86209e-05 0
+-0.0715183 -0.000761687 0
+-0.077495 -0.00284987 0
+-0.0959902 -0.00712598 0
+-0.137672 -0.0143746 0
+-0.216083 -0.0251146 0
+-0.345916 -0.0393384 0
+-0.540318 -0.0563885 0
+-0.808112 -0.0751506 0
+-1.15239 -0.0946766 0
+-1.57179 -0.115135 0
+-2.06422 -0.138699 0
+-2.63072 -0.169806 0
+-3.27409 -0.214352 0
+-3.98582 -0.277902 0
+-4.71342 -0.361591 0
+-5.30308 -0.431885 0
+-2.97513 -0.181979 0
+-1.63841 0.0968049 0
+-1.63841 0.657899 0
+-0.00547014 -0.00130092 0
+-0.0129298 -0.00315359 0
+-0.0304321 -0.00667092 0
+-0.0426359 -0.0122037 0
+-0.058834 -0.0161979 0
+-0.0738361 -0.015002 0
+-0.082346 -0.00850974 0
+-0.081664 0.000682224 0
+-0.0725581 0.00910599 0
+-0.0583861 0.014172 0
+-0.0433323 0.0150539 0
+-0.0307851 0.0125473 0
+-0.0224975 0.00828775 0
+-0.018603 0.00389455 0
+-0.0181672 0.000435969 0
+-0.0198579 -0.00169045 0
+-0.0224525 -0.00259436 0
+-0.0250895 -0.00263682 0
+-0.0273072 -0.00221742 0
+-0.0289607 -0.00165336 0
+-0.0301015 -0.00114048 0
+-0.0308667 -0.000765067 0
+-0.0314043 -0.000537366 0
+-0.031832 -0.000427403 0
+-0.0322251 -0.000392979 0
+-0.0326217 -0.000396405 0
+-0.0330332 -0.000411233 0
+-0.033456 -0.000422613 0
+-0.0338809 -0.000424782 0
+-0.0342989 -0.00041784 0
+-0.034704 -0.000404901 0
+-0.0350942 -0.000390104 0
+-0.0354718 -0.00037749 0
+-0.0358424 -0.000370501 0
+-0.0362145 -0.000371962 0
+-0.0365991 -0.000384556 0
+-0.0370108 -0.000411598 0
+-0.0374687 -0.000457864 0
+-0.0379992 -0.000530475 0
+-0.0386392 -0.000639904 0
+-0.0394404 -0.000801177 0
+-0.040476 -0.00103562 0
+-0.0418504 -0.00137451 0
+-0.0437176 -0.00186722 0
+-0.046315 -0.00259754 0
+-0.0500278 -0.00371291 0
+-0.055498 -0.00547043 0
+-0.0637977 -0.00829991 0
+-0.0766741 -0.0128768 0
+-0.0968587 -0.0201851 0
+-0.128391 -0.0315331 0
+-0.176854 -0.0484644 0
+-0.249347 -0.0724946 0
+-0.353962 -0.104617 0
+-0.498539 -0.144581 0
+-0.688609 -0.190075 0
+-0.924705 -0.236102 0
+-1.19964 -0.274945 0
+-1.49674 -0.29711 0
+-1.79003 -0.2933 0
+-2.04709 -0.25707 0
+-2.23441 -0.18733 0
+-2.32416 -0.0897717 0
+-2.30068 0.0234675 0
+-2.16466 0.136017 0
+-1.93377 0.230882 0
+-1.63931 0.294451 0
+-1.31958 0.319726 0
+-1.01182 0.307749 0
+-0.74506 0.266762 0
+-0.535667 0.209393 0
+-0.386772 0.148894 0
+-0.291002 0.095769 0
+-0.235163 0.0558388 0
+-0.205019 0.0301444 0
+-0.188739 0.0162787 0
+-0.178431 0.0103084 0
+-0.169987 0.00844325 0
+-0.162006 0.00798117 0
+-0.154506 0.0074992 0
+-0.147947 0.00655913 0
+-0.142688 0.00525862 0
+-0.138827 0.0038606 0
+-0.13624 0.00258651 0
+-0.134688 0.00155191 0
+-0.133906 0.000781663 0
+-0.133657 0.000248956 0
+-0.133748 -9.20895e-05 0
+-0.134037 -0.000288576 0
+-0.134419 -0.000382386 0
+-0.134828 -0.000409176 0
+-0.135226 -0.000398723 0
+-0.135601 -0.000375145 0
+-0.135958 -0.00035702 0
+-0.136315 -0.00035769 0
+-0.136701 -0.00038576 0
+-0.137146 -0.000445389 0
+-0.137681 -0.00053579 0
+-0.13833 -0.000649546 0
+-0.1391 -0.000770106 0
+-0.13997 -0.000869729 0
+-0.14088 -0.000910272 0
+-0.14173 -0.000850348 0
+-0.142393 -0.000663138 0
+-0.142761 -0.000368506 0
+-0.142841 -7.97562e-05 0
+-0.142899 -5.86209e-05 0
+-0.14366 -0.000761687 0
+-0.14651 -0.00284987 0
+-0.153636 -0.00712598 0
+-0.16801 -0.0143746 0
+-0.193125 -0.0251146 0
+-0.232463 -0.0393384 0
+-0.288851 -0.0563885 0
+-0.364001 -0.0751506 0
+-0.458678 -0.0946766 0
+-0.573812 -0.115135 0
+-0.712511 -0.138699 0
+-0.882317 -0.169806 0
+-1.09667 -0.214352 0
+-1.37457 -0.277902 0
+-1.73616 -0.361591 0
+-2.16805 -0.431885 0
+-1.61283 -0.181979 0
+-1.12006 0.0968049 0
+-1.12006 0.657899 0
+-0.198838 -0.127992 0
+-0.419056 -0.23803 0
+-0.86743 -0.393087 0
+-0.285173 -0.58226 0
+0.418098 -0.703273 0
+1.11178 -0.693687 0
+1.6738 -0.562026 0
+2.03054 -0.356741 0
+2.16973 -0.1392 0
+2.13063 0.0390909 0
+1.98059 0.150037 0
+1.78957 0.191016 0
+1.61165 0.177909 0
+1.47727 0.134375 0
+1.39483 0.0824304 0
+1.35773 0.0371021 0
+1.35238 0.00534433 0
+1.3646 -0.0122316 0
+1.38321 -0.0186111 0
+1.40113 -0.0179255 0
+1.415 -0.0138796 0
+1.42407 -0.00907195 0
+1.42901 -0.00494157 0
+1.43104 -0.00203046 0
+1.43136 -0.000327123 0
+1.43092 0.000439816 0
+1.43031 0.000603461 0
+1.42985 0.000452014 0
+1.42966 0.000189194 0
+1.42972 -6.53484e-05 0
+1.42998 -0.000257254 0
+1.43035 -0.000374285 0
+1.43077 -0.000426019 0
+1.4312 -0.000429189 0
+1.43159 -0.000398941 0
+1.43193 -0.000345214 0
+1.4322 -0.000273319 0
+1.43239 -0.000188239 0
+1.43249 -0.000101981 0
+1.43253 -4.18884e-05 0
+1.43258 -5.50964e-05 0
+1.43278 -0.000201316 0
+1.4333 -0.000525252 0
+1.43431 -0.00100562 0
+1.4358 -0.00149302 0
+1.43746 -0.00167114 0
+1.43855 -0.00109233 0
+1.43788 0.000669051 0
+1.43413 0.00375099 0
+1.42641 0.00771292 0
+1.41503 0.0113815 0
+1.40203 0.0129991 0
+1.3913 0.0107323 0
+1.38789 0.0034034 0
+1.39675 -0.00886198 0
+1.42115 -0.024403 0
+1.46151 -0.0403572 0
+1.51493 -0.053429 0
+1.57569 -0.0607566 0
+1.63624 -0.0605525 0
+1.68862 -0.0523814 0
+1.72576 -0.037138 0
+1.7426 -0.0168461 0
+1.73695 0.00565385 0
+1.70983 0.0271195 0
+1.66543 0.0443977 0
+1.61049 0.0549427 0
+1.55318 0.0573018 0
+1.50169 0.0514949 0
+1.46253 0.0391572 0
+1.43926 0.0232733 0
+1.43181 0.00744635 0
+1.43693 -0.00511674 0
+1.44944 -0.0125073 0
+1.46395 -0.0145166 0
+1.47634 -0.0123927 0
+1.48447 -0.00812708 0
+1.48811 -0.00364278 0
+1.48834 -0.000226425 0
+1.4867 0.00164394 0
+1.48456 0.00213567 0
+1.48282 0.00174319 0
+1.48183 0.000991695 0
+1.48157 0.000261016 0
+1.48183 -0.000260856 0
+1.48237 -0.000539235 0
+1.48299 -0.000624325 0
+1.48358 -0.000591645 0
+1.48409 -0.000506801 0
+1.4845 -0.000413275 0
+1.48484 -0.000334676 0
+1.48512 -0.000282875 0
+1.48539 -0.000266336 0
+1.48568 -0.000295765 0
+1.48607 -0.000385791 0
+1.48662 -0.000551912 0
+1.48742 -0.00080194 0
+1.48854 -0.00112129 0
+1.48999 -0.00145259 0
+1.49167 -0.00167268 0
+1.49324 -0.00157505 0
+1.49411 -0.000872269 0
+1.49336 0.000759269 0
+1.48979 0.00356462 0
+1.48229 0.00750184 0
+1.47035 0.0119379 0
+1.45505 0.015299 0
+1.44024 0.0148101 0
+1.43368 0.00656256 0
+1.44746 -0.0137811 0
+1.49686 -0.0493978 0
+1.59674 -0.099879 0
+1.75534 -0.158602 0
+1.96657 -0.211231 0
+2.20368 -0.237111 0
+2.41851 -0.214828 0
+2.55007 -0.131566 0
+2.54339 0.00667973 0
+2.37435 0.169044 0
+2.07157 0.302783 0
+1.7243 0.347269 0
+1.4658 0.258495 0
+1.40041 0.0653965 0
+1.25789 0.152201 0
+0.9497 0.312039 0
+0.9497 0.824239 0
+-0.903588 -0.482328 0
+-1.82992 -0.863764 0
+-3.69077 -1.42245 0
+-2.14925 -2.12379 0
+-0.267048 -2.58549 0
+1.56257 -2.52332 0
+2.95934 -1.95882 0
+3.70316 -1.10058 0
+3.78224 -0.218308 0
+3.35436 0.466948 0
+2.65894 0.845432 0
+1.92617 0.923763 0
+1.31679 0.787274 0
+0.903538 0.547604 0
+0.685734 0.300214 0
+0.619275 0.103543 0
+0.646259 -0.0216576 0
+0.715268 -0.0812584 0
+0.790574 -0.0939336 0
+0.852897 -0.0802653 0
+0.895665 -0.0566637 0
+0.920035 -0.0334577 0
+0.930621 -0.0155424 0
+0.932634 -0.004058 0
+0.930399 0.00189451 0
+0.926859 0.00396576 0
+0.923664 0.00378516 0
+0.921495 0.00260859 0
+0.920432 0.00124 0
+0.920258 9.62547e-05 0
+0.920666 -0.000677164 0
+0.921373 -0.00109256 0
+0.922167 -0.00123125 0
+0.922912 -0.00118473 0
+0.923526 -0.00102267 0
+0.923952 -0.000781528 0
+0.924138 -0.000469046 0
+0.924023 -8.37073e-05 0
+0.923562 0.000350129 0
+0.922774 0.00073685 0
+0.921837 0.000872223 0
+0.921177 0.000450404 0
+0.921478 -0.000835078 0
+0.923526 -0.00306206 0
+0.92778 -0.00575516 0
+0.933715 -0.0076145 0
+0.93917 -0.00655614 0
+0.940157 -0.000325354 0
+0.931637 0.0122628 0
+0.909525 0.0298173 0
+0.873502 0.0473962 0
+0.829526 0.0569681 0
+0.790526 0.0497247 0
+0.774265 0.0196572 0
+0.79855 -0.0331542 0
+0.875425 -0.101284 0
+1.00665 -0.171585 0
+1.18221 -0.228998 0
+1.38219 -0.260747 0
+1.58085 -0.259214 0
+1.75136 -0.222893 0
+1.87018 -0.155962 0
+1.92059 -0.0672626 0
+1.89524 0.0310006 0
+1.79745 0.124901 0
+1.64108 0.200769 0
+1.4487 0.247321 0
+1.24822 0.257778 0
+1.06796 0.231753 0
+0.930871 0.176249 0
+0.84939 0.104754 0
+0.822939 0.0338971 0
+0.839302 -0.0214801 0
+0.879584 -0.0527883 0
+0.924679 -0.0596118 0
+0.960646 -0.0483593 0
+0.981144 -0.0286254 0
+0.986722 -0.00922062 0
+0.982084 0.00441206 0
+0.972983 0.0107457 0
+0.963989 0.0111298 0
+0.957589 0.00814299 0
+0.954372 0.00420915 0
+0.953746 0.000886647 0
+0.954696 -0.00121067 0
+0.95629 -0.00213315 0
+0.957902 -0.00223603 0
+0.959219 -0.00190925 0
+0.960156 -0.00144324 0
+0.960745 -0.00100264 0
+0.961068 -0.000657525 0
+0.961216 -0.000430716 0
+0.961288 -0.000338915 0
+0.961411 -0.000419223 0
+0.961764 -0.000738604 0
+0.962596 -0.00138453 0
+0.964228 -0.00243323 0
+0.966996 -0.00389023 0
+0.971143 -0.00560007 0
+0.976602 -0.00713189 0
+0.982694 -0.00766662 0
+0.987763 -0.00594178 0
+0.988872 -0.000350094 0
+0.981763 0.0106732 0
+0.961438 0.027827 0
+0.923778 0.0495972 0
+0.868587 0.0704903 0
+0.804065 0.0793316 0
+0.751976 0.058651 0
+0.751502 -0.0133072 0
+0.858484 -0.15638 0
+1.13619 -0.377588 0
+1.63525 -0.65766 0
+2.36484 -0.940824 0
+3.26437 -1.13663 0
+4.19106 -1.14152 0
+4.93987 -0.880375 0
+5.30191 -0.355355 0
+5.14835 0.322602 0
+4.50468 0.946454 0
+3.56846 1.28348 0
+2.63 1.19696 0
+1.8797 0.815697 0
+1.25724 0.814921 0
+0.755815 0.829759 0
+0.755815 1.56534 0
+-1.91362 -0.917547 0
+-3.85209 -1.63941 0
+-7.73444 -2.70883 0
+-5.78212 -4.07613 0
+-3.40544 -4.96218 0
+-1.21845 -4.71034 0
+0.18317 -3.36047 0
+0.495192 -1.41264 0
+-0.211512 0.488352 0
+-1.58255 1.83794 0
+-3.1622 2.42504 0
+-4.56536 2.32688 0
+-5.57288 1.79476 0
+-6.13882 1.11351 0
+-6.3386 0.499952 0
+-6.29976 0.0646779 0
+-6.14646 -0.174997 0
+-5.96963 -0.258116 0
+-5.82049 -0.243106 0
+-5.71778 -0.183002 0
+-5.65988 -0.114589 0
+-5.63581 -0.057559 0
+-5.63275 -0.0186304 0
+-5.64002 0.00318279 0
+-5.65036 0.0122166 0
+-5.65978 0.0133525 0
+-5.66663 0.0106139 0
+-5.67077 0.00672436 0
+-5.67275 0.00320019 0
+-5.67334 0.000663766 0
+-5.67322 -0.00081383 0
+-5.6729 -0.00143426 0
+-5.67267 -0.00147944 0
+-5.67268 -0.00119739 0
+-5.67297 -0.000749211 0
+-5.67358 -0.000196271 0
+-5.67455 0.000487466 0
+-5.67603 0.00137427 0
+-5.67819 0.00249994 0
+-5.68121 0.0037383 0
+-5.68502 0.00466196 0
+-5.68906 0.00447222 0
+-5.69205 0.00214532 0
+-5.69208 -0.00305194 0
+-5.68718 -0.0106689 0
+-5.6767 -0.0181128 0
+-5.66295 -0.020321 0
+-5.65236 -0.0109227 0
+-5.65479 0.0146796 0
+-5.68001 0.0550222 0
+-5.73186 0.0992242 0
+-5.80224 0.127336 0
+-5.86855 0.116024 0
+-5.89723 0.0483198 0
+-5.85347 -0.0769285 0
+-5.71356 -0.241206 0
+-5.47435 -0.410805 0
+-5.15576 -0.547598 0
+-4.79599 -0.620527 0
+-4.44264 -0.612582 0
+-4.1436 -0.521945 0
+-3.93992 -0.359651 0
+-3.8605 -0.146686 0
+-3.91826 0.0887533 0
+-4.10789 0.314526 0
+-4.40577 0.498645 0
+-4.77225 0.613795 0
+-5.15668 0.642206 0
+-5.5058 0.580869 0
+-5.77499 0.445432 0
+-5.9394 0.26917 0
+-6.00016 0.0946481 0
+-5.9818 -0.0398376 0
+-5.9218 -0.112787 0
+-5.85673 -0.124683 0
+-5.81133 -0.0937559 0
+-5.79446 -0.0454934 0
+-5.80185 -0.00183397 0
+-5.82261 0.0251754 0
+-5.84573 0.0338655 0
+-5.86395 0.0293466 0
+-5.87463 0.0188236 0
+-5.87857 0.00815382 0
+-5.87816 0.000470721 0
+-5.87582 -0.00354545 0
+-5.8733 -0.00465499 0
+-5.87147 -0.00406368 0
+-5.87058 -0.00280367 0
+-5.87051 -0.0015117 0
+-5.87105 -0.00046434 0
+-5.87199 0.000285859 0
+-5.87319 0.000772745 0
+-5.87455 0.00101569 0
+-5.87593 0.000959065 0
+-5.87711 0.000447804 0
+-5.87774 -0.000761957 0
+-5.87722 -0.00294899 0
+-5.8748 -0.00631129 0
+-5.86963 -0.010768 0
+-5.86109 -0.0156737 0
+-5.84928 -0.0194766 0
+-5.83581 -0.0194189 0
+-5.82468 -0.01148 0
+-5.82311 0.0091049 0
+-5.84159 0.0463118 0
+-5.89235 0.10035 0
+-5.98497 0.163113 0
+-6.11839 0.212752 0
+-6.26923 0.209492 0
+-6.37919 0.0966479 0
+-6.34745 -0.188116 0
+-6.03742 -0.68762 0
+-5.30669 -1.38839 0
+-4.06235 -2.18516 0
+-2.32875 -2.87023 0
+-0.29717 -3.1731 0
+1.68145 -2.859 0
+3.18548 -1.85938 0
+3.87749 -0.369413 0
+3.65963 1.16431 0
+2.73643 2.20668 0
+1.52134 2.41205 0
+0.428826 1.90821 0
+-0.108288 1.445 0
+-0.243799 1.00377 0
+-0.243799 1.59967 0
+-2.82409 -1.25217 0
+-5.72672 -2.24416 0
+-11.5834 -3.71632 0
+-10.0565 -5.60299 0
+-8.29375 -6.72497 0
+-6.98095 -6.02319 0
+-6.74244 -3.59903 0
+-7.79395 -0.361195 0
+-9.86431 2.55865 0
+-12.369 4.34253 0
+-14.6915 4.74753 0
+-16.4116 4.04691 0
+-17.3908 2.77391 0
+-17.7249 1.44757 0
+-17.6298 0.404791 0
+-17.3315 -0.233668 0
+-16.9997 -0.506765 0
+-16.7291 -0.528782 0
+-16.5512 -0.421074 0
+-16.4586 -0.275591 0
+-16.4275 -0.145763 0
+-16.432 -0.0530506 0
+-16.4521 0.00134561 0
+-16.4747 0.0258101 0
+-16.4936 0.0310711 0
+-16.5067 0.0264041 0
+-16.5144 0.0183002 0
+-16.5182 0.0105129 0
+-16.5198 0.00469772 0
+-16.5203 0.00117922 0
+-16.5207 -0.000404273 0
+-16.5215 -0.000659842 0
+-16.5229 -0.000176175 0
+-16.5247 0.000610856 0
+-16.5269 0.0014589 0
+-16.5295 0.00231313 0
+-16.5323 0.00328966 0
+-16.5356 0.00463121 0
+-16.5397 0.00658737 0
+-16.5452 0.00919 0
+-16.5524 0.0119332 0
+-16.5615 0.0134631 0
+-16.5709 0.0115678 0
+-16.5779 0.00388358 0
+-16.5781 -0.010437 0
+-16.5678 -0.028463 0
+-16.5462 -0.0419109 0
+-16.5189 -0.0382413 0
+-16.4983 -0.00596477 0
+-16.4998 0.0565426 0
+-16.5334 0.132795 0
+-16.5929 0.186797 0
+-16.6499 0.173049 0
+-16.658 0.0563499 0
+-16.5672 -0.167762 0
+-16.3443 -0.464079 0
+-15.988 -0.767149 0
+-15.531 -1.00463 0
+-15.0302 -1.1213 0
+-14.5514 -1.09138 0
+-14.1563 -0.917133 0
+-13.895 -0.620954 0
+-13.8024 -0.239288 0
+-13.8945 0.180887 0
+-14.1662 0.586126 0
+-14.5898 0.922251 0
+-15.1167 1.1407 0
+-15.6805 1.20607 0
+-16.2065 1.10684 0
+-16.6276 0.866474 0
+-16.9035 0.545118 0
+-17.0332 0.22434 0
+-17.0518 -0.0212355 0
+-17.0138 -0.150815 0
+-16.9704 -0.168053 0
+-16.9531 -0.111032 0
+-16.9691 -0.029561 0
+-17.0076 0.0367174 0
+-17.0519 0.0694422 0
+-17.0882 0.0701807 0
+-17.1104 0.0515675 0
+-17.1193 0.0276876 0
+-17.1193 0.00812855 0
+-17.1154 -0.00343213 0
+-17.1112 -0.00766302 0
+-17.1087 -0.00715452 0
+-17.1083 -0.00454648 0
+-17.1094 -0.00163944 0
+-17.1116 0.000712929 0
+-17.1144 0.00232691 0
+-17.1175 0.00334654 0
+-17.1207 0.00398709 0
+-17.1241 0.00438099 0
+-17.1276 0.00449429 0
+-17.1313 0.00408946 0
+-17.1347 0.0027244 0
+-17.1375 -0.000202196 0
+-17.1385 -0.00531888 0
+-17.1362 -0.0130056 0
+-17.129 -0.0229308 0
+-17.1151 -0.0333985 0
+-17.0939 -0.040589 0
+-17.0674 -0.0379488 0
+-17.0421 -0.0162488 0
+-17.0306 0.0348539 0
+-17.0529 0.122669 0
+-17.1336 0.243777 0
+-17.2937 0.372824 0
+-17.5345 0.450351 0
+-17.8141 0.376219 0
+-18.0217 0.0194884 0
+-17.9657 -0.743613 0
+-17.3939 -1.96023 0
+-16.0618 -3.51723 0
+-13.8442 -5.08789 0
+-10.8488 -6.16849 0
+-7.46627 -6.24149 0
+-4.29381 -5.03184 0
+-1.92868 -2.73454 0
+-0.714558 -0.0498129 0
+-0.58042 2.07254 0
+-1.07899 2.91062 0
+-1.594 2.42322 0
+-1.36308 1.38013 0
+-0.881474 0.592679 0
+-0.881474 1.11321 0
+-3.34829 -1.39499 0
+-6.88691 -2.50192 0
+-14.1143 -4.12773 0
+-13.5526 -6.16471 0
+-13.1482 -7.12938 0
+-13.4862 -5.68518 0
+-14.994 -2.09135 0
+-17.6208 2.26557 0
+-20.8339 5.77166 0
+-23.8907 7.3993 0
+-26.1838 7.04057 0
+-27.4544 5.31742 0
+-27.799 3.11843 0
+-27.5274 1.1759 0
+-26.9868 -0.135816 0
+-26.4407 -0.779792 0
+-26.0283 -0.919179 0
+-25.7841 -0.773089 0
+-25.6806 -0.524593 0
+-25.6687 -0.287576 0
+-25.7021 -0.112335 0
+-25.7485 -0.0066742 0
+-25.79 0.042784 0
+-25.8197 0.0554813 0
+-25.8374 0.0487543 0
+-25.846 0.0348787 0
+-25.8487 0.0210538 0
+-25.8488 0.0105555 0
+-25.8483 0.00412541 0
+-25.8483 0.00118804 0
+-25.8494 0.000695578 0
+-25.8517 0.00158986 0
+-25.8549 0.00302961 0
+-25.8588 0.0044828 0
+-25.8631 0.00570578 0
+-25.8675 0.00668825 0
+-25.8719 0.00765133 0
+-25.8764 0.00905207 0
+-25.8813 0.0114834 0
+-25.8875 0.015406 0
+-25.8963 0.0206519 0
+-25.9085 0.0257188 0
+-25.9242 0.0272405 0
+-25.9408 0.0204436 0
+-25.9526 0.00135581 0
+-25.9518 -0.0292906 0
+-25.9316 -0.0621336 0
+-25.8912 -0.0786986 0
+-25.8391 -0.0580417 0
+-25.7917 0.00905938 0
+-25.7632 0.104307 0
+-25.7522 0.175813 0
+-25.731 0.151781 0
+-25.648 -0.0266227 0
+-25.4472 -0.368657 0
+-25.0944 -0.816868 0
+-24.5978 -1.26381 0
+-24.0075 -1.59488 0
+-23.3979 -1.73091 0
+-22.8436 -1.64575 0
+-22.405 -1.35573 0
+-22.1261 -0.899869 0
+-22.0362 -0.329248 0
+-22.1497 0.294335 0
+-22.4643 0.90075 0
+-22.9593 1.41726 0
+-23.5926 1.77401 0
+-24.298 1.91137 0
+-24.9891 1.79803 0
+-25.5793 1.45664 0
+-26.0091 0.974916 0
+-26.2678 0.483018 0
+-26.3924 0.103317 0
+-26.4449 -0.0982732 0
+-26.4824 -0.130541 0
+-26.5359 -0.0575003 0
+-26.6077 0.0421972 0
+-26.6824 0.111422 0
+-26.7426 0.129647 0
+-26.779 0.106553 0
+-26.7925 0.0650493 0
+-26.7906 0.0258327 0
+-26.7823 -0.000130728 0
+-26.7743 -0.0114387 0
+-26.7698 -0.0121763 0
+-26.7693 -0.00768586 0
+-26.7718 -0.00206026 0
+-26.776 0.00255192 0
+-26.7808 0.00555985 0
+-26.7857 0.00721767 0
+-26.7904 0.00804593 0
+-26.7949 0.0085151 0
+-26.7995 0.00890707 0
+-26.8042 0.00925043 0
+-26.8094 0.0092872 0
+-26.8151 0.00845219 0
+-26.8212 0.00586379 0
+-26.8269 0.000389297 0
+-26.8308 -0.00911014 0
+-26.8305 -0.0232643 0
+-26.8225 -0.0413373 0
+-26.8031 -0.0600085 0
+-26.7691 -0.0719602 0
+-26.7206 -0.0648052 0
+-26.6643 -0.0214231 0
+-26.6182 0.0765505 0
+-26.6142 0.239788 0
+-26.6964 0.455036 0
+-26.9085 0.662449 0
+-27.2659 0.733625 0
+-27.7132 0.466773 0
+-28.0799 -0.3769 0
+-28.0636 -1.97649 0
+-27.2764 -4.30449 0
+-25.3726 -6.99165 0
+-22.2298 -9.31129 0
+-18.0936 -10.3777 0
+-13.5784 -9.54709 0
+-9.46942 -6.84348 0
+-6.395 -3.12424 0
+-4.54421 0.221761 0
+-3.60578 1.97218 0
+-2.96728 1.78473 0
+-1.81313 0.480462 0
+-0.882337 -0.227075 0
+-0.882337 0.510881 0
+-3.43893 -1.35787 0
+-7.19332 -2.42191 0
+-14.9483 -3.94095 0
+-15.3844 -5.72869 0
+-16.3674 -6.14637 0
+-18.2485 -3.80414 0
+-21.1076 0.767741 0
+-24.5622 5.72004 0
+-27.8903 9.0997 0
+-30.381 9.88995 0
+-31.6609 8.32047 0
+-31.8017 5.45817 0
+-31.1919 2.50859 0
+-30.3026 0.286487 0
+-29.4954 -0.943013 0
+-28.9475 -1.32774 0
+-28.6771 -1.18958 0
+-28.6147 -0.835582 0
+-28.6684 -0.470927 0
+-28.7632 -0.192835 0
+-28.8532 -0.0223507 0
+-28.9186 0.058763 0
+-28.9569 0.0809653 0
+-28.9735 0.0720585 0
+-28.9764 0.0516347 0
+-28.9725 0.0310123 0
+-28.9669 0.0153378 0
+-28.9622 0.00583378 0
+-28.9597 0.00161945 0
+-28.9596 0.00108138 0
+-28.9616 0.00265956 0
+-28.9651 0.0051036 0
+-28.9697 0.00755136 0
+-28.9748 0.00956491 0
+-28.9801 0.0110168 0
+-28.9854 0.0119467 0
+-28.9904 0.0126044 0
+-28.9949 0.0135691 0
+-28.9992 0.0157283 0
+-29.0039 0.0200892 0
+-29.0105 0.0272867 0
+-29.0213 0.0365107 0
+-29.0383 0.0441465 0
+-29.0612 0.0433178 0
+-29.0856 0.0258028 0
+-29.102 -0.0129424 0
+-29.0972 -0.0669896 0
+-29.0599 -0.116002 0
+-28.9871 -0.130802 0
+-28.8864 -0.0916815 0
+-28.7692 -0.0129505 0
+-28.6366 0.0431708 0
+-28.466 -0.0187529 0
+-28.2118 -0.280925 0
+-27.8245 -0.755941 0
+-27.2829 -1.35846 0
+-26.6156 -1.93121 0
+-25.896 -2.31444 0
+-25.2137 -2.4133 0
+-24.6405 -2.21898 0
+-24.2174 -1.77886 0
+-23.9629 -1.15436 0
+-23.8871 -0.405057 0
+-23.9971 0.404297 0
+-24.2968 1.20036 0
+-24.7843 1.9048 0
+-25.4441 2.43376 0
+-26.2305 2.69775 0
+-27.0603 2.62786 0
+-27.8311 2.22738 0
+-28.4594 1.60329 0
+-28.914 0.937607 0
+-29.2191 0.408377 0
+-29.4293 0.111946 0
+-29.5953 0.0354422 0
+-29.7419 0.0891215 0
+-29.8683 0.168585 0
+-29.9624 0.205523 0
+-30.0165 0.183697 0
+-30.0339 0.124037 0
+-30.0272 0.0583502 0
+-30.0109 0.00948551 0
+-29.9958 -0.0151814 0
+-29.9873 -0.0199889 0
+-29.9857 -0.0137632 0
+-29.9891 -0.00430025 0
+-29.995 0.00383827 0
+-30.0015 0.00910257 0
+-30.0077 0.0117575 0
+-30.0132 0.012717 0
+-30.018 0.0128606 0
+-30.0223 0.0128203 0
+-30.0264 0.0129622 0
+-30.0305 0.0133757 0
+-30.0351 0.0138622 0
+-30.0406 0.0139074 0
+-30.0473 0.0125925 0
+-30.0554 0.00852187 0
+-30.0645 -7.37899e-05 0
+-30.0728 -0.0149585 0
+-30.077 -0.0371211 0
+-30.0716 -0.0654323 0
+-30.0488 -0.0946812 0
+-30.0003 -0.113308 0
+-29.9201 -0.101707 0
+-29.8105 -0.0329644 0
+-29.6914 0.120641 0
+-29.6074 0.371049 0
+-29.6297 0.684722 0
+-29.8392 0.943165 0
+-30.2833 0.910858 0
+-30.9064 0.246168 0
+-31.4815 -1.4014 0
+-31.5942 -4.1918 0
+-30.7325 -7.85334 0
+-28.4903 -11.5534 0
+-24.8061 -14.0619 0
+-20.0902 -14.263 0
+-15.1194 -11.8143 0
+-10.7101 -7.53352 0
+-7.34897 -3.13938 0
+-5.01517 -0.361619 0
+-3.32178 0.0913366 0
+-1.57343 -0.91652 0
+-0.532241 -1.1106 0
+-0.532241 0.0708285 0
+-3.21552 -1.20675 0
+-6.82836 -2.12186 0
+-14.3361 -3.3594 0
+-15.4308 -4.63407 0
+-17.2699 -4.30728 0
+-19.9119 -1.1622 0
+-23.0776 3.93342 0
+-26.1445 8.78693 0
+-28.3982 11.3533 0
+-29.3881 10.8798 0
+-29.1365 8.06877 0
+-28.072 4.39371 0
+-26.7703 1.20686 0
+-25.6886 -0.795246 0
+-25.0367 -1.595 0
+-24.8001 -1.56435 0
+-24.8445 -1.14524 0
+-25.0175 -0.662576 0
+-25.2071 -0.28138 0
+-25.355 -0.0449947 0
+-25.4451 0.0677604 0
+-25.4853 0.0988899 0
+-25.4918 0.0875301 0
+-25.4809 0.0610967 0
+-25.4641 0.034846 0
+-25.4484 0.0152366 0
+-25.4368 0.00369221 0
+-25.43 -0.00094357 0
+-25.4275 -0.000899086 0
+-25.4282 0.00169899 0
+-25.4309 0.00534965 0
+-25.4348 0.0090274 0
+-25.4394 0.0120846 0
+-25.4442 0.0143433 0
+-25.449 0.0158907 0
+-25.4539 0.016777 0
+-25.4585 0.0171446 0
+-25.4624 0.0175188 0
+-25.4655 0.0188288 0
+-25.4678 0.0223864 0
+-25.4703 0.029731 0
+-25.4753 0.0415089 0
+-25.4865 0.055295 0
+-25.507 0.0637808 0
+-25.5365 0.0553165 0
+-25.568 0.0185102 0
+-25.5859 -0.0490376 0
+-25.5696 -0.132351 0
+-25.4999 -0.200493 0
+-25.3663 -0.225333 0
+-25.1663 -0.212903 0
+-24.8967 -0.226449 0
+-24.541 -0.374487 0
+-24.068 -0.753943 0
+-23.4498 -1.37425 0
+-22.6918 -2.11647 0
+-21.8533 -2.76972 0
+-21.0355 -3.1323 0
+-20.3394 -3.10942 0
+-19.8225 -2.73585 0
+-19.4873 -2.11416 0
+-19.3066 -1.33512 0
+-19.2572 -0.454427 0
+-19.3332 0.480183 0
+-19.5472 1.41437 0
+-19.9294 2.28699 0
+-20.512 3.01633 0
+-21.2921 3.47787 0
+-22.2046 3.54032 0
+-23.1369 3.15963 0
+-23.9783 2.44474 0
+-24.6657 1.62503 0
+-25.1943 0.936972 0
+-25.5949 0.512497 0
+-25.9009 0.34144 0
+-26.1298 0.317998 0
+-26.2851 0.323938 0
+-26.3698 0.290247 0
+-26.396 0.2098 0
+-26.3844 0.112504 0
+-26.358 0.031951 0
+-26.3338 -0.0147279 0
+-26.3199 -0.0291336 0
+-26.3166 -0.0232078 0
+-26.3207 -0.00970304 0
+-26.328 0.0030062 0
+-26.3357 0.0115241 0
+-26.3424 0.0157876 0
+-26.3478 0.0171485 0
+-26.3521 0.0170243 0
+-26.3556 0.0163648 0
+-26.3585 0.0157264 0
+-26.361 0.0154355 0
+-26.3632 0.0155986 0
+-26.3654 0.0161096 0
+-26.3682 0.0166607 0
+-26.3722 0.0165877 0
+-26.3783 0.0146469 0
+-26.3873 0.00896466 0
+-26.3995 -0.00281539 0
+-26.4135 -0.0231284 0
+-26.4254 -0.0534911 0
+-26.4275 -0.0926425 0
+-26.4069 -0.133873 0
+-26.3467 -0.161846 0
+-26.2297 -0.150059 0
+-26.0469 -0.0621248 0
+-25.8132 0.137395 0
+-25.5839 0.455432 0
+-25.4627 0.821925 0
+-25.5818 1.02999 0
+-26.0381 0.702474 0
+-26.7907 -0.648832 0
+-27.5686 -3.41393 0
+-27.8689 -7.55298 0
+-27.1068 -12.3156 0
+-24.8867 -16.282 0
+-21.2538 -17.8959 0
+-16.7424 -16.3256 0
+-12.1523 -12.1236 0
+-8.17317 -7.11855 0
+-5.11191 -3.42288 0
+-2.91712 -2.10345 0
+-1.05238 -2.33128 0
+-0.169398 -1.78596 0
+-0.169398 -0.12224 0
+-2.83659 -1.01153 0
+-6.08074 -1.73662 0
+-12.8117 -2.63304 0
+-14.1188 -3.32698 0
+-16.1188 -2.30725 0
+-18.6023 1.32121 0
+-21.0459 6.37701 0
+-22.7856 10.5265 0
+-23.3342 11.9019 0
+-22.6469 10.1925 0
+-21.1388 6.56064 0
+-19.4475 2.7024 0
+-18.1156 -0.125041 0
+-17.3929 -1.51796 0
+-17.2347 -1.75327 0
+-17.4325 -1.36657 0
+-17.7611 -0.816588 0
+-18.0651 -0.358677 0
+-18.2749 -0.0715659 0
+-18.3842 0.0643019 0
+-18.4173 0.100838 0
+-18.4053 0.0868549 0
+-18.374 0.0561905 0
+-18.3402 0.0272684 0
+-18.3123 0.00694856 0
+-18.2929 -0.00418161 0
+-18.2815 -0.00773893 0
+-18.2763 -0.00609147 0
+-18.2754 -0.00184294 0
+-18.2769 0.00312663 0
+-18.2795 0.00796896 0
+-18.2826 0.0121614 0
+-18.2859 0.015297 0
+-18.289 0.0174977 0
+-18.2923 0.0191275 0
+-18.2957 0.0201824 0
+-18.2992 0.0205857 0
+-18.3024 0.0207217 0
+-18.3048 0.0212939 0
+-18.3059 0.0233802 0
+-18.3051 0.0289636 0
+-18.3038 0.0402344 0
+-18.3055 0.0569645 0
+-18.3153 0.0735584 0
+-18.3377 0.077665 0
+-18.3716 0.0524193 0
+-18.4053 -0.0153534 0
+-18.4144 -0.123286 0
+-18.3661 -0.248726 0
+-18.2283 -0.363159 0
+-17.9763 -0.464946 0
+-17.5937 -0.609041 0
+-17.0677 -0.900564 0
+-16.3877 -1.43396 0
+-15.5587 -2.20323 0
+-14.6244 -3.0508 0
+-13.6799 -3.71425 0
+-12.8522 -3.9601 0
+-12.2475 -3.71416 0
+-11.8979 -3.08549 0
+-11.7495 -2.26263 0
+-11.7082 -1.37642 0
+-11.7051 -0.457612 0
+-11.716 0.491094 0
+-11.7652 1.46349 0
+-11.926 2.44782 0
+-12.3015 3.39176 0
+-12.9518 4.12821 0
+-13.8436 4.43205 0
+-14.8623 4.17835 0
+-15.8718 3.45422 0
+-16.7702 2.52343 0
+-17.5102 1.67701 0
+-18.0852 1.08744 0
+-18.5048 0.761045 0
+-18.7821 0.595359 0
+-18.9348 0.476618 0
+-18.99 0.345409 0
+-18.9833 0.203098 0
+-18.9505 0.0796901 0
+-18.918 -0.000465371 0
+-18.899 -0.0337901 0
+-18.8946 -0.0335517 0
+-18.8998 -0.0179724 0
+-18.9087 -0.000790943 0
+-18.9173 0.0115594 0
+-18.9238 0.0180597 0
+-18.9283 0.0202405 0
+-18.9313 0.0201486 0
+-18.9335 0.0192259 0
+-18.9352 0.0181032 0
+-18.9365 0.0170555 0
+-18.9374 0.01631 0
+-18.9377 0.0159498 0
+-18.9376 0.0159158 0
+-18.937 0.0161398 0
+-18.9368 0.0163579 0
+-18.9379 0.0157539 0
+-18.9418 0.0128656 0
+-18.9502 0.00559017 0
+-18.9645 -0.00886586 0
+-18.9844 -0.0335906 0
+-19.0063 -0.0707359 0
+-19.0207 -0.119507 0
+-19.0094 -0.173131 0
+-18.9447 -0.214707 0
+-18.793 -0.213811 0
+-18.5269 -0.128752 0
+-18.1485 0.077 0
+-17.7195 0.392937 0
+-17.3793 0.689822 0
+-17.3204 0.643607 0
+-17.6984 -0.270855 0
+-18.4949 -2.61746 0
+-19.4119 -6.63593 0
+-19.9021 -11.8254 0
+-19.3792 -16.8049 0
+-17.5216 -19.7535 0
+-14.4776 -19.3697 0
+-10.8144 -15.7868 0
+-7.23748 -10.6955 0
+-4.28255 -6.37781 0
+-2.2041 -4.1819 0
+-0.577984 -3.41156 0
+0.0394163 -2.14474 0
+0.0394163 -0.109583 0
+-2.42102 -0.82096 0
+-5.19776 -1.36502 0
+-10.9056 -1.95164 0
+-12.078 -2.15456 0
+-13.7153 -0.670047 0
+-15.4286 3.0345 0
+-16.6252 7.57359 0
+-16.7973 10.6986 0
+-15.814 10.9186 0
+-14.0192 8.39765 0
+-12.054 4.59544 0
+-10.5247 1.17304 0
+-9.73842 -0.911294 0
+-9.64984 -1.60656 0
+-9.99348 -1.40965 0
+-10.4725 -0.887609 0
+-10.8838 -0.405213 0
+-11.1462 -0.0963079 0
+-11.2649 0.0470546 0
+-11.2833 0.0827295 0
+-11.2487 0.0662378 0
+-11.1961 0.0342345 0
+-11.146 0.00601988 0
+-11.1073 -0.0113798 0
+-11.0818 -0.0186297 0
+-11.067 -0.0189852 0
+-11.0598 -0.0148997 0
+-11.0576 -0.00833527 0
+-11.058 -0.00149199 0
+-11.0592 0.00440035 0
+-11.0607 0.00945311 0
+-11.0622 0.013642 0
+-11.0635 0.0165641 0
+-11.0646 0.0185744 0
+-11.0658 0.0203777 0
+-11.0675 0.0218389 0
+-11.0695 0.0226021 0
+-11.0719 0.0230414 0
+-11.0742 0.0235924 0
+-11.0754 0.0245841 0
+-11.0741 0.0276902 0
+-11.0699 0.0359868 0
+-11.0642 0.0512639 0
+-11.0614 0.0707984 0
+-11.0684 0.0846063 0
+-11.0901 0.0740922 0
+-11.1222 0.016737 0
+-11.144 -0.101438 0
+-11.1173 -0.275447 0
+-10.9927 -0.487829 0
+-10.7221 -0.735536 0
+-10.2716 -1.05957 0
+-9.62852 -1.54363 0
+-8.80572 -2.25679 0
+-7.84822 -3.16077 0
+-6.84337 -4.05569 0
+-5.9202 -4.63747 0
+-5.22112 -4.65923 0
+-4.84562 -4.08972 0
+-4.7917 -3.13946 0
+-4.93859 -2.11578 0
+-5.10393 -1.21113 0
+-5.16955 -0.392037 0
+-5.09438 0.41589 0
+-4.91163 1.2807 0
+-4.74029 2.27646 0
+-4.77619 3.42764 0
+-5.15479 4.50679 0
+-5.88435 5.16159 0
+-6.86174 5.15574 0
+-7.93519 4.52767 0
+-8.96493 3.55315 0
+-9.8538 2.56588 0
+-10.5497 1.78329 0
+-11.0366 1.24795 0
+-11.3277 0.886485 0
+-11.4603 0.60921 0
+-11.4871 0.372262 0
+-11.4626 0.178544 0
+-11.4284 0.0454877 0
+-11.4067 -0.0221529 0
+-11.4022 -0.0383 0
+-11.4094 -0.0263 0
+-11.4206 -0.00677592 0
+-11.4303 0.00891484 0
+-11.4366 0.0178555 0
+-11.4399 0.0213163 0
+-11.4412 0.0215963 0
+-11.4418 0.0206967 0
+-11.4422 0.0196432 0
+-11.4426 0.0185249 0
+-11.4429 0.0173058 0
+-11.4428 0.0161904 0
+-11.442 0.0152335 0
+-11.4404 0.0143176 0
+-11.4378 0.0135347 0
+-11.4345 0.0129793 0
+-11.4309 0.0122337 0
+-11.4285 0.0103964 0
+-11.429 0.00615724 0
+-11.4353 -0.00262718 0
+-11.4498 -0.0190634 0
+-11.4739 -0.046594 0
+-11.5053 -0.0881562 0
+-11.5337 -0.14472 0
+-11.5364 -0.211982 0
+-11.4746 -0.275636 0
+-11.2955 -0.307832 0
+-10.9481 -0.270431 0
+-10.4172 -0.13794 0
+-9.76995 0.042553 0
+-9.1835 0.0571517 0
+-8.91081 -0.543541 0
+-9.16039 -2.36789 0
+-9.93111 -5.86521 0
+-10.9119 -10.8446 0
+-11.5565 -16.1604 0
+-11.3362 -19.9737 0
+-10.0304 -20.6755 0
+-7.85551 -17.9617 0
+-5.34745 -13.2035 0
+-3.09807 -8.62719 0
+-1.54464 -5.73533 0
+-0.294783 -4.02339 0
+0.0836639 -2.21367 0
+0.0836639 0.0251893 0
+-2.03272 -0.659176 0
+-4.3382 -1.05723 0
+-9.00652 -1.41109 0
+-9.87434 -1.28675 0
+-10.9273 0.382877 0
+-11.7103 3.81745 0
+-11.7146 7.57786 0
+-10.6977 9.68174 0
+-8.87005 9.09092 0
+-6.80874 6.33633 0
+-5.15021 2.93689 0
+-4.27551 0.298331 0
+-4.18562 -1.00118 0
+-4.60219 -1.19 0
+-5.17713 -0.834721 0
+-5.66093 -0.403822 0
+-5.95509 -0.111067 0
+-6.07284 0.0214301 0
+-6.0742 0.04841 0
+-6.01987 0.0283841 0
+-5.95178 -0.00186412 0
+-5.89162 -0.0259339 0
+-5.84715 -0.0384659 0
+-5.81864 -0.0398952 0
+-5.80269 -0.0345894 0
+-5.7948 -0.0268855 0
+-5.79155 -0.0181621 0
+-5.79087 -0.00903101 0
+-5.79112 -0.0012479 0
+-5.79121 0.0044834 0
+-5.79105 0.00927968 0
+-5.79085 0.0134349 0
+-5.79046 0.0161725 0
+-5.7899 0.0180039 0
+-5.78962 0.0200904 0
+-5.78985 0.0220644 0
+-5.79048 0.0232261 0
+-5.79168 0.024233 0
+-5.79359 0.025492 0
+-5.79537 0.0263577 0
+-5.79535 0.0276604 0
+-5.7919 0.0325307 0
+-5.78423 0.0435907 0
+-5.77386 0.0604177 0
+-5.76623 0.0769701 0
+-5.76893 0.0767937 0
+-5.78438 0.0321721 0
+-5.79974 -0.0860833 0
+-5.77984 -0.295351 0
+-5.66841 -0.599275 0
+-5.40124 -1.00272 0
+-4.9285 -1.53232 0
+-4.23642 -2.23573 0
+-3.35983 -3.1334 0
+-2.38471 -4.13593 0
+-1.44128 -4.99917 0
+-0.683413 -5.39539 0
+-0.249548 -5.09316 0
+-0.211191 -4.12813 0
+-0.527089 -2.82362 0
+-1.0211 -1.62182 0
+-1.40502 -0.827247 0
+-1.54177 -0.25533 0
+-1.38962 0.263708 0
+-0.975024 0.86608 0
+-0.430295 1.73171 0
+-0.0613229 3.05865 0
+-0.0662204 4.51167 0
+-0.500664 5.59603 0
+-1.29509 5.95016 0
+-2.3023 5.53487 0
+-3.35337 4.60422 0
+-4.30182 3.51433 0
+-5.04962 2.53109 0
+-5.55734 1.75567 0
+-5.84073 1.16987 0
+-5.95505 0.723534 0
+-5.97111 0.388324 0
+-5.95094 0.158369 0
+-5.93276 0.027308 0
+-5.92989 -0.025021 0
+-5.93954 -0.0286428 0
+-5.95346 -0.0123887 0
+-5.96495 0.00471878 0
+-5.97152 0.0154837 0
+-5.97394 0.0202781 0
+-5.97405 0.0214222 0
+-5.97327 0.0208235 0
+-5.97249 0.0199135 0
+-5.97207 0.0192234 0
+-5.97188 0.0183361 0
+-5.9716 0.0170211 0
+-5.97102 0.0156195 0
+-5.96997 0.0141749 0
+-5.96804 0.0123866 0
+-5.96491 0.0104081 0
+-5.96051 0.0085823 0
+-5.95494 0.00665801 0
+-5.94863 0.00408576 0
+-5.94285 0.000377366 0
+-5.93985 -0.00562373 0
+-5.94273 -0.0161831 0
+-5.95514 -0.0341841 0
+-5.9801 -0.0631944 0
+-6.01691 -0.107909 0
+-6.05595 -0.172947 0
+-6.07161 -0.259979 0
+-6.0153 -0.364139 0
+-5.81569 -0.470043 0
+-5.39872 -0.554907 0
+-4.73544 -0.620734 0
+-3.90384 -0.774445 0
+-3.12082 -1.32656 0
+-2.68939 -2.79931 0
+-2.84757 -5.70703 0
+-3.58999 -10.1022 0
+-4.59437 -15.156 0
+-5.34458 -19.2235 0
+-5.40256 -20.6175 0
+-4.65506 -18.7092 0
+-3.36937 -14.4892 0
+-2.03675 -9.95981 0
+-1.13299 -6.63909 0
+-0.215604 -4.2115 0
+0.0177993 -2.08639 0
+0.0177993 0.206276 0
+-1.69643 -0.532286 0
+-3.58206 -0.825088 0
+-7.33423 -1.02913 0
+-7.88118 -0.739809 0
+-8.38357 0.885243 0
+-8.4152 3.84906 0
+-7.63326 6.7959 0
+-6.05498 8.10344 0
+-4.10787 7.1438 0
+-2.40403 4.63249 0
+-1.40303 1.93588 0
+-1.20298 0.098279 0
+-1.57327 -0.630904 0
+-2.15357 -0.609702 0
+-2.65626 -0.332045 0
+-2.95675 -0.103341 0
+-3.06602 -0.00181494 0
+-3.05368 0.00908404 0
+-2.98831 -0.0169759 0
+-2.91459 -0.0453386 0
+-2.85359 -0.0628812 0
+-2.81049 -0.0690437 0
+-2.78328 -0.0656833 0
+-2.76812 -0.0550629 0
+-2.76073 -0.0419845 0
+-2.75721 -0.0304177 0
+-2.75539 -0.0199934 0
+-2.75451 -0.0099154 0
+-2.75377 -0.0019982 0
+-2.75249 0.00319846 0
+-2.751 0.00778019 0
+-2.74976 0.0121838 0
+-2.7485 0.014904 0
+-2.74709 0.0165899 0
+-2.74603 0.0190271 0
+-2.74547 0.0214914 0
+-2.74506 0.0228136 0
+-2.74506 0.0242236 0
+-2.74601 0.0264419 0
+-2.74756 0.0279014 0
+-2.74845 0.0285443 0
+-2.74712 0.0311944 0
+-2.74156 0.0380233 0
+-2.73033 0.0491815 0
+-2.71543 0.0620598 0
+-2.70293 0.064292 0
+-2.69792 0.0271525 0
+-2.69473 -0.0892825 0
+-2.66654 -0.323546 0
+-2.56073 -0.705094 0
+-2.3086 -1.25487 0
+-1.85206 -1.98889 0
+-1.17662 -2.9112 0
+-0.334065 -3.97599 0
+0.556059 -5.0261 0
+1.32906 -5.77223 0
+1.81956 -5.88595 0
+1.9173 -5.19096 0
+1.61133 -3.82222 0
+0.995216 -2.20755 0
+0.245975 -0.872608 0
+-0.23732 -0.343979 0
+-0.397351 -0.0953227 0
+-0.228646 0.0949828 0
+0.281597 0.355818 0
+1.08939 0.923895 0
+1.77681 2.37121 0
+2.14189 4.14657 0
+2.06861 5.66929 0
+1.55884 6.45993 0
+0.729435 6.36426 0
+-0.236273 5.56993 0
+-1.15229 4.43035 0
+-1.8834 3.2622 0
+-2.37268 2.24495 0
+-2.63796 1.43514 0
+-2.74416 0.829732 0
+-2.76725 0.411417 0
+-2.76557 0.156685 0
+-2.76827 0.0300174 0
+-2.78067 -0.0126222 0
+-2.79696 -0.0123522 0
+-2.81053 0.00117604 0
+-2.81827 0.0124606 0
+-2.82077 0.0179824 0
+-2.8204 0.0199065 0
+-2.81916 0.0201843 0
+-2.81793 0.0196001 0
+-2.81704 0.0190191 0
+-2.81656 0.0187459 0
+-2.81624 0.0180149 0
+-2.81574 0.0165169 0
+-2.81498 0.0148684 0
+-2.81392 0.0131108 0
+-2.81219 0.0106547 0
+-2.80945 0.00766665 0
+-2.80555 0.00468109 0
+-2.80027 0.0013777 0
+-2.79342 -0.00275594 0
+-2.78542 -0.00762927 0
+-2.77742 -0.0136257 0
+-2.77137 -0.0222333 0
+-2.77037 -0.0351803 0
+-2.77872 -0.0548441 0
+-2.80052 -0.0861105 0
+-2.83661 -0.136858 0
+-2.87893 -0.217657 0
+-2.90085 -0.342217 0
+-2.84631 -0.524583 0
+-2.62948 -0.771741 0
+-2.16184 -1.08837 0
+-1.41371 -1.52258 0
+-0.486326 -2.25395 0
+0.3642 -3.64984 0
+0.808128 -6.15096 0
+0.619435 -9.91348 0
+-0.154655 -14.3819 0
+-1.16968 -18.2085 0
+-1.9576 -19.8296 0
+-2.19792 -18.4689 0
+-1.89976 -14.7874 0
+-1.37314 -10.4864 0
+-1.02542 -6.98681 0
+-0.298451 -4.11329 0
+-0.1039 -1.8671 0
+-0.1039 0.382006 0
+-1.4163 -0.436634 0
+-2.95553 -0.658865 0
+-5.96954 -0.779024 0
+-6.26595 -0.44341 0
+-6.38263 1.0019 0
+-5.97637 3.44279 0
+-4.8745 5.69402 0
+-3.26919 6.49811 0
+-1.65089 5.52548 0
+-0.521311 3.5029 0
+-0.110904 1.52547 0
+-0.303862 0.29123 0
+-0.782433 -0.152341 0
+-1.24194 -0.150205 0
+-1.52407 -0.0499248 0
+-1.62075 -0.00666583 0
+-1.60025 -0.0223253 0
+-1.53392 -0.0572588 0
+-1.465 -0.0859033 0
+-1.41117 -0.0991781 0
+-1.3754 -0.098665 0
+-1.35387 -0.0905834 0
+-1.34165 -0.077908 0
+-1.33535 -0.0613786 0
+-1.33229 -0.0450472 0
+-1.33019 -0.0325278 0
+-1.32824 -0.0219582 0
+-1.32666 -0.0114946 0
+-1.32513 -0.00353979 0
+-1.32311 0.00117462 0
+-1.32109 0.00574732 0
+-1.31958 0.0106668 0
+-1.31816 0.0134819 0
+-1.31659 0.0150082 0
+-1.31537 0.0178029 0
+-1.31457 0.0206834 0
+-1.31363 0.0218678 0
+-1.31271 0.0233028 0
+-1.31252 0.0262468 0
+-1.31299 0.0283568 0
+-1.31343 0.0289835 0
+-1.31312 0.0308756 0
+-1.31024 0.0351437 0
+-1.30196 0.0408868 0
+-1.28713 0.0472223 0
+-1.26834 0.0455044 0
+-1.24944 0.00824535 0
+-1.22851 -0.110226 0
+-1.18777 -0.364297 0
+-1.08519 -0.807676 0
+-0.858905 -1.48117 0
+-0.452157 -2.39566 0
+0.148875 -3.51226 0
+0.884825 -4.71199 0
+1.61919 -5.76052 0
+2.16993 -6.32304 0
+2.3731 -6.08919 0
+2.15902 -4.97693 0
+1.60547 -3.26872 0
+0.912362 -1.51447 0
+0.199783 -0.160044 0
+-0.123903 -0.0203033 0
+-0.216355 -0.00287852 0
+-0.124104 0.00272406 0
+0.211075 0.020632 0
+0.967869 0.167093 0
+1.73028 1.60879 0
+2.35579 3.52105 0
+2.61339 5.41167 0
+2.40837 6.66494 0
+1.81371 6.95892 0
+1.01182 6.37181 0
+0.208121 5.23404 0
+-0.443856 3.91417 0
+-0.879685 2.68078 0
+-1.11704 1.6725 0
+-1.21946 0.932153 0
+-1.25556 0.447516 0
+-1.27241 0.173538 0
+-1.28951 0.0471122 0
+-1.30796 0.00583257 0
+-1.32329 0.00297605 0
+-1.33273 0.0106142 0
+-1.33652 0.0162506 0
+-1.33677 0.0182373 0
+-1.33587 0.019004 0
+-1.33508 0.0193978 0
+-1.33453 0.0190483 0
+-1.33413 0.0186197 0
+-1.33391 0.0185265 0
+-1.33366 0.0177627 0
+-1.33311 0.0159673 0
+-1.33233 0.0140887 0
+-1.33138 0.0121619 0
+-1.32998 0.0092497 0
+-1.32785 0.00553684 0
+-1.32492 0.00175775 0
+-1.32094 -0.00260625 0
+-1.31545 -0.00824846 0
+-1.30835 -0.0147293 0
+-1.29998 -0.0219991 0
+-1.29098 -0.0312331 0
+-1.28284 -0.0433136 0
+-1.2785 -0.0591918 0
+-1.28197 -0.0826339 0
+-1.2975 -0.121329 0
+-1.32733 -0.187834 0
+-1.36529 -0.304249 0
+-1.38449 -0.50539 0
+-1.32432 -0.831911 0
+-1.09263 -1.32006 0
+-0.602102 -2.01311 0
+0.156971 -3.01302 0
+1.04582 -4.53869 0
+1.7787 -6.88384 0
+2.04103 -10.1758 0
+1.678 -14.0189 0
+0.822123 -17.3526 0
+-0.158438 -18.849 0
+-0.879999 -17.7474 0
+-1.17871 -14.4887 0
+-1.18627 -10.4789 0
+-1.19651 -6.97657 0
+-0.493372 -3.88364 0
+-0.248145 -1.64051 0
+-0.248145 0.523333 0
+-1.18742 -0.36514 0
+-2.4534 -0.541492 0
+-4.90304 -0.620181 0
+-5.04223 -0.304225 0
+-4.95595 0.915604 0
+-4.39636 2.88319 0
+-3.31533 4.61297 0
+-1.9739 5.15667 0
+-0.808979 4.36055 0
+-0.159031 2.85295 0
+-0.0749353 1.44136 0
+-0.349755 0.566042 0
+-0.701147 0.199042 0
+-0.940091 0.0887299 0
+-1.02248 0.0324533 0
+-0.998777 -0.0303779 0
+-0.937255 -0.0838574 0
+-0.879553 -0.11497 0
+-0.838396 -0.127071 0
+-0.812976 -0.124607 0
+-0.799113 -0.112538 0
+-0.792014 -0.0976924 0
+-0.78809 -0.0818415 0
+-0.785844 -0.0636327 0
+-0.784376 -0.0465247 0
+-0.782651 -0.0342613 0
+-0.780613 -0.0240048 0
+-0.778884 -0.0132312 0
+-0.777285 -0.00514679 0
+-0.775339 -0.000778245 0
+-0.7735 0.00390059 0
+-0.772239 0.0093992 0
+-0.771078 0.0123139 0
+-0.76972 0.0136437 0
+-0.768661 0.0167376 0
+-0.767923 0.0199394 0
+-0.766868 0.0208063 0
+-0.765531 0.0219597 0
+-0.764496 0.0252059 0
+-0.763705 0.0275601 0
+-0.762835 0.0281077 0
+-0.761915 0.0299497 0
+-0.760049 0.0332716 0
+-0.754622 0.035453 0
+-0.743174 0.0357682 0
+-0.72538 0.0277039 0
+-0.70237 -0.0147715 0
+-0.673113 -0.139492 0
+-0.627132 -0.410287 0
+-0.535597 -0.899223 0
+-0.35101 -1.66577 0
+-0.0260699 -2.72062 0
+0.451761 -3.99013 0
+1.02833 -5.2886 0
+1.57514 -6.30739 0
+1.91986 -6.66783 0
+1.9127 -6.0821 0
+1.50635 -4.57064 0
+0.816777 -2.57919 0
+0.147721 -0.845432 0
+0.0120449 -0.0243688 0
+-0.00609174 -0.00216685 0
+-0.00875796 -0.000212451 0
+-0.00622995 0.000195908 0
+0.0122623 0.00213957 0
+0.154593 0.0247622 0
+0.877754 0.885622 0
+1.63852 2.76027 0
+2.09635 4.95383 0
+2.11467 6.6466 0
+1.74136 7.33223 0
+1.14242 6.97075 0
+0.511542 5.86492 0
+-0.00730337 4.43302 0
+-0.355556 3.02903 0
+-0.549112 1.86605 0
+-0.640759 1.0238 0
+-0.68325 0.490007 0
+-0.70941 0.199698 0
+-0.730949 0.0686516 0
+-0.748094 0.0229776 0
+-0.759309 0.0141918 0
+-0.765053 0.0163586 0
+-0.76712 0.0183172 0
+-0.767487 0.0186046 0
+-0.76764 0.0191576 0
+-0.768036 0.0197942 0
+-0.768379 0.0193914 0
+-0.768517 0.0187579 0
+-0.768577 0.0185866 0
+-0.768471 0.0176569 0
+-0.768027 0.0155233 0
+-0.767376 0.0134372 0
+-0.766635 0.011421 0
+-0.765585 0.0082 0
+-0.764043 0.00399466 0
+-0.762036 -0.00024937 0
+-0.759372 -0.00527064 0
+-0.755605 -0.0120157 0
+-0.750507 -0.0198277 0
+-0.744059 -0.028448 0
+-0.736192 -0.0391004 0
+-0.727207 -0.0522987 0
+-0.718366 -0.068033 0
+-0.711846 -0.0891544 0
+-0.71068 -0.122496 0
+-0.718941 -0.179573 0
+-0.739873 -0.283318 0
+-0.768512 -0.476751 0
+-0.778102 -0.822321 0
+-0.707907 -1.39025 0
+-0.471467 -2.24955 0
+-0.00403408 -3.48045 0
+0.661199 -5.20392 0
+1.34384 -7.56648 0
+1.7621 -10.5941 0
+1.6826 -13.9394 0
+1.08376 -16.7537 0
+0.196926 -17.9622 0
+-0.632555 -16.9179 0
+-1.17032 -13.9509 0
+-1.4257 -10.2235 0
+-1.58758 -6.81469 0
+-0.760684 -3.65109 0
+-0.399845 -1.46334 0
+-0.399845 0.617032 0
+-1.00171 -0.310947 0
+-2.05594 -0.457079 0
+-4.08204 -0.516811 0
+-4.14147 -0.244799 0
+-3.98923 0.763348 0
+-3.45844 2.3524 0
+-2.56642 3.72093 0
+-1.56023 4.15047 0
+-0.769714 3.57003 0
+-0.391464 2.47469 0
+-0.387605 1.4375 0
+-0.563693 0.742121 0
+-0.727612 0.362953 0
+-0.791813 0.152922 0
+-0.770051 0.0106812 0
+-0.715732 -0.0847065 0
+-0.668844 -0.130755 0
+-0.640917 -0.142907 0
+-0.627198 -0.140799 0
+-0.621327 -0.130488 0
+-0.619643 -0.114231 0
+-0.619619 -0.0977262 0
+-0.619635 -0.0818351 0
+-0.61943 -0.0638462 0
+-0.619003 -0.0469604 0
+-0.618019 -0.0352539 0
+-0.616657 -0.025375 0
+-0.615484 -0.0144122 0
+-0.614411 -0.00622763 0
+-0.613094 -0.0021024 0
+-0.611864 0.00266307 0
+-0.611056 0.00858452 0
+-0.610291 0.011542 0
+-0.609333 0.0126794 0
+-0.608551 0.0159495 0
+-0.607951 0.0193329 0
+-0.60701 0.0198591 0
+-0.605671 0.0206148 0
+-0.604258 0.0237866 0
+-0.602624 0.0259206 0
+-0.600551 0.0260287 0
+-0.598339 0.0277312 0
+-0.595816 0.0307428 0
+-0.591392 0.0310229 0
+-0.582903 0.0272723 0
+-0.568847 0.0136409 0
+-0.548591 -0.035035 0
+-0.521376 -0.166714 0
+-0.482457 -0.449216 0
+-0.41612 -0.965572 0
+-0.292639 -1.78927 0
+-0.0788235 -2.93446 0
+0.237364 -4.30636 0
+0.620568 -5.67186 0
+0.978689 -6.66558 0
+1.1851 -6.87432 0
+1.13357 -6.03065 0
+0.809492 -4.24662 0
+0.347906 -2.11764 0
+0.0223728 -0.51991 0
+0.0020056 -0.00400178 0
+2.85043e-05 -0.000189803 0
+-0.000165198 -1.87453e-05 0
+1.65857e-05 1.41243e-05 0
+0.00199359 0.000162519 0
+0.0231618 0.00359381 0
+0.374256 0.534523 0
+0.881666 2.25285 0
+1.24455 4.59093 0
+1.30901 6.58214 0
+1.08757 7.55366 0
+0.69705 7.36127 0
+0.278941 6.28302 0
+-0.0638351 4.77579 0
+-0.292863 3.25806 0
+-0.422371 1.99556 0
+-0.489004 1.09043 0
+-0.525777 0.52678 0
+-0.55099 0.22491 0
+-0.570184 0.0878464 0
+-0.583564 0.0363571 0
+-0.591582 0.0222104 0
+-0.595959 0.0207356 0
+-0.598428 0.0207864 0
+-0.600121 0.0202979 0
+-0.60164 0.0206772 0
+-0.603023 0.0211776 0
+-0.603995 0.020363 0
+-0.604525 0.0192886 0
+-0.604824 0.0188856 0
+-0.604913 0.0177458 0
+-0.604711 0.0153206 0
+-0.604338 0.0130646 0
+-0.603903 0.0109863 0
+-0.603265 0.00756121 0
+-0.602314 0.00304314 0
+-0.601107 -0.00145593 0
+-0.599535 -0.00684364 0
+-0.59727 -0.0142811 0
+-0.594113 -0.0229853 0
+-0.58996 -0.032601 0
+-0.584548 -0.0445129 0
+-0.577691 -0.059156 0
+-0.569702 -0.0760226 0
+-0.561341 -0.0975155 0
+-0.553772 -0.130065 0
+-0.549193 -0.184153 0
+-0.551444 -0.281067 0
+-0.564211 -0.463985 0
+-0.583513 -0.803019 0
+-0.584505 -1.38926 0
+-0.513677 -2.32038 0
+-0.307535 -3.68659 0
+0.0531121 -5.56457 0
+0.483021 -7.99639 0
+0.788776 -10.8998 0
+0.760759 -13.9114 0
+0.317534 -16.3105 0
+-0.41269 -17.2319 0
+-1.16149 -16.1691 0
+-1.70108 -13.4113 0
+-1.98707 -9.93749 0
+-2.14046 -6.66131 0
+-1.07618 -3.50297 0
+-0.555462 -1.3679 0
+-0.555462 0.658853 0
+-0.850748 -0.268855 0
+-1.74015 -0.394259 0
+-3.44494 -0.44504 0
+-3.47259 -0.217159 0
+-3.32942 0.62017 0
+-2.90625 1.92921 0
+-2.23935 3.05402 0
+-1.519 3.4301 0
+-0.965415 3.01644 0
+-0.684809 2.19407 0
+-0.627539 1.38022 0
+-0.663528 0.778102 0
+-0.687621 0.387037 0
+-0.667886 0.133178 0
+-0.624962 -0.0322513 0
+-0.587998 -0.121681 0
+-0.569255 -0.149507 0
+-0.564992 -0.14718 0
+-0.567194 -0.138607 0
+-0.571089 -0.126602 0
+-0.575144 -0.110186 0
+-0.578689 -0.0941898 0
+-0.581274 -0.07926 0
+-0.582946 -0.062183 0
+-0.58392 -0.0459948 0
+-0.58427 -0.0349119 0
+-0.584194 -0.0254596 0
+-0.583994 -0.0146204 0
+-0.583714 -0.00651508 0
+-0.583278 -0.00254551 0
+-0.582831 0.00220921 0
+-0.582505 0.00825175 0
+-0.582157 0.0111872 0
+-0.58169 0.0122061 0
+-0.58123 0.0154824 0
+-0.580755 0.0188516 0
+-0.580021 0.0191191 0
+-0.578924 0.0195126 0
+-0.577481 0.0223372 0
+-0.575526 0.0239594 0
+-0.572902 0.0233988 0
+-0.569736 0.024559 0
+-0.566044 0.0270448 0
+-0.561192 0.0261652 0
+-0.553978 0.020052 0
+-0.54315 0.00280606 0
+-0.528121 -0.050072 0
+-0.509542 -0.185301 0
+-0.488104 -0.470664 0
+-0.460411 -0.993278 0
+-0.41497 -1.83473 0
+-0.33425 -3.01521 0
+-0.20555 -4.43509 0
+-0.0358245 -5.84164 0
+0.140176 -6.84165 0
+0.268024 -7.00224 0
+0.298858 -6.06155 0
+0.222141 -4.16996 0
+0.0899749 -1.98551 0
+0.00310206 -0.433048 0
+0.000233139 -0.00113303 0
+2.02823e-05 2.3072e-05 0
+3.39756e-06 -1.83745e-06 0
+1.83224e-05 -7.89745e-07 0
+0.000225917 -4.51197e-05 0
+0.00320476 0.000614847 0
+0.0973811 0.440341 0
+0.244808 2.10542 0
+0.335567 4.50016 0
+0.310115 6.60758 0
+0.177693 7.68607 0
+-0.00924533 7.5482 0
+-0.190976 6.46475 0
+-0.32887 4.91368 0
+-0.414876 3.34407 0
+-0.462449 2.04313 0
+-0.490285 1.11827 0
+-0.510993 0.547487 0
+-0.528865 0.242783 0
+-0.543495 0.102476 0
+-0.554034 0.0468962 0
+-0.561025 0.0292014 0
+-0.565818 0.0255295 0
+-0.569466 0.0244339 0
+-0.57243 0.0232624 0
+-0.574852 0.0230999 0
+-0.576728 0.0230532 0
+-0.578023 0.0216588 0
+-0.578837 0.0201019 0
+-0.579351 0.0194002 0
+-0.579659 0.0180532 0
+-0.579779 0.0154411 0
+-0.579783 0.0130681 0
+-0.579725 0.0109284 0
+-0.579563 0.007399 0
+-0.579259 0.00273888 0
+-0.578831 -0.00188434 0
+-0.57822 -0.00745576 0
+-0.577255 -0.0152465 0
+-0.575787 -0.0244532 0
+-0.573689 -0.0347 0
+-0.570731 -0.0474712 0
+-0.56665 -0.063237 0
+-0.561357 -0.0813165 0
+-0.554986 -0.103887 0
+-0.547805 -0.137247 0
+-0.54037 -0.191588 0
+-0.534419 -0.287018 0
+-0.534037 -0.464367 0
+-0.544371 -0.792686 0
+-0.564443 -1.36919 0
+-0.576934 -2.30788 0
+-0.54888 -3.71465 0
+-0.457965 -5.65548 0
+-0.336142 -8.11821 0
+-0.289833 -10.9461 0
+-0.454385 -13.7469 0
+-0.893642 -15.8713 0
+-1.52397 -16.6016 0
+-2.14581 -15.5472 0
+-2.57571 -12.9814 0
+-2.7683 -9.74491 0
+-2.81648 -6.61312 0
+-1.43196 -3.48833 0
+-0.71923 -1.37028 0
+-0.71923 0.647843 0
+-0.727132 -0.235366 0
+-1.48591 -0.34615 0
+-2.93978 -0.392358 0
+-2.95687 -0.200083 0
+-2.84735 0.510645 0
+-2.53975 1.62159 0
+-2.06541 2.57968 0
+-1.54991 2.91459 0
+-1.12626 2.59278 0
+-0.854867 1.92267 0
+-0.712852 1.23819 0
+-0.641012 0.706253 0
+-0.594049 0.340066 0
+-0.557181 0.0963007 0
+-0.53305 -0.0563916 0
+-0.524028 -0.130711 0
+-0.526429 -0.147116 0
+-0.534359 -0.13926 0
+-0.543663 -0.129313 0
+-0.552349 -0.117927 0
+-0.559738 -0.102805 0
+-0.565853 -0.088084 0
+-0.570791 -0.0743313 0
+-0.574499 -0.0584835 0
+-0.577136 -0.0433664 0
+-0.579089 -0.0329677 0
+-0.58052 -0.0240364 0
+-0.581416 -0.0137322 0
+-0.581986 -0.00595273 0
+-0.582482 -0.00205576 0
+-0.582849 0.00256827 0
+-0.582988 0.00838439 0
+-0.58305 0.011243 0
+-0.583108 0.0122579 0
+-0.582993 0.0153607 0
+-0.582646 0.0184988 0
+-0.582163 0.0186295 0
+-0.581419 0.0187628 0
+-0.580139 0.0210513 0
+-0.578239 0.0220541 0
+-0.575696 0.02085 0
+-0.572298 0.021155 0
+-0.567865 0.0226057 0
+-0.562335 0.020629 0
+-0.55538 0.0130907 0
+-0.546572 -0.00600877 0
+-0.536676 -0.0599756 0
+-0.529116 -0.192868 0
+-0.530406 -0.469384 0
+-0.548655 -0.975041 0
+-0.58958 -1.79382 0
+-0.651205 -2.95361 0
+-0.720579 -4.36576 0
+-0.774595 -5.78767 0
+-0.783896 -6.83241 0
+-0.719502 -7.06671 0
+-0.565686 -6.21544 0
+-0.341497 -4.3942 0
+-0.119735 -2.2073 0
+-0.0033685 -0.549425 0
+-0.000172223 -0.00432948 0
+2.38423e-06 -0.000151555 0
+8.60447e-06 -8.06336e-06 0
+4.34371e-06 3.45257e-06 0
+-0.000165154 0.000124291 0
+-0.00347231 0.00392188 0
+-0.12718 0.564044 0
+-0.364284 2.34251 0
+-0.602615 4.73847 0
+-0.761901 6.76686 0
+-0.82178 7.74594 0
+-0.80156 7.52797 0
+-0.735524 6.39871 0
+-0.65692 4.83508 0
+-0.58997 3.27711 0
+-0.54688 2.00004 0
+-0.528465 1.09985 0
+-0.527895 0.546916 0
+-0.536154 0.251041 0
+-0.546447 0.112769 0
+-0.555542 0.0559915 0
+-0.562719 0.036378 0
+-0.568305 0.0311162 0
+-0.572782 0.0289107 0
+-0.576381 0.0268617 0
+-0.579125 0.025844 0
+-0.581105 0.0250329 0
+-0.582533 0.0230876 0
+-0.583561 0.02113 0
+-0.584266 0.0201048 0
+-0.584783 0.0185697 0
+-0.585241 0.0158993 0
+-0.585649 0.0134758 0
+-0.585996 0.011275 0
+-0.586348 0.00775066 0
+-0.586736 0.00312674 0
+-0.587106 -0.0015145 0
+-0.587431 -0.00713189 0
+-0.5877 -0.0149771 0
+-0.58781 -0.0243437 0
+-0.587599 -0.0349116 0
+-0.586934 -0.0481377 0
+-0.585613 -0.0645577 0
+-0.583358 -0.083572 0
+-0.580041 -0.107204 0
+-0.575753 -0.141536 0
+-0.570578 -0.196763 0
+-0.565001 -0.292596 0
+-0.561768 -0.4676 0
+-0.568028 -0.786427 0
+-0.594456 -1.34276 0
+-0.649649 -2.25269 0
+-0.734761 -3.62954 0
+-0.848856 -5.54139 0
+-1.00759 -7.95948 0
+-1.25658 -10.6971 0
+-1.65083 -13.3526 0
+-2.19808 -15.324 0
+-2.81235 -15.9873 0
+-3.33677 -15.0228 0
+-3.63816 -12.68 0
+-3.69635 -9.68671 0
+-3.60213 -6.70735 0
+-1.83418 -3.62702 0
+-0.901052 -1.4781 0
+-0.901052 0.582271 0
+-0.62491 -0.208129 0
+-1.27801 -0.308843 0
+-2.52976 -0.353704 0
+-2.54019 -0.189658 0
+-2.45856 0.429007 0
+-2.23871 1.40173 0
+-1.90297 2.24393 0
+-1.52584 2.53744 0
+-1.17994 2.24686 0
+-0.902526 1.64525 0
+-0.700154 1.03581 0
+-0.566653 0.572745 0
+-0.492204 0.265609 0
+-0.463569 0.0676565 0
+-0.464075 -0.0558939 0
+-0.477286 -0.117509 0
+-0.49239 -0.132021 0
+-0.506082 -0.125577 0
+-0.518824 -0.11658 0
+-0.530529 -0.10623 0
+-0.540467 -0.0928769 0
+-0.548765 -0.0797944 0
+-0.555812 -0.0672938 0
+-0.561411 -0.0528922 0
+-0.56564 -0.0391463 0
+-0.569122 -0.029494 0
+-0.571981 -0.0211844 0
+-0.573934 -0.0117867 0
+-0.575326 -0.00456878 0
+-0.57669 -0.000698606 0
+-0.577809 0.00368019 0
+-0.578401 0.00897065 0
+-0.578866 0.011701 0
+-0.57942 0.0128064 0
+-0.579652 0.0155865 0
+-0.579474 0.0183147 0
+-0.579269 0.0184184 0
+-0.578911 0.0183993 0
+-0.577909 0.0200436 0
+-0.576295 0.0204345 0
+-0.57421 0.0187591 0
+-0.57117 0.0181086 0
+-0.566734 0.0181636 0
+-0.561116 0.0150052 0
+-0.554549 0.0065175 0
+-0.547398 -0.0131666 0
+-0.542117 -0.0652631 0
+-0.545364 -0.18963 0
+-0.56943 -0.445327 0
+-0.632765 -0.911718 0
+-0.756412 -1.67019 0
+-0.953374 -2.75667 0
+-1.21369 -4.10548 0
+-1.49191 -5.5095 0
+-1.70402 -6.62037 0
+-1.74249 -7.02831 0
+-1.51857 -6.43944 0
+-1.03016 -4.88267 0
+-0.430584 -2.80692 0
+-0.0265941 -0.953427 0
+-0.00216271 -0.0287611 0
+-3.2546e-05 -0.0022818 0
+0.000133057 -0.00017373 0
+-2.06748e-05 0.000157112 0
+-0.00215107 0.0022546 0
+-0.0273852 0.0291558 0
+-0.456972 0.993625 0
+-1.10244 2.98797 0
+-1.62974 5.26576 0
+-1.86667 7.00377 0
+-1.81322 7.69249 0
+-1.56873 7.28348 0
+-1.2556 6.08558 0
+-0.968676 4.54815 0
+-0.756471 3.06491 0
+-0.626768 1.87034 0
+-0.563118 1.0362 0
+-0.541186 0.524985 0
+-0.539936 0.249791 0
+-0.546276 0.119109 0
+-0.554103 0.0638186 0
+-0.56114 0.0434152 0
+-0.566804 0.0367803 0
+-0.571293 0.0333998 0
+-0.574852 0.0304211 0
+-0.577491 0.0284826 0
+-0.579355 0.0268973 0
+-0.5808 0.0245322 0
+-0.581967 0.0222972 0
+-0.582817 0.020954 0
+-0.583508 0.0192615 0
+-0.584264 0.0166545 0
+-0.585043 0.0142544 0
+-0.585781 0.0120134 0
+-0.586639 0.00860752 0
+-0.587705 0.00419297 0
+-0.588868 -0.000352754 0
+-0.590124 -0.00587553 0
+-0.591609 -0.0134928 0
+-0.593265 -0.0226887 0
+-0.594911 -0.0332658 0
+-0.596508 -0.0465419 0
+-0.597949 -0.0631168 0
+-0.598854 -0.082668 0
+-0.598921 -0.107138 0
+-0.598228 -0.14223 0
+-0.596986 -0.198005 0
+-0.595778 -0.293805 0
+-0.597423 -0.465956 0
+-0.610223 -0.773627 0
+-0.650708 -1.30228 0
+-0.742941 -2.16046 0
+-0.913241 -3.45924 0
+-1.18409 -5.27054 0
+-1.57234 -7.57124 0
+-2.08824 -10.1812 0
+-2.72354 -12.7173 0
+-3.42665 -14.6209 0
+-4.08856 -15.3254 0
+-4.57213 -14.5393 0
+-4.7831 -12.4691 0
+-4.72867 -9.74114 0
+-4.50397 -6.93204 0
+-2.29769 -3.91676 0
+-1.11398 -1.69463 0
+-1.11398 0.457726 0
+-0.539401 -0.185343 0
+-1.10557 -0.279704 0
+-2.19116 -0.32717 0
+-2.19137 -0.189458 0
+-2.11947 0.357099 0
+-1.9481 1.23035 0
+-1.69794 1.99377 0
+-1.41508 2.25457 0
+-1.13502 1.96679 0
+-0.876546 1.38677 0
+-0.657432 0.816693 0
+-0.498726 0.414031 0
+-0.411617 0.178492 0
+-0.387059 0.0430906 0
+-0.40062 -0.042341 0
+-0.426628 -0.0915092 0
+-0.45001 -0.108648 0
+-0.468157 -0.107438 0
+-0.483734 -0.101012 0
+-0.497786 -0.0921867 0
+-0.509717 -0.080955 0
+-0.519757 -0.0697634 0
+-0.528432 -0.0586266 0
+-0.535487 -0.0458454 0
+-0.540984 -0.0336571 0
+-0.545688 -0.0247983 0
+-0.549693 -0.0171865 0
+-0.552556 -0.00893097 0
+-0.554682 -0.00244991 0
+-0.556757 0.0013693 0
+-0.558489 0.00540585 0
+-0.559508 0.00998337 0
+-0.560343 0.0125298 0
+-0.561294 0.0137519 0
+-0.561832 0.0161187 0
+-0.561864 0.0183403 0
+-0.561933 0.0184821 0
+-0.561931 0.018392 0
+-0.561273 0.01938 0
+-0.560072 0.019228 0
+-0.558585 0.0172666 0
+-0.556225 0.0157426 0
+-0.552445 0.014378 0
+-0.547612 0.0101665 0
+-0.542267 0.00116694 0
+-0.537314 -0.0181258 0
+-0.536501 -0.066083 0
+-0.549101 -0.177037 0
+-0.592159 -0.402278 0
+-0.692427 -0.81146 0
+-0.883463 -1.47918 0
+-1.19227 -2.44789 0
+-1.61717 -3.68061 0
+-2.10549 -5.02124 0
+-2.54235 -6.18357 0
+-2.76542 -6.8053 0
+-2.61774 -6.58718 0
+-2.03227 -5.4682 0
+-1.11649 -3.72274 0
+-0.212879 -1.85706 0
+-0.0247014 -0.21694 0
+-0.000697675 -0.0262858 0
+0.00247405 -0.00334565 0
+-0.000560187 0.00319117 0
+-0.0249211 0.0266153 0
+-0.21976 0.223994 0
+-1.17751 1.95137 0
+-2.16453 3.97497 0
+-2.80152 5.90274 0
+-2.96042 7.16265 0
+-2.7088 7.44086 0
+-2.21985 6.79453 0
+-1.67724 5.54297 0
+-1.21132 4.08223 0
+-0.879188 2.73277 0
+-0.679164 1.67031 0
+-0.578766 0.935803 0
+-0.539186 0.485405 0
+-0.52968 0.240284 0
+-0.531963 0.121391 0
+-0.537565 0.069421 0
+-0.543143 0.0489928 0
+-0.54766 0.0412971 0
+-0.55124 0.0369797 0
+-0.554153 0.0333343 0
+-0.556357 0.0306862 0
+-0.557953 0.0284936 0
+-0.559304 0.0258833 0
+-0.560506 0.0234994 0
+-0.561435 0.021882 0
+-0.56225 0.0200764 0
+-0.563218 0.0176224 0
+-0.564279 0.0153157 0
+-0.565351 0.0130843 0
+-0.566646 0.0099024 0
+-0.568299 0.00584571 0
+-0.57018 0.00152728 0
+-0.572318 -0.00373768 0
+-0.574948 -0.0108633 0
+-0.578072 -0.0195654 0
+-0.58153 -0.0298083 0
+-0.585353 -0.0427194 0
+-0.589514 -0.0589571 0
+-0.593597 -0.0785851 0
+-0.597192 -0.103544 0
+-0.600343 -0.139079 0
+-0.60357 -0.194779 0
+-0.60844 -0.288935 0
+-0.619665 -0.454731 0
+-0.64847 -0.744821 0
+-0.716231 -1.23452 0
+-0.855867 -2.02082 0
+-1.10743 -3.20767 0
+-1.50731 -4.87066 0
+-2.07506 -7.00349 0
+-2.80174 -9.45457 0
+-3.63988 -11.8792 0
+-4.49678 -13.764 0
+-5.2427 -14.5795 0
+-5.74783 -14.0341 0
+-5.93972 -12.2772 0
+-5.8395 -9.84136 0
+-5.53662 -7.23493 0
+-2.83812 -4.33422 0
+-1.37099 -2.01777 0
+-1.37099 0.267929 0
+-0.466816 -0.165379 0
+-0.96062 -0.256191 0
+-1.90842 -0.310768 0
+-1.89478 -0.203102 0
+-1.81455 0.276868 0
+-1.65449 1.07028 0
+-1.44333 1.7826 0
+-1.22193 2.03317 0
+-1.00897 1.75382 0
+-0.803926 1.18172 0
+-0.613133 0.625893 0
+-0.458856 0.259747 0
+-0.362888 0.0825162 0
+-0.328204 0.00839985 0
+-0.337265 -0.0332878 0
+-0.364826 -0.0639568 0
+-0.392713 -0.0807691 0
+-0.415326 -0.0848332 0
+-0.434128 -0.0822189 0
+-0.450354 -0.0759689 0
+-0.463911 -0.0674063 0
+-0.475278 -0.0584043 0
+-0.485037 -0.0488756 0
+-0.492986 -0.0379039 0
+-0.499272 -0.0273782 0
+-0.504713 -0.0193652 0
+-0.509407 -0.0124993 0
+-0.51289 -0.00545433 0
+-0.515549 0.000202275 0
+-0.518069 0.00388302 0
+-0.520177 0.00750737 0
+-0.521514 0.0113147 0
+-0.522612 0.0136215 0
+-0.523779 0.0149135 0
+-0.524506 0.0168404 0
+-0.524719 0.0185475 0
+-0.524981 0.0187396 0
+-0.525217 0.0186224 0
+-0.524875 0.0190332 0
+-0.524099 0.018447 0
+-0.523188 0.0163504 0
+-0.521628 0.0141765 0
+-0.518962 0.0117068 0
+-0.515653 0.00685238 0
+-0.512367 -0.00212448 0
+-0.510261 -0.020238 0
+-0.5137 -0.0626501 0
+-0.53339 -0.157354 0
+-0.589315 -0.346361 0
+-0.713577 -0.687209 0
+-0.948322 -1.24444 0
+-1.33238 -2.06385 0
+-1.87712 -3.1359 0
+-2.53935 -4.35904 0
+-3.20374 -5.51923 0
+-3.69212 -6.31699 0
+-3.81574 -6.46363 0
+-3.46674 -5.81727 0
+-2.71042 -4.47911 0
+-1.79248 -2.77503 0
+-0.849905 -1.15953 0
+-0.422892 -0.453311 0
+-0.304109 -0.12214 0
+-0.422719 0.121792 0
+-0.86125 0.465136 0
+-1.84805 1.21078 0
+-2.83529 2.93859 0
+-3.66357 4.80324 0
+-4.05611 6.29526 0
+-3.93067 7.03721 0
+-3.39843 6.90861 0
+-2.66657 6.06266 0
+-1.93663 4.81303 0
+-1.34097 3.48657 0
+-0.927835 2.31963 0
+-0.682013 1.42449 0
+-0.557885 0.811675 0
+-0.506592 0.434111 0
+-0.490979 0.224672 0
+-0.489345 0.119757 0
+-0.491781 0.0718564 0
+-0.494573 0.0517852 0
+-0.496736 0.0434596 0
+-0.498488 0.0387317 0
+-0.500109 0.0349551 0
+-0.501479 0.0320562 0
+-0.502581 0.0295963 0
+-0.503666 0.0269679 0
+-0.504748 0.0245806 0
+-0.505647 0.0227814 0
+-0.506492 0.0209214 0
+-0.507537 0.0186668 0
+-0.50873 0.0165079 0
+-0.510001 0.0143554 0
+-0.511583 0.0114842 0
+-0.513634 0.00789632 0
+-0.516055 0.00394744 0
+-0.518912 -0.000881637 0
+-0.522485 -0.0072903 0
+-0.526837 -0.0152143 0
+-0.531859 -0.0247865 0
+-0.537619 -0.0369601 0
+-0.54412 -0.0524576 0
+-0.550967 -0.0717388 0
+-0.557749 -0.096762 0
+-0.564609 -0.132219 0
+-0.572654 -0.186735 0
+-0.585131 -0.276459 0
+-0.609889 -0.429974 0
+-0.662448 -0.692263 0
+-0.768758 -1.12821 0
+-0.965927 -1.82365 0
+-1.29769 -2.87591 0
+-1.80292 -4.36543 0
+-2.49977 -6.30665 0
+-3.3707 -8.58363 0
+-4.35318 -10.8967 0
+-5.33943 -12.7777 0
+-6.19248 -13.7265 0
+-6.7851 -13.4415 0
+-7.04962 -12.0127 0
+-7.00186 -9.88912 0
+-6.70739 -7.5294 0
+-3.46309 -4.82945 0
+-1.68166 -2.43343 0
+-1.68166 0.0085547 0
+-0.403912 -0.146687 0
+-0.83656 -0.235379 0
+-1.66949 -0.300765 0
+-1.64276 -0.229841 0
+-1.54393 0.178039 0
+-1.3677 0.89403 0
+-1.15589 1.57078 0
+-0.962039 1.83931 0
+-0.807135 1.59891 0
+-0.676056 1.05063 0
+-0.549599 0.499431 0
+-0.429828 0.139969 0
+-0.336054 -0.011264 0
+-0.284554 -0.0431072 0
+-0.274667 -0.0431821 0
+-0.291071 -0.0475599 0
+-0.31638 -0.0554672 0
+-0.34091 -0.0603116 0
+-0.362344 -0.0607921 0
+-0.380576 -0.0577449 0
+-0.395608 -0.0523813 0
+-0.408039 -0.0459811 0
+-0.418434 -0.0384875 0
+-0.426747 -0.0295982 0
+-0.433276 -0.0208553 0
+-0.438847 -0.0138014 0
+-0.443622 -0.007731 0
+-0.447247 -0.0018349 0
+-0.450048 0.00299682 0
+-0.452601 0.00642997 0
+-0.454708 0.00960854 0
+-0.456094 0.0126954 0
+-0.4572 0.0147222 0
+-0.458289 0.0159973 0
+-0.458963 0.0175098 0
+-0.459181 0.0187606 0
+-0.459422 0.0189761 0
+-0.459649 0.018844 0
+-0.459439 0.0188183 0
+-0.458938 0.0179416 0
+-0.458444 0.0158511 0
+-0.457628 0.0133558 0
+-0.456231 0.0103049 0
+-0.454718 0.00533437 0
+-0.453704 -0.00314393 0
+-0.454361 -0.0195865 0
+-0.461099 -0.0559179 0
+-0.48489 -0.133569 0
+-0.546611 -0.284648 0
+-0.680233 -0.553596 0
+-0.93168 -0.99301 0
+-1.34764 -1.64791 0
+-1.9538 -2.52976 0
+-2.72803 -3.58486 0
+-3.57869 -4.66861 0
+-4.34456 -5.55117 0
+-4.83232 -5.97594 0
+-4.89006 -5.75958 0
+-4.48269 -4.88654 0
+-3.70913 -3.54864 0
+-2.74672 -2.12198 0
+-2.11535 -1.08471 0
+-1.90636 -0.331157 0
+-2.12409 0.339491 0
+-2.78245 1.12347 0
+-3.80342 2.23173 0
+-4.64827 3.78342 0
+-5.11474 5.26968 0
+-5.08146 6.26196 0
+-4.57446 6.53019 0
+-3.75224 6.08639 0
+-2.82607 5.13648 0
+-1.97845 3.96541 0
+-1.31667 2.82479 0
+-0.867991 1.87096 0
+-0.603399 1.1599 0
+-0.469376 0.677651 0
+-0.412737 0.377471 0
+-0.393814 0.205748 0
+-0.389378 0.115321 0
+-0.388822 0.0712997 0
+-0.388456 0.0514196 0
+-0.387642 0.0426452 0
+-0.386865 0.0379549 0
+-0.386519 0.0346083 0
+-0.3865 0.0320374 0
+-0.386693 0.0297895 0
+-0.387175 0.02745 0
+-0.387852 0.0252568 0
+-0.3885 0.0234293 0
+-0.389176 0.0215972 0
+-0.390069 0.0195596 0
+-0.391145 0.0175836 0
+-0.392371 0.0155809 0
+-0.393966 0.0130781 0
+-0.396095 0.0100249 0
+-0.398719 0.00657141 0
+-0.401936 0.00233465 0
+-0.40602 -0.00320675 0
+-0.411068 -0.0101671 0
+-0.417025 -0.0188298 0
+-0.423958 -0.0300283 0
+-0.431869 -0.0445474 0
+-0.440464 -0.0631437 0
+-0.44955 -0.0876773 0
+-0.459727 -0.122043 0
+-0.473205 -0.173258 0
+-0.495408 -0.254257 0
+-0.537472 -0.38791 0
+-0.618545 -0.611191 0
+-0.766929 -0.979824 0
+-1.01918 -1.57141 0
+-1.41544 -2.47964 0
+-1.99011 -3.79075 0
+-2.75922 -5.53754 0
+-3.7078 -7.63506 0
+-4.7801 -9.82439 0
+-5.87612 -11.6817 0
+-6.86381 -12.7388 0
+-7.61506 -12.6903 0
+-8.05287 -11.5749 0
+-8.17204 -9.76995 0
+-7.99901 -7.70242 0
+-4.1624 -5.31754 0
+-2.04824 -2.90438 0
+-2.04824 -0.315668 0
+-0.347826 -0.127935 0
+-0.727352 -0.214147 0
+-1.46289 -0.291549 0
+-1.42969 -0.263041 0
+-1.31369 0.0620331 0
+-1.10899 0.689316 0
+-0.867503 1.32929 0
+-0.663549 1.63535 0
+-0.536728 1.47208 0
+-0.47108 0.984981 0
+-0.423439 0.451785 0
+-0.364685 0.0812093 0
+-0.296572 -0.0793828 0
+-0.23914 -0.100545 0
+-0.208398 -0.0739305 0
+-0.204924 -0.0510401 0
+-0.21854 -0.0418587 0
+-0.238735 -0.0401235 0
+-0.259541 -0.0399932 0
+-0.278347 -0.0389453 0
+-0.294222 -0.0365128 0
+-0.307313 -0.0328975 0
+-0.317947 -0.02786 0
+-0.326182 -0.0213692 0
+-0.33244 -0.0146032 0
+-0.337523 -0.00872499 0
+-0.341708 -0.00355131 0
+-0.344844 0.00129501 0
+-0.347202 0.00534952 0
+-0.349219 0.00844127 0
+-0.350791 0.0111758 0
+-0.351754 0.013653 0
+-0.352424 0.0153871 0
+-0.352995 0.0165636 0
+-0.35321 0.0177204 0
+-0.353059 0.018605 0
+-0.352892 0.0188055 0
+-0.352712 0.0186592 0
+-0.352262 0.0183637 0
+-0.351691 0.0173668 0
+-0.351281 0.015436 0
+-0.350903 0.0129742 0
+-0.350466 0.00986321 0
+-0.350316 0.00517931 0
+-0.350888 -0.00257606 0
+-0.35326 -0.0172199 0
+-0.361581 -0.0476025 0
+-0.386234 -0.108921 0
+-0.447099 -0.22379 0
+-0.57659 -0.424113 0
+-0.819417 -0.750192 0
+-1.22477 -1.24257 0
+-1.82969 -1.92486 0
+-2.63617 -2.7784 0
+-3.58858 -3.71623 0
+-4.56417 -4.57563 0
+-5.39157 -5.1486 0
+-5.90103 -5.25018 0
+-5.98861 -4.79901 0
+-5.6653 -3.87201 0
+-5.08818 -2.69915 0
+-4.61467 -1.55828 0
+-4.44201 -0.503853 0
+-4.63017 0.527608 0
+-5.13444 1.6277 0
+-5.76231 2.85956 0
+-6.13869 4.15978 0
+-6.08456 5.21553 0
+-5.57454 5.75192 0
+-4.71062 5.66626 0
+-3.67133 5.0471 0
+-2.64306 4.1082 0
+-1.7648 3.08714 0
+-1.10423 2.16422 0
+-0.663942 1.43066 0
+-0.404922 0.900878 0
+-0.272542 0.54527 0
+-0.2155 0.320429 0
+-0.195651 0.185898 0
+-0.190066 0.109736 0
+-0.187859 0.0690927 0
+-0.185269 0.048829 0
+-0.181894 0.0392707 0
+-0.178517 0.0345768 0
+-0.175787 0.0318783 0
+-0.173809 0.0300598 0
+-0.172504 0.0284841 0
+-0.171831 0.0267765 0
+-0.171606 0.0250319 0
+-0.171572 0.0233946 0
+-0.17169 0.0217148 0
+-0.17205 0.0199195 0
+-0.172623 0.0181564 0
+-0.173405 0.016362 0
+-0.174579 0.0142516 0
+-0.176301 0.011747 0
+-0.17859 0.00885964 0
+-0.181553 0.00529728 0
+-0.185417 0.000656665 0
+-0.19028 -0.00530496 0
+-0.196128 -0.0129827 0
+-0.203029 -0.0231283 0
+-0.211044 -0.0365331 0
+-0.220153 -0.0540351 0
+-0.230696 -0.0771349 0
+-0.244152 -0.108588 0
+-0.264126 -0.153284 0
+-0.297915 -0.220468 0
+-0.358423 -0.327402 0
+-0.465401 -0.504214 0
+-0.645366 -0.799859 0
+-0.930149 -1.28663 0
+-1.35373 -2.05606 0
+-1.94702 -3.19746 0
+-2.73068 -4.75388 0
+-3.70529 -6.66044 0
+-4.83734 -8.69233 0
+-6.04608 -10.473 0
+-7.20727 -11.5776 0
+-8.18616 -11.7114 0
+-8.88765 -10.8734 0
+-9.2807 -9.37691 0
+-9.35159 -7.63153 0
+-4.8964 -5.67489 0
+-2.45816 -3.358 0
+-2.45816 -0.680261 0
+-0.296128 -0.10827 0
+-0.627362 -0.189823 0
+-1.27671 -0.276776 0
+-1.24841 -0.291348 0
+-1.12862 -0.0577632 0
+-0.901971 0.46266 0
+-0.620155 1.04746 0
+-0.374517 1.38971 0
+-0.231708 1.32927 0
+-0.192604 0.945873 0
+-0.206181 0.465358 0
+-0.216242 0.0912666 0
+-0.197552 -0.098078 0
+-0.158821 -0.139281 0
+-0.121997 -0.110761 0
+-0.101618 -0.071425 0
+-0.0990509 -0.0444319 0
+-0.108414 -0.0307663 0
+-0.123301 -0.0251126 0
+-0.139293 -0.0229595 0
+-0.154022 -0.0217899 0
+-0.166609 -0.020317 0
+-0.17678 -0.0176947 0
+-0.184445 -0.0137103 0
+-0.18997 -0.00908439 0
+-0.194052 -0.0046477 0
+-0.197071 -0.000537874 0
+-0.199087 0.00330519 0
+-0.200358 0.00661569 0
+-0.201211 0.00928939 0
+-0.201635 0.0115958 0
+-0.201569 0.0135823 0
+-0.201223 0.0150364 0
+-0.200729 0.016065 0
+-0.199952 0.016939 0
+-0.198904 0.0175534 0
+-0.197818 0.0177152 0
+-0.196727 0.017564 0
+-0.195527 0.0171604 0
+-0.194376 0.0162112 0
+-0.193522 0.0145782 0
+-0.19297 0.0124182 0
+-0.192694 0.00958343 0
+-0.192865 0.0053463 0
+-0.193752 -0.00169357 0
+-0.196381 -0.0145952 0
+-0.204565 -0.0394235 0
+-0.227523 -0.0859685 0
+-0.282594 -0.168724 0
+-0.397796 -0.308918 0
+-0.612381 -0.535616 0
+-0.972594 -0.882366 0
+-1.52096 -1.37651 0
+-2.27921 -2.02018 0
+-3.22772 -2.76775 0
+-4.29024 -3.51315 0
+-5.33654 -4.10234 0
+-6.21119 -4.37558 0
+-6.7837 -4.22655 0
+-7.00429 -3.65149 0
+-6.94719 -2.75631 0
+-6.80884 -1.69668 0
+-6.74644 -0.566305 0
+-6.81854 0.599655 0
+-6.97442 1.78354 0
+-7.05605 2.94115 0
+-6.85354 3.95724 0
+-6.27799 4.63995 0
+-5.37291 4.84683 0
+-4.27246 4.5658 0
+-3.14142 3.91605 0
+-2.12078 3.08755 0
+-1.29657 2.26293 0
+-0.695479 1.56313 0
+-0.298941 1.03412 0
+-0.0638495 0.665786 0
+0.059266 0.422154 0
+0.114475 0.265219 0
+0.134738 0.165636 0
+0.140817 0.103656 0
+0.143433 0.0664767 0
+0.146746 0.0455159 0
+0.151399 0.0346175 0
+0.156607 0.0293687 0
+0.1615 0.0269848 0
+0.165656 0.0259032 0
+0.168954 0.0251864 0
+0.171398 0.0243319 0
+0.173165 0.0232652 0
+0.174502 0.0220565 0
+0.175524 0.020693 0
+0.176239 0.019204 0
+0.176695 0.0176998 0
+0.176895 0.0161617 0
+0.176709 0.0144371 0
+0.176012 0.0124431 0
+0.17476 0.0101116 0
+0.172856 0.00720088 0
+0.170137 0.00337442 0
+0.166514 -0.0016826 0
+0.161941 -0.00841067 0
+0.156269 -0.0174566 0
+0.149225 -0.0294901 0
+0.140345 -0.0451554 0
+0.128533 -0.0653239 0
+0.111383 -0.0914383 0
+0.0843778 -0.126279 0
+0.0398684 -0.17596 0
+-0.0339467 -0.253588 0
+-0.153526 -0.384636 0
+-0.339993 -0.613392 0
+-0.619258 -1.00736 0
+-1.02233 -1.65299 0
+-1.58479 -2.635 0
+-2.34301 -3.99566 0
+-3.32256 -5.68089 0
+-4.5161 -7.4988 0
+-5.86016 -9.12893 0
+-7.23222 -10.2055 0
+-8.48415 -10.4594 0
+-9.50059 -9.85693 0
+-10.2331 -8.64441 0
+-10.6478 -7.2168 0
+-5.58317 -5.75185 0
+-2.87062 -3.68032 0
+-2.87062 -1.02768 0
+-0.247017 -0.0875508 0
+-0.531833 -0.160972 0
+-1.0995 -0.251297 0
+-1.08871 -0.302147 0
+-0.98653 -0.159944 0
+-0.762274 0.238396 0
+-0.454334 0.739517 0
+-0.15749 1.09286 0
+0.0381952 1.13358 0
+0.103059 0.881006 0
+0.074404 0.494009 0
+0.0180277 0.147639 0
+-0.0170393 -0.0630152 0
+-0.0179578 -0.138367 0
+0.00188456 -0.130608 0
+0.0237552 -0.0933011 0
+0.0367891 -0.0574714 0
+0.0391745 -0.0331575 0
+0.0337673 -0.0197112 0
+0.0243057 -0.0135035 0
+0.0136877 -0.0111775 0
+0.00367122 -0.0103061 0
+-0.004745 -0.00928389 0
+-0.0110648 -0.00739585 0
+-0.0153605 -0.0047939 0
+-0.0180831 -0.00193011 0
+-0.0195957 0.000969811 0
+-0.020091 0.00379575 0
+-0.019829 0.00634902 0
+-0.0190722 0.0085282 0
+-0.0178878 0.010407 0
+-0.0162966 0.011987 0
+-0.0144443 0.01318 0
+-0.012426 0.0140427 0
+-0.0101945 0.0147038 0
+-0.00777881 0.0151339 0
+-0.00532519 0.0152579 0
+-0.00288982 0.015125 0
+-0.000474306 0.0147413 0
+0.00177247 0.0139608 0
+0.00365202 0.012695 0
+0.00511894 0.0109476 0
+0.00619433 0.00850433 0
+0.00681805 0.00471879 0
+0.00674073 -0.00162016 0
+0.00486119 -0.0127197 0
+-0.00226969 -0.0322969 0
+-0.0223 -0.0659428 0
+-0.0689981 -0.122031 0
+-0.164223 -0.213699 0
+-0.339124 -0.360722 0
+-0.632871 -0.588628 0
+-1.08711 -0.922281 0
+-1.73472 -1.37259 0
+-2.58317 -1.91932 0
+-3.59779 -2.49857 0
+-4.6945 -3.00567 0
+-5.75157 -3.31855 0
+-6.64212 -3.33605 0
+-7.27876 -3.0149 0
+-7.65075 -2.38437 0
+-7.82298 -1.5245 0
+-7.86791 -0.521433 0
+-7.81537 0.547075 0
+-7.63543 1.60355 0
+-7.25115 2.55684 0
+-6.5888 3.29486 0
+-5.65272 3.70385 0
+-4.5318 3.72589 0
+-3.36097 3.39496 0
+-2.27128 2.82636 0
+-1.3535 2.16977 0
+-0.645965 1.55539 0
+-0.142941 1.06011 0
+0.187745 0.703435 0
+0.387909 0.465621 0
+0.497954 0.312108 0
+0.551567 0.211606 0
+0.573956 0.143246 0
+0.581956 0.0956558 0
+0.585325 0.0631071 0
+0.588681 0.04216 0
+0.593403 0.0298948 0
+0.599216 0.0235561 0
+0.605367 0.0208332 0
+0.611253 0.0200167 0
+0.616516 0.0199232 0
+0.621 0.0198481 0
+0.624749 0.0195152 0
+0.627921 0.0188842 0
+0.630634 0.0179804 0
+0.632953 0.0168837 0
+0.634951 0.015702 0
+0.63665 0.0144619 0
+0.637987 0.0130992 0
+0.638888 0.0115423 0
+0.639308 0.00969045 0
+0.639175 0.00733379 0
+0.638365 0.00418342 0
+0.636761 -7.921e-05 0
+0.634198 -0.00584888 0
+0.630336 -0.0135946 0
+0.624569 -0.0237245 0
+0.61591 -0.0364966 0
+0.602677 -0.0520918 0
+0.582118 -0.07088 0
+0.550062 -0.094223 0
+0.500547 -0.126445 0
+0.425376 -0.178418 0
+0.313435 -0.272696 0
+0.149163 -0.44912 0
+-0.090516 -0.767684 0
+-0.440273 -1.30324 0
+-0.948726 -2.12655 0
+-1.67395 -3.27044 0
+-2.66621 -4.68863 0
+-3.93774 -6.22727 0
+-5.43298 -7.6337 0
+-7.02303 -8.61548 0
+-8.54249 -8.93998 0
+-9.85853 -8.54088 0
+-10.9206 -7.58239 0
+-11.712 -6.42531 0
+-6.09317 -5.41327 0
+-3.20134 -3.72912 0
+-3.20134 -1.25759 0
+-0.199581 -0.0664346 0
+-0.43769 -0.12798 0
+-0.922299 -0.213119 0
+-0.938186 -0.286263 0
+-0.875217 -0.222919 0
+-0.687316 0.0504894 0
+-0.389976 0.442171 0
+-0.0642733 0.767149 0
+0.190972 0.878327 0
+0.318341 0.753634 0
+0.32649 0.485857 0
+0.269232 0.204893 0
+0.204283 0.00193098 0
+0.164191 -0.0982793 0
+0.152819 -0.119241 0
+0.158626 -0.0991128 0
+0.16886 -0.0677096 0
+0.176112 -0.040415 0
+0.178266 -0.0218704 0
+0.176132 -0.0113739 0
+0.171434 -0.00648452 0
+0.165811 -0.00468837 0
+0.160543 -0.00402078 0
+0.156464 -0.0033214 0
+0.153875 -0.00220938 0
+0.152673 -0.000732975 0
+0.152654 0.000984039 0
+0.153634 0.00281208 0
+0.155388 0.00459044 0
+0.157704 0.00620884 0
+0.160468 0.00763915 0
+0.163604 0.00884711 0
+0.166994 0.00978571 0
+0.170557 0.0104764 0
+0.174281 0.0109764 0
+0.178125 0.0112868 0
+0.181992 0.0113877 0
+0.185818 0.0112961 0
+0.189552 0.0110039 0
+0.193073 0.0104365 0
+0.196245 0.00951979 0
+0.199023 0.00816638 0
+0.201407 0.00611725 0
+0.203306 0.00281592 0
+0.204335 -0.00265205 0
+0.203275 -0.011664 0
+0.197152 -0.0261778 0
+0.180155 -0.0489497 0
+0.142461 -0.084341 0
+0.0687516 -0.139994 0
+-0.0633751 -0.228601 0
+-0.284079 -0.367932 0
+-0.629308 -0.577061 0
+-1.13415 -0.867766 0
+-1.82063 -1.23285 0
+-2.68267 -1.63655 0
+-3.67483 -2.01353 0
+-4.71296 -2.28046 0
+-5.6908 -2.35825 0
+-6.50901 -2.19673 0
+-7.10333 -1.7901 0
+-7.45308 -1.17479 0
+-7.56037 -0.414192 0
+-7.42673 0.413393 0
+-7.04388 1.22067 0
+-6.40283 1.91576 0
+-5.51909 2.41109 0
+-4.45742 2.64216 0
+-3.32487 2.59332 0
+-2.2391 2.3092 0
+-1.29375 1.881 0
+-0.538256 1.41427 0
+0.0220646 0.995069 0
+0.412022 0.670147 0
+0.66902 0.446437 0
+0.829996 0.304643 0
+0.925349 0.216754 0
+0.978036 0.158919 0
+1.00476 0.116519 0
+1.01729 0.0831287 0
+1.02339 0.0570063 0
+1.02765 0.037901 0
+1.03224 0.0252995 0
+1.03777 0.01803 0
+1.04403 0.0145755 0
+1.05058 0.0134622 0
+1.05702 0.0134861 0
+1.06304 0.0138212 0
+1.06853 0.014024 0
+1.07349 0.0139262 0
+1.07796 0.0135112 0
+1.082 0.0128482 0
+1.08566 0.0120332 0
+1.08901 0.0111175 0
+1.09202 0.0100883 0
+1.09467 0.00889374 0
+1.09692 0.00743524 0
+1.09871 0.00554076 0
+1.09991 0.00298185 0
+1.10033 -0.000494706 0
+1.09964 -0.00515695 0
+1.09728 -0.0112427 0
+1.09241 -0.0188533 0
+1.08379 -0.0278763 0
+1.06974 -0.0380399 0
+1.04808 -0.049226 0
+1.0162 -0.0623426 0
+0.970935 -0.081179 0
+0.908007 -0.11549 0
+0.820349 -0.185038 0
+0.694581 -0.323353 0
+0.505498 -0.578601 0
+0.210167 -1.00791 0
+-0.254194 -1.66219 0
+-0.962534 -2.5621 0
+-1.97967 -3.67149 0
+-3.32611 -4.88083 0
+-4.94668 -6.01312 0
+-6.70501 -6.85715 0
+-8.42145 -7.22354 0
+-9.94904 -7.01329 0
+-11.2426 -6.28883 0
+-12.338 -5.32995 0
+-6.27202 -4.60791 0
+-3.32602 -3.38024 0
+-3.32602 -1.237 0
+-0.153943 -0.0462317 0
+-0.344276 -0.0931246 0
+-0.741055 -0.16456 0
+-0.785169 -0.242151 0
+-0.77387 -0.234222 0
+-0.651749 -0.0716375 0
+-0.409768 0.200185 0
+-0.102659 0.460036 0
+0.180705 0.59496 0
+0.368639 0.565696 0
+0.44056 0.413934 0
+0.424355 0.221095 0
+0.368323 0.0579598 0
+0.312473 -0.0424319 0
+0.275758 -0.0825302 0
+0.259308 -0.0826664 0
+0.256072 -0.0644777 0
+0.258485 -0.0428322 0
+0.261635 -0.0250252 0
+0.263365 -0.013108 0
+0.263301 -0.00642515 0
+0.261949 -0.00334031 0
+0.260117 -0.00219338 0
+0.258558 -0.00176617 0
+0.257742 -0.00139666 0
+0.257839 -0.000834473 0
+0.258855 -3.57049e-05 0
+0.260717 0.000946258 0
+0.263295 0.00200926 0
+0.266442 0.00305837 0
+0.270047 0.004031 0
+0.274015 0.00487635 0
+0.278241 0.00555599 0
+0.282646 0.0060684 0
+0.287186 0.00643407 0
+0.291809 0.0066605 0
+0.296446 0.00674774 0
+0.301037 0.00670258 0
+0.305523 0.00651497 0
+0.309818 0.00613924 0
+0.313831 0.00550411 0
+0.317505 0.00448905 0
+0.320768 0.0028514 0
+0.323404 0.000177385 0
+0.32486 -0.00411095 0
+0.32392 -0.0107272 0
+0.318255 -0.020516 0
+0.303927 -0.0346247 0
+0.274723 -0.0551407 0
+0.221015 -0.0862903 0
+0.128095 -0.135686 0
+-0.0253479 -0.214495 0
+-0.267142 -0.335274 0
+-0.628023 -0.506894 0
+-1.13334 -0.72754 0
+-1.79134 -0.978568 0
+-2.58211 -1.22277 0
+-3.45309 -1.40951 0
+-4.32501 -1.48635 0
+-5.10804 -1.41373 0
+-5.72139 -1.17679 0
+-6.1065 -0.789707 0
+-6.2285 -0.292226 0
+-6.07252 0.257376 0
+-5.64246 0.790579 0
+-4.96491 1.23819 0
+-4.09557 1.54173 0
+-3.11988 1.66646 0
+-2.13886 1.61229 0
+-1.24495 1.41528 0
+-0.500327 1.13638 0
+0.0721818 0.841759 0
+0.483728 0.58352 0
+0.765126 0.388747 0
+0.951832 0.25973 0
+1.07404 0.182434 0
+1.15333 0.137466 0
+1.20381 0.10843 0
+1.23485 0.0854873 0
+1.25311 0.0648669 0
+1.26367 0.04644 0
+1.2703 0.0312756 0
+1.27547 0.0201293 0
+1.28054 0.0129561 0
+1.28605 0.00906581 0
+1.29203 0.00747724 0
+1.2983 0.00722245 0
+1.30458 0.00753578 0
+1.31068 0.00792364 0
+1.31647 0.00813399 0
+1.3219 0.00808422 0
+1.32695 0.0077943 0
+1.33166 0.00732524 0
+1.33605 0.00672425 0
+1.34014 0.00599945 0
+1.34392 0.00511946 0
+1.34734 0.00401027 0
+1.35033 0.00255216 0
+1.35271 0.000596344 0
+1.35422 -0.00200592 0
+1.35444 -0.00537168 0
+1.35273 -0.00953605 0
+1.34826 -0.0143864 0
+1.34002 -0.0196386 0
+1.32693 -0.0249431 0
+1.30795 -0.0302473 0
+1.28222 -0.0366147 0
+1.24875 -0.0477128 0
+1.20526 -0.0720013 0
+1.14547 -0.125246 0
+1.05446 -0.232347 0
+0.90267 -0.426809 0
+0.640721 -0.745958 0
+0.199471 -1.22094 0
+-0.499826 -1.86281 0
+-1.52254 -2.64878 0
+-2.88881 -3.51456 0
+-4.54553 -4.35641 0
+-6.35998 -5.04271 0
+-8.15083 -5.43269 0
+-9.75823 -5.40589 0
+-11.1286 -4.9185 0
+-12.3498 -4.10873 0
+-6.01215 -3.44059 0
+-3.13393 -2.60849 0
+-3.13393 -0.854507 0
+-0.111218 -0.0285464 0
+-0.253629 -0.0600001 0
+-0.558225 -0.111917 0
+-0.622843 -0.177536 0
+-0.659934 -0.197134 0
+-0.614271 -0.117305 0
+-0.459106 0.0450151 0
+-0.220042 0.220968 0
+0.0377731 0.337142 0
+0.246498 0.356969 0
+0.368453 0.291977 0
+0.405484 0.184062 0
+0.385807 0.077635 0
+0.343021 0.0003519 0
+0.301328 -0.0408399 0
+0.271618 -0.0529601 0
+0.254954 -0.0478165 0
+0.247876 -0.0357573 0
+0.24621 -0.0233629 0
+0.246782 -0.0136838 0
+0.247753 -0.00739909 0
+0.248368 -0.00395895 0
+0.248574 -0.00240223 0
+0.248643 -0.00183842 0
+0.248893 -0.00165008 0
+0.249551 -0.00149573 0
+0.250741 -0.00122807 0
+0.252503 -0.000818323 0
+0.254811 -0.000302335 0
+0.257604 0.000262961 0
+0.260808 0.000824025 0
+0.264347 0.00133521 0
+0.268137 0.00176386 0
+0.272105 0.00209798 0
+0.276196 0.00234023 0
+0.28036 0.00249469 0
+0.284541 0.00256439 0
+0.28869 0.00255126 0
+0.292757 0.00244539 0
+0.29668 0.00221425 0
+0.300385 0.00179734 0
+0.303782 0.00109003 0
+0.306713 -8.22885e-05 0
+0.308858 -0.00196992 0
+0.309613 -0.00486831 0
+0.307954 -0.00907054 0
+0.302292 -0.0148569 0
+0.290298 -0.0226326 0
+0.268505 -0.0333504 0
+0.231431 -0.0492197 0
+0.170138 -0.0743964 0
+0.0706981 -0.115059 0
+-0.0863384 -0.178243 0
+-0.324059 -0.269179 0
+-0.663947 -0.387661 0
+-1.11778 -0.524741 0
+-1.6791 -0.661468 0
+-2.31772 -0.770907 0
+-2.98049 -0.823603 0
+-3.59909 -0.795149 0
+-4.10249 -0.673402 0
+-4.42942 -0.462808 0
+-4.53703 -0.18464 0
+-4.40605 0.126375 0
+-4.04356 0.428067 0
+-3.48391 0.678523 0
+-2.78657 0.84438 0
+-2.02835 0.908221 0
+-1.289 0.872935 0
+-0.63436 0.760633 0
+-0.103658 0.605671 0
+0.29391 0.44419 0
+0.573138 0.304291 0
+0.761389 0.200495 0
+0.8873 0.133818 0
+0.973577 0.0961558 0
+1.03487 0.076177 0
+1.07923 0.064065 0
+1.11092 0.0537923 0
+1.1327 0.0430923 0
+1.14698 0.0321536 0
+1.15615 0.0221122 0
+1.16229 0.0139887 0
+1.16701 0.00823463 0
+1.17134 0.0047333 0
+1.17581 0.00300809 0
+1.18057 0.00245744 0
+1.18558 0.00253075 0
+1.19068 0.00282033 0
+1.19574 0.00307834 0
+1.20063 0.00318944 0
+1.2053 0.00312831 0
+1.2097 0.00291474 0
+1.21385 0.00257476 0
+1.21773 0.00211758 0
+1.22133 0.00152759 0
+1.22457 0.000762557 0
+1.22737 -0.000241967 0
+1.22952 -0.00155736 0
+1.23075 -0.0032379 0
+1.23067 -0.00529235 0
+1.22879 -0.00765194 0
+1.22455 -0.0101478 0
+1.21744 -0.0125373 0
+1.20714 -0.014639 0
+1.19355 -0.0166577 0
+1.17673 -0.0197935 0
+1.15621 -0.0271956 0
+1.12939 -0.0451851 0
+1.08857 -0.0844293 0
+1.01669 -0.160459 0
+0.8826 -0.292724 0
+0.638175 -0.501534 0
+0.220158 -0.802927 0
+-0.440034 -1.20261 0
+-1.39781 -1.691 0
+-2.67148 -2.24089 0
+-4.22066 -2.80722 0
+-5.93758 -3.32579 0
+-7.66155 -3.70872 0
+-9.22508 -3.84236 0
+-10.5346 -3.60903 0
+-11.67 -2.97331 0
+-5.3583 -2.18591 0
+-2.63918 -1.56821 0
+-2.63918 -0.129091 0
+-0.0732002 -0.0147922 0
+-0.170023 -0.0324236 0
+-0.382623 -0.0635596 0
+-0.452853 -0.107308 0
+-0.519251 -0.130738 0
+-0.53573 -0.100829 0
+-0.46944 -0.0212785 0
+-0.323786 0.0753117 0
+-0.136711 0.150064 0
+0.0411157 0.179141 0
+0.171127 0.161964 0
+0.239787 0.1154 0
+0.256069 0.0613521 0
+0.240012 0.0164067 0
+0.211359 -0.012189 0
+0.183417 -0.02502 0
+0.162285 -0.0266873 0
+0.148959 -0.0224329 0
+0.141897 -0.0163035 0
+0.138887 -0.0106762 0
+0.138016 -0.00653031 0
+0.138007 -0.00395243 0
+0.138201 -0.00259869 0
+0.138379 -0.00201915 0
+0.13856 -0.00183247 0
+0.138844 -0.00178207 0
+0.139339 -0.00172601 0
+0.140125 -0.0016062 0
+0.141238 -0.00141719 0
+0.142679 -0.00117956 0
+0.144423 -0.000922102 0
+0.146429 -0.000672837 0
+0.148645 -0.000453382 0
+0.151016 -0.000275421 0
+0.153497 -0.00014241 0
+0.156045 -5.42273e-05 0
+0.158617 -9.99023e-06 0
+0.161178 -1.06028e-05 0
+0.163685 -6.41352e-05 0
+0.16609 -0.000191773 0
+0.168319 -0.000432935 0
+0.170259 -0.00085204 0
+0.171719 -0.00154368 0
+0.172373 -0.00262555 0
+0.171718 -0.00421482 0
+0.169047 -0.00640116 0
+0.163438 -0.00925036 0
+0.153697 -0.0128932 0
+0.138093 -0.0177482 0
+0.113726 -0.0248554 0
+0.0754993 -0.0361722 0
+0.0150085 -0.0545714 0
+-0.0799451 -0.0832924 0
+-0.224364 -0.124764 0
+-0.433001 -0.179028 0
+-0.715456 -0.242292 0
+-1.07064 -0.30629 0
+-1.48257 -0.358983 0
+-1.91944 -0.38675 0
+-2.33692 -0.377681 0
+-2.68529 -0.325044 0
+-2.91829 -0.229818 0
+-3.00153 -0.101418 0
+-2.9188 0.0436313 0
+-2.67555 0.18481 0
+-2.29885 0.301814 0
+-1.83339 0.378911 0
+-1.33358 0.408405 0
+-0.852863 0.39221 0
+-0.43311 0.340878 0
+-0.0976789 0.270238 0
+0.149754 0.196756 0
+0.320767 0.133276 0
+0.434693 0.086568 0
+0.511251 0.0572587 0
+0.565743 0.0416628 0
+0.607527 0.0343921 0
+0.641001 0.0305904 0
+0.667655 0.0271373 0
+0.68796 0.022787 0
+0.702481 0.0176325 0
+0.712218 0.0123744 0
+0.718466 0.00773991 0
+0.722522 0.00417855 0
+0.725452 0.0018022 0
+0.727994 0.00046609 0
+0.730557 -0.000106043 0
+0.733298 -0.000211646 0
+0.736217 -9.91503e-05 0
+0.739235 6.01613e-05 0
+0.742254 0.000170069 0
+0.74519 0.000191533 0
+0.747985 0.000119242 0
+0.750599 -4.01708e-05 0
+0.752999 -0.000282988 0
+0.755141 -0.000615385 0
+0.756958 -0.00105454 0
+0.758339 -0.00162437 0
+0.759127 -0.00234542 0
+0.759109 -0.00322052 0
+0.758035 -0.00421935 0
+0.755649 -0.00526698 0
+0.751748 -0.00624755 0
+0.746256 -0.00704533 0
+0.739269 -0.00765349 0
+0.730996 -0.00838524 0
+0.721417 -0.0102145 0
+0.70946 -0.0152395 0
+0.691464 -0.0271899 0
+0.658832 -0.0517976 0
+0.595137 -0.0967654 0
+0.473489 -0.171076 0
+0.255522 -0.283568 0
+-0.106328 -0.441077 0
+-0.662107 -0.646836 0
+-1.45327 -0.899841 0
+-2.49904 -1.19512 0
+-3.78301 -1.52326 0
+-5.24274 -1.86605 0
+-6.76581 -2.18565 0
+-8.19967 -2.40851 0
+-9.39553 -2.41316 0
+-10.3282 -2.04062 0
+-4.55252 -1.17522 0
+-2.07251 -0.591412 0
+-2.07251 0.674002 0
+-0.0418572 -0.0057332 0
+-0.0988043 -0.0131691 0
+-0.227188 -0.0270593 0
+-0.286354 -0.0481426 0
+-0.354629 -0.0624653 0
+-0.400314 -0.0551457 0
+-0.395513 -0.0260812 0
+-0.333166 0.0129626 0
+-0.229806 0.046703 0
+-0.115147 0.0644805 0
+-0.0172024 0.0640178 0
+0.0480635 0.0501331 0
+0.0787719 0.0306427 0
+0.0827743 0.0124032 0
+0.0713166 -0.000732586 0
+0.0542375 -0.00794223 0
+0.0378868 -0.0103381 0
+0.0251789 -0.00972638 0
+0.016634 -0.00776015 0
+0.0115317 -0.00557535 0
+0.00876644 -0.0037665 0
+0.00733487 -0.00252229 0
+0.00652992 -0.00179516 0
+0.00595033 -0.00144096 0
+0.0054241 -0.0013076 0
+0.00491694 -0.00127625 0
+0.00446033 -0.00127071 0
+0.00410457 -0.00125171 0
+0.00389236 -0.00120622 0
+0.0038482 -0.00113661 0
+0.00397731 -0.00105238 0
+0.00426812 -0.000964788 0
+0.00469711 -0.000883483 0
+0.00523537 -0.000814757 0
+0.00585354 -0.000761642 0
+0.00652349 -0.000725217 0
+0.00721844 -0.000705956 0
+0.00791208 -0.000705249 0
+0.00857455 -0.000727599 0
+0.00916482 -0.000783026 0
+0.00962007 -0.000889177 0
+0.00984003 -0.001073 0
+0.00966569 -0.00137035 0
+0.00885995 -0.00182083 0
+0.00710186 -0.00245779 0
+0.00399931 -0.0032997 0
+-0.000895424 -0.00435677 0
+-0.00811904 -0.00567079 0
+-0.0184685 -0.00739999 0
+-0.0333915 -0.00993383 0
+-0.0555817 -0.0139837 0
+-0.0895894 -0.0205655 0
+-0.142084 -0.0308001 0
+-0.221336 -0.0455149 0
+-0.335643 -0.0647237 0
+-0.490788 -0.0871508 0
+-0.687078 -0.110005 0
+-0.916891 -0.129174 0
+-1.16373 -0.139914 0
+-1.40348 -0.137938 0
+-1.60788 -0.12065 0
+-1.74958 -0.0881277 0
+-1.80749 -0.0435212 0
+-1.77121 0.00735295 0
+-1.64356 0.0571486 0
+-1.44034 0.0985872 0
+-1.18752 0.126084 0
+-0.91608 0.136965 0
+-0.655812 0.131939 0
+-0.429612 0.114677 0
+-0.250009 0.0906333 0
+-0.118742 0.0654877 0
+-0.0291862 0.0437194 0
+0.029615 0.027766 0
+0.0689244 0.0179486 0
+0.0975453 0.0130412 0
+0.120798 0.0111392 0
+0.140938 0.0104497 0
+0.158313 0.00976147 0
+0.17255 0.00854939 0
+0.183363 0.00681935 0
+0.190884 0.00485251 0
+0.195646 0.00297779 0
+0.198389 0.0014345 0
+0.199863 0.000327443 0
+0.200685 -0.000355607 0
+0.201277 -0.000699203 0
+0.201879 -0.000814247 0
+0.202584 -0.000804401 0
+0.203392 -0.000748583 0
+0.204259 -0.000696861 0
+0.205125 -0.000674775 0
+0.205935 -0.000691514 0
+0.206643 -0.000748415 0
+0.207205 -0.000845353 0
+0.207573 -0.000984131 0
+0.207687 -0.00116904 0
+0.207467 -0.00140484 0
+0.206813 -0.00169243 0
+0.205615 -0.00202324 0
+0.20377 -0.00237436 0
+0.201209 -0.00270738 0
+0.197938 -0.00297682 0
+0.194049 -0.00315648 0
+0.189689 -0.00329422 0
+0.184907 -0.00360406 0
+0.179289 -0.00459738 0
+0.171288 -0.0072386 0
+0.157183 -0.013085 0
+0.129728 -0.0243435 0
+0.076731 -0.0437691 0
+-0.0199784 -0.074367 0
+-0.18459 -0.118957 0
+-0.445867 -0.179801 0
+-0.83412 -0.258584 0
+-1.37702 -0.356941 0
+-2.09486 -0.477283 0
+-2.99515 -0.622965 0
+-4.065 -0.79621 0
+-5.25847 -0.992174 0
+-6.47891 -1.18808 0
+-7.56808 -1.32398 0
+-8.357 -1.2517 0
+-3.86266 -0.571084 0
+-1.7723 -0.0212665 0
+-1.7723 1.06344 0
+-0.0187727 -0.00119366 0
+-0.0448762 -0.00295936 0
+-0.105317 -0.00637725 0
+-0.141584 -0.0118757 0
+-0.187999 -0.016051 0
+-0.227872 -0.0152735 0
+-0.244635 -0.00931914 0
+-0.231046 -0.000627664 0
+-0.191809 0.00746606 0
+-0.139781 0.0124513 0
+-0.0892766 0.0135131 0
+-0.0505364 0.0113924 0
+-0.0275166 0.00762245 0
+-0.0188204 0.00370643 0
+-0.0201733 0.000619763 0
+-0.0268289 -0.00128726 0
+-0.0350443 -0.00212335 0
+-0.0425575 -0.00221387 0
+-0.0484107 -0.00190762 0
+-0.0525133 -0.00147345 0
+-0.0552081 -0.00107237 0
+-0.0569578 -0.000773304 0
+-0.058169 -0.000584609 0
+-0.0591263 -0.000484362 0
+-0.0599925 -0.000442046 0
+-0.0608389 -0.000430483 0
+-0.0616799 -0.000430332 0
+-0.0625019 -0.0004303 0
+-0.0632833 -0.000425444 0
+-0.0640055 -0.000414981 0
+-0.0646581 -0.000400363 0
+-0.0652395 -0.000383878 0
+-0.0657558 -0.000367724 0
+-0.0662176 -0.00035352 0
+-0.0666375 -0.000342211 0
+-0.067029 -0.000334279 0
+-0.0674054 -0.000330044 0
+-0.0677811 -0.000330045 0
+-0.0681736 -0.000335528 0
+-0.0686082 -0.000348959 0
+-0.0691234 -0.000374433 0
+-0.0697791 -0.000417848 0
+-0.0706634 -0.00048649 0
+-0.0718971 -0.000587682 0
+-0.0736286 -0.000726725 0
+-0.0760232 -0.000905662 0
+-0.0792548 -0.00112569 0
+-0.0835297 -0.00139648 0
+-0.0891766 -0.00175376 0
+-0.0968299 -0.00228123 0
+-0.107688 -0.00312586 0
+-0.123763 -0.00449131 0
+-0.147968 -0.0065969 0
+-0.183883 -0.00960056 0
+-0.235107 -0.013501 0
+-0.304211 -0.0180484 0
+-0.391516 -0.0227009 0
+-0.494034 -0.0266573 0
+-0.604968 -0.0289823 0
+-0.714095 -0.0288139 0
+-0.809141 -0.0256065 0
+-0.877933 -0.0193385 0
+-0.910851 -0.0106066 0
+-0.902945 -0.000556328 0
+-0.855146 0.00934664 0
+-0.774206 0.0176448 0
+-0.671344 0.0232209 0
+-0.55992 0.0255395 0
+-0.452715 0.0247321 0
+-0.359548 0.0215087 0
+-0.285842 0.0169269 0
+-0.232449 0.0120945 0
+-0.196627 0.00789723 0
+-0.173694 0.00483192 0
+-0.158728 0.0029829 0
+-0.14781 0.00212208 0
+-0.138543 0.00187263 0
+-0.12996 0.00186589 0
+-0.122041 0.00184191 0
+-0.115171 0.00167963 0
+-0.109725 0.0013726 0
+-0.105852 0.000979746 0
+-0.103452 0.000577212 0
+-0.102244 0.000226313 0
+-0.101877 -3.97608e-05 0
+-0.102018 -0.000214972 0
+-0.102406 -0.000312105 0
+-0.102868 -0.000352835 0
+-0.103313 -0.000359693 0
+-0.10371 -0.000351246 0
+-0.104067 -0.000340298 0
+-0.104408 -0.000334228 0
+-0.104763 -0.000336437 0
+-0.105164 -0.000348092 0
+-0.10564 -0.000369524 0
+-0.106224 -0.000401043 0
+-0.10695 -0.000443078 0
+-0.107859 -0.000495735 0
+-0.108994 -0.000557873 0
+-0.110392 -0.000626027 0
+-0.112073 -0.000693724 0
+-0.114029 -0.000752042 0
+-0.116213 -0.000792747 0
+-0.118554 -0.000815751 0
+-0.121006 -0.000842668 0
+-0.123673 -0.000937424 0
+-0.127038 -0.00123275 0
+-0.132319 -0.00195768 0
+-0.141948 -0.00345639 0
+-0.160106 -0.00618562 0
+-0.193195 -0.0106804 0
+-0.250072 -0.0174909 0
+-0.341912 -0.0271172 0
+-0.481714 -0.039999 0
+-0.683669 -0.0566295 0
+-0.962783 -0.0778278 0
+-1.33496 -0.10511 0
+-1.81697 -0.140954 0
+-2.42451 -0.188668 0
+-3.16501 -0.251678 0
+-4.02073 -0.33235 0
+-4.91599 -0.428729 0
+-5.66398 -0.503713 0
+-3.15659 -0.233692 0
+-1.73683 0.0728939 0
+-1.73683 0.679343 0
+-0.00476101 -0.00119366 0
+-0.0114558 -0.00295936 0
+-0.027393 -0.00637725 0
+-0.0392688 -0.0118757 0
+-0.05532 -0.016051 0
+-0.0705937 -0.0152735 0
+-0.0799131 -0.00931914 0
+-0.080541 -0.000627664 0
+-0.0730751 0.00746606 0
+-0.060624 0.0124513 0
+-0.047111 0.0135131 0
+-0.0357187 0.0113924 0
+-0.0280964 0.00762245 0
+-0.0243901 0.00370643 0
+-0.0237705 0.000619763 0
+-0.0250579 -0.00128726 0
+-0.0271815 -0.00212335 0
+-0.0293955 -0.00221387 0
+-0.0313033 -0.00190762 0
+-0.0327769 -0.00147345 0
+-0.0338495 -0.00107237 0
+-0.034623 -0.000773304 0
+-0.0352078 -0.000584609 0
+-0.0356923 -0.000484362 0
+-0.0361345 -0.000442046 0
+-0.0365652 -0.000430483 0
+-0.0369957 -0.000430332 0
+-0.0374262 -0.0004303 0
+-0.0378518 -0.000425444 0
+-0.0382669 -0.000414981 0
+-0.0386674 -0.000400363 0
+-0.0390515 -0.000383878 0
+-0.0394193 -0.000367724 0
+-0.039773 -0.00035352 0
+-0.0401154 -0.000342211 0
+-0.0404498 -0.000334279 0
+-0.04078 -0.000330044 0
+-0.0411102 -0.000330045 0
+-0.0414458 -0.000335528 0
+-0.0417949 -0.000348959 0
+-0.0421695 -0.000374433 0
+-0.0425875 -0.000417848 0
+-0.0430741 -0.00048649 0
+-0.0436619 -0.000587682 0
+-0.0443888 -0.000726725 0
+-0.0452946 -0.000905662 0
+-0.0464205 -0.00112569 0
+-0.0478171 -0.00139648 0
+-0.049571 -0.00175376 0
+-0.0518525 -0.00228123 0
+-0.0549785 -0.00312586 0
+-0.0594701 -0.00449131 0
+-0.0660672 -0.0065969 0
+-0.0756681 -0.00960056 0
+-0.0891694 -0.013501 0
+-0.107218 -0.0180484 0
+-0.12992 -0.0227009 0
+-0.156577 -0.0266573 0
+-0.18556 -0.0289823 0
+-0.214375 -0.0288139 0
+-0.239982 -0.0256065 0
+-0.259321 -0.0193385 0
+-0.269928 -0.0106066 0
+-0.270486 -0.000556328 0
+-0.26114 0.00934664 0
+-0.243495 0.0176448 0
+-0.220275 0.0232209 0
+-0.194736 0.0255395 0
+-0.170004 0.0247321 0
+-0.148496 0.0215087 0
+-0.131569 0.0169269 0
+-0.119475 0.0120945 0
+-0.111578 0.00789723 0
+-0.106746 0.00483192 0
+-0.103763 0.0029829 0
+-0.101641 0.00212208 0
+-0.0997687 0.00187263 0
+-0.097903 0.00186589 0
+-0.0960612 0.00184191 0
+-0.0943817 0.00167963 0
+-0.0930092 0.0013726 0
+-0.0920296 0.000979746 0
+-0.0914525 0.000577212 0
+-0.0912263 0.000226313 0
+-0.0912662 -3.97608e-05 0
+-0.0914812 -0.000214972 0
+-0.0917935 -0.000312105 0
+-0.0921464 -0.000352835 0
+-0.0925062 -0.000359693 0
+-0.0928576 -0.000351246 0
+-0.093198 -0.000340298 0
+-0.0935324 -0.000334228 0
+-0.0938689 -0.000336437 0
+-0.0942171 -0.000348092 0
+-0.0945868 -0.000369524 0
+-0.0949879 -0.000401043 0
+-0.0954311 -0.000443078 0
+-0.095927 -0.000495735 0
+-0.096485 -0.000557873 0
+-0.0971112 -0.000626027 0
+-0.097805 -0.000693724 0
+-0.0985572 -0.000752042 0
+-0.0993501 -0.000792747 0
+-0.100166 -0.000815751 0
+-0.101009 -0.000842668 0
+-0.101946 -0.000937424 0
+-0.103179 -0.00123275 0
+-0.105137 -0.00195768 0
+-0.108593 -0.00345639 0
+-0.114779 -0.00618562 0
+-0.12546 -0.0106804 0
+-0.142951 -0.0174909 0
+-0.170068 -0.0271172 0
+-0.210067 -0.039999 0
+-0.266697 -0.0566295 0
+-0.344525 -0.0778278 0
+-0.449635 -0.10511 0
+-0.590589 -0.140954 0
+-0.779257 -0.188668 0
+-1.03094 -0.251678 0
+-1.36329 -0.33235 0
+-1.79201 -0.428729 0
+-2.29573 -0.503713 0
+-1.70238 -0.233692 0
+-1.184 0.0728939 0
+-1.184 0.679343 0
+-0.193503 -0.145818 0
+-0.414071 -0.27148 0
+-0.868835 -0.447352 0
+-0.209508 -0.659329 0
+0.585867 -0.795379 0
+1.37429 -0.788432 0
+2.0225 -0.648216 0
+2.4496 -0.427098 0
+2.64065 -0.191064 0
+2.63605 0.00459962 0
+2.50638 0.129661 0
+2.3254 0.180972 0
+2.15049 0.1749 0
+2.01458 0.135911 0
+1.92787 0.0866992 0
+1.88514 0.0427328 0
+1.87388 0.0112527 0
+1.88074 -0.00687137 0
+1.89507 -0.0143329 0
+1.91002 -0.0149542 0
+1.92219 -0.0121688 0
+1.93057 -0.00838865 0
+1.93554 -0.00496876 0
+1.93799 -0.00245544 0
+1.93889 -0.000898052 0
+1.93899 -0.000108762 0
+1.93882 0.000165439 0
+1.93867 0.000150854 0
+1.93866 1.21145e-05 0
+1.9388 -0.000149685 0
+1.93909 -0.000283841 0
+1.93946 -0.000373067 0
+1.93987 -0.000418461 0
+1.9403 -0.000428599 0
+1.94071 -0.000412908 0
+1.94109 -0.000378655 0
+1.94142 -0.000330841 0
+1.94169 -0.0002746 0
+1.94191 -0.000219697 0
+1.9421 -0.000186225 0
+1.9423 -0.000209021 0
+1.94264 -0.000335667 0
+1.94325 -0.000610688 0
+1.94429 -0.00103993 0
+1.94583 -0.00153747 0
+1.9477 -0.00187416 0
+1.94936 -0.00166682 0
+1.94982 -0.000455694 0
+1.94772 0.00210262 0
+1.94176 0.00595849 0
+1.93134 0.0104194 0
+1.91725 0.0140898 0
+1.90211 0.015134 0
+1.89025 0.0118602 0
+1.88681 0.00344412 0
+1.89633 -0.00952013 0
+1.92125 -0.0249175 0
+1.96079 -0.0395457 0
+2.01073 -0.0499341 0
+2.06398 -0.0532584 0
+2.11206 -0.0480775 0
+2.14679 -0.0347324 0
+2.16214 -0.0153408 0
+2.15552 0.00661703 0
+2.12847 0.0270508 0
+2.08629 0.0421801 0
+2.0369 0.0493925 0
+1.98907 0.047831 0
+1.95049 0.0385769 0
+1.92613 0.024359 0
+1.91732 0.00881444 0
+1.92185 -0.00453453 0
+1.93511 -0.0132544 0
+1.95167 -0.0165611 0
+1.96693 -0.0152623 0
+1.9781 -0.0111665 0
+1.98437 -0.00627404 0
+1.98648 -0.00211205 0
+1.98591 0.000569746 0
+1.98418 0.00173702 0
+1.98239 0.00179187 0
+1.98112 0.00126205 0
+1.98054 0.000584132 0
+1.98052 1.6567e-05 0
+1.98087 -0.000347424 0
+1.98139 -0.000520808 0
+1.98195 -0.00056146 0
+1.98248 -0.000530522 0
+1.98296 -0.000473422 0
+1.98337 -0.000417003 0
+1.98375 -0.000374514 0
+1.9841 -0.000352428 0
+1.98446 -0.000355979 0
+1.98485 -0.00039225 0
+1.98532 -0.000470409 0
+1.98592 -0.000598708 0
+1.9867 -0.000777706 0
+1.98769 -0.00098927 0
+1.98887 -0.00118164 0
+1.99012 -0.0012529 0
+1.99116 -0.00103889 0
+1.99148 -0.000317164 0
+1.99032 0.00115456 0
+1.98678 0.0035413 0
+1.98003 0.00675214 0
+1.96985 0.0101737 0
+1.9575 0.0123544 0
+1.94674 0.0107566 0
+1.94494 0.00180059 0
+1.96344 -0.0184938 0
+2.01643 -0.0529947 0
+2.11751 -0.101076 0
+2.27346 -0.155951 0
+2.47652 -0.203058 0
+2.69788 -0.221361 0
+2.8869 -0.189021 0
+2.98008 -0.0931833 0
+2.92096 0.0591236 0
+2.68659 0.23437 0
+2.31099 0.375603 0
+1.89348 0.417507 0
+1.58055 0.312925 0
+1.48734 0.0932133 0
+1.32779 0.167803 0
+1.00181 0.329208 0
+1.00181 0.870091 0
+-0.913221 -0.547084 0
+-1.8614 -0.983579 0
+-3.77934 -1.62023 0
+-2.02477 -2.41391 0
+0.122857 -2.94301 0
+2.2301 -2.89569 0
+3.87624 -2.29437 0
+4.81428 -1.36516 0
+5.02397 -0.400779 0
+4.66984 0.3587 0
+4.00595 0.79353 0
+3.27778 0.90912 0
+2.6579 0.79476 0
+2.22662 0.567171 0
+1.98768 0.32562 0
+1.89979 0.130605 0
+1.90714 0.00388323 0
+1.9599 -0.0596482 0
+2.02327 -0.0777176 0
+2.07813 -0.0698235 0
+2.11735 -0.0514068 0
+2.14112 -0.0321667 0
+2.15292 -0.0167813 0
+2.15697 -0.00651852 0
+2.15687 -0.000806541 0
+2.15513 0.0016221 0
+2.15323 0.00205994 0
+2.15185 0.00152243 0
+2.15117 0.000677269 0
+2.15113 -0.000109159 0
+2.15152 -0.000684882 0
+2.15217 -0.00102635 0
+2.15291 -0.00117112 0
+2.15365 -0.00117348 0
+2.15431 -0.00107985 0
+2.15485 -0.000918933 0
+2.15522 -0.000702996 0
+2.15538 -0.000438983 0
+2.1553 -0.000149503 0
+2.15502 9.73999e-05 0
+2.15465 0.000157104 0
+2.15451 -0.000202207 0
+2.15515 -0.0012514 0
+2.15726 -0.00315237 0
+2.16142 -0.00569998 0
+2.16757 -0.00802325 0
+2.17433 -0.00842708 0
+2.1785 -0.00463272 0
+2.17521 0.00538855 0
+2.1591 0.0220672 0
+2.12665 0.0428729 0
+2.07897 0.0617702 0
+2.02385 0.0702463 0
+1.97569 0.0600247 0
+1.95253 0.0265995 0
+1.97099 -0.0279815 0
+2.04061 -0.0945314 0
+2.15984 -0.158776 0
+2.31512 -0.205218 0
+2.48316 -0.221304 0
+2.63571 -0.200621 0
+2.74552 -0.144541 0
+2.79234 -0.0621621 0
+2.7675 0.0314598 0
+2.676 0.118551 0
+2.53555 0.182632 0
+2.37268 0.212263 0
+2.21686 0.203646 0
+2.0939 0.161535 0
+2.02014 0.0981265 0
+1.99911 0.029839 0
+2.022 -0.0274192 0
+2.07165 -0.0628998 0
+2.12877 -0.0736872 0
+2.17781 -0.0643001 0
+2.21031 -0.0436631 0
+2.22516 -0.0211175 0
+2.22636 -0.00331302 0
+2.21993 0.00699662 0
+2.21131 0.0103641 0
+2.20398 0.0091215 0
+2.19938 0.00586343 0
+2.19745 0.00250926 0
+2.19744 3.33436e-05 0
+2.19844 -0.00135454 0
+2.19979 -0.00186827 0
+2.20108 -0.00184861 0
+2.20214 -0.00159009 0
+2.20295 -0.00128185 0
+2.20355 -0.00101736 0
+2.204 -0.000830253 0
+2.20438 -0.0007303 0
+2.20476 -0.000729201 0
+2.20522 -0.000854652 0
+2.2059 -0.0011528 0
+2.20698 -0.00167808 0
+2.20867 -0.00246754 0
+2.21118 -0.00349566 0
+2.2146 -0.00460713 0
+2.21878 -0.00543188 0
+2.22304 -0.00530153 0
+2.22594 -0.00321054 0
+2.22499 0.00209917 0
+2.21672 0.0118131 0
+2.19713 0.0263407 0
+2.16317 0.0441313 0
+2.11546 0.0600681 0
+2.06238 0.0638389 0
+2.02495 0.0392267 0
+2.04062 -0.0341662 0
+2.16271 -0.175079 0
+2.45151 -0.389882 0
+2.95439 -0.658826 0
+3.67643 -0.925097 0
+4.55099 -1.09593 0
+5.4265 -1.06452 0
+6.08712 -0.753803 0
+6.31527 -0.169029 0
+5.98203 0.567605 0
+5.12743 1.23021 0
+3.979 1.56593 0
+2.86415 1.42777 0
+1.99964 0.957725 0
+1.31706 0.884916 0
+0.788556 0.871451 0
+0.788556 1.64647 0
+-1.95979 -1.03454 0
+-3.96572 -1.86175 0
+-8.00237 -3.08594 0
+-5.76825 -4.64804 0
+-3.02591 -5.68538 0
+-0.455931 -5.4657 0
+1.27299 -4.02333 0
+1.80966 -1.90188 0
+1.21652 0.192321 0
+-0.12967 1.70484 0
+-1.73816 2.40198 0
+-3.19269 2.36361 0
+-4.25477 1.8568 0
+-4.87023 1.18259 0
+-5.11267 0.568031 0
+-5.10979 0.127687 0
+-4.98555 -0.120383 0
+-4.83037 -0.214858 0
+-4.69519 -0.212918 0
+-4.59938 -0.165663 0
+-4.54277 -0.108042 0
+-4.51631 -0.058643 0
+-4.50911 -0.0240051 0
+-4.51197 -0.00367967 0
+-4.51858 0.00577845 0
+-4.52531 0.00833978 0
+-4.53057 0.00730177 0
+-4.53399 0.00492361 0
+-4.53583 0.00250409 0
+-4.53658 0.000630909 0
+-4.53673 -0.000553584 0
+-4.53663 -0.00113645 0
+-4.53652 -0.00128513 0
+-4.53655 -0.0011607 0
+-4.53676 -0.000877191 0
+-4.5372 -0.000488774 0
+-4.53791 4.19949e-06 0
+-4.53899 0.000630785 0
+-4.54055 0.00140275 0
+-4.5427 0.00223823 0
+-4.5454 0.00285818 0
+-4.54831 0.00269836 0
+-4.55051 0.000938726 0
+-4.55045 -0.00320899 0
+-4.5463 -0.00985629 0
+-4.5368 -0.0175262 0
+-4.52283 -0.0224061 0
+-4.50894 -0.0185194 0
+-4.50401 0.000453381 0
+-4.51958 0.037634 0
+-4.56557 0.0888576 0
+-4.64418 0.140376 0
+-4.74472 0.170782 0
+-4.84256 0.15787 0
+-4.90423 0.0882631 0
+-4.89747 -0.0347435 0
+-4.80261 -0.189395 0
+-4.62037 -0.341014 0
+-4.37339 -0.452201 0
+-4.10152 -0.493176 0
+-3.85318 -0.448954 0
+-3.67511 -0.322611 0
+-3.60227 -0.135004 0
+-3.64992 0.0791111 0
+-3.80984 0.278465 0
+-4.0518 0.424599 0
+-4.33008 0.490548 0
+-4.59335 0.466916 0
+-4.79627 0.364454 0
+-4.91041 0.212267 0
+-4.9311 0.0505327 0
+-4.87707 -0.0814494 0
+-4.78226 -0.157703 0
+-4.68314 -0.172806 0
+-4.60694 -0.140498 0
+-4.56562 -0.0849811 0
+-4.55678 -0.0299571 0
+-4.56939 0.00930185 0
+-4.59064 0.0282396 0
+-4.61074 0.0304722 0
+-4.6248 0.0231832 0
+-4.63207 0.0131347 0
+-4.63418 0.00461846 0
+-4.63341 -0.000734806 0
+-4.63165 -0.00311165 0
+-4.63004 -0.00348049 0
+-4.62904 -0.00285129 0
+-4.62869 -0.00193726 0
+-4.62886 -0.00111071 0
+-4.62938 -0.00049769 0
+-4.63011 -9.87182e-05 0
+-4.63096 0.000117205 0
+-4.63184 0.000154603 0
+-4.63266 -3.85503e-05 0
+-4.63323 -0.000579059 0
+-4.63327 -0.00163397 0
+-4.63237 -0.00337577 0
+-4.62997 -0.00589344 0
+-4.62553 -0.00904319 0
+-4.61873 -0.0122328 0
+-4.60987 -0.0141596 0
+-4.60051 -0.0125736 0
+-4.59419 -0.00422635 0
+-4.59709 0.0147143 0
+-4.61813 0.047381 0
+-4.66761 0.0936152 0
+-4.75338 0.145838 0
+-4.8734 0.183856 0
+-5.00466 0.170486 0
+-5.09062 0.0517937 0
+-5.03298 -0.232722 0
+-4.69726 -0.725598 0
+-3.94224 -1.41385 0
+-2.67648 -2.19086 0
+-0.929644 -2.84276 0
+1.09354 -3.08771 0
+3.01976 -2.68002 0
+4.40265 -1.55193 0
+4.892 0.0782617 0
+4.40381 1.7184 0
+3.18742 2.78232 0
+1.71786 2.89733 0
+0.460704 2.21488 0
+-0.140241 1.56623 0
+-0.277594 1.04151 0
+-0.277594 1.66826 0
+-2.89696 -1.40212 0
+-5.91277 -2.54053 0
+-12.0281 -4.23412 0
+-10.2646 -6.41156 0
+-8.18609 -7.76391 0
+-6.55747 -7.09436 0
+-6.09155 -4.48931 0
+-7.05296 -0.940524 0
+-9.16213 2.30142 0
+-11.7854 4.3281 0
+-14.2494 4.86587 0
+-16.0939 4.20807 0
+-17.1657 2.92855 0
+-17.5635 1.58032 0
+-17.5122 0.516751 0
+-17.2455 -0.139132 0
+-16.9363 -0.429584 0
+-16.68 -0.47117 0
+-16.5085 -0.384427 0
+-16.4157 -0.2585 0
+-16.3798 -0.14404 0
+-16.3774 -0.0610768 0
+-16.3904 -0.0109982 0
+-16.4074 0.0132841 0
+-16.4225 0.0208154 0
+-16.4335 0.0193618 0
+-16.4406 0.0143482 0
+-16.4446 0.00895092 0
+-16.4468 0.00465387 0
+-16.4481 0.00187088 0
+-16.4491 0.000448112 0
+-16.4502 1.03628e-05 0
+-16.4517 0.000170859 0
+-16.4535 0.000630854 0
+-16.4556 0.00120942 0
+-16.458 0.00184591 0
+-16.4606 0.00258844 0
+-16.4635 0.00356274 0
+-16.467 0.00491291 0
+-16.4715 0.00668326 0
+-16.4772 0.00860421 0
+-16.4844 0.00981846 0
+-16.4921 0.00872396 0
+-16.4986 0.00324734 0
+-16.5004 -0.00810937 0
+-16.4935 -0.0243805 0
+-16.4759 -0.0400522 0
+-16.4501 -0.0443233 0
+-16.426 -0.0235932 0
+-16.4204 0.0319823 0
+-16.4512 0.119636 0
+-16.5284 0.217615 0
+-16.6447 0.287027 0
+-16.7713 0.284473 0
+-16.8645 0.1815 0
+-16.8804 -0.0188954 0
+-16.7913 -0.27846 0
+-16.597 -0.53528 0
+-16.325 -0.724216 0
+-16.0226 -0.795547 0
+-15.7461 -0.725496 0
+-15.5491 -0.519572 0
+-15.4724 -0.211769 0
+-15.5342 0.140946 0
+-15.7261 0.470353 0
+-16.014 0.712472 0
+-16.3451 0.821653 0
+-16.6584 0.78023 0
+-16.8979 0.603921 0
+-17.0271 0.341532 0
+-17.0408 0.0642668 0
+-16.9659 -0.15635 0
+-16.85 -0.273685 0
+-16.7417 -0.28104 0
+-16.6739 -0.208323 0
+-16.6554 -0.103433 0
+-16.6755 -0.00984956 0
+-16.7143 0.048043 0
+-16.7533 0.0672295 0
+-16.7817 0.0588938 0
+-16.7969 0.0384041 0
+-16.8017 0.0179201 0
+-16.8007 0.00360772 0
+-16.7979 -0.0035233 0
+-16.7957 -0.00527569 0
+-16.7951 -0.00412741 0
+-16.7959 -0.00202933 0
+-16.7978 -7.4519e-05 0
+-16.8002 0.00134358 0
+-16.8029 0.00223043 0
+-16.8058 0.00273663 0
+-16.8087 0.0030049 0
+-16.8116 0.00309499 0
+-16.8146 0.00294728 0
+-16.8175 0.00236746 0
+-16.8202 0.00103351 0
+-16.8221 -0.00146359 0
+-16.8225 -0.00551706 0
+-16.8202 -0.0112968 0
+-16.8141 -0.0183994 0
+-16.8029 -0.025344 0
+-16.7865 -0.0289623 0
+-16.7669 -0.0238689 0
+-16.7497 -0.00243526 0
+-16.7463 0.0440036 0
+-16.7744 0.121664 0
+-16.856 0.227453 0
+-17.0105 0.33838 0
+-17.2392 0.399176 0
+-17.5016 0.314209 0
+-17.6892 -0.0451837 0
+-17.61 -0.804793 0
+-17.0067 -2.01712 0
+-15.6257 -3.57188 0
+-13.3345 -5.1339 0
+-10.2473 -6.17496 0
+-6.78201 -6.1453 0
+-3.58016 -4.75378 0
+-1.27922 -2.22267 0
+-0.230829 0.670008 0
+-0.324442 2.87593 0
+-1.03869 3.61158 0
+-1.68369 2.85988 0
+-1.47502 1.50234 0
+-0.957587 0.584515 0
+-0.957587 1.13364 0
+-3.4176 -1.55148 0
+-7.09424 -2.82514 0
+-14.6516 -4.70801 0
+-13.9731 -7.09007 0
+-13.4159 -8.32117 0
+-13.6383 -6.87194 0
+-15.1432 -2.98455 0
+-17.9035 1.81976 0
+-21.3457 5.74352 0
+-24.6523 7.6347 0
+-27.1518 7.36528 0
+-28.558 5.6142 0
+-28.9749 3.34544 0
+-28.736 1.34131 0
+-28.2099 -0.00937246 0
+-27.6717 -0.677351 0
+-27.2636 -0.837739 0
+-27.0192 -0.715647 0
+-26.9106 -0.493066 0
+-26.8897 -0.279399 0
+-26.9128 -0.120992 0
+-26.9497 -0.0241966 0
+-26.9841 0.0233598 0
+-27.0096 0.0387697 0
+-27.0257 0.0368764 0
+-27.0344 0.0280425 0
+-27.0384 0.0183275 0
+-27.04 0.0105566 0
+-27.0409 0.00552434 0
+-27.0421 0.0029719 0
+-27.0439 0.00222264 0
+-27.0464 0.00255147 0
+-27.0496 0.00338161 0
+-27.0534 0.00433922 0
+-27.0574 0.00522911 0
+-27.0616 0.00601615 0
+-27.0658 0.00681663 0
+-27.0701 0.00787468 0
+-27.0748 0.00953159 0
+-27.0802 0.0121321 0
+-27.0874 0.0157324 0
+-27.0971 0.0195721 0
+-27.1099 0.0215136 0
+-27.1246 0.0179286 0
+-27.1375 0.00476877 0
+-27.1423 -0.019604 0
+-27.132 -0.0503411 0
+-27.1032 -0.0731279 0
+-27.0609 -0.0659413 0
+-27.0207 -0.00821762 0
+-27.0052 0.104129 0
+-27.033 0.245447 0
+-27.1057 0.359736 0
+-27.2004 0.379164 0
+-27.2752 0.256242 0
+-27.2863 -0.00771 0
+-27.2085 -0.356275 0
+-27.0449 -0.698953 0
+-26.8233 -0.945817 0
+-26.5844 -1.03446 0
+-26.3708 -0.939012 0
+-26.2218 -0.668591 0
+-26.1677 -0.26593 0
+-26.2235 0.196735 0
+-26.3847 0.631625 0
+-26.6283 0.955994 0
+-26.9159 1.10933 0
+-27.1992 1.06354 0
+-27.4271 0.831757 0
+-27.5608 0.475243 0
+-27.5909 0.09437 0
+-27.543 -0.204237 0
+-27.466 -0.350707 0
+-27.4083 -0.338686 0
+-27.3974 -0.219283 0
+-27.4324 -0.0683435 0
+-27.4932 0.0509161 0
+-27.5547 0.109495 0
+-27.5995 0.112065 0
+-27.6225 0.0818876 0
+-27.6278 0.0437657 0
+-27.6236 0.0137319 0
+-27.6172 -0.00286225 0
+-27.6127 -0.00798212 0
+-27.6116 -0.00634982 0
+-27.6135 -0.00224705 0
+-27.6173 0.00172627 0
+-27.6219 0.00454935 0
+-27.6267 0.00617501 0
+-27.6314 0.00695295 0
+-27.636 0.00727132 0
+-27.6404 0.0074079 0
+-27.6448 0.00749105 0
+-27.6493 0.00748056 0
+-27.6541 0.00714724 0
+-27.6591 0.00606101 0
+-27.6642 0.00359364 0
+-27.6687 -0.00102714 0
+-27.6714 -0.00853675 0
+-27.6706 -0.0192523 0
+-27.6635 -0.0324224 0
+-27.6472 -0.0452588 0
+-27.6193 -0.0517419 0
+-27.5802 -0.0415894 0
+-27.5359 -0.00026059 0
+-27.5027 0.0884265 0
+-27.5099 0.234722 0
+-27.5996 0.428043 0
+-27.815 0.61454 0
+-28.1738 0.673043 0
+-28.6245 0.405508 0
+-28.9974 -0.431901 0
+-28.9814 -2.03309 0
+-28.1669 -4.38636 0
+-26.1798 -7.12101 0
+-22.8796 -9.47519 0
+-18.5256 -10.4993 0
+-13.7845 -9.49489 0
+-9.51235 -6.49478 0
+-6.38543 -2.45691 0
+-4.58409 1.07458 0
+-3.73258 2.76007 0
+-3.13582 2.26312 0
+-1.95392 0.54451 0
+-0.962499 -0.310842 0
+-0.962499 0.471159 0
+-3.48117 -1.50198 0
+-7.37467 -2.73262 0
+-15.4827 -4.51049 0
+-15.9268 -6.64603 0
+-16.936 -7.31194 0
+-18.913 -4.89503 0
+-21.9755 0.0778869 0
+-25.7229 5.56708 0
+-29.3626 9.38318 0
+-32.1045 10.3766 0
+-33.5331 8.79381 0
+-33.7277 5.80873 0
+-33.1144 2.73212 0
+-32.2026 0.429405 0
+-31.3755 -0.836431 0
+-30.8149 -1.23798 0
+-30.5351 -1.11765 0
+-30.4619 -0.788878 0
+-30.5025 -0.452503 0
+-30.5835 -0.198394 0
+-30.6618 -0.042765 0
+-30.7193 0.0332905 0
+-30.7538 0.0578089 0
+-30.7701 0.0550641 0
+-30.7749 0.0416346 0
+-30.7738 0.026988 0
+-30.771 0.015451 0
+-30.7686 0.008154 0
+-30.7677 0.00460993 0
+-30.7685 0.00377262 0
+-30.7709 0.00455055 0
+-30.7744 0.0060392 0
+-30.7787 0.00764996 0
+-30.7834 0.0090801 0
+-30.7884 0.0101958 0
+-30.7934 0.0110036 0
+-30.7983 0.011667 0
+-30.8029 0.0124831 0
+-30.8073 0.0139153 0
+-30.8118 0.0166431 0
+-30.8174 0.0213238 0
+-30.8257 0.0278885 0
+-30.8387 0.034512 0
+-30.8575 0.0367265 0
+-30.8805 0.0277617 0
+-30.9017 0.00156101 0
+-30.9108 -0.0412671 0
+-30.8967 -0.0871857 0
+-30.8541 -0.108625 0
+-30.7887 -0.0735693 0
+-30.7185 0.0338909 0
+-30.6647 0.191617 0
+-30.6382 0.333223 0
+-30.6294 0.370435 0
+-30.6117 0.238472 0
+-30.5576 -0.0618225 0
+-30.4583 -0.455572 0
+-30.3292 -0.82806 0
+-30.1977 -1.0773 0
+-30.0853 -1.14681 0
+-30.0012 -1.02316 0
+-29.9492 -0.720589 0
+-29.9348 -0.280306 0
+-29.9636 0.225524 0
+-30.0384 0.70636 0
+-30.1597 1.0773 0
+-30.3252 1.27482 0
+-30.5212 1.25963 0
+-30.7169 1.02745 0
+-30.8746 0.632876 0
+-30.9728 0.192631 0
+-31.0213 -0.155773 0
+-31.0529 -0.319138 0
+-31.1005 -0.291034 0
+-31.1769 -0.142857 0
+-31.2707 0.0254098 0
+-31.358 0.138215 0
+-31.4189 0.17041 0
+-31.4469 0.140113 0
+-31.4486 0.0835556 0
+-31.4365 0.0317012 0
+-31.4224 -0.000433012 0
+-31.4129 -0.0123345 0
+-31.4099 -0.010948 0
+-31.4122 -0.00407784 0
+-31.4175 0.00302199 0
+-31.4238 0.00809337 0
+-31.4302 0.0108803 0
+-31.436 0.0120011 0
+-31.4412 0.0122065 0
+-31.446 0.0120529 0
+-31.4505 0.0118669 0
+-31.4548 0.0118047 0
+-31.4592 0.0118614 0
+-31.4639 0.0118418 0
+-31.4691 0.0113365 0
+-31.4752 0.00967283 0
+-31.4821 0.00587003 0
+-31.4894 -0.00129066 0
+-31.4956 -0.0130004 0
+-31.4982 -0.0298674 0
+-31.4925 -0.0508912 0
+-31.4724 -0.0718632 0
+-31.4306 -0.0833647 0
+-31.3619 -0.0689702 0
+-31.2683 -0.00516317 0
+-31.1675 0.13392 0
+-31.1017 0.362197 0
+-31.1405 0.653387 0
+-31.3674 0.89992 0
+-31.8363 0.874423 0
+-32.4989 0.230637 0
+-33.1259 -1.40605 0
+-33.2806 -4.23169 0
+-32.4067 -7.99491 0
+-30.0496 -11.8322 0
+-26.128 -14.421 0
+-21.0871 -14.5357 0
+-15.7866 -11.7953 0
+-11.1287 -7.11485 0
+-7.63528 -2.41881 0
+-5.25078 0.375572 0
+-3.51307 0.525413 0
+-1.70604 -0.949822 0
+-0.597551 -1.28149 0
+-0.597551 -0.0274511 0
+-3.22678 -1.33072 0
+-6.96518 -2.3989 0
+-14.809 -3.87333 0
+-15.9945 -5.46057 0
+-17.9786 -5.32786 0
+-20.8393 -2.03441 0
+-24.2893 3.52777 0
+-27.6519 8.92969 0
+-30.1364 11.8676 0
+-31.2416 11.4817 0
+-30.9939 8.54616 0
+-29.8696 4.6843 0
+-28.4972 1.35973 0
+-27.3649 -0.702915 0
+-26.6861 -1.51526 0
+-26.4356 -1.48849 0
+-26.4679 -1.08539 0
+-26.6261 -0.630706 0
+-26.7995 -0.279147 0
+-26.9335 -0.064439 0
+-27.0148 0.0385409 0
+-27.0519 0.0703595 0
+-27.06 0.0659114 0
+-27.0532 0.0482163 0
+-27.0413 0.0296461 0
+-27.0298 0.0154959 0
+-27.0214 0.00701947 0
+-27.0166 0.00337964 0
+-27.0151 0.00305126 0
+-27.016 0.00465616 0
+-27.0185 0.00710805 0
+-27.0221 0.00960661 0
+-27.0262 0.0117574 0
+-27.0307 0.0134704 0
+-27.0352 0.0147098 0
+-27.0397 0.0155036 0
+-27.0441 0.0160323 0
+-27.0481 0.0165386 0
+-27.0516 0.0173944 0
+-27.0544 0.0194085 0
+-27.0569 0.0238008 0
+-27.0605 0.0315265 0
+-27.0681 0.0420419 0
+-27.083 0.05162 0
+-27.1075 0.0522434 0
+-27.1394 0.0335073 0
+-27.1699 -0.0108097 0
+-27.1836 -0.0734635 0
+-27.1641 -0.128154 0
+-27.1015 -0.136133 0
+-26.9987 -0.0689567 0
+-26.8689 0.0618123 0
+-26.7262 0.190557 0
+-26.5757 0.219963 0
+-26.4139 0.0766677 0
+-26.2417 -0.234115 0
+-26.0781 -0.619172 0
+-25.9585 -0.947601 0
+-25.9118 -1.12401 0
+-25.9353 -1.12339 0
+-25.9944 -0.964066 0
+-26.0493 -0.665694 0
+-26.0757 -0.253829 0
+-26.0674 0.21718 0
+-26.0338 0.672773 0
+-26.0029 1.04641 0
+-26.0177 1.28956 0
+-26.112 1.35397 0
+-26.2833 1.19878 0
+-26.4954 0.844984 0
+-26.708 0.405199 0
+-26.9019 0.0381706 0
+-27.0801 -0.14103 0
+-27.2492 -0.121887 0
+-27.4048 0.0127518 0
+-27.5308 0.151386 0
+-27.6116 0.218993 0
+-27.6438 0.202627 0
+-27.6385 0.134885 0
+-27.6147 0.0597001 0
+-27.5894 0.00645068 0
+-27.5727 -0.0171312 0
+-27.5668 -0.0182439 0
+-27.5691 -0.00865185 0
+-27.5756 0.00244592 0
+-27.5832 0.0106203 0
+-27.5902 0.0150961 0
+-27.5961 0.0167778 0
+-27.601 0.0168899 0
+-27.6052 0.0163672 0
+-27.6088 0.0157126 0
+-27.6121 0.0151482 0
+-27.6151 0.0147983 0
+-27.6179 0.0146921 0
+-27.6208 0.0147084 0
+-27.624 0.0145736 0
+-27.6282 0.0137873 0
+-27.6338 0.0114699 0
+-27.6414 0.00631661 0
+-27.6511 -0.00331223 0
+-27.6618 -0.0191429 0
+-27.6704 -0.0422879 0
+-27.6704 -0.071813 0
+-27.6513 -0.102545 0
+-27.598 -0.12219 0
+-27.4948 -0.108405 0
+-27.3324 -0.0284468 0
+-27.1232 0.152953 0
+-26.9189 0.449126 0
+-26.8224 0.803434 0
+-26.9716 1.02361 0
+-27.4758 0.734785 0
+-28.3053 -0.576552 0
+-29.1829 -3.3541 0
+-29.5678 -7.60999 0
+-28.8114 -12.5886 0
+-26.4626 -16.7697 0
+-22.5621 -18.4363 0
+-17.7073 -16.6501 0
+-12.7957 -12.0265 0
+-8.58715 -6.62733 0
+-5.39011 -2.82147 0
+-3.0986 -1.7661 0
+-1.16542 -2.47776 0
+-0.218475 -2.0448 0
+-0.218475 -0.274735 0
+-2.8267 -1.11528 0
+-6.17788 -1.97414 0
+-13.2052 -3.07504 0
+-14.6355 -4.03031 0
+-16.8199 -3.14353 0
+-19.5357 0.68141 0
+-22.2154 6.20739 0
+-24.1282 10.8424 0
+-24.7354 12.4748 0
+-23.9919 10.7382 0
+-22.364 6.91824 0
+-20.5548 2.87501 0
+-19.1467 -0.0483622 0
+-18.3916 -1.45801 0
+-18.2243 -1.68262 0
+-18.4156 -1.29726 0
+-18.7311 -0.76983 0
+-19.0172 -0.344689 0
+-19.2104 -0.0859004 0
+-19.3093 0.0344379 0
+-19.3395 0.0687112 0
+-19.3306 0.0614544 0
+-19.3057 0.0409834 0
+-19.2789 0.0213631 0
+-19.2568 0.0075099 0
+-19.2414 4.62894e-05 0
+-19.2322 -0.00211257 0
+-19.228 -0.000840554 0
+-19.2271 0.00210995 0
+-19.2282 0.00570628 0
+-19.2304 0.00928102 0
+-19.233 0.0122821 0
+-19.2359 0.0145934 0
+-19.2388 0.0164079 0
+-19.2419 0.0177468 0
+-19.245 0.0186012 0
+-19.2482 0.019194 0
+-19.2513 0.0196747 0
+-19.254 0.0201063 0
+-19.2557 0.0211117 0
+-19.2561 0.024104 0
+-19.2553 0.0307715 0
+-19.2554 0.042166 0
+-19.2606 0.0567649 0
+-19.2761 0.0677691 0
+-19.3054 0.0627928 0
+-19.3454 0.0291635 0
+-19.3831 -0.0357304 0
+-19.3967 -0.114631 0
+-19.3616 -0.171152 0
+-19.261 -0.169555 0
+-19.0913 -0.107946 0
+-18.861 -0.0397757 0
+-18.5854 -0.0556389 0
+-18.285 -0.223691 0
+-17.9918 -0.527367 0
+-17.7544 -0.856505 0
+-17.6283 -1.07374 0
+-17.6438 -1.1085 0
+-17.7758 -0.991391 0
+-17.9491 -0.790768 0
+-18.0867 -0.528171 0
+-18.1425 -0.198052 0
+-18.1009 0.175655 0
+-17.9743 0.546162 0
+-17.8093 0.88135 0
+-17.6882 1.1685 0
+-17.6918 1.35753 0
+-17.8461 1.35306 0
+-18.1172 1.11614 0
+-18.4458 0.733797 0
+-18.7808 0.373202 0
+-19.0899 0.168006 0
+-19.3513 0.139576 0
+-19.5475 0.208885 0
+-19.6673 0.271178 0
+-19.7138 0.265493 0
+-19.7058 0.194702 0
+-19.671 0.100032 0
+-19.6341 0.0228217 0
+-19.6097 -0.0179842 0
+-19.6008 -0.025993 0
+-19.6035 -0.0155872 0
+-19.6115 -0.00057594 0
+-19.6203 0.0112057 0
+-19.6275 0.0177846 0
+-19.6326 0.0202893 0
+-19.6363 0.020471 0
+-19.6391 0.0196858 0
+-19.6415 0.0187096 0
+-19.6435 0.0177845 0
+-19.6453 0.0169263 0
+-19.6467 0.0162145 0
+-19.6478 0.0157121 0
+-19.6484 0.0153447 0
+-19.6488 0.0149916 0
+-19.6495 0.0144322 0
+-19.6511 0.013092 0
+-19.6547 0.00995948 0
+-19.6616 0.00359766 0
+-19.6728 -0.0079569 0
+-19.6881 -0.0269893 0
+-19.7047 -0.0552144 0
+-19.715 -0.092287 0
+-19.7038 -0.133398 0
+-19.6468 -0.165399 0
+-19.5127 -0.162541 0
+-19.2736 -0.0860939 0
+-18.9277 0.103243 0
+-18.5309 0.406631 0
+-18.2205 0.713198 0
+-18.1971 0.711386 0
+-18.6347 -0.138995 0
+-19.5301 -2.45873 0
+-20.5745 -6.56555 0
+-21.1711 -11.992 0
+-20.6642 -17.2767 0
+-18.6885 -20.412 0
+-15.4123 -19.9263 0
+-11.4791 -15.9597 0
+-7.67353 -10.4329 0
+-4.5603 -5.9347 0
+-2.36584 -3.96056 0
+-0.672027 -3.67353 0
+0.00392688 -2.48908 0
+0.00392688 -0.312779 0
+-2.40193 -0.907417 0
+-5.26741 -1.56531 0
+-11.2244 -2.3232 0
+-12.5174 -2.73732 0
+-14.3231 -1.33794 0
+-16.2154 2.5737 0
+-17.5409 7.53283 0
+-17.7378 11.0393 0
+-16.6655 11.4025 0
+-14.714 8.78664 0
+-12.5967 4.80093 0
+-10.9714 1.24969 0
+-10.1511 -0.868673 0
+-10.0625 -1.54664 0
+-10.4086 -1.33649 0
+-10.8778 -0.828162 0
+-11.2692 -0.378422 0
+-11.511 -0.102861 0
+-11.6164 0.0194299 0
+-11.6313 0.0493172 0
+-11.6009 0.0383292 0
+-11.5566 0.0171026 0
+-11.5153 -0.000270016 0
+-11.4839 -0.0100514 0
+-11.463 -0.0134574 0
+-11.4505 -0.0124047 0
+-11.4443 -0.00840839 0
+-11.4419 -0.00322708 0
+-11.4416 0.00177566 0
+-11.4422 0.00634454 0
+-11.4433 0.0103832 0
+-11.4445 0.0134661 0
+-11.4456 0.0156961 0
+-11.4468 0.0175769 0
+-11.4482 0.019084 0
+-11.4496 0.0200767 0
+-11.4514 0.0209253 0
+-11.4535 0.0217708 0
+-11.4557 0.0222691 0
+-11.4572 0.0226834 0
+-11.4574 0.0242442 0
+-11.4552 0.0286156 0
+-11.4509 0.0377868 0
+-11.4469 0.0527794 0
+-11.449 0.0698888 0
+-11.4642 0.0779984 0
+-11.4963 0.0612576 0
+-11.5397 0.00769478 0
+-11.5751 -0.0792763 0
+-11.5712 -0.17504 0
+-11.495 -0.245809 0
+-11.3241 -0.278866 0
+-11.0561 -0.307775 0
+-10.7109 -0.400826 0
+-10.3287 -0.60585 0
+-9.96737 -0.888741 0
+-9.69658 -1.1273 0
+-9.58121 -1.18912 0
+-9.64844 -1.04128 0
+-9.85566 -0.784181 0
+-10.0979 -0.548491 0
+-10.2788 -0.347305 0
+-10.3479 -0.128973 0
+-10.2869 0.114672 0
+-10.1049 0.36413 0
+-9.84966 0.626104 0
+-9.62543 0.94427 0
+-9.54862 1.28072 0
+-9.66928 1.47371 0
+-9.96107 1.40793 0
+-10.3552 1.12797 0
+-10.7763 0.794297 0
+-11.1608 0.552465 0
+-11.4628 0.441608 0
+-11.6582 0.404253 0
+-11.748 0.360956 0
+-11.7566 0.274164 0
+-11.7215 0.159562 0
+-11.6778 0.0563156 0
+-11.6474 -0.00755269 0
+-11.6364 -0.0289847 0
+-11.64 -0.0223751 0
+-11.6501 -0.00546261 0
+-11.6604 0.00967152 0
+-11.6678 0.0185756 0
+-11.672 0.0220552 0
+-11.6742 0.022509 0
+-11.6755 0.0216934 0
+-11.6763 0.0205582 0
+-11.6772 0.0195473 0
+-11.678 0.0186081 0
+-11.6786 0.0175556 0
+-11.6789 0.0164798 0
+-11.6787 0.0154907 0
+-11.6778 0.0144783 0
+-11.6762 0.0134013 0
+-11.6741 0.0122954 0
+-11.6719 0.0108676 0
+-11.6704 0.00848426 0
+-11.6711 0.00429399 0
+-11.6759 -0.00314404 0
+-11.6868 -0.0160575 0
+-11.7051 -0.0369783 0
+-11.7291 -0.0682245 0
+-11.7514 -0.111094 0
+-11.7535 -0.163305 0
+-11.7017 -0.214401 0
+-11.5469 -0.240874 0
+-11.2374 -0.206232 0
+-10.7512 -0.0795831 0
+-10.1447 0.106755 0
+-9.58999 0.156635 0
+-9.3496 -0.379385 0
+-9.65539 -2.15295 0
+-10.5236 -5.69734 0
+-11.6286 -10.8869 0
+-12.3721 -16.5332 0
+-12.1661 -20.618 0
+-10.7684 -21.3241 0
+-8.42996 -18.2981 0
+-5.74873 -13.1141 0
+-3.35607 -8.32735 0
+-1.68524 -5.6314 0
+-0.369892 -4.39845 0
+0.0620274 -2.63988 0
+0.0620274 -0.224693 0
+-2.0117 -0.731384 0
+-4.38935 -1.22512 0
+-9.261 -1.7208 0
+-10.232 -1.76629 0
+-11.4171 -0.152922 0
+-12.3127 3.4693 0
+-12.3523 7.57235 0
+-11.2652 9.95223 0
+-9.28892 9.42614 0
+-7.0678 6.56551 0
+-5.30005 3.03316 0
+-4.38482 0.334454 0
+-4.29766 -0.95585 0
+-4.72197 -1.12234 0
+-5.28819 -0.770285 0
+-5.74842 -0.367949 0
+-6.0169 -0.109962 0
+-6.1176 -0.00217531 0
+-6.11414 0.0159575 0
+-6.06476 -7.71169e-05 0
+-6.00639 -0.0200593 0
+-5.9564 -0.0329061 0
+-5.92013 -0.0365518 0
+-5.89686 -0.0333346 0
+-5.88326 -0.0270721 0
+-5.87592 -0.0197545 0
+-5.87248 -0.0118558 0
+-5.87117 -0.00455753 0
+-5.87058 0.00117978 0
+-5.8702 0.00595638 0
+-5.87 0.0101726 0
+-5.86978 0.0132287 0
+-5.86943 0.015338 0
+-5.86924 0.0173816 0
+-5.86933 0.0191649 0
+-5.86955 0.0202865 0
+-5.87004 0.0214125 0
+-5.87111 0.0228249 0
+-5.87261 0.0237658 0
+-5.87415 0.0242198 0
+-5.87511 0.0251966 0
+-5.87416 0.0276539 0
+-5.86974 0.0333662 0
+-5.86201 0.0450376 0
+-5.85437 0.062246 0
+-5.85357 0.0771979 0
+-5.86722 0.0748955 0
+-5.89743 0.0379006 0
+-5.93262 -0.0440841 0
+-5.94393 -0.163739 0
+-5.8916 -0.298138 0
+-5.74039 -0.430081 0
+-5.47721 -0.570967 0
+-5.12267 -0.755369 0
+-4.73055 -0.99798 0
+-4.37568 -1.24362 0
+-4.13555 -1.36744 0
+-4.06834 -1.25633 0
+-4.18764 -0.921996 0
+-4.43851 -0.533322 0
+-4.69988 -0.287128 0
+-4.88018 -0.167007 0
+-4.94645 -0.0627111 0
+-4.88488 0.0530949 0
+-4.69645 0.175697 0
+-4.40811 0.337754 0
+-4.12044 0.6566 0
+-3.97031 1.13059 0
+-4.0255 1.5289 0
+-4.27727 1.6597 0
+-4.66373 1.51443 0
+-5.09826 1.22882 0
+-5.49547 0.949678 0
+-5.79275 0.738884 0
+-5.96474 0.57624 0
+-6.02526 0.421482 0
+-6.01436 0.26326 0
+-5.97718 0.122385 0
+-5.94627 0.0254072 0
+-5.93459 -0.0192274 0
+-5.93945 -0.0241235 0
+-5.95175 -0.0100773 0
+-5.9637 0.00648722 0
+-5.97165 0.017623 0
+-5.97538 0.0223103 0
+-5.9764 0.0230799 0
+-5.97636 0.0224665 0
+-5.97614 0.0214775 0
+-5.97603 0.0204431 0
+-5.97609 0.0196082 0
+-5.97622 0.0187466 0
+-5.97619 0.01752 0
+-5.97582 0.0161098 0
+-5.97502 0.0146972 0
+-5.97358 0.0130368 0
+-5.97126 0.0110775 0
+-5.96801 0.00905031 0
+-5.96393 0.00678405 0
+-5.95928 0.00383937 0
+-5.95493 -6.25546e-05 0
+-5.95243 -0.0056356 0
+-5.95401 -0.0144795 0
+-5.96243 -0.0285557 0
+-5.98041 -0.0502523 0
+-6.00831 -0.0831865 0
+-6.03988 -0.131743 0
+-6.05537 -0.198909 0
+-6.01348 -0.282759 0
+-5.84828 -0.371438 0
+-5.48421 -0.443655 0
+-4.8808 -0.496653 0
+-4.09916 -0.625005 0
+-3.3473 -1.13124 0
+-2.93942 -2.56083 0
+-3.13987 -5.4969 0
+-3.96011 -10.0667 0
+-5.06133 -15.432 0
+-5.88124 -19.7981 0
+-5.94003 -21.2653 0
+-5.12022 -19.1179 0
+-3.72088 -14.5134 0
+-2.26853 -9.7797 0
+-1.25117 -6.64875 0
+-0.269363 -4.69535 0
+0.0118213 -2.58871 0
+0.0118213 -0.0842619 0
+-1.67557 -0.592459 0
+-3.61846 -0.965183 0
+-7.53299 -1.28641 0
+-8.16431 -1.13498 0
+-8.76538 0.448129 0
+-8.86209 3.56599 0
+-8.06706 6.77729 0
+-6.39346 8.27862 0
+-4.31348 7.34614 0
+-2.50048 4.7525 0
+-1.44753 1.9802 0
+-1.24132 0.128236 0
+-1.61577 -0.581413 0
+-2.18456 -0.55357 0
+-2.6588 -0.296054 0
+-2.92825 -0.0985143 0
+-3.01695 -0.0212732 0
+-2.99852 -0.0206266 0
+-2.93837 -0.0442085 0
+-2.87537 -0.0630896 0
+-2.82525 -0.0701905 0
+-2.79042 -0.0677522 0
+-2.76843 -0.0585546 0
+-2.75575 -0.0460248 0
+-2.74872 -0.0341228 0
+-2.74466 -0.0238193 0
+-2.74238 -0.014149 0
+-2.74099 -0.00596065 0
+-2.73963 -0.00019078 0
+-2.73823 0.00454202 0
+-2.73708 0.00901495 0
+-2.736 0.0121385 0
+-2.73484 0.014168 0
+-2.73396 0.016492 0
+-2.73344 0.0186397 0
+-2.73297 0.0198037 0
+-2.73265 0.0210855 0
+-2.73286 0.023025 0
+-2.73352 0.0244216 0
+-2.7345 0.0251936 0
+-2.73576 0.0264477 0
+-2.73633 0.0282192 0
+-2.73417 0.0311992 0
+-2.72768 0.0385437 0
+-2.71732 0.0518824 0
+-2.70677 0.0666397 0
+-2.70301 0.0711329 0
+-2.7122 0.0470898 0
+-2.73072 -0.0255781 0
+-2.73758 -0.156875 0
+-2.69612 -0.339604 0
+-2.56745 -0.558758 0
+-2.33224 -0.80619 0
+-2.00971 -1.0779 0
+-1.66025 -1.34745 0
+-1.36659 -1.5373 0
+-1.20285 -1.53119 0
+-1.20663 -1.25256 0
+-1.36515 -0.763483 0
+-1.61394 -0.284545 0
+-1.82924 -0.0718379 0
+-1.95858 -0.0376682 0
+-2.00522 -0.0160722 0
+-1.96357 0.0114424 0
+-1.82703 0.0391499 0
+-1.58231 0.09303 0
+-1.28913 0.363416 0
+-1.08814 0.929601 0
+-1.06061 1.50136 0
+-1.22812 1.82722 0
+-1.55032 1.83663 0
+-1.94171 1.62021 0
+-2.30599 1.31396 0
+-2.5724 1.00529 0
+-2.71764 0.721487 0
+-2.76374 0.467583 0
+-2.75578 0.255297 0
+-2.73567 0.102275 0
+-2.72676 0.0165026 0
+-2.73296 -0.013028 0
+-2.74708 -0.0100051 0
+-2.76069 0.00354052 0
+-2.76954 0.0153374 0
+-2.77344 0.0215189 0
+-2.77406 0.0229331 0
+-2.77335 0.0223759 0
+-2.77262 0.0217359 0
+-2.77218 0.0210398 0
+-2.7719 0.0201596 0
+-2.77173 0.0194374 0
+-2.77158 0.0186017 0
+-2.77122 0.0171628 0
+-2.77056 0.0154503 0
+-2.76961 0.0137447 0
+-2.76815 0.0115817 0
+-2.76592 0.00884822 0
+-2.76283 0.00595776 0
+-2.75876 0.00271074 0
+-2.75353 -0.00138536 0
+-2.74737 -0.00622895 0
+-2.74101 -0.0119935 0
+-2.73569 -0.0197995 0
+-2.73349 -0.030755 0
+-2.73765 -0.0460907 0
+-2.75187 -0.0689691 0
+-2.77828 -0.105336 0
+-2.81292 -0.164262 0
+-2.83664 -0.259041 0
+-2.80284 -0.405242 0
+-2.63226 -0.614232 0
+-2.23274 -0.896175 0
+-1.55741 -1.30033 0
+-0.685139 -2.00352 0
+0.13805 -3.38402 0
+0.568944 -5.92779 0
+0.354606 -9.85234 0
+-0.471207 -14.6062 0
+-1.54597 -18.7233 0
+-2.36394 -20.4473 0
+-2.57891 -18.9029 0
+-2.20492 -14.8874 0
+-1.5759 -10.4087 0
+-1.11937 -7.10528 0
+-0.3294 -4.69878 0
+-0.0943238 -2.4368 0
+-0.0943238 0.0585623 0
+-1.39483 -0.486225 0
+-2.97775 -0.774944 0
+-6.11832 -0.991999 0
+-6.48365 -0.76966 0
+-6.67577 0.640231 0
+-6.31053 3.20073 0
+-5.18544 5.65217 0
+-3.50244 6.5956 0
+-1.79548 5.63917 0
+-0.607181 3.56418 0
+-0.175456 1.54846 0
+-0.361732 0.314501 0
+-0.823301 -0.119855 0
+-1.25035 -0.126538 0
+-1.49747 -0.0489457 0
+-1.57112 -0.0248827 0
+-1.544 -0.048405 0
+-1.48303 -0.0816129 0
+-1.42484 -0.102413 0
+-1.38193 -0.106011 0
+-1.35416 -0.0979753 0
+-1.33709 -0.0848322 0
+-1.32691 -0.0687524 0
+-1.32109 -0.0518627 0
+-1.31742 -0.0378019 0
+-1.31457 -0.026677 0
+-1.31241 -0.0163272 0
+-1.31068 -0.0076971 0
+-1.30881 -0.00207067 0
+-1.30693 0.00264888 0
+-1.30547 0.00754634 0
+-1.30418 0.0108344 0
+-1.30281 0.012793 0
+-1.30178 0.0154489 0
+-1.30114 0.0179921 0
+-1.30045 0.0190998 0
+-1.29977 0.0203961 0
+-1.29947 0.0227191 0
+-1.29939 0.0243394 0
+-1.29947 0.0252607 0
+-1.3001 0.0270784 0
+-1.30099 0.0291005 0
+-1.30053 0.0307307 0
+-1.29682 0.0348273 0
+-1.28851 0.0435673 0
+-1.2759 0.0540289 0
+-1.26277 0.0579883 0
+-1.25501 0.0393242 0
+-1.25363 -0.0269574 0
+-1.24635 -0.164156 0
+-1.20532 -0.380643 0
+-1.0961 -0.667985 0
+-0.898208 -1.00409 0
+-0.627598 -1.34852 0
+-0.343195 -1.63186 0
+-0.126566 -1.75394 0
+-0.0430019 -1.61477 0
+-0.105597 -1.18998 0
+-0.265877 -0.603213 0
+-0.444491 -0.105936 0
+-0.532954 0.0166222 0
+-0.572953 0.00232835 0
+-0.588999 -2.80783e-05 0
+-0.577392 -0.000165617 0
+-0.535745 -0.00249855 0
+-0.427842 -0.0148746 0
+-0.209638 0.14521 0
+-0.00436708 0.724328 0
+0.0888075 1.40819 0
+0.00888634 1.90714 0
+-0.229918 2.07544 0
+-0.550658 1.94095 0
+-0.857559 1.62086 0
+-1.0815 1.22923 0
+-1.20345 0.84344 0
+-1.24748 0.511613 0
+-1.25411 0.261931 0
+-1.25524 0.103399 0
+-1.26417 0.0254393 0
+-1.2796 0.00239673 0
+-1.29475 0.00515098 0
+-1.3049 0.0136867 0
+-1.30958 0.0200269 0
+-1.31072 0.0226589 0
+-1.31027 0.0224858 0
+-1.30958 0.0216876 0
+-1.30928 0.0214303 0
+-1.30922 0.0209815 0
+-1.3091 0.02004 0
+-1.30893 0.0192687 0
+-1.30871 0.0183881 0
+-1.30826 0.0167069 0
+-1.30753 0.0147235 0
+-1.30663 0.012842 0
+-1.30538 0.0103323 0
+-1.30354 0.00700829 0
+-1.30107 0.00349451 0
+-1.29785 -0.000510485 0
+-1.29352 -0.00571491 0
+-1.28795 -0.0117962 0
+-1.28132 -0.0186236 0
+-1.27391 -0.0272112 0
+-1.26651 -0.0381591 0
+-1.26099 -0.0516106 0
+-1.26034 -0.0696213 0
+-1.26845 -0.0972241 0
+-1.28903 -0.143681 0
+-1.32055 -0.227523 0
+-1.34481 -0.380978 0
+-1.31213 -0.646912 0
+-1.13642 -1.07188 0
+-0.722899 -1.71386 0
+-0.0398006 -2.68662 0
+0.7981 -4.22192 0
+1.51203 -6.64172 0
+1.77049 -10.1108 0
+1.39422 -14.2299 0
+0.509982 -17.8391 0
+-0.492601 -19.4447 0
+-1.20087 -18.1946 0
+-1.4406 -14.6477 0
+-1.35689 -10.4924 0
+-1.26579 -7.19639 0
+-0.503415 -4.55937 0
+-0.226217 -2.26644 0
+-0.226217 0.174981 0
+-1.16397 -0.405205 0
+-2.46124 -0.636683 0
+-5.00606 -0.79564 0
+-5.20207 -0.573659 0
+-5.17592 0.614065 0
+-4.64746 2.67225 0
+-3.5498 4.5545 0
+-2.15761 5.2034 0
+-0.940637 4.42219 0
+-0.258489 2.88202 0
+-0.156517 1.44648 0
+-0.409679 0.56765 0
+-0.7278 0.198254 0
+-0.930886 0.076535 0
+-0.989017 0.00917137 0
+-0.958493 -0.0554208 0
+-0.902821 -0.104092 0
+-0.855529 -0.12892 0
+-0.824193 -0.133763 0
+-0.806005 -0.124214 0
+-0.7961 -0.107894 0
+-0.79029 -0.0906566 0
+-0.786475 -0.0725809 0
+-0.783912 -0.0544391 0
+-0.781748 -0.0399795 0
+-0.779507 -0.0289307 0
+-0.777555 -0.0182913 0
+-0.775929 -0.00933507 0
+-0.774167 -0.003845 0
+-0.772439 0.000910319 0
+-0.771181 0.00627741 0
+-0.770095 0.00973841 0
+-0.768912 0.0115999 0
+-0.768024 0.0145511 0
+-0.767486 0.0174458 0
+-0.766831 0.0184352 0
+-0.766103 0.0196607 0
+-0.765622 0.0222302 0
+-0.765125 0.0238346 0
+-0.764456 0.024584 0
+-0.764122 0.026737 0
+-0.764217 0.0291888 0
+-0.763845 0.0303531 0
+-0.761729 0.0327046 0
+-0.756243 0.0380753 0
+-0.745801 0.043581 0
+-0.730993 0.0431751 0
+-0.715276 0.0236015 0
+-0.700834 -0.0414042 0
+-0.681878 -0.183118 0
+-0.640655 -0.421872 0
+-0.55146 -0.757187 0
+-0.396077 -1.15948 0
+-0.184924 -1.55968 0
+0.0333695 -1.85017 0
+0.188179 -1.90876 0
+0.224689 -1.65129 0
+0.143549 -1.10885 0
+0.01952 -0.479191 0
+-0.0269637 -0.0594558 0
+-0.0129005 0.00255888 0
+-0.0108081 0.000235863 0
+-0.0108452 9.01079e-06 0
+-0.0109875 -2.34157e-05 0
+-0.013196 -0.00029005 0
+-0.0253332 -0.00273748 0
+0.0470605 0.0728152 0
+0.210294 0.561093 0
+0.322345 1.29613 0
+0.294426 1.93505 0
+0.125453 2.24441 0
+-0.119832 2.18624 0
+-0.358467 1.85949 0
+-0.533312 1.40408 0
+-0.631781 0.94191 0
+-0.675374 0.555207 0
+-0.694611 0.281169 0
+-0.709783 0.118572 0
+-0.726827 0.0424846 0
+-0.743202 0.0187737 0
+-0.755075 0.017025 0
+-0.761344 0.0199573 0
+-0.763682 0.0223658 0
+-0.764275 0.0232538 0
+-0.764369 0.0225807 0
+-0.764508 0.0218274 0
+-0.764864 0.0217877 0
+-0.765194 0.0213125 0
+-0.765256 0.0201034 0
+-0.765167 0.0191809 0
+-0.765006 0.018228 0
+-0.764615 0.0163162 0
+-0.763994 0.0141028 0
+-0.763271 0.0121199 0
+-0.762316 0.00937721 0
+-0.760933 0.00562564 0
+-0.759151 0.00171294 0
+-0.756889 -0.00277217 0
+-0.753805 -0.00879879 0
+-0.749691 -0.0159099 0
+-0.744502 -0.0238131 0
+-0.738066 -0.0336475 0
+-0.730369 -0.0458561 0
+-0.722022 -0.059958 0
+-0.714294 -0.0773492 0
+-0.709417 -0.102101 0
+-0.711279 -0.14182 0
+-0.724517 -0.214284 0
+-0.74897 -0.356526 0
+-0.767181 -0.628701 0
+-0.728938 -1.11013 0
+-0.550961 -1.89183 0
+-0.156702 -3.08088 0
+0.444289 -4.82291 0
+1.09097 -7.2884 0
+1.50046 -10.5203 0
+1.42016 -14.1496 0
+0.813043 -17.232 0
+-0.08254 -18.5492 0
+-0.898414 -17.3788 0
+-1.38559 -14.1605 0
+-1.56079 -10.3172 0
+-1.63425 -7.12293 0
+-0.754722 -4.40119 0
+-0.370705 -2.13316 0
+-0.370705 0.250661 0
+-0.975419 -0.342437 0
+-2.04975 -0.534161 0
+-4.14355 -0.660676 0
+-4.2497 -0.46751 0
+-4.14598 0.510329 0
+-3.64064 2.16689 0
+-2.73897 3.65282 0
+-1.70025 4.16466 0
+-0.876392 3.59831 0
+-0.47373 2.47935 0
+-0.447503 1.42024 0
+-0.594875 0.71501 0
+-0.726937 0.330303 0
+-0.767584 0.117168 0
+-0.738048 -0.0203784 0
+-0.689165 -0.104319 0
+-0.652629 -0.140642 0
+-0.633591 -0.147973 0
+-0.625654 -0.141715 0
+-0.623051 -0.126831 0
+-0.622583 -0.108377 0
+-0.622375 -0.0908786 0
+-0.62188 -0.0730895 0
+-0.621266 -0.0550673 0
+-0.620365 -0.0408931 0
+-0.619096 -0.0302129 0
+-0.617886 -0.0195133 0
+-0.616853 -0.01038 0
+-0.615693 -0.00501704 0
+-0.614549 -0.000245053 0
+-0.613746 0.00546408 0
+-0.613051 0.00903306 0
+-0.612251 0.0107893 0
+-0.611639 0.0139298 0
+-0.611259 0.0170565 0
+-0.610752 0.0179197 0
+-0.610146 0.0190469 0
+-0.609656 0.0217316 0
+-0.609016 0.0231873 0
+-0.608013 0.0235731 0
+-0.606965 0.0256818 0
+-0.606016 0.0282335 0
+-0.604773 0.0291032 0
+-0.602663 0.0305882 0
+-0.598587 0.0339934 0
+-0.590715 0.0357032 0
+-0.578027 0.0304816 0
+-0.561681 0.00725041 0
+-0.543439 -0.0596514 0
+-0.521626 -0.204938 0
+-0.487198 -0.456306 0
+-0.423875 -0.820516 0
+-0.316976 -1.26639 0
+-0.169257 -1.70741 0
+-0.0111367 -2.0083 0
+0.107958 -2.02787 0
+0.147006 -1.69035 0
+0.104702 -1.06656 0
+0.0322184 -0.406715 0
+-0.000831777 -0.0264081 0
+-0.000352112 0.00207915 0
+-0.000188226 7.20056e-05 0
+-0.000180905 1.68344e-06 0
+-0.0001998 -4.53824e-06 0
+-0.000397238 -9.2628e-05 0
+-0.000694185 -0.00244057 0
+0.0442247 0.0278952 0
+0.14069 0.464625 0
+0.204762 1.23206 0
+0.173753 1.96606 0
+0.0474104 2.37075 0
+-0.12691 2.36056 0
+-0.291537 2.02412 0
+-0.410442 1.52298 0
+-0.479542 1.01101 0
+-0.515708 0.591373 0
+-0.538183 0.303646 0
+-0.557297 0.137686 0
+-0.574556 0.0597451 0
+-0.588025 0.0322436 0
+-0.596505 0.0255063 0
+-0.600811 0.0242646 0
+-0.602883 0.0244389 0
+-0.604205 0.0245774 0
+-0.605266 0.0236431 0
+-0.60616 0.0227224 0
+-0.606935 0.0225638 0
+-0.607471 0.0218495 0
+-0.607681 0.0203144 0
+-0.607721 0.0192226 0
+-0.607688 0.0181952 0
+-0.607476 0.0161047 0
+-0.607094 0.0137212 0
+-0.606649 0.0116755 0
+-0.606055 0.00878367 0
+-0.605181 0.0047519 0
+-0.604069 0.000601134 0
+-0.60268 -0.00416117 0
+-0.600764 -0.0107144 0
+-0.598142 -0.018532 0
+-0.594712 -0.0272435 0
+-0.590211 -0.0381489 0
+-0.584375 -0.0516927 0
+-0.577218 -0.0671144 0
+-0.568983 -0.0855848 0
+-0.560274 -0.11081 0
+-0.552792 -0.149303 0
+-0.55009 -0.216986 0
+-0.556955 -0.349661 0
+-0.574036 -0.611621 0
+-0.585011 -1.09915 0
+-0.544158 -1.93269 0
+-0.386815 -3.23822 0
+-0.0799038 -5.12982 0
+0.309825 -7.67813 0
+0.596681 -10.8072 0
+0.562008 -14.1149 0
+0.11143 -16.7814 0
+-0.625525 -17.8122 0
+-1.36407 -16.6402 0
+-1.86343 -13.6612 0
+-2.08481 -10.0959 0
+-2.16883 -7.03891 0
+-1.06028 -4.30822 0
+-0.524343 -2.06931 0
+-0.524343 0.279681 0
+-0.821499 -0.29272 0
+-1.72118 -0.455746 0
+-3.46996 -0.562516 0
+-3.53555 -0.401927 0
+-3.4307 0.40547 0
+-3.02683 1.763 0
+-2.35209 2.97806 0
+-1.60665 3.4192 0
+-1.02635 3.018 0
+-0.723696 2.17669 0
+-0.645692 1.34223 0
+-0.660002 0.729308 0
+-0.666136 0.336424 0
+-0.638568 0.0895869 0
+-0.59874 -0.0602206 0
+-0.570515 -0.132558 0
+-0.560029 -0.151143 0
+-0.560831 -0.147185 0
+-0.565456 -0.137105 0
+-0.570359 -0.121943 0
+-0.574543 -0.104208 0
+-0.577654 -0.0877813 0
+-0.579716 -0.0710414 0
+-0.581002 -0.0537947 0
+-0.581655 -0.0402541 0
+-0.581798 -0.0300817 0
+-0.581712 -0.019612 0
+-0.581536 -0.0105679 0
+-0.581225 -0.00534029 0
+-0.580865 -0.000615617 0
+-0.580596 0.00518385 0
+-0.580337 0.00876436 0
+-0.580013 0.0104548 0
+-0.579731 0.0136387 0
+-0.579506 0.0168226 0
+-0.579196 0.0176006 0
+-0.578793 0.0186355 0
+-0.578347 0.0212772 0
+-0.577704 0.0225368 0
+-0.576702 0.0225635 0
+-0.575373 0.0243463 0
+-0.573727 0.02658 0
+-0.571629 0.0269984 0
+-0.568872 0.0278251 0
+-0.564864 0.0299793 0
+-0.558382 0.0292158 0
+-0.548309 0.0204028 0
+-0.534799 -0.00626538 0
+-0.519414 -0.075041 0
+-0.503417 -0.220941 0
+-0.484565 -0.475164 0
+-0.454817 -0.850272 0
+-0.402942 -1.31827 0
+-0.322975 -1.78739 0
+-0.222563 -2.10872 0
+-0.122839 -2.12761 0
+-0.0477386 -1.76547 0
+-0.00941641 -1.10489 0
+-0.00016207 -0.415976 0
+-5.00991e-05 -0.0265223 0
+-2.1362e-06 0.00203114 0
+1.28352e-06 6.86458e-05 0
+6.67013e-07 2.31787e-06 0
+-1.42935e-07 -3.72201e-06 0
+-9.64277e-06 -8.31592e-05 0
+-2.98607e-05 -0.0024204 0
+0.0032417 0.0246226 0
+0.00182472 0.46604 0
+-0.028826 1.26271 0
+-0.100757 2.03799 0
+-0.202634 2.47263 0
+-0.308401 2.46632 0
+-0.394048 2.10977 0
+-0.44998 1.57891 0
+-0.481707 1.04274 0
+-0.501216 0.610882 0
+-0.517535 0.319966 0
+-0.533284 0.153436 0
+-0.547105 0.0735666 0
+-0.557394 0.0425341 0
+-0.564027 0.0321406 0
+-0.568071 0.0283101 0
+-0.570791 0.0271601 0
+-0.572913 0.0267009 0
+-0.574603 0.0253342 0
+-0.575877 0.0239971 0
+-0.576798 0.023486 0
+-0.577408 0.0224613 0
+-0.577759 0.0206658 0
+-0.577963 0.0194271 0
+-0.578087 0.0183204 0
+-0.578112 0.0161304 0
+-0.57805 0.0136597 0
+-0.577945 0.0115708 0
+-0.577767 0.00860618 0
+-0.577466 0.00445118 0
+-0.577051 0.00018579 0
+-0.576494 -0.0047185 0
+-0.57567 -0.0115377 0
+-0.57445 -0.0197527 0
+-0.5727 -0.0289931 0
+-0.570208 -0.0406413 0
+-0.566721 -0.0551804 0
+-0.562046 -0.0717899 0
+-0.556064 -0.0915671 0
+-0.548762 -0.118113 0
+-0.540419 -0.157646 0
+-0.532236 -0.225169 0
+-0.52762 -0.354277 0
+-0.532254 -0.606988 0
+-0.548735 -1.08267 0
+-0.565827 -1.9156 0
+-0.554594 -3.24945 0
+-0.489635 -5.19478 0
+-0.393999 -7.77376 0
+-0.367909 -10.8332 0
+-0.549244 -13.9336 0
+-1.00718 -16.3235 0
+-1.65435 -17.165 0
+-2.27723 -16.0173 0
+-2.68218 -13.2562 0
+-2.83016 -9.94788 0
+-2.8322 -7.03687 0
+-1.41144 -4.32787 0
+-0.690046 -2.09156 0
+-0.690046 0.259688 0
+-0.695331 -0.252537 0
+-1.45599 -0.394226 0
+-2.93393 -0.487774 0
+-2.98164 -0.354217 0
+-2.90162 0.325436 0
+-2.60681 1.46818 0
+-2.12286 2.4941 0
+-1.58396 2.88028 0
+-1.13622 2.57025 0
+-0.84696 1.88741 0
+-0.693181 1.18844 0
+-0.614274 0.650388 0
+-0.565226 0.287365 0
+-0.531332 0.0556789 0
+-0.513128 -0.0784377 0
+-0.509916 -0.135784 0
+-0.516283 -0.144789 0
+-0.526356 -0.137127 0
+-0.536585 -0.12689 0
+-0.545482 -0.11306 0
+-0.552751 -0.0969526 0
+-0.558577 -0.0819695 0
+-0.563063 -0.0665687 0
+-0.566307 -0.0505643 0
+-0.568641 -0.0379327 0
+-0.570356 -0.0283799 0
+-0.571512 -0.0184682 0
+-0.572259 -0.00983257 0
+-0.572854 -0.00475634 0
+-0.573325 -0.000156246 0
+-0.573591 0.00543952 0
+-0.573767 0.00893002 0
+-0.573942 0.0106207 0
+-0.574007 0.0136938 0
+-0.573938 0.0167444 0
+-0.573849 0.017503 0
+-0.573686 0.0184648 0
+-0.573306 0.0208885 0
+-0.572715 0.0219387 0
+-0.571884 0.0217246 0
+-0.570588 0.0230438 0
+-0.568699 0.0246841 0
+-0.566242 0.0245347 0
+-0.563064 0.0246411 0
+-0.558747 0.0256565 0
+-0.552761 0.0232238 0
+-0.544633 0.0122694 0
+-0.534695 -0.0162094 0
+-0.525232 -0.0845094 0
+-0.520279 -0.225899 0
+-0.523034 -0.472415 0
+-0.532248 -0.841065 0
+-0.539929 -1.3106 0
+-0.532192 -1.79514 0
+-0.493694 -2.14723 0
+-0.414235 -2.20708 0
+-0.295932 -1.88378 0
+-0.160164 -1.24067 0
+-0.0486137 -0.527533 0
+-0.000812856 -0.0743255 0
+1.41128e-05 0.00120411 0
+1.41042e-05 6.86501e-05 0
+8.63331e-06 7.78892e-06 0
+1.55321e-05 -1.06324e-05 0
+2.15437e-05 -8.92712e-05 0
+-0.000833434 -0.00156547 0
+-0.0520258 0.0758138 0
+-0.171429 0.585441 0
+-0.314886 1.40616 0
+-0.436373 2.15948 0
+-0.513686 2.54994 0
+-0.546833 2.49947 0
+-0.548887 2.11182 0
+-0.537147 1.56717 0
+-0.52595 1.03154 0
+-0.522535 0.607468 0
+-0.527164 0.324596 0
+-0.536261 0.162534 0
+-0.545889 0.0831959 0
+-0.553801 0.0504471 0
+-0.559636 0.0379769 0
+-0.563917 0.0325925 0
+-0.567133 0.0303768 0
+-0.569567 0.0291366 0
+-0.571415 0.027183 0
+-0.572767 0.0253506 0
+-0.573682 0.0244022 0
+-0.574308 0.0230877 0
+-0.574788 0.0211466 0
+-0.575153 0.0197933 0
+-0.575432 0.0186001 0
+-0.575706 0.0164045 0
+-0.57599 0.0139444 0
+-0.576249 0.0118306 0
+-0.576515 0.00887246 0
+-0.576825 0.00476129 0
+-0.577135 0.000496006 0
+-0.577414 -0.00443965 0
+-0.57767 -0.011282 0
+-0.577822 -0.019601 0
+-0.57771 -0.0291055 0
+-0.577206 -0.0411449 0
+-0.576148 -0.0562393 0
+-0.57425 -0.0736876 0
+-0.571265 -0.0945529 0
+-0.56708 -0.122298 0
+-0.561581 -0.163145 0
+-0.554867 -0.231883 0
+-0.548623 -0.360522 0
+-0.548315 -0.607296 0
+-0.563784 -1.0672 0
+-0.605448 -1.87393 0
+-0.678791 -3.17611 0
+-0.787237 -5.08633 0
+-0.948946 -7.61206 0
+-1.21106 -10.5711 0
+-1.62992 -13.5147 0
+-2.21116 -15.7422 0
+-2.85855 -16.5176 0
+-3.39979 -15.4761 0
+-3.69345 -12.9625 0
+-3.72773 -9.91361 0
+-3.61103 -7.15357 0
+-1.81232 -4.48012 0
+-0.875571 -2.20806 0
+-0.875571 0.188377 0
+-0.591184 -0.219482 0
+-1.23916 -0.345287 0
+-2.49862 -0.430333 0
+-2.53429 -0.318552 0
+-2.47565 0.266782 0
+-2.26361 1.25613 0
+-1.91648 2.14696 0
+-1.51684 2.48062 0
+-1.14964 2.20304 0
+-0.860177 1.59794 0
+-0.656437 0.984685 0
+-0.529295 0.523234 0
+-0.464282 0.22234 0
+-0.443869 0.0352534 0
+-0.449044 -0.0732754 0
+-0.46373 -0.121112 0
+-0.479127 -0.129406 0
+-0.493292 -0.122975 0
+-0.506464 -0.113732 0
+-0.518122 -0.101415 0
+-0.527852 -0.0872366 0
+-0.535969 -0.0738662 0
+-0.542566 -0.0599851 0
+-0.547571 -0.0455721 0
+-0.551457 -0.0340593 0
+-0.554631 -0.0252177 0
+-0.556961 -0.0161505 0
+-0.558594 -0.00821109 0
+-0.560039 -0.00332236 0
+-0.561278 0.00107212 0
+-0.562056 0.00620736 0
+-0.562648 0.00951237 0
+-0.563286 0.0112495 0
+-0.56368 0.0140785 0
+-0.56378 0.0168353 0
+-0.563914 0.0176287 0
+-0.563992 0.0185348 0
+-0.563708 0.0205965 0
+-0.563211 0.0214343 0
+-0.562605 0.0211114 0
+-0.561503 0.0219348 0
+-0.559711 0.0228853 0
+-0.557387 0.022204 0
+-0.554316 0.021564 0
+-0.55003 0.0213647 0
+-0.544456 0.0176446 0
+-0.537857 0.00566505 0
+-0.531305 -0.0227667 0
+-0.528426 -0.0873945 0
+-0.536005 -0.218325 0
+-0.561804 -0.446622 0
+-0.610387 -0.792488 0
+-0.677524 -1.24347 0
+-0.744561 -1.72811 0
+-0.777706 -2.1141 0
+-0.737173 -2.24762 0
+-0.597063 -2.02391 0
+-0.372116 -1.46563 0
+-0.13748 -0.762175 0
+-0.00556276 -0.206245 0
+-0.000158528 -0.00420018 0
+0.000103147 -0.000193117 0
+0.000103134 7.78166e-06 0
+0.000114718 -2.22541e-05 0
+-0.00011354 0.000138824 0
+-0.00570086 0.0040218 0
+-0.149495 0.219606 0
+-0.408127 0.844071 0
+-0.654855 1.65289 0
+-0.803016 2.30764 0
+-0.836309 2.58323 0
+-0.786967 2.45013 0
+-0.703022 2.02788 0
+-0.623878 1.48803 0
+-0.569515 0.97718 0
+-0.541976 0.57993 0
+-0.533733 0.316353 0
+-0.53574 0.164542 0
+-0.541378 0.0888349 0
+-0.547196 0.0562666 0
+-0.552162 0.0429441 0
+-0.556219 0.0366501 0
+-0.559329 0.0334882 0
+-0.561576 0.0313843 0
+-0.563257 0.0288653 0
+-0.564515 0.0266101 0
+-0.565353 0.0252402 0
+-0.565956 0.023692 0
+-0.566524 0.0217153 0
+-0.567014 0.0202841 0
+-0.567424 0.0190109 0
+-0.567921 0.0169023 0
+-0.568527 0.0145499 0
+-0.569139 0.0124434 0
+-0.569841 0.00957494 0
+-0.570746 0.00566553 0
+-0.571768 0.00151865 0
+-0.572878 -0.00333037 0
+-0.574197 -0.00996321 0
+-0.575699 -0.0180988 0
+-0.57722 -0.0275846 0
+-0.578726 -0.0396389 0
+-0.580157 -0.0548092 0
+-0.581189 -0.0726554 0
+-0.581491 -0.094252 0
+-0.580915 -0.122874 0
+-0.579332 -0.164729 0
+-0.576833 -0.234382 0
+-0.574988 -0.362369 0
+-0.579362 -0.602922 0
+-0.603006 -1.04356 0
+-0.668476 -1.80846 0
+-0.805426 -3.03916 0
+-1.04509 -4.84667 0
+-1.41586 -7.24129 0
+-1.93749 -10.0495 0
+-2.60422 -12.848 0
+-3.35659 -14.9899 0
+-4.06825 -15.806 0
+-4.58332 -14.961 0
+-4.80051 -12.7453 0
+-4.73838 -9.97574 0
+-4.51101 -7.38094 0
+-2.2749 -4.76451 0
+-1.0914 -2.4223 0
+-1.0914 0.0617905 0
+-0.504407 -0.191693 0
+-1.05969 -0.305925 0
+-2.13969 -0.387246 0
+-2.16182 -0.296425 0
+-2.10937 0.214323 0
+-1.9439 1.09065 0
+-1.68303 1.88608 0
+-1.3803 2.17788 0
+-1.08261 1.90534 0
+-0.816854 1.33217 0
+-0.602717 0.770536 0
+-0.45752 0.378027 0
+-0.38558 0.150389 0
+-0.371652 0.0213132 0
+-0.388979 -0.0559602 0
+-0.413969 -0.0961355 0
+-0.435432 -0.107957 0
+-0.452855 -0.105565 0
+-0.46833 -0.0982712 0
+-0.482015 -0.0877422 0
+-0.49357 -0.0756948 0
+-0.503394 -0.0640556 0
+-0.511561 -0.05183 0
+-0.517927 -0.0392188 0
+-0.523046 -0.0289528 0
+-0.527379 -0.0208962 0
+-0.53068 -0.0128604 0
+-0.533087 -0.00581529 0
+-0.535236 -0.00118409 0
+-0.537095 0.0029209 0
+-0.538327 0.00742964 0
+-0.539291 0.0104664 0
+-0.540293 0.0122424 0
+-0.54096 0.0147362 0
+-0.541233 0.0171004 0
+-0.541556 0.0179433 0
+-0.541825 0.0187964 0
+-0.54166 0.0204242 0
+-0.541289 0.0210556 0
+-0.540899 0.0207147 0
+-0.540054 0.0210827 0
+-0.538565 0.0213903 0
+-0.536682 0.0203144 0
+-0.534146 0.0190223 0
+-0.530427 0.0176402 0
+-0.525693 0.012905 0
+-0.520747 0.000714288 0
+-0.517438 -0.0260816 0
+-0.520686 -0.0841515 0
+-0.539542 -0.199474 0
+-0.585436 -0.400734 0
+-0.668094 -0.709836 0
+-0.788251 -1.12332 0
+-0.92762 -1.58875 0
+-1.04305 -1.99869 0
+-1.07372 -2.21697 0
+-0.964797 -2.13284 0
+-0.703022 -1.72741 0
+-0.3499 -1.1153 0
+-0.0515643 -0.504585 0
+-0.00357215 -0.0521925 0
+0.00189471 -0.00566005 0
+0.00264953 -0.000747098 0
+0.00207399 0.000553232 0
+-0.00327706 0.00548982 0
+-0.0531965 0.0539412 0
+-0.37745 0.543858 0
+-0.769785 1.2364 0
+-1.06248 1.94559 0
+-1.18 2.42515 0
+-1.13517 2.5384 0
+-0.992761 2.30771 0
+-0.825912 1.86103 0
+-0.686294 1.34841 0
+-0.594362 0.885248 0
+-0.546097 0.531666 0
+-0.526959 0.297216 0
+-0.522979 0.160563 0
+-0.524962 0.0908186 0
+-0.52834 0.0596454 0
+-0.531644 0.0462496 0
+-0.534581 0.0395878 0
+-0.536897 0.0358051 0
+-0.538559 0.0330478 0
+-0.539861 0.030168 0
+-0.540904 0.0276544 0
+-0.54161 0.0259463 0
+-0.542151 0.0242342 0
+-0.542738 0.0223027 0
+-0.543288 0.0208349 0
+-0.543786 0.0195099 0
+-0.544446 0.0175624 0
+-0.545294 0.0153985 0
+-0.546204 0.0133529 0
+-0.547287 0.0106583 0
+-0.548701 0.00708015 0
+-0.550357 0.0031739 0
+-0.552236 -0.00145081 0
+-0.554541 -0.00765842 0
+-0.557304 -0.0153366 0
+-0.560396 -0.0244933 0
+-0.563868 -0.0361664 0
+-0.567751 -0.0509268 0
+-0.571736 -0.0686711 0
+-0.575451 -0.0905374 0
+-0.578704 -0.119622 0
+-0.581429 -0.162004 0
+-0.584242 -0.231569 0
+-0.589972 -0.356639 0
+-0.606287 -0.586608 0
+-0.650034 -0.999812 0
+-0.751752 -1.70675 0
+-0.955315 -2.8356 0
+-1.30899 -4.49299 0
+-1.84924 -6.70105 0
+-2.58116 -9.31758 0
+-3.45991 -11.9693 0
+-4.38031 -14.0695 0
+-5.18934 -14.9969 0
+-5.73524 -14.4151 0
+-5.93955 -12.541 0
+-5.83892 -10.0764 0
+-5.5456 -7.67426 0
+-2.81199 -5.16108 0
+-1.34791 -2.73227 0
+-1.34791 -0.125073 0
+-0.4312 -0.167526 0
+-0.909402 -0.273381 0
+-1.84074 -0.355781 0
+-1.84744 -0.289731 0
+-1.78594 0.152806 0
+-1.63317 0.937867 0
+-1.41504 1.66794 0
+-1.1787 1.94152 0
+-0.95241 1.67905 0
+-0.74256 1.12231 0
+-0.557495 0.585461 0
+-0.416829 0.237351 0
+-0.336554 0.0701038 0
+-0.313649 -0.0016037 0
+-0.327603 -0.0420171 0
+-0.354544 -0.0692063 0
+-0.38006 -0.0824528 0
+-0.401071 -0.0845669 0
+-0.41896 -0.0803945 0
+-0.434284 -0.0724302 0
+-0.447145 -0.0628465 0
+-0.458088 -0.0531238 0
+-0.467219 -0.0427116 0
+-0.474434 -0.0320153 0
+-0.480326 -0.0230714 0
+-0.485366 -0.0158673 0
+-0.489302 -0.00893537 0
+-0.492257 -0.0028703 0
+-0.494861 0.0014094 0
+-0.497096 0.00514636 0
+-0.498644 0.00896865 0
+-0.499862 0.0116757 0
+-0.501059 0.01343 0
+-0.501877 0.0155466 0
+-0.502272 0.0174872 0
+-0.502686 0.0183495 0
+-0.503032 0.0191344 0
+-0.502949 0.0203346 0
+-0.502679 0.0207783 0
+-0.502434 0.0204632 0
+-0.501828 0.020471 0
+-0.500722 0.0202781 0
+-0.499386 0.0189726 0
+-0.497579 0.0172095 0
+-0.494812 0.0148679 0
+-0.491386 0.0094739 0
+-0.488415 -0.00226148 0
+-0.488265 -0.0262362 0
+-0.496615 -0.0758072 0
+-0.523792 -0.172302 0
+-0.583692 -0.34084 0
+-0.690349 -0.603184 0
+-0.850462 -0.963214 0
+-1.05148 -1.38774 0
+-1.25211 -1.79806 0
+-1.38549 -2.0836 0
+-1.38062 -2.13772 0
+-1.19972 -1.90833 0
+-0.875766 -1.43927 0
+-0.515288 -0.86507 0
+-0.207896 -0.359587 0
+-0.0705601 -0.142999 0
+-0.0305638 -0.0407455 0
+-0.0661247 0.0361123 0
+-0.205113 0.144477 0
+-0.531948 0.380774 0
+-0.932018 0.943925 0
+-1.30097 1.60535 0
+-1.51245 2.15707 0
+-1.52097 2.43367 0
+-1.36542 2.38286 0
+-1.12846 2.07075 0
+-0.891156 1.62372 0
+-0.705001 1.16226 0
+-0.585614 0.765861 0
+-0.522719 0.468772 0
+-0.496184 0.270681 0
+-0.488085 0.152466 0
+-0.48706 0.089794 0
+-0.487747 0.0603336 0
+-0.488625 0.0471282 0
+-0.489558 0.0405216 0
+-0.490389 0.0366371 0
+-0.49105 0.0337101 0
+-0.491719 0.0308378 0
+-0.492379 0.028315 0
+-0.492859 0.0264274 0
+-0.493267 0.0246429 0
+-0.493772 0.0228083 0
+-0.494282 0.0213452 0
+-0.494782 0.0200109 0
+-0.495488 0.0182686 0
+-0.496436 0.0163469 0
+-0.497515 0.0144312 0
+-0.498846 0.0119896 0
+-0.500601 0.0088353 0
+-0.502715 0.00528835 0
+-0.505204 0.00103746 0
+-0.508302 -0.00456028 0
+-0.512097 -0.0115426 0
+-0.516527 -0.0200629 0
+-0.52171 -0.0309838 0
+-0.527732 -0.0449061 0
+-0.534335 -0.0620679 0
+-0.54118 -0.0836933 0
+-0.548116 -0.112687 0
+-0.555352 -0.154769 0
+-0.564462 -0.222459 0
+-0.580446 -0.340656 0
+-0.614596 -0.552458 0
+-0.68863 -0.925778 0
+-0.83878 -1.5566 0
+-1.11497 -2.55941 0
+-1.57042 -4.03753 0
+-2.24192 -6.02954 0
+-3.12615 -8.43336 0
+-4.1612 -10.9342 0
+-5.22306 -13.0076 0
+-6.14742 -14.0726 0
+-6.78266 -13.7799 0
+-7.05617 -12.2675 0
+-7.00427 -10.1283 0
+-6.72172 -7.95681 0
+-3.42942 -5.62489 0
+-1.65272 -3.12447 0
+-1.65272 -0.37506 0
+-0.36836 -0.145474 0
+-0.781647 -0.244729 0
+-1.58921 -0.331932 0
+-1.58218 -0.296768 0
+-1.50318 0.0737965 0
+-1.33802 0.772695 0
+-1.12531 1.45523 0
+-0.923152 1.73935 0
+-0.759765 1.51565 0
+-0.625017 0.987554 0
+-0.501472 0.461908 0
+-0.390565 0.126434 0
+-0.308915 -0.0115554 0
+-0.268679 -0.0418494 0
+-0.265692 -0.0450151 0
+-0.283982 -0.0509275 0
+-0.308285 -0.0581606 0
+-0.33122 -0.0616433 0
+-0.351154 -0.0604713 0
+-0.367929 -0.0556665 0
+-0.381818 -0.0489691 0
+-0.393443 -0.04151 0
+-0.402993 -0.0331726 0
+-0.410517 -0.0245019 0
+-0.416629 -0.0169697 0
+-0.421801 -0.0107056 0
+-0.425878 -0.00486764 0
+-0.428986 0.000228127 0
+-0.431653 0.00406685 0
+-0.433893 0.00737798 0
+-0.435475 0.0105418 0
+-0.436695 0.0128878 0
+-0.437811 0.0145378 0
+-0.43855 0.0162784 0
+-0.438888 0.0178178 0
+-0.439189 0.0186432 0
+-0.439396 0.0193345 0
+-0.439237 0.0201693 0
+-0.438922 0.0204573 0
+-0.438649 0.0201835 0
+-0.438143 0.0199591 0
+-0.437323 0.0194525 0
+-0.436423 0.0180671 0
+-0.435264 0.0160458 0
+-0.433506 0.0131048 0
+-0.431536 0.00749933 0
+-0.430578 -0.00322455 0
+-0.433163 -0.0236555 0
+-0.445026 -0.0639483 0
+-0.476635 -0.140697 0
+-0.542906 -0.274573 0
+-0.660788 -0.485307 0
+-0.842708 -0.7813 0
+-1.08503 -1.14543 0
+-1.35695 -1.52615 0
+-1.59892 -1.84164 0
+-1.73697 -1.99968 0
+-1.71255 -1.93275 0
+-1.51572 -1.6361 0
+-1.19652 -1.18428 0
+-0.84265 -0.713467 0
+-0.614066 -0.371588 0
+-0.53544 -0.119377 0
+-0.60908 0.109747 0
+-0.84487 0.380262 0
+-1.22817 0.764069 0
+-1.59177 1.30752 0
+-1.83106 1.84464 0
+-1.87924 2.20524 0
+-1.73741 2.29184 0
+-1.46691 2.11236 0
+-1.15307 1.75691 0
+-0.869009 1.33966 0
+-0.655905 0.949153 0
+-0.521451 0.631408 0
+-0.450543 0.397864 0
+-0.42003 0.240168 0
+-0.409767 0.142203 0
+-0.406894 0.0869216 0
+-0.405414 0.0588535 0
+-0.403821 0.0455367 0
+-0.402324 0.0390249 0
+-0.401125 0.0354388 0
+-0.400294 0.0328805 0
+-0.399924 0.0304687 0
+-0.399882 0.0282728 0
+-0.39991 0.0264568 0
+-0.400005 0.0247384 0
+-0.400246 0.0230494 0
+-0.400536 0.0216352 0
+-0.400861 0.0203369 0
+-0.401404 0.0188121 0
+-0.402213 0.0171552 0
+-0.403217 0.0154359 0
+-0.404539 0.0133111 0
+-0.406339 0.0106352 0
+-0.408597 0.00754692 0
+-0.411364 0.0038041 0
+-0.414872 -0.00105294 0
+-0.419243 -0.00717222 0
+-0.424489 -0.0148169 0
+-0.43076 -0.0247134 0
+-0.43817 -0.0374963 0
+-0.446559 -0.0536797 0
+-0.455733 -0.0745194 0
+-0.465821 -0.1026 0
+-0.477714 -0.142876 0
+-0.494435 -0.205739 0
+-0.523524 -0.311567 0
+-0.579924 -0.496058 0
+-0.689206 -0.816497 0
+-0.889834 -1.35597 0
+-1.23088 -2.21837 0
+-1.76207 -3.50635 0
+-2.51656 -5.27505 0
+-3.49065 -7.45927 0
+-4.62642 -9.79844 0
+-5.80546 -11.8286 0
+-6.86641 -13.0116 0
+-7.65519 -12.9911 0
+-8.09048 -11.8322 0
+-8.19218 -10.0266 0
+-8.02378 -8.1252 0
+-4.11771 -6.07702 0
+-2.0079 -3.56347 0
+-2.0079 -0.682709 0
+-0.313143 -0.124291 0
+-0.67054 -0.217031 0
+-1.3736 -0.310298 0
+-1.35948 -0.310886 0
+-1.26489 -0.0207998 0
+-1.07592 0.583711 0
+-0.840506 1.2198 0
+-0.635512 1.53435 0
+-0.505486 1.38562 0
+-0.437547 0.919608 0
+-0.3897 0.414054 0
+-0.333749 0.0704759 0
+-0.271949 -0.0733636 0
+-0.222986 -0.0908213 0
+-0.19989 -0.0681213 0
+-0.200949 -0.0498774 0
+-0.215974 -0.0431457 0
+-0.235745 -0.0418828 0
+-0.25526 -0.0409667 0
+-0.272428 -0.0385081 0
+-0.286791 -0.0346169 0
+-0.298631 -0.0296791 0
+-0.308117 -0.0236967 0
+-0.315431 -0.0171979 0
+-0.321183 -0.0112267 0
+-0.32586 -0.00603799 0
+-0.329468 -0.00126857 0
+-0.33216 0.002912 0
+-0.334344 0.00624248 0
+-0.336072 0.00909811 0
+-0.33722 0.0116815 0
+-0.338007 0.0136677 0
+-0.338621 0.0151447 0
+-0.338892 0.0165426 0
+-0.338815 0.0177336 0
+-0.338646 0.0184677 0
+-0.338362 0.0190443 0
+-0.337799 0.0196009 0
+-0.337123 0.0197753 0
+-0.336495 0.01955 0
+-0.335762 0.0192211 0
+-0.334893 0.0185782 0
+-0.33406 0.0172288 0
+-0.33317 0.015151 0
+-0.332071 0.0120012 0
+-0.331198 0.00662245 0
+-0.331718 -0.0027088 0
+-0.336007 -0.0193711 0
+-0.349275 -0.0506845 0
+-0.381173 -0.108803 0
+-0.44622 -0.20953 0
+-0.562418 -0.369113 0
+-0.7462 -0.597523 0
+-1.00275 -0.888887 0
+-1.31524 -1.21366 0
+-1.63977 -1.51713 0
+-1.91155 -1.72791 0
+-2.06479 -1.77952 0
+-2.06055 -1.64036 0
+-1.909 -1.33584 0
+-1.67768 -0.944791 0
+-1.49159 -0.557688 0
+-1.42003 -0.190947 0
+-1.4869 0.176618 0
+-1.68113 0.574482 0
+-1.93943 1.02236 0
+-2.12778 1.49587 0
+-2.16286 1.87971 0
+-2.02164 2.06401 0
+-1.73823 2.00843 0
+-1.38212 1.75625 0
+-1.02723 1.40201 0
+-0.728019 1.04045 0
+-0.510157 0.73129 0
+-0.373189 0.494441 0
+-0.299946 0.324621 0
+-0.26765 0.207873 0
+-0.256366 0.130919 0
+-0.252778 0.0833348 0
+-0.250294 0.0563701 0
+-0.247106 0.0423492 0
+-0.243551 0.0354703 0
+-0.240234 0.0321224 0
+-0.237538 0.0301846 0
+-0.235635 0.0285665 0
+-0.234392 0.0270302 0
+-0.233527 0.0255926 0
+-0.232924 0.0241358 0
+-0.232549 0.0226752 0
+-0.232287 0.0213735 0
+-0.23211 0.0201602 0
+-0.232144 0.0188463 0
+-0.23244 0.0174507 0
+-0.232977 0.0159734 0
+-0.233867 0.0142009 0
+-0.23525 0.0120182 0
+-0.237149 0.00944621 0
+-0.239639 0.00629327 0
+-0.242919 0.00222694 0
+-0.247123 -0.00296855 0
+-0.252318 -0.00962258 0
+-0.25867 -0.0183617 0
+-0.26634 -0.0298267 0
+-0.275356 -0.0446648 0
+-0.285869 -0.0640065 0
+-0.298592 -0.0898767 0
+-0.315441 -0.126028 0
+-0.340959 -0.180221 0
+-0.384526 -0.268001 0
+-0.462736 -0.417848 0
+-0.601525 -0.677708 0
+-0.837034 -1.12046 0
+-1.2132 -1.8422 0
+-1.7747 -2.94485 0
+-2.55563 -4.49412 0
+-3.56417 -6.45073 0
+-4.76322 -8.5994 0
+-6.05421 -10.5376 0
+-7.28408 -11.7818 0
+-8.29126 -11.9839 0
+-8.97564 -11.1479 0
+-9.33379 -9.66842 0
+-9.39618 -8.06282 0
+-4.84152 -6.39908 0
+-2.40395 -3.97965 0
+-2.40395 -1.02441 0
+-0.263268 -0.10319 0
+-0.570755 -0.187874 0
+-1.18251 -0.285077 0
+-1.17188 -0.32152 0
+-1.07426 -0.118426 0
+-0.86732 0.376759 0
+-0.597989 0.950464 0
+-0.358146 1.2945 0
+-0.217404 1.24487 0
+-0.178343 0.880541 0
+-0.190447 0.426152 0
+-0.198931 0.0789534 0
+-0.180939 -0.0913632 0
+-0.146302 -0.125466 0
+-0.11554 -0.0988917 0
+-0.100644 -0.0647828 0
+-0.101471 -0.0423273 0
+-0.112106 -0.0312569 0
+-0.126709 -0.0263732 0
+-0.141503 -0.0237229 0
+-0.154717 -0.0214116 0
+-0.165788 -0.0186169 0
+-0.174541 -0.0149531 0
+-0.181086 -0.0106612 0
+-0.18593 -0.00639147 0
+-0.189537 -0.00243853 0
+-0.192067 0.00125351 0
+-0.19372 0.00455647 0
+-0.194809 0.00732484 0
+-0.195429 0.00971044 0
+-0.195552 0.0117975 0
+-0.195337 0.0134454 0
+-0.194911 0.0147127 0
+-0.194193 0.0158178 0
+-0.19319 0.0167251 0
+-0.192064 0.0173361 0
+-0.190819 0.0177929 0
+-0.189381 0.0181576 0
+-0.187873 0.0182623 0
+-0.186418 0.01809 0
+-0.184954 0.0177527 0
+-0.183485 0.0171039 0
+-0.182131 0.0158704 0
+-0.180887 0.013903 0
+-0.179768 0.0108776 0
+-0.179207 0.00605774 0
+-0.180202 -0.00171747 0
+-0.184768 -0.014809 0
+-0.197265 -0.038191 0
+-0.225921 -0.0801506 0
+-0.283677 -0.151779 0
+-0.387614 -0.26518 0
+-0.555505 -0.429637 0
+-0.798634 -0.645763 0
+-1.11285 -0.899445 0
+-1.47201 -1.15798 0
+-1.82821 -1.37172 0
+-2.12246 -1.48528 0
+-2.30516 -1.45766 0
+-2.35939 -1.28163 0
+-2.31613 -0.988063 0
+-2.24821 -0.625617 0
+-2.21471 -0.224455 0
+-2.24012 0.202019 0
+-2.30921 0.643562 0
+-2.36544 1.07859 0
+-2.32823 1.45866 0
+-2.15512 1.70659 0
+-1.8556 1.76449 0
+-1.47841 1.63124 0
+-1.08647 1.36431 0
+-0.733321 1.04887 0
+-0.450928 0.758056 0
+-0.249012 0.529373 0
+-0.120631 0.36606 0
+-0.0493541 0.253344 0
+-0.0159177 0.174437 0
+-0.00320768 0.118209 0
+0.00106536 0.0790621 0
+0.00377804 0.0536578 0
+0.00741934 0.0387084 0
+0.0120334 0.0308568 0
+0.0169239 0.0272324 0
+0.021433 0.0256761 0
+0.0251718 0.0248281 0
+0.0281132 0.0240892 0
+0.0304433 0.023263 0
+0.032314 0.0222655 0
+0.0338376 0.0211518 0
+0.0351536 0.0200578 0
+0.0363197 0.0189942 0
+0.0372768 0.0178894 0
+0.0379866 0.016741 0
+0.0384374 0.0155225 0
+0.0385358 0.0141025 0
+0.0381675 0.0123863 0
+0.0372839 0.0103296 0
+0.0358049 0.00777196 0
+0.0335727 0.00445882 0
+0.0304574 0.000146316 0
+0.0263452 -0.00551076 0
+0.0210237 -0.0130406 0
+0.0142092 -0.0230127 0
+0.00555646 -0.0360125 0
+-0.00560406 -0.0528465 0
+-0.0206932 -0.074788 0
+-0.0424937 -0.104228 0
+-0.0762547 -0.146461 0
+-0.13126 -0.212996 0
+-0.222495 -0.326614 0
+-0.372223 -0.52798 0
+-0.611168 -0.881515 0
+-0.978498 -1.47488 0
+-1.5196 -2.40375 0
+-2.27992 -3.7338 0
+-3.29049 -5.44015 0
+-4.54194 -7.34796 0
+-5.95692 -9.1226 0
+-7.38729 -10.3514 0
+-8.65833 -10.7129 0
+-9.64738 -10.1588 0
+-10.3323 -8.98351 0
+-10.727 -7.66807 0
+-5.52625 -6.44269 0
+-2.80632 -4.26174 0
+-2.80632 -1.34493 0
+-0.217038 -0.082021 0
+-0.477843 -0.156011 0
+-1.00524 -0.251735 0
+-1.00949 -0.317272 0
+-0.928501 -0.199421 0
+-0.726057 0.174306 0
+-0.435415 0.659814 0
+-0.150035 1.00911 0
+0.0387979 1.05603 0
+0.100604 0.81873 0
+0.0725991 0.454152 0
+0.0194018 0.132145 0
+-0.012734 -0.0592334 0
+-0.0134524 -0.124754 0
+0.00357184 -0.115923 0
+0.0212285 -0.0824471 0
+0.0304773 -0.0515841 0
+0.0304585 -0.0312461 0
+0.0241616 -0.0200844 0
+0.0150112 -0.0145806 0
+0.00543741 -0.0118458 0
+-0.00318277 -0.0100046 0
+-0.0101294 -0.00801435 0
+-0.015196 -0.00560225 0
+-0.0186194 -0.00297552 0
+-0.0207382 -0.000327062 0
+-0.0217668 0.00227497 0
+-0.0219261 0.00470885 0
+-0.0214718 0.00686377 0
+-0.0205282 0.00876038 0
+-0.0191434 0.0104064 0
+-0.0174408 0.0117368 0
+-0.0155154 0.0127813 0
+-0.0133469 0.0136437 0
+-0.0109557 0.0143284 0
+-0.00843651 0.0148118 0
+-0.00580893 0.0151603 0
+-0.00305939 0.0154032 0
+-0.000274223 0.0154724 0
+0.00245961 0.0153516 0
+0.00514925 0.0150587 0
+0.00776974 0.0144792 0
+0.0102235 0.0134126 0
+0.0124434 0.0116792 0
+0.0143044 0.00901281 0
+0.015409 0.00494948 0
+0.0149604 -0.00127226 0
+0.0113562 -0.0112082 0
+0.00116268 -0.0280008 0
+-0.0221594 -0.0568318 0
+-0.0691702 -0.104771 0
+-0.154381 -0.179973 0
+-0.294211 -0.289811 0
+-0.502308 -0.43767 0
+-0.783044 -0.618714 0
+-1.12528 -0.815744 0
+-1.49941 -0.997599 0
+-1.86106 -1.12363 0
+-2.16339 -1.15534 0
+-2.37451 -1.07052 0
+-2.49159 -0.870989 0
+-2.5395 -0.577719 0
+-2.5464 -0.217559 0
+-2.52526 0.180871 0
+-2.46646 0.584751 0
+-2.34115 0.953272 0
+-2.1191 1.23661 0
+-1.79772 1.38521 0
+-1.40795 1.37471 0
+-1.00002 1.22331 0
+-0.622451 0.986738 0
+-0.30706 0.733476 0
+-0.0655425 0.516538 0
+0.105404 0.358426 0
+0.216979 0.254484 0
+0.283175 0.187148 0
+0.317971 0.139641 0
+0.333755 0.102425 0
+0.340233 0.0725844 0
+0.34377 0.0501212 0
+0.347509 0.0349702 0
+0.352303 0.0260629 0
+0.357875 0.0216609 0
+0.36361 0.0199409 0
+0.368983 0.0194556 0
+0.373749 0.0193239 0
+0.377899 0.0191134 0
+0.381506 0.0186591 0
+0.384674 0.0179834 0
+0.387537 0.0171956 0
+0.390173 0.0163583 0
+0.392582 0.0154798 0
+0.394754 0.0145697 0
+0.39667 0.0136059 0
+0.398264 0.0125082 0
+0.399452 0.0111981 0
+0.400179 0.00960256 0
+0.400368 0.00758228 0
+0.399893 0.00493354 0
+0.398615 0.00142465 0
+0.396351 -0.00324799 0
+0.39279 -0.00947989 0
+0.387451 -0.017674 0
+0.379631 -0.0281929 0
+0.368203 -0.0414194 0
+0.351339 -0.0579244 0
+0.326158 -0.0790468 0
+0.288135 -0.108439 0
+0.230173 -0.155035 0
+0.141252 -0.237694 0
+0.00434631 -0.391075 0
+-0.206671 -0.670498 0
+-0.530607 -1.15094 0
+-1.0209 -1.91345 0
+-1.7412 -3.0135 0
+-2.74744 -4.43391 0
+-4.05416 -6.04123 0
+-5.59879 -7.57797 0
+-7.23293 -8.71726 0
+-8.76665 -9.17916 0
+-10.0565 -8.86895 0
+-11.0723 -7.9677 0
+-11.8434 -6.89705 0
+-6.04896 -6.06681 0
+-3.13757 -4.26684 0
+-3.13757 -1.54554 0
+-0.17351 -0.0613092 0
+-0.388838 -0.121818 0
+-0.83337 -0.208674 0
+-0.860503 -0.290143 0
+-0.815674 -0.244256 0
+-0.64919 0.0078149 0
+-0.371741 0.382357 0
+-0.0616969 0.699061 0
+0.182559 0.811767 0
+0.303598 0.697686 0
+0.310237 0.447509 0
+0.255509 0.186869 0
+0.194778 0.00149334 0
+0.157836 -0.087817 0
+0.147101 -0.105194 0
+0.151362 -0.0867151 0
+0.159103 -0.059331 0
+0.164049 -0.036199 0
+0.164713 -0.0207556 0
+0.162062 -0.0119369 0
+0.157683 -0.00747373 0
+0.152962 -0.00529058 0
+0.148885 -0.00394387 0
+0.145973 -0.0026971 0
+0.144323 -0.00133148 0
+0.143822 0.000167428 0
+0.144329 0.00176221 0
+0.145668 0.00336379 0
+0.147645 0.00488008 0
+0.150131 0.00626914 0
+0.153036 0.00749569 0
+0.156253 0.00851466 0
+0.159699 0.00933049 0
+0.163352 0.00998572 0
+0.167181 0.0104943 0
+0.171127 0.0108612 0
+0.175163 0.0111204 0
+0.179274 0.0112882 0
+0.183401 0.0113408 0
+0.187487 0.0112622 0
+0.191511 0.0110308 0
+0.195432 0.0105547 0
+0.199154 0.00968641 0
+0.202562 0.00826783 0
+0.205472 0.00609972 0
+0.20753 0.00288806 0
+0.208104 -0.00184937 0
+0.205953 -0.00906031 0
+0.198503 -0.0205532 0
+0.180923 -0.0392543 0
+0.145379 -0.0692307 0
+0.0808694 -0.115466 0
+-0.0258038 -0.183141 0
+-0.187433 -0.276045 0
+-0.41227 -0.39388 0
+-0.69913 -0.528889 0
+-1.03337 -0.663364 0
+-1.38641 -0.770598 0
+-1.72102 -0.820744 0
+-2.00168 -0.789867 0
+-2.20503 -0.66764 0
+-2.32316 -0.459594 0
+-2.35642 -0.184314 0
+-2.30506 0.129504 0
+-2.16564 0.44533 0
+-1.93411 0.721736 0
+-1.61532 0.917814 0
+-1.23312 1.003 0
+-0.828322 0.969912 0
+-0.445605 0.840593 0
+-0.118497 0.65963 0
+0.138456 0.476522 0
+0.327699 0.327295 0
+0.460836 0.225289 0
+0.551135 0.164185 0
+0.609792 0.128491 0
+0.645575 0.103859 0
+0.665702 0.0822979 0
+0.676336 0.0619508 0
+0.682352 0.044105 0
+0.686977 0.030345 0
+0.691838 0.0212026 0
+0.6974 0.0160994 0
+0.703487 0.0138534 0
+0.709711 0.0132318 0
+0.715745 0.0132907 0
+0.721409 0.0134496 0
+0.726638 0.0134297 0
+0.731452 0.0131701 0
+0.735921 0.012726 0
+0.740114 0.012166 0
+0.744058 0.0115357 0
+0.747765 0.010862 0
+0.751232 0.0101387 0
+0.75442 0.00932012 0
+0.757274 0.00834441 0
+0.75974 0.00713595 0
+0.761743 0.00557898 0
+0.763159 0.00351728 0
+0.763814 0.000769205 0
+0.763444 -0.00287853 0
+0.761622 -0.00765819 0
+0.757709 -0.0137619 0
+0.750812 -0.0212968 0
+0.739707 -0.0303143 0
+0.722773 -0.0409914 0
+0.697934 -0.0542082 0
+0.662408 -0.072913 0
+0.611983 -0.104611 0
+0.539344 -0.165055 0
+0.430816 -0.282547 0
+0.261236 -0.500918 0
+-0.0120156 -0.877688 0
+-0.452358 -1.47311 0
+-1.13835 -2.32751 0
+-2.14218 -3.43009 0
+-3.49223 -4.69119 0
+-5.1347 -5.93551 0
+-6.92224 -6.92972 0
+-8.65533 -7.44607 0
+-10.1733 -7.35095 0
+-11.4417 -6.69931 0
+-12.5339 -5.80485 0
+-6.25535 -5.20706 0
+-3.27546 -3.86396 0
+-3.27546 -1.49063 0
+-0.132604 -0.0421165 0
+-0.302841 -0.087296 0
+-0.662769 -0.158171 0
+-0.713679 -0.239236 0
+-0.715758 -0.242183 0
+-0.612104 -0.095846 0
+-0.390038 0.160285 0
+-0.101002 0.41002 0
+0.167988 0.542772 0
+0.34625 0.51942 0
+0.413768 0.379988 0
+0.398064 0.20257 0
+0.345702 0.0538508 0
+0.294238 -0.0363571 0
+0.260692 -0.0716533 0
+0.245499 -0.0715268 0
+0.241948 -0.0557865 0
+0.243241 -0.0374974 0
+0.24518 -0.0226994 0
+0.246067 -0.0128298 0
+0.245724 -0.00713669 0
+0.244643 -0.00421538 0
+0.243474 -0.00278039 0
+0.242733 -0.00196111 0
+0.242691 -0.00129542 0
+0.243436 -0.000582801 0
+0.244957 0.00023587 0
+0.24718 0.00113633 0
+0.249993 0.00206184 0
+0.253297 0.00296056 0
+0.257003 0.00378515 0
+0.261018 0.00449532 0
+0.265266 0.00507867 0
+0.269702 0.00554584 0
+0.274286 0.00590623 0
+0.278973 0.00616969 0
+0.283735 0.00635479 0
+0.288548 0.00647179 0
+0.293373 0.00651285 0
+0.298168 0.00646315 0
+0.302904 0.00629233 0
+0.307524 0.00593146 0
+0.311929 0.00527853 0
+0.315976 0.00421727 0
+0.319462 0.00261139 0
+0.322068 0.000279356 0
+0.323279 -0.0030631 0
+0.322151 -0.00793477 0
+0.316859 -0.0152642 0
+0.304131 -0.0265282 0
+0.278737 -0.0438398 0
+0.23325 -0.0699805 0
+0.158322 -0.108217 0
+0.0438463 -0.161572 0
+-0.118775 -0.231262 0
+-0.333271 -0.314397 0
+-0.594785 -0.401854 0
+-0.887495 -0.477892 0
+-1.18552 -0.522721 0
+-1.45771 -0.517681 0
+-1.67436 -0.450996 0
+-1.81229 -0.32167 0
+-1.85614 -0.140475 0
+-1.79791 0.0712736 0
+-1.63728 0.284692 0
+-1.38351 0.467956 0
+-1.05821 0.592513 0
+-0.695608 0.640401 0
+-0.336347 0.610649 0
+-0.0165317 0.520776 0
+0.24208 0.401017 0
+0.435367 0.283234 0
+0.572659 0.190002 0
+0.668706 0.129242 0
+0.736769 0.096121 0
+0.78566 0.0796001 0
+0.820318 0.0692003 0
+0.843824 0.058792 0
+0.858926 0.0468484 0
+0.868442 0.0345894 0
+0.874921 0.0238659 0
+0.880248 0.015876 0
+0.885509 0.0108382 0
+0.891119 0.0082436 0
+0.897068 0.00728252 0
+0.903174 0.00718544 0
+0.909235 0.00738819 0
+0.915103 0.00756128 0
+0.920702 0.00757104 0
+0.926021 0.00740734 0
+0.931078 0.00710912 0
+0.935893 0.00672025 0
+0.940483 0.00627175 0
+0.944852 0.00576937 0
+0.948982 0.00519021 0
+0.952834 0.00449139 0
+0.956357 0.0036126 0
+0.959466 0.00247035 0
+0.962021 0.000961558 0
+0.963814 -0.00102474 0
+0.964532 -0.00359708 0
+0.963714 -0.0068405 0
+0.960733 -0.0107812 0
+0.954807 -0.0153709 0
+0.945035 -0.0205438 0
+0.930474 -0.0264304 0
+0.910162 -0.0338964 0
+0.882875 -0.0456268 0
+0.846176 -0.0679126 0
+0.794184 -0.113064 0
+0.713523 -0.201887 0
+0.577526 -0.364921 0
+0.340277 -0.64044 0
+-0.0656516 -1.06718 0
+-0.722013 -1.67114 0
+-1.70331 -2.44879 0
+-3.04228 -3.35222 0
+-4.69492 -4.28287 0
+-6.52705 -5.09758 0
+-8.34443 -5.6287 0
+-9.97219 -5.72318 0
+-11.3561 -5.31543 0
+-12.6085 -4.55245 0
+-6.02864 -3.95418 0
+-3.10304 -3.0167 0
+-3.10304 -1.06053 0
+-0.0950533 -0.0257206 0
+-0.221223 -0.0555251 0
+-0.49491 -0.10596 0
+-0.562067 -0.172081 0
+-0.607001 -0.197253 0
+-0.574874 -0.127978 0
+-0.436997 0.0224029 0
+-0.216054 0.189072 0
+0.02545 0.301264 0
+0.221658 0.323209 0
+0.336129 0.265514 0
+0.370884 0.167813 0
+0.353043 0.0716882 0
+0.314256 0.00242667 0
+0.276771 -0.0341714 0
+0.250216 -0.0449757 0
+0.235247 -0.0408218 0
+0.228615 -0.0308694 0
+0.226628 -0.0207175 0
+0.226611 -0.0128166 0
+0.227091 -0.00762174 0
+0.227509 -0.00463727 0
+0.22783 -0.00310581 0
+0.228231 -0.00236621 0
+0.228901 -0.00196909 0
+0.229971 -0.00165714 0
+0.231513 -0.00130956 0
+0.233539 -0.000893881 0
+0.236022 -0.000424917 0
+0.238914 6.49971e-05 0
+0.242156 0.000539363 0
+0.245682 0.000966547 0
+0.249428 0.00132939 0
+0.253346 0.00162452 0
+0.257394 0.00185434 0
+0.261536 0.00202488 0
+0.265743 0.00214536 0
+0.269991 0.00222124 0
+0.274252 0.00224924 0
+0.278494 0.00221766 0
+0.282682 0.00210178 0
+0.286755 0.00185664 0
+0.290611 0.00141958 0
+0.294108 0.000718145 0
+0.297047 -0.000329785 0
+0.299151 -0.00182619 0
+0.300005 -0.00391952 0
+0.298926 -0.00685784 0
+0.29472 -0.0110601 0
+0.285381 -0.017191 0
+0.267786 -0.0262469 0
+0.237449 -0.0396463 0
+0.188453 -0.0592225 0
+0.113788 -0.0869088 0
+0.00643739 -0.123913 0
+-0.138564 -0.169398 0
+-0.321303 -0.219117 0
+-0.53435 -0.264848 0
+-0.761706 -0.295368 0
+-0.980316 -0.299075 0
+-1.16387 -0.267444 0
+-1.28748 -0.198068 0
+-1.33173 -0.0962231 0
+-1.28588 0.025412 0
+-1.15005 0.148857 0
+-0.936514 0.254421 0
+-0.669177 0.325173 0
+-0.380146 0.351368 0
+-0.10297 0.333471 0
+0.135633 0.282172 0
+0.321894 0.214755 0
+0.456075 0.149052 0
+0.548388 0.0976881 0
+0.612427 0.0652021 0
+0.659618 0.0489295 0
+0.696778 0.0424393 0
+0.726666 0.0393123 0
+0.749959 0.0354984 0
+0.767054 0.029754 0
+0.778889 0.0227538 0
+0.786909 0.0158454 0
+0.792646 0.010139 0
+0.797346 0.00613793 0
+0.801806 0.00378409 0
+0.806397 0.00269073 0
+0.811202 0.00238089 0
+0.816147 0.0024432 0
+0.821111 0.00259693 0
+0.825988 0.00269344 0
+0.830713 0.00268215 0
+0.835256 0.00256628 0
+0.839607 0.00236849 0
+0.843769 0.00211013 0
+0.847739 0.00179923 0
+0.851502 0.00142628 0
+0.855026 0.000966633 0
+0.858256 0.000383022 0
+0.861098 -0.000372625 0
+0.863412 -0.00135326 0
+0.864994 -0.00260646 0
+0.865559 -0.00416259 0
+0.864738 -0.00602058 0
+0.862093 -0.00813676 0
+0.857162 -0.0104398 0
+0.849527 -0.0129095 0
+0.838873 -0.0157768 0
+0.824909 -0.0199333 0
+0.80692 -0.0276381 0
+0.782558 -0.0435513 0
+0.745463 -0.0759697 0
+0.681469 -0.137893 0
+0.563803 -0.247256 0
+0.348872 -0.42551 0
+-0.0243465 -0.693962 0
+-0.627464 -1.06803 0
+-1.5257 -1.55056 0
+-2.75211 -2.12581 0
+-4.28054 -2.75444 0
+-6.00988 -3.36825 0
+-7.77446 -3.86412 0
+-9.3933 -4.10434 0
+-10.7624 -3.94633 0
+-11.9703 -3.34453 0
+-5.40123 -2.57934 0
+-2.6246 -1.87313 0
+-2.6246 -0.266478 0
+-0.0621522 -0.0132043 0
+-0.147241 -0.0296827 0
+-0.336739 -0.0594357 0
+-0.406337 -0.102485 0
+-0.475559 -0.128034 0
+-0.499874 -0.103667 0
+-0.446115 -0.0313594 0
+-0.315814 0.0587675 0
+-0.144378 0.129826 0
+0.0199558 0.158873 0
+0.140423 0.145045 0
+0.204247 0.103987 0
+0.219973 0.0559607 0
+0.206301 0.0160963 0
+0.181325 -0.00919824 0
+0.156977 -0.0206295 0
+0.138548 -0.0223963 0
+0.126794 -0.0191178 0
+0.120326 -0.0142524 0
+0.117268 -0.00976244 0
+0.116065 -0.00642114 0
+0.115707 -0.00428286 0
+0.115679 -0.00308024 0
+0.115788 -0.00247865 0
+0.116015 -0.00219883 0
+0.116406 -0.00205063 0
+0.117019 -0.00192513 0
+0.117896 -0.00177405 0
+0.119056 -0.00158751 0
+0.120495 -0.0013757 0
+0.122188 -0.00115694 0
+0.124102 -0.000949577 0
+0.126196 -0.000766365 0
+0.128431 -0.000613324 0
+0.130775 -0.000491789 0
+0.133198 -0.000399972 0
+0.135676 -0.000334491 0
+0.138188 -0.000293396 0
+0.140714 -0.000278745 0
+0.143228 -0.00029789 0
+0.145694 -0.000365537 0
+0.148054 -0.000505649 0
+0.150222 -0.000750178 0
+0.152075 -0.00113597 0
+0.153447 -0.00170388 0
+0.154121 -0.00250205 0
+0.153796 -0.00359555 0
+0.152022 -0.00508502 0
+0.148094 -0.00713433 0
+0.14091 -0.0100087 0
+0.128792 -0.0141297 0
+0.109283 -0.0201391 0
+0.0789759 -0.0289168 0
+0.0335174 -0.041452 0
+-0.0319325 -0.0584652 0
+-0.121548 -0.0797848 0
+-0.236995 -0.103672 0
+-0.375386 -0.126459 0
+-0.527884 -0.142872 0
+-0.679809 -0.147153 0
+-0.812527 -0.134729 0
+-0.906737 -0.103861 0
+-0.946287 -0.0566764 0
+-0.92168 0.000802582 0
+-0.832556 0.0597305 0
+-0.688522 0.110385 0
+-0.507884 0.144533 0
+-0.314107 0.157589 0
+-0.130537 0.1499 0
+0.0250896 0.126545 0
+0.144269 0.0955749 0
+0.22804 0.0652809 0
+0.284105 0.0416224 0
+0.322412 0.0268949 0
+0.351322 0.0200189 0
+0.375755 0.0180059 0
+0.397383 0.0176843 0
+0.415993 0.0168881 0
+0.430942 0.0148046 0
+0.442033 0.0116625 0
+0.449716 0.00816192 0
+0.454868 0.00498717 0
+0.458453 0.00255225 0
+0.461274 0.000962592 0
+0.463862 0.00010231 0
+0.466489 -0.000245558 0
+0.469234 -0.000302824 0
+0.472074 -0.000242435 0
+0.474939 -0.000172346 0
+0.477765 -0.000144067 0
+0.480503 -0.000171866 0
+0.483123 -0.000251631 0
+0.485607 -0.000374703 0
+0.487942 -0.000536491 0
+0.490109 -0.000740225 0
+0.492072 -0.000996918 0
+0.493778 -0.00132363 0
+0.495146 -0.00174067 0
+0.496059 -0.00226682 0
+0.496364 -0.00291277 0
+0.495876 -0.00367446 0
+0.494383 -0.00452847 0
+0.491681 -0.00543563 0
+0.487607 -0.006366 0
+0.482063 -0.00736544 0
+0.474976 -0.00869077 0
+0.466086 -0.0110442 0
+0.454375 -0.0159269 0
+0.436915 -0.0260927 0
+0.406959 -0.0460138 0
+0.351254 -0.0821887 0
+0.24706 -0.143062 0
+0.0599174 -0.238368 0
+-0.256137 -0.377908 0
+-0.754113 -0.570052 0
+-1.4843 -0.820374 0
+-2.47974 -1.13037 0
+-3.73926 -1.49491 0
+-5.21174 -1.89577 0
+-6.78685 -2.28901 0
+-8.30307 -2.58813 0
+-9.59635 -2.65305 0
+-10.6344 -2.30645 0
+-4.6123 -1.42991 0
+-2.06996 -0.776473 0
+-2.06996 0.61943 0
+-0.0353466 -0.00507798 0
+-0.0850518 -0.0119482 0
+-0.198724 -0.0250482 0
+-0.255767 -0.0454436 0
+-0.323572 -0.0602304 0
+-0.372218 -0.0550231 0
+-0.374452 -0.0291274 0
+-0.322459 0.00677248 0
+-0.231026 0.0383903 0
+-0.127775 0.0556211 0
+-0.0389177 0.0561869 0
+0.0206256 0.0444423 0
+0.0490771 0.027508 0
+0.0535903 0.0115817 0
+0.0442997 9.08729e-05 0
+0.0299393 -0.00627076 0
+0.0160464 -0.00850511 0
+0.00511051 -0.00818368 0
+-0.00243418 -0.0067095 0
+-0.00717508 -0.00502333 0
+-0.00999198 -0.00360601 0
+-0.0116682 -0.00260845 0
+-0.0127522 -0.001998 0
+-0.0135622 -0.00167035 0
+-0.0142471 -0.0015156 0
+-0.0148523 -0.00144711 0
+-0.0153709 -0.00140818 0
+-0.0157782 -0.00136831 0
+-0.0160514 -0.00131586 0
+-0.016178 -0.00125066 0
+-0.0161582 -0.00117823 0
+-0.0160036 -0.00110562 0
+-0.0157327 -0.00103867 0
+-0.0153665 -0.000980949 0
+-0.0149256 -0.000934005 0
+-0.0144289 -0.000897882 0
+-0.0138928 -0.000871911 0
+-0.0133316 -0.000855821 0
+-0.0127608 -0.000850765 0
+-0.0121998 -0.000860058 0
+-0.0116766 -0.000889859 0
+-0.0112338 -0.00094956 0
+-0.0109337 -0.00105127 0
+-0.0108619 -0.00120882 0
+-0.0111296 -0.00143728 0
+-0.0118788 -0.00175376 0
+-0.0132952 -0.00218019 0
+-0.0156322 -0.00274898 0
+-0.0192549 -0.00351258 0
+-0.0247056 -0.00455894 0
+-0.0328014 -0.00603485 0
+-0.0447691 -0.00817233 0
+-0.06239 -0.0112969 0
+-0.0880612 -0.0157819 0
+-0.124613 -0.021914 0
+-0.174726 -0.029673 0
+-0.239912 -0.0384871 0
+-0.319283 -0.0470899 0
+-0.40855 -0.0536057 0
+-0.499781 -0.0559237 0
+-0.582219 -0.0522916 0
+-0.644138 -0.0419434 0
+-0.675288 -0.0255281 0
+-0.669327 -0.00516027 0
+-0.625563 0.0159658 0
+-0.549493 0.0343136 0
+-0.451854 0.0468924 0
+-0.346306 0.0520406 0
+-0.24626 0.0498536 0
+-0.161803 0.0420871 0
+-0.0977643 0.0315352 0
+-0.0535829 0.021099 0
+-0.0248724 0.0129114 0
+-0.00583816 0.00786022 0
+0.00853442 0.00564593 0
+0.0212925 0.00524745 0
+0.0334657 0.00551083 0
+0.0447634 0.00559015 0
+0.0544525 0.00511521 0
+0.0619945 0.00412022 0
+0.0673002 0.00285592 0
+0.0706814 0.00160566 0
+0.0726618 0.000571638 0
+0.073784 -0.000159924 0
+0.0744856 -0.000599466 0
+0.0750525 -0.000812809 0
+0.0756314 -0.000881937 0
+0.0762676 -0.00087894 0
+0.0769495 -0.000854488 0
+0.0776424 -0.000837291 0
+0.0783097 -0.000839472 0
+0.0789212 -0.000863447 0
+0.079454 -0.000907796 0
+0.0798885 -0.000971265 0
+0.0802027 -0.00105478 0
+0.0803672 -0.00116181 0
+0.0803408 -0.00129759 0
+0.0800674 -0.00146765 0
+0.0794757 -0.00167555 0
+0.0784828 -0.00192028 0
+0.0770022 -0.00219419 0
+0.0749565 -0.00248322 0
+0.072293 -0.00277254 0
+0.0689896 -0.00306306 0
+0.0650296 -0.00340587 0
+0.0603011 -0.00396271 0
+0.0543549 -0.00509843 0
+0.0459314 -0.00750382 0
+0.0321707 -0.0123324 0
+0.00747172 -0.0213153 0
+-0.0379138 -0.0368036 0
+-0.119277 -0.0616988 0
+-0.258366 -0.0992802 0
+-0.483243 -0.153031 0
+-0.826653 -0.226643 0
+-1.32271 -0.324314 0
+-2.00196 -0.451121 0
+-2.88429 -0.61258 0
+-3.96819 -0.811872 0
+-5.21411 -1.04309 0
+-6.52283 -1.27941 0
+-7.72319 -1.4527 0
+-8.62889 -1.40074 0
+-3.93948 -0.698804 0
+-1.79031 -0.10044 0
+-1.79031 1.07504 0
+-0.0157821 -0.0010507 0
+-0.0384402 -0.00266598 0
+-0.091674 -0.00585582 0
+-0.126011 -0.011107 0
+-0.170947 -0.0152953 0
+-0.211019 -0.0149521 0
+-0.230406 -0.00974143 0
+-0.221784 -0.00185037 0
+-0.189037 0.00564226 0
+-0.143803 0.0103871 0
+-0.0992131 0.0115959 0
+-0.0646886 0.00991732 0
+-0.0439075 0.00672639 0
+-0.0356936 0.00336722 0
+-0.0363072 0.000703752 0
+-0.0416203 -0.00095838 0
+-0.0484116 -0.0017146 0
+-0.0547531 -0.00184298 0
+-0.0598274 -0.00163601 0
+-0.0635366 -0.00131496 0
+-0.0661332 -0.00101026 0
+-0.0679648 -0.000777649 0
+-0.0693383 -0.000625364 0
+-0.0704709 -0.00053855 0
+-0.0714916 -0.000495717 0
+-0.072462 -0.000477447 0
+-0.0734013 -0.000469672 0
+-0.0743064 -0.000463924 0
+-0.0751668 -0.000456227 0
+-0.0759725 -0.000445618 0
+-0.0767187 -0.000432816 0
+-0.0774058 -0.000419192 0
+-0.078039 -0.000406069 0
+-0.0786263 -0.000394388 0
+-0.0791762 -0.000384662 0
+-0.0796977 -0.000377057 0
+-0.0801986 -0.000371568 0
+-0.0806868 -0.00036825 0
+-0.0811707 -0.000367439 0
+-0.0816614 -0.000369929 0
+-0.0821747 -0.000377102 0
+-0.0827338 -0.000390974 0
+-0.0833716 -0.000414078 0
+-0.0841316 -0.000449274 0
+-0.0850698 -0.000499642 0
+-0.0862554 -0.000568615 0
+-0.0877756 -0.000660505 0
+-0.0897435 -0.000781629 0
+-0.0923142 -0.000942377 0
+-0.0957129 -0.0011607 0
+-0.100281 -0.00146727 0
+-0.106543 -0.00191094 0
+-0.11528 -0.00256013 0
+-0.127569 -0.00349305 0
+-0.144714 -0.00477049 0
+-0.167995 -0.00639168 0
+-0.198238 -0.00824557 0
+-0.235247 -0.0100808 0
+-0.277333 -0.0115202 0
+-0.321126 -0.0121318 0
+-0.36187 -0.011548 0
+-0.39422 -0.00959484 0
+-0.413363 -0.00638514 0
+-0.41619 -0.00233401 0
+-0.402143 0.00191765 0
+-0.373484 0.00565453 0
+-0.334862 0.00826916 0
+-0.292242 0.00941992 0
+-0.251503 0.00911453 0
+-0.217105 0.00768937 0
+-0.191259 0.00568811 0
+-0.173842 0.00368212 0
+-0.163032 0.00210076 0
+-0.156307 0.00113477 0
+-0.151401 0.000740011 0
+-0.146875 0.000721497 0
+-0.142211 0.000846346 0
+-0.137555 0.000934082 0
+-0.133337 0.000896878 0
+-0.129949 0.000732061 0
+-0.127581 0.000487904 0
+-0.126202 0.000226069 0
+-0.125626 -4.4116e-06 0
+-0.125608 -0.000177667 0
+-0.125919 -0.000289491 0
+-0.126382 -0.000349865 0
+-0.126889 -0.000374669 0
+-0.127389 -0.000379477 0
+-0.127867 -0.000376254 0
+-0.128332 -0.000372537 0
+-0.1288 -0.000372126 0
+-0.129287 -0.000376382 0
+-0.12981 -0.000385482 0
+-0.130382 -0.000399352 0
+-0.131019 -0.000418182 0
+-0.131738 -0.000442555 0
+-0.132563 -0.000473292 0
+-0.133519 -0.000511096 0
+-0.134639 -0.000556046 0
+-0.135953 -0.000607089 0
+-0.137485 -0.000661818 0
+-0.139252 -0.000716984 0
+-0.141254 -0.000770548 0
+-0.143491 -0.000826383 0
+-0.145994 -0.000902948 0
+-0.14891 -0.00104704 0
+-0.152656 -0.00135283 0
+-0.158176 -0.00198445 0
+-0.167311 -0.0031975 0
+-0.183274 -0.00535225 0
+-0.211166 -0.0089117 0
+-0.25844 -0.0144249 0
+-0.335209 -0.0225113 0
+-0.454356 -0.0338847 0
+-0.631532 -0.0494675 0
+-0.885222 -0.0706249 0
+-1.23688 -0.0994663 0
+-1.71043 -0.139029 0
+-2.32924 -0.193057 0
+-3.10716 -0.265177 0
+-4.02903 -0.357534 0
+-5.01454 -0.467188 0
+-5.86184 -0.553443 0
+-3.24951 -0.272618 0
+-1.78728 0.0557586 0
+-1.78728 0.704555 0
+-0.0039895 -0.0010507 0
+-0.00977833 -0.00266598 0
+-0.0237678 -0.00585582 0
+-0.0348749 -0.011107 0
+-0.0501704 -0.0152953 0
+-0.0651228 -0.0149521 0
+-0.0748645 -0.00974143 0
+-0.0767151 -0.00185037 0
+-0.071073 0.00564226 0
+-0.0606861 0.0103871 0
+-0.0490903 0.0115959 0
+-0.0391731 0.00991732 0
+-0.0324469 0.00672639 0
+-0.0290798 0.00336722 0
+-0.0283763 0.000703752 0
+-0.0293348 -0.00095838 0
+-0.0310497 -0.0017146 0
+-0.0328928 -0.00184298 0
+-0.0345291 -0.00163601 0
+-0.0358442 -0.00131496 0
+-0.0368547 -0.00101026 0
+-0.0376326 -0.000777649 0
+-0.0382582 -0.000625364 0
+-0.0387969 -0.00053855 0
+-0.0392929 -0.000495717 0
+-0.0397705 -0.000477447 0
+-0.0402404 -0.000469672 0
+-0.0407045 -0.000463924 0
+-0.0411609 -0.000456227 0
+-0.0416068 -0.000445618 0
+-0.0420398 -0.000432816 0
+-0.0424591 -0.000419192 0
+-0.0428654 -0.000406069 0
+-0.04326 -0.000394388 0
+-0.0436448 -0.000384662 0
+-0.044022 -0.000377057 0
+-0.0443938 -0.000371568 0
+-0.0447622 -0.00036825 0
+-0.0451298 -0.000367439 0
+-0.0454999 -0.000369929 0
+-0.0458772 -0.000377102 0
+-0.0462683 -0.000390974 0
+-0.0466825 -0.000414078 0
+-0.0471319 -0.000449274 0
+-0.0476317 -0.000499642 0
+-0.0482005 -0.000568615 0
+-0.0488612 -0.000660505 0
+-0.0496429 -0.000781629 0
+-0.0505855 -0.000942377 0
+-0.0517463 -0.0011607 0
+-0.0532137 -0.00146727 0
+-0.0551248 -0.00191094 0
+-0.0576851 -0.00256013 0
+-0.0611783 -0.00349305 0
+-0.0659489 -0.00477049 0
+-0.0723408 -0.00639168 0
+-0.0805865 -0.00824557 0
+-0.0906675 -0.0100808 0
+-0.102188 -0.0115202 0
+-0.11432 -0.0121318 0
+-0.125868 -0.011548 0
+-0.135463 -0.00959484 0
+-0.141848 -0.00638514 0
+-0.144183 -0.00233401 0
+-0.142265 0.00191765 0
+-0.136611 0.00565453 0
+-0.128342 0.00826916 0
+-0.118922 0.00941992 0
+-0.109808 0.00911453 0
+-0.102118 0.00768937 0
+-0.0964304 0.00568811 0
+-0.0927484 0.00368212 0
+-0.0906477 0.00210076 0
+-0.089513 0.00113477 0
+-0.0887731 0.000740011 0
+-0.0880517 0.000721497 0
+-0.0872055 0.000846346 0
+-0.0862715 0.000934082 0
+-0.0853747 0.000896878 0
+-0.0846427 0.000732061 0
+-0.0841549 0.000487904 0
+-0.0839289 0.000226069 0
+-0.0839334 -4.4116e-06 0
+-0.0841111 -0.000177667 0
+-0.0844007 -0.000289491 0
+-0.0847506 -0.000349865 0
+-0.0851254 -0.000374669 0
+-0.0855049 -0.000379477 0
+-0.0858813 -0.000376254 0
+-0.0862539 -0.000372537 0
+-0.0866261 -0.000372126 0
+-0.0870026 -0.000376382 0
+-0.0873881 -0.000385482 0
+-0.0877876 -0.000399352 0
+-0.0882058 -0.000418182 0
+-0.0886485 -0.000442555 0
+-0.0891219 -0.000473292 0
+-0.0896331 -0.000511096 0
+-0.0901892 -0.000556046 0
+-0.0907964 -0.000607089 0
+-0.0914583 -0.000661818 0
+-0.0921754 -0.000716984 0
+-0.092946 -0.000770548 0
+-0.0937725 -0.000826383 0
+-0.0946755 -0.000902948 0
+-0.0957227 -0.00104704 0
+-0.0970756 -0.00135283 0
+-0.0990601 -0.00198445 0
+-0.102258 -0.0031975 0
+-0.10761 -0.00535225 0
+-0.116522 -0.0089117 0
+-0.130947 -0.0144249 0
+-0.153458 -0.0225113 0
+-0.187343 -0.0338847 0
+-0.236811 -0.0494675 0
+-0.307436 -0.0706249 0
+-0.406902 -0.0994663 0
+-0.545931 -0.139029 0
+-0.738989 -0.193057 0
+-1.00417 -0.265177 0
+-1.3617 -0.357534 0
+-1.82889 -0.467188 0
+-2.38233 -0.553443 0
+-1.76927 -0.272618 0
+-1.2354 0.0557586 0
+-1.2354 0.704555 0
+-0.183105 -0.162873 0
+-0.399338 -0.304032 0
+-0.852208 -0.50044 0
+-0.118011 -0.7342 0
+0.76652 -0.884536 0
+1.64723 -0.880721 0
+2.38088 -0.73365 0
+2.87985 -0.498982 0
+3.12639 -0.246554 0
+3.16125 -0.0348642 0
+3.05732 0.103923 0
+2.89131 0.165998 0
+2.72342 0.167884 0
+2.58891 0.134495 0
+2.49995 0.0889556 0
+2.45288 0.0470592 0
+2.43654 0.0163384 0
+2.43855 -0.00201517 0
+2.44888 -0.0103354 0
+2.46097 -0.0120923 0
+2.47139 -0.0104325 0
+2.47897 -0.00758346 0
+2.48379 -0.00482084 0
+2.48648 -0.0026943 0
+2.48778 -0.00130569 0
+2.48832 -0.000537538 0
+2.48852 -0.000203168 0
+2.48864 -0.000127153 0
+2.48881 -0.00017734 0
+2.48908 -0.000269038 0
+2.48943 -0.0003564 0
+2.48985 -0.000420189 0
+2.49031 -0.000456623 0
+2.49078 -0.000469083 0
+2.49124 -0.00046285 0
+2.49168 -0.000442458 0
+2.49209 -0.00041114 0
+2.49246 -0.00037205 0
+2.49279 -0.000331146 0
+2.49309 -0.000301508 0
+2.4934 -0.000307874 0
+2.49378 -0.000387991 0
+2.49437 -0.000584716 0
+2.49529 -0.00092148 0
+2.49665 -0.00135755 0
+2.49838 -0.00173221 0
+2.50011 -0.00172777 0
+2.50101 -0.00090001 0
+2.49983 0.00117731 0
+2.49518 0.00464949 0
+2.4861 0.00907663 0
+2.47285 0.0132496 0
+2.45754 0.0153097 0
+2.44428 0.0132606 0
+2.43852 0.00576339 0
+2.44561 -0.00709331 0
+2.46904 -0.0234246 0
+2.50886 -0.0398148 0
+2.56103 -0.0521769 0
+2.61794 -0.0569094 0
+2.66991 -0.0519656 0
+2.70742 -0.0375135 0
+2.72343 -0.0160099 0
+2.71509 0.00833994 0
+2.68449 0.0306078 0
+2.63811 0.0463771 0
+2.58527 0.0528419 0
+2.5358 0.0494682 0
+2.49776 0.0380446 0
+2.47566 0.0220985 0
+2.46983 0.0058264 0
+2.47698 -0.00714096 0
+2.49168 -0.0147064 0
+2.50834 -0.0166599 0
+2.52268 -0.0143375 0
+2.5325 -0.00982074 0
+2.53758 -0.00508023 0
+2.53899 -0.0014081 0
+2.53826 0.000727515 0
+2.53677 0.0014936 0
+2.53541 0.00136519 0
+2.53457 0.00083763 0
+2.5343 0.000265813 0
+2.53448 -0.000171431 0
+2.53491 -0.000431282 0
+2.53545 -0.000544618 0
+2.53602 -0.000565008 0
+2.53656 -0.000539995 0
+2.53706 -0.000501374 0
+2.53753 -0.000466415 0
+2.53797 -0.000443101 0
+2.53841 -0.000435358 0
+2.53885 -0.000446657 0
+2.53933 -0.000481642 0
+2.53988 -0.000545691 0
+2.54052 -0.000642216 0
+2.54129 -0.000767265 0
+2.54219 -0.000901146 0
+2.54319 -0.000997379 0
+2.54416 -0.000970891 0
+2.54485 -0.00069032 0
+2.54483 1.61206e-05 0
+2.54351 0.00132578 0
+2.54017 0.00333686 0
+2.53426 0.00591254 0
+2.52581 0.00844614 0
+2.51623 0.00957788 0
+2.50926 0.00696804 0
+2.51193 -0.00266515 0
+2.53487 -0.0229418 0
+2.59124 -0.0563641 0
+2.69321 -0.101974 0
+2.84588 -0.152671 0
+3.03942 -0.19354 0
+3.24255 -0.20313 0
+3.40183 -0.159284 0
+3.45121 -0.0493759 0
+3.33303 0.118181 0
+3.02614 0.306887 0
+2.57068 0.455467 0
+2.07663 0.494048 0
+1.704 0.372628 0
+1.57878 0.125223 0
+1.39939 0.186393 0
+1.0541 0.347976 0
+1.0541 0.9165 0
+-0.904723 -0.608278 0
+-1.85833 -1.09977 0
+-3.80363 -1.81439 0
+-1.8389 -2.69894 0
+0.572006 -3.29546 0
+2.95853 -3.26727 0
+4.86179 -2.63694 0
+6.00824 -1.64546 0
+6.36737 -0.605723 0
+6.10754 0.22493 0
+5.49442 0.717017 0
+4.78665 0.873731 0
+4.16779 0.786719 0
+3.72596 0.576303 0
+3.47026 0.344629 0
+3.3633 0.153997 0
+3.35223 0.0273835 0
+3.38933 -0.0391372 0
+3.44097 -0.0619898 0
+3.48824 -0.0593899 0
+3.52356 -0.0457611 0
+3.54616 -0.0302024 0
+3.55854 -0.0172126 0
+3.56402 -0.00819063 0
+3.56556 -0.00285892 0
+3.56529 -0.000278938 0
+3.56451 0.000560357 0
+3.5639 0.000476013 0
+3.56369 2.18966e-05 0
+3.5639 -0.000482339 0
+3.56442 -0.000887428 0
+3.56514 -0.00114961 0
+3.56596 -0.00127927 0
+3.56679 -0.00130637 0
+3.56758 -0.0012603 0
+3.5683 -0.00116072 0
+3.5689 -0.00101652 0
+3.56935 -0.000831427 0
+3.56964 -0.000616775 0
+3.56974 -0.000412878 0
+3.56975 -0.000316625 0
+3.56986 -0.000502842 0
+3.57049 -0.00121095 0
+3.57222 -0.00265422 0
+3.57568 -0.00481592 0
+3.5811 -0.00715053 0
+3.58768 -0.00831521 0
+3.59296 -0.0061781 0
+3.59252 0.00161594 0
+3.58076 0.0164129 0
+3.55288 0.036954 0
+3.50792 0.0582101 0
+3.45159 0.071645 0
+3.39735 0.0674969 0
+3.36447 0.0386442 0
+3.37287 -0.0154872 0
+3.43637 -0.0869283 0
+3.55688 -0.160325 0
+3.72171 -0.217007 0
+3.90524 -0.240431 0
+4.07437 -0.221096 0
+4.19635 -0.159494 0
+4.24678 -0.0664375 0
+4.21576 0.0393583 0
+4.11049 0.135887 0
+3.95344 0.203423 0
+3.7768 0.229486 0
+3.61443 0.21184 0
+3.49369 0.158787 0
+3.4292 0.0865876 0
+3.4205 0.0145347 0
+3.45425 -0.040893 0
+3.51021 -0.0706629 0
+3.56833 -0.074781 0
+3.61441 -0.0604153 0
+3.64239 -0.0377989 0
+3.65335 -0.0160368 0
+3.6525 -0.000550658 0
+3.64593 0.00729476 0
+3.63845 0.00897855 0
+3.63271 0.00710118 0
+3.62952 0.00402952 0
+3.62853 0.00126045 0
+3.62896 -0.000600926 0
+3.63008 -0.00154952 0
+3.63138 -0.00184659 0
+3.63261 -0.00178644 0
+3.63366 -0.00158864 0
+3.63453 -0.00137917 0
+3.63528 -0.00121356 0
+3.63595 -0.00110916 0
+3.63658 -0.00107112 0
+3.63725 -0.0011086 0
+3.63801 -0.00124188 0
+3.63896 -0.0015016 0
+3.64024 -0.00191908 0
+3.64198 -0.00250538 0
+3.64429 -0.00321602 0
+3.6472 -0.00389974 0
+3.65046 -0.00423498 0
+3.65344 -0.00366908 0
+3.65485 -0.00139551 0
+3.65261 0.0035658 0
+3.64386 0.0120835 0
+3.62548 0.0242987 0
+3.59535 0.0385735 0
+3.5549 0.0500304 0
+3.51284 0.0490253 0
+3.48975 0.020422 0
+3.52166 -0.0548508 0
+3.65951 -0.194208 0
+3.96036 -0.402831 0
+4.46742 -0.659726 0
+5.18013 -0.906252 0
+6.02389 -1.04689 0
+6.83645 -0.971849 0
+7.39033 -0.603251 0
+7.45984 0.0486726 0
+6.91828 0.84844 0
+5.82373 1.55002 0
+4.4372 1.88058 0
+3.12542 1.68441 0
+2.13203 1.11861 0
+1.38102 0.966887 0
+0.821299 0.919212 0
+0.821299 1.72968 0
+-1.97214 -1.14292 0
+-4.01545 -2.07574 0
+-8.15124 -3.45658 0
+-5.63507 -5.21512 0
+-2.52038 -6.41018 0
+0.449558 -6.23725 0
+2.53402 -4.72146 0
+3.33208 -2.44358 0
+2.89246 -0.166163 0
+1.6086 1.50873 0
+0.00188837 2.32367 0
+-1.48235 2.35791 0
+-2.586 1.89032 0
+-3.2448 1.23505 0
+-3.52801 0.627794 0
+-3.5612 0.187152 0
+-3.46678 -0.0670771 0
+-3.33398 -0.171976 0
+-3.21344 -0.182563 0
+-3.12527 -0.147601 0
+-3.07086 -0.100197 0
+-3.04309 -0.0580027 0
+-3.03282 -0.0275142 0
+-3.03219 -0.00884396 0
+-3.03571 0.000641119 0
+-3.04014 0.00412669 0
+-3.04391 0.00430539 0
+-3.04651 0.00305662 0
+-3.048 0.00149822 0
+-3.04868 0.000177479 0
+-3.04885 -0.000722834 0
+-3.0488 -0.00121591 0
+-3.0487 -0.00139469 0
+-3.04865 -0.00136302 0
+-3.04872 -0.00120032 0
+-3.04894 -0.000948154 0
+-3.04936 -0.000611419 0
+-3.05002 -0.000170035 0
+-3.05104 0.000395525 0
+-3.05251 0.0010538 0
+-3.05448 0.00164082 0
+-3.05675 0.00176461 0
+-3.05872 0.000759238 0
+-3.05919 -0.00218573 0
+-3.05644 -0.00756857 0
+-3.04885 -0.0147422 0
+-3.03622 -0.0209458 0
+-3.02155 -0.0208557 0
+-3.01236 -0.00757201 0
+-3.02029 0.024349 0
+-3.05767 0.0743295 0
+-3.13122 0.131765 0
+-3.23521 0.175628 0
+-3.34755 0.179844 0
+-3.43256 0.123655 0
+-3.45074 0.00269201 0
+-3.37261 -0.165052 0
+-3.19088 -0.342055 0
+-2.92584 -0.482042 0
+-2.62223 -0.544044 0
+-2.33887 -0.504454 0
+-2.13444 -0.36392 0
+-2.0529 -0.147973 0
+-2.11224 0.0987048 0
+-2.29971 0.323356 0
+-2.57493 0.478647 0
+-2.88009 0.53465 0
+-3.15438 0.486133 0
+-3.34918 0.353591 0
+-3.44002 0.177434 0
+-3.43135 0.00586509 0
+-3.35189 -0.120345 0
+-3.24229 -0.180262 0
+-3.14024 -0.176832 0
+-3.0695 -0.131145 0
+-3.03657 -0.0707266 0
+-3.03441 -0.0181951 0
+-3.04982 0.0148591 0
+-3.07022 0.0277005 0
+-3.08747 0.0262292 0
+-3.09839 0.0180254 0
+-3.10334 0.00898987 0
+-3.10429 0.00220462 0
+-3.10327 -0.00161313 0
+-3.10176 -0.00305394 0
+-3.10053 -0.00308319 0
+-3.0998 -0.00251291 0
+-3.09954 -0.00183895 0
+-3.09964 -0.00128347 0
+-3.09995 -0.000902028 0
+-3.10038 -0.000680007 0
+-3.10085 -0.000595411 0
+-3.10131 -0.000652209 0
+-3.10165 -0.000894661 0
+-3.10175 -0.00140805 0
+-3.10136 -0.00230373 0
+-3.10019 -0.00368126 0
+-3.09784 -0.0055572 0
+-3.09399 -0.0077486 0
+-3.08852 -0.00970648 0
+-3.08188 -0.0103142 0
+-3.07557 -0.00770681 0
+-3.07276 0.000760195 0
+-3.07883 0.0181513 0
+-3.10137 0.0468385 0
+-3.149 0.0862036 0
+-3.22784 0.128868 0
+-3.33459 0.155775 0
+-3.44595 0.131785 0
+-3.50626 0.0054541 0
+-3.41894 -0.281523 0
+-3.05159 -0.770186 0
+-2.26531 -1.44601 0
+-0.97289 -2.19867 0
+0.78641 -2.80619 0
+2.78963 -2.97506 0
+4.63733 -2.45095 0
+5.85789 -1.17189 0
+6.09214 0.614187 0
+5.27783 2.36433 0
+3.71808 3.44034 0
+1.95578 3.44671 0
+0.509071 2.56532 0
+-0.1676 1.71268 0
+-0.312364 1.09161 0
+-0.312364 1.74106 0
+-2.92213 -1.53723 0
+-6.00954 -2.82264 0
+-12.3075 -4.74267 0
+-10.3032 -7.21949 0
+-7.89218 -8.82121 0
+-5.91511 -8.21438 0
+-5.17581 -5.46083 0
+-5.99528 -1.62419 0
+-8.09422 1.9327 0
+-10.7968 4.21119 0
+-13.3756 4.90238 0
+-15.3306 4.31293 0
+-16.4912 3.05081 0
+-16.955 1.69873 0
+-16.9523 0.62512 0
+-16.7217 -0.0435843 0
+-16.4383 -0.350484 0
+-16.1983 -0.412024 0
+-16.0345 -0.346446 0
+-15.9424 -0.239686 0
+-15.9028 -0.139899 0
+-15.8947 -0.0661625 0
+-15.9019 -0.0203507 0
+-15.914 0.00330551 0
+-15.9258 0.0123395 0
+-15.9349 0.0132375 0
+-15.9412 0.0105542 0
+-15.9452 0.0070081 0
+-15.9476 0.00394355 0
+-15.9493 0.00182635 0
+-15.9507 0.000642818 0
+-15.9521 0.000177341 0
+-15.9537 0.000177068 0
+-15.9555 0.000431603 0
+-15.9575 0.000805385 0
+-15.9597 0.00124453 0
+-15.9621 0.00176818 0
+-15.9647 0.00245564 0
+-15.9678 0.00342303 0
+-15.9715 0.00475547 0
+-15.9762 0.00635916 0
+-15.9822 0.00772663 0
+-15.9891 0.00768866 0
+-15.9957 0.00438992 0
+-15.9992 -0.00411535 0
+-15.9956 -0.0183221 0
+-15.9815 -0.0349789 0
+-15.9572 -0.0451934 0
+-15.9298 -0.0350232 0
+-15.9149 0.00949264 0
+-15.9336 0.0930197 0
+-16.003 0.20119 0
+-16.1246 0.297233 0
+-16.2755 0.330734 0
+-16.4099 0.25805 0
+-16.4728 0.065542 0
+-16.4204 -0.217366 0
+-16.2388 -0.52367 0
+-15.9505 -0.770387 0
+-15.6093 -0.885188 0
+-15.2867 -0.827072 0
+-15.0538 -0.596779 0
+-14.9645 -0.237358 0
+-15.041 0.1752 0
+-15.2683 0.550718 0
+-15.5978 0.808154 0
+-15.9592 0.896004 0
+-16.2776 0.804617 0
+-16.493 0.568977 0
+-16.5762 0.260583 0
+-16.537 -0.0333051 0
+-16.4185 -0.238808 0
+-16.2782 -0.320542 0
+-16.1655 -0.289598 0
+-16.1058 -0.190765 0
+-16.0989 -0.0777114 0
+-16.1266 0.00958292 0
+-16.1668 0.0550334 0
+-16.2024 0.0633234 0
+-16.2257 0.0495337 0
+-16.2366 0.0289643 0
+-16.2391 0.0114935 0
+-16.2377 0.00078808 0
+-16.2356 -0.00369468 0
+-16.2345 -0.00418899 0
+-16.2347 -0.00288285 0
+-16.236 -0.00120806 0
+-16.238 0.000170555 0
+-16.2404 0.00109034 0
+-16.2429 0.0016216 0
+-16.2455 0.00188952 0
+-16.2481 0.00198488 0
+-16.2506 0.00192862 0
+-16.2532 0.00165774 0
+-16.2556 0.00101976 0
+-16.2577 -0.000217895 0
+-16.259 -0.00233105 0
+-16.259 -0.00555334 0
+-16.2569 -0.00991131 0
+-16.2516 -0.0149502 0
+-16.2426 -0.0193374 0
+-16.2299 -0.0203752 0
+-16.2156 -0.0135613 0
+-16.2049 0.00745784 0
+-16.208 0.0498981 0
+-16.2406 0.118825 0
+-16.3227 0.210963 0
+-16.4716 0.30471 0
+-16.6876 0.347789 0
+-16.9304 0.248198 0
+-17.0916 -0.120338 0
+-16.9778 -0.883959 0
+-16.3267 -2.09707 0
+-14.8779 -3.64749 0
+-12.4974 -5.18672 0
+-9.31316 -6.1593 0
+-5.77881 -5.9853 0
+-2.58461 -4.3661 0
+-0.405541 -1.56488 0
+0.409384 1.5494 0
+0.0246326 3.82509 0
+-0.95321 4.42455 0
+-1.75771 3.36982 0
+-1.58345 1.66403 0
+-1.03595 0.595595 0
+-1.03595 1.16082 0
+-3.42984 -1.68774 0
+-7.19564 -3.12882 0
+-14.9949 -5.27708 0
+-14.1931 -8.02139 0
+-13.4617 -9.55268 0
+-13.531 -8.14513 0
+-14.9854 -4.00649 0
+-17.8325 1.22279 0
+-21.4668 5.56688 0
+-25.0006 7.74496 0
+-27.698 7.59964 0
+-29.2422 5.85704 0
+-29.7402 3.54874 0
+-29.5444 1.50287 0
+-29.0418 0.122482 0
+-28.5175 -0.567955 0
+-28.1166 -0.751401 0
+-27.8731 -0.655574 0
+-27.7599 -0.459755 0
+-27.7307 -0.268904 0
+-27.7443 -0.126302 0
+-27.7728 -0.0377309 0
+-27.801 0.00777613 0
+-27.8228 0.025057 0
+-27.8373 0.02681 0
+-27.8459 0.0218339 0
+-27.8507 0.0152929 0
+-27.8534 0.00968468 0
+-27.8553 0.00585188 0
+-27.8573 0.00375436 0
+-27.8596 0.00297544 0
+-27.8625 0.00303097 0
+-27.8659 0.0035186 0
+-27.8696 0.00415721 0
+-27.8736 0.00479109 0
+-27.8778 0.00538146 0
+-27.882 0.00598278 0
+-27.8863 0.00673665 0
+-27.8907 0.00788575 0
+-27.8957 0.00973753 0
+-27.9019 0.0124984 0
+-27.9101 0.0159083 0
+-27.9211 0.0186657 0
+-27.9346 0.0179207 0
+-27.9483 0.00955205 0
+-27.9567 -0.0098894 0
+-27.9524 -0.0392799 0
+-27.9292 -0.068404 0
+-27.8879 -0.0763526 0
+-27.8411 -0.0372435 0
+-27.8133 0.0651707 0
+-27.8313 0.219201 0
+-27.9093 0.375209 0
+-28.0345 0.456001 0
+-28.1657 0.389227 0
+-28.2472 0.147048 0
+-28.2336 -0.230998 0
+-28.1095 -0.647746 0
+-27.8949 -0.985003 0
+-27.6357 -1.14442 0
+-27.3894 -1.07333 0
+-27.2124 -0.773751 0
+-27.1477 -0.302044 0
+-27.2142 0.241617 0
+-27.4009 0.73745 0
+-27.6704 1.07771 0
+-27.9675 1.1931 0
+-28.2305 1.06758 0
+-28.4056 0.744125 0
+-28.4649 0.319902 0
+-28.4188 -0.079472 0
+-28.3124 -0.345155 0
+-28.2051 -0.427871 0
+-28.1428 -0.351871 0
+-28.1414 -0.192172 0
+-28.1874 -0.0317367 0
+-28.2525 0.0747284 0
+-28.3108 0.11334 0
+-28.3485 0.100994 0
+-28.3646 0.0656877 0
+-28.3661 0.0304216 0
+-28.3612 0.00664295 0
+-28.3562 -0.00425512 0
+-28.3538 -0.00608027 0
+-28.3544 -0.00353194 0
+-28.3573 2.02706e-05 0
+-28.3615 0.00293446 0
+-28.3661 0.00479268 0
+-28.3708 0.00576431 0
+-28.3753 0.0061747 0
+-28.3797 0.00629924 0
+-28.384 0.00630146 0
+-28.3883 0.00623224 0
+-28.3927 0.00602933 0
+-28.3972 0.00550289 0
+-28.4017 0.004326 0
+-28.4061 0.00204441 0
+-28.4098 -0.00187183 0
+-28.4118 -0.00788229 0
+-28.4107 -0.0160768 0
+-28.4044 -0.0256657 0
+-28.3905 -0.0342074 0
+-28.3675 -0.0366099 0
+-28.3358 -0.0241912 0
+-28.3014 0.0154821 0
+-28.2791 0.0965547 0
+-28.2965 0.228339 0
+-28.3934 0.401586 0
+-28.6121 0.566515 0
+-28.9713 0.607365 0
+-29.4208 0.329122 0
+-29.789 -0.515734 0
+-29.7542 -2.13185 0
+-28.8851 -4.51656 0
+-26.7825 -7.28931 0
+-23.296 -9.64588 0
+-18.7096 -10.5716 0
+-13.7526 -9.32309 0
+-9.35436 -5.96313 0
+-6.23061 -1.57435 0
+-4.53682 2.1313 0
+-3.8182 3.70592 0
+-3.29162 2.84323 0
+-2.09288 0.661524 0
+-1.04635 -0.36835 0
+-1.04635 0.440871 0
+-3.46297 -1.62292 0
+-7.44422 -3.02085 0
+-15.8147 -5.06854 0
+-16.2596 -7.57649 0
+-17.2757 -8.53661 0
+-19.318 -6.10288 0
+-22.5505 -0.774169 0
+-26.5644 5.23665 0
+-30.5026 9.50494 0
+-33.4956 10.738 0
+-35.0822 9.18615 0
+-35.3445 6.11921 0
+-34.7418 2.94598 0
+-33.8185 0.579527 0
+-32.9782 -0.717851 0
+-32.4074 -1.13886 0
+-32.1177 -1.0411 0
+-32.0327 -0.740648 0
+-32.0596 -0.432929 0
+-32.1271 -0.201391 0
+-32.1944 -0.0590155 0
+-32.2448 0.0126316 0
+-32.276 0.0388973 0
+-32.2919 0.0409418 0
+-32.2981 0.0329316 0
+-32.2992 0.0229029 0
+-32.2985 0.0145727 0
+-32.2979 0.00906299 0
+-32.2983 0.00621035 0
+-32.2999 0.0053463 0
+-32.3026 0.00570369 0
+-32.3063 0.00665386 0
+-32.3106 0.00778128 0
+-32.3153 0.00883401 0
+-32.3202 0.00969541 0
+-32.3252 0.0103739 0
+-32.3302 0.0109492 0
+-32.335 0.0115681 0
+-32.3397 0.0125314 0
+-32.3443 0.0143432 0
+-32.3494 0.0176263 0
+-32.3563 0.0227806 0
+-32.3668 0.029152 0
+-32.3827 0.033817 0
+-32.4041 0.0309139 0
+-32.427 0.0130698 0
+-32.4425 -0.02378 0
+-32.4381 -0.0728449 0
+-32.4038 -0.110677 0
+-32.3404 -0.100653 0
+-32.2643 -0.0108762 0
+-32.2033 0.158215 0
+-32.1819 0.353717 0
+-32.2043 0.478461 0
+-32.2492 0.434125 0
+-32.2809 0.178728 0
+-32.272 -0.239891 0
+-32.219 -0.700717 0
+-32.1391 -1.06491 0
+-32.0544 -1.22919 0
+-31.9811 -1.14661 0
+-31.9316 -0.82324 0
+-31.9169 -0.316692 0
+-31.9439 0.268588 0
+-32.012 0.805571 0
+-32.1151 1.18074 0
+-32.2423 1.32031 0
+-32.3743 1.19959 0
+-32.482 0.851829 0
+-32.5403 0.37824 0
+-32.5479 -0.0719035 0
+-32.532 -0.360965 0
+-32.5323 -0.427661 0
+-32.5743 -0.309783 0
+-32.6562 -0.110309 0
+-32.7532 0.0652537 0
+-32.836 0.157549 0
+-32.8868 0.16417 0
+-32.9046 0.118775 0
+-32.9 0.0611363 0
+-32.8868 0.0172135 0
+-32.875 -0.00514587 0
+-32.8691 -0.0102017 0
+-32.869 -0.00612258 0
+-32.873 0.000393245 0
+-32.8788 0.00581625 0
+-32.885 0.00917661 0
+-32.891 0.0107926 0
+-32.8965 0.0113185 0
+-32.9017 0.0113114 0
+-32.9065 0.0111205 0
+-32.9111 0.0109164 0
+-32.9156 0.0107566 0
+-32.9202 0.0106019 0
+-32.925 0.0102848 0
+-32.9301 0.00948008 0
+-32.9358 0.00768005 0
+-32.9418 0.00417539 0
+-32.9478 -0.00188589 0
+-32.9526 -0.0112909 0
+-32.9539 -0.0243382 0
+-32.9481 -0.0400472 0
+-32.9298 -0.054859 0
+-32.8931 -0.0608882 0
+-32.8335 -0.044152 0
+-32.7529 0.0159839 0
+-32.6679 0.143305 0
+-32.6187 0.352367 0
+-32.6739 0.621778 0
+-32.9188 0.852219 0
+-33.4123 0.822663 0
+-34.1106 0.182503 0
+-34.7788 -1.46368 0
+-34.9543 -4.34103 0
+-34.0357 -8.20788 0
+-31.5238 -12.1578 0
+-27.3272 -14.7682 0
+-21.94 -14.7104 0
+-16.314 -11.5891 0
+-11.4359 -6.45238 0
+-7.85051 -1.4541 0
+-5.452 1.30741 0
+-3.69485 1.08609 0
+-1.83901 -0.917603 0
+-0.6684 -1.41928 0
+-0.6684 -0.113947 0
+-3.18 -1.43135 0
+-6.99429 -2.65331 0
+-15.0884 -4.37719 0
+-16.3586 -6.30632 0
+-18.4746 -6.42065 0
+-21.5369 -3.04067 0
+-25.2575 2.94636 0
+-28.9123 8.89138 0
+-31.635 12.2276 0
+-32.8701 11.973 0
+-32.6435 8.95946 0
+-31.4741 4.94979 0
+-30.0415 1.51333 0
+-28.8635 -0.598563 0
+-28.1577 -1.42364 0
+-27.8902 -1.4064 0
+-27.9067 -1.02463 0
+-28.0476 -0.599829 0
+-28.2041 -0.276501 0
+-28.3247 -0.0807521 0
+-28.3982 0.0144321 0
+-28.4328 0.0471819 0
+-28.4423 0.0483406 0
+-28.4388 0.0374198 0
+-28.4306 0.0247419 0
+-28.4225 0.0147742 0
+-28.4166 0.00864373 0
+-28.4135 0.00586412 0
+-28.4128 0.00548499 0
+-28.414 0.00656057 0
+-28.4166 0.00827039 0
+-28.42 0.0100746 0
+-28.424 0.0117219 0
+-28.4282 0.0130758 0
+-28.4326 0.0140871 0
+-28.4371 0.014836 0
+-28.4416 0.0154148 0
+-28.4459 0.0158922 0
+-28.4499 0.0164976 0
+-28.4533 0.0177521 0
+-28.4562 0.0205097 0
+-28.4593 0.0258901 0
+-28.4647 0.0345274 0
+-28.4757 0.0448023 0
+-28.4957 0.0509248 0
+-28.5255 0.0427855 0
+-28.5592 0.00999292 0
+-28.5833 -0.0488011 0
+-28.5788 -0.115201 0
+-28.5304 -0.149071 0
+-28.436 -0.10522 0
+-28.3105 0.0327262 0
+-28.178 0.221203 0
+-28.0579 0.358297 0
+-27.9563 0.332603 0
+-27.8731 0.0954548 0
+-27.8159 -0.29704 0
+-27.8061 -0.710582 0
+-27.8617 -1.00931 0
+-27.9736 -1.11721 0
+-28.1021 -1.01811 0
+-28.2014 -0.723954 0
+-28.2422 -0.275882 0
+-28.2159 0.242268 0
+-28.1335 0.72311 0
+-28.0271 1.07439 0
+-27.9454 1.23863 0
+-27.9285 1.18265 0
+-27.9816 0.904949 0
+-28.0807 0.477369 0
+-28.2004 0.04775 0
+-28.332 -0.229335 0
+-28.4781 -0.281598 0
+-28.6345 -0.153375 0
+-28.7824 0.0375735 0
+-28.8965 0.179414 0
+-28.9609 0.221968 0
+-28.9775 0.180714 0
+-28.9625 0.103844 0
+-28.9366 0.0351876 0
+-28.9148 -0.00459417 0
+-28.9035 -0.0164654 0
+-28.902 -0.0116672 0
+-28.9066 -0.00146712 0
+-28.9137 0.00744675 0
+-28.9208 0.0129347 0
+-28.9271 0.0154403 0
+-28.9324 0.0161244 0
+-28.937 0.0159385 0
+-28.9412 0.015455 0
+-28.945 0.0149427 0
+-28.9485 0.014488 0
+-28.9519 0.0141244 0
+-28.9552 0.0138518 0
+-28.9584 0.0135667 0
+-28.962 0.0130348 0
+-28.9662 0.01186 0
+-28.9714 0.00939147 0
+-28.978 0.00468652 0
+-28.9858 -0.00341235 0
+-28.9941 -0.0160993 0
+-29 -0.0341164 0
+-28.9982 -0.0566603 0
+-28.9795 -0.0795631 0
+-28.931 -0.0927014 0
+-28.838 -0.076988 0
+-28.6917 -0.00300651 0
+-28.5028 0.163445 0
+-28.3209 0.439859 0
+-28.2487 0.78005 0
+-28.4299 1.00384 0
+-28.985 0.737686 0
+-29.8931 -0.555588 0
+-30.8659 -3.36826 0
+-31.3193 -7.75445 0
+-30.5385 -12.9386 0
+-28.021 -17.2857 0
+-23.8149 -18.9165 0
+-18.5952 -16.8088 0
+-13.3643 -11.6834 0
+-8.94683 -5.87152 0
+-5.64006 -1.99937 0
+-3.27316 -1.28081 0
+-1.28132 -2.54675 0
+-0.275138 -2.26427 0
+-0.275138 -0.413939 0
+-2.76504 -1.19747 0
+-6.178 -2.19083 0
+-13.4252 -3.50918 0
+-14.9748 -4.75678 0
+-17.3382 -4.05728 0
+-20.2834 -0.0954623 0
+-23.2032 5.86602 0
+-25.3017 10.9899 0
+-25.9862 12.9119 0
+-25.2061 11.1929 0
+-23.4744 7.22781 0
+-21.5573 3.03263 0
+-20.0763 0.0323101 0
+-19.2861 -1.38879 0
+-19.1034 -1.60642 0
+-19.2813 -1.2285 0
+-19.579 -0.726988 0
+-19.8452 -0.333664 0
+-20.0222 -0.0995378 0
+-20.1118 0.00886915 0
+-20.14 0.0425227 0
+-20.1341 0.0413134 0
+-20.1146 0.0288426 0
+-20.0934 0.0161388 0
+-20.0758 0.00710278 0
+-20.0634 0.00241728 0
+-20.0561 0.00127331 0
+-20.0526 0.00235321 0
+-20.0518 0.00463843 0
+-20.0527 0.00743518 0
+-20.0545 0.0101361 0
+-20.0569 0.0124367 0
+-20.0596 0.0143591 0
+-20.0624 0.015885 0
+-20.0653 0.0169907 0
+-20.0683 0.0178501 0
+-20.0715 0.0185807 0
+-20.0748 0.0191213 0
+-20.0778 0.0195622 0
+-20.0804 0.0202697 0
+-20.0818 0.021928 0
+-20.0818 0.025923 0
+-20.0814 0.0340958 0
+-20.0835 0.0469228 0
+-20.0934 0.0607723 0
+-20.1164 0.0658321 0
+-20.154 0.0475412 0
+-20.1978 -0.00501848 0
+-20.2278 -0.0851874 0
+-20.217 -0.15985 0
+-20.1425 -0.179802 0
+-19.9964 -0.113325 0
+-19.7904 0.0151971 0
+-19.5497 0.117552 0
+-19.3059 0.0888053 0
+-19.0968 -0.113611 0
+-18.9697 -0.424185 0
+-18.9728 -0.707498 0
+-19.1267 -0.855421 0
+-19.3927 -0.851167 0
+-19.6782 -0.732632 0
+-19.8898 -0.512354 0
+-19.9703 -0.195397 0
+-19.9003 0.172309 0
+-19.6965 0.519242 0
+-19.4164 0.794333 0
+-19.158 0.980219 0
+-19.0189 1.04357 0
+-19.0391 0.925128 0
+-19.1953 0.633637 0
+-19.4357 0.288114 0
+-19.7105 0.0454191 0
+-19.9805 -0.0115571 0
+-20.2129 0.0790482 0
+-20.3809 0.205566 0
+-20.4717 0.270182 0
+-20.4929 0.243233 0
+-20.4693 0.157098 0
+-20.4302 0.0647105 0
+-20.3975 0.00249301 0
+-20.3805 -0.0216033 0
+-20.3779 -0.0190535 0
+-20.3837 -0.00582631 0
+-20.3922 0.00702342 0
+-20.3999 0.0151751 0
+-20.4058 0.0188001 0
+-20.41 0.0196877 0
+-20.4133 0.0193747 0
+-20.416 0.0186681 0
+-20.4185 0.0179183 0
+-20.4208 0.0172239 0
+-20.4228 0.0165463 0
+-20.4246 0.0158892 0
+-20.426 0.0153018 0
+-20.4272 0.0147347 0
+-20.4282 0.0140532 0
+-20.4294 0.0130569 0
+-20.4313 0.0113174 0
+-20.4347 0.00809172 0
+-20.4405 0.00235766 0
+-20.4493 -0.00725612 0
+-20.4611 -0.0224022 0
+-20.4733 -0.0444111 0
+-20.4797 -0.0731402 0
+-20.4674 -0.105003 0
+-20.4149 -0.129512 0
+-20.2932 -0.124746 0
+-20.0746 -0.0550893 0
+-19.7548 0.120015 0
+-19.3856 0.410892 0
+-19.1043 0.722489 0
+-19.1207 0.754107 0
+-19.6267 -0.0496384 0
+-20.6307 -2.36425 0
+-21.8064 -6.57867 0
+-22.5002 -12.2449 0
+-21.9834 -17.8025 0
+-19.8537 -21.0462 0
+-16.3137 -20.3488 0
+-12.0961 -15.9009 0
+-8.06749 -9.90013 0
+-4.81348 -5.25338 0
+-2.52165 -3.57264 0
+-0.770732 -3.84639 0
+-0.04066 -2.78856 0
+-0.04066 -0.502157 0
+-2.33865 -0.97491 0
+-5.25314 -1.74729 0
+-11.3934 -2.68878 0
+-12.8062 -3.34403 0
+-14.7824 -2.08112 0
+-16.8621 1.9842 0
+-18.3325 7.33639 0
+-18.576 11.2333 0
+-17.4373 11.7732 0
+-15.348 9.10352 0
+-13.091 4.97081 0
+-11.3744 1.31594 0
+-10.5171 -0.824974 0
+-10.4205 -1.48543 0
+-10.76 -1.26693 0
+-11.2123 -0.776174 0
+-11.5806 -0.358743 0
+-11.8019 -0.112418 0
+-11.8953 -0.00610788 0
+-11.9078 0.0213107 0
+-11.8817 0.0163497 0
+-11.8445 0.00414268 0
+-11.8105 -0.00520927 0
+-11.7846 -0.00976377 0
+-11.7671 -0.0104198 0
+-11.7565 -0.00823223 0
+-11.7508 -0.00440983 0
+-11.7483 -0.000208848 0
+-11.7475 0.00386425 0
+-11.7478 0.00768605 0
+-11.7485 0.0108751 0
+-11.7494 0.0133307 0
+-11.7505 0.0153813 0
+-11.7517 0.0170543 0
+-11.7529 0.0182459 0
+-11.7544 0.0192593 0
+-11.7561 0.0202793 0
+-11.758 0.0210891 0
+-11.7602 0.021701 0
+-11.7623 0.0223539 0
+-11.7636 0.0232505 0
+-11.7631 0.025399 0
+-11.7601 0.0310933 0
+-11.7556 0.0424561 0
+-11.7537 0.0588249 0
+-11.7615 0.073597 0
+-11.7863 0.0723084 0
+-11.8286 0.0373676 0
+-11.8756 -0.0382212 0
+-11.8987 -0.136786 0
+-11.8613 -0.217155 0
+-11.7343 -0.240382 0
+-11.5106 -0.20845 0
+-11.2126 -0.180497 0
+-10.8886 -0.23515 0
+-10.6063 -0.395956 0
+-10.4413 -0.589152 0
+-10.4571 -0.69175 0
+-10.6701 -0.642464 0
+-11.0176 -0.503648 0
+-11.3707 -0.379547 0
+-11.6209 -0.262124 0
+-11.7127 -0.103619 0
+-11.6269 0.086471 0
+-11.3751 0.267433 0
+-11.0105 0.429742 0
+-10.6474 0.617176 0
+-10.4248 0.820936 0
+-10.412 0.912312 0
+-10.5936 0.815219 0
+-10.903 0.597603 0
+-11.2596 0.401987 0
+-11.5903 0.319143 0
+-11.8419 0.33064 0
+-11.9892 0.352833 0
+-12.0384 0.319454 0
+-12.0209 0.225673 0
+-11.9762 0.112443 0
+-11.9359 0.0243766 0
+-11.9145 -0.0189048 0
+-11.9116 -0.0244686 0
+-11.9194 -0.0112601 0
+-11.9298 0.00461923 0
+-11.9384 0.0155527 0
+-11.9438 0.0205897 0
+-11.9467 0.0217572 0
+-11.9484 0.0213402 0
+-11.9496 0.0205661 0
+-11.9507 0.0197474 0
+-11.9517 0.0189692 0
+-11.9527 0.0182208 0
+-11.9535 0.0173583 0
+-11.954 0.0163722 0
+-11.9541 0.0153738 0
+-11.9536 0.0143151 0
+-11.9527 0.0130939 0
+-11.9513 0.0116887 0
+-11.9499 0.00989116 0
+-11.949 0.007214 0
+-11.9497 0.00304542 0
+-11.9534 -0.0035732 0
+-11.9616 -0.0142095 0
+-11.9752 -0.0307644 0
+-11.9933 -0.0550887 0
+-12.0098 -0.0884615 0
+-12.0096 -0.129702 0
+-11.9632 -0.17113 0
+-11.8253 -0.193032 0
+-11.5443 -0.160974 0
+-11.0934 -0.0399811 0
+-10.5217 0.150719 0
+-9.99868 0.231125 0
+-9.79861 -0.249706 0
+-10.1754 -1.98749 0
+-11.1571 -5.59696 0
+-12.3946 -11.0074 0
+-13.2294 -16.9677 0
+-13.0138 -21.2618 0
+-11.4942 -21.8684 0
+-8.97152 -18.4236 0
+-6.114 -12.7577 0
+-3.58986 -7.77751 0
+-1.81844 -5.34405 0
+-0.44986 -4.67288 0
+0.0308908 -3.01641 0
+0.0308908 -0.460992 0
+-1.95358 -0.787217 0
+-4.36917 -1.37701 0
+-9.38838 -2.02543 0
+-10.4648 -2.26766 0
+-11.7898 -0.7561 0
+-12.8139 3.00824 0
+-12.9112 7.43368 0
+-11.7789 10.101 0
+-9.67628 9.67053 0
+-7.31159 6.73881 0
+-5.44293 3.10213 0
+-4.48712 0.360115 0
+-4.39594 -0.916177 0
+-4.81857 -1.06283 0
+-5.36833 -0.717193 0
+-5.80125 -0.343274 0
+-6.04394 -0.116075 0
+-6.12924 -0.0271378 0
+-6.12237 -0.0130062 0
+-6.07794 -0.0231416 0
+-6.02793 -0.0336818 0
+-5.98614 -0.0376705 0
+-5.9561 -0.0352669 0
+-5.93651 -0.0293712 0
+-5.92452 -0.0224342 0
+-5.91764 -0.0151301 0
+-5.91401 -0.00806082 0
+-5.91207 -0.00216031 0
+-5.91093 0.00271061 0
+-5.9103 0.00703585 0
+-5.90989 0.0104509 0
+-5.90949 0.0129188 0
+-5.90924 0.0151113 0
+-5.90921 0.0170102 0
+-5.90927 0.0182965 0
+-5.90949 0.0194668 0
+-5.91004 0.0208237 0
+-5.9109 0.021935 0
+-5.91207 0.0228571 0
+-5.91366 0.0239339 0
+-5.91527 0.0248561 0
+-5.91578 0.0258979 0
+-5.91374 0.0290477 0
+-5.9081 0.0368073 0
+-5.89981 0.0505252 0
+-5.89396 0.0677402 0
+-5.89932 0.0776672 0
+-5.92308 0.0611171 0
+-5.96209 0.000786093 0
+-5.99545 -0.103433 0
+-5.98527 -0.227342 0
+-5.89053 -0.335126 0
+-5.68939 -0.409596 0
+-5.39727 -0.472623 0
+-5.0703 -0.562131 0
+-4.79213 -0.674127 0
+-4.6487 -0.732589 0
+-4.69764 -0.64282 0
+-4.93857 -0.401538 0
+-5.29079 -0.151432 0
+-5.6071 -0.0632486 0
+-5.81198 -0.0572493 0
+-5.88495 -0.0306454 0
+-5.81682 0.0183328 0
+-5.60657 0.0571862 0
+-5.26901 0.0921755 0
+-4.88527 0.233432 0
+-4.61612 0.551792 0
+-4.5539 0.850087 0
+-4.70373 0.965048 0
+-5.00554 0.899411 0
+-5.36599 0.762438 0
+-5.69236 0.645516 0
+-5.9212 0.559478 0
+-6.03366 0.465295 0
+-6.05228 0.338082 0
+-6.0215 0.194895 0
+-5.98319 0.0741358 0
+-5.96095 0.0021351 0
+-5.95866 -0.0211884 0
+-5.96869 -0.0144372 0
+-5.98145 0.00149564 0
+-5.99111 0.0142827 0
+-5.99638 0.0208303 0
+-5.99842 0.0226317 0
+-5.99884 0.0221768 0
+-5.99884 0.0213422 0
+-5.99895 0.0206792 0
+-5.99918 0.0199771 0
+-5.99943 0.0192246 0
+-5.99965 0.0184469 0
+-5.9997 0.0174103 0
+-5.99943 0.0161014 0
+-5.99877 0.0147191 0
+-5.99761 0.013156 0
+-5.99577 0.0112549 0
+-5.99322 0.00913087 0
+-5.99002 0.00670007 0
+-5.98639 0.00358369 0
+-5.98289 -0.000458304 0
+-5.98062 -0.00584057 0
+-5.98118 -0.0136456 0
+-5.98665 -0.0252955 0
+-5.99924 -0.0424981 0
+-6.01976 -0.067949 0
+-6.04408 -0.105374 0
+-6.05695 -0.15826 0
+-6.02321 -0.226773 0
+-5.88222 -0.301966 0
+-5.5585 -0.363701 0
+-5.00338 -0.404402 0
+-4.26529 -0.506968 0
+-3.5469 -0.968096 0
+-3.17455 -2.35984 0
+-3.43562 -5.33589 0
+-4.35053 -10.0925 0
+-5.55406 -15.7642 0
+-6.43252 -20.3834 0
+-6.46957 -21.8313 0
+-5.55695 -19.3362 0
+-4.03722 -14.2774 0
+-2.47352 -9.34122 0
+-1.35808 -6.4595 0
+-0.326397 -5.06711 0
+-0.00286038 -3.03695 0
+-0.00286038 -0.36189 0
+-1.62353 -0.63843 0
+-3.59444 -1.09105 0
+-7.62429 -1.53849 0
+-8.34415 -1.54782 0
+-9.05501 -0.045271 0
+-9.23579 3.18898 0
+-8.45161 6.64946 0
+-6.70647 8.35578 0
+-4.51271 7.47674 0
+-2.60253 4.82862 0
+-1.50163 2.00121 0
+-1.28609 0.144564 0
+-1.65754 -0.544752 0
+-2.20816 -0.51222 0
+-2.65097 -0.274403 0
+-2.89001 -0.104259 0
+-2.96033 -0.0457756 0
+-2.93748 -0.0500115 0
+-2.88263 -0.067872 0
+-2.82874 -0.0770534 0
+-2.78711 -0.0753366 0
+-2.75839 -0.0664078 0
+-2.74004 -0.0536398 0
+-2.72883 -0.0405999 0
+-2.7219 -0.0293872 0
+-2.71757 -0.0194752 0
+-2.71488 -0.0107681 0
+-2.71288 -0.00417713 0
+-2.71114 0.000947856 0
+-2.70975 0.00563089 0
+-2.70857 0.00926254 0
+-2.7074 0.0117346 0
+-2.70645 0.0141474 0
+-2.70583 0.0163704 0
+-2.70528 0.0177379 0
+-2.70486 0.0190295 0
+-2.70476 0.020711 0
+-2.70484 0.0220119 0
+-2.70511 0.0231085 0
+-2.7059 0.0247167 0
+-2.70722 0.0261647 0
+-2.70839 0.0270642 0
+-2.70826 0.0289078 0
+-2.70497 0.033503 0
+-2.69686 0.0424149 0
+-2.68528 0.0561515 0
+-2.67622 0.0685996 0
+-2.67804 0.0629282 0
+-2.69452 0.0172671 0
+-2.7153 -0.0826591 0
+-2.7106 -0.232048 0
+-2.63991 -0.405821 0
+-2.47522 -0.574301 0
+-2.22586 -0.721981 0
+-1.94781 -0.84019 0
+-1.72727 -0.894676 0
+-1.64363 -0.816241 0
+-1.73115 -0.555302 0
+-1.96098 -0.17172 0
+-2.242 0.129584 0
+-2.41659 0.111333 0
+-2.50779 0.0339553 0
+-2.54097 0.00253184 0
+-2.51435 -0.00829734 0
+-2.42061 -0.0365479 0
+-2.22551 -0.102929 0
+-1.90738 -0.0847056 0
+-1.63907 0.283486 0
+-1.52699 0.738001 0
+-1.6084 1.04646 0
+-1.84789 1.13891 0
+-2.1574 1.07195 0
+-2.43944 0.927553 0
+-2.62951 0.749546 0
+-2.71518 0.55097 0
+-2.72622 0.349121 0
+-2.70715 0.175833 0
+-2.69154 0.0585215 0
+-2.69165 0.00225236 0
+-2.70372 -0.00912024 0
+-2.71865 0.000495252 0
+-2.72982 0.0126735 0
+-2.7355 0.0199667 0
+-2.73724 0.0225708 0
+-2.73716 0.022553 0
+-2.73663 0.0216454 0
+-2.73629 0.0210079 0
+-2.73624 0.0206348 0
+-2.73625 0.0199831 0
+-2.73617 0.0191528 0
+-2.73603 0.0183113 0
+-2.73572 0.0170986 0
+-2.73511 0.0154895 0
+-2.7342 0.0138098 0
+-2.73289 0.0118486 0
+-2.73096 0.00932907 0
+-2.72832 0.00649582 0
+-2.72493 0.00330818 0
+-2.72066 -0.00069062 0
+-2.71559 -0.00552957 0
+-2.71019 -0.0112322 0
+-2.70528 -0.0185572 0
+-2.70224 -0.0283399 0
+-2.7034 -0.0413383 0
+-2.7118 -0.0595425 0
+-2.73003 -0.0871432 0
+-2.75676 -0.131532 0
+-2.77853 -0.205009 0
+-2.75695 -0.323545 0
+-2.61961 -0.501038 0
+-2.27323 -0.750784 0
+-1.65833 -1.12187 0
+-0.836216 -1.79021 0
+-0.0456597 -3.15039 0
+0.357679 -5.73922 0
+0.0997339 -9.83454 0
+-0.789872 -14.8746 0
+-1.92287 -19.2504 0
+-2.75658 -20.9976 0
+-2.92947 -19.1633 0
+-2.47254 -14.7343 0
+-1.74767 -10.0661 0
+-1.19659 -7.01057 0
+-0.360606 -5.16108 0
+-0.0915964 -2.94841 0
+-0.0915964 -0.252828 0
+-1.34708 -0.523333 0
+-2.94881 -0.878022 0
+-6.17616 -1.19899 0
+-6.61543 -1.10857 0
+-6.89481 0.234082 0
+-6.5892 2.88335 0
+-5.46256 5.52279 0
+-3.72154 6.61474 0
+-1.94001 5.6952 0
+-0.700164 3.58876 0
+-0.247899 1.54893 0
+-0.424133 0.320782 0
+-0.864923 -0.10398 0
+-1.2585 -0.118658 0
+-1.47283 -0.0600941 0
+-1.52674 -0.0503757 0
+-1.49509 -0.0774453 0
+-1.43959 -0.105536 0
+-1.39056 -0.116927 0
+-1.35599 -0.11164 0
+-1.33371 -0.0976417 0
+-1.31952 -0.0806153 0
+-1.31056 -0.0626196 0
+-1.30478 -0.046403 0
+-1.30056 -0.0336192 0
+-1.29735 -0.0227088 0
+-1.29495 -0.0131867 0
+-1.29282 -0.00632755 0
+-1.29077 -0.00111846 0
+-1.28911 0.00395818 0
+-1.28773 0.00786442 0
+-1.28635 0.010342 0
+-1.28523 0.0130152 0
+-1.28448 0.0156058 0
+-1.28377 0.0170098 0
+-1.28312 0.0183706 0
+-1.28277 0.0203509 0
+-1.28249 0.0217141 0
+-1.28214 0.0227534 0
+-1.28214 0.0246983 0
+-1.28262 0.0266359 0
+-1.28334 0.0277794 0
+-1.2839 0.0294558 0
+-1.28289 0.0324859 0
+-1.27781 0.0373217 0
+-1.26718 0.0455236 0
+-1.25295 0.0543566 0
+-1.24053 0.0504984 0
+-1.23544 0.0121722 0
+-1.23528 -0.0828255 0
+-1.22162 -0.245717 0
+-1.16277 -0.464672 0
+-1.03269 -0.704387 0
+-0.836314 -0.918366 0
+-0.622361 -1.05415 0
+-0.46791 -1.04914 0
+-0.43601 -0.84815 0
+-0.531616 -0.459705 0
+-0.692956 -0.0103857 0
+-0.831824 0.268448 0
+-0.792866 0.0723734 0
+-0.769312 0.0104001 0
+-0.767818 0.00103634 0
+-0.774851 -0.00126577 0
+-0.80049 -0.0109091 0
+-0.829727 -0.0736939 0
+-0.658724 -0.25571 0
+-0.457518 0.0822794 0
+-0.331641 0.612122 0
+-0.35438 1.06919 0
+-0.521488 1.30602 0
+-0.761478 1.31194 0
+-0.985708 1.15178 0
+-1.13707 0.900908 0
+-1.20816 0.622065 0
+-1.2271 0.368061 0
+-1.2292 0.177938 0
+-1.23582 0.0651422 0
+-1.25047 0.0169031 0
+-1.26727 0.00768469 0
+-1.28022 0.0134444 0
+-1.28716 0.0196171 0
+-1.28943 0.022239 0
+-1.28956 0.0227049 0
+-1.28925 0.0222405 0
+-1.28904 0.0214435 0
+-1.28907 0.0210382 0
+-1.28923 0.0207969 0
+-1.28926 0.0200128 0
+-1.28909 0.0189936 0
+-1.28885 0.0180682 0
+-1.28844 0.0166885 0
+-1.28775 0.0148055 0
+-1.28685 0.0129128 0
+-1.28568 0.0106751 0
+-1.28401 0.00766378 0
+-1.28179 0.00427463 0
+-1.27896 0.000479131 0
+-1.27528 -0.00437467 0
+-1.27058 -0.0102232 0
+-1.26495 -0.016865 0
+-1.25848 -0.0250233 0
+-1.25156 -0.0352603 0
+-1.24531 -0.0475896 0
+-1.24177 -0.063086 0
+-1.24414 -0.0847708 0
+-1.25655 -0.119123 0
+-1.28041 -0.181146 0
+-1.3044 -0.299556 0
+-1.28859 -0.51685 0
+-1.15386 -0.88551 0
+-0.80162 -1.47411 0
+-0.183305 -2.40852 0
+0.605932 -3.93963 0
+1.29308 -6.42638 0
+1.53315 -10.0746 0
+1.13012 -14.4715 0
+0.21329 -18.3336 0
+-0.804009 -19.9803 0
+-1.48703 -18.4803 0
+-1.66183 -14.5595 0
+-1.49215 -10.2358 0
+-1.31218 -7.19054 0
+-0.509571 -5.10188 0
+-0.208289 -2.83073 0
+-0.208289 -0.162144 0
+-1.11848 -0.434192 0
+-2.42598 -0.719767 0
+-5.03228 -0.964139 0
+-5.28999 -0.850878 0
+-5.33479 0.27886 0
+-4.85359 2.40212 0
+-3.75695 4.42613 0
+-2.32874 5.18651 0
+-1.06905 4.43549 0
+-0.358534 2.87822 0
+-0.238776 1.42916 0
+-0.469605 0.551594 0
+-0.755799 0.182195 0
+-0.927062 0.0525842 0
+-0.965748 -0.0214287 0
+-0.931389 -0.0847571 0
+-0.88179 -0.127066 0
+-0.843297 -0.144052 0
+-0.819484 -0.140761 0
+-0.806146 -0.125 0
+-0.798398 -0.105412 0
+-0.793129 -0.0859055 0
+-0.789286 -0.0664839 0
+-0.786309 -0.0494002 0
+-0.783578 -0.0363706 0
+-0.78113 -0.025176 0
+-0.779152 -0.0151838 0
+-0.777292 -0.008205 0
+-0.775466 -0.00296226 0
+-0.774028 0.00250376 0
+-0.772858 0.00667805 0
+-0.771666 0.00913435 0
+-0.770704 0.0120377 0
+-0.770072 0.0149599 0
+-0.769423 0.0163474 0
+-0.768791 0.0177256 0
+-0.768413 0.0199599 0
+-0.768019 0.0213088 0
+-0.767418 0.0221405 0
+-0.766905 0.0241744 0
+-0.766563 0.0262832 0
+-0.766273 0.0274804 0
+-0.766151 0.0293243 0
+-0.76563 0.0319556 0
+-0.762715 0.034399 0
+-0.755142 0.0379426 0
+-0.742066 0.0412728 0
+-0.725163 0.0335886 0
+-0.70823 -0.00476754 0
+-0.692519 -0.0985425 0
+-0.669152 -0.269091 0
+-0.617714 -0.516117 0
+-0.518236 -0.803873 0
+-0.371708 -1.0649 0
+-0.213493 -1.21237 0
+-0.102574 -1.16006 0
+-0.0830658 -0.867667 0
+-0.138867 -0.403911 0
+-0.177166 0.0279072 0
+-0.083294 0.174574 0
+-0.023403 0.0124822 0
+-0.0142836 0.00128065 0
+-0.0133693 0.000122059 0
+-0.0144952 -0.0001399 0
+-0.0240242 -0.00138008 0
+-0.0844642 -0.0132541 0
+-0.161867 -0.178308 0
+-0.0919663 0.0123779 0
+-0.0076325 0.527787 0
+-0.0149055 1.07647 0
+-0.132311 1.42342 0
+-0.309053 1.48868 0
+-0.476318 1.31905 0
+-0.591754 1.01635 0
+-0.652529 0.682841 0
+-0.680321 0.395854 0
+-0.698179 0.195798 0
+-0.71689 0.0838556 0
+-0.735763 0.0357788 0
+-0.750644 0.0225681 0
+-0.759574 0.0223769 0
+-0.76347 0.0235159 0
+-0.764614 0.0233855 0
+-0.765014 0.0231078 0
+-0.765467 0.022696 0
+-0.765936 0.0219151 0
+-0.766365 0.0214699 0
+-0.766709 0.021144 0
+-0.766809 0.020115 0
+-0.766686 0.0188725 0
+-0.766487 0.0178711 0
+-0.766144 0.0163474 0
+-0.765564 0.0142273 0
+-0.764835 0.0121852 0
+-0.763923 0.00976441 0
+-0.762643 0.00638523 0
+-0.76097 0.00260253 0
+-0.758888 -0.00160301 0
+-0.756156 -0.00710595 0
+-0.752575 -0.0138037 0
+-0.748073 -0.0213666 0
+-0.742456 -0.0306405 0
+-0.73556 -0.0421557 0
+-0.727592 -0.0555578 0
+-0.719154 -0.071524 0
+-0.711657 -0.0922676 0
+-0.70831 -0.12247 0
+-0.714116 -0.17534 0
+-0.732142 -0.281531 0
+-0.752447 -0.496546 0
+-0.734554 -0.903403 0
+-0.600087 -1.60858 0
+-0.26502 -2.74359 0
+0.27976 -4.48441 0
+0.889585 -7.0362 0
+1.28157 -10.4666 0
+1.18948 -14.3795 0
+0.568373 -17.7124 0
+-0.332746 -19.0792 0
+-1.12675 -17.6863 0
+-1.55836 -14.1279 0
+-1.65687 -10.1373 0
+-1.65148 -7.19593 0
+-0.739667 -5.01007 0
+-0.341695 -2.7385 0
+-0.341695 -0.105045 0
+-0.93097 -0.364094 0
+-2.00774 -0.599913 0
+-4.14073 -0.796716 0
+-4.29782 -0.693804 0
+-4.25172 0.232745 0
+-3.78496 1.93534 0
+-2.88745 3.5286 0
+-1.82717 4.1262 0
+-0.976587 3.58489 0
+-0.552476 2.45409 0
+-0.505399 1.38206 0
+-0.626661 0.672838 0
+-0.731693 0.287207 0
+-0.754569 0.0754398 0
+-0.721437 -0.0545824 0
+-0.679027 -0.127188 0
+-0.651421 -0.154695 0
+-0.639131 -0.156363 0
+-0.635138 -0.144777 0
+-0.634358 -0.125802 0
+-0.634202 -0.10559 0
+-0.633649 -0.0864807 0
+-0.632808 -0.0673456 0
+-0.631813 -0.0504162 0
+-0.630518 -0.0376854 0
+-0.629151 -0.0265633 0
+-0.627979 -0.0163739 0
+-0.626815 -0.00938771 0
+-0.62563 -0.00416533 0
+-0.62471 0.00156648 0
+-0.623965 0.00591693 0
+-0.623173 0.0083271 0
+-0.622527 0.0113759 0
+-0.622101 0.01452 0
+-0.621628 0.0158604 0
+-0.621133 0.0172168 0
+-0.620797 0.0196118 0
+-0.620408 0.0209072 0
+-0.619782 0.0215029 0
+-0.619072 0.0234537 0
+-0.618238 0.0254382 0
+-0.617125 0.0263574 0
+-0.615929 0.0281197 0
+-0.61458 0.0305969 0
+-0.611987 0.0317976 0
+-0.606411 0.032359 0
+-0.596207 0.0310612 0
+-0.580811 0.0181849 0
+-0.561784 -0.0238008 0
+-0.541152 -0.119182 0
+-0.516175 -0.294075 0
+-0.476092 -0.556207 0
+-0.407252 -0.872721 0
+-0.306121 -1.16604 0
+-0.190817 -1.32769 0
+-0.0973864 -1.2535 0
+-0.0550801 -0.909983 0
+-0.0558245 -0.403174 0
+-0.0509596 0.0230375 0
+-0.00894221 0.132555 0
+-0.00140813 0.00494811 0
+-0.000347481 0.000220015 0
+-0.00024045 1.49672e-05 0
+-0.000362457 -1.7965e-05 0
+-0.00149569 -0.000246882 0
+-0.00925347 -0.00549633 0
+-0.0444788 -0.143083 0
+-0.0310933 -0.00100871 0
+-0.0111477 0.507841 0
+-0.0436151 1.10893 0
+-0.139466 1.51927 0
+-0.265499 1.61472 0
+-0.379216 1.43277 0
+-0.45791 1.09504 0
+-0.503945 0.728877 0
+-0.532008 0.423919 0
+-0.554359 0.218152 0
+-0.57476 0.104259 0
+-0.591449 0.0524696 0
+-0.602653 0.0337748 0
+-0.608872 0.0285984 0
+-0.611914 0.0265606 0
+-0.613555 0.0250294 0
+-0.614867 0.0244231 0
+-0.616062 0.0238929 0
+-0.616974 0.0228298 0
+-0.617612 0.0221113 0
+-0.618047 0.0215815 0
+-0.618234 0.0203043 0
+-0.61823 0.0188699 0
+-0.61816 0.0178035 0
+-0.617979 0.0161684 0
+-0.617623 0.0138724 0
+-0.617167 0.0117308 0
+-0.616597 0.00919547 0
+-0.615782 0.00557175 0
+-0.614716 0.00153674 0
+-0.613396 -0.0029218 0
+-0.611649 -0.00885308 0
+-0.609308 -0.0161442 0
+-0.606269 -0.0244054 0
+-0.602283 -0.0346262 0
+-0.597056 -0.0473826 0
+-0.590446 -0.0621685 0
+-0.58237 -0.0795997 0
+-0.572955 -0.101683 0
+-0.56325 -0.132175 0
+-0.556173 -0.182417 0
+-0.55686 -0.280844 0
+-0.569163 -0.484243 0
+-0.583716 -0.88885 0
+-0.562409 -1.62989 0
+-0.441781 -2.86422 0
+-0.178963 -4.74723 0
+0.174316 -7.38948 0
+0.439629 -10.7319 0
+0.392704 -14.3325 0
+-0.0682515 -17.2515 0
+-0.808943 -18.3385 0
+-1.53009 -16.9652 0
+-1.98366 -13.6743 0
+-2.1408 -9.98012 0
+-2.16077 -7.17596 0
+-1.02899 -4.96722 0
+-0.488496 -2.70419 0
+-0.488496 -0.0888693 0
+-0.777702 -0.307942 0
+-1.67299 -0.506704 0
+-3.44187 -0.671569 0
+-3.5488 -0.586889 0
+-3.48968 0.173614 0
+-3.11576 1.56139 0
+-2.44434 2.85716 0
+-1.68293 3.36477 0
+-1.08204 2.98398 0
+-0.761213 2.13325 0
+-0.665735 1.28657 0
+-0.66248 0.669565 0
+-0.655655 0.280362 0
+-0.624607 0.0443718 0
+-0.589952 -0.0892581 0
+-0.57009 -0.147072 0
+-0.566269 -0.158538 0
+-0.570674 -0.151981 0
+-0.576813 -0.13866 0
+-0.582174 -0.120463 0
+-0.586213 -0.101574 0
+-0.588939 -0.083776 0
+-0.590661 -0.0656443 0
+-0.591653 -0.0494454 0
+-0.592045 -0.0373129 0
+-0.592074 -0.0265545 0
+-0.59196 -0.0165062 0
+-0.591721 -0.00964491 0
+-0.591396 -0.00450789 0
+-0.591119 0.00127235 0
+-0.590872 0.00565354 0
+-0.590581 0.0080199 0
+-0.590321 0.0111007 0
+-0.590121 0.0143057 0
+-0.589877 0.0156019 0
+-0.589589 0.0169163 0
+-0.589319 0.0193282 0
+-0.588965 0.0205418 0
+-0.588424 0.02095 0
+-0.58769 0.0227081 0
+-0.586659 0.0243965 0
+-0.58518 0.0248693 0
+-0.583276 0.0262059 0
+-0.580926 0.0282374 0
+-0.577699 0.0285621 0
+-0.572681 0.027333 0
+-0.564615 0.0229881 0
+-0.552565 0.00612731 0
+-0.537108 -0.0392642 0
+-0.520339 -0.135959 0
+-0.503168 -0.311253 0
+-0.481733 -0.577649 0
+-0.447054 -0.907408 0
+-0.390409 -1.22269 0
+-0.311634 -1.40647 0
+-0.222609 -1.34254 0
+-0.140458 -0.992143 0
+-0.0756658 -0.467974 0
+-0.0285384 -0.0240945 0
+-0.00126992 0.105284 0
+-0.000119368 0.00379751 0
+-1.24554e-05 0.000113156 0
+-2.94857e-06 5.47134e-06 0
+-1.41563e-05 -6.75674e-06 0
+-0.000131491 -0.000129582 0
+-0.00131376 -0.00431411 0
+-0.0266992 -0.117699 0
+-0.0680107 0.0403018 0
+-0.126175 0.566004 0
+-0.204643 1.1874 0
+-0.294192 1.60882 0
+-0.376438 1.69696 0
+-0.43728 1.49361 0
+-0.475287 1.13305 0
+-0.498777 0.752369 0
+-0.517067 0.442211 0
+-0.534493 0.23558 0
+-0.550459 0.120227 0
+-0.56295 0.0649637 0
+-0.571327 0.042154 0
+-0.576526 0.0338007 0
+-0.579882 0.0299185 0
+-0.582321 0.0274712 0
+-0.584261 0.0263659 0
+-0.585767 0.025402 0
+-0.586828 0.0238932 0
+-0.587538 0.0228237 0
+-0.588012 0.0220574 0
+-0.588296 0.0205908 0
+-0.58845 0.0190259 0
+-0.58854 0.0178957 0
+-0.58856 0.0161902 0
+-0.588494 0.0138079 0
+-0.588375 0.0116136 0
+-0.5882 0.00902112 0
+-0.587917 0.00528946 0
+-0.587515 0.00113613 0
+-0.586982 -0.00345471 0
+-0.586228 -0.00960695 0
+-0.585144 -0.0172271 0
+-0.583609 -0.0259403 0
+-0.581412 -0.0368239 0
+-0.578295 -0.0504996 0
+-0.574023 -0.0664402 0
+-0.568347 -0.0852761 0
+-0.561038 -0.108993 0
+-0.552075 -0.141139 0
+-0.542143 -0.192349 0
+-0.53393 -0.289057 0
+-0.533076 -0.485097 0
+-0.544495 -0.877432 0
+-0.561981 -1.6124 0
+-0.561065 -2.86513 0
+-0.515343 -4.79295 0
+-0.441198 -7.46363 0
+-0.433251 -10.7398 0
+-0.630282 -14.1355 0
+-1.10406 -16.7777 0
+-1.76176 -17.6808 0
+-2.37684 -16.3501 0
+-2.7488 -13.3024 0
+-2.84803 -9.88089 0
+-2.80385 -7.22015 0
+-1.36829 -5.01971 0
+-0.650477 -2.74511 0
+-0.650477 -0.117164 0
+-0.652297 -0.26225 0
+-1.40286 -0.432663 0
+-2.88509 -0.574481 0
+-2.96608 -0.50591 0
+-2.92158 0.1291 0
+-2.64842 1.28821 0
+-2.16455 2.37327 0
+-1.61089 2.81109 0
+-1.1459 2.51898 0
+-0.843892 1.83122 0
+-0.68237 1.12503 0
+-0.599825 0.587002 0
+-0.551478 0.231995 0
+-0.522221 0.0150947 0
+-0.510319 -0.10118 0
+-0.512496 -0.144916 0
+-0.522287 -0.148768 0
+-0.534129 -0.140161 0
+-0.545085 -0.127725 0
+-0.554159 -0.111411 0
+-0.561367 -0.0943874 0
+-0.566968 -0.0781967 0
+-0.571117 -0.0615161 0
+-0.57408 -0.0465023 0
+-0.576226 -0.0351869 0
+-0.577739 -0.0250604 0
+-0.578745 -0.0155182 0
+-0.579487 -0.00892134 0
+-0.580077 -0.00393497 0
+-0.580466 0.00164463 0
+-0.580725 0.00589568 0
+-0.580957 0.00823722 0
+-0.581102 0.0112299 0
+-0.581129 0.0143192 0
+-0.581135 0.0155936 0
+-0.581091 0.0168598 0
+-0.580904 0.0191286 0
+-0.58061 0.0202355 0
+-0.580202 0.0205306 0
+-0.579519 0.022014 0
+-0.578459 0.0233265 0
+-0.576972 0.0233718 0
+-0.574875 0.0240998 0
+-0.572 0.025353 0
+-0.568253 0.0248073 0
+-0.563301 0.0223731 0
+-0.556536 0.0162159 0
+-0.5477 -0.00271628 0
+-0.537738 -0.0492335 0
+-0.529361 -0.144343 0
+-0.526156 -0.314465 0
+-0.529152 -0.574661 0
+-0.532537 -0.90403 0
+-0.522625 -1.23262 0
+-0.482314 -1.44679 0
+-0.399709 -1.42515 0
+-0.277992 -1.11387 0
+-0.14283 -0.603143 0
+-0.0389347 -0.127995 0
+-0.000184633 0.0665326 0
+8.40413e-05 0.00352878 0
+2.18738e-05 0.000175329 0
+1.05424e-05 1.68094e-05 0
+2.35763e-05 -1.97948e-05 0
+9.60989e-05 -0.000202192 0
+-0.000141102 -0.00407695 0
+-0.0407804 -0.0770601 0
+-0.150503 0.150023 0
+-0.292306 0.707805 0
+-0.417717 1.31281 0
+-0.499805 1.69091 0
+-0.536649 1.73381 0
+-0.542365 1.49933 0
+-0.535649 1.12633 0
+-0.530594 0.747316 0
+-0.532677 0.444296 0
+-0.540397 0.243302 0
+-0.54985 0.129682 0
+-0.558245 0.0733614 0
+-0.564699 0.0486106 0
+-0.56947 0.0385744 0
+-0.57309 0.0335407 0
+-0.575879 0.0302626 0
+-0.577942 0.0284317 0
+-0.579404 0.0268666 0
+-0.580438 0.024929 0
+-0.581149 0.0235378 0
+-0.581629 0.0225398 0
+-0.581998 0.0209613 0
+-0.582307 0.0193375 0
+-0.582554 0.0181441 0
+-0.58278 0.0164179 0
+-0.583026 0.0140551 0
+-0.583269 0.0118577 0
+-0.583512 0.00926514 0
+-0.583793 0.00557157 0
+-0.584092 0.00143567 0
+-0.584369 -0.0031769 0
+-0.584629 -0.00934651 0
+-0.584826 -0.0170304 0
+-0.584822 -0.0259441 0
+-0.584478 -0.0371677 0
+-0.583629 -0.0513484 0
+-0.582009 -0.0680603 0
+-0.579329 -0.0879566 0
+-0.575353 -0.112969 0
+-0.56983 -0.146662 0
+-0.562606 -0.199574 0
+-0.554552 -0.297111 0
+-0.54959 -0.490059 0
+-0.556341 -0.870681 0
+-0.586194 -1.58255 0
+-0.648226 -2.8031 0
+-0.749954 -4.69122 0
+-0.911806 -7.30178 0
+-1.18187 -10.4698 0
+-1.61748 -13.6999 0
+-2.22259 -16.1726 0
+-2.89155 -17.0118 0
+-3.43736 -15.8043 0
+-3.71156 -13.0282 0
+-3.71247 -9.87999 0
+-3.5673 -7.36531 0
+-1.75984 -5.18789 0
+-0.833579 -2.86992 0
+-0.833579 -0.192704 0
+-0.549188 -0.224554 0
+-1.18247 -0.373088 0
+-2.43359 -0.49828 0
+-2.49646 -0.443043 0
+-2.4657 0.0983237 0
+-2.269 1.0915 0
+-1.9192 2.02345 0
+-1.50555 2.39742 0
+-1.12449 2.1379 0
+-0.828788 1.53551 0
+-0.627515 0.923737 0
+-0.50856 0.46803 0
+-0.453208 0.176625 0
+-0.440437 0.0023048 0
+-0.449842 -0.0917942 0
+-0.466265 -0.128514 0
+-0.482672 -0.132381 0
+-0.497841 -0.125013 0
+-0.511647 -0.113941 0
+-0.523481 -0.0995978 0
+-0.533256 -0.0846329 0
+-0.541254 -0.070219 0
+-0.54748 -0.0553102 0
+-0.552187 -0.0418152 0
+-0.555919 -0.0314741 0
+-0.558799 -0.0221986 0
+-0.560858 -0.0134771 0
+-0.562518 -0.00727925 0
+-0.563955 -0.0025145 0
+-0.564971 0.00264497 0
+-0.565712 0.00662022 0
+-0.566431 0.00894121 0
+-0.566953 0.011738 0
+-0.567208 0.0145596 0
+-0.567455 0.0158273 0
+-0.567647 0.0170397 0
+-0.567566 0.0190352 0
+-0.567359 0.0200172 0
+-0.567106 0.0202657 0
+-0.566524 0.0214211 0
+-0.565539 0.0223318 0
+-0.564229 0.0220518 0
+-0.562296 0.0221579 0
+-0.559448 0.0224967 0
+-0.555767 0.0211182 0
+-0.551215 0.017813 0
+-0.545646 0.0106393 0
+-0.539644 -0.00872501 0
+-0.535152 -0.053732 0
+-0.536157 -0.143344 0
+-0.548814 -0.301815 0
+-0.578131 -0.545352 0
+-0.621105 -0.861064 0
+-0.66093 -1.1928 0
+-0.667334 -1.4404 0
+-0.606624 -1.48587 0
+-0.462514 -1.25799 0
+-0.260906 -0.804759 0
+-0.078475 -0.310431 0
+0.000233484 -0.0121777 0
+0.00053693 0.00322528 0
+0.000187811 0.000524381 0
+0.000123827 8.08326e-05 0
+0.000202788 -9.87326e-05 0
+0.000624361 -0.00062391 0
+0.000544234 -0.00399686 0
+-0.0849626 0.00844597 0
+-0.285654 0.350714 0
+-0.506473 0.928624 0
+-0.660431 1.46677 0
+-0.718728 1.74921 0
+-0.7016 1.71668 0
+-0.649191 1.44692 0
+-0.596361 1.07351 0
+-0.561089 0.712046 0
+-0.545343 0.428551 0
+-0.542618 0.240578 0
+-0.545735 0.132801 0
+-0.550445 0.0780739 0
+-0.555015 0.0531829 0
+-0.558925 0.042487 0
+-0.562159 0.0367763 0
+-0.564717 0.032823 0
+-0.566534 0.0302518 0
+-0.567766 0.0281009 0
+-0.568676 0.0258416 0
+-0.569333 0.0241969 0
+-0.569782 0.0229909 0
+-0.570196 0.0213773 0
+-0.570623 0.0197664 0
+-0.571002 0.0185243 0
+-0.571416 0.0168332 0
+-0.571951 0.0145916 0
+-0.572539 0.0124468 0
+-0.57319 0.00991736 0
+-0.574018 0.0064004 0
+-0.574998 0.0024157 0
+-0.576074 -0.00210002 0
+-0.577335 -0.00808566 0
+-0.578794 -0.0155713 0
+-0.580322 -0.0244155 0
+-0.581868 -0.0356222 0
+-0.583374 -0.0498425 0
+-0.584582 -0.0668526 0
+-0.585187 -0.0873514 0
+-0.584952 -0.113205 0
+-0.583573 -0.148041 0
+-0.580843 -0.202305 0
+-0.577387 -0.300568 0
+-0.576578 -0.490867 0
+-0.588461 -0.858799 0
+-0.633837 -1.53718 0
+-0.744311 -2.69263 0
+-0.957391 -4.47814 0
+-1.30998 -6.94919 0
+-1.82938 -9.95038 0
+-2.51324 -13.016 0
+-3.29781 -15.388 0
+-4.04263 -16.267 0
+-4.57361 -15.2733 0
+-4.78164 -12.8201 0
+-4.69728 -9.96434 0
+-4.45578 -7.60682 0
+-2.2131 -5.47277 0
+-1.04609 -3.08224 0
+-1.04609 -0.319012 0
+-0.463728 -0.192916 0
+-1.00071 -0.3246 0
+-2.06246 -0.438984 0
+-2.10784 -0.397672 0
+-2.0787 0.0691744 0
+-1.92541 0.938184 0
+-1.66143 1.75946 0
+-1.34669 2.08266 0
+-1.03862 1.82981 0
+-0.771294 1.26817 0
+-0.565513 0.717941 0
+-0.434585 0.337086 0
+-0.376622 0.118645 0
+-0.371617 -0.00271844 0
+-0.391941 -0.0714889 0
+-0.41661 -0.103864 0
+-0.437589 -0.111421 0
+-0.455356 -0.107266 0
+-0.471222 -0.0980942 0
+-0.484973 -0.0858663 0
+-0.496567 -0.0730586 0
+-0.506289 -0.0605165 0
+-0.514056 -0.0475622 0
+-0.520115 -0.0357746 0
+-0.525093 -0.0265145 0
+-0.529068 -0.0182407 0
+-0.532014 -0.010549 0
+-0.534437 -0.0048721 0
+-0.536555 -0.000412928 0
+-0.538103 0.00417743 0
+-0.539265 0.00776737 0
+-0.540373 0.0100347 0
+-0.541202 0.0125537 0
+-0.541666 0.0150096 0
+-0.54211 0.0162589 0
+-0.542484 0.0174018 0
+-0.542515 0.0190538 0
+-0.54241 0.0199014 0
+-0.542297 0.0201423 0
+-0.541846 0.0209596 0
+-0.541008 0.0214843 0
+-0.539948 0.0209823 0
+-0.538358 0.0205587 0
+-0.535941 0.0200715 0
+-0.532897 0.0180661 0
+-0.529321 0.0142298 0
+-0.52529 0.00660132 0
+-0.521952 -0.0120694 0
+-0.522213 -0.0534778 0
+-0.531549 -0.134015 0
+-0.558604 -0.274766 0
+-0.611952 -0.492011 0
+-0.691979 -0.781044 0
+-0.782186 -1.1026 0
+-0.845662 -1.37693 0
+-0.832797 -1.49875 0
+-0.704699 -1.38609 0
+-0.466623 -1.04284 0
+-0.191955 -0.585105 0
+-0.0102393 -0.193896 0
+0.00300943 -0.0100235 0
+0.00342031 0.000113439 0
+0.00348855 1.25464e-05 0
+0.00363186 -0.000242089 0
+0.00363021 -0.00062231 0
+-0.00907115 0.00870444 0
+-0.207262 0.206636 0
+-0.513539 0.656988 0
+-0.780152 1.19524 0
+-0.92049 1.60711 0
+-0.926876 1.75559 0
+-0.844878 1.63468 0
+-0.733938 1.33598 0
+-0.637955 0.977523 0
+-0.575268 0.649361 0
+-0.543786 0.397071 0
+-0.5323 0.229094 0
+-0.530261 0.130763 0
+-0.531629 0.0794439 0
+-0.533857 0.0554128 0
+-0.536077 0.0447097 0
+-0.538141 0.0388427 0
+-0.539938 0.0346218 0
+-0.541252 0.0315686 0
+-0.542151 0.0290023 0
+-0.542866 0.026558 0
+-0.543405 0.0247379 0
+-0.543778 0.0233667 0
+-0.544181 0.021782 0
+-0.544658 0.0202449 0
+-0.545121 0.0189886 0
+-0.545675 0.0173886 0
+-0.54643 0.0153482 0
+-0.547301 0.013318 0
+-0.548305 0.0109228 0
+-0.549602 0.00769743 0
+-0.551173 0.00398743 0
+-0.552973 -0.000299933 0
+-0.555147 -0.00591092 0
+-0.557766 -0.0129522 0
+-0.560742 -0.0214393 0
+-0.564112 -0.032253 0
+-0.56792 -0.0460349 0
+-0.571957 -0.0628155 0
+-0.575936 -0.0833724 0
+-0.579595 -0.109546 0
+-0.582582 -0.145056 0
+-0.584876 -0.200011 0
+-0.587878 -0.297567 0
+-0.596548 -0.482198 0
+-0.624186 -0.831161 0
+-0.698902 -1.46246 0
+-0.866131 -2.5254 0
+-1.1815 -4.16278 0
+-1.69328 -6.4374 0
+-2.4183 -9.22536 0
+-3.31722 -12.1171 0
+-4.27885 -14.4264 0
+-5.13149 -15.4144 0
+-5.7009 -14.7039 0
+-5.89995 -12.6211 0
+-5.78064 -10.0836 0
+-5.48119 -7.90627 0
+-2.73823 -5.857 0
+-1.29606 -3.37993 0
+-1.29606 -0.499915 0
+-0.392103 -0.165647 0
+-0.849242 -0.284206 0
+-1.7546 -0.39311 0
+-1.78233 -0.369957 0
+-1.74237 0.0292055 0
+-1.60183 0.797629 0
+-1.38289 1.5405 0
+-1.13807 1.83783 0
+-0.904574 1.5963 0
+-0.694919 1.0585 0
+-0.518655 0.541663 0
+-0.392353 0.21077 0
+-0.32666 0.0529363 0
+-0.313799 -0.0155966 0
+-0.331709 -0.0535959 0
+-0.358544 -0.0770462 0
+-0.383076 -0.0869076 0
+-0.403684 -0.0866768 0
+-0.421384 -0.0804126 0
+-0.436449 -0.0708198 0
+-0.449177 -0.0603485 0
+-0.459926 -0.0497857 0
+-0.468624 -0.0388817 0
+-0.475536 -0.0288801 0
+-0.481287 -0.0207804 0
+-0.485953 -0.0135905 0
+-0.489504 -0.00701483 0
+-0.492434 -0.00195676 0
+-0.49497 0.00210727 0
+-0.496869 0.00606235 0
+-0.498319 0.00920375 0
+-0.499649 0.0113508 0
+-0.500651 0.0135426 0
+-0.501249 0.0155959 0
+-0.50179 0.0167874 0
+-0.502233 0.0178341 0
+-0.502327 0.0191361 0
+-0.502283 0.0198469 0
+-0.502237 0.0200863 0
+-0.501885 0.0205983 0
+-0.501202 0.0207916 0
+-0.500381 0.0201532 0
+-0.499191 0.0193602 0
+-0.49743 0.0183024 0
+-0.495363 0.0159916 0
+-0.493123 0.0119827 0
+-0.490854 0.00432584 0
+-0.489955 -0.0129751 0
+-0.493988 -0.0494505 0
+-0.509676 -0.118333 0
+-0.547623 -0.236825 0
+-0.619316 -0.420324 0
+-0.729118 -0.671249 0
+-0.864666 -0.967059 0
+-0.990646 -1.25096 0
+-1.05242 -1.43698 0
+-0.996062 -1.44246 0
+-0.801653 -1.23726 0
+-0.511135 -0.875628 0
+-0.223365 -0.48167 0
+-0.0419099 -0.191481 0
+0.0340549 -0.075853 0
+0.0568779 -0.0228119 0
+0.0395881 0.0170464 0
+-0.0342958 0.0732603 0
+-0.225476 0.199883 0
+-0.545381 0.526539 0
+-0.875762 0.987368 0
+-1.10044 1.41991 0
+-1.16596 1.67262 0
+-1.09154 1.68117 0
+-0.939529 1.48267 0
+-0.776136 1.17259 0
+-0.645057 0.846445 0
+-0.561115 0.565419 0
+-0.517889 0.353846 0
+-0.500256 0.211462 0
+-0.494691 0.1252 0
+-0.493366 0.0781203 0
+-0.49307 0.0551187 0
+-0.492986 0.0446276 0
+-0.4932 0.0390581 0
+-0.493702 0.0351263 0
+-0.494206 0.0320749 0
+-0.49462 0.029418 0
+-0.49503 0.02697 0
+-0.495365 0.0250752 0
+-0.4956 0.0236031 0
+-0.495908 0.0220914 0
+-0.496329 0.020668 0
+-0.496783 0.0194439 0
+-0.497377 0.017983 0
+-0.498222 0.0161945 0
+-0.499244 0.0143413 0
+-0.500475 0.0121545 0
+-0.502082 0.00930455 0
+-0.504069 0.00597464 0
+-0.50642 0.00205126 0
+-0.509312 -0.00301842 0
+-0.512861 -0.00940356 0
+-0.517046 -0.0172545 0
+-0.521979 -0.0273201 0
+-0.527782 -0.0402322 0
+-0.534319 -0.0562782 0
+-0.541355 -0.0763375 0
+-0.548647 -0.102254 0
+-0.555941 -0.137762 0
+-0.563726 -0.192227 0
+-0.574951 -0.286343 0
+-0.597828 -0.45932 0
+-0.65078 -0.778209 0
+-0.768385 -1.34486 0
+-1.00295 -2.29084 0
+-1.41582 -3.74991 0
+-2.05682 -5.79641 0
+-2.93606 -8.34612 0
+-3.99812 -11.055 0
+-5.11121 -13.3133 0
+-6.08786 -14.4377 0
+-6.74952 -14.0423 0
+-7.01416 -12.3564 0
+-6.93813 -10.1597 0
+-6.64945 -8.19495 0
+-3.33915 -6.2994 0
+-1.58914 -3.74977 0
+-1.58914 -0.736918 0
+-0.331167 -0.141259 0
+-0.721395 -0.248942 0
+-1.49695 -0.356347 0
+-1.5097 -0.357214 0
+-1.45236 -0.0281416 0
+-1.30187 0.64712 0
+-1.09277 1.33139 0
+-0.886931 1.63198 0
+-0.719433 1.42879 0
+-0.584821 0.923878 0
+-0.466989 0.423819 0
+-0.366338 0.110105 0
+-0.29675 -0.0166647 0
+-0.266811 -0.0455506 0
+-0.269846 -0.0505766 0
+-0.290024 -0.0568847 0
+-0.314122 -0.0628256 0
+-0.336396 -0.06442 0
+-0.355591 -0.0612335 0
+-0.371662 -0.0547654 0
+-0.385074 -0.0469535 0
+-0.39627 -0.0386056 0
+-0.405305 -0.0298634 0
+-0.412501 -0.0216995 0
+-0.418452 -0.0148453 0
+-0.42328 -0.00877684 0
+-0.427002 -0.00330759 0
+-0.430043 0.00106941 0
+-0.432611 0.00466238 0
+-0.434549 0.00798646 0
+-0.43602 0.0106625 0
+-0.437297 0.0126154 0
+-0.43823 0.0144637 0
+-0.438772 0.0161267 0
+-0.439206 0.01721 0
+-0.439513 0.0181308 0
+-0.439508 0.0191207 0
+-0.439368 0.0196975 0
+-0.43921 0.0199195 0
+-0.43881 0.0201885 0
+-0.438165 0.0201387 0
+-0.43747 0.0194496 0
+-0.436607 0.0184902 0
+-0.435494 0.0171823 0
+-0.434377 0.0148673 0
+-0.433347 0.010946 0
+-0.432566 0.00353895 0
+-0.433529 -0.0120176 0
+-0.440157 -0.0428287 0
+-0.459856 -0.0986387 0
+-0.504162 -0.192525 0
+-0.586246 -0.338245 0
+-0.714193 -0.543308 0
+-0.882256 -0.799002 0
+-1.06346 -1.06976 0
+-1.20899 -1.29145 0
+-1.26131 -1.39015 0
+-1.18088 -1.3177 0
+-0.973213 -1.08331 0
+-0.696072 -0.758817 0
+-0.438197 -0.449361 0
+-0.28058 -0.233474 0
+-0.22637 -0.077026 0
+-0.274039 0.0647129 0
+-0.434189 0.233407 0
+-0.712584 0.478276 0
+-1.02684 0.840788 0
+-1.27298 1.23351 0
+-1.37796 1.52489 0
+-1.32787 1.62253 0
+-1.16339 1.51668 0
+-0.950736 1.27002 0
+-0.75 0.971851 0
+-0.596694 0.693139 0
+-0.499629 0.468356 0
+-0.448987 0.303204 0
+-0.427568 0.190045 0
+-0.420069 0.117702 0
+-0.417173 0.0752262 0
+-0.414951 0.0528981 0
+-0.412636 0.042314 0
+-0.410684 0.037108 0
+-0.409415 0.0338589 0
+-0.408674 0.0313358 0
+-0.408279 0.0290249 0
+-0.408144 0.0268362 0
+-0.408093 0.0250264 0
+-0.408041 0.0235524 0
+-0.408095 0.022147 0
+-0.408283 0.0208566 0
+-0.408546 0.0197082 0
+-0.40898 0.0184182 0
+-0.409687 0.0169021 0
+-0.410623 0.0152787 0
+-0.411834 0.0133654 0
+-0.413471 0.010942 0
+-0.415567 0.00807057 0
+-0.418144 0.00462884 0
+-0.421386 0.00022325 0
+-0.425434 -0.00535481 0
+-0.43034 -0.0123489 0
+-0.436265 -0.0213956 0
+-0.443377 -0.0331203 0
+-0.451633 -0.0480227 0
+-0.460908 -0.0670627 0
+-0.471143 -0.0920204 0
+-0.482542 -0.126363 0
+-0.496672 -0.178098 0
+-0.518668 -0.264348 0
+-0.560441 -0.417548 0
+-0.64499 -0.69366 0
+-0.810288 -1.17956 0
+-1.10871 -1.99242 0
+-1.5984 -3.26022 0
+-2.32567 -5.06914 0
+-3.30071 -7.37108 0
+-4.47224 -9.88352 0
+-5.7123 -12.0733 0
+-6.83212 -13.3179 0
+-7.64629 -13.2281 0
+-8.0633 -11.9394 0
+-8.128 -10.095 0
+-7.94588 -8.37707 0
+-4.00668 -6.72573 0
+-1.92701 -4.15784 0
+-1.92701 -1.02401 0
+-0.278296 -0.118556 0
+-0.61142 -0.215997 0
+-1.27795 -0.323436 0
+-1.28248 -0.352695 0
+-1.21028 -0.100353 0
+-1.03945 0.476283 0
+-0.813142 1.10507 0
+-0.609971 1.42879 0
+-0.479246 1.29805 0
+-0.411358 0.85598 0
+-0.36556 0.37801 0
+-0.314321 0.0588555 0
+-0.259945 -0.0710532 0
+-0.219567 -0.085941 0
+-0.203639 -0.0665183 0
+-0.208881 -0.0516578 0
+-0.225435 -0.046286 0
+-0.245196 -0.0446734 0
+-0.263954 -0.0424906 0
+-0.280147 -0.0385869 0
+-0.293658 -0.0334576 0
+-0.304745 -0.0275329 0
+-0.313544 -0.0210793 0
+-0.320428 -0.0148293 0
+-0.325951 -0.00933632 0
+-0.330319 -0.0044226 0
+-0.333628 -1.12054e-05 0
+-0.336225 0.00365319 0
+-0.3383 0.00672511 0
+-0.33979 0.00946473 0
+-0.340833 0.0116947 0
+-0.341629 0.0134003 0
+-0.342095 0.0149186 0
+-0.342213 0.0162342 0
+-0.342181 0.0171688 0
+-0.342003 0.0179428 0
+-0.341568 0.018677 0
+-0.341007 0.0191279 0
+-0.34041 0.0193141 0
+-0.339648 0.0194179 0
+-0.338751 0.0192341 0
+-0.337896 0.0185873 0
+-0.337066 0.0176537 0
+-0.336245 0.0163551 0
+-0.335581 0.0141963 0
+-0.335098 0.0104575 0
+-0.335027 0.00346214 0
+-0.336948 -0.0101016 0
+-0.34486 -0.0349221 0
+-0.366095 -0.0774088 0
+-0.411791 -0.146834 0
+-0.495191 -0.25485 0
+-0.626908 -0.411596 0
+-0.808109 -0.617807 0
+-1.0233 -0.854572 0
+-1.23659 -1.07818 0
+-1.39747 -1.22927 0
+-1.45878 -1.2564 0
+-1.39994 -1.14216 0
+-1.24287 -0.915888 0
+-1.05093 -0.641311 0
+-0.906825 -0.377581 0
+-0.852335 -0.131521 0
+-0.901999 0.114372 0
+-1.05148 0.382882 0
+-1.26469 0.69148 0
+-1.45327 1.02936 0
+-1.54031 1.32055 0
+-1.49229 1.47687 0
+-1.325 1.45525 0
+-1.08808 1.27976 0
+-0.839419 1.02136 0
+-0.62398 0.756412 0
+-0.464578 0.533738 0
+-0.363463 0.367241 0
+-0.309325 0.249067 0
+-0.285511 0.166231 0
+-0.276893 0.109085 0
+-0.27346 0.0717945 0
+-0.270455 0.0498937 0
+-0.266762 0.0386233 0
+-0.262971 0.0333185 0
+-0.259778 0.030667 0
+-0.257376 0.0289355 0
+-0.255691 0.027341 0
+-0.254563 0.0257098 0
+-0.253744 0.0242091 0
+-0.253073 0.0228825 0
+-0.25256 0.0216347 0
+-0.252196 0.0204939 0
+-0.251943 0.0194558 0
+-0.251873 0.0183495 0
+-0.252071 0.0171011 0
+-0.252531 0.015739 0
+-0.253306 0.0141404 0
+-0.254524 0.0121605 0
+-0.25624 0.0097866 0
+-0.258508 0.00689735 0
+-0.261496 0.00321102 0
+-0.265353 -0.00149777 0
+-0.270181 -0.00752111 0
+-0.276171 -0.0154063 0
+-0.283533 -0.0257581 0
+-0.292371 -0.0391855 0
+-0.302814 -0.0566204 0
+-0.315254 -0.0795811 0
+-0.330767 -0.11085 0
+-0.35235 -0.156516 0
+-0.387109 -0.229589 0
+-0.449105 -0.355553 0
+-0.562438 -0.580326 0
+-0.76335 -0.978648 0
+-1.09917 -1.65659 0
+-1.62268 -2.73671 0
+-2.3809 -4.31092 0
+-3.3962 -6.35578 0
+-4.63827 -8.64145 0
+-5.99763 -10.7139 0
+-7.2905 -12.025 0
+-8.32041 -12.1982 0
+-8.9759 -11.2839 0
+-9.28187 -9.78903 0
+-9.31868 -8.34025 0
+-4.70943 -7.02186 0
+-2.30281 -4.53748 0
+-2.30281 -1.3388 0
+-0.23135 -0.0967846 0
+-0.514251 -0.183145 0
+-1.08662 -0.289017 0
+-1.09283 -0.346485 0
+-1.01768 -0.17551 0
+-0.831997 0.290583 0
+-0.577162 0.850225 0
+-0.34471 1.19633 0
+-0.207049 1.16038 0
+-0.168946 0.817869 0
+-0.180921 0.389977 0
+-0.18963 0.0675547 0
+-0.174056 -0.0866376 0
+-0.144511 -0.115497 0
+-0.119943 -0.0910985 0
+-0.110216 -0.0613973 0
+-0.114158 -0.0423565 0
+-0.125993 -0.0328518 0
+-0.140468 -0.028028 0
+-0.154456 -0.0246126 0
+-0.166668 -0.0212588 0
+-0.17673 -0.0174833 0
+-0.184588 -0.0132343 0
+-0.190523 -0.00890648 0
+-0.194997 -0.00487488 0
+-0.198275 -0.0011564 0
+-0.200533 0.00223497 0
+-0.202057 0.00516621 0
+-0.203029 0.00768583 0
+-0.203469 0.00989482 0
+-0.203499 0.0117137 0
+-0.203257 0.0131488 0
+-0.202718 0.0143701 0
+-0.201887 0.0153944 0
+-0.20089 0.0161625 0
+-0.19974 0.0167846 0
+-0.198391 0.0173201 0
+-0.196931 0.0176603 0
+-0.19543 0.0178052 0
+-0.193842 0.0178223 0
+-0.192223 0.0176085 0
+-0.190719 0.0170771 0
+-0.189356 0.0162844 0
+-0.188121 0.0151135 0
+-0.187054 0.0131241 0
+-0.186182 0.00958025 0
+-0.185896 0.00317078 0
+-0.187855 -0.00814702 0
+-0.195795 -0.0269867 0
+-0.216148 -0.0570606 0
+-0.258406 -0.104581 0
+-0.334352 -0.178908 0
+-0.455451 -0.290502 0
+-0.628276 -0.444987 0
+-0.848327 -0.634526 0
+-1.09464 -0.83187 0
+-1.33014 -0.99377 0
+-1.51142 -1.07512 0
+-1.60597 -1.04762 0
+-1.60935 -0.912511 0
+-1.5524 -0.698265 0
+-1.48905 -0.440946 0
+-1.46029 -0.160286 0
+-1.48312 0.1372 0
+-1.54807 0.447822 0
+-1.61652 0.759929 0
+-1.62865 1.04149 0
+-1.54377 1.23567 0
+-1.35955 1.29264 0
+-1.10743 1.20312 0
+-0.833973 1.0063 0
+-0.581315 0.768703 0
+-0.375849 0.550945 0
+-0.226816 0.384705 0
+-0.130669 0.271095 0
+-0.0764974 0.194896 0
+-0.0506407 0.140375 0
+-0.0403889 0.0988344 0
+-0.0363758 0.0677823 0
+-0.0332929 0.0468119 0
+-0.0292673 0.0345989 0
+-0.0244917 0.0285441 0
+-0.0197533 0.0259298 0
+-0.0155948 0.0247782 0
+-0.0122136 0.0239609 0
+-0.00955889 0.0230563 0
+-0.00741726 0.0220686 0
+-0.00559578 0.0210621 0
+-0.00401648 0.0200564 0
+-0.00262435 0.0191027 0
+-0.00137691 0.0182092 0
+-0.000316313 0.0172896 0
+0.00049624 0.0162891 0
+0.00104267 0.015193 0
+0.00126665 0.0139167 0
+0.00106622 0.0123612 0
+0.000377494 0.0104754 0
+-0.000869283 0.00814411 0
+-0.00281435 0.00515597 0
+-0.00560158 0.00128924 0
+-0.00937045 -0.00375253 0
+-0.0143484 -0.0104288 0
+-0.0208362 -0.0192707 0
+-0.0291776 -0.0308446 0
+-0.0399195 -0.045879 0
+-0.0540906 -0.0654105 0
+-0.0736714 -0.0912702 0
+-0.102606 -0.127582 0
+-0.148412 -0.183784 0
+-0.224143 -0.279823 0
+-0.350564 -0.453906 0
+-0.558228 -0.770984 0
+-0.888911 -1.32591 0
+-1.39531 -2.23032 0
+-2.13555 -3.57068 0
+-3.15528 -5.33605 0
+-4.45228 -7.34445 0
+-5.93802 -9.22816 0
+-7.43263 -10.5304 0
+-8.72497 -10.9058 0
+-9.67956 -10.3293 0
+-10.3026 -9.166 0
+-10.6623 -7.98059 0
+-5.38043 -7.04051 0
+-2.68836 -4.78068 0
+-2.68836 -1.62906 0
+-0.188721 -0.0757586 0
+-0.425685 -0.149257 0
+-0.912811 -0.249045 0
+-0.93105 -0.328251 0
+-0.87107 -0.235499 0
+-0.691411 0.110914 0
+-0.419528 0.578331 0
+-0.146612 0.923406 0
+0.0351754 0.978589 0
+0.0940586 0.758979 0
+0.0664023 0.417626 0
+0.0152873 0.118662 0
+-0.0154806 -0.0558781 0
+-0.0173332 -0.113654 0
+-0.00377389 -0.104668 0
+0.00965131 -0.0748332 0
+0.0153949 -0.0481111 0
+0.0132694 -0.0307376 0
+0.00623486 -0.0210048 0
+-0.00267523 -0.0157138 0
+-0.0114687 -0.0124766 0
+-0.0190785 -0.0098847 0
+-0.0250298 -0.007294 0
+-0.0293177 -0.00462938 0
+-0.0321968 -0.00200646 0
+-0.0338963 0.000532706 0
+-0.0346113 0.0029399 0
+-0.0345794 0.00512446 0
+-0.033972 0.00706887 0
+-0.0328691 0.00878265 0
+-0.0313828 0.0102185 0
+-0.0296207 0.0113781 0
+-0.0275979 0.0123389 0
+-0.0253364 0.0131249 0
+-0.0229121 0.0137304 0
+-0.020346 0.0142111 0
+-0.0176304 0.0145973 0
+-0.0148251 0.0148481 0
+-0.0119863 0.0149598 0
+-0.00912174 0.0149514 0
+-0.00629393 0.0147747 0
+-0.003603 0.0143804 0
+-0.00106943 0.0137453 0
+0.00133183 0.012707 0
+0.00358619 0.0108647 0
+0.00556334 0.00759832 0
+0.00667284 0.00205675 0
+0.00529262 -0.00677108 0
+-0.00167203 -0.0200261 0
+-0.0191223 -0.0396142 0
+-0.0541407 -0.0695661 0
+-0.116073 -0.116979 0
+-0.215662 -0.190917 0
+-0.362439 -0.298214 0
+-0.559925 -0.437045 0
+-0.799976 -0.591823 0
+-1.05999 -0.733761 0
+-1.30662 -0.828504 0
+-1.50641 -0.847828 0
+-1.63937 -0.779557 0
+-1.7077 -0.629938 0
+-1.73193 -0.416726 0
+-1.73329 -0.158935 0
+-1.72142 0.125329 0
+-1.68948 0.415873 0
+-1.61574 0.686184 0
+-1.47515 0.900901 0
+-1.26055 1.02106 0
+-0.990662 1.02276 0
+-0.701531 0.913991 0
+-0.430186 0.734955 0
+-0.201751 0.540268 0
+-0.0256883 0.374882 0
+0.100304 0.258713 0
+0.184165 0.187234 0
+0.235358 0.143703 0
+0.263285 0.112448 0
+0.276643 0.0854776 0
+0.282668 0.0617577 0
+0.286408 0.0430729 0
+0.290462 0.0305457 0
+0.295458 0.0235484 0
+0.301008 0.0203809 0
+0.306522 0.0192657 0
+0.311579 0.0189045 0
+0.316021 0.0186153 0
+0.319906 0.0181842 0
+0.323366 0.0176031 0
+0.326502 0.0169209 0
+0.329397 0.0162081 0
+0.332107 0.0154998 0
+0.334625 0.0147727 0
+0.336916 0.013998 0
+0.338958 0.0131512 0
+0.340702 0.0121735 0
+0.342071 0.0109922 0
+0.343004 0.00954274 0
+0.343428 0.0077197 0
+0.343225 0.00535872 0
+0.34225 0.0022638 0
+0.340318 -0.00182083 0
+0.33713 -0.007241 0
+0.332241 -0.014382 0
+0.325022 -0.0236266 0
+0.314521 -0.0353785 0
+0.299257 -0.0501468 0
+0.276937 -0.068951 0
+0.243924 -0.0945689 0
+0.194346 -0.134207 0
+0.118724 -0.204201 0
+0.00162906 -0.336811 0
+-0.182187 -0.587168 0
+-0.473086 -1.03501 0
+-0.930839 -1.77257 0
+-1.63114 -2.87037 0
+-2.64423 -4.32296 0
+-3.99213 -5.99655 0
+-5.60253 -7.61776 0
+-7.29808 -8.83488 0
+-8.85468 -9.34923 0
+-10.1148 -9.0692 0
+-11.0724 -8.20844 0
+-11.8092 -7.24376 0
+-5.90497 -6.63558 0
+-3.01396 -4.74501 0
+-3.01396 -1.79885 0
+-0.149444 -0.0558647 0
+-0.342837 -0.114641 0
+-0.748551 -0.202204 0
+-0.785803 -0.291004 0
+-0.758621 -0.262689 0
+-0.614118 -0.0335983 0
+-0.357742 0.321945 0
+-0.0642385 0.629894 0
+0.169003 0.745341 0
+0.284308 0.643668 0
+0.289922 0.412006 0
+0.237519 0.171059 0
+0.180102 0.00153191 0
+0.145177 -0.0787362 0
+0.13422 -0.0937193 0
+0.136555 -0.0771773 0
+0.141817 -0.0533818 0
+0.144679 -0.0336088 0
+0.144102 -0.0204376 0
+0.141076 -0.0126979 0
+0.136992 -0.00840145 0
+0.132981 -0.00588334 0
+0.129767 -0.00408917 0
+0.12765 -0.00252206 0
+0.126641 -0.00100591 0
+0.126646 0.000518375 0
+0.127537 0.00204076 0
+0.129146 0.00350698 0
+0.131331 0.00487559 0
+0.133992 0.00611439 0
+0.137021 0.00718116 0
+0.140328 0.00806418 0
+0.14387 0.00879039 0
+0.147611 0.00937691 0
+0.151501 0.00983387 0
+0.155514 0.0101911 0
+0.159639 0.0104664 0
+0.163832 0.0106491 0
+0.168049 0.0107375 0
+0.172261 0.0107338 0
+0.176419 0.0106116 0
+0.180466 0.0103285 0
+0.184391 0.00981595 0
+0.188194 0.00889941 0
+0.191796 0.00725804 0
+0.194917 0.00447323 0
+0.196852 0.000118055 0
+0.196221 -0.00614382 0
+0.190832 -0.0146406 0
+0.17751 -0.0262965 0
+0.151642 -0.0437008 0
+0.106526 -0.071867 0
+0.033177 -0.117571 0
+-0.0784373 -0.186603 0
+-0.235953 -0.279533 0
+-0.43967 -0.38811 0
+-0.678635 -0.494801 0
+-0.930694 -0.57645 0
+-1.16772 -0.610806 0
+-1.36423 -0.583053 0
+-1.50481 -0.489365 0
+-1.58535 -0.336188 0
+-1.60718 -0.137106 0
+-1.57088 0.0890182 0
+-1.47353 0.318518 0
+-1.31081 0.523464 0
+-1.08402 0.674104 0
+-0.80835 0.745389 0
+-0.513056 0.727461 0
+-0.232127 0.633061 0
+0.00795675 0.49487 0
+0.195571 0.352653 0
+0.333074 0.237379 0
+0.430304 0.161482 0
+0.497797 0.11974 0
+0.543466 0.0980349 0
+0.572773 0.0831415 0
+0.59017 0.0680809 0
+0.599902 0.0520257 0
+0.605781 0.0371947 0
+0.610556 0.0257711 0
+0.615631 0.0184738 0
+0.621332 0.0146808 0
+0.62742 0.0131781 0
+0.633516 0.0128093 0
+0.639338 0.0127938 0
+0.644775 0.0127478 0
+0.649831 0.0125474 0
+0.654556 0.0121972 0
+0.659012 0.0117524 0
+0.663253 0.0112595 0
+0.667294 0.0107316 0
+0.671128 0.0101641 0
+0.674739 0.00954015 0
+0.678093 0.00882017 0
+0.681135 0.00795023 0
+0.683809 0.00686841 0
+0.686042 0.00548635 0
+0.687719 0.00368137 0
+0.688677 0.0013057 0
+0.688675 -0.00181903 0
+0.687334 -0.00590107 0
+0.684094 -0.0111421 0
+0.678167 -0.0177005 0
+0.668483 -0.0256951 0
+0.653645 -0.0353093 0
+0.631903 -0.047209 0
+0.600993 -0.0636596 0
+0.557574 -0.0907888 0
+0.495708 -0.142335 0
+0.403508 -0.244612 0
+0.257238 -0.440899 0
+0.0135737 -0.791351 0
+-0.395984 -1.36301 0
+-1.06031 -2.20605 0
+-2.06411 -3.31916 0
+-3.44314 -4.61753 0
+-5.13746 -5.92344 0
+-6.97808 -6.99426 0
+-8.73804 -7.58927 0
+-10.2427 -7.56458 0
+-11.4735 -6.97761 0
+-12.5484 -6.16882 0
+-6.13167 -5.73099 0
+-3.16116 -4.29396 0
+-3.16116 -1.71119 0
+-0.11327 -0.0379266 0
+-0.26459 -0.080995 0
+-0.589607 -0.150635 0
+-0.646263 -0.234351 0
+-0.661042 -0.247917 0
+-0.576049 -0.118599 0
+-0.374797 0.120685 0
+-0.104703 0.359792 0
+0.14973 0.490902 0
+0.31887 0.474523 0
+0.382769 0.348102 0
+0.36798 0.185844 0
+0.319072 0.0504346 0
+0.271307 -0.0309773 0
+0.240138 -0.0625569 0
+0.225598 -0.0626438 0
+0.221433 -0.049224 0
+0.221577 -0.033761 0
+0.222441 -0.0213088 0
+0.22266 -0.0129243 0
+0.222143 -0.00789266 0
+0.221311 -0.00505814 0
+0.220647 -0.00343275 0
+0.22049 -0.00237215 0
+0.220998 -0.00152171 0
+0.222217 -0.000707765 0
+0.224121 0.000130504 0
+0.226633 0.000987643 0
+0.229668 0.00183448 0
+0.233142 0.00263449 0
+0.236967 0.00335002 0
+0.241064 0.00396089 0
+0.24538 0.00446841 0
+0.249872 0.00487904 0
+0.254499 0.00520167 0
+0.259233 0.00545218 0
+0.264053 0.00564171 0
+0.268927 0.0057706 0
+0.273821 0.00583858 0
+0.278708 0.00584206 0
+0.283555 0.00576048 0
+0.288327 0.00555223 0
+0.292999 0.00514027 0
+0.297513 0.00438173 0
+0.301699 0.00306786 0
+0.305189 0.000980416 0
+0.307326 -0.00202257 0
+0.307137 -0.00595793 0
+0.303342 -0.0108481 0
+0.294222 -0.0171799 0
+0.277109 -0.0265904 0
+0.247545 -0.0423063 0
+0.198681 -0.0687098 0
+0.121781 -0.109706 0
+0.00851815 -0.166273 0
+-0.145269 -0.234326 0
+-0.335939 -0.304134 0
+-0.550514 -0.361879 0
+-0.768441 -0.392882 0
+-0.966155 -0.385344 0
+-1.12227 -0.333252 0
+-1.2208 -0.237662 0
+-1.25139 -0.106521 0
+-1.2085 0.0461188 0
+-1.09135 0.20137 0
+-0.905509 0.337617 0
+-0.665389 0.433981 0
+-0.395393 0.475391 0
+-0.126118 0.458184 0
+0.11397 0.392972 0
+0.306986 0.301853 0
+0.449323 0.210316 0
+0.548882 0.137819 0
+0.61833 0.0920339 0
+0.668754 0.0693157 0
+0.706792 0.0599973 0
+0.735302 0.0546312 0
+0.755583 0.0477994 0
+0.769095 0.038514 0
+0.77789 0.0284003 0
+0.784135 0.0195263 0
+0.789504 0.0131054 0
+0.79492 0.00926479 0
+0.800671 0.00742781 0
+0.806673 0.00680777 0
+0.812724 0.00674254 0
+0.818658 0.00681493 0
+0.82438 0.00682543 0
+0.829861 0.00671644 0
+0.835111 0.00650209 0
+0.840156 0.0062148 0
+0.845011 0.00587694 0
+0.849679 0.00549647 0
+0.854152 0.00506667 0
+0.858408 0.00456381 0
+0.862408 0.00395073 0
+0.866096 0.00317952 0
+0.869395 0.0021869 0
+0.872183 0.000893774 0
+0.874276 -0.000788022 0
+0.875406 -0.00294997 0
+0.875181 -0.00567576 0
+0.873057 -0.00901884 0
+0.868345 -0.012989 0
+0.860235 -0.0175859 0
+0.847873 -0.022948 0
+0.830433 -0.02977 0
+0.806993 -0.0402198 0
+0.775792 -0.059589 0
+0.73221 -0.0987536 0
+0.664646 -0.177048 0
+0.548047 -0.324301 0
+0.336507 -0.579811 0
+-0.0407346 -0.985769 0
+-0.672768 -1.57402 0
+-1.64358 -2.34835 0
+-2.99288 -3.26823 0
+-4.67575 -4.24058 0
+-6.54695 -5.12306 0
+-8.39523 -5.741 0
+-10.0338 -5.92605 0
+-11.4147 -5.59672 0
+-12.6815 -4.90201 0
+-5.93766 -4.40464 0
+-3.00857 -3.38049 0
+-3.00857 -1.23862 0
+-0.0806255 -0.0229286 0
+-0.191765 -0.050896 0
+-0.436625 -0.0994658 0
+-0.505462 -0.165517 0
+-0.557494 -0.195891 0
+-0.538743 -0.137356 0
+-0.418625 0.000560172 0
+-0.216447 0.157609 0
+0.00848087 0.265969 0
+0.192505 0.290495 0
+0.300183 0.24042 0
+0.333254 0.15277 0
+0.317408 0.0662768 0
+0.282292 0.004134 0
+0.248387 -0.0286562 0
+0.224313 -0.0385756 0
+0.210516 -0.0354321 0
+0.20404 -0.0272907 0
+0.201663 -0.0189374 0
+0.201123 -0.01239 0
+0.201216 -0.00799133 0
+0.201488 -0.00533532 0
+0.201886 -0.00383643 0
+0.202504 -0.00299569 0
+0.203448 -0.00247063 0
+0.204792 -0.00205744 0
+0.206573 -0.00165523 0
+0.208786 -0.00123087 0
+0.211404 -0.000788111 0
+0.214381 -0.000347962 0
+0.217663 6.39548e-05 0
+0.22119 0.000428973 0
+0.224915 0.000739356 0
+0.228796 0.000994149 0
+0.232796 0.0011969 0
+0.23689 0.0013548 0
+0.241054 0.00147393 0
+0.245264 0.00155642 0
+0.249498 0.00160179 0
+0.253732 0.0016046 0
+0.257941 0.00154786 0
+0.262092 0.00139767 0
+0.266134 0.0010957 0
+0.26996 0.000553155 0
+0.27336 -0.000335817 0
+0.275992 -0.00165353 0
+0.277378 -0.00341184 0
+0.276967 -0.00554877 0
+0.274159 -0.008043 0
+0.268169 -0.0111917 0
+0.257543 -0.0159664 0
+0.239433 -0.024199 0
+0.20903 -0.0383086 0
+0.159769 -0.0604471 0
+0.0847727 -0.091279 0
+-0.0206484 -0.128907 0
+-0.156294 -0.168491 0
+-0.31535 -0.202825 0
+-0.484492 -0.223743 0
+-0.645874 -0.223965 0
+-0.780259 -0.198871 0
+-0.87013 -0.147794 0
+-0.902054 -0.0746004 0
+-0.868407 0.0124689 0
+-0.768789 0.10175 0
+-0.611127 0.179953 0
+-0.411909 0.234761 0
+-0.194459 0.257939 0
+0.0156335 0.248091 0
+0.196936 0.211669 0
+0.337673 0.161115 0
+0.437484 0.110505 0
+0.504672 0.0706305 0
+0.550767 0.0459386 0
+0.585465 0.0346173 0
+0.614199 0.0312625 0
+0.638579 0.0302509 0
+0.658343 0.028035 0
+0.673196 0.0236612 0
+0.683644 0.0179519 0
+0.690886 0.0122847 0
+0.696285 0.0077066 0
+0.700929 0.00462072 0
+0.70546 0.00289679 0
+0.710127 0.00214069 0
+0.714939 0.00193111 0
+0.719806 0.0019473 0
+0.724634 0.00199807 0
+0.729353 0.00199758 0
+0.733929 0.00192554 0
+0.738353 0.00179064 0
+0.742623 0.00160667 0
+0.746738 0.00138201 0
+0.750689 0.00111552 0
+0.754457 0.000795054 0
+0.758009 0.000398923 0
+0.76129 -0.000102139 0
+0.764221 -0.000744143 0
+0.766681 -0.00156686 0
+0.7685 -0.00260754 0
+0.769443 -0.00389368 0
+0.769201 -0.00543479 0
+0.767398 -0.00721641 0
+0.763621 -0.00921183 0
+0.757475 -0.0114407 0
+0.74865 -0.0141238 0
+0.736896 -0.0180164 0
+0.721697 -0.0250217 0
+0.701261 -0.0391541 0
+0.670309 -0.0678014 0
+0.616241 -0.122982 0
+0.513894 -0.221955 0
+0.320386 -0.386303 0
+-0.026612 -0.638772 0
+-0.60269 -0.99794 0
+-1.47922 -1.47181 0
+-2.6958 -2.05166 0
+-4.23052 -2.70585 0
+-5.98201 -3.37156 0
+-7.77922 -3.94379 0
+-9.43342 -4.27185 0
+-10.8383 -4.19179 0
+-12.0976 -3.64277 0
+-5.34516 -2.92459 0
+-2.55172 -2.14551 0
+-2.55172 -0.383676 0
+-0.0524087 -0.0116699 0
+-0.126779 -0.026929 0
+-0.294971 -0.0551245 0
+-0.363334 -0.0971561 0
+-0.434704 -0.124524 0
+-0.466441 -0.105624 0
+-0.425202 -0.0406838 0
+-0.310455 0.0428572 0
+-0.154735 0.110246 0
+-0.00364115 0.139398 0
+0.10779 0.128987 0
+0.167276 0.0932824 0
+0.182662 0.050888 0
+0.171201 0.0155918 0
+0.149408 -0.00686594 0
+0.12801 -0.017181 0
+0.111677 -0.0191025 0
+0.101046 -0.0166635 0
+0.0949235 -0.0128192 0
+0.0917415 -0.00921175 0
+0.0902245 -0.00647815 0
+0.0895563 -0.00467092 0
+0.0893078 -0.00359174 0
+0.0892999 -0.00299151 0
+0.0894862 -0.00266055 0
+0.0898784 -0.00245323 0
+0.0905034 -0.00228372 0
+0.0913807 -0.00211162 0
+0.0925151 -0.00192588 0
+0.0938956 -0.00173173 0
+0.0954974 -0.00154102 0
+0.0972882 -0.0013649 0
+0.099235 -0.00121045 0
+0.101307 -0.00108074 0
+0.103477 -0.000975676 0
+0.105722 -0.000893049 0
+0.108024 -0.00083049 0
+0.110365 -0.000786992 0
+0.112727 -0.000763528 0
+0.115094 -0.000764722 0
+0.117442 -0.000801755 0
+0.119732 -0.000895067 0
+0.121902 -0.00107628 0
+0.12384 -0.00138654 0
+0.125368 -0.00186584 0
+0.126245 -0.0025334 0
+0.126204 -0.00337175 0
+0.124992 -0.00433916 0
+0.122386 -0.0054385 0
+0.118041 -0.00684818 0
+0.111139 -0.00906676 0
+0.0999051 -0.0129662 0
+0.0812416 -0.0196467 0
+0.0508541 -0.0300613 0
+0.00408269 -0.0445093 0
+-0.0626321 -0.0621937 0
+-0.150083 -0.081042 0
+-0.255021 -0.0978887 0
+-0.369766 -0.108999 0
+-0.482903 -0.110831 0
+-0.580903 -0.100873 0
+-0.650298 -0.0784008 0
+-0.679962 -0.0449388 0
+-0.663188 -0.00430714 0
+-0.599294 0.0378539 0
+-0.494417 0.0750737 0
+-0.361091 0.101434 0
+-0.216231 0.113078 0
+-0.0775501 0.109408 0
+0.0407099 0.093408 0
+0.131085 0.070739 0
+0.193776 0.0478131 0
+0.234765 0.029641 0
+0.26226 0.018443 0
+0.283291 0.0135864 0
+0.301886 0.0126673 0
+0.319139 0.0129976 0
+0.334453 0.0127202 0
+0.346935 0.011179 0
+0.356235 0.0086519 0
+0.362704 0.00581574 0
+0.367121 0.00328898 0
+0.370332 0.00140989 0
+0.372999 0.000229278 0
+0.375525 -0.00038515 0
+0.378085 -0.000629416 0
+0.380713 -0.000681165 0
+0.383376 -0.000664668 0
+0.386023 -0.000649247 0
+0.388612 -0.000663601 0
+0.391115 -0.000713502 0
+0.393518 -0.000795835 0
+0.395806 -0.000906952 0
+0.397968 -0.00104682 0
+0.399984 -0.00122059 0
+0.40182 -0.00143818 0
+0.403431 -0.00171296 0
+0.404746 -0.00205999 0
+0.405672 -0.00249307 0
+0.406085 -0.00302072 0
+0.405833 -0.0036422 0
+0.404743 -0.00434538 0
+0.402637 -0.00511111 0
+0.399358 -0.0059337 0
+0.394791 -0.00687401 0
+0.388835 -0.0081689 0
+0.381246 -0.0104276 0
+0.371166 -0.014942 0
+0.356121 -0.0241098 0
+0.330228 -0.0419096 0
+0.281529 -0.0742835 0
+0.188783 -0.129209 0
+0.0187555 -0.216276 0
+-0.274243 -0.345774 0
+-0.744592 -0.527592 0
+-1.44609 -0.770318 0
+-2.41753 -1.08022 0
+-3.66516 -1.45822 0
+-5.14517 -1.89156 0
+-6.75131 -2.33765 0
+-8.32001 -2.70316 0
+-9.68025 -2.83155 0
+-10.7988 -2.5242 0
+-4.59103 -1.65321 0
+-2.01955 -0.94145 0
+-2.01955 0.576783 0
+-0.0296588 -0.00445528 0
+-0.0728149 -0.0107465 0
+-0.173027 -0.023 0
+-0.227605 -0.0425795 0
+-0.294455 -0.0576761 0
+-0.345596 -0.0544852 0
+-0.354547 -0.0317356 0
+-0.312708 0.00101584 0
+-0.232987 0.0305225 0
+-0.140819 0.0472273 0
+-0.0606368 0.0488034 0
+-0.00645302 0.0390972 0
+0.0199024 0.024531 0
+0.0248055 0.010687 0
+0.017306 0.000631735 0
+0.00513966 -0.00501662 0
+-0.00683712 -0.00712785 0
+-0.0164527 -0.00705009 0
+-0.0233044 -0.00596963 0
+-0.0278474 -0.00467103 0
+-0.0307752 -0.00355259 0
+-0.0327049 -0.00274335 0
+-0.0340728 -0.00222612 0
+-0.0351396 -0.00192682 0
+-0.0360371 -0.00176517 0
+-0.0368158 -0.00167665 0
+-0.0374835 -0.00161812 0
+-0.0380315 -0.00156559 0
+-0.0384503 -0.00150912 0
+-0.0387364 -0.00144754 0
+-0.0388953 -0.00138402 0
+-0.0389392 -0.00132277 0
+-0.0388843 -0.00126718 0
+-0.0387475 -0.00121924 0
+-0.0385453 -0.00117961 0
+-0.0382919 -0.00114805 0
+-0.0379999 -0.00112409 0
+-0.0376809 -0.0011076 0
+-0.0373465 -0.0010994 0
+-0.0370108 -0.00110192 0
+-0.0366938 -0.00112017 0
+-0.0364277 -0.00116252 0
+-0.0362646 -0.00124069 0
+-0.0362845 -0.00136797 0
+-0.0365969 -0.00155471 0
+-0.0373293 -0.00180222 0
+-0.0386021 -0.00210013 0
+-0.040507 -0.00243546 0
+-0.0431261 -0.00282051 0
+-0.0466379 -0.00333745 0
+-0.0515249 -0.00418077 0
+-0.0588274 -0.00566481 0
+-0.0703084 -0.00816666 0
+-0.08837 -0.0120008 0
+-0.115622 -0.0172581 0
+-0.154149 -0.0236683 0
+-0.204652 -0.0305394 0
+-0.265737 -0.0368047 0
+-0.333563 -0.0411751 0
+-0.402015 -0.0423799 0
+-0.463429 -0.0394598 0
+-0.509775 -0.0320563 0
+-0.534097 -0.0206181 0
+-0.531957 -0.00644826 0
+-0.502564 0.00846004 0
+-0.449286 0.0217941 0
+-0.37929 0.0314369 0
+-0.30222 0.0360073 0
+-0.228075 0.0352632 0
+-0.164863 0.030195 0
+-0.116838 0.0227133 0
+-0.0840338 0.0150087 0
+-0.0632292 0.00883586 0
+-0.049819 0.00503244 0
+-0.0396944 0.00346137 0
+-0.0303646 0.00333708 0
+-0.0210814 0.00371409 0
+-0.0122476 0.00388604 0
+-0.0046215 0.00355262 0
+0.00126536 0.00276476 0
+0.00532548 0.00175535 0
+0.00784204 0.000772165 0
+0.0092722 -2.05163e-05 0
+0.0100657 -0.000564492 0
+0.0105621 -0.000881792 0
+0.0109661 -0.00103367 0
+0.0113715 -0.00108672 0
+0.0118005 -0.001094 0
+0.0122407 -0.00108963 0
+0.012668 -0.00109121 0
+0.0130597 -0.00110547 0
+0.0133973 -0.00113367 0
+0.0136654 -0.00117539 0
+0.0138491 -0.00123084 0
+0.0139298 -0.00130169 0
+0.0138825 -0.00139118 0
+0.0136726 -0.00150345 0
+0.0132548 -0.00164258 0
+0.0125725 -0.00181117 0
+0.0115601 -0.00200877 0
+0.0101483 -0.00223086 0
+0.00827209 -0.0024696 0
+0.00587951 -0.002719 0
+0.00293387 -0.00298854 0
+-0.000609313 -0.00333131 0
+-0.00488481 -0.00389389 0
+-0.0103184 -0.00499455 0
+-0.0180298 -0.00723108 0
+-0.0305326 -0.0116075 0
+-0.0527912 -0.0196515 0
+-0.093595 -0.0334802 0
+-0.167024 -0.0557803 0
+-0.293579 -0.0897219 0
+-0.500433 -0.13892 0
+-0.820381 -0.207645 0
+-1.28933 -0.301374 0
+-1.94216 -0.427382 0
+-2.80614 -0.594239 0
+-3.88933 -0.808377 0
+-5.16109 -1.06588 0
+-6.52576 -1.33849 0
+-7.80629 -1.55102 0
+-8.8044 -1.52609 0
+-3.96063 -0.811106 0
+-1.77501 -0.170229 0
+-1.77501 1.0919 0
+-0.0131883 -0.000916451 0
+-0.0327534 -0.00238128 0
+-0.0794295 -0.00533395 0
+-0.111699 -0.0103105 0
+-0.154904 -0.0144723 0
+-0.19486 -0.01453 0
+-0.216554 -0.0100429 0
+-0.212599 -0.0029411 0
+-0.186035 0.00395778 0
+-0.147272 0.00846398 0
+-0.108278 0.00980824 0
+-0.0777214 0.00854001 0
+-0.0590689 0.00587785 0
+-0.0513995 0.00301683 0
+-0.0514923 0.00072371 0
+-0.0557812 -0.000728683 0
+-0.0614926 -0.00141737 0
+-0.0669683 -0.00157532 0
+-0.0714929 -0.00144603 0
+-0.0749529 -0.00121211 0
+-0.0775256 -0.000980868 0
+-0.0794709 -0.000799042 0
+-0.0810225 -0.000675543 0
+-0.0823494 -0.000600905 0
+-0.0835555 -0.000560031 0
+-0.0846943 -0.000538872 0
+-0.0857863 -0.000527026 0
+-0.0868348 -0.000518072 0
+-0.087836 -0.000508852 0
+-0.088786 -0.000498436 0
+-0.0896837 -0.000487142 0
+-0.0905316 -0.000475757 0
+-0.0913346 -0.000465051 0
+-0.092099 -0.000455562 0
+-0.0928319 -0.00044756 0
+-0.0935396 -0.000441115 0
+-0.0942282 -0.000436219 0
+-0.0949037 -0.000432933 0
+-0.0955723 -0.000431518 0
+-0.0962423 -0.0004326 0
+-0.0969258 -0.00043734 0
+-0.0976415 -0.000447526 0
+-0.0984174 -0.000465461 0
+-0.0992925 -0.000493474 0
+-0.100315 -0.000533006 0
+-0.101534 -0.00058364 0
+-0.102992 -0.000643157 0
+-0.104718 -0.000710066 0
+-0.106749 -0.000789547 0
+-0.109185 -0.000901838 0
+-0.112277 -0.00108919 0
+-0.116527 -0.00141558 0
+-0.12274 -0.00195443 0
+-0.131977 -0.00276466 0
+-0.145374 -0.00386128 0
+-0.163852 -0.00519061 0
+-0.187773 -0.00661907 0
+-0.216638 -0.00794042 0
+-0.248912 -0.0089021 0
+-0.282043 -0.00924923 0
+-0.312722 -0.00878157 0
+-0.337365 -0.00741333 0
+-0.352765 -0.00521906 0
+-0.356767 -0.00244719 0
+-0.348818 0.000510842 0
+-0.33022 0.00319545 0
+-0.303967 0.00518314 0
+-0.274154 0.00619405 0
+-0.245061 0.00617023 0
+-0.220159 0.00529296 0
+-0.20137 0.00392379 0
+-0.188846 0.00248412 0
+-0.18133 0.00131951 0
+-0.176903 0.000605152 0
+-0.17377 0.000328666 0
+-0.17078 0.000345917 0
+-0.167538 0.000471813 0
+-0.164211 0.00055944 0
+-0.161197 0.000538341 0
+-0.158843 0.00040997 0
+-0.157305 0.000217914 0
+-0.156548 1.47523e-05 0
+-0.156409 -0.000160133 0
+-0.156685 -0.000288219 0
+-0.157198 -0.000368874 0
+-0.15782 -0.000411877 0
+-0.158477 -0.000430235 0
+-0.159136 -0.000435528 0
+-0.15979 -0.000435967 0
+-0.160445 -0.000436356 0
+-0.161111 -0.000438966 0
+-0.161801 -0.000444602 0
+-0.162523 -0.000453462 0
+-0.163288 -0.000465682 0
+-0.164109 -0.000481597 0
+-0.164998 -0.000501775 0
+-0.165975 -0.000526885 0
+-0.16706 -0.000557455 0
+-0.168278 -0.000593569 0
+-0.169653 -0.000634579 0
+-0.171205 -0.00067906 0
+-0.172949 -0.000725364 0
+-0.174895 -0.000773392 0
+-0.177056 -0.000828481 0
+-0.179479 -0.00090852 0
+-0.182318 -0.00105534 0
+-0.185962 -0.00135083 0
+-0.191256 -0.00193659 0
+-0.19983 -0.00303368 0
+-0.214526 -0.00495644 0
+-0.239891 -0.00811513 0
+-0.282663 -0.013009 0
+-0.352156 -0.020229 0
+-0.460565 -0.030512 0
+-0.623306 -0.044904 0
+-0.85962 -0.0650599 0
+-1.19339 -0.0936107 0
+-1.65326 -0.13437 0
+-2.26961 -0.192032 0
+-3.06438 -0.271104 0
+-4.02873 -0.374144 0
+-5.08219 -0.497551 0
+-6.01143 -0.59685 0
+-3.31405 -0.307431 0
+-1.82035 0.0410397 0
+-1.82035 0.731051 0
+-0.00332346 -0.000916451 0
+-0.00830263 -0.00238128 0
+-0.0205244 -0.00533395 0
+-0.030835 -0.0103105 0
+-0.0453075 -0.0144723 0
+-0.0598379 -0.01453 0
+-0.0698811 -0.0100429 0
+-0.0728225 -0.0029411 0
+-0.068865 0.00395778 0
+-0.0604012 0.00846398 0
+-0.0505932 0.00980824 0
+-0.0420533 0.00854001 0
+-0.0361757 0.00587785 0
+-0.033159 0.00301683 0
+-0.0324355 0.00072371 0
+-0.0331645 -0.000728683 0
+-0.0345821 -0.00141737 0
+-0.0361577 -0.00157532 0
+-0.0376039 -0.00144603 0
+-0.0388163 -0.00121211 0
+-0.0397975 -0.000980868 0
+-0.0405968 -0.000799042 0
+-0.0412726 -0.000675543 0
+-0.0418737 -0.000600905 0
+-0.042434 -0.000560031 0
+-0.0429732 -0.000538872 0
+-0.0435004 -0.000527026 0
+-0.0440188 -0.000518072 0
+-0.0445278 -0.000508852 0
+-0.0450265 -0.000498436 0
+-0.0455139 -0.000487142 0
+-0.0459899 -0.000475757 0
+-0.0464552 -0.000465051 0
+-0.046911 -0.000455562 0
+-0.0473588 -0.00044756 0
+-0.0478001 -0.000441115 0
+-0.0482365 -0.000436219 0
+-0.0486697 -0.000432933 0
+-0.0491014 -0.000431518 0
+-0.0495342 -0.0004326 0
+-0.0499717 -0.00043734 0
+-0.0504194 -0.000447526 0
+-0.0508851 -0.000465461 0
+-0.0513788 -0.000493474 0
+-0.0519119 -0.000533006 0
+-0.0524958 -0.00058364 0
+-0.0531391 -0.000643157 0
+-0.0538493 -0.000710066 0
+-0.0546391 -0.000789547 0
+-0.0555411 -0.000901838 0
+-0.0566304 -0.00108919 0
+-0.0580462 -0.00141558 0
+-0.0600008 -0.00195443 0
+-0.0627656 -0.00276466 0
+-0.066627 -0.00386128 0
+-0.0718178 -0.00519061 0
+-0.0784371 -0.00661907 0
+-0.0863777 -0.00794042 0
+-0.0952799 -0.0089021 0
+-0.104529 -0.00924923 0
+-0.113311 -0.00878157 0
+-0.120725 -0.00741333 0
+-0.125944 -0.00521906 0
+-0.128391 -0.00244719 0
+-0.127881 0.000510842 0
+-0.124685 0.00319545 0
+-0.119502 0.00518314 0
+-0.113308 0.00619405 0
+-0.107138 0.00617023 0
+-0.101845 0.00529296 0
+-0.0979218 0.00392379 0
+-0.0954378 0.00248412 0
+-0.0941184 0.00131951 0
+-0.0935133 0.000605152 0
+-0.0931848 0.000328666 0
+-0.092839 0.000345917 0
+-0.0923673 0.000471813 0
+-0.0918079 0.00055944 0
+-0.0912697 0.000538341 0
+-0.0908598 0.00040997 0
+-0.090642 0.000217914 0
+-0.0906273 1.47523e-05 0
+-0.0907875 -0.000160133 0
+-0.0910758 -0.000288219 0
+-0.0914448 -0.000368874 0
+-0.0918568 -0.000411877 0
+-0.0922871 -0.000430235 0
+-0.0927227 -0.000435528 0
+-0.0931588 -0.000435967 0
+-0.0935952 -0.000436356 0
+-0.0940343 -0.000438966 0
+-0.0944789 -0.000444602 0
+-0.0949325 -0.000453462 0
+-0.0953983 -0.000465682 0
+-0.09588 -0.000481597 0
+-0.0963818 -0.000501775 0
+-0.0969088 -0.000526885 0
+-0.0974664 -0.000557455 0
+-0.0980601 -0.000593569 0
+-0.0986947 -0.000634579 0
+-0.0993739 -0.00067906 0
+-0.100099 -0.000725364 0
+-0.100873 -0.000773392 0
+-0.101701 -0.000828481 0
+-0.10261 -0.00090852 0
+-0.103666 -0.00105534 0
+-0.105016 -0.00135083 0
+-0.106953 -0.00193659 0
+-0.109987 -0.00303368 0
+-0.114944 -0.00495644 0
+-0.123059 -0.00811513 0
+-0.136068 -0.013009 0
+-0.156297 -0.020229 0
+-0.186809 -0.030512 0
+-0.231713 -0.044904 0
+-0.296773 -0.0650599 0
+-0.390384 -0.0936107 0
+-0.524754 -0.13437 0
+-0.716786 -0.192032 0
+-0.98789 -0.271104 0
+-1.36203 -0.374144 0
+-1.85959 -0.497551 0
+-2.45644 -0.59685 0
+-1.82866 -0.307431 0
+-1.28206 0.0410397 0
+-1.28206 0.731051 0
+-0.169014 -0.179456 0
+-0.37747 -0.336405 0
+-0.822588 -0.553765 0
+-0.0134327 -0.809157 0
+0.960163 -0.973598 0
+1.93353 -0.97337 0
+2.75404 -0.820513 0
+3.32761 -0.573578 0
+3.6334 -0.30579 0
+3.71196 -0.0785665 0
+3.63791 0.0740466 0
+3.49048 0.147427 0
+3.33246 0.158013 0
+3.2015 0.130959 0
+3.11181 0.0896868 0
+3.06151 0.0502917 0
+3.04088 0.0206313 0
+3.0386 0.00227251 0
+3.04532 -0.00671872 0
+3.05476 -0.00944451 0
+3.06353 -0.00876806 0
+3.07027 -0.00674246 0
+3.07484 -0.00457079 0
+3.07764 -0.00280497 0
+3.07923 -0.0015911 0
+3.0801 -0.000870229 0
+3.08061 -0.000510185 0
+3.08098 -0.00037721 0
+3.08135 -0.000366068 0
+3.08175 -0.00040629 0
+3.08221 -0.00045718 0
+3.0827 -0.000499235 0
+3.08323 -0.000525924 0
+3.08377 -0.000537331 0
+3.0843 -0.00053594 0
+3.08482 -0.000524285 0
+3.08533 -0.000504062 0
+3.0858 -0.000476502 0
+3.08625 -0.000444034 0
+3.08666 -0.000413382 0
+3.08706 -0.000399726 0
+3.08749 -0.000430112 0
+3.08803 -0.000541633 0
+3.0888 -0.000767147 0
+3.0899 -0.00110142 0
+3.09135 -0.00144801 0
+3.09291 -0.00156511 0
+3.09396 -0.00105312 0
+3.09341 0.000557708 0
+3.08983 0.00357975 0
+3.082 0.00783126 0
+3.06967 0.0123284 0
+3.05444 0.0152271 0
+3.04023 0.0142069 0
+3.03292 0.00730848 0
+3.03897 -0.00604346 0
+3.06327 -0.0242995 0
+3.10703 -0.0437666 0
+3.16649 -0.0594562 0
+3.23304 -0.0665523 0
+3.29502 -0.061974 0
+3.3405 -0.0454813 0
+3.36044 -0.0199448 0
+3.35112 0.00932123 0
+3.31515 0.0359762 0
+3.26076 0.0543914 0
+3.19958 0.0611771 0
+3.14355 0.056032 0
+3.10189 0.0416576 0
+3.07912 0.0227666 0
+3.07461 0.00451428 0
+3.0837 -0.00908448 0
+3.09986 -0.0161659 0
+3.11699 -0.017125 0
+3.1309 -0.0139135 0
+3.13987 -0.00896965 0
+3.14416 -0.00429234 0
+3.14514 -0.00098012 0
+3.1444 0.000744601 0
+3.14318 0.00121911 0
+3.14221 0.000972307 0
+3.14174 0.000465239 0
+3.14176 -1.60947e-05 0
+3.14211 -0.000353577 0
+3.14265 -0.000538484 0
+3.14326 -0.000610606 0
+3.14388 -0.000617501 0
+3.14448 -0.000595918 0
+3.14505 -0.000568179 0
+3.14559 -0.000545454 0
+3.14612 -0.000532556 0
+3.14666 -0.000531824 0
+3.1472 -0.000545432 0
+3.14778 -0.000576151 0
+3.1484 -0.000626625 0
+3.1491 -0.000697008 0
+3.14988 -0.000780665 0
+3.15074 -0.000857757 0
+3.15163 -0.000887091 0
+3.15242 -0.000797907 0
+3.15291 -0.000485716 0
+3.15273 0.000179949 0
+3.15141 0.00132286 0
+3.14842 0.00298456 0
+3.14344 0.00498706 0
+3.13671 0.00672568 0
+3.12979 0.00691799 0
+3.12639 0.00340331 0
+3.1332 -0.00681232 0
+3.16017 -0.0269739 0
+3.21934 -0.0591664 0
+3.32136 -0.102017 0
+3.46939 -0.148031 0
+3.6513 -0.181908 0
+3.83314 -0.181843 0
+3.95867 -0.125531 0
+3.95947 -0.000795344 0
+3.77707 0.182393 0
+3.39253 0.384549 0
+2.85228 0.540248 0
+2.27692 0.575353 0
+1.83973 0.437189 0
+1.67748 0.162253 0
+1.47393 0.209511 0
+1.10686 0.369309 0
+1.10686 0.963788 0
+-0.883524 -0.667048 0
+-1.83111 -1.21497 0
+-3.78376 -2.01019 0
+-1.60536 -2.98757 0
+1.07495 -3.65391 0
+3.75064 -3.64907 0
+5.92509 -2.99498 0
+7.29724 -1.94574 0
+7.82443 -0.832997 0
+7.67661 0.0692364 0
+7.12932 0.621323 0
+6.45352 0.823213 0
+5.84374 0.767777 0
+5.39659 0.578098 0
+5.12742 0.358848 0
+5.0035 0.174201 0
+4.97545 0.0486625 0
+4.99791 -0.0201919 0
+5.03845 -0.0472709 0
+5.07843 -0.0494392 0
+5.10979 -0.0401313 0
+5.13094 -0.0279041 0
+5.14348 -0.0171132 0
+5.14995 -0.00928632 0
+5.15276 -0.00440504 0
+5.15369 -0.00181011 0
+5.1539 -0.000724504 0
+5.15401 -0.00049481 0
+5.1543 -0.000662376 0
+5.15484 -0.000949559 0
+5.1556 -0.00121438 0
+5.1565 -0.00140209 0
+5.15747 -0.00150578 0
+5.15847 -0.00153911 0
+5.15945 -0.00151959 0
+5.16038 -0.00146004 0
+5.16124 -0.00136579 0
+5.162 -0.00123628 0
+5.16263 -0.0010719 0
+5.1631 -0.000888167 0
+5.16344 -0.000738206 0
+5.16374 -0.00073884 0
+5.16428 -0.00108184 0
+5.16551 -0.00199314 0
+5.168 -0.00359258 0
+5.17218 -0.00563038 0
+5.17777 -0.0071597 0
+5.18306 -0.00634284 0
+5.18433 -0.00071049 0
+5.17607 0.0118417 0
+5.15254 0.031359 0
+5.11081 0.0540567 0
+5.05441 0.0716294 0
+4.99584 0.0727775 0
+4.95594 0.0472022 0
+4.95908 -0.00918315 0
+5.02505 -0.0902637 0
+5.1606 -0.179319 0
+5.35416 -0.253018 0
+5.57613 -0.288515 0
+5.78512 -0.27097 0
+5.93845 -0.19881 0
+6.00352 -0.0850152 0
+5.96686 0.0459906 0
+5.83788 0.164955 0
+5.64634 0.245927 0
+5.43411 0.273409 0
+5.24379 0.246359 0
+5.10762 0.177828 0
+5.04011 0.0902713 0
+5.03665 0.00798464 0
+5.07817 -0.050611 0
+5.13982 -0.0778107 0
+5.19956 -0.0768607 0
+5.24377 -0.0581254 0
+5.26838 -0.0335803 0
+5.27643 -0.0123355 0
+5.27417 0.00127644 0
+5.26777 0.00715019 0
+5.26143 0.00755762 0
+5.25713 0.00527564 0
+5.25516 0.00242977 0
+5.255 0.000151095 0
+5.25588 -0.0012397 0
+5.25722 -0.00187239 0
+5.25863 -0.00202178 0
+5.25995 -0.0019353 0
+5.26113 -0.00177513 0
+5.26218 -0.00162452 0
+5.26315 -0.00151581 0
+5.26408 -0.00145722 0
+5.265 -0.00145124 0
+5.26596 -0.00150438 0
+5.26701 -0.00163047 0
+5.26823 -0.00184827 0
+5.26971 -0.00217273 0
+5.27153 -0.00259767 0
+5.27374 -0.00306795 0
+5.27629 -0.00344002 0
+5.27893 -0.00343459 0
+5.28104 -0.00259412 0
+5.28149 -0.000274624 0
+5.27854 0.00427314 0
+5.26988 0.0116455 0
+5.25313 0.0217372 0
+5.22705 0.0328006 0
+5.19385 0.0401246 0
+5.16262 0.0346299 0
+5.15362 0.00218824 0
+5.20154 -0.0748983 0
+5.35485 -0.212478 0
+5.66694 -0.414101 0
+6.17591 -0.657 0
+6.87434 -0.880341 0
+7.67839 -0.985894 0
+8.41436 -0.861503 0
+8.84315 -0.429585 0
+8.73209 0.293458 0
+7.95854 1.1581 0
+6.60052 1.89826 0
+4.95386 2.22201 0
+3.4251 1.96595 0
+2.28506 1.30229 0
+1.4526 1.0672 0
+0.854749 0.976841 0
+0.854749 1.81612 0
+-1.96171 -1.24488 0
+-4.02257 -2.28641 0
+-8.2226 -3.83098 0
+-5.41536 -5.79481 0
+-1.90994 -7.15934 0
+1.48861 -7.04765 0
+3.96525 -5.47164 0
+5.06442 -3.04494 0
+4.81569 -0.584293 0
+3.625 1.2599 0
+2.04244 2.20385 0
+0.542587 2.32304 0
+-0.595148 1.90549 0
+-1.29409 1.27702 0
+-1.61709 0.681821 0
+-1.68613 0.243219 0
+-1.62132 -0.016164 0
+-1.51063 -0.130899 0
+-1.40457 -0.153357 0
+-1.32414 -0.12988 0
+-1.27239 -0.091895 0
+-1.244 -0.0563116 0
+-1.23144 -0.0296907 0
+-1.22804 -0.0127017 0
+-1.22902 -0.0034371 0
+-1.23146 0.000618881 0
+-1.23385 0.00165705 0
+-1.2356 0.00124517 0
+-1.23662 0.00034919 0
+-1.23706 -0.000525034 0
+-1.23711 -0.00117264 0
+-1.23696 -0.00155827 0
+-1.23674 -0.00172435 0
+-1.23656 -0.00173459 0
+-1.23644 -0.0016433 0
+-1.23642 -0.00148226 0
+-1.23653 -0.00125723 0
+-1.23682 -0.000950414 0
+-1.23737 -0.00053221 0
+-1.23827 9.37172e-06 0
+-1.23962 0.000610608 0
+-1.2414 0.0010423 0
+-1.24331 0.00081968 0
+-1.24451 -0.000792903 0
+-1.24358 -0.00452443 0
+-1.23878 -0.0104379 0
+-1.22903 -0.016906 0
+-1.2157 -0.0196704 0
+-1.2045 -0.0119171 0
+-1.20622 0.0135671 0
+-1.2347 0.0598326 0
+-1.30084 0.120197 0
+-1.40419 0.174979 0
+-1.52573 0.194316 0
+-1.62704 0.148513 0
+-1.65901 0.0227899 0
+-1.57854 -0.170733 0
+-1.36685 -0.391011 0
+-1.04132 -0.57855 0
+-0.655449 -0.674383 0
+-0.286614 -0.639803 0
+-0.0156666 -0.469756 0
+0.0952934 -0.195974 0
+0.0204107 0.120875 0
+-0.222469 0.407836 0
+-0.57671 0.60017 0
+-0.962709 0.659411 0
+-1.29997 0.583626 0
+-1.52898 0.406838 0
+-1.62597 0.187263 0
+-1.60541 -0.0125706 0
+-1.50939 -0.146634 0
+-1.38883 -0.19837 0
+-1.28521 -0.180472 0
+-1.22016 -0.123181 0
+-1.19522 -0.0585158 0
+-1.1991 -0.00845114 0
+-1.21677 0.0189479 0
+-1.23614 0.0265255 0
+-1.2507 0.0221121 0
+-1.25882 0.0134023 0
+-1.26176 0.00537163 0
+-1.26164 2.8588e-05 0
+-1.26026 -0.00261216 0
+-1.25875 -0.00338359 0
+-1.25758 -0.00318691 0
+-1.25686 -0.00265824 0
+-1.2565 -0.00213361 0
+-1.25639 -0.00173825 0
+-1.25641 -0.00148866 0
+-1.2565 -0.00136506 0
+-1.2566 -0.0013516 0
+-1.25665 -0.00145476 0
+-1.25657 -0.00170911 0
+-1.25625 -0.0021743 0
+-1.2555 -0.00292057 0
+-1.2541 -0.00399643 0
+-1.2518 -0.00537025 0
+-1.2484 -0.0068374 0
+-1.24394 -0.00789021 0
+-1.23897 -0.0075636 0
+-1.23495 -0.00430262 0
+-1.23471 0.00404036 0
+-1.24294 0.0198731 0
+-1.26607 0.0448694 0
+-1.31118 0.0779034 0
+-1.38265 0.111599 0
+-1.47574 0.127713 0
+-1.5664 0.0928521 0
+-1.59932 -0.0419732 0
+-1.47943 -0.332373 0
+-1.07679 -0.816744 0
+-0.256382 -1.47741 0
+1.06207 -2.19879 0
+2.82633 -2.75016 0
+4.79204 -2.82721 0
+6.53203 -2.16958 0
+7.55033 -0.724838 0
+7.48255 1.22588 0
+6.29363 3.08717 0
+4.34567 4.16997 0
+2.25256 4.05906 0
+0.586008 2.96884 0
+-0.185499 1.8983 0
+-0.347326 1.16206 0
+-0.347326 1.82038 0
+-2.91602 -1.66054 0
+-6.04894 -3.09731 0
+-12.4846 -5.25618 0
+-10.2277 -8.0517 0
+-7.4573 -9.92976 0
+-5.08959 -9.41538 0
+-4.02602 -6.53525 0
+-4.65372 -2.41728 0
+-6.70206 1.46401 0
+-9.45697 4.01476 0
+-12.1369 4.88378 0
+-14.199 4.38506 0
+-15.4507 3.15715 0
+-15.9851 1.81137 0
+-16.0355 0.732194 0
+-15.8438 0.0515401 0
+-15.5877 -0.272325 0
+-15.3644 -0.354178 0
+-15.2085 -0.309362 0
+-15.1176 -0.220761 0
+-15.075 -0.13453 0
+-15.0621 -0.0692355 0
+-15.0644 -0.027432 0
+-15.0725 -0.00462711 0
+-15.0813 0.00537847 0
+-15.0887 0.00799527 0
+-15.0941 0.00707063 0
+-15.0978 0.00495734 0
+-15.1004 0.0028814 0
+-15.1023 0.00133725 0
+-15.1039 0.000409143 0
+-15.1054 -6.62496e-06 0
+-15.1071 -6.97186e-05 0
+-15.1089 7.4001e-05 0
+-15.1109 0.000323677 0
+-15.113 0.000630371 0
+-15.1153 0.000996143 0
+-15.1177 0.00147472 0
+-15.1204 0.00216598 0
+-15.1236 0.00318629 0
+-15.1275 0.00458271 0
+-15.1327 0.00614941 0
+-15.139 0.00715379 0
+-15.1459 0.00611677 0
+-15.1514 0.000983572 0
+-15.152 -0.00985436 0
+-15.1435 -0.0254393 0
+-15.1236 -0.0395998 0
+-15.0958 -0.0396263 0
+-15.0733 -0.00898196 0
+-15.0777 0.0641929 0
+-15.1321 0.174625 0
+-15.2474 0.290268 0
+-15.4077 0.354618 0
+-15.5651 0.305957 0
+-15.6504 0.108019 0
+-15.5976 -0.223533 0
+-15.3731 -0.615418 0
+-14.9942 -0.957475 0
+-14.5284 -1.14021 0
+-14.0762 -1.09197 0
+-13.7435 -0.802438 0
+-13.612 -0.327522 0
+-13.716 0.224848 0
+-14.0326 0.724449 0
+-14.4879 1.0555 0
+-14.9775 1.14898 0
+-15.3953 1.00148 0
+-15.664 0.675513 0
+-15.7563 0.279538 0
+-15.6994 -0.0694359 0
+-15.5586 -0.287445 0
+-15.4072 -0.349784 0
+-15.2986 -0.289064 0
+-15.2528 -0.16897 0
+-15.2603 -0.050982 0
+-15.2969 0.0281556 0
+-15.3388 0.0607896 0
+-15.3711 0.0589057 0
+-15.3897 0.0406304 0
+-15.3967 0.0204723 0
+-15.3972 0.00582738 0
+-15.3953 -0.00187852 0
+-15.3935 -0.00434152 0
+-15.393 -0.00395686 0
+-15.3936 -0.00256543 0
+-15.3951 -0.00117165 0
+-15.3971 -0.000142856 0
+-15.3993 0.000493525 0
+-15.4016 0.000831428 0
+-15.4039 0.000970589 0
+-15.4063 0.000969442 0
+-15.4085 0.000830762 0
+-15.4107 0.000497952 0
+-15.4128 -0.000144996 0
+-15.4144 -0.00126307 0
+-15.4154 -0.00303647 0
+-15.4152 -0.00558723 0
+-15.4132 -0.00884367 0
+-15.4087 -0.0123198 0
+-15.4015 -0.0147997 0
+-15.3919 -0.0139505 0
+-15.3818 -0.00597333 0
+-15.3764 0.0144228 0
+-15.3847 0.0531595 0
+-15.4209 0.114118 0
+-15.5028 0.193495 0
+-15.6455 0.270399 0
+-15.8474 0.294752 0
+-16.0671 0.177712 0
+-16.1953 -0.204148 0
+-16.0366 -0.975472 0
+-15.3245 -2.18944 0
+-13.795 -3.72829 0
+-11.3176 -5.22755 0
+-8.0405 -6.10435 0
+-4.45779 -5.75228 0
+-1.31012 -3.87251 0
+0.693703 -0.777946 0
+1.21556 2.56531 0
+0.483323 4.90222 0
+-0.804765 5.34715 0
+-1.80375 3.96783 0
+-1.68353 1.8873 0
+-1.11591 0.638366 0
+-1.11591 1.19816 0
+-3.40519 -1.80731 0
+-7.23052 -3.42048 0
+-15.2229 -5.85072 0
+-14.2878 -8.98675 0
+-13.3569 -10.8607 0
+-13.2339 -9.53844 0
+-14.5946 -5.1746 0
+-17.493 0.48108 0
+-21.2994 5.27042 0
+-25.0564 7.77169 0
+-27.9588 7.78616 0
+-29.6535 6.07972 0
+-30.2455 3.74905 0
+-30.1031 1.66893 0
+-29.6304 0.259514 0
+-29.1229 -0.455976 0
+-28.73 -0.66528 0
+-28.4872 -0.596989 0
+-28.3692 -0.427441 0
+-28.3321 -0.257893 0
+-28.3371 -0.129551 0
+-28.358 -0.0482981 0
+-28.3807 -0.00475758 0
+-28.3992 0.0138405 0
+-28.4122 0.0183723 0
+-28.4206 0.0163667 0
+-28.4258 0.0122936 0
+-28.4293 0.00840901 0
+-28.432 0.00558598 0
+-28.4346 0.00393887 0
+-28.4375 0.00324415 0
+-28.4407 0.00319036 0
+-28.4443 0.00349411 0
+-28.4482 0.00394682 0
+-28.4523 0.00442817 0
+-28.4565 0.00489182 0
+-28.4609 0.00535239 0
+-28.4653 0.00589616 0
+-28.4699 0.00669788 0
+-28.4747 0.00802547 0
+-28.4803 0.0101865 0
+-28.4875 0.013299 0
+-28.4971 0.0167916 0
+-28.5098 0.018738 0
+-28.5243 0.0154947 0
+-28.5367 0.00255749 0
+-28.5397 -0.022392 0
+-28.525 -0.0543826 0
+-28.488 -0.0765712 0
+-28.4357 -0.0612776 0
+-28.39 0.0184624 0
+-28.3829 0.167509 0
+-28.4405 0.347921 0
+-28.5623 0.476425 0
+-28.7087 0.452291 0
+-28.8093 0.208677 0
+-28.7924 -0.240474 0
+-28.6184 -0.789429 0
+-28.3003 -1.2756 0
+-27.9003 -1.54022 0
+-27.5097 -1.48248 0
+-27.2234 -1.08875 0
+-27.1144 -0.436569 0
+-27.2141 0.324582 0
+-27.5036 1.01395 0
+-27.9183 1.47023 0
+-28.365 1.59568 0
+-28.7458 1.38221 0
+-28.9861 0.915887 0
+-29.0607 0.354129 0
+-29.0017 -0.128425 0
+-28.8815 -0.407719 0
+-28.7762 -0.455016 0
+-28.733 -0.332259 0
+-28.7571 -0.144869 0
+-28.823 0.0148669 0
+-28.8963 0.101541 0
+-28.9527 0.11711 0
+-28.9835 0.0897661 0
+-28.9932 0.0502792 0
+-28.991 0.018287 0
+-28.9854 0.000239466 0
+-28.9813 -0.0059672 0
+-28.9803 -0.00534309 0
+-28.982 -0.00222017 0
+-28.9855 0.000917613 0
+-28.9898 0.00315918 0
+-28.9944 0.00446414 0
+-28.999 0.00509626 0
+-29.0035 0.00533199 0
+-29.0079 0.00536412 0
+-29.0123 0.00529032 0
+-29.0165 0.00512451 0
+-29.0209 0.0048018 0
+-29.0252 0.00416946 0
+-29.0294 0.00297995 0
+-29.0333 0.000904499 0
+-29.0365 -0.00241593 0
+-29.0381 -0.00724629 0
+-29.0369 -0.0135123 0
+-29.0313 -0.0203889 0
+-29.0196 -0.0256766 0
+-29.0006 -0.0249795 0
+-28.9753 -0.0108862 0
+-28.9494 0.027246 0
+-28.9369 0.101625 0
+-28.9637 0.220258 0
+-29.0675 0.374234 0
+-29.2891 0.516378 0
+-29.6464 0.535021 0
+-30.0886 0.237998 0
+-30.44 -0.624004 0
+-30.3674 -2.26208 0
+-29.419 -4.67668 0
+-27.1749 -7.47162 0
+-23.4819 -9.79737 0
+-18.6572 -10.5769 0
+-13.4983 -9.03151 0
+-9.00752 -5.26868 0
+-5.93324 -0.508966 0
+-4.39513 3.3641 0
+-3.85067 4.80269 0
+-3.42549 3.54265 0
+-2.22606 0.860072 0
+-1.13327 -0.383347 0
+-1.13327 0.424455 0
+-3.40618 -1.72443 0
+-7.44468 -3.29382 0
+-16.0298 -5.62991 0
+-16.4703 -8.5463 0
+-17.4778 -9.85323 0
+-19.5632 -7.45312 0
+-22.9465 -1.79135 0
+-27.2208 4.75541 0
+-31.4666 9.51611 0
+-34.7303 11.0354 0
+-36.4972 9.55294 0
+-36.8461 6.42861 0
+-36.267 3.16994 0
+-35.3392 0.741094 0
+-34.4877 -0.592041 0
+-33.9056 -1.03807 0
+-33.6043 -0.966664 0
+-33.5059 -0.695362 0
+-33.5186 -0.414741 0
+-33.5732 -0.203328 0
+-33.6305 -0.0722549 0
+-33.6746 -0.00423711 0
+-33.7028 0.0234384 0
+-33.7183 0.0292778 0
+-33.7255 0.0255157 0
+-33.7282 0.0190828 0
+-33.7292 0.0132699 0
+-33.73 0.00923188 0
+-33.7315 0.00703666 0
+-33.7338 0.00627842 0
+-33.737 0.00644443 0
+-33.741 0.00710448 0
+-33.7454 0.00794551 0
+-33.7503 0.00876952 0
+-33.7553 0.00949343 0
+-33.7606 0.0101038 0
+-33.7658 0.0106226 0
+-33.7711 0.0111363 0
+-33.7762 0.0118349 0
+-33.7813 0.0130672 0
+-33.7865 0.0154084 0
+-33.7928 0.019532 0
+-33.8016 0.0256224 0
+-33.8151 0.0322569 0
+-33.8347 0.035113 0
+-33.8589 0.0267324 0
+-33.8807 -0.000641589 0
+-33.8871 -0.0479709 0
+-33.8633 -0.100339 0
+-33.8015 -0.123089 0
+-33.7104 -0.0726709 0
+-33.6174 0.074487 0
+-33.5569 0.287467 0
+-33.5484 0.467907 0
+-33.5783 0.482241 0
+-33.6032 0.233578 0
+-33.5747 -0.268986 0
+-33.4693 -0.894834 0
+-33.2999 -1.44506 0
+-33.1035 -1.7366 0
+-32.9227 -1.66325 0
+-32.7956 -1.21587 0
+-32.7511 -0.481099 0
+-32.8032 0.376706 0
+-32.9474 1.15813 0
+-33.1618 1.68465 0
+-33.4106 1.84449 0
+-33.6465 1.61806 0
+-33.8214 1.09078 0
+-33.9106 0.443339 0
+-33.9308 -0.108247 0
+-33.9313 -0.407158 0
+-33.9623 -0.423982 0
+-34.0442 -0.250382 0
+-34.1608 -0.0283008 0
+-34.2766 0.130694 0
+-34.3613 0.186266 0
+-34.404 0.159745 0
+-34.412 0.0978153 0
+-34.4015 0.0397913 0
+-34.3871 0.00388696 0
+-34.3771 -0.00975332 0
+-34.3737 -0.00935667 0
+-34.3756 -0.00345223 0
+-34.3805 0.00265837 0
+-34.3865 0.00693822 0
+-34.3926 0.00929148 0
+-34.3985 0.0103126 0
+-34.404 0.0105971 0
+-34.4092 0.0105407 0
+-34.4142 0.0103591 0
+-34.419 0.010145 0
+-34.4238 0.00991225 0
+-34.4286 0.00961047 0
+-34.4336 0.00910021 0
+-34.4387 0.00812354 0
+-34.4441 0.00629115 0
+-34.4496 0.0030826 0
+-34.4547 -0.00209822 0
+-34.4585 -0.00975006 0
+-34.459 -0.0199302 0
+-34.453 -0.0316289 0
+-34.4363 -0.0417169 0
+-34.4037 -0.0434438 0
+-34.3517 -0.0247744 0
+-34.2825 0.0324111 0
+-34.2119 0.149686 0
+-34.1789 0.341224 0
+-34.2511 0.588582 0
+-34.5145 0.798434 0
+-35.0313 0.75479 0
+-35.7591 0.103774 0
+-36.4546 -1.56653 0
+-36.6282 -4.50318 0
+-35.6339 -8.46588 0
+-32.9326 -12.4987 0
+-28.431 -15.0785 0
+-22.6806 -14.7819 0
+-16.731 -11.2183 0
+-11.6513 -5.58862 0
+-8.00112 -0.286117 0
+-5.6161 2.41767 0
+-3.86277 1.78933 0
+-1.96961 -0.787814 0
+-0.74403 -1.50497 0
+-0.74403 -0.18322 0
+-3.09698 -1.51234 0
+-6.95801 -2.89135 0
+-15.2592 -4.88313 0
+-16.6134 -7.19207 0
+-18.8579 -7.60873 0
+-22.1198 -4.19128 0
+-26.1176 2.20643 0
+-30.0833 8.7211 0
+-33.0715 12.5042 0
+-34.4641 12.428 0
+-34.2794 9.36821 0
+-33.0769 5.22609 0
+-31.5878 1.68085 0
+-30.3623 -0.484472 0
+-29.6251 -1.32924 0
+-29.3358 -1.32741 0
+-29.333 -0.969429 0
+-29.4551 -0.573325 0
+-29.5949 -0.274959 0
+-29.7033 -0.0948888 0
+-29.77 -0.00560212 0
+-29.8025 0.0282722 0
+-29.8132 0.034029 0
+-29.8123 0.0284529 0
+-29.8072 0.0203641 0
+-29.8018 0.0136241 0
+-29.7978 0.00933602 0
+-29.796 0.00735097 0
+-29.7961 0.00709767 0
+-29.7977 0.00789906 0
+-29.8004 0.00918414 0
+-29.8039 0.010602 0
+-29.808 0.0119365 0
+-29.8123 0.0130632 0
+-29.8168 0.0139836 0
+-29.8214 0.014742 0
+-29.8261 0.015355 0
+-29.8309 0.015882 0
+-29.8355 0.0164579 0
+-29.8398 0.017345 0
+-29.8436 0.0191664 0
+-29.8471 0.0230287 0
+-29.8516 0.0301146 0
+-29.8598 0.0404833 0
+-29.8757 0.0509675 0
+-29.9021 0.0531597 0
+-29.9371 0.0343569 0
+-29.9696 -0.0154553 0
+-29.979 -0.0909729 0
+-29.9413 -0.160727 0
+-29.8422 -0.171827 0
+-29.6874 -0.0802998 0
+-29.5029 0.102935 0
+-29.3201 0.285158 0
+-29.159 0.321109 0
+-29.024 0.0985556 0
+-28.9183 -0.374652 0
+-28.8583 -0.954822 0
+-28.8658 -1.43765 0
+-28.941 -1.66135 0
+-29.0497 -1.55459 0
+-29.1426 -1.12298 0
+-29.1831 -0.440547 0
+-29.1591 0.352715 0
+-29.0853 1.08433 0
+-29.0021 1.60137 0
+-28.9624 1.80481 0
+-29.0012 1.65686 0
+-29.1128 1.20239 0
+-29.2673 0.597895 0
+-29.443 0.0674537 0
+-29.6368 -0.213366 0
+-29.8482 -0.212594 0
+-30.0608 -0.0378221 0
+-30.2431 0.153994 0
+-30.3667 0.254339 0
+-30.4234 0.242952 0
+-30.4272 0.163597 0
+-30.4038 0.0743692 0
+-30.3762 0.0121832 0
+-30.3574 -0.0148942 0
+-30.3503 -0.0168578 0
+-30.3519 -0.00776738 0
+-30.3578 0.00248515 0
+-30.3649 0.00972354 0
+-30.3715 0.013557 0
+-30.3773 0.015065 0
+-30.3823 0.015378 0
+-30.3869 0.0151903 0
+-30.3912 0.0148285 0
+-30.3953 0.0144306 0
+-30.3992 0.0140379 0
+-30.4029 0.013651 0
+-30.4065 0.0132524 0
+-30.4102 0.0127572 0
+-30.414 0.0119695 0
+-30.4183 0.0105671 0
+-30.4233 0.00805439 0
+-30.4291 0.00373466 0
+-30.4357 -0.00322085 0
+-30.442 -0.0136168 0
+-30.4457 -0.0278723 0
+-30.4422 -0.0451923 0
+-30.4236 -0.0620712 0
+-30.3784 -0.0699888 0
+-30.2935 -0.0524711 0
+-30.1607 0.0168759 0
+-29.9901 0.170574 0
+-29.8299 0.428385 0
+-29.7832 0.751789 0
+-29.9987 0.970299 0
+-30.6065 0.711524 0
+-31.5909 -0.582135 0
+-32.6494 -3.44466 0
+-33.1522 -7.96305 0
+-32.3181 -13.3328 0
+-29.5973 -17.7993 0
+-25.0533 -19.3259 0
+-19.4475 -16.8241 0
+-13.891 -11.1451 0
+-9.27135 -4.90578 0
+-5.86852 -0.985162 0
+-3.44172 -0.637472 0
+-1.39863 -2.50592 0
+-0.338455 -2.42369 0
+-0.338455 -0.533338 0
+-2.6721 -1.26161 0
+-6.12047 -2.39177 0
+-13.55 -3.94437 0
+-15.2219 -5.52018 0
+-17.7708 -5.05979 0
+-20.9588 -1.00331 0
+-24.1413 5.38882 0
+-26.4551 11.0349 0
+-27.2455 13.2946 0
+-26.4495 11.632 0
+-24.6239 7.54267 0
+-22.5994 3.20151 0
+-21.04 0.121441 0
+-20.2067 -1.31776 0
+-20.0009 -1.53507 0
+-20.16 -1.16828 0
+-20.4373 -0.692171 0
+-20.6838 -0.326911 0
+-20.8459 -0.112836 0
+-20.9278 -0.0130469 0
+-20.9545 0.0211077 0
+-20.9514 0.0251754 0
+-20.9364 0.0190073 0
+-20.9195 0.0115915 0
+-20.9054 0.00624794 0
+-20.8955 0.00366852 0
+-20.8895 0.00332774 0
+-20.8866 0.00445728 0
+-20.886 0.0064499 0
+-20.8868 0.00874014 0
+-20.8886 0.010918 0
+-20.8909 0.0128691 0
+-20.8935 0.0145352 0
+-20.8963 0.015852 0
+-20.8992 0.0169195 0
+-20.9023 0.0178519 0
+-20.9056 0.0186385 0
+-20.9091 0.0193247 0
+-20.9126 0.0200006 0
+-20.916 0.0207185 0
+-20.9187 0.0218615 0
+-20.9202 0.0245338 0
+-20.9206 0.0304701 0
+-20.9214 0.0413114 0
+-20.9269 0.056459 0
+-20.9433 0.0695209 0
+-20.9752 0.0663241 0
+-21.0198 0.0290767 0
+-21.0599 -0.0508854 0
+-21.0641 -0.156467 0
+-20.9965 -0.2395 0
+-20.8328 -0.243969 0
+-20.5748 -0.155108 0
+-20.2511 -0.0384882 0
+-19.9088 -0.0211582 0
+-19.605 -0.205279 0
+-19.4047 -0.574951 0
+-19.3727 -0.986869 0
+-19.5421 -1.26825 0
+-19.8732 -1.33022 0
+-20.2499 -1.17787 0
+-20.5409 -0.832035 0
+-20.6552 -0.326243 0
+-20.5593 0.256816 0
+-20.2806 0.805671 0
+-19.9092 1.22998 0
+-19.5826 1.47815 0
+-19.4249 1.49914 0
+-19.4792 1.25669 0
+-19.71 0.82873 0
+-20.0486 0.406029 0
+-20.4271 0.165187 0
+-20.7871 0.147398 0
+-21.0794 0.25444 0
+-21.2718 0.346419 0
+-21.36 0.342555 0
+-21.3679 0.250784 0
+-21.3339 0.129595 0
+-21.293 0.0335015 0
+-21.2652 -0.0156429 0
+-21.2547 -0.0253614 0
+-21.2567 -0.0148408 0
+-21.2642 -0.000235799 0
+-21.2723 0.0105907 0
+-21.2789 0.016308 0
+-21.2838 0.0184181 0
+-21.2875 0.0187441 0
+-21.2905 0.0184499 0
+-21.2933 0.0179881 0
+-21.296 0.0174681 0
+-21.2985 0.016926 0
+-21.3008 0.01635 0
+-21.3028 0.0157217 0
+-21.3046 0.0150618 0
+-21.3062 0.0143427 0
+-21.3077 0.0134398 0
+-21.3093 0.0121637 0
+-21.3114 0.0101825 0
+-21.3146 0.00693327 0
+-21.3195 0.00165373 0
+-21.3265 -0.00662484 0
+-21.3353 -0.0190598 0
+-21.3439 -0.0366202 0
+-21.3467 -0.0592122 0
+-21.3327 -0.0840404 0
+-21.2826 -0.102555 0
+-21.1698 -0.0959447 0
+-20.9676 -0.0316406 0
+-20.6701 0.130928 0
+-20.327 0.40868 0
+-20.0762 0.719519 0
+-20.1369 0.772216 0
+-20.717 -0.00207047 0
+-21.8335 -2.32816 0
+-23.1385 -6.65803 0
+-23.9175 -12.5538 0
+-23.3684 -18.3484 0
+-21.0555 -21.6389 0
+-17.2239 -20.6557 0
+-12.7038 -15.6653 0
+-8.44642 -9.16316 0
+-5.05622 -4.37536 0
+-2.67719 -3.01651 0
+-0.874008 -3.90001 0
+-0.0934232 -3.02169 0
+-0.0934232 -0.670029 0
+-2.24967 -1.02665 0
+-5.19009 -1.91492 0
+-11.4817 -3.05431 0
+-13.0198 -3.98214 0
+-15.1791 -2.90049 0
+-17.4674 1.285 0
+-19.1108 7.03213 0
+-19.429 11.3531 0
+-18.245 12.1105 0
+-16.028 9.41493 0
+-13.6315 5.14616 0
+-11.8172 1.38725 0
+-10.914 -0.781824 0
+-10.8004 -1.43131 0
+-11.1267 -1.2088 0
+-11.5591 -0.735884 0
+-11.9042 -0.347098 0
+-12.1067 -0.124457 0
+-12.1902 -0.0293811 0
+-12.2011 -0.00211949 0
+-12.1788 -0.001178 0
+-12.1476 -0.0060338 0
+-12.1192 -0.00941457 0
+-12.0975 -0.0101606 0
+-12.0826 -0.00869082 0
+-12.0733 -0.00565051 0
+-12.068 -0.00195271 0
+-12.0653 0.00179509 0
+-12.0643 0.00544583 0
+-12.0643 0.00872214 0
+-12.0648 0.0113981 0
+-12.0656 0.0136471 0
+-12.0666 0.0155441 0
+-12.0678 0.0169937 0
+-12.0691 0.0181933 0
+-12.0706 0.0193381 0
+-12.0723 0.0203411 0
+-12.0742 0.0212732 0
+-12.0765 0.0222894 0
+-12.079 0.0232435 0
+-12.0814 0.0241696 0
+-12.0827 0.0258185 0
+-12.0819 0.0296695 0
+-12.0785 0.0379924 0
+-12.0747 0.0526031 0
+-12.076 0.0708514 0
+-12.0909 0.0811992 0
+-12.125 0.0631209 0
+-12.1717 -0.0041542 0
+-12.2045 -0.1237 0
+-12.1782 -0.265726 0
+-12.0455 -0.376751 0
+-11.7802 -0.420356 0
+-11.398 -0.420733 0
+-10.9606 -0.458521 0
+-10.5665 -0.599428 0
+-10.3299 -0.811569 0
+-10.3482 -0.968503 0
+-10.6532 -0.963291 0
+-11.1638 -0.81964 0
+-11.6983 -0.643372 0
+-12.0887 -0.441619 0
+-12.2369 -0.178088 0
+-12.1067 0.126679 0
+-11.721 0.419919 0
+-11.172 0.680968 0
+-10.6349 0.941049 0
+-10.307 1.17124 0
+-10.2817 1.23144 0
+-10.5317 1.07867 0
+-10.9565 0.830824 0
+-11.4351 0.643824 0
+-11.8611 0.57337 0
+-12.1646 0.55799 0
+-12.3247 0.506555 0
+-12.366 0.383842 0
+-12.3389 0.22365 0
+-12.2933 0.0840101 0
+-12.2603 0.000453063 0
+-12.2484 -0.027467 0
+-12.2523 -0.0214998 0
+-12.2625 -0.00467809 0
+-12.2721 0.00945867 0
+-12.2788 0.0172299 0
+-12.2826 0.0201169 0
+-12.2847 0.0205342 0
+-12.2861 0.0201523 0
+-12.2874 0.0197023 0
+-12.2886 0.0192419 0
+-12.2898 0.0186841 0
+-12.2909 0.018045 0
+-12.2919 0.0172918 0
+-12.2925 0.0163766 0
+-12.2928 0.015358 0
+-12.2927 0.0142387 0
+-12.2922 0.012912 0
+-12.2913 0.0113031 0
+-12.2904 0.00925852 0
+-12.2899 0.00640073 0
+-12.2905 0.0022389 0
+-12.2932 -0.00389395 0
+-12.2992 -0.0130745 0
+-12.3091 -0.0267048 0
+-12.3221 -0.0462532 0
+-12.3332 -0.0728715 0
+-12.3298 -0.105988 0
+-12.2859 -0.139875 0
+-12.1596 -0.157947 0
+-11.9006 -0.128075 0
+-11.4791 -0.0127434 0
+-10.9391 0.179503 0
+-10.4497 0.282827 0
+-10.2967 -0.155099 0
+-10.7541 -1.87072 0
+-11.8582 -5.55398 0
+-13.231 -11.181 0
+-14.1497 -17.4297 0
+-13.9066 -21.8819 0
+-12.2425 -22.3197 0
+-9.51634 -18.3914 0
+-6.47295 -12.2065 0
+-3.81816 -7.03015 0
+-1.95375 -4.88092 0
+-0.536044 -4.82027 0
+-0.00915259 -3.32155 0
+-0.00915259 -0.674778 0
+-1.87459 -0.82951 0
+-4.30822 -1.51598 0
+-9.4479 -2.32864 0
+-10.6364 -2.79362 0
+-12.1164 -1.42051 0
+-13.2919 2.46047 0
+-13.4732 7.2134 0
+-12.3176 10.1975 0
+-10.1013 9.89418 0
+-7.59589 6.90952 0
+-5.62242 3.17269 0
+-4.61879 0.383601 0
+-4.51567 -0.884953 0
+-4.93032 -1.01667 0
+-5.46054 -0.678594 0
+-5.86636 -0.330076 0
+-6.08544 -0.128038 0
+-6.15768 -0.0522303 0
+-6.14851 -0.0385616 0
+-6.10856 -0.0420821 0
+-6.06538 -0.0443685 0
+-6.02993 -0.0415017 0
+-6.00441 -0.0349411 0
+-5.98735 -0.027239 0
+-5.97646 -0.0195914 0
+-5.96986 -0.0122649 0
+-5.96594 -0.00587736 0
+-5.96354 -0.000618105 0
+-5.96208 0.00397445 0
+-5.96119 0.00782486 0
+-5.96055 0.0107448 0
+-5.96011 0.013201 0
+-5.95993 0.0153503 0
+-5.95988 0.0169373 0
+-5.95997 0.0182752 0
+-5.96031 0.0196695 0
+-5.96084 0.0208683 0
+-5.96157 0.0219916 0
+-5.96268 0.0233974 0
+-5.96426 0.0248138 0
+-5.96613 0.0260378 0
+-5.96783 0.0275166 0
+-5.96813 0.0299627 0
+-5.96521 0.0350608 0
+-5.95821 0.0456059 0
+-5.94943 0.0620664 0
+-5.94563 0.0773888 0
+-5.95602 0.0735086 0
+-5.98398 0.0238035 0
+-6.01482 -0.0928686 0
+-6.0092 -0.271352 0
+-5.91246 -0.473488 0
+-5.68176 -0.651064 0
+-5.31937 -0.783131 0
+-4.89179 -0.886107 0
+-4.51956 -0.971658 0
+-4.33883 -0.992308 0
+-4.44725 -0.860091 0
+-4.84993 -0.56062 0
+-5.42382 -0.245748 0
+-5.94448 -0.122714 0
+-6.28888 -0.0972231 0
+-6.41562 -0.0513575 0
+-6.30792 0.0189812 0
+-5.96641 0.0784066 0
+-5.42176 0.136309 0
+-4.80148 0.32077 0
+-4.3508 0.72056 0
+-4.21289 1.09353 0
+-4.39302 1.25879 0
+-4.79211 1.22992 0
+-5.26372 1.11543 0
+-5.67339 0.98304 0
+-5.94273 0.82733 0
+-6.0635 0.627332 0
+-6.07948 0.399819 0
+-6.05072 0.194888 0
+-6.02251 0.0558049 0
+-6.01324 -0.00881134 0
+-6.02046 -0.0202467 0
+-6.03407 -0.00789445 0
+-6.04599 0.00725045 0
+-6.0532 0.016664 0
+-6.05634 0.0203711 0
+-6.0573 0.0210813 0
+-6.05753 0.0207645 0
+-6.05771 0.0203346 0
+-6.05805 0.020045 0
+-6.05848 0.0196707 0
+-6.05885 0.019055 0
+-6.0591 0.0183045 0
+-6.05919 0.0173807 0
+-6.05899 0.0161775 0
+-6.05843 0.0147981 0
+-6.05744 0.0132526 0
+-6.05591 0.0113779 0
+-6.05377 0.00916857 0
+-6.05111 0.00659627 0
+-6.04808 0.00336633 0
+-6.04505 -0.000787922 0
+-6.0428 -0.00614325 0
+-6.04248 -0.0133976 0
+-6.0456 -0.0235788 0
+-6.05389 -0.0379628 0
+-6.06819 -0.0585701 0
+-6.08574 -0.0884423 0
+-6.09455 -0.131068 0
+-6.0646 -0.187893 0
+-5.9404 -0.252277 0
+-5.64785 -0.305289 0
+-5.13294 -0.335409 0
+-4.43475 -0.415365 0
+-3.75268 -0.837168 0
+-3.42478 -2.19862 0
+-3.75847 -5.2203 0
+-4.77804 -10.1614 0
+-6.08639 -16.1213 0
+-7.01576 -20.9526 0
+-7.01606 -22.3194 0
+-5.99551 -19.412 0
+-4.34702 -13.855 0
+-2.6727 -8.70447 0
+-1.4663 -6.08732 0
+-0.389655 -5.30457 0
+-0.0263276 -3.40956 0
+-0.0263276 -0.616453 0
+-1.5544 -0.672698 0
+-3.53629 -1.20514 0
+-7.65838 -1.7876 0
+-8.47371 -1.9783 0
+-9.30893 -0.585301 0
+-9.5946 2.74613 0
+-8.84256 6.46134 0
+-7.04112 8.39607 0
+-4.74013 7.59318 0
+-2.73231 4.90169 0
+-1.57922 2.01959 0
+-1.34893 0.153304 0
+-1.7128 -0.5211 0
+-2.24327 -0.486209 0
+-2.65572 -0.266154 0
+-2.86725 -0.118565 0
+-2.92199 -0.0733074 0
+-2.89608 -0.0781506 0
+-2.84606 -0.0886004 0
+-2.79944 -0.0887187 0
+-2.76412 -0.0796928 0
+-2.73974 -0.0658986 0
+-2.72373 -0.0509616 0
+-2.7133 -0.0376879 0
+-2.70637 -0.0265301 0
+-2.7018 -0.0168467 0
+-2.69863 -0.00905842 0
+-2.69615 -0.00310784 0
+-2.69422 0.00203495 0
+-2.69272 0.00631424 0
+-2.69138 0.00939473 0
+-2.69026 0.0120679 0
+-2.68946 0.0145423 0
+-2.6888 0.0162749 0
+-2.68828 0.0177427 0
+-2.68803 0.0194126 0
+-2.68793 0.0207575 0
+-2.68788 0.0219412 0
+-2.68811 0.0236203 0
+-2.68871 0.0254063 0
+-2.68969 0.0270114 0
+-2.69111 0.0289296 0
+-2.69232 0.0311624 0
+-2.69147 0.0342065 0
+-2.68629 0.0404261 0
+-2.67561 0.0513767 0
+-2.66159 0.0633647 0
+-2.65106 0.0629721 0
+-2.6511 0.0238463 0
+-2.65786 -0.0861161 0
+-2.64557 -0.283649 0
+-2.56808 -0.550976 0
+-2.38155 -0.837605 0
+-2.08218 -1.08251 0
+-1.73413 -1.23416 0
+-1.45991 -1.24588 0
+-1.38835 -1.06387 0
+-1.5858 -0.662655 0
+-2.00978 -0.13664 0
+-2.50283 0.247293 0
+-2.80749 0.181945 0
+-2.96666 0.061951 0
+-3.02528 0.00725797 0
+-2.98615 -0.0201568 0
+-2.83435 -0.0733924 0
+-2.51093 -0.18711 0
+-1.967 -0.223163 0
+-1.48297 0.236529 0
+-1.24145 0.852013 0
+-1.30079 1.31813 0
+-1.5956 1.52473 0
+-1.98502 1.50484 0
+-2.32944 1.32746 0
+-2.55116 1.04905 0
+-2.64876 0.724937 0
+-2.66875 0.419807 0
+-2.66357 0.189715 0
+-2.66434 0.056571 0
+-2.6772 0.00405357 0
+-2.69495 -0.00249573 0
+-2.70966 0.00681386 0
+-2.71819 0.0157897 0
+-2.72151 0.0199831 0
+-2.72207 0.0209273 0
+-2.72185 0.0208702 0
+-2.72171 0.0206192 0
+-2.72174 0.0203736 0
+-2.72191 0.0202149 0
+-2.72206 0.0198218 0
+-2.72205 0.0190497 0
+-2.7219 0.0181549 0
+-2.7216 0.0170743 0
+-2.72102 0.0156022 0
+-2.72013 0.0139104 0
+-2.71889 0.0120114 0
+-2.71714 0.00962565 0
+-2.71476 0.00679323 0
+-2.71173 0.00357087 0
+-2.70798 -0.000382524 0
+-2.70353 -0.00524394 0
+-2.69865 -0.0110211 0
+-2.69387 -0.018176 0
+-2.6901 -0.0273465 0
+-2.68897 -0.0390931 0
+-2.69284 -0.0547 0
+-2.70424 -0.0770482 0
+-2.72336 -0.111948 0
+-2.74095 -0.170298 0
+-2.72557 -0.267663 0
+-2.61159 -0.41927 0
+-2.30677 -0.640224 0
+-1.74305 -0.979086 0
+-0.968055 -1.61217 0
+-0.21474 -2.95193 0
+0.150631 -5.58567 0
+-0.162505 -9.84828 0
+-1.12292 -15.1609 0
+-2.31281 -19.7627 0
+-3.15361 -21.4786 0
+-3.27418 -19.2914 0
+-2.72887 -14.4003 0
+-1.9103 -9.52303 0
+-1.27223 -6.7254 0
+-0.396752 -5.48198 0
+-0.0967753 -3.38064 0
+-0.0967753 -0.540888 0
+-1.28525 -0.550221 0
+-2.89139 -0.970193 0
+-6.18585 -1.40154 0
+-6.70528 -1.45889 0
+-7.08451 -0.206079 0
+-6.85547 2.51707 0
+-5.74299 5.34885 0
+-3.95359 6.60665 0
+-2.10027 5.73985 0
+-0.807317 3.60873 0
+-0.331541 1.5438 0
+-0.495402 0.317155 0
+-0.915172 -0.10134 0
+-1.27771 -0.123684 0
+-1.46326 -0.0806155 0
+-1.50094 -0.0809027 0
+-1.46634 -0.10792 0
+-1.41587 -0.128635 0
+-1.37415 -0.130329 0
+-1.34557 -0.117313 0
+-1.32686 -0.0984173 0
+-1.31442 -0.0783489 0
+-1.30602 -0.0593739 0
+-1.3 -0.0437271 0
+-1.29537 -0.0311681 0
+-1.29188 -0.020354 0
+-1.28909 -0.0118546 0
+-1.28661 -0.00559867 0
+-1.28455 -3.80077e-05 0
+-1.2829 0.00465412 0
+-1.28138 0.00786574 0
+-1.28009 0.0107629 0
+-1.27915 0.0135998 0
+-1.27834 0.0154524 0
+-1.27762 0.0170117 0
+-1.27717 0.0189577 0
+-1.27682 0.0203994 0
+-1.27642 0.0215298 0
+-1.27615 0.0233443 0
+-1.27601 0.0252648 0
+-1.27597 0.0269603 0
+-1.27633 0.0292878 0
+-1.27706 0.0318863 0
+-1.27707 0.0342042 0
+-1.27434 0.0376961 0
+-1.26627 0.0432984 0
+-1.25113 0.0482184 0
+-1.23083 0.0426667 0
+-1.21042 0.00343884 0
+-1.19116 -0.105391 0
+-1.16032 -0.314486 0
+-1.08766 -0.623641 0
+-0.939726 -0.985549 0
+-0.712914 -1.30933 0
+-0.462584 -1.4845 0
+-0.294823 -1.41365 0
+-0.309515 -1.04919 0
+-0.525194 -0.446983 0
+-0.846665 0.184826 0
+-1.11408 0.514708 0
+-1.05509 0.122953 0
+-1.01208 0.0189347 0
+-1.00699 0.00216563 0
+-1.02454 -0.00260331 0
+-1.0777 -0.0202289 0
+-1.13557 -0.129248 0
+-0.827469 -0.531261 0
+-0.448125 -0.142816 0
+-0.183265 0.587152 0
+-0.147975 1.28284 0
+-0.327699 1.70445 0
+-0.611392 1.78854 0
+-0.875897 1.59196 0
+-1.05293 1.22609 0
+-1.14196 0.813965 0
+-1.17952 0.457369 0
+-1.20142 0.211612 0
+-1.22414 0.0792915 0
+-1.24746 0.0273786 0
+-1.26587 0.0159144 0
+-1.27674 0.0176832 0
+-1.2814 0.0204527 0
+-1.28264 0.0212261 0
+-1.28277 0.0210607 0
+-1.28295 0.0210529 0
+-1.28331 0.0209748 0
+-1.28364 0.0207122 0
+-1.28391 0.0204824 0
+-1.28403 0.0199416 0
+-1.28392 0.0189411 0
+-1.28365 0.0178914 0
+-1.28325 0.0166759 0
+-1.28261 0.0149587 0
+-1.28171 0.013009 0
+-1.28054 0.01085 0
+-1.27897 0.0080501 0
+-1.27687 0.00469446 0
+-1.27421 0.000917082 0
+-1.27085 -0.0037488 0
+-1.26661 -0.00948253 0
+-1.26149 -0.0161381 0
+-1.25551 -0.0241565 0
+-1.2488 -0.034053 0
+-1.24198 -0.0459179 0
+-1.23633 -0.060347 0
+-1.2343 -0.0790802 0
+-1.23979 -0.10646 0
+-1.25587 -0.15422 0
+-1.2763 -0.24723 0
+-1.26953 -0.426036 0
+-1.16395 -0.745806 0
+-0.860418 -1.28262 0
+-0.298343 -2.17424 0
+0.443283 -3.69356 0
+1.09724 -6.23963 0
+1.30875 -10.0598 0
+0.87075 -14.7229 0
+-0.0805745 -18.8113 0
+-1.10818 -20.451 0
+-1.75958 -18.64 0
+-1.86662 -14.2933 0
+-1.61426 -9.7754 0
+-1.35304 -6.98662 0
+-0.518369 -5.49628 0
+-0.196622 -3.31243 0
+-0.196622 -0.475812 0
+-1.0616 -0.454236 0
+-2.36739 -0.792729 0
+-5.01856 -1.12699 0
+-5.34303 -1.13442 0
+-5.46883 -0.0802917 0
+-5.04776 2.09599 0
+-3.96317 4.26425 0
+-2.50475 5.14822 0
+-1.20329 4.43838 0
+-0.463142 2.86857 0
+-0.324724 1.40537 0
+-0.534328 0.526748 0
+-0.792164 0.156483 0
+-0.936661 0.0208005 0
+-0.96032 -0.0569695 0
+-0.924155 -0.117081 0
+-0.880221 -0.151868 0
+-0.848797 -0.160073 0
+-0.830411 -0.14873 0
+-0.820041 -0.127696 0
+-0.8133 -0.105172 0
+-0.808159 -0.0835034 0
+-0.804094 -0.0634526 0
+-0.80062 -0.0472134 0
+-0.797493 -0.0343086 0
+-0.794897 -0.0229623 0
+-0.792685 -0.0140788 0
+-0.7906 -0.00769456 0
+-0.788849 -0.001801 0
+-0.787463 0.00325762 0
+-0.786162 0.00655395 0
+-0.785044 0.00963498 0
+-0.784252 0.0127984 0
+-0.783529 0.0147203 0
+-0.782844 0.0163174 0
+-0.782392 0.0184973 0
+-0.781988 0.0199873 0
+-0.781467 0.0210006 0
+-0.780987 0.0228564 0
+-0.780452 0.0247228 0
+-0.779677 0.0261785 0
+-0.778921 0.0285249 0
+-0.778346 0.0313048 0
+-0.777506 0.0333582 0
+-0.775346 0.0355309 0
+-0.76966 0.0376066 0
+-0.757341 0.0358944 0
+-0.736702 0.0220226 0
+-0.708981 -0.0242869 0
+-0.675783 -0.138594 0
+-0.632773 -0.357501 0
+-0.564607 -0.691813 0
+-0.451137 -1.09902 0
+-0.290197 -1.47028 0
+-0.121545 -1.65316 0
+-0.0212597 -1.51395 0
+-0.0508837 -1.01957 0
+-0.18491 -0.312963 0
+-0.275054 0.274967 0
+-0.135475 0.375127 0
+-0.036322 0.0237994 0
+-0.0200394 0.00265202 0
+-0.0181598 0.00028602 0
+-0.0204449 -0.000318214 0
+-0.0378095 -0.00286428 0
+-0.141313 -0.0257449 0
+-0.268549 -0.404025 0
+-0.138607 -0.27276 0
+0.0376427 0.410901 0
+0.0896657 1.23082 0
+-0.014874 1.80899 0
+-0.206358 1.98002 0
+-0.394711 1.78032 0
+-0.529713 1.36109 0
+-0.610443 0.894695 0
+-0.659495 0.506422 0
+-0.696063 0.248183 0
+-0.726679 0.109908 0
+-0.750036 0.0507378 0
+-0.764607 0.0304865 0
+-0.77189 0.0249684 0
+-0.775003 0.0235676 0
+-0.776437 0.0226614 0
+-0.777485 0.0221104 0
+-0.778542 0.0221117 0
+-0.77945 0.021885 0
+-0.780055 0.0213191 0
+-0.780436 0.0208643 0
+-0.780612 0.0201194 0
+-0.780548 0.018879 0
+-0.780342 0.0176859 0
+-0.780023 0.016359 0
+-0.779493 0.0144288 0
+-0.778756 0.0122736 0
+-0.777839 0.00993394 0
+-0.77661 0.00682159 0
+-0.774985 0.00306935 0
+-0.772954 -0.00111294 0
+-0.770365 -0.00633745 0
+-0.767028 -0.0128189 0
+-0.762847 -0.020319 0
+-0.757634 -0.0293697 0
+-0.751155 -0.0405319 0
+-0.74337 -0.0537037 0
+-0.734442 -0.0692744 0
+-0.725103 -0.0884196 0
+-0.717712 -0.113851 0
+-0.716964 -0.154968 0
+-0.727764 -0.236429 0
+-0.745824 -0.407976 0
+-0.739368 -0.752262 0
+-0.636376 -1.38561 0
+-0.349394 -2.46122 0
+0.144885 -4.18784 0
+0.716255 -6.811 0
+1.08393 -10.4275 0
+0.973015 -14.612 0
+0.335019 -18.1733 0
+-0.569483 -19.5465 0
+-1.33746 -17.872 0
+-1.71174 -13.919 0
+-1.73656 -9.75058 0
+-1.65877 -7.06441 0
+-0.723994 -5.46526 0
+-0.316441 -3.25862 0
+-0.316441 -0.437122 0
+-0.877705 -0.378006 0
+-1.94722 -0.656359 0
+-4.10571 -0.926327 0
+-4.3176 -0.922546 0
+-4.33684 -0.0610554 0
+-3.91831 1.67745 0
+-3.03288 3.37881 0
+-1.95503 4.07036 0
+-1.07854 3.56188 0
+-0.632973 2.42299 0
+-0.566293 1.33868 0
+-0.664907 0.62535 0
+-0.748052 0.239616 0
+-0.758117 0.0308529 0
+-0.724169 -0.0909317 0
+-0.688267 -0.152997 0
+-0.667979 -0.17217 0
+-0.660626 -0.167441 0
+-0.659147 -0.150222 0
+-0.65919 -0.127667 0
+-0.658896 -0.105481 0
+-0.65799 -0.0844228 0
+-0.65682 -0.0646364 0
+-0.655425 -0.0486221 0
+-0.653857 -0.0358899 0
+-0.652422 -0.0244092 0
+-0.651119 -0.015394 0
+-0.649816 -0.00901005 0
+-0.648704 -0.00292469 0
+-0.647826 0.00236902 0
+-0.646974 0.00569077 0
+-0.646227 0.00887772 0
+-0.645698 0.0122593 0
+-0.645186 0.0141997 0
+-0.644667 0.0157892 0
+-0.644291 0.0181119 0
+-0.64391 0.0195985 0
+-0.643391 0.0204729 0
+-0.642835 0.0222929 0
+-0.642117 0.0239972 0
+-0.64099 0.0250443 0
+-0.63952 0.0270485 0
+-0.637761 0.0295389 0
+-0.635508 0.0310989 0
+-0.632383 0.0324003 0
+-0.627168 0.0323865 0
+-0.617338 0.0260591 0
+-0.60027 0.00494862 0
+-0.574938 -0.0496239 0
+-0.542058 -0.171478 0
+-0.501521 -0.398043 0
+-0.448074 -0.745267 0
+-0.371569 -1.17554 0
+-0.268499 -1.57335 0
+-0.158031 -1.76363 0
+-0.0814086 -1.59058 0
+-0.0706799 -1.03031 0
+-0.10378 -0.279869 0
+-0.0993999 0.270583 0
+-0.0174264 0.293152 0
+-0.00281211 0.00918504 0
+-0.000618526 0.000458398 0
+-0.000370428 3.78247e-05 0
+-0.000646498 -4.22499e-05 0
+-0.00300459 -0.000506264 0
+-0.0185066 -0.0102429 0
+-0.0968011 -0.325731 0
+-0.080079 -0.289483 0
+-0.0201253 0.350946 0
+-0.0142812 1.22497 0
+-0.091125 1.88583 0
+-0.214294 2.10319 0
+-0.333663 1.89968 0
+-0.423358 1.45079 0
+-0.484913 0.956251 0
+-0.529873 0.551384 0
+-0.565587 0.283897 0
+-0.593189 0.137513 0
+-0.612017 0.0695669 0
+-0.623047 0.0415187 0
+-0.629002 0.0309251 0
+-0.632535 0.0271023 0
+-0.63507 0.0251986 0
+-0.637106 0.0241483 0
+-0.638756 0.0237631 0
+-0.639949 0.02308 0
+-0.640698 0.02207 0
+-0.64117 0.021338 0
+-0.641438 0.0203888 0
+-0.641498 0.0189402 0
+-0.641436 0.0176248 0
+-0.641283 0.0162079 0
+-0.640971 0.0141169 0
+-0.640512 0.0118161 0
+-0.639937 0.00935981 0
+-0.639154 0.00603855 0
+-0.638105 0.00202135 0
+-0.636792 -0.00242571 0
+-0.635098 -0.00803139 0
+-0.632869 -0.0150478 0
+-0.629996 -0.0231916 0
+-0.626258 -0.033108 0
+-0.621346 -0.0454435 0
+-0.615023 -0.0600266 0
+-0.607031 -0.0772665 0
+-0.597156 -0.0982944 0
+-0.585837 -0.125171 0
+-0.575201 -0.165604 0
+-0.570134 -0.241497 0
+-0.576359 -0.401751 0
+-0.589925 -0.738696 0
+-0.580083 -1.39546 0
+-0.486709 -2.5546 0
+-0.260856 -4.41369 0
+0.0580375 -7.12989 0
+0.299204 -10.6686 0
+0.236034 -14.5488 0
+-0.237046 -17.7003 0
+-0.979609 -18.804 0
+-1.6795 -17.1722 0
+-2.08463 -13.5139 0
+-2.17834 -9.65686 0
+-2.13801 -7.10474 0
+-0.99286 -5.46884 0
+-0.453029 -3.25188 0
+-0.453029 -0.433366 0
+-0.727557 -0.316597 0
+-1.61083 -0.549265 0
+-3.38884 -0.773814 0
+-3.53996 -0.771428 0
+-3.53253 -0.068499 0
+-3.1961 1.34102 0
+-2.53444 2.71713 0
+-1.76087 3.29678 0
+-1.1412 2.9422 0
+-0.803616 2.0854 0
+-0.69305 1.22811 0
+-0.675917 0.608206 0
+-0.660257 0.223944 0
+-0.628737 -0.000680737 0
+-0.60013 -0.119552 0
+-0.587732 -0.165409 0
+-0.589134 -0.170782 0
+-0.596062 -0.160526 0
+-0.603118 -0.143181 0
+-0.608624 -0.122176 0
+-0.612439 -0.10168 0
+-0.614873 -0.0820022 0
+-0.616338 -0.0631857 0
+-0.617071 -0.0479026 0
+-0.617279 -0.0356946 0
+-0.617233 -0.0244675 0
+-0.617049 -0.0155911 0
+-0.616747 -0.00932376 0
+-0.616441 -0.00324187 0
+-0.616173 0.00208989 0
+-0.615879 0.00538568 0
+-0.615596 0.00858497 0
+-0.615372 0.0120248 0
+-0.615128 0.0139466 0
+-0.614851 0.0155025 0
+-0.614588 0.01784 0
+-0.61427 0.0192721 0
+-0.613823 0.020018 0
+-0.613251 0.0217126 0
+-0.612444 0.0231835 0
+-0.611214 0.0238069 0
+-0.609453 0.0252808 0
+-0.607042 0.0271212 0
+-0.603806 0.0278565 0
+-0.599568 0.0281559 0
+-0.593789 0.0266025 0
+-0.585157 0.0174218 0
+-0.571964 -0.0082497 0
+-0.553299 -0.0682947 0
+-0.530192 -0.19459 0
+-0.505072 -0.423169 0
+-0.478353 -0.771993 0
+-0.444932 -1.20896 0
+-0.396363 -1.62193 0
+-0.329349 -1.83066 0
+-0.251881 -1.66805 0
+-0.177471 -1.10472 0
+-0.111377 -0.345969 0
+-0.0491335 0.208336 0
+-0.00261443 0.246632 0
+-0.000286436 0.00685701 0
+-3.5855e-05 0.000207847 0
+-1.00833e-05 1.2059e-05 0
+-3.87671e-05 -1.35716e-05 0
+-0.00031075 -0.00023433 0
+-0.00276409 -0.00778957 0
+-0.0483538 -0.280142 0
+-0.104128 -0.23371 0
+-0.16119 0.408008 0
+-0.229591 1.29337 0
+-0.306695 1.96293 0
+-0.377712 2.17421 0
+-0.431652 1.95362 0
+-0.469513 1.48865 0
+-0.499057 0.985796 0
+-0.525817 0.578146 0
+-0.550022 0.308103 0
+-0.56953 0.157023 0
+-0.583315 0.0833536 0
+-0.592309 0.0505138 0
+-0.598294 0.0369117 0
+-0.602644 0.031455 0
+-0.605969 0.0285248 0
+-0.608477 0.026658 0
+-0.610301 0.025589 0
+-0.611553 0.0243334 0
+-0.612369 0.0228881 0
+-0.612912 0.0218821 0
+-0.613269 0.0207473 0
+-0.613475 0.019148 0
+-0.613587 0.0177379 0
+-0.613631 0.0162532 0
+-0.61359 0.014077 0
+-0.613476 0.0117032 0
+-0.613303 0.00918745 0
+-0.613035 0.00577032 0
+-0.612643 0.00163025 0
+-0.612116 -0.00295266 0
+-0.611386 -0.00876037 0
+-0.610361 -0.0160733 0
+-0.60893 -0.0246222 0
+-0.606899 -0.0351387 0
+-0.604003 -0.0483402 0
+-0.599969 -0.0640608 0
+-0.594481 -0.0827543 0
+-0.587175 -0.1056 0
+-0.577778 -0.134568 0
+-0.566515 -0.176867 0
+-0.55535 -0.252662 0
+-0.549478 -0.407623 0
+-0.555144 -0.73303 0
+-0.570228 -1.38037 0
+-0.574935 -2.54989 0
+-0.543503 -4.44512 0
+-0.487562 -7.18583 0
+-0.496688 -10.6595 0
+-0.709376 -14.3361 0
+-1.19805 -17.2116 0
+-1.86305 -18.139 0
+-2.46508 -16.5701 0
+-2.79875 -13.1802 0
+-2.84617 -9.60945 0
+-2.75554 -7.19537 0
+-1.3152 -5.55302 0
+-0.607196 -3.31022 0
+-0.607196 -0.469117 0
+-0.605171 -0.266549 0
+-1.33987 -0.463699 0
+-2.81799 -0.654349 0
+-2.93432 -0.655099 0
+-2.93004 -0.072788 0
+-2.68483 1.09581 0
+-2.20697 2.23926 0
+-1.64296 2.73276 0
+-1.16375 2.46297 0
+-0.851372 1.77302 0
+-0.684343 1.06107 0
+-0.600329 0.524181 0
+-0.554403 0.178005 0
+-0.530598 -0.024498 0
+-0.524901 -0.125262 0
+-0.531949 -0.158374 0
+-0.544703 -0.158043 0
+-0.55805 -0.147194 0
+-0.569644 -0.131601 0
+-0.578931 -0.112903 0
+-0.586147 -0.0944777 0
+-0.591596 -0.0765678 0
+-0.595534 -0.0592603 0
+-0.598348 -0.0451018 0
+-0.600364 -0.0336919 0
+-0.601751 -0.023093 0
+-0.602727 -0.0146273 0
+-0.60348 -0.00858221 0
+-0.604019 -0.00271441 0
+-0.604378 0.00243786 0
+-0.604668 0.00566521 0
+-0.604875 0.00878215 0
+-0.604964 0.0121037 0
+-0.605007 0.0139804 0
+-0.605003 0.0154896 0
+-0.604877 0.017705 0
+-0.604653 0.0190395 0
+-0.604331 0.0196878 0
+-0.603791 0.0211655 0
+-0.602962 0.0223468 0
+-0.60177 0.0226079 0
+-0.599996 0.0234997 0
+-0.597421 0.0245403 0
+-0.593908 0.0243373 0
+-0.589244 0.0234852 0
+-0.583148 0.0205012 0
+-0.575329 0.00959754 0
+-0.56556 -0.0180237 0
+-0.554512 -0.0793481 0
+-0.54508 -0.204028 0
+-0.542263 -0.425991 0
+-0.549889 -0.764373 0
+-0.564694 -1.19417 0
+-0.571595 -1.61504 0
+-0.545935 -1.85633 0
+-0.465391 -1.74861 0
+-0.327744 -1.24238 0
+-0.165453 -0.508266 0
+-0.0410365 0.0839157 0
+0.000432558 0.205162 0
+0.000193526 0.00709601 0
+3.90233e-05 0.000362359 0
+1.65159e-05 3.45791e-05 0
+4.19395e-05 -3.8994e-05 0
+0.000217762 -0.000410226 0
+0.000581944 -0.00815378 0
+-0.0418235 -0.237737 0
+-0.172724 -0.10281 0
+-0.344062 0.579345 0
+-0.487729 1.43704 0
+-0.568644 2.04385 0
+-0.590302 2.19587 0
+-0.57803 1.94135 0
+-0.558783 1.4694 0
+-0.548331 0.975345 0
+-0.549504 0.57932 0
+-0.557835 0.316436 0
+-0.568039 0.167227 0
+-0.577214 0.0925309 0
+-0.584671 0.0579726 0
+-0.590561 0.0428027 0
+-0.595114 0.0360095 0
+-0.598539 0.031952 0
+-0.601018 0.0291385 0
+-0.60273 0.0273033 0
+-0.603902 0.0255073 0
+-0.604724 0.0237108 0
+-0.605295 0.0224555 0
+-0.60571 0.0211635 0
+-0.606049 0.019488 0
+-0.60633 0.0180201 0
+-0.606571 0.0164952 0
+-0.606816 0.0143233 0
+-0.60707 0.0119581 0
+-0.607323 0.00944092 0
+-0.607601 0.00604867 0
+-0.607906 0.00193587 0
+-0.608204 -0.00265425 0
+-0.608485 -0.00847962 0
+-0.60872 -0.0158378 0
+-0.608807 -0.0245357 0
+-0.608604 -0.035341 0
+-0.607936 -0.0490082 0
+-0.606539 -0.0654585 0
+-0.604103 -0.0851901 0
+-0.600323 -0.10938 0
+-0.594857 -0.140035 0
+-0.587383 -0.184341 0
+-0.578207 -0.261838 0
+-0.570012 -0.415819 0
+-0.570117 -0.732925 0
+-0.590123 -1.36037 0
+-0.641664 -2.49835 0
+-0.735729 -4.35106 0
+-0.895125 -7.02644 0
+-1.16954 -10.3851 0
+-1.61803 -13.8876 0
+-2.2429 -16.5867 0
+-2.92803 -17.4539 0
+-3.47074 -16.0274 0
+-3.71648 -12.9345 0
+-3.6762 -9.64972 0
+-3.49782 -7.37376 0
+-1.69173 -5.73872 0
+-0.783388 -3.44282 0
+-0.783388 -0.547556 0
+-0.50506 -0.225321 0
+-1.11952 -0.394553 0
+-2.35627 -0.559659 0
+-2.44776 -0.563608 0
+-2.4486 -0.0719615 0
+-2.27264 0.919841 0
+-1.92582 1.89243 0
+-1.50307 2.31 0
+-1.112 2.07189 0
+-0.812747 1.47376 0
+-0.615374 0.863686 0
+-0.504866 0.413663 0
+-0.458651 0.131778 0
+-0.452839 -0.0303222 0
+-0.46623 -0.111884 0
+-0.484745 -0.139872 0
+-0.502711 -0.14009 0
+-0.519194 -0.130724 0
+-0.533788 -0.117021 0
+-0.546008 -0.100696 0
+-0.555986 -0.0845138 0
+-0.563928 -0.0686388 0
+-0.569971 -0.0532299 0
+-0.57461 -0.0404749 0
+-0.578248 -0.0300671 0
+-0.580947 -0.0204055 0
+-0.582998 -0.0125879 0
+-0.584724 -0.00686787 0
+-0.586048 -0.00140158 0
+-0.586999 0.00337862 0
+-0.587834 0.00648957 0
+-0.588497 0.00943579 0
+-0.588889 0.0124863 0
+-0.589208 0.0142901 0
+-0.589466 0.015739 0
+-0.589489 0.0177197 0
+-0.589382 0.0189246 0
+-0.58921 0.0195073 0
+-0.588755 0.0207037 0
+-0.587981 0.0215655 0
+-0.586927 0.0215472 0
+-0.58532 0.0218858 0
+-0.582925 0.0221387 0
+-0.579693 0.0210994 0
+-0.575371 0.0191579 0
+-0.569763 0.0148873 0
+-0.56325 0.00307897 0
+-0.556894 -0.0243845 0
+-0.553235 -0.0830115 0
+-0.557659 -0.199609 0
+-0.578075 -0.40558 0
+-0.621308 -0.721146 0
+-0.685524 -1.12996 0
+-0.75061 -1.54996 0
+-0.774874 -1.83207 0
+-0.708851 -1.81464 0
+-0.528569 -1.42267 0
+-0.274593 -0.762248 0
+-0.0608981 -0.129783 0
+0.00572103 0.138541 0
+0.00147659 0.0113404 0
+0.000365996 0.00147291 0
+0.000206637 0.000194001 0
+0.000393965 -0.000226274 0
+0.00166893 -0.00168527 0
+0.00680071 -0.0132856 0
+-0.0635052 -0.167432 0
+-0.298316 0.131999 0
+-0.57916 0.860188 0
+-0.776024 1.6339 0
+-0.841829 2.10965 0
+-0.804864 2.1589 0
+-0.723478 1.85997 0
+-0.646071 1.392 0
+-0.594731 0.924006 0
+-0.56989 0.55448 0
+-0.56263 0.309177 0
+-0.564016 0.168615 0
+-0.568612 0.0971285 0
+-0.573925 0.0632868 0
+-0.578793 0.0476727 0
+-0.582707 0.0399251 0
+-0.585657 0.034904 0
+-0.587777 0.0312599 0
+-0.589206 0.0287337 0
+-0.590195 0.0264983 0
+-0.590941 0.0244576 0
+-0.591481 0.0229972 0
+-0.591908 0.0215918 0
+-0.592339 0.0199198 0
+-0.592758 0.0184404 0
+-0.593175 0.0169131 0
+-0.593684 0.0148333 0
+-0.594284 0.0125587 0
+-0.594947 0.0101045 0
+-0.595753 0.00685539 0
+-0.596732 0.00291536 0
+-0.597838 -0.00154854 0
+-0.599113 -0.00720449 0
+-0.600594 -0.014356 0
+-0.602199 -0.0229311 0
+-0.60386 -0.0336799 0
+-0.605512 -0.0473566 0
+-0.606937 -0.0640338 0
+-0.607856 -0.084271 0
+-0.607999 -0.109237 0
+-0.607 -0.141035 0
+-0.604485 -0.186856 0
+-0.60048 -0.265843 0
+-0.596825 -0.419474 0
+-0.601084 -0.728666 0
+-0.631872 -1.32958 0
+-0.721026 -2.4092 0
+-0.91001 -4.16207 0
+-1.24275 -6.6937 0
+-1.75461 -9.87325 0
+-2.44882 -13.1934 0
+-3.25892 -15.7766 0
+-4.02941 -16.6834 0
+-4.56601 -15.4908 0
+-4.75203 -12.7485 0
+-4.63304 -9.76871 0
+-4.36838 -7.63842 0
+-2.1298 -6.02827 0
+-0.988091 -3.65337 0
+-0.988091 -0.671821 0
+-0.422551 -0.190868 0
+-0.938586 -0.338052 0
+-1.97823 -0.484703 0
+-2.04766 -0.494188 0
+-2.0446 -0.0750205 0
+-1.9079 0.783132 0
+-1.64586 1.63038 0
+-1.3239 1.98803 0
+-1.00943 1.75742 0
+-0.743188 1.2075 0
+-0.546602 0.66709 0
+-0.429093 0.296144 0
+-0.383389 0.0860637 0
+-0.385897 -0.0278262 0
+-0.408971 -0.088821 0
+-0.434189 -0.114667 0
+-0.455812 -0.11848 0
+-0.474603 -0.111945 0
+-0.491222 -0.100415 0
+-0.505407 -0.086523 0
+-0.517291 -0.0726423 0
+-0.527013 -0.0589296 0
+-0.53463 -0.0456249 0
+-0.540679 -0.0344374 0
+-0.545584 -0.0251739 0
+-0.549346 -0.0166548 0
+-0.552285 -0.00966067 0
+-0.554791 -0.00437234 0
+-0.556757 0.000553983 0
+-0.558215 0.00482638 0
+-0.559492 0.00775737 0
+-0.560522 0.0104561 0
+-0.561179 0.0131346 0
+-0.561726 0.0148289 0
+-0.562189 0.0161931 0
+-0.562351 0.0178744 0
+-0.562363 0.0189286 0
+-0.562326 0.0194626 0
+-0.561988 0.0203584 0
+-0.561338 0.0209096 0
+-0.56049 0.0206918 0
+-0.559171 0.0205606 0
+-0.557179 0.0201414 0
+-0.55456 0.0184747 0
+-0.551099 0.0156914 0
+-0.546706 0.0104885 0
+-0.542197 -0.00143465 0
+-0.539507 -0.0270791 0
+-0.542598 -0.0799254 0
+-0.558954 -0.183258 0
+-0.599237 -0.365302 0
+-0.673584 -0.646805 0
+-0.783149 -1.0204 0
+-0.90733 -1.42578 0
+-0.995483 -1.74392 0
+-0.977677 -1.83245 0
+-0.80159 -1.59876 0
+-0.484495 -1.07935 0
+-0.147344 -0.466938 0
+0.0218131 -0.0306176 0
+0.0107246 0.0224289 0
+0.00664815 0.00554931 0
+0.00611626 0.000725859 0
+0.0070536 -0.00116365 0
+0.0122117 -0.00684339 0
+0.0276485 -0.0287225 0
+-0.15386 0.0140759 0
+-0.530821 0.508958 0
+-0.890149 1.21951 0
+-1.08864 1.83239 0
+-1.10219 2.1232 0
+-0.991207 2.04792 0
+-0.839612 1.70837 0
+-0.708516 1.2609 0
+-0.621608 0.837098 0
+-0.575282 0.508155 0
+-0.555555 0.289452 0
+-0.549569 0.162629 0
+-0.549539 0.0971002 0
+-0.551796 0.065545 0
+-0.554593 0.050471 0
+-0.557101 0.0424347 0
+-0.559127 0.0369319 0
+-0.560647 0.032781 0
+-0.561666 0.0297547 0
+-0.562383 0.0272166 0
+-0.562964 0.0250395 0
+-0.563404 0.023439 0
+-0.563789 0.021978 0
+-0.564248 0.0203795 0
+-0.564747 0.0189408 0
+-0.565292 0.0174587 0
+-0.566002 0.0155445 0
+-0.566877 0.0134344 0
+-0.567887 0.0111147 0
+-0.569145 0.00811328 0
+-0.570702 0.00447334 0
+-0.572522 0.000271503 0
+-0.574692 -0.00503488 0
+-0.577303 -0.0117447 0
+-0.580316 -0.0199184 0
+-0.583746 -0.0302499 0
+-0.587638 -0.0434647 0
+-0.591856 -0.0598155 0
+-0.596183 -0.0799443 0
+-0.600363 -0.105058 0
+-0.603951 -0.137447 0
+-0.60657 -0.184238 0
+-0.608661 -0.263753 0
+-0.613268 -0.414867 0
+-0.630779 -0.711155 0
+-0.686346 -1.27401 0
+-0.824713 -2.27083 0
+-1.10565 -3.88113 0
+-1.58713 -6.21222 0
+-2.29846 -9.16192 0
+-3.20902 -12.2829 0
+-4.20376 -14.7819 0
+-5.09104 -15.7961 0
+-5.67147 -14.9104 0
+-5.84929 -12.5706 0
+-5.69538 -9.92262 0
+-5.37758 -7.95622 0
+-2.63722 -6.40628 0
+-1.22732 -3.93952 0
+-1.22732 -0.844677 0
+-0.353833 -0.16144 0
+-0.788595 -0.29094 0
+-1.66612 -0.425227 0
+-1.71505 -0.44526 0
+-1.69842 -0.091658 0
+-1.57332 0.658027 0
+-1.35746 1.41451 0
+-1.10811 1.73867 0
+-0.870888 1.52019 0
+-0.66387 1.00048 0
+-0.497243 0.500455 0
+-0.384507 0.183398 0
+-0.331657 0.0332047 0
+-0.327289 -0.0322048 0
+-0.348704 -0.0674168 0
+-0.376166 -0.0872163 0
+-0.400872 -0.0937856 0
+-0.421937 -0.0908921 0
+-0.440026 -0.0823377 0
+-0.455369 -0.0711918 0
+-0.468332 -0.0596914 0
+-0.479075 -0.048198 0
+-0.487649 -0.037062 0
+-0.494577 -0.0275205 0
+-0.500267 -0.0194941 0
+-0.504722 -0.0122111 0
+-0.508251 -0.00614192 0
+-0.511245 -0.00138783 0
+-0.51362 0.00291897 0
+-0.515418 0.00661573 0
+-0.516964 0.00929422 0
+-0.518203 0.0116867 0
+-0.519028 0.0139509 0
+-0.519699 0.0154919 0
+-0.520251 0.0167371 0
+-0.520489 0.018105 0
+-0.520566 0.0189984 0
+-0.520591 0.0194809 0
+-0.52034 0.0201003 0
+-0.519823 0.0203863 0
+-0.519176 0.0200385 0
+-0.518179 0.0195584 0
+-0.51669 0.0186468 0
+-0.514816 0.0165948 0
+-0.51245 0.0133207 0
+-0.509677 0.00771102 0
+-0.507577 -0.00353952 0
+-0.508515 -0.0261461 0
+-0.517165 -0.0712796 0
+-0.5422 -0.158227 0
+-0.596335 -0.311171 0
+-0.69309 -0.550055 0
+-0.838409 -0.875084 0
+-1.01666 -1.24754 0
+-1.17881 -1.58178 0
+-1.24746 -1.7638 0
+-1.14807 -1.69816 0
+-0.859002 -1.36842 0
+-0.450917 -0.875028 0
+-0.0741661 -0.407372 0
+0.0928724 -0.144611 0
+0.154825 -0.0564045 0
+0.175435 -0.0198849 0
+0.167285 0.0069848 0
+0.115478 0.0449627 0
+-0.0526951 0.13945 0
+-0.47013 0.431509 0
+-0.936093 0.97492 0
+-1.27435 1.55776 0
+-1.39434 1.95239 0
+-1.31372 2.04258 0
+-1.11821 1.8524 0
+-0.902266 1.49243 0
+-0.727849 1.08648 0
+-0.614729 0.723979 0
+-0.553868 0.447295 0
+-0.526207 0.261792 0
+-0.515241 0.151664 0
+-0.51128 0.0931406 0
+-0.510113 0.0643793 0
+-0.510092 0.050451 0
+-0.510522 0.0428658 0
+-0.511153 0.0375643 0
+-0.511782 0.0334113 0
+-0.512234 0.0302083 0
+-0.512574 0.0275575 0
+-0.51289 0.0253574 0
+-0.513147 0.0236968 0
+-0.51341 0.0222421 0
+-0.513797 0.0207669 0
+-0.514274 0.0194185 0
+-0.514848 0.0180336 0
+-0.515639 0.0163364 0
+-0.516654 0.0144502 0
+-0.517877 0.0123377 0
+-0.51943 0.00966712 0
+-0.521384 0.00642762 0
+-0.523729 0.00261645 0
+-0.526583 -0.00218084 0
+-0.530079 -0.00824915 0
+-0.534237 -0.0157598 0
+-0.539154 -0.0253336 0
+-0.544963 -0.037656 0
+-0.551625 -0.0531538 0
+-0.558997 -0.0725728 0
+-0.56685 -0.0972044 0
+-0.574756 -0.129542 0
+-0.582578 -0.176416 0
+-0.591864 -0.254467 0
+-0.608517 -0.398215 0
+-0.647972 -0.6717 0
+-0.742071 -1.17991 0
+-0.942737 -2.07016 0
+-1.31612 -3.50776 0
+-1.92337 -5.60497 0
+-2.78962 -8.29567 0
+-3.86947 -11.203 0
+-5.02524 -13.6261 0
+-6.04442 -14.7769 0
+-6.71858 -14.2362 0
+-6.95666 -12.3326 0
+-6.83881 -10.0405 0
+-6.5302 -8.26482 0
+-3.21608 -6.83446 0
+-1.50487 -4.28817 0
+-1.50487 -1.0664 0
+-0.295838 -0.135543 0
+-0.662867 -0.250176 0
+-1.40638 -0.376565 0
+-1.43853 -0.413114 0
+-1.40364 -0.126554 0
+-1.26969 0.524074 0
+-1.06662 1.21144 0
+-0.859617 1.53166 0
+-0.690467 1.35104 0
+-0.558065 0.868068 0
+-0.447149 0.389532 0
+-0.3568 0.0930405 0
+-0.298362 -0.0252414 0
+-0.277514 -0.0530627 0
+-0.285874 -0.0590663 0
+-0.308125 -0.0649757 0
+-0.332757 -0.0691638 0
+-0.355133 -0.0685265 0
+-0.374267 -0.0632153 0
+-0.390283 -0.0551863 0
+-0.403695 -0.0462891 0
+-0.414773 -0.0371306 0
+-0.423657 -0.0281883 0
+-0.430848 -0.0203398 0
+-0.436738 -0.013614 0
+-0.441382 -0.00757642 0
+-0.445066 -0.00246715 0
+-0.448134 0.00167137 0
+-0.450558 0.0053338 0
+-0.452398 0.00844736 0
+-0.453923 0.0108114 0
+-0.455109 0.0128643 0
+-0.455886 0.0147203 0
+-0.456469 0.0160681 0
+-0.456899 0.0171599 0
+-0.457038 0.0182372 0
+-0.457015 0.0189693 0
+-0.456928 0.019387 0
+-0.456616 0.0197825 0
+-0.456107 0.0198711 0
+-0.455527 0.0194534 0
+-0.454739 0.0187647 0
+-0.45367 0.0175731 0
+-0.452466 0.0153859 0
+-0.451156 0.012006 0
+-0.449996 0.00654651 0
+-0.450134 -0.00340609 0
+-0.453954 -0.0223295 0
+-0.466189 -0.0590491 0
+-0.495776 -0.128644 0
+-0.556493 -0.250459 0
+-0.664566 -0.441986 0
+-0.831227 -0.708429 0
+-1.04941 -1.02936 0
+-1.2807 -1.3505 0
+-1.45463 -1.58987 0
+-1.48991 -1.6629 0
+-1.33519 -1.52314 0
+-1.00992 -1.20031 0
+-0.614428 -0.802872 0
+-0.29432 -0.464723 0
+-0.10782 -0.242908 0
+-0.0409933 -0.0867142 0
+-0.0883415 0.0543305 0
+-0.267466 0.224085 0
+-0.606333 0.478314 0
+-1.05272 0.877891 0
+-1.43804 1.36024 0
+-1.63683 1.75656 0
+-1.61378 1.92933 0
+-1.41925 1.84806 0
+-1.1466 1.57974 0
+-0.883368 1.2292 0
+-0.681523 0.88464 0
+-0.553333 0.595789 0
+-0.484926 0.378888 0
+-0.453759 0.230626 0
+-0.440714 0.13862 0
+-0.434563 0.08699 0
+-0.430696 0.0605132 0
+-0.427835 0.0475912 0
+-0.425783 0.0408156 0
+-0.424521 0.0363029 0
+-0.423832 0.0327231 0
+-0.423416 0.029794 0
+-0.423165 0.0273077 0
+-0.423041 0.0252342 0
+-0.422958 0.0236147 0
+-0.422943 0.0222279 0
+-0.42308 0.0209044 0
+-0.423345 0.0196847 0
+-0.423752 0.0184412 0
+-0.424404 0.0169887 0
+-0.42532 0.0153666 0
+-0.426505 0.0135233 0
+-0.428077 0.0112398 0
+-0.430118 0.00846814 0
+-0.432653 0.00515157 0
+-0.435817 0.000983141 0
+-0.439765 -0.00430121 0
+-0.44458 -0.0109449 0
+-0.450417 -0.0194967 0
+-0.457472 -0.0306014 0
+-0.4658 -0.0448258 0
+-0.475363 -0.0630102 0
+-0.486068 -0.0864995 0
+-0.497826 -0.117784 0
+-0.511357 -0.162886 0
+-0.530135 -0.23569 0
+-0.563611 -0.364739 0
+-0.631942 -0.603369 0
+-0.770838 -1.04102 0
+-1.03296 -1.80804 0
+-1.48212 -3.0586 0
+-2.17721 -4.90988 0
+-3.14466 -7.32821 0
+-4.34313 -10.0046 0
+-5.63604 -12.3332 0
+-6.80487 -13.6081 0
+-7.63031 -13.4108 0
+-8.01147 -11.9514 0
+-8.02174 -10.0302 0
+-7.81209 -8.47446 0
+-3.85716 -7.24239 0
+-1.82175 -4.66673 0
+-1.82175 -1.33055 0
+-0.246074 -0.112008 0
+-0.555782 -0.213021 0
+-1.18739 -0.333512 0
+-1.20973 -0.39078 0
+-1.15984 -0.176448 0
+-1.00782 0.372048 0
+-0.791524 0.99513 0
+-0.591089 1.33122 0
+-0.460762 1.2207 0
+-0.394317 0.801617 0
+-0.352003 0.347212 0
+-0.306482 0.0475121 0
+-0.259752 -0.0719787 0
+-0.227475 -0.0853483 0
+-0.218039 -0.068511 0
+-0.227139 -0.0558846 0
+-0.24537 -0.0509418 0
+-0.265532 -0.0483736 0
+-0.284078 -0.0446786 0
+-0.299911 -0.0393628 0
+-0.313096 -0.0331134 0
+-0.323842 -0.0263936 0
+-0.332368 -0.0196715 0
+-0.339148 -0.0135687 0
+-0.34457 -0.00820118 0
+-0.348772 -0.00338271 0
+-0.352019 0.000771788 0
+-0.354599 0.00424373 0
+-0.356549 0.00727516 0
+-0.357947 0.00983791 0
+-0.358996 0.0118532 0
+-0.359701 0.0135624 0
+-0.360035 0.0150481 0
+-0.360153 0.0161796 0
+-0.360095 0.0170957 0
+-0.359787 0.0179232 0
+-0.359327 0.0185026 0
+-0.35879 0.0188443 0
+-0.358091 0.0190782 0
+-0.357268 0.0190435 0
+-0.356432 0.0186118 0
+-0.355527 0.0178547 0
+-0.354555 0.0165967 0
+-0.353682 0.0145087 0
+-0.353041 0.0113605 0
+-0.352968 0.00646952 0
+-0.354481 -0.00189695 0
+-0.359682 -0.0171316 0
+-0.372922 -0.0458128 0
+-0.402707 -0.0988621 0
+-0.462766 -0.190403 0
+-0.570532 -0.334224 0
+-0.741193 -0.537772 0
+-0.976601 -0.79396 0
+-1.25318 -1.07392 0
+-1.51745 -1.32561 0
+-1.69694 -1.48342 0
+-1.72819 -1.49189 0
+-1.59197 -1.33654 0
+-1.33492 -1.05992 0
+-1.05807 -0.741575 0
+-0.858283 -0.442704 0
+-0.779863 -0.165138 0
+-0.839246 0.11371 0
+-1.03615 0.420986 0
+-1.337 0.779156 0
+-1.64043 1.18132 0
+-1.82466 1.54447 0
+-1.8229 1.7548 0
+-1.64403 1.75046 0
+-1.3529 1.55693 0
+-1.03229 1.25913 0
+-0.749611 0.94652 0
+-0.540317 0.675345 0
+-0.408509 0.463982 0
+-0.3381 0.30848 0
+-0.306246 0.198773 0
+-0.293255 0.125629 0
+-0.28693 0.0806656 0
+-0.282006 0.0555902 0
+-0.277257 0.0428439 0
+-0.272967 0.0365262 0
+-0.269566 0.032903 0
+-0.267104 0.0302615 0
+-0.265347 0.0280377 0
+-0.264085 0.026047 0
+-0.263155 0.0243052 0
+-0.262404 0.0228642 0
+-0.261794 0.0216192 0
+-0.261358 0.0204685 0
+-0.261076 0.0194032 0
+-0.260964 0.0183295 0
+-0.261102 0.017127 0
+-0.26152 0.0157857 0
+-0.262246 0.0142496 0
+-0.263383 0.0123766 0
+-0.265015 0.0101003 0
+-0.267199 0.00733563 0
+-0.27007 0.00385361 0
+-0.273786 -0.000585593 0
+-0.278474 -0.00625678 0
+-0.284328 -0.0136423 0
+-0.291592 -0.0233383 0
+-0.300444 -0.0359736 0
+-0.311062 -0.0523934 0
+-0.323739 -0.0738221 0
+-0.339174 -0.10235 0
+-0.35946 -0.1426 0
+-0.390073 -0.205077 0
+-0.442733 -0.31208 0
+-0.538864 -0.507238 0
+-0.712671 -0.867212 0
+-1.01218 -1.50853 0
+-1.49658 -2.57421 0
+-2.22642 -4.18004 0
+-3.24087 -6.31376 0
+-4.51881 -8.72662 0
+-5.93977 -10.9122 0
+-7.2869 -12.2609 0
+-8.32698 -12.3707 0
+-8.93818 -11.3402 0
+-9.17657 -9.79182 0
+-9.17506 -8.47597 0
+-4.53259 -7.51983 0
+-2.17329 -5.01162 0
+-2.17329 -1.61615 0
+-0.202529 -0.0900966 0
+-0.462481 -0.177369 0
+-0.998408 -0.29102 0
+-1.02039 -0.368803 0
+-0.967045 -0.229795 0
+-0.802362 0.20736 0
+-0.561755 0.754517 0
+-0.336218 1.10567 0
+-0.201329 1.08581 0
+-0.164557 0.764841 0
+-0.177556 0.360206 0
+-0.187972 0.0579223 0
+-0.175946 -0.0840112 0
+-0.151847 -0.109455 0
+-0.133177 -0.0871883 0
+-0.128148 -0.060921 0
+-0.134917 -0.0441813 0
+-0.147933 -0.035365 0
+-0.162516 -0.0301037 0
+-0.176108 -0.0257791 0
+-0.187767 -0.0214624 0
+-0.19725 -0.0169187 0
+-0.204636 -0.0122938 0
+-0.210283 -0.00792936 0
+-0.214541 -0.00395107 0
+-0.217612 -0.00031932 0
+-0.219745 0.00289766 0
+-0.221184 0.00567575 0
+-0.222018 0.0081031 0
+-0.222347 0.0101604 0
+-0.222321 0.0118205 0
+-0.22197 0.0132052 0
+-0.221301 0.0143725 0
+-0.220414 0.0152871 0
+-0.219348 0.0160239 0
+-0.218077 0.0166468 0
+-0.216669 0.0170902 0
+-0.215185 0.0173549 0
+-0.213597 0.0174857 0
+-0.211954 0.0173954 0
+-0.210348 0.0170016 0
+-0.208793 0.0162958 0
+-0.207347 0.0151467 0
+-0.206175 0.0133321 0
+-0.205442 0.0106239 0
+-0.205457 0.00648131 0
+-0.207003 -0.000354897 0
+-0.211793 -0.0123449 0
+-0.223604 -0.0340044 0
+-0.250005 -0.0724646 0
+-0.30349 -0.136921 0
+-0.400646 -0.237072 0
+-0.557956 -0.380465 0
+-0.783769 -0.568151 0
+-1.06872 -0.788973 0
+-1.37971 -1.01462 0
+-1.66301 -1.20012 0
+-1.85983 -1.29507 0
+-1.93167 -1.26471 0
+-1.8834 -1.1082 0
+-1.76747 -0.857505 0
+-1.65752 -0.552658 0
+-1.60716 -0.215506 0
+-1.6395 0.146043 0
+-1.74478 0.526261 0
+-1.87522 0.909588 0
+-1.95001 1.25611 0
+-1.90112 1.49558 0
+-1.71119 1.56486 0
+-1.41458 1.45385 0
+-1.07296 1.2153 0
+-0.746738 0.932916 0
+-0.4772 0.676982 0
+-0.281587 0.479732 0
+-0.157078 0.339473 0
+-0.0885327 0.239935 0
+-0.0565019 0.166742 0
+-0.0435472 0.112675 0
+-0.037764 0.074883 0
+-0.0331695 0.0509964 0
+-0.0279642 0.0376393 0
+-0.0223928 0.0309555 0
+-0.0171932 0.0277041 0
+-0.0128043 0.0258734 0
+-0.00926938 0.0245035 0
+-0.00645537 0.0232337 0
+-0.00417032 0.0220209 0
+-0.00222178 0.0209163 0
+-0.000509382 0.0199074 0
+0.000996243 0.0189634 0
+0.00232457 0.0180753 0
+0.00346807 0.0171864 0
+0.00437225 0.0162232 0
+0.00500214 0.0151561 0
+0.00531946 0.0139325 0
+0.00523888 0.0124573 0
+0.00468025 0.0106589 0
+0.00357234 0.00844348 0
+0.00179199 0.00563385 0
+-0.000811605 0.00201783 0
+-0.00439573 -0.00267288 0
+-0.00919242 -0.00884591 0
+-0.0155208 -0.0170102 0
+-0.0237627 -0.027732 0
+-0.0344613 -0.0416952 0
+-0.0485148 -0.0597689 0
+-0.0675348 -0.0833306 0
+-0.0946731 -0.115462 0
+-0.136022 -0.163728 0
+-0.202496 -0.245607 0
+-0.312252 -0.397482 0
+-0.493805 -0.68566 0
+-0.78979 -1.21254 0
+-1.25975 -2.10425 0
+-1.97579 -3.46399 0
+-3.00019 -5.28936 0
+-4.33907 -7.38775 0
+-5.89184 -9.35946 0
+-7.44498 -10.7078 0
+-8.74981 -11.0659 0
+-9.65859 -10.4314 0
+-10.2073 -9.24307 0
+-10.5202 -8.16311 0
+-5.18306 -7.52115 0
+-2.53746 -5.21876 0
+-2.53746 -1.87455 0
+-0.163673 -0.0695698 0
+-0.37895 -0.142145 0
+-0.829712 -0.245402 0
+-0.860829 -0.337688 0
+-0.820921 -0.269708 0
+-0.663321 0.0497547 0
+-0.409277 0.500467 0
+-0.147465 0.843857 0
+0.0286976 0.909639 0
+0.0854176 0.708116 0
+0.0577673 0.387852 0
+0.00749532 0.10819 0
+-0.0233494 -0.0531717 0
+-0.0273086 -0.105501 0
+-0.017479 -0.0970242 0
+-0.00805722 -0.0703493 0
+-0.00544482 -0.0468004 0
+-0.00939428 -0.0314223 0
+-0.0170855 -0.0224194 0
+-0.0258793 -0.0169921 0
+-0.0341482 -0.0132004 0
+-0.041075 -0.00999873 0
+-0.0463848 -0.00699073 0
+-0.0501777 -0.00414309 0
+-0.0526686 -0.00146666 0
+-0.054044 0.00104981 0
+-0.0545165 0.00336398 0
+-0.0542886 0.00544179 0
+-0.05348 0.00728869 0
+-0.0522019 0.00887661 0
+-0.0505751 0.0101882 0
+-0.0486504 0.0112753 0
+-0.046457 0.012174 0
+-0.0440623 0.0128874 0
+-0.0415006 0.0134574 0
+-0.0387758 0.0139175 0
+-0.0359368 0.0142468 0
+-0.0330304 0.0144441 0
+-0.0300676 0.0145189 0
+-0.0271003 0.0144242 0
+-0.0242095 0.014107 0
+-0.0214474 0.01353 0
+-0.0188963 0.012592 0
+-0.0166964 0.0111288 0
+-0.014995 0.0089192 0
+-0.0140328 0.005516 0
+-0.0143971 6.49576e-06 0
+-0.0174856 -0.00925932 0
+-0.0264596 -0.0250331 0
+-0.0475533 -0.0513736 0
+-0.0909632 -0.0935133 0
+-0.170455 -0.157582 0
+-0.300927 -0.249996 0
+-0.493558 -0.375524 0
+-0.749382 -0.533153 0
+-1.05354 -0.710467 0
+-1.3736 -0.880076 0
+-1.66544 -1.00323 0
+-1.88795 -1.04221 0
+-2.02083 -0.975324 0
+-2.07443 -0.803903 0
+-2.08116 -0.545936 0
+-2.07237 -0.224301 0
+-2.06275 0.136422 0
+-2.04374 0.507245 0
+-1.98481 0.850655 0
+-1.84748 1.11877 0
+-1.6133 1.2614 0
+-1.29921 1.25077 0
+-0.948639 1.10328 0
+-0.609755 0.876413 0
+-0.317661 0.640823 0
+-0.0886948 0.448015 0
+0.0759897 0.315048 0
+0.184235 0.231228 0
+0.248184 0.175986 0
+0.281365 0.133561 0
+0.29642 0.0976209 0
+0.303166 0.0681367 0
+0.307666 0.0464975 0
+0.312591 0.0327144 0
+0.318391 0.025156 0
+0.324543 0.0215526 0
+0.330445 0.0199726 0
+0.335763 0.019186 0
+0.340418 0.0185788 0
+0.344492 0.0179469 0
+0.348133 0.0172765 0
+0.351455 0.016586 0
+0.354526 0.0158924 0
+0.357393 0.0152083 0
+0.360066 0.0145141 0
+0.362516 0.0137731 0
+0.364715 0.0129569 0
+0.366626 0.0120219 0
+0.368182 0.0109011 0
+0.369315 0.00952651 0
+0.369949 0.00780856 0
+0.369975 0.00560815 0
+0.369243 0.00274955 0
+0.367562 -0.000992099 0
+0.364638 -0.00592245 0
+0.360033 -0.0124049 0
+0.353122 -0.0208217 0
+0.342992 -0.0315659 0
+0.328289 -0.0450664 0
+0.307021 -0.0620624 0
+0.276186 -0.0846279 0
+0.231126 -0.118668 0
+0.164311 -0.178792 0
+0.0627867 -0.295958 0
+-0.0968201 -0.526053 0
+-0.355964 -0.953397 0
+-0.781273 -1.67894 0
+-1.46172 -2.78355 0
+-2.48275 -4.26833 0
+-3.87362 -5.99688 0
+-5.551 -7.68208 0
+-7.30724 -8.95157 0
+-8.88324 -9.48986 0
+-10.1071 -9.20759 0
+-10.9966 -8.35353 0
+-11.6875 -7.47227 0
+-5.70308 -7.09657 0
+-2.85291 -5.14747 0
+-2.85291 -2.01363 0
+-0.128526 -0.0506806 0
+-0.302359 -0.107553 0
+-0.673631 -0.195515 0
+-0.720064 -0.291258 0
+-0.709613 -0.280162 0
+-0.586267 -0.0735963 0
+-0.349892 0.264088 0
+-0.0712922 0.565253 0
+0.15292 0.685423 0
+0.264128 0.596905 0
+0.269363 0.382614 0
+0.218816 0.158733 0
+0.163579 0.0020614 0
+0.129525 -0.0714519 0
+0.117634 -0.0851387 0
+0.117841 -0.0705614 0
+0.120765 -0.0497299 0
+0.121812 -0.0324748 0
+0.120224 -0.0208364 0
+0.116925 -0.0136995 0
+0.113099 -0.00937926 0
+0.109646 -0.00655157 0
+0.107077 -0.0044273 0
+0.105556 -0.00262814 0
+0.105064 -0.000979652 0
+0.105513 0.000595415 0
+0.106771 0.00210118 0
+0.108693 0.00351427 0
+0.111167 0.00481078 0
+0.114083 0.00595592 0
+0.117339 0.00692761 0
+0.120871 0.0077383 0
+0.124636 0.00840459 0
+0.128583 0.00893693 0
+0.132677 0.00935921 0
+0.1369 0.00969027 0
+0.141216 0.00992776 0
+0.145585 0.0100716 0
+0.149979 0.0101207 0
+0.15435 0.0100499 0
+0.15863 0.00982389 0
+0.162757 0.00940039 0
+0.166649 0.00869672 0
+0.170197 0.0075782 0
+0.173273 0.00584031 0
+0.175662 0.00312439 0
+0.176854 -0.00118843 0
+0.175664 -0.00807105 0
+0.169572 -0.0189442 0
+0.153943 -0.0357467 0
+0.121489 -0.0610615 0
+0.0623616 -0.098457 0
+-0.0348609 -0.152776 0
+-0.180975 -0.229412 0
+-0.3826 -0.331531 0
+-0.63769 -0.455379 0
+-0.931733 -0.586037 0
+-1.23756 -0.697405 0
+-1.52127 -0.758503 0
+-1.7529 -0.743698 0
+-1.9158 -0.641005 0
+-2.00758 -0.454164 0
+-2.03208 -0.199802 0
+-1.99103 0.0953631 0
+-1.88017 0.396381 0
+-1.6919 0.662381 0
+-1.42471 0.851581 0
+-1.09481 0.931499 0
+-0.737386 0.893343 0
+-0.394477 0.760365 0
+-0.0987343 0.580669 0
+0.135526 0.406561 0
+0.31026 0.273282 0
+0.435497 0.18981 0
+0.522123 0.144601 0
+0.579059 0.11905 0
+0.613728 0.0988921 0
+0.633029 0.0783202 0
+0.64328 0.0578865 0
+0.649467 0.0403103 0
+0.654714 0.0274685 0
+0.660376 0.0194941 0
+0.666631 0.0152975 0
+0.673155 0.0134493 0
+0.679576 0.0127657 0
+0.685657 0.0124982 0
+0.69132 0.0122837 0
+0.696596 0.0120009 0
+0.701547 0.0116351 0
+0.706232 0.0112076 0
+0.710698 0.0107432 0
+0.714964 0.0102478 0
+0.719026 0.00971119 0
+0.722867 0.00911593 0
+0.726458 0.00843059 0
+0.729752 0.00760759 0
+0.732688 0.00658983 0
+0.735194 0.00530262 0
+0.737159 0.00364338 0
+0.738422 0.0014856 0
+0.738753 -0.00132304 0
+0.737794 -0.00496407 0
+0.735016 -0.00962669 0
+0.72967 -0.0154759 0
+0.720745 -0.0226412 0
+0.706957 -0.0312789 0
+0.686792 -0.0418985 0
+0.658502 -0.0563379 0
+0.619752 -0.079919 0
+0.56625 -0.12529 0
+0.488134 -0.217842 0
+0.363006 -0.400926 0
+0.146214 -0.736605 0
+-0.236769 -1.29596 0
+-0.885696 -2.13462 0
+-1.89737 -3.25666 0
+-3.31345 -4.5808 0
+-5.06635 -5.92918 0
+-6.96444 -7.05347 0
+-8.75252 -7.70179 0
+-10.2405 -7.71961 0
+-11.4248 -7.16928 0
+-12.4687 -6.42835 0
+-5.94614 -6.15994 0
+-3.00629 -4.65705 0
+-3.00629 -1.89616 0
+-0.0967072 -0.0340424 0
+-0.231419 -0.0749956 0
+-0.525851 -0.143313 0
+-0.587615 -0.229495 0
+-0.614394 -0.253386 0
+-0.547379 -0.140616 0
+-0.366025 0.0827303 0
+-0.113402 0.312626 0
+0.128459 0.443559 0
+0.290469 0.434891 0
+0.352102 0.320979 0
+0.338587 0.172245 0
+0.292629 0.0480166 0
+0.247646 -0.0264726 0
+0.217984 -0.0554803 0
+0.203534 -0.0561149 0
+0.198538 -0.0447382 0
+0.197574 -0.0315155 0
+0.197524 -0.0207903 0
+0.197238 -0.013418 0
+0.196642 -0.00878794 0
+0.196056 -0.0059698 0
+0.195819 -0.00419458 0
+0.196145 -0.00295859 0
+0.197128 -0.00196712 0
+0.198785 -0.00106531 0
+0.201075 -0.000192962 0
+0.203928 0.000657024 0
+0.207268 0.00146734 0
+0.211011 0.00220918 0
+0.215075 0.0028595 0
+0.219398 0.0034123 0
+0.223929 0.00387018 0
+0.228623 0.00423919 0
+0.233448 0.00453148 0
+0.238378 0.00475768 0
+0.243382 0.00492082 0
+0.248428 0.00502205 0
+0.253488 0.00505883 0
+0.258518 0.00501695 0
+0.263467 0.00487199 0
+0.268279 0.00458591 0
+0.272882 0.00409118 0
+0.277179 0.00327882 0
+0.281034 0.00198329 0
+0.284205 -4.81781e-05 0
+0.286194 -0.00317989 0
+0.28601 -0.00788868 0
+0.281826 -0.0147619 0
+0.270626 -0.0245494 0
+0.247949 -0.0383862 0
+0.20775 -0.058259 0
+0.142432 -0.0874599 0
+0.0433431 -0.130325 0
+-0.0976799 -0.19051 0
+-0.285263 -0.267798 0
+-0.51648 -0.354823 0
+-0.777874 -0.436013 0
+-1.046 -0.490377 0
+-1.29222 -0.497489 0
+-1.4893 -0.443925 0
+-1.61612 -0.327342 0
+-1.65852 -0.157412 0
+-1.60855 0.0453908 0
+-1.46469 0.252517 0
+-1.23396 0.431653 0
+-0.935327 0.552943 0
+-0.600822 0.596992 0
+-0.269955 0.562474 0
+0.0219364 0.468473 0
+0.254573 0.348033 0
+0.426078 0.235055 0
+0.547658 0.151702 0
+0.634379 0.10309 0
+0.69811 0.0808702 0
+0.745469 0.0716907 0
+0.77957 0.0647913 0
+0.802609 0.055281 0
+0.817242 0.0432539 0
+0.826502 0.0310505 0
+0.833093 0.0208778 0
+0.838849 0.0137378 0
+0.844667 0.00948045 0
+0.850769 0.00734699 0
+0.857051 0.00648356 0
+0.863326 0.00622348 0
+0.869451 0.00615951 0
+0.875356 0.00609536 0
+0.881029 0.00596273 0
+0.886481 0.00575593 0
+0.891733 0.00549045 0
+0.896802 0.00517902 0
+0.901689 0.00482431 0
+0.906386 0.00441922 0
+0.910871 0.00394468 0
+0.915109 0.00336952 0
+0.919046 0.00265292 0
+0.922605 0.00174301 0
+0.925673 0.000575659 0
+0.928079 -0.000921164 0
+0.929579 -0.00282242 0
+0.929813 -0.00519909 0
+0.92829 -0.00810378 0
+0.924375 -0.0115609 0
+0.917325 -0.0155918 0
+0.906384 -0.0203381 0
+0.890907 -0.0264225 0
+0.870353 -0.0357845 0
+0.843695 -0.0532605 0
+0.807457 -0.0890529 0
+0.751368 -0.161754 0
+0.651114 -0.300672 0
+0.459688 -0.545179 0
+0.102256 -0.938528 0
+-0.517299 -1.51507 0
+-1.49086 -2.28309 0
+-2.86293 -3.20874 0
+-4.58594 -4.20616 0
+-6.50275 -5.13666 0
+-8.38427 -5.82027 0
+-10.03 -6.07391 0
+-11.3967 -5.80257 0
+-12.6605 -5.16456 0
+-5.78523 -4.77708 0
+-2.87319 -3.69008 0
+-2.87319 -1.38736 0
+-0.068411 -0.0203916 0
+-0.166512 -0.0465924 0
+-0.386347 -0.0933366 0
+-0.456563 -0.159281 0
+-0.515293 -0.194658 0
+-0.509459 -0.146452 0
+-0.406424 -0.0203083 0
+-0.221872 0.128071 0
+-0.0118669 0.233551 0
+0.161834 0.261188 0
+0.264276 0.218534 0
+0.296509 0.14001 0
+0.282701 0.0618225 0
+0.250712 0.0055134 0
+0.219602 -0.0243729 0
+0.197286 -0.0338016 0
+0.184161 -0.0316166 0
+0.177601 -0.0249584 0
+0.174794 -0.0179864 0
+0.1738 -0.0124275 0
+0.173594 -0.00858532 0
+0.173771 -0.00614988 0
+0.174244 -0.00467019 0
+0.175041 -0.00375877 0
+0.176213 -0.0031424 0
+0.177798 -0.00265311 0
+0.179806 -0.00220432 0
+0.182224 -0.00176367 0
+0.185019 -0.00133019 0
+0.188144 -0.000918223 0
+0.191544 -0.000543868 0
+0.195171 -0.000216949 0
+0.19898 5.88516e-05 0
+0.202932 0.000284348 0
+0.206997 0.000464154 0
+0.211149 0.00060334 0
+0.215363 0.000704747 0
+0.219614 0.000769452 0
+0.223875 0.000795352 0
+0.228116 0.000773862 0
+0.232298 0.000688162 0
+0.236373 0.000509261 0
+0.240274 0.000188116 0
+0.243903 -0.000351427 0
+0.247103 -0.00121848 0
+0.249612 -0.00255901 0
+0.250979 -0.00454822 0
+0.250458 -0.00736948 0
+0.246899 -0.0112039 0
+0.238634 -0.0162859 0
+0.223344 -0.023098 0
+0.197798 -0.0327145 0
+0.157449 -0.0471124 0
+0.0961689 -0.0690466 0
+0.00674394 -0.101087 0
+-0.117236 -0.14382 0
+-0.278155 -0.193906 0
+-0.470993 -0.243177 0
+-0.681656 -0.279717 0
+-0.888272 -0.290875 0
+-1.06509 -0.267112 0
+-1.18725 -0.205186 0
+-1.23494 -0.109722 0
+-1.19658 0.00703388 0
+-1.07126 0.127187 0
+-0.870243 0.230639 0
+-0.616956 0.299654 0
+-0.343701 0.323736 0
+-0.0845119 0.303285 0
+0.134042 0.249919 0
+0.299671 0.182403 0
+0.415134 0.119592 0
+0.492967 0.0738681 0
+0.547755 0.0483012 0
+0.590269 0.0383552 0
+0.625664 0.0362963 0
+0.655006 0.0354488 0
+0.677929 0.0323581 0
+0.694515 0.0266678 0
+0.705832 0.0197335 0
+0.713536 0.0131731 0
+0.719247 0.00802754 0
+0.724138 0.00458963 0
+0.728859 0.00262579 0
+0.733656 0.00168642 0
+0.738546 0.00133359 0
+0.743459 0.00124649 0
+0.74832 0.00123461 0
+0.753076 0.0012067 0
+0.7577 0.00113176 0
+0.762182 0.00100764 0
+0.766521 0.000840338 0
+0.770711 0.000633835 0
+0.774744 0.000386203 0
+0.778601 8.78184e-05 0
+0.782249 -0.000278579 0
+0.785638 -0.000736351 0
+0.788694 -0.00131363 0
+0.791311 -0.00204102 0
+0.793336 -0.00294692 0
+0.794565 -0.00405195 0
+0.79473 -0.00536387 0
+0.793501 -0.00687546 0
+0.790518 -0.00857775 0
+0.785439 -0.0105136 0
+0.778017 -0.0129166 0
+0.768107 -0.0165133 0
+0.755411 -0.0230882 0
+0.738544 -0.0363945 0
+0.712868 -0.0633766 0
+0.666537 -0.115424 0
+0.574909 -0.209044 0
+0.394853 -0.365124 0
+0.0625203 -0.606196 0
+-0.500635 -0.951911 0
+-1.36999 -1.41374 0
+-2.58916 -1.98956 0
+-4.13877 -2.65655 0
+-5.91635 -3.35908 0
+-7.74474 -3.99188 0
+-9.42617 -4.39249 0
+-10.8511 -4.3776 0
+-12.1402 -3.87554 0
+-5.23347 -3.21227 0
+-2.44111 -2.37906 0
+-2.44111 -0.480059 0
+-0.0442381 -0.0102967 0
+-0.109395 -0.0244116 0
+-0.259215 -0.0511261 0
+-0.32632 -0.0921762 0
+-0.399721 -0.121259 0
+-0.438635 -0.10754 0
+-0.409442 -0.0495043 0
+-0.309399 0.0280258 0
+-0.168133 0.092283 0
+-0.0287863 0.121841 0
+0.0749842 0.114762 0
+0.131051 0.0839421 0
+0.146402 0.0464695 0
+0.136901 0.0150128 0
+0.117693 -0.0051665 0
+0.0985483 -0.0146588 0
+0.0837021 -0.0167724 0
+0.0737717 -0.0150301 0
+0.0677673 -0.011984 0
+0.0643788 -0.00904114 0
+0.0625449 -0.0067536 0
+0.0615801 -0.00518719 0
+0.0611086 -0.00420071 0
+0.0609547 -0.00360692 0
+0.0610541 -0.0032439 0
+0.0613956 -0.00299654 0
+0.0619846 -0.0027953 0
+0.062825 -0.00260602 0
+0.063911 -0.002418 0
+0.0652246 -0.00223367 0
+0.0667391 -0.00206016 0
+0.0684244 -0.00190388 0
+0.0702503 -0.00176876 0
+0.0721891 -0.00165611 0
+0.0742168 -0.0015651 0
+0.0763127 -0.00149405 0
+0.0784576 -0.00144168 0
+0.0806333 -0.00140766 0
+0.0828207 -0.00139352 0
+0.0849976 -0.00140433 0
+0.0871346 -0.00145022 0
+0.0891914 -0.00154883 0
+0.0911069 -0.0017286 0
+0.0927855 -0.0020313 0
+0.0940783 -0.0025124 0
+0.0947555 -0.00323741 0
+0.094478 -0.00427181 0
+0.0927752 -0.00566768 0
+0.089034 -0.00746379 0
+0.0824758 -0.00972868 0
+0.0720525 -0.0126757 0
+0.0561763 -0.0168392 0
+0.032277 -0.0232141 0
+-0.00358969 -0.0331809 0
+-0.0566271 -0.0480505 0
+-0.132206 -0.0682422 0
+-0.233726 -0.0923868 0
+-0.360055 -0.11685 0
+-0.503673 -0.136099 0
+-0.650577 -0.143973 0
+-0.782207 -0.135484 0
+-0.878879 -0.108515 0
+-0.923748 -0.0648547 0
+-0.90647 -0.0102457 0
+-0.825882 0.0465968 0
+-0.6911 0.0958565 0
+-0.520459 0.129012 0
+-0.337912 0.141188 0
+-0.16732 0.132692 0
+-0.0263307 0.108929 0
+0.0776024 0.0784697 0
+0.147261 0.0499338 0
+0.192002 0.0291263 0
+0.222585 0.0177179 0
+0.247088 0.0138513 0
+0.269395 0.0139895 0
+0.290001 0.0148423 0
+0.307866 0.0144931 0
+0.322011 0.0125226 0
+0.332266 0.00947905 0
+0.339234 0.00620449 0
+0.343898 0.00336377 0
+0.347215 0.0012727 0
+0.349897 -5.66773e-05 0
+0.352367 -0.000783826 0
+0.354817 -0.00111609 0
+0.357296 -0.00123324 0
+0.35979 -0.00125971 0
+0.362264 -0.00126713 0
+0.364685 -0.00128898 0
+0.367029 -0.00133655 0
+0.36928 -0.00141125 0
+0.371426 -0.00151225 0
+0.373452 -0.00164028 0
+0.375339 -0.0017994 0
+0.377058 -0.00199708 0
+0.378564 -0.00224331 0
+0.379799 -0.00254906 0
+0.380682 -0.00292405 0
+0.381109 -0.00337373 0
+0.380953 -0.00389657 0
+0.380072 -0.00448365 0
+0.378321 -0.00512437 0
+0.37557 -0.00582694 0
+0.371724 -0.00666789 0
+0.366699 -0.0078924 0
+0.360279 -0.0100933 0
+0.351685 -0.0144943 0
+0.338627 -0.0233369 0
+0.315565 -0.0403153 0
+0.271066 -0.0709257 0
+0.184564 -0.122542 0
+0.0235347 -0.204095 0
+-0.257189 -0.325472 0
+-0.712077 -0.497024 0
+-1.39632 -0.7295 0
+-2.3522 -1.03368 0
+-3.59171 -1.41704 0
+-5.0775 -1.8733 0
+-6.70705 -2.36233 0
+-8.31432 -2.78522 0
+-9.72147 -2.97045 0
+-10.8967 -2.70035 0
+-4.52517 -1.84052 0
+-1.93803 -1.08302 0
+-1.93803 0.546232 0
+-0.0249254 -0.0039045 0
+-0.0624923 -0.00966132 0
+-0.151153 -0.0211229 0
+-0.203402 -0.0399284 0
+-0.269361 -0.0553005 0
+-0.322918 -0.0539843 0
+-0.338274 -0.0341493 0
+-0.305977 -0.00427286 0
+-0.23706 0.023365 0
+-0.154896 0.0396755 0
+-0.0823651 0.0422309 0
+-0.032795 0.0343713 0
+-0.00820402 0.0218777 0
+-0.00299513 0.00980301 0
+-0.00909346 0.000930823 0
+-0.0196013 -0.00415213 0
+-0.0301952 -0.00617963 0
+-0.0389238 -0.00630262 0
+-0.0453794 -0.00552963 0
+-0.0498962 -0.00452557 0
+-0.0530203 -0.00363065 0
+-0.0552466 -0.00296207 0
+-0.0569321 -0.00251642 0
+-0.0582982 -0.00224202 0
+-0.0594639 -0.0020794 0
+-0.0604822 -0.00197942 0
+-0.0613701 -0.00190851 0
+-0.0621297 -0.00184753 0
+-0.0627606 -0.00178812 0
+-0.0632667 -0.00172869 0
+-0.0636569 -0.00167091 0
+-0.0639446 -0.00161718 0
+-0.0641449 -0.00156943 0
+-0.0642733 -0.00152873 0
+-0.064344 -0.0014953 0
+-0.0643701 -0.0014689 0
+-0.0643634 -0.00144928 0
+-0.0643354 -0.00143651 0
+-0.0642982 -0.00143151 0
+-0.0642668 -0.00143658 0
+-0.0642616 -0.00145625 0
+-0.0643131 -0.00149813 0
+-0.0644685 -0.00157391 0
+-0.0648007 -0.0016998 0
+-0.0654181 -0.00189578 0
+-0.0664732 -0.00218299 0
+-0.0681665 -0.00257917 0
+-0.0707401 -0.00309474 0
+-0.0744684 -0.00373618 0
+-0.0796706 -0.00452713 0
+-0.0867929 -0.00555408 0
+-0.0966048 -0.00702786 0
+-0.110495 -0.00932504 0
+-0.130725 -0.0129509 0
+-0.1604 -0.0183765 0
+-0.202885 -0.0257584 0
+-0.260635 -0.0346368 0
+-0.33372 -0.0437662 0
+-0.418601 -0.0512184 0
+-0.507782 -0.0547931 0
+-0.59063 -0.0526368 0
+-0.655276 -0.0438696 0
+-0.691126 -0.0290057 0
+-0.691357 -0.0100157 0
+-0.65478 0.0100191 0
+-0.586525 0.0276004 0
+-0.497209 0.0396952 0
+-0.400589 0.044568 0
+-0.310182 0.0422841 0
+-0.235906 0.0346529 0
+-0.182003 0.0245667 0
+-0.147042 0.0149725 0
+-0.125837 0.00792086 0
+-0.112215 0.00409547 0
+-0.101324 0.00296029 0
+-0.0906687 0.00333368 0
+-0.079861 0.00403438 0
+-0.0696717 0.00430357 0
+-0.0610534 0.00390408 0
+-0.0545543 0.00297978 0
+-0.0501817 0.00183171 0
+-0.0475553 0.000737271 0
+-0.0461457 -0.000137088 0
+-0.0454609 -0.000741607 0
+-0.0451386 -0.00110623 0
+-0.0449589 -0.00129603 0
+-0.0448139 -0.00137834 0
+-0.0446676 -0.00140614 0
+-0.0445209 -0.00141404 0
+-0.0443889 -0.00142115 0
+-0.0442894 -0.00143615 0
+-0.0442388 -0.00146208 0
+-0.0442515 -0.00149977 0
+-0.0443421 -0.00154982 0
+-0.0445281 -0.00161361 0
+-0.044832 -0.00169343 0
+-0.0452834 -0.00179217 0
+-0.0459201 -0.00191252 0
+-0.0467885 -0.00205594 0
+-0.0479409 -0.00222163 0
+-0.0494317 -0.00240602 0
+-0.0513114 -0.00260415 0
+-0.053621 -0.00281505 0
+-0.0563934 -0.00305483 0
+-0.0596788 -0.00338277 0
+-0.0636248 -0.00394677 0
+-0.0686647 -0.00505373 0
+-0.075894 -0.00726529 0
+-0.0877234 -0.0115078 0
+-0.108869 -0.0191695 0
+-0.147647 -0.032149 0
+-0.217354 -0.0528351 0
+-0.337379 -0.0840699 0
+-0.533596 -0.129255 0
+-0.837783 -0.192837 0
+-1.28604 -0.281246 0
+-1.9159 -0.403822 0
+-2.76061 -0.572327 0
+-3.83708 -0.796833 0
+-5.12343 -1.07599 0
+-6.52781 -1.38084 0
+-7.8683 -1.62996 0
+-8.93691 -1.63173 0
+-3.95191 -0.906479 0
+-1.73795 -0.229351 0
+-1.73795 1.11399 0
+-0.0110423 -0.000798714 0
+-0.027982 -0.00212646 0
+-0.0690477 -0.00485965 0
+-0.0993983 -0.00957799 0
+-0.14099 -0.0137089 0
+-0.180844 -0.0141315 0
+-0.204687 -0.0103063 0
+-0.205039 -0.00392176 0
+-0.18412 0.00244574 0
+-0.151192 0.00674725 0
+-0.117183 0.00822124 0
+-0.0901316 0.00731949 0
+-0.0733713 0.00511709 0
+-0.0662483 0.00267959 0
+-0.0660125 0.000694528 0
+-0.0695779 -0.000587216 0
+-0.0745357 -0.00122227 0
+-0.0794353 -0.00140355 0
+-0.0836315 -0.001334 0
+-0.0869915 -0.00116604 0
+-0.0896328 -0.000989907 0
+-0.0917491 -0.000846293 0
+-0.0935211 -0.000744998 0
+-0.0950831 -0.000680561 0
+-0.0965206 -0.000642404 0
+-0.0978803 -0.000620223 0
+-0.0991831 -0.000606198 0
+-0.100436 -0.000595397 0
+-0.101639 -0.000585314 0
+-0.102793 -0.000575113 0
+-0.1039 -0.00056488 0
+-0.104962 -0.000555048 0
+-0.105986 -0.000546059 0
+-0.106977 -0.000538218 0
+-0.107941 -0.000531665 0
+-0.108884 -0.000526435 0
+-0.109811 -0.000522536 0
+-0.110728 -0.00052005 0
+-0.111641 -0.000519236 0
+-0.112557 -0.000520675 0
+-0.113488 -0.000525437 0
+-0.114451 -0.000535259 0
+-0.115473 -0.000552693 0
+-0.116592 -0.000581109 0
+-0.117864 -0.00062442 0
+-0.119361 -0.000686428 0
+-0.12117 -0.000769938 0
+-0.123389 -0.000876304 0
+-0.126119 -0.00100683 0
+-0.129478 -0.00116787 0
+-0.133652 -0.00138032 0
+-0.138989 -0.00169118 0
+-0.146135 -0.00217987 0
+-0.156137 -0.00294884 0
+-0.170423 -0.00409062 0
+-0.190548 -0.00563417 0
+-0.217697 -0.00748781 0
+-0.252057 -0.00940705 0
+-0.292263 -0.0110124 0
+-0.335191 -0.0118657 0
+-0.376238 -0.0115897 0
+-0.410116 -0.00999283 0
+-0.431963 -0.00715857 0
+-0.438516 -0.00346337 0
+-0.428987 0.000489609 0
+-0.405396 0.00400929 0
+-0.372194 0.0064932 0
+-0.335217 0.00759104 0
+-0.300235 0.00730098 0
+-0.271539 0.00595757 0
+-0.25108 0.00410729 0
+-0.238424 0.00231646 0
+-0.231495 0.000991221 0
+-0.227683 0.000283041 0
+-0.224829 0.000106967 0
+-0.221739 0.000242684 0
+-0.21816 0.000456043 0
+-0.214442 0.000585267 0
+-0.211107 0.000568768 0
+-0.208552 0.000425096 0
+-0.206933 0.000212088 0
+-0.206186 -1.01656e-05 0
+-0.206123 -0.000200293 0
+-0.206524 -0.000340431 0
+-0.207199 -0.000431001 0
+-0.208013 -0.000482307 0
+-0.208884 -0.000507366 0
+-0.209773 -0.000517614 0
+-0.210666 -0.000521257 0
+-0.211564 -0.000523314 0
+-0.212474 -0.000526414 0
+-0.213404 -0.000531727 0
+-0.214364 -0.000539716 0
+-0.215364 -0.000550628 0
+-0.216413 -0.00056475 0
+-0.217524 -0.000582476 0
+-0.218712 -0.000604234 0
+-0.219994 -0.000630321 0
+-0.22139 -0.000660694 0
+-0.222916 -0.000694811 0
+-0.224591 -0.000731701 0
+-0.226425 -0.000770612 0
+-0.228427 -0.000812756 0
+-0.230617 -0.000864953 0
+-0.233054 -0.000946125 0
+-0.235903 -0.00109752 0
+-0.23956 -0.0013969 0
+-0.244851 -0.00197533 0
+-0.253325 -0.00303306 0
+-0.267646 -0.00484883 0
+-0.292017 -0.00777875 0
+-0.332602 -0.0122501 0
+-0.397896 -0.018776 0
+-0.499108 -0.0280432 0
+-0.650809 -0.041137 0
+-0.872125 -0.0599296 0
+-1.18841 -0.0875366 0
+-1.63217 -0.128564 0
+-2.24027 -0.188734 0
+-3.04268 -0.27358 0
+-4.03723 -0.386283 0
+-5.14436 -0.522833 0
+-6.14089 -0.635202 0
+-3.36389 -0.337908 0
+-1.84205 0.0290019 0
+-1.84205 0.758808 0
+-0.0027745 -0.000798714 0
+-0.00706867 -0.00212646 0
+-0.0177803 -0.00485965 0
+-0.0273583 -0.00957799 0
+-0.0410673 -0.0137089 0
+-0.055199 -0.0141315 0
+-0.0655054 -0.0103063 0
+-0.0694273 -0.00392176 0
+-0.0669817 0.00244574 0
+-0.0602346 0.00674725 0
+-0.0520134 0.00822124 0
+-0.044694 0.00731949 0
+-0.039577 0.00511709 0
+-0.0368975 0.00267959 0
+-0.0362031 0.000694528 0
+-0.0367904 -0.000587216 0
+-0.0380128 -0.00122227 0
+-0.0394165 -0.00140355 0
+-0.0407507 -0.001334 0
+-0.0419168 -0.00116604 0
+-0.0429069 -0.000989907 0
+-0.0437533 -0.000846293 0
+-0.0444985 -0.000744998 0
+-0.0451792 -0.000680561 0
+-0.0458217 -0.000642404 0
+-0.0464421 -0.000620223 0
+-0.0470484 -0.000606198 0
+-0.0476439 -0.000595397 0
+-0.0482294 -0.000585314 0
+-0.0488046 -0.000575113 0
+-0.0493696 -0.00056488 0
+-0.0499248 -0.000555048 0
+-0.050471 -0.000546059 0
+-0.0510093 -0.000538218 0
+-0.0515411 -0.000531665 0
+-0.0520676 -0.000526435 0
+-0.0525903 -0.000522536 0
+-0.0531105 -0.00052005 0
+-0.0536298 -0.000519236 0
+-0.0541506 -0.000520675 0
+-0.0546761 -0.000525437 0
+-0.0552115 -0.000535259 0
+-0.0557643 -0.000552693 0
+-0.0563455 -0.000581109 0
+-0.05697 -0.00062442 0
+-0.0576566 -0.000686428 0
+-0.0584266 -0.000769938 0
+-0.059303 -0.000876304 0
+-0.0603099 -0.00100683 0
+-0.0614779 -0.00116787 0
+-0.0628583 -0.00138032 0
+-0.0645496 -0.00169118 0
+-0.0667296 -0.00217987 0
+-0.0696785 -0.00294884 0
+-0.0737692 -0.00409062 0
+-0.0794035 -0.00563417 0
+-0.0868914 -0.00748781 0
+-0.0962986 -0.00940705 0
+-0.107311 -0.0110124 0
+-0.119177 -0.0118657 0
+-0.130767 -0.0115897 0
+-0.14076 -0.00999283 0
+-0.147918 -0.00715857 0
+-0.151382 -0.00346337 0
+-0.150892 0.000489609 0
+-0.146883 0.00400929 0
+-0.14039 0.0064932 0
+-0.132799 0.00759104 0
+-0.125498 0.00730098 0
+-0.119541 0.00595757 0
+-0.115433 0.00410729 0
+-0.113117 0.00231646 0
+-0.112126 0.000991221 0
+-0.111843 0.000283041 0
+-0.111736 0.000106967 0
+-0.111493 0.000242684 0
+-0.111037 0.000456043 0
+-0.110452 0.000585267 0
+-0.109883 0.000568768 0
+-0.109458 0.000425096 0
+-0.109246 0.000212088 0
+-0.109257 -1.01656e-05 0
+-0.109457 -0.000200293 0
+-0.109797 -0.000340431 0
+-0.110229 -0.000431001 0
+-0.110711 -0.000482307 0
+-0.111218 -0.000507366 0
+-0.111736 -0.000517614 0
+-0.112257 -0.000521257 0
+-0.112781 -0.000523314 0
+-0.113307 -0.000526414 0
+-0.113839 -0.000531727 0
+-0.114379 -0.000539716 0
+-0.114929 -0.000550628 0
+-0.115494 -0.00056475 0
+-0.116077 -0.000582476 0
+-0.116681 -0.000604234 0
+-0.117311 -0.000630321 0
+-0.117972 -0.000660694 0
+-0.118667 -0.000694811 0
+-0.119399 -0.000731701 0
+-0.120169 -0.000770612 0
+-0.120982 -0.000812756 0
+-0.121847 -0.000864953 0
+-0.122793 -0.000946125 0
+-0.123891 -0.00109752 0
+-0.125288 -0.0013969 0
+-0.127263 -0.00197533 0
+-0.130297 -0.00303306 0
+-0.135145 -0.00484883 0
+-0.142924 -0.00777875 0
+-0.155174 -0.0122501 0
+-0.17395 -0.018776 0
+-0.201994 -0.0280432 0
+-0.243131 -0.041137 0
+-0.30306 -0.0599296 0
+-0.390597 -0.0875366 0
+-0.519161 -0.128564 0
+-0.707895 -0.188734 0
+-0.981475 -0.27358 0
+-1.36776 -0.386283 0
+-1.89059 -0.522833 0
+-2.52579 -0.635202 0
+-1.88436 -0.337908 0
+-1.32564 0.0290019 0
+-1.32564 0.758808 0
+-0.151466 -0.194939 0
+-0.348577 -0.367573 0
+-0.77961 -0.605868 0
+0.102679 -0.882291 0
+1.16309 -1.06042 0
+2.22741 -1.06432 0
+3.13447 -0.907074 0
+3.78407 -0.649605 0
+4.152 -0.36794 0
+4.27803 -0.126038 0
+4.23778 0.0402477 0
+4.11245 0.125319 0
+3.96717 0.145268 0
+3.84192 0.125244 0
+3.75309 0.0888293 0
+3.7007 0.0523769 0
+3.6766 0.0240939 0
+3.67063 0.00596651 0
+3.67413 -0.00350457 0
+3.68116 -0.00703843 0
+3.68837 -0.00721466 0
+3.69428 -0.00591667 0
+3.69855 -0.00427728 0
+3.7014 -0.00284731 0
+3.7032 -0.00180922 0
+3.70435 -0.00115266 0
+3.70514 -0.000790789 0
+3.70576 -0.000624587 0
+3.70633 -0.000571627 0
+3.7069 -0.000574031 0
+3.70749 -0.000596375 0
+3.70811 -0.000619989 0
+3.70874 -0.000636986 0
+3.70938 -0.000645419 0
+3.71003 -0.000645866 0
+3.71066 -0.000639276 0
+3.71129 -0.000625778 0
+3.71189 -0.000604344 0
+3.71246 -0.00057343 0
+3.71299 -0.000533025 0
+3.71348 -0.000488447 0
+3.71393 -0.000455326 0
+3.71439 -0.000462866 0
+3.71494 -0.000548901 0
+3.71567 -0.000737344 0
+3.71666 -0.000991035 0
+3.71781 -0.00114663 0
+3.71867 -0.000865363 0
+3.71833 0.000335729 0
+3.71543 0.00290075 0
+3.70855 0.00687963 0
+3.69705 0.0115018 0
+3.68212 0.0149241 0
+3.66767 0.0144536 0
+3.66026 0.00740444 0
+3.66786 -0.00759476 0
+3.69725 -0.0293952 0
+3.75116 -0.053906 0
+3.82603 -0.0748716 0
+3.91173 -0.0857085 0
+3.99347 -0.0817411 0
+4.05545 -0.0619743 0
+4.08518 -0.0297276 0
+4.07705 0.00812338 0
+4.03399 0.043067 0
+3.96656 0.0674222 0
+3.89001 0.0765529 0
+3.81991 0.0701057 0
+3.76805 0.0518538 0
+3.73986 0.0281972 0
+3.73397 0.00588233 0
+3.74413 -0.0101572 0
+3.76213 -0.0179947 0
+3.78071 -0.0185861 0
+3.79534 -0.014626 0
+3.80444 -0.00909877 0
+3.80864 -0.00420427 0
+3.80961 -0.000967172 0
+3.80904 0.000571121 0
+3.80815 0.000896357 0
+3.80755 0.000597696 0
+3.80743 0.000123258 0
+3.80771 -0.000284693 0
+3.80826 -0.000547785 0
+3.80894 -0.00067849 0
+3.80966 -0.00072062 0
+3.81038 -0.000716324 0
+3.81107 -0.000694592 0
+3.81174 -0.000671464 0
+3.8124 -0.000654258 0
+3.81304 -0.000645798 0
+3.81369 -0.000647317 0
+3.81435 -0.000659934 0
+3.81503 -0.00068494 0
+3.81576 -0.000722984 0
+3.81653 -0.000772055 0
+3.81735 -0.000824058 0
+3.81821 -0.000859917 0
+3.81906 -0.000843649 0
+3.81977 -0.000716936 0
+3.82017 -0.000397767 0
+3.81996 0.000210138 0
+3.81878 0.00118609 0
+3.81625 0.00252404 0
+3.81224 0.00401059 0
+3.8072 0.00504222 0
+3.80279 0.00440496 0
+3.80269 0.000102987 0
+3.81327 -0.0105809 0
+3.84378 -0.030512 0
+3.90511 -0.0613277 0
+4.0063 -0.101185 0
+4.14843 -0.142132 0
+4.31687 -0.168443 0
+4.47485 -0.157974 0
+4.5632 -0.0883566 0
+4.51118 0.0520184 0
+4.25967 0.251514 0
+3.79205 0.467621 0
+3.16123 0.630819 0
+2.49845 0.66278 0
+1.99031 0.508142 0
+1.78469 0.205617 0
+1.55185 0.237926 0
+1.16026 0.393463 0
+1.16026 1.01203 0
+-0.849497 -0.721099 0
+-1.77859 -1.32555 0
+-3.71601 -2.20252 0
+-1.32511 -3.27321 0
+1.62554 -4.01108 0
+4.59561 -4.03441 0
+7.05185 -3.36334 0
+8.66501 -2.26279 0
+9.37813 -1.08109 0
+9.36013 -0.108069 0
+8.89424 0.506106 0
+8.26255 0.756978 0
+7.67047 0.737324 0
+7.22366 0.572029 0
+6.94459 0.367872 0
+6.806 0.190943 0
+6.76251 0.0675585 0
+6.77136 -0.00290028 0
+6.80146 -0.0336278 0
+6.83446 -0.0400637 0
+6.86189 -0.0346611 0
+6.88142 -0.0254665 0
+6.89384 -0.0167091 0
+6.90101 -0.010034 0
+6.90483 -0.00565014 0
+6.9068 -0.00313746 0
+6.90791 -0.00191705 0
+6.90875 -0.00147389 0
+6.90959 -0.00143133 0
+6.91056 -0.0015504 0
+6.91165 -0.00169956 0
+6.91284 -0.00181927 0
+6.91408 -0.001892 0
+6.91535 -0.00192055 0
+6.91661 -0.00191407 0
+6.91784 -0.00187993 0
+6.91902 -0.0018191 0
+6.92013 -0.00172449 0
+6.92113 -0.00158267 0
+6.92198 -0.00138177 0
+6.92261 -0.00112934 0
+6.92303 -0.000881333 0
+6.92333 -0.000772965 0
+6.9238 -0.00102227 0
+6.92491 -0.00185356 0
+6.92719 -0.00328387 0
+6.93081 -0.00476811 0
+6.93478 -0.00483695 0
+6.93616 -0.00105409 0
+6.92978 0.00927144 0
+6.90929 0.0273717 0
+6.87011 0.0506775 0
+6.81395 0.0710761 0
+6.75292 0.0754762 0
+6.71054 0.0497896 0
+6.71732 -0.0143845 0
+6.80115 -0.113224 0
+6.97527 -0.228028 0
+7.22918 -0.328791 0
+7.5268 -0.383327 0
+7.81349 -0.368432 0
+8.03019 -0.278684 0
+8.13002 -0.129556 0
+8.09189 0.046253 0
+7.92686 0.208099 0
+7.67497 0.319307 0
+7.39361 0.357914 0
+7.14098 0.322738 0
+6.96015 0.232683 0
+6.86902 0.119332 0
+6.85941 0.0154962 0
+6.90491 -0.0556565 0
+6.9733 -0.0863845 0
+7.03793 -0.0832113 0
+7.08388 -0.0605756 0
+7.10805 -0.0332701 0
+7.11512 -0.0112693 0
+7.11249 0.0016624 0
+7.10662 0.00644179 0
+7.10144 0.00608304 0
+7.09844 0.00359472 0
+7.0976 0.000965304 0
+7.09825 -0.000929604 0
+7.09967 -0.00196805 0
+7.10136 -0.00236727 0
+7.10305 -0.00240329 0
+7.10462 -0.00228615 0
+7.10606 -0.00213762 0
+7.1074 -0.00201292 0
+7.10868 -0.00192999 0
+7.10993 -0.00189141 0
+7.11118 -0.00189734 0
+7.11247 -0.00195138 0
+7.11385 -0.00206162 0
+7.11536 -0.00223765 0
+7.11707 -0.00248268 0
+7.11903 -0.00277931 0
+7.12123 -0.00306727 0
+7.1236 -0.00321319 0
+7.12586 -0.00297572 0
+7.12744 -0.00197778 0
+7.12736 0.0002889 0
+7.12417 0.00437959 0
+7.11604 0.0106567 0
+7.10125 0.0187932 0
+7.07937 0.0269269 0
+7.05331 0.0304674 0
+7.03259 0.0208242 0
+7.03719 -0.0151893 0
+7.10057 -0.0938894 0
+7.26865 -0.229406 0
+7.59081 -0.423342 0
+8.09941 -0.650738 0
+8.77915 -0.848184 0
+9.53578 -0.914603 0
+10.1831 -0.735701 0
+10.47 -0.234808 0
+10.1568 0.564656 0
+9.12614 1.49829 0
+7.47753 2.27943 0
+5.54339 2.59692 0
+3.77181 2.27972 0
+2.46264 1.51479 0
+1.53308 1.18913 0
+0.889368 1.04534 0
+0.889368 1.90608 0
+-1.92742 -1.33621 0
+-3.98347 -2.48701 0
+-8.20704 -4.19979 0
+-5.10489 -6.37537 0
+-1.19548 -7.92051 0
+2.65685 -7.88678 0
+5.56129 -6.26783 0
+7.00263 -3.70419 0
+6.9849 -1.06342 0
+5.92129 0.955481 0
+4.38785 2.03949 0
+2.8883 2.25648 0
+1.72508 1.90049 0
+0.989749 1.30731 0
+0.628213 0.729361 0
+0.523635 0.295477 0
+0.55896 0.032191 0
+0.64768 -0.0916608 0
+0.739335 -0.125322 0
+0.811855 -0.11262 0
+0.860557 -0.0833993 0
+0.889017 -0.0539605 0
+0.90327 -0.0309953 0
+0.908916 -0.0157111 0
+0.91009 -0.00685393 0
+0.909414 -0.00248918 0
+0.908323 -0.000852972 0
+0.907465 -0.000642023 0
+0.907032 -0.00102304 0
+0.906991 -0.00153271 0
+0.907227 -0.00195716 0
+0.907616 -0.00222995 0
+0.908063 -0.00235891 0
+0.908503 -0.00237942 0
+0.908898 -0.00232801 0
+0.90923 -0.00222852 0
+0.909478 -0.00208416 0
+0.90961 -0.00187254 0
+0.909557 -0.00154498 0
+0.909198 -0.00103729 0
+0.908363 -0.000307812 0
+0.906887 0.000581331 0
+0.904757 0.00134365 0
+0.902356 0.001367 0
+0.900711 -0.000220698 0
+0.901515 -0.00409891 0
+0.906502 -0.00976609 0
+0.915874 -0.0142204 0
+0.925966 -0.0111556 0
+0.927324 0.00790255 0
+0.905382 0.0493052 0
+0.845763 0.110287 0
+0.744291 0.17254 0
+0.618002 0.201757 0
+0.510354 0.15743 0
+0.484213 0.0117491 0
+0.601552 -0.23057 0
+0.896672 -0.523156 0
+1.35494 -0.787063 0
+1.90762 -0.936014 0
+2.44636 -0.907174 0
+2.85249 -0.68482 0
+3.03131 -0.308381 0
+2.94015 0.137414 0
+2.60136 0.546881 0
+2.09614 0.824527 0
+1.54076 0.913302 0
+1.05246 0.811042 0
+0.715903 0.569237 0
+0.561868 0.27337 0
+0.566159 0.0112088 0
+0.668252 -0.157746 0
+0.799799 -0.217929 0
+0.909325 -0.192733 0
+0.973488 -0.124735 0
+0.993953 -0.0537314 0
+0.986006 -0.00331822 0
+0.966843 0.0208283 0
+0.948539 0.02475 0
+0.936416 0.0182087 0
+0.930826 0.00918861 0
+0.929809 0.00198472 0
+0.93111 -0.0022273 0
+0.933105 -0.00396114 0
+0.934952 -0.00421111 0
+0.936364 -0.00381293 0
+0.937348 -0.00326818 0
+0.938014 -0.0028014 0
+0.938478 -0.00247518 0
+0.938832 -0.0022826 0
+0.939143 -0.00220079 0
+0.939463 -0.00221592 0
+0.939845 -0.00233247 0
+0.940358 -0.00257447 0
+0.941102 -0.00298052 0
+0.94221 -0.00359003 0
+0.943847 -0.00441527 0
+0.946172 -0.00539274 0
+0.949268 -0.00630838 0
+0.952988 -0.00669539 0
+0.956727 -0.00571741 0
+0.959093 -0.00207716 0
+0.957516 0.00595665 0
+0.947947 0.0202255 0
+0.924971 0.0417688 0
+0.882957 0.0689409 0
+0.819185 0.0942397 0
+0.740008 0.1 0
+0.670508 0.0543106 0
+0.66608 -0.0894613 0
+0.820623 -0.38395 0
+1.26137 -0.864092 0
+2.1184 -1.50777 0
+3.46292 -2.19271 0
+5.22668 -2.67836 0
+7.14051 -2.64953 0
+8.74676 -1.84106 0
+9.52425 -0.212832 0
+9.10528 1.91726 0
+7.48666 3.89805 0
+5.09561 4.98796 0
+2.62279 4.75254 0
+0.697661 3.43993 0
+-0.192108 2.13045 0
+-0.381764 1.25484 0
+-0.381764 1.90668 0
+-2.87695 -1.76664 0
+-6.0255 -3.35555 0
+-12.5452 -5.76227 0
+-10.0273 -8.89329 0
+-6.87245 -11.0754 0
+-4.07082 -10.6885 0
+-2.62758 -7.71113 0
+-3.00711 -3.32473 0
+-4.95783 0.887219 0
+-7.73316 3.73073 0
+-10.4977 4.80398 0
+-12.6621 4.42079 0
+-14.0074 3.24572 0
+-14.6176 1.91744 0
+-14.726 0.837694 0
+-14.5768 0.146256 0
+-14.3498 -0.194905 0
+-14.1441 -0.297367 0
+-13.9965 -0.273013 0
+-13.9074 -0.20181 0
+-13.8625 -0.128308 0
+-13.8456 -0.0708942 0
+-13.8437 -0.0329384 0
+-13.8483 -0.0111775 0
+-13.8546 -0.000607416 0
+-13.8604 0.00325809 0
+-13.8649 0.00367387 0
+-13.8683 0.00268627 0
+-13.8708 0.00141499 0
+-13.8727 0.000366853 0
+-13.8744 -0.000306403 0
+-13.876 -0.000629766 0
+-13.8777 -0.00069526 0
+-13.8795 -0.000600925 0
+-13.8814 -0.000423392 0
+-13.8835 -0.000207829 0
+-13.8856 3.93157e-05 0
+-13.8879 0.000359824 0
+-13.8903 0.000856082 0
+-13.893 0.00169678 0
+-13.8965 0.00308046 0
+-13.901 0.00510186 0
+-13.9071 0.00747856 0
+-13.915 0.00918022 0
+-13.9234 0.00821055 0
+-13.9296 0.00206924 0
+-13.9289 -0.0104992 0
+-13.9167 -0.026403 0
+-13.8928 -0.0351111 0
+-13.8661 -0.0187639 0
+-13.8576 0.0408157 0
+-13.8948 0.147453 0
+-13.9965 0.274182 0
+-14.1521 0.357404 0
+-14.3082 0.313436 0
+-14.374 0.0775509 0
+-14.2527 -0.351879 0
+-13.8847 -0.891112 0
+-13.2832 -1.38856 0
+-12.5425 -1.67681 0
+-11.8153 -1.6343 0
+-11.27 -1.23021 0
+-11.0404 -0.537924 0
+-11.1874 0.284432 0
+-11.68 1.03941 0
+-12.4033 1.54785 0
+-13.1917 1.70167 0
+-13.8768 1.49622 0
+-14.3384 1.03082 0
+-14.5378 0.472763 0
+-14.5202 -0.0063889 0
+-14.3833 -0.294692 0
+-14.2293 -0.371932 0
+-14.1261 -0.295886 0
+-14.0938 -0.156996 0
+-14.116 -0.0315889 0
+-14.162 0.0427192 0
+-14.2063 0.065113 0
+-14.2361 0.0545694 0
+-14.2503 0.0323752 0
+-14.2536 0.0124938 0
+-14.2517 0.00016294 0
+-14.2489 -0.0051014 0
+-14.2469 -0.00591802 0
+-14.2463 -0.00476838 0
+-14.247 -0.00319739 0
+-14.2483 -0.00188574 0
+-14.2501 -0.000995377 0
+-14.2521 -0.000469258 0
+-14.2542 -0.000201825 0
+-14.2563 -0.000108978 0
+-14.2584 -0.000148055 0
+-14.2604 -0.000320668 0
+-14.2623 -0.000671508 0
+-14.264 -0.00128507 0
+-14.2653 -0.00227407 0
+-14.266 -0.00374814 0
+-14.2656 -0.00574957 0
+-14.2638 -0.00813931 0
+-14.2601 -0.0104165 0
+-14.2543 -0.0114643 0
+-14.2471 -0.0092449 0
+-14.2406 -0.000534162 0
+-14.2395 0.019062 0
+-14.252 0.0543109 0
+-14.291 0.107922 0
+-14.3721 0.175346 0
+-14.508 0.235899 0
+-14.6947 0.24102 0
+-14.8887 0.104495 0
+-14.9785 -0.294152 0
+-14.7657 -1.0769 0
+-13.9801 -2.29331 0
+-12.356 -3.81683 0
+-9.77063 -5.26374 0
+-6.39827 -6.02189 0
+-2.78015 -5.45919 0
+0.288382 -3.28136 0
+2.06505 0.140592 0
+2.22896 3.73414 0
+1.08183 6.13509 0
+-0.576128 6.41051 0
+-1.81481 4.67861 0
+-1.77314 2.18404 0
+-1.19645 0.715708 0
+-1.19645 1.24631 0
+-3.34236 -1.90466 0
+-7.19327 -3.69037 0
+-15.32 -6.41554 0
+-14.2423 -9.97099 0
+-13.0847 -12.2331 0
+-12.7248 -11.0484 0
+-13.9404 -6.49558 0
+-16.8465 -0.418698 0
+-20.7994 4.83998 0
+-24.7731 7.70438 0
+-27.8887 7.91944 0
+-29.7489 6.28091 0
+-30.4503 3.94706 0
+-30.3736 1.84067 0
+-29.9387 0.402714 0
+-29.4518 -0.340641 0
+-29.0681 -0.578685 0
+-28.8262 -0.539306 0
+-28.7035 -0.3958 0
+-28.6589 -0.246463 0
+-28.656 -0.131264 0
+-28.6702 -0.0567072 0
+-28.6881 -0.0151202 0
+-28.7037 0.0043533 0
+-28.7153 0.011009 0
+-28.7234 0.0113218 0
+-28.729 0.00920557 0
+-28.7331 0.00672158 0
+-28.7364 0.00475708 0
+-28.7397 0.00354142 0
+-28.743 0.00299466 0
+-28.7466 0.0029287 0
+-28.7505 0.00314989 0
+-28.7546 0.00350797 0
+-28.7589 0.00390491 0
+-28.7635 0.00428705 0
+-28.7681 0.00464653 0
+-28.7728 0.00503285 0
+-28.7775 0.00558146 0
+-28.7824 0.00656461 0
+-28.7878 0.00841357 0
+-28.7943 0.0116062 0
+-28.8031 0.0162828 0
+-28.8155 0.0214945 0
+-28.8316 0.0242996 0
+-28.8491 0.0195471 0
+-28.8613 0.00175338 0
+-28.8579 -0.0298487 0
+-28.8288 -0.0642374 0
+-28.7729 -0.0746386 0
+-28.7065 -0.0256836 0
+-28.6625 0.103536 0
+-28.6761 0.287698 0
+-28.7554 0.436755 0
+-28.8581 0.416033 0
+-28.8909 0.110387 0
+-28.7456 -0.497181 0
+-28.353 -1.28379 0
+-27.7253 -2.01623 0
+-26.9629 -2.4392 0
+-26.2244 -2.37289 0
+-25.6791 -1.77551 0
+-25.4602 -0.756783 0
+-25.6286 0.452786 0
+-26.1556 1.56642 0
+-26.9294 2.32167 0
+-27.7828 2.55507 0
+-28.5386 2.25201 0
+-29.0644 1.55655 0
+-29.3167 0.725112 0
+-29.3494 0.0263481 0
+-29.2757 -0.368462 0
+-29.2063 -0.44129 0
+-29.2024 -0.299741 0
+-29.2655 -0.0939694 0
+-29.3601 0.0630471 0
+-29.447 0.129645 0
+-29.5039 0.122036 0
+-29.5288 0.0794875 0
+-29.5319 0.0354195 0
+-29.5254 0.00602243 0
+-29.5181 -0.00710609 0
+-29.514 -0.00926841 0
+-29.5134 -0.00646047 0
+-29.5155 -0.00263865 0
+-29.5192 0.000451015 0
+-29.5235 0.00244603 0
+-29.5281 0.00355669 0
+-29.5326 0.00409652 0
+-29.5371 0.00430663 0
+-29.5416 0.00433167 0
+-29.546 0.00423759 0
+-29.5503 0.00402666 0
+-29.5546 0.00364255 0
+-29.5589 0.00296603 0
+-29.5629 0.00181219 0
+-29.5666 -5.36052e-05 0
+-29.5695 -0.00286554 0
+-29.5709 -0.00674784 0
+-29.5698 -0.0115081 0
+-29.565 -0.0162959 0
+-29.5551 -0.0190935 0
+-29.5396 -0.016041 0
+-29.5198 -0.000749735 0
+-29.5014 0.0358962 0
+-29.4978 0.104301 0
+-29.5334 0.21096 0
+-29.6441 0.346588 0
+-29.8685 0.465407 0
+-30.2225 0.458541 0
+-30.6527 0.136021 0
+-30.9772 -0.752414 0
+-30.849 -2.42146 0
+-29.796 -4.86988 0
+-27.3798 -7.67994 0
+-23.4503 -9.95137 0
+-18.3669 -10.5426 0
+-13.0044 -8.64388 0
+-8.44357 -4.42022 0
+-5.46203 0.752596 0
+-4.13318 4.80625 0
+-3.81423 6.09156 0
+-3.53057 4.39494 0
+-2.35093 1.15596 0
+-1.22172 -0.35223 0
+-1.22172 0.422858 0
+-3.31072 -1.80176 0
+-7.37184 -3.5424 0
+-16.1145 -6.18199 0
+-16.5434 -9.54211 0
+-17.5229 -11.2536 0
+-19.6229 -8.94857 0
+-23.1313 -2.98716 0
+-27.6558 4.10564 0
+-32.2183 9.4024 0
+-35.7762 11.2622 0
+-37.7513 9.89446 0
+-38.2114 6.74094 0
+-37.6728 3.40847 0
+-36.7495 0.917295 0
+-35.8897 -0.457181 0
+-35.2959 -0.934515 0
+-34.9811 -0.893482 0
+-34.8682 -0.652303 0
+-34.8664 -0.397593 0
+-34.9085 -0.20442 0
+-34.9566 -0.0832123 0
+-34.9951 -0.0183057 0
+-35.0207 0.0104814 0
+-35.0358 0.0193591 0
+-35.0438 0.0189753 0
+-35.0479 0.0153959 0
+-35.0503 0.0116105 0
+-35.0524 0.00880641 0
+-35.0549 0.00721551 0
+-35.0581 0.00663719 0
+-35.0618 0.00675409 0
+-35.0662 0.00726923 0
+-35.071 0.00795129 0
+-35.0762 0.00865919 0
+-35.0817 0.00932258 0
+-35.0873 0.00990612 0
+-35.0931 0.0104091 0
+-35.099 0.010872 0
+-35.1048 0.0114026 0
+-35.1105 0.0122801 0
+-35.1162 0.0140844 0
+-35.1224 0.0177229 0
+-35.1302 0.0241447 0
+-35.1421 0.0333832 0
+-35.1607 0.042812 0
+-35.1866 0.045446 0
+-35.2153 0.0304514 0
+-35.2338 -0.0113299 0
+-35.2219 -0.0761995 0
+-35.1601 -0.136463 0
+-35.0435 -0.142281 0
+-34.8913 -0.0487118 0
+-34.7399 0.13634 0
+-34.6174 0.314261 0
+-34.5131 0.311666 0
+-34.37 -0.032768 0
+-34.1147 -0.752464 0
+-33.7075 -1.69098 0
+-33.1743 -2.54944 0
+-32.5979 -3.01563 0
+-32.0828 -2.88802 0
+-31.7242 -2.13414 0
+-31.591 -0.890018 0
+-31.7157 0.577528 0
+-32.0893 1.93996 0
+-32.6599 2.89222 0
+-33.3361 3.2313 0
+-33.9994 2.91532 0
+-34.5387 2.0958 0
+-34.8994 1.08587 0
+-35.1085 0.235388 0
+-35.2468 -0.230155 0
+-35.3907 -0.297404 0
+-35.5675 -0.122938 0
+-35.7543 0.0928427 0
+-35.9094 0.218228 0
+-36.0058 0.226011 0
+-36.0434 0.159646 0
+-36.0417 0.0777415 0
+-36.0239 0.0176675 0
+-36.0066 -0.0112836 0
+-35.9967 -0.0170311 0
+-35.9943 -0.0115996 0
+-35.9971 -0.00373214 0
+-36.0022 0.00254997 0
+-36.0082 0.00643345 0
+-36.0142 0.00845213 0
+-36.02 0.00935185 0
+-36.0256 0.0096695 0
+-36.031 0.00970158 0
+-36.0362 0.0095932 0
+-36.0414 0.00940539 0
+-36.0465 0.00914169 0
+-36.0516 0.0087546 0
+-36.0568 0.00813043 0
+-36.062 0.00706608 0
+-36.0673 0.00526204 0
+-36.0725 0.0023354 0
+-36.0772 -0.00212474 0
+-36.0803 -0.00840742 0
+-36.0802 -0.0163876 0
+-36.0743 -0.0250129 0
+-36.0589 -0.0314424 0
+-36.0298 -0.0297715 0
+-35.9844 -0.00952237 0
+-35.9254 0.0452528 0
+-35.8683 0.153928 0
+-35.8514 0.329642 0
+-35.9414 0.555397 0
+-36.2247 0.741814 0
+-36.7649 0.67623 0
+-37.5186 0.00129035 0
+-38.2308 -1.70924 0
+-38.3812 -4.71948 0
+-37.278 -8.78315 0
+-34.3434 -12.8859 0
+-29.4894 -15.3966 0
+-23.3362 -14.7971 0
+-17.0425 -10.7139 0
+-11.7648 -4.52513 0
+-8.07239 1.11382 0
+-5.73162 3.75079 0
+-4.0106 2.67392 0
+-2.09472 -0.541976 0
+-0.822259 -1.53427 0
+-0.822259 -0.233753 0
+-2.979 -1.57016 0
+-6.85419 -3.10534 0
+-15.311 -5.38037 0
+-16.746 -8.10716 0
+-19.1119 -8.88774 0
+-22.5675 -5.49307 0
+-26.8472 1.29249 0
+-31.1448 8.40317 0
+-34.4319 12.6894 0
+-36.0177 12.8479 0
+-35.9031 9.77987 0
+-34.6841 5.52181 0
+-33.1443 1.8687 0
+-31.8699 -0.357183 0
+-31.0966 -1.23055 0
+-30.7805 -1.25067 0
+-30.7551 -0.918915 0
+-30.857 -0.550391 0
+-30.9804 -0.274204 0
+-31.0777 -0.107231 0
+-31.1384 -0.0224875 0
+-31.1693 0.0125504 0
+-31.181 0.0221128 0
+-31.1825 0.0208272 0
+-31.1799 0.0163672 0
+-31.1767 0.0121671 0
+-31.1745 0.00938115 0
+-31.1739 0.00812253 0
+-31.1748 0.00806476 0
+-31.1769 0.00875411 0
+-31.18 0.00982399 0
+-31.1838 0.0110195 0
+-31.188 0.0121637 0
+-31.1926 0.0131899 0
+-31.1974 0.0141012 0
+-31.2024 0.0148975 0
+-31.2076 0.0155999 0
+-31.213 0.0162486 0
+-31.2185 0.0168799 0
+-31.2239 0.0176559 0
+-31.2289 0.0190789 0
+-31.2333 0.0221889 0
+-31.2378 0.0286223 0
+-31.2444 0.0399252 0
+-31.257 0.0554122 0
+-31.2804 0.0688564 0
+-31.3162 0.0661781 0
+-31.356 0.0285219 0
+-31.377 -0.0553007 0
+-31.3432 -0.170266 0
+-31.2194 -0.266106 0
+-30.9892 -0.278854 0
+-30.6655 -0.18741 0
+-30.28 -0.0712143 0
+-29.861 -0.107341 0
+-29.4209 -0.472917 0
+-28.971 -1.20242 0
+-28.547 -2.11504 0
+-28.2081 -2.88835 0
+-27.9986 -3.22515 0
+-27.9111 -2.97557 0
+-27.8971 -2.1481 0
+-27.908 -0.879152 0
+-27.925 0.594471 0
+-27.9707 1.98565 0
+-28.1012 3.02272 0
+-28.3731 3.50316 0
+-28.7939 3.33616 0
+-29.3066 2.60847 0
+-29.8338 1.61312 0
+-30.331 0.732553 0
+-30.7925 0.231319 0
+-31.2183 0.128478 0
+-31.5875 0.246232 0
+-31.8649 0.370229 0
+-32.0292 0.382513 0
+-32.0905 0.287329 0
+-32.0843 0.153435 0
+-32.051 0.0445194 0
+-32.0194 -0.013941 0
+-32.0013 -0.0294546 0
+-31.9962 -0.0220504 0
+-31.9993 -0.00856209 0
+-32.0055 0.0025155 0
+-32.0122 0.0092115 0
+-32.0182 0.0125019 0
+-32.0236 0.013854 0
+-32.0286 0.0142983 0
+-32.0333 0.0143515 0
+-32.0378 0.0142153 0
+-32.0421 0.0139713 0
+-32.0464 0.0136577 0
+-32.0505 0.0132776 0
+-32.0546 0.0128088 0
+-32.0586 0.0121807 0
+-32.0628 0.0112332 0
+-32.0672 0.00970292 0
+-32.0721 0.00720461 0
+-32.0774 0.0032174 0
+-32.083 -0.00285501 0
+-32.0878 -0.0115368 0
+-32.0899 -0.0229867 0
+-32.085 -0.0363553 0
+-32.0662 -0.0485603 0
+-32.0234 -0.0522652 0
+-31.9451 -0.0330877 0
+-31.8239 0.0327074 0
+-31.6699 0.175699 0
+-31.5311 0.416595 0
+-31.5115 0.72222 0
+-31.7646 0.929306 0
+-32.4286 0.665261 0
+-33.4907 -0.647069 0
+-34.6303 -3.57997 0
+-35.1664 -8.24703 0
+-34.2473 -13.805 0
+-31.276 -18.3678 0
+-26.3398 -19.7333 0
+-20.2996 -16.7541 0
+-14.388 -10.4368 0
+-9.55873 -3.71542 0
+-6.06923 0.261293 0
+-3.59893 0.203621 0
+-1.5137 -2.33543 0
+-0.405745 -2.51802 0
+-0.405745 -0.630538 0
+-2.5502 -1.30532 0
+-6.00507 -2.57092 0
+-13.5731 -4.37191 0
+-15.3679 -6.31241 0
+-18.1066 -6.14906 0
+-21.5501 -2.04965 0
+-25.0206 4.763 0
+-27.5857 10.9681 0
+-28.5192 13.623 0
+-27.7355 12.0642 0
+-25.8302 7.87458 0
+-23.6998 3.39137 0
+-22.0558 0.224648 0
+-21.1704 -1.24263 0
+-20.9333 -1.46769 0
+-21.0683 -1.11574 0
+-21.323 -0.664176 0
+-21.5501 -0.323393 0
+-21.6988 -0.125496 0
+-21.7742 -0.031859 0
+-21.8001 0.00341722 0
+-21.7996 0.0120146 0
+-21.7884 0.010873 0
+-21.7752 0.0075922 0
+-21.764 0.00510837 0
+-21.756 0.00414601 0
+-21.7511 0.00450725 0
+-21.7489 0.00582332 0
+-21.7485 0.00768076 0
+-21.7494 0.00966987 0
+-21.7512 0.0115833 0
+-21.7536 0.0133306 0
+-21.7562 0.0148186 0
+-21.7591 0.0160755 0
+-21.7622 0.0171958 0
+-21.7656 0.0181977 0
+-21.7691 0.0191337 0
+-21.773 0.0200904 0
+-21.7772 0.0210505 0
+-21.7815 0.0220318 0
+-21.7858 0.0233061 0
+-21.7892 0.025604 0
+-21.7912 0.0305671 0
+-21.792 0.0407566 0
+-21.7946 0.057946 0
+-21.8049 0.0791722 0
+-21.8303 0.0915598 0
+-21.8722 0.0703978 0
+-21.9154 -0.0121043 0
+-21.9205 -0.165183 0
+-21.8284 -0.358181 0
+-21.581 -0.526295 0
+-21.148 -0.620424 0
+-20.5444 -0.674847 0
+-19.8296 -0.822168 0
+-19.0983 -1.20425 0
+-18.4731 -1.82756 0
+-18.0882 -2.49997 0
+-18.0389 -2.9377 0
+-18.3088 -2.95533 0
+-18.7432 -2.54116 0
+-19.1287 -1.76265 0
+-19.2973 -0.710564 0
+-19.1804 0.477472 0
+-18.8271 1.6324 0
+-18.4002 2.59579 0
+-18.1267 3.22959 0
+-18.1815 3.39094 0
+-18.591 3.01804 0
+-19.2573 2.27939 0
+-20.0404 1.51568 0
+-20.8152 1.00612 0
+-21.4848 0.798038 0
+-21.9826 0.744019 0
+-22.2829 0.67056 0
+-22.4083 0.507914 0
+-22.4173 0.296266 0
+-22.3758 0.111974 0
+-22.332 0.000682194 0
+-22.3067 -0.0392217 0
+-22.3004 -0.0357624 0
+-22.305 -0.017424 0
+-22.3129 -0.000654022 0
+-22.32 0.0096379 0
+-22.3253 0.0145409 0
+-22.3293 0.0164607 0
+-22.3325 0.017098 0
+-22.3355 0.017267 0
+-22.3384 0.017231 0
+-22.3412 0.0170258 0
+-22.3439 0.0166763 0
+-22.3464 0.0162142 0
+-22.3488 0.0156395 0
+-22.3509 0.0149538 0
+-22.3529 0.0141376 0
+-22.3547 0.0130882 0
+-22.3567 0.011632 0
+-22.359 0.00950059 0
+-22.362 0.00626001 0
+-22.3662 0.00132497 0
+-22.3717 -0.00600551 0
+-22.3782 -0.0165247 0
+-22.3837 -0.0308796 0
+-22.3833 -0.0489231 0
+-22.3672 -0.0683634 0
+-22.3182 -0.0820737 0
+-22.2118 -0.0737285 0
+-22.0225 -0.0135356 0
+-21.7443 0.138378 0
+-21.4257 0.403572 0
+-21.2067 0.7103 0
+-21.3163 0.774856 0
+-21.9781 0.014743 0
+-23.2155 -2.34252 0
+-24.6542 -6.80836 0
+-25.5114 -12.9478 0
+-24.9053 -18.974 0
+-22.3668 -22.2718 0
+-18.1939 -20.9269 0
+-13.3288 -15.3019 0
+-8.8184 -8.22583 0
+-5.28704 -3.27007 0
+-2.82824 -2.25518 0
+-0.978007 -3.81433 0
+-0.15147 -3.1826 0
+-0.15147 -0.812884 0
+-2.13782 -1.06113 0
+-5.07939 -2.06362 0
+-11.4861 -3.41299 0
+-13.1531 -4.64546 0
+-15.5072 -3.79495 0
+-18.0272 0.470241 0
+-19.8764 6.61216 0
+-20.3047 11.3964 0
+-19.103 12.4211 0
+-16.7718 9.73302 0
+-14.2361 5.33884 0
+-12.3163 1.47148 0
+-11.3561 -0.735539 0
+-11.2159 -1.38289 0
+-11.5225 -1.16107 0
+-11.9325 -0.705726 0
+-12.2551 -0.341659 0
+-12.4408 -0.137704 0
+-12.5161 -0.0501804 0
+-12.5264 -0.0216592 0
+-12.5077 -0.0152775 0
+-12.4815 -0.0142205 0
+-12.4575 -0.0130912 0
+-12.439 -0.0109521 0
+-12.4261 -0.00785347 0
+-12.4178 -0.0041977 0
+-12.4128 -0.000481743 0
+-12.4101 0.00313656 0
+-12.409 0.00652595 0
+-12.4088 0.00944208 0
+-12.4091 0.0119176 0
+-12.4099 0.0140577 0
+-12.4109 0.0157925 0
+-12.412 0.0172248 0
+-12.4134 0.0185472 0
+-12.415 0.0197435 0
+-12.4167 0.0208885 0
+-12.4188 0.0221756 0
+-12.4214 0.0235757 0
+-12.4244 0.0250457 0
+-12.4278 0.0267169 0
+-12.431 0.0288178 0
+-12.4328 0.0323079 0
+-12.4316 0.0395886 0
+-12.4274 0.0537065 0
+-12.4234 0.0752145 0
+-12.4277 0.0958483 0
+-12.4488 0.0914196 0
+-12.4838 0.0229429 0
+-12.5035 -0.14558 0
+-12.4435 -0.418163 0
+-12.2183 -0.751492 0
+-11.7576 -1.08115 0
+-11.0512 -1.38122 0
+-10.1788 -1.69461 0
+-9.30906 -2.07404 0
+-8.66598 -2.47067 0
+-8.46059 -2.7054 0
+-8.7917 -2.60663 0
+-9.55303 -2.19402 0
+-10.4387 -1.65555 0
+-11.1256 -1.07577 0
+-11.4037 -0.43251 0
+-11.19 0.263772 0
+-10.5306 0.972983 0
+-9.6175 1.68268 0
+-8.78887 2.40094 0
+-8.38988 2.99194 0
+-8.56032 3.18847 0
+-9.21464 2.93371 0
+-10.1377 2.43875 0
+-11.0912 1.95955 0
+-11.8864 1.59324 0
+-12.4233 1.281 0
+-12.6984 0.945626 0
+-12.7799 0.58937 0
+-12.7618 0.278254 0
+-12.7208 0.070924 0
+-12.6954 -0.0247556 0
+-12.6916 -0.0429219 0
+-12.7004 -0.0269883 0
+-12.7115 -0.00634227 0
+-12.7197 0.0075544 0
+-12.7243 0.0142708 0
+-12.7267 0.0168766 0
+-12.7281 0.0178542 0
+-12.7293 0.0182955 0
+-12.7305 0.0185237 0
+-12.7318 0.0185574 0
+-12.7331 0.0183305 0
+-12.7343 0.0178752 0
+-12.7354 0.0172488 0
+-12.7361 0.0164318 0
+-12.7366 0.0154343 0
+-12.7368 0.0142749 0
+-12.7365 0.0128732 0
+-12.736 0.011126 0
+-12.7354 0.00890381 0
+-12.7351 0.00591637 0
+-12.7355 0.00175408 0
+-12.7374 -0.00408412 0
+-12.7416 -0.0123437 0
+-12.7485 -0.024031 0
+-12.7571 -0.0402744 0
+-12.7634 -0.062059 0
+-12.7563 -0.0891557 0
+-12.7129 -0.117202 0
+-12.5943 -0.132097 0
+-12.352 -0.103975 0
+-11.9545 0.00614768 0
+-11.4426 0.198398 0
+-10.9869 0.319166 0
+-10.8862 -0.0859904 0
+-11.435 -1.79374 0
+-12.6752 -5.56816 0
+-14.1941 -11.4289 0
+-15.1954 -17.9726 0
+-14.9056 -22.5617 0
+-13.0626 -22.7699 0
+-10.0956 -18.269 0
+-6.8392 -11.4822 0
+-4.04306 -6.06621 0
+-2.08837 -4.20987 0
+-0.624853 -4.82117 0
+-0.0553199 -3.54858 0
+-0.0553199 -0.861314 0
+-1.77764 -0.857343 0
+-4.20847 -1.6386 0
+-9.43888 -2.62516 0
+-10.745 -3.33932 0
+-12.3949 -2.14506 0
+-13.7474 1.82262 0
+-14.0436 6.90838 0
+-12.8919 10.2447 0
+-10.5774 10.1066 0
+-7.93383 7.08948 0
+-5.84933 3.25433 0
+-4.78819 0.410317 0
+-4.66409 -0.859658 0
+-5.06478 -0.982224 0
+-5.57339 -0.65247 0
+-5.95326 -0.325883 0
+-6.15135 -0.143587 0
+-6.21288 -0.0762004 0
+-6.20241 -0.0606766 0
+-6.16651 -0.0575775 0
+-6.12893 -0.0528771 0
+-6.09838 -0.0447997 0
+-6.07616 -0.0353308 0
+-6.06087 -0.0262626 0
+-6.05075 -0.0179972 0
+-6.04424 -0.0107216 0
+-6.04004 -0.00470049 0
+-6.03732 0.000393098 0
+-6.03558 0.00477503 0
+-6.03442 0.00826065 0
+-6.03362 0.0110993 0
+-6.03315 0.013578 0
+-6.03291 0.0155384 0
+-6.03284 0.0171354 0
+-6.03299 0.018688 0
+-6.03333 0.0200713 0
+-6.03381 0.0213575 0
+-6.03455 0.0228995 0
+-6.03563 0.0246456 0
+-6.03716 0.0265675 0
+-6.03936 0.0289033 0
+-6.0421 0.0315441 0
+-6.04442 0.0346186 0
+-6.0444 0.0395563 0
+-6.03954 0.0488405 0
+-6.02878 0.0644392 0
+-6.01551 0.082566 0
+-6.00773 0.0836356 0
+-6.01027 0.025469 0
+-6.00797 -0.147892 0
+-5.94863 -0.477508 0
+-5.74468 -0.955467 0
+-5.30899 -1.51685 0
+-4.61749 -2.07275 0
+-3.7644 -2.54774 0
+-2.96962 -2.86885 0
+-2.51669 -2.92364 0
+-2.63392 -2.58821 0
+-3.36305 -1.87754 0
+-4.47764 -1.07947 0
+-5.53978 -0.593429 0
+-6.26572 -0.349862 0
+-6.54482 -0.153433 0
+-6.33517 0.0541021 0
+-5.63806 0.275851 0
+-4.53517 0.579786 0
+-3.31613 1.18187 0
+-2.46956 2.14536 0
+-2.27383 2.99273 0
+-2.71522 3.37508 0
+-3.56349 3.28702 0
+-4.51022 2.90628 0
+-5.3011 2.38412 0
+-5.8132 1.7931 0
+-6.05844 1.19087 0
+-6.12915 0.66008 0
+-6.12732 0.276428 0
+-6.11855 0.0621576 0
+-6.12463 -0.0186822 0
+-6.14098 -0.0265626 0
+-6.1572 -0.0107655 0
+-6.16769 0.00414555 0
+-6.17241 0.0122798 0
+-6.17372 0.0155893 0
+-6.17384 0.0169946 0
+-6.1739 0.0179184 0
+-6.17417 0.0185729 0
+-6.1746 0.0189538 0
+-6.17508 0.0190336 0
+-6.17547 0.0187307 0
+-6.17573 0.0181315 0
+-6.17581 0.0173341 0
+-6.17564 0.0162678 0
+-6.17514 0.0149366 0
+-6.17426 0.0133918 0
+-6.17291 0.0115241 0
+-6.17103 0.00925118 0
+-6.16868 0.0065489 0
+-6.16596 0.00320695 0
+-6.16316 -0.0010487 0
+-6.16079 -0.00645311 0
+-6.15967 -0.0134686 0
+-6.16087 -0.022824 0
+-6.16568 -0.0354703 0
+-6.17479 -0.0529452 0
+-6.18622 -0.0777226 0
+-6.19037 -0.113058 0
+-6.16138 -0.161088 0
+-6.04842 -0.21693 0
+-5.77942 -0.262849 0
+-5.29689 -0.284136 0
+-4.63313 -0.344595 0
+-3.98668 -0.732445 0
+-3.70892 -2.07149 0
+-4.12734 -5.14974 0
+-5.26681 -10.2894 0
+-6.69101 -16.5484 0
+-7.66988 -21.5828 0
+-7.61713 -22.8226 0
+-6.46405 -19.4221 0
+-4.6654 -13.2809 0
+-2.8705 -7.86111 0
+-1.5746 -5.50576 0
+-0.456214 -5.38948 0
+-0.0561844 -3.69902 0
+-0.0561844 -0.842002 0
+-1.4709 -0.694733 0
+-3.44652 -1.3049 0
+-7.63646 -2.02967 0
+-8.55327 -2.42253 0
+-9.52779 -1.17057 0
+-9.94146 2.23627 0
+-9.24619 6.21309 0
+-7.40621 8.40468 0
+-5.00463 7.70496 0
+-2.89669 4.98152 0
+-1.68468 2.0423 0
+-1.43281 0.158433 0
+-1.78464 -0.507839 0
+-2.29397 -0.47292 0
+-2.67807 -0.268392 0
+-2.86539 -0.138579 0
+-2.90733 -0.101671 0
+-2.87953 -0.104018 0
+-2.8338 -0.106434 0
+-2.79292 -0.0984751 0
+-2.76231 -0.0835085 0
+-2.74096 -0.0661797 0
+-2.7264 -0.0499121 0
+-2.71634 -0.036336 0
+-2.70935 -0.0250098 0
+-2.70446 -0.0156349 0
+-2.70081 -0.00836409 0
+-2.698 -0.00243407 0
+-2.69587 0.00262744 0
+-2.69413 0.00650382 0
+-2.69268 0.00962674 0
+-2.69158 0.0124662 0
+-2.69072 0.0146596 0
+-2.69 0.0164099 0
+-2.68955 0.0182192 0
+-2.68927 0.019777 0
+-2.68905 0.0211273 0
+-2.68899 0.0228316 0
+-2.6891 0.0247407 0
+-2.68936 0.0268188 0
+-2.69007 0.0295999 0
+-2.69144 0.032897 0
+-2.69315 0.0363258 0
+-2.69405 0.0404407 0
+-2.69137 0.0461507 0
+-2.68128 0.0543338 0
+-2.66154 0.0628193 0
+-2.63405 0.0561317 0
+-2.60241 -0.0061795 0
+-2.56034 -0.18997 0
+-2.47358 -0.564284 0
+-2.27303 -1.15604 0
+-1.88244 -1.90747 0
+-1.2831 -2.67212 0
+-0.580347 -3.25053 0
+-0.0129576 -3.43628 0
+0.13345 -3.07009 0
+-0.316997 -2.1378 0
+-1.29401 -0.900565 0
+-2.4472 0.0737031 0
+-3.2224 0.181751 0
+-3.6405 0.0682225 0
+-3.79503 0.00108028 0
+-3.70352 -0.0374199 0
+-3.32198 -0.105699 0
+-2.52347 -0.218739 0
+-1.26319 -0.0784232 0
+-0.149579 1.03174 0
+0.404964 2.43818 0
+0.289847 3.49019 0
+-0.32188 3.89874 0
+-1.11488 3.69928 0
+-1.80861 3.07785 0
+-2.26675 2.25124 0
+-2.49959 1.42371 0
+-2.59332 0.753804 0
+-2.63249 0.315607 0
+-2.66214 0.0918063 0
+-2.69167 0.0108488 0
+-2.71583 -0.00240012 0
+-2.73048 0.00388507 0
+-2.73675 0.0104269 0
+-2.73833 0.013859 0
+-2.73827 0.0155352 0
+-2.73814 0.0168644 0
+-2.73831 0.0180918 0
+-2.73861 0.0188755 0
+-2.73887 0.0192218 0
+-2.73905 0.0192126 0
+-2.73906 0.0187474 0
+-2.73889 0.0179626 0
+-2.73855 0.0169984 0
+-2.73798 0.0156967 0
+-2.73709 0.0140524 0
+-2.73586 0.0121628 0
+-2.73419 0.00984891 0
+-2.73194 0.00701041 0
+-2.7291 0.00370343 0
+-2.7256 -0.000286772 0
+-2.72144 -0.005207 0
+-2.71678 -0.0111192 0
+-2.71193 -0.0183157 0
+-2.70748 -0.0272747 0
+-2.70452 -0.0384306 0
+-2.7048 -0.0526588 0
+-2.71056 -0.0719666 0
+-2.72278 -0.100834 0
+-2.73524 -0.148636 0
+-2.72212 -0.23005 0
+-2.62412 -0.360843 0
+-2.35117 -0.55709 0
+-1.82922 -0.866545 0
+-1.09527 -1.46639 0
+-0.378809 -2.78795 0
+-0.0576924 -5.47086 0
+-0.437751 -9.90936 0
+-1.4816 -15.5046 0
+-2.73504 -20.3293 0
+-3.57903 -21.9786 0
+-3.63485 -19.3662 0
+-2.98805 -13.9277 0
+-2.06953 -8.77964 0
+-1.34664 -6.22865 0
+-0.435884 -5.64463 0
+-0.108062 -3.72536 0
+-0.108062 -0.798562 0
+-1.21191 -0.566668 0
+-2.80834 -1.04966 0
+-6.14996 -1.59652 0
+-6.75503 -1.81747 0
+-7.24698 -0.678636 0
+-7.11299 2.10225 0
+-6.03229 5.13237 0
+-4.20485 6.57721 0
+-2.28147 5.78156 0
+-0.931907 3.63194 0
+-0.428175 1.53855 0
+-0.577049 0.307289 0
+-0.976142 -0.108764 0
+-1.31066 -0.138419 0
+-1.47155 -0.107523 0
+-1.49622 -0.113935 0
+-1.45996 -0.137957 0
+-1.41401 -0.149988 0
+-1.37802 -0.142451 0
+-1.35364 -0.122878 0
+-1.33721 -0.0999543 0
+-1.32576 -0.0776528 0
+-1.31747 -0.0582245 0
+-1.3111 -0.0427262 0
+-1.30614 -0.0299918 0
+-1.30229 -0.0195032 0
+-1.29909 -0.01159 0
+-1.29639 -0.00515067 0
+-1.29424 0.000461341 0
+-1.2924 0.00464672 0
+-1.2908 0.00800914 0
+-1.28957 0.0112207 0
+-1.28855 0.0136291 0
+-1.28765 0.0154916 0
+-1.287 0.0175511 0
+-1.28648 0.0192513 0
+-1.28596 0.0205926 0
+-1.28553 0.0223904 0
+-1.28512 0.0243164 0
+-1.28456 0.0262429 0
+-1.28401 0.0290389 0
+-1.28366 0.0325329 0
+-1.2835 0.0361592 0
+-1.28328 0.0402055 0
+-1.28134 0.0442001 0
+-1.2738 0.0467824 0
+-1.25555 0.044562 0
+-1.22239 0.0229553 0
+-1.17196 -0.0566178 0
+-1.09926 -0.262682 0
+-0.984329 -0.679233 0
+-0.783613 -1.35677 0
+-0.447679 -2.24343 0
+0.0252776 -3.14511 0
+0.528763 -3.75406 0
+0.843261 -3.75083 0
+0.736529 -2.9634 0
+0.135935 -1.53725 0
+-0.757681 -0.00698019 0
+-1.53873 0.854731 0
+-1.58137 0.224379 0
+-1.55133 0.0381834 0
+-1.55503 0.00477418 0
+-1.58657 -0.00588839 0
+-1.65047 -0.0418072 0
+-1.62497 -0.24424 0
+-0.765093 -0.938309 0
+0.252141 0.0144889 0
+0.961434 1.72887 0
+1.11375 3.33786 0
+0.771959 4.24052 0
+0.195636 4.2756 0
+-0.354967 3.62845 0
+-0.745083 2.64135 0
+-0.971306 1.64993 0
+-1.09346 0.875964 0
+-1.16753 0.389677 0
+-1.22015 0.144428 0
+-1.2571 0.047801 0
+-1.27907 0.0195747 0
+-1.28929 0.0141037 0
+-1.29294 0.0140779 0
+-1.29419 0.0151114 0
+-1.295 0.0163492 0
+-1.29588 0.017752 0
+-1.29676 0.0189705 0
+-1.2974 0.0195201 0
+-1.29777 0.0195931 0
+-1.29794 0.0193847 0
+-1.29789 0.0187015 0
+-1.29763 0.0177068 0
+-1.29721 0.016586 0
+-1.29658 0.0150681 0
+-1.29567 0.0131433 0
+-1.29448 0.0109755 0
+-1.29292 0.00829196 0
+-1.29087 0.0049565 0
+-1.28827 0.00110342 0
+-1.28501 -0.00353757 0
+-1.28096 -0.0092597 0
+-1.27605 -0.0160309 0
+-1.27024 -0.0241276 0
+-1.26351 -0.0339962 0
+-1.25615 -0.0457951 0
+-1.24889 -0.0599172 0
+-1.24346 -0.0773932 0
+-1.24326 -0.101043 0
+-1.2521 -0.139792 0
+-1.26738 -0.214768 0
+-1.2645 -0.363727 0
+-1.17916 -0.642427 0
+-0.91358 -1.13213 0
+-0.39838 -1.98159 0
+0.300615 -3.48695 0
+0.920435 -6.09068 0
+1.0969 -10.0858 0
+0.614525 -15.0222 0
+-0.379034 -19.3358 0
+-1.41876 -20.9389 0
+-2.03407 -18.7509 0
+-2.06701 -13.8947 0
+-1.72947 -9.11718 0
+-1.39019 -6.56794 0
+-0.528992 -5.7271 0
+-0.190162 -3.7029 0
+-0.190162 -0.758032 0
+-0.995762 -0.46539 0
+-2.28848 -0.854398 0
+-4.96837 -1.28194 0
+-5.36401 -1.42185 0
+-5.58091 -0.461751 0
+-5.23373 1.75505 0
+-4.17306 4.07168 0
+-2.69018 5.09431 0
+-1.34683 4.4382 0
+-0.574597 2.85969 0
+-0.416094 1.38004 0
+-0.605668 0.496845 0
+-0.838844 0.124392 0
+-0.961316 -0.0159688 0
+-0.973677 -0.0951844 0
+-0.937171 -0.150464 0
+-0.898377 -0.176775 0
+-0.872541 -0.175847 0
+-0.857938 -0.157077 0
+-0.849256 -0.131584 0
+-0.842884 -0.106349 0
+-0.837632 -0.0829275 0
+-0.833194 -0.0626851 0
+-0.829247 -0.046695 0
+-0.82583 -0.0334302 0
+-0.822996 -0.0223575 0
+-0.820478 -0.0141277 0
+-0.818275 -0.00737297 0
+-0.81651 -0.00132208 0
+-0.81497 0.00308879 0
+-0.813602 0.00662367 0
+-0.812556 0.0101581 0
+-0.81167 0.0127267 0
+-0.810835 0.0146417 0
+-0.810201 0.0169019 0
+-0.809654 0.0186899 0
+-0.809032 0.0199572 0
+-0.808439 0.0217839 0
+-0.807766 0.0236306 0
+-0.806755 0.0252196 0
+-0.805419 0.0276907 0
+-0.803725 0.0308263 0
+-0.801556 0.0339784 0
+-0.798987 0.0376244 0
+-0.795416 0.0406176 0
+-0.788333 0.0396879 0
+-0.772963 0.0291802 0
+-0.742725 -0.00729443 0
+-0.69074 -0.108615 0
+-0.610242 -0.343194 0
+-0.489804 -0.799688 0
+-0.307737 -1.53886 0
+-0.0415293 -2.50967 0
+0.296793 -3.48347 0
+0.617547 -4.07486 0
+0.755708 -3.88904 0
+0.567479 -2.77522 0
+0.0952375 -1.06505 0
+-0.327896 0.416128 0
+-0.240556 0.76738 0
+-0.0670674 0.0508904 0
+-0.0350718 0.0061876 0
+-0.0310278 0.000730084 0
+-0.036109 -0.00080729 0
+-0.0711783 -0.00673797 0
+-0.25925 -0.0561683 0
+-0.337601 -0.859964 0
+0.16076 -0.483883 0
+0.720458 1.16916 0
+0.955312 3.103 0
+0.8061 4.38973 0
+0.435816 4.64588 0
+0.0420275 4.02224 0
+-0.263518 2.9469 0
+-0.46549 1.85191 0
+-0.594166 1.00464 0
+-0.679043 0.474555 0
+-0.734869 0.200256 0
+-0.768417 0.0813515 0
+-0.785876 0.0370369 0
+-0.793992 0.0222227 0
+-0.798153 0.0182417 0
+-0.801111 0.0180726 0
+-0.803569 0.0188114 0
+-0.805556 0.0197422 0
+-0.807038 0.0204555 0
+-0.807988 0.020474 0
+-0.808529 0.0201374 0
+-0.80882 0.0196789 0
+-0.808872 0.0187568 0
+-0.80871 0.0175469 0
+-0.808403 0.016282 0
+-0.807906 0.0145737 0
+-0.807171 0.0124102 0
+-0.806223 0.0100303 0
+-0.804994 0.00706411 0
+-0.803372 0.00333641 0
+-0.801327 -0.000940715 0
+-0.798755 -0.00610883 0
+-0.795481 -0.0125324 0
+-0.791389 -0.0201221 0
+-0.786302 -0.0292142 0
+-0.779954 -0.0403438 0
+-0.772158 -0.0535917 0
+-0.762804 -0.0692707 0
+-0.752113 -0.0880839 0
+-0.741634 -0.111523 0
+-0.735398 -0.146028 0
+-0.739123 -0.211043 0
+-0.752584 -0.350267 0
+-0.75152 -0.64349 0
+-0.670779 -1.21287 0
+-0.421996 -2.23038 0
+0.0291108 -3.93805 0
+0.56468 -6.62625 0
+0.905887 -10.427 0
+0.770767 -14.8871 0
+0.110242 -18.6753 0
+-0.800455 -20.0282 0
+-1.54126 -18.0101 0
+-1.85543 -13.5805 0
+-1.80605 -9.16656 0
+-1.65916 -6.71483 0
+-0.708079 -5.75234 0
+-0.294739 -3.68447 0
+-0.294739 -0.736846 0
+-0.817909 -0.384465 0
+-1.87127 -0.702873 0
+-4.04241 -1.04799 0
+-4.31234 -1.15193 0
+-4.4045 -0.369603 0
+-4.04423 1.39476 0
+-3.17911 3.20654 0
+-2.08737 4.00256 0
+-1.18501 3.53582 0
+-0.717321 2.39199 0
+-0.632041 1.29474 0
+-0.711293 0.576078 0
+-0.777149 0.190228 0
+-0.778416 -0.014723 0
+-0.745537 -0.128086 0
+-0.715814 -0.18021 0
+-0.701446 -0.191166 0
+-0.697654 -0.179663 0
+-0.69769 -0.157066 0
+-0.697967 -0.131331 0
+-0.697375 -0.106965 0
+-0.696141 -0.0841841 0
+-0.694619 -0.06423 0
+-0.692868 -0.0484691 0
+-0.691115 -0.0352048 0
+-0.689547 -0.0239467 0
+-0.688052 -0.0156427 0
+-0.686688 -0.00875694 0
+-0.685585 -0.00244454 0
+-0.684596 0.00208127 0
+-0.68369 0.00570035 0
+-0.682991 0.00944232 0
+-0.682375 0.0120941 0
+-0.681757 0.0140078 0
+-0.68125 0.0163804 0
+-0.680762 0.0181871 0
+-0.680155 0.0193363 0
+-0.679495 0.0211097 0
+-0.678671 0.022793 0
+-0.677429 0.0239651 0
+-0.675676 0.0259254 0
+-0.673206 0.0283434 0
+-0.669696 0.0304565 0
+-0.665076 0.0329924 0
+-0.659111 0.0346403 0
+-0.650552 0.0311164 0
+-0.636407 0.015024 0
+-0.611301 -0.0324132 0
+-0.568229 -0.1517 0
+-0.500776 -0.410662 0
+-0.403411 -0.897071 0
+-0.269376 -1.67292 0
+-0.0935497 -2.68553 0
+0.111162 -3.68822 0
+0.290727 -4.25447 0
+0.353094 -3.95146 0
+0.232776 -2.65495 0
+-0.00520013 -0.827109 0
+-0.142004 0.552909 0
+-0.036406 0.661775 0
+-0.00642067 0.0209049 0
+-0.00137533 0.00114218 0
+-0.000750677 0.000105316 0
+-0.00144379 -0.000114302 0
+-0.00692686 -0.00125499 0
+-0.0396242 -0.0234711 0
+-0.146461 -0.753131 0
+0.0270027 -0.657355 0
+0.318274 0.877881 0
+0.472014 2.94925 0
+0.40765 4.45408 0
+0.200686 4.85284 0
+-0.0365946 4.25952 0
+-0.236357 3.14666 0
+-0.383659 1.99921 0
+-0.487908 1.10889 0
+-0.559676 0.546325 0
+-0.605837 0.246419 0
+-0.632847 0.108363 0
+-0.647762 0.0519554 0
+-0.656516 0.0309797 0
+-0.662636 0.0243645 0
+-0.667431 0.0228706 0
+-0.671098 0.0224825 0
+-0.673744 0.0223912 0
+-0.67557 0.0222852 0
+-0.676744 0.0216512 0
+-0.677467 0.0208638 0
+-0.677916 0.0201316 0
+-0.678129 0.0189725 0
+-0.678143 0.0175635 0
+-0.678029 0.0161713 0
+-0.677765 0.0143118 0
+-0.677322 0.01197 0
+-0.676733 0.00944312 0
+-0.675952 0.00628456 0
+-0.674901 0.00228728 0
+-0.673562 -0.00227843 0
+-0.671855 -0.00781562 0
+-0.669634 -0.0147523 0
+-0.666785 -0.0229708 0
+-0.663111 -0.0328873 0
+-0.658306 -0.0451491 0
+-0.652069 -0.0598281 0
+-0.644048 -0.0772924 0
+-0.633814 -0.0983177 0
+-0.621316 -0.124022 0
+-0.607895 -0.159449 0
+-0.597808 -0.221131 0
+-0.597646 -0.350429 0
+-0.607551 -0.633586 0
+-0.603536 -1.21688 0
+-0.529907 -2.304 0
+-0.334087 -4.13387 0
+-0.0454402 -6.9149 0
+0.172237 -10.6447 0
+0.0908915 -14.8058 0
+-0.396935 -18.1874 0
+-1.14248 -19.2827 0
+-1.81966 -17.333 0
+-2.17372 -13.2265 0
+-2.20309 -9.13719 0
+-2.10449 -6.81343 0
+-0.953428 -5.79919 0
+-0.418647 -3.70299 0
+-0.418647 -0.744569 0
+-0.673133 -0.319155 0
+-1.53763 -0.583243 0
+-3.31487 -0.868365 0
+-3.51246 -0.954343 0
+-3.56237 -0.31971 0
+-3.27103 1.1034 0
+-2.62549 2.56099 0
+-1.84311 3.22016 0
+-1.20577 2.89847 0
+-0.852301 2.03851 0
+-0.728632 1.17105 0
+-0.700802 0.548229 0
+-0.679633 0.169038 0
+-0.649743 -0.0446342 0
+-0.627467 -0.150385 0
+-0.621576 -0.186125 0
+-0.627058 -0.185707 0
+-0.635774 -0.170971 0
+-0.643385 -0.149479 0
+-0.648897 -0.125843 0
+-0.652514 -0.103371 0
+-0.654739 -0.081983 0
+-0.655989 -0.0630023 0
+-0.656521 -0.04796 0
+-0.656616 -0.0351309 0
+-0.656502 -0.0240823 0
+-0.656239 -0.0159263 0
+-0.65591 -0.00910539 0
+-0.655604 -0.00277009 0
+-0.655288 0.00174692 0
+-0.654964 0.00535856 0
+-0.654685 0.00914648 0
+-0.654405 0.0117979 0
+-0.654088 0.0136746 0
+-0.653767 0.0160448 0
+-0.653393 0.0177979 0
+-0.652886 0.0188152 0
+-0.652232 0.0204421 0
+-0.651331 0.0218785 0
+-0.649996 0.0226175 0
+-0.648057 0.0239738 0
+-0.645239 0.0255126 0
+-0.641157 0.0263621 0
+-0.6355 0.0273232 0
+-0.627966 0.0270938 0
+-0.617982 0.0211202 0
+-0.604252 0.0012829 0
+-0.584167 -0.052511 0
+-0.554204 -0.181676 0
+-0.512122 -0.452759 0
+-0.458982 -0.95023 0
+-0.398026 -1.7339 0
+-0.331108 -2.75248 0
+-0.258556 -3.76082 0
+-0.186433 -4.32665 0
+-0.132074 -4.00587 0
+-0.110563 -2.67651 0
+-0.105577 -0.832131 0
+-0.0701357 0.517446 0
+-0.00555403 0.597186 0
+-0.000733117 0.0160838 0
+-0.00010441 0.000513461 0
+-3.24544e-05 3.33637e-05 0
+-0.000111098 -3.56676e-05 0
+-0.000794191 -0.000571977 0
+-0.00599691 -0.0182685 0
+-0.0712419 -0.68789 0
+-0.0959322 -0.632673 0
+-0.0833892 0.865326 0
+-0.0929761 2.95882 0
+-0.147144 4.50824 0
+-0.227882 4.93357 0
+-0.311093 4.34272 0
+-0.38605 3.22162 0
+-0.451714 2.06487 0
+-0.507536 1.16471 0
+-0.551351 0.590141 0
+-0.582441 0.277511 0
+-0.603101 0.129026 0
+-0.61698 0.0658375 0
+-0.626956 0.040959 0
+-0.63452 0.0319311 0
+-0.640235 0.0285894 0
+-0.644373 0.0266231 0
+-0.647252 0.0252738 0
+-0.649214 0.0242512 0
+-0.650522 0.0229626 0
+-0.651388 0.0217329 0
+-0.651969 0.0207158 0
+-0.652338 0.0193443 0
+-0.652549 0.0177774 0
+-0.652657 0.0162815 0
+-0.652668 0.0143259 0
+-0.652584 0.0118878 0
+-0.652422 0.00928261 0
+-0.652165 0.00602931 0
+-0.65178 0.0019038 0
+-0.651249 -0.00280785 0
+-0.650521 -0.00854259 0
+-0.649507 -0.0157657 0
+-0.648107 -0.0243712 0
+-0.646146 -0.0348471 0
+-0.643361 -0.0479342 0
+-0.639447 -0.0637419 0
+-0.634045 -0.0826946 0
+-0.626708 -0.105655 0
+-0.616978 -0.133752 0
+-0.604699 -0.171729 0
+-0.591149 -0.234682 0
+-0.58085 -0.360727 0
+-0.580678 -0.633759 0
+-0.591726 -1.20583 0
+-0.598683 -2.29705 0
+-0.577393 -4.15516 0
+-0.536202 -6.95609 0
+-0.560532 -10.6204 0
+-0.788372 -14.5779 0
+-1.29156 -17.6842 0
+-1.96196 -18.6123 0
+-2.54676 -16.7482 0
+-2.83707 -12.9362 0
+-2.82935 -9.14491 0
+-2.69187 -6.95091 0
+-1.25482 -5.91372 0
+-0.561836 -3.77714 0
+-0.561836 -0.786651 0
+-0.555726 -0.266009 0
+-1.26963 -0.48748 0
+-2.73636 -0.727006 0
+-2.88958 -0.801131 0
+-2.92984 -0.279464 0
+-2.71868 0.892232 0
+-2.25244 2.09473 0
+-1.68183 2.64954 0
+-1.19059 2.40721 0
+-0.869448 1.71735 0
+-0.698515 1.0001 0
+-0.614629 0.464324 0
+-0.572309 0.126697 0
+-0.554371 -0.0625931 0
+-0.554619 -0.150159 0
+-0.566051 -0.174714 0
+-0.581394 -0.170388 0
+-0.596058 -0.156331 0
+-0.608253 -0.137307 0
+-0.617802 -0.116318 0
+-0.625084 -0.0961119 0
+-0.63046 -0.0766305 0
+-0.634308 -0.0591762 0
+-0.637063 -0.0452268 0
+-0.639012 -0.0332031 0
+-0.640373 -0.0227427 0
+-0.641381 -0.0149383 0
+-0.642132 -0.00837359 0
+-0.64265 -0.00227142 0
+-0.643035 0.00211423 0
+-0.643325 0.00563168 0
+-0.643486 0.00929049 0
+-0.643565 0.0118609 0
+-0.643584 0.0136784 0
+-0.643481 0.0159266 0
+-0.643258 0.0175603 0
+-0.642913 0.018456 0
+-0.642338 0.0198541 0
+-0.641452 0.0209787 0
+-0.64016 0.021313 0
+-0.638229 0.0220304 0
+-0.635381 0.0226517 0
+-0.631309 0.0222783 0
+-0.625584 0.0215861 0
+-0.617807 0.0193045 0
+-0.607761 0.011063 0
+-0.595328 -0.0111622 0
+-0.580646 -0.0672056 0
+-0.565028 -0.197307 0
+-0.552889 -0.464913 0
+-0.553478 -0.94966 0
+-0.578201 -1.7092 0
+-0.630116 -2.70059 0
+-0.690244 -3.70073 0
+-0.713706 -4.30323 0
+-0.647627 -4.072 0
+-0.470218 -2.85397 0
+-0.230662 -1.07172 0
+-0.0457379 0.332501 0
+0.00244958 0.548991 0
+0.000558748 0.0179745 0
+9.86404e-05 0.000973557 0
+3.75336e-05 9.44874e-05 0
+0.000105332 -0.000103461 0
+0.000619613 -0.00108634 0
+0.00289088 -0.0205398 0
+-0.0446849 -0.640318 0
+-0.24046 -0.436907 0
+-0.497658 1.12251 0
+-0.687091 3.14824 0
+-0.753422 4.57456 0
+-0.72136 4.9015 0
+-0.650542 4.2719 0
+-0.590532 3.1616 0
+-0.561048 2.03539 0
+-0.557742 1.16141 0
+-0.568129 0.600529 0
+-0.58261 0.291994 0
+-0.596711 0.143129 0
+-0.608989 0.0781181 0
+-0.619039 0.0510119 0
+-0.626786 0.0396809 0
+-0.632452 0.0342586 0
+-0.636468 0.030643 0
+-0.639257 0.0280656 0
+-0.641166 0.0261631 0
+-0.642486 0.0242861 0
+-0.643411 0.0226608 0
+-0.644062 0.0213697 0
+-0.644549 0.0198349 0
+-0.644941 0.0181718 0
+-0.645263 0.016606 0
+-0.645556 0.0146212 0
+-0.645848 0.0121823 0
+-0.646137 0.00957302 0
+-0.646436 0.00633001 0
+-0.646761 0.00222957 0
+-0.647089 -0.00247822 0
+-0.647403 -0.00822817 0
+-0.647679 -0.0154892 0
+-0.647838 -0.024212 0
+-0.647751 -0.0349333 0
+-0.64724 -0.0484458 0
+-0.646032 -0.0649495 0
+-0.643798 -0.084929 0
+-0.640182 -0.109271 0
+-0.634777 -0.139157 0
+-0.627152 -0.179354 0
+-0.61723 -0.244604 0
+-0.606739 -0.371219 0
+-0.601732 -0.638766 0
+-0.613487 -1.19408 0
+-0.655365 -2.25517 0
+-0.741386 -4.06914 0
+-0.896986 -6.80049 0
+-1.17402 -10.3434 0
+-1.63342 -14.1185 0
+-2.27502 -17.0427 0
+-2.97088 -17.9164 0
+-3.50239 -16.2167 0
+-3.71077 -12.7278 0
+-3.62254 -9.23314 0
+-3.4075 -7.16595 0
+-1.61167 -6.11764 0
+-0.727515 -3.91664 0
+-0.727515 -0.866635 0
+-0.460219 -0.222384 0
+-1.05253 -0.410047 0
+-2.26993 -0.614487 0
+-2.39101 -0.680058 0
+-2.42675 -0.243738 0
+-2.27656 0.742026 0
+-1.93783 1.75599 0
+-1.51006 2.22175 0
+-1.11181 2.00895 0
+-0.810727 1.41625 0
+-0.617938 0.807299 0
+-0.515718 0.362086 0
+-0.478026 0.0889867 0
+-0.478618 -0.0620215 0
+-0.495884 -0.132914 0
+-0.516792 -0.153827 0
+-0.536645 -0.150557 0
+-0.554577 -0.138422 0
+-0.570049 -0.121858 0
+-0.582788 -0.1036 0
+-0.59304 -0.0858825 0
+-0.601017 -0.0686752 0
+-0.607075 -0.0531396 0
+-0.611776 -0.0405471 0
+-0.615383 -0.0296167 0
+-0.618086 -0.0200591 0
+-0.620257 -0.0127864 0
+-0.622001 -0.00664867 0
+-0.623287 -0.00100318 0
+-0.624327 0.00313658 0
+-0.625188 0.00647663 0
+-0.625768 0.00985391 0
+-0.626193 0.0122705 0
+-0.626536 0.0140065 0
+-0.626658 0.0160343 0
+-0.626609 0.0174979 0
+-0.626455 0.0182887 0
+-0.626021 0.019407 0
+-0.625248 0.0201927 0
+-0.624132 0.0201847 0
+-0.622405 0.020291 0
+-0.619816 0.0200509 0
+-0.616187 0.0186376 0
+-0.611099 0.0164866 0
+-0.604196 0.0123903 0
+-0.59558 0.00243576 0
+-0.585955 -0.0207988 0
+-0.577613 -0.0755596 0
+-0.576308 -0.198624 0
+-0.593365 -0.447871 0
+-0.64675 -0.896293 0
+-0.755976 -1.6 0
+-0.925222 -2.53138 0
+-1.11895 -3.50704 0
+-1.24881 -4.17342 0
+-1.1984 -4.12246 0
+-0.9 -3.15241 0
+-0.433916 -1.53784 0
+-0.0529353 -0.0485035 0
+0.0208193 0.475228 0
+0.00443016 0.0343635 0
+0.000985119 0.00441854 0
+0.000515604 0.00056403 0
+0.0010535 -0.000641335 0
+0.00493566 -0.00496858 0
+0.0240327 -0.039637 0
+-0.0485441 -0.567745 0
+-0.466273 -0.0191885 0
+-0.985737 1.64196 0
+-1.31763 3.48012 0
+-1.3661 4.62302 0
+-1.20886 4.74426 0
+-0.982551 4.04559 0
+-0.789326 2.96838 0
+-0.666785 1.91285 0
+-0.606482 1.10111 0
+-0.585093 0.579142 0
+-0.583301 0.290204 0
+-0.589737 0.149567 0
+-0.598588 0.0869711 0
+-0.607006 0.0594333 0
+-0.613753 0.0464304 0
+-0.618666 0.039174 0
+-0.622137 0.034117 0
+-0.624551 0.0304833 0
+-0.626206 0.0278213 0
+-0.627392 0.025475 0
+-0.62827 0.0235412 0
+-0.628918 0.0220211 0
+-0.629471 0.0203898 0
+-0.629999 0.0187022 0
+-0.630502 0.0171117 0
+-0.631048 0.0151693 0
+-0.631689 0.012825 0
+-0.632406 0.010291 0
+-0.633239 0.0071652 0
+-0.634248 0.00323963 0
+-0.635413 -0.00131237 0
+-0.63675 -0.00689081 0
+-0.638301 -0.0139378 0
+-0.640019 -0.0224936 0
+-0.641838 -0.0331144 0
+-0.643687 -0.0465975 0
+-0.645369 -0.0632673 0
+-0.646615 -0.0836828 0
+-0.647141 -0.108746 0
+-0.646557 -0.13974 0
+-0.644413 -0.1815 0
+-0.640381 -0.248637 0
+-0.635264 -0.376336 0
+-0.634598 -0.639432 0
+-0.65465 -1.17403 0
+-0.726522 -2.1833 0
+-0.894353 -3.90131 0
+-1.20826 -6.48659 0
+-1.71155 -9.84006 0
+-2.41312 -13.4169 0
+-3.24319 -16.2126 0
+-4.03026 -17.1293 0
+-4.56026 -15.6866 0
+-4.71159 -12.5765 0
+-4.54792 -9.39682 0
+-4.25387 -7.46 0
+-2.02953 -6.41444 0
+-0.920714 -4.12523 0
+-0.920714 -0.987329 0
+-0.38192 -0.18612 0
+-0.875042 -0.346758 0
+-1.88966 -0.524688 0
+-1.98358 -0.586149 0
+-2.009 -0.218325 0
+-1.89288 0.62589 0
+-1.63716 1.50026 0
+-1.31187 1.89644 0
+-0.993939 1.69101 0
+-0.73039 1.15269 0
+-0.543097 0.619991 0
+-0.437872 0.256844 0
+-0.40288 0.0539771 0
+-0.411889 -0.053031 0
+-0.437731 -0.107093 0
+-0.464244 -0.127334 0
+-0.487247 -0.127575 0
+-0.507426 -0.118263 0
+-0.525014 -0.104291 0
+-0.539854 -0.0887807 0
+-0.552142 -0.0736151 0
+-0.561988 -0.0588505 0
+-0.569706 -0.0454409 0
+-0.575901 -0.0343724 0
+-0.580807 -0.0247298 0
+-0.584594 -0.01629 0
+-0.587699 -0.00969972 0
+-0.590238 -0.00412758 0
+-0.592163 0.000905435 0
+-0.593741 0.00469845 0
+-0.595061 0.00778089 0
+-0.595994 0.0107721 0
+-0.596711 0.0129732 0
+-0.597315 0.014596 0
+-0.597638 0.016344 0
+-0.59776 0.0176067 0
+-0.597785 0.0183013 0
+-0.597521 0.0191302 0
+-0.596935 0.0195948 0
+-0.596086 0.0193249 0
+-0.594721 0.0189139 0
+-0.592636 0.0179552 0
+-0.589767 0.0157569 0
+-0.585788 0.0124968 0
+-0.580499 0.00709077 0
+-0.574323 -0.00375083 0
+-0.568584 -0.0265481 0
+-0.567069 -0.0770861 0
+-0.578767 -0.186938 0
+-0.620526 -0.406125 0
+-0.717921 -0.798913 0
+-0.898582 -1.41936 0
+-1.17133 -2.25865 0
+-1.49476 -3.18366 0
+-1.7553 -3.91291 0
+-1.78788 -4.08993 0
+-1.46328 -3.47706 0
+-0.82034 -2.18082 0
+-0.152302 -0.716568 0
+0.101225 0.22169 0
+0.0341802 0.101407 0
+0.0179282 0.0206704 0
+0.0157212 0.00277089 0
+0.0189637 -0.00388399 0
+0.0382847 -0.0242897 0
+0.119889 -0.121241 0
+-0.142704 -0.30516 0
+-0.886017 0.724112 0
+-1.61644 2.37237 0
+-1.9877 3.85137 0
+-1.94411 4.57943 0
+-1.63408 4.43422 0
+-1.25521 3.66671 0
+-0.943096 2.65627 0
+-0.742495 1.71225 0
+-0.636829 0.995441 0
+-0.590674 0.532988 0
+-0.57513 0.274662 0
+-0.573337 0.147775 0
+-0.576987 0.0906233 0
+-0.582129 0.0645778 0
+-0.586827 0.0511309 0
+-0.590417 0.0427665 0
+-0.592997 0.0366999 0
+-0.59479 0.0322793 0
+-0.596012 0.0290457 0
+-0.596922 0.0263881 0
+-0.597642 0.0242643 0
+-0.598213 0.0225937 0
+-0.598761 0.0209403 0
+-0.599354 0.0192974 0
+-0.599977 0.0177372 0
+-0.600712 0.0159055 0
+-0.601623 0.0137383 0
+-0.602691 0.01136 0
+-0.603977 0.00845248 0
+-0.605569 0.00483253 0
+-0.607462 0.000581566 0
+-0.609707 -0.00464544 0
+-0.612401 -0.0112438 0
+-0.615544 -0.0193504 0
+-0.619144 -0.0295143 0
+-0.623242 -0.0424997 0
+-0.62775 -0.0587601 0
+-0.632493 -0.0789396 0
+-0.637245 -0.103995 0
+-0.64156 -0.135426 0
+-0.64488 -0.178181 0
+-0.647034 -0.246483 0
+-0.649717 -0.373654 0
+-0.660928 -0.628222 0
+-0.702824 -1.13213 0
+-0.818495 -2.06763 0
+-1.0702 -3.64961 0
+-1.52399 -6.03279 0
+-2.22086 -9.1432 0
+-3.13858 -12.4992 0
+-4.15791 -15.1933 0
+-5.06714 -16.2201 0
+-5.64309 -15.1107 0
+-5.78451 -12.435 0
+-5.58399 -9.59733 0
+-5.23982 -7.80417 0
+-2.5142 -6.79026 0
+-1.14574 -4.4003 0
+-1.14574 -1.15054 0
+-0.317076 -0.155401 0
+-0.72867 -0.29409 0
+-1.57724 -0.452571 0
+-1.64732 -0.516066 0
+-1.65549 -0.210165 0
+-1.54866 0.51904 0
+-1.33917 1.29076 0
+-1.08837 1.64563 0
+-0.849971 1.4526 0
+-0.647144 0.949846 0
+-0.490335 0.463168 0
+-0.390089 0.156584 0
+-0.348482 0.012354 0
+-0.351423 -0.0501068 0
+-0.376159 -0.082375 0
+-0.404889 -0.0986221 0
+-0.43056 -0.101923 0
+-0.452607 -0.0962354 0
+-0.471467 -0.0854504 0
+-0.487419 -0.0728473 0
+-0.500803 -0.0602502 0
+-0.511716 -0.0479562 0
+-0.520444 -0.0367315 0
+-0.527555 -0.0272791 0
+-0.533275 -0.0190277 0
+-0.53777 -0.0118116 0
+-0.541469 -0.00601689 0
+-0.544505 -0.00110825 0
+-0.54685 0.00323517 0
+-0.54877 0.00660313 0
+-0.550361 0.00935772 0
+-0.551516 0.0119132 0
+-0.552408 0.0138521 0
+-0.553146 0.0153216 0
+-0.553587 0.0167717 0
+-0.553815 0.0178234 0
+-0.553946 0.0184206 0
+-0.553816 0.0189884 0
+-0.553419 0.0191869 0
+-0.552844 0.0187397 0
+-0.551894 0.0179537 0
+-0.550437 0.0164872 0
+-0.54849 0.0137996 0
+-0.545869 0.0098663 0
+-0.542563 0.00377462 0
+-0.539232 -0.00709198 0
+-0.537605 -0.0281854 0
+-0.542327 -0.0723736 0
+-0.564212 -0.165063 0
+-0.623449 -0.3469 0
+-0.750765 -0.671612 0
+-0.980765 -1.18938 0
+-1.33072 -1.90872 0
+-1.76693 -2.74748 0
+-2.17623 -3.50365 0
+-2.37458 -3.89163 0
+-2.18087 -3.67082 0
+-1.54256 -2.81917 0
+-0.632773 -1.62639 0
+0.184376 -0.59548 0
+0.442509 -0.156737 0
+0.516456 -0.0532842 0
+0.545335 -0.0261146 0
+0.551619 -0.0101738 0
+0.511459 0.0158632 0
+0.270398 0.119812 0
+-0.625569 0.590795 0
+-1.65893 1.75745 0
+-2.40587 3.1193 0
+-2.64515 4.09064 0
+-2.41955 4.35382 0
+-1.93748 3.95214 0
+-1.42369 3.15291 0
+-1.01957 2.25215 0
+-0.764046 1.45672 0
+-0.629475 0.86087 0
+-0.568847 0.472361 0
+-0.544762 0.250577 0
+-0.536258 0.139272 0
+-0.534165 0.0885317 0
+-0.534824 0.0652391 0
+-0.536423 0.0527323 0
+-0.538019 0.0443646 0
+-0.539312 0.0379948 0
+-0.540239 0.0332091 0
+-0.540865 0.0296736 0
+-0.541364 0.0268901 0
+-0.541808 0.0247105 0
+-0.542202 0.0229897 0
+-0.542646 0.0213864 0
+-0.543193 0.0198465 0
+-0.543828 0.0183738 0
+-0.544631 0.0167098 0
+-0.545672 0.0147812 0
+-0.546944 0.012633 0
+-0.548521 0.0100302 0
+-0.550505 0.0068174 0
+-0.552918 0.0029949 0
+-0.555841 -0.00172196 0
+-0.559411 -0.0076741 0
+-0.563685 -0.0150763 0
+-0.568748 -0.0244509 0
+-0.574739 -0.0365092 0
+-0.581682 -0.0518174 0
+-0.589505 -0.0711169 0
+-0.598029 -0.0954716 0
+-0.606794 -0.126661 0
+-0.615331 -0.169645 0
+-0.624259 -0.237555 0
+-0.637773 -0.360141 0
+-0.668769 -0.597227 0
+-0.746204 -1.0547 0
+-0.920528 -1.8933 0
+-1.2607 -3.30944 0
+-1.83705 -5.45644 0
+-2.68823 -8.29202 0
+-3.77853 -11.4089 0
+-4.96489 -14.0069 0
+-6.01101 -15.174 0
+-6.68089 -14.4408 0
+-6.87723 -12.2387 0
+-6.7058 -9.76876 0
+-6.36885 -8.14112 0
+-3.066 -7.20898 0
+-1.40463 -4.72872 0
+-1.40463 -1.3554 0
+-0.262742 -0.128727 0
+-0.606781 -0.248908 0
+-1.31873 -0.393087 0
+-1.36977 -0.465028 0
+-1.35793 -0.222021 0
+-1.24212 0.40322 0
+-1.04698 1.09561 0
+-0.840665 1.4393 0
+-0.671593 1.28352 0
+-0.542816 0.821058 0
+-0.439493 0.359833 0
+-0.359161 0.0762391 0
+-0.310883 -0.0359383 0
+-0.29806 -0.062945 0
+-0.311222 -0.0692287 0
+-0.335718 -0.074143 0
+-0.361399 -0.0762589 0
+-0.384389 -0.0732622 0
+-0.403934 -0.0659221 0
+-0.420317 -0.0564818 0
+-0.434009 -0.0465749 0
+-0.445213 -0.0367695 0
+-0.454237 -0.0277236 0
+-0.461597 -0.0199352 0
+-0.467531 -0.0131095 0
+-0.472223 -0.00713512 0
+-0.47605 -0.00220452 0
+-0.47916 0.00198732 0
+-0.48157 0.00563149 0
+-0.483509 0.00852846 0
+-0.485072 0.0109075 0
+-0.486196 0.0130247 0
+-0.48703 0.0146743 0
+-0.487673 0.0159536 0
+-0.488032 0.0171192 0
+-0.488186 0.017967 0
+-0.488238 0.0184618 0
+-0.488081 0.0188212 0
+-0.487733 0.0188291 0
+-0.487289 0.018286 0
+-0.486635 0.0172899 0
+-0.485719 0.0155624 0
+-0.484629 0.0127002 0
+-0.483329 0.00855648 0
+-0.481955 0.00239205 0
+-0.481259 -0.00779739 0
+-0.483113 -0.0263398 0
+-0.492431 -0.0630654 0
+-0.520494 -0.137009 0
+-0.588439 -0.278965 0
+-0.728896 -0.531167 0
+-0.980737 -0.937553 0
+-1.37085 -1.51863 0
+-1.88333 -2.23503 0
+-2.42866 -2.95835 0
+-2.83918 -3.48115 0
+-2.91868 -3.59136 0
+-2.54532 -3.19257 0
+-1.77527 -2.39648 0
+-0.868894 -1.50188 0
+-0.199938 -0.825716 0
+0.171535 -0.424778 0
+0.309581 -0.164178 0
+0.234382 0.0650081 0
+-0.100662 0.35089 0
+-0.792977 0.81211 0
+-1.80637 1.60416 0
+-2.71289 2.66395 0
+-3.19023 3.59663 0
+-3.14197 4.04237 0
+-2.68716 3.899 0
+-2.05168 3.31666 0
+-1.44491 2.54615 0
+-0.987317 1.79455 0
+-0.703203 1.17261 0
+-0.555764 0.713431 0
+-0.49068 0.407278 0
+-0.464593 0.224491 0
+-0.45324 0.127921 0
+-0.446969 0.0822624 0
+-0.443121 0.0613927 0
+-0.440902 0.0505149 0
+-0.439736 0.0432008 0
+-0.43917 0.03743 0
+-0.438858 0.0328999 0
+-0.438639 0.029456 0
+-0.438525 0.0267784 0
+-0.438506 0.0246936 0
+-0.438549 0.0230339 0
+-0.438707 0.0215466 0
+-0.439013 0.0201538 0
+-0.439456 0.018818 0
+-0.440106 0.0173611 0
+-0.441031 0.0157078 0
+-0.442244 0.0138471 0
+-0.443825 0.0116116 0
+-0.445879 0.00887212 0
+-0.448457 0.0055733 0
+-0.451664 0.00148502 0
+-0.455657 -0.00368159 0
+-0.460546 -0.0101868 0
+-0.466483 -0.0185149 0
+-0.473672 -0.0293203 0
+-0.48224 -0.0432501 0
+-0.492223 -0.0611345 0
+-0.503563 -0.0841315 0
+-0.516082 -0.114143 0
+-0.530051 -0.155677 0
+-0.547864 -0.219743 0
+-0.577135 -0.33087 0
+-0.635495 -0.538868 0
+-0.755961 -0.934233 0
+-0.989995 -1.65927 0
+-1.40458 -2.89486 0
+-2.06852 -4.7925 0
+-3.02294 -7.3376 0
+-4.2369 -10.195 0
+-5.56745 -12.6763 0
+-6.76919 -13.9723 0
+-7.59134 -13.6187 0
+-7.92488 -11.9052 0
+-7.8716 -9.82204 0
+-7.627 -8.38572 0
+-3.67536 -7.60336 0
+-1.69742 -5.07901 0
+-1.69742 -1.59499 0
+-0.216574 -0.104949 0
+-0.503893 -0.208505 0
+-1.10241 -0.341005 0
+-1.14172 -0.425729 0
+-1.114 -0.249742 0
+-0.981282 0.27049 0
+-0.775564 0.889886 0
+-0.578295 1.24202 0
+-0.448952 1.15417 0
+-0.384908 0.757004 0
+-0.347141 0.322055 0
+-0.307994 0.0370813 0
+-0.268865 -0.0750797 0
+-0.244092 -0.0877305 0
+-0.240495 -0.0728392 0
+-0.253147 -0.0615053 0
+-0.273122 -0.056299 0
+-0.293965 -0.0524335 0
+-0.312701 -0.0472017 0
+-0.328594 -0.040603 0
+-0.341793 -0.0333913 0
+-0.352503 -0.0260741 0
+-0.361057 -0.019184 0
+-0.367919 -0.0130877 0
+-0.373356 -0.00768572 0
+-0.377582 -0.00292305 0
+-0.380914 0.00111502 0
+-0.383515 0.00457552 0
+-0.38545 0.0075537 0
+-0.386902 0.00996915 0
+-0.387963 0.0119567 0
+-0.388615 0.0136662 0
+-0.388975 0.0150229 0
+-0.389122 0.0160908 0
+-0.389016 0.0170035 0
+-0.388726 0.017667 0
+-0.388333 0.0180598 0
+-0.387791 0.0182706 0
+-0.387137 0.0181659 0
+-0.386462 0.0176024 0
+-0.385739 0.0165584 0
+-0.384998 0.0148136 0
+-0.384379 0.0120725 0
+-0.383959 0.00812821 0
+-0.383951 0.00237671 0
+-0.385064 -0.00669232 0
+-0.389094 -0.0223184 0
+-0.400711 -0.0514557 0
+-0.430493 -0.107236 0
+-0.498258 -0.211209 0
+-0.635125 -0.394311 0
+-0.880383 -0.692308 0
+-1.26823 -1.1308 0
+-1.80317 -1.70011 0
+-2.43151 -2.33004 0
+-3.02748 -2.88521 0
+-3.41782 -3.20105 0
+-3.45295 -3.15748 0
+-3.09689 -2.75257 0
+-2.47892 -2.11989 0
+-1.8513 -1.45337 0
+-1.40894 -0.86717 0
+-1.22842 -0.344723 0
+-1.33973 0.176293 0
+-1.75344 0.764572 0
+-2.42183 1.48048 0
+-3.14417 2.32648 0
+-3.61751 3.13728 0
+-3.66075 3.63985 0
+-3.28189 3.6635 0
+-2.63247 3.24957 0
+-1.91061 2.59479 0
+-1.27643 1.91196 0
+-0.812289 1.33041 0
+-0.525803 0.886121 0
+-0.377565 0.565192 0
+-0.313907 0.34362 0
+-0.290336 0.200921 0
+-0.280413 0.117999 0
+-0.273305 0.0751549 0
+-0.266749 0.054838 0
+-0.26114 0.0449076 0
+-0.256871 0.0389337 0
+-0.253865 0.0344248 0
+-0.251763 0.0307996 0
+-0.250237 0.0279317 0
+-0.249114 0.0256574 0
+-0.24827 0.0238512 0
+-0.247614 0.0223789 0
+-0.24714 0.0210737 0
+-0.246848 0.0198639 0
+-0.246731 0.0187013 0
+-0.246839 0.0174708 0
+-0.247235 0.016104 0
+-0.247948 0.0145607 0
+-0.249057 0.0127217 0
+-0.250664 0.0104796 0
+-0.252841 0.00775034 0
+-0.255703 0.0043469 0
+-0.25941 2.49586e-05 0
+-0.264108 -0.00548853 0
+-0.269992 -0.0126316 0
+-0.277318 -0.0219947 0
+-0.286326 -0.0342423 0
+-0.297255 -0.0502063 0
+-0.310417 -0.0709703 0
+-0.326397 -0.0981636 0
+-0.346857 -0.135217 0
+-0.376263 -0.190338 0
+-0.424547 -0.282587 0
+-0.510536 -0.452879 0
+-0.665527 -0.779243 0
+-0.936176 -1.38862 0
+-1.38511 -2.44593 0
+-2.08379 -4.09382 0
+-3.08754 -6.33384 0
+-4.38676 -8.89574 0
+-5.85429 -11.2088 0
+-7.24393 -12.5826 0
+-8.28677 -12.5758 0
+-8.84891 -11.343 0
+-9.01498 -9.65597 0
+-8.96925 -8.43145 0
+-4.31732 -7.86684 0
+-2.02111 -5.39072 0
+-2.02111 -1.84983 0
+-0.17669 -0.0833277 0
+-0.415329 -0.170849 0
+-0.917713 -0.29149 0
+-0.954443 -0.389002 0
+-0.922284 -0.281908 0
+-0.778323 0.126521 0
+-0.551485 0.663039 0
+-0.332047 1.02257 0
+-0.19926 1.02137 0
+-0.163909 0.721645 0
+-0.17884 0.336978 0
+-0.192154 0.0503864 0
+-0.184477 -0.0827664 0
+-0.165922 -0.106297 0
+-0.152744 -0.086029 0
+-0.151924 -0.0623371 0
+-0.161221 -0.0470146 0
+-0.175375 -0.0382922 0
+-0.19024 -0.0323493 0
+-0.203732 -0.0271237 0
+-0.215151 -0.0219853 0
+-0.224368 -0.0168694 0
+-0.231575 -0.0119899 0
+-0.237126 -0.00754866 0
+-0.24129 -0.00353401 0
+-0.244292 6.78876e-05 0
+-0.246402 0.00321371 0
+-0.247789 0.00595191 0
+-0.248558 0.00831162 0
+-0.248859 0.0102601 0
+-0.24878 0.0118676 0
+-0.24834 0.0132174 0
+-0.247626 0.0142989 0
+-0.2467 0.0151559 0
+-0.245559 0.0158549 0
+-0.244261 0.0163607 0
+-0.24287 0.0166603 0
+-0.241384 0.016777 0
+-0.239854 0.0166276 0
+-0.238368 0.0161093 0
+-0.236969 0.0151524 0
+-0.23575 0.0135869 0
+-0.234874 0.0111896 0
+-0.234481 0.00772817 0
+-0.234802 0.00269121 0
+-0.236456 -0.00504532 0
+-0.241042 -0.017739 0
+-0.252626 -0.0398793 0
+-0.280159 -0.0797103 0
+-0.34032 -0.151055 0
+-0.459764 -0.274875 0
+-0.674169 -0.477913 0
+-1.02027 -0.784708 0
+-1.51871 -1.20169 0
+-2.15078 -1.69799 0
+-2.84079 -2.19522 0
+-3.46168 -2.58019 0
+-3.87518 -2.74401 0
+-3.99658 -2.63122 0
+-3.84891 -2.2676 0
+-3.56301 -1.7393 0
+-3.30089 -1.12933 0
+-3.17524 -0.470407 0
+-3.23676 0.237784 0
+-3.47158 0.999362 0
+-3.78498 1.79385 0
+-3.99989 2.54136 0
+-3.94627 3.08364 0
+-3.56763 3.2612 0
+-2.93547 3.03132 0
+-2.19218 2.50628 0
+-1.47921 1.88182 0
+-0.892068 1.32482 0
+-0.469833 0.908171 0
+-0.205647 0.621934 0
+-0.0647633 0.424309 0
+-0.00300405 0.281861 0
+0.0185484 0.179368 0
+0.0257334 0.110815 0
+0.0309126 0.0699764 0
+0.0373765 0.048375 0
+0.0445283 0.0377568 0
+0.0511623 0.0323009 0
+0.0566473 0.028941 0
+0.0609654 0.0264827 0
+0.0643598 0.0245385 0
+0.0670742 0.0229441 0
+0.069314 0.0216126 0
+0.0712281 0.0204659 0
+0.0728838 0.019419 0
+0.0743176 0.018431 0
+0.0755501 0.0174697 0
+0.0765515 0.01647 0
+0.0772763 0.0153797 0
+0.0776857 0.0141518 0
+0.077708 0.0126997 0
+0.0772541 0.0109336 0
+0.0762437 0.00876085 0
+0.0745633 0.00602721 0
+0.0720609 0.00252711 0
+0.068567 -0.00199499 0
+0.0638476 -0.00791261 0
+0.0575703 -0.0157178 0
+0.0493091 -0.0259818 0
+0.038469 -0.0393668 0
+0.0241259 -0.0566279 0
+0.00473682 -0.0787752 0
+-0.0225114 -0.10797 0
+-0.0628023 -0.150048 0
+-0.125223 -0.220167 0
+-0.225018 -0.353085 0
+-0.387346 -0.616916 0
+-0.653332 -1.12264 0
+-1.08663 -2.01263 0
+-1.77176 -3.40869 0
+-2.78892 -5.31668 0
+-4.15693 -7.52774 0
+-5.76859 -9.59716 0
+-7.37946 -10.9717 0
+-8.70128 -11.254 0
+-9.56861 -10.4757 0
+-10.0428 -9.18178 0
+-10.3036 -8.17063 0
+-4.93997 -7.85624 0
+-2.35939 -5.56425 0
+-2.35939 -2.07523 0
+-0.141629 -0.0635717 0
+-0.33723 -0.134875 0
+-0.75524 -0.241104 0
+-0.798245 -0.346001 0
+-0.777592 -0.302568 0
+-0.641384 -0.0096946 0
+-0.404187 0.425833 0
+-0.151904 0.770284 0
+0.0203252 0.849134 0
+0.0758597 0.666104 0
+0.0480462 0.364784 0
+-0.0024103 0.100836 0
+-0.0344966 -0.0506882 0
+-0.0412598 -0.0995424 0
+-0.0352422 -0.0920562 0
+-0.0295204 -0.0680688 0
+-0.029655 -0.0468903 0
+-0.0351621 -0.0327956 0
+-0.043436 -0.0240861 0
+-0.052205 -0.0183654 0
+-0.0601386 -0.0140623 0
+-0.0666253 -0.0103932 0
+-0.0715366 -0.00708895 0
+-0.075009 -0.00408647 0
+-0.0772227 -0.00133026 0
+-0.0783658 0.00120128 0
+-0.0786491 0.00348765 0
+-0.0782344 0.00552805 0
+-0.077244 0.0073123 0
+-0.0758089 0.00881647 0
+-0.0740164 0.0100669 0
+-0.0719115 0.0111044 0
+-0.0695599 0.0119397 0
+-0.0670137 0.0126022 0
+-0.0642919 0.013126 0
+-0.0614407 0.0135025 0
+-0.0585116 0.0137244 0
+-0.0555303 0.0137891 0
+-0.0525536 0.0136445 0
+-0.0496688 0.0132182 0
+-0.0469575 0.012435 0
+-0.0445407 0.0111641 0
+-0.0425837 0.00922663 0
+-0.0412493 0.00638785 0
+-0.0407795 0.00221564 0
+-0.0417334 -0.00409726 0
+-0.045485 -0.0139932 0
+-0.0552851 -0.0300851 0
+-0.0779509 -0.0570505 0
+-0.126016 -0.102996 0
+-0.219897 -0.181001 0
+-0.388553 -0.309266 0
+-0.665905 -0.507366 0
+-1.08051 -0.787095 0
+-1.63886 -1.13966 0
+-2.30854 -1.52557 0
+-3.01292 -1.87584 0
+-3.64793 -2.10902 0
+-4.1202 -2.15897 0
+-4.38918 -1.99865 0
+-4.48498 -1.64353 0
+-4.48288 -1.13147 0
+-4.4535 -0.499818 0
+-4.4315 0.21575 0
+-4.40154 0.969375 0
+-4.29832 1.6906 0
+-4.0331 2.27612 0
+-3.55538 2.6059 0
+-2.89571 2.60152 0
+-2.15021 2.28581 0
+-1.42876 1.78483 0
+-0.810495 1.26355 0
+-0.330064 0.844392 0
+0.0119371 0.56617 0
+0.233367 0.400503 0
+0.360495 0.29718 0
+0.422546 0.219811 0
+0.446941 0.154973 0
+0.454785 0.102972 0
+0.458637 0.0661243 0
+0.463589 0.0434232 0
+0.470262 0.0310848 0
+0.477645 0.0249189 0
+0.484731 0.0218558 0
+0.491034 0.0201805 0
+0.496484 0.0190893 0
+0.501194 0.0182345 0
+0.505332 0.017476 0
+0.509046 0.0167526 0
+0.512434 0.0160313 0
+0.51556 0.0153056 0
+0.51846 0.0145702 0
+0.521131 0.0138001 0
+0.523546 0.0129647 0
+0.525673 0.0120252 0
+0.527454 0.0109189 0
+0.528816 0.00957174 0
+0.52968 0.00789697 0
+0.529937 0.00576944 0
+0.529439 0.00302508 0
+0.527987 -0.000543163 0
+0.525285 -0.00521166 0
+0.520887 -0.0113196 0
+0.514136 -0.0192324 0
+0.504077 -0.0293078 0
+0.48932 -0.0418713 0
+0.467921 -0.0573778 0
+0.437213 -0.077262 0
+0.393498 -0.106334 0
+0.331243 -0.157913 0
+0.240594 -0.262436 0
+0.101417 -0.47774 0
+-0.126988 -0.894232 0
+-0.516681 -1.62294 0
+-1.17029 -2.75508 0
+-2.19167 -4.29531 0
+-3.62257 -6.09684 0
+-5.37306 -7.84667 0
+-7.20498 -9.13983 0
+-8.81822 -9.64078 0
+-10.018 -9.27595 0
+-10.8411 -8.35867 0
+-11.4788 -7.53288 0
+-5.4478 -7.41993 0
+-2.65956 -5.46198 0
+-2.65956 -2.18378 0
+-0.110405 -0.0458104 0
+-0.266818 -0.100667 0
+-0.607567 -0.188794 0
+-0.66238 -0.291192 0
+-0.667896 -0.297057 0
+-0.565 -0.112598 0
+-0.347573 0.2084 0
+-0.0821307 0.504835 0
+0.135222 0.631775 0
+0.244145 0.557176 0
+0.249782 0.359142 0
+0.200774 0.149838 0
+0.146785 0.00329458 0
+0.112688 -0.0654528 0
+0.0993507 -0.0787262 0
+0.0973515 -0.0660775 0
+0.0981296 -0.0476766 0
+0.0976253 -0.0322997 0
+0.0952228 -0.0216921 0
+0.0917303 -0.0148814 0
+0.0881255 -0.0104659 0
+0.0851096 -0.00738571 0
+0.0830321 -0.00501979 0
+0.0819805 -0.00304311 0
+0.081921 -0.00127874 0
+0.0827601 0.000354398 0
+0.0843673 0.00187276 0
+0.0866186 0.00326937 0
+0.0894015 0.00452222 0
+0.0926045 0.00560657 0
+0.0961423 0.00652239 0
+0.0999568 0.00728339 0
+0.103991 0.00789953 0
+0.108198 0.00838863 0
+0.11255 0.0087686 0
+0.117006 0.00904034 0
+0.121525 0.00920031 0
+0.126069 0.00924001 0
+0.130581 0.00912712 0
+0.134981 0.00881266 0
+0.139178 0.00823316 0
+0.143049 0.00728811 0
+0.146439 0.00583155 0
+0.14917 0.00365242 0
+0.15097 0.000410491 0
+0.151302 -0.00443397 0
+0.149021 -0.0117171 0
+0.141738 -0.0228068 0
+0.124794 -0.0401111 0
+0.0897897 -0.0679966 0
+0.0227493 -0.113966 0
+-0.0973071 -0.189216 0
+-0.297572 -0.307108 0
+-0.606248 -0.478429 0
+-1.04204 -0.703874 0
+-1.60099 -0.966638 0
+-2.24726 -1.22959 0
+-2.91571 -1.44059 0
+-3.52909 -1.54562 0
+-4.02348 -1.50429 0
+-4.36722 -1.29981 0
+-4.5598 -0.938913 0
+-4.61295 -0.446695 0
+-4.53214 0.134907 0
+-4.30796 0.745175 0
+-3.92141 1.30403 0
+-3.36483 1.71953 0
+-2.66968 1.91074 0
+-1.91275 1.84459 0
+-1.18931 1.56236 0
+-0.57341 1.16893 0
+-0.0951947 0.785335 0
+0.253826 0.495369 0
+0.499416 0.320579 0
+0.666602 0.233317 0
+0.773997 0.189785 0
+0.836438 0.157369 0
+0.868025 0.123386 0
+0.881914 0.0890826 0
+0.888296 0.0597419 0
+0.893185 0.0385348 0
+0.898941 0.025329 0
+0.90576 0.0181001 0
+0.913062 0.0145544 0
+0.920284 0.0129597 0
+0.927114 0.01226 0
+0.933453 0.0118951 0
+0.939327 0.0116031 0
+0.944802 0.0112775 0
+0.949947 0.0108867 0
+0.954818 0.0104354 0
+0.959453 0.00993584 0
+0.963864 0.00938877 0
+0.968045 0.00878349 0
+0.971975 0.00809556 0
+0.975611 0.00728232 0
+0.978895 0.00628761 0
+0.981751 0.0050414 0
+0.984068 0.00345177 0
+0.985688 0.00140521 0
+0.986376 -0.00123214 0
+0.98578 -0.00461619 0
+0.983369 -0.00890954 0
+0.978387 -0.0142504 0
+0.969807 -0.0207291 0
+0.956358 -0.0284229 0
+0.936649 -0.0376695 0
+0.909364 -0.0499776 0
+0.873217 -0.0701873 0
+0.825825 -0.110522 0
+0.759914 -0.196525 0
+0.655165 -0.372991 0
+0.466107 -0.705174 0
+0.111728 -1.26856 0
+-0.520752 -2.1226 0
+-1.54406 -3.272 0
+-3.0098 -4.6311 0
+-4.84405 -6.01242 0
+-6.82857 -7.15531 0
+-8.67096 -7.79839 0
+-10.1564 -7.7905 0
+-11.2924 -7.22263 0
+-12.2928 -6.5325 0
+-5.70103 -6.46396 0
+-2.81462 -4.94056 0
+-2.81462 -2.03931 0
+-0.0825471 -0.0304772 0
+-0.202679 -0.0693448 0
+-0.470325 -0.136302 0
+-0.536683 -0.224836 0
+-0.574913 -0.258831 0
+-0.525328 -0.162189 0
+-0.363038 0.0461034 0
+-0.126409 0.268201 0
+0.10494 0.40042 0
+0.261908 0.400204 0
+0.32271 0.298336 0
+0.310927 0.161617 0
+0.267554 0.0466627 0
+0.224619 -0.0225231 0
+0.195785 -0.0498981 0
+0.181022 -0.0513199 0
+0.175082 -0.0417426 0
+0.173087 -0.0303114 0
+0.172268 -0.0208799 0
+0.171601 -0.0142206 0
+0.170981 -0.00985187 0
+0.17062 -0.00703197 0
+0.170742 -0.00514743 0
+0.171475 -0.00378314 0
+0.172874 -0.00268305 0
+0.17493 -0.00170798 0
+0.177596 -0.000799234 0
+0.180804 5.58121e-05 0
+0.184476 0.000844899 0
+0.188528 0.00154869 0
+0.192888 0.00215707 0
+0.197498 0.00266929 0
+0.202304 0.00308857 0
+0.207265 0.00342308 0
+0.212347 0.00368144 0
+0.217517 0.00386614 0
+0.222738 0.00397552 0
+0.227971 0.00400239 0
+0.233167 0.00392728 0
+0.238257 0.00371835 0
+0.243158 0.00332854 0
+0.247758 0.00268383 0
+0.251913 0.0016729 0
+0.255429 0.000133007 0
+0.258008 -0.00217242 0
+0.25914 -0.00556994 0
+0.25792 -0.0105004 0
+0.252729 -0.0176195 0
+0.240689 -0.0280751 0
+0.21674 -0.0440515 0
+0.172266 -0.0694969 0
+0.0936373 -0.110592 0
+-0.0382635 -0.175213 0
+-0.245957 -0.270741 0
+-0.549635 -0.400204 0
+-0.95845 -0.557833 0
+-1.462 -0.726047 0
+-2.02664 -0.87597 0
+-2.59984 -0.972423 0
+-3.12195 -0.982211 0
+-3.53918 -0.882595 0
+-3.81111 -0.667005 0
+-3.91029 -0.347539 0
+-3.81964 0.0442392 0
+-3.53288 0.458395 0
+-3.06037 0.831508 0
+-2.4387 1.09784 0
+-1.73566 1.2077 0
+-1.03924 1.14816 0
+-0.430403 0.953522 0
+0.0441879 0.694337 0
+0.381763 0.447759 0
+0.610821 0.26631 0
+0.768116 0.163283 0
+0.881225 0.120207 0
+0.964181 0.106828 0
+1.02258 0.0989711 0
+1.06019 0.0857716 0
+1.0821 0.06717 0
+1.09423 0.0476115 0
+1.10167 0.031104 0
+1.10764 0.0193505 0
+1.11365 0.0120903 0
+1.12005 0.00815396 0
+1.12672 0.00629222 0
+1.13344 0.00554672 0
+1.14003 0.00530454 0
+1.14641 0.00522459 0
+1.15254 0.00514231 0
+1.15843 0.00499477 0
+1.1641 0.00477175 0
+1.16955 0.0044826 0
+1.1748 0.00413614 0
+1.17985 0.00373277 0
+1.18469 0.0032609 0
+1.18927 0.00269533 0
+1.19356 0.00199967 0
+1.19747 0.00112792 0
+1.2009 2.49066e-05 0
+1.20368 -0.00136979 0
+1.20556 -0.00311576 0
+1.20621 -0.00526455 0
+1.20514 -0.00784779 0
+1.20176 -0.0108688 0
+1.19536 -0.0143258 0
+1.18526 -0.0183285 0
+1.17104 -0.0234499 0
+1.15262 -0.0315548 0
+1.12984 -0.0474063 0
+1.10053 -0.0812199 0
+1.05583 -0.151819 0
+0.971877 -0.289042 0
+0.799677 -0.532975 0
+0.458516 -0.927403 0
+-0.157377 -1.50671 0
+-1.15047 -2.27891 0
+-2.57118 -3.21039 0
+-4.36701 -4.21659 0
+-6.36222 -5.1601 0
+-8.30048 -5.86012 0
+-9.95999 -6.13099 0
+-11.3015 -5.88111 0
+-12.5411 -5.29295 0
+-5.57103 -5.04375 0
+-2.6988 -3.93309 0
+-2.6988 -1.50047 0
+-0.0580799 -0.0181038 0
+-0.144863 -0.042623 0
+-0.342966 -0.0876074 0
+-0.414352 -0.153452 0
+-0.479503 -0.193684 0
+-0.486254 -0.155442 0
+-0.399734 -0.0404209 0
+-0.231738 0.1002 0
+-0.0350365 0.203715 0
+0.130186 0.234978 0
+0.228947 0.199572 0
+0.261213 0.129348 0
+0.249566 0.0583067 0
+0.2203 0.00673947 0
+0.191379 -0.0209813 0
+0.170276 -0.0302214 0
+0.157472 -0.0289426 0
+0.150674 -0.0235182 0
+0.147423 -0.0176328 0
+0.146021 -0.0128235 0
+0.145559 -0.00939452 0
+0.145648 -0.00712519 0
+0.146163 -0.00566698 0
+0.147085 -0.00471049 0
+0.148429 -0.00403075 0
+0.150203 -0.00348612 0
+0.152401 -0.00300144 0
+0.154999 -0.00254673 0
+0.157959 -0.0021189 0
+0.16123 -0.00172649 0
+0.164762 -0.00137818 0
+0.168506 -0.00107887 0
+0.172421 -0.000829827 0
+0.17647 -0.000629055 0
+0.180622 -0.000473535 0
+0.184847 -0.000361989 0
+0.189114 -0.000295475 0
+0.193393 -0.000278739 0
+0.19764 -0.000322982 0
+0.201803 -0.000447581 0
+0.205812 -0.000683318 0
+0.209572 -0.00107882 0
+0.212949 -0.00170732 0
+0.215753 -0.00267325 0
+0.217695 -0.00411713 0
+0.218336 -0.00621448 0
+0.217013 -0.00917968 0
+0.212702 -0.0133109 0
+0.203754 -0.0191304 0
+0.18736 -0.0276599 0
+0.158648 -0.0407885 0
+0.10959 -0.0615373 0
+0.0282718 -0.0938982 0
+-0.100537 -0.141937 0
+-0.292671 -0.208075 0
+-0.559643 -0.290868 0
+-0.902656 -0.383042 0
+-1.30783 -0.470803 0
+-1.745 -0.535261 0
+-2.17114 -0.556088 0
+-2.53718 -0.51656 0
+-2.79568 -0.408519 0
+-2.90723 -0.236005 0
+-2.8461 -0.0168991 0
+-2.60588 0.218158 0
+-2.20469 0.430316 0
+-1.68777 0.58091 0
+-1.12276 0.642684 0
+-0.584824 0.610215 0
+-0.134987 0.503684 0
+0.197433 0.361915 0
+0.418354 0.226836 0
+0.557154 0.127509 0
+0.648125 0.0723107 0
+0.716254 0.0520766 0
+0.773036 0.0500462 0
+0.820403 0.0516032 0
+0.857075 0.0490991 0
+0.882801 0.0414437 0
+0.899378 0.0310339 0
+0.90971 0.0207718 0
+0.916561 0.0124994 0
+0.921879 0.0067718 0
+0.926738 0.00329505 0
+0.931586 0.00144438 0
+0.93653 0.000601813 0
+0.941538 0.000296686 0
+0.946538 0.000224209 0
+0.951468 0.000212404 0
+0.956284 0.000178937 0
+0.960961 9.44504e-05 0
+0.965488 -4.47409e-05 0
+0.969859 -0.000234547 0
+0.974064 -0.000472728 0
+0.978088 -0.000763489 0
+0.981902 -0.00111886 0
+0.985458 -0.00155739 0
+0.988688 -0.00210185 0
+0.991488 -0.00277619 0
+0.993718 -0.00360075 0
+0.995189 -0.00458664 0
+0.995655 -0.00573099 0
+0.994823 -0.00701676 0
+0.992382 -0.00842837 0
+0.988063 -0.0100082 0
+0.981734 -0.0119995 0
+0.973435 -0.0151525 0
+0.963174 -0.021294 0
+0.950006 -0.034239 0
+0.929781 -0.0609962 0
+0.89092 -0.112958 0
+0.8083 -0.206424 0
+0.636983 -0.361659 0
+0.30967 -0.600091 0
+-0.256858 -0.940178 0
+-1.14251 -1.39326 0
+-2.3932 -1.9597 0
+-3.98733 -2.62246 0
+-5.81418 -3.33325 0
+-7.68317 -3.99113 0
+-9.3834 -4.43076 0
+-10.8044 -4.4601 0
+-12.0924 -4.00493 0
+-5.06383 -3.41954 0
+-2.29292 -2.56288 0
+-2.29292 -0.549895 0
+-0.0373871 -0.00907534 0
+-0.094618 -0.0221245 0
+-0.228579 -0.0474443 0
+-0.294463 -0.0875697 0
+-0.369854 -0.118295 0
+-0.415797 -0.109501 0
+-0.398278 -0.0579436 0
+-0.312192 0.0141116 0
+-0.184219 0.0757388 0
+-0.0552249 0.105982 0
+0.0421775 0.102168 0
+0.0957022 0.0758212 0
+0.111344 0.0426628 0
+0.103644 0.0144373 0
+0.0865747 -0.00391465 0
+0.0691622 -0.0128116 0
+0.0553581 -0.0151413 0
+0.0458256 -0.0139887 0
+0.0397735 -0.0115836 0
+0.0361071 -0.00916008 0
+0.0339273 -0.00721767 0
+0.0326396 -0.0058405 0
+0.0319026 -0.00493291 0
+0.0315423 -0.00435308 0
+0.0314822 -0.00397353 0
+0.0316948 -0.00370154 0
+0.0321706 -0.00347998 0
+0.0329013 -0.00328003 0
+0.0338716 -0.00309185 0
+0.0350583 -0.00291576 0
+0.0364332 -0.00275548 0
+0.0379664 -0.00261451 0
+0.0396292 -0.00249491 0
+0.041395 -0.00239713 0
+0.0432401 -0.00232083 0
+0.045142 -0.00226593 0
+0.0470777 -0.00223333 0
+0.0490227 -0.00222576 0
+0.0509468 -0.00224906 0
+0.0528108 -0.00231353 0
+0.0545615 -0.00243594 0
+0.0561234 -0.00264258 0
+0.0573866 -0.00297236 0
+0.0581905 -0.00347904 0
+0.0583029 -0.00423136 0
+0.0573973 -0.00531079 0
+0.0550285 -0.00681278 0
+0.0505831 -0.00886732 0
+0.0431509 -0.0117001 0
+0.0312363 -0.0157473 0
+0.0122504 -0.0218046 0
+-0.0181512 -0.031138 0
+-0.0666111 -0.0454407 0
+-0.142035 -0.0665163 0
+-0.254484 -0.09563 0
+-0.41276 -0.132596 0
+-0.620968 -0.174838 0
+-0.874958 -0.216819 0
+-1.15995 -0.250279 0
+-1.45048 -0.265561 0
+-1.71316 -0.253892 0
+-1.91161 -0.210068 0
+-2.01285 -0.134773 0
+-1.99396 -0.0357959 0
+-1.84826 0.0724509 0
+-1.58939 0.171439 0
+-1.25139 0.242906 0
+-0.882919 0.274208 0
+-0.535511 0.262805 0
+-0.249386 0.217558 0
+-0.0430001 0.155528 0
+0.0884856 0.0953497 0
+0.16557 0.0504239 0
+0.212542 0.0253375 0
+0.247852 0.0167653 0
+0.28047 0.0174274 0
+0.311718 0.0203555 0
+0.339435 0.0213809 0
+0.361479 0.0193999 0
+0.377251 0.0152613 0
+0.387609 0.0104133 0
+0.394092 0.00601584 0
+0.398218 0.00264594 0
+0.401125 0.000387342 0
+0.40352 -0.000950795 0
+0.405767 -0.00164536 0
+0.408013 -0.00194994 0
+0.41029 -0.00205288 0
+0.412577 -0.002075 0
+0.414839 -0.00208367 0
+0.417044 -0.00211044 0
+0.419165 -0.00216644 0
+0.421184 -0.00225365 0
+0.423083 -0.00237192 0
+0.424842 -0.00252274 0
+0.426433 -0.00271047 0
+0.427817 -0.00294191 0
+0.428939 -0.00322462 0
+0.429727 -0.00356461 0
+0.430089 -0.00396342 0
+0.429917 -0.00441573 0
+0.429095 -0.00490953 0
+0.427511 -0.00543331 0
+0.425081 -0.00599853 0
+0.421764 -0.00669204 0
+0.417544 -0.00777977 0
+0.412279 -0.00988832 0
+0.405269 -0.0142853 0
+0.394279 -0.0232496 0
+0.373743 -0.0404609 0
+0.332042 -0.0712578 0
+0.248199 -0.122581 0
+0.0890851 -0.202546 0
+-0.191104 -0.319903 0
+-0.64727 -0.484012 0
+-1.33479 -0.705743 0
+-2.29617 -0.998311 0
+-3.54408 -1.37456 0
+-5.0419 -1.83542 0
+-6.68655 -2.34649 0
+-8.30885 -2.80846 0
+-9.7284 -3.04055 0
+-10.9233 -2.80998 0
+-4.41198 -1.97622 0
+-1.82459 -1.1932 0
+-1.82459 0.532155 0
+-0.0209839 -0.00341982 0
+-0.0537756 -0.00868643 0
+-0.13251 -0.0194124 0
+-0.182587 -0.0374927 0
+-0.247765 -0.0531187 0
+-0.303716 -0.0535517 0
+-0.325242 -0.0364193 0
+-0.301966 -0.00916654 0
+-0.243053 0.0168239 0
+-0.169932 0.0328599 0
+-0.104133 0.0363683 0
+-0.0585031 0.0301899 0
+-0.0353609 0.0195194 0
+-0.0298807 0.00895587 0
+-0.0348612 0.00106441 0
+-0.0441065 -0.0035678 0
+-0.0537088 -0.00554068 0
+-0.0618664 -0.00583271 0
+-0.068145 -0.00530663 0
+-0.0727721 -0.00453463 0
+-0.0761764 -0.00381502 0
+-0.0787602 -0.00325835 0
+-0.0808222 -0.00287258 0
+-0.0825543 -0.0026227 0
+-0.084065 -0.00246446 0
+-0.0854081 -0.00236001 0
+-0.0866066 -0.00228297 0
+-0.0876702 -0.00221799 0
+-0.0886054 -0.00215811 0
+-0.0894211 -0.00210152 0
+-0.0901291 -0.00204887 0
+-0.0907435 -0.00200147 0
+-0.0912794 -0.00196041 0
+-0.0917515 -0.00192633 0
+-0.092174 -0.00189953 0
+-0.0925609 -0.00188028 0
+-0.0929263 -0.00186916 0
+-0.0932859 -0.00186741 0
+-0.0936586 -0.00187745 0
+-0.0940699 -0.00190344 0
+-0.0945548 -0.00195217 0
+-0.0951644 -0.00203408 0
+-0.0959736 -0.00216428 0
+-0.0970906 -0.00236316 0
+-0.0986669 -0.00265612 0
+-0.100906 -0.00307297 0
+-0.104071 -0.00364901 0
+-0.108506 -0.00443297 0
+-0.1147 -0.00550755 0
+-0.123423 -0.00702561 0
+-0.135974 -0.00925499 0
+-0.154501 -0.0126118 0
+-0.182294 -0.0176494 0
+-0.223843 -0.0249684 0
+-0.28445 -0.0350253 0
+-0.369202 -0.0478465 0
+-0.481336 -0.0627058 0
+-0.620276 -0.0778818 0
+-0.779905 -0.0906525 0
+-0.947809 -0.0976607 0
+-1.10604 -0.0956658 0
+-1.23358 -0.0825295 0
+-1.31022 -0.0581432 0
+-1.32105 -0.024965 0
+-1.26071 0.0121093 0
+-1.13593 0.0466565 0
+-0.965337 0.0723091 0
+-0.775747 0.0846167 0
+-0.595474 0.0825314 0
+-0.446724 0.0688081 0
+-0.340165 0.048968 0
+-0.274004 0.0291882 0
+-0.237686 0.0141046 0
+-0.217912 0.00556318 0
+-0.203905 0.00275771 0
+-0.189868 0.00339035 0
+-0.174564 0.00505104 0
+-0.159315 0.00613151 0
+-0.145966 0.00604983 0
+-0.135681 0.00497575 0
+-0.128665 0.0033975 0
+-0.124434 0.0017843 0
+-0.122219 0.000430504 0
+-0.121277 -0.000555077 0
+-0.121037 -0.00119084 0
+-0.121128 -0.00155508 0
+-0.121341 -0.00173758 0
+-0.121579 -0.00181445 0
+-0.121815 -0.00184006 0
+-0.12205 -0.00184829 0
+-0.122304 -0.0018575 0
+-0.122594 -0.00187614 0
+-0.122941 -0.00190729 0
+-0.123361 -0.00195191 0
+-0.123874 -0.00201067 0
+-0.1245 -0.00208471 0
+-0.125267 -0.00217559 0
+-0.126207 -0.00228462 0
+-0.12736 -0.00241193 0
+-0.128769 -0.0025556 0
+-0.130474 -0.00271138 0
+-0.132509 -0.00287448 0
+-0.134897 -0.00304564 0
+-0.137651 -0.003245 0
+-0.140805 -0.00353931 0
+-0.144497 -0.00408814 0
+-0.149172 -0.00521369 0
+-0.155966 -0.00749181 0
+-0.167367 -0.0118486 0
+-0.1882 -0.0196292 0
+-0.226859 -0.0325989 0
+-0.296575 -0.0528664 0
+-0.416307 -0.0828139 0
+-0.610944 -0.125266 0
+-0.910743 -0.184215 0
+-1.35026 -0.266223 0
+-1.96665 -0.381928 0
+-2.79527 -0.545937 0
+-3.85826 -0.772438 0
+-5.14063 -1.06412 0
+-6.55549 -1.3936 0
+-7.92044 -1.67559 0
+-9.02467 -1.70576 0
+-3.91179 -0.977116 0
+-1.67846 -0.273553 0
+-1.67846 1.14377 0
+-0.00926501 -0.000695918 0
+-0.0239733 -0.00189939 0
+-0.060232 -0.00443067 0
+-0.0888165 -0.00890853 0
+-0.128929 -0.0130069 0
+-0.168719 -0.0137626 0
+-0.194596 -0.010543 0
+-0.198953 -0.00481002 0
+-0.183213 0.00108271 0
+-0.155563 0.00521 0
+-0.126005 0.00680896 0
+-0.102051 0.00623607 0
+-0.0869679 0.00443556 0
+-0.080373 0.00236038 0
+-0.0799428 0.000633615 0
+-0.0830034 -0.000507871 0
+-0.087445 -0.00109984 0
+-0.0919784 -0.00129999 0
+-0.0960081 -0.00127769 0
+-0.099382 -0.00116142 0
+-0.102169 -0.0010285 0
+-0.104513 -0.000915287 0
+-0.106554 -0.000832374 0
+-0.1084 -0.000777262 0
+-0.110123 -0.000742664 0
+-0.111762 -0.000721011 0
+-0.11334 -0.000706398 0
+-0.114863 -0.000695029 0
+-0.116337 -0.000684924 0
+-0.117764 -0.000675348 0
+-0.119147 -0.000666252 0
+-0.120492 -0.00065786 0
+-0.121802 -0.000650436 0
+-0.123085 -0.000644182 0
+-0.124346 -0.000639238 0
+-0.125591 -0.000635728 0
+-0.126827 -0.000633831 0
+-0.128061 -0.00063386 0
+-0.129302 -0.000636374 0
+-0.130564 -0.000642315 0
+-0.131864 -0.000653181 0
+-0.133227 -0.000671238 0
+-0.134692 -0.000699713 0
+-0.136313 -0.000742889 0
+-0.138163 -0.000806087 0
+-0.140341 -0.000895635 0
+-0.142972 -0.00101929 0
+-0.146217 -0.00118799 0
+-0.150305 -0.00141982 0
+-0.155585 -0.00174653 0
+-0.162619 -0.00222133 0
+-0.172307 -0.00292434 0
+-0.185997 -0.00396061 0
+-0.205521 -0.00544452 0
+-0.233081 -0.00746629 0
+-0.270889 -0.0100402 0
+-0.320553 -0.0130427 0
+-0.382274 -0.0161616 0
+-0.454044 -0.0188843 0
+-0.531148 -0.0205577 0
+-0.606288 -0.0205272 0
+-0.670487 -0.0183317 0
+-0.714735 -0.0138973 0
+-0.732045 -0.0076564 0
+-0.719406 -0.000531367 0
+-0.678992 0.00624194 0
+-0.618108 0.0114238 0
+-0.547622 0.0141303 0
+-0.479207 0.0141155 0
+-0.422249 0.0118497 0
+-0.381616 0.00833488 0
+-0.357152 0.00472409 0
+-0.344965 0.00191656 0
+-0.339715 0.000312516 0
+-0.33677 -0.000187037 0
+-0.333393 1.27381e-05 0
+-0.328793 0.000451171 0
+-0.323457 0.000794654 0
+-0.318306 0.000898963 0
+-0.314105 0.000773933 0
+-0.311215 0.000507432 0
+-0.309629 0.000197642 0
+-0.309114 -8.44685e-05 0
+-0.309365 -0.000304127 0
+-0.310101 -0.000455247 0
+-0.311108 -0.00054809 0
+-0.312247 -0.0005988 0
+-0.313439 -0.000622978 0
+-0.314646 -0.00063282 0
+-0.315858 -0.000636576 0
+-0.317077 -0.000639157 0
+-0.31831 -0.000643121 0
+-0.319568 -0.000649622 0
+-0.320861 -0.000659121 0
+-0.3222 -0.000671835 0
+-0.323597 -0.000687945 0
+-0.325066 -0.000707609 0
+-0.32662 -0.000730853 0
+-0.328274 -0.000757407 0
+-0.330044 -0.000786601 0
+-0.331938 -0.00081751 0
+-0.333963 -0.000849707 0
+-0.336124 -0.000885134 0
+-0.338437 -0.000931895 0
+-0.340966 -0.00101086 0
+-0.343889 -0.00116583 0
+-0.347626 -0.00147713 0
+-0.353041 -0.00207671 0
+-0.36173 -0.00316002 0
+-0.376371 -0.00498802 0
+-0.401095 -0.00787518 0
+-0.441791 -0.0121714 0
+-0.506332 -0.0182725 0
+-0.604873 -0.0267257 0
+-0.750575 -0.0385128 0
+-0.961252 -0.0555463 0
+-1.26191 -0.0812674 0
+-1.68684 -0.121014 0
+-2.27762 -0.181657 0
+-3.07163 -0.270102 0
+-4.07456 -0.39068 0
+-5.21061 -0.53954 0
+-6.2509 -0.665466 0
+-3.39906 -0.361977 0
+-1.85232 0.0208339 0
+-1.85232 0.788547 0
+-0.00232151 -0.000695918 0
+-0.00603535 -0.00189939 0
+-0.0154548 -0.00443067 0
+-0.0243634 -0.00890853 0
+-0.0373705 -0.0130069 0
+-0.0511333 -0.0137626 0
+-0.0616765 -0.010543 0
+-0.0664867 -0.00481002 0
+-0.0654042 0.00108271 0
+-0.0601943 0.00521 0
+-0.0533855 0.00680896 0
+-0.0471496 0.00623607 0
+-0.0427141 0.00443556 0
+-0.0403539 0.00236038 0
+-0.0397204 0.000633615 0
+-0.0402285 -0.000507871 0
+-0.0413285 -0.00109984 0
+-0.0426286 -0.00129999 0
+-0.0439065 -0.00127769 0
+-0.0450681 -0.00116142 0
+-0.0460968 -0.0010285 0
+-0.0470123 -0.000915287 0
+-0.0478448 -0.000832374 0
+-0.0486223 -0.000777262 0
+-0.0493651 -0.000742664 0
+-0.0500863 -0.000721011 0
+-0.0507929 -0.000706398 0
+-0.0514881 -0.000695029 0
+-0.0521732 -0.000684924 0
+-0.0528487 -0.000675348 0
+-0.0535152 -0.000666252 0
+-0.0541732 -0.00065786 0
+-0.0548238 -0.000650436 0
+-0.0554681 -0.000644182 0
+-0.0561075 -0.000639238 0
+-0.0567434 -0.000635728 0
+-0.0573774 -0.000633831 0
+-0.0580114 -0.00063386 0
+-0.0586479 -0.000636374 0
+-0.0592904 -0.000642315 0
+-0.0599437 -0.000653181 0
+-0.0606151 -0.000671238 0
+-0.061315 -0.000699713 0
+-0.062058 -0.000742889 0
+-0.0628643 -0.000806087 0
+-0.0637601 -0.000895635 0
+-0.0647795 -0.00101929 0
+-0.0659676 -0.00118799 0
+-0.0673876 -0.00141982 0
+-0.0691343 -0.00174653 0
+-0.0713558 -0.00222133 0
+-0.0742803 -0.00292434 0
+-0.0782411 -0.00396061 0
+-0.0836859 -0.00544452 0
+-0.0911524 -0.00746629 0
+-0.101193 -0.0100402 0
+-0.114236 -0.0130427 0
+-0.130398 -0.0161616 0
+-0.149282 -0.0188843 0
+-0.16984 -0.0205577 0
+-0.190368 -0.0205272 0
+-0.2087 -0.0183317 0
+-0.222598 -0.0138973 0
+-0.230254 -0.0076564 0
+-0.230786 -0.000531367 0
+-0.224544 0.00624194 0
+-0.213121 0.0114238 0
+-0.198991 0.0141303 0
+-0.184875 0.0141155 0
+-0.173026 0.0118497 0
+-0.164691 0.00833488 0
+-0.159967 0.00472409 0
+-0.158051 0.00191656 0
+-0.157738 0.000312516 0
+-0.157925 -0.000187037 0
+-0.157913 1.27381e-05 0
+-0.157462 0.000451171 0
+-0.156667 0.000794654 0
+-0.155768 0.000898963 0
+-0.154995 0.000773933 0
+-0.154487 0.000507432 0
+-0.15429 0.000197642 0
+-0.154374 -8.44685e-05 0
+-0.154678 -0.000304127 0
+-0.155134 -0.000455247 0
+-0.155682 -0.00054809 0
+-0.156281 -0.0005988 0
+-0.156904 -0.000622978 0
+-0.157537 -0.00063282 0
+-0.158174 -0.000636576 0
+-0.158813 -0.000639157 0
+-0.159456 -0.000643121 0
+-0.160106 -0.000649622 0
+-0.160765 -0.000659121 0
+-0.161437 -0.000671835 0
+-0.162125 -0.000687945 0
+-0.162833 -0.000707609 0
+-0.163564 -0.000730853 0
+-0.164321 -0.000757407 0
+-0.165108 -0.000786601 0
+-0.165926 -0.00081751 0
+-0.166775 -0.000849707 0
+-0.167661 -0.000885134 0
+-0.168593 -0.000931895 0
+-0.169604 -0.00101086 0
+-0.17077 -0.00116583 0
+-0.172247 -0.00147713 0
+-0.174324 -0.00207671 0
+-0.177484 -0.00316002 0
+-0.182472 -0.00498802 0
+-0.190347 -0.00787518 0
+-0.202519 -0.0121714 0
+-0.220791 -0.0182725 0
+-0.247517 -0.0267257 0
+-0.28603 -0.0385128 0
+-0.341577 -0.0555463 0
+-0.422844 -0.0812674 0
+-0.543859 -0.121014 0
+-0.725515 -0.181657 0
+-0.995618 -0.270102 0
+-1.3863 -0.39068 0
+-1.92584 -0.53954 0
+-2.5913 -0.665466 0
+-1.93678 -0.361977 0
+-1.36631 0.0208339 0
+-1.36631 0.788547 0
+}
Index: /tags/1.6.0/examples/flow/demo1/demo1.tcl
===================================================================
--- /tags/1.6.0/examples/flow/demo1/demo1.tcl	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo1/demo1.tcl	(revision 6168)
@@ -0,0 +1,75 @@
+
+# Example of using a unirect3d mesh in a vector field
+# This is inlucded for testing purposes, since unirect3d outputs are deprecated
+source data-demo1.tcl
+
+package require Rappture
+
+set driver [Rappture::library [lindex $argv 0]]
+
+set elements {
+    output.field.about.label "Jwire example"
+    output.field.component.flow.label "Flow 1"
+    output.field.component.flow.axis z
+    output.field.component.flow.position 0%
+    output.field.component.flow.volume yes
+    output.field.component.flow.streams no
+    output.field.component.flow.outline no
+    output.field.component.flow.particles(left).label "Left particle flow"
+    output.field.component.flow.particles(left).description {
+	Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
+    }
+    output.field.component.flow.particles(left).axis x 
+    output.field.component.flow.particles(left).color lightgreen
+    output.field.component.flow.particles(left).position 10%
+    output.field.component.flow.particles(right).label "Right particle flow"
+    output.field.component.flow.particles(right).description {
+	This is a description for the right particle flow...
+    }
+    output.field.component.flow.particles(right).axis x 
+    output.field.component.flow.particles(right).color khaki
+    output.field.component.flow.particles(right).position 90%
+    output.field.component.style  "-color blue:red -levels 6 -opacity 1"
+    output.field.component.flow.box(one).label "Region 1"
+    output.field.component.flow.box(one).color cyan
+    output.field.component.flow.box(one).hide yes 
+    output.field.component.flow.box(one).corner(1) "0 -100 -100" 
+    output.field.component.flow.box(one).corner(2) "3000 400 400"
+    output.field.component.flow.box(two).label "Region 2"
+    output.field.component.flow.box(two).hide yes 
+    output.field.component.flow.box(two).color violet 
+    output.field.component.flow.box(two).corner(1) "1000 -150 -100" 
+    output.field.component.flow.box(two).corner(2) "3000 3000 3000"
+    output.field.component.flow.box(three).label "Region 3"
+    output.field.component.flow.box(three).hide yes 
+    output.field.component.flow.box(three).color magenta 
+    output.field.component.flow.box(three).corner(1) "1000 -150 -100" 
+    output.field.component.flow.box(three).corner(2) "2000 450 450"
+    output.field.component.mesh unirect3d
+    output.field.component.extents 3
+    unirect3d.xaxis.min	0
+    unirect3d.xaxis.max	6300
+    unirect3d.xaxis.numpoints  126
+    unirect3d.yaxis.min	0
+    unirect3d.yaxis.max	1500
+    unirect3d.yaxis.numpoints  30
+    unirect3d.zaxis.min	0
+    unirect3d.zaxis.max	1519.05
+    unirect3d.zaxis.numpoints  22
+    unirect3d.components 3
+}
+
+puts stdout "Setting attributes for demo1"
+flush stdout
+
+foreach {key value} $elements {
+    $driver put $key $value
+}
+$driver put output.field.component.values $values
+
+Rappture::result $driver
+
+puts stdout "done"
+flush stdout
+exit 0
+
Index: /tags/1.6.0/examples/flow/demo1/tool.xml
===================================================================
--- /tags/1.6.0/examples/flow/demo1/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo1/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/demo1.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/flow/demo2/Makefile.in
===================================================================
--- /tags/1.6.0/examples/flow/demo2/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo2/Makefile.in	(revision 6168)
@@ -0,0 +1,36 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/demo2.tcl \
+		$(srcdir)/data-2dflow.tcl \
+		$(srcdir)/data-unirect2d.tcl \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/flow/demo2
+
+all: 
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: 
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/flow/demo2/data-2dflow.tcl
===================================================================
--- /tags/1.6.0/examples/flow/demo2/data-2dflow.tcl	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo2/data-2dflow.tcl	(revision 6168)
@@ -0,0 +1,33247 @@
+set values {
+0 0 0
+-3.4e-05 2.7e-05 0
+-0.000459 0.000234 0
+-0.001733 0.000613 0
+-0.004153 0.001091 0
+-0.007798 0.001577 0
+-0.012506 0.001974 0
+-0.017924 0.002218 0
+-0.023646 0.0023 0
+-0.029371 0.002283 0
+-0.035055 0.002276 0
+-0.04094 0.002394 0
+-0.047455 0.002691 0
+-0.054973 0.003118 0
+-0.063542 0.00352 0
+-0.072696 0.00368 0
+-0.081472 0.003413 0
+-0.088646 0.002649 0
+-0.093149 0.001496 0
+-0.094496 0.000225 0
+-0.093061 -0.000805 0
+-0.090064 -0.001272 0
+-0.087262 -0.001008 0
+-0.086418 -6.6e-05 0
+-0.088744 0.001281 0
+-0.094503 0.002626 0
+-0.1029 0.003556 0
+-0.11232 0.003768 0
+-0.12072 0.00316 0
+-0.12625 0.001844 0
+-0.12762 9.5e-05 0
+-0.12441 -0.001734 0
+-0.11706 -0.003308 0
+-0.10667 -0.004394 0
+-0.094656 -0.004894 0
+-0.082425 -0.004852 0
+-0.071058 -0.004421 0
+-0.061136 -0.003813 0
+-0.052681 -0.00325 0
+-0.045241 -0.002909 0
+-0.038048 -0.002896 0
+-0.030248 -0.003222 0
+-0.021116 -0.003814 0
+-0.010239 -0.004534 0
+0.002401 -0.00522 0
+0.016438 -0.005727 0
+0.031234 -0.005956 0
+0.046029 -0.005881 0
+0.060115 -0.005532 0
+0.072943 -0.004984 0
+0.084169 -0.004319 0
+0.093625 -0.003601 0
+0.10124 -0.002861 0
+0.10698 -0.002102 0
+0.11076 -0.001316 0
+0.11254 -0.000507 0
+0.11231 0.000287 0
+0.11024 0.000996 0
+0.10673 0.001522 0
+0.10241 0.001769 0
+0.098123 0.001667 0
+0.094778 0.001199 0
+0.093211 0.000413 0
+0.094033 -0.000588 0
+0.097506 -0.001656 0
+0.10351 -0.002634 0
+0.11154 -0.003383 0
+0.12085 -0.003804 0
+0.13051 -0.003853 0
+0.13961 -0.00354 0
+0.14734 -0.002923 0
+0.15311 -0.002087 0
+0.15653 -0.001125 0
+0.15747 -0.000125 0
+0.15596 0.000841 0
+0.15219 0.001726 0
+0.1464 0.002499 0
+0.13892 0.003144 0
+0.13009 0.003651 0
+0.12026 0.004012 0
+0.10982 0.004218 0
+0.09917 0.00426 0
+0.088733 0.004132 0
+0.07893 0.003838 0
+0.070152 0.00339 0
+0.062733 0.002818 0
+0.056916 0.002158 0
+0.052834 0.001457 0
+0.050495 0.000764 0
+0.049794 0.000125 0
+0.050525 -0.000423 0
+0.052411 -0.000854 0
+0.055134 -0.001157 0
+0.058369 -0.001329 0
+0.061807 -0.001381 0
+0.065179 -0.00133 0
+0.068265 -0.001196 0
+0.070897 -0.001001 0
+0.072962 -0.000765 0
+0.07439 -0.000506 0
+0.075154 -0.000239 0
+0.075255 2.4e-05 0
+0.074723 0.000275 0
+0.073601 0.000505 0
+0.071949 0.00071 0
+0.069836 0.000888 0
+0.067335 0.001035 0
+0.064524 0.001152 0
+0.061478 0.001238 0
+0.058272 0.001295 0
+0.054976 0.001324 0
+0.051653 0.001329 0
+0.04836 0.001312 0
+0.045143 0.001277 0
+0.042044 0.001226 0
+0.039096 0.001163 0
+0.036323 0.00109 0
+0.033746 0.00101 0
+0.031379 0.000925 0
+0.029231 0.000837 0
+0.027307 0.000747 0
+0.025608 0.000657 0
+0.02413 0.000569 0
+0.022868 0.000484 0
+0.021811 0.000403 0
+0.020948 0.000327 0
+0.020262 0.000257 0
+0.019739 0.000194 0
+0.019361 0.000138 0
+0.019108 8.9e-05 0
+0.018964 4.8e-05 0
+0.018909 1.4e-05 0
+0.018927 -1.4e-05 0
+0.019001 -3.5e-05 0
+0.019117 -5e-05 0
+0.019261 -6e-05 0
+0.019421 -6.5e-05 0
+0.019588 -6.7e-05 0
+0.019752 -6.5e-05 0
+0.019907 -6.1e-05 0
+0.020047 -5.4e-05 0
+0.020166 -4.5e-05 0
+0.02026 -3.5e-05 0
+0.020323 -2.2e-05 0
+0.020351 -7e-06 0
+0.020337 1e-05 0
+0.020274 3e-05 0
+0.020153 5.4e-05 0
+0.019965 8.3e-05 0
+0.019697 0.000116 0
+0.019336 0.000154 0
+0.018867 0.0002 0
+0.018269 0.000253 0
+0.017523 0.000315 0
+0.016601 0.000388 0
+0.015471 0.000474 0
+0.014096 0.000577 0
+0.012427 0.000699 0
+0.010409 0.000845 0
+0.007973 0.00102 0
+0.005036 0.001229 0
+0.001501 0.001479 0
+-0.002746 0.001776 0
+-0.007836 0.002128 0
+-0.013921 0.002542 0
+-0.021172 0.003026 0
+-0.029779 0.003589 0
+-0.03995 0.004236 0
+-0.05191 0.004974 0
+-0.065895 0.005809 0
+-0.082148 0.00674 0
+-0.10092 0.007771 0
+-0.12245 0.0089 0
+-0.14698 0.010124 0
+-0.17474 0.011441 0
+-0.20597 0.012853 0
+-0.24092 0.014362 0
+-0.27984 0.01598 0
+-0.32304 0.017726 0
+-0.3709 0.019628 0
+-0.42386 0.021724 0
+-0.48251 0.024057 0
+-0.54751 0.026674 0
+-0.61966 0.029616 0
+-0.69981 0.032906 0
+-0.78884 0.036544 0
+-0.88756 0.04049 0
+-0.99658 0.04466 0
+-1.1162 0.04892 0
+-1.2464 0.053092 0
+-1.3864 0.056967 0
+-1.5353 0.060333 0
+-1.6912 0.063005 0
+-1.8523 0.064869 0
+-2.0166 0.065933 0
+-2.1824 0.066365 0
+-2.3486 0.06653 0
+-2.5157 0.067011 0
+-2.686 0.068597 0
+-2.8639 0.07225 0
+-3.0567 0.079023 0
+-3.274 0.089948 0
+-3.5279 0.10587 0
+-3.8318 0.12728 0
+-4.1994 0.15408 0
+-4.6429 0.18549 0
+-5.1709 0.21991 0
+-5.7866 0.25503 0
+-6.4866 0.28806 0
+-7.2606 0.31624 0
+-8.0921 0.33742 0
+-8.9619 0.35078 0
+-9.8522 0.35743 0
+-10.752 0.36057 0
+-11.661 0.36523 0
+-12.595 0.37735 0
+-13.583 0.40223 0
+-14.662 0.44288 0
+-15.872 0.49845 0
+-17.239 0.56341 0
+-18.769 0.62778 0
+-20.437 0.67854 0
+-22.183 0.70193 0
+-23.915 0.68616 0
+-25.521 0.62378 0
+-26.88 0.51329 0
+-27.882 0.35975 0
+-28.437 0.17436 0
+-28.497 -0.026707 0
+-28.058 -0.22421 0
+-27.166 -0.39853 0
+-25.909 -0.53329 0
+-24.407 -0.6196 0
+-22.776 -0.65991 0
+-21.105 -0.66943 0
+-19.426 -0.67302 0
+-17.704 -0.69652 0
+-15.861 -0.75346 0
+-13.832 -0.83146 0
+-11.645 -0.88447 0
+-9.5004 -0.83677 0
+-7.8137 -0.60166 0
+-7.1855 -0.11152 0
+-8.2941 0.6499 0
+-11.724 1.6259 0
+-17.778 2.6871 0
+-26.344 3.6578 0
+-36.862 4.3613 0
+-48.411 4.6695 0
+-59.903 4.5361 0
+-70.297 4.0015 0
+-78.773 3.1671 0
+-84.81 2.1536 0
+-88.159 1.0657 0
+-88.782 -0.019902 0
+-86.805 -1.0394 0
+-82.532 -1.9168 0
+-76.499 -2.5547 0
+-69.482 -2.8606 0
+-62.383 -2.8037 0
+-55.969 -2.4703 0
+-50.548 -2.0738 0
+-45.759 -1.8922 0
+-40.626 -2.149 0
+-33.928 -2.8925 0
+-24.744 -3.9475 0
+-12.904 -4.9817 0
+0.90894 -5.6672 0
+15.504 -5.8543 0
+29.814 -5.6597 0
+43.47 -5.4081 0
+57.005 -5.4518 0
+71.524 -5.9655 0
+88.027 -6.8295 0
+106.71 -7.6638 0
+126.59 -7.9894 0
+145.66 -7.4237 0
+161.37 -5.8157 0
+171.28 -3.2782 0
+173.65 -0.1385 0
+167.82 3.1412 0
+154.43 6.0435 0
+135.33 8.0857 0
+113.32 8.936 0
+91.545 8.5344 0
+72.693 7.1465 0
+58.3 5.2775 0
+48.575 3.4482 0
+42.832 1.9431 0
+40.335 0.69458 0
+40.981 -0.59214 0
+45.308 -2.1324 0
+53.734 -3.7733 0
+65.492 -4.9428 0
+78.03 -4.9132 0
+87.446 -3.2437 0
+89.891 -0.12947 0
+83.275 3.5724 0
+68.338 6.6775 0
+48.504 8.192 0
+28.571 7.7415 0
+12.848 5.7064 0
+3.5836 3.0329 0
+0.26911 0.83988 0
+0 0 0
+0 0 0
+-0.000298 0.000372 0
+-0.004081 0.003251 0
+-0.015403 0.008502 0
+-0.036942 0.015153 0
+-0.069413 0.021908 0
+-0.11138 0.02745 0
+-0.15975 0.030858 0
+-0.21082 0.032009 0
+-0.2619 0.031735 0
+-0.31245 0.031567 0
+-0.36456 0.033075 0
+-0.42193 0.037036 0
+-0.48788 0.042801 0
+-0.56288 0.048245 0
+-0.64293 0.050419 0
+-0.71964 0.046745 0
+-0.78234 0.03628 0
+-0.82171 0.020485 0
+-0.8335 0.003093 0
+-0.82105 -0.010976 0
+-0.79512 -0.017281 0
+-0.77118 -0.013505 0
+-0.76476 -0.000407 0
+-0.78653 0.018272 0
+-0.8388 0.036931 0
+-0.91459 0.049845 0
+-0.99952 0.052878 0
+-1.0758 0.044615 0
+-1.127 0.026576 0
+-1.1417 0.002561 0
+-1.1162 -0.022576 0
+-1.0543 -0.044266 0
+-0.96542 -0.05929 0
+-0.86201 -0.066335 0
+-0.75622 -0.066 0
+-0.6574 -0.060372 0
+-0.57056 -0.052361 0
+-0.49589 -0.044959 0
+-0.42941 -0.040598 0
+-0.3645 -0.040678 0
+-0.29379 -0.045354 0
+-0.21112 -0.0536 0
+-0.113 -0.063534 0
+0.00055 -0.072937 0
+0.12623 -0.079816 0
+0.25835 -0.082868 0
+0.39023 -0.081712 0
+0.51565 -0.07682 0
+0.62984 -0.069211 0
+0.72984 -0.060021 0
+0.81424 -0.050124 0
+0.88246 -0.039944 0
+0.93413 -0.029509 0
+0.96869 -0.018697 0
+0.98556 -0.007567 0
+0.98476 0.003391 0
+0.96771 0.013187 0
+0.93783 0.020485 0
+0.90074 0.023942 0
+0.86378 0.0226 0
+0.83498 0.01622 0
+0.82173 0.005444 0
+0.82938 -0.008276 0
+0.86027 -0.022934 0
+0.9133 -0.036359 0
+0.98413 -0.046625 0
+1.066 -0.052376 0
+1.151 -0.053008 0
+1.231 -0.048679 0
+1.2989 -0.04017 0
+1.3495 -0.028652 0
+1.3795 -0.015424 0
+1.3876 -0.00169 0
+1.3743 0.011587 0
+1.3411 0.023738 0
+1.2903 0.034357 0
+1.2246 0.043221 0
+1.147 0.050197 0
+1.0607 0.05517 0
+0.96893 0.058013 0
+0.87532 0.058598 0
+0.78355 0.05685 0
+0.69735 0.052801 0
+0.62016 0.046646 0
+0.55495 0.038753 0
+0.50386 0.029655 0
+0.46806 0.019992 0
+0.44764 0.010438 0
+0.44168 0.001624 0
+0.44835 -0.005934 0
+0.4652 -0.011883 0
+0.48943 -0.016044 0
+0.51814 -0.018413 0
+0.54864 -0.019123 0
+0.57851 -0.018404 0
+0.60584 -0.016542 0
+0.62913 -0.013835 0
+0.64738 -0.010565 0
+0.66001 -0.006982 0
+0.66675 -0.003291 0
+0.66763 0.000344 0
+0.66291 0.003798 0
+0.65299 0.006976 0
+0.63839 0.009813 0
+0.61971 0.012262 0
+0.59761 0.014297 0
+0.57277 0.015906 0
+0.54586 0.017093 0
+0.51753 0.017876 0
+0.48841 0.018283 0
+0.45905 0.01835 0
+0.42995 0.018118 0
+0.40152 0.017632 0
+0.37413 0.016934 0
+0.34807 0.016065 0
+0.32355 0.015063 0
+0.30077 0.013961 0
+0.27983 0.012787 0
+0.26083 0.011569 0
+0.2438 0.01033 0
+0.22875 0.009091 0
+0.21566 0.007874 0
+0.20448 0.006697 0
+0.19511 0.005577 0
+0.18744 0.004528 0
+0.18136 0.003563 0
+0.17671 0.002691 0
+0.17333 0.001917 0
+0.17108 0.001243 0
+0.16978 0.000671 0
+0.16928 0.000197 0
+0.16943 -0.000183 0
+0.17008 -0.000475 0
+0.1711 -0.000687 0
+0.17237 -0.000827 0
+0.1738 -0.000904 0
+0.17528 -0.000926 0
+0.17674 -0.000904 0
+0.17812 -0.000844 0
+0.17936 -0.000751 0
+0.18042 -0.000631 0
+0.18126 -0.000484 0
+0.18184 -0.00031 0
+0.18209 -0.000105 0
+0.18198 0.000135 0
+0.18143 0.000417 0
+0.18037 0.000749 0
+0.17872 0.001138 0
+0.17636 0.001596 0
+0.17317 0.002132 0
+0.16902 0.002759 0
+0.16373 0.003493 0
+0.15712 0.004354 0
+0.14895 0.005367 0
+0.13894 0.006565 0
+0.12675 0.007988 0
+0.11195 0.009684 0
+0.094042 0.011711 0
+0.072419 0.014135 0
+0.046352 0.017033 0
+0.014979 0.020492 0
+-0.022711 0.024606 0
+-0.067887 0.029477 0
+-0.12189 0.035212 0
+-0.18624 0.04192 0
+-0.26261 0.049708 0
+-0.35285 0.058673 0
+-0.45896 0.068897 0
+-0.58302 0.080443 0
+-0.7272 0.093347 0
+-0.89367 0.10762 0
+-1.0846 0.12324 0
+-1.3022 0.14018 0
+-1.5484 0.15841 0
+-1.8253 0.17794 0
+-2.1352 0.19882 0
+-2.4802 0.22119 0
+-2.8631 0.24532 0
+-3.2871 0.27159 0
+-3.7563 0.30053 0
+-4.2756 0.33273 0
+-4.8511 0.36883 0
+-5.4896 0.4094 0
+-6.1987 0.45476 0
+-6.986 0.5049 0
+-7.8587 0.55927 0
+-8.8221 0.6167 0
+-9.8789 0.67533 0
+-11.028 0.7327 0
+-12.264 0.78591 0
+-13.577 0.83201 0
+-14.952 0.86844 0
+-16.372 0.89362 0
+-17.818 0.90763 0
+-19.275 0.91281 0
+-20.735 0.91422 0
+-22.2 0.91992 0
+-23.691 0.94085 0
+-25.249 0.99035 0
+-26.935 1.083 0
+-28.836 1.2331 0
+-31.06 1.4525 0
+-33.724 1.7476 0
+-36.951 2.1174 0
+-40.848 2.5509 0
+-45.49 3.0259 0
+-50.907 3.5104 0
+-57.067 3.9657 0
+-63.878 4.3533 0
+-71.193 4.6436 0
+-78.841 4.8253 0
+-86.662 4.9134 0
+-94.557 4.9526 0
+-102.53 5.0126 0
+-110.71 5.1754 0
+-119.36 5.5149 0
+-128.8 6.0729 0
+-139.39 6.8377 0
+-151.37 7.733 0
+-164.79 8.6208 0
+-179.43 9.3209 0
+-194.75 9.643 0
+-209.94 9.4235 0
+-224.02 8.5588 0
+-235.9 7.0272 0
+-244.61 4.8973 0
+-249.34 2.3225 0
+-249.66 -0.47527 0
+-245.51 -3.2311 0
+-237.28 -5.6734 0
+-225.75 -7.574 0
+-211.96 -8.8062 0
+-196.95 -9.3978 0
+-181.54 -9.5526 0
+-166.03 -9.6092 0
+-150.16 -9.9222 0
+-133.26 -10.681 0
+-114.8 -11.722 0
+-95.012 -12.42 0
+-75.655 -11.742 0
+-60.344 -8.5017 0
+-54.324 -1.7702 0
+-63.523 8.6771 0
+-93.047 22.064 0
+-145.55 36.616 0
+-220.03 49.918 0
+-311.56 59.544 0
+-412.05 63.735 0
+-511.94 61.862 0
+-602.13 54.486 0
+-675.46 43.011 0
+-727.38 29.102 0
+-755.8 14.198 0
+-760.42 -0.654 0
+-742.38 -14.587 0
+-704.35 -26.563 0
+-651.05 -35.237 0
+-589.34 -39.324 0
+-527.24 -38.382 0
+-471.58 -33.588 0
+-425.16 -27.887 0
+-384.82 -25.148 0
+-341.87 -28.504 0
+-285.36 -38.68 0
+-206.83 -53.306 0
+-104.46 -67.807 0
+16.031 -77.618 0
+144.27 -80.597 0
+270.74 -78.246 0
+391.91 -74.941 0
+511.98 -75.47 0
+640.17 -82.226 0
+784.81 -93.607 0
+947.35 -104.49 0
+1119.3 -108.42 0
+1283.1 -100.26 0
+1417 -78.049 0
+1500.2 -43.347 0
+1518 -0.60162 0
+1465 43.942 0
+1346.6 83.286 0
+1179.2 110.87 0
+987.15 122.13 0
+798.06 116.23 0
+635.41 96.774 0
+512.7 70.731 0
+431.57 45.339 0
+385.63 24.618 0
+367.76 7.739 0
+376.34 -9.3252 0
+415.48 -29.607 0
+488.52 -51.171 0
+588.86 -66.369 0
+694.66 -65.404 0
+772.55 -42.346 0
+789.73 0.11357 0
+728.64 50.317 0
+596.15 92.204 0
+422.16 112.36 0
+248.24 105.81 0
+111.48 77.834 0
+31.068 41.314 0
+2.3319 11.432 0
+0 0 0
+0 0 0
+-0.000807 0.001436 0
+-0.011055 0.012559 0
+-0.041765 0.032873 0
+-0.10028 0.058659 0
+-0.18868 0.084931 0
+-0.30319 0.10657 0
+-0.43538 0.11994 0
+-0.57514 0.12446 0
+-0.71469 0.12321 0
+-0.8521 0.12203 0
+-0.99238 0.12698 0
+-1.1452 0.14118 0
+-1.3193 0.16234 0
+-1.5163 0.1825 0
+-1.7262 0.19051 0
+-1.9271 0.17656 0
+-2.0913 0.13701 0
+-2.1944 0.077358 0
+-2.2254 0.011762 0
+-2.1932 -0.041067 0
+-2.1267 -0.064236 0
+-2.0671 -0.048926 0
+-2.0555 0.001945 0
+-2.1203 0.074082 0
+-2.2677 0.14611 0
+-2.479 0.19617 0
+-2.7158 0.2085 0
+-2.9309 0.17768 0
+-3.0802 0.10951 0
+-3.1336 0.018424 0
+-3.0808 -0.077155 0
+-2.9313 -0.15993 0
+-2.7094 -0.21775 0
+-2.4473 -0.2457 0
+-2.1763 -0.24609 0
+-1.9205 -0.22677 0
+-1.6925 -0.19865 0
+-1.4926 -0.17291 0
+-1.3106 -0.15856 0
+-1.1295 -0.16072 0
+-0.93049 -0.17984 0
+-0.69833 -0.21196 0
+-0.42473 -0.24995 0
+-0.11051 -0.28546 0
+0.23497 -0.31105 0
+0.59627 -0.32191 0
+0.95564 -0.31673 0
+1.2967 -0.29744 0
+1.6071 -0.26797 0
+1.8793 -0.23269 0
+2.1099 -0.1949 0
+2.2976 -0.15615 0
+2.4414 -0.11648 0
+2.54 -0.075332 0
+2.5916 -0.03288 0
+2.5961 0.00904 0
+2.557 0.04665 0
+2.4833 0.074835 0
+2.3897 0.088427 0
+2.2958 0.083736 0
+2.2229 0.059826 0
+2.1906 0.019124 0
+2.2132 -0.032823 0
+2.2969 -0.08836 0
+2.4389 -0.1392 0
+2.6276 -0.17801 0
+2.8452 -0.19963 0
+3.0704 -0.20178 0
+3.282 -0.18509 0
+3.4615 -0.15256 0
+3.5948 -0.10866 0
+3.6737 -0.058342 0
+3.6948 -0.006168 0
+3.6593 0.044226 0
+3.5713 0.090327 0
+3.4368 0.13062 0
+3.2632 0.16429 0
+3.058 0.19083 0
+2.8295 0.20981 0
+2.5866 0.2207 0
+2.3386 0.22301 0
+2.0954 0.21643 0
+1.8669 0.20105 0
+1.6623 0.17759 0
+1.4896 0.14746 0
+1.3544 0.1127 0
+1.2601 0.075752 0
+1.2068 0.039214 0
+1.1921 0.005504 0
+1.211 -0.023395 0
+1.2571 -0.046118 0
+1.3229 -0.061988 0
+1.4005 -0.070981 0
+1.4827 -0.073612 0
+1.5631 -0.070771 0
+1.6365 -0.063553 0
+1.6991 -0.053108 0
+1.748 -0.040521 0
+1.7818 -0.026747 0
+1.7998 -0.012577 0
+1.8021 0.001365 0
+1.7894 0.014601 0
+1.7627 0.026776 0
+1.7236 0.037637 0
+1.6735 0.047011 0
+1.6144 0.054798 0
+1.5478 0.060957 0
+1.4758 0.065503 0
+1.4 0.068504 0
+1.322 0.070064 0
+1.2434 0.070325 0
+1.1655 0.069444 0
+1.0894 0.067588 0
+1.016 0.064924 0
+0.9462 0.061607 0
+0.88049 0.057779 0
+0.81939 0.053566 0
+0.76322 0.04908 0
+0.71221 0.044422 0
+0.66646 0.039682 0
+0.62602 0.034943 0
+0.5908 0.030284 0
+0.56067 0.025776 0
+0.53539 0.021483 0
+0.51469 0.017462 0
+0.49822 0.013759 0
+0.48561 0.010407 0
+0.47643 0.00743 0
+0.47027 0.004837 0
+0.46669 0.002631 0
+0.46528 0.0008 0
+0.46561 -0.00067 0
+0.46732 -0.001803 0
+0.47003 -0.002627 0
+0.47345 -0.003174 0
+0.47728 -0.003478 0
+0.48127 -0.003574 0
+0.48523 -0.003494 0
+0.48898 -0.003267 0
+0.49237 -0.002916 0
+0.49528 -0.002456 0
+0.49759 -0.001893 0
+0.49918 -0.001225 0
+0.49993 -0.000439 0
+0.49968 0.000484 0
+0.49827 0.001568 0
+0.49548 0.002844 0
+0.49108 0.004344 0
+0.48478 0.006105 0
+0.47625 0.008168 0
+0.46512 0.010584 0
+0.45093 0.013413 0
+0.43317 0.016734 0
+0.41118 0.020645 0
+0.38421 0.02527 0
+0.35133 0.030763 0
+0.31141 0.03731 0
+0.26307 0.045133 0
+0.20468 0.054489 0
+0.13427 0.065671 0
+0.049518 0.079011 0
+-0.052299 0.094872 0
+-0.17433 0.11365 0
+-0.32019 0.13574 0
+-0.49396 0.16159 0
+-0.70017 0.19158 0
+-0.94379 0.22611 0
+-1.2302 0.26548 0
+-1.565 0.30994 0
+-1.954 0.35962 0
+-2.4031 0.41456 0
+-2.9182 0.47468 0
+-3.5049 0.53988 0
+-4.1689 0.61004 0
+-4.9156 0.68515 0
+-5.7508 0.76541 0
+-6.6805 0.85137 0
+-7.7119 0.94399 0
+-8.8536 1.0448 0
+-10.116 1.1556 0
+-11.513 1.2789 0
+-13.059 1.4171 0
+-14.774 1.5722 0
+-16.677 1.7455 0
+-18.789 1.937 0
+-21.128 2.1446 0
+-23.707 2.3636 0
+-26.535 2.587 0
+-29.608 2.8053 0
+-32.911 3.0072 0
+-36.414 3.1813 0
+-40.079 3.3177 0
+-43.857 3.4104 0
+-47.699 3.4595 0
+-51.561 3.474 0
+-55.421 3.4734 0
+-59.286 3.4888 0
+-63.208 3.5624 0
+-67.296 3.7457 0
+-71.72 4.0949 0
+-76.711 4.6653 0
+-82.557 5.5019 0
+-89.579 6.6303 0
+-98.103 8.046 0
+-108.42 9.7059 0
+-120.73 11.525 0
+-135.1 13.378 0
+-151.46 15.117 0
+-169.55 16.593 0
+-188.96 17.691 0
+-209.23 18.367 0
+-229.93 18.68 0
+-250.78 18.801 0
+-271.79 19.001 0
+-293.3 19.594 0
+-316.01 20.867 0
+-340.82 22.983 0
+-368.66 25.897 0
+-400.21 29.317 0
+-435.59 32.713 0
+-474.22 35.393 0
+-514.67 36.623 0
+-554.79 35.773 0
+-591.88 32.439 0
+-623.06 26.532 0
+-645.63 18.307 0
+-657.42 8.3407 0
+-657.16 -2.5248 0
+-644.64 -13.28 0
+-620.82 -22.881 0
+-587.73 -30.439 0
+-548.1 -35.44 0
+-504.8 -37.953 0
+-460.08 -38.713 0
+-414.96 -38.986 0
+-368.93 -40.114 0
+-320.42 -42.843 0
+-268.09 -46.593 0
+-212.6 -49.045 0
+-158.53 -46.321 0
+-115.28 -33.944 0
+-96.581 -8.3959 0
+-117.95 31.192 0
+-192.79 81.891 0
+-328.02 136.98 0
+-520.97 187.28 0
+-758.53 223.6 0
+-1019.3 239.24 0
+-1278.1 231.86 0
+-1510.9 203.65 0
+-1699 159.99 0
+-1830.6 107.27 0
+-1900.6 50.945 0
+-1908.3 -5.0383 0
+-1857 -57.458 0
+-1753.8 -102.4 0
+-1611.3 -134.74 0
+-1447.8 -149.47 0
+-1284.9 -144.8 0
+-1141.4 -125.12 0
+-1025 -101.75 0
+-927.59 -89.683 0
+-825.47 -101.25 0
+-688.37 -139.65 0
+-492.14 -196.09 0
+-230.04 -253.14 0
+84.132 -293.08 0
+423.42 -307.16 0
+762.01 -300.43 0
+1088.9 -288.91 0
+1412.7 -290.46 0
+1755.3 -314.1 0
+2136.3 -354.07 0
+2558.4 -391.53 0
+2999.1 -402.84 0
+3413.8 -369.38 0
+3747.4 -284.25 0
+3948.2 -153.57 0
+3980 6.1416 0
+3830.2 171.89 0
+3513.7 317.83 0
+3073 419.47 0
+2571.9 459.56 0
+2082.9 434.6 0
+1667.9 358.14 0
+1362.6 256.77 0
+1170.4 158.55 0
+1072.4 79.555 0
+1046.3 17.297 0
+1084.2 -43.352 0
+1193.4 -114.42 0
+1381.2 -189.67 0
+1630.8 -241.51 0
+1887.6 -234.06 0
+2067.9 -145.68 0
+2090.5 13.355 0
+1912.9 199.56 0
+1555.5 353.38 0
+1096.3 425.5 0
+642.33 398.21 0
+287.69 291.79 0
+80.026 154.5 0
+6.0004 42.693 0
+0 0 0
+0 0 0
+-0.001523 0.003568 0
+-0.020889 0.031221 0
+-0.07902 0.081825 0
+-0.19008 0.14626 0
+-0.35838 0.21222 0
+-0.57718 0.26689 0
+-0.83059 0.30096 0
+-1.099 0.31254 0
+-1.3667 0.30885 0
+-1.6283 0.30408 0
+-1.8917 0.31332 0
+-2.1738 0.34468 0
+-2.4906 0.39322 0
+-2.8461 0.44011 0
+-3.223 0.45851 0
+-3.5832 0.42458 0
+-3.8773 0.32931 0
+-4.0617 0.18587 0
+-4.1172 0.028494 0
+-4.061 -0.097385 0
+-3.946 -0.15073 0
+-3.8478 -0.11013 0
+-3.8421 0.017207 0
+-3.9809 0.19633 0
+-4.2751 0.37502 0
+-4.6902 0.49995 0
+-5.1558 0.53265 0
+-5.5847 0.45995 0
+-5.8961 0.2959 0
+-6.0344 0.075547 0
+-5.9796 -0.15651 0
+-5.7476 -0.35854 0
+-5.3813 -0.5014 0
+-4.9367 -0.57342 0
+-4.4687 -0.58025 0
+-4.0187 -0.54076 0
+-3.6084 -0.4809 0
+-3.2378 -0.42702 0
+-2.8886 -0.40019 0
+-2.5315 -0.4121 0
+-2.1349 -0.46334 0
+-1.6734 -0.54409 0
+-1.1348 -0.63713 0
+-0.52287 -0.72251 0
+0.14361 -0.78261 0
+0.8355 -0.80632 0
+1.5201 -0.79097 0
+2.168 -0.74163 0
+2.7573 -0.66818 0
+3.2751 -0.58128 0
+3.7162 -0.48892 0
+4.0788 -0.39466 0
+4.3616 -0.2983 0
+4.5617 -0.19824 0
+4.6758 -0.094656 0
+4.703 0.008068 0
+4.6493 0.10072 0
+4.5304 0.17072 0
+4.3732 0.20535 0
+4.2132 0.19545 0
+4.0898 0.13864 0
+4.0388 0.040817 0
+4.0867 -0.084505 0
+4.2448 -0.21862 0
+4.5078 -0.34132 0
+4.8549 -0.43471 0
+5.2533 -0.48629 0
+5.6643 -0.49058 0
+6.0494 -0.44922 0
+6.3751 -0.36961 0
+6.6163 -0.26268 0
+6.7581 -0.14045 0
+6.7951 -0.013967 0
+6.7294 0.10805 0
+6.5686 0.2196 0
+6.3239 0.31714 0
+6.008 0.39874 0
+5.6347 0.46323 0
+5.2188 0.5095 0
+4.7763 0.53627 0
+4.3241 0.54219 0
+3.8803 0.52641 0
+3.4631 0.48911 0
+3.0896 0.43197 0
+2.7745 0.35841 0
+2.5286 0.27341 0
+2.3579 0.18299 0
+2.2629 0.093522 0
+2.2391 0.010981 0
+2.2774 -0.059744 0
+2.3656 -0.11529 0
+2.4898 -0.15398 0
+2.6357 -0.17576 0
+2.7896 -0.1819 0
+2.9399 -0.17462 0
+3.0767 -0.15661 0
+3.1931 -0.13071 0
+3.2839 -0.099598 0
+3.3465 -0.065629 0
+3.3797 -0.03074 0
+3.3837 0.00354 0
+3.3598 0.036047 0
+3.3102 0.065923 0
+3.2375 0.092557 0
+3.1446 0.11554 0
+3.0348 0.13462 0
+2.9115 0.14972 0
+2.778 0.16087 0
+2.6375 0.16823 0
+2.493 0.17207 0
+2.3473 0.17273 0
+2.2028 0.1706 0
+2.0616 0.16607 0
+1.9254 0.15957 0
+1.7958 0.15146 0
+1.6737 0.1421 0
+1.5602 0.13179 0
+1.4557 0.12082 0
+1.3607 0.10942 0
+1.2754 0.097808 0
+1.2 0.086197 0
+1.1342 0.074773 0
+1.0777 0.063711 0
+1.0304 0.053169 0
+0.99144 0.043284 0
+0.9604 0.034168 0
+0.93654 0.025906 0
+0.9191 0.018556 0
+0.90731 0.012145 0
+0.90037 0.006676 0
+0.8975 0.002131 0
+0.89795 -0.00153 0
+0.90101 -0.004361 0
+0.906 -0.00643 0
+0.91234 -0.007815 0
+0.9195 -0.008596 0
+0.92701 -0.00886 0
+0.93448 -0.008685 0
+0.94159 -0.008144 0
+0.94805 -0.007292 0
+0.95362 -0.006167 0
+0.95808 -0.004785 0
+0.96121 -0.00314 0
+0.96276 -0.001203 0
+0.96246 0.001073 0
+0.95998 0.00375 0
+0.95493 0.0069 0
+0.94686 0.010605 0
+0.93524 0.014956 0
+0.91945 0.020059 0
+0.89877 0.026038 0
+0.87235 0.033047 0
+0.8392 0.041278 0
+0.79811 0.050979 0
+0.74763 0.062456 0
+0.68601 0.076091 0
+0.61111 0.092343 0
+0.52036 0.11176 0
+0.41067 0.13497 0
+0.27835 0.1627 0
+0.11904 0.19577 0
+-0.072338 0.23507 0
+-0.3017 0.28156 0
+-0.57578 0.33626 0
+-0.90222 0.40022 0
+-1.2895 0.47443 0
+-1.747 0.55983 0
+-2.2845 0.65721 0
+-2.9128 0.76715 0
+-3.6427 0.88999 0
+-4.4852 1.0258 0
+-5.4512 1.1744 0
+-6.5514 1.3356 0
+-7.7961 1.5089 0
+-9.1955 1.6943 0
+-10.76 1.8923 0
+-12.501 2.1042 0
+-14.431 2.3322 0
+-16.566 2.58 0
+-18.926 2.8523 0
+-21.533 3.1547 0
+-24.418 3.4932 0
+-27.613 3.8729 0
+-31.155 4.297 0
+-35.08 4.7651 0
+-39.423 5.272 0
+-44.209 5.8065 0
+-49.449 6.3508 0
+-55.136 6.8812 0
+-61.24 7.3701 0
+-67.706 7.789 0
+-74.457 8.1131 0
+-81.401 8.3272 0
+-88.443 8.4317 0
+-95.499 8.4486 0
+-102.52 8.4263 0
+-109.53 8.4415 0
+-116.61 8.5992 0
+-123.97 9.0267 0
+-131.92 9.864 0
+-140.89 11.247 0
+-151.44 13.289 0
+-164.15 16.051 0
+-179.64 19.522 0
+-198.44 23.595 0
+-220.93 28.057 0
+-247.25 32.598 0
+-277.21 36.85 0
+-310.34 40.44 0
+-345.87 43.086 0
+-382.9 44.677 0
+-420.61 45.358 0
+-458.47 45.555 0
+-496.48 45.935 0
+-535.28 47.285 0
+-576.17 50.315 0
+-620.84 55.431 0
+-671.05 62.53 0
+-728.07 70.896 0
+-792.18 79.223 0
+-862.31 85.801 0
+-935.82 88.818 0
+-1008.7 86.71 0
+-1075.9 78.468 0
+-1132.1 63.849 0
+-1172 43.447 0
+-1191.6 18.644 0
+-1188.3 -8.5273 0
+-1161.4 -35.609 0
+-1112.6 -60.032 0
+-1045.3 -79.564 0
+-964.5 -92.845 0
+-875.7 -99.902 0
+-783.32 -102.4 0
+-689.72 -103.3 0
+-594.52 -105.87 0
+-495.38 -111.99 0
+-390.12 -120.4 0
+-280.03 -125.67 0
+-173.22 -118.57 0
+-86.457 -88.338 0
+-44.279 -26.462 0
+-74.553 69.216 0
+-201.37 191.68 0
+-437.22 324.67 0
+-777.09 445.99 0
+-1197.1 533.28 0
+-1658.3 570.37 0
+-2114.7 551.64 0
+-2523 482.57 0
+-2849.6 376.47 0
+-3074 248.98 0
+-3187.4 113.38 0
+-3189.6 -20.909 0
+-3086.7 -146.29 0
+-2891.9 -253.4 0
+-2628.4 -329.68 0
+-2330.3 -362.64 0
+-2038 -347.46 0
+-1787.2 -294.64 0
+-1593.5 -231.98 0
+-1442 -196.92 0
+-1288.2 -220.9 0
+-1073.1 -313.09 0
+-747.88 -453.05 0
+-295.14 -598.22 0
+263.81 -704.32 0
+881.12 -748.04 0
+1508 -739.3 0
+2119.9 -715 0
+2726 -717.22 0
+3359 -767.77 0
+4048.9 -853.74 0
+4796.9 -931.67 0
+5562.4 -947.08 0
+6268.9 -857.82 0
+6823.2 -649.16 0
+7139.8 -336.37 0
+7159.9 41.876 0
+6864.5 432.27 0
+6281.4 774.63 0
+5486.1 1011 0
+4592.8 1099.5 0
+3732 1030.7 0
+3016.8 836.65 0
+2512 582.46 0
+2221.9 338.14 0
+2106.1 145.52 0
+2115.4 0.90636 0
+2224.3 -131.78 0
+2437.5 -283.5 0
+2763.5 -443 0
+3173.6 -548.36 0
+3576.7 -517.31 0
+3834 -300.29 0
+3811.6 77.504 0
+3444.3 513.43 0
+2773.8 868.12 0
+1940.6 1027.6 0
+1130.4 952.9 0
+504.12 694.28 0
+139.81 366.29 0
+10.465 101.01 0
+0 0 0
+0 0 0
+-0.002398 0.007041 0
+-0.032929 0.061674 0
+-0.1248 0.16191 0
+-0.30099 0.29013 0
+-0.56922 0.42219 0
+-0.91973 0.53262 0
+-1.3277 0.60233 0
+-1.7614 0.62645 0
+-2.1936 0.61802 0
+-2.6127 0.6042 0
+-3.027 0.61471 0
+-3.4601 0.66651 0
+-3.9363 0.75177 0
+-4.4629 0.83574 0
+-5.0171 0.86775 0
+-5.5446 0.80222 0
+-5.9741 0.62156 0
+-6.2428 0.35044 0
+-6.3238 0.054122 0
+-6.2442 -0.18058 0
+-6.0848 -0.27508 0
+-5.9602 -0.1885 0
+-5.9846 0.065018 0
+-6.2363 0.41795 0
+-6.7311 0.76958 0
+-7.4165 1.0172 0
+-8.1854 1.0867 0
+-8.9058 0.95285 0
+-9.455 0.64261 0
+-9.7479 0.22299 0
+-9.7529 -0.22103 0
+-9.4908 -0.6103 0
+-9.022 -0.88995 0
+-8.4258 -1.0384 0
+-7.7789 -1.0666 0
+-7.1388 -1.0101 0
+-6.5346 -0.91714 0
+-5.9649 -0.83627 0
+-5.4037 -0.80559 0
+-4.8103 -0.84561 0
+-4.1426 -0.95615 0
+-3.3683 -1.1179 0
+-2.4749 -1.298 0
+-1.473 -1.4593 0
+-0.3946 -1.5692 0
+0.71467 -1.6078 0
+1.8052 -1.5712 0
+2.8333 -1.4704 0
+3.7678 -1.3249 0
+4.5915 -1.1554 0
+5.298 -0.97697 0
+5.8863 -0.79602 0
+6.3548 -0.61139 0
+6.6991 -0.41934 0
+6.9134 -0.21969 0
+6.9952 -0.020573 0
+6.9521 0.16024 0
+6.8072 0.29832 0
+6.6003 0.36879 0
+6.3848 0.35373 0
+6.22 0.2483 0
+6.1605 0.063713 0
+6.2462 -0.17395 0
+6.4944 -0.42864 0
+6.8973 -0.66142 0
+7.4233 -0.8379 0
+8.0233 -0.93416 0
+8.6396 -0.93996 0
+9.2145 -0.85868 0
+9.6986 -0.70475 0
+10.055 -0.49928 0
+10.263 -0.2653 0
+10.315 -0.02383 0
+10.214 0.20868 0
+9.9723 0.42109 0
+9.6061 0.6069 0
+9.1341 0.76262 0
+8.5765 0.8861 0
+7.9548 0.97516 0
+7.2924 1.0271 0
+6.6147 1.0393 0
+5.9488 1.0096 0
+5.3224 0.93835 0
+4.7617 0.82855 0
+4.2893 0.68677 0
+3.922 0.5226 0
+3.6689 0.34775 0
+3.5311 0.17466 0
+3.5017 0.014967 0
+3.5668 -0.12178 0
+3.7077 -0.22899 0
+3.903 -0.30341 0
+4.1306 -0.34494 0
+4.3697 -0.35608 0
+4.6023 -0.34114 0
+4.8136 -0.30542 0
+4.9926 -0.25449 0
+5.1321 -0.19357 0
+5.2278 -0.12723 0
+5.2781 -0.059247 0
+5.2836 0.007432 0
+5.2464 0.070572 0
+5.1697 0.12854 0
+5.0577 0.18017 0
+4.9149 0.2247 0
+4.7464 0.26167 0
+4.5572 0.29092 0
+4.3524 0.31254 0
+4.1369 0.32684 0
+3.9153 0.33433 0
+3.6917 0.33565 0
+3.47 0.33157 0
+3.2532 0.32287 0
+3.0441 0.31033 0
+2.8448 0.29468 0
+2.657 0.27661 0
+2.4822 0.2567 0
+2.3211 0.23548 0
+2.1745 0.21342 0
+2.0428 0.19095 0
+1.9259 0.16846 0
+1.8238 0.14632 0
+1.7361 0.12485 0
+1.6622 0.10437 0
+1.6014 0.085132 0
+1.5527 0.067367 0
+1.515 0.051238 0
+1.4873 0.036859 0
+1.4684 0.024289 0
+1.4571 0.013539 0
+1.4522 0.004577 0
+1.4525 -0.002668 0
+1.457 -0.008296 0
+1.4645 -0.012434 0
+1.4743 -0.015229 0
+1.4854 -0.016839 0
+1.4971 -0.017425 0
+1.5088 -0.017143 0
+1.5201 -0.016132 0
+1.5303 -0.014502 0
+1.5393 -0.012329 0
+1.5465 -0.009645 0
+1.5517 -0.006438 0
+1.5544 -0.002655 0
+1.5543 0.001794 0
+1.5508 0.007029 0
+1.5433 0.013193 0
+1.5311 0.020447 0
+1.5134 0.028973 0
+1.4892 0.038979 0
+1.4573 0.050713 0
+1.4165 0.064482 0
+1.3652 0.08067 0
+1.3015 0.099763 0
+1.223 0.12237 0
+1.1271 0.14923 0
+1.0103 0.18124 0
+0.86865 0.21948 0
+0.69731 0.26518 0
+0.49053 0.31975 0
+0.24153 0.38478 0
+-0.057624 0.46201 0
+-0.41609 0.55333 0
+-0.84434 0.66073 0
+-1.3542 0.78622 0
+-1.9589 0.9318 0
+-2.6729 1.0993 0
+-3.5117 1.2902 0
+-4.4917 1.5057 0
+-5.6298 1.7465 0
+-6.9431 2.0127 0
+-8.4485 2.3039 0
+-10.162 2.6195 0
+-12.101 2.9589 0
+-14.279 3.3216 0
+-16.714 3.7087 0
+-19.421 4.1222 0
+-22.42 4.5667 0
+-25.735 5.049 0
+-29.394 5.578 0
+-33.433 6.1647 0
+-37.895 6.8205 0
+-42.83 7.5552 0
+-48.293 8.3749 0
+-54.339 9.279 0
+-61.018 10.257 0
+-68.367 11.287 0
+-76.403 12.333 0
+-85.11 13.351 0
+-94.44 14.283 0
+-104.3 15.076 0
+-114.58 15.678 0
+-125.11 16.061 0
+-135.75 16.224 0
+-146.37 16.211 0
+-156.88 16.115 0
+-167.31 16.089 0
+-177.78 16.337 0
+-188.62 17.111 0
+-200.31 18.687 0
+-213.53 21.331 0
+-229.11 25.265 0
+-248 30.61 0
+-271.12 37.341 0
+-299.31 45.246 0
+-333.16 53.904 0
+-372.85 62.704 0
+-418.1 70.916 0
+-468.12 77.81 0
+-521.7 82.824 0
+-577.4 85.741 0
+-633.92 86.844 0
+-690.4 86.97 0
+-746.81 87.434 0
+-804.14 89.785 0
+-864.38 95.427 0
+-930.21 105.17 0
+-1004.4 118.83 0
+-1088.9 135.01 0
+-1184.2 151.17 0
+-1288.9 163.97 0
+-1398.7 169.85 0
+-1507.6 165.75 0
+-1607.9 149.66 0
+-1690.9 121.04 0
+-1748.8 80.967 0
+-1774.9 32.031 0
+-1764.6 -21.915 0
+-1716.6 -76.158 0
+-1632.8 -125.7 0
+-1518.1 -166.09 0
+-1380 -194.45 0
+-1226.8 -210.47 0
+-1066.1 -217 0
+-902.33 -219.49 0
+-736.1 -224.13 0
+-564.91 -234.69 0
+-386.13 -249.19 0
+-201.84 -257.69 0
+-23.773 -242.96 0
+123.69 -184.7 0
+204.69 -66.658 0
+178.24 115.44 0
+8.7157 348.4 0
+-322.35 601.34 0
+-807.45 831.85 0
+-1410.8 997.14 0
+-2074 1066.3 0
+-2728.4 1028.7 0
+-3309.4 895.27 0
+-3767.6 691.96 0
+-4073.8 449.14 0
+-4216.3 192.3 0
+-4196.3 -60.851 0
+-4023.8 -296.26 0
+-3719.1 -496.34 0
+-3317.3 -636.82 0
+-2870.8 -692.93 0
+-2442.7 -654.36 0
+-2089.4 -540.74 0
+-1837.1 -406.14 0
+-1663.7 -324.77 0
+-1499.2 -360.48 0
+-1248.1 -534.43 0
+-827.2 -809.5 0
+-200.09 -1103.8 0
+608.79 -1329.3 0
+1530.3 -1436.3 0
+2487.9 -1438.1 0
+3435.5 -1400.7 0
+4374.6 -1401.5 0
+5340.1 -1482.1 0
+6365.7 -1620.6 0
+7447 -1739.2 0
+8524.5 -1741 0
+9492.2 -1552.1 0
+10225 -1149.1 0
+10612 -561.89 0
+10576 139.12 0
+10098 858.19 0
+9217.6 1486.2 0
+8044.4 1915.4 0
+6745.2 2065.2 0
+5513.4 1914.8 0
+4519.5 1523.9 0
+3861.5 1017.8 0
+3542.1 535.76 0
+3489.8 164.83 0
+3612.8 -96.106 0
+3851.8 -314.52 0
+4195.6 -553.99 0
+4648.1 -802.67 0
+5170.1 -954.43 0
+5642.3 -863.54 0
+5883.3 -442.5 0
+5721.4 260.05 0
+5081.8 1054.7 0
+4037.8 1687.4 0
+2795 1954 0
+1614.6 1790.3 0
+715.45 1294.5 0
+197.53 679.58 0
+14.749 186.87 0
+0 0 0
+0 0 0
+-0.003377 0.012045 0
+-0.046444 0.10563 0
+-0.17649 0.27793 0
+-0.42711 0.49957 0
+-0.81109 0.72979 0
+-1.3164 0.92455 0
+-1.9089 1.0497 0
+-2.5421 1.0945 0
+-3.174 1.0786 0
+-3.7818 1.0465 0
+-4.3703 1.0487 0
+-4.9669 1.1162 0
+-5.603 1.2394 0
+-6.2907 1.3642 0
+-7.0048 1.4089 0
+-7.6792 1.2987 0
+-8.2256 1.0041 0
+-8.5656 0.56485 0
+-8.6677 0.087522 0
+-8.5704 -0.28534 0
+-8.3831 -0.42459 0
+-8.2591 -0.26328 0
+-8.3504 0.17446 0
+-8.7604 0.77615 0
+-9.5091 1.3745 0
+-10.525 1.7993 0
+-11.665 1.9278 0
+-12.752 1.7185 0
+-13.622 1.2158 0
+-14.16 0.52985 0
+-14.321 -0.20027 0
+-14.127 -0.84596 0
+-13.651 -1.3189 0
+-12.989 -1.5852 0
+-12.232 -1.6633 0
+-11.449 -1.6106 0
+-10.669 -1.5034 0
+-9.8908 -1.4173 0
+-9.0806 -1.4105 0
+-8.1915 -1.5128 0
+-7.1767 -1.7211 0
+-6.0045 -2.0025 0
+-4.6688 -2.3034 0
+-3.1926 -2.5644 0
+-1.6245 -2.7344 0
+-0.028579 -2.7836 0
+1.5285 -2.7086 0
+2.9904 -2.5293 0
+4.3184 -2.2794 0
+5.4932 -1.9937 0
+6.5095 -1.6965 0
+7.3683 -1.3973 0
+8.0686 -1.0928 0
+8.6042 -0.77534 0
+8.9658 -0.44356 0
+9.1482 -0.11042 0
+9.1596 0.19459 0
+9.0288 0.43053 0
+8.8079 0.55544 0
+8.5676 0.53892 0
+8.3868 0.37251 0
+8.3385 0.074609 0
+8.4761 -0.31155 0
+8.8231 -0.72608 0
+9.3688 -1.1044 0
+10.071 -1.3897 0
+10.866 -1.5428 0
+11.677 -1.5471 0
+12.429 -1.4089 0
+13.059 -1.1524 0
+13.519 -0.81283 0
+13.783 -0.42805 0
+13.844 -0.032346 0
+13.706 0.34777 0
+13.386 0.69468 0
+12.904 0.99828 0
+12.284 1.2533 0
+11.553 1.4564 0
+10.736 1.6039 0
+9.8648 1.691 0
+8.9719 1.7126 0
+8.0932 1.665 0
+7.2659 1.548 0
+6.5255 1.3665 0
+5.9028 1.1312 0
+5.4206 0.85815 0
+5.092 0.56688 0
+4.9185 0.27833 0
+4.8907 0.012115 0
+4.99 -0.21565 0
+5.1909 -0.39385 0
+5.4642 -0.517 0
+5.7798 -0.58494 0
+6.1095 -0.60192 0
+6.4287 -0.57525 0
+6.7176 -0.51393 0
+6.9615 -0.42731 0
+7.1507 -0.32423 0
+7.2798 -0.21238 0
+7.3468 -0.09806 0
+7.3528 0.013822 0
+7.3009 0.11958 0
+7.1956 0.21653 0
+7.0425 0.30281 0
+6.8479 0.37718 0
+6.6185 0.43892 0
+6.3612 0.48778 0
+6.0829 0.52393 0
+5.79 0.54787 0
+5.4888 0.56047 0
+5.1848 0.5628 0
+4.8832 0.55611 0
+4.5882 0.54171 0
+4.3033 0.5209 0
+4.0317 0.4949 0
+3.7754 0.46483 0
+3.5365 0.43169 0
+3.3161 0.39634 0
+3.1152 0.35957 0
+2.9342 0.32209 0
+2.7734 0.28453 0
+2.6326 0.24751 0
+2.5112 0.21157 0
+2.4086 0.17723 0
+2.3237 0.14493 0
+2.2555 0.11504 0
+2.2024 0.087836 0
+2.1631 0.063523 0
+2.1359 0.042208 0
+2.1193 0.023921 0
+2.1116 0.008618 0
+2.1113 -0.003806 0
+2.1169 -0.013512 0
+2.127 -0.020703 0
+2.1403 -0.025615 0
+2.1556 -0.028508 0
+2.1719 -0.029651 0
+2.1884 -0.029301 0
+2.2042 -0.027694 0
+2.2188 -0.025016 0
+2.2316 -0.021398 0
+2.2422 -0.016897 0
+2.2499 -0.011497 0
+2.2542 -0.005114 0
+2.2546 0.002404 0
+2.2503 0.011257 0
+2.2405 0.021685 0
+2.2243 0.033965 0
+2.2004 0.048407 0
+2.1675 0.065374 0
+2.124 0.085294 0
+2.0681 0.10869 0
+1.9975 0.13624 0
+1.9095 0.16876 0
+1.801 0.20728 0
+1.668 0.25308 0
+1.5059 0.30768 0
+1.309 0.37287 0
+1.0706 0.45074 0
+0.78277 0.54367 0
+0.43601 0.65432 0
+0.01942 0.78563 0
+-0.47967 0.94079 0
+-1.0757 1.1231 0
+-1.7851 1.3361 0
+-2.626 1.5831 0
+-3.6184 1.8671 0
+-4.7837 2.1908 0
+-6.1446 2.5561 0
+-7.7244 2.9642 0
+-9.5468 3.4152 0
+-11.635 3.9086 0
+-14.012 4.443 0
+-16.699 5.0172 0
+-19.717 5.6306 0
+-23.087 6.2842 0
+-26.832 6.9815 0
+-30.978 7.7297 0
+-35.554 8.5398 0
+-40.598 9.4268 0
+-46.158 10.409 0
+-52.29 11.504 0
+-59.059 12.73 0
+-66.539 14.095 0
+-74.802 15.6 0
+-83.915 17.226 0
+-93.924 18.935 0
+-104.85 20.669 0
+-116.66 22.347 0
+-129.29 23.877 0
+-142.62 25.163 0
+-156.45 26.12 0
+-170.58 26.696 0
+-184.79 26.89 0
+-198.89 26.774 0
+-212.75 26.508 0
+-226.38 26.35 0
+-239.98 26.649 0
+-253.97 27.832 0
+-269.02 30.369 0
+-286.06 34.715 0
+-306.25 41.243 0
+-330.88 50.161 0
+-361.25 61.423 0
+-398.51 74.663 0
+-443.44 89.16 0
+-496.29 103.87 0
+-556.63 117.54 0
+-623.31 128.94 0
+-694.62 137.09 0
+-768.53 141.62 0
+-843.15 143.02 0
+-917.25 142.7 0
+-990.72 142.92 0
+-1064.9 146.3 0
+-1142.6 155.26 0
+-1227.5 171.19 0
+-1323.5 193.83 0
+-1433.4 220.84 0
+-1558.1 247.93 0
+-1695.5 269.49 0
+-1840.1 279.5 0
+-1983.7 272.73 0
+-2115.6 245.73 0
+-2224.1 197.47 0
+-2298 129.58 0
+-2327.6 46.209 0
+-2306.3 -46.408 0
+-2231.1 -140.52 0
+-2103.7 -227.77 0
+-1929.9 -300.47 0
+-1719.3 -353.31 0
+-1483.6 -385.09 0
+-1233.6 -399.75 0
+-977.07 -405.78 0
+-716.73 -413.2 0
+-451.02 -428.62 0
+-177.66 -449.51 0
+100.38 -460.53 0
+368.26 -434.22 0
+595.07 -337.7 0
+734.93 -144.29 0
+734.9 153.43 0
+548.57 534.3 0
+151.61 947.94 0
+-446.32 1324.7 0
+-1198.2 1594.1 0
+-2027.1 1705.1 0
+-2842.6 1640.5 0
+-3559.7 1418.9 0
+-4114.7 1084 0
+-4470.7 686.51 0
+-4615.1 268.86 0
+-4551.6 -140.34 0
+-4294.8 -518.91 0
+-3872.6 -838.53 0
+-3332.1 -1058.7 0
+-2744.7 -1137.1 0
+-2197.6 -1054.5 0
+-1770.7 -842.39 0
+-1502.6 -591.45 0
+-1365.2 -428.93 0
+-1260.5 -467.28 0
+-1050.4 -748.45 0
+-608.31 -1215.4 0
+130.58 -1732.2 0
+1146.5 -2147.6 0
+2352.4 -2369.8 0
+3641.5 -2409.6 0
+4938.4 -2365.8 0
+6224.3 -2361 0
+7524 -2463.4 0
+8864.3 -2642.4 0
+10230 -2781 0
+11547 -2733.1 0
+12689 -2390.6 0
+13514 -1723.4 0
+13901 -781.16 0
+13768 328.02 0
+13096 1458.9 0
+11937 2443.4 0
+10427 3109.5 0
+8778.5 3322.6 0
+7244.3 3042.5 0
+6053.1 2362.5 0
+5337.2 1491.9 0
+5095.4 669.91 0
+5216.1 54.598 0
+5548.4 -343.84 0
+5979.2 -633.37 0
+6464.1 -927.38 0
+6993.7 -1225.6 0
+7523.3 -1377.8 0
+7923.9 -1167.2 0
+7999.7 -463.84 0
+7571.4 651.23 0
+6578.4 1880.2 0
+5134.6 2830 0
+3503 3192.1 0
+2000.1 2881.1 0
+878.28 2063.1 0
+240.93 1076.2 0
+17.924 294.84 0
+0 0 0
+0 0 0
+-0.004404 0.018679 0
+-0.060689 0.16404 0
+-0.23139 0.43283 0
+-0.56254 0.7811 0
+-1.074 1.1466 0
+-1.7535 1.4604 0
+-2.5578 1.6669 0
+-3.4246 1.7448 0
+-4.2928 1.7194 0
+-5.1228 1.6559 0
+-5.9095 1.6316 0
+-6.678 1.6977 0
+-7.4641 1.8467 0
+-8.2859 2.0041 0
+-9.12 2.0525 0
+-9.8968 1.8827 0
+-10.52 1.4503 0
+-10.903 0.81237 0
+-11.016 0.12519 0
+-10.91 -0.40132 0
+-10.722 -0.57682 0
+-10.638 -0.30327 0
+-10.842 0.38185 0
+-11.459 1.3097 0
+-12.51 2.2301 0
+-13.906 2.8891 0
+-15.472 3.1043 0
+-16.992 2.8142 0
+-18.264 2.0848 0
+-19.148 1.079 0
+-19.585 0.000569 0
+-19.593 -0.96332 0
+-19.249 -1.6859 0
+-18.652 -2.1199 0
+-17.898 -2.2938 0
+-17.052 -2.2898 0
+-16.143 -2.2155 0
+-15.163 -2.1749 0
+-14.075 -2.2457 0
+-12.833 -2.4644 0
+-11.397 -2.8212 0
+-9.7439 -3.2655 0
+-7.8844 -3.7191 0
+-5.8603 -4.097 0
+-3.7404 -4.3289 0
+-1.6076 -4.3758 0
+0.45629 -4.2376 0
+2.3853 -3.9479 0
+4.1372 -3.5592 0
+5.6939 -3.1237 0
+7.0539 -2.6772 0
+8.2216 -2.2314 0
+9.1976 -1.779 0
+9.9737 -1.3061 0
+10.537 -0.80883 0
+10.877 -0.30554 0
+11.001 0.15969 0
+10.942 0.52489 0
+10.762 0.72623 0
+10.545 0.71721 0
+10.387 0.48442 0
+10.378 0.055002 0
+10.582 -0.50646 0
+11.028 -1.1104 0
+11.703 -1.6606 0
+12.557 -2.0725 0
+13.512 -2.2885 0
+14.478 -2.2851 0
+15.366 -2.0725 0
+16.102 -1.6877 0
+16.634 -1.1832 0
+16.933 -0.6152 0
+16.991 -0.033677 0
+16.817 0.52326 0
+16.43 1.0308 0
+15.854 1.4754 0
+15.117 1.8499 0
+14.247 2.1498 0
+13.275 2.3693 0
+12.236 2.5007 0
+11.169 2.5356 0
+10.116 2.4675 0
+9.1242 2.2952 0
+8.2363 2.0255 0
+7.4912 1.6742 0
+6.9177 1.2653 0
+6.5323 0.82835 0
+6.3373 0.39513 0
+6.3213 -0.004531 0
+6.461 -0.3461 0
+6.7248 -0.61266 0
+7.0762 -0.79586 0
+7.4777 -0.8955 0
+7.8943 -0.91809 0
+8.2955 -0.87487 0
+8.6568 -0.77955 0
+8.9604 -0.64644 0
+9.1945 -0.48897 0
+9.3528 -0.31879 0
+9.4335 -0.1454 0
+9.4382 0.023845 0
+9.371 0.18349 0
+9.2378 0.32961 0
+9.0455 0.4595 0
+8.8021 0.57138 0
+8.5159 0.66426 0
+8.1952 0.7378 0
+7.8485 0.79226 0
+7.4838 0.82843 0
+7.1087 0.84757 0
+6.73 0.8513 0
+6.354 0.84147 0
+5.9859 0.82005 0
+5.6302 0.78897 0
+5.2905 0.75008 0
+4.9697 0.70505 0
+4.67 0.65537 0
+4.3931 0.60234 0
+4.1401 0.54713 0
+3.9118 0.49078 0
+3.7082 0.43425 0
+3.5293 0.37845 0
+3.3746 0.32421 0
+3.2433 0.27227 0
+3.1341 0.22332 0
+3.0458 0.1779 0
+2.9766 0.13646 0
+2.9248 0.099313 0
+2.8885 0.066632 0
+2.8658 0.038485 0
+2.8546 0.014826 0
+2.853 -0.004484 0
+2.8592 -0.019667 0
+2.8714 -0.031012 0
+2.8879 -0.038864 0
+2.9073 -0.043605 0
+2.9282 -0.045633 0
+2.9495 -0.045337 0
+2.9702 -0.04307 0
+2.9894 -0.039123 0
+3.0065 -0.033695 0
+3.0207 -0.026883 0
+3.0313 -0.01867 0
+3.0377 -0.008931 0
+3.0391 0.002554 0
+3.0346 0.016087 0
+3.023 0.032038 0
+3.0032 0.050829 0
+2.9737 0.072948 0
+2.9327 0.098957 0
+2.8781 0.12953 0
+2.8077 0.1655 0
+2.7183 0.20789 0
+2.6067 0.25799 0
+2.4686 0.31741 0
+2.2989 0.38807 0
+2.0916 0.47231 0
+1.8394 0.57288 0
+1.5338 0.69293 0
+1.1644 0.83609 0
+0.71941 1.0064 0
+0.18476 1.2083 0
+-0.45562 1.4467 0
+-1.2201 1.7267 0
+-2.1294 2.0535 0
+-3.2067 2.4322 0
+-4.4772 2.8675 0
+-5.9683 3.3636 0
+-7.7088 3.9234 0
+-9.7283 4.5486 0
+-12.057 5.2393 0
+-14.724 5.9946 0
+-17.758 6.8124 0
+-21.186 7.6905 0
+-25.034 8.6276 0
+-29.329 9.6247 0
+-34.097 10.687 0
+-39.367 11.824 0
+-45.178 13.052 0
+-51.572 14.393 0
+-58.606 15.875 0
+-66.348 17.524 0
+-74.878 19.367 0
+-84.281 21.418 0
+-94.646 23.675 0
+-106.05 26.11 0
+-118.56 28.666 0
+-132.17 31.252 0
+-146.87 33.745 0
+-162.54 36.003 0
+-179.02 37.875 0
+-196.07 39.231 0
+-213.41 39.988 0
+-230.76 40.145 0
+-247.83 39.808 0
+-264.48 39.222 0
+-280.69 38.783 0
+-296.7 39.029 0
+-313.04 40.618 0
+-330.55 44.27 0
+-350.41 50.69 0
+-374.1 60.449 0
+-403.26 73.865 0
+-439.54 90.863 0
+-484.4 110.87 0
+-538.8 132.77 0
+-603.04 154.96 0
+-676.52 175.49 0
+-757.72 192.44 0
+-844.37 204.31 0
+-933.81 210.55 0
+-1023.5 211.86 0
+-1111.9 210.44 0
+-1198.6 209.75 0
+-1285.5 213.87 0
+-1376 226.53 0
+-1474.9 249.94 0
+-1587.2 283.74 0
+-1716.8 324.43 0
+-1864.8 365.51 0
+-2028.9 398.41 0
+-2202.6 413.96 0
+-2375.5 404.13 0
+-2534.2 363.53 0
+-2664 290.39 0
+-2750.4 186.86 0
+-2780.7 58.809 0
+-2745.5 -84.728 0
+-2639.8 -232.36 0
+-2463.7 -371.53 0
+-2223.3 -490.28 0
+-1929.6 -579.76 0
+-1596.9 -636.89 0
+-1240 -666.21 0
+-870.63 -679.27 0
+-494.95 -690.67 0
+-113.87 -710.72 0
+273.56 -737.06 0
+663.32 -748.73 0
+1038.5 -706.68 0
+1363.9 -563.16 0
+1586.3 -278.7 0
+1643.7 158.49 0
+1480.8 718.21 0
+1067.9 1326.8 0
+415.53 1881.4 0
+-420.56 2277.5 0
+-1348.3 2438.9 0
+-2259 2340.1 0
+-3050.8 2009.7 0
+-3648.2 1513.7 0
+-4009.3 929.15 0
+-4122.2 319.26 0
+-3994.2 -274.14 0
+-3645.6 -819.61 0
+-3110.9 -1276.2 0
+-2448.5 -1583.3 0
+-1747.3 -1675.3 0
+-1118.2 -1520.2 0
+-664.5 -1162.9 0
+-439.6 -740.74 0
+-410.56 -450.75 0
+-451.96 -472.01 0
+-380.39 -878.85 0
+-19.65 -1593.7 0
+732.74 -2413.5 0
+1871 -3103.3 0
+3296.5 -3510 0
+4872.5 -3630.7 0
+6487.7 -3596.5 0
+8091.3 -3580.1 0
+9683.5 -3683.1 0
+11273 -3870.2 0
+12833 -3986.2 0
+14277 -3837.7 0
+15478 -3285.8 0
+16298 -2298.6 0
+16621 -948.67 0
+16376 618.23 0
+15544 2208.4 0
+14181 3591.4 0
+12436 4520 0
+10551 4789.4 0
+8831.9 4327.5 0
+7560 3264.4 0
+6901.6 1914.1 0
+6850.8 649.55 0
+7249.1 -269.4 0
+7873.2 -806.73 0
+8537.5 -1117 0
+9146.9 -1383.5 0
+9670.4 -1638.4 0
+10065 -1701.1 0
+10218 -1288.6 0
+9955.5 -232.57 0
+9129.5 1346.2 0
+7720.6 3030.4 0
+5889.9 4280 0
+3941.6 4685.4 0
+2214.7 4153.9 0
+960.18 2939.4 0
+260.97 1521.2 0
+19.312 414.8 0
+0 0 0
+0 0 0
+-0.005425 0.026954 0
+-0.074939 0.23713 0
+-0.28694 0.62782 0
+-0.70159 1.1385 0
+-1.3487 1.6811 0
+-2.2184 2.1555 0
+-3.2604 2.4768 0
+-4.3963 2.6067 0
+-5.5418 2.5727 0
+-6.6341 2.4617 0
+-7.6489 2.3831 0
+-8.6015 2.4156 0
+-9.5265 2.5598 0
+-10.447 2.7241 0
+-11.348 2.7556 0
+-12.166 2.508 0
+-12.809 1.92 0
+-13.196 1.0675 0
+-13.304 0.16102 0
+-13.202 -0.515 0
+-13.046 -0.70268 0
+-13.049 -0.27058 0
+-13.416 0.72683 0
+-14.285 2.0549 0
+-15.676 3.3681 0
+-17.487 4.3167 0
+-19.515 4.6507 0
+-21.516 4.2864 0
+-23.263 3.3148 0
+-24.594 1.9573 0
+-25.436 0.48902 0
+-25.799 -0.84014 0
+-25.749 -1.8637 0
+-25.376 -2.5227 0
+-24.762 -2.8571 0
+-23.959 -2.9754 0
+-22.983 -3.0149 0
+-21.819 -3.1047 0
+-20.433 -3.3364 0
+-18.788 -3.7473 0
+-16.86 -4.3158 0
+-14.651 -4.9691 0
+-12.197 -5.6024 0
+-9.5654 -6.1052 0
+-6.8487 -6.3893 0
+-4.1477 -6.4107 0
+-1.5557 -6.1772 0
+0.85632 -5.7415 0
+3.0472 -5.1793 0
+5.0041 -4.5635 0
+6.7319 -3.9415 0
+8.2405 -3.3267 0
+9.5322 -2.7046 0
+10.597 -2.0523 0
+11.417 -1.3615 0
+11.978 -0.65619 0
+12.282 0.002663 0
+12.364 0.52831 0
+12.291 0.83091 0
+12.157 0.84457 0
+12.07 0.54969 0
+12.132 -0.01672 0
+12.415 -0.76548 0
+12.951 -1.573 0
+13.727 -2.3065 0
+14.687 -2.8506 0
+15.743 -3.1272 0
+16.798 -3.1057 0
+17.757 -2.8021 0
+18.541 -2.2685 0
+19.096 -1.5775 0
+19.397 -0.80553 0
+19.437 -0.019666 0
+19.229 0.73009 0
+18.795 1.4122 0
+18.161 2.0102 0
+17.353 2.5159 0
+16.402 2.9235 0
+15.337 3.2248 0
+14.196 3.4082 0
+13.02 3.4606 0
+11.857 3.3715 0
+10.759 3.1379 0
+9.7768 2.7683 0
+8.9546 2.2841 0
+8.3267 1.7185 0
+7.9126 1.113 0
+7.7154 0.51199 0
+7.7223 -0.042387 0
+7.9063 -0.51556 0
+8.2307 -0.88368 0
+8.653 -1.135 0
+9.1299 -1.2693 0
+9.6205 -1.2959 0
+10.09 -1.2307 0
+10.51 -1.0931 0
+10.861 -0.90348 0
+11.129 -0.68064 0
+11.308 -0.44095 0
+11.396 -0.19764 0
+11.397 0.039141 0
+11.314 0.26195 0
+11.156 0.46551 0
+10.93 0.64622 0
+10.645 0.80179 0
+10.311 0.93093 0
+9.9381 1.0332 0
+9.535 1.1091 0
+9.1111 1.1597 0
+8.6751 1.1866 0
+8.2347 1.1922 0
+7.797 1.1789 0
+7.3681 1.1495 0
+6.9531 1.1067 0
+6.5562 1.053 0
+6.1807 0.99069 0
+5.8292 0.92187 0
+5.5037 0.84834 0
+5.2054 0.77169 0
+4.9354 0.69337 0
+4.6938 0.61469 0
+4.4807 0.53688 0
+4.2955 0.4611 0
+4.1374 0.38838 0
+4.0053 0.31967 0
+3.8976 0.25574 0
+3.8125 0.19722 0
+3.748 0.14457 0
+3.7021 0.098064 0
+3.6725 0.057832 0
+3.6571 0.02384 0
+3.6534 -0.004071 0
+3.6594 -0.02618 0
+3.673 -0.042862 0
+3.6921 -0.054575 0
+3.7151 -0.061834 0
+3.7402 -0.065185 0
+3.7661 -0.065167 0
+3.7915 -0.062274 0
+3.8154 -0.056919 0
+3.8369 -0.049391 0
+3.855 -0.039837 0
+3.8689 -0.028249 0
+3.8777 -0.014462 0
+3.8806 0.001823 0
+3.8764 0.021027 0
+3.8639 0.043668 0
+3.8414 0.070353 0
+3.8074 0.10178 0
+3.7596 0.13878 0
+3.6956 0.18233 0
+3.6124 0.23363 0
+3.5064 0.29419 0
+3.3735 0.36586 0
+3.2085 0.45092 0
+3.0053 0.55216 0
+2.7564 0.67286 0
+2.4532 0.81691 0
+2.0851 0.98876 0
+1.64 1.1935 0
+1.1035 1.4368 0
+0.459 1.7251 0
+-0.31273 2.065 0
+-1.2335 2.4638 0
+-2.3281 2.929 0
+-3.6238 3.4678 0
+-5.151 4.087 0
+-6.9419 4.7923 0
+-9.031 5.5879 0
+-11.454 6.4762 0
+-14.245 7.4575 0
+-17.441 8.5301 0
+-21.075 9.6908 0
+-25.178 10.936 0
+-29.781 12.263 0
+-34.913 13.673 0
+-40.603 15.172 0
+-46.886 16.773 0
+-53.8 18.497 0
+-61.394 20.376 0
+-69.73 22.445 0
+-78.882 24.744 0
+-88.939 27.307 0
+-99.998 30.156 0
+-112.16 33.287 0
+-125.51 36.66 0
+-140.1 40.196 0
+-155.96 43.762 0
+-173.03 47.186 0
+-191.19 50.262 0
+-210.23 52.775 0
+-229.84 54.536 0
+-249.69 55.424 0
+-269.41 55.431 0
+-288.66 54.709 0
+-307.22 53.604 0
+-325.07 52.676 0
+-342.47 52.696 0
+-360.02 54.602 0
+-378.74 59.427 0
+-400.03 68.174 0
+-425.63 81.662 0
+-457.52 100.34 0
+-497.66 124.1 0
+-547.77 152.11 0
+-609 182.76 0
+-681.64 213.74 0
+-764.93 242.27 0
+-856.96 265.57 0
+-954.93 281.51 0
+-1055.5 289.25 0
+-1155.6 289.81 0
+-1253 286.32 0
+-1347.6 283.72 0
+-1441.1 287.89 0
+-1537.8 304.2 0
+-1643.4 335.89 0
+-1764.2 382.56 0
+-1904.8 439.37 0
+-2067.3 497.2 0
+-2249 543.95 0
+-2442.7 566.67 0
+-2636.4 553.93 0
+-2814.6 497.95 0
+-2960.1 395.88 0
+-3055.5 250.21 0
+-3084.9 68.53 0
+-3035.9 -137.25 0
+-2900.6 -351.79 0
+-2676.9 -557.71 0
+-2369.5 -737.85 0
+-1989.6 -878.59 0
+-1553.4 -973.64 0
+-1079.2 -1027 0
+-583.4 -1052.8 0
+-76.99 -1070.4 0
+435.21 -1094.7 0
+951.65 -1124.6 0
+1467.2 -1134.3 0
+1964.2 -1072.9 0
+2406 -876.72 0
+2736.2 -491.55 0
+2887.2 100.16 0
+2797.6 859.26 0
+2432.5 1686.7 0
+1801.6 2442.4 0
+964.92 2982.6 0
+24.037 3202.1 0
+-899.66 3065.4 0
+-1692.5 2612.2 0
+-2270.7 1935.3 0
+-2589.8 1142.2 0
+-2640 320.84 0
+-2433.5 -472 0
+-1995.5 -1195.3 0
+-1366.6 -1794.6 0
+-614.05 -2185.7 0
+159 -2274.8 0
+821.2 -2012.7 0
+1246.9 -1458 0
+1367.8 -803.15 0
+1218.5 -330.46 0
+948.49 -304.01 0
+784.63 -844.2 0
+954.62 -1855.6 0
+1604.7 -3057.7 0
+2752.1 -4112.6 0
+4294.2 -4784.9 0
+6068.5 -5042.3 0
+7924.6 -5041.7 0
+9770.5 -5007.1 0
+11571 -5079.2 0
+13310 -5225.9 0
+14946 -5262.4 0
+16396 -4957.4 0
+17546 -4151 0
+18283 -2815.4 0
+18518 -1045.4 0
+18191 983.49 0
+17284 3039.3 0
+15843 4833 0
+14009 6034.6 0
+12039 6351.6 0
+10274 5663.9 0
+9042.2 4135.2 0
+8542 2202.1 0
+8763.7 404.19 0
+9501.2 -862.89 0
+10452 -1517.7 0
+11347 -1764.1 0
+12029 -1876.3 0
+12440 -1948.5 0
+12549 -1795.5 0
+12283 -1086.7 0
+11528 373.61 0
+10205 2419.4 0
+8358.2 4515.7 0
+6196.5 5987.1 0
+4043.1 6343.6 0
+2222.3 5509.8 0
+946.1 3844.1 0
+253.69 1970.3 0
+18.624 534.17 0
+0 0 0
+0 0 0
+-0.006386 0.036796 0
+-0.088493 0.32441 0
+-0.34063 0.86239 0
+-0.83876 1.5728 0
+-1.6259 2.3389 0
+-2.6988 3.0229 0
+-4.0036 3.5022 0
+-5.4461 3.7121 0
+-6.9162 3.6762 0
+-8.3201 3.5008 0
+-9.6047 3.3312 0
+-10.764 3.2809 0
+-11.824 3.3681 0
+-12.812 3.4925 0
+-13.724 3.4703 0
+-14.516 3.1206 0
+-15.115 2.3654 0
+-15.46 1.2988 0
+-15.545 0.18634 0
+-15.456 -0.61222 0
+-15.367 -0.77076 0
+-15.503 -0.12573 0
+-16.082 1.2473 0
+-17.24 3.0415 0
+-18.996 4.8085 0
+-21.235 6.0964 0
+-23.739 6.5843 0
+-26.249 6.1658 0
+-28.524 4.9586 0
+-30.39 3.2448 0
+-31.76 1.3716 0
+-32.628 -0.35031 0
+-33.037 -1.7183 0
+-33.052 -2.665 0
+-32.722 -3.2438 0
+-32.072 -3.5873 0
+-31.097 -3.8567 0
+-29.774 -4.1968 0
+-28.074 -4.7027 0
+-25.982 -5.4029 0
+-23.502 -6.2567 0
+-20.675 -7.166 0
+-17.57 -7.9991 0
+-14.289 -8.6233 0
+-10.948 -8.9382 0
+-7.6647 -8.9007 0
+-4.539 -8.5337 0
+-1.6415 -7.9143 0
+0.99253 -7.1457 0
+3.3589 -6.3232 0
+5.4714 -5.5059 0
+7.3462 -4.7064 0
+8.9879 -3.8999 0
+10.385 -3.0514 0
+11.514 -2.1459 0
+12.356 -1.2129 0
+12.907 -0.3315 0
+13.2 0.384 0
+13.303 0.81456 0
+13.316 0.87252 0
+13.351 0.53102 0
+13.516 -0.16241 0
+13.887 -1.0921 0
+14.499 -2.0976 0
+15.335 -3.0077 0
+16.339 -3.6742 0
+17.421 -3.9987 0
+18.481 -3.9446 0
+19.428 -3.5354 0
+20.185 -2.8403 0
+20.705 -1.9534 0
+20.966 -0.97222 0
+20.971 0.019547 0
+20.733 0.96117 0
+20.277 1.816 0
+19.627 2.5662 0
+18.808 3.2037 0
+17.844 3.7218 0
+16.765 4.1095 0
+15.603 4.3501 0
+14.402 4.4243 0
+13.209 4.3163 0
+12.08 4.0203 0
+11.07 3.5456 0
+10.228 2.9196 0
+9.5909 2.1852 0
+9.1815 1.3971 0
+9.0036 0.61421 0
+9.0435 -0.10788 0
+9.272 -0.72322 0
+9.6488 -1.2002 0
+10.128 -1.5232 0
+10.661 -1.6921 0
+11.204 -1.7195 0
+11.719 -1.6266 0
+12.177 -1.4394 0
+12.556 -1.1848 0
+12.842 -0.88797 0
+13.029 -0.57038 0
+13.117 -0.24935 0
+13.109 0.061995 0
+13.011 0.35415 0
+12.832 0.62051 0
+12.579 0.85664 0
+12.264 1.0598 0
+11.896 1.2284 0
+11.486 1.3621 0
+11.044 1.4615 0
+10.579 1.5279 0
+10.101 1.5636 0
+9.6174 1.5715 0
+9.1365 1.5548 0
+8.6646 1.5171 0
+8.2073 1.4617 0
+7.769 1.3921 0
+7.3534 1.3112 0
+6.9634 1.2216 0
+6.6011 1.1258 0
+6.2681 1.0258 0
+5.9654 0.92352 0
+5.6934 0.82054 0
+5.4523 0.71851 0
+5.2416 0.6189 0
+5.0606 0.52307 0
+4.9082 0.43225 0
+4.7829 0.34747 0
+4.6829 0.26958 0
+4.6061 0.19921 0
+4.5505 0.13677 0
+4.5135 0.082475 0
+4.493 0.03633 0
+4.4863 -0.001819 0
+4.4911 -0.032287 0
+4.505 -0.055523 0
+4.5259 -0.072091 0
+4.5516 -0.082639 0
+4.5803 -0.087863 0
+4.6103 -0.088466 0
+4.6402 -0.085098 0
+4.6685 -0.078307 0
+4.6942 -0.068493 0
+4.7163 -0.055868 0
+4.7336 -0.040441 0
+4.7453 -0.022017 0
+4.7502 -0.000216 0
+4.747 0.025507 0
+4.7343 0.055839 0
+4.7104 0.091595 0
+4.6733 0.13373 0
+4.6206 0.18338 0
+4.5494 0.24189 0
+4.4562 0.31093 0
+4.3371 0.39256 0
+4.1869 0.4893 0
+3.9998 0.60426 0
+3.7687 0.74116 0
+3.4849 0.90441 0
+3.1384 1.0992 0
+2.7172 1.3314 0
+2.2075 1.6077 0
+1.5928 1.9358 0
+0.85444 2.324 0
+-0.029303 2.7813 0
+-1.0831 3.3173 0
+-2.3346 3.9419 0
+-3.815 4.6649 0
+-5.5582 5.4953 0
+-7.6008 6.4408 0
+-9.9816 7.5072 0
+-12.74 8.6974 0
+-15.917 10.012 0
+-19.552 11.448 0
+-23.682 13.001 0
+-28.341 14.666 0
+-33.564 16.438 0
+-39.381 18.318 0
+-45.823 20.311 0
+-52.923 22.434 0
+-60.722 24.713 0
+-69.268 27.189 0
+-78.624 29.908 0
+-88.867 32.922 0
+-100.09 36.276 0
+-112.39 39.997 0
+-125.88 44.082 0
+-140.65 48.479 0
+-156.76 53.079 0
+-174.21 57.707 0
+-192.96 62.129 0
+-212.84 66.069 0
+-233.6 69.234 0
+-254.91 71.366 0
+-276.36 72.298 0
+-297.49 72.012 0
+-317.92 70.706 0
+-337.37 68.841 0
+-355.78 67.17 0
+-373.41 66.726 0
+-390.94 68.778 0
+-409.48 74.715 0
+-430.62 85.895 0
+-456.34 103.42 0
+-488.86 127.9 0
+-530.42 159.16 0
+-582.94 196.1 0
+-647.72 236.52 0
+-725.04 277.27 0
+-813.94 314.6 0
+-912.18 344.73 0
+-1016.4 364.75 0
+-1122.7 373.51 0
+-1227.4 372.36 0
+-1327.9 365.54 0
+-1423.7 359.7 0
+-1517 362.81 0
+-1612.3 382.22 0
+-1716.5 422.41 0
+-1836.6 483.04 0
+-1978.5 557.8 0
+-2144.7 634.66 0
+-2333 697.6 0
+-2535.8 729.35 0
+-2740.4 714.63 0
+-2929.8 642.82 0
+-3085.1 509.68 0
+-3186.4 317.73 0
+-3215.5 75.953 0
+-3156.6 -201.09 0
+-2998.4 -494.22 0
+-2735.4 -781.03 0
+-2369.5 -1038.4 0
+-1910.4 -1246.8 0
+-1374.9 -1395 0
+-784.09 -1484.7 0
+-159.02 -1531.6 0
+483.61 -1559.3 0
+1133.7 -1588 0
+1786.3 -1619.5 0
+2434.8 -1624.6 0
+3062.7 -1542 0
+3634.9 -1291.8 0
+4095.9 -804.14 0
+4377.1 -53.943 0
+4413.6 912.13 0
+4165.7 1969.8 0
+3639 2940 0
+2892.3 3636.8 0
+2029.5 3922.7 0
+1177.6 3750.1 0
+456.51 3170.3 0
+-45.693 2304.9 0
+-283.81 1295.7 0
+-250.62 258.22 0
+37.146 -734.98 0
+549.67 -1633.4 0
+1242.5 -2368.7 0
+2043 -2831.8 0
+2838.5 -2896 0
+3482.6 -2490.6 0
+3831.1 -1686.8 0
+3801 -737.35 0
+3425 -22.825 0
+2869.6 90.936 0
+2397.8 -576.95 0
+2284.7 -1919 0
+2721.3 -3571.2 0
+3753.9 -5076.7 0
+5284.9 -6097 0
+7132.2 -6552.5 0
+9108.8 -6614.2 0
+11079 -6555.3 0
+12967 -6560.8 0
+14730 -6612.6 0
+16319 -6511.3 0
+17664 -6004.1 0
+18685 -4922.9 0
+19308 -3249.1 0
+19479 -1093.1 0
+19154 1356.1 0
+18304 3846.2 0
+16946 6039.9 0
+15196 7518.9 0
+13302 7884.7 0
+11624 6948.5 0
+10527 4899.4 0
+10241 2308.3 0
+10753 -88.66 0
+11817 -1726.2 0
+13055 -2455.4 0
+14116 -2529.1 0
+14778 -2333.9 0
+14962 -2059 0
+14657 -1549.8 0
+13852 -455.55 0
+12518 1431 0
+10668 3897.2 0
+8420.6 6303.9 0
+6027.1 7868.9 0
+3804.4 8057 0
+2028.3 6840.4 0
+840.82 4695.4 0
+220.85 2379.2 0
+16.013 640.54 0
+0 0 0
+0 0 0
+-0.007237 0.048048 0
+-0.10066 0.42467 0
+-0.38997 1.1343 0
+-0.96847 2.0826 0
+-1.8962 3.1225 0
+-3.1818 4.0732 0
+-4.7724 4.7647 0
+-6.5604 5.095 0
+-8.408 5.0729 0
+-10.183 4.819 0
+-11.792 4.5149 0
+-13.197 4.3167 0
+-14.405 4.2721 0
+-15.441 4.2853 0
+-16.319 4.1534 0
+-17.024 3.6682 0
+-17.517 2.7378 0
+-17.772 1.4732 0
+-17.813 0.19039 0
+-17.745 -0.68082 0
+-17.752 -0.75211 0
+-18.064 0.16676 0
+-18.891 1.9746 0
+-20.365 4.289 0
+-22.493 6.5573 0
+-25.153 8.2258 0
+-28.126 8.904 0
+-31.15 8.4644 0
+-33.984 7.0516 0
+-36.449 5.006 0
+-38.448 2.7408 0
+-39.951 0.61985 0
+-40.966 -1.1264 0
+-41.513 -2.4279 0
+-41.596 -3.3524 0
+-41.196 -4.0513 0
+-40.282 -4.6988 0
+-38.821 -5.4407 0
+-36.797 -6.3603 0
+-34.222 -7.4644 0
+-31.146 -8.6849 0
+-27.654 -9.8954 0
+-23.862 -10.94 0
+-19.908 -11.671 0
+-15.932 -11.985 0
+-12.066 -11.847 0
+-8.4111 -11.304 0
+-5.0336 -10.463 0
+-1.9581 -9.4589 0
+0.82253 -8.4087 0
+3.3319 -7.3825 0
+5.5924 -6.3888 0
+7.611 -5.3897 0
+9.3746 -4.3346 0
+10.856 -3.2 0
+12.028 -2.02 0
+12.884 -0.89243 0
+13.451 0.039227 0
+13.794 0.62521 0
+14.011 0.75476 0
+14.215 0.39325 0
+14.51 -0.40115 0
+14.974 -1.4856 0
+15.639 -2.6626 0
+16.489 -3.7224 0
+17.467 -4.4855 0
+18.49 -4.8344 0
+19.465 -4.7291 0
+20.309 -4.2025 0
+20.96 -3.3423 0
+21.381 -2.2644 0
+21.562 -1.0861 0
+21.511 0.094386 0
+21.249 1.2083 0
+20.797 2.2169 0
+20.177 3.1032 0
+19.409 3.8609 0
+18.509 4.4832 0
+17.498 4.9558 0
+16.405 5.2557 0
+15.267 5.3562 0
+14.131 5.2343 0
+13.053 4.8797 0
+12.087 4.3024 0
+11.285 3.5346 0
+10.687 2.6298 0
+10.316 1.6563 0
+10.178 0.68791 0
+10.258 -0.20496 0
+10.526 -0.96438 0
+10.941 -1.5504 0
+11.455 -1.9435 0
+12.019 -2.1437 0
+12.586 -2.1671 0
+13.119 -2.0408 0
+13.587 -1.7979 0
+13.968 -1.4725 0
+14.252 -1.0962 0
+14.432 -0.69607 0
+14.509 -0.29349 0
+14.487 0.095423 0
+14.374 0.45922 0
+14.178 0.79009 0
+13.908 1.083 0
+13.575 1.3347 0
+13.19 1.5438 0
+12.761 1.7098 0
+12.3 1.8333 0
+11.816 1.9163 0
+11.317 1.9614 0
+10.813 1.9721 0
+10.311 1.9523 0
+9.8176 1.9063 0
+9.3382 1.8385 0
+8.8777 1.7528 0
+8.4398 1.6531 0
+8.0275 1.5425 0
+7.6431 1.424 0
+7.2882 1.3 0
+6.9641 1.1729 0
+6.6713 1.0448 0
+6.4102 0.91754 0
+6.1805 0.79297 0
+5.9818 0.67276 0
+5.8129 0.55844 0
+5.6727 0.45132 0
+5.5595 0.35249 0
+5.4713 0.26278 0
+5.4061 0.18278 0
+5.3615 0.1128 0
+5.3351 0.052938 0
+5.3245 0.003076 0
+5.327 -0.037107 0
+5.3401 -0.068105 0
+5.3616 -0.090567 0
+5.3891 -0.10526 0
+5.4205 -0.11302 0
+5.4538 -0.11471 0
+5.4874 -0.11114 0
+5.5198 -0.10301 0
+5.5495 -0.090848 0
+5.5754 -0.07494 0
+5.5962 -0.055333 0
+5.6109 -0.031816 0
+5.6182 -0.003937 0
+5.6166 0.02897 0
+5.6047 0.067767 0
+5.5806 0.1135 0
+5.5421 0.1674 0
+5.4866 0.23096 0
+5.4109 0.30597 0
+5.3113 0.39462 0
+5.1832 0.4996 0
+5.021 0.62422 0
+4.818 0.77248 0
+4.5664 0.94917 0
+4.2567 1.1599 0
+3.8776 1.4112 0
+3.4163 1.7107 0
+2.8573 2.0667 0
+2.183 2.4888 0
+1.3732 2.9876 0
+0.40436 3.5745 0
+-0.74991 4.2616 0
+-2.1195 5.0616 0
+-3.7378 5.9869 0
+-5.6413 7.049 0
+-7.8695 8.2578 0
+-10.464 9.6206 0
+-13.468 11.141 0
+-16.925 12.82 0
+-20.876 14.654 0
+-25.362 16.635 0
+-30.419 18.757 0
+-36.081 21.013 0
+-42.38 23.4 0
+-49.344 25.925 0
+-57.006 28.606 0
+-65.401 31.476 0
+-74.577 34.582 0
+-84.592 37.982 0
+-95.522 41.741 0
+-107.46 45.915 0
+-120.5 50.541 0
+-134.75 55.613 0
+-150.3 61.066 0
+-167.22 66.762 0
+-185.5 72.48 0
+-205.09 77.919 0
+-225.8 82.722 0
+-247.37 86.513 0
+-269.4 88.953 0
+-291.44 89.818 0
+-312.98 89.079 0
+-333.57 86.977 0
+-352.88 84.099 0
+-370.79 81.402 0
+-387.57 80.214 0
+-403.91 82.164 0
+-420.99 89.043 0
+-440.51 102.6 0
+-464.61 124.26 0
+-495.7 154.79 0
+-536.21 193.99 0
+-588.22 240.4 0
+-653.11 291.2 0
+-731.14 342.3 0
+-821.19 388.82 0
+-920.72 425.9 0
+-1025.9 449.72 0
+-1132.4 458.77 0
+-1235.8 454.77 0
+-1333.3 443.13 0
+-1424 432.45 0
+-1510.2 433.06 0
+-1596.9 454.51 0
+-1691.5 502.8 0
+-1802 577.73 0
+-1935.1 671.54 0
+-2094.4 769.12 0
+-2278 850.26 0
+-2478.8 893.11 0
+-2683.8 878.18 0
+-2875.9 791.76 0
+-3035.1 627.81 0
+-3140.6 388.51 0
+-3171.9 83.694 0
+-3110.6 -270.08 0
+-2941.5 -650.34 0
+-2654.8 -1029.9 0
+-2248.2 -1379.5 0
+-1728.1 -1672.3 0
+-1110 -1890.5 0
+-416.47 -2031.7 0
+327.21 -2110.6 0
+1098.5 -2154.5 0
+1881.1 -2189.3 0
+2665.8 -2221.1 0
+3445 -2220.1 0
+4204.2 -2116.9 0
+4913.4 -1816.8 0
+5522.3 -1233.9 0
+5965.1 -333.5 0
+6176.2 833.25 0
+6111 2119.2 0
+5767.5 3307.7 0
+5196.6 4169.4 0
+4496.8 4532 0
+3792.5 4333.7 0
+3204 3635.6 0
+2820.5 2589 0
+2686.8 1371.5 0
+2808.2 127.74 0
+3165 -1053 0
+3724.6 -2111.3 0
+4441.5 -2966.4 0
+5242.5 -3483.1 0
+6011.4 -3499.4 0
+6594.1 -2918.8 0
+6833.7 -1822 0
+6634 -523.92 0
+6020.8 488.42 0
+5167.4 734.39 0
+4360.1 -41.032 0
+3910.2 -1726.7 0
+4048.4 -3874.2 0
+4851.8 -5897 0
+6235.8 -7335.9 0
+8008.4 -8045.9 0
+9953.7 -8198.4 0
+11897 -8110.4 0
+13727 -8016.1 0
+15379 -7925.1 0
+16805 -7642.3 0
+17963 -6912.9 0
+18817 -5573.5 0
+19344 -3616 0
+19526 -1153.2 0
+19325 1635.6 0
+18689 4501.8 0
+17587 7073 0
+16088 8838.3 0
+14415 9274 0
+12930 8099.5 0
+12022 5516.2 0
+11943 2235.3 0
+12686 -787.64 0
+13974 -2789 0
+15372 -3532 0
+16464 -3317.6 0
+16982 -2663.2 0
+16834 -1886.3 0
+16043 -898.14 0
+14666 642.36 0
+12769 2939.1 0
+10457 5735.7 0
+7920.3 8312.4 0
+5433.1 9817.1 0
+3283.7 9711.9 0
+1676.5 8047.6 0
+667.33 5424.7 0
+169.48 2712.6 0
+12.03 724.34 0
+0 0 0
+0 0 0
+-0.007925 0.060471 0
+-0.11074 0.53602 0
+-0.4324 1.4396 0
+-1.0849 2.6634 0
+-2.1492 4.0308 0
+-3.652 5.3134 0
+-5.5476 6.2842 0
+-7.7187 6.7895 0
+-9.9989 6.8097 0
+-12.212 6.4696 0
+-14.214 5.9847 0
+-15.92 5.5602 0
+-17.307 5.2875 0
+-18.394 5.0936 0
+-19.212 4.7747 0
+-19.783 4.1082 0
+-20.119 2.9946 0
+-20.243 1.5595 0
+-20.219 0.16114 0
+-20.174 -0.71298 0
+-20.3 -0.62466 0
+-20.816 0.63326 0
+-21.917 2.9289 0
+-23.715 5.8043 0
+-26.205 8.6068 0
+-29.264 10.688 0
+-32.679 11.593 0
+-36.201 11.177 0
+-39.601 9.6105 0
+-42.706 7.2841 0
+-45.404 4.6658 0
+-47.637 2.1586 0
+-49.368 0.008728 0
+-50.555 -1.7185 0
+-51.143 -3.1046 0
+-51.064 -4.3115 0
+-50.251 -5.5108 0
+-48.665 -6.8301 0
+-46.306 -8.3218 0
+-43.225 -9.9555 0
+-39.523 -11.627 0
+-35.341 -13.18 0
+-30.846 -14.441 0
+-26.213 -15.255 0
+-21.607 -15.526 0
+-17.167 -15.243 0
+-12.995 -14.481 0
+-9.1445 -13.384 0
+-5.6291 -12.118 0
+-2.4297 -10.825 0
+0.48668 -9.5807 0
+3.1475 -8.3877 0
+5.5615 -7.1913 0
+7.7138 -5.9232 0
+9.5737 -4.5499 0
+11.11 -3.1091 0
+12.311 -1.7174 0
+13.198 -0.54711 0
+13.828 0.22109 0
+14.295 0.45359 0
+14.703 0.10812 0
+15.149 -0.74658 0
+15.704 -1.9414 0
+16.397 -3.2434 0
+17.211 -4.4072 0
+18.096 -5.2253 0
+18.978 -5.5655 0
+19.779 -5.3871 0
+20.436 -4.7349 0
+20.904 -3.7157 0
+21.167 -2.4657 0
+21.228 -1.1195 0
+21.106 0.21425 0
+20.824 1.463 0
+20.402 2.5898 0
+19.858 3.5819 0
+19.199 4.4367 0
+18.433 5.1479 0
+17.57 5.6977 0
+16.629 6.0561 0
+15.64 6.1868 0
+14.644 6.0583 0
+13.693 5.6546 0
+12.841 4.9844 0
+12.137 4.0847 0
+11.622 3.0187 0
+11.32 1.8681 0
+11.237 0.72223 0
+11.36 -0.33392 0
+11.658 -1.2302 0
+12.092 -1.9182 0
+12.615 -2.3744 0
+13.177 -2.5993 0
+13.735 -2.6126 0
+14.251 -2.4478 0
+14.698 -2.145 0
+15.056 -1.7458 0
+15.314 -1.2884 0
+15.469 -0.80525 0
+15.522 -0.32179 0
+15.481 0.14319 0
+15.351 0.57657 0
+15.142 0.96969 0
+14.865 1.3171 0
+14.528 1.6154 0
+14.14 1.8633 0
+13.713 2.0603 0
+13.254 2.2074 0
+12.772 2.3067 0
+12.277 2.3613 0
+11.776 2.3751 0
+11.276 2.3529 0
+10.784 2.2995 0
+10.304 2.2201 0
+9.842 2.1194 0
+9.4008 2.0017 0
+8.9836 1.8709 0
+8.5929 1.7305 0
+8.2302 1.5834 0
+7.8971 1.4322 0
+7.5942 1.2794 0
+7.3221 1.1272 0
+7.0809 0.9778 0
+6.8703 0.8331 0
+6.6896 0.69495 0
+6.5379 0.56495 0
+6.4137 0.44443 0
+6.3154 0.33447 0
+6.2412 0.23584 0
+6.1889 0.14901 0
+6.1562 0.074203 0
+6.1407 0.011382 0
+6.1398 -0.039737 0
+6.151 -0.079651 0
+6.1719 -0.10905 0
+6.1999 -0.1288 0
+6.2329 -0.13985 0
+6.2687 -0.14321 0
+6.3053 -0.13984 0
+6.3411 -0.1306 0
+6.3743 -0.11615 0
+6.4037 -0.096873 0
+6.4279 -0.072875 0
+6.4456 -0.043952 0
+6.4555 -0.009604 0
+6.4561 0.030946 0
+6.4457 0.078726 0
+6.4226 0.13501 0
+6.3843 0.20136 0
+6.3283 0.27963 0
+6.2511 0.3721 0
+6.1488 0.48156 0
+6.0164 0.61142 0
+5.8479 0.76583 0
+5.6362 0.94976 0
+5.3728 1.1691 0
+5.0476 1.4308 0
+4.6487 1.7429 0
+4.1624 2.1143 0
+3.5727 2.5555 0
+2.8611 3.0779 0
+2.0065 3.6942 0
+0.98496 4.4185 0
+-0.23097 5.2655 0
+-1.6721 6.2506 0
+-3.3726 7.3889 0
+-5.3703 8.6947 0
+-7.7058 10.18 0
+-10.422 11.854 0
+-13.564 13.722 0
+-17.175 15.783 0
+-21.299 18.032 0
+-25.976 20.462 0
+-31.244 23.06 0
+-37.135 25.818 0
+-43.678 28.73 0
+-50.899 31.802 0
+-58.826 35.054 0
+-67.488 38.521 0
+-76.926 42.259 0
+-87.191 46.338 0
+-98.351 50.835 0
+-110.49 55.818 0
+-123.7 61.333 0
+-138.09 67.375 0
+-153.75 73.867 0
+-170.73 80.642 0
+-189.04 87.428 0
+-208.6 93.858 0
+-229.24 99.489 0
+-250.67 103.85 0
+-272.47 106.52 0
+-294.16 107.21 0
+-315.18 105.86 0
+-335.02 102.77 0
+-353.3 98.64 0
+-369.86 94.642 0
+-384.93 92.414 0
+-399.17 93.966 0
+-413.79 101.52 0
+-430.53 117.24 0
+-451.61 142.91 0
+-479.54 179.47 0
+-516.84 226.69 0
+-565.7 282.73 0
+-627.55 344.1 0
+-702.61 405.69 0
+-789.66 461.44 0
+-885.9 505.25 0
+-987.22 532.36 0
+-1088.7 540.81 0
+-1185.8 532.69 0
+-1274.9 514.66 0
+-1355.2 497.41 0
+-1428.7 493.79 0
+-1500.7 515.83 0
+-1579 571.2 0
+-1672.3 660.03 0
+-1788.2 773.16 0
+-1930.9 892.45 0
+-2099.6 993.38 0
+-2287.8 1049.4 0
+-2483.6 1036.9 0
+-2670.2 938.62 0
+-2828.2 746.68 0
+-2936.6 462.4 0
+-2974 95.725 0
+-2919.8 -335.72 0
+-2755.4 -807.22 0
+-2466 -1287.6 0
+-2043.9 -1741.6 0
+-1490.6 -2134.3 0
+-818.48 -2439.9 0
+-49.757 -2648.9 0
+787.45 -2773.2 0
+1665.1 -2841.9 0
+2560.9 -2886.4 0
+3460.8 -2919 0
+4356.2 -2912.4 0
+5236.4 -2792.5 0
+6078.8 -2452.7 0
+6841.9 -1791 0
+7467.1 -760.63 0
+7889.9 586.81 0
+8060.9 2086.6 0
+7966.5 3487.7 0
+7643.2 4519.1 0
+7175.7 4972.4 0
+6678.1 4767.9 0
+6265 3973.9 0
+6023.4 2768.9 0
+5998.4 1366 0
+6194.8 -60.33 0
+6592.7 -1404.1 0
+7160.4 -2598 0
+7854.9 -3550.3 0
+8607.9 -4100.9 0
+9307.9 -4051.2 0
+9801.2 -3274.8 0
+9925.8 -1857.6 0
+9574.4 -173.69 0
+8760.6 1181.5 0
+7651.3 1604.8 0
+6537.9 756.15 0
+5750.4 -1259.9 0
+5547.7 -3915.3 0
+6035.5 -6490 0
+7148 -8393 0
+8695.2 -9398 0
+10445 -9663.3 0
+12198 -9543.4 0
+13816 -9325.7 0
+15225 -9061.6 0
+16392 -8581.2 0
+17311 -7646.3 0
+18000 -6108.3 0
+18488 -3964.5 0
+18780 -1310.9 0
+18835 1710.9 0
+18560 4881.8 0
+17864 7806.9 0
+16754 9878.8 0
+15413 10430 0
+14187 9066.2 0
+13472 5985 0
+13536 2037.5 0
+14378 -1588.6 0
+15707 -3912.6 0
+17061 -4597.6 0
+17995 -3992.6 0
+18225 -2761.7 0
+17670 -1375.6 0
+16392 160.31 0
+14519 2156.2 0
+12193 4804 0
+9591.4 7813 0
+6946.3 10408 0
+4531 11707 0
+2587.1 11206 0
+1239.8 9058.7 0
+461.72 5988.8 0
+110.29 2951.1 0
+7.5062 780.67 0
+0 0 0
+0 0 0
+-0.008401 0.073746 0
+-0.11807 0.65586 0
+-0.46537 1.7725 0
+-1.1818 3.3078 0
+-2.3736 5.0583 0
+-4.0916 6.7456 0
+-6.3045 8.0753 0
+-8.8905 8.8266 0
+-11.656 8.9333 0
+-14.376 8.5098 0
+-16.846 7.7996 0
+-18.923 7.0618 0
+-20.541 6.4471 0
+-21.704 5.9278 0
+-22.461 5.3229 0
+-22.877 4.4147 0
+-23.023 3.1052 0
+-22.986 1.5329 0
+-22.877 0.086419 0
+-22.852 -0.70672 0
+-23.105 -0.37662 0
+-23.839 1.2873 0
+-25.219 4.1167 0
+-27.333 7.5812 0
+-30.163 10.938 0
+-33.585 13.454 0
+-37.403 14.623 0
+-41.395 14.287 0
+-45.353 12.636 0
+-49.111 10.101 0
+-52.547 7.188 0
+-55.566 4.3209 0
+-58.073 1.7469 0
+-59.959 -0.48099 0
+-61.101 -2.4562 0
+-61.372 -4.3393 0
+-60.674 -6.2805 0
+-58.96 -8.3665 0
+-56.255 -10.598 0
+-52.655 -12.89 0
+-48.317 -15.094 0
+-43.442 -17.026 0
+-38.248 -18.5 0
+-32.948 -19.367 0
+-27.727 -19.552 0
+-22.73 -19.077 0
+-18.05 -18.056 0
+-13.731 -16.673 0
+-9.7733 -15.127 0
+-6.1467 -13.578 0
+-2.8125 -12.109 0
+0.25957 -10.712 0
+3.0781 -9.3139 0
+5.6272 -7.8268 0
+7.8744 -6.2069 0
+9.7868 -4.495 0
+11.349 -2.8256 0
+12.576 -1.3985 0
+13.521 -0.42341 0
+14.263 -0.054917 0
+14.894 -0.34183 0
+15.5 -1.205 0
+16.14 -2.451 0
+16.834 -3.8153 0
+17.57 -5.0219 0
+18.301 -5.8412 0
+18.972 -6.1316 0
+19.526 -5.8565 0
+19.925 -5.0744 0
+20.151 -3.911 0
+20.209 -2.5206 0
+20.121 -1.0503 0
+19.915 0.38569 0
+19.62 1.7168 0
+19.252 2.9125 0
+18.818 3.9681 0
+18.318 4.8869 0
+17.745 5.6643 0
+17.095 6.2785 0
+16.376 6.6913 0
+15.607 6.856 0
+14.822 6.7303 0
+14.063 6.2912 0
+13.381 5.5449 0
+12.823 4.5319 0
+12.427 3.324 0
+12.216 2.0158 0
+12.197 0.71115 0
+12.359 -0.49071 0
+12.673 -1.5078 0
+13.103 -2.2837 0
+13.603 -2.7913 0
+14.131 -3.0314 0
+14.643 -3.0277 0
+15.109 -2.8198 0
+15.502 -2.4552 0
+15.806 -1.9825 0
+16.015 -1.4465 0
+16.126 -0.88433 0
+16.144 -0.32526 0
+16.075 0.20971 0
+15.927 0.7063 0
+15.71 1.1554 0
+15.432 1.5514 0
+15.102 1.8913 0
+14.729 2.1737 0
+14.32 2.3986 0
+13.883 2.567 0
+13.426 2.6814 0
+12.957 2.745 0
+12.481 2.7623 0
+12.006 2.7385 0
+11.536 2.6791 0
+11.077 2.5897 0
+10.633 2.4758 0
+10.207 2.3423 0
+9.8019 2.1935 0
+9.4204 2.0333 0
+9.0641 1.8651 0
+8.7343 1.6918 0
+8.4321 1.5161 0
+8.1583 1.3405 0
+7.9133 1.1675 0
+7.6972 0.99938 0
+7.5096 0.83813 0
+7.3501 0.68565 0
+7.2176 0.54355 0
+7.111 0.41315 0
+7.0288 0.29543 0
+6.969 0.19108 0
+6.9297 0.10049 0
+6.9086 0.02374 0
+6.9034 -0.039353 0
+6.9116 -0.089237 0
+6.9307 -0.1266 0
+6.9582 -0.15234 0
+6.9917 -0.1675 0
+7.0288 -0.1732 0
+7.0676 -0.17054 0
+7.1059 -0.16053 0
+7.1422 -0.14396 0
+7.1746 -0.12135 0
+7.2018 -0.092872 0
+7.2224 -0.05837 0
+7.2349 -0.017325 0
+7.2378 0.031118 0
+7.2296 0.088137 0
+7.2084 0.15524 0
+7.1719 0.23428 0
+7.1174 0.32755 0
+7.0415 0.43785 0
+6.9401 0.5686 0
+6.8081 0.724 0
+6.6394 0.90908 0
+6.4264 1.1299 0
+6.1604 1.3934 0
+5.8309 1.7079 0
+5.4258 2.0828 0
+4.9311 2.5286 0
+4.3306 3.0576 0
+3.6059 3.683 0
+2.7359 4.4199 0
+1.6968 5.2845 0
+0.46144 6.2943 0
+-1.0005 7.4672 0
+-2.723 8.8214 0
+-4.7433 10.374 0
+-7.1015 12.138 0
+-9.8404 14.126 0
+-13.004 16.343 0
+-16.636 18.789 0
+-20.778 21.457 0
+-25.471 24.336 0
+-30.75 27.412 0
+-36.644 30.67 0
+-43.178 34.103 0
+-50.374 37.714 0
+-58.252 41.522 0
+-66.834 45.566 0
+-76.149 49.909 0
+-86.24 54.63 0
+-97.163 59.82 0
+-108.99 65.562 0
+-121.81 71.909 0
+-135.72 78.859 0
+-150.8 86.327 0
+-167.12 94.118 0
+-184.68 101.91 0
+-203.41 109.27 0
+-223.14 115.67 0
+-243.58 120.55 0
+-264.32 123.38 0
+-284.84 123.8 0
+-304.58 121.74 0
+-322.99 117.5 0
+-339.63 111.93 0
+-354.3 106.39 0
+-367.15 102.85 0
+-378.79 103.69 0
+-390.4 111.59 0
+-403.68 129.14 0
+-420.83 158.49 0
+-444.39 200.8 0
+-476.91 255.78 0
+-520.6 321.24 0
+-576.89 392.97 0
+-646.02 464.83 0
+-726.68 529.5 0
+-815.94 579.58 0
+-909.46 609.3 0
+-1002.1 616.21 0
+-1088.8 602.74 0
+-1165.9 576.82 0
+-1232.1 551.29 0
+-1289.3 541.64 0
+-1342.7 562.51 0
+-1400.4 623.44 0
+-1471.3 725.07 0
+-1563.7 856.99 0
+-1682.5 998.12 0
+-1828.1 1119.8 0
+-1995.2 1191 0
+-2173.2 1183.7 0
+-2347 1077.7 0
+-2498.7 862.83 0
+-2608.5 539.15 0
+-2655.3 116 0
+-2617.5 -389.13 0
+-2473.7 -950.65 0
+-2204.5 -1534.8 0
+-1796.2 -2100.8 0
+-1244.1 -2605.9 0
+-555.52 -3014.3 0
+249.69 -3307.6 0
+1142.4 -3491.8 0
+2090.4 -3595.7 0
+3066 -3655.8 0
+4050.7 -3691.9 0
+5035.2 -3683 0
+6013.5 -3554.2 0
+6972.5 -3190.3 0
+7882.8 -2474.6 0
+8695.6 -1345.8 0
+9350.3 150 0
+9791.9 1837.2 0
+9992.6 3437.1 0
+9968.4 4640.3 0
+9782.1 5201.7 0
+9529.8 5020.5 0
+9314.5 4166.7 0
+9218.8 2841.6 0
+9287.8 1290.9 0
+9529.2 -282.3 0
+9926.6 -1755.5 0
+10454 -3055.2 0
+11075 -4080.5 0
+11734 -4649.2 0
+12333 -4526.2 0
+12726 -3552.1 0
+12757 -1811.2 0
+12308 270.83 0
+11376 1995.2 0
+10106 2635.9 0
+8773.3 1760.5 0
+7704.5 -544.19 0
+7169.6 -3680.9 0
+7296.7 -6800.6 0
+8043.1 -9177.4 0
+9233.6 -10494 0
+10638 -10882 0
+12045 -10729 0
+13311 -10378 0
+14366 -9935 0
+15202 -9275 0
+15860 -8191.2 0
+16412 -6554 0
+16924 -4354.5 0
+17420 -1647.8 0
+17834 1490.3 0
+18023 4893.2 0
+17828 8154.3 0
+17192 10565 0
+16245 11300 0
+15304 9829.8 0
+14752 6337.3 0
+14857 1806.3 0
+15619 -2343.2 0
+16756 -4911.3 0
+17818 -5460.7 0
+18377 -4394.1 0
+18178 -2532.4 0
+17182 -512.59 0
+15501 1555.3 0
+13311 3945.7 0
+10801 6842.9 0
+8169.6 9936.7 0
+5649 12422 0
+3480.2 13411 0
+1846.9 12461 0
+804.76 9837.6 0
+265.84 6377.6 0
+55.513 3094.6 0
+3.3838 810.36 0
+0 0 0
+0 0 0
+-0.008623 0.087482 0
+-0.12204 0.78095 0
+-0.48658 2.1256 0
+-1.2536 4.005 0
+-2.5581 6.1947 0
+-4.4815 8.3654 0
+-7.0144 10.146 0
+-10.037 11.23 0
+-13.331 11.485 0
+-16.62 10.995 0
+-19.633 10.021 0
+-22.157 8.8806 0
+-24.073 7.7981 0
+-25.361 6.8172 0
+-26.081 5.8081 0
+-26.345 4.5819 0
+-26.292 3.0549 0
+-26.077 1.3777 0
+-25.869 -0.044753 0
+-25.856 -0.66646 0
+-26.231 -0.008231 0
+-27.176 2.1275 0
+-28.824 5.5301 0
+-31.231 9.6017 0
+-34.366 13.522 0
+-38.11 16.492 0
+-42.293 17.964 0
+-46.722 17.77 0
+-51.219 16.117 0
+-55.626 13.46 0
+-59.809 10.322 0
+-63.627 7.127 0
+-66.924 4.1076 0
+-69.516 1.2983 0
+-71.207 -1.402 0
+-71.816 -4.138 0
+-71.215 -7.0171 0
+-69.357 -10.061 0
+-66.294 -13.196 0
+-62.17 -16.27 0
+-57.203 -19.083 0
+-51.653 -21.422 0
+-45.785 -23.099 0
+-39.846 -23.987 0
+-34.034 -24.044 0
+-28.496 -23.337 0
+-23.316 -22.025 0
+-18.526 -20.334 0
+-14.114 -18.493 0
+-10.046 -16.68 0
+-6.2805 -14.978 0
+-2.7893 -13.369 0
+0.4344 -11.758 0
+3.3737 -10.042 0
+5.997 -8.1654 0
+8.2728 -6.1728 0
+10.186 -4.2153 0
+11.75 -2.5175 0
+13.008 -1.3141 0
+14.028 -0.7776 0
+14.885 -0.96087 0
+15.647 -1.7745 0
+16.358 -3.0033 0
+17.032 -4.3564 0
+17.654 -5.5343 0
+18.189 -6.293 0
+18.6 -6.4885 0
+18.859 -6.0927 0
+18.954 -5.1804 0
+18.899 -3.895 0
+18.725 -2.4053 0
+18.471 -0.86565 0
+18.179 0.61073 0
+17.877 1.9614 0
+17.58 3.1675 0
+17.285 4.2365 0
+16.978 5.1798 0
+16.637 5.9951 0
+16.246 6.6569 0
+15.797 7.1179 0
+15.298 7.3193 0
+14.771 7.2074 0
+14.25 6.7501 0
+13.779 5.9499 0
+13.399 4.8491 0
+13.143 3.5272 0
+13.036 2.0899 0
+13.083 0.65441 0
+13.274 -0.66702 0
+13.586 -1.7816 0
+13.985 -2.6255 0
+14.433 -3.1686 0
+14.891 -3.4123 0
+15.325 -3.3843 0
+15.705 -3.1301 0
+16.013 -2.704 0
+16.237 -2.1615 0
+16.374 -1.5528 0
+16.424 -0.91996 0
+16.393 -0.29482 0
+16.289 0.29991 0
+16.121 0.84934 0
+15.897 1.3444 0
+15.625 1.78 0
+15.312 2.1535 0
+14.964 2.464 0
+14.589 2.7116 0
+14.191 2.8978 0
+13.777 3.025 0
+13.352 3.0967 0
+12.921 3.1176 0
+12.489 3.0931 0
+12.061 3.0293 0
+11.641 2.9323 0
+11.232 2.8078 0
+10.838 2.6613 0
+10.461 2.4977 0
+10.103 2.3209 0
+9.7655 2.1348 0
+9.4506 1.9424 0
+9.1593 1.7467 0
+8.8926 1.5505 0
+8.6513 1.3564 0
+8.4358 1.1668 0
+8.2465 0.98414 0
+8.0832 0.81048 0
+7.9454 0.64771 0
+7.8326 0.49738 0
+7.7435 0.36074 0
+7.6769 0.23872 0
+7.631 0.13191 0
+7.6041 0.040576 0
+7.5939 -0.035303 0
+7.5981 -0.096068 0
+7.6144 -0.14234 0
+7.6403 -0.175 0
+7.6732 -0.19511 0
+7.7107 -0.20388 0
+7.7507 -0.20252 0
+7.7909 -0.19216 0
+7.8293 -0.17374 0
+7.8642 -0.14792 0
+7.8939 -0.11499 0
+7.9169 -0.074855 0
+7.9319 -0.027036 0
+7.9372 0.029361 0
+7.9315 0.095628 0
+7.9129 0.17347 0
+7.8792 0.26507 0
+7.828 0.37313 0
+7.7558 0.50101 0
+7.6587 0.65281 0
+7.5316 0.83352 0
+7.3682 1.0491 0
+7.1611 1.3067 0
+6.9014 1.6144 0
+6.5788 1.9817 0
+6.1811 2.4194 0
+5.6947 2.9396 0
+5.1037 3.556 0
+4.3904 4.2837 0
+3.5347 5.1397 0
+2.5136 6.1425 0
+1.3016 7.312 0
+-0.13013 8.6687 0
+-1.8138 10.233 0
+-3.7845 12.026 0
+-6.0807 14.062 0
+-8.7426 16.355 0
+-11.812 18.91 0
+-15.33 21.728 0
+-19.338 24.801 0
+-23.871 28.113 0
+-28.961 31.647 0
+-34.633 35.385 0
+-40.909 39.312 0
+-47.801 43.43 0
+-55.322 47.755 0
+-63.484 52.329 0
+-72.305 57.221 0
+-81.813 62.519 0
+-92.052 68.327 0
+-103.08 74.741 0
+-114.98 81.827 0
+-127.84 89.589 0
+-141.74 97.934 0
+-156.74 106.65 0
+-172.87 115.36 0
+-190.07 123.58 0
+-208.19 130.69 0
+-226.96 136.02 0
+-245.98 138.97 0
+-264.76 139.09 0
+-282.72 136.26 0
+-299.3 130.82 0
+-314.01 123.69 0
+-326.6 116.46 0
+-337.15 111.37 0
+-346.16 111.22 0
+-354.7 119.1 0
+-364.4 138.06 0
+-377.35 170.62 0
+-396.02 218.16 0
+-422.9 280.36 0
+-460.2 354.7 0
+-509.33 436.25 0
+-570.53 517.84 0
+-642.51 590.86 0
+-722.31 646.62 0
+-805.54 678.25 0
+-886.93 682.78 0
+-961.25 662.92 0
+-1024.5 627.84 0
+-1075.2 592.5 0
+-1114.8 575.1 0
+-1148.3 592.96 0
+-1183.7 657.59 0
+-1230.1 770.31 0
+-1295.8 919.67 0
+-1386.6 1081.9 0
+-1503.8 1224.5 0
+-1643.5 1312.2 0
+-1796.9 1313.1 0
+-1951.3 1203.9 0
+-2091.2 972.42 0
+-2199.4 617.39 0
+-2256.5 146.75 0
+-2241.3 -423.33 0
+-2131 -1068 0
+-1902.7 -1752.6 0
+-1536.8 -2432.4 0
+-1021.8 -3057 0
+-358.57 -3580.1 0
+437.43 -3971.9 0
+1338.4 -4230.3 0
+2310.1 -4380.9 0
+3320.6 -4464.3 0
+4348 -4509.2 0
+5382.7 -4503.6 0
+6424.1 -4377.2 0
+7470 -4009.9 0
+8504.8 -3271.8 0
+9492.5 -2084.8 0
+10378 -483.5 0
+11102 1354.6 0
+11620 3131.7 0
+11923 4505.4 0
+12044 5195.3 0
+12056 5075.3 0
+12043 4210.4 0
+12080 2817.6 0
+12214 1169.9 0
+12458 -503.85 0
+12803 -2066.5 0
+13235 -3439.6 0
+13731 -4516.6 0
+14254 -5096 0
+14727 -4908.2 0
+15026 -3758.2 0
+15004 -1720 0
+14539 741.63 0
+13605 2837.2 0
+12310 3724.8 0
+10890 2877.5 0
+9645.3 353.27 0
+8836.9 -3197.4 0
+8606.4 -6810.4 0
+8936.9 -9630.3 0
+9680.3 -11244 0
+10624 -11753 0
+11570 -11565 0
+12380 -11085 0
+13004 -10484 0
+13470 -9694 0
+13867 -8551.2 0
+14310 -6941.2 0
+14897 -4832.6 0
+15646 -2214.3 0
+16460 929.02 0
+17140 4499.8 0
+17466 8085 0
+17320 10871 0
+16780 11864 0
+16118 10396 0
+15682 6621 0
+15714 1646 0
+16215 -2890.8 0
+16925 -5587.4 0
+17447 -5923.3 0
+17426 -4367.6 0
+16690 -1903 0
+15272 671.52 0
+13339 3153.5 0
+11093 5800.2 0
+8712.6 8809.3 0
+6362.9 11872 0
+4218.5 14167 0
+2455.7 14817 0
+1197.6 13434 0
+455.46 10389 0
+119.16 6614.7 0
+16.478 3162.3 0
+0.52738 819.78 0
+0 0 0
+0 0 0
+-0.008565 0.10124 0
+-0.12229 0.90762 0
+-0.49448 2.49 0
+-1.296 4.7416 0
+-2.6934 7.4251 0
+-4.8047 10.161 0
+-7.6493 12.494 0
+-11.116 14.013 0
+-14.966 14.494 0
+-18.873 13.97 0
+-22.494 12.707 0
+-25.539 11.077 0
+-27.825 9.3963 0
+-29.3 7.8063 0
+-30.03 6.2599 0
+-30.172 4.6244 0
+-29.931 2.8466 0
+-29.538 1.0891 0
+-29.224 -0.2408 0
+-29.209 -0.60235 0
+-29.689 0.46827 0
+-30.823 3.1377 0
+-32.708 7.1471 0
+-35.373 11.838 0
+-38.772 16.328 0
+-42.799 19.77 0
+-47.31 21.587 0
+-52.15 21.607 0
+-57.167 20.042 0
+-62.211 17.355 0
+-67.126 14.061 0
+-71.724 10.566 0
+-75.78 7.0728 0
+-79.035 3.5929 0
+-81.226 0.025568 0
+-82.121 -3.7416 0
+-81.571 -7.7502 0
+-79.537 -11.934 0
+-76.102 -16.125 0
+-71.462 -20.09 0
+-65.891 -23.573 0
+-59.703 -26.339 0
+-53.204 -28.209 0
+-46.663 -29.088 0
+-40.291 -28.983 0
+-34.227 -28.013 0
+-28.547 -26.389 0
+-23.273 -24.376 0
+-18.388 -22.231 0
+-13.857 -20.144 0
+-9.644 -18.198 0
+-5.7278 -16.36 0
+-2.1061 -14.518 0
+1.2036 -12.553 0
+4.1734 -10.404 0
+6.7778 -8.1189 0
+9.0072 -5.8639 0
+10.875 -3.8848 0
+12.421 -2.4363 0
+13.697 -1.7033 0
+14.764 -1.7395 0
+15.667 -2.4448 0
+16.434 -3.5853 0
+17.069 -4.8501 0
+17.556 -5.9244 0
+17.873 -6.5584 0
+18.003 -6.6133 0
+17.946 -6.0748 0
+17.723 -5.0356 0
+17.378 -3.6554 0
+16.967 -2.1132 0
+16.55 -0.56438 0
+16.176 0.88564 0
+15.877 2.1888 0
+15.662 3.3436 0
+15.52 4.3727 0
+15.421 5.298 0
+15.331 6.1206 0
+15.219 6.8111 0
+15.063 7.3123 0
+14.856 7.5527 0
+14.611 7.4657 0
+14.35 7.0092 0
+14.109 6.1807 0
+13.92 5.0228 0
+13.814 3.6205 0
+13.81 2.0892 0
+13.916 0.55752 0
+14.123 -0.85104 0
+14.412 -2.0343 0
+14.756 -2.9223 0
+15.123 -3.4823 0
+15.482 -3.7168 0
+15.805 -3.6572 0
+16.072 -3.3546 0
+16.268 -2.8696 0
+16.389 -2.2637 0
+16.433 -1.592 0
+16.406 -0.90009 0
+16.316 -0.22194 0
+16.17 0.41889 0
+15.977 1.0076 0
+15.746 1.5358 0
+15.483 1.9992 0
+15.192 2.3961 0
+14.88 2.7261 0
+14.548 2.9899 0
+14.201 3.1889 0
+13.843 3.3257 0
+13.476 3.4038 0
+13.104 3.428 0
+12.731 3.4039 0
+12.359 3.3376 0
+11.993 3.2355 0
+11.633 3.1036 0
+11.284 2.9478 0
+10.947 2.773 0
+10.624 2.5837 0
+10.317 2.3836 0
+10.026 2.1761 0
+9.7546 1.9643 0
+9.5028 1.751 0
+9.272 1.5389 0
+9.0632 1.3308 0
+8.877 1.1292 0
+8.7138 0.93643 0
+8.574 0.75458 0
+8.4572 0.58548 0
+8.363 0.43066 0
+8.2906 0.2913 0
+8.2387 0.16825 0
+8.2059 0.062022 0
+8.1904 -0.027197 0
+8.1901 -0.099565 0
+8.2028 -0.15557 0
+8.2261 -0.196 0
+8.2575 -0.2219 0
+8.2945 -0.23448 0
+8.3348 -0.23504 0
+8.3758 -0.22482 0
+8.4157 -0.20488 0
+8.4522 -0.17605 0
+8.4838 -0.13876 0
+8.5089 -0.093042 0
+8.5259 -0.038498 0
+8.5335 0.025751 0
+8.5302 0.10106 0
+8.5145 0.18931 0
+8.4845 0.29296 0
+8.4378 0.41514 0
+8.3714 0.55977 0
+8.2813 0.73164 0
+8.1628 0.93658 0
+8.0097 1.1815 0
+7.815 1.4745 0
+7.5699 1.8249 0
+7.2644 2.2434 0
+6.8869 2.7419 0
+6.4245 3.3338 0
+5.8623 4.0342 0
+5.1839 4.86 0
+4.3705 5.8297 0
+3.4016 6.9637 0
+2.2537 8.2841 0
+0.90063 9.8139 0
+-0.68655 11.576 0
+-2.5398 13.593 0
+-4.6939 15.883 0
+-7.1853 18.459 0
+-10.052 21.33 0
+-13.332 24.494 0
+-17.06 27.941 0
+-21.268 31.654 0
+-25.984 35.61 0
+-31.227 39.785 0
+-37.011 44.161 0
+-43.343 48.733 0
+-50.224 53.515 0
+-57.656 58.551 0
+-65.644 63.912 0
+-74.204 69.696 0
+-83.364 76.02 0
+-93.173 82.995 0
+-103.7 90.702 0
+-115.02 99.152 0
+-127.23 108.25 0
+-140.39 117.77 0
+-154.56 127.31 0
+-169.69 136.31 0
+-185.67 144.08 0
+-202.29 149.86 0
+-219.18 152.93 0
+-235.88 152.78 0
+-251.84 149.22 0
+-266.49 142.6 0
+-279.34 133.92 0
+-290.05 124.94 0
+-298.6 118.19 0
+-305.4 116.8 0
+-311.35 124.32 0
+-317.9 144.22 0
+-327 179.41 0
+-340.96 231.5 0
+-362.16 300.17 0
+-392.72 382.6 0
+-434.08 473.18 0
+-486.49 563.74 0
+-548.75 644.42 0
+-618.03 705.22 0
+-690.02 738.17 0
+-759.48 739.71 0
+-821.17 712.75 0
+-870.91 667.64 0
+-906.81 621.36 0
+-930.08 594.75 0
+-945.3 607.81 0
+-959.85 674.12 0
+-982.6 795.78 0
+-1022 960.54 0
+-1083.9 1142.2 0
+-1170.6 1304.9 0
+-1279.3 1409.3 0
+-1403.2 1420.3 0
+-1532.4 1312.1 0
+-1654.5 1070.8 0
+-1755.7 693.72 0
+-1819.9 187 0
+-1828.2 -435.46 0
+-1758.2 -1151.2 0
+-1584.9 -1926.6 0
+-1284.5 -2714.9 0
+-838.75 -3459.2 0
+-241.43 -4102.8 0
+498.35 -4603.3 0
+1356.5 -4947.7 0
+2299.2 -5156.3 0
+3292.8 -5271.9 0
+4312.9 -5332.7 0
+5350.5 -5338.6 0
+6410.3 -5228.2 0
+7501.6 -4881.3 0
+8624 -4156.8 0
+9755.7 -2958.2 0
+10850 -1302.1 0
+11844 641.97 0
+12676 2567.2 0
+13309 4106.1 0
+13744 4945.1 0
+14020 4929.9 0
+14199 4112.7 0
+14347 2716.8 0
+14508 1034.7 0
+14704 -684.55 0
+14942 -2291.9 0
+15221 -3706.2 0
+15541 -4818.8 0
+15890 -5413.1 0
+16220 -5187.6 0
+16438 -3909.3 0
+16414 -1631.9 0
+16026 1157.8 0
+15219 3599.1 0
+14052 4748.6 0
+12703 3987.8 0
+11418 1335.1 0
+10434 -2526.5 0
+9895 -6539.6 0
+9812.3 -9734 0
+10075 -11606 0
+10504 -12217 0
+10928 -11994 0
+11234 -11400 0
+11399 -10679 0
+11489 -9832 0
+11636 -8737.6 0
+11991 -7288.9 0
+12660 -5412.5 0
+13648 -3007.9 0
+14819 48.333 0
+15929 3735.3 0
+16712 7632.9 0
+17006 10821 0
+16840 12141 0
+16431 10785 0
+16065 6881 0
+15937 1645.1 0
+16032 -3095.1 0
+16129 -5773.2 0
+15918 -5821.2 0
+15170 -3796 0
+13843 -841.7 0
+12075 2102.9 0
+10088 4780.7 0
+8077 7475 0
+6158.6 10435 0
+4397.1 13378 0
+2856.1 15476 0
+1618.2 15840 0
+751.74 14119 0
+257.64 10754 0
+51.174 6751.8 0
+1.4132 3188.8 0
+-0.44455 819.59 0
+0 0 0
+0 0 0
+-0.008231 0.11457 0
+-0.11884 1.0321 0
+-0.48893 2.8565 0
+-1.3079 5.5027 0
+-2.7757 8.7312 0
+-5.0509 12.116 0
+-8.1881 15.108 0
+-12.091 17.175 0
+-16.505 17.974 0
+-21.057 17.465 0
+-25.331 15.899 0
+-28.955 13.703 0
+-31.679 11.297 0
+-33.409 8.9475 0
+-34.21 6.7222 0
+-34.277 4.5745 0
+-33.882 2.4993 0
+-33.328 0.67376 0
+-32.906 -0.50644 0
+-32.873 -0.52878 0
+-33.431 1.0304 0
+-34.715 4.2891 0
+-36.795 8.9347 0
+-39.672 14.255 0
+-43.294 19.323 0
+-47.569 23.259 0
+-52.384 25.471 0
+-57.617 25.781 0
+-63.141 24.398 0
+-68.806 21.769 0
+-74.425 18.383 0
+-79.757 14.604 0
+-84.509 10.594 0
+-88.348 6.3439 0
+-90.952 1.7633 0
+-92.052 -3.2086 0
+-91.487 -8.5254 0
+-89.236 -14.011 0
+-85.419 -19.388 0
+-80.281 -24.332 0
+-74.147 -28.531 0
+-67.374 -31.736 0
+-60.299 -33.787 0
+-53.206 -34.635 0
+-46.305 -34.346 0
+-39.728 -33.099 0
+-33.543 -31.154 0
+-27.764 -28.816 0
+-22.377 -26.363 0
+-17.357 -23.992 0
+-12.679 -21.782 0
+-8.3335 -19.685 0
+-4.3274 -17.581 0
+-0.67763 -15.336 0
+2.5946 -12.888 0
+5.4749 -10.293 0
+7.9644 -7.7304 0
+10.083 -5.4621 0
+11.867 -3.7564 0
+13.359 -2.8041 0
+14.601 -2.6554 0
+15.619 -3.1983 0
+16.423 -4.1834 0
+17.007 -5.2862 0
+17.354 -6.1854 0
+17.454 -6.6344 0
+17.31 -6.507 0
+16.95 -5.8077 0
+16.426 -4.6484 0
+15.811 -3.203 0
+15.185 -1.6561 0
+14.622 -0.15795 0
+14.183 1.2005 0
+13.897 2.3916 0
+13.771 3.4355 0
+13.781 4.3738 0
+13.888 5.2404 0
+14.045 6.0404 0
+14.206 6.7404 0
+14.336 7.2731 0
+14.419 7.5537 0
+14.452 7.5023 0
+14.449 7.0659 0
+14.434 6.2356 0
+14.433 5.053 0
+14.47 3.6071 0
+14.561 2.0203 0
+14.712 0.43075 0
+14.918 -1.029 0
+15.164 -2.2492 0
+15.431 -3.155 0
+15.693 -3.7121 0
+15.928 -3.9241 0
+16.118 -3.8262 0
+16.249 -3.4745 0
+16.314 -2.9352 0
+16.314 -2.2745 0
+16.252 -1.5518 0
+16.136 -0.81498 0
+15.976 -0.099331 0
+15.781 0.57162 0
+15.56 1.1839 0
+15.32 1.7304 0
+15.065 2.2081 0
+14.799 2.6165 0
+14.524 2.9561 0
+14.241 3.228 0
+13.952 3.4339 0
+13.656 3.5763 0
+13.356 3.6586 0
+13.052 3.6855 0
+12.747 3.6623 0
+12.441 3.5952 0
+12.138 3.4906 0
+11.837 3.3548 0
+11.543 3.1935 0
+11.255 3.0118 0
+10.975 2.8143 0
+10.705 2.6048 0
+10.447 2.3866 0
+10.202 2.1629 0
+9.972 1.9365 0
+9.7575 1.7104 0
+9.5604 1.4873 0
+9.3819 1.2698 0
+9.2229 1.0605 0
+9.0842 0.86172 0
+8.9661 0.67555 0
+8.8688 0.50378 0
+8.7919 0.34786 0
+8.735 0.20896 0
+8.6968 0.087872 0
+8.6761 -0.014952 0
+8.671 -0.099422 0
+8.6797 -0.16581 0
+8.6998 -0.21476 0
+8.7289 -0.2472 0
+8.7646 -0.26431 0
+8.8042 -0.2674 0
+8.8453 -0.2578 0
+8.8857 -0.23672 0
+8.9232 -0.20511 0
+8.9559 -0.16362 0
+8.9823 -0.11244 0
+9.0008 -0.05132 0
+9.0102 0.020547 0
+9.0092 0.10452 0
+8.9965 0.20259 0
+8.9705 0.31748 0
+8.9291 0.45272 0
+8.8697 0.61277 0
+8.7888 0.80312 0
+8.6819 1.0304 0
+8.5434 1.3025 0
+8.3664 1.6285 0
+8.1429 2.0188 0
+7.8635 2.485 0
+7.5176 3.0402 0
+7.0933 3.6989 0
+6.5771 4.4774 0
+5.9544 5.3937 0
+5.209 6.4678 0
+4.3226 7.7217 0
+3.2752 9.1793 0
+2.0443 10.866 0
+0.6048 12.806 0
+-1.0706 15.023 0
+-3.0119 17.54 0
+-5.2504 20.369 0
+-7.8188 23.521 0
+-10.749 26.991 0
+-14.072 30.77 0
+-17.812 34.836 0
+-21.992 39.162 0
+-26.625 43.717 0
+-31.717 48.478 0
+-37.266 53.434 0
+-43.264 58.596 0
+-49.704 64.006 0
+-56.577 69.739 0
+-63.885 75.902 0
+-71.644 82.623 0
+-79.892 90.031 0
+-88.686 98.224 0
+-98.107 107.23 0
+-108.24 116.95 0
+-119.19 127.16 0
+-131.01 137.43 0
+-143.71 147.15 0
+-157.25 155.56 0
+-171.44 161.81 0
+-186.01 165.09 0
+-200.55 164.78 0
+-214.56 160.64 0
+-227.49 152.99 0
+-238.82 142.89 0
+-248.17 132.24 0
+-255.42 123.79 0
+-260.82 121.04 0
+-265.07 127.9 0
+-269.42 148.29 0
+-275.58 185.47 0
+-285.65 241.34 0
+-301.86 315.59 0
+-326.23 405.16 0
+-360.17 503.83 0
+-404.04 602.5 0
+-456.81 690.11 0
+-515.87 755.39 0
+-577.18 789.27 0
+-635.71 787.55 0
+-686.31 753.26 0
+-724.74 697.75 0
+-748.83 639.91 0
+-759.31 603.08 0
+-760.15 609.85 0
+-758.03 675.83 0
+-761.2 804.03 0
+-777.64 981.56 0
+-813.23 1180.2 0
+-870.35 1360.8 0
+-947.41 1481 0
+-1039.3 1502.6 0
+-1138.5 1398.1 0
+-1236.1 1152.6 0
+-1322.5 762.33 0
+-1386.1 231.79 0
+-1412 -428.1 0
+-1380.7 -1198.7 0
+-1267.6 -2049.2 0
+-1046.4 -2933.3 0
+-693.66 -3789.7 0
+-195.95 -4552 0
+445.15 -5165.2 0
+1211.6 -5603.4 0
+2073 -5879.3 0
+2996.3 -6036.1 0
+3956.6 -6120.8 0
+4946 -6147.9 0
+5974.4 -6068.4 0
+7061.9 -5766.7 0
+8223.5 -5093.6 0
+9453.1 -3932.8 0
+10714 -2277.3 0
+11943 -278.69 0
+13062 1758.6 0
+14006 3451.7 0
+14740 4458.3 0
+15267 4593.4 0
+15621 3888.8 0
+15850 2563.5 0
+16000 918.7 0
+16101 -783.6 0
+16177 -2387.4 0
+16251 -3812.5 0
+16349 -4951.1 0
+16490 -5576.4 0
+16665 -5358.2 0
+16815 -4023.2 0
+16838 -1594 0
+16611 1441.4 0
+16051 4175.8 0
+15157 5585.2 0
+14030 4967.3 0
+12849 2290.5 0
+11809 -1753.4 0
+11049 -6042.8 0
+10606 -9514.9 0
+10416 -11583 0
+10346 -12269 0
+10261 -12011 0
+10079 -11325 0
+9807.8 -10533 0
+9549 -9705 0
+9466.3 -8763.2 0
+9728.9 -7594.9 0
+10442 -6065.1 0
+11585 -3967.5 0
+12992 -1063 0
+14388 2700.6 0
+15491 6891.1 0
+16116 10484 0
+16259 12168 0
+16068 11019 0
+15748 7143.9 0
+15418 1853.7 0
+15036 -2874.9 0
+14422 -5367.7 0
+13383 -5061 0
+11853 -2628.2 0
+9956.3 630.29 0
+7956.1 3674.3 0
+6124.6 6251.7 0
+4620 8736.5 0
+3448.3 11483 0
+2519.3 14259 0
+1742.1 16224 0
+1086.9 16444 0
+578.9 14549 0
+246.06 11003 0
+75.568 6858.4 0
+13.788 3217.1 0
+0.71441 822.62 0
+0 0 0
+0 0 0
+-0.007668 0.12708 0
+-0.11228 1.151 0
+-0.47186 3.2165 0
+-1.2929 6.2741 0
+-2.8091 10.094 0
+-5.2221 14.209 0
+-8.6252 17.969 0
+-12.942 20.702 0
+-17.908 21.924 0
+-23.105 21.49 0
+-28.05 19.622 0
+-32.29 16.796 0
+-35.501 13.547 0
+-37.546 10.292 0
+-38.483 7.2457 0
+-38.536 4.476 0
+-38.033 2.0453 0
+-37.346 0.14824 0
+-36.824 -0.84187 0
+-36.758 -0.46212 0
+-37.358 1.6485 0
+-38.745 5.5432 0
+-40.965 10.851 0
+-44.003 16.815 0
+-47.807 22.476 0
+-52.301 26.94 0
+-57.405 29.606 0
+-63.026 30.289 0
+-69.05 29.179 0
+-75.319 26.689 0
+-81.607 23.257 0
+-87.614 19.189 0
+-92.975 14.603 0
+-97.296 9.4705 0
+-100.2 3.7286 0
+-101.41 -2.612 0
+-100.76 -9.3955 0
+-98.248 -16.319 0
+-94.046 -22.982 0
+-88.441 -28.967 0
+-81.8 -33.913 0
+-74.511 -37.56 0
+-66.928 -39.784 0
+-59.336 -40.59 0
+-51.94 -40.112 0
+-44.861 -38.589 0
+-38.16 -36.333 0
+-31.852 -33.676 0
+-25.932 -30.913 0
+-20.393 -28.245 0
+-15.232 -25.739 0
+-10.457 -23.344 0
+-6.0849 -20.927 0
+-2.1326 -18.357 0
+1.3888 -15.574 0
+4.4809 -12.645 0
+7.1611 -9.7611 0
+9.4606 -7.1971 0
+11.418 -5.2267 0
+13.069 -4.0393 0
+14.44 -3.6761 0
+15.539 -4.0118 0
+16.361 -4.7843 0
+16.887 -5.6616 0
+17.103 -6.324 0
+17.007 -6.537 0
+16.624 -6.1937 0
+16.004 -5.3213 0
+15.228 -4.0516 0
+14.39 -2.5705 0
+13.592 -1.0634 0
+12.92 0.33028 0
+12.438 1.5398 0
+12.178 2.5627 0
+12.139 3.4449 0
+12.29 4.2485 0
+12.583 5.0211 0
+12.959 5.772 0
+13.363 6.4639 0
+13.751 7.0195 0
+14.093 7.3407 0
+14.378 7.3338 0
+14.609 6.935 0
+14.798 6.1282 0
+14.965 4.9528 0
+15.126 3.4994 0
+15.293 1.8961 0
+15.472 0.2874 0
+15.66 -1.187 0
+15.847 -2.4118 0
+16.019 -3.3091 0
+16.161 -3.8434 0
+16.258 -4.0204 0
+16.3 -3.8784 0
+16.282 -3.4781 0
+16.204 -2.8901 0
+16.072 -2.1848 0
+15.895 -1.4242 0
+15.683 -0.65795 0
+15.447 0.078553 0
+15.198 0.7626 0
+14.944 1.3817 0
+14.69 1.9307 0
+14.441 2.4083 0
+14.197 2.8154 0
+13.958 3.1538 0
+13.724 3.425 0
+13.492 3.6311 0
+13.26 3.7744 0
+13.028 3.858 0
+12.796 3.8862 0
+12.561 3.8642 0
+12.326 3.7978 0
+12.089 3.6932 0
+11.853 3.5565 0
+11.617 3.3935 0
+11.384 3.2091 0
+11.153 3.0078 0
+10.926 2.7934 0
+10.706 2.5692 0
+10.492 2.3381 0
+10.288 2.1031 0
+10.095 1.867 0
+9.914 1.6325 0
+9.7472 1.4026 0
+9.596 1.1798 0
+9.4616 0.96662 0
+9.345 0.76548 0
+9.2469 0.57839 0
+9.1675 0.40712 0
+9.1068 0.25314 0
+9.0641 0.11756 0
+9.0387 0.001174 0
+9.0291 -0.09563 0
+9.0336 -0.17285 0
+9.0501 -0.23089 0
+9.0764 -0.2705 0
+9.11 -0.29276 0
+9.1482 -0.29896 0
+9.1886 -0.29045 0
+9.2287 -0.26857 0
+9.2662 -0.23446 0
+9.2993 -0.18895 0
+9.3262 -0.13248 0
+9.3455 -0.064996 0
+9.3561 0.014156 0
+9.3569 0.10627 0
+9.347 0.21341 0
+9.325 0.33849 0
+9.2894 0.48539 0
+9.2379 0.65912 0
+9.1676 0.86584 0
+9.0744 1.113 0
+8.9535 1.4093 0
+8.7985 1.7648 0
+8.6023 2.1908 0
+8.3564 2.6999 0
+8.0514 3.306 0
+7.6768 4.0246 0
+7.2212 4.8727 0
+6.6721 5.8692 0
+6.016 7.0353 0
+5.238 8.394 0
+4.3217 9.9706 0
+3.2491 11.792 0
+2 13.884 0
+0.55243 16.273 0
+-1.1176 18.982 0
+-3.0356 22.026 0
+-5.2275 25.413 0
+-7.7189 29.142 0
+-10.533 33.198 0
+-13.69 37.558 0
+-17.204 42.188 0
+-21.081 47.054 0
+-25.319 52.124 0
+-29.91 57.38 0
+-34.836 62.831 0
+-40.079 68.516 0
+-45.621 74.512 0
+-51.451 80.936 0
+-57.574 87.928 0
+-64.019 95.634 0
+-70.838 104.17 0
+-78.111 113.59 0
+-85.94 123.82 0
+-94.437 134.61 0
+-103.71 145.53 0
+-113.82 155.94 0
+-124.77 165 0
+-136.49 171.81 0
+-148.77 175.43 0
+-161.28 175.18 0
+-173.6 170.7 0
+-185.22 162.3 0
+-195.63 151.05 0
+-204.38 138.94 0
+-211.26 128.93 0
+-216.34 124.78 0
+-220.12 130.78 0
+-223.58 151.25 0
+-228.17 189.82 0
+-235.72 248.65 0
+-248.28 327.55 0
+-267.73 423.24 0
+-295.5 529.01 0
+-332.08 634.92 0
+-376.68 728.81 0
+-427.06 798.18 0
+-479.57 832.89 0
+-529.56 828.07 0
+-572.09 786.73 0
+-602.98 721.06 0
+-619.81 651.66 0
+-622.8 604.14 0
+-615.17 603.53 0
+-602.7 667.42 0
+-592.68 799.7 0
+-592.29 987.01 0
+-606.81 1199.3 0
+-638.45 1394.6 0
+-685.98 1527.8 0
+-745.39 1558.6 0
+-811.22 1458.3 0
+-877.85 1211.9 0
+-939.92 815.46 0
+-991.31 272.39 0
+-1022.9 -409.4 0
+-1020.3 -1215.8 0
+-962.23 -2121.1 0
+-822.67 -3081.6 0
+-575.15 -4034.2 0
+-199.88 -4905.2 0
+309.65 -5627.3 0
+943.4 -6161.6 0
+1677.2 -6510.7 0
+2481.5 -6716.3 0
+3332.9 -6833.5 0
+4225.2 -6891.6 0
+5173 -6857.9 0
+6205.7 -6625.1 0
+7352.7 -6039.4 0
+8623.9 -4965.1 0
+9994.9 -3366.7 0
+11404 -1369 0
+12764 738.31 0
+13981 2567.5 0
+14985 3754.2 0
+15739 4082.7 0
+16243 3557.3 0
+16527 2381.1 0
+16631 851.8 0
+16598 -766.05 0
+16470 -2316.1 0
+16297 -3723.2 0
+16137 -4884.4 0
+16046 -5567 0
+16056 -5415.2 0
+16149 -4113.5 0
+16251 -1641.9 0
+16246 1532.5 0
+16020 4484.8 0
+15507 6135.2 0
+14727 5708.7 0
+13777 3115.1 0
+12800 -971.58 0
+11925 -5398.5 0
+11217 -9037.5 0
+10659 -11233 0
+10171 -11962 0
+9657.3 -11667 0
+9066.7 -10912 0
+8432.4 -10091 0
+7878.9 -9347.6 0
+7588 -8638.7 0
+7733.8 -7834 0
+8408.4 -6721.9 0
+9568.6 -4982 0
+11029 -2263.9 0
+12515 1545.3 0
+13755 5992.3 0
+14574 9956 0
+14940 12002 0
+14936 11117 0
+14664 7410.2 0
+14148 2271.6 0
+13303 -2222.8 0
+11994 -4359.9 0
+10155 -3643.4 0
+7899.4 -895.87 0
+5533.5 2436.3 0
+3449.2 5260.4 0
+1958.4 7403.3 0
+1159.8 9406.6 0
+916.84 11789 0
+953.55 14397 0
+1002.2 16357 0
+915.7 16642 0
+691.75 14787 0
+417.11 11220 0
+187.16 7007.1 0
+51.499 3289.6 0
+3.8195 841.33 0
+0 0 0
+0 0 0
+-0.006972 0.13852 0
+-0.10389 1.262 0
+-0.44776 3.5642 0
+-1.2605 7.0449 0
+-2.8086 11.498 0
+-5.3362 16.419 0
+-8.9765 21.053 0
+-13.675 24.572 0
+-19.161 26.322 0
+-24.979 26.032 0
+-30.581 23.874 0
+-35.44 20.368 0
+-39.163 16.175 0
+-41.566 11.882 0
+-42.695 7.8791 0
+-42.795 4.3775 0
+-42.24 1.5244 0
+-41.458 -0.46288 0
+-40.849 -1.2425 0
+-40.738 -0.41828 0
+-41.343 2.2893 0
+-42.78 6.856 0
+-45.081 12.85 0
+-48.226 19.475 0
+-52.168 25.756 0
+-56.857 30.793 0
+-62.238 33.984 0
+-68.244 35.127 0
+-74.765 34.379 0
+-81.618 32.096 0
+-88.532 28.644 0
+-95.143 24.262 0
+-101.02 19.019 0
+-105.71 12.882 0
+-108.81 5.8316 0
+-110.02 -2.0274 0
+-109.21 -10.411 0
+-106.41 -18.875 0
+-101.83 -26.893 0
+-95.81 -33.956 0
+-88.734 -39.659 0
+-81.011 -43.748 0
+-72.995 -46.141 0
+-64.965 -46.909 0
+-57.11 -46.256 0
+-49.541 -44.48 0
+-42.314 -41.935 0
+-35.453 -38.978 0
+-28.971 -35.908 0
+-22.888 -32.921 0
+-17.231 -30.081 0
+-12.031 -27.329 0
+-7.3151 -24.537 0
+-3.1012 -21.581 0
+0.61298 -18.414 0
+3.8492 -15.118 0
+6.6461 -11.897 0
+9.0508 -9.0302 0
+11.109 -6.7914 0
+12.854 -5.3599 0
+14.3 -4.7623 0
+15.442 -4.8583 0
+16.26 -5.375 0
+16.728 -5.9785 0
+16.833 -6.3581 0
+16.582 -6.2981 0
+16.014 -5.7166 0
+15.202 -4.6662 0
+14.244 -3.2983 0
+13.254 -1.8086 0
+12.344 -0.37857 0
+11.609 0.86763 0
+11.115 1.8839 0
+10.892 2.6965 0
+10.933 3.3789 0
+11.203 4.0154 0
+11.647 4.6673 0
+12.199 5.3485 0
+12.798 6.0178 0
+13.393 6.5883 0
+13.945 6.9489 0
+14.435 6.9932 0
+14.857 6.6462 0
+15.214 5.8846 0
+15.516 4.7445 0
+15.774 3.317 0
+15.996 1.7329 0
+16.185 0.14157 0
+16.34 -1.3131 0
+16.455 -2.5122 0
+16.524 -3.376 0
+16.538 -3.8693 0
+16.491 -3.9997 0
+16.381 -3.8088 0
+16.212 -3.3611 0
+15.989 -2.7308 0
+15.724 -1.9913 0
+15.429 -1.2063 0
+15.118 -0.42589 0
+14.803 0.31506 0
+14.496 0.99546 0
+14.203 1.6051 0
+13.931 2.1409 0
+13.682 2.604 0
+13.454 2.9972 0
+13.245 3.3232 0
+13.053 3.5847 0
+12.873 3.7836 0
+12.701 3.9224 0
+12.534 4.0038 0
+12.369 4.0315 0
+12.204 4.0102 0
+12.037 3.9453 0
+11.867 3.8426 0
+11.694 3.7078 0
+11.519 3.5463 0
+11.34 3.3631 0
+11.16 3.1621 0
+10.979 2.9471 0
+10.799 2.7212 0
+10.62 2.4871 0
+10.446 2.2476 0
+10.277 2.0055 0
+10.116 1.7636 0
+9.9642 1.5247 0
+9.8241 1.2915 0
+9.6973 1.0668 0
+9.5851 0.85306 0
+9.4887 0.6526 0
+9.4089 0.4675 0
+9.3461 0.29954 0
+9.3004 0.1502 0
+9.2711 0.020608 0
+9.2575 -0.088472 0
+9.258 -0.1767 0
+9.2709 -0.24418 0
+9.294 -0.29143 0
+9.3249 -0.31933 0
+9.3611 -0.3291 0
+9.3999 -0.3221 0
+9.4388 -0.29975 0
+9.4755 -0.26339 0
+9.5081 -0.21407 0
+9.5347 -0.15253 0
+9.5541 -0.07895 0
+9.5652 0.007077 0
+9.5673 0.10672 0
+9.5597 0.22203 0
+9.5415 0.35606 0
+9.5117 0.51302 0
+9.4685 0.69837 0
+9.4095 0.91893 0
+9.3315 1.1829 0
+9.2302 1.4998 0
+9.1003 1.8805 0
+8.9355 2.3371 0
+8.7286 2.883 0
+8.4717 3.5329 0
+8.1561 4.3026 0
+7.7724 5.2098 0
+7.3108 6.2741 0
+6.7609 7.517 0
+6.1113 8.9625 0
+5.3501 10.637 0
+4.4638 12.567 0
+3.4378 14.782 0
+2.256 17.309 0
+0.90099 20.17 0
+-0.64574 23.383 0
+-2.4031 26.956 0
+-4.3892 30.886 0
+-6.6203 35.158 0
+-9.1087 39.743 0
+-11.861 44.604 0
+-14.877 49.701 0
+-18.148 54.994 0
+-21.657 60.46 0
+-25.38 66.102 0
+-29.289 71.956 0
+-33.357 78.103 0
+-37.565 84.666 0
+-41.911 91.801 0
+-46.415 99.673 0
+-51.128 108.43 0
+-56.137 118.13 0
+-61.559 128.74 0
+-67.533 140.02 0
+-74.209 151.54 0
+-81.718 162.64 0
+-90.144 172.43 0
+-99.496 179.92 0
+-109.68 184.12 0
+-120.47 184.2 0
+-131.52 179.76 0
+-142.39 171.01 0
+-152.59 159 0
+-161.64 145.78 0
+-169.22 134.46 0
+-175.22 129.03 0
+-179.93 134.09 0
+-184.04 154.32 0
+-188.71 193.74 0
+-195.5 254.79 0
+-206.21 337.41 0
+-222.63 438.24 0
+-246.18 550.16 0
+-277.51 662.52 0
+-316.18 762.16 0
+-360.38 835.47 0
+-406.99 871.26 0
+-451.83 863.92 0
+-490.33 816.34 0
+-518.44 741.37 0
+-533.55 661.02 0
+-535.39 602.97 0
+-526.3 594.43 0
+-511.04 654.81 0
+-495.71 788.87 0
+-486.33 982.8 0
+-487.16 1204.8 0
+-499.66 1410.7 0
+-522.27 1552.6 0
+-551.26 1588.8 0
+-582.43 1490.5 0
+-612.7 1243.3 0
+-640.85 844.57 0
+-666.54 297.66 0
+-687.7 -391.8 0
+-697.12 -1214.6 0
+-679.89 -2151.1 0
+-613.36 -3162.9 0
+-470.73 -4188.5 0
+-227.63 -5149.6 0
+130.33 -5969.1 0
+602.55 -6594.9 0
+1173.6 -7019.1 0
+1820.2 -7279.2 0
+2522.7 -7436.5 0
+3277.1 -7535.2 0
+4101.6 -7560.4 0
+5033.1 -7417.2 0
+6113 -6950.4 0
+7366.4 -6006.8 0
+8782.9 -4519.5 0
+10307 -2578.7 0
+11845 -448.29 0
+13282 1491.4 0
+14513 2862.4 0
+15461 3420.6 0
+16092 3137.3 0
+16408 2188.6 0
+16445 854.98 0
+16252 -608.73 0
+15895 -2054.5 0
+15454 -3417.2 0
+15019 -4602.5 0
+14686 -5375 0
+14526 -5356.3 0
+14566 -4186.9 0
+14760 -1793.2 0
+15002 1400.3 0
+15150 4480.2 0
+15077 6338.2 0
+14716 6139.6 0
+14084 3728.3 0
+13269 -266.26 0
+12387 -4694.8 0
+11531 -8392.6 0
+10731 -10648 0
+9955.3 -11392 0
+9146.4 -11059 0
+8273.8 -10250 0
+7382.9 -9429.8 0
+6606.1 -8806.3 0
+6127.7 -8370.2 0
+6114.9 -7962.9 0
+6643.8 -7288.3 0
+7656.1 -5912.9 0
+8968.5 -3389.4 0
+10333 436.4 0
+11521 5081 0
+12391 9341.2 0
+12899 11696 0
+13058 11089 0
+12859 7655.5 0
+12223 2850.1 0
+11013 -1205.1 0
+9132.4 -2832.2 0
+6640.2 -1667.6 0
+3824.4 1286.5 0
+1159.3 4451.5 0
+-850.49 6736.1 0
+-1869.3 8122 0
+-1871 9396.2 0
+-1141.6 11299 0
+-144.43 13777 0
+680.88 15903 0
+1080.8 16493 0
+1041.4 14913 0
+728.05 11483 0
+362.17 7258.7 0
+107.06 3439.8 0
+8.274 885.16 0
+0 0 0
+0 0 0
+-0.006294 0.14885 0
+-0.095661 1.3649 0
+-0.42374 3.8981 0
+-1.2265 7.8114 0
+-2.8003 12.934 0
+-5.429 18.732 0
+-9.2823 24.339 0
+-14.327 28.753 0
+-20.288 31.134 0
+-26.678 31.057 0
+-32.893 28.629 0
+-38.341 24.408 0
+-42.568 19.186 0
+-45.346 13.74 0
+-46.707 8.6613 0
+-46.906 4.3248 0
+-46.353 0.97935 0
+-45.518 -1.1303 0
+-44.843 -1.6992 0
+-44.677 -0.41063 0
+-45.253 2.92 0
+-46.686 8.182 0
+-49.008 14.882 0
+-52.202 22.193 0
+-56.238 29.132 0
+-61.092 34.802 0
+-66.736 38.597 0
+-73.117 40.291 0
+-80.118 39.987 0
+-87.526 37.964 0
+-95.012 34.499 0
+-102.15 29.755 0
+-108.44 23.759 0
+-113.38 16.488 0
+-116.57 7.9876 0
+-117.7 -1.5214 0
+-116.68 -11.609 0
+-113.58 -21.684 0
+-108.66 -31.093 0
+-102.29 -39.244 0
+-94.864 -45.7 0
+-86.8 -50.227 0
+-78.439 -52.795 0
+-70.038 -53.545 0
+-61.766 -52.751 0
+-53.724 -50.764 0
+-45.968 -47.971 0
+-38.537 -44.737 0
+-31.475 -41.362 0
+-24.835 -38.033 0
+-18.678 -34.807 0
+-13.063 -31.631 0
+-8.0309 -28.387 0
+-3.5967 -24.972 0
+0.25646 -21.363 0
+3.5734 -17.659 0
+6.4173 -14.079 0
+8.8548 -10.903 0
+10.943 -8.3936 0
+12.716 -6.7147 0
+14.182 -5.8726 0
+15.327 -5.7095 0
+16.121 -5.9435 0
+16.534 -6.2433 0
+16.555 -6.3127 0
+16.198 -5.96 0
+15.515 -5.1317 0
+14.591 -3.9067 0
+13.538 -2.4553 0
+12.477 -0.97947 0
+11.527 0.34601 0
+10.783 1.416 0
+10.309 2.2115 0
+10.132 2.789 0
+10.243 3.25 0
+10.601 3.7008 0
+11.15 4.216 0
+11.823 4.8139 0
+12.555 5.4499 0
+13.292 6.028 0
+13.992 6.4256 0
+14.629 6.5241 0
+15.189 6.2387 0
+15.668 5.5388 0
+16.067 4.4567 0
+16.391 3.0826 0
+16.643 1.5485 0
+16.825 0.005935 0
+16.937 -1.3988 0
+16.976 -2.5455 0
+16.94 -3.3541 0
+16.829 -3.7905 0
+16.643 -3.8646 0
+16.389 -3.6211 0
+16.075 -3.1276 0
+15.715 -2.4611 0
+15.323 -1.697 0
+14.915 -0.89987 0
+14.507 -0.11936 0
+14.113 0.61112 0
+13.745 1.2727 0
+13.41 1.8578 0
+13.113 2.3662 0
+12.855 2.8015 0
+12.634 3.1685 0
+12.446 3.4716 0
+12.286 3.7142 0
+12.148 3.8986 0
+12.026 4.0271 0
+11.914 4.1021 0
+11.809 4.1267 0
+11.705 4.1049 0
+11.601 4.0415 0
+11.493 3.9417 0
+11.38 3.8107 0
+11.261 3.6535 0
+11.137 3.4744 0
+11.006 3.2773 0
+10.87 3.0655 0
+10.73 2.8416 0
+10.588 2.6084 0
+10.445 2.3683 0
+10.303 2.124 0
+10.164 1.8782 0
+10.03 1.6337 0
+9.9043 1.3933 0
+9.788 1.1598 0
+9.683 0.93602 0
+9.591 0.72436 0
+9.5132 0.52722 0
+9.4504 0.34669 0
+9.4032 0.18461 0
+9.3714 0.042505 0
+9.3545 -0.078478 0
+9.3514 -0.17761 0
+9.3608 -0.25463 0
+9.3805 -0.30975 0
+9.4084 -0.34362 0
+9.4418 -0.3573 0
+9.4783 -0.35212 0
+9.5153 -0.32959 0
+9.5504 -0.29121 0
+9.5815 -0.23832 0
+9.607 -0.17193 0
+9.6257 -0.092587 0
+9.6367 -0.000154 0
+9.6395 0.10633 0
+9.6337 0.22882 0
+9.619 0.37045 0
+9.5947 0.53569 0
+9.5597 0.73042 0
+9.5123 0.96202 0
+9.4501 1.2394 0
+9.3696 1.5727 0
+9.2666 1.9737 0
+9.1359 2.4551 0
+8.9718 3.0308 0
+8.768 3.7159 0
+8.5177 4.5268 0
+8.214 5.4813 0
+7.8499 6.599 0
+7.4181 7.9019 0
+6.9112 9.4142 0
+6.3215 11.162 0
+5.6408 13.175 0
+4.86 15.48 0
+3.9693 18.106 0
+2.9582 21.077 0
+1.8153 24.41 0
+0.52944 28.113 0
+-0.90991 32.184 0
+-2.5112 36.604 0
+-4.2792 41.341 0
+-6.2137 46.355 0
+-8.3072 51.598 0
+-10.545 57.025 0
+-12.903 62.606 0
+-15.351 68.338 0
+-17.856 74.257 0
+-20.384 80.444 0
+-22.91 87.03 0
+-25.427 94.187 0
+-27.953 102.1 0
+-30.543 110.95 0
+-33.289 120.83 0
+-36.331 131.72 0
+-39.84 143.43 0
+-44.014 155.53 0
+-49.054 167.34 0
+-55.131 177.96 0
+-62.358 186.33 0
+-70.752 191.38 0
+-80.209 192.18 0
+-90.49 188.22 0
+-101.23 179.61 0
+-111.97 167.36 0
+-122.23 153.53 0
+-131.58 141.29 0
+-139.78 134.83 0
+-146.86 139 0
+-153.25 158.84 0
+-159.8 198.69 0
+-167.79 261.31 0
+-178.79 346.86 0
+-194.46 451.94 0
+-216.23 569.18 0
+-244.96 687.33 0
+-280.55 792.4 0
+-321.74 869.74 0
+-365.96 907.15 0
+-409.63 898.29 0
+-448.64 845.77 0
+-479.11 762.88 0
+-498.33 672.8 0
+-505.51 604.93 0
+-502.16 588.44 0
+-491.87 644.35 0
+-479.46 778.16 0
+-469.54 975.63 0
+-465.04 1203.4 0
+-466.19 1414.8 0
+-470.38 1559.9 0
+-473.36 1595.9 0
+-471.14 1494.3 0
+-462.22 1243.1 0
+-448.78 842.04 0
+-436.06 296.24 0
+-429.64 -389.63 0
+-431.23 -1210.6 0
+-434.59 -2153.9 0
+-423.66 -3188.7 0
+-374.33 -4258.1 0
+-260 -5283.5 0
+-59.312 -6181 0
+237.15 -6887.5 0
+624.69 -7383.6 0
+1088.9 -7701.3 0
+1615.7 -7905.4 0
+2204.3 -8053.3 0
+2875.1 -8148.2 0
+3669.4 -8110.4 0
+4637.7 -7787.4 0
+5818.3 -7010.8 0
+7215.5 -5682.1 0
+8784.1 -3851.5 0
+10429 -1747 0
+12023 270.47 0
+13429 1819.9 0
+14534 2633.4 0
+15266 2646.6 0
+15601 1997.9 0
+15562 936.95 0
+15206 -305.03 0
+14622 -1598.2 0
+13916 -2893.2 0
+13214 -4107 0
+12647 -5003.7 0
+12326 -5184.2 0
+12312 -4243.8 0
+12593 -2046 0
+13069 1046.8 0
+13579 4159.8 0
+13941 6182.3 0
+14012 6234.1 0
+13734 4086.6 0
+13143 300.17 0
+12345 -4012.9 0
+11457 -7679.1 0
+10554 -9941.5 0
+9646.8 -10682 0
+8702 -10311 0
+7695.8 -9453.4 0
+6668.7 -8635.4 0
+5743.7 -8130.8 0
+5093.8 -7958.8 0
+4872.9 -7929.9 0
+5145.2 -7663.3 0
+5852 -6622.9 0
+6834.6 -4285.1 0
+7898.1 -476.53 0
+8880.3 4282.7 0
+9686.4 8727.9 0
+10270 11296 0
+10578 10938 0
+10493 7839.3 0
+9832.4 3506.5 0
+8411.8 54.755 0
+6166.2 -943.36 0
+3262.6 685.86 0
+132.85 3737.6 0
+-2617.7 6519.9 0
+-4406.6 7993.9 0
+-4896.2 8362.5 0
+-4133.6 8721.4 0
+-2535.6 10078 0
+-721.62 12493 0
+729.23 14963 0
+1481.9 16093 0
+1524.8 15003 0
+1103.8 11848 0
+562.16 7647.7 0
+168.87 3684.2 0
+13.168 958.42 0
+0 0 0
+0 0 0
+-0.005827 0.15833 0
+-0.090166 1.4616 0
+-0.40905 4.2227 0
+-1.2115 8.5788 0
+-2.8199 14.405 0
+-5.551 21.143 0
+-9.6043 27.809 0
+-14.963 33.216 0
+-21.346 36.315 0
+-28.241 36.512 0
+-34.998 33.834 0
+-40.972 28.873 0
+-45.661 22.558 0
+-48.802 15.869 0
+-50.411 9.6153 0
+-50.748 4.3549 0
+-50.246 0.44984 0
+-49.4 -1.8232 0
+-48.68 -2.1993 0
+-48.457 -0.44851 0
+-48.973 3.5108 0
+-50.353 9.4777 0
+-52.635 16.899 0
+-55.819 24.922 0
+-59.898 32.565 0
+-64.875 38.936 0
+-70.747 43.423 0
+-77.471 45.759 0
+-84.913 45.975 0
+-92.821 44.251 0
+-100.81 40.763 0
+-108.37 35.594 0
+-114.97 28.74 0
+-120.08 20.205 0
+-123.26 10.125 0
+-124.25 -1.1418 0
+-122.99 -13.008 0
+-119.62 -24.729 0
+-114.42 -35.532 0
+-107.77 -44.758 0
+-100.11 -51.953 0
+-91.812 -56.914 0
+-83.202 -59.673 0
+-74.505 -60.445 0
+-65.868 -59.563 0
+-57.382 -57.426 0
+-49.108 -54.435 0
+-41.11 -50.959 0
+-33.467 -47.281 0
+-26.274 -43.58 0
+-19.63 -39.911 0
+-13.623 -36.231 0
+-8.3058 -32.45 0
+-3.6915 -28.496 0
+0.25348 -24.378 0
+3.5983 -20.223 0
+6.4317 -16.258 0
+8.8416 -12.762 0
+10.898 -9.9822 0
+12.641 -8.0565 0
+14.077 -6.9673 0
+15.186 -6.538 0
+15.938 -6.4788 0
+16.301 -6.4641 0
+16.266 -6.216 0
+15.857 -5.5693 0
+15.131 -4.5001 0
+14.182 -3.1129 0
+13.123 -1.5942 0
+12.077 -0.14957 0
+11.158 1.0556 0
+10.458 1.9368 0
+10.035 2.5026 0
+9.9108 2.8391 0
+10.074 3.0746 0
+10.485 3.3359 0
+11.088 3.7097 0
+11.819 4.2183 0
+12.617 4.8141 0
+13.428 5.3934 0
+14.209 5.8234 0
+14.93 5.9755 0
+15.571 5.7559 0
+16.123 5.1278 0
+16.58 4.1194 0
+16.939 2.8191 0
+17.201 1.3587 0
+17.363 -0.11012 0
+17.427 -1.4408 0
+17.391 -2.5133 0
+17.259 -3.2489 0
+17.035 -3.6154 0
+16.725 -3.6254 0
+16.343 -3.3263 0
+15.901 -2.7886 0
+15.418 -2.0913 0
+14.911 -1.3107 0
+14.4 -0.51156 0
+13.903 0.25756 0
+13.434 0.96531 0
+13.005 1.5955 0
+12.624 2.1436 0
+12.295 2.6124 0
+12.02 3.0083 0
+11.794 3.3384 0
+11.614 3.6088 0
+11.473 3.8237 0
+11.363 3.9861 0
+11.278 4.0983 0
+11.209 4.1622 0
+11.151 4.1804 0
+11.099 4.1561 0
+11.047 4.0934 0
+10.992 3.9966 0
+10.931 3.8704 0
+10.864 3.719 0
+10.788 3.5463 0
+10.703 3.3557 0
+10.61 3.1498 0
+10.509 2.9311 0
+10.402 2.7018 0
+10.291 2.4644 0
+10.177 2.2211 0
+10.062 1.9746 0
+9.9486 1.7276 0
+9.8394 1.4829 0
+9.7363 1.2435 0
+9.6413 1.0122 0
+9.5563 0.79157 0
+9.4829 0.58436 0
+9.4223 0.39293 0
+9.3754 0.21945 0
+9.3425 0.065834 0
+9.3234 -0.066357 0
+9.3174 -0.17597 0
+9.3234 -0.26235 0
+9.3397 -0.32532 0
+9.3642 -0.36527 0
+9.3944 -0.38305 0
+9.4278 -0.37992 0
+9.462 -0.35743 0
+9.4946 -0.31726 0
+9.5235 -0.26101 0
+9.5472 -0.19007 0
+9.5645 -0.10533 0
+9.5747 -0.007025 0
+9.5776 0.10554 0
+9.5731 0.23417 0
+9.5613 0.382 0
+9.5421 0.55367 0
+9.5151 0.75541 0
+9.4793 0.9951 0
+9.4329 1.2822 0
+9.3736 1.6276 0
+9.2983 2.0434 0
+9.2031 2.5432 0
+9.0838 3.141 0
+8.936 3.8523 0
+8.7549 4.6935 0
+8.536 5.6823 0
+8.2753 6.8383 0
+7.9688 8.1832 0
+7.6129 9.741 0
+7.2042 11.538 0
+6.7396 13.603 0
+6.2156 15.965 0
+5.6288 18.652 0
+4.9753 21.688 0
+4.2513 25.091 0
+3.453 28.869 0
+2.5777 33.017 0
+1.6246 37.516 0
+0.59632 42.331 0
+-0.50006 47.418 0
+-1.6511 52.722 0
+-2.8361 58.193 0
+-4.0269 63.796 0
+-5.189 69.521 0
+-6.2845 75.403 0
+-7.277 81.525 0
+-8.1393 88.028 0
+-8.8624 95.099 0
+-9.4663 102.95 0
+-10.01 111.79 0
+-10.6 121.75 0
+-11.395 132.86 0
+-12.605 144.96 0
+-14.477 157.63 0
+-17.282 170.22 0
+-21.283 181.81 0
+-26.7 191.29 0
+-33.671 197.52 0
+-42.221 199.46 0
+-52.228 196.49 0
+-63.425 188.61 0
+-75.41 176.74 0
+-87.702 162.89 0
+-99.814 150.27 0
+-111.36 143.17 0
+-122.18 146.69 0
+-132.42 166.11 0
+-142.66 206.15 0
+-153.89 269.89 0
+-167.45 357.73 0
+-184.87 466.37 0
+-207.61 588.26 0
+-236.72 711.74 0
+-272.48 822.1 0
+-314.14 903.79 0
+-359.77 943.65 0
+-406.4 934.55 0
+-450.41 878.74 0
+-488.17 789.7 0
+-516.88 691.51 0
+-535.28 614.99 0
+-544.03 590.98 0
+-545.62 641.87 0
+-543.5 773.81 0
+-540.86 972.02 0
+-539.11 1201.5 0
+-536.95 1413.2 0
+-530.31 1555.3 0
+-513.59 1584 0
+-482.1 1472 0
+-434.75 1210.2 0
+-375.98 803.01 0
+-315.85 258.93 0
+-267.39 -416.17 0
+-241.96 -1220.2 0
+-243.78 -2147.4 0
+-265.93 -3175.7 0
+-289.91 -4256.6 0
+-289.49 -5315.4 0
+-238.04 -6265.5 0
+-116.31 -7035.7 0
+82.885 -7596.4 0
+355.96 -7972 0
+696.53 -8228.1 0
+1107 -8432.4 0
+1608.9 -8605.2 0
+2244.8 -8683.1 0
+3070.1 -8520.1 0
+4133.6 -7936.6 0
+5453.6 -6804.2 0
+6998 -5130.4 0
+8678.4 -3100 0
+10359 -1042.6 0
+11884 668.98 0
+13105 1750.2 0
+13914 2100.6 0
+14261 1813.1 0
+14154 1092.5 0
+13655 132.58 0
+12870 -965.69 0
+11935 -2174 0
+11005 -3422.1 0
+10238 -4474.2 0
+9777.2 -4911 0
+9713.5 -4281.8 0
+10059 -2381.6 0
+10726 504.58 0
+11539 3563.2 0
+12274 5704.2 0
+12729 6014.5 0
+12784 4189 0
+12434 697.51 0
+11777 -3414 0
+10954 -6986.5 0
+10078 -9226.3 0
+9188.3 -9956 0
+8262 -9547.5 0
+7264.5 -8633 0
+6212.9 -7792.7 0
+5204.9 -7365.2 0
+4392.8 -7401.5 0
+3917.3 -7685.2 0
+3840.8 -7759.9 0
+4123.1 -7003.4 0
+4651.7 -4838.9 0
+5302.4 -1092.8 0
+5989.9 3677.2 0
+6669.8 8171.3 0
+7293.6 10830 0
+7745.9 10660 0
+7815.1 7918.2 0
+7230.9 4146.5 0
+5773.1 1405.2 0
+3406.9 1104.7 0
+380.43 3188.1 0
+-2778.2 6240.1 0
+-5390.2 8478.8 0
+-6845.5 8959.7 0
+-6828.5 8152.4 0
+-5449.2 7499.1 0
+-3213.6 8298.2 0
+-838.29 10729 0
+1013.6 13697 0
+1961.5 15551 0
+2003.6 15117 0
+1451.1 12336 0
+741.09 8174 0
+223.29 4018 0
+17.447 1059.1 0
+0 0 0
+0 0 0
+-0.005779 0.16754 0
+-0.090224 1.557 0
+-0.41393 4.5492 0
+-1.2387 9.3639 0
+-2.9076 15.929 0
+-5.7606 23.661 0
+-10.016 31.458 0
+-15.664 37.934 0
+-22.417 41.818 0
+-29.738 42.334 0
+-36.945 39.42 0
+-43.355 33.7 0
+-48.435 26.245 0
+-51.897 18.247 0
+-53.747 10.746 0
+-54.244 4.4924 0
+-53.827 -0.031014 0
+-53.008 -2.5126 0
+-52.268 -2.7279 0
+-51.988 -0.537 0
+-52.422 4.0368 0
+-53.704 10.703 0
+-55.889 18.852 0
+-58.998 27.613 0
+-63.056 36.008 0
+-68.095 43.153 0
+-74.133 48.418 0
+-81.131 51.484 0
+-88.935 52.286 0
+-97.251 50.89 0
+-105.63 47.358 0
+-113.52 41.695 0
+-120.32 33.877 0
+-125.49 23.96 0
+-128.6 12.192 0
+-129.42 -0.91201 0
+-127.94 -14.596 0
+-124.34 -27.966 0
+-118.94 -40.141 0
+-112.15 -50.409 0
+-104.37 -58.32 0
+-95.961 -63.716 0
+-87.21 -66.695 0
+-78.306 -67.543 0
+-69.37 -66.648 0
+-60.485 -64.435 0
+-51.727 -61.31 0
+-43.189 -57.626 0
+-34.991 -53.649 0
+-27.275 -49.543 0
+-20.178 -45.367 0
+-13.816 -41.102 0
+-8.2531 -36.695 0
+-3.4977 -32.12 0
+0.50067 -27.428 0
+3.8349 -22.775 0
+6.6179 -18.399 0
+8.958 -14.572 0
+10.938 -11.518 0
+12.606 -9.3471 0
+13.971 -8.0133 0
+15.015 -7.3201 0
+15.707 -6.9713 0
+16.024 -6.649 0
+15.962 -6.0949 0
+15.549 -5.1709 0
+14.848 -3.8807 0
+13.952 -2.3517 0
+12.971 -0.78304 0
+12.018 0.61872 0
+11.196 1.6995 0
+10.586 2.3955 0
+10.237 2.741 0
+10.167 2.8493 0
+10.363 2.872 0
+10.788 2.9539 0
+11.394 3.1921 0
+12.124 3.6122 0
+12.922 4.1643 0
+13.739 4.7385 0
+14.536 5.1943 0
+15.281 5.3949 0
+15.952 5.2397 0
+16.532 4.6866 0
+17.01 3.7602 0
+17.379 2.5465 0
+17.633 1.1758 0
+17.77 -0.20167 0
+17.787 -1.4406 0
+17.686 -2.4229 0
+17.472 -3.0721 0
+17.154 -3.359 0
+16.743 -3.2988 0
+16.255 -2.942 0
+15.708 -2.3611 0
+15.123 -1.6366 0
+14.521 -0.84544 0
+13.922 -0.051633 0
+13.346 0.69783 0
+12.807 1.374 0
+12.319 1.9636 0
+11.89 2.4653 0
+11.524 2.8852 0
+11.222 3.2325 0
+10.98 3.5167 0
+10.794 3.7457 0
+10.657 3.9251 0
+10.56 4.0585 0
+10.495 4.1482 0
+10.454 4.196 0
+10.43 4.2038 0
+10.414 4.1741 0
+10.402 4.1101 0
+10.39 4.0155 0
+10.372 3.8939 0
+10.347 3.7489 0
+10.312 3.5837 0
+10.268 3.4009 0
+10.213 3.2028 0
+10.149 2.9914 0
+10.076 2.7685 0
+9.9953 2.5361 0
+9.9092 2.2964 0
+9.8195 2.0518 0
+9.7282 1.805 0
+9.6377 1.5587 0
+9.5501 1.3159 0
+9.4676 1.0794 0
+9.3922 0.85221 0
+9.3256 0.63705 0
+9.2693 0.43658 0
+9.2246 0.25329 0
+9.192 0.089475 0
+9.1718 -0.052907 0
+9.1637 -0.17227 0
+9.1667 -0.26751 0
+9.1795 -0.33806 0
+9.2002 -0.38398 0
+9.2267 -0.40588 0
+9.2564 -0.4049 0
+9.287 -0.38262 0
+9.3163 -0.34086 0
+9.3422 -0.28154 0
+9.3633 -0.20637 0
+9.3785 -0.11668 0
+9.3873 -0.013084 0
+9.3898 0.10476 0
+9.3863 0.23844 0
+9.3771 0.39102 0
+9.3627 0.56725 0
+9.3433 0.77362 0
+9.3185 1.0184 0
+9.2877 1.3115 0
+9.2495 1.6643 0
+9.2018 2.0896 0
+9.1423 2.6009 0
+9.0685 3.2129 0
+8.9775 3.9408 0
+8.867 4.8009 0
+8.7349 5.8107 0
+8.5798 6.9892 0
+8.4011 8.3577 0
+8.1988 9.9396 0
+7.9739 11.761 0
+7.7278 13.85 0
+7.4625 16.235 0
+7.1806 18.944 0
+6.8847 22.001 0
+6.578 25.424 0
+6.2641 29.221 0
+5.9477 33.385 0
+5.6352 37.895 0
+5.336 42.716 0
+5.0635 47.797 0
+4.8363 53.08 0
+4.6794 58.51 0
+4.624 64.046 0
+4.7067 69.674 0
+4.9668 75.428 0
+5.4407 81.394 0
+6.1553 87.722 0
+7.1174 94.616 0
+8.3031 102.32 0
+9.6452 111.07 0
+11.023 121.04 0
+12.257 132.32 0
+13.101 144.79 0
+13.258 158.07 0
+12.39 171.52 0
+10.144 184.24 0
+6.194 195.08 0
+0.27722 202.83 0
+-7.7604 206.38 0
+-17.928 204.95 0
+-30.069 198.44 0
+-43.862 187.63 0
+-58.855 174.46 0
+-74.53 162.1 0
+-90.4 154.92 0
+-106.13 158.16 0
+-121.65 177.37 0
+-137.28 217.56 0
+-153.72 282.19 0
+-172.12 371.91 0
+-193.88 483.62 0
+-220.45 609.73 0
+-253.05 738.27 0
+-292.32 853.98 0
+-338 940.51 0
+-388.77 983.8 0
+-442.24 975.93 0
+-495.27 918.63 0
+-544.49 825.4 0
+-587.02 720.91 0
+-621.15 637.13 0
+-646.76 606.27 0
+-665.26 651.91 0
+-678.86 780.68 0
+-689.41 977.22 0
+-696.91 1204.8 0
+-698.52 1412.1 0
+-688.51 1545 0
+-659.56 1558.8 0
+-605.46 1427.9 0
+-524.43 1147.2 0
+-421.89 726.75 0
+-311.29 180.98 0
+-212.18 -480.77 0
+-145.22 -1257.3 0
+-125.69 -2148.7 0
+-157.44 -3143 0
+-229.97 -4202.9 0
+-320.03 -5261.5 0
+-397.85 -6235.1 0
+-435.46 -7048 0
+-413.69 -7662.1 0
+-324.12 -8093.5 0
+-164.34 -8405.4 0
+72.011 -8672.1 0
+405.91 -8928.1 0
+878.28 -9126.4 0
+1545.1 -9130.3 0
+2461.6 -8754 0
+3658.1 -7843.2 0
+5118 -6363.2 0
+6764.4 -4450.3 0
+8463.6 -2393.6 0
+10046 -545.71 0
+11340 801.18 0
+12206 1512.7 0
+12566 1630.6 0
+12412 1303.1 0
+11811 672.93 0
+10881 -197.91 0
+9780.6 -1306.6 0
+8687.8 -2595.3 0
+7781.5 -3826.7 0
+7220.9 -4560.5 0
+7116.7 -4300.8 0
+7498.3 -2771.2 0
+8290 -171.01 0
+9311.2 2763.5 0
+10315 4980.4 0
+11056 5545.7 0
+11374 4074.8 0
+11237 930.57 0
+10740 -2930 0
+10045 -6379.8 0
+9291 -8592 0
+8536.2 -9319.1 0
+7751.4 -8874.1 0
+6874.8 -7881.9 0
+5884.5 -6969.1 0
+4840.8 -6542 0
+3870.9 -6693 0
+3107.4 -7191.6 0
+2626.4 -7521.8 0
+2426 -6995 0
+2456.1 -5001.8 0
+2671.1 -1379.8 0
+3057.6 3283.3 0
+3611.4 7682.4 0
+4274 10306 0
+4873.8 10252 0
+5123.3 7859.2 0
+4694.9 4687.4 0
+3355 2700.4 0
+1100.5 3107.6 0
+-1767.8 5605.2 0
+-4682.1 8578.5 0
+-6958.3 10184 0
+-8015.9 9601.7 0
+-7585.9 7583.9 0
+-5822.7 5923.7 0
+-3264.4 6206.9 0
+-648.52 8727.4 0
+1347.7 12289 0
+2338.3 14972 0
+2333.2 15282 0
+1677.1 12924 0
+854.62 8800.7 0
+257.43 4415 0
+20.12 1178.9 0
+0 0 0
+0 0 0
+-0.006351 0.17741 0
+-0.098481 1.6588 0
+-0.44796 4.8959 0
+-1.3299 10.194 0
+-3.1013 17.536 0
+-6.1134 26.312 0
+-10.589 35.292 0
+-16.514 42.887 0
+-23.586 47.595 0
+-31.25 48.451 0
+-38.801 45.303 0
+-45.54 38.807 0
+-50.916 30.181 0
+-54.636 20.835 0
+-56.697 12.041 0
+-57.356 4.7485 0
+-57.05 -0.43895 0
+-56.288 -3.1732 0
+-55.548 -3.27 0
+-55.216 -0.67786 0
+-55.549 4.4778 0
+-56.694 11.821 0
+-58.725 20.694 0
+-61.693 30.21 0
+-65.652 39.401 0
+-70.665 47.386 0
+-76.769 53.508 0
+-83.926 57.379 0
+-91.964 58.824 0
+-100.55 57.775 0
+-109.18 54.176 0
+-117.26 47.955 0
+-124.14 39.084 0
+-129.29 27.689 0
+-132.28 14.156 0
+-132.93 -0.82941 0
+-131.27 -16.336 0
+-127.53 -31.324 0
+-122.05 -44.823 0
+-115.25 -56.088 0
+-107.5 -64.689 0
+-99.122 -70.526 0
+-90.355 -73.769 0
+-81.347 -74.766 0
+-72.196 -73.945 0
+-62.983 -71.742 0
+-53.802 -68.552 0
+-44.782 -64.7 0
+-36.09 -60.424 0
+-27.912 -55.879 0
+-20.423 -51.134 0
+-13.762 -46.204 0
+-8.0032 -41.088 0
+-3.1463 -35.816 0
+0.8754 -30.489 0
+4.1758 -25.294 0
+6.8885 -20.481 0
+9.1381 -16.309 0
+11.019 -12.977 0
+12.586 -10.561 0
+13.853 -8.9869 0
+14.809 -8.0381 0
+15.431 -7.4138 0
+15.705 -6.8047 0
+15.637 -5.9721 0
+15.261 -4.8024 0
+14.641 -3.3233 0
+13.864 -1.6797 0
+13.027 -0.07919 0
+12.229 1.2739 0
+11.555 2.2374 0
+11.069 2.7663 0
+10.809 2.9175 0
+10.787 2.8262 0
+10.993 2.6633 0
+11.397 2.5875 0
+11.958 2.7041 0
+12.631 3.0415 0
+13.372 3.5485 0
+14.139 4.1112 0
+14.897 4.5834 0
+15.616 4.8234 0
+16.272 4.7258 0
+16.844 4.2446 0
+17.316 3.4013 0
+17.676 2.2795 0
+17.914 1.0069 0
+18.023 -0.26851 0
+18 -1.4044 0
+17.849 -2.2859 0
+17.573 -2.8398 0
+17.185 -3.0402 0
+16.699 -2.9057 0
+16.133 -2.4894 0
+15.508 -1.8656 0
+14.846 -1.116 0
+14.17 -0.31739 0
+13.501 0.46705 0
+12.859 1.1922 0
+12.26 1.8317 0
+11.717 2.3752 0
+11.238 2.8247 0
+10.83 3.1894 0
+10.492 3.4815 0
+10.223 3.713 0
+10.018 3.8937 0
+9.8691 4.0308 0
+9.7692 4.1286 0
+9.709 4.1898 0
+9.6795 4.2161 0
+9.6723 4.2089 0
+9.6796 4.1701 0
+9.6944 4.1021 0
+9.7112 4.0076 0
+9.7252 3.8894 0
+9.7331 3.7503 0
+9.7324 3.5925 0
+9.7216 3.418 0
+9.7001 3.2285 0
+9.6679 3.0254 0
+9.6257 2.8102 0
+9.5745 2.5844 0
+9.5158 2.3501 0
+9.4513 2.1093 0
+9.3829 1.8648 0
+9.3125 1.6191 0
+9.2423 1.3752 0
+9.1743 1.136 0
+9.1106 0.90446 0
+9.053 0.68352 0
+9.0031 0.47604 0
+8.9622 0.28477 0
+8.9315 0.11233 0
+8.9113 -0.038924 0
+8.9017 -0.16698 0
+8.9021 -0.2703 0
+8.9114 -0.3479 0
+8.928 -0.39946 0
+8.9501 -0.42532 0
+8.9754 -0.42649 0
+9.0017 -0.40453 0
+9.0269 -0.36141 0
+9.0491 -0.2993 0
+9.0669 -0.22031 0
+9.0796 -0.12619 0
+9.0867 -0.017982 0
+9.0884 0.10427 0
+9.0854 0.24188 0
+9.0785 0.39778 0
+9.0686 0.57673 0
+9.0564 0.78537 0
+9.0423 1.0323 0
+9.0265 1.3277 0
+9.0087 1.6834 0
+8.988 2.1125 0
+8.9636 2.6287 0
+8.9344 3.2467 0
+8.8997 3.9815 0
+8.8591 4.8492 0
+8.8129 5.8666 0
+8.7624 7.0521 0
+8.71 8.426 0
+8.6592 10.011 0
+8.6146 11.832 0
+8.5821 13.917 0
+8.5687 16.293 0
+8.5824 18.987 0
+8.6318 22.024 0
+8.7264 25.42 0
+8.8767 29.183 0
+9.0942 33.305 0
+9.3919 37.764 0
+9.7851 42.521 0
+10.292 47.523 0
+10.937 52.71 0
+11.746 58.021 0
+12.752 63.41 0
+13.992 68.862 0
+15.504 74.409 0
+17.322 80.141 0
+19.47 86.219 0
+21.949 92.865 0
+24.73 100.35 0
+27.737 108.95 0
+30.835 118.9 0
+33.822 130.32 0
+36.424 143.15 0
+38.296 157.08 0
+39.039 171.5 0
+38.218 185.51 0
+35.405 197.97 0
+30.217 207.6 0
+22.368 213.2 0
+11.715 213.89 0
+-1.7133 209.41 0
+-17.696 200.39 0
+-35.844 188.66 0
+-55.648 177.32 0
+-76.568 170.74 0
+-98.146 174.27 0
+-120.14 193.66 0
+-142.63 234.23 0
+-166.12 299.75 0
+-191.52 391.23 0
+-220.1 505.78 0
+-253.3 635.9 0
+-292.46 769.44 0
+-338.49 890.69 0
+-391.55 982.65 0
+-450.84 1030.4 0
+-514.48 1025.2 0
+-579.76 968.17 0
+-643.48 872.62 0
+-702.68 763.58 0
+-755.19 673.84 0
+-800.16 636.78 0
+-838.02 676.99 0
+-869.95 801.52 0
+-896.7 994.39 0
+-917.17 1217.1 0
+-927.34 1415.9 0
+-920.04 1534.3 0
+-886.23 1526.6 0
+-817.83 1368.6 0
+-711.5 1059.8 0
+-572.24 617.31 0
+-415.23 63.301 0
+-264.66 -586.85 0
+-149.06 -1330.3 0
+-94.074 -2171.7 0
+-114.68 -3109.1 0
+-209.8 -4118.1 0
+-361.46 -5144.3 0
+-539.19 -6111.3 0
+-708.37 -6943.7 0
+-838.88 -7597.4 0
+-910.35 -8080.5 0
+-911.05 -8450.5 0
+-830.53 -8783.9 0
+-649.28 -9125.6 0
+-331.03 -9443.5 0
+176.71 -9612.2 0
+930.89 -9444.8 0
+1971.6 -8767 0
+3297.9 -7505.3 0
+4849.1 -5745.8 0
+6501.4 -3729.8 0
+8083.1 -1779 0
+9406.6 -183.04 0
+10309 894.53 0
+10687 1441.4 0
+10520 1539.7 0
+9871.9 1269.6 0
+8872.3 645.48 0
+7694.4 -358.18 0
+6528.9 -1693.7 0
+5562 -3117.8 0
+4956.9 -4168.1 0
+4829.4 -4304.6 0
+5218.2 -3182.1 0
+6058.3 -912.16 0
+7174.5 1853.7 0
+8313.5 4113.9 0
+9213.7 4921.7 0
+9691.6 3813.6 0
+9703.3 1035 0
+9347.1 -2561.3 0
+8799.9 -5891.3 0
+8219.9 -8094.2 0
+7669.4 -8838.9 0
+7101.5 -8361 0
+6414.9 -7261.5 0
+5538.2 -6208.3 0
+4487.9 -5682.1 0
+3365.9 -5832 0
+2305.7 -6434.1 0
+1413.2 -6934.1 0
+741.65 -6597.4 0
+314.06 -4795.1 0
+158.9 -1376.7 0
+317.86 3057.4 0
+804.35 7229.2 0
+1535.1 9710.7 0
+2286.1 9710.3 0
+2719.2 7650.4 0
+2485 5078.2 0
+1366.9 3830.1 0
+-599.36 4897.5 0
+-3086.2 7740 0
+-5540.8 10575 0
+-7341 11534 0
+-7991.3 9931.8 0
+-7291.6 6793.8 0
+-5418.2 4230.1 0
+-2879.7 4082.3 0
+-353.79 6742.6 0
+1540.7 10918 0
+2451.7 14434 0
+2396.1 15489 0
+1710.3 13553 0
+869.64 9460.1 0
+261.86 4831.5 0
+20.469 1304.6 0
+0 0 0
+0 0 0
+-0.007685 0.18909 0
+-0.11688 1.7768 0
+-0.51818 5.2864 0
+-1.5009 11.106 0
+-3.4285 19.268 0
+-6.6496 29.129 0
+-11.375 39.328 0
+-17.571 48.063 0
+-24.916 53.6 0
+-32.838 54.789 0
+-40.624 51.391 0
+-47.573 44.101 0
+-53.142 34.287 0
+-57.041 23.578 0
+-59.27 13.476 0
+-60.081 5.1226 0
+-59.897 -0.75886 0
+-59.213 -3.7861 0
+-58.492 -3.813 0
+-58.111 -0.87176 0
+-58.327 4.817 0
+-59.299 12.8 0
+-61.123 22.376 0
+-63.876 32.653 0
+-67.643 42.669 0
+-72.514 51.543 0
+-78.545 58.585 0
+-85.698 63.321 0
+-93.788 65.452 0
+-102.45 64.765 0
+-111.15 61.079 0
+-119.24 54.252 0
+-126.09 44.265 0
+-131.12 31.335 0
+-133.96 16 0
+-134.46 -0.86814 0
+-132.71 -18.163 0
+-128.94 -34.709 0
+-123.54 -49.463 0
+-116.88 -61.668 0
+-109.32 -70.934 0
+-101.13 -77.228 0
+-92.487 -80.791 0
+-83.497 -82.022 0
+-74.239 -81.375 0
+-64.795 -79.278 0
+-55.285 -76.094 0
+-45.879 -72.11 0
+-36.79 -67.537 0
+-28.245 -62.518 0
+-20.456 -57.145 0
+-13.576 -51.48 0
+-7.6831 -45.583 0
+-2.7679 -39.552 0
+1.2523 -33.541 0
+4.5087 -27.772 0
+7.1494 -22.5 0
+9.3094 -17.97 0
+11.09 -14.352 0
+12.549 -11.69 0
+13.71 -9.8771 0
+14.569 -8.6828 0
+15.117 -7.8026 0
+15.353 -6.9369 0
+15.294 -5.8645 0
+14.984 -4.492 0
+14.484 -2.8645 0
+13.87 -1.138 0
+13.224 0.47668 0
+12.622 1.7806 0
+12.125 2.6432 0
+11.78 3.0352 0
+11.611 3.0306 0
+11.628 2.7807 0
+11.82 2.4698 0
+12.167 2.266 0
+12.644 2.2804 0
+13.218 2.5438 0
+13.858 3.0048 0
+14.533 3.5479 0
+15.213 4.0249 0
+15.871 4.2915 0
+16.481 4.24 0
+17.021 3.8222 0
+17.47 3.0574 0
+17.811 2.0265 0
+18.028 0.85439 0
+18.114 -0.31453 0
+18.063 -1.3418 0
+17.877 -2.1167 0
+17.562 -2.5701 0
+17.13 -2.6801 0
+16.597 -2.4686 0
+15.981 -1.9912 0
+15.305 -1.324 0
+14.592 -0.54935 0
+13.864 0.25611 0
+13.144 1.0304 0
+12.451 1.7302 0
+11.801 2.3317 0
+11.208 2.8274 0
+10.681 3.2224 0
+10.227 3.5288 0
+9.8474 3.7618 0
+9.5411 3.936 0
+9.3043 4.0632 0
+9.1308 4.1523 0
+9.013 4.2087 0
+8.9419 4.2357 0
+8.9085 4.235 0
+8.9037 4.2079 0
+8.919 4.1558 0
+8.9469 4.0802 0
+8.9808 3.9829 0
+9.0153 3.8659 0
+9.0462 3.7308 0
+9.0705 3.5793 0
+9.086 3.4124 0
+9.0917 3.2312 0
+9.0871 3.0364 0
+9.0724 2.8292 0
+9.0481 2.6108 0
+9.0155 2.3828 0
+8.9757 2.1473 0
+8.9303 1.9066 0
+8.8809 1.6633 0
+8.8294 1.4203 0
+8.7776 1.1805 0
+8.7274 0.94681 0
+8.6805 0.72229 0
+8.6386 0.50993 0
+8.6032 0.31268 0
+8.5755 0.13343 0
+8.5562 -0.025116 0
+8.5457 -0.16054 0
+8.5436 -0.27087 0
+8.5494 -0.35472 0
+8.5617 -0.41138 0
+8.5789 -0.44091 0
+8.5991 -0.44413 0
+8.6204 -0.42257 0
+8.6407 -0.37832 0
+8.6586 -0.3138 0
+8.6726 -0.23148 0
+8.6823 -0.13354 0
+8.6873 -0.021481 0
+8.6881 0.10425 0
+8.6856 0.24464 0
+8.6808 0.40243 0
+8.6751 0.5823 0
+8.6698 0.79096 0
+8.6659 1.0371 0
+8.6645 1.3314 0
+8.6661 1.6856 0
+8.6713 2.113 0
+8.6805 2.6275 0
+8.6944 3.2436 0
+8.7139 3.976 0
+8.7407 4.8401 0
+8.7774 5.8521 0
+8.8276 7.0295 0
+8.8965 8.3916 0
+8.9905 9.9598 0
+9.1177 11.758 0
+9.2879 13.812 0
+9.5122 16.15 0
+9.8034 18.796 0
+10.175 21.774 0
+10.643 25.101 0
+11.224 28.781 0
+11.934 32.808 0
+12.792 37.158 0
+13.82 41.79 0
+15.039 46.65 0
+16.475 51.673 0
+18.157 56.796 0
+20.117 61.971 0
+22.391 67.181 0
+25.013 72.456 0
+28.011 77.894 0
+31.405 83.666 0
+35.19 90.013 0
+39.329 97.235 0
+43.737 105.65 0
+48.268 115.54 0
+52.703 127.09 0
+56.742 140.3 0
+60.003 154.92 0
+62.034 170.4 0
+62.329 185.87 0
+60.367 200.18 0
+55.655 212.03 0
+47.776 220.13 0
+36.448 223.49 0
+21.563 221.69 0
+3.2134 215.22 0
+-18.307 205.74 0
+-42.543 196.25 0
+-68.957 191.09 0
+-97.031 195.64 0
+-126.4 215.84 0
+-156.99 257.25 0
+-189.09 323.97 0
+-223.43 417.36 0
+-261.14 534.81 0
+-303.57 668.96 0
+-352.12 807.6 0
+-407.88 934.7 0
+-471.3 1032.7 0
+-541.96 1085.8 0
+-618.37 1084.5 0
+-698.09 1029.3 0
+-778.04 932.93 0
+-855.06 820.66 0
+-926.5 725.89 0
+-990.8 682.91 0
+-1047.6 717.27 0
+-1097.1 836.43 0
+-1139.5 1023.9 0
+-1173 1239.5 0
+-1193.2 1426.9 0
+-1192 1527 0
+-1159.2 1492.8 0
+-1085 1301.3 0
+-964.02 956.47 0
+-799.66 483.06 0
+-606.91 -87.331 0
+-412.2 -731.15 0
+-249.4 -1441.4 0
+-152.42 -2225 0
+-146.31 -3089.2 0
+-239.7 -4023.7 0
+-421.49 -4989.6 0
+-663.13 -5922.1 0
+-926.17 -6751 0
+-1172 -7429.5 0
+-1369.6 -7958 0
+-1498.7 -8386.3 0
+-1544.9 -8788.6 0
+-1490.8 -9215.5 0
+-1307 -9646.9 0
+-948.06 -9969.8 0
+-359.15 -10001 0
+506.09 -9553.8 0
+1661.5 -8521.2 0
+3066.1 -6941.2 0
+4612.9 -5002.6 0
+6138 -2987.2 0
+7448.9 -1172.2 0
+8367.4 256.77 0
+8772.7 1233.1 0
+8630.8 1767 0
+8000.8 1867.1 0
+7017.7 1493.7 0
+5861.1 592.23 0
+4723.1 -795.1 0
+3784.1 -2413.5 0
+3196.4 -3775.6 0
+3067.6 -4301 0
+3436.9 -3582.1 0
+4249.3 -1648.4 0
+5344.8 933.36 0
+6481.7 3216.7 0
+7403.1 4249.2 0
+7924.1 3491.4 0
+8000.4 1067.3 0
+7736 -2281.7 0
+7319.2 -5520 0
+6917.4 -7749.3 0
+6588.9 -8542 0
+6261.7 -8037.9 0
+5790.4 -6799.7 0
+5050.5 -5532.6 0
+4013 -4800.5 0
+2757.3 -4829.5 0
+1426.8 -5427.8 0
+169.58 -6028.3 0
+-893.59 -5867.8 0
+-1665 -4302.6 0
+-2054.6 -1182.1 0
+-1991.6 2907.4 0
+-1474 6747.6 0
+-628.15 9018.2 0
+272.46 9043.5 0
+863.55 7306.5 0
+811.63 5310.6 0
+-50.344 4740.1 0
+-1636.4 6371.7 0
+-3610.6 9463.6 0
+-5479.4 12118 0
+-6737.9 12477 0
+-7021.1 9998.6 0
+-6214.9 5935.9 0
+-4496.9 2652.4 0
+-2290.8 2186.5 0
+-142.79 5004.5 0
+1450.1 9732.6 0
+2202.8 13985 0
+2130.6 15698 0
+1517.4 14135 0
+772.02 10067 0
+232.75 5214.9 0
+18.211 1420.4 0
+0 0 0
+0 0 0
+-0.009843 0.20389 0
+-0.1462 1.9219 0
+-0.62727 5.7466 0
+-1.7574 12.14 0
+-3.8987 21.171 0
+-7.382 32.154 0
+-12.389 43.584 0
+-18.853 53.45 0
+-26.426 59.789 0
+-34.522 61.274 0
+-42.433 57.594 0
+-49.477 49.49 0
+-55.132 38.484 0
+-59.13 26.419 0
+-61.479 15.019 0
+-62.423 5.6068 0
+-62.365 -0.98354 0
+-61.771 -4.3389 0
+-61.079 -4.3488 0
+-60.647 -1.1213 0
+-60.73 5.0376 0
+-61.495 13.607 0
+-63.055 23.852 0
+-65.514 34.875 0
+-68.984 45.724 0
+-73.576 55.513 0
+-79.361 63.51 0
+-86.306 69.149 0
+-94.22 71.992 0
+-102.72 71.677 0
+-111.26 67.896 0
+-119.17 60.443 0
+-125.82 49.317 0
+-130.66 34.84 0
+-133.33 17.719 0
+-133.73 -0.98537 0
+-131.97 -19.992 0
+-128.33 -38.005 0
+-123.16 -53.926 0
+-116.83 -67.008 0
+-109.64 -76.917 0
+-101.8 -83.693 0
+-93.424 -87.643 0
+-84.592 -89.208 0
+-75.356 -88.842 0
+-65.809 -86.947 0
+-56.099 -83.839 0
+-46.439 -79.759 0
+-37.087 -74.885 0
+-28.31 -69.362 0
+-20.342 -63.312 0
+-13.348 -56.855 0
+-7.4002 -50.127 0
+-2.4779 -43.295 0
+1.5164 -36.572 0
+4.7265 -30.208 0
+7.3076 -24.465 0
+9.397 -19.568 0
+11.095 -15.656 0
+12.463 -12.739 0
+13.526 -10.687 0
+14.294 -9.2552 0
+14.772 -8.1399 0
+14.976 -7.0515 0
+14.939 -5.7837 0
+14.711 -4.2569 0
+14.352 -2.5259 0
+13.926 -0.75001 0
+13.493 0.8631 0
+13.102 2.1223 0
+12.791 2.9076 0
+12.586 3.2012 0
+12.5 3.0879 0
+12.535 2.7277 0
+12.69 2.3118 0
+12.955 2.0132 0
+13.319 1.9463 0
+13.766 2.1443 0
+14.278 2.5574 0
+14.837 3.0713 0
+15.417 3.5388 0
+15.996 3.8163 0
+16.547 3.7962 0
+17.044 3.4298 0
+17.462 2.7349 0
+17.781 1.7899 0
+17.981 0.71613 0
+18.051 -0.34623 0
+17.984 -1.2635 0
+17.781 -1.9297 0
+17.447 -2.2807 0
+16.994 -2.2985 0
+16.438 -2.0084 0
+15.798 -1.4687 0
+15.097 -0.7568 0
+14.357 0.044237 0
+13.599 0.85827 0
+12.845 1.6244 0
+12.115 2.301 0
+11.425 2.8665 0
+10.789 3.3161 0
+10.217 3.6574 0
+9.7156 3.9054 0
+9.2895 4.0781 0
+8.9389 4.1925 0
+8.6613 4.2628 0
+8.4518 4.2994 0
+8.3037 4.3095 0
+8.2086 4.2969 0
+8.1578 4.264 0
+8.142 4.212 0
+8.1524 4.1418 0
+8.1809 4.0544 0
+8.2203 3.9507 0
+8.2647 3.8316 0
+8.3091 3.6981 0
+8.35 3.5507 0
+8.3847 3.3897 0
+8.4115 3.2154 0
+8.4295 3.0282 0
+8.4385 2.8285 0
+8.4384 2.6173 0
+8.4299 2.396 0
+8.4138 2.1663 0
+8.3911 1.9304 0
+8.363 1.6909 0
+8.3309 1.4505 0
+8.2963 1.2119 0
+8.2607 0.97816 0
+8.2258 0.75223 0
+8.1932 0.53717 0
+8.1643 0.33606 0
+8.1406 0.152 0
+8.1229 -0.012025 0
+8.1119 -0.15324 0
+8.1076 -0.2693 0
+8.1096 -0.35838 0
+8.1172 -0.41943 0
+8.129 -0.45218 0
+8.1435 -0.45728 0
+8.159 -0.43618 0
+8.1739 -0.39107 0
+8.1868 -0.32458 0
+8.1967 -0.23953 0
+8.203 -0.13851 0
+8.2059 -0.023463 0
+8.2057 0.10474 0
+8.2036 0.24674 0
+8.201 0.405 0
+8.1995 0.58407 0
+8.2008 0.79064 0
+8.2067 1.0335 0
+8.2188 1.3231 0
+8.2388 1.6717 0
+8.2684 2.0924 0
+8.3094 2.5989 0
+8.3638 3.2055 0
+8.4344 3.9265 0
+8.5248 4.7766 0
+8.6394 5.7711 0
+8.7841 6.9264 0
+8.9663 8.2606 0
+9.1951 9.7939 0
+9.4814 11.549 0
+9.8382 13.549 0
+10.28 15.822 0
+10.824 18.39 0
+11.488 21.276 0
+12.292 24.495 0
+13.257 28.052 0
+14.406 31.938 0
+15.762 36.128 0
+17.349 40.583 0
+19.192 45.244 0
+21.319 50.047 0
+23.759 54.927 0
+26.542 59.834 0
+29.699 64.749 0
+33.259 69.706 0
+37.246 74.807 0
+41.671 80.235 0
+46.523 86.252 0
+51.757 93.185 0
+57.282 101.39 0
+62.943 111.21 0
+68.51 122.89 0
+73.665 136.5 0
+78 151.86 0
+81.021 168.48 0
+82.166 185.54 0
+80.836 201.91 0
+76.434 216.26 0
+68.422 227.26 0
+56.377 233.79 0
+40.041 235.3 0
+19.358 232.12 0
+-5.5113 225.73 0
+-34.218 218.99 0
+-66.283 216.17 0
+-101.2 222.66 0
+-138.54 244.5 0
+-178.13 287.48 0
+-220.11 356 0
+-265.03 451.74 0
+-313.84 572.41 0
+-367.78 710.85 0
+-428.19 854.85 0
+-496.2 988.14 0
+-572.43 1092.6 0
+-656.65 1151.8 0
+-747.58 1155.4 0
+-842.89 1102.9 0
+-939.45 1006.7 0
+-1033.8 891.93 0
+-1122.7 792.31 0
+-1203.9 743.02 0
+-1276.2 770.5 0
+-1339.3 882.78 0
+-1393 1063.1 0
+-1435.8 1269.7 0
+-1463.4 1444.1 0
+-1468.1 1524.1 0
+-1439.3 1461.2 0
+-1366.2 1232.6 0
+-1241.4 846.54 0
+-1066.1 335.3 0
+-853.03 -259.49 0
+-628.18 -904.38 0
+-427.38 -1586 0
+-289.54 -2311 0
+-247.28 -3094.2 0
+-317.97 -3939.3 0
+-498.13 -4824.4 0
+-763.63 -5700 0
+-1075.7 -6505 0
+-1390.9 -7193.2 0
+-1670.8 -7758.8 0
+-1888.2 -8242.7 0
+-2025.7 -8712.6 0
+-2068.6 -9220.1 0
+-1995.4 -9753.7 0
+-1769.6 -10213 0
+-1342.1 -10422 0
+-663.19 -10190 0
+294.38 -9384.2 0
+1510.7 -7998.7 0
+2901.6 -6169 0
+4319.8 -4130.3 0
+5578.6 -2137.4 0
+6494.7 -390.46 0
+6935.8 992.98 0
+6856.9 1948.3 0
+6310.6 2407.9 0
+5429.9 2274 0
+4391.4 1464.8 0
+3377.5 22.981 0
+2549.9 -1778.2 0
+2037.2 -3424.1 0
+1927.2 -4298.3 0
+2252.6 -3941.9 0
+2968.8 -2314.3 0
+3938.9 94.816 0
+4949.1 2394.1 0
+5765.8 3630.6 0
+6219 3194.5 0
+6272.8 1092.1 0
+6036.8 -2047.8 0
+5705 -5238.1 0
+5446.9 -7539.1 0
+5312.8 -8416.2 0
+5206.5 -7898.5 0
+4941.5 -6497.6 0
+4344.4 -4951.7 0
+3343.3 -3917.1 0
+1998 -3718.3 0
+466.04 -4224.1 0
+-1055.5 -4880.7 0
+-2375.7 -4910.6 0
+-3327.7 -3651.3 0
+-3778.2 -929.15 0
+-3655.1 2717.7 0
+-2996.8 6161.9 0
+-1989.9 8204 0
+-955.05 8270.3 0
+-260.04 6868.9 0
+-189.88 5420.3 0
+-832.75 5438.2 0
+-2039.4 7504.1 0
+-3474.5 10730 0
+-4731.1 13170 0
+-5457.4 13021 0
+-5448.5 9873.7 0
+-4687.5 5152.7 0
+-3337.8 1384.2 0
+-1699.7 725.52 0
+-136.53 3684.6 0
+1022.6 8832.5 0
+1582.6 13639 0
+1547.6 15852 0
+1112.3 14580 0
+570.22 10537 0
+172.87 5514 0
+13.57 1511.2 0
+0 0 0
+0 0 0
+-0.01277 0.22308 0
+-0.18568 2.1046 0
+-0.77231 6.3017 0
+-2.0922 13.333 0
+-4.4978 23.289 0
+-8.2878 35.42 0
+-13.598 48.076 0
+-20.318 59.033 0
+-28.069 66.114 0
+-36.255 67.833 0
+-44.187 63.823 0
+-51.217 54.885 0
+-56.863 42.696 0
+-60.89 29.303 0
+-63.315 16.64 0
+-64.374 6.1906 0
+-64.439 -1.1114 0
+-63.939 -4.8267 0
+-63.276 -4.8763 0
+-62.785 -1.4344 0
+-62.712 5.12 0
+-63.23 14.21 0
+-64.47 25.071 0
+-66.553 36.805 0
+-69.612 48.469 0
+-73.773 59.169 0
+-79.119 68.125 0
+-85.626 74.674 0
+-93.103 78.238 0
+-101.17 78.302 0
+-109.29 74.433 0
+-116.81 66.363 0
+-123.1 54.122 0
+-127.65 38.144 0
+-130.13 19.31 0
+-130.48 -1.1298 0
+-128.82 -21.73 0
+-125.44 -41.088 0
+-120.68 -58.072 0
+-114.86 -71.963 0
+-108.22 -82.495 0
+-100.9 -89.786 0
+-92.966 -94.201 0
+-84.445 -96.202 0
+-75.384 -96.227 0
+-65.888 -94.629 0
+-56.139 -91.663 0
+-46.394 -87.516 0
+-36.952 -82.34 0
+-28.109 -76.286 0
+-20.116 -69.522 0
+-13.137 -62.238 0
+-7.2318 -54.65 0
+-2.3655 -47.004 0
+1.5736 -39.564 0
+4.7362 -32.608 0
+7.2769 -26.394 0
+9.3263 -21.127 0
+10.977 -16.912 0
+12.285 -13.73 0
+13.277 -11.433 0
+13.974 -9.7677 0
+14.397 -8.4353 0
+14.582 -7.1572 0
+14.578 -5.738 0
+14.441 -4.1055 0
+14.23 -2.3153 0
+13.994 -0.52134 0
+13.771 1.0778 0
+13.585 2.3012 0
+13.448 3.0379 0
+13.365 3.2765 0
+13.339 3.105 0
+13.371 2.6848 0
+13.466 2.2074 0
+13.629 1.8461 0
+13.863 1.7168 0
+14.171 1.8553 0
+14.549 2.2157 0
+14.986 2.6882 0
+15.466 3.1299 0
+15.965 3.401 0
+16.458 3.3964 0
+16.914 3.0682 0
+17.305 2.4331 0
+17.605 1.567 0
+17.795 0.58731 0
+17.857 -0.37086 0
+17.785 -1.1792 0
+17.578 -1.7374 0
+17.241 -1.9859 0
+16.785 -1.9115 0
+16.227 -1.5426 0
+15.584 -0.93958 0
+14.878 -0.18148 0
+14.13 0.64843 0
+13.36 1.4744 0
+12.589 2.2364 0
+11.835 2.8944 0
+11.115 3.4286 0
+10.443 3.8362 0
+9.8289 4.1273 0
+9.2825 4.3193 0
+8.8087 4.4326 0
+8.41 4.4867 0
+8.0856 4.4981 0
+7.8325 4.4793 0
+7.6452 4.4389 0
+7.5163 4.3822 0
+7.4376 4.3121 0
+7.4002 4.2301 0
+7.3951 4.137 0
+7.4139 4.0332 0
+7.449 3.9189 0
+7.4941 3.7942 0
+7.5437 3.6589 0
+7.5936 3.5126 0
+7.6408 3.3551 0
+7.6831 3.1857 0
+7.7191 3.0043 0
+7.7478 2.8109 0
+7.7689 2.6061 0
+7.7824 2.391 0
+7.7884 2.1672 0
+7.7875 1.9368 0
+7.7803 1.702 0
+7.7676 1.4654 0
+7.7504 1.2298 0
+7.7301 0.99789 0
+7.7079 0.77265 0
+7.6853 0.55707 0
+7.6637 0.3543 0
+7.6445 0.16755 0
+7.6288 1.7e-05 0
+7.6174 -0.14525 0
+7.6108 -0.26553 0
+7.6089 -0.35867 0
+7.6114 -0.42324 0
+7.6172 -0.45869 0
+7.6253 -0.46544 0
+7.6345 -0.44488 0
+7.6434 -0.39922 0
+7.651 -0.3313 0
+7.6564 -0.24423 0
+7.6593 -0.14098 0
+7.6599 -0.023916 0
+7.6589 0.10568 0
+7.6574 0.24807 0
+7.6571 0.40543 0
+7.6598 0.58208 0
+7.6675 0.78457 0
+7.6827 1.0216 0
+7.7077 1.3037 0
+7.745 1.6428 0
+7.7973 2.052 0
+7.8677 2.5448 0
+7.9596 3.135 0
+8.0774 3.8364 0
+8.2262 4.6628 0
+8.4123 5.6287 0
+8.6433 6.7493 0
+8.9287 8.0414 0
+9.2794 9.5236 0
+9.7088 11.217 0
+10.232 13.144 0
+10.867 15.328 0
+11.633 17.793 0
+12.553 20.558 0
+13.649 23.638 0
+14.946 27.036 0
+16.471 30.743 0
+18.251 34.735 0
+20.311 38.968 0
+22.68 43.387 0
+25.385 47.926 0
+28.452 52.519 0
+31.909 57.116 0
+35.782 61.701 0
+40.095 66.308 0
+44.862 71.048 0
+50.088 76.113 0
+55.755 81.784 0
+61.813 88.419 0
+68.166 96.417 0
+74.656 106.17 0
+81.047 117.98 0
+87.014 132 0
+92.135 148.13 0
+95.891 165.94 0
+97.677 184.68 0
+96.829 203.26 0
+92.664 220.35 0
+84.53 234.58 0
+71.865 244.73 0
+54.25 250.14 0
+31.462 250.94 0
+3.4888 248.47 0
+-29.473 245.43 0
+-67.067 245.97 0
+-108.86 255.45 0
+-154.45 279.97 0
+-203.6 325.5 0
+-256.34 396.69 0
+-313.06 495.51 0
+-374.53 619.99 0
+-441.79 763.16 0
+-516.03 912.88 0
+-598.3 1052.7 0
+-689.16 1164 0
+-788.39 1229.8 0
+-894.74 1238.6 0
+-1005.8 1189.2 0
+-1118.2 1093.4 0
+-1227.9 975.9 0
+-1331.2 870.69 0
+-1424.9 813.68 0
+-1507 832.33 0
+-1577 935.49 0
+-1634.6 1106.5 0
+-1679.1 1302.7 0
+-1707.5 1463.3 0
+-1713.5 1523.6 0
+-1687.8 1432.5 0
+-1619.4 1167.2 0
+-1499.8 738.68 0
+-1327.2 186.06 0
+-1111.1 -439.24 0
+-873.89 -1093.2 0
+-649.72 -1754.3 0
+-478.33 -2426.8 0
+-396.25 -3130.6 0
+-427.3 -3882 0
+-575.52 -4675.9 0
+-823.29 -5480 0
+-1135.5 -6244.9 0
+-1468.7 -6928.6 0
+-1781.7 -7520.8 0
+-2043.4 -8053.1 0
+-2235.3 -8584.1 0
+-2345.8 -9162.1 0
+-2361 -9780.8 0
+-2254.3 -10351 0
+-1983.3 -10710 0
+-1497.5 -10667 0
+-757.8 -10074 0
+237.52 -8888.1 0
+1430.8 -7192.9 0
+2698.7 -5172.8 0
+3870.3 -3052.4 0
+4766.6 -1037.4 0
+5250.8 709.26 0
+5269 2049.9 0
+4864.9 2839 0
+4162.1 2920.9 0
+3324.7 2189.4 0
+2514.3 694.62 0
+1863.5 -1264.8 0
+1467.8 -3145 0
+1387.8 -4300.3 0
+1645.7 -4234.9 0
+2208.3 -2854.9 0
+2969.5 -585.81 0
+3755.5 1731.7 0
+4369.7 3149 0
+4667.8 2995.4 0
+4625.4 1168.3 0
+4354.7 -1810.5 0
+4048.4 -5000.8 0
+3873.4 -7419.9 0
+3874 -8420.3 0
+3938.1 -7910.7 0
+3850.6 -6340.2 0
+3399 -4474.2 0
+2474.5 -3067 0
+1117.7 -2560.8 0
+-501.67 -2912.1 0
+-2142 -3605.4 0
+-3549.1 -3860.7 0
+-4499.4 -2986.5 0
+-4835.9 -756.38 0
+-4509.8 2377.6 0
+-3621.1 5407.1 0
+-2427.8 7256 0
+-1293.4 7425.3 0
+-571.95 6401.3 0
+-475.99 5478.5 0
+-993.93 5986 0
+-1901.8 8340.3 0
+-2864.6 11573 0
+-3571 13765 0
+-3834.9 13213 0
+-3623.1 9633.9 0
+-3019.8 4550.4 0
+-2168.6 551.26 0
+-1229.1 -176.14 0
+-357.29 2880.5 0
+308.59 8266.7 0
+675.25 13388 0
+729.47 15899 0
+553.27 14813 0
+293.59 10802 0
+90.997 5689.1 0
+7.2281 1565.3 0
+0 0 0
+0 0 0
+-0.016292 0.24769 0
+-0.23296 2.3335 0
+-0.94442 6.9715 0
+-2.4843 14.716 0
+-5.1872 25.65 0
+-9.307 38.949 0
+-14.921 52.803 0
+-21.867 64.785 0
+-29.731 72.522 0
+-37.921 74.393 0
+-45.775 69.998 0
+-52.696 60.211 0
+-58.256 46.861 0
+-62.256 32.19 0
+-64.727 18.315 0
+-65.888 6.8654 0
+-66.073 -1.1443 0
+-65.662 -5.2515 0
+-65.018 -5.4032 0
+-64.448 -1.8273 0
+-64.187 5.038 0
+-64.414 14.569 0
+-65.272 25.98 0
+-66.896 38.372 0
+-69.43 50.806 0
+-73.009 62.38 0
+-77.721 72.264 0
+-83.55 79.699 0
+-90.323 83.972 0
+-97.683 84.417 0
+-105.11 80.48 0
+-112.01 71.841 0
+-117.77 58.559 0
+-121.93 41.186 0
+-124.2 20.771 0
+-124.53 -1.2508 0
+-123.08 -23.283 0
+-120.11 -43.836 0
+-115.93 -61.763 0
+-110.79 -76.39 0
+-104.87 -87.528 0
+-98.247 -95.372 0
+-90.913 -100.33 0
+-82.868 -102.88 0
+-74.152 -103.4 0
+-64.885 -102.18 0
+-55.288 -99.418 0
+-45.657 -95.227 0
+-36.327 -89.745 0
+-27.616 -83.14 0
+-19.777 -75.64 0
+-12.964 -67.516 0
+-7.2189 -59.072 0
+-2.4866 -50.627 0
+1.3571 -42.495 0
+4.4649 -34.972 0
+6.983 -28.306 0
+9.0266 -22.675 0
+10.672 -18.153 0
+11.963 -14.697 0
+12.926 -12.144 0
+13.587 -10.244 0
+13.984 -8.7075 0
+14.17 -7.267 0
+14.21 -5.7354 0
+14.169 -4.0405 0
+14.101 -2.2296 0
+14.042 -0.44325 0
+14.009 1.135 0
+14.001 2.3362 0
+14.007 3.0563 0
+14.015 3.2842 0
+14.018 3.1042 0
+14.022 2.6713 0
+14.039 2.1711 0
+14.088 1.7737 0
+14.191 1.5951 0
+14.365 1.6749 0
+14.619 1.9739 0
+14.949 2.39 0
+15.344 2.7885 0
+15.78 3.0359 0
+16.229 3.0316 0
+16.657 2.7293 0
+17.031 2.1452 0
+17.322 1.352 0
+17.507 0.46234 0
+17.569 -0.39429 0
+17.499 -1.0957 0
+17.296 -1.5474 0
+16.965 -1.6951 0
+16.518 -1.5296 0
+15.969 -1.0824 0
+15.336 -0.41609 0
+14.639 0.38959 0
+13.896 1.2511 0
+13.128 2.0929 0
+12.352 2.856 0
+11.586 3.5013 0
+10.845 4.0104 0
+10.144 4.3822 0
+9.4943 4.6284 0
+8.9059 4.7685 0
+8.3861 4.8251 0
+7.9389 4.82 0
+7.5659 4.772 0
+7.2657 4.6958 0
+7.0343 4.602 0
+6.8658 4.4972 0
+6.7526 4.3855 0
+6.6863 4.2689 0
+6.6581 4.1482 0
+6.6597 4.0234 0
+6.6831 3.8941 0
+6.7217 3.7596 0
+6.7697 3.6187 0
+6.8226 3.4703 0
+6.8767 3.3131 0
+6.9295 3.146 0
+6.9791 2.9681 0
+7.0239 2.7792 0
+7.0632 2.5795 0
+7.0962 2.3698 0
+7.1225 2.1515 0
+7.1419 1.9266 0
+7.1546 1.6971 0
+7.1606 1.4655 0
+7.1607 1.2342 0
+7.1555 1.0059 0
+7.1461 0.78333 0
+7.1336 0.56939 0
+7.1195 0.36716 0
+7.105 0.17989 0
+7.0914 0.010915 0
+7.0796 -0.13652 0
+7.0705 -0.25943 0
+7.0644 -0.35533 0
+7.0613 -0.42247 0
+7.0607 -0.46002 0
+7.062 -0.46818 0
+7.0643 -0.44824 0
+7.0668 -0.40243 0
+7.0687 -0.33372 0
+7.0694 -0.24545 0
+7.0689 -0.14093 0
+7.0674 -0.02292 0
+7.0657 0.10692 0
+7.065 0.24847 0
+7.0672 0.40358 0
+7.0741 0.57627 0
+7.0883 0.77289 0
+7.1125 1.0019 0
+7.1495 1.2737 0
+7.2028 1.5999 0
+7.2759 1.9935 0
+7.3731 2.4674 0
+7.499 3.0349 0
+7.6594 3.7093 0
+7.8606 4.5036 0
+8.1106 5.4311 0
+8.4184 6.506 0
+8.7948 7.7436 0
+9.2526 9.1611 0
+9.8067 10.777 0
+10.474 12.614 0
+11.274 14.692 0
+12.23 17.033 0
+13.364 19.655 0
+14.704 22.57 0
+16.276 25.782 0
+18.11 29.281 0
+20.234 33.041 0
+22.676 37.021 0
+25.464 41.165 0
+28.624 45.407 0
+32.181 49.684 0
+36.158 53.946 0
+40.574 58.179 0
+45.446 62.421 0
+50.781 66.789 0
+56.577 71.487 0
+62.81 76.815 0
+69.426 83.155 0
+76.328 90.947 0
+83.36 100.63 0
+90.29 112.58 0
+96.798 127.01 0
+102.46 143.91 0
+106.74 162.95 0
+109.01 183.42 0
+108.57 204.31 0
+104.66 224.3 0
+96.511 242 0
+83.441 256.15 0
+64.862 265.94 0
+40.362 271.4 0
+9.7258 273.66 0
+-27.049 275.27 0
+-69.786 280.25 0
+-118.19 293.89 0
+-171.95 322.32 0
+-230.82 371.59 0
+-294.78 446.55 0
+-364.06 549.45 0
+-439.22 678.53 0
+-521.05 827.05 0
+-610.48 982.92 0
+-708.31 1129.5 0
+-814.91 1247.9 0
+-929.89 1320.2 0
+-1051.8 1334.2 0
+-1177.9 1287.7 0
+-1304.4 1191.6 0
+-1426.8 1070.2 0
+-1540.3 957.6 0
+-1640.8 890.34 0
+-1725.8 897.06 0
+-1794.1 987.81 0
+-1846 1146.6 0
+-1882 1330.7 0
+-1901.2 1477.5 0
+-1900.2 1519.9 0
+-1872.1 1404.2 0
+-1807.5 1106.3 0
+-1697.7 638.73 0
+-1538.5 45.658 0
+-1334.8 -612.98 0
+-1103.2 -1283.1 0
+-872.43 -1934.1 0
+-678.37 -2566.1 0
+-557.13 -3201.2 0
+-535.71 -3865.6 0
+-624.57 -4569.5 0
+-814.11 -5296.9 0
+-1076.9 -6011.8 0
+-1375.1 -6678.2 0
+-1670.4 -7283.6 0
+-1932.9 -7851 0
+-2145.1 -8429 0
+-2299.1 -9060.1 0
+-2387.5 -9740.3 0
+-2392 -10392 0
+-2276.7 -10865 0
+-1991 -10978 0
+-1485.2 -10576 0
+-736.21 -9585.7 0
+226.66 -8045 0
+1309.6 -6085.5 0
+2364.7 -3894.8 0
+3226.1 -1675.4 0
+3758.8 372.55 0
+3902.1 2043.5 0
+3687.2 3116.9 0
+3221 3382 0
+2645.2 2712.9 0
+2091.9 1173.7 0
+1656.9 -906.27 0
+1397.4 -2953.9 0
+1344.8 -4302.6 0
+1510.6 -4436.5 0
+1876 -3228.3 0
+2371.7 -1055.2 0
+2871.9 1286.8 0
+3224.9 2858.4 0
+3315.3 2941.6 0
+3128.9 1339 0
+2773.1 -1525.7 0
+2431.7 -4757.5 0
+2267.2 -7333.5 0
+2324.3 -8495.3 0
+2491.3 -8027 0
+2543.4 -6305.6 0
+2245.1 -4114.5 0
+1458 -2305 0
+200.72 -1448.5 0
+-1355.6 -1612 0
+-2940.1 -2341.3 0
+-4252.4 -2863.3 0
+-5030.2 -2445.9 0
+-5110.6 -778.94 0
+-4483.2 1808 0
+-3319.1 4448.7 0
+-1948.5 6185.2 0
+-770.35 6558 0
+-112.49 5979.8 0
+-102.86 5575.8 0
+-620.48 6479.8 0
+-1359.9 8976 0
+-1980.1 12085 0
+-2257.8 13988 0
+-2164.1 13131 0
+-1831 9344.4 0
+-1442.6 4183.5 0
+-1125.9 198.84 0
+-905.12 -483.24 0
+-732.7 2614.2 0
+-555.97 8039.3 0
+-364.96 13217 0
+-191.16 15805 0
+-71.342 14795 0
+-14.669 10829 0
+-0.17848 5719.8 0
+0.16633 1576.7 0
+0 0 0
+0 0 0
+-0.020128 0.27835 0
+-0.28421 2.6135 0
+-1.1295 7.7668 0
+-2.9007 16.301 0
+-5.9069 28.266 0
+-10.347 42.736 0
+-16.233 57.74 0
+-23.343 70.659 0
+-31.24 78.947 0
+-39.339 80.878 0
+-47.023 76.044 0
+-53.756 65.403 0
+-59.173 50.934 0
+-63.114 35.053 0
+-65.617 20.035 0
+-66.876 7.6276 0
+-67.177 -1.0852 0
+-66.846 -5.6221 0
+-66.199 -5.947 0
+-65.515 -2.3263 0
+-65.023 4.7572 0
+-64.906 14.644 0
+-65.319 26.528 0
+-66.405 39.506 0
+-68.309 52.643 0
+-71.165 65.023 0
+-75.062 75.77 0
+-79.995 84.037 0
+-85.812 88.982 0
+-92.197 89.804 0
+-98.686 85.836 0
+-104.73 76.705 0
+-109.79 62.505 0
+-113.46 43.896 0
+-115.49 22.091 0
+-115.85 -1.3069 0
+-114.68 -24.57 0
+-112.24 -46.14 0
+-108.78 -64.875 0
+-104.48 -80.159 0
+-99.445 -91.887 0
+-93.665 -100.32 0
+-87.093 -105.91 0
+-79.692 -109.09 0
+-71.5 -110.21 0
+-62.66 -109.46 0
+-53.426 -106.93 0
+-44.132 -102.72 0
+-35.139 -96.923 0
+-26.777 -89.757 0
+-19.292 -81.516 0
+-12.816 -72.564 0
+-7.3645 -63.295 0
+-2.8601 -54.1 0
+0.83332 -45.332 0
+3.8664 -37.293 0
+6.3701 -30.214 0
+8.4369 -24.24 0
+10.119 -19.416 0
+11.443 -15.677 0
+12.426 -12.859 0
+13.098 -10.719 0
+13.508 -8.9843 0
+13.725 -7.401 0
+13.828 -5.7867 0
+13.886 -4.0624 0
+13.951 -2.2594 0
+14.048 -0.49697 0
+14.172 1.0609 0
+14.301 2.2585 0
+14.406 2.9952 0
+14.462 3.2552 0
+14.461 3.1113 0
+14.41 2.7056 0
+14.335 2.2127 0
+14.27 1.7965 0
+14.252 1.5733 0
+14.312 1.5884 0
+14.468 1.8124 0
+14.723 2.1549 0
+15.064 2.4924 0
+15.467 2.7004 0
+15.897 2.6841 0
+16.317 2.3994 0
+16.689 1.861 0
+16.981 1.1378 0
+17.167 0.33683 0
+17.231 -0.41925 0
+17.164 -1.015 0
+16.965 -1.3618 0
+16.642 -1.4108 0
+16.204 -1.1564 0
+15.668 -0.63282 0
+15.05 0.096053 0
+14.368 0.94977 0
+13.638 1.8449 0
+12.879 2.7063 0
+12.107 3.4756 0
+11.337 4.1146 0
+10.584 4.6055 0
+9.8618 4.9481 0
+9.1832 5.1556 0
+8.5588 5.249 0
+7.9974 5.2526 0
+7.5052 5.1905 0
+7.0855 5.0839 0
+6.7389 4.9496 0
+6.4631 4.8002 0
+6.2532 4.6444 0
+6.1029 4.4874 0
+6.0043 4.332 0
+5.949 4.1793 0
+5.9288 4.0291 0
+5.9358 3.8806 0
+5.9631 3.7321 0
+6.0048 3.5818 0
+6.056 3.4276 0
+6.1128 3.2675 0
+6.1721 3.0996 0
+6.2316 2.9227 0
+6.2893 2.7361 0
+6.3438 2.5397 0
+6.3937 2.3342 0
+6.4381 2.1208 0
+6.476 1.9012 0
+6.507 1.6773 0
+6.5306 1.4514 0
+6.5469 1.2257 0
+6.5561 1.0026 0
+6.5589 0.78457 0
+6.5563 0.57431 0
+6.5493 0.37477 0
+6.5392 0.18916 0
+6.5274 0.020807 0
+6.515 -0.1269 0
+6.5031 -0.25077 0
+6.4924 -0.34808 0
+6.4833 -0.41679 0
+6.4759 -0.45581 0
+6.47 -0.46516 0
+6.4651 -0.44598 0
+6.4609 -0.40046 0
+6.4569 -0.33167 0
+6.4529 -0.24313 0
+6.449 -0.13842 0
+6.4455 -0.020613 0
+6.4434 0.10826 0
+6.4438 0.24773 0
+6.4487 0.39927 0
+6.46 0.5666 0
+6.4806 0.75571 0
+6.5132 0.97479 0
+6.5616 1.2339 0
+6.6294 1.5443 0
+6.7214 1.9185 0
+6.8424 2.369 0
+6.9985 2.9086 0
+7.1962 3.5497 0
+7.4433 4.3044 0
+7.7486 5.1853 0
+8.1225 6.2053 0
+8.5768 7.3782 0
+9.1253 8.7198 0
+9.784 10.247 0
+10.571 11.98 0
+11.508 13.937 0
+12.616 16.138 0
+13.923 18.6 0
+15.456 21.333 0
+17.244 24.339 0
+19.317 27.608 0
+21.705 31.115 0
+24.435 34.819 0
+27.535 38.666 0
+31.029 42.593 0
+34.938 46.536 0
+39.28 50.451 0
+44.067 54.324 0
+49.31 58.201 0
+55.007 62.202 0
+61.151 66.543 0
+67.712 71.54 0
+74.636 77.6 0
+81.83 85.196 0
+89.145 94.817 0
+96.363 106.9 0
+103.17 121.73 0
+109.17 139.39 0
+113.82 159.63 0
+116.48 181.83 0
+116.43 205.05 0
+112.84 228.03 0
+104.88 249.37 0
+91.714 267.78 0
+72.595 282.39 0
+46.907 293.07 0
+14.209 300.82 0
+-25.739 308.03 0
+-72.993 318.57 0
+-127.45 337.63 0
+-188.95 371.29 0
+-257.3 425.67 0
+-332.44 505.72 0
+-414.48 613.86 0
+-503.73 748.54 0
+-600.69 903.14 0
+-705.93 1065.6 0
+-819.9 1219.2 0
+-942.6 1344.5 0
+-1073.3 1423.1 0
+-1210.2 1441.7 0
+-1350.1 1397.3 0
+-1488.6 1299.5 0
+-1620.4 1172.2 0
+-1739.7 1049.3 0
+-1841.4 968.1 0
+-1922 958.57 0
+-1979.9 1032.4 0
+-2015.8 1175.1 0
+-2031.8 1344.5 0
+-2029.9 1477.4 0
+-2010.4 1504.7 0
+-1970.4 1370.1 0
+-1903.7 1047.2 0
+-1802.8 548.27 0
+-1661.9 -79.548 0
+-1481.1 -770.2 0
+-1269.5 -1461.1 0
+-1047.1 -2113.2 0
+-841.89 -2720.8 0
+-684.62 -3306 0
+-601.72 -3901 0
+-608.06 -4527.5 0
+-702.86 -5183.4 0
+-869.95 -5844.9 0
+-1082.8 -6483 0
+-1312.6 -7084.9 0
+-1536.2 -7667.1 0
+-1740.6 -8269 0
+-1922 -8926.7 0
+-2077.6 -9637.4 0
+-2194.6 -10333 0
+-2240.9 -10882 0
+-2164.6 -11114 0
+-1906 -10876 0
+-1421.9 -10074 0
+-712.51 -8704 0
+160.36 -6846.4 0
+1077.7 -4647.3 0
+1893.1 -2297.5 0
+2478.3 -24.306 0
+2767.3 1907.6 0
+2775.2 3209.7 0
+2584.7 3621.7 0
+2306.3 3003.2 0
+2035.1 1437.1 0
+1826.2 -713.44 0
+1698.9 -2848.8 0
+1657.4 -4292.4 0
+1707 -4525.4 0
+1847.7 -3408.2 0
+2051.3 -1286 0
+2243.9 1084 0
+2319.7 2779.1 0
+2190.2 3050.8 0
+1843.4 1625 0
+1372.3 -1161.7 0
+944.02 -4460.2 0
+715.81 -7217.1 0
+743.99 -8573.6 0
+937.41 -8192 0
+1086.1 -6369.5 0
+951.8 -3892.8 0
+374.55 -1699.3 0
+-654.85 -491.32 0
+-1982.1 -460.63 0
+-3331.6 -1233 0
+-4382.5 -2052.2 0
+-4855.1 -2137.1 0
+-4594 -1067.9 0
+-3631.1 978.32 0
+-2203.5 3293.8 0
+-703 5029 0
+447.73 5727.6 0
+954.39 5679.5 0
+774.64 5801.3 0
+135.81 7022.7 0
+-575.69 9526.6 0
+-1004.5 12384 0
+-996.47 13947 0
+-655.75 12855 0
+-259.58 9046.6 0
+-85.408 4053.1 0
+-254.33 297.15 0
+-678.89 -239.47 0
+-1134.2 2844.3 0
+-1396.4 8121.8 0
+-1359.1 13111 0
+-1067.4 15567 0
+-665.77 14527 0
+-308.35 10620 0
+-87.15 5607.6 0
+-6.5754 1545.8 0
+0 0 0
+0 0 0
+-0.023924 0.31513 0
+-0.33467 2.9451 0
+-1.3098 8.6866 0
+-3.3004 18.082 0
+-6.583 31.116 0
+-11.296 46.745 0
+-17.381 62.833 0
+-24.565 76.584 0
+-32.389 85.308 0
+-40.294 87.209 0
+-47.718 81.893 0
+-54.2 70.414 0
+-59.436 54.888 0
+-63.304 37.881 0
+-65.841 21.798 0
+-67.202 8.4795 0
+-67.618 -0.93819 0
+-67.35 -5.9531 0
+-66.669 -6.5338 0
+-65.827 -2.9674 0
+-65.05 4.235 0
+-64.53 14.386 0
+-64.433 26.661 0
+-64.907 40.145 0
+-66.092 53.9 0
+-68.111 66.994 0
+-71.046 78.511 0
+-74.899 87.526 0
+-79.552 93.088 0
+-84.738 94.275 0
+-90.064 90.318 0
+-95.063 80.801 0
+-99.278 65.844 0
+-102.35 46.21 0
+-104.1 23.254 0
+-104.49 -1.2724 0
+-103.68 -25.53 0
+-101.86 -47.918 0
+-99.22 -67.312 0
+-95.879 -83.168 0
+-91.845 -95.464 0
+-87.046 -104.53 0
+-81.38 -110.81 0
+-74.786 -114.72 0
+-67.302 -116.51 0
+-59.094 -116.28 0
+-50.447 -114.03 0
+-41.727 -109.8 0
+-33.311 -103.69 0
+-25.528 -95.956 0
+-18.606 -86.988 0
+-12.647 -77.245 0
+-7.6354 -67.213 0
+-3.4668 -57.346 0
+0.005436 -48.028 0
+2.9267 -39.552 0
+5.408 -32.121 0
+7.5135 -25.842 0
+9.266 -20.731 0
+10.668 -16.71 0
+11.723 -13.619 0
+12.459 -11.233 0
+12.931 -9.3017 0
+13.219 -7.5863 0
+13.408 -5.9073 0
+13.574 -4.1736 0
+13.764 -2.3934 0
+13.988 -0.659 0
+14.23 0.88842 0
+14.449 2.1059 0
+14.603 2.8933 0
+14.664 3.2238 0
+14.622 3.1528 0
+14.495 2.8036 0
+14.321 2.3361 0
+14.15 1.9068 0
+14.034 1.6334 0
+14.013 1.5699 0
+14.111 1.7005 0
+14.333 1.9505 0
+14.663 2.2104 0
+15.07 2.3668 0
+15.513 2.3312 0
+15.949 2.0611 0
+16.335 1.5692 0
+16.636 0.91862 0
+16.826 0.20921 0
+16.89 -0.44409 0
+16.82 -0.93326 0
+16.618 -1.1761 0
+16.294 -1.1285 0
+15.86 -0.78829 0
+15.331 -0.19138 0
+14.724 0.5976 0
+14.055 1.4983 0
+13.34 2.4276 0
+12.593 3.3111 0
+11.829 4.0909 0
+11.06 4.7289 0
+10.302 5.2079 0
+9.566 5.528 0
+8.8659 5.7031 0
+8.2131 5.7551 0
+7.6174 5.7101 0
+7.0868 5.594 0
+6.6262 5.4301 0
+6.2378 5.2377 0
+5.921 5.0318 0
+5.6722 4.8228 0
+5.486 4.6177 0
+5.3553 4.4201 0
+5.2723 4.2317 0
+5.2289 4.0523 0
+5.2176 3.8805 0
+5.2313 3.7142 0
+5.264 3.5507 0
+5.3107 3.3871 0
+5.3671 3.2207 0
+5.43 3.0491 0
+5.4965 2.8705 0
+5.5643 2.6839 0
+5.6312 2.489 0
+5.6955 2.2862 0
+5.7556 2.0768 0
+5.8098 1.8622 0
+5.8571 1.6441 0
+5.8965 1.4246 0
+5.9275 1.2055 0
+5.9498 0.98892 0
+5.9637 0.7771 0
+5.9699 0.57244 0
+5.9692 0.37764 0
+5.963 0.19575 0
+5.9525 0.030048 0
+5.939 -0.11605 0
+5.9239 -0.23925 0
+5.9083 -0.33662 0
+5.8929 -0.40592 0
+5.8783 -0.44583 0
+5.8649 -0.45615 0
+5.8526 -0.43789 0
+5.8416 -0.39319 0
+5.8317 -0.32511 0
+5.823 -0.23731 0
+5.8158 -0.13355 0
+5.8106 -0.017165 0
+5.8082 0.10951 0
+5.81 0.24565 0
+5.8177 0.39237 0
+5.8336 0.55303 0
+5.8602 0.73321 0
+5.901 0.9407 0
+5.9596 1.1851 0
+6.0407 1.4773 0
+6.1492 1.829 0
+6.291 2.2525 0
+6.4729 2.7596 0
+6.7024 3.3621 0
+6.9881 4.0714 0
+7.3397 4.899 0
+7.7682 5.8566 0
+8.2864 6.9569 0
+8.9084 8.2141 0
+9.6509 9.6436 0
+10.533 11.263 0
+11.575 13.089 0
+12.802 15.14 0
+14.239 17.43 0
+15.915 19.968 0
+17.86 22.756 0
+20.104 25.782 0
+22.675 29.023 0
+25.603 32.439 0
+28.911 35.978 0
+32.62 39.58 0
+36.749 43.186 0
+41.308 46.752 0
+46.304 50.272 0
+51.739 53.794 0
+57.608 57.446 0
+63.894 61.451 0
+70.567 66.138 0
+77.576 71.938 0
+84.835 79.352 0
+92.208 88.913 0
+99.498 101.11 0
+106.42 116.32 0
+112.58 134.69 0
+117.48 156.07 0
+120.49 179.95 0
+120.86 205.46 0
+117.73 231.42 0
+110.19 256.47 0
+97.301 279.33 0
+78.137 299.06 0
+51.88 315.45 0
+17.846 329.39 0
+-24.475 343.1 0
+-75.402 360.29 0
+-135.08 386.05 0
+-203.52 426.36 0
+-280.66 487.3 0
+-366.41 573.87 0
+-460.78 688.56 0
+-563.82 829.93 0
+-675.7 991.43 0
+-796.57 1161 0
+-926.42 1321.7 0
+-1064.8 1453.8 0
+-1210.5 1538 0
+-1361.2 1560.4 0
+-1513.2 1516.5 0
+-1661.5 1415.1 0
+-1799.7 1279.1 0
+-1921 1142.3 0
+-2019 1042.6 0
+-2089.1 1011.4 0
+-2129 1062.6 0
+-2139.8 1184 0
+-2125.1 1335 0
+-2090.1 1453.1 0
+-2039.3 1468 0
+-1975 1321 0
+-1895.7 982.81 0
+-1796.6 463.79 0
+-1671.7 -188.83 0
+-1516.7 -905.85 0
+-1332.8 -1618.9 0
+-1129 -2282.2 0
+-921.58 -2884 0
+-732.09 -3443.7 0
+-582.2 -3995.6 0
+-488.6 -4567.6 0
+-459.15 -5166.8 0
+-491.63 -5778.5 0
+-576.08 -6379.5 0
+-699.56 -6958 0
+-851.65 -7526.8 0
+-1028 -8119.1 0
+-1229.4 -8766.8 0
+-1455.5 -9469.2 0
+-1694.6 -10170 0
+-1914.2 -10753 0
+-2058.4 -11067 0
+-2057.3 -10966 0
+-1848.6 -10343 0
+-1405.1 -9157.5 0
+-755.98 -7442.2 0
+11.421 -5299.2 0
+774.3 -2899.4 0
+1415.3 -486.49 0
+1863.5 1627.8 0
+2114.5 3097.6 0
+2219.9 3620.7 0
+2251.5 3047.7 0
+2262.1 1483.1 0
+2265.9 -677.38 0
+2248.2 -2813.6 0
+2193.4 -4251 0
+2107.6 -4486.1 0
+2015.2 -3385.7 0
+1931.9 -1278.1 0
+1834.6 1114.9 0
+1659.4 2897.4 0
+1336.5 3310 0
+845.09 2022.9 0
+251.89 -703.25 0
+-301.33 -4069.6 0
+-661.78 -7009.5 0
+-749.52 -8584.3 0
+-612.61 -8344.6 0
+-419.49 -6501.2 0
+-389.35 -3824.4 0
+-694.44 -1315.7 0
+-1379 203.73 0
+-2327.4 413.18 0
+-3290 -407.03 0
+-3955.3 -1529.2 0
+-4047.9 -2121.5 0
+-3428.1 -1639.7 0
+-2163 -89.066 0
+-538.1 1990.3 0
+1014.6 3846.1 0
+2064.1 4993.3 0
+2352.8 5559.1 0
+1915.1 6220.3 0
+1070.1 7695.9 0
+276.28 10093 0
+-91.13 12583 0
+75.456 13746 0
+571.14 12454 0
+1001.8 8755.3 0
+1007.3 4116.8 0
+459.47 761.61 0
+-475.78 456.16 0
+-1436.9 3487.5 0
+-2060.9 8466.9 0
+-2158.3 13066 0
+-1779.1 15211 0
+-1152.2 14050 0
+-549.95 10211 0
+-158.95 5373.3 0
+-12.152 1478.6 0
+0 0 0
+0 0 0
+-0.027305 0.35753 0
+-0.37927 3.3235 0
+-1.4669 9.7171 0
+-3.6407 20.03 0
+-7.1393 34.155 0
+-12.038 50.911 0
+-18.212 67.998 0
+-25.344 82.464 0
+-32.972 91.509 0
+-40.57 93.301 0
+-47.648 87.482 0
+-53.823 75.203 0
+-58.855 58.706 0
+-62.65 40.676 0
+-65.231 23.614 0
+-66.704 9.4264 0
+-67.23 -0.70826 0
+-67.006 -6.2637 0
+-66.252 -7.1965 0
+-65.2 -3.7934 0
+-64.077 3.4233 0
+-63.092 13.746 0
+-62.424 26.328 0
+-62.224 40.236 0
+-62.621 54.514 0
+-63.719 68.216 0
+-65.589 80.39 0
+-68.237 90.048 0
+-71.575 96.154 0
+-75.399 97.683 0
+-79.399 93.785 0
+-83.203 84.002 0
+-86.446 68.48 0
+-88.847 48.064 0
+-90.261 24.233 0
+-90.691 -1.1411 0
+-90.248 -26.134 0
+-89.089 -49.121 0
+-87.334 -69.015 0
+-85.018 -85.35 0
+-82.07 -98.183 0
+-78.351 -107.89 0
+-73.713 -114.92 0
+-68.075 -119.62 0
+-61.479 -122.15 0
+-54.109 -122.48 0
+-46.279 -120.53 0
+-38.372 -116.27 0
+-30.773 -109.84 0
+-23.799 -101.56 0
+-17.65 -91.893 0
+-12.39 -81.42 0
+-7.9671 -70.714 0
+-4.2512 -60.282 0
+-1.0849 -50.524 0
+1.6694 -41.713 0
+4.1005 -34.013 0
+6.2408 -27.487 0
+8.0805 -22.121 0
+9.594 -17.829 0
+10.768 -14.464 0
+11.62 -11.83 0
+12.207 -9.6998 0
+12.609 -7.8555 0
+12.917 -6.1178 0
+13.205 -4.3798 0
+13.512 -2.6219 0
+13.841 -0.90597 0
+14.161 0.65099 0
+14.423 1.9172 0
+14.58 2.7889 0
+14.602 3.223 0
+14.488 3.2518 0
+14.269 2.9759 0
+13.998 2.5382 0
+13.74 2.0888 0
+13.558 1.7489 0
+13.499 1.5852 0
+13.589 1.6 0
+13.828 1.7378 0
+14.194 1.9061 0
+14.647 2.0035 0
+15.136 1.9479 0
+15.612 1.6973 0
+16.026 1.2597 0
+16.341 0.69107 0
+16.533 0.081811 0
+16.587 -0.46229 0
+16.502 -0.84141 0
+16.283 -0.97982 0
+15.943 -0.83774 0
+15.498 -0.41542 0
+14.964 0.25029 0
+14.358 1.0951 0
+13.695 2.0395 0
+12.988 3.0015 0
+12.251 3.9075 0
+11.495 4.6999 0
+10.732 5.3409 0
+9.9728 5.8129 0
+9.2304 6.116 0
+8.517 6.2642 0
+7.8446 6.28 0
+7.2239 6.1906 0
+6.6639 6.0235 0
+6.1711 5.8044 0
+5.749 5.5548 0
+5.3981 5.292 0
+5.1162 5.0287 0
+4.8987 4.7735 0
+4.7395 4.5313 0
+4.6311 4.3042 0
+4.566 4.0924 0
+4.5369 3.8941 0
+4.5368 3.7066 0
+4.5598 3.5265 0
+4.6008 3.3503 0
+4.6553 3.1745 0
+4.7199 2.9962 0
+4.7912 2.8133 0
+4.8667 2.6245 0
+4.9437 2.4293 0
+5.0199 2.228 0
+5.093 2.0217 0
+5.1611 1.8116 0
+5.2223 1.5993 0
+5.2752 1.3866 0
+5.3188 1.175 0
+5.3523 0.96619 0
+5.3757 0.76211 0
+5.3893 0.56477 0
+5.3938 0.37658 0
+5.3904 0.20033 0
+5.3804 0.03917 0
+5.3653 -0.10356 0
+5.3466 -0.22453 0
+5.3256 -0.3207 0
+5.3037 -0.38966 0
+5.2818 -0.42991 0
+5.2608 -0.44106 0
+5.2411 -0.42395 0
+5.2233 -0.38062 0
+5.2076 -0.31411 0
+5.1943 -0.22809 0
+5.184 -0.12646 0
+5.1772 -0.012737 0
+5.1748 0.11049 0
+5.1781 0.2421 0
+5.1888 0.38284 0
+5.209 0.53565 0
+5.2414 0.70568 0
+5.2896 0.90019 0
+5.3575 1.1282 0
+5.4499 1.4001 0
+5.5726 1.7271 0
+5.7319 2.1205 0
+5.9351 2.5917 0
+6.1904 3.1516 0
+6.5071 3.8109 0
+6.8955 4.58 0
+7.3669 5.4699 0
+7.9343 6.4918 0
+8.6123 7.6586 0
+9.4176 8.984 0
+10.369 10.483 0
+11.487 12.173 0
+12.797 14.067 0
+14.323 16.179 0
+16.094 18.516 0
+18.14 21.079 0
+20.489 23.857 0
+23.169 26.828 0
+26.208 29.953 0
+29.626 33.183 0
+33.442 36.462 0
+37.668 39.736 0
+42.309 42.965 0
+47.366 46.147 0
+52.835 49.336 0
+58.702 52.663 0
+64.95 56.361 0
+71.548 60.768 0
+78.449 66.331 0
+85.579 73.577 0
+92.823 83.077 0
+100.01 95.374 0
+106.88 110.91 0
+113.09 129.91 0
+118.16 152.33 0
+121.49 177.77 0
+122.34 205.47 0
+119.83 234.33 0
+112.99 263.07 0
+100.77 290.44 0
+82.093 315.5 0
+55.941 338 0
+21.378 358.71 0
+-22.385 379.73 0
+-75.957 404.62 0
+-139.75 438.32 0
+-214 486.68 0
+-298.78 555.67 0
+-394.02 650.24 0
+-499.61 772.84 0
+-615.39 922.02 0
+-741.14 1091.3 0
+-876.57 1268.4 0
+-1021.2 1436.3 0
+-1174 1574.8 0
+-1333.3 1663.9 0
+-1496.2 1688.8 0
+-1658.6 1643.8 0
+-1814.5 1536.6 0
+-1956.8 1388.9 0
+-2077.5 1234.2 0
+-2168.7 1110.9 0
+-2224.5 1051.9 0
+-2241.7 1073.7 0
+-2221.2 1167.2 0
+-2167.7 1294.8 0
+-2089.5 1395.6 0
+-1995.4 1399.5 0
+-1893.4 1246.1 0
+-1787.6 902.94 0
+-1677.6 376.71 0
+-1558.7 -287.8 0
+-1423.8 -1021.8 0
+-1266.4 -1754.9 0
+-1083.8 -2436.9 0
+-878.69 -3051.2 0
+-659.85 -3612.7 0
+-440.68 -4153.4 0
+-236.81 -4701.6 0
+-63.549 -5267 0
+65.986 -5838.3 0
+141.38 -6395.5 0
+154.16 -6928.2 0
+96.362 -7448.5 0
+-40.078 -7988.2 0
+-261.59 -8579.6 0
+-567.76 -9227.8 0
+-943.28 -9888.9 0
+-1350 -10467 0
+-1724.5 -10830 0
+-1985.3 -10842 0
+-2052.8 -10389 0
+-1875.2 -9402.5 0
+-1451 -7869.2 0
+-835.94 -5846.8 0
+-126.79 -3480 0
+572.14 -1017.1 0
+1185.4 1196.9 0
+1686.6 2772.2 0
+2090.7 3374.5 0
+2425.3 2850.6 0
+2698.5 1326.1 0
+2886 -775.92 0
+2946.5 -2824.4 0
+2854.6 -4160.8 0
+2626.2 -4313.3 0
+2315.5 -3172 0
+1982 -1058.5 0
+1649.2 1340.5 0
+1286.2 3169.1 0
+830.12 3679.1 0
+238.24 2507.1 0
+-461.88 -151.59 0
+-1161.8 -3557.3 0
+-1713.1 -6655.3 0
+-2001.5 -8455.8 0
+-2011.2 -8416 0
+-1843.7 -6655.8 0
+-1677.5 -3904 0
+-1686.8 -1193.3 0
+-1956.3 561.25 0
+-2430.1 917.53 0
+-2914.3 53.485 0
+-3136.3 -1345.6 0
+-2844.1 -2405.7 0
+-1915.7 -2456.7 0
+-438.85 -1325.9 0
+1279.3 616.04 0
+2794 2703.4 0
+3682.9 4400.6 0
+3725.3 5645.6 0
+3016.2 6855.2 0
+1943.1 8534.8 0
+1018.8 10733 0
+637.53 12758 0
+879.28 13459 0
+1470.6 11972 0
+1931.8 8464 0
+1835.5 4309.7 0
+1036.5 1482.5 0
+-253.09 1479.5 0
+-1578.6 4440.3 0
+-2475.8 9018.4 0
+-2689.3 13079 0
+-2265.9 14780 0
+-1490.5 13424 0
+-719.77 9656.5 0
+-209.76 5049.3 0
+-16.112 1384.6 0
+0 0 0
+0 0 0
+-0.029926 0.40445 0
+-0.41338 3.739 0
+-1.584 10.832 0
+-3.8833 22.098 0
+-7.5087 37.311 0
+-12.474 55.138 0
+-18.597 73.123 0
+-25.529 88.184 0
+-32.817 97.444 0
+-39.989 99.064 0
+-46.635 92.747 0
+-52.451 79.736 0
+-57.259 62.378 0
+-60.982 43.442 0
+-63.617 25.491 0
+-65.208 10.472 0
+-65.838 -0.40323 0
+-65.633 -6.5761 0
+-64.765 -7.9704 0
+-63.451 -4.8485 0
+-61.925 2.2739 0
+-60.417 12.677 0
+-59.123 25.485 0
+-58.201 39.736 0
+-57.764 54.446 0
+-57.895 68.643 0
+-58.646 81.35 0
+-60.023 91.535 0
+-61.966 98.097 0
+-64.337 99.94 0
+-66.916 96.146 0
+-69.432 86.227 0
+-71.623 70.343 0
+-73.287 49.408 0
+-74.327 24.996 0
+-74.76 -0.92699 0
+-74.674 -26.382 0
+-74.173 -49.74 0
+-73.307 -69.967 0
+-72.032 -86.677 0
+-70.204 -100 0
+-67.624 -110.35 0
+-64.107 -118.16 0
+-59.555 -123.7 0
+-54.013 -126.98 0
+-47.682 -127.89 0
+-40.89 -126.23 0
+-34.03 -121.96 0
+-27.479 -115.21 0
+-21.532 -106.39 0
+-16.351 -96.076 0
+-11.961 -84.955 0
+-8.2708 -73.685 0
+-5.1251 -62.818 0
+-2.358 -52.753 0
+0.15918 -43.73 0
+2.4918 -35.86 0
+4.6407 -29.161 0
+6.563 -23.589 0
+8.204 -19.053 0
+9.5286 -15.427 0
+10.541 -12.546 0
+11.29 -10.218 0
+11.852 -8.2428 0
+12.312 -6.442 0
+12.738 -4.6907 0
+13.162 -2.9393 0
+13.576 -1.2184 0
+13.943 0.37826 0
+14.208 1.7269 0
+14.327 2.7154 0
+14.277 3.2795 0
+14.072 3.4243 0
+13.756 3.2252 0
+13.4 2.8084 0
+13.082 2.3192 0
+12.874 1.8866 0
+12.825 1.5949 0
+12.96 1.4687 0
+13.269 1.4756 0
+13.719 1.5421 0
+14.257 1.5797 0
+14.824 1.5112 0
+15.359 1.2929 0
+15.81 0.92596 0
+16.141 0.45567 0
+16.326 -0.038921 0
+16.358 -0.46295 0
+16.239 -0.7256 0
+15.983 -0.75758 0
+15.607 -0.5229 0
+15.131 -0.023175 0
+14.573 0.70518 0
+13.953 1.5994 0
+13.283 2.5819 0
+12.577 3.5725 0
+11.845 4.4987 0
+11.095 5.3034 0
+10.337 5.9489 0
+9.5812 6.4168 0
+8.8381 6.7067 0
+8.1195 6.8322 0
+7.4369 6.8159 0
+6.8016 6.6858 0
+6.2231 6.4708 0
+5.7087 6.1986 0
+5.263 5.8931 0
+4.8875 5.574 0
+4.5808 5.2561 0
+4.3393 4.9498 0
+4.1574 4.6614 0
+4.0285 4.3938 0
+3.9454 4.1472 0
+3.9011 3.9198 0
+3.889 3.7083 0
+3.9031 3.5089 0
+3.9385 3.3173 0
+3.9907 3.1294 0
+4.0559 2.9421 0
+4.1307 2.7527 0
+4.2119 2.5597 0
+4.2968 2.3625 0
+4.3823 2.1615 0
+4.4659 1.9574 0
+4.5451 1.7515 0
+4.6175 1.545 0
+4.6812 1.3395 0
+4.7348 1.1361 0
+4.7772 0.93614 0
+4.808 0.7411 0
+4.8273 0.5526 0
+4.8355 0.37267 0
+4.8337 0.20379 0
+4.8233 0.048848 0
+4.8058 -0.088933 0
+4.783 -0.20627 0
+4.7564 -0.3001 0
+4.7278 -0.36791 0
+4.6986 -0.40803 0
+4.67 -0.41991 0
+4.643 -0.40422 0
+4.6185 -0.36286 0
+4.5972 -0.29877 0
+4.5796 -0.21561 0
+4.5663 -0.11729 0
+4.5581 -0.007445 0
+4.5558 0.11114 0
+4.5605 0.23707 0
+4.574 0.37076 0
+4.5983 0.5147 0
+4.636 0.67354 0
+4.6907 0.85399 0
+4.7665 1.0645 0
+4.8685 1.3146 0
+5.0026 1.615 0
+5.1756 1.9762 0
+5.3954 2.4089 0
+5.6704 2.9233 0
+6.0103 3.5294 0
+6.4255 4.2367 0
+6.9278 5.0552 0
+7.5299 5.9951 0
+8.2464 7.0679 0
+9.0936 8.2859 0
+10.09 9.6626 0
+11.256 11.212 0
+12.614 12.947 0
+14.19 14.879 0
+16.012 17.015 0
+18.105 19.354 0
+20.5 21.885 0
+23.221 24.587 0
+26.293 27.426 0
+29.733 30.354 0
+33.557 33.322 0
+37.771 36.278 0
+42.375 39.189 0
+47.364 42.058 0
+52.727 44.943 0
+58.448 47.979 0
+64.505 51.403 0
+70.87 55.562 0
+77.504 60.913 0
+84.348 68.003 0
+91.31 77.433 0
+98.249 89.793 0
+104.95 105.58 0
+111.12 125.12 0
+116.31 148.45 0
+119.97 175.3 0
+121.37 205.01 0
+119.64 236.61 0
+113.76 268.93 0
+102.59 300.78 0
+84.94 331.27 0
+59.582 360.13 0
+25.342 388.07 0
+-18.847 417.09 0
+-73.887 450.61 0
+-140.47 493.4 0
+-219.07 551.12 0
+-309.9 629.58 0
+-412.95 733.56 0
+-528.01 865.38 0
+-654.68 1023.5 0
+-792.41 1201.3 0
+-940.46 1386.4 0
+-1097.8 1561.5 0
+-1263 1706 0
+-1433.9 1799.3 0
+-1607.1 1825.6 0
+-1778 1777.9 0
+-1940 1662.6 0
+-2085 1500.3 0
+-2204 1323.8 0
+-2287.8 1171.8 0
+-2328.7 1078.7 0
+-2322.2 1064 0
+-2268.4 1122.2 0
+-2172.6 1219.6 0
+-2045 1298.7 0
+-1898.5 1290.9 0
+-1746.5 1134.9 0
+-1599.3 795.36 0
+-1461.9 274.44 0
+-1332.6 -388.03 0
+-1203.4 -1127.3 0
+-1061.8 -1874.7 0
+-894.31 -2579.6 0
+-689.63 -3222 0
+-442.15 -3811.9 0
+-154.29 -4375.1 0
+162.25 -4934.2 0
+486.73 -5493.6 0
+791 -6038.6 0
+1042.4 -6547.6 0
+1207.4 -7010.7 0
+1255.4 -7442.2 0
+1162.6 -7878.7 0
+915.95 -8360 0
+517.96 -8902.7 0
+-7.842 -9479.8 0
+-612.35 -10016 0
+-1220.4 -10400 0
+-1738.2 -10508 0
+-2070.7 -10221 0
+-2145.5 -9447.2 0
+-1934.9 -8133.5 0
+-1465 -6293.2 0
+-806.95 -4040 0
+-50.895 -1616 0
+724.13 615.96 0
+1468.2 2237.2 0
+2157 2892.8 0
+2771.5 2429.5 0
+3275.3 991.19 0
+3610.7 -981.02 0
+3719 -2858.1 0
+3576.1 -4012.1 0
+3216.5 -4017.7 0
+2727.9 -2799.8 0
+2211.4 -679.65 0
+1728.7 1695.6 0
+1270.4 3525.2 0
+767.17 4096.4 0
+141.06 3034 0
+-631.04 476.3 0
+-1481.7 -2908.3 0
+-2268.5 -6108.2 0
+-2835.5 -8119.5 0
+-3087.7 -8329.7 0
+-3039.9 -6766.6 0
+-2810.3 -4089.9 0
+-2563.5 -1321.8 0
+-2426.3 564.91 0
+-2416.7 1025.1 0
+-2419.5 131.17 0
+-2223.8 -1490 0
+-1614.3 -2940.4 0
+-484.42 -3436.6 0
+1077 -2634.2 0
+2770 -739.73 0
+4165.3 1660.4 0
+4865.2 3969.1 0
+4683.5 5924 0
+3755.4 7675 0
+2508.1 9514.7 0
+1483.4 11445 0
+1084.7 12932 0
+1374.4 13120 0
+2036.2 11432 0
+2534.9 8158.1 0
+2396.6 4568.8 0
+1458.8 2356.1 0
+-42.676 2710.2 0
+-1597.3 5598.1 0
+-2675.6 9715.3 0
+-2977.1 13144 0
+-2542 14314 0
+-1686.9 12713 0
+-819.7 9013.3 0
+-239.88 4669.5 0
+-18.468 1273.7 0
+0 0 0
+0 0 0
+-0.031523 0.45436 0
+-0.43351 4.1782 0
+-1.6485 11.998 0
+-4.0006 24.224 0
+-7.6436 40.493 0
+-12.536 59.313 0
+-18.45 78.084 0
+-25.02 93.618 0
+-31.822 103 0
+-38.448 104.41 0
+-44.573 97.625 0
+-49.976 83.977 0
+-54.532 65.888 0
+-58.172 46.176 0
+-60.857 27.43 0
+-62.559 11.614 0
+-63.278 -0.035657 0
+-63.066 -6.9133 0
+-62.05 -8.8875 0
+-60.429 -6.1711 0
+-58.454 0.74674 0
+-56.377 11.14 0
+-54.419 24.1 0
+-52.742 38.62 0
+-51.45 53.674 0
+-50.602 68.26 0
+-50.225 81.377 0
+-50.323 91.968 0
+-50.863 98.896 0
+-51.765 101.02 0
+-52.898 97.368 0
+-54.099 87.437 0
+-55.203 71.397 0
+-56.092 50.208 0
+-56.718 25.512 0
+-57.109 -0.66266 0
+-57.331 -26.306 0
+-57.438 -49.807 0
+-57.413 -70.196 0
+-57.141 -87.165 0
+-56.418 -100.92 0
+-54.995 -111.89 0
+-52.658 -120.47 0
+-49.298 -126.83 0
+-44.961 -130.88 0
+-39.854 -132.35 0
+-34.309 -130.98 0
+-28.711 -126.67 0
+-23.418 -119.61 0
+-18.69 -110.29 0
+-14.649 -99.399 0
+-11.275 -87.733 0
+-8.4428 -76.028 0
+-5.975 -64.869 0
+-3.6997 -54.642 0
+-1.4987 -45.542 0
+0.67067 -37.618 0
+2.7801 -30.836 0
+4.756 -25.121 0
+6.5161 -20.385 0
+8.0024 -16.524 0
+9.2018 -13.411 0
+10.148 -10.889 0
+10.906 -8.7788 0
+11.548 -6.9027 0
+12.13 -5.1174 0
+12.673 -3.3438 0
+13.161 -1.5825 0
+13.551 0.092277 0
+13.792 1.5603 0
+13.847 2.6959 0
+13.707 3.4094 0
+13.403 3.6758 0
+12.999 3.5446 0
+12.581 3.1273 0
+12.239 2.5682 0
+12.051 2.0092 0
+12.065 1.5573 0
+12.296 1.2645 0
+12.724 1.1245 0
+13.301 1.0846 0
+13.959 1.0685 0
+14.626 1.0024 0
+15.235 0.83791 0
+15.728 0.5655 0
+16.068 0.21695 0
+16.235 -0.14292 0
+16.227 -0.43194 0
+16.055 -0.56912 0
+15.738 -0.49151 0
+15.303 -0.16607 0
+14.774 0.4055 0
+14.173 1.1887 0
+13.52 2.1237 0
+12.83 3.1362 0
+12.112 4.1484 0
+11.376 5.0898 0
+10.628 5.904 0
+9.875 6.5527 0
+9.1244 7.017 0
+8.3856 7.2955 0
+7.669 7.4006 0
+6.9855 7.3551 0
+6.3461 7.187 0
+5.7603 6.9268 0
+5.2359 6.6037 0
+4.7778 6.244 0
+4.3882 5.8696 0
+4.0665 5.4976 0
+3.8096 5.1401 0
+3.6125 4.805 0
+3.4693 4.4957 0
+3.3733 4.213 0
+3.3177 3.9548 0
+3.2965 3.7175 0
+3.3038 3.4967 0
+3.3347 3.2875 0
+3.3849 3.0856 0
+3.4503 2.8872 0
+3.5274 2.6895 0
+3.6129 2.4908 0
+3.7034 2.2905 0
+3.7959 2.0888 0
+3.8872 1.8863 0
+3.9744 1.6842 0
+4.055 1.4836 0
+4.1266 1.2856 0
+4.1874 1.091 0
+4.236 0.9008 0
+4.2718 0.7159 0
+4.2945 0.53751 0
+4.3047 0.36722 0
+4.3031 0.20714 0
+4.2912 0.059858 0
+4.2706 -0.071623 0
+4.2431 -0.18414 0
+4.2108 -0.27467 0
+4.1754 -0.34063 0
+4.139 -0.38026 0
+4.103 -0.39284 0
+4.069 -0.37888 0
+4.0381 -0.3401 0
+4.0113 -0.27929 0
+3.9895 -0.20001 0
+3.9734 -0.10613 0
+3.9638 -0.001322 0
+3.9615 0.1115 0
+3.9675 0.23072 0
+3.9835 0.3564 0
+4.0112 0.49061 0
+4.0534 0.63748 0
+4.1134 0.80307 0
+4.1955 0.99511 0
+4.3048 1.2226 0
+4.4474 1.4951 0
+4.6304 1.8228 0
+4.8616 2.2155 0
+5.1499 2.6828 0
+5.505 3.2337 0
+5.9373 3.8773 0
+6.4583 4.6226 0
+7.0808 5.4789 0
+7.8187 6.4564 0
+8.6877 7.5661 0
+9.7054 8.8199 0
+10.892 10.23 0
+12.268 11.808 0
+13.858 13.563 0
+15.688 15.5 0
+17.783 17.619 0
+20.169 19.911 0
+22.87 22.354 0
+25.906 24.917 0
+29.292 27.558 0
+33.038 30.231 0
+37.147 32.892 0
+41.613 35.512 0
+46.426 38.098 0
+51.569 40.712 0
+57.023 43.495 0
+62.765 46.683 0
+68.773 50.627 0
+75.015 55.791 0
+81.45 62.734 0
+88.013 72.082 0
+94.601 84.461 0
+101.05 100.43 0
+107.09 120.38 0
+112.37 144.46 0
+116.35 172.51 0
+118.37 204.01 0
+117.55 238.13 0
+112.87 273.83 0
+103.12 310.03 0
+86.991 345.92 0
+63.09 381.26 0
+30.023 416.75 0
+-13.535 454.31 0
+-68.767 497.22 0
+-136.64 550.07 0
+-217.85 618.31 0
+-312.78 707.5 0
+-421.46 822.16 0
+-543.61 964.4 0
+-678.62 1132.4 0
+-825.64 1319.4 0
+-983.52 1512.9 0
+-1150.8 1695.2 0
+-1325.7 1845.4 0
+-1505.5 1942.3 0
+-1686.7 1969 0
+-1864.2 1917.4 0
+-2031.1 1792.4 0
+-2178.7 1613.2 0
+-2296.9 1411.7 0
+-2375.1 1226.5 0
+-2403.9 1093.7 0
+-2377.2 1035.3 0
+-2293.4 1050.2 0
+-2157.3 1109.5 0
+-1979.9 1160.3 0
+-1776.9 1136.8 0
+-1566.1 978.57 0
+-1363.8 647.92 0
+-1180.9 142.11 0
+-1020.4 -505.7 0
+-875.4 -1237.8 0
+-730.35 -1991.4 0
+-563.26 -2719.2 0
+-350.4 -3400.7 0
+-71.978 -4041.4 0
+281.78 -4658.4 0
+705.49 -5262.5 0
+1175.6 -5845.3 0
+1651 -6380.5 0
+2077.4 -6838.9 0
+2394.9 -7208.7 0
+2548.2 -7509.3 0
+2495.6 -7788.3 0
+2216.7 -8101.5 0
+1717.5 -8485.5 0
+1033.4 -8935.2 0
+228.98 -9398 0
+-605.5 -9782.3 0
+-1363.1 -9975 0
+-1936 -9855.6 0
+-2236.6 -9310.2 0
+-2216.4 -8250 0
+-1877.1 -6646.9 0
+-1266.2 -4580.9 0
+-459.52 -2277.8 0
+461.46 -103.67 0
+1424.3 1509.8 0
+2366 2198.7 0
+3221.7 1813.5 0
+3914.7 510.05 0
+4360.7 -1264.4 0
+4494.2 -2898.3 0
+4302.1 -3808.5 0
+3844.8 -3627.8 0
+3244.4 -2323.1 0
+2637.7 -215.53 0
+2114.2 2094.8 0
+1672.7 3880 0
+1224.7 4485.8 0
+645.97 3546 0
+-146.15 1149 0
+-1131.9 -2123.1 0
+-2178 -5336.6 0
+-3085.7 -7514.8 0
+-3674.6 -8004.9 0
+-3860.2 -6744.7 0
+-3687 -4296.9 0
+-3298.1 -1628.3 0
+-2857.1 274.92 0
+-2459.8 790.37 0
+-2080.2 -113 0
+-1580.4 -1884.2 0
+-786.95 -3626.5 0
+398.38 -4466.5 0
+1904 -3905.4 0
+3462.8 -1994.7 0
+4684.1 754.63 0
+5207.1 3684.4 0
+4875 6335 0
+3842.4 8594.9 0
+2545.3 10551 0
+1524.8 12166 0
+1173.9 13075 0
+1535.6 12727 0
+2267 10839 0
+2804.7 7829.8 0
+2653.7 4855.1 0
+1648.1 3307.8 0
+40.128 4051.3 0
+-1627.9 6866.6 0
+-2792.7 10491 0
+-3132.4 13239 0
+-2685.7 13830 0
+-1787 11956 0
+-869.95 8323.8 0
+-254.89 4260.7 0
+-19.637 1154.2 0
+0 0 0
+0 0 0
+-0.031941 0.50542 0
+-0.43761 4.6252 0
+-1.6535 13.172 0
+-3.978 26.337 0
+-7.5221 43.601 0
+-12.197 63.317 0
+-17.743 82.75 0
+-23.797 98.64 0
+-29.971 108.06 0
+-35.934 109.25 0
+-41.448 102.05 0
+-46.373 87.881 0
+-50.629 69.206 0
+-54.15 48.857 0
+-56.854 29.413 0
+-58.638 12.832 0
+-59.42 0.37534 0
+-59.176 -7.2958 0
+-57.987 -9.97 0
+-56.038 -7.784 0
+-53.59 -1.1816 0
+-50.924 9.1131 0
+-48.283 22.154 0
+-45.842 36.875 0
+-43.694 52.195 0
+-41.879 67.073 0
+-40.404 80.488 0
+-39.264 91.373 0
+-38.449 98.579 0
+-37.932 100.94 0
+-37.665 97.472 0
+-37.581 87.645 0
+-37.613 71.641 0
+-37.719 50.446 0
+-37.899 25.747 0
+-38.192 -0.39456 0
+-38.646 -25.965 0
+-39.268 -49.39 0
+-39.989 -69.766 0
+-40.636 -86.871 0
+-40.958 -100.97 0
+-40.672 -112.5 0
+-39.545 -121.81 0
+-37.458 -128.96 0
+-34.455 -133.73 0
+-30.737 -135.73 0
+-26.624 -134.61 0
+-22.477 -130.26 0
+-18.62 -122.91 0
+-15.268 -113.13 0
+-12.499 -101.75 0
+-10.253 -89.659 0
+-8.3751 -77.661 0
+-6.6707 -66.363 0
+-4.9684 -56.126 0
+-3.1621 -47.087 0
+-1.2302 -39.23 0
+0.77379 -32.463 0
+2.7509 -26.685 0
+4.595 -21.806 0
+6.2271 -17.752 0
+7.6144 -14.433 0
+8.7715 -11.73 0
+9.7447 -9.4828 0
+10.588 -7.5164 0
+11.338 -5.6694 0
+12.004 -3.8358 0
+12.56 -1.9908 0
+12.962 -0.19447 0
+13.166 1.4305 0
+13.147 2.7399 0
+12.917 3.6145 0
+12.526 3.9981 0
+12.057 3.9155 0
+11.613 3.4667 0
+11.292 2.8003 0
+11.173 2.0768 0
+11.3 1.4317 0
+11.676 0.94873 0
+12.265 0.65072 0
+13.001 0.50634 0
+13.804 0.45043 0
+14.587 0.40991 0
+15.274 0.32802 0
+15.806 0.18089 0
+16.146 -0.016933 0
+16.28 -0.2177 0
+16.213 -0.35374 0
+15.966 -0.35463 0
+15.568 -0.16354 0
+15.051 0.25066 0
+14.447 0.88762 0
+13.783 1.7164 0
+13.081 2.6818 0
+12.354 3.7137 0
+11.614 4.7384 0
+10.865 5.6874 0
+10.113 6.5052 0
+9.3622 7.1534 0
+8.6175 7.6122 0
+7.8864 7.8786 0
+7.1776 7.964 0
+6.5011 7.8905 0
+5.8669 7.6863 0
+5.2842 7.3828 0
+4.7605 7.0108 0
+4.3008 6.5986 0
+3.9076 6.1705 0
+3.5805 5.7455 0
+3.3169 5.3377 0
+3.1125 4.9561 0
+2.9616 4.6051 0
+2.858 4.2857 0
+2.7957 3.9959 0
+2.7687 3.7317 0
+2.7716 3.4882 0
+2.7996 3.2601 0
+2.8483 3.0427 0
+2.9138 2.8319 0
+2.9924 2.6247 0
+3.0805 2.4193 0
+3.1747 2.215 0
+3.2715 2.0119 0
+3.3676 1.8107 0
+3.4598 1.6124 0
+3.5452 1.4177 0
+3.6214 1.2275 0
+3.6862 1.0422 0
+3.738 0.86245 0
+3.7761 0.68854 0
+3.8 0.52125 0
+3.8101 0.36169 0
+3.8072 0.21154 0
+3.7926 0.073056 0
+3.768 -0.051053 0
+3.7355 -0.15781 0
+3.6971 -0.24426 0
+3.655 -0.30785 0
+3.6115 -0.34674 0
+3.5684 -0.36007 0
+3.5276 -0.34817 0
+3.4906 -0.31256 0
+3.4587 -0.25584 0
+3.4329 -0.1814 0
+3.414 -0.092995 0
+3.4028 0.005726 0
+3.4002 0.11179 0
+3.4071 0.22338 0
+3.4248 0.34027 0
+3.4551 0.46409 0
+3.5006 0.5984 0
+3.5645 0.74862 0
+3.6509 0.92176 0
+3.765 1.126 0
+3.9129 1.3703 0
+4.1017 1.6639 0
+4.3392 2.0159 0
+4.6342 2.4353 0
+4.9963 2.9306 0
+5.4358 3.5101 0
+5.9639 4.182 0
+6.5928 4.9549 0
+7.3357 5.8379 0
+8.2076 6.8407 0
+9.225 7.9738 0
+10.406 9.2477 0
+11.772 10.672 0
+13.343 12.256 0
+15.145 14.003 0
+17.199 15.912 0
+19.53 17.975 0
+22.158 20.172 0
+25.1 22.476 0
+28.367 24.85 0
+31.965 27.252 0
+35.892 29.644 0
+40.137 32.003 0
+44.686 34.341 0
+49.518 36.724 0
+54.611 39.291 0
+59.945 42.282 0
+65.499 46.045 0
+71.255 51.045 0
+77.191 57.849 0
+83.269 67.097 0
+89.424 79.445 0
+95.536 95.498 0
+101.41 115.72 0
+106.73 140.37 0
+111.04 169.4 0
+113.7 202.43 0
+113.9 238.79 0
+110.59 277.59 0
+102.55 317.92 0
+88.365 359.06 0
+66.515 400.87 0
+35.42 444.06 0
+-6.4732 490.49 0
+-60.595 543.35 0
+-128.16 607.02 0
+-210.07 686.69 0
+-306.86 787.61 0
+-418.61 914 0
+-544.99 1067.6 0
+-685.22 1246.4 0
+-838.18 1443.2 0
+-1002.4 1645.3 0
+-1176.2 1834.8 0
+-1357.3 1990.5 0
+-1543 2090.5 0
+-1729.6 2117 0
+-1911.9 2060.9 0
+-2083 1925.4 0
+-2233.9 1728.1 0
+-2353.7 1499.7 0
+-2430.6 1278.5 0
+-2453.7 1101.4 0
+-2414.4 993.2 0
+-2309.1 957.04 0
+-2140.8 969.51 0
+-1919.7 983.13 0
+-1662.4 936.83 0
+-1389.7 772.22 0
+-1122.5 450.65 0
+-877.79 -35.074 0
+-663.83 -659.25 0
+-477.56 -1373.4 0
+-303.35 -2124 0
+-114.63 -2870.9 0
+121.4 -3596.6 0
+436.49 -4303.5 0
+852.19 -4998.7 0
+1370.8 -5676.9 0
+1969.1 -6309.8 0
+2596.2 -6851.6 0
+3179.2 -7258.5 0
+3633.9 -7513.7 0
+3880.6 -7642.8 0
+3859 -7710.9 0
+3541 -7799 0
+2937.1 -7972.6 0
+2096.3 -8255.4 0
+1101.5 -8619.7 0
+60.252 -8992.2 0
+-907.3 -9267.8 0
+-1683.9 -9321.3 0
+-2172.5 -9019.2 0
+-2311.2 -8240.7 0
+-2083.7 -6919.7 0
+-1517.6 -5101.6 0
+-675.45 -2989.1 0
+360.3 -937.62 0
+1498 623.15 0
+2640.2 1331.4 0
+3682.1 1043.4 0
+4513.4 -79.894 0
+5033 -1599.7 0
+5178.1 -2937.5 0
+4955 -3568.3 0
+4453.6 -3190 0
+3827.7 -1813.2 0
+3240.8 244.94 0
+2797.5 2442 0
+2492.5 4140 0
+2207.8 4764.6 0
+1766 3977.3 0
+1020.3 1821.7 0
+-61.378 -1221.6 0
+-1360.6 -4331.5 0
+-2641.5 -6601 0
+-3641.7 -7369.2 0
+-4177.1 -6489.6 0
+-4211.7 -4404.5 0
+-3856.9 -1980.8 0
+-3301.9 -172.51 0
+-2711.4 350.31 0
+-2143.3 -541.76 0
+-1529.6 -2390.2 0
+-733.95 -4328 0
+342.73 -5421.3 0
+1660.6 -5038.4 0
+3002.6 -3087.6 0
+4030.6 -4.7476 0
+4426.5 3499.9 0
+4056.9 6784 0
+3076.5 9490.7 0
+1901.8 11514 0
+1040.8 12787 0
+849.71 13114 0
+1339.9 12248 0
+2148.3 10195 0
+2706.9 7490 0
+2532 5164.3 0
+1479.9 4302.6 0
+-171 5436.6 0
+-1857.8 8163.2 0
+-3009.1 11270 0
+-3307.7 13312 0
+-2806.6 13310 0
+-1855.6 11161 0
+-899.66 7605.5 0
+-262.92 3836.3 0
+-20.228 1030.2 0
+0 0 0
+0 0 0
+-0.031129 0.55568 0
+-0.42515 5.0632 0
+-1.5976 14.312 0
+-3.8146 28.364 0
+-7.147 46.539 0
+-11.469 67.034 0
+-16.505 87.004 0
+-21.905 103.14 0
+-27.33 112.54 0
+-32.526 113.5 0
+-37.34 105.96 0
+-41.705 91.388 0
+-45.585 72.278 0
+-48.914 51.435 0
+-51.569 31.394 0
+-53.38 14.091 0
+-54.183 0.80293 0
+-53.886 -7.7392 0
+-52.519 -11.223 0
+-50.249 -9.6867 0
+-47.342 -3.508 0
+-44.099 6.5993 0
+-40.786 19.65 0
+-37.59 34.508 0
+-34.606 50.025 0
+-31.857 65.111 0
+-29.336 78.727 0
+-27.033 89.809 0
+-24.955 97.214 0
+-23.12 99.782 0
+-21.55 96.523 0
+-20.263 86.903 0
+-19.277 71.103 0
+-18.62 50.127 0
+-18.333 25.677 0
+-18.469 -0.17727 0
+-19.059 -25.438 0
+-20.078 -48.58 0
+-21.416 -68.777 0
+-22.862 -85.88 0
+-24.135 -100.2 0
+-24.936 -112.2 0
+-25.021 -122.15 0
+-24.265 -130.01 0
+-22.7 -135.43 0
+-20.511 -137.9 0
+-17.986 -136.99 0
+-15.444 -132.59 0
+-13.159 -124.98 0
+-11.296 -114.83 0
+-9.8862 -103.06 0
+-8.8341 -90.677 0
+-7.9638 -78.535 0
+-7.0758 -67.252 0
+-6.0049 -57.152 0
+-4.6606 -48.308 0
+-3.0407 -40.635 0
+-1.2188 -33.985 0
+0.6875 -28.227 0
+2.5549 -23.276 0
+4.2871 -19.083 0
+5.8329 -15.598 0
+7.1857 -12.736 0
+8.3686 -10.357 0
+9.4116 -8.2869 0
+10.331 -6.3489 0
+11.118 -4.4148 0
+11.74 -2.4407 0
+12.154 -0.47953 0
+12.324 1.3369 0
+12.244 2.8405 0
+11.945 3.8799 0
+11.499 4.3676 0
+11.007 4.3063 0
+10.585 3.7891 0
+10.337 2.9749 0
+10.338 2.0491 0
+10.625 1.1808 0
+11.184 0.48948 0
+11.965 0.029029 0
+12.883 -0.21049 0
+13.842 -0.28492 0
+14.744 -0.26989 0
+15.506 -0.23438 0
+16.068 -0.22074 0
+16.395 -0.23529 0
+16.48 -0.25006 0
+16.337 -0.21361 0
+15.996 -0.066609 0
+15.498 0.24205 0
+14.881 0.74267 0
+14.186 1.4379 0
+13.443 2.3019 0
+12.675 3.2858 0
+11.899 4.3253 0
+11.124 5.3512 0
+10.354 6.2981 0
+9.5911 7.1117 0
+8.838 7.7535 0
+8.0976 8.2025 0
+7.3751 8.4542 0
+6.6776 8.5187 0
+6.0133 8.417 0
+5.3912 8.1774 0
+4.8195 7.8318 0
+4.305 7.4125 0
+3.8524 6.9497 0
+3.4641 6.4695 0
+3.1396 5.9932 0
+2.8768 5.5364 0
+2.6715 5.1093 0
+2.5186 4.7173 0
+2.4124 4.3616 0
+2.3472 4.04 0
+2.3174 3.7485 0
+2.3179 3.4818 0
+2.3442 3.2342 0
+2.3919 3.0005 0
+2.4571 2.7765 0
+2.536 2.5592 0
+2.625 2.3465 0
+2.7204 2.1378 0
+2.8187 1.9332 0
+2.9164 1.7332 0
+3.0102 1.5386 0
+3.0969 1.35 0
+3.1741 1.1679 0
+3.2394 0.99243 0
+3.2913 0.82355 0
+3.3288 0.66125 0
+3.3513 0.50574 0
+3.3592 0.35767 0
+3.3532 0.21826 0
+3.3346 0.089373 0
+3.3052 -0.0266 0
+3.267 -0.12691 0
+3.2224 -0.20876 0
+3.1736 -0.26964 0
+3.1232 -0.30765 0
+3.0733 -0.32184 0
+3.026 -0.31234 0
+2.9832 -0.28045 0
+2.9462 -0.22855 0
+2.9164 -0.15979 0
+2.8945 -0.07777 0
+2.8815 0.013961 0
+2.8781 0.11241 0
+2.885 0.21564 0
+2.9035 0.32313 0
+2.9353 0.43609 0
+2.9825 0.55751 0
+3.0483 0.69216 0
+3.1368 0.84628 0
+3.2529 1.0273 0
+3.4025 1.2433 0
+3.5926 1.503 0
+3.8309 1.8146 0
+4.126 2.1866 0
+4.4871 2.6269 0
+4.9242 3.1431 0
+5.4479 3.743 0
+6.0697 4.4344 0
+6.8022 5.2254 0
+7.6592 6.1246 0
+8.656 7.1413 0
+9.8095 8.2846 0
+11.138 9.5632 0
+12.663 10.984 0
+14.403 12.551 0
+16.382 14.262 0
+18.617 16.111 0
+21.128 18.08 0
+23.927 20.146 0
+27.022 22.276 0
+30.415 24.433 0
+34.098 26.587 0
+38.058 28.719 0
+42.276 30.847 0
+46.728 33.036 0
+51.391 35.429 0
+56.246 38.26 0
+61.279 41.875 0
+66.482 46.734 0
+71.853 53.404 0
+77.381 62.533 0
+83.041 74.798 0
+88.761 90.845 0
+94.402 111.21 0
+99.716 136.23 0
+104.31 165.98 0
+107.62 200.25 0
+108.87 238.53 0
+107.03 280.11 0
+100.88 324.25 0
+88.95 370.4 0
+69.626 418.52 0
+41.184 469.38 0
+1.8915 524.83 0
+-49.886 587.94 0
+-115.56 662.89 0
+-196.23 754.61 0
+-292.52 867.99 0
+-404.59 1006.8 0
+-532.05 1172.5 0
+-674.01 1362.5 0
+-829.16 1569.5 0
+-995.82 1780.5 0
+-1172 1977.2 0
+-1355.6 2138.2 0
+-1543.7 2241.3 0
+-1733 2267.8 0
+-1918.4 2207.3 0
+-2093.3 2061.6 0
+-2248.8 1846.5 0
+-2373.8 1591.1 0
+-2455.7 1332.8 0
+-2481.8 1108.9 0
+-2441.3 946.46 0
+-2327.6 852.55 0
+-2140.9 809.37 0
+-1888.7 775.69 0
+-1586.6 696.18 0
+-1255.9 516.25 0
+-920.6 197.93 0
+-602.25 -269.19 0
+-315.14 -866.5 0
+-61.719 -1555.7 0
+170.17 -2294.9 0
+407.1 -3054.3 0
+686.17 -3822.9 0
+1047 -4602.3 0
+1520.8 -5390.2 0
+2117.7 -6162.6 0
+2817.2 -6865.9 0
+3563.6 -7427.8 0
+4270.3 -7783.2 0
+4833.4 -7906.1 0
+5151.6 -7828.6 0
+5147.7 -7638 0
+4786 -7449.4 0
+4081 -7366.8 0
+3095.6 -7449.7 0
+1931.7 -7698 0
+714.54 -8054.5 0
+-423.53 -8417.6 0
+-1359.2 -8653.2 0
+-1991.8 -8607.6 0
+-2254.1 -8131 0
+-2118.9 -7123.4 0
+-1599.8 -5597.2 0
+-747.93 -3726.9 0
+354.85 -1847.2 0
+1602.8 -372.69 0
+2871.9 346.39 0
+4026.9 173.19 0
+4934.9 -734.62 0
+5488.9 -1961 0
+5637.8 -2975.5 0
+5412.9 -3320.3 0
+4933 -2761.6 0
+4376.9 -1350.3 0
+3923.4 608.2 0
+3679 2640.8 0
+3623.4 4214.5 0
+3603.3 4852.5 0
+3387.4 4259 0
+2765.8 2437.1 0
+1653.3 -246.97 0
+147.1 -3115.9 0
+-1492.2 -5371.8 0
+-2934.7 -6377.5 0
+-3908.4 -5912.2 0
+-4300.5 -4280.1 0
+-4183.8 -2211.2 0
+-3757.6 -586.68 0
+-3235.2 -96.118 0
+-2737.4 -961 0
+-2248.3 -2829.5 0
+-1654.7 -4891.2 0
+-846.29 -6179.6 0
+176.69 -5952.4 0
+1252.4 -3984.5 0
+2099 -634.33 0
+2440.3 3348.7 0
+2159.5 7160.9 0
+1397.6 10223 0
+527.31 12259 0
+-6.0959 13180 0
+87.388 12962 0
+768.16 11648 0
+1653.4 9507.9 0
+2192.1 7171 0
+1947.3 5523.7 0
+833.38 5337.9 0
+-825.49 6823.4 0
+-2448.7 9413.2 0
+-3478.5 11965 0
+-3631.6 13290 0
+-2997.1 12705 0
+-1947.9 10306 0
+-933.96 6852 0
+-271.06 3397.1 0
+-20.778 902.84 0
+0 0 0
+0 0 0
+-0.029109 0.60318 0
+-0.39652 5.4757 0
+-1.4831 15.378 0
+-3.5181 30.239 0
+-6.5377 49.218 0
+-10.393 70.367 0
+-14.803 90.748 0
+-19.442 107.03 0
+-24.025 116.34 0
+-28.366 117.08 0
+-32.393 109.27 0
+-36.103 94.423 0
+-39.499 75.023 0
+-42.523 53.826 0
+-45.021 33.298 0
+-46.771 15.33 0
+-47.541 1.2126 0
+-47.174 -8.2509 0
+-45.65 -12.632 0
+-43.103 -11.848 0
+-39.792 -6.1963 0
+-36.025 3.6319 0
+-32.086 16.614 0
+-28.173 31.542 0
+-24.387 47.188 0
+-20.75 62.41 0
+-17.249 76.149 0
+-13.874 87.349 0
+-10.648 94.893 0
+-7.6245 97.643 0
+-4.8828 94.619 0
+-2.5093 85.292 0
+-0.59079 69.841 0
+0.78827 49.27 0
+1.5488 25.282 0
+1.6283 -0.066813 0
+1.0033 -24.812 0
+-0.28121 -47.487 0
+-2.0901 -67.341 0
+-4.1963 -84.297 0
+-6.3087 -98.716 0
+-8.1263 -111.04 0
+-9.4047 -121.5 0
+-10.014 -129.94 0
+-9.968 -135.9 0
+-9.4164 -138.75 0
+-8.5977 -138.02 0
+-7.7718 -133.57 0
+-7.1482 -125.75 0
+-6.8345 -115.32 0
+-6.8162 -103.3 0
+-6.9718 -90.766 0
+-7.1159 -78.634 0
+-7.0557 -67.514 0
+-6.6425 -57.687 0
+-5.8061 -49.16 0
+-4.563 -41.776 0
+-3.0018 -35.336 0
+-1.2511 -29.682 0
+0.55672 -24.734 0
+2.3149 -20.467 0
+3.9574 -16.867 0
+5.4576 -13.878 0
+6.8141 -11.381 0
+8.0312 -9.2003 0
+9.1021 -7.1471 0
+10.001 -5.0765 0
+10.688 -2.9328 0
+11.122 -0.76985 0
+11.279 1.2645 0
+11.17 2.9738 0
+10.846 4.173 0
+10.398 4.7443 0
+9.943 4.6721 0
+9.6034 4.0483 0
+9.4851 3.0479 0
+9.6579 1.8869 0
+10.144 0.77251 0
+10.918 -0.13688 0
+11.908 -0.75557 0
+13.016 -1.0729 0
+14.13 -1.1379 0
+15.145 -1.0322 0
+15.971 -0.84092 0
+16.548 -0.62884 0
+16.848 -0.42645 0
+16.869 -0.22802 0
+16.636 0.000337 0
+16.19 0.30649 0
+15.578 0.7364 0
+14.85 1.3208 0
+14.051 2.0667 0
+13.217 2.9555 0
+12.373 3.9456 0
+11.537 4.9802 0
+10.716 5.9953 0
+9.9145 6.9292 0
+9.1327 7.7294 0
+8.3709 8.3573 0
+7.6302 8.7906 0
+6.9137 9.0233 0
+6.2265 9.064 0
+5.5754 8.9326 0
+4.9677 8.6571 0
+4.4104 8.2698 0
+3.9094 7.8043 0
+3.4686 7.2923 0
+3.0899 6.7619 0
+2.7729 6.2361 0
+2.5151 5.732 0
+2.3129 5.2611 0
+2.1614 4.8292 0
+2.0553 4.4379 0
+1.9894 4.0852 0
+1.9583 3.7666 0
+1.9573 3.4767 0
+1.982 3.2094 0
+2.0281 2.9593 0
+2.0918 2.7221 0
+2.1692 2.4944 0
+2.2567 2.2744 0
+2.3505 2.0614 0
+2.4471 1.8553 0
+2.5427 1.6566 0
+2.6342 1.4659 0
+2.7184 1.2836 0
+2.7927 1.1099 0
+2.8549 0.94444 0
+2.9033 0.78678 0
+2.937 0.63642 0
+2.9554 0.49308 0
+2.9587 0.35691 0
+2.9478 0.22869 0
+2.9237 0.10985 0
+2.8884 0.002452 0
+2.844 -0.091031 0
+2.7927 -0.16798 0
+2.7371 -0.22597 0
+2.6798 -0.26309 0
+2.6233 -0.27829 0
+2.5697 -0.27153 0
+2.5211 -0.24386 0
+2.4791 -0.19739 0
+2.445 -0.13503 0
+2.4198 -0.060141 0
+2.4043 0.023873 0
+2.3991 0.11406 0
+2.405 0.20837 0
+2.423 0.30605 0
+2.4544 0.40788 0
+2.5015 0.51634 0
+2.567 0.63549 0
+2.6548 0.77085 0
+2.7696 0.92906 0
+2.9171 1.1175 0
+3.1038 1.344 0
+3.3374 1.6163 0
+3.6258 1.9422 0
+3.9778 2.3292 0
+4.403 2.7844 0
+4.9112 3.3149 0
+5.5133 3.928 0
+6.2207 4.6311 0
+7.0464 5.4317 0
+8.0041 6.3381 0
+9.1093 7.3582 0
+10.379 8.4994 0
+11.83 9.7679 0
+13.482 11.167 0
+15.354 12.696 0
+17.46 14.348 0
+19.817 16.11 0
+22.434 17.96 0
+25.315 19.872 0
+28.457 21.815 0
+31.849 23.762 0
+35.475 25.703 0
+39.312 27.657 0
+43.334 29.693 0
+47.518 31.951 0
+51.846 34.661 0
+56.31 38.16 0
+60.913 42.899 0
+65.669 49.442 0
+70.598 58.433 0
+75.706 70.566 0
+80.973 86.518 0
+86.314 106.88 0
+91.548 132.08 0
+96.356 162.32 0
+100.24 197.52 0
+102.47 237.38 0
+102.09 281.36 0
+97.872 328.94 0
+88.35 379.75 0
+71.847 433.89 0
+46.548 492.22 0
+10.594 556.61 0
+-37.795 630.03 0
+-100.18 716.46 0
+-177.79 820.52 0
+-271.36 946.71 0
+-381.06 1098.4 0
+-506.48 1276.5 0
+-646.66 1478 0
+-800.16 1695.3 0
+-965.21 1915.1 0
+-1139.9 2119.2 0
+-1321.9 2285.6 0
+-1509 2392 0
+-1698 2419.1 0
+-1884.7 2355.4 0
+-2063.1 2201.1 0
+-2225 1970.1 0
+-2359.5 1689.7 0
+-2453.5 1395.6 0
+-2493.1 1125 0
+-2465 906.22 0
+-2359.6 749.78 0
+-2172.6 643.1 0
+-1907.9 551.4 0
+-1577.4 425.92 0
+-1200.7 217.33 0
+-801.97 -109.75 0
+-405.97 -566.98 0
+-32.282 -1141.4 0
+309.96 -1804.4 0
+626.35 -2526.6 0
+938.79 -3290.8 0
+1283 -4095.2 0
+1701.3 -4944.1 0
+2230.3 -5827.5 0
+2887.2 -6702.2 0
+3656.1 -7486.8 0
+4480.9 -8077 0
+5268.3 -8380.8 0
+5901.3 -8358.3 0
+6262.4 -8047.1 0
+6260.5 -7560.1 0
+5852.9 -7053.1 0
+5056.9 -6677.3 0
+3947.8 -6535.1 0
+2644.7 -6656.8 0
+1289 -6999.4 0
+23.533 -7459.3 0
+-1025.5 -7888.2 0
+-1759.1 -8109.4 0
+-2111.7 -7945.7 0
+-2052.8 -7267.6 0
+-1588.7 -6057.1 0
+-762.75 -4459.3 0
+345.31 -2781 0
+1621.5 -1412.2 0
+2925.5 -685.29 0
+4104.4 -730.61 0
+5016.6 -1402.5 0
+5560.6 -2320.6 0
+5705.4 -3013.7 0
+5509.3 -3096.9 0
+5115.9 -2401.9 0
+4718.6 -1011.9 0
+4498.5 789.38 0
+4551.8 2608.3 0
+4835.5 4028.1 0
+5161.1 4681.5 0
+5249.2 4326.3 0
+4834.6 2929.2 0
+3782.1 732.91 0
+2161.7 -1752.3 0
+241.48 -3869.9 0
+-1605.6 -5034.5 0
+-3043.2 -4963.4 0
+-3896.3 -3814 0
+-4198.8 -2154 0
+-4143.7 -761.87 0
+-3964.5 -325.74 0
+-3812.2 -1154.2 0
+-3693 -3013 0
+-3495.8 -5167.6 0
+-3089.4 -6640.5 0
+-2434.5 -6593.5 0
+-1643.4 -4675.4 0
+-949.51 -1164.4 0
+-592.56 3164 0
+-677.18 7366.7 0
+-1084.4 10671 0
+-1500.3 12655 0
+-1567.1 13232 0
+-1088.6 12543 0
+-174.87 10900 0
+770.19 8799.6 0
+1233.9 6919.6 0
+862.27 5975 0
+-336.49 6422.7 0
+-1971.9 8175.8 0
+-3448.8 10543 0
+-4245.5 12485 0
+-4141.8 13084 0
+-3285.6 11949 0
+-2081.8 9350.2 0
+-981.53 6046.1 0
+-281.85 2937.3 0
+-21.484 770.96 0
+0 0 0
+0 0 0
+-0.025887 0.64601 0
+-0.35196 5.8466 0
+-1.3118 16.332 0
+-3.0959 31.9 0
+-5.7144 51.561 0
+-9.0086 73.238 0
+-12.708 93.911 0
+-16.516 110.24 0
+-20.196 119.43 0
+-23.621 119.95 0
+-26.781 111.92 0
+-29.729 96.897 0
+-32.508 77.336 0
+-35.075 55.918 0
+-37.272 35.02 0
+-38.845 16.471 0
+-39.515 1.563 0
+-39.069 -8.829 0
+-37.431 -14.155 0
+-34.692 -14.203 0
+-31.079 -9.173 0
+-26.888 0.27927 0
+-22.405 13.103 0
+-17.839 28.02 0
+-13.304 43.724 0
+-8.8336 59.015 0
+-4.4208 72.812 0
+-0.067312 84.074 0
+4.1881 91.717 0
+8.2605 94.635 0
+12.03 91.874 0
+15.358 82.911 0
+18.108 67.925 0
+20.151 47.91 0
+21.381 24.553 0
+21.724 -0.11429 0
+21.159 -24.173 0
+19.738 -46.221 0
+17.602 -65.577 0
+14.976 -82.233 0
+12.141 -96.586 0
+9.3856 -109.07 0
+6.9456 -119.87 0
+4.9576 -128.74 0
+3.4345 -135.09 0
+2.2763 -138.23 0
+1.3119 -137.63 0
+0.35924 -133.15 0
+-0.71546 -125.19 0
+-1.9569 -114.59 0
+-3.3089 -102.47 0
+-4.6324 -89.95 0
+-5.7472 -77.984 0
+-6.4814 -67.166 0
+-6.7142 -57.73 0
+-6.4024 -49.618 0
+-5.5823 -42.608 0
+-4.3532 -36.454 0
+-2.847 -30.978 0
+-1.1963 -26.103 0
+0.48983 -21.83 0
+2.1371 -18.172 0
+3.7033 -15.101 0
+5.1652 -12.51 0
+6.5028 -10.222 0
+7.6874 -8.0406 0
+8.6776 -5.8093 0
+9.4269 -3.4685 0
+9.8973 -1.0804 0
+10.076 1.1849 0
+9.99 3.0991 0
+9.7064 4.4432 0
+9.3307 5.0717 0
+8.9882 4.9553 0
+8.8038 4.1897 0
+8.8785 2.9719 0
+9.2723 1.5527 0
+9.9937 0.18094 0
+11 -0.94501 0
+12.206 -1.7077 0
+13.498 -2.0777 0
+14.756 -2.0997 0
+15.866 -1.8651 0
+16.739 -1.4788 0
+17.317 -1.0313 0
+17.575 -0.5798 0
+17.523 -0.1428 0
+17.192 0.29516 0
+16.634 0.7705 0
+15.904 1.3248 0
+15.06 1.9902 0
+14.153 2.78 0
+13.221 3.6836 0
+12.292 4.6686 0
+11.386 5.6863 0
+10.509 6.6791 0
+9.6649 7.5894 0
+8.8528 8.3666 0
+8.0713 8.9723 0
+7.3201 9.3831 0
+6.6006 9.5914 0
+5.9163 9.6042 0
+5.2723 9.4403 0
+4.6742 9.1273 0
+4.1279 8.6979 0
+3.6378 8.1865 0
+3.2071 7.6265 0
+2.8369 7.0474 0
+2.5263 6.4738 0
+2.2731 5.9241 0
+2.0734 5.4108 0
+1.9227 4.9404 0
+1.816 4.5146 0
+1.7483 4.1315 0
+1.7148 3.7864 0
+1.7108 3.4736 0
+1.7319 3.187 0
+1.7742 2.9207 0
+1.8337 2.6704 0
+1.9065 2.4327 0
+1.989 2.2057 0
+2.0773 1.9885 0
+2.1679 1.7813 0
+2.2572 1.5842 0
+2.3419 1.3977 0
+2.4191 1.222 0
+2.4862 1.0568 0
+2.5411 0.90145 0
+2.5823 0.75508 0
+2.6086 0.61671 0
+2.6198 0.48558 0
+2.616 0.36137 0
+2.5978 0.24441 0
+2.5666 0.13572 0
+2.5241 0.037011 0
+2.4724 -0.049547 0
+2.4139 -0.12154 0
+2.3511 -0.17664 0
+2.2868 -0.21298 0
+2.2234 -0.2294 0
+2.1633 -0.22568 0
+2.1087 -0.20265 0
+2.0613 -0.16212 0
+2.0224 -0.1067 0
+1.993 -0.039496 0
+1.9739 0.036276 0
+1.9657 0.11775 0
+1.9689 0.2028 0
+1.9845 0.29047 0
+2.0135 0.38116 0
+2.058 0.4768 0
+2.1204 0.58083 0
+2.2042 0.69804 0
+2.314 0.83431 0
+2.455 0.99628 0
+2.6333 1.1911 0
+2.8561 1.4259 0
+3.1308 1.708 0
+3.4658 2.0443 0
+3.8697 2.4416 0
+4.3517 2.9067 0
+4.9218 3.446 0
+5.5905 4.0664 0
+6.3694 4.7748 0
+7.2711 5.5783 0
+8.3092 6.484 0
+9.4987 7.4983 0
+10.855 8.6268 0
+12.395 9.8727 0
+14.132 11.236 0
+16.082 12.711 0
+18.255 14.287 0
+20.657 15.946 0
+23.29 17.668 0
+26.146 19.425 0
+29.211 21.2 0
+32.466 22.985 0
+35.886 24.804 0
+39.442 26.726 0
+43.111 28.888 0
+46.876 31.513 0
+50.736 34.928 0
+54.701 39.573 0
+58.803 45.995 0
+63.083 54.838 0
+67.581 66.798 0
+72.317 82.576 0
+77.261 102.81 0
+82.295 128.02 0
+87.17 158.5 0
+91.457 194.36 0
+94.507 235.44 0
+95.416 281.44 0
+93.003 332.05 0
+85.817 387.1 0
+72.174 446.87 0
+50.216 512.34 0
+18.016 585.39 0
+-26.292 668.93 0
+-84.367 766.73 0
+-157.51 883.1 0
+-246.5 1022.1 0
+-351.56 1186.7 0
+-472.25 1377.1 0
+-607.54 1590.2 0
+-755.98 1817.7 0
+-915.81 2046.3 0
+-1085.2 2257.6 0
+-1262.2 2429.7 0
+-1445 2540.1 0
+-1631.2 2569.1 0
+-1817.7 2504.2 0
+-1999.6 2344.2 0
+-2169.6 2100.9 0
+-2317.8 1799.3 0
+-2431.2 1473.4 0
+-2495.1 1159 0
+-2494.1 884.76 0
+-2415 663.7 0
+-2249.1 487.62 0
+-1994.7 327.84 0
+-1658.3 142.49 0
+-1255.1 -111.31 0
+-807.04 -464.51 0
+-339.34 -927.62 0
+124.52 -1490.9 0
+568.53 -2133.6 0
+989.61 -2837.9 0
+1400.8 -3599.9 0
+1831 -4429.5 0
+2318.9 -5336.5 0
+2902 -6306.2 0
+3601.6 -7278.5 0
+4407.4 -8143.6 0
+5267.5 -8763.2 0
+6088.5 -9014.1 0
+6748.3 -8838.1 0
+7120.5 -8276 0
+7104.3 -7467.1 0
+6651 -6612.7 0
+5778.9 -5917.6 0
+4572 -5533.4 0
+3162.7 -5523.6 0
+1705.7 -5857.9 0
+351.72 -6425.9 0
+-772.17 -7058.6 0
+-1572.4 -7552.9 0
+-1989.9 -7704.3 0
+-1998.4 -7356.9 0
+-1603.3 -6466.2 0
+-844.65 -5148.5 0
+199.67 -3679.7 0
+1413.3 -2420.6 0
+2650.3 -1682.8 0
+3755 -1593 0
+4591.3 -2025.6 0
+5075.4 -2646.4 0
+5202.5 -3050.3 0
+5057.3 -2924.8 0
+4800.5 -2159.4 0
+4628.1 -858.38 0
+4710 726.78 0
+5122.1 2289.2 0
+5796.3 3533.3 0
+6514.5 4206.8 0
+6962.4 4127 0
+6833.7 3228.7 0
+5951.9 1627.8 0
+4355.3 -345.31 0
+2300.3 -2196.1 0
+172.11 -3412.5 0
+-1662.3 -3662.6 0
+-2991.1 -2957.1 0
+-3817.5 -1690.9 0
+-4315 -525.68 0
+-4706.6 -138.96 0
+-5134.3 -925.63 0
+-5589.8 -2775.2 0
+-5939.5 -5038.8 0
+-6024 -6735.1 0
+-5772.2 -6936 0
+-5262.7 -5166.2 0
+-4694.9 -1622.7 0
+-4279.8 2900.8 0
+-4110.8 7340 0
+-4090.5 10758 0
+-3970 12622 0
+-3494.9 12870 0
+-2583.2 11814 0
+-1430.1 10002 0
+-457.72 8100.3 0
+-118.79 6779.3 0
+-652.24 6547 0
+-1929.4 7549.7 0
+-3485.3 9445.2 0
+-4723.6 11474 0
+-5185.3 12746 0
+-4739 12625 0
+-3605.1 10995 0
+-2220.4 8271.1 0
+-1026.9 5179.4 0
+-291.23 2455.8 0
+-22.052 634.7 0
+0 0 0
+0 0 0
+-0.021324 0.6821 0
+-0.28978 6.1587 0
+-1.0789 17.132 0
+-2.5408 33.286 0
+-4.6726 53.501 0
+-7.3249 75.581 0
+-10.252 96.443 0
+-13.191 112.75 0
+-15.941 121.77 0
+-18.416 122.07 0
+-20.646 113.85 0
+-22.727 98.717 0
+-24.741 79.092 0
+-26.679 57.572 0
+-28.403 36.43 0
+-29.662 17.417 0
+-30.156 1.8084 0
+-29.628 -9.4629 0
+-27.944 -15.733 0
+-25.13 -16.657 0
+-21.357 -12.33 0
+-16.884 -3.3561 0
+-11.978 9.201 0
+-6.8537 24.006 0
+-1.6413 39.682 0
+3.6024 54.971 0
+8.859 68.773 0
+14.105 80.06 0
+19.279 87.781 0
+24.27 90.869 0
+28.928 88.399 0
+33.082 79.861 0
+36.559 65.43 0
+39.203 46.086 0
+40.887 23.49 0
+41.529 -0.36049 0
+41.103 -23.597 0
+39.657 -44.878 0
+37.32 -63.591 0
+34.3 -79.787 0
+30.85 -93.897 0
+27.234 -106.35 0
+23.674 -117.29 0
+20.315 -126.38 0
+17.204 -132.98 0
+14.305 -136.3 0
+11.529 -135.79 0
+8.7874 -131.31 0
+6.0308 -123.31 0
+3.2808 -112.69 0
+0.63142 -100.62 0
+-1.7718 -88.293 0
+-3.7677 -76.645 0
+-5.2202 -66.255 0
+-6.0493 -57.306 0
+-6.2465 -49.68 0
+-5.8709 -43.1 0
+-5.0299 -37.285 0
+-3.8521 -32.041 0
+-2.4619 -27.3 0
+-0.96136 -23.083 0
+0.57565 -19.428 0
+2.0986 -16.324 0
+3.5688 -13.673 0
+4.9473 -11.297 0
+6.1874 -8.9914 0
+7.2358 -6.5943 0
+8.0418 -4.0491 0
+8.571 -1.433 0
+8.8201 1.0573 0
+8.8266 3.1603 0
+8.669 4.6239 0
+8.4583 5.2786 0
+8.3202 5.0863 0
+8.3736 4.1514 0
+8.7093 2.6968 0
+9.3731 1.0109 0
+10.359 -0.61471 0
+11.609 -1.942 0
+13.027 -2.8235 0
+14.49 -3.2133 0
+15.871 -3.1551 0
+17.056 -2.7527 0
+17.958 -2.1338 0
+18.522 -1.4169 0
+18.73 -0.6881 0
+18.6 0.009233 0
+18.172 0.67174 0
+17.504 1.3247 0
+16.66 2.006 0
+15.703 2.7508 0
+14.686 3.579 0
+13.652 4.49 0
+12.633 5.4612 0
+11.645 6.4525 0
+10.698 7.4136 0
+9.7947 8.2911 0
+8.9336 9.0367 0
+8.113 9.6122 0
+7.3316 9.9935 0
+6.5898 10.171 0
+5.89 10.151 0
+5.2358 9.9511 0
+4.6317 9.5979 0
+4.0819 9.1248 0
+3.5899 8.567 0
+3.1576 7.9591 0
+2.7855 7.332 0
+2.4722 6.7116 0
+2.2151 6.1175 0
+2.0104 5.5628 0
+1.8537 5.0548 0
+1.7402 4.5954 0
+1.665 4.1824 0
+1.6235 3.8113 0
+1.6111 3.4761 0
+1.6236 3.1703 0
+1.6569 2.8882 0
+1.707 2.6251 0
+1.7699 2.3778 0
+1.8419 2.1442 0
+1.9193 1.9234 0
+1.9983 1.7154 0
+2.0757 1.5203 0
+2.1482 1.3382 0
+2.213 1.1692 0
+2.2677 1.0125 0
+2.3104 0.86715 0
+2.3397 0.73186 0
+2.3547 0.6052 0
+2.3549 0.48596 0
+2.3406 0.3734 0
+2.3126 0.26741 0
+2.2719 0.16862 0
+2.2203 0.078374 0
+2.1598 -0.001448 0
+2.0928 -0.068654 0
+2.0219 -0.12106 0
+1.9497 -0.15681 0
+1.8787 -0.17469 0
+1.8114 -0.17431 0
+1.7499 -0.15625 0
+1.696 -0.12201 0
+1.6511 -0.07391 0
+1.6161 -0.014753 0
+1.5916 0.052467 0
+1.5783 0.12499 0
+1.5766 0.20068 0
+1.5871 0.27837 0
+1.6109 0.35812 0
+1.6495 0.44137 0
+1.7052 0.53095 0
+1.7812 0.63095 0
+1.8815 0.74653 0
+2.0109 0.88366 0
+2.1752 1.0488 0
+2.3807 1.2486 0
+2.6343 1.4898 0
+2.9437 1.7791 0
+3.3167 2.1227 0
+3.7618 2.527 0
+4.2879 2.9982 0
+4.9045 3.5425 0
+5.6219 4.1661 0
+6.4513 4.8753 0
+7.4049 5.6766 0
+8.4954 6.5757 0
+9.7363 7.5777 0
+11.141 8.6858 0
+12.722 9.9006 0
+14.49 11.219 0
+16.453 12.632 0
+18.614 14.127 0
+20.969 15.686 0
+23.51 17.291 0
+26.219 18.926 0
+29.074 20.591 0
+32.046 22.312 0
+35.106 24.16 0
+38.231 26.265 0
+41.405 28.843 0
+44.627 32.208 0
+47.918 36.784 0
+51.318 43.103 0
+54.888 51.796 0
+58.694 63.558 0
+62.79 79.106 0
+67.193 99.121 0
+71.84 124.18 0
+76.547 154.72 0
+80.959 190.96 0
+84.5 232.95 0
+86.337 280.6 0
+85.351 333.81 0
+80.138 392.66 0
+69.04 457.62 0
+50.204 529.78 0
+21.688 611.08 0
+-18.403 704.36 0
+-71.767 813.2 0
+-139.73 941.57 0
+-223.11 1093.1 0
+-322.1 1270.2 0
+-436.25 1472.8 0
+-564.55 1697 0
+-705.55 1934.5 0
+-857.58 2171.6 0
+-1019 2390.2 0
+-1188.5 2568.4 0
+-1364.8 2683.7 0
+-1546.6 2716.2 0
+-1731.9 2653 0
+-1917.4 2491.1 0
+-2097.5 2240.7 0
+-2263.4 1924 0
+-2403 1572.4 0
+-2501.2 1219.8 0
+-2541.2 894.29 0
+-2506.7 609.74 0
+-2384.1 361.22 0
+-2165.2 125.29 0
+-1850 -133.27 0
+-1446.8 -450.31 0
+-972.55 -850.67 0
+-450.35 -1341.2 0
+94.688 -1912.3 0
+640.75 -2547.9 0
+1175.2 -3239.5 0
+1699.5 -3995.6 0
+2230.7 -4838.6 0
+2798.3 -5786.2 0
+3435.2 -6823.1 0
+4163.1 -7876.1 0
+4976.8 -8809.7 0
+5831.9 -9451.8 0
+6641.4 -9646.1 0
+7286.2 -9313.1 0
+7638.7 -8493.1 0
+7593.3 -7350.4 0
+7096.8 -6133.2 0
+6165.8 -5103.8 0
+4887.9 -4467.4 0
+3403.1 -4324.2 0
+1875.2 -4655.9 0
+460.49 -5341.5 0
+-714.31 -6186.1 0
+-1561.8 -6955.7 0
+-2032.4 -7417.1 0
+-2108.3 -7389.8 0
+-1800.5 -6806 0
+-1150.8 -5755.5 0
+-236.6 -4484.2 0
+827.35 -3323.4 0
+1899.5 -2565.4 0
+2834.7 -2338.4 0
+3516.4 -2544.8 0
+3888.8 -2903.4 0
+3977.2 -3076.4 0
+3889.1 -2817.6 0
+3792.8 -2061.9 0
+3874.4 -921.31 0
+4281.3 394.18 0
+5062.6 1667 0
+6127.4 2720.6 0
+7240.1 3415.9 0
+8069.8 3630.8 0
+8289.7 3272.5 0
+7695.8 2334.3 0
+6294 965.71 0
+4311.2 -507.65 0
+2111.4 -1657.7 0
+52.365 -2114.3 0
+-1651.4 -1749 0
+-2989.2 -788.84 0
+-4109.3 216.4 0
+-5197.2 594.22 0
+-6346.7 -142.27 0
+-7498 -2008.7 0
+-8471.8 -4437.8 0
+-9077.1 -6437 0
+-9225 -6980.7 0
+-8982.4 -5468.4 0
+-8532.3 -2019.2 0
+-8063.2 2553.5 0
+-7651.4 7075 0
+-7212.1 10473 0
+-6558.7 12145 0
+-5545.9 12086 0
+-4216.9 10780 0
+-2855.6 8974.9 0
+-1892.3 7440.2 0
+-1697.5 6768.8 0
+-2372.2 7227.3 0
+-3659.8 8668.8 0
+-5035.6 10555 0
+-5933.8 12128 0
+-5990.3 12690 0
+-5180 11890 0
+-3791.4 9851.8 0
+-2271.9 7091.9 0
+-1030.7 4275.9 0
+-288.7 1967 0
+-21.715 498.29 0
+0 0 0
+0 0 0
+-0.014929 0.70877 0
+-0.2037 6.3901 0
+-0.76317 17.728 0
+-1.8098 34.325 0
+-3.3481 54.956 0
+-5.265 77.33 0
+-7.3601 98.304 0
+-9.4081 114.54 0
+-11.232 123.35 0
+-12.757 123.42 0
+-14.026 115.02 0
+-15.155 99.799 0
+-16.266 80.169 0
+-17.401 58.645 0
+-18.476 37.391 0
+-19.277 18.064 0
+-19.514 1.8997 0
+-18.904 -10.137 0
+-17.251 -17.289 0
+-14.501 -19.093 0
+-10.74 -15.531 0
+-6.1585 -7.1433 0
+-0.9833 5.019 0
+4.5789 19.586 0
+10.378 35.125 0
+16.324 50.334 0
+22.357 64.089 0
+28.419 75.373 0
+34.417 83.167 0
+40.217 86.44 0
+45.647 84.295 0
+50.513 76.235 0
+54.623 62.429 0
+57.807 43.84 0
+59.925 22.101 0
+60.885 -0.83249 0
+60.653 -23.139 0
+59.264 -43.535 0
+56.824 -61.47 0
+53.506 -77.045 0
+49.53 -90.721 0
+45.125 -102.93 0
+40.496 -113.78 0
+35.796 -122.9 0
+31.116 -129.57 0
+26.49 -132.96 0
+21.927 -132.51 0
+17.437 -128.08 0
+13.065 -120.15 0
+8.8994 -109.68 0
+5.0662 -97.855 0
+1.7086 -85.889 0
+-1.0444 -74.711 0
+-3.1063 -64.859 0
+-4.4501 -56.469 0
+-5.1111 -49.369 0
+-5.1751 -43.244 0
+-4.7573 -37.789 0
+-3.9788 -32.806 0
+-2.9482 -28.24 0
+-1.7516 -24.13 0
+-0.45261 -20.533 0
+0.89972 -17.45 0
+2.2605 -14.784 0
+3.5804 -12.354 0
+4.8025 -9.9488 0
+5.8671 -7.4057 0
+6.7225 -4.6757 0
+7.3382 -1.8553 0
+7.7175 0.83055 0
+7.9027 3.0874 0
+7.9739 4.6336 0
+8.0377 5.2804 0
+8.2098 4.9847 0
+8.5944 3.864 0
+9.265 2.1687 0
+10.251 0.22545 0
+11.53 -1.6331 0
+13.033 -3.1318 0
+14.657 -4.0956 0
+16.275 -4.4659 0
+17.76 -4.2878 0
+19.003 -3.68 0
+19.919 -2.7948 0
+20.462 -1.7799 0
+20.621 -0.75057 0
+20.419 0.22455 0
+19.903 1.1238 0
+19.137 1.9618 0
+18.188 2.774 0
+17.123 3.5987 0
+15.999 4.464 0
+14.859 5.3794 0
+13.736 6.3325 0
+12.649 7.2928 0
+11.607 8.2166 0
+10.615 9.0554 0
+9.6725 9.7631 0
+8.7772 10.302 0
+7.9287 10.647 0
+7.1275 10.789 0
+6.3756 10.73 0
+5.6759 10.489 0
+5.0321 10.092 0
+4.4474 9.5716 0
+3.9242 8.9651 0
+3.4634 8.3077 0
+3.0648 7.6317 0
+2.7265 6.964 0
+2.4455 6.3251 0
+2.2176 5.7291 0
+2.0386 5.1833 0
+1.9035 4.6899 0
+1.8075 4.2469 0
+1.7459 3.8495 0
+1.714 3.4915 0
+1.7074 3.1664 0
+1.7219 2.8684 0
+1.7532 2.5927 0
+1.7974 2.336 0
+1.8504 2.096 0
+1.9084 1.8719 0
+1.968 1.6634 0
+2.0257 1.4704 0
+2.0784 1.2929 0
+2.1238 1.1304 0
+2.1594 0.98192 0
+2.1836 0.84618 0
+2.1951 0.72141 0
+2.1933 0.6058 0
+2.1777 0.49777 0
+2.1486 0.39615 0
+2.1066 0.30046 0
+2.053 0.21095 0
+1.9893 0.12862 0
+1.9174 0.055056 0
+1.8396 -0.007771 0
+1.7584 -0.057825 0
+1.6763 -0.093299 0
+1.5959 -0.11291 0
+1.5194 -0.11613 0
+1.4491 -0.10328 0
+1.3865 -0.075574 0
+1.3332 -0.034984 0
+1.2899 0.015975 0
+1.2572 0.074555 0
+1.2357 0.13813 0
+1.2255 0.20457 0
+1.2272 0.27255 0
+1.2416 0.34183 0
+1.2699 0.41338 0
+1.3141 0.48947 0
+1.377 0.57355 0
+1.4621 0.67011 0
+1.5738 0.78449 0
+1.717 0.92255 0
+1.8975 1.0905 0
+2.1216 1.2946 0
+2.396 1.541 0
+2.7276 1.836 0
+3.1241 2.1854 0
+3.5933 2.595 0
+4.1438 3.0705 0
+4.7845 3.6178 0
+5.5252 4.2425 0
+6.3763 4.9504 0
+7.3488 5.7469 0
+8.4537 6.6369 0
+9.702 7.6239 0
+11.104 8.7096 0
+12.666 9.8924 0
+14.393 11.167 0
+16.286 12.524 0
+18.337 13.95 0
+20.535 15.433 0
+22.859 16.963 0
+25.283 18.544 0
+27.778 20.206 0
+30.313 22.017 0
+32.86 24.106 0
+35.405 26.678 0
+37.947 30.033 0
+40.509 34.575 0
+43.139 40.819 0
+45.907 49.378 0
+48.896 60.942 0
+52.187 76.236 0
+55.829 95.972 0
+59.805 120.8 0
+63.984 151.24 0
+68.076 187.66 0
+71.574 230.31 0
+73.717 279.29 0
+73.456 334.75 0
+69.452 396.98 0
+60.096 466.67 0
+43.576 545.05 0
+17.976 634.13 0
+-18.588 736.66 0
+-67.802 856.05 0
+-130.99 995.95 0
+-208.94 1159.6 0
+-301.85 1348.7 0
+-409.25 1562.9 0
+-530.14 1797.8 0
+-663.13 2044.7 0
+-806.73 2290.2 0
+-959.65 2515.9 0
+-1121 2700.6 0
+-1290.4 2822 0
+-1467.6 2860.3 0
+-1652.3 2801.9 0
+-1842.7 2642.9 0
+-2035.2 2391.4 0
+-2222.7 2067 0
+-2394.4 1698 0
+-2535.9 1315.6 0
+-2629.5 945.89 0
+-2656.1 602.45 0
+-2597.9 282.03 0
+-2440.4 -34.902 0
+-2175.6 -377.75 0
+-1803.9 -775.28 0
+-1334.9 -1245.1 0
+-786.72 -1788.2 0
+-183.33 -2391.6 0
+449.68 -3040.3 0
+1090.9 -3731.2 0
+1729 -4482.6 0
+2366 -5328.8 0
+3017.6 -6297.2 0
+3706.7 -7375.7 0
+4451.4 -8482.9 0
+5250.1 -9462.9 0
+6067.2 -10113 0
+6827.4 -10245 0
+7421.9 -9754.7 0
+7728.9 -8679.1 0
+7643.3 -7203.5 0
+7108.5 -5621 0
+6136.6 -4252.2 0
+4812.6 -3358.6 0
+3277.7 -3079.5 0
+1698.9 -3410.4 0
+235.92 -4217.9 0
+-984.26 -5277.8 0
+-1878.7 -6321 0
+-2406.4 -7083 0
+-2559.9 -7358.4 0
+-2359.8 -7057.4 0
+-1854.5 -6246.6 0
+-1124 -5144.7 0
+-279.38 -4057.7 0
+549.26 -3264.6 0
+1237.8 -2902.5 0
+1700.1 -2908.7 0
+1915.1 -3058 0
+1939 -3076.5 0
+1896.7 -2772.3 0
+1953.6 -2110.4 0
+2275.2 -1196.3 0
+2977.9 -192.49 0
+4082.9 769.79 0
+5483.4 1623.9 0
+6941.9 2334.3 0
+8134 2836.8 0
+8736.2 3015.1 0
+8534.6 2750.7 0
+7508 2023.6 0
+5839.7 998.46 0
+3842.2 21.109 0
+1823.1 -505.53 0
+-39.221 -326.43 0
+-1745.2 480.06 0
+-3420.5 1452.7 0
+-5194.1 1901.8 0
+-7080.1 1235.1 0
+-8935.6 -687.55 0
+-10518 -3364.2 0
+-11607 -5766.4 0
+-12115 -6752.4 0
+-12119 -5592.3 0
+-11804 -2339 0
+-11334 2160.6 0
+-10757 6623.5 0
+-9984.6 9869.9 0
+-8880.1 11274 0
+-7406 10925 0
+-5730.2 9486.2 0
+-4217.4 7858.1 0
+-3286.8 6834.7 0
+-3203.4 6861.7 0
+-3921 7941.4 0
+-5072.5 9672.3 0
+-6118.2 11398 0
+-6576.6 12435 0
+-6216.2 12311 0
+-5120.5 10933 0
+-3615 8611.2 0
+-2109.8 5909 0
+-939.64 3408 0
+-260.07 1509.1 0
+-19.44 372.24 0
+0 0 0
+0 0 0
+-0.005529 0.72177 0
+-0.07846 6.506 0
+-0.31216 18.041 0
+-0.79247 34.9 0
+-1.5644 55.805 0
+-2.5956 78.388 0
+-3.7657 99.442 0
+-4.8973 115.6 0
+-5.82 124.21 0
+-6.437 124.03 0
+-6.7619 115.42 0
+-6.9061 100.09 0
+-7.019 80.47 0
+-7.2085 59.007 0
+-7.4736 37.769 0
+-7.6782 18.307 0
+-7.5764 1.786 0
+-6.8788 -10.837 0
+-5.3322 -18.749 0
+-2.7848 -21.388 0
+0.7868 -18.631 0
+5.2908 -10.936 0
+10.564 0.68616 0
+16.422 14.862 0
+22.699 30.132 0
+29.264 45.162 0
+36.005 58.812 0
+42.815 70.071 0
+49.563 77.942 0
+56.087 81.423 0
+62.198 79.64 0
+67.689 72.104 0
+72.361 58.981 0
+76.034 41.21 0
+78.561 20.396 0
+79.844 -1.5429 0
+79.836 -22.833 0
+78.552 -42.242 0
+76.07 -59.27 0
+72.523 -74.064 0
+68.087 -87.115 0
+62.955 -98.865 0
+57.316 -109.4 0
+51.333 -118.33 0
+45.141 -124.89 0
+38.853 -128.26 0
+32.577 -127.84 0
+26.43 -123.52 0
+20.551 -115.8 0
+15.094 -105.65 0
+10.215 -94.272 0
+6.0465 -82.851 0
+2.6762 -72.287 0
+0.1298 -63.071 0
+-1.629 -55.288 0
+-2.6877 -48.727 0
+-3.1643 -43.049 0
+-3.1833 -37.942 0
+-2.8565 -33.22 0
+-2.2717 -28.845 0
+-1.491 -24.876 0
+-0.55806 -21.383 0
+0.49066 -18.372 0
+1.6157 -15.745 0
+2.7685 -13.311 0
+3.8919 -10.856 0
+4.9275 -8.2151 0
+5.8272 -5.3515 0
+6.5648 -2.3814 0
+7.1458 0.44301 0
+7.6105 2.7982 0
+8.0297 4.3781 0
+8.4938 4.9794 0
+9.097 4.559 0
+9.9193 3.2488 0
+11.01 1.3266 0
+12.379 -0.84573 0
+13.99 -2.8983 0
+15.766 -4.5231 0
+17.601 -5.5228 0
+19.371 -5.8286 0
+20.956 -5.49 0
+22.253 -4.6419 0
+23.187 -3.4614 0
+23.719 -2.1253 0
+23.843 -0.77717 0
+23.589 0.48998 0
+23.005 1.637 0
+22.159 2.6692 0
+21.118 3.6196 0
+19.951 4.5307 0
+18.714 5.4389 0
+17.453 6.3634 0
+16.2 7.3024 0
+14.976 8.2341 0
+13.793 9.1218 0
+12.658 9.9214 0
+11.572 10.589 0
+10.537 11.088 0
+9.5537 11.392 0
+8.6247 11.491 0
+7.7528 11.388 0
+6.9417 11.099 0
+6.1951 10.651 0
+5.5157 10.079 0
+4.9055 9.4188 0
+4.3648 8.7075 0
+3.8924 7.9786 0
+3.486 7.2601 0
+3.142 6.5734 0
+2.856 5.9331 0
+2.623 5.3469 0
+2.438 4.8172 0
+2.2957 4.3419 0
+2.191 3.9163 0
+2.1188 3.534 0
+2.0742 3.1884 0
+2.0524 2.8734 0
+2.049 2.5844 0
+2.0594 2.3177 0
+2.0794 2.0711 0
+2.1051 1.8434 0
+2.1327 1.6341 0
+2.159 1.443 0
+2.1811 1.2696 0
+2.1965 1.113 0
+2.2032 0.97213 0
+2.1997 0.84509 0
+2.185 0.72983 0
+2.1583 0.62419 0
+2.1195 0.52622 0
+2.0688 0.4344 0
+2.0068 0.34792 0
+1.9345 0.26668 0
+1.8533 0.19137 0
+1.7651 0.12329 0
+1.672 0.064194 0
+1.5761 0.015964 0
+1.48 -0.019651 0
+1.386 -0.041326 0
+1.2963 -0.048378 0
+1.2129 -0.040905 0
+1.1375 -0.01982 0
+1.0712 0.013231 0
+1.0149 0.056043 0
+0.96903 0.10612 0
+0.93389 0.161 0
+0.90964 0.21856 0
+0.89655 0.27737 0
+0.89516 0.33691 0
+0.90649 0.39775 0
+0.93212 0.46164 0
+0.97435 0.53145 0
+1.0362 0.61109 0
+1.1213 0.70529 0
+1.2341 0.81941 0
+1.3796 0.95919 0
+1.563 1.1305 0
+1.7903 1.3394 0
+2.0676 1.5915 0
+2.4013 1.8926 0
+2.7984 2.2481 0
+3.2661 2.6634 0
+3.8122 3.1439 0
+4.4448 3.6947 0
+5.1729 4.3214 0
+6.0051 5.0291 0
+6.9506 5.8227 0
+8.0175 6.7065 0
+9.2128 7.683 0
+10.541 8.7529 0
+12.004 9.9138 0
+13.597 11.16 0
+15.312 12.484 0
+17.132 13.878 0
+19.034 15.338 0
+20.99 16.874 0
+22.967 18.515 0
+24.93 20.333 0
+26.849 22.45 0
+28.705 25.062 0
+30.495 28.454 0
+32.24 33.011 0
+33.986 39.228 0
+35.802 47.699 0
+37.779 59.101 0
+40.008 74.163 0
+42.556 93.625 0
+45.431 118.19 0
+48.541 148.47 0
+51.639 184.99 0
+54.272 228.14 0
+55.739 278.25 0
+55.053 335.7 0
+50.938 401.02 0
+41.842 475.08 0
+26.004 559.3 0
+1.5511 655.73 0
+-33.362 767.08 0
+-80.39 896.56 0
+-140.82 1047.5 0
+-215.43 1222.7 0
+-304.38 1423.4 0
+-407.2 1648.6 0
+-522.91 1893.7 0
+-650.19 2149.7 0
+-787.76 2403.2 0
+-934.66 2636.2 0
+-1090.6 2828 0
+-1255.9 2956.7 0
+-1431.6 3002.9 0
+-1618.7 2953 0
+-1817.5 2801.9 0
+-2026.1 2556 0
+-2239.8 2232.1 0
+-2449.6 1855.4 0
+-2642.1 1453.3 0
+-2799.8 1049.1 0
+-2901.9 654.61 0
+-2927 266.69 0
+-2855 -131.99 0
+-2670.2 -566.3 0
+-2364.2 -1058.6 0
+-1937.9 -1618.8 0
+-1401.9 -2240.2 0
+-776.23 -2903.5 0
+-87.412 -3590.3 0
+636.65 -4298.7 0
+1372.4 -5052.9 0
+2106 -5896.6 0
+2836.4 -6867.5 0
+3572.2 -7959.6 0
+4324.2 -9089.4 0
+5091.2 -10087 0
+5847 -10725 0
+6530.8 -10786 0
+7049.5 -10142 0
+7293.2 -8820.5 0
+7162.4 -7024 0
+6597.7 -5085 0
+5603.9 -3379.5 0
+4257.1 -2225.9 0
+2691.9 -1805.4 0
+1072.8 -2129.6 0
+-439.49 -3054.6 0
+-1716.4 -4326.1 0
+-2675.3 -5637.4 0
+-3279.5 -6689.1 0
+-3530 -7248.4 0
+-3458.1 -7203 0
+-3122.4 -6597.5 0
+-2608.4 -5628.1 0
+-2024.2 -4582.7 0
+-1485.2 -3736 0
+-1088.4 -3243.1 0
+-884 -3082.6 0
+-855.77 -3085.2 0
+-919.55 -3032.3 0
+-940.81 -2771.2 0
+-765.83 -2279.4 0
+-258.36 -1643.8 0
+664.05 -977.02 0
+1997.6 -332.54 0
+3630 317.27 0
+5339.7 1025.4 0
+6831.3 1777.8 0
+7809.2 2439.9 0
+8070.2 2796.2 0
+7575.7 2679.5 0
+6459.8 2115.4 0
+4959.8 1382.5 0
+3297.8 919.23 0
+1577.6 1093.1 0
+-241.38 1944.6 0
+-2273.7 3061.6 0
+-4583.7 3699.7 0
+-7085.2 3139.7 0
+-9532.2 1121.2 0
+-11611 -1890.2 0
+-13079 -4791.8 0
+-13871 -6297.2 0
+-14100 -5545.3 0
+-13956 -2544.6 0
+-13576 1796.6 0
+-12957 6080.1 0
+-11983 9047.4 0
+-10557 10102 0
+-8741.1 9474.8 0
+-6819.3 8005.1 0
+-5218.1 6692.7 0
+-4316.3 6271.9 0
+-4250.4 6977.6 0
+-4831.6 8547.8 0
+-5626.4 10395 0
+-6155.2 11844 0
+-6095 12353 0
+-5385.3 11674 0
+-4202.2 9909.3 0
+-2845.4 7467.1 0
+-1611.5 4899.9 0
+-703.71 2700.3 0
+-192.55 1145.1 0
+-14.315 273.23 0
+0 0 0
+0 0 0
+0.009337 0.71351 0
+0.11791 6.4445 0
+0.38423 17.929 0
+0.74411 34.81 0
+1.0536 55.828 0
+1.1873 78.574 0
+1.1249 99.752 0
+0.97263 115.92 0
+0.91164 124.39 0
+1.1075 123.96 0
+1.6291 115.1 0
+2.4172 99.609 0
+3.3156 79.951 0
+4.1482 58.574 0
+4.8071 37.462 0
+5.3149 18.054 0
+5.8375 1.4128 0
+6.6451 -11.562 0
+8.0393 -20.054 0
+10.275 -23.437 0
+13.506 -21.495 0
+17.76 -14.591 0
+22.964 -3.6648 0
+28.971 9.9465 0
+35.609 24.79 0
+42.701 39.522 0
+50.079 52.997 0
+57.577 64.202 0
+65.019 72.154 0
+72.21 75.869 0
+78.944 74.486 0
+85.007 67.519 0
+90.194 55.125 0
+94.32 38.224 0
+97.237 18.391 0
+98.837 -2.4923 0
+99.06 -22.692 0
+97.901 -41.021 0
+95.404 -57.023 0
+91.665 -70.884 0
+86.818 -83.122 0
+81.019 -94.197 0
+74.441 -104.2 0
+67.259 -112.72 0
+59.653 -119.03 0
+51.813 -122.27 0
+43.944 -121.87 0
+36.268 -117.74 0
+29.015 -110.37 0
+22.405 -100.72 0
+16.619 -89.986 0
+11.777 -79.291 0
+7.9193 -69.481 0
+5.005 -60.984 0
+2.9279 -53.839 0
+1.5418 -47.805 0
+0.6909 -42.537 0
+0.2375 -37.737 0
+0.078346 -33.245 0
+0.14907 -29.051 0
+0.41696 -25.234 0
+0.86699 -21.878 0
+1.4866 -18.989 0
+2.2542 -16.459 0
+3.135 -14.089 0
+4.0832 -11.656 0
+5.0511 -8.9979 0
+5.999 -6.0861 0
+6.906 -3.0548 0
+7.7759 -0.17865 0
+8.6383 2.1967 0
+9.5439 3.7477 0
+10.555 4.2628 0
+11.732 3.7018 0
+13.121 2.211 0
+14.743 0.092386 0
+16.585 -2.2625 0
+18.595 -4.4533 0
+20.695 -6.1461 0
+22.779 -7.126 0
+24.734 -7.3183 0
+26.45 -6.7784 0
+27.836 -5.6575 0
+28.825 -4.1564 0
+29.386 -2.4791 0
+29.518 -0.79565 0
+29.25 0.77856 0
+28.633 2.1884 0
+27.731 3.4304 0
+26.61 4.536 0
+25.335 5.5514 0
+23.963 6.5206 0
+22.538 7.4723 0
+21.096 8.4139 0
+19.658 9.3315 0
+18.243 10.195 0
+16.861 10.963 0
+15.519 11.595 0
+14.224 12.054 0
+12.983 12.314 0
+11.802 12.365 0
+10.687 12.21 0
+9.6453 11.864 0
+8.6814 11.356 0
+7.7993 10.721 0
+7.0009 9.9972 0
+6.2865 9.2222 0
+5.6546 8.4312 0
+5.102 7.6531 0
+4.6244 6.9104 0
+4.2164 6.2182 0
+3.8724 5.5846 0
+3.5863 5.0122 0
+3.3518 4.4989 0
+3.1627 4.04 0
+3.013 3.6289 0
+2.8967 3.259 0
+2.8083 2.9241 0
+2.7421 2.6192 0
+2.6931 2.3406 0
+2.6564 2.0857 0
+2.6276 1.8531 0
+2.6027 1.6419 0
+2.5784 1.4514 0
+2.5518 1.2808 0
+2.5204 1.129 0
+2.4823 0.99418 0
+2.4363 0.87429 0
+2.3812 0.7669 0
+2.3166 0.66952 0
+2.2422 0.57989 0
+2.1582 0.49621 0
+2.065 0.41734 0
+1.9637 0.34292 0
+1.8553 0.27333 0
+1.7414 0.20963 0
+1.6238 0.15333 0
+1.5047 0.10618 0
+1.3861 0.069865 0
+1.2702 0.045732 0
+1.159 0.034599 0
+1.0542 0.036588 0
+0.95741 0.051073 0
+0.86956 0.076722 0
+0.79134 0.11164 0
+0.72308 0.15359 0
+0.66487 0.20028 0
+0.61667 0.24963 0
+0.57853 0.30011 0
+0.55072 0.35098 0
+0.53391 0.40245 0
+0.52926 0.45583 0
+0.53855 0.51348 0
+0.56418 0.57878 0
+0.60916 0.65597 0
+0.67708 0.74993 0
+0.772 0.86603 0
+0.89839 1.0098 0
+1.0611 1.187 0
+1.2652 1.4032 0
+1.516 1.6636 0
+1.8193 1.9737 0
+2.1811 2.3384 0
+2.6077 2.7628 0
+3.1058 3.2519 0
+3.6822 3.8109 0
+4.3439 4.445 0
+5.0973 5.1595 0
+5.948 5.9593 0
+6.9 6.8485 0
+7.9548 7.8298 0
+9.11 8.9041 0
+10.359 10.07 0
+11.688 11.324 0
+13.078 12.665 0
+14.503 14.093 0
+15.928 15.624 0
+17.317 17.29 0
+18.631 19.163 0
+19.833 21.361 0
+20.896 24.071 0
+21.809 27.565 0
+22.582 32.209 0
+23.249 38.476 0
+23.871 46.942 0
+24.524 58.271 0
+25.291 73.193 0
+26.235 92.47 0
+27.364 116.85 0
+28.592 147.05 0
+29.685 183.7 0
+30.213 227.38 0
+29.501 278.62 0
+26.595 338.02 0
+20.252 406.34 0
+8.9545 484.68 0
+-9.0266 574.6 0
+-35.536 678.21 0
+-72.395 798.19 0
+-121.24 937.55 0
+-183.33 1099.3 0
+-259.42 1285.7 0
+-349.67 1497.8 0
+-453.61 1733.8 0
+-570.27 1988.8 0
+-698.45 2253.8 0
+-836.99 2515.3 0
+-985.24 2755.9 0
+-1143.3 2955.4 0
+-1312.4 3092.9 0
+-1494.5 3149.4 0
+-1691.8 3111.3 0
+-1906.4 2973.2 0
+-2138.6 2739.5 0
+-2385.5 2424.5 0
+-2640.6 2049.9 0
+-2892 1639.3 0
+-3123 1212 0
+-3312.7 777.01 0
+-3437.2 329.56 0
+-3471.9 -147.15 0
+-3394.7 -675.14 0
+-3188.6 -1271.5 0
+-2845.1 -1938.9 0
+-2366.1 -2661.9 0
+-1764.9 -3412.5 0
+-1065.6 -4165.1 0
+-299.36 -4914.2 0
+500.64 -5684.9 0
+1305.8 -6526.8 0
+2097.4 -7486.7 0
+2867.8 -8567 0
+3616.6 -9687.3 0
+4340.6 -10671 0
+5021 -11274 0
+5612.8 -11254 0
+6041.9 -10461 0
+6215 -8911 0
+6041.2 -6814.6 0
+5460.3 -4536.9 0
+4466.7 -2504 0
+3121.7 -1088.4 0
+1545.5 -515.16 0
+-106.38 -816.84 0
+-1675.5 -1843.6 0
+-3029.9 -3313.7 0
+-4081.9 -4882.8 0
+-4792.2 -6213.7 0
+-5165.1 -7041.6 0
+-5240.1 -7228.2 0
+-5086.9 -6795.9 0
+-4799 -5922.2 0
+-4483.2 -4885.2 0
+-4240.4 -3966.3 0
+-4139.9 -3348.7 0
+-4196.2 -3057.6 0
+-4358.9 -2976.2 0
+-4522.4 -2929.9 0
+-4550.9 -2788.2 0
+-4310.5 -2524.7 0
+-3697.9 -2198.4 0
+-2663.2 -1873.9 0
+-1228.2 -1540.6 0
+500.96 -1096.3 0
+2334.4 -418.31 0
+4024.9 519.47 0
+5325.8 1567 0
+6065.3 2430.2 0
+6201.7 2823.3 0
+5823.1 2665.9 0
+5080.1 2197 0
+4084.4 1902.4 0
+2833.6 2250.9 0
+1218.7 3366.5 0
+-880.69 4834.5 0
+-3467.1 5806.1 0
+-6347.5 5407.4 0
+-9166.1 3264.5 0
+-11541 -155.05 0
+-13225 -3624.8 0
+-14196 -5681.4 0
+-14617 -5336 0
+-14688 -2589 0
+-14496 1549 0
+-13963 5552.3 0
+-12925 8116.5 0
+-11309 8736 0
+-9273.7 7831.6 0
+-7207 6412.3 0
+-5569.7 5510.2 0
+-4662.5 5710.4 0
+-4468.8 6987.8 0
+-4672.4 8850.2 0
+-4840.9 10632 0
+-4653.6 11755 0
+-4035.2 11876 0
+-3130.3 10921 0
+-2169.1 9067.8 0
+-1333.9 6701.3 0
+-708.05 4306.6 0
+-299.31 2313.4 0
+-81.163 952.16 0
+-6.0405 221.19 0
+0 0 0
+0 0 0
+0.034607 0.66965 0
+0.44927 6.089 0
+1.5442 17.13 0
+3.2574 33.673 0
+5.2371 54.617 0
+7.0622 77.546 0
+8.4648 99.023 0
+9.4367 115.42 0
+10.192 123.94 0
+11.03 123.36 0
+12.184 114.22 0
+13.718 98.455 0
+15.513 78.661 0
+17.34 57.33 0
+18.966 36.408 0
+20.27 17.228 0
+21.3 0.71681 0
+22.276 -12.342 0
+23.529 -21.187 0
+25.412 -25.18 0
+28.214 -24.031 0
+32.103 -17.998 0
+37.109 -7.922 0
+43.143 4.9408 0
+50.034 19.183 0
+57.569 33.481 0
+65.521 46.692 0
+73.661 57.804 0
+81.761 65.836 0
+89.593 69.806 0
+96.929 68.857 0
+103.54 62.5 0
+109.23 50.879 0
+113.8 34.895 0
+117.1 16.093 0
+119.01 -3.6766 0
+119.46 -22.716 0
+118.43 -39.877 0
+115.92 -54.74 0
+112.01 -67.524 0
+106.79 -78.777 0
+100.38 -88.981 0
+92.952 -98.241 0
+84.683 -106.18 0
+75.796 -112.07 0
+66.549 -115.1 0
+57.236 -114.71 0
+48.175 -110.84 0
+39.683 -103.95 0
+32.041 -94.992 0
+25.456 -85.089 0
+20.037 -75.295 0
+15.777 -66.368 0
+12.57 -58.667 0
+10.239 -52.177 0
+8.5748 -46.643 0
+7.3784 -41.729 0
+6.4943 -37.171 0
+5.8246 -32.853 0
+5.3273 -28.805 0
+5.0022 -25.133 0
+4.8699 -21.933 0
+4.9514 -19.208 0
+5.256 -16.84 0
+5.7758 -14.616 0
+6.489 -12.305 0
+7.368 -9.7414 0
+8.388 -6.9032 0
+9.5341 -3.9352 0
+10.805 -1.1258 0
+12.211 1.1667 0
+13.773 2.6107 0
+15.512 2.9924 0
+17.446 2.2769 0
+19.579 0.62324 0
+21.895 -1.6487 0
+24.357 -4.1259 0
+26.902 -6.3867 0
+29.447 -8.0793 0
+31.895 -8.9776 0
+34.145 -9.0043 0
+36.1 -8.2213 0
+37.68 -6.7949 0
+38.828 -4.947 0
+39.516 -2.9056 0
+39.743 -0.86428 0
+39.537 1.0417 0
+38.941 2.7427 0
+38.012 4.2273 0
+36.812 5.5247 0
+35.4 6.6841 0
+33.83 7.7554 0
+32.149 8.7747 0
+30.392 9.7567 0
+28.589 10.694 0
+26.766 11.56 0
+24.941 12.318 0
+23.133 12.928 0
+21.359 13.353 0
+19.635 13.571 0
+17.976 13.568 0
+16.397 13.349 0
+14.909 12.933 0
+13.521 12.348 0
+12.242 11.632 0
+11.073 10.825 0
+10.017 9.967 0
+9.0717 9.0947 0
+8.2325 8.2387 0
+7.4943 7.4225 0
+6.8502 6.662 0
+6.2926 5.966 0
+5.8133 5.3372 0
+5.4041 4.7738 0
+5.0566 4.2707 0
+4.7628 3.8216 0
+4.5147 3.4194 0
+4.3049 3.0578 0
+4.1261 2.7314 0
+3.972 2.436 0
+3.8364 2.1688 0
+3.7141 1.9278 0
+3.6006 1.7115 0
+3.4918 1.5189 0
+3.3846 1.3485 0
+3.2765 1.1987 0
+3.1656 1.0674 0
+3.0504 0.95206 0
+2.9298 0.8499 0
+2.8033 0.75816 0
+2.6706 0.67433 0
+2.5316 0.59635 0
+2.3867 0.52284 0
+2.2363 0.45317 0
+2.0816 0.38748 0
+1.9235 0.32658 0
+1.7637 0.27177 0
+1.6038 0.22467 0
+1.4456 0.18686 0
+1.2909 0.15973 0
+1.1414 0.14421 0
+0.99859 0.14062 0
+0.86359 0.14861 0
+0.7372 0.16715 0
+0.61986 0.19465 0
+0.51165 0.22911 0
+0.41241 0.26842 0
+0.32186 0.31056 0
+0.23975 0.35396 0
+0.16599 0.39768 0
+0.10083 0.44165 0
+0.044948 0.48677 0
+-0.000501 0.535 0
+-0.033818 0.58927 0
+-0.052798 0.65338 0
+-0.054773 0.73185 0
+-0.036676 0.82972 0
+0.004888 0.95231 0
+0.073586 1.105 0
+0.17331 1.2933 0
+0.30818 1.5223 0
+0.4825 1.7971 0
+0.70083 2.1226 0
+0.96787 2.5035 0
+1.2885 2.945 0
+1.6675 3.452 0
+2.1094 4.0301 0
+2.6181 4.6852 0
+3.1961 5.4231 0
+3.8442 6.2496 0
+4.5602 7.17 0
+5.3378 8.1883 0
+6.1661 9.3073 0
+7.0275 10.529 0
+7.8978 11.857 0
+8.7452 13.299 0
+9.5307 14.873 0
+10.21 16.619 0
+10.735 18.607 0
+11.06 20.955 0
+11.143 23.842 0
+10.958 27.528 0
+10.492 32.364 0
+9.7553 38.806 0
+8.7784 47.411 0
+7.6059 58.833 0
+6.2835 73.804 0
+4.8353 93.108 0
+3.2314 117.55 0
+1.3457 147.92 0
+-1.0921 184.98 0
+-4.5477 229.47 0
+-9.7293 282.13 0
+-17.623 343.79 0
+-29.503 415.44 0
+-46.92 498.38 0
+-71.638 594.34 0
+-105.54 705.5 0
+-150.48 834.47 0
+-208.13 984.09 0
+-279.79 1157 0
+-366.25 1355.2 0
+-467.67 1579 0
+-583.63 1826.2 0
+-713.17 2091.6 0
+-855.14 2366 0
+-1008.5 2636.2 0
+-1172.7 2885.2 0
+-1348.2 3093.7 0
+-1536.6 3241.4 0
+-1740.6 3310.5 0
+-1963.5 3287.5 0
+-2208.6 3166.6 0
+-2477.8 2951 0
+-2770.4 2652.6 0
+-3081.8 2289.5 0
+-3402.5 1881.2 0
+-3717.2 1442.7 0
+-4005.6 979.09 0
+-4243.1 482.75 0
+-4402.6 -64.268 0
+-4456.8 -682.97 0
+-4382 -1386.9 0
+-4160.6 -2172.3 0
+-3785.1 -3015 0
+-3260.6 -3877.1 0
+-2605.5 -4722.7 0
+-1850.6 -5538 0
+-1034.6 -6344.1 0
+-197.77 -7192 0
+624.93 -8135 0
+1409.2 -9184.6 0
+2141.5 -10268 0
+2813.7 -11208 0
+3412.4 -11754 0
+3907.2 -11645 0
+4244.3 -10710 0
+4349.6 -8952.3 0
+4144.2 -6584.4 0
+3567.7 -3993.9 0
+2602.8 -1648 0
+1290.6 30.942 0
+-270.02 773.5 0
+-1939.8 520.96 0
+-3566.8 -578.63 0
+-5015.5 -2223.1 0
+-6188.2 -4033.1 0
+-7035.4 -5632.2 0
+-7556.2 -6718.7 0
+-7793 -7122.6 0
+-7823.6 -6840.8 0
+-7749.6 -6034.4 0
+-7678.9 -4979.4 0
+-7700.6 -3974.7 0
+-7860.1 -3240.9 0
+-8141.7 -2853.4 0
+-8469.4 -2743.3 0
+-8725.8 -2766.5 0
+-8783 -2798.5 0
+-8532.1 -2795.6 0
+-7902.3 -2783.9 0
+-6871 -2786.4 0
+-5468.7 -2744.4 0
+-3785.1 -2502.6 0
+-1967.9 -1888.2 0
+-204.55 -846.8 0
+1321.5 457.63 0
+2486.8 1668.6 0
+3264.5 2412.7 0
+3709.2 2543 0
+3887.8 2296.4 0
+3791.5 2227.9 0
+3292.6 2902.5 0
+2191.5 4491.3 0
+344.15 6519.8 0
+-2201.1 7977.7 0
+-5150.3 7804.9 0
+-8046.4 5524.1 0
+-10455 1650.5 0
+-12148 -2410.5 0
+-13170 -4988.1 0
+-13738 -4980.6 0
+-14053 -2432.1 0
+-14126 1491.9 0
+-13771 5125.2 0
+-12760 7160.6 0
+-11042 7256.8 0
+-8875.3 6073.5 0
+-6743.3 4771.6 0
+-5107.7 4330.3 0
+-4145.2 5090.4 0
+-3656.2 6737.1 0
+-3217.5 8625.5 0
+-2477.3 10164 0
+-1389 11010 0
+-220.15 11045 0
+654.25 10260 0
+1011.4 8724.2 0
+901.48 6643.7 0
+565.41 4392.1 0
+247.56 2408.6 0
+64.57 1001.7 0
+4.5645 233.18 0
+0 0 0
+0 0 0
+0.080244 0.5623 0
+1.0434 5.2141 0
+3.5986 15.137 0
+7.6368 30.776 0
+12.385 51.411 0
+16.875 74.668 0
+20.407 96.858 0
+22.793 113.99 0
+24.318 122.97 0
+25.52 122.44 0
+26.924 113.04 0
+28.828 96.881 0
+31.231 76.773 0
+33.883 55.356 0
+36.43 34.608 0
+38.578 15.773 0
+40.221 -0.38617 0
+41.489 -13.258 0
+42.709 -22.208 0
+44.311 -26.642 0
+46.715 -26.227 0
+50.228 -21.12 0
+54.999 -12.031 0
+61.006 -0.09555 0
+68.097 13.366 0
+76.031 27.081 0
+84.528 39.927 0
+93.298 50.892 0
+102.06 58.988 0
+110.55 63.228 0
+118.51 62.744 0
+125.71 57.036 0
+131.92 46.232 0
+136.96 31.211 0
+140.65 13.494 0
+142.89 -5.1004 0
+143.58 -22.907 0
+142.67 -38.811 0
+140.17 -52.425 0
+136.1 -64.002 0
+130.54 -74.115 0
+123.6 -83.275 0
+115.41 -91.619 0
+106.18 -98.81 0
+96.163 -104.16 0
+85.664 -106.89 0
+75.055 -106.5 0
+64.735 -102.92 0
+55.1 -96.636 0
+46.489 -88.52 0
+39.138 -79.621 0
+33.151 -70.886 0
+28.486 -62.966 0
+24.979 -56.13 0
+22.384 -50.312 0
+20.43 -45.245 0
+18.873 -40.621 0
+17.534 -36.229 0
+16.315 -32.014 0
+15.193 -28.059 0
+14.2 -24.509 0
+13.397 -21.473 0
+12.849 -18.953 0
+12.605 -16.818 0
+12.699 -14.841 0
+13.144 -12.777 0
+13.945 -10.456 0
+15.096 -7.8516 0
+16.59 -5.1107 0
+18.418 -2.5224 0
+20.566 -0.44493 0
+23.015 0.79216 0
+25.735 0.97991 0
+28.692 0.090368 0
+31.839 -1.7089 0
+35.122 -4.0878 0
+38.474 -6.6224 0
+41.821 -8.8803 0
+45.077 -10.501 0
+48.152 -11.253 0
+50.955 -11.058 0
+53.402 -9.986 0
+55.418 -8.2146 0
+56.952 -5.9831 0
+57.97 -3.5392 0
+58.467 -1.0964 0
+58.456 1.1926 0
+57.97 3.245 0
+57.052 5.0409 0
+55.755 6.6059 0
+54.13 7.9895 0
+52.228 9.2445 0
+50.098 10.411 0
+47.783 11.507 0
+45.324 12.529 0
+42.76 13.454 0
+40.128 14.244 0
+37.466 14.861 0
+34.808 15.271 0
+32.189 15.448 0
+29.64 15.385 0
+27.191 15.087 0
+24.864 14.576 0
+22.678 13.885 0
+20.647 13.054 0
+18.778 12.128 0
+17.075 11.15 0
+15.535 10.16 0
+14.155 9.1898 0
+12.925 8.266 0
+11.837 7.4054 0
+10.879 6.6176 0
+10.039 5.9058 0
+9.3045 5.2683 0
+8.6633 4.7002 0
+8.1033 4.1947 0
+7.6128 3.7444 0
+7.181 3.3425 0
+6.7979 2.983 0
+6.4541 2.6612 0
+6.1417 2.3733 0
+5.8535 2.1166 0
+5.5837 1.889 0
+5.3271 1.6885 0
+5.0799 1.5131 0
+4.839 1.3605 0
+4.6019 1.228 0
+4.3669 1.1128 0
+4.1327 1.0116 0
+3.8983 0.92138 0
+3.6631 0.83948 0
+3.4267 0.76359 0
+3.1891 0.69209 0
+2.9503 0.62416 0
+2.711 0.55969 0
+2.4716 0.49928 0
+2.2333 0.44405 0
+1.9971 0.39543 0
+1.7644 0.35497 0
+1.5365 0.32403 0
+1.3145 0.30365 0
+1.0995 0.29433 0
+0.89231 0.29598 0
+0.69322 0.30784 0
+0.5023 0.32861 0
+0.31927 0.35656 0
+0.1436 0.38972 0
+-0.025394 0.4262 0
+-0.18838 0.46436 0
+-0.34593 0.50315 0
+-0.49835 0.54225 0
+-0.64563 0.58228 0
+-0.78738 0.62484 0
+-0.92276 0.67251 0
+-1.0506 0.72877 0
+-1.1693 0.79784 0
+-1.277 0.88452 0
+-1.3717 0.99392 0
+-1.4511 1.1313 0
+-1.5128 1.302 0
+-1.5542 1.511 0
+-1.5728 1.7633 0
+-1.5657 2.0637 0
+-1.5304 2.417 0
+-1.4641 2.8283 0
+-1.3647 3.3028 0
+-1.2304 3.8466 0
+-1.0605 4.4664 0
+-0.85619 5.1695 0
+-0.62072 5.9636 0
+-0.36078 6.8567 0
+-0.087384 7.8563 0
+0.18294 8.97 0
+0.42696 10.205 0
+0.61376 11.571 0
+0.70397 13.083 0
+0.64979 14.765 0
+0.39574 16.661 0
+-0.11944 18.847 0
+-0.95973 21.439 0
+-2.1878 24.615 0
+-3.8608 28.627 0
+-6.0257 33.816 0
+-8.7178 40.625 0
+-11.962 49.603 0
+-15.778 61.399 0
+-20.197 76.754 0
+-25.282 96.481 0
+-31.162 121.44 0
+-38.07 152.51 0
+-46.395 190.59 0
+-56.73 236.59 0
+-69.921 291.46 0
+-87.098 356.25 0
+-109.69 432.2 0
+-139.41 520.83 0
+-178.19 624 0
+-228.08 743.98 0
+-291.11 883.34 0
+-369.12 1044.7 0
+-463.56 1230.5 0
+-575.35 1442 0
+-704.75 1679.2 0
+-851.4 1939.4 0
+-1014.4 2217 0
+-1192.5 2502.6 0
+-1384.7 2783.2 0
+-1590.3 3042.4 0
+-1809.9 3261.5 0
+-2044.9 3421.6 0
+-2298.3 3505.4 0
+-2573.8 3500.3 0
+-2875.3 3400.2 0
+-3205.9 3207.4 0
+-3566.2 2931.4 0
+-3953.5 2587.3 0
+-4360.1 2190.4 0
+-4772.9 1751.4 0
+-5173.2 1270.8 0
+-5537.1 737.16 0
+-5836.5 130.09 0
+-6041.8 -572.1 0
+-6124.1 -1381.1 0
+-6058.9 -2288.6 0
+-5829.7 -3262.7 0
+-5432.6 -4254.7 0
+-4878.3 -5217 0
+-4193.4 -6123.8 0
+-3417.9 -6987.7 0
+-2599.4 -7855.9 0
+-1785.4 -8784.6 0
+-1015.4 -9793.4 0
+-316.33 -10819 0
+296.65 -11694 0
+812.67 -12163 0
+1214.1 -11959 0
+1466.7 -10893 0
+1517 -8953.9 0
+1300 -6349.5 0
+757.38 -3479.5 0
+-140.44 -841.56 0
+-1375.9 1099.5 0
+-2878 2031.1 0
+-4531.2 1863.2 0
+-6195.9 732.39 0
+-7735.3 -1048.9 0
+-9039.3 -3073.3 0
+-10041 -4926.5 0
+-10727 -6265.5 0
+-11132 -6881.7 0
+-11337 -6741.2 0
+-11448 -5988.3 0
+-11575 -4901.9 0
+-11800 -3807.3 0
+-12149 -2970.2 0
+-12588 -2517.2 0
+-13026 -2420.8 0
+-13346 -2554.8 0
+-13438 -2787 0
+-13219 -3047.5 0
+-12648 -3330 0
+-11721 -3625.5 0
+-10468 -3844 0
+-8954.2 -3796 0
+-7284.2 -3276.4 0
+-5584.1 -2213.8 0
+-3969.6 -788.8 0
+-2504 591.43 0
+-1180.8 1492.9 0
+42.343 1742.1 0
+1165.4 1617.3 0
+2066.7 1773.4 0
+2489.8 2874.4 0
+2133.3 5106.3 0
+815.74 7877.4 0
+-1377.8 9957.7 0
+-4068.5 10071 0
+-6719.9 7649.4 0
+-8874 3308.4 0
+-10350 -1312.2 0
+-11278 -4311.8 0
+-11936 -4507.6 0
+-12497 -2056.3 0
+-12862 1660.5 0
+-12709 4830.5 0
+-11734 6203.6 0
+-9927 5691.9 0
+-7662.4 4242.6 0
+-5519.2 3131.2 0
+-3924.4 3173.1 0
+-2873.5 4359.5 0
+-1943.3 6078.4 0
+-618.54 7658.9 0
+1288.3 8787.2 0
+3430.5 9511.7 0
+5103.3 9933.3 0
+5688.6 9931.3 0
+5051.8 9208.2 0
+3607.1 7606.8 0
+2027.3 5374.5 0
+841.09 3094.3 0
+214.61 1328 0
+15.088 314.33 0
+0 0 0
+0 0 0
+0.16695 0.33557 0
+2.1628 3.3733 0
+7.4174 10.97 0
+15.639 24.76 0
+25.202 44.801 0
+34.125 68.786 0
+40.979 92.536 0
+45.308 111.36 0
+47.558 121.58 0
+48.69 121.58 0
+49.723 112.03 0
+51.369 95.324 0
+53.864 74.623 0
+57.005 52.853 0
+60.328 32.124 0
+63.348 13.636 0
+65.758 -2.0244 0
+67.547 -14.477 0
+68.991 -23.289 0
+70.562 -27.976 0
+72.782 -28.207 0
+76.091 -24.044 0
+80.754 -16.048 0
+86.828 -5.1986 0
+94.191 7.3123 0
+102.59 20.296 0
+111.7 32.667 0
+121.18 43.422 0
+130.69 51.561 0
+139.93 56.078 0
+148.61 56.084 0
+156.49 51.063 0
+163.32 41.122 0
+168.91 27.119 0
+173.09 10.548 0
+175.71 -6.8002 0
+176.69 -23.292 0
+175.95 -37.845 0
+173.48 -50.102 0
+169.3 -60.345 0
+163.46 -69.179 0
+156.05 -77.144 0
+147.21 -84.417 0
+137.14 -90.707 0
+126.12 -95.381 0
+114.49 -97.734 0
+102.68 -97.298 0
+91.151 -94.044 0
+80.368 -88.432 0
+70.728 -81.276 0
+62.504 -73.52 0
+55.808 -65.981 0
+50.582 -59.181 0
+46.616 -53.282 0
+43.609 -48.159 0
+41.234 -43.536 0
+39.2 -39.146 0
+37.3 -34.846 0
+35.429 -30.662 0
+33.58 -26.744 0
+31.815 -23.287 0
+30.24 -20.422 0
+28.966 -18.152 0
+28.1 -16.337 0
+27.724 -14.732 0
+27.904 -13.077 0
+28.681 -11.187 0
+30.08 -9.0237 0
+32.102 -6.7208 0
+34.73 -4.5532 0
+37.92 -2.8641 0
+41.605 -1.9685 0
+45.701 -2.0636 0
+50.112 -3.1696 0
+54.736 -5.115 0
+59.474 -7.5687 0
+64.227 -10.107 0
+68.902 -12.297 0
+73.406 -13.779 0
+77.651 -14.32 0
+81.547 -13.845 0
+85.01 -12.426 0
+87.961 -10.25 0
+90.337 -7.5692 0
+92.089 -4.6454 0
+93.188 -1.7089 0
+93.625 1.072 0
+93.408 3.601 0
+92.56 5.8476 0
+91.117 7.8302 0
+89.121 9.5938 0
+86.623 11.188 0
+83.676 12.652 0
+80.34 14.002 0
+76.677 15.232 0
+72.752 16.317 0
+68.635 17.221 0
+64.396 17.902 0
+60.105 18.328 0
+55.829 18.477 0
+51.629 18.344 0
+47.561 17.939 0
+43.67 17.292 0
+39.993 16.441 0
+36.557 15.434 0
+33.377 14.322 0
+30.461 13.155 0
+27.81 11.977 0
+25.415 10.826 0
+23.267 9.7302 0
+21.348 8.709 0
+19.641 7.7739 0
+18.127 6.9288 0
+16.786 6.1724 0
+15.597 5.4996 0
+14.54 4.9031 0
+13.598 4.3748 0
+12.754 3.9069 0
+11.991 3.4923 0
+11.296 3.1251 0
+10.657 2.8003 0
+10.063 2.514 0
+9.5061 2.2628 0
+8.9785 2.0436 0
+8.4748 1.8533 0
+7.9904 1.6889 0
+7.522 1.5471 0
+7.0668 1.4242 0
+6.6227 1.3168 0
+6.188 1.2215 0
+5.7614 1.1353 0
+5.3419 1.0557 0
+4.9287 0.98104 0
+4.521 0.91014 0
+4.1188 0.84275 0
+3.7218 0.77924 0
+3.3302 0.72055 0
+2.9445 0.66796 0
+2.5651 0.62292 0
+2.1926 0.5868 0
+1.8275 0.5607 0
+1.4702 0.54531 0
+1.1206 0.54073 0
+0.77848 0.5465 0
+0.44334 0.56157 0
+0.11421 0.58446 0
+-0.21004 0.61339 0
+-0.53073 0.64656 0
+-0.84924 0.68235 0
+-1.1669 0.71961 0
+-1.4848 0.75789 0
+-1.8039 0.79757 0
+-2.1248 0.84002 0
+-2.448 0.88756 0
+-2.7737 0.94346 0
+-3.1016 1.0118 0
+-3.4316 1.0971 0
+-3.7634 1.2044 0
+-4.0965 1.3391 0
+-4.4306 1.5062 0
+-4.7652 1.7109 0
+-5.1 1.9581 0
+-5.4347 2.2528 0
+-5.7695 2.5998 0
+-6.1047 3.0045 0
+-6.4414 3.4728 0
+-6.7818 4.0115 0
+-7.1294 4.6284 0
+-7.4901 5.3327 0
+-7.8727 6.1346 0
+-8.2897 7.0451 0
+-8.759 8.076 0
+-9.3046 9.2398 0
+-9.9583 10.55 0
+-10.761 12.024 0
+-11.763 13.683 0
+-13.027 15.561 0
+-14.625 17.711 0
+-16.64 20.212 0
+-19.166 23.189 0
+-22.3 26.821 0
+-26.146 31.361 0
+-30.811 37.151 0
+-36.405 44.632 0
+-43.046 54.355 0
+-50.867 66.982 0
+-60.037 83.278 0
+-70.781 104.1 0
+-83.415 130.39 0
+-98.391 163.13 0
+-116.35 203.37 0
+-138.15 252.22 0
+-164.95 310.83 0
+-198.21 380.53 0
+-239.72 462.79 0
+-291.59 559.37 0
+-356.13 672.31 0
+-435.82 803.94 0
+-533.1 956.78 0
+-650.18 1133.3 0
+-788.89 1335.4 0
+-950.45 1564.1 0
+-1135.4 1818.6 0
+-1343.3 2095.8 0
+-1573.5 2389.5 0
+-1824.6 2690.3 0
+-2095.1 2985 0
+-2384.2 3257.7 0
+-2691.7 3490.7 0
+-3018.5 3665.8 0
+-3367 3766.8 0
+-3740.4 3781.8 0
+-4142.2 3704.8 0
+-4575.6 3537.3 0
+-5041.6 3287.1 0
+-5538.4 2966.2 0
+-6060 2586.6 0
+-6595 2154.4 0
+-7126.7 1665.6 0
+-7633 1104.6 0
+-8087.1 447.72 0
+-8458.8 -328.84 0
+-8716.9 -1236.7 0
+-8832.3 -2264.7 0
+-8781.8 -3374.8 0
+-8552.7 -4508.7 0
+-8147.5 -5605.9 0
+-7585.9 -6626.9 0
+-6905 -7571.5 0
+-6155.1 -8478.9 0
+-5391.7 -9403.8 0
+-4666.4 -10372 0
+-4018 -11331 0
+-3469.7 -12125 0
+-3032.2 -12506 0
+-2713.1 -12204 0
+-2528.5 -11022 0
+-2511.2 -8932.7 0
+-2710.2 -6133.3 0
+-3179.3 -3025.6 0
+-3958.6 -125.22 0
+-5055.4 2070.2 0
+-6431.6 3208.9 0
+-8002.3 3165.6 0
+-9648.6 2055.3 0
+-11238 188.14 0
+-12650 -2011.7 0
+-13797 -4096.7 0
+-14642 -5681 0
+-15207 -6511.1 0
+-15564 -6515.4 0
+-15820 -5818.3 0
+-16083 -4703.7 0
+-16429 -3528.4 0
+-16877 -2606.9 0
+-17383 -2115.9 0
+-17856 -2061.2 0
+-18192 -2323.5 0
+-18304 -2753 0
+-18140 -3251.3 0
+-17680 -3785 0
+-16928 -4325.4 0
+-15904 -4765.2 0
+-14652 -4894.9 0
+-13235 -4488.9 0
+-11730 -3469.9 0
+-10191 -2041.1 0
+-8617.2 -658.25 0
+-6950.8 202.31 0
+-5134.6 375.74 0
+-3206.8 225.98 0
+-1378.9 545.44 0
+-23.017 2108 0
+460.82 5090.2 0
+-152.04 8730.9 0
+-1752.3 11526 0
+-3897.9 11959 0
+-6004 9394.8 0
+-7627.2 4602.2 0
+-8671.2 -490.86 0
+-9370.9 -3746.8 0
+-10054 -3954.8 0
+-10835 -1472.4 0
+-11462 2038.9 0
+-11448 4629.6 0
+-10424 5194.4 0
+-8454.9 4006.3 0
+-6075.6 2346.3 0
+-3968.8 1537.5 0
+-2488.1 2084.8 0
+-1375.8 3507.4 0
+73.874 4909.5 0
+2467.1 5775.6 0
+5750.6 6330.4 0
+9066.7 7188.6 0
+11184 8630.4 0
+11242 10165 0
+9292.4 10799 0
+6252.5 9808.1 0
+3320.8 7348 0
+1299.9 4361 0
+313.22 1889.5 0
+21.091 446.12 0
+0 0 0
+0 0 0
+0.33965 -0.12666 0
+4.3687 -0.34679 0
+14.817 2.6797 0
+30.837 13.02 0
+49.041 32.177 0
+65.588 57.838 0
+77.845 84.805 0
+85.028 107.08 0
+87.959 119.96 0
+88.357 121.33 0
+88.073 111.89 0
+88.502 94.461 0
+90.304 72.74 0
+93.416 50.145 0
+97.292 29.068 0
+101.23 10.744 0
+104.66 -4.4124 0
+107.38 -16.304 0
+109.54 -24.777 0
+111.59 -29.535 0
+114.13 -30.302 0
+117.7 -27.064 0
+122.66 -20.227 0
+129.17 -10.588 0
+137.12 0.82799 0
+146.28 12.946 0
+156.28 24.743 0
+166.73 35.227 0
+177.26 43.387 0
+187.5 48.188 0
+197.16 48.716 0
+205.95 44.426 0
+213.63 35.403 0
+219.99 22.482 0
+224.84 7.1307 0
+228.02 -8.8862 0
+229.44 -23.966 0
+229 -37.057 0
+226.67 -47.836 0
+222.47 -56.615 0
+216.43 -64.029 0
+208.63 -70.653 0
+199.22 -76.703 0
+188.39 -81.943 0
+176.41 -85.806 0
+163.67 -87.661 0
+150.61 -87.101 0
+137.75 -84.134 0
+125.62 -79.207 0
+114.66 -73.071 0
+105.22 -66.551 0
+97.419 -60.318 0
+91.215 -54.738 0
+86.379 -49.854 0
+82.571 -45.467 0
+79.417 -41.289 0
+76.584 -37.1 0
+73.834 -32.841 0
+71.053 -28.63 0
+68.242 -24.707 0
+65.496 -21.327 0
+62.965 -18.657 0
+60.82 -16.709 0
+59.231 -15.333 0
+58.347 -14.27 0
+58.293 -13.238 0
+59.163 -12.03 0
+61.017 -10.582 0
+63.871 -8.9973 0
+67.698 -7.5189 0
+72.424 -6.4579 0
+77.933 -6.1014 0
+84.08 -6.6274 0
+90.703 -8.0468 0
+97.64 -10.189 0
+104.74 -12.73 0
+111.86 -15.257 0
+118.88 -17.345 0
+125.69 -18.641 0
+132.17 -18.915 0
+138.23 -18.092 0
+143.74 -16.244 0
+148.6 -13.561 0
+152.72 -10.303 0
+155.98 -6.741 0
+158.33 -3.1205 0
+159.71 0.37452 0
+160.07 3.6311 0
+159.4 6.603 0
+157.73 9.2936 0
+155.08 11.734 0
+151.49 13.962 0
+147.04 16.004 0
+141.83 17.866 0
+135.94 19.533 0
+129.5 20.972 0
+122.63 22.139 0
+115.47 22.994 0
+108.15 23.502 0
+100.79 23.646 0
+93.517 23.428 0
+86.428 22.87 0
+79.615 22.011 0
+73.147 20.903 0
+67.075 19.608 0
+61.434 18.188 0
+56.241 16.703 0
+51.498 15.209 0
+47.196 13.75 0
+43.315 12.361 0
+39.831 11.067 0
+36.712 9.8803 0
+33.925 8.808 0
+31.435 7.8488 0
+29.207 6.9973 0
+27.21 6.2452 0
+25.41 5.583 0
+23.78 5.0009 0
+22.294 4.4898 0
+20.93 4.0417 0
+19.667 3.6494 0
+18.489 3.3069 0
+17.383 3.0088 0
+16.336 2.7504 0
+15.341 2.5271 0
+14.389 2.3346 0
+13.475 2.1683 0
+12.595 2.0242 0
+11.743 1.898 0
+10.919 1.786 0
+10.117 1.6849 0
+9.3372 1.5921 0
+8.5761 1.5054 0
+7.8322 1.4237 0
+7.1038 1.3464 0
+6.3896 1.2737 0
+5.6885 1.2064 0
+4.9996 1.1456 0
+4.3222 1.0926 0
+3.6557 1.0488 0
+2.9992 1.0154 0
+2.352 0.99306 0
+1.713 0.98222 0
+1.0808 0.98264 0
+0.45363 0.99354 0
+-0.17039 1.0137 0
+-0.79356 1.0414 0
+-1.4183 1.0751 0
+-2.0473 1.1133 0
+-2.683 1.1546 0
+-3.3279 1.1987 0
+-3.9846 1.2458 0
+-4.6553 1.297 0
+-5.3423 1.3547 0
+-6.0476 1.422 0
+-6.7734 1.5029 0
+-7.5219 1.602 0
+-8.2952 1.7244 0
+-9.0957 1.8754 0
+-9.9259 2.0602 0
+-10.789 2.2841 0
+-11.687 2.5523 0
+-12.624 2.87 0
+-13.605 3.2425 0
+-14.633 3.6759 0
+-15.715 4.1768 0
+-16.86 4.7533 0
+-18.075 5.4151 0
+-19.375 6.1735 0
+-20.776 7.0418 0
+-22.299 8.035 0
+-23.972 9.1698 0
+-25.831 10.465 0
+-27.919 11.942 0
+-30.293 13.625 0
+-33.022 15.548 0
+-36.191 17.755 0
+-39.9 20.311 0
+-44.267 23.309 0
+-49.43 26.885 0
+-55.546 31.233 0
+-62.794 36.618 0
+-71.377 43.397 0
+-81.526 52.032 0
+-93.514 63.098 0
+-107.66 77.294 0
+-124.38 95.443 0
+-144.16 118.48 0
+-167.66 147.46 0
+-195.72 183.52 0
+-229.43 227.89 0
+-270.17 281.92 0
+-319.68 347.04 0
+-380.07 424.85 0
+-453.82 517.14 0
+-543.78 625.9 0
+-653.07 753.38 0
+-784.95 902 0
+-942.68 1074.2 0
+-1129.2 1272.2 0
+-1347.1 1497.6 0
+-1598.1 1750.6 0
+-1883.1 2030 0
+-2202.1 2331.8 0
+-2554.2 2649.2 0
+-2937.6 2972.3 0
+-3350.4 3287.9 0
+-3790.6 3580.3 0
+-4256.7 3832.1 0
+-4748.2 4026.3 0
+-5265.6 4147.4 0
+-5810.2 4184.2 0
+-6383.8 4130.9 0
+-6987.9 3988.5 0
+-7622.8 3763.4 0
+-8285.9 3465.4 0
+-8971.6 3103.1 0
+-9669.6 2678.9 0
+-10365 2184.8 0
+-11038 1601.3 0
+-11664 900.74 0
+-12214 56.762 0
+-12658 -943.57 0
+-12965 -2088.1 0
+-13108 -3334.5 0
+-13068 -4616.3 0
+-12839 -5861.1 0
+-12435 -7014.7 0
+-11885 -8061.7 0
+-11240 -9029.3 0
+-10559 -9966.7 0
+-9899.4 -10902 0
+-9311.5 -11795 0
+-8825.4 -12503 0
+-8453.3 -12793 0
+-8195.1 -12399 0
+-8051.3 -11119 0
+-8034.1 -8914.2 0
+-8174.3 -5968 0
+-8517.4 -2673.8 0
+-9110.9 447.44 0
+-9985.4 2877.8 0
+-11138 4233.3 0
+-12522 4352.4 0
+-14047 3319.7 0
+-15596 1429 0
+-17042 -892.6 0
+-18279 -3173.9 0
+-19243 -4988.4 0
+-19932 -6033.6 0
+-20402 -6193.7 0
+-20749 -5568 0
+-21077 -4443.9 0
+-21457 -3210.3 0
+-21905 -2230.4 0
+-22380 -1725.8 0
+-22803 -1726.8 0
+-23097 -2111.4 0
+-23205 -2708.2 0
+-23101 -3393.8 0
+-22779 -4118.8 0
+-22240 -4847.3 0
+-21490 -5464.7 0
+-20550 -5747 0
+-19463 -5452.8 0
+-18273 -4507 0
+-16988 -3147.3 0
+-15547 -1886.3 0
+-13827 -1238.2 0
+-11726 -1333.8 0
+-9284.4 -1681.8 0
+-6769.7 -1311.1 0
+-4642.7 680.82 0
+-3386.1 4444.8 0
+-3262.2 9006.1 0
+-4144.3 12543 0
+-5548.3 13283 0
+-6877.1 10557 0
+-7747.8 5348.9 0
+-8188.3 -80.369 0
+-8557.1 -3368.9 0
+-9216.4 -3357.9 0
+-10177 -712.31 0
+-10987 2563.1 0
+-10975 4416.9 0
+-9732.2 4011.5 0
+-7463.3 2113.2 0
+-4927.1 375.09 0
+-2932.1 62.025 0
+-1713.5 1171.4 0
+-668.53 2600.7 0
+1276 3203 0
+4837.2 2859.2 0
+9655.6 2657.7 0
+14249 3979.7 0
+16776 7204.7 0
+16142 11130 0
+12699 13661 0
+8018.3 13296 0
+3896.2 10203 0
+1342.8 6010.1 0
+273.2 2523.2 0
+15.582 571.89 0
+0 0 0
+0 0 0
+0.70088 -1.0764 0
+8.9158 -7.8858 0
+29.735 -13.723 0
+60.715 -9.5305 0
+94.774 8.6899 0
+124.67 38.159 0
+145.9 71.527 0
+157.44 100.41 0
+161 118.38 0
+159.67 122.54 0
+156.67 113.69 0
+154.52 95.273 0
+154.53 71.868 0
+156.94 47.667 0
+161.12 25.561 0
+166.12 6.9397 0
+171.05 -7.9284 0
+175.4 -19.271 0
+179.13 -27.296 0
+182.6 -31.98 0
+186.41 -33.167 0
+191.16 -30.811 0
+197.31 -25.162 0
+205.08 -16.814 0
+214.42 -6.6003 0
+225.08 4.5515 0
+236.66 15.698 0
+248.75 25.875 0
+260.91 34.055 0
+272.75 39.173 0
+283.93 40.274 0
+294.16 36.781 0
+303.18 28.75 0
+310.76 16.993 0
+316.72 2.9574 0
+320.87 -11.618 0
+323.07 -25.157 0
+323.24 -36.643 0
+321.31 -45.786 0
+317.27 -52.933 0
+311.17 -58.753 0
+303.06 -63.854 0
+293.09 -68.496 0
+281.44 -72.497 0
+268.39 -75.36 0
+254.31 -76.536 0
+239.68 -75.692 0
+225.05 -72.888 0
+211.01 -68.572 0
+198.07 -63.435 0
+186.63 -58.182 0
+176.91 -53.322 0
+168.87 -49.052 0
+162.31 -45.269 0
+156.88 -41.684 0
+152.18 -37.991 0
+147.83 -34.014 0
+143.57 -29.785 0
+139.29 -25.534 0
+134.98 -21.604 0
+130.79 -18.33 0
+126.91 -15.929 0
+123.58 -14.431 0
+121.06 -13.687 0
+119.58 -13.419 0
+119.34 -13.321 0
+120.49 -13.151 0
+123.15 -12.804 0
+127.35 -12.335 0
+133.07 -11.934 0
+140.19 -11.862 0
+148.56 -12.363 0
+157.98 -13.587 0
+168.2 -15.533 0
+179 -18.032 0
+190.16 -20.774 0
+201.49 -23.361 0
+212.8 -25.383 0
+223.94 -26.493 0
+234.73 -26.462 0
+245 -25.211 0
+254.57 -22.805 0
+263.24 -19.43 0
+270.83 -15.347 0
+277.15 -10.835 0
+282.02 -6.1536 0
+285.3 -1.5074 0
+286.87 2.966 0
+286.67 7.1926 0
+284.65 11.146 0
+280.84 14.828 0
+275.3 18.245 0
+268.11 21.395 0
+259.43 24.257 0
+249.43 26.792 0
+238.32 28.948 0
+226.35 30.669 0
+213.74 31.905 0
+200.75 32.624 0
+187.63 32.816 0
+174.58 32.496 0
+161.81 31.704 0
+149.48 30.5 0
+137.75 28.961 0
+126.69 27.17 0
+116.38 25.214 0
+106.87 23.174 0
+98.146 21.123 0
+90.209 19.121 0
+83.024 17.213 0
+76.546 15.434 0
+70.721 13.802 0
+65.488 12.327 0
+60.786 11.008 0
+56.553 9.8393 0
+52.731 8.8106 0
+49.265 7.9095 0
+46.104 7.1227 0
+43.205 6.4373 0
+40.527 5.8412 0
+38.038 5.3236 0
+35.709 4.8748 0
+33.517 4.4862 0
+31.443 4.1501 0
+29.47 3.8595 0
+27.587 3.6081 0
+25.783 3.3898 0
+24.05 3.1992 0
+22.379 3.0313 0
+20.766 2.8816 0
+19.205 2.7465 0
+17.691 2.6229 0
+16.219 2.5085 0
+14.785 2.4019 0
+13.385 2.3022 0
+12.016 2.2095 0
+10.673 2.1242 0
+9.3553 2.0474 0
+8.0583 1.9802 0
+6.7797 1.9239 0
+5.5165 1.8797 0
+4.2659 1.8486 0
+3.0247 1.8311 0
+1.7895 1.8272 0
+0.5566 1.8363 0
+-0.67812 1.8575 0
+-1.9189 1.8893 0
+-3.1704 1.9303 0
+-4.4373 1.979 0
+-5.7245 2.0343 0
+-7.037 2.0958 0
+-8.3797 2.1637 0
+-9.758 2.2393 0
+-11.177 2.3248 0
+-12.642 2.4236 0
+-14.159 2.5398 0
+-15.734 2.6781 0
+-17.372 2.8438 0
+-19.082 3.0427 0
+-20.87 3.2802 0
+-22.744 3.5621 0
+-24.712 3.894 0
+-26.785 4.2818 0
+-28.972 4.7317 0
+-31.285 5.2507 0
+-33.74 5.847 0
+-36.351 6.5305 0
+-39.138 7.3134 0
+-42.126 8.2102 0
+-45.342 9.2381 0
+-48.821 10.417 0
+-52.607 11.771 0
+-56.752 13.325 0
+-61.322 15.111 0
+-66.398 17.166 0
+-72.077 19.536 0
+-78.481 22.282 0
+-85.754 25.489 0
+-94.072 29.271 0
+-103.65 33.79 0
+-114.73 39.269 0
+-127.62 46.007 0
+-142.68 54.403 0
+-160.34 64.968 0
+-181.13 78.343 0
+-205.67 95.312 0
+-234.77 116.81 0
+-269.4 143.9 0
+-310.78 177.83 0
+-360.43 219.97 0
+-420.22 271.81 0
+-492.46 335.02 0
+-579.9 411.38 0
+-685.79 502.88 0
+-813.89 611.64 0
+-968.38 740.01 0
+-1153.8 890.45 0
+-1374.8 1065.5 0
+-1636.2 1267.5 0
+-1942.1 1498.3 0
+-2296.3 1759 0
+-2701.6 2049.3 0
+-3159.5 2366.7 0
+-3670.3 2706.4 0
+-4232.8 3060.7 0
+-4844.6 3418.7 0
+-5502.4 3766.6 0
+-6202.3 4088.7 0
+-6940.3 4367.8 0
+-7712.8 4587 0
+-8516.6 4731.7 0
+-9349.4 4791.1 0
+-10209 4759.7 0
+-11093 4638.1 0
+-11998 4431.8 0
+-12920 4148.7 0
+-13851 3795.2 0
+-14779 3370.6 0
+-15691 2863.9 0
+-16569 2252.1 0
+-17391 1504.5 0
+-18131 591.81 0
+-18762 -500.72 0
+-19254 -1761.1 0
+-19579 -3144.7 0
+-19717 -4578.7 0
+-19658 -5980.3 0
+-19406 -7280.8 0
+-18989 -8448.9 0
+-18450 -9497.4 0
+-17851 -10466 0
+-17252 -11385 0
+-16711 -12220 0
+-16263 -12846 0
+-15922 -13047 0
+-15684 -12570 0
+-15535 -11216 0
+-15466 -8936.1 0
+-15489 -5898 0
+-15636 -2479.2 0
+-15956 806.93 0
+-16500 3436.2 0
+-17298 5002.9 0
+-18348 5312.6 0
+-19599 4413.2 0
+-20959 2568.8 0
+-22305 193.3 0
+-23519 -2231.9 0
+-24511 -4246.5 0
+-25249 -5498.9 0
+-25763 -5824.3 0
+-26132 -5291.1 0
+-26447 -4186 0
+-26773 -2926.3 0
+-27126 -1918.5 0
+-27477 -1420.9 0
+-27773 -1477.9 0
+-27970 -1957.5 0
+-28049 -2667.6 0
+-28006 -3470 0
+-27838 -4314.8 0
+-27534 -5171.5 0
+-27078 -5922.2 0
+-26479 -6323.7 0
+-25774 -6114.4 0
+-25004 -5225.6 0
+-24155 -3946.6 0
+-23112 -2868.1 0
+-21679 -2552.6 0
+-19682 -3084 0
+-17128 -3807.7 0
+-14299 -3532 0
+-11714 -1201.4 0
+-9910 3300.1 0
+-9172.3 8749.2 0
+-9354.1 12972 0
+-9945 13945 0
+-10372 11008 0
+-10360 5429.1 0
+-10105 -160.69 0
+-10105 -3211.9 0
+-10734 -2728.8 0
+-11850 190.29 0
+-12744 3141.1 0
+-12553 4040 0
+-10870 2486.1 0
+-8130.5 -100.41 0
+-5406.7 -1668.1 0
+-3663.2 -1168.5 0
+-2962.6 626.02 0
+-2239.9 1804.2 0
+59.807 1018 0
+4807.7 -1148.2 0
+11284 -2342.6 0
+17269 -186.92 0
+20222 5677.8 0
+18838 12902 0
+13901 17808 0
+7798.7 17897 0
+2991.3 13559 0
+567.25 7580.4 0
+-34.173 2889.6 0
+-11.983 577.74 0
+0 0 0
+0 0 0
+1.4989 -3.091 0
+18.755 -23.548 0
+61.056 -46.635 0
+121.44 -52.961 0
+185 -34.682 0
+238.42 3.3222 0
+274.63 49.148 0
+292.94 90.171 0
+297.03 117.25 0
+292.48 126.46 0
+284.79 118.9 0
+278.18 99.091 0
+275.02 72.962 0
+275.93 45.91 0
+280.27 21.636 0
+286.75 1.8572 0
+294.06 -13.254 0
+301.27 -24.292 0
+308.03 -31.911 0
+314.53 -36.463 0
+321.3 -37.996 0
+328.95 -36.478 0
+338 -32.025 0
+348.71 -25.018 0
+361.06 -16.071 0
+374.78 -5.9416 0
+389.46 4.5308 0
+404.61 14.417 0
+419.75 22.674 0
+434.45 28.195 0
+448.33 29.975 0
+461.1 27.393 0
+472.5 20.472 0
+482.28 10.005 0
+490.25 -2.5772 0
+496.2 -15.549 0
+499.95 -27.358 0
+501.36 -37.018 0
+500.34 -44.278 0
+496.85 -49.528 0
+490.89 -53.476 0
+482.53 -56.77 0
+471.89 -59.712 0
+459.15 -62.173 0
+444.58 -63.728 0
+428.53 -63.916 0
+411.51 -62.496 0
+394.11 -59.595 0
+376.95 -55.685 0
+360.67 -51.411 0
+345.75 -47.365 0
+332.51 -43.889 0
+321.02 -40.992 0
+311.1 -38.401 0
+302.45 -35.718 0
+294.65 -32.599 0
+287.33 -28.906 0
+280.2 -24.767 0
+273.15 -20.537 0
+266.2 -16.681 0
+259.54 -13.635 0
+253.44 -11.683 0
+248.25 -10.891 0
+244.31 -11.112 0
+241.97 -12.055 0
+241.53 -13.38 0
+243.24 -14.8 0
+247.28 -16.148 0
+253.71 -17.411 0
+262.52 -18.704 0
+273.59 -20.215 0
+286.72 -22.129 0
+301.63 -24.555 0
+318.03 -27.472 0
+335.6 -30.712 0
+354.04 -33.973 0
+373.06 -36.87 0
+392.38 -39.004 0
+411.72 -40.027 0
+430.78 -39.699 0
+449.23 -37.924 0
+466.74 -34.751 0
+482.92 -30.35 0
+497.39 -24.977 0
+509.78 -18.919 0
+519.71 -12.454 0
+526.88 -5.8177 0
+531.02 0.80871 0
+531.95 7.3005 0
+529.54 13.575 0
+523.79 19.571 0
+514.75 25.235 0
+502.59 30.503 0
+487.54 35.298 0
+469.94 39.529 0
+450.16 43.106 0
+428.63 45.944 0
+405.81 47.979 0
+382.16 49.176 0
+358.13 49.538 0
+334.14 49.103 0
+310.58 47.943 0
+287.77 46.159 0
+265.96 43.87 0
+245.36 41.206 0
+226.1 38.294 0
+208.27 35.256 0
+191.88 32.198 0
+176.91 29.21 0
+163.32 26.36 0
+151.03 23.698 0
+139.92 21.255 0
+129.9 19.044 0
+120.86 17.069 0
+112.67 15.322 0
+105.24 13.788 0
+98.467 12.449 0
+92.254 11.287 0
+86.525 10.279 0
+81.209 9.4077 0
+76.247 8.6548 0
+71.59 8.0041 0
+67.195 7.4414 0
+63.028 6.954 0
+59.06 6.5308 0
+55.27 6.1619 0
+51.637 5.8388 0
+48.146 5.5538 0
+44.783 5.3006 0
+41.537 5.0736 0
+38.396 4.8683 0
+35.35 4.6811 0
+32.392 4.5093 0
+29.511 4.3511 0
+26.7 4.2054 0
+23.95 4.0719 0
+21.255 3.9508 0
+18.606 3.8429 0
+15.998 3.7492 0
+13.423 3.6709 0
+10.874 3.6094 0
+8.3452 3.5655 0
+5.8285 3.5399 0
+3.317 3.533 0
+0.80297 3.5443 0
+-1.7215 3.5732 0
+-4.2647 3.6186 0
+-6.8353 3.6792 0
+-9.4423 3.7537 0
+-12.095 3.8412 0
+-14.802 3.9415 0
+-17.575 4.0551 0
+-20.423 4.1834 0
+-23.357 4.3292 0
+-26.388 4.4959 0
+-29.528 4.6882 0
+-32.79 4.9114 0
+-36.187 5.1713 0
+-39.734 5.4743 0
+-43.446 5.8266 0
+-47.34 6.2349 0
+-51.434 6.7058 0
+-55.748 7.2462 0
+-60.303 7.864 0
+-65.123 8.5678 0
+-70.236 9.3682 0
+-75.672 10.278 0
+-81.467 11.313 0
+-87.662 12.492 0
+-94.304 13.837 0
+-101.45 15.376 0
+-109.17 17.141 0
+-117.55 19.168 0
+-126.68 21.502 0
+-136.68 24.196 0
+-147.71 27.318 0
+-159.93 30.953 0
+-173.57 35.214 0
+-188.91 40.257 0
+-206.26 46.286 0
+-226.04 53.58 0
+-248.76 62.508 0
+-275.02 73.551 0
+-305.59 87.326 0
+-341.41 104.6 0
+-383.65 126.33 0
+-433.75 153.64 0
+-493.48 187.87 0
+-565.03 230.53 0
+-651.07 283.37 0
+-754.83 348.3 0
+-880.16 427.44 0
+-1031.6 523.1 0
+-1214.4 637.75 0
+-1434.4 774.03 0
+-1698.2 934.69 0
+-2012.7 1122.5 0
+-2385 1340.1 0
+-2822.3 1589.6 0
+-3330.9 1872.7 0
+-3916.7 2189.5 0
+-4583.7 2538.6 0
+-5334.6 2916.3 0
+-6169.9 3316.4 0
+-7087.8 3729.3 0
+-8084.3 4142.8 0
+-9153.8 4541.9 0
+-10289 4909.7 0
+-11480 5228.5 0
+-12719 5481.5 0
+-13997 5653.8 0
+-15303 5735 0
+-16629 5719.7 0
+-17966 5608.2 0
+-19302 5405.4 0
+-20629 5118.2 0
+-21932 4751.5 0
+-23199 4302.9 0
+-24412 3759.5 0
+-25556 3096.3 0
+-26609 2280.5 0
+-27550 1281.1 0
+-28356 81.652 0
+-29001 -1306.4 0
+-29463 -2836.7 0
+-29723 -4432.2 0
+-29770 -6001.2 0
+-29608 -7462.3 0
+-29260 -8768.3 0
+-28769 -9916.9 0
+-28192 -10937 0
+-27594 -11855 0
+-27034 -12646 0
+-26553 -13200 0
+-26168 -13321 0
+-25868 -12776 0
+-25629 -11373 0
+-25423 -9060.3 0
+-25238 -5990 0
+-25089 -2517.9 0
+-25019 862.41 0
+-25092 3635.4 0
+-25371 5387.7 0
+-25898 5899.4 0
+-26669 5180.2 0
+-27629 3453.2 0
+-28677 1103 0
+-29689 -1395.5 0
+-30556 -3559.9 0
+-31215 -4993.8 0
+-31666 -5482.1 0
+-31962 -5057.1 0
+-32175 -3999.1 0
+-32359 -2746.8 0
+-32533 -1740.5 0
+-32685 -1263.1 0
+-32796 -1361.2 0
+-32865 -1887.2 0
+-32910 -2634 0
+-32947 -3465.4 0
+-32966 -4350.7 0
+-32928 -5277.3 0
+-32791 -6120.8 0
+-32558 -6603.6 0
+-32282 -6428.6 0
+-32028 -5533.9 0
+-31788 -4281 0
+-31407 -3372.8 0
+-30609 -3445.8 0
+-29131 -4536.7 0
+-26911 -5798.2 0
+-24215 -5776.6 0
+-21583 -3236.7 0
+-19582 1897.5 0
+-18495 8124.7 0
+-18142 12898 0
+-17992 13957 0
+-17526 10719 0
+-16623 4812.3 0
+-15689 -732.8 0
+-15377 -3243 0
+-16047 -2029.7 0
+-17340 1228.3 0
+-18242 3682.9 0
+-17685 3331.5 0
+-15330 433.63 0
+-11956 -2744.2 0
+-9056.8 -3742.9 0
+-7790.1 -1953.3 0
+-7980.3 740.01 0
+-7957.7 1382.2 0
+-5541.9 -1508.8 0
+355.66 -6263.4 0
+8604.5 -8780.2 0
+16127 -5413.2 0
+19590 4012.9 0
+17500 15466 0
+11231 23099 0
+4190.7 23201 0
+-414.81 16716 0
+-1598.7 8269.8 0
+-802.09 2399.2 0
+-78.03 263.13 0
+0 0 0
+0 0 0
+3.3805 -7.5824 0
+41.236 -57.373 0
+129.65 -114.23 0
+248.92 -137.37 0
+367.64 -114.61 0
+462.36 -57.744 0
+523.36 11.931 0
+552.09 74.6 0
+556.46 117.24 0
+546.48 134.91 0
+531.35 129.56 0
+517.88 107.63 0
+509.9 77.122 0
+508.64 45.285 0
+513.35 17.052 0
+522.32 -5.3025 0
+533.65 -21.634 0
+545.86 -32.945 0
+558.16 -40.445 0
+570.46 -44.978 0
+583.15 -46.893 0
+596.79 -46.236 0
+611.9 -43.015 0
+628.73 -37.396 0
+647.25 -29.754 0
+667.15 -20.649 0
+687.94 -10.801 0
+709.05 -1.0979 0
+729.92 7.3968 0
+750.07 13.515 0
+769.1 16.186 0
+786.71 14.728 0
+802.64 9.1289 0
+816.65 0.16674 0
+828.52 -10.725 0
+837.98 -21.819 0
+844.81 -31.571 0
+848.76 -39.021 0
+849.66 -43.964 0
+847.42 -46.84 0
+842 -48.414 0
+833.44 -49.382 0
+821.84 -50.093 0
+807.36 -50.475 0
+790.27 -50.178 0
+770.92 -48.833 0
+749.84 -46.308 0
+727.65 -42.825 0
+705.09 -38.906 0
+682.9 -35.181 0
+661.74 -32.141 0
+642.05 -29.961 0
+624.07 -28.446 0
+607.74 -27.132 0
+592.81 -25.477 0
+578.94 -23.079 0
+565.77 -19.825 0
+553.03 -15.941 0
+540.63 -11.917 0
+528.67 -8.3642 0
+517.41 -5.8443 0
+507.25 -4.7299 0
+498.68 -5.1373 0
+492.2 -6.935 0
+488.32 -9.8153 0
+487.49 -13.397 0
+490.1 -17.33 0
+496.41 -21.367 0
+506.58 -25.398 0
+520.63 -29.438 0
+538.44 -33.579 0
+559.79 -37.925 0
+584.35 -42.525 0
+611.75 -47.32 0
+641.57 -52.126 0
+673.39 -56.633 0
+706.75 -60.452 0
+741.17 -63.169 0
+776.15 -64.411 0
+811.12 -63.902 0
+845.45 -61.505 0
+878.44 -57.228 0
+909.37 -51.212 0
+937.46 -43.697 0
+961.96 -34.98 0
+982.13 -25.369 0
+997.32 -15.158 0
+1007 -4.6017 0
+1010.7 6.0793 0
+1008.1 16.693 0
+999.29 27.061 0
+984.18 37.005 0
+963.07 46.342 0
+936.39 54.879 0
+904.7 62.429 0
+868.72 68.816 0
+829.24 73.899 0
+787.12 77.581 0
+743.22 79.821 0
+698.41 80.638 0
+653.5 80.114 0
+609.21 78.38 0
+566.18 75.609 0
+524.92 72.001 0
+485.82 67.769 0
+449.16 63.122 0
+415.09 58.258 0
+383.7 53.349 0
+354.94 48.54 0
+328.73 43.945 0
+304.93 39.645 0
+283.35 35.693 0
+263.81 32.115 0
+246.08 28.918 0
+229.96 26.092 0
+215.25 23.616 0
+201.77 21.46 0
+189.35 19.592 0
+177.84 17.978 0
+167.12 16.586 0
+157.07 15.386 0
+147.6 14.348 0
+138.64 13.45 0
+130.12 12.668 0
+121.99 11.985 0
+114.21 11.384 0
+106.74 10.853 0
+99.559 10.381 0
+92.629 9.957 0
+85.931 9.5751 0
+79.445 9.2289 0
+73.15 8.9138 0
+67.03 8.6265 0
+61.065 8.3645 0
+55.24 8.1262 0
+49.539 7.911 0
+43.946 7.7188 0
+38.446 7.55 0
+33.023 7.4053 0
+27.664 7.286 0
+22.353 7.1932 0
+17.076 7.1279 0
+11.819 7.0911 0
+6.5665 7.083 0
+1.3028 7.1038 0
+-3.9875 7.153 0
+-9.3206 7.2299 0
+-14.713 7.3335 0
+-20.182 7.4628 0
+-25.746 7.6176 0
+-31.422 7.7979 0
+-37.231 8.0047 0
+-43.191 8.2402 0
+-49.324 8.5077 0
+-55.652 8.8116 0
+-62.198 9.1574 0
+-68.988 9.5515 0
+-76.048 10.001 0
+-83.407 10.513 0
+-91.095 11.096 0
+-99.144 11.758 0
+-107.59 12.507 0
+-116.47 13.352 0
+-125.83 14.304 0
+-135.71 15.374 0
+-146.16 16.577 0
+-157.24 17.929 0
+-169.01 19.452 0
+-181.54 21.17 0
+-194.92 23.115 0
+-209.23 25.323 0
+-224.59 27.838 0
+-241.13 30.713 0
+-259 34.011 0
+-278.39 37.809 0
+-299.52 42.206 0
+-322.68 47.326 0
+-348.2 53.334 0
+-376.51 60.445 0
+-408.15 68.945 0
+-443.79 79.212 0
+-484.26 91.74 0
+-530.61 107.17 0
+-584.16 126.31 0
+-646.57 150.17 0
+-719.87 180.01 0
+-806.62 217.3 0
+-909.95 263.83 0
+-1033.7 321.61 0
+-1182.5 392.98 0
+-1361.8 480.52 0
+-1578.3 587.07 0
+-1839.4 715.68 0
+-2153.7 869.59 0
+-2530.9 1052.1 0
+-2981.4 1266.6 0
+-3516 1516.3 0
+-4146.1 1803.7 0
+-4882.6 2130.9 0
+-5735.6 2498.7 0
+-6713.6 2906.1 0
+-7823.3 3350.2 0
+-9068.3 3825 0
+-10449 4321.9 0
+-11963 4828.9 0
+-13602 5330.8 0
+-15356 5810.4 0
+-17211 6248.6 0
+-19150 6625.9 0
+-21155 6924.1 0
+-23206 7127.9 0
+-25280 7226.2 0
+-27358 7213.7 0
+-29417 7090.3 0
+-31436 6861.1 0
+-33393 6532.6 0
+-35267 6109.4 0
+-37037 5589.1 0
+-38681 4958.4 0
+-40181 4192.5 0
+-41515 3258.5 0
+-42666 2125.4 0
+-43617 776.82 0
+-44349 -775.26 0
+-44848 -2483 0
+-45105 -4265.2 0
+-45115 -6022.9 0
+-44889 -7663.7 0
+-44451 -9126.3 0
+-43846 -10394 0
+-43133 -11484 0
+-42376 -12418 0
+-41640 -13179 0
+-40967 -13672 0
+-40378 -13724 0
+-39858 -13125 0
+-39373 -11697 0
+-38875 -9393.7 0
+-38331 -6351.7 0
+-37731 -2902.6 0
+-37106 489.6 0
+-36524 3333.6 0
+-36075 5224.7 0
+-35844 5929.4 0
+-35879 5422.6 0
+-36173 3879.5 0
+-36658 1640.1 0
+-37219 -845 0
+-37738 -3086.1 0
+-38129 -4651.2 0
+-38361 -5277 0
+-38455 -4957.8 0
+-38458 -3961.5 0
+-38412 -2739.4 0
+-38336 -1753 0
+-38238 -1294 0
+-38140 -1397.8 0
+-38088 -1897.1 0
+-38139 -2579.7 0
+-38322 -3334.6 0
+-38604 -4174.8 0
+-38905 -5117.5 0
+-39150 -6022.4 0
+-39335 -6551.3 0
+-39549 -6345.5 0
+-39910 -5343.9 0
+-40437 -4004.9 0
+-40955 -3187.4 0
+-41110 -3641.2 0
+-40532 -5366 0
+-39074 -7297.9 0
+-36961 -7680.6 0
+-34735 -5072.8 0
+-32965 555.87 0
+-31903 7397.6 0
+-31316 12516 0
+-30645 13449 0
+-29441 9775.9 0
+-27778 3574.5 0
+-26310 -1700.6 0
+-25859 -3342.8 0
+-26739 -1150.8 0
+-28314 2448.7 0
+-29205 4132.5 0
+-28133 2142.2 0
+-24900 -2316.3 0
+-20760 -5902.5 0
+-17750 -5760.9 0
+-17263 -2020.7 0
+-18810 1887.3 0
+-19952 1674 0
+-17718 -4192.1 0
+-10727 -12489 0
+-572.57 -16781 0
+8673 -11836 0
+12776 2129.5 0
+10075 18744 0
+2727.7 29290 0
+-4568.4 28596 0
+-7712.8 18637 0
+-6006.1 6846 0
+-2343.1 95.714 0
+-210.77 -713.42 0
+0 0 0
+0 0 0
+8.196 -18.306 0
+95.941 -134.09 0
+286.65 -256.74 0
+524.84 -302.68 0
+745.92 -261.17 0
+911.89 -163.43 0
+1012.9 -48.927 0
+1057.2 51.311 0
+1061.1 119.54 0
+1042.5 150.51 0
+1016.2 148.41 0
+992.93 122.93 0
+978.51 85.419 0
+974.84 45.837 0
+981.02 10.924 0
+994.68 -16.2 0
+1013.1 -35.35 0
+1034.1 -48.008 0
+1056.3 -56.069 0
+1079.3 -61.007 0
+1103.2 -63.591 0
+1128.4 -64.011 0
+1155.3 -62.195 0
+1184.2 -58.087 0
+1214.9 -51.802 0
+1247 -43.681 0
+1279.8 -34.312 0
+1312.6 -24.546 0
+1344.7 -15.489 0
+1375.5 -8.3951 0
+1404.7 -4.4352 0
+1431.8 -4.3683 0
+1456.7 -8.2463 0
+1479.1 -15.292 0
+1498.7 -24.043 0
+1515.2 -32.739 0
+1528.2 -39.82 0
+1537.2 -44.34 0
+1542.1 -46.145 0
+1542.6 -45.749 0
+1538.5 -43.996 0
+1529.9 -41.656 0
+1516.8 -39.142 0
+1499.4 -36.446 0
+1477.9 -33.297 0
+1452.8 -29.435 0
+1424.5 -24.855 0
+1393.8 -19.908 0
+1361.6 -15.209 0
+1328.9 -11.405 0
+1296.4 -8.9148 0
+1264.8 -7.7524 0
+1234.8 -7.5078 0
+1206.3 -7.4945 0
+1179.4 -6.997 0
+1153.8 -5.5222 0
+1129.2 -2.9676 0
+1105.4 0.34609 0
+1082.6 3.7749 0
+1060.8 6.5371 0
+1040.6 7.9164 0
+1022.6 7.4222 0
+1007.4 4.8677 0
+995.96 0.36084 0
+988.91 -5.7721 0
+986.98 -13.096 0
+990.78 -21.177 0
+1000.8 -29.659 0
+1017.2 -38.307 0
+1040.3 -47.004 0
+1069.9 -55.713 0
+1105.9 -64.423 0
+1147.8 -73.09 0
+1195.3 -81.584 0
+1247.8 -89.659 0
+1304.6 -96.959 0
+1365 -103.04 0
+1428.2 -107.41 0
+1493.2 -109.63 0
+1558.9 -109.32 0
+1624.1 -106.26 0
+1687.5 -100.36 0
+1747.5 -91.716 0
+1802.7 -80.53 0
+1851.6 -67.11 0
+1892.7 -51.821 0
+1924.6 -35.051 0
+1946.2 -17.199 0
+1956.7 1.3406 0
+1955.4 20.168 0
+1942 38.878 0
+1916.6 57.055 0
+1879.6 74.275 0
+1831.7 90.124 0
+1773.9 104.21 0
+1707.6 116.2 0
+1634.1 125.83 0
+1555.3 132.92 0
+1472.6 137.43 0
+1387.9 139.38 0
+1302.5 138.94 0
+1218 136.34 0
+1135.6 131.89 0
+1056.3 125.95 0
+980.85 118.88 0
+909.89 111.05 0
+843.75 102.81 0
+782.57 94.454 0
+726.34 86.238 0
+674.91 78.364 0
+628.01 70.979 0
+585.34 64.179 0
+546.5 58.017 0
+511.12 52.508 0
+478.8 47.637 0
+449.16 43.37 0
+421.87 39.658 0
+396.6 36.445 0
+373.09 33.672 0
+351.08 31.281 0
+330.38 29.216 0
+310.81 27.429 0
+292.23 25.875 0
+274.52 24.516 0
+257.58 23.321 0
+241.32 22.262 0
+225.69 21.318 0
+210.62 20.471 0
+196.06 19.707 0
+181.96 19.015 0
+168.29 18.386 0
+155.01 17.815 0
+142.07 17.295 0
+129.45 16.824 0
+117.11 16.4 0
+105.02 16.021 0
+93.149 15.686 0
+81.461 15.396 0
+69.928 15.15 0
+58.52 14.951 0
+47.207 14.798 0
+35.958 14.694 0
+24.744 14.638 0
+13.533 14.632 0
+2.2966 14.676 0
+-8.9983 14.769 0
+-20.383 14.913 0
+-31.89 15.105 0
+-43.554 15.347 0
+-55.408 15.637 0
+-67.49 15.979 0
+-79.835 16.372 0
+-92.483 16.822 0
+-105.48 17.332 0
+-118.85 17.908 0
+-132.67 18.558 0
+-146.96 19.29 0
+-161.79 20.114 0
+-177.2 21.039 0
+-193.26 22.075 0
+-210.04 23.235 0
+-227.58 24.528 0
+-245.98 25.969 0
+-265.3 27.571 0
+-285.63 29.352 0
+-307.07 31.33 0
+-329.71 33.531 0
+-353.66 35.981 0
+-379.06 38.718 0
+-406.03 41.782 0
+-434.75 45.225 0
+-465.38 49.109 0
+-498.14 53.509 0
+-533.28 58.518 0
+-571.1 64.25 0
+-611.96 70.852 0
+-656.29 78.512 0
+-704.67 87.477 0
+-757.77 98.067 0
+-816.48 110.71 0
+-881.91 125.95 0
+-955.47 144.51 0
+-1039 167.31 0
+-1134.6 195.51 0
+-1245.3 230.57 0
+-1374.7 274.25 0
+-1527.1 328.68 0
+-1708.1 396.37 0
+-1924.2 480.23 0
+-2183.5 583.56 0
+-2495.5 710.02 0
+-2871.2 863.61 0
+-3323.4 1048.6 0
+-3866.4 1269.3 0
+-4515.9 1530.1 0
+-5288.9 1835.1 0
+-6203.2 2188 0
+-7276.4 2591.4 0
+-8525.9 3046.8 0
+-9967.4 3553.8 0
+-11614 4109.3 0
+-13475 4707.8 0
+-15556 5339.9 0
+-17855 5992.8 0
+-20368 6650.2 0
+-23079 7292.4 0
+-25970 7897.6 0
+-29016 8442.4 0
+-32184 8904.1 0
+-35441 9261.4 0
+-38746 9497.2 0
+-42060 9599.2 0
+-45340 9561.4 0
+-48546 9384.1 0
+-51636 9072.8 0
+-54572 8635.2 0
+-57316 8077.3 0
+-59835 7398.4 0
+-62098 6587.7 0
+-64079 5623 0
+-65757 4474.4 0
+-67116 3114.1 0
+-68144 1528.9 0
+-68836 -266.26 0
+-69191 -2219.7 0
+-69214 -4245.4 0
+-68921 -6237.4 0
+-68334 -8093.6 0
+-67495 -9740.7 0
+-66455 -11149 0
+-65282 -12327 0
+-64047 -13294 0
+-62817 -14035 0
+-61641 -14476 0
+-60541 -14467 0
+-59504 -13822 0
+-58484 -12389 0
+-57419 -10127 0
+-56252 -7166.6 0
+-54946 -3813.3 0
+-53515 -493.89 0
+-52022 2338.7 0
+-50573 4306 0
+-49290 5176.6 0
+-48276 4898.3 0
+-47578 3596.5 0
+-47169 1555 0
+-46963 -816.49 0
+-46844 -3037.8 0
+-46712 -4653.7 0
+-46511 -5359.5 0
+-46234 -5112.5 0
+-45901 -4164.6 0
+-45533 -2970.7 0
+-45150 -1998.3 0
+-44781 -1530 0
+-44491 -1574.4 0
+-44379 -1941.6 0
+-44539 -2429.3 0
+-45001 -2980.3 0
+-45697 -3681.7 0
+-46484 -4593.3 0
+-47237 -5543.7 0
+-47947 -6096.7 0
+-48748 -5794.4 0
+-49832 -4564.3 0
+-51274 -2987.5 0
+-52893 -2130.9 0
+-54259 -2907 0
+-54895 -5296 0
+-54558 -7994.9 0
+-53431 -8904.3 0
+-52048 -6351.2 0
+-50965 -363.33 0
+-50382 6909.7 0
+-49977 12127 0
+-49143 12669 0
+-47505 8381.9 0
+-45353 1903.5 0
+-43627 -2865.2 0
+-43330 -3298.6 0
+-44699 101.77 0
+-46758 3970.5 0
+-47699 4491.8 0
+-46027 366.6 0
+-41760 -5900.8 0
+-36761 -9629.4 0
+-33739 -7600.4 0
+-34370 -1059.7 0
+-37770 4481 0
+-40564 3047.8 0
+-38816 -6836.1 0
+-30773 -19839 0
+-18552 -26495 0
+-7373 -19615 0
+-2502.8 -57.75 0
+-5750 22669 0
+-13951 36123 0
+-20763 33358 0
+-20896 17977 0
+-14026 1540.2 0
+-5224.4 -5548.4 0
+-466.47 -2952.2 0
+0 0 0
+0 0 0
+21.982 -46.469 0
+239.34 -318.33 0
+662.35 -563.62 0
+1138.6 -625.89 0
+1544.5 -526.02 0
+1828.9 -342.4 0
+1991.6 -145.89 0
+2057.6 17.577 0
+2059.4 126.25 0
+2027.3 176.99 0
+1985.2 178.85 0
+1948.9 147.18 0
+1927 98.472 0
+1921.9 46.66 0
+1932.5 1.0238 0
+1955.4 -34.157 0
+1986.7 -58.621 0
+2023.4 -74.451 0
+2063.4 -84.41 0
+2105.7 -90.771 0
+2150.2 -94.832 0
+2197.1 -96.989 0
+2246.7 -97.098 0
+2298.9 -94.859 0
+2353.1 -90.102 0
+2408.8 -82.928 0
+2465 -73.793 0
+2520.6 -63.534 0
+2574.7 -53.34 0
+2626.7 -44.604 0
+2676 -38.64 0
+2722.2 -36.311 0
+2765.1 -37.71 0
+2804.4 -42.034 0
+2839.6 -47.748 0
+2870.2 -53.012 0
+2895.5 -56.212 0
+2915.1 -56.404 0
+2928.2 -53.499 0
+2934.5 -48.119 0
+2933.6 -41.233 0
+2925.5 -33.727 0
+2910.2 -26.112 0
+2887.9 -18.468 0
+2858.8 -10.621 0
+2823.5 -2.437 0
+2782.6 5.9276 0
+2736.8 13.95 0
+2687.4 20.87 0
+2635.6 25.969 0
+2582.5 28.861 0
+2529.4 29.679 0
+2476.9 29.054 0
+2425.7 27.923 0
+2375.9 27.213 0
+2327.7 27.539 0
+2280.9 29.013 0
+2235.7 31.219 0
+2192.4 33.337 0
+2151.4 34.381 0
+2113.5 33.441 0
+2079.9 29.871 0
+2051.6 23.391 0
+2029.8 14.073 0
+2015.9 2.2673 0
+2010.9 -11.52 0
+2015.8 -26.741 0
+2031.5 -42.899 0
+2058.6 -59.591 0
+2097.4 -76.525 0
+2148 -93.486 0
+2210.5 -110.3 0
+2284.3 -126.75 0
+2369.1 -142.58 0
+2464 -157.39 0
+2568 -170.69 0
+2680 -181.85 0
+2798.4 -190.22 0
+2921.5 -195.15 0
+3047.1 -196.07 0
+3172.9 -192.54 0
+3296.3 -184.31 0
+3414.3 -171.35 0
+3524 -153.79 0
+3622.5 -131.95 0
+3706.7 -106.29 0
+3774 -77.357 0
+3822 -45.816 0
+3848.9 -12.386 0
+3853.2 22.143 0
+3834.3 56.929 0
+3792 91.092 0
+3726.9 123.75 0
+3640.4 154.03 0
+3534.2 181.15 0
+3410.8 204.43 0
+3273 223.36 0
+3123.8 237.6 0
+2966.4 247.03 0
+2804 251.73 0
+2639.8 251.98 0
+2476.4 248.21 0
+2316.4 240.97 0
+2161.8 230.9 0
+2014.3 218.69 0
+1874.9 204.99 0
+1744.6 190.45 0
+1623.5 175.61 0
+1511.8 160.95 0
+1409.3 146.85 0
+1315.4 133.58 0
+1229.5 121.34 0
+1151.1 110.22 0
+1079.3 100.27 0
+1013.4 91.467 0
+952.7 83.747 0
+896.53 77.029 0
+844.31 71.21 0
+795.49 66.183 0
+749.62 61.842 0
+706.32 58.086 0
+665.24 54.824 0
+626.12 51.976 0
+588.72 49.473 0
+552.86 47.258 0
+518.38 45.283 0
+485.15 43.511 0
+453.05 41.911 0
+421.98 40.461 0
+391.85 39.143 0
+362.58 37.943 0
+334.09 36.851 0
+306.31 35.861 0
+279.17 34.966 0
+252.6 34.165 0
+226.54 33.452 0
+200.92 32.829 0
+175.68 32.293 0
+150.75 31.844 0
+126.08 31.484 0
+101.59 31.212 0
+77.232 31.03 0
+52.941 30.939 0
+28.656 30.94 0
+4.313 31.033 0
+-20.15 31.219 0
+-44.797 31.498 0
+-69.693 31.872 0
+-94.905 32.34 0
+-120.5 32.905 0
+-146.55 33.569 0
+-173.14 34.337 0
+-200.33 35.214 0
+-228.2 36.207 0
+-256.85 37.325 0
+-286.35 38.579 0
+-316.82 39.981 0
+-348.34 41.545 0
+-381.02 43.283 0
+-414.97 45.212 0
+-450.32 47.348 0
+-487.19 49.708 0
+-525.72 52.312 0
+-566.06 55.18 0
+-608.36 58.337 0
+-652.79 61.813 0
+-699.54 65.64 0
+-748.81 69.862 0
+-800.82 74.526 0
+-855.8 79.694 0
+-914.04 85.437 0
+-975.83 91.846 0
+-1041.5 99.029 0
+-1111.6 107.12 0
+-1186.4 116.31 0
+-1266.6 126.8 0
+-1353 138.9 0
+-1446.4 152.99 0
+-1548 169.57 0
+-1659.3 189.31 0
+-1782.1 213.05 0
+-1918.8 241.92 0
+-2072.6 277.34 0
+-2247.4 321.08 0
+-2448.1 375.37 0
+-2680.9 442.9 0
+-2953.6 526.92 0
+-3275.8 631.23 0
+-3658.9 760.22 0
+-4116.8 918.84 0
+-4665.9 1112.5 0
+-5325 1347.2 0
+-6115.8 1628.9 0
+-7062.2 1963.9 0
+-8190.5 2357.9 0
+-9528.6 2816.3 0
+-11105 3343.1 0
+-12949 3940.9 0
+-15088 4609.7 0
+-17545 5347 0
+-20340 6146.3 0
+-23487 6997 0
+-26991 7884.3 0
+-30848 8788.4 0
+-35045 9685.4 0
+-39555 10548 0
+-44343 11346 0
+-49361 12050 0
+-54553 12630 0
+-59855 13059 0
+-65198 13317 0
+-70507 13389 0
+-75708 13270 0
+-80726 12958 0
+-85490 12463 0
+-89934 11796 0
+-93994 10965 0
+-97619 9976 0
+-100760 8823.6 0
+-103390 7492.2 0
+-105470 5959.4 0
+-106990 4205.1 0
+-107950 2224 0
+-108370 39.233 0
+-108250 -2289.8 0
+-107640 -4669.2 0
+-106570 -6984.5 0
+-105110 -9124.3 0
+-103310 -11006 0
+-101260 -12590 0
+-99044 -13878 0
+-96744 -14890 0
+-94442 -15619 0
+-92195 -16007 0
+-90031 -15933 0
+-87939 -15240 0
+-85870 -13803 0
+-83752 -11598 0
+-81502 -8752.4 0
+-79062 -5549.4 0
+-76420 -2374 0
+-73626 371.27 0
+-70795 2350.6 0
+-68077 3352 0
+-65621 3308.2 0
+-63529 2298.1 0
+-61825 542.54 0
+-60462 -1602.8 0
+-59343 -3683.3 0
+-58369 -5234.8 0
+-57470 -5921.5 0
+-56613 -5669.6 0
+-55791 -4714.3 0
+-55005 -3506.4 0
+-54273 -2503.6 0
+-53644 -1958.6 0
+-53230 -1836.9 0
+-53182 -1923.6 0
+-53629 -2045.8 0
+-54593 -2236.9 0
+-55946 -2694.5 0
+-57459 -3535.6 0
+-58935 -4537.5 0
+-60348 -5117.8 0
+-61887 -4669.8 0
+-63834 -3089.7 0
+-66339 -1106.4 0
+-69230 -53.467 0
+-72012 -1062.4 0
+-74098 -4114.1 0
+-75162 -7642 0
+-75349 -9158.6 0
+-75202 -6736.2 0
+-75266 -482.82 0
+-75666 7059.2 0
+-75960 12119 0
+-75451 11970 0
+-73816 6852.2 0
+-71576 90.456 0
+-69981 -3936.2 0
+-70228 -2815.1 0
+-72458 1999.6 0
+-75294 5988.2 0
+-76439 4832.6 0
+-74163 -2043.1 0
+-68760 -10419 0
+-62829 -13964 0
+-59879 -9145.1 0
+-61921 1219.8 0
+-67616 8906.3 0
+-72493 5842.9 0
+-71487 -9272.6 0
+-62398 -28351 0
+-47932 -38086 0
+-34621 -28900 0
+-28909 -2591.6 0
+-32754 27265 0
+-41760 43457 0
+-47499 36819 0
+-42992 13202 0
+-28060 -10041 0
+-10618 -17003 0
+-980.71 -7604 0
+0 0 0
+0 0 0
+68.556 -131.66 0
+649.37 -787.86 0
+1599.8 -1228 0
+2533.3 -1244.9 0
+3254.1 -989.89 0
+3722.9 -634.78 0
+3974.2 -294.26 0
+4067.5 -28.538 0
+4062.8 141.32 0
+4010.3 219.57 0
+3946.5 224.94 0
+3894.4 182.16 0
+3865.6 115.57 0
+3863.1 44.765 0
+3884.7 -17.559 0
+3925.7 -65.668 0
+3980.7 -99.291 0
+4045.7 -121.34 0
+4117.8 -135.7 0
+4195.4 -145.62 0
+4278.1 -153.03 0
+4365.8 -158.53 0
+4458.1 -161.86 0
+4554.6 -162.42 0
+4654.2 -159.7 0
+4755.5 -153.57 0
+4857 -144.35 0
+4957.2 -132.94 0
+5054.8 -120.69 0
+5148.7 -109.2 0
+5238.2 -100 0
+5322.9 -94.082 0
+5402.1 -91.575 0
+5475.5 -91.603 0
+5542.2 -92.494 0
+5601.5 -92.259 0
+5652.2 -89.187 0
+5693.2 -82.331 0
+5723.5 -71.693 0
+5742.3 -58.07 0
+5749 -42.633 0
+5743.5 -26.462 0
+5725.7 -10.228 0
+5695.9 5.86 0
+5654.3 21.845 0
+5601.5 37.701 0
+5538.5 53.064 0
+5466.2 67.175 0
+5386.2 79.053 0
+5300.1 87.829 0
+5209.8 93.09 0
+5116.9 95.076 0
+5022.9 94.641 0
+4929.1 92.99 0
+4836.1 91.299 0
+4744.7 90.339 0
+4655.2 90.248 0
+4568.3 90.501 0
+4484.8 90.075 0
+4406 87.728 0
+4333.2 82.298 0
+4268.3 72.935 0
+4213.3 59.23 0
+4170.2 41.205 0
+4141.3 19.24 0
+4128.3 -6.0655 0
+4133.2 -34.014 0
+4157.4 -63.915 0
+4202.3 -95.146 0
+4268.7 -127.17 0
+4357.3 -159.51 0
+4468.3 -191.73 0
+4601.4 -223.34 0
+4756.2 -253.79 0
+4931.5 -282.38 0
+5125.9 -308.25 0
+5337.2 -330.43 0
+5562.8 -347.83 0
+5799.3 -359.38 0
+6042.8 -364.06 0
+6288.6 -361.03 0
+6531.7 -349.68 0
+6766.4 -329.71 0
+6986.9 -301.08 0
+7187.1 -264.11 0
+7361.4 -219.38 0
+7504.2 -167.75 0
+7610.6 -110.33 0
+7676.7 -48.457 0
+7699.3 16.35 0
+7676.6 82.403 0
+7608.1 147.92 0
+7494.6 211.1 0
+7338.3 270.18 0
+7142.4 323.56 0
+6911.3 369.88 0
+6650.4 408.07 0
+6365.6 437.44 0
+6063 457.71 0
+5748.9 468.97 0
+5429.3 471.71 0
+5109.9 466.69 0
+4795.6 454.96 0
+4490.6 437.69 0
+4198.2 416.15 0
+3920.9 391.6 0
+3660.4 365.24 0
+3417.6 338.13 0
+3192.6 311.19 0
+2985.1 285.14 0
+2794.3 260.55 0
+2619.2 237.79 0
+2458.3 217.07 0
+2310.4 198.48 0
+2174.1 182 0
+2047.9 167.53 0
+1930.6 154.92 0
+1821.1 143.98 0
+1718.3 134.51 0
+1621.4 126.31 0
+1529.6 119.2 0
+1442.2 112.99 0
+1358.7 107.56 0
+1278.7 102.75 0
+1201.8 98.481 0
+1127.8 94.652 0
+1056.2 91.199 0
+986.96 88.068 0
+919.82 85.22 0
+854.61 82.622 0
+791.15 80.254 0
+729.3 78.099 0
+668.91 76.145 0
+609.83 74.383 0
+551.92 72.807 0
+495.05 71.412 0
+439.09 70.196 0
+383.91 69.157 0
+329.36 68.292 0
+275.34 67.602 0
+221.7 67.088 0
+168.33 66.749 0
+115.09 66.587 0
+61.868 66.602 0
+8.5244 66.796 0
+-45.064 67.171 0
+-99.028 67.728 0
+-153.5 68.468 0
+-208.61 69.397 0
+-264.5 70.516 0
+-321.31 71.833 0
+-379.19 73.354 0
+-438.29 75.09 0
+-498.78 77.053 0
+-560.81 79.257 0
+-624.57 81.719 0
+-690.23 84.457 0
+-758.01 87.493 0
+-828.09 90.848 0
+-900.71 94.547 0
+-976.1 98.614 0
+-1054.5 103.08 0
+-1136.2 107.97 0
+-1221.4 113.32 0
+-1310.4 119.16 0
+-1403.7 125.55 0
+-1501.4 132.53 0
+-1604 140.16 0
+-1711.8 148.52 0
+-1825.4 157.68 0
+-1945.1 167.77 0
+-2071.5 178.9 0
+-2205.2 191.24 0
+-2346.8 205.01 0
+-2497.3 220.47 0
+-2657.5 237.98 0
+-2828.8 258 0
+-3012.6 281.16 0
+-3211 308.28 0
+-3426.3 340.43 0
+-3661.8 379 0
+-3921.8 425.82 0
+-4211.4 483.17 0
+-4537.7 553.96 0
+-4909.2 641.74 0
+-5336.9 750.87 0
+-5834.5 886.52 0
+-6418.4 1054.7 0
+-7109 1262.5 0
+-7930.3 1517.5 0
+-8910.5 1828.2 0
+-10082 2203.6 0
+-11482 2652.7 0
+-13151 3184.6 0
+-15133 3807.2 0
+-17475 4527.4 0
+-20223 5349.6 0
+-23423 6275.4 0
+-27119 7302.3 0
+-31347 8423.3 0
+-36137 9625.6 0
+-41505 10890 0
+-47455 12192 0
+-53974 13500 0
+-61032 14777 0
+-68580 15982 0
+-76550 17073 0
+-84856 18006 0
+-93396 18742 0
+-102060 19246 0
+-110720 19491 0
+-119240 19459 0
+-127510 19143 0
+-135390 18547 0
+-142760 17683 0
+-149510 16570 0
+-155540 15225 0
+-160770 13665 0
+-165130 11894 0
+-168580 9911.4 0
+-171080 7707.5 0
+-172620 5276.9 0
+-173210 2629.7 0
+-172900 -195.98 0
+-171720 -3126 0
+-169770 -6053 0
+-167120 -8850.5 0
+-163880 -11397 0
+-160180 -13601 0
+-156130 -15420 0
+-151850 -16852 0
+-147470 -17922 0
+-143090 -18637 0
+-138780 -18959 0
+-134590 -18797 0
+-130510 -18028 0
+-126500 -16560 0
+-122490 -14391 0
+-118370 -11655 0
+-114060 -8616.8 0
+-109540 -5618.2 0
+-104830 -3004.1 0
+-100040 -1053.5 0
+-95335 57.465 0
+-90907 261.38 0
+-86903 -401.75 0
+-83403 -1773.9 0
+-80404 -3561.8 0
+-77845 -5349.4 0
+-75643 -6678.2 0
+-73724 -7195.2 0
+-72040 -6805.1 0
+-70558 -5730.4 0
+-69256 -4411.4 0
+-68147 -3280.2 0
+-67305 -2537 0
+-66886 -2086.2 0
+-67097 -1687.6 0
+-68096 -1223 0
+-69881 -861.11 0
+-72238 -953.96 0
+-74822 -1693 0
+-77337 -2779.6 0
+-79726 -3426 0
+-82229 -2814.3 0
+-85233 -780.73 0
+-88981 1773.9 0
+-93324 3186.1 0
+-97705 2044.5 0
+-101440 -1652.9 0
+-104130 -6043.9 0
+-105910 -8200.5 0
+-107350 -5916.9 0
+-109020 583.35 0
+-110960 8291.9 0
+-112560 12962 0
+-112980 11807 0
+-111910 5600 0
+-110080 -1490.1 0
+-109080 -4559.3 0
+-110320 -1545.6 0
+-113830 4866.3 0
+-117810 8758.1 0
+-119390 5296.6 0
+-116590 -5072.6 0
+-110000 -15936 0
+-103050 -18959 0
+-100170 -10344 0
+-103770 5006.2 0
+-112040 15438 0
+-119290 10308 0
+-119190 -11388 0
+-109030 -38078 0
+-92151 -51710 0
+-76545 -39814 0
+-69991 -5445.8 0
+-74638 32692 0
+-84690 51386 0
+-89192 38598 0
+-78770 2895.8 0
+-52578 -30821 0
+-21270 -38268 0
+-2168 -17184 0
+0 0 0
+0 0 0
+271.51 -454.03 0
+1935.3 -2033.8 0
+4011.9 -2620 0
+5738.6 -2369.3 0
+6941.8 -1758.4 0
+7669.4 -1086.7 0
+8033.8 -507.94 0
+8154.2 -85.266 0
+8133.3 172.15 0
+8049.9 285.55 0
+7957.8 290.94 0
+7888.9 228.08 0
+7857.9 132.92 0
+7867.8 32.889 0
+7914.4 -54.949 0
+7990.8 -123.26 0
+8090.2 -172.05 0
+8206.9 -205.49 0
+8337.6 -228.9 0
+8480.3 -246.72 0
+8634.2 -261.47 0
+8798.4 -273.87 0
+8972 -283.36 0
+9153.3 -288.91 0
+9340.1 -289.59 0
+9529.7 -285 0
+9719.6 -275.46 0
+9907.2 -262.01 0
+10090 -246.3 0
+10268 -230.29 0
+10438 -215.78 0
+10600 -203.93 0
+10752 -194.87 0
+10895 -187.57 0
+11026 -180.13 0
+11144 -170.33 0
+11247 -156.3 0
+11333 -137.12 0
+11399 -112.96 0
+11446 -84.908 0
+11471 -54.473 0
+11474 -23.06 0
+11456 8.3994 0
+11416 39.492 0
+11354 70.077 0
+11273 99.911 0
+11172 128.35 0
+11054 154.31 0
+10920 176.46 0
+10772 193.66 0
+10615 205.35 0
+10449 211.82 0
+10278 214.1 0
+10105 213.68 0
+9930.1 211.99 0
+9756.2 210 0
+9584.6 207.87 0
+9416.9 204.95 0
+9255.2 199.95 0
+9101.9 191.29 0
+8959.9 177.48 0
+8832.5 157.37 0
+8723.4 130.37 0
+8636.1 96.422 0
+8574.6 55.937 0
+8542.4 9.6345 0
+8542.9 -41.593 0
+8579.2 -96.796 0
+8653.9 -155.04 0
+8769.3 -215.44 0
+8926.9 -277.12 0
+9127.8 -339.19 0
+9372.4 -400.66 0
+9660.2 -460.41 0
+9989.8 -517.1 0
+10359 -569.15 0
+10763 -614.76 0
+11199 -652 0
+11660 -678.86 0
+12137 -693.43 0
+12623 -694 0
+13108 -679.22 0
+13580 -648.18 0
+14028 -600.49 0
+14440 -536.33 0
+14804 -456.45 0
+15109 -362.22 0
+15345 -255.56 0
+15504 -138.93 0
+15578 -15.259 0
+15564 112.15 0
+15458 239.76 0
+15263 363.91 0
+14982 481.07 0
+14620 587.96 0
+14185 681.77 0
+13689 760.28 0
+13141 822.01 0
+12554 866.23 0
+11941 893.01 0
+11313 903.12 0
+10682 897.98 0
+10058 879.47 0
+9449.2 849.84 0
+8863.1 811.5 0
+8304.9 766.87 0
+7778.1 718.27 0
+7284.8 667.81 0
+6825.7 617.28 0
+6400.4 568.16 0
+6007.7 521.57 0
+5645.4 478.26 0
+5311.2 438.72 0
+5002.6 403.15 0
+4716.7 371.54 0
+4451 343.72 0
+4203 319.41 0
+3970.4 298.27 0
+3751.4 279.92 0
+3544.1 263.99 0
+3347 250.11 0
+3159 237.97 0
+2979 227.28 0
+2806 217.8 0
+2639.4 209.32 0
+2478.5 201.7 0
+2322.8 194.79 0
+2171.9 188.51 0
+2025.3 182.78 0
+1882.7 177.54 0
+1743.8 172.76 0
+1608.2 168.41 0
+1475.5 164.46 0
+1345.6 160.91 0
+1218.2 157.73 0
+1092.9 154.92 0
+969.46 152.48 0
+847.64 150.4 0
+727.15 148.67 0
+607.74 147.3 0
+489.13 146.29 0
+371.07 145.62 0
+253.29 145.31 0
+135.54 145.36 0
+17.547 145.76 0
+-100.95 146.52 0
+-220.2 147.64 0
+-340.5 149.13 0
+-462.1 150.99 0
+-585.29 153.24 0
+-710.35 155.88 0
+-837.59 158.93 0
+-967.31 162.41 0
+-1099.8 166.34 0
+-1235.5 170.73 0
+-1374.6 175.63 0
+-1517.6 181.06 0
+-1664.8 187.05 0
+-1816.7 193.65 0
+-1973.7 200.88 0
+-2136.2 208.81 0
+-2304.6 217.46 0
+-2479.7 226.88 0
+-2661.7 237.14 0
+-2851.4 248.29 0
+-3049.2 260.4 0
+-3255.9 273.55 0
+-3472.1 287.82 0
+-3698.5 303.32 0
+-3935.9 320.19 0
+-4185.2 338.57 0
+-4447.2 358.66 0
+-4723 380.71 0
+-5013.8 405.06 0
+-5320.9 432.14 0
+-5646.1 462.51 0
+-5991.5 496.94 0
+-6359.6 536.47 0
+-6753.8 582.47 0
+-7178.4 636.73 0
+-7639.1 701.63 0
+-8143.2 780.2 0
+-8699.9 876.32 0
+-9321.5 994.85 0
+-10023 1141.8 0
+-10824 1324.3 0
+-11749 1551.1 0
+-12827 1832.1 0
+-14093 2178.6 0
+-15589 2603.2 0
+-17366 3119.4 0
+-19479 3741.2 0
+-21991 4482.6 0
+-24972 5356.8 0
+-28497 6375.1 0
+-32642 7546 0
+-37486 8874 0
+-43102 10358 0
+-49557 11990 0
+-56909 13754 0
+-65196 15626 0
+-74438 17572 0
+-84630 19548 0
+-95739 21504 0
+-107700 23379 0
+-120420 25111 0
+-133770 26636 0
+-147590 27889 0
+-161700 28814 0
+-175900 29362 0
+-189970 29498 0
+-203700 29201 0
+-216870 28464 0
+-229250 27299 0
+-240650 25728 0
+-250910 23784 0
+-259850 21504 0
+-267370 18921 0
+-273360 16064 0
+-277760 12952 0
+-280530 9600.2 0
+-281700 6027.9 0
+-281280 2270.6 0
+-279370 -1608 0
+-276070 -5509.5 0
+-271510 -9304.8 0
+-265870 -12850 0
+-259340 -16010 0
+-252110 -18688 0
+-244370 -20839 0
+-236320 -22469 0
+-228130 -23613 0
+-219950 -24299 0
+-211890 -24517 0
+-204030 -24209 0
+-196390 -23292 0
+-188940 -21713 0
+-181600 -19501 0
+-174280 -16801 0
+-166880 -13868 0
+-159350 -11004 0
+-151700 -8494.4 0
+-144020 -6551.3 0
+-136500 -5301.5 0
+-129320 -4797.5 0
+-122680 -5025.5 0
+-116720 -5884.5 0
+-111470 -7145.1 0
+-106920 -8438.8 0
+-103010 -9327 0
+-99694 -9455.7 0
+-96895 -8722.9 0
+-94558 -7345.4 0
+-92639 -5749.1 0
+-91143 -4322.5 0
+-90168 -3189.5 0
+-89921 -2174.6 0
+-90662 -1015.2 0
+-92569 320.68 0
+-95598 1474.9 0
+-99421 1889.3 0
+-103540 1277.9 0
+-107530 45.064 0
+-111280 -746.24 0
+-115080 8.3901 0
+-119440 2570.2 0
+-124700 5843.8 0
+-130750 7769.3 0
+-136970 6589 0
+-142590 2263 0
+-147140 -3009.6 0
+-150800 -5794.8 0
+-154210 -3580.9 0
+-157980 3244.9 0
+-162070 11107 0
+-165670 15206 0
+-167740 12727 0
+-167890 5121.1 0
+-167050 -2409.6 0
+-167130 -4358 0
+-169800 859.75 0
+-175010 9034.8 0
+-180510 12572 0
+-182830 6087.6 0
+-179660 -8642.7 0
+-171880 -22494 0
+-163790 -24720 0
+-160810 -11285 0
+-165870 10292 0
+-176690 24150 0
+-186370 16540 0
+-187220 -13139 0
+-175950 -49076 0
+-156540 -67489 0
+-138510 -52446 0
+-131130 -8561.7 0
+-136850 39217 0
+-148480 60297 0
+-152250 38881 0
+-135740 -13616 0
+-96013 -63496 0
+-44249 -75260 0
+-5736 -37998 0
+0 0 0
+0 0 0
+1538.4 -2175.8 0
+6248.8 -5170.1 0
+10247 -5232 0
+13083 -4215.9 0
+14903 -2926.2 0
+15937 -1731.3 0
+16419 -788.82 0
+16550 -141.01 0
+16492 232.82 0
+16362 385.24 0
+16234 380.53 0
+16152 281.39 0
+16132 140.37 0
+16176 -4.6142 0
+16275 -131.27 0
+16421 -230.93 0
+16603 -304.61 0
+16816 -358.47 0
+17056 -399.78 0
+17320 -434.17 0
+17608 -464.58 0
+17918 -491.42 0
+18247 -513.44 0
+18591 -528.85 0
+18947 -536.15 0
+19308 -534.74 0
+19671 -525.06 0
+20030 -508.55 0
+20383 -487.41 0
+20727 -464.12 0
+21058 -440.88 0
+21376 -419.03 0
+21678 -398.59 0
+21963 -378.26 0
+22226 -355.73 0
+22465 -328.46 0
+22676 -294.43 0
+22856 -252.78 0
+23001 -204.05 0
+23108 -149.83 0
+23178 -92.216 0
+23207 -33.161 0
+23197 25.981 0
+23147 84.475 0
+23058 141.92 0
+22931 197.76 0
+22768 250.97 0
+22571 299.97 0
+22342 342.87 0
+22086 378.06 0
+21806 404.62 0
+21508 422.71 0
+21195 433.46 0
+20873 438.57 0
+20544 439.76 0
+20213 438.17 0
+19884 433.98 0
+19560 426.33 0
+19246 413.57 0
+18947 393.64 0
+18668 364.55 0
+18415 324.75 0
+18196 273.34 0
+18018 210.1 0
+17887 135.46 0
+17810 50.252 0
+17795 -44.369 0
+17846 -147.11 0
+17971 -256.6 0
+18174 -371.4 0
+18459 -489.98 0
+18829 -610.68 0
+19285 -731.57 0
+19829 -850.41 0
+20457 -964.56 0
+21167 -1071 0
+21953 -1166.2 0
+22805 -1246.4 0
+23712 -1307.9 0
+24660 -1346.8 0
+25632 -1359.6 0
+26609 -1343.3 0
+27568 -1295.8 0
+28488 -1215.7 0
+29344 -1102.8 0
+30113 -958.02 0
+30771 -783.5 0
+31297 -582.59 0
+31672 -359.84 0
+31883 -120.82 0
+31918 128.02 0
+31772 379.64 0
+31445 626.75 0
+30942 862.15 0
+30274 1079.1 0
+29455 1271.9 0
+28504 1435.6 0
+27444 1567.1 0
+26298 1664.6 0
+25091 1727.8 0
+23847 1757.9 0
+22588 1757.6 0
+21337 1730.1 0
+20110 1679.9 0
+18923 1611.6 0
+17787 1529.9 0
+16709 1439.5 0
+15696 1344.4 0
+14748 1248.3 0
+13867 1154.3 0
+13048 1064.6 0
+12290 980.89 0
+11588 904.13 0
+10936 834.83 0
+10330 773.05 0
+9763.9 718.52 0
+9233.7 670.72 0
+8734.6 629.03 0
+8262.8 592.72 0
+7814.9 561.09 0
+7388 533.44 0
+6979.5 509.15 0
+6587.4 487.69 0
+6209.8 468.57 0
+5845.4 451.42 0
+5492.9 435.94 0
+5151.3 421.87 0
+4819.5 409.05 0
+4496.7 397.32 0
+4182.3 386.59 0
+3875.5 376.78 0
+3575.6 367.85 0
+3282 359.74 0
+2994.1 352.44 0
+2711.2 345.92 0
+2432.9 340.17 0
+2158.5 335.18 0
+1887.4 330.92 0
+1619.1 327.41 0
+1353.1 324.62 0
+1088.7 322.56 0
+825.51 321.21 0
+562.88 320.59 0
+300.31 320.69 0
+37.252 321.51 0
+-226.83 323.06 0
+-492.49 325.35 0
+-760.27 328.37 0
+-1030.7 332.16 0
+-1304.5 336.72 0
+-1582 342.07 0
+-1864 348.25 0
+-2151.1 355.28 0
+-2443.9 363.2 0
+-2743.1 372.06 0
+-3049.4 381.91 0
+-3363.6 392.79 0
+-3686.3 404.77 0
+-4018.4 417.92 0
+-4360.8 432.29 0
+-4714.3 447.96 0
+-5080 465.01 0
+-5458.7 483.53 0
+-5851.4 503.59 0
+-6259.4 525.3 0
+-6683.7 548.75 0
+-7125.4 574.08 0
+-7586 601.41 0
+-8066.6 630.9 0
+-8568.7 662.75 0
+-9093.7 697.18 0
+-9643.4 734.49 0
+-10219 775.08 0
+-10824 819.46 0
+-11460 868.33 0
+-12129 922.64 0
+-12835 983.69 0
+-13584 1053.2 0
+-14380 1133.5 0
+-15232 1227.8 0
+-16148 1340.1 0
+-17143 1475.7 0
+-18233 1641.3 0
+-19439 1845.3 0
+-20788 2097.9 0
+-22316 2411.7 0
+-24065 2801.1 0
+-26088 3283.2 0
+-28446 3876.9 0
+-31216 4603 0
+-34484 5483.6 0
+-38347 6541.1 0
+-42917 7797.4 0
+-48312 9272.2 0
+-54659 10981 0
+-62087 12935 0
+-70724 15136 0
+-80689 17576 0
+-92087 20237 0
+-105000 23086 0
+-119480 26076 0
+-135550 29146 0
+-153160 32221 0
+-172250 35212 0
+-192680 38024 0
+-214270 40556 0
+-236760 42705 0
+-259890 44377 0
+-283320 45487 0
+-306710 45967 0
+-329660 45769 0
+-351820 44872 0
+-372810 43275 0
+-392270 41006 0
+-409900 38109 0
+-425420 34648 0
+-438590 30691 0
+-449230 26309 0
+-457220 21568 0
+-462500 16526 0
+-465040 11239 0
+-464890 5765.2 0
+-462140 181.28 0
+-456950 -5409.6 0
+-449530 -10872 0
+-440120 -16044 0
+-429010 -20758 0
+-416520 -24862 0
+-402970 -28253 0
+-388660 -30891 0
+-373920 -32796 0
+-359000 -34028 0
+-344130 -34644 0
+-329500 -34674 0
+-315220 -34101 0
+-301370 -32889 0
+-287950 -31030 0
+-274910 -28591 0
+-262160 -25740 0
+-249610 -22729 0
+-237210 -19829 0
+-224930 -17268 0
+-212860 -15192 0
+-201150 -13668 0
+-190010 -12719 0
+-179650 -12341 0
+-170240 -12480 0
+-161880 -12963 0
+-154610 -13475 0
+-148400 -13613 0
+-143200 -13040 0
+-138930 -11666 0
+-135510 -9711.7 0
+-132870 -7584.2 0
+-130990 -5608.4 0
+-130000 -3805.1 0
+-130160 -1900.9 0
+-131790 382.17 0
+-135070 2949.9 0
+-139880 5192.2 0
+-145760 6285.9 0
+-152020 5829.3 0
+-158070 4367.2 0
+-163730 3318.2 0
+-169350 4159.7 0
+-175540 7296.1 0
+-182760 11417 0
+-190940 13993 0
+-199410 12852 0
+-207290 7900.7 0
+-214080 1727.7 0
+-220010 -1644.9 0
+-225850 638.37 0
+-232290 7970.8 0
+-239250 16079 0
+-245670 19493 0
+-250210 15365 0
+-252350 5979.7 0
+-253100 -2216.4 0
+-254720 -2983.6 0
+-259160 4694.9 0
+-266410 14793 0
+-273790 17724 0
+-277200 7466.4 0
+-273920 -12600 0
+-265010 -30106 0
+-255560 -31435 0
+-252080 -12268 0
+-258090 16765 0
+-271040 34811 0
+-282870 24424 0
+-284570 -14563 0
+-272150 -61382 0
+-250110 -85514 0
+-229490 -66925 0
+-221130 -11989 0
+-228010 47034 0
+-241790 70763 0
+-246090 38604 0
+-225220 -35398 0
+-173210 -108350 0
+-97868 -133230 0
+-21511 -85876 0
+0 0 0
+6197.2 -1185.4 0
+13212 -8124.8 0
+20177 -10466 0
+25757 -9104.8 0
+29613 -6812.6 0
+32013 -4499.6 0
+33314 -2552.2 0
+33861 -1106.5 0
+33951 -162.48 0
+33813 350.46 0
+33610 534.13 0
+33441 495.55 0
+33358 330.76 0
+33379 115.34 0
+33500 -99.429 0
+33706 -285.69 0
+33985 -434.56 0
+34324 -549.67 0
+34718 -640.46 0
+35162 -716.67 0
+35657 -785.05 0
+36201 -848.17 0
+36790 -905.16 0
+37419 -953.14 0
+38081 -988.93 0
+38766 -1010.2 0
+39464 -1016.3 0
+40167 -1008 0
+40868 -987.76 0
+41558 -958.62 0
+42235 -923.94 0
+42892 -886.45 0
+43526 -847.59 0
+44133 -807.1 0
+44707 -763.12 0
+45242 -712.75 0
+45733 -652.95 0
+46171 -581.59 0
+46550 -498.11 0
+46865 -403.75 0
+47111 -301.08 0
+47285 -193.2 0
+47385 -82.999 0
+47411 27.48 0
+47363 137.01 0
+47242 244.79 0
+47050 349.86 0
+46787 450.6 0
+46458 544.67 0
+46067 629.27 0
+45619 701.86 0
+45121 760.79 0
+44581 805.74 0
+44006 837.67 0
+43406 858.37 0
+42787 869.75 0
+42158 873.05 0
+41527 868.39 0
+40902 854.58 0
+40291 829.38 0
+39706 790.01 0
+39156 733.68 0
+38654 658.15 0
+38214 561.97 0
+37848 444.61 0
+37570 306.36 0
+37395 148.19 0
+37335 -28.486 0
+37404 -221.92 0
+37613 -430.08 0
+37974 -650.7 0
+38496 -881.12 0
+39188 -1118.3 0
+40053 -1358.4 0
+41094 -1597.2 0
+42310 -1829.4 0
+43695 -2048.9 0
+45238 -2249 0
+46925 -2422.3 0
+48733 -2561.1 0
+50636 -2657.7 0
+52602 -2704.9 0
+54592 -2696.3 0
+56564 -2626.8 0
+58472 -2492.9 0
+60269 -2293.1 0
+61905 -2028.4 0
+63332 -1702 0
+64507 -1319.7 0
+65389 -889.9 0
+65946 -423.22 0
+66152 67.798 0
+65995 569.22 0
+65469 1066.4 0
+64582 1544.7 0
+63352 1990.2 0
+61806 2390.7 0
+59980 2736.2 0
+57918 3019.3 0
+55665 3235.5 0
+53271 3383.8 0
+50786 3465.8 0
+48256 3485.8 0
+45724 3450.5 0
+43228 3367.8 0
+40800 3247 0
+38464 3097.3 0
+36239 2928 0
+34136 2747.5 0
+32160 2563.2 0
+30312 2381.3 0
+28590 2206.6 0
+26987 2042.7 0
+25496 1891.7 0
+24105 1754.8 0
+22806 1632.4 0
+21589 1523.8 0
+20445 1428.4 0
+19363 1344.9 0
+18338 1271.9 0
+17362 1208 0
+16429 1152 0
+15534 1102.6 0
+14673 1058.8 0
+13842 1019.7 0
+13039 984.46 0
+12261 952.56 0
+11505 923.51 0
+10771 896.97 0
+10055 872.67 0
+9356.5 850.41 0
+8674.1 830.05 0
+8006.2 811.49 0
+7351.6 794.66 0
+6709 779.51 0
+6077 765.99 0
+5454.5 754.07 0
+4840.2 743.72 0
+4232.9 734.92 0
+3631.4 727.65 0
+3034.6 721.9 0
+2441.4 717.65 0
+1850.5 714.88 0
+1260.9 713.61 0
+671.37 713.81 0
+80.875 715.5 0
+-511.74 718.68 0
+-1107.6 723.36 0
+-1707.9 729.56 0
+-2313.7 737.3 0
+-2926.2 746.62 0
+-3546.7 757.56 0
+-4176.3 770.17 0
+-4816.3 784.5 0
+-5468.1 800.62 0
+-6133 818.62 0
+-6812.5 838.59 0
+-7507.9 860.61 0
+-8220.9 884.79 0
+-8953.1 911.25 0
+-9706.1 940.11 0
+-10482 971.49 0
+-11282 1005.5 0
+-12108 1042.4 0
+-12963 1082.1 0
+-13849 1125 0
+-14767 1171.1 0
+-15720 1220.7 0
+-16710 1274 0
+-17740 1331.1 0
+-18813 1392.4 0
+-19930 1458.2 0
+-21096 1528.9 0
+-22312 1605.2 0
+-23584 1688 0
+-24914 1778.3 0
+-26308 1877.7 0
+-27772 1988.5 0
+-29315 2113.6 0
+-30946 2257.2 0
+-32678 2424.8 0
+-34530 2623.6 0
+-36524 2862.8 0
+-38690 3154.4 0
+-41067 3513 0
+-43705 3956.9 0
+-46666 4507.6 0
+-50027 5190.7 0
+-53882 6035.2 0
+-58343 7073.6 0
+-63545 8341 0
+-69640 9874.1 0
+-76802 11709 0
+-85224 13881 0
+-95111 16419 0
+-106680 19345 0
+-120150 22669 0
+-135720 26388 0
+-153600 30479 0
+-173940 34901 0
+-196860 39589 0
+-222410 44453 0
+-250590 49382 0
+-281310 54243 0
+-314390 58886 0
+-349550 63149 0
+-386440 66867 0
+-424610 69879 0
+-463540 72038 0
+-502640 73218 0
+-541290 73325 0
+-578850 72298 0
+-614670 70120 0
+-648140 66813 0
+-678700 62435 0
+-705830 57082 0
+-729110 50870 0
+-748210 43932 0
+-762890 36406 0
+-772990 28423 0
+-778470 20110 0
+-779370 11587 0
+-775820 2976.9 0
+-768040 -5581.5 0
+-756330 -13926 0
+-741060 -21868 0
+-722680 -29202 0
+-701670 -35726 0
+-678540 -41270 0
+-653810 -45729 0
+-628000 -49074 0
+-601570 -51354 0
+-574960 -52664 0
+-548520 -53112 0
+-522550 -52778 0
+-497260 -51703 0
+-472800 -49911 0
+-449220 -47445 0
+-426530 -44421 0
+-404670 -41040 0
+-383590 -37562 0
+-363200 -34241 0
+-343500 -31262 0
+-324530 -28707 0
+-306400 -26582 0
+-289330 -24867 0
+-273500 -23552 0
+-259140 -22606 0
+-246390 -21908 0
+-235320 -21199 0
+-225950 -20125 0
+-218220 -18393 0
+-212020 -15948 0
+-207220 -13023 0
+-203700 -9995.7 0
+-201440 -7103 0
+-200610 -4233.2 0
+-201500 -999.31 0
+-204470 2878.1 0
+-209710 7130 0
+-216990 10825 0
+-225680 12813 0
+-234870 12557 0
+-243780 10781 0
+-252170 9348.5 0
+-260380 10203 0
+-269170 13943 0
+-279100 19023 0
+-290150 22372 0
+-301570 21328 0
+-312400 15728 0
+-322070 8614.3 0
+-330880 4697.2 0
+-339800 7231.5 0
+-349660 15336 0
+-360330 23883 0
+-370520 26568 0
+-378500 20459 0
+-383460 8800.6 0
+-386430 -464.67 0
+-389940 -166.46 0
+-396360 10130 0
+-405810 22321 0
+-415330 24475 0
+-420240 9748.6 0
+-417230 -16693 0
+-407310 -38746 0
+-396220 -39402 0
+-391480 -13890 0
+-397400 23690 0
+-411450 46766 0
+-424720 33548 0
+-426950 -15809 0
+-413320 -75021 0
+-388550 -105890 0
+-364950 -83559 0
+-354920 -16162 0
+-362360 55899 0
+-378380 83184 0
+-384700 39262 0
+-363110 -59500 0
+-305510 -160630 0
+-218780 -205650 0
+-124140 -163070 0
+-41506 -35134 0
+43097 -5890.1 0
+49811 -13004 0
+55928 -15577 0
+61624 -13438 0
+65881 -9844.6 0
+68549 -6313.7 0
+69912 -3431.4 0
+70366 -1363.8 0
+70291 -72.36 0
+69986 578.2 0
+69663 758.03 0
+69445 634.62 0
+69392 350.54 0
+69513 12.093 0
+69795 -313.39 0
+70213 -593.46 0
+70748 -821.92 0
+71386 -1008.2 0
+72122 -1167.2 0
+72959 -1311.9 0
+73896 -1449.3 0
+74934 -1579.9 0
+76065 -1699.4 0
+77281 -1801.4 0
+78563 -1880 0
+79896 -1931.7 0
+81260 -1955.7 0
+82639 -1954.1 0
+84019 -1931 0
+85387 -1891.1 0
+86734 -1839.2 0
+88050 -1778.7 0
+89328 -1711 0
+90559 -1635.1 0
+91730 -1548.1 0
+92830 -1446 0
+93845 -1325.3 0
+94763 -1183.8 0
+95569 -1021.7 0
+96255 -841.69 0
+96810 -648.13 0
+97230 -446.02 0
+97512 -239.8 0
+97654 -32.697 0
+97656 173.3 0
+97519 376.85 0
+97244 576.38 0
+96834 769.4 0
+96293 952.28 0
+95627 1120.6 0
+94846 1270.2 0
+93959 1397.8 0
+92981 1501.9 0
+91926 1582.7 0
+90809 1641.7 0
+89646 1680.6 0
+88452 1700.8 0
+87244 1702 0
+86038 1682.3 0
+84852 1638.6 0
+83706 1566.8 0
+82623 1462.6 0
+81626 1322.7 0
+80741 1144.4 0
+79993 926.58 0
+79412 669.01 0
+79023 372.58 0
+78856 38.927 0
+78937 -329.64 0
+79292 -730.16 0
+79946 -1159 0
+80920 -1611.5 0
+82231 -2082 0
+83895 -2563.5 0
+85918 -3047.4 0
+88302 -3523.2 0
+91038 -3979.2 0
+94109 -4401.6 0
+97488 -4775.9 0
+101130 -5086.3 0
+105000 -5317.3 0
+109020 -5453.7 0
+113110 -5481.8 0
+117210 -5390.1 0
+121210 -5170 0
+125010 -4816.9 0
+128520 -4330.6 0
+131640 -3716 0
+134270 -2982.9 0
+136320 -2146.7 0
+137730 -1227.7 0
+138440 -250.12 0
+138410 758.27 0
+137630 1768 0
+136100 2749.1 0
+133850 3672.8 0
+130940 4513.4 0
+127420 5249 0
+123390 5863.1 0
+118940 6345.4 0
+114160 6691.5 0
+109160 6903.3 0
+104030 6988.4 0
+98869 6958.7 0
+93748 6829.8 0
+88739 6619.5 0
+83895 6346.4 0
+79256 6029 0
+74850 5684.8 0
+70691 5328.9 0
+66784 4974.3 0
+63126 4631.2 0
+59705 4307.1 0
+56508 4007 0
+53515 3733.7 0
+50708 3488 0
+48068 3269.5 0
+45576 3076.5 0
+43215 2907 0
+40969 2758.3 0
+38825 2627.7 0
+36771 2512.8 0
+34796 2411.1 0
+32892 2320.6 0
+31053 2239.4 0
+29271 2166.2 0
+27541 2099.7 0
+25859 2039.1 0
+24221 1983.6 0
+22623 1932.8 0
+21062 1886.2 0
+19535 1843.5 0
+18039 1804.7 0
+16570 1769.5 0
+15127 1737.8 0
+13706 1709.5 0
+12305 1684.6 0
+10922 1663 0
+9552.6 1644.6 0
+8196 1629.5 0
+6849.2 1617.5 0
+5509.8 1608.7 0
+4175.3 1602.9 0
+2843.5 1600.3 0
+1512 1600.7 0
+178.38 1604.2 0
+-1159.7 1610.8 0
+-2504.5 1620.4 0
+-3858.4 1633.2 0
+-5223.8 1649.2 0
+-6603.2 1668.4 0
+-7999 1690.8 0
+-9413.8 1716.7 0
+-10850 1746.1 0
+-12311 1779.2 0
+-13798 1816 0
+-15316 1856.7 0
+-16866 1901.6 0
+-18453 1950.8 0
+-20078 2004.5 0
+-21747 2062.9 0
+-23461 2126.3 0
+-25225 2194.8 0
+-27043 2268.8 0
+-28919 2348.5 0
+-30856 2434.1 0
+-32859 2525.8 0
+-34932 2624.1 0
+-37080 2729 0
+-39307 2841.1 0
+-41618 2960.7 0
+-44018 3088.2 0
+-46512 3224.4 0
+-49106 3370.3 0
+-51806 3527.1 0
+-54620 3696.7 0
+-57555 3882 0
+-60623 4086.6 0
+-63838 4316 0
+-67218 4577.4 0
+-70787 4880.6 0
+-74576 5238.5 0
+-78627 5667.9 0
+-82994 6190.1 0
+-87748 6831.6 0
+-92979 7624.6 0
+-98800 8607.7 0
+-105350 9825.8 0
+-112800 11330 0
+-121360 13176 0
+-131260 15425 0
+-142780 18137 0
+-156230 21373 0
+-171950 25187 0
+-190280 29623 0
+-211610 34708 0
+-236310 40450 0
+-264700 46827 0
+-297110 53787 0
+-333770 61241 0
+-374840 69058 0
+-420360 77073 0
+-470240 85078 0
+-524260 92838 0
+-582020 100090 0
+-642990 106570 0
+-706470 111990 0
+-771620 116110 0
+-837480 118680 0
+-903010 119540 0
+-967110 118540 0
+-1.0287e+06 115640 0
+-1.0866e+06 110820 0
+-1.1399e+06 104160 0
+-1.1877e+06 95792 0
+-1.2291e+06 85909 0
+-1.2635e+06 74734 0
+-1.2905e+06 62515 0
+-1.3098e+06 49509 0
+-1.3212e+06 35966 0
+-1.3247e+06 22126 0
+-1.3206e+06 8217.6 0
+-1.3092e+06 -5534.6 0
+-1.2909e+06 -18899 0
+-1.2664e+06 -31628 0
+-1.2363e+06 -43463 0
+-1.2013e+06 -54139 0
+-1.1624e+06 -63417 0
+-1.1203e+06 -71113 0
+-1.0759e+06 -77124 0
+-1.0299e+06 -81451 0
+-983230 -84185 0
+-936440 -85484 0
+-890140 -85524 0
+-844800 -84465 0
+-800770 -82428 0
+-758330 -79510 0
+-717640 -75828 0
+-678770 -71556 0
+-641730 -66940 0
+-606500 -62266 0
+-573030 -57792 0
+-541280 -53678 0
+-511260 -49959 0
+-483040 -46584 0
+-456770 -43480 0
+-432660 -40605 0
+-410910 -37931 0
+-391720 -35375 0
+-375200 -32738 0
+-361360 -29743 0
+-350120 -26174 0
+-341280 -22031 0
+-334640 -17566 0
+-330010 -13107 0
+-327370 -8769.5 0
+-326890 -4277 0
+-328930 880.41 0
+-333860 6959.3 0
+-341810 13460 0
+-352450 19057 0
+-364930 22218 0
+-378100 22258 0
+-391010 20124 0
+-403280 18208 0
+-415300 19014 0
+-427910 23388 0
+-441780 29532 0
+-456890 33762 0
+-472440 32848 0
+-487340 26538 0
+-500940 18394 0
+-513640 13932 0
+-526570 16889 0
+-540800 26071 0
+-556210 35324 0
+-571270 37293 0
+-583790 28842 0
+-592500 14260 0
+-598270 3255.4 0
+-603880 4225.5 0
+-612200 17134 0
+-623740 31613 0
+-635520 33000 0
+-642320 13299 0
+-640090 -20552 0
+-629420 -48329 0
+-616290 -49066 0
+-609070 -17156 0
+-613110 29738 0
+-626420 58759 0
+-639750 43072 0
+-641820 -17218 0
+-626790 -90066 0
+-599030 -128860 0
+-571540 -103090 0
+-558150 -22317 0
+-564120 64556 0
+-581100 97117 0
+-590170 42133 0
+-571650 -82115 0
+-516280 -212950 0
+-431270 -278380 0
+-335790 -238070 0
+-233260 -118950 0
+124460 -10723 0
+130090 -17476 0
+135220 -19914 0
+140100 -17395 0
+143900 -12730 0
+146220 -7973.6 0
+147180 -4077.9 0
+147180 -1337.5 0
+146680 294.44 0
+146020 1023 0
+145490 1106.3 0
+145210 793.74 0
+145240 290.67 0
+145580 -256.96 0
+146180 -764.26 0
+147010 -1198.1 0
+148030 -1561.2 0
+149240 -1874.9 0
+150640 -2163.5 0
+152230 -2443.9 0
+154030 -2721.3 0
+156030 -2990.4 0
+158220 -3238.9 0
+160590 -3453.1 0
+163100 -3622.1 0
+165720 -3740 0
+168410 -3806.5 0
+171140 -3826.1 0
+173890 -3806 0
+176620 -3754.2 0
+179330 -3677.7 0
+181990 -3580.9 0
+184580 -3464.6 0
+187100 -3326.4 0
+189500 -3161.5 0
+191780 -2964 0
+193900 -2729.3 0
+195830 -2455.8 0
+197560 -2145.4 0
+199050 -1803.6 0
+200310 -1438.2 0
+201300 -1057.7 0
+202030 -669.3 0
+202490 -278.23 0
+202690 112.31 0
+202620 500.21 0
+202280 883.03 0
+201680 1256.9 0
+200810 1616 0
+199700 1953 0
+198350 2260.5 0
+196780 2532 0
+195020 2763.1 0
+193090 2952.3 0
+191020 3099.6 0
+188840 3206.3 0
+186580 3272.9 0
+184270 3298.3 0
+181950 3279.5 0
+179650 3211.1 0
+177410 3086.9 0
+175280 2900.1 0
+173300 2644.6 0
+171530 2315.7 0
+170010 1910.3 0
+168810 1427.1 0
+167970 866.18 0
+167570 229.15 0
+167640 -481.17 0
+168260 -1260.5 0
+169470 -2103 0
+171320 -3000.7 0
+173860 -3943 0
+177110 -4916.4 0
+181100 -5904.3 0
+185840 -6886.1 0
+191310 -7838.2 0
+197500 -8733.4 0
+204340 -9541.9 0
+211780 -10232 0
+219710 -10772 0
+228010 -11129 0
+236530 -11274 0
+245110 -11182 0
+253560 -10832 0
+261690 -10212 0
+269270 -9317.7 0
+276120 -8154.8 0
+282020 -6740.4 0
+286790 -5102.3 0
+290280 -3278.7 0
+292340 -1317.2 0
+292900 727.21 0
+291910 2794.9 0
+289360 4824.5 0
+285300 6756.1 0
+279820 8534.7 0
+273050 10113 0
+265140 11454 0
+256300 12534 0
+246710 13338 0
+236580 13869 0
+226120 14138 0
+215510 14168 0
+204930 13987 0
+194510 13631 0
+184380 13138 0
+174630 12544 0
+165320 11887 0
+156500 11197 0
+148170 10501 0
+140330 9822.6 0
+132970 9176.8 0
+126060 8575.3 0
+119570 8024.4 0
+113450 7526.9 0
+107680 7082.4 0
+102220 6688.3 0
+97025 6340.6 0
+92072 6034.5 0
+87331 5764.7 0
+82778 5526.3 0
+78393 5314.6 0
+74158 5125.6 0
+70058 4955.8 0
+66080 4802.1 0
+62213 4662.4 0
+58447 4534.8 0
+54775 4417.9 0
+51188 4310.8 0
+47679 4212.6 0
+44242 4122.7 0
+40870 4040.9 0
+37557 3966.7 0
+34298 3900 0
+31086 3840.6 0
+27916 3788.4 0
+24782 3743.1 0
+21680 3704.6 0
+18603 3673 0
+15547 3647.9 0
+12506 3629.5 0
+9475.7 3617.5 0
+6450.8 3612 0
+3426.5 3612.9 0
+397.79 3620.2 0
+-2640.2 3633.9 0
+-5692.3 3653.9 0
+-8763.5 3680.4 0
+-11859 3713.5 0
+-14983 3753.2 0
+-18142 3799.7 0
+-21339 3853.2 0
+-24582 3913.8 0
+-27875 3981.9 0
+-31223 4057.5 0
+-34634 4141.2 0
+-38112 4233.1 0
+-41664 4333.7 0
+-45297 4443.3 0
+-49018 4562.3 0
+-52833 4691.1 0
+-56750 4830.1 0
+-60776 4979.8 0
+-64919 5140.5 0
+-69188 5312.6 0
+-73589 5496.6 0
+-78133 5692.8 0
+-82827 5901.7 0
+-87679 6123.7 0
+-92699 6359.2 0
+-97895 6609.1 0
+-103280 6874.3 0
+-108860 7156.1 0
+-114640 7456.9 0
+-120650 7779.7 0
+-126880 8129.3 0
+-133380 8512.3 0
+-140150 8938.2 0
+-147230 9420.3 0
+-154660 9976.2 0
+-162500 10629 0
+-170830 11411 0
+-179740 12358 0
+-189360 13521 0
+-199870 14957 0
+-211460 16735 0
+-224400 18937 0
+-239000 21652 0
+-255620 24979 0
+-274710 29021 0
+-296760 33883 0
+-322320 39662 0
+-351980 46445 0
+-386370 54294 0
+-426140 63242 0
+-471890 73278 0
+-524200 84341 0
+-583530 96311 0
+-650240 109000 0
+-724500 122170 0
+-806280 135480 0
+-895300 148570 0
+-991030 161000 0
+-1.0927e+06 172340 0
+-1.1991e+06 182100 0
+-1.309e+06 189840 0
+-1.4207e+06 195150 0
+-1.5326e+06 197680 0
+-1.6428e+06 197160 0
+-1.7493e+06 193430 0
+-1.8503e+06 186450 0
+-1.9439e+06 176290 0
+-2.0284e+06 163140 0
+-2.1024e+06 147270 0
+-2.1647e+06 129060 0
+-2.2143e+06 108940 0
+-2.2508e+06 87375 0
+-2.2737e+06 64828 0
+-2.283e+06 41758 0
+-2.2791e+06 18597 0
+-2.2625e+06 -4249.7 0
+-2.2339e+06 -26399 0
+-2.1942e+06 -47480 0
+-2.1447e+06 -67129 0
+-2.0864e+06 -84995 0
+-2.0208e+06 -100750 0
+-1.9493e+06 -114120 0
+-1.8732e+06 -124920 0
+-1.7939e+06 -133080 0
+-1.7126e+06 -138640 0
+-1.6307e+06 -141780 0
+-1.5491e+06 -142740 0
+-1.4687e+06 -141820 0
+-1.3903e+06 -139300 0
+-1.3145e+06 -135390 0
+-1.2417e+06 -130320 0
+-1.1723e+06 -124300 0
+-1.1063e+06 -117570 0
+-1.0441e+06 -110450 0
+-985450 -103270 0
+-930460 -96332 0
+-879050 -89793 0
+-831150 -83672 0
+-786760 -77867 0
+-745950 -72242 0
+-708880 -66694 0
+-675770 -61171 0
+-646830 -55613 0
+-622160 -49901 0
+-601750 -43873 0
+-585400 -37430 0
+-572770 -30658 0
+-563520 -23816 0
+-557370 -17147 0
+-554260 -10596 0
+-554380 -3690.9 0
+-558110 4198.1 0
+-565790 13265 0
+-577460 22718 0
+-592610 30776 0
+-610150 35489 0
+-628740 36020 0
+-647200 33584 0
+-665080 31173 0
+-682730 31929 0
+-701020 36988 0
+-720690 44296 0
+-741710 49494 0
+-763200 48711 0
+-783900 41577 0
+-803090 32230 0
+-821140 27115 0
+-839420 30566 0
+-859220 41084 0
+-880560 51330 0
+-901710 52628 0
+-919950 41426 0
+-933370 23057 0
+-942450 9268.9 0
+-950100 10104 0
+-959820 25358 0
+-972910 42359 0
+-986750 43301 0
+-995760 18488 0
+-994950 -23689 0
+-983850 -58723 0
+-968060 -61087 0
+-956500 -23635 0
+-955810 32747 0
+-965320 68659 0
+-976300 51481 0
+-976900 -19500 0
+-959920 -106790 0
+-928490 -154990 0
+-895260 -127050 0
+-875110 -33047 0
+-875270 70012 0
+-889440 110400 0
+-899820 47160 0
+-886330 -100550 0
+-837690 -260630 0
+-756940 -348930 0
+-655320 -320800 0
+-541430 -209470 0
+297690 -14441 0
+301610 -20856 0
+305030 -23005 0
+308080 -20153 0
+310250 -14619 0
+311120 -8751.6 0
+310770 -3900.4 0
+309600 -562.85 0
+308120 1280.3 0
+306750 1906.5 0
+305800 1685 0
+305410 973.98 0
+305620 62.921 0
+306380 -852.93 0
+307600 -1672.7 0
+309220 -2372 0
+311180 -2975.7 0
+313500 -3528.3 0
+316170 -4070 0
+319240 -4622.4 0
+322720 -5184.5 0
+326620 -5736.9 0
+330920 -6251 0
+335570 -6698.4 0
+340530 -7058.2 0
+345720 -7320.2 0
+351070 -7485.2 0
+356520 -7562.5 0
+362030 -7565.2 0
+367540 -7507.2 0
+373020 -7399.4 0
+378430 -7247.3 0
+383740 -7050.9 0
+388910 -6804.4 0
+393890 -6499.3 0
+398630 -6126.4 0
+403070 -5679.6 0
+407180 -5158.1 0
+410880 -4567.6 0
+414150 -3919.2 0
+416960 -3227.2 0
+419280 -2506.5 0
+421090 -1769.5 0
+422390 -1025 0
+423180 -278.08 0
+423440 468.04 0
+423180 1209.7 0
+422390 1940.7 0
+421090 2651.3 0
+419290 3329 0
+417000 3959.7 0
+414260 4530.5 0
+411120 5031.3 0
+407610 5455.6 0
+403790 5800.5 0
+399710 6064.9 0
+395450 6247.4 0
+391060 6345 0
+386600 6351.5 0
+382160 6258 0
+377810 6053.3 0
+373630 5725.3 0
+369730 5262.9 0
+366190 4656.5 0
+363140 3898.9 0
+360690 2985.4 0
+358950 1914 0
+358040 685 0
+358080 -698.64 0
+359200 -2231.1 0
+361510 -3902.8 0
+365110 -5699.9 0
+370100 -7602.9 0
+376570 -9586.1 0
+384560 -11617 0
+394100 -13655 0
+405210 -15653 0
+417820 -17556 0
+431860 -19304 0
+447190 -20833 0
+463630 -22075 0
+480940 -22963 0
+498840 -23434 0
+516980 -23431 0
+535000 -22909 0
+552480 -21833 0
+568990 -20190 0
+584090 -17984 0
+597370 -15242 0
+608420 -12013 0
+616880 -8371.2 0
+622460 -4407.9 0
+624950 -232.85 0
+624210 4033 0
+620210 8263.1 0
+613010 12332 0
+602770 16123 0
+589740 19532 0
+574210 22478 0
+556580 24900 0
+537240 26766 0
+516620 28070 0
+495140 28829 0
+473190 29083 0
+451150 28890 0
+429340 28317 0
+408000 27441 0
+387360 26338 0
+367550 25083 0
+348670 23742 0
+330770 22373 0
+313860 21023 0
+297900 19728 0
+282870 18514 0
+268680 17395 0
+255280 16380 0
+242580 15468 0
+230520 14656 0
+219020 13936 0
+208030 13300 0
+197490 12738 0
+187340 12239 0
+177550 11795 0
+168070 11397 0
+158880 11039 0
+149950 10714 0
+141260 10418 0
+132790 10148 0
+124510 9900.5 0
+116420 9673.5 0
+108490 9465.4 0
+100710 9275.2 0
+93075 9102.1 0
+85564 8945.5 0
+78165 8804.7 0
+70867 8679.5 0
+63657 8569.4 0
+56524 8474.2 0
+49456 8393.5 0
+42443 8327.1 0
+35472 8274.8 0
+28534 8236.3 0
+21618 8211.5 0
+14712 8200.1 0
+7807.9 8202.1 0
+894.06 8217.5 0
+-6039.4 8246.1 0
+-13003 8288 0
+-20006 8343.3 0
+-27060 8412.2 0
+-34174 8494.8 0
+-41360 8591.3 0
+-48628 8702.2 0
+-55988 8827.7 0
+-63453 8968.3 0
+-71034 9124.6 0
+-78743 9296.9 0
+-86592 9486.1 0
+-94594 9692.7 0
+-102760 9917.3 0
+-111110 10161 0
+-119650 10424 0
+-128400 10707 0
+-137380 11011 0
+-146590 11337 0
+-156060 11685 0
+-165800 12056 0
+-175820 12451 0
+-186150 12869 0
+-196800 13311 0
+-207780 13779 0
+-219120 14272 0
+-230820 14792 0
+-242910 15341 0
+-255400 15923 0
+-268320 16543 0
+-281690 17208 0
+-295550 17932 0
+-309930 18730 0
+-324900 19627 0
+-340530 20656 0
+-356920 21860 0
+-374220 23295 0
+-392600 25032 0
+-412310 27162 0
+-433660 29789 0
+-457020 33042 0
+-482870 37064 0
+-511800 42018 0
+-544480 48078 0
+-581710 55424 0
+-624380 64233 0
+-673480 74665 0
+-730090 86855 0
+-795290 100890 0
+-870180 116790 0
+-955800 134490 0
+-1.0531e+06 153860 0
+-1.1627e+06 174610 0
+-1.2852e+06 196390 0
+-1.4206e+06 218690 0
+-1.5687e+06 240910 0
+-1.7288e+06 262350 0
+-1.8996e+06 282250 0
+-2.0796e+06 299820 0
+-2.2664e+06 314260 0
+-2.4576e+06 324830 0
+-2.6501e+06 330870 0
+-2.8408e+06 331870 0
+-3.0264e+06 327450 0
+-3.2034e+06 317470 0
+-3.3686e+06 301950 0
+-3.519e+06 281130 0
+-3.6518e+06 255450 0
+-3.7647e+06 225510 0
+-3.8561e+06 192020 0
+-3.9246e+06 155790 0
+-3.9696e+06 117670 0
+-3.9909e+06 78510 0
+-3.989e+06 39122 0
+-3.9646e+06 257.34 0
+-3.9191e+06 -37393 0
+-3.8539e+06 -73201 0
+-3.7711e+06 -106600 0
+-3.6727e+06 -137060 0
+-3.5611e+06 -164140 0
+-3.4385e+06 -187450 0
+-3.3073e+06 -206700 0
+-3.1698e+06 -221760 0
+-3.0284e+06 -232620 0
+-2.8849e+06 -239440 0
+-2.7413e+06 -242520 0
+-2.5992e+06 -242280 0
+-2.4601e+06 -239170 0
+-2.3251e+06 -233640 0
+-2.1952e+06 -226100 0
+-2.0711e+06 -216940 0
+-1.9534e+06 -206480 0
+-1.8422e+06 -195100 0
+-1.7379e+06 -183210 0
+-1.6406e+06 -171230 0
+-1.5502e+06 -159520 0
+-1.4665e+06 -148310 0
+-1.3895e+06 -137620 0
+-1.3189e+06 -127340 0
+-1.2548e+06 -117220 0
+-1.1971e+06 -107070 0
+-1.1461e+06 -96789 0
+-1.1019e+06 -86321 0
+-1.0646e+06 -75666 0
+-1.0342e+06 -64839 0
+-1.01e+06 -53921 0
+-991630 -43102 0
+-978410 -32622 0
+-969930 -22571 0
+-966080 -12661 0
+-967030 -2198.1 0
+-973120 9540.6 0
+-984580 22626 0
+-1.0012e+06 35912 0
+-1.0224e+06 47133 0
+-1.0467e+06 53919 0
+-1.0726e+06 55313 0
+-1.0988e+06 52825 0
+-1.1247e+06 50084 0
+-1.1506e+06 50899 0
+-1.1773e+06 56733 0
+-1.2054e+06 65286 0
+-1.235e+06 71501 0
+-1.265e+06 70808 0
+-1.294e+06 62670 0
+-1.3211e+06 51816 0
+-1.3466e+06 45735 0
+-1.372e+06 49518 0
+-1.3988e+06 61442 0
+-1.4273e+06 72881 0
+-1.4557e+06 73542 0
+-1.4808e+06 59108 0
+-1.4998e+06 35819 0
+-1.5124e+06 17703 0
+-1.5216e+06 17006 0
+-1.5315e+06 33938 0
+-1.5449e+06 53718 0
+-1.5599e+06 54998 0
+-1.5711e+06 25541 0
+-1.5723e+06 -25606 0
+-1.561e+06 -69858 0
+-1.5415e+06 -76517 0
+-1.5227e+06 -35762 0
+-1.5128e+06 29316 0
+-1.5136e+06 73009 0
+-1.5182e+06 56166 0
+-1.5149e+06 -24100 0
+-1.4946e+06 -126010 0
+-1.4578e+06 -185550 0
+-1.4155e+06 -158250 0
+-1.3826e+06 -52977 0
+-1.3693e+06 66681 0
+-1.3732e+06 118190 0
+-1.3801e+06 51951 0
+-1.3709e+06 -114090 0
+-1.3313e+06 -301170 0
+-1.2578e+06 -415620 0
+-1.1553e+06 -407640 0
+-1.0352e+06 -305940 0
+665940 -15993 0
+666570 -21996 0
+666520 -23676 0
+665840 -20364 0
+664320 -14072 0
+661760 -7299.3 0
+658330 -1734.8 0
+654520 1903.9 0
+650920 3593.7 0
+648050 3699.3 0
+646230 2736 0
+645610 1211 0
+646130 -473.61 0
+647660 -2062.5 0
+650050 -3446.7 0
+653160 -4631.5 0
+656930 -5688.9 0
+661380 -6707.7 0
+666560 -7755.8 0
+672530 -8859.7 0
+679340 -10002 0
+687010 -11135 0
+695500 -12196 0
+704740 -13128 0
+714600 -13890 0
+724960 -14465 0
+735680 -14856 0
+746660 -15079 0
+757790 -15159 0
+768980 -15122 0
+780150 -14985 0
+791230 -14755 0
+802160 -14430 0
+812840 -13999 0
+823200 -13444 0
+833120 -12751 0
+842500 -11911 0
+851240 -10925 0
+859230 -9806.1 0
+866400 -8575.3 0
+872680 -7260 0
+878020 -5887.2 0
+882390 -4479 0
+885770 -3050.5 0
+888150 -1610.2 0
+889500 -162.82 0
+889820 1286 0
+889110 2726.3 0
+887360 4141.3 0
+884600 5508.3 0
+880850 6800.6 0
+876160 7992 0
+870620 9060.1 0
+864310 9988.4 0
+857330 10766 0
+849780 11387 0
+841790 11844 0
+833480 12130 0
+824980 12233 0
+816440 12134 0
+808010 11813 0
+799870 11248 0
+792210 10415 0
+785240 9294.6 0
+779180 7870.2 0
+774260 6129 0
+770730 4062.9 0
+768830 1668 0
+768840 -1054.4 0
+770990 -4096.8 0
+775550 -7444.4 0
+782740 -11073 0
+792790 -14946 0
+805870 -19015 0
+822120 -23216 0
+841640 -27469 0
+864450 -31681 0
+890480 -35740 0
+919600 -39525 0
+951540 -42902 0
+985980 -45731 0
+1.0224e+06 -47872 0
+1.0603e+06 -49188 0
+1.099e+06 -49555 0
+1.1377e+06 -48866 0
+1.1756e+06 -47041 0
+1.2118e+06 -44036 0
+1.2453e+06 -39845 0
+1.2752e+06 -34508 0
+1.3007e+06 -28114 0
+1.321e+06 -20798 0
+1.3355e+06 -12740 0
+1.3435e+06 -4159.1 0
+1.3448e+06 4700 0
+1.3393e+06 13575 0
+1.3269e+06 22203 0
+1.308e+06 30333 0
+1.283e+06 37741 0
+1.2525e+06 44239 0
+1.2172e+06 49691 0
+1.1781e+06 54010 0
+1.1359e+06 57167 0
+1.0915e+06 59185 0
+1.0459e+06 60133 0
+999700 60120 0
+953710 59282 0
+908480 57770 0
+864470 55744 0
+822020 53357 0
+781380 50750 0
+742650 48049 0
+705900 45354 0
+671090 42745 0
+638150 40280 0
+606960 37993 0
+577380 35906 0
+549280 34022 0
+522510 32337 0
+496920 30837 0
+472390 29505 0
+448810 28324 0
+426070 27273 0
+404090 26334 0
+382780 25491 0
+362090 24730 0
+341950 24040 0
+322320 23411 0
+303150 22836 0
+284410 22309 0
+266050 21826 0
+248050 21384 0
+230370 20980 0
+212990 20613 0
+195880 20282 0
+179000 19984 0
+162340 19720 0
+145860 19488 0
+129550 19287 0
+113370 19118 0
+97304 18979 0
+81330 18870 0
+65422 18790 0
+49560 18738 0
+33720 18715 0
+17881 18720 0
+2020.8 18753 0
+-13881 18813 0
+-29846 18901 0
+-45895 19017 0
+-62050 19161 0
+-78332 19334 0
+-94764 19535 0
+-111370 19765 0
+-128160 20026 0
+-145180 20317 0
+-162430 20641 0
+-179950 20997 0
+-197760 21387 0
+-215880 21813 0
+-234350 22275 0
+-253190 22774 0
+-272430 23313 0
+-292100 23892 0
+-312220 24513 0
+-332830 25176 0
+-353960 25883 0
+-375650 26633 0
+-397910 27429 0
+-420780 28269 0
+-444300 29155 0
+-468490 30087 0
+-493390 31064 0
+-519010 32090 0
+-545390 33166 0
+-572570 34297 0
+-600580 35493 0
+-629450 36767 0
+-659260 38141 0
+-690070 39646 0
+-721980 41326 0
+-755130 43241 0
+-789710 45473 0
+-825980 48127 0
+-864270 51336 0
+-905040 55265 0
+-948850 60112 0
+-996420 66111 0
+-1.0486e+06 73524 0
+-1.1066e+06 82646 0
+-1.1715e+06 93785 0
+-1.2449e+06 107260 0
+-1.3284e+06 123360 0
+-1.4237e+06 142360 0
+-1.5328e+06 164460 0
+-1.6576e+06 189760 0
+-1.8e+06 218230 0
+-1.9618e+06 249710 0
+-2.1443e+06 283840 0
+-2.3486e+06 320050 0
+-2.5753e+06 357590 0
+-2.8242e+06 395490 0
+-3.0944e+06 432600 0
+-3.3842e+06 467650 0
+-3.6909e+06 499260 0
+-4.0112e+06 526030 0
+-4.3408e+06 546610 0
+-4.6746e+06 559790 0
+-5.0072e+06 564540 0
+-5.3327e+06 560110 0
+-5.6451e+06 546080 0
+-5.9385e+06 522360 0
+-6.2074e+06 489240 0
+-6.4466e+06 447350 0
+-6.652e+06 397640 0
+-6.82e+06 341310 0
+-6.9481e+06 279760 0
+-7.0349e+06 214510 0
+-7.0798e+06 147090 0
+-7.0834e+06 79009 0
+-7.047e+06 11687 0
+-6.9727e+06 -53594 0
+-6.8633e+06 -115690 0
+-6.722e+06 -173610 0
+-6.5526e+06 -226510 0
+-6.3591e+06 -273680 0
+-6.1457e+06 -314560 0
+-5.9164e+06 -348760 0
+-5.6753e+06 -376070 0
+-5.4263e+06 -396480 0
+-5.173e+06 -410160 0
+-4.9187e+06 -417500 0
+-4.6664e+06 -419050 0
+-4.4186e+06 -415460 0
+-4.1776e+06 -407470 0
+-3.9452e+06 -395830 0
+-3.7228e+06 -381210 0
+-3.5115e+06 -364240 0
+-3.312e+06 -345470 0
+-3.1249e+06 -325460 0
+-2.9504e+06 -304740 0
+-2.7887e+06 -283880 0
+-2.6396e+06 -263390 0
+-2.5029e+06 -243620 0
+-2.3781e+06 -224670 0
+-2.2649e+06 -206380 0
+-2.1628e+06 -188410 0
+-2.0719e+06 -170400 0
+-1.9921e+06 -152150 0
+-1.9237e+06 -133630 0
+-1.8665e+06 -115000 0
+-1.82e+06 -96565 0
+-1.7835e+06 -78665 0
+-1.7559e+06 -61605 0
+-1.7362e+06 -45541 0
+-1.7238e+06 -30305 0
+-1.7185e+06 -15291 0
+-1.7203e+06 422.39 0
+-1.7295e+06 17585 0
+-1.7459e+06 36056 0
+-1.7691e+06 54287 0
+-1.7981e+06 69555 0
+-1.8312e+06 79149 0
+-1.8668e+06 82056 0
+-1.9037e+06 80091 0
+-1.9409e+06 77471 0
+-1.9787e+06 78629 0
+-2.0174e+06 85362 0
+-2.0576e+06 95181 0
+-2.0992e+06 102380 0
+-2.1411e+06 101680 0
+-2.1818e+06 92274 0
+-2.2199e+06 79428 0
+-2.2555e+06 71731 0
+-2.2901e+06 75236 0
+-2.3253e+06 88221 0
+-2.362e+06 100800 0
+-2.3985e+06 100760 0
+-2.4311e+06 82515 0
+-2.456e+06 52857 0
+-2.4718e+06 28220 0
+-2.481e+06 23777 0
+-2.4888e+06 41104 0
+-2.4997e+06 63888 0
+-2.5139e+06 66905 0
+-2.5264e+06 34154 0
+-2.5294e+06 -26126 0
+-2.5176e+06 -82054 0
+-2.4923e+06 -97214 0
+-2.4615e+06 -57379 0
+-2.4355e+06 14120 0
+-2.4198e+06 66266 0
+-2.4113e+06 52668 0
+-2.3992e+06 -33864 0
+-2.3725e+06 -149610 0
+-2.3271e+06 -223130 0
+-2.2697e+06 -201470 0
+-2.2147e+06 -89608 0
+-2.1755e+06 45399 0
+-2.1568e+06 111930 0
+-2.151e+06 50928 0
+-2.142e+06 -124220 0
+-2.1128e+06 -332520 0
+-2.0522e+06 -473880 0
+-1.9575e+06 -491530 0
+-1.8376e+06 -405010 0
+2.4463e+06 -12075 0
+2.4368e+06 -17068 0
+2.4254e+06 -17609 0
+2.4121e+06 -13278 0
+2.3973e+06 -6001 0
+2.3811e+06 1560.4 0
+2.3645e+06 7373.5 0
+2.3487e+06 10470 0
+2.3352e+06 10807 0
+2.3249e+06 8939.6 0
+2.3187e+06 5682.8 0
+2.3165e+06 1846.5 0
+2.3182e+06 -1944.1 0
+2.3232e+06 -5332 0
+2.3309e+06 -8224.9 0
+2.341e+06 -10729 0
+2.3534e+06 -13050 0
+2.3681e+06 -15394 0
+2.3853e+06 -17898 0
+2.4053e+06 -20594 0
+2.4282e+06 -23413 0
+2.4541e+06 -26225 0
+2.4828e+06 -28876 0
+2.5142e+06 -31228 0
+2.5478e+06 -33190 0
+2.5832e+06 -34720 0
+2.62e+06 -35826 0
+2.6577e+06 -36547 0
+2.6961e+06 -36937 0
+2.7349e+06 -37049 0
+2.7738e+06 -36917 0
+2.8125e+06 -36556 0
+2.8508e+06 -35955 0
+2.8884e+06 -35087 0
+2.925e+06 -33915 0
+2.9603e+06 -32406 0
+2.9939e+06 -30544 0
+3.0255e+06 -28334 0
+3.0546e+06 -25807 0
+3.0811e+06 -23014 0
+3.1047e+06 -20016 0
+3.1252e+06 -16873 0
+3.1425e+06 -13632 0
+3.1565e+06 -10327 0
+3.1672e+06 -6972.6 0
+3.1744e+06 -3578.6 0
+3.1782e+06 -154.05 0
+3.1784e+06 3281.5 0
+3.1752e+06 6693.1 0
+3.1684e+06 10030 0
+3.1582e+06 13231 0
+3.1448e+06 16231 0
+3.1283e+06 18974 0
+3.1091e+06 21411 0
+3.0874e+06 23507 0
+3.0637e+06 25239 0
+3.0383e+06 26584 0
+3.0116e+06 27517 0
+2.984e+06 28007 0
+2.9562e+06 28012 0
+2.9285e+06 27480 0
+2.9017e+06 26357 0
+2.8763e+06 24585 0
+2.8531e+06 22112 0
+2.8328e+06 18891 0
+2.8164e+06 14882 0
+2.8046e+06 10056 0
+2.7983e+06 4392.4 0
+2.7985e+06 -2116.4 0
+2.806e+06 -9463.6 0
+2.8219e+06 -17623 0
+2.8469e+06 -26546 0
+2.8819e+06 -36152 0
+2.9276e+06 -46331 0
+2.9845e+06 -56932 0
+3.0531e+06 -67768 0
+3.1334e+06 -78609 0
+3.2254e+06 -89188 0
+3.3287e+06 -99202 0
+3.4424e+06 -108320 0
+3.5655e+06 -116180 0
+3.6964e+06 -122430 0
+3.8332e+06 -126710 0
+3.9736e+06 -128680 0
+4.1149e+06 -128050 0
+4.2541e+06 -124580 0
+4.3882e+06 -118130 0
+4.5138e+06 -108620 0
+4.6276e+06 -96130 0
+4.7264e+06 -80821 0
+4.8073e+06 -62998 0
+4.8678e+06 -43080 0
+4.9058e+06 -21591 0
+4.92e+06 866.57 0
+4.9095e+06 23634 0
+4.8744e+06 46037 0
+4.8154e+06 67419 0
+4.734e+06 87180 0
+4.632e+06 104810 0
+4.5121e+06 119900 0
+4.3771e+06 132200 0
+4.2302e+06 141570 0
+4.0744e+06 148040 0
+3.9128e+06 151730 0
+3.7484e+06 152890 0
+3.5836e+06 151840 0
+3.4206e+06 148950 0
+3.2613e+06 144620 0
+3.1068e+06 139250 0
+2.9583e+06 133190 0
+2.8162e+06 126780 0
+2.6808e+06 120280 0
+2.5521e+06 113910 0
+2.4299e+06 107830 0
+2.3138e+06 102140 0
+2.2034e+06 96917 0
+2.0981e+06 92170 0
+1.9976e+06 87898 0
+1.9014e+06 84078 0
+1.8089e+06 80672 0
+1.7198e+06 77636 0
+1.6338e+06 74926 0
+1.5505e+06 72498 0
+1.4696e+06 70314 0
+1.3909e+06 68340 0
+1.3143e+06 66546 0
+1.2395e+06 64911 0
+1.1664e+06 63415 0
+1.0948e+06 62046 0
+1.0246e+06 60792 0
+955650 59646 0
+887910 58601 0
+821220 57653 0
+755490 56798 0
+690620 56032 0
+626510 55354 0
+563060 54760 0
+500180 54249 0
+437790 53818 0
+375800 53466 0
+314130 53190 0
+252690 52989 0
+191410 52862 0
+130200 52806 0
+68989 52822 0
+7702.1 52909 0
+-53737 53065 0
+-115400 53292 0
+-177370 53588 0
+-239720 53955 0
+-302520 54393 0
+-365840 54903 0
+-429780 55486 0
+-494400 56144 0
+-559780 56878 0
+-626010 57691 0
+-693170 58585 0
+-761350 59562 0
+-830640 60625 0
+-901130 61777 0
+-972910 63020 0
+-1.0461e+06 64358 0
+-1.1207e+06 65793 0
+-1.197e+06 67326 0
+-1.275e+06 68961 0
+-1.3547e+06 70697 0
+-1.4363e+06 72536 0
+-1.52e+06 74478 0
+-1.6057e+06 76521 0
+-1.6937e+06 78664 0
+-1.7839e+06 80906 0
+-1.8765e+06 83246 0
+-1.9716e+06 85683 0
+-2.0692e+06 88221 0
+-2.1695e+06 90867 0
+-2.2726e+06 93640 0
+-2.3785e+06 96566 0
+-2.4874e+06 99692 0
+-2.5996e+06 103080 0
+-2.7153e+06 106840 0
+-2.835e+06 111100 0
+-2.9593e+06 116040 0
+-3.0889e+06 121900 0
+-3.225e+06 128980 0
+-3.3691e+06 137650 0
+-3.5228e+06 148350 0
+-3.6886e+06 161590 0
+-3.8693e+06 177960 0
+-4.0683e+06 198080 0
+-4.2897e+06 222610 0
+-4.5381e+06 252190 0
+-4.8187e+06 287430 0
+-5.137e+06 328820 0
+-5.4989e+06 376670 0
+-5.9102e+06 431070 0
+-6.3764e+06 491810 0
+-6.9027e+06 558300 0
+-7.4927e+06 629570 0
+-8.1492e+06 704190 0
+-8.8727e+06 780310 0
+-9.6617e+06 855680 0
+-1.0512e+07 927690 0
+-1.1418e+07 993540 0
+-1.2369e+07 1.0503e+06 0
+-1.3353e+07 1.0951e+06 0
+-1.4357e+07 1.1252e+06 0
+-1.5363e+07 1.1384e+06 0
+-1.6355e+07 1.133e+06 0
+-1.7314e+07 1.1078e+06 0
+-1.8221e+07 1.0625e+06 0
+-1.9059e+07 997430 0
+-1.9812e+07 913780 0
+-2.0465e+07 813410 0
+-2.1006e+07 698750 0
+-2.1427e+07 572700 0
+-2.1722e+07 438470 0
+-2.1888e+07 299370 0
+-2.1927e+07 158690 0
+-2.1841e+07 19562 0
+-2.1636e+07 -115190 0
+-2.1321e+07 -243050 0
+-2.0905e+07 -361910 0
+-2.04e+07 -470040 0
+-1.9818e+07 -566070 0
+-1.9172e+07 -649030 0
+-1.8474e+07 -718330 0
+-1.7738e+07 -773740 0
+-1.6975e+07 -815400 0
+-1.6196e+07 -843770 0
+-1.5413e+07 -859620 0
+-1.4633e+07 -863910 0
+-1.3866e+07 -857820 0
+-1.3118e+07 -842660 0
+-1.2395e+07 -819800 0
+-1.1702e+07 -790640 0
+-1.1043e+07 -756500 0
+-1.042e+07 -718580 0
+-9.8346e+06 -677890 0
+-9.2887e+06 -635360 0
+-8.7824e+06 -591880 0
+-8.3158e+06 -548320 0
+-7.8883e+06 -505530 0
+-7.4987e+06 -464190 0
+-7.1454e+06 -424570 0
+-6.8269e+06 -386500 0
+-6.5418e+06 -349400 0
+-6.2894e+06 -312560 0
+-6.0694e+06 -275530 0
+-5.8817e+06 -238340 0
+-5.7255e+06 -201560 0
+-5.5992e+06 -166060 0
+-5.5001e+06 -132710 0
+-5.4252e+06 -101980 0
+-5.3718e+06 -73714 0
+-5.338e+06 -47165 0
+-5.3232e+06 -21134 0
+-5.3271e+06 5585.5 0
+-5.3495e+06 33601 0
+-5.3894e+06 62290 0
+-5.445e+06 89519 0
+-5.5136e+06 112110 0
+-5.5921e+06 127140 0
+-5.6776e+06 133710 0
+-5.7676e+06 133980 0
+-5.8606e+06 132770 0
+-5.9558e+06 135130 0
+-6.0533e+06 143310 0
+-6.1533e+06 154750 0
+-6.2554e+06 163090 0
+-6.3576e+06 162100 0
+-6.4568e+06 150410 0
+-6.55e+06 133710 0
+-6.6364e+06 122070 0
+-6.7176e+06 123270 0
+-6.7974e+06 136190 0
+-6.8779e+06 149540 0
+-6.9572e+06 148070 0
+-7.0282e+06 123450 0
+-7.0819e+06 82228 0
+-7.1131e+06 44131 0
+-7.1251e+06 29690 0
+-7.1287e+06 44472 0
+-7.1365e+06 71565 0
+-7.1541e+06 80035 0
+-7.1743e+06 46196 0
+-7.18e+06 -26215 0
+-7.1543e+06 -102920 0
+-7.0919e+06 -138870 0
+-7.0043e+06 -110140 0
+-6.9135e+06 -35784 0
+-6.8392e+06 28578 0
+-6.7849e+06 25520 0
+-6.7357e+06 -62645 0
+-6.6665e+06 -195060 0
+-6.5592e+06 -293070 0
+-6.4148e+06 -290530 0
+-6.2557e+06 -181160 0
+-6.1137e+06 -29636 0
+-6.0136e+06 64311 0
+-5.9589e+06 27453 0
+-5.93e+06 -139750 0
+-5.8922e+06 -362170 0
+-5.8102e+06 -536740 0
+-5.6626e+06 -595970 0
+-5.4529e+06 -543250 0
+3.6639e+06 289.3 0
+3.6439e+06 -2871.5 0
+3.6213e+06 -1465.9 0
+3.5964e+06 4487.4 0
+3.57e+06 12918 0
+3.5429e+06 20934 0
+3.5166e+06 26159 0
+3.4925e+06 27399 0
+3.4724e+06 24673 0
+3.4574e+06 18869 0
+3.4483e+06 11288 0
+3.4449e+06 3216.8 0
+3.4469e+06 -4381.8 0
+3.4534e+06 -11013 0
+3.4637e+06 -16642 0
+3.4775e+06 -21570 0
+3.4944e+06 -26241 0
+3.5146e+06 -31069 0
+3.5385e+06 -36301 0
+3.5663e+06 -41971 0
+3.5984e+06 -47918 0
+3.6347e+06 -53858 0
+3.6751e+06 -59472 0
+3.7192e+06 -64485 0
+3.7666e+06 -68710 0
+3.8166e+06 -72067 0
+3.8686e+06 -74570 0
+3.9222e+06 -76294 0
+3.9768e+06 -77343 0
+4.032e+06 -77817 0
+4.0875e+06 -77783 0
+4.1428e+06 -77264 0
+4.1977e+06 -76239 0
+4.2518e+06 -74651 0
+4.3045e+06 -72425 0
+4.3556e+06 -69500 0
+4.4043e+06 -65842 0
+4.4502e+06 -61466 0
+4.4929e+06 -56433 0
+4.5319e+06 -50846 0
+4.567e+06 -44824 0
+4.5977e+06 -38487 0
+4.6241e+06 -31930 0
+4.6458e+06 -25213 0
+4.6629e+06 -18370 0
+4.6752e+06 -11414 0
+4.6826e+06 -4361.6 0
+4.685e+06 2752.3 0
+4.6824e+06 9860 0
+4.6748e+06 16861 0
+4.6624e+06 23630 0
+4.6452e+06 30033 0
+4.6236e+06 35946 0
+4.598e+06 41264 0
+4.5688e+06 45907 0
+4.5365e+06 49812 0
+4.5015e+06 52928 0
+4.4646e+06 55197 0
+4.4263e+06 56550 0
+4.3872e+06 56897 0
+4.3483e+06 56129 0
+4.3102e+06 54130 0
+4.274e+06 50779 0
+4.2406e+06 45958 0
+4.2112e+06 39563 0
+4.1869e+06 31503 0
+4.169e+06 21705 0
+4.1587e+06 10115 0
+4.1574e+06 -3294.1 0
+4.1664e+06 -18520 0
+4.187e+06 -35521 0
+4.2205e+06 -54202 0
+4.268e+06 -74410 0
+4.3306e+06 -95920 0
+4.4092e+06 -118430 0
+4.5043e+06 -141550 0
+4.6162e+06 -164800 0
+4.7448e+06 -187630 0
+4.8896e+06 -209410 0
+5.0495e+06 -229430 0
+5.223e+06 -246940 0
+5.408e+06 -261160 0
+5.6018e+06 -271330 0
+5.8011e+06 -276710 0
+6.0024e+06 -276650 0
+6.2014e+06 -270610 0
+6.3936e+06 -258220 0
+6.5745e+06 -239310 0
+6.7391e+06 -213940 0
+6.8831e+06 -182430 0
+7.0021e+06 -145380 0
+7.0925e+06 -103620 0
+7.1512e+06 -58222 0
+7.176e+06 -10456 0
+7.1659e+06 38296 0
+7.1205e+06 86591 0
+7.0407e+06 133010 0
+6.9285e+06 176250 0
+6.7865e+06 215150 0
+6.6182e+06 248830 0
+6.4276e+06 276660 0
+6.2191e+06 298300 0
+5.9972e+06 313720 0
+5.7662e+06 323170 0
+5.5302e+06 327120 0
+5.293e+06 326230 0
+5.0578e+06 321270 0
+4.8271e+06 313070 0
+4.6029e+06 302470 0
+4.3867e+06 290260 0
+4.1794e+06 277130 0
+3.9814e+06 263700 0
+3.7928e+06 250420 0
+3.6132e+06 237670 0
+3.4424e+06 225680 0
+3.2796e+06 214600 0
+3.1242e+06 204490 0
+2.9757e+06 195370 0
+2.8332e+06 187180 0
+2.6962e+06 179850 0
+2.5642e+06 173300 0
+2.4365e+06 167440 0
+2.3128e+06 162180 0
+2.1927e+06 157450 0
+2.0758e+06 153160 0
+1.9619e+06 149260 0
+1.8507e+06 145710 0
+1.7419e+06 142460 0
+1.6353e+06 139490 0
+1.5308e+06 136770 0
+1.4281e+06 134290 0
+1.3271e+06 132030 0
+1.2277e+06 129980 0
+1.1296e+06 128140 0
+1.0328e+06 126490 0
+937080 125040 0
+842300 123770 0
+748340 122680 0
+655080 121760 0
+562380 121010 0
+470130 120420 0
+378210 120000 0
+286500 119730 0
+194900 119620 0
+103290 119660 0
+11563 119850 0
+-80382 120190 0
+-172650 120680 0
+-265360 121310 0
+-358600 122100 0
+-452490 123030 0
+-547120 124110 0
+-642620 125350 0
+-739090 126750 0
+-836640 128300 0
+-935390 130020 0
+-1.0355e+06 131910 0
+-1.137e+06 133970 0
+-1.24e+06 136210 0
+-1.3448e+06 138640 0
+-1.4513e+06 141260 0
+-1.5599e+06 144070 0
+-1.6705e+06 147080 0
+-1.7834e+06 150290 0
+-1.8986e+06 153710 0
+-2.0164e+06 157340 0
+-2.1368e+06 161180 0
+-2.26e+06 165220 0
+-2.3862e+06 169470 0
+-2.5154e+06 173910 0
+-2.6478e+06 178540 0
+-2.7836e+06 183360 0
+-2.9228e+06 188360 0
+-3.0655e+06 193550 0
+-3.2119e+06 198930 0
+-3.362e+06 204530 0
+-3.5161e+06 210410 0
+-3.6743e+06 216660 0
+-3.8369e+06 223390 0
+-4.0043e+06 230810 0
+-4.177e+06 239180 0
+-4.3558e+06 248860 0
+-4.5418e+06 260310 0
+-4.7363e+06 274130 0
+-4.9413e+06 291040 0
+-5.1592e+06 311900 0
+-5.3929e+06 337730 0
+-5.6463e+06 369630 0
+-5.9237e+06 408810 0
+-6.2306e+06 456520 0
+-6.5728e+06 513960 0
+-6.9571e+06 582210 0
+-7.3906e+06 662100 0
+-7.8807e+06 754120 0
+-8.4348e+06 858250 0
+-9.0599e+06 973870 0
+-9.7619e+06 1.0996e+06 0
+-1.0545e+07 1.2334e+06 0
+-1.1413e+07 1.3722e+06 0
+-1.2365e+07 1.5122e+06 0
+-1.3398e+07 1.6489e+06 0
+-1.4507e+07 1.7773e+06 0
+-1.5681e+07 1.8917e+06 0
+-1.6909e+07 1.9869e+06 0
+-1.8173e+07 2.0573e+06 0
+-1.9456e+07 2.0983e+06 0
+-2.0734e+07 2.1059e+06 0
+-2.1986e+07 2.0773e+06 0
+-2.3188e+07 2.011e+06 0
+-2.4317e+07 1.907e+06 0
+-2.535e+07 1.7666e+06 0
+-2.6268e+07 1.5928e+06 0
+-2.7052e+07 1.3897e+06 0
+-2.769e+07 1.1622e+06 0
+-2.8171e+07 916290 0
+-2.849e+07 658240 0
+-2.8644e+07 394410 0
+-2.8635e+07 131010 0
+-2.8469e+07 -126200 0
+-2.8155e+07 -372070 0
+-2.7704e+07 -602190 0
+-2.7129e+07 -812910 0
+-2.6446e+07 -1.0014e+06 0
+-2.5669e+07 -1.1656e+06 0
+-2.4816e+07 -1.3042e+06 0
+-2.3904e+07 -1.4167e+06 0
+-2.2947e+07 -1.5034e+06 0
+-2.1962e+07 -1.5649e+06 0
+-2.0961e+07 -1.6028e+06 0
+-1.9959e+07 -1.6188e+06 0
+-1.8965e+07 -1.6148e+06 0
+-1.7991e+07 -1.5932e+06 0
+-1.7043e+07 -1.5563e+06 0
+-1.613e+07 -1.5066e+06 0
+-1.5257e+07 -1.4464e+06 0
+-1.4428e+07 -1.3781e+06 0
+-1.3647e+07 -1.3039e+06 0
+-1.2915e+07 -1.2255e+06 0
+-1.2234e+07 -1.1445e+06 0
+-1.1604e+07 -1.0622e+06 0
+-1.1026e+07 -980100 0
+-1.0497e+07 -899600 0
+-1.0017e+07 -821860 0
+-9.5837e+06 -747510 0
+-9.1944e+06 -676330 0
+-8.8475e+06 -607380 0
+-8.5417e+06 -539400 0
+-8.2765e+06 -471550 0
+-8.0515e+06 -403950 0
+-7.8652e+06 -337800 0
+-7.7156e+06 -274920 0
+-7.599e+06 -216910 0
+-7.5118e+06 -164420 0
+-7.4506e+06 -116780 0
+-7.4132e+06 -72271 0
+-7.3986e+06 -28856 0
+-7.4063e+06 14948 0
+-7.4355e+06 59364 0
+-7.4843e+06 103010 0
+-7.5502e+06 143080 0
+-7.63e+06 176070 0
+-7.7208e+06 199190 0
+-7.8202e+06 211810 0
+-7.9261e+06 216460 0
+-8.0365e+06 218280 0
+-8.1501e+06 222800 0
+-8.266e+06 232760 0
+-8.3837e+06 245780 0
+-8.5026e+06 255070 0
+-8.6211e+06 253350 0
+-8.7361e+06 238300 0
+-8.8441e+06 215680 0
+-8.9432e+06 197170 0
+-9.034e+06 193000 0
+-9.1199e+06 203560 0
+-9.2042e+06 216410 0
+-9.286e+06 212490 0
+-9.3589e+06 179100 0
+-9.4134e+06 121330 0
+-9.442e+06 62574 0
+-9.446e+06 30954 0
+-9.4367e+06 38998 0
+-9.4292e+06 70848 0
+-9.433e+06 88615 0
+-9.4439e+06 56991 0
+-9.444e+06 -29217 0
+-9.4117e+06 -135300 0
+-9.3352e+06 -205350 0
+-9.222e+06 -200220 0
+-9.0951e+06 -129160 0
+-8.9803e+06 -50274 0
+-8.8893e+06 -35060 0
+-8.8122e+06 -118250 0
+-8.7225e+06 -268010 0
+-8.5944e+06 -400360 0
+-8.4196e+06 -432020 0
+-8.2149e+06 -337640 0
+-8.015e+06 -172070 0
+-7.8553e+06 -40222 0
+-7.7532e+06 -33024 0
+-7.699e+06 -171380 0
+-7.6592e+06 -395210 0
+-7.5915e+06 -603580 0
+-7.4625e+06 -716910 0
+-7.2639e+06 -716880 0
+5.3909e+06 22999 0
+5.3562e+06 22312 0
+5.3183e+06 26136 0
+5.2779e+06 33892 0
+5.2362e+06 43175 0
+5.1948e+06 50819 0
+5.1556e+06 54199 0
+5.1208e+06 52037 0
+5.0921e+06 44544 0
+5.0708e+06 33069 0
+5.0575e+06 19507 0
+5.0521e+06 5697.3 0
+5.0537e+06 -7019 0
+5.0614e+06 -18022 0
+5.0744e+06 -27389 0
+5.0919e+06 -35685 0
+5.114e+06 -43670 0
+5.1407e+06 -52012 0
+5.1726e+06 -61089 0
+5.2099e+06 -70922 0
+5.2531e+06 -81217 0
+5.3021e+06 -91491 0
+5.3568e+06 -101210 0
+5.4166e+06 -109920 0
+5.4808e+06 -117320 0
+5.5488e+06 -123280 0
+5.6197e+06 -127810 0
+5.6928e+06 -131030 0
+5.7676e+06 -133110 0
+5.8433e+06 -134210 0
+5.9195e+06 -134430 0
+5.9958e+06 -133810 0
+6.0716e+06 -132320 0
+6.1464e+06 -129850 0
+6.2196e+06 -126290 0
+6.2905e+06 -121540 0
+6.3585e+06 -115540 0
+6.4229e+06 -108310 0
+6.483e+06 -99961 0
+6.5382e+06 -90650 0
+6.5882e+06 -80580 0
+6.6325e+06 -69946 0
+6.6708e+06 -58905 0
+6.703e+06 -47558 0
+6.7289e+06 -35957 0
+6.7482e+06 -24124 0
+6.7608e+06 -12081 0
+6.7667e+06 114.01 0
+6.7656e+06 12351 0
+6.7576e+06 24464 0
+6.7428e+06 36241 0
+6.7214e+06 47453 0
+6.6938e+06 57885 0
+6.6605e+06 67350 0
+6.6219e+06 75703 0
+6.5787e+06 82830 0
+6.5317e+06 88632 0
+6.4815e+06 93006 0
+6.429e+06 95826 0
+6.3752e+06 96933 0
+6.321e+06 96140 0
+6.2677e+06 93242 0
+6.2164e+06 88026 0
+6.1686e+06 80288 0
+6.1257e+06 69841 0
+6.0893e+06 56521 0
+6.0612e+06 40195 0
+6.0431e+06 20761 0
+6.0368e+06 -1837.8 0
+6.0441e+06 -27607 0
+6.0668e+06 -56482 0
+6.1066e+06 -88312 0
+6.1652e+06 -122840 0
+6.2439e+06 -159690 0
+6.3441e+06 -198360 0
+6.4664e+06 -238180 0
+6.6113e+06 -278350 0
+6.7788e+06 -317920 0
+6.9681e+06 -355820 0
+7.1779e+06 -390830 0
+7.4062e+06 -421680 0
+7.6502e+06 -447030 0
+7.9065e+06 -465540 0
+8.1708e+06 -475950 0
+8.4381e+06 -477110 0
+8.703e+06 -468050 0
+8.9594e+06 -448110 0
+9.2011e+06 -416930 0
+9.4218e+06 -374570 0
+9.6153e+06 -321520 0
+9.7758e+06 -258730 0
+9.8984e+06 -187590 0
+9.9786e+06 -109910 0
+1.0014e+07 -27816 0
+1.0001e+07 56330 0
+9.9417e+06 140050 0
+9.8355e+06 220880 0
+9.6849e+06 296540 0
+9.4936e+06 365020 0
+9.266e+06 424690 0
+9.0074e+06 474420 0
+8.7237e+06 513560 0
+8.4208e+06 542000 0
+8.1047e+06 560080 0
+7.7809e+06 568580 0
+7.4545e+06 568580 0
+7.13e+06 561390 0
+6.8108e+06 548430 0
+6.5e+06 531120 0
+6.1994e+06 510850 0
+5.9104e+06 488820 0
+5.6337e+06 466080 0
+5.3695e+06 443490 0
+5.1176e+06 421660 0
+4.8774e+06 401050 0
+4.6482e+06 381930 0
+4.4291e+06 364420 0
+4.2194e+06 348550 0
+4.0181e+06 334260 0
+3.8245e+06 321440 0
+3.6376e+06 309950 0
+3.457e+06 299650 0
+3.2819e+06 290380 0
+3.1119e+06 282020 0
+2.9464e+06 274440 0
+2.7851e+06 267560 0
+2.6275e+06 261280 0
+2.4734e+06 255550 0
+2.3225e+06 250310 0
+2.1744e+06 245520 0
+2.0289e+06 241160 0
+1.8858e+06 237190 0
+1.7448e+06 233610 0
+1.6057e+06 230390 0
+1.4683e+06 227520 0
+1.3324e+06 224990 0
+1.1978e+06 222780 0
+1.0644e+06 220890 0
+931860 219310 0
+800100 218020 0
+668950 217010 0
+538230 216290 0
+407790 215840 0
+277490 215660 0
+147170 215740 0
+16682 216070 0
+-114110 216670 0
+-245350 217510 0
+-377180 218610 0
+-509740 219970 0
+-643170 221580 0
+-777610 223440 0
+-913210 225570 0
+-1.0501e+06 227970 0
+-1.1885e+06 230640 0
+-1.3284e+06 233590 0
+-1.4702e+06 236820 0
+-1.6138e+06 240360 0
+-1.7596e+06 244190 0
+-1.9076e+06 248340 0
+-2.058e+06 252810 0
+-2.211e+06 257610 0
+-2.3669e+06 262750 0
+-2.5257e+06 268230 0
+-2.6877e+06 274060 0
+-2.8531e+06 280240 0
+-3.022e+06 286770 0
+-3.1947e+06 293650 0
+-3.3713e+06 300860 0
+-3.552e+06 308400 0
+-3.7369e+06 316250 0
+-3.9263e+06 324400 0
+-4.1202e+06 332840 0
+-4.3188e+06 341560 0
+-4.5223e+06 350600 0
+-4.7307e+06 359970 0
+-4.9443e+06 369770 0
+-5.1633e+06 380120 0
+-5.3881e+06 391230 0
+-5.619e+06 403410 0
+-5.8567e+06 417090 0
+-6.1022e+06 432830 0
+-6.3567e+06 451400 0
+-6.6219e+06 473740 0
+-6.9001e+06 501020 0
+-7.1942e+06 534640 0
+-7.5079e+06 576180 0
+-7.8457e+06 627430 0
+-8.213e+06 690300 0
+-8.6161e+06 766730 0
+-9.0623e+06 858570 0
+-9.5594e+06 967460 0
+-1.0116e+07 1.0946e+06 0
+-1.0741e+07 1.2406e+06 0
+-1.1442e+07 1.4053e+06 0
+-1.2228e+07 1.5874e+06 0
+-1.3105e+07 1.7846e+06 0
+-1.4078e+07 1.9931e+06 0
+-1.5149e+07 2.2081e+06 0
+-1.6317e+07 2.4233e+06 0
+-1.7579e+07 2.6313e+06 0
+-1.8926e+07 2.824e+06 0
+-2.0345e+07 2.9928e+06 0
+-2.1821e+07 3.129e+06 0
+-2.3333e+07 3.2246e+06 0
+-2.4858e+07 3.2723e+06 0
+-2.6369e+07 3.2665e+06 0
+-2.7841e+07 3.2033e+06 0
+-2.9245e+07 3.081e+06 0
+-3.0554e+07 2.9001e+06 0
+-3.1743e+07 2.6637e+06 0
+-3.2789e+07 2.3767e+06 0
+-3.3673e+07 2.046e+06 0
+-3.438e+07 1.6801e+06 0
+-3.4899e+07 1.2884e+06 0
+-3.5225e+07 880930 0
+-3.5357e+07 467630 0
+-3.5299e+07 58117 0
+-3.5058e+07 -338780 0
+-3.4645e+07 -715300 0
+-3.4075e+07 -1.0649e+06 0
+-3.3364e+07 -1.3822e+06 0
+-3.2529e+07 -1.6632e+06 0
+-3.1589e+07 -1.9051e+06 0
+-3.0565e+07 -2.1065e+06 0
+-2.9475e+07 -2.267e+06 0
+-2.8337e+07 -2.3874e+06 0
+-2.7169e+07 -2.4695e+06 0
+-2.5988e+07 -2.5157e+06 0
+-2.4807e+07 -2.5292e+06 0
+-2.3639e+07 -2.5132e+06 0
+-2.2496e+07 -2.4711e+06 0
+-2.1386e+07 -2.4066e+06 0
+-2.0319e+07 -2.3232e+06 0
+-1.93e+07 -2.2247e+06 0
+-1.8335e+07 -2.1146e+06 0
+-1.7426e+07 -1.996e+06 0
+-1.6577e+07 -1.8716e+06 0
+-1.5789e+07 -1.7437e+06 0
+-1.5061e+07 -1.6143e+06 0
+-1.4395e+07 -1.4855e+06 0
+-1.3789e+07 -1.3592e+06 0
+-1.324e+07 -1.2374e+06 0
+-1.2747e+07 -1.1211e+06 0
+-1.2306e+07 -1.01e+06 0
+-1.1916e+07 -902750 0
+-1.1574e+07 -797560 0
+-1.1279e+07 -693110 0
+-1.1031e+07 -589630 0
+-1.0829e+07 -489060 0
+-1.0668e+07 -394250 0
+-1.0545e+07 -307650 0
+-1.0456e+07 -229980 0
+-1.0396e+07 -159890 0
+-1.0364e+07 -94567 0
+-1.0357e+07 -31147 0
+-1.0376e+07 31949 0
+-1.0418e+07 94305 0
+-1.048e+07 153670 0
+-1.0559e+07 206740 0
+-1.0652e+07 250230 0
+-1.0757e+07 281940 0
+-1.0871e+07 301780 0
+-1.0993e+07 312320 0
+-1.1121e+07 318430 0
+-1.1254e+07 325490 0
+-1.1388e+07 336560 0
+-1.1522e+07 349930 0
+-1.1655e+07 359030 0
+-1.1787e+07 355970 0
+-1.1915e+07 337170 0
+-1.2035e+07 307660 0
+-1.2144e+07 280030 0
+-1.224e+07 266990 0
+-1.2326e+07 271390 0
+-1.2406e+07 280990 0
+-1.2481e+07 273550 0
+-1.2548e+07 231390 0
+-1.2596e+07 156530 0
+-1.2615e+07 74552 0
+-1.2606e+07 21143 0
+-1.2576e+07 17574 0
+-1.2543e+07 51623 0
+-1.2521e+07 79968 0
+-1.2511e+07 54720 0
+-1.2496e+07 -41551 0
+-1.245e+07 -177450 0
+-1.2355e+07 -287880 0
+-1.221e+07 -316570 0
+-1.204e+07 -258200 0
+-1.1873e+07 -168580 0
+-1.1732e+07 -131510 0
+-1.1614e+07 -201500 0
+-1.1494e+07 -361660 0
+-1.1339e+07 -528320 0
+-1.113e+07 -602820 0
+-1.0875e+07 -537200 0
+-1.0607e+07 -369170 0
+-1.0372e+07 -201840 0
+-1.0201e+07 -140990 0
+-1.0099e+07 -231890 0
+-1.0037e+07 -436560 0
+-9.9698e+06 -663500 0
+-9.8536e+06 -825380 0
+-9.6661e+06 -883260 0
+7.8503e+06 60127 0
+7.7955e+06 62583 0
+7.7369e+06 69202 0
+7.6758e+06 78718 0
+7.614e+06 88256 0
+7.554e+06 94353 0
+7.4983e+06 94240 0
+7.4494e+06 86720 0
+7.4094e+06 72368 0
+7.3795e+06 53138 0
+7.3602e+06 31630 0
+7.3511e+06 10309 0
+7.3512e+06 -9093.5 0
+7.3593e+06 -25864 0
+7.3743e+06 -40258 0
+7.3957e+06 -53185 0
+7.4233e+06 -65788 0
+7.4574e+06 -79029 0
+7.4986e+06 -93422 0
+7.5472e+06 -108950 0
+7.6038e+06 -125140 0
+7.6682e+06 -141250 0
+7.7401e+06 -156490 0
+7.8189e+06 -170200 0
+7.9038e+06 -181920 0
+7.9937e+06 -191470 0
+8.0878e+06 -198860 0
+8.185e+06 -204260 0
+8.2846e+06 -207910 0
+8.3858e+06 -210020 0
+8.4879e+06 -210760 0
+8.5903e+06 -210170 0
+8.6922e+06 -208200 0
+8.793e+06 -204710 0
+8.8919e+06 -199530 0
+8.9881e+06 -192500 0
+9.0805e+06 -183540 0
+9.1684e+06 -172670 0
+9.2508e+06 -160050 0
+9.327e+06 -145920 0
+9.3963e+06 -130580 0
+9.4583e+06 -114310 0
+9.5125e+06 -97366 0
+9.5585e+06 -79886 0
+9.5962e+06 -61951 0
+9.6252e+06 -43593 0
+9.6452e+06 -24845 0
+9.6562e+06 -5789.1 0
+9.6578e+06 13409 0
+9.65e+06 32497 0
+9.633e+06 51149 0
+9.6068e+06 69015 0
+9.5721e+06 85753 0
+9.5292e+06 101070 0
+9.479e+06 114720 0
+9.4222e+06 126530 0
+9.3596e+06 136330 0
+9.2923e+06 143950 0
+9.2214e+06 149180 0
+9.148e+06 151770 0
+9.0735e+06 151420 0
+8.9994e+06 147810 0
+8.9273e+06 140600 0
+8.8591e+06 129470 0
+8.7968e+06 114130 0
+8.7425e+06 94303 0
+8.6984e+06 69788 0
+8.6668e+06 40418 0
+8.6501e+06 6098.2 0
+8.6506e+06 -33186 0
+8.6708e+06 -77341 0
+8.7129e+06 -126140 0
+8.779e+06 -179190 0
+8.871e+06 -235920 0
+8.9905e+06 -295540 0
+9.1385e+06 -357050 0
+9.3156e+06 -419210 0
+9.5218e+06 -480580 0
+9.7561e+06 -539490 0
+1.0017e+07 -594100 0
+1.0302e+07 -642440 0
+1.0607e+07 -682450 0
+1.0928e+07 -712080 0
+1.126e+07 -729350 0
+1.1596e+07 -732460 0
+1.193e+07 -719930 0
+1.2253e+07 -690650 0
+1.2558e+07 -644030 0
+1.2837e+07 -580100 0
+1.3081e+07 -499530 0
+1.3284e+07 -403720 0
+1.3437e+07 -294740 0
+1.3537e+07 -175290 0
+1.3578e+07 -48623 0
+1.3559e+07 81659 0
+1.3478e+07 211740 0
+1.3336e+07 337810 0
+1.3136e+07 456300 0
+1.2883e+07 564040 0
+1.2582e+07 658440 0
+1.224e+07 737660 0
+1.1863e+07 800620 0
+1.1461e+07 847010 0
+1.104e+07 877320 0
+1.0609e+07 892650 0
+1.0173e+07 894630 0
+9.7377e+06 885230 0
+9.3091e+06 866630 0
+8.8905e+06 841040 0
+8.4849e+06 810580 0
+8.0939e+06 777140 0
+7.7188e+06 742370 0
+7.3597e+06 707610 0
+7.0167e+06 673870 0
+6.6891e+06 641850 0
+6.376e+06 612020 0
+6.0764e+06 584600 0
+5.7893e+06 559640 0
+5.5135e+06 537090 0
+5.248e+06 516790 0
+4.9919e+06 498530 0
+4.7442e+06 482110 0
+4.5041e+06 467320 0
+4.271e+06 453950 0
+4.0442e+06 441820 0
+3.823e+06 430800 0
+3.6071e+06 420750 0
+3.3959e+06 411590 0
+3.1891e+06 403220 0
+2.9861e+06 395590 0
+2.7867e+06 388650 0
+2.5906e+06 382360 0
+2.3973e+06 376680 0
+2.2065e+06 371600 0
+2.0181e+06 367080 0
+1.8316e+06 363110 0
+1.6469e+06 359660 0
+1.4636e+06 356710 0
+1.2816e+06 354250 0
+1.1006e+06 352250 0
+920340 350710 0
+740650 349600 0
+561310 348920 0
+382120 348650 0
+202900 348800 0
+23441 349340 0
+-156430 350270 0
+-336890 351600 0
+-518130 353310 0
+-700330 355420 0
+-883670 357920 0
+-1.0683e+06 360810 0
+-1.2545e+06 364110 0
+-1.4423e+06 367810 0
+-1.6321e+06 371930 0
+-1.8239e+06 376480 0
+-2.0179e+06 381470 0
+-2.2145e+06 386910 0
+-2.4138e+06 392820 0
+-2.6159e+06 399200 0
+-2.8212e+06 406080 0
+-3.0299e+06 413460 0
+-3.2422e+06 421360 0
+-3.4583e+06 429790 0
+-3.6785e+06 438750 0
+-3.9031e+06 448250 0
+-4.1322e+06 458280 0
+-4.3662e+06 468840 0
+-4.6052e+06 479920 0
+-4.8496e+06 491480 0
+-5.0994e+06 503520 0
+-5.355e+06 516010 0
+-5.6165e+06 528920 0
+-5.884e+06 542260 0
+-6.1578e+06 556020 0
+-6.438e+06 570270 0
+-6.7249e+06 585120 0
+-7.0186e+06 600730 0
+-7.3197e+06 617420 0
+-7.6284e+06 635600 0
+-7.9457e+06 655900 0
+-8.2726e+06 679150 0
+-8.6103e+06 706420 0
+-8.9611e+06 739080 0
+-9.3273e+06 778820 0
+-9.7122e+06 827630 0
+-1.012e+07 887780 0
+-1.0556e+07 961830 0
+-1.1027e+07 1.0525e+06 0
+-1.1538e+07 1.1624e+06 0
+-1.2099e+07 1.2942e+06 0
+-1.2718e+07 1.4501e+06 0
+-1.3405e+07 1.6317e+06 0
+-1.4169e+07 1.8396e+06 0
+-1.5019e+07 2.0733e+06 0
+-1.5964e+07 2.3308e+06 0
+-1.701e+07 2.6084e+06 0
+-1.8162e+07 2.9005e+06 0
+-1.9422e+07 3.1999e+06 0
+-2.0786e+07 3.4973e+06 0
+-2.2251e+07 3.7823e+06 0
+-2.3803e+07 4.0431e+06 0
+-2.543e+07 4.2677e+06 0
+-2.7111e+07 4.444e+06 0
+-2.8823e+07 4.5608e+06 0
+-3.0539e+07 4.6084e+06 0
+-3.2231e+07 4.5795e+06 0
+-3.3868e+07 4.4694e+06 0
+-3.5419e+07 4.2763e+06 0
+-3.6856e+07 4.0019e+06 0
+-3.8151e+07 3.6511e+06 0
+-3.928e+07 3.2315e+06 0
+-4.0224e+07 2.7534e+06 0
+-4.0967e+07 2.2291e+06 0
+-4.1501e+07 1.6721e+06 0
+-4.1821e+07 1.0964e+06 0
+-4.1927e+07 516040 0
+-4.1824e+07 -55781 0
+-4.1522e+07 -606980 0
+-4.1034e+07 -1.127e+06 0
+-4.0377e+07 -1.6071e+06 0
+-3.9568e+07 -2.0403e+06 0
+-3.8627e+07 -2.4213e+06 0
+-3.7576e+07 -2.7467e+06 0
+-3.6435e+07 -3.0148e+06 0
+-3.5225e+07 -3.2258e+06 0
+-3.3967e+07 -3.381e+06 0
+-3.2679e+07 -3.4835e+06 0
+-3.1379e+07 -3.5369e+06 0
+-3.0081e+07 -3.5457e+06 0
+-2.88e+07 -3.5146e+06 0
+-2.7547e+07 -3.4483e+06 0
+-2.6333e+07 -3.3517e+06 0
+-2.5166e+07 -3.2298e+06 0
+-2.4054e+07 -3.0876e+06 0
+-2.3002e+07 -2.9298e+06 0
+-2.2013e+07 -2.7608e+06 0
+-2.1091e+07 -2.5842e+06 0
+-2.0237e+07 -2.403e+06 0
+-1.9451e+07 -2.2199e+06 0
+-1.8734e+07 -2.0378e+06 0
+-1.8085e+07 -1.8594e+06 0
+-1.75e+07 -1.6873e+06 0
+-1.6978e+07 -1.523e+06 0
+-1.6515e+07 -1.3664e+06 0
+-1.6108e+07 -1.2158e+06 0
+-1.5756e+07 -1.0686e+06 0
+-1.5456e+07 -923130 0
+-1.5207e+07 -779750 0
+-1.5008e+07 -641130 0
+-1.4854e+07 -511240 0
+-1.4741e+07 -393300 0
+-1.4664e+07 -288060 0
+-1.462e+07 -193330 0
+-1.4605e+07 -105160 0
+-1.4618e+07 -19942 0
+-1.4657e+07 63682 0
+-1.472e+07 144350 0
+-1.4803e+07 218850 0
+-1.49e+07 283730 0
+-1.501e+07 336580 0
+-1.513e+07 376530 0
+-1.5259e+07 404260 0
+-1.5398e+07 421960 0
+-1.5545e+07 433310 0
+-1.5696e+07 442670 0
+-1.5846e+07 453250 0
+-1.5993e+07 464610 0
+-1.6136e+07 471530 0
+-1.6276e+07 466150 0
+-1.6412e+07 443320 0
+-1.6539e+07 406140 0
+-1.6652e+07 366800 0
+-1.6747e+07 340200 0
+-1.6825e+07 332850 0
+-1.6889e+07 334730 0
+-1.6946e+07 321880 0
+-1.6993e+07 271410 0
+-1.7023e+07 180230 0
+-1.7025e+07 73617 0
+-1.6993e+07 -6203 0
+-1.6932e+07 -27761 0
+-1.6861e+07 3615.3 0
+-1.6799e+07 42035 0
+-1.6751e+07 27218 0
+-1.6706e+07 -73598 0
+-1.6634e+07 -237070 0
+-1.6511e+07 -392170 0
+-1.6328e+07 -464870 0
+-1.6104e+07 -430610 0
+-1.5873e+07 -336910 0
+-1.5667e+07 -276280 0
+-1.5492e+07 -324420 0
+-1.5328e+07 -485360 0
+-1.5137e+07 -682820 0
+-1.4888e+07 -806680 0
+-1.4576e+07 -784360 0
+-1.4232e+07 -629410 0
+-1.3906e+07 -434650 0
+-1.3644e+07 -315550 0
+-1.3465e+07 -342480 0
+-1.3355e+07 -505580 0
+-1.3267e+07 -730760 0
+-1.3149e+07 -929430 0
+-1.2966e+07 -1.045e+06 0
+1.137e+07 117200 0
+1.1288e+07 123400 0
+1.1202e+07 132980 0
+1.1113e+07 143880 0
+1.1025e+07 152660 0
+1.0941e+07 155590 0
+1.0864e+07 149880 0
+1.0796e+07 134610 0
+1.0741e+07 110900 0
+1.0699e+07 81479 0
+1.0671e+07 49742 0
+1.0656e+07 18827 0
+1.0652e+07 -9152.9 0
+1.0659e+07 -33445 0
+1.0675e+07 -54560 0
+1.0699e+07 -73833 0
+1.0732e+07 -92839 0
+1.0774e+07 -112860 0
+1.0826e+07 -134520 0
+1.0888e+07 -157720 0
+1.0961e+07 -181750 0
+1.1044e+07 -205580 0
+1.1136e+07 -228110 0
+1.1238e+07 -248430 0
+1.1348e+07 -265940 0
+1.1465e+07 -280370 0
+1.1587e+07 -291740 0
+1.1714e+07 -300260 0
+1.1844e+07 -306230 0
+1.1977e+07 -309940 0
+1.2111e+07 -311590 0
+1.2246e+07 -311270 0
+1.2381e+07 -308890 0
+1.2514e+07 -304280 0
+1.2646e+07 -297190 0
+1.2774e+07 -287400 0
+1.2897e+07 -274780 0
+1.3015e+07 -259380 0
+1.3126e+07 -241380 0
+1.3229e+07 -221140 0
+1.3324e+07 -199070 0
+1.3409e+07 -175570 0
+1.3484e+07 -150970 0
+1.3548e+07 -125500 0
+1.3602e+07 -99269 0
+1.3644e+07 -72316 0
+1.3674e+07 -44690 0
+1.3692e+07 -16507 0
+1.3698e+07 11999 0
+1.3692e+07 40464 0
+1.3672e+07 68421 0
+1.3641e+07 95356 0
+1.3598e+07 120770 0
+1.3543e+07 144210 0
+1.3478e+07 165340 0
+1.3404e+07 183850 0
+1.3321e+07 199500 0
+1.3232e+07 212010 0
+1.3137e+07 221070 0
+1.3037e+07 226290 0
+1.2935e+07 227230 0
+1.2833e+07 223400 0
+1.2733e+07 214320 0
+1.2636e+07 199490 0
+1.2546e+07 178490 0
+1.2466e+07 150940 0
+1.2397e+07 116520 0
+1.2344e+07 74988 0
+1.2309e+07 26209 0
+1.2295e+07 -29835 0
+1.2306e+07 -93009 0
+1.2344e+07 -162980 0
+1.2411e+07 -239180 0
+1.2511e+07 -320770 0
+1.2644e+07 -406620 0
+1.2813e+07 -495290 0
+1.3019e+07 -585010 0
+1.326e+07 -673680 0
+1.3537e+07 -758930 0
+1.3846e+07 -838110 0
+1.4185e+07 -908410 0
+1.455e+07 -966870 0
+1.4934e+07 -1.0105e+06 0
+1.5332e+07 -1.0366e+06 0
+1.5736e+07 -1.0424e+06 0
+1.6137e+07 -1.0258e+06 0
+1.6525e+07 -985200 0
+1.6891e+07 -919640 0
+1.7224e+07 -829070 0
+1.7515e+07 -714380 0
+1.7755e+07 -577480 0
+1.7934e+07 -421230 0
+1.8045e+07 -249450 0
+1.8085e+07 -66727 0
+1.8047e+07 121790 0
+1.7933e+07 310620 0
+1.7742e+07 494270 0
+1.7477e+07 667520 0
+1.7144e+07 825710 0
+1.675e+07 965020 0
+1.6302e+07 1.0826e+06 0
+1.581e+07 1.1769e+06 0
+1.5284e+07 1.2471e+06 0
+1.4734e+07 1.294e+06 0
+1.4168e+07 1.3191e+06 0
+1.3595e+07 1.3245e+06 0
+1.3023e+07 1.3131e+06 0
+1.2458e+07 1.2879e+06 0
+1.1905e+07 1.2523e+06 0
+1.1368e+07 1.2092e+06 0
+1.0849e+07 1.1615e+06 0
+1.035e+07 1.1115e+06 0
+9.8717e+06 1.0612e+06 0
+9.4137e+06 1.0121e+06 0
+8.9755e+06 965310 0
+8.5562e+06 921510 0
+8.1547e+06 881060 0
+7.7694e+06 844090 0
+7.3993e+06 810540 0
+7.0428e+06 780210 0
+6.6989e+06 752850 0
+6.3663e+06 728170 0
+6.0441e+06 705870 0
+5.7313e+06 685680 0
+5.427e+06 667360 0
+5.1304e+06 650690 0
+4.841e+06 635510 0
+4.5579e+06 621680 0
+4.2807e+06 609070 0
+4.0088e+06 597600 0
+3.7416e+06 587200 0
+3.4788e+06 577800 0
+3.2197e+06 569340 0
+2.9641e+06 561800 0
+2.7114e+06 555110 0
+2.4613e+06 549250 0
+2.2135e+06 544180 0
+1.9676e+06 539870 0
+1.7232e+06 536280 0
+1.4801e+06 533390 0
+1.2379e+06 531170 0
+996490 529590 0
+755450 528630 0
+514580 528280 0
+273630 528530 0
+32363 529350 0
+-209460 530740 0
+-452050 532690 0
+-695650 535200 0
+-940480 538280 0
+-1.1868e+06 541910 0
+-1.4347e+06 546120 0
+-1.6846e+06 550900 0
+-1.9366e+06 556260 0
+-2.1909e+06 562220 0
+-2.4479e+06 568800 0
+-2.7077e+06 576000 0
+-2.9707e+06 583850 0
+-3.237e+06 592370 0
+-3.507e+06 601580 0
+-3.7809e+06 611490 0
+-4.0591e+06 622140 0
+-4.3418e+06 633530 0
+-4.6293e+06 645690 0
+-4.922e+06 658610 0
+-5.2202e+06 672320 0
+-5.5241e+06 686790 0
+-5.8342e+06 702030 0
+-6.1506e+06 718010 0
+-6.4738e+06 734710 0
+-6.804e+06 752090 0
+-7.1415e+06 770110 0
+-7.4864e+06 788730 0
+-7.8391e+06 807950 0
+-8.1998e+06 827760 0
+-8.5686e+06 848230 0
+-8.9458e+06 869480 0
+-9.3318e+06 891750 0
+-9.7268e+06 915430 0
+-1.0132e+07 941090 0
+-1.0547e+07 969530 0
+-1.0974e+07 1.0019e+06 0
+-1.1414e+07 1.0396e+06 0
+-1.1869e+07 1.0844e+06 0
+-1.2342e+07 1.1386e+06 0
+-1.2836e+07 1.2049e+06 0
+-1.3357e+07 1.2863e+06 0
+-1.3909e+07 1.3861e+06 0
+-1.45e+07 1.5079e+06 0
+-1.5136e+07 1.6552e+06 0
+-1.5826e+07 1.8313e+06 0
+-1.658e+07 2.039e+06 0
+-1.7407e+07 2.2802e+06 0
+-1.8318e+07 2.5555e+06 0
+-1.9321e+07 2.8638e+06 0
+-2.0424e+07 3.2023e+06 0
+-2.1634e+07 3.5655e+06 0
+-2.2955e+07 3.9459e+06 0
+-2.4387e+07 4.3334e+06 0
+-2.5926e+07 4.7155e+06 0
+-2.7564e+07 5.0783e+06 0
+-2.9289e+07 5.4063e+06 0
+-3.1083e+07 5.6836e+06 0
+-3.2925e+07 5.8946e+06 0
+-3.4788e+07 6.0252e+06 0
+-3.6642e+07 6.0633e+06 0
+-3.8459e+07 6e+06 0
+-4.0204e+07 5.83e+06 0
+-4.1846e+07 5.5521e+06 0
+-4.3357e+07 5.1695e+06 0
+-4.4708e+07 4.6893e+06 0
+-4.5876e+07 4.1225e+06 0
+-4.6843e+07 3.4831e+06 0
+-4.7596e+07 2.7873e+06 0
+-4.8126e+07 2.0531e+06 0
+-4.8431e+07 1.2987e+06 0
+-4.8512e+07 542130 0
+-4.8378e+07 -199670 0
+-4.804e+07 -911450 0
+-4.7511e+07 -1.58e+06 0
+-4.681e+07 -2.1945e+06 0
+-4.5955e+07 -2.7463e+06 0
+-4.4968e+07 -3.2292e+06 0
+-4.3871e+07 -3.6392e+06 0
+-4.2684e+07 -3.9747e+06 0
+-4.143e+07 -4.2359e+06 0
+-4.0128e+07 -4.4254e+06 0
+-3.8798e+07 -4.5471e+06 0
+-3.7458e+07 -4.6063e+06 0
+-3.6122e+07 -4.6088e+06 0
+-3.4804e+07 -4.5606e+06 0
+-3.3517e+07 -4.4679e+06 0
+-3.2272e+07 -4.3368e+06 0
+-3.1076e+07 -4.1736e+06 0
+-2.9938e+07 -3.9846e+06 0
+-2.8863e+07 -3.7758e+06 0
+-2.7855e+07 -3.5528e+06 0
+-2.6918e+07 -3.3201e+06 0
+-2.6053e+07 -3.0816e+06 0
+-2.526e+07 -2.8408e+06 0
+-2.4541e+07 -2.601e+06 0
+-2.3895e+07 -2.366e+06 0
+-2.3318e+07 -2.1391e+06 0
+-2.2808e+07 -1.9226e+06 0
+-2.2362e+07 -1.7165e+06 0
+-2.1977e+07 -1.5189e+06 0
+-2.1649e+07 -1.3267e+06 0
+-2.1377e+07 -1.1377e+06 0
+-2.1157e+07 -952360 0
+-2.0989e+07 -774060 0
+-2.0867e+07 -607800 0
+-2.0787e+07 -457480 0
+-2.0743e+07 -323720 0
+-2.0733e+07 -203400 0
+-2.0753e+07 -91461 0
+-2.0801e+07 16160 0
+-2.0875e+07 120210 0
+-2.0971e+07 218010 0
+-2.1084e+07 305350 0
+-2.1208e+07 379110 0
+-2.1339e+07 438620 0
+-2.1478e+07 485180 0
+-2.1626e+07 520520 0
+-2.1783e+07 545920 0
+-2.1948e+07 562630 0
+-2.2115e+07 572930 0
+-2.2277e+07 579930 0
+-2.2431e+07 585360 0
+-2.2577e+07 586830 0
+-2.2717e+07 577580 0
+-2.2851e+07 550580 0
+-2.2977e+07 505280 0
+-2.3087e+07 451500 0
+-2.3171e+07 405530 0
+-2.3229e+07 378820 0
+-2.3264e+07 366310 0
+-2.3285e+07 344870 0
+-2.3297e+07 286750 0
+-2.3294e+07 181460 0
+-2.3265e+07 50397 0
+-2.3197e+07 -60057 0
+-2.3093e+07 -107450 0
+-2.2967e+07 -86445 0
+-2.2843e+07 -41157 0
+-2.2735e+07 -42452 0
+-2.2638e+07 -140840 0
+-2.2523e+07 -326480 0
+-2.2358e+07 -527500 0
+-2.2125e+07 -653200 0
+-2.1836e+07 -655830 0
+-2.1526e+07 -567670 0
+-2.1234e+07 -484410 0
+-2.0982e+07 -502500 0
+-2.0755e+07 -652210 0
+-2.0514e+07 -872920 0
+-2.0216e+07 -1.0492e+06 0
+-1.9842e+07 -1.0841e+06 0
+-1.9413e+07 -960900 0
+-1.898e+07 -752700 0
+-1.8602e+07 -577120 0
+-1.8318e+07 -527680 0
+-1.8126e+07 -626980 0
+-1.7987e+07 -826350 0
+-1.7845e+07 -1.044e+06 0
+-1.7652e+07 -1.2104e+06 0
+1.535e+07 198840 0
+1.5238e+07 208900 0
+1.5123e+07 220980 0
+1.5007e+07 232210 0
+1.4895e+07 238640 0
+1.4788e+07 236350 0
+1.4691e+07 222750 0
+1.4606e+07 197350 0
+1.4536e+07 162010 0
+1.4481e+07 120280 0
+1.4441e+07 76389 0
+1.4416e+07 34088 0
+1.4404e+07 -4206.1 0
+1.4404e+07 -37786 0
+1.4416e+07 -67483 0
+1.4438e+07 -95086 0
+1.4471e+07 -122600 0
+1.4516e+07 -151560 0
+1.4573e+07 -182660 0
+1.4642e+07 -215640 0
+1.4724e+07 -249530 0
+1.4818e+07 -282950 0
+1.4924e+07 -314500 0
+1.504e+07 -343060 0
+1.5166e+07 -367860 0
+1.5301e+07 -388580 0
+1.5443e+07 -405200 0
+1.559e+07 -417970 0
+1.5743e+07 -427220 0
+1.5898e+07 -433310 0
+1.6057e+07 -436490 0
+1.6216e+07 -436850 0
+1.6376e+07 -434310 0
+1.6535e+07 -428640 0
+1.6691e+07 -419520 0
+1.6844e+07 -406660 0
+1.6993e+07 -389900 0
+1.7135e+07 -369260 0
+1.727e+07 -345000 0
+1.7396e+07 -317550 0
+1.7513e+07 -287460 0
+1.7618e+07 -255250 0
+1.7713e+07 -221370 0
+1.7794e+07 -186120 0
+1.7864e+07 -149650 0
+1.7919e+07 -112030 0
+1.7961e+07 -73320 0
+1.7988e+07 -33678 0
+1.8e+07 6579.2 0
+1.7997e+07 46957 0
+1.7979e+07 86817 0
+1.7945e+07 125450 0
+1.7897e+07 162160 0
+1.7835e+07 196320 0
+1.7759e+07 227420 0
+1.7672e+07 255040 0
+1.7573e+07 278790 0
+1.7465e+07 298290 0
+1.7348e+07 313070 0
+1.7225e+07 322570 0
+1.7098e+07 326160 0
+1.6969e+07 323160 0
+1.684e+07 312870 0
+1.6714e+07 294650 0
+1.6594e+07 267890 0
+1.6484e+07 232070 0
+1.6385e+07 186770 0
+1.6303e+07 131680 0
+1.6239e+07 66622 0
+1.6198e+07 -8422.6 0
+1.6183e+07 -93242 0
+1.6197e+07 -187360 0
+1.6242e+07 -290000 0
+1.6322e+07 -400010 0
+1.6439e+07 -515830 0
+1.6593e+07 -635500 0
+1.6786e+07 -756620 0
+1.7017e+07 -876380 0
+1.7286e+07 -991580 0
+1.7589e+07 -1.0987e+06 0
+1.7924e+07 -1.1939e+06 0
+1.8286e+07 -1.2733e+06 0
+1.8669e+07 -1.3329e+06 0
+1.9066e+07 -1.3689e+06 0
+1.9468e+07 -1.3778e+06 0
+1.9868e+07 -1.3566e+06 0
+2.0254e+07 -1.3031e+06 0
+2.0616e+07 -1.216e+06 0
+2.0944e+07 -1.0951e+06 0
+2.1226e+07 -941430 0
+2.1453e+07 -757470 0
+2.1615e+07 -546940 0
+2.1704e+07 -314830 0
+2.1714e+07 -67237 0
+2.1641e+07 188950 0
+2.1482e+07 446370 0
+2.124e+07 697540 0
+2.0915e+07 935340 0
+2.0515e+07 1.1533e+06 0
+2.0045e+07 1.3462e+06 0
+1.9516e+07 1.5099e+06 0
+1.8936e+07 1.642e+06 0
+1.8316e+07 1.7416e+06 0
+1.7667e+07 1.8092e+06 0
+1.7e+07 1.8467e+06 0
+1.6325e+07 1.857e+06 0
+1.5648e+07 1.8441e+06 0
+1.4979e+07 1.8119e+06 0
+1.4323e+07 1.7649e+06 0
+1.3683e+07 1.7073e+06 0
+1.3064e+07 1.6427e+06 0
+1.2468e+07 1.5746e+06 0
+1.1894e+07 1.5057e+06 0
+1.1344e+07 1.4381e+06 0
+1.0817e+07 1.3734e+06 0
+1.0312e+07 1.3124e+06 0
+9.8276e+06 1.2559e+06 0
+9.3626e+06 1.204e+06 0
+8.9156e+06 1.1566e+06 0
+8.4851e+06 1.1136e+06 0
+8.0698e+06 1.0747e+06 0
+7.6684e+06 1.0394e+06 0
+7.2796e+06 1.0075e+06 0
+6.9024e+06 978550 0
+6.5358e+06 952240 0
+6.1787e+06 928310 0
+5.8304e+06 906520 0
+5.49e+06 886700 0
+5.1567e+06 868670 0
+4.8298e+06 852320 0
+4.5087e+06 837530 0
+4.1928e+06 824210 0
+3.8814e+06 812290 0
+3.574e+06 801680 0
+3.2702e+06 792330 0
+2.9693e+06 784180 0
+2.671e+06 777160 0
+2.3749e+06 771210 0
+2.0805e+06 766300 0
+1.7875e+06 762360 0
+1.4955e+06 759360 0
+1.2043e+06 757260 0
+913430 756020 0
+622720 755610 0
+331860 756010 0
+40581 757190 0
+-251360 759150 0
+-544220 761880 0
+-838230 765360 0
+-1.1336e+06 769590 0
+-1.4307e+06 774590 0
+-1.7296e+06 780340 0
+-2.0307e+06 786870 0
+-2.3341e+06 794190 0
+-2.6401e+06 802310 0
+-2.9491e+06 811250 0
+-3.2611e+06 821040 0
+-3.5766e+06 831710 0
+-3.8959e+06 843280 0
+-4.2191e+06 855780 0
+-4.5467e+06 869250 0
+-4.8789e+06 883710 0
+-5.2162e+06 899190 0
+-5.5588e+06 915710 0
+-5.9071e+06 933300 0
+-6.2615e+06 951950 0
+-6.6223e+06 971670 0
+-6.99e+06 992450 0
+-7.3649e+06 1.0143e+06 0
+-7.7473e+06 1.0371e+06 0
+-8.1377e+06 1.0608e+06 0
+-8.5362e+06 1.0854e+06 0
+-8.9433e+06 1.1109e+06 0
+-9.3592e+06 1.1372e+06 0
+-9.7842e+06 1.1642e+06 0
+-1.0219e+07 1.1922e+06 0
+-1.0662e+07 1.2211e+06 0
+-1.1116e+07 1.2514e+06 0
+-1.1581e+07 1.2833e+06 0
+-1.2056e+07 1.3178e+06 0
+-1.2542e+07 1.3557e+06 0
+-1.3041e+07 1.3983e+06 0
+-1.3554e+07 1.4476e+06 0
+-1.4083e+07 1.5058e+06 0
+-1.4629e+07 1.5756e+06 0
+-1.5197e+07 1.6603e+06 0
+-1.5791e+07 1.7637e+06 0
+-1.6414e+07 1.8898e+06 0
+-1.7072e+07 2.043e+06 0
+-1.7773e+07 2.2276e+06 0
+-1.8522e+07 2.4476e+06 0
+-1.9329e+07 2.7061e+06 0
+-2.0201e+07 3.0052e+06 0
+-2.1146e+07 3.3455e+06 0
+-2.2172e+07 3.7253e+06 0
+-2.3284e+07 4.1404e+06 0
+-2.4488e+07 4.5839e+06 0
+-2.5783e+07 5.046e+06 0
+-2.717e+07 5.5137e+06 0
+-2.8643e+07 5.9715e+06 0
+-3.0194e+07 6.4019e+06 0
+-3.1809e+07 6.7858e+06 0
+-3.3471e+07 7.1039e+06 0
+-3.5159e+07 7.3374e+06 0
+-3.685e+07 7.4695e+06 0
+-3.8518e+07 7.4864e+06 0
+-4.0134e+07 7.3781e+06 0
+-4.1673e+07 7.1394e+06 0
+-4.3107e+07 6.77e+06 0
+-4.4413e+07 6.2749e+06 0
+-4.557e+07 5.664e+06 0
+-4.6561e+07 4.9516e+06 0
+-4.7373e+07 4.1554e+06 0
+-4.7998e+07 3.2958e+06 0
+-4.8432e+07 2.3945e+06 0
+-4.8676e+07 1.4738e+06 0
+-4.8735e+07 555080 0
+-4.8617e+07 -341580 0
+-4.8333e+07 -1.1983e+06 0
+-4.7898e+07 -1.9999e+06 0
+-4.7325e+07 -2.7338e+06 0
+-4.6633e+07 -3.3903e+06 0
+-4.5837e+07 -3.9625e+06 0
+-4.4956e+07 -4.4461e+06 0
+-4.4007e+07 -4.8396e+06 0
+-4.3007e+07 -5.1438e+06 0
+-4.1971e+07 -5.362e+06 0
+-4.0916e+07 -5.4993e+06 0
+-3.9855e+07 -5.562e+06 0
+-3.8799e+07 -5.5574e+06 0
+-3.776e+07 -5.4926e+06 0
+-3.6747e+07 -5.3749e+06 0
+-3.5769e+07 -5.2116e+06 0
+-3.4833e+07 -5.0099e+06 0
+-3.3945e+07 -4.7773e+06 0
+-3.311e+07 -4.521e+06 0
+-3.2331e+07 -4.2476e+06 0
+-3.1611e+07 -3.9625e+06 0
+-3.0953e+07 -3.6702e+06 0
+-3.0356e+07 -3.3746e+06 0
+-2.9823e+07 -3.0799e+06 0
+-2.9352e+07 -2.7905e+06 0
+-2.8943e+07 -2.5108e+06 0
+-2.8593e+07 -2.2437e+06 0
+-2.8299e+07 -1.9899e+06 0
+-2.8058e+07 -1.7473e+06 0
+-2.7866e+07 -1.5126e+06 0
+-2.772e+07 -1.2833e+06 0
+-2.7618e+07 -1.0598e+06 0
+-2.7556e+07 -846100 0
+-2.7531e+07 -647670 0
+-2.7538e+07 -468840 0
+-2.7573e+07 -309910 0
+-2.7635e+07 -166870 0
+-2.772e+07 -33849 0
+-2.7827e+07 93196 0
+-2.7952e+07 213910 0
+-2.8091e+07 324000 0
+-2.8237e+07 418380 0
+-2.8384e+07 494850 0
+-2.853e+07 555410 0
+-2.8675e+07 604350 0
+-2.8824e+07 644700 0
+-2.8979e+07 676120 0
+-2.9138e+07 696190 0
+-2.9293e+07 703890 0
+-2.9438e+07 701960 0
+-2.9565e+07 695370 0
+-2.9677e+07 686410 0
+-2.9778e+07 670890 0
+-2.9874e+07 639820 0
+-2.9963e+07 587040 0
+-3.0036e+07 517210 0
+-3.008e+07 446330 0
+-3.0087e+07 391530 0
+-3.0061e+07 355990 0
+-3.0013e+07 321250 0
+-2.9955e+07 256520 0
+-2.989e+07 142090 0
+-2.9808e+07 -9097.3 0
+-2.9692e+07 -151110 0
+-2.9534e+07 -231790 0
+-2.9341e+07 -231890 0
+-2.9136e+07 -187690 0
+-2.8943e+07 -175670 0
+-2.8766e+07 -263710 0
+-2.8588e+07 -460400 0
+-2.8378e+07 -700320 0
+-2.8107e+07 -881170 0
+-2.7772e+07 -931260 0
+-2.74e+07 -861240 0
+-2.7034e+07 -761770 0
+-2.6705e+07 -745300 0
+-2.6415e+07 -870320 0
+-2.6133e+07 -1.0998e+06 0
+-2.5812e+07 -1.3222e+06 0
+-2.5417e+07 -1.4217e+06 0
+-2.495e+07 -1.349e+06 0
+-2.4448e+07 -1.1491e+06 0
+-2.3973e+07 -931510 0
+-2.3577e+07 -805640 0
+-2.3279e+07 -825750 0
+-2.3062e+07 -974100 0
+-2.2879e+07 -1.1844e+06 0
+-2.2679e+07 -1.3824e+06 0
+2.5218e+07 327720 0
+2.5039e+07 340670 0
+2.4859e+07 353230 0
+2.4682e+07 361870 0
+2.4513e+07 362400 0
+2.4356e+07 351120 0
+2.4213e+07 325960 0
+2.4087e+07 287200 0
+2.398e+07 237480 0
+2.3891e+07 181160 0
+2.3821e+07 123070 0
+2.3768e+07 67317 0
+2.3732e+07 16361 0
+2.3712e+07 -29306 0
+2.3707e+07 -70888 0
+2.3719e+07 -110550 0
+2.3748e+07 -150540 0
+2.3794e+07 -192460 0
+2.3857e+07 -236840 0
+2.3939e+07 -283160 0
+2.4038e+07 -330100 0
+2.4153e+07 -376010 0
+2.4285e+07 -419280 0
+2.4431e+07 -458640 0
+2.459e+07 -493260 0
+2.4761e+07 -522740 0
+2.4943e+07 -547030 0
+2.5135e+07 -566310 0
+2.5334e+07 -580910 0
+2.554e+07 -591170 0
+2.575e+07 -597340 0
+2.5963e+07 -599550 0
+2.6178e+07 -597700 0
+2.6393e+07 -591550 0
+2.6607e+07 -580700 0
+2.6817e+07 -564820 0
+2.7022e+07 -543680 0
+2.7221e+07 -517300 0
+2.7411e+07 -485940 0
+2.7591e+07 -450120 0
+2.7759e+07 -410490 0
+2.7914e+07 -367710 0
+2.8054e+07 -322350 0
+2.8178e+07 -274800 0
+2.8286e+07 -225270 0
+2.8375e+07 -173860 0
+2.8446e+07 -120680 0
+2.8497e+07 -65948 0
+2.8528e+07 -10074 0
+2.8538e+07 46288 0
+2.8526e+07 102290 0
+2.8493e+07 157000 0
+2.8439e+07 209450 0
+2.8364e+07 258800 0
+2.8269e+07 304330 0
+2.8156e+07 345420 0
+2.8026e+07 381510 0
+2.788e+07 412010 0
+2.7721e+07 436260 0
+2.755e+07 453460 0
+2.7371e+07 462720 0
+2.7185e+07 463120 0
+2.6997e+07 453730 0
+2.6809e+07 433680 0
+2.6626e+07 402210 0
+2.6451e+07 358650 0
+2.6288e+07 302500 0
+2.6141e+07 233390 0
+2.6015e+07 151140 0
+2.5913e+07 55800 0
+2.5839e+07 -52306 0
+2.5797e+07 -172500 0
+2.5789e+07 -303690 0
+2.582e+07 -444330 0
+2.5889e+07 -592400 0
+2.6e+07 -745330 0
+2.6153e+07 -900030 0
+2.6347e+07 -1.0529e+06 0
+2.6581e+07 -1.1999e+06 0
+2.6852e+07 -1.3365e+06 0
+2.7157e+07 -1.4579e+06 0
+2.749e+07 -1.5592e+06 0
+2.7845e+07 -1.6354e+06 0
+2.8215e+07 -1.6816e+06 0
+2.8591e+07 -1.6934e+06 0
+2.8962e+07 -1.667e+06 0
+2.9319e+07 -1.5993e+06 0
+2.9649e+07 -1.4886e+06 0
+2.994e+07 -1.3344e+06 0
+3.018e+07 -1.1379e+06 0
+3.0357e+07 -901740 0
+3.0461e+07 -630540 0
+3.048e+07 -330440 0
+3.0407e+07 -9055 0
+3.0236e+07 324870 0
+2.9964e+07 661840 0
+2.959e+07 992170 0
+2.9117e+07 1.3064e+06 0
+2.855e+07 1.596e+06 0
+2.7896e+07 1.8537e+06 0
+2.7166e+07 2.0739e+06 0
+2.6372e+07 2.253e+06 0
+2.5527e+07 2.3894e+06 0
+2.4643e+07 2.4836e+06 0
+2.3734e+07 2.5378e+06 0
+2.2812e+07 2.5557e+06 0
+2.1887e+07 2.5422e+06 0
+2.097e+07 2.5026e+06 0
+2.0068e+07 2.4426e+06 0
+1.9186e+07 2.3677e+06 0
+1.833e+07 2.2829e+06 0
+1.7503e+07 2.1927e+06 0
+1.6705e+07 2.1008e+06 0
+1.5937e+07 2.01e+06 0
+1.5199e+07 1.9224e+06 0
+1.4491e+07 1.8394e+06 0
+1.3811e+07 1.7619e+06 0
+1.3157e+07 1.6903e+06 0
+1.2528e+07 1.6245e+06 0
+1.1922e+07 1.5644e+06 0
+1.1338e+07 1.5097e+06 0
+1.0773e+07 1.4599e+06 0
+1.0227e+07 1.4147e+06 0
+9.6972e+06 1.3735e+06 0
+9.1828e+06 1.3361e+06 0
+8.6823e+06 1.3021e+06 0
+8.1943e+06 1.2711e+06 0
+7.7176e+06 1.243e+06 0
+7.2512e+06 1.2176e+06 0
+6.7938e+06 1.1946e+06 0
+6.3445e+06 1.1739e+06 0
+5.9023e+06 1.1554e+06 0
+5.4663e+06 1.1389e+06 0
+5.0356e+06 1.1244e+06 0
+4.6096e+06 1.1117e+06 0
+4.1875e+06 1.1007e+06 0
+3.7686e+06 1.0913e+06 0
+3.3523e+06 1.0834e+06 0
+2.9381e+06 1.0769e+06 0
+2.5255e+06 1.0718e+06 0
+2.1141e+06 1.068e+06 0
+1.7033e+06 1.0654e+06 0
+1.2929e+06 1.0639e+06 0
+882420 1.0636e+06 0
+471600 1.0643e+06 0
+60126 1.066e+06 0
+-352310 1.0687e+06 0
+-765990 1.0724e+06 0
+-1.1812e+06 1.0771e+06 0
+-1.5982e+06 1.0828e+06 0
+-2.0172e+06 1.0894e+06 0
+-2.4385e+06 1.097e+06 0
+-2.8624e+06 1.1056e+06 0
+-3.2892e+06 1.1152e+06 0
+-3.7191e+06 1.1258e+06 0
+-4.1524e+06 1.1375e+06 0
+-4.5895e+06 1.1503e+06 0
+-5.0306e+06 1.1642e+06 0
+-5.4761e+06 1.1793e+06 0
+-5.9263e+06 1.1956e+06 0
+-6.3817e+06 1.2132e+06 0
+-6.8425e+06 1.232e+06 0
+-7.3094e+06 1.2523e+06 0
+-7.7826e+06 1.2739e+06 0
+-8.2627e+06 1.2969e+06 0
+-8.7501e+06 1.3214e+06 0
+-9.2454e+06 1.3473e+06 0
+-9.749e+06 1.3747e+06 0
+-1.0262e+07 1.4035e+06 0
+-1.0783e+07 1.4336e+06 0
+-1.1315e+07 1.4651e+06 0
+-1.1857e+07 1.4978e+06 0
+-1.241e+07 1.5317e+06 0
+-1.2974e+07 1.5667e+06 0
+-1.355e+07 1.6028e+06 0
+-1.4138e+07 1.6401e+06 0
+-1.4738e+07 1.6786e+06 0
+-1.5351e+07 1.7187e+06 0
+-1.5978e+07 1.7609e+06 0
+-1.6618e+07 1.806e+06 0
+-1.7272e+07 1.8551e+06 0
+-1.7942e+07 1.9097e+06 0
+-1.8627e+07 1.9719e+06 0
+-1.933e+07 2.0443e+06 0
+-2.0052e+07 2.13e+06 0
+-2.0796e+07 2.2327e+06 0
+-2.1564e+07 2.3568e+06 0
+-2.236e+07 2.5069e+06 0
+-2.3187e+07 2.6879e+06 0
+-2.4051e+07 2.9046e+06 0
+-2.4957e+07 3.1614e+06 0
+-2.5909e+07 3.4618e+06 0
+-2.6915e+07 3.8079e+06 0
+-2.7978e+07 4.1999e+06 0
+-2.9104e+07 4.6355e+06 0
+-3.0295e+07 5.1094e+06 0
+-3.1555e+07 5.6131e+06 0
+-3.2881e+07 6.1346e+06 0
+-3.427e+07 6.6586e+06 0
+-3.5715e+07 7.1668e+06 0
+-3.7207e+07 7.6385e+06 0
+-3.873e+07 8.0518e+06 0
+-4.0268e+07 8.3846e+06 0
+-4.18e+07 8.6158e+06 0
+-4.3306e+07 8.727e+06 0
+-4.4761e+07 8.7035e+06 0
+-4.6143e+07 8.5353e+06 0
+-4.743e+07 8.2183e+06 0
+-4.8603e+07 7.754e+06 0
+-4.9645e+07 7.1501e+06 0
+-5.0546e+07 6.4197e+06 0
+-5.1297e+07 5.5804e+06 0
+-5.1894e+07 4.6536e+06 0
+-5.234e+07 3.6632e+06 0
+-5.2639e+07 2.634e+06 0
+-5.28e+07 1.591e+06 0
+-5.2832e+07 557880 0
+-5.2748e+07 -443780 0
+-5.2561e+07 -1.395e+06 0
+-5.2286e+07 -2.2799e+06 0
+-5.1935e+07 -3.0857e+06 0
+-5.1521e+07 -3.803e+06 0
+-5.1057e+07 -4.4249e+06 0
+-5.0555e+07 -4.9478e+06 0
+-5.0025e+07 -5.3706e+06 0
+-4.9476e+07 -5.6948e+06 0
+-4.8917e+07 -5.9246e+06 0
+-4.8357e+07 -6.0657e+06 0
+-4.7801e+07 -6.1254e+06 0
+-4.7256e+07 -6.1115e+06 0
+-4.6729e+07 -6.032e+06 0
+-4.6222e+07 -5.8946e+06 0
+-4.5742e+07 -5.7073e+06 0
+-4.529e+07 -5.4779e+06 0
+-4.4872e+07 -5.2147e+06 0
+-4.4489e+07 -4.9254e+06 0
+-4.4142e+07 -4.6171e+06 0
+-4.3834e+07 -4.2954e+06 0
+-4.3567e+07 -3.965e+06 0
+-4.3343e+07 -3.6298e+06 0
+-4.3164e+07 -3.2943e+06 0
+-4.303e+07 -2.9635e+06 0
+-4.2943e+07 -2.6426e+06 0
+-4.2901e+07 -2.3357e+06 0
+-4.2903e+07 -2.0446e+06 0
+-4.2943e+07 -1.7679e+06 0
+-4.3018e+07 -1.5028e+06 0
+-4.3122e+07 -1.2469e+06 0
+-4.325e+07 -1.0004e+06 0
+-4.3398e+07 -766880 0
+-4.3561e+07 -551460 0
+-4.3738e+07 -357780 0
+-4.3927e+07 -185470 0
+-4.4128e+07 -30049 0
+-4.4339e+07 114190 0
+-4.4559e+07 250190 0
+-4.4781e+07 375720 0
+-4.4999e+07 484720 0
+-4.5204e+07 571850 0
+-4.5392e+07 636870 0
+-4.5559e+07 685680 0
+-4.5712e+07 726360 0
+-4.5855e+07 763240 0
+-4.5993e+07 793430 0
+-4.6123e+07 809100 0
+-4.6238e+07 804430 0
+-4.6325e+07 781560 0
+-4.6377e+07 750270 0
+-4.6398e+07 720520 0
+-4.6399e+07 693390 0
+-4.6392e+07 658390 0
+-4.6382e+07 601020 0
+-4.6358e+07 515840 0
+-4.63e+07 414320 0
+-4.6191e+07 318980 0
+-4.6029e+07 245790 0
+-4.583e+07 188270 0
+-4.5618e+07 117980 0
+-4.541e+07 5446.1 0
+-4.5203e+07 -152210 0
+-4.4974e+07 -319480 0
+-4.47e+07 -440820 0
+-4.4369e+07 -480770 0
+-4.3998e+07 -457330 0
+-4.3622e+07 -440010 0
+-4.3268e+07 -507410 0
+-4.2942e+07 -690650 0
+-4.2619e+07 -943830 0
+-4.226e+07 -1.1671e+06 0
+-4.1837e+07 -1.2711e+06 0
+-4.1356e+07 -1.2388e+06 0
+-4.0855e+07 -1.1409e+06 0
+-4.0382e+07 -1.0915e+06 0
+-3.9965e+07 -1.1728e+06 0
+-3.9595e+07 -1.3801e+06 0
+-3.9223e+07 -1.6234e+06 0
+-3.8792e+07 -1.7834e+06 0
+-3.827e+07 -1.7837e+06 0
+-3.7665e+07 -1.6328e+06 0
+-3.7032e+07 -1.4133e+06 0
+-3.644e+07 -1.2321e+06 0
+-3.5946e+07 -1.1651e+06 0
+-3.5568e+07 -1.2278e+06 0
+-3.5286e+07 -1.3816e+06 0
+-3.5053e+07 -1.564e+06 0
+3.0921e+07 491010 0
+3.0712e+07 504420 0
+3.0506e+07 514280 0
+3.0307e+07 516920 0
+3.012e+07 508460 0
+2.9946e+07 485850 0
+2.9788e+07 447860 0
+2.9646e+07 395560 0
+2.952e+07 332230 0
+2.941e+07 262590 0
+2.9315e+07 191580 0
+2.9235e+07 123150 0
+2.917e+07 59480 0
+2.9121e+07 704.14 0
+2.9089e+07 -54650 0
+2.9075e+07 -108850 0
+2.908e+07 -164040 0
+2.9105e+07 -221500 0
+2.9149e+07 -281380 0
+2.9213e+07 -342770 0
+2.9294e+07 -404050 0
+2.9393e+07 -463460 0
+2.9507e+07 -519390 0
+2.9636e+07 -570610 0
+2.9779e+07 -616350 0
+2.9936e+07 -656170 0
+3.0105e+07 -689930 0
+3.0286e+07 -717670 0
+3.0476e+07 -739580 0
+3.0674e+07 -755870 0
+3.088e+07 -766790 0
+3.1091e+07 -772420 0
+3.1305e+07 -772710 0
+3.1521e+07 -767400 0
+3.1738e+07 -756100 0
+3.1953e+07 -738420 0
+3.2166e+07 -714090 0
+3.2373e+07 -683070 0
+3.2575e+07 -645640 0
+3.2768e+07 -602320 0
+3.2951e+07 -553820 0
+3.3123e+07 -500890 0
+3.3281e+07 -444170 0
+3.3425e+07 -384160 0
+3.3552e+07 -321150 0
+3.3663e+07 -255300 0
+3.3755e+07 -186790 0
+3.3827e+07 -115890 0
+3.3879e+07 -43133 0
+3.3909e+07 30676 0
+3.3918e+07 104500 0
+3.3904e+07 177150 0
+3.3868e+07 247430 0
+3.3811e+07 314260 0
+3.3732e+07 376670 0
+3.3632e+07 433840 0
+3.3513e+07 484990 0
+3.3376e+07 529290 0
+3.3222e+07 565830 0
+3.3054e+07 593560 0
+3.2875e+07 611320 0
+3.2686e+07 617930 0
+3.2491e+07 612250 0
+3.2293e+07 593240 0
+3.2095e+07 559990 0
+3.19e+07 511790 0
+3.1713e+07 448080 0
+3.1536e+07 368510 0
+3.1372e+07 272970 0
+3.1225e+07 161620 0
+3.1098e+07 34989 0
+3.0993e+07 -106010 0
+3.0913e+07 -259970 0
+3.0859e+07 -424980 0
+3.0833e+07 -598530 0
+3.0835e+07 -777580 0
+3.0865e+07 -958450 0
+3.0924e+07 -1.1369e+06 0
+3.1009e+07 -1.3083e+06 0
+3.1119e+07 -1.4674e+06 0
+3.1252e+07 -1.6087e+06 0
+3.1403e+07 -1.7264e+06 0
+3.1568e+07 -1.8149e+06 0
+3.1742e+07 -1.8684e+06 0
+3.1919e+07 -1.8818e+06 0
+3.2092e+07 -1.8504e+06 0
+3.2253e+07 -1.7705e+06 0
+3.2393e+07 -1.6398e+06 0
+3.2504e+07 -1.4572e+06 0
+3.2575e+07 -1.2238e+06 0
+3.2597e+07 -942200 0
+3.2559e+07 -617420 0
+3.2452e+07 -256330 0
+3.2269e+07 132320 0
+3.2002e+07 538250 0
+3.1648e+07 950120 0
+3.1204e+07 1.3561e+06 0
+3.0671e+07 1.7445e+06 0
+3.0052e+07 2.1045e+06 0
+2.9354e+07 2.4268e+06 0
+2.8585e+07 2.7039e+06 0
+2.7755e+07 2.9309e+06 0
+2.6876e+07 3.1054e+06 0
+2.596e+07 3.2275e+06 0
+2.5019e+07 3.2997e+06 0
+2.4064e+07 3.3262e+06 0
+2.3107e+07 3.3128e+06 0
+2.2156e+07 3.2662e+06 0
+2.1219e+07 3.1934e+06 0
+2.0302e+07 3.1011e+06 0
+1.941e+07 2.9957e+06 0
+1.8544e+07 2.8828e+06 0
+1.7707e+07 2.7669e+06 0
+1.69e+07 2.6517e+06 0
+1.6123e+07 2.5398e+06 0
+1.5376e+07 2.4332e+06 0
+1.4657e+07 2.3329e+06 0
+1.3964e+07 2.2396e+06 0
+1.3298e+07 2.1533e+06 0
+1.2656e+07 2.074e+06 0
+1.2037e+07 2.0014e+06 0
+1.1439e+07 1.9351e+06 0
+1.0861e+07 1.8745e+06 0
+1.03e+07 1.8193e+06 0
+9.7564e+06 1.769e+06 0
+9.2275e+06 1.7233e+06 0
+8.7121e+06 1.6819e+06 0
+8.2087e+06 1.6443e+06 0
+7.7162e+06 1.6105e+06 0
+7.2332e+06 1.5801e+06 0
+6.7586e+06 1.5529e+06 0
+6.2911e+06 1.5288e+06 0
+5.8299e+06 1.5074e+06 0
+5.3738e+06 1.4888e+06 0
+4.9222e+06 1.4726e+06 0
+4.4741e+06 1.4587e+06 0
+4.0289e+06 1.4471e+06 0
+3.5859e+06 1.4374e+06 0
+3.1446e+06 1.4296e+06 0
+2.7044e+06 1.4235e+06 0
+2.265e+06 1.4191e+06 0
+1.8259e+06 1.4162e+06 0
+1.3868e+06 1.4147e+06 0
+947400 1.4146e+06 0
+507380 1.4158e+06 0
+66519 1.4182e+06 0
+-375410 1.4219e+06 0
+-818630 1.4267e+06 0
+-1.2633e+06 1.4326e+06 0
+-1.7097e+06 1.4397e+06 0
+-2.1579e+06 1.4479e+06 0
+-2.6082e+06 1.4573e+06 0
+-3.0606e+06 1.4678e+06 0
+-3.5156e+06 1.4795e+06 0
+-3.9731e+06 1.4925e+06 0
+-4.4335e+06 1.5066e+06 0
+-4.8969e+06 1.5221e+06 0
+-5.3637e+06 1.539e+06 0
+-5.8341e+06 1.5572e+06 0
+-6.3084e+06 1.577e+06 0
+-6.7869e+06 1.5982e+06 0
+-7.27e+06 1.6211e+06 0
+-7.758e+06 1.6457e+06 0
+-8.2514e+06 1.672e+06 0
+-8.7506e+06 1.7001e+06 0
+-9.2561e+06 1.73e+06 0
+-9.7684e+06 1.7618e+06 0
+-1.0288e+07 1.7955e+06 0
+-1.0815e+07 1.831e+06 0
+-1.1351e+07 1.8683e+06 0
+-1.1896e+07 1.9074e+06 0
+-1.245e+07 1.9481e+06 0
+-1.3015e+07 1.9904e+06 0
+-1.3589e+07 2.0343e+06 0
+-1.4175e+07 2.0796e+06 0
+-1.4773e+07 2.1265e+06 0
+-1.5382e+07 2.175e+06 0
+-1.6004e+07 2.2253e+06 0
+-1.6639e+07 2.2781e+06 0
+-1.7287e+07 2.3341e+06 0
+-1.7948e+07 2.3944e+06 0
+-1.8623e+07 2.4606e+06 0
+-1.9313e+07 2.5349e+06 0
+-2.0017e+07 2.6199e+06 0
+-2.0737e+07 2.719e+06 0
+-2.1472e+07 2.8361e+06 0
+-2.2224e+07 2.9757e+06 0
+-2.2995e+07 3.1428e+06 0
+-2.3784e+07 3.3424e+06 0
+-2.4595e+07 3.5798e+06 0
+-2.5429e+07 3.8596e+06 0
+-2.6288e+07 4.1853e+06 0
+-2.7175e+07 4.5593e+06 0
+-2.8092e+07 4.9816e+06 0
+-2.904e+07 5.4493e+06 0
+-3.0023e+07 5.9566e+06 0
+-3.1039e+07 6.4939e+06 0
+-3.2088e+07 7.0477e+06 0
+-3.3168e+07 7.6008e+06 0
+-3.4273e+07 8.133e+06 0
+-3.5395e+07 8.6212e+06 0
+-3.6524e+07 9.0413e+06 0
+-3.7647e+07 9.369e+06 0
+-3.875e+07 9.5818e+06 0
+-3.9815e+07 9.66e+06 0
+-4.0826e+07 9.5888e+06 0
+-4.1767e+07 9.3591e+06 0
+-4.2624e+07 8.9681e+06 0
+-4.3385e+07 8.42e+06 0
+-4.4043e+07 7.7255e+06 0
+-4.4593e+07 6.901e+06 0
+-4.5037e+07 5.9678e+06 0
+-4.538e+07 4.9507e+06 0
+-4.563e+07 3.8764e+06 0
+-4.58e+07 2.7721e+06 0
+-4.5902e+07 1.6642e+06 0
+-4.5952e+07 577310 0
+-4.5963e+07 -466800 0
+-4.595e+07 -1.4497e+06 0
+-4.5924e+07 -2.3565e+06 0
+-4.5897e+07 -3.1758e+06 0
+-4.5875e+07 -3.8994e+06 0
+-4.5865e+07 -4.5222e+06 0
+-4.587e+07 -5.0417e+06 0
+-4.5893e+07 -5.4582e+06 0
+-4.5934e+07 -5.774e+06 0
+-4.5994e+07 -5.9941e+06 0
+-4.607e+07 -6.1247e+06 0
+-4.6162e+07 -6.1735e+06 0
+-4.6269e+07 -6.1484e+06 0
+-4.6388e+07 -6.0573e+06 0
+-4.652e+07 -5.9083e+06 0
+-4.6663e+07 -5.7092e+06 0
+-4.6815e+07 -5.4681e+06 0
+-4.6975e+07 -5.1933e+06 0
+-4.7143e+07 -4.8926e+06 0
+-4.7317e+07 -4.5727e+06 0
+-4.7499e+07 -4.2388e+06 0
+-4.7688e+07 -3.8949e+06 0
+-4.7888e+07 -3.5444e+06 0
+-4.8101e+07 -3.1915e+06 0
+-4.833e+07 -2.8413e+06 0
+-4.8577e+07 -2.4997e+06 0
+-4.8843e+07 -2.1721e+06 0
+-4.9128e+07 -1.8616e+06 0
+-4.9428e+07 -1.5687e+06 0
+-4.9738e+07 -1.2917e+06 0
+-5.0052e+07 -1.029e+06 0
+-5.0364e+07 -780540 0
+-5.0668e+07 -548520 0
+-5.0963e+07 -336310 0
+-5.1248e+07 -145870 0
+-5.1526e+07 24095 0
+-5.1796e+07 177790 0
+-5.206e+07 319560 0
+-5.2314e+07 450250 0
+-5.2552e+07 565610 0
+-5.2768e+07 658560 0
+-5.2956e+07 724410 0
+-5.3112e+07 765510 0
+-5.3236e+07 791410 0
+-5.3333e+07 813330 0
+-5.3409e+07 836230 0
+-5.3466e+07 854440 0
+-5.3502e+07 855090 0
+-5.351e+07 827900 0
+-5.3481e+07 774580 0
+-5.3409e+07 709850 0
+-5.3299e+07 651900 0
+-5.3163e+07 608290 0
+-5.3017e+07 568360 0
+-5.2869e+07 509480 0
+-5.2714e+07 414340 0
+-5.2535e+07 286460 0
+-5.2312e+07 150650 0
+-5.2037e+07 35515 0
+-5.1723e+07 -49815 0
+-5.1395e+07 -125600 0
+-5.1077e+07 -227270 0
+-5.0777e+07 -375100 0
+-5.0479e+07 -551440 0
+-5.0151e+07 -706460 0
+-4.977e+07 -793100 0
+-4.9336e+07 -806920 0
+-4.8876e+07 -798740 0
+-4.8431e+07 -845300 0
+-4.8027e+07 -995000 0
+-4.7664e+07 -1.2277e+06 0
+-4.731e+07 -1.461e+06 0
+-4.6927e+07 -1.602e+06 0
+-4.6495e+07 -1.6112e+06 0
+-4.603e+07 -1.5318e+06 0
+-4.557e+07 -1.4636e+06 0
+-4.5158e+07 -1.4982e+06 0
+-4.4809e+07 -1.6597e+06 0
+-4.4496e+07 -1.8894e+06 0
+-4.4169e+07 -2.0829e+06 0
+-4.3773e+07 -2.1516e+06 0
+-4.3289e+07 -2.0714e+06 0
+-4.2738e+07 -1.889e+06 0
+-4.2179e+07 -1.6909e+06 0
+-4.1678e+07 -1.557e+06 0
+-4.1281e+07 -1.5269e+06 0
+-4.0998e+07 -1.5934e+06 0
+-4.0807e+07 -1.7168e+06 0
+3.0198e+07 649940 0
+3.0009e+07 661170 0
+2.9826e+07 665920 0
+2.9653e+07 660970 0
+2.9489e+07 643250 0
+2.9338e+07 610640 0
+2.9198e+07 562740 0
+2.9067e+07 501170 0
+2.8946e+07 429370 0
+2.8832e+07 351780 0
+2.8727e+07 272860 0
+2.863e+07 195970 0
+2.8543e+07 122720 0
+2.8468e+07 52949 0
+2.8408e+07 -14869 0
+2.8363e+07 -82742 0
+2.8336e+07 -152320 0
+2.8326e+07 -224300 0
+2.8332e+07 -298260 0
+2.8355e+07 -372900 0
+2.8392e+07 -446490 0
+2.8443e+07 -517330 0
+2.8506e+07 -584030 0
+2.8582e+07 -645630 0
+2.8669e+07 -701480 0
+2.8769e+07 -751180 0
+2.888e+07 -794440 0
+2.9003e+07 -831090 0
+2.9136e+07 -861060 0
+2.9278e+07 -884410 0
+2.9428e+07 -901250 0
+2.9585e+07 -911670 0
+2.9747e+07 -915620 0
+2.9913e+07 -912860 0
+3.0082e+07 -903030 0
+3.0252e+07 -885750 0
+3.0423e+07 -860720 0
+3.0593e+07 -827870 0
+3.076e+07 -787400 0
+3.0924e+07 -739810 0
+3.1082e+07 -685770 0
+3.1234e+07 -626040 0
+3.1377e+07 -561300 0
+3.1511e+07 -492110 0
+3.1633e+07 -418850 0
+3.1743e+07 -341770 0
+3.184e+07 -261110 0
+3.1923e+07 -177250 0
+3.199e+07 -90797 0
+3.2041e+07 -2661.8 0
+3.2075e+07 85975 0
+3.2092e+07 173770 0
+3.2091e+07 259340 0
+3.2072e+07 341410 0
+3.2036e+07 418840 0
+3.1983e+07 490590 0
+3.1913e+07 555710 0
+3.1826e+07 613160 0
+3.1726e+07 661810 0
+3.1611e+07 700390 0
+3.1485e+07 727540 0
+3.1348e+07 741920 0
+3.1202e+07 742240 0
+3.1051e+07 727410 0
+3.0894e+07 696490 0
+3.0735e+07 648780 0
+3.0574e+07 583810 0
+3.0415e+07 501300 0
+3.0257e+07 401290 0
+3.0103e+07 284110 0
+2.9953e+07 150460 0
+2.9808e+07 1487.9 0
+2.9669e+07 -161160 0
+2.9536e+07 -335320 0
+2.9409e+07 -518250 0
+2.9288e+07 -706660 0
+2.9172e+07 -896650 0
+2.9061e+07 -1.0838e+06 0
+2.8954e+07 -1.2632e+06 0
+2.8852e+07 -1.4295e+06 0
+2.8752e+07 -1.5769e+06 0
+2.8655e+07 -1.6996e+06 0
+2.8559e+07 -1.7914e+06 0
+2.8464e+07 -1.8466e+06 0
+2.8368e+07 -1.8593e+06 0
+2.8269e+07 -1.8246e+06 0
+2.8165e+07 -1.7382e+06 0
+2.8052e+07 -1.597e+06 0
+2.7926e+07 -1.3996e+06 0
+2.7783e+07 -1.1461e+06 0
+2.7617e+07 -839010 0
+2.7422e+07 -482850 0
+2.7191e+07 -84559 0
+2.6917e+07 346730 0
+2.6594e+07 799990 0
+2.6219e+07 1.2627e+06 0
+2.5787e+07 1.7215e+06 0
+2.5297e+07 2.163e+06 0
+2.475e+07 2.5745e+06 0
+2.4149e+07 2.9447e+06 0
+2.3498e+07 3.2647e+06 0
+2.2806e+07 3.5281e+06 0
+2.2079e+07 3.7315e+06 0
+2.1327e+07 3.8748e+06 0
+2.0558e+07 3.9602e+06 0
+1.9781e+07 3.9927e+06 0
+1.9004e+07 3.9786e+06 0
+1.8233e+07 3.9257e+06 0
+1.7474e+07 3.842e+06 0
+1.6731e+07 3.7353e+06 0
+1.6007e+07 3.613e+06 0
+1.5304e+07 3.4814e+06 0
+1.4623e+07 3.346e+06 0
+1.3965e+07 3.2107e+06 0
+1.3331e+07 3.0789e+06 0
+1.2719e+07 2.9525e+06 0
+1.2129e+07 2.8331e+06 0
+1.1561e+07 2.7213e+06 0
+1.1013e+07 2.6175e+06 0
+1.0485e+07 2.5215e+06 0
+9.9761e+06 2.4332e+06 0
+9.4843e+06 2.3522e+06 0
+9.0087e+06 2.278e+06 0
+8.5481e+06 2.2103e+06 0
+8.1012e+06 2.1486e+06 0
+7.6668e+06 2.0925e+06 0
+7.2435e+06 2.0418e+06 0
+6.8302e+06 1.996e+06 0
+6.4255e+06 1.9549e+06 0
+6.0284e+06 1.9182e+06 0
+5.6378e+06 1.8856e+06 0
+5.2526e+06 1.8569e+06 0
+4.8719e+06 1.8317e+06 0
+4.4949e+06 1.8099e+06 0
+4.1208e+06 1.7912e+06 0
+3.7489e+06 1.7754e+06 0
+3.3787e+06 1.7623e+06 0
+3.0095e+06 1.7516e+06 0
+2.641e+06 1.7431e+06 0
+2.2729e+06 1.7367e+06 0
+1.9047e+06 1.7322e+06 0
+1.5363e+06 1.7294e+06 0
+1.1674e+06 1.7283e+06 0
+797850 1.7287e+06 0
+427540 1.7305e+06 0
+56349 1.7336e+06 0
+-315800 1.7381e+06 0
+-688980 1.7438e+06 0
+-1.0633e+06 1.7507e+06 0
+-1.4386e+06 1.7588e+06 0
+-1.8152e+06 1.7682e+06 0
+-2.193e+06 1.7787e+06 0
+-2.572e+06 1.7905e+06 0
+-2.9524e+06 1.8035e+06 0
+-3.334e+06 1.8178e+06 0
+-3.7172e+06 1.8335e+06 0
+-4.1018e+06 1.8505e+06 0
+-4.4881e+06 1.8691e+06 0
+-4.8761e+06 1.8892e+06 0
+-5.266e+06 1.9109e+06 0
+-5.658e+06 1.9343e+06 0
+-6.0523e+06 1.9596e+06 0
+-6.4491e+06 1.9868e+06 0
+-6.8487e+06 2.016e+06 0
+-7.2514e+06 2.0472e+06 0
+-7.6576e+06 2.0806e+06 0
+-8.0677e+06 2.1162e+06 0
+-8.482e+06 2.1541e+06 0
+-8.901e+06 2.1941e+06 0
+-9.3252e+06 2.2364e+06 0
+-9.7551e+06 2.2808e+06 0
+-1.0191e+07 2.3274e+06 0
+-1.0634e+07 2.376e+06 0
+-1.1084e+07 2.4265e+06 0
+-1.1542e+07 2.4789e+06 0
+-1.2008e+07 2.5332e+06 0
+-1.2483e+07 2.5895e+06 0
+-1.2967e+07 2.6481e+06 0
+-1.346e+07 2.7093e+06 0
+-1.3964e+07 2.7739e+06 0
+-1.4477e+07 2.843e+06 0
+-1.5e+07 2.9181e+06 0
+-1.5533e+07 3.0012e+06 0
+-1.6076e+07 3.0949e+06 0
+-1.6628e+07 3.2025e+06 0
+-1.7188e+07 3.328e+06 0
+-1.7757e+07 3.4757e+06 0
+-1.8333e+07 3.6507e+06 0
+-1.8917e+07 3.8584e+06 0
+-1.9507e+07 4.104e+06 0
+-2.0105e+07 4.3924e+06 0
+-2.0711e+07 4.7278e+06 0
+-2.1327e+07 5.1126e+06 0
+-2.1954e+07 5.5473e+06 0
+-2.2596e+07 6.0294e+06 0
+-2.3256e+07 6.553e+06 0
+-2.3936e+07 7.1083e+06 0
+-2.4639e+07 7.6811e+06 0
+-2.5367e+07 8.2534e+06 0
+-2.6121e+07 8.803e+06 0
+-2.6897e+07 9.3052e+06 0
+-2.7691e+07 9.7336e+06 0
+-2.8494e+07 1.0062e+07 0
+-2.9296e+07 1.0265e+07 0
+-3.0083e+07 1.0323e+07 0
+-3.0843e+07 1.022e+07 0
+-3.156e+07 9.9473e+06 0
+-3.2221e+07 9.5032e+06 0
+-3.2815e+07 8.8946e+06 0
+-3.3336e+07 8.1349e+06 0
+-3.3781e+07 7.2443e+06 0
+-3.4151e+07 6.2475e+06 0
+-3.4453e+07 5.1727e+06 0
+-3.4696e+07 4.0493e+06 0
+-3.4894e+07 2.9066e+06 0
+-3.506e+07 1.7723e+06 0
+-3.521e+07 671060 0
+-3.5359e+07 -375880 0
+-3.5519e+07 -1.3514e+06 0
+-3.5702e+07 -2.2423e+06 0
+-3.5915e+07 -3.0393e+06 0
+-3.6165e+07 -3.7365e+06 0
+-3.6453e+07 -4.3311e+06 0
+-3.678e+07 -4.8224e+06 0
+-3.7144e+07 -5.2122e+06 0
+-3.7539e+07 -5.5044e+06 0
+-3.7962e+07 -5.7043e+06 0
+-3.8406e+07 -5.8188e+06 0
+-3.8866e+07 -5.8554e+06 0
+-3.9335e+07 -5.8219e+06 0
+-3.981e+07 -5.726e+06 0
+-4.0284e+07 -5.5753e+06 0
+-4.0754e+07 -5.3776e+06 0
+-4.1215e+07 -5.1407e+06 0
+-4.1664e+07 -4.8727e+06 0
+-4.2097e+07 -4.5807e+06 0
+-4.2513e+07 -4.2708e+06 0
+-4.2911e+07 -3.947e+06 0
+-4.3291e+07 -3.6123e+06 0
+-4.3657e+07 -3.2691e+06 0
+-4.4009e+07 -2.9211e+06 0
+-4.4353e+07 -2.5732e+06 0
+-4.469e+07 -2.2316e+06 0
+-4.5024e+07 -1.9024e+06 0
+-4.5356e+07 -1.5902e+06 0
+-4.5684e+07 -1.2971e+06 0
+-4.6007e+07 -1.0234e+06 0
+-4.6319e+07 -768510 0
+-4.6614e+07 -532220 0
+-4.6889e+07 -315360 0
+-4.7143e+07 -118960 0
+-4.7377e+07 57071 0
+-4.7593e+07 214850 0
+-4.7795e+07 357770 0
+-4.7981e+07 488110 0
+-4.815e+07 604510 0
+-4.8296e+07 701380 0
+-4.8415e+07 771790 0
+-4.8504e+07 812540 0
+-4.8563e+07 828150 0
+-4.8593e+07 830110 0
+-4.8596e+07 830610 0
+-4.8574e+07 834200 0
+-4.8529e+07 833490 0
+-4.8457e+07 813190 0
+-4.8356e+07 761180 0
+-4.8223e+07 679250 0
+-4.8056e+07 584960 0
+-4.7858e+07 501320 0
+-4.7637e+07 440420 0
+-4.7403e+07 392750 0
+-4.7164e+07 331820 0
+-4.6921e+07 232650 0
+-4.6669e+07 91670 0
+-4.6397e+07 -67902 0
+-4.6098e+07 -211190 0
+-4.5773e+07 -317760 0
+-4.5438e+07 -398590 0
+-4.5111e+07 -488810 0
+-4.4805e+07 -619290 0
+-4.4516e+07 -788230 0
+-4.4223e+07 -956790 0
+-4.3902e+07 -1.0757e+06 0
+-4.3541e+07 -1.1249e+06 0
+-4.315e+07 -1.1351e+06 0
+-4.2761e+07 -1.1711e+06 0
+-4.2404e+07 -1.286e+06 0
+-4.2099e+07 -1.479e+06 0
+-4.1835e+07 -1.6894e+06 0
+-4.1584e+07 -1.8347e+06 0
+-4.1317e+07 -1.8673e+06 0
+-4.1025e+07 -1.8088e+06 0
+-4.0724e+07 -1.7385e+06 0
+-4.0447e+07 -1.7424e+06 0
+-4.022e+07 -1.8584e+06 0
+-4.0042e+07 -2.0537e+06 0
+-3.9886e+07 -2.2451e+06 0
+-3.9709e+07 -2.3485e+06 0
+-3.948e+07 -2.3228e+06 0
+-3.9193e+07 -2.1864e+06 0
+-3.8875e+07 -2.0008e+06 0
+-3.8572e+07 -1.8363e+06 0
+-3.8328e+07 -1.7418e+06 0
+-3.817e+07 -1.731e+06 0
+-3.8095e+07 -1.7869e+06 0
+2.373e+07 769310 0
+2.36e+07 777410 0
+2.3475e+07 777110 0
+2.3357e+07 765990 0
+2.3245e+07 741900 0
+2.314e+07 703610 0
+2.3038e+07 651270 0
+2.2939e+07 586650 0
+2.2841e+07 512840 0
+2.2743e+07 433630 0
+2.2646e+07 352640 0
+2.2551e+07 272470 0
+2.2461e+07 194210 0
+2.2377e+07 117510 0
+2.2301e+07 41034 0
+2.2237e+07 -36766 0
+2.2184e+07 -116890 0
+2.2142e+07 -199390 0
+2.2112e+07 -283330 0
+2.2092e+07 -367150 0
+2.2082e+07 -449100 0
+2.208e+07 -527700 0
+2.2086e+07 -601890 0
+2.2101e+07 -671000 0
+2.2125e+07 -734590 0
+2.2157e+07 -792230 0
+2.2199e+07 -843520 0
+2.2251e+07 -888040 0
+2.2311e+07 -925490 0
+2.238e+07 -955710 0
+2.2457e+07 -978700 0
+2.2541e+07 -994460 0
+2.263e+07 -1.003e+06 0
+2.2725e+07 -1.004e+06 0
+2.2825e+07 -997240 0
+2.2927e+07 -982350 0
+2.3033e+07 -959030 0
+2.3141e+07 -927190 0
+2.3251e+07 -886970 0
+2.336e+07 -838770 0
+2.347e+07 -783210 0
+2.3577e+07 -720960 0
+2.3682e+07 -652720 0
+2.3783e+07 -579070 0
+2.3879e+07 -500470 0
+2.397e+07 -417280 0
+2.4053e+07 -329820 0
+2.413e+07 -238540 0
+2.4198e+07 -144110 0
+2.4258e+07 -47508 0
+2.4309e+07 50036 0
+2.4351e+07 147110 0
+2.4382e+07 242250 0
+2.4404e+07 334070 0
+2.4415e+07 421340 0
+2.4416e+07 502910 0
+2.4406e+07 577690 0
+2.4386e+07 644530 0
+2.4356e+07 702170 0
+2.4317e+07 749230 0
+2.4268e+07 784270 0
+2.421e+07 805910 0
+2.4145e+07 812870 0
+2.4071e+07 804090 0
+2.399e+07 778740 0
+2.3901e+07 736220 0
+2.3804e+07 676200 0
+2.3699e+07 598560 0
+2.3586e+07 503490 0
+2.3464e+07 391480 0
+2.3331e+07 263380 0
+2.3187e+07 120460 0
+2.3031e+07 -35538 0
+2.2862e+07 -202420 0
+2.2678e+07 -377490 0
+2.248e+07 -557530 0
+2.2265e+07 -738840 0
+2.2036e+07 -917240 0
+2.1791e+07 -1.0881e+06 0
+2.1532e+07 -1.2464e+06 0
+2.1261e+07 -1.3867e+06 0
+2.0979e+07 -1.5034e+06 0
+2.0689e+07 -1.5908e+06 0
+2.0394e+07 -1.643e+06 0
+2.0097e+07 -1.6543e+06 0
+1.98e+07 -1.6196e+06 0
+1.9507e+07 -1.5341e+06 0
+1.9218e+07 -1.3941e+06 0
+1.8934e+07 -1.1973e+06 0
+1.8655e+07 -943120 0
+1.8379e+07 -632910 0
+1.8103e+07 -270440 0
+1.7823e+07 138030 0
+1.7534e+07 583760 0
+1.7231e+07 1.0557e+06 0
+1.6909e+07 1.5408e+06 0
+1.6563e+07 2.025e+06 0
+1.6191e+07 2.4936e+06 0
+1.5792e+07 2.9324e+06 0
+1.5366e+07 3.3287e+06 0
+1.4916e+07 3.6721e+06 0
+1.4445e+07 3.955e+06 0
+1.3959e+07 4.1733e+06 0
+1.3462e+07 4.3263e+06 0
+1.2961e+07 4.4165e+06 0
+1.2461e+07 4.4491e+06 0
+1.1966e+07 4.4311e+06 0
+1.148e+07 4.3711e+06 0
+1.1005e+07 4.2778e+06 0
+1.0543e+07 4.1598e+06 0
+1.0096e+07 4.0252e+06 0
+9.6621e+06 3.8808e+06 0
+9.243e+06 3.7323e+06 0
+8.838e+06 3.5841e+06 0
+8.4467e+06 3.4394e+06 0
+8.0687e+06 3.3006e+06 0
+7.7036e+06 3.169e+06 0
+7.3511e+06 3.0455e+06 0
+7.0106e+06 2.9303e+06 0
+6.6818e+06 2.8235e+06 0
+6.3642e+06 2.7248e+06 0
+6.0571e+06 2.634e+06 0
+5.7599e+06 2.5507e+06 0
+5.4718e+06 2.4746e+06 0
+5.1922e+06 2.4052e+06 0
+4.9202e+06 2.3422e+06 0
+4.655e+06 2.2854e+06 0
+4.3956e+06 2.2342e+06 0
+4.1412e+06 2.1885e+06 0
+3.8911e+06 2.1479e+06 0
+3.6444e+06 2.1121e+06 0
+3.4005e+06 2.0807e+06 0
+3.1587e+06 2.0536e+06 0
+2.9184e+06 2.0303e+06 0
+2.6791e+06 2.0105e+06 0
+2.4404e+06 1.994e+06 0
+2.202e+06 1.9805e+06 0
+1.9634e+06 1.9697e+06 0
+1.7245e+06 1.9613e+06 0
+1.4851e+06 1.9552e+06 0
+1.2451e+06 1.9512e+06 0
+1.0043e+06 1.9489e+06 0
+762780 1.9484e+06 0
+520480 1.9494e+06 0
+277410 1.9518e+06 0
+33599 1.9556e+06 0
+-210890 1.9606e+06 0
+-455980 1.9669e+06 0
+-701610 1.9744e+06 0
+-947680 1.983e+06 0
+-1.1941e+06 1.9927e+06 0
+-1.4408e+06 2.0037e+06 0
+-1.6877e+06 2.0158e+06 0
+-1.9347e+06 2.0291e+06 0
+-2.1818e+06 2.0437e+06 0
+-2.4288e+06 2.0596e+06 0
+-2.6757e+06 2.0769e+06 0
+-2.9226e+06 2.0956e+06 0
+-3.1693e+06 2.116e+06 0
+-3.4158e+06 2.138e+06 0
+-3.6623e+06 2.1618e+06 0
+-3.9087e+06 2.1875e+06 0
+-4.1552e+06 2.2152e+06 0
+-4.4019e+06 2.245e+06 0
+-4.6488e+06 2.2771e+06 0
+-4.8962e+06 2.3115e+06 0
+-5.1443e+06 2.3483e+06 0
+-5.3934e+06 2.3875e+06 0
+-5.6437e+06 2.4293e+06 0
+-5.8955e+06 2.4736e+06 0
+-6.1493e+06 2.5204e+06 0
+-6.4054e+06 2.5696e+06 0
+-6.6641e+06 2.6213e+06 0
+-6.9261e+06 2.6752e+06 0
+-7.1917e+06 2.7314e+06 0
+-7.4613e+06 2.7899e+06 0
+-7.7355e+06 2.8508e+06 0
+-8.0146e+06 2.9142e+06 0
+-8.299e+06 2.9805e+06 0
+-8.5888e+06 3.0504e+06 0
+-8.8843e+06 3.1248e+06 0
+-9.1854e+06 3.2052e+06 0
+-9.4919e+06 3.2934e+06 0
+-9.8034e+06 3.3919e+06 0
+-1.0119e+07 3.5038e+06 0
+-1.0439e+07 3.6329e+06 0
+-1.0762e+07 3.7837e+06 0
+-1.1088e+07 3.9614e+06 0
+-1.1416e+07 4.1715e+06 0
+-1.1747e+07 4.4198e+06 0
+-1.2082e+07 4.7119e+06 0
+-1.2424e+07 5.0526e+06 0
+-1.2777e+07 5.4456e+06 0
+-1.3147e+07 5.8923e+06 0
+-1.354e+07 6.3912e+06 0
+-1.3964e+07 6.9373e+06 0
+-1.4429e+07 7.521e+06 0
+-1.4944e+07 8.128e+06 0
+-1.5515e+07 8.739e+06 0
+-1.6149e+07 9.3301e+06 0
+-1.6848e+07 9.874e+06 0
+-1.7608e+07 1.0341e+07 0
+-1.8422e+07 1.0701e+07 0
+-1.9279e+07 1.0927e+07 0
+-2.0162e+07 1.0994e+07 0
+-2.105e+07 1.0885e+07 0
+-2.1924e+07 1.0592e+07 0
+-2.2762e+07 1.0113e+07 0
+-2.3546e+07 9.4573e+06 0
+-2.4262e+07 8.6417e+06 0
+-2.49e+07 7.6902e+06 0
+-2.5456e+07 6.6318e+06 0
+-2.5933e+07 5.4988e+06 0
+-2.6336e+07 4.3241e+06 0
+-2.6677e+07 3.1398e+06 0
+-2.697e+07 1.9751e+06 0
+-2.7228e+07 855440 0
+-2.7468e+07 -198310 0
+-2.7702e+07 -1.1701e+06 0
+-2.7942e+07 -2.0487e+06 0
+-2.8198e+07 -2.8269e+06 0
+-2.8476e+07 -3.5011e+06 0
+-2.878e+07 -4.0708e+06 0
+-2.911e+07 -4.5375e+06 0
+-2.9465e+07 -4.9048e+06 0
+-2.9841e+07 -5.178e+06 0
+-3.0233e+07 -5.3633e+06 0
+-3.0636e+07 -5.468e+06 0
+-3.1043e+07 -5.4997e+06 0
+-3.1449e+07 -5.4661e+06 0
+-3.1848e+07 -5.3744e+06 0
+-3.2235e+07 -5.2319e+06 0
+-3.2605e+07 -5.0461e+06 0
+-3.2955e+07 -4.8244e+06 0
+-3.3281e+07 -4.5743e+06 0
+-3.3581e+07 -4.3024e+06 0
+-3.3853e+07 -4.0137e+06 0
+-3.4095e+07 -3.7113e+06 0
+-3.4311e+07 -3.3972e+06 0
+-3.45e+07 -3.0731e+06 0
+-3.4665e+07 -2.7419e+06 0
+-3.481e+07 -2.4082e+06 0
+-3.4937e+07 -2.0782e+06 0
+-3.5051e+07 -1.7581e+06 0
+-3.5153e+07 -1.453e+06 0
+-3.5247e+07 -1.1663e+06 0
+-3.5332e+07 -899870 0
+-3.5408e+07 -654200 0
+-3.5472e+07 -429610 0
+-3.5522e+07 -226140 0
+-3.5558e+07 -43168 0
+-3.5581e+07 121020 0
+-3.5595e+07 269180 0
+-3.56e+07 403880 0
+-3.5598e+07 525590 0
+-3.5586e+07 631150 0
+-3.5561e+07 714330 0
+-3.552e+07 768960 0
+-3.5464e+07 793430 0
+-3.5392e+07 793610 0
+-3.5306e+07 781280 0
+-3.5207e+07 767880 0
+-3.5093e+07 756960 0
+-3.4963e+07 740670 0
+-3.4815e+07 704130 0
+-3.4652e+07 636070 0
+-3.4474e+07 538880 0
+-3.4284e+07 430210 0
+-3.4082e+07 333110 0
+-3.3867e+07 260230 0
+-3.3641e+07 203270 0
+-3.3405e+07 136680 0
+-3.3165e+07 35015 0
+-3.2925e+07 -107490 0
+-3.2686e+07 -270250 0
+-3.2447e+07 -419220 0
+-3.2206e+07 -531560 0
+-3.1965e+07 -613700 0
+-3.1729e+07 -697470 0
+-3.1504e+07 -815150 0
+-3.1295e+07 -971610 0
+-3.1095e+07 -1.1363e+06 0
+-3.0895e+07 -1.2639e+06 0
+-3.0683e+07 -1.3299e+06 0
+-3.0457e+07 -1.3534e+06 0
+-3.0228e+07 -1.3875e+06 0
+-3.0015e+07 -1.4811e+06 0
+-2.9837e+07 -1.6401e+06 0
+-2.9698e+07 -1.8184e+06 0
+-2.9587e+07 -1.9463e+06 0
+-2.9486e+07 -1.9792e+06 0
+-2.9381e+07 -1.9297e+06 0
+-2.9272e+07 -1.8622e+06 0
+-2.9171e+07 -1.8522e+06 0
+-2.9099e+07 -1.9387e+06 0
+-2.9063e+07 -2.1011e+06 0
+-2.9059e+07 -2.2722e+06 0
+-2.9065e+07 -2.3774e+06 0
+-2.9059e+07 -2.3728e+06 0
+-2.9029e+07 -2.2633e+06 0
+-2.8978e+07 -2.0936e+06 0
+-2.8925e+07 -1.9227e+06 0
+-2.8894e+07 -1.7987e+06 0
+-2.8905e+07 -1.7435e+06 0
+-2.8965e+07 -1.753e+06 0
+1.4706e+07 833270 0
+1.4645e+07 839550 0
+1.4585e+07 836700 0
+1.4528e+07 822990 0
+1.4472e+07 796950 0
+1.4416e+07 757860 0
+1.4359e+07 706080 0
+1.4299e+07 643180 0
+1.4235e+07 571770 0
+1.4167e+07 494970 0
+1.4096e+07 415680 0
+1.4024e+07 335930 0
+1.3951e+07 256520 0
+1.3881e+07 177050 0
+1.3813e+07 96416 0
+1.3751e+07 13504 0
+1.3694e+07 -72211 0
+1.3643e+07 -160330 0
+1.3597e+07 -249620 0
+1.3556e+07 -338390 0
+1.352e+07 -424970 0
+1.3489e+07 -508040 0
+1.3463e+07 -586800 0
+1.3442e+07 -660770 0
+1.3427e+07 -729590 0
+1.3418e+07 -792850 0
+1.3415e+07 -850010 0
+1.342e+07 -900490 0
+1.3431e+07 -943800 0
+1.3448e+07 -979620 0
+1.3472e+07 -1.0078e+06 0
+1.3502e+07 -1.0284e+06 0
+1.3537e+07 -1.0412e+06 0
+1.3576e+07 -1.046e+06 0
+1.362e+07 -1.0426e+06 0
+1.3667e+07 -1.0307e+06 0
+1.3718e+07 -1.01e+06 0
+1.3771e+07 -980370 0
+1.3827e+07 -941970 0
+1.3885e+07 -895140 0
+1.3944e+07 -840390 0
+1.4005e+07 -778380 0
+1.4065e+07 -709750 0
+1.4125e+07 -635140 0
+1.4185e+07 -555050 0
+1.4243e+07 -469940 0
+1.4299e+07 -380230 0
+1.4353e+07 -286440 0
+1.4405e+07 -189290 0
+1.4455e+07 -89755 0
+1.4502e+07 10909 0
+1.4547e+07 111290 0
+1.459e+07 209940 0
+1.4629e+07 305450 0
+1.4666e+07 396570 0
+1.4699e+07 482130 0
+1.4729e+07 561020 0
+1.4755e+07 632050 0
+1.4778e+07 693970 0
+1.4796e+07 745410 0
+1.4811e+07 784990 0
+1.482e+07 811380 0
+1.4824e+07 823430 0
+1.4822e+07 820230 0
+1.4813e+07 801090 0
+1.4795e+07 765590 0
+1.4768e+07 713530 0
+1.4729e+07 644980 0
+1.4677e+07 560210 0
+1.461e+07 459830 0
+1.4526e+07 344730 0
+1.4424e+07 216190 0
+1.4301e+07 75845 0
+1.4156e+07 -74277 0
+1.3988e+07 -231740 0
+1.3796e+07 -393710 0
+1.3581e+07 -556940 0
+1.3343e+07 -717800 0
+1.3083e+07 -872230 0
+1.2804e+07 -1.0159e+06 0
+1.2508e+07 -1.1439e+06 0
+1.2201e+07 -1.2513e+06 0
+1.1886e+07 -1.3328e+06 0
+1.1568e+07 -1.3828e+06 0
+1.1253e+07 -1.3957e+06 0
+1.0945e+07 -1.3662e+06 0
+1.0648e+07 -1.2891e+06 0
+1.0367e+07 -1.1599e+06 0
+1.0103e+07 -975420 0
+9.8577e+06 -733760 0
+9.6299e+06 -435070 0
+9.417e+06 -81865 0
+9.2151e+06 320680 0
+9.019e+06 764560 0
+8.8229e+06 1.2391e+06 0
+8.6213e+06 1.7311e+06 0
+8.4092e+06 2.2257e+06 0
+8.183e+06 2.7071e+06 0
+7.9407e+06 3.1599e+06 0
+7.6827e+06 3.5696e+06 0
+7.4108e+06 3.9245e+06 0
+7.1288e+06 4.2159e+06 0
+6.8414e+06 4.439e+06 0
+6.5537e+06 4.5927e+06 0
+6.2704e+06 4.6798e+06 0
+5.9959e+06 4.7061e+06 0
+5.7331e+06 4.6795e+06 0
+5.4838e+06 4.6093e+06 0
+5.2486e+06 4.5053e+06 0
+5.0272e+06 4.3768e+06 0
+4.8185e+06 4.2322e+06 0
+4.621e+06 4.0786e+06 0
+4.4332e+06 3.922e+06 0
+4.2534e+06 3.7666e+06 0
+4.0805e+06 3.6155e+06 0
+3.9133e+06 3.4709e+06 0
+3.7512e+06 3.334e+06 0
+3.5936e+06 3.2055e+06 0
+3.4402e+06 3.0855e+06 0
+3.2908e+06 2.9741e+06 0
+3.1453e+06 2.871e+06 0
+3.0034e+06 2.776e+06 0
+2.8651e+06 2.6888e+06 0
+2.7301e+06 2.609e+06 0
+2.5982e+06 2.5362e+06 0
+2.469e+06 2.4703e+06 0
+2.3421e+06 2.4108e+06 0
+2.2173e+06 2.3574e+06 0
+2.0941e+06 2.3099e+06 0
+1.9722e+06 2.2678e+06 0
+1.8512e+06 2.2309e+06 0
+1.7307e+06 2.1988e+06 0
+1.6105e+06 2.1712e+06 0
+1.4904e+06 2.1477e+06 0
+1.37e+06 2.128e+06 0
+1.2493e+06 2.1117e+06 0
+1.128e+06 2.0985e+06 0
+1.0061e+06 2.0882e+06 0
+883560 2.0804e+06 0
+760300 2.0748e+06 0
+636330 2.0713e+06 0
+511680 2.0697e+06 0
+386390 2.0697e+06 0
+260530 2.0712e+06 0
+134170 2.0741e+06 0
+7417.6 2.0782e+06 0
+-119640 2.0836e+06 0
+-246890 2.0901e+06 0
+-374220 2.0977e+06 0
+-501520 2.1063e+06 0
+-628670 2.116e+06 0
+-755550 2.1268e+06 0
+-882040 2.1386e+06 0
+-1.0081e+06 2.1516e+06 0
+-1.1335e+06 2.1657e+06 0
+-1.2582e+06 2.1812e+06 0
+-1.3821e+06 2.1979e+06 0
+-1.5052e+06 2.216e+06 0
+-1.6273e+06 2.2357e+06 0
+-1.7485e+06 2.257e+06 0
+-1.8686e+06 2.2801e+06 0
+-1.9876e+06 2.305e+06 0
+-2.1056e+06 2.332e+06 0
+-2.2225e+06 2.3611e+06 0
+-2.3384e+06 2.3925e+06 0
+-2.4533e+06 2.4263e+06 0
+-2.5673e+06 2.4627e+06 0
+-2.6805e+06 2.5016e+06 0
+-2.793e+06 2.5431e+06 0
+-2.9051e+06 2.5873e+06 0
+-3.0168e+06 2.6343e+06 0
+-3.1284e+06 2.6838e+06 0
+-3.2403e+06 2.7361e+06 0
+-3.3526e+06 2.7909e+06 0
+-3.4657e+06 2.8483e+06 0
+-3.5801e+06 2.9083e+06 0
+-3.6959e+06 2.9709e+06 0
+-3.8136e+06 3.0364e+06 0
+-3.9335e+06 3.105e+06 0
+-4.0558e+06 3.1774e+06 0
+-4.1809e+06 3.2545e+06 0
+-4.3087e+06 3.3376e+06 0
+-4.4393e+06 3.4284e+06 0
+-4.5728e+06 3.5294e+06 0
+-4.7091e+06 3.6437e+06 0
+-4.8483e+06 3.7752e+06 0
+-4.991e+06 3.9285e+06 0
+-5.1379e+06 4.1092e+06 0
+-5.2909e+06 4.3234e+06 0
+-5.453e+06 4.5779e+06 0
+-5.6284e+06 4.8793e+06 0
+-5.8236e+06 5.234e+06 0
+-6.0469e+06 5.6472e+06 0
+-6.309e+06 6.122e+06 0
+-6.6224e+06 6.6584e+06 0
+-7.0011e+06 7.2522e+06 0
+-7.4596e+06 7.8943e+06 0
+-8.0117e+06 8.5696e+06 0
+-8.6687e+06 9.2569e+06 0
+-9.4378e+06 9.929e+06 0
+-1.032e+07 1.0554e+07 0
+-1.1311e+07 1.1098e+07 0
+-1.2397e+07 1.1524e+07 0
+-1.3557e+07 1.18e+07 0
+-1.4765e+07 1.1897e+07 0
+-1.5989e+07 1.1796e+07 0
+-1.7195e+07 1.1485e+07 0
+-1.8353e+07 1.0966e+07 0
+-1.9433e+07 1.025e+07 0
+-2.0412e+07 9.3585e+06 0
+-2.1274e+07 8.3208e+06 0
+-2.2012e+07 7.1721e+06 0
+-2.2626e+07 5.9501e+06 0
+-2.3122e+07 4.6926e+06 0
+-2.3513e+07 3.4354e+06 0
+-2.3813e+07 2.2101e+06 0
+-2.4041e+07 1.0434e+06 0
+-2.4215e+07 -44099 0
+-2.435e+07 -1.0373e+06 0
+-2.4462e+07 -1.9265e+06 0
+-2.4564e+07 -2.7068e+06 0
+-2.4663e+07 -3.377e+06 0
+-2.4767e+07 -3.9388e+06 0
+-2.4878e+07 -4.3961e+06 0
+-2.4997e+07 -4.7543e+06 0
+-2.5123e+07 -5.0202e+06 0
+-2.5253e+07 -5.2012e+06 0
+-2.5383e+07 -5.3054e+06 0
+-2.5508e+07 -5.3407e+06 0
+-2.5623e+07 -5.3147e+06 0
+-2.5724e+07 -5.2345e+06 0
+-2.5806e+07 -5.1069e+06 0
+-2.5866e+07 -4.9387e+06 0
+-2.59e+07 -4.737e+06 0
+-2.5908e+07 -4.5086e+06 0
+-2.5888e+07 -4.2595e+06 0
+-2.5838e+07 -3.9941e+06 0
+-2.5761e+07 -3.7148e+06 0
+-2.5656e+07 -3.4229e+06 0
+-2.5524e+07 -3.1197e+06 0
+-2.5368e+07 -2.8076e+06 0
+-2.519e+07 -2.4911e+06 0
+-2.4993e+07 -2.1757e+06 0
+-2.4781e+07 -1.8671e+06 0
+-2.4557e+07 -1.5705e+06 0
+-2.4326e+07 -1.2893e+06 0
+-2.4091e+07 -1.0261e+06 0
+-2.3856e+07 -782760 0
+-2.3621e+07 -560390 0
+-2.3386e+07 -359330 0
+-2.3152e+07 -178480 0
+-2.2921e+07 -15149 0
+-2.2694e+07 134050 0
+-2.2473e+07 271450 0
+-2.226e+07 396400 0
+-2.2055e+07 504340 0
+-2.1857e+07 588180 0
+-2.1663e+07 641930 0
+-2.1472e+07 664940 0
+-2.1283e+07 664000 0
+-2.1098e+07 651080 0
+-2.0916e+07 636970 0
+-2.0737e+07 624420 0
+-2.056e+07 605500 0
+-2.0384e+07 566370 0
+-2.0212e+07 497290 0
+-2.0044e+07 401420 0
+-1.9885e+07 295480 0
+-1.9732e+07 200150 0
+-1.9583e+07 125810 0
+-1.9431e+07 63758 0
+-1.9273e+07 -9338.6 0
+-1.9107e+07 -115210 0
+-1.8941e+07 -256770 0
+-1.8781e+07 -413250 0
+-1.8633e+07 -553140 0
+-1.8499e+07 -656970 0
+-1.8377e+07 -733000 0
+-1.8261e+07 -812480 0
+-1.8149e+07 -925810 0
+-1.8041e+07 -1.0768e+06 0
+-1.7937e+07 -1.2359e+06 0
+-1.7838e+07 -1.3597e+06 0
+-1.7744e+07 -1.4244e+06 0
+-1.7656e+07 -1.4473e+06 0
+-1.7574e+07 -1.4775e+06 0
+-1.7501e+07 -1.561e+06 0
+-1.7442e+07 -1.7048e+06 0
+-1.7396e+07 -1.8668e+06 0
+-1.7361e+07 -1.9827e+06 0
+-1.7331e+07 -2.0097e+06 0
+-1.7307e+07 -1.9578e+06 0
+-1.729e+07 -1.8856e+06 0
+-1.7288e+07 -1.8636e+06 0
+-1.7308e+07 -1.9309e+06 0
+-1.7351e+07 -2.0721e+06 0
+-1.7413e+07 -2.2274e+06 0
+-1.7482e+07 -2.3271e+06 0
+-1.7548e+07 -2.3271e+06 0
+-1.7606e+07 -2.2267e+06 0
+-1.7657e+07 -2.0629e+06 0
+-1.7711e+07 -1.8888e+06 0
+-1.7778e+07 -1.7508e+06 0
+-1.7869e+07 -1.6736e+06 0
+-1.7987e+07 -1.658e+06 0
+7.3206e+06 849130 0
+7.312e+06 855870 0
+7.302e+06 853500 0
+7.2904e+06 840570 0
+7.2767e+06 815870 0
+7.2602e+06 778780 0
+7.2405e+06 729610 0
+7.2173e+06 669740 0
+7.1904e+06 601470 0
+7.1601e+06 527550 0
+7.1271e+06 450590 0
+7.0919e+06 372410 0
+7.0553e+06 293700 0
+7.0183e+06 214100 0
+6.9814e+06 132610 0
+6.9453e+06 48287 0
+6.9106e+06 -39237 0
+6.8777e+06 -129430 0
+6.8468e+06 -220950 0
+6.8183e+06 -312100 0
+6.7926e+06 -401200 0
+6.7699e+06 -487010 0
+6.7506e+06 -568730 0
+6.7349e+06 -645930 0
+6.7231e+06 -718240 0
+6.7154e+06 -785200 0
+6.7119e+06 -846180 0
+6.7125e+06 -900520 0
+6.7173e+06 -947620 0
+6.726e+06 -987080 0
+6.7384e+06 -1.0187e+06 0
+6.754e+06 -1.0423e+06 0
+6.7725e+06 -1.0578e+06 0
+6.7934e+06 -1.065e+06 0
+6.8161e+06 -1.0636e+06 0
+6.8403e+06 -1.0533e+06 0
+6.8654e+06 -1.0339e+06 0
+6.8912e+06 -1.0053e+06 0
+6.9172e+06 -967620 0
+6.9432e+06 -921270 0
+6.9689e+06 -866760 0
+6.9941e+06 -804710 0
+7.0185e+06 -735800 0
+7.0419e+06 -660710 0
+7.0644e+06 -580020 0
+7.0859e+06 -494270 0
+7.1066e+06 -403960 0
+7.1267e+06 -309690 0
+7.1466e+06 -212240 0
+7.1666e+06 -112610 0
+7.1871e+06 -12032 0
+7.2085e+06 88085 0
+7.2311e+06 186310 0
+7.2552e+06 281300 0
+7.281e+06 371810 0
+7.3087e+06 456730 0
+7.3383e+06 534990 0
+7.37e+06 605480 0
+7.4034e+06 667030 0
+7.4385e+06 718370 0
+7.4746e+06 758260 0
+7.5111e+06 785530 0
+7.5473e+06 799200 0
+7.5819e+06 798510 0
+7.6136e+06 782950 0
+7.6411e+06 752260 0
+7.6627e+06 706360 0
+7.6765e+06 645410 0
+7.6809e+06 569740 0
+7.6739e+06 479970 0
+7.6539e+06 376940 0
+7.6193e+06 261780 0
+7.5688e+06 135930 0
+7.5015e+06 1120.3 0
+7.4169e+06 -140610 0
+7.315e+06 -286890 0
+7.1968e+06 -435020 0
+7.0636e+06 -581980 0
+6.9178e+06 -724330 0
+6.7622e+06 -858310 0
+6.6005e+06 -979720 0
+6.4369e+06 -1.084e+06 0
+6.2761e+06 -1.1661e+06 0
+6.1227e+06 -1.2207e+06 0
+5.9813e+06 -1.2422e+06 0
+5.8561e+06 -1.2246e+06 0
+5.7504e+06 -1.1622e+06 0
+5.666e+06 -1.0495e+06 0
+5.6035e+06 -882080 0
+5.5613e+06 -656500 0
+5.536e+06 -371440 0
+5.5222e+06 -27924 0
+5.513e+06 370060 0
+5.5003e+06 815300 0
+5.4755e+06 1.2973e+06 0
+5.4308e+06 1.8024e+06 0
+5.3595e+06 2.3147e+06 0
+5.2574e+06 2.8168e+06 0
+5.1227e+06 3.2908e+06 0
+4.9571e+06 3.7206e+06 0
+4.7649e+06 4.092e+06 0
+4.5527e+06 4.395e+06 0
+4.3286e+06 4.6239e+06 0
+4.1011e+06 4.7776e+06 0
+3.8781e+06 4.8592e+06 0
+3.6663e+06 4.8757e+06 0
+3.4704e+06 4.8364e+06 0
+3.2929e+06 4.7522e+06 0
+3.1347e+06 4.6339e+06 0
+2.9947e+06 4.4921e+06 0
+2.871e+06 4.3359e+06 0
+2.7607e+06 4.1728e+06 0
+2.6611e+06 4.0087e+06 0
+2.5692e+06 3.8477e+06 0
+2.4827e+06 3.6928e+06 0
+2.3996e+06 3.5456e+06 0
+2.3184e+06 3.407e+06 0
+2.2381e+06 3.2774e+06 0
+2.1581e+06 3.1568e+06 0
+2.078e+06 3.0449e+06 0
+1.9977e+06 2.9415e+06 0
+1.9171e+06 2.8461e+06 0
+1.8363e+06 2.7584e+06 0
+1.7555e+06 2.6782e+06 0
+1.6745e+06 2.605e+06 0
+1.5937e+06 2.5386e+06 0
+1.5129e+06 2.4787e+06 0
+1.4321e+06 2.425e+06 0
+1.3515e+06 2.3772e+06 0
+1.271e+06 2.335e+06 0
+1.1906e+06 2.298e+06 0
+1.1102e+06 2.2659e+06 0
+1.0299e+06 2.2383e+06 0
+949660 2.2149e+06 0
+869400 2.1953e+06 0
+789150 2.1791e+06 0
+708910 2.1661e+06 0
+628670 2.156e+06 0
+548440 2.1484e+06 0
+468220 2.143e+06 0
+388020 2.1397e+06 0
+307850 2.1382e+06 0
+227720 2.1383e+06 0
+147640 2.1399e+06 0
+67624 2.1429e+06 0
+-12324 2.1471e+06 0
+-92189 2.1524e+06 0
+-171960 2.1589e+06 0
+-251630 2.1664e+06 0
+-331190 2.1749e+06 0
+-410640 2.1845e+06 0
+-489960 2.195e+06 0
+-569160 2.2067e+06 0
+-648230 2.2194e+06 0
+-727170 2.2333e+06 0
+-805990 2.2485e+06 0
+-884680 2.2649e+06 0
+-963250 2.2827e+06 0
+-1.0417e+06 2.302e+06 0
+-1.1201e+06 2.323e+06 0
+-1.1983e+06 2.3457e+06 0
+-1.2765e+06 2.3703e+06 0
+-1.3546e+06 2.3969e+06 0
+-1.4326e+06 2.4256e+06 0
+-1.5106e+06 2.4567e+06 0
+-1.5886e+06 2.4902e+06 0
+-1.6665e+06 2.5262e+06 0
+-1.7445e+06 2.5648e+06 0
+-1.8226e+06 2.6062e+06 0
+-1.9007e+06 2.6502e+06 0
+-1.9791e+06 2.6971e+06 0
+-2.0577e+06 2.7467e+06 0
+-2.1368e+06 2.7991e+06 0
+-2.2164e+06 2.8543e+06 0
+-2.2967e+06 2.9122e+06 0
+-2.3779e+06 2.9728e+06 0
+-2.4602e+06 3.0363e+06 0
+-2.5438e+06 3.1029e+06 0
+-2.6291e+06 3.1729e+06 0
+-2.7162e+06 3.2468e+06 0
+-2.8055e+06 3.3256e+06 0
+-2.8972e+06 3.4106e+06 0
+-2.9917e+06 3.5036e+06 0
+-3.0895e+06 3.6072e+06 0
+-3.1913e+06 3.7245e+06 0
+-3.2983e+06 3.8597e+06 0
+-3.4122e+06 4.0181e+06 0
+-3.5355e+06 4.2058e+06 0
+-3.672e+06 4.43e+06 0
+-3.827e+06 4.6985e+06 0
+-4.0077e+06 5.0197e+06 0
+-4.2236e+06 5.4017e+06 0
+-4.4863e+06 5.8514e+06 0
+-4.8099e+06 6.3738e+06 0
+-5.2102e+06 6.9703e+06 0
+-5.7039e+06 7.6375e+06 0
+-6.3075e+06 8.3658e+06 0
+-7.0352e+06 9.1383e+06 0
+-7.8973e+06 9.9304e+06 0
+-8.8976e+06 1.071e+07 0
+-1.0032e+07 1.1439e+07 0
+-1.1287e+07 1.2076e+07 0
+-1.2639e+07 1.2577e+07 0
+-1.4057e+07 1.2902e+07 0
+-1.55e+07 1.3019e+07 0
+-1.6926e+07 1.2905e+07 0
+-1.8291e+07 1.2548e+07 0
+-1.9556e+07 1.1953e+07 0
+-2.0686e+07 1.1136e+07 0
+-2.1659e+07 1.0126e+07 0
+-2.246e+07 8.9605e+06 0
+-2.3086e+07 7.6817e+06 0
+-2.3544e+07 6.3348e+06 0
+-2.3849e+07 4.9634e+06 0
+-2.402e+07 3.6073e+06 0
+-2.4081e+07 2.3004e+06 0
+-2.4057e+07 1.0701e+06 0
+-2.3969e+07 -63642 0
+-2.3841e+07 -1.0876e+06 0
+-2.3689e+07 -1.9944e+06 0
+-2.3528e+07 -2.782e+06 0
+-2.3369e+07 -3.4519e+06 0
+-2.3218e+07 -4.0084e+06 0
+-2.3079e+07 -4.4579e+06 0
+-2.2953e+07 -4.8078e+06 0
+-2.284e+07 -5.0667e+06 0
+-2.2735e+07 -5.2432e+06 0
+-2.2636e+07 -5.3464e+06 0
+-2.2537e+07 -5.3846e+06 0
+-2.2432e+07 -5.3655e+06 0
+-2.2317e+07 -5.2961e+06 0
+-2.2187e+07 -5.1825e+06 0
+-2.2038e+07 -5.0311e+06 0
+-2.1869e+07 -4.8481e+06 0
+-2.1676e+07 -4.6395e+06 0
+-2.1458e+07 -4.4109e+06 0
+-2.1217e+07 -4.1661e+06 0
+-2.0951e+07 -3.9073e+06 0
+-2.066e+07 -3.6353e+06 0
+-2.0346e+07 -3.3513e+06 0
+-2.001e+07 -3.0573e+06 0
+-1.9653e+07 -2.7572e+06 0
+-1.9277e+07 -2.456e+06 0
+-1.8887e+07 -2.1589e+06 0
+-1.8485e+07 -1.8701e+06 0
+-1.8077e+07 -1.5929e+06 0
+-1.7668e+07 -1.3301e+06 0
+-1.7261e+07 -1.0843e+06 0
+-1.686e+07 -857760 0
+-1.6465e+07 -651610 0
+-1.6079e+07 -464880 0
+-1.5702e+07 -294330 0
+-1.5338e+07 -135740 0
+-1.4989e+07 13633 0
+-1.4659e+07 152590 0
+-1.435e+07 275200 0
+-1.4061e+07 372760 0
+-1.3791e+07 438220 0
+-1.3535e+07 470990 0
+-1.3293e+07 478890 0
+-1.3064e+07 475210 0
+-1.285e+07 471570 0
+-1.2653e+07 470550 0
+-1.2474e+07 463410 0
+-1.2314e+07 435550 0
+-1.2169e+07 377150 0
+-1.2039e+07 291960 0
+-1.1924e+07 197140 0
+-1.1823e+07 112780 0
+-1.1737e+07 47433 0
+-1.1662e+07 -9794.5 0
+-1.1591e+07 -83156 0
+-1.1517e+07 -192860 0
+-1.1437e+07 -338120 0
+-1.1353e+07 -494150 0
+-1.1272e+07 -627370 0
+-1.1203e+07 -719580 0
+-1.1149e+07 -783110 0
+-1.111e+07 -853930 0
+-1.1077e+07 -965310 0
+-1.1038e+07 -1.1207e+06 0
+-1.0987e+07 -1.2869e+06 0
+-1.0922e+07 -1.4157e+06 0
+-1.0853e+07 -1.4793e+06 0
+-1.079e+07 -1.4941e+06 0
+-1.0744e+07 -1.5118e+06 0
+-1.0715e+07 -1.5842e+06 0
+-1.0694e+07 -1.7234e+06 0
+-1.0667e+07 -1.8899e+06 0
+-1.0621e+07 -2.0168e+06 0
+-1.0553e+07 -2.0541e+06 0
+-1.0474e+07 -2.004e+06 0
+-1.0405e+07 -1.9207e+06 0
+-1.0361e+07 -1.8771e+06 0
+-1.0352e+07 -1.9204e+06 0
+-1.0368e+07 -2.0448e+06 0
+-1.039e+07 -2.197e+06 0
+-1.0398e+07 -2.3068e+06 0
+-1.0378e+07 -2.3238e+06 0
+-1.0333e+07 -2.2382e+06 0
+-1.0274e+07 -2.0795e+06 0
+-1.0221e+07 -1.898e+06 0
+-1.0189e+07 -1.7416e+06 0
+-1.0191e+07 -1.6399e+06 0
+-1.0227e+07 -1.5991e+06 0
+4.8911e+06 838130 0
+4.9084e+06 846300 0
+4.9239e+06 845470 0
+4.9377e+06 834110 0
+4.9501e+06 810960 0
+4.9611e+06 775330 0
+4.9713e+06 727520 0
+4.9806e+06 668890 0
+4.9894e+06 601750 0
+4.9976e+06 528870 0
+5.0051e+06 452870 0
+5.0119e+06 375530 0
+5.018e+06 297530 0
+5.0235e+06 218410 0
+5.0288e+06 137130 0
+5.0341e+06 52643 0
+5.04e+06 -35445 0
+5.047e+06 -126620 0
+5.0558e+06 -219550 0
+5.0666e+06 -312460 0
+5.08e+06 -403610 0
+5.096e+06 -491670 0
+5.1149e+06 -575760 0
+5.1365e+06 -655360 0
+5.1609e+06 -730050 0
+5.1877e+06 -799300 0
+5.2169e+06 -862450 0
+5.2481e+06 -918770 0
+5.2809e+06 -967600 0
+5.3149e+06 -1.0085e+06 0
+5.3496e+06 -1.0411e+06 0
+5.3844e+06 -1.0654e+06 0
+5.4186e+06 -1.0811e+06 0
+5.4517e+06 -1.0879e+06 0
+5.4829e+06 -1.0857e+06 0
+5.5117e+06 -1.0742e+06 0
+5.5375e+06 -1.0531e+06 0
+5.5598e+06 -1.0224e+06 0
+5.578e+06 -982370 0
+5.5918e+06 -933390 0
+5.6009e+06 -876060 0
+5.6054e+06 -811120 0
+5.6051e+06 -739320 0
+5.6003e+06 -661430 0
+5.5912e+06 -578130 0
+5.5782e+06 -490040 0
+5.5618e+06 -397770 0
+5.5427e+06 -302000 0
+5.5217e+06 -203580 0
+5.4995e+06 -103560 0
+5.4771e+06 -3238 0
+5.4554e+06 95993 0
+5.4354e+06 192710 0
+5.4179e+06 285580 0
+5.4038e+06 373430 0
+5.3939e+06 455200 0
+5.389e+06 529920 0
+5.3895e+06 596580 0
+5.3959e+06 654130 0
+5.4084e+06 701450 0
+5.4271e+06 737450 0
+5.4517e+06 761130 0
+5.4819e+06 771680 0
+5.5172e+06 768490 0
+5.5567e+06 751210 0
+5.5997e+06 719670 0
+5.6451e+06 673890 0
+5.6919e+06 614060 0
+5.7391e+06 540530 0
+5.7857e+06 453840 0
+5.8308e+06 354740 0
+5.8738e+06 244190 0
+5.9142e+06 123380 0
+5.9521e+06 -6268.9 0
+5.9877e+06 -143070 0
+6.0221e+06 -285070 0
+6.0563e+06 -430000 0
+6.0923e+06 -575280 0
+6.1323e+06 -717940 0
+6.1791e+06 -854570 0
+6.2357e+06 -981330 0
+6.3053e+06 -1.0938e+06 0
+6.3912e+06 -1.1871e+06 0
+6.4965e+06 -1.2556e+06 0
+6.6236e+06 -1.2933e+06 0
+6.7741e+06 -1.2935e+06 0
+6.9483e+06 -1.2496e+06 0
+7.1452e+06 -1.1548e+06 0
+7.3613e+06 -1.0029e+06 0
+7.5913e+06 -788860 0
+7.8274e+06 -509580 0
+8.0596e+06 -164440 0
+8.2763e+06 243880 0
+8.4645e+06 708890 0
+8.6113e+06 1.22e+06 0
+8.7048e+06 1.7626e+06 0
+8.7354e+06 2.3188e+06 0
+8.6973e+06 2.8684e+06 0
+8.5888e+06 3.3904e+06 0
+8.413e+06 3.8649e+06 0
+8.1778e+06 4.2749e+06 0
+7.8945e+06 4.6078e+06 0
+7.5769e+06 4.8564e+06 0
+7.2399e+06 5.0194e+06 0
+6.8972e+06 5.1007e+06 0
+6.561e+06 5.1089e+06 0
+6.2404e+06 5.0555e+06 0
+5.9414e+06 4.9538e+06 0
+5.6668e+06 4.8168e+06 0
+5.4168e+06 4.6568e+06 0
+5.1899e+06 4.4841e+06 0
+4.9829e+06 4.3072e+06 0
+4.7923e+06 4.132e+06 0
+4.6145e+06 3.9627e+06 0
+4.4461e+06 3.8019e+06 0
+4.2843e+06 3.6508e+06 0
+4.1266e+06 3.5099e+06 0
+3.9716e+06 3.3791e+06 0
+3.8178e+06 3.258e+06 0
+3.6646e+06 3.1461e+06 0
+3.5116e+06 3.0429e+06 0
+3.3585e+06 2.9478e+06 0
+3.2055e+06 2.8603e+06 0
+3.0524e+06 2.7802e+06 0
+2.8996e+06 2.707e+06 0
+2.7472e+06 2.6405e+06 0
+2.5955e+06 2.5803e+06 0
+2.4447e+06 2.5262e+06 0
+2.2949e+06 2.4778e+06 0
+2.1463e+06 2.4349e+06 0
+1.9991e+06 2.3971e+06 0
+1.8535e+06 2.3642e+06 0
+1.7095e+06 2.3356e+06 0
+1.5672e+06 2.3113e+06 0
+1.4266e+06 2.2907e+06 0
+1.2878e+06 2.2735e+06 0
+1.1507e+06 2.2596e+06 0
+1.0153e+06 2.2484e+06 0
+881550 2.2399e+06 0
+749320 2.2336e+06 0
+618520 2.2295e+06 0
+489000 2.2273e+06 0
+360610 2.2267e+06 0
+233200 2.2278e+06 0
+106570 2.2303e+06 0
+-19443 2.2341e+06 0
+-145050 2.2392e+06 0
+-270460 2.2456e+06 0
+-395870 2.2531e+06 0
+-521490 2.2617e+06 0
+-647540 2.2715e+06 0
+-774240 2.2825e+06 0
+-901800 2.2946e+06 0
+-1.0304e+06 2.308e+06 0
+-1.1604e+06 2.3226e+06 0
+-1.2918e+06 2.3386e+06 0
+-1.4249e+06 2.356e+06 0
+-1.5599e+06 2.3749e+06 0
+-1.697e+06 2.3955e+06 0
+-1.8363e+06 2.4177e+06 0
+-1.9781e+06 2.4418e+06 0
+-2.1224e+06 2.4679e+06 0
+-2.2694e+06 2.496e+06 0
+-2.4192e+06 2.5264e+06 0
+-2.572e+06 2.5592e+06 0
+-2.7277e+06 2.5944e+06 0
+-2.8865e+06 2.6322e+06 0
+-3.0484e+06 2.6726e+06 0
+-3.2134e+06 2.7157e+06 0
+-3.3815e+06 2.7616e+06 0
+-3.5528e+06 2.8103e+06 0
+-3.7273e+06 2.8618e+06 0
+-3.9049e+06 2.9161e+06 0
+-4.0858e+06 2.9732e+06 0
+-4.2698e+06 3.033e+06 0
+-4.4571e+06 3.0957e+06 0
+-4.6477e+06 3.1614e+06 0
+-4.8417e+06 3.2302e+06 0
+-5.0392e+06 3.3025e+06 0
+-5.2404e+06 3.379e+06 0
+-5.4456e+06 3.4605e+06 0
+-5.655e+06 3.5486e+06 0
+-5.8693e+06 3.645e+06 0
+-6.089e+06 3.7526e+06 0
+-6.3153e+06 3.8749e+06 0
+-6.5497e+06 4.0165e+06 0
+-6.7946e+06 4.1831e+06 0
+-7.053e+06 4.3817e+06 0
+-7.3295e+06 4.6206e+06 0
+-7.63e+06 4.9089e+06 0
+-7.9622e+06 5.2565e+06 0
+-8.336e+06 5.6732e+06 0
+-8.7629e+06 6.1677e+06 0
+-9.2568e+06 6.7464e+06 0
+-9.8323e+06 7.4116e+06 0
+-1.0504e+07 8.1601e+06 0
+-1.1287e+07 8.981e+06 0
+-1.2191e+07 9.8547e+06 0
+-1.3221e+07 1.0752e+07 0
+-1.4375e+07 1.1635e+07 0
+-1.5642e+07 1.2457e+07 0
+-1.6997e+07 1.3168e+07 0
+-1.841e+07 1.3717e+07 0
+-1.9838e+07 1.4058e+07 0
+-2.1234e+07 1.4152e+07 0
+-2.2549e+07 1.3976e+07 0
+-2.3737e+07 1.3523e+07 0
+-2.4757e+07 1.28e+07 0
+-2.5583e+07 1.1834e+07 0
+-2.6197e+07 1.0662e+07 0
+-2.6597e+07 9.3328e+06 0
+-2.6794e+07 7.8978e+06 0
+-2.6808e+07 6.4098e+06 0
+-2.6667e+07 4.9181e+06 0
+-2.6402e+07 3.4654e+06 0
+-2.6047e+07 2.0867e+06 0
+-2.5633e+07 808160 0
+-2.5189e+07 -352660 0
+-2.4739e+07 -1.3858e+06 0
+-2.4301e+07 -2.2879e+06 0
+-2.3889e+07 -3.0603e+06 0
+-2.3513e+07 -3.7082e+06 0
+-2.3176e+07 -4.2392e+06 0
+-2.2881e+07 -4.662e+06 0
+-2.2625e+07 -4.9864e+06 0
+-2.2406e+07 -5.2223e+06 0
+-2.2218e+07 -5.3797e+06 0
+-2.2055e+07 -5.4684e+06 0
+-2.191e+07 -5.4971e+06 0
+-2.1778e+07 -5.4737e+06 0
+-2.1651e+07 -5.4047e+06 0
+-2.1523e+07 -5.2959e+06 0
+-2.139e+07 -5.1527e+06 0
+-2.1247e+07 -4.9807e+06 0
+-2.1091e+07 -4.7853e+06 0
+-2.092e+07 -4.5712e+06 0
+-2.0731e+07 -4.3421e+06 0
+-2.0524e+07 -4.0996e+06 0
+-2.0298e+07 -3.8443e+06 0
+-2.0052e+07 -3.5768e+06 0
+-1.9787e+07 -3.2989e+06 0
+-1.9503e+07 -3.0139e+06 0
+-1.9202e+07 -2.7262e+06 0
+-1.8886e+07 -2.4404e+06 0
+-1.8559e+07 -2.1601e+06 0
+-1.8224e+07 -1.8884e+06 0
+-1.7883e+07 -1.628e+06 0
+-1.754e+07 -1.3822e+06 0
+-1.7198e+07 -1.1538e+06 0
+-1.6857e+07 -944480 0
+-1.6519e+07 -753260 0
+-1.6187e+07 -576300 0
+-1.5865e+07 -408530 0
+-1.5556e+07 -246710 0
+-1.5264e+07 -92349 0
+-1.4991e+07 47315 0
+-1.4739e+07 161720 0
+-1.4507e+07 242230 0
+-1.429e+07 287760 0
+-1.4088e+07 307130 0
+-1.3901e+07 315610 0
+-1.3731e+07 326590 0
+-1.3582e+07 342950 0
+-1.3457e+07 354280 0
+-1.3354e+07 343170 0
+-1.3267e+07 297630 0
+-1.3191e+07 221480 0
+-1.3123e+07 134380 0
+-1.3063e+07 59589 0
+-1.3018e+07 6861.6 0
+-1.299e+07 -36942 0
+-1.2979e+07 -100920 0
+-1.2974e+07 -209530 0
+-1.2962e+07 -362310 0
+-1.2934e+07 -529630 0
+-1.2891e+07 -670320 0
+-1.2843e+07 -760410 0
+-1.2803e+07 -812440 0
+-1.2782e+07 -869200 0
+-1.2774e+07 -973890 0
+-1.2761e+07 -1.1369e+06 0
+-1.2724e+07 -1.3245e+06 0
+-1.2649e+07 -1.4795e+06 0
+-1.254e+07 -1.5615e+06 0
+-1.2416e+07 -1.5781e+06 0
+-1.2303e+07 -1.5816e+06 0
+-1.2215e+07 -1.6344e+06 0
+-1.2148e+07 -1.7635e+06 0
+-1.2077e+07 -1.9395e+06 0
+-1.1976e+07 -2.0941e+06 0
+-1.1829e+07 -2.1646e+06 0
+-1.1644e+07 -2.1357e+06 0
+-1.1447e+07 -2.0501e+06 0
+-1.1271e+07 -1.982e+06 0
+-1.1137e+07 -1.9921e+06 0
+-1.1039e+07 -2.0933e+06 0
+-1.095e+07 -2.2458e+06 0
+-1.0836e+07 -2.3808e+06 0
+-1.067e+07 -2.4374e+06 0
+-1.0449e+07 -2.3893e+06 0
+-1.0188e+07 -2.2516e+06 0
+-9.9182e+06 -2.0677e+06 0
+-9.6705e+06 -1.8877e+06 0
+-9.4673e+06 -1.7495e+06 0
+-9.3168e+06 -1.6696e+06 0
+8.3875e+06 819480 0
+8.4124e+06 827330 0
+8.439e+06 825910 0
+8.4679e+06 813620 0
+8.4995e+06 789170 0
+8.5342e+06 752010 0
+8.5717e+06 702620 0
+8.6119e+06 642590 0
+8.6539e+06 574410 0
+8.6972e+06 500950 0
+8.7409e+06 424750 0
+8.7848e+06 347450 0
+8.8287e+06 269490 0
+8.8729e+06 190210 0
+8.9181e+06 108390 0
+8.9647e+06 22908 0
+9.0135e+06 -66601 0
+9.0647e+06 -159530 0
+9.1185e+06 -254390 0
+9.1749e+06 -349260 0
+9.2335e+06 -442290 0
+9.294e+06 -532060 0
+9.3561e+06 -617670 0
+9.4193e+06 -698580 0
+9.4836e+06 -774380 0
+9.5485e+06 -844520 0
+9.6137e+06 -908290 0
+9.6788e+06 -964860 0
+9.7433e+06 -1.0135e+06 0
+9.8063e+06 -1.0536e+06 0
+9.867e+06 -1.0848e+06 0
+9.9245e+06 -1.107e+06 0
+9.978e+06 -1.12e+06 0
+1.0027e+07 -1.1235e+06 0
+1.007e+07 -1.1175e+06 0
+1.0107e+07 -1.1015e+06 0
+1.0136e+07 -1.0755e+06 0
+1.0159e+07 -1.0394e+06 0
+1.0173e+07 -993580 0
+1.0179e+07 -938500 0
+1.0177e+07 -874900 0
+1.0165e+07 -803650 0
+1.0145e+07 -725680 0
+1.0117e+07 -641880 0
+1.0081e+07 -553050 0
+1.0037e+07 -459930 0
+9.9874e+06 -363240 0
+9.9321e+06 -263760 0
+9.8724e+06 -162440 0
+9.8094e+06 -60443 0
+9.7445e+06 40876 0
+9.679e+06 140060 0
+9.6145e+06 235650 0
+9.5523e+06 326340 0
+9.4939e+06 410960 0
+9.4407e+06 488520 0
+9.394e+06 558120 0
+9.3549e+06 618840 0
+9.3247e+06 669750 0
+9.3041e+06 709860 0
+9.294e+06 738210 0
+9.295e+06 753960 0
+9.3074e+06 756430 0
+9.3316e+06 745150 0
+9.3677e+06 719860 0
+9.4156e+06 680520 0
+9.4753e+06 627210 0
+9.5465e+06 560170 0
+9.629e+06 479760 0
+9.7226e+06 386480 0
+9.8272e+06 280990 0
+9.9428e+06 164120 0
+1.0069e+07 36902 0
+1.0207e+07 -99446 0
+1.0358e+07 -243460 0
+1.052e+07 -393420 0
+1.0697e+07 -547320 0
+1.0889e+07 -702780 0
+1.1097e+07 -857030 0
+1.1323e+07 -1.0068e+06 0
+1.157e+07 -1.1484e+06 0
+1.1837e+07 -1.2774e+06 0
+1.2128e+07 -1.3886e+06 0
+1.2443e+07 -1.4762e+06 0
+1.2782e+07 -1.5335e+06 0
+1.3145e+07 -1.5532e+06 0
+1.353e+07 -1.5272e+06 0
+1.3933e+07 -1.4474e+06 0
+1.435e+07 -1.3058e+06 0
+1.4771e+07 -1.0956e+06 0
+1.5186e+07 -811530 0
+1.5582e+07 -450940 0
+1.5942e+07 -14987 0
+1.6251e+07 490740 0
+1.649e+07 1.0556e+06 0
+1.6644e+07 1.6637e+06 0
+1.6698e+07 2.2947e+06 0
+1.6644e+07 2.9246e+06 0
+1.6479e+07 3.5277e+06 0
+1.6206e+07 4.0793e+06 0
+1.5835e+07 4.5577e+06 0
+1.5382e+07 4.9462e+06 0
+1.4866e+07 5.2355e+06 0
+1.4309e+07 5.4234e+06 0
+1.373e+07 5.5147e+06 0
+1.3149e+07 5.5202e+06 0
+1.2579e+07 5.4543e+06 0
+1.2032e+07 5.3334e+06 0
+1.1513e+07 5.1739e+06 0
+1.1024e+07 4.9905e+06 0
+1.0565e+07 4.7956e+06 0
+1.0133e+07 4.5988e+06 0
+9.7262e+06 4.4066e+06 0
+9.339e+06 4.2235e+06 0
+8.9681e+06 4.0518e+06 0
+8.6102e+06 3.8923e+06 0
+8.2623e+06 3.7451e+06 0
+7.9221e+06 3.6096e+06 0
+7.5881e+06 3.485e+06 0
+7.2589e+06 3.3704e+06 0
+6.9337e+06 3.265e+06 0
+6.6121e+06 3.1679e+06 0
+6.2938e+06 3.0787e+06 0
+5.9786e+06 2.9967e+06 0
+5.6667e+06 2.9216e+06 0
+5.3581e+06 2.8531e+06 0
+5.0531e+06 2.7907e+06 0
+4.7517e+06 2.7342e+06 0
+4.4541e+06 2.6833e+06 0
+4.1606e+06 2.6378e+06 0
+3.8712e+06 2.5972e+06 0
+3.5861e+06 2.5614e+06 0
+3.3053e+06 2.53e+06 0
+3.0288e+06 2.5027e+06 0
+2.7566e+06 2.4792e+06 0
+2.4885e+06 2.4593e+06 0
+2.2245e+06 2.4426e+06 0
+1.9644e+06 2.4288e+06 0
+1.7078e+06 2.4178e+06 0
+1.4546e+06 2.4093e+06 0
+1.2044e+06 2.4031e+06 0
+956970 2.3991e+06 0
+711820 2.397e+06 0
+468580 2.3967e+06 0
+226860 2.3982e+06 0
+-13784 2.4014e+06 0
+-253790 2.4061e+06 0
+-493620 2.4123e+06 0
+-733720 2.4201e+06 0
+-974560 2.4293e+06 0
+-1.2166e+06 2.44e+06 0
+-1.4603e+06 2.4522e+06 0
+-1.7062e+06 2.4659e+06 0
+-1.9546e+06 2.4811e+06 0
+-2.2061e+06 2.4979e+06 0
+-2.461e+06 2.5163e+06 0
+-2.7199e+06 2.5365e+06 0
+-2.9831e+06 2.5585e+06 0
+-3.251e+06 2.5823e+06 0
+-3.524e+06 2.6081e+06 0
+-3.8024e+06 2.636e+06 0
+-4.0866e+06 2.6661e+06 0
+-4.3769e+06 2.6985e+06 0
+-4.6734e+06 2.7333e+06 0
+-4.9765e+06 2.7706e+06 0
+-5.2864e+06 2.8105e+06 0
+-5.6031e+06 2.853e+06 0
+-5.9267e+06 2.8983e+06 0
+-6.2575e+06 2.9463e+06 0
+-6.5954e+06 2.9971e+06 0
+-6.9403e+06 3.0507e+06 0
+-7.2924e+06 3.1071e+06 0
+-7.6516e+06 3.1662e+06 0
+-8.0178e+06 3.2281e+06 0
+-8.391e+06 3.2928e+06 0
+-8.7712e+06 3.3603e+06 0
+-9.1582e+06 3.4307e+06 0
+-9.552e+06 3.5042e+06 0
+-9.9527e+06 3.5813e+06 0
+-1.036e+07 3.6627e+06 0
+-1.0775e+07 3.7493e+06 0
+-1.1197e+07 3.8426e+06 0
+-1.1626e+07 3.9447e+06 0
+-1.2064e+07 4.0584e+06 0
+-1.2511e+07 4.1877e+06 0
+-1.2968e+07 4.3374e+06 0
+-1.3437e+07 4.5139e+06 0
+-1.392e+07 4.7248e+06 0
+-1.4422e+07 4.9791e+06 0
+-1.4945e+07 5.2871e+06 0
+-1.5497e+07 5.6598e+06 0
+-1.6084e+07 6.1083e+06 0
+-1.6716e+07 6.6427e+06 0
+-1.7401e+07 7.2702e+06 0
+-1.8152e+07 7.994e+06 0
+-1.8977e+07 8.8103e+06 0
+-1.9888e+07 9.7069e+06 0
+-2.089e+07 1.0661e+07 0
+-2.1982e+07 1.1639e+07 0
+-2.3159e+07 1.2595e+07 0
+-2.4403e+07 1.3476e+07 0
+-2.5688e+07 1.4223e+07 0
+-2.6977e+07 1.4778e+07 0
+-2.8226e+07 1.5086e+07 0
+-2.9385e+07 1.511e+07 0
+-3.0407e+07 1.4824e+07 0
+-3.1248e+07 1.4227e+07 0
+-3.1877e+07 1.3337e+07 0
+-3.2274e+07 1.2188e+07 0
+-3.2436e+07 1.0831e+07 0
+-3.2374e+07 9.3257e+06 0
+-3.2111e+07 7.7336e+06 0
+-3.1682e+07 6.1144e+06 0
+-3.1124e+07 4.5211e+06 0
+-3.0478e+07 2.998e+06 0
+-2.9781e+07 1.5784e+06 0
+-2.9069e+07 285310 0
+-2.8371e+07 -867900 0
+-2.7707e+07 -1.8762e+06 0
+-2.7096e+07 -2.7411e+06 0
+-2.6546e+07 -3.4684e+06 0
+-2.6063e+07 -4.0673e+06 0
+-2.5648e+07 -4.5483e+06 0
+-2.5299e+07 -4.9228e+06 0
+-2.5012e+07 -5.2023e+06 0
+-2.478e+07 -5.3978e+06 0
+-2.4597e+07 -5.5201e+06 0
+-2.4455e+07 -5.5793e+06 0
+-2.4349e+07 -5.5843e+06 0
+-2.427e+07 -5.5427e+06 0
+-2.4212e+07 -5.4608e+06 0
+-2.4169e+07 -5.3438e+06 0
+-2.4137e+07 -5.1968e+06 0
+-2.4109e+07 -5.0246e+06 0
+-2.4081e+07 -4.8323e+06 0
+-2.405e+07 -4.624e+06 0
+-2.4013e+07 -4.4028e+06 0
+-2.3967e+07 -4.1698e+06 0
+-2.391e+07 -3.9253e+06 0
+-2.3841e+07 -3.6693e+06 0
+-2.376e+07 -3.4029e+06 0
+-2.3667e+07 -3.1292e+06 0
+-2.3562e+07 -2.852e+06 0
+-2.3446e+07 -2.5754e+06 0
+-2.3322e+07 -2.3029e+06 0
+-2.3189e+07 -2.0375e+06 0
+-2.3049e+07 -1.7823e+06 0
+-2.2904e+07 -1.5406e+06 0
+-2.2753e+07 -1.3156e+06 0
+-2.2597e+07 -1.1088e+06 0
+-2.2439e+07 -918420 0
+-2.228e+07 -740140 0
+-2.2124e+07 -568400 0
+-2.1974e+07 -399890 0
+-2.1832e+07 -236520 0
+-2.17e+07 -86261 0
+-2.158e+07 39446 0
+-2.1472e+07 131190 0
+-2.1377e+07 187500 0
+-2.1295e+07 217410 0
+-2.1226e+07 237040 0
+-2.1171e+07 260730 0
+-2.1133e+07 291560 0
+-2.1111e+07 317800 0
+-2.1103e+07 319420 0
+-2.1105e+07 281880 0
+-2.1111e+07 208440 0
+-2.1115e+07 121280 0
+-2.1118e+07 48193 0
+-2.1125e+07 2691 0
+-2.1145e+07 -28519 0
+-2.118e+07 -79447 0
+-2.1226e+07 -181790 0
+-2.1271e+07 -339940 0
+-2.13e+07 -522920 0
+-2.1305e+07 -681820 0
+-2.1291e+07 -782790 0
+-2.1272e+07 -832760 0
+-2.1262e+07 -877620 0
+-2.1266e+07 -971710 0
+-2.1273e+07 -1.1384e+06 0
+-2.1258e+07 -1.3503e+06 0
+-2.1196e+07 -1.5451e+06 0
+-2.1078e+07 -1.6674e+06 0
+-2.0918e+07 -1.7073e+06 0
+-2.0746e+07 -1.7093e+06 0
+-2.0592e+07 -1.7415e+06 0
+-2.0468e+07 -1.8489e+06 0
+-2.036e+07 -2.0212e+06 0
+-2.0238e+07 -2.1988e+06 0
+-2.0069e+07 -2.3114e+06 0
+-1.9843e+07 -2.3238e+06 0
+-1.9577e+07 -2.2586e+06 0
+-1.9304e+07 -2.1818e+06 0
+-1.9058e+07 -2.1627e+06 0
+-1.8849e+07 -2.2348e+06 0
+-1.8662e+07 -2.3785e+06 0
+-1.8462e+07 -2.535e+06 0
+-1.8214e+07 -2.6376e+06 0
+-1.79e+07 -2.6429e+06 0
+-1.7524e+07 -2.5464e+06 0
+-1.7113e+07 -2.3781e+06 0
+-1.6703e+07 -2.1853e+06 0
+-1.6325e+07 -2.0129e+06 0
+-1.5996e+07 -1.8894e+06 0
+1.5969e+07 798100 0
+1.6002e+07 801750 0
+1.6043e+07 795530 0
+1.6091e+07 778070 0
+1.6147e+07 748490 0
+1.621e+07 706690 0
+1.6278e+07 653610 0
+1.635e+07 591130 0
+1.6423e+07 521800 0
+1.6496e+07 448260 0
+1.6567e+07 372630 0
+1.6638e+07 295980 0
+1.6708e+07 218220 0
+1.6778e+07 138370 0
+1.6849e+07 55122 0
+1.6923e+07 -32463 0
+1.7001e+07 -124410 0
+1.7081e+07 -219680 0
+1.7164e+07 -316440 0
+1.7248e+07 -412520 0
+1.7332e+07 -506010 0
+1.7415e+07 -595570 0
+1.7496e+07 -680480 0
+1.7575e+07 -760420 0
+1.7652e+07 -835120 0
+1.7727e+07 -904080 0
+1.78e+07 -966510 0
+1.787e+07 -1.0214e+06 0
+1.7936e+07 -1.0679e+06 0
+1.7999e+07 -1.1052e+06 0
+1.8057e+07 -1.1328e+06 0
+1.8109e+07 -1.1506e+06 0
+1.8155e+07 -1.1585e+06 0
+1.8193e+07 -1.1564e+06 0
+1.8223e+07 -1.1443e+06 0
+1.8244e+07 -1.1219e+06 0
+1.8257e+07 -1.089e+06 0
+1.8261e+07 -1.0459e+06 0
+1.8256e+07 -992610 0
+1.8241e+07 -929890 0
+1.8217e+07 -858530 0
+1.8183e+07 -779570 0
+1.814e+07 -694100 0
+1.8088e+07 -603160 0
+1.8027e+07 -507710 0
+1.7959e+07 -408620 0
+1.7884e+07 -306700 0
+1.7804e+07 -202880 0
+1.772e+07 -98205 0
+1.7633e+07 6046.7 0
+1.7545e+07 108430 0
+1.7457e+07 207430 0
+1.737e+07 301550 0
+1.7288e+07 389450 0
+1.721e+07 470000 0
+1.7139e+07 542230 0
+1.7076e+07 605270 0
+1.7024e+07 658280 0
+1.6982e+07 700400 0
+1.6953e+07 730740 0
+1.6938e+07 748470 0
+1.6938e+07 752850 0
+1.6953e+07 743320 0
+1.6985e+07 719560 0
+1.7034e+07 681440 0
+1.71e+07 629040 0
+1.7184e+07 562550 0
+1.7285e+07 482320 0
+1.7404e+07 388790 0
+1.754e+07 282500 0
+1.7694e+07 164120 0
+1.7864e+07 34479 0
+1.8051e+07 -105440 0
+1.8254e+07 -254450 0
+1.8473e+07 -411170 0
+1.8708e+07 -573930 0
+1.8959e+07 -740780 0
+1.9225e+07 -909440 0
+1.9507e+07 -1.0772e+06 0
+1.9804e+07 -1.2409e+06 0
+2.0118e+07 -1.3968e+06 0
+2.0447e+07 -1.5404e+06 0
+2.0792e+07 -1.6667e+06 0
+2.1153e+07 -1.7694e+06 0
+2.153e+07 -1.8415e+06 0
+2.1922e+07 -1.875e+06 0
+2.2327e+07 -1.8611e+06 0
+2.2742e+07 -1.7904e+06 0
+2.3162e+07 -1.6532e+06 0
+2.358e+07 -1.4407e+06 0
+2.3986e+07 -1.1453e+06 0
+2.4367e+07 -762210 0
+2.4707e+07 -290320 0
+2.4988e+07 266320 0
+2.5189e+07 897650 0
+2.5292e+07 1.587e+06 0
+2.5279e+07 2.3116e+06 0
+2.5137e+07 3.0434e+06 0
+2.486e+07 3.7513e+06 0
+2.445e+07 4.4044e+06 0
+2.3917e+07 4.9747e+06 0
+2.3276e+07 5.4407e+06 0
+2.2552e+07 5.789e+06 0
+2.1768e+07 6.0161e+06 0
+2.0951e+07 6.1275e+06 0
+2.0123e+07 6.1363e+06 0
+1.9303e+07 6.0604e+06 0
+1.8504e+07 5.9202e+06 0
+1.7735e+07 5.7359e+06 0
+1.6999e+07 5.5255e+06 0
+1.6299e+07 5.3038e+06 0
+1.5632e+07 5.0821e+06 0
+1.4994e+07 4.8677e+06 0
+1.4383e+07 4.6655e+06 0
+1.3794e+07 4.4777e+06 0
+1.3224e+07 4.3048e+06 0
+1.2669e+07 4.1465e+06 0
+1.2129e+07 4.0017e+06 0
+1.16e+07 3.8693e+06 0
+1.1081e+07 3.7478e+06 0
+1.0571e+07 3.6363e+06 0
+1.0069e+07 3.5338e+06 0
+9.5751e+06 3.4393e+06 0
+9.0883e+06 3.3524e+06 0
+8.6085e+06 3.2724e+06 0
+8.1358e+06 3.199e+06 0
+7.6701e+06 3.1317e+06 0
+7.2113e+06 3.0703e+06 0
+6.7595e+06 3.0144e+06 0
+6.3147e+06 2.9638e+06 0
+5.8769e+06 2.9182e+06 0
+5.446e+06 2.8773e+06 0
+5.022e+06 2.8409e+06 0
+4.6047e+06 2.8087e+06 0
+4.1939e+06 2.7805e+06 0
+3.7894e+06 2.7559e+06 0
+3.3908e+06 2.7348e+06 0
+2.9979e+06 2.717e+06 0
+2.6102e+06 2.7022e+06 0
+2.2272e+06 2.6902e+06 0
+1.8484e+06 2.6809e+06 0
+1.4735e+06 2.6741e+06 0
+1.1017e+06 2.6697e+06 0
+732450 2.6676e+06 0
+365250 2.6677e+06 0
+-577.97 2.6699e+06 0
+-365660 2.6742e+06 0
+-730630 2.6805e+06 0
+-1.0961e+06 2.6887e+06 0
+-1.4628e+06 2.6989e+06 0
+-1.8314e+06 2.7111e+06 0
+-2.2024e+06 2.7253e+06 0
+-2.5766e+06 2.7414e+06 0
+-2.9545e+06 2.7595e+06 0
+-3.3367e+06 2.7797e+06 0
+-3.724e+06 2.802e+06 0
+-4.1168e+06 2.8265e+06 0
+-4.5158e+06 2.8531e+06 0
+-4.9214e+06 2.8821e+06 0
+-5.3343e+06 2.9134e+06 0
+-5.7548e+06 2.9472e+06 0
+-6.1835e+06 2.9834e+06 0
+-6.6207e+06 3.0223e+06 0
+-7.0669e+06 3.0639e+06 0
+-7.5222e+06 3.1082e+06 0
+-7.9871e+06 3.1552e+06 0
+-8.4618e+06 3.2051e+06 0
+-8.9464e+06 3.2578e+06 0
+-9.441e+06 3.3134e+06 0
+-9.9459e+06 3.3718e+06 0
+-1.0461e+07 3.4331e+06 0
+-1.0986e+07 3.4971e+06 0
+-1.1522e+07 3.5639e+06 0
+-1.2068e+07 3.6334e+06 0
+-1.2624e+07 3.7057e+06 0
+-1.319e+07 3.7806e+06 0
+-1.3766e+07 3.8585e+06 0
+-1.4352e+07 3.9394e+06 0
+-1.4948e+07 4.0239e+06 0
+-1.5554e+07 4.1126e+06 0
+-1.617e+07 4.2066e+06 0
+-1.6795e+07 4.3074e+06 0
+-1.7431e+07 4.4172e+06 0
+-1.8077e+07 4.5389e+06 0
+-1.8734e+07 4.6765e+06 0
+-1.9402e+07 4.8351e+06 0
+-2.0081e+07 5.0214e+06 0
+-2.0773e+07 5.2432e+06 0
+-2.148e+07 5.51e+06 0
+-2.2202e+07 5.8328e+06 0
+-2.2943e+07 6.2233e+06 0
+-2.3706e+07 6.6935e+06 0
+-2.4497e+07 7.2543e+06 0
+-2.5321e+07 7.9141e+06 0
+-2.6185e+07 8.6764e+06 0
+-2.7096e+07 9.5377e+06 0
+-2.8061e+07 1.0485e+07 0
+-2.9085e+07 1.1492e+07 0
+-3.0169e+07 1.2522e+07 0
+-3.1305e+07 1.3524e+07 0
+-3.2481e+07 1.4436e+07 0
+-3.3671e+07 1.5192e+07 0
+-3.4841e+07 1.5725e+07 0
+-3.595e+07 1.5977e+07 0
+-3.6952e+07 1.5906e+07 0
+-3.7801e+07 1.5491e+07 0
+-3.846e+07 1.4734e+07 0
+-3.8902e+07 1.3664e+07 0
+-3.9115e+07 1.2328e+07 0
+-3.9103e+07 1.079e+07 0
+-3.8883e+07 9.1197e+06 0
+-3.8486e+07 7.3876e+06 0
+-3.795e+07 5.659e+06 0
+-3.7314e+07 3.9893e+06 0
+-3.6619e+07 2.4216e+06 0
+-3.5901e+07 986270 0
+-3.5189e+07 -298470 0
+-3.4507e+07 -1.4247e+06 0
+-3.3873e+07 -2.3927e+06 0
+-3.3295e+07 -3.2088e+06 0
+-3.278e+07 -3.8832e+06 0
+-3.2329e+07 -4.4283e+06 0
+-3.194e+07 -4.8573e+06 0
+-3.1607e+07 -5.1832e+06 0
+-3.1327e+07 -5.4184e+06 0
+-3.1093e+07 -5.5746e+06 0
+-3.0899e+07 -5.6628e+06 0
+-3.074e+07 -5.6927e+06 0
+-3.061e+07 -5.6727e+06 0
+-3.0505e+07 -5.6102e+06 0
+-3.0422e+07 -5.5109e+06 0
+-3.0357e+07 -5.38e+06 0
+-3.0306e+07 -5.2222e+06 0
+-3.0267e+07 -5.0423e+06 0
+-3.0236e+07 -4.8448e+06 0
+-3.0212e+07 -4.6339e+06 0
+-3.0191e+07 -4.4119e+06 0
+-3.0172e+07 -4.1798e+06 0
+-3.0154e+07 -3.9372e+06 0
+-3.0135e+07 -3.684e+06 0
+-3.0115e+07 -3.4212e+06 0
+-3.0093e+07 -3.1513e+06 0
+-3.0069e+07 -2.8777e+06 0
+-3.0043e+07 -2.6042e+06 0
+-3.0016e+07 -2.3341e+06 0
+-2.999e+07 -2.0705e+06 0
+-2.9964e+07 -1.8168e+06 0
+-2.9938e+07 -1.5769e+06 0
+-2.9912e+07 -1.3537e+06 0
+-2.9886e+07 -1.1483e+06 0
+-2.9861e+07 -958320 0
+-2.9838e+07 -778870 0
+-2.982e+07 -604420 0
+-2.9806e+07 -432140 0
+-2.9797e+07 -264410 0
+-2.9794e+07 -109110 0
+-2.9798e+07 22984 0
+-2.9812e+07 123170 0
+-2.9838e+07 190010 0
+-2.9881e+07 231620 0
+-2.9938e+07 262640 0
+-3.0008e+07 296300 0
+-3.0088e+07 335460 0
+-3.0175e+07 368820 0
+-3.0268e+07 376560 0
+-3.0367e+07 343540 0
+-3.047e+07 272020 0
+-3.0574e+07 183850 0
+-3.0676e+07 108290 0
+-3.0775e+07 61605 0
+-3.0872e+07 32825 0
+-3.0971e+07 -12302 0
+-3.1076e+07 -108950 0
+-3.1185e+07 -266510 0
+-3.1291e+07 -457150 0
+-3.1384e+07 -630460 0
+-3.146e+07 -746500 0
+-3.1521e+07 -804990 0
+-3.1576e+07 -848700 0
+-3.1636e+07 -936260 0
+-3.17e+07 -1.1015e+06 0
+-3.1755e+07 -1.3278e+06 0
+-3.178e+07 -1.5559e+06 0
+-3.1755e+07 -1.7223e+06 0
+-3.1678e+07 -1.8011e+06 0
+-3.1567e+07 -1.8209e+06 0
+-3.1451e+07 -1.8453e+06 0
+-3.1358e+07 -1.9295e+06 0
+-3.1293e+07 -2.0831e+06 0
+-3.1237e+07 -2.2645e+06 0
+-3.1157e+07 -2.4081e+06 0
+-3.1024e+07 -2.4673e+06 0
+-3.0833e+07 -2.4435e+06 0
+-3.0604e+07 -2.3848e+06 0
+-3.037e+07 -2.3566e+06 0
+-3.0158e+07 -2.4039e+06 0
+-2.9977e+07 -2.5276e+06 0
+-2.9807e+07 -2.6859e+06 0
+-2.9616e+07 -2.8179e+06 0
+-2.9375e+07 -2.8719e+06 0
+-2.907e+07 -2.8269e+06 0
+-2.8706e+07 -2.6963e+06 0
+-2.8309e+07 -2.5177e+06 0
+-2.7905e+07 -2.3357e+06 0
+-2.7521e+07 -2.1861e+06 0
+2.3748e+07 763990 0
+2.3805e+07 759830 0
+2.3873e+07 745270 0
+2.3952e+07 719630 0
+2.404e+07 682800 0
+2.4136e+07 635450 0
+2.4237e+07 579040 0
+2.4338e+07 515650 0
+2.4437e+07 447550 0
+2.4533e+07 376730 0
+2.4623e+07 304390 0
+2.4709e+07 230690 0
+2.4791e+07 154830 0
+2.4871e+07 75525 0
+2.4951e+07 -8419.6 0
+2.5032e+07 -97440 0
+2.5115e+07 -190880 0
+2.5198e+07 -287030 0
+2.5279e+07 -383550 0
+2.5359e+07 -478060 0
+2.5434e+07 -568730 0
+2.5503e+07 -654510 0
+2.5565e+07 -735100 0
+2.5621e+07 -810590 0
+2.567e+07 -880980 0
+2.5713e+07 -945910 0
+2.5751e+07 -1.0045e+06 0
+2.5783e+07 -1.0556e+06 0
+2.5809e+07 -1.098e+06 0
+2.5829e+07 -1.1306e+06 0
+2.5842e+07 -1.153e+06 0
+2.5848e+07 -1.165e+06 0
+2.5847e+07 -1.1667e+06 0
+2.5837e+07 -1.1582e+06 0
+2.5819e+07 -1.1396e+06 0
+2.5794e+07 -1.1108e+06 0
+2.5761e+07 -1.0717e+06 0
+2.5721e+07 -1.0223e+06 0
+2.5675e+07 -963000 0
+2.5621e+07 -894280 0
+2.5562e+07 -817080 0
+2.5497e+07 -732520 0
+2.5426e+07 -641790 0
+2.5351e+07 -546100 0
+2.5271e+07 -446510 0
+2.5189e+07 -344000 0
+2.5104e+07 -239520 0
+2.5018e+07 -134070 0
+2.4933e+07 -28796 0
+2.4849e+07 74952 0
+2.4769e+07 175690 0
+2.4693e+07 271860 0
+2.4622e+07 361990 0
+2.4559e+07 444750 0
+2.4504e+07 519000 0
+2.4459e+07 583810 0
+2.4424e+07 638340 0
+2.4402e+07 681800 0
+2.4394e+07 713380 0
+2.44e+07 732280 0
+2.4421e+07 737780 0
+2.4458e+07 729250 0
+2.4511e+07 706290 0
+2.4582e+07 668720 0
+2.467e+07 616590 0
+2.4775e+07 550130 0
+2.4896e+07 469730 0
+2.5034e+07 375920 0
+2.5188e+07 269280 0
+2.5356e+07 150500 0
+2.5537e+07 20388 0
+2.5731e+07 -120150 0
+2.5935e+07 -270040 0
+2.6148e+07 -428040 0
+2.6368e+07 -592710 0
+2.6594e+07 -762370 0
+2.6824e+07 -935070 0
+2.7056e+07 -1.1086e+06 0
+2.729e+07 -1.2803e+06 0
+2.7523e+07 -1.4472e+06 0
+2.7754e+07 -1.6057e+06 0
+2.7983e+07 -1.7516e+06 0
+2.821e+07 -1.88e+06 0
+2.8435e+07 -1.9849e+06 0
+2.8658e+07 -2.0595e+06 0
+2.888e+07 -2.0956e+06 0
+2.9101e+07 -2.0841e+06 0
+2.9323e+07 -2.0149e+06 0
+2.9543e+07 -1.8772e+06 0
+2.9758e+07 -1.6605e+06 0
+2.9964e+07 -1.355e+06 0
+3.0153e+07 -953140 0
+3.0311e+07 -451210 0
+3.0423e+07 149350 0
+3.0471e+07 840250 0
+3.0435e+07 1.6053e+06 0
+3.0295e+07 2.4204e+06 0
+3.0034e+07 3.2539e+06 0
+2.9643e+07 4.0696e+06 0
+2.912e+07 4.8298e+06 0
+2.847e+07 5.4994e+06 0
+2.771e+07 6.0504e+06 0
+2.686e+07 6.465e+06 0
+2.5947e+07 6.7372e+06 0
+2.4998e+07 6.8728e+06 0
+2.4036e+07 6.8872e+06 0
+2.3082e+07 6.8022e+06 0
+2.2149e+07 6.6426e+06 0
+2.1247e+07 6.4326e+06 0
+2.0379e+07 6.1939e+06 0
+1.9547e+07 5.9438e+06 0
+1.875e+07 5.6951e+06 0
+1.7984e+07 5.4564e+06 0
+1.7245e+07 5.2326e+06 0
+1.6532e+07 5.0259e+06 0
+1.584e+07 4.8366e+06 0
+1.5167e+07 4.664e+06 0
+1.4511e+07 4.5068e+06 0
+1.387e+07 4.3632e+06 0
+1.3242e+07 4.2319e+06 0
+1.2626e+07 4.1113e+06 0
+1.2022e+07 4.0003e+06 0
+1.1429e+07 3.898e+06 0
+1.0845e+07 3.8034e+06 0
+1.0271e+07 3.7161e+06 0
+9.7071e+06 3.6356e+06 0
+9.1521e+06 3.5613e+06 0
+8.6061e+06 3.493e+06 0
+8.069e+06 3.4303e+06 0
+7.5406e+06 3.373e+06 0
+7.0207e+06 3.3208e+06 0
+6.5092e+06 3.2735e+06 0
+6.0057e+06 3.2308e+06 0
+5.51e+06 3.1926e+06 0
+5.0219e+06 3.1585e+06 0
+4.5409e+06 3.1284e+06 0
+4.0665e+06 3.1021e+06 0
+3.5985e+06 3.0794e+06 0
+3.1362e+06 3.0601e+06 0
+2.6792e+06 3.0441e+06 0
+2.2267e+06 3.0313e+06 0
+1.7784e+06 3.0214e+06 0
+1.3335e+06 3.0144e+06 0
+891290 3.0102e+06 0
+451230 3.0088e+06 0
+12598 3.01e+06 0
+-425300 3.0138e+06 0
+-863160 3.0202e+06 0
+-1.3017e+06 3.0291e+06 0
+-1.7415e+06 3.0405e+06 0
+-2.1835e+06 3.0544e+06 0
+-2.6281e+06 3.0709e+06 0
+-3.0762e+06 3.0898e+06 0
+-3.5284e+06 3.1114e+06 0
+-3.9853e+06 3.1355e+06 0
+-4.4476e+06 3.1622e+06 0
+-4.9159e+06 3.1915e+06 0
+-5.3909e+06 3.2236e+06 0
+-5.873e+06 3.2584e+06 0
+-6.3629e+06 3.296e+06 0
+-6.861e+06 3.3365e+06 0
+-7.3679e+06 3.3798e+06 0
+-7.8839e+06 3.4261e+06 0
+-8.4094e+06 3.4753e+06 0
+-8.9449e+06 3.5276e+06 0
+-9.4906e+06 3.5828e+06 0
+-1.0047e+07 3.6411e+06 0
+-1.0614e+07 3.7024e+06 0
+-1.1191e+07 3.7667e+06 0
+-1.178e+07 3.834e+06 0
+-1.238e+07 3.9041e+06 0
+-1.2991e+07 3.977e+06 0
+-1.3614e+07 4.0528e+06 0
+-1.4247e+07 4.1312e+06 0
+-1.4892e+07 4.2123e+06 0
+-1.5548e+07 4.2962e+06 0
+-1.6216e+07 4.3829e+06 0
+-1.6894e+07 4.4727e+06 0
+-1.7584e+07 4.566e+06 0
+-1.8285e+07 4.6636e+06 0
+-1.8997e+07 4.7664e+06 0
+-1.9721e+07 4.876e+06 0
+-2.0456e+07 4.9946e+06 0
+-2.1201e+07 5.1251e+06 0
+-2.1958e+07 5.2714e+06 0
+-2.2726e+07 5.4388e+06 0
+-2.3504e+07 5.6336e+06 0
+-2.4292e+07 5.864e+06 0
+-2.509e+07 6.1396e+06 0
+-2.5898e+07 6.4715e+06 0
+-2.6716e+07 6.8719e+06 0
+-2.7545e+07 7.3536e+06 0
+-2.8388e+07 7.9284e+06 0
+-2.9249e+07 8.606e+06 0
+-3.0134e+07 9.3912e+06 0
+-3.1051e+07 1.0282e+07 0
+-3.2008e+07 1.1264e+07 0
+-3.3015e+07 1.2313e+07 0
+-3.4078e+07 1.3387e+07 0
+-3.5199e+07 1.4432e+07 0
+-3.6372e+07 1.5378e+07 0
+-3.758e+07 1.615e+07 0
+-3.8795e+07 1.6674e+07 0
+-3.9979e+07 1.6885e+07 0
+-4.1087e+07 1.6736e+07 0
+-4.2076e+07 1.6207e+07 0
+-4.2904e+07 1.5309e+07 0
+-4.3545e+07 1.4077e+07 0
+-4.3984e+07 1.2573e+07 0
+-4.4223e+07 1.0872e+07 0
+-4.428e+07 9.0558e+06 0
+-4.4182e+07 7.202e+06 0
+-4.3962e+07 5.3805e+06 0
+-4.3654e+07 3.6472e+06 0
+-4.3293e+07 2.0431e+06 0
+-4.2907e+07 594360 0
+-4.2517e+07 -685730 0
+-4.2138e+07 -1.7945e+06 0
+-4.1781e+07 -2.7373e+06 0
+-4.1451e+07 -3.5243e+06 0
+-4.1147e+07 -4.1689e+06 0
+-4.0867e+07 -4.6858e+06 0
+-4.0609e+07 -5.0895e+06 0
+-4.0368e+07 -5.3937e+06 0
+-4.0139e+07 -5.6113e+06 0
+-3.9917e+07 -5.7535e+06 0
+-3.97e+07 -5.831e+06 0
+-3.9485e+07 -5.8526e+06 0
+-3.9269e+07 -5.8262e+06 0
+-3.9053e+07 -5.7583e+06 0
+-3.8837e+07 -5.6542e+06 0
+-3.862e+07 -5.5188e+06 0
+-3.8404e+07 -5.3567e+06 0
+-3.8189e+07 -5.1726e+06 0
+-3.7978e+07 -4.9711e+06 0
+-3.7769e+07 -4.756e+06 0
+-3.7566e+07 -4.5297e+06 0
+-3.7369e+07 -4.293e+06 0
+-3.7178e+07 -4.046e+06 0
+-3.6992e+07 -3.7888e+06 0
+-3.6813e+07 -3.5225e+06 0
+-3.6639e+07 -3.2496e+06 0
+-3.6469e+07 -2.9731e+06 0
+-3.6306e+07 -2.6958e+06 0
+-3.6151e+07 -2.4203e+06 0
+-3.6006e+07 -2.1498e+06 0
+-3.5874e+07 -1.8881e+06 0
+-3.5756e+07 -1.6396e+06 0
+-3.5653e+07 -1.408e+06 0
+-3.5564e+07 -1.1943e+06 0
+-3.5489e+07 -995820 0
+-3.5428e+07 -807450 0
+-3.5381e+07 -623820 0
+-3.5349e+07 -442630 0
+-3.5329e+07 -266600 0
+-3.5323e+07 -103130 0
+-3.5329e+07 38365 0
+-3.5352e+07 150660 0
+-3.5395e+07 232660 0
+-3.5461e+07 290910 0
+-3.5548e+07 337150 0
+-3.5651e+07 381980 0
+-3.5765e+07 427710 0
+-3.5886e+07 465170 0
+-3.6012e+07 477900 0
+-3.615e+07 452990 0
+-3.6303e+07 391900 0
+-3.6473e+07 312950 0
+-3.6654e+07 241410 0
+-3.6835e+07 192200 0
+-3.7009e+07 156930 0
+-3.7173e+07 106410 0
+-3.7333e+07 9623.4 0
+-3.7498e+07 -142700 0
+-3.7674e+07 -326970 0
+-3.786e+07 -498430 0
+-3.8047e+07 -619910 0
+-3.8225e+07 -688620 0
+-3.839e+07 -741190 0
+-3.8546e+07 -831380 0
+-3.8704e+07 -994120 0
+-3.8866e+07 -1.2202e+06 0
+-3.9025e+07 -1.4594e+06 0
+-3.9165e+07 -1.6515e+06 0
+-3.9271e+07 -1.7639e+06 0
+-3.9341e+07 -1.8114e+06 0
+-3.9389e+07 -1.8453e+06 0
+-3.9439e+07 -1.9188e+06 0
+-3.9508e+07 -2.0528e+06 0
+-3.9596e+07 -2.2236e+06 0
+-3.9682e+07 -2.3795e+06 0
+-3.9735e+07 -2.4741e+06 0
+-3.9736e+07 -2.4956e+06 0
+-3.9687e+07 -2.4724e+06 0
+-3.9611e+07 -2.4558e+06 0
+-3.954e+07 -2.4906e+06 0
+-3.9495e+07 -2.5905e+06 0
+-3.9477e+07 -2.7327e+06 0
+-3.9464e+07 -2.8706e+06 0
+-3.9426e+07 -2.9563e+06 0
+-3.9333e+07 -2.9609e+06 0
+-3.9172e+07 -2.8834e+06 0
+-3.8948e+07 -2.7474e+06 0
+-3.8678e+07 -2.5887e+06 0
+-3.839e+07 -2.442e+06 0
+2.755e+07 703890 0
+2.7643e+07 691050 0
+2.7746e+07 667810 0
+2.7858e+07 634350 0
+2.7978e+07 591490 0
+2.8101e+07 540630 0
+2.8226e+07 483650 0
+2.8347e+07 422580 0
+2.8462e+07 359160 0
+2.8569e+07 294460 0
+2.8667e+07 228610 0
+2.8756e+07 160790 0
+2.8838e+07 89599 0
+2.8915e+07 13554 0
+2.8988e+07 -68220 0
+2.9057e+07 -155530 0
+2.9122e+07 -246950 0
+2.9183e+07 -340120 0
+2.9237e+07 -432290 0
+2.9283e+07 -521010 0
+2.9319e+07 -604650 0
+2.9345e+07 -682600 0
+2.9359e+07 -755070 0
+2.9363e+07 -822580 0
+2.9355e+07 -885480 0
+2.9339e+07 -943520 0
+2.9313e+07 -995800 0
+2.928e+07 -1.041e+06 0
+2.9239e+07 -1.0776e+06 0
+2.919e+07 -1.1044e+06 0
+2.9134e+07 -1.121e+06 0
+2.9071e+07 -1.1271e+06 0
+2.9e+07 -1.123e+06 0
+2.8924e+07 -1.1091e+06 0
+2.8841e+07 -1.0855e+06 0
+2.8755e+07 -1.0525e+06 0
+2.8664e+07 -1.0099e+06 0
+2.8571e+07 -957680 0
+2.8477e+07 -896170 0
+2.8382e+07 -825860 0
+2.8287e+07 -747610 0
+2.8193e+07 -662540 0
+2.8101e+07 -571890 0
+2.8012e+07 -476900 0
+2.7926e+07 -378710 0
+2.7845e+07 -278380 0
+2.7769e+07 -176900 0
+2.77e+07 -75326 0
+2.7638e+07 25163 0
+2.7585e+07 123240 0
+2.7541e+07 217450 0
+2.7508e+07 306300 0
+2.7486e+07 388380 0
+2.7476e+07 462440 0
+2.7478e+07 527400 0
+2.7493e+07 582360 0
+2.7522e+07 626530 0
+2.7564e+07 659180 0
+2.7619e+07 679570 0
+2.7689e+07 687010 0
+2.7773e+07 680880 0
+2.7871e+07 660710 0
+2.7982e+07 626250 0
+2.8105e+07 577510 0
+2.8241e+07 514700 0
+2.8387e+07 438260 0
+2.8543e+07 348800 0
+2.8707e+07 247020 0
+2.8876e+07 133710 0
+2.905e+07 9748.5 0
+2.9226e+07 -123920 0
+2.94e+07 -266250 0
+2.9572e+07 -416050 0
+2.9738e+07 -571990 0
+2.9895e+07 -732580 0
+3.0041e+07 -896150 0
+3.0172e+07 -1.0608e+06 0
+3.0288e+07 -1.2244e+06 0
+3.0384e+07 -1.3846e+06 0
+3.046e+07 -1.5386e+06 0
+3.0514e+07 -1.6833e+06 0
+3.0545e+07 -1.8151e+06 0
+3.0555e+07 -1.9294e+06 0
+3.0543e+07 -2.0212e+06 0
+3.0512e+07 -2.0841e+06 0
+3.0464e+07 -2.1105e+06 0
+3.0404e+07 -2.0918e+06 0
+3.0336e+07 -2.0178e+06 0
+3.0263e+07 -1.8773e+06 0
+3.0188e+07 -1.6586e+06 0
+3.0113e+07 -1.3502e+06 0
+3.0034e+07 -941900 0
+2.9948e+07 -426810 0
+2.9843e+07 197030 0
+2.9705e+07 924420 0
+2.9517e+07 1.7413e+06 0
+2.9258e+07 2.6236e+06 0
+2.8912e+07 3.5381e+06 0
+2.8463e+07 4.444e+06 0
+2.7906e+07 5.2971e+06 0
+2.7242e+07 6.0551e+06 0
+2.6484e+07 6.6828e+06 0
+2.5649e+07 7.1569e+06 0
+2.4762e+07 7.4688e+06 0
+2.3846e+07 7.6243e+06 0
+2.2925e+07 7.6409e+06 0
+2.2015e+07 7.5446e+06 0
+2.113e+07 7.3644e+06 0
+2.0275e+07 7.1287e+06 0
+1.9454e+07 6.8625e+06 0
+1.8666e+07 6.5854e+06 0
+1.7909e+07 6.3116e+06 0
+1.718e+07 6.0501e+06 0
+1.6476e+07 5.8061e+06 0
+1.5794e+07 5.5815e+06 0
+1.5132e+07 5.3765e+06 0
+1.4487e+07 5.1898e+06 0
+1.3858e+07 5.0199e+06 0
+1.3243e+07 4.8648e+06 0
+1.2642e+07 4.7229e+06 0
+1.2053e+07 4.5925e+06 0
+1.1475e+07 4.4723e+06 0
+1.0908e+07 4.3613e+06 0
+1.0352e+07 4.2585e+06 0
+9.8055e+06 4.1632e+06 0
+9.2684e+06 4.075e+06 0
+8.7405e+06 3.9933e+06 0
+8.2214e+06 3.9178e+06 0
+7.711e+06 3.8481e+06 0
+7.2089e+06 3.784e+06 0
+6.7148e+06 3.7253e+06 0
+6.2285e+06 3.6716e+06 0
+5.7497e+06 3.6228e+06 0
+5.2781e+06 3.5787e+06 0
+4.8132e+06 3.539e+06 0
+4.3548e+06 3.5036e+06 0
+3.9024e+06 3.4724e+06 0
+3.4556e+06 3.4451e+06 0
+3.0138e+06 3.4217e+06 0
+2.5767e+06 3.4019e+06 0
+2.1436e+06 3.3858e+06 0
+1.714e+06 3.373e+06 0
+1.2874e+06 3.3637e+06 0
+863190 3.3576e+06 0
+440790 3.3548e+06 0
+19607 3.3551e+06 0
+-400960 3.3585e+06 0
+-821510 3.3649e+06 0
+-1.2426e+06 3.3745e+06 0
+-1.665e+06 3.387e+06 0
+-2.0891e+06 3.4026e+06 0
+-2.5155e+06 3.4211e+06 0
+-2.9449e+06 3.4427e+06 0
+-3.3778e+06 3.4673e+06 0
+-3.8148e+06 3.495e+06 0
+-4.2563e+06 3.5257e+06 0
+-4.703e+06 3.5595e+06 0
+-5.1554e+06 3.5964e+06 0
+-5.6138e+06 3.6365e+06 0
+-6.0788e+06 3.6798e+06 0
+-6.5508e+06 3.7262e+06 0
+-7.0301e+06 3.7759e+06 0
+-7.5173e+06 3.8288e+06 0
+-8.0124e+06 3.885e+06 0
+-8.516e+06 3.9444e+06 0
+-9.0282e+06 4.0071e+06 0
+-9.5493e+06 4.0729e+06 0
+-1.0079e+07 4.142e+06 0
+-1.0619e+07 4.2141e+06 0
+-1.1167e+07 4.2893e+06 0
+-1.1726e+07 4.3675e+06 0
+-1.2293e+07 4.4486e+06 0
+-1.2871e+07 4.5325e+06 0
+-1.3458e+07 4.6191e+06 0
+-1.4055e+07 4.7085e+06 0
+-1.4662e+07 4.8007e+06 0
+-1.5279e+07 4.8958e+06 0
+-1.5906e+07 4.994e+06 0
+-1.6543e+07 5.0958e+06 0
+-1.7191e+07 5.2019e+06 0
+-1.7848e+07 5.3133e+06 0
+-1.8516e+07 5.4315e+06 0
+-1.9195e+07 5.5586e+06 0
+-1.9883e+07 5.6975e+06 0
+-2.0582e+07 5.852e+06 0
+-2.129e+07 6.0272e+06 0
+-2.2007e+07 6.2293e+06 0
+-2.2733e+07 6.4665e+06 0
+-2.3465e+07 6.7482e+06 0
+-2.4204e+07 7.0858e+06 0
+-2.495e+07 7.492e+06 0
+-2.5703e+07 7.9803e+06 0
+-2.6467e+07 8.5641e+06 0
+-2.7245e+07 9.2549e+06 0
+-2.8047e+07 1.006e+07 0
+-2.8885e+07 1.098e+07 0
+-2.9773e+07 1.2003e+07 0
+-3.0729e+07 1.3104e+07 0
+-3.177e+07 1.4242e+07 0
+-3.2907e+07 1.5356e+07 0
+-3.4145e+07 1.6371e+07 0
+-3.5475e+07 1.7201e+07 0
+-3.6874e+07 1.776e+07 0
+-3.8303e+07 1.7973e+07 0
+-3.9713e+07 1.7788e+07 0
+-4.1053e+07 1.7183e+07 0
+-4.2273e+07 1.6173e+07 0
+-4.3337e+07 1.4806e+07 0
+-4.4223e+07 1.3154e+07 0
+-4.4928e+07 1.1306e+07 0
+-4.5462e+07 9.3558e+06 0
+-4.585e+07 7.389e+06 0
+-4.612e+07 5.4788e+06 0
+-4.6301e+07 3.6815e+06 0
+-4.6421e+07 2.035e+06 0
+-4.6502e+07 561350 0
+-4.6558e+07 -731390 0
+-4.6601e+07 -1.8454e+06 0
+-4.6634e+07 -2.7898e+06 0
+-4.6657e+07 -3.5783e+06 0
+-4.6668e+07 -4.2262e+06 0
+-4.6664e+07 -4.7494e+06 0
+-4.6639e+07 -5.163e+06 0
+-4.6589e+07 -5.4808e+06 0
+-4.6509e+07 -5.715e+06 0
+-4.6398e+07 -5.8766e+06 0
+-4.6251e+07 -5.9751e+06 0
+-4.6068e+07 -6.0188e+06 0
+-4.5849e+07 -6.0145e+06 0
+-4.5594e+07 -5.9679e+06 0
+-4.5306e+07 -5.8835e+06 0
+-4.4988e+07 -5.7656e+06 0
+-4.4643e+07 -5.6183e+06 0
+-4.4276e+07 -5.4461e+06 0
+-4.3891e+07 -5.2534e+06 0
+-4.3493e+07 -5.0439e+06 0
+-4.3087e+07 -4.8204e+06 0
+-4.2676e+07 -4.5842e+06 0
+-4.2262e+07 -4.3363e+06 0
+-4.1847e+07 -4.0777e+06 0
+-4.1431e+07 -3.8102e+06 0
+-4.1015e+07 -3.536e+06 0
+-4.0598e+07 -3.2574e+06 0
+-4.0183e+07 -2.976e+06 0
+-3.9776e+07 -2.6934e+06 0
+-3.938e+07 -2.412e+06 0
+-3.9001e+07 -2.136e+06 0
+-3.8643e+07 -1.8709e+06 0
+-3.8309e+07 -1.6215e+06 0
+-3.7998e+07 -1.3901e+06 0
+-3.771e+07 -1.1744e+06 0
+-3.7444e+07 -969170 0
+-3.7201e+07 -768850 0
+-3.6981e+07 -571060 0
+-3.6783e+07 -378530 0
+-3.6608e+07 -198440 0
+-3.6456e+07 -39524 0
+-3.633e+07 91820 0
+-3.6231e+07 194750 0
+-3.6161e+07 274780 0
+-3.6117e+07 341320 0
+-3.6097e+07 402590 0
+-3.6096e+07 460200 0
+-3.6109e+07 506980 0
+-3.6138e+07 530560 0
+-3.6187e+07 521680 0
+-3.6265e+07 482130 0
+-3.6374e+07 426200 0
+-3.6512e+07 372520 0
+-3.6668e+07 330820 0
+-3.6826e+07 292750 0
+-3.6979e+07 235110 0
+-3.7128e+07 135510 0
+-3.7282e+07 -9472.7 0
+-3.7457e+07 -177230 0
+-3.7657e+07 -330350 0
+-3.788e+07 -440500 0
+-3.8111e+07 -509010 0
+-3.8338e+07 -568980 0
+-3.8557e+07 -665590 0
+-3.8776e+07 -826650 0
+-3.9005e+07 -1.0428e+06 0
+-3.9253e+07 -1.2714e+06 0
+-3.9515e+07 -1.4613e+06 0
+-3.9776e+07 -1.5841e+06 0
+-4.0023e+07 -1.6498e+06 0
+-4.025e+07 -1.6991e+06 0
+-4.0467e+07 -1.7767e+06 0
+-4.0685e+07 -1.9035e+06 0
+-4.0911e+07 -2.0651e+06 0
+-4.1141e+07 -2.2221e+06 0
+-4.1358e+07 -2.3349e+06 0
+-4.1545e+07 -2.3872e+06 0
+-4.1698e+07 -2.3947e+06 0
+-4.1827e+07 -2.3947e+06 0
+-4.1955e+07 -2.4255e+06 0
+-4.21e+07 -2.5063e+06 0
+-4.227e+07 -2.6284e+06 0
+-4.2453e+07 -2.7607e+06 0
+-4.2623e+07 -2.8649e+06 0
+-4.275e+07 -2.9115e+06 0
+-4.2812e+07 -2.8901e+06 0
+-4.2803e+07 -2.8102e+06 0
+-4.2732e+07 -2.6952e+06 0
+-4.262e+07 -2.5724e+06 0
+2.4995e+07 617040 0
+2.5115e+07 598060 0
+2.5241e+07 569310 0
+2.5371e+07 531690 0
+2.5503e+07 486650 0
+2.5634e+07 436060 0
+2.5761e+07 381950 0
+2.5882e+07 326110 0
+2.5994e+07 269720 0
+2.6096e+07 213060 0
+2.6187e+07 155450 0
+2.6268e+07 95435 0
+2.634e+07 31247 0
+2.6403e+07 -38553 0
+2.6458e+07 -114510 0
+2.6504e+07 -195920 0
+2.6541e+07 -280880 0
+2.6568e+07 -366650 0
+2.6584e+07 -450370 0
+2.6588e+07 -529690 0
+2.6578e+07 -603270 0
+2.6555e+07 -670890 0
+2.6519e+07 -733120 0
+2.6471e+07 -790810 0
+2.641e+07 -844530 0
+2.6339e+07 -894130 0
+2.6257e+07 -938720 0
+2.6167e+07 -976880 0
+2.6068e+07 -1.0071e+06 0
+2.5963e+07 -1.0282e+06 0
+2.585e+07 -1.0394e+06 0
+2.5732e+07 -1.0408e+06 0
+2.561e+07 -1.0327e+06 0
+2.5484e+07 -1.0157e+06 0
+2.5356e+07 -989970 0
+2.5227e+07 -955880 0
+2.51e+07 -913410 0
+2.4975e+07 -862540 0
+2.4853e+07 -803440 0
+2.4737e+07 -736530 0
+2.4628e+07 -662580 0
+2.4526e+07 -582620 0
+2.4433e+07 -497840 0
+2.4349e+07 -409440 0
+2.4276e+07 -318550 0
+2.4214e+07 -226210 0
+2.4164e+07 -133420 0
+2.4128e+07 -41200 0
+2.4104e+07 49324 0
+2.4095e+07 136920 0
+2.41e+07 220240 0
+2.412e+07 297960 0
+2.4155e+07 368800 0
+2.4204e+07 431630 0
+2.4267e+07 485470 0
+2.4344e+07 529530 0
+2.4434e+07 563080 0
+2.4536e+07 585470 0
+2.4651e+07 596070 0
+2.4775e+07 594290 0
+2.491e+07 579660 0
+2.5053e+07 551850 0
+2.5202e+07 510780 0
+2.5357e+07 456590 0
+2.5515e+07 389670 0
+2.5675e+07 310600 0
+2.5834e+07 220130 0
+2.5989e+07 119120 0
+2.6139e+07 8495.9 0
+2.6281e+07 -110760 0
+2.6412e+07 -237580 0
+2.653e+07 -370850 0
+2.6631e+07 -509320 0
+2.6712e+07 -651660 0
+2.6772e+07 -796400 0
+2.6807e+07 -941930 0
+2.6816e+07 -1.0865e+06 0
+2.6794e+07 -1.2282e+06 0
+2.6742e+07 -1.365e+06 0
+2.6657e+07 -1.4945e+06 0
+2.6539e+07 -1.6142e+06 0
+2.6388e+07 -1.7209e+06 0
+2.6205e+07 -1.8111e+06 0
+2.5992e+07 -1.8803e+06 0
+2.5752e+07 -1.9232e+06 0
+2.5489e+07 -1.9332e+06 0
+2.5209e+07 -1.9023e+06 0
+2.4919e+07 -1.8211e+06 0
+2.4624e+07 -1.6785e+06 0
+2.4333e+07 -1.4623e+06 0
+2.4051e+07 -1.1599e+06 0
+2.3781e+07 -758930 0
+2.3523e+07 -249470 0
+2.3274e+07 374180 0
+2.3024e+07 1.1107e+06 0
+2.276e+07 1.9494e+06 0
+2.2464e+07 2.8683e+06 0
+2.2118e+07 3.8336e+06 0
+2.1707e+07 4.8015e+06 0
+2.1221e+07 5.7223e+06 0
+2.0659e+07 6.5465e+06 0
+2.0029e+07 7.2319e+06 0
+1.9346e+07 7.7495e+06 0
+1.8629e+07 8.0876e+06 0
+1.7901e+07 8.252e+06 0
+1.7178e+07 8.263e+06 0
+1.6474e+07 8.1504e+06 0
+1.5798e+07 7.9476e+06 0
+1.5153e+07 7.6869e+06 0
+1.4538e+07 7.3958e+06 0
+1.3951e+07 7.0957e+06 0
+1.3389e+07 6.8014e+06 0
+1.2848e+07 6.5221e+06 0
+1.2325e+07 6.2625e+06 0
+1.1819e+07 6.0244e+06 0
+1.1326e+07 5.8073e+06 0
+1.0845e+07 5.6099e+06 0
+1.0376e+07 5.4301e+06 0
+9.9169e+06 5.266e+06 0
+9.4678e+06 5.1155e+06 0
+9.028e+06 4.9772e+06 0
+8.5968e+06 4.8495e+06 0
+8.1739e+06 4.7313e+06 0
+7.7588e+06 4.6217e+06 0
+7.3512e+06 4.5199e+06 0
+6.9508e+06 4.4255e+06 0
+6.5573e+06 4.3378e+06 0
+6.1703e+06 4.2565e+06 0
+5.7897e+06 4.1813e+06 0
+5.4152e+06 4.1119e+06 0
+5.0466e+06 4.048e+06 0
+4.6835e+06 3.9894e+06 0
+4.3257e+06 3.9359e+06 0
+3.973e+06 3.8873e+06 0
+3.6251e+06 3.8434e+06 0
+3.2817e+06 3.8041e+06 0
+2.9424e+06 3.7692e+06 0
+2.607e+06 3.7386e+06 0
+2.275e+06 3.7121e+06 0
+1.9463e+06 3.6896e+06 0
+1.6203e+06 3.6709e+06 0
+1.2966e+06 3.6562e+06 0
+975050 3.6451e+06 0
+655080 3.6376e+06 0
+336340 3.6338e+06 0
+18415 3.6334e+06 0
+-299080 3.6365e+06 0
+-616550 3.6431e+06 0
+-934410 3.653e+06 0
+-1.253e+06 3.6664e+06 0
+-1.5728e+06 3.6831e+06 0
+-1.8942e+06 3.7031e+06 0
+-2.2174e+06 3.7266e+06 0
+-2.543e+06 3.7534e+06 0
+-2.8712e+06 3.7835e+06 0
+-3.2025e+06 3.8171e+06 0
+-3.537e+06 3.854e+06 0
+-3.8753e+06 3.8944e+06 0
+-4.2175e+06 3.9382e+06 0
+-4.564e+06 3.9854e+06 0
+-4.915e+06 4.0361e+06 0
+-5.2708e+06 4.0902e+06 0
+-5.6316e+06 4.1477e+06 0
+-5.9976e+06 4.2087e+06 0
+-6.369e+06 4.2731e+06 0
+-6.7459e+06 4.3409e+06 0
+-7.1286e+06 4.4121e+06 0
+-7.517e+06 4.4865e+06 0
+-7.9115e+06 4.5641e+06 0
+-8.312e+06 4.6449e+06 0
+-8.7186e+06 4.7287e+06 0
+-9.1315e+06 4.8155e+06 0
+-9.5507e+06 4.9052e+06 0
+-9.9763e+06 4.9978e+06 0
+-1.0408e+07 5.0932e+06 0
+-1.0847e+07 5.1914e+06 0
+-1.1293e+07 5.2927e+06 0
+-1.1745e+07 5.3972e+06 0
+-1.2205e+07 5.5054e+06 0
+-1.2672e+07 5.618e+06 0
+-1.3147e+07 5.736e+06 0
+-1.3629e+07 5.8609e+06 0
+-1.4118e+07 5.9948e+06 0
+-1.4616e+07 6.1404e+06 0
+-1.5121e+07 6.3016e+06 0
+-1.5634e+07 6.4831e+06 0
+-1.6153e+07 6.6913e+06 0
+-1.668e+07 6.9339e+06 0
+-1.7213e+07 7.2209e+06 0
+-1.7752e+07 7.5636e+06 0
+-1.8299e+07 7.9754e+06 0
+-1.8855e+07 8.4712e+06 0
+-1.9424e+07 9.0662e+06 0
+-2.0016e+07 9.7746e+06 0
+-2.0641e+07 1.0607e+07 0
+-2.1315e+07 1.1567e+07 0
+-2.2062e+07 1.2648e+07 0
+-2.2905e+07 1.3825e+07 0
+-2.3871e+07 1.5058e+07 0
+-2.498e+07 1.6281e+07 0
+-2.6243e+07 1.741e+07 0
+-2.7656e+07 1.8347e+07 0
+-2.9195e+07 1.8989e+07 0
+-3.0814e+07 1.9249e+07 0
+-3.2456e+07 1.9063e+07 0
+-3.4054e+07 1.8407e+07 0
+-3.5549e+07 1.7302e+07 0
+-3.6892e+07 1.5807e+07 0
+-3.8057e+07 1.4011e+07 0
+-3.9038e+07 1.2018e+07 0
+-3.9847e+07 9.9353e+06 0
+-4.051e+07 7.8566e+06 0
+-4.1056e+07 5.8592e+06 0
+-4.1518e+07 3.9986e+06 0
+-4.1923e+07 2.3096e+06 0
+-4.2293e+07 808840 0
+-4.2642e+07 -500780 0
+-4.2977e+07 -1.6264e+06 0
+-4.3302e+07 -2.5812e+06 0
+-4.3615e+07 -3.3817e+06 0
+-4.3911e+07 -4.045e+06 0
+-4.4185e+07 -4.588e+06 0
+-4.4431e+07 -5.026e+06 0
+-4.4642e+07 -5.3726e+06 0
+-4.4813e+07 -5.6396e+06 0
+-4.494e+07 -5.8373e+06 0
+-4.5017e+07 -5.9745e+06 0
+-4.5043e+07 -6.0585e+06 0
+-4.5015e+07 -6.0953e+06 0
+-4.4933e+07 -6.0897e+06 0
+-4.4797e+07 -6.0452e+06 0
+-4.4608e+07 -5.9652e+06 0
+-4.437e+07 -5.8528e+06 0
+-4.4086e+07 -5.7118e+06 0
+-4.3762e+07 -5.5461e+06 0
+-4.3403e+07 -5.3593e+06 0
+-4.3014e+07 -5.1545e+06 0
+-4.2599e+07 -4.9341e+06 0
+-4.2161e+07 -4.6999e+06 0
+-4.17e+07 -4.4542e+06 0
+-4.1218e+07 -4.1991e+06 0
+-4.0716e+07 -3.9368e+06 0
+-4.0195e+07 -3.6684e+06 0
+-3.9658e+07 -3.3942e+06 0
+-3.9112e+07 -3.1144e+06 0
+-3.8562e+07 -2.8306e+06 0
+-3.8016e+07 -2.547e+06 0
+-3.7479e+07 -2.2703e+06 0
+-3.6955e+07 -2.0069e+06 0
+-3.6446e+07 -1.7607e+06 0
+-3.5951e+07 -1.5304e+06 0
+-3.5472e+07 -1.311e+06 0
+-3.5008e+07 -1.0962e+06 0
+-3.4559e+07 -882890 0
+-3.413e+07 -673220 0
+-3.3722e+07 -474430 0
+-3.3337e+07 -295700 0
+-3.2977e+07 -143800 0
+-3.2642e+07 -19701 0
+-3.2332e+07 82016 0
+-3.2049e+07 170280 0
+-3.1792e+07 252310 0
+-3.1561e+07 328830 0
+-3.1354e+07 392870 0
+-3.117e+07 433830 0
+-3.101e+07 445100 0
+-3.0879e+07 430190 0
+-3.0782e+07 402300 0
+-3.0719e+07 375970 0
+-3.0689e+07 355810 0
+-3.0683e+07 330580 0
+-3.0692e+07 278820 0
+-3.0711e+07 184030 0
+-3.0743e+07 49357 0
+-3.0795e+07 -99658 0
+-3.0877e+07 -228510 0
+-3.0989e+07 -315830 0
+-3.1126e+07 -369330 0
+-3.1278e+07 -423380 0
+-3.1438e+07 -518380 0
+-3.1604e+07 -674600 0
+-3.1785e+07 -877800 0
+-3.1989e+07 -1.0864e+06 0
+-3.2221e+07 -1.2561e+06 0
+-3.2477e+07 -1.3655e+06 0
+-3.2748e+07 -1.4279e+06 0
+-3.3021e+07 -1.4814e+06 0
+-3.329e+07 -1.5648e+06 0
+-3.3554e+07 -1.6946e+06 0
+-3.3815e+07 -1.8564e+06 0
+-3.4073e+07 -2.0148e+06 0
+-3.4325e+07 -2.134e+06 0
+-3.457e+07 -2.1976e+06 0
+-3.4806e+07 -2.2166e+06 0
+-3.5039e+07 -2.2216e+06 0
+-3.5278e+07 -2.2473e+06 0
+-3.553e+07 -2.3147e+06 0
+-3.5799e+07 -2.4232e+06 0
+-3.6073e+07 -2.552e+06 0
+-3.6336e+07 -2.6702e+06 0
+-3.6566e+07 -2.7497e+06 0
+-3.6746e+07 -2.7745e+06 0
+-3.6869e+07 -2.7441e+06 0
+-3.694e+07 -2.6713e+06 0
+-3.6974e+07 -2.5757e+06 0
+2.1565e+07 513270 0
+2.1706e+07 491890 0
+2.1848e+07 461840 0
+2.1989e+07 424350 0
+2.2128e+07 381130 0
+2.2262e+07 334150 0
+2.2388e+07 285330 0
+2.2507e+07 236190 0
+2.2615e+07 187480 0
+2.2713e+07 139030 0
+2.28e+07 89773 0
+2.2876e+07 38024 0
+2.2941e+07 -17991 0
+2.2996e+07 -79561 0
+2.3038e+07 -146980 0
+2.3068e+07 -219320 0
+2.3086e+07 -294520 0
+2.3089e+07 -369890 0
+2.3077e+07 -442700 0
+2.3051e+07 -510870 0
+2.301e+07 -573340 0
+2.2954e+07 -630120 0
+2.2885e+07 -681960 0
+2.2803e+07 -729820 0
+2.2709e+07 -774350 0
+2.2604e+07 -815440 0
+2.2488e+07 -852280 0
+2.2363e+07 -883500 0
+2.223e+07 -907670 0
+2.209e+07 -923610 0
+2.1944e+07 -930760 0
+2.1795e+07 -929090 0
+2.1643e+07 -919020 0
+2.149e+07 -901120 0
+2.1338e+07 -875860 0
+2.1188e+07 -843500 0
+2.1042e+07 -804100 0
+2.0903e+07 -757640 0
+2.0771e+07 -704220 0
+2.0648e+07 -644190 0
+2.0536e+07 -578190 0
+2.0436e+07 -507140 0
+2.0349e+07 -432090 0
+2.0277e+07 -354130 0
+2.0219e+07 -274320 0
+2.0178e+07 -193630 0
+2.0152e+07 -112990 0
+2.0144e+07 -33324 0
+2.0152e+07 44356 0
+2.0178e+07 118960 0
+2.0222e+07 189330 0
+2.0282e+07 254310 0
+2.0359e+07 312820 0
+2.0451e+07 363880 0
+2.0558e+07 406660 0
+2.0678e+07 440480 0
+2.0811e+07 464710 0
+2.0954e+07 478820 0
+2.1106e+07 482280 0
+2.1266e+07 474640 0
+2.143e+07 455550 0
+2.1598e+07 424820 0
+2.1768e+07 382490 0
+2.1935e+07 328810 0
+2.2099e+07 264240 0
+2.2256e+07 189450 0
+2.2404e+07 105230 0
+2.2541e+07 12497 0
+2.2663e+07 -87807 0
+2.2768e+07 -194670 0
+2.2853e+07 -307040 0
+2.2915e+07 -423810 0
+2.2953e+07 -543790 0
+2.2964e+07 -665730 0
+2.2945e+07 -788270 0
+2.2895e+07 -909960 0
+2.2811e+07 -1.0293e+06 0
+2.2693e+07 -1.1446e+06 0
+2.2539e+07 -1.2542e+06 0
+2.2349e+07 -1.3562e+06 0
+2.2123e+07 -1.4483e+06 0
+2.1863e+07 -1.5283e+06 0
+2.1568e+07 -1.593e+06 0
+2.1244e+07 -1.639e+06 0
+2.0892e+07 -1.6618e+06 0
+2.0519e+07 -1.6556e+06 0
+2.013e+07 -1.6135e+06 0
+1.9733e+07 -1.5268e+06 0
+1.9336e+07 -1.385e+06 0
+1.8947e+07 -1.176e+06 0
+1.8575e+07 -886360 0
+1.8225e+07 -502270 0
+1.7901e+07 -11040 0
+1.7602e+07 596580 0
+1.7321e+07 1.3235e+06 0
+1.7047e+07 2.1632e+06 0
+1.6761e+07 3.0967e+06 0
+1.6446e+07 4.091e+06 0
+1.6083e+07 5.1003e+06 0
+1.5662e+07 6.0699e+06 0
+1.5178e+07 6.9432e+06 0
+1.4639e+07 7.6704e+06 0
+1.4061e+07 8.2167e+06 0
+1.3463e+07 8.5675e+06 0
+1.2867e+07 8.729e+06 0
+1.229e+07 8.7248e+06 0
+1.1743e+07 8.5893e+06 0
+1.1232e+07 8.3604e+06 0
+1.0755e+07 8.0739e+06 0
+1.0309e+07 7.7597e+06 0
+9.8903e+06 7.4399e+06 0
+9.4929e+06 7.1294e+06 0
+9.1127e+06 6.8371e+06 0
+8.7461e+06 6.5669e+06 0
+8.3906e+06 6.3199e+06 0
+8.0445e+06 6.0952e+06 0
+7.7067e+06 5.891e+06 0
+7.3764e+06 5.7049e+06 0
+7.0531e+06 5.535e+06 0
+6.7363e+06 5.379e+06 0
+6.4258e+06 5.2354e+06 0
+6.1213e+06 5.1027e+06 0
+5.8226e+06 4.9798e+06 0
+5.5292e+06 4.8657e+06 0
+5.2411e+06 4.7596e+06 0
+4.958e+06 4.661e+06 0
+4.6796e+06 4.5694e+06 0
+4.4057e+06 4.4843e+06 0
+4.1362e+06 4.4055e+06 0
+3.8707e+06 4.3326e+06 0
+3.6092e+06 4.2655e+06 0
+3.3515e+06 4.2038e+06 0
+3.0972e+06 4.1473e+06 0
+2.8463e+06 4.0959e+06 0
+2.5985e+06 4.0494e+06 0
+2.3536e+06 4.0077e+06 0
+2.1115e+06 3.9705e+06 0
+1.8718e+06 3.9378e+06 0
+1.6343e+06 3.9094e+06 0
+1.3989e+06 3.8852e+06 0
+1.1652e+06 3.8651e+06 0
+933070 3.8491e+06 0
+702220 3.837e+06 0
+472410 3.8287e+06 0
+243380 3.8242e+06 0
+14883 3.8234e+06 0
+-213320 3.8264e+06 0
+-441490 3.8329e+06 0
+-669870 3.8431e+06 0
+-898700 3.8569e+06 0
+-1.1282e+06 3.8743e+06 0
+-1.3587e+06 3.8952e+06 0
+-1.5903e+06 3.9197e+06 0
+-1.8232e+06 3.9478e+06 0
+-2.0578e+06 3.9794e+06 0
+-2.2942e+06 4.0145e+06 0
+-2.5325e+06 4.0532e+06 0
+-2.7731e+06 4.0955e+06 0
+-3.0159e+06 4.1414e+06 0
+-3.2614e+06 4.1909e+06 0
+-3.5094e+06 4.2439e+06 0
+-3.7603e+06 4.3005e+06 0
+-4.0141e+06 4.3607e+06 0
+-4.271e+06 4.4244e+06 0
+-4.531e+06 4.4916e+06 0
+-4.7943e+06 4.5622e+06 0
+-5.0608e+06 4.6363e+06 0
+-5.3308e+06 4.7137e+06 0
+-5.6042e+06 4.7944e+06 0
+-5.8811e+06 4.8783e+06 0
+-6.1616e+06 4.9653e+06 0
+-6.4458e+06 5.0553e+06 0
+-6.7337e+06 5.1483e+06 0
+-7.0255e+06 5.2442e+06 0
+-7.3212e+06 5.3431e+06 0
+-7.6211e+06 5.4449e+06 0
+-7.9251e+06 5.5498e+06 0
+-8.2337e+06 5.6582e+06 0
+-8.5468e+06 5.7704e+06 0
+-8.8649e+06 5.8872e+06 0
+-9.188e+06 6.0096e+06 0
+-9.5166e+06 6.139e+06 0
+-9.8507e+06 6.2776e+06 0
+-1.0191e+07 6.428e+06 0
+-1.0536e+07 6.594e+06 0
+-1.0888e+07 6.7804e+06 0
+-1.1247e+07 6.9935e+06 0
+-1.1611e+07 7.2412e+06 0
+-1.1983e+07 7.5334e+06 0
+-1.2362e+07 7.8823e+06 0
+-1.2752e+07 8.302e+06 0
+-1.3156e+07 8.8088e+06 0
+-1.3581e+07 9.4204e+06 0
+-1.4038e+07 1.0154e+07 0
+-1.4543e+07 1.1024e+07 0
+-1.5118e+07 1.204e+07 0
+-1.5792e+07 1.3198e+07 0
+-1.6598e+07 1.4478e+07 0
+-1.757e+07 1.5837e+07 0
+-1.8737e+07 1.7206e+07 0
+-2.0113e+07 1.8489e+07 0
+-2.1694e+07 1.957e+07 0
+-2.3445e+07 2.0328e+07 0
+-2.5305e+07 2.0655e+07 0
+-2.7193e+07 2.0476e+07 0
+-2.902e+07 1.9762e+07 0
+-3.0704e+07 1.8543e+07 0
+-3.2187e+07 1.6894e+07 0
+-3.3438e+07 1.4927e+07 0
+-3.4456e+07 1.2768e+07 0
+-3.5268e+07 1.0537e+07 0
+-3.5911e+07 8.3414e+06 0
+-3.6434e+07 6.2599e+06 0
+-3.6881e+07 4.3463e+06 0
+-3.7289e+07 2.6301e+06 0
+-3.7688e+07 1.1211e+06 0
+-3.8097e+07 -184950 0
+-3.8524e+07 -1.3011e+06 0
+-3.8974e+07 -2.2456e+06 0
+-3.9444e+07 -3.0383e+06 0
+-3.9927e+07 -3.6987e+06 0
+-4.0415e+07 -4.2449e+06 0
+-4.0899e+07 -4.6928e+06 0
+-4.137e+07 -5.0558e+06 0
+-4.1819e+07 -5.3456e+06 0
+-4.2237e+07 -5.5718e+06 0
+-4.2615e+07 -5.7426e+06 0
+-4.2949e+07 -5.8646e+06 0
+-4.3231e+07 -5.9429e+06 0
+-4.3458e+07 -5.9814e+06 0
+-4.3625e+07 -5.9826e+06 0
+-4.3732e+07 -5.9488e+06 0
+-4.3777e+07 -5.882e+06 0
+-4.3763e+07 -5.7847e+06 0
+-4.3691e+07 -5.6601e+06 0
+-4.3565e+07 -5.5116e+06 0
+-4.3387e+07 -5.3423e+06 0
+-4.3161e+07 -5.1555e+06 0
+-4.2887e+07 -4.9538e+06 0
+-4.2566e+07 -4.7401e+06 0
+-4.2198e+07 -4.5167e+06 0
+-4.1785e+07 -4.2852e+06 0
+-4.1327e+07 -4.0459e+06 0
+-4.0829e+07 -3.7976e+06 0
+-4.0296e+07 -3.5394e+06 0
+-3.9735e+07 -3.272e+06 0
+-3.9151e+07 -2.9994e+06 0
+-3.8552e+07 -2.7289e+06 0
+-3.7943e+07 -2.4681e+06 0
+-3.7328e+07 -2.2224e+06 0
+-3.6708e+07 -1.9921e+06 0
+-3.6084e+07 -1.7727e+06 0
+-3.5455e+07 -1.5573e+06 0
+-3.4825e+07 -1.3415e+06 0
+-3.4196e+07 -1.1263e+06 0
+-3.3574e+07 -918580 0
+-3.2963e+07 -728030 0
+-3.2367e+07 -562460 0
+-3.1787e+07 -423460 0
+-3.1227e+07 -305470 0
+-3.0688e+07 -199070 0
+-3.0174e+07 -96961 0
+-2.9687e+07 606.95 0
+-2.9227e+07 85073 0
+-2.8792e+07 144800 0
+-2.8379e+07 173710 0
+-2.7988e+07 177450 0
+-2.7623e+07 171620 0
+-2.7289e+07 171640 0
+-2.6992e+07 180460 0
+-2.6735e+07 183420 0
+-2.6516e+07 155990 0
+-2.6328e+07 80920 0
+-2.6167e+07 -36578 0
+-2.6029e+07 -167550 0
+-2.5916e+07 -275190 0
+-2.5834e+07 -338550 0
+-2.5783e+07 -368170 0
+-2.5764e+07 -401530 0
+-2.5771e+07 -480100 0
+-2.5801e+07 -622300 0
+-2.5852e+07 -810400 0
+-2.5925e+07 -1.0002e+06 0
+-2.6026e+07 -1.1471e+06 0
+-2.6158e+07 -1.2329e+06 0
+-2.6321e+07 -1.2748e+06 0
+-2.6509e+07 -1.3142e+06 0
+-2.6713e+07 -1.3908e+06 0
+-2.6923e+07 -1.5198e+06 0
+-2.7131e+07 -1.6847e+06 0
+-2.7334e+07 -1.8475e+06 0
+-2.7531e+07 -1.9703e+06 0
+-2.7726e+07 -2.035e+06 0
+-2.7926e+07 -2.0507e+06 0
+-2.8139e+07 -2.0474e+06 0
+-2.8368e+07 -2.0604e+06 0
+-2.8617e+07 -2.1142e+06 0
+-2.8881e+07 -2.213e+06 0
+-2.9149e+07 -2.3411e+06 0
+-2.9406e+07 -2.4711e+06 0
+-2.9638e+07 -2.5746e+06 0
+-2.9832e+07 -2.6319e+06 0
+-2.9984e+07 -2.6362e+06 0
+-3.0099e+07 -2.5936e+06 0
+-3.0184e+07 -2.5188e+06 0
+1.7764e+07 403870 0
+1.79e+07 382070 0
+1.8035e+07 352840 0
+1.8167e+07 317560 0
+1.8295e+07 277970 0
+1.8416e+07 235980 0
+1.853e+07 193320 0
+1.8636e+07 151210 0
+1.8732e+07 110090 0
+1.8819e+07 69537 0
+1.8896e+07 28322 0
+1.8964e+07 -15240 0
+1.902e+07 -62805 0
+1.9066e+07 -115470 0
+1.91e+07 -173340 0
+1.9122e+07 -235400 0
+1.9129e+07 -299670 0
+1.9123e+07 -363620 0
+1.9102e+07 -424830 0
+1.9067e+07 -481520 0
+1.9018e+07 -532880 0
+1.8956e+07 -579070 0
+1.8882e+07 -620910 0
+1.8796e+07 -659370 0
+1.8699e+07 -695090 0
+1.8592e+07 -728000 0
+1.8475e+07 -757370 0
+1.8351e+07 -781960 0
+1.8219e+07 -800460 0
+1.8081e+07 -811810 0
+1.7939e+07 -815520 0
+1.7794e+07 -811620 0
+1.7647e+07 -800560 0
+1.7501e+07 -782920 0
+1.7356e+07 -759210 0
+1.7215e+07 -729700 0
+1.7079e+07 -694490 0
+1.6949e+07 -653560 0
+1.6828e+07 -606980 0
+1.6717e+07 -555000 0
+1.6616e+07 -498160 0
+1.6528e+07 -437220 0
+1.6454e+07 -373100 0
+1.6394e+07 -306770 0
+1.6349e+07 -239170 0
+1.632e+07 -171160 0
+1.6307e+07 -103560 0
+1.631e+07 -37218 0
+1.633e+07 27018 0
+1.6366e+07 88220 0
+1.6419e+07 145420 0
+1.6487e+07 197670 0
+1.6571e+07 244070 0
+1.6668e+07 283820 0
+1.6779e+07 316240 0
+1.69e+07 340770 0
+1.7032e+07 356920 0
+1.7172e+07 364230 0
+1.7319e+07 362330 0
+1.747e+07 350870 0
+1.7624e+07 329640 0
+1.7778e+07 298560 0
+1.793e+07 257750 0
+1.8077e+07 207540 0
+1.8218e+07 148430 0
+1.8349e+07 81104 0
+1.8469e+07 6362.9 0
+1.8574e+07 -74919 0
+1.8663e+07 -161820 0
+1.8732e+07 -253370 0
+1.878e+07 -348590 0
+1.8806e+07 -446450 0
+1.8805e+07 -545870 0
+1.8778e+07 -645730 0
+1.8723e+07 -744840 0
+1.8637e+07 -841960 0
+1.852e+07 -935810 0
+1.8372e+07 -1.025e+06 0
+1.8192e+07 -1.1082e+06 0
+1.7979e+07 -1.1838e+06 0
+1.7736e+07 -1.2502e+06 0
+1.7463e+07 -1.3055e+06 0
+1.7161e+07 -1.3472e+06 0
+1.6834e+07 -1.3725e+06 0
+1.6486e+07 -1.3777e+06 0
+1.6121e+07 -1.3581e+06 0
+1.5744e+07 -1.3073e+06 0
+1.5363e+07 -1.2177e+06 0
+1.4985e+07 -1.0793e+06 0
+1.4618e+07 -880200 0
+1.427e+07 -606500 0
+1.3946e+07 -243030 0
+1.3652e+07 225300 0
+1.3386e+07 811310 0
+1.3144e+07 1.5223e+06 0
+1.2913e+07 2.3563e+06 0
+1.2679e+07 3.2978e+06 0
+1.2421e+07 4.3154e+06 0
+1.2122e+07 5.3616e+06 0
+1.1769e+07 6.3764e+06 0
+1.1359e+07 7.2955e+06 0
+1.09e+07 8.0607e+06 0
+1.0407e+07 8.6308e+06 0
+9.9012e+06 8.9882e+06 0
+9.4045e+06 9.1403e+06 0
+8.9332e+06 9.1145e+06 0
+8.497e+06 8.9506e+06 0
+8.099e+06 8.6918e+06 0
+7.7371e+06 8.3776e+06 0
+7.4063e+06 8.0396e+06 0
+7.1003e+06 7.7008e+06 0
+6.8135e+06 7.3758e+06 0
+6.541e+06 7.0723e+06 0
+6.2793e+06 6.7936e+06 0
+6.0259e+06 6.5398e+06 0
+5.7793e+06 6.3095e+06 0
+5.5384e+06 6.1003e+06 0
+5.3027e+06 5.9099e+06 0
+5.0717e+06 5.7357e+06 0
+4.8454e+06 5.5758e+06 0
+4.6234e+06 5.4284e+06 0
+4.4055e+06 5.2921e+06 0
+4.1917e+06 5.1657e+06 0
+3.9817e+06 5.0482e+06 0
+3.7753e+06 4.939e+06 0
+3.5725e+06 4.8374e+06 0
+3.373e+06 4.7428e+06 0
+3.1766e+06 4.655e+06 0
+2.9832e+06 4.5736e+06 0
+2.7928e+06 4.4983e+06 0
+2.605e+06 4.4287e+06 0
+2.4198e+06 4.3648e+06 0
+2.2369e+06 4.3062e+06 0
+2.0564e+06 4.2528e+06 0
+1.878e+06 4.2045e+06 0
+1.7016e+06 4.161e+06 0
+1.5269e+06 4.1223e+06 0
+1.354e+06 4.0881e+06 0
+1.1826e+06 4.0584e+06 0
+1.0125e+06 4.0331e+06 0
+843590 4.012e+06 0
+675730 3.9951e+06 0
+508730 3.9822e+06 0
+342420 3.9733e+06 0
+176650 3.9684e+06 0
+11243 3.9674e+06 0
+-153960 3.9702e+06 0
+-319120 3.9767e+06 0
+-484410 3.9871e+06 0
+-649970 4.0012e+06 0
+-815970 4.019e+06 0
+-982550 4.0404e+06 0
+-1.1499e+06 4.0656e+06 0
+-1.3181e+06 4.0945e+06 0
+-1.4872e+06 4.127e+06 0
+-1.6576e+06 4.1633e+06 0
+-1.8292e+06 4.2032e+06 0
+-2.0022e+06 4.2467e+06 0
+-2.1766e+06 4.294e+06 0
+-2.3527e+06 4.3449e+06 0
+-2.5304e+06 4.3995e+06 0
+-2.7099e+06 4.4577e+06 0
+-2.8913e+06 4.5195e+06 0
+-3.0745e+06 4.585e+06 0
+-3.2597e+06 4.654e+06 0
+-3.4469e+06 4.7265e+06 0
+-3.6362e+06 4.8024e+06 0
+-3.8275e+06 4.8817e+06 0
+-4.021e+06 4.9644e+06 0
+-4.2167e+06 5.0503e+06 0
+-4.4147e+06 5.1393e+06 0
+-4.6149e+06 5.2315e+06 0
+-4.8175e+06 5.3266e+06 0
+-5.0226e+06 5.4248e+06 0
+-5.2302e+06 5.5259e+06 0
+-5.4404e+06 5.6302e+06 0
+-5.6535e+06 5.7377e+06 0
+-5.8696e+06 5.8487e+06 0
+-6.0889e+06 5.9638e+06 0
+-6.3116e+06 6.0836e+06 0
+-6.538e+06 6.2092e+06 0
+-6.7682e+06 6.3421e+06 0
+-7.0027e+06 6.4843e+06 0
+-7.2416e+06 6.6386e+06 0
+-7.4852e+06 6.8087e+06 0
+-7.7338e+06 6.9993e+06 0
+-7.9878e+06 7.2169e+06 0
+-8.2476e+06 7.4695e+06 0
+-8.5142e+06 7.7674e+06 0
+-8.789e+06 8.1231e+06 0
+-9.0747e+06 8.5521e+06 0
+-9.3759e+06 9.0722e+06 0
+-9.6999e+06 9.7035e+06 0
+-1.0058e+07 1.0467e+07 0
+-1.0467e+07 1.1381e+07 0
+-1.0951e+07 1.2461e+07 0
+-1.1538e+07 1.3707e+07 0
+-1.2264e+07 1.5104e+07 0
+-1.3165e+07 1.6608e+07 0
+-1.4272e+07 1.8144e+07 0
+-1.5601e+07 1.9603e+07 0
+-1.7144e+07 2.0849e+07 0
+-1.8862e+07 2.1736e+07 0
+-2.0686e+07 2.2132e+07 0
+-2.2523e+07 2.1947e+07 0
+-2.4274e+07 2.1152e+07 0
+-2.5851e+07 1.9786e+07 0
+-2.7194e+07 1.7949e+07 0
+-2.8279e+07 1.578e+07 0
+-2.9115e+07 1.3429e+07 0
+-2.9738e+07 1.1038e+07 0
+-3.0199e+07 8.7221e+06 0
+-3.0554e+07 6.5629e+06 0
+-3.0854e+07 4.61e+06 0
+-3.1142e+07 2.8852e+06 0
+-3.1447e+07 1.3896e+06 0
+-3.179e+07 110460 0
+-3.218e+07 -972750 0
+-3.2619e+07 -1.8837e+06 0
+-3.3104e+07 -2.6465e+06 0
+-3.3627e+07 -3.2831e+06 0
+-3.4179e+07 -3.8132e+06 0
+-3.4748e+07 -4.2532e+06 0
+-3.5325e+07 -4.6167e+06 0
+-3.5898e+07 -4.9152e+06 0
+-3.6458e+07 -5.1576e+06 0
+-3.6994e+07 -5.3515e+06 0
+-3.75e+07 -5.5029e+06 0
+-3.7967e+07 -5.6161e+06 0
+-3.8389e+07 -5.694e+06 0
+-3.876e+07 -5.7383e+06 0
+-3.9077e+07 -5.7499e+06 0
+-3.9337e+07 -5.7299e+06 0
+-3.9538e+07 -5.6796e+06 0
+-3.9682e+07 -5.6011e+06 0
+-3.9769e+07 -5.4975e+06 0
+-3.9799e+07 -5.3721e+06 0
+-3.9773e+07 -5.2283e+06 0
+-3.9692e+07 -5.0696e+06 0
+-3.9555e+07 -4.899e+06 0
+-3.9361e+07 -4.7187e+06 0
+-3.9112e+07 -4.5298e+06 0
+-3.8808e+07 -4.3315e+06 0
+-3.8453e+07 -4.1216e+06 0
+-3.805e+07 -3.898e+06 0
+-3.7604e+07 -3.6608e+06 0
+-3.7121e+07 -3.4134e+06 0
+-3.6608e+07 -3.163e+06 0
+-3.6069e+07 -2.9183e+06 0
+-3.5509e+07 -2.686e+06 0
+-3.493e+07 -2.4679e+06 0
+-3.4332e+07 -2.2602e+06 0
+-3.3717e+07 -2.0561e+06 0
+-3.3086e+07 -1.8497e+06 0
+-3.2443e+07 -1.6405e+06 0
+-3.1792e+07 -1.4343e+06 0
+-3.1141e+07 -1.2408e+06 0
+-3.0494e+07 -1.0688e+06 0
+-2.9856e+07 -920830 0
+-2.9229e+07 -791650 0
+-2.8616e+07 -671460 0
+-2.8021e+07 -552760 0
+-2.7448e+07 -436580 0
+-2.6897e+07 -333400 0
+-2.6366e+07 -256880 0
+-2.5852e+07 -213760 0
+-2.5354e+07 -196710 0
+-2.4872e+07 -186680 0
+-2.4413e+07 -164950 0
+-2.3987e+07 -127580 0
+-2.36e+07 -91491 0
+-2.3256e+07 -85724 0
+-2.2952e+07 -131800 0
+-2.2681e+07 -226190 0
+-2.2435e+07 -338250 0
+-2.2211e+07 -427430 0
+-2.2011e+07 -469500 0
+-2.184e+07 -474190 0
+-2.1703e+07 -480950 0
+-2.1599e+07 -534400 0
+-2.1526e+07 -655060 0
+-2.1477e+07 -824780 0
+-2.1451e+07 -996770 0
+-2.1448e+07 -1.1237e+06 0
+-2.1472e+07 -1.1861e+06 0
+-2.1526e+07 -1.203e+06 0
+-2.1612e+07 -1.2192e+06 0
+-2.1724e+07 -1.2786e+06 0
+-2.1853e+07 -1.3986e+06 0
+-2.1988e+07 -1.5623e+06 0
+-2.212e+07 -1.7286e+06 0
+-2.2248e+07 -1.8553e+06 0
+-2.2374e+07 -1.9203e+06 0
+-2.2505e+07 -1.9299e+06 0
+-2.265e+07 -1.9142e+06 0
+-2.2815e+07 -1.9107e+06 0
+-2.3001e+07 -1.9481e+06 0
+-2.3204e+07 -2.0355e+06 0
+-2.3415e+07 -2.1611e+06 0
+-2.3619e+07 -2.2994e+06 0
+-2.3806e+07 -2.4212e+06 0
+-2.3967e+07 -2.5032e+06 0
+-2.4097e+07 -2.5342e+06 0
+-2.4198e+07 -2.5153e+06 0
+-2.4277e+07 -2.4576e+06 0
+1.4943e+07 296620 0
+1.5076e+07 275830 0
+1.5205e+07 248880 0
+1.533e+07 217120 0
+1.5449e+07 182190 0
+1.5562e+07 145820 0
+1.5666e+07 109490 0
+1.5763e+07 74170 0
+1.585e+07 40106 0
+1.5929e+07 6752.2 0
+1.5999e+07 -27100 0
+1.606e+07 -63002 0
+1.611e+07 -102410 0
+1.615e+07 -146200 0
+1.6178e+07 -194400 0
+1.6193e+07 -245990 0
+1.6195e+07 -299170 0
+1.6182e+07 -351740 0
+1.6155e+07 -401610 0
+1.6115e+07 -447320 0
+1.6061e+07 -488270 0
+1.5995e+07 -524720 0
+1.5918e+07 -557460 0
+1.5831e+07 -587410 0
+1.5733e+07 -615130 0
+1.5626e+07 -640600 0
+1.5511e+07 -663160 0
+1.5388e+07 -681730 0
+1.5259e+07 -695160 0
+1.5124e+07 -702560 0
+1.4986e+07 -703520 0
+1.4846e+07 -698100 0
+1.4705e+07 -686760 0
+1.4565e+07 -670070 0
+1.4428e+07 -648520 0
+1.4295e+07 -622410 0
+1.4167e+07 -591830 0
+1.4046e+07 -556770 0
+1.3934e+07 -517260 0
+1.3832e+07 -473500 0
+1.3741e+07 -425920 0
+1.3662e+07 -375140 0
+1.3597e+07 -321940 0
+1.3546e+07 -267140 0
+1.3509e+07 -211550 0
+1.3488e+07 -155920 0
+1.3483e+07 -100960 0
+1.3493e+07 -47384 0
+1.3519e+07 4099.8 0
+1.356e+07 52733 0
+1.3616e+07 97740 0
+1.3687e+07 138360 0
+1.3772e+07 173870 0
+1.3868e+07 203650 0
+1.3976e+07 227180 0
+1.4093e+07 244000 0
+1.4218e+07 253730 0
+1.4349e+07 256050 0
+1.4485e+07 250660 0
+1.4623e+07 237360 0
+1.4761e+07 216020 0
+1.4896e+07 186650 0
+1.5028e+07 149440 0
+1.5152e+07 104740 0
+1.5267e+07 53058 0
+1.5371e+07 -4950 0
+1.5461e+07 -68541 0
+1.5534e+07 -136910 0
+1.559e+07 -209210 0
+1.5626e+07 -284580 0
+1.564e+07 -362140 0
+1.5631e+07 -440980 0
+1.5597e+07 -520190 0
+1.5538e+07 -598780 0
+1.5451e+07 -675790 0
+1.5337e+07 -750160 0
+1.5194e+07 -820870 0
+1.5024e+07 -886830 0
+1.4825e+07 -946920 0
+1.46e+07 -999970 0
+1.4348e+07 -1.0447e+06 0
+1.4071e+07 -1.0795e+06 0
+1.3773e+07 -1.1026e+06 0
+1.3454e+07 -1.1117e+06 0
+1.312e+07 -1.1037e+06 0
+1.2773e+07 -1.0746e+06 0
+1.242e+07 -1.0189e+06 0
+1.2067e+07 -929490 0
+1.1721e+07 -797180 0
+1.1389e+07 -610280 0
+1.1078e+07 -354660 0
+1.0795e+07 -14031 0
+1.0544e+07 428900 0
+1.0326e+07 990340 0
+1.0134e+07 1.6821e+06 0
+9.9583e+06 2.507e+06 0
+9.781e+06 3.4539e+06 0
+9.5813e+06 4.4935e+06 0
+9.3389e+06 5.5768e+06 0
+9.0392e+06 6.6383e+06 0
+8.678e+06 7.6048e+06 0
+8.2638e+06 8.4086e+06 0
+7.8157e+06 9.001e+06 0
+7.3587e+06 9.3611e+06 0
+6.9167e+06 9.4982e+06 0
+6.5076e+06 9.4449e+06 0
+6.1409e+06 9.2477e+06 0
+5.818e+06 8.9553e+06 0
+5.5348e+06 8.6112e+06 0
+5.2843e+06 8.249e+06 0
+5.0587e+06 7.8917e+06 0
+4.8513e+06 7.5532e+06 0
+4.6566e+06 7.2401e+06 0
+4.471e+06 6.9545e+06 0
+4.2918e+06 6.6957e+06 0
+4.1175e+06 6.4613e+06 0
+3.9472e+06 6.2487e+06 0
+3.7805e+06 6.0552e+06 0
+3.617e+06 5.8782e+06 0
+3.4566e+06 5.7156e+06 0
+3.2992e+06 5.5656e+06 0
+3.1447e+06 5.4268e+06 0
+2.993e+06 5.2979e+06 0
+2.8439e+06 5.1782e+06 0
+2.6973e+06 5.0667e+06 0
+2.5532e+06 4.963e+06 0
+2.4114e+06 4.8664e+06 0
+2.2717e+06 4.7767e+06 0
+2.1342e+06 4.6935e+06 0
+1.9986e+06 4.6164e+06 0
+1.8648e+06 4.5453e+06 0
+1.7328e+06 4.4798e+06 0
+1.6024e+06 4.4198e+06 0
+1.4735e+06 4.3651e+06 0
+1.3461e+06 4.3156e+06 0
+1.22e+06 4.2709e+06 0
+1.0951e+06 4.2311e+06 0
+971340 4.196e+06 0
+848570 4.1654e+06 0
+726690 4.1393e+06 0
+605610 4.1175e+06 0
+485210 4.1e+06 0
+365380 4.0867e+06 0
+246020 4.0774e+06 0
+127020 4.0722e+06 0
+8265.3 4.0709e+06 0
+-110340 4.0736e+06 0
+-228920 4.0802e+06 0
+-347550 4.0906e+06 0
+-466350 4.1049e+06 0
+-585410 4.1229e+06 0
+-704830 4.1448e+06 0
+-824700 4.1704e+06 0
+-945120 4.1998e+06 0
+-1.0662e+06 4.2329e+06 0
+-1.1879e+06 4.2698e+06 0
+-1.3104e+06 4.3104e+06 0
+-1.4338e+06 4.3548e+06 0
+-1.5581e+06 4.4029e+06 0
+-1.6833e+06 4.4547e+06 0
+-1.8096e+06 4.5102e+06 0
+-1.937e+06 4.5694e+06 0
+-2.0654e+06 4.6323e+06 0
+-2.1951e+06 4.6988e+06 0
+-2.3259e+06 4.7689e+06 0
+-2.4579e+06 4.8425e+06 0
+-2.5911e+06 4.9196e+06 0
+-2.7257e+06 5.0001e+06 0
+-2.8615e+06 5.0839e+06 0
+-2.9986e+06 5.171e+06 0
+-3.137e+06 5.2613e+06 0
+-3.2769e+06 5.3547e+06 0
+-3.4182e+06 5.4512e+06 0
+-3.5611e+06 5.5508e+06 0
+-3.7056e+06 5.6534e+06 0
+-3.8518e+06 5.7593e+06 0
+-3.9998e+06 5.8684e+06 0
+-4.1499e+06 5.9813e+06 0
+-4.3021e+06 6.0983e+06 0
+-4.4568e+06 6.2203e+06 0
+-4.6141e+06 6.3483e+06 0
+-4.7743e+06 6.4837e+06 0
+-4.9376e+06 6.6287e+06 0
+-5.1045e+06 6.786e+06 0
+-5.2752e+06 6.9594e+06 0
+-5.45e+06 7.1536e+06 0
+-5.6296e+06 7.3752e+06 0
+-5.8146e+06 7.6324e+06 0
+-6.006e+06 7.9358e+06 0
+-6.2058e+06 8.2986e+06 0
+-6.4167e+06 8.7373e+06 0
+-6.6438e+06 9.2713e+06 0
+-6.8945e+06 9.9234e+06 0
+-7.1808e+06 1.0718e+07 0
+-7.52e+06 1.1678e+07 0
+-7.9365e+06 1.2825e+07 0
+-8.462e+06 1.4164e+07 0
+-9.1344e+06 1.5684e+07 0
+-9.9937e+06 1.7343e+07 0
+-1.1075e+07 1.9059e+07 0
+-1.2396e+07 2.0707e+07 0
+-1.3947e+07 2.2128e+07 0
+-1.5681e+07 2.3147e+07 0
+-1.7513e+07 2.3605e+07 0
+-1.9334e+07 2.3393e+07 0
+-2.1025e+07 2.2483e+07 0
+-2.2491e+07 2.0931e+07 0
+-2.367e+07 1.8869e+07 0
+-2.4548e+07 1.6468e+07 0
+-2.515e+07 1.3911e+07 0
+-2.5531e+07 1.1356e+07 0
+-2.5759e+07 8.9291e+06 0
+-2.5903e+07 6.7101e+06 0
+-2.6022e+07 4.7414e+06 0
+-2.6163e+07 3.0344e+06 0
+-2.6357e+07 1.579e+06 0
+-2.6623e+07 352940 0
+-2.6969e+07 -672370 0
+-2.7394e+07 -1.5266e+06 0
+-2.7892e+07 -2.2376e+06 0
+-2.8455e+07 -2.8302e+06 0
+-2.907e+07 -3.3253e+06 0
+-2.9726e+07 -3.7399e+06 0
+-3.0409e+07 -4.0878e+06 0
+-3.1108e+07 -4.3798e+06 0
+-3.1811e+07 -4.6245e+06 0
+-3.2507e+07 -4.8288e+06 0
+-3.3188e+07 -4.9979e+06 0
+-3.3844e+07 -5.1354e+06 0
+-3.4466e+07 -5.2436e+06 0
+-3.5049e+07 -5.3233e+06 0
+-3.5586e+07 -5.3745e+06 0
+-3.6072e+07 -5.397e+06 0
+-3.6504e+07 -5.3914e+06 0
+-3.688e+07 -5.3588e+06 0
+-3.7197e+07 -5.3018e+06 0
+-3.7455e+07 -5.2236e+06 0
+-3.7653e+07 -5.1276e+06 0
+-3.7788e+07 -5.0176e+06 0
+-3.7861e+07 -4.8965e+06 0
+-3.7868e+07 -4.7663e+06 0
+-3.7811e+07 -4.6274e+06 0
+-3.769e+07 -4.4782e+06 0
+-3.7507e+07 -4.3157e+06 0
+-3.7263e+07 -4.1371e+06 0
+-3.6963e+07 -3.9415e+06 0
+-3.6611e+07 -3.7317e+06 0
+-3.6212e+07 -3.5145e+06 0
+-3.5771e+07 -3.2987e+06 0
+-3.5294e+07 -3.092e+06 0
+-3.4783e+07 -2.8976e+06 0
+-3.4239e+07 -2.713e+06 0
+-3.3664e+07 -2.5315e+06 0
+-3.3057e+07 -2.3466e+06 0
+-3.2423e+07 -2.1554e+06 0
+-3.1766e+07 -1.9623e+06 0
+-3.1095e+07 -1.7761e+06 0
+-3.0417e+07 -1.6063e+06 0
+-2.9738e+07 -1.4566e+06 0
+-2.9061e+07 -1.3229e+06 0
+-2.839e+07 -1.1955e+06 0
+-2.7729e+07 -1.0669e+06 0
+-2.7079e+07 -938250 0
+-2.6445e+07 -821500 0
+-2.5825e+07 -732390 0
+-2.5217e+07 -679140 0
+-2.4619e+07 -653840 0
+-2.403e+07 -634390 0
+-2.3456e+07 -597780 0
+-2.2906e+07 -536950 0
+-2.2392e+07 -469040 0
+-2.1922e+07 -427090 0
+-2.1498e+07 -438610 0
+-2.1113e+07 -504890 0
+-2.0757e+07 -596370 0
+-2.0422e+07 -669360 0
+-2.0107e+07 -694370 0
+-1.9816e+07 -676950 0
+-1.9558e+07 -655990 0
+-1.9338e+07 -679250 0
+-1.9156e+07 -771890 0
+-1.9007e+07 -918800 0
+-1.8882e+07 -1.0727e+06 0
+-1.8777e+07 -1.1829e+06 0
+-1.8695e+07 -1.2257e+06 0
+-1.8641e+07 -1.2185e+06 0
+-1.862e+07 -1.2079e+06 0
+-1.8632e+07 -1.2423e+06 0
+-1.8673e+07 -1.3442e+06 0
+-1.8731e+07 -1.4988e+06 0
+-1.8794e+07 -1.6643e+06 0
+-1.8856e+07 -1.7939e+06 0
+-1.8914e+07 -1.8601e+06 0
+-1.8976e+07 -1.8652e+06 0
+-1.9049e+07 -1.8378e+06 0
+-1.9142e+07 -1.8175e+06 0
+-1.9257e+07 -1.837e+06 0
+-1.9392e+07 -1.91e+06 0
+-1.9541e+07 -2.0285e+06 0
+-1.9692e+07 -2.1688e+06 0
+-1.9836e+07 -2.301e+06 0
+-1.9962e+07 -2.3996e+06 0
+-2.0068e+07 -2.4498e+06 0
+-2.0152e+07 -2.4492e+06 0
+-2.0216e+07 -2.4065e+06 0
+1.2763e+07 192130 0
+1.2891e+07 173340 0
+1.3015e+07 149650 0
+1.3133e+07 122280 0
+1.3245e+07 92671 0
+1.3349e+07 62282 0
+1.3446e+07 32333 0
+1.3534e+07 3573.8 0
+1.3614e+07 -23881 0
+1.3686e+07 -50579 0
+1.375e+07 -77601 0
+1.3805e+07 -106280 0
+1.3851e+07 -137810 0
+1.3885e+07 -172890 0
+1.3909e+07 -211450 0
+1.3919e+07 -252610 0
+1.3916e+07 -294810 0
+1.3899e+07 -336220 0
+1.3869e+07 -375140 0
+1.3825e+07 -410420 0
+1.377e+07 -441650 0
+1.3703e+07 -469110 0
+1.3625e+07 -493530 0
+1.3539e+07 -515710 0
+1.3443e+07 -536150 0
+1.3338e+07 -554810 0
+1.3226e+07 -571140 0
+1.3107e+07 -584230 0
+1.2982e+07 -593130 0
+1.2852e+07 -597110 0
+1.272e+07 -595840 0
+1.2586e+07 -589450 0
+1.2452e+07 -578350 0
+1.232e+07 -563080 0
+1.219e+07 -544090 0
+1.2065e+07 -521680 0
+1.1946e+07 -495920 0
+1.1834e+07 -466820 0
+1.173e+07 -434390 0
+1.1636e+07 -398760 0
+1.1553e+07 -360260 0
+1.1482e+07 -319390 0
+1.1424e+07 -276790 0
+1.1379e+07 -233130 0
+1.1349e+07 -189060 0
+1.1333e+07 -145240 0
+1.1332e+07 -102230 0
+1.1345e+07 -60606 0
+1.1373e+07 -20947 0
+1.1415e+07 16160 0
+1.1471e+07 50119 0
+1.1539e+07 80350 0
+1.162e+07 106320 0
+1.171e+07 127550 0
+1.181e+07 143650 0
+1.1918e+07 154300 0
+1.2032e+07 159230 0
+1.2149e+07 158200 0
+1.2269e+07 151030 0
+1.2389e+07 137590 0
+1.2508e+07 117850 0
+1.2622e+07 91883 0
+1.2729e+07 59893 0
+1.2828e+07 22234 0
+1.2917e+07 -20618 0
+1.2992e+07 -68079 0
+1.3052e+07 -119500 0
+1.3096e+07 -174170 0
+1.3121e+07 -231390 0
+1.3126e+07 -290410 0
+1.3109e+07 -350500 0
+1.307e+07 -410920 0
+1.3008e+07 -470910 0
+1.2922e+07 -529680 0
+1.2811e+07 -586450 0
+1.2675e+07 -640420 0
+1.2515e+07 -690760 0
+1.2331e+07 -736660 0
+1.2123e+07 -777260 0
+1.1893e+07 -811670 0
+1.1641e+07 -838890 0
+1.1371e+07 -857760 0
+1.1084e+07 -866830 0
+1.0783e+07 -864220 0
+1.0472e+07 -847420 0
+1.0154e+07 -812960 0
+9.8339e+06 -756110 0
+9.5184e+06 -670410 0
+9.2137e+06 -547240 0
+8.9267e+06 -375310 0
+8.6646e+06 -140340 0
+8.434e+06 174810 0
+8.2389e+06 589490 0
+8.0799e+06 1.1233e+06 0
+7.9517e+06 1.7928e+06 0
+7.8422e+06 2.6065e+06 0
+7.7318e+06 3.5586e+06 0
+7.5962e+06 4.6226e+06 0
+7.4104e+06 5.7486e+06 0
+7.156e+06 6.8648e+06 0
+6.8273e+06 7.8873e+06 0
+6.4347e+06 8.7363e+06 0
+6.0024e+06 9.3534e+06 0
+5.5618e+06 9.7143e+06 0
+5.142e+06 9.8308e+06 0
+4.7642e+06 9.7429e+06 0
+4.438e+06 9.5054e+06 0
+4.1632e+06 9.1741e+06 0
+3.9334e+06 8.7968e+06 0
+3.739e+06 8.4087e+06 0
+3.5706e+06 8.0326e+06 0
+3.4202e+06 7.6811e+06 0
+3.2816e+06 7.3593e+06 0
+3.1509e+06 7.0679e+06 0
+3.0254e+06 6.805e+06 0
+2.9035e+06 6.5677e+06 0
+2.7844e+06 6.3528e+06 0
+2.6678e+06 6.1572e+06 0
+2.5533e+06 5.9783e+06 0
+2.4408e+06 5.8139e+06 0
+2.3304e+06 5.6622e+06 0
+2.2219e+06 5.5216e+06 0
+2.1153e+06 5.3911e+06 0
+2.0105e+06 5.2697e+06 0
+1.9075e+06 5.1568e+06 0
+1.8061e+06 5.0516e+06 0
+1.7063e+06 4.9537e+06 0
+1.608e+06 4.8627e+06 0
+1.5111e+06 4.7782e+06 0
+1.4155e+06 4.7e+06 0
+1.3212e+06 4.6277e+06 0
+1.228e+06 4.5613e+06 0
+1.136e+06 4.5003e+06 0
+1.0449e+06 4.4447e+06 0
+954820 4.3943e+06 0
+865600 4.3489e+06 0
+777180 4.3084e+06 0
+689500 4.2726e+06 0
+602470 4.2415e+06 0
+516040 4.2149e+06 0
+430130 4.1926e+06 0
+344670 4.1747e+06 0
+259580 4.1611e+06 0
+174800 4.1516e+06 0
+90263 4.1461e+06 0
+5895 4.1448e+06 0
+-78371 4.1474e+06 0
+-162600 4.1539e+06 0
+-246860 4.1644e+06 0
+-331210 4.1788e+06 0
+-415710 4.197e+06 0
+-500430 4.219e+06 0
+-585420 4.2449e+06 0
+-670730 4.2746e+06 0
+-756410 4.3081e+06 0
+-842520 4.3454e+06 0
+-929100 4.3864e+06 0
+-1.0162e+06 4.4313e+06 0
+-1.1038e+06 4.4799e+06 0
+-1.192e+06 4.5322e+06 0
+-1.2808e+06 4.5883e+06 0
+-1.3703e+06 4.6481e+06 0
+-1.4604e+06 4.7116e+06 0
+-1.5512e+06 4.7787e+06 0
+-1.6426e+06 4.8494e+06 0
+-1.7348e+06 4.9237e+06 0
+-1.8277e+06 5.0015e+06 0
+-1.9213e+06 5.0826e+06 0
+-2.0156e+06 5.1672e+06 0
+-2.1107e+06 5.255e+06 0
+-2.2066e+06 5.346e+06 0
+-2.3034e+06 5.4402e+06 0
+-2.401e+06 5.5375e+06 0
+-2.4995e+06 5.6379e+06 0
+-2.599e+06 5.7415e+06 0
+-2.6997e+06 5.8483e+06 0
+-2.8015e+06 5.9586e+06 0
+-2.9047e+06 6.0727e+06 0
+-3.0094e+06 6.1911e+06 0
+-3.1158e+06 6.3147e+06 0
+-3.2241e+06 6.4443e+06 0
+-3.3346e+06 6.5817e+06 0
+-3.4475e+06 6.7288e+06 0
+-3.5631e+06 6.8886e+06 0
+-3.6819e+06 7.0646e+06 0
+-3.8042e+06 7.2619e+06 0
+-3.9306e+06 7.487e+06 0
+-4.0619e+06 7.7484e+06 0
+-4.1992e+06 8.057e+06 0
+-4.3445e+06 8.4267e+06 0
+-4.5007e+06 8.875e+06 0
+-4.6726e+06 9.423e+06 0
+-4.8681e+06 1.0096e+07 0
+-5.099e+06 1.0922e+07 0
+-5.3833e+06 1.1929e+07 0
+-5.7465e+06 1.3144e+07 0
+-6.2227e+06 1.4581e+07 0
+-6.854e+06 1.6232e+07 0
+-7.6863e+06 1.8058e+07 0
+-8.7605e+06 1.9969e+07 0
+-1.0099e+07 2.1826e+07 0
+-1.1691e+07 2.3438e+07 0
+-1.3478e+07 2.4594e+07 0
+-1.5355e+07 2.5102e+07 0
+-1.7184e+07 2.4832e+07 0
+-1.8826e+07 2.3759e+07 0
+-2.0169e+07 2.1967e+07 0
+-2.1154e+07 1.9627e+07 0
+-2.1781e+07 1.6957e+07 0
+-2.2101e+07 1.4172e+07 0
+-2.2194e+07 1.1453e+07 0
+-2.2149e+07 8.9295e+06 0
+-2.2051e+07 6.6757e+06 0
+-2.1966e+07 4.7217e+06 0
+-2.1945e+07 3.0644e+06 0
+-2.2018e+07 1.6806e+06 0
+-2.22e+07 536520 0
+-2.2495e+07 -404700 0
+-2.29e+07 -1.1786e+06 0
+-2.3405e+07 -1.8168e+06 0
+-2.3998e+07 -2.3463e+06 0
+-2.4664e+07 -2.7889e+06 0
+-2.5391e+07 -3.1619e+06 0
+-2.6164e+07 -3.4789e+06 0
+-2.6971e+07 -3.7501e+06 0
+-2.7799e+07 -3.9837e+06 0
+-2.8636e+07 -4.1856e+06 0
+-2.9472e+07 -4.3605e+06 0
+-3.0297e+07 -4.5113e+06 0
+-3.1103e+07 -4.6396e+06 0
+-3.1881e+07 -4.7455e+06 0
+-3.2623e+07 -4.8284e+06 0
+-3.3324e+07 -4.8875e+06 0
+-3.3977e+07 -4.9222e+06 0
+-3.4578e+07 -4.9331e+06 0
+-3.5124e+07 -4.9222e+06 0
+-3.5609e+07 -4.8922e+06 0
+-3.6032e+07 -4.8465e+06 0
+-3.639e+07 -4.7887e+06 0
+-3.668e+07 -4.7215e+06 0
+-3.6901e+07 -4.6464e+06 0
+-3.7051e+07 -4.5632e+06 0
+-3.7129e+07 -4.4697e+06 0
+-3.7137e+07 -4.3624e+06 0
+-3.7073e+07 -4.2379e+06 0
+-3.6941e+07 -4.0946e+06 0
+-3.6743e+07 -3.9343e+06 0
+-3.6483e+07 -3.7628e+06 0
+-3.6165e+07 -3.5883e+06 0
+-3.5797e+07 -3.4191e+06 0
+-3.538e+07 -3.2597e+06 0
+-3.4917e+07 -3.1092e+06 0
+-3.4408e+07 -2.9619e+06 0
+-3.3854e+07 -2.8103e+06 0
+-3.3256e+07 -2.6497e+06 0
+-3.2622e+07 -2.4818e+06 0
+-3.1958e+07 -2.3139e+06 0
+-3.1275e+07 -2.1556e+06 0
+-3.058e+07 -2.0124e+06 0
+-2.9878e+07 -1.8818e+06 0
+-2.917e+07 -1.7555e+06 0
+-2.8461e+07 -1.6258e+06 0
+-2.7752e+07 -1.4933e+06 0
+-2.7048e+07 -1.3701e+06 0
+-2.6351e+07 -1.2733e+06 0
+-2.5662e+07 -1.2134e+06 0
+-2.4978e+07 -1.1834e+06 0
+-2.4299e+07 -1.1598e+06 0
+-2.3626e+07 -1.1153e+06 0
+-2.2967e+07 -1.0383e+06 0
+-2.2337e+07 -943520 0
+-2.1747e+07 -866000 0
+-2.1205e+07 -839470 0
+-2.0708e+07 -872570 0
+-2.0246e+07 -940150 0
+-1.9805e+07 -997560 0
+-1.938e+07 -1.0095e+06 0
+-1.8974e+07 -974320 0
+-1.8597e+07 -927070 0
+-1.826e+07 -916960 0
+-1.7968e+07 -974990 0
+-1.7717e+07 -1.0925e+06 0
+-1.7497e+07 -1.225e+06 0
+-1.7299e+07 -1.3197e+06 0
+-1.7118e+07 -1.3472e+06 0
+-1.6959e+07 -1.3195e+06 0
+-1.6831e+07 -1.2819e+06 0
+-1.6742e+07 -1.2859e+06 0
+-1.669e+07 -1.3604e+06 0
+-1.6668e+07 -1.4962e+06 0
+-1.6663e+07 -1.6533e+06 0
+-1.6663e+07 -1.7827e+06 0
+-1.6659e+07 -1.8512e+06 0
+-1.6655e+07 -1.8552e+06 0
+-1.6656e+07 -1.8198e+06 0
+-1.6674e+07 -1.7843e+06 0
+-1.6715e+07 -1.7845e+06 0
+-1.6781e+07 -1.8387e+06 0
+-1.6869e+07 -1.9433e+06 0
+-1.697e+07 -2.0772e+06 0
+-1.7074e+07 -2.2113e+06 0
+-1.7171e+07 -2.3189e+06 0
+-1.7254e+07 -2.3826e+06 0
+-1.7319e+07 -2.3974e+06 0
+-1.7365e+07 -2.3694e+06 0
+1.0975e+07 92057 0
+1.1096e+07 75855 0
+1.1213e+07 55989 0
+1.1323e+07 33475 0
+1.1427e+07 9490.1 0
+1.1523e+07 -14803 0
+1.1612e+07 -38457 0
+1.1692e+07 -60920 0
+1.1765e+07 -82157 0
+1.183e+07 -102650 0
+1.1888e+07 -123300 0
+1.1937e+07 -145170 0
+1.1978e+07 -169180 0
+1.2008e+07 -195860 0
+1.2027e+07 -225100 0
+1.2034e+07 -256150 0
+1.2027e+07 -287770 0
+1.2008e+07 -318510 0
+1.1976e+07 -347070 0
+1.1931e+07 -372590 0
+1.1876e+07 -394820 0
+1.181e+07 -414040 0
+1.1734e+07 -430890 0
+1.165e+07 -446020 0
+1.1558e+07 -459840 0
+1.1458e+07 -472320 0
+1.1351e+07 -483000 0
+1.1238e+07 -491160 0
+1.112e+07 -496040 0
+1.0997e+07 -497070 0
+1.0873e+07 -494040 0
+1.0747e+07 -487090 0
+1.0622e+07 -476600 0
+1.0498e+07 -463040 0
+1.0378e+07 -446830 0
+1.0263e+07 -428210 0
+1.0153e+07 -407260 0
+1.005e+07 -383990 0
+9.9545e+06 -358380 0
+9.8688e+06 -330530 0
+9.7935e+06 -300680 0
+9.7295e+06 -269200 0
+9.6775e+06 -236580 0
+9.6383e+06 -203360 0
+9.6121e+06 -170040 0
+9.5991e+06 -137140 0
+9.5996e+06 -105100 0
+9.6133e+06 -74362 0
+9.64e+06 -45357 0
+9.6793e+06 -18516 0
+9.7305e+06 5730.5 0
+9.7927e+06 26971 0
+9.8648e+06 44831 0
+9.9457e+06 58986 0
+1.0034e+07 69169 0
+1.0128e+07 75162 0
+1.0226e+07 76788 0
+1.0326e+07 73908 0
+1.0427e+07 66420 0
+1.0526e+07 54271 0
+1.0622e+07 37482 0
+1.0712e+07 16162 0
+1.0795e+07 -9477.1 0
+1.0867e+07 -39118 0
+1.0928e+07 -72350 0
+1.0976e+07 -108690 0
+1.1008e+07 -147600 0
+1.1024e+07 -188520 0
+1.1021e+07 -230880 0
+1.0999e+07 -274100 0
+1.0958e+07 -317620 0
+1.0895e+07 -360860 0
+1.0811e+07 -403230 0
+1.0705e+07 -444170 0
+1.0578e+07 -483070 0
+1.043e+07 -519350 0
+1.026e+07 -552420 0
+1.0071e+07 -581670 0
+9.863e+06 -606490 0
+9.6374e+06 -626220 0
+9.396e+06 -640120 0
+9.1407e+06 -647320 0
+8.874e+06 -646670 0
+8.5985e+06 -636690 0
+8.3176e+06 -615260 0
+8.0352e+06 -579480 0
+7.7559e+06 -525180 0
+7.485e+06 -446590 0
+7.2287e+06 -335680 0
+6.994e+06 -181640 0
+6.7879e+06 29734 0
+6.6171e+06 316300 0
+6.4862e+06 699270 0
+6.3964e+06 1.2017e+06 0
+6.3423e+06 1.8455e+06 0
+6.3105e+06 2.6456e+06 0
+6.2785e+06 3.6031e+06 0
+6.2165e+06 4.6963e+06 0
+6.0928e+06 5.8748e+06 0
+5.8828e+06 7.0596e+06 0
+5.5778e+06 8.1532e+06 0
+5.1905e+06 9.0595e+06 0
+4.7524e+06 9.7076e+06 0
+4.3041e+06 1.0068e+07 0
+3.8832e+06 1.0158e+07 0
+3.515e+06 1.0027e+07 0
+3.2097e+06 9.7408e+06 0
+2.9651e+06 9.3641e+06 0
+2.7717e+06 8.9494e+06 0
+2.6172e+06 8.5333e+06 0
+2.4899e+06 8.1376e+06 0
+2.3806e+06 7.7733e+06 0
+2.2826e+06 7.4434e+06 0
+2.1915e+06 7.1469e+06 0
+2.1047e+06 6.8809e+06 0
+2.0206e+06 6.6415e+06 0
+1.9385e+06 6.4249e+06 0
+1.8579e+06 6.228e+06 0
+1.7787e+06 6.0479e+06 0
+1.7009e+06 5.8822e+06 0
+1.6244e+06 5.7293e+06 0
+1.5492e+06 5.5876e+06 0
+1.4753e+06 5.456e+06 0
+1.4026e+06 5.3335e+06 0
+1.3311e+06 5.2195e+06 0
+1.2607e+06 5.1133e+06 0
+1.1913e+06 5.0145e+06 0
+1.123e+06 4.9226e+06 0
+1.0556e+06 4.8373e+06 0
+989090 4.7583e+06 0
+923430 4.6854e+06 0
+858540 4.6182e+06 0
+794380 4.5566e+06 0
+730890 4.5004e+06 0
+668030 4.4495e+06 0
+605730 4.4036e+06 0
+543970 4.3626e+06 0
+482680 4.3264e+06 0
+421830 4.2949e+06 0
+361360 4.2679e+06 0
+301220 4.2454e+06 0
+241380 4.2273e+06 0
+181790 4.2134e+06 0
+122400 4.2037e+06 0
+63169 4.1982e+06 0
+4052.5 4.1967e+06 0
+-54991 4.1993e+06 0
+-114000 4.2058e+06 0
+-173020 4.2163e+06 0
+-232090 4.2307e+06 0
+-291250 4.249e+06 0
+-350520 4.2712e+06 0
+-409960 4.2972e+06 0
+-469580 4.3271e+06 0
+-529420 4.3608e+06 0
+-589510 4.3983e+06 0
+-649870 4.4396e+06 0
+-710520 4.4847e+06 0
+-771490 4.5336e+06 0
+-832800 4.5863e+06 0
+-894450 4.6427e+06 0
+-956460 4.7028e+06 0
+-1.0188e+06 4.7667e+06 0
+-1.0816e+06 4.8342e+06 0
+-1.1447e+06 4.9052e+06 0
+-1.2083e+06 4.9799e+06 0
+-1.2722e+06 5.058e+06 0
+-1.3365e+06 5.1396e+06 0
+-1.4013e+06 5.2245e+06 0
+-1.4664e+06 5.3127e+06 0
+-1.5321e+06 5.4042e+06 0
+-1.5981e+06 5.4988e+06 0
+-1.6647e+06 5.5966e+06 0
+-1.7319e+06 5.6975e+06 0
+-1.7996e+06 5.8017e+06 0
+-1.8681e+06 5.9091e+06 0
+-1.9373e+06 6.0202e+06 0
+-2.0074e+06 6.1351e+06 0
+-2.0786e+06 6.2544e+06 0
+-2.151e+06 6.379e+06 0
+-2.2247e+06 6.51e+06 0
+-2.3001e+06 6.6488e+06 0
+-2.3773e+06 6.7976e+06 0
+-2.4566e+06 6.9592e+06 0
+-2.5385e+06 7.1374e+06 0
+-2.6233e+06 7.3372e+06 0
+-2.7115e+06 7.5654e+06 0
+-2.804e+06 7.8305e+06 0
+-2.9019e+06 8.1439e+06 0
+-3.007e+06 8.52e+06 0
+-3.1221e+06 8.9772e+06 0
+-3.2518e+06 9.5383e+06 0
+-3.4036e+06 1.0231e+07 0
+-3.5892e+06 1.1087e+07 0
+-3.8266e+06 1.2141e+07 0
+-4.1423e+06 1.3425e+07 0
+-4.5732e+06 1.4962e+07 0
+-5.1663e+06 1.6752e+07 0
+-5.9752e+06 1.8757e+07 0
+-7.0503e+06 2.0885e+07 0
+-8.4214e+06 2.2974e+07 0
+-1.0077e+07 2.4799e+07 0
+-1.1947e+07 2.6104e+07 0
+-1.3898e+07 2.6648e+07 0
+-1.5758e+07 2.628e+07 0
+-1.7352e+07 2.4981e+07 0
+-1.8554e+07 2.2875e+07 0
+-1.9309e+07 2.0194e+07 0
+-1.9642e+07 1.7209e+07 0
+-1.9637e+07 1.4178e+07 0
+-1.9406e+07 1.13e+07 0
+-1.9064e+07 8.7025e+06 0
+-1.8709e+07 6.4467e+06 0
+-1.8415e+07 4.544e+06 0
+-1.8231e+07 2.9725e+06 0
+-1.8183e+07 1.6929e+06 0
+-1.8281e+07 659230 0
+-1.8523e+07 -173700 0
+-1.8899e+07 -846720 0
+-1.9397e+07 -1.3945e+06 0
+-2.0001e+07 -1.8453e+06 0
+-2.0696e+07 -2.2213e+06 0
+-2.1466e+07 -2.5397e+06 0
+-2.2298e+07 -2.8133e+06 0
+-2.3177e+07 -3.0517e+06 0
+-2.4091e+07 -3.2623e+06 0
+-2.5028e+07 -3.4503e+06 0
+-2.5979e+07 -3.6196e+06 0
+-2.6933e+07 -3.7724e+06 0
+-2.7881e+07 -3.91e+06 0
+-2.8814e+07 -4.032e+06 0
+-2.9724e+07 -4.1374e+06 0
+-3.0603e+07 -4.2249e+06 0
+-3.1444e+07 -4.2935e+06 0
+-3.224e+07 -4.343e+06 0
+-3.2985e+07 -4.3748e+06 0
+-3.3675e+07 -4.3913e+06 0
+-3.4305e+07 -4.3954e+06 0
+-3.487e+07 -4.3902e+06 0
+-3.5367e+07 -4.378e+06 0
+-3.5793e+07 -4.3599e+06 0
+-3.6147e+07 -4.3351e+06 0
+-3.6425e+07 -4.3011e+06 0
+-3.6628e+07 -4.2543e+06 0
+-3.6753e+07 -4.1907e+06 0
+-3.68e+07 -4.1082e+06 0
+-3.677e+07 -4.0072e+06 0
+-3.6666e+07 -3.8921e+06 0
+-3.6491e+07 -3.7699e+06 0
+-3.6253e+07 -3.6488e+06 0
+-3.5954e+07 -3.5345e+06 0
+-3.5597e+07 -3.428e+06 0
+-3.5183e+07 -3.3249e+06 0
+-3.471e+07 -3.2174e+06 0
+-3.418e+07 -3.0989e+06 0
+-3.3599e+07 -2.9677e+06 0
+-3.2976e+07 -2.8291e+06 0
+-3.2321e+07 -2.692e+06 0
+-3.1642e+07 -2.5639e+06 0
+-3.0944e+07 -2.4454e+06 0
+-3.023e+07 -2.3301e+06 0
+-2.9499e+07 -2.2101e+06 0
+-2.8755e+07 -2.0843e+06 0
+-2.8004e+07 -1.9632e+06 0
+-2.7252e+07 -1.8643e+06 0
+-2.6504e+07 -1.8005e+06 0
+-2.5759e+07 -1.7678e+06 0
+-2.5015e+07 -1.7437e+06 0
+-2.427e+07 -1.6983e+06 0
+-2.3528e+07 -1.6141e+06 0
+-2.2803e+07 -1.5006e+06 0
+-2.2111e+07 -1.3919e+06 0
+-2.1465e+07 -1.3266e+06 0
+-2.0867e+07 -1.3224e+06 0
+-2.0309e+07 -1.362e+06 0
+-1.9776e+07 -1.4031e+06 0
+-1.9255e+07 -1.4054e+06 0
+-1.8747e+07 -1.3581e+06 0
+-1.8261e+07 -1.2883e+06 0
+-1.7814e+07 -1.2438e+06 0
+-1.7418e+07 -1.2612e+06 0
+-1.7074e+07 -1.3413e+06 0
+-1.6768e+07 -1.4467e+06 0
+-1.6488e+07 -1.5251e+06 0
+-1.6221e+07 -1.5415e+06 0
+-1.5969e+07 -1.4991e+06 0
+-1.5742e+07 -1.4374e+06 0
+-1.5554e+07 -1.4085e+06 0
+-1.5412e+07 -1.4474e+06 0
+-1.5313e+07 -1.5534e+06 0
+-1.5244e+07 -1.6927e+06 0
+-1.5187e+07 -1.8167e+06 0
+-1.5129e+07 -1.8877e+06 0
+-1.5067e+07 -1.8947e+06 0
+-1.5004e+07 -1.8562e+06 0
+-1.4952e+07 -1.8086e+06 0
+-1.4924e+07 -1.7887e+06 0
+-1.4925e+07 -1.8191e+06 0
+-1.4957e+07 -1.9016e+06 0
+-1.5014e+07 -2.0199e+06 0
+-1.5085e+07 -2.1472e+06 0
+-1.5158e+07 -2.2571e+06 0
+-1.5222e+07 -2.3305e+06 0
+-1.527e+07 -2.3596e+06 0
+-1.5298e+07 -2.3474e+06 0
+9.4003e+06 -1235 0
+9.5118e+06 -14579 0
+9.6186e+06 -30429 0
+9.7194e+06 -47991 0
+9.8135e+06 -66370 0
+9.9004e+06 -84705 0
+9.9797e+06 -102320 0
+1.0052e+07 -118830 0
+1.0117e+07 -134250 0
+1.0174e+07 -148990 0
+1.0225e+07 -163720 0
+1.0268e+07 -179240 0
+1.0303e+07 -196230 0
+1.0328e+07 -215030 0
+1.0342e+07 -235520 0
+1.0346e+07 -257120 0
+1.0337e+07 -278880 0
+1.0317e+07 -299740 0
+1.0284e+07 -318770 0
+1.0241e+07 -335370 0
+1.0187e+07 -349430 0
+1.0124e+07 -361230 0
+1.0053e+07 -371290 0
+9.9741e+06 -380120 0
+9.8878e+06 -388030 0
+9.7947e+06 -394990 0
+9.6954e+06 -400660 0
+9.5905e+06 -404460 0
+9.4812e+06 -405840 0
+9.3687e+06 -404390 0
+9.2542e+06 -400000 0
+9.1391e+06 -392810 0
+9.0249e+06 -383160 0
+8.9126e+06 -371460 0
+8.8036e+06 -358050 0
+8.6989e+06 -343130 0
+8.5995e+06 -326770 0
+8.5066e+06 -308970 0
+8.4211e+06 -289710 0
+8.3442e+06 -269040 0
+8.2767e+06 -247120 0
+8.2195e+06 -224220 0
+8.1731e+06 -200690 0
+8.1381e+06 -176910 0
+8.1147e+06 -153260 0
+8.1031e+06 -130120 0
+8.1033e+06 -107800 0
+8.115e+06 -86616 0
+8.1379e+06 -66865 0
+8.1716e+06 -48836 0
+8.2151e+06 -32807 0
+8.2678e+06 -19041 0
+8.3286e+06 -7770.2 0
+8.3961e+06 808.31 0
+8.4692e+06 6536.3 0
+8.5462e+06 9290.3 0
+8.6257e+06 8976.4 0
+8.706e+06 5527.4 0
+8.7852e+06 -1093.8 0
+8.8618e+06 -10885 0
+8.9337e+06 -23793 0
+8.9992e+06 -39698 0
+9.0563e+06 -58408 0
+9.1034e+06 -79663 0
+9.1388e+06 -103140 0
+9.1609e+06 -128460 0
+9.1684e+06 -155240 0
+9.1601e+06 -183060 0
+9.135e+06 -211510 0
+9.0924e+06 -240180 0
+9.0317e+06 -268670 0
+8.9525e+06 -296560 0
+8.8548e+06 -323480 0
+8.7385e+06 -349020 0
+8.6042e+06 -372780 0
+8.4523e+06 -394380 0
+8.2836e+06 -413400 0
+8.0992e+06 -429450 0
+7.9003e+06 -442120 0
+7.6886e+06 -450940 0
+7.4657e+06 -455390 0
+7.2336e+06 -454800 0
+6.9947e+06 -448320 0
+6.7517e+06 -434740 0
+6.5077e+06 -412350 0
+6.2663e+06 -378670 0
+6.0318e+06 -330140 0
+5.8093e+06 -261610 0
+5.6048e+06 -165750 0
+5.4251e+06 -32358 0
+5.2775e+06 152490 0
+5.1693e+06 407070 0
+5.1062e+06 754210 0
+5.0902e+06 1.2205e+06 0
+5.1168e+06 1.8334e+06 0
+5.1718e+06 2.6161e+06 0
+5.2295e+06 3.5783e+06 0
+5.2532e+06 4.7057e+06 0
+5.2018e+06 5.949e+06 0
+5.0411e+06 7.2212e+06 0
+4.7569e+06 8.4074e+06 0
+4.3641e+06 9.3894e+06 0
+3.904e+06 1.0078e+07 0
+3.4302e+06 1.0439e+07 0
+2.9914e+06 1.0495e+07 0
+2.6186e+06 1.031e+07 0
+2.3222e+06 9.9647e+06 0
+2.0972e+06 9.535e+06 0
+1.9298e+06 9.0784e+06 0
+1.8045e+06 8.6321e+06 0
+1.7076e+06 8.2164e+06 0
+1.6285e+06 7.8394e+06 0
+1.56e+06 7.502e+06 0
+1.4976e+06 7.2012e+06 0
+1.4386e+06 6.9326e+06 0
+1.3816e+06 6.6917e+06 0
+1.326e+06 6.4741e+06 0
+1.2713e+06 6.2763e+06 0
+1.2175e+06 6.0953e+06 0
+1.1646e+06 5.9289e+06 0
+1.1125e+06 5.7753e+06 0
+1.0612e+06 5.6328e+06 0
+1.0108e+06 5.5004e+06 0
+961190 5.3773e+06 0
+912350 5.2626e+06 0
+864260 5.1557e+06 0
+816890 5.0563e+06 0
+770180 4.9638e+06 0
+724110 4.878e+06 0
+678630 4.7985e+06 0
+633690 4.725e+06 0
+589280 4.6574e+06 0
+545340 4.5954e+06 0
+501840 4.5388e+06 0
+458750 4.4875e+06 0
+416030 4.4413e+06 0
+373660 4.4e+06 0
+331600 4.3636e+06 0
+289810 4.3318e+06 0
+248270 4.3046e+06 0
+206960 4.2819e+06 0
+165830 4.2636e+06 0
+124860 4.2496e+06 0
+84031 4.2398e+06 0
+43302 4.2341e+06 0
+2651.3 4.2326e+06 0
+-37948 4.2351e+06 0
+-78522 4.2417e+06 0
+-119100 4.2521e+06 0
+-159690 4.2666e+06 0
+-200330 4.2849e+06 0
+-241040 4.3072e+06 0
+-281840 4.3333e+06 0
+-322750 4.3633e+06 0
+-363780 4.3971e+06 0
+-404950 4.4347e+06 0
+-446280 4.4762e+06 0
+-487780 4.5215e+06 0
+-529450 4.5706e+06 0
+-571310 4.6234e+06 0
+-613370 4.68e+06 0
+-655620 4.7403e+06 0
+-698080 4.8043e+06 0
+-740740 4.872e+06 0
+-783610 4.9433e+06 0
+-826690 5.0181e+06 0
+-869970 5.0965e+06 0
+-913480 5.1782e+06 0
+-957190 5.2634e+06 0
+-1.0011e+06 5.3518e+06 0
+-1.0453e+06 5.4435e+06 0
+-1.0898e+06 5.5384e+06 0
+-1.1345e+06 5.6364e+06 0
+-1.1796e+06 5.7377e+06 0
+-1.225e+06 5.8422e+06 0
+-1.2708e+06 5.95e+06 0
+-1.3172e+06 6.0615e+06 0
+-1.3641e+06 6.177e+06 0
+-1.4118e+06 6.297e+06 0
+-1.4603e+06 6.4224e+06 0
+-1.5098e+06 6.5542e+06 0
+-1.5605e+06 6.6941e+06 0
+-1.6125e+06 6.8441e+06 0
+-1.6662e+06 7.0072e+06 0
+-1.7219e+06 7.1871e+06 0
+-1.7799e+06 7.3891e+06 0
+-1.8407e+06 7.6197e+06 0
+-1.905e+06 7.888e+06 0
+-1.9738e+06 8.2054e+06 0
+-2.0487e+06 8.587e+06 0
+-2.1322e+06 9.052e+06 0
+-2.2284e+06 9.6248e+06 0
+-2.3441e+06 1.0335e+07 0
+-2.4903e+06 1.1219e+07 0
+-2.6846e+06 1.2317e+07 0
+-2.954e+06 1.3668e+07 0
+-3.3376e+06 1.5306e+07 0
+-3.888e+06 1.724e+07 0
+-4.6684e+06 1.9439e+07 0
+-5.7416e+06 2.1807e+07 0
+-7.1494e+06 2.4159e+07 0
+-8.8837e+06 2.6229e+07 0
+-1.086e+07 2.7696e+07 0
+-1.2911e+07 2.8263e+07 0
+-1.4815e+07 2.7746e+07 0
+-1.6358e+07 2.6141e+07 0
+-1.7392e+07 2.3634e+07 0
+-1.7876e+07 2.0535e+07 0
+-1.7872e+07 1.7191e+07 0
+-1.7508e+07 1.3903e+07 0
+-1.6933e+07 1.0881e+07 0
+-1.629e+07 8.2431e+06 0
+-1.5686e+07 6.0267e+06 0
+-1.5198e+07 4.2167e+06 0
+-1.4867e+07 2.7679e+06 0
+-1.4711e+07 1.6231e+06 0
+-1.4732e+07 724140 0
+-1.492e+07 18309 0
+-1.526e+07 -539270 0
+-1.5734e+07 -984960 0
+-1.6325e+07 -1.3472e+06 0
+-1.7016e+07 -1.6479e+06 0
+-1.7791e+07 -1.9031e+06 0
+-1.8637e+07 -2.1249e+06 0
+-1.954e+07 -2.3219e+06 0
+-2.0488e+07 -2.5003e+06 0
+-2.147e+07 -2.6648e+06 0
+-2.2478e+07 -2.8183e+06 0
+-2.3501e+07 -2.9629e+06 0
+-2.4531e+07 -3.0992e+06 0
+-2.5559e+07 -3.2268e+06 0
+-2.6577e+07 -3.3446e+06 0
+-2.7577e+07 -3.4511e+06 0
+-2.855e+07 -3.5451e+06 0
+-2.9488e+07 -3.6259e+06 0
+-3.0384e+07 -3.6944e+06 0
+-3.1233e+07 -3.7523e+06 0
+-3.2027e+07 -3.8021e+06 0
+-3.2762e+07 -3.8463e+06 0
+-3.3434e+07 -3.8866e+06 0
+-3.4039e+07 -3.9237e+06 0
+-3.4574e+07 -3.9562e+06 0
+-3.5036e+07 -3.9818e+06 0
+-3.5422e+07 -3.9968e+06 0
+-3.5728e+07 -3.9973e+06 0
+-3.5952e+07 -3.9803e+06 0
+-3.6093e+07 -3.9452e+06 0
+-3.6151e+07 -3.894e+06 0
+-3.613e+07 -3.8323e+06 0
+-3.6036e+07 -3.7673e+06 0
+-3.5873e+07 -3.7057e+06 0
+-3.5644e+07 -3.6506e+06 0
+-3.5348e+07 -3.5994e+06 0
+-3.4985e+07 -3.5446e+06 0
+-3.4554e+07 -3.4774e+06 0
+-3.4061e+07 -3.3929e+06 0
+-3.3513e+07 -3.2931e+06 0
+-3.2922e+07 -3.1866e+06 0
+-3.2297e+07 -3.0828e+06 0
+-3.164e+07 -2.9861e+06 0
+-3.0953e+07 -2.8926e+06 0
+-3.0235e+07 -2.7942e+06 0
+-2.9489e+07 -2.6869e+06 0
+-2.8723e+07 -2.5774e+06 0
+-2.7948e+07 -2.482e+06 0
+-2.7173e+07 -2.4162e+06 0
+-2.6401e+07 -2.3815e+06 0
+-2.5627e+07 -2.3594e+06 0
+-2.4846e+07 -2.3194e+06 0
+-2.4058e+07 -2.2379e+06 0
+-2.3271e+07 -2.1164e+06 0
+-2.2507e+07 -1.9842e+06 0
+-2.1782e+07 -1.8826e+06 0
+-2.1107e+07 -1.8387e+06 0
+-2.0475e+07 -1.8466e+06 0
+-1.9871e+07 -1.87e+06 0
+-1.9278e+07 -1.8657e+06 0
+-1.8689e+07 -1.8122e+06 0
+-1.8117e+07 -1.7253e+06 0
+-1.7579e+07 -1.6473e+06 0
+-1.7096e+07 -1.6196e+06 0
+-1.6673e+07 -1.6543e+06 0
+-1.6299e+07 -1.7256e+06 0
+-1.5954e+07 -1.7857e+06 0
+-1.562e+07 -1.7944e+06 0
+-1.5294e+07 -1.744e+06 0
+-1.4984e+07 -1.6638e+06 0
+-1.471e+07 -1.6023e+06 0
+-1.4487e+07 -1.5996e+06 0
+-1.4318e+07 -1.6657e+06 0
+-1.4192e+07 -1.7765e+06 0
+-1.4089e+07 -1.8885e+06 0
+-1.3989e+07 -1.9607e+06 0
+-1.3882e+07 -1.9742e+06 0
+-1.3768e+07 -1.9379e+06 0
+-1.366e+07 -1.8818e+06 0
+-1.3573e+07 -1.8414e+06 0
+-1.3521e+07 -1.8433e+06 0
+-1.3509e+07 -1.896e+06 0
+-1.3531e+07 -1.9897e+06 0
+-1.3578e+07 -2.1026e+06 0
+-1.3634e+07 -2.2096e+06 0
+-1.3684e+07 -2.2902e+06 0
+-1.3719e+07 -2.3333e+06 0
+-1.3732e+07 -2.338e+06 0
+7.9179e+06 -85009 0
+8.0166e+06 -95502 0
+8.1109e+06 -107450 0
+8.1996e+06 -120280 0
+8.2819e+06 -133370 0
+8.3576e+06 -146140 0
+8.4264e+06 -158150 0
+8.4884e+06 -169180 0
+8.5439e+06 -179280 0
+8.5931e+06 -188760 0
+8.6357e+06 -198110 0
+8.6715e+06 -207870 0
+8.6997e+06 -218480 0
+8.7195e+06 -230140 0
+8.73e+06 -242750 0
+8.7303e+06 -255850 0
+8.7201e+06 -268800 0
+8.6993e+06 -280860 0
+8.6681e+06 -291430 0
+8.6273e+06 -300170 0
+8.5776e+06 -307060 0
+8.5199e+06 -312370 0
+8.4549e+06 -316490 0
+8.3832e+06 -319840 0
+8.3053e+06 -322620 0
+8.2214e+06 -324800 0
+8.1323e+06 -326130 0
+8.0385e+06 -326200 0
+7.941e+06 -324630 0
+7.8408e+06 -321170 0
+7.7391e+06 -315770 0
+7.6372e+06 -308590 0
+7.5362e+06 -299910 0
+7.4373e+06 -290060 0
+7.3413e+06 -279300 0
+7.2494e+06 -267810 0
+7.1622e+06 -255620 0
+7.0808e+06 -242730 0
+7.0059e+06 -229120 0
+6.9385e+06 -214780 0
+6.8793e+06 -199840 0
+6.8289e+06 -184430 0
+6.7879e+06 -168810 0
+6.7566e+06 -153200 0
+6.7352e+06 -137880 0
+6.7238e+06 -123070 0
+6.7222e+06 -108980 0
+6.7302e+06 -95812 0
+6.7474e+06 -83735 0
+6.7732e+06 -72915 0
+6.807e+06 -63503 0
+6.8479e+06 -55634 0
+6.8949e+06 -49424 0
+6.9469e+06 -44962 0
+7.0027e+06 -42317 0
+7.0609e+06 -41536 0
+7.1202e+06 -42648 0
+7.179e+06 -45666 0
+7.2359e+06 -50581 0
+7.2893e+06 -57359 0
+7.3376e+06 -65931 0
+7.3792e+06 -76187 0
+7.4126e+06 -87975 0
+7.4365e+06 -101100 0
+7.4493e+06 -115350 0
+7.45e+06 -130450 0
+7.4375e+06 -146160 0
+7.4111e+06 -162220 0
+7.3699e+06 -178360 0
+7.3137e+06 -194330 0
+7.2421e+06 -209890 0
+7.155e+06 -224800 0
+7.0526e+06 -238830 0
+6.9353e+06 -251750 0
+6.8035e+06 -263330 0
+6.6579e+06 -273340 0
+6.4996e+06 -281540 0
+6.3296e+06 -287720 0
+6.1493e+06 -291590 0
+5.9602e+06 -292880 0
+5.7639e+06 -291220 0
+5.5624e+06 -286140 0
+5.3579e+06 -276990 0
+5.1527e+06 -262810 0
+4.9497e+06 -242240 0
+4.7524e+06 -213230 0
+4.5645e+06 -172760 0
+4.391e+06 -116370 0
+4.2376e+06 -37533 0
+4.1112e+06 73190 0
+4.0195e+06 229110 0
+3.9708e+06 448480 0
+3.9722e+06 755330 0
+4.0279e+06 1.1794e+06 0
+4.1354e+06 1.7544e+06 0
+4.2813e+06 2.5127e+06 0
+4.4371e+06 3.4758e+06 0
+4.5589e+06 4.6401e+06 0
+4.5935e+06 5.9612e+06 0
+4.4922e+06 7.3439e+06 0
+4.2315e+06 8.6508e+06 0
+3.8273e+06 9.7331e+06 0
+3.3332e+06 1.0476e+07 0
+2.821e+06 1.0838e+07 0
+2.3536e+06 1.0849e+07 0
+1.9686e+06 1.0597e+07 0
+1.6759e+06 1.0182e+07 0
+1.4656e+06 9.6918e+06 0
+1.3191e+06 9.189e+06 0
+1.2171e+06 8.711e+06 0
+1.1437e+06 8.2751e+06 0
+1.0872e+06 7.8862e+06 0
+1.0404e+06 7.542e+06 0
+998740 7.2376e+06 0
+959740 6.9671e+06 0
+922140 6.725e+06 0
+885350 6.5068e+06 0
+849140 6.3085e+06 0
+813430 6.1271e+06 0
+778210 5.9602e+06 0
+743510 5.8061e+06 0
+709340 5.6631e+06 0
+675700 5.5303e+06 0
+642580 5.4067e+06 0
+609980 5.2915e+06 0
+577870 5.1842e+06 0
+546240 5.0844e+06 0
+515050 4.9915e+06 0
+484270 4.9053e+06 0
+453890 4.8255e+06 0
+423870 4.7517e+06 0
+394190 4.6838e+06 0
+364820 4.6215e+06 0
+335740 4.5647e+06 0
+306930 4.5131e+06 0
+278360 4.4667e+06 0
+250010 4.4252e+06 0
+221860 4.3886e+06 0
+193900 4.3567e+06 0
+166100 4.3293e+06 0
+138430 4.3065e+06 0
+110900 4.2881e+06 0
+83461 4.274e+06 0
+56114 4.2641e+06 0
+28835 4.2584e+06 0
+1609 4.2568e+06 0
+-25582 4.2593e+06 0
+-52753 4.2659e+06 0
+-79920 4.2763e+06 0
+-107100 4.2908e+06 0
+-134300 4.3092e+06 0
+-161540 4.3315e+06 0
+-188830 4.3576e+06 0
+-216180 4.3876e+06 0
+-243600 4.4215e+06 0
+-271110 4.4593e+06 0
+-298700 4.5008e+06 0
+-326390 4.5462e+06 0
+-354180 4.5954e+06 0
+-382070 4.6483e+06 0
+-410080 4.705e+06 0
+-438190 4.7654e+06 0
+-466410 4.8296e+06 0
+-494750 4.8973e+06 0
+-523200 4.9687e+06 0
+-551750 5.0437e+06 0
+-580420 5.1221e+06 0
+-609200 5.204e+06 0
+-638090 5.2892e+06 0
+-667110 5.3778e+06 0
+-696250 5.4696e+06 0
+-725530 5.5646e+06 0
+-754970 5.6628e+06 0
+-784600 5.7642e+06 0
+-814450 5.8689e+06 0
+-844560 5.9771e+06 0
+-874990 6.0888e+06 0
+-905810 6.2047e+06 0
+-937100 6.3251e+06 0
+-968970 6.451e+06 0
+-1.0015e+06 6.5835e+06 0
+-1.0349e+06 6.7242e+06 0
+-1.0693e+06 6.8751e+06 0
+-1.105e+06 7.0393e+06 0
+-1.1421e+06 7.2206e+06 0
+-1.1809e+06 7.4241e+06 0
+-1.2219e+06 7.6567e+06 0
+-1.2657e+06 7.9274e+06 0
+-1.313e+06 8.2481e+06 0
+-1.365e+06 8.6341e+06 0
+-1.4239e+06 9.1055e+06 0
+-1.4929e+06 9.6879e+06 0
+-1.5779e+06 1.0413e+07 0
+-1.6886e+06 1.1322e+07 0
+-1.8415e+06 1.2459e+07 0
+-2.0631e+06 1.3873e+07 0
+-2.3938e+06 1.5608e+07 0
+-2.8913e+06 1.7689e+07 0
+-3.6294e+06 2.0095e+07 0
+-4.687e+06 2.2726e+07 0
+-6.1236e+06 2.538e+07 0
+-7.9399e+06 2.7733e+07 0
+-1.0038e+07 2.9387e+07 0
+-1.2207e+07 2.9963e+07 0
+-1.4164e+07 2.9234e+07 0
+-1.5638e+07 2.7224e+07 0
+-1.6466e+07 2.421e+07 0
+-1.6633e+07 2.0614e+07 0
+-1.6253e+07 1.6873e+07 0
+-1.5511e+07 1.333e+07 0
+-1.4598e+07 1.0198e+07 0
+-1.3676e+07 7.5673e+06 0
+-1.2859e+07 5.4393e+06 0
+-1.2213e+07 3.7651e+06 0
+-1.1769e+07 2.473e+06 0
+-1.1532e+07 1.4876e+06 0
+-1.1491e+07 739870 0
+-1.1629e+07 171490 0
+-1.1924e+07 -264430 0
+-1.2357e+07 -604250 0
+-1.2907e+07 -875440 0
+-1.3559e+07 -1.0983e+06 0
+-1.4296e+07 -1.2876e+06 0
+-1.5106e+07 -1.454e+06 0
+-1.5977e+07 -1.6049e+06 0
+-1.6899e+07 -1.7455e+06 0
+-1.7863e+07 -1.8797e+06 0
+-1.8859e+07 -2.0098e+06 0
+-1.9882e+07 -2.1374e+06 0
+-2.0922e+07 -2.263e+06 0
+-2.1973e+07 -2.3863e+06 0
+-2.3025e+07 -2.5064e+06 0
+-2.4072e+07 -2.6218e+06 0
+-2.5105e+07 -2.7313e+06 0
+-2.6115e+07 -2.8341e+06 0
+-2.7096e+07 -2.9306e+06 0
+-2.8039e+07 -3.022e+06 0
+-2.8938e+07 -3.1102e+06 0
+-2.9788e+07 -3.1969e+06 0
+-3.0584e+07 -3.2833e+06 0
+-3.1322e+07 -3.3695e+06 0
+-3.1999e+07 -3.4543e+06 0
+-3.2609e+07 -3.5351e+06 0
+-3.3148e+07 -3.6089e+06 0
+-3.3612e+07 -3.6719e+06 0
+-3.3996e+07 -3.7208e+06 0
+-3.4296e+07 -3.7532e+06 0
+-3.4511e+07 -3.7693e+06 0
+-3.4644e+07 -3.7721e+06 0
+-3.47e+07 -3.7677e+06 0
+-3.4682e+07 -3.7633e+06 0
+-3.4594e+07 -3.7638e+06 0
+-3.4435e+07 -3.7687e+06 0
+-3.4203e+07 -3.7715e+06 0
+-3.3899e+07 -3.7616e+06 0
+-3.3524e+07 -3.7308e+06 0
+-3.3087e+07 -3.6779e+06 0
+-3.2596e+07 -3.6102e+06 0
+-3.206e+07 -3.5394e+06 0
+-3.1482e+07 -3.4739e+06 0
+-3.0861e+07 -3.413e+06 0
+-3.0194e+07 -3.348e+06 0
+-2.9485e+07 -3.2705e+06 0
+-2.8745e+07 -3.1817e+06 0
+-2.7987e+07 -3.0952e+06 0
+-2.7227e+07 -3.0293e+06 0
+-2.6468e+07 -2.9928e+06 0
+-2.5708e+07 -2.9742e+06 0
+-2.4934e+07 -2.9449e+06 0
+-2.4142e+07 -2.876e+06 0
+-2.3339e+07 -2.7583e+06 0
+-2.2542e+07 -2.6128e+06 0
+-2.1777e+07 -2.4804e+06 0
+-2.1058e+07 -2.3972e+06 0
+-2.0384e+07 -2.371e+06 0
+-1.974e+07 -2.3755e+06 0
+-1.9105e+07 -2.3668e+06 0
+-1.8468e+07 -2.313e+06 0
+-1.784e+07 -2.215e+06 0
+-1.7242e+07 -2.1065e+06 0
+-1.6698e+07 -2.0313e+06 0
+-1.622e+07 -2.0143e+06 0
+-1.58e+07 -2.0449e+06 0
+-1.5413e+07 -2.0838e+06 0
+-1.5037e+07 -2.0876e+06 0
+-1.466e+07 -2.0362e+06 0
+-1.4292e+07 -1.9443e+06 0
+-1.3953e+07 -1.853e+06 0
+-1.3667e+07 -1.8053e+06 0
+-1.3443e+07 -1.8229e+06 0
+-1.3273e+07 -1.8955e+06 0
+-1.3137e+07 -1.9879e+06 0
+-1.3009e+07 -2.0587e+06 0
+-1.2873e+07 -2.0805e+06 0
+-1.2727e+07 -2.0507e+06 0
+-1.2582e+07 -1.9894e+06 0
+-1.2457e+07 -1.9291e+06 0
+-1.2368e+07 -1.8992e+06 0
+-1.2325e+07 -1.9159e+06 0
+-1.2326e+07 -1.9781e+06 0
+-1.2358e+07 -2.0704e+06 0
+-1.2404e+07 -2.1703e+06 0
+-1.2448e+07 -2.2564e+06 0
+-1.2476e+07 -2.3134e+06 0
+-1.2485e+07 -2.3353e+06 0
+6.4616e+06 -156590 0
+6.5446e+06 -164450 0
+6.6235e+06 -172860 0
+6.6976e+06 -181450 0
+6.766e+06 -189820 0
+6.8286e+06 -197650 0
+6.8852e+06 -204700 0
+6.9359e+06 -210890 0
+6.981e+06 -216290 0
+7.0204e+06 -221140 0
+7.0542e+06 -225750 0
+7.0821e+06 -230460 0
+7.1034e+06 -235520 0
+7.1176e+06 -241020 0
+7.1238e+06 -246850 0
+7.1215e+06 -252690 0
+7.1103e+06 -258130 0
+7.0903e+06 -262740 0
+7.0616e+06 -266170 0
+7.0249e+06 -268290 0
+6.9809e+06 -269160 0
+6.9302e+06 -269020 0
+6.8736e+06 -268200 0
+6.8114e+06 -266960 0
+6.744e+06 -265450 0
+6.6718e+06 -263660 0
+6.5953e+06 -261410 0
+6.515e+06 -258430 0
+6.4318e+06 -254500 0
+6.3464e+06 -249470 0
+6.2601e+06 -243380 0
+6.1737e+06 -236370 0
+6.0883e+06 -228660 0
+6.0047e+06 -220520 0
+5.9239e+06 -212140 0
+5.8464e+06 -203620 0
+5.773e+06 -195010 0
+5.7043e+06 -186280 0
+5.6411e+06 -177400 0
+5.584e+06 -168360 0
+5.5337e+06 -159200 0
+5.4905e+06 -150000 0
+5.4549e+06 -140880 0
+5.4271e+06 -131970 0
+5.4073e+06 -123410 0
+5.3954e+06 -115320 0
+5.3912e+06 -107810 0
+5.3945e+06 -100970 0
+5.4048e+06 -94881 0
+5.4217e+06 -89601 0
+5.4445e+06 -85179 0
+5.4725e+06 -81650 0
+5.5047e+06 -79036 0
+5.5402e+06 -77347 0
+5.5781e+06 -76581 0
+5.6171e+06 -76730 0
+5.6561e+06 -77777 0
+5.6939e+06 -79697 0
+5.7292e+06 -82456 0
+5.7608e+06 -86004 0
+5.7874e+06 -90274 0
+5.8078e+06 -95180 0
+5.8208e+06 -100620 0
+5.8253e+06 -106470 0
+5.8204e+06 -112610 0
+5.8051e+06 -118890 0
+5.7789e+06 -125190 0
+5.741e+06 -131390 0
+5.6913e+06 -137350 0
+5.6295e+06 -142960 0
+5.5554e+06 -148130 0
+5.4693e+06 -152740 0
+5.3715e+06 -156710 0
+5.2623e+06 -159940 0
+5.1425e+06 -162340 0
+5.0126e+06 -163810 0
+4.8738e+06 -164250 0
+4.7269e+06 -163560 0
+4.5733e+06 -161600 0
+4.4142e+06 -158200 0
+4.2512e+06 -153130 0
+4.086e+06 -146060 0
+3.9203e+06 -136510 0
+3.7564e+06 -123770 0
+3.5965e+06 -106750 0
+3.4438e+06 -83826 0
+3.3016e+06 -52524 0
+3.1745e+06 -9098.3 0
+3.0678e+06 52089 0
+2.9885e+06 139440 0
+2.9446e+06 265260 0
+2.9455e+06 447220 0
+3.0006e+06 709790 0
+3.1172e+06 1.0853e+06 0
+3.2965e+06 1.6132e+06 0
+3.5282e+06 2.3363e+06 0
+3.784e+06 3.2912e+06 0
+4.0135e+06 4.4902e+06 0
+4.1489e+06 5.8991e+06 0
+4.1219e+06 7.4174e+06 0
+3.8929e+06 8.8798e+06 0
+3.476e+06 1.0094e+07 0
+2.9407e+06 1.091e+07 0
+2.3823e+06 1.127e+07 0
+1.8824e+06 1.1226e+07 0
+1.4851e+06 1.0892e+07 0
+1.1972e+06 1.0394e+07 0
+1.0023e+06 9.8351e+06 0
+875690 9.2832e+06 0
+794150 8.7732e+06 0
+739930 8.318e+06 0
+701090 7.9182e+06 0
+670380 7.5684e+06 0
+643690 7.2611e+06 0
+618880 6.9892e+06 0
+594940 6.7466e+06 0
+571410 6.5279e+06 0
+548160 6.3294e+06 0
+525170 6.1477e+06 0
+502440 5.9806e+06 0
+480010 5.8262e+06 0
+457900 5.683e+06 0
+436130 5.5498e+06 0
+414690 5.4259e+06 0
+393600 5.3104e+06 0
+372820 5.2029e+06 0
+352360 5.1027e+06 0
+332190 5.0096e+06 0
+312300 4.9232e+06 0
+292660 4.8431e+06 0
+273270 4.7691e+06 0
+254100 4.701e+06 0
+235140 4.6385e+06 0
+216370 4.5815e+06 0
+197770 4.5298e+06 0
+179330 4.4832e+06 0
+161050 4.4417e+06 0
+142890 4.4049e+06 0
+124850 4.3729e+06 0
+106920 4.3455e+06 0
+89078 4.3226e+06 0
+71319 4.3041e+06 0
+53628 4.2899e+06 0
+35994 4.28e+06 0
+18406 4.2743e+06 0
+852.32 4.2727e+06 0
+-16677 4.2751e+06 0
+-34193 4.2816e+06 0
+-51705 4.2921e+06 0
+-69222 4.3066e+06 0
+-86754 4.325e+06 0
+-104310 4.3473e+06 0
+-121890 4.3735e+06 0
+-139510 4.4035e+06 0
+-157180 4.4375e+06 0
+-174890 4.4752e+06 0
+-192660 4.5168e+06 0
+-210490 4.5623e+06 0
+-228380 4.6115e+06 0
+-246330 4.6645e+06 0
+-264340 4.7213e+06 0
+-282430 4.7817e+06 0
+-300580 4.8459e+06 0
+-318790 4.9138e+06 0
+-337070 4.9852e+06 0
+-355410 5.0602e+06 0
+-373820 5.1387e+06 0
+-392290 5.2206e+06 0
+-410820 5.3059e+06 0
+-429420 5.3946e+06 0
+-448090 5.4864e+06 0
+-466850 5.5815e+06 0
+-485700 5.6798e+06 0
+-504660 5.7814e+06 0
+-523750 5.8862e+06 0
+-543010 5.9945e+06 0
+-562470 6.1064e+06 0
+-582180 6.2225e+06 0
+-602190 6.3433e+06 0
+-622590 6.4695e+06 0
+-643460 6.6024e+06 0
+-664900 6.7436e+06 0
+-687050 6.8952e+06 0
+-710050 7.0602e+06 0
+-734080 7.2424e+06 0
+-759390 7.4471e+06 0
+-786250 7.6812e+06 0
+-815070 7.9537e+06 0
+-846410 8.2767e+06 0
+-881160 8.666e+06 0
+-920780 9.142e+06 0
+-967780 9.7316e+06 0
+-1.0266e+06 1.0469e+07 0
+-1.1055e+06 1.1397e+07 0
+-1.2185e+06 1.2566e+07 0
+-1.3901e+06 1.4036e+07 0
+-1.6606e+06 1.5863e+07 0
+-2.0907e+06 1.8088e+07 0
+-2.7645e+06 2.0706e+07 0
+-3.7797e+06 2.3625e+07 0
+-5.2203e+06 2.6621e+07 0
+-7.1043e+06 2.9308e+07 0
+-9.3238e+06 3.1184e+07 0
+-1.1617e+07 3.1755e+07 0
+-1.3619e+07 3.0737e+07 0
+-1.4993e+07 2.8204e+07 0
+-1.5564e+07 2.4563e+07 0
+-1.5365e+07 2.0394e+07 0
+-1.4584e+07 1.6237e+07 0
+-1.3472e+07 1.2468e+07 0
+-1.226e+07 9.281e+06 0
+-1.112e+07 6.7176e+06 0
+-1.0155e+07 4.7313e+06 0
+-9.4142e+06 3.2329e+06 0
+-8.9088e+06 2.1235e+06 0
+-8.6273e+06 1.3116e+06 0
+-8.5473e+06 720360 0
+-8.6431e+06 289020 0
+-8.8897e+06 -28895 0
+-9.2646e+06 -267870 0
+-9.7487e+06 -453040 0
+-1.0326e+07 -602440 0
+-1.0983e+07 -728870 0
+-1.1709e+07 -841280 0
+-1.2494e+07 -945900 0
+-1.333e+07 -1.047e+06 0
+-1.4211e+07 -1.1475e+06 0
+-1.5129e+07 -1.2493e+06 0
+-1.608e+07 -1.3538e+06 0
+-1.7056e+07 -1.4613e+06 0
+-1.8052e+07 -1.5719e+06 0
+-1.9061e+07 -1.685e+06 0
+-2.0077e+07 -1.7995e+06 0
+-2.109e+07 -1.9144e+06 0
+-2.2094e+07 -2.029e+06 0
+-2.3081e+07 -2.1432e+06 0
+-2.4044e+07 -2.2579e+06 0
+-2.4977e+07 -2.3742e+06 0
+-2.5874e+07 -2.4934e+06 0
+-2.6731e+07 -2.616e+06 0
+-2.7542e+07 -2.7419e+06 0
+-2.8304e+07 -2.8697e+06 0
+-2.9012e+07 -2.9975e+06 0
+-2.9661e+07 -3.1225e+06 0
+-3.0243e+07 -3.2416e+06 0
+-3.0754e+07 -3.3511e+06 0
+-3.1188e+07 -3.4477e+06 0
+-3.1541e+07 -3.529e+06 0
+-3.1816e+07 -3.5957e+06 0
+-3.2014e+07 -3.6521e+06 0
+-3.214e+07 -3.7051e+06 0
+-3.2196e+07 -3.7615e+06 0
+-3.2183e+07 -3.823e+06 0
+-3.2097e+07 -3.8842e+06 0
+-3.1937e+07 -3.9338e+06 0
+-3.1705e+07 -3.9602e+06 0
+-3.1405e+07 -3.9591e+06 0
+-3.1045e+07 -3.9365e+06 0
+-3.0631e+07 -3.9061e+06 0
+-3.0166e+07 -3.8802e+06 0
+-2.9647e+07 -3.8609e+06 0
+-2.9072e+07 -3.8391e+06 0
+-2.8443e+07 -3.8009e+06 0
+-2.7773e+07 -3.7407e+06 0
+-2.7079e+07 -3.6682e+06 0
+-2.6378e+07 -3.6042e+06 0
+-2.5678e+07 -3.5661e+06 0
+-2.4975e+07 -3.5522e+06 0
+-2.4255e+07 -3.5384e+06 0
+-2.3508e+07 -3.4907e+06 0
+-2.2735e+07 -3.3884e+06 0
+-2.1954e+07 -3.2409e+06 0
+-2.1194e+07 -3.0856e+06 0
+-2.0472e+07 -2.9664e+06 0
+-1.9795e+07 -2.9062e+06 0
+-1.9147e+07 -2.8912e+06 0
+-1.8507e+07 -2.8801e+06 0
+-1.7862e+07 -2.8306e+06 0
+-1.7217e+07 -2.7276e+06 0
+-1.6596e+07 -2.5928e+06 0
+-1.6026e+07 -2.4706e+06 0
+-1.5525e+07 -2.3987e+06 0
+-1.5085e+07 -2.3842e+06 0
+-1.4682e+07 -2.3995e+06 0
+-1.429e+07 -2.4003e+06 0
+-1.3891e+07 -2.3533e+06 0
+-1.3492e+07 -2.2566e+06 0
+-1.3116e+07 -2.1398e+06 0
+-1.2791e+07 -2.0467e+06 0
+-1.2532e+07 -2.0107e+06 0
+-1.2336e+07 -2.0373e+06 0
+-1.2183e+07 -2.1028e+06 0
+-1.2044e+07 -2.168e+06 0
+-1.19e+07 -2.1979e+06 0
+-1.1743e+07 -2.1768e+06 0
+-1.1584e+07 -2.1135e+06 0
+-1.1443e+07 -2.0347e+06 0
+-1.1338e+07 -1.9721e+06 0
+-1.1281e+07 -1.9496e+06 0
+-1.1271e+07 -1.9757e+06 0
+-1.1298e+07 -2.043e+06 0
+-1.1344e+07 -2.1326e+06 0
+-1.139e+07 -2.2218e+06 0
+-1.1424e+07 -2.2912e+06 0
+-1.144e+07 -2.329e+06 0
+2.4293e+06 -185630 0
+2.4611e+06 -192290 0
+2.4911e+06 -199150 0
+2.5192e+06 -205900 0
+2.5449e+06 -212260 0
+2.5682e+06 -217970 0
+2.5891e+06 -222900 0
+2.6076e+06 -227000 0
+2.6236e+06 -230380 0
+2.6374e+06 -233220 0
+2.6488e+06 -235790 0
+2.6578e+06 -238350 0
+2.6642e+06 -241070 0
+2.6676e+06 -244000 0
+2.668e+06 -247040 0
+2.6651e+06 -249930 0
+2.6587e+06 -252340 0
+2.649e+06 -253950 0
+2.636e+06 -254540 0
+2.6201e+06 -254020 0
+2.6013e+06 -252500 0
+2.5801e+06 -250210 0
+2.5567e+06 -247410 0
+2.5311e+06 -244360 0
+2.5037e+06 -241170 0
+2.4744e+06 -237820 0
+2.4436e+06 -234170 0
+2.4114e+06 -230030 0
+2.3782e+06 -225210 0
+2.3443e+06 -219650 0
+2.3101e+06 -213370 0
+2.276e+06 -206510 0
+2.2424e+06 -199280 0
+2.2097e+06 -191900 0
+2.178e+06 -184520 0
+2.1477e+06 -177230 0
+2.1189e+06 -170060 0
+2.0919e+06 -162970 0
+2.0669e+06 -155950 0
+2.0442e+06 -148970 0
+2.0238e+06 -142040 0
+2.0061e+06 -135210 0
+1.991e+06 -128560 0
+1.9787e+06 -122170 0
+1.9692e+06 -116120 0
+1.9623e+06 -110500 0
+1.9581e+06 -105370 0
+1.9563e+06 -100780 0
+1.9567e+06 -96767 0
+1.9592e+06 -93359 0
+1.9635e+06 -90567 0
+1.9691e+06 -88389 0
+1.9759e+06 -86816 0
+1.9834e+06 -85830 0
+1.9912e+06 -85409 0
+1.999e+06 -85526 0
+2.0062e+06 -86154 0
+2.0124e+06 -87259 0
+2.0173e+06 -88802 0
+2.0204e+06 -90736 0
+2.0212e+06 -93003 0
+2.0193e+06 -95536 0
+2.0145e+06 -98257 0
+2.0062e+06 -101080 0
+1.9944e+06 -103930 0
+1.9787e+06 -106710 0
+1.959e+06 -109350 0
+1.9352e+06 -111780 0
+1.9072e+06 -113930 0
+1.8751e+06 -115740 0
+1.8389e+06 -117170 0
+1.7989e+06 -118150 0
+1.7551e+06 -118660 0
+1.7079e+06 -118640 0
+1.6576e+06 -118050 0
+1.6044e+06 -116840 0
+1.5489e+06 -114960 0
+1.4914e+06 -112350 0
+1.4324e+06 -108900 0
+1.3725e+06 -104490 0
+1.3123e+06 -98934 0
+1.2524e+06 -91965 0
+1.1934e+06 -83169 0
+1.1363e+06 -71928 0
+1.0821e+06 -57304 0
+1.0318e+06 -37867 0
+987030 -11432 0
+949830 25341 0
+922840 77534 0
+909620 152840 0
+914820 262730 0
+944310 424050 0
+1.0049e+06 660790 0
+1.1036e+06 1.0057e+06 0
+1.2452e+06 1.5009e+06 0
+1.4284e+06 2.195e+06 0
+1.6404e+06 3.1345e+06 0
+1.8508e+06 4.3452e+06 0
+2.011e+06 5.8049e+06 0
+2.0642e+06 7.4143e+06 0
+1.9702e+06 8.9899e+06 0
+1.7323e+06 1.0305e+07 0
+1.4034e+06 1.1174e+07 0
+1.0591e+06 1.1533e+07 0
+760840 1.1446e+07 0
+536900 1.1054e+07 0
+386320 1.0502e+07 0
+293260 9.9025e+06 0
+239040 9.3232e+06 0
+208310 8.7967e+06 0
+190560 8.3325e+06 0
+179450 7.928e+06 0
+171450 7.5759e+06 0
+164780 7.2677e+06 0
+158590 6.9955e+06 0
+152550 6.7526e+06 0
+146540 6.534e+06 0
+140540 6.3354e+06 0
+134560 6.1537e+06 0
+128630 5.9865e+06 0
+122780 5.832e+06 0
+117000 5.6887e+06 0
+111320 5.5555e+06 0
+105730 5.4314e+06 0
+100240 5.3159e+06 0
+94850 5.2082e+06 0
+89550 5.108e+06 0
+84337 5.0148e+06 0
+79208 4.9283e+06 0
+74157 4.8481e+06 0
+69178 4.7741e+06 0
+64268 4.7059e+06 0
+59419 4.6434e+06 0
+54629 4.5863e+06 0
+49892 4.5346e+06 0
+45203 4.488e+06 0
+40557 4.4463e+06 0
+35952 4.4096e+06 0
+31381 4.3775e+06 0
+26843 4.3501e+06 0
+22332 4.3271e+06 0
+17844 4.3086e+06 0
+13377 4.2944e+06 0
+8927.2 4.2845e+06 0
+4490.3 4.2787e+06 0
+63.512 4.2771e+06 0
+-4356.4 4.2796e+06 0
+-8772.6 4.2861e+06 0
+-13188 4.2966e+06 0
+-17605 4.3111e+06 0
+-22026 4.3295e+06 0
+-26455 4.3518e+06 0
+-30893 4.378e+06 0
+-35343 4.408e+06 0
+-39806 4.442e+06 0
+-44284 4.4798e+06 0
+-48779 4.5214e+06 0
+-53292 4.5668e+06 0
+-57825 4.6161e+06 0
+-62377 4.6691e+06 0
+-66951 4.7259e+06 0
+-71545 4.7864e+06 0
+-76160 4.8506e+06 0
+-80797 4.9184e+06 0
+-85455 4.9899e+06 0
+-90133 5.0649e+06 0
+-94833 5.1434e+06 0
+-99553 5.2254e+06 0
+-104290 5.3107e+06 0
+-109060 5.3993e+06 0
+-113840 5.4912e+06 0
+-118650 5.5864e+06 0
+-123490 5.6847e+06 0
+-128360 5.7863e+06 0
+-133260 5.8911e+06 0
+-138210 5.9995e+06 0
+-143220 6.1115e+06 0
+-148300 6.2276e+06 0
+-153460 6.3485e+06 0
+-158730 6.4748e+06 0
+-164130 6.6079e+06 0
+-169700 6.7492e+06 0
+-175470 6.901e+06 0
+-181500 7.0663e+06 0
+-187840 7.2488e+06 0
+-194570 7.4539e+06 0
+-201760 7.6884e+06 0
+-209540 7.9615e+06 0
+-218050 8.2853e+06 0
+-227530 8.6756e+06 0
+-238360 9.1531e+06 0
+-251270 9.7449e+06 0
+-267700 1.0486e+07 0
+-290510 1.1421e+07 0
+-325440 1.2603e+07 0
+-383460 1.4096e+07 0
+-484620 1.5964e+07 0
+-662930 1.8261e+07 0
+-970590 2.0995e+07 0
+-1.4764e+06 2.4083e+07 0
+-2.25e+06 2.7295e+07 0
+-3.3232e+06 3.0207e+07 0
+-4.6348e+06 3.2237e+07 0
+-5.9954e+06 3.2799e+07 0
+-7.1259e+06 3.1561e+07 0
+-7.7785e+06 2.864e+07 0
+-7.8555e+06 2.4568e+07 0
+-7.4327e+06 2.0042e+07 0
+-6.6892e+06 1.5665e+07 0
+-5.8174e+06 1.1817e+07 0
+-4.9663e+06 8.653e+06 0
+-4.2257e+06 6.1757e+06 0
+-3.635e+06 4.3028e+06 0
+-3.2003e+06 2.922e+06 0
+-2.9096e+06 1.9216e+06 0
+-2.7433e+06 1.205e+06 0
+-2.6806e+06 694200 0
+-2.7027e+06 329640 0
+-2.7939e+06 66960 0
+-2.9418e+06 -126090 0
+-3.137e+06 -272630 0
+-3.3722e+06 -389050 0
+-3.642e+06 -486870 0
+-3.9424e+06 -574110 0
+-4.2703e+06 -656300 0
+-4.6231e+06 -737220 0
+-4.9989e+06 -819460 0
+-5.3958e+06 -904780 0
+-5.8123e+06 -994310 0
+-6.2466e+06 -1.0887e+06 0
+-6.6969e+06 -1.188e+06 0
+-7.1607e+06 -1.292e+06 0
+-7.6355e+06 -1.3998e+06 0
+-8.1181e+06 -1.5109e+06 0
+-8.6054e+06 -1.6245e+06 0
+-9.0939e+06 -1.7406e+06 0
+-9.5804e+06 -1.8598e+06 0
+-1.0062e+07 -1.983e+06 0
+-1.0536e+07 -2.1111e+06 0
+-1.1001e+07 -2.2447e+06 0
+-1.1453e+07 -2.3834e+06 0
+-1.1891e+07 -2.5259e+06 0
+-1.2312e+07 -2.6706e+06 0
+-1.2713e+07 -2.8152e+06 0
+-1.309e+07 -2.9569e+06 0
+-1.3438e+07 -3.0923e+06 0
+-1.3754e+07 -3.2174e+06 0
+-1.4036e+07 -3.3291e+06 0
+-1.4281e+07 -3.4265e+06 0
+-1.449e+07 -3.5127e+06 0
+-1.4664e+07 -3.5943e+06 0
+-1.4805e+07 -3.6784e+06 0
+-1.4912e+07 -3.7681e+06 0
+-1.4984e+07 -3.8587e+06 0
+-1.5019e+07 -3.9391e+06 0
+-1.5016e+07 -3.9966e+06 0
+-1.4975e+07 -4.0252e+06 0
+-1.4899e+07 -4.0302e+06 0
+-1.4788e+07 -4.0257e+06 0
+-1.4643e+07 -4.0256e+06 0
+-1.4464e+07 -4.0337e+06 0
+-1.4248e+07 -4.04e+06 0
+-1.3997e+07 -4.028e+06 0
+-1.3717e+07 -3.9876e+06 0
+-1.342e+07 -3.926e+06 0
+-1.3116e+07 -3.865e+06 0
+-1.2811e+07 -3.827e+06 0
+-1.2502e+07 -3.8169e+06 0
+-1.2182e+07 -3.8142e+06 0
+-1.1839e+07 -3.7833e+06 0
+-1.1474e+07 -3.697e+06 0
+-1.1093e+07 -3.5568e+06 0
+-1.0711e+07 -3.3963e+06 0
+-1.0344e+07 -3.2621e+06 0
+-9.9962e+06 -3.1852e+06 0
+-9.6638e+06 -3.16e+06 0
+-9.335e+06 -3.1482e+06 0
+-9.0008e+06 -3.1035e+06 0
+-8.6619e+06 -3.0016e+06 0
+-8.3303e+06 -2.8566e+06 0
+-8.0223e+06 -2.7114e+06 0
+-7.7495e+06 -2.6099e+06 0
+-7.5113e+06 -2.5695e+06 0
+-7.2955e+06 -2.5706e+06 0
+-7.0853e+06 -2.5701e+06 0
+-6.8691e+06 -2.5284e+06 0
+-6.6474e+06 -2.4334e+06 0
+-6.4324e+06 -2.3067e+06 0
+-6.2413e+06 -2.1905e+06 0
+-6.0872e+06 -2.1237e+06 0
+-5.9723e+06 -2.1209e+06 0
+-5.8878e+06 -2.1666e+06 0
+-5.8182e+06 -2.2247e+06 0
+-5.7494e+06 -2.257e+06 0
+-5.6743e+06 -2.2412e+06 0
+-5.5953e+06 -2.1789e+06 0
+-5.5218e+06 -2.0924e+06 0
+-5.4654e+06 -2.0133e+06 0
+-5.4347e+06 -1.9691e+06 0
+-5.4321e+06 -1.9737e+06 0
+-5.4535e+06 -2.0244e+06 0
+-5.4905e+06 -2.1048e+06 0
+-5.5337e+06 -2.1925e+06 0
+-5.5749e+06 -2.2658e+06 0
+-5.6097e+06 -2.3099e+06 0
+1.6798e+06 -205750 0
+1.702e+06 -211460 0
+1.7228e+06 -217130 0
+1.742e+06 -222490 0
+1.7595e+06 -227320 0
+1.7752e+06 -231450 0
+1.789e+06 -234770 0
+1.8009e+06 -237300 0
+1.811e+06 -239120 0
+1.8192e+06 -240430 0
+1.8257e+06 -241450 0
+1.8303e+06 -242390 0
+1.8329e+06 -243390 0
+1.8334e+06 -244480 0
+1.8317e+06 -245540 0
+1.8277e+06 -246380 0
+1.8213e+06 -246720 0
+1.8126e+06 -246300 0
+1.8017e+06 -244960 0
+1.7887e+06 -242680 0
+1.7739e+06 -239560 0
+1.7574e+06 -235820 0
+1.7394e+06 -231720 0
+1.72e+06 -227450 0
+1.6993e+06 -223150 0
+1.6774e+06 -218770 0
+1.6545e+06 -214230 0
+1.6307e+06 -209350 0
+1.6063e+06 -204020 0
+1.5816e+06 -198170 0
+1.5567e+06 -191860 0
+1.5321e+06 -185210 0
+1.5079e+06 -178400 0
+1.4844e+06 -171610 0
+1.4617e+06 -164970 0
+1.44e+06 -158540 0
+1.4193e+06 -152350 0
+1.3999e+06 -146370 0
+1.3818e+06 -140560 0
+1.3651e+06 -134900 0
+1.35e+06 -129390 0
+1.3366e+06 -124050 0
+1.3248e+06 -118940 0
+1.3147e+06 -114090 0
+1.3063e+06 -109570 0
+1.2995e+06 -105400 0
+1.2942e+06 -101640 0
+1.2903e+06 -98303 0
+1.2876e+06 -95403 0
+1.2859e+06 -92944 0
+1.285e+06 -90917 0
+1.2848e+06 -89305 0
+1.2848e+06 -88082 0
+1.285e+06 -87218 0
+1.285e+06 -86682 0
+1.2846e+06 -86442 0
+1.2834e+06 -86468 0
+1.2813e+06 -86728 0
+1.278e+06 -87186 0
+1.2731e+06 -87805 0
+1.2666e+06 -88538 0
+1.2581e+06 -89337 0
+1.2475e+06 -90149 0
+1.2346e+06 -90921 0
+1.2193e+06 -91602 0
+1.2015e+06 -92144 0
+1.1813e+06 -92508 0
+1.1585e+06 -92657 0
+1.1333e+06 -92564 0
+1.1058e+06 -92204 0
+1.076e+06 -91557 0
+1.0442e+06 -90606 0
+1.0105e+06 -89334 0
+975120 -87726 0
+938330 -85762 0
+900380 -83419 0
+861580 -80665 0
+822250 -77453 0
+782710 -73715 0
+743330 -69347 0
+704510 -64194 0
+666700 -58022 0
+630380 -50478 0
+596160 -41027 0
+564770 -28859 0
+537160 -12738 0
+514630 9232.6 0
+498940 39960 0
+492600 83912 0
+499140 147920 0
+523440 242350 0
+572100 382740 0
+653470 591860 0
+777100 901990 0
+951750 1.3567e+06 0
+1.181e+06 2.0102e+06 0
+1.4556e+06 2.9205e+06 0
+1.7442e+06 4.1322e+06 0
+1.9872e+06 5.6434e+06 0
+2.106e+06 7.3636e+06 0
+2.0362e+06 9.0889e+06 0
+1.7734e+06 1.0541e+07 0
+1.3889e+06 1.1482e+07 0
+988410 1.1835e+07 0
+652870 1.169e+07 0
+413090 1.1224e+07 0
+261390 1.0608e+07 0
+174130 9.963e+06 0
+127490 9.3557e+06 0
+103750 8.8136e+06 0
+91784 8.3413e+06 0
+85357 7.9331e+06 0
+81288 7.5795e+06 0
+78088 7.2707e+06 0
+75133 6.9983e+06 0
+72198 6.7554e+06 0
+69230 6.5368e+06 0
+66238 6.3382e+06 0
+63246 6.1566e+06 0
+60278 5.9894e+06 0
+57353 5.8348e+06 0
+54482 5.6914e+06 0
+51671 5.5581e+06 0
+48925 5.4341e+06 0
+46244 5.3185e+06 0
+43626 5.2108e+06 0
+41069 5.1105e+06 0
+38571 5.0172e+06 0
+36128 4.9306e+06 0
+33737 4.8504e+06 0
+31393 4.7763e+06 0
+29095 4.7081e+06 0
+26837 4.6456e+06 0
+24618 4.5885e+06 0
+22433 4.5367e+06 0
+20279 4.4901e+06 0
+18155 4.4484e+06 0
+16056 4.4116e+06 0
+13979 4.3795e+06 0
+11923 4.3521e+06 0
+9884.8 4.3291e+06 0
+7861.6 4.3106e+06 0
+5851.2 4.2964e+06 0
+3851.2 4.2865e+06 0
+1859.6 4.2807e+06 0
+-126.01 4.2791e+06 0
+-2107.5 4.2816e+06 0
+-4087 4.2881e+06 0
+-6066.4 4.2986e+06 0
+-8047.5 4.313e+06 0
+-10032 4.3314e+06 0
+-12022 4.3537e+06 0
+-14018 4.3799e+06 0
+-16023 4.41e+06 0
+-18038 4.444e+06 0
+-20063 4.4818e+06 0
+-22101 4.5234e+06 0
+-24152 4.5689e+06 0
+-26217 4.6181e+06 0
+-28297 4.6711e+06 0
+-30393 4.7279e+06 0
+-32506 4.7885e+06 0
+-34635 4.8527e+06 0
+-36781 4.9205e+06 0
+-38944 4.992e+06 0
+-41125 5.0671e+06 0
+-43324 5.1456e+06 0
+-45540 5.2276e+06 0
+-47773 5.3129e+06 0
+-50025 5.4015e+06 0
+-52295 5.4935e+06 0
+-54584 5.5886e+06 0
+-56893 5.6869e+06 0
+-59224 5.7885e+06 0
+-61580 5.8934e+06 0
+-63965 6.0018e+06 0
+-66384 6.1138e+06 0
+-68844 6.23e+06 0
+-71355 6.3509e+06 0
+-73929 6.4773e+06 0
+-76582 6.6105e+06 0
+-79336 6.7519e+06 0
+-82215 6.9038e+06 0
+-85251 7.0692e+06 0
+-88484 7.2519e+06 0
+-91959 7.4572e+06 0
+-95731 7.692e+06 0
+-99863 7.9655e+06 0
+-104430 8.2897e+06 0
+-109550 8.6805e+06 0
+-115410 9.1587e+06 0
+-122380 9.7517e+06 0
+-131360 1.0495e+07 0
+-144330 1.1434e+07 0
+-165780 1.2625e+07 0
+-205180 1.4135e+07 0
+-281550 1.604e+07 0
+-429980 1.8404e+07 0
+-709160 2.1256e+07 0
+-1.2041e+06 2.4531e+07 0
+-2.0114e+06 2.8001e+07 0
+-3.1919e+06 3.1199e+07 0
+-4.687e+06 3.3436e+07 0
+-6.252e+06 3.3985e+07 0
+-7.5018e+06 3.2438e+07 0
+-8.1036e+06 2.899e+07 0
+-7.9632e+06 2.4365e+07 0
+-7.2345e+06 1.9429e+07 0
+-6.1857e+06 1.4847e+07 0
+-5.0658e+06 1.097e+07 0
+-4.0406e+06 7.8919e+06 0
+-3.1918e+06 5.553e+06 0
+-2.54e+06 3.8298e+06 0
+-2.0723e+06 2.5873e+06 0
+-1.7611e+06 1.7044e+06 0
+-1.576e+06 1.0829e+06 0
+-1.4896e+06 647260 0
+-1.4795e+06 341450 0
+-1.5284e+06 124930 0
+-1.6237e+06 -31286 0
+-1.7564e+06 -147680 0
+-1.9201e+06 -238650 0
+-2.1107e+06 -314260 0
+-2.3254e+06 -381510 0
+-2.5623e+06 -445250 0
+-2.8202e+06 -508800 0
+-3.0983e+06 -574460 0
+-3.3962e+06 -643810 0
+-3.7132e+06 -717940 0
+-4.0489e+06 -797570 0
+-4.4026e+06 -883030 0
+-4.7732e+06 -974290 0
+-5.1591e+06 -1.071e+06 0
+-5.5584e+06 -1.1727e+06 0
+-5.9688e+06 -1.2791e+06 0
+-6.3879e+06 -1.39e+06 0
+-6.8135e+06 -1.506e+06 0
+-7.2434e+06 -1.6279e+06 0
+-7.6755e+06 -1.7564e+06 0
+-8.1082e+06 -1.8919e+06 0
+-8.5395e+06 -2.034e+06 0
+-8.9675e+06 -2.1817e+06 0
+-9.3898e+06 -2.3336e+06 0
+-9.8034e+06 -2.488e+06 0
+-1.0205e+07 -2.6427e+06 0
+-1.0589e+07 -2.7946e+06 0
+-1.0952e+07 -2.9398e+06 0
+-1.1289e+07 -3.0744e+06 0
+-1.1599e+07 -3.1961e+06 0
+-1.188e+07 -3.3068e+06 0
+-1.2132e+07 -3.4122e+06 0
+-1.2357e+07 -3.5192e+06 0
+-1.2555e+07 -3.6321e+06 0
+-1.2724e+07 -3.7476e+06 0
+-1.2861e+07 -3.8552e+06 0
+-1.2963e+07 -3.942e+06 0
+-1.3027e+07 -4.0007e+06 0
+-1.3054e+07 -4.0354e+06 0
+-1.3044e+07 -4.06e+06 0
+-1.2996e+07 -4.0893e+06 0
+-1.291e+07 -4.128e+06 0
+-1.2785e+07 -4.1655e+06 0
+-1.2622e+07 -4.1824e+06 0
+-1.2427e+07 -4.1649e+06 0
+-1.2212e+07 -4.1169e+06 0
+-1.1987e+07 -4.0611e+06 0
+-1.1759e+07 -4.0249e+06 0
+-1.1525e+07 -4.0202e+06 0
+-1.1276e+07 -4.0316e+06 0
+-1.1e+07 -4.0231e+06 0
+-1.0691e+07 -3.9607e+06 0
+-1.0357e+07 -3.8371e+06 0
+-1.0011e+07 -3.6798e+06 0
+-9.6717e+06 -3.5364e+06 0
+-9.3484e+06 -3.445e+06 0
+-9.0396e+06 -3.4098e+06 0
+-8.7345e+06 -3.3976e+06 0
+-8.4226e+06 -3.3595e+06 0
+-8.1019e+06 -3.2628e+06 0
+-7.7826e+06 -3.1126e+06 0
+-7.4818e+06 -2.9481e+06 0
+-7.2138e+06 -2.818e+06 0
+-6.9815e+06 -2.7502e+06 0
+-6.7743e+06 -2.7351e+06 0
+-6.5741e+06 -2.7329e+06 0
+-6.3662e+06 -2.6989e+06 0
+-6.1479e+06 -2.6102e+06 0
+-5.9303e+06 -2.4784e+06 0
+-5.7331e+06 -2.3414e+06 0
+-5.574e+06 -2.2417e+06 0
+-5.4607e+06 -2.2038e+06 0
+-5.3872e+06 -2.2221e+06 0
+-5.3376e+06 -2.2664e+06 0
+-5.2939e+06 -2.298e+06 0
+-5.2438e+06 -2.2886e+06 0
+-5.1852e+06 -2.2312e+06 0
+-5.1259e+06 -2.1417e+06 0
+-5.0791e+06 -2.049e+06 0
+-5.0574e+06 -1.9826e+06 0
+-5.0686e+06 -1.9616e+06 0
+-5.1128e+06 -1.9886e+06 0
+-5.1837e+06 -2.0519e+06 0
+-5.2714e+06 -2.1306e+06 0
+-5.3655e+06 -2.2024e+06 0
+-5.4577e+06 -2.25e+06 0
+1.231e+06 -220300 0
+1.2471e+06 -225200 0
+1.262e+06 -229880 0
+1.2757e+06 -234130 0
+1.2879e+06 -237750 0
+1.2987e+06 -240610 0
+1.3079e+06 -242650 0
+1.3156e+06 -243890 0
+1.3218e+06 -244460 0
+1.3265e+06 -244530 0
+1.3297e+06 -244300 0
+1.3315e+06 -243970 0
+1.3316e+06 -243640 0
+1.3302e+06 -243340 0
+1.3271e+06 -242960 0
+1.3223e+06 -242320 0
+1.3158e+06 -241180 0
+1.3076e+06 -239330 0
+1.2979e+06 -236640 0
+1.2867e+06 -233130 0
+1.2742e+06 -228900 0
+1.2606e+06 -224170 0
+1.2459e+06 -219170 0
+1.2303e+06 -214090 0
+1.2138e+06 -209030 0
+1.1965e+06 -203980 0
+1.1786e+06 -198850 0
+1.1601e+06 -193530 0
+1.1412e+06 -187900 0
+1.1222e+06 -181940 0
+1.1033e+06 -175690 0
+1.0846e+06 -169270 0
+1.0663e+06 -162840 0
+1.0486e+06 -156540 0
+1.0315e+06 -150470 0
+1.0152e+06 -144680 0
+999630 -139190 0
+984930 -133960 0
+971120 -128960 0
+958280 -124170 0
+946460 -119580 0
+935690 -115200 0
+926000 -111060 0
+917370 -107170 0
+909760 -103570 0
+903100 -100260 0
+897300 -97278 0
+892250 -94616 0
+887800 -92278 0
+883820 -90253 0
+880150 -88525 0
+876620 -87067 0
+873070 -85848 0
+869320 -84836 0
+865200 -83997 0
+860550 -83302 0
+855200 -82722 0
+848980 -82231 0
+841750 -81800 0
+833370 -81401 0
+823720 -81002 0
+812700 -80572 0
+800220 -80078 0
+786230 -79490 0
+770700 -78781 0
+753650 -77930 0
+735090 -76922 0
+715090 -75743 0
+693730 -74389 0
+671120 -72853 0
+647370 -71136 0
+622620 -69235 0
+597050 -67150 0
+570800 -64877 0
+544080 -62410 0
+517060 -59737 0
+489970 -56837 0
+463000 -53673 0
+436410 -50191 0
+410420 -46301 0
+385320 -41872 0
+361400 -36702 0
+339040 -30489 0
+318680 -22778 0
+300920 -12883 0
+286550 243.22 0
+276710 18205 0
+273040 43470 0
+277890 79854 0
+294760 133250 0
+328650 212730 0
+386600 332180 0
+478090 512510 0
+614880 784560 0
+809550 1.1921e+06 0
+1.0713e+06 1.7937e+06 0
+1.3971e+06 2.6596e+06 0
+1.7584e+06 3.8568e+06 0
+2.0874e+06 5.4141e+06 0
+2.2798e+06 7.2625e+06 0
+2.2358e+06 9.18e+06 0
+1.9354e+06 1.0815e+07 0
+1.4751e+06 1.1851e+07 0
+1.0027e+06 1.2188e+07 0
+622520 1.1963e+07 0
+364330 1.1404e+07 0
+209800 1.0714e+07 0
+125870 1.002e+07 0
+83610 9.3843e+06 0
+63449 8.8272e+06 0
+54016 8.3478e+06 0
+49361 7.9365e+06 0
+46620 7.5816e+06 0
+44535 7.2724e+06 0
+42619 6.9999e+06 0
+40715 6.7571e+06 0
+38796 6.5385e+06 0
+36875 6.3399e+06 0
+34974 6.1582e+06 0
+33110 5.991e+06 0
+31296 5.8364e+06 0
+29538 5.693e+06 0
+27839 5.5597e+06 0
+26199 5.4355e+06 0
+24619 5.3199e+06 0
+23094 5.2121e+06 0
+21622 5.1118e+06 0
+20200 5.0185e+06 0
+18826 4.9319e+06 0
+17495 4.8517e+06 0
+16204 4.7775e+06 0
+14950 4.7093e+06 0
+13730 4.6467e+06 0
+12542 4.5896e+06 0
+11382 4.5378e+06 0
+10248 4.4911e+06 0
+9136.6 4.4495e+06 0
+8046.3 4.4126e+06 0
+6974.3 4.3806e+06 0
+5918.6 4.3531e+06 0
+4876.9 4.3301e+06 0
+3847.3 4.3116e+06 0
+2827.8 4.2974e+06 0
+1816.4 4.2874e+06 0
+811.44 4.2817e+06 0
+-188.91 4.2801e+06 0
+-1186.3 4.2825e+06 0
+-2182.4 4.289e+06 0
+-3178.7 4.2995e+06 0
+-4176.8 4.314e+06 0
+-5178.2 4.3324e+06 0
+-6184.2 4.3547e+06 0
+-7196.2 4.3809e+06 0
+-8215.6 4.411e+06 0
+-9243.6 4.445e+06 0
+-10281 4.4828e+06 0
+-11330 4.5244e+06 0
+-12391 4.5699e+06 0
+-13464 4.6191e+06 0
+-14552 4.6722e+06 0
+-15655 4.729e+06 0
+-16773 4.7895e+06 0
+-17907 4.8537e+06 0
+-19058 4.9216e+06 0
+-20226 4.9931e+06 0
+-21413 5.0682e+06 0
+-22617 5.1467e+06 0
+-23840 5.2287e+06 0
+-25081 5.314e+06 0
+-26342 5.4027e+06 0
+-27622 5.4946e+06 0
+-28923 5.5898e+06 0
+-30244 5.6882e+06 0
+-31587 5.7897e+06 0
+-32955 5.8947e+06 0
+-34349 6.003e+06 0
+-35773 6.1151e+06 0
+-37233 6.2313e+06 0
+-38735 6.3523e+06 0
+-40289 6.4787e+06 0
+-41908 6.6119e+06 0
+-43608 6.7534e+06 0
+-45411 6.9055e+06 0
+-47342 7.0709e+06 0
+-49435 7.2538e+06 0
+-51730 7.4593e+06 0
+-54270 7.6943e+06 0
+-57108 7.968e+06 0
+-60301 8.2925e+06 0
+-63921 8.6837e+06 0
+-68080 9.1624e+06 0
+-73022 9.7562e+06 0
+-79345 1.0501e+07 0
+-88565 1.1442e+07 0
+-104340 1.264e+07 0
+-135050 1.4166e+07 0
+-198610 1.6102e+07 0
+-330610 1.8532e+07 0
+-595050 2.1505e+07 0
+-1.0929e+06 2.4986e+07 0
+-1.9532e+06 2.876e+07 0
+-3.2781e+06 3.2319e+07 0
+-5.0257e+06 3.4839e+07 0
+-6.8854e+06 3.5383e+07 0
+-8.3216e+06 3.3416e+07 0
+-8.8836e+06 2.9262e+07 0
+-8.5012e+06 2.3948e+07 0
+-7.4487e+06 1.8559e+07 0
+-6.104e+06 1.3803e+07 0
+-4.7662e+06 9.961e+06 0
+-3.6041e+06 7.0288e+06 0
+-2.6797e+06 4.8735e+06 0
+-1.9908e+06 3.3281e+06 0
+-1.5055e+06 2.2378e+06 0
+-1.1833e+06 1.4769e+06 0
+-986400 949090 0
+-883090 583910 0
+-849020 330740 0
+-866310 153760 0
+-922350 27864 0
+-1.0085e+06 -64497 0
+-1.1192e+06 -135570 0
+-1.2508e+06 -193910 0
+-1.4012e+06 -245450 0
+-1.5693e+06 -294360 0
+-1.7545e+06 -343500 0
+-1.9569e+06 -394880 0
+-2.1764e+06 -449920 0
+-2.4134e+06 -509670 0
+-2.6681e+06 -574890 0
+-2.9405e+06 -646100 0
+-3.2304e+06 -723530 0
+-3.5371e+06 -807190 0
+-3.8597e+06 -896890 0
+-4.1968e+06 -992490 0
+-4.5469e+06 -1.0941e+06 0
+-4.9085e+06 -1.2021e+06 0
+-5.2802e+06 -1.3172e+06 0
+-5.6608e+06 -1.4401e+06 0
+-6.0489e+06 -1.5711e+06 0
+-6.4434e+06 -1.7097e+06 0
+-6.8428e+06 -1.8554e+06 0
+-7.2452e+06 -2.0069e+06 0
+-7.6481e+06 -2.1633e+06 0
+-8.0481e+06 -2.3229e+06 0
+-8.4411e+06 -2.4833e+06 0
+-8.8223e+06 -2.6407e+06 0
+-9.1872e+06 -2.7909e+06 0
+-9.5323e+06 -2.9306e+06 0
+-9.8561e+06 -3.06e+06 0
+-1.0158e+07 -3.1837e+06 0
+-1.044e+07 -3.3085e+06 0
+-1.0701e+07 -3.4394e+06 0
+-1.0939e+07 -3.5747e+06 0
+-1.1152e+07 -3.7055e+06 0
+-1.1332e+07 -3.819e+06 0
+-1.1478e+07 -3.9071e+06 0
+-1.1585e+07 -3.9724e+06 0
+-1.1654e+07 -4.0276e+06 0
+-1.1684e+07 -4.0874e+06 0
+-1.1677e+07 -4.1569e+06 0
+-1.1631e+07 -4.2254e+06 0
+-1.1548e+07 -4.2716e+06 0
+-1.1434e+07 -4.278e+06 0
+-1.1296e+07 -4.2458e+06 0
+-1.1145e+07 -4.1979e+06 0
+-1.0988e+07 -4.166e+06 0
+-1.0821e+07 -4.169e+06 0
+-1.0636e+07 -4.1971e+06 0
+-1.042e+07 -4.2148e+06 0
+-1.0166e+07 -4.1823e+06 0
+-9.8774e+06 -4.0826e+06 0
+-9.5692e+06 -3.9357e+06 0
+-9.2599e+06 -3.7883e+06 0
+-8.9626e+06 -3.685e+06 0
+-8.6789e+06 -3.6399e+06 0
+-8.3997e+06 -3.6267e+06 0
+-8.1132e+06 -3.5962e+06 0
+-7.8151e+06 -3.5079e+06 0
+-7.5129e+06 -3.357e+06 0
+-7.2237e+06 -3.1773e+06 0
+-6.9637e+06 -3.0206e+06 0
+-6.7392e+06 -2.9247e+06 0
+-6.5421e+06 -2.8911e+06 0
+-6.3545e+06 -2.8856e+06 0
+-6.1597e+06 -2.8602e+06 0
+-5.9516e+06 -2.7811e+06 0
+-5.7397e+06 -2.6481e+06 0
+-5.5448e+06 -2.4923e+06 0
+-5.3887e+06 -2.3582e+06 0
+-5.2837e+06 -2.2794e+06 0
+-5.2276e+06 -2.2625e+06 0
+-5.2045e+06 -2.2861e+06 0
+-5.1929e+06 -2.3137e+06 0
+-5.1752e+06 -2.3117e+06 0
+-5.1441e+06 -2.264e+06 0
+-5.1051e+06 -2.1771e+06 0
+-5.0729e+06 -2.0745e+06 0
+-5.065e+06 -1.9854e+06 0
+-5.0954e+06 -1.933e+06 0
+-5.1702e+06 -1.9268e+06 0
+-5.2864e+06 -1.9615e+06 0
+-5.4339e+06 -2.0207e+06 0
+-5.5988e+06 -2.0835e+06 0
+-5.7677e+06 -2.1314e+06 0
+960850 -231230 0
+972940 -235410 0
+984040 -239240 0
+994000 -242530 0
+1.0027e+06 -245110 0
+1.0102e+06 -246890 0
+1.0162e+06 -247820 0
+1.021e+06 -247970 0
+1.0244e+06 -247450 0
+1.0266e+06 -246450 0
+1.0274e+06 -245160 0
+1.027e+06 -243770 0
+1.0253e+06 -242370 0
+1.0223e+06 -240980 0
+1.018e+06 -239490 0
+1.0124e+06 -237730 0
+1.0056e+06 -235490 0
+997450 -232590 0
+988190 -228940 0
+977880 -224540 0
+966640 -219520 0
+954580 -214090 0
+941790 -208470 0
+928350 -202830 0
+914330 -197270 0
+899800 -191780 0
+884850 -186290 0
+869600 -180700 0
+854170 -174930 0
+838730 -168970 0
+823420 -162850 0
+808410 -156680 0
+793800 -150600 0
+779690 -144720 0
+766130 -139120 0
+753160 -133840 0
+740780 -128860 0
+729020 -124170 0
+717900 -119730 0
+707430 -115530 0
+697640 -111540 0
+688540 -107780 0
+680120 -104250 0
+672360 -100960 0
+665230 -97913 0
+658650 -95109 0
+652540 -92549 0
+646800 -90229 0
+641340 -88139 0
+636020 -86266 0
+630740 -84587 0
+625380 -83075 0
+619830 -81701 0
+613960 -80432 0
+607670 -79239 0
+600860 -78096 0
+593440 -76981 0
+585310 -75873 0
+576390 -74752 0
+566620 -73600 0
+555950 -72397 0
+544340 -71125 0
+531780 -69768 0
+518250 -68312 0
+503790 -66750 0
+488430 -65075 0
+472230 -63288 0
+455260 -61390 0
+437600 -59388 0
+419370 -57288 0
+400650 -55096 0
+381560 -52819 0
+362230 -50462 0
+342780 -48029 0
+323340 -45516 0
+304050 -42918 0
+285030 -40217 0
+266440 -37382 0
+248430 -34366 0
+231160 -31094 0
+214820 -27451 0
+199630 -23266 0
+185870 -18288 0
+173880 -12137 0
+164150 -4243.5 0
+157400 6255.1 0
+154610 20679 0
+157290 41064 0
+167660 70569 0
+189080 114110 0
+226500 179390 0
+287130 278350 0
+381180 429560 0
+522240 661350 0
+726660 1.0161e+06 0
+1.0103e+06 1.5544e+06 0
+1.3796e+06 2.3573e+06 0
+1.8145e+06 3.5171e+06 0
+2.2443e+06 5.1048e+06 0
+2.5347e+06 7.0944e+06 0
+2.5305e+06 9.2585e+06 0
+2.178e+06 1.1144e+07 0
+1.6117e+06 1.23e+07 0
+1.0465e+06 1.2604e+07 0
+615170 1.2267e+07 0
+339440 1.1594e+07 0
+183910 1.082e+07 0
+103920 1.0074e+07 0
+65505 9.4099e+06 0
+47838 8.839e+06 0
+39752 8.3533e+06 0
+35769 7.9393e+06 0
+33372 7.5834e+06 0
+31519 7.2739e+06 0
+29832 7.0013e+06 0
+28191 6.7585e+06 0
+26580 6.5398e+06 0
+25008 6.3412e+06 0
+23487 6.1595e+06 0
+22027 5.9922e+06 0
+20632 5.8376e+06 0
+19305 5.6941e+06 0
+18044 5.5607e+06 0
+16847 5.4365e+06 0
+15709 5.3208e+06 0
+14628 5.2131e+06 0
+13599 5.1127e+06 0
+12618 5.0194e+06 0
+11683 4.9327e+06 0
+10789 4.8524e+06 0
+9932 4.7783e+06 0
+9110.1 4.71e+06 0
+8319.8 4.6474e+06 0
+7558.2 4.5903e+06 0
+6822.6 4.5385e+06 0
+6110.4 4.4918e+06 0
+5419.3 4.4501e+06 0
+4747 4.4132e+06 0
+4091.2 4.3811e+06 0
+3449.9 4.3537e+06 0
+2821.2 4.3307e+06 0
+2203.3 4.3121e+06 0
+1594.2 4.2979e+06 0
+992.42 4.288e+06 0
+396.2 4.2822e+06 0
+-196.01 4.2806e+06 0
+-785.73 4.2831e+06 0
+-1374.4 4.2896e+06 0
+-1963.5 4.3001e+06 0
+-2554.4 4.3145e+06 0
+-3148.4 4.3329e+06 0
+-3746.8 4.3552e+06 0
+-4350.9 4.3815e+06 0
+-4962 4.4116e+06 0
+-5581.2 4.4455e+06 0
+-6209.7 4.4833e+06 0
+-6848.7 4.525e+06 0
+-7499.2 4.5705e+06 0
+-8162.3 4.6197e+06 0
+-8839 4.6728e+06 0
+-9530.3 4.7296e+06 0
+-10237 4.7901e+06 0
+-10960 4.8544e+06 0
+-11700 4.9223e+06 0
+-12459 4.9938e+06 0
+-13235 5.0689e+06 0
+-14031 5.1474e+06 0
+-14847 5.2294e+06 0
+-15683 5.3148e+06 0
+-16540 5.4035e+06 0
+-17418 5.4954e+06 0
+-18319 5.5906e+06 0
+-19243 5.689e+06 0
+-20192 5.7906e+06 0
+-21167 5.8955e+06 0
+-22172 6.0039e+06 0
+-23208 6.116e+06 0
+-24282 6.2323e+06 0
+-25400 6.3532e+06 0
+-26570 6.4797e+06 0
+-27804 6.613e+06 0
+-29118 6.7546e+06 0
+-30532 6.9067e+06 0
+-32072 7.0722e+06 0
+-33769 7.2552e+06 0
+-35664 7.4609e+06 0
+-37801 7.6961e+06 0
+-40233 7.9701e+06 0
+-43019 8.2949e+06 0
+-46226 8.6864e+06 0
+-49948 9.1656e+06 0
+-54371 9.76e+06 0
+-59947 1.0506e+07 0
+-67867 1.145e+07 0
+-81152 1.2653e+07 0
+-107040 1.4191e+07 0
+-162040 1.6157e+07 0
+-281060 1.8648e+07 0
+-531660 2.1744e+07 0
+-1.0304e+06 2.5449e+07 0
+-1.9448e+06 2.9578e+07 0
+-3.4401e+06 3.3599e+07 0
+-5.5183e+06 3.6519e+07 0
+-7.7916e+06 3.7083e+07 0
+-9.4884e+06 3.4535e+07 0
+-9.9761e+06 2.9422e+07 0
+-9.2612e+06 2.3255e+07 0
+-7.8182e+06 1.7395e+07 0
+-6.1615e+06 1.2534e+07 0
+-4.6266e+06 8.8107e+06 0
+-3.3622e+06 6.0921e+06 0
+-2.3957e+06 4.1627e+06 0
+-1.6958e+06 2.8166e+06 0
+-1.2113e+06 1.8867e+06 0
+-891200 1.2481e+06 0
+-692120 810570 0
+-580400 510820 0
+-531150 304780 0
+-526720 161980 0
+-554980 61390 0
+-607860 -11547 0
+-680210 -66927 0
+-768930 -111790 0
+-872310 -151080 0
+-989590 -188250 0
+-1.1206e+06 -225730 0
+-1.2656e+06 -265250 0
+-1.4251e+06 -308050 0
+-1.5997e+06 -355120 0
+-1.79e+06 -407240 0
+-1.9966e+06 -465030 0
+-2.2198e+06 -528950 0
+-2.4596e+06 -599240 0
+-2.7158e+06 -676010 0
+-2.9878e+06 -759320 0
+-3.2749e+06 -849360 0
+-3.5762e+06 -946580 0
+-3.8912e+06 -1.0516e+06 0
+-4.219e+06 -1.1651e+06 0
+-4.5591e+06 -1.2872e+06 0
+-4.9107e+06 -1.4178e+06 0
+-5.2729e+06 -1.5562e+06 0
+-5.6445e+06 -1.7018e+06 0
+-6.0235e+06 -1.8539e+06 0
+-6.4073e+06 -2.0118e+06 0
+-6.7922e+06 -2.1737e+06 0
+-7.1738e+06 -2.3364e+06 0
+-7.5475e+06 -2.4953e+06 0
+-7.9094e+06 -2.6466e+06 0
+-8.2573e+06 -2.789e+06 0
+-8.5905e+06 -2.9257e+06 0
+-8.9096e+06 -3.0631e+06 0
+-9.2146e+06 -3.2067e+06 0
+-9.5032e+06 -3.3569e+06 0
+-9.7711e+06 -3.5065e+06 0
+-1.0012e+07 -3.6437e+06 0
+-1.022e+07 -3.7596e+06 0
+-1.0392e+07 -3.8548e+06 0
+-1.0526e+07 -3.9399e+06 0
+-1.0625e+07 -4.0287e+06 0
+-1.069e+07 -4.1268e+06 0
+-1.072e+07 -4.2237e+06 0
+-1.0715e+07 -4.2974e+06 0
+-1.068e+07 -4.3281e+06 0
+-1.0619e+07 -4.3142e+06 0
+-1.054e+07 -4.2778e+06 0
+-1.0449e+07 -4.2538e+06 0
+-1.0345e+07 -4.2671e+06 0
+-1.0221e+07 -4.3138e+06 0
+-1.0064e+07 -4.3598e+06 0
+-9.8663e+06 -4.3605e+06 0
+-9.6284e+06 -4.2901e+06 0
+-9.3634e+06 -4.1599e+06 0
+-9.0901e+06 -4.014e+06 0
+-8.824e+06 -3.9019e+06 0
+-8.5697e+06 -3.8474e+06 0
+-8.3206e+06 -3.8326e+06 0
+-8.0646e+06 -3.8097e+06 0
+-7.795e+06 -3.7323e+06 0
+-7.5161e+06 -3.5853e+06 0
+-7.2431e+06 -3.3958e+06 0
+-6.9934e+06 -3.2161e+06 0
+-6.7766e+06 -3.0929e+06 0
+-6.5884e+06 -3.039e+06 0
+-6.4131e+06 -3.0277e+06 0
+-6.2334e+06 -3.0094e+06 0
+-6.0407e+06 -2.9411e+06 0
+-5.8416e+06 -2.8097e+06 0
+-5.6557e+06 -2.6378e+06 0
+-5.5068e+06 -2.4694e+06 0
+-5.4109e+06 -2.3465e+06 0
+-5.3695e+06 -2.2885e+06 0
+-5.3684e+06 -2.2852e+06 0
+-5.3849e+06 -2.3048e+06 0
+-5.3971e+06 -2.31e+06 0
+-5.3934e+06 -2.2756e+06 0
+-5.3759e+06 -2.1966e+06 0
+-5.3597e+06 -2.0882e+06 0
+-5.3656e+06 -1.9767e+06 0
+-5.4136e+06 -1.8882e+06 0
+-5.5156e+06 -1.8394e+06 0
+-5.6729e+06 -1.8335e+06 0
+-5.8764e+06 -1.8613e+06 0
+-6.11e+06 -1.9059e+06 0
+-6.3555e+06 -1.9495e+06 0
+801800 -239720 0
+811120 -243200 0
+819490 -246230 0
+826780 -248630 0
+832910 -250270 0
+837840 -251050 0
+841510 -250970 0
+843940 -250100 0
+845140 -248590 0
+845140 -246620 0
+843980 -244400 0
+841700 -242080 0
+838310 -239780 0
+833840 -237480 0
+828310 -235100 0
+821730 -232460 0
+814150 -229370 0
+805600 -225670 0
+796180 -221280 0
+785970 -216230 0
+775080 -210640 0
+763590 -204720 0
+751620 -198670 0
+739210 -192660 0
+726450 -186780 0
+713390 -181030 0
+700100 -175340 0
+686680 -169630 0
+673240 -163840 0
+659880 -157950 0
+646740 -152020 0
+633930 -146130 0
+621520 -140390 0
+609580 -134890 0
+598130 -129700 0
+587180 -124830 0
+576720 -120260 0
+566740 -115980 0
+557220 -111940 0
+548170 -108140 0
+539580 -104570 0
+531450 -101210 0
+523750 -98072 0
+516470 -95147 0
+509550 -92426 0
+502940 -89900 0
+496570 -87556 0
+490370 -85383 0
+484230 -83367 0
+478080 -81491 0
+471840 -79736 0
+465410 -78077 0
+458720 -76486 0
+451700 -74937 0
+444280 -73406 0
+436410 -71872 0
+428040 -70320 0
+419120 -68736 0
+409630 -67107 0
+399540 -65423 0
+388850 -63676 0
+377550 -61857 0
+365660 -59963 0
+353200 -57991 0
+340230 -55946 0
+326790 -53831 0
+312940 -51655 0
+298760 -49429 0
+284330 -47162 0
+269720 -44866 0
+255010 -42551 0
+240300 -40225 0
+225670 -37896 0
+211200 -35567 0
+196980 -33237 0
+183110 -30900 0
+169660 -28540 0
+156740 -26132 0
+144440 -23632 0
+132860 -20976 0
+122140 -18067 0
+112440 -14765 0
+103970 -10861 0
+97016 -6047.5 0
+91989 133.54 0
+89491 8373.9 0
+90414 19728 0
+96105 35822 0
+108610 59185 0
+131040 93786 0
+168130 145890 0
+226970 225410 0
+318010 348080 0
+456100 538780 0
+660950 836470 0
+955620 1.3009e+06 0
+1.3593e+06 2.0195e+06 0
+1.8683e+06 3.1092e+06 0
+2.4203e+06 4.6949e+06 0
+2.8515e+06 6.8272e+06 0
+2.9193e+06 9.3098e+06 0
+2.4945e+06 1.1552e+07 0
+1.7756e+06 1.2864e+07 0
+1.0909e+06 1.3099e+07 0
+604880 1.2604e+07 0
+316400 1.179e+07 0
+164230 1.0922e+07 0
+90263 1.0123e+07 0
+56197 9.4326e+06 0
+40832 8.8493e+06 0
+33731 8.3581e+06 0
+30084 7.9418e+06 0
+27735 7.5851e+06 0
+25856 7.2753e+06 0
+24167 7.0026e+06 0
+22567 6.7597e+06 0
+21043 6.5411e+06 0
+19595 6.3424e+06 0
+18227 6.1606e+06 0
+16941 5.9933e+06 0
+15735 5.8386e+06 0
+14605 5.695e+06 0
+13548 5.5616e+06 0
+12557 5.4374e+06 0
+11628 5.3216e+06 0
+10755 5.2138e+06 0
+9934.9 5.1134e+06 0
+9162.2 5.02e+06 0
+8432.9 4.9333e+06 0
+7743.1 4.853e+06 0
+7089.4 4.7788e+06 0
+6468.5 4.7105e+06 0
+5877.4 4.6479e+06 0
+5313.2 4.5908e+06 0
+4773.1 4.5389e+06 0
+4254.9 4.4922e+06 0
+3756.1 4.4505e+06 0
+3274.6 4.4137e+06 0
+2808.3 4.3815e+06 0
+2355.4 4.354e+06 0
+1913.9 4.3311e+06 0
+1482.2 4.3125e+06 0
+1058.7 4.2983e+06 0
+641.75 4.2883e+06 0
+229.83 4.2826e+06 0
+-178.46 4.2809e+06 0
+-584.51 4.2834e+06 0
+-989.68 4.2899e+06 0
+-1395.3 4.3004e+06 0
+-1802.6 4.3149e+06 0
+-2212.8 4.3333e+06 0
+-2627.1 4.3556e+06 0
+-3046.8 4.3818e+06 0
+-3473 4.4119e+06 0
+-3906.8 4.4459e+06 0
+-4349.3 4.4837e+06 0
+-4801.6 4.5254e+06 0
+-5264.9 4.5709e+06 0
+-5740.2 4.6201e+06 0
+-6228.5 4.6732e+06 0
+-6730.8 4.73e+06 0
+-7248.1 4.7906e+06 0
+-7781.3 4.8549e+06 0
+-8331.4 4.9228e+06 0
+-8899.2 4.9943e+06 0
+-9485.5 5.0694e+06 0
+-10091 5.1479e+06 0
+-10717 5.2299e+06 0
+-11364 5.3153e+06 0
+-12032 5.404e+06 0
+-12724 5.496e+06 0
+-13438 5.5912e+06 0
+-14178 5.6896e+06 0
+-14945 5.7912e+06 0
+-15740 5.8962e+06 0
+-16566 6.0046e+06 0
+-17427 6.1168e+06 0
+-18327 6.233e+06 0
+-19273 6.354e+06 0
+-20274 6.4806e+06 0
+-21341 6.6139e+06 0
+-22490 6.7555e+06 0
+-23741 6.9077e+06 0
+-25118 7.0734e+06 0
+-26654 7.2565e+06 0
+-28390 7.4623e+06 0
+-30373 7.6978e+06 0
+-32659 7.972e+06 0
+-35314 8.2971e+06 0
+-38411 8.689e+06 0
+-42047 9.1686e+06 0
+-46388 9.7636e+06 0
+-51791 1.051e+07 0
+-59201 1.1456e+07 0
+-71080 1.2664e+07 0
+-93444 1.4213e+07 0
+-140850 1.6204e+07 0
+-246160 1.8752e+07 0
+-477700 2.1969e+07 0
+-964880 2.591e+07 0
+-1.9191e+06 3.045e+07 0
+-3.5971e+06 3.5061e+07 0
+-6.0993e+06 3.8564e+07 0
+-8.9633e+06 3.9218e+07 0
+-1.102e+07 3.5837e+07 0
+-1.1334e+07 2.9375e+07 0
+-1.0118e+07 2.217e+07 0
+-8.1843e+06 1.5879e+07 0
+-6.1984e+06 1.1036e+07 0
+-4.4949e+06 7.5451e+06 0
+-3.1685e+06 5.1129e+06 0
+-2.1956e+06 3.4469e+06 0
+-1.511e+06 2.3146e+06 0
+-1.0455e+06 1.5472e+06 0
+-739670 1.0272e+06 0
+-547510 674370 0
+-434990 434200 0
+-378000 269930 0
+-359840 156590 0
+-369260 77194 0
+-398900 20069 0
+-444110 -22850 0
+-502150 -57202 0
+-571590 -86962 0
+-651850 -114950 0
+-742940 -143170 0
+-845240 -173070 0
+-959390 -205750 0
+-1.0862e+06 -242060 0
+-1.2264e+06 -282790 0
+-1.3809e+06 -328610 0
+-1.5504e+06 -380090 0
+-1.7354e+06 -437700 0
+-1.936e+06 -501710 0
+-2.1525e+06 -572380 0
+-2.3846e+06 -650010 0
+-2.6322e+06 -735070 0
+-2.8952e+06 -828180 0
+-3.1733e+06 -929920 0
+-3.4664e+06 -1.0406e+06 0
+-3.7742e+06 -1.16e+06 0
+-4.0964e+06 -1.2877e+06 0
+-4.4323e+06 -1.4234e+06 0
+-4.7807e+06 -1.5668e+06 0
+-5.1396e+06 -1.7178e+06 0
+-5.5063e+06 -1.8755e+06 0
+-5.8768e+06 -2.0372e+06 0
+-6.247e+06 -2.1989e+06 0
+-6.6129e+06 -2.3558e+06 0
+-6.9717e+06 -2.5055e+06 0
+-7.3224e+06 -2.65e+06 0
+-7.6652e+06 -2.7948e+06 0
+-7.9999e+06 -2.9463e+06 0
+-8.3242e+06 -3.1067e+06 0
+-8.6332e+06 -3.2708e+06 0
+-8.9201e+06 -3.4282e+06 0
+-9.1784e+06 -3.569e+06 0
+-9.4044e+06 -3.6913e+06 0
+-9.5976e+06 -3.8033e+06 0
+-9.7604e+06 -3.9174e+06 0
+-9.8946e+06 -4.0393e+06 0
+-1e+07 -4.1604e+06 0
+-1.0076e+07 -4.2592e+06 0
+-1.0121e+07 -4.3146e+06 0
+-1.0136e+07 -4.3222e+06 0
+-1.0128e+07 -4.3023e+06 0
+-1.0102e+07 -4.2906e+06 0
+-1.006e+07 -4.3165e+06 0
+-9.9962e+06 -4.3819e+06 0
+-9.9014e+06 -4.4558e+06 0
+-9.7656e+06 -4.4908e+06 0
+-9.587e+06 -4.4532e+06 0
+-9.375e+06 -4.3454e+06 0
+-9.1468e+06 -4.207e+06 0
+-8.9195e+06 -4.0903e+06 0
+-8.701e+06 -4.0277e+06 0
+-8.4878e+06 -4.0106e+06 0
+-8.2687e+06 -3.9951e+06 0
+-8.0342e+06 -3.9306e+06 0
+-7.7848e+06 -3.7928e+06 0
+-7.5324e+06 -3.6004e+06 0
+-7.2941e+06 -3.4041e+06 0
+-7.0829e+06 -3.2566e+06 0
+-6.8998e+06 -3.1815e+06 0
+-6.7335e+06 -3.1608e+06 0
+-6.568e+06 -3.1461e+06 0
+-6.3927e+06 -3.0872e+06 0
+-6.2102e+06 -2.9593e+06 0
+-6.0363e+06 -2.775e+06 0
+-5.8934e+06 -2.576e+06 0
+-5.7994e+06 -2.4104e+06 0
+-5.7596e+06 -2.3094e+06 0
+-5.7639e+06 -2.275e+06 0
+-5.7915e+06 -2.2818e+06 0
+-5.8199e+06 -2.2916e+06 0
+-5.8342e+06 -2.2706e+06 0
+-5.8332e+06 -2.2024e+06 0
+-5.8295e+06 -2.0918e+06 0
+-5.8445e+06 -1.9599e+06 0
+-5.9007e+06 -1.834e+06 0
+-6.0144e+06 -1.7373e+06 0
+-6.1915e+06 -1.6823e+06 0
+-6.4256e+06 -1.6687e+06 0
+-6.7013e+06 -1.686e+06 0
+-6.9984e+06 -1.7185e+06 0
+715340 -246390 0
+722500 -249160 0
+728690 -251390 0
+733790 -252920 0
+737750 -253620 0
+740500 -253430 0
+742030 -252370 0
+742340 -250520 0
+741440 -248060 0
+739400 -245170 0
+736270 -242070 0
+732100 -238920 0
+726950 -235820 0
+720850 -232750 0
+713850 -229620 0
+705980 -226260 0
+697280 -222490 0
+687810 -218150 0
+677640 -213190 0
+666880 -207640 0
+655610 -201630 0
+643930 -195370 0
+631940 -189050 0
+619710 -182830 0
+607310 -176780 0
+594780 -170910 0
+582200 -165160 0
+569620 -159450 0
+557150 -153730 0
+544860 -148000 0
+532860 -142290 0
+521220 -136700 0
+510010 -131310 0
+499260 -126190 0
+488980 -121370 0
+479150 -116870 0
+469750 -112650 0
+460750 -108690 0
+452130 -104970 0
+443850 -101470 0
+435900 -98172 0
+428260 -95085 0
+420900 -92196 0
+413800 -89494 0
+406910 -86961 0
+400180 -84578 0
+393550 -82327 0
+386970 -80191 0
+380350 -78156 0
+373650 -76205 0
+366780 -74321 0
+359710 -72484 0
+352380 -70671 0
+344740 -68863 0
+336770 -67043 0
+328430 -65195 0
+319720 -63311 0
+310610 -61383 0
+301120 -59404 0
+291240 -57372 0
+280980 -55285 0
+270380 -53144 0
+259460 -50951 0
+248260 -48715 0
+236840 -46443 0
+225230 -44147 0
+213520 -41840 0
+201750 -39533 0
+189980 -37239 0
+178290 -34970 0
+166720 -32734 0
+155350 -30540 0
+144230 -28394 0
+133410 -26299 0
+122950 -24252 0
+112900 -22247 0
+103310 -20269 0
+94246 -18293 0
+85763 -16283 0
+77933 -14184 0
+70846 -11915 0
+64618 -9362.6 0
+59416 -6359.9 0
+55474 -2664.2 0
+53137 2083 0
+52917 8418.9 0
+55590 17159 0
+62336 29556 0
+74969 47564 0
+96286 74256 0
+130610 114520 0
+184610 176200 0
+268460 271970 0
+397420 422460 0
+593570 661310 0
+886560 1.0432e+06 0
+1.3103e+06 1.6559e+06 0
+1.887e+06 2.6335e+06 0
+2.5826e+06 4.1594e+06 0
+3.2212e+06 6.4061e+06 0
+3.429e+06 9.2976e+06 0
+2.8999e+06 1.208e+07 0
+1.9506e+06 1.3594e+07 0
+1.1147e+06 1.3688e+07 0
+577200 1.297e+07 0
+285780 1.1985e+07 0
+143210 1.1017e+07 0
+77868 1.0167e+07 0
+48905 9.452e+06 0
+35919 8.8581e+06 0
+29757 8.3623e+06 0
+26447 7.9442e+06 0
+24136 7.5869e+06 0
+22245 7.2768e+06 0
+20579 7.0039e+06 0
+19019 6.761e+06 0
+17572 6.5422e+06 0
+16230 6.3435e+06 0
+14986 6.1616e+06 0
+13834 5.9942e+06 0
+12767 5.8394e+06 0
+11779 5.6958e+06 0
+10866 5.5623e+06 0
+10020 5.438e+06 0
+9232.3 5.3223e+06 0
+8498.1 5.2144e+06 0
+7814.3 5.1139e+06 0
+7176.2 5.0205e+06 0
+6578.1 4.9338e+06 0
+6015.9 4.8535e+06 0
+5486.8 4.7793e+06 0
+4988.2 4.711e+06 0
+4517 4.6483e+06 0
+4069.9 4.5911e+06 0
+3644.3 4.5393e+06 0
+3238.3 4.4926e+06 0
+2850 4.4508e+06 0
+2477.5 4.414e+06 0
+2118.3 4.3818e+06 0
+1770.7 4.3543e+06 0
+1433.4 4.3314e+06 0
+1105.1 4.3128e+06 0
+784.06 4.2986e+06 0
+468.65 4.2886e+06 0
+157.58 4.2828e+06 0
+-150.23 4.2812e+06 0
+-455.87 4.2837e+06 0
+-760.69 4.2902e+06 0
+-1066.1 4.3007e+06 0
+-1373.1 4.3151e+06 0
+-1682.6 4.3335e+06 0
+-1995.6 4.3559e+06 0
+-2313.4 4.3821e+06 0
+-2637.2 4.4122e+06 0
+-2967.9 4.4462e+06 0
+-3306.2 4.484e+06 0
+-3653.3 4.5257e+06 0
+-4010.3 4.5712e+06 0
+-4378.4 4.6205e+06 0
+-4758.3 4.6735e+06 0
+-5150.8 4.7304e+06 0
+-5557 4.7909e+06 0
+-5977.9 4.8552e+06 0
+-6414.6 4.9231e+06 0
+-6867.9 4.9947e+06 0
+-7338.3 5.0698e+06 0
+-7826.9 5.1483e+06 0
+-8334.8 5.2304e+06 0
+-8863.1 5.3158e+06 0
+-9412.4 5.4045e+06 0
+-9983.5 5.4965e+06 0
+-10578 5.5917e+06 0
+-11197 5.6901e+06 0
+-11843 5.7918e+06 0
+-12517 5.8967e+06 0
+-13223 6.0052e+06 0
+-13962 6.1174e+06 0
+-14742 6.2337e+06 0
+-15569 6.3547e+06 0
+-16449 6.4813e+06 0
+-17393 6.6147e+06 0
+-18418 6.7564e+06 0
+-19543 6.9087e+06 0
+-20791 7.0745e+06 0
+-22191 7.2577e+06 0
+-23785 7.4637e+06 0
+-25622 7.6993e+06 0
+-27759 7.9738e+06 0
+-30263 8.2992e+06 0
+-33210 8.6915e+06 0
+-36707 9.1716e+06 0
+-40922 9.7672e+06 0
+-46125 1.0515e+07 0
+-53034 1.1462e+07 0
+-63695 1.2674e+07 0
+-82772 1.4232e+07 0
+-122430 1.6244e+07 0
+-212060 1.8842e+07 0
+-417020 2.2172e+07 0
+-873500 2.6353e+07 0
+-1.8357e+06 3.1351e+07 0
+-3.6842e+06 3.6712e+07 0
+-6.7173e+06 4.1092e+07 0
+-1.0461e+07 4.2013e+07 0
+-1.3035e+07 3.7363e+07 0
+-1.2943e+07 2.8921e+07 0
+-1.0954e+07 2.0518e+07 0
+-8.4162e+06 1.3951e+07 0
+-6.1092e+06 9.3254e+06 0
+-4.2885e+06 6.2035e+06 0
+-2.9518e+06 4.1288e+06 0
+-2.0109e+06 2.754e+06 0
+-1.367e+06 1.8407e+06 0
+-936410 1.2312e+06 0
+-655230 822190 0
+-477190 546260 0
+-369810 359010 0
+-310740 231090 0
+-284840 142880 0
+-282040 81169 0
+-295810 36933 0
+-322060 3938.3 0
+-358400 -22193 0
+-403570 -44572 0
+-457100 -65437 0
+-519060 -86408 0
+-589860 -108680 0
+-670150 -133160 0
+-760720 -160620 0
+-862470 -191760 0
+-976340 -227270 0
+-1.1032e+06 -267790 0
+-1.2439e+06 -313860 0
+-1.3991e+06 -365940 0
+-1.5692e+06 -424390 0
+-1.7546e+06 -489620 0
+-1.9557e+06 -562140 0
+-2.1726e+06 -642580 0
+-2.4056e+06 -731530 0
+-2.655e+06 -829300 0
+-2.9208e+06 -935810 0
+-3.2031e+06 -1.0507e+06 0
+-3.5018e+06 -1.1739e+06 0
+-3.8163e+06 -1.3054e+06 0
+-4.1456e+06 -1.4457e+06 0
+-4.4877e+06 -1.5946e+06 0
+-4.8396e+06 -1.7504e+06 0
+-5.1975e+06 -1.9092e+06 0
+-5.5579e+06 -2.0662e+06 0
+-5.9177e+06 -2.2181e+06 0
+-6.2756e+06 -2.3653e+06 0
+-6.6313e+06 -2.5131e+06 0
+-6.9843e+06 -2.668e+06 0
+-7.3325e+06 -2.834e+06 0
+-7.671e+06 -3.0083e+06 0
+-7.9932e+06 -3.1813e+06 0
+-8.2928e+06 -3.3425e+06 0
+-8.5664e+06 -3.4874e+06 0
+-8.8143e+06 -3.6211e+06 0
+-9.0393e+06 -3.7545e+06 0
+-9.2436e+06 -3.8944e+06 0
+-9.4261e+06 -4.0347e+06 0
+-9.5823e+06 -4.1562e+06 0
+-9.7069e+06 -4.2374e+06 0
+-9.7979e+06 -4.2707e+06 0
+-9.8587e+06 -4.2725e+06 0
+-9.896e+06 -4.2771e+06 0
+-9.9153e+06 -4.3169e+06 0
+-9.9156e+06 -4.3993e+06 0
+-9.8887e+06 -4.498e+06 0
+-9.824e+06 -4.5659e+06 0
+-9.7155e+06 -4.5631e+06 0
+-9.5677e+06 -4.4834e+06 0
+-9.3951e+06 -4.3594e+06 0
+-9.2154e+06 -4.2437e+06 0
+-9.04e+06 -4.1755e+06 0
+-8.8691e+06 -4.156e+06 0
+-8.6927e+06 -4.1474e+06 0
+-8.4992e+06 -4.0979e+06 0
+-8.2843e+06 -3.9754e+06 0
+-8.0552e+06 -3.7892e+06 0
+-7.8281e+06 -3.5852e+06 0
+-7.619e+06 -3.4189e+06 0
+-7.4353e+06 -3.3231e+06 0
+-7.272e+06 -3.289e+06 0
+-7.1164e+06 -3.2725e+06 0
+-6.9562e+06 -3.2198e+06 0
+-6.7888e+06 -3.0968e+06 0
+-6.6235e+06 -2.9061e+06 0
+-6.4782e+06 -2.6845e+06 0
+-6.3708e+06 -2.4831e+06 0
+-6.3105e+06 -2.3424e+06 0
+-6.2934e+06 -2.2754e+06 0
+-6.3047e+06 -2.2646e+06 0
+-6.3248e+06 -2.273e+06 0
+-6.3385e+06 -2.261e+06 0
+-6.341e+06 -2.2023e+06 0
+-6.34e+06 -2.0915e+06 0
+-6.3529e+06 -1.9432e+06 0
+-6.4005e+06 -1.7838e+06 0
+-6.5005e+06 -1.6409e+06 0
+-6.6622e+06 -1.5353e+06 0
+-6.8839e+06 -1.4754e+06 0
+-7.1543e+06 -1.4581e+06 0
+-7.4561e+06 -1.4714e+06 0
+678380 -251500 0
+683560 -253500 0
+687700 -254900 0
+690710 -255520 0
+692520 -255260 0
+693090 -254090 0
+692410 -252030 0
+690500 -249210 0
+687400 -245800 0
+683180 -242030 0
+677920 -238090 0
+671680 -234170 0
+664550 -230340 0
+656570 -226590 0
+647800 -222810 0
+638280 -218840 0
+628070 -214500 0
+617210 -209640 0
+605800 -204220 0
+593930 -198290 0
+581700 -192000 0
+569220 -185530 0
+556590 -179070 0
+543890 -172770 0
+531170 -166700 0
+518500 -160840 0
+505930 -155140 0
+493500 -149540 0
+481280 -143980 0
+469350 -138470 0
+457770 -133050 0
+446610 -127790 0
+435900 -122770 0
+425670 -118020 0
+415900 -113580 0
+406580 -109420 0
+397670 -105520 0
+389110 -101850 0
+380880 -98389 0
+372930 -95117 0
+365240 -92034 0
+357770 -89135 0
+350500 -86410 0
+343390 -83845 0
+336390 -81415 0
+329480 -79099 0
+322590 -76872 0
+315680 -74719 0
+308700 -72623 0
+301600 -70570 0
+294340 -68548 0
+286880 -66540 0
+279200 -64532 0
+271270 -62511 0
+263080 -60465 0
+254630 -58386 0
+245920 -56271 0
+236960 -54118 0
+227770 -51924 0
+218360 -49693 0
+208770 -47428 0
+199020 -45134 0
+189160 -42820 0
+179220 -40497 0
+169270 -38178 0
+159330 -35876 0
+149470 -33603 0
+139730 -31373 0
+130150 -29196 0
+120790 -27081 0
+111680 -25036 0
+102870 -23067 0
+94375 -21178 0
+86242 -19369 0
+78497 -17636 0
+71169 -15972 0
+64286 -14363 0
+57879 -12786 0
+51983 -11209 0
+46643 -9586 0
+41922 -7852.8 0
+37908 -5918.4 0
+34728 -3653.4 0
+32574 -871.91 0
+31729 2697.8 0
+32622 7458.8 0
+35909 14019 0
+42589 23310 0
+54214 36776 0
+73194 56695 0
+103310 86698 0
+150500 132660 0
+224130 204180 0
+338880 317230 0
+517470 498640 0
+794020 794250 0
+1.2162e+06 1.2831e+06 0
+1.8389e+06 2.1016e+06 0
+2.6858e+06 3.4782e+06 0
+3.6234e+06 5.7448e+06 0
+4.1205e+06 9.1313e+06 0
+3.4277e+06 1.2823e+07 0
+2.1131e+06 1.4567e+07 0
+1.097e+06 1.4378e+07 0
+523960 1.3351e+07 0
+245060 1.2171e+07 0
+119140 1.11e+07 0
+64516 1.0203e+07 0
+41115 9.468e+06 0
+30610 8.8654e+06 0
+25455 8.3657e+06 0
+22613 7.9462e+06 0
+20384 7.5887e+06 0
+18634 7.2782e+06 0
+17174 7.0051e+06 0
+15710 6.762e+06 0
+14387 6.5433e+06 0
+13221 6.3445e+06 0
+12157 6.1625e+06 0
+11176 5.995e+06 0
+10258 5.8401e+06 0
+9413 5.6965e+06 0
+8656.8 5.563e+06 0
+7968.6 5.4386e+06 0
+7317.3 5.3228e+06 0
+6703.8 5.2149e+06 0
+6144.2 5.1144e+06 0
+5634.8 5.021e+06 0
+5156.2 4.9342e+06 0
+4700.4 4.8539e+06 0
+4272.7 4.7796e+06 0
+3876.3 4.7113e+06 0
+3506.6 4.6486e+06 0
+3155.4 4.5914e+06 0
+2818.1 4.5396e+06 0
+2496.5 4.4928e+06 0
+2194.3 4.4511e+06 0
+1907.7 4.4142e+06 0
+1629.3 4.3821e+06 0
+1357.6 4.3546e+06 0
+1096.1 4.3316e+06 0
+844.65 4.313e+06 0
+599.51 4.2988e+06 0
+357.4 4.2888e+06 0
+117.45 4.283e+06 0
+-119.14 4.2814e+06 0
+-351.78 4.2839e+06 0
+-583.38 4.2904e+06 0
+-817.56 4.3009e+06 0
+-1054.2 4.3153e+06 0
+-1291.3 4.3338e+06 0
+-1529.9 4.3561e+06 0
+-1773.1 4.3823e+06 0
+-2022.8 4.4124e+06 0
+-2278.7 4.4464e+06 0
+-2540 4.4842e+06 0
+-2807.2 4.5259e+06 0
+-3083.3 4.5714e+06 0
+-3370.8 4.6207e+06 0
+-3668.4 4.6738e+06 0
+-3974.9 4.7306e+06 0
+-4292.1 4.7912e+06 0
+-4623.1 4.8555e+06 0
+-4969.2 4.9234e+06 0
+-5329.8 4.995e+06 0
+-5703.5 5.0701e+06 0
+-6091.3 5.1487e+06 0
+-6497.5 5.2307e+06 0
+-6924.8 5.3161e+06 0
+-7370.2 5.4049e+06 0
+-7831.5 5.4969e+06 0
+-8312.6 5.5921e+06 0
+-8819.2 5.6905e+06 0
+-9353.1 5.7922e+06 0
+-9911.9 5.8972e+06 0
+-10494 6.0057e+06 0
+-11106 6.1179e+06 0
+-11760 6.2342e+06 0
+-12464 6.3553e+06 0
+-13210 6.482e+06 0
+-14003 6.6154e+06 0
+-14875 6.7571e+06 0
+-15852 6.9095e+06 0
+-16937 7.0754e+06 0
+-18139 7.2588e+06 0
+-19514 7.4649e+06 0
+-21130 7.7007e+06 0
+-23030 7.9755e+06 0
+-25253 8.3012e+06 0
+-27838 8.6937e+06 0
+-30979 9.1742e+06 0
+-34883 9.7706e+06 0
+-39638 1.0519e+07 0
+-45594 1.1468e+07 0
+-54861 1.2682e+07 0
+-70623 1.4247e+07 0
+-102390 1.6276e+07 0
+-175090 1.8917e+07 0
+-346910 2.2348e+07 0
+-750570 2.6756e+07 0
+-1.671e+06 3.2241e+07 0
+-3.6348e+06 3.8525e+07 0
+-7.2935e+06 4.4241e+07 0
+-1.2407e+07 4.589e+07 0
+-1.5791e+07 3.9134e+07 0
+-1.4752e+07 2.7649e+07 0
+-1.159e+07 1.8064e+07 0
+-8.3759e+06 1.1585e+07 0
+-5.8171e+06 7.4559e+06 0
+-3.9651e+06 4.8464e+06 0
+-2.6819e+06 3.1839e+06 0
+-1.8128e+06 2.1116e+06 0
+-1.2324e+06 1.411e+06 0
+-849670 947970 0
+-600670 638770 0
+-441860 430410 0
+-343780 288830 0
+-286660 191820 0
+-257320 124690 0
+-247080 77598 0
+-250340 43827 0
+-263570 18731 0
+-284710 -976.03 0
+-312680 -17660 0
+-347080 -33048 0
+-387960 -48417 0
+-435690 -64724 0
+-490860 -82721 0
+-554220 -103060 0
+-626650 -126350 0
+-709080 -153240 0
+-802520 -184360 0
+-907920 -220310 0
+-1.0262e+06 -261620 0
+-1.1581e+06 -308740 0
+-1.3043e+06 -362160 0
+-1.4655e+06 -422440 0
+-1.6422e+06 -490240 0
+-1.8351e+06 -566170 0
+-2.0446e+06 -650590 0
+-2.2711e+06 -743450 0
+-2.515e+06 -844510 0
+-2.7767e+06 -953650 0
+-3.0562e+06 -1.0713e+06 0
+-3.3532e+06 -1.1982e+06 0
+-3.6665e+06 -1.3351e+06 0
+-3.9942e+06 -1.4808e+06 0
+-4.3333e+06 -1.6321e+06 0
+-4.6805e+06 -1.7844e+06 0
+-5.0329e+06 -1.9336e+06 0
+-5.389e+06 -2.0793e+06 0
+-5.7479e+06 -2.2258e+06 0
+-6.1091e+06 -2.3801e+06 0
+-6.4707e+06 -2.5475e+06 0
+-6.8287e+06 -2.7269e+06 0
+-7.1772e+06 -2.9101e+06 0
+-7.5109e+06 -3.0858e+06 0
+-7.8269e+06 -3.2468e+06 0
+-8.126e+06 -3.3954e+06 0
+-8.411e+06 -3.5413e+06 0
+-8.6833e+06 -3.6929e+06 0
+-8.9399e+06 -3.848e+06 0
+-9.1731e+06 -3.9905e+06 0
+-9.3737e+06 -4.0989e+06 0
+-9.5365e+06 -4.1619e+06 0
+-9.6638e+06 -4.19e+06 0
+-9.7639e+06 -4.2139e+06 0
+-9.8461e+06 -4.2668e+06 0
+-9.9139e+06 -4.3622e+06 0
+-9.9611e+06 -4.4809e+06 0
+-9.9755e+06 -4.5786e+06 0
+-9.9463e+06 -4.6118e+06 0
+-9.8725e+06 -4.5655e+06 0
+-9.7646e+06 -4.4636e+06 0
+-9.6402e+06 -4.3557e+06 0
+-9.514e+06 -4.2858e+06 0
+-9.39e+06 -4.2646e+06 0
+-9.2601e+06 -4.2632e+06 0
+-9.1104e+06 -4.2314e+06 0
+-8.9317e+06 -4.1312e+06 0
+-8.7264e+06 -3.9617e+06 0
+-8.5087e+06 -3.7609e+06 0
+-8.2978e+06 -3.5836e+06 0
+-8.1075e+06 -3.4689e+06 0
+-7.94e+06 -3.418e+06 0
+-7.7864e+06 -3.3942e+06 0
+-7.6334e+06 -3.3443e+06 0
+-7.4722e+06 -3.228e+06 0
+-7.3042e+06 -3.039e+06 0
+-7.1411e+06 -2.807e+06 0
+-6.9992e+06 -2.582e+06 0
+-6.8915e+06 -2.4095e+06 0
+-6.8222e+06 -2.3114e+06 0
+-6.785e+06 -2.2783e+06 0
+-6.7668e+06 -2.2766e+06 0
+-6.7541e+06 -2.2651e+06 0
+-6.7389e+06 -2.2107e+06 0
+-6.7225e+06 -2.0999e+06 0
+-6.7148e+06 -1.9406e+06 0
+-6.731e+06 -1.7562e+06 0
+-6.7866e+06 -1.5761e+06 0
+-6.8926e+06 -1.4261e+06 0
+-7.0525e+06 -1.3219e+06 0
+-7.2623e+06 -1.2666e+06 0
+-7.5116e+06 -1.2525e+06 0
+675490 -255000 0
+678530 -256170 0
+680430 -256650 0
+681120 -256310 0
+680540 -255040 0
+678670 -252840 0
+675510 -249760 0
+671110 -245960 0
+665530 -241620 0
+658870 -236990 0
+651220 -232270 0
+642680 -227630 0
+633310 -223140 0
+623190 -218780 0
+612360 -214440 0
+600890 -209930 0
+588810 -205100 0
+576200 -199810 0
+563140 -194040 0
+549750 -187840 0
+536140 -181370 0
+522430 -174810 0
+508730 -168340 0
+495110 -162090 0
+481640 -156120 0
+468370 -150400 0
+455340 -144870 0
+442580 -139470 0
+430150 -134160 0
+418100 -128940 0
+406470 -123860 0
+395320 -118980 0
+384660 -114350 0
+374510 -110000 0
+364840 -105930 0
+355610 -102120 0
+346790 -98538 0
+338320 -95143 0
+330160 -91916 0
+322260 -88848 0
+314580 -85939 0
+307090 -83186 0
+299740 -80580 0
+292500 -78104 0
+285340 -75733 0
+278210 -73443 0
+271080 -71211 0
+263910 -69019 0
+256660 -66853 0
+249310 -64704 0
+241810 -62560 0
+234160 -60413 0
+226340 -58255 0
+218340 -56077 0
+210170 -53876 0
+201840 -51649 0
+193360 -49398 0
+184750 -47123 0
+176040 -44829 0
+167260 -42519 0
+158440 -40201 0
+149610 -37883 0
+140820 -35577 0
+132100 -33295 0
+123500 -31050 0
+115050 -28856 0
+106790 -26724 0
+98759 -24665 0
+90988 -22686 0
+83503 -20795 0
+76330 -18996 0
+69490 -17292 0
+62999 -15683 0
+56871 -14169 0
+51121 -12745 0
+45757 -11401 0
+40793 -10124 0
+36241 -8893.6 0
+32121 -7683 0
+28460 -6454.4 0
+25301 -5156.8 0
+22708 -3719.9 0
+20781 -2046.2 0
+19671 2.3893 0
+19608 2624.6 0
+20940 6112.3 0
+24202 10901 0
+30211 17654 0
+40239 27392 0
+56272 41718 0
+81449 63185 0
+120780 95916 0
+182310 146690 0
+279120 226880 0
+432530 355940 0
+677280 568060 0
+1.0693e+06 925370 0
+1.6939e+06 1.5452e+06 0
+2.6579e+06 2.6588e+06 0
+3.9826e+06 4.7316e+06 0
+5.1024e+06 8.5684e+06 0
+4.1219e+06 1.4043e+07 0
+2.2321e+06 1.5852e+07 0
+1.0221e+06 1.5145e+07 0
+443130 1.3735e+07 0
+197980 1.2339e+07 0
+95306 1.1166e+07 0
+50375 1.0231e+07 0
+31779 9.4825e+06 0
+24596 8.8718e+06 0
+20807 8.367e+06 0
+18068 7.9471e+06 0
+15463 7.5917e+06 0
+14421 7.2798e+06 0
+13863 7.0055e+06 0
+12238 6.7624e+06 0
+10806 6.5447e+06 0
+10032 6.3456e+06 0
+9373.3 6.1631e+06 0
+8653.9 5.9953e+06 0
+7784.8 5.8406e+06 0
+6989 5.6973e+06 0
+6492 5.5637e+06 0
+6109.1 5.4389e+06 0
+5574.9 5.323e+06 0
+4972.6 5.2153e+06 0
+4529.6 5.115e+06 0
+4235.8 5.0213e+06 0
+3915.2 4.9344e+06 0
+3518.1 4.8541e+06 0
+3142.1 4.78e+06 0
+2854.6 4.7116e+06 0
+2623.8 4.6488e+06 0
+2379.1 4.5916e+06 0
+2093.8 4.5397e+06 0
+1818.6 4.4931e+06 0
+1608.4 4.4513e+06 0
+1433 4.4144e+06 0
+1227.5 4.3822e+06 0
+995.76 4.3547e+06 0
+789.18 4.3318e+06 0
+620.19 4.3132e+06 0
+458.03 4.2989e+06 0
+277.11 4.2889e+06 0
+81.083 4.2832e+06 0
+-103.07 4.2816e+06 0
+-259.6 4.284e+06 0
+-412.91 4.2905e+06 0
+-592.85 4.301e+06 0
+-786.11 4.3155e+06 0
+-961.82 4.3339e+06 0
+-1122 4.3562e+06 0
+-1292.5 4.3824e+06 0
+-1485.4 4.4126e+06 0
+-1689 4.4466e+06 0
+-1882.8 4.4844e+06 0
+-2064.5 4.5261e+06 0
+-2260.2 4.5715e+06 0
+-2487.1 4.6209e+06 0
+-2723.8 4.674e+06 0
+-2946.4 4.7309e+06 0
+-3166.4 4.7914e+06 0
+-3409.1 4.8557e+06 0
+-3681.5 4.9236e+06 0
+-3968.4 4.9952e+06 0
+-4245.8 5.0704e+06 0
+-4514.2 5.1489e+06 0
+-4812.4 5.2309e+06 0
+-5161.4 5.3164e+06 0
+-5522 5.4052e+06 0
+-5856.6 5.4972e+06 0
+-6191.5 5.5924e+06 0
+-6577.7 5.6908e+06 0
+-7023.3 5.7926e+06 0
+-7482.1 5.8977e+06 0
+-7902.9 6.0061e+06 0
+-8318.7 6.1182e+06 0
+-8839.3 6.2346e+06 0
+-9474.9 6.3559e+06 0
+-10078 6.4826e+06 0
+-10596 6.6159e+06 0
+-11224 6.7575e+06 0
+-12110 6.9101e+06 0
+-13076 7.0764e+06 0
+-13925 7.2597e+06 0
+-14866 7.4656e+06 0
+-16239 7.7016e+06 0
+-17997 7.977e+06 0
+-19837 8.3033e+06 0
+-21415 8.6953e+06 0
+-23916 9.1754e+06 0
+-27955 9.774e+06 0
+-32343 1.0524e+07 0
+-35764 1.1472e+07 0
+-42847 1.2687e+07 0
+-55793 1.4257e+07 0
+-81467 1.6302e+07 0
+-139790 1.8981e+07 0
+-276380 2.2496e+07 0
+-604150 2.7093e+07 0
+-1.4191e+06 3.3035e+07 0
+-3.4038e+06 4.0409e+07 0
+-7.7264e+06 4.8195e+07 0
+-1.4956e+07 5.171e+07 0
+-1.9768e+07 4.0913e+07 0
+-1.6502e+07 2.4742e+07 0
+-1.1724e+07 1.4598e+07 0
+-7.9179e+06 8.8576e+06 0
+-5.2756e+06 5.5417e+06 0
+-3.5144e+06 3.5552e+06 0
+-2.3549e+06 2.326e+06 0
+-1.5941e+06 1.5451e+06 0
+-1.0954e+06 1.0385e+06 0
+-769260 704350 0
+-557140 480770 0
+-420620 329450 0
+-334440 225980 0
+-281950 154560 0
+-252180 104750 0
+-237920 69560 0
+-234530 44210 0
+-239050 25371 0
+-249750 10665 0
+-265700 -1646.8 0
+-286540 -12862 0
+-312300 -23961 0
+-343280 -35696 0
+-379970 -48667 0
+-423040 -63404 0
+-473270 -80428 0
+-531560 -100300 0
+-598890 -123600 0
+-676280 -150920 0
+-764740 -182810 0
+-865240 -219800 0
+-978680 -262400 0
+-1.1059e+06 -311240 0
+-1.2477e+06 -367000 0
+-1.4049e+06 -430310 0
+-1.5782e+06 -501570 0
+-1.7683e+06 -580790 0
+-1.9758e+06 -667740 0
+-2.2014e+06 -762360 0
+-2.4456e+06 -865160 0
+-2.7086e+06 -977290 0
+-2.9902e+06 -1.0998e+06 0
+-3.2892e+06 -1.2325e+06 0
+-3.6037e+06 -1.3727e+06 0
+-3.9309e+06 -1.5163e+06 0
+-4.2682e+06 -1.6588e+06 0
+-4.6138e+06 -1.7991e+06 0
+-4.9666e+06 -1.9407e+06 0
+-5.3261e+06 -2.0906e+06 0
+-5.6911e+06 -2.2551e+06 0
+-6.0586e+06 -2.4345e+06 0
+-6.4244e+06 -2.6217e+06 0
+-6.7844e+06 -2.8046e+06 0
+-7.1363e+06 -2.9742e+06 0
+-7.4806e+06 -3.1304e+06 0
+-7.8191e+06 -3.2821e+06 0
+-8.1517e+06 -3.4401e+06 0
+-8.4733e+06 -3.6063e+06 0
+-8.7737e+06 -3.7684e+06 0
+-9.0413e+06 -3.9051e+06 0
+-9.2689e+06 -4.0004e+06 0
+-9.4582e+06 -4.0575e+06 0
+-9.6195e+06 -4.1013e+06 0
+-9.7653e+06 -4.1651e+06 0
+-9.9025e+06 -4.2685e+06 0
+-1.0026e+07 -4.4012e+06 0
+-1.0123e+07 -4.525e+06 0
+-1.0177e+07 -4.5949e+06 0
+-1.0181e+07 -4.5871e+06 0
+-1.0143e+07 -4.5152e+06 0
+-1.0078e+07 -4.4225e+06 0
+-1.0003e+07 -4.3558e+06 0
+-9.9275e+06 -4.3353e+06 0
+-9.8433e+06 -4.3424e+06 0
+-9.7355e+06 -4.3318e+06 0
+-9.5905e+06 -4.2613e+06 0
+-9.4064e+06 -4.1194e+06 0
+-9.1956e+06 -3.9334e+06 0
+-8.9794e+06 -3.7537e+06 0
+-8.7776e+06 -3.6235e+06 0
+-8.5985e+06 -3.5542e+06 0
+-8.4367e+06 -3.5194e+06 0
+-8.2778e+06 -3.4706e+06 0
+-8.107e+06 -3.3648e+06 0
+-7.9184e+06 -3.1875e+06 0
+-7.7174e+06 -2.9595e+06 0
+-7.5188e+06 -2.7253e+06 0
+-7.3396e+06 -2.5316e+06 0
+-7.1918e+06 -2.4059e+06 0
+-7.0784e+06 -2.3464e+06 0
+-6.9935e+06 -2.3258e+06 0
+-6.9265e+06 -2.3047e+06 0
+-6.8671e+06 -2.2476e+06 0
+-6.8102e+06 -2.1356e+06 0
+-6.7572e+06 -1.9708e+06 0
+-6.7161e+06 -1.7721e+06 0
+-6.6981e+06 -1.5678e+06 0
+-6.7142e+06 -1.3853e+06 0
+-6.7726e+06 -1.2439e+06 0
+-6.8765e+06 -1.1514e+06 0
+-7.0244e+06 -1.104e+06 0
+694400 -256600 0
+694870 -256850 0
+694100 -256350 0
+692030 -254970 0
+688620 -252640 0
+683890 -249380 0
+677870 -245280 0
+670630 -240510 0
+662270 -235290 0
+652900 -229850 0
+642640 -224420 0
+631570 -219130 0
+619790 -214060 0
+607340 -209170 0
+594280 -204320 0
+580650 -199350 0
+566510 -194100 0
+551930 -188470 0
+537020 -182420 0
+521890 -176060 0
+506690 -169520 0
+491540 -162990 0
+476550 -156640 0
+461810 -150580 0
+447370 -144820 0
+433280 -139350 0
+419550 -134100 0
+406230 -129010 0
+393340 -124030 0
+380910 -119180 0
+368990 -114490 0
+357590 -110020 0
+346730 -105820 0
+336410 -101880 0
+326590 -98208 0
+317230 -94758 0
+308290 -91492 0
+299710 -88373 0
+291430 -85382 0
+283420 -82514 0
+275630 -79769 0
+268010 -77148 0
+260520 -74642 0
+253120 -72236 0
+245790 -69908 0
+238480 -67632 0
+231170 -65389 0
+223830 -63162 0
+216430 -60941 0
+208950 -58718 0
+201380 -56488 0
+193700 -54247 0
+185930 -51992 0
+178050 -49721 0
+170090 -47436 0
+162070 -45140 0
+153990 -42836 0
+145890 -40531 0
+137810 -38228 0
+129760 -35936 0
+121790 -33661 0
+113920 -31415 0
+106190 -29208 0
+98632 -27053 0
+91281 -24963 0
+84164 -22949 0
+77309 -21020 0
+70738 -19184 0
+64469 -17445 0
+58518 -15806 0
+52896 -14270 0
+47609 -12837 0
+42662 -11505 0
+38057 -10271 0
+33794 -9128.6 0
+29873 -8068.4 0
+26295 -7077.5 0
+23062 -6138.4 0
+20182 -5228.3 0
+17670 -4317 0
+15555 -3365.1 0
+13884 -2319.9 0
+12733 -1110 0
+12218 363.66 0
+12520 2241.4 0
+13913 4726.1 0
+16815 8116.9 0
+21867 12864 0
+30065 19652 0
+42964 29549 0
+63026 44236 0
+94206 66411 0
+142940 100480 0
+219880 153780 0
+342990 238860 0
+543160 377870 0
+874790 611610 0
+1.436e+06 1.02e+06 0
+2.4053e+06 1.7758e+06 0
+4.0734e+06 3.3148e+06 0
+6.4396e+06 7.0038e+06 0
+5.0459e+06 1.6595e+07 0
+2.4768e+06 1.7043e+07 0
+911130 1.5826e+07 0
+303970 1.4212e+07 0
+157270 1.2518e+07 0
+93996 1.1179e+07 0
+33498 1.0248e+07 0
+13609 9.5179e+06 0
+23826 8.8769e+06 0
+24069 8.3484e+06 0
+11653 7.944e+06 0
+4262.1 7.6097e+06 0
+10372 7.285e+06 0
+16210 6.9963e+06 0
+9349.5 6.7575e+06 0
+4390 6.5521e+06 0
+6313.8 6.3501e+06 0
+8326.9 6.1617e+06 0
+7983.2 5.9918e+06 0
+5199.1 5.8406e+06 0
+3315.2 5.7011e+06 0
+4453.5 5.5658e+06 0
+5832.3 5.4369e+06 0
+4687.3 5.3211e+06 0
+2661.8 5.2168e+06 0
+2434.2 5.1174e+06 0
+3463.9 5.0214e+06 0
+3595 4.9329e+06 0
+2544.7 4.8537e+06 0
+1682.9 4.7812e+06 0
+1746.8 4.7127e+06 0
+2190.3 4.6487e+06 0
+2141.1 4.5908e+06 0
+1453.6 4.5397e+06 0
+882.74 4.494e+06 0
+1009 4.452e+06 0
+1335.3 4.4141e+06 0
+1126.3 4.3817e+06 0
+568.39 4.3549e+06 0
+305.8 4.3325e+06 0
+427.68 4.3135e+06 0
+533 4.2987e+06 0
+340.27 4.2887e+06 0
+-50.039 4.2834e+06 0
+-277.31 4.2821e+06 0
+-179.79 4.2843e+06 0
+-90.056 4.2902e+06 0
+-337.84 4.3008e+06 0
+-707.58 4.3158e+06 0
+-826.55 4.3344e+06 0
+-746.38 4.3563e+06 0
+-767.91 4.3822e+06 0
+-1011.2 4.4125e+06 0
+-1331.1 4.4469e+06 0
+-1479.1 4.4849e+06 0
+-1414.1 4.5262e+06 0
+-1436.6 4.5713e+06 0
+-1752.3 4.6208e+06 0
+-2110.3 4.6744e+06 0
+-2215.3 4.7313e+06 0
+-2176.3 4.7915e+06 0
+-2274 4.8555e+06 0
+-2602.8 4.9237e+06 0
+-3011.9 4.9957e+06 0
+-3206.7 5.0709e+06 0
+-3122.2 5.149e+06 0
+-3178.7 5.2306e+06 0
+-3691.6 5.3164e+06 0
+-4265.4 5.406e+06 0
+-4379 5.4979e+06 0
+-4215.1 5.5923e+06 0
+-4381 5.6903e+06 0
+-5099 5.7927e+06 0
+-5863 5.8988e+06 0
+-5919.8 6.0071e+06 0
+-5461.9 6.1178e+06 0
+-5805.8 6.2335e+06 0
+-7304.2 6.3566e+06 0
+-8200.9 6.485e+06 0
+-7407.5 6.6165e+06 0
+-6905 6.7556e+06 0
+-8712.9 6.9097e+06 0
+-10953 7.0796e+06 0
+-10614 7.2623e+06 0
+-9187.7 7.4637e+06 0
+-10686 7.6993e+06 0
+-15005 7.9804e+06 0
+-17416 8.3108e+06 0
+-12492 8.6937e+06 0
+-12150 9.1642e+06 0
+-24839 9.7806e+06 0
+-35005 1.0547e+07 0
+-24811 1.1481e+07 0
+-17328 1.2665e+07 0
+-29700 1.4233e+07 0
+-70491 1.6329e+07 0
+-148280 1.9098e+07 0
+-261420 2.2707e+07 0
+-413650 2.7299e+07 0
+-953180 3.3323e+07 0
+-3.1079e+06 4.2136e+07 0
+-8.6756e+06 5.4176e+07 0
+-1.8272e+07 6.1802e+07 0
+-2.5428e+07 4.06e+07 0
+-1.7317e+07 1.896e+07 0
+-1.0925e+07 1.0215e+07 0
+-6.9406e+06 6.0326e+06 0
+-4.4889e+06 3.7568e+06 0
+-2.9574e+06 2.4208e+06 0
+-1.9851e+06 1.5977e+06 0
+-1.3596e+06 1.0736e+06 0
+-953460 731390 0
+-688290 503730 0
+-514900 349910 0
+-401890 244650 0
+-328930 171820 0
+-282740 120910 0
+-254610 84963 0
+-238780 59270 0
+-231540 40597 0
+-230510 26666 0
+-234260 15824 0
+-242010 6836.8 0
+-253420 -1239.7 0
+-268510 -9139.8 0
+-287490 -17440 0
+-310760 -26609 0
+-338850 -37063 0
+-372440 -49219 0
+-412310 -63534 0
+-459390 -80519 0
+-514660 -100710 0
+-579150 -124650 0
+-653900 -152860 0
+-739890 -185930 0
+-838100 -224480 0
+-949470 -269220 0
+-1.0749e+06 -320810 0
+-1.2154e+06 -379660 0
+-1.3717e+06 -445810 0
+-1.5447e+06 -519060 0
+-1.7352e+06 -599360 0
+-1.9441e+06 -687250 0
+-2.172e+06 -784010 0
+-2.4194e+06 -891090 0
+-2.686e+06 -1.0089e+06 0
+-2.9706e+06 -1.1355e+06 0
+-3.2713e+06 -1.2673e+06 0
+-3.5857e+06 -1.3999e+06 0
+-3.9121e+06 -1.5317e+06 0
+-4.2492e+06 -1.6654e+06 0
+-4.5969e+06 -1.8077e+06 0
+-4.9547e+06 -1.9652e+06 0
+-5.3213e+06 -2.1394e+06 0
+-5.694e+06 -2.3238e+06 0
+-6.0699e+06 -2.5066e+06 0
+-6.447e+06 -2.6773e+06 0
+-6.8248e+06 -2.8343e+06 0
+-7.2033e+06 -2.9865e+06 0
+-7.5808e+06 -3.1469e+06 0
+-7.9508e+06 -3.3216e+06 0
+-8.302e+06 -3.5018e+06 0
+-8.6221e+06 -3.6661e+06 0
+-8.9035e+06 -3.7935e+06 0
+-9.1479e+06 -3.8793e+06 0
+-9.3663e+06 -3.9416e+06 0
+-9.5728e+06 -4.0131e+06 0
+-9.7757e+06 -4.1197e+06 0
+-9.9715e+06 -4.2614e+06 0
+-1.0145e+07 -4.4078e+06 0
+-1.0276e+07 -4.5144e+06 0
+-1.0355e+07 -4.5493e+06 0
+-1.0383e+07 -4.5141e+06 0
+-1.0376e+07 -4.4442e+06 0
+-1.0352e+07 -4.3866e+06 0
+-1.032e+07 -4.3706e+06 0
+-1.0275e+07 -4.3892e+06 0
+-1.0202e+07 -4.4039e+06 0
+-1.0085e+07 -4.3701e+06 0
+-9.9174e+06 -4.2654e+06 0
+-9.711e+06 -4.1045e+06 0
+-9.4884e+06 -3.9308e+06 0
+-9.2725e+06 -3.7898e+06 0
+-9.0761e+06 -3.7034e+06 0
+-8.8956e+06 -3.6574e+06 0
+-8.7152e+06 -3.6115e+06 0
+-8.5161e+06 -3.5223e+06 0
+-8.2868e+06 -3.3675e+06 0
+-8.0295e+06 -3.1571e+06 0
+-7.7584e+06 -2.9273e+06 0
+-7.4942e+06 -2.7218e+06 0
+-7.2552e+06 -2.5721e+06 0
+-7.0514e+06 -2.4839e+06 0
+-6.8822e+06 -2.4378e+06 0
+-6.7392e+06 -2.3994e+06 0
+-6.6105e+06 -2.334e+06 0
+-6.4864e+06 -2.22e+06 0
+-6.3627e+06 -2.0541e+06 0
+-6.2416e+06 -1.8505e+06 0
+-6.1307e+06 -1.6337e+06 0
+-6.0405e+06 -1.4302e+06 0
+-5.9812e+06 -1.2602e+06 0
+-5.9612e+06 -1.1339e+06 0
+-5.9853e+06 -1.0507e+06 0
+723430 -255830 0
+720730 -255100 0
+716730 -253550 0
+711370 -251090 0
+704660 -247690 0
+696640 -243380 0
+687380 -238300 0
+677000 -232630 0
+665630 -226610 0
+653400 -220480 0
+640430 -214430 0
+626800 -208610 0
+612580 -203050 0
+597810 -197700 0
+582530 -192430 0
+566770 -187070 0
+550590 -181480 0
+534080 -175570 0
+517350 -169360 0
+500540 -162930 0
+483810 -156450 0
+467280 -150080 0
+451070 -143970 0
+435260 -138210 0
+419890 -132790 0
+405000 -127680 0
+390600 -122800 0
+376700 -118090 0
+363320 -113520 0
+350490 -109100 0
+338220 -104860 0
+326540 -100850 0
+315430 -97089 0
+304870 -93591 0
+294840 -90324 0
+285290 -87244 0
+276160 -84305 0
+267410 -81472 0
+258970 -78726 0
+250820 -76064 0
+242880 -73489 0
+235140 -71003 0
+227530 -68601 0
+220020 -66268 0
+212590 -63985 0
+205190 -61732 0
+197810 -59491 0
+190430 -57249 0
+183020 -55001 0
+175590 -52742 0
+168110 -50471 0
+160600 -48187 0
+153060 -45894 0
+145500 -43594 0
+137940 -41293 0
+130390 -38998 0
+122880 -36716 0
+115450 -34454 0
+108100 -32218 0
+100890 -30016 0
+93825 -27856 0
+86946 -25748 0
+80276 -23702 0
+73842 -21730 0
+67666 -19842 0
+61766 -18047 0
+56160 -16351 0
+50857 -14758 0
+45867 -13270 0
+41193 -11887 0
+36837 -10608 0
+32795 -9432.1 0
+29064 -8354.5 0
+25637 -7370.9 0
+22507 -6474.1 0
+19667 -5654.9 0
+17109 -4901.5 0
+14830 -4198.6 0
+12831 -3527.6 0
+11120 -2864.8 0
+9713.8 -2180.4 0
+8646.9 -1436 0
+7974.7 -580.79 0
+7785.1 453.84 0
+8213.5 1763.2 0
+9466.4 3482.7 0
+11858 5808.5 0
+15867 9030.4 0
+22231 13585 0
+32100 20137 0
+47285 29720 0
+70687 43960 0
+107030 65460 0
+164180 98459 0
+255510 150010 0
+404520 232190 0
+654130 366360 0
+1.0875e+06 592490 0
+1.8806e+06 992050 0
+3.4707e+06 1.7637e+06 0
+7.1887e+06 3.7523e+06 0
+8.0547e+06 2.0367e+07 0
+2.1191e+06 1.2218e+07 0
+-878610 1.714e+07 0
+-368170 1.5999e+07 0
+330680 1.2435e+07 0
+123270 1.0788e+07 0
+-124070 1.0423e+07 0
+2403.9 9.6868e+06 0
+125190 8.7106e+06 0
+19599 8.2115e+06 0
+-84530 8.0579e+06 0
+-17801 7.74e+06 0
+59623 7.2277e+06 0
+41650 6.8873e+06 0
+-35783 6.7854e+06 0
+-20504 6.6295e+06 0
+20391 6.3483e+06 0
+25483 6.1173e+06 0
+2573.1 5.9708e+06 0
+-16441 5.8669e+06 0
+-5649.9 5.7321e+06 0
+15566 5.5553e+06 0
+13133 5.4069e+06 0
+-6017.5 5.32e+06 0
+-10476 5.2412e+06 0
+3070.8 5.1268e+06 0
+10806 5.006e+06 0
+3180.1 4.9203e+06 0
+-5438.9 4.8604e+06 0
+-3624.6 4.7936e+06 0
+3338.1 4.7139e+06 0
+5535.5 4.6397e+06 0
+1086.5 4.585e+06 0
+-3490.5 4.5445e+06 0
+-2012.7 4.5018e+06 0
+2827.3 4.4515e+06 0
+3490.3 4.4072e+06 0
+-448.03 4.3794e+06 0
+-2496.4 4.3596e+06 0
+-412.09 4.3363e+06 0
+1785 4.312e+06 0
+1396.2 4.2951e+06 0
+-379.07 4.2876e+06 0
+-1426.6 4.2859e+06 0
+-631.21 4.2849e+06 0
+942.26 4.2836e+06 0
+887.16 4.2873e+06 0
+-708.21 4.3002e+06 0
+-1234.9 4.3181e+06 0
+-267.74 4.3359e+06 0
+184.26 4.3556e+06 0
+-219.45 4.381e+06 0
+-427.05 4.412e+06 0
+-598.08 4.4475e+06 0
+-970.04 4.4864e+06 0
+-810.93 4.5267e+06 0
+-251.81 4.5699e+06 0
+-251.99 4.6196e+06 0
+-807.53 4.675e+06 0
+-1392.7 4.7329e+06 0
+-1612.8 4.7925e+06 0
+-839.58 4.8548e+06 0
+267.65 4.9214e+06 0
+-541.47 4.9949e+06 0
+-2903.9 5.074e+06 0
+-3018.4 5.1522e+06 0
+-164.46 5.2284e+06 0
+1112.8 5.3116e+06 0
+-1748.2 5.4062e+06 0
+-4929.1 5.5039e+06 0
+-3703.9 5.5959e+06 0
+736.65 5.6856e+06 0
+1841.1 5.7854e+06 0
+-3719.8 5.9008e+06 0
+-8718.6 6.0185e+06 0
+-3911.7 6.1211e+06 0
+4686.9 6.2202e+06 0
+1375.5 6.3471e+06 0
+-11581 6.4989e+06 0
+-12583 6.6341e+06 0
+2524.9 6.7451e+06 0
+7640.1 6.8857e+06 0
+-10413 7.0861e+06 0
+-22947 7.2942e+06 0
+-5573.8 7.4654e+06 0
+14619 7.6598e+06 0
+-2025 7.9659e+06 0
+-44482 8.3734e+06 0
+-28326 8.738e+06 0
+52761 9.0515e+06 0
+27994 9.692e+06 0
+-97517 1.0687e+07 0
+-147840 1.1726e+07 0
+12128 1.2612e+07 0
+191010 1.3838e+07 0
+173010 1.5968e+07 0
+-215240 1.9387e+07 0
+-945990 2.4202e+07 0
+-787980 2.8607e+07 0
+1.9158e+06 3.0168e+07 0
+3.1178e+06 3.6397e+07 0
+-8.3246e+06 6.6238e+07 0
+-3.0011e+07 1.0611e+08 0
+-2.9548e+07 2.8354e+07 0
+-1.5355e+07 1.0328e+07 0
+-8.8977e+06 5.7774e+06 0
+-5.4955e+06 3.5566e+06 0
+-3.534e+06 2.2904e+06 0
+-2.3439e+06 1.518e+06 0
+-1.598e+06 1.0272e+06 0
+-1.1199e+06 706250 0
+-808730 491930 0
+-604100 346360 0
+-468720 246080 0
+-378950 176170 0
+-319570 126900 0
+-280600 91838 0
+-255470 66636 0
+-239840 48326 0
+-230820 34838 0
+-226580 24693 0
+-225970 16793 0
+-228350 10298 0
+-233440 4540.4 0
+-241210 -1016 0
+-251800 -6804.7 0
+-265510 -13183 0
+-282740 -20465 0
+-304040 -28969 0
+-330070 -39050 0
+-361610 -51118 0
+-399550 -65638 0
+-444880 -83104 0
+-498580 -104040 0
+-561640 -129030 0
+-635080 -158700 0
+-719880 -193780 0
+-817070 -234910 0
+-927640 -282500 0
+-1.0526e+06 -336650 0
+-1.1929e+06 -397150 0
+-1.3494e+06 -463950 0
+-1.5233e+06 -537580 0
+-1.7154e+06 -619350 0
+-1.9266e+06 -710880 0
+-2.1573e+06 -813040 0
+-2.4073e+06 -924730 0
+-2.6752e+06 -1.0428e+06 0
+-2.9592e+06 -1.1633e+06 0
+-3.2576e+06 -1.2843e+06 0
+-3.5695e+06 -1.4078e+06 0
+-3.8949e+06 -1.5398e+06 0
+-4.2343e+06 -1.6868e+06 0
+-4.5879e+06 -1.8508e+06 0
+-4.9546e+06 -2.0264e+06 0
+-5.3323e+06 -2.2024e+06 0
+-5.7186e+06 -2.3679e+06 0
+-6.1115e+06 -2.5209e+06 0
+-6.5094e+06 -2.6702e+06 0
+-6.9089e+06 -2.8307e+06 0
+-7.3036e+06 -3.0115e+06 0
+-7.6833e+06 -3.2069e+06 0
+-8.0371e+06 -3.3953e+06 0
+-8.3578e+06 -3.5512e+06 0
+-8.6466e+06 -3.6623e+06 0
+-8.9133e+06 -3.7406e+06 0
+-9.1711e+06 -3.8172e+06 0
+-9.4281e+06 -3.9242e+06 0
+-9.6811e+06 -4.0716e+06 0
+-9.9149e+06 -4.2379e+06 0
+-1.0109e+07 -4.3803e+06 0
+-1.0249e+07 -4.4598e+06 0
+-1.0335e+07 -4.4663e+06 0
+-1.0378e+07 -4.4256e+06 0
+-1.0396e+07 -4.3834e+06 0
+-1.04e+07 -4.3769e+06 0
+-1.0385e+07 -4.411e+06 0
+-1.0337e+07 -4.455e+06 0
+-1.0239e+07 -4.463e+06 0
+-1.0084e+07 -4.4022e+06 0
+-9.8825e+06 -4.2742e+06 0
+-9.6554e+06 -4.1138e+06 0
+-9.4271e+06 -3.9681e+06 0
+-9.2112e+06 -3.869e+06 0
+-9.0047e+06 -3.8163e+06 0
+-8.7908e+06 -3.7787e+06 0
+-8.5491e+06 -3.7136e+06 0
+-8.2665e+06 -3.5908e+06 0
+-7.9446e+06 -3.408e+06 0
+-7.5994e+06 -3.1911e+06 0
+-7.2545e+06 -2.9798e+06 0
+-6.9316e+06 -2.8084e+06 0
+-6.6434e+06 -2.691e+06 0
+-6.3908e+06 -2.6172e+06 0
+-6.1652e+06 -2.5593e+06 0
+-5.9538e+06 -2.4847e+06 0
+-5.7457e+06 -2.3693e+06 0
+-5.5353e+06 -2.2051e+06 0
+-5.3241e+06 -2.0009e+06 0
+-5.1192e+06 -1.7771e+06 0
+-4.9305e+06 -1.5581e+06 0
+-4.7685e+06 -1.3643e+06 0
+-4.6418e+06 -1.2077e+06 0
+-4.5565e+06 -1.0898e+06 0
+754720 -252200 0
+748260 -250450 0
+740470 -247840 0
+731340 -244300 0
+720900 -239840 0
+709240 -234560 0
+696500 -228600 0
+682810 -222170 0
+668350 -215510 0
+653250 -208840 0
+637620 -202350 0
+621540 -196130 0
+605040 -190210 0
+588140 -184510 0
+570840 -178890 0
+553170 -173220 0
+535180 -167370 0
+516970 -161290 0
+498680 -155010 0
+480450 -148640 0
+462460 -142340 0
+444820 -136250 0
+427650 -130510 0
+411020 -125160 0
+394960 -120180 0
+379470 -115510 0
+364560 -111080 0
+350240 -106830 0
+336510 -102720 0
+323390 -98769 0
+310880 -95014 0
+298980 -91486 0
+287690 -88203 0
+276960 -85153 0
+266770 -82300 0
+257060 -79595 0
+247780 -76990 0
+238880 -74451 0
+230320 -71961 0
+222050 -69519 0
+214020 -67128 0
+206190 -64792 0
+198530 -62507 0
+191000 -60263 0
+183560 -58043 0
+176180 -55833 0
+168860 -53620 0
+161570 -51396 0
+154300 -49158 0
+147060 -46907 0
+139850 -44643 0
+132660 -42371 0
+125520 -40097 0
+118420 -37828 0
+111400 -35573 0
+104470 -33341 0
+97651 -31141 0
+90970 -28982 0
+84452 -26869 0
+78120 -24810 0
+71998 -22813 0
+66107 -20885 0
+60466 -19037 0
+55093 -17278 0
+50000 -15614 0
+45198 -14051 0
+40692 -12594 0
+36485 -11243 0
+32577 -9997.2 0
+28963 -8854.5 0
+25639 -7812 0
+22594 -6865.8 0
+19820 -6011 0
+17305 -5241.7 0
+15037 -4550.6 0
+13006 -3928.9 0
+11201 -3365.9 0
+9614.7 -2848.7 0
+8243.8 -2362.4 0
+7090.8 -1888.7 0
+6166.8 -1405.6 0
+5494.5 -885.79 0
+5113.6 -294.16 0
+5087.4 415.39 0
+5513.9 1305.2 0
+6541.7 2461.7 0
+8395.4 4007.6 0
+11414 6120.3 0
+16117 9060.4 0
+23299 13217 0
+34205 19176 0
+50802 27836 0
+76258 40577 0
+115770 59551 0
+178080 88136 0
+278280 131660 0
+443410 198570 0
+724210 302180 0
+1.2217e+06 463350 0
+2.1492e+06 714680 0
+3.9451e+06 1.0608e+06 0
+1.9197e+07 -2.3169e+06 0
+-4.4109e+06 5.1685e+07 0
+7.2043e+06 1.7836e+07 0
+2.7412e+06 8.9966e+06 0
+-1.1737e+06 1.2506e+07 0
+-198430 1.2861e+07 0
+824270 1.0076e+07 0
+118910 8.9189e+06 0
+-393720 9.2665e+06 0
+96945 8.8572e+06 0
+470290 7.6913e+06 0
+109920 7.1865e+06 0
+-247350 7.4101e+06 0
+-58581 7.3261e+06 0
+235890 6.7389e+06 0
+131500 6.31e+06 0
+-68089 6.3256e+06 0
+-62161 6.3066e+06 0
+60243 6.0677e+06 0
+114920 5.7712e+06 0
+35938 5.6097e+06 0
+-51612 5.5899e+06 0
+-21020 5.5283e+06 0
+61230 5.3358e+06 0
+60215 5.1479e+06 0
+-9263.2 5.0837e+06 0
+-33122 5.0653e+06 0
+10268 4.9756e+06 0
+41983 4.8382e+06 0
+21754 4.7438e+06 0
+-10808 4.7077e+06 0
+-12961 4.6758e+06 0
+10300 4.6103e+06 0
+24636 4.5276e+06 0
+10842 4.4708e+06 0
+-10289 4.4522e+06 0
+-8002.2 4.4353e+06 0
+10404 4.391e+06 0
+14131 4.3422e+06 0
+417.05 4.3204e+06 0
+-7881.6 4.3178e+06 0
+-2740.7 4.3104e+06 0
+4388.8 4.293e+06 0
+4557.3 4.2766e+06 0
+-1614.2 4.2739e+06 0
+-6913.7 4.2865e+06 0
+-4463.4 4.3e+06 0
+983.79 4.3039e+06 0
+-742.34 4.3094e+06 0
+-6562.9 4.3298e+06 0
+-6569.4 4.3591e+06 0
+-3549.8 4.3874e+06 0
+-5220.3 4.415e+06 0
+-8189.6 4.4451e+06 0
+-7159.9 4.4804e+06 0
+-5819.8 4.5254e+06 0
+-7993.6 4.5768e+06 0
+-11379 4.6255e+06 0
+-12599 4.6728e+06 0
+-10080 4.7267e+06 0
+-6930.6 4.7896e+06 0
+-10861 4.8593e+06 0
+-20318 4.9315e+06 0
+-20748 4.998e+06 0
+-9730.7 5.0619e+06 0
+-6779.7 5.1417e+06 0
+-21133 5.2399e+06 0
+-33154 5.3316e+06 0
+-25093 5.4047e+06 0
+-9534.7 5.4813e+06 0
+-12181 5.5852e+06 0
+-35766 5.7079e+06 0
+-50413 5.8154e+06 0
+-31079 5.8914e+06 0
+-5161.4 5.9748e+06 0
+-24270 6.1153e+06 0
+-73097 6.2796e+06 0
+-74330 6.3827e+06 0
+-20729 6.4415e+06 0
+-10203 6.5751e+06 0
+-84204 6.8021e+06 0
+-134340 6.983e+06 0
+-75061 7.0553e+06 0
+-12756 7.1757e+06 0
+-87689 7.4806e+06 0
+-212820 7.8341e+06 0
+-160950 8.0027e+06 0
+45330 8.0993e+06 0
+-38053 8.6527e+06 0
+-471390 9.5606e+06 0
+-506260 1.0018e+07 0
+41350 1.0064e+07 0
+311450 1.0889e+07 0
+-353780 1.2971e+07 0
+-1.3518e+06 1.547e+07 0
+-1.9263e+06 1.7529e+07 0
+-842920 1.8349e+07 0
+2.7397e+06 1.8247e+07 0
+2.6783e+06 2.5085e+07 0
+-1.2562e+07 4.8292e+07 0
+-2.7015e+07 6.3394e+07 0
+1.5833e+07 1.6271e+07 0
+-7.6952e+07 1.3132e+08 0
+-1.7518e+07 4.1068e+06 0
+-1.0088e+07 3.8718e+06 0
+-6.1184e+06 2.6404e+06 0
+-3.889e+06 1.8114e+06 0
+-2.5674e+06 1.2538e+06 0
+-1.7507e+06 876030 0
+-1.2308e+06 618000 0
+-892470 440100 0
+-668830 316240 0
+-519270 229160 0
+-418410 167360 0
+-350030 123090 0
+-303560 91096 0
+-271970 67760 0
+-250610 50590 0
+-236310 37843 0
+-226980 28278 0
+-221240 20989 0
+-218200 15288 0
+-217370 10624 0
+-218490 6542.6 0
+-221510 2659.1 0
+-226520 -1347.5 0
+-233730 -5745 0
+-243420 -10766 0
+-256000 -16640 0
+-271990 -23623 0
+-292010 -32029 0
+-316830 -42235 0
+-347280 -54673 0
+-384270 -69835 0
+-428720 -88278 0
+-481590 -110640 0
+-543860 -137590 0
+-616580 -169760 0
+-700780 -207570 0
+-797500 -251110 0
+-907730 -300230 0
+-1.0325e+06 -354860 0
+-1.1727e+06 -415470 0
+-1.3297e+06 -483310 0
+-1.5045e+06 -560060 0
+-1.6981e+06 -646890 0
+-1.9107e+06 -743320 0
+-2.1419e+06 -846870 0
+-2.3902e+06 -954110 0
+-2.6543e+06 -1.063e+06 0
+-2.9334e+06 -1.1747e+06 0
+-3.2279e+06 -1.2945e+06 0
+-3.5393e+06 -1.4283e+06 0
+-3.8688e+06 -1.5784e+06 0
+-4.2164e+06 -1.7407e+06 0
+-4.5803e+06 -1.905e+06 0
+-4.9575e+06 -2.0614e+06 0
+-5.3444e+06 -2.2076e+06 0
+-5.7379e+06 -2.3525e+06 0
+-6.1345e+06 -2.5115e+06 0
+-6.5292e+06 -2.6959e+06 0
+-6.9147e+06 -2.9017e+06 0
+-7.2826e+06 -3.1077e+06 0
+-7.6267e+06 -3.2854e+06 0
+-7.9465e+06 -3.4168e+06 0
+-8.2483e+06 -3.5081e+06 0
+-8.542e+06 -3.5892e+06 0
+-8.8344e+06 -3.6963e+06 0
+-9.123e+06 -3.8485e+06 0
+-9.3944e+06 -4.0326e+06 0
+-9.6298e+06 -4.2084e+06 0
+-9.8139e+06 -4.3316e+06 0
+-9.9428e+06 -4.3817e+06 0
+-1.0025e+07 -4.3746e+06 0
+-1.0075e+07 -4.3539e+06 0
+-1.0103e+07 -4.3626e+06 0
+-1.0108e+07 -4.4162e+06 0
+-1.0076e+07 -4.492e+06 0
+-9.9934e+06 -4.5438e+06 0
+-9.8516e+06 -4.5299e+06 0
+-9.6583e+06 -4.4393e+06 0
+-9.4331e+06 -4.2984e+06 0
+-9.1979e+06 -4.1549e+06 0
+-8.9654e+06 -4.0507e+06 0
+-8.7325e+06 -3.9983e+06 0
+-8.4831e+06 -3.9763e+06 0
+-8.1975e+06 -3.9422e+06 0
+-7.8645e+06 -3.8573e+06 0
+-7.4878e+06 -3.7067e+06 0
+-7.0856e+06 -3.5054e+06 0
+-6.6832e+06 -3.2893e+06 0
+-6.3028e+06 -3.0969e+06 0
+-5.9557e+06 -2.9514e+06 0
+-5.6405e+06 -2.8525e+06 0
+-5.3466e+06 -2.7787e+06 0
+-5.0606e+06 -2.6988e+06 0
+-4.7729e+06 -2.5851e+06 0
+-4.4815e+06 -2.4235e+06 0
+-4.1918e+06 -2.2172e+06 0
+-3.9139e+06 -1.9834e+06 0
+-3.6588e+06 -1.7458e+06 0
+-3.4353e+06 -1.5267e+06 0
+-3.2484e+06 -1.3404e+06 0
+-3.0998e+06 -1.1909e+06 0
+784640 -245220 0
+773890 -242480 0
+761870 -238830 0
+748600 -234270 0
+734150 -228860 0
+718660 -222740 0
+702320 -216080 0
+685310 -209090 0
+667810 -202010 0
+649960 -195030 0
+631860 -188290 0
+613550 -181860 0
+595030 -175720 0
+576270 -169790 0
+557250 -163950 0
+537980 -158060 0
+518530 -152050 0
+498990 -145890 0
+479500 -139660 0
+460240 -133470 0
+441350 -127470 0
+422980 -121790 0
+405200 -116510 0
+388070 -111660 0
+371610 -107200 0
+355800 -103040 0
+340630 -99112 0
+326100 -95355 0
+312210 -91750 0
+298950 -88310 0
+286340 -85064 0
+274360 -82037 0
+262990 -79234 0
+252190 -76634 0
+241920 -74193 0
+232120 -71861 0
+222750 -69590 0
+213770 -67349 0
+205120 -65124 0
+196780 -62914 0
+188710 -60724 0
+180860 -58557 0
+173200 -56411 0
+165700 -54278 0
+158330 -52148 0
+151060 -50010 0
+143880 -47859 0
+136790 -45690 0
+129770 -43505 0
+122830 -41306 0
+115980 -39100 0
+109220 -36891 0
+102560 -34690 0
+96024 -32505 0
+89618 -30348 0
+83363 -28230 0
+77279 -26160 0
+71385 -24146 0
+65699 -22196 0
+60239 -20315 0
+55022 -18509 0
+50061 -16786 0
+45369 -15153 0
+40953 -13615 0
+36820 -12179 0
+32970 -10846 0
+29403 -9618.1 0
+26114 -8493.3 0
+23096 -7469.1 0
+20341 -6541.5 0
+17838 -5706 0
+15574 -4957.6 0
+13538 -4290.6 0
+11715 -3698.6 0
+10093 -3174.4 0
+8657.7 -2709.6 0
+7398.7 -2295.1 0
+6307 -1920.1 0
+5377.1 -1572.9 0
+4608.5 -1239.6 0
+4007.4 -904.34 0
+3588.7 -547.97 0
+3379.6 -146.9 0
+3423.9 328.86 0
+3789.8 918.62 0
+4579.7 1675.3 0
+5946.6 2671.8 0
+8119.5 4010.7 0
+11442 5838 0
+16433 8364.7 0
+23890 11897 0
+35044 16880 0
+51830 23964 0
+77328 34081 0
+116520 48551 0
+177570 69141 0
+274070 97992 0
+428770 137080 0
+679650 186810 0
+1.0921e+06 245850 0
+1.8438e+06 357420 0
+-2.6616e+06 4.1171e+06 0
+4.1597e+07 3.1745e+07 0
+-5.4125e+06 1.2152e+07 0
+-2.3405e+06 2.6182e+07 0
+4.3713e+06 1.425e+07 0
+1.8504e+06 8.6023e+06 0
+-609520 1.0584e+07 0
+416720 1.0655e+07 0
+1.1427e+06 8.4093e+06 0
+132970 7.6949e+06 0
+-506750 8.4351e+06 0
+135820 8.2638e+06 0
+673870 7.0595e+06 0
+205040 6.5014e+06 0
+-262480 6.8617e+06 0
+-69347 6.9429e+06 0
+287230 6.3758e+06 0
+212760 5.9019e+06 0
+-49082 5.9152e+06 0
+-101800 5.9982e+06 0
+59957 5.8308e+06 0
+171630 5.5042e+06 0
+77419 5.3085e+06 0
+-62225 5.3297e+06 0
+-37259 5.3344e+06 0
+83442 5.1558e+06 0
+98948 4.9438e+06 0
+6429.3 4.8791e+06 0
+-39635 4.8957e+06 0
+8677 4.8406e+06 0
+59177 4.71e+06 0
+45194 4.6044e+06 0
+-2589.7 4.5717e+06 0
+-20214 4.5686e+06 0
+9793.7 4.5285e+06 0
+39371 4.4454e+06 0
+22676 4.3826e+06 0
+-13051 4.3764e+06 0
+-13825 4.3807e+06 0
+12279 4.3489e+06 0
+19009 4.3035e+06 0
+701.91 4.2839e+06 0
+-13118 4.2894e+06 0
+-9384.7 4.2971e+06 0
+1076.8 4.2926e+06 0
+2856.3 4.2799e+06 0
+-8700.6 4.2798e+06 0
+-18662 4.302e+06 0
+-12738 4.3271e+06 0
+-4536.8 4.3396e+06 0
+-12288 4.3532e+06 0
+-23664 4.38e+06 0
+-20539 4.4134e+06 0
+-13595 4.4496e+06 0
+-19032 4.4906e+06 0
+-29589 4.5307e+06 0
+-31441 4.5697e+06 0
+-25366 4.6175e+06 0
+-22535 4.676e+06 0
+-32143 4.7382e+06 0
+-47176 4.8002e+06 0
+-46491 4.8578e+06 0
+-29971 4.9147e+06 0
+-29527 4.9905e+06 0
+-56412 5.0867e+06 0
+-73707 5.1695e+06 0
+-56084 5.2261e+06 0
+-35346 5.2956e+06 0
+-51274 5.4063e+06 0
+-90334 5.5286e+06 0
+-102900 5.6177e+06 0
+-71383 5.6756e+06 0
+-46064 5.7592e+06 0
+-85760 5.9101e+06 0
+-153670 6.0705e+06 0
+-147090 6.1451e+06 0
+-73626 6.1776e+06 0
+-75293 6.3191e+06 0
+-191790 6.5623e+06 0
+-257760 6.7135e+06 0
+-171380 6.7242e+06 0
+-99659 6.8166e+06 0
+-223470 7.1266e+06 0
+-401800 7.4397e+06 0
+-340860 7.4969e+06 0
+-116240 7.4924e+06 0
+-233550 7.9555e+06 0
+-728700 8.7306e+06 0
+-739070 8.9001e+06 0
+-102070 8.6637e+06 0
+-74553 9.4371e+06 0
+-1.2266e+06 1.1362e+07 0
+-2.0881e+06 1.2713e+07 0
+-1.6013e+06 1.2778e+07 0
+-336450 1.2831e+07 0
+621310 1.4484e+07 0
+-1.7747e+06 2.0501e+07 0
+-1.1042e+07 3.2236e+07 0
+-1.544e+07 3.4807e+07 0
+8.8338e+06 1.2137e+07 0
+1.6136e+07 2.9446e+07 0
+-1.5998e+08 2.2492e+08 0
+8.968e+06 -3.5753e+06 0
+-8.7182e+06 2.785e+06 0
+-5.5235e+06 1.2913e+06 0
+-3.6792e+06 1.0307e+06 0
+-2.5043e+06 812840 0
+-1.7444e+06 621770 0
+-1.2467e+06 467520 0
+-916280 349080 0
+-693980 260370 0
+-542730 194650 0
+-438840 146100 0
+-366910 110180 0
+-316790 83501 0
+-281680 63559 0
+-256980 48551 0
+-239540 37175 0
+-227210 28492 0
+-218500 21819 0
+-212440 16641 0
+-208350 12553 0
+-205860 9214.4 0
+-204750 6323.2 0
+-204980 3609.6 0
+-206580 837 0
+-209680 -2195 0
+-214490 -5656.1 0
+-221270 -9704.3 0
+-230420 -14515 0
+-242400 -20310 0
+-257810 -27376 0
+-277340 -36076 0
+-301750 -46850 0
+-331870 -60215 0
+-368550 -76772 0
+-412730 -97158 0
+-465380 -121960 0
+-527500 -151580 0
+-600120 -186120 0
+-684190 -225460 0
+-780700 -269530 0
+-890670 -318710 0
+-1.0153e+06 -374140 0
+-1.156e+06 -437430 0
+-1.3139e+06 -509920 0
+-1.4899e+06 -591640 0
+-1.6838e+06 -680800 0
+-1.8948e+06 -774520 0
+-2.1218e+06 -870730 0
+-2.3645e+06 -970110 0
+-2.6236e+06 -1.0767e+06 0
+-2.9008e+06 -1.1956e+06 0
+-3.1982e+06 -1.3297e+06 0
+-3.5163e+06 -1.4759e+06 0
+-3.8532e+06 -1.6261e+06 0
+-4.2051e+06 -1.7716e+06 0
+-4.5675e+06 -1.9103e+06 0
+-4.9365e+06 -2.0505e+06 0
+-5.3098e+06 -2.2068e+06 0
+-5.6851e+06 -2.3912e+06 0
+-6.0588e+06 -2.601e+06 0
+-6.4254e+06 -2.8162e+06 0
+-6.7788e+06 -3.0075e+06 0
+-7.1156e+06 -3.1536e+06 0
+-7.4374e+06 -3.2565e+06 0
+-7.7492e+06 -3.3436e+06 0
+-8.0563e+06 -3.4531e+06 0
+-8.3579e+06 -3.6105e+06 0
+-8.6447e+06 -3.8098e+06 0
+-8.9013e+06 -4.0145e+06 0
+-9.1128e+06 -4.1777e+06 0
+-9.2723e+06 -4.2702e+06 0
+-9.3834e+06 -4.2997e+06 0
+-9.457e+06 -4.3055e+06 0
+-9.5027e+06 -4.3342e+06 0
+-9.5215e+06 -4.4098e+06 0
+-9.5047e+06 -4.5171e+06 0
+-9.4394e+06 -4.6111e+06 0
+-9.3177e+06 -4.6434e+06 0
+-9.1434e+06 -4.5924e+06 0
+-8.9315e+06 -4.4765e+06 0
+-8.7001e+06 -4.3433e+06 0
+-8.4606e+06 -4.2423e+06 0
+-8.2112e+06 -4.198e+06 0
+-7.9388e+06 -4.1969e+06 0
+-7.6272e+06 -4.1968e+06 0
+-7.2679e+06 -4.1509e+06 0
+-6.8669e+06 -4.0317e+06 0
+-6.4431e+06 -3.8445e+06 0
+-6.0215e+06 -3.6223e+06 0
+-5.6223e+06 -3.4087e+06 0
+-5.2543e+06 -3.2373e+06 0
+-4.9128e+06 -3.118e+06 0
+-4.585e+06 -3.0347e+06 0
+-4.2573e+06 -2.9556e+06 0
+-3.9228e+06 -2.8471e+06 0
+-3.5843e+06 -2.6874e+06 0
+-3.253e+06 -2.474e+06 0
+-2.9438e+06 -2.2218e+06 0
+-2.6697e+06 -1.9565e+06 0
+-2.4377e+06 -1.705e+06 0
+-2.2478e+06 -1.4866e+06 0
+-2.0946e+06 -1.3087e+06 0
+809690 -234550 0
+794320 -230880 0
+777820 -226300 0
+760240 -220850 0
+741710 -214660 0
+722410 -207910 0
+702560 -200790 0
+682390 -193510 0
+662070 -186280 0
+641740 -179240 0
+621460 -172490 0
+601240 -166040 0
+581040 -159860 0
+560790 -153850 0
+540440 -147890 0
+520000 -141900 0
+499510 -135830 0
+479080 -129720 0
+458860 -123650 0
+439010 -117760 0
+419680 -112180 0
+400990 -107010 0
+383020 -102290 0
+365770 -98015 0
+349240 -94114 0
+333420 -90504 0
+318270 -87105 0
+303770 -83870 0
+289930 -80785 0
+276740 -77865 0
+264200 -75134 0
+252280 -72608 0
+240960 -70280 0
+230200 -68120 0
+219950 -66080 0
+210160 -64109 0
+200780 -62164 0
+191780 -60218 0
+183120 -58261 0
+174770 -56293 0
+166710 -54318 0
+158890 -52339 0
+151290 -50355 0
+143870 -48361 0
+136620 -46350 0
+129520 -44318 0
+122550 -42264 0
+115710 -40190 0
+109010 -38099 0
+102440 -35998 0
+96006 -33895 0
+89724 -31796 0
+83601 -29714 0
+77649 -27658 0
+71881 -25642 0
+66312 -23677 0
+60955 -21772 0
+55823 -19936 0
+50930 -18173 0
+46285 -16490 0
+41898 -14890 0
+37776 -13380 0
+33924 -11964 0
+30343 -10645 0
+27031 -9426.8 0
+23985 -8309.4 0
+21196 -7291.4 0
+18656 -6369.9 0
+16354 -5540.7 0
+14278 -4798.8 0
+12415 -4139 0
+10751 -3555.5 0
+9273.2 -3042.4 0
+7966.9 -2593.1 0
+6818.8 -2200.8 0
+5816 -1857.9 0
+4947.2 -1556.5 0
+4203.6 -1288.1 0
+3579.1 -1043.4 0
+3071.6 -812.11 0
+2683.9 -582.95 0
+2425.5 -342.79 0
+2314.1 -76.112 0
+2379.2 236.06 0
+2666.2 617.62 0
+3242.5 1099.6 0
+4208.1 1723 0
+5709.4 2543.7 0
+7961.8 3637.9 0
+11284 5110.5 0
+16151 7105.9 0
+23274 9820.1 0
+33728 13513 0
+49141 18511 0
+71980 25183 0
+105950 33842 0
+156450 44483 0
+230850 56243 0
+337670 66680 0
+481300 72377 0
+621500 66892 0
+3.7652e+06 -502090 0
+-2.5159e+06 1.2765e+07 0
+1.4983e+07 5.7739e+07 0
+1.4361e+07 5.6698e+06 0
+-1.6182e+06 1.0006e+07 0
+-533250 1.6738e+07 0
+2.8254e+06 1.1174e+07 0
+1.024e+06 8.1798e+06 0
+-481580 9.6399e+06 0
+641920 9.5163e+06 0
+1.3566e+06 7.4518e+06 0
+273900 6.7952e+06 0
+-487640 7.6979e+06 0
+120500 7.7674e+06 0
+716740 6.6339e+06 0
+330960 6.0302e+06 0
+-217800 6.3766e+06 0
+-90636 6.5838e+06 0
+289580 6.0983e+06 0
+277970 5.6048e+06 0
+1020.2 5.5626e+06 0
+-119960 5.6979e+06 0
+35065 5.6192e+06 0
+197910 5.2989e+06 0
+120720 5.0626e+06 0
+-54288 5.0899e+06 0
+-54511 5.1471e+06 0
+81083 5.0046e+06 0
+121180 4.7883e+06 0
+29719 4.7082e+06 0
+-38361 4.7359e+06 0
+-4958.2 4.7189e+06 0
+59287 4.6131e+06 0
+64279 4.4984e+06 0
+7876.7 4.457e+06 0
+-30655 4.4752e+06 0
+-26.182 4.463e+06 0
+44116 4.3869e+06 0
+28629 4.3214e+06 0
+-18003 4.3206e+06 0
+-24676 4.3385e+06 0
+4133.1 4.3222e+06 0
+15446 4.287e+06 0
+-3825.4 4.2695e+06 0
+-25678 4.2785e+06 0
+-26451 4.2987e+06 0
+-10048 4.3067e+06 0
+-5037.3 4.3004e+06 0
+-26063 4.3073e+06 0
+-43697 4.3379e+06 0
+-31975 4.3677e+06 0
+-18018 4.3871e+06 0
+-32819 4.4147e+06 0
+-54990 4.4527e+06 0
+-53218 4.4881e+06 0
+-39050 4.5261e+06 0
+-40754 4.5763e+06 0
+-61277 4.6318e+06 0
+-78808 4.6847e+06 0
+-72556 4.7342e+06 0
+-53728 4.7859e+06 0
+-61261 4.8565e+06 0
+-99712 4.9466e+06 0
+-117130 5.0197e+06 0
+-88859 5.0636e+06 0
+-68987 5.1286e+06 0
+-104150 5.245e+06 0
+-154430 5.3622e+06 0
+-155040 5.4287e+06 0
+-113800 5.4745e+06 0
+-103860 5.5689e+06 0
+-166290 5.7263e+06 0
+-236450 5.8686e+06 0
+-215270 5.9183e+06 0
+-139310 5.9461e+06 0
+-166450 6.1032e+06 0
+-311210 6.349e+06 0
+-371440 6.4646e+06 0
+-262910 6.4371e+06 0
+-206500 6.5347e+06 0
+-375110 6.8568e+06 0
+-568170 7.1248e+06 0
+-496450 7.1152e+06 0
+-291730 7.0852e+06 0
+-434940 7.4898e+06 0
+-927880 8.1303e+06 0
+-970790 8.1843e+06 0
+-430660 7.898e+06 0
+-538320 8.5909e+06 0
+-1.7346e+06 1.0209e+07 0
+-2.2248e+06 1.0692e+07 0
+-1.2061e+06 9.9625e+06 0
+-471010 1.0383e+07 0
+-1.5929e+06 1.3135e+07 0
+-4.3718e+06 1.7224e+07 0
+-8.1546e+06 2.1192e+07 0
+-7.5853e+06 1.9977e+07 0
+3.6351e+06 1.1943e+07 0
+1.4074e+06 2.7419e+07 0
+-5.6413e+07 9.0623e+07 0
+-6.2975e+07 6.0253e+07 0
+1.1899e+07 8.1409e+07 0
+-1.5994e+07 3.8284e+07 0
+-3.3699e+06 20379 0
+-2.7176e+06 347780 0
+-2.0418e+06 352910 0
+-1.5171e+06 328270 0
+-1.134e+06 283040 0
+-860800 232630 0
+-667710 186100 0
+-531300 146770 0
+-434640 114990 0
+-365830 89882 0
+-316580 70266 0
+-281130 54988 0
+-255470 43073 0
+-236780 33742 0
+-223070 26402 0
+-212940 20603 0
+-205390 16010 0
+-199730 12362 0
+-195510 9440.9 0
+-192430 7049.5 0
+-190320 4995.6 0
+-189140 3091.8 0
+-188900 1163.4 0
+-189690 -941.88 0
+-191610 -3349.4 0
+-194880 -6166.6 0
+-199720 -9505 0
+-206480 -13509 0
+-215600 -18385 0
+-227620 -24419 0
+-243140 -31986 0
+-262870 -41555 0
+-287540 -53677 0
+-317990 -68943 0
+-355070 -87896 0
+-399690 -110910 0
+-452780 -138100 0
+-515210 -169350 0
+-587920 -204580 0
+-671900 -244080 0
+-768380 -288800 0
+-878770 -340250 0
+-1.0045e+06 -399830 0
+-1.1466e+06 -467970 0
+-1.3053e+06 -543540 0
+-1.4803e+06 -624220 0
+-1.6709e+06 -708010 0
+-1.8767e+06 -795010 0
+-2.0987e+06 -888190 0
+-2.339e+06 -992030 0
+-2.5996e+06 -1.1095e+06 0
+-2.8811e+06 -1.239e+06 0
+-3.1816e+06 -1.3746e+06 0
+-3.4967e+06 -1.5092e+06 0
+-3.8216e+06 -1.6409e+06 0
+-4.1531e+06 -1.7762e+06 0
+-4.4906e+06 -1.9282e+06 0
+-4.8351e+06 -2.1079e+06 0
+-5.1864e+06 -2.3144e+06 0
+-5.5412e+06 -2.53e+06 0
+-5.8927e+06 -2.7272e+06 0
+-6.2339e+06 -2.8838e+06 0
+-6.5608e+06 -2.9982e+06 0
+-6.8744e+06 -3.0944e+06 0
+-7.1788e+06 -3.2096e+06 0
+-7.4764e+06 -3.3725e+06 0
+-7.7635e+06 -3.5831e+06 0
+-8.029e+06 -3.8099e+06 0
+-8.2587e+06 -4.0062e+06 0
+-8.4425e+06 -4.138e+06 0
+-8.5786e+06 -4.2048e+06 0
+-8.674e+06 -4.2407e+06 0
+-8.7381e+06 -4.2924e+06 0
+-8.7756e+06 -4.3896e+06 0
+-8.7827e+06 -4.5244e+06 0
+-8.749e+06 -4.6551e+06 0
+-8.6649e+06 -4.7301e+06 0
+-8.5289e+06 -4.7199e+06 0
+-8.3491e+06 -4.6349e+06 0
+-8.1398e+06 -4.5203e+06 0
+-7.9125e+06 -4.4304e+06 0
+-7.67e+06 -4.3983e+06 0
+-7.405e+06 -4.4182e+06 0
+-7.1064e+06 -4.449e+06 0
+-6.7675e+06 -4.4374e+06 0
+-6.3927e+06 -4.3459e+06 0
+-5.9981e+06 -4.1707e+06 0
+-5.6051e+06 -3.9423e+06 0
+-5.2318e+06 -3.7093e+06 0
+-4.886e+06 -3.515e+06 0
+-4.5631e+06 -3.3787e+06 0
+-4.2508e+06 -3.2897e+06 0
+-3.9366e+06 -3.2142e+06 0
+-3.615e+06 -3.1119e+06 0
+-3.291e+06 -2.9527e+06 0
+-2.9783e+06 -2.7275e+06 0
+-2.6941e+06 -2.45e+06 0
+-2.4528e+06 -2.1494e+06 0
+-2.2609e+06 -1.859e+06 0
+-2.1158e+06 -1.6051e+06 0
+-2.0076e+06 -1.4e+06 0
+826480 -220040 0
+806440 -215590 0
+785500 -210230 0
+763740 -204100 0
+741340 -197370 0
+718500 -190250 0
+695490 -182950 0
+672530 -175680 0
+649780 -168580 0
+627370 -161760 0
+605330 -155240 0
+583620 -149000 0
+562150 -142950 0
+540840 -137000 0
+519620 -131070 0
+498470 -125100 0
+477440 -119110 0
+456630 -113170 0
+436180 -107400 0
+416250 -101920 0
+396970 -96856 0
+378420 -92271 0
+360660 -88171 0
+343670 -84508 0
+327440 -81197 0
+311910 -78146 0
+297060 -75283 0
+282860 -72569 0
+269310 -69999 0
+256380 -67591 0
+244090 -65363 0
+232390 -63321 0
+221270 -61448 0
+210670 -59705 0
+200550 -58044 0
+190870 -56415 0
+181570 -54781 0
+172630 -53121 0
+164030 -51429 0
+155740 -49705 0
+147730 -47955 0
+140000 -46180 0
+132500 -44378 0
+125220 -42548 0
+118140 -40686 0
+111240 -38793 0
+104530 -36873 0
+97988 -34931 0
+91629 -32975 0
+85453 -31013 0
+79467 -29053 0
+73678 -27104 0
+68094 -25179 0
+62725 -23289 0
+57579 -21447 0
+52666 -19663 0
+47993 -17948 0
+43568 -16307 0
+39396 -14746 0
+35482 -13269 0
+31829 -11879 0
+28438 -10579 0
+25307 -9372.8 0
+22432 -8261.4 0
+19805 -7245.3 0
+17418 -6323 0
+15259 -5491.7 0
+13317 -4747.3 0
+11578 -4084.9 0
+10029 -3499.3 0
+8655.6 -2984.8 0
+7444.5 -2535.6 0
+6382 -2145.7 0
+5454.7 -1808.9 0
+4649.7 -1518.7 0
+3955.3 -1268.7 0
+3361.2 -1052 0
+2859 -861.86 0
+2443 -691.26 0
+2110.3 -532.72 0
+1861.8 -378.22 0
+1702.9 -218.94 0
+1645 -44.833 0
+1706.9 155.79 0
+1917.6 396.97 0
+2320 696.06 0
+2976.1 1075 0
+3974.9 1562.1 0
+5444.4 2193.8 0
+7567.7 3017.3 0
+10608 4092.4 0
+14944 5491.5 0
+21116 7295.7 0
+29886 9578.3 0
+42305 12367 0
+59743 15562 0
+83794 18789 0
+115850 21209 0
+156090 21494 0
+203810 18675 0
+284910 18983 0
+-784540 1.3349e+06 0
+7.6466e+06 1.4533e+07 0
+1.7339e+07 2.6467e+07 0
+-5.9312e+06 1.9437e+07 0
+7.4904e+06 2.8032e+07 0
+7.0435e+06 7.6489e+06 0
+-45891 9.3601e+06 0
+647210 1.2343e+07 0
+2.3655e+06 9.0116e+06 0
+714410 7.3709e+06 0
+-528720 8.7906e+06 0
+554350 8.829e+06 0
+1.3754e+06 6.9666e+06 0
+459240 6.1892e+06 0
+-416430 7.0516e+06 0
+67726 7.3123e+06 0
+700240 6.3398e+06 0
+418360 5.6942e+06 0
+-137510 5.952e+06 0
+-102800 6.219e+06 0
+253580 5.8755e+06 0
+329210 5.3892e+06 0
+78257 5.2605e+06 0
+-114320 5.411e+06 0
+1411.1 5.4245e+06 0
+201100 5.1386e+06 0
+159100 4.8698e+06 0
+-31416 4.8782e+06 0
+-68121 4.9668e+06 0
+57909 4.874e+06 0
+124400 4.6739e+06 0
+53700 4.5714e+06 0
+-34151 4.5915e+06 0
+-29687 4.6107e+06 0
+42780 4.5396e+06 0
+73165 4.4208e+06 0
+13970 4.3675e+06 0
+-46266 4.3993e+06 0
+-20699 4.4108e+06 0
+34823 4.3476e+06 0
+25361 4.2852e+06 0
+-27755 4.2861e+06 0
+-45266 4.3118e+06 0
+-18734 4.3113e+06 0
+1715.6 4.2884e+06 0
+-14265 4.2736e+06 0
+-49203 4.2882e+06 0
+-59530 4.3202e+06 0
+-33950 4.3352e+06 0
+-20913 4.3338e+06 0
+-52875 4.3538e+06 0
+-84443 4.3968e+06 0
+-70846 4.4279e+06 0
+-46741 4.4484e+06 0
+-60969 4.488e+06 0
+-97115 4.5428e+06 0
+-110110 4.5891e+06 0
+-92194 4.6266e+06 0
+-77145 4.6721e+06 0
+-99774 4.7395e+06 0
+-145400 4.8217e+06 0
+-155270 4.8838e+06 0
+-118270 4.9179e+06 0
+-107160 4.9803e+06 0
+-163350 5.0996e+06 0
+-217400 5.2079e+06 0
+-199390 5.2515e+06 0
+-153670 5.2896e+06 0
+-170470 5.4005e+06 0
+-253670 5.5602e+06 0
+-310320 5.6735e+06 0
+-271280 5.7021e+06 0
+-210020 5.7427e+06 0
+-270390 5.9172e+06 0
+-425670 6.1487e+06 0
+-464440 6.2263e+06 0
+-343510 6.182e+06 0
+-320830 6.3046e+06 0
+-531320 6.6384e+06 0
+-712090 6.8529e+06 0
+-614150 6.7915e+06 0
+-449670 6.7821e+06 0
+-631210 7.1719e+06 0
+-1.0697e+06 7.6874e+06 0
+-1.1039e+06 7.6815e+06 0
+-703280 7.4462e+06 0
+-914550 8.0691e+06 0
+-1.9371e+06 9.2609e+06 0
+-2.2217e+06 9.3469e+06 0
+-1.1557e+06 8.5078e+06 0
+-1.0436e+06 9.3912e+06 0
+-3.0082e+06 1.2232e+07 0
+-4.9765e+06 1.4201e+07 0
+-5.3799e+06 1.4301e+07 0
+-3.7749e+06 1.3261e+07 0
+-699420 1.3223e+07 0
+-6.3222e+06 2.4496e+07 0
+-3.0208e+07 4.8323e+07 0
+-2.9573e+07 3.4216e+07 0
+1.4615e+07 5.8726e+06 0
+-5.9866e+07 1.4323e+08 0
+-3.03e+07 8.5485e+07 0
+2.7255e+06 7.0333e+06 0
+-1.7156e+06 267640 0
+-1.3424e+06 82741 0
+-1.1069e+06 107890 0
+-898620 121410 0
+-724640 119840 0
+-587370 108930 0
+-482550 94234 0
+-403830 79162 0
+-345170 65367 0
+-301550 53438 0
+-269090 43423 0
+-244860 35134 0
+-226690 28311 0
+-213000 22696 0
+-202600 18070 0
+-194630 14259 0
+-188460 11130 0
+-183630 8571.5 0
+-179820 6486 0
+-176820 4769.3 0
+-174510 3305 0
+-172850 1964.9 0
+-171850 618.45 0
+-171550 -853.81 0
+-172030 -2549.2 0
+-173400 -4543 0
+-175830 -6902.5 0
+-179530 -9712.8 0
+-184810 -13108 0
+-192060 -17300 0
+-201770 -22597 0
+-214490 -29409 0
+-230850 -38237 0
+-251520 -49628 0
+-277230 -64085 0
+-308750 -81961 0
+-346820 -103360 0
+-392250 -128190 0
+-445850 -156290 0
+-508590 -187840 0
+-581670 -223600 0
+-666520 -264900 0
+-764610 -313190 0
+-877120 -369230 0
+-1.0046e+06 -432440 0
+-1.1469e+06 -501050 0
+-1.3035e+06 -573200 0
+-1.4745e+06 -648470 0
+-1.6607e+06 -728910 0
+-1.864e+06 -818300 0
+-2.0865e+06 -919870 0
+-2.3285e+06 -1.0336e+06 0
+-2.5879e+06 -1.1555e+06 0
+-2.8608e+06 -1.2801e+06 0
+-3.1429e+06 -1.4051e+06 0
+-3.4322e+06 -1.5348e+06 0
+-3.7304e+06 -1.6799e+06 0
+-4.0411e+06 -1.8502e+06 0
+-4.3665e+06 -2.0464e+06 0
+-4.7043e+06 -2.2548e+06 0
+-5.0464e+06 -2.4518e+06 0
+-5.382e+06 -2.6161e+06 0
+-5.7029e+06 -2.7432e+06 0
+-6.0072e+06 -2.8517e+06 0
+-6.2996e+06 -2.9748e+06 0
+-6.5866e+06 -3.1415e+06 0
+-6.87e+06 -3.3573e+06 0
+-7.1432e+06 -3.597e+06 0
+-7.3924e+06 -3.8179e+06 0
+-7.6037e+06 -3.9838e+06 0
+-7.7702e+06 -4.0872e+06 0
+-7.8954e+06 -4.1545e+06 0
+-7.9895e+06 -4.2292e+06 0
+-8.0618e+06 -4.344e+06 0
+-8.1137e+06 -4.4985e+06 0
+-8.1367e+06 -4.6571e+06 0
+-8.118e+06 -4.7695e+06 0
+-8.0485e+06 -4.8008e+06 0
+-7.9288e+06 -4.7531e+06 0
+-7.7696e+06 -4.6653e+06 0
+-7.5855e+06 -4.5916e+06 0
+-7.3871e+06 -4.5708e+06 0
+-7.1762e+06 -4.6041e+06 0
+-6.9466e+06 -4.655e+06 0
+-6.6906e+06 -4.6686e+06 0
+-6.4061e+06 -4.6004e+06 0
+-6.1002e+06 -4.4389e+06 0
+-5.7879e+06 -4.2099e+06 0
+-5.4858e+06 -3.9635e+06 0
+-5.2049e+06 -3.7498e+06 0
+-4.9472e+06 -3.5962e+06 0
+-4.7063e+06 -3.4977e+06 0
+-4.4725e+06 -3.4208e+06 0
+-4.2393e+06 -3.3206e+06 0
+-4.0075e+06 -3.1597e+06 0
+-3.7858e+06 -2.9232e+06 0
+-3.5875e+06 -2.6222e+06 0
+-3.4254e+06 -2.2881e+06 0
+-3.3072e+06 -1.96e+06 0
+-3.2328e+06 -1.671e+06 0
+-3.1954e+06 -1.4384e+06 0
+831840 -201800 0
+807440 -196770 0
+782440 -190890 0
+756960 -184330 0
+731210 -177350 0
+705420 -170170 0
+679830 -163010 0
+654650 -156030 0
+630060 -149350 0
+606110 -143000 0
+582810 -136940 0
+560090 -131090 0
+537850 -125350 0
+515960 -119640 0
+494360 -113880 0
+473020 -108080 0
+451970 -102310 0
+431310 -96670 0
+411170 -91305 0
+391670 -86343 0
+372910 -81874 0
+354950 -77928 0
+337810 -74475 0
+321460 -71436 0
+305850 -68711 0
+290920 -66208 0
+276650 -63862 0
+262990 -61647 0
+249940 -59568 0
+237480 -57644 0
+225610 -55888 0
+214300 -54297 0
+203510 -52845 0
+193190 -51487 0
+183320 -50173 0
+173830 -48859 0
+164710 -47514 0
+155930 -46124 0
+147460 -44686 0
+139300 -43205 0
+131420 -41683 0
+123820 -40121 0
+116480 -38519 0
+109380 -36874 0
+102500 -35187 0
+95851 -33463 0
+89417 -31709 0
+83202 -29935 0
+77207 -28148 0
+71438 -26360 0
+65900 -24577 0
+60597 -22812 0
+55536 -21074 0
+50721 -19376 0
+46157 -17731 0
+41847 -16148 0
+37796 -14636 0
+34003 -13201 0
+30468 -11847 0
+27192 -10576 0
+24170 -9391.2 0
+21398 -8293.5 0
+18870 -7284.2 0
+16576 -6363.3 0
+14507 -5529.3 0
+12649 -4779.6 0
+10990 -4110.4 0
+9515 -3517 0
+8210.6 -2994.6 0
+7062.7 -2537.9 0
+6057.7 -2141.4 0
+5182.3 -1799.5 0
+4423.8 -1506.6 0
+3770 -1256.9 0
+3209.5 -1044.6 0
+2731.9 -864.01 0
+2328.3 -709.71 0
+1991.3 -576.31 0
+1715.6 -458.51 0
+1498.4 -350.95 0
+1339.2 -248.07 0
+1241.2 -143.97 0
+1211 -32.263 0
+1260.3 94.125 0
+1406.9 243.2 0
+1676.7 424.26 0
+2106.5 648.29 0
+2747.8 928.46 0
+3672.2 1280.5 0
+4978.4 1722.8 0
+6801.8 2275.6 0
+9326 2958.1 0
+12795 3782.8 0
+17519 4741.9 0
+23869 5784.4 0
+32219 6778.8 0
+42803 7468.9 0
+55412 7464.4 0
+68920 6406.1 0
+80270 4693.1 0
+71410 4721.1 0
+648350 126900 0
+-180940 9.5311e+06 0
+4.2174e+06 3.2128e+07 0
+9.6758e+06 3.1395e+07 0
+1.014e+07 4.4686e+06 0
+-2.617e+06 1.6722e+07 0
+4.0252e+06 1.6862e+07 0
+3.6456e+06 8.1753e+06 0
+97903 9.1578e+06 0
+968270 1.0456e+07 0
+2.2429e+06 7.8594e+06 0
+797190 6.5419e+06 0
+-507150 7.9055e+06 0
+373430 8.2777e+06 0
+1.2861e+06 6.6598e+06 0
+567630 5.7924e+06 0
+-307310 6.5023e+06 0
+20136 6.8602e+06 0
+625550 6.1301e+06 0
+483760 5.4552e+06 0
+-21644 5.572e+06 0
+-107740 5.8654e+06 0
+191750 5.6871e+06 0
+357230 5.231e+06 0
+158220 5.0121e+06 0
+-92010 5.1481e+06 0
+-33542 5.2388e+06 0
+180000 5.0087e+06 0
+182730 4.7274e+06 0
+807.48 4.6999e+06 0
+-76304 4.7964e+06 0
+18088 4.7593e+06 0
+108330 4.5924e+06 0
+72805 4.4668e+06 0
+-29846 4.4682e+06 0
+-62263 4.5176e+06 0
+11067 4.4834e+06 0
+67761 4.367e+06 0
+13037 4.3042e+06 0
+-66081 4.3427e+06 0
+-53342 4.3727e+06 0
+7881.5 4.3261e+06 0
+11484 4.2705e+06 0
+-41890 4.2707e+06 0
+-77259 4.3035e+06 0
+-60299 4.3199e+06 0
+-25703 4.3059e+06 0
+-31375 4.2919e+06 0
+-82351 4.3173e+06 0
+-110220 4.3648e+06 0
+-77817 4.3826e+06 0
+-50550 4.3805e+06 0
+-86718 4.4137e+06 0
+-137050 4.4752e+06 0
+-134780 4.5141e+06 0
+-101940 4.5321e+06 0
+-100940 4.5711e+06 0
+-144790 4.6413e+06 0
+-188140 4.715e+06 0
+-181760 4.7611e+06 0
+-142760 4.7875e+06 0
+-150060 4.8512e+06 0
+-223460 4.9699e+06 0
+-270560 5.0649e+06 0
+-232280 5.0877e+06 0
+-191250 5.1229e+06 0
+-241240 5.2514e+06 0
+-337590 5.4079e+06 0
+-367560 5.4856e+06 0
+-312600 5.4976e+06 0
+-281800 5.564e+06 0
+-376760 5.7538e+06 0
+-522380 5.9544e+06 0
+-530130 5.9952e+06 0
+-413170 5.9566e+06 0
+-436400 6.1133e+06 0
+-675760 6.4467e+06 0
+-824310 6.6022e+06 0
+-695290 6.5029e+06 0
+-583020 6.5388e+06 0
+-818600 6.9407e+06 0
+-1.1941e+06 7.3431e+06 0
+-1.1774e+06 7.2748e+06 0
+-874930 7.1036e+06 0
+-1.1607e+06 7.6898e+06 0
+-2.008e+06 8.5936e+06 0
+-2.0957e+06 8.4847e+06 0
+-1.2955e+06 7.8679e+06 0
+-1.6109e+06 8.9174e+06 0
+-3.5971e+06 1.1171e+07 0
+-4.611e+06 1.166e+07 0
+-3.4622e+06 1.0454e+07 0
+-2.639e+06 1.0857e+07 0
+-3.7479e+06 1.3945e+07 0
+-8.6866e+06 2.0417e+07 0
+-1.7352e+07 2.7657e+07 0
+-1.324e+07 1.9509e+07 0
+5.3875e+06 1.0041e+07 0
+-3.8835e+07 7.8582e+07 0
+-3.7887e+07 4.7782e+07 0
+-1.521e+07 9.1067e+07 0
+2.0638e+06 5.6211e+07 0
+-3.0562e+06 1.6302e+07 0
+-640070 -10360 0
+-674860 19593 0
+-614070 29877 0
+-539810 41650 0
+-467250 47763 0
+-403130 48445 0
+-349690 45618 0
+-306650 41031 0
+-272670 35852 0
+-246120 30736 0
+-225480 25999 0
+-209450 21751 0
+-197000 18004 0
+-187290 14723 0
+-179680 11863 0
+-173680 9387.2 0
+-168900 7265.9 0
+-165050 5474.5 0
+-161940 3983.9 0
+-159400 2749.8 0
+-157360 1706.9 0
+-155780 768.77 0
+-154680 -163.74 0
+-154080 -1188.1 0
+-154040 -2385.7 0
+-154620 -3814.8 0
+-155920 -5515.7 0
+-158080 -7531.1 0
+-161290 -9936.9 0
+-165830 -12877 0
+-172080 -16591 0
+-180460 -21433 0
+-191470 -27857 0
+-205660 -36375 0
+-223600 -47470 0
+-245860 -61479 0
+-273050 -78497 0
+-305800 -98384 0
+-344850 -120920 0
+-391110 -146130 0
+-445720 -174550 0
+-510070 -207370 0
+-585620 -246030 0
+-673560 -291550 0
+-774550 -343870 0
+-888640 -401710 0
+-1.0156e+06 -463320 0
+-1.1554e+06 -527900 0
+-1.3091e+06 -596710 0
+-1.4781e+06 -673000 0
+-1.6642e+06 -760240 0
+-1.8678e+06 -859760 0
+-2.087e+06 -969350 0
+-2.3187e+06 -1.0846e+06 0
+-2.5599e+06 -1.2025e+06 0
+-2.8103e+06 -1.3251e+06 0
+-3.0733e+06 -1.46e+06 0
+-3.354e+06 -1.6162e+06 0
+-3.6556e+06 -1.7966e+06 0
+-3.9757e+06 -1.9925e+06 0
+-4.3048e+06 -2.1855e+06 0
+-4.6296e+06 -2.3561e+06 0
+-4.9397e+06 -2.4966e+06 0
+-5.2323e+06 -2.6185e+06 0
+-5.5139e+06 -2.749e+06 0
+-5.7951e+06 -2.9154e+06 0
+-6.0826e+06 -3.1279e+06 0
+-6.373e+06 -3.3701e+06 0
+-6.6525e+06 -3.6057e+06 0
+-6.9035e+06 -3.7992e+06 0
+-7.115e+06 -3.9365e+06 0
+-7.2878e+06 -4.0339e+06 0
+-7.4336e+06 -4.1284e+06 0
+-7.5665e+06 -4.2535e+06 0
+-7.6925e+06 -4.4165e+06 0
+-7.8044e+06 -4.5921e+06 0
+-7.885e+06 -4.7352e+06 0
+-7.9169e+06 -4.8083e+06 0
+-7.8931e+06 -4.8037e+06 0
+-7.8218e+06 -4.7495e+06 0
+-7.7225e+06 -4.6938e+06 0
+-7.6162e+06 -4.6772e+06 0
+-7.5148e+06 -4.7097e+06 0
+-7.4169e+06 -4.7642e+06 0
+-7.3103e+06 -4.7908e+06 0
+-7.1813e+06 -4.7433e+06 0
+-7.0235e+06 -4.6024e+06 0
+-6.8426e+06 -4.3855e+06 0
+-6.6544e+06 -4.1376e+06 0
+-6.478e+06 -3.9093e+06 0
+-6.3284e+06 -3.7339e+06 0
+-6.2107e+06 -3.6136e+06 0
+-6.1206e+06 -3.5209e+06 0
+-6.048e+06 -3.4123e+06 0
+-5.9828e+06 -3.2477e+06 0
+-5.9196e+06 -3.0072e+06 0
+-5.8598e+06 -2.6972e+06 0
+-5.8107e+06 -2.3467e+06 0
+-5.7818e+06 -1.9952e+06 0
+-5.7815e+06 -1.6788e+06 0
+-5.8142e+06 -1.4191e+06 0
+822930 -180280 0
+794860 -174930 0
+766560 -168800 0
+738170 -162140 0
+709910 -155220 0
+681990 -148280 0
+654640 -141550 0
+628040 -135150 0
+602310 -129120 0
+577490 -123450 0
+553540 -118030 0
+530380 -112760 0
+507890 -107490 0
+485950 -102160 0
+464480 -96733 0
+443470 -91259 0
+422940 -85845 0
+402960 -80638 0
+383630 -75788 0
+365040 -71418 0
+347260 -67592 0
+330300 -64307 0
+314150 -61498 0
+298750 -59064 0
+284060 -56896 0
+270010 -54906 0
+256560 -53040 0
+243670 -51287 0
+231330 -49657 0
+219530 -48172 0
+208250 -46842 0
+197460 -45655 0
+187140 -44577 0
+177230 -43560 0
+167710 -42555 0
+158540 -41523 0
+149690 -40440 0
+141150 -39299 0
+132910 -38102 0
+124960 -36854 0
+117290 -35558 0
+109890 -34214 0
+102760 -32820 0
+95888 -31377 0
+89268 -29887 0
+82897 -28357 0
+76775 -26796 0
+70904 -25217 0
+65287 -23628 0
+59928 -22041 0
+54830 -20462 0
+49997 -18904 0
+45429 -17375 0
+41130 -15888 0
+37098 -14455 0
+33333 -13083 0
+29833 -11782 0
+26594 -10555 0
+23611 -9405.5 0
+20877 -8335.2 0
+18386 -7345.3 0
+16128 -6436.2 0
+14094 -5607.7 0
+12271 -4858.3 0
+10646 -4185.5 0
+9205.8 -3585.8 0
+7935.1 -3055.1 0
+6819.6 -2588.7 0
+5845.2 -2182 0
+4998.2 -1830.1 0
+4265.7 -1528.1 0
+3635.6 -1270.9 0
+3096.4 -1053.3 0
+2637.4 -870.19 0
+2248.6 -716.46 0
+1921.3 -587.37 0
+1647.9 -478.48 0
+1422.3 -385.65 0
+1239.9 -304.99 0
+1097.9 -232.69 0
+995.55 -164.94 0
+934.06 -97.842 0
+917.34 -27.349 0
+952.19 50.763 0
+1049.1 140.95 0
+1223 247.97 0
+1494.8 376.96 0
+1892.7 533.41 0
+2454.2 723.09 0
+3229.1 951.53 0
+4281.3 1222.9 0
+5691.3 1537.8 0
+7555.5 1889.1 0
+9978.8 2255.6 0
+13055 2592.3 0
+16823 2820.9 0
+21182 2829.3 0
+25781 2505.6 0
+29953 1855.3 0
+33335 1168.9 0
+44825 961.9 0
+-80224 590110 0
+2.5923e+06 8.7408e+06 0
+7.0842e+06 2.2754e+07 0
+4.4033e+06 3.064e+07 0
+-3.5096e+06 1.0763e+07 0
+1.0606e+07 2.3823e+07 0
+4.7331e+06 5.7928e+06 0
+-211650 1.253e+07 0
+2.982e+06 1.1792e+07 0
+2.2232e+06 7.5116e+06 0
+-138250 8.5815e+06 0
+750660 9.5327e+06 0
+2.0387e+06 7.3401e+06 0
+920430 5.9993e+06 0
+-395370 7.1315e+06 0
+225850 7.7021e+06 0
+1.1396e+06 6.4505e+06 0
+653870 5.5167e+06 0
+-142480 6.0085e+06 0
+-26914 6.4387e+06 0
+506470 5.9531e+06 0
+523550 5.2901e+06 0
+99236 5.2464e+06 0
+-106750 5.5351e+06 0
+114310 5.5128e+06 0
+350640 5.1113e+06 0
+220570 4.8202e+06 0
+-58592 4.9165e+06 0
+-65804 5.0576e+06 0
+133750 4.8989e+06 0
+184320 4.6287e+06 0
+35268 4.5567e+06 0
+-79381 4.6408e+06 0
+-33547 4.6586e+06 0
+73241 4.5355e+06 0
+81180 4.3914e+06 0
+-27302 4.3699e+06 0
+-98297 4.4414e+06 0
+-34655 4.4416e+06 0
+44092 4.3347e+06 0
+3729.9 4.2658e+06 0
+-87326 4.3049e+06 0
+-97287 4.3504e+06 0
+-39810 4.3246e+06 0
+-15615 4.2752e+06 0
+-59678 4.2708e+06 0
+-118310 4.3139e+06 0
+-121420 4.3516e+06 0
+-72585 4.3423e+06 0
+-59277 4.3234e+06 0
+-121580 4.3614e+06 0
+-174230 4.4309e+06 0
+-146930 4.455e+06 0
+-104070 4.4476e+06 0
+-129290 4.484e+06 0
+-194690 4.5647e+06 0
+-221890 4.6274e+06 0
+-193420 4.6493e+06 0
+-164840 4.6707e+06 0
+-199310 4.743e+06 0
+-279210 4.8572e+06 0
+-307170 4.9317e+06 0
+-254000 4.9375e+06 0
+-229930 4.9767e+06 0
+-312400 5.12e+06 0
+-408860 5.2659e+06 0
+-404480 5.3059e+06 0
+-342030 5.3079e+06 0
+-353930 5.408e+06 0
+-477500 5.6077e+06 0
+-593730 5.7633e+06 0
+-568140 5.7714e+06 0
+-474620 5.7594e+06 0
+-548540 5.9512e+06 0
+-793890 6.2636e+06 0
+-894850 6.3583e+06 0
+-744010 6.2429e+06 0
+-692920 6.3371e+06 0
+-980610 6.7553e+06 0
+-1.2887e+06 7.053e+06 0
+-1.2073e+06 6.9263e+06 0
+-983190 6.831e+06 0
+-1.3181e+06 7.3934e+06 0
+-2.05e+06 8.1118e+06 0
+-2.0578e+06 7.9371e+06 0
+-1.4269e+06 7.4771e+06 0
+-1.9367e+06 8.4993e+06 0
+-3.5604e+06 1.0137e+07 0
+-3.8235e+06 9.8794e+06 0
+-2.5282e+06 8.7696e+06 0
+-2.7179e+06 1.016e+07 0
+-5.4185e+06 1.3634e+07 0
+-8.2571e+06 1.6128e+07 0
+-9.8529e+06 1.6853e+07 0
+-6.7871e+06 1.3832e+07 0
+-2.0398e+06 1.4767e+07 0
+-2.2237e+07 4.3278e+07 0
+-4.0037e+07 4.901e+07 0
+8.3538e+06 9.4929e+06 0
+-1.3821e+07 6.4181e+07 0
+-2.414e+07 1.0437e+08 0
+-1.0426e+07 5.453e+07 0
+143810 8.5482e+06 0
+-443800 19999 0
+-382550 -425.46 0
+-362750 7034.1 0
+-338110 13384 0
+-309870 18125 0
+-281680 20648 0
+-255850 21249 0
+-233410 20522 0
+-214530 19013 0
+-198960 17112 0
+-186280 15066 0
+-176020 13018 0
+-167750 11038 0
+-161100 9163.8 0
+-155740 7417.1 0
+-151420 5815.9 0
+-147920 4378.9 0
+-145070 3123.2 0
+-142730 2057.3 0
+-140820 1173.2 0
+-139270 438.93 0
+-138070 -202.15 0
+-137220 -826.04 0
+-136750 -1515.2 0
+-136710 -2342.9 0
+-137130 -3360.2 0
+-138080 -4594.3 0
+-139630 -6060 0
+-141910 -7788.7 0
+-145120 -9865.8 0
+-149520 -12470 0
+-155460 -15900 0
+-163300 -20572 0
+-173480 -26980 0
+-186420 -35598 0
+-202530 -46757 0
+-222270 -60534 0
+-246130 -76736 0
+-274740 -95037 0
+-308930 -115280 0
+-349760 -137820 0
+-398520 -163660 0
+-456570 -194250 0
+-525070 -230840 0
+-604720 -273780 0
+-695720 -322200 0
+-798020 -374490 0
+-911720 -429560 0
+-1.0376e+06 -488090 0
+-1.177e+06 -552850 0
+-1.3314e+06 -627500 0
+-1.5011e+06 -714360 0
+-1.6854e+06 -812580 0
+-1.8821e+06 -918390 0
+-2.09e+06 -1.0279e+06 0
+-2.3102e+06 -1.1409e+06 0
+-2.5467e+06 -1.2624e+06 0
+-2.8051e+06 -1.4009e+06 0
+-3.0881e+06 -1.5619e+06 0
+-3.3929e+06 -1.7424e+06 0
+-3.7093e+06 -1.9291e+06 0
+-4.0237e+06 -2.1045e+06 0
+-4.3255e+06 -2.2571e+06 0
+-4.6129e+06 -2.3906e+06 0
+-4.8946e+06 -2.5246e+06 0
+-5.1842e+06 -2.684e+06 0
+-5.4915e+06 -2.8836e+06 0
+-5.8151e+06 -3.1171e+06 0
+-6.1408e+06 -3.3574e+06 0
+-6.449e+06 -3.5708e+06 0
+-6.7254e+06 -3.7367e+06 0
+-6.9695e+06 -3.86e+06 0
+-7.1943e+06 -3.9682e+06 0
+-7.4175e+06 -4.0939e+06 0
+-7.6488e+06 -4.2532e+06 0
+-7.8815e+06 -4.4336e+06 0
+-8.0946e+06 -4.5997e+06 0
+-8.2635e+06 -4.7132e+06 0
+-8.3746e+06 -4.7553e+06 0
+-8.4343e+06 -4.7384e+06 0
+-8.4672e+06 -4.6989e+06 0
+-8.5037e+06 -4.6764e+06 0
+-8.5653e+06 -4.6906e+06 0
+-8.6538e+06 -4.7299e+06 0
+-8.7514e+06 -4.7572e+06 0
+-8.8307e+06 -4.7297e+06 0
+-8.8698e+06 -4.6209e+06 0
+-8.8635e+06 -4.4343e+06 0
+-8.8274e+06 -4.2011e+06 0
+-8.7905e+06 -3.9648e+06 0
+-8.7841e+06 -3.7611e+06 0
+-8.8284e+06 -3.6021e+06 0
+-8.9261e+06 -3.4734e+06 0
+-9.0623e+06 -3.3419e+06 0
+-9.2121e+06 -3.1721e+06 0
+-9.3505e+06 -2.9412e+06 0
+-9.4613e+06 -2.6479e+06 0
+-9.5421e+06 -2.3115e+06 0
+-9.604e+06 -1.9637e+06 0
+-9.6669e+06 -1.6369e+06 0
+-9.7522e+06 -1.3537e+06 0
+797500 -156220 0
+766820 -150850 0
+736300 -144800 0
+706110 -138350 0
+676420 -131800 0
+647440 -125400 0
+619340 -119340 0
+592250 -113720 0
+566230 -108530 0
+541280 -103690 0
+517360 -99048 0
+494370 -94465 0
+472200 -89806 0
+450740 -85000 0
+429940 -80054 0
+409780 -75051 0
+390270 -70134 0
+371460 -65473 0
+353410 -61225 0
+336170 -57497 0
+319740 -54330 0
+304130 -51691 0
+289280 -49492 0
+275120 -47618 0
+261600 -45957 0
+248650 -44429 0
+236230 -42993 0
+224310 -41648 0
+212870 -40413 0
+201890 -39312 0
+191350 -38349 0
+181240 -37507 0
+171510 -36747 0
+162140 -36020 0
+153090 -35280 0
+144340 -34494 0
+135880 -33643 0
+127690 -32728 0
+119770 -31753 0
+112130 -30725 0
+104750 -29647 0
+97642 -28519 0
+90801 -27339 0
+84226 -26107 0
+77917 -24827 0
+71875 -23507 0
+66104 -22160 0
+60605 -20796 0
+55383 -19425 0
+50440 -18058 0
+45778 -16701 0
+41397 -15365 0
+37296 -14058 0
+33474 -12792 0
+29927 -11577 0
+26649 -10420 0
+23635 -9328.6 0
+20876 -8305.8 0
+18363 -7354 0
+16088 -6474 0
+14037 -5666.1 0
+12201 -4930 0
+10567 -4264.3 0
+9119.4 -3666.9 0
+7845.2 -3134.7 0
+6729.2 -2663.8 0
+5756.8 -2250 0
+4913.8 -1889.3 0
+4186.4 -1577.3 0
+3562.1 -1310 0
+3028.9 -1083 0
+2575.9 -892 0
+2193 -732.39 0
+1870.9 -599.72 0
+1601.3 -489.68 0
+1376.9 -398.37 0
+1191.6 -322.25 0
+1040.2 -258.22 0
+919.1 -203.45 0
+825.69 -155.28 0
+758.92 -111.14 0
+719.17 -68.462 0
+708.43 -24.69 0
+730.49 22.691 0
+791.22 76.128 0
+898.88 137.97 0
+1064.7 210.39 0
+1303.1 295.36 0
+1632.8 394.35 0
+2076.7 508 0
+2662.2 635.31 0
+3420.4 772.41 0
+4382.3 910.74 0
+5572.4 1034.6 0
+6994.9 1119.4 0
+8611 1132 0
+10308 1041.3 0
+11870 851.54 0
+12968 689.61 0
+13001 1064.2 0
+6721.9 4205 0
+68100 277020 0
+302920 7.4234e+06 0
+3.43e+06 2.2339e+07 0
+7.6253e+06 3.1539e+07 0
+416830 1.6525e+07 0
+6.0668e+06 7.2754e+06 0
+-1.0452e+06 1.7386e+07 0
+6.0653e+06 1.4428e+07 0
+2.4197e+06 7.442e+06 0
+595230 1.0691e+07 0
+2.6374e+06 9.4493e+06 0
+1.7842e+06 6.6746e+06 0
+-205730 7.6987e+06 0
+431560 8.7715e+06 0
+1.7592e+06 7.0882e+06 0
+1.0226e+06 5.655e+06 0
+-219240 6.4779e+06 0
+102020 7.1865e+06 0
+941290 6.2598e+06 0
+722710 5.3532e+06 0
+19296 5.5871e+06 0
+-73099 6.0368e+06 0
+361230 5.7885e+06 0
+526110 5.1781e+06 0
+203210 4.9831e+06 0
+-95604 5.2348e+06 0
+32868 5.3386e+06 0
+306100 5.0154e+06 0
+254290 4.683e+06 0
+-18378 4.7207e+06 0
+-91729 4.8813e+06 0
+66085 4.8022e+06 0
+160140 4.5655e+06 0
+64046 4.4478e+06 0
+-78301 4.5049e+06 0
+-90921 4.5711e+06 0
+19976 4.4971e+06 0
+72499 4.343e+06 0
+-28537 4.2981e+06 0
+-132920 4.382e+06 0
+-92386 4.4138e+06 0
+-1835.2 4.3244e+06 0
+-16742 4.251e+06 0
+-107760 4.2832e+06 0
+-149240 4.3446e+06 0
+-109140 4.3461e+06 0
+-60950 4.3004e+06 0
+-83684 4.2845e+06 0
+-163940 4.34e+06 0
+-197780 4.406e+06 0
+-144210 4.4029e+06 0
+-106990 4.3733e+06 0
+-166380 4.4169e+06 0
+-243620 4.5111e+06 0
+-240800 4.5552e+06 0
+-192230 4.5462e+06 0
+-189890 4.5685e+06 0
+-255000 4.6579e+06 0
+-324510 4.7615e+06 0
+-323550 4.8059e+06 0
+-268770 4.8007e+06 0
+-274110 4.8536e+06 0
+-379470 5.0057e+06 0
+-460020 5.1304e+06 0
+-422140 5.1354e+06 0
+-366250 5.1374e+06 0
+-426260 5.2733e+06 0
+-564940 5.4731e+06 0
+-636050 5.5741e+06 0
+-582930 5.557e+06 0
+-531530 5.5884e+06 0
+-652410 5.8099e+06 0
+-876700 6.0786e+06 0
+-922410 6.1159e+06 0
+-770560 6.0119e+06 0
+-786970 6.1687e+06 0
+-1.1081e+06 6.5879e+06 0
+-1.3406e+06 6.7856e+06 0
+-1.1991e+06 6.6167e+06 0
+-1.0536e+06 6.6108e+06 0
+-1.4289e+06 7.1637e+06 0
+-2.0333e+06 7.7122e+06 0
+-2.0058e+06 7.5184e+06 0
+-1.5538e+06 7.2251e+06 0
+-2.0306e+06 8.0747e+06 0
+-3.3285e+06 9.2877e+06 0
+-3.2905e+06 8.8254e+06 0
+-2.22e+06 8.0581e+06 0
+-3.1167e+06 9.8725e+06 0
+-5.6405e+06 1.2469e+07 0
+-6.5976e+06 1.2638e+07 0
+-5.6368e+06 1.1654e+07 0
+-4.8194e+06 1.2205e+07 0
+-6.0723e+06 1.6163e+07 0
+-1.5736e+07 2.777e+07 0
+-2.2362e+07 2.9267e+07 0
+198120 8.6872e+06 0
+-2.0236e+07 5.8697e+07 0
+-2.7056e+06 1.5414e+07 0
+-2.7523e+07 8.4307e+07 0
+-1.2003e+07 8.3235e+07 0
+-391720 4.1185e+07 0
+-459980 9.3569e+06 0
+-204150 28463 0
+-232700 2378.9 0
+-230710 1755.4 0
+-223390 4145.1 0
+-213040 6652.9 0
+-201260 8522.2 0
+-189330 9587.5 0
+-178090 9943 0
+-167990 9763.6 0
+-159180 9217 0
+-151650 8433.4 0
+-145290 7503.5 0
+-139990 6488.4 0
+-135600 5431.1 0
+-131990 4366.6 0
+-129040 3328.9 0
+-126630 2352.7 0
+-124660 1471.6 0
+-123070 712.16 0
+-121790 86.221 0
+-120790 -416.28 0
+-120050 -830.86 0
+-119580 -1215.7 0
+-119420 -1641.9 0
+-119590 -2177.6 0
+-120140 -2872.6 0
+-121100 -3749.1 0
+-122510 -4806.3 0
+-124480 -6043.6 0
+-127120 -7500.1 0
+-130630 -9301.7 0
+-135270 -11699 0
+-141320 -15079 0
+-149120 -19921 0
+-158960 -26702 0
+-171170 -35754 0
+-186080 -47133 0
+-204080 -60584 0
+-225680 -75665 0
+-251610 -92052 0
+-282790 -109900 0
+-320380 -130080 0
+-365570 -154020 0
+-419450 -183130 0
+-482760 -218090 0
+-555850 -258350 0
+-638830 -302460 0
+-731900 -349130 0
+-835720 -398600 0
+-951450 -453250 0
+-1.0804e+06 -516760 0
+-1.2235e+06 -592040 0
+-1.3807e+06 -679060 0
+-1.5516e+06 -774400 0
+-1.7363e+06 -873370 0
+-1.9365e+06 -973880 0
+-2.1564e+06 -1.0793e+06 0
+-2.4005e+06 -1.198e+06 0
+-2.6708e+06 -1.3383e+06 0
+-2.964e+06 -1.5019e+06 0
+-3.2709e+06 -1.6805e+06 0
+-3.5797e+06 -1.8577e+06 0
+-3.8816e+06 -2.0182e+06 0
+-4.1767e+06 -2.158e+06 0
+-4.4747e+06 -2.2888e+06 0
+-4.7902e+06 -2.4332e+06 0
+-5.1342e+06 -2.6109e+06 0
+-5.5062e+06 -2.8258e+06 0
+-5.8928e+06 -3.0606e+06 0
+-6.2741e+06 -3.2847e+06 0
+-6.6346e+06 -3.4714e+06 0
+-6.973e+06 -3.6133e+06 0
+-7.3022e+06 -3.7273e+06 0
+-7.6412e+06 -3.8438e+06 0
+-8.0017e+06 -3.9878e+06 0
+-8.3779e+06 -4.1615e+06 0
+-8.747e+06 -4.3414e+06 0
+-9.0806e+06 -4.4903e+06 0
+-9.3606e+06 -4.5779e+06 0
+-9.5916e+06 -4.5976e+06 0
+-9.8e+06 -4.5704e+06 0
+-1.0022e+07 -4.532e+06 0
+-1.0285e+07 -4.5128e+06 0
+-1.0593e+07 -4.5213e+06 0
+-1.0924e+07 -4.5394e+06 0
+-1.1239e+07 -4.5325e+06 0
+-1.1503e+07 -4.4675e+06 0
+-1.1701e+07 -4.3295e+06 0
+-1.1847e+07 -4.1283e+06 0
+-1.1978e+07 -3.8927e+06 0
+-1.2139e+07 -3.6568e+06 0
+-1.2364e+07 -3.4447e+06 0
+-1.2662e+07 -3.2616e+06 0
+-1.3016e+07 -3.0944e+06 0
+-1.3387e+07 -2.9193e+06 0
+-1.3732e+07 -2.7141e+06 0
+-1.4016e+07 -2.4672e+06 0
+-1.4225e+07 -2.1813e+06 0
+-1.4372e+07 -1.8712e+06 0
+-1.4485e+07 -1.5576e+06 0
+-1.4603e+07 -1.2598e+06 0
+754140 -130650 0
+722220 -125560 0
+690830 -119890 0
+660140 -113960 0
+630300 -108060 0
+601460 -102430 0
+573710 -97238 0
+547120 -92531 0
+521720 -88267 0
+497460 -84324 0
+474290 -80530 0
+452110 -76716 0
+430850 -72753 0
+410430 -68587 0
+390810 -64249 0
+371980 -59848 0
+353950 -55548 0
+336740 -51527 0
+320360 -47937 0
+304820 -44870 0
+290070 -42344 0
+276080 -40308 0
+262770 -38660 0
+250070 -37279 0
+237920 -36059 0
+226260 -34929 0
+215040 -33863 0
+204250 -32867 0
+193860 -31967 0
+183860 -31185 0
+174210 -30524 0
+164910 -29962 0
+155910 -29459 0
+147190 -28969 0
+138740 -28447 0
+130540 -27867 0
+122580 -27219 0
+114860 -26503 0
+107390 -25730 0
+100160 -24905 0
+93191 -24034 0
+86475 -23114 0
+80018 -22145 0
+73827 -21125 0
+67905 -20061 0
+62257 -18962 0
+56889 -17837 0
+51805 -16699 0
+47006 -15557 0
+42496 -14419 0
+38274 -13292 0
+34338 -12184 0
+30686 -11103 0
+27312 -10060 0
+24210 -9061.7 0
+21372 -8116.2 0
+18788 -7228.2 0
+16447 -6400.6 0
+14338 -5635 0
+12448 -4931.6 0
+10765 -4290.2 0
+9273.6 -3709.8 0
+7960.9 -3188.6 0
+6812 -2724 0
+5812.2 -2312.8 0
+4946.8 -1951.2 0
+4201.9 -1635.5 0
+3563.8 -1361.9 0
+3020.2 -1127.1 0
+2559.4 -927.56 0
+2170.7 -759.81 0
+1844.5 -620.19 0
+1572 -504.91 0
+1345.5 -410.21 0
+1158 -332.56 0
+1003.6 -268.81 0
+877.27 -216.25 0
+775.06 -172.55 0
+693.88 -135.73 0
+631.62 -103.97 0
+587.14 -75.533 0
+560.31 -48.757 0
+551.99 -22.024 0
+564.15 6.1765 0
+599.88 37.191 0
+663.54 72.143 0
+760.77 111.87 0
+898.65 156.84 0
+1085.6 207.01 0
+1331.3 261.6 0
+1646 318.73 0
+2039.3 374.89 0
+2517.5 424.4 0
+3079.8 459 0
+3711.4 468.48 0
+4375.4 444.09 0
+5003.7 389.06 0
+5493.3 346.5 0
+5709.8 471.06 0
+5549.9 1198.1 0
+6841.7 3523.2 0
+46720 349720 0
+1.1162e+06 6.3888e+06 0
+3.3699e+06 1.8528e+07 0
+5.1872e+06 2.9547e+07 0
+2.0603e+06 2.2813e+07 0
+-1.593e+06 5.7609e+06 0
+7.5207e+06 2.0214e+07 0
+2.7185e+06 6.0549e+06 0
+733720 1.3748e+07 0
+3.6735e+06 1.03e+07 0
+1.2019e+06 7.6308e+06 0
+508070 9.7152e+06 0
+2.3026e+06 8.477e+06 0
+1.757e+06 6.1099e+06 0
+-83508 6.8484e+06 0
+187630 8.0711e+06 0
+1.4459e+06 6.8587e+06 0
+1.0788e+06 5.4626e+06 0
+-61921 5.9476e+06 0
+-2020.2 6.6789e+06 0
+722040 6.0987e+06 0
+739130 5.2598e+06 0
+155270 5.2386e+06 0
+-105330 5.6573e+06 0
+208620 5.6237e+06 0
+485180 5.1002e+06 0
+277360 4.7856e+06 0
+-71462 4.9706e+06 0
+-41668 5.1595e+06 0
+227450 4.9332e+06 0
+253860 4.5946e+06 0
+22768 4.563e+06 0
+-108420 4.7146e+06 0
+-15302 4.7147e+06 0
+109650 4.5292e+06 0
+78630 4.372e+06 0
+-74984 4.393e+06 0
+-147060 4.4963e+06 0
+-49152 4.4729e+06 0
+40522 4.3208e+06 0
+-37234 4.2535e+06 0
+-162140 4.3377e+06 0
+-158080 4.3994e+06 0
+-72173 4.338e+06 0
+-53638 4.2602e+06 0
+-128460 4.2757e+06 0
+-204100 4.3536e+06 0
+-196630 4.3912e+06 0
+-130180 4.3501e+06 0
+-121830 4.3154e+06 0
+-211890 4.3784e+06 0
+-280960 4.4774e+06 0
+-241630 4.4914e+06 0
+-185940 4.4521e+06 0
+-223140 4.4855e+06 0
+-312790 4.597e+06 0
+-353020 4.6801e+06 0
+-320590 4.6852e+06 0
+-283440 4.6787e+06 0
+-326420 4.7563e+06 0
+-436330 4.9072e+06 0
+-486090 4.9978e+06 0
+-425920 4.9756e+06 0
+-393020 4.991e+06 0
+-496340 5.1577e+06 0
+-631210 5.3436e+06 0
+-649940 5.3872e+06 0
+-583100 5.3569e+06 0
+-587690 5.4423e+06 0
+-743390 5.6826e+06 0
+-921540 5.8879e+06 0
+-914660 5.8768e+06 0
+-788100 5.8117e+06 0
+-871740 6.0266e+06 0
+-1.1962e+06 6.4191e+06 0
+-1.3455e+06 6.5224e+06 0
+-1.1635e+06 6.3385e+06 0
+-1.102e+06 6.4287e+06 0
+-1.5105e+06 6.9751e+06 0
+-1.9729e+06 7.3572e+06 0
+-1.8849e+06 7.1373e+06 0
+-1.6125e+06 7.0192e+06 0
+-2.0982e+06 7.7823e+06 0
+-3.0277e+06 8.6064e+06 0
+-2.9256e+06 8.177e+06 0
+-2.2233e+06 7.772e+06 0
+-3.222e+06 9.394e+06 0
+-5.2346e+06 1.1159e+07 0
+-5.0176e+06 1.0255e+07 0
+-3.744e+06 9.4893e+06 0
+-4.6578e+06 1.1827e+07 0
+-7.4742e+06 1.5443e+07 0
+-1.1095e+07 1.8825e+07 0
+-1.1866e+07 1.8095e+07 0
+-3.1593e+06 1.186e+07 0
+-1.2457e+07 3.3628e+07 0
+-2.6127e+07 4.0125e+07 0
+3.5642e+06 1.9231e+07 0
+-9.0975e+06 3.0956e+07 0
+-1.669e+07 8.4203e+07 0
+-1.116e+07 7.9147e+07 0
+-4.4835e+06 3.9508e+07 0
+-344490 7.4736e+06 0
+-173060 122.73 0
+-158200 -791.03 0
+-157000 426.15 0
+-154920 1319.7 0
+-151310 2429.4 0
+-146580 3455.6 0
+-141270 4222.7 0
+-135840 4683.3 0
+-130620 4858.7 0
+-125800 4795.7 0
+-121470 4543.1 0
+-117680 4142.6 0
+-114410 3628.1 0
+-111630 3029.3 0
+-109320 2375.4 0
+-107410 1698.3 0
+-105880 1033.3 0
+-104650 416.78 0
+-103700 -118.58 0
+-102970 -551.17 0
+-102460 -877.79 0
+-102150 -1118.8 0
+-102050 -1318 0
+-102180 -1536.1 0
+-102590 -1836.7 0
+-103300 -2269.3 0
+-104340 -2855.4 0
+-105760 -3586.8 0
+-107610 -4442.8 0
+-109990 -5428.8 0
+-113020 -6628.1 0
+-116910 -8250.9 0
+-121870 -10654 0
+-128160 -14303 0
+-136050 -19676 0
+-145780 -27102 0
+-157650 -36621 0
+-171970 -47923 0
+-189180 -60468 0
+-209840 -73791 0
+-234730 -87892 0
+-264770 -103500 0
+-301010 -122000 0
+-344430 -144890 0
+-395840 -173060 0
+-455750 -206210 0
+-524470 -243040 0
+-602300 -282170 0
+-689820 -323520 0
+-788090 -369110 0
+-898500 -422440 0
+-1.0224e+06 -486590 0
+-1.161e+06 -561900 0
+-1.3151e+06 -645130 0
+-1.4857e+06 -731170 0
+-1.6748e+06 -816860 0
+-1.8854e+06 -904610 0
+-2.1208e+06 -1.0029e+06 0
+-2.3822e+06 -1.1224e+06 0
+-2.6671e+06 -1.2684e+06 0
+-2.9687e+06 -1.4361e+06 0
+-3.2785e+06 -1.6099e+06 0
+-3.5909e+06 -1.7711e+06 0
+-3.907e+06 -1.909e+06 0
+-4.2359e+06 -2.029e+06 0
+-4.591e+06 -2.1513e+06 0
+-4.9824e+06 -2.3001e+06 0
+-5.4104e+06 -2.4884e+06 0
+-5.864e+06 -2.7083e+06 0
+-6.3256e+06 -2.9325e+06 0
+-6.7808e+06 -3.1292e+06 0
+-7.227e+06 -3.28e+06 0
+-7.6752e+06 -3.3913e+06 0
+-8.1426e+06 -3.4907e+06 0
+-8.6407e+06 -3.6107e+06 0
+-9.1655e+06 -3.7679e+06 0
+-9.6962e+06 -3.9512e+06 0
+-1.0205e+07 -4.1259e+06 0
+-1.0673e+07 -4.2513e+06 0
+-1.11e+07 -4.3023e+06 0
+-1.1512e+07 -4.2827e+06 0
+-1.1942e+07 -4.2228e+06 0
+-1.2419e+07 -4.1629e+06 0
+-1.2948e+07 -4.1326e+06 0
+-1.3506e+07 -4.1358e+06 0
+-1.405e+07 -4.1493e+06 0
+-1.4539e+07 -4.1348e+06 0
+-1.4951e+07 -4.0577e+06 0
+-1.5296e+07 -3.9021e+06 0
+-1.5612e+07 -3.6775e+06 0
+-1.5949e+07 -3.4127e+06 0
+-1.6349e+07 -3.1436e+06 0
+-1.6826e+07 -2.8987e+06 0
+-1.7363e+07 -2.6903e+06 0
+-1.7916e+07 -2.5126e+06 0
+-1.8429e+07 -2.3469e+06 0
+-1.8857e+07 -2.1706e+06 0
+-1.9178e+07 -1.9658e+06 0
+-1.9399e+07 -1.724e+06 0
+-1.9556e+07 -1.4482e+06 0
+-1.9694e+07 -1.1504e+06 0
+692670 -104810 0
+661020 -100250 0
+630240 -95246 0
+600460 -90086 0
+571790 -85046 0
+544290 -80344 0
+518020 -76109 0
+492950 -72367 0
+469070 -69044 0
+446310 -65996 0
+424600 -63043 0
+403890 -60015 0
+384120 -56795 0
+365270 -53342 0
+347310 -49704 0
+330260 -46004 0
+314100 -42407 0
+298840 -39085 0
+284430 -36176 0
+270850 -33756 0
+258010 -31827 0
+245830 -30326 0
+234230 -29149 0
+223150 -28181 0
+212510 -27326 0
+202270 -26527 0
+192390 -25766 0
+182870 -25057 0
+173660 -24428 0
+164760 -23900 0
+156140 -23473 0
+147770 -23125 0
+139630 -22819 0
+131710 -22509 0
+123990 -22160 0
+116470 -21750 0
+109150 -21271 0
+102040 -20730 0
+95143 -20135 0
+88470 -19496 0
+82027 -18815 0
+75822 -18091 0
+69863 -17323 0
+64159 -16511 0
+58718 -15661 0
+53546 -14780 0
+48651 -13879 0
+44037 -12967 0
+39705 -12053 0
+35658 -11144 0
+31892 -10244 0
+28407 -9361 0
+25196 -8501.7 0
+22254 -7673.8 0
+19571 -6884.5 0
+17138 -6139.6 0
+14942 -5443.1 0
+12972 -4797.1 0
+11214 -4202.5 0
+9653.4 -3659.3 0
+8277.3 -3166.9 0
+7070.9 -2724 0
+6019.7 -2328.7 0
+5109.3 -1978.4 0
+4325.4 -1670 0
+3654.3 -1400.2 0
+3083.1 -1165.7 0
+2599.6 -963.63 0
+2192.6 -791.2 0
+1851.8 -645.76 0
+1567.8 -524.57 0
+1332.3 -424.71 0
+1137.9 -343.17 0
+977.89 -276.92 0
+846.8 -223.17 0
+739.85 -179.46 0
+653.11 -143.76 0
+583.41 -114.4 0
+528.33 -89.997 0
+486.12 -69.334 0
+455.72 -51.281 0
+436.73 -34.753 0
+429.4 -18.725 0
+434.64 -2.2796 0
+453.98 15.337 0
+489.55 34.662 0
+544.06 55.967 0
+620.68 79.211 0
+722.88 103.98 0
+854.16 129.39 0
+1017.5 153.97 0
+1214.6 175.52 0
+1444.2 191.1 0
+1700.7 197.29 0
+1971.4 191.42 0
+2234.1 175.05 0
+2455.7 163.83 0
+2589.4 215.76 0
+2555.5 519.66 0
+2114.4 1704.9 0
+-473.16 6300.9 0
+-11942 277360 0
+402830 5.8585e+06 0
+2.5243e+06 1.7242e+07 0
+5.3541e+06 2.779e+07 0
+3.7164e+06 2.5182e+07 0
+-1.4871e+06 8.5822e+06 0
+4.8246e+06 1.1282e+07 0
+-649220 1.3914e+07 0
+5.6577e+06 1.2739e+07 0
+1.4975e+06 7.6655e+06 0
+1.5555e+06 1.1033e+07 0
+2.8773e+06 8.1468e+06 0
+713970 7.0242e+06 0
+191880 8.8724e+06 0
+1.8424e+06 8.0176e+06 0
+1.7019e+06 5.823e+06 0
+51820 6.1962e+06 0
+12155 7.4158e+06 0
+1.1362e+06 6.6537e+06 0
+1.0498e+06 5.351e+06 0
+88409 5.5161e+06 0
+-63668 6.1961e+06 0
+493890 5.9456e+06 0
+695530 5.1996e+06 0
+263870 4.9647e+06 0
+-113100 5.3102e+06 0
+66154 5.4488e+06 0
+402890 5.0403e+06 0
+314150 4.6506e+06 0
+-35478 4.7479e+06 0
+-100280 4.977e+06 0
+124060 4.8571e+06 0
+217560 4.5468e+06 0
+56474 4.4447e+06 0
+-115220 4.5635e+06 0
+-100600 4.6345e+06 0
+35208 4.5123e+06 0
+70394 4.3287e+06 0
+-73508 4.3084e+06 0
+-195500 4.4333e+06 0
+-129470 4.4602e+06 0
+-19358 4.3252e+06 0
+-59583 4.2371e+06 0
+-185270 4.3071e+06 0
+-226080 4.3969e+06 0
+-165120 4.3762e+06 0
+-113390 4.2962e+06 0
+-156040 4.2844e+06 0
+-258180 4.3743e+06 0
+-294120 4.4557e+06 0
+-226030 4.4282e+06 0
+-185930 4.3722e+06 0
+-265920 4.4291e+06 0
+-362920 4.5573e+06 0
+-360330 4.607e+06 0
+-304870 4.5704e+06 0
+-304890 4.5756e+06 0
+-384950 4.6859e+06 0
+-476010 4.8217e+06 0
+-486170 4.8652e+06 0
+-424250 4.8292e+06 0
+-428430 4.873e+06 0
+-558980 5.0589e+06 0
+-670030 5.2132e+06 0
+-641210 5.205e+06 0
+-579880 5.1787e+06 0
+-644940 5.3199e+06 0
+-816150 5.562e+06 0
+-930290 5.6912e+06 0
+-883350 5.6462e+06 0
+-806850 5.6423e+06 0
+-947860 5.9023e+06 0
+-1.2412e+06 6.2371e+06 0
+-1.3078e+06 6.2575e+06 0
+-1.1161e+06 6.0927e+06 0
+-1.1417e+06 6.2765e+06 0
+-1.5657e+06 6.8018e+06 0
+-1.8849e+06 7.0285e+06 0
+-1.7275e+06 6.7871e+06 0
+-1.6013e+06 6.8241e+06 0
+-2.1386e+06 7.5614e+06 0
+-2.8093e+06 8.1099e+06 0
+-2.5907e+06 7.6716e+06 0
+-2.1734e+06 7.5137e+06 0
+-3.1735e+06 8.9362e+06 0
+-4.5153e+06 9.969e+06 0
+-3.9762e+06 8.9614e+06 0
+-3.0554e+06 8.7294e+06 0
+-4.8161e+06 1.1475e+07 0
+-7.2649e+06 1.3677e+07 0
+-7.6712e+06 1.3437e+07 0
+-6.7476e+06 1.2882e+07 0
+-4.9853e+06 1.3401e+07 0
+-1.038e+07 2.3353e+07 0
+-2.036e+07 3.0789e+07 0
+-361290 9.2017e+06 0
+-1.5455e+07 4.7069e+07 0
+2.8203e+06 9.6098e+06 0
+-1.2657e+07 4.6858e+07 0
+-1.8479e+07 8.6871e+07 0
+-8.8365e+06 6.9948e+07 0
+-1.1476e+06 3.2527e+07 0
+-25770 6.6466e+06 0
+-103040 25848 0
+-111080 1733.6 0
+-111480 430.13 0
+-110970 524.59 0
+-109750 931.4 0
+-107910 1407 0
+-105610 1833.2 0
+-103070 2151.8 0
+-100460 2341.8 0
+-97908 2402.3 0
+-95512 2341.9 0
+-93330 2172.3 0
+-91399 1906.7 0
+-89734 1560.5 0
+-88338 1153 0
+-87206 708.39 0
+-86320 256.32 0
+-85658 -170.4 0
+-85195 -539.89 0
+-84905 -827.47 0
+-84770 -1022.7 0
+-84783 -1135.2 0
+-84949 -1197.2 0
+-85288 -1258.9 0
+-85830 -1377.6 0
+-86608 -1600.7 0
+-87656 -1950.1 0
+-89011 -2415.3 0
+-90714 -2965.6 0
+-92827 -3584.7 0
+-95447 -4324.4 0
+-98712 -5358.4 0
+-102800 -7009.3 0
+-107950 -9719.1 0
+-114390 -13949 0
+-122400 -20018 0
+-132270 -27953 0
+-144300 -37414 0
+-158840 -47808 0
+-176320 -58581 0
+-197310 -69618 0
+-222490 -81523 0
+-252710 -95583 0
+-288900 -113290 0
+-331930 -135610 0
+-382510 -162440 0
+-441150 -192600 0
+-508270 -224760 0
+-584410 -258630 0
+-670550 -295830 0
+-768220 -339500 0
+-879310 -392520 0
+-1.0058e+06 -455330 0
+-1.1494e+06 -524890 0
+-1.3117e+06 -596100 0
+-1.494e+06 -665540 0
+-1.6984e+06 -735280 0
+-1.9265e+06 -813920 0
+-2.1796e+06 -913130 0
+-2.4568e+06 -1.0406e+06 0
+-2.7553e+06 -1.1933e+06 0
+-3.0707e+06 -1.3563e+06 0
+-3.4001e+06 -1.509e+06 0
+-3.7447e+06 -1.6362e+06 0
+-4.111e+06 -1.7385e+06 0
+-4.5087e+06 -1.8344e+06 0
+-4.9459e+06 -1.9508e+06 0
+-5.4244e+06 -2.1075e+06 0
+-5.9374e+06 -2.3038e+06 0
+-6.4722e+06 -2.5163e+06 0
+-7.0171e+06 -2.7101e+06 0
+-7.568e+06 -2.8587e+06 0
+-8.1312e+06 -2.9597e+06 0
+-8.7191e+06 -3.0374e+06 0
+-9.3417e+06 -3.1292e+06 0
+-9.9975e+06 -3.2627e+06 0
+-1.0672e+07 -3.4382e+06 0
+-1.1342e+07 -3.6245e+06 0
+-1.1991e+07 -3.774e+06 0
+-1.2614e+07 -3.8464e+06 0
+-1.3229e+07 -3.8305e+06 0
+-1.386e+07 -3.7502e+06 0
+-1.4531e+07 -3.653e+06 0
+-1.5247e+07 -3.5862e+06 0
+-1.5989e+07 -3.5739e+06 0
+-1.6721e+07 -3.605e+06 0
+-1.7404e+07 -3.6389e+06 0
+-1.8013e+07 -3.6238e+06 0
+-1.8553e+07 -3.5201e+06 0
+-1.9052e+07 -3.3169e+06 0
+-1.9556e+07 -3.0358e+06 0
+-2.0101e+07 -2.7215e+06 0
+-2.0706e+07 -2.4243e+06 0
+-2.1357e+07 -2.1817e+06 0
+-2.2014e+07 -2.0072e+06 0
+-2.2624e+07 -1.8881e+06 0
+-2.3142e+07 -1.793e+06 0
+-2.3542e+07 -1.6836e+06 0
+-2.3828e+07 -1.5278e+06 0
+-2.4028e+07 -1.3087e+06 0
+-2.4189e+07 -1.0285e+06 0
+614340 -79976 0
+584550 -76162 0
+555840 -72013 0
+528320 -67792 0
+502040 -63738 0
+477030 -60033 0
+453240 -56775 0
+430610 -53967 0
+409080 -51524 0
+388560 -49300 0
+369000 -47127 0
+350370 -44849 0
+332640 -42367 0
+315840 -39654 0
+299980 -36763 0
+285060 -33814 0
+271080 -30961 0
+258010 -28355 0
+245780 -26115 0
+234310 -24297 0
+223500 -22895 0
+213250 -21845 0
+203470 -21050 0
+194090 -20410 0
+185050 -19843 0
+176330 -19305 0
+167890 -18786 0
+159730 -18304 0
+151810 -17886 0
+144120 -17548 0
+136640 -17292 0
+129330 -17097 0
+122180 -16929 0
+115180 -16751 0
+108330 -16531 0
+101630 -16253 0
+95094 -15915 0
+88733 -15521 0
+82556 -15083 0
+76574 -14607 0
+70798 -14096 0
+65235 -13551 0
+59898 -12970 0
+54796 -12353 0
+49939 -11704 0
+45336 -11032 0
+40994 -10344 0
+36916 -9648.5 0
+33105 -8951.9 0
+29560 -8259.3 0
+26279 -7575 0
+23260 -6904.1 0
+20496 -6252.2 0
+17980 -5625.4 0
+15702 -5029.4 0
+13651 -4468.8 0
+11815 -3946.4 0
+10181 -3464 0
+8734.4 -3022 0
+7462 -2620.2 0
+6349.4 -2257.8 0
+5382.6 -1933.5 0
+4547.7 -1645.6 0
+3831.1 -1391.7 0
+3219.8 -1169.1 0
+2701.6 -975.14 0
+2265 -807.2 0
+1899.3 -663.05 0
+1595 -540.65 0
+1343.1 -438.03 0
+1135.6 -353.18 0
+965.53 -283.9 0
+826.53 -227.89 0
+713.29 -182.84 0
+621.3 -146.64 0
+546.82 -117.45 0
+486.82 -93.796 0
+438.85 -74.521 0
+401.03 -58.696 0
+371.95 -45.532 0
+350.68 -34.303 0
+336.74 -24.317 0
+330.05 -14.925 0
+330.95 -5.5633 0
+340.13 4.2016 0
+358.56 14.634 0
+387.44 25.801 0
+428.04 37.552 0
+481.61 49.504 0
+549.1 61.023 0
+630.87 71.213 0
+726.21 78.934 0
+832.79 82.93 0
+946 82.229 0
+1058.4 77.304 0
+1159.2 73.344 0
+1234.3 90.205 0
+1261.2 194.79 0
+1182.7 611.5 0
+784.82 2101.4 0
+-457.88 7260.3 0
+34914 263850 0
+552660 5.1446e+06 0
+2.0053e+06 1.5328e+07 0
+4.1766e+06 2.6157e+07 0
+4.2106e+06 2.6815e+07 0
+-455370 1.2713e+07 0
+844060 6.8741e+06 0
+4.1593e+06 1.7449e+07 0
+2.0604e+06 6.241e+06 0
+1.2617e+06 1.3284e+07 0
+3.3461e+06 9.2268e+06 0
+731740 8.2143e+06 0
+1.5831e+06 9.6924e+06 0
+2.5062e+06 7.1279e+06 0
+645710 6.3163e+06 0
+-59651 8.0384e+06 0
+1.3937e+06 7.6212e+06 0
+1.5708e+06 5.6846e+06 0
+177540 5.6969e+06 0
+-83144 6.8171e+06 0
+810640 6.4491e+06 0
+955910 5.2827e+06 0
+241630 5.1892e+06 0
+-93819 5.7563e+06 0
+270400 5.7734e+06 0
+601220 5.1588e+06 0
+339270 4.7671e+06 0
+-95021 5.0067e+06 0
+-52605 5.2614e+06 0
+287240 4.9865e+06 0
+308730 4.5718e+06 0
+5690.1 4.5709e+06 0
+-137760 4.7973e+06 0
+8674.8 4.7823e+06 0
+147570 4.5297e+06 0
+72944 4.3664e+06 0
+-114670 4.4346e+06 0
+-179570 4.5603e+06 0
+-57524 4.5084e+06 0
+32156 4.3174e+06 0
+-80685 4.2547e+06 0
+-232570 4.3811e+06 0
+-214130 4.4561e+06 0
+-107720 4.3567e+06 0
+-103210 4.2514e+06 0
+-207000 4.2913e+06 0
+-291320 4.4041e+06 0
+-273860 4.4362e+06 0
+-200640 4.3623e+06 0
+-202260 4.3167e+06 0
+-312920 4.4063e+06 0
+-392070 4.5317e+06 0
+-346190 4.5352e+06 0
+-287430 4.4666e+06 0
+-336570 4.4981e+06 0
+-441860 4.64e+06 0
+-492700 4.7439e+06 0
+-464790 4.7332e+06 0
+-426060 4.7007e+06 0
+-474240 4.7859e+06 0
+-606870 4.9731e+06 0
+-678180 5.0777e+06 0
+-619480 5.0317e+06 0
+-583520 5.0295e+06 0
+-700470 5.218e+06 0
+-863960 5.4398e+06 0
+-908290 5.4908e+06 0
+-841430 5.4316e+06 0
+-831950 5.5023e+06 0
+-1.0117e+06 5.7872e+06 0
+-1.2436e+06 6.0387e+06 0
+-1.2394e+06 5.9951e+06 0
+-1.074e+06 5.8839e+06 0
+-1.1813e+06 6.1481e+06 0
+-1.5909e+06 6.6234e+06 0
+-1.7749e+06 6.7127e+06 0
+-1.5679e+06 6.4742e+06 0
+-1.5625e+06 6.6454e+06 0
+-2.1288e+06 7.3494e+06 0
+-2.6165e+06 7.6962e+06 0
+-2.3342e+06 7.2802e+06 0
+-2.0481e+06 7.2535e+06 0
+-2.9809e+06 8.4792e+06 0
+-3.9641e+06 9.1634e+06 0
+-3.2903e+06 8.217e+06 0
+-2.8523e+06 8.4034e+06 0
+-4.6822e+06 1.0822e+07 0
+-6.2477e+06 1.1787e+07 0
+-5.2811e+06 1.043e+07 0
+-4.5735e+06 1.0845e+07 0
+-5.9471e+06 1.3741e+07 0
+-9.2145e+06 1.7988e+07 0
+-1.2591e+07 2.0242e+07 0
+-4.3741e+06 1.1821e+07 0
+-8.3096e+06 2.7804e+07 0
+-1.4215e+07 2.669e+07 0
+-3.6287e+06 2.9411e+07 0
+-219160 1.2024e+07 0
+-1.4846e+07 5.8049e+07 0
+-1.361e+07 8.2455e+07 0
+-6.4986e+06 6.3734e+07 0
+-2.1545e+06 3.0513e+07 0
+-267280 6.1062e+06 0
+-83331 5785.9 0
+-80651 772.17 0
+-80678 399.29 0
+-80542 295.47 0
+-80122 402.73 0
+-79405 591.79 0
+-78431 793.11 0
+-77269 967.02 0
+-76000 1090.7 0
+-74696 1152 0
+-73421 1145 0
+-72224 1068.3 0
+-71143 923.89 0
+-70207 717.78 0
+-69433 460.79 0
+-68831 169.53 0
+-68400 -133.72 0
+-68131 -422.36 0
+-68009 -668.83 0
+-68014 -849.6 0
+-68129 -951.42 0
+-68342 -977.15 0
+-68652 -949.03 0
+-69070 -906.81 0
+-69622 -899.07 0
+-70338 -968.58 0
+-71255 -1136.4 0
+-72407 -1392.5 0
+-73827 -1703.9 0
+-75558 -2043.7 0
+-77661 -2441.7 0
+-80238 -3037.7 0
+-83439 -4112 0
+-87479 -6062.4 0
+-92631 -9310.7 0
+-99211 -14152 0
+-107550 -20601 0
+-117970 -28325 0
+-130770 -36734 0
+-146250 -45257 0
+-164720 -53711 0
+-186670 -62582 0
+-212760 -73004 0
+-243830 -86347 0
+-280850 -103560 0
+-324720 -124620 0
+-376130 -148550 0
+-435580 -174100 0
+-503600 -200890 0
+-581110 -230160 0
+-669660 -264520 0
+-771500 -306400 0
+-889090 -356170 0
+-1.0246e+06 -411120 0
+-1.1795e+06 -466670 0
+-1.3546e+06 -519760 0
+-1.5504e+06 -572370 0
+-1.768e+06 -632810 0
+-2.0092e+06 -712590 0
+-2.2758e+06 -819810 0
+-2.569e+06 -952520 0
+-2.8884e+06 -1.0967e+06 0
+-3.2331e+06 -1.2315e+06 0
+-3.6029e+06 -1.3401e+06 0
+-3.9998e+06 -1.4207e+06 0
+-4.4288e+06 -1.4894e+06 0
+-4.8958e+06 -1.5738e+06 0
+-5.4045e+06 -1.6968e+06 0
+-5.9539e+06 -1.8628e+06 0
+-6.538e+06 -2.0519e+06 0
+-7.1485e+06 -2.2294e+06 0
+-7.7796e+06 -2.3648e+06 0
+-8.4312e+06 -2.4499e+06 0
+-9.1088e+06 -2.5051e+06 0
+-9.8192e+06 -2.5688e+06 0
+-1.0565e+07 -2.675e+06 0
+-1.134e+07 -2.8318e+06 0
+-1.213e+07 -3.0128e+06 0
+-1.2923e+07 -3.1683e+06 0
+-1.3708e+07 -3.2498e+06 0
+-1.449e+07 -3.2355e+06 0
+-1.5281e+07 -3.1429e+06 0
+-1.6093e+07 -3.0217e+06 0
+-1.6931e+07 -2.93e+06 0
+-1.7788e+07 -2.9059e+06 0
+-1.8638e+07 -2.949e+06 0
+-1.9454e+07 -3.0193e+06 0
+-2.0216e+07 -3.0552e+06 0
+-2.0918e+07 -3.0003e+06 0
+-2.1574e+07 -2.8275e+06 0
+-2.2209e+07 -2.5507e+06 0
+-2.2852e+07 -2.2185e+06 0
+-2.3515e+07 -1.8955e+06 0
+-2.4193e+07 -1.638e+06 0
+-2.4861e+07 -1.4754e+06 0
+-2.5483e+07 -1.4019e+06 0
+-2.6025e+07 -1.3811e+06 0
+-2.6464e+07 -1.3605e+06 0
+-2.6798e+07 -1.2896e+06 0
+-2.7044e+07 -1.1352e+06 0
+-2.7233e+07 -890140 0
+522150 -57402 0
+495620 -54440 0
+470270 -51245 0
+446170 -48031 0
+423330 -44990 0
+401720 -42264 0
+381240 -39920 0
+361800 -37948 0
+343290 -36268 0
+325640 -34752 0
+308790 -33253 0
+292760 -31646 0
+277550 -29850 0
+263210 -27852 0
+249770 -25700 0
+237260 -23499 0
+225650 -21378 0
+214910 -19460 0
+204950 -17838 0
+195650 -16553 0
+186910 -15593 0
+178610 -14902 0
+170670 -14400 0
+163020 -14003 0
+155630 -13651 0
+148470 -13310 0
+141520 -12975 0
+134780 -12665 0
+128220 -12402 0
+121820 -12200 0
+115550 -12060 0
+109400 -11965 0
+103350 -11886 0
+97397 -11794 0
+91543 -11666 0
+85801 -11488 0
+80186 -11260 0
+74712 -10989 0
+69392 -10682 0
+64236 -10347 0
+59257 -9984.7 0
+54463 -9596.4 0
+49866 -9180.6 0
+45478 -8738 0
+41307 -8272 0
+37363 -7788.5 0
+33653 -7293.9 0
+30179 -6794.3 0
+26942 -6294.4 0
+23943 -5797.7 0
+21179 -5307.4 0
+18647 -4827.1 0
+16340 -4360.9 0
+14252 -3913.3 0
+12372 -3488.6 0
+10691 -3090.2 0
+9195 -2720.1 0
+7872.6 -2379.5 0
+6710.4 -2068.7 0
+5695.2 -1787.4 0
+4814 -1534.7 0
+4053.9 -1309.6 0
+3402.2 -1110.7 0
+2847.1 -935.86 0
+2377.2 -783.15 0
+1982.1 -650.45 0
+1652 -535.89 0
+1378.3 -437.84 0
+1152.7 -354.9 0
+967.97 -285.71 0
+817.45 -228.87 0
+695.29 -182.83 0
+596.42 -145.93 0
+516.55 -116.52 0
+452.14 -93.083 0
+400.31 -74.326 0
+358.76 -59.228 0
+325.65 -47.017 0
+299.55 -37.099 0
+279.35 -28.98 0
+264.29 -22.21 0
+253.89 -16.36 0
+247.94 -11.026 0
+246.51 -5.8636 0
+249.85 -0.6158 0
+258.36 4.8554 0
+272.52 10.557 0
+292.78 16.36 0
+319.47 22.007 0
+352.63 27.121 0
+391.89 31.23 0
+436.28 33.824 0
+484.01 34.482 0
+532.38 33.234 0
+577.8 31.552 0
+616.16 35.437 0
+642.78 65.837 0
+648.75 195.8 0
+595.82 686.36 0
+294.81 2488.6 0
+-1218.9 9250 0
+-9034.5 247910 0
+360330 4.7699e+06 0
+1.7691e+06 1.411e+07 0
+3.8298e+06 2.4317e+07 0
+4.2204e+06 2.7162e+07 0
+893390 1.6282e+07 0
+-709220 5.7954e+06 0
+4.1988e+06 1.4115e+07 0
+-629600 1.0167e+07 0
+4.6391e+06 1.2063e+07 0
+1.1014e+06 7.7498e+06 0
+1.984e+06 1.0639e+07 0
+2.1886e+06 7.4907e+06 0
+235490 7.8857e+06 0
+1.1919e+06 8.9208e+06 0
+2.2082e+06 6.7097e+06 0
+669950 5.7783e+06 0
+-166080 7.2719e+06 0
+991620 7.2672e+06 0
+1.3882e+06 5.5773e+06 0
+329300 5.3394e+06 0
+-141160 6.2743e+06 0
+502270 6.1996e+06 0
+834880 5.2649e+06 0
+367170 4.9515e+06 0
+-96276 5.361e+06 0
+72543 5.576e+06 0
+468110 5.1258e+06 0
+372580 4.6408e+06 0
+-57311 4.7553e+06 0
+-138820 5.0652e+06 0
+150410 4.9296e+06 0
+259850 4.5395e+06 0
+40781 4.4428e+06 0
+-154600 4.6297e+06 0
+-105390 4.7065e+06 0
+49601 4.5335e+06 0
+62194 4.3282e+06 0
+-113460 4.3347e+06 0
+-244290 4.4916e+06 0
+-160040 4.5121e+06 0
+-39668 4.3376e+06 0
+-105240 4.2354e+06 0
+-259770 4.341e+06 0
+-296200 4.4578e+06 0
+-219740 4.4126e+06 0
+-174580 4.2993e+06 0
+-237900 4.2964e+06 0
+-352670 4.4196e+06 0
+-388060 4.5107e+06 0
+-315400 4.4597e+06 0
+-280440 4.3834e+06 0
+-376080 4.4536e+06 0
+-484320 4.6117e+06 0
+-484110 4.6672e+06 0
+-431800 4.6065e+06 0
+-437530 4.5968e+06 0
+-525800 4.7283e+06 0
+-632790 4.8949e+06 0
+-657280 4.936e+06 0
+-595690 4.8732e+06 0
+-600270 4.9146e+06 0
+-747560 5.1317e+06 0
+-881210 5.3093e+06 0
+-865040 5.2916e+06 0
+-802170 5.2433e+06 0
+-863830 5.3892e+06 0
+-1.0578e+06 5.6728e+06 0
+-1.2088e+06 5.8267e+06 0
+-1.1555e+06 5.744e+06 0
+-1.0483e+06 5.7134e+06 0
+-1.2205e+06 6.034e+06 0
+-1.58e+06 6.4261e+06 0
+-1.6461e+06 6.4041e+06 0
+-1.4269e+06 6.2042e+06 0
+-1.527e+06 6.4897e+06 0
+-2.0832e+06 7.1315e+06 0
+-2.4024e+06 7.3021e+06 0
+-2.1127e+06 6.9468e+06 0
+-1.9784e+06 7.0742e+06 0
+-2.7554e+06 8.0643e+06 0
+-3.4737e+06 8.5166e+06 0
+-2.9149e+06 7.7872e+06 0
+-2.6631e+06 8.0751e+06 0
+-4.2882e+06 1.0032e+07 0
+-5.167e+06 1.0316e+07 0
+-3.8663e+06 8.933e+06 0
+-3.8783e+06 1.015e+07 0
+-6.1727e+06 1.3144e+07 0
+-7.7101e+06 1.4285e+07 0
+-7.6236e+06 1.4002e+07 0
+-4.9409e+06 1.2498e+07 0
+-6.7831e+06 1.9383e+07 0
+-1.596e+07 2.7699e+07 0
+-53595 9.9084e+06 0
+-1.3509e+07 3.7375e+07 0
+1.2761e+06 1.6045e+07 0
+-4.3038e+06 2.0548e+07 0
+-1.3901e+07 6.4417e+07 0
+-1.2845e+07 8.0226e+07 0
+-6.1619e+06 5.8538e+07 0
+-1.1934e+06 2.675e+07 0
+-5600.3 5.3037e+06 0
+-56788 18958 0
+-58119 1655.1 0
+-58179 461.84 0
+-58122 217.64 0
+-57957 203.33 0
+-57668 262.74 0
+-57253 344.74 0
+-56731 425.03 0
+-56133 488.33 0
+-55492 523.83 0
+-54844 523.79 0
+-54223 483.13 0
+-53660 399.57 0
+-53178 274.31 0
+-52799 112.82 0
+-52535 -74.401 0
+-52393 -271.78 0
+-52368 -459.53 0
+-52450 -615.98 0
+-52623 -721.34 0
+-52866 -762.67 0
+-53163 -738.98 0
+-53507 -664.7 0
+-53899 -569.25 0
+-54357 -490.89 0
+-54909 -464.93 0
+-55587 -509.73 0
+-56424 -617.34 0
+-57448 -757.62 0
+-58683 -902.04 0
+-60166 -1066.1 0
+-61967 -1357.2 0
+-64217 -2004 0
+-67128 -3339.6 0
+-71003 -5721.8 0
+-76211 -9402.4 0
+-83144 -14391 0
+-92149 -20393 0
+-103490 -26883 0
+-117320 -33339 0
+-133800 -39563 0
+-153190 -45924 0
+-175970 -53352 0
+-202940 -63001 0
+-235120 -75695 0
+-273520 -91466 0
+-318970 -109520 0
+-372030 -128810 0
+-433160 -148920 0
+-503160 -170730 0
+-583540 -196240 0
+-676570 -227340 0
+-784850 -264250 0
+-910530 -304740 0
+-1.0547e+06 -345120 0
+-1.2174e+06 -383010 0
+-1.3984e+06 -420380 0
+-1.5987e+06 -464570 0
+-1.8209e+06 -525720 0
+-2.0697e+06 -611060 0
+-2.3497e+06 -719050 0
+-2.6636e+06 -837290 0
+-3.0112e+06 -946910 0
+-3.3899e+06 -1.0321e+06 0
+-3.7971e+06 -1.0899e+06 0
+-4.2329e+06 -1.1344e+06 0
+-4.7009e+06 -1.1905e+06 0
+-5.2075e+06 -1.2809e+06 0
+-5.7576e+06 -1.4121e+06 0
+-6.3522e+06 -1.5681e+06 0
+-6.9866e+06 -1.7176e+06 0
+-7.6531e+06 -1.8308e+06 0
+-8.345e+06 -1.8969e+06 0
+-9.0605e+06 -1.9321e+06 0
+-9.803e+06 -1.9717e+06 0
+-1.0578e+07 -2.0502e+06 0
+-1.139e+07 -2.1795e+06 0
+-1.2236e+07 -2.3388e+06 0
+-1.3105e+07 -2.482e+06 0
+-1.3985e+07 -2.5601e+06 0
+-1.4866e+07 -2.5469e+06 0
+-1.5743e+07 -2.4543e+06 0
+-1.6617e+07 -2.3286e+06 0
+-1.7495e+07 -2.2291e+06 0
+-1.8378e+07 -2.1997e+06 0
+-1.926e+07 -2.2467e+06 0
+-2.0131e+07 -2.3348e+06 0
+-2.0974e+07 -2.4014e+06 0
+-2.1776e+07 -2.3842e+06 0
+-2.2532e+07 -2.2479e+06 0
+-2.3245e+07 -1.9993e+06 0
+-2.3921e+07 -1.6849e+06 0
+-2.4569e+07 -1.3729e+06 0
+-2.5193e+07 -1.1275e+06 0
+-2.579e+07 -986810 0
+-2.6346e+07 -950510 0
+-2.6848e+07 -982750 0
+-2.7283e+07 -1.0262e+06 0
+-2.7643e+07 -1.022e+06 0
+-2.7929e+07 -928170 0
+-2.8149e+07 -731090 0
+420780 -38115 0
+398620 -36013 0
+377600 -33763 0
+357770 -31521 0
+339090 -29427 0
+321510 -27581 0
+304890 -26027 0
+289130 -24751 0
+274110 -23686 0
+259750 -22732 0
+246040 -21777 0
+232980 -20729 0
+220610 -19530 0
+209010 -18172 0
+198210 -16697 0
+188240 -15185 0
+179090 -13732 0
+170700 -12429 0
+162980 -11343 0
+155810 -10502 0
+149080 -9893 0
+142680 -9471.8 0
+136540 -9178.1 0
+130590 -8952.2 0
+124820 -8749.6 0
+119220 -8548.1 0
+113760 -8347.3 0
+108450 -8160.9 0
+103270 -8006.5 0
+98190 -7895.4 0
+93197 -7827.2 0
+88269 -7789.3 0
+83395 -7761 0
+78574 -7720.9 0
+73817 -7652.2 0
+69138 -7546.6 0
+64552 -7403.8 0
+60076 -7229.1 0
+55723 -7029 0
+51504 -6808.7 0
+47428 -6570.1 0
+43505 -6313.1 0
+39745 -6037.1 0
+36159 -5742.7 0
+32757 -5432.4 0
+29545 -5110.4 0
+26529 -4781.1 0
+23711 -4448.8 0
+21093 -4116.6 0
+18674 -3786.8 0
+16452 -3461.4 0
+14423 -3142.8 0
+12582 -2833.7 0
+10922 -2537.4 0
+9435.8 -2256.7 0
+8112.5 -1993.8 0
+6941.8 -1750.4 0
+5912.3 -1527 0
+5012.7 -1323.8 0
+4231.4 -1140.5 0
+3557 -976.56 0
+2978.7 -831.03 0
+2485.7 -702.81 0
+2068.3 -590.52 0
+1717 -492.67 0
+1423.6 -407.82 0
+1180.3 -334.71 0
+980.02 -272.27 0
+816.46 -219.6 0
+683.74 -175.84 0
+576.63 -140.08 0
+490.48 -111.3 0
+421.34 -88.41 0
+365.88 -70.311 0
+321.42 -55.991 0
+285.82 -44.601 0
+257.38 -35.485 0
+234.76 -28.157 0
+216.91 -22.259 0
+202.99 -17.498 0
+192.41 -13.61 0
+184.74 -10.34 0
+179.76 -7.4473 0
+177.41 -4.7256 0
+177.76 -2.0251 0
+180.94 0.73119 0
+187.12 3.5396 0
+196.42 6.3194 0
+208.85 8.9229 0
+224.24 11.152 0
+242.17 12.786 0
+261.91 13.625 0
+282.42 13.595 0
+302.4 13.017 0
+320.52 13.428 0
+336.1 20.392 0
+350.11 53.809 0
+365.55 187.23 0
+375.88 700.55 0
+269.41 2675 0
+-694.12 10351 0
+16561 228520 0
+327420 4.3281e+06 0
+1.3976e+06 1.2948e+07 0
+3.2639e+06 2.2889e+07 0
+4.2431e+06 2.7041e+07 0
+1.8519e+06 1.8999e+07 0
+-1.001e+06 6.9693e+06 0
+2.3774e+06 1.0305e+07 0
+1.7587e+06 1.4095e+07 0
+2.0261e+06 6.7464e+06 0
+1.1697e+06 1.2166e+07 0
+2.8078e+06 8.7498e+06 0
+751170 8.4721e+06 0
+2.0866e+06 9.0279e+06 0
+1.789e+06 6.4967e+06 0
+8489.7 7.2017e+06 0
+787090 8.2825e+06 0
+1.8637e+06 6.4688e+06 0
+736600 5.4174e+06 0
+-216630 6.6376e+06 0
+637160 6.8762e+06 0
+1.2012e+06 5.5506e+06 0
+433140 5.0803e+06 0
+-146790 5.7735e+06 0
+244090 5.942e+06 0
+682010 5.2698e+06 0
+443990 4.788e+06 0
+-71789 5.02e+06 0
+-82988 5.3595e+06 0
+309310 5.0888e+06 0
+357500 4.5766e+06 0
+-11875 4.5616e+06 0
+-189500 4.8691e+06 0
+7366.9 4.8636e+06 0
+171470 4.5411e+06 0
+57076 4.3646e+06 0
+-156720 4.4837e+06 0
+-206130 4.6291e+06 0
+-66969 4.5489e+06 0
+16733 4.3289e+06 0
+-121520 4.2706e+06 0
+-291970 4.4301e+06 0
+-263020 4.5187e+06 0
+-143270 4.3868e+06 0
+-155720 4.2542e+06 0
+-285010 4.3179e+06 0
+-371530 4.4639e+06 0
+-345620 4.4868e+06 0
+-276250 4.3823e+06 0
+-292000 4.3324e+06 0
+-414890 4.4467e+06 0
+-498190 4.5914e+06 0
+-452810 4.5859e+06 0
+-400260 4.4949e+06 0
+-459630 4.5252e+06 0
+-572470 4.694e+06 0
+-632250 4.8177e+06 0
+-614700 4.792e+06 0
+-579110 4.7374e+06 0
+-630220 4.835e+06 0
+-777880 5.0548e+06 0
+-865920 5.1667e+06 0
+-812770 5.1015e+06 0
+-776360 5.0903e+06 0
+-897520 5.2976e+06 0
+-1.0796e+06 5.5501e+06 0
+-1.1458e+06 5.6065e+06 0
+-1.0704e+06 5.5146e+06 0
+-1.0414e+06 5.5782e+06 0
+-1.2525e+06 5.9228e+06 0
+-1.5309e+06 6.2063e+06 0
+-1.5065e+06 6.1069e+06 0
+-1.3182e+06 5.982e+06 0
+-1.5063e+06 6.3556e+06 0
+-2.0138e+06 6.9024e+06 0
+-2.1728e+06 6.9185e+06 0
+-1.8987e+06 6.6414e+06 0
+-1.9416e+06 6.9357e+06 0
+-2.6103e+06 7.7454e+06 0
+-3.0205e+06 7.9396e+06 0
+-2.5629e+06 7.3903e+06 0
+-2.5553e+06 7.8327e+06 0
+-3.8032e+06 9.2871e+06 0
+-4.3007e+06 9.3003e+06 0
+-3.1956e+06 8.273e+06 0
+-3.5992e+06 9.6758e+06 0
+-5.8521e+06 1.2094e+07 0
+-6.0679e+06 1.16e+07 0
+-4.9153e+06 1.0883e+07 0
+-4.9162e+06 1.2402e+07 0
+-6.9517e+06 1.6154e+07 0
+-1.1257e+07 2.018e+07 0
+-4.5165e+06 1.1876e+07 0
+-7.6037e+06 2.5208e+07 0
+-6.8527e+06 1.6588e+07 0
+-7.6225e+06 3.3028e+07 0
+1.7143e+06 1.0051e+07 0
+-6.8065e+06 2.9592e+07 0
+-1.4031e+07 6.8866e+07 0
+-1.0685e+07 7.5757e+07 0
+-4.4916e+06 5.3361e+07 0
+-1.1899e+06 2.4726e+07 0
+-137090 4.9901e+06 0
+-40747 11112 0
+-40971 1465.6 0
+-41001 436.88 0
+-40950 166.31 0
+-40865 112.67 0
+-40735 121.64 0
+-40554 149.74 0
+-40322 181.38 0
+-40048 207.88 0
+-39747 222.51 0
+-39438 219.59 0
+-39139 194.61 0
+-38872 144.7 0
+-38655 69.297 0
+-38507 -29.074 0
+-38437 -144.22 0
+-38454 -266.04 0
+-38554 -381.03 0
+-38731 -473.75 0
+-38967 -529.33 0
+-39243 -537.14 0
+-39538 -494.65 0
+-39839 -410.46 0
+-40141 -304.56 0
+-40453 -204.39 0
+-40797 -136.22 0
+-41199 -114.33 0
+-41689 -133.03 0
+-42287 -168.53 0
+-43004 -196.31 0
+-43858 -223.54 0
+-44896 -327.02 0
+-46226 -677.59 0
+-48058 -1528.8 0
+-50705 -3155.9 0
+-54567 -5753.8 0
+-60068 -9329.6 0
+-67567 -13651 0
+-77292 -18301 0
+-89319 -22862 0
+-103660 -27159 0
+-120400 -31451 0
+-139910 -36433 0
+-162890 -42982 0
+-190340 -51738 0
+-223310 -62742 0
+-262660 -75407 0
+-308930 -88921 0
+-362510 -102920 0
+-424040 -117980 0
+-494810 -135480 0
+-576870 -156750 0
+-672580 -181910 0
+-783770 -209280 0
+-911080 -236200 0
+-1.054e+06 -261100 0
+-1.2121e+06 -285710 0
+-1.3863e+06 -315900 0
+-1.5806e+06 -359570 0
+-1.8014e+06 -422300 0
+-2.0554e+06 -502750 0
+-2.3472e+06 -590950 0
+-2.6762e+06 -671730 0
+-3.0375e+06 -732190 0
+-3.4247e+06 -769650 0
+-3.834e+06 -795080 0
+-4.2679e+06 -828850 0
+-4.7343e+06 -890090 0
+-5.2433e+06 -985190 0
+-5.8011e+06 -1.1023e+06 0
+-6.4064e+06 -1.2163e+06 0
+-7.0501e+06 -1.3018e+06 0
+-7.7205e+06 -1.3486e+06 0
+-8.4096e+06 -1.3684e+06 0
+-9.1178e+06 -1.39e+06 0
+-9.8539e+06 -1.4431e+06 0
+-1.0629e+07 -1.5399e+06 0
+-1.1449e+07 -1.6653e+06 0
+-1.2309e+07 -1.7816e+06 0
+-1.3193e+07 -1.8464e+06 0
+-1.408e+07 -1.835e+06 0
+-1.4951e+07 -1.7548e+06 0
+-1.5799e+07 -1.6439e+06 0
+-1.6627e+07 -1.5541e+06 0
+-1.7449e+07 -1.526e+06 0
+-1.8276e+07 -1.5689e+06 0
+-1.9112e+07 -1.6545e+06 0
+-1.9949e+07 -1.7287e+06 0
+-2.0768e+07 -1.7343e+06 0
+-2.1546e+07 -1.6362e+06 0
+-2.2261e+07 -1.4362e+06 0
+-2.2904e+07 -1.1734e+06 0
+-2.3476e+07 -908650 0
+-2.3989e+07 -702090 0
+-2.4458e+07 -591490 0
+-2.4897e+07 -580090 0
+-2.5313e+07 -637310 0
+-2.5704e+07 -710840 0
+-2.606e+07 -744970 0
+-2.6366e+07 -698200 0
+-2.6608e+07 -554820 0
+316430 -22814 0
+299310 -21485 0
+283170 -20071 0
+268040 -18674 0
+253870 -17383 0
+240590 -16262 0
+228060 -15336 0
+216170 -14592 0
+204830 -13983 0
+193960 -13442 0
+183560 -12893 0
+173650 -12277 0
+164280 -11556 0
+155520 -10728 0
+147420 -9820.7 0
+140000 -8888.4 0
+133250 -7995.1 0
+127110 -7200.2 0
+121500 -6545.8 0
+116320 -6048.3 0
+111460 -5698.2 0
+106830 -5465.6 0
+102360 -5310.6 0
+98025 -5194.6 0
+93798 -5089.2 0
+89676 -4981.2 0
+85656 -4871.2 0
+81733 -4769.1 0
+77893 -4686.6 0
+74120 -4631.3 0
+70392 -4602.9 0
+66695 -4592.9 0
+63021 -4588.2 0
+59372 -4574.8 0
+55759 -4542 0
+52197 -4484.8 0
+48700 -4403.3 0
+45283 -4301.3 0
+41958 -4183 0
+38735 -4052 0
+35621 -3909.6 0
+32625 -3755.8 0
+29755 -3590.3 0
+27021 -3413.6 0
+24429 -3227.1 0
+21985 -3033.6 0
+19694 -2836 0
+17558 -2636.6 0
+15577 -2437.5 0
+13750 -2240 0
+12076 -2045.1 0
+10551 -1854.4 0
+9171.5 -1669.4 0
+7932.4 -1492.3 0
+6826.5 -1324.6 0
+5846 -1168 0
+4982.1 -1023.2 0
+4225.7 -890.62 0
+3567.6 -770.39 0
+2998.6 -662.26 0
+2509.7 -565.81 0
+2092.2 -480.47 0
+1737.9 -405.48 0
+1439.1 -339.96 0
+1189 -282.98 0
+980.99 -233.64 0
+809.5 -191.18 0
+669.27 -154.97 0
+555.54 -124.49 0
+463.98 -99.235 0
+390.67 -78.687 0
+332.17 -62.242 0
+285.55 -49.245 0
+248.39 -39.035 0
+218.73 -31.005 0
+195.07 -24.652 0
+176.22 -19.589 0
+161.25 -15.54 0
+149.4 -12.305 0
+140.11 -9.7241 0
+132.91 -7.6546 0
+127.49 -5.9561 0
+123.65 -4.495 0
+121.3 -3.1558 0
+120.43 -1.855 0
+121.07 -0.55005 0
+123.26 0.75723 0
+127.02 2.0245 0
+132.29 3.1776 0
+138.9 4.1234 0
+146.55 4.768 0
+154.83 5.0472 0
+163.21 4.9928 0
+171.17 4.9193 0
+178.55 6.0471 0
+186.41 12.803 0
+199.61 41.817 0
+233.7 158.38 0
+330.78 627.58 0
+571.08 2547.9 0
+838.94 10619 0
+498.92 221790 0
+285970 4.0128e+06 0
+1.2334e+06 1.2005e+07 0
+3.0142e+06 2.1334e+07 0
+3.8691e+06 2.6553e+07 0
+2.4752e+06 2.1163e+07 0
+-604100 8.9994e+06 0
+786300 7.453e+06 0
+2.8231e+06 1.4565e+07 0
+-463330 7.6008e+06 0
+3.5747e+06 1.1685e+07 0
+954410 7.5414e+06 0
+1.9258e+06 1.0146e+07 0
+1.5778e+06 7.3259e+06 0
+390740 8.363e+06 0
+1.8589e+06 8.2272e+06 0
+1.6156e+06 5.9584e+06 0
+-28645 6.5371e+06 0
+446060 7.6777e+06 0
+1.5651e+06 6.2974e+06 0
+760490 5.1712e+06 0
+-193220 6.0695e+06 0
+356150 6.5128e+06 0
+963130 5.5298e+06 0
+500530 4.9009e+06 0
+-98097 5.3427e+06 0
+36346 5.6835e+06 0
+496950 5.2667e+06 0
+463540 4.6908e+06 0
+-29202 4.7444e+06 0
+-188640 5.1349e+06 0
+139170 5.0384e+06 0
+292920 4.5615e+06 0
+25910 4.4293e+06 0
+-208960 4.6849e+06 0
+-127150 4.787e+06 0
+52346 4.5636e+06 0
+42881 4.3356e+06 0
+-154890 4.3698e+06 0
+-285730 4.5516e+06 0
+-190560 4.5679e+06 0
+-65839 4.3653e+06 0
+-149590 4.2477e+06 0
+-326370 4.3807e+06 0
+-358980 4.5252e+06 0
+-270850 4.4588e+06 0
+-237450 4.3132e+06 0
+-321510 4.3216e+06 0
+-441320 4.4758e+06 0
+-473590 4.5704e+06 0
+-405580 4.4989e+06 0
+-382300 4.4105e+06 0
+-487410 4.4921e+06 0
+-599760 4.6733e+06 0
+-605160 4.7354e+06 0
+-562610 4.6552e+06 0
+-574370 4.6324e+06 0
+-666370 4.7861e+06 0
+-784530 4.9804e+06 0
+-821420 5.0139e+06 0
+-763220 4.9294e+06 0
+-769200 4.9771e+06 0
+-924090 5.2203e+06 0
+-1.0711e+06 5.4126e+06 0
+-1.0661e+06 5.3865e+06 0
+-996810 5.3183e+06 0
+-1.0492e+06 5.473e+06 0
+-1.2692e+06 5.805e+06 0
+-1.4487e+06 5.9691e+06 0
+-1.3687e+06 5.8319e+06 0
+-1.2479e+06 5.8081e+06 0
+-1.4977e+06 6.2333e+06 0
+-1.921e+06 6.656e+06 0
+-1.9431e+06 6.5517e+06 0
+-1.7051e+06 6.3691e+06 0
+-1.9024e+06 6.8009e+06 0
+-2.5014e+06 7.4679e+06 0
+-2.6647e+06 7.4561e+06 0
+-2.2316e+06 7.0262e+06 0
+-2.3975e+06 7.5664e+06 0
+-3.4733e+06 8.7556e+06 0
+-3.6524e+06 8.5697e+06 0
+-2.7864e+06 7.8338e+06 0
+-3.4222e+06 9.238e+06 0
+-5.1371e+06 1.0878e+07 0
+-4.7778e+06 9.9139e+06 0
+-3.6036e+06 9.4823e+06 0
+-4.9199e+06 1.205e+07 0
+-6.7536e+06 1.4039e+07 0
+-7.5854e+06 1.4576e+07 0
+-5.2211e+06 1.243e+07 0
+-5.3687e+06 1.7096e+07 0
+-1.2174e+07 2.3347e+07 0
+-483610 1.1703e+07 0
+-9.4087e+06 2.6333e+07 0
+-3.2131e+06 2.4732e+07 0
+541650 9.7395e+06 0
+-8.7597e+06 3.7916e+07 0
+-1.2487e+07 7.0217e+07 0
+-9.6102e+06 7.2424e+07 0
+-4.2161e+06 4.9538e+07 0
+-969410 2.2499e+07 0
+-27152 4.4589e+06 0
+-28166 15023 0
+-27795 1551 0
+-27661 383.68 0
+-27593 118.09 0
+-27536 60.93 0
+-27471 55.277 0
+-27389 63.01 0
+-27287 73.56 0
+-27166 82.415 0
+-27033 86.177 0
+-26896 81.658 0
+-26766 66.006 0
+-26657 37.126 0
+-26581 -5.778 0
+-26551 -61.641 0
+-26574 -127.07 0
+-26657 -196.14 0
+-26798 -260.55 0
+-26989 -310.51 0
+-27217 -336.23 0
+-27462 -330.25 0
+-27704 -290.05 0
+-27926 -220.21 0
+-28119 -132.9 0
+-28286 -45.585 0
+-28441 24.538 0
+-28605 67.811 0
+-28799 87.869 0
+-29037 100.93 0
+-29322 124.59 0
+-29658 156.04 0
+-30072 145.89 0
+-30654 -19.196 0
+-31589 -509.73 0
+-33173 -1512.4 0
+-35791 -3159.9 0
+-39849 -5457.5 0
+-45686 -8245.7 0
+-53495 -11238 0
+-63295 -14143 0
+-75017 -16832 0
+-88655 -19469 0
+-104450 -22514 0
+-123010 -26555 0
+-145210 -32022 0
+-172020 -38950 0
+-204230 -46950 0
+-242320 -55471 0
+-286550 -64239 0
+-337370 -73586 0
+-395790 -84370 0
+-463440 -97410 0
+-542200 -112750 0
+-633430 -129300 0
+-737390 -145390 0
+-853390 -160090 0
+-980910 -174760 0
+-1.1213e+06 -193460 0
+-1.2788e+06 -221570 0
+-1.4606e+06 -262800 0
+-1.6741e+06 -316030 0
+-1.9238e+06 -374270 0
+-2.2088e+06 -426880 0
+-2.5228e+06 -464850 0
+-2.8574e+06 -486270 0
+-3.2068e+06 -498780 0
+-3.5726e+06 -516790 0
+-3.9636e+06 -554070 0
+-4.3921e+06 -615600 0
+-4.8674e+06 -693510 0
+-5.3903e+06 -770080 0
+-5.9515e+06 -827110 0
+-6.537e+06 -856550 0
+-7.1356e+06 -866110 0
+-7.7457e+06 -876110 0
+-8.3769e+06 -908250 0
+-9.0445e+06 -972360 0
+-9.7598e+06 -1.0586e+06 0
+-1.0522e+07 -1.1403e+06 0
+-1.1313e+07 -1.1865e+06 0
+-1.2109e+07 -1.1779e+06 0
+-1.2881e+07 -1.1187e+06 0
+-1.3617e+07 -1.036e+06 0
+-1.432e+07 -968040 0
+-1.5009e+07 -946160 0
+-1.5705e+07 -978870 0
+-1.6426e+07 -1.0466e+06 0
+-1.7169e+07 -1.1093e+06 0
+-1.7913e+07 -1.1234e+06 0
+-1.8623e+07 -1.0606e+06 0
+-1.9266e+07 -920260 0
+-1.9816e+07 -730530 0
+-2.0271e+07 -537310 0
+-2.0645e+07 -387190 0
+-2.0969e+07 -310620 0
+-2.1273e+07 -311800 0
+-2.158e+07 -368460 0
+-2.1898e+07 -440690 0
+-2.2216e+07 -484910 0
+-2.251e+07 -467800 0
+-2.2749e+07 -375660 0
+216360 -11774 0
+204420 -11058 0
+193220 -10299 0
+182780 -9554.7 0
+173040 -8873.1 0
+163940 -8288.1 0
+155380 -7812.7 0
+147250 -7438.2 0
+139470 -7137.4 0
+132010 -6871.4 0
+124850 -6599 0
+118030 -6286.1 0
+111580 -5912.9 0
+105560 -5478.6 0
+100030 -4999.9 0
+94999 -4507 0
+90456 -4035.8 0
+86359 -3618.9 0
+82637 -3279.1 0
+79209 -3025 0
+75996 -2850.6 0
+72929 -2738.9 0
+69962 -2667.8 0
+67068 -2616.1 0
+64237 -2568.4 0
+61467 -2517.8 0
+58760 -2465.2 0
+56113 -2416.3 0
+53516 -2377.8 0
+50956 -2353.8 0
+48419 -2344.2 0
+45892 -2344.5 0
+43371 -2347.1 0
+40858 -2344.7 0
+38363 -2331.3 0
+35897 -2304.2 0
+33474 -2263.8 0
+31105 -2212 0
+28798 -2151.5 0
+26562 -2084.1 0
+24402 -2010.6 0
+22324 -1931.2 0
+20335 -1845.5 0
+18440 -1753.9 0
+16647 -1657.3 0
+14957 -1557.1 0
+13375 -1454.7 0
+11902 -1351.6 0
+10537 -1248.7 0
+9281 -1146.6 0
+8131.4 -1045.9 0
+7086.6 -947.4 0
+6143.7 -851.92 0
+5298.7 -760.48 0
+4546.7 -674.05 0
+3882 -593.38 0
+3298.2 -518.95 0
+2788.7 -450.96 0
+2346.8 -389.42 0
+1966.1 -334.2 0
+1640 -285.06 0
+1362.4 -241.68 0
+1127.6 -203.65 0
+930.19 -170.47 0
+765.44 -141.66 0
+629 -116.74 0
+516.95 -95.303 0
+425.79 -77.041 0
+352.27 -61.69 0
+293.45 -49.002 0
+246.66 -38.71 0
+209.57 -30.509 0
+180.18 -24.06 0
+156.87 -19.021 0
+138.34 -15.077 0
+123.59 -11.97 0
+111.87 -9.5025 0
+102.56 -7.5368 0
+95.191 -5.9751 0
+89.372 -4.7415 0
+84.801 -3.767 0
+81.258 -2.9837 0
+78.594 -2.3261 0
+76.73 -1.737 0
+75.638 -1.1748 0
+75.32 -0.61802 0
+75.781 -0.066508 0
+77.006 0.46105 0
+78.941 0.93234 0
+81.48 1.3087 0
+84.454 1.5552 0
+87.65 1.6563 0
+90.841 1.6534 0
+93.9 1.7563 0
+97.127 2.7453 0
+102.31 7.5427 0
+116.43 27.696 0
+164.77 111.25 0
+336.72 466.59 0
+935.17 2022.6 0
+2999.9 9006.7 0
+23891 201480 0
+267640 3.7039e+06 0
+1.0989e+06 1.1099e+07 0
+2.5285e+06 2.0269e+07 0
+3.7343e+06 2.581e+07 0
+2.7217e+06 2.251e+07 0
+-61584 1.1397e+07 0
+-232140 6.1938e+06 0
+2.712e+06 1.2837e+07 0
+228220 1.0601e+07 0
+2.0263e+06 7.7217e+06 0
+858590 1.0713e+07 0
+2.4026e+06 8.5053e+06 0
+833010 8.3939e+06 0
+2.0793e+06 8.3956e+06 0
+1.0485e+06 6.4637e+06 0
+106310 7.857e+06 0
+1.4983e+06 7.7038e+06 0
+1.4824e+06 5.6735e+06 0
+-19474 5.9935e+06 0
+208600 7.1411e+06 0
+1.2383e+06 6.1463e+06 0
+775890 5.0144e+06 0
+-107780 5.6017e+06 0
+112960 6.1498e+06 0
+701940 5.4885e+06 0
+541570 4.8056e+06 0
+-22934 4.9918e+06 0
+-119020 5.4194e+06 0
+294410 5.2392e+06 0
+424750 4.6497e+06 0
+16795 4.5415e+06 0
+-245610 4.915e+06 0
+-26759 4.9689e+06 0
+184510 4.5798e+06 0
+40589 4.3586e+06 0
+-207920 4.5253e+06 0
+-241290 4.701e+06 0
+-85079 4.5952e+06 0
+-9491.9 4.3521e+06 0
+-162460 4.2972e+06 0
+-343180 4.4792e+06 0
+-310450 4.5846e+06 0
+-181600 4.4313e+06 0
+-206420 4.2701e+06 0
+-358000 4.3524e+06 0
+-444890 4.5318e+06 0
+-410230 4.5449e+06 0
+-350730 4.4117e+06 0
+-384000 4.3635e+06 0
+-511760 4.4996e+06 0
+-594090 4.6558e+06 0
+-555850 4.6444e+06 0
+-515080 4.5382e+06 0
+-580400 4.5661e+06 0
+-695950 4.7588e+06 0
+-764330 4.9013e+06 0
+-756800 4.8588e+06 0
+-724650 4.7855e+06 0
+-778720 4.9023e+06 0
+-934240 5.1492e+06 0
+-1.0307e+06 5.2586e+06 0
+-982910 5.1777e+06 0
+-944140 5.1639e+06 0
+-1.0631e+06 5.3898e+06 0
+-1.2631e+06 5.6722e+06 0
+-1.3442e+06 5.7236e+06 0
+-1.2448e+06 5.59e+06 0
+-1.212e+06 5.676e+06 0
+-1.4897e+06 6.1091e+06 0
+-1.8023e+06 6.3908e+06 0
+-1.7258e+06 6.2116e+06 0
+-1.5512e+06 6.1419e+06 0
+-1.8583e+06 6.6631e+06 0
+-2.3768e+06 7.184e+06 0
+-2.3715e+06 7.0337e+06 0
+-1.9966e+06 6.7456e+06 0
+-2.2462e+06 7.3187e+06 0
+-3.1456e+06 8.2603e+06 0
+-3.2121e+06 8.0345e+06 0
+-2.4907e+06 7.4902e+06 0
+-3.1232e+06 8.7062e+06 0
+-4.498e+06 9.941e+06 0
+-3.8621e+06 8.8858e+06 0
+-3.0892e+06 8.8648e+06 0
+-4.7822e+06 1.1422e+07 0
+-6.0626e+06 1.2227e+07 0
+-5.2523e+06 1.129e+07 0
+-4.6464e+06 1.1788e+07 0
+-5.5956e+06 1.4591e+07 0
+-9.7537e+06 1.9072e+07 0
+-4.0231e+06 1.1554e+07 0
+-7.3902e+06 2.3265e+07 0
+-2.2933e+06 1.0933e+07 0
+-8.819e+06 3.0168e+07 0
+-218130 1.6605e+07 0
+-1.2811e+06 1.2948e+07 0
+-9.4277e+06 4.4552e+07 0
+-1.2316e+07 7.1345e+07 0
+-8.138e+06 6.8327e+07 0
+-3.3488e+06 4.5608e+07 0
+-825710 2.0856e+07 0
+-64509 4.1744e+06 0
+-17849 11549 0
+-17506 1251.3 0
+-17346 281.14 0
+-17275 71.103 0
+-17236 28.413 0
+-17203 22.324 0
+-17165 24.089 0
+-17121 27.094 0
+-17071 29.268 0
+-17016 29.222 0
+-16962 25.534 0
+-16915 16.792 0
+-16880 1.8616 0
+-16868 -19.79 0
+-16885 -47.751 0
+-16937 -80.375 0
+-17027 -114.62 0
+-17154 -146.13 0
+-17312 -169.58 0
+-17490 -179.55 0
+-17672 -171.69 0
+-17840 -144.27 0
+-17980 -99.374 0
+-18080 -43.364 0
+-18140 14.331 0
+-18168 64.196 0
+-18178 100.78 0
+-18183 126.06 0
+-18192 149.27 0
+-18203 180.79 0
+-18211 219.73 0
+-18233 238.94 0
+-18333 174.71 0
+-18659 -69.701 0
+-19452 -600.85 0
+-21030 -1494.9 0
+-23735 -2755.2 0
+-27843 -4290.2 0
+-33503 -5935.3 0
+-40709 -7521.2 0
+-49366 -8970.8 0
+-59428 -10373 0
+-71049 -11986 0
+-84679 -14140 0
+-101020 -17079 0
+-120850 -20826 0
+-144780 -25160 0
+-173180 -29764 0
+-206220 -34473 0
+-244150 -39450 0
+-287670 -45148 0
+-337910 -52000 0
+-396180 -60014 0
+-463370 -68596 0
+-539500 -76845 0
+-623930 -84326 0
+-716310 -91888 0
+-818000 -101890 0
+-933020 -117400 0
+-1.0677e+06 -140460 0
+-1.2284e+06 -170320 0
+-1.419e+06 -202840 0
+-1.6382e+06 -231860 0
+-1.8798e+06 -252110 0
+-2.1355e+06 -262530 0
+-2.3997e+06 -267590 0
+-2.6734e+06 -275800 0
+-2.9645e+06 -295310 0
+-3.2849e+06 -329230 0
+-3.6439e+06 -373070 0
+-4.043e+06 -416470 0
+-4.4745e+06 -448570 0
+-4.9252e+06 -464360 0
+-5.3838e+06 -468150 0
+-5.848e+06 -471870 0
+-6.3264e+06 -488560 0
+-6.8342e+06 -524470 0
+-7.3836e+06 -574190 0
+-7.9757e+06 -621980 0
+-8.5961e+06 -649150 0
+-9.2195e+06 -643830 0
+-9.8198e+06 -607900 0
+-1.0382e+07 -557420 0
+-1.0908e+07 -515620 0
+-1.1418e+07 -501920 0
+-1.1937e+07 -522230 0
+-1.2485e+07 -565190 0
+-1.3063e+07 -606480 0
+-1.3652e+07 -619030 0
+-1.4218e+07 -584780 0
+-1.4723e+07 -502560 0
+-1.5139e+07 -389070 0
+-1.5459e+07 -272560 0
+-1.57e+07 -182250 0
+-1.5892e+07 -137700 0
+-1.6074e+07 -142260 0
+-1.6274e+07 -182590 0
+-1.6504e+07 -233920 0
+-1.6754e+07 -268760 0
+-1.6999e+07 -265730 0
+-1.7204e+07 -215590 0
+128200 -4803.9 0
+121030 -4502.1 0
+114320 -4183.4 0
+108100 -3872.1 0
+102320 -3589.2 0
+96928 -3348.6 0
+91858 -3155.7 0
+87044 -3006.2 0
+82434 -2887.9 0
+77999 -2783.9 0
+73737 -2676.2 0
+69668 -2550.3 0
+65827 -2397.7 0
+62253 -2218.3 0
+58978 -2019.6 0
+56015 -1814.8 0
+53357 -1619.2 0
+50974 -1447 0
+48821 -1307.7 0
+46843 -1204.8 0
+44990 -1135.7 0
+43218 -1092.8 0
+41498 -1066.6 0
+39814 -1048.1 0
+38162 -1030.7 0
+36542 -1011.7 0
+34955 -991.5 0
+33401 -972.68 0
+31874 -958.17 0
+30365 -949.8 0
+28865 -947.48 0
+27367 -949.24 0
+25867 -951.94 0
+24368 -952.33 0
+22876 -947.96 0
+21400 -937.7 0
+19948 -921.69 0
+18527 -900.84 0
+17143 -876.26 0
+15801 -848.79 0
+14505 -818.79 0
+13259 -786.29 0
+12067 -751.23 0
+10932 -713.72 0
+9857.9 -674.15 0
+8847.3 -633.1 0
+7901.7 -591.22 0
+7021.8 -549.06 0
+6207.6 -506.99 0
+5458.8 -465.29 0
+4774.4 -424.17 0
+4153.3 -383.93 0
+3593.7 -344.93 0
+3093.1 -307.61 0
+2648.5 -272.35 0
+2256.3 -239.47 0
+1912.7 -209.17 0
+1613.6 -181.54 0
+1354.8 -156.57 0
+1132.3 -134.21 0
+942.13 -114.34 0
+780.65 -96.835 0
+644.34 -81.507 0
+530.01 -68.155 0
+434.8 -56.568 0
+356.15 -46.551 0
+291.76 -37.941 0
+239.56 -30.609 0
+197.64 -24.451 0
+164.26 -19.37 0
+137.85 -15.259 0
+117.01 -11.993 0
+100.58 -9.434 0
+87.588 -7.4428 0
+77.297 -5.8904 0
+69.128 -4.6709 0
+62.641 -3.7052 0
+57.495 -2.9381 0
+53.414 -2.3314 0
+50.179 -1.8556 0
+47.611 -1.4841 0
+45.577 -1.1904 0
+43.988 -0.94863 0
+42.791 -0.73603 0
+41.963 -0.53591 0
+41.498 -0.33943 0
+41.394 -0.14604 0
+41.638 0.037668 0
+42.199 0.20028 0
+43.022 0.32861 0
+44.027 0.41184 0
+45.118 0.44815 0
+46.216 0.4609 0
+47.335 0.55097 0
+48.85 1.0944 0
+52.466 3.5492 0
+64.964 13.944 0
+113.39 58.782 0
+307.6 261.11 0
+1095.8 1214.3 0
+4210.9 5911.5 0
+7906.1 191130 0
+219410 3.4868e+06 0
+1.0194e+06 1.0327e+07 0
+2.0615e+06 1.9087e+07 0
+3.3191e+06 2.5182e+07 0
+2.9783e+06 2.338e+07 0
+526600 1.3557e+07 0
+-673390 6.1666e+06 0
+1.8309e+06 1.0482e+07 0
+1.4075e+06 1.268e+07 0
+25920 6.6285e+06 0
+2.4779e+06 1.1168e+07 0
+896170 7.2598e+06 0
+1.7081e+06 9.6194e+06 0
+1.2182e+06 7.2876e+06 0
+711970 8.4218e+06 0
+1.9664e+06 7.4458e+06 0
+864700 5.8875e+06 0
+-61705 7.2347e+06 0
+1.1615e+06 7.2926e+06 0
+1.3358e+06 5.4703e+06 0
+48965 5.5698e+06 0
+7217.1 6.644e+06 0
+920200 5.9893e+06 0
+776290 4.959e+06 0
+-24419 5.2145e+06 0
+-73347 5.7778e+06 0
+448070 5.4446e+06 0
+534870 4.7756e+06 0
+51906 4.7218e+06 0
+-219870 5.1581e+06 0
+92988 5.1817e+06 0
+331900 4.6508e+06 0
+49096 4.4134e+06 0
+-262940 4.7142e+06 0
+-174000 4.8803e+06 0
+44073 4.6155e+06 0
+19993 4.3459e+06 0
+-201220 4.4028e+06 0
+-328710 4.6106e+06 0
+-227070 4.6263e+06 0
+-101180 4.407e+06 0
+-191870 4.2723e+06 0
+-384740 4.4212e+06 0
+-419300 4.5965e+06 0
+-320490 4.5174e+06 0
+-296270 4.3388e+06 0
+-401700 4.3574e+06 0
+-523190 4.5422e+06 0
+-548640 4.6357e+06 0
+-491010 4.5464e+06 0
+-483530 4.4534e+06 0
+-591320 4.5436e+06 0
+-703450 4.7415e+06 0
+-718280 4.8121e+06 0
+-685530 4.7143e+06 0
+-699840 4.6789e+06 0
+-795600 4.8582e+06 0
+-921380 5.0761e+06 0
+-962790 5.0932e+06 0
+-907350 4.9915e+06 0
+-915660 5.054e+06 0
+-1.0718e+06 5.3193e+06 0
+-1.2279e+06 5.5195e+06 0
+-1.2294e+06 5.4804e+06 0
+-1.1442e+06 5.3912e+06 0
+-1.1996e+06 5.5761e+06 0
+-1.4701e+06 5.9713e+06 0
+-1.6619e+06 6.1134e+06 0
+-1.5328e+06 5.911e+06 0
+-1.4461e+06 5.9642e+06 0
+-1.8129e+06 6.5197e+06 0
+-2.2223e+06 6.8805e+06 0
+-2.1041e+06 6.6458e+06 0
+-1.8369e+06 6.5262e+06 0
+-2.1666e+06 7.1332e+06 0
+-2.8317e+06 7.7901e+06 0
+-2.7823e+06 7.5201e+06 0
+-2.3032e+06 7.2388e+06 0
+-2.8822e+06 8.277e+06 0
+-3.8954e+06 9.1482e+06 0
+-3.3455e+06 8.2995e+06 0
+-2.8108e+06 8.4309e+06 0
+-4.4409e+06 1.0606e+07 0
+-5.1857e+06 1.0757e+07 0
+-3.8674e+06 9.531e+06 0
+-4.1776e+06 1.1135e+07 0
+-5.8192e+06 1.3374e+07 0
+-7.1626e+06 1.4569e+07 0
+-5.3087e+06 1.2418e+07 0
+-4.8692e+06 1.5906e+07 0
+-8.64e+06 1.8721e+07 0
+-1.5841e+06 1.4123e+07 0
+-5.4867e+06 1.7085e+07 0
+-6.0649e+06 2.8065e+07 0
+715310 1.1645e+07 0
+-3.0712e+06 1.787e+07 0
+-1.024e+07 4.9983e+07 0
+-1.0809e+07 7.0423e+07 0
+-6.8939e+06 6.4675e+07 0
+-3.4153e+06 4.3013e+07 0
+-662270 1.9244e+07 0
+-17692 3.7872e+06 0
+-10737 11605 0
+-9870 824.02 0
+-9626 156.64 0
+-9562.7 32.549 0
+-9539.6 9.9537 0
+-9524.1 7.0005 0
+-9508.4 7.5156 0
+-9491 8.3001 0
+-9471.9 8.6159 0
+-9452.3 8.0461 0
+-9434.2 6.1113 0
+-9420.8 2.2836 0
+-9415.9 -3.8943 0
+-9423.6 -12.659 0
+-9448.3 -23.873 0
+-9493.2 -36.889 0
+-9559.9 -50.47 0
+-9647.6 -62.799 0
+-9751.9 -71.628 0
+-9865.3 -74.615 0
+-9977.1 -69.836 0
+-10075 -56.428 0
+-10148 -35.158 0
+-10188 -8.6341 0
+-10193 19.164 0
+-10165 44.155 0
+-10114 63.969 0
+-10047 79.451 0
+-9966.6 94.657 0
+-9870.6 114.23 0
+-9753.1 137.98 0
+-9621.3 154.24 0
+-9516.7 135.26 0
+-9536.7 38.578 0
+-9845.1 -182.74 0
+-10660 -562.41 0
+-12215 -1102 0
+-14701 -1761.3 0
+-18214 -2467.4 0
+-22744 -3145.1 0
+-28211 -3759.2 0
+-34567 -4347.7 0
+-41900 -5022.4 0
+-50499 -5927.5 0
+-60828 -7170.1 0
+-73405 -8759.5 0
+-88641 -10599 0
+-106760 -12550 0
+-127850 -14533 0
+-152040 -16615 0
+-179710 -18981 0
+-211560 -21811 0
+-248340 -25105 0
+-290550 -28609 0
+-338120 -31949 0
+-390600 -34962 0
+-447830 -38051 0
+-510900 -42270 0
+-582770 -48958 0
+-667910 -58984 0
+-770860 -71978 0
+-894080 -86074 0
+-1.0364e+06 -98506 0
+-1.1932e+06 -106950 0
+-1.3581e+06 -110940 0
+-1.5271e+06 -112500 0
+-1.7005e+06 -115470 0
+-1.8844e+06 -123520 0
+-2.0875e+06 -138100 0
+-2.3169e+06 -157220 0
+-2.5741e+06 -176240 0
+-2.8535e+06 -190230 0
+-3.1456e+06 -196860 0
+-3.4418e+06 -198000 0
+-3.7399e+06 -199010 0
+-4.0463e+06 -205850 0
+-4.3722e+06 -221440 0
+-4.7276e+06 -243480 0
+-5.114e+06 -264880 0
+-5.5211e+06 -277110 0
+-5.9303e+06 -274600 0
+-6.3215e+06 -258090 0
+-6.6829e+06 -234800 0
+-7.0162e+06 -215420 0
+-7.3361e+06 -209020 0
+-7.6634e+06 -218500 0
+-8.0145e+06 -238820 0
+-8.3921e+06 -258780 0
+-8.7825e+06 -265780 0
+-9.1588e+06 -251220 0
+-9.491e+06 -214290 0
+-9.7565e+06 -162580 0
+-9.9489e+06 -109190 0
+-1.008e+07 -67845 0
+-1.0176e+07 -47907 0
+-1.0267e+07 -51167 0
+-1.0378e+07 -71544 0
+-1.0519e+07 -97488 0
+-1.0685e+07 -116030 0
+-1.0854e+07 -116960 0
+-1.0998e+07 -95712 0
+59157 -1255.3 0
+55813 -1174.7 0
+52700 -1089.7 0
+49818 -1007 0
+47149 -932.19 0
+44664 -869.03 0
+42329 -818.83 0
+40110 -780.38 0
+37982 -750.32 0
+35932 -724 0
+33959 -696.53 0
+32073 -663.94 0
+30294 -624.02 0
+28641 -576.75 0
+27131 -524.21 0
+25770 -469.98 0
+24554 -418.26 0
+23470 -372.85 0
+22493 -336.34 0
+21599 -309.61 0
+20760 -291.91 0
+19957 -281.2 0
+19176 -274.88 0
+18409 -270.5 0
+17654 -266.35 0
+16913 -261.67 0
+16186 -256.61 0
+15474 -251.9 0
+14772 -248.32 0
+14078 -246.38 0
+13387 -246.06 0
+12695 -246.83 0
+12000 -247.82 0
+11305 -248.18 0
+10612 -247.24 0
+9925.2 -244.69 0
+9249 -240.6 0
+8587.2 -235.19 0
+7942.7 -228.79 0
+7317.8 -221.61 0
+6714.3 -213.76 0
+6134.1 -205.25 0
+5579 -196.06 0
+5051 -186.23 0
+4551.4 -175.86 0
+4081.7 -165.1 0
+3642.4 -154.14 0
+3233.9 -143.1 0
+2856.1 -132.09 0
+2508.9 -121.18 0
+2191.8 -110.43 0
+1904.3 -99.902 0
+1645.6 -89.703 0
+1414.4 -79.942 0
+1209.3 -70.726 0
+1028.8 -62.139 0
+870.78 -54.233 0
+733.47 -47.029 0
+614.86 -40.527 0
+513.05 -34.71 0
+426.18 -29.55 0
+352.51 -25.007 0
+290.41 -21.034 0
+238.4 -17.576 0
+195.15 -14.577 0
+159.48 -11.985 0
+130.33 -9.7571 0
+106.76 -7.8609 0
+87.891 -6.2694 0
+72.915 -4.9574 0
+61.106 -3.8975 0
+51.825 -3.0573 0
+44.529 -2.4008 0
+38.779 -1.8913 0
+34.233 -1.4952 0
+30.63 -1.1847 0
+27.772 -0.93922 0
+25.506 -0.74463 0
+23.708 -0.59118 0
+22.278 -0.47146 0
+21.136 -0.37875 0
+20.218 -0.3063 0
+19.483 -0.2475 0
+18.906 -0.19648 0
+18.475 -0.14891 0
+18.184 -0.10245 0
+18.034 -0.056858 0
+18.017 -0.013662 0
+18.12 0.024451 0
+18.323 0.054455 0
+18.593 0.074056 0
+18.897 0.083458 0
+19.213 0.089839 0
+19.576 0.12252 0
+20.232 0.29217 0
+22.241 1.0404 0
+30.003 4.2623 0
+62.435 18.747 0
+204.37 89.038 0
+838.02 461.84 0
+3744.9 2352.8 0
+64785 127870 0
+18320 3.3407e+06 0
+743350 9.8628e+06 0
+1.9677e+06 1.7982e+07 0
+3.0151e+06 2.4263e+07 0
+2.9661e+06 2.394e+07 0
+1.0531e+06 1.5524e+07 0
+-659850 6.8985e+06 0
+898230 8.421e+06 0
+2.031e+06 1.3075e+07 0
+-263300 7.9756e+06 0
+1.9347e+06 8.749e+06 0
+521280 9.2238e+06 0
+2.0349e+06 8.3911e+06 0
+872730 8.1235e+06 0
+1.8353e+06 7.9264e+06 0
+601530 6.661e+06 0
+495350 8.0382e+06 0
+1.7215e+06 6.9267e+06 0
+789670 5.504e+06 0
+-167040 6.6994e+06 0
+852450 6.8982e+06 0
+1.2045e+06 5.3662e+06 0
+110160 5.2288e+06 0
+-114450 6.1583e+06 0
+625920 5.866e+06 0
+711600 4.9393e+06 0
+62854 4.9026e+06 0
+-188070 5.4267e+06 0
+210130 5.3877e+06 0
+468210 4.7849e+06 0
+107920 4.5334e+06 0
+-270090 4.9145e+06 0
+-90493 5.0942e+06 0
+194760 4.6774e+06 0
+51537 4.3581e+06 0
+-256240 4.5464e+06 0
+-292590 4.777e+06 0
+-113410 4.6558e+06 0
+-42362 4.3835e+06 0
+-204750 4.3275e+06 0
+-390630 4.5253e+06 0
+-361980 4.6511e+06 0
+-226210 4.4902e+06 0
+-251970 4.2986e+06 0
+-423010 4.3898e+06 0
+-514820 4.6053e+06 0
+-468690 4.6128e+06 0
+-417930 4.4511e+06 0
+-471620 4.4072e+06 0
+-599540 4.5637e+06 0
+-676550 4.7257e+06 0
+-650360 4.7107e+06 0
+-621770 4.5941e+06 0
+-686510 4.6177e+06 0
+-804970 4.8333e+06 0
+-882590 4.9934e+06 0
+-877230 4.9283e+06 0
+-845850 4.8395e+06 0
+-906690 4.9835e+06 0
+-1.0651e+06 5.2517e+06 0
+-1.1621e+06 5.3488e+06 0
+-1.117e+06 5.2526e+06 0
+-1.0728e+06 5.2414e+06 0
+-1.1973e+06 5.4975e+06 0
+-1.4295e+06 5.8136e+06 0
+-1.5102e+06 5.8351e+06 0
+-1.3735e+06 5.66e+06 0
+-1.3845e+06 5.8296e+06 0
+-1.7619e+06 6.3628e+06 0
+-2.0412e+06 6.5618e+06 0
+-1.857e+06 6.2923e+06 0
+-1.721e+06 6.3434e+06 0
+-2.1269e+06 6.9782e+06 0
+-2.5777e+06 7.3757e+06 0
+-2.3851e+06 7.0444e+06 0
+-2.1005e+06 6.9791e+06 0
+-2.7444e+06 7.9668e+06 0
+-3.4496e+06 8.5329e+06 0
+-2.8928e+06 7.7833e+06 0
+-2.631e+06 8.0689e+06 0
+-3.9927e+06 9.8027e+06 0
+-4.3849e+06 9.6736e+06 0
+-3.1704e+06 8.679e+06 0
+-3.8777e+06 1.0516e+07 0
+-5.6385e+06 1.2276e+07 0
+-5.4153e+06 1.1654e+07 0
+-4.6829e+06 1.1596e+07 0
+-4.868e+06 1.3521e+07 0
+-8.2046e+06 1.7466e+07 0
+-3.1106e+06 1.1046e+07 0
+-6.8352e+06 2.0825e+07 0
+-813420 9.9255e+06 0
+-6.9784e+06 2.2866e+07 0
+-3.4872e+06 2.3252e+07 0
+626920 9.53e+06 0
+-4.5547e+06 2.3201e+07 0
+-9.9851e+06 5.3631e+07 0
+-1.0068e+07 6.9595e+07 0
+-6.6268e+06 6.1718e+07 0
+-2.6504e+06 3.9898e+07 0
+-340210 1.7684e+07 0
+-77629 3.6373e+06 0
+-5522.4 5058.7 0
+-4417.3 313.39 0
+-4239.2 54.999 0
+-4201.8 9.2437 0
+-4192.2 2.0946 0
+-4187 1.3611 0
+-4181.8 1.5495 0
+-4176.1 1.7273 0
+-4170 1.7353 0
+-4164.3 1.5 0
+-4159.8 0.91944 0
+-4157.7 -0.13186 0
+-4159.6 -1.7693 0
+-4167.5 -4.0561 0
+-4183.2 -6.9597 0
+-4208 -10.314 0
+-4242.7 -13.797 0
+-4286.7 -16.924 0
+-4337.9 -19.096 0
+-4392.3 -19.674 0
+-4444.6 -18.128 0
+-4488.5 -14.204 0
+-4518 -8.0847 0
+-4528.7 -0.45406 0
+-4518.8 7.6244 0
+-4489.6 15.049 0
+-4444.5 21.173 0
+-4387.1 26.227 0
+-4318.3 31.323 0
+-4235.7 37.75 0
+-4135.7 45.492 0
+-4020.9 51.386 0
+-3911.3 47.833 0
+-3855.6 23.172 0
+-3937 -35.531 0
+-4266.7 -137.59 0
+-4964.1 -283.49 0
+-6126.4 -462.14 0
+-7802.3 -653.43 0
+-9983.7 -836.54 0
+-12627 -1001.6 0
+-15703 -1158.8 0
+-19251 -1338.7 0
+-23413 -1580.7 0
+-28421 -1914.1 0
+-34534 -2341.4 0
+-41955 -2836.2 0
+-50793 -3359.7 0
+-61080 -3890.1 0
+-72866 -4443.4 0
+-86322 -5069 0
+-101760 -5814.3 0
+-119520 -6678.5 0
+-139830 -7593.2 0
+-162620 -8459.7 0
+-187660 -9239.5 0
+-214910 -10048 0
+-244980 -11179 0
+-279450 -12999 0
+-320660 -15740 0
+-370930 -19292 0
+-431480 -23131 0
+-501590 -26490 0
+-578700 -28724 0
+-659480 -29710 0
+-741670 -30019 0
+-825550 -30717 0
+-914240 -32839 0
+-1.0124e+06 -36791 0
+-1.124e+06 -42027 0
+-1.2499e+06 -47248 0
+-1.3871e+06 -51076 0
+-1.5306e+06 -52844 0
+-1.6757e+06 -53061 0
+-1.8213e+06 -53225 0
+-1.9705e+06 -55012 0
+-2.1296e+06 -59269 0
+-2.3039e+06 -65364 0
+-2.4946e+06 -71321 0
+-2.6963e+06 -74732 0
+-2.8989e+06 -74012 0
+-3.0918e+06 -69335 0
+-3.2683e+06 -62729 0
+-3.4292e+06 -57213 0
+-3.5826e+06 -55380 0
+-3.7402e+06 -58093 0
+-3.9112e+06 -63948 0
+-4.0978e+06 -69779 0
+-4.2925e+06 -71980 0
+-4.4807e+06 -68063 0
+-4.6457e+06 -57757 0
+-4.7747e+06 -43187 0
+-4.8639e+06 -28088 0
+-4.9197e+06 -16404 0
+-4.9566e+06 -10847 0
+-4.9919e+06 -11975 0
+-5.0395e+06 -18076 0
+-5.1061e+06 -25848 0
+-5.1885e+06 -31559 0
+-5.2754e+06 -32243 0
+-5.3508e+06 -26555 0
+15128 -90.986 0
+14268 -85.068 0
+13469 -78.84 0
+12731 -72.79 0
+12048 -67.333 0
+11413 -62.742 0
+10817 -59.113 0
+10250 -56.353 0
+9706 -54.21 0
+9181.1 -52.337 0
+8675.5 -50.374 0
+8192.1 -48.026 0
+7736 -45.131 0
+7312.8 -41.688 0
+6926.7 -37.854 0
+6579.6 -33.895 0
+6270.5 -30.122 0
+5995.4 -26.815 0
+5748.3 -24.163 0
+5522.2 -22.233 0
+5310.4 -20.964 0
+5107.2 -20.208 0
+4909.2 -19.771 0
+4714.6 -19.473 0
+4522.8 -19.187 0
+4334.2 -18.859 0
+4149.1 -18.502 0
+3967.5 -18.168 0
+3788.7 -17.918 0
+3611.5 -17.787 0
+3434.8 -17.776 0
+3257.6 -17.843 0
+3079.6 -17.927 0
+2901.2 -17.963 0
+2723.2 -17.903 0
+2546.6 -17.724 0
+2372.8 -17.43 0
+2202.6 -17.041 0
+2036.8 -16.577 0
+1876 -16.057 0
+1720.8 -15.487 0
+1571.6 -14.869 0
+1428.9 -14.203 0
+1293.2 -13.489 0
+1164.8 -12.736 0
+1044.1 -11.955 0
+931.29 -11.159 0
+826.42 -10.358 0
+729.47 -9.5596 0
+640.39 -8.7683 0
+559.09 -7.9883 0
+485.41 -7.2249 0
+419.13 -6.4853 0
+359.96 -5.7775 0
+307.52 -5.1094 0
+261.38 -4.4871 0
+221.05 -3.9144 0
+186.03 -3.3929 0
+155.81 -2.9225 0
+129.89 -2.502 0
+107.79 -2.1291 0
+89.068 -1.8011 0
+73.295 -1.5144 0
+60.095 -1.2649 0
+49.128 -1.0487 0
+40.091 -0.86176 0
+32.717 -0.70117 0
+26.762 -0.56449 0
+22.001 -0.4498 0
+18.231 -0.35531 0
+15.265 -0.27904 0
+12.938 -0.21865 0
+11.113 -0.17153 0
+9.6775 -0.13502 0
+8.5438 -0.10667 0
+7.6462 -0.084479 0
+6.9347 -0.066954 0
+6.3707 -0.053076 0
+5.9232 -0.04215 0
+5.5666 -0.033649 0
+5.2804 -0.027096 0
+5.0489 -0.02201 0
+4.8611 -0.017914 0
+4.7102 -0.014388 0
+4.5932 -0.011117 0
+4.5088 -0.007931 0
+4.4565 -0.004807 0
+4.435 -0.00185 0
+4.4411 0.000759 0
+4.4697 0.002814 0
+4.5139 0.004169 0
+4.5665 0.004863 0
+4.6242 0.005458 0
+4.6999 0.008206 0
+4.8687 0.021691 0
+5.4535 0.080777 0
+7.8382 0.33888 0
+18.356 1.5417 0
+68.996 8.024 0
+342.7 61.396 0
+1462.1 1401.3 0
+-138410 271960 0
+127860 3.002e+06 0
+562990 9.2233e+06 0
+1.6193e+06 1.7193e+07 0
+2.8413e+06 2.3478e+07 0
+2.9863e+06 2.4074e+07 0
+1.4267e+06 1.715e+07 0
+-464720 8.138e+06 0
+220690 7.0616e+06 0
+1.9876e+06 1.2226e+07 0
+329540 9.9183e+06 0
+632840 7.0098e+06 0
+1.5324e+06 1.0297e+07 0
+883310 7.054e+06 0
+1.4117e+06 9.069e+06 0
+1.0481e+06 7.2716e+06 0
+951140 8.202e+06 0
+1.7325e+06 6.8821e+06 0
+352560 6.1467e+06 0
+288870 7.5312e+06 0
+1.477e+06 6.5702e+06 0
+718700 5.233e+06 0
+-216810 6.212e+06 0
+577030 6.5775e+06 0
+1.0154e+06 5.2892e+06 0
+205420 4.9762e+06 0
+-178320 5.7319e+06 0
+332730 5.7268e+06 0
+596940 4.9436e+06 0
+149820 4.6799e+06 0
+-242430 5.1156e+06 0
+-4534.6 5.3031e+06 0
+346140 4.8129e+06 0
+131240 4.4257e+06 0
+-280840 4.7036e+06 0
+-242420 4.9813e+06 0
+28319 4.7135e+06 0
+13216 4.3677e+06 0
+-243750 4.4238e+06 0
+-379150 4.6679e+06 0
+-272870 4.6916e+06 0
+-145400 4.4599e+06 0
+-232080 4.3051e+06 0
+-435890 4.4585e+06 0
+-482410 4.6679e+06 0
+-372430 4.589e+06 0
+-346370 4.3757e+06 0
+-473380 4.3985e+06 0
+-599030 4.6156e+06 0
+-612890 4.7088e+06 0
+-565880 4.6022e+06 0
+-575440 4.5078e+06 0
+-679690 4.6049e+06 0
+-790790 4.8167e+06 0
+-818290 4.8961e+06 0
+-788140 4.7787e+06 0
+-799700 4.7317e+06 0
+-905200 4.9419e+06 0
+-1.0362e+06 5.1784e+06 0
+-1.0708e+06 5.1692e+06 0
+-1.0164e+06 5.0533e+06 0
+-1.0306e+06 5.1391e+06 0
+-1.1916e+06 5.4298e+06 0
+-1.3613e+06 5.6341e+06 0
+-1.3585e+06 5.5669e+06 0
+-1.2526e+06 5.465e+06 0
+-1.3517e+06 5.7261e+06 0
+-1.6961e+06 6.1844e+06 0
+-1.8446e+06 6.2399e+06 0
+-1.641e+06 5.9867e+06 0
+-1.6372e+06 6.1894e+06 0
+-2.0847e+06 6.8157e+06 0
+-2.3584e+06 6.9988e+06 0
+-2.0735e+06 6.6463e+06 0
+-1.9276e+06 6.7479e+06 0
+-2.5816e+06 7.6515e+06 0
+-3.1087e+06 8.0226e+06 0
+-2.5606e+06 7.3786e+06 0
+-2.3903e+06 7.678e+06 0
+-3.6085e+06 9.1525e+06 0
+-3.8126e+06 8.9453e+06 0
+-2.7696e+06 8.1474e+06 0
+-3.6555e+06 9.9223e+06 0
+-5.0961e+06 1.1121e+07 0
+-4.2744e+06 9.9333e+06 0
+-3.8909e+06 1.059e+07 0
+-5.115e+06 1.2676e+07 0
+-6.5109e+06 1.4151e+07 0
+-4.9235e+06 1.2116e+07 0
+-4.5189e+06 1.5101e+07 0
+-5.707e+06 1.4707e+07 0
+-3.1382e+06 1.6242e+07 0
+-2.4742e+06 1.1475e+07 0
+-6.5969e+06 2.5322e+07 0
+-1.5389e+06 1.8146e+07 0
+-48233 9.7175e+06 0
+-5.6583e+06 2.8423e+07 0
+-1.0116e+07 5.6598e+07 0
+-9.3069e+06 6.8114e+07 0
+-5.4528e+06 5.8186e+07 0
+-2.1654e+06 3.7366e+07 0
+-703790 1.6932e+07 0
+-9341.6 3.4392e+06 0
+-1422.6 10802 0
+-1134.6 104.54 0
+-1055.2 5.6822 0
+-1043 0.70873 0
+-1040.9 0.12186 0
+-1040 0.075809 0
+-1039 0.094894 0
+-1037.9 0.10834 0
+-1036.7 0.10679 0
+-1035.7 0.086673 0
+-1035 0.041715 0
+-1035.1 -0.036579 0
+-1036.2 -0.15633 0
+-1038.8 -0.32211 0
+-1043.4 -0.53168 0
+-1050.3 -0.7731 0
+-1059.7 -1.0229 0
+-1071.5 -1.2458 0
+-1085 -1.3976 0
+-1099.1 -1.4312 0
+-1112.5 -1.3069 0
+-1123.5 -1.005 0
+-1130.3 -0.5382 0
+-1131.7 0.043955 0
+-1127.2 0.66344 0
+-1116.9 1.239 0
+-1101.9 1.7227 0
+-1082.8 2.1315 0
+-1059.9 2.5483 0
+-1032.4 3.0698 0
+-999.22 3.6958 0
+-960.88 4.1924 0
+-922.64 3.9944 0
+-897.59 2.2329 0
+-908.2 -2.0575 0
+-984.66 -9.5736 0
+-1159.3 -20.352 0
+-1458.7 -33.568 0
+-1895.8 -47.717 0
+-2468.2 -61.244 0
+-3163.7 -73.406 0
+-3973.6 -84.952 0
+-4907.8 -98.146 0
+-6004.3 -115.92 0
+-7325 -140.46 0
+-8939.3 -171.94 0
+-10902 -208.39 0
+-13241 -246.93 0
+-15962 -285.87 0
+-19079 -326.36 0
+-22631 -371.99 0
+-26698 -426.22 0
+-31368 -488.96 0
+-36690 -555.18 0
+-42648 -617.7 0
+-49180 -673.89 0
+-56279 -732.62 0
+-64122 -815.84 0
+-73147 -950.8 0
+-83997 -1154.6 0
+-97303 -1418.6 0
+-113380 -1703.3 0
+-132030 -1951.2 0
+-152510 -2114.1 0
+-173910 -2183.1 0
+-195590 -2201.1 0
+-217640 -2248.5 0
+-240910 -2403.1 0
+-266730 -2695.5 0
+-296170 -3085 0
+-329500 -3474 0
+-365920 -3758.5 0
+-404000 -3888 0
+-442450 -3900.4 0
+-480930 -3908 0
+-520340 -4037.6 0
+-562380 -4353.7 0
+-608600 -4809.4 0
+-659320 -5256.4 0
+-713100 -5512.7 0
+-767150 -5457.6 0
+-818430 -5103.5 0
+-865080 -4602.7 0
+-907330 -4184 0
+-947460 -4044.5 0
+-988760 -4251 0
+-1.0339e+06 -4698.5 0
+-1.0836e+06 -5147.1 0
+-1.1357e+06 -5322.4 0
+-1.1862e+06 -5034 0
+-1.2303e+06 -4259.3 0
+-1.2643e+06 -3158.7 0
+-1.2871e+06 -2015.8 0
+-1.3005e+06 -1131.6 0
+-1.3087e+06 -714.12 0
+-1.3165e+06 -807.57 0
+-1.3281e+06 -1282.8 0
+-1.3453e+06 -1888.5 0
+-1.3674e+06 -2339.5 0
+-1.391e+06 -2408.3 0
+-1.4118e+06 -1990.6 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-59122 415500 0
+47733 2.9922e+06 0
+662160 8.718e+06 0
+1.5329e+06 1.6168e+07 0
+2.5021e+06 2.2666e+07 0
+2.9228e+06 2.4179e+07 0
+1.7877e+06 1.8442e+07 0
+-141400 9.5186e+06 0
+-231540 6.3623e+06 0
+1.5959e+06 1.0878e+07 0
+1.0293e+06 1.1321e+07 0
+-82573 6.8058e+06 0
+1.6435e+06 9.3792e+06 0
+309980 8.0101e+06 0
+1.687e+06 8.2717e+06 0
+835300 7.7463e+06 0
+1.534e+06 7.6384e+06 0
+440260 6.8333e+06 0
+850080 7.8821e+06 0
+1.5587e+06 6.3061e+06 0
+235270 5.7561e+06 0
+135490 7.0512e+06 0
+1.2209e+06 6.2764e+06 0
+689200 5.0394e+06 0
+-222670 5.7976e+06 0
+303200 6.2464e+06 0
+825150 5.2601e+06 0
+296350 4.8089e+06 0
+-216160 5.3487e+06 0
+65883 5.5606e+06 0
+451230 4.9729e+06 0
+211230 4.5444e+06 0
+-254870 4.8533e+06 0
+-185890 5.1884e+06 0
+182040 4.8445e+06 0
+110850 4.3944e+06 0
+-269680 4.5387e+06 0
+-355860 4.8524e+06 0
+-150720 4.748e+06 0
+-69494 4.4294e+06 0
+-242860 4.3547e+06 0
+-438140 4.5669e+06 0
+-421940 4.7184e+06 0
+-280300 4.5609e+06 0
+-292000 4.3376e+06 0
+-478570 4.4252e+06 0
+-585490 4.679e+06 0
+-524780 4.6915e+06 0
+-473240 4.5002e+06 0
+-547920 4.4567e+06 0
+-675430 4.6347e+06 0
+-744070 4.8028e+06 0
+-730900 4.7838e+06 0
+-709390 4.6562e+06 0
+-767250 4.676e+06 0
+-894360 4.9171e+06 0
+-981430 5.0906e+06 0
+-965000 4.9955e+06 0
+-932220 4.8951e+06 0
+-1.009e+06 5.0746e+06 0
+-1.1712e+06 5.3622e+06 0
+-1.2645e+06 5.4391e+06 0
+-1.2166e+06 5.322e+06 0
+-1.1707e+06 5.3259e+06 0
+-1.3307e+06 5.6418e+06 0
+-1.608e+06 5.9832e+06 0
+-1.6467e+06 5.929e+06 0
+-1.4673e+06 5.7406e+06 0
+-1.5793e+06 6.0599e+06 0
+-2.0185e+06 6.6264e+06 0
+-2.1426e+06 6.6389e+06 0
+-1.836e+06 6.3185e+06 0
+-1.8293e+06 6.5763e+06 0
+-2.42e+06 7.3471e+06 0
+-2.747e+06 7.5121e+06 0
+-2.3004e+06 7.0362e+06 0
+-2.2638e+06 7.4173e+06 0
+-3.2276e+06 8.5584e+06 0
+-3.3829e+06 8.3811e+06 0
+-2.5429e+06 7.7799e+06 0
+-3.3112e+06 9.2377e+06 0
+-4.5188e+06 1.0166e+07 0
+-3.5268e+06 8.9288e+06 0
+-3.3945e+06 9.8345e+06 0
+-5.0601e+06 1.1941e+07 0
+-5.3271e+06 1.1801e+07 0
+-4.6358e+06 1.1487e+07 0
+-4.35e+06 1.275e+07 0
+-6.6369e+06 1.5621e+07 0
+-2.4736e+06 1.0855e+07 0
+-5.9854e+06 1.7916e+07 0
+-1.1253e+06 1.1538e+07 0
+-4.1882e+06 1.5487e+07 0
+-5.3767e+06 2.4857e+07 0
+-433850 1.3987e+07 0
+-1.0239e+06 1.1536e+07 0
+-6.5632e+06 3.3192e+07 0
+-9.6279e+06 5.8222e+07 0
+-8.2916e+06 6.6275e+07 0
+-5.2003e+06 5.5695e+07 0
+-2.3285e+06 3.5467e+07 0
+-376800 1.5532e+07 0
+226250 2.8954e+06 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+}
Index: /tags/1.6.0/examples/flow/demo2/data-unirect2d.tcl
===================================================================
--- /tags/1.6.0/examples/flow/demo2/data-unirect2d.tcl	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo2/data-unirect2d.tcl	(revision 6168)
@@ -0,0 +1,33247 @@
+set values {
+0 0
+-3.4e-05 2.7e-05
+-0.000459 0.000234
+-0.001733 0.000613
+-0.004153 0.001091
+-0.007798 0.001577
+-0.012506 0.001974
+-0.017924 0.002218
+-0.023646 0.0023
+-0.029371 0.002283
+-0.035055 0.002276
+-0.04094 0.002394
+-0.047455 0.002691
+-0.054973 0.003118
+-0.063542 0.00352
+-0.072696 0.00368
+-0.081472 0.003413
+-0.088646 0.002649
+-0.093149 0.001496
+-0.094496 0.000225
+-0.093061 -0.000805
+-0.090064 -0.001272
+-0.087262 -0.001008
+-0.086418 -6.6e-05
+-0.088744 0.001281
+-0.094503 0.002626
+-0.1029 0.003556
+-0.11232 0.003768
+-0.12072 0.00316
+-0.12625 0.001844
+-0.12762 9.5e-05
+-0.12441 -0.001734
+-0.11706 -0.003308
+-0.10667 -0.004394
+-0.094656 -0.004894
+-0.082425 -0.004852
+-0.071058 -0.004421
+-0.061136 -0.003813
+-0.052681 -0.00325
+-0.045241 -0.002909
+-0.038048 -0.002896
+-0.030248 -0.003222
+-0.021116 -0.003814
+-0.010239 -0.004534
+0.002401 -0.00522
+0.016438 -0.005727
+0.031234 -0.005956
+0.046029 -0.005881
+0.060115 -0.005532
+0.072943 -0.004984
+0.084169 -0.004319
+0.093625 -0.003601
+0.10124 -0.002861
+0.10698 -0.002102
+0.11076 -0.001316
+0.11254 -0.000507
+0.11231 0.000287
+0.11024 0.000996
+0.10673 0.001522
+0.10241 0.001769
+0.098123 0.001667
+0.094778 0.001199
+0.093211 0.000413
+0.094033 -0.000588
+0.097506 -0.001656
+0.10351 -0.002634
+0.11154 -0.003383
+0.12085 -0.003804
+0.13051 -0.003853
+0.13961 -0.00354
+0.14734 -0.002923
+0.15311 -0.002087
+0.15653 -0.001125
+0.15747 -0.000125
+0.15596 0.000841
+0.15219 0.001726
+0.1464 0.002499
+0.13892 0.003144
+0.13009 0.003651
+0.12026 0.004012
+0.10982 0.004218
+0.09917 0.00426
+0.088733 0.004132
+0.07893 0.003838
+0.070152 0.00339
+0.062733 0.002818
+0.056916 0.002158
+0.052834 0.001457
+0.050495 0.000764
+0.049794 0.000125
+0.050525 -0.000423
+0.052411 -0.000854
+0.055134 -0.001157
+0.058369 -0.001329
+0.061807 -0.001381
+0.065179 -0.00133
+0.068265 -0.001196
+0.070897 -0.001001
+0.072962 -0.000765
+0.07439 -0.000506
+0.075154 -0.000239
+0.075255 2.4e-05
+0.074723 0.000275
+0.073601 0.000505
+0.071949 0.00071
+0.069836 0.000888
+0.067335 0.001035
+0.064524 0.001152
+0.061478 0.001238
+0.058272 0.001295
+0.054976 0.001324
+0.051653 0.001329
+0.04836 0.001312
+0.045143 0.001277
+0.042044 0.001226
+0.039096 0.001163
+0.036323 0.00109
+0.033746 0.00101
+0.031379 0.000925
+0.029231 0.000837
+0.027307 0.000747
+0.025608 0.000657
+0.02413 0.000569
+0.022868 0.000484
+0.021811 0.000403
+0.020948 0.000327
+0.020262 0.000257
+0.019739 0.000194
+0.019361 0.000138
+0.019108 8.9e-05
+0.018964 4.8e-05
+0.018909 1.4e-05
+0.018927 -1.4e-05
+0.019001 -3.5e-05
+0.019117 -5e-05
+0.019261 -6e-05
+0.019421 -6.5e-05
+0.019588 -6.7e-05
+0.019752 -6.5e-05
+0.019907 -6.1e-05
+0.020047 -5.4e-05
+0.020166 -4.5e-05
+0.02026 -3.5e-05
+0.020323 -2.2e-05
+0.020351 -7e-06
+0.020337 1e-05
+0.020274 3e-05
+0.020153 5.4e-05
+0.019965 8.3e-05
+0.019697 0.000116
+0.019336 0.000154
+0.018867 0.0002
+0.018269 0.000253
+0.017523 0.000315
+0.016601 0.000388
+0.015471 0.000474
+0.014096 0.000577
+0.012427 0.000699
+0.010409 0.000845
+0.007973 0.00102
+0.005036 0.001229
+0.001501 0.001479
+-0.002746 0.001776
+-0.007836 0.002128
+-0.013921 0.002542
+-0.021172 0.003026
+-0.029779 0.003589
+-0.03995 0.004236
+-0.05191 0.004974
+-0.065895 0.005809
+-0.082148 0.00674
+-0.10092 0.007771
+-0.12245 0.0089
+-0.14698 0.010124
+-0.17474 0.011441
+-0.20597 0.012853
+-0.24092 0.014362
+-0.27984 0.01598
+-0.32304 0.017726
+-0.3709 0.019628
+-0.42386 0.021724
+-0.48251 0.024057
+-0.54751 0.026674
+-0.61966 0.029616
+-0.69981 0.032906
+-0.78884 0.036544
+-0.88756 0.04049
+-0.99658 0.04466
+-1.1162 0.04892
+-1.2464 0.053092
+-1.3864 0.056967
+-1.5353 0.060333
+-1.6912 0.063005
+-1.8523 0.064869
+-2.0166 0.065933
+-2.1824 0.066365
+-2.3486 0.06653
+-2.5157 0.067011
+-2.686 0.068597
+-2.8639 0.07225
+-3.0567 0.079023
+-3.274 0.089948
+-3.5279 0.10587
+-3.8318 0.12728
+-4.1994 0.15408
+-4.6429 0.18549
+-5.1709 0.21991
+-5.7866 0.25503
+-6.4866 0.28806
+-7.2606 0.31624
+-8.0921 0.33742
+-8.9619 0.35078
+-9.8522 0.35743
+-10.752 0.36057
+-11.661 0.36523
+-12.595 0.37735
+-13.583 0.40223
+-14.662 0.44288
+-15.872 0.49845
+-17.239 0.56341
+-18.769 0.62778
+-20.437 0.67854
+-22.183 0.70193
+-23.915 0.68616
+-25.521 0.62378
+-26.88 0.51329
+-27.882 0.35975
+-28.437 0.17436
+-28.497 -0.026707
+-28.058 -0.22421
+-27.166 -0.39853
+-25.909 -0.53329
+-24.407 -0.6196
+-22.776 -0.65991
+-21.105 -0.66943
+-19.426 -0.67302
+-17.704 -0.69652
+-15.861 -0.75346
+-13.832 -0.83146
+-11.645 -0.88447
+-9.5004 -0.83677
+-7.8137 -0.60166
+-7.1855 -0.11152
+-8.2941 0.6499
+-11.724 1.6259
+-17.778 2.6871
+-26.344 3.6578
+-36.862 4.3613
+-48.411 4.6695
+-59.903 4.5361
+-70.297 4.0015
+-78.773 3.1671
+-84.81 2.1536
+-88.159 1.0657
+-88.782 -0.019902
+-86.805 -1.0394
+-82.532 -1.9168
+-76.499 -2.5547
+-69.482 -2.8606
+-62.383 -2.8037
+-55.969 -2.4703
+-50.548 -2.0738
+-45.759 -1.8922
+-40.626 -2.149
+-33.928 -2.8925
+-24.744 -3.9475
+-12.904 -4.9817
+0.90894 -5.6672
+15.504 -5.8543
+29.814 -5.6597
+43.47 -5.4081
+57.005 -5.4518
+71.524 -5.9655
+88.027 -6.8295
+106.71 -7.6638
+126.59 -7.9894
+145.66 -7.4237
+161.37 -5.8157
+171.28 -3.2782
+173.65 -0.1385
+167.82 3.1412
+154.43 6.0435
+135.33 8.0857
+113.32 8.936
+91.545 8.5344
+72.693 7.1465
+58.3 5.2775
+48.575 3.4482
+42.832 1.9431
+40.335 0.69458
+40.981 -0.59214
+45.308 -2.1324
+53.734 -3.7733
+65.492 -4.9428
+78.03 -4.9132
+87.446 -3.2437
+89.891 -0.12947
+83.275 3.5724
+68.338 6.6775
+48.504 8.192
+28.571 7.7415
+12.848 5.7064
+3.5836 3.0329
+0.26911 0.83988
+0 0
+0 0
+-0.000298 0.000372
+-0.004081 0.003251
+-0.015403 0.008502
+-0.036942 0.015153
+-0.069413 0.021908
+-0.11138 0.02745
+-0.15975 0.030858
+-0.21082 0.032009
+-0.2619 0.031735
+-0.31245 0.031567
+-0.36456 0.033075
+-0.42193 0.037036
+-0.48788 0.042801
+-0.56288 0.048245
+-0.64293 0.050419
+-0.71964 0.046745
+-0.78234 0.03628
+-0.82171 0.020485
+-0.8335 0.003093
+-0.82105 -0.010976
+-0.79512 -0.017281
+-0.77118 -0.013505
+-0.76476 -0.000407
+-0.78653 0.018272
+-0.8388 0.036931
+-0.91459 0.049845
+-0.99952 0.052878
+-1.0758 0.044615
+-1.127 0.026576
+-1.1417 0.002561
+-1.1162 -0.022576
+-1.0543 -0.044266
+-0.96542 -0.05929
+-0.86201 -0.066335
+-0.75622 -0.066
+-0.6574 -0.060372
+-0.57056 -0.052361
+-0.49589 -0.044959
+-0.42941 -0.040598
+-0.3645 -0.040678
+-0.29379 -0.045354
+-0.21112 -0.0536
+-0.113 -0.063534
+0.00055 -0.072937
+0.12623 -0.079816
+0.25835 -0.082868
+0.39023 -0.081712
+0.51565 -0.07682
+0.62984 -0.069211
+0.72984 -0.060021
+0.81424 -0.050124
+0.88246 -0.039944
+0.93413 -0.029509
+0.96869 -0.018697
+0.98556 -0.007567
+0.98476 0.003391
+0.96771 0.013187
+0.93783 0.020485
+0.90074 0.023942
+0.86378 0.0226
+0.83498 0.01622
+0.82173 0.005444
+0.82938 -0.008276
+0.86027 -0.022934
+0.9133 -0.036359
+0.98413 -0.046625
+1.066 -0.052376
+1.151 -0.053008
+1.231 -0.048679
+1.2989 -0.04017
+1.3495 -0.028652
+1.3795 -0.015424
+1.3876 -0.00169
+1.3743 0.011587
+1.3411 0.023738
+1.2903 0.034357
+1.2246 0.043221
+1.147 0.050197
+1.0607 0.05517
+0.96893 0.058013
+0.87532 0.058598
+0.78355 0.05685
+0.69735 0.052801
+0.62016 0.046646
+0.55495 0.038753
+0.50386 0.029655
+0.46806 0.019992
+0.44764 0.010438
+0.44168 0.001624
+0.44835 -0.005934
+0.4652 -0.011883
+0.48943 -0.016044
+0.51814 -0.018413
+0.54864 -0.019123
+0.57851 -0.018404
+0.60584 -0.016542
+0.62913 -0.013835
+0.64738 -0.010565
+0.66001 -0.006982
+0.66675 -0.003291
+0.66763 0.000344
+0.66291 0.003798
+0.65299 0.006976
+0.63839 0.009813
+0.61971 0.012262
+0.59761 0.014297
+0.57277 0.015906
+0.54586 0.017093
+0.51753 0.017876
+0.48841 0.018283
+0.45905 0.01835
+0.42995 0.018118
+0.40152 0.017632
+0.37413 0.016934
+0.34807 0.016065
+0.32355 0.015063
+0.30077 0.013961
+0.27983 0.012787
+0.26083 0.011569
+0.2438 0.01033
+0.22875 0.009091
+0.21566 0.007874
+0.20448 0.006697
+0.19511 0.005577
+0.18744 0.004528
+0.18136 0.003563
+0.17671 0.002691
+0.17333 0.001917
+0.17108 0.001243
+0.16978 0.000671
+0.16928 0.000197
+0.16943 -0.000183
+0.17008 -0.000475
+0.1711 -0.000687
+0.17237 -0.000827
+0.1738 -0.000904
+0.17528 -0.000926
+0.17674 -0.000904
+0.17812 -0.000844
+0.17936 -0.000751
+0.18042 -0.000631
+0.18126 -0.000484
+0.18184 -0.00031
+0.18209 -0.000105
+0.18198 0.000135
+0.18143 0.000417
+0.18037 0.000749
+0.17872 0.001138
+0.17636 0.001596
+0.17317 0.002132
+0.16902 0.002759
+0.16373 0.003493
+0.15712 0.004354
+0.14895 0.005367
+0.13894 0.006565
+0.12675 0.007988
+0.11195 0.009684
+0.094042 0.011711
+0.072419 0.014135
+0.046352 0.017033
+0.014979 0.020492
+-0.022711 0.024606
+-0.067887 0.029477
+-0.12189 0.035212
+-0.18624 0.04192
+-0.26261 0.049708
+-0.35285 0.058673
+-0.45896 0.068897
+-0.58302 0.080443
+-0.7272 0.093347
+-0.89367 0.10762
+-1.0846 0.12324
+-1.3022 0.14018
+-1.5484 0.15841
+-1.8253 0.17794
+-2.1352 0.19882
+-2.4802 0.22119
+-2.8631 0.24532
+-3.2871 0.27159
+-3.7563 0.30053
+-4.2756 0.33273
+-4.8511 0.36883
+-5.4896 0.4094
+-6.1987 0.45476
+-6.986 0.5049
+-7.8587 0.55927
+-8.8221 0.6167
+-9.8789 0.67533
+-11.028 0.7327
+-12.264 0.78591
+-13.577 0.83201
+-14.952 0.86844
+-16.372 0.89362
+-17.818 0.90763
+-19.275 0.91281
+-20.735 0.91422
+-22.2 0.91992
+-23.691 0.94085
+-25.249 0.99035
+-26.935 1.083
+-28.836 1.2331
+-31.06 1.4525
+-33.724 1.7476
+-36.951 2.1174
+-40.848 2.5509
+-45.49 3.0259
+-50.907 3.5104
+-57.067 3.9657
+-63.878 4.3533
+-71.193 4.6436
+-78.841 4.8253
+-86.662 4.9134
+-94.557 4.9526
+-102.53 5.0126
+-110.71 5.1754
+-119.36 5.5149
+-128.8 6.0729
+-139.39 6.8377
+-151.37 7.733
+-164.79 8.6208
+-179.43 9.3209
+-194.75 9.643
+-209.94 9.4235
+-224.02 8.5588
+-235.9 7.0272
+-244.61 4.8973
+-249.34 2.3225
+-249.66 -0.47527
+-245.51 -3.2311
+-237.28 -5.6734
+-225.75 -7.574
+-211.96 -8.8062
+-196.95 -9.3978
+-181.54 -9.5526
+-166.03 -9.6092
+-150.16 -9.9222
+-133.26 -10.681
+-114.8 -11.722
+-95.012 -12.42
+-75.655 -11.742
+-60.344 -8.5017
+-54.324 -1.7702
+-63.523 8.6771
+-93.047 22.064
+-145.55 36.616
+-220.03 49.918
+-311.56 59.544
+-412.05 63.735
+-511.94 61.862
+-602.13 54.486
+-675.46 43.011
+-727.38 29.102
+-755.8 14.198
+-760.42 -0.654
+-742.38 -14.587
+-704.35 -26.563
+-651.05 -35.237
+-589.34 -39.324
+-527.24 -38.382
+-471.58 -33.588
+-425.16 -27.887
+-384.82 -25.148
+-341.87 -28.504
+-285.36 -38.68
+-206.83 -53.306
+-104.46 -67.807
+16.031 -77.618
+144.27 -80.597
+270.74 -78.246
+391.91 -74.941
+511.98 -75.47
+640.17 -82.226
+784.81 -93.607
+947.35 -104.49
+1119.3 -108.42
+1283.1 -100.26
+1417 -78.049
+1500.2 -43.347
+1518 -0.60162
+1465 43.942
+1346.6 83.286
+1179.2 110.87
+987.15 122.13
+798.06 116.23
+635.41 96.774
+512.7 70.731
+431.57 45.339
+385.63 24.618
+367.76 7.739
+376.34 -9.3252
+415.48 -29.607
+488.52 -51.171
+588.86 -66.369
+694.66 -65.404
+772.55 -42.346
+789.73 0.11357
+728.64 50.317
+596.15 92.204
+422.16 112.36
+248.24 105.81
+111.48 77.834
+31.068 41.314
+2.3319 11.432
+0 0
+0 0
+-0.000807 0.001436
+-0.011055 0.012559
+-0.041765 0.032873
+-0.10028 0.058659
+-0.18868 0.084931
+-0.30319 0.10657
+-0.43538 0.11994
+-0.57514 0.12446
+-0.71469 0.12321
+-0.8521 0.12203
+-0.99238 0.12698
+-1.1452 0.14118
+-1.3193 0.16234
+-1.5163 0.1825
+-1.7262 0.19051
+-1.9271 0.17656
+-2.0913 0.13701
+-2.1944 0.077358
+-2.2254 0.011762
+-2.1932 -0.041067
+-2.1267 -0.064236
+-2.0671 -0.048926
+-2.0555 0.001945
+-2.1203 0.074082
+-2.2677 0.14611
+-2.479 0.19617
+-2.7158 0.2085
+-2.9309 0.17768
+-3.0802 0.10951
+-3.1336 0.018424
+-3.0808 -0.077155
+-2.9313 -0.15993
+-2.7094 -0.21775
+-2.4473 -0.2457
+-2.1763 -0.24609
+-1.9205 -0.22677
+-1.6925 -0.19865
+-1.4926 -0.17291
+-1.3106 -0.15856
+-1.1295 -0.16072
+-0.93049 -0.17984
+-0.69833 -0.21196
+-0.42473 -0.24995
+-0.11051 -0.28546
+0.23497 -0.31105
+0.59627 -0.32191
+0.95564 -0.31673
+1.2967 -0.29744
+1.6071 -0.26797
+1.8793 -0.23269
+2.1099 -0.1949
+2.2976 -0.15615
+2.4414 -0.11648
+2.54 -0.075332
+2.5916 -0.03288
+2.5961 0.00904
+2.557 0.04665
+2.4833 0.074835
+2.3897 0.088427
+2.2958 0.083736
+2.2229 0.059826
+2.1906 0.019124
+2.2132 -0.032823
+2.2969 -0.08836
+2.4389 -0.1392
+2.6276 -0.17801
+2.8452 -0.19963
+3.0704 -0.20178
+3.282 -0.18509
+3.4615 -0.15256
+3.5948 -0.10866
+3.6737 -0.058342
+3.6948 -0.006168
+3.6593 0.044226
+3.5713 0.090327
+3.4368 0.13062
+3.2632 0.16429
+3.058 0.19083
+2.8295 0.20981
+2.5866 0.2207
+2.3386 0.22301
+2.0954 0.21643
+1.8669 0.20105
+1.6623 0.17759
+1.4896 0.14746
+1.3544 0.1127
+1.2601 0.075752
+1.2068 0.039214
+1.1921 0.005504
+1.211 -0.023395
+1.2571 -0.046118
+1.3229 -0.061988
+1.4005 -0.070981
+1.4827 -0.073612
+1.5631 -0.070771
+1.6365 -0.063553
+1.6991 -0.053108
+1.748 -0.040521
+1.7818 -0.026747
+1.7998 -0.012577
+1.8021 0.001365
+1.7894 0.014601
+1.7627 0.026776
+1.7236 0.037637
+1.6735 0.047011
+1.6144 0.054798
+1.5478 0.060957
+1.4758 0.065503
+1.4 0.068504
+1.322 0.070064
+1.2434 0.070325
+1.1655 0.069444
+1.0894 0.067588
+1.016 0.064924
+0.9462 0.061607
+0.88049 0.057779
+0.81939 0.053566
+0.76322 0.04908
+0.71221 0.044422
+0.66646 0.039682
+0.62602 0.034943
+0.5908 0.030284
+0.56067 0.025776
+0.53539 0.021483
+0.51469 0.017462
+0.49822 0.013759
+0.48561 0.010407
+0.47643 0.00743
+0.47027 0.004837
+0.46669 0.002631
+0.46528 0.0008
+0.46561 -0.00067
+0.46732 -0.001803
+0.47003 -0.002627
+0.47345 -0.003174
+0.47728 -0.003478
+0.48127 -0.003574
+0.48523 -0.003494
+0.48898 -0.003267
+0.49237 -0.002916
+0.49528 -0.002456
+0.49759 -0.001893
+0.49918 -0.001225
+0.49993 -0.000439
+0.49968 0.000484
+0.49827 0.001568
+0.49548 0.002844
+0.49108 0.004344
+0.48478 0.006105
+0.47625 0.008168
+0.46512 0.010584
+0.45093 0.013413
+0.43317 0.016734
+0.41118 0.020645
+0.38421 0.02527
+0.35133 0.030763
+0.31141 0.03731
+0.26307 0.045133
+0.20468 0.054489
+0.13427 0.065671
+0.049518 0.079011
+-0.052299 0.094872
+-0.17433 0.11365
+-0.32019 0.13574
+-0.49396 0.16159
+-0.70017 0.19158
+-0.94379 0.22611
+-1.2302 0.26548
+-1.565 0.30994
+-1.954 0.35962
+-2.4031 0.41456
+-2.9182 0.47468
+-3.5049 0.53988
+-4.1689 0.61004
+-4.9156 0.68515
+-5.7508 0.76541
+-6.6805 0.85137
+-7.7119 0.94399
+-8.8536 1.0448
+-10.116 1.1556
+-11.513 1.2789
+-13.059 1.4171
+-14.774 1.5722
+-16.677 1.7455
+-18.789 1.937
+-21.128 2.1446
+-23.707 2.3636
+-26.535 2.587
+-29.608 2.8053
+-32.911 3.0072
+-36.414 3.1813
+-40.079 3.3177
+-43.857 3.4104
+-47.699 3.4595
+-51.561 3.474
+-55.421 3.4734
+-59.286 3.4888
+-63.208 3.5624
+-67.296 3.7457
+-71.72 4.0949
+-76.711 4.6653
+-82.557 5.5019
+-89.579 6.6303
+-98.103 8.046
+-108.42 9.7059
+-120.73 11.525
+-135.1 13.378
+-151.46 15.117
+-169.55 16.593
+-188.96 17.691
+-209.23 18.367
+-229.93 18.68
+-250.78 18.801
+-271.79 19.001
+-293.3 19.594
+-316.01 20.867
+-340.82 22.983
+-368.66 25.897
+-400.21 29.317
+-435.59 32.713
+-474.22 35.393
+-514.67 36.623
+-554.79 35.773
+-591.88 32.439
+-623.06 26.532
+-645.63 18.307
+-657.42 8.3407
+-657.16 -2.5248
+-644.64 -13.28
+-620.82 -22.881
+-587.73 -30.439
+-548.1 -35.44
+-504.8 -37.953
+-460.08 -38.713
+-414.96 -38.986
+-368.93 -40.114
+-320.42 -42.843
+-268.09 -46.593
+-212.6 -49.045
+-158.53 -46.321
+-115.28 -33.944
+-96.581 -8.3959
+-117.95 31.192
+-192.79 81.891
+-328.02 136.98
+-520.97 187.28
+-758.53 223.6
+-1019.3 239.24
+-1278.1 231.86
+-1510.9 203.65
+-1699 159.99
+-1830.6 107.27
+-1900.6 50.945
+-1908.3 -5.0383
+-1857 -57.458
+-1753.8 -102.4
+-1611.3 -134.74
+-1447.8 -149.47
+-1284.9 -144.8
+-1141.4 -125.12
+-1025 -101.75
+-927.59 -89.683
+-825.47 -101.25
+-688.37 -139.65
+-492.14 -196.09
+-230.04 -253.14
+84.132 -293.08
+423.42 -307.16
+762.01 -300.43
+1088.9 -288.91
+1412.7 -290.46
+1755.3 -314.1
+2136.3 -354.07
+2558.4 -391.53
+2999.1 -402.84
+3413.8 -369.38
+3747.4 -284.25
+3948.2 -153.57
+3980 6.1416
+3830.2 171.89
+3513.7 317.83
+3073 419.47
+2571.9 459.56
+2082.9 434.6
+1667.9 358.14
+1362.6 256.77
+1170.4 158.55
+1072.4 79.555
+1046.3 17.297
+1084.2 -43.352
+1193.4 -114.42
+1381.2 -189.67
+1630.8 -241.51
+1887.6 -234.06
+2067.9 -145.68
+2090.5 13.355
+1912.9 199.56
+1555.5 353.38
+1096.3 425.5
+642.33 398.21
+287.69 291.79
+80.026 154.5
+6.0004 42.693
+0 0
+0 0
+-0.001523 0.003568
+-0.020889 0.031221
+-0.07902 0.081825
+-0.19008 0.14626
+-0.35838 0.21222
+-0.57718 0.26689
+-0.83059 0.30096
+-1.099 0.31254
+-1.3667 0.30885
+-1.6283 0.30408
+-1.8917 0.31332
+-2.1738 0.34468
+-2.4906 0.39322
+-2.8461 0.44011
+-3.223 0.45851
+-3.5832 0.42458
+-3.8773 0.32931
+-4.0617 0.18587
+-4.1172 0.028494
+-4.061 -0.097385
+-3.946 -0.15073
+-3.8478 -0.11013
+-3.8421 0.017207
+-3.9809 0.19633
+-4.2751 0.37502
+-4.6902 0.49995
+-5.1558 0.53265
+-5.5847 0.45995
+-5.8961 0.2959
+-6.0344 0.075547
+-5.9796 -0.15651
+-5.7476 -0.35854
+-5.3813 -0.5014
+-4.9367 -0.57342
+-4.4687 -0.58025
+-4.0187 -0.54076
+-3.6084 -0.4809
+-3.2378 -0.42702
+-2.8886 -0.40019
+-2.5315 -0.4121
+-2.1349 -0.46334
+-1.6734 -0.54409
+-1.1348 -0.63713
+-0.52287 -0.72251
+0.14361 -0.78261
+0.8355 -0.80632
+1.5201 -0.79097
+2.168 -0.74163
+2.7573 -0.66818
+3.2751 -0.58128
+3.7162 -0.48892
+4.0788 -0.39466
+4.3616 -0.2983
+4.5617 -0.19824
+4.6758 -0.094656
+4.703 0.008068
+4.6493 0.10072
+4.5304 0.17072
+4.3732 0.20535
+4.2132 0.19545
+4.0898 0.13864
+4.0388 0.040817
+4.0867 -0.084505
+4.2448 -0.21862
+4.5078 -0.34132
+4.8549 -0.43471
+5.2533 -0.48629
+5.6643 -0.49058
+6.0494 -0.44922
+6.3751 -0.36961
+6.6163 -0.26268
+6.7581 -0.14045
+6.7951 -0.013967
+6.7294 0.10805
+6.5686 0.2196
+6.3239 0.31714
+6.008 0.39874
+5.6347 0.46323
+5.2188 0.5095
+4.7763 0.53627
+4.3241 0.54219
+3.8803 0.52641
+3.4631 0.48911
+3.0896 0.43197
+2.7745 0.35841
+2.5286 0.27341
+2.3579 0.18299
+2.2629 0.093522
+2.2391 0.010981
+2.2774 -0.059744
+2.3656 -0.11529
+2.4898 -0.15398
+2.6357 -0.17576
+2.7896 -0.1819
+2.9399 -0.17462
+3.0767 -0.15661
+3.1931 -0.13071
+3.2839 -0.099598
+3.3465 -0.065629
+3.3797 -0.03074
+3.3837 0.00354
+3.3598 0.036047
+3.3102 0.065923
+3.2375 0.092557
+3.1446 0.11554
+3.0348 0.13462
+2.9115 0.14972
+2.778 0.16087
+2.6375 0.16823
+2.493 0.17207
+2.3473 0.17273
+2.2028 0.1706
+2.0616 0.16607
+1.9254 0.15957
+1.7958 0.15146
+1.6737 0.1421
+1.5602 0.13179
+1.4557 0.12082
+1.3607 0.10942
+1.2754 0.097808
+1.2 0.086197
+1.1342 0.074773
+1.0777 0.063711
+1.0304 0.053169
+0.99144 0.043284
+0.9604 0.034168
+0.93654 0.025906
+0.9191 0.018556
+0.90731 0.012145
+0.90037 0.006676
+0.8975 0.002131
+0.89795 -0.00153
+0.90101 -0.004361
+0.906 -0.00643
+0.91234 -0.007815
+0.9195 -0.008596
+0.92701 -0.00886
+0.93448 -0.008685
+0.94159 -0.008144
+0.94805 -0.007292
+0.95362 -0.006167
+0.95808 -0.004785
+0.96121 -0.00314
+0.96276 -0.001203
+0.96246 0.001073
+0.95998 0.00375
+0.95493 0.0069
+0.94686 0.010605
+0.93524 0.014956
+0.91945 0.020059
+0.89877 0.026038
+0.87235 0.033047
+0.8392 0.041278
+0.79811 0.050979
+0.74763 0.062456
+0.68601 0.076091
+0.61111 0.092343
+0.52036 0.11176
+0.41067 0.13497
+0.27835 0.1627
+0.11904 0.19577
+-0.072338 0.23507
+-0.3017 0.28156
+-0.57578 0.33626
+-0.90222 0.40022
+-1.2895 0.47443
+-1.747 0.55983
+-2.2845 0.65721
+-2.9128 0.76715
+-3.6427 0.88999
+-4.4852 1.0258
+-5.4512 1.1744
+-6.5514 1.3356
+-7.7961 1.5089
+-9.1955 1.6943
+-10.76 1.8923
+-12.501 2.1042
+-14.431 2.3322
+-16.566 2.58
+-18.926 2.8523
+-21.533 3.1547
+-24.418 3.4932
+-27.613 3.8729
+-31.155 4.297
+-35.08 4.7651
+-39.423 5.272
+-44.209 5.8065
+-49.449 6.3508
+-55.136 6.8812
+-61.24 7.3701
+-67.706 7.789
+-74.457 8.1131
+-81.401 8.3272
+-88.443 8.4317
+-95.499 8.4486
+-102.52 8.4263
+-109.53 8.4415
+-116.61 8.5992
+-123.97 9.0267
+-131.92 9.864
+-140.89 11.247
+-151.44 13.289
+-164.15 16.051
+-179.64 19.522
+-198.44 23.595
+-220.93 28.057
+-247.25 32.598
+-277.21 36.85
+-310.34 40.44
+-345.87 43.086
+-382.9 44.677
+-420.61 45.358
+-458.47 45.555
+-496.48 45.935
+-535.28 47.285
+-576.17 50.315
+-620.84 55.431
+-671.05 62.53
+-728.07 70.896
+-792.18 79.223
+-862.31 85.801
+-935.82 88.818
+-1008.7 86.71
+-1075.9 78.468
+-1132.1 63.849
+-1172 43.447
+-1191.6 18.644
+-1188.3 -8.5273
+-1161.4 -35.609
+-1112.6 -60.032
+-1045.3 -79.564
+-964.5 -92.845
+-875.7 -99.902
+-783.32 -102.4
+-689.72 -103.3
+-594.52 -105.87
+-495.38 -111.99
+-390.12 -120.4
+-280.03 -125.67
+-173.22 -118.57
+-86.457 -88.338
+-44.279 -26.462
+-74.553 69.216
+-201.37 191.68
+-437.22 324.67
+-777.09 445.99
+-1197.1 533.28
+-1658.3 570.37
+-2114.7 551.64
+-2523 482.57
+-2849.6 376.47
+-3074 248.98
+-3187.4 113.38
+-3189.6 -20.909
+-3086.7 -146.29
+-2891.9 -253.4
+-2628.4 -329.68
+-2330.3 -362.64
+-2038 -347.46
+-1787.2 -294.64
+-1593.5 -231.98
+-1442 -196.92
+-1288.2 -220.9
+-1073.1 -313.09
+-747.88 -453.05
+-295.14 -598.22
+263.81 -704.32
+881.12 -748.04
+1508 -739.3
+2119.9 -715
+2726 -717.22
+3359 -767.77
+4048.9 -853.74
+4796.9 -931.67
+5562.4 -947.08
+6268.9 -857.82
+6823.2 -649.16
+7139.8 -336.37
+7159.9 41.876
+6864.5 432.27
+6281.4 774.63
+5486.1 1011
+4592.8 1099.5
+3732 1030.7
+3016.8 836.65
+2512 582.46
+2221.9 338.14
+2106.1 145.52
+2115.4 0.90636
+2224.3 -131.78
+2437.5 -283.5
+2763.5 -443
+3173.6 -548.36
+3576.7 -517.31
+3834 -300.29
+3811.6 77.504
+3444.3 513.43
+2773.8 868.12
+1940.6 1027.6
+1130.4 952.9
+504.12 694.28
+139.81 366.29
+10.465 101.01
+0 0
+0 0
+-0.002398 0.007041
+-0.032929 0.061674
+-0.1248 0.16191
+-0.30099 0.29013
+-0.56922 0.42219
+-0.91973 0.53262
+-1.3277 0.60233
+-1.7614 0.62645
+-2.1936 0.61802
+-2.6127 0.6042
+-3.027 0.61471
+-3.4601 0.66651
+-3.9363 0.75177
+-4.4629 0.83574
+-5.0171 0.86775
+-5.5446 0.80222
+-5.9741 0.62156
+-6.2428 0.35044
+-6.3238 0.054122
+-6.2442 -0.18058
+-6.0848 -0.27508
+-5.9602 -0.1885
+-5.9846 0.065018
+-6.2363 0.41795
+-6.7311 0.76958
+-7.4165 1.0172
+-8.1854 1.0867
+-8.9058 0.95285
+-9.455 0.64261
+-9.7479 0.22299
+-9.7529 -0.22103
+-9.4908 -0.6103
+-9.022 -0.88995
+-8.4258 -1.0384
+-7.7789 -1.0666
+-7.1388 -1.0101
+-6.5346 -0.91714
+-5.9649 -0.83627
+-5.4037 -0.80559
+-4.8103 -0.84561
+-4.1426 -0.95615
+-3.3683 -1.1179
+-2.4749 -1.298
+-1.473 -1.4593
+-0.3946 -1.5692
+0.71467 -1.6078
+1.8052 -1.5712
+2.8333 -1.4704
+3.7678 -1.3249
+4.5915 -1.1554
+5.298 -0.97697
+5.8863 -0.79602
+6.3548 -0.61139
+6.6991 -0.41934
+6.9134 -0.21969
+6.9952 -0.020573
+6.9521 0.16024
+6.8072 0.29832
+6.6003 0.36879
+6.3848 0.35373
+6.22 0.2483
+6.1605 0.063713
+6.2462 -0.17395
+6.4944 -0.42864
+6.8973 -0.66142
+7.4233 -0.8379
+8.0233 -0.93416
+8.6396 -0.93996
+9.2145 -0.85868
+9.6986 -0.70475
+10.055 -0.49928
+10.263 -0.2653
+10.315 -0.02383
+10.214 0.20868
+9.9723 0.42109
+9.6061 0.6069
+9.1341 0.76262
+8.5765 0.8861
+7.9548 0.97516
+7.2924 1.0271
+6.6147 1.0393
+5.9488 1.0096
+5.3224 0.93835
+4.7617 0.82855
+4.2893 0.68677
+3.922 0.5226
+3.6689 0.34775
+3.5311 0.17466
+3.5017 0.014967
+3.5668 -0.12178
+3.7077 -0.22899
+3.903 -0.30341
+4.1306 -0.34494
+4.3697 -0.35608
+4.6023 -0.34114
+4.8136 -0.30542
+4.9926 -0.25449
+5.1321 -0.19357
+5.2278 -0.12723
+5.2781 -0.059247
+5.2836 0.007432
+5.2464 0.070572
+5.1697 0.12854
+5.0577 0.18017
+4.9149 0.2247
+4.7464 0.26167
+4.5572 0.29092
+4.3524 0.31254
+4.1369 0.32684
+3.9153 0.33433
+3.6917 0.33565
+3.47 0.33157
+3.2532 0.32287
+3.0441 0.31033
+2.8448 0.29468
+2.657 0.27661
+2.4822 0.2567
+2.3211 0.23548
+2.1745 0.21342
+2.0428 0.19095
+1.9259 0.16846
+1.8238 0.14632
+1.7361 0.12485
+1.6622 0.10437
+1.6014 0.085132
+1.5527 0.067367
+1.515 0.051238
+1.4873 0.036859
+1.4684 0.024289
+1.4571 0.013539
+1.4522 0.004577
+1.4525 -0.002668
+1.457 -0.008296
+1.4645 -0.012434
+1.4743 -0.015229
+1.4854 -0.016839
+1.4971 -0.017425
+1.5088 -0.017143
+1.5201 -0.016132
+1.5303 -0.014502
+1.5393 -0.012329
+1.5465 -0.009645
+1.5517 -0.006438
+1.5544 -0.002655
+1.5543 0.001794
+1.5508 0.007029
+1.5433 0.013193
+1.5311 0.020447
+1.5134 0.028973
+1.4892 0.038979
+1.4573 0.050713
+1.4165 0.064482
+1.3652 0.08067
+1.3015 0.099763
+1.223 0.12237
+1.1271 0.14923
+1.0103 0.18124
+0.86865 0.21948
+0.69731 0.26518
+0.49053 0.31975
+0.24153 0.38478
+-0.057624 0.46201
+-0.41609 0.55333
+-0.84434 0.66073
+-1.3542 0.78622
+-1.9589 0.9318
+-2.6729 1.0993
+-3.5117 1.2902
+-4.4917 1.5057
+-5.6298 1.7465
+-6.9431 2.0127
+-8.4485 2.3039
+-10.162 2.6195
+-12.101 2.9589
+-14.279 3.3216
+-16.714 3.7087
+-19.421 4.1222
+-22.42 4.5667
+-25.735 5.049
+-29.394 5.578
+-33.433 6.1647
+-37.895 6.8205
+-42.83 7.5552
+-48.293 8.3749
+-54.339 9.279
+-61.018 10.257
+-68.367 11.287
+-76.403 12.333
+-85.11 13.351
+-94.44 14.283
+-104.3 15.076
+-114.58 15.678
+-125.11 16.061
+-135.75 16.224
+-146.37 16.211
+-156.88 16.115
+-167.31 16.089
+-177.78 16.337
+-188.62 17.111
+-200.31 18.687
+-213.53 21.331
+-229.11 25.265
+-248 30.61
+-271.12 37.341
+-299.31 45.246
+-333.16 53.904
+-372.85 62.704
+-418.1 70.916
+-468.12 77.81
+-521.7 82.824
+-577.4 85.741
+-633.92 86.844
+-690.4 86.97
+-746.81 87.434
+-804.14 89.785
+-864.38 95.427
+-930.21 105.17
+-1004.4 118.83
+-1088.9 135.01
+-1184.2 151.17
+-1288.9 163.97
+-1398.7 169.85
+-1507.6 165.75
+-1607.9 149.66
+-1690.9 121.04
+-1748.8 80.967
+-1774.9 32.031
+-1764.6 -21.915
+-1716.6 -76.158
+-1632.8 -125.7
+-1518.1 -166.09
+-1380 -194.45
+-1226.8 -210.47
+-1066.1 -217
+-902.33 -219.49
+-736.1 -224.13
+-564.91 -234.69
+-386.13 -249.19
+-201.84 -257.69
+-23.773 -242.96
+123.69 -184.7
+204.69 -66.658
+178.24 115.44
+8.7157 348.4
+-322.35 601.34
+-807.45 831.85
+-1410.8 997.14
+-2074 1066.3
+-2728.4 1028.7
+-3309.4 895.27
+-3767.6 691.96
+-4073.8 449.14
+-4216.3 192.3
+-4196.3 -60.851
+-4023.8 -296.26
+-3719.1 -496.34
+-3317.3 -636.82
+-2870.8 -692.93
+-2442.7 -654.36
+-2089.4 -540.74
+-1837.1 -406.14
+-1663.7 -324.77
+-1499.2 -360.48
+-1248.1 -534.43
+-827.2 -809.5
+-200.09 -1103.8
+608.79 -1329.3
+1530.3 -1436.3
+2487.9 -1438.1
+3435.5 -1400.7
+4374.6 -1401.5
+5340.1 -1482.1
+6365.7 -1620.6
+7447 -1739.2
+8524.5 -1741
+9492.2 -1552.1
+10225 -1149.1
+10612 -561.89
+10576 139.12
+10098 858.19
+9217.6 1486.2
+8044.4 1915.4
+6745.2 2065.2
+5513.4 1914.8
+4519.5 1523.9
+3861.5 1017.8
+3542.1 535.76
+3489.8 164.83
+3612.8 -96.106
+3851.8 -314.52
+4195.6 -553.99
+4648.1 -802.67
+5170.1 -954.43
+5642.3 -863.54
+5883.3 -442.5
+5721.4 260.05
+5081.8 1054.7
+4037.8 1687.4
+2795 1954
+1614.6 1790.3
+715.45 1294.5
+197.53 679.58
+14.749 186.87
+0 0
+0 0
+-0.003377 0.012045
+-0.046444 0.10563
+-0.17649 0.27793
+-0.42711 0.49957
+-0.81109 0.72979
+-1.3164 0.92455
+-1.9089 1.0497
+-2.5421 1.0945
+-3.174 1.0786
+-3.7818 1.0465
+-4.3703 1.0487
+-4.9669 1.1162
+-5.603 1.2394
+-6.2907 1.3642
+-7.0048 1.4089
+-7.6792 1.2987
+-8.2256 1.0041
+-8.5656 0.56485
+-8.6677 0.087522
+-8.5704 -0.28534
+-8.3831 -0.42459
+-8.2591 -0.26328
+-8.3504 0.17446
+-8.7604 0.77615
+-9.5091 1.3745
+-10.525 1.7993
+-11.665 1.9278
+-12.752 1.7185
+-13.622 1.2158
+-14.16 0.52985
+-14.321 -0.20027
+-14.127 -0.84596
+-13.651 -1.3189
+-12.989 -1.5852
+-12.232 -1.6633
+-11.449 -1.6106
+-10.669 -1.5034
+-9.8908 -1.4173
+-9.0806 -1.4105
+-8.1915 -1.5128
+-7.1767 -1.7211
+-6.0045 -2.0025
+-4.6688 -2.3034
+-3.1926 -2.5644
+-1.6245 -2.7344
+-0.028579 -2.7836
+1.5285 -2.7086
+2.9904 -2.5293
+4.3184 -2.2794
+5.4932 -1.9937
+6.5095 -1.6965
+7.3683 -1.3973
+8.0686 -1.0928
+8.6042 -0.77534
+8.9658 -0.44356
+9.1482 -0.11042
+9.1596 0.19459
+9.0288 0.43053
+8.8079 0.55544
+8.5676 0.53892
+8.3868 0.37251
+8.3385 0.074609
+8.4761 -0.31155
+8.8231 -0.72608
+9.3688 -1.1044
+10.071 -1.3897
+10.866 -1.5428
+11.677 -1.5471
+12.429 -1.4089
+13.059 -1.1524
+13.519 -0.81283
+13.783 -0.42805
+13.844 -0.032346
+13.706 0.34777
+13.386 0.69468
+12.904 0.99828
+12.284 1.2533
+11.553 1.4564
+10.736 1.6039
+9.8648 1.691
+8.9719 1.7126
+8.0932 1.665
+7.2659 1.548
+6.5255 1.3665
+5.9028 1.1312
+5.4206 0.85815
+5.092 0.56688
+4.9185 0.27833
+4.8907 0.012115
+4.99 -0.21565
+5.1909 -0.39385
+5.4642 -0.517
+5.7798 -0.58494
+6.1095 -0.60192
+6.4287 -0.57525
+6.7176 -0.51393
+6.9615 -0.42731
+7.1507 -0.32423
+7.2798 -0.21238
+7.3468 -0.09806
+7.3528 0.013822
+7.3009 0.11958
+7.1956 0.21653
+7.0425 0.30281
+6.8479 0.37718
+6.6185 0.43892
+6.3612 0.48778
+6.0829 0.52393
+5.79 0.54787
+5.4888 0.56047
+5.1848 0.5628
+4.8832 0.55611
+4.5882 0.54171
+4.3033 0.5209
+4.0317 0.4949
+3.7754 0.46483
+3.5365 0.43169
+3.3161 0.39634
+3.1152 0.35957
+2.9342 0.32209
+2.7734 0.28453
+2.6326 0.24751
+2.5112 0.21157
+2.4086 0.17723
+2.3237 0.14493
+2.2555 0.11504
+2.2024 0.087836
+2.1631 0.063523
+2.1359 0.042208
+2.1193 0.023921
+2.1116 0.008618
+2.1113 -0.003806
+2.1169 -0.013512
+2.127 -0.020703
+2.1403 -0.025615
+2.1556 -0.028508
+2.1719 -0.029651
+2.1884 -0.029301
+2.2042 -0.027694
+2.2188 -0.025016
+2.2316 -0.021398
+2.2422 -0.016897
+2.2499 -0.011497
+2.2542 -0.005114
+2.2546 0.002404
+2.2503 0.011257
+2.2405 0.021685
+2.2243 0.033965
+2.2004 0.048407
+2.1675 0.065374
+2.124 0.085294
+2.0681 0.10869
+1.9975 0.13624
+1.9095 0.16876
+1.801 0.20728
+1.668 0.25308
+1.5059 0.30768
+1.309 0.37287
+1.0706 0.45074
+0.78277 0.54367
+0.43601 0.65432
+0.01942 0.78563
+-0.47967 0.94079
+-1.0757 1.1231
+-1.7851 1.3361
+-2.626 1.5831
+-3.6184 1.8671
+-4.7837 2.1908
+-6.1446 2.5561
+-7.7244 2.9642
+-9.5468 3.4152
+-11.635 3.9086
+-14.012 4.443
+-16.699 5.0172
+-19.717 5.6306
+-23.087 6.2842
+-26.832 6.9815
+-30.978 7.7297
+-35.554 8.5398
+-40.598 9.4268
+-46.158 10.409
+-52.29 11.504
+-59.059 12.73
+-66.539 14.095
+-74.802 15.6
+-83.915 17.226
+-93.924 18.935
+-104.85 20.669
+-116.66 22.347
+-129.29 23.877
+-142.62 25.163
+-156.45 26.12
+-170.58 26.696
+-184.79 26.89
+-198.89 26.774
+-212.75 26.508
+-226.38 26.35
+-239.98 26.649
+-253.97 27.832
+-269.02 30.369
+-286.06 34.715
+-306.25 41.243
+-330.88 50.161
+-361.25 61.423
+-398.51 74.663
+-443.44 89.16
+-496.29 103.87
+-556.63 117.54
+-623.31 128.94
+-694.62 137.09
+-768.53 141.62
+-843.15 143.02
+-917.25 142.7
+-990.72 142.92
+-1064.9 146.3
+-1142.6 155.26
+-1227.5 171.19
+-1323.5 193.83
+-1433.4 220.84
+-1558.1 247.93
+-1695.5 269.49
+-1840.1 279.5
+-1983.7 272.73
+-2115.6 245.73
+-2224.1 197.47
+-2298 129.58
+-2327.6 46.209
+-2306.3 -46.408
+-2231.1 -140.52
+-2103.7 -227.77
+-1929.9 -300.47
+-1719.3 -353.31
+-1483.6 -385.09
+-1233.6 -399.75
+-977.07 -405.78
+-716.73 -413.2
+-451.02 -428.62
+-177.66 -449.51
+100.38 -460.53
+368.26 -434.22
+595.07 -337.7
+734.93 -144.29
+734.9 153.43
+548.57 534.3
+151.61 947.94
+-446.32 1324.7
+-1198.2 1594.1
+-2027.1 1705.1
+-2842.6 1640.5
+-3559.7 1418.9
+-4114.7 1084
+-4470.7 686.51
+-4615.1 268.86
+-4551.6 -140.34
+-4294.8 -518.91
+-3872.6 -838.53
+-3332.1 -1058.7
+-2744.7 -1137.1
+-2197.6 -1054.5
+-1770.7 -842.39
+-1502.6 -591.45
+-1365.2 -428.93
+-1260.5 -467.28
+-1050.4 -748.45
+-608.31 -1215.4
+130.58 -1732.2
+1146.5 -2147.6
+2352.4 -2369.8
+3641.5 -2409.6
+4938.4 -2365.8
+6224.3 -2361
+7524 -2463.4
+8864.3 -2642.4
+10230 -2781
+11547 -2733.1
+12689 -2390.6
+13514 -1723.4
+13901 -781.16
+13768 328.02
+13096 1458.9
+11937 2443.4
+10427 3109.5
+8778.5 3322.6
+7244.3 3042.5
+6053.1 2362.5
+5337.2 1491.9
+5095.4 669.91
+5216.1 54.598
+5548.4 -343.84
+5979.2 -633.37
+6464.1 -927.38
+6993.7 -1225.6
+7523.3 -1377.8
+7923.9 -1167.2
+7999.7 -463.84
+7571.4 651.23
+6578.4 1880.2
+5134.6 2830
+3503 3192.1
+2000.1 2881.1
+878.28 2063.1
+240.93 1076.2
+17.924 294.84
+0 0
+0 0
+-0.004404 0.018679
+-0.060689 0.16404
+-0.23139 0.43283
+-0.56254 0.7811
+-1.074 1.1466
+-1.7535 1.4604
+-2.5578 1.6669
+-3.4246 1.7448
+-4.2928 1.7194
+-5.1228 1.6559
+-5.9095 1.6316
+-6.678 1.6977
+-7.4641 1.8467
+-8.2859 2.0041
+-9.12 2.0525
+-9.8968 1.8827
+-10.52 1.4503
+-10.903 0.81237
+-11.016 0.12519
+-10.91 -0.40132
+-10.722 -0.57682
+-10.638 -0.30327
+-10.842 0.38185
+-11.459 1.3097
+-12.51 2.2301
+-13.906 2.8891
+-15.472 3.1043
+-16.992 2.8142
+-18.264 2.0848
+-19.148 1.079
+-19.585 0.000569
+-19.593 -0.96332
+-19.249 -1.6859
+-18.652 -2.1199
+-17.898 -2.2938
+-17.052 -2.2898
+-16.143 -2.2155
+-15.163 -2.1749
+-14.075 -2.2457
+-12.833 -2.4644
+-11.397 -2.8212
+-9.7439 -3.2655
+-7.8844 -3.7191
+-5.8603 -4.097
+-3.7404 -4.3289
+-1.6076 -4.3758
+0.45629 -4.2376
+2.3853 -3.9479
+4.1372 -3.5592
+5.6939 -3.1237
+7.0539 -2.6772
+8.2216 -2.2314
+9.1976 -1.779
+9.9737 -1.3061
+10.537 -0.80883
+10.877 -0.30554
+11.001 0.15969
+10.942 0.52489
+10.762 0.72623
+10.545 0.71721
+10.387 0.48442
+10.378 0.055002
+10.582 -0.50646
+11.028 -1.1104
+11.703 -1.6606
+12.557 -2.0725
+13.512 -2.2885
+14.478 -2.2851
+15.366 -2.0725
+16.102 -1.6877
+16.634 -1.1832
+16.933 -0.6152
+16.991 -0.033677
+16.817 0.52326
+16.43 1.0308
+15.854 1.4754
+15.117 1.8499
+14.247 2.1498
+13.275 2.3693
+12.236 2.5007
+11.169 2.5356
+10.116 2.4675
+9.1242 2.2952
+8.2363 2.0255
+7.4912 1.6742
+6.9177 1.2653
+6.5323 0.82835
+6.3373 0.39513
+6.3213 -0.004531
+6.461 -0.3461
+6.7248 -0.61266
+7.0762 -0.79586
+7.4777 -0.8955
+7.8943 -0.91809
+8.2955 -0.87487
+8.6568 -0.77955
+8.9604 -0.64644
+9.1945 -0.48897
+9.3528 -0.31879
+9.4335 -0.1454
+9.4382 0.023845
+9.371 0.18349
+9.2378 0.32961
+9.0455 0.4595
+8.8021 0.57138
+8.5159 0.66426
+8.1952 0.7378
+7.8485 0.79226
+7.4838 0.82843
+7.1087 0.84757
+6.73 0.8513
+6.354 0.84147
+5.9859 0.82005
+5.6302 0.78897
+5.2905 0.75008
+4.9697 0.70505
+4.67 0.65537
+4.3931 0.60234
+4.1401 0.54713
+3.9118 0.49078
+3.7082 0.43425
+3.5293 0.37845
+3.3746 0.32421
+3.2433 0.27227
+3.1341 0.22332
+3.0458 0.1779
+2.9766 0.13646
+2.9248 0.099313
+2.8885 0.066632
+2.8658 0.038485
+2.8546 0.014826
+2.853 -0.004484
+2.8592 -0.019667
+2.8714 -0.031012
+2.8879 -0.038864
+2.9073 -0.043605
+2.9282 -0.045633
+2.9495 -0.045337
+2.9702 -0.04307
+2.9894 -0.039123
+3.0065 -0.033695
+3.0207 -0.026883
+3.0313 -0.01867
+3.0377 -0.008931
+3.0391 0.002554
+3.0346 0.016087
+3.023 0.032038
+3.0032 0.050829
+2.9737 0.072948
+2.9327 0.098957
+2.8781 0.12953
+2.8077 0.1655
+2.7183 0.20789
+2.6067 0.25799
+2.4686 0.31741
+2.2989 0.38807
+2.0916 0.47231
+1.8394 0.57288
+1.5338 0.69293
+1.1644 0.83609
+0.71941 1.0064
+0.18476 1.2083
+-0.45562 1.4467
+-1.2201 1.7267
+-2.1294 2.0535
+-3.2067 2.4322
+-4.4772 2.8675
+-5.9683 3.3636
+-7.7088 3.9234
+-9.7283 4.5486
+-12.057 5.2393
+-14.724 5.9946
+-17.758 6.8124
+-21.186 7.6905
+-25.034 8.6276
+-29.329 9.6247
+-34.097 10.687
+-39.367 11.824
+-45.178 13.052
+-51.572 14.393
+-58.606 15.875
+-66.348 17.524
+-74.878 19.367
+-84.281 21.418
+-94.646 23.675
+-106.05 26.11
+-118.56 28.666
+-132.17 31.252
+-146.87 33.745
+-162.54 36.003
+-179.02 37.875
+-196.07 39.231
+-213.41 39.988
+-230.76 40.145
+-247.83 39.808
+-264.48 39.222
+-280.69 38.783
+-296.7 39.029
+-313.04 40.618
+-330.55 44.27
+-350.41 50.69
+-374.1 60.449
+-403.26 73.865
+-439.54 90.863
+-484.4 110.87
+-538.8 132.77
+-603.04 154.96
+-676.52 175.49
+-757.72 192.44
+-844.37 204.31
+-933.81 210.55
+-1023.5 211.86
+-1111.9 210.44
+-1198.6 209.75
+-1285.5 213.87
+-1376 226.53
+-1474.9 249.94
+-1587.2 283.74
+-1716.8 324.43
+-1864.8 365.51
+-2028.9 398.41
+-2202.6 413.96
+-2375.5 404.13
+-2534.2 363.53
+-2664 290.39
+-2750.4 186.86
+-2780.7 58.809
+-2745.5 -84.728
+-2639.8 -232.36
+-2463.7 -371.53
+-2223.3 -490.28
+-1929.6 -579.76
+-1596.9 -636.89
+-1240 -666.21
+-870.63 -679.27
+-494.95 -690.67
+-113.87 -710.72
+273.56 -737.06
+663.32 -748.73
+1038.5 -706.68
+1363.9 -563.16
+1586.3 -278.7
+1643.7 158.49
+1480.8 718.21
+1067.9 1326.8
+415.53 1881.4
+-420.56 2277.5
+-1348.3 2438.9
+-2259 2340.1
+-3050.8 2009.7
+-3648.2 1513.7
+-4009.3 929.15
+-4122.2 319.26
+-3994.2 -274.14
+-3645.6 -819.61
+-3110.9 -1276.2
+-2448.5 -1583.3
+-1747.3 -1675.3
+-1118.2 -1520.2
+-664.5 -1162.9
+-439.6 -740.74
+-410.56 -450.75
+-451.96 -472.01
+-380.39 -878.85
+-19.65 -1593.7
+732.74 -2413.5
+1871 -3103.3
+3296.5 -3510
+4872.5 -3630.7
+6487.7 -3596.5
+8091.3 -3580.1
+9683.5 -3683.1
+11273 -3870.2
+12833 -3986.2
+14277 -3837.7
+15478 -3285.8
+16298 -2298.6
+16621 -948.67
+16376 618.23
+15544 2208.4
+14181 3591.4
+12436 4520
+10551 4789.4
+8831.9 4327.5
+7560 3264.4
+6901.6 1914.1
+6850.8 649.55
+7249.1 -269.4
+7873.2 -806.73
+8537.5 -1117
+9146.9 -1383.5
+9670.4 -1638.4
+10065 -1701.1
+10218 -1288.6
+9955.5 -232.57
+9129.5 1346.2
+7720.6 3030.4
+5889.9 4280
+3941.6 4685.4
+2214.7 4153.9
+960.18 2939.4
+260.97 1521.2
+19.312 414.8
+0 0
+0 0
+-0.005425 0.026954
+-0.074939 0.23713
+-0.28694 0.62782
+-0.70159 1.1385
+-1.3487 1.6811
+-2.2184 2.1555
+-3.2604 2.4768
+-4.3963 2.6067
+-5.5418 2.5727
+-6.6341 2.4617
+-7.6489 2.3831
+-8.6015 2.4156
+-9.5265 2.5598
+-10.447 2.7241
+-11.348 2.7556
+-12.166 2.508
+-12.809 1.92
+-13.196 1.0675
+-13.304 0.16102
+-13.202 -0.515
+-13.046 -0.70268
+-13.049 -0.27058
+-13.416 0.72683
+-14.285 2.0549
+-15.676 3.3681
+-17.487 4.3167
+-19.515 4.6507
+-21.516 4.2864
+-23.263 3.3148
+-24.594 1.9573
+-25.436 0.48902
+-25.799 -0.84014
+-25.749 -1.8637
+-25.376 -2.5227
+-24.762 -2.8571
+-23.959 -2.9754
+-22.983 -3.0149
+-21.819 -3.1047
+-20.433 -3.3364
+-18.788 -3.7473
+-16.86 -4.3158
+-14.651 -4.9691
+-12.197 -5.6024
+-9.5654 -6.1052
+-6.8487 -6.3893
+-4.1477 -6.4107
+-1.5557 -6.1772
+0.85632 -5.7415
+3.0472 -5.1793
+5.0041 -4.5635
+6.7319 -3.9415
+8.2405 -3.3267
+9.5322 -2.7046
+10.597 -2.0523
+11.417 -1.3615
+11.978 -0.65619
+12.282 0.002663
+12.364 0.52831
+12.291 0.83091
+12.157 0.84457
+12.07 0.54969
+12.132 -0.01672
+12.415 -0.76548
+12.951 -1.573
+13.727 -2.3065
+14.687 -2.8506
+15.743 -3.1272
+16.798 -3.1057
+17.757 -2.8021
+18.541 -2.2685
+19.096 -1.5775
+19.397 -0.80553
+19.437 -0.019666
+19.229 0.73009
+18.795 1.4122
+18.161 2.0102
+17.353 2.5159
+16.402 2.9235
+15.337 3.2248
+14.196 3.4082
+13.02 3.4606
+11.857 3.3715
+10.759 3.1379
+9.7768 2.7683
+8.9546 2.2841
+8.3267 1.7185
+7.9126 1.113
+7.7154 0.51199
+7.7223 -0.042387
+7.9063 -0.51556
+8.2307 -0.88368
+8.653 -1.135
+9.1299 -1.2693
+9.6205 -1.2959
+10.09 -1.2307
+10.51 -1.0931
+10.861 -0.90348
+11.129 -0.68064
+11.308 -0.44095
+11.396 -0.19764
+11.397 0.039141
+11.314 0.26195
+11.156 0.46551
+10.93 0.64622
+10.645 0.80179
+10.311 0.93093
+9.9381 1.0332
+9.535 1.1091
+9.1111 1.1597
+8.6751 1.1866
+8.2347 1.1922
+7.797 1.1789
+7.3681 1.1495
+6.9531 1.1067
+6.5562 1.053
+6.1807 0.99069
+5.8292 0.92187
+5.5037 0.84834
+5.2054 0.77169
+4.9354 0.69337
+4.6938 0.61469
+4.4807 0.53688
+4.2955 0.4611
+4.1374 0.38838
+4.0053 0.31967
+3.8976 0.25574
+3.8125 0.19722
+3.748 0.14457
+3.7021 0.098064
+3.6725 0.057832
+3.6571 0.02384
+3.6534 -0.004071
+3.6594 -0.02618
+3.673 -0.042862
+3.6921 -0.054575
+3.7151 -0.061834
+3.7402 -0.065185
+3.7661 -0.065167
+3.7915 -0.062274
+3.8154 -0.056919
+3.8369 -0.049391
+3.855 -0.039837
+3.8689 -0.028249
+3.8777 -0.014462
+3.8806 0.001823
+3.8764 0.021027
+3.8639 0.043668
+3.8414 0.070353
+3.8074 0.10178
+3.7596 0.13878
+3.6956 0.18233
+3.6124 0.23363
+3.5064 0.29419
+3.3735 0.36586
+3.2085 0.45092
+3.0053 0.55216
+2.7564 0.67286
+2.4532 0.81691
+2.0851 0.98876
+1.64 1.1935
+1.1035 1.4368
+0.459 1.7251
+-0.31273 2.065
+-1.2335 2.4638
+-2.3281 2.929
+-3.6238 3.4678
+-5.151 4.087
+-6.9419 4.7923
+-9.031 5.5879
+-11.454 6.4762
+-14.245 7.4575
+-17.441 8.5301
+-21.075 9.6908
+-25.178 10.936
+-29.781 12.263
+-34.913 13.673
+-40.603 15.172
+-46.886 16.773
+-53.8 18.497
+-61.394 20.376
+-69.73 22.445
+-78.882 24.744
+-88.939 27.307
+-99.998 30.156
+-112.16 33.287
+-125.51 36.66
+-140.1 40.196
+-155.96 43.762
+-173.03 47.186
+-191.19 50.262
+-210.23 52.775
+-229.84 54.536
+-249.69 55.424
+-269.41 55.431
+-288.66 54.709
+-307.22 53.604
+-325.07 52.676
+-342.47 52.696
+-360.02 54.602
+-378.74 59.427
+-400.03 68.174
+-425.63 81.662
+-457.52 100.34
+-497.66 124.1
+-547.77 152.11
+-609 182.76
+-681.64 213.74
+-764.93 242.27
+-856.96 265.57
+-954.93 281.51
+-1055.5 289.25
+-1155.6 289.81
+-1253 286.32
+-1347.6 283.72
+-1441.1 287.89
+-1537.8 304.2
+-1643.4 335.89
+-1764.2 382.56
+-1904.8 439.37
+-2067.3 497.2
+-2249 543.95
+-2442.7 566.67
+-2636.4 553.93
+-2814.6 497.95
+-2960.1 395.88
+-3055.5 250.21
+-3084.9 68.53
+-3035.9 -137.25
+-2900.6 -351.79
+-2676.9 -557.71
+-2369.5 -737.85
+-1989.6 -878.59
+-1553.4 -973.64
+-1079.2 -1027
+-583.4 -1052.8
+-76.99 -1070.4
+435.21 -1094.7
+951.65 -1124.6
+1467.2 -1134.3
+1964.2 -1072.9
+2406 -876.72
+2736.2 -491.55
+2887.2 100.16
+2797.6 859.26
+2432.5 1686.7
+1801.6 2442.4
+964.92 2982.6
+24.037 3202.1
+-899.66 3065.4
+-1692.5 2612.2
+-2270.7 1935.3
+-2589.8 1142.2
+-2640 320.84
+-2433.5 -472
+-1995.5 -1195.3
+-1366.6 -1794.6
+-614.05 -2185.7
+159 -2274.8
+821.2 -2012.7
+1246.9 -1458
+1367.8 -803.15
+1218.5 -330.46
+948.49 -304.01
+784.63 -844.2
+954.62 -1855.6
+1604.7 -3057.7
+2752.1 -4112.6
+4294.2 -4784.9
+6068.5 -5042.3
+7924.6 -5041.7
+9770.5 -5007.1
+11571 -5079.2
+13310 -5225.9
+14946 -5262.4
+16396 -4957.4
+17546 -4151
+18283 -2815.4
+18518 -1045.4
+18191 983.49
+17284 3039.3
+15843 4833
+14009 6034.6
+12039 6351.6
+10274 5663.9
+9042.2 4135.2
+8542 2202.1
+8763.7 404.19
+9501.2 -862.89
+10452 -1517.7
+11347 -1764.1
+12029 -1876.3
+12440 -1948.5
+12549 -1795.5
+12283 -1086.7
+11528 373.61
+10205 2419.4
+8358.2 4515.7
+6196.5 5987.1
+4043.1 6343.6
+2222.3 5509.8
+946.1 3844.1
+253.69 1970.3
+18.624 534.17
+0 0
+0 0
+-0.006386 0.036796
+-0.088493 0.32441
+-0.34063 0.86239
+-0.83876 1.5728
+-1.6259 2.3389
+-2.6988 3.0229
+-4.0036 3.5022
+-5.4461 3.7121
+-6.9162 3.6762
+-8.3201 3.5008
+-9.6047 3.3312
+-10.764 3.2809
+-11.824 3.3681
+-12.812 3.4925
+-13.724 3.4703
+-14.516 3.1206
+-15.115 2.3654
+-15.46 1.2988
+-15.545 0.18634
+-15.456 -0.61222
+-15.367 -0.77076
+-15.503 -0.12573
+-16.082 1.2473
+-17.24 3.0415
+-18.996 4.8085
+-21.235 6.0964
+-23.739 6.5843
+-26.249 6.1658
+-28.524 4.9586
+-30.39 3.2448
+-31.76 1.3716
+-32.628 -0.35031
+-33.037 -1.7183
+-33.052 -2.665
+-32.722 -3.2438
+-32.072 -3.5873
+-31.097 -3.8567
+-29.774 -4.1968
+-28.074 -4.7027
+-25.982 -5.4029
+-23.502 -6.2567
+-20.675 -7.166
+-17.57 -7.9991
+-14.289 -8.6233
+-10.948 -8.9382
+-7.6647 -8.9007
+-4.539 -8.5337
+-1.6415 -7.9143
+0.99253 -7.1457
+3.3589 -6.3232
+5.4714 -5.5059
+7.3462 -4.7064
+8.9879 -3.8999
+10.385 -3.0514
+11.514 -2.1459
+12.356 -1.2129
+12.907 -0.3315
+13.2 0.384
+13.303 0.81456
+13.316 0.87252
+13.351 0.53102
+13.516 -0.16241
+13.887 -1.0921
+14.499 -2.0976
+15.335 -3.0077
+16.339 -3.6742
+17.421 -3.9987
+18.481 -3.9446
+19.428 -3.5354
+20.185 -2.8403
+20.705 -1.9534
+20.966 -0.97222
+20.971 0.019547
+20.733 0.96117
+20.277 1.816
+19.627 2.5662
+18.808 3.2037
+17.844 3.7218
+16.765 4.1095
+15.603 4.3501
+14.402 4.4243
+13.209 4.3163
+12.08 4.0203
+11.07 3.5456
+10.228 2.9196
+9.5909 2.1852
+9.1815 1.3971
+9.0036 0.61421
+9.0435 -0.10788
+9.272 -0.72322
+9.6488 -1.2002
+10.128 -1.5232
+10.661 -1.6921
+11.204 -1.7195
+11.719 -1.6266
+12.177 -1.4394
+12.556 -1.1848
+12.842 -0.88797
+13.029 -0.57038
+13.117 -0.24935
+13.109 0.061995
+13.011 0.35415
+12.832 0.62051
+12.579 0.85664
+12.264 1.0598
+11.896 1.2284
+11.486 1.3621
+11.044 1.4615
+10.579 1.5279
+10.101 1.5636
+9.6174 1.5715
+9.1365 1.5548
+8.6646 1.5171
+8.2073 1.4617
+7.769 1.3921
+7.3534 1.3112
+6.9634 1.2216
+6.6011 1.1258
+6.2681 1.0258
+5.9654 0.92352
+5.6934 0.82054
+5.4523 0.71851
+5.2416 0.6189
+5.0606 0.52307
+4.9082 0.43225
+4.7829 0.34747
+4.6829 0.26958
+4.6061 0.19921
+4.5505 0.13677
+4.5135 0.082475
+4.493 0.03633
+4.4863 -0.001819
+4.4911 -0.032287
+4.505 -0.055523
+4.5259 -0.072091
+4.5516 -0.082639
+4.5803 -0.087863
+4.6103 -0.088466
+4.6402 -0.085098
+4.6685 -0.078307
+4.6942 -0.068493
+4.7163 -0.055868
+4.7336 -0.040441
+4.7453 -0.022017
+4.7502 -0.000216
+4.747 0.025507
+4.7343 0.055839
+4.7104 0.091595
+4.6733 0.13373
+4.6206 0.18338
+4.5494 0.24189
+4.4562 0.31093
+4.3371 0.39256
+4.1869 0.4893
+3.9998 0.60426
+3.7687 0.74116
+3.4849 0.90441
+3.1384 1.0992
+2.7172 1.3314
+2.2075 1.6077
+1.5928 1.9358
+0.85444 2.324
+-0.029303 2.7813
+-1.0831 3.3173
+-2.3346 3.9419
+-3.815 4.6649
+-5.5582 5.4953
+-7.6008 6.4408
+-9.9816 7.5072
+-12.74 8.6974
+-15.917 10.012
+-19.552 11.448
+-23.682 13.001
+-28.341 14.666
+-33.564 16.438
+-39.381 18.318
+-45.823 20.311
+-52.923 22.434
+-60.722 24.713
+-69.268 27.189
+-78.624 29.908
+-88.867 32.922
+-100.09 36.276
+-112.39 39.997
+-125.88 44.082
+-140.65 48.479
+-156.76 53.079
+-174.21 57.707
+-192.96 62.129
+-212.84 66.069
+-233.6 69.234
+-254.91 71.366
+-276.36 72.298
+-297.49 72.012
+-317.92 70.706
+-337.37 68.841
+-355.78 67.17
+-373.41 66.726
+-390.94 68.778
+-409.48 74.715
+-430.62 85.895
+-456.34 103.42
+-488.86 127.9
+-530.42 159.16
+-582.94 196.1
+-647.72 236.52
+-725.04 277.27
+-813.94 314.6
+-912.18 344.73
+-1016.4 364.75
+-1122.7 373.51
+-1227.4 372.36
+-1327.9 365.54
+-1423.7 359.7
+-1517 362.81
+-1612.3 382.22
+-1716.5 422.41
+-1836.6 483.04
+-1978.5 557.8
+-2144.7 634.66
+-2333 697.6
+-2535.8 729.35
+-2740.4 714.63
+-2929.8 642.82
+-3085.1 509.68
+-3186.4 317.73
+-3215.5 75.953
+-3156.6 -201.09
+-2998.4 -494.22
+-2735.4 -781.03
+-2369.5 -1038.4
+-1910.4 -1246.8
+-1374.9 -1395
+-784.09 -1484.7
+-159.02 -1531.6
+483.61 -1559.3
+1133.7 -1588
+1786.3 -1619.5
+2434.8 -1624.6
+3062.7 -1542
+3634.9 -1291.8
+4095.9 -804.14
+4377.1 -53.943
+4413.6 912.13
+4165.7 1969.8
+3639 2940
+2892.3 3636.8
+2029.5 3922.7
+1177.6 3750.1
+456.51 3170.3
+-45.693 2304.9
+-283.81 1295.7
+-250.62 258.22
+37.146 -734.98
+549.67 -1633.4
+1242.5 -2368.7
+2043 -2831.8
+2838.5 -2896
+3482.6 -2490.6
+3831.1 -1686.8
+3801 -737.35
+3425 -22.825
+2869.6 90.936
+2397.8 -576.95
+2284.7 -1919
+2721.3 -3571.2
+3753.9 -5076.7
+5284.9 -6097
+7132.2 -6552.5
+9108.8 -6614.2
+11079 -6555.3
+12967 -6560.8
+14730 -6612.6
+16319 -6511.3
+17664 -6004.1
+18685 -4922.9
+19308 -3249.1
+19479 -1093.1
+19154 1356.1
+18304 3846.2
+16946 6039.9
+15196 7518.9
+13302 7884.7
+11624 6948.5
+10527 4899.4
+10241 2308.3
+10753 -88.66
+11817 -1726.2
+13055 -2455.4
+14116 -2529.1
+14778 -2333.9
+14962 -2059
+14657 -1549.8
+13852 -455.55
+12518 1431
+10668 3897.2
+8420.6 6303.9
+6027.1 7868.9
+3804.4 8057
+2028.3 6840.4
+840.82 4695.4
+220.85 2379.2
+16.013 640.54
+0 0
+0 0
+-0.007237 0.048048
+-0.10066 0.42467
+-0.38997 1.1343
+-0.96847 2.0826
+-1.8962 3.1225
+-3.1818 4.0732
+-4.7724 4.7647
+-6.5604 5.095
+-8.408 5.0729
+-10.183 4.819
+-11.792 4.5149
+-13.197 4.3167
+-14.405 4.2721
+-15.441 4.2853
+-16.319 4.1534
+-17.024 3.6682
+-17.517 2.7378
+-17.772 1.4732
+-17.813 0.19039
+-17.745 -0.68082
+-17.752 -0.75211
+-18.064 0.16676
+-18.891 1.9746
+-20.365 4.289
+-22.493 6.5573
+-25.153 8.2258
+-28.126 8.904
+-31.15 8.4644
+-33.984 7.0516
+-36.449 5.006
+-38.448 2.7408
+-39.951 0.61985
+-40.966 -1.1264
+-41.513 -2.4279
+-41.596 -3.3524
+-41.196 -4.0513
+-40.282 -4.6988
+-38.821 -5.4407
+-36.797 -6.3603
+-34.222 -7.4644
+-31.146 -8.6849
+-27.654 -9.8954
+-23.862 -10.94
+-19.908 -11.671
+-15.932 -11.985
+-12.066 -11.847
+-8.4111 -11.304
+-5.0336 -10.463
+-1.9581 -9.4589
+0.82253 -8.4087
+3.3319 -7.3825
+5.5924 -6.3888
+7.611 -5.3897
+9.3746 -4.3346
+10.856 -3.2
+12.028 -2.02
+12.884 -0.89243
+13.451 0.039227
+13.794 0.62521
+14.011 0.75476
+14.215 0.39325
+14.51 -0.40115
+14.974 -1.4856
+15.639 -2.6626
+16.489 -3.7224
+17.467 -4.4855
+18.49 -4.8344
+19.465 -4.7291
+20.309 -4.2025
+20.96 -3.3423
+21.381 -2.2644
+21.562 -1.0861
+21.511 0.094386
+21.249 1.2083
+20.797 2.2169
+20.177 3.1032
+19.409 3.8609
+18.509 4.4832
+17.498 4.9558
+16.405 5.2557
+15.267 5.3562
+14.131 5.2343
+13.053 4.8797
+12.087 4.3024
+11.285 3.5346
+10.687 2.6298
+10.316 1.6563
+10.178 0.68791
+10.258 -0.20496
+10.526 -0.96438
+10.941 -1.5504
+11.455 -1.9435
+12.019 -2.1437
+12.586 -2.1671
+13.119 -2.0408
+13.587 -1.7979
+13.968 -1.4725
+14.252 -1.0962
+14.432 -0.69607
+14.509 -0.29349
+14.487 0.095423
+14.374 0.45922
+14.178 0.79009
+13.908 1.083
+13.575 1.3347
+13.19 1.5438
+12.761 1.7098
+12.3 1.8333
+11.816 1.9163
+11.317 1.9614
+10.813 1.9721
+10.311 1.9523
+9.8176 1.9063
+9.3382 1.8385
+8.8777 1.7528
+8.4398 1.6531
+8.0275 1.5425
+7.6431 1.424
+7.2882 1.3
+6.9641 1.1729
+6.6713 1.0448
+6.4102 0.91754
+6.1805 0.79297
+5.9818 0.67276
+5.8129 0.55844
+5.6727 0.45132
+5.5595 0.35249
+5.4713 0.26278
+5.4061 0.18278
+5.3615 0.1128
+5.3351 0.052938
+5.3245 0.003076
+5.327 -0.037107
+5.3401 -0.068105
+5.3616 -0.090567
+5.3891 -0.10526
+5.4205 -0.11302
+5.4538 -0.11471
+5.4874 -0.11114
+5.5198 -0.10301
+5.5495 -0.090848
+5.5754 -0.07494
+5.5962 -0.055333
+5.6109 -0.031816
+5.6182 -0.003937
+5.6166 0.02897
+5.6047 0.067767
+5.5806 0.1135
+5.5421 0.1674
+5.4866 0.23096
+5.4109 0.30597
+5.3113 0.39462
+5.1832 0.4996
+5.021 0.62422
+4.818 0.77248
+4.5664 0.94917
+4.2567 1.1599
+3.8776 1.4112
+3.4163 1.7107
+2.8573 2.0667
+2.183 2.4888
+1.3732 2.9876
+0.40436 3.5745
+-0.74991 4.2616
+-2.1195 5.0616
+-3.7378 5.9869
+-5.6413 7.049
+-7.8695 8.2578
+-10.464 9.6206
+-13.468 11.141
+-16.925 12.82
+-20.876 14.654
+-25.362 16.635
+-30.419 18.757
+-36.081 21.013
+-42.38 23.4
+-49.344 25.925
+-57.006 28.606
+-65.401 31.476
+-74.577 34.582
+-84.592 37.982
+-95.522 41.741
+-107.46 45.915
+-120.5 50.541
+-134.75 55.613
+-150.3 61.066
+-167.22 66.762
+-185.5 72.48
+-205.09 77.919
+-225.8 82.722
+-247.37 86.513
+-269.4 88.953
+-291.44 89.818
+-312.98 89.079
+-333.57 86.977
+-352.88 84.099
+-370.79 81.402
+-387.57 80.214
+-403.91 82.164
+-420.99 89.043
+-440.51 102.6
+-464.61 124.26
+-495.7 154.79
+-536.21 193.99
+-588.22 240.4
+-653.11 291.2
+-731.14 342.3
+-821.19 388.82
+-920.72 425.9
+-1025.9 449.72
+-1132.4 458.77
+-1235.8 454.77
+-1333.3 443.13
+-1424 432.45
+-1510.2 433.06
+-1596.9 454.51
+-1691.5 502.8
+-1802 577.73
+-1935.1 671.54
+-2094.4 769.12
+-2278 850.26
+-2478.8 893.11
+-2683.8 878.18
+-2875.9 791.76
+-3035.1 627.81
+-3140.6 388.51
+-3171.9 83.694
+-3110.6 -270.08
+-2941.5 -650.34
+-2654.8 -1029.9
+-2248.2 -1379.5
+-1728.1 -1672.3
+-1110 -1890.5
+-416.47 -2031.7
+327.21 -2110.6
+1098.5 -2154.5
+1881.1 -2189.3
+2665.8 -2221.1
+3445 -2220.1
+4204.2 -2116.9
+4913.4 -1816.8
+5522.3 -1233.9
+5965.1 -333.5
+6176.2 833.25
+6111 2119.2
+5767.5 3307.7
+5196.6 4169.4
+4496.8 4532
+3792.5 4333.7
+3204 3635.6
+2820.5 2589
+2686.8 1371.5
+2808.2 127.74
+3165 -1053
+3724.6 -2111.3
+4441.5 -2966.4
+5242.5 -3483.1
+6011.4 -3499.4
+6594.1 -2918.8
+6833.7 -1822
+6634 -523.92
+6020.8 488.42
+5167.4 734.39
+4360.1 -41.032
+3910.2 -1726.7
+4048.4 -3874.2
+4851.8 -5897
+6235.8 -7335.9
+8008.4 -8045.9
+9953.7 -8198.4
+11897 -8110.4
+13727 -8016.1
+15379 -7925.1
+16805 -7642.3
+17963 -6912.9
+18817 -5573.5
+19344 -3616
+19526 -1153.2
+19325 1635.6
+18689 4501.8
+17587 7073
+16088 8838.3
+14415 9274
+12930 8099.5
+12022 5516.2
+11943 2235.3
+12686 -787.64
+13974 -2789
+15372 -3532
+16464 -3317.6
+16982 -2663.2
+16834 -1886.3
+16043 -898.14
+14666 642.36
+12769 2939.1
+10457 5735.7
+7920.3 8312.4
+5433.1 9817.1
+3283.7 9711.9
+1676.5 8047.6
+667.33 5424.7
+169.48 2712.6
+12.03 724.34
+0 0
+0 0
+-0.007925 0.060471
+-0.11074 0.53602
+-0.4324 1.4396
+-1.0849 2.6634
+-2.1492 4.0308
+-3.652 5.3134
+-5.5476 6.2842
+-7.7187 6.7895
+-9.9989 6.8097
+-12.212 6.4696
+-14.214 5.9847
+-15.92 5.5602
+-17.307 5.2875
+-18.394 5.0936
+-19.212 4.7747
+-19.783 4.1082
+-20.119 2.9946
+-20.243 1.5595
+-20.219 0.16114
+-20.174 -0.71298
+-20.3 -0.62466
+-20.816 0.63326
+-21.917 2.9289
+-23.715 5.8043
+-26.205 8.6068
+-29.264 10.688
+-32.679 11.593
+-36.201 11.177
+-39.601 9.6105
+-42.706 7.2841
+-45.404 4.6658
+-47.637 2.1586
+-49.368 0.008728
+-50.555 -1.7185
+-51.143 -3.1046
+-51.064 -4.3115
+-50.251 -5.5108
+-48.665 -6.8301
+-46.306 -8.3218
+-43.225 -9.9555
+-39.523 -11.627
+-35.341 -13.18
+-30.846 -14.441
+-26.213 -15.255
+-21.607 -15.526
+-17.167 -15.243
+-12.995 -14.481
+-9.1445 -13.384
+-5.6291 -12.118
+-2.4297 -10.825
+0.48668 -9.5807
+3.1475 -8.3877
+5.5615 -7.1913
+7.7138 -5.9232
+9.5737 -4.5499
+11.11 -3.1091
+12.311 -1.7174
+13.198 -0.54711
+13.828 0.22109
+14.295 0.45359
+14.703 0.10812
+15.149 -0.74658
+15.704 -1.9414
+16.397 -3.2434
+17.211 -4.4072
+18.096 -5.2253
+18.978 -5.5655
+19.779 -5.3871
+20.436 -4.7349
+20.904 -3.7157
+21.167 -2.4657
+21.228 -1.1195
+21.106 0.21425
+20.824 1.463
+20.402 2.5898
+19.858 3.5819
+19.199 4.4367
+18.433 5.1479
+17.57 5.6977
+16.629 6.0561
+15.64 6.1868
+14.644 6.0583
+13.693 5.6546
+12.841 4.9844
+12.137 4.0847
+11.622 3.0187
+11.32 1.8681
+11.237 0.72223
+11.36 -0.33392
+11.658 -1.2302
+12.092 -1.9182
+12.615 -2.3744
+13.177 -2.5993
+13.735 -2.6126
+14.251 -2.4478
+14.698 -2.145
+15.056 -1.7458
+15.314 -1.2884
+15.469 -0.80525
+15.522 -0.32179
+15.481 0.14319
+15.351 0.57657
+15.142 0.96969
+14.865 1.3171
+14.528 1.6154
+14.14 1.8633
+13.713 2.0603
+13.254 2.2074
+12.772 2.3067
+12.277 2.3613
+11.776 2.3751
+11.276 2.3529
+10.784 2.2995
+10.304 2.2201
+9.842 2.1194
+9.4008 2.0017
+8.9836 1.8709
+8.5929 1.7305
+8.2302 1.5834
+7.8971 1.4322
+7.5942 1.2794
+7.3221 1.1272
+7.0809 0.9778
+6.8703 0.8331
+6.6896 0.69495
+6.5379 0.56495
+6.4137 0.44443
+6.3154 0.33447
+6.2412 0.23584
+6.1889 0.14901
+6.1562 0.074203
+6.1407 0.011382
+6.1398 -0.039737
+6.151 -0.079651
+6.1719 -0.10905
+6.1999 -0.1288
+6.2329 -0.13985
+6.2687 -0.14321
+6.3053 -0.13984
+6.3411 -0.1306
+6.3743 -0.11615
+6.4037 -0.096873
+6.4279 -0.072875
+6.4456 -0.043952
+6.4555 -0.009604
+6.4561 0.030946
+6.4457 0.078726
+6.4226 0.13501
+6.3843 0.20136
+6.3283 0.27963
+6.2511 0.3721
+6.1488 0.48156
+6.0164 0.61142
+5.8479 0.76583
+5.6362 0.94976
+5.3728 1.1691
+5.0476 1.4308
+4.6487 1.7429
+4.1624 2.1143
+3.5727 2.5555
+2.8611 3.0779
+2.0065 3.6942
+0.98496 4.4185
+-0.23097 5.2655
+-1.6721 6.2506
+-3.3726 7.3889
+-5.3703 8.6947
+-7.7058 10.18
+-10.422 11.854
+-13.564 13.722
+-17.175 15.783
+-21.299 18.032
+-25.976 20.462
+-31.244 23.06
+-37.135 25.818
+-43.678 28.73
+-50.899 31.802
+-58.826 35.054
+-67.488 38.521
+-76.926 42.259
+-87.191 46.338
+-98.351 50.835
+-110.49 55.818
+-123.7 61.333
+-138.09 67.375
+-153.75 73.867
+-170.73 80.642
+-189.04 87.428
+-208.6 93.858
+-229.24 99.489
+-250.67 103.85
+-272.47 106.52
+-294.16 107.21
+-315.18 105.86
+-335.02 102.77
+-353.3 98.64
+-369.86 94.642
+-384.93 92.414
+-399.17 93.966
+-413.79 101.52
+-430.53 117.24
+-451.61 142.91
+-479.54 179.47
+-516.84 226.69
+-565.7 282.73
+-627.55 344.1
+-702.61 405.69
+-789.66 461.44
+-885.9 505.25
+-987.22 532.36
+-1088.7 540.81
+-1185.8 532.69
+-1274.9 514.66
+-1355.2 497.41
+-1428.7 493.79
+-1500.7 515.83
+-1579 571.2
+-1672.3 660.03
+-1788.2 773.16
+-1930.9 892.45
+-2099.6 993.38
+-2287.8 1049.4
+-2483.6 1036.9
+-2670.2 938.62
+-2828.2 746.68
+-2936.6 462.4
+-2974 95.725
+-2919.8 -335.72
+-2755.4 -807.22
+-2466 -1287.6
+-2043.9 -1741.6
+-1490.6 -2134.3
+-818.48 -2439.9
+-49.757 -2648.9
+787.45 -2773.2
+1665.1 -2841.9
+2560.9 -2886.4
+3460.8 -2919
+4356.2 -2912.4
+5236.4 -2792.5
+6078.8 -2452.7
+6841.9 -1791
+7467.1 -760.63
+7889.9 586.81
+8060.9 2086.6
+7966.5 3487.7
+7643.2 4519.1
+7175.7 4972.4
+6678.1 4767.9
+6265 3973.9
+6023.4 2768.9
+5998.4 1366
+6194.8 -60.33
+6592.7 -1404.1
+7160.4 -2598
+7854.9 -3550.3
+8607.9 -4100.9
+9307.9 -4051.2
+9801.2 -3274.8
+9925.8 -1857.6
+9574.4 -173.69
+8760.6 1181.5
+7651.3 1604.8
+6537.9 756.15
+5750.4 -1259.9
+5547.7 -3915.3
+6035.5 -6490
+7148 -8393
+8695.2 -9398
+10445 -9663.3
+12198 -9543.4
+13816 -9325.7
+15225 -9061.6
+16392 -8581.2
+17311 -7646.3
+18000 -6108.3
+18488 -3964.5
+18780 -1310.9
+18835 1710.9
+18560 4881.8
+17864 7806.9
+16754 9878.8
+15413 10430
+14187 9066.2
+13472 5985
+13536 2037.5
+14378 -1588.6
+15707 -3912.6
+17061 -4597.6
+17995 -3992.6
+18225 -2761.7
+17670 -1375.6
+16392 160.31
+14519 2156.2
+12193 4804
+9591.4 7813
+6946.3 10408
+4531 11707
+2587.1 11206
+1239.8 9058.7
+461.72 5988.8
+110.29 2951.1
+7.5062 780.67
+0 0
+0 0
+-0.008401 0.073746
+-0.11807 0.65586
+-0.46537 1.7725
+-1.1818 3.3078
+-2.3736 5.0583
+-4.0916 6.7456
+-6.3045 8.0753
+-8.8905 8.8266
+-11.656 8.9333
+-14.376 8.5098
+-16.846 7.7996
+-18.923 7.0618
+-20.541 6.4471
+-21.704 5.9278
+-22.461 5.3229
+-22.877 4.4147
+-23.023 3.1052
+-22.986 1.5329
+-22.877 0.086419
+-22.852 -0.70672
+-23.105 -0.37662
+-23.839 1.2873
+-25.219 4.1167
+-27.333 7.5812
+-30.163 10.938
+-33.585 13.454
+-37.403 14.623
+-41.395 14.287
+-45.353 12.636
+-49.111 10.101
+-52.547 7.188
+-55.566 4.3209
+-58.073 1.7469
+-59.959 -0.48099
+-61.101 -2.4562
+-61.372 -4.3393
+-60.674 -6.2805
+-58.96 -8.3665
+-56.255 -10.598
+-52.655 -12.89
+-48.317 -15.094
+-43.442 -17.026
+-38.248 -18.5
+-32.948 -19.367
+-27.727 -19.552
+-22.73 -19.077
+-18.05 -18.056
+-13.731 -16.673
+-9.7733 -15.127
+-6.1467 -13.578
+-2.8125 -12.109
+0.25957 -10.712
+3.0781 -9.3139
+5.6272 -7.8268
+7.8744 -6.2069
+9.7868 -4.495
+11.349 -2.8256
+12.576 -1.3985
+13.521 -0.42341
+14.263 -0.054917
+14.894 -0.34183
+15.5 -1.205
+16.14 -2.451
+16.834 -3.8153
+17.57 -5.0219
+18.301 -5.8412
+18.972 -6.1316
+19.526 -5.8565
+19.925 -5.0744
+20.151 -3.911
+20.209 -2.5206
+20.121 -1.0503
+19.915 0.38569
+19.62 1.7168
+19.252 2.9125
+18.818 3.9681
+18.318 4.8869
+17.745 5.6643
+17.095 6.2785
+16.376 6.6913
+15.607 6.856
+14.822 6.7303
+14.063 6.2912
+13.381 5.5449
+12.823 4.5319
+12.427 3.324
+12.216 2.0158
+12.197 0.71115
+12.359 -0.49071
+12.673 -1.5078
+13.103 -2.2837
+13.603 -2.7913
+14.131 -3.0314
+14.643 -3.0277
+15.109 -2.8198
+15.502 -2.4552
+15.806 -1.9825
+16.015 -1.4465
+16.126 -0.88433
+16.144 -0.32526
+16.075 0.20971
+15.927 0.7063
+15.71 1.1554
+15.432 1.5514
+15.102 1.8913
+14.729 2.1737
+14.32 2.3986
+13.883 2.567
+13.426 2.6814
+12.957 2.745
+12.481 2.7623
+12.006 2.7385
+11.536 2.6791
+11.077 2.5897
+10.633 2.4758
+10.207 2.3423
+9.8019 2.1935
+9.4204 2.0333
+9.0641 1.8651
+8.7343 1.6918
+8.4321 1.5161
+8.1583 1.3405
+7.9133 1.1675
+7.6972 0.99938
+7.5096 0.83813
+7.3501 0.68565
+7.2176 0.54355
+7.111 0.41315
+7.0288 0.29543
+6.969 0.19108
+6.9297 0.10049
+6.9086 0.02374
+6.9034 -0.039353
+6.9116 -0.089237
+6.9307 -0.1266
+6.9582 -0.15234
+6.9917 -0.1675
+7.0288 -0.1732
+7.0676 -0.17054
+7.1059 -0.16053
+7.1422 -0.14396
+7.1746 -0.12135
+7.2018 -0.092872
+7.2224 -0.05837
+7.2349 -0.017325
+7.2378 0.031118
+7.2296 0.088137
+7.2084 0.15524
+7.1719 0.23428
+7.1174 0.32755
+7.0415 0.43785
+6.9401 0.5686
+6.8081 0.724
+6.6394 0.90908
+6.4264 1.1299
+6.1604 1.3934
+5.8309 1.7079
+5.4258 2.0828
+4.9311 2.5286
+4.3306 3.0576
+3.6059 3.683
+2.7359 4.4199
+1.6968 5.2845
+0.46144 6.2943
+-1.0005 7.4672
+-2.723 8.8214
+-4.7433 10.374
+-7.1015 12.138
+-9.8404 14.126
+-13.004 16.343
+-16.636 18.789
+-20.778 21.457
+-25.471 24.336
+-30.75 27.412
+-36.644 30.67
+-43.178 34.103
+-50.374 37.714
+-58.252 41.522
+-66.834 45.566
+-76.149 49.909
+-86.24 54.63
+-97.163 59.82
+-108.99 65.562
+-121.81 71.909
+-135.72 78.859
+-150.8 86.327
+-167.12 94.118
+-184.68 101.91
+-203.41 109.27
+-223.14 115.67
+-243.58 120.55
+-264.32 123.38
+-284.84 123.8
+-304.58 121.74
+-322.99 117.5
+-339.63 111.93
+-354.3 106.39
+-367.15 102.85
+-378.79 103.69
+-390.4 111.59
+-403.68 129.14
+-420.83 158.49
+-444.39 200.8
+-476.91 255.78
+-520.6 321.24
+-576.89 392.97
+-646.02 464.83
+-726.68 529.5
+-815.94 579.58
+-909.46 609.3
+-1002.1 616.21
+-1088.8 602.74
+-1165.9 576.82
+-1232.1 551.29
+-1289.3 541.64
+-1342.7 562.51
+-1400.4 623.44
+-1471.3 725.07
+-1563.7 856.99
+-1682.5 998.12
+-1828.1 1119.8
+-1995.2 1191
+-2173.2 1183.7
+-2347 1077.7
+-2498.7 862.83
+-2608.5 539.15
+-2655.3 116
+-2617.5 -389.13
+-2473.7 -950.65
+-2204.5 -1534.8
+-1796.2 -2100.8
+-1244.1 -2605.9
+-555.52 -3014.3
+249.69 -3307.6
+1142.4 -3491.8
+2090.4 -3595.7
+3066 -3655.8
+4050.7 -3691.9
+5035.2 -3683
+6013.5 -3554.2
+6972.5 -3190.3
+7882.8 -2474.6
+8695.6 -1345.8
+9350.3 150
+9791.9 1837.2
+9992.6 3437.1
+9968.4 4640.3
+9782.1 5201.7
+9529.8 5020.5
+9314.5 4166.7
+9218.8 2841.6
+9287.8 1290.9
+9529.2 -282.3
+9926.6 -1755.5
+10454 -3055.2
+11075 -4080.5
+11734 -4649.2
+12333 -4526.2
+12726 -3552.1
+12757 -1811.2
+12308 270.83
+11376 1995.2
+10106 2635.9
+8773.3 1760.5
+7704.5 -544.19
+7169.6 -3680.9
+7296.7 -6800.6
+8043.1 -9177.4
+9233.6 -10494
+10638 -10882
+12045 -10729
+13311 -10378
+14366 -9935
+15202 -9275
+15860 -8191.2
+16412 -6554
+16924 -4354.5
+17420 -1647.8
+17834 1490.3
+18023 4893.2
+17828 8154.3
+17192 10565
+16245 11300
+15304 9829.8
+14752 6337.3
+14857 1806.3
+15619 -2343.2
+16756 -4911.3
+17818 -5460.7
+18377 -4394.1
+18178 -2532.4
+17182 -512.59
+15501 1555.3
+13311 3945.7
+10801 6842.9
+8169.6 9936.7
+5649 12422
+3480.2 13411
+1846.9 12461
+804.76 9837.6
+265.84 6377.6
+55.513 3094.6
+3.3838 810.36
+0 0
+0 0
+-0.008623 0.087482
+-0.12204 0.78095
+-0.48658 2.1256
+-1.2536 4.005
+-2.5581 6.1947
+-4.4815 8.3654
+-7.0144 10.146
+-10.037 11.23
+-13.331 11.485
+-16.62 10.995
+-19.633 10.021
+-22.157 8.8806
+-24.073 7.7981
+-25.361 6.8172
+-26.081 5.8081
+-26.345 4.5819
+-26.292 3.0549
+-26.077 1.3777
+-25.869 -0.044753
+-25.856 -0.66646
+-26.231 -0.008231
+-27.176 2.1275
+-28.824 5.5301
+-31.231 9.6017
+-34.366 13.522
+-38.11 16.492
+-42.293 17.964
+-46.722 17.77
+-51.219 16.117
+-55.626 13.46
+-59.809 10.322
+-63.627 7.127
+-66.924 4.1076
+-69.516 1.2983
+-71.207 -1.402
+-71.816 -4.138
+-71.215 -7.0171
+-69.357 -10.061
+-66.294 -13.196
+-62.17 -16.27
+-57.203 -19.083
+-51.653 -21.422
+-45.785 -23.099
+-39.846 -23.987
+-34.034 -24.044
+-28.496 -23.337
+-23.316 -22.025
+-18.526 -20.334
+-14.114 -18.493
+-10.046 -16.68
+-6.2805 -14.978
+-2.7893 -13.369
+0.4344 -11.758
+3.3737 -10.042
+5.997 -8.1654
+8.2728 -6.1728
+10.186 -4.2153
+11.75 -2.5175
+13.008 -1.3141
+14.028 -0.7776
+14.885 -0.96087
+15.647 -1.7745
+16.358 -3.0033
+17.032 -4.3564
+17.654 -5.5343
+18.189 -6.293
+18.6 -6.4885
+18.859 -6.0927
+18.954 -5.1804
+18.899 -3.895
+18.725 -2.4053
+18.471 -0.86565
+18.179 0.61073
+17.877 1.9614
+17.58 3.1675
+17.285 4.2365
+16.978 5.1798
+16.637 5.9951
+16.246 6.6569
+15.797 7.1179
+15.298 7.3193
+14.771 7.2074
+14.25 6.7501
+13.779 5.9499
+13.399 4.8491
+13.143 3.5272
+13.036 2.0899
+13.083 0.65441
+13.274 -0.66702
+13.586 -1.7816
+13.985 -2.6255
+14.433 -3.1686
+14.891 -3.4123
+15.325 -3.3843
+15.705 -3.1301
+16.013 -2.704
+16.237 -2.1615
+16.374 -1.5528
+16.424 -0.91996
+16.393 -0.29482
+16.289 0.29991
+16.121 0.84934
+15.897 1.3444
+15.625 1.78
+15.312 2.1535
+14.964 2.464
+14.589 2.7116
+14.191 2.8978
+13.777 3.025
+13.352 3.0967
+12.921 3.1176
+12.489 3.0931
+12.061 3.0293
+11.641 2.9323
+11.232 2.8078
+10.838 2.6613
+10.461 2.4977
+10.103 2.3209
+9.7655 2.1348
+9.4506 1.9424
+9.1593 1.7467
+8.8926 1.5505
+8.6513 1.3564
+8.4358 1.1668
+8.2465 0.98414
+8.0832 0.81048
+7.9454 0.64771
+7.8326 0.49738
+7.7435 0.36074
+7.6769 0.23872
+7.631 0.13191
+7.6041 0.040576
+7.5939 -0.035303
+7.5981 -0.096068
+7.6144 -0.14234
+7.6403 -0.175
+7.6732 -0.19511
+7.7107 -0.20388
+7.7507 -0.20252
+7.7909 -0.19216
+7.8293 -0.17374
+7.8642 -0.14792
+7.8939 -0.11499
+7.9169 -0.074855
+7.9319 -0.027036
+7.9372 0.029361
+7.9315 0.095628
+7.9129 0.17347
+7.8792 0.26507
+7.828 0.37313
+7.7558 0.50101
+7.6587 0.65281
+7.5316 0.83352
+7.3682 1.0491
+7.1611 1.3067
+6.9014 1.6144
+6.5788 1.9817
+6.1811 2.4194
+5.6947 2.9396
+5.1037 3.556
+4.3904 4.2837
+3.5347 5.1397
+2.5136 6.1425
+1.3016 7.312
+-0.13013 8.6687
+-1.8138 10.233
+-3.7845 12.026
+-6.0807 14.062
+-8.7426 16.355
+-11.812 18.91
+-15.33 21.728
+-19.338 24.801
+-23.871 28.113
+-28.961 31.647
+-34.633 35.385
+-40.909 39.312
+-47.801 43.43
+-55.322 47.755
+-63.484 52.329
+-72.305 57.221
+-81.813 62.519
+-92.052 68.327
+-103.08 74.741
+-114.98 81.827
+-127.84 89.589
+-141.74 97.934
+-156.74 106.65
+-172.87 115.36
+-190.07 123.58
+-208.19 130.69
+-226.96 136.02
+-245.98 138.97
+-264.76 139.09
+-282.72 136.26
+-299.3 130.82
+-314.01 123.69
+-326.6 116.46
+-337.15 111.37
+-346.16 111.22
+-354.7 119.1
+-364.4 138.06
+-377.35 170.62
+-396.02 218.16
+-422.9 280.36
+-460.2 354.7
+-509.33 436.25
+-570.53 517.84
+-642.51 590.86
+-722.31 646.62
+-805.54 678.25
+-886.93 682.78
+-961.25 662.92
+-1024.5 627.84
+-1075.2 592.5
+-1114.8 575.1
+-1148.3 592.96
+-1183.7 657.59
+-1230.1 770.31
+-1295.8 919.67
+-1386.6 1081.9
+-1503.8 1224.5
+-1643.5 1312.2
+-1796.9 1313.1
+-1951.3 1203.9
+-2091.2 972.42
+-2199.4 617.39
+-2256.5 146.75
+-2241.3 -423.33
+-2131 -1068
+-1902.7 -1752.6
+-1536.8 -2432.4
+-1021.8 -3057
+-358.57 -3580.1
+437.43 -3971.9
+1338.4 -4230.3
+2310.1 -4380.9
+3320.6 -4464.3
+4348 -4509.2
+5382.7 -4503.6
+6424.1 -4377.2
+7470 -4009.9
+8504.8 -3271.8
+9492.5 -2084.8
+10378 -483.5
+11102 1354.6
+11620 3131.7
+11923 4505.4
+12044 5195.3
+12056 5075.3
+12043 4210.4
+12080 2817.6
+12214 1169.9
+12458 -503.85
+12803 -2066.5
+13235 -3439.6
+13731 -4516.6
+14254 -5096
+14727 -4908.2
+15026 -3758.2
+15004 -1720
+14539 741.63
+13605 2837.2
+12310 3724.8
+10890 2877.5
+9645.3 353.27
+8836.9 -3197.4
+8606.4 -6810.4
+8936.9 -9630.3
+9680.3 -11244
+10624 -11753
+11570 -11565
+12380 -11085
+13004 -10484
+13470 -9694
+13867 -8551.2
+14310 -6941.2
+14897 -4832.6
+15646 -2214.3
+16460 929.02
+17140 4499.8
+17466 8085
+17320 10871
+16780 11864
+16118 10396
+15682 6621
+15714 1646
+16215 -2890.8
+16925 -5587.4
+17447 -5923.3
+17426 -4367.6
+16690 -1903
+15272 671.52
+13339 3153.5
+11093 5800.2
+8712.6 8809.3
+6362.9 11872
+4218.5 14167
+2455.7 14817
+1197.6 13434
+455.46 10389
+119.16 6614.7
+16.478 3162.3
+0.52738 819.78
+0 0
+0 0
+-0.008565 0.10124
+-0.12229 0.90762
+-0.49448 2.49
+-1.296 4.7416
+-2.6934 7.4251
+-4.8047 10.161
+-7.6493 12.494
+-11.116 14.013
+-14.966 14.494
+-18.873 13.97
+-22.494 12.707
+-25.539 11.077
+-27.825 9.3963
+-29.3 7.8063
+-30.03 6.2599
+-30.172 4.6244
+-29.931 2.8466
+-29.538 1.0891
+-29.224 -0.2408
+-29.209 -0.60235
+-29.689 0.46827
+-30.823 3.1377
+-32.708 7.1471
+-35.373 11.838
+-38.772 16.328
+-42.799 19.77
+-47.31 21.587
+-52.15 21.607
+-57.167 20.042
+-62.211 17.355
+-67.126 14.061
+-71.724 10.566
+-75.78 7.0728
+-79.035 3.5929
+-81.226 0.025568
+-82.121 -3.7416
+-81.571 -7.7502
+-79.537 -11.934
+-76.102 -16.125
+-71.462 -20.09
+-65.891 -23.573
+-59.703 -26.339
+-53.204 -28.209
+-46.663 -29.088
+-40.291 -28.983
+-34.227 -28.013
+-28.547 -26.389
+-23.273 -24.376
+-18.388 -22.231
+-13.857 -20.144
+-9.644 -18.198
+-5.7278 -16.36
+-2.1061 -14.518
+1.2036 -12.553
+4.1734 -10.404
+6.7778 -8.1189
+9.0072 -5.8639
+10.875 -3.8848
+12.421 -2.4363
+13.697 -1.7033
+14.764 -1.7395
+15.667 -2.4448
+16.434 -3.5853
+17.069 -4.8501
+17.556 -5.9244
+17.873 -6.5584
+18.003 -6.6133
+17.946 -6.0748
+17.723 -5.0356
+17.378 -3.6554
+16.967 -2.1132
+16.55 -0.56438
+16.176 0.88564
+15.877 2.1888
+15.662 3.3436
+15.52 4.3727
+15.421 5.298
+15.331 6.1206
+15.219 6.8111
+15.063 7.3123
+14.856 7.5527
+14.611 7.4657
+14.35 7.0092
+14.109 6.1807
+13.92 5.0228
+13.814 3.6205
+13.81 2.0892
+13.916 0.55752
+14.123 -0.85104
+14.412 -2.0343
+14.756 -2.9223
+15.123 -3.4823
+15.482 -3.7168
+15.805 -3.6572
+16.072 -3.3546
+16.268 -2.8696
+16.389 -2.2637
+16.433 -1.592
+16.406 -0.90009
+16.316 -0.22194
+16.17 0.41889
+15.977 1.0076
+15.746 1.5358
+15.483 1.9992
+15.192 2.3961
+14.88 2.7261
+14.548 2.9899
+14.201 3.1889
+13.843 3.3257
+13.476 3.4038
+13.104 3.428
+12.731 3.4039
+12.359 3.3376
+11.993 3.2355
+11.633 3.1036
+11.284 2.9478
+10.947 2.773
+10.624 2.5837
+10.317 2.3836
+10.026 2.1761
+9.7546 1.9643
+9.5028 1.751
+9.272 1.5389
+9.0632 1.3308
+8.877 1.1292
+8.7138 0.93643
+8.574 0.75458
+8.4572 0.58548
+8.363 0.43066
+8.2906 0.2913
+8.2387 0.16825
+8.2059 0.062022
+8.1904 -0.027197
+8.1901 -0.099565
+8.2028 -0.15557
+8.2261 -0.196
+8.2575 -0.2219
+8.2945 -0.23448
+8.3348 -0.23504
+8.3758 -0.22482
+8.4157 -0.20488
+8.4522 -0.17605
+8.4838 -0.13876
+8.5089 -0.093042
+8.5259 -0.038498
+8.5335 0.025751
+8.5302 0.10106
+8.5145 0.18931
+8.4845 0.29296
+8.4378 0.41514
+8.3714 0.55977
+8.2813 0.73164
+8.1628 0.93658
+8.0097 1.1815
+7.815 1.4745
+7.5699 1.8249
+7.2644 2.2434
+6.8869 2.7419
+6.4245 3.3338
+5.8623 4.0342
+5.1839 4.86
+4.3705 5.8297
+3.4016 6.9637
+2.2537 8.2841
+0.90063 9.8139
+-0.68655 11.576
+-2.5398 13.593
+-4.6939 15.883
+-7.1853 18.459
+-10.052 21.33
+-13.332 24.494
+-17.06 27.941
+-21.268 31.654
+-25.984 35.61
+-31.227 39.785
+-37.011 44.161
+-43.343 48.733
+-50.224 53.515
+-57.656 58.551
+-65.644 63.912
+-74.204 69.696
+-83.364 76.02
+-93.173 82.995
+-103.7 90.702
+-115.02 99.152
+-127.23 108.25
+-140.39 117.77
+-154.56 127.31
+-169.69 136.31
+-185.67 144.08
+-202.29 149.86
+-219.18 152.93
+-235.88 152.78
+-251.84 149.22
+-266.49 142.6
+-279.34 133.92
+-290.05 124.94
+-298.6 118.19
+-305.4 116.8
+-311.35 124.32
+-317.9 144.22
+-327 179.41
+-340.96 231.5
+-362.16 300.17
+-392.72 382.6
+-434.08 473.18
+-486.49 563.74
+-548.75 644.42
+-618.03 705.22
+-690.02 738.17
+-759.48 739.71
+-821.17 712.75
+-870.91 667.64
+-906.81 621.36
+-930.08 594.75
+-945.3 607.81
+-959.85 674.12
+-982.6 795.78
+-1022 960.54
+-1083.9 1142.2
+-1170.6 1304.9
+-1279.3 1409.3
+-1403.2 1420.3
+-1532.4 1312.1
+-1654.5 1070.8
+-1755.7 693.72
+-1819.9 187
+-1828.2 -435.46
+-1758.2 -1151.2
+-1584.9 -1926.6
+-1284.5 -2714.9
+-838.75 -3459.2
+-241.43 -4102.8
+498.35 -4603.3
+1356.5 -4947.7
+2299.2 -5156.3
+3292.8 -5271.9
+4312.9 -5332.7
+5350.5 -5338.6
+6410.3 -5228.2
+7501.6 -4881.3
+8624 -4156.8
+9755.7 -2958.2
+10850 -1302.1
+11844 641.97
+12676 2567.2
+13309 4106.1
+13744 4945.1
+14020 4929.9
+14199 4112.7
+14347 2716.8
+14508 1034.7
+14704 -684.55
+14942 -2291.9
+15221 -3706.2
+15541 -4818.8
+15890 -5413.1
+16220 -5187.6
+16438 -3909.3
+16414 -1631.9
+16026 1157.8
+15219 3599.1
+14052 4748.6
+12703 3987.8
+11418 1335.1
+10434 -2526.5
+9895 -6539.6
+9812.3 -9734
+10075 -11606
+10504 -12217
+10928 -11994
+11234 -11400
+11399 -10679
+11489 -9832
+11636 -8737.6
+11991 -7288.9
+12660 -5412.5
+13648 -3007.9
+14819 48.333
+15929 3735.3
+16712 7632.9
+17006 10821
+16840 12141
+16431 10785
+16065 6881
+15937 1645.1
+16032 -3095.1
+16129 -5773.2
+15918 -5821.2
+15170 -3796
+13843 -841.7
+12075 2102.9
+10088 4780.7
+8077 7475
+6158.6 10435
+4397.1 13378
+2856.1 15476
+1618.2 15840
+751.74 14119
+257.64 10754
+51.174 6751.8
+1.4132 3188.8
+-0.44455 819.59
+0 0
+0 0
+-0.008231 0.11457
+-0.11884 1.0321
+-0.48893 2.8565
+-1.3079 5.5027
+-2.7757 8.7312
+-5.0509 12.116
+-8.1881 15.108
+-12.091 17.175
+-16.505 17.974
+-21.057 17.465
+-25.331 15.899
+-28.955 13.703
+-31.679 11.297
+-33.409 8.9475
+-34.21 6.7222
+-34.277 4.5745
+-33.882 2.4993
+-33.328 0.67376
+-32.906 -0.50644
+-32.873 -0.52878
+-33.431 1.0304
+-34.715 4.2891
+-36.795 8.9347
+-39.672 14.255
+-43.294 19.323
+-47.569 23.259
+-52.384 25.471
+-57.617 25.781
+-63.141 24.398
+-68.806 21.769
+-74.425 18.383
+-79.757 14.604
+-84.509 10.594
+-88.348 6.3439
+-90.952 1.7633
+-92.052 -3.2086
+-91.487 -8.5254
+-89.236 -14.011
+-85.419 -19.388
+-80.281 -24.332
+-74.147 -28.531
+-67.374 -31.736
+-60.299 -33.787
+-53.206 -34.635
+-46.305 -34.346
+-39.728 -33.099
+-33.543 -31.154
+-27.764 -28.816
+-22.377 -26.363
+-17.357 -23.992
+-12.679 -21.782
+-8.3335 -19.685
+-4.3274 -17.581
+-0.67763 -15.336
+2.5946 -12.888
+5.4749 -10.293
+7.9644 -7.7304
+10.083 -5.4621
+11.867 -3.7564
+13.359 -2.8041
+14.601 -2.6554
+15.619 -3.1983
+16.423 -4.1834
+17.007 -5.2862
+17.354 -6.1854
+17.454 -6.6344
+17.31 -6.507
+16.95 -5.8077
+16.426 -4.6484
+15.811 -3.203
+15.185 -1.6561
+14.622 -0.15795
+14.183 1.2005
+13.897 2.3916
+13.771 3.4355
+13.781 4.3738
+13.888 5.2404
+14.045 6.0404
+14.206 6.7404
+14.336 7.2731
+14.419 7.5537
+14.452 7.5023
+14.449 7.0659
+14.434 6.2356
+14.433 5.053
+14.47 3.6071
+14.561 2.0203
+14.712 0.43075
+14.918 -1.029
+15.164 -2.2492
+15.431 -3.155
+15.693 -3.7121
+15.928 -3.9241
+16.118 -3.8262
+16.249 -3.4745
+16.314 -2.9352
+16.314 -2.2745
+16.252 -1.5518
+16.136 -0.81498
+15.976 -0.099331
+15.781 0.57162
+15.56 1.1839
+15.32 1.7304
+15.065 2.2081
+14.799 2.6165
+14.524 2.9561
+14.241 3.228
+13.952 3.4339
+13.656 3.5763
+13.356 3.6586
+13.052 3.6855
+12.747 3.6623
+12.441 3.5952
+12.138 3.4906
+11.837 3.3548
+11.543 3.1935
+11.255 3.0118
+10.975 2.8143
+10.705 2.6048
+10.447 2.3866
+10.202 2.1629
+9.972 1.9365
+9.7575 1.7104
+9.5604 1.4873
+9.3819 1.2698
+9.2229 1.0605
+9.0842 0.86172
+8.9661 0.67555
+8.8688 0.50378
+8.7919 0.34786
+8.735 0.20896
+8.6968 0.087872
+8.6761 -0.014952
+8.671 -0.099422
+8.6797 -0.16581
+8.6998 -0.21476
+8.7289 -0.2472
+8.7646 -0.26431
+8.8042 -0.2674
+8.8453 -0.2578
+8.8857 -0.23672
+8.9232 -0.20511
+8.9559 -0.16362
+8.9823 -0.11244
+9.0008 -0.05132
+9.0102 0.020547
+9.0092 0.10452
+8.9965 0.20259
+8.9705 0.31748
+8.9291 0.45272
+8.8697 0.61277
+8.7888 0.80312
+8.6819 1.0304
+8.5434 1.3025
+8.3664 1.6285
+8.1429 2.0188
+7.8635 2.485
+7.5176 3.0402
+7.0933 3.6989
+6.5771 4.4774
+5.9544 5.3937
+5.209 6.4678
+4.3226 7.7217
+3.2752 9.1793
+2.0443 10.866
+0.6048 12.806
+-1.0706 15.023
+-3.0119 17.54
+-5.2504 20.369
+-7.8188 23.521
+-10.749 26.991
+-14.072 30.77
+-17.812 34.836
+-21.992 39.162
+-26.625 43.717
+-31.717 48.478
+-37.266 53.434
+-43.264 58.596
+-49.704 64.006
+-56.577 69.739
+-63.885 75.902
+-71.644 82.623
+-79.892 90.031
+-88.686 98.224
+-98.107 107.23
+-108.24 116.95
+-119.19 127.16
+-131.01 137.43
+-143.71 147.15
+-157.25 155.56
+-171.44 161.81
+-186.01 165.09
+-200.55 164.78
+-214.56 160.64
+-227.49 152.99
+-238.82 142.89
+-248.17 132.24
+-255.42 123.79
+-260.82 121.04
+-265.07 127.9
+-269.42 148.29
+-275.58 185.47
+-285.65 241.34
+-301.86 315.59
+-326.23 405.16
+-360.17 503.83
+-404.04 602.5
+-456.81 690.11
+-515.87 755.39
+-577.18 789.27
+-635.71 787.55
+-686.31 753.26
+-724.74 697.75
+-748.83 639.91
+-759.31 603.08
+-760.15 609.85
+-758.03 675.83
+-761.2 804.03
+-777.64 981.56
+-813.23 1180.2
+-870.35 1360.8
+-947.41 1481
+-1039.3 1502.6
+-1138.5 1398.1
+-1236.1 1152.6
+-1322.5 762.33
+-1386.1 231.79
+-1412 -428.1
+-1380.7 -1198.7
+-1267.6 -2049.2
+-1046.4 -2933.3
+-693.66 -3789.7
+-195.95 -4552
+445.15 -5165.2
+1211.6 -5603.4
+2073 -5879.3
+2996.3 -6036.1
+3956.6 -6120.8
+4946 -6147.9
+5974.4 -6068.4
+7061.9 -5766.7
+8223.5 -5093.6
+9453.1 -3932.8
+10714 -2277.3
+11943 -278.69
+13062 1758.6
+14006 3451.7
+14740 4458.3
+15267 4593.4
+15621 3888.8
+15850 2563.5
+16000 918.7
+16101 -783.6
+16177 -2387.4
+16251 -3812.5
+16349 -4951.1
+16490 -5576.4
+16665 -5358.2
+16815 -4023.2
+16838 -1594
+16611 1441.4
+16051 4175.8
+15157 5585.2
+14030 4967.3
+12849 2290.5
+11809 -1753.4
+11049 -6042.8
+10606 -9514.9
+10416 -11583
+10346 -12269
+10261 -12011
+10079 -11325
+9807.8 -10533
+9549 -9705
+9466.3 -8763.2
+9728.9 -7594.9
+10442 -6065.1
+11585 -3967.5
+12992 -1063
+14388 2700.6
+15491 6891.1
+16116 10484
+16259 12168
+16068 11019
+15748 7143.9
+15418 1853.7
+15036 -2874.9
+14422 -5367.7
+13383 -5061
+11853 -2628.2
+9956.3 630.29
+7956.1 3674.3
+6124.6 6251.7
+4620 8736.5
+3448.3 11483
+2519.3 14259
+1742.1 16224
+1086.9 16444
+578.9 14549
+246.06 11003
+75.568 6858.4
+13.788 3217.1
+0.71441 822.62
+0 0
+0 0
+-0.007668 0.12708
+-0.11228 1.151
+-0.47186 3.2165
+-1.2929 6.2741
+-2.8091 10.094
+-5.2221 14.209
+-8.6252 17.969
+-12.942 20.702
+-17.908 21.924
+-23.105 21.49
+-28.05 19.622
+-32.29 16.796
+-35.501 13.547
+-37.546 10.292
+-38.483 7.2457
+-38.536 4.476
+-38.033 2.0453
+-37.346 0.14824
+-36.824 -0.84187
+-36.758 -0.46212
+-37.358 1.6485
+-38.745 5.5432
+-40.965 10.851
+-44.003 16.815
+-47.807 22.476
+-52.301 26.94
+-57.405 29.606
+-63.026 30.289
+-69.05 29.179
+-75.319 26.689
+-81.607 23.257
+-87.614 19.189
+-92.975 14.603
+-97.296 9.4705
+-100.2 3.7286
+-101.41 -2.612
+-100.76 -9.3955
+-98.248 -16.319
+-94.046 -22.982
+-88.441 -28.967
+-81.8 -33.913
+-74.511 -37.56
+-66.928 -39.784
+-59.336 -40.59
+-51.94 -40.112
+-44.861 -38.589
+-38.16 -36.333
+-31.852 -33.676
+-25.932 -30.913
+-20.393 -28.245
+-15.232 -25.739
+-10.457 -23.344
+-6.0849 -20.927
+-2.1326 -18.357
+1.3888 -15.574
+4.4809 -12.645
+7.1611 -9.7611
+9.4606 -7.1971
+11.418 -5.2267
+13.069 -4.0393
+14.44 -3.6761
+15.539 -4.0118
+16.361 -4.7843
+16.887 -5.6616
+17.103 -6.324
+17.007 -6.537
+16.624 -6.1937
+16.004 -5.3213
+15.228 -4.0516
+14.39 -2.5705
+13.592 -1.0634
+12.92 0.33028
+12.438 1.5398
+12.178 2.5627
+12.139 3.4449
+12.29 4.2485
+12.583 5.0211
+12.959 5.772
+13.363 6.4639
+13.751 7.0195
+14.093 7.3407
+14.378 7.3338
+14.609 6.935
+14.798 6.1282
+14.965 4.9528
+15.126 3.4994
+15.293 1.8961
+15.472 0.2874
+15.66 -1.187
+15.847 -2.4118
+16.019 -3.3091
+16.161 -3.8434
+16.258 -4.0204
+16.3 -3.8784
+16.282 -3.4781
+16.204 -2.8901
+16.072 -2.1848
+15.895 -1.4242
+15.683 -0.65795
+15.447 0.078553
+15.198 0.7626
+14.944 1.3817
+14.69 1.9307
+14.441 2.4083
+14.197 2.8154
+13.958 3.1538
+13.724 3.425
+13.492 3.6311
+13.26 3.7744
+13.028 3.858
+12.796 3.8862
+12.561 3.8642
+12.326 3.7978
+12.089 3.6932
+11.853 3.5565
+11.617 3.3935
+11.384 3.2091
+11.153 3.0078
+10.926 2.7934
+10.706 2.5692
+10.492 2.3381
+10.288 2.1031
+10.095 1.867
+9.914 1.6325
+9.7472 1.4026
+9.596 1.1798
+9.4616 0.96662
+9.345 0.76548
+9.2469 0.57839
+9.1675 0.40712
+9.1068 0.25314
+9.0641 0.11756
+9.0387 0.001174
+9.0291 -0.09563
+9.0336 -0.17285
+9.0501 -0.23089
+9.0764 -0.2705
+9.11 -0.29276
+9.1482 -0.29896
+9.1886 -0.29045
+9.2287 -0.26857
+9.2662 -0.23446
+9.2993 -0.18895
+9.3262 -0.13248
+9.3455 -0.064996
+9.3561 0.014156
+9.3569 0.10627
+9.347 0.21341
+9.325 0.33849
+9.2894 0.48539
+9.2379 0.65912
+9.1676 0.86584
+9.0744 1.113
+8.9535 1.4093
+8.7985 1.7648
+8.6023 2.1908
+8.3564 2.6999
+8.0514 3.306
+7.6768 4.0246
+7.2212 4.8727
+6.6721 5.8692
+6.016 7.0353
+5.238 8.394
+4.3217 9.9706
+3.2491 11.792
+2 13.884
+0.55243 16.273
+-1.1176 18.982
+-3.0356 22.026
+-5.2275 25.413
+-7.7189 29.142
+-10.533 33.198
+-13.69 37.558
+-17.204 42.188
+-21.081 47.054
+-25.319 52.124
+-29.91 57.38
+-34.836 62.831
+-40.079 68.516
+-45.621 74.512
+-51.451 80.936
+-57.574 87.928
+-64.019 95.634
+-70.838 104.17
+-78.111 113.59
+-85.94 123.82
+-94.437 134.61
+-103.71 145.53
+-113.82 155.94
+-124.77 165
+-136.49 171.81
+-148.77 175.43
+-161.28 175.18
+-173.6 170.7
+-185.22 162.3
+-195.63 151.05
+-204.38 138.94
+-211.26 128.93
+-216.34 124.78
+-220.12 130.78
+-223.58 151.25
+-228.17 189.82
+-235.72 248.65
+-248.28 327.55
+-267.73 423.24
+-295.5 529.01
+-332.08 634.92
+-376.68 728.81
+-427.06 798.18
+-479.57 832.89
+-529.56 828.07
+-572.09 786.73
+-602.98 721.06
+-619.81 651.66
+-622.8 604.14
+-615.17 603.53
+-602.7 667.42
+-592.68 799.7
+-592.29 987.01
+-606.81 1199.3
+-638.45 1394.6
+-685.98 1527.8
+-745.39 1558.6
+-811.22 1458.3
+-877.85 1211.9
+-939.92 815.46
+-991.31 272.39
+-1022.9 -409.4
+-1020.3 -1215.8
+-962.23 -2121.1
+-822.67 -3081.6
+-575.15 -4034.2
+-199.88 -4905.2
+309.65 -5627.3
+943.4 -6161.6
+1677.2 -6510.7
+2481.5 -6716.3
+3332.9 -6833.5
+4225.2 -6891.6
+5173 -6857.9
+6205.7 -6625.1
+7352.7 -6039.4
+8623.9 -4965.1
+9994.9 -3366.7
+11404 -1369
+12764 738.31
+13981 2567.5
+14985 3754.2
+15739 4082.7
+16243 3557.3
+16527 2381.1
+16631 851.8
+16598 -766.05
+16470 -2316.1
+16297 -3723.2
+16137 -4884.4
+16046 -5567
+16056 -5415.2
+16149 -4113.5
+16251 -1641.9
+16246 1532.5
+16020 4484.8
+15507 6135.2
+14727 5708.7
+13777 3115.1
+12800 -971.58
+11925 -5398.5
+11217 -9037.5
+10659 -11233
+10171 -11962
+9657.3 -11667
+9066.7 -10912
+8432.4 -10091
+7878.9 -9347.6
+7588 -8638.7
+7733.8 -7834
+8408.4 -6721.9
+9568.6 -4982
+11029 -2263.9
+12515 1545.3
+13755 5992.3
+14574 9956
+14940 12002
+14936 11117
+14664 7410.2
+14148 2271.6
+13303 -2222.8
+11994 -4359.9
+10155 -3643.4
+7899.4 -895.87
+5533.5 2436.3
+3449.2 5260.4
+1958.4 7403.3
+1159.8 9406.6
+916.84 11789
+953.55 14397
+1002.2 16357
+915.7 16642
+691.75 14787
+417.11 11220
+187.16 7007.1
+51.499 3289.6
+3.8195 841.33
+0 0
+0 0
+-0.006972 0.13852
+-0.10389 1.262
+-0.44776 3.5642
+-1.2605 7.0449
+-2.8086 11.498
+-5.3362 16.419
+-8.9765 21.053
+-13.675 24.572
+-19.161 26.322
+-24.979 26.032
+-30.581 23.874
+-35.44 20.368
+-39.163 16.175
+-41.566 11.882
+-42.695 7.8791
+-42.795 4.3775
+-42.24 1.5244
+-41.458 -0.46288
+-40.849 -1.2425
+-40.738 -0.41828
+-41.343 2.2893
+-42.78 6.856
+-45.081 12.85
+-48.226 19.475
+-52.168 25.756
+-56.857 30.793
+-62.238 33.984
+-68.244 35.127
+-74.765 34.379
+-81.618 32.096
+-88.532 28.644
+-95.143 24.262
+-101.02 19.019
+-105.71 12.882
+-108.81 5.8316
+-110.02 -2.0274
+-109.21 -10.411
+-106.41 -18.875
+-101.83 -26.893
+-95.81 -33.956
+-88.734 -39.659
+-81.011 -43.748
+-72.995 -46.141
+-64.965 -46.909
+-57.11 -46.256
+-49.541 -44.48
+-42.314 -41.935
+-35.453 -38.978
+-28.971 -35.908
+-22.888 -32.921
+-17.231 -30.081
+-12.031 -27.329
+-7.3151 -24.537
+-3.1012 -21.581
+0.61298 -18.414
+3.8492 -15.118
+6.6461 -11.897
+9.0508 -9.0302
+11.109 -6.7914
+12.854 -5.3599
+14.3 -4.7623
+15.442 -4.8583
+16.26 -5.375
+16.728 -5.9785
+16.833 -6.3581
+16.582 -6.2981
+16.014 -5.7166
+15.202 -4.6662
+14.244 -3.2983
+13.254 -1.8086
+12.344 -0.37857
+11.609 0.86763
+11.115 1.8839
+10.892 2.6965
+10.933 3.3789
+11.203 4.0154
+11.647 4.6673
+12.199 5.3485
+12.798 6.0178
+13.393 6.5883
+13.945 6.9489
+14.435 6.9932
+14.857 6.6462
+15.214 5.8846
+15.516 4.7445
+15.774 3.317
+15.996 1.7329
+16.185 0.14157
+16.34 -1.3131
+16.455 -2.5122
+16.524 -3.376
+16.538 -3.8693
+16.491 -3.9997
+16.381 -3.8088
+16.212 -3.3611
+15.989 -2.7308
+15.724 -1.9913
+15.429 -1.2063
+15.118 -0.42589
+14.803 0.31506
+14.496 0.99546
+14.203 1.6051
+13.931 2.1409
+13.682 2.604
+13.454 2.9972
+13.245 3.3232
+13.053 3.5847
+12.873 3.7836
+12.701 3.9224
+12.534 4.0038
+12.369 4.0315
+12.204 4.0102
+12.037 3.9453
+11.867 3.8426
+11.694 3.7078
+11.519 3.5463
+11.34 3.3631
+11.16 3.1621
+10.979 2.9471
+10.799 2.7212
+10.62 2.4871
+10.446 2.2476
+10.277 2.0055
+10.116 1.7636
+9.9642 1.5247
+9.8241 1.2915
+9.6973 1.0668
+9.5851 0.85306
+9.4887 0.6526
+9.4089 0.4675
+9.3461 0.29954
+9.3004 0.1502
+9.2711 0.020608
+9.2575 -0.088472
+9.258 -0.1767
+9.2709 -0.24418
+9.294 -0.29143
+9.3249 -0.31933
+9.3611 -0.3291
+9.3999 -0.3221
+9.4388 -0.29975
+9.4755 -0.26339
+9.5081 -0.21407
+9.5347 -0.15253
+9.5541 -0.07895
+9.5652 0.007077
+9.5673 0.10672
+9.5597 0.22203
+9.5415 0.35606
+9.5117 0.51302
+9.4685 0.69837
+9.4095 0.91893
+9.3315 1.1829
+9.2302 1.4998
+9.1003 1.8805
+8.9355 2.3371
+8.7286 2.883
+8.4717 3.5329
+8.1561 4.3026
+7.7724 5.2098
+7.3108 6.2741
+6.7609 7.517
+6.1113 8.9625
+5.3501 10.637
+4.4638 12.567
+3.4378 14.782
+2.256 17.309
+0.90099 20.17
+-0.64574 23.383
+-2.4031 26.956
+-4.3892 30.886
+-6.6203 35.158
+-9.1087 39.743
+-11.861 44.604
+-14.877 49.701
+-18.148 54.994
+-21.657 60.46
+-25.38 66.102
+-29.289 71.956
+-33.357 78.103
+-37.565 84.666
+-41.911 91.801
+-46.415 99.673
+-51.128 108.43
+-56.137 118.13
+-61.559 128.74
+-67.533 140.02
+-74.209 151.54
+-81.718 162.64
+-90.144 172.43
+-99.496 179.92
+-109.68 184.12
+-120.47 184.2
+-131.52 179.76
+-142.39 171.01
+-152.59 159
+-161.64 145.78
+-169.22 134.46
+-175.22 129.03
+-179.93 134.09
+-184.04 154.32
+-188.71 193.74
+-195.5 254.79
+-206.21 337.41
+-222.63 438.24
+-246.18 550.16
+-277.51 662.52
+-316.18 762.16
+-360.38 835.47
+-406.99 871.26
+-451.83 863.92
+-490.33 816.34
+-518.44 741.37
+-533.55 661.02
+-535.39 602.97
+-526.3 594.43
+-511.04 654.81
+-495.71 788.87
+-486.33 982.8
+-487.16 1204.8
+-499.66 1410.7
+-522.27 1552.6
+-551.26 1588.8
+-582.43 1490.5
+-612.7 1243.3
+-640.85 844.57
+-666.54 297.66
+-687.7 -391.8
+-697.12 -1214.6
+-679.89 -2151.1
+-613.36 -3162.9
+-470.73 -4188.5
+-227.63 -5149.6
+130.33 -5969.1
+602.55 -6594.9
+1173.6 -7019.1
+1820.2 -7279.2
+2522.7 -7436.5
+3277.1 -7535.2
+4101.6 -7560.4
+5033.1 -7417.2
+6113 -6950.4
+7366.4 -6006.8
+8782.9 -4519.5
+10307 -2578.7
+11845 -448.29
+13282 1491.4
+14513 2862.4
+15461 3420.6
+16092 3137.3
+16408 2188.6
+16445 854.98
+16252 -608.73
+15895 -2054.5
+15454 -3417.2
+15019 -4602.5
+14686 -5375
+14526 -5356.3
+14566 -4186.9
+14760 -1793.2
+15002 1400.3
+15150 4480.2
+15077 6338.2
+14716 6139.6
+14084 3728.3
+13269 -266.26
+12387 -4694.8
+11531 -8392.6
+10731 -10648
+9955.3 -11392
+9146.4 -11059
+8273.8 -10250
+7382.9 -9429.8
+6606.1 -8806.3
+6127.7 -8370.2
+6114.9 -7962.9
+6643.8 -7288.3
+7656.1 -5912.9
+8968.5 -3389.4
+10333 436.4
+11521 5081
+12391 9341.2
+12899 11696
+13058 11089
+12859 7655.5
+12223 2850.1
+11013 -1205.1
+9132.4 -2832.2
+6640.2 -1667.6
+3824.4 1286.5
+1159.3 4451.5
+-850.49 6736.1
+-1869.3 8122
+-1871 9396.2
+-1141.6 11299
+-144.43 13777
+680.88 15903
+1080.8 16493
+1041.4 14913
+728.05 11483
+362.17 7258.7
+107.06 3439.8
+8.274 885.16
+0 0
+0 0
+-0.006294 0.14885
+-0.095661 1.3649
+-0.42374 3.8981
+-1.2265 7.8114
+-2.8003 12.934
+-5.429 18.732
+-9.2823 24.339
+-14.327 28.753
+-20.288 31.134
+-26.678 31.057
+-32.893 28.629
+-38.341 24.408
+-42.568 19.186
+-45.346 13.74
+-46.707 8.6613
+-46.906 4.3248
+-46.353 0.97935
+-45.518 -1.1303
+-44.843 -1.6992
+-44.677 -0.41063
+-45.253 2.92
+-46.686 8.182
+-49.008 14.882
+-52.202 22.193
+-56.238 29.132
+-61.092 34.802
+-66.736 38.597
+-73.117 40.291
+-80.118 39.987
+-87.526 37.964
+-95.012 34.499
+-102.15 29.755
+-108.44 23.759
+-113.38 16.488
+-116.57 7.9876
+-117.7 -1.5214
+-116.68 -11.609
+-113.58 -21.684
+-108.66 -31.093
+-102.29 -39.244
+-94.864 -45.7
+-86.8 -50.227
+-78.439 -52.795
+-70.038 -53.545
+-61.766 -52.751
+-53.724 -50.764
+-45.968 -47.971
+-38.537 -44.737
+-31.475 -41.362
+-24.835 -38.033
+-18.678 -34.807
+-13.063 -31.631
+-8.0309 -28.387
+-3.5967 -24.972
+0.25646 -21.363
+3.5734 -17.659
+6.4173 -14.079
+8.8548 -10.903
+10.943 -8.3936
+12.716 -6.7147
+14.182 -5.8726
+15.327 -5.7095
+16.121 -5.9435
+16.534 -6.2433
+16.555 -6.3127
+16.198 -5.96
+15.515 -5.1317
+14.591 -3.9067
+13.538 -2.4553
+12.477 -0.97947
+11.527 0.34601
+10.783 1.416
+10.309 2.2115
+10.132 2.789
+10.243 3.25
+10.601 3.7008
+11.15 4.216
+11.823 4.8139
+12.555 5.4499
+13.292 6.028
+13.992 6.4256
+14.629 6.5241
+15.189 6.2387
+15.668 5.5388
+16.067 4.4567
+16.391 3.0826
+16.643 1.5485
+16.825 0.005935
+16.937 -1.3988
+16.976 -2.5455
+16.94 -3.3541
+16.829 -3.7905
+16.643 -3.8646
+16.389 -3.6211
+16.075 -3.1276
+15.715 -2.4611
+15.323 -1.697
+14.915 -0.89987
+14.507 -0.11936
+14.113 0.61112
+13.745 1.2727
+13.41 1.8578
+13.113 2.3662
+12.855 2.8015
+12.634 3.1685
+12.446 3.4716
+12.286 3.7142
+12.148 3.8986
+12.026 4.0271
+11.914 4.1021
+11.809 4.1267
+11.705 4.1049
+11.601 4.0415
+11.493 3.9417
+11.38 3.8107
+11.261 3.6535
+11.137 3.4744
+11.006 3.2773
+10.87 3.0655
+10.73 2.8416
+10.588 2.6084
+10.445 2.3683
+10.303 2.124
+10.164 1.8782
+10.03 1.6337
+9.9043 1.3933
+9.788 1.1598
+9.683 0.93602
+9.591 0.72436
+9.5132 0.52722
+9.4504 0.34669
+9.4032 0.18461
+9.3714 0.042505
+9.3545 -0.078478
+9.3514 -0.17761
+9.3608 -0.25463
+9.3805 -0.30975
+9.4084 -0.34362
+9.4418 -0.3573
+9.4783 -0.35212
+9.5153 -0.32959
+9.5504 -0.29121
+9.5815 -0.23832
+9.607 -0.17193
+9.6257 -0.092587
+9.6367 -0.000154
+9.6395 0.10633
+9.6337 0.22882
+9.619 0.37045
+9.5947 0.53569
+9.5597 0.73042
+9.5123 0.96202
+9.4501 1.2394
+9.3696 1.5727
+9.2666 1.9737
+9.1359 2.4551
+8.9718 3.0308
+8.768 3.7159
+8.5177 4.5268
+8.214 5.4813
+7.8499 6.599
+7.4181 7.9019
+6.9112 9.4142
+6.3215 11.162
+5.6408 13.175
+4.86 15.48
+3.9693 18.106
+2.9582 21.077
+1.8153 24.41
+0.52944 28.113
+-0.90991 32.184
+-2.5112 36.604
+-4.2792 41.341
+-6.2137 46.355
+-8.3072 51.598
+-10.545 57.025
+-12.903 62.606
+-15.351 68.338
+-17.856 74.257
+-20.384 80.444
+-22.91 87.03
+-25.427 94.187
+-27.953 102.1
+-30.543 110.95
+-33.289 120.83
+-36.331 131.72
+-39.84 143.43
+-44.014 155.53
+-49.054 167.34
+-55.131 177.96
+-62.358 186.33
+-70.752 191.38
+-80.209 192.18
+-90.49 188.22
+-101.23 179.61
+-111.97 167.36
+-122.23 153.53
+-131.58 141.29
+-139.78 134.83
+-146.86 139
+-153.25 158.84
+-159.8 198.69
+-167.79 261.31
+-178.79 346.86
+-194.46 451.94
+-216.23 569.18
+-244.96 687.33
+-280.55 792.4
+-321.74 869.74
+-365.96 907.15
+-409.63 898.29
+-448.64 845.77
+-479.11 762.88
+-498.33 672.8
+-505.51 604.93
+-502.16 588.44
+-491.87 644.35
+-479.46 778.16
+-469.54 975.63
+-465.04 1203.4
+-466.19 1414.8
+-470.38 1559.9
+-473.36 1595.9
+-471.14 1494.3
+-462.22 1243.1
+-448.78 842.04
+-436.06 296.24
+-429.64 -389.63
+-431.23 -1210.6
+-434.59 -2153.9
+-423.66 -3188.7
+-374.33 -4258.1
+-260 -5283.5
+-59.312 -6181
+237.15 -6887.5
+624.69 -7383.6
+1088.9 -7701.3
+1615.7 -7905.4
+2204.3 -8053.3
+2875.1 -8148.2
+3669.4 -8110.4
+4637.7 -7787.4
+5818.3 -7010.8
+7215.5 -5682.1
+8784.1 -3851.5
+10429 -1747
+12023 270.47
+13429 1819.9
+14534 2633.4
+15266 2646.6
+15601 1997.9
+15562 936.95
+15206 -305.03
+14622 -1598.2
+13916 -2893.2
+13214 -4107
+12647 -5003.7
+12326 -5184.2
+12312 -4243.8
+12593 -2046
+13069 1046.8
+13579 4159.8
+13941 6182.3
+14012 6234.1
+13734 4086.6
+13143 300.17
+12345 -4012.9
+11457 -7679.1
+10554 -9941.5
+9646.8 -10682
+8702 -10311
+7695.8 -9453.4
+6668.7 -8635.4
+5743.7 -8130.8
+5093.8 -7958.8
+4872.9 -7929.9
+5145.2 -7663.3
+5852 -6622.9
+6834.6 -4285.1
+7898.1 -476.53
+8880.3 4282.7
+9686.4 8727.9
+10270 11296
+10578 10938
+10493 7839.3
+9832.4 3506.5
+8411.8 54.755
+6166.2 -943.36
+3262.6 685.86
+132.85 3737.6
+-2617.7 6519.9
+-4406.6 7993.9
+-4896.2 8362.5
+-4133.6 8721.4
+-2535.6 10078
+-721.62 12493
+729.23 14963
+1481.9 16093
+1524.8 15003
+1103.8 11848
+562.16 7647.7
+168.87 3684.2
+13.168 958.42
+0 0
+0 0
+-0.005827 0.15833
+-0.090166 1.4616
+-0.40905 4.2227
+-1.2115 8.5788
+-2.8199 14.405
+-5.551 21.143
+-9.6043 27.809
+-14.963 33.216
+-21.346 36.315
+-28.241 36.512
+-34.998 33.834
+-40.972 28.873
+-45.661 22.558
+-48.802 15.869
+-50.411 9.6153
+-50.748 4.3549
+-50.246 0.44984
+-49.4 -1.8232
+-48.68 -2.1993
+-48.457 -0.44851
+-48.973 3.5108
+-50.353 9.4777
+-52.635 16.899
+-55.819 24.922
+-59.898 32.565
+-64.875 38.936
+-70.747 43.423
+-77.471 45.759
+-84.913 45.975
+-92.821 44.251
+-100.81 40.763
+-108.37 35.594
+-114.97 28.74
+-120.08 20.205
+-123.26 10.125
+-124.25 -1.1418
+-122.99 -13.008
+-119.62 -24.729
+-114.42 -35.532
+-107.77 -44.758
+-100.11 -51.953
+-91.812 -56.914
+-83.202 -59.673
+-74.505 -60.445
+-65.868 -59.563
+-57.382 -57.426
+-49.108 -54.435
+-41.11 -50.959
+-33.467 -47.281
+-26.274 -43.58
+-19.63 -39.911
+-13.623 -36.231
+-8.3058 -32.45
+-3.6915 -28.496
+0.25348 -24.378
+3.5983 -20.223
+6.4317 -16.258
+8.8416 -12.762
+10.898 -9.9822
+12.641 -8.0565
+14.077 -6.9673
+15.186 -6.538
+15.938 -6.4788
+16.301 -6.4641
+16.266 -6.216
+15.857 -5.5693
+15.131 -4.5001
+14.182 -3.1129
+13.123 -1.5942
+12.077 -0.14957
+11.158 1.0556
+10.458 1.9368
+10.035 2.5026
+9.9108 2.8391
+10.074 3.0746
+10.485 3.3359
+11.088 3.7097
+11.819 4.2183
+12.617 4.8141
+13.428 5.3934
+14.209 5.8234
+14.93 5.9755
+15.571 5.7559
+16.123 5.1278
+16.58 4.1194
+16.939 2.8191
+17.201 1.3587
+17.363 -0.11012
+17.427 -1.4408
+17.391 -2.5133
+17.259 -3.2489
+17.035 -3.6154
+16.725 -3.6254
+16.343 -3.3263
+15.901 -2.7886
+15.418 -2.0913
+14.911 -1.3107
+14.4 -0.51156
+13.903 0.25756
+13.434 0.96531
+13.005 1.5955
+12.624 2.1436
+12.295 2.6124
+12.02 3.0083
+11.794 3.3384
+11.614 3.6088
+11.473 3.8237
+11.363 3.9861
+11.278 4.0983
+11.209 4.1622
+11.151 4.1804
+11.099 4.1561
+11.047 4.0934
+10.992 3.9966
+10.931 3.8704
+10.864 3.719
+10.788 3.5463
+10.703 3.3557
+10.61 3.1498
+10.509 2.9311
+10.402 2.7018
+10.291 2.4644
+10.177 2.2211
+10.062 1.9746
+9.9486 1.7276
+9.8394 1.4829
+9.7363 1.2435
+9.6413 1.0122
+9.5563 0.79157
+9.4829 0.58436
+9.4223 0.39293
+9.3754 0.21945
+9.3425 0.065834
+9.3234 -0.066357
+9.3174 -0.17597
+9.3234 -0.26235
+9.3397 -0.32532
+9.3642 -0.36527
+9.3944 -0.38305
+9.4278 -0.37992
+9.462 -0.35743
+9.4946 -0.31726
+9.5235 -0.26101
+9.5472 -0.19007
+9.5645 -0.10533
+9.5747 -0.007025
+9.5776 0.10554
+9.5731 0.23417
+9.5613 0.382
+9.5421 0.55367
+9.5151 0.75541
+9.4793 0.9951
+9.4329 1.2822
+9.3736 1.6276
+9.2983 2.0434
+9.2031 2.5432
+9.0838 3.141
+8.936 3.8523
+8.7549 4.6935
+8.536 5.6823
+8.2753 6.8383
+7.9688 8.1832
+7.6129 9.741
+7.2042 11.538
+6.7396 13.603
+6.2156 15.965
+5.6288 18.652
+4.9753 21.688
+4.2513 25.091
+3.453 28.869
+2.5777 33.017
+1.6246 37.516
+0.59632 42.331
+-0.50006 47.418
+-1.6511 52.722
+-2.8361 58.193
+-4.0269 63.796
+-5.189 69.521
+-6.2845 75.403
+-7.277 81.525
+-8.1393 88.028
+-8.8624 95.099
+-9.4663 102.95
+-10.01 111.79
+-10.6 121.75
+-11.395 132.86
+-12.605 144.96
+-14.477 157.63
+-17.282 170.22
+-21.283 181.81
+-26.7 191.29
+-33.671 197.52
+-42.221 199.46
+-52.228 196.49
+-63.425 188.61
+-75.41 176.74
+-87.702 162.89
+-99.814 150.27
+-111.36 143.17
+-122.18 146.69
+-132.42 166.11
+-142.66 206.15
+-153.89 269.89
+-167.45 357.73
+-184.87 466.37
+-207.61 588.26
+-236.72 711.74
+-272.48 822.1
+-314.14 903.79
+-359.77 943.65
+-406.4 934.55
+-450.41 878.74
+-488.17 789.7
+-516.88 691.51
+-535.28 614.99
+-544.03 590.98
+-545.62 641.87
+-543.5 773.81
+-540.86 972.02
+-539.11 1201.5
+-536.95 1413.2
+-530.31 1555.3
+-513.59 1584
+-482.1 1472
+-434.75 1210.2
+-375.98 803.01
+-315.85 258.93
+-267.39 -416.17
+-241.96 -1220.2
+-243.78 -2147.4
+-265.93 -3175.7
+-289.91 -4256.6
+-289.49 -5315.4
+-238.04 -6265.5
+-116.31 -7035.7
+82.885 -7596.4
+355.96 -7972
+696.53 -8228.1
+1107 -8432.4
+1608.9 -8605.2
+2244.8 -8683.1
+3070.1 -8520.1
+4133.6 -7936.6
+5453.6 -6804.2
+6998 -5130.4
+8678.4 -3100
+10359 -1042.6
+11884 668.98
+13105 1750.2
+13914 2100.6
+14261 1813.1
+14154 1092.5
+13655 132.58
+12870 -965.69
+11935 -2174
+11005 -3422.1
+10238 -4474.2
+9777.2 -4911
+9713.5 -4281.8
+10059 -2381.6
+10726 504.58
+11539 3563.2
+12274 5704.2
+12729 6014.5
+12784 4189
+12434 697.51
+11777 -3414
+10954 -6986.5
+10078 -9226.3
+9188.3 -9956
+8262 -9547.5
+7264.5 -8633
+6212.9 -7792.7
+5204.9 -7365.2
+4392.8 -7401.5
+3917.3 -7685.2
+3840.8 -7759.9
+4123.1 -7003.4
+4651.7 -4838.9
+5302.4 -1092.8
+5989.9 3677.2
+6669.8 8171.3
+7293.6 10830
+7745.9 10660
+7815.1 7918.2
+7230.9 4146.5
+5773.1 1405.2
+3406.9 1104.7
+380.43 3188.1
+-2778.2 6240.1
+-5390.2 8478.8
+-6845.5 8959.7
+-6828.5 8152.4
+-5449.2 7499.1
+-3213.6 8298.2
+-838.29 10729
+1013.6 13697
+1961.5 15551
+2003.6 15117
+1451.1 12336
+741.09 8174
+223.29 4018
+17.447 1059.1
+0 0
+0 0
+-0.005779 0.16754
+-0.090224 1.557
+-0.41393 4.5492
+-1.2387 9.3639
+-2.9076 15.929
+-5.7606 23.661
+-10.016 31.458
+-15.664 37.934
+-22.417 41.818
+-29.738 42.334
+-36.945 39.42
+-43.355 33.7
+-48.435 26.245
+-51.897 18.247
+-53.747 10.746
+-54.244 4.4924
+-53.827 -0.031014
+-53.008 -2.5126
+-52.268 -2.7279
+-51.988 -0.537
+-52.422 4.0368
+-53.704 10.703
+-55.889 18.852
+-58.998 27.613
+-63.056 36.008
+-68.095 43.153
+-74.133 48.418
+-81.131 51.484
+-88.935 52.286
+-97.251 50.89
+-105.63 47.358
+-113.52 41.695
+-120.32 33.877
+-125.49 23.96
+-128.6 12.192
+-129.42 -0.91201
+-127.94 -14.596
+-124.34 -27.966
+-118.94 -40.141
+-112.15 -50.409
+-104.37 -58.32
+-95.961 -63.716
+-87.21 -66.695
+-78.306 -67.543
+-69.37 -66.648
+-60.485 -64.435
+-51.727 -61.31
+-43.189 -57.626
+-34.991 -53.649
+-27.275 -49.543
+-20.178 -45.367
+-13.816 -41.102
+-8.2531 -36.695
+-3.4977 -32.12
+0.50067 -27.428
+3.8349 -22.775
+6.6179 -18.399
+8.958 -14.572
+10.938 -11.518
+12.606 -9.3471
+13.971 -8.0133
+15.015 -7.3201
+15.707 -6.9713
+16.024 -6.649
+15.962 -6.0949
+15.549 -5.1709
+14.848 -3.8807
+13.952 -2.3517
+12.971 -0.78304
+12.018 0.61872
+11.196 1.6995
+10.586 2.3955
+10.237 2.741
+10.167 2.8493
+10.363 2.872
+10.788 2.9539
+11.394 3.1921
+12.124 3.6122
+12.922 4.1643
+13.739 4.7385
+14.536 5.1943
+15.281 5.3949
+15.952 5.2397
+16.532 4.6866
+17.01 3.7602
+17.379 2.5465
+17.633 1.1758
+17.77 -0.20167
+17.787 -1.4406
+17.686 -2.4229
+17.472 -3.0721
+17.154 -3.359
+16.743 -3.2988
+16.255 -2.942
+15.708 -2.3611
+15.123 -1.6366
+14.521 -0.84544
+13.922 -0.051633
+13.346 0.69783
+12.807 1.374
+12.319 1.9636
+11.89 2.4653
+11.524 2.8852
+11.222 3.2325
+10.98 3.5167
+10.794 3.7457
+10.657 3.9251
+10.56 4.0585
+10.495 4.1482
+10.454 4.196
+10.43 4.2038
+10.414 4.1741
+10.402 4.1101
+10.39 4.0155
+10.372 3.8939
+10.347 3.7489
+10.312 3.5837
+10.268 3.4009
+10.213 3.2028
+10.149 2.9914
+10.076 2.7685
+9.9953 2.5361
+9.9092 2.2964
+9.8195 2.0518
+9.7282 1.805
+9.6377 1.5587
+9.5501 1.3159
+9.4676 1.0794
+9.3922 0.85221
+9.3256 0.63705
+9.2693 0.43658
+9.2246 0.25329
+9.192 0.089475
+9.1718 -0.052907
+9.1637 -0.17227
+9.1667 -0.26751
+9.1795 -0.33806
+9.2002 -0.38398
+9.2267 -0.40588
+9.2564 -0.4049
+9.287 -0.38262
+9.3163 -0.34086
+9.3422 -0.28154
+9.3633 -0.20637
+9.3785 -0.11668
+9.3873 -0.013084
+9.3898 0.10476
+9.3863 0.23844
+9.3771 0.39102
+9.3627 0.56725
+9.3433 0.77362
+9.3185 1.0184
+9.2877 1.3115
+9.2495 1.6643
+9.2018 2.0896
+9.1423 2.6009
+9.0685 3.2129
+8.9775 3.9408
+8.867 4.8009
+8.7349 5.8107
+8.5798 6.9892
+8.4011 8.3577
+8.1988 9.9396
+7.9739 11.761
+7.7278 13.85
+7.4625 16.235
+7.1806 18.944
+6.8847 22.001
+6.578 25.424
+6.2641 29.221
+5.9477 33.385
+5.6352 37.895
+5.336 42.716
+5.0635 47.797
+4.8363 53.08
+4.6794 58.51
+4.624 64.046
+4.7067 69.674
+4.9668 75.428
+5.4407 81.394
+6.1553 87.722
+7.1174 94.616
+8.3031 102.32
+9.6452 111.07
+11.023 121.04
+12.257 132.32
+13.101 144.79
+13.258 158.07
+12.39 171.52
+10.144 184.24
+6.194 195.08
+0.27722 202.83
+-7.7604 206.38
+-17.928 204.95
+-30.069 198.44
+-43.862 187.63
+-58.855 174.46
+-74.53 162.1
+-90.4 154.92
+-106.13 158.16
+-121.65 177.37
+-137.28 217.56
+-153.72 282.19
+-172.12 371.91
+-193.88 483.62
+-220.45 609.73
+-253.05 738.27
+-292.32 853.98
+-338 940.51
+-388.77 983.8
+-442.24 975.93
+-495.27 918.63
+-544.49 825.4
+-587.02 720.91
+-621.15 637.13
+-646.76 606.27
+-665.26 651.91
+-678.86 780.68
+-689.41 977.22
+-696.91 1204.8
+-698.52 1412.1
+-688.51 1545
+-659.56 1558.8
+-605.46 1427.9
+-524.43 1147.2
+-421.89 726.75
+-311.29 180.98
+-212.18 -480.77
+-145.22 -1257.3
+-125.69 -2148.7
+-157.44 -3143
+-229.97 -4202.9
+-320.03 -5261.5
+-397.85 -6235.1
+-435.46 -7048
+-413.69 -7662.1
+-324.12 -8093.5
+-164.34 -8405.4
+72.011 -8672.1
+405.91 -8928.1
+878.28 -9126.4
+1545.1 -9130.3
+2461.6 -8754
+3658.1 -7843.2
+5118 -6363.2
+6764.4 -4450.3
+8463.6 -2393.6
+10046 -545.71
+11340 801.18
+12206 1512.7
+12566 1630.6
+12412 1303.1
+11811 672.93
+10881 -197.91
+9780.6 -1306.6
+8687.8 -2595.3
+7781.5 -3826.7
+7220.9 -4560.5
+7116.7 -4300.8
+7498.3 -2771.2
+8290 -171.01
+9311.2 2763.5
+10315 4980.4
+11056 5545.7
+11374 4074.8
+11237 930.57
+10740 -2930
+10045 -6379.8
+9291 -8592
+8536.2 -9319.1
+7751.4 -8874.1
+6874.8 -7881.9
+5884.5 -6969.1
+4840.8 -6542
+3870.9 -6693
+3107.4 -7191.6
+2626.4 -7521.8
+2426 -6995
+2456.1 -5001.8
+2671.1 -1379.8
+3057.6 3283.3
+3611.4 7682.4
+4274 10306
+4873.8 10252
+5123.3 7859.2
+4694.9 4687.4
+3355 2700.4
+1100.5 3107.6
+-1767.8 5605.2
+-4682.1 8578.5
+-6958.3 10184
+-8015.9 9601.7
+-7585.9 7583.9
+-5822.7 5923.7
+-3264.4 6206.9
+-648.52 8727.4
+1347.7 12289
+2338.3 14972
+2333.2 15282
+1677.1 12924
+854.62 8800.7
+257.43 4415
+20.12 1178.9
+0 0
+0 0
+-0.006351 0.17741
+-0.098481 1.6588
+-0.44796 4.8959
+-1.3299 10.194
+-3.1013 17.536
+-6.1134 26.312
+-10.589 35.292
+-16.514 42.887
+-23.586 47.595
+-31.25 48.451
+-38.801 45.303
+-45.54 38.807
+-50.916 30.181
+-54.636 20.835
+-56.697 12.041
+-57.356 4.7485
+-57.05 -0.43895
+-56.288 -3.1732
+-55.548 -3.27
+-55.216 -0.67786
+-55.549 4.4778
+-56.694 11.821
+-58.725 20.694
+-61.693 30.21
+-65.652 39.401
+-70.665 47.386
+-76.769 53.508
+-83.926 57.379
+-91.964 58.824
+-100.55 57.775
+-109.18 54.176
+-117.26 47.955
+-124.14 39.084
+-129.29 27.689
+-132.28 14.156
+-132.93 -0.82941
+-131.27 -16.336
+-127.53 -31.324
+-122.05 -44.823
+-115.25 -56.088
+-107.5 -64.689
+-99.122 -70.526
+-90.355 -73.769
+-81.347 -74.766
+-72.196 -73.945
+-62.983 -71.742
+-53.802 -68.552
+-44.782 -64.7
+-36.09 -60.424
+-27.912 -55.879
+-20.423 -51.134
+-13.762 -46.204
+-8.0032 -41.088
+-3.1463 -35.816
+0.8754 -30.489
+4.1758 -25.294
+6.8885 -20.481
+9.1381 -16.309
+11.019 -12.977
+12.586 -10.561
+13.853 -8.9869
+14.809 -8.0381
+15.431 -7.4138
+15.705 -6.8047
+15.637 -5.9721
+15.261 -4.8024
+14.641 -3.3233
+13.864 -1.6797
+13.027 -0.07919
+12.229 1.2739
+11.555 2.2374
+11.069 2.7663
+10.809 2.9175
+10.787 2.8262
+10.993 2.6633
+11.397 2.5875
+11.958 2.7041
+12.631 3.0415
+13.372 3.5485
+14.139 4.1112
+14.897 4.5834
+15.616 4.8234
+16.272 4.7258
+16.844 4.2446
+17.316 3.4013
+17.676 2.2795
+17.914 1.0069
+18.023 -0.26851
+18 -1.4044
+17.849 -2.2859
+17.573 -2.8398
+17.185 -3.0402
+16.699 -2.9057
+16.133 -2.4894
+15.508 -1.8656
+14.846 -1.116
+14.17 -0.31739
+13.501 0.46705
+12.859 1.1922
+12.26 1.8317
+11.717 2.3752
+11.238 2.8247
+10.83 3.1894
+10.492 3.4815
+10.223 3.713
+10.018 3.8937
+9.8691 4.0308
+9.7692 4.1286
+9.709 4.1898
+9.6795 4.2161
+9.6723 4.2089
+9.6796 4.1701
+9.6944 4.1021
+9.7112 4.0076
+9.7252 3.8894
+9.7331 3.7503
+9.7324 3.5925
+9.7216 3.418
+9.7001 3.2285
+9.6679 3.0254
+9.6257 2.8102
+9.5745 2.5844
+9.5158 2.3501
+9.4513 2.1093
+9.3829 1.8648
+9.3125 1.6191
+9.2423 1.3752
+9.1743 1.136
+9.1106 0.90446
+9.053 0.68352
+9.0031 0.47604
+8.9622 0.28477
+8.9315 0.11233
+8.9113 -0.038924
+8.9017 -0.16698
+8.9021 -0.2703
+8.9114 -0.3479
+8.928 -0.39946
+8.9501 -0.42532
+8.9754 -0.42649
+9.0017 -0.40453
+9.0269 -0.36141
+9.0491 -0.2993
+9.0669 -0.22031
+9.0796 -0.12619
+9.0867 -0.017982
+9.0884 0.10427
+9.0854 0.24188
+9.0785 0.39778
+9.0686 0.57673
+9.0564 0.78537
+9.0423 1.0323
+9.0265 1.3277
+9.0087 1.6834
+8.988 2.1125
+8.9636 2.6287
+8.9344 3.2467
+8.8997 3.9815
+8.8591 4.8492
+8.8129 5.8666
+8.7624 7.0521
+8.71 8.426
+8.6592 10.011
+8.6146 11.832
+8.5821 13.917
+8.5687 16.293
+8.5824 18.987
+8.6318 22.024
+8.7264 25.42
+8.8767 29.183
+9.0942 33.305
+9.3919 37.764
+9.7851 42.521
+10.292 47.523
+10.937 52.71
+11.746 58.021
+12.752 63.41
+13.992 68.862
+15.504 74.409
+17.322 80.141
+19.47 86.219
+21.949 92.865
+24.73 100.35
+27.737 108.95
+30.835 118.9
+33.822 130.32
+36.424 143.15
+38.296 157.08
+39.039 171.5
+38.218 185.51
+35.405 197.97
+30.217 207.6
+22.368 213.2
+11.715 213.89
+-1.7133 209.41
+-17.696 200.39
+-35.844 188.66
+-55.648 177.32
+-76.568 170.74
+-98.146 174.27
+-120.14 193.66
+-142.63 234.23
+-166.12 299.75
+-191.52 391.23
+-220.1 505.78
+-253.3 635.9
+-292.46 769.44
+-338.49 890.69
+-391.55 982.65
+-450.84 1030.4
+-514.48 1025.2
+-579.76 968.17
+-643.48 872.62
+-702.68 763.58
+-755.19 673.84
+-800.16 636.78
+-838.02 676.99
+-869.95 801.52
+-896.7 994.39
+-917.17 1217.1
+-927.34 1415.9
+-920.04 1534.3
+-886.23 1526.6
+-817.83 1368.6
+-711.5 1059.8
+-572.24 617.31
+-415.23 63.301
+-264.66 -586.85
+-149.06 -1330.3
+-94.074 -2171.7
+-114.68 -3109.1
+-209.8 -4118.1
+-361.46 -5144.3
+-539.19 -6111.3
+-708.37 -6943.7
+-838.88 -7597.4
+-910.35 -8080.5
+-911.05 -8450.5
+-830.53 -8783.9
+-649.28 -9125.6
+-331.03 -9443.5
+176.71 -9612.2
+930.89 -9444.8
+1971.6 -8767
+3297.9 -7505.3
+4849.1 -5745.8
+6501.4 -3729.8
+8083.1 -1779
+9406.6 -183.04
+10309 894.53
+10687 1441.4
+10520 1539.7
+9871.9 1269.6
+8872.3 645.48
+7694.4 -358.18
+6528.9 -1693.7
+5562 -3117.8
+4956.9 -4168.1
+4829.4 -4304.6
+5218.2 -3182.1
+6058.3 -912.16
+7174.5 1853.7
+8313.5 4113.9
+9213.7 4921.7
+9691.6 3813.6
+9703.3 1035
+9347.1 -2561.3
+8799.9 -5891.3
+8219.9 -8094.2
+7669.4 -8838.9
+7101.5 -8361
+6414.9 -7261.5
+5538.2 -6208.3
+4487.9 -5682.1
+3365.9 -5832
+2305.7 -6434.1
+1413.2 -6934.1
+741.65 -6597.4
+314.06 -4795.1
+158.9 -1376.7
+317.86 3057.4
+804.35 7229.2
+1535.1 9710.7
+2286.1 9710.3
+2719.2 7650.4
+2485 5078.2
+1366.9 3830.1
+-599.36 4897.5
+-3086.2 7740
+-5540.8 10575
+-7341 11534
+-7991.3 9931.8
+-7291.6 6793.8
+-5418.2 4230.1
+-2879.7 4082.3
+-353.79 6742.6
+1540.7 10918
+2451.7 14434
+2396.1 15489
+1710.3 13553
+869.64 9460.1
+261.86 4831.5
+20.469 1304.6
+0 0
+0 0
+-0.007685 0.18909
+-0.11688 1.7768
+-0.51818 5.2864
+-1.5009 11.106
+-3.4285 19.268
+-6.6496 29.129
+-11.375 39.328
+-17.571 48.063
+-24.916 53.6
+-32.838 54.789
+-40.624 51.391
+-47.573 44.101
+-53.142 34.287
+-57.041 23.578
+-59.27 13.476
+-60.081 5.1226
+-59.897 -0.75886
+-59.213 -3.7861
+-58.492 -3.813
+-58.111 -0.87176
+-58.327 4.817
+-59.299 12.8
+-61.123 22.376
+-63.876 32.653
+-67.643 42.669
+-72.514 51.543
+-78.545 58.585
+-85.698 63.321
+-93.788 65.452
+-102.45 64.765
+-111.15 61.079
+-119.24 54.252
+-126.09 44.265
+-131.12 31.335
+-133.96 16
+-134.46 -0.86814
+-132.71 -18.163
+-128.94 -34.709
+-123.54 -49.463
+-116.88 -61.668
+-109.32 -70.934
+-101.13 -77.228
+-92.487 -80.791
+-83.497 -82.022
+-74.239 -81.375
+-64.795 -79.278
+-55.285 -76.094
+-45.879 -72.11
+-36.79 -67.537
+-28.245 -62.518
+-20.456 -57.145
+-13.576 -51.48
+-7.6831 -45.583
+-2.7679 -39.552
+1.2523 -33.541
+4.5087 -27.772
+7.1494 -22.5
+9.3094 -17.97
+11.09 -14.352
+12.549 -11.69
+13.71 -9.8771
+14.569 -8.6828
+15.117 -7.8026
+15.353 -6.9369
+15.294 -5.8645
+14.984 -4.492
+14.484 -2.8645
+13.87 -1.138
+13.224 0.47668
+12.622 1.7806
+12.125 2.6432
+11.78 3.0352
+11.611 3.0306
+11.628 2.7807
+11.82 2.4698
+12.167 2.266
+12.644 2.2804
+13.218 2.5438
+13.858 3.0048
+14.533 3.5479
+15.213 4.0249
+15.871 4.2915
+16.481 4.24
+17.021 3.8222
+17.47 3.0574
+17.811 2.0265
+18.028 0.85439
+18.114 -0.31453
+18.063 -1.3418
+17.877 -2.1167
+17.562 -2.5701
+17.13 -2.6801
+16.597 -2.4686
+15.981 -1.9912
+15.305 -1.324
+14.592 -0.54935
+13.864 0.25611
+13.144 1.0304
+12.451 1.7302
+11.801 2.3317
+11.208 2.8274
+10.681 3.2224
+10.227 3.5288
+9.8474 3.7618
+9.5411 3.936
+9.3043 4.0632
+9.1308 4.1523
+9.013 4.2087
+8.9419 4.2357
+8.9085 4.235
+8.9037 4.2079
+8.919 4.1558
+8.9469 4.0802
+8.9808 3.9829
+9.0153 3.8659
+9.0462 3.7308
+9.0705 3.5793
+9.086 3.4124
+9.0917 3.2312
+9.0871 3.0364
+9.0724 2.8292
+9.0481 2.6108
+9.0155 2.3828
+8.9757 2.1473
+8.9303 1.9066
+8.8809 1.6633
+8.8294 1.4203
+8.7776 1.1805
+8.7274 0.94681
+8.6805 0.72229
+8.6386 0.50993
+8.6032 0.31268
+8.5755 0.13343
+8.5562 -0.025116
+8.5457 -0.16054
+8.5436 -0.27087
+8.5494 -0.35472
+8.5617 -0.41138
+8.5789 -0.44091
+8.5991 -0.44413
+8.6204 -0.42257
+8.6407 -0.37832
+8.6586 -0.3138
+8.6726 -0.23148
+8.6823 -0.13354
+8.6873 -0.021481
+8.6881 0.10425
+8.6856 0.24464
+8.6808 0.40243
+8.6751 0.5823
+8.6698 0.79096
+8.6659 1.0371
+8.6645 1.3314
+8.6661 1.6856
+8.6713 2.113
+8.6805 2.6275
+8.6944 3.2436
+8.7139 3.976
+8.7407 4.8401
+8.7774 5.8521
+8.8276 7.0295
+8.8965 8.3916
+8.9905 9.9598
+9.1177 11.758
+9.2879 13.812
+9.5122 16.15
+9.8034 18.796
+10.175 21.774
+10.643 25.101
+11.224 28.781
+11.934 32.808
+12.792 37.158
+13.82 41.79
+15.039 46.65
+16.475 51.673
+18.157 56.796
+20.117 61.971
+22.391 67.181
+25.013 72.456
+28.011 77.894
+31.405 83.666
+35.19 90.013
+39.329 97.235
+43.737 105.65
+48.268 115.54
+52.703 127.09
+56.742 140.3
+60.003 154.92
+62.034 170.4
+62.329 185.87
+60.367 200.18
+55.655 212.03
+47.776 220.13
+36.448 223.49
+21.563 221.69
+3.2134 215.22
+-18.307 205.74
+-42.543 196.25
+-68.957 191.09
+-97.031 195.64
+-126.4 215.84
+-156.99 257.25
+-189.09 323.97
+-223.43 417.36
+-261.14 534.81
+-303.57 668.96
+-352.12 807.6
+-407.88 934.7
+-471.3 1032.7
+-541.96 1085.8
+-618.37 1084.5
+-698.09 1029.3
+-778.04 932.93
+-855.06 820.66
+-926.5 725.89
+-990.8 682.91
+-1047.6 717.27
+-1097.1 836.43
+-1139.5 1023.9
+-1173 1239.5
+-1193.2 1426.9
+-1192 1527
+-1159.2 1492.8
+-1085 1301.3
+-964.02 956.47
+-799.66 483.06
+-606.91 -87.331
+-412.2 -731.15
+-249.4 -1441.4
+-152.42 -2225
+-146.31 -3089.2
+-239.7 -4023.7
+-421.49 -4989.6
+-663.13 -5922.1
+-926.17 -6751
+-1172 -7429.5
+-1369.6 -7958
+-1498.7 -8386.3
+-1544.9 -8788.6
+-1490.8 -9215.5
+-1307 -9646.9
+-948.06 -9969.8
+-359.15 -10001
+506.09 -9553.8
+1661.5 -8521.2
+3066.1 -6941.2
+4612.9 -5002.6
+6138 -2987.2
+7448.9 -1172.2
+8367.4 256.77
+8772.7 1233.1
+8630.8 1767
+8000.8 1867.1
+7017.7 1493.7
+5861.1 592.23
+4723.1 -795.1
+3784.1 -2413.5
+3196.4 -3775.6
+3067.6 -4301
+3436.9 -3582.1
+4249.3 -1648.4
+5344.8 933.36
+6481.7 3216.7
+7403.1 4249.2
+7924.1 3491.4
+8000.4 1067.3
+7736 -2281.7
+7319.2 -5520
+6917.4 -7749.3
+6588.9 -8542
+6261.7 -8037.9
+5790.4 -6799.7
+5050.5 -5532.6
+4013 -4800.5
+2757.3 -4829.5
+1426.8 -5427.8
+169.58 -6028.3
+-893.59 -5867.8
+-1665 -4302.6
+-2054.6 -1182.1
+-1991.6 2907.4
+-1474 6747.6
+-628.15 9018.2
+272.46 9043.5
+863.55 7306.5
+811.63 5310.6
+-50.344 4740.1
+-1636.4 6371.7
+-3610.6 9463.6
+-5479.4 12118
+-6737.9 12477
+-7021.1 9998.6
+-6214.9 5935.9
+-4496.9 2652.4
+-2290.8 2186.5
+-142.79 5004.5
+1450.1 9732.6
+2202.8 13985
+2130.6 15698
+1517.4 14135
+772.02 10067
+232.75 5214.9
+18.211 1420.4
+0 0
+0 0
+-0.009843 0.20389
+-0.1462 1.9219
+-0.62727 5.7466
+-1.7574 12.14
+-3.8987 21.171
+-7.382 32.154
+-12.389 43.584
+-18.853 53.45
+-26.426 59.789
+-34.522 61.274
+-42.433 57.594
+-49.477 49.49
+-55.132 38.484
+-59.13 26.419
+-61.479 15.019
+-62.423 5.6068
+-62.365 -0.98354
+-61.771 -4.3389
+-61.079 -4.3488
+-60.647 -1.1213
+-60.73 5.0376
+-61.495 13.607
+-63.055 23.852
+-65.514 34.875
+-68.984 45.724
+-73.576 55.513
+-79.361 63.51
+-86.306 69.149
+-94.22 71.992
+-102.72 71.677
+-111.26 67.896
+-119.17 60.443
+-125.82 49.317
+-130.66 34.84
+-133.33 17.719
+-133.73 -0.98537
+-131.97 -19.992
+-128.33 -38.005
+-123.16 -53.926
+-116.83 -67.008
+-109.64 -76.917
+-101.8 -83.693
+-93.424 -87.643
+-84.592 -89.208
+-75.356 -88.842
+-65.809 -86.947
+-56.099 -83.839
+-46.439 -79.759
+-37.087 -74.885
+-28.31 -69.362
+-20.342 -63.312
+-13.348 -56.855
+-7.4002 -50.127
+-2.4779 -43.295
+1.5164 -36.572
+4.7265 -30.208
+7.3076 -24.465
+9.397 -19.568
+11.095 -15.656
+12.463 -12.739
+13.526 -10.687
+14.294 -9.2552
+14.772 -8.1399
+14.976 -7.0515
+14.939 -5.7837
+14.711 -4.2569
+14.352 -2.5259
+13.926 -0.75001
+13.493 0.8631
+13.102 2.1223
+12.791 2.9076
+12.586 3.2012
+12.5 3.0879
+12.535 2.7277
+12.69 2.3118
+12.955 2.0132
+13.319 1.9463
+13.766 2.1443
+14.278 2.5574
+14.837 3.0713
+15.417 3.5388
+15.996 3.8163
+16.547 3.7962
+17.044 3.4298
+17.462 2.7349
+17.781 1.7899
+17.981 0.71613
+18.051 -0.34623
+17.984 -1.2635
+17.781 -1.9297
+17.447 -2.2807
+16.994 -2.2985
+16.438 -2.0084
+15.798 -1.4687
+15.097 -0.7568
+14.357 0.044237
+13.599 0.85827
+12.845 1.6244
+12.115 2.301
+11.425 2.8665
+10.789 3.3161
+10.217 3.6574
+9.7156 3.9054
+9.2895 4.0781
+8.9389 4.1925
+8.6613 4.2628
+8.4518 4.2994
+8.3037 4.3095
+8.2086 4.2969
+8.1578 4.264
+8.142 4.212
+8.1524 4.1418
+8.1809 4.0544
+8.2203 3.9507
+8.2647 3.8316
+8.3091 3.6981
+8.35 3.5507
+8.3847 3.3897
+8.4115 3.2154
+8.4295 3.0282
+8.4385 2.8285
+8.4384 2.6173
+8.4299 2.396
+8.4138 2.1663
+8.3911 1.9304
+8.363 1.6909
+8.3309 1.4505
+8.2963 1.2119
+8.2607 0.97816
+8.2258 0.75223
+8.1932 0.53717
+8.1643 0.33606
+8.1406 0.152
+8.1229 -0.012025
+8.1119 -0.15324
+8.1076 -0.2693
+8.1096 -0.35838
+8.1172 -0.41943
+8.129 -0.45218
+8.1435 -0.45728
+8.159 -0.43618
+8.1739 -0.39107
+8.1868 -0.32458
+8.1967 -0.23953
+8.203 -0.13851
+8.2059 -0.023463
+8.2057 0.10474
+8.2036 0.24674
+8.201 0.405
+8.1995 0.58407
+8.2008 0.79064
+8.2067 1.0335
+8.2188 1.3231
+8.2388 1.6717
+8.2684 2.0924
+8.3094 2.5989
+8.3638 3.2055
+8.4344 3.9265
+8.5248 4.7766
+8.6394 5.7711
+8.7841 6.9264
+8.9663 8.2606
+9.1951 9.7939
+9.4814 11.549
+9.8382 13.549
+10.28 15.822
+10.824 18.39
+11.488 21.276
+12.292 24.495
+13.257 28.052
+14.406 31.938
+15.762 36.128
+17.349 40.583
+19.192 45.244
+21.319 50.047
+23.759 54.927
+26.542 59.834
+29.699 64.749
+33.259 69.706
+37.246 74.807
+41.671 80.235
+46.523 86.252
+51.757 93.185
+57.282 101.39
+62.943 111.21
+68.51 122.89
+73.665 136.5
+78 151.86
+81.021 168.48
+82.166 185.54
+80.836 201.91
+76.434 216.26
+68.422 227.26
+56.377 233.79
+40.041 235.3
+19.358 232.12
+-5.5113 225.73
+-34.218 218.99
+-66.283 216.17
+-101.2 222.66
+-138.54 244.5
+-178.13 287.48
+-220.11 356
+-265.03 451.74
+-313.84 572.41
+-367.78 710.85
+-428.19 854.85
+-496.2 988.14
+-572.43 1092.6
+-656.65 1151.8
+-747.58 1155.4
+-842.89 1102.9
+-939.45 1006.7
+-1033.8 891.93
+-1122.7 792.31
+-1203.9 743.02
+-1276.2 770.5
+-1339.3 882.78
+-1393 1063.1
+-1435.8 1269.7
+-1463.4 1444.1
+-1468.1 1524.1
+-1439.3 1461.2
+-1366.2 1232.6
+-1241.4 846.54
+-1066.1 335.3
+-853.03 -259.49
+-628.18 -904.38
+-427.38 -1586
+-289.54 -2311
+-247.28 -3094.2
+-317.97 -3939.3
+-498.13 -4824.4
+-763.63 -5700
+-1075.7 -6505
+-1390.9 -7193.2
+-1670.8 -7758.8
+-1888.2 -8242.7
+-2025.7 -8712.6
+-2068.6 -9220.1
+-1995.4 -9753.7
+-1769.6 -10213
+-1342.1 -10422
+-663.19 -10190
+294.38 -9384.2
+1510.7 -7998.7
+2901.6 -6169
+4319.8 -4130.3
+5578.6 -2137.4
+6494.7 -390.46
+6935.8 992.98
+6856.9 1948.3
+6310.6 2407.9
+5429.9 2274
+4391.4 1464.8
+3377.5 22.981
+2549.9 -1778.2
+2037.2 -3424.1
+1927.2 -4298.3
+2252.6 -3941.9
+2968.8 -2314.3
+3938.9 94.816
+4949.1 2394.1
+5765.8 3630.6
+6219 3194.5
+6272.8 1092.1
+6036.8 -2047.8
+5705 -5238.1
+5446.9 -7539.1
+5312.8 -8416.2
+5206.5 -7898.5
+4941.5 -6497.6
+4344.4 -4951.7
+3343.3 -3917.1
+1998 -3718.3
+466.04 -4224.1
+-1055.5 -4880.7
+-2375.7 -4910.6
+-3327.7 -3651.3
+-3778.2 -929.15
+-3655.1 2717.7
+-2996.8 6161.9
+-1989.9 8204
+-955.05 8270.3
+-260.04 6868.9
+-189.88 5420.3
+-832.75 5438.2
+-2039.4 7504.1
+-3474.5 10730
+-4731.1 13170
+-5457.4 13021
+-5448.5 9873.7
+-4687.5 5152.7
+-3337.8 1384.2
+-1699.7 725.52
+-136.53 3684.6
+1022.6 8832.5
+1582.6 13639
+1547.6 15852
+1112.3 14580
+570.22 10537
+172.87 5514
+13.57 1511.2
+0 0
+0 0
+-0.01277 0.22308
+-0.18568 2.1046
+-0.77231 6.3017
+-2.0922 13.333
+-4.4978 23.289
+-8.2878 35.42
+-13.598 48.076
+-20.318 59.033
+-28.069 66.114
+-36.255 67.833
+-44.187 63.823
+-51.217 54.885
+-56.863 42.696
+-60.89 29.303
+-63.315 16.64
+-64.374 6.1906
+-64.439 -1.1114
+-63.939 -4.8267
+-63.276 -4.8763
+-62.785 -1.4344
+-62.712 5.12
+-63.23 14.21
+-64.47 25.071
+-66.553 36.805
+-69.612 48.469
+-73.773 59.169
+-79.119 68.125
+-85.626 74.674
+-93.103 78.238
+-101.17 78.302
+-109.29 74.433
+-116.81 66.363
+-123.1 54.122
+-127.65 38.144
+-130.13 19.31
+-130.48 -1.1298
+-128.82 -21.73
+-125.44 -41.088
+-120.68 -58.072
+-114.86 -71.963
+-108.22 -82.495
+-100.9 -89.786
+-92.966 -94.201
+-84.445 -96.202
+-75.384 -96.227
+-65.888 -94.629
+-56.139 -91.663
+-46.394 -87.516
+-36.952 -82.34
+-28.109 -76.286
+-20.116 -69.522
+-13.137 -62.238
+-7.2318 -54.65
+-2.3655 -47.004
+1.5736 -39.564
+4.7362 -32.608
+7.2769 -26.394
+9.3263 -21.127
+10.977 -16.912
+12.285 -13.73
+13.277 -11.433
+13.974 -9.7677
+14.397 -8.4353
+14.582 -7.1572
+14.578 -5.738
+14.441 -4.1055
+14.23 -2.3153
+13.994 -0.52134
+13.771 1.0778
+13.585 2.3012
+13.448 3.0379
+13.365 3.2765
+13.339 3.105
+13.371 2.6848
+13.466 2.2074
+13.629 1.8461
+13.863 1.7168
+14.171 1.8553
+14.549 2.2157
+14.986 2.6882
+15.466 3.1299
+15.965 3.401
+16.458 3.3964
+16.914 3.0682
+17.305 2.4331
+17.605 1.567
+17.795 0.58731
+17.857 -0.37086
+17.785 -1.1792
+17.578 -1.7374
+17.241 -1.9859
+16.785 -1.9115
+16.227 -1.5426
+15.584 -0.93958
+14.878 -0.18148
+14.13 0.64843
+13.36 1.4744
+12.589 2.2364
+11.835 2.8944
+11.115 3.4286
+10.443 3.8362
+9.8289 4.1273
+9.2825 4.3193
+8.8087 4.4326
+8.41 4.4867
+8.0856 4.4981
+7.8325 4.4793
+7.6452 4.4389
+7.5163 4.3822
+7.4376 4.3121
+7.4002 4.2301
+7.3951 4.137
+7.4139 4.0332
+7.449 3.9189
+7.4941 3.7942
+7.5437 3.6589
+7.5936 3.5126
+7.6408 3.3551
+7.6831 3.1857
+7.7191 3.0043
+7.7478 2.8109
+7.7689 2.6061
+7.7824 2.391
+7.7884 2.1672
+7.7875 1.9368
+7.7803 1.702
+7.7676 1.4654
+7.7504 1.2298
+7.7301 0.99789
+7.7079 0.77265
+7.6853 0.55707
+7.6637 0.3543
+7.6445 0.16755
+7.6288 1.7e-05
+7.6174 -0.14525
+7.6108 -0.26553
+7.6089 -0.35867
+7.6114 -0.42324
+7.6172 -0.45869
+7.6253 -0.46544
+7.6345 -0.44488
+7.6434 -0.39922
+7.651 -0.3313
+7.6564 -0.24423
+7.6593 -0.14098
+7.6599 -0.023916
+7.6589 0.10568
+7.6574 0.24807
+7.6571 0.40543
+7.6598 0.58208
+7.6675 0.78457
+7.6827 1.0216
+7.7077 1.3037
+7.745 1.6428
+7.7973 2.052
+7.8677 2.5448
+7.9596 3.135
+8.0774 3.8364
+8.2262 4.6628
+8.4123 5.6287
+8.6433 6.7493
+8.9287 8.0414
+9.2794 9.5236
+9.7088 11.217
+10.232 13.144
+10.867 15.328
+11.633 17.793
+12.553 20.558
+13.649 23.638
+14.946 27.036
+16.471 30.743
+18.251 34.735
+20.311 38.968
+22.68 43.387
+25.385 47.926
+28.452 52.519
+31.909 57.116
+35.782 61.701
+40.095 66.308
+44.862 71.048
+50.088 76.113
+55.755 81.784
+61.813 88.419
+68.166 96.417
+74.656 106.17
+81.047 117.98
+87.014 132
+92.135 148.13
+95.891 165.94
+97.677 184.68
+96.829 203.26
+92.664 220.35
+84.53 234.58
+71.865 244.73
+54.25 250.14
+31.462 250.94
+3.4888 248.47
+-29.473 245.43
+-67.067 245.97
+-108.86 255.45
+-154.45 279.97
+-203.6 325.5
+-256.34 396.69
+-313.06 495.51
+-374.53 619.99
+-441.79 763.16
+-516.03 912.88
+-598.3 1052.7
+-689.16 1164
+-788.39 1229.8
+-894.74 1238.6
+-1005.8 1189.2
+-1118.2 1093.4
+-1227.9 975.9
+-1331.2 870.69
+-1424.9 813.68
+-1507 832.33
+-1577 935.49
+-1634.6 1106.5
+-1679.1 1302.7
+-1707.5 1463.3
+-1713.5 1523.6
+-1687.8 1432.5
+-1619.4 1167.2
+-1499.8 738.68
+-1327.2 186.06
+-1111.1 -439.24
+-873.89 -1093.2
+-649.72 -1754.3
+-478.33 -2426.8
+-396.25 -3130.6
+-427.3 -3882
+-575.52 -4675.9
+-823.29 -5480
+-1135.5 -6244.9
+-1468.7 -6928.6
+-1781.7 -7520.8
+-2043.4 -8053.1
+-2235.3 -8584.1
+-2345.8 -9162.1
+-2361 -9780.8
+-2254.3 -10351
+-1983.3 -10710
+-1497.5 -10667
+-757.8 -10074
+237.52 -8888.1
+1430.8 -7192.9
+2698.7 -5172.8
+3870.3 -3052.4
+4766.6 -1037.4
+5250.8 709.26
+5269 2049.9
+4864.9 2839
+4162.1 2920.9
+3324.7 2189.4
+2514.3 694.62
+1863.5 -1264.8
+1467.8 -3145
+1387.8 -4300.3
+1645.7 -4234.9
+2208.3 -2854.9
+2969.5 -585.81
+3755.5 1731.7
+4369.7 3149
+4667.8 2995.4
+4625.4 1168.3
+4354.7 -1810.5
+4048.4 -5000.8
+3873.4 -7419.9
+3874 -8420.3
+3938.1 -7910.7
+3850.6 -6340.2
+3399 -4474.2
+2474.5 -3067
+1117.7 -2560.8
+-501.67 -2912.1
+-2142 -3605.4
+-3549.1 -3860.7
+-4499.4 -2986.5
+-4835.9 -756.38
+-4509.8 2377.6
+-3621.1 5407.1
+-2427.8 7256
+-1293.4 7425.3
+-571.95 6401.3
+-475.99 5478.5
+-993.93 5986
+-1901.8 8340.3
+-2864.6 11573
+-3571 13765
+-3834.9 13213
+-3623.1 9633.9
+-3019.8 4550.4
+-2168.6 551.26
+-1229.1 -176.14
+-357.29 2880.5
+308.59 8266.7
+675.25 13388
+729.47 15899
+553.27 14813
+293.59 10802
+90.997 5689.1
+7.2281 1565.3
+0 0
+0 0
+-0.016292 0.24769
+-0.23296 2.3335
+-0.94442 6.9715
+-2.4843 14.716
+-5.1872 25.65
+-9.307 38.949
+-14.921 52.803
+-21.867 64.785
+-29.731 72.522
+-37.921 74.393
+-45.775 69.998
+-52.696 60.211
+-58.256 46.861
+-62.256 32.19
+-64.727 18.315
+-65.888 6.8654
+-66.073 -1.1443
+-65.662 -5.2515
+-65.018 -5.4032
+-64.448 -1.8273
+-64.187 5.038
+-64.414 14.569
+-65.272 25.98
+-66.896 38.372
+-69.43 50.806
+-73.009 62.38
+-77.721 72.264
+-83.55 79.699
+-90.323 83.972
+-97.683 84.417
+-105.11 80.48
+-112.01 71.841
+-117.77 58.559
+-121.93 41.186
+-124.2 20.771
+-124.53 -1.2508
+-123.08 -23.283
+-120.11 -43.836
+-115.93 -61.763
+-110.79 -76.39
+-104.87 -87.528
+-98.247 -95.372
+-90.913 -100.33
+-82.868 -102.88
+-74.152 -103.4
+-64.885 -102.18
+-55.288 -99.418
+-45.657 -95.227
+-36.327 -89.745
+-27.616 -83.14
+-19.777 -75.64
+-12.964 -67.516
+-7.2189 -59.072
+-2.4866 -50.627
+1.3571 -42.495
+4.4649 -34.972
+6.983 -28.306
+9.0266 -22.675
+10.672 -18.153
+11.963 -14.697
+12.926 -12.144
+13.587 -10.244
+13.984 -8.7075
+14.17 -7.267
+14.21 -5.7354
+14.169 -4.0405
+14.101 -2.2296
+14.042 -0.44325
+14.009 1.135
+14.001 2.3362
+14.007 3.0563
+14.015 3.2842
+14.018 3.1042
+14.022 2.6713
+14.039 2.1711
+14.088 1.7737
+14.191 1.5951
+14.365 1.6749
+14.619 1.9739
+14.949 2.39
+15.344 2.7885
+15.78 3.0359
+16.229 3.0316
+16.657 2.7293
+17.031 2.1452
+17.322 1.352
+17.507 0.46234
+17.569 -0.39429
+17.499 -1.0957
+17.296 -1.5474
+16.965 -1.6951
+16.518 -1.5296
+15.969 -1.0824
+15.336 -0.41609
+14.639 0.38959
+13.896 1.2511
+13.128 2.0929
+12.352 2.856
+11.586 3.5013
+10.845 4.0104
+10.144 4.3822
+9.4943 4.6284
+8.9059 4.7685
+8.3861 4.8251
+7.9389 4.82
+7.5659 4.772
+7.2657 4.6958
+7.0343 4.602
+6.8658 4.4972
+6.7526 4.3855
+6.6863 4.2689
+6.6581 4.1482
+6.6597 4.0234
+6.6831 3.8941
+6.7217 3.7596
+6.7697 3.6187
+6.8226 3.4703
+6.8767 3.3131
+6.9295 3.146
+6.9791 2.9681
+7.0239 2.7792
+7.0632 2.5795
+7.0962 2.3698
+7.1225 2.1515
+7.1419 1.9266
+7.1546 1.6971
+7.1606 1.4655
+7.1607 1.2342
+7.1555 1.0059
+7.1461 0.78333
+7.1336 0.56939
+7.1195 0.36716
+7.105 0.17989
+7.0914 0.010915
+7.0796 -0.13652
+7.0705 -0.25943
+7.0644 -0.35533
+7.0613 -0.42247
+7.0607 -0.46002
+7.062 -0.46818
+7.0643 -0.44824
+7.0668 -0.40243
+7.0687 -0.33372
+7.0694 -0.24545
+7.0689 -0.14093
+7.0674 -0.02292
+7.0657 0.10692
+7.065 0.24847
+7.0672 0.40358
+7.0741 0.57627
+7.0883 0.77289
+7.1125 1.0019
+7.1495 1.2737
+7.2028 1.5999
+7.2759 1.9935
+7.3731 2.4674
+7.499 3.0349
+7.6594 3.7093
+7.8606 4.5036
+8.1106 5.4311
+8.4184 6.506
+8.7948 7.7436
+9.2526 9.1611
+9.8067 10.777
+10.474 12.614
+11.274 14.692
+12.23 17.033
+13.364 19.655
+14.704 22.57
+16.276 25.782
+18.11 29.281
+20.234 33.041
+22.676 37.021
+25.464 41.165
+28.624 45.407
+32.181 49.684
+36.158 53.946
+40.574 58.179
+45.446 62.421
+50.781 66.789
+56.577 71.487
+62.81 76.815
+69.426 83.155
+76.328 90.947
+83.36 100.63
+90.29 112.58
+96.798 127.01
+102.46 143.91
+106.74 162.95
+109.01 183.42
+108.57 204.31
+104.66 224.3
+96.511 242
+83.441 256.15
+64.862 265.94
+40.362 271.4
+9.7258 273.66
+-27.049 275.27
+-69.786 280.25
+-118.19 293.89
+-171.95 322.32
+-230.82 371.59
+-294.78 446.55
+-364.06 549.45
+-439.22 678.53
+-521.05 827.05
+-610.48 982.92
+-708.31 1129.5
+-814.91 1247.9
+-929.89 1320.2
+-1051.8 1334.2
+-1177.9 1287.7
+-1304.4 1191.6
+-1426.8 1070.2
+-1540.3 957.6
+-1640.8 890.34
+-1725.8 897.06
+-1794.1 987.81
+-1846 1146.6
+-1882 1330.7
+-1901.2 1477.5
+-1900.2 1519.9
+-1872.1 1404.2
+-1807.5 1106.3
+-1697.7 638.73
+-1538.5 45.658
+-1334.8 -612.98
+-1103.2 -1283.1
+-872.43 -1934.1
+-678.37 -2566.1
+-557.13 -3201.2
+-535.71 -3865.6
+-624.57 -4569.5
+-814.11 -5296.9
+-1076.9 -6011.8
+-1375.1 -6678.2
+-1670.4 -7283.6
+-1932.9 -7851
+-2145.1 -8429
+-2299.1 -9060.1
+-2387.5 -9740.3
+-2392 -10392
+-2276.7 -10865
+-1991 -10978
+-1485.2 -10576
+-736.21 -9585.7
+226.66 -8045
+1309.6 -6085.5
+2364.7 -3894.8
+3226.1 -1675.4
+3758.8 372.55
+3902.1 2043.5
+3687.2 3116.9
+3221 3382
+2645.2 2712.9
+2091.9 1173.7
+1656.9 -906.27
+1397.4 -2953.9
+1344.8 -4302.6
+1510.6 -4436.5
+1876 -3228.3
+2371.7 -1055.2
+2871.9 1286.8
+3224.9 2858.4
+3315.3 2941.6
+3128.9 1339
+2773.1 -1525.7
+2431.7 -4757.5
+2267.2 -7333.5
+2324.3 -8495.3
+2491.3 -8027
+2543.4 -6305.6
+2245.1 -4114.5
+1458 -2305
+200.72 -1448.5
+-1355.6 -1612
+-2940.1 -2341.3
+-4252.4 -2863.3
+-5030.2 -2445.9
+-5110.6 -778.94
+-4483.2 1808
+-3319.1 4448.7
+-1948.5 6185.2
+-770.35 6558
+-112.49 5979.8
+-102.86 5575.8
+-620.48 6479.8
+-1359.9 8976
+-1980.1 12085
+-2257.8 13988
+-2164.1 13131
+-1831 9344.4
+-1442.6 4183.5
+-1125.9 198.84
+-905.12 -483.24
+-732.7 2614.2
+-555.97 8039.3
+-364.96 13217
+-191.16 15805
+-71.342 14795
+-14.669 10829
+-0.17848 5719.8
+0.16633 1576.7
+0 0
+0 0
+-0.020128 0.27835
+-0.28421 2.6135
+-1.1295 7.7668
+-2.9007 16.301
+-5.9069 28.266
+-10.347 42.736
+-16.233 57.74
+-23.343 70.659
+-31.24 78.947
+-39.339 80.878
+-47.023 76.044
+-53.756 65.403
+-59.173 50.934
+-63.114 35.053
+-65.617 20.035
+-66.876 7.6276
+-67.177 -1.0852
+-66.846 -5.6221
+-66.199 -5.947
+-65.515 -2.3263
+-65.023 4.7572
+-64.906 14.644
+-65.319 26.528
+-66.405 39.506
+-68.309 52.643
+-71.165 65.023
+-75.062 75.77
+-79.995 84.037
+-85.812 88.982
+-92.197 89.804
+-98.686 85.836
+-104.73 76.705
+-109.79 62.505
+-113.46 43.896
+-115.49 22.091
+-115.85 -1.3069
+-114.68 -24.57
+-112.24 -46.14
+-108.78 -64.875
+-104.48 -80.159
+-99.445 -91.887
+-93.665 -100.32
+-87.093 -105.91
+-79.692 -109.09
+-71.5 -110.21
+-62.66 -109.46
+-53.426 -106.93
+-44.132 -102.72
+-35.139 -96.923
+-26.777 -89.757
+-19.292 -81.516
+-12.816 -72.564
+-7.3645 -63.295
+-2.8601 -54.1
+0.83332 -45.332
+3.8664 -37.293
+6.3701 -30.214
+8.4369 -24.24
+10.119 -19.416
+11.443 -15.677
+12.426 -12.859
+13.098 -10.719
+13.508 -8.9843
+13.725 -7.401
+13.828 -5.7867
+13.886 -4.0624
+13.951 -2.2594
+14.048 -0.49697
+14.172 1.0609
+14.301 2.2585
+14.406 2.9952
+14.462 3.2552
+14.461 3.1113
+14.41 2.7056
+14.335 2.2127
+14.27 1.7965
+14.252 1.5733
+14.312 1.5884
+14.468 1.8124
+14.723 2.1549
+15.064 2.4924
+15.467 2.7004
+15.897 2.6841
+16.317 2.3994
+16.689 1.861
+16.981 1.1378
+17.167 0.33683
+17.231 -0.41925
+17.164 -1.015
+16.965 -1.3618
+16.642 -1.4108
+16.204 -1.1564
+15.668 -0.63282
+15.05 0.096053
+14.368 0.94977
+13.638 1.8449
+12.879 2.7063
+12.107 3.4756
+11.337 4.1146
+10.584 4.6055
+9.8618 4.9481
+9.1832 5.1556
+8.5588 5.249
+7.9974 5.2526
+7.5052 5.1905
+7.0855 5.0839
+6.7389 4.9496
+6.4631 4.8002
+6.2532 4.6444
+6.1029 4.4874
+6.0043 4.332
+5.949 4.1793
+5.9288 4.0291
+5.9358 3.8806
+5.9631 3.7321
+6.0048 3.5818
+6.056 3.4276
+6.1128 3.2675
+6.1721 3.0996
+6.2316 2.9227
+6.2893 2.7361
+6.3438 2.5397
+6.3937 2.3342
+6.4381 2.1208
+6.476 1.9012
+6.507 1.6773
+6.5306 1.4514
+6.5469 1.2257
+6.5561 1.0026
+6.5589 0.78457
+6.5563 0.57431
+6.5493 0.37477
+6.5392 0.18916
+6.5274 0.020807
+6.515 -0.1269
+6.5031 -0.25077
+6.4924 -0.34808
+6.4833 -0.41679
+6.4759 -0.45581
+6.47 -0.46516
+6.4651 -0.44598
+6.4609 -0.40046
+6.4569 -0.33167
+6.4529 -0.24313
+6.449 -0.13842
+6.4455 -0.020613
+6.4434 0.10826
+6.4438 0.24773
+6.4487 0.39927
+6.46 0.5666
+6.4806 0.75571
+6.5132 0.97479
+6.5616 1.2339
+6.6294 1.5443
+6.7214 1.9185
+6.8424 2.369
+6.9985 2.9086
+7.1962 3.5497
+7.4433 4.3044
+7.7486 5.1853
+8.1225 6.2053
+8.5768 7.3782
+9.1253 8.7198
+9.784 10.247
+10.571 11.98
+11.508 13.937
+12.616 16.138
+13.923 18.6
+15.456 21.333
+17.244 24.339
+19.317 27.608
+21.705 31.115
+24.435 34.819
+27.535 38.666
+31.029 42.593
+34.938 46.536
+39.28 50.451
+44.067 54.324
+49.31 58.201
+55.007 62.202
+61.151 66.543
+67.712 71.54
+74.636 77.6
+81.83 85.196
+89.145 94.817
+96.363 106.9
+103.17 121.73
+109.17 139.39
+113.82 159.63
+116.48 181.83
+116.43 205.05
+112.84 228.03
+104.88 249.37
+91.714 267.78
+72.595 282.39
+46.907 293.07
+14.209 300.82
+-25.739 308.03
+-72.993 318.57
+-127.45 337.63
+-188.95 371.29
+-257.3 425.67
+-332.44 505.72
+-414.48 613.86
+-503.73 748.54
+-600.69 903.14
+-705.93 1065.6
+-819.9 1219.2
+-942.6 1344.5
+-1073.3 1423.1
+-1210.2 1441.7
+-1350.1 1397.3
+-1488.6 1299.5
+-1620.4 1172.2
+-1739.7 1049.3
+-1841.4 968.1
+-1922 958.57
+-1979.9 1032.4
+-2015.8 1175.1
+-2031.8 1344.5
+-2029.9 1477.4
+-2010.4 1504.7
+-1970.4 1370.1
+-1903.7 1047.2
+-1802.8 548.27
+-1661.9 -79.548
+-1481.1 -770.2
+-1269.5 -1461.1
+-1047.1 -2113.2
+-841.89 -2720.8
+-684.62 -3306
+-601.72 -3901
+-608.06 -4527.5
+-702.86 -5183.4
+-869.95 -5844.9
+-1082.8 -6483
+-1312.6 -7084.9
+-1536.2 -7667.1
+-1740.6 -8269
+-1922 -8926.7
+-2077.6 -9637.4
+-2194.6 -10333
+-2240.9 -10882
+-2164.6 -11114
+-1906 -10876
+-1421.9 -10074
+-712.51 -8704
+160.36 -6846.4
+1077.7 -4647.3
+1893.1 -2297.5
+2478.3 -24.306
+2767.3 1907.6
+2775.2 3209.7
+2584.7 3621.7
+2306.3 3003.2
+2035.1 1437.1
+1826.2 -713.44
+1698.9 -2848.8
+1657.4 -4292.4
+1707 -4525.4
+1847.7 -3408.2
+2051.3 -1286
+2243.9 1084
+2319.7 2779.1
+2190.2 3050.8
+1843.4 1625
+1372.3 -1161.7
+944.02 -4460.2
+715.81 -7217.1
+743.99 -8573.6
+937.41 -8192
+1086.1 -6369.5
+951.8 -3892.8
+374.55 -1699.3
+-654.85 -491.32
+-1982.1 -460.63
+-3331.6 -1233
+-4382.5 -2052.2
+-4855.1 -2137.1
+-4594 -1067.9
+-3631.1 978.32
+-2203.5 3293.8
+-703 5029
+447.73 5727.6
+954.39 5679.5
+774.64 5801.3
+135.81 7022.7
+-575.69 9526.6
+-1004.5 12384
+-996.47 13947
+-655.75 12855
+-259.58 9046.6
+-85.408 4053.1
+-254.33 297.15
+-678.89 -239.47
+-1134.2 2844.3
+-1396.4 8121.8
+-1359.1 13111
+-1067.4 15567
+-665.77 14527
+-308.35 10620
+-87.15 5607.6
+-6.5754 1545.8
+0 0
+0 0
+-0.023924 0.31513
+-0.33467 2.9451
+-1.3098 8.6866
+-3.3004 18.082
+-6.583 31.116
+-11.296 46.745
+-17.381 62.833
+-24.565 76.584
+-32.389 85.308
+-40.294 87.209
+-47.718 81.893
+-54.2 70.414
+-59.436 54.888
+-63.304 37.881
+-65.841 21.798
+-67.202 8.4795
+-67.618 -0.93819
+-67.35 -5.9531
+-66.669 -6.5338
+-65.827 -2.9674
+-65.05 4.235
+-64.53 14.386
+-64.433 26.661
+-64.907 40.145
+-66.092 53.9
+-68.111 66.994
+-71.046 78.511
+-74.899 87.526
+-79.552 93.088
+-84.738 94.275
+-90.064 90.318
+-95.063 80.801
+-99.278 65.844
+-102.35 46.21
+-104.1 23.254
+-104.49 -1.2724
+-103.68 -25.53
+-101.86 -47.918
+-99.22 -67.312
+-95.879 -83.168
+-91.845 -95.464
+-87.046 -104.53
+-81.38 -110.81
+-74.786 -114.72
+-67.302 -116.51
+-59.094 -116.28
+-50.447 -114.03
+-41.727 -109.8
+-33.311 -103.69
+-25.528 -95.956
+-18.606 -86.988
+-12.647 -77.245
+-7.6354 -67.213
+-3.4668 -57.346
+0.005436 -48.028
+2.9267 -39.552
+5.408 -32.121
+7.5135 -25.842
+9.266 -20.731
+10.668 -16.71
+11.723 -13.619
+12.459 -11.233
+12.931 -9.3017
+13.219 -7.5863
+13.408 -5.9073
+13.574 -4.1736
+13.764 -2.3934
+13.988 -0.659
+14.23 0.88842
+14.449 2.1059
+14.603 2.8933
+14.664 3.2238
+14.622 3.1528
+14.495 2.8036
+14.321 2.3361
+14.15 1.9068
+14.034 1.6334
+14.013 1.5699
+14.111 1.7005
+14.333 1.9505
+14.663 2.2104
+15.07 2.3668
+15.513 2.3312
+15.949 2.0611
+16.335 1.5692
+16.636 0.91862
+16.826 0.20921
+16.89 -0.44409
+16.82 -0.93326
+16.618 -1.1761
+16.294 -1.1285
+15.86 -0.78829
+15.331 -0.19138
+14.724 0.5976
+14.055 1.4983
+13.34 2.4276
+12.593 3.3111
+11.829 4.0909
+11.06 4.7289
+10.302 5.2079
+9.566 5.528
+8.8659 5.7031
+8.2131 5.7551
+7.6174 5.7101
+7.0868 5.594
+6.6262 5.4301
+6.2378 5.2377
+5.921 5.0318
+5.6722 4.8228
+5.486 4.6177
+5.3553 4.4201
+5.2723 4.2317
+5.2289 4.0523
+5.2176 3.8805
+5.2313 3.7142
+5.264 3.5507
+5.3107 3.3871
+5.3671 3.2207
+5.43 3.0491
+5.4965 2.8705
+5.5643 2.6839
+5.6312 2.489
+5.6955 2.2862
+5.7556 2.0768
+5.8098 1.8622
+5.8571 1.6441
+5.8965 1.4246
+5.9275 1.2055
+5.9498 0.98892
+5.9637 0.7771
+5.9699 0.57244
+5.9692 0.37764
+5.963 0.19575
+5.9525 0.030048
+5.939 -0.11605
+5.9239 -0.23925
+5.9083 -0.33662
+5.8929 -0.40592
+5.8783 -0.44583
+5.8649 -0.45615
+5.8526 -0.43789
+5.8416 -0.39319
+5.8317 -0.32511
+5.823 -0.23731
+5.8158 -0.13355
+5.8106 -0.017165
+5.8082 0.10951
+5.81 0.24565
+5.8177 0.39237
+5.8336 0.55303
+5.8602 0.73321
+5.901 0.9407
+5.9596 1.1851
+6.0407 1.4773
+6.1492 1.829
+6.291 2.2525
+6.4729 2.7596
+6.7024 3.3621
+6.9881 4.0714
+7.3397 4.899
+7.7682 5.8566
+8.2864 6.9569
+8.9084 8.2141
+9.6509 9.6436
+10.533 11.263
+11.575 13.089
+12.802 15.14
+14.239 17.43
+15.915 19.968
+17.86 22.756
+20.104 25.782
+22.675 29.023
+25.603 32.439
+28.911 35.978
+32.62 39.58
+36.749 43.186
+41.308 46.752
+46.304 50.272
+51.739 53.794
+57.608 57.446
+63.894 61.451
+70.567 66.138
+77.576 71.938
+84.835 79.352
+92.208 88.913
+99.498 101.11
+106.42 116.32
+112.58 134.69
+117.48 156.07
+120.49 179.95
+120.86 205.46
+117.73 231.42
+110.19 256.47
+97.301 279.33
+78.137 299.06
+51.88 315.45
+17.846 329.39
+-24.475 343.1
+-75.402 360.29
+-135.08 386.05
+-203.52 426.36
+-280.66 487.3
+-366.41 573.87
+-460.78 688.56
+-563.82 829.93
+-675.7 991.43
+-796.57 1161
+-926.42 1321.7
+-1064.8 1453.8
+-1210.5 1538
+-1361.2 1560.4
+-1513.2 1516.5
+-1661.5 1415.1
+-1799.7 1279.1
+-1921 1142.3
+-2019 1042.6
+-2089.1 1011.4
+-2129 1062.6
+-2139.8 1184
+-2125.1 1335
+-2090.1 1453.1
+-2039.3 1468
+-1975 1321
+-1895.7 982.81
+-1796.6 463.79
+-1671.7 -188.83
+-1516.7 -905.85
+-1332.8 -1618.9
+-1129 -2282.2
+-921.58 -2884
+-732.09 -3443.7
+-582.2 -3995.6
+-488.6 -4567.6
+-459.15 -5166.8
+-491.63 -5778.5
+-576.08 -6379.5
+-699.56 -6958
+-851.65 -7526.8
+-1028 -8119.1
+-1229.4 -8766.8
+-1455.5 -9469.2
+-1694.6 -10170
+-1914.2 -10753
+-2058.4 -11067
+-2057.3 -10966
+-1848.6 -10343
+-1405.1 -9157.5
+-755.98 -7442.2
+11.421 -5299.2
+774.3 -2899.4
+1415.3 -486.49
+1863.5 1627.8
+2114.5 3097.6
+2219.9 3620.7
+2251.5 3047.7
+2262.1 1483.1
+2265.9 -677.38
+2248.2 -2813.6
+2193.4 -4251
+2107.6 -4486.1
+2015.2 -3385.7
+1931.9 -1278.1
+1834.6 1114.9
+1659.4 2897.4
+1336.5 3310
+845.09 2022.9
+251.89 -703.25
+-301.33 -4069.6
+-661.78 -7009.5
+-749.52 -8584.3
+-612.61 -8344.6
+-419.49 -6501.2
+-389.35 -3824.4
+-694.44 -1315.7
+-1379 203.73
+-2327.4 413.18
+-3290 -407.03
+-3955.3 -1529.2
+-4047.9 -2121.5
+-3428.1 -1639.7
+-2163 -89.066
+-538.1 1990.3
+1014.6 3846.1
+2064.1 4993.3
+2352.8 5559.1
+1915.1 6220.3
+1070.1 7695.9
+276.28 10093
+-91.13 12583
+75.456 13746
+571.14 12454
+1001.8 8755.3
+1007.3 4116.8
+459.47 761.61
+-475.78 456.16
+-1436.9 3487.5
+-2060.9 8466.9
+-2158.3 13066
+-1779.1 15211
+-1152.2 14050
+-549.95 10211
+-158.95 5373.3
+-12.152 1478.6
+0 0
+0 0
+-0.027305 0.35753
+-0.37927 3.3235
+-1.4669 9.7171
+-3.6407 20.03
+-7.1393 34.155
+-12.038 50.911
+-18.212 67.998
+-25.344 82.464
+-32.972 91.509
+-40.57 93.301
+-47.648 87.482
+-53.823 75.203
+-58.855 58.706
+-62.65 40.676
+-65.231 23.614
+-66.704 9.4264
+-67.23 -0.70826
+-67.006 -6.2637
+-66.252 -7.1965
+-65.2 -3.7934
+-64.077 3.4233
+-63.092 13.746
+-62.424 26.328
+-62.224 40.236
+-62.621 54.514
+-63.719 68.216
+-65.589 80.39
+-68.237 90.048
+-71.575 96.154
+-75.399 97.683
+-79.399 93.785
+-83.203 84.002
+-86.446 68.48
+-88.847 48.064
+-90.261 24.233
+-90.691 -1.1411
+-90.248 -26.134
+-89.089 -49.121
+-87.334 -69.015
+-85.018 -85.35
+-82.07 -98.183
+-78.351 -107.89
+-73.713 -114.92
+-68.075 -119.62
+-61.479 -122.15
+-54.109 -122.48
+-46.279 -120.53
+-38.372 -116.27
+-30.773 -109.84
+-23.799 -101.56
+-17.65 -91.893
+-12.39 -81.42
+-7.9671 -70.714
+-4.2512 -60.282
+-1.0849 -50.524
+1.6694 -41.713
+4.1005 -34.013
+6.2408 -27.487
+8.0805 -22.121
+9.594 -17.829
+10.768 -14.464
+11.62 -11.83
+12.207 -9.6998
+12.609 -7.8555
+12.917 -6.1178
+13.205 -4.3798
+13.512 -2.6219
+13.841 -0.90597
+14.161 0.65099
+14.423 1.9172
+14.58 2.7889
+14.602 3.223
+14.488 3.2518
+14.269 2.9759
+13.998 2.5382
+13.74 2.0888
+13.558 1.7489
+13.499 1.5852
+13.589 1.6
+13.828 1.7378
+14.194 1.9061
+14.647 2.0035
+15.136 1.9479
+15.612 1.6973
+16.026 1.2597
+16.341 0.69107
+16.533 0.081811
+16.587 -0.46229
+16.502 -0.84141
+16.283 -0.97982
+15.943 -0.83774
+15.498 -0.41542
+14.964 0.25029
+14.358 1.0951
+13.695 2.0395
+12.988 3.0015
+12.251 3.9075
+11.495 4.6999
+10.732 5.3409
+9.9728 5.8129
+9.2304 6.116
+8.517 6.2642
+7.8446 6.28
+7.2239 6.1906
+6.6639 6.0235
+6.1711 5.8044
+5.749 5.5548
+5.3981 5.292
+5.1162 5.0287
+4.8987 4.7735
+4.7395 4.5313
+4.6311 4.3042
+4.566 4.0924
+4.5369 3.8941
+4.5368 3.7066
+4.5598 3.5265
+4.6008 3.3503
+4.6553 3.1745
+4.7199 2.9962
+4.7912 2.8133
+4.8667 2.6245
+4.9437 2.4293
+5.0199 2.228
+5.093 2.0217
+5.1611 1.8116
+5.2223 1.5993
+5.2752 1.3866
+5.3188 1.175
+5.3523 0.96619
+5.3757 0.76211
+5.3893 0.56477
+5.3938 0.37658
+5.3904 0.20033
+5.3804 0.03917
+5.3653 -0.10356
+5.3466 -0.22453
+5.3256 -0.3207
+5.3037 -0.38966
+5.2818 -0.42991
+5.2608 -0.44106
+5.2411 -0.42395
+5.2233 -0.38062
+5.2076 -0.31411
+5.1943 -0.22809
+5.184 -0.12646
+5.1772 -0.012737
+5.1748 0.11049
+5.1781 0.2421
+5.1888 0.38284
+5.209 0.53565
+5.2414 0.70568
+5.2896 0.90019
+5.3575 1.1282
+5.4499 1.4001
+5.5726 1.7271
+5.7319 2.1205
+5.9351 2.5917
+6.1904 3.1516
+6.5071 3.8109
+6.8955 4.58
+7.3669 5.4699
+7.9343 6.4918
+8.6123 7.6586
+9.4176 8.984
+10.369 10.483
+11.487 12.173
+12.797 14.067
+14.323 16.179
+16.094 18.516
+18.14 21.079
+20.489 23.857
+23.169 26.828
+26.208 29.953
+29.626 33.183
+33.442 36.462
+37.668 39.736
+42.309 42.965
+47.366 46.147
+52.835 49.336
+58.702 52.663
+64.95 56.361
+71.548 60.768
+78.449 66.331
+85.579 73.577
+92.823 83.077
+100.01 95.374
+106.88 110.91
+113.09 129.91
+118.16 152.33
+121.49 177.77
+122.34 205.47
+119.83 234.33
+112.99 263.07
+100.77 290.44
+82.093 315.5
+55.941 338
+21.378 358.71
+-22.385 379.73
+-75.957 404.62
+-139.75 438.32
+-214 486.68
+-298.78 555.67
+-394.02 650.24
+-499.61 772.84
+-615.39 922.02
+-741.14 1091.3
+-876.57 1268.4
+-1021.2 1436.3
+-1174 1574.8
+-1333.3 1663.9
+-1496.2 1688.8
+-1658.6 1643.8
+-1814.5 1536.6
+-1956.8 1388.9
+-2077.5 1234.2
+-2168.7 1110.9
+-2224.5 1051.9
+-2241.7 1073.7
+-2221.2 1167.2
+-2167.7 1294.8
+-2089.5 1395.6
+-1995.4 1399.5
+-1893.4 1246.1
+-1787.6 902.94
+-1677.6 376.71
+-1558.7 -287.8
+-1423.8 -1021.8
+-1266.4 -1754.9
+-1083.8 -2436.9
+-878.69 -3051.2
+-659.85 -3612.7
+-440.68 -4153.4
+-236.81 -4701.6
+-63.549 -5267
+65.986 -5838.3
+141.38 -6395.5
+154.16 -6928.2
+96.362 -7448.5
+-40.078 -7988.2
+-261.59 -8579.6
+-567.76 -9227.8
+-943.28 -9888.9
+-1350 -10467
+-1724.5 -10830
+-1985.3 -10842
+-2052.8 -10389
+-1875.2 -9402.5
+-1451 -7869.2
+-835.94 -5846.8
+-126.79 -3480
+572.14 -1017.1
+1185.4 1196.9
+1686.6 2772.2
+2090.7 3374.5
+2425.3 2850.6
+2698.5 1326.1
+2886 -775.92
+2946.5 -2824.4
+2854.6 -4160.8
+2626.2 -4313.3
+2315.5 -3172
+1982 -1058.5
+1649.2 1340.5
+1286.2 3169.1
+830.12 3679.1
+238.24 2507.1
+-461.88 -151.59
+-1161.8 -3557.3
+-1713.1 -6655.3
+-2001.5 -8455.8
+-2011.2 -8416
+-1843.7 -6655.8
+-1677.5 -3904
+-1686.8 -1193.3
+-1956.3 561.25
+-2430.1 917.53
+-2914.3 53.485
+-3136.3 -1345.6
+-2844.1 -2405.7
+-1915.7 -2456.7
+-438.85 -1325.9
+1279.3 616.04
+2794 2703.4
+3682.9 4400.6
+3725.3 5645.6
+3016.2 6855.2
+1943.1 8534.8
+1018.8 10733
+637.53 12758
+879.28 13459
+1470.6 11972
+1931.8 8464
+1835.5 4309.7
+1036.5 1482.5
+-253.09 1479.5
+-1578.6 4440.3
+-2475.8 9018.4
+-2689.3 13079
+-2265.9 14780
+-1490.5 13424
+-719.77 9656.5
+-209.76 5049.3
+-16.112 1384.6
+0 0
+0 0
+-0.029926 0.40445
+-0.41338 3.739
+-1.584 10.832
+-3.8833 22.098
+-7.5087 37.311
+-12.474 55.138
+-18.597 73.123
+-25.529 88.184
+-32.817 97.444
+-39.989 99.064
+-46.635 92.747
+-52.451 79.736
+-57.259 62.378
+-60.982 43.442
+-63.617 25.491
+-65.208 10.472
+-65.838 -0.40323
+-65.633 -6.5761
+-64.765 -7.9704
+-63.451 -4.8485
+-61.925 2.2739
+-60.417 12.677
+-59.123 25.485
+-58.201 39.736
+-57.764 54.446
+-57.895 68.643
+-58.646 81.35
+-60.023 91.535
+-61.966 98.097
+-64.337 99.94
+-66.916 96.146
+-69.432 86.227
+-71.623 70.343
+-73.287 49.408
+-74.327 24.996
+-74.76 -0.92699
+-74.674 -26.382
+-74.173 -49.74
+-73.307 -69.967
+-72.032 -86.677
+-70.204 -100
+-67.624 -110.35
+-64.107 -118.16
+-59.555 -123.7
+-54.013 -126.98
+-47.682 -127.89
+-40.89 -126.23
+-34.03 -121.96
+-27.479 -115.21
+-21.532 -106.39
+-16.351 -96.076
+-11.961 -84.955
+-8.2708 -73.685
+-5.1251 -62.818
+-2.358 -52.753
+0.15918 -43.73
+2.4918 -35.86
+4.6407 -29.161
+6.563 -23.589
+8.204 -19.053
+9.5286 -15.427
+10.541 -12.546
+11.29 -10.218
+11.852 -8.2428
+12.312 -6.442
+12.738 -4.6907
+13.162 -2.9393
+13.576 -1.2184
+13.943 0.37826
+14.208 1.7269
+14.327 2.7154
+14.277 3.2795
+14.072 3.4243
+13.756 3.2252
+13.4 2.8084
+13.082 2.3192
+12.874 1.8866
+12.825 1.5949
+12.96 1.4687
+13.269 1.4756
+13.719 1.5421
+14.257 1.5797
+14.824 1.5112
+15.359 1.2929
+15.81 0.92596
+16.141 0.45567
+16.326 -0.038921
+16.358 -0.46295
+16.239 -0.7256
+15.983 -0.75758
+15.607 -0.5229
+15.131 -0.023175
+14.573 0.70518
+13.953 1.5994
+13.283 2.5819
+12.577 3.5725
+11.845 4.4987
+11.095 5.3034
+10.337 5.9489
+9.5812 6.4168
+8.8381 6.7067
+8.1195 6.8322
+7.4369 6.8159
+6.8016 6.6858
+6.2231 6.4708
+5.7087 6.1986
+5.263 5.8931
+4.8875 5.574
+4.5808 5.2561
+4.3393 4.9498
+4.1574 4.6614
+4.0285 4.3938
+3.9454 4.1472
+3.9011 3.9198
+3.889 3.7083
+3.9031 3.5089
+3.9385 3.3173
+3.9907 3.1294
+4.0559 2.9421
+4.1307 2.7527
+4.2119 2.5597
+4.2968 2.3625
+4.3823 2.1615
+4.4659 1.9574
+4.5451 1.7515
+4.6175 1.545
+4.6812 1.3395
+4.7348 1.1361
+4.7772 0.93614
+4.808 0.7411
+4.8273 0.5526
+4.8355 0.37267
+4.8337 0.20379
+4.8233 0.048848
+4.8058 -0.088933
+4.783 -0.20627
+4.7564 -0.3001
+4.7278 -0.36791
+4.6986 -0.40803
+4.67 -0.41991
+4.643 -0.40422
+4.6185 -0.36286
+4.5972 -0.29877
+4.5796 -0.21561
+4.5663 -0.11729
+4.5581 -0.007445
+4.5558 0.11114
+4.5605 0.23707
+4.574 0.37076
+4.5983 0.5147
+4.636 0.67354
+4.6907 0.85399
+4.7665 1.0645
+4.8685 1.3146
+5.0026 1.615
+5.1756 1.9762
+5.3954 2.4089
+5.6704 2.9233
+6.0103 3.5294
+6.4255 4.2367
+6.9278 5.0552
+7.5299 5.9951
+8.2464 7.0679
+9.0936 8.2859
+10.09 9.6626
+11.256 11.212
+12.614 12.947
+14.19 14.879
+16.012 17.015
+18.105 19.354
+20.5 21.885
+23.221 24.587
+26.293 27.426
+29.733 30.354
+33.557 33.322
+37.771 36.278
+42.375 39.189
+47.364 42.058
+52.727 44.943
+58.448 47.979
+64.505 51.403
+70.87 55.562
+77.504 60.913
+84.348 68.003
+91.31 77.433
+98.249 89.793
+104.95 105.58
+111.12 125.12
+116.31 148.45
+119.97 175.3
+121.37 205.01
+119.64 236.61
+113.76 268.93
+102.59 300.78
+84.94 331.27
+59.582 360.13
+25.342 388.07
+-18.847 417.09
+-73.887 450.61
+-140.47 493.4
+-219.07 551.12
+-309.9 629.58
+-412.95 733.56
+-528.01 865.38
+-654.68 1023.5
+-792.41 1201.3
+-940.46 1386.4
+-1097.8 1561.5
+-1263 1706
+-1433.9 1799.3
+-1607.1 1825.6
+-1778 1777.9
+-1940 1662.6
+-2085 1500.3
+-2204 1323.8
+-2287.8 1171.8
+-2328.7 1078.7
+-2322.2 1064
+-2268.4 1122.2
+-2172.6 1219.6
+-2045 1298.7
+-1898.5 1290.9
+-1746.5 1134.9
+-1599.3 795.36
+-1461.9 274.44
+-1332.6 -388.03
+-1203.4 -1127.3
+-1061.8 -1874.7
+-894.31 -2579.6
+-689.63 -3222
+-442.15 -3811.9
+-154.29 -4375.1
+162.25 -4934.2
+486.73 -5493.6
+791 -6038.6
+1042.4 -6547.6
+1207.4 -7010.7
+1255.4 -7442.2
+1162.6 -7878.7
+915.95 -8360
+517.96 -8902.7
+-7.842 -9479.8
+-612.35 -10016
+-1220.4 -10400
+-1738.2 -10508
+-2070.7 -10221
+-2145.5 -9447.2
+-1934.9 -8133.5
+-1465 -6293.2
+-806.95 -4040
+-50.895 -1616
+724.13 615.96
+1468.2 2237.2
+2157 2892.8
+2771.5 2429.5
+3275.3 991.19
+3610.7 -981.02
+3719 -2858.1
+3576.1 -4012.1
+3216.5 -4017.7
+2727.9 -2799.8
+2211.4 -679.65
+1728.7 1695.6
+1270.4 3525.2
+767.17 4096.4
+141.06 3034
+-631.04 476.3
+-1481.7 -2908.3
+-2268.5 -6108.2
+-2835.5 -8119.5
+-3087.7 -8329.7
+-3039.9 -6766.6
+-2810.3 -4089.9
+-2563.5 -1321.8
+-2426.3 564.91
+-2416.7 1025.1
+-2419.5 131.17
+-2223.8 -1490
+-1614.3 -2940.4
+-484.42 -3436.6
+1077 -2634.2
+2770 -739.73
+4165.3 1660.4
+4865.2 3969.1
+4683.5 5924
+3755.4 7675
+2508.1 9514.7
+1483.4 11445
+1084.7 12932
+1374.4 13120
+2036.2 11432
+2534.9 8158.1
+2396.6 4568.8
+1458.8 2356.1
+-42.676 2710.2
+-1597.3 5598.1
+-2675.6 9715.3
+-2977.1 13144
+-2542 14314
+-1686.9 12713
+-819.7 9013.3
+-239.88 4669.5
+-18.468 1273.7
+0 0
+0 0
+-0.031523 0.45436
+-0.43351 4.1782
+-1.6485 11.998
+-4.0006 24.224
+-7.6436 40.493
+-12.536 59.313
+-18.45 78.084
+-25.02 93.618
+-31.822 103
+-38.448 104.41
+-44.573 97.625
+-49.976 83.977
+-54.532 65.888
+-58.172 46.176
+-60.857 27.43
+-62.559 11.614
+-63.278 -0.035657
+-63.066 -6.9133
+-62.05 -8.8875
+-60.429 -6.1711
+-58.454 0.74674
+-56.377 11.14
+-54.419 24.1
+-52.742 38.62
+-51.45 53.674
+-50.602 68.26
+-50.225 81.377
+-50.323 91.968
+-50.863 98.896
+-51.765 101.02
+-52.898 97.368
+-54.099 87.437
+-55.203 71.397
+-56.092 50.208
+-56.718 25.512
+-57.109 -0.66266
+-57.331 -26.306
+-57.438 -49.807
+-57.413 -70.196
+-57.141 -87.165
+-56.418 -100.92
+-54.995 -111.89
+-52.658 -120.47
+-49.298 -126.83
+-44.961 -130.88
+-39.854 -132.35
+-34.309 -130.98
+-28.711 -126.67
+-23.418 -119.61
+-18.69 -110.29
+-14.649 -99.399
+-11.275 -87.733
+-8.4428 -76.028
+-5.975 -64.869
+-3.6997 -54.642
+-1.4987 -45.542
+0.67067 -37.618
+2.7801 -30.836
+4.756 -25.121
+6.5161 -20.385
+8.0024 -16.524
+9.2018 -13.411
+10.148 -10.889
+10.906 -8.7788
+11.548 -6.9027
+12.13 -5.1174
+12.673 -3.3438
+13.161 -1.5825
+13.551 0.092277
+13.792 1.5603
+13.847 2.6959
+13.707 3.4094
+13.403 3.6758
+12.999 3.5446
+12.581 3.1273
+12.239 2.5682
+12.051 2.0092
+12.065 1.5573
+12.296 1.2645
+12.724 1.1245
+13.301 1.0846
+13.959 1.0685
+14.626 1.0024
+15.235 0.83791
+15.728 0.5655
+16.068 0.21695
+16.235 -0.14292
+16.227 -0.43194
+16.055 -0.56912
+15.738 -0.49151
+15.303 -0.16607
+14.774 0.4055
+14.173 1.1887
+13.52 2.1237
+12.83 3.1362
+12.112 4.1484
+11.376 5.0898
+10.628 5.904
+9.875 6.5527
+9.1244 7.017
+8.3856 7.2955
+7.669 7.4006
+6.9855 7.3551
+6.3461 7.187
+5.7603 6.9268
+5.2359 6.6037
+4.7778 6.244
+4.3882 5.8696
+4.0665 5.4976
+3.8096 5.1401
+3.6125 4.805
+3.4693 4.4957
+3.3733 4.213
+3.3177 3.9548
+3.2965 3.7175
+3.3038 3.4967
+3.3347 3.2875
+3.3849 3.0856
+3.4503 2.8872
+3.5274 2.6895
+3.6129 2.4908
+3.7034 2.2905
+3.7959 2.0888
+3.8872 1.8863
+3.9744 1.6842
+4.055 1.4836
+4.1266 1.2856
+4.1874 1.091
+4.236 0.9008
+4.2718 0.7159
+4.2945 0.53751
+4.3047 0.36722
+4.3031 0.20714
+4.2912 0.059858
+4.2706 -0.071623
+4.2431 -0.18414
+4.2108 -0.27467
+4.1754 -0.34063
+4.139 -0.38026
+4.103 -0.39284
+4.069 -0.37888
+4.0381 -0.3401
+4.0113 -0.27929
+3.9895 -0.20001
+3.9734 -0.10613
+3.9638 -0.001322
+3.9615 0.1115
+3.9675 0.23072
+3.9835 0.3564
+4.0112 0.49061
+4.0534 0.63748
+4.1134 0.80307
+4.1955 0.99511
+4.3048 1.2226
+4.4474 1.4951
+4.6304 1.8228
+4.8616 2.2155
+5.1499 2.6828
+5.505 3.2337
+5.9373 3.8773
+6.4583 4.6226
+7.0808 5.4789
+7.8187 6.4564
+8.6877 7.5661
+9.7054 8.8199
+10.892 10.23
+12.268 11.808
+13.858 13.563
+15.688 15.5
+17.783 17.619
+20.169 19.911
+22.87 22.354
+25.906 24.917
+29.292 27.558
+33.038 30.231
+37.147 32.892
+41.613 35.512
+46.426 38.098
+51.569 40.712
+57.023 43.495
+62.765 46.683
+68.773 50.627
+75.015 55.791
+81.45 62.734
+88.013 72.082
+94.601 84.461
+101.05 100.43
+107.09 120.38
+112.37 144.46
+116.35 172.51
+118.37 204.01
+117.55 238.13
+112.87 273.83
+103.12 310.03
+86.991 345.92
+63.09 381.26
+30.023 416.75
+-13.535 454.31
+-68.767 497.22
+-136.64 550.07
+-217.85 618.31
+-312.78 707.5
+-421.46 822.16
+-543.61 964.4
+-678.62 1132.4
+-825.64 1319.4
+-983.52 1512.9
+-1150.8 1695.2
+-1325.7 1845.4
+-1505.5 1942.3
+-1686.7 1969
+-1864.2 1917.4
+-2031.1 1792.4
+-2178.7 1613.2
+-2296.9 1411.7
+-2375.1 1226.5
+-2403.9 1093.7
+-2377.2 1035.3
+-2293.4 1050.2
+-2157.3 1109.5
+-1979.9 1160.3
+-1776.9 1136.8
+-1566.1 978.57
+-1363.8 647.92
+-1180.9 142.11
+-1020.4 -505.7
+-875.4 -1237.8
+-730.35 -1991.4
+-563.26 -2719.2
+-350.4 -3400.7
+-71.978 -4041.4
+281.78 -4658.4
+705.49 -5262.5
+1175.6 -5845.3
+1651 -6380.5
+2077.4 -6838.9
+2394.9 -7208.7
+2548.2 -7509.3
+2495.6 -7788.3
+2216.7 -8101.5
+1717.5 -8485.5
+1033.4 -8935.2
+228.98 -9398
+-605.5 -9782.3
+-1363.1 -9975
+-1936 -9855.6
+-2236.6 -9310.2
+-2216.4 -8250
+-1877.1 -6646.9
+-1266.2 -4580.9
+-459.52 -2277.8
+461.46 -103.67
+1424.3 1509.8
+2366 2198.7
+3221.7 1813.5
+3914.7 510.05
+4360.7 -1264.4
+4494.2 -2898.3
+4302.1 -3808.5
+3844.8 -3627.8
+3244.4 -2323.1
+2637.7 -215.53
+2114.2 2094.8
+1672.7 3880
+1224.7 4485.8
+645.97 3546
+-146.15 1149
+-1131.9 -2123.1
+-2178 -5336.6
+-3085.7 -7514.8
+-3674.6 -8004.9
+-3860.2 -6744.7
+-3687 -4296.9
+-3298.1 -1628.3
+-2857.1 274.92
+-2459.8 790.37
+-2080.2 -113
+-1580.4 -1884.2
+-786.95 -3626.5
+398.38 -4466.5
+1904 -3905.4
+3462.8 -1994.7
+4684.1 754.63
+5207.1 3684.4
+4875 6335
+3842.4 8594.9
+2545.3 10551
+1524.8 12166
+1173.9 13075
+1535.6 12727
+2267 10839
+2804.7 7829.8
+2653.7 4855.1
+1648.1 3307.8
+40.128 4051.3
+-1627.9 6866.6
+-2792.7 10491
+-3132.4 13239
+-2685.7 13830
+-1787 11956
+-869.95 8323.8
+-254.89 4260.7
+-19.637 1154.2
+0 0
+0 0
+-0.031941 0.50542
+-0.43761 4.6252
+-1.6535 13.172
+-3.978 26.337
+-7.5221 43.601
+-12.197 63.317
+-17.743 82.75
+-23.797 98.64
+-29.971 108.06
+-35.934 109.25
+-41.448 102.05
+-46.373 87.881
+-50.629 69.206
+-54.15 48.857
+-56.854 29.413
+-58.638 12.832
+-59.42 0.37534
+-59.176 -7.2958
+-57.987 -9.97
+-56.038 -7.784
+-53.59 -1.1816
+-50.924 9.1131
+-48.283 22.154
+-45.842 36.875
+-43.694 52.195
+-41.879 67.073
+-40.404 80.488
+-39.264 91.373
+-38.449 98.579
+-37.932 100.94
+-37.665 97.472
+-37.581 87.645
+-37.613 71.641
+-37.719 50.446
+-37.899 25.747
+-38.192 -0.39456
+-38.646 -25.965
+-39.268 -49.39
+-39.989 -69.766
+-40.636 -86.871
+-40.958 -100.97
+-40.672 -112.5
+-39.545 -121.81
+-37.458 -128.96
+-34.455 -133.73
+-30.737 -135.73
+-26.624 -134.61
+-22.477 -130.26
+-18.62 -122.91
+-15.268 -113.13
+-12.499 -101.75
+-10.253 -89.659
+-8.3751 -77.661
+-6.6707 -66.363
+-4.9684 -56.126
+-3.1621 -47.087
+-1.2302 -39.23
+0.77379 -32.463
+2.7509 -26.685
+4.595 -21.806
+6.2271 -17.752
+7.6144 -14.433
+8.7715 -11.73
+9.7447 -9.4828
+10.588 -7.5164
+11.338 -5.6694
+12.004 -3.8358
+12.56 -1.9908
+12.962 -0.19447
+13.166 1.4305
+13.147 2.7399
+12.917 3.6145
+12.526 3.9981
+12.057 3.9155
+11.613 3.4667
+11.292 2.8003
+11.173 2.0768
+11.3 1.4317
+11.676 0.94873
+12.265 0.65072
+13.001 0.50634
+13.804 0.45043
+14.587 0.40991
+15.274 0.32802
+15.806 0.18089
+16.146 -0.016933
+16.28 -0.2177
+16.213 -0.35374
+15.966 -0.35463
+15.568 -0.16354
+15.051 0.25066
+14.447 0.88762
+13.783 1.7164
+13.081 2.6818
+12.354 3.7137
+11.614 4.7384
+10.865 5.6874
+10.113 6.5052
+9.3622 7.1534
+8.6175 7.6122
+7.8864 7.8786
+7.1776 7.964
+6.5011 7.8905
+5.8669 7.6863
+5.2842 7.3828
+4.7605 7.0108
+4.3008 6.5986
+3.9076 6.1705
+3.5805 5.7455
+3.3169 5.3377
+3.1125 4.9561
+2.9616 4.6051
+2.858 4.2857
+2.7957 3.9959
+2.7687 3.7317
+2.7716 3.4882
+2.7996 3.2601
+2.8483 3.0427
+2.9138 2.8319
+2.9924 2.6247
+3.0805 2.4193
+3.1747 2.215
+3.2715 2.0119
+3.3676 1.8107
+3.4598 1.6124
+3.5452 1.4177
+3.6214 1.2275
+3.6862 1.0422
+3.738 0.86245
+3.7761 0.68854
+3.8 0.52125
+3.8101 0.36169
+3.8072 0.21154
+3.7926 0.073056
+3.768 -0.051053
+3.7355 -0.15781
+3.6971 -0.24426
+3.655 -0.30785
+3.6115 -0.34674
+3.5684 -0.36007
+3.5276 -0.34817
+3.4906 -0.31256
+3.4587 -0.25584
+3.4329 -0.1814
+3.414 -0.092995
+3.4028 0.005726
+3.4002 0.11179
+3.4071 0.22338
+3.4248 0.34027
+3.4551 0.46409
+3.5006 0.5984
+3.5645 0.74862
+3.6509 0.92176
+3.765 1.126
+3.9129 1.3703
+4.1017 1.6639
+4.3392 2.0159
+4.6342 2.4353
+4.9963 2.9306
+5.4358 3.5101
+5.9639 4.182
+6.5928 4.9549
+7.3357 5.8379
+8.2076 6.8407
+9.225 7.9738
+10.406 9.2477
+11.772 10.672
+13.343 12.256
+15.145 14.003
+17.199 15.912
+19.53 17.975
+22.158 20.172
+25.1 22.476
+28.367 24.85
+31.965 27.252
+35.892 29.644
+40.137 32.003
+44.686 34.341
+49.518 36.724
+54.611 39.291
+59.945 42.282
+65.499 46.045
+71.255 51.045
+77.191 57.849
+83.269 67.097
+89.424 79.445
+95.536 95.498
+101.41 115.72
+106.73 140.37
+111.04 169.4
+113.7 202.43
+113.9 238.79
+110.59 277.59
+102.55 317.92
+88.365 359.06
+66.515 400.87
+35.42 444.06
+-6.4732 490.49
+-60.595 543.35
+-128.16 607.02
+-210.07 686.69
+-306.86 787.61
+-418.61 914
+-544.99 1067.6
+-685.22 1246.4
+-838.18 1443.2
+-1002.4 1645.3
+-1176.2 1834.8
+-1357.3 1990.5
+-1543 2090.5
+-1729.6 2117
+-1911.9 2060.9
+-2083 1925.4
+-2233.9 1728.1
+-2353.7 1499.7
+-2430.6 1278.5
+-2453.7 1101.4
+-2414.4 993.2
+-2309.1 957.04
+-2140.8 969.51
+-1919.7 983.13
+-1662.4 936.83
+-1389.7 772.22
+-1122.5 450.65
+-877.79 -35.074
+-663.83 -659.25
+-477.56 -1373.4
+-303.35 -2124
+-114.63 -2870.9
+121.4 -3596.6
+436.49 -4303.5
+852.19 -4998.7
+1370.8 -5676.9
+1969.1 -6309.8
+2596.2 -6851.6
+3179.2 -7258.5
+3633.9 -7513.7
+3880.6 -7642.8
+3859 -7710.9
+3541 -7799
+2937.1 -7972.6
+2096.3 -8255.4
+1101.5 -8619.7
+60.252 -8992.2
+-907.3 -9267.8
+-1683.9 -9321.3
+-2172.5 -9019.2
+-2311.2 -8240.7
+-2083.7 -6919.7
+-1517.6 -5101.6
+-675.45 -2989.1
+360.3 -937.62
+1498 623.15
+2640.2 1331.4
+3682.1 1043.4
+4513.4 -79.894
+5033 -1599.7
+5178.1 -2937.5
+4955 -3568.3
+4453.6 -3190
+3827.7 -1813.2
+3240.8 244.94
+2797.5 2442
+2492.5 4140
+2207.8 4764.6
+1766 3977.3
+1020.3 1821.7
+-61.378 -1221.6
+-1360.6 -4331.5
+-2641.5 -6601
+-3641.7 -7369.2
+-4177.1 -6489.6
+-4211.7 -4404.5
+-3856.9 -1980.8
+-3301.9 -172.51
+-2711.4 350.31
+-2143.3 -541.76
+-1529.6 -2390.2
+-733.95 -4328
+342.73 -5421.3
+1660.6 -5038.4
+3002.6 -3087.6
+4030.6 -4.7476
+4426.5 3499.9
+4056.9 6784
+3076.5 9490.7
+1901.8 11514
+1040.8 12787
+849.71 13114
+1339.9 12248
+2148.3 10195
+2706.9 7490
+2532 5164.3
+1479.9 4302.6
+-171 5436.6
+-1857.8 8163.2
+-3009.1 11270
+-3307.7 13312
+-2806.6 13310
+-1855.6 11161
+-899.66 7605.5
+-262.92 3836.3
+-20.228 1030.2
+0 0
+0 0
+-0.031129 0.55568
+-0.42515 5.0632
+-1.5976 14.312
+-3.8146 28.364
+-7.147 46.539
+-11.469 67.034
+-16.505 87.004
+-21.905 103.14
+-27.33 112.54
+-32.526 113.5
+-37.34 105.96
+-41.705 91.388
+-45.585 72.278
+-48.914 51.435
+-51.569 31.394
+-53.38 14.091
+-54.183 0.80293
+-53.886 -7.7392
+-52.519 -11.223
+-50.249 -9.6867
+-47.342 -3.508
+-44.099 6.5993
+-40.786 19.65
+-37.59 34.508
+-34.606 50.025
+-31.857 65.111
+-29.336 78.727
+-27.033 89.809
+-24.955 97.214
+-23.12 99.782
+-21.55 96.523
+-20.263 86.903
+-19.277 71.103
+-18.62 50.127
+-18.333 25.677
+-18.469 -0.17727
+-19.059 -25.438
+-20.078 -48.58
+-21.416 -68.777
+-22.862 -85.88
+-24.135 -100.2
+-24.936 -112.2
+-25.021 -122.15
+-24.265 -130.01
+-22.7 -135.43
+-20.511 -137.9
+-17.986 -136.99
+-15.444 -132.59
+-13.159 -124.98
+-11.296 -114.83
+-9.8862 -103.06
+-8.8341 -90.677
+-7.9638 -78.535
+-7.0758 -67.252
+-6.0049 -57.152
+-4.6606 -48.308
+-3.0407 -40.635
+-1.2188 -33.985
+0.6875 -28.227
+2.5549 -23.276
+4.2871 -19.083
+5.8329 -15.598
+7.1857 -12.736
+8.3686 -10.357
+9.4116 -8.2869
+10.331 -6.3489
+11.118 -4.4148
+11.74 -2.4407
+12.154 -0.47953
+12.324 1.3369
+12.244 2.8405
+11.945 3.8799
+11.499 4.3676
+11.007 4.3063
+10.585 3.7891
+10.337 2.9749
+10.338 2.0491
+10.625 1.1808
+11.184 0.48948
+11.965 0.029029
+12.883 -0.21049
+13.842 -0.28492
+14.744 -0.26989
+15.506 -0.23438
+16.068 -0.22074
+16.395 -0.23529
+16.48 -0.25006
+16.337 -0.21361
+15.996 -0.066609
+15.498 0.24205
+14.881 0.74267
+14.186 1.4379
+13.443 2.3019
+12.675 3.2858
+11.899 4.3253
+11.124 5.3512
+10.354 6.2981
+9.5911 7.1117
+8.838 7.7535
+8.0976 8.2025
+7.3751 8.4542
+6.6776 8.5187
+6.0133 8.417
+5.3912 8.1774
+4.8195 7.8318
+4.305 7.4125
+3.8524 6.9497
+3.4641 6.4695
+3.1396 5.9932
+2.8768 5.5364
+2.6715 5.1093
+2.5186 4.7173
+2.4124 4.3616
+2.3472 4.04
+2.3174 3.7485
+2.3179 3.4818
+2.3442 3.2342
+2.3919 3.0005
+2.4571 2.7765
+2.536 2.5592
+2.625 2.3465
+2.7204 2.1378
+2.8187 1.9332
+2.9164 1.7332
+3.0102 1.5386
+3.0969 1.35
+3.1741 1.1679
+3.2394 0.99243
+3.2913 0.82355
+3.3288 0.66125
+3.3513 0.50574
+3.3592 0.35767
+3.3532 0.21826
+3.3346 0.089373
+3.3052 -0.0266
+3.267 -0.12691
+3.2224 -0.20876
+3.1736 -0.26964
+3.1232 -0.30765
+3.0733 -0.32184
+3.026 -0.31234
+2.9832 -0.28045
+2.9462 -0.22855
+2.9164 -0.15979
+2.8945 -0.07777
+2.8815 0.013961
+2.8781 0.11241
+2.885 0.21564
+2.9035 0.32313
+2.9353 0.43609
+2.9825 0.55751
+3.0483 0.69216
+3.1368 0.84628
+3.2529 1.0273
+3.4025 1.2433
+3.5926 1.503
+3.8309 1.8146
+4.126 2.1866
+4.4871 2.6269
+4.9242 3.1431
+5.4479 3.743
+6.0697 4.4344
+6.8022 5.2254
+7.6592 6.1246
+8.656 7.1413
+9.8095 8.2846
+11.138 9.5632
+12.663 10.984
+14.403 12.551
+16.382 14.262
+18.617 16.111
+21.128 18.08
+23.927 20.146
+27.022 22.276
+30.415 24.433
+34.098 26.587
+38.058 28.719
+42.276 30.847
+46.728 33.036
+51.391 35.429
+56.246 38.26
+61.279 41.875
+66.482 46.734
+71.853 53.404
+77.381 62.533
+83.041 74.798
+88.761 90.845
+94.402 111.21
+99.716 136.23
+104.31 165.98
+107.62 200.25
+108.87 238.53
+107.03 280.11
+100.88 324.25
+88.95 370.4
+69.626 418.52
+41.184 469.38
+1.8915 524.83
+-49.886 587.94
+-115.56 662.89
+-196.23 754.61
+-292.52 867.99
+-404.59 1006.8
+-532.05 1172.5
+-674.01 1362.5
+-829.16 1569.5
+-995.82 1780.5
+-1172 1977.2
+-1355.6 2138.2
+-1543.7 2241.3
+-1733 2267.8
+-1918.4 2207.3
+-2093.3 2061.6
+-2248.8 1846.5
+-2373.8 1591.1
+-2455.7 1332.8
+-2481.8 1108.9
+-2441.3 946.46
+-2327.6 852.55
+-2140.9 809.37
+-1888.7 775.69
+-1586.6 696.18
+-1255.9 516.25
+-920.6 197.93
+-602.25 -269.19
+-315.14 -866.5
+-61.719 -1555.7
+170.17 -2294.9
+407.1 -3054.3
+686.17 -3822.9
+1047 -4602.3
+1520.8 -5390.2
+2117.7 -6162.6
+2817.2 -6865.9
+3563.6 -7427.8
+4270.3 -7783.2
+4833.4 -7906.1
+5151.6 -7828.6
+5147.7 -7638
+4786 -7449.4
+4081 -7366.8
+3095.6 -7449.7
+1931.7 -7698
+714.54 -8054.5
+-423.53 -8417.6
+-1359.2 -8653.2
+-1991.8 -8607.6
+-2254.1 -8131
+-2118.9 -7123.4
+-1599.8 -5597.2
+-747.93 -3726.9
+354.85 -1847.2
+1602.8 -372.69
+2871.9 346.39
+4026.9 173.19
+4934.9 -734.62
+5488.9 -1961
+5637.8 -2975.5
+5412.9 -3320.3
+4933 -2761.6
+4376.9 -1350.3
+3923.4 608.2
+3679 2640.8
+3623.4 4214.5
+3603.3 4852.5
+3387.4 4259
+2765.8 2437.1
+1653.3 -246.97
+147.1 -3115.9
+-1492.2 -5371.8
+-2934.7 -6377.5
+-3908.4 -5912.2
+-4300.5 -4280.1
+-4183.8 -2211.2
+-3757.6 -586.68
+-3235.2 -96.118
+-2737.4 -961
+-2248.3 -2829.5
+-1654.7 -4891.2
+-846.29 -6179.6
+176.69 -5952.4
+1252.4 -3984.5
+2099 -634.33
+2440.3 3348.7
+2159.5 7160.9
+1397.6 10223
+527.31 12259
+-6.0959 13180
+87.388 12962
+768.16 11648
+1653.4 9507.9
+2192.1 7171
+1947.3 5523.7
+833.38 5337.9
+-825.49 6823.4
+-2448.7 9413.2
+-3478.5 11965
+-3631.6 13290
+-2997.1 12705
+-1947.9 10306
+-933.96 6852
+-271.06 3397.1
+-20.778 902.84
+0 0
+0 0
+-0.029109 0.60318
+-0.39652 5.4757
+-1.4831 15.378
+-3.5181 30.239
+-6.5377 49.218
+-10.393 70.367
+-14.803 90.748
+-19.442 107.03
+-24.025 116.34
+-28.366 117.08
+-32.393 109.27
+-36.103 94.423
+-39.499 75.023
+-42.523 53.826
+-45.021 33.298
+-46.771 15.33
+-47.541 1.2126
+-47.174 -8.2509
+-45.65 -12.632
+-43.103 -11.848
+-39.792 -6.1963
+-36.025 3.6319
+-32.086 16.614
+-28.173 31.542
+-24.387 47.188
+-20.75 62.41
+-17.249 76.149
+-13.874 87.349
+-10.648 94.893
+-7.6245 97.643
+-4.8828 94.619
+-2.5093 85.292
+-0.59079 69.841
+0.78827 49.27
+1.5488 25.282
+1.6283 -0.066813
+1.0033 -24.812
+-0.28121 -47.487
+-2.0901 -67.341
+-4.1963 -84.297
+-6.3087 -98.716
+-8.1263 -111.04
+-9.4047 -121.5
+-10.014 -129.94
+-9.968 -135.9
+-9.4164 -138.75
+-8.5977 -138.02
+-7.7718 -133.57
+-7.1482 -125.75
+-6.8345 -115.32
+-6.8162 -103.3
+-6.9718 -90.766
+-7.1159 -78.634
+-7.0557 -67.514
+-6.6425 -57.687
+-5.8061 -49.16
+-4.563 -41.776
+-3.0018 -35.336
+-1.2511 -29.682
+0.55672 -24.734
+2.3149 -20.467
+3.9574 -16.867
+5.4576 -13.878
+6.8141 -11.381
+8.0312 -9.2003
+9.1021 -7.1471
+10.001 -5.0765
+10.688 -2.9328
+11.122 -0.76985
+11.279 1.2645
+11.17 2.9738
+10.846 4.173
+10.398 4.7443
+9.943 4.6721
+9.6034 4.0483
+9.4851 3.0479
+9.6579 1.8869
+10.144 0.77251
+10.918 -0.13688
+11.908 -0.75557
+13.016 -1.0729
+14.13 -1.1379
+15.145 -1.0322
+15.971 -0.84092
+16.548 -0.62884
+16.848 -0.42645
+16.869 -0.22802
+16.636 0.000337
+16.19 0.30649
+15.578 0.7364
+14.85 1.3208
+14.051 2.0667
+13.217 2.9555
+12.373 3.9456
+11.537 4.9802
+10.716 5.9953
+9.9145 6.9292
+9.1327 7.7294
+8.3709 8.3573
+7.6302 8.7906
+6.9137 9.0233
+6.2265 9.064
+5.5754 8.9326
+4.9677 8.6571
+4.4104 8.2698
+3.9094 7.8043
+3.4686 7.2923
+3.0899 6.7619
+2.7729 6.2361
+2.5151 5.732
+2.3129 5.2611
+2.1614 4.8292
+2.0553 4.4379
+1.9894 4.0852
+1.9583 3.7666
+1.9573 3.4767
+1.982 3.2094
+2.0281 2.9593
+2.0918 2.7221
+2.1692 2.4944
+2.2567 2.2744
+2.3505 2.0614
+2.4471 1.8553
+2.5427 1.6566
+2.6342 1.4659
+2.7184 1.2836
+2.7927 1.1099
+2.8549 0.94444
+2.9033 0.78678
+2.937 0.63642
+2.9554 0.49308
+2.9587 0.35691
+2.9478 0.22869
+2.9237 0.10985
+2.8884 0.002452
+2.844 -0.091031
+2.7927 -0.16798
+2.7371 -0.22597
+2.6798 -0.26309
+2.6233 -0.27829
+2.5697 -0.27153
+2.5211 -0.24386
+2.4791 -0.19739
+2.445 -0.13503
+2.4198 -0.060141
+2.4043 0.023873
+2.3991 0.11406
+2.405 0.20837
+2.423 0.30605
+2.4544 0.40788
+2.5015 0.51634
+2.567 0.63549
+2.6548 0.77085
+2.7696 0.92906
+2.9171 1.1175
+3.1038 1.344
+3.3374 1.6163
+3.6258 1.9422
+3.9778 2.3292
+4.403 2.7844
+4.9112 3.3149
+5.5133 3.928
+6.2207 4.6311
+7.0464 5.4317
+8.0041 6.3381
+9.1093 7.3582
+10.379 8.4994
+11.83 9.7679
+13.482 11.167
+15.354 12.696
+17.46 14.348
+19.817 16.11
+22.434 17.96
+25.315 19.872
+28.457 21.815
+31.849 23.762
+35.475 25.703
+39.312 27.657
+43.334 29.693
+47.518 31.951
+51.846 34.661
+56.31 38.16
+60.913 42.899
+65.669 49.442
+70.598 58.433
+75.706 70.566
+80.973 86.518
+86.314 106.88
+91.548 132.08
+96.356 162.32
+100.24 197.52
+102.47 237.38
+102.09 281.36
+97.872 328.94
+88.35 379.75
+71.847 433.89
+46.548 492.22
+10.594 556.61
+-37.795 630.03
+-100.18 716.46
+-177.79 820.52
+-271.36 946.71
+-381.06 1098.4
+-506.48 1276.5
+-646.66 1478
+-800.16 1695.3
+-965.21 1915.1
+-1139.9 2119.2
+-1321.9 2285.6
+-1509 2392
+-1698 2419.1
+-1884.7 2355.4
+-2063.1 2201.1
+-2225 1970.1
+-2359.5 1689.7
+-2453.5 1395.6
+-2493.1 1125
+-2465 906.22
+-2359.6 749.78
+-2172.6 643.1
+-1907.9 551.4
+-1577.4 425.92
+-1200.7 217.33
+-801.97 -109.75
+-405.97 -566.98
+-32.282 -1141.4
+309.96 -1804.4
+626.35 -2526.6
+938.79 -3290.8
+1283 -4095.2
+1701.3 -4944.1
+2230.3 -5827.5
+2887.2 -6702.2
+3656.1 -7486.8
+4480.9 -8077
+5268.3 -8380.8
+5901.3 -8358.3
+6262.4 -8047.1
+6260.5 -7560.1
+5852.9 -7053.1
+5056.9 -6677.3
+3947.8 -6535.1
+2644.7 -6656.8
+1289 -6999.4
+23.533 -7459.3
+-1025.5 -7888.2
+-1759.1 -8109.4
+-2111.7 -7945.7
+-2052.8 -7267.6
+-1588.7 -6057.1
+-762.75 -4459.3
+345.31 -2781
+1621.5 -1412.2
+2925.5 -685.29
+4104.4 -730.61
+5016.6 -1402.5
+5560.6 -2320.6
+5705.4 -3013.7
+5509.3 -3096.9
+5115.9 -2401.9
+4718.6 -1011.9
+4498.5 789.38
+4551.8 2608.3
+4835.5 4028.1
+5161.1 4681.5
+5249.2 4326.3
+4834.6 2929.2
+3782.1 732.91
+2161.7 -1752.3
+241.48 -3869.9
+-1605.6 -5034.5
+-3043.2 -4963.4
+-3896.3 -3814
+-4198.8 -2154
+-4143.7 -761.87
+-3964.5 -325.74
+-3812.2 -1154.2
+-3693 -3013
+-3495.8 -5167.6
+-3089.4 -6640.5
+-2434.5 -6593.5
+-1643.4 -4675.4
+-949.51 -1164.4
+-592.56 3164
+-677.18 7366.7
+-1084.4 10671
+-1500.3 12655
+-1567.1 13232
+-1088.6 12543
+-174.87 10900
+770.19 8799.6
+1233.9 6919.6
+862.27 5975
+-336.49 6422.7
+-1971.9 8175.8
+-3448.8 10543
+-4245.5 12485
+-4141.8 13084
+-3285.6 11949
+-2081.8 9350.2
+-981.53 6046.1
+-281.85 2937.3
+-21.484 770.96
+0 0
+0 0
+-0.025887 0.64601
+-0.35196 5.8466
+-1.3118 16.332
+-3.0959 31.9
+-5.7144 51.561
+-9.0086 73.238
+-12.708 93.911
+-16.516 110.24
+-20.196 119.43
+-23.621 119.95
+-26.781 111.92
+-29.729 96.897
+-32.508 77.336
+-35.075 55.918
+-37.272 35.02
+-38.845 16.471
+-39.515 1.563
+-39.069 -8.829
+-37.431 -14.155
+-34.692 -14.203
+-31.079 -9.173
+-26.888 0.27927
+-22.405 13.103
+-17.839 28.02
+-13.304 43.724
+-8.8336 59.015
+-4.4208 72.812
+-0.067312 84.074
+4.1881 91.717
+8.2605 94.635
+12.03 91.874
+15.358 82.911
+18.108 67.925
+20.151 47.91
+21.381 24.553
+21.724 -0.11429
+21.159 -24.173
+19.738 -46.221
+17.602 -65.577
+14.976 -82.233
+12.141 -96.586
+9.3856 -109.07
+6.9456 -119.87
+4.9576 -128.74
+3.4345 -135.09
+2.2763 -138.23
+1.3119 -137.63
+0.35924 -133.15
+-0.71546 -125.19
+-1.9569 -114.59
+-3.3089 -102.47
+-4.6324 -89.95
+-5.7472 -77.984
+-6.4814 -67.166
+-6.7142 -57.73
+-6.4024 -49.618
+-5.5823 -42.608
+-4.3532 -36.454
+-2.847 -30.978
+-1.1963 -26.103
+0.48983 -21.83
+2.1371 -18.172
+3.7033 -15.101
+5.1652 -12.51
+6.5028 -10.222
+7.6874 -8.0406
+8.6776 -5.8093
+9.4269 -3.4685
+9.8973 -1.0804
+10.076 1.1849
+9.99 3.0991
+9.7064 4.4432
+9.3307 5.0717
+8.9882 4.9553
+8.8038 4.1897
+8.8785 2.9719
+9.2723 1.5527
+9.9937 0.18094
+11 -0.94501
+12.206 -1.7077
+13.498 -2.0777
+14.756 -2.0997
+15.866 -1.8651
+16.739 -1.4788
+17.317 -1.0313
+17.575 -0.5798
+17.523 -0.1428
+17.192 0.29516
+16.634 0.7705
+15.904 1.3248
+15.06 1.9902
+14.153 2.78
+13.221 3.6836
+12.292 4.6686
+11.386 5.6863
+10.509 6.6791
+9.6649 7.5894
+8.8528 8.3666
+8.0713 8.9723
+7.3201 9.3831
+6.6006 9.5914
+5.9163 9.6042
+5.2723 9.4403
+4.6742 9.1273
+4.1279 8.6979
+3.6378 8.1865
+3.2071 7.6265
+2.8369 7.0474
+2.5263 6.4738
+2.2731 5.9241
+2.0734 5.4108
+1.9227 4.9404
+1.816 4.5146
+1.7483 4.1315
+1.7148 3.7864
+1.7108 3.4736
+1.7319 3.187
+1.7742 2.9207
+1.8337 2.6704
+1.9065 2.4327
+1.989 2.2057
+2.0773 1.9885
+2.1679 1.7813
+2.2572 1.5842
+2.3419 1.3977
+2.4191 1.222
+2.4862 1.0568
+2.5411 0.90145
+2.5823 0.75508
+2.6086 0.61671
+2.6198 0.48558
+2.616 0.36137
+2.5978 0.24441
+2.5666 0.13572
+2.5241 0.037011
+2.4724 -0.049547
+2.4139 -0.12154
+2.3511 -0.17664
+2.2868 -0.21298
+2.2234 -0.2294
+2.1633 -0.22568
+2.1087 -0.20265
+2.0613 -0.16212
+2.0224 -0.1067
+1.993 -0.039496
+1.9739 0.036276
+1.9657 0.11775
+1.9689 0.2028
+1.9845 0.29047
+2.0135 0.38116
+2.058 0.4768
+2.1204 0.58083
+2.2042 0.69804
+2.314 0.83431
+2.455 0.99628
+2.6333 1.1911
+2.8561 1.4259
+3.1308 1.708
+3.4658 2.0443
+3.8697 2.4416
+4.3517 2.9067
+4.9218 3.446
+5.5905 4.0664
+6.3694 4.7748
+7.2711 5.5783
+8.3092 6.484
+9.4987 7.4983
+10.855 8.6268
+12.395 9.8727
+14.132 11.236
+16.082 12.711
+18.255 14.287
+20.657 15.946
+23.29 17.668
+26.146 19.425
+29.211 21.2
+32.466 22.985
+35.886 24.804
+39.442 26.726
+43.111 28.888
+46.876 31.513
+50.736 34.928
+54.701 39.573
+58.803 45.995
+63.083 54.838
+67.581 66.798
+72.317 82.576
+77.261 102.81
+82.295 128.02
+87.17 158.5
+91.457 194.36
+94.507 235.44
+95.416 281.44
+93.003 332.05
+85.817 387.1
+72.174 446.87
+50.216 512.34
+18.016 585.39
+-26.292 668.93
+-84.367 766.73
+-157.51 883.1
+-246.5 1022.1
+-351.56 1186.7
+-472.25 1377.1
+-607.54 1590.2
+-755.98 1817.7
+-915.81 2046.3
+-1085.2 2257.6
+-1262.2 2429.7
+-1445 2540.1
+-1631.2 2569.1
+-1817.7 2504.2
+-1999.6 2344.2
+-2169.6 2100.9
+-2317.8 1799.3
+-2431.2 1473.4
+-2495.1 1159
+-2494.1 884.76
+-2415 663.7
+-2249.1 487.62
+-1994.7 327.84
+-1658.3 142.49
+-1255.1 -111.31
+-807.04 -464.51
+-339.34 -927.62
+124.52 -1490.9
+568.53 -2133.6
+989.61 -2837.9
+1400.8 -3599.9
+1831 -4429.5
+2318.9 -5336.5
+2902 -6306.2
+3601.6 -7278.5
+4407.4 -8143.6
+5267.5 -8763.2
+6088.5 -9014.1
+6748.3 -8838.1
+7120.5 -8276
+7104.3 -7467.1
+6651 -6612.7
+5778.9 -5917.6
+4572 -5533.4
+3162.7 -5523.6
+1705.7 -5857.9
+351.72 -6425.9
+-772.17 -7058.6
+-1572.4 -7552.9
+-1989.9 -7704.3
+-1998.4 -7356.9
+-1603.3 -6466.2
+-844.65 -5148.5
+199.67 -3679.7
+1413.3 -2420.6
+2650.3 -1682.8
+3755 -1593
+4591.3 -2025.6
+5075.4 -2646.4
+5202.5 -3050.3
+5057.3 -2924.8
+4800.5 -2159.4
+4628.1 -858.38
+4710 726.78
+5122.1 2289.2
+5796.3 3533.3
+6514.5 4206.8
+6962.4 4127
+6833.7 3228.7
+5951.9 1627.8
+4355.3 -345.31
+2300.3 -2196.1
+172.11 -3412.5
+-1662.3 -3662.6
+-2991.1 -2957.1
+-3817.5 -1690.9
+-4315 -525.68
+-4706.6 -138.96
+-5134.3 -925.63
+-5589.8 -2775.2
+-5939.5 -5038.8
+-6024 -6735.1
+-5772.2 -6936
+-5262.7 -5166.2
+-4694.9 -1622.7
+-4279.8 2900.8
+-4110.8 7340
+-4090.5 10758
+-3970 12622
+-3494.9 12870
+-2583.2 11814
+-1430.1 10002
+-457.72 8100.3
+-118.79 6779.3
+-652.24 6547
+-1929.4 7549.7
+-3485.3 9445.2
+-4723.6 11474
+-5185.3 12746
+-4739 12625
+-3605.1 10995
+-2220.4 8271.1
+-1026.9 5179.4
+-291.23 2455.8
+-22.052 634.7
+0 0
+0 0
+-0.021324 0.6821
+-0.28978 6.1587
+-1.0789 17.132
+-2.5408 33.286
+-4.6726 53.501
+-7.3249 75.581
+-10.252 96.443
+-13.191 112.75
+-15.941 121.77
+-18.416 122.07
+-20.646 113.85
+-22.727 98.717
+-24.741 79.092
+-26.679 57.572
+-28.403 36.43
+-29.662 17.417
+-30.156 1.8084
+-29.628 -9.4629
+-27.944 -15.733
+-25.13 -16.657
+-21.357 -12.33
+-16.884 -3.3561
+-11.978 9.201
+-6.8537 24.006
+-1.6413 39.682
+3.6024 54.971
+8.859 68.773
+14.105 80.06
+19.279 87.781
+24.27 90.869
+28.928 88.399
+33.082 79.861
+36.559 65.43
+39.203 46.086
+40.887 23.49
+41.529 -0.36049
+41.103 -23.597
+39.657 -44.878
+37.32 -63.591
+34.3 -79.787
+30.85 -93.897
+27.234 -106.35
+23.674 -117.29
+20.315 -126.38
+17.204 -132.98
+14.305 -136.3
+11.529 -135.79
+8.7874 -131.31
+6.0308 -123.31
+3.2808 -112.69
+0.63142 -100.62
+-1.7718 -88.293
+-3.7677 -76.645
+-5.2202 -66.255
+-6.0493 -57.306
+-6.2465 -49.68
+-5.8709 -43.1
+-5.0299 -37.285
+-3.8521 -32.041
+-2.4619 -27.3
+-0.96136 -23.083
+0.57565 -19.428
+2.0986 -16.324
+3.5688 -13.673
+4.9473 -11.297
+6.1874 -8.9914
+7.2358 -6.5943
+8.0418 -4.0491
+8.571 -1.433
+8.8201 1.0573
+8.8266 3.1603
+8.669 4.6239
+8.4583 5.2786
+8.3202 5.0863
+8.3736 4.1514
+8.7093 2.6968
+9.3731 1.0109
+10.359 -0.61471
+11.609 -1.942
+13.027 -2.8235
+14.49 -3.2133
+15.871 -3.1551
+17.056 -2.7527
+17.958 -2.1338
+18.522 -1.4169
+18.73 -0.6881
+18.6 0.009233
+18.172 0.67174
+17.504 1.3247
+16.66 2.006
+15.703 2.7508
+14.686 3.579
+13.652 4.49
+12.633 5.4612
+11.645 6.4525
+10.698 7.4136
+9.7947 8.2911
+8.9336 9.0367
+8.113 9.6122
+7.3316 9.9935
+6.5898 10.171
+5.89 10.151
+5.2358 9.9511
+4.6317 9.5979
+4.0819 9.1248
+3.5899 8.567
+3.1576 7.9591
+2.7855 7.332
+2.4722 6.7116
+2.2151 6.1175
+2.0104 5.5628
+1.8537 5.0548
+1.7402 4.5954
+1.665 4.1824
+1.6235 3.8113
+1.6111 3.4761
+1.6236 3.1703
+1.6569 2.8882
+1.707 2.6251
+1.7699 2.3778
+1.8419 2.1442
+1.9193 1.9234
+1.9983 1.7154
+2.0757 1.5203
+2.1482 1.3382
+2.213 1.1692
+2.2677 1.0125
+2.3104 0.86715
+2.3397 0.73186
+2.3547 0.6052
+2.3549 0.48596
+2.3406 0.3734
+2.3126 0.26741
+2.2719 0.16862
+2.2203 0.078374
+2.1598 -0.001448
+2.0928 -0.068654
+2.0219 -0.12106
+1.9497 -0.15681
+1.8787 -0.17469
+1.8114 -0.17431
+1.7499 -0.15625
+1.696 -0.12201
+1.6511 -0.07391
+1.6161 -0.014753
+1.5916 0.052467
+1.5783 0.12499
+1.5766 0.20068
+1.5871 0.27837
+1.6109 0.35812
+1.6495 0.44137
+1.7052 0.53095
+1.7812 0.63095
+1.8815 0.74653
+2.0109 0.88366
+2.1752 1.0488
+2.3807 1.2486
+2.6343 1.4898
+2.9437 1.7791
+3.3167 2.1227
+3.7618 2.527
+4.2879 2.9982
+4.9045 3.5425
+5.6219 4.1661
+6.4513 4.8753
+7.4049 5.6766
+8.4954 6.5757
+9.7363 7.5777
+11.141 8.6858
+12.722 9.9006
+14.49 11.219
+16.453 12.632
+18.614 14.127
+20.969 15.686
+23.51 17.291
+26.219 18.926
+29.074 20.591
+32.046 22.312
+35.106 24.16
+38.231 26.265
+41.405 28.843
+44.627 32.208
+47.918 36.784
+51.318 43.103
+54.888 51.796
+58.694 63.558
+62.79 79.106
+67.193 99.121
+71.84 124.18
+76.547 154.72
+80.959 190.96
+84.5 232.95
+86.337 280.6
+85.351 333.81
+80.138 392.66
+69.04 457.62
+50.204 529.78
+21.688 611.08
+-18.403 704.36
+-71.767 813.2
+-139.73 941.57
+-223.11 1093.1
+-322.1 1270.2
+-436.25 1472.8
+-564.55 1697
+-705.55 1934.5
+-857.58 2171.6
+-1019 2390.2
+-1188.5 2568.4
+-1364.8 2683.7
+-1546.6 2716.2
+-1731.9 2653
+-1917.4 2491.1
+-2097.5 2240.7
+-2263.4 1924
+-2403 1572.4
+-2501.2 1219.8
+-2541.2 894.29
+-2506.7 609.74
+-2384.1 361.22
+-2165.2 125.29
+-1850 -133.27
+-1446.8 -450.31
+-972.55 -850.67
+-450.35 -1341.2
+94.688 -1912.3
+640.75 -2547.9
+1175.2 -3239.5
+1699.5 -3995.6
+2230.7 -4838.6
+2798.3 -5786.2
+3435.2 -6823.1
+4163.1 -7876.1
+4976.8 -8809.7
+5831.9 -9451.8
+6641.4 -9646.1
+7286.2 -9313.1
+7638.7 -8493.1
+7593.3 -7350.4
+7096.8 -6133.2
+6165.8 -5103.8
+4887.9 -4467.4
+3403.1 -4324.2
+1875.2 -4655.9
+460.49 -5341.5
+-714.31 -6186.1
+-1561.8 -6955.7
+-2032.4 -7417.1
+-2108.3 -7389.8
+-1800.5 -6806
+-1150.8 -5755.5
+-236.6 -4484.2
+827.35 -3323.4
+1899.5 -2565.4
+2834.7 -2338.4
+3516.4 -2544.8
+3888.8 -2903.4
+3977.2 -3076.4
+3889.1 -2817.6
+3792.8 -2061.9
+3874.4 -921.31
+4281.3 394.18
+5062.6 1667
+6127.4 2720.6
+7240.1 3415.9
+8069.8 3630.8
+8289.7 3272.5
+7695.8 2334.3
+6294 965.71
+4311.2 -507.65
+2111.4 -1657.7
+52.365 -2114.3
+-1651.4 -1749
+-2989.2 -788.84
+-4109.3 216.4
+-5197.2 594.22
+-6346.7 -142.27
+-7498 -2008.7
+-8471.8 -4437.8
+-9077.1 -6437
+-9225 -6980.7
+-8982.4 -5468.4
+-8532.3 -2019.2
+-8063.2 2553.5
+-7651.4 7075
+-7212.1 10473
+-6558.7 12145
+-5545.9 12086
+-4216.9 10780
+-2855.6 8974.9
+-1892.3 7440.2
+-1697.5 6768.8
+-2372.2 7227.3
+-3659.8 8668.8
+-5035.6 10555
+-5933.8 12128
+-5990.3 12690
+-5180 11890
+-3791.4 9851.8
+-2271.9 7091.9
+-1030.7 4275.9
+-288.7 1967
+-21.715 498.29
+0 0
+0 0
+-0.014929 0.70877
+-0.2037 6.3901
+-0.76317 17.728
+-1.8098 34.325
+-3.3481 54.956
+-5.265 77.33
+-7.3601 98.304
+-9.4081 114.54
+-11.232 123.35
+-12.757 123.42
+-14.026 115.02
+-15.155 99.799
+-16.266 80.169
+-17.401 58.645
+-18.476 37.391
+-19.277 18.064
+-19.514 1.8997
+-18.904 -10.137
+-17.251 -17.289
+-14.501 -19.093
+-10.74 -15.531
+-6.1585 -7.1433
+-0.9833 5.019
+4.5789 19.586
+10.378 35.125
+16.324 50.334
+22.357 64.089
+28.419 75.373
+34.417 83.167
+40.217 86.44
+45.647 84.295
+50.513 76.235
+54.623 62.429
+57.807 43.84
+59.925 22.101
+60.885 -0.83249
+60.653 -23.139
+59.264 -43.535
+56.824 -61.47
+53.506 -77.045
+49.53 -90.721
+45.125 -102.93
+40.496 -113.78
+35.796 -122.9
+31.116 -129.57
+26.49 -132.96
+21.927 -132.51
+17.437 -128.08
+13.065 -120.15
+8.8994 -109.68
+5.0662 -97.855
+1.7086 -85.889
+-1.0444 -74.711
+-3.1063 -64.859
+-4.4501 -56.469
+-5.1111 -49.369
+-5.1751 -43.244
+-4.7573 -37.789
+-3.9788 -32.806
+-2.9482 -28.24
+-1.7516 -24.13
+-0.45261 -20.533
+0.89972 -17.45
+2.2605 -14.784
+3.5804 -12.354
+4.8025 -9.9488
+5.8671 -7.4057
+6.7225 -4.6757
+7.3382 -1.8553
+7.7175 0.83055
+7.9027 3.0874
+7.9739 4.6336
+8.0377 5.2804
+8.2098 4.9847
+8.5944 3.864
+9.265 2.1687
+10.251 0.22545
+11.53 -1.6331
+13.033 -3.1318
+14.657 -4.0956
+16.275 -4.4659
+17.76 -4.2878
+19.003 -3.68
+19.919 -2.7948
+20.462 -1.7799
+20.621 -0.75057
+20.419 0.22455
+19.903 1.1238
+19.137 1.9618
+18.188 2.774
+17.123 3.5987
+15.999 4.464
+14.859 5.3794
+13.736 6.3325
+12.649 7.2928
+11.607 8.2166
+10.615 9.0554
+9.6725 9.7631
+8.7772 10.302
+7.9287 10.647
+7.1275 10.789
+6.3756 10.73
+5.6759 10.489
+5.0321 10.092
+4.4474 9.5716
+3.9242 8.9651
+3.4634 8.3077
+3.0648 7.6317
+2.7265 6.964
+2.4455 6.3251
+2.2176 5.7291
+2.0386 5.1833
+1.9035 4.6899
+1.8075 4.2469
+1.7459 3.8495
+1.714 3.4915
+1.7074 3.1664
+1.7219 2.8684
+1.7532 2.5927
+1.7974 2.336
+1.8504 2.096
+1.9084 1.8719
+1.968 1.6634
+2.0257 1.4704
+2.0784 1.2929
+2.1238 1.1304
+2.1594 0.98192
+2.1836 0.84618
+2.1951 0.72141
+2.1933 0.6058
+2.1777 0.49777
+2.1486 0.39615
+2.1066 0.30046
+2.053 0.21095
+1.9893 0.12862
+1.9174 0.055056
+1.8396 -0.007771
+1.7584 -0.057825
+1.6763 -0.093299
+1.5959 -0.11291
+1.5194 -0.11613
+1.4491 -0.10328
+1.3865 -0.075574
+1.3332 -0.034984
+1.2899 0.015975
+1.2572 0.074555
+1.2357 0.13813
+1.2255 0.20457
+1.2272 0.27255
+1.2416 0.34183
+1.2699 0.41338
+1.3141 0.48947
+1.377 0.57355
+1.4621 0.67011
+1.5738 0.78449
+1.717 0.92255
+1.8975 1.0905
+2.1216 1.2946
+2.396 1.541
+2.7276 1.836
+3.1241 2.1854
+3.5933 2.595
+4.1438 3.0705
+4.7845 3.6178
+5.5252 4.2425
+6.3763 4.9504
+7.3488 5.7469
+8.4537 6.6369
+9.702 7.6239
+11.104 8.7096
+12.666 9.8924
+14.393 11.167
+16.286 12.524
+18.337 13.95
+20.535 15.433
+22.859 16.963
+25.283 18.544
+27.778 20.206
+30.313 22.017
+32.86 24.106
+35.405 26.678
+37.947 30.033
+40.509 34.575
+43.139 40.819
+45.907 49.378
+48.896 60.942
+52.187 76.236
+55.829 95.972
+59.805 120.8
+63.984 151.24
+68.076 187.66
+71.574 230.31
+73.717 279.29
+73.456 334.75
+69.452 396.98
+60.096 466.67
+43.576 545.05
+17.976 634.13
+-18.588 736.66
+-67.802 856.05
+-130.99 995.95
+-208.94 1159.6
+-301.85 1348.7
+-409.25 1562.9
+-530.14 1797.8
+-663.13 2044.7
+-806.73 2290.2
+-959.65 2515.9
+-1121 2700.6
+-1290.4 2822
+-1467.6 2860.3
+-1652.3 2801.9
+-1842.7 2642.9
+-2035.2 2391.4
+-2222.7 2067
+-2394.4 1698
+-2535.9 1315.6
+-2629.5 945.89
+-2656.1 602.45
+-2597.9 282.03
+-2440.4 -34.902
+-2175.6 -377.75
+-1803.9 -775.28
+-1334.9 -1245.1
+-786.72 -1788.2
+-183.33 -2391.6
+449.68 -3040.3
+1090.9 -3731.2
+1729 -4482.6
+2366 -5328.8
+3017.6 -6297.2
+3706.7 -7375.7
+4451.4 -8482.9
+5250.1 -9462.9
+6067.2 -10113
+6827.4 -10245
+7421.9 -9754.7
+7728.9 -8679.1
+7643.3 -7203.5
+7108.5 -5621
+6136.6 -4252.2
+4812.6 -3358.6
+3277.7 -3079.5
+1698.9 -3410.4
+235.92 -4217.9
+-984.26 -5277.8
+-1878.7 -6321
+-2406.4 -7083
+-2559.9 -7358.4
+-2359.8 -7057.4
+-1854.5 -6246.6
+-1124 -5144.7
+-279.38 -4057.7
+549.26 -3264.6
+1237.8 -2902.5
+1700.1 -2908.7
+1915.1 -3058
+1939 -3076.5
+1896.7 -2772.3
+1953.6 -2110.4
+2275.2 -1196.3
+2977.9 -192.49
+4082.9 769.79
+5483.4 1623.9
+6941.9 2334.3
+8134 2836.8
+8736.2 3015.1
+8534.6 2750.7
+7508 2023.6
+5839.7 998.46
+3842.2 21.109
+1823.1 -505.53
+-39.221 -326.43
+-1745.2 480.06
+-3420.5 1452.7
+-5194.1 1901.8
+-7080.1 1235.1
+-8935.6 -687.55
+-10518 -3364.2
+-11607 -5766.4
+-12115 -6752.4
+-12119 -5592.3
+-11804 -2339
+-11334 2160.6
+-10757 6623.5
+-9984.6 9869.9
+-8880.1 11274
+-7406 10925
+-5730.2 9486.2
+-4217.4 7858.1
+-3286.8 6834.7
+-3203.4 6861.7
+-3921 7941.4
+-5072.5 9672.3
+-6118.2 11398
+-6576.6 12435
+-6216.2 12311
+-5120.5 10933
+-3615 8611.2
+-2109.8 5909
+-939.64 3408
+-260.07 1509.1
+-19.44 372.24
+0 0
+0 0
+-0.005529 0.72177
+-0.07846 6.506
+-0.31216 18.041
+-0.79247 34.9
+-1.5644 55.805
+-2.5956 78.388
+-3.7657 99.442
+-4.8973 115.6
+-5.82 124.21
+-6.437 124.03
+-6.7619 115.42
+-6.9061 100.09
+-7.019 80.47
+-7.2085 59.007
+-7.4736 37.769
+-7.6782 18.307
+-7.5764 1.786
+-6.8788 -10.837
+-5.3322 -18.749
+-2.7848 -21.388
+0.7868 -18.631
+5.2908 -10.936
+10.564 0.68616
+16.422 14.862
+22.699 30.132
+29.264 45.162
+36.005 58.812
+42.815 70.071
+49.563 77.942
+56.087 81.423
+62.198 79.64
+67.689 72.104
+72.361 58.981
+76.034 41.21
+78.561 20.396
+79.844 -1.5429
+79.836 -22.833
+78.552 -42.242
+76.07 -59.27
+72.523 -74.064
+68.087 -87.115
+62.955 -98.865
+57.316 -109.4
+51.333 -118.33
+45.141 -124.89
+38.853 -128.26
+32.577 -127.84
+26.43 -123.52
+20.551 -115.8
+15.094 -105.65
+10.215 -94.272
+6.0465 -82.851
+2.6762 -72.287
+0.1298 -63.071
+-1.629 -55.288
+-2.6877 -48.727
+-3.1643 -43.049
+-3.1833 -37.942
+-2.8565 -33.22
+-2.2717 -28.845
+-1.491 -24.876
+-0.55806 -21.383
+0.49066 -18.372
+1.6157 -15.745
+2.7685 -13.311
+3.8919 -10.856
+4.9275 -8.2151
+5.8272 -5.3515
+6.5648 -2.3814
+7.1458 0.44301
+7.6105 2.7982
+8.0297 4.3781
+8.4938 4.9794
+9.097 4.559
+9.9193 3.2488
+11.01 1.3266
+12.379 -0.84573
+13.99 -2.8983
+15.766 -4.5231
+17.601 -5.5228
+19.371 -5.8286
+20.956 -5.49
+22.253 -4.6419
+23.187 -3.4614
+23.719 -2.1253
+23.843 -0.77717
+23.589 0.48998
+23.005 1.637
+22.159 2.6692
+21.118 3.6196
+19.951 4.5307
+18.714 5.4389
+17.453 6.3634
+16.2 7.3024
+14.976 8.2341
+13.793 9.1218
+12.658 9.9214
+11.572 10.589
+10.537 11.088
+9.5537 11.392
+8.6247 11.491
+7.7528 11.388
+6.9417 11.099
+6.1951 10.651
+5.5157 10.079
+4.9055 9.4188
+4.3648 8.7075
+3.8924 7.9786
+3.486 7.2601
+3.142 6.5734
+2.856 5.9331
+2.623 5.3469
+2.438 4.8172
+2.2957 4.3419
+2.191 3.9163
+2.1188 3.534
+2.0742 3.1884
+2.0524 2.8734
+2.049 2.5844
+2.0594 2.3177
+2.0794 2.0711
+2.1051 1.8434
+2.1327 1.6341
+2.159 1.443
+2.1811 1.2696
+2.1965 1.113
+2.2032 0.97213
+2.1997 0.84509
+2.185 0.72983
+2.1583 0.62419
+2.1195 0.52622
+2.0688 0.4344
+2.0068 0.34792
+1.9345 0.26668
+1.8533 0.19137
+1.7651 0.12329
+1.672 0.064194
+1.5761 0.015964
+1.48 -0.019651
+1.386 -0.041326
+1.2963 -0.048378
+1.2129 -0.040905
+1.1375 -0.01982
+1.0712 0.013231
+1.0149 0.056043
+0.96903 0.10612
+0.93389 0.161
+0.90964 0.21856
+0.89655 0.27737
+0.89516 0.33691
+0.90649 0.39775
+0.93212 0.46164
+0.97435 0.53145
+1.0362 0.61109
+1.1213 0.70529
+1.2341 0.81941
+1.3796 0.95919
+1.563 1.1305
+1.7903 1.3394
+2.0676 1.5915
+2.4013 1.8926
+2.7984 2.2481
+3.2661 2.6634
+3.8122 3.1439
+4.4448 3.6947
+5.1729 4.3214
+6.0051 5.0291
+6.9506 5.8227
+8.0175 6.7065
+9.2128 7.683
+10.541 8.7529
+12.004 9.9138
+13.597 11.16
+15.312 12.484
+17.132 13.878
+19.034 15.338
+20.99 16.874
+22.967 18.515
+24.93 20.333
+26.849 22.45
+28.705 25.062
+30.495 28.454
+32.24 33.011
+33.986 39.228
+35.802 47.699
+37.779 59.101
+40.008 74.163
+42.556 93.625
+45.431 118.19
+48.541 148.47
+51.639 184.99
+54.272 228.14
+55.739 278.25
+55.053 335.7
+50.938 401.02
+41.842 475.08
+26.004 559.3
+1.5511 655.73
+-33.362 767.08
+-80.39 896.56
+-140.82 1047.5
+-215.43 1222.7
+-304.38 1423.4
+-407.2 1648.6
+-522.91 1893.7
+-650.19 2149.7
+-787.76 2403.2
+-934.66 2636.2
+-1090.6 2828
+-1255.9 2956.7
+-1431.6 3002.9
+-1618.7 2953
+-1817.5 2801.9
+-2026.1 2556
+-2239.8 2232.1
+-2449.6 1855.4
+-2642.1 1453.3
+-2799.8 1049.1
+-2901.9 654.61
+-2927 266.69
+-2855 -131.99
+-2670.2 -566.3
+-2364.2 -1058.6
+-1937.9 -1618.8
+-1401.9 -2240.2
+-776.23 -2903.5
+-87.412 -3590.3
+636.65 -4298.7
+1372.4 -5052.9
+2106 -5896.6
+2836.4 -6867.5
+3572.2 -7959.6
+4324.2 -9089.4
+5091.2 -10087
+5847 -10725
+6530.8 -10786
+7049.5 -10142
+7293.2 -8820.5
+7162.4 -7024
+6597.7 -5085
+5603.9 -3379.5
+4257.1 -2225.9
+2691.9 -1805.4
+1072.8 -2129.6
+-439.49 -3054.6
+-1716.4 -4326.1
+-2675.3 -5637.4
+-3279.5 -6689.1
+-3530 -7248.4
+-3458.1 -7203
+-3122.4 -6597.5
+-2608.4 -5628.1
+-2024.2 -4582.7
+-1485.2 -3736
+-1088.4 -3243.1
+-884 -3082.6
+-855.77 -3085.2
+-919.55 -3032.3
+-940.81 -2771.2
+-765.83 -2279.4
+-258.36 -1643.8
+664.05 -977.02
+1997.6 -332.54
+3630 317.27
+5339.7 1025.4
+6831.3 1777.8
+7809.2 2439.9
+8070.2 2796.2
+7575.7 2679.5
+6459.8 2115.4
+4959.8 1382.5
+3297.8 919.23
+1577.6 1093.1
+-241.38 1944.6
+-2273.7 3061.6
+-4583.7 3699.7
+-7085.2 3139.7
+-9532.2 1121.2
+-11611 -1890.2
+-13079 -4791.8
+-13871 -6297.2
+-14100 -5545.3
+-13956 -2544.6
+-13576 1796.6
+-12957 6080.1
+-11983 9047.4
+-10557 10102
+-8741.1 9474.8
+-6819.3 8005.1
+-5218.1 6692.7
+-4316.3 6271.9
+-4250.4 6977.6
+-4831.6 8547.8
+-5626.4 10395
+-6155.2 11844
+-6095 12353
+-5385.3 11674
+-4202.2 9909.3
+-2845.4 7467.1
+-1611.5 4899.9
+-703.71 2700.3
+-192.55 1145.1
+-14.315 273.23
+0 0
+0 0
+0.009337 0.71351
+0.11791 6.4445
+0.38423 17.929
+0.74411 34.81
+1.0536 55.828
+1.1873 78.574
+1.1249 99.752
+0.97263 115.92
+0.91164 124.39
+1.1075 123.96
+1.6291 115.1
+2.4172 99.609
+3.3156 79.951
+4.1482 58.574
+4.8071 37.462
+5.3149 18.054
+5.8375 1.4128
+6.6451 -11.562
+8.0393 -20.054
+10.275 -23.437
+13.506 -21.495
+17.76 -14.591
+22.964 -3.6648
+28.971 9.9465
+35.609 24.79
+42.701 39.522
+50.079 52.997
+57.577 64.202
+65.019 72.154
+72.21 75.869
+78.944 74.486
+85.007 67.519
+90.194 55.125
+94.32 38.224
+97.237 18.391
+98.837 -2.4923
+99.06 -22.692
+97.901 -41.021
+95.404 -57.023
+91.665 -70.884
+86.818 -83.122
+81.019 -94.197
+74.441 -104.2
+67.259 -112.72
+59.653 -119.03
+51.813 -122.27
+43.944 -121.87
+36.268 -117.74
+29.015 -110.37
+22.405 -100.72
+16.619 -89.986
+11.777 -79.291
+7.9193 -69.481
+5.005 -60.984
+2.9279 -53.839
+1.5418 -47.805
+0.6909 -42.537
+0.2375 -37.737
+0.078346 -33.245
+0.14907 -29.051
+0.41696 -25.234
+0.86699 -21.878
+1.4866 -18.989
+2.2542 -16.459
+3.135 -14.089
+4.0832 -11.656
+5.0511 -8.9979
+5.999 -6.0861
+6.906 -3.0548
+7.7759 -0.17865
+8.6383 2.1967
+9.5439 3.7477
+10.555 4.2628
+11.732 3.7018
+13.121 2.211
+14.743 0.092386
+16.585 -2.2625
+18.595 -4.4533
+20.695 -6.1461
+22.779 -7.126
+24.734 -7.3183
+26.45 -6.7784
+27.836 -5.6575
+28.825 -4.1564
+29.386 -2.4791
+29.518 -0.79565
+29.25 0.77856
+28.633 2.1884
+27.731 3.4304
+26.61 4.536
+25.335 5.5514
+23.963 6.5206
+22.538 7.4723
+21.096 8.4139
+19.658 9.3315
+18.243 10.195
+16.861 10.963
+15.519 11.595
+14.224 12.054
+12.983 12.314
+11.802 12.365
+10.687 12.21
+9.6453 11.864
+8.6814 11.356
+7.7993 10.721
+7.0009 9.9972
+6.2865 9.2222
+5.6546 8.4312
+5.102 7.6531
+4.6244 6.9104
+4.2164 6.2182
+3.8724 5.5846
+3.5863 5.0122
+3.3518 4.4989
+3.1627 4.04
+3.013 3.6289
+2.8967 3.259
+2.8083 2.9241
+2.7421 2.6192
+2.6931 2.3406
+2.6564 2.0857
+2.6276 1.8531
+2.6027 1.6419
+2.5784 1.4514
+2.5518 1.2808
+2.5204 1.129
+2.4823 0.99418
+2.4363 0.87429
+2.3812 0.7669
+2.3166 0.66952
+2.2422 0.57989
+2.1582 0.49621
+2.065 0.41734
+1.9637 0.34292
+1.8553 0.27333
+1.7414 0.20963
+1.6238 0.15333
+1.5047 0.10618
+1.3861 0.069865
+1.2702 0.045732
+1.159 0.034599
+1.0542 0.036588
+0.95741 0.051073
+0.86956 0.076722
+0.79134 0.11164
+0.72308 0.15359
+0.66487 0.20028
+0.61667 0.24963
+0.57853 0.30011
+0.55072 0.35098
+0.53391 0.40245
+0.52926 0.45583
+0.53855 0.51348
+0.56418 0.57878
+0.60916 0.65597
+0.67708 0.74993
+0.772 0.86603
+0.89839 1.0098
+1.0611 1.187
+1.2652 1.4032
+1.516 1.6636
+1.8193 1.9737
+2.1811 2.3384
+2.6077 2.7628
+3.1058 3.2519
+3.6822 3.8109
+4.3439 4.445
+5.0973 5.1595
+5.948 5.9593
+6.9 6.8485
+7.9548 7.8298
+9.11 8.9041
+10.359 10.07
+11.688 11.324
+13.078 12.665
+14.503 14.093
+15.928 15.624
+17.317 17.29
+18.631 19.163
+19.833 21.361
+20.896 24.071
+21.809 27.565
+22.582 32.209
+23.249 38.476
+23.871 46.942
+24.524 58.271
+25.291 73.193
+26.235 92.47
+27.364 116.85
+28.592 147.05
+29.685 183.7
+30.213 227.38
+29.501 278.62
+26.595 338.02
+20.252 406.34
+8.9545 484.68
+-9.0266 574.6
+-35.536 678.21
+-72.395 798.19
+-121.24 937.55
+-183.33 1099.3
+-259.42 1285.7
+-349.67 1497.8
+-453.61 1733.8
+-570.27 1988.8
+-698.45 2253.8
+-836.99 2515.3
+-985.24 2755.9
+-1143.3 2955.4
+-1312.4 3092.9
+-1494.5 3149.4
+-1691.8 3111.3
+-1906.4 2973.2
+-2138.6 2739.5
+-2385.5 2424.5
+-2640.6 2049.9
+-2892 1639.3
+-3123 1212
+-3312.7 777.01
+-3437.2 329.56
+-3471.9 -147.15
+-3394.7 -675.14
+-3188.6 -1271.5
+-2845.1 -1938.9
+-2366.1 -2661.9
+-1764.9 -3412.5
+-1065.6 -4165.1
+-299.36 -4914.2
+500.64 -5684.9
+1305.8 -6526.8
+2097.4 -7486.7
+2867.8 -8567
+3616.6 -9687.3
+4340.6 -10671
+5021 -11274
+5612.8 -11254
+6041.9 -10461
+6215 -8911
+6041.2 -6814.6
+5460.3 -4536.9
+4466.7 -2504
+3121.7 -1088.4
+1545.5 -515.16
+-106.38 -816.84
+-1675.5 -1843.6
+-3029.9 -3313.7
+-4081.9 -4882.8
+-4792.2 -6213.7
+-5165.1 -7041.6
+-5240.1 -7228.2
+-5086.9 -6795.9
+-4799 -5922.2
+-4483.2 -4885.2
+-4240.4 -3966.3
+-4139.9 -3348.7
+-4196.2 -3057.6
+-4358.9 -2976.2
+-4522.4 -2929.9
+-4550.9 -2788.2
+-4310.5 -2524.7
+-3697.9 -2198.4
+-2663.2 -1873.9
+-1228.2 -1540.6
+500.96 -1096.3
+2334.4 -418.31
+4024.9 519.47
+5325.8 1567
+6065.3 2430.2
+6201.7 2823.3
+5823.1 2665.9
+5080.1 2197
+4084.4 1902.4
+2833.6 2250.9
+1218.7 3366.5
+-880.69 4834.5
+-3467.1 5806.1
+-6347.5 5407.4
+-9166.1 3264.5
+-11541 -155.05
+-13225 -3624.8
+-14196 -5681.4
+-14617 -5336
+-14688 -2589
+-14496 1549
+-13963 5552.3
+-12925 8116.5
+-11309 8736
+-9273.7 7831.6
+-7207 6412.3
+-5569.7 5510.2
+-4662.5 5710.4
+-4468.8 6987.8
+-4672.4 8850.2
+-4840.9 10632
+-4653.6 11755
+-4035.2 11876
+-3130.3 10921
+-2169.1 9067.8
+-1333.9 6701.3
+-708.05 4306.6
+-299.31 2313.4
+-81.163 952.16
+-6.0405 221.19
+0 0
+0 0
+0.034607 0.66965
+0.44927 6.089
+1.5442 17.13
+3.2574 33.673
+5.2371 54.617
+7.0622 77.546
+8.4648 99.023
+9.4367 115.42
+10.192 123.94
+11.03 123.36
+12.184 114.22
+13.718 98.455
+15.513 78.661
+17.34 57.33
+18.966 36.408
+20.27 17.228
+21.3 0.71681
+22.276 -12.342
+23.529 -21.187
+25.412 -25.18
+28.214 -24.031
+32.103 -17.998
+37.109 -7.922
+43.143 4.9408
+50.034 19.183
+57.569 33.481
+65.521 46.692
+73.661 57.804
+81.761 65.836
+89.593 69.806
+96.929 68.857
+103.54 62.5
+109.23 50.879
+113.8 34.895
+117.1 16.093
+119.01 -3.6766
+119.46 -22.716
+118.43 -39.877
+115.92 -54.74
+112.01 -67.524
+106.79 -78.777
+100.38 -88.981
+92.952 -98.241
+84.683 -106.18
+75.796 -112.07
+66.549 -115.1
+57.236 -114.71
+48.175 -110.84
+39.683 -103.95
+32.041 -94.992
+25.456 -85.089
+20.037 -75.295
+15.777 -66.368
+12.57 -58.667
+10.239 -52.177
+8.5748 -46.643
+7.3784 -41.729
+6.4943 -37.171
+5.8246 -32.853
+5.3273 -28.805
+5.0022 -25.133
+4.8699 -21.933
+4.9514 -19.208
+5.256 -16.84
+5.7758 -14.616
+6.489 -12.305
+7.368 -9.7414
+8.388 -6.9032
+9.5341 -3.9352
+10.805 -1.1258
+12.211 1.1667
+13.773 2.6107
+15.512 2.9924
+17.446 2.2769
+19.579 0.62324
+21.895 -1.6487
+24.357 -4.1259
+26.902 -6.3867
+29.447 -8.0793
+31.895 -8.9776
+34.145 -9.0043
+36.1 -8.2213
+37.68 -6.7949
+38.828 -4.947
+39.516 -2.9056
+39.743 -0.86428
+39.537 1.0417
+38.941 2.7427
+38.012 4.2273
+36.812 5.5247
+35.4 6.6841
+33.83 7.7554
+32.149 8.7747
+30.392 9.7567
+28.589 10.694
+26.766 11.56
+24.941 12.318
+23.133 12.928
+21.359 13.353
+19.635 13.571
+17.976 13.568
+16.397 13.349
+14.909 12.933
+13.521 12.348
+12.242 11.632
+11.073 10.825
+10.017 9.967
+9.0717 9.0947
+8.2325 8.2387
+7.4943 7.4225
+6.8502 6.662
+6.2926 5.966
+5.8133 5.3372
+5.4041 4.7738
+5.0566 4.2707
+4.7628 3.8216
+4.5147 3.4194
+4.3049 3.0578
+4.1261 2.7314
+3.972 2.436
+3.8364 2.1688
+3.7141 1.9278
+3.6006 1.7115
+3.4918 1.5189
+3.3846 1.3485
+3.2765 1.1987
+3.1656 1.0674
+3.0504 0.95206
+2.9298 0.8499
+2.8033 0.75816
+2.6706 0.67433
+2.5316 0.59635
+2.3867 0.52284
+2.2363 0.45317
+2.0816 0.38748
+1.9235 0.32658
+1.7637 0.27177
+1.6038 0.22467
+1.4456 0.18686
+1.2909 0.15973
+1.1414 0.14421
+0.99859 0.14062
+0.86359 0.14861
+0.7372 0.16715
+0.61986 0.19465
+0.51165 0.22911
+0.41241 0.26842
+0.32186 0.31056
+0.23975 0.35396
+0.16599 0.39768
+0.10083 0.44165
+0.044948 0.48677
+-0.000501 0.535
+-0.033818 0.58927
+-0.052798 0.65338
+-0.054773 0.73185
+-0.036676 0.82972
+0.004888 0.95231
+0.073586 1.105
+0.17331 1.2933
+0.30818 1.5223
+0.4825 1.7971
+0.70083 2.1226
+0.96787 2.5035
+1.2885 2.945
+1.6675 3.452
+2.1094 4.0301
+2.6181 4.6852
+3.1961 5.4231
+3.8442 6.2496
+4.5602 7.17
+5.3378 8.1883
+6.1661 9.3073
+7.0275 10.529
+7.8978 11.857
+8.7452 13.299
+9.5307 14.873
+10.21 16.619
+10.735 18.607
+11.06 20.955
+11.143 23.842
+10.958 27.528
+10.492 32.364
+9.7553 38.806
+8.7784 47.411
+7.6059 58.833
+6.2835 73.804
+4.8353 93.108
+3.2314 117.55
+1.3457 147.92
+-1.0921 184.98
+-4.5477 229.47
+-9.7293 282.13
+-17.623 343.79
+-29.503 415.44
+-46.92 498.38
+-71.638 594.34
+-105.54 705.5
+-150.48 834.47
+-208.13 984.09
+-279.79 1157
+-366.25 1355.2
+-467.67 1579
+-583.63 1826.2
+-713.17 2091.6
+-855.14 2366
+-1008.5 2636.2
+-1172.7 2885.2
+-1348.2 3093.7
+-1536.6 3241.4
+-1740.6 3310.5
+-1963.5 3287.5
+-2208.6 3166.6
+-2477.8 2951
+-2770.4 2652.6
+-3081.8 2289.5
+-3402.5 1881.2
+-3717.2 1442.7
+-4005.6 979.09
+-4243.1 482.75
+-4402.6 -64.268
+-4456.8 -682.97
+-4382 -1386.9
+-4160.6 -2172.3
+-3785.1 -3015
+-3260.6 -3877.1
+-2605.5 -4722.7
+-1850.6 -5538
+-1034.6 -6344.1
+-197.77 -7192
+624.93 -8135
+1409.2 -9184.6
+2141.5 -10268
+2813.7 -11208
+3412.4 -11754
+3907.2 -11645
+4244.3 -10710
+4349.6 -8952.3
+4144.2 -6584.4
+3567.7 -3993.9
+2602.8 -1648
+1290.6 30.942
+-270.02 773.5
+-1939.8 520.96
+-3566.8 -578.63
+-5015.5 -2223.1
+-6188.2 -4033.1
+-7035.4 -5632.2
+-7556.2 -6718.7
+-7793 -7122.6
+-7823.6 -6840.8
+-7749.6 -6034.4
+-7678.9 -4979.4
+-7700.6 -3974.7
+-7860.1 -3240.9
+-8141.7 -2853.4
+-8469.4 -2743.3
+-8725.8 -2766.5
+-8783 -2798.5
+-8532.1 -2795.6
+-7902.3 -2783.9
+-6871 -2786.4
+-5468.7 -2744.4
+-3785.1 -2502.6
+-1967.9 -1888.2
+-204.55 -846.8
+1321.5 457.63
+2486.8 1668.6
+3264.5 2412.7
+3709.2 2543
+3887.8 2296.4
+3791.5 2227.9
+3292.6 2902.5
+2191.5 4491.3
+344.15 6519.8
+-2201.1 7977.7
+-5150.3 7804.9
+-8046.4 5524.1
+-10455 1650.5
+-12148 -2410.5
+-13170 -4988.1
+-13738 -4980.6
+-14053 -2432.1
+-14126 1491.9
+-13771 5125.2
+-12760 7160.6
+-11042 7256.8
+-8875.3 6073.5
+-6743.3 4771.6
+-5107.7 4330.3
+-4145.2 5090.4
+-3656.2 6737.1
+-3217.5 8625.5
+-2477.3 10164
+-1389 11010
+-220.15 11045
+654.25 10260
+1011.4 8724.2
+901.48 6643.7
+565.41 4392.1
+247.56 2408.6
+64.57 1001.7
+4.5645 233.18
+0 0
+0 0
+0.080244 0.5623
+1.0434 5.2141
+3.5986 15.137
+7.6368 30.776
+12.385 51.411
+16.875 74.668
+20.407 96.858
+22.793 113.99
+24.318 122.97
+25.52 122.44
+26.924 113.04
+28.828 96.881
+31.231 76.773
+33.883 55.356
+36.43 34.608
+38.578 15.773
+40.221 -0.38617
+41.489 -13.258
+42.709 -22.208
+44.311 -26.642
+46.715 -26.227
+50.228 -21.12
+54.999 -12.031
+61.006 -0.09555
+68.097 13.366
+76.031 27.081
+84.528 39.927
+93.298 50.892
+102.06 58.988
+110.55 63.228
+118.51 62.744
+125.71 57.036
+131.92 46.232
+136.96 31.211
+140.65 13.494
+142.89 -5.1004
+143.58 -22.907
+142.67 -38.811
+140.17 -52.425
+136.1 -64.002
+130.54 -74.115
+123.6 -83.275
+115.41 -91.619
+106.18 -98.81
+96.163 -104.16
+85.664 -106.89
+75.055 -106.5
+64.735 -102.92
+55.1 -96.636
+46.489 -88.52
+39.138 -79.621
+33.151 -70.886
+28.486 -62.966
+24.979 -56.13
+22.384 -50.312
+20.43 -45.245
+18.873 -40.621
+17.534 -36.229
+16.315 -32.014
+15.193 -28.059
+14.2 -24.509
+13.397 -21.473
+12.849 -18.953
+12.605 -16.818
+12.699 -14.841
+13.144 -12.777
+13.945 -10.456
+15.096 -7.8516
+16.59 -5.1107
+18.418 -2.5224
+20.566 -0.44493
+23.015 0.79216
+25.735 0.97991
+28.692 0.090368
+31.839 -1.7089
+35.122 -4.0878
+38.474 -6.6224
+41.821 -8.8803
+45.077 -10.501
+48.152 -11.253
+50.955 -11.058
+53.402 -9.986
+55.418 -8.2146
+56.952 -5.9831
+57.97 -3.5392
+58.467 -1.0964
+58.456 1.1926
+57.97 3.245
+57.052 5.0409
+55.755 6.6059
+54.13 7.9895
+52.228 9.2445
+50.098 10.411
+47.783 11.507
+45.324 12.529
+42.76 13.454
+40.128 14.244
+37.466 14.861
+34.808 15.271
+32.189 15.448
+29.64 15.385
+27.191 15.087
+24.864 14.576
+22.678 13.885
+20.647 13.054
+18.778 12.128
+17.075 11.15
+15.535 10.16
+14.155 9.1898
+12.925 8.266
+11.837 7.4054
+10.879 6.6176
+10.039 5.9058
+9.3045 5.2683
+8.6633 4.7002
+8.1033 4.1947
+7.6128 3.7444
+7.181 3.3425
+6.7979 2.983
+6.4541 2.6612
+6.1417 2.3733
+5.8535 2.1166
+5.5837 1.889
+5.3271 1.6885
+5.0799 1.5131
+4.839 1.3605
+4.6019 1.228
+4.3669 1.1128
+4.1327 1.0116
+3.8983 0.92138
+3.6631 0.83948
+3.4267 0.76359
+3.1891 0.69209
+2.9503 0.62416
+2.711 0.55969
+2.4716 0.49928
+2.2333 0.44405
+1.9971 0.39543
+1.7644 0.35497
+1.5365 0.32403
+1.3145 0.30365
+1.0995 0.29433
+0.89231 0.29598
+0.69322 0.30784
+0.5023 0.32861
+0.31927 0.35656
+0.1436 0.38972
+-0.025394 0.4262
+-0.18838 0.46436
+-0.34593 0.50315
+-0.49835 0.54225
+-0.64563 0.58228
+-0.78738 0.62484
+-0.92276 0.67251
+-1.0506 0.72877
+-1.1693 0.79784
+-1.277 0.88452
+-1.3717 0.99392
+-1.4511 1.1313
+-1.5128 1.302
+-1.5542 1.511
+-1.5728 1.7633
+-1.5657 2.0637
+-1.5304 2.417
+-1.4641 2.8283
+-1.3647 3.3028
+-1.2304 3.8466
+-1.0605 4.4664
+-0.85619 5.1695
+-0.62072 5.9636
+-0.36078 6.8567
+-0.087384 7.8563
+0.18294 8.97
+0.42696 10.205
+0.61376 11.571
+0.70397 13.083
+0.64979 14.765
+0.39574 16.661
+-0.11944 18.847
+-0.95973 21.439
+-2.1878 24.615
+-3.8608 28.627
+-6.0257 33.816
+-8.7178 40.625
+-11.962 49.603
+-15.778 61.399
+-20.197 76.754
+-25.282 96.481
+-31.162 121.44
+-38.07 152.51
+-46.395 190.59
+-56.73 236.59
+-69.921 291.46
+-87.098 356.25
+-109.69 432.2
+-139.41 520.83
+-178.19 624
+-228.08 743.98
+-291.11 883.34
+-369.12 1044.7
+-463.56 1230.5
+-575.35 1442
+-704.75 1679.2
+-851.4 1939.4
+-1014.4 2217
+-1192.5 2502.6
+-1384.7 2783.2
+-1590.3 3042.4
+-1809.9 3261.5
+-2044.9 3421.6
+-2298.3 3505.4
+-2573.8 3500.3
+-2875.3 3400.2
+-3205.9 3207.4
+-3566.2 2931.4
+-3953.5 2587.3
+-4360.1 2190.4
+-4772.9 1751.4
+-5173.2 1270.8
+-5537.1 737.16
+-5836.5 130.09
+-6041.8 -572.1
+-6124.1 -1381.1
+-6058.9 -2288.6
+-5829.7 -3262.7
+-5432.6 -4254.7
+-4878.3 -5217
+-4193.4 -6123.8
+-3417.9 -6987.7
+-2599.4 -7855.9
+-1785.4 -8784.6
+-1015.4 -9793.4
+-316.33 -10819
+296.65 -11694
+812.67 -12163
+1214.1 -11959
+1466.7 -10893
+1517 -8953.9
+1300 -6349.5
+757.38 -3479.5
+-140.44 -841.56
+-1375.9 1099.5
+-2878 2031.1
+-4531.2 1863.2
+-6195.9 732.39
+-7735.3 -1048.9
+-9039.3 -3073.3
+-10041 -4926.5
+-10727 -6265.5
+-11132 -6881.7
+-11337 -6741.2
+-11448 -5988.3
+-11575 -4901.9
+-11800 -3807.3
+-12149 -2970.2
+-12588 -2517.2
+-13026 -2420.8
+-13346 -2554.8
+-13438 -2787
+-13219 -3047.5
+-12648 -3330
+-11721 -3625.5
+-10468 -3844
+-8954.2 -3796
+-7284.2 -3276.4
+-5584.1 -2213.8
+-3969.6 -788.8
+-2504 591.43
+-1180.8 1492.9
+42.343 1742.1
+1165.4 1617.3
+2066.7 1773.4
+2489.8 2874.4
+2133.3 5106.3
+815.74 7877.4
+-1377.8 9957.7
+-4068.5 10071
+-6719.9 7649.4
+-8874 3308.4
+-10350 -1312.2
+-11278 -4311.8
+-11936 -4507.6
+-12497 -2056.3
+-12862 1660.5
+-12709 4830.5
+-11734 6203.6
+-9927 5691.9
+-7662.4 4242.6
+-5519.2 3131.2
+-3924.4 3173.1
+-2873.5 4359.5
+-1943.3 6078.4
+-618.54 7658.9
+1288.3 8787.2
+3430.5 9511.7
+5103.3 9933.3
+5688.6 9931.3
+5051.8 9208.2
+3607.1 7606.8
+2027.3 5374.5
+841.09 3094.3
+214.61 1328
+15.088 314.33
+0 0
+0 0
+0.16695 0.33557
+2.1628 3.3733
+7.4174 10.97
+15.639 24.76
+25.202 44.801
+34.125 68.786
+40.979 92.536
+45.308 111.36
+47.558 121.58
+48.69 121.58
+49.723 112.03
+51.369 95.324
+53.864 74.623
+57.005 52.853
+60.328 32.124
+63.348 13.636
+65.758 -2.0244
+67.547 -14.477
+68.991 -23.289
+70.562 -27.976
+72.782 -28.207
+76.091 -24.044
+80.754 -16.048
+86.828 -5.1986
+94.191 7.3123
+102.59 20.296
+111.7 32.667
+121.18 43.422
+130.69 51.561
+139.93 56.078
+148.61 56.084
+156.49 51.063
+163.32 41.122
+168.91 27.119
+173.09 10.548
+175.71 -6.8002
+176.69 -23.292
+175.95 -37.845
+173.48 -50.102
+169.3 -60.345
+163.46 -69.179
+156.05 -77.144
+147.21 -84.417
+137.14 -90.707
+126.12 -95.381
+114.49 -97.734
+102.68 -97.298
+91.151 -94.044
+80.368 -88.432
+70.728 -81.276
+62.504 -73.52
+55.808 -65.981
+50.582 -59.181
+46.616 -53.282
+43.609 -48.159
+41.234 -43.536
+39.2 -39.146
+37.3 -34.846
+35.429 -30.662
+33.58 -26.744
+31.815 -23.287
+30.24 -20.422
+28.966 -18.152
+28.1 -16.337
+27.724 -14.732
+27.904 -13.077
+28.681 -11.187
+30.08 -9.0237
+32.102 -6.7208
+34.73 -4.5532
+37.92 -2.8641
+41.605 -1.9685
+45.701 -2.0636
+50.112 -3.1696
+54.736 -5.115
+59.474 -7.5687
+64.227 -10.107
+68.902 -12.297
+73.406 -13.779
+77.651 -14.32
+81.547 -13.845
+85.01 -12.426
+87.961 -10.25
+90.337 -7.5692
+92.089 -4.6454
+93.188 -1.7089
+93.625 1.072
+93.408 3.601
+92.56 5.8476
+91.117 7.8302
+89.121 9.5938
+86.623 11.188
+83.676 12.652
+80.34 14.002
+76.677 15.232
+72.752 16.317
+68.635 17.221
+64.396 17.902
+60.105 18.328
+55.829 18.477
+51.629 18.344
+47.561 17.939
+43.67 17.292
+39.993 16.441
+36.557 15.434
+33.377 14.322
+30.461 13.155
+27.81 11.977
+25.415 10.826
+23.267 9.7302
+21.348 8.709
+19.641 7.7739
+18.127 6.9288
+16.786 6.1724
+15.597 5.4996
+14.54 4.9031
+13.598 4.3748
+12.754 3.9069
+11.991 3.4923
+11.296 3.1251
+10.657 2.8003
+10.063 2.514
+9.5061 2.2628
+8.9785 2.0436
+8.4748 1.8533
+7.9904 1.6889
+7.522 1.5471
+7.0668 1.4242
+6.6227 1.3168
+6.188 1.2215
+5.7614 1.1353
+5.3419 1.0557
+4.9287 0.98104
+4.521 0.91014
+4.1188 0.84275
+3.7218 0.77924
+3.3302 0.72055
+2.9445 0.66796
+2.5651 0.62292
+2.1926 0.5868
+1.8275 0.5607
+1.4702 0.54531
+1.1206 0.54073
+0.77848 0.5465
+0.44334 0.56157
+0.11421 0.58446
+-0.21004 0.61339
+-0.53073 0.64656
+-0.84924 0.68235
+-1.1669 0.71961
+-1.4848 0.75789
+-1.8039 0.79757
+-2.1248 0.84002
+-2.448 0.88756
+-2.7737 0.94346
+-3.1016 1.0118
+-3.4316 1.0971
+-3.7634 1.2044
+-4.0965 1.3391
+-4.4306 1.5062
+-4.7652 1.7109
+-5.1 1.9581
+-5.4347 2.2528
+-5.7695 2.5998
+-6.1047 3.0045
+-6.4414 3.4728
+-6.7818 4.0115
+-7.1294 4.6284
+-7.4901 5.3327
+-7.8727 6.1346
+-8.2897 7.0451
+-8.759 8.076
+-9.3046 9.2398
+-9.9583 10.55
+-10.761 12.024
+-11.763 13.683
+-13.027 15.561
+-14.625 17.711
+-16.64 20.212
+-19.166 23.189
+-22.3 26.821
+-26.146 31.361
+-30.811 37.151
+-36.405 44.632
+-43.046 54.355
+-50.867 66.982
+-60.037 83.278
+-70.781 104.1
+-83.415 130.39
+-98.391 163.13
+-116.35 203.37
+-138.15 252.22
+-164.95 310.83
+-198.21 380.53
+-239.72 462.79
+-291.59 559.37
+-356.13 672.31
+-435.82 803.94
+-533.1 956.78
+-650.18 1133.3
+-788.89 1335.4
+-950.45 1564.1
+-1135.4 1818.6
+-1343.3 2095.8
+-1573.5 2389.5
+-1824.6 2690.3
+-2095.1 2985
+-2384.2 3257.7
+-2691.7 3490.7
+-3018.5 3665.8
+-3367 3766.8
+-3740.4 3781.8
+-4142.2 3704.8
+-4575.6 3537.3
+-5041.6 3287.1
+-5538.4 2966.2
+-6060 2586.6
+-6595 2154.4
+-7126.7 1665.6
+-7633 1104.6
+-8087.1 447.72
+-8458.8 -328.84
+-8716.9 -1236.7
+-8832.3 -2264.7
+-8781.8 -3374.8
+-8552.7 -4508.7
+-8147.5 -5605.9
+-7585.9 -6626.9
+-6905 -7571.5
+-6155.1 -8478.9
+-5391.7 -9403.8
+-4666.4 -10372
+-4018 -11331
+-3469.7 -12125
+-3032.2 -12506
+-2713.1 -12204
+-2528.5 -11022
+-2511.2 -8932.7
+-2710.2 -6133.3
+-3179.3 -3025.6
+-3958.6 -125.22
+-5055.4 2070.2
+-6431.6 3208.9
+-8002.3 3165.6
+-9648.6 2055.3
+-11238 188.14
+-12650 -2011.7
+-13797 -4096.7
+-14642 -5681
+-15207 -6511.1
+-15564 -6515.4
+-15820 -5818.3
+-16083 -4703.7
+-16429 -3528.4
+-16877 -2606.9
+-17383 -2115.9
+-17856 -2061.2
+-18192 -2323.5
+-18304 -2753
+-18140 -3251.3
+-17680 -3785
+-16928 -4325.4
+-15904 -4765.2
+-14652 -4894.9
+-13235 -4488.9
+-11730 -3469.9
+-10191 -2041.1
+-8617.2 -658.25
+-6950.8 202.31
+-5134.6 375.74
+-3206.8 225.98
+-1378.9 545.44
+-23.017 2108
+460.82 5090.2
+-152.04 8730.9
+-1752.3 11526
+-3897.9 11959
+-6004 9394.8
+-7627.2 4602.2
+-8671.2 -490.86
+-9370.9 -3746.8
+-10054 -3954.8
+-10835 -1472.4
+-11462 2038.9
+-11448 4629.6
+-10424 5194.4
+-8454.9 4006.3
+-6075.6 2346.3
+-3968.8 1537.5
+-2488.1 2084.8
+-1375.8 3507.4
+73.874 4909.5
+2467.1 5775.6
+5750.6 6330.4
+9066.7 7188.6
+11184 8630.4
+11242 10165
+9292.4 10799
+6252.5 9808.1
+3320.8 7348
+1299.9 4361
+313.22 1889.5
+21.091 446.12
+0 0
+0 0
+0.33965 -0.12666
+4.3687 -0.34679
+14.817 2.6797
+30.837 13.02
+49.041 32.177
+65.588 57.838
+77.845 84.805
+85.028 107.08
+87.959 119.96
+88.357 121.33
+88.073 111.89
+88.502 94.461
+90.304 72.74
+93.416 50.145
+97.292 29.068
+101.23 10.744
+104.66 -4.4124
+107.38 -16.304
+109.54 -24.777
+111.59 -29.535
+114.13 -30.302
+117.7 -27.064
+122.66 -20.227
+129.17 -10.588
+137.12 0.82799
+146.28 12.946
+156.28 24.743
+166.73 35.227
+177.26 43.387
+187.5 48.188
+197.16 48.716
+205.95 44.426
+213.63 35.403
+219.99 22.482
+224.84 7.1307
+228.02 -8.8862
+229.44 -23.966
+229 -37.057
+226.67 -47.836
+222.47 -56.615
+216.43 -64.029
+208.63 -70.653
+199.22 -76.703
+188.39 -81.943
+176.41 -85.806
+163.67 -87.661
+150.61 -87.101
+137.75 -84.134
+125.62 -79.207
+114.66 -73.071
+105.22 -66.551
+97.419 -60.318
+91.215 -54.738
+86.379 -49.854
+82.571 -45.467
+79.417 -41.289
+76.584 -37.1
+73.834 -32.841
+71.053 -28.63
+68.242 -24.707
+65.496 -21.327
+62.965 -18.657
+60.82 -16.709
+59.231 -15.333
+58.347 -14.27
+58.293 -13.238
+59.163 -12.03
+61.017 -10.582
+63.871 -8.9973
+67.698 -7.5189
+72.424 -6.4579
+77.933 -6.1014
+84.08 -6.6274
+90.703 -8.0468
+97.64 -10.189
+104.74 -12.73
+111.86 -15.257
+118.88 -17.345
+125.69 -18.641
+132.17 -18.915
+138.23 -18.092
+143.74 -16.244
+148.6 -13.561
+152.72 -10.303
+155.98 -6.741
+158.33 -3.1205
+159.71 0.37452
+160.07 3.6311
+159.4 6.603
+157.73 9.2936
+155.08 11.734
+151.49 13.962
+147.04 16.004
+141.83 17.866
+135.94 19.533
+129.5 20.972
+122.63 22.139
+115.47 22.994
+108.15 23.502
+100.79 23.646
+93.517 23.428
+86.428 22.87
+79.615 22.011
+73.147 20.903
+67.075 19.608
+61.434 18.188
+56.241 16.703
+51.498 15.209
+47.196 13.75
+43.315 12.361
+39.831 11.067
+36.712 9.8803
+33.925 8.808
+31.435 7.8488
+29.207 6.9973
+27.21 6.2452
+25.41 5.583
+23.78 5.0009
+22.294 4.4898
+20.93 4.0417
+19.667 3.6494
+18.489 3.3069
+17.383 3.0088
+16.336 2.7504
+15.341 2.5271
+14.389 2.3346
+13.475 2.1683
+12.595 2.0242
+11.743 1.898
+10.919 1.786
+10.117 1.6849
+9.3372 1.5921
+8.5761 1.5054
+7.8322 1.4237
+7.1038 1.3464
+6.3896 1.2737
+5.6885 1.2064
+4.9996 1.1456
+4.3222 1.0926
+3.6557 1.0488
+2.9992 1.0154
+2.352 0.99306
+1.713 0.98222
+1.0808 0.98264
+0.45363 0.99354
+-0.17039 1.0137
+-0.79356 1.0414
+-1.4183 1.0751
+-2.0473 1.1133
+-2.683 1.1546
+-3.3279 1.1987
+-3.9846 1.2458
+-4.6553 1.297
+-5.3423 1.3547
+-6.0476 1.422
+-6.7734 1.5029
+-7.5219 1.602
+-8.2952 1.7244
+-9.0957 1.8754
+-9.9259 2.0602
+-10.789 2.2841
+-11.687 2.5523
+-12.624 2.87
+-13.605 3.2425
+-14.633 3.6759
+-15.715 4.1768
+-16.86 4.7533
+-18.075 5.4151
+-19.375 6.1735
+-20.776 7.0418
+-22.299 8.035
+-23.972 9.1698
+-25.831 10.465
+-27.919 11.942
+-30.293 13.625
+-33.022 15.548
+-36.191 17.755
+-39.9 20.311
+-44.267 23.309
+-49.43 26.885
+-55.546 31.233
+-62.794 36.618
+-71.377 43.397
+-81.526 52.032
+-93.514 63.098
+-107.66 77.294
+-124.38 95.443
+-144.16 118.48
+-167.66 147.46
+-195.72 183.52
+-229.43 227.89
+-270.17 281.92
+-319.68 347.04
+-380.07 424.85
+-453.82 517.14
+-543.78 625.9
+-653.07 753.38
+-784.95 902
+-942.68 1074.2
+-1129.2 1272.2
+-1347.1 1497.6
+-1598.1 1750.6
+-1883.1 2030
+-2202.1 2331.8
+-2554.2 2649.2
+-2937.6 2972.3
+-3350.4 3287.9
+-3790.6 3580.3
+-4256.7 3832.1
+-4748.2 4026.3
+-5265.6 4147.4
+-5810.2 4184.2
+-6383.8 4130.9
+-6987.9 3988.5
+-7622.8 3763.4
+-8285.9 3465.4
+-8971.6 3103.1
+-9669.6 2678.9
+-10365 2184.8
+-11038 1601.3
+-11664 900.74
+-12214 56.762
+-12658 -943.57
+-12965 -2088.1
+-13108 -3334.5
+-13068 -4616.3
+-12839 -5861.1
+-12435 -7014.7
+-11885 -8061.7
+-11240 -9029.3
+-10559 -9966.7
+-9899.4 -10902
+-9311.5 -11795
+-8825.4 -12503
+-8453.3 -12793
+-8195.1 -12399
+-8051.3 -11119
+-8034.1 -8914.2
+-8174.3 -5968
+-8517.4 -2673.8
+-9110.9 447.44
+-9985.4 2877.8
+-11138 4233.3
+-12522 4352.4
+-14047 3319.7
+-15596 1429
+-17042 -892.6
+-18279 -3173.9
+-19243 -4988.4
+-19932 -6033.6
+-20402 -6193.7
+-20749 -5568
+-21077 -4443.9
+-21457 -3210.3
+-21905 -2230.4
+-22380 -1725.8
+-22803 -1726.8
+-23097 -2111.4
+-23205 -2708.2
+-23101 -3393.8
+-22779 -4118.8
+-22240 -4847.3
+-21490 -5464.7
+-20550 -5747
+-19463 -5452.8
+-18273 -4507
+-16988 -3147.3
+-15547 -1886.3
+-13827 -1238.2
+-11726 -1333.8
+-9284.4 -1681.8
+-6769.7 -1311.1
+-4642.7 680.82
+-3386.1 4444.8
+-3262.2 9006.1
+-4144.3 12543
+-5548.3 13283
+-6877.1 10557
+-7747.8 5348.9
+-8188.3 -80.369
+-8557.1 -3368.9
+-9216.4 -3357.9
+-10177 -712.31
+-10987 2563.1
+-10975 4416.9
+-9732.2 4011.5
+-7463.3 2113.2
+-4927.1 375.09
+-2932.1 62.025
+-1713.5 1171.4
+-668.53 2600.7
+1276 3203
+4837.2 2859.2
+9655.6 2657.7
+14249 3979.7
+16776 7204.7
+16142 11130
+12699 13661
+8018.3 13296
+3896.2 10203
+1342.8 6010.1
+273.2 2523.2
+15.582 571.89
+0 0
+0 0
+0.70088 -1.0764
+8.9158 -7.8858
+29.735 -13.723
+60.715 -9.5305
+94.774 8.6899
+124.67 38.159
+145.9 71.527
+157.44 100.41
+161 118.38
+159.67 122.54
+156.67 113.69
+154.52 95.273
+154.53 71.868
+156.94 47.667
+161.12 25.561
+166.12 6.9397
+171.05 -7.9284
+175.4 -19.271
+179.13 -27.296
+182.6 -31.98
+186.41 -33.167
+191.16 -30.811
+197.31 -25.162
+205.08 -16.814
+214.42 -6.6003
+225.08 4.5515
+236.66 15.698
+248.75 25.875
+260.91 34.055
+272.75 39.173
+283.93 40.274
+294.16 36.781
+303.18 28.75
+310.76 16.993
+316.72 2.9574
+320.87 -11.618
+323.07 -25.157
+323.24 -36.643
+321.31 -45.786
+317.27 -52.933
+311.17 -58.753
+303.06 -63.854
+293.09 -68.496
+281.44 -72.497
+268.39 -75.36
+254.31 -76.536
+239.68 -75.692
+225.05 -72.888
+211.01 -68.572
+198.07 -63.435
+186.63 -58.182
+176.91 -53.322
+168.87 -49.052
+162.31 -45.269
+156.88 -41.684
+152.18 -37.991
+147.83 -34.014
+143.57 -29.785
+139.29 -25.534
+134.98 -21.604
+130.79 -18.33
+126.91 -15.929
+123.58 -14.431
+121.06 -13.687
+119.58 -13.419
+119.34 -13.321
+120.49 -13.151
+123.15 -12.804
+127.35 -12.335
+133.07 -11.934
+140.19 -11.862
+148.56 -12.363
+157.98 -13.587
+168.2 -15.533
+179 -18.032
+190.16 -20.774
+201.49 -23.361
+212.8 -25.383
+223.94 -26.493
+234.73 -26.462
+245 -25.211
+254.57 -22.805
+263.24 -19.43
+270.83 -15.347
+277.15 -10.835
+282.02 -6.1536
+285.3 -1.5074
+286.87 2.966
+286.67 7.1926
+284.65 11.146
+280.84 14.828
+275.3 18.245
+268.11 21.395
+259.43 24.257
+249.43 26.792
+238.32 28.948
+226.35 30.669
+213.74 31.905
+200.75 32.624
+187.63 32.816
+174.58 32.496
+161.81 31.704
+149.48 30.5
+137.75 28.961
+126.69 27.17
+116.38 25.214
+106.87 23.174
+98.146 21.123
+90.209 19.121
+83.024 17.213
+76.546 15.434
+70.721 13.802
+65.488 12.327
+60.786 11.008
+56.553 9.8393
+52.731 8.8106
+49.265 7.9095
+46.104 7.1227
+43.205 6.4373
+40.527 5.8412
+38.038 5.3236
+35.709 4.8748
+33.517 4.4862
+31.443 4.1501
+29.47 3.8595
+27.587 3.6081
+25.783 3.3898
+24.05 3.1992
+22.379 3.0313
+20.766 2.8816
+19.205 2.7465
+17.691 2.6229
+16.219 2.5085
+14.785 2.4019
+13.385 2.3022
+12.016 2.2095
+10.673 2.1242
+9.3553 2.0474
+8.0583 1.9802
+6.7797 1.9239
+5.5165 1.8797
+4.2659 1.8486
+3.0247 1.8311
+1.7895 1.8272
+0.5566 1.8363
+-0.67812 1.8575
+-1.9189 1.8893
+-3.1704 1.9303
+-4.4373 1.979
+-5.7245 2.0343
+-7.037 2.0958
+-8.3797 2.1637
+-9.758 2.2393
+-11.177 2.3248
+-12.642 2.4236
+-14.159 2.5398
+-15.734 2.6781
+-17.372 2.8438
+-19.082 3.0427
+-20.87 3.2802
+-22.744 3.5621
+-24.712 3.894
+-26.785 4.2818
+-28.972 4.7317
+-31.285 5.2507
+-33.74 5.847
+-36.351 6.5305
+-39.138 7.3134
+-42.126 8.2102
+-45.342 9.2381
+-48.821 10.417
+-52.607 11.771
+-56.752 13.325
+-61.322 15.111
+-66.398 17.166
+-72.077 19.536
+-78.481 22.282
+-85.754 25.489
+-94.072 29.271
+-103.65 33.79
+-114.73 39.269
+-127.62 46.007
+-142.68 54.403
+-160.34 64.968
+-181.13 78.343
+-205.67 95.312
+-234.77 116.81
+-269.4 143.9
+-310.78 177.83
+-360.43 219.97
+-420.22 271.81
+-492.46 335.02
+-579.9 411.38
+-685.79 502.88
+-813.89 611.64
+-968.38 740.01
+-1153.8 890.45
+-1374.8 1065.5
+-1636.2 1267.5
+-1942.1 1498.3
+-2296.3 1759
+-2701.6 2049.3
+-3159.5 2366.7
+-3670.3 2706.4
+-4232.8 3060.7
+-4844.6 3418.7
+-5502.4 3766.6
+-6202.3 4088.7
+-6940.3 4367.8
+-7712.8 4587
+-8516.6 4731.7
+-9349.4 4791.1
+-10209 4759.7
+-11093 4638.1
+-11998 4431.8
+-12920 4148.7
+-13851 3795.2
+-14779 3370.6
+-15691 2863.9
+-16569 2252.1
+-17391 1504.5
+-18131 591.81
+-18762 -500.72
+-19254 -1761.1
+-19579 -3144.7
+-19717 -4578.7
+-19658 -5980.3
+-19406 -7280.8
+-18989 -8448.9
+-18450 -9497.4
+-17851 -10466
+-17252 -11385
+-16711 -12220
+-16263 -12846
+-15922 -13047
+-15684 -12570
+-15535 -11216
+-15466 -8936.1
+-15489 -5898
+-15636 -2479.2
+-15956 806.93
+-16500 3436.2
+-17298 5002.9
+-18348 5312.6
+-19599 4413.2
+-20959 2568.8
+-22305 193.3
+-23519 -2231.9
+-24511 -4246.5
+-25249 -5498.9
+-25763 -5824.3
+-26132 -5291.1
+-26447 -4186
+-26773 -2926.3
+-27126 -1918.5
+-27477 -1420.9
+-27773 -1477.9
+-27970 -1957.5
+-28049 -2667.6
+-28006 -3470
+-27838 -4314.8
+-27534 -5171.5
+-27078 -5922.2
+-26479 -6323.7
+-25774 -6114.4
+-25004 -5225.6
+-24155 -3946.6
+-23112 -2868.1
+-21679 -2552.6
+-19682 -3084
+-17128 -3807.7
+-14299 -3532
+-11714 -1201.4
+-9910 3300.1
+-9172.3 8749.2
+-9354.1 12972
+-9945 13945
+-10372 11008
+-10360 5429.1
+-10105 -160.69
+-10105 -3211.9
+-10734 -2728.8
+-11850 190.29
+-12744 3141.1
+-12553 4040
+-10870 2486.1
+-8130.5 -100.41
+-5406.7 -1668.1
+-3663.2 -1168.5
+-2962.6 626.02
+-2239.9 1804.2
+59.807 1018
+4807.7 -1148.2
+11284 -2342.6
+17269 -186.92
+20222 5677.8
+18838 12902
+13901 17808
+7798.7 17897
+2991.3 13559
+567.25 7580.4
+-34.173 2889.6
+-11.983 577.74
+0 0
+0 0
+1.4989 -3.091
+18.755 -23.548
+61.056 -46.635
+121.44 -52.961
+185 -34.682
+238.42 3.3222
+274.63 49.148
+292.94 90.171
+297.03 117.25
+292.48 126.46
+284.79 118.9
+278.18 99.091
+275.02 72.962
+275.93 45.91
+280.27 21.636
+286.75 1.8572
+294.06 -13.254
+301.27 -24.292
+308.03 -31.911
+314.53 -36.463
+321.3 -37.996
+328.95 -36.478
+338 -32.025
+348.71 -25.018
+361.06 -16.071
+374.78 -5.9416
+389.46 4.5308
+404.61 14.417
+419.75 22.674
+434.45 28.195
+448.33 29.975
+461.1 27.393
+472.5 20.472
+482.28 10.005
+490.25 -2.5772
+496.2 -15.549
+499.95 -27.358
+501.36 -37.018
+500.34 -44.278
+496.85 -49.528
+490.89 -53.476
+482.53 -56.77
+471.89 -59.712
+459.15 -62.173
+444.58 -63.728
+428.53 -63.916
+411.51 -62.496
+394.11 -59.595
+376.95 -55.685
+360.67 -51.411
+345.75 -47.365
+332.51 -43.889
+321.02 -40.992
+311.1 -38.401
+302.45 -35.718
+294.65 -32.599
+287.33 -28.906
+280.2 -24.767
+273.15 -20.537
+266.2 -16.681
+259.54 -13.635
+253.44 -11.683
+248.25 -10.891
+244.31 -11.112
+241.97 -12.055
+241.53 -13.38
+243.24 -14.8
+247.28 -16.148
+253.71 -17.411
+262.52 -18.704
+273.59 -20.215
+286.72 -22.129
+301.63 -24.555
+318.03 -27.472
+335.6 -30.712
+354.04 -33.973
+373.06 -36.87
+392.38 -39.004
+411.72 -40.027
+430.78 -39.699
+449.23 -37.924
+466.74 -34.751
+482.92 -30.35
+497.39 -24.977
+509.78 -18.919
+519.71 -12.454
+526.88 -5.8177
+531.02 0.80871
+531.95 7.3005
+529.54 13.575
+523.79 19.571
+514.75 25.235
+502.59 30.503
+487.54 35.298
+469.94 39.529
+450.16 43.106
+428.63 45.944
+405.81 47.979
+382.16 49.176
+358.13 49.538
+334.14 49.103
+310.58 47.943
+287.77 46.159
+265.96 43.87
+245.36 41.206
+226.1 38.294
+208.27 35.256
+191.88 32.198
+176.91 29.21
+163.32 26.36
+151.03 23.698
+139.92 21.255
+129.9 19.044
+120.86 17.069
+112.67 15.322
+105.24 13.788
+98.467 12.449
+92.254 11.287
+86.525 10.279
+81.209 9.4077
+76.247 8.6548
+71.59 8.0041
+67.195 7.4414
+63.028 6.954
+59.06 6.5308
+55.27 6.1619
+51.637 5.8388
+48.146 5.5538
+44.783 5.3006
+41.537 5.0736
+38.396 4.8683
+35.35 4.6811
+32.392 4.5093
+29.511 4.3511
+26.7 4.2054
+23.95 4.0719
+21.255 3.9508
+18.606 3.8429
+15.998 3.7492
+13.423 3.6709
+10.874 3.6094
+8.3452 3.5655
+5.8285 3.5399
+3.317 3.533
+0.80297 3.5443
+-1.7215 3.5732
+-4.2647 3.6186
+-6.8353 3.6792
+-9.4423 3.7537
+-12.095 3.8412
+-14.802 3.9415
+-17.575 4.0551
+-20.423 4.1834
+-23.357 4.3292
+-26.388 4.4959
+-29.528 4.6882
+-32.79 4.9114
+-36.187 5.1713
+-39.734 5.4743
+-43.446 5.8266
+-47.34 6.2349
+-51.434 6.7058
+-55.748 7.2462
+-60.303 7.864
+-65.123 8.5678
+-70.236 9.3682
+-75.672 10.278
+-81.467 11.313
+-87.662 12.492
+-94.304 13.837
+-101.45 15.376
+-109.17 17.141
+-117.55 19.168
+-126.68 21.502
+-136.68 24.196
+-147.71 27.318
+-159.93 30.953
+-173.57 35.214
+-188.91 40.257
+-206.26 46.286
+-226.04 53.58
+-248.76 62.508
+-275.02 73.551
+-305.59 87.326
+-341.41 104.6
+-383.65 126.33
+-433.75 153.64
+-493.48 187.87
+-565.03 230.53
+-651.07 283.37
+-754.83 348.3
+-880.16 427.44
+-1031.6 523.1
+-1214.4 637.75
+-1434.4 774.03
+-1698.2 934.69
+-2012.7 1122.5
+-2385 1340.1
+-2822.3 1589.6
+-3330.9 1872.7
+-3916.7 2189.5
+-4583.7 2538.6
+-5334.6 2916.3
+-6169.9 3316.4
+-7087.8 3729.3
+-8084.3 4142.8
+-9153.8 4541.9
+-10289 4909.7
+-11480 5228.5
+-12719 5481.5
+-13997 5653.8
+-15303 5735
+-16629 5719.7
+-17966 5608.2
+-19302 5405.4
+-20629 5118.2
+-21932 4751.5
+-23199 4302.9
+-24412 3759.5
+-25556 3096.3
+-26609 2280.5
+-27550 1281.1
+-28356 81.652
+-29001 -1306.4
+-29463 -2836.7
+-29723 -4432.2
+-29770 -6001.2
+-29608 -7462.3
+-29260 -8768.3
+-28769 -9916.9
+-28192 -10937
+-27594 -11855
+-27034 -12646
+-26553 -13200
+-26168 -13321
+-25868 -12776
+-25629 -11373
+-25423 -9060.3
+-25238 -5990
+-25089 -2517.9
+-25019 862.41
+-25092 3635.4
+-25371 5387.7
+-25898 5899.4
+-26669 5180.2
+-27629 3453.2
+-28677 1103
+-29689 -1395.5
+-30556 -3559.9
+-31215 -4993.8
+-31666 -5482.1
+-31962 -5057.1
+-32175 -3999.1
+-32359 -2746.8
+-32533 -1740.5
+-32685 -1263.1
+-32796 -1361.2
+-32865 -1887.2
+-32910 -2634
+-32947 -3465.4
+-32966 -4350.7
+-32928 -5277.3
+-32791 -6120.8
+-32558 -6603.6
+-32282 -6428.6
+-32028 -5533.9
+-31788 -4281
+-31407 -3372.8
+-30609 -3445.8
+-29131 -4536.7
+-26911 -5798.2
+-24215 -5776.6
+-21583 -3236.7
+-19582 1897.5
+-18495 8124.7
+-18142 12898
+-17992 13957
+-17526 10719
+-16623 4812.3
+-15689 -732.8
+-15377 -3243
+-16047 -2029.7
+-17340 1228.3
+-18242 3682.9
+-17685 3331.5
+-15330 433.63
+-11956 -2744.2
+-9056.8 -3742.9
+-7790.1 -1953.3
+-7980.3 740.01
+-7957.7 1382.2
+-5541.9 -1508.8
+355.66 -6263.4
+8604.5 -8780.2
+16127 -5413.2
+19590 4012.9
+17500 15466
+11231 23099
+4190.7 23201
+-414.81 16716
+-1598.7 8269.8
+-802.09 2399.2
+-78.03 263.13
+0 0
+0 0
+3.3805 -7.5824
+41.236 -57.373
+129.65 -114.23
+248.92 -137.37
+367.64 -114.61
+462.36 -57.744
+523.36 11.931
+552.09 74.6
+556.46 117.24
+546.48 134.91
+531.35 129.56
+517.88 107.63
+509.9 77.122
+508.64 45.285
+513.35 17.052
+522.32 -5.3025
+533.65 -21.634
+545.86 -32.945
+558.16 -40.445
+570.46 -44.978
+583.15 -46.893
+596.79 -46.236
+611.9 -43.015
+628.73 -37.396
+647.25 -29.754
+667.15 -20.649
+687.94 -10.801
+709.05 -1.0979
+729.92 7.3968
+750.07 13.515
+769.1 16.186
+786.71 14.728
+802.64 9.1289
+816.65 0.16674
+828.52 -10.725
+837.98 -21.819
+844.81 -31.571
+848.76 -39.021
+849.66 -43.964
+847.42 -46.84
+842 -48.414
+833.44 -49.382
+821.84 -50.093
+807.36 -50.475
+790.27 -50.178
+770.92 -48.833
+749.84 -46.308
+727.65 -42.825
+705.09 -38.906
+682.9 -35.181
+661.74 -32.141
+642.05 -29.961
+624.07 -28.446
+607.74 -27.132
+592.81 -25.477
+578.94 -23.079
+565.77 -19.825
+553.03 -15.941
+540.63 -11.917
+528.67 -8.3642
+517.41 -5.8443
+507.25 -4.7299
+498.68 -5.1373
+492.2 -6.935
+488.32 -9.8153
+487.49 -13.397
+490.1 -17.33
+496.41 -21.367
+506.58 -25.398
+520.63 -29.438
+538.44 -33.579
+559.79 -37.925
+584.35 -42.525
+611.75 -47.32
+641.57 -52.126
+673.39 -56.633
+706.75 -60.452
+741.17 -63.169
+776.15 -64.411
+811.12 -63.902
+845.45 -61.505
+878.44 -57.228
+909.37 -51.212
+937.46 -43.697
+961.96 -34.98
+982.13 -25.369
+997.32 -15.158
+1007 -4.6017
+1010.7 6.0793
+1008.1 16.693
+999.29 27.061
+984.18 37.005
+963.07 46.342
+936.39 54.879
+904.7 62.429
+868.72 68.816
+829.24 73.899
+787.12 77.581
+743.22 79.821
+698.41 80.638
+653.5 80.114
+609.21 78.38
+566.18 75.609
+524.92 72.001
+485.82 67.769
+449.16 63.122
+415.09 58.258
+383.7 53.349
+354.94 48.54
+328.73 43.945
+304.93 39.645
+283.35 35.693
+263.81 32.115
+246.08 28.918
+229.96 26.092
+215.25 23.616
+201.77 21.46
+189.35 19.592
+177.84 17.978
+167.12 16.586
+157.07 15.386
+147.6 14.348
+138.64 13.45
+130.12 12.668
+121.99 11.985
+114.21 11.384
+106.74 10.853
+99.559 10.381
+92.629 9.957
+85.931 9.5751
+79.445 9.2289
+73.15 8.9138
+67.03 8.6265
+61.065 8.3645
+55.24 8.1262
+49.539 7.911
+43.946 7.7188
+38.446 7.55
+33.023 7.4053
+27.664 7.286
+22.353 7.1932
+17.076 7.1279
+11.819 7.0911
+6.5665 7.083
+1.3028 7.1038
+-3.9875 7.153
+-9.3206 7.2299
+-14.713 7.3335
+-20.182 7.4628
+-25.746 7.6176
+-31.422 7.7979
+-37.231 8.0047
+-43.191 8.2402
+-49.324 8.5077
+-55.652 8.8116
+-62.198 9.1574
+-68.988 9.5515
+-76.048 10.001
+-83.407 10.513
+-91.095 11.096
+-99.144 11.758
+-107.59 12.507
+-116.47 13.352
+-125.83 14.304
+-135.71 15.374
+-146.16 16.577
+-157.24 17.929
+-169.01 19.452
+-181.54 21.17
+-194.92 23.115
+-209.23 25.323
+-224.59 27.838
+-241.13 30.713
+-259 34.011
+-278.39 37.809
+-299.52 42.206
+-322.68 47.326
+-348.2 53.334
+-376.51 60.445
+-408.15 68.945
+-443.79 79.212
+-484.26 91.74
+-530.61 107.17
+-584.16 126.31
+-646.57 150.17
+-719.87 180.01
+-806.62 217.3
+-909.95 263.83
+-1033.7 321.61
+-1182.5 392.98
+-1361.8 480.52
+-1578.3 587.07
+-1839.4 715.68
+-2153.7 869.59
+-2530.9 1052.1
+-2981.4 1266.6
+-3516 1516.3
+-4146.1 1803.7
+-4882.6 2130.9
+-5735.6 2498.7
+-6713.6 2906.1
+-7823.3 3350.2
+-9068.3 3825
+-10449 4321.9
+-11963 4828.9
+-13602 5330.8
+-15356 5810.4
+-17211 6248.6
+-19150 6625.9
+-21155 6924.1
+-23206 7127.9
+-25280 7226.2
+-27358 7213.7
+-29417 7090.3
+-31436 6861.1
+-33393 6532.6
+-35267 6109.4
+-37037 5589.1
+-38681 4958.4
+-40181 4192.5
+-41515 3258.5
+-42666 2125.4
+-43617 776.82
+-44349 -775.26
+-44848 -2483
+-45105 -4265.2
+-45115 -6022.9
+-44889 -7663.7
+-44451 -9126.3
+-43846 -10394
+-43133 -11484
+-42376 -12418
+-41640 -13179
+-40967 -13672
+-40378 -13724
+-39858 -13125
+-39373 -11697
+-38875 -9393.7
+-38331 -6351.7
+-37731 -2902.6
+-37106 489.6
+-36524 3333.6
+-36075 5224.7
+-35844 5929.4
+-35879 5422.6
+-36173 3879.5
+-36658 1640.1
+-37219 -845
+-37738 -3086.1
+-38129 -4651.2
+-38361 -5277
+-38455 -4957.8
+-38458 -3961.5
+-38412 -2739.4
+-38336 -1753
+-38238 -1294
+-38140 -1397.8
+-38088 -1897.1
+-38139 -2579.7
+-38322 -3334.6
+-38604 -4174.8
+-38905 -5117.5
+-39150 -6022.4
+-39335 -6551.3
+-39549 -6345.5
+-39910 -5343.9
+-40437 -4004.9
+-40955 -3187.4
+-41110 -3641.2
+-40532 -5366
+-39074 -7297.9
+-36961 -7680.6
+-34735 -5072.8
+-32965 555.87
+-31903 7397.6
+-31316 12516
+-30645 13449
+-29441 9775.9
+-27778 3574.5
+-26310 -1700.6
+-25859 -3342.8
+-26739 -1150.8
+-28314 2448.7
+-29205 4132.5
+-28133 2142.2
+-24900 -2316.3
+-20760 -5902.5
+-17750 -5760.9
+-17263 -2020.7
+-18810 1887.3
+-19952 1674
+-17718 -4192.1
+-10727 -12489
+-572.57 -16781
+8673 -11836
+12776 2129.5
+10075 18744
+2727.7 29290
+-4568.4 28596
+-7712.8 18637
+-6006.1 6846
+-2343.1 95.714
+-210.77 -713.42
+0 0
+0 0
+8.196 -18.306
+95.941 -134.09
+286.65 -256.74
+524.84 -302.68
+745.92 -261.17
+911.89 -163.43
+1012.9 -48.927
+1057.2 51.311
+1061.1 119.54
+1042.5 150.51
+1016.2 148.41
+992.93 122.93
+978.51 85.419
+974.84 45.837
+981.02 10.924
+994.68 -16.2
+1013.1 -35.35
+1034.1 -48.008
+1056.3 -56.069
+1079.3 -61.007
+1103.2 -63.591
+1128.4 -64.011
+1155.3 -62.195
+1184.2 -58.087
+1214.9 -51.802
+1247 -43.681
+1279.8 -34.312
+1312.6 -24.546
+1344.7 -15.489
+1375.5 -8.3951
+1404.7 -4.4352
+1431.8 -4.3683
+1456.7 -8.2463
+1479.1 -15.292
+1498.7 -24.043
+1515.2 -32.739
+1528.2 -39.82
+1537.2 -44.34
+1542.1 -46.145
+1542.6 -45.749
+1538.5 -43.996
+1529.9 -41.656
+1516.8 -39.142
+1499.4 -36.446
+1477.9 -33.297
+1452.8 -29.435
+1424.5 -24.855
+1393.8 -19.908
+1361.6 -15.209
+1328.9 -11.405
+1296.4 -8.9148
+1264.8 -7.7524
+1234.8 -7.5078
+1206.3 -7.4945
+1179.4 -6.997
+1153.8 -5.5222
+1129.2 -2.9676
+1105.4 0.34609
+1082.6 3.7749
+1060.8 6.5371
+1040.6 7.9164
+1022.6 7.4222
+1007.4 4.8677
+995.96 0.36084
+988.91 -5.7721
+986.98 -13.096
+990.78 -21.177
+1000.8 -29.659
+1017.2 -38.307
+1040.3 -47.004
+1069.9 -55.713
+1105.9 -64.423
+1147.8 -73.09
+1195.3 -81.584
+1247.8 -89.659
+1304.6 -96.959
+1365 -103.04
+1428.2 -107.41
+1493.2 -109.63
+1558.9 -109.32
+1624.1 -106.26
+1687.5 -100.36
+1747.5 -91.716
+1802.7 -80.53
+1851.6 -67.11
+1892.7 -51.821
+1924.6 -35.051
+1946.2 -17.199
+1956.7 1.3406
+1955.4 20.168
+1942 38.878
+1916.6 57.055
+1879.6 74.275
+1831.7 90.124
+1773.9 104.21
+1707.6 116.2
+1634.1 125.83
+1555.3 132.92
+1472.6 137.43
+1387.9 139.38
+1302.5 138.94
+1218 136.34
+1135.6 131.89
+1056.3 125.95
+980.85 118.88
+909.89 111.05
+843.75 102.81
+782.57 94.454
+726.34 86.238
+674.91 78.364
+628.01 70.979
+585.34 64.179
+546.5 58.017
+511.12 52.508
+478.8 47.637
+449.16 43.37
+421.87 39.658
+396.6 36.445
+373.09 33.672
+351.08 31.281
+330.38 29.216
+310.81 27.429
+292.23 25.875
+274.52 24.516
+257.58 23.321
+241.32 22.262
+225.69 21.318
+210.62 20.471
+196.06 19.707
+181.96 19.015
+168.29 18.386
+155.01 17.815
+142.07 17.295
+129.45 16.824
+117.11 16.4
+105.02 16.021
+93.149 15.686
+81.461 15.396
+69.928 15.15
+58.52 14.951
+47.207 14.798
+35.958 14.694
+24.744 14.638
+13.533 14.632
+2.2966 14.676
+-8.9983 14.769
+-20.383 14.913
+-31.89 15.105
+-43.554 15.347
+-55.408 15.637
+-67.49 15.979
+-79.835 16.372
+-92.483 16.822
+-105.48 17.332
+-118.85 17.908
+-132.67 18.558
+-146.96 19.29
+-161.79 20.114
+-177.2 21.039
+-193.26 22.075
+-210.04 23.235
+-227.58 24.528
+-245.98 25.969
+-265.3 27.571
+-285.63 29.352
+-307.07 31.33
+-329.71 33.531
+-353.66 35.981
+-379.06 38.718
+-406.03 41.782
+-434.75 45.225
+-465.38 49.109
+-498.14 53.509
+-533.28 58.518
+-571.1 64.25
+-611.96 70.852
+-656.29 78.512
+-704.67 87.477
+-757.77 98.067
+-816.48 110.71
+-881.91 125.95
+-955.47 144.51
+-1039 167.31
+-1134.6 195.51
+-1245.3 230.57
+-1374.7 274.25
+-1527.1 328.68
+-1708.1 396.37
+-1924.2 480.23
+-2183.5 583.56
+-2495.5 710.02
+-2871.2 863.61
+-3323.4 1048.6
+-3866.4 1269.3
+-4515.9 1530.1
+-5288.9 1835.1
+-6203.2 2188
+-7276.4 2591.4
+-8525.9 3046.8
+-9967.4 3553.8
+-11614 4109.3
+-13475 4707.8
+-15556 5339.9
+-17855 5992.8
+-20368 6650.2
+-23079 7292.4
+-25970 7897.6
+-29016 8442.4
+-32184 8904.1
+-35441 9261.4
+-38746 9497.2
+-42060 9599.2
+-45340 9561.4
+-48546 9384.1
+-51636 9072.8
+-54572 8635.2
+-57316 8077.3
+-59835 7398.4
+-62098 6587.7
+-64079 5623
+-65757 4474.4
+-67116 3114.1
+-68144 1528.9
+-68836 -266.26
+-69191 -2219.7
+-69214 -4245.4
+-68921 -6237.4
+-68334 -8093.6
+-67495 -9740.7
+-66455 -11149
+-65282 -12327
+-64047 -13294
+-62817 -14035
+-61641 -14476
+-60541 -14467
+-59504 -13822
+-58484 -12389
+-57419 -10127
+-56252 -7166.6
+-54946 -3813.3
+-53515 -493.89
+-52022 2338.7
+-50573 4306
+-49290 5176.6
+-48276 4898.3
+-47578 3596.5
+-47169 1555
+-46963 -816.49
+-46844 -3037.8
+-46712 -4653.7
+-46511 -5359.5
+-46234 -5112.5
+-45901 -4164.6
+-45533 -2970.7
+-45150 -1998.3
+-44781 -1530
+-44491 -1574.4
+-44379 -1941.6
+-44539 -2429.3
+-45001 -2980.3
+-45697 -3681.7
+-46484 -4593.3
+-47237 -5543.7
+-47947 -6096.7
+-48748 -5794.4
+-49832 -4564.3
+-51274 -2987.5
+-52893 -2130.9
+-54259 -2907
+-54895 -5296
+-54558 -7994.9
+-53431 -8904.3
+-52048 -6351.2
+-50965 -363.33
+-50382 6909.7
+-49977 12127
+-49143 12669
+-47505 8381.9
+-45353 1903.5
+-43627 -2865.2
+-43330 -3298.6
+-44699 101.77
+-46758 3970.5
+-47699 4491.8
+-46027 366.6
+-41760 -5900.8
+-36761 -9629.4
+-33739 -7600.4
+-34370 -1059.7
+-37770 4481
+-40564 3047.8
+-38816 -6836.1
+-30773 -19839
+-18552 -26495
+-7373 -19615
+-2502.8 -57.75
+-5750 22669
+-13951 36123
+-20763 33358
+-20896 17977
+-14026 1540.2
+-5224.4 -5548.4
+-466.47 -2952.2
+0 0
+0 0
+21.982 -46.469
+239.34 -318.33
+662.35 -563.62
+1138.6 -625.89
+1544.5 -526.02
+1828.9 -342.4
+1991.6 -145.89
+2057.6 17.577
+2059.4 126.25
+2027.3 176.99
+1985.2 178.85
+1948.9 147.18
+1927 98.472
+1921.9 46.66
+1932.5 1.0238
+1955.4 -34.157
+1986.7 -58.621
+2023.4 -74.451
+2063.4 -84.41
+2105.7 -90.771
+2150.2 -94.832
+2197.1 -96.989
+2246.7 -97.098
+2298.9 -94.859
+2353.1 -90.102
+2408.8 -82.928
+2465 -73.793
+2520.6 -63.534
+2574.7 -53.34
+2626.7 -44.604
+2676 -38.64
+2722.2 -36.311
+2765.1 -37.71
+2804.4 -42.034
+2839.6 -47.748
+2870.2 -53.012
+2895.5 -56.212
+2915.1 -56.404
+2928.2 -53.499
+2934.5 -48.119
+2933.6 -41.233
+2925.5 -33.727
+2910.2 -26.112
+2887.9 -18.468
+2858.8 -10.621
+2823.5 -2.437
+2782.6 5.9276
+2736.8 13.95
+2687.4 20.87
+2635.6 25.969
+2582.5 28.861
+2529.4 29.679
+2476.9 29.054
+2425.7 27.923
+2375.9 27.213
+2327.7 27.539
+2280.9 29.013
+2235.7 31.219
+2192.4 33.337
+2151.4 34.381
+2113.5 33.441
+2079.9 29.871
+2051.6 23.391
+2029.8 14.073
+2015.9 2.2673
+2010.9 -11.52
+2015.8 -26.741
+2031.5 -42.899
+2058.6 -59.591
+2097.4 -76.525
+2148 -93.486
+2210.5 -110.3
+2284.3 -126.75
+2369.1 -142.58
+2464 -157.39
+2568 -170.69
+2680 -181.85
+2798.4 -190.22
+2921.5 -195.15
+3047.1 -196.07
+3172.9 -192.54
+3296.3 -184.31
+3414.3 -171.35
+3524 -153.79
+3622.5 -131.95
+3706.7 -106.29
+3774 -77.357
+3822 -45.816
+3848.9 -12.386
+3853.2 22.143
+3834.3 56.929
+3792 91.092
+3726.9 123.75
+3640.4 154.03
+3534.2 181.15
+3410.8 204.43
+3273 223.36
+3123.8 237.6
+2966.4 247.03
+2804 251.73
+2639.8 251.98
+2476.4 248.21
+2316.4 240.97
+2161.8 230.9
+2014.3 218.69
+1874.9 204.99
+1744.6 190.45
+1623.5 175.61
+1511.8 160.95
+1409.3 146.85
+1315.4 133.58
+1229.5 121.34
+1151.1 110.22
+1079.3 100.27
+1013.4 91.467
+952.7 83.747
+896.53 77.029
+844.31 71.21
+795.49 66.183
+749.62 61.842
+706.32 58.086
+665.24 54.824
+626.12 51.976
+588.72 49.473
+552.86 47.258
+518.38 45.283
+485.15 43.511
+453.05 41.911
+421.98 40.461
+391.85 39.143
+362.58 37.943
+334.09 36.851
+306.31 35.861
+279.17 34.966
+252.6 34.165
+226.54 33.452
+200.92 32.829
+175.68 32.293
+150.75 31.844
+126.08 31.484
+101.59 31.212
+77.232 31.03
+52.941 30.939
+28.656 30.94
+4.313 31.033
+-20.15 31.219
+-44.797 31.498
+-69.693 31.872
+-94.905 32.34
+-120.5 32.905
+-146.55 33.569
+-173.14 34.337
+-200.33 35.214
+-228.2 36.207
+-256.85 37.325
+-286.35 38.579
+-316.82 39.981
+-348.34 41.545
+-381.02 43.283
+-414.97 45.212
+-450.32 47.348
+-487.19 49.708
+-525.72 52.312
+-566.06 55.18
+-608.36 58.337
+-652.79 61.813
+-699.54 65.64
+-748.81 69.862
+-800.82 74.526
+-855.8 79.694
+-914.04 85.437
+-975.83 91.846
+-1041.5 99.029
+-1111.6 107.12
+-1186.4 116.31
+-1266.6 126.8
+-1353 138.9
+-1446.4 152.99
+-1548 169.57
+-1659.3 189.31
+-1782.1 213.05
+-1918.8 241.92
+-2072.6 277.34
+-2247.4 321.08
+-2448.1 375.37
+-2680.9 442.9
+-2953.6 526.92
+-3275.8 631.23
+-3658.9 760.22
+-4116.8 918.84
+-4665.9 1112.5
+-5325 1347.2
+-6115.8 1628.9
+-7062.2 1963.9
+-8190.5 2357.9
+-9528.6 2816.3
+-11105 3343.1
+-12949 3940.9
+-15088 4609.7
+-17545 5347
+-20340 6146.3
+-23487 6997
+-26991 7884.3
+-30848 8788.4
+-35045 9685.4
+-39555 10548
+-44343 11346
+-49361 12050
+-54553 12630
+-59855 13059
+-65198 13317
+-70507 13389
+-75708 13270
+-80726 12958
+-85490 12463
+-89934 11796
+-93994 10965
+-97619 9976
+-100760 8823.6
+-103390 7492.2
+-105470 5959.4
+-106990 4205.1
+-107950 2224
+-108370 39.233
+-108250 -2289.8
+-107640 -4669.2
+-106570 -6984.5
+-105110 -9124.3
+-103310 -11006
+-101260 -12590
+-99044 -13878
+-96744 -14890
+-94442 -15619
+-92195 -16007
+-90031 -15933
+-87939 -15240
+-85870 -13803
+-83752 -11598
+-81502 -8752.4
+-79062 -5549.4
+-76420 -2374
+-73626 371.27
+-70795 2350.6
+-68077 3352
+-65621 3308.2
+-63529 2298.1
+-61825 542.54
+-60462 -1602.8
+-59343 -3683.3
+-58369 -5234.8
+-57470 -5921.5
+-56613 -5669.6
+-55791 -4714.3
+-55005 -3506.4
+-54273 -2503.6
+-53644 -1958.6
+-53230 -1836.9
+-53182 -1923.6
+-53629 -2045.8
+-54593 -2236.9
+-55946 -2694.5
+-57459 -3535.6
+-58935 -4537.5
+-60348 -5117.8
+-61887 -4669.8
+-63834 -3089.7
+-66339 -1106.4
+-69230 -53.467
+-72012 -1062.4
+-74098 -4114.1
+-75162 -7642
+-75349 -9158.6
+-75202 -6736.2
+-75266 -482.82
+-75666 7059.2
+-75960 12119
+-75451 11970
+-73816 6852.2
+-71576 90.456
+-69981 -3936.2
+-70228 -2815.1
+-72458 1999.6
+-75294 5988.2
+-76439 4832.6
+-74163 -2043.1
+-68760 -10419
+-62829 -13964
+-59879 -9145.1
+-61921 1219.8
+-67616 8906.3
+-72493 5842.9
+-71487 -9272.6
+-62398 -28351
+-47932 -38086
+-34621 -28900
+-28909 -2591.6
+-32754 27265
+-41760 43457
+-47499 36819
+-42992 13202
+-28060 -10041
+-10618 -17003
+-980.71 -7604
+0 0
+0 0
+68.556 -131.66
+649.37 -787.86
+1599.8 -1228
+2533.3 -1244.9
+3254.1 -989.89
+3722.9 -634.78
+3974.2 -294.26
+4067.5 -28.538
+4062.8 141.32
+4010.3 219.57
+3946.5 224.94
+3894.4 182.16
+3865.6 115.57
+3863.1 44.765
+3884.7 -17.559
+3925.7 -65.668
+3980.7 -99.291
+4045.7 -121.34
+4117.8 -135.7
+4195.4 -145.62
+4278.1 -153.03
+4365.8 -158.53
+4458.1 -161.86
+4554.6 -162.42
+4654.2 -159.7
+4755.5 -153.57
+4857 -144.35
+4957.2 -132.94
+5054.8 -120.69
+5148.7 -109.2
+5238.2 -100
+5322.9 -94.082
+5402.1 -91.575
+5475.5 -91.603
+5542.2 -92.494
+5601.5 -92.259
+5652.2 -89.187
+5693.2 -82.331
+5723.5 -71.693
+5742.3 -58.07
+5749 -42.633
+5743.5 -26.462
+5725.7 -10.228
+5695.9 5.86
+5654.3 21.845
+5601.5 37.701
+5538.5 53.064
+5466.2 67.175
+5386.2 79.053
+5300.1 87.829
+5209.8 93.09
+5116.9 95.076
+5022.9 94.641
+4929.1 92.99
+4836.1 91.299
+4744.7 90.339
+4655.2 90.248
+4568.3 90.501
+4484.8 90.075
+4406 87.728
+4333.2 82.298
+4268.3 72.935
+4213.3 59.23
+4170.2 41.205
+4141.3 19.24
+4128.3 -6.0655
+4133.2 -34.014
+4157.4 -63.915
+4202.3 -95.146
+4268.7 -127.17
+4357.3 -159.51
+4468.3 -191.73
+4601.4 -223.34
+4756.2 -253.79
+4931.5 -282.38
+5125.9 -308.25
+5337.2 -330.43
+5562.8 -347.83
+5799.3 -359.38
+6042.8 -364.06
+6288.6 -361.03
+6531.7 -349.68
+6766.4 -329.71
+6986.9 -301.08
+7187.1 -264.11
+7361.4 -219.38
+7504.2 -167.75
+7610.6 -110.33
+7676.7 -48.457
+7699.3 16.35
+7676.6 82.403
+7608.1 147.92
+7494.6 211.1
+7338.3 270.18
+7142.4 323.56
+6911.3 369.88
+6650.4 408.07
+6365.6 437.44
+6063 457.71
+5748.9 468.97
+5429.3 471.71
+5109.9 466.69
+4795.6 454.96
+4490.6 437.69
+4198.2 416.15
+3920.9 391.6
+3660.4 365.24
+3417.6 338.13
+3192.6 311.19
+2985.1 285.14
+2794.3 260.55
+2619.2 237.79
+2458.3 217.07
+2310.4 198.48
+2174.1 182
+2047.9 167.53
+1930.6 154.92
+1821.1 143.98
+1718.3 134.51
+1621.4 126.31
+1529.6 119.2
+1442.2 112.99
+1358.7 107.56
+1278.7 102.75
+1201.8 98.481
+1127.8 94.652
+1056.2 91.199
+986.96 88.068
+919.82 85.22
+854.61 82.622
+791.15 80.254
+729.3 78.099
+668.91 76.145
+609.83 74.383
+551.92 72.807
+495.05 71.412
+439.09 70.196
+383.91 69.157
+329.36 68.292
+275.34 67.602
+221.7 67.088
+168.33 66.749
+115.09 66.587
+61.868 66.602
+8.5244 66.796
+-45.064 67.171
+-99.028 67.728
+-153.5 68.468
+-208.61 69.397
+-264.5 70.516
+-321.31 71.833
+-379.19 73.354
+-438.29 75.09
+-498.78 77.053
+-560.81 79.257
+-624.57 81.719
+-690.23 84.457
+-758.01 87.493
+-828.09 90.848
+-900.71 94.547
+-976.1 98.614
+-1054.5 103.08
+-1136.2 107.97
+-1221.4 113.32
+-1310.4 119.16
+-1403.7 125.55
+-1501.4 132.53
+-1604 140.16
+-1711.8 148.52
+-1825.4 157.68
+-1945.1 167.77
+-2071.5 178.9
+-2205.2 191.24
+-2346.8 205.01
+-2497.3 220.47
+-2657.5 237.98
+-2828.8 258
+-3012.6 281.16
+-3211 308.28
+-3426.3 340.43
+-3661.8 379
+-3921.8 425.82
+-4211.4 483.17
+-4537.7 553.96
+-4909.2 641.74
+-5336.9 750.87
+-5834.5 886.52
+-6418.4 1054.7
+-7109 1262.5
+-7930.3 1517.5
+-8910.5 1828.2
+-10082 2203.6
+-11482 2652.7
+-13151 3184.6
+-15133 3807.2
+-17475 4527.4
+-20223 5349.6
+-23423 6275.4
+-27119 7302.3
+-31347 8423.3
+-36137 9625.6
+-41505 10890
+-47455 12192
+-53974 13500
+-61032 14777
+-68580 15982
+-76550 17073
+-84856 18006
+-93396 18742
+-102060 19246
+-110720 19491
+-119240 19459
+-127510 19143
+-135390 18547
+-142760 17683
+-149510 16570
+-155540 15225
+-160770 13665
+-165130 11894
+-168580 9911.4
+-171080 7707.5
+-172620 5276.9
+-173210 2629.7
+-172900 -195.98
+-171720 -3126
+-169770 -6053
+-167120 -8850.5
+-163880 -11397
+-160180 -13601
+-156130 -15420
+-151850 -16852
+-147470 -17922
+-143090 -18637
+-138780 -18959
+-134590 -18797
+-130510 -18028
+-126500 -16560
+-122490 -14391
+-118370 -11655
+-114060 -8616.8
+-109540 -5618.2
+-104830 -3004.1
+-100040 -1053.5
+-95335 57.465
+-90907 261.38
+-86903 -401.75
+-83403 -1773.9
+-80404 -3561.8
+-77845 -5349.4
+-75643 -6678.2
+-73724 -7195.2
+-72040 -6805.1
+-70558 -5730.4
+-69256 -4411.4
+-68147 -3280.2
+-67305 -2537
+-66886 -2086.2
+-67097 -1687.6
+-68096 -1223
+-69881 -861.11
+-72238 -953.96
+-74822 -1693
+-77337 -2779.6
+-79726 -3426
+-82229 -2814.3
+-85233 -780.73
+-88981 1773.9
+-93324 3186.1
+-97705 2044.5
+-101440 -1652.9
+-104130 -6043.9
+-105910 -8200.5
+-107350 -5916.9
+-109020 583.35
+-110960 8291.9
+-112560 12962
+-112980 11807
+-111910 5600
+-110080 -1490.1
+-109080 -4559.3
+-110320 -1545.6
+-113830 4866.3
+-117810 8758.1
+-119390 5296.6
+-116590 -5072.6
+-110000 -15936
+-103050 -18959
+-100170 -10344
+-103770 5006.2
+-112040 15438
+-119290 10308
+-119190 -11388
+-109030 -38078
+-92151 -51710
+-76545 -39814
+-69991 -5445.8
+-74638 32692
+-84690 51386
+-89192 38598
+-78770 2895.8
+-52578 -30821
+-21270 -38268
+-2168 -17184
+0 0
+0 0
+271.51 -454.03
+1935.3 -2033.8
+4011.9 -2620
+5738.6 -2369.3
+6941.8 -1758.4
+7669.4 -1086.7
+8033.8 -507.94
+8154.2 -85.266
+8133.3 172.15
+8049.9 285.55
+7957.8 290.94
+7888.9 228.08
+7857.9 132.92
+7867.8 32.889
+7914.4 -54.949
+7990.8 -123.26
+8090.2 -172.05
+8206.9 -205.49
+8337.6 -228.9
+8480.3 -246.72
+8634.2 -261.47
+8798.4 -273.87
+8972 -283.36
+9153.3 -288.91
+9340.1 -289.59
+9529.7 -285
+9719.6 -275.46
+9907.2 -262.01
+10090 -246.3
+10268 -230.29
+10438 -215.78
+10600 -203.93
+10752 -194.87
+10895 -187.57
+11026 -180.13
+11144 -170.33
+11247 -156.3
+11333 -137.12
+11399 -112.96
+11446 -84.908
+11471 -54.473
+11474 -23.06
+11456 8.3994
+11416 39.492
+11354 70.077
+11273 99.911
+11172 128.35
+11054 154.31
+10920 176.46
+10772 193.66
+10615 205.35
+10449 211.82
+10278 214.1
+10105 213.68
+9930.1 211.99
+9756.2 210
+9584.6 207.87
+9416.9 204.95
+9255.2 199.95
+9101.9 191.29
+8959.9 177.48
+8832.5 157.37
+8723.4 130.37
+8636.1 96.422
+8574.6 55.937
+8542.4 9.6345
+8542.9 -41.593
+8579.2 -96.796
+8653.9 -155.04
+8769.3 -215.44
+8926.9 -277.12
+9127.8 -339.19
+9372.4 -400.66
+9660.2 -460.41
+9989.8 -517.1
+10359 -569.15
+10763 -614.76
+11199 -652
+11660 -678.86
+12137 -693.43
+12623 -694
+13108 -679.22
+13580 -648.18
+14028 -600.49
+14440 -536.33
+14804 -456.45
+15109 -362.22
+15345 -255.56
+15504 -138.93
+15578 -15.259
+15564 112.15
+15458 239.76
+15263 363.91
+14982 481.07
+14620 587.96
+14185 681.77
+13689 760.28
+13141 822.01
+12554 866.23
+11941 893.01
+11313 903.12
+10682 897.98
+10058 879.47
+9449.2 849.84
+8863.1 811.5
+8304.9 766.87
+7778.1 718.27
+7284.8 667.81
+6825.7 617.28
+6400.4 568.16
+6007.7 521.57
+5645.4 478.26
+5311.2 438.72
+5002.6 403.15
+4716.7 371.54
+4451 343.72
+4203 319.41
+3970.4 298.27
+3751.4 279.92
+3544.1 263.99
+3347 250.11
+3159 237.97
+2979 227.28
+2806 217.8
+2639.4 209.32
+2478.5 201.7
+2322.8 194.79
+2171.9 188.51
+2025.3 182.78
+1882.7 177.54
+1743.8 172.76
+1608.2 168.41
+1475.5 164.46
+1345.6 160.91
+1218.2 157.73
+1092.9 154.92
+969.46 152.48
+847.64 150.4
+727.15 148.67
+607.74 147.3
+489.13 146.29
+371.07 145.62
+253.29 145.31
+135.54 145.36
+17.547 145.76
+-100.95 146.52
+-220.2 147.64
+-340.5 149.13
+-462.1 150.99
+-585.29 153.24
+-710.35 155.88
+-837.59 158.93
+-967.31 162.41
+-1099.8 166.34
+-1235.5 170.73
+-1374.6 175.63
+-1517.6 181.06
+-1664.8 187.05
+-1816.7 193.65
+-1973.7 200.88
+-2136.2 208.81
+-2304.6 217.46
+-2479.7 226.88
+-2661.7 237.14
+-2851.4 248.29
+-3049.2 260.4
+-3255.9 273.55
+-3472.1 287.82
+-3698.5 303.32
+-3935.9 320.19
+-4185.2 338.57
+-4447.2 358.66
+-4723 380.71
+-5013.8 405.06
+-5320.9 432.14
+-5646.1 462.51
+-5991.5 496.94
+-6359.6 536.47
+-6753.8 582.47
+-7178.4 636.73
+-7639.1 701.63
+-8143.2 780.2
+-8699.9 876.32
+-9321.5 994.85
+-10023 1141.8
+-10824 1324.3
+-11749 1551.1
+-12827 1832.1
+-14093 2178.6
+-15589 2603.2
+-17366 3119.4
+-19479 3741.2
+-21991 4482.6
+-24972 5356.8
+-28497 6375.1
+-32642 7546
+-37486 8874
+-43102 10358
+-49557 11990
+-56909 13754
+-65196 15626
+-74438 17572
+-84630 19548
+-95739 21504
+-107700 23379
+-120420 25111
+-133770 26636
+-147590 27889
+-161700 28814
+-175900 29362
+-189970 29498
+-203700 29201
+-216870 28464
+-229250 27299
+-240650 25728
+-250910 23784
+-259850 21504
+-267370 18921
+-273360 16064
+-277760 12952
+-280530 9600.2
+-281700 6027.9
+-281280 2270.6
+-279370 -1608
+-276070 -5509.5
+-271510 -9304.8
+-265870 -12850
+-259340 -16010
+-252110 -18688
+-244370 -20839
+-236320 -22469
+-228130 -23613
+-219950 -24299
+-211890 -24517
+-204030 -24209
+-196390 -23292
+-188940 -21713
+-181600 -19501
+-174280 -16801
+-166880 -13868
+-159350 -11004
+-151700 -8494.4
+-144020 -6551.3
+-136500 -5301.5
+-129320 -4797.5
+-122680 -5025.5
+-116720 -5884.5
+-111470 -7145.1
+-106920 -8438.8
+-103010 -9327
+-99694 -9455.7
+-96895 -8722.9
+-94558 -7345.4
+-92639 -5749.1
+-91143 -4322.5
+-90168 -3189.5
+-89921 -2174.6
+-90662 -1015.2
+-92569 320.68
+-95598 1474.9
+-99421 1889.3
+-103540 1277.9
+-107530 45.064
+-111280 -746.24
+-115080 8.3901
+-119440 2570.2
+-124700 5843.8
+-130750 7769.3
+-136970 6589
+-142590 2263
+-147140 -3009.6
+-150800 -5794.8
+-154210 -3580.9
+-157980 3244.9
+-162070 11107
+-165670 15206
+-167740 12727
+-167890 5121.1
+-167050 -2409.6
+-167130 -4358
+-169800 859.75
+-175010 9034.8
+-180510 12572
+-182830 6087.6
+-179660 -8642.7
+-171880 -22494
+-163790 -24720
+-160810 -11285
+-165870 10292
+-176690 24150
+-186370 16540
+-187220 -13139
+-175950 -49076
+-156540 -67489
+-138510 -52446
+-131130 -8561.7
+-136850 39217
+-148480 60297
+-152250 38881
+-135740 -13616
+-96013 -63496
+-44249 -75260
+-5736 -37998
+0 0
+0 0
+1538.4 -2175.8
+6248.8 -5170.1
+10247 -5232
+13083 -4215.9
+14903 -2926.2
+15937 -1731.3
+16419 -788.82
+16550 -141.01
+16492 232.82
+16362 385.24
+16234 380.53
+16152 281.39
+16132 140.37
+16176 -4.6142
+16275 -131.27
+16421 -230.93
+16603 -304.61
+16816 -358.47
+17056 -399.78
+17320 -434.17
+17608 -464.58
+17918 -491.42
+18247 -513.44
+18591 -528.85
+18947 -536.15
+19308 -534.74
+19671 -525.06
+20030 -508.55
+20383 -487.41
+20727 -464.12
+21058 -440.88
+21376 -419.03
+21678 -398.59
+21963 -378.26
+22226 -355.73
+22465 -328.46
+22676 -294.43
+22856 -252.78
+23001 -204.05
+23108 -149.83
+23178 -92.216
+23207 -33.161
+23197 25.981
+23147 84.475
+23058 141.92
+22931 197.76
+22768 250.97
+22571 299.97
+22342 342.87
+22086 378.06
+21806 404.62
+21508 422.71
+21195 433.46
+20873 438.57
+20544 439.76
+20213 438.17
+19884 433.98
+19560 426.33
+19246 413.57
+18947 393.64
+18668 364.55
+18415 324.75
+18196 273.34
+18018 210.1
+17887 135.46
+17810 50.252
+17795 -44.369
+17846 -147.11
+17971 -256.6
+18174 -371.4
+18459 -489.98
+18829 -610.68
+19285 -731.57
+19829 -850.41
+20457 -964.56
+21167 -1071
+21953 -1166.2
+22805 -1246.4
+23712 -1307.9
+24660 -1346.8
+25632 -1359.6
+26609 -1343.3
+27568 -1295.8
+28488 -1215.7
+29344 -1102.8
+30113 -958.02
+30771 -783.5
+31297 -582.59
+31672 -359.84
+31883 -120.82
+31918 128.02
+31772 379.64
+31445 626.75
+30942 862.15
+30274 1079.1
+29455 1271.9
+28504 1435.6
+27444 1567.1
+26298 1664.6
+25091 1727.8
+23847 1757.9
+22588 1757.6
+21337 1730.1
+20110 1679.9
+18923 1611.6
+17787 1529.9
+16709 1439.5
+15696 1344.4
+14748 1248.3
+13867 1154.3
+13048 1064.6
+12290 980.89
+11588 904.13
+10936 834.83
+10330 773.05
+9763.9 718.52
+9233.7 670.72
+8734.6 629.03
+8262.8 592.72
+7814.9 561.09
+7388 533.44
+6979.5 509.15
+6587.4 487.69
+6209.8 468.57
+5845.4 451.42
+5492.9 435.94
+5151.3 421.87
+4819.5 409.05
+4496.7 397.32
+4182.3 386.59
+3875.5 376.78
+3575.6 367.85
+3282 359.74
+2994.1 352.44
+2711.2 345.92
+2432.9 340.17
+2158.5 335.18
+1887.4 330.92
+1619.1 327.41
+1353.1 324.62
+1088.7 322.56
+825.51 321.21
+562.88 320.59
+300.31 320.69
+37.252 321.51
+-226.83 323.06
+-492.49 325.35
+-760.27 328.37
+-1030.7 332.16
+-1304.5 336.72
+-1582 342.07
+-1864 348.25
+-2151.1 355.28
+-2443.9 363.2
+-2743.1 372.06
+-3049.4 381.91
+-3363.6 392.79
+-3686.3 404.77
+-4018.4 417.92
+-4360.8 432.29
+-4714.3 447.96
+-5080 465.01
+-5458.7 483.53
+-5851.4 503.59
+-6259.4 525.3
+-6683.7 548.75
+-7125.4 574.08
+-7586 601.41
+-8066.6 630.9
+-8568.7 662.75
+-9093.7 697.18
+-9643.4 734.49
+-10219 775.08
+-10824 819.46
+-11460 868.33
+-12129 922.64
+-12835 983.69
+-13584 1053.2
+-14380 1133.5
+-15232 1227.8
+-16148 1340.1
+-17143 1475.7
+-18233 1641.3
+-19439 1845.3
+-20788 2097.9
+-22316 2411.7
+-24065 2801.1
+-26088 3283.2
+-28446 3876.9
+-31216 4603
+-34484 5483.6
+-38347 6541.1
+-42917 7797.4
+-48312 9272.2
+-54659 10981
+-62087 12935
+-70724 15136
+-80689 17576
+-92087 20237
+-105000 23086
+-119480 26076
+-135550 29146
+-153160 32221
+-172250 35212
+-192680 38024
+-214270 40556
+-236760 42705
+-259890 44377
+-283320 45487
+-306710 45967
+-329660 45769
+-351820 44872
+-372810 43275
+-392270 41006
+-409900 38109
+-425420 34648
+-438590 30691
+-449230 26309
+-457220 21568
+-462500 16526
+-465040 11239
+-464890 5765.2
+-462140 181.28
+-456950 -5409.6
+-449530 -10872
+-440120 -16044
+-429010 -20758
+-416520 -24862
+-402970 -28253
+-388660 -30891
+-373920 -32796
+-359000 -34028
+-344130 -34644
+-329500 -34674
+-315220 -34101
+-301370 -32889
+-287950 -31030
+-274910 -28591
+-262160 -25740
+-249610 -22729
+-237210 -19829
+-224930 -17268
+-212860 -15192
+-201150 -13668
+-190010 -12719
+-179650 -12341
+-170240 -12480
+-161880 -12963
+-154610 -13475
+-148400 -13613
+-143200 -13040
+-138930 -11666
+-135510 -9711.7
+-132870 -7584.2
+-130990 -5608.4
+-130000 -3805.1
+-130160 -1900.9
+-131790 382.17
+-135070 2949.9
+-139880 5192.2
+-145760 6285.9
+-152020 5829.3
+-158070 4367.2
+-163730 3318.2
+-169350 4159.7
+-175540 7296.1
+-182760 11417
+-190940 13993
+-199410 12852
+-207290 7900.7
+-214080 1727.7
+-220010 -1644.9
+-225850 638.37
+-232290 7970.8
+-239250 16079
+-245670 19493
+-250210 15365
+-252350 5979.7
+-253100 -2216.4
+-254720 -2983.6
+-259160 4694.9
+-266410 14793
+-273790 17724
+-277200 7466.4
+-273920 -12600
+-265010 -30106
+-255560 -31435
+-252080 -12268
+-258090 16765
+-271040 34811
+-282870 24424
+-284570 -14563
+-272150 -61382
+-250110 -85514
+-229490 -66925
+-221130 -11989
+-228010 47034
+-241790 70763
+-246090 38604
+-225220 -35398
+-173210 -108350
+-97868 -133230
+-21511 -85876
+0 0
+6197.2 -1185.4
+13212 -8124.8
+20177 -10466
+25757 -9104.8
+29613 -6812.6
+32013 -4499.6
+33314 -2552.2
+33861 -1106.5
+33951 -162.48
+33813 350.46
+33610 534.13
+33441 495.55
+33358 330.76
+33379 115.34
+33500 -99.429
+33706 -285.69
+33985 -434.56
+34324 -549.67
+34718 -640.46
+35162 -716.67
+35657 -785.05
+36201 -848.17
+36790 -905.16
+37419 -953.14
+38081 -988.93
+38766 -1010.2
+39464 -1016.3
+40167 -1008
+40868 -987.76
+41558 -958.62
+42235 -923.94
+42892 -886.45
+43526 -847.59
+44133 -807.1
+44707 -763.12
+45242 -712.75
+45733 -652.95
+46171 -581.59
+46550 -498.11
+46865 -403.75
+47111 -301.08
+47285 -193.2
+47385 -82.999
+47411 27.48
+47363 137.01
+47242 244.79
+47050 349.86
+46787 450.6
+46458 544.67
+46067 629.27
+45619 701.86
+45121 760.79
+44581 805.74
+44006 837.67
+43406 858.37
+42787 869.75
+42158 873.05
+41527 868.39
+40902 854.58
+40291 829.38
+39706 790.01
+39156 733.68
+38654 658.15
+38214 561.97
+37848 444.61
+37570 306.36
+37395 148.19
+37335 -28.486
+37404 -221.92
+37613 -430.08
+37974 -650.7
+38496 -881.12
+39188 -1118.3
+40053 -1358.4
+41094 -1597.2
+42310 -1829.4
+43695 -2048.9
+45238 -2249
+46925 -2422.3
+48733 -2561.1
+50636 -2657.7
+52602 -2704.9
+54592 -2696.3
+56564 -2626.8
+58472 -2492.9
+60269 -2293.1
+61905 -2028.4
+63332 -1702
+64507 -1319.7
+65389 -889.9
+65946 -423.22
+66152 67.798
+65995 569.22
+65469 1066.4
+64582 1544.7
+63352 1990.2
+61806 2390.7
+59980 2736.2
+57918 3019.3
+55665 3235.5
+53271 3383.8
+50786 3465.8
+48256 3485.8
+45724 3450.5
+43228 3367.8
+40800 3247
+38464 3097.3
+36239 2928
+34136 2747.5
+32160 2563.2
+30312 2381.3
+28590 2206.6
+26987 2042.7
+25496 1891.7
+24105 1754.8
+22806 1632.4
+21589 1523.8
+20445 1428.4
+19363 1344.9
+18338 1271.9
+17362 1208
+16429 1152
+15534 1102.6
+14673 1058.8
+13842 1019.7
+13039 984.46
+12261 952.56
+11505 923.51
+10771 896.97
+10055 872.67
+9356.5 850.41
+8674.1 830.05
+8006.2 811.49
+7351.6 794.66
+6709 779.51
+6077 765.99
+5454.5 754.07
+4840.2 743.72
+4232.9 734.92
+3631.4 727.65
+3034.6 721.9
+2441.4 717.65
+1850.5 714.88
+1260.9 713.61
+671.37 713.81
+80.875 715.5
+-511.74 718.68
+-1107.6 723.36
+-1707.9 729.56
+-2313.7 737.3
+-2926.2 746.62
+-3546.7 757.56
+-4176.3 770.17
+-4816.3 784.5
+-5468.1 800.62
+-6133 818.62
+-6812.5 838.59
+-7507.9 860.61
+-8220.9 884.79
+-8953.1 911.25
+-9706.1 940.11
+-10482 971.49
+-11282 1005.5
+-12108 1042.4
+-12963 1082.1
+-13849 1125
+-14767 1171.1
+-15720 1220.7
+-16710 1274
+-17740 1331.1
+-18813 1392.4
+-19930 1458.2
+-21096 1528.9
+-22312 1605.2
+-23584 1688
+-24914 1778.3
+-26308 1877.7
+-27772 1988.5
+-29315 2113.6
+-30946 2257.2
+-32678 2424.8
+-34530 2623.6
+-36524 2862.8
+-38690 3154.4
+-41067 3513
+-43705 3956.9
+-46666 4507.6
+-50027 5190.7
+-53882 6035.2
+-58343 7073.6
+-63545 8341
+-69640 9874.1
+-76802 11709
+-85224 13881
+-95111 16419
+-106680 19345
+-120150 22669
+-135720 26388
+-153600 30479
+-173940 34901
+-196860 39589
+-222410 44453
+-250590 49382
+-281310 54243
+-314390 58886
+-349550 63149
+-386440 66867
+-424610 69879
+-463540 72038
+-502640 73218
+-541290 73325
+-578850 72298
+-614670 70120
+-648140 66813
+-678700 62435
+-705830 57082
+-729110 50870
+-748210 43932
+-762890 36406
+-772990 28423
+-778470 20110
+-779370 11587
+-775820 2976.9
+-768040 -5581.5
+-756330 -13926
+-741060 -21868
+-722680 -29202
+-701670 -35726
+-678540 -41270
+-653810 -45729
+-628000 -49074
+-601570 -51354
+-574960 -52664
+-548520 -53112
+-522550 -52778
+-497260 -51703
+-472800 -49911
+-449220 -47445
+-426530 -44421
+-404670 -41040
+-383590 -37562
+-363200 -34241
+-343500 -31262
+-324530 -28707
+-306400 -26582
+-289330 -24867
+-273500 -23552
+-259140 -22606
+-246390 -21908
+-235320 -21199
+-225950 -20125
+-218220 -18393
+-212020 -15948
+-207220 -13023
+-203700 -9995.7
+-201440 -7103
+-200610 -4233.2
+-201500 -999.31
+-204470 2878.1
+-209710 7130
+-216990 10825
+-225680 12813
+-234870 12557
+-243780 10781
+-252170 9348.5
+-260380 10203
+-269170 13943
+-279100 19023
+-290150 22372
+-301570 21328
+-312400 15728
+-322070 8614.3
+-330880 4697.2
+-339800 7231.5
+-349660 15336
+-360330 23883
+-370520 26568
+-378500 20459
+-383460 8800.6
+-386430 -464.67
+-389940 -166.46
+-396360 10130
+-405810 22321
+-415330 24475
+-420240 9748.6
+-417230 -16693
+-407310 -38746
+-396220 -39402
+-391480 -13890
+-397400 23690
+-411450 46766
+-424720 33548
+-426950 -15809
+-413320 -75021
+-388550 -105890
+-364950 -83559
+-354920 -16162
+-362360 55899
+-378380 83184
+-384700 39262
+-363110 -59500
+-305510 -160630
+-218780 -205650
+-124140 -163070
+-41506 -35134
+43097 -5890.1
+49811 -13004
+55928 -15577
+61624 -13438
+65881 -9844.6
+68549 -6313.7
+69912 -3431.4
+70366 -1363.8
+70291 -72.36
+69986 578.2
+69663 758.03
+69445 634.62
+69392 350.54
+69513 12.093
+69795 -313.39
+70213 -593.46
+70748 -821.92
+71386 -1008.2
+72122 -1167.2
+72959 -1311.9
+73896 -1449.3
+74934 -1579.9
+76065 -1699.4
+77281 -1801.4
+78563 -1880
+79896 -1931.7
+81260 -1955.7
+82639 -1954.1
+84019 -1931
+85387 -1891.1
+86734 -1839.2
+88050 -1778.7
+89328 -1711
+90559 -1635.1
+91730 -1548.1
+92830 -1446
+93845 -1325.3
+94763 -1183.8
+95569 -1021.7
+96255 -841.69
+96810 -648.13
+97230 -446.02
+97512 -239.8
+97654 -32.697
+97656 173.3
+97519 376.85
+97244 576.38
+96834 769.4
+96293 952.28
+95627 1120.6
+94846 1270.2
+93959 1397.8
+92981 1501.9
+91926 1582.7
+90809 1641.7
+89646 1680.6
+88452 1700.8
+87244 1702
+86038 1682.3
+84852 1638.6
+83706 1566.8
+82623 1462.6
+81626 1322.7
+80741 1144.4
+79993 926.58
+79412 669.01
+79023 372.58
+78856 38.927
+78937 -329.64
+79292 -730.16
+79946 -1159
+80920 -1611.5
+82231 -2082
+83895 -2563.5
+85918 -3047.4
+88302 -3523.2
+91038 -3979.2
+94109 -4401.6
+97488 -4775.9
+101130 -5086.3
+105000 -5317.3
+109020 -5453.7
+113110 -5481.8
+117210 -5390.1
+121210 -5170
+125010 -4816.9
+128520 -4330.6
+131640 -3716
+134270 -2982.9
+136320 -2146.7
+137730 -1227.7
+138440 -250.12
+138410 758.27
+137630 1768
+136100 2749.1
+133850 3672.8
+130940 4513.4
+127420 5249
+123390 5863.1
+118940 6345.4
+114160 6691.5
+109160 6903.3
+104030 6988.4
+98869 6958.7
+93748 6829.8
+88739 6619.5
+83895 6346.4
+79256 6029
+74850 5684.8
+70691 5328.9
+66784 4974.3
+63126 4631.2
+59705 4307.1
+56508 4007
+53515 3733.7
+50708 3488
+48068 3269.5
+45576 3076.5
+43215 2907
+40969 2758.3
+38825 2627.7
+36771 2512.8
+34796 2411.1
+32892 2320.6
+31053 2239.4
+29271 2166.2
+27541 2099.7
+25859 2039.1
+24221 1983.6
+22623 1932.8
+21062 1886.2
+19535 1843.5
+18039 1804.7
+16570 1769.5
+15127 1737.8
+13706 1709.5
+12305 1684.6
+10922 1663
+9552.6 1644.6
+8196 1629.5
+6849.2 1617.5
+5509.8 1608.7
+4175.3 1602.9
+2843.5 1600.3
+1512 1600.7
+178.38 1604.2
+-1159.7 1610.8
+-2504.5 1620.4
+-3858.4 1633.2
+-5223.8 1649.2
+-6603.2 1668.4
+-7999 1690.8
+-9413.8 1716.7
+-10850 1746.1
+-12311 1779.2
+-13798 1816
+-15316 1856.7
+-16866 1901.6
+-18453 1950.8
+-20078 2004.5
+-21747 2062.9
+-23461 2126.3
+-25225 2194.8
+-27043 2268.8
+-28919 2348.5
+-30856 2434.1
+-32859 2525.8
+-34932 2624.1
+-37080 2729
+-39307 2841.1
+-41618 2960.7
+-44018 3088.2
+-46512 3224.4
+-49106 3370.3
+-51806 3527.1
+-54620 3696.7
+-57555 3882
+-60623 4086.6
+-63838 4316
+-67218 4577.4
+-70787 4880.6
+-74576 5238.5
+-78627 5667.9
+-82994 6190.1
+-87748 6831.6
+-92979 7624.6
+-98800 8607.7
+-105350 9825.8
+-112800 11330
+-121360 13176
+-131260 15425
+-142780 18137
+-156230 21373
+-171950 25187
+-190280 29623
+-211610 34708
+-236310 40450
+-264700 46827
+-297110 53787
+-333770 61241
+-374840 69058
+-420360 77073
+-470240 85078
+-524260 92838
+-582020 100090
+-642990 106570
+-706470 111990
+-771620 116110
+-837480 118680
+-903010 119540
+-967110 118540
+-1.0287e+06 115640
+-1.0866e+06 110820
+-1.1399e+06 104160
+-1.1877e+06 95792
+-1.2291e+06 85909
+-1.2635e+06 74734
+-1.2905e+06 62515
+-1.3098e+06 49509
+-1.3212e+06 35966
+-1.3247e+06 22126
+-1.3206e+06 8217.6
+-1.3092e+06 -5534.6
+-1.2909e+06 -18899
+-1.2664e+06 -31628
+-1.2363e+06 -43463
+-1.2013e+06 -54139
+-1.1624e+06 -63417
+-1.1203e+06 -71113
+-1.0759e+06 -77124
+-1.0299e+06 -81451
+-983230 -84185
+-936440 -85484
+-890140 -85524
+-844800 -84465
+-800770 -82428
+-758330 -79510
+-717640 -75828
+-678770 -71556
+-641730 -66940
+-606500 -62266
+-573030 -57792
+-541280 -53678
+-511260 -49959
+-483040 -46584
+-456770 -43480
+-432660 -40605
+-410910 -37931
+-391720 -35375
+-375200 -32738
+-361360 -29743
+-350120 -26174
+-341280 -22031
+-334640 -17566
+-330010 -13107
+-327370 -8769.5
+-326890 -4277
+-328930 880.41
+-333860 6959.3
+-341810 13460
+-352450 19057
+-364930 22218
+-378100 22258
+-391010 20124
+-403280 18208
+-415300 19014
+-427910 23388
+-441780 29532
+-456890 33762
+-472440 32848
+-487340 26538
+-500940 18394
+-513640 13932
+-526570 16889
+-540800 26071
+-556210 35324
+-571270 37293
+-583790 28842
+-592500 14260
+-598270 3255.4
+-603880 4225.5
+-612200 17134
+-623740 31613
+-635520 33000
+-642320 13299
+-640090 -20552
+-629420 -48329
+-616290 -49066
+-609070 -17156
+-613110 29738
+-626420 58759
+-639750 43072
+-641820 -17218
+-626790 -90066
+-599030 -128860
+-571540 -103090
+-558150 -22317
+-564120 64556
+-581100 97117
+-590170 42133
+-571650 -82115
+-516280 -212950
+-431270 -278380
+-335790 -238070
+-233260 -118950
+124460 -10723
+130090 -17476
+135220 -19914
+140100 -17395
+143900 -12730
+146220 -7973.6
+147180 -4077.9
+147180 -1337.5
+146680 294.44
+146020 1023
+145490 1106.3
+145210 793.74
+145240 290.67
+145580 -256.96
+146180 -764.26
+147010 -1198.1
+148030 -1561.2
+149240 -1874.9
+150640 -2163.5
+152230 -2443.9
+154030 -2721.3
+156030 -2990.4
+158220 -3238.9
+160590 -3453.1
+163100 -3622.1
+165720 -3740
+168410 -3806.5
+171140 -3826.1
+173890 -3806
+176620 -3754.2
+179330 -3677.7
+181990 -3580.9
+184580 -3464.6
+187100 -3326.4
+189500 -3161.5
+191780 -2964
+193900 -2729.3
+195830 -2455.8
+197560 -2145.4
+199050 -1803.6
+200310 -1438.2
+201300 -1057.7
+202030 -669.3
+202490 -278.23
+202690 112.31
+202620 500.21
+202280 883.03
+201680 1256.9
+200810 1616
+199700 1953
+198350 2260.5
+196780 2532
+195020 2763.1
+193090 2952.3
+191020 3099.6
+188840 3206.3
+186580 3272.9
+184270 3298.3
+181950 3279.5
+179650 3211.1
+177410 3086.9
+175280 2900.1
+173300 2644.6
+171530 2315.7
+170010 1910.3
+168810 1427.1
+167970 866.18
+167570 229.15
+167640 -481.17
+168260 -1260.5
+169470 -2103
+171320 -3000.7
+173860 -3943
+177110 -4916.4
+181100 -5904.3
+185840 -6886.1
+191310 -7838.2
+197500 -8733.4
+204340 -9541.9
+211780 -10232
+219710 -10772
+228010 -11129
+236530 -11274
+245110 -11182
+253560 -10832
+261690 -10212
+269270 -9317.7
+276120 -8154.8
+282020 -6740.4
+286790 -5102.3
+290280 -3278.7
+292340 -1317.2
+292900 727.21
+291910 2794.9
+289360 4824.5
+285300 6756.1
+279820 8534.7
+273050 10113
+265140 11454
+256300 12534
+246710 13338
+236580 13869
+226120 14138
+215510 14168
+204930 13987
+194510 13631
+184380 13138
+174630 12544
+165320 11887
+156500 11197
+148170 10501
+140330 9822.6
+132970 9176.8
+126060 8575.3
+119570 8024.4
+113450 7526.9
+107680 7082.4
+102220 6688.3
+97025 6340.6
+92072 6034.5
+87331 5764.7
+82778 5526.3
+78393 5314.6
+74158 5125.6
+70058 4955.8
+66080 4802.1
+62213 4662.4
+58447 4534.8
+54775 4417.9
+51188 4310.8
+47679 4212.6
+44242 4122.7
+40870 4040.9
+37557 3966.7
+34298 3900
+31086 3840.6
+27916 3788.4
+24782 3743.1
+21680 3704.6
+18603 3673
+15547 3647.9
+12506 3629.5
+9475.7 3617.5
+6450.8 3612
+3426.5 3612.9
+397.79 3620.2
+-2640.2 3633.9
+-5692.3 3653.9
+-8763.5 3680.4
+-11859 3713.5
+-14983 3753.2
+-18142 3799.7
+-21339 3853.2
+-24582 3913.8
+-27875 3981.9
+-31223 4057.5
+-34634 4141.2
+-38112 4233.1
+-41664 4333.7
+-45297 4443.3
+-49018 4562.3
+-52833 4691.1
+-56750 4830.1
+-60776 4979.8
+-64919 5140.5
+-69188 5312.6
+-73589 5496.6
+-78133 5692.8
+-82827 5901.7
+-87679 6123.7
+-92699 6359.2
+-97895 6609.1
+-103280 6874.3
+-108860 7156.1
+-114640 7456.9
+-120650 7779.7
+-126880 8129.3
+-133380 8512.3
+-140150 8938.2
+-147230 9420.3
+-154660 9976.2
+-162500 10629
+-170830 11411
+-179740 12358
+-189360 13521
+-199870 14957
+-211460 16735
+-224400 18937
+-239000 21652
+-255620 24979
+-274710 29021
+-296760 33883
+-322320 39662
+-351980 46445
+-386370 54294
+-426140 63242
+-471890 73278
+-524200 84341
+-583530 96311
+-650240 109000
+-724500 122170
+-806280 135480
+-895300 148570
+-991030 161000
+-1.0927e+06 172340
+-1.1991e+06 182100
+-1.309e+06 189840
+-1.4207e+06 195150
+-1.5326e+06 197680
+-1.6428e+06 197160
+-1.7493e+06 193430
+-1.8503e+06 186450
+-1.9439e+06 176290
+-2.0284e+06 163140
+-2.1024e+06 147270
+-2.1647e+06 129060
+-2.2143e+06 108940
+-2.2508e+06 87375
+-2.2737e+06 64828
+-2.283e+06 41758
+-2.2791e+06 18597
+-2.2625e+06 -4249.7
+-2.2339e+06 -26399
+-2.1942e+06 -47480
+-2.1447e+06 -67129
+-2.0864e+06 -84995
+-2.0208e+06 -100750
+-1.9493e+06 -114120
+-1.8732e+06 -124920
+-1.7939e+06 -133080
+-1.7126e+06 -138640
+-1.6307e+06 -141780
+-1.5491e+06 -142740
+-1.4687e+06 -141820
+-1.3903e+06 -139300
+-1.3145e+06 -135390
+-1.2417e+06 -130320
+-1.1723e+06 -124300
+-1.1063e+06 -117570
+-1.0441e+06 -110450
+-985450 -103270
+-930460 -96332
+-879050 -89793
+-831150 -83672
+-786760 -77867
+-745950 -72242
+-708880 -66694
+-675770 -61171
+-646830 -55613
+-622160 -49901
+-601750 -43873
+-585400 -37430
+-572770 -30658
+-563520 -23816
+-557370 -17147
+-554260 -10596
+-554380 -3690.9
+-558110 4198.1
+-565790 13265
+-577460 22718
+-592610 30776
+-610150 35489
+-628740 36020
+-647200 33584
+-665080 31173
+-682730 31929
+-701020 36988
+-720690 44296
+-741710 49494
+-763200 48711
+-783900 41577
+-803090 32230
+-821140 27115
+-839420 30566
+-859220 41084
+-880560 51330
+-901710 52628
+-919950 41426
+-933370 23057
+-942450 9268.9
+-950100 10104
+-959820 25358
+-972910 42359
+-986750 43301
+-995760 18488
+-994950 -23689
+-983850 -58723
+-968060 -61087
+-956500 -23635
+-955810 32747
+-965320 68659
+-976300 51481
+-976900 -19500
+-959920 -106790
+-928490 -154990
+-895260 -127050
+-875110 -33047
+-875270 70012
+-889440 110400
+-899820 47160
+-886330 -100550
+-837690 -260630
+-756940 -348930
+-655320 -320800
+-541430 -209470
+297690 -14441
+301610 -20856
+305030 -23005
+308080 -20153
+310250 -14619
+311120 -8751.6
+310770 -3900.4
+309600 -562.85
+308120 1280.3
+306750 1906.5
+305800 1685
+305410 973.98
+305620 62.921
+306380 -852.93
+307600 -1672.7
+309220 -2372
+311180 -2975.7
+313500 -3528.3
+316170 -4070
+319240 -4622.4
+322720 -5184.5
+326620 -5736.9
+330920 -6251
+335570 -6698.4
+340530 -7058.2
+345720 -7320.2
+351070 -7485.2
+356520 -7562.5
+362030 -7565.2
+367540 -7507.2
+373020 -7399.4
+378430 -7247.3
+383740 -7050.9
+388910 -6804.4
+393890 -6499.3
+398630 -6126.4
+403070 -5679.6
+407180 -5158.1
+410880 -4567.6
+414150 -3919.2
+416960 -3227.2
+419280 -2506.5
+421090 -1769.5
+422390 -1025
+423180 -278.08
+423440 468.04
+423180 1209.7
+422390 1940.7
+421090 2651.3
+419290 3329
+417000 3959.7
+414260 4530.5
+411120 5031.3
+407610 5455.6
+403790 5800.5
+399710 6064.9
+395450 6247.4
+391060 6345
+386600 6351.5
+382160 6258
+377810 6053.3
+373630 5725.3
+369730 5262.9
+366190 4656.5
+363140 3898.9
+360690 2985.4
+358950 1914
+358040 685
+358080 -698.64
+359200 -2231.1
+361510 -3902.8
+365110 -5699.9
+370100 -7602.9
+376570 -9586.1
+384560 -11617
+394100 -13655
+405210 -15653
+417820 -17556
+431860 -19304
+447190 -20833
+463630 -22075
+480940 -22963
+498840 -23434
+516980 -23431
+535000 -22909
+552480 -21833
+568990 -20190
+584090 -17984
+597370 -15242
+608420 -12013
+616880 -8371.2
+622460 -4407.9
+624950 -232.85
+624210 4033
+620210 8263.1
+613010 12332
+602770 16123
+589740 19532
+574210 22478
+556580 24900
+537240 26766
+516620 28070
+495140 28829
+473190 29083
+451150 28890
+429340 28317
+408000 27441
+387360 26338
+367550 25083
+348670 23742
+330770 22373
+313860 21023
+297900 19728
+282870 18514
+268680 17395
+255280 16380
+242580 15468
+230520 14656
+219020 13936
+208030 13300
+197490 12738
+187340 12239
+177550 11795
+168070 11397
+158880 11039
+149950 10714
+141260 10418
+132790 10148
+124510 9900.5
+116420 9673.5
+108490 9465.4
+100710 9275.2
+93075 9102.1
+85564 8945.5
+78165 8804.7
+70867 8679.5
+63657 8569.4
+56524 8474.2
+49456 8393.5
+42443 8327.1
+35472 8274.8
+28534 8236.3
+21618 8211.5
+14712 8200.1
+7807.9 8202.1
+894.06 8217.5
+-6039.4 8246.1
+-13003 8288
+-20006 8343.3
+-27060 8412.2
+-34174 8494.8
+-41360 8591.3
+-48628 8702.2
+-55988 8827.7
+-63453 8968.3
+-71034 9124.6
+-78743 9296.9
+-86592 9486.1
+-94594 9692.7
+-102760 9917.3
+-111110 10161
+-119650 10424
+-128400 10707
+-137380 11011
+-146590 11337
+-156060 11685
+-165800 12056
+-175820 12451
+-186150 12869
+-196800 13311
+-207780 13779
+-219120 14272
+-230820 14792
+-242910 15341
+-255400 15923
+-268320 16543
+-281690 17208
+-295550 17932
+-309930 18730
+-324900 19627
+-340530 20656
+-356920 21860
+-374220 23295
+-392600 25032
+-412310 27162
+-433660 29789
+-457020 33042
+-482870 37064
+-511800 42018
+-544480 48078
+-581710 55424
+-624380 64233
+-673480 74665
+-730090 86855
+-795290 100890
+-870180 116790
+-955800 134490
+-1.0531e+06 153860
+-1.1627e+06 174610
+-1.2852e+06 196390
+-1.4206e+06 218690
+-1.5687e+06 240910
+-1.7288e+06 262350
+-1.8996e+06 282250
+-2.0796e+06 299820
+-2.2664e+06 314260
+-2.4576e+06 324830
+-2.6501e+06 330870
+-2.8408e+06 331870
+-3.0264e+06 327450
+-3.2034e+06 317470
+-3.3686e+06 301950
+-3.519e+06 281130
+-3.6518e+06 255450
+-3.7647e+06 225510
+-3.8561e+06 192020
+-3.9246e+06 155790
+-3.9696e+06 117670
+-3.9909e+06 78510
+-3.989e+06 39122
+-3.9646e+06 257.34
+-3.9191e+06 -37393
+-3.8539e+06 -73201
+-3.7711e+06 -106600
+-3.6727e+06 -137060
+-3.5611e+06 -164140
+-3.4385e+06 -187450
+-3.3073e+06 -206700
+-3.1698e+06 -221760
+-3.0284e+06 -232620
+-2.8849e+06 -239440
+-2.7413e+06 -242520
+-2.5992e+06 -242280
+-2.4601e+06 -239170
+-2.3251e+06 -233640
+-2.1952e+06 -226100
+-2.0711e+06 -216940
+-1.9534e+06 -206480
+-1.8422e+06 -195100
+-1.7379e+06 -183210
+-1.6406e+06 -171230
+-1.5502e+06 -159520
+-1.4665e+06 -148310
+-1.3895e+06 -137620
+-1.3189e+06 -127340
+-1.2548e+06 -117220
+-1.1971e+06 -107070
+-1.1461e+06 -96789
+-1.1019e+06 -86321
+-1.0646e+06 -75666
+-1.0342e+06 -64839
+-1.01e+06 -53921
+-991630 -43102
+-978410 -32622
+-969930 -22571
+-966080 -12661
+-967030 -2198.1
+-973120 9540.6
+-984580 22626
+-1.0012e+06 35912
+-1.0224e+06 47133
+-1.0467e+06 53919
+-1.0726e+06 55313
+-1.0988e+06 52825
+-1.1247e+06 50084
+-1.1506e+06 50899
+-1.1773e+06 56733
+-1.2054e+06 65286
+-1.235e+06 71501
+-1.265e+06 70808
+-1.294e+06 62670
+-1.3211e+06 51816
+-1.3466e+06 45735
+-1.372e+06 49518
+-1.3988e+06 61442
+-1.4273e+06 72881
+-1.4557e+06 73542
+-1.4808e+06 59108
+-1.4998e+06 35819
+-1.5124e+06 17703
+-1.5216e+06 17006
+-1.5315e+06 33938
+-1.5449e+06 53718
+-1.5599e+06 54998
+-1.5711e+06 25541
+-1.5723e+06 -25606
+-1.561e+06 -69858
+-1.5415e+06 -76517
+-1.5227e+06 -35762
+-1.5128e+06 29316
+-1.5136e+06 73009
+-1.5182e+06 56166
+-1.5149e+06 -24100
+-1.4946e+06 -126010
+-1.4578e+06 -185550
+-1.4155e+06 -158250
+-1.3826e+06 -52977
+-1.3693e+06 66681
+-1.3732e+06 118190
+-1.3801e+06 51951
+-1.3709e+06 -114090
+-1.3313e+06 -301170
+-1.2578e+06 -415620
+-1.1553e+06 -407640
+-1.0352e+06 -305940
+665940 -15993
+666570 -21996
+666520 -23676
+665840 -20364
+664320 -14072
+661760 -7299.3
+658330 -1734.8
+654520 1903.9
+650920 3593.7
+648050 3699.3
+646230 2736
+645610 1211
+646130 -473.61
+647660 -2062.5
+650050 -3446.7
+653160 -4631.5
+656930 -5688.9
+661380 -6707.7
+666560 -7755.8
+672530 -8859.7
+679340 -10002
+687010 -11135
+695500 -12196
+704740 -13128
+714600 -13890
+724960 -14465
+735680 -14856
+746660 -15079
+757790 -15159
+768980 -15122
+780150 -14985
+791230 -14755
+802160 -14430
+812840 -13999
+823200 -13444
+833120 -12751
+842500 -11911
+851240 -10925
+859230 -9806.1
+866400 -8575.3
+872680 -7260
+878020 -5887.2
+882390 -4479
+885770 -3050.5
+888150 -1610.2
+889500 -162.82
+889820 1286
+889110 2726.3
+887360 4141.3
+884600 5508.3
+880850 6800.6
+876160 7992
+870620 9060.1
+864310 9988.4
+857330 10766
+849780 11387
+841790 11844
+833480 12130
+824980 12233
+816440 12134
+808010 11813
+799870 11248
+792210 10415
+785240 9294.6
+779180 7870.2
+774260 6129
+770730 4062.9
+768830 1668
+768840 -1054.4
+770990 -4096.8
+775550 -7444.4
+782740 -11073
+792790 -14946
+805870 -19015
+822120 -23216
+841640 -27469
+864450 -31681
+890480 -35740
+919600 -39525
+951540 -42902
+985980 -45731
+1.0224e+06 -47872
+1.0603e+06 -49188
+1.099e+06 -49555
+1.1377e+06 -48866
+1.1756e+06 -47041
+1.2118e+06 -44036
+1.2453e+06 -39845
+1.2752e+06 -34508
+1.3007e+06 -28114
+1.321e+06 -20798
+1.3355e+06 -12740
+1.3435e+06 -4159.1
+1.3448e+06 4700
+1.3393e+06 13575
+1.3269e+06 22203
+1.308e+06 30333
+1.283e+06 37741
+1.2525e+06 44239
+1.2172e+06 49691
+1.1781e+06 54010
+1.1359e+06 57167
+1.0915e+06 59185
+1.0459e+06 60133
+999700 60120
+953710 59282
+908480 57770
+864470 55744
+822020 53357
+781380 50750
+742650 48049
+705900 45354
+671090 42745
+638150 40280
+606960 37993
+577380 35906
+549280 34022
+522510 32337
+496920 30837
+472390 29505
+448810 28324
+426070 27273
+404090 26334
+382780 25491
+362090 24730
+341950 24040
+322320 23411
+303150 22836
+284410 22309
+266050 21826
+248050 21384
+230370 20980
+212990 20613
+195880 20282
+179000 19984
+162340 19720
+145860 19488
+129550 19287
+113370 19118
+97304 18979
+81330 18870
+65422 18790
+49560 18738
+33720 18715
+17881 18720
+2020.8 18753
+-13881 18813
+-29846 18901
+-45895 19017
+-62050 19161
+-78332 19334
+-94764 19535
+-111370 19765
+-128160 20026
+-145180 20317
+-162430 20641
+-179950 20997
+-197760 21387
+-215880 21813
+-234350 22275
+-253190 22774
+-272430 23313
+-292100 23892
+-312220 24513
+-332830 25176
+-353960 25883
+-375650 26633
+-397910 27429
+-420780 28269
+-444300 29155
+-468490 30087
+-493390 31064
+-519010 32090
+-545390 33166
+-572570 34297
+-600580 35493
+-629450 36767
+-659260 38141
+-690070 39646
+-721980 41326
+-755130 43241
+-789710 45473
+-825980 48127
+-864270 51336
+-905040 55265
+-948850 60112
+-996420 66111
+-1.0486e+06 73524
+-1.1066e+06 82646
+-1.1715e+06 93785
+-1.2449e+06 107260
+-1.3284e+06 123360
+-1.4237e+06 142360
+-1.5328e+06 164460
+-1.6576e+06 189760
+-1.8e+06 218230
+-1.9618e+06 249710
+-2.1443e+06 283840
+-2.3486e+06 320050
+-2.5753e+06 357590
+-2.8242e+06 395490
+-3.0944e+06 432600
+-3.3842e+06 467650
+-3.6909e+06 499260
+-4.0112e+06 526030
+-4.3408e+06 546610
+-4.6746e+06 559790
+-5.0072e+06 564540
+-5.3327e+06 560110
+-5.6451e+06 546080
+-5.9385e+06 522360
+-6.2074e+06 489240
+-6.4466e+06 447350
+-6.652e+06 397640
+-6.82e+06 341310
+-6.9481e+06 279760
+-7.0349e+06 214510
+-7.0798e+06 147090
+-7.0834e+06 79009
+-7.047e+06 11687
+-6.9727e+06 -53594
+-6.8633e+06 -115690
+-6.722e+06 -173610
+-6.5526e+06 -226510
+-6.3591e+06 -273680
+-6.1457e+06 -314560
+-5.9164e+06 -348760
+-5.6753e+06 -376070
+-5.4263e+06 -396480
+-5.173e+06 -410160
+-4.9187e+06 -417500
+-4.6664e+06 -419050
+-4.4186e+06 -415460
+-4.1776e+06 -407470
+-3.9452e+06 -395830
+-3.7228e+06 -381210
+-3.5115e+06 -364240
+-3.312e+06 -345470
+-3.1249e+06 -325460
+-2.9504e+06 -304740
+-2.7887e+06 -283880
+-2.6396e+06 -263390
+-2.5029e+06 -243620
+-2.3781e+06 -224670
+-2.2649e+06 -206380
+-2.1628e+06 -188410
+-2.0719e+06 -170400
+-1.9921e+06 -152150
+-1.9237e+06 -133630
+-1.8665e+06 -115000
+-1.82e+06 -96565
+-1.7835e+06 -78665
+-1.7559e+06 -61605
+-1.7362e+06 -45541
+-1.7238e+06 -30305
+-1.7185e+06 -15291
+-1.7203e+06 422.39
+-1.7295e+06 17585
+-1.7459e+06 36056
+-1.7691e+06 54287
+-1.7981e+06 69555
+-1.8312e+06 79149
+-1.8668e+06 82056
+-1.9037e+06 80091
+-1.9409e+06 77471
+-1.9787e+06 78629
+-2.0174e+06 85362
+-2.0576e+06 95181
+-2.0992e+06 102380
+-2.1411e+06 101680
+-2.1818e+06 92274
+-2.2199e+06 79428
+-2.2555e+06 71731
+-2.2901e+06 75236
+-2.3253e+06 88221
+-2.362e+06 100800
+-2.3985e+06 100760
+-2.4311e+06 82515
+-2.456e+06 52857
+-2.4718e+06 28220
+-2.481e+06 23777
+-2.4888e+06 41104
+-2.4997e+06 63888
+-2.5139e+06 66905
+-2.5264e+06 34154
+-2.5294e+06 -26126
+-2.5176e+06 -82054
+-2.4923e+06 -97214
+-2.4615e+06 -57379
+-2.4355e+06 14120
+-2.4198e+06 66266
+-2.4113e+06 52668
+-2.3992e+06 -33864
+-2.3725e+06 -149610
+-2.3271e+06 -223130
+-2.2697e+06 -201470
+-2.2147e+06 -89608
+-2.1755e+06 45399
+-2.1568e+06 111930
+-2.151e+06 50928
+-2.142e+06 -124220
+-2.1128e+06 -332520
+-2.0522e+06 -473880
+-1.9575e+06 -491530
+-1.8376e+06 -405010
+2.4463e+06 -12075
+2.4368e+06 -17068
+2.4254e+06 -17609
+2.4121e+06 -13278
+2.3973e+06 -6001
+2.3811e+06 1560.4
+2.3645e+06 7373.5
+2.3487e+06 10470
+2.3352e+06 10807
+2.3249e+06 8939.6
+2.3187e+06 5682.8
+2.3165e+06 1846.5
+2.3182e+06 -1944.1
+2.3232e+06 -5332
+2.3309e+06 -8224.9
+2.341e+06 -10729
+2.3534e+06 -13050
+2.3681e+06 -15394
+2.3853e+06 -17898
+2.4053e+06 -20594
+2.4282e+06 -23413
+2.4541e+06 -26225
+2.4828e+06 -28876
+2.5142e+06 -31228
+2.5478e+06 -33190
+2.5832e+06 -34720
+2.62e+06 -35826
+2.6577e+06 -36547
+2.6961e+06 -36937
+2.7349e+06 -37049
+2.7738e+06 -36917
+2.8125e+06 -36556
+2.8508e+06 -35955
+2.8884e+06 -35087
+2.925e+06 -33915
+2.9603e+06 -32406
+2.9939e+06 -30544
+3.0255e+06 -28334
+3.0546e+06 -25807
+3.0811e+06 -23014
+3.1047e+06 -20016
+3.1252e+06 -16873
+3.1425e+06 -13632
+3.1565e+06 -10327
+3.1672e+06 -6972.6
+3.1744e+06 -3578.6
+3.1782e+06 -154.05
+3.1784e+06 3281.5
+3.1752e+06 6693.1
+3.1684e+06 10030
+3.1582e+06 13231
+3.1448e+06 16231
+3.1283e+06 18974
+3.1091e+06 21411
+3.0874e+06 23507
+3.0637e+06 25239
+3.0383e+06 26584
+3.0116e+06 27517
+2.984e+06 28007
+2.9562e+06 28012
+2.9285e+06 27480
+2.9017e+06 26357
+2.8763e+06 24585
+2.8531e+06 22112
+2.8328e+06 18891
+2.8164e+06 14882
+2.8046e+06 10056
+2.7983e+06 4392.4
+2.7985e+06 -2116.4
+2.806e+06 -9463.6
+2.8219e+06 -17623
+2.8469e+06 -26546
+2.8819e+06 -36152
+2.9276e+06 -46331
+2.9845e+06 -56932
+3.0531e+06 -67768
+3.1334e+06 -78609
+3.2254e+06 -89188
+3.3287e+06 -99202
+3.4424e+06 -108320
+3.5655e+06 -116180
+3.6964e+06 -122430
+3.8332e+06 -126710
+3.9736e+06 -128680
+4.1149e+06 -128050
+4.2541e+06 -124580
+4.3882e+06 -118130
+4.5138e+06 -108620
+4.6276e+06 -96130
+4.7264e+06 -80821
+4.8073e+06 -62998
+4.8678e+06 -43080
+4.9058e+06 -21591
+4.92e+06 866.57
+4.9095e+06 23634
+4.8744e+06 46037
+4.8154e+06 67419
+4.734e+06 87180
+4.632e+06 104810
+4.5121e+06 119900
+4.3771e+06 132200
+4.2302e+06 141570
+4.0744e+06 148040
+3.9128e+06 151730
+3.7484e+06 152890
+3.5836e+06 151840
+3.4206e+06 148950
+3.2613e+06 144620
+3.1068e+06 139250
+2.9583e+06 133190
+2.8162e+06 126780
+2.6808e+06 120280
+2.5521e+06 113910
+2.4299e+06 107830
+2.3138e+06 102140
+2.2034e+06 96917
+2.0981e+06 92170
+1.9976e+06 87898
+1.9014e+06 84078
+1.8089e+06 80672
+1.7198e+06 77636
+1.6338e+06 74926
+1.5505e+06 72498
+1.4696e+06 70314
+1.3909e+06 68340
+1.3143e+06 66546
+1.2395e+06 64911
+1.1664e+06 63415
+1.0948e+06 62046
+1.0246e+06 60792
+955650 59646
+887910 58601
+821220 57653
+755490 56798
+690620 56032
+626510 55354
+563060 54760
+500180 54249
+437790 53818
+375800 53466
+314130 53190
+252690 52989
+191410 52862
+130200 52806
+68989 52822
+7702.1 52909
+-53737 53065
+-115400 53292
+-177370 53588
+-239720 53955
+-302520 54393
+-365840 54903
+-429780 55486
+-494400 56144
+-559780 56878
+-626010 57691
+-693170 58585
+-761350 59562
+-830640 60625
+-901130 61777
+-972910 63020
+-1.0461e+06 64358
+-1.1207e+06 65793
+-1.197e+06 67326
+-1.275e+06 68961
+-1.3547e+06 70697
+-1.4363e+06 72536
+-1.52e+06 74478
+-1.6057e+06 76521
+-1.6937e+06 78664
+-1.7839e+06 80906
+-1.8765e+06 83246
+-1.9716e+06 85683
+-2.0692e+06 88221
+-2.1695e+06 90867
+-2.2726e+06 93640
+-2.3785e+06 96566
+-2.4874e+06 99692
+-2.5996e+06 103080
+-2.7153e+06 106840
+-2.835e+06 111100
+-2.9593e+06 116040
+-3.0889e+06 121900
+-3.225e+06 128980
+-3.3691e+06 137650
+-3.5228e+06 148350
+-3.6886e+06 161590
+-3.8693e+06 177960
+-4.0683e+06 198080
+-4.2897e+06 222610
+-4.5381e+06 252190
+-4.8187e+06 287430
+-5.137e+06 328820
+-5.4989e+06 376670
+-5.9102e+06 431070
+-6.3764e+06 491810
+-6.9027e+06 558300
+-7.4927e+06 629570
+-8.1492e+06 704190
+-8.8727e+06 780310
+-9.6617e+06 855680
+-1.0512e+07 927690
+-1.1418e+07 993540
+-1.2369e+07 1.0503e+06
+-1.3353e+07 1.0951e+06
+-1.4357e+07 1.1252e+06
+-1.5363e+07 1.1384e+06
+-1.6355e+07 1.133e+06
+-1.7314e+07 1.1078e+06
+-1.8221e+07 1.0625e+06
+-1.9059e+07 997430
+-1.9812e+07 913780
+-2.0465e+07 813410
+-2.1006e+07 698750
+-2.1427e+07 572700
+-2.1722e+07 438470
+-2.1888e+07 299370
+-2.1927e+07 158690
+-2.1841e+07 19562
+-2.1636e+07 -115190
+-2.1321e+07 -243050
+-2.0905e+07 -361910
+-2.04e+07 -470040
+-1.9818e+07 -566070
+-1.9172e+07 -649030
+-1.8474e+07 -718330
+-1.7738e+07 -773740
+-1.6975e+07 -815400
+-1.6196e+07 -843770
+-1.5413e+07 -859620
+-1.4633e+07 -863910
+-1.3866e+07 -857820
+-1.3118e+07 -842660
+-1.2395e+07 -819800
+-1.1702e+07 -790640
+-1.1043e+07 -756500
+-1.042e+07 -718580
+-9.8346e+06 -677890
+-9.2887e+06 -635360
+-8.7824e+06 -591880
+-8.3158e+06 -548320
+-7.8883e+06 -505530
+-7.4987e+06 -464190
+-7.1454e+06 -424570
+-6.8269e+06 -386500
+-6.5418e+06 -349400
+-6.2894e+06 -312560
+-6.0694e+06 -275530
+-5.8817e+06 -238340
+-5.7255e+06 -201560
+-5.5992e+06 -166060
+-5.5001e+06 -132710
+-5.4252e+06 -101980
+-5.3718e+06 -73714
+-5.338e+06 -47165
+-5.3232e+06 -21134
+-5.3271e+06 5585.5
+-5.3495e+06 33601
+-5.3894e+06 62290
+-5.445e+06 89519
+-5.5136e+06 112110
+-5.5921e+06 127140
+-5.6776e+06 133710
+-5.7676e+06 133980
+-5.8606e+06 132770
+-5.9558e+06 135130
+-6.0533e+06 143310
+-6.1533e+06 154750
+-6.2554e+06 163090
+-6.3576e+06 162100
+-6.4568e+06 150410
+-6.55e+06 133710
+-6.6364e+06 122070
+-6.7176e+06 123270
+-6.7974e+06 136190
+-6.8779e+06 149540
+-6.9572e+06 148070
+-7.0282e+06 123450
+-7.0819e+06 82228
+-7.1131e+06 44131
+-7.1251e+06 29690
+-7.1287e+06 44472
+-7.1365e+06 71565
+-7.1541e+06 80035
+-7.1743e+06 46196
+-7.18e+06 -26215
+-7.1543e+06 -102920
+-7.0919e+06 -138870
+-7.0043e+06 -110140
+-6.9135e+06 -35784
+-6.8392e+06 28578
+-6.7849e+06 25520
+-6.7357e+06 -62645
+-6.6665e+06 -195060
+-6.5592e+06 -293070
+-6.4148e+06 -290530
+-6.2557e+06 -181160
+-6.1137e+06 -29636
+-6.0136e+06 64311
+-5.9589e+06 27453
+-5.93e+06 -139750
+-5.8922e+06 -362170
+-5.8102e+06 -536740
+-5.6626e+06 -595970
+-5.4529e+06 -543250
+3.6639e+06 289.3
+3.6439e+06 -2871.5
+3.6213e+06 -1465.9
+3.5964e+06 4487.4
+3.57e+06 12918
+3.5429e+06 20934
+3.5166e+06 26159
+3.4925e+06 27399
+3.4724e+06 24673
+3.4574e+06 18869
+3.4483e+06 11288
+3.4449e+06 3216.8
+3.4469e+06 -4381.8
+3.4534e+06 -11013
+3.4637e+06 -16642
+3.4775e+06 -21570
+3.4944e+06 -26241
+3.5146e+06 -31069
+3.5385e+06 -36301
+3.5663e+06 -41971
+3.5984e+06 -47918
+3.6347e+06 -53858
+3.6751e+06 -59472
+3.7192e+06 -64485
+3.7666e+06 -68710
+3.8166e+06 -72067
+3.8686e+06 -74570
+3.9222e+06 -76294
+3.9768e+06 -77343
+4.032e+06 -77817
+4.0875e+06 -77783
+4.1428e+06 -77264
+4.1977e+06 -76239
+4.2518e+06 -74651
+4.3045e+06 -72425
+4.3556e+06 -69500
+4.4043e+06 -65842
+4.4502e+06 -61466
+4.4929e+06 -56433
+4.5319e+06 -50846
+4.567e+06 -44824
+4.5977e+06 -38487
+4.6241e+06 -31930
+4.6458e+06 -25213
+4.6629e+06 -18370
+4.6752e+06 -11414
+4.6826e+06 -4361.6
+4.685e+06 2752.3
+4.6824e+06 9860
+4.6748e+06 16861
+4.6624e+06 23630
+4.6452e+06 30033
+4.6236e+06 35946
+4.598e+06 41264
+4.5688e+06 45907
+4.5365e+06 49812
+4.5015e+06 52928
+4.4646e+06 55197
+4.4263e+06 56550
+4.3872e+06 56897
+4.3483e+06 56129
+4.3102e+06 54130
+4.274e+06 50779
+4.2406e+06 45958
+4.2112e+06 39563
+4.1869e+06 31503
+4.169e+06 21705
+4.1587e+06 10115
+4.1574e+06 -3294.1
+4.1664e+06 -18520
+4.187e+06 -35521
+4.2205e+06 -54202
+4.268e+06 -74410
+4.3306e+06 -95920
+4.4092e+06 -118430
+4.5043e+06 -141550
+4.6162e+06 -164800
+4.7448e+06 -187630
+4.8896e+06 -209410
+5.0495e+06 -229430
+5.223e+06 -246940
+5.408e+06 -261160
+5.6018e+06 -271330
+5.8011e+06 -276710
+6.0024e+06 -276650
+6.2014e+06 -270610
+6.3936e+06 -258220
+6.5745e+06 -239310
+6.7391e+06 -213940
+6.8831e+06 -182430
+7.0021e+06 -145380
+7.0925e+06 -103620
+7.1512e+06 -58222
+7.176e+06 -10456
+7.1659e+06 38296
+7.1205e+06 86591
+7.0407e+06 133010
+6.9285e+06 176250
+6.7865e+06 215150
+6.6182e+06 248830
+6.4276e+06 276660
+6.2191e+06 298300
+5.9972e+06 313720
+5.7662e+06 323170
+5.5302e+06 327120
+5.293e+06 326230
+5.0578e+06 321270
+4.8271e+06 313070
+4.6029e+06 302470
+4.3867e+06 290260
+4.1794e+06 277130
+3.9814e+06 263700
+3.7928e+06 250420
+3.6132e+06 237670
+3.4424e+06 225680
+3.2796e+06 214600
+3.1242e+06 204490
+2.9757e+06 195370
+2.8332e+06 187180
+2.6962e+06 179850
+2.5642e+06 173300
+2.4365e+06 167440
+2.3128e+06 162180
+2.1927e+06 157450
+2.0758e+06 153160
+1.9619e+06 149260
+1.8507e+06 145710
+1.7419e+06 142460
+1.6353e+06 139490
+1.5308e+06 136770
+1.4281e+06 134290
+1.3271e+06 132030
+1.2277e+06 129980
+1.1296e+06 128140
+1.0328e+06 126490
+937080 125040
+842300 123770
+748340 122680
+655080 121760
+562380 121010
+470130 120420
+378210 120000
+286500 119730
+194900 119620
+103290 119660
+11563 119850
+-80382 120190
+-172650 120680
+-265360 121310
+-358600 122100
+-452490 123030
+-547120 124110
+-642620 125350
+-739090 126750
+-836640 128300
+-935390 130020
+-1.0355e+06 131910
+-1.137e+06 133970
+-1.24e+06 136210
+-1.3448e+06 138640
+-1.4513e+06 141260
+-1.5599e+06 144070
+-1.6705e+06 147080
+-1.7834e+06 150290
+-1.8986e+06 153710
+-2.0164e+06 157340
+-2.1368e+06 161180
+-2.26e+06 165220
+-2.3862e+06 169470
+-2.5154e+06 173910
+-2.6478e+06 178540
+-2.7836e+06 183360
+-2.9228e+06 188360
+-3.0655e+06 193550
+-3.2119e+06 198930
+-3.362e+06 204530
+-3.5161e+06 210410
+-3.6743e+06 216660
+-3.8369e+06 223390
+-4.0043e+06 230810
+-4.177e+06 239180
+-4.3558e+06 248860
+-4.5418e+06 260310
+-4.7363e+06 274130
+-4.9413e+06 291040
+-5.1592e+06 311900
+-5.3929e+06 337730
+-5.6463e+06 369630
+-5.9237e+06 408810
+-6.2306e+06 456520
+-6.5728e+06 513960
+-6.9571e+06 582210
+-7.3906e+06 662100
+-7.8807e+06 754120
+-8.4348e+06 858250
+-9.0599e+06 973870
+-9.7619e+06 1.0996e+06
+-1.0545e+07 1.2334e+06
+-1.1413e+07 1.3722e+06
+-1.2365e+07 1.5122e+06
+-1.3398e+07 1.6489e+06
+-1.4507e+07 1.7773e+06
+-1.5681e+07 1.8917e+06
+-1.6909e+07 1.9869e+06
+-1.8173e+07 2.0573e+06
+-1.9456e+07 2.0983e+06
+-2.0734e+07 2.1059e+06
+-2.1986e+07 2.0773e+06
+-2.3188e+07 2.011e+06
+-2.4317e+07 1.907e+06
+-2.535e+07 1.7666e+06
+-2.6268e+07 1.5928e+06
+-2.7052e+07 1.3897e+06
+-2.769e+07 1.1622e+06
+-2.8171e+07 916290
+-2.849e+07 658240
+-2.8644e+07 394410
+-2.8635e+07 131010
+-2.8469e+07 -126200
+-2.8155e+07 -372070
+-2.7704e+07 -602190
+-2.7129e+07 -812910
+-2.6446e+07 -1.0014e+06
+-2.5669e+07 -1.1656e+06
+-2.4816e+07 -1.3042e+06
+-2.3904e+07 -1.4167e+06
+-2.2947e+07 -1.5034e+06
+-2.1962e+07 -1.5649e+06
+-2.0961e+07 -1.6028e+06
+-1.9959e+07 -1.6188e+06
+-1.8965e+07 -1.6148e+06
+-1.7991e+07 -1.5932e+06
+-1.7043e+07 -1.5563e+06
+-1.613e+07 -1.5066e+06
+-1.5257e+07 -1.4464e+06
+-1.4428e+07 -1.3781e+06
+-1.3647e+07 -1.3039e+06
+-1.2915e+07 -1.2255e+06
+-1.2234e+07 -1.1445e+06
+-1.1604e+07 -1.0622e+06
+-1.1026e+07 -980100
+-1.0497e+07 -899600
+-1.0017e+07 -821860
+-9.5837e+06 -747510
+-9.1944e+06 -676330
+-8.8475e+06 -607380
+-8.5417e+06 -539400
+-8.2765e+06 -471550
+-8.0515e+06 -403950
+-7.8652e+06 -337800
+-7.7156e+06 -274920
+-7.599e+06 -216910
+-7.5118e+06 -164420
+-7.4506e+06 -116780
+-7.4132e+06 -72271
+-7.3986e+06 -28856
+-7.4063e+06 14948
+-7.4355e+06 59364
+-7.4843e+06 103010
+-7.5502e+06 143080
+-7.63e+06 176070
+-7.7208e+06 199190
+-7.8202e+06 211810
+-7.9261e+06 216460
+-8.0365e+06 218280
+-8.1501e+06 222800
+-8.266e+06 232760
+-8.3837e+06 245780
+-8.5026e+06 255070
+-8.6211e+06 253350
+-8.7361e+06 238300
+-8.8441e+06 215680
+-8.9432e+06 197170
+-9.034e+06 193000
+-9.1199e+06 203560
+-9.2042e+06 216410
+-9.286e+06 212490
+-9.3589e+06 179100
+-9.4134e+06 121330
+-9.442e+06 62574
+-9.446e+06 30954
+-9.4367e+06 38998
+-9.4292e+06 70848
+-9.433e+06 88615
+-9.4439e+06 56991
+-9.444e+06 -29217
+-9.4117e+06 -135300
+-9.3352e+06 -205350
+-9.222e+06 -200220
+-9.0951e+06 -129160
+-8.9803e+06 -50274
+-8.8893e+06 -35060
+-8.8122e+06 -118250
+-8.7225e+06 -268010
+-8.5944e+06 -400360
+-8.4196e+06 -432020
+-8.2149e+06 -337640
+-8.015e+06 -172070
+-7.8553e+06 -40222
+-7.7532e+06 -33024
+-7.699e+06 -171380
+-7.6592e+06 -395210
+-7.5915e+06 -603580
+-7.4625e+06 -716910
+-7.2639e+06 -716880
+5.3909e+06 22999
+5.3562e+06 22312
+5.3183e+06 26136
+5.2779e+06 33892
+5.2362e+06 43175
+5.1948e+06 50819
+5.1556e+06 54199
+5.1208e+06 52037
+5.0921e+06 44544
+5.0708e+06 33069
+5.0575e+06 19507
+5.0521e+06 5697.3
+5.0537e+06 -7019
+5.0614e+06 -18022
+5.0744e+06 -27389
+5.0919e+06 -35685
+5.114e+06 -43670
+5.1407e+06 -52012
+5.1726e+06 -61089
+5.2099e+06 -70922
+5.2531e+06 -81217
+5.3021e+06 -91491
+5.3568e+06 -101210
+5.4166e+06 -109920
+5.4808e+06 -117320
+5.5488e+06 -123280
+5.6197e+06 -127810
+5.6928e+06 -131030
+5.7676e+06 -133110
+5.8433e+06 -134210
+5.9195e+06 -134430
+5.9958e+06 -133810
+6.0716e+06 -132320
+6.1464e+06 -129850
+6.2196e+06 -126290
+6.2905e+06 -121540
+6.3585e+06 -115540
+6.4229e+06 -108310
+6.483e+06 -99961
+6.5382e+06 -90650
+6.5882e+06 -80580
+6.6325e+06 -69946
+6.6708e+06 -58905
+6.703e+06 -47558
+6.7289e+06 -35957
+6.7482e+06 -24124
+6.7608e+06 -12081
+6.7667e+06 114.01
+6.7656e+06 12351
+6.7576e+06 24464
+6.7428e+06 36241
+6.7214e+06 47453
+6.6938e+06 57885
+6.6605e+06 67350
+6.6219e+06 75703
+6.5787e+06 82830
+6.5317e+06 88632
+6.4815e+06 93006
+6.429e+06 95826
+6.3752e+06 96933
+6.321e+06 96140
+6.2677e+06 93242
+6.2164e+06 88026
+6.1686e+06 80288
+6.1257e+06 69841
+6.0893e+06 56521
+6.0612e+06 40195
+6.0431e+06 20761
+6.0368e+06 -1837.8
+6.0441e+06 -27607
+6.0668e+06 -56482
+6.1066e+06 -88312
+6.1652e+06 -122840
+6.2439e+06 -159690
+6.3441e+06 -198360
+6.4664e+06 -238180
+6.6113e+06 -278350
+6.7788e+06 -317920
+6.9681e+06 -355820
+7.1779e+06 -390830
+7.4062e+06 -421680
+7.6502e+06 -447030
+7.9065e+06 -465540
+8.1708e+06 -475950
+8.4381e+06 -477110
+8.703e+06 -468050
+8.9594e+06 -448110
+9.2011e+06 -416930
+9.4218e+06 -374570
+9.6153e+06 -321520
+9.7758e+06 -258730
+9.8984e+06 -187590
+9.9786e+06 -109910
+1.0014e+07 -27816
+1.0001e+07 56330
+9.9417e+06 140050
+9.8355e+06 220880
+9.6849e+06 296540
+9.4936e+06 365020
+9.266e+06 424690
+9.0074e+06 474420
+8.7237e+06 513560
+8.4208e+06 542000
+8.1047e+06 560080
+7.7809e+06 568580
+7.4545e+06 568580
+7.13e+06 561390
+6.8108e+06 548430
+6.5e+06 531120
+6.1994e+06 510850
+5.9104e+06 488820
+5.6337e+06 466080
+5.3695e+06 443490
+5.1176e+06 421660
+4.8774e+06 401050
+4.6482e+06 381930
+4.4291e+06 364420
+4.2194e+06 348550
+4.0181e+06 334260
+3.8245e+06 321440
+3.6376e+06 309950
+3.457e+06 299650
+3.2819e+06 290380
+3.1119e+06 282020
+2.9464e+06 274440
+2.7851e+06 267560
+2.6275e+06 261280
+2.4734e+06 255550
+2.3225e+06 250310
+2.1744e+06 245520
+2.0289e+06 241160
+1.8858e+06 237190
+1.7448e+06 233610
+1.6057e+06 230390
+1.4683e+06 227520
+1.3324e+06 224990
+1.1978e+06 222780
+1.0644e+06 220890
+931860 219310
+800100 218020
+668950 217010
+538230 216290
+407790 215840
+277490 215660
+147170 215740
+16682 216070
+-114110 216670
+-245350 217510
+-377180 218610
+-509740 219970
+-643170 221580
+-777610 223440
+-913210 225570
+-1.0501e+06 227970
+-1.1885e+06 230640
+-1.3284e+06 233590
+-1.4702e+06 236820
+-1.6138e+06 240360
+-1.7596e+06 244190
+-1.9076e+06 248340
+-2.058e+06 252810
+-2.211e+06 257610
+-2.3669e+06 262750
+-2.5257e+06 268230
+-2.6877e+06 274060
+-2.8531e+06 280240
+-3.022e+06 286770
+-3.1947e+06 293650
+-3.3713e+06 300860
+-3.552e+06 308400
+-3.7369e+06 316250
+-3.9263e+06 324400
+-4.1202e+06 332840
+-4.3188e+06 341560
+-4.5223e+06 350600
+-4.7307e+06 359970
+-4.9443e+06 369770
+-5.1633e+06 380120
+-5.3881e+06 391230
+-5.619e+06 403410
+-5.8567e+06 417090
+-6.1022e+06 432830
+-6.3567e+06 451400
+-6.6219e+06 473740
+-6.9001e+06 501020
+-7.1942e+06 534640
+-7.5079e+06 576180
+-7.8457e+06 627430
+-8.213e+06 690300
+-8.6161e+06 766730
+-9.0623e+06 858570
+-9.5594e+06 967460
+-1.0116e+07 1.0946e+06
+-1.0741e+07 1.2406e+06
+-1.1442e+07 1.4053e+06
+-1.2228e+07 1.5874e+06
+-1.3105e+07 1.7846e+06
+-1.4078e+07 1.9931e+06
+-1.5149e+07 2.2081e+06
+-1.6317e+07 2.4233e+06
+-1.7579e+07 2.6313e+06
+-1.8926e+07 2.824e+06
+-2.0345e+07 2.9928e+06
+-2.1821e+07 3.129e+06
+-2.3333e+07 3.2246e+06
+-2.4858e+07 3.2723e+06
+-2.6369e+07 3.2665e+06
+-2.7841e+07 3.2033e+06
+-2.9245e+07 3.081e+06
+-3.0554e+07 2.9001e+06
+-3.1743e+07 2.6637e+06
+-3.2789e+07 2.3767e+06
+-3.3673e+07 2.046e+06
+-3.438e+07 1.6801e+06
+-3.4899e+07 1.2884e+06
+-3.5225e+07 880930
+-3.5357e+07 467630
+-3.5299e+07 58117
+-3.5058e+07 -338780
+-3.4645e+07 -715300
+-3.4075e+07 -1.0649e+06
+-3.3364e+07 -1.3822e+06
+-3.2529e+07 -1.6632e+06
+-3.1589e+07 -1.9051e+06
+-3.0565e+07 -2.1065e+06
+-2.9475e+07 -2.267e+06
+-2.8337e+07 -2.3874e+06
+-2.7169e+07 -2.4695e+06
+-2.5988e+07 -2.5157e+06
+-2.4807e+07 -2.5292e+06
+-2.3639e+07 -2.5132e+06
+-2.2496e+07 -2.4711e+06
+-2.1386e+07 -2.4066e+06
+-2.0319e+07 -2.3232e+06
+-1.93e+07 -2.2247e+06
+-1.8335e+07 -2.1146e+06
+-1.7426e+07 -1.996e+06
+-1.6577e+07 -1.8716e+06
+-1.5789e+07 -1.7437e+06
+-1.5061e+07 -1.6143e+06
+-1.4395e+07 -1.4855e+06
+-1.3789e+07 -1.3592e+06
+-1.324e+07 -1.2374e+06
+-1.2747e+07 -1.1211e+06
+-1.2306e+07 -1.01e+06
+-1.1916e+07 -902750
+-1.1574e+07 -797560
+-1.1279e+07 -693110
+-1.1031e+07 -589630
+-1.0829e+07 -489060
+-1.0668e+07 -394250
+-1.0545e+07 -307650
+-1.0456e+07 -229980
+-1.0396e+07 -159890
+-1.0364e+07 -94567
+-1.0357e+07 -31147
+-1.0376e+07 31949
+-1.0418e+07 94305
+-1.048e+07 153670
+-1.0559e+07 206740
+-1.0652e+07 250230
+-1.0757e+07 281940
+-1.0871e+07 301780
+-1.0993e+07 312320
+-1.1121e+07 318430
+-1.1254e+07 325490
+-1.1388e+07 336560
+-1.1522e+07 349930
+-1.1655e+07 359030
+-1.1787e+07 355970
+-1.1915e+07 337170
+-1.2035e+07 307660
+-1.2144e+07 280030
+-1.224e+07 266990
+-1.2326e+07 271390
+-1.2406e+07 280990
+-1.2481e+07 273550
+-1.2548e+07 231390
+-1.2596e+07 156530
+-1.2615e+07 74552
+-1.2606e+07 21143
+-1.2576e+07 17574
+-1.2543e+07 51623
+-1.2521e+07 79968
+-1.2511e+07 54720
+-1.2496e+07 -41551
+-1.245e+07 -177450
+-1.2355e+07 -287880
+-1.221e+07 -316570
+-1.204e+07 -258200
+-1.1873e+07 -168580
+-1.1732e+07 -131510
+-1.1614e+07 -201500
+-1.1494e+07 -361660
+-1.1339e+07 -528320
+-1.113e+07 -602820
+-1.0875e+07 -537200
+-1.0607e+07 -369170
+-1.0372e+07 -201840
+-1.0201e+07 -140990
+-1.0099e+07 -231890
+-1.0037e+07 -436560
+-9.9698e+06 -663500
+-9.8536e+06 -825380
+-9.6661e+06 -883260
+7.8503e+06 60127
+7.7955e+06 62583
+7.7369e+06 69202
+7.6758e+06 78718
+7.614e+06 88256
+7.554e+06 94353
+7.4983e+06 94240
+7.4494e+06 86720
+7.4094e+06 72368
+7.3795e+06 53138
+7.3602e+06 31630
+7.3511e+06 10309
+7.3512e+06 -9093.5
+7.3593e+06 -25864
+7.3743e+06 -40258
+7.3957e+06 -53185
+7.4233e+06 -65788
+7.4574e+06 -79029
+7.4986e+06 -93422
+7.5472e+06 -108950
+7.6038e+06 -125140
+7.6682e+06 -141250
+7.7401e+06 -156490
+7.8189e+06 -170200
+7.9038e+06 -181920
+7.9937e+06 -191470
+8.0878e+06 -198860
+8.185e+06 -204260
+8.2846e+06 -207910
+8.3858e+06 -210020
+8.4879e+06 -210760
+8.5903e+06 -210170
+8.6922e+06 -208200
+8.793e+06 -204710
+8.8919e+06 -199530
+8.9881e+06 -192500
+9.0805e+06 -183540
+9.1684e+06 -172670
+9.2508e+06 -160050
+9.327e+06 -145920
+9.3963e+06 -130580
+9.4583e+06 -114310
+9.5125e+06 -97366
+9.5585e+06 -79886
+9.5962e+06 -61951
+9.6252e+06 -43593
+9.6452e+06 -24845
+9.6562e+06 -5789.1
+9.6578e+06 13409
+9.65e+06 32497
+9.633e+06 51149
+9.6068e+06 69015
+9.5721e+06 85753
+9.5292e+06 101070
+9.479e+06 114720
+9.4222e+06 126530
+9.3596e+06 136330
+9.2923e+06 143950
+9.2214e+06 149180
+9.148e+06 151770
+9.0735e+06 151420
+8.9994e+06 147810
+8.9273e+06 140600
+8.8591e+06 129470
+8.7968e+06 114130
+8.7425e+06 94303
+8.6984e+06 69788
+8.6668e+06 40418
+8.6501e+06 6098.2
+8.6506e+06 -33186
+8.6708e+06 -77341
+8.7129e+06 -126140
+8.779e+06 -179190
+8.871e+06 -235920
+8.9905e+06 -295540
+9.1385e+06 -357050
+9.3156e+06 -419210
+9.5218e+06 -480580
+9.7561e+06 -539490
+1.0017e+07 -594100
+1.0302e+07 -642440
+1.0607e+07 -682450
+1.0928e+07 -712080
+1.126e+07 -729350
+1.1596e+07 -732460
+1.193e+07 -719930
+1.2253e+07 -690650
+1.2558e+07 -644030
+1.2837e+07 -580100
+1.3081e+07 -499530
+1.3284e+07 -403720
+1.3437e+07 -294740
+1.3537e+07 -175290
+1.3578e+07 -48623
+1.3559e+07 81659
+1.3478e+07 211740
+1.3336e+07 337810
+1.3136e+07 456300
+1.2883e+07 564040
+1.2582e+07 658440
+1.224e+07 737660
+1.1863e+07 800620
+1.1461e+07 847010
+1.104e+07 877320
+1.0609e+07 892650
+1.0173e+07 894630
+9.7377e+06 885230
+9.3091e+06 866630
+8.8905e+06 841040
+8.4849e+06 810580
+8.0939e+06 777140
+7.7188e+06 742370
+7.3597e+06 707610
+7.0167e+06 673870
+6.6891e+06 641850
+6.376e+06 612020
+6.0764e+06 584600
+5.7893e+06 559640
+5.5135e+06 537090
+5.248e+06 516790
+4.9919e+06 498530
+4.7442e+06 482110
+4.5041e+06 467320
+4.271e+06 453950
+4.0442e+06 441820
+3.823e+06 430800
+3.6071e+06 420750
+3.3959e+06 411590
+3.1891e+06 403220
+2.9861e+06 395590
+2.7867e+06 388650
+2.5906e+06 382360
+2.3973e+06 376680
+2.2065e+06 371600
+2.0181e+06 367080
+1.8316e+06 363110
+1.6469e+06 359660
+1.4636e+06 356710
+1.2816e+06 354250
+1.1006e+06 352250
+920340 350710
+740650 349600
+561310 348920
+382120 348650
+202900 348800
+23441 349340
+-156430 350270
+-336890 351600
+-518130 353310
+-700330 355420
+-883670 357920
+-1.0683e+06 360810
+-1.2545e+06 364110
+-1.4423e+06 367810
+-1.6321e+06 371930
+-1.8239e+06 376480
+-2.0179e+06 381470
+-2.2145e+06 386910
+-2.4138e+06 392820
+-2.6159e+06 399200
+-2.8212e+06 406080
+-3.0299e+06 413460
+-3.2422e+06 421360
+-3.4583e+06 429790
+-3.6785e+06 438750
+-3.9031e+06 448250
+-4.1322e+06 458280
+-4.3662e+06 468840
+-4.6052e+06 479920
+-4.8496e+06 491480
+-5.0994e+06 503520
+-5.355e+06 516010
+-5.6165e+06 528920
+-5.884e+06 542260
+-6.1578e+06 556020
+-6.438e+06 570270
+-6.7249e+06 585120
+-7.0186e+06 600730
+-7.3197e+06 617420
+-7.6284e+06 635600
+-7.9457e+06 655900
+-8.2726e+06 679150
+-8.6103e+06 706420
+-8.9611e+06 739080
+-9.3273e+06 778820
+-9.7122e+06 827630
+-1.012e+07 887780
+-1.0556e+07 961830
+-1.1027e+07 1.0525e+06
+-1.1538e+07 1.1624e+06
+-1.2099e+07 1.2942e+06
+-1.2718e+07 1.4501e+06
+-1.3405e+07 1.6317e+06
+-1.4169e+07 1.8396e+06
+-1.5019e+07 2.0733e+06
+-1.5964e+07 2.3308e+06
+-1.701e+07 2.6084e+06
+-1.8162e+07 2.9005e+06
+-1.9422e+07 3.1999e+06
+-2.0786e+07 3.4973e+06
+-2.2251e+07 3.7823e+06
+-2.3803e+07 4.0431e+06
+-2.543e+07 4.2677e+06
+-2.7111e+07 4.444e+06
+-2.8823e+07 4.5608e+06
+-3.0539e+07 4.6084e+06
+-3.2231e+07 4.5795e+06
+-3.3868e+07 4.4694e+06
+-3.5419e+07 4.2763e+06
+-3.6856e+07 4.0019e+06
+-3.8151e+07 3.6511e+06
+-3.928e+07 3.2315e+06
+-4.0224e+07 2.7534e+06
+-4.0967e+07 2.2291e+06
+-4.1501e+07 1.6721e+06
+-4.1821e+07 1.0964e+06
+-4.1927e+07 516040
+-4.1824e+07 -55781
+-4.1522e+07 -606980
+-4.1034e+07 -1.127e+06
+-4.0377e+07 -1.6071e+06
+-3.9568e+07 -2.0403e+06
+-3.8627e+07 -2.4213e+06
+-3.7576e+07 -2.7467e+06
+-3.6435e+07 -3.0148e+06
+-3.5225e+07 -3.2258e+06
+-3.3967e+07 -3.381e+06
+-3.2679e+07 -3.4835e+06
+-3.1379e+07 -3.5369e+06
+-3.0081e+07 -3.5457e+06
+-2.88e+07 -3.5146e+06
+-2.7547e+07 -3.4483e+06
+-2.6333e+07 -3.3517e+06
+-2.5166e+07 -3.2298e+06
+-2.4054e+07 -3.0876e+06
+-2.3002e+07 -2.9298e+06
+-2.2013e+07 -2.7608e+06
+-2.1091e+07 -2.5842e+06
+-2.0237e+07 -2.403e+06
+-1.9451e+07 -2.2199e+06
+-1.8734e+07 -2.0378e+06
+-1.8085e+07 -1.8594e+06
+-1.75e+07 -1.6873e+06
+-1.6978e+07 -1.523e+06
+-1.6515e+07 -1.3664e+06
+-1.6108e+07 -1.2158e+06
+-1.5756e+07 -1.0686e+06
+-1.5456e+07 -923130
+-1.5207e+07 -779750
+-1.5008e+07 -641130
+-1.4854e+07 -511240
+-1.4741e+07 -393300
+-1.4664e+07 -288060
+-1.462e+07 -193330
+-1.4605e+07 -105160
+-1.4618e+07 -19942
+-1.4657e+07 63682
+-1.472e+07 144350
+-1.4803e+07 218850
+-1.49e+07 283730
+-1.501e+07 336580
+-1.513e+07 376530
+-1.5259e+07 404260
+-1.5398e+07 421960
+-1.5545e+07 433310
+-1.5696e+07 442670
+-1.5846e+07 453250
+-1.5993e+07 464610
+-1.6136e+07 471530
+-1.6276e+07 466150
+-1.6412e+07 443320
+-1.6539e+07 406140
+-1.6652e+07 366800
+-1.6747e+07 340200
+-1.6825e+07 332850
+-1.6889e+07 334730
+-1.6946e+07 321880
+-1.6993e+07 271410
+-1.7023e+07 180230
+-1.7025e+07 73617
+-1.6993e+07 -6203
+-1.6932e+07 -27761
+-1.6861e+07 3615.3
+-1.6799e+07 42035
+-1.6751e+07 27218
+-1.6706e+07 -73598
+-1.6634e+07 -237070
+-1.6511e+07 -392170
+-1.6328e+07 -464870
+-1.6104e+07 -430610
+-1.5873e+07 -336910
+-1.5667e+07 -276280
+-1.5492e+07 -324420
+-1.5328e+07 -485360
+-1.5137e+07 -682820
+-1.4888e+07 -806680
+-1.4576e+07 -784360
+-1.4232e+07 -629410
+-1.3906e+07 -434650
+-1.3644e+07 -315550
+-1.3465e+07 -342480
+-1.3355e+07 -505580
+-1.3267e+07 -730760
+-1.3149e+07 -929430
+-1.2966e+07 -1.045e+06
+1.137e+07 117200
+1.1288e+07 123400
+1.1202e+07 132980
+1.1113e+07 143880
+1.1025e+07 152660
+1.0941e+07 155590
+1.0864e+07 149880
+1.0796e+07 134610
+1.0741e+07 110900
+1.0699e+07 81479
+1.0671e+07 49742
+1.0656e+07 18827
+1.0652e+07 -9152.9
+1.0659e+07 -33445
+1.0675e+07 -54560
+1.0699e+07 -73833
+1.0732e+07 -92839
+1.0774e+07 -112860
+1.0826e+07 -134520
+1.0888e+07 -157720
+1.0961e+07 -181750
+1.1044e+07 -205580
+1.1136e+07 -228110
+1.1238e+07 -248430
+1.1348e+07 -265940
+1.1465e+07 -280370
+1.1587e+07 -291740
+1.1714e+07 -300260
+1.1844e+07 -306230
+1.1977e+07 -309940
+1.2111e+07 -311590
+1.2246e+07 -311270
+1.2381e+07 -308890
+1.2514e+07 -304280
+1.2646e+07 -297190
+1.2774e+07 -287400
+1.2897e+07 -274780
+1.3015e+07 -259380
+1.3126e+07 -241380
+1.3229e+07 -221140
+1.3324e+07 -199070
+1.3409e+07 -175570
+1.3484e+07 -150970
+1.3548e+07 -125500
+1.3602e+07 -99269
+1.3644e+07 -72316
+1.3674e+07 -44690
+1.3692e+07 -16507
+1.3698e+07 11999
+1.3692e+07 40464
+1.3672e+07 68421
+1.3641e+07 95356
+1.3598e+07 120770
+1.3543e+07 144210
+1.3478e+07 165340
+1.3404e+07 183850
+1.3321e+07 199500
+1.3232e+07 212010
+1.3137e+07 221070
+1.3037e+07 226290
+1.2935e+07 227230
+1.2833e+07 223400
+1.2733e+07 214320
+1.2636e+07 199490
+1.2546e+07 178490
+1.2466e+07 150940
+1.2397e+07 116520
+1.2344e+07 74988
+1.2309e+07 26209
+1.2295e+07 -29835
+1.2306e+07 -93009
+1.2344e+07 -162980
+1.2411e+07 -239180
+1.2511e+07 -320770
+1.2644e+07 -406620
+1.2813e+07 -495290
+1.3019e+07 -585010
+1.326e+07 -673680
+1.3537e+07 -758930
+1.3846e+07 -838110
+1.4185e+07 -908410
+1.455e+07 -966870
+1.4934e+07 -1.0105e+06
+1.5332e+07 -1.0366e+06
+1.5736e+07 -1.0424e+06
+1.6137e+07 -1.0258e+06
+1.6525e+07 -985200
+1.6891e+07 -919640
+1.7224e+07 -829070
+1.7515e+07 -714380
+1.7755e+07 -577480
+1.7934e+07 -421230
+1.8045e+07 -249450
+1.8085e+07 -66727
+1.8047e+07 121790
+1.7933e+07 310620
+1.7742e+07 494270
+1.7477e+07 667520
+1.7144e+07 825710
+1.675e+07 965020
+1.6302e+07 1.0826e+06
+1.581e+07 1.1769e+06
+1.5284e+07 1.2471e+06
+1.4734e+07 1.294e+06
+1.4168e+07 1.3191e+06
+1.3595e+07 1.3245e+06
+1.3023e+07 1.3131e+06
+1.2458e+07 1.2879e+06
+1.1905e+07 1.2523e+06
+1.1368e+07 1.2092e+06
+1.0849e+07 1.1615e+06
+1.035e+07 1.1115e+06
+9.8717e+06 1.0612e+06
+9.4137e+06 1.0121e+06
+8.9755e+06 965310
+8.5562e+06 921510
+8.1547e+06 881060
+7.7694e+06 844090
+7.3993e+06 810540
+7.0428e+06 780210
+6.6989e+06 752850
+6.3663e+06 728170
+6.0441e+06 705870
+5.7313e+06 685680
+5.427e+06 667360
+5.1304e+06 650690
+4.841e+06 635510
+4.5579e+06 621680
+4.2807e+06 609070
+4.0088e+06 597600
+3.7416e+06 587200
+3.4788e+06 577800
+3.2197e+06 569340
+2.9641e+06 561800
+2.7114e+06 555110
+2.4613e+06 549250
+2.2135e+06 544180
+1.9676e+06 539870
+1.7232e+06 536280
+1.4801e+06 533390
+1.2379e+06 531170
+996490 529590
+755450 528630
+514580 528280
+273630 528530
+32363 529350
+-209460 530740
+-452050 532690
+-695650 535200
+-940480 538280
+-1.1868e+06 541910
+-1.4347e+06 546120
+-1.6846e+06 550900
+-1.9366e+06 556260
+-2.1909e+06 562220
+-2.4479e+06 568800
+-2.7077e+06 576000
+-2.9707e+06 583850
+-3.237e+06 592370
+-3.507e+06 601580
+-3.7809e+06 611490
+-4.0591e+06 622140
+-4.3418e+06 633530
+-4.6293e+06 645690
+-4.922e+06 658610
+-5.2202e+06 672320
+-5.5241e+06 686790
+-5.8342e+06 702030
+-6.1506e+06 718010
+-6.4738e+06 734710
+-6.804e+06 752090
+-7.1415e+06 770110
+-7.4864e+06 788730
+-7.8391e+06 807950
+-8.1998e+06 827760
+-8.5686e+06 848230
+-8.9458e+06 869480
+-9.3318e+06 891750
+-9.7268e+06 915430
+-1.0132e+07 941090
+-1.0547e+07 969530
+-1.0974e+07 1.0019e+06
+-1.1414e+07 1.0396e+06
+-1.1869e+07 1.0844e+06
+-1.2342e+07 1.1386e+06
+-1.2836e+07 1.2049e+06
+-1.3357e+07 1.2863e+06
+-1.3909e+07 1.3861e+06
+-1.45e+07 1.5079e+06
+-1.5136e+07 1.6552e+06
+-1.5826e+07 1.8313e+06
+-1.658e+07 2.039e+06
+-1.7407e+07 2.2802e+06
+-1.8318e+07 2.5555e+06
+-1.9321e+07 2.8638e+06
+-2.0424e+07 3.2023e+06
+-2.1634e+07 3.5655e+06
+-2.2955e+07 3.9459e+06
+-2.4387e+07 4.3334e+06
+-2.5926e+07 4.7155e+06
+-2.7564e+07 5.0783e+06
+-2.9289e+07 5.4063e+06
+-3.1083e+07 5.6836e+06
+-3.2925e+07 5.8946e+06
+-3.4788e+07 6.0252e+06
+-3.6642e+07 6.0633e+06
+-3.8459e+07 6e+06
+-4.0204e+07 5.83e+06
+-4.1846e+07 5.5521e+06
+-4.3357e+07 5.1695e+06
+-4.4708e+07 4.6893e+06
+-4.5876e+07 4.1225e+06
+-4.6843e+07 3.4831e+06
+-4.7596e+07 2.7873e+06
+-4.8126e+07 2.0531e+06
+-4.8431e+07 1.2987e+06
+-4.8512e+07 542130
+-4.8378e+07 -199670
+-4.804e+07 -911450
+-4.7511e+07 -1.58e+06
+-4.681e+07 -2.1945e+06
+-4.5955e+07 -2.7463e+06
+-4.4968e+07 -3.2292e+06
+-4.3871e+07 -3.6392e+06
+-4.2684e+07 -3.9747e+06
+-4.143e+07 -4.2359e+06
+-4.0128e+07 -4.4254e+06
+-3.8798e+07 -4.5471e+06
+-3.7458e+07 -4.6063e+06
+-3.6122e+07 -4.6088e+06
+-3.4804e+07 -4.5606e+06
+-3.3517e+07 -4.4679e+06
+-3.2272e+07 -4.3368e+06
+-3.1076e+07 -4.1736e+06
+-2.9938e+07 -3.9846e+06
+-2.8863e+07 -3.7758e+06
+-2.7855e+07 -3.5528e+06
+-2.6918e+07 -3.3201e+06
+-2.6053e+07 -3.0816e+06
+-2.526e+07 -2.8408e+06
+-2.4541e+07 -2.601e+06
+-2.3895e+07 -2.366e+06
+-2.3318e+07 -2.1391e+06
+-2.2808e+07 -1.9226e+06
+-2.2362e+07 -1.7165e+06
+-2.1977e+07 -1.5189e+06
+-2.1649e+07 -1.3267e+06
+-2.1377e+07 -1.1377e+06
+-2.1157e+07 -952360
+-2.0989e+07 -774060
+-2.0867e+07 -607800
+-2.0787e+07 -457480
+-2.0743e+07 -323720
+-2.0733e+07 -203400
+-2.0753e+07 -91461
+-2.0801e+07 16160
+-2.0875e+07 120210
+-2.0971e+07 218010
+-2.1084e+07 305350
+-2.1208e+07 379110
+-2.1339e+07 438620
+-2.1478e+07 485180
+-2.1626e+07 520520
+-2.1783e+07 545920
+-2.1948e+07 562630
+-2.2115e+07 572930
+-2.2277e+07 579930
+-2.2431e+07 585360
+-2.2577e+07 586830
+-2.2717e+07 577580
+-2.2851e+07 550580
+-2.2977e+07 505280
+-2.3087e+07 451500
+-2.3171e+07 405530
+-2.3229e+07 378820
+-2.3264e+07 366310
+-2.3285e+07 344870
+-2.3297e+07 286750
+-2.3294e+07 181460
+-2.3265e+07 50397
+-2.3197e+07 -60057
+-2.3093e+07 -107450
+-2.2967e+07 -86445
+-2.2843e+07 -41157
+-2.2735e+07 -42452
+-2.2638e+07 -140840
+-2.2523e+07 -326480
+-2.2358e+07 -527500
+-2.2125e+07 -653200
+-2.1836e+07 -655830
+-2.1526e+07 -567670
+-2.1234e+07 -484410
+-2.0982e+07 -502500
+-2.0755e+07 -652210
+-2.0514e+07 -872920
+-2.0216e+07 -1.0492e+06
+-1.9842e+07 -1.0841e+06
+-1.9413e+07 -960900
+-1.898e+07 -752700
+-1.8602e+07 -577120
+-1.8318e+07 -527680
+-1.8126e+07 -626980
+-1.7987e+07 -826350
+-1.7845e+07 -1.044e+06
+-1.7652e+07 -1.2104e+06
+1.535e+07 198840
+1.5238e+07 208900
+1.5123e+07 220980
+1.5007e+07 232210
+1.4895e+07 238640
+1.4788e+07 236350
+1.4691e+07 222750
+1.4606e+07 197350
+1.4536e+07 162010
+1.4481e+07 120280
+1.4441e+07 76389
+1.4416e+07 34088
+1.4404e+07 -4206.1
+1.4404e+07 -37786
+1.4416e+07 -67483
+1.4438e+07 -95086
+1.4471e+07 -122600
+1.4516e+07 -151560
+1.4573e+07 -182660
+1.4642e+07 -215640
+1.4724e+07 -249530
+1.4818e+07 -282950
+1.4924e+07 -314500
+1.504e+07 -343060
+1.5166e+07 -367860
+1.5301e+07 -388580
+1.5443e+07 -405200
+1.559e+07 -417970
+1.5743e+07 -427220
+1.5898e+07 -433310
+1.6057e+07 -436490
+1.6216e+07 -436850
+1.6376e+07 -434310
+1.6535e+07 -428640
+1.6691e+07 -419520
+1.6844e+07 -406660
+1.6993e+07 -389900
+1.7135e+07 -369260
+1.727e+07 -345000
+1.7396e+07 -317550
+1.7513e+07 -287460
+1.7618e+07 -255250
+1.7713e+07 -221370
+1.7794e+07 -186120
+1.7864e+07 -149650
+1.7919e+07 -112030
+1.7961e+07 -73320
+1.7988e+07 -33678
+1.8e+07 6579.2
+1.7997e+07 46957
+1.7979e+07 86817
+1.7945e+07 125450
+1.7897e+07 162160
+1.7835e+07 196320
+1.7759e+07 227420
+1.7672e+07 255040
+1.7573e+07 278790
+1.7465e+07 298290
+1.7348e+07 313070
+1.7225e+07 322570
+1.7098e+07 326160
+1.6969e+07 323160
+1.684e+07 312870
+1.6714e+07 294650
+1.6594e+07 267890
+1.6484e+07 232070
+1.6385e+07 186770
+1.6303e+07 131680
+1.6239e+07 66622
+1.6198e+07 -8422.6
+1.6183e+07 -93242
+1.6197e+07 -187360
+1.6242e+07 -290000
+1.6322e+07 -400010
+1.6439e+07 -515830
+1.6593e+07 -635500
+1.6786e+07 -756620
+1.7017e+07 -876380
+1.7286e+07 -991580
+1.7589e+07 -1.0987e+06
+1.7924e+07 -1.1939e+06
+1.8286e+07 -1.2733e+06
+1.8669e+07 -1.3329e+06
+1.9066e+07 -1.3689e+06
+1.9468e+07 -1.3778e+06
+1.9868e+07 -1.3566e+06
+2.0254e+07 -1.3031e+06
+2.0616e+07 -1.216e+06
+2.0944e+07 -1.0951e+06
+2.1226e+07 -941430
+2.1453e+07 -757470
+2.1615e+07 -546940
+2.1704e+07 -314830
+2.1714e+07 -67237
+2.1641e+07 188950
+2.1482e+07 446370
+2.124e+07 697540
+2.0915e+07 935340
+2.0515e+07 1.1533e+06
+2.0045e+07 1.3462e+06
+1.9516e+07 1.5099e+06
+1.8936e+07 1.642e+06
+1.8316e+07 1.7416e+06
+1.7667e+07 1.8092e+06
+1.7e+07 1.8467e+06
+1.6325e+07 1.857e+06
+1.5648e+07 1.8441e+06
+1.4979e+07 1.8119e+06
+1.4323e+07 1.7649e+06
+1.3683e+07 1.7073e+06
+1.3064e+07 1.6427e+06
+1.2468e+07 1.5746e+06
+1.1894e+07 1.5057e+06
+1.1344e+07 1.4381e+06
+1.0817e+07 1.3734e+06
+1.0312e+07 1.3124e+06
+9.8276e+06 1.2559e+06
+9.3626e+06 1.204e+06
+8.9156e+06 1.1566e+06
+8.4851e+06 1.1136e+06
+8.0698e+06 1.0747e+06
+7.6684e+06 1.0394e+06
+7.2796e+06 1.0075e+06
+6.9024e+06 978550
+6.5358e+06 952240
+6.1787e+06 928310
+5.8304e+06 906520
+5.49e+06 886700
+5.1567e+06 868670
+4.8298e+06 852320
+4.5087e+06 837530
+4.1928e+06 824210
+3.8814e+06 812290
+3.574e+06 801680
+3.2702e+06 792330
+2.9693e+06 784180
+2.671e+06 777160
+2.3749e+06 771210
+2.0805e+06 766300
+1.7875e+06 762360
+1.4955e+06 759360
+1.2043e+06 757260
+913430 756020
+622720 755610
+331860 756010
+40581 757190
+-251360 759150
+-544220 761880
+-838230 765360
+-1.1336e+06 769590
+-1.4307e+06 774590
+-1.7296e+06 780340
+-2.0307e+06 786870
+-2.3341e+06 794190
+-2.6401e+06 802310
+-2.9491e+06 811250
+-3.2611e+06 821040
+-3.5766e+06 831710
+-3.8959e+06 843280
+-4.2191e+06 855780
+-4.5467e+06 869250
+-4.8789e+06 883710
+-5.2162e+06 899190
+-5.5588e+06 915710
+-5.9071e+06 933300
+-6.2615e+06 951950
+-6.6223e+06 971670
+-6.99e+06 992450
+-7.3649e+06 1.0143e+06
+-7.7473e+06 1.0371e+06
+-8.1377e+06 1.0608e+06
+-8.5362e+06 1.0854e+06
+-8.9433e+06 1.1109e+06
+-9.3592e+06 1.1372e+06
+-9.7842e+06 1.1642e+06
+-1.0219e+07 1.1922e+06
+-1.0662e+07 1.2211e+06
+-1.1116e+07 1.2514e+06
+-1.1581e+07 1.2833e+06
+-1.2056e+07 1.3178e+06
+-1.2542e+07 1.3557e+06
+-1.3041e+07 1.3983e+06
+-1.3554e+07 1.4476e+06
+-1.4083e+07 1.5058e+06
+-1.4629e+07 1.5756e+06
+-1.5197e+07 1.6603e+06
+-1.5791e+07 1.7637e+06
+-1.6414e+07 1.8898e+06
+-1.7072e+07 2.043e+06
+-1.7773e+07 2.2276e+06
+-1.8522e+07 2.4476e+06
+-1.9329e+07 2.7061e+06
+-2.0201e+07 3.0052e+06
+-2.1146e+07 3.3455e+06
+-2.2172e+07 3.7253e+06
+-2.3284e+07 4.1404e+06
+-2.4488e+07 4.5839e+06
+-2.5783e+07 5.046e+06
+-2.717e+07 5.5137e+06
+-2.8643e+07 5.9715e+06
+-3.0194e+07 6.4019e+06
+-3.1809e+07 6.7858e+06
+-3.3471e+07 7.1039e+06
+-3.5159e+07 7.3374e+06
+-3.685e+07 7.4695e+06
+-3.8518e+07 7.4864e+06
+-4.0134e+07 7.3781e+06
+-4.1673e+07 7.1394e+06
+-4.3107e+07 6.77e+06
+-4.4413e+07 6.2749e+06
+-4.557e+07 5.664e+06
+-4.6561e+07 4.9516e+06
+-4.7373e+07 4.1554e+06
+-4.7998e+07 3.2958e+06
+-4.8432e+07 2.3945e+06
+-4.8676e+07 1.4738e+06
+-4.8735e+07 555080
+-4.8617e+07 -341580
+-4.8333e+07 -1.1983e+06
+-4.7898e+07 -1.9999e+06
+-4.7325e+07 -2.7338e+06
+-4.6633e+07 -3.3903e+06
+-4.5837e+07 -3.9625e+06
+-4.4956e+07 -4.4461e+06
+-4.4007e+07 -4.8396e+06
+-4.3007e+07 -5.1438e+06
+-4.1971e+07 -5.362e+06
+-4.0916e+07 -5.4993e+06
+-3.9855e+07 -5.562e+06
+-3.8799e+07 -5.5574e+06
+-3.776e+07 -5.4926e+06
+-3.6747e+07 -5.3749e+06
+-3.5769e+07 -5.2116e+06
+-3.4833e+07 -5.0099e+06
+-3.3945e+07 -4.7773e+06
+-3.311e+07 -4.521e+06
+-3.2331e+07 -4.2476e+06
+-3.1611e+07 -3.9625e+06
+-3.0953e+07 -3.6702e+06
+-3.0356e+07 -3.3746e+06
+-2.9823e+07 -3.0799e+06
+-2.9352e+07 -2.7905e+06
+-2.8943e+07 -2.5108e+06
+-2.8593e+07 -2.2437e+06
+-2.8299e+07 -1.9899e+06
+-2.8058e+07 -1.7473e+06
+-2.7866e+07 -1.5126e+06
+-2.772e+07 -1.2833e+06
+-2.7618e+07 -1.0598e+06
+-2.7556e+07 -846100
+-2.7531e+07 -647670
+-2.7538e+07 -468840
+-2.7573e+07 -309910
+-2.7635e+07 -166870
+-2.772e+07 -33849
+-2.7827e+07 93196
+-2.7952e+07 213910
+-2.8091e+07 324000
+-2.8237e+07 418380
+-2.8384e+07 494850
+-2.853e+07 555410
+-2.8675e+07 604350
+-2.8824e+07 644700
+-2.8979e+07 676120
+-2.9138e+07 696190
+-2.9293e+07 703890
+-2.9438e+07 701960
+-2.9565e+07 695370
+-2.9677e+07 686410
+-2.9778e+07 670890
+-2.9874e+07 639820
+-2.9963e+07 587040
+-3.0036e+07 517210
+-3.008e+07 446330
+-3.0087e+07 391530
+-3.0061e+07 355990
+-3.0013e+07 321250
+-2.9955e+07 256520
+-2.989e+07 142090
+-2.9808e+07 -9097.3
+-2.9692e+07 -151110
+-2.9534e+07 -231790
+-2.9341e+07 -231890
+-2.9136e+07 -187690
+-2.8943e+07 -175670
+-2.8766e+07 -263710
+-2.8588e+07 -460400
+-2.8378e+07 -700320
+-2.8107e+07 -881170
+-2.7772e+07 -931260
+-2.74e+07 -861240
+-2.7034e+07 -761770
+-2.6705e+07 -745300
+-2.6415e+07 -870320
+-2.6133e+07 -1.0998e+06
+-2.5812e+07 -1.3222e+06
+-2.5417e+07 -1.4217e+06
+-2.495e+07 -1.349e+06
+-2.4448e+07 -1.1491e+06
+-2.3973e+07 -931510
+-2.3577e+07 -805640
+-2.3279e+07 -825750
+-2.3062e+07 -974100
+-2.2879e+07 -1.1844e+06
+-2.2679e+07 -1.3824e+06
+2.5218e+07 327720
+2.5039e+07 340670
+2.4859e+07 353230
+2.4682e+07 361870
+2.4513e+07 362400
+2.4356e+07 351120
+2.4213e+07 325960
+2.4087e+07 287200
+2.398e+07 237480
+2.3891e+07 181160
+2.3821e+07 123070
+2.3768e+07 67317
+2.3732e+07 16361
+2.3712e+07 -29306
+2.3707e+07 -70888
+2.3719e+07 -110550
+2.3748e+07 -150540
+2.3794e+07 -192460
+2.3857e+07 -236840
+2.3939e+07 -283160
+2.4038e+07 -330100
+2.4153e+07 -376010
+2.4285e+07 -419280
+2.4431e+07 -458640
+2.459e+07 -493260
+2.4761e+07 -522740
+2.4943e+07 -547030
+2.5135e+07 -566310
+2.5334e+07 -580910
+2.554e+07 -591170
+2.575e+07 -597340
+2.5963e+07 -599550
+2.6178e+07 -597700
+2.6393e+07 -591550
+2.6607e+07 -580700
+2.6817e+07 -564820
+2.7022e+07 -543680
+2.7221e+07 -517300
+2.7411e+07 -485940
+2.7591e+07 -450120
+2.7759e+07 -410490
+2.7914e+07 -367710
+2.8054e+07 -322350
+2.8178e+07 -274800
+2.8286e+07 -225270
+2.8375e+07 -173860
+2.8446e+07 -120680
+2.8497e+07 -65948
+2.8528e+07 -10074
+2.8538e+07 46288
+2.8526e+07 102290
+2.8493e+07 157000
+2.8439e+07 209450
+2.8364e+07 258800
+2.8269e+07 304330
+2.8156e+07 345420
+2.8026e+07 381510
+2.788e+07 412010
+2.7721e+07 436260
+2.755e+07 453460
+2.7371e+07 462720
+2.7185e+07 463120
+2.6997e+07 453730
+2.6809e+07 433680
+2.6626e+07 402210
+2.6451e+07 358650
+2.6288e+07 302500
+2.6141e+07 233390
+2.6015e+07 151140
+2.5913e+07 55800
+2.5839e+07 -52306
+2.5797e+07 -172500
+2.5789e+07 -303690
+2.582e+07 -444330
+2.5889e+07 -592400
+2.6e+07 -745330
+2.6153e+07 -900030
+2.6347e+07 -1.0529e+06
+2.6581e+07 -1.1999e+06
+2.6852e+07 -1.3365e+06
+2.7157e+07 -1.4579e+06
+2.749e+07 -1.5592e+06
+2.7845e+07 -1.6354e+06
+2.8215e+07 -1.6816e+06
+2.8591e+07 -1.6934e+06
+2.8962e+07 -1.667e+06
+2.9319e+07 -1.5993e+06
+2.9649e+07 -1.4886e+06
+2.994e+07 -1.3344e+06
+3.018e+07 -1.1379e+06
+3.0357e+07 -901740
+3.0461e+07 -630540
+3.048e+07 -330440
+3.0407e+07 -9055
+3.0236e+07 324870
+2.9964e+07 661840
+2.959e+07 992170
+2.9117e+07 1.3064e+06
+2.855e+07 1.596e+06
+2.7896e+07 1.8537e+06
+2.7166e+07 2.0739e+06
+2.6372e+07 2.253e+06
+2.5527e+07 2.3894e+06
+2.4643e+07 2.4836e+06
+2.3734e+07 2.5378e+06
+2.2812e+07 2.5557e+06
+2.1887e+07 2.5422e+06
+2.097e+07 2.5026e+06
+2.0068e+07 2.4426e+06
+1.9186e+07 2.3677e+06
+1.833e+07 2.2829e+06
+1.7503e+07 2.1927e+06
+1.6705e+07 2.1008e+06
+1.5937e+07 2.01e+06
+1.5199e+07 1.9224e+06
+1.4491e+07 1.8394e+06
+1.3811e+07 1.7619e+06
+1.3157e+07 1.6903e+06
+1.2528e+07 1.6245e+06
+1.1922e+07 1.5644e+06
+1.1338e+07 1.5097e+06
+1.0773e+07 1.4599e+06
+1.0227e+07 1.4147e+06
+9.6972e+06 1.3735e+06
+9.1828e+06 1.3361e+06
+8.6823e+06 1.3021e+06
+8.1943e+06 1.2711e+06
+7.7176e+06 1.243e+06
+7.2512e+06 1.2176e+06
+6.7938e+06 1.1946e+06
+6.3445e+06 1.1739e+06
+5.9023e+06 1.1554e+06
+5.4663e+06 1.1389e+06
+5.0356e+06 1.1244e+06
+4.6096e+06 1.1117e+06
+4.1875e+06 1.1007e+06
+3.7686e+06 1.0913e+06
+3.3523e+06 1.0834e+06
+2.9381e+06 1.0769e+06
+2.5255e+06 1.0718e+06
+2.1141e+06 1.068e+06
+1.7033e+06 1.0654e+06
+1.2929e+06 1.0639e+06
+882420 1.0636e+06
+471600 1.0643e+06
+60126 1.066e+06
+-352310 1.0687e+06
+-765990 1.0724e+06
+-1.1812e+06 1.0771e+06
+-1.5982e+06 1.0828e+06
+-2.0172e+06 1.0894e+06
+-2.4385e+06 1.097e+06
+-2.8624e+06 1.1056e+06
+-3.2892e+06 1.1152e+06
+-3.7191e+06 1.1258e+06
+-4.1524e+06 1.1375e+06
+-4.5895e+06 1.1503e+06
+-5.0306e+06 1.1642e+06
+-5.4761e+06 1.1793e+06
+-5.9263e+06 1.1956e+06
+-6.3817e+06 1.2132e+06
+-6.8425e+06 1.232e+06
+-7.3094e+06 1.2523e+06
+-7.7826e+06 1.2739e+06
+-8.2627e+06 1.2969e+06
+-8.7501e+06 1.3214e+06
+-9.2454e+06 1.3473e+06
+-9.749e+06 1.3747e+06
+-1.0262e+07 1.4035e+06
+-1.0783e+07 1.4336e+06
+-1.1315e+07 1.4651e+06
+-1.1857e+07 1.4978e+06
+-1.241e+07 1.5317e+06
+-1.2974e+07 1.5667e+06
+-1.355e+07 1.6028e+06
+-1.4138e+07 1.6401e+06
+-1.4738e+07 1.6786e+06
+-1.5351e+07 1.7187e+06
+-1.5978e+07 1.7609e+06
+-1.6618e+07 1.806e+06
+-1.7272e+07 1.8551e+06
+-1.7942e+07 1.9097e+06
+-1.8627e+07 1.9719e+06
+-1.933e+07 2.0443e+06
+-2.0052e+07 2.13e+06
+-2.0796e+07 2.2327e+06
+-2.1564e+07 2.3568e+06
+-2.236e+07 2.5069e+06
+-2.3187e+07 2.6879e+06
+-2.4051e+07 2.9046e+06
+-2.4957e+07 3.1614e+06
+-2.5909e+07 3.4618e+06
+-2.6915e+07 3.8079e+06
+-2.7978e+07 4.1999e+06
+-2.9104e+07 4.6355e+06
+-3.0295e+07 5.1094e+06
+-3.1555e+07 5.6131e+06
+-3.2881e+07 6.1346e+06
+-3.427e+07 6.6586e+06
+-3.5715e+07 7.1668e+06
+-3.7207e+07 7.6385e+06
+-3.873e+07 8.0518e+06
+-4.0268e+07 8.3846e+06
+-4.18e+07 8.6158e+06
+-4.3306e+07 8.727e+06
+-4.4761e+07 8.7035e+06
+-4.6143e+07 8.5353e+06
+-4.743e+07 8.2183e+06
+-4.8603e+07 7.754e+06
+-4.9645e+07 7.1501e+06
+-5.0546e+07 6.4197e+06
+-5.1297e+07 5.5804e+06
+-5.1894e+07 4.6536e+06
+-5.234e+07 3.6632e+06
+-5.2639e+07 2.634e+06
+-5.28e+07 1.591e+06
+-5.2832e+07 557880
+-5.2748e+07 -443780
+-5.2561e+07 -1.395e+06
+-5.2286e+07 -2.2799e+06
+-5.1935e+07 -3.0857e+06
+-5.1521e+07 -3.803e+06
+-5.1057e+07 -4.4249e+06
+-5.0555e+07 -4.9478e+06
+-5.0025e+07 -5.3706e+06
+-4.9476e+07 -5.6948e+06
+-4.8917e+07 -5.9246e+06
+-4.8357e+07 -6.0657e+06
+-4.7801e+07 -6.1254e+06
+-4.7256e+07 -6.1115e+06
+-4.6729e+07 -6.032e+06
+-4.6222e+07 -5.8946e+06
+-4.5742e+07 -5.7073e+06
+-4.529e+07 -5.4779e+06
+-4.4872e+07 -5.2147e+06
+-4.4489e+07 -4.9254e+06
+-4.4142e+07 -4.6171e+06
+-4.3834e+07 -4.2954e+06
+-4.3567e+07 -3.965e+06
+-4.3343e+07 -3.6298e+06
+-4.3164e+07 -3.2943e+06
+-4.303e+07 -2.9635e+06
+-4.2943e+07 -2.6426e+06
+-4.2901e+07 -2.3357e+06
+-4.2903e+07 -2.0446e+06
+-4.2943e+07 -1.7679e+06
+-4.3018e+07 -1.5028e+06
+-4.3122e+07 -1.2469e+06
+-4.325e+07 -1.0004e+06
+-4.3398e+07 -766880
+-4.3561e+07 -551460
+-4.3738e+07 -357780
+-4.3927e+07 -185470
+-4.4128e+07 -30049
+-4.4339e+07 114190
+-4.4559e+07 250190
+-4.4781e+07 375720
+-4.4999e+07 484720
+-4.5204e+07 571850
+-4.5392e+07 636870
+-4.5559e+07 685680
+-4.5712e+07 726360
+-4.5855e+07 763240
+-4.5993e+07 793430
+-4.6123e+07 809100
+-4.6238e+07 804430
+-4.6325e+07 781560
+-4.6377e+07 750270
+-4.6398e+07 720520
+-4.6399e+07 693390
+-4.6392e+07 658390
+-4.6382e+07 601020
+-4.6358e+07 515840
+-4.63e+07 414320
+-4.6191e+07 318980
+-4.6029e+07 245790
+-4.583e+07 188270
+-4.5618e+07 117980
+-4.541e+07 5446.1
+-4.5203e+07 -152210
+-4.4974e+07 -319480
+-4.47e+07 -440820
+-4.4369e+07 -480770
+-4.3998e+07 -457330
+-4.3622e+07 -440010
+-4.3268e+07 -507410
+-4.2942e+07 -690650
+-4.2619e+07 -943830
+-4.226e+07 -1.1671e+06
+-4.1837e+07 -1.2711e+06
+-4.1356e+07 -1.2388e+06
+-4.0855e+07 -1.1409e+06
+-4.0382e+07 -1.0915e+06
+-3.9965e+07 -1.1728e+06
+-3.9595e+07 -1.3801e+06
+-3.9223e+07 -1.6234e+06
+-3.8792e+07 -1.7834e+06
+-3.827e+07 -1.7837e+06
+-3.7665e+07 -1.6328e+06
+-3.7032e+07 -1.4133e+06
+-3.644e+07 -1.2321e+06
+-3.5946e+07 -1.1651e+06
+-3.5568e+07 -1.2278e+06
+-3.5286e+07 -1.3816e+06
+-3.5053e+07 -1.564e+06
+3.0921e+07 491010
+3.0712e+07 504420
+3.0506e+07 514280
+3.0307e+07 516920
+3.012e+07 508460
+2.9946e+07 485850
+2.9788e+07 447860
+2.9646e+07 395560
+2.952e+07 332230
+2.941e+07 262590
+2.9315e+07 191580
+2.9235e+07 123150
+2.917e+07 59480
+2.9121e+07 704.14
+2.9089e+07 -54650
+2.9075e+07 -108850
+2.908e+07 -164040
+2.9105e+07 -221500
+2.9149e+07 -281380
+2.9213e+07 -342770
+2.9294e+07 -404050
+2.9393e+07 -463460
+2.9507e+07 -519390
+2.9636e+07 -570610
+2.9779e+07 -616350
+2.9936e+07 -656170
+3.0105e+07 -689930
+3.0286e+07 -717670
+3.0476e+07 -739580
+3.0674e+07 -755870
+3.088e+07 -766790
+3.1091e+07 -772420
+3.1305e+07 -772710
+3.1521e+07 -767400
+3.1738e+07 -756100
+3.1953e+07 -738420
+3.2166e+07 -714090
+3.2373e+07 -683070
+3.2575e+07 -645640
+3.2768e+07 -602320
+3.2951e+07 -553820
+3.3123e+07 -500890
+3.3281e+07 -444170
+3.3425e+07 -384160
+3.3552e+07 -321150
+3.3663e+07 -255300
+3.3755e+07 -186790
+3.3827e+07 -115890
+3.3879e+07 -43133
+3.3909e+07 30676
+3.3918e+07 104500
+3.3904e+07 177150
+3.3868e+07 247430
+3.3811e+07 314260
+3.3732e+07 376670
+3.3632e+07 433840
+3.3513e+07 484990
+3.3376e+07 529290
+3.3222e+07 565830
+3.3054e+07 593560
+3.2875e+07 611320
+3.2686e+07 617930
+3.2491e+07 612250
+3.2293e+07 593240
+3.2095e+07 559990
+3.19e+07 511790
+3.1713e+07 448080
+3.1536e+07 368510
+3.1372e+07 272970
+3.1225e+07 161620
+3.1098e+07 34989
+3.0993e+07 -106010
+3.0913e+07 -259970
+3.0859e+07 -424980
+3.0833e+07 -598530
+3.0835e+07 -777580
+3.0865e+07 -958450
+3.0924e+07 -1.1369e+06
+3.1009e+07 -1.3083e+06
+3.1119e+07 -1.4674e+06
+3.1252e+07 -1.6087e+06
+3.1403e+07 -1.7264e+06
+3.1568e+07 -1.8149e+06
+3.1742e+07 -1.8684e+06
+3.1919e+07 -1.8818e+06
+3.2092e+07 -1.8504e+06
+3.2253e+07 -1.7705e+06
+3.2393e+07 -1.6398e+06
+3.2504e+07 -1.4572e+06
+3.2575e+07 -1.2238e+06
+3.2597e+07 -942200
+3.2559e+07 -617420
+3.2452e+07 -256330
+3.2269e+07 132320
+3.2002e+07 538250
+3.1648e+07 950120
+3.1204e+07 1.3561e+06
+3.0671e+07 1.7445e+06
+3.0052e+07 2.1045e+06
+2.9354e+07 2.4268e+06
+2.8585e+07 2.7039e+06
+2.7755e+07 2.9309e+06
+2.6876e+07 3.1054e+06
+2.596e+07 3.2275e+06
+2.5019e+07 3.2997e+06
+2.4064e+07 3.3262e+06
+2.3107e+07 3.3128e+06
+2.2156e+07 3.2662e+06
+2.1219e+07 3.1934e+06
+2.0302e+07 3.1011e+06
+1.941e+07 2.9957e+06
+1.8544e+07 2.8828e+06
+1.7707e+07 2.7669e+06
+1.69e+07 2.6517e+06
+1.6123e+07 2.5398e+06
+1.5376e+07 2.4332e+06
+1.4657e+07 2.3329e+06
+1.3964e+07 2.2396e+06
+1.3298e+07 2.1533e+06
+1.2656e+07 2.074e+06
+1.2037e+07 2.0014e+06
+1.1439e+07 1.9351e+06
+1.0861e+07 1.8745e+06
+1.03e+07 1.8193e+06
+9.7564e+06 1.769e+06
+9.2275e+06 1.7233e+06
+8.7121e+06 1.6819e+06
+8.2087e+06 1.6443e+06
+7.7162e+06 1.6105e+06
+7.2332e+06 1.5801e+06
+6.7586e+06 1.5529e+06
+6.2911e+06 1.5288e+06
+5.8299e+06 1.5074e+06
+5.3738e+06 1.4888e+06
+4.9222e+06 1.4726e+06
+4.4741e+06 1.4587e+06
+4.0289e+06 1.4471e+06
+3.5859e+06 1.4374e+06
+3.1446e+06 1.4296e+06
+2.7044e+06 1.4235e+06
+2.265e+06 1.4191e+06
+1.8259e+06 1.4162e+06
+1.3868e+06 1.4147e+06
+947400 1.4146e+06
+507380 1.4158e+06
+66519 1.4182e+06
+-375410 1.4219e+06
+-818630 1.4267e+06
+-1.2633e+06 1.4326e+06
+-1.7097e+06 1.4397e+06
+-2.1579e+06 1.4479e+06
+-2.6082e+06 1.4573e+06
+-3.0606e+06 1.4678e+06
+-3.5156e+06 1.4795e+06
+-3.9731e+06 1.4925e+06
+-4.4335e+06 1.5066e+06
+-4.8969e+06 1.5221e+06
+-5.3637e+06 1.539e+06
+-5.8341e+06 1.5572e+06
+-6.3084e+06 1.577e+06
+-6.7869e+06 1.5982e+06
+-7.27e+06 1.6211e+06
+-7.758e+06 1.6457e+06
+-8.2514e+06 1.672e+06
+-8.7506e+06 1.7001e+06
+-9.2561e+06 1.73e+06
+-9.7684e+06 1.7618e+06
+-1.0288e+07 1.7955e+06
+-1.0815e+07 1.831e+06
+-1.1351e+07 1.8683e+06
+-1.1896e+07 1.9074e+06
+-1.245e+07 1.9481e+06
+-1.3015e+07 1.9904e+06
+-1.3589e+07 2.0343e+06
+-1.4175e+07 2.0796e+06
+-1.4773e+07 2.1265e+06
+-1.5382e+07 2.175e+06
+-1.6004e+07 2.2253e+06
+-1.6639e+07 2.2781e+06
+-1.7287e+07 2.3341e+06
+-1.7948e+07 2.3944e+06
+-1.8623e+07 2.4606e+06
+-1.9313e+07 2.5349e+06
+-2.0017e+07 2.6199e+06
+-2.0737e+07 2.719e+06
+-2.1472e+07 2.8361e+06
+-2.2224e+07 2.9757e+06
+-2.2995e+07 3.1428e+06
+-2.3784e+07 3.3424e+06
+-2.4595e+07 3.5798e+06
+-2.5429e+07 3.8596e+06
+-2.6288e+07 4.1853e+06
+-2.7175e+07 4.5593e+06
+-2.8092e+07 4.9816e+06
+-2.904e+07 5.4493e+06
+-3.0023e+07 5.9566e+06
+-3.1039e+07 6.4939e+06
+-3.2088e+07 7.0477e+06
+-3.3168e+07 7.6008e+06
+-3.4273e+07 8.133e+06
+-3.5395e+07 8.6212e+06
+-3.6524e+07 9.0413e+06
+-3.7647e+07 9.369e+06
+-3.875e+07 9.5818e+06
+-3.9815e+07 9.66e+06
+-4.0826e+07 9.5888e+06
+-4.1767e+07 9.3591e+06
+-4.2624e+07 8.9681e+06
+-4.3385e+07 8.42e+06
+-4.4043e+07 7.7255e+06
+-4.4593e+07 6.901e+06
+-4.5037e+07 5.9678e+06
+-4.538e+07 4.9507e+06
+-4.563e+07 3.8764e+06
+-4.58e+07 2.7721e+06
+-4.5902e+07 1.6642e+06
+-4.5952e+07 577310
+-4.5963e+07 -466800
+-4.595e+07 -1.4497e+06
+-4.5924e+07 -2.3565e+06
+-4.5897e+07 -3.1758e+06
+-4.5875e+07 -3.8994e+06
+-4.5865e+07 -4.5222e+06
+-4.587e+07 -5.0417e+06
+-4.5893e+07 -5.4582e+06
+-4.5934e+07 -5.774e+06
+-4.5994e+07 -5.9941e+06
+-4.607e+07 -6.1247e+06
+-4.6162e+07 -6.1735e+06
+-4.6269e+07 -6.1484e+06
+-4.6388e+07 -6.0573e+06
+-4.652e+07 -5.9083e+06
+-4.6663e+07 -5.7092e+06
+-4.6815e+07 -5.4681e+06
+-4.6975e+07 -5.1933e+06
+-4.7143e+07 -4.8926e+06
+-4.7317e+07 -4.5727e+06
+-4.7499e+07 -4.2388e+06
+-4.7688e+07 -3.8949e+06
+-4.7888e+07 -3.5444e+06
+-4.8101e+07 -3.1915e+06
+-4.833e+07 -2.8413e+06
+-4.8577e+07 -2.4997e+06
+-4.8843e+07 -2.1721e+06
+-4.9128e+07 -1.8616e+06
+-4.9428e+07 -1.5687e+06
+-4.9738e+07 -1.2917e+06
+-5.0052e+07 -1.029e+06
+-5.0364e+07 -780540
+-5.0668e+07 -548520
+-5.0963e+07 -336310
+-5.1248e+07 -145870
+-5.1526e+07 24095
+-5.1796e+07 177790
+-5.206e+07 319560
+-5.2314e+07 450250
+-5.2552e+07 565610
+-5.2768e+07 658560
+-5.2956e+07 724410
+-5.3112e+07 765510
+-5.3236e+07 791410
+-5.3333e+07 813330
+-5.3409e+07 836230
+-5.3466e+07 854440
+-5.3502e+07 855090
+-5.351e+07 827900
+-5.3481e+07 774580
+-5.3409e+07 709850
+-5.3299e+07 651900
+-5.3163e+07 608290
+-5.3017e+07 568360
+-5.2869e+07 509480
+-5.2714e+07 414340
+-5.2535e+07 286460
+-5.2312e+07 150650
+-5.2037e+07 35515
+-5.1723e+07 -49815
+-5.1395e+07 -125600
+-5.1077e+07 -227270
+-5.0777e+07 -375100
+-5.0479e+07 -551440
+-5.0151e+07 -706460
+-4.977e+07 -793100
+-4.9336e+07 -806920
+-4.8876e+07 -798740
+-4.8431e+07 -845300
+-4.8027e+07 -995000
+-4.7664e+07 -1.2277e+06
+-4.731e+07 -1.461e+06
+-4.6927e+07 -1.602e+06
+-4.6495e+07 -1.6112e+06
+-4.603e+07 -1.5318e+06
+-4.557e+07 -1.4636e+06
+-4.5158e+07 -1.4982e+06
+-4.4809e+07 -1.6597e+06
+-4.4496e+07 -1.8894e+06
+-4.4169e+07 -2.0829e+06
+-4.3773e+07 -2.1516e+06
+-4.3289e+07 -2.0714e+06
+-4.2738e+07 -1.889e+06
+-4.2179e+07 -1.6909e+06
+-4.1678e+07 -1.557e+06
+-4.1281e+07 -1.5269e+06
+-4.0998e+07 -1.5934e+06
+-4.0807e+07 -1.7168e+06
+3.0198e+07 649940
+3.0009e+07 661170
+2.9826e+07 665920
+2.9653e+07 660970
+2.9489e+07 643250
+2.9338e+07 610640
+2.9198e+07 562740
+2.9067e+07 501170
+2.8946e+07 429370
+2.8832e+07 351780
+2.8727e+07 272860
+2.863e+07 195970
+2.8543e+07 122720
+2.8468e+07 52949
+2.8408e+07 -14869
+2.8363e+07 -82742
+2.8336e+07 -152320
+2.8326e+07 -224300
+2.8332e+07 -298260
+2.8355e+07 -372900
+2.8392e+07 -446490
+2.8443e+07 -517330
+2.8506e+07 -584030
+2.8582e+07 -645630
+2.8669e+07 -701480
+2.8769e+07 -751180
+2.888e+07 -794440
+2.9003e+07 -831090
+2.9136e+07 -861060
+2.9278e+07 -884410
+2.9428e+07 -901250
+2.9585e+07 -911670
+2.9747e+07 -915620
+2.9913e+07 -912860
+3.0082e+07 -903030
+3.0252e+07 -885750
+3.0423e+07 -860720
+3.0593e+07 -827870
+3.076e+07 -787400
+3.0924e+07 -739810
+3.1082e+07 -685770
+3.1234e+07 -626040
+3.1377e+07 -561300
+3.1511e+07 -492110
+3.1633e+07 -418850
+3.1743e+07 -341770
+3.184e+07 -261110
+3.1923e+07 -177250
+3.199e+07 -90797
+3.2041e+07 -2661.8
+3.2075e+07 85975
+3.2092e+07 173770
+3.2091e+07 259340
+3.2072e+07 341410
+3.2036e+07 418840
+3.1983e+07 490590
+3.1913e+07 555710
+3.1826e+07 613160
+3.1726e+07 661810
+3.1611e+07 700390
+3.1485e+07 727540
+3.1348e+07 741920
+3.1202e+07 742240
+3.1051e+07 727410
+3.0894e+07 696490
+3.0735e+07 648780
+3.0574e+07 583810
+3.0415e+07 501300
+3.0257e+07 401290
+3.0103e+07 284110
+2.9953e+07 150460
+2.9808e+07 1487.9
+2.9669e+07 -161160
+2.9536e+07 -335320
+2.9409e+07 -518250
+2.9288e+07 -706660
+2.9172e+07 -896650
+2.9061e+07 -1.0838e+06
+2.8954e+07 -1.2632e+06
+2.8852e+07 -1.4295e+06
+2.8752e+07 -1.5769e+06
+2.8655e+07 -1.6996e+06
+2.8559e+07 -1.7914e+06
+2.8464e+07 -1.8466e+06
+2.8368e+07 -1.8593e+06
+2.8269e+07 -1.8246e+06
+2.8165e+07 -1.7382e+06
+2.8052e+07 -1.597e+06
+2.7926e+07 -1.3996e+06
+2.7783e+07 -1.1461e+06
+2.7617e+07 -839010
+2.7422e+07 -482850
+2.7191e+07 -84559
+2.6917e+07 346730
+2.6594e+07 799990
+2.6219e+07 1.2627e+06
+2.5787e+07 1.7215e+06
+2.5297e+07 2.163e+06
+2.475e+07 2.5745e+06
+2.4149e+07 2.9447e+06
+2.3498e+07 3.2647e+06
+2.2806e+07 3.5281e+06
+2.2079e+07 3.7315e+06
+2.1327e+07 3.8748e+06
+2.0558e+07 3.9602e+06
+1.9781e+07 3.9927e+06
+1.9004e+07 3.9786e+06
+1.8233e+07 3.9257e+06
+1.7474e+07 3.842e+06
+1.6731e+07 3.7353e+06
+1.6007e+07 3.613e+06
+1.5304e+07 3.4814e+06
+1.4623e+07 3.346e+06
+1.3965e+07 3.2107e+06
+1.3331e+07 3.0789e+06
+1.2719e+07 2.9525e+06
+1.2129e+07 2.8331e+06
+1.1561e+07 2.7213e+06
+1.1013e+07 2.6175e+06
+1.0485e+07 2.5215e+06
+9.9761e+06 2.4332e+06
+9.4843e+06 2.3522e+06
+9.0087e+06 2.278e+06
+8.5481e+06 2.2103e+06
+8.1012e+06 2.1486e+06
+7.6668e+06 2.0925e+06
+7.2435e+06 2.0418e+06
+6.8302e+06 1.996e+06
+6.4255e+06 1.9549e+06
+6.0284e+06 1.9182e+06
+5.6378e+06 1.8856e+06
+5.2526e+06 1.8569e+06
+4.8719e+06 1.8317e+06
+4.4949e+06 1.8099e+06
+4.1208e+06 1.7912e+06
+3.7489e+06 1.7754e+06
+3.3787e+06 1.7623e+06
+3.0095e+06 1.7516e+06
+2.641e+06 1.7431e+06
+2.2729e+06 1.7367e+06
+1.9047e+06 1.7322e+06
+1.5363e+06 1.7294e+06
+1.1674e+06 1.7283e+06
+797850 1.7287e+06
+427540 1.7305e+06
+56349 1.7336e+06
+-315800 1.7381e+06
+-688980 1.7438e+06
+-1.0633e+06 1.7507e+06
+-1.4386e+06 1.7588e+06
+-1.8152e+06 1.7682e+06
+-2.193e+06 1.7787e+06
+-2.572e+06 1.7905e+06
+-2.9524e+06 1.8035e+06
+-3.334e+06 1.8178e+06
+-3.7172e+06 1.8335e+06
+-4.1018e+06 1.8505e+06
+-4.4881e+06 1.8691e+06
+-4.8761e+06 1.8892e+06
+-5.266e+06 1.9109e+06
+-5.658e+06 1.9343e+06
+-6.0523e+06 1.9596e+06
+-6.4491e+06 1.9868e+06
+-6.8487e+06 2.016e+06
+-7.2514e+06 2.0472e+06
+-7.6576e+06 2.0806e+06
+-8.0677e+06 2.1162e+06
+-8.482e+06 2.1541e+06
+-8.901e+06 2.1941e+06
+-9.3252e+06 2.2364e+06
+-9.7551e+06 2.2808e+06
+-1.0191e+07 2.3274e+06
+-1.0634e+07 2.376e+06
+-1.1084e+07 2.4265e+06
+-1.1542e+07 2.4789e+06
+-1.2008e+07 2.5332e+06
+-1.2483e+07 2.5895e+06
+-1.2967e+07 2.6481e+06
+-1.346e+07 2.7093e+06
+-1.3964e+07 2.7739e+06
+-1.4477e+07 2.843e+06
+-1.5e+07 2.9181e+06
+-1.5533e+07 3.0012e+06
+-1.6076e+07 3.0949e+06
+-1.6628e+07 3.2025e+06
+-1.7188e+07 3.328e+06
+-1.7757e+07 3.4757e+06
+-1.8333e+07 3.6507e+06
+-1.8917e+07 3.8584e+06
+-1.9507e+07 4.104e+06
+-2.0105e+07 4.3924e+06
+-2.0711e+07 4.7278e+06
+-2.1327e+07 5.1126e+06
+-2.1954e+07 5.5473e+06
+-2.2596e+07 6.0294e+06
+-2.3256e+07 6.553e+06
+-2.3936e+07 7.1083e+06
+-2.4639e+07 7.6811e+06
+-2.5367e+07 8.2534e+06
+-2.6121e+07 8.803e+06
+-2.6897e+07 9.3052e+06
+-2.7691e+07 9.7336e+06
+-2.8494e+07 1.0062e+07
+-2.9296e+07 1.0265e+07
+-3.0083e+07 1.0323e+07
+-3.0843e+07 1.022e+07
+-3.156e+07 9.9473e+06
+-3.2221e+07 9.5032e+06
+-3.2815e+07 8.8946e+06
+-3.3336e+07 8.1349e+06
+-3.3781e+07 7.2443e+06
+-3.4151e+07 6.2475e+06
+-3.4453e+07 5.1727e+06
+-3.4696e+07 4.0493e+06
+-3.4894e+07 2.9066e+06
+-3.506e+07 1.7723e+06
+-3.521e+07 671060
+-3.5359e+07 -375880
+-3.5519e+07 -1.3514e+06
+-3.5702e+07 -2.2423e+06
+-3.5915e+07 -3.0393e+06
+-3.6165e+07 -3.7365e+06
+-3.6453e+07 -4.3311e+06
+-3.678e+07 -4.8224e+06
+-3.7144e+07 -5.2122e+06
+-3.7539e+07 -5.5044e+06
+-3.7962e+07 -5.7043e+06
+-3.8406e+07 -5.8188e+06
+-3.8866e+07 -5.8554e+06
+-3.9335e+07 -5.8219e+06
+-3.981e+07 -5.726e+06
+-4.0284e+07 -5.5753e+06
+-4.0754e+07 -5.3776e+06
+-4.1215e+07 -5.1407e+06
+-4.1664e+07 -4.8727e+06
+-4.2097e+07 -4.5807e+06
+-4.2513e+07 -4.2708e+06
+-4.2911e+07 -3.947e+06
+-4.3291e+07 -3.6123e+06
+-4.3657e+07 -3.2691e+06
+-4.4009e+07 -2.9211e+06
+-4.4353e+07 -2.5732e+06
+-4.469e+07 -2.2316e+06
+-4.5024e+07 -1.9024e+06
+-4.5356e+07 -1.5902e+06
+-4.5684e+07 -1.2971e+06
+-4.6007e+07 -1.0234e+06
+-4.6319e+07 -768510
+-4.6614e+07 -532220
+-4.6889e+07 -315360
+-4.7143e+07 -118960
+-4.7377e+07 57071
+-4.7593e+07 214850
+-4.7795e+07 357770
+-4.7981e+07 488110
+-4.815e+07 604510
+-4.8296e+07 701380
+-4.8415e+07 771790
+-4.8504e+07 812540
+-4.8563e+07 828150
+-4.8593e+07 830110
+-4.8596e+07 830610
+-4.8574e+07 834200
+-4.8529e+07 833490
+-4.8457e+07 813190
+-4.8356e+07 761180
+-4.8223e+07 679250
+-4.8056e+07 584960
+-4.7858e+07 501320
+-4.7637e+07 440420
+-4.7403e+07 392750
+-4.7164e+07 331820
+-4.6921e+07 232650
+-4.6669e+07 91670
+-4.6397e+07 -67902
+-4.6098e+07 -211190
+-4.5773e+07 -317760
+-4.5438e+07 -398590
+-4.5111e+07 -488810
+-4.4805e+07 -619290
+-4.4516e+07 -788230
+-4.4223e+07 -956790
+-4.3902e+07 -1.0757e+06
+-4.3541e+07 -1.1249e+06
+-4.315e+07 -1.1351e+06
+-4.2761e+07 -1.1711e+06
+-4.2404e+07 -1.286e+06
+-4.2099e+07 -1.479e+06
+-4.1835e+07 -1.6894e+06
+-4.1584e+07 -1.8347e+06
+-4.1317e+07 -1.8673e+06
+-4.1025e+07 -1.8088e+06
+-4.0724e+07 -1.7385e+06
+-4.0447e+07 -1.7424e+06
+-4.022e+07 -1.8584e+06
+-4.0042e+07 -2.0537e+06
+-3.9886e+07 -2.2451e+06
+-3.9709e+07 -2.3485e+06
+-3.948e+07 -2.3228e+06
+-3.9193e+07 -2.1864e+06
+-3.8875e+07 -2.0008e+06
+-3.8572e+07 -1.8363e+06
+-3.8328e+07 -1.7418e+06
+-3.817e+07 -1.731e+06
+-3.8095e+07 -1.7869e+06
+2.373e+07 769310
+2.36e+07 777410
+2.3475e+07 777110
+2.3357e+07 765990
+2.3245e+07 741900
+2.314e+07 703610
+2.3038e+07 651270
+2.2939e+07 586650
+2.2841e+07 512840
+2.2743e+07 433630
+2.2646e+07 352640
+2.2551e+07 272470
+2.2461e+07 194210
+2.2377e+07 117510
+2.2301e+07 41034
+2.2237e+07 -36766
+2.2184e+07 -116890
+2.2142e+07 -199390
+2.2112e+07 -283330
+2.2092e+07 -367150
+2.2082e+07 -449100
+2.208e+07 -527700
+2.2086e+07 -601890
+2.2101e+07 -671000
+2.2125e+07 -734590
+2.2157e+07 -792230
+2.2199e+07 -843520
+2.2251e+07 -888040
+2.2311e+07 -925490
+2.238e+07 -955710
+2.2457e+07 -978700
+2.2541e+07 -994460
+2.263e+07 -1.003e+06
+2.2725e+07 -1.004e+06
+2.2825e+07 -997240
+2.2927e+07 -982350
+2.3033e+07 -959030
+2.3141e+07 -927190
+2.3251e+07 -886970
+2.336e+07 -838770
+2.347e+07 -783210
+2.3577e+07 -720960
+2.3682e+07 -652720
+2.3783e+07 -579070
+2.3879e+07 -500470
+2.397e+07 -417280
+2.4053e+07 -329820
+2.413e+07 -238540
+2.4198e+07 -144110
+2.4258e+07 -47508
+2.4309e+07 50036
+2.4351e+07 147110
+2.4382e+07 242250
+2.4404e+07 334070
+2.4415e+07 421340
+2.4416e+07 502910
+2.4406e+07 577690
+2.4386e+07 644530
+2.4356e+07 702170
+2.4317e+07 749230
+2.4268e+07 784270
+2.421e+07 805910
+2.4145e+07 812870
+2.4071e+07 804090
+2.399e+07 778740
+2.3901e+07 736220
+2.3804e+07 676200
+2.3699e+07 598560
+2.3586e+07 503490
+2.3464e+07 391480
+2.3331e+07 263380
+2.3187e+07 120460
+2.3031e+07 -35538
+2.2862e+07 -202420
+2.2678e+07 -377490
+2.248e+07 -557530
+2.2265e+07 -738840
+2.2036e+07 -917240
+2.1791e+07 -1.0881e+06
+2.1532e+07 -1.2464e+06
+2.1261e+07 -1.3867e+06
+2.0979e+07 -1.5034e+06
+2.0689e+07 -1.5908e+06
+2.0394e+07 -1.643e+06
+2.0097e+07 -1.6543e+06
+1.98e+07 -1.6196e+06
+1.9507e+07 -1.5341e+06
+1.9218e+07 -1.3941e+06
+1.8934e+07 -1.1973e+06
+1.8655e+07 -943120
+1.8379e+07 -632910
+1.8103e+07 -270440
+1.7823e+07 138030
+1.7534e+07 583760
+1.7231e+07 1.0557e+06
+1.6909e+07 1.5408e+06
+1.6563e+07 2.025e+06
+1.6191e+07 2.4936e+06
+1.5792e+07 2.9324e+06
+1.5366e+07 3.3287e+06
+1.4916e+07 3.6721e+06
+1.4445e+07 3.955e+06
+1.3959e+07 4.1733e+06
+1.3462e+07 4.3263e+06
+1.2961e+07 4.4165e+06
+1.2461e+07 4.4491e+06
+1.1966e+07 4.4311e+06
+1.148e+07 4.3711e+06
+1.1005e+07 4.2778e+06
+1.0543e+07 4.1598e+06
+1.0096e+07 4.0252e+06
+9.6621e+06 3.8808e+06
+9.243e+06 3.7323e+06
+8.838e+06 3.5841e+06
+8.4467e+06 3.4394e+06
+8.0687e+06 3.3006e+06
+7.7036e+06 3.169e+06
+7.3511e+06 3.0455e+06
+7.0106e+06 2.9303e+06
+6.6818e+06 2.8235e+06
+6.3642e+06 2.7248e+06
+6.0571e+06 2.634e+06
+5.7599e+06 2.5507e+06
+5.4718e+06 2.4746e+06
+5.1922e+06 2.4052e+06
+4.9202e+06 2.3422e+06
+4.655e+06 2.2854e+06
+4.3956e+06 2.2342e+06
+4.1412e+06 2.1885e+06
+3.8911e+06 2.1479e+06
+3.6444e+06 2.1121e+06
+3.4005e+06 2.0807e+06
+3.1587e+06 2.0536e+06
+2.9184e+06 2.0303e+06
+2.6791e+06 2.0105e+06
+2.4404e+06 1.994e+06
+2.202e+06 1.9805e+06
+1.9634e+06 1.9697e+06
+1.7245e+06 1.9613e+06
+1.4851e+06 1.9552e+06
+1.2451e+06 1.9512e+06
+1.0043e+06 1.9489e+06
+762780 1.9484e+06
+520480 1.9494e+06
+277410 1.9518e+06
+33599 1.9556e+06
+-210890 1.9606e+06
+-455980 1.9669e+06
+-701610 1.9744e+06
+-947680 1.983e+06
+-1.1941e+06 1.9927e+06
+-1.4408e+06 2.0037e+06
+-1.6877e+06 2.0158e+06
+-1.9347e+06 2.0291e+06
+-2.1818e+06 2.0437e+06
+-2.4288e+06 2.0596e+06
+-2.6757e+06 2.0769e+06
+-2.9226e+06 2.0956e+06
+-3.1693e+06 2.116e+06
+-3.4158e+06 2.138e+06
+-3.6623e+06 2.1618e+06
+-3.9087e+06 2.1875e+06
+-4.1552e+06 2.2152e+06
+-4.4019e+06 2.245e+06
+-4.6488e+06 2.2771e+06
+-4.8962e+06 2.3115e+06
+-5.1443e+06 2.3483e+06
+-5.3934e+06 2.3875e+06
+-5.6437e+06 2.4293e+06
+-5.8955e+06 2.4736e+06
+-6.1493e+06 2.5204e+06
+-6.4054e+06 2.5696e+06
+-6.6641e+06 2.6213e+06
+-6.9261e+06 2.6752e+06
+-7.1917e+06 2.7314e+06
+-7.4613e+06 2.7899e+06
+-7.7355e+06 2.8508e+06
+-8.0146e+06 2.9142e+06
+-8.299e+06 2.9805e+06
+-8.5888e+06 3.0504e+06
+-8.8843e+06 3.1248e+06
+-9.1854e+06 3.2052e+06
+-9.4919e+06 3.2934e+06
+-9.8034e+06 3.3919e+06
+-1.0119e+07 3.5038e+06
+-1.0439e+07 3.6329e+06
+-1.0762e+07 3.7837e+06
+-1.1088e+07 3.9614e+06
+-1.1416e+07 4.1715e+06
+-1.1747e+07 4.4198e+06
+-1.2082e+07 4.7119e+06
+-1.2424e+07 5.0526e+06
+-1.2777e+07 5.4456e+06
+-1.3147e+07 5.8923e+06
+-1.354e+07 6.3912e+06
+-1.3964e+07 6.9373e+06
+-1.4429e+07 7.521e+06
+-1.4944e+07 8.128e+06
+-1.5515e+07 8.739e+06
+-1.6149e+07 9.3301e+06
+-1.6848e+07 9.874e+06
+-1.7608e+07 1.0341e+07
+-1.8422e+07 1.0701e+07
+-1.9279e+07 1.0927e+07
+-2.0162e+07 1.0994e+07
+-2.105e+07 1.0885e+07
+-2.1924e+07 1.0592e+07
+-2.2762e+07 1.0113e+07
+-2.3546e+07 9.4573e+06
+-2.4262e+07 8.6417e+06
+-2.49e+07 7.6902e+06
+-2.5456e+07 6.6318e+06
+-2.5933e+07 5.4988e+06
+-2.6336e+07 4.3241e+06
+-2.6677e+07 3.1398e+06
+-2.697e+07 1.9751e+06
+-2.7228e+07 855440
+-2.7468e+07 -198310
+-2.7702e+07 -1.1701e+06
+-2.7942e+07 -2.0487e+06
+-2.8198e+07 -2.8269e+06
+-2.8476e+07 -3.5011e+06
+-2.878e+07 -4.0708e+06
+-2.911e+07 -4.5375e+06
+-2.9465e+07 -4.9048e+06
+-2.9841e+07 -5.178e+06
+-3.0233e+07 -5.3633e+06
+-3.0636e+07 -5.468e+06
+-3.1043e+07 -5.4997e+06
+-3.1449e+07 -5.4661e+06
+-3.1848e+07 -5.3744e+06
+-3.2235e+07 -5.2319e+06
+-3.2605e+07 -5.0461e+06
+-3.2955e+07 -4.8244e+06
+-3.3281e+07 -4.5743e+06
+-3.3581e+07 -4.3024e+06
+-3.3853e+07 -4.0137e+06
+-3.4095e+07 -3.7113e+06
+-3.4311e+07 -3.3972e+06
+-3.45e+07 -3.0731e+06
+-3.4665e+07 -2.7419e+06
+-3.481e+07 -2.4082e+06
+-3.4937e+07 -2.0782e+06
+-3.5051e+07 -1.7581e+06
+-3.5153e+07 -1.453e+06
+-3.5247e+07 -1.1663e+06
+-3.5332e+07 -899870
+-3.5408e+07 -654200
+-3.5472e+07 -429610
+-3.5522e+07 -226140
+-3.5558e+07 -43168
+-3.5581e+07 121020
+-3.5595e+07 269180
+-3.56e+07 403880
+-3.5598e+07 525590
+-3.5586e+07 631150
+-3.5561e+07 714330
+-3.552e+07 768960
+-3.5464e+07 793430
+-3.5392e+07 793610
+-3.5306e+07 781280
+-3.5207e+07 767880
+-3.5093e+07 756960
+-3.4963e+07 740670
+-3.4815e+07 704130
+-3.4652e+07 636070
+-3.4474e+07 538880
+-3.4284e+07 430210
+-3.4082e+07 333110
+-3.3867e+07 260230
+-3.3641e+07 203270
+-3.3405e+07 136680
+-3.3165e+07 35015
+-3.2925e+07 -107490
+-3.2686e+07 -270250
+-3.2447e+07 -419220
+-3.2206e+07 -531560
+-3.1965e+07 -613700
+-3.1729e+07 -697470
+-3.1504e+07 -815150
+-3.1295e+07 -971610
+-3.1095e+07 -1.1363e+06
+-3.0895e+07 -1.2639e+06
+-3.0683e+07 -1.3299e+06
+-3.0457e+07 -1.3534e+06
+-3.0228e+07 -1.3875e+06
+-3.0015e+07 -1.4811e+06
+-2.9837e+07 -1.6401e+06
+-2.9698e+07 -1.8184e+06
+-2.9587e+07 -1.9463e+06
+-2.9486e+07 -1.9792e+06
+-2.9381e+07 -1.9297e+06
+-2.9272e+07 -1.8622e+06
+-2.9171e+07 -1.8522e+06
+-2.9099e+07 -1.9387e+06
+-2.9063e+07 -2.1011e+06
+-2.9059e+07 -2.2722e+06
+-2.9065e+07 -2.3774e+06
+-2.9059e+07 -2.3728e+06
+-2.9029e+07 -2.2633e+06
+-2.8978e+07 -2.0936e+06
+-2.8925e+07 -1.9227e+06
+-2.8894e+07 -1.7987e+06
+-2.8905e+07 -1.7435e+06
+-2.8965e+07 -1.753e+06
+1.4706e+07 833270
+1.4645e+07 839550
+1.4585e+07 836700
+1.4528e+07 822990
+1.4472e+07 796950
+1.4416e+07 757860
+1.4359e+07 706080
+1.4299e+07 643180
+1.4235e+07 571770
+1.4167e+07 494970
+1.4096e+07 415680
+1.4024e+07 335930
+1.3951e+07 256520
+1.3881e+07 177050
+1.3813e+07 96416
+1.3751e+07 13504
+1.3694e+07 -72211
+1.3643e+07 -160330
+1.3597e+07 -249620
+1.3556e+07 -338390
+1.352e+07 -424970
+1.3489e+07 -508040
+1.3463e+07 -586800
+1.3442e+07 -660770
+1.3427e+07 -729590
+1.3418e+07 -792850
+1.3415e+07 -850010
+1.342e+07 -900490
+1.3431e+07 -943800
+1.3448e+07 -979620
+1.3472e+07 -1.0078e+06
+1.3502e+07 -1.0284e+06
+1.3537e+07 -1.0412e+06
+1.3576e+07 -1.046e+06
+1.362e+07 -1.0426e+06
+1.3667e+07 -1.0307e+06
+1.3718e+07 -1.01e+06
+1.3771e+07 -980370
+1.3827e+07 -941970
+1.3885e+07 -895140
+1.3944e+07 -840390
+1.4005e+07 -778380
+1.4065e+07 -709750
+1.4125e+07 -635140
+1.4185e+07 -555050
+1.4243e+07 -469940
+1.4299e+07 -380230
+1.4353e+07 -286440
+1.4405e+07 -189290
+1.4455e+07 -89755
+1.4502e+07 10909
+1.4547e+07 111290
+1.459e+07 209940
+1.4629e+07 305450
+1.4666e+07 396570
+1.4699e+07 482130
+1.4729e+07 561020
+1.4755e+07 632050
+1.4778e+07 693970
+1.4796e+07 745410
+1.4811e+07 784990
+1.482e+07 811380
+1.4824e+07 823430
+1.4822e+07 820230
+1.4813e+07 801090
+1.4795e+07 765590
+1.4768e+07 713530
+1.4729e+07 644980
+1.4677e+07 560210
+1.461e+07 459830
+1.4526e+07 344730
+1.4424e+07 216190
+1.4301e+07 75845
+1.4156e+07 -74277
+1.3988e+07 -231740
+1.3796e+07 -393710
+1.3581e+07 -556940
+1.3343e+07 -717800
+1.3083e+07 -872230
+1.2804e+07 -1.0159e+06
+1.2508e+07 -1.1439e+06
+1.2201e+07 -1.2513e+06
+1.1886e+07 -1.3328e+06
+1.1568e+07 -1.3828e+06
+1.1253e+07 -1.3957e+06
+1.0945e+07 -1.3662e+06
+1.0648e+07 -1.2891e+06
+1.0367e+07 -1.1599e+06
+1.0103e+07 -975420
+9.8577e+06 -733760
+9.6299e+06 -435070
+9.417e+06 -81865
+9.2151e+06 320680
+9.019e+06 764560
+8.8229e+06 1.2391e+06
+8.6213e+06 1.7311e+06
+8.4092e+06 2.2257e+06
+8.183e+06 2.7071e+06
+7.9407e+06 3.1599e+06
+7.6827e+06 3.5696e+06
+7.4108e+06 3.9245e+06
+7.1288e+06 4.2159e+06
+6.8414e+06 4.439e+06
+6.5537e+06 4.5927e+06
+6.2704e+06 4.6798e+06
+5.9959e+06 4.7061e+06
+5.7331e+06 4.6795e+06
+5.4838e+06 4.6093e+06
+5.2486e+06 4.5053e+06
+5.0272e+06 4.3768e+06
+4.8185e+06 4.2322e+06
+4.621e+06 4.0786e+06
+4.4332e+06 3.922e+06
+4.2534e+06 3.7666e+06
+4.0805e+06 3.6155e+06
+3.9133e+06 3.4709e+06
+3.7512e+06 3.334e+06
+3.5936e+06 3.2055e+06
+3.4402e+06 3.0855e+06
+3.2908e+06 2.9741e+06
+3.1453e+06 2.871e+06
+3.0034e+06 2.776e+06
+2.8651e+06 2.6888e+06
+2.7301e+06 2.609e+06
+2.5982e+06 2.5362e+06
+2.469e+06 2.4703e+06
+2.3421e+06 2.4108e+06
+2.2173e+06 2.3574e+06
+2.0941e+06 2.3099e+06
+1.9722e+06 2.2678e+06
+1.8512e+06 2.2309e+06
+1.7307e+06 2.1988e+06
+1.6105e+06 2.1712e+06
+1.4904e+06 2.1477e+06
+1.37e+06 2.128e+06
+1.2493e+06 2.1117e+06
+1.128e+06 2.0985e+06
+1.0061e+06 2.0882e+06
+883560 2.0804e+06
+760300 2.0748e+06
+636330 2.0713e+06
+511680 2.0697e+06
+386390 2.0697e+06
+260530 2.0712e+06
+134170 2.0741e+06
+7417.6 2.0782e+06
+-119640 2.0836e+06
+-246890 2.0901e+06
+-374220 2.0977e+06
+-501520 2.1063e+06
+-628670 2.116e+06
+-755550 2.1268e+06
+-882040 2.1386e+06
+-1.0081e+06 2.1516e+06
+-1.1335e+06 2.1657e+06
+-1.2582e+06 2.1812e+06
+-1.3821e+06 2.1979e+06
+-1.5052e+06 2.216e+06
+-1.6273e+06 2.2357e+06
+-1.7485e+06 2.257e+06
+-1.8686e+06 2.2801e+06
+-1.9876e+06 2.305e+06
+-2.1056e+06 2.332e+06
+-2.2225e+06 2.3611e+06
+-2.3384e+06 2.3925e+06
+-2.4533e+06 2.4263e+06
+-2.5673e+06 2.4627e+06
+-2.6805e+06 2.5016e+06
+-2.793e+06 2.5431e+06
+-2.9051e+06 2.5873e+06
+-3.0168e+06 2.6343e+06
+-3.1284e+06 2.6838e+06
+-3.2403e+06 2.7361e+06
+-3.3526e+06 2.7909e+06
+-3.4657e+06 2.8483e+06
+-3.5801e+06 2.9083e+06
+-3.6959e+06 2.9709e+06
+-3.8136e+06 3.0364e+06
+-3.9335e+06 3.105e+06
+-4.0558e+06 3.1774e+06
+-4.1809e+06 3.2545e+06
+-4.3087e+06 3.3376e+06
+-4.4393e+06 3.4284e+06
+-4.5728e+06 3.5294e+06
+-4.7091e+06 3.6437e+06
+-4.8483e+06 3.7752e+06
+-4.991e+06 3.9285e+06
+-5.1379e+06 4.1092e+06
+-5.2909e+06 4.3234e+06
+-5.453e+06 4.5779e+06
+-5.6284e+06 4.8793e+06
+-5.8236e+06 5.234e+06
+-6.0469e+06 5.6472e+06
+-6.309e+06 6.122e+06
+-6.6224e+06 6.6584e+06
+-7.0011e+06 7.2522e+06
+-7.4596e+06 7.8943e+06
+-8.0117e+06 8.5696e+06
+-8.6687e+06 9.2569e+06
+-9.4378e+06 9.929e+06
+-1.032e+07 1.0554e+07
+-1.1311e+07 1.1098e+07
+-1.2397e+07 1.1524e+07
+-1.3557e+07 1.18e+07
+-1.4765e+07 1.1897e+07
+-1.5989e+07 1.1796e+07
+-1.7195e+07 1.1485e+07
+-1.8353e+07 1.0966e+07
+-1.9433e+07 1.025e+07
+-2.0412e+07 9.3585e+06
+-2.1274e+07 8.3208e+06
+-2.2012e+07 7.1721e+06
+-2.2626e+07 5.9501e+06
+-2.3122e+07 4.6926e+06
+-2.3513e+07 3.4354e+06
+-2.3813e+07 2.2101e+06
+-2.4041e+07 1.0434e+06
+-2.4215e+07 -44099
+-2.435e+07 -1.0373e+06
+-2.4462e+07 -1.9265e+06
+-2.4564e+07 -2.7068e+06
+-2.4663e+07 -3.377e+06
+-2.4767e+07 -3.9388e+06
+-2.4878e+07 -4.3961e+06
+-2.4997e+07 -4.7543e+06
+-2.5123e+07 -5.0202e+06
+-2.5253e+07 -5.2012e+06
+-2.5383e+07 -5.3054e+06
+-2.5508e+07 -5.3407e+06
+-2.5623e+07 -5.3147e+06
+-2.5724e+07 -5.2345e+06
+-2.5806e+07 -5.1069e+06
+-2.5866e+07 -4.9387e+06
+-2.59e+07 -4.737e+06
+-2.5908e+07 -4.5086e+06
+-2.5888e+07 -4.2595e+06
+-2.5838e+07 -3.9941e+06
+-2.5761e+07 -3.7148e+06
+-2.5656e+07 -3.4229e+06
+-2.5524e+07 -3.1197e+06
+-2.5368e+07 -2.8076e+06
+-2.519e+07 -2.4911e+06
+-2.4993e+07 -2.1757e+06
+-2.4781e+07 -1.8671e+06
+-2.4557e+07 -1.5705e+06
+-2.4326e+07 -1.2893e+06
+-2.4091e+07 -1.0261e+06
+-2.3856e+07 -782760
+-2.3621e+07 -560390
+-2.3386e+07 -359330
+-2.3152e+07 -178480
+-2.2921e+07 -15149
+-2.2694e+07 134050
+-2.2473e+07 271450
+-2.226e+07 396400
+-2.2055e+07 504340
+-2.1857e+07 588180
+-2.1663e+07 641930
+-2.1472e+07 664940
+-2.1283e+07 664000
+-2.1098e+07 651080
+-2.0916e+07 636970
+-2.0737e+07 624420
+-2.056e+07 605500
+-2.0384e+07 566370
+-2.0212e+07 497290
+-2.0044e+07 401420
+-1.9885e+07 295480
+-1.9732e+07 200150
+-1.9583e+07 125810
+-1.9431e+07 63758
+-1.9273e+07 -9338.6
+-1.9107e+07 -115210
+-1.8941e+07 -256770
+-1.8781e+07 -413250
+-1.8633e+07 -553140
+-1.8499e+07 -656970
+-1.8377e+07 -733000
+-1.8261e+07 -812480
+-1.8149e+07 -925810
+-1.8041e+07 -1.0768e+06
+-1.7937e+07 -1.2359e+06
+-1.7838e+07 -1.3597e+06
+-1.7744e+07 -1.4244e+06
+-1.7656e+07 -1.4473e+06
+-1.7574e+07 -1.4775e+06
+-1.7501e+07 -1.561e+06
+-1.7442e+07 -1.7048e+06
+-1.7396e+07 -1.8668e+06
+-1.7361e+07 -1.9827e+06
+-1.7331e+07 -2.0097e+06
+-1.7307e+07 -1.9578e+06
+-1.729e+07 -1.8856e+06
+-1.7288e+07 -1.8636e+06
+-1.7308e+07 -1.9309e+06
+-1.7351e+07 -2.0721e+06
+-1.7413e+07 -2.2274e+06
+-1.7482e+07 -2.3271e+06
+-1.7548e+07 -2.3271e+06
+-1.7606e+07 -2.2267e+06
+-1.7657e+07 -2.0629e+06
+-1.7711e+07 -1.8888e+06
+-1.7778e+07 -1.7508e+06
+-1.7869e+07 -1.6736e+06
+-1.7987e+07 -1.658e+06
+7.3206e+06 849130
+7.312e+06 855870
+7.302e+06 853500
+7.2904e+06 840570
+7.2767e+06 815870
+7.2602e+06 778780
+7.2405e+06 729610
+7.2173e+06 669740
+7.1904e+06 601470
+7.1601e+06 527550
+7.1271e+06 450590
+7.0919e+06 372410
+7.0553e+06 293700
+7.0183e+06 214100
+6.9814e+06 132610
+6.9453e+06 48287
+6.9106e+06 -39237
+6.8777e+06 -129430
+6.8468e+06 -220950
+6.8183e+06 -312100
+6.7926e+06 -401200
+6.7699e+06 -487010
+6.7506e+06 -568730
+6.7349e+06 -645930
+6.7231e+06 -718240
+6.7154e+06 -785200
+6.7119e+06 -846180
+6.7125e+06 -900520
+6.7173e+06 -947620
+6.726e+06 -987080
+6.7384e+06 -1.0187e+06
+6.754e+06 -1.0423e+06
+6.7725e+06 -1.0578e+06
+6.7934e+06 -1.065e+06
+6.8161e+06 -1.0636e+06
+6.8403e+06 -1.0533e+06
+6.8654e+06 -1.0339e+06
+6.8912e+06 -1.0053e+06
+6.9172e+06 -967620
+6.9432e+06 -921270
+6.9689e+06 -866760
+6.9941e+06 -804710
+7.0185e+06 -735800
+7.0419e+06 -660710
+7.0644e+06 -580020
+7.0859e+06 -494270
+7.1066e+06 -403960
+7.1267e+06 -309690
+7.1466e+06 -212240
+7.1666e+06 -112610
+7.1871e+06 -12032
+7.2085e+06 88085
+7.2311e+06 186310
+7.2552e+06 281300
+7.281e+06 371810
+7.3087e+06 456730
+7.3383e+06 534990
+7.37e+06 605480
+7.4034e+06 667030
+7.4385e+06 718370
+7.4746e+06 758260
+7.5111e+06 785530
+7.5473e+06 799200
+7.5819e+06 798510
+7.6136e+06 782950
+7.6411e+06 752260
+7.6627e+06 706360
+7.6765e+06 645410
+7.6809e+06 569740
+7.6739e+06 479970
+7.6539e+06 376940
+7.6193e+06 261780
+7.5688e+06 135930
+7.5015e+06 1120.3
+7.4169e+06 -140610
+7.315e+06 -286890
+7.1968e+06 -435020
+7.0636e+06 -581980
+6.9178e+06 -724330
+6.7622e+06 -858310
+6.6005e+06 -979720
+6.4369e+06 -1.084e+06
+6.2761e+06 -1.1661e+06
+6.1227e+06 -1.2207e+06
+5.9813e+06 -1.2422e+06
+5.8561e+06 -1.2246e+06
+5.7504e+06 -1.1622e+06
+5.666e+06 -1.0495e+06
+5.6035e+06 -882080
+5.5613e+06 -656500
+5.536e+06 -371440
+5.5222e+06 -27924
+5.513e+06 370060
+5.5003e+06 815300
+5.4755e+06 1.2973e+06
+5.4308e+06 1.8024e+06
+5.3595e+06 2.3147e+06
+5.2574e+06 2.8168e+06
+5.1227e+06 3.2908e+06
+4.9571e+06 3.7206e+06
+4.7649e+06 4.092e+06
+4.5527e+06 4.395e+06
+4.3286e+06 4.6239e+06
+4.1011e+06 4.7776e+06
+3.8781e+06 4.8592e+06
+3.6663e+06 4.8757e+06
+3.4704e+06 4.8364e+06
+3.2929e+06 4.7522e+06
+3.1347e+06 4.6339e+06
+2.9947e+06 4.4921e+06
+2.871e+06 4.3359e+06
+2.7607e+06 4.1728e+06
+2.6611e+06 4.0087e+06
+2.5692e+06 3.8477e+06
+2.4827e+06 3.6928e+06
+2.3996e+06 3.5456e+06
+2.3184e+06 3.407e+06
+2.2381e+06 3.2774e+06
+2.1581e+06 3.1568e+06
+2.078e+06 3.0449e+06
+1.9977e+06 2.9415e+06
+1.9171e+06 2.8461e+06
+1.8363e+06 2.7584e+06
+1.7555e+06 2.6782e+06
+1.6745e+06 2.605e+06
+1.5937e+06 2.5386e+06
+1.5129e+06 2.4787e+06
+1.4321e+06 2.425e+06
+1.3515e+06 2.3772e+06
+1.271e+06 2.335e+06
+1.1906e+06 2.298e+06
+1.1102e+06 2.2659e+06
+1.0299e+06 2.2383e+06
+949660 2.2149e+06
+869400 2.1953e+06
+789150 2.1791e+06
+708910 2.1661e+06
+628670 2.156e+06
+548440 2.1484e+06
+468220 2.143e+06
+388020 2.1397e+06
+307850 2.1382e+06
+227720 2.1383e+06
+147640 2.1399e+06
+67624 2.1429e+06
+-12324 2.1471e+06
+-92189 2.1524e+06
+-171960 2.1589e+06
+-251630 2.1664e+06
+-331190 2.1749e+06
+-410640 2.1845e+06
+-489960 2.195e+06
+-569160 2.2067e+06
+-648230 2.2194e+06
+-727170 2.2333e+06
+-805990 2.2485e+06
+-884680 2.2649e+06
+-963250 2.2827e+06
+-1.0417e+06 2.302e+06
+-1.1201e+06 2.323e+06
+-1.1983e+06 2.3457e+06
+-1.2765e+06 2.3703e+06
+-1.3546e+06 2.3969e+06
+-1.4326e+06 2.4256e+06
+-1.5106e+06 2.4567e+06
+-1.5886e+06 2.4902e+06
+-1.6665e+06 2.5262e+06
+-1.7445e+06 2.5648e+06
+-1.8226e+06 2.6062e+06
+-1.9007e+06 2.6502e+06
+-1.9791e+06 2.6971e+06
+-2.0577e+06 2.7467e+06
+-2.1368e+06 2.7991e+06
+-2.2164e+06 2.8543e+06
+-2.2967e+06 2.9122e+06
+-2.3779e+06 2.9728e+06
+-2.4602e+06 3.0363e+06
+-2.5438e+06 3.1029e+06
+-2.6291e+06 3.1729e+06
+-2.7162e+06 3.2468e+06
+-2.8055e+06 3.3256e+06
+-2.8972e+06 3.4106e+06
+-2.9917e+06 3.5036e+06
+-3.0895e+06 3.6072e+06
+-3.1913e+06 3.7245e+06
+-3.2983e+06 3.8597e+06
+-3.4122e+06 4.0181e+06
+-3.5355e+06 4.2058e+06
+-3.672e+06 4.43e+06
+-3.827e+06 4.6985e+06
+-4.0077e+06 5.0197e+06
+-4.2236e+06 5.4017e+06
+-4.4863e+06 5.8514e+06
+-4.8099e+06 6.3738e+06
+-5.2102e+06 6.9703e+06
+-5.7039e+06 7.6375e+06
+-6.3075e+06 8.3658e+06
+-7.0352e+06 9.1383e+06
+-7.8973e+06 9.9304e+06
+-8.8976e+06 1.071e+07
+-1.0032e+07 1.1439e+07
+-1.1287e+07 1.2076e+07
+-1.2639e+07 1.2577e+07
+-1.4057e+07 1.2902e+07
+-1.55e+07 1.3019e+07
+-1.6926e+07 1.2905e+07
+-1.8291e+07 1.2548e+07
+-1.9556e+07 1.1953e+07
+-2.0686e+07 1.1136e+07
+-2.1659e+07 1.0126e+07
+-2.246e+07 8.9605e+06
+-2.3086e+07 7.6817e+06
+-2.3544e+07 6.3348e+06
+-2.3849e+07 4.9634e+06
+-2.402e+07 3.6073e+06
+-2.4081e+07 2.3004e+06
+-2.4057e+07 1.0701e+06
+-2.3969e+07 -63642
+-2.3841e+07 -1.0876e+06
+-2.3689e+07 -1.9944e+06
+-2.3528e+07 -2.782e+06
+-2.3369e+07 -3.4519e+06
+-2.3218e+07 -4.0084e+06
+-2.3079e+07 -4.4579e+06
+-2.2953e+07 -4.8078e+06
+-2.284e+07 -5.0667e+06
+-2.2735e+07 -5.2432e+06
+-2.2636e+07 -5.3464e+06
+-2.2537e+07 -5.3846e+06
+-2.2432e+07 -5.3655e+06
+-2.2317e+07 -5.2961e+06
+-2.2187e+07 -5.1825e+06
+-2.2038e+07 -5.0311e+06
+-2.1869e+07 -4.8481e+06
+-2.1676e+07 -4.6395e+06
+-2.1458e+07 -4.4109e+06
+-2.1217e+07 -4.1661e+06
+-2.0951e+07 -3.9073e+06
+-2.066e+07 -3.6353e+06
+-2.0346e+07 -3.3513e+06
+-2.001e+07 -3.0573e+06
+-1.9653e+07 -2.7572e+06
+-1.9277e+07 -2.456e+06
+-1.8887e+07 -2.1589e+06
+-1.8485e+07 -1.8701e+06
+-1.8077e+07 -1.5929e+06
+-1.7668e+07 -1.3301e+06
+-1.7261e+07 -1.0843e+06
+-1.686e+07 -857760
+-1.6465e+07 -651610
+-1.6079e+07 -464880
+-1.5702e+07 -294330
+-1.5338e+07 -135740
+-1.4989e+07 13633
+-1.4659e+07 152590
+-1.435e+07 275200
+-1.4061e+07 372760
+-1.3791e+07 438220
+-1.3535e+07 470990
+-1.3293e+07 478890
+-1.3064e+07 475210
+-1.285e+07 471570
+-1.2653e+07 470550
+-1.2474e+07 463410
+-1.2314e+07 435550
+-1.2169e+07 377150
+-1.2039e+07 291960
+-1.1924e+07 197140
+-1.1823e+07 112780
+-1.1737e+07 47433
+-1.1662e+07 -9794.5
+-1.1591e+07 -83156
+-1.1517e+07 -192860
+-1.1437e+07 -338120
+-1.1353e+07 -494150
+-1.1272e+07 -627370
+-1.1203e+07 -719580
+-1.1149e+07 -783110
+-1.111e+07 -853930
+-1.1077e+07 -965310
+-1.1038e+07 -1.1207e+06
+-1.0987e+07 -1.2869e+06
+-1.0922e+07 -1.4157e+06
+-1.0853e+07 -1.4793e+06
+-1.079e+07 -1.4941e+06
+-1.0744e+07 -1.5118e+06
+-1.0715e+07 -1.5842e+06
+-1.0694e+07 -1.7234e+06
+-1.0667e+07 -1.8899e+06
+-1.0621e+07 -2.0168e+06
+-1.0553e+07 -2.0541e+06
+-1.0474e+07 -2.004e+06
+-1.0405e+07 -1.9207e+06
+-1.0361e+07 -1.8771e+06
+-1.0352e+07 -1.9204e+06
+-1.0368e+07 -2.0448e+06
+-1.039e+07 -2.197e+06
+-1.0398e+07 -2.3068e+06
+-1.0378e+07 -2.3238e+06
+-1.0333e+07 -2.2382e+06
+-1.0274e+07 -2.0795e+06
+-1.0221e+07 -1.898e+06
+-1.0189e+07 -1.7416e+06
+-1.0191e+07 -1.6399e+06
+-1.0227e+07 -1.5991e+06
+4.8911e+06 838130
+4.9084e+06 846300
+4.9239e+06 845470
+4.9377e+06 834110
+4.9501e+06 810960
+4.9611e+06 775330
+4.9713e+06 727520
+4.9806e+06 668890
+4.9894e+06 601750
+4.9976e+06 528870
+5.0051e+06 452870
+5.0119e+06 375530
+5.018e+06 297530
+5.0235e+06 218410
+5.0288e+06 137130
+5.0341e+06 52643
+5.04e+06 -35445
+5.047e+06 -126620
+5.0558e+06 -219550
+5.0666e+06 -312460
+5.08e+06 -403610
+5.096e+06 -491670
+5.1149e+06 -575760
+5.1365e+06 -655360
+5.1609e+06 -730050
+5.1877e+06 -799300
+5.2169e+06 -862450
+5.2481e+06 -918770
+5.2809e+06 -967600
+5.3149e+06 -1.0085e+06
+5.3496e+06 -1.0411e+06
+5.3844e+06 -1.0654e+06
+5.4186e+06 -1.0811e+06
+5.4517e+06 -1.0879e+06
+5.4829e+06 -1.0857e+06
+5.5117e+06 -1.0742e+06
+5.5375e+06 -1.0531e+06
+5.5598e+06 -1.0224e+06
+5.578e+06 -982370
+5.5918e+06 -933390
+5.6009e+06 -876060
+5.6054e+06 -811120
+5.6051e+06 -739320
+5.6003e+06 -661430
+5.5912e+06 -578130
+5.5782e+06 -490040
+5.5618e+06 -397770
+5.5427e+06 -302000
+5.5217e+06 -203580
+5.4995e+06 -103560
+5.4771e+06 -3238
+5.4554e+06 95993
+5.4354e+06 192710
+5.4179e+06 285580
+5.4038e+06 373430
+5.3939e+06 455200
+5.389e+06 529920
+5.3895e+06 596580
+5.3959e+06 654130
+5.4084e+06 701450
+5.4271e+06 737450
+5.4517e+06 761130
+5.4819e+06 771680
+5.5172e+06 768490
+5.5567e+06 751210
+5.5997e+06 719670
+5.6451e+06 673890
+5.6919e+06 614060
+5.7391e+06 540530
+5.7857e+06 453840
+5.8308e+06 354740
+5.8738e+06 244190
+5.9142e+06 123380
+5.9521e+06 -6268.9
+5.9877e+06 -143070
+6.0221e+06 -285070
+6.0563e+06 -430000
+6.0923e+06 -575280
+6.1323e+06 -717940
+6.1791e+06 -854570
+6.2357e+06 -981330
+6.3053e+06 -1.0938e+06
+6.3912e+06 -1.1871e+06
+6.4965e+06 -1.2556e+06
+6.6236e+06 -1.2933e+06
+6.7741e+06 -1.2935e+06
+6.9483e+06 -1.2496e+06
+7.1452e+06 -1.1548e+06
+7.3613e+06 -1.0029e+06
+7.5913e+06 -788860
+7.8274e+06 -509580
+8.0596e+06 -164440
+8.2763e+06 243880
+8.4645e+06 708890
+8.6113e+06 1.22e+06
+8.7048e+06 1.7626e+06
+8.7354e+06 2.3188e+06
+8.6973e+06 2.8684e+06
+8.5888e+06 3.3904e+06
+8.413e+06 3.8649e+06
+8.1778e+06 4.2749e+06
+7.8945e+06 4.6078e+06
+7.5769e+06 4.8564e+06
+7.2399e+06 5.0194e+06
+6.8972e+06 5.1007e+06
+6.561e+06 5.1089e+06
+6.2404e+06 5.0555e+06
+5.9414e+06 4.9538e+06
+5.6668e+06 4.8168e+06
+5.4168e+06 4.6568e+06
+5.1899e+06 4.4841e+06
+4.9829e+06 4.3072e+06
+4.7923e+06 4.132e+06
+4.6145e+06 3.9627e+06
+4.4461e+06 3.8019e+06
+4.2843e+06 3.6508e+06
+4.1266e+06 3.5099e+06
+3.9716e+06 3.3791e+06
+3.8178e+06 3.258e+06
+3.6646e+06 3.1461e+06
+3.5116e+06 3.0429e+06
+3.3585e+06 2.9478e+06
+3.2055e+06 2.8603e+06
+3.0524e+06 2.7802e+06
+2.8996e+06 2.707e+06
+2.7472e+06 2.6405e+06
+2.5955e+06 2.5803e+06
+2.4447e+06 2.5262e+06
+2.2949e+06 2.4778e+06
+2.1463e+06 2.4349e+06
+1.9991e+06 2.3971e+06
+1.8535e+06 2.3642e+06
+1.7095e+06 2.3356e+06
+1.5672e+06 2.3113e+06
+1.4266e+06 2.2907e+06
+1.2878e+06 2.2735e+06
+1.1507e+06 2.2596e+06
+1.0153e+06 2.2484e+06
+881550 2.2399e+06
+749320 2.2336e+06
+618520 2.2295e+06
+489000 2.2273e+06
+360610 2.2267e+06
+233200 2.2278e+06
+106570 2.2303e+06
+-19443 2.2341e+06
+-145050 2.2392e+06
+-270460 2.2456e+06
+-395870 2.2531e+06
+-521490 2.2617e+06
+-647540 2.2715e+06
+-774240 2.2825e+06
+-901800 2.2946e+06
+-1.0304e+06 2.308e+06
+-1.1604e+06 2.3226e+06
+-1.2918e+06 2.3386e+06
+-1.4249e+06 2.356e+06
+-1.5599e+06 2.3749e+06
+-1.697e+06 2.3955e+06
+-1.8363e+06 2.4177e+06
+-1.9781e+06 2.4418e+06
+-2.1224e+06 2.4679e+06
+-2.2694e+06 2.496e+06
+-2.4192e+06 2.5264e+06
+-2.572e+06 2.5592e+06
+-2.7277e+06 2.5944e+06
+-2.8865e+06 2.6322e+06
+-3.0484e+06 2.6726e+06
+-3.2134e+06 2.7157e+06
+-3.3815e+06 2.7616e+06
+-3.5528e+06 2.8103e+06
+-3.7273e+06 2.8618e+06
+-3.9049e+06 2.9161e+06
+-4.0858e+06 2.9732e+06
+-4.2698e+06 3.033e+06
+-4.4571e+06 3.0957e+06
+-4.6477e+06 3.1614e+06
+-4.8417e+06 3.2302e+06
+-5.0392e+06 3.3025e+06
+-5.2404e+06 3.379e+06
+-5.4456e+06 3.4605e+06
+-5.655e+06 3.5486e+06
+-5.8693e+06 3.645e+06
+-6.089e+06 3.7526e+06
+-6.3153e+06 3.8749e+06
+-6.5497e+06 4.0165e+06
+-6.7946e+06 4.1831e+06
+-7.053e+06 4.3817e+06
+-7.3295e+06 4.6206e+06
+-7.63e+06 4.9089e+06
+-7.9622e+06 5.2565e+06
+-8.336e+06 5.6732e+06
+-8.7629e+06 6.1677e+06
+-9.2568e+06 6.7464e+06
+-9.8323e+06 7.4116e+06
+-1.0504e+07 8.1601e+06
+-1.1287e+07 8.981e+06
+-1.2191e+07 9.8547e+06
+-1.3221e+07 1.0752e+07
+-1.4375e+07 1.1635e+07
+-1.5642e+07 1.2457e+07
+-1.6997e+07 1.3168e+07
+-1.841e+07 1.3717e+07
+-1.9838e+07 1.4058e+07
+-2.1234e+07 1.4152e+07
+-2.2549e+07 1.3976e+07
+-2.3737e+07 1.3523e+07
+-2.4757e+07 1.28e+07
+-2.5583e+07 1.1834e+07
+-2.6197e+07 1.0662e+07
+-2.6597e+07 9.3328e+06
+-2.6794e+07 7.8978e+06
+-2.6808e+07 6.4098e+06
+-2.6667e+07 4.9181e+06
+-2.6402e+07 3.4654e+06
+-2.6047e+07 2.0867e+06
+-2.5633e+07 808160
+-2.5189e+07 -352660
+-2.4739e+07 -1.3858e+06
+-2.4301e+07 -2.2879e+06
+-2.3889e+07 -3.0603e+06
+-2.3513e+07 -3.7082e+06
+-2.3176e+07 -4.2392e+06
+-2.2881e+07 -4.662e+06
+-2.2625e+07 -4.9864e+06
+-2.2406e+07 -5.2223e+06
+-2.2218e+07 -5.3797e+06
+-2.2055e+07 -5.4684e+06
+-2.191e+07 -5.4971e+06
+-2.1778e+07 -5.4737e+06
+-2.1651e+07 -5.4047e+06
+-2.1523e+07 -5.2959e+06
+-2.139e+07 -5.1527e+06
+-2.1247e+07 -4.9807e+06
+-2.1091e+07 -4.7853e+06
+-2.092e+07 -4.5712e+06
+-2.0731e+07 -4.3421e+06
+-2.0524e+07 -4.0996e+06
+-2.0298e+07 -3.8443e+06
+-2.0052e+07 -3.5768e+06
+-1.9787e+07 -3.2989e+06
+-1.9503e+07 -3.0139e+06
+-1.9202e+07 -2.7262e+06
+-1.8886e+07 -2.4404e+06
+-1.8559e+07 -2.1601e+06
+-1.8224e+07 -1.8884e+06
+-1.7883e+07 -1.628e+06
+-1.754e+07 -1.3822e+06
+-1.7198e+07 -1.1538e+06
+-1.6857e+07 -944480
+-1.6519e+07 -753260
+-1.6187e+07 -576300
+-1.5865e+07 -408530
+-1.5556e+07 -246710
+-1.5264e+07 -92349
+-1.4991e+07 47315
+-1.4739e+07 161720
+-1.4507e+07 242230
+-1.429e+07 287760
+-1.4088e+07 307130
+-1.3901e+07 315610
+-1.3731e+07 326590
+-1.3582e+07 342950
+-1.3457e+07 354280
+-1.3354e+07 343170
+-1.3267e+07 297630
+-1.3191e+07 221480
+-1.3123e+07 134380
+-1.3063e+07 59589
+-1.3018e+07 6861.6
+-1.299e+07 -36942
+-1.2979e+07 -100920
+-1.2974e+07 -209530
+-1.2962e+07 -362310
+-1.2934e+07 -529630
+-1.2891e+07 -670320
+-1.2843e+07 -760410
+-1.2803e+07 -812440
+-1.2782e+07 -869200
+-1.2774e+07 -973890
+-1.2761e+07 -1.1369e+06
+-1.2724e+07 -1.3245e+06
+-1.2649e+07 -1.4795e+06
+-1.254e+07 -1.5615e+06
+-1.2416e+07 -1.5781e+06
+-1.2303e+07 -1.5816e+06
+-1.2215e+07 -1.6344e+06
+-1.2148e+07 -1.7635e+06
+-1.2077e+07 -1.9395e+06
+-1.1976e+07 -2.0941e+06
+-1.1829e+07 -2.1646e+06
+-1.1644e+07 -2.1357e+06
+-1.1447e+07 -2.0501e+06
+-1.1271e+07 -1.982e+06
+-1.1137e+07 -1.9921e+06
+-1.1039e+07 -2.0933e+06
+-1.095e+07 -2.2458e+06
+-1.0836e+07 -2.3808e+06
+-1.067e+07 -2.4374e+06
+-1.0449e+07 -2.3893e+06
+-1.0188e+07 -2.2516e+06
+-9.9182e+06 -2.0677e+06
+-9.6705e+06 -1.8877e+06
+-9.4673e+06 -1.7495e+06
+-9.3168e+06 -1.6696e+06
+8.3875e+06 819480
+8.4124e+06 827330
+8.439e+06 825910
+8.4679e+06 813620
+8.4995e+06 789170
+8.5342e+06 752010
+8.5717e+06 702620
+8.6119e+06 642590
+8.6539e+06 574410
+8.6972e+06 500950
+8.7409e+06 424750
+8.7848e+06 347450
+8.8287e+06 269490
+8.8729e+06 190210
+8.9181e+06 108390
+8.9647e+06 22908
+9.0135e+06 -66601
+9.0647e+06 -159530
+9.1185e+06 -254390
+9.1749e+06 -349260
+9.2335e+06 -442290
+9.294e+06 -532060
+9.3561e+06 -617670
+9.4193e+06 -698580
+9.4836e+06 -774380
+9.5485e+06 -844520
+9.6137e+06 -908290
+9.6788e+06 -964860
+9.7433e+06 -1.0135e+06
+9.8063e+06 -1.0536e+06
+9.867e+06 -1.0848e+06
+9.9245e+06 -1.107e+06
+9.978e+06 -1.12e+06
+1.0027e+07 -1.1235e+06
+1.007e+07 -1.1175e+06
+1.0107e+07 -1.1015e+06
+1.0136e+07 -1.0755e+06
+1.0159e+07 -1.0394e+06
+1.0173e+07 -993580
+1.0179e+07 -938500
+1.0177e+07 -874900
+1.0165e+07 -803650
+1.0145e+07 -725680
+1.0117e+07 -641880
+1.0081e+07 -553050
+1.0037e+07 -459930
+9.9874e+06 -363240
+9.9321e+06 -263760
+9.8724e+06 -162440
+9.8094e+06 -60443
+9.7445e+06 40876
+9.679e+06 140060
+9.6145e+06 235650
+9.5523e+06 326340
+9.4939e+06 410960
+9.4407e+06 488520
+9.394e+06 558120
+9.3549e+06 618840
+9.3247e+06 669750
+9.3041e+06 709860
+9.294e+06 738210
+9.295e+06 753960
+9.3074e+06 756430
+9.3316e+06 745150
+9.3677e+06 719860
+9.4156e+06 680520
+9.4753e+06 627210
+9.5465e+06 560170
+9.629e+06 479760
+9.7226e+06 386480
+9.8272e+06 280990
+9.9428e+06 164120
+1.0069e+07 36902
+1.0207e+07 -99446
+1.0358e+07 -243460
+1.052e+07 -393420
+1.0697e+07 -547320
+1.0889e+07 -702780
+1.1097e+07 -857030
+1.1323e+07 -1.0068e+06
+1.157e+07 -1.1484e+06
+1.1837e+07 -1.2774e+06
+1.2128e+07 -1.3886e+06
+1.2443e+07 -1.4762e+06
+1.2782e+07 -1.5335e+06
+1.3145e+07 -1.5532e+06
+1.353e+07 -1.5272e+06
+1.3933e+07 -1.4474e+06
+1.435e+07 -1.3058e+06
+1.4771e+07 -1.0956e+06
+1.5186e+07 -811530
+1.5582e+07 -450940
+1.5942e+07 -14987
+1.6251e+07 490740
+1.649e+07 1.0556e+06
+1.6644e+07 1.6637e+06
+1.6698e+07 2.2947e+06
+1.6644e+07 2.9246e+06
+1.6479e+07 3.5277e+06
+1.6206e+07 4.0793e+06
+1.5835e+07 4.5577e+06
+1.5382e+07 4.9462e+06
+1.4866e+07 5.2355e+06
+1.4309e+07 5.4234e+06
+1.373e+07 5.5147e+06
+1.3149e+07 5.5202e+06
+1.2579e+07 5.4543e+06
+1.2032e+07 5.3334e+06
+1.1513e+07 5.1739e+06
+1.1024e+07 4.9905e+06
+1.0565e+07 4.7956e+06
+1.0133e+07 4.5988e+06
+9.7262e+06 4.4066e+06
+9.339e+06 4.2235e+06
+8.9681e+06 4.0518e+06
+8.6102e+06 3.8923e+06
+8.2623e+06 3.7451e+06
+7.9221e+06 3.6096e+06
+7.5881e+06 3.485e+06
+7.2589e+06 3.3704e+06
+6.9337e+06 3.265e+06
+6.6121e+06 3.1679e+06
+6.2938e+06 3.0787e+06
+5.9786e+06 2.9967e+06
+5.6667e+06 2.9216e+06
+5.3581e+06 2.8531e+06
+5.0531e+06 2.7907e+06
+4.7517e+06 2.7342e+06
+4.4541e+06 2.6833e+06
+4.1606e+06 2.6378e+06
+3.8712e+06 2.5972e+06
+3.5861e+06 2.5614e+06
+3.3053e+06 2.53e+06
+3.0288e+06 2.5027e+06
+2.7566e+06 2.4792e+06
+2.4885e+06 2.4593e+06
+2.2245e+06 2.4426e+06
+1.9644e+06 2.4288e+06
+1.7078e+06 2.4178e+06
+1.4546e+06 2.4093e+06
+1.2044e+06 2.4031e+06
+956970 2.3991e+06
+711820 2.397e+06
+468580 2.3967e+06
+226860 2.3982e+06
+-13784 2.4014e+06
+-253790 2.4061e+06
+-493620 2.4123e+06
+-733720 2.4201e+06
+-974560 2.4293e+06
+-1.2166e+06 2.44e+06
+-1.4603e+06 2.4522e+06
+-1.7062e+06 2.4659e+06
+-1.9546e+06 2.4811e+06
+-2.2061e+06 2.4979e+06
+-2.461e+06 2.5163e+06
+-2.7199e+06 2.5365e+06
+-2.9831e+06 2.5585e+06
+-3.251e+06 2.5823e+06
+-3.524e+06 2.6081e+06
+-3.8024e+06 2.636e+06
+-4.0866e+06 2.6661e+06
+-4.3769e+06 2.6985e+06
+-4.6734e+06 2.7333e+06
+-4.9765e+06 2.7706e+06
+-5.2864e+06 2.8105e+06
+-5.6031e+06 2.853e+06
+-5.9267e+06 2.8983e+06
+-6.2575e+06 2.9463e+06
+-6.5954e+06 2.9971e+06
+-6.9403e+06 3.0507e+06
+-7.2924e+06 3.1071e+06
+-7.6516e+06 3.1662e+06
+-8.0178e+06 3.2281e+06
+-8.391e+06 3.2928e+06
+-8.7712e+06 3.3603e+06
+-9.1582e+06 3.4307e+06
+-9.552e+06 3.5042e+06
+-9.9527e+06 3.5813e+06
+-1.036e+07 3.6627e+06
+-1.0775e+07 3.7493e+06
+-1.1197e+07 3.8426e+06
+-1.1626e+07 3.9447e+06
+-1.2064e+07 4.0584e+06
+-1.2511e+07 4.1877e+06
+-1.2968e+07 4.3374e+06
+-1.3437e+07 4.5139e+06
+-1.392e+07 4.7248e+06
+-1.4422e+07 4.9791e+06
+-1.4945e+07 5.2871e+06
+-1.5497e+07 5.6598e+06
+-1.6084e+07 6.1083e+06
+-1.6716e+07 6.6427e+06
+-1.7401e+07 7.2702e+06
+-1.8152e+07 7.994e+06
+-1.8977e+07 8.8103e+06
+-1.9888e+07 9.7069e+06
+-2.089e+07 1.0661e+07
+-2.1982e+07 1.1639e+07
+-2.3159e+07 1.2595e+07
+-2.4403e+07 1.3476e+07
+-2.5688e+07 1.4223e+07
+-2.6977e+07 1.4778e+07
+-2.8226e+07 1.5086e+07
+-2.9385e+07 1.511e+07
+-3.0407e+07 1.4824e+07
+-3.1248e+07 1.4227e+07
+-3.1877e+07 1.3337e+07
+-3.2274e+07 1.2188e+07
+-3.2436e+07 1.0831e+07
+-3.2374e+07 9.3257e+06
+-3.2111e+07 7.7336e+06
+-3.1682e+07 6.1144e+06
+-3.1124e+07 4.5211e+06
+-3.0478e+07 2.998e+06
+-2.9781e+07 1.5784e+06
+-2.9069e+07 285310
+-2.8371e+07 -867900
+-2.7707e+07 -1.8762e+06
+-2.7096e+07 -2.7411e+06
+-2.6546e+07 -3.4684e+06
+-2.6063e+07 -4.0673e+06
+-2.5648e+07 -4.5483e+06
+-2.5299e+07 -4.9228e+06
+-2.5012e+07 -5.2023e+06
+-2.478e+07 -5.3978e+06
+-2.4597e+07 -5.5201e+06
+-2.4455e+07 -5.5793e+06
+-2.4349e+07 -5.5843e+06
+-2.427e+07 -5.5427e+06
+-2.4212e+07 -5.4608e+06
+-2.4169e+07 -5.3438e+06
+-2.4137e+07 -5.1968e+06
+-2.4109e+07 -5.0246e+06
+-2.4081e+07 -4.8323e+06
+-2.405e+07 -4.624e+06
+-2.4013e+07 -4.4028e+06
+-2.3967e+07 -4.1698e+06
+-2.391e+07 -3.9253e+06
+-2.3841e+07 -3.6693e+06
+-2.376e+07 -3.4029e+06
+-2.3667e+07 -3.1292e+06
+-2.3562e+07 -2.852e+06
+-2.3446e+07 -2.5754e+06
+-2.3322e+07 -2.3029e+06
+-2.3189e+07 -2.0375e+06
+-2.3049e+07 -1.7823e+06
+-2.2904e+07 -1.5406e+06
+-2.2753e+07 -1.3156e+06
+-2.2597e+07 -1.1088e+06
+-2.2439e+07 -918420
+-2.228e+07 -740140
+-2.2124e+07 -568400
+-2.1974e+07 -399890
+-2.1832e+07 -236520
+-2.17e+07 -86261
+-2.158e+07 39446
+-2.1472e+07 131190
+-2.1377e+07 187500
+-2.1295e+07 217410
+-2.1226e+07 237040
+-2.1171e+07 260730
+-2.1133e+07 291560
+-2.1111e+07 317800
+-2.1103e+07 319420
+-2.1105e+07 281880
+-2.1111e+07 208440
+-2.1115e+07 121280
+-2.1118e+07 48193
+-2.1125e+07 2691
+-2.1145e+07 -28519
+-2.118e+07 -79447
+-2.1226e+07 -181790
+-2.1271e+07 -339940
+-2.13e+07 -522920
+-2.1305e+07 -681820
+-2.1291e+07 -782790
+-2.1272e+07 -832760
+-2.1262e+07 -877620
+-2.1266e+07 -971710
+-2.1273e+07 -1.1384e+06
+-2.1258e+07 -1.3503e+06
+-2.1196e+07 -1.5451e+06
+-2.1078e+07 -1.6674e+06
+-2.0918e+07 -1.7073e+06
+-2.0746e+07 -1.7093e+06
+-2.0592e+07 -1.7415e+06
+-2.0468e+07 -1.8489e+06
+-2.036e+07 -2.0212e+06
+-2.0238e+07 -2.1988e+06
+-2.0069e+07 -2.3114e+06
+-1.9843e+07 -2.3238e+06
+-1.9577e+07 -2.2586e+06
+-1.9304e+07 -2.1818e+06
+-1.9058e+07 -2.1627e+06
+-1.8849e+07 -2.2348e+06
+-1.8662e+07 -2.3785e+06
+-1.8462e+07 -2.535e+06
+-1.8214e+07 -2.6376e+06
+-1.79e+07 -2.6429e+06
+-1.7524e+07 -2.5464e+06
+-1.7113e+07 -2.3781e+06
+-1.6703e+07 -2.1853e+06
+-1.6325e+07 -2.0129e+06
+-1.5996e+07 -1.8894e+06
+1.5969e+07 798100
+1.6002e+07 801750
+1.6043e+07 795530
+1.6091e+07 778070
+1.6147e+07 748490
+1.621e+07 706690
+1.6278e+07 653610
+1.635e+07 591130
+1.6423e+07 521800
+1.6496e+07 448260
+1.6567e+07 372630
+1.6638e+07 295980
+1.6708e+07 218220
+1.6778e+07 138370
+1.6849e+07 55122
+1.6923e+07 -32463
+1.7001e+07 -124410
+1.7081e+07 -219680
+1.7164e+07 -316440
+1.7248e+07 -412520
+1.7332e+07 -506010
+1.7415e+07 -595570
+1.7496e+07 -680480
+1.7575e+07 -760420
+1.7652e+07 -835120
+1.7727e+07 -904080
+1.78e+07 -966510
+1.787e+07 -1.0214e+06
+1.7936e+07 -1.0679e+06
+1.7999e+07 -1.1052e+06
+1.8057e+07 -1.1328e+06
+1.8109e+07 -1.1506e+06
+1.8155e+07 -1.1585e+06
+1.8193e+07 -1.1564e+06
+1.8223e+07 -1.1443e+06
+1.8244e+07 -1.1219e+06
+1.8257e+07 -1.089e+06
+1.8261e+07 -1.0459e+06
+1.8256e+07 -992610
+1.8241e+07 -929890
+1.8217e+07 -858530
+1.8183e+07 -779570
+1.814e+07 -694100
+1.8088e+07 -603160
+1.8027e+07 -507710
+1.7959e+07 -408620
+1.7884e+07 -306700
+1.7804e+07 -202880
+1.772e+07 -98205
+1.7633e+07 6046.7
+1.7545e+07 108430
+1.7457e+07 207430
+1.737e+07 301550
+1.7288e+07 389450
+1.721e+07 470000
+1.7139e+07 542230
+1.7076e+07 605270
+1.7024e+07 658280
+1.6982e+07 700400
+1.6953e+07 730740
+1.6938e+07 748470
+1.6938e+07 752850
+1.6953e+07 743320
+1.6985e+07 719560
+1.7034e+07 681440
+1.71e+07 629040
+1.7184e+07 562550
+1.7285e+07 482320
+1.7404e+07 388790
+1.754e+07 282500
+1.7694e+07 164120
+1.7864e+07 34479
+1.8051e+07 -105440
+1.8254e+07 -254450
+1.8473e+07 -411170
+1.8708e+07 -573930
+1.8959e+07 -740780
+1.9225e+07 -909440
+1.9507e+07 -1.0772e+06
+1.9804e+07 -1.2409e+06
+2.0118e+07 -1.3968e+06
+2.0447e+07 -1.5404e+06
+2.0792e+07 -1.6667e+06
+2.1153e+07 -1.7694e+06
+2.153e+07 -1.8415e+06
+2.1922e+07 -1.875e+06
+2.2327e+07 -1.8611e+06
+2.2742e+07 -1.7904e+06
+2.3162e+07 -1.6532e+06
+2.358e+07 -1.4407e+06
+2.3986e+07 -1.1453e+06
+2.4367e+07 -762210
+2.4707e+07 -290320
+2.4988e+07 266320
+2.5189e+07 897650
+2.5292e+07 1.587e+06
+2.5279e+07 2.3116e+06
+2.5137e+07 3.0434e+06
+2.486e+07 3.7513e+06
+2.445e+07 4.4044e+06
+2.3917e+07 4.9747e+06
+2.3276e+07 5.4407e+06
+2.2552e+07 5.789e+06
+2.1768e+07 6.0161e+06
+2.0951e+07 6.1275e+06
+2.0123e+07 6.1363e+06
+1.9303e+07 6.0604e+06
+1.8504e+07 5.9202e+06
+1.7735e+07 5.7359e+06
+1.6999e+07 5.5255e+06
+1.6299e+07 5.3038e+06
+1.5632e+07 5.0821e+06
+1.4994e+07 4.8677e+06
+1.4383e+07 4.6655e+06
+1.3794e+07 4.4777e+06
+1.3224e+07 4.3048e+06
+1.2669e+07 4.1465e+06
+1.2129e+07 4.0017e+06
+1.16e+07 3.8693e+06
+1.1081e+07 3.7478e+06
+1.0571e+07 3.6363e+06
+1.0069e+07 3.5338e+06
+9.5751e+06 3.4393e+06
+9.0883e+06 3.3524e+06
+8.6085e+06 3.2724e+06
+8.1358e+06 3.199e+06
+7.6701e+06 3.1317e+06
+7.2113e+06 3.0703e+06
+6.7595e+06 3.0144e+06
+6.3147e+06 2.9638e+06
+5.8769e+06 2.9182e+06
+5.446e+06 2.8773e+06
+5.022e+06 2.8409e+06
+4.6047e+06 2.8087e+06
+4.1939e+06 2.7805e+06
+3.7894e+06 2.7559e+06
+3.3908e+06 2.7348e+06
+2.9979e+06 2.717e+06
+2.6102e+06 2.7022e+06
+2.2272e+06 2.6902e+06
+1.8484e+06 2.6809e+06
+1.4735e+06 2.6741e+06
+1.1017e+06 2.6697e+06
+732450 2.6676e+06
+365250 2.6677e+06
+-577.97 2.6699e+06
+-365660 2.6742e+06
+-730630 2.6805e+06
+-1.0961e+06 2.6887e+06
+-1.4628e+06 2.6989e+06
+-1.8314e+06 2.7111e+06
+-2.2024e+06 2.7253e+06
+-2.5766e+06 2.7414e+06
+-2.9545e+06 2.7595e+06
+-3.3367e+06 2.7797e+06
+-3.724e+06 2.802e+06
+-4.1168e+06 2.8265e+06
+-4.5158e+06 2.8531e+06
+-4.9214e+06 2.8821e+06
+-5.3343e+06 2.9134e+06
+-5.7548e+06 2.9472e+06
+-6.1835e+06 2.9834e+06
+-6.6207e+06 3.0223e+06
+-7.0669e+06 3.0639e+06
+-7.5222e+06 3.1082e+06
+-7.9871e+06 3.1552e+06
+-8.4618e+06 3.2051e+06
+-8.9464e+06 3.2578e+06
+-9.441e+06 3.3134e+06
+-9.9459e+06 3.3718e+06
+-1.0461e+07 3.4331e+06
+-1.0986e+07 3.4971e+06
+-1.1522e+07 3.5639e+06
+-1.2068e+07 3.6334e+06
+-1.2624e+07 3.7057e+06
+-1.319e+07 3.7806e+06
+-1.3766e+07 3.8585e+06
+-1.4352e+07 3.9394e+06
+-1.4948e+07 4.0239e+06
+-1.5554e+07 4.1126e+06
+-1.617e+07 4.2066e+06
+-1.6795e+07 4.3074e+06
+-1.7431e+07 4.4172e+06
+-1.8077e+07 4.5389e+06
+-1.8734e+07 4.6765e+06
+-1.9402e+07 4.8351e+06
+-2.0081e+07 5.0214e+06
+-2.0773e+07 5.2432e+06
+-2.148e+07 5.51e+06
+-2.2202e+07 5.8328e+06
+-2.2943e+07 6.2233e+06
+-2.3706e+07 6.6935e+06
+-2.4497e+07 7.2543e+06
+-2.5321e+07 7.9141e+06
+-2.6185e+07 8.6764e+06
+-2.7096e+07 9.5377e+06
+-2.8061e+07 1.0485e+07
+-2.9085e+07 1.1492e+07
+-3.0169e+07 1.2522e+07
+-3.1305e+07 1.3524e+07
+-3.2481e+07 1.4436e+07
+-3.3671e+07 1.5192e+07
+-3.4841e+07 1.5725e+07
+-3.595e+07 1.5977e+07
+-3.6952e+07 1.5906e+07
+-3.7801e+07 1.5491e+07
+-3.846e+07 1.4734e+07
+-3.8902e+07 1.3664e+07
+-3.9115e+07 1.2328e+07
+-3.9103e+07 1.079e+07
+-3.8883e+07 9.1197e+06
+-3.8486e+07 7.3876e+06
+-3.795e+07 5.659e+06
+-3.7314e+07 3.9893e+06
+-3.6619e+07 2.4216e+06
+-3.5901e+07 986270
+-3.5189e+07 -298470
+-3.4507e+07 -1.4247e+06
+-3.3873e+07 -2.3927e+06
+-3.3295e+07 -3.2088e+06
+-3.278e+07 -3.8832e+06
+-3.2329e+07 -4.4283e+06
+-3.194e+07 -4.8573e+06
+-3.1607e+07 -5.1832e+06
+-3.1327e+07 -5.4184e+06
+-3.1093e+07 -5.5746e+06
+-3.0899e+07 -5.6628e+06
+-3.074e+07 -5.6927e+06
+-3.061e+07 -5.6727e+06
+-3.0505e+07 -5.6102e+06
+-3.0422e+07 -5.5109e+06
+-3.0357e+07 -5.38e+06
+-3.0306e+07 -5.2222e+06
+-3.0267e+07 -5.0423e+06
+-3.0236e+07 -4.8448e+06
+-3.0212e+07 -4.6339e+06
+-3.0191e+07 -4.4119e+06
+-3.0172e+07 -4.1798e+06
+-3.0154e+07 -3.9372e+06
+-3.0135e+07 -3.684e+06
+-3.0115e+07 -3.4212e+06
+-3.0093e+07 -3.1513e+06
+-3.0069e+07 -2.8777e+06
+-3.0043e+07 -2.6042e+06
+-3.0016e+07 -2.3341e+06
+-2.999e+07 -2.0705e+06
+-2.9964e+07 -1.8168e+06
+-2.9938e+07 -1.5769e+06
+-2.9912e+07 -1.3537e+06
+-2.9886e+07 -1.1483e+06
+-2.9861e+07 -958320
+-2.9838e+07 -778870
+-2.982e+07 -604420
+-2.9806e+07 -432140
+-2.9797e+07 -264410
+-2.9794e+07 -109110
+-2.9798e+07 22984
+-2.9812e+07 123170
+-2.9838e+07 190010
+-2.9881e+07 231620
+-2.9938e+07 262640
+-3.0008e+07 296300
+-3.0088e+07 335460
+-3.0175e+07 368820
+-3.0268e+07 376560
+-3.0367e+07 343540
+-3.047e+07 272020
+-3.0574e+07 183850
+-3.0676e+07 108290
+-3.0775e+07 61605
+-3.0872e+07 32825
+-3.0971e+07 -12302
+-3.1076e+07 -108950
+-3.1185e+07 -266510
+-3.1291e+07 -457150
+-3.1384e+07 -630460
+-3.146e+07 -746500
+-3.1521e+07 -804990
+-3.1576e+07 -848700
+-3.1636e+07 -936260
+-3.17e+07 -1.1015e+06
+-3.1755e+07 -1.3278e+06
+-3.178e+07 -1.5559e+06
+-3.1755e+07 -1.7223e+06
+-3.1678e+07 -1.8011e+06
+-3.1567e+07 -1.8209e+06
+-3.1451e+07 -1.8453e+06
+-3.1358e+07 -1.9295e+06
+-3.1293e+07 -2.0831e+06
+-3.1237e+07 -2.2645e+06
+-3.1157e+07 -2.4081e+06
+-3.1024e+07 -2.4673e+06
+-3.0833e+07 -2.4435e+06
+-3.0604e+07 -2.3848e+06
+-3.037e+07 -2.3566e+06
+-3.0158e+07 -2.4039e+06
+-2.9977e+07 -2.5276e+06
+-2.9807e+07 -2.6859e+06
+-2.9616e+07 -2.8179e+06
+-2.9375e+07 -2.8719e+06
+-2.907e+07 -2.8269e+06
+-2.8706e+07 -2.6963e+06
+-2.8309e+07 -2.5177e+06
+-2.7905e+07 -2.3357e+06
+-2.7521e+07 -2.1861e+06
+2.3748e+07 763990
+2.3805e+07 759830
+2.3873e+07 745270
+2.3952e+07 719630
+2.404e+07 682800
+2.4136e+07 635450
+2.4237e+07 579040
+2.4338e+07 515650
+2.4437e+07 447550
+2.4533e+07 376730
+2.4623e+07 304390
+2.4709e+07 230690
+2.4791e+07 154830
+2.4871e+07 75525
+2.4951e+07 -8419.6
+2.5032e+07 -97440
+2.5115e+07 -190880
+2.5198e+07 -287030
+2.5279e+07 -383550
+2.5359e+07 -478060
+2.5434e+07 -568730
+2.5503e+07 -654510
+2.5565e+07 -735100
+2.5621e+07 -810590
+2.567e+07 -880980
+2.5713e+07 -945910
+2.5751e+07 -1.0045e+06
+2.5783e+07 -1.0556e+06
+2.5809e+07 -1.098e+06
+2.5829e+07 -1.1306e+06
+2.5842e+07 -1.153e+06
+2.5848e+07 -1.165e+06
+2.5847e+07 -1.1667e+06
+2.5837e+07 -1.1582e+06
+2.5819e+07 -1.1396e+06
+2.5794e+07 -1.1108e+06
+2.5761e+07 -1.0717e+06
+2.5721e+07 -1.0223e+06
+2.5675e+07 -963000
+2.5621e+07 -894280
+2.5562e+07 -817080
+2.5497e+07 -732520
+2.5426e+07 -641790
+2.5351e+07 -546100
+2.5271e+07 -446510
+2.5189e+07 -344000
+2.5104e+07 -239520
+2.5018e+07 -134070
+2.4933e+07 -28796
+2.4849e+07 74952
+2.4769e+07 175690
+2.4693e+07 271860
+2.4622e+07 361990
+2.4559e+07 444750
+2.4504e+07 519000
+2.4459e+07 583810
+2.4424e+07 638340
+2.4402e+07 681800
+2.4394e+07 713380
+2.44e+07 732280
+2.4421e+07 737780
+2.4458e+07 729250
+2.4511e+07 706290
+2.4582e+07 668720
+2.467e+07 616590
+2.4775e+07 550130
+2.4896e+07 469730
+2.5034e+07 375920
+2.5188e+07 269280
+2.5356e+07 150500
+2.5537e+07 20388
+2.5731e+07 -120150
+2.5935e+07 -270040
+2.6148e+07 -428040
+2.6368e+07 -592710
+2.6594e+07 -762370
+2.6824e+07 -935070
+2.7056e+07 -1.1086e+06
+2.729e+07 -1.2803e+06
+2.7523e+07 -1.4472e+06
+2.7754e+07 -1.6057e+06
+2.7983e+07 -1.7516e+06
+2.821e+07 -1.88e+06
+2.8435e+07 -1.9849e+06
+2.8658e+07 -2.0595e+06
+2.888e+07 -2.0956e+06
+2.9101e+07 -2.0841e+06
+2.9323e+07 -2.0149e+06
+2.9543e+07 -1.8772e+06
+2.9758e+07 -1.6605e+06
+2.9964e+07 -1.355e+06
+3.0153e+07 -953140
+3.0311e+07 -451210
+3.0423e+07 149350
+3.0471e+07 840250
+3.0435e+07 1.6053e+06
+3.0295e+07 2.4204e+06
+3.0034e+07 3.2539e+06
+2.9643e+07 4.0696e+06
+2.912e+07 4.8298e+06
+2.847e+07 5.4994e+06
+2.771e+07 6.0504e+06
+2.686e+07 6.465e+06
+2.5947e+07 6.7372e+06
+2.4998e+07 6.8728e+06
+2.4036e+07 6.8872e+06
+2.3082e+07 6.8022e+06
+2.2149e+07 6.6426e+06
+2.1247e+07 6.4326e+06
+2.0379e+07 6.1939e+06
+1.9547e+07 5.9438e+06
+1.875e+07 5.6951e+06
+1.7984e+07 5.4564e+06
+1.7245e+07 5.2326e+06
+1.6532e+07 5.0259e+06
+1.584e+07 4.8366e+06
+1.5167e+07 4.664e+06
+1.4511e+07 4.5068e+06
+1.387e+07 4.3632e+06
+1.3242e+07 4.2319e+06
+1.2626e+07 4.1113e+06
+1.2022e+07 4.0003e+06
+1.1429e+07 3.898e+06
+1.0845e+07 3.8034e+06
+1.0271e+07 3.7161e+06
+9.7071e+06 3.6356e+06
+9.1521e+06 3.5613e+06
+8.6061e+06 3.493e+06
+8.069e+06 3.4303e+06
+7.5406e+06 3.373e+06
+7.0207e+06 3.3208e+06
+6.5092e+06 3.2735e+06
+6.0057e+06 3.2308e+06
+5.51e+06 3.1926e+06
+5.0219e+06 3.1585e+06
+4.5409e+06 3.1284e+06
+4.0665e+06 3.1021e+06
+3.5985e+06 3.0794e+06
+3.1362e+06 3.0601e+06
+2.6792e+06 3.0441e+06
+2.2267e+06 3.0313e+06
+1.7784e+06 3.0214e+06
+1.3335e+06 3.0144e+06
+891290 3.0102e+06
+451230 3.0088e+06
+12598 3.01e+06
+-425300 3.0138e+06
+-863160 3.0202e+06
+-1.3017e+06 3.0291e+06
+-1.7415e+06 3.0405e+06
+-2.1835e+06 3.0544e+06
+-2.6281e+06 3.0709e+06
+-3.0762e+06 3.0898e+06
+-3.5284e+06 3.1114e+06
+-3.9853e+06 3.1355e+06
+-4.4476e+06 3.1622e+06
+-4.9159e+06 3.1915e+06
+-5.3909e+06 3.2236e+06
+-5.873e+06 3.2584e+06
+-6.3629e+06 3.296e+06
+-6.861e+06 3.3365e+06
+-7.3679e+06 3.3798e+06
+-7.8839e+06 3.4261e+06
+-8.4094e+06 3.4753e+06
+-8.9449e+06 3.5276e+06
+-9.4906e+06 3.5828e+06
+-1.0047e+07 3.6411e+06
+-1.0614e+07 3.7024e+06
+-1.1191e+07 3.7667e+06
+-1.178e+07 3.834e+06
+-1.238e+07 3.9041e+06
+-1.2991e+07 3.977e+06
+-1.3614e+07 4.0528e+06
+-1.4247e+07 4.1312e+06
+-1.4892e+07 4.2123e+06
+-1.5548e+07 4.2962e+06
+-1.6216e+07 4.3829e+06
+-1.6894e+07 4.4727e+06
+-1.7584e+07 4.566e+06
+-1.8285e+07 4.6636e+06
+-1.8997e+07 4.7664e+06
+-1.9721e+07 4.876e+06
+-2.0456e+07 4.9946e+06
+-2.1201e+07 5.1251e+06
+-2.1958e+07 5.2714e+06
+-2.2726e+07 5.4388e+06
+-2.3504e+07 5.6336e+06
+-2.4292e+07 5.864e+06
+-2.509e+07 6.1396e+06
+-2.5898e+07 6.4715e+06
+-2.6716e+07 6.8719e+06
+-2.7545e+07 7.3536e+06
+-2.8388e+07 7.9284e+06
+-2.9249e+07 8.606e+06
+-3.0134e+07 9.3912e+06
+-3.1051e+07 1.0282e+07
+-3.2008e+07 1.1264e+07
+-3.3015e+07 1.2313e+07
+-3.4078e+07 1.3387e+07
+-3.5199e+07 1.4432e+07
+-3.6372e+07 1.5378e+07
+-3.758e+07 1.615e+07
+-3.8795e+07 1.6674e+07
+-3.9979e+07 1.6885e+07
+-4.1087e+07 1.6736e+07
+-4.2076e+07 1.6207e+07
+-4.2904e+07 1.5309e+07
+-4.3545e+07 1.4077e+07
+-4.3984e+07 1.2573e+07
+-4.4223e+07 1.0872e+07
+-4.428e+07 9.0558e+06
+-4.4182e+07 7.202e+06
+-4.3962e+07 5.3805e+06
+-4.3654e+07 3.6472e+06
+-4.3293e+07 2.0431e+06
+-4.2907e+07 594360
+-4.2517e+07 -685730
+-4.2138e+07 -1.7945e+06
+-4.1781e+07 -2.7373e+06
+-4.1451e+07 -3.5243e+06
+-4.1147e+07 -4.1689e+06
+-4.0867e+07 -4.6858e+06
+-4.0609e+07 -5.0895e+06
+-4.0368e+07 -5.3937e+06
+-4.0139e+07 -5.6113e+06
+-3.9917e+07 -5.7535e+06
+-3.97e+07 -5.831e+06
+-3.9485e+07 -5.8526e+06
+-3.9269e+07 -5.8262e+06
+-3.9053e+07 -5.7583e+06
+-3.8837e+07 -5.6542e+06
+-3.862e+07 -5.5188e+06
+-3.8404e+07 -5.3567e+06
+-3.8189e+07 -5.1726e+06
+-3.7978e+07 -4.9711e+06
+-3.7769e+07 -4.756e+06
+-3.7566e+07 -4.5297e+06
+-3.7369e+07 -4.293e+06
+-3.7178e+07 -4.046e+06
+-3.6992e+07 -3.7888e+06
+-3.6813e+07 -3.5225e+06
+-3.6639e+07 -3.2496e+06
+-3.6469e+07 -2.9731e+06
+-3.6306e+07 -2.6958e+06
+-3.6151e+07 -2.4203e+06
+-3.6006e+07 -2.1498e+06
+-3.5874e+07 -1.8881e+06
+-3.5756e+07 -1.6396e+06
+-3.5653e+07 -1.408e+06
+-3.5564e+07 -1.1943e+06
+-3.5489e+07 -995820
+-3.5428e+07 -807450
+-3.5381e+07 -623820
+-3.5349e+07 -442630
+-3.5329e+07 -266600
+-3.5323e+07 -103130
+-3.5329e+07 38365
+-3.5352e+07 150660
+-3.5395e+07 232660
+-3.5461e+07 290910
+-3.5548e+07 337150
+-3.5651e+07 381980
+-3.5765e+07 427710
+-3.5886e+07 465170
+-3.6012e+07 477900
+-3.615e+07 452990
+-3.6303e+07 391900
+-3.6473e+07 312950
+-3.6654e+07 241410
+-3.6835e+07 192200
+-3.7009e+07 156930
+-3.7173e+07 106410
+-3.7333e+07 9623.4
+-3.7498e+07 -142700
+-3.7674e+07 -326970
+-3.786e+07 -498430
+-3.8047e+07 -619910
+-3.8225e+07 -688620
+-3.839e+07 -741190
+-3.8546e+07 -831380
+-3.8704e+07 -994120
+-3.8866e+07 -1.2202e+06
+-3.9025e+07 -1.4594e+06
+-3.9165e+07 -1.6515e+06
+-3.9271e+07 -1.7639e+06
+-3.9341e+07 -1.8114e+06
+-3.9389e+07 -1.8453e+06
+-3.9439e+07 -1.9188e+06
+-3.9508e+07 -2.0528e+06
+-3.9596e+07 -2.2236e+06
+-3.9682e+07 -2.3795e+06
+-3.9735e+07 -2.4741e+06
+-3.9736e+07 -2.4956e+06
+-3.9687e+07 -2.4724e+06
+-3.9611e+07 -2.4558e+06
+-3.954e+07 -2.4906e+06
+-3.9495e+07 -2.5905e+06
+-3.9477e+07 -2.7327e+06
+-3.9464e+07 -2.8706e+06
+-3.9426e+07 -2.9563e+06
+-3.9333e+07 -2.9609e+06
+-3.9172e+07 -2.8834e+06
+-3.8948e+07 -2.7474e+06
+-3.8678e+07 -2.5887e+06
+-3.839e+07 -2.442e+06
+2.755e+07 703890
+2.7643e+07 691050
+2.7746e+07 667810
+2.7858e+07 634350
+2.7978e+07 591490
+2.8101e+07 540630
+2.8226e+07 483650
+2.8347e+07 422580
+2.8462e+07 359160
+2.8569e+07 294460
+2.8667e+07 228610
+2.8756e+07 160790
+2.8838e+07 89599
+2.8915e+07 13554
+2.8988e+07 -68220
+2.9057e+07 -155530
+2.9122e+07 -246950
+2.9183e+07 -340120
+2.9237e+07 -432290
+2.9283e+07 -521010
+2.9319e+07 -604650
+2.9345e+07 -682600
+2.9359e+07 -755070
+2.9363e+07 -822580
+2.9355e+07 -885480
+2.9339e+07 -943520
+2.9313e+07 -995800
+2.928e+07 -1.041e+06
+2.9239e+07 -1.0776e+06
+2.919e+07 -1.1044e+06
+2.9134e+07 -1.121e+06
+2.9071e+07 -1.1271e+06
+2.9e+07 -1.123e+06
+2.8924e+07 -1.1091e+06
+2.8841e+07 -1.0855e+06
+2.8755e+07 -1.0525e+06
+2.8664e+07 -1.0099e+06
+2.8571e+07 -957680
+2.8477e+07 -896170
+2.8382e+07 -825860
+2.8287e+07 -747610
+2.8193e+07 -662540
+2.8101e+07 -571890
+2.8012e+07 -476900
+2.7926e+07 -378710
+2.7845e+07 -278380
+2.7769e+07 -176900
+2.77e+07 -75326
+2.7638e+07 25163
+2.7585e+07 123240
+2.7541e+07 217450
+2.7508e+07 306300
+2.7486e+07 388380
+2.7476e+07 462440
+2.7478e+07 527400
+2.7493e+07 582360
+2.7522e+07 626530
+2.7564e+07 659180
+2.7619e+07 679570
+2.7689e+07 687010
+2.7773e+07 680880
+2.7871e+07 660710
+2.7982e+07 626250
+2.8105e+07 577510
+2.8241e+07 514700
+2.8387e+07 438260
+2.8543e+07 348800
+2.8707e+07 247020
+2.8876e+07 133710
+2.905e+07 9748.5
+2.9226e+07 -123920
+2.94e+07 -266250
+2.9572e+07 -416050
+2.9738e+07 -571990
+2.9895e+07 -732580
+3.0041e+07 -896150
+3.0172e+07 -1.0608e+06
+3.0288e+07 -1.2244e+06
+3.0384e+07 -1.3846e+06
+3.046e+07 -1.5386e+06
+3.0514e+07 -1.6833e+06
+3.0545e+07 -1.8151e+06
+3.0555e+07 -1.9294e+06
+3.0543e+07 -2.0212e+06
+3.0512e+07 -2.0841e+06
+3.0464e+07 -2.1105e+06
+3.0404e+07 -2.0918e+06
+3.0336e+07 -2.0178e+06
+3.0263e+07 -1.8773e+06
+3.0188e+07 -1.6586e+06
+3.0113e+07 -1.3502e+06
+3.0034e+07 -941900
+2.9948e+07 -426810
+2.9843e+07 197030
+2.9705e+07 924420
+2.9517e+07 1.7413e+06
+2.9258e+07 2.6236e+06
+2.8912e+07 3.5381e+06
+2.8463e+07 4.444e+06
+2.7906e+07 5.2971e+06
+2.7242e+07 6.0551e+06
+2.6484e+07 6.6828e+06
+2.5649e+07 7.1569e+06
+2.4762e+07 7.4688e+06
+2.3846e+07 7.6243e+06
+2.2925e+07 7.6409e+06
+2.2015e+07 7.5446e+06
+2.113e+07 7.3644e+06
+2.0275e+07 7.1287e+06
+1.9454e+07 6.8625e+06
+1.8666e+07 6.5854e+06
+1.7909e+07 6.3116e+06
+1.718e+07 6.0501e+06
+1.6476e+07 5.8061e+06
+1.5794e+07 5.5815e+06
+1.5132e+07 5.3765e+06
+1.4487e+07 5.1898e+06
+1.3858e+07 5.0199e+06
+1.3243e+07 4.8648e+06
+1.2642e+07 4.7229e+06
+1.2053e+07 4.5925e+06
+1.1475e+07 4.4723e+06
+1.0908e+07 4.3613e+06
+1.0352e+07 4.2585e+06
+9.8055e+06 4.1632e+06
+9.2684e+06 4.075e+06
+8.7405e+06 3.9933e+06
+8.2214e+06 3.9178e+06
+7.711e+06 3.8481e+06
+7.2089e+06 3.784e+06
+6.7148e+06 3.7253e+06
+6.2285e+06 3.6716e+06
+5.7497e+06 3.6228e+06
+5.2781e+06 3.5787e+06
+4.8132e+06 3.539e+06
+4.3548e+06 3.5036e+06
+3.9024e+06 3.4724e+06
+3.4556e+06 3.4451e+06
+3.0138e+06 3.4217e+06
+2.5767e+06 3.4019e+06
+2.1436e+06 3.3858e+06
+1.714e+06 3.373e+06
+1.2874e+06 3.3637e+06
+863190 3.3576e+06
+440790 3.3548e+06
+19607 3.3551e+06
+-400960 3.3585e+06
+-821510 3.3649e+06
+-1.2426e+06 3.3745e+06
+-1.665e+06 3.387e+06
+-2.0891e+06 3.4026e+06
+-2.5155e+06 3.4211e+06
+-2.9449e+06 3.4427e+06
+-3.3778e+06 3.4673e+06
+-3.8148e+06 3.495e+06
+-4.2563e+06 3.5257e+06
+-4.703e+06 3.5595e+06
+-5.1554e+06 3.5964e+06
+-5.6138e+06 3.6365e+06
+-6.0788e+06 3.6798e+06
+-6.5508e+06 3.7262e+06
+-7.0301e+06 3.7759e+06
+-7.5173e+06 3.8288e+06
+-8.0124e+06 3.885e+06
+-8.516e+06 3.9444e+06
+-9.0282e+06 4.0071e+06
+-9.5493e+06 4.0729e+06
+-1.0079e+07 4.142e+06
+-1.0619e+07 4.2141e+06
+-1.1167e+07 4.2893e+06
+-1.1726e+07 4.3675e+06
+-1.2293e+07 4.4486e+06
+-1.2871e+07 4.5325e+06
+-1.3458e+07 4.6191e+06
+-1.4055e+07 4.7085e+06
+-1.4662e+07 4.8007e+06
+-1.5279e+07 4.8958e+06
+-1.5906e+07 4.994e+06
+-1.6543e+07 5.0958e+06
+-1.7191e+07 5.2019e+06
+-1.7848e+07 5.3133e+06
+-1.8516e+07 5.4315e+06
+-1.9195e+07 5.5586e+06
+-1.9883e+07 5.6975e+06
+-2.0582e+07 5.852e+06
+-2.129e+07 6.0272e+06
+-2.2007e+07 6.2293e+06
+-2.2733e+07 6.4665e+06
+-2.3465e+07 6.7482e+06
+-2.4204e+07 7.0858e+06
+-2.495e+07 7.492e+06
+-2.5703e+07 7.9803e+06
+-2.6467e+07 8.5641e+06
+-2.7245e+07 9.2549e+06
+-2.8047e+07 1.006e+07
+-2.8885e+07 1.098e+07
+-2.9773e+07 1.2003e+07
+-3.0729e+07 1.3104e+07
+-3.177e+07 1.4242e+07
+-3.2907e+07 1.5356e+07
+-3.4145e+07 1.6371e+07
+-3.5475e+07 1.7201e+07
+-3.6874e+07 1.776e+07
+-3.8303e+07 1.7973e+07
+-3.9713e+07 1.7788e+07
+-4.1053e+07 1.7183e+07
+-4.2273e+07 1.6173e+07
+-4.3337e+07 1.4806e+07
+-4.4223e+07 1.3154e+07
+-4.4928e+07 1.1306e+07
+-4.5462e+07 9.3558e+06
+-4.585e+07 7.389e+06
+-4.612e+07 5.4788e+06
+-4.6301e+07 3.6815e+06
+-4.6421e+07 2.035e+06
+-4.6502e+07 561350
+-4.6558e+07 -731390
+-4.6601e+07 -1.8454e+06
+-4.6634e+07 -2.7898e+06
+-4.6657e+07 -3.5783e+06
+-4.6668e+07 -4.2262e+06
+-4.6664e+07 -4.7494e+06
+-4.6639e+07 -5.163e+06
+-4.6589e+07 -5.4808e+06
+-4.6509e+07 -5.715e+06
+-4.6398e+07 -5.8766e+06
+-4.6251e+07 -5.9751e+06
+-4.6068e+07 -6.0188e+06
+-4.5849e+07 -6.0145e+06
+-4.5594e+07 -5.9679e+06
+-4.5306e+07 -5.8835e+06
+-4.4988e+07 -5.7656e+06
+-4.4643e+07 -5.6183e+06
+-4.4276e+07 -5.4461e+06
+-4.3891e+07 -5.2534e+06
+-4.3493e+07 -5.0439e+06
+-4.3087e+07 -4.8204e+06
+-4.2676e+07 -4.5842e+06
+-4.2262e+07 -4.3363e+06
+-4.1847e+07 -4.0777e+06
+-4.1431e+07 -3.8102e+06
+-4.1015e+07 -3.536e+06
+-4.0598e+07 -3.2574e+06
+-4.0183e+07 -2.976e+06
+-3.9776e+07 -2.6934e+06
+-3.938e+07 -2.412e+06
+-3.9001e+07 -2.136e+06
+-3.8643e+07 -1.8709e+06
+-3.8309e+07 -1.6215e+06
+-3.7998e+07 -1.3901e+06
+-3.771e+07 -1.1744e+06
+-3.7444e+07 -969170
+-3.7201e+07 -768850
+-3.6981e+07 -571060
+-3.6783e+07 -378530
+-3.6608e+07 -198440
+-3.6456e+07 -39524
+-3.633e+07 91820
+-3.6231e+07 194750
+-3.6161e+07 274780
+-3.6117e+07 341320
+-3.6097e+07 402590
+-3.6096e+07 460200
+-3.6109e+07 506980
+-3.6138e+07 530560
+-3.6187e+07 521680
+-3.6265e+07 482130
+-3.6374e+07 426200
+-3.6512e+07 372520
+-3.6668e+07 330820
+-3.6826e+07 292750
+-3.6979e+07 235110
+-3.7128e+07 135510
+-3.7282e+07 -9472.7
+-3.7457e+07 -177230
+-3.7657e+07 -330350
+-3.788e+07 -440500
+-3.8111e+07 -509010
+-3.8338e+07 -568980
+-3.8557e+07 -665590
+-3.8776e+07 -826650
+-3.9005e+07 -1.0428e+06
+-3.9253e+07 -1.2714e+06
+-3.9515e+07 -1.4613e+06
+-3.9776e+07 -1.5841e+06
+-4.0023e+07 -1.6498e+06
+-4.025e+07 -1.6991e+06
+-4.0467e+07 -1.7767e+06
+-4.0685e+07 -1.9035e+06
+-4.0911e+07 -2.0651e+06
+-4.1141e+07 -2.2221e+06
+-4.1358e+07 -2.3349e+06
+-4.1545e+07 -2.3872e+06
+-4.1698e+07 -2.3947e+06
+-4.1827e+07 -2.3947e+06
+-4.1955e+07 -2.4255e+06
+-4.21e+07 -2.5063e+06
+-4.227e+07 -2.6284e+06
+-4.2453e+07 -2.7607e+06
+-4.2623e+07 -2.8649e+06
+-4.275e+07 -2.9115e+06
+-4.2812e+07 -2.8901e+06
+-4.2803e+07 -2.8102e+06
+-4.2732e+07 -2.6952e+06
+-4.262e+07 -2.5724e+06
+2.4995e+07 617040
+2.5115e+07 598060
+2.5241e+07 569310
+2.5371e+07 531690
+2.5503e+07 486650
+2.5634e+07 436060
+2.5761e+07 381950
+2.5882e+07 326110
+2.5994e+07 269720
+2.6096e+07 213060
+2.6187e+07 155450
+2.6268e+07 95435
+2.634e+07 31247
+2.6403e+07 -38553
+2.6458e+07 -114510
+2.6504e+07 -195920
+2.6541e+07 -280880
+2.6568e+07 -366650
+2.6584e+07 -450370
+2.6588e+07 -529690
+2.6578e+07 -603270
+2.6555e+07 -670890
+2.6519e+07 -733120
+2.6471e+07 -790810
+2.641e+07 -844530
+2.6339e+07 -894130
+2.6257e+07 -938720
+2.6167e+07 -976880
+2.6068e+07 -1.0071e+06
+2.5963e+07 -1.0282e+06
+2.585e+07 -1.0394e+06
+2.5732e+07 -1.0408e+06
+2.561e+07 -1.0327e+06
+2.5484e+07 -1.0157e+06
+2.5356e+07 -989970
+2.5227e+07 -955880
+2.51e+07 -913410
+2.4975e+07 -862540
+2.4853e+07 -803440
+2.4737e+07 -736530
+2.4628e+07 -662580
+2.4526e+07 -582620
+2.4433e+07 -497840
+2.4349e+07 -409440
+2.4276e+07 -318550
+2.4214e+07 -226210
+2.4164e+07 -133420
+2.4128e+07 -41200
+2.4104e+07 49324
+2.4095e+07 136920
+2.41e+07 220240
+2.412e+07 297960
+2.4155e+07 368800
+2.4204e+07 431630
+2.4267e+07 485470
+2.4344e+07 529530
+2.4434e+07 563080
+2.4536e+07 585470
+2.4651e+07 596070
+2.4775e+07 594290
+2.491e+07 579660
+2.5053e+07 551850
+2.5202e+07 510780
+2.5357e+07 456590
+2.5515e+07 389670
+2.5675e+07 310600
+2.5834e+07 220130
+2.5989e+07 119120
+2.6139e+07 8495.9
+2.6281e+07 -110760
+2.6412e+07 -237580
+2.653e+07 -370850
+2.6631e+07 -509320
+2.6712e+07 -651660
+2.6772e+07 -796400
+2.6807e+07 -941930
+2.6816e+07 -1.0865e+06
+2.6794e+07 -1.2282e+06
+2.6742e+07 -1.365e+06
+2.6657e+07 -1.4945e+06
+2.6539e+07 -1.6142e+06
+2.6388e+07 -1.7209e+06
+2.6205e+07 -1.8111e+06
+2.5992e+07 -1.8803e+06
+2.5752e+07 -1.9232e+06
+2.5489e+07 -1.9332e+06
+2.5209e+07 -1.9023e+06
+2.4919e+07 -1.8211e+06
+2.4624e+07 -1.6785e+06
+2.4333e+07 -1.4623e+06
+2.4051e+07 -1.1599e+06
+2.3781e+07 -758930
+2.3523e+07 -249470
+2.3274e+07 374180
+2.3024e+07 1.1107e+06
+2.276e+07 1.9494e+06
+2.2464e+07 2.8683e+06
+2.2118e+07 3.8336e+06
+2.1707e+07 4.8015e+06
+2.1221e+07 5.7223e+06
+2.0659e+07 6.5465e+06
+2.0029e+07 7.2319e+06
+1.9346e+07 7.7495e+06
+1.8629e+07 8.0876e+06
+1.7901e+07 8.252e+06
+1.7178e+07 8.263e+06
+1.6474e+07 8.1504e+06
+1.5798e+07 7.9476e+06
+1.5153e+07 7.6869e+06
+1.4538e+07 7.3958e+06
+1.3951e+07 7.0957e+06
+1.3389e+07 6.8014e+06
+1.2848e+07 6.5221e+06
+1.2325e+07 6.2625e+06
+1.1819e+07 6.0244e+06
+1.1326e+07 5.8073e+06
+1.0845e+07 5.6099e+06
+1.0376e+07 5.4301e+06
+9.9169e+06 5.266e+06
+9.4678e+06 5.1155e+06
+9.028e+06 4.9772e+06
+8.5968e+06 4.8495e+06
+8.1739e+06 4.7313e+06
+7.7588e+06 4.6217e+06
+7.3512e+06 4.5199e+06
+6.9508e+06 4.4255e+06
+6.5573e+06 4.3378e+06
+6.1703e+06 4.2565e+06
+5.7897e+06 4.1813e+06
+5.4152e+06 4.1119e+06
+5.0466e+06 4.048e+06
+4.6835e+06 3.9894e+06
+4.3257e+06 3.9359e+06
+3.973e+06 3.8873e+06
+3.6251e+06 3.8434e+06
+3.2817e+06 3.8041e+06
+2.9424e+06 3.7692e+06
+2.607e+06 3.7386e+06
+2.275e+06 3.7121e+06
+1.9463e+06 3.6896e+06
+1.6203e+06 3.6709e+06
+1.2966e+06 3.6562e+06
+975050 3.6451e+06
+655080 3.6376e+06
+336340 3.6338e+06
+18415 3.6334e+06
+-299080 3.6365e+06
+-616550 3.6431e+06
+-934410 3.653e+06
+-1.253e+06 3.6664e+06
+-1.5728e+06 3.6831e+06
+-1.8942e+06 3.7031e+06
+-2.2174e+06 3.7266e+06
+-2.543e+06 3.7534e+06
+-2.8712e+06 3.7835e+06
+-3.2025e+06 3.8171e+06
+-3.537e+06 3.854e+06
+-3.8753e+06 3.8944e+06
+-4.2175e+06 3.9382e+06
+-4.564e+06 3.9854e+06
+-4.915e+06 4.0361e+06
+-5.2708e+06 4.0902e+06
+-5.6316e+06 4.1477e+06
+-5.9976e+06 4.2087e+06
+-6.369e+06 4.2731e+06
+-6.7459e+06 4.3409e+06
+-7.1286e+06 4.4121e+06
+-7.517e+06 4.4865e+06
+-7.9115e+06 4.5641e+06
+-8.312e+06 4.6449e+06
+-8.7186e+06 4.7287e+06
+-9.1315e+06 4.8155e+06
+-9.5507e+06 4.9052e+06
+-9.9763e+06 4.9978e+06
+-1.0408e+07 5.0932e+06
+-1.0847e+07 5.1914e+06
+-1.1293e+07 5.2927e+06
+-1.1745e+07 5.3972e+06
+-1.2205e+07 5.5054e+06
+-1.2672e+07 5.618e+06
+-1.3147e+07 5.736e+06
+-1.3629e+07 5.8609e+06
+-1.4118e+07 5.9948e+06
+-1.4616e+07 6.1404e+06
+-1.5121e+07 6.3016e+06
+-1.5634e+07 6.4831e+06
+-1.6153e+07 6.6913e+06
+-1.668e+07 6.9339e+06
+-1.7213e+07 7.2209e+06
+-1.7752e+07 7.5636e+06
+-1.8299e+07 7.9754e+06
+-1.8855e+07 8.4712e+06
+-1.9424e+07 9.0662e+06
+-2.0016e+07 9.7746e+06
+-2.0641e+07 1.0607e+07
+-2.1315e+07 1.1567e+07
+-2.2062e+07 1.2648e+07
+-2.2905e+07 1.3825e+07
+-2.3871e+07 1.5058e+07
+-2.498e+07 1.6281e+07
+-2.6243e+07 1.741e+07
+-2.7656e+07 1.8347e+07
+-2.9195e+07 1.8989e+07
+-3.0814e+07 1.9249e+07
+-3.2456e+07 1.9063e+07
+-3.4054e+07 1.8407e+07
+-3.5549e+07 1.7302e+07
+-3.6892e+07 1.5807e+07
+-3.8057e+07 1.4011e+07
+-3.9038e+07 1.2018e+07
+-3.9847e+07 9.9353e+06
+-4.051e+07 7.8566e+06
+-4.1056e+07 5.8592e+06
+-4.1518e+07 3.9986e+06
+-4.1923e+07 2.3096e+06
+-4.2293e+07 808840
+-4.2642e+07 -500780
+-4.2977e+07 -1.6264e+06
+-4.3302e+07 -2.5812e+06
+-4.3615e+07 -3.3817e+06
+-4.3911e+07 -4.045e+06
+-4.4185e+07 -4.588e+06
+-4.4431e+07 -5.026e+06
+-4.4642e+07 -5.3726e+06
+-4.4813e+07 -5.6396e+06
+-4.494e+07 -5.8373e+06
+-4.5017e+07 -5.9745e+06
+-4.5043e+07 -6.0585e+06
+-4.5015e+07 -6.0953e+06
+-4.4933e+07 -6.0897e+06
+-4.4797e+07 -6.0452e+06
+-4.4608e+07 -5.9652e+06
+-4.437e+07 -5.8528e+06
+-4.4086e+07 -5.7118e+06
+-4.3762e+07 -5.5461e+06
+-4.3403e+07 -5.3593e+06
+-4.3014e+07 -5.1545e+06
+-4.2599e+07 -4.9341e+06
+-4.2161e+07 -4.6999e+06
+-4.17e+07 -4.4542e+06
+-4.1218e+07 -4.1991e+06
+-4.0716e+07 -3.9368e+06
+-4.0195e+07 -3.6684e+06
+-3.9658e+07 -3.3942e+06
+-3.9112e+07 -3.1144e+06
+-3.8562e+07 -2.8306e+06
+-3.8016e+07 -2.547e+06
+-3.7479e+07 -2.2703e+06
+-3.6955e+07 -2.0069e+06
+-3.6446e+07 -1.7607e+06
+-3.5951e+07 -1.5304e+06
+-3.5472e+07 -1.311e+06
+-3.5008e+07 -1.0962e+06
+-3.4559e+07 -882890
+-3.413e+07 -673220
+-3.3722e+07 -474430
+-3.3337e+07 -295700
+-3.2977e+07 -143800
+-3.2642e+07 -19701
+-3.2332e+07 82016
+-3.2049e+07 170280
+-3.1792e+07 252310
+-3.1561e+07 328830
+-3.1354e+07 392870
+-3.117e+07 433830
+-3.101e+07 445100
+-3.0879e+07 430190
+-3.0782e+07 402300
+-3.0719e+07 375970
+-3.0689e+07 355810
+-3.0683e+07 330580
+-3.0692e+07 278820
+-3.0711e+07 184030
+-3.0743e+07 49357
+-3.0795e+07 -99658
+-3.0877e+07 -228510
+-3.0989e+07 -315830
+-3.1126e+07 -369330
+-3.1278e+07 -423380
+-3.1438e+07 -518380
+-3.1604e+07 -674600
+-3.1785e+07 -877800
+-3.1989e+07 -1.0864e+06
+-3.2221e+07 -1.2561e+06
+-3.2477e+07 -1.3655e+06
+-3.2748e+07 -1.4279e+06
+-3.3021e+07 -1.4814e+06
+-3.329e+07 -1.5648e+06
+-3.3554e+07 -1.6946e+06
+-3.3815e+07 -1.8564e+06
+-3.4073e+07 -2.0148e+06
+-3.4325e+07 -2.134e+06
+-3.457e+07 -2.1976e+06
+-3.4806e+07 -2.2166e+06
+-3.5039e+07 -2.2216e+06
+-3.5278e+07 -2.2473e+06
+-3.553e+07 -2.3147e+06
+-3.5799e+07 -2.4232e+06
+-3.6073e+07 -2.552e+06
+-3.6336e+07 -2.6702e+06
+-3.6566e+07 -2.7497e+06
+-3.6746e+07 -2.7745e+06
+-3.6869e+07 -2.7441e+06
+-3.694e+07 -2.6713e+06
+-3.6974e+07 -2.5757e+06
+2.1565e+07 513270
+2.1706e+07 491890
+2.1848e+07 461840
+2.1989e+07 424350
+2.2128e+07 381130
+2.2262e+07 334150
+2.2388e+07 285330
+2.2507e+07 236190
+2.2615e+07 187480
+2.2713e+07 139030
+2.28e+07 89773
+2.2876e+07 38024
+2.2941e+07 -17991
+2.2996e+07 -79561
+2.3038e+07 -146980
+2.3068e+07 -219320
+2.3086e+07 -294520
+2.3089e+07 -369890
+2.3077e+07 -442700
+2.3051e+07 -510870
+2.301e+07 -573340
+2.2954e+07 -630120
+2.2885e+07 -681960
+2.2803e+07 -729820
+2.2709e+07 -774350
+2.2604e+07 -815440
+2.2488e+07 -852280
+2.2363e+07 -883500
+2.223e+07 -907670
+2.209e+07 -923610
+2.1944e+07 -930760
+2.1795e+07 -929090
+2.1643e+07 -919020
+2.149e+07 -901120
+2.1338e+07 -875860
+2.1188e+07 -843500
+2.1042e+07 -804100
+2.0903e+07 -757640
+2.0771e+07 -704220
+2.0648e+07 -644190
+2.0536e+07 -578190
+2.0436e+07 -507140
+2.0349e+07 -432090
+2.0277e+07 -354130
+2.0219e+07 -274320
+2.0178e+07 -193630
+2.0152e+07 -112990
+2.0144e+07 -33324
+2.0152e+07 44356
+2.0178e+07 118960
+2.0222e+07 189330
+2.0282e+07 254310
+2.0359e+07 312820
+2.0451e+07 363880
+2.0558e+07 406660
+2.0678e+07 440480
+2.0811e+07 464710
+2.0954e+07 478820
+2.1106e+07 482280
+2.1266e+07 474640
+2.143e+07 455550
+2.1598e+07 424820
+2.1768e+07 382490
+2.1935e+07 328810
+2.2099e+07 264240
+2.2256e+07 189450
+2.2404e+07 105230
+2.2541e+07 12497
+2.2663e+07 -87807
+2.2768e+07 -194670
+2.2853e+07 -307040
+2.2915e+07 -423810
+2.2953e+07 -543790
+2.2964e+07 -665730
+2.2945e+07 -788270
+2.2895e+07 -909960
+2.2811e+07 -1.0293e+06
+2.2693e+07 -1.1446e+06
+2.2539e+07 -1.2542e+06
+2.2349e+07 -1.3562e+06
+2.2123e+07 -1.4483e+06
+2.1863e+07 -1.5283e+06
+2.1568e+07 -1.593e+06
+2.1244e+07 -1.639e+06
+2.0892e+07 -1.6618e+06
+2.0519e+07 -1.6556e+06
+2.013e+07 -1.6135e+06
+1.9733e+07 -1.5268e+06
+1.9336e+07 -1.385e+06
+1.8947e+07 -1.176e+06
+1.8575e+07 -886360
+1.8225e+07 -502270
+1.7901e+07 -11040
+1.7602e+07 596580
+1.7321e+07 1.3235e+06
+1.7047e+07 2.1632e+06
+1.6761e+07 3.0967e+06
+1.6446e+07 4.091e+06
+1.6083e+07 5.1003e+06
+1.5662e+07 6.0699e+06
+1.5178e+07 6.9432e+06
+1.4639e+07 7.6704e+06
+1.4061e+07 8.2167e+06
+1.3463e+07 8.5675e+06
+1.2867e+07 8.729e+06
+1.229e+07 8.7248e+06
+1.1743e+07 8.5893e+06
+1.1232e+07 8.3604e+06
+1.0755e+07 8.0739e+06
+1.0309e+07 7.7597e+06
+9.8903e+06 7.4399e+06
+9.4929e+06 7.1294e+06
+9.1127e+06 6.8371e+06
+8.7461e+06 6.5669e+06
+8.3906e+06 6.3199e+06
+8.0445e+06 6.0952e+06
+7.7067e+06 5.891e+06
+7.3764e+06 5.7049e+06
+7.0531e+06 5.535e+06
+6.7363e+06 5.379e+06
+6.4258e+06 5.2354e+06
+6.1213e+06 5.1027e+06
+5.8226e+06 4.9798e+06
+5.5292e+06 4.8657e+06
+5.2411e+06 4.7596e+06
+4.958e+06 4.661e+06
+4.6796e+06 4.5694e+06
+4.4057e+06 4.4843e+06
+4.1362e+06 4.4055e+06
+3.8707e+06 4.3326e+06
+3.6092e+06 4.2655e+06
+3.3515e+06 4.2038e+06
+3.0972e+06 4.1473e+06
+2.8463e+06 4.0959e+06
+2.5985e+06 4.0494e+06
+2.3536e+06 4.0077e+06
+2.1115e+06 3.9705e+06
+1.8718e+06 3.9378e+06
+1.6343e+06 3.9094e+06
+1.3989e+06 3.8852e+06
+1.1652e+06 3.8651e+06
+933070 3.8491e+06
+702220 3.837e+06
+472410 3.8287e+06
+243380 3.8242e+06
+14883 3.8234e+06
+-213320 3.8264e+06
+-441490 3.8329e+06
+-669870 3.8431e+06
+-898700 3.8569e+06
+-1.1282e+06 3.8743e+06
+-1.3587e+06 3.8952e+06
+-1.5903e+06 3.9197e+06
+-1.8232e+06 3.9478e+06
+-2.0578e+06 3.9794e+06
+-2.2942e+06 4.0145e+06
+-2.5325e+06 4.0532e+06
+-2.7731e+06 4.0955e+06
+-3.0159e+06 4.1414e+06
+-3.2614e+06 4.1909e+06
+-3.5094e+06 4.2439e+06
+-3.7603e+06 4.3005e+06
+-4.0141e+06 4.3607e+06
+-4.271e+06 4.4244e+06
+-4.531e+06 4.4916e+06
+-4.7943e+06 4.5622e+06
+-5.0608e+06 4.6363e+06
+-5.3308e+06 4.7137e+06
+-5.6042e+06 4.7944e+06
+-5.8811e+06 4.8783e+06
+-6.1616e+06 4.9653e+06
+-6.4458e+06 5.0553e+06
+-6.7337e+06 5.1483e+06
+-7.0255e+06 5.2442e+06
+-7.3212e+06 5.3431e+06
+-7.6211e+06 5.4449e+06
+-7.9251e+06 5.5498e+06
+-8.2337e+06 5.6582e+06
+-8.5468e+06 5.7704e+06
+-8.8649e+06 5.8872e+06
+-9.188e+06 6.0096e+06
+-9.5166e+06 6.139e+06
+-9.8507e+06 6.2776e+06
+-1.0191e+07 6.428e+06
+-1.0536e+07 6.594e+06
+-1.0888e+07 6.7804e+06
+-1.1247e+07 6.9935e+06
+-1.1611e+07 7.2412e+06
+-1.1983e+07 7.5334e+06
+-1.2362e+07 7.8823e+06
+-1.2752e+07 8.302e+06
+-1.3156e+07 8.8088e+06
+-1.3581e+07 9.4204e+06
+-1.4038e+07 1.0154e+07
+-1.4543e+07 1.1024e+07
+-1.5118e+07 1.204e+07
+-1.5792e+07 1.3198e+07
+-1.6598e+07 1.4478e+07
+-1.757e+07 1.5837e+07
+-1.8737e+07 1.7206e+07
+-2.0113e+07 1.8489e+07
+-2.1694e+07 1.957e+07
+-2.3445e+07 2.0328e+07
+-2.5305e+07 2.0655e+07
+-2.7193e+07 2.0476e+07
+-2.902e+07 1.9762e+07
+-3.0704e+07 1.8543e+07
+-3.2187e+07 1.6894e+07
+-3.3438e+07 1.4927e+07
+-3.4456e+07 1.2768e+07
+-3.5268e+07 1.0537e+07
+-3.5911e+07 8.3414e+06
+-3.6434e+07 6.2599e+06
+-3.6881e+07 4.3463e+06
+-3.7289e+07 2.6301e+06
+-3.7688e+07 1.1211e+06
+-3.8097e+07 -184950
+-3.8524e+07 -1.3011e+06
+-3.8974e+07 -2.2456e+06
+-3.9444e+07 -3.0383e+06
+-3.9927e+07 -3.6987e+06
+-4.0415e+07 -4.2449e+06
+-4.0899e+07 -4.6928e+06
+-4.137e+07 -5.0558e+06
+-4.1819e+07 -5.3456e+06
+-4.2237e+07 -5.5718e+06
+-4.2615e+07 -5.7426e+06
+-4.2949e+07 -5.8646e+06
+-4.3231e+07 -5.9429e+06
+-4.3458e+07 -5.9814e+06
+-4.3625e+07 -5.9826e+06
+-4.3732e+07 -5.9488e+06
+-4.3777e+07 -5.882e+06
+-4.3763e+07 -5.7847e+06
+-4.3691e+07 -5.6601e+06
+-4.3565e+07 -5.5116e+06
+-4.3387e+07 -5.3423e+06
+-4.3161e+07 -5.1555e+06
+-4.2887e+07 -4.9538e+06
+-4.2566e+07 -4.7401e+06
+-4.2198e+07 -4.5167e+06
+-4.1785e+07 -4.2852e+06
+-4.1327e+07 -4.0459e+06
+-4.0829e+07 -3.7976e+06
+-4.0296e+07 -3.5394e+06
+-3.9735e+07 -3.272e+06
+-3.9151e+07 -2.9994e+06
+-3.8552e+07 -2.7289e+06
+-3.7943e+07 -2.4681e+06
+-3.7328e+07 -2.2224e+06
+-3.6708e+07 -1.9921e+06
+-3.6084e+07 -1.7727e+06
+-3.5455e+07 -1.5573e+06
+-3.4825e+07 -1.3415e+06
+-3.4196e+07 -1.1263e+06
+-3.3574e+07 -918580
+-3.2963e+07 -728030
+-3.2367e+07 -562460
+-3.1787e+07 -423460
+-3.1227e+07 -305470
+-3.0688e+07 -199070
+-3.0174e+07 -96961
+-2.9687e+07 606.95
+-2.9227e+07 85073
+-2.8792e+07 144800
+-2.8379e+07 173710
+-2.7988e+07 177450
+-2.7623e+07 171620
+-2.7289e+07 171640
+-2.6992e+07 180460
+-2.6735e+07 183420
+-2.6516e+07 155990
+-2.6328e+07 80920
+-2.6167e+07 -36578
+-2.6029e+07 -167550
+-2.5916e+07 -275190
+-2.5834e+07 -338550
+-2.5783e+07 -368170
+-2.5764e+07 -401530
+-2.5771e+07 -480100
+-2.5801e+07 -622300
+-2.5852e+07 -810400
+-2.5925e+07 -1.0002e+06
+-2.6026e+07 -1.1471e+06
+-2.6158e+07 -1.2329e+06
+-2.6321e+07 -1.2748e+06
+-2.6509e+07 -1.3142e+06
+-2.6713e+07 -1.3908e+06
+-2.6923e+07 -1.5198e+06
+-2.7131e+07 -1.6847e+06
+-2.7334e+07 -1.8475e+06
+-2.7531e+07 -1.9703e+06
+-2.7726e+07 -2.035e+06
+-2.7926e+07 -2.0507e+06
+-2.8139e+07 -2.0474e+06
+-2.8368e+07 -2.0604e+06
+-2.8617e+07 -2.1142e+06
+-2.8881e+07 -2.213e+06
+-2.9149e+07 -2.3411e+06
+-2.9406e+07 -2.4711e+06
+-2.9638e+07 -2.5746e+06
+-2.9832e+07 -2.6319e+06
+-2.9984e+07 -2.6362e+06
+-3.0099e+07 -2.5936e+06
+-3.0184e+07 -2.5188e+06
+1.7764e+07 403870
+1.79e+07 382070
+1.8035e+07 352840
+1.8167e+07 317560
+1.8295e+07 277970
+1.8416e+07 235980
+1.853e+07 193320
+1.8636e+07 151210
+1.8732e+07 110090
+1.8819e+07 69537
+1.8896e+07 28322
+1.8964e+07 -15240
+1.902e+07 -62805
+1.9066e+07 -115470
+1.91e+07 -173340
+1.9122e+07 -235400
+1.9129e+07 -299670
+1.9123e+07 -363620
+1.9102e+07 -424830
+1.9067e+07 -481520
+1.9018e+07 -532880
+1.8956e+07 -579070
+1.8882e+07 -620910
+1.8796e+07 -659370
+1.8699e+07 -695090
+1.8592e+07 -728000
+1.8475e+07 -757370
+1.8351e+07 -781960
+1.8219e+07 -800460
+1.8081e+07 -811810
+1.7939e+07 -815520
+1.7794e+07 -811620
+1.7647e+07 -800560
+1.7501e+07 -782920
+1.7356e+07 -759210
+1.7215e+07 -729700
+1.7079e+07 -694490
+1.6949e+07 -653560
+1.6828e+07 -606980
+1.6717e+07 -555000
+1.6616e+07 -498160
+1.6528e+07 -437220
+1.6454e+07 -373100
+1.6394e+07 -306770
+1.6349e+07 -239170
+1.632e+07 -171160
+1.6307e+07 -103560
+1.631e+07 -37218
+1.633e+07 27018
+1.6366e+07 88220
+1.6419e+07 145420
+1.6487e+07 197670
+1.6571e+07 244070
+1.6668e+07 283820
+1.6779e+07 316240
+1.69e+07 340770
+1.7032e+07 356920
+1.7172e+07 364230
+1.7319e+07 362330
+1.747e+07 350870
+1.7624e+07 329640
+1.7778e+07 298560
+1.793e+07 257750
+1.8077e+07 207540
+1.8218e+07 148430
+1.8349e+07 81104
+1.8469e+07 6362.9
+1.8574e+07 -74919
+1.8663e+07 -161820
+1.8732e+07 -253370
+1.878e+07 -348590
+1.8806e+07 -446450
+1.8805e+07 -545870
+1.8778e+07 -645730
+1.8723e+07 -744840
+1.8637e+07 -841960
+1.852e+07 -935810
+1.8372e+07 -1.025e+06
+1.8192e+07 -1.1082e+06
+1.7979e+07 -1.1838e+06
+1.7736e+07 -1.2502e+06
+1.7463e+07 -1.3055e+06
+1.7161e+07 -1.3472e+06
+1.6834e+07 -1.3725e+06
+1.6486e+07 -1.3777e+06
+1.6121e+07 -1.3581e+06
+1.5744e+07 -1.3073e+06
+1.5363e+07 -1.2177e+06
+1.4985e+07 -1.0793e+06
+1.4618e+07 -880200
+1.427e+07 -606500
+1.3946e+07 -243030
+1.3652e+07 225300
+1.3386e+07 811310
+1.3144e+07 1.5223e+06
+1.2913e+07 2.3563e+06
+1.2679e+07 3.2978e+06
+1.2421e+07 4.3154e+06
+1.2122e+07 5.3616e+06
+1.1769e+07 6.3764e+06
+1.1359e+07 7.2955e+06
+1.09e+07 8.0607e+06
+1.0407e+07 8.6308e+06
+9.9012e+06 8.9882e+06
+9.4045e+06 9.1403e+06
+8.9332e+06 9.1145e+06
+8.497e+06 8.9506e+06
+8.099e+06 8.6918e+06
+7.7371e+06 8.3776e+06
+7.4063e+06 8.0396e+06
+7.1003e+06 7.7008e+06
+6.8135e+06 7.3758e+06
+6.541e+06 7.0723e+06
+6.2793e+06 6.7936e+06
+6.0259e+06 6.5398e+06
+5.7793e+06 6.3095e+06
+5.5384e+06 6.1003e+06
+5.3027e+06 5.9099e+06
+5.0717e+06 5.7357e+06
+4.8454e+06 5.5758e+06
+4.6234e+06 5.4284e+06
+4.4055e+06 5.2921e+06
+4.1917e+06 5.1657e+06
+3.9817e+06 5.0482e+06
+3.7753e+06 4.939e+06
+3.5725e+06 4.8374e+06
+3.373e+06 4.7428e+06
+3.1766e+06 4.655e+06
+2.9832e+06 4.5736e+06
+2.7928e+06 4.4983e+06
+2.605e+06 4.4287e+06
+2.4198e+06 4.3648e+06
+2.2369e+06 4.3062e+06
+2.0564e+06 4.2528e+06
+1.878e+06 4.2045e+06
+1.7016e+06 4.161e+06
+1.5269e+06 4.1223e+06
+1.354e+06 4.0881e+06
+1.1826e+06 4.0584e+06
+1.0125e+06 4.0331e+06
+843590 4.012e+06
+675730 3.9951e+06
+508730 3.9822e+06
+342420 3.9733e+06
+176650 3.9684e+06
+11243 3.9674e+06
+-153960 3.9702e+06
+-319120 3.9767e+06
+-484410 3.9871e+06
+-649970 4.0012e+06
+-815970 4.019e+06
+-982550 4.0404e+06
+-1.1499e+06 4.0656e+06
+-1.3181e+06 4.0945e+06
+-1.4872e+06 4.127e+06
+-1.6576e+06 4.1633e+06
+-1.8292e+06 4.2032e+06
+-2.0022e+06 4.2467e+06
+-2.1766e+06 4.294e+06
+-2.3527e+06 4.3449e+06
+-2.5304e+06 4.3995e+06
+-2.7099e+06 4.4577e+06
+-2.8913e+06 4.5195e+06
+-3.0745e+06 4.585e+06
+-3.2597e+06 4.654e+06
+-3.4469e+06 4.7265e+06
+-3.6362e+06 4.8024e+06
+-3.8275e+06 4.8817e+06
+-4.021e+06 4.9644e+06
+-4.2167e+06 5.0503e+06
+-4.4147e+06 5.1393e+06
+-4.6149e+06 5.2315e+06
+-4.8175e+06 5.3266e+06
+-5.0226e+06 5.4248e+06
+-5.2302e+06 5.5259e+06
+-5.4404e+06 5.6302e+06
+-5.6535e+06 5.7377e+06
+-5.8696e+06 5.8487e+06
+-6.0889e+06 5.9638e+06
+-6.3116e+06 6.0836e+06
+-6.538e+06 6.2092e+06
+-6.7682e+06 6.3421e+06
+-7.0027e+06 6.4843e+06
+-7.2416e+06 6.6386e+06
+-7.4852e+06 6.8087e+06
+-7.7338e+06 6.9993e+06
+-7.9878e+06 7.2169e+06
+-8.2476e+06 7.4695e+06
+-8.5142e+06 7.7674e+06
+-8.789e+06 8.1231e+06
+-9.0747e+06 8.5521e+06
+-9.3759e+06 9.0722e+06
+-9.6999e+06 9.7035e+06
+-1.0058e+07 1.0467e+07
+-1.0467e+07 1.1381e+07
+-1.0951e+07 1.2461e+07
+-1.1538e+07 1.3707e+07
+-1.2264e+07 1.5104e+07
+-1.3165e+07 1.6608e+07
+-1.4272e+07 1.8144e+07
+-1.5601e+07 1.9603e+07
+-1.7144e+07 2.0849e+07
+-1.8862e+07 2.1736e+07
+-2.0686e+07 2.2132e+07
+-2.2523e+07 2.1947e+07
+-2.4274e+07 2.1152e+07
+-2.5851e+07 1.9786e+07
+-2.7194e+07 1.7949e+07
+-2.8279e+07 1.578e+07
+-2.9115e+07 1.3429e+07
+-2.9738e+07 1.1038e+07
+-3.0199e+07 8.7221e+06
+-3.0554e+07 6.5629e+06
+-3.0854e+07 4.61e+06
+-3.1142e+07 2.8852e+06
+-3.1447e+07 1.3896e+06
+-3.179e+07 110460
+-3.218e+07 -972750
+-3.2619e+07 -1.8837e+06
+-3.3104e+07 -2.6465e+06
+-3.3627e+07 -3.2831e+06
+-3.4179e+07 -3.8132e+06
+-3.4748e+07 -4.2532e+06
+-3.5325e+07 -4.6167e+06
+-3.5898e+07 -4.9152e+06
+-3.6458e+07 -5.1576e+06
+-3.6994e+07 -5.3515e+06
+-3.75e+07 -5.5029e+06
+-3.7967e+07 -5.6161e+06
+-3.8389e+07 -5.694e+06
+-3.876e+07 -5.7383e+06
+-3.9077e+07 -5.7499e+06
+-3.9337e+07 -5.7299e+06
+-3.9538e+07 -5.6796e+06
+-3.9682e+07 -5.6011e+06
+-3.9769e+07 -5.4975e+06
+-3.9799e+07 -5.3721e+06
+-3.9773e+07 -5.2283e+06
+-3.9692e+07 -5.0696e+06
+-3.9555e+07 -4.899e+06
+-3.9361e+07 -4.7187e+06
+-3.9112e+07 -4.5298e+06
+-3.8808e+07 -4.3315e+06
+-3.8453e+07 -4.1216e+06
+-3.805e+07 -3.898e+06
+-3.7604e+07 -3.6608e+06
+-3.7121e+07 -3.4134e+06
+-3.6608e+07 -3.163e+06
+-3.6069e+07 -2.9183e+06
+-3.5509e+07 -2.686e+06
+-3.493e+07 -2.4679e+06
+-3.4332e+07 -2.2602e+06
+-3.3717e+07 -2.0561e+06
+-3.3086e+07 -1.8497e+06
+-3.2443e+07 -1.6405e+06
+-3.1792e+07 -1.4343e+06
+-3.1141e+07 -1.2408e+06
+-3.0494e+07 -1.0688e+06
+-2.9856e+07 -920830
+-2.9229e+07 -791650
+-2.8616e+07 -671460
+-2.8021e+07 -552760
+-2.7448e+07 -436580
+-2.6897e+07 -333400
+-2.6366e+07 -256880
+-2.5852e+07 -213760
+-2.5354e+07 -196710
+-2.4872e+07 -186680
+-2.4413e+07 -164950
+-2.3987e+07 -127580
+-2.36e+07 -91491
+-2.3256e+07 -85724
+-2.2952e+07 -131800
+-2.2681e+07 -226190
+-2.2435e+07 -338250
+-2.2211e+07 -427430
+-2.2011e+07 -469500
+-2.184e+07 -474190
+-2.1703e+07 -480950
+-2.1599e+07 -534400
+-2.1526e+07 -655060
+-2.1477e+07 -824780
+-2.1451e+07 -996770
+-2.1448e+07 -1.1237e+06
+-2.1472e+07 -1.1861e+06
+-2.1526e+07 -1.203e+06
+-2.1612e+07 -1.2192e+06
+-2.1724e+07 -1.2786e+06
+-2.1853e+07 -1.3986e+06
+-2.1988e+07 -1.5623e+06
+-2.212e+07 -1.7286e+06
+-2.2248e+07 -1.8553e+06
+-2.2374e+07 -1.9203e+06
+-2.2505e+07 -1.9299e+06
+-2.265e+07 -1.9142e+06
+-2.2815e+07 -1.9107e+06
+-2.3001e+07 -1.9481e+06
+-2.3204e+07 -2.0355e+06
+-2.3415e+07 -2.1611e+06
+-2.3619e+07 -2.2994e+06
+-2.3806e+07 -2.4212e+06
+-2.3967e+07 -2.5032e+06
+-2.4097e+07 -2.5342e+06
+-2.4198e+07 -2.5153e+06
+-2.4277e+07 -2.4576e+06
+1.4943e+07 296620
+1.5076e+07 275830
+1.5205e+07 248880
+1.533e+07 217120
+1.5449e+07 182190
+1.5562e+07 145820
+1.5666e+07 109490
+1.5763e+07 74170
+1.585e+07 40106
+1.5929e+07 6752.2
+1.5999e+07 -27100
+1.606e+07 -63002
+1.611e+07 -102410
+1.615e+07 -146200
+1.6178e+07 -194400
+1.6193e+07 -245990
+1.6195e+07 -299170
+1.6182e+07 -351740
+1.6155e+07 -401610
+1.6115e+07 -447320
+1.6061e+07 -488270
+1.5995e+07 -524720
+1.5918e+07 -557460
+1.5831e+07 -587410
+1.5733e+07 -615130
+1.5626e+07 -640600
+1.5511e+07 -663160
+1.5388e+07 -681730
+1.5259e+07 -695160
+1.5124e+07 -702560
+1.4986e+07 -703520
+1.4846e+07 -698100
+1.4705e+07 -686760
+1.4565e+07 -670070
+1.4428e+07 -648520
+1.4295e+07 -622410
+1.4167e+07 -591830
+1.4046e+07 -556770
+1.3934e+07 -517260
+1.3832e+07 -473500
+1.3741e+07 -425920
+1.3662e+07 -375140
+1.3597e+07 -321940
+1.3546e+07 -267140
+1.3509e+07 -211550
+1.3488e+07 -155920
+1.3483e+07 -100960
+1.3493e+07 -47384
+1.3519e+07 4099.8
+1.356e+07 52733
+1.3616e+07 97740
+1.3687e+07 138360
+1.3772e+07 173870
+1.3868e+07 203650
+1.3976e+07 227180
+1.4093e+07 244000
+1.4218e+07 253730
+1.4349e+07 256050
+1.4485e+07 250660
+1.4623e+07 237360
+1.4761e+07 216020
+1.4896e+07 186650
+1.5028e+07 149440
+1.5152e+07 104740
+1.5267e+07 53058
+1.5371e+07 -4950
+1.5461e+07 -68541
+1.5534e+07 -136910
+1.559e+07 -209210
+1.5626e+07 -284580
+1.564e+07 -362140
+1.5631e+07 -440980
+1.5597e+07 -520190
+1.5538e+07 -598780
+1.5451e+07 -675790
+1.5337e+07 -750160
+1.5194e+07 -820870
+1.5024e+07 -886830
+1.4825e+07 -946920
+1.46e+07 -999970
+1.4348e+07 -1.0447e+06
+1.4071e+07 -1.0795e+06
+1.3773e+07 -1.1026e+06
+1.3454e+07 -1.1117e+06
+1.312e+07 -1.1037e+06
+1.2773e+07 -1.0746e+06
+1.242e+07 -1.0189e+06
+1.2067e+07 -929490
+1.1721e+07 -797180
+1.1389e+07 -610280
+1.1078e+07 -354660
+1.0795e+07 -14031
+1.0544e+07 428900
+1.0326e+07 990340
+1.0134e+07 1.6821e+06
+9.9583e+06 2.507e+06
+9.781e+06 3.4539e+06
+9.5813e+06 4.4935e+06
+9.3389e+06 5.5768e+06
+9.0392e+06 6.6383e+06
+8.678e+06 7.6048e+06
+8.2638e+06 8.4086e+06
+7.8157e+06 9.001e+06
+7.3587e+06 9.3611e+06
+6.9167e+06 9.4982e+06
+6.5076e+06 9.4449e+06
+6.1409e+06 9.2477e+06
+5.818e+06 8.9553e+06
+5.5348e+06 8.6112e+06
+5.2843e+06 8.249e+06
+5.0587e+06 7.8917e+06
+4.8513e+06 7.5532e+06
+4.6566e+06 7.2401e+06
+4.471e+06 6.9545e+06
+4.2918e+06 6.6957e+06
+4.1175e+06 6.4613e+06
+3.9472e+06 6.2487e+06
+3.7805e+06 6.0552e+06
+3.617e+06 5.8782e+06
+3.4566e+06 5.7156e+06
+3.2992e+06 5.5656e+06
+3.1447e+06 5.4268e+06
+2.993e+06 5.2979e+06
+2.8439e+06 5.1782e+06
+2.6973e+06 5.0667e+06
+2.5532e+06 4.963e+06
+2.4114e+06 4.8664e+06
+2.2717e+06 4.7767e+06
+2.1342e+06 4.6935e+06
+1.9986e+06 4.6164e+06
+1.8648e+06 4.5453e+06
+1.7328e+06 4.4798e+06
+1.6024e+06 4.4198e+06
+1.4735e+06 4.3651e+06
+1.3461e+06 4.3156e+06
+1.22e+06 4.2709e+06
+1.0951e+06 4.2311e+06
+971340 4.196e+06
+848570 4.1654e+06
+726690 4.1393e+06
+605610 4.1175e+06
+485210 4.1e+06
+365380 4.0867e+06
+246020 4.0774e+06
+127020 4.0722e+06
+8265.3 4.0709e+06
+-110340 4.0736e+06
+-228920 4.0802e+06
+-347550 4.0906e+06
+-466350 4.1049e+06
+-585410 4.1229e+06
+-704830 4.1448e+06
+-824700 4.1704e+06
+-945120 4.1998e+06
+-1.0662e+06 4.2329e+06
+-1.1879e+06 4.2698e+06
+-1.3104e+06 4.3104e+06
+-1.4338e+06 4.3548e+06
+-1.5581e+06 4.4029e+06
+-1.6833e+06 4.4547e+06
+-1.8096e+06 4.5102e+06
+-1.937e+06 4.5694e+06
+-2.0654e+06 4.6323e+06
+-2.1951e+06 4.6988e+06
+-2.3259e+06 4.7689e+06
+-2.4579e+06 4.8425e+06
+-2.5911e+06 4.9196e+06
+-2.7257e+06 5.0001e+06
+-2.8615e+06 5.0839e+06
+-2.9986e+06 5.171e+06
+-3.137e+06 5.2613e+06
+-3.2769e+06 5.3547e+06
+-3.4182e+06 5.4512e+06
+-3.5611e+06 5.5508e+06
+-3.7056e+06 5.6534e+06
+-3.8518e+06 5.7593e+06
+-3.9998e+06 5.8684e+06
+-4.1499e+06 5.9813e+06
+-4.3021e+06 6.0983e+06
+-4.4568e+06 6.2203e+06
+-4.6141e+06 6.3483e+06
+-4.7743e+06 6.4837e+06
+-4.9376e+06 6.6287e+06
+-5.1045e+06 6.786e+06
+-5.2752e+06 6.9594e+06
+-5.45e+06 7.1536e+06
+-5.6296e+06 7.3752e+06
+-5.8146e+06 7.6324e+06
+-6.006e+06 7.9358e+06
+-6.2058e+06 8.2986e+06
+-6.4167e+06 8.7373e+06
+-6.6438e+06 9.2713e+06
+-6.8945e+06 9.9234e+06
+-7.1808e+06 1.0718e+07
+-7.52e+06 1.1678e+07
+-7.9365e+06 1.2825e+07
+-8.462e+06 1.4164e+07
+-9.1344e+06 1.5684e+07
+-9.9937e+06 1.7343e+07
+-1.1075e+07 1.9059e+07
+-1.2396e+07 2.0707e+07
+-1.3947e+07 2.2128e+07
+-1.5681e+07 2.3147e+07
+-1.7513e+07 2.3605e+07
+-1.9334e+07 2.3393e+07
+-2.1025e+07 2.2483e+07
+-2.2491e+07 2.0931e+07
+-2.367e+07 1.8869e+07
+-2.4548e+07 1.6468e+07
+-2.515e+07 1.3911e+07
+-2.5531e+07 1.1356e+07
+-2.5759e+07 8.9291e+06
+-2.5903e+07 6.7101e+06
+-2.6022e+07 4.7414e+06
+-2.6163e+07 3.0344e+06
+-2.6357e+07 1.579e+06
+-2.6623e+07 352940
+-2.6969e+07 -672370
+-2.7394e+07 -1.5266e+06
+-2.7892e+07 -2.2376e+06
+-2.8455e+07 -2.8302e+06
+-2.907e+07 -3.3253e+06
+-2.9726e+07 -3.7399e+06
+-3.0409e+07 -4.0878e+06
+-3.1108e+07 -4.3798e+06
+-3.1811e+07 -4.6245e+06
+-3.2507e+07 -4.8288e+06
+-3.3188e+07 -4.9979e+06
+-3.3844e+07 -5.1354e+06
+-3.4466e+07 -5.2436e+06
+-3.5049e+07 -5.3233e+06
+-3.5586e+07 -5.3745e+06
+-3.6072e+07 -5.397e+06
+-3.6504e+07 -5.3914e+06
+-3.688e+07 -5.3588e+06
+-3.7197e+07 -5.3018e+06
+-3.7455e+07 -5.2236e+06
+-3.7653e+07 -5.1276e+06
+-3.7788e+07 -5.0176e+06
+-3.7861e+07 -4.8965e+06
+-3.7868e+07 -4.7663e+06
+-3.7811e+07 -4.6274e+06
+-3.769e+07 -4.4782e+06
+-3.7507e+07 -4.3157e+06
+-3.7263e+07 -4.1371e+06
+-3.6963e+07 -3.9415e+06
+-3.6611e+07 -3.7317e+06
+-3.6212e+07 -3.5145e+06
+-3.5771e+07 -3.2987e+06
+-3.5294e+07 -3.092e+06
+-3.4783e+07 -2.8976e+06
+-3.4239e+07 -2.713e+06
+-3.3664e+07 -2.5315e+06
+-3.3057e+07 -2.3466e+06
+-3.2423e+07 -2.1554e+06
+-3.1766e+07 -1.9623e+06
+-3.1095e+07 -1.7761e+06
+-3.0417e+07 -1.6063e+06
+-2.9738e+07 -1.4566e+06
+-2.9061e+07 -1.3229e+06
+-2.839e+07 -1.1955e+06
+-2.7729e+07 -1.0669e+06
+-2.7079e+07 -938250
+-2.6445e+07 -821500
+-2.5825e+07 -732390
+-2.5217e+07 -679140
+-2.4619e+07 -653840
+-2.403e+07 -634390
+-2.3456e+07 -597780
+-2.2906e+07 -536950
+-2.2392e+07 -469040
+-2.1922e+07 -427090
+-2.1498e+07 -438610
+-2.1113e+07 -504890
+-2.0757e+07 -596370
+-2.0422e+07 -669360
+-2.0107e+07 -694370
+-1.9816e+07 -676950
+-1.9558e+07 -655990
+-1.9338e+07 -679250
+-1.9156e+07 -771890
+-1.9007e+07 -918800
+-1.8882e+07 -1.0727e+06
+-1.8777e+07 -1.1829e+06
+-1.8695e+07 -1.2257e+06
+-1.8641e+07 -1.2185e+06
+-1.862e+07 -1.2079e+06
+-1.8632e+07 -1.2423e+06
+-1.8673e+07 -1.3442e+06
+-1.8731e+07 -1.4988e+06
+-1.8794e+07 -1.6643e+06
+-1.8856e+07 -1.7939e+06
+-1.8914e+07 -1.8601e+06
+-1.8976e+07 -1.8652e+06
+-1.9049e+07 -1.8378e+06
+-1.9142e+07 -1.8175e+06
+-1.9257e+07 -1.837e+06
+-1.9392e+07 -1.91e+06
+-1.9541e+07 -2.0285e+06
+-1.9692e+07 -2.1688e+06
+-1.9836e+07 -2.301e+06
+-1.9962e+07 -2.3996e+06
+-2.0068e+07 -2.4498e+06
+-2.0152e+07 -2.4492e+06
+-2.0216e+07 -2.4065e+06
+1.2763e+07 192130
+1.2891e+07 173340
+1.3015e+07 149650
+1.3133e+07 122280
+1.3245e+07 92671
+1.3349e+07 62282
+1.3446e+07 32333
+1.3534e+07 3573.8
+1.3614e+07 -23881
+1.3686e+07 -50579
+1.375e+07 -77601
+1.3805e+07 -106280
+1.3851e+07 -137810
+1.3885e+07 -172890
+1.3909e+07 -211450
+1.3919e+07 -252610
+1.3916e+07 -294810
+1.3899e+07 -336220
+1.3869e+07 -375140
+1.3825e+07 -410420
+1.377e+07 -441650
+1.3703e+07 -469110
+1.3625e+07 -493530
+1.3539e+07 -515710
+1.3443e+07 -536150
+1.3338e+07 -554810
+1.3226e+07 -571140
+1.3107e+07 -584230
+1.2982e+07 -593130
+1.2852e+07 -597110
+1.272e+07 -595840
+1.2586e+07 -589450
+1.2452e+07 -578350
+1.232e+07 -563080
+1.219e+07 -544090
+1.2065e+07 -521680
+1.1946e+07 -495920
+1.1834e+07 -466820
+1.173e+07 -434390
+1.1636e+07 -398760
+1.1553e+07 -360260
+1.1482e+07 -319390
+1.1424e+07 -276790
+1.1379e+07 -233130
+1.1349e+07 -189060
+1.1333e+07 -145240
+1.1332e+07 -102230
+1.1345e+07 -60606
+1.1373e+07 -20947
+1.1415e+07 16160
+1.1471e+07 50119
+1.1539e+07 80350
+1.162e+07 106320
+1.171e+07 127550
+1.181e+07 143650
+1.1918e+07 154300
+1.2032e+07 159230
+1.2149e+07 158200
+1.2269e+07 151030
+1.2389e+07 137590
+1.2508e+07 117850
+1.2622e+07 91883
+1.2729e+07 59893
+1.2828e+07 22234
+1.2917e+07 -20618
+1.2992e+07 -68079
+1.3052e+07 -119500
+1.3096e+07 -174170
+1.3121e+07 -231390
+1.3126e+07 -290410
+1.3109e+07 -350500
+1.307e+07 -410920
+1.3008e+07 -470910
+1.2922e+07 -529680
+1.2811e+07 -586450
+1.2675e+07 -640420
+1.2515e+07 -690760
+1.2331e+07 -736660
+1.2123e+07 -777260
+1.1893e+07 -811670
+1.1641e+07 -838890
+1.1371e+07 -857760
+1.1084e+07 -866830
+1.0783e+07 -864220
+1.0472e+07 -847420
+1.0154e+07 -812960
+9.8339e+06 -756110
+9.5184e+06 -670410
+9.2137e+06 -547240
+8.9267e+06 -375310
+8.6646e+06 -140340
+8.434e+06 174810
+8.2389e+06 589490
+8.0799e+06 1.1233e+06
+7.9517e+06 1.7928e+06
+7.8422e+06 2.6065e+06
+7.7318e+06 3.5586e+06
+7.5962e+06 4.6226e+06
+7.4104e+06 5.7486e+06
+7.156e+06 6.8648e+06
+6.8273e+06 7.8873e+06
+6.4347e+06 8.7363e+06
+6.0024e+06 9.3534e+06
+5.5618e+06 9.7143e+06
+5.142e+06 9.8308e+06
+4.7642e+06 9.7429e+06
+4.438e+06 9.5054e+06
+4.1632e+06 9.1741e+06
+3.9334e+06 8.7968e+06
+3.739e+06 8.4087e+06
+3.5706e+06 8.0326e+06
+3.4202e+06 7.6811e+06
+3.2816e+06 7.3593e+06
+3.1509e+06 7.0679e+06
+3.0254e+06 6.805e+06
+2.9035e+06 6.5677e+06
+2.7844e+06 6.3528e+06
+2.6678e+06 6.1572e+06
+2.5533e+06 5.9783e+06
+2.4408e+06 5.8139e+06
+2.3304e+06 5.6622e+06
+2.2219e+06 5.5216e+06
+2.1153e+06 5.3911e+06
+2.0105e+06 5.2697e+06
+1.9075e+06 5.1568e+06
+1.8061e+06 5.0516e+06
+1.7063e+06 4.9537e+06
+1.608e+06 4.8627e+06
+1.5111e+06 4.7782e+06
+1.4155e+06 4.7e+06
+1.3212e+06 4.6277e+06
+1.228e+06 4.5613e+06
+1.136e+06 4.5003e+06
+1.0449e+06 4.4447e+06
+954820 4.3943e+06
+865600 4.3489e+06
+777180 4.3084e+06
+689500 4.2726e+06
+602470 4.2415e+06
+516040 4.2149e+06
+430130 4.1926e+06
+344670 4.1747e+06
+259580 4.1611e+06
+174800 4.1516e+06
+90263 4.1461e+06
+5895 4.1448e+06
+-78371 4.1474e+06
+-162600 4.1539e+06
+-246860 4.1644e+06
+-331210 4.1788e+06
+-415710 4.197e+06
+-500430 4.219e+06
+-585420 4.2449e+06
+-670730 4.2746e+06
+-756410 4.3081e+06
+-842520 4.3454e+06
+-929100 4.3864e+06
+-1.0162e+06 4.4313e+06
+-1.1038e+06 4.4799e+06
+-1.192e+06 4.5322e+06
+-1.2808e+06 4.5883e+06
+-1.3703e+06 4.6481e+06
+-1.4604e+06 4.7116e+06
+-1.5512e+06 4.7787e+06
+-1.6426e+06 4.8494e+06
+-1.7348e+06 4.9237e+06
+-1.8277e+06 5.0015e+06
+-1.9213e+06 5.0826e+06
+-2.0156e+06 5.1672e+06
+-2.1107e+06 5.255e+06
+-2.2066e+06 5.346e+06
+-2.3034e+06 5.4402e+06
+-2.401e+06 5.5375e+06
+-2.4995e+06 5.6379e+06
+-2.599e+06 5.7415e+06
+-2.6997e+06 5.8483e+06
+-2.8015e+06 5.9586e+06
+-2.9047e+06 6.0727e+06
+-3.0094e+06 6.1911e+06
+-3.1158e+06 6.3147e+06
+-3.2241e+06 6.4443e+06
+-3.3346e+06 6.5817e+06
+-3.4475e+06 6.7288e+06
+-3.5631e+06 6.8886e+06
+-3.6819e+06 7.0646e+06
+-3.8042e+06 7.2619e+06
+-3.9306e+06 7.487e+06
+-4.0619e+06 7.7484e+06
+-4.1992e+06 8.057e+06
+-4.3445e+06 8.4267e+06
+-4.5007e+06 8.875e+06
+-4.6726e+06 9.423e+06
+-4.8681e+06 1.0096e+07
+-5.099e+06 1.0922e+07
+-5.3833e+06 1.1929e+07
+-5.7465e+06 1.3144e+07
+-6.2227e+06 1.4581e+07
+-6.854e+06 1.6232e+07
+-7.6863e+06 1.8058e+07
+-8.7605e+06 1.9969e+07
+-1.0099e+07 2.1826e+07
+-1.1691e+07 2.3438e+07
+-1.3478e+07 2.4594e+07
+-1.5355e+07 2.5102e+07
+-1.7184e+07 2.4832e+07
+-1.8826e+07 2.3759e+07
+-2.0169e+07 2.1967e+07
+-2.1154e+07 1.9627e+07
+-2.1781e+07 1.6957e+07
+-2.2101e+07 1.4172e+07
+-2.2194e+07 1.1453e+07
+-2.2149e+07 8.9295e+06
+-2.2051e+07 6.6757e+06
+-2.1966e+07 4.7217e+06
+-2.1945e+07 3.0644e+06
+-2.2018e+07 1.6806e+06
+-2.22e+07 536520
+-2.2495e+07 -404700
+-2.29e+07 -1.1786e+06
+-2.3405e+07 -1.8168e+06
+-2.3998e+07 -2.3463e+06
+-2.4664e+07 -2.7889e+06
+-2.5391e+07 -3.1619e+06
+-2.6164e+07 -3.4789e+06
+-2.6971e+07 -3.7501e+06
+-2.7799e+07 -3.9837e+06
+-2.8636e+07 -4.1856e+06
+-2.9472e+07 -4.3605e+06
+-3.0297e+07 -4.5113e+06
+-3.1103e+07 -4.6396e+06
+-3.1881e+07 -4.7455e+06
+-3.2623e+07 -4.8284e+06
+-3.3324e+07 -4.8875e+06
+-3.3977e+07 -4.9222e+06
+-3.4578e+07 -4.9331e+06
+-3.5124e+07 -4.9222e+06
+-3.5609e+07 -4.8922e+06
+-3.6032e+07 -4.8465e+06
+-3.639e+07 -4.7887e+06
+-3.668e+07 -4.7215e+06
+-3.6901e+07 -4.6464e+06
+-3.7051e+07 -4.5632e+06
+-3.7129e+07 -4.4697e+06
+-3.7137e+07 -4.3624e+06
+-3.7073e+07 -4.2379e+06
+-3.6941e+07 -4.0946e+06
+-3.6743e+07 -3.9343e+06
+-3.6483e+07 -3.7628e+06
+-3.6165e+07 -3.5883e+06
+-3.5797e+07 -3.4191e+06
+-3.538e+07 -3.2597e+06
+-3.4917e+07 -3.1092e+06
+-3.4408e+07 -2.9619e+06
+-3.3854e+07 -2.8103e+06
+-3.3256e+07 -2.6497e+06
+-3.2622e+07 -2.4818e+06
+-3.1958e+07 -2.3139e+06
+-3.1275e+07 -2.1556e+06
+-3.058e+07 -2.0124e+06
+-2.9878e+07 -1.8818e+06
+-2.917e+07 -1.7555e+06
+-2.8461e+07 -1.6258e+06
+-2.7752e+07 -1.4933e+06
+-2.7048e+07 -1.3701e+06
+-2.6351e+07 -1.2733e+06
+-2.5662e+07 -1.2134e+06
+-2.4978e+07 -1.1834e+06
+-2.4299e+07 -1.1598e+06
+-2.3626e+07 -1.1153e+06
+-2.2967e+07 -1.0383e+06
+-2.2337e+07 -943520
+-2.1747e+07 -866000
+-2.1205e+07 -839470
+-2.0708e+07 -872570
+-2.0246e+07 -940150
+-1.9805e+07 -997560
+-1.938e+07 -1.0095e+06
+-1.8974e+07 -974320
+-1.8597e+07 -927070
+-1.826e+07 -916960
+-1.7968e+07 -974990
+-1.7717e+07 -1.0925e+06
+-1.7497e+07 -1.225e+06
+-1.7299e+07 -1.3197e+06
+-1.7118e+07 -1.3472e+06
+-1.6959e+07 -1.3195e+06
+-1.6831e+07 -1.2819e+06
+-1.6742e+07 -1.2859e+06
+-1.669e+07 -1.3604e+06
+-1.6668e+07 -1.4962e+06
+-1.6663e+07 -1.6533e+06
+-1.6663e+07 -1.7827e+06
+-1.6659e+07 -1.8512e+06
+-1.6655e+07 -1.8552e+06
+-1.6656e+07 -1.8198e+06
+-1.6674e+07 -1.7843e+06
+-1.6715e+07 -1.7845e+06
+-1.6781e+07 -1.8387e+06
+-1.6869e+07 -1.9433e+06
+-1.697e+07 -2.0772e+06
+-1.7074e+07 -2.2113e+06
+-1.7171e+07 -2.3189e+06
+-1.7254e+07 -2.3826e+06
+-1.7319e+07 -2.3974e+06
+-1.7365e+07 -2.3694e+06
+1.0975e+07 92057
+1.1096e+07 75855
+1.1213e+07 55989
+1.1323e+07 33475
+1.1427e+07 9490.1
+1.1523e+07 -14803
+1.1612e+07 -38457
+1.1692e+07 -60920
+1.1765e+07 -82157
+1.183e+07 -102650
+1.1888e+07 -123300
+1.1937e+07 -145170
+1.1978e+07 -169180
+1.2008e+07 -195860
+1.2027e+07 -225100
+1.2034e+07 -256150
+1.2027e+07 -287770
+1.2008e+07 -318510
+1.1976e+07 -347070
+1.1931e+07 -372590
+1.1876e+07 -394820
+1.181e+07 -414040
+1.1734e+07 -430890
+1.165e+07 -446020
+1.1558e+07 -459840
+1.1458e+07 -472320
+1.1351e+07 -483000
+1.1238e+07 -491160
+1.112e+07 -496040
+1.0997e+07 -497070
+1.0873e+07 -494040
+1.0747e+07 -487090
+1.0622e+07 -476600
+1.0498e+07 -463040
+1.0378e+07 -446830
+1.0263e+07 -428210
+1.0153e+07 -407260
+1.005e+07 -383990
+9.9545e+06 -358380
+9.8688e+06 -330530
+9.7935e+06 -300680
+9.7295e+06 -269200
+9.6775e+06 -236580
+9.6383e+06 -203360
+9.6121e+06 -170040
+9.5991e+06 -137140
+9.5996e+06 -105100
+9.6133e+06 -74362
+9.64e+06 -45357
+9.6793e+06 -18516
+9.7305e+06 5730.5
+9.7927e+06 26971
+9.8648e+06 44831
+9.9457e+06 58986
+1.0034e+07 69169
+1.0128e+07 75162
+1.0226e+07 76788
+1.0326e+07 73908
+1.0427e+07 66420
+1.0526e+07 54271
+1.0622e+07 37482
+1.0712e+07 16162
+1.0795e+07 -9477.1
+1.0867e+07 -39118
+1.0928e+07 -72350
+1.0976e+07 -108690
+1.1008e+07 -147600
+1.1024e+07 -188520
+1.1021e+07 -230880
+1.0999e+07 -274100
+1.0958e+07 -317620
+1.0895e+07 -360860
+1.0811e+07 -403230
+1.0705e+07 -444170
+1.0578e+07 -483070
+1.043e+07 -519350
+1.026e+07 -552420
+1.0071e+07 -581670
+9.863e+06 -606490
+9.6374e+06 -626220
+9.396e+06 -640120
+9.1407e+06 -647320
+8.874e+06 -646670
+8.5985e+06 -636690
+8.3176e+06 -615260
+8.0352e+06 -579480
+7.7559e+06 -525180
+7.485e+06 -446590
+7.2287e+06 -335680
+6.994e+06 -181640
+6.7879e+06 29734
+6.6171e+06 316300
+6.4862e+06 699270
+6.3964e+06 1.2017e+06
+6.3423e+06 1.8455e+06
+6.3105e+06 2.6456e+06
+6.2785e+06 3.6031e+06
+6.2165e+06 4.6963e+06
+6.0928e+06 5.8748e+06
+5.8828e+06 7.0596e+06
+5.5778e+06 8.1532e+06
+5.1905e+06 9.0595e+06
+4.7524e+06 9.7076e+06
+4.3041e+06 1.0068e+07
+3.8832e+06 1.0158e+07
+3.515e+06 1.0027e+07
+3.2097e+06 9.7408e+06
+2.9651e+06 9.3641e+06
+2.7717e+06 8.9494e+06
+2.6172e+06 8.5333e+06
+2.4899e+06 8.1376e+06
+2.3806e+06 7.7733e+06
+2.2826e+06 7.4434e+06
+2.1915e+06 7.1469e+06
+2.1047e+06 6.8809e+06
+2.0206e+06 6.6415e+06
+1.9385e+06 6.4249e+06
+1.8579e+06 6.228e+06
+1.7787e+06 6.0479e+06
+1.7009e+06 5.8822e+06
+1.6244e+06 5.7293e+06
+1.5492e+06 5.5876e+06
+1.4753e+06 5.456e+06
+1.4026e+06 5.3335e+06
+1.3311e+06 5.2195e+06
+1.2607e+06 5.1133e+06
+1.1913e+06 5.0145e+06
+1.123e+06 4.9226e+06
+1.0556e+06 4.8373e+06
+989090 4.7583e+06
+923430 4.6854e+06
+858540 4.6182e+06
+794380 4.5566e+06
+730890 4.5004e+06
+668030 4.4495e+06
+605730 4.4036e+06
+543970 4.3626e+06
+482680 4.3264e+06
+421830 4.2949e+06
+361360 4.2679e+06
+301220 4.2454e+06
+241380 4.2273e+06
+181790 4.2134e+06
+122400 4.2037e+06
+63169 4.1982e+06
+4052.5 4.1967e+06
+-54991 4.1993e+06
+-114000 4.2058e+06
+-173020 4.2163e+06
+-232090 4.2307e+06
+-291250 4.249e+06
+-350520 4.2712e+06
+-409960 4.2972e+06
+-469580 4.3271e+06
+-529420 4.3608e+06
+-589510 4.3983e+06
+-649870 4.4396e+06
+-710520 4.4847e+06
+-771490 4.5336e+06
+-832800 4.5863e+06
+-894450 4.6427e+06
+-956460 4.7028e+06
+-1.0188e+06 4.7667e+06
+-1.0816e+06 4.8342e+06
+-1.1447e+06 4.9052e+06
+-1.2083e+06 4.9799e+06
+-1.2722e+06 5.058e+06
+-1.3365e+06 5.1396e+06
+-1.4013e+06 5.2245e+06
+-1.4664e+06 5.3127e+06
+-1.5321e+06 5.4042e+06
+-1.5981e+06 5.4988e+06
+-1.6647e+06 5.5966e+06
+-1.7319e+06 5.6975e+06
+-1.7996e+06 5.8017e+06
+-1.8681e+06 5.9091e+06
+-1.9373e+06 6.0202e+06
+-2.0074e+06 6.1351e+06
+-2.0786e+06 6.2544e+06
+-2.151e+06 6.379e+06
+-2.2247e+06 6.51e+06
+-2.3001e+06 6.6488e+06
+-2.3773e+06 6.7976e+06
+-2.4566e+06 6.9592e+06
+-2.5385e+06 7.1374e+06
+-2.6233e+06 7.3372e+06
+-2.7115e+06 7.5654e+06
+-2.804e+06 7.8305e+06
+-2.9019e+06 8.1439e+06
+-3.007e+06 8.52e+06
+-3.1221e+06 8.9772e+06
+-3.2518e+06 9.5383e+06
+-3.4036e+06 1.0231e+07
+-3.5892e+06 1.1087e+07
+-3.8266e+06 1.2141e+07
+-4.1423e+06 1.3425e+07
+-4.5732e+06 1.4962e+07
+-5.1663e+06 1.6752e+07
+-5.9752e+06 1.8757e+07
+-7.0503e+06 2.0885e+07
+-8.4214e+06 2.2974e+07
+-1.0077e+07 2.4799e+07
+-1.1947e+07 2.6104e+07
+-1.3898e+07 2.6648e+07
+-1.5758e+07 2.628e+07
+-1.7352e+07 2.4981e+07
+-1.8554e+07 2.2875e+07
+-1.9309e+07 2.0194e+07
+-1.9642e+07 1.7209e+07
+-1.9637e+07 1.4178e+07
+-1.9406e+07 1.13e+07
+-1.9064e+07 8.7025e+06
+-1.8709e+07 6.4467e+06
+-1.8415e+07 4.544e+06
+-1.8231e+07 2.9725e+06
+-1.8183e+07 1.6929e+06
+-1.8281e+07 659230
+-1.8523e+07 -173700
+-1.8899e+07 -846720
+-1.9397e+07 -1.3945e+06
+-2.0001e+07 -1.8453e+06
+-2.0696e+07 -2.2213e+06
+-2.1466e+07 -2.5397e+06
+-2.2298e+07 -2.8133e+06
+-2.3177e+07 -3.0517e+06
+-2.4091e+07 -3.2623e+06
+-2.5028e+07 -3.4503e+06
+-2.5979e+07 -3.6196e+06
+-2.6933e+07 -3.7724e+06
+-2.7881e+07 -3.91e+06
+-2.8814e+07 -4.032e+06
+-2.9724e+07 -4.1374e+06
+-3.0603e+07 -4.2249e+06
+-3.1444e+07 -4.2935e+06
+-3.224e+07 -4.343e+06
+-3.2985e+07 -4.3748e+06
+-3.3675e+07 -4.3913e+06
+-3.4305e+07 -4.3954e+06
+-3.487e+07 -4.3902e+06
+-3.5367e+07 -4.378e+06
+-3.5793e+07 -4.3599e+06
+-3.6147e+07 -4.3351e+06
+-3.6425e+07 -4.3011e+06
+-3.6628e+07 -4.2543e+06
+-3.6753e+07 -4.1907e+06
+-3.68e+07 -4.1082e+06
+-3.677e+07 -4.0072e+06
+-3.6666e+07 -3.8921e+06
+-3.6491e+07 -3.7699e+06
+-3.6253e+07 -3.6488e+06
+-3.5954e+07 -3.5345e+06
+-3.5597e+07 -3.428e+06
+-3.5183e+07 -3.3249e+06
+-3.471e+07 -3.2174e+06
+-3.418e+07 -3.0989e+06
+-3.3599e+07 -2.9677e+06
+-3.2976e+07 -2.8291e+06
+-3.2321e+07 -2.692e+06
+-3.1642e+07 -2.5639e+06
+-3.0944e+07 -2.4454e+06
+-3.023e+07 -2.3301e+06
+-2.9499e+07 -2.2101e+06
+-2.8755e+07 -2.0843e+06
+-2.8004e+07 -1.9632e+06
+-2.7252e+07 -1.8643e+06
+-2.6504e+07 -1.8005e+06
+-2.5759e+07 -1.7678e+06
+-2.5015e+07 -1.7437e+06
+-2.427e+07 -1.6983e+06
+-2.3528e+07 -1.6141e+06
+-2.2803e+07 -1.5006e+06
+-2.2111e+07 -1.3919e+06
+-2.1465e+07 -1.3266e+06
+-2.0867e+07 -1.3224e+06
+-2.0309e+07 -1.362e+06
+-1.9776e+07 -1.4031e+06
+-1.9255e+07 -1.4054e+06
+-1.8747e+07 -1.3581e+06
+-1.8261e+07 -1.2883e+06
+-1.7814e+07 -1.2438e+06
+-1.7418e+07 -1.2612e+06
+-1.7074e+07 -1.3413e+06
+-1.6768e+07 -1.4467e+06
+-1.6488e+07 -1.5251e+06
+-1.6221e+07 -1.5415e+06
+-1.5969e+07 -1.4991e+06
+-1.5742e+07 -1.4374e+06
+-1.5554e+07 -1.4085e+06
+-1.5412e+07 -1.4474e+06
+-1.5313e+07 -1.5534e+06
+-1.5244e+07 -1.6927e+06
+-1.5187e+07 -1.8167e+06
+-1.5129e+07 -1.8877e+06
+-1.5067e+07 -1.8947e+06
+-1.5004e+07 -1.8562e+06
+-1.4952e+07 -1.8086e+06
+-1.4924e+07 -1.7887e+06
+-1.4925e+07 -1.8191e+06
+-1.4957e+07 -1.9016e+06
+-1.5014e+07 -2.0199e+06
+-1.5085e+07 -2.1472e+06
+-1.5158e+07 -2.2571e+06
+-1.5222e+07 -2.3305e+06
+-1.527e+07 -2.3596e+06
+-1.5298e+07 -2.3474e+06
+9.4003e+06 -1235
+9.5118e+06 -14579
+9.6186e+06 -30429
+9.7194e+06 -47991
+9.8135e+06 -66370
+9.9004e+06 -84705
+9.9797e+06 -102320
+1.0052e+07 -118830
+1.0117e+07 -134250
+1.0174e+07 -148990
+1.0225e+07 -163720
+1.0268e+07 -179240
+1.0303e+07 -196230
+1.0328e+07 -215030
+1.0342e+07 -235520
+1.0346e+07 -257120
+1.0337e+07 -278880
+1.0317e+07 -299740
+1.0284e+07 -318770
+1.0241e+07 -335370
+1.0187e+07 -349430
+1.0124e+07 -361230
+1.0053e+07 -371290
+9.9741e+06 -380120
+9.8878e+06 -388030
+9.7947e+06 -394990
+9.6954e+06 -400660
+9.5905e+06 -404460
+9.4812e+06 -405840
+9.3687e+06 -404390
+9.2542e+06 -400000
+9.1391e+06 -392810
+9.0249e+06 -383160
+8.9126e+06 -371460
+8.8036e+06 -358050
+8.6989e+06 -343130
+8.5995e+06 -326770
+8.5066e+06 -308970
+8.4211e+06 -289710
+8.3442e+06 -269040
+8.2767e+06 -247120
+8.2195e+06 -224220
+8.1731e+06 -200690
+8.1381e+06 -176910
+8.1147e+06 -153260
+8.1031e+06 -130120
+8.1033e+06 -107800
+8.115e+06 -86616
+8.1379e+06 -66865
+8.1716e+06 -48836
+8.2151e+06 -32807
+8.2678e+06 -19041
+8.3286e+06 -7770.2
+8.3961e+06 808.31
+8.4692e+06 6536.3
+8.5462e+06 9290.3
+8.6257e+06 8976.4
+8.706e+06 5527.4
+8.7852e+06 -1093.8
+8.8618e+06 -10885
+8.9337e+06 -23793
+8.9992e+06 -39698
+9.0563e+06 -58408
+9.1034e+06 -79663
+9.1388e+06 -103140
+9.1609e+06 -128460
+9.1684e+06 -155240
+9.1601e+06 -183060
+9.135e+06 -211510
+9.0924e+06 -240180
+9.0317e+06 -268670
+8.9525e+06 -296560
+8.8548e+06 -323480
+8.7385e+06 -349020
+8.6042e+06 -372780
+8.4523e+06 -394380
+8.2836e+06 -413400
+8.0992e+06 -429450
+7.9003e+06 -442120
+7.6886e+06 -450940
+7.4657e+06 -455390
+7.2336e+06 -454800
+6.9947e+06 -448320
+6.7517e+06 -434740
+6.5077e+06 -412350
+6.2663e+06 -378670
+6.0318e+06 -330140
+5.8093e+06 -261610
+5.6048e+06 -165750
+5.4251e+06 -32358
+5.2775e+06 152490
+5.1693e+06 407070
+5.1062e+06 754210
+5.0902e+06 1.2205e+06
+5.1168e+06 1.8334e+06
+5.1718e+06 2.6161e+06
+5.2295e+06 3.5783e+06
+5.2532e+06 4.7057e+06
+5.2018e+06 5.949e+06
+5.0411e+06 7.2212e+06
+4.7569e+06 8.4074e+06
+4.3641e+06 9.3894e+06
+3.904e+06 1.0078e+07
+3.4302e+06 1.0439e+07
+2.9914e+06 1.0495e+07
+2.6186e+06 1.031e+07
+2.3222e+06 9.9647e+06
+2.0972e+06 9.535e+06
+1.9298e+06 9.0784e+06
+1.8045e+06 8.6321e+06
+1.7076e+06 8.2164e+06
+1.6285e+06 7.8394e+06
+1.56e+06 7.502e+06
+1.4976e+06 7.2012e+06
+1.4386e+06 6.9326e+06
+1.3816e+06 6.6917e+06
+1.326e+06 6.4741e+06
+1.2713e+06 6.2763e+06
+1.2175e+06 6.0953e+06
+1.1646e+06 5.9289e+06
+1.1125e+06 5.7753e+06
+1.0612e+06 5.6328e+06
+1.0108e+06 5.5004e+06
+961190 5.3773e+06
+912350 5.2626e+06
+864260 5.1557e+06
+816890 5.0563e+06
+770180 4.9638e+06
+724110 4.878e+06
+678630 4.7985e+06
+633690 4.725e+06
+589280 4.6574e+06
+545340 4.5954e+06
+501840 4.5388e+06
+458750 4.4875e+06
+416030 4.4413e+06
+373660 4.4e+06
+331600 4.3636e+06
+289810 4.3318e+06
+248270 4.3046e+06
+206960 4.2819e+06
+165830 4.2636e+06
+124860 4.2496e+06
+84031 4.2398e+06
+43302 4.2341e+06
+2651.3 4.2326e+06
+-37948 4.2351e+06
+-78522 4.2417e+06
+-119100 4.2521e+06
+-159690 4.2666e+06
+-200330 4.2849e+06
+-241040 4.3072e+06
+-281840 4.3333e+06
+-322750 4.3633e+06
+-363780 4.3971e+06
+-404950 4.4347e+06
+-446280 4.4762e+06
+-487780 4.5215e+06
+-529450 4.5706e+06
+-571310 4.6234e+06
+-613370 4.68e+06
+-655620 4.7403e+06
+-698080 4.8043e+06
+-740740 4.872e+06
+-783610 4.9433e+06
+-826690 5.0181e+06
+-869970 5.0965e+06
+-913480 5.1782e+06
+-957190 5.2634e+06
+-1.0011e+06 5.3518e+06
+-1.0453e+06 5.4435e+06
+-1.0898e+06 5.5384e+06
+-1.1345e+06 5.6364e+06
+-1.1796e+06 5.7377e+06
+-1.225e+06 5.8422e+06
+-1.2708e+06 5.95e+06
+-1.3172e+06 6.0615e+06
+-1.3641e+06 6.177e+06
+-1.4118e+06 6.297e+06
+-1.4603e+06 6.4224e+06
+-1.5098e+06 6.5542e+06
+-1.5605e+06 6.6941e+06
+-1.6125e+06 6.8441e+06
+-1.6662e+06 7.0072e+06
+-1.7219e+06 7.1871e+06
+-1.7799e+06 7.3891e+06
+-1.8407e+06 7.6197e+06
+-1.905e+06 7.888e+06
+-1.9738e+06 8.2054e+06
+-2.0487e+06 8.587e+06
+-2.1322e+06 9.052e+06
+-2.2284e+06 9.6248e+06
+-2.3441e+06 1.0335e+07
+-2.4903e+06 1.1219e+07
+-2.6846e+06 1.2317e+07
+-2.954e+06 1.3668e+07
+-3.3376e+06 1.5306e+07
+-3.888e+06 1.724e+07
+-4.6684e+06 1.9439e+07
+-5.7416e+06 2.1807e+07
+-7.1494e+06 2.4159e+07
+-8.8837e+06 2.6229e+07
+-1.086e+07 2.7696e+07
+-1.2911e+07 2.8263e+07
+-1.4815e+07 2.7746e+07
+-1.6358e+07 2.6141e+07
+-1.7392e+07 2.3634e+07
+-1.7876e+07 2.0535e+07
+-1.7872e+07 1.7191e+07
+-1.7508e+07 1.3903e+07
+-1.6933e+07 1.0881e+07
+-1.629e+07 8.2431e+06
+-1.5686e+07 6.0267e+06
+-1.5198e+07 4.2167e+06
+-1.4867e+07 2.7679e+06
+-1.4711e+07 1.6231e+06
+-1.4732e+07 724140
+-1.492e+07 18309
+-1.526e+07 -539270
+-1.5734e+07 -984960
+-1.6325e+07 -1.3472e+06
+-1.7016e+07 -1.6479e+06
+-1.7791e+07 -1.9031e+06
+-1.8637e+07 -2.1249e+06
+-1.954e+07 -2.3219e+06
+-2.0488e+07 -2.5003e+06
+-2.147e+07 -2.6648e+06
+-2.2478e+07 -2.8183e+06
+-2.3501e+07 -2.9629e+06
+-2.4531e+07 -3.0992e+06
+-2.5559e+07 -3.2268e+06
+-2.6577e+07 -3.3446e+06
+-2.7577e+07 -3.4511e+06
+-2.855e+07 -3.5451e+06
+-2.9488e+07 -3.6259e+06
+-3.0384e+07 -3.6944e+06
+-3.1233e+07 -3.7523e+06
+-3.2027e+07 -3.8021e+06
+-3.2762e+07 -3.8463e+06
+-3.3434e+07 -3.8866e+06
+-3.4039e+07 -3.9237e+06
+-3.4574e+07 -3.9562e+06
+-3.5036e+07 -3.9818e+06
+-3.5422e+07 -3.9968e+06
+-3.5728e+07 -3.9973e+06
+-3.5952e+07 -3.9803e+06
+-3.6093e+07 -3.9452e+06
+-3.6151e+07 -3.894e+06
+-3.613e+07 -3.8323e+06
+-3.6036e+07 -3.7673e+06
+-3.5873e+07 -3.7057e+06
+-3.5644e+07 -3.6506e+06
+-3.5348e+07 -3.5994e+06
+-3.4985e+07 -3.5446e+06
+-3.4554e+07 -3.4774e+06
+-3.4061e+07 -3.3929e+06
+-3.3513e+07 -3.2931e+06
+-3.2922e+07 -3.1866e+06
+-3.2297e+07 -3.0828e+06
+-3.164e+07 -2.9861e+06
+-3.0953e+07 -2.8926e+06
+-3.0235e+07 -2.7942e+06
+-2.9489e+07 -2.6869e+06
+-2.8723e+07 -2.5774e+06
+-2.7948e+07 -2.482e+06
+-2.7173e+07 -2.4162e+06
+-2.6401e+07 -2.3815e+06
+-2.5627e+07 -2.3594e+06
+-2.4846e+07 -2.3194e+06
+-2.4058e+07 -2.2379e+06
+-2.3271e+07 -2.1164e+06
+-2.2507e+07 -1.9842e+06
+-2.1782e+07 -1.8826e+06
+-2.1107e+07 -1.8387e+06
+-2.0475e+07 -1.8466e+06
+-1.9871e+07 -1.87e+06
+-1.9278e+07 -1.8657e+06
+-1.8689e+07 -1.8122e+06
+-1.8117e+07 -1.7253e+06
+-1.7579e+07 -1.6473e+06
+-1.7096e+07 -1.6196e+06
+-1.6673e+07 -1.6543e+06
+-1.6299e+07 -1.7256e+06
+-1.5954e+07 -1.7857e+06
+-1.562e+07 -1.7944e+06
+-1.5294e+07 -1.744e+06
+-1.4984e+07 -1.6638e+06
+-1.471e+07 -1.6023e+06
+-1.4487e+07 -1.5996e+06
+-1.4318e+07 -1.6657e+06
+-1.4192e+07 -1.7765e+06
+-1.4089e+07 -1.8885e+06
+-1.3989e+07 -1.9607e+06
+-1.3882e+07 -1.9742e+06
+-1.3768e+07 -1.9379e+06
+-1.366e+07 -1.8818e+06
+-1.3573e+07 -1.8414e+06
+-1.3521e+07 -1.8433e+06
+-1.3509e+07 -1.896e+06
+-1.3531e+07 -1.9897e+06
+-1.3578e+07 -2.1026e+06
+-1.3634e+07 -2.2096e+06
+-1.3684e+07 -2.2902e+06
+-1.3719e+07 -2.3333e+06
+-1.3732e+07 -2.338e+06
+7.9179e+06 -85009
+8.0166e+06 -95502
+8.1109e+06 -107450
+8.1996e+06 -120280
+8.2819e+06 -133370
+8.3576e+06 -146140
+8.4264e+06 -158150
+8.4884e+06 -169180
+8.5439e+06 -179280
+8.5931e+06 -188760
+8.6357e+06 -198110
+8.6715e+06 -207870
+8.6997e+06 -218480
+8.7195e+06 -230140
+8.73e+06 -242750
+8.7303e+06 -255850
+8.7201e+06 -268800
+8.6993e+06 -280860
+8.6681e+06 -291430
+8.6273e+06 -300170
+8.5776e+06 -307060
+8.5199e+06 -312370
+8.4549e+06 -316490
+8.3832e+06 -319840
+8.3053e+06 -322620
+8.2214e+06 -324800
+8.1323e+06 -326130
+8.0385e+06 -326200
+7.941e+06 -324630
+7.8408e+06 -321170
+7.7391e+06 -315770
+7.6372e+06 -308590
+7.5362e+06 -299910
+7.4373e+06 -290060
+7.3413e+06 -279300
+7.2494e+06 -267810
+7.1622e+06 -255620
+7.0808e+06 -242730
+7.0059e+06 -229120
+6.9385e+06 -214780
+6.8793e+06 -199840
+6.8289e+06 -184430
+6.7879e+06 -168810
+6.7566e+06 -153200
+6.7352e+06 -137880
+6.7238e+06 -123070
+6.7222e+06 -108980
+6.7302e+06 -95812
+6.7474e+06 -83735
+6.7732e+06 -72915
+6.807e+06 -63503
+6.8479e+06 -55634
+6.8949e+06 -49424
+6.9469e+06 -44962
+7.0027e+06 -42317
+7.0609e+06 -41536
+7.1202e+06 -42648
+7.179e+06 -45666
+7.2359e+06 -50581
+7.2893e+06 -57359
+7.3376e+06 -65931
+7.3792e+06 -76187
+7.4126e+06 -87975
+7.4365e+06 -101100
+7.4493e+06 -115350
+7.45e+06 -130450
+7.4375e+06 -146160
+7.4111e+06 -162220
+7.3699e+06 -178360
+7.3137e+06 -194330
+7.2421e+06 -209890
+7.155e+06 -224800
+7.0526e+06 -238830
+6.9353e+06 -251750
+6.8035e+06 -263330
+6.6579e+06 -273340
+6.4996e+06 -281540
+6.3296e+06 -287720
+6.1493e+06 -291590
+5.9602e+06 -292880
+5.7639e+06 -291220
+5.5624e+06 -286140
+5.3579e+06 -276990
+5.1527e+06 -262810
+4.9497e+06 -242240
+4.7524e+06 -213230
+4.5645e+06 -172760
+4.391e+06 -116370
+4.2376e+06 -37533
+4.1112e+06 73190
+4.0195e+06 229110
+3.9708e+06 448480
+3.9722e+06 755330
+4.0279e+06 1.1794e+06
+4.1354e+06 1.7544e+06
+4.2813e+06 2.5127e+06
+4.4371e+06 3.4758e+06
+4.5589e+06 4.6401e+06
+4.5935e+06 5.9612e+06
+4.4922e+06 7.3439e+06
+4.2315e+06 8.6508e+06
+3.8273e+06 9.7331e+06
+3.3332e+06 1.0476e+07
+2.821e+06 1.0838e+07
+2.3536e+06 1.0849e+07
+1.9686e+06 1.0597e+07
+1.6759e+06 1.0182e+07
+1.4656e+06 9.6918e+06
+1.3191e+06 9.189e+06
+1.2171e+06 8.711e+06
+1.1437e+06 8.2751e+06
+1.0872e+06 7.8862e+06
+1.0404e+06 7.542e+06
+998740 7.2376e+06
+959740 6.9671e+06
+922140 6.725e+06
+885350 6.5068e+06
+849140 6.3085e+06
+813430 6.1271e+06
+778210 5.9602e+06
+743510 5.8061e+06
+709340 5.6631e+06
+675700 5.5303e+06
+642580 5.4067e+06
+609980 5.2915e+06
+577870 5.1842e+06
+546240 5.0844e+06
+515050 4.9915e+06
+484270 4.9053e+06
+453890 4.8255e+06
+423870 4.7517e+06
+394190 4.6838e+06
+364820 4.6215e+06
+335740 4.5647e+06
+306930 4.5131e+06
+278360 4.4667e+06
+250010 4.4252e+06
+221860 4.3886e+06
+193900 4.3567e+06
+166100 4.3293e+06
+138430 4.3065e+06
+110900 4.2881e+06
+83461 4.274e+06
+56114 4.2641e+06
+28835 4.2584e+06
+1609 4.2568e+06
+-25582 4.2593e+06
+-52753 4.2659e+06
+-79920 4.2763e+06
+-107100 4.2908e+06
+-134300 4.3092e+06
+-161540 4.3315e+06
+-188830 4.3576e+06
+-216180 4.3876e+06
+-243600 4.4215e+06
+-271110 4.4593e+06
+-298700 4.5008e+06
+-326390 4.5462e+06
+-354180 4.5954e+06
+-382070 4.6483e+06
+-410080 4.705e+06
+-438190 4.7654e+06
+-466410 4.8296e+06
+-494750 4.8973e+06
+-523200 4.9687e+06
+-551750 5.0437e+06
+-580420 5.1221e+06
+-609200 5.204e+06
+-638090 5.2892e+06
+-667110 5.3778e+06
+-696250 5.4696e+06
+-725530 5.5646e+06
+-754970 5.6628e+06
+-784600 5.7642e+06
+-814450 5.8689e+06
+-844560 5.9771e+06
+-874990 6.0888e+06
+-905810 6.2047e+06
+-937100 6.3251e+06
+-968970 6.451e+06
+-1.0015e+06 6.5835e+06
+-1.0349e+06 6.7242e+06
+-1.0693e+06 6.8751e+06
+-1.105e+06 7.0393e+06
+-1.1421e+06 7.2206e+06
+-1.1809e+06 7.4241e+06
+-1.2219e+06 7.6567e+06
+-1.2657e+06 7.9274e+06
+-1.313e+06 8.2481e+06
+-1.365e+06 8.6341e+06
+-1.4239e+06 9.1055e+06
+-1.4929e+06 9.6879e+06
+-1.5779e+06 1.0413e+07
+-1.6886e+06 1.1322e+07
+-1.8415e+06 1.2459e+07
+-2.0631e+06 1.3873e+07
+-2.3938e+06 1.5608e+07
+-2.8913e+06 1.7689e+07
+-3.6294e+06 2.0095e+07
+-4.687e+06 2.2726e+07
+-6.1236e+06 2.538e+07
+-7.9399e+06 2.7733e+07
+-1.0038e+07 2.9387e+07
+-1.2207e+07 2.9963e+07
+-1.4164e+07 2.9234e+07
+-1.5638e+07 2.7224e+07
+-1.6466e+07 2.421e+07
+-1.6633e+07 2.0614e+07
+-1.6253e+07 1.6873e+07
+-1.5511e+07 1.333e+07
+-1.4598e+07 1.0198e+07
+-1.3676e+07 7.5673e+06
+-1.2859e+07 5.4393e+06
+-1.2213e+07 3.7651e+06
+-1.1769e+07 2.473e+06
+-1.1532e+07 1.4876e+06
+-1.1491e+07 739870
+-1.1629e+07 171490
+-1.1924e+07 -264430
+-1.2357e+07 -604250
+-1.2907e+07 -875440
+-1.3559e+07 -1.0983e+06
+-1.4296e+07 -1.2876e+06
+-1.5106e+07 -1.454e+06
+-1.5977e+07 -1.6049e+06
+-1.6899e+07 -1.7455e+06
+-1.7863e+07 -1.8797e+06
+-1.8859e+07 -2.0098e+06
+-1.9882e+07 -2.1374e+06
+-2.0922e+07 -2.263e+06
+-2.1973e+07 -2.3863e+06
+-2.3025e+07 -2.5064e+06
+-2.4072e+07 -2.6218e+06
+-2.5105e+07 -2.7313e+06
+-2.6115e+07 -2.8341e+06
+-2.7096e+07 -2.9306e+06
+-2.8039e+07 -3.022e+06
+-2.8938e+07 -3.1102e+06
+-2.9788e+07 -3.1969e+06
+-3.0584e+07 -3.2833e+06
+-3.1322e+07 -3.3695e+06
+-3.1999e+07 -3.4543e+06
+-3.2609e+07 -3.5351e+06
+-3.3148e+07 -3.6089e+06
+-3.3612e+07 -3.6719e+06
+-3.3996e+07 -3.7208e+06
+-3.4296e+07 -3.7532e+06
+-3.4511e+07 -3.7693e+06
+-3.4644e+07 -3.7721e+06
+-3.47e+07 -3.7677e+06
+-3.4682e+07 -3.7633e+06
+-3.4594e+07 -3.7638e+06
+-3.4435e+07 -3.7687e+06
+-3.4203e+07 -3.7715e+06
+-3.3899e+07 -3.7616e+06
+-3.3524e+07 -3.7308e+06
+-3.3087e+07 -3.6779e+06
+-3.2596e+07 -3.6102e+06
+-3.206e+07 -3.5394e+06
+-3.1482e+07 -3.4739e+06
+-3.0861e+07 -3.413e+06
+-3.0194e+07 -3.348e+06
+-2.9485e+07 -3.2705e+06
+-2.8745e+07 -3.1817e+06
+-2.7987e+07 -3.0952e+06
+-2.7227e+07 -3.0293e+06
+-2.6468e+07 -2.9928e+06
+-2.5708e+07 -2.9742e+06
+-2.4934e+07 -2.9449e+06
+-2.4142e+07 -2.876e+06
+-2.3339e+07 -2.7583e+06
+-2.2542e+07 -2.6128e+06
+-2.1777e+07 -2.4804e+06
+-2.1058e+07 -2.3972e+06
+-2.0384e+07 -2.371e+06
+-1.974e+07 -2.3755e+06
+-1.9105e+07 -2.3668e+06
+-1.8468e+07 -2.313e+06
+-1.784e+07 -2.215e+06
+-1.7242e+07 -2.1065e+06
+-1.6698e+07 -2.0313e+06
+-1.622e+07 -2.0143e+06
+-1.58e+07 -2.0449e+06
+-1.5413e+07 -2.0838e+06
+-1.5037e+07 -2.0876e+06
+-1.466e+07 -2.0362e+06
+-1.4292e+07 -1.9443e+06
+-1.3953e+07 -1.853e+06
+-1.3667e+07 -1.8053e+06
+-1.3443e+07 -1.8229e+06
+-1.3273e+07 -1.8955e+06
+-1.3137e+07 -1.9879e+06
+-1.3009e+07 -2.0587e+06
+-1.2873e+07 -2.0805e+06
+-1.2727e+07 -2.0507e+06
+-1.2582e+07 -1.9894e+06
+-1.2457e+07 -1.9291e+06
+-1.2368e+07 -1.8992e+06
+-1.2325e+07 -1.9159e+06
+-1.2326e+07 -1.9781e+06
+-1.2358e+07 -2.0704e+06
+-1.2404e+07 -2.1703e+06
+-1.2448e+07 -2.2564e+06
+-1.2476e+07 -2.3134e+06
+-1.2485e+07 -2.3353e+06
+6.4616e+06 -156590
+6.5446e+06 -164450
+6.6235e+06 -172860
+6.6976e+06 -181450
+6.766e+06 -189820
+6.8286e+06 -197650
+6.8852e+06 -204700
+6.9359e+06 -210890
+6.981e+06 -216290
+7.0204e+06 -221140
+7.0542e+06 -225750
+7.0821e+06 -230460
+7.1034e+06 -235520
+7.1176e+06 -241020
+7.1238e+06 -246850
+7.1215e+06 -252690
+7.1103e+06 -258130
+7.0903e+06 -262740
+7.0616e+06 -266170
+7.0249e+06 -268290
+6.9809e+06 -269160
+6.9302e+06 -269020
+6.8736e+06 -268200
+6.8114e+06 -266960
+6.744e+06 -265450
+6.6718e+06 -263660
+6.5953e+06 -261410
+6.515e+06 -258430
+6.4318e+06 -254500
+6.3464e+06 -249470
+6.2601e+06 -243380
+6.1737e+06 -236370
+6.0883e+06 -228660
+6.0047e+06 -220520
+5.9239e+06 -212140
+5.8464e+06 -203620
+5.773e+06 -195010
+5.7043e+06 -186280
+5.6411e+06 -177400
+5.584e+06 -168360
+5.5337e+06 -159200
+5.4905e+06 -150000
+5.4549e+06 -140880
+5.4271e+06 -131970
+5.4073e+06 -123410
+5.3954e+06 -115320
+5.3912e+06 -107810
+5.3945e+06 -100970
+5.4048e+06 -94881
+5.4217e+06 -89601
+5.4445e+06 -85179
+5.4725e+06 -81650
+5.5047e+06 -79036
+5.5402e+06 -77347
+5.5781e+06 -76581
+5.6171e+06 -76730
+5.6561e+06 -77777
+5.6939e+06 -79697
+5.7292e+06 -82456
+5.7608e+06 -86004
+5.7874e+06 -90274
+5.8078e+06 -95180
+5.8208e+06 -100620
+5.8253e+06 -106470
+5.8204e+06 -112610
+5.8051e+06 -118890
+5.7789e+06 -125190
+5.741e+06 -131390
+5.6913e+06 -137350
+5.6295e+06 -142960
+5.5554e+06 -148130
+5.4693e+06 -152740
+5.3715e+06 -156710
+5.2623e+06 -159940
+5.1425e+06 -162340
+5.0126e+06 -163810
+4.8738e+06 -164250
+4.7269e+06 -163560
+4.5733e+06 -161600
+4.4142e+06 -158200
+4.2512e+06 -153130
+4.086e+06 -146060
+3.9203e+06 -136510
+3.7564e+06 -123770
+3.5965e+06 -106750
+3.4438e+06 -83826
+3.3016e+06 -52524
+3.1745e+06 -9098.3
+3.0678e+06 52089
+2.9885e+06 139440
+2.9446e+06 265260
+2.9455e+06 447220
+3.0006e+06 709790
+3.1172e+06 1.0853e+06
+3.2965e+06 1.6132e+06
+3.5282e+06 2.3363e+06
+3.784e+06 3.2912e+06
+4.0135e+06 4.4902e+06
+4.1489e+06 5.8991e+06
+4.1219e+06 7.4174e+06
+3.8929e+06 8.8798e+06
+3.476e+06 1.0094e+07
+2.9407e+06 1.091e+07
+2.3823e+06 1.127e+07
+1.8824e+06 1.1226e+07
+1.4851e+06 1.0892e+07
+1.1972e+06 1.0394e+07
+1.0023e+06 9.8351e+06
+875690 9.2832e+06
+794150 8.7732e+06
+739930 8.318e+06
+701090 7.9182e+06
+670380 7.5684e+06
+643690 7.2611e+06
+618880 6.9892e+06
+594940 6.7466e+06
+571410 6.5279e+06
+548160 6.3294e+06
+525170 6.1477e+06
+502440 5.9806e+06
+480010 5.8262e+06
+457900 5.683e+06
+436130 5.5498e+06
+414690 5.4259e+06
+393600 5.3104e+06
+372820 5.2029e+06
+352360 5.1027e+06
+332190 5.0096e+06
+312300 4.9232e+06
+292660 4.8431e+06
+273270 4.7691e+06
+254100 4.701e+06
+235140 4.6385e+06
+216370 4.5815e+06
+197770 4.5298e+06
+179330 4.4832e+06
+161050 4.4417e+06
+142890 4.4049e+06
+124850 4.3729e+06
+106920 4.3455e+06
+89078 4.3226e+06
+71319 4.3041e+06
+53628 4.2899e+06
+35994 4.28e+06
+18406 4.2743e+06
+852.32 4.2727e+06
+-16677 4.2751e+06
+-34193 4.2816e+06
+-51705 4.2921e+06
+-69222 4.3066e+06
+-86754 4.325e+06
+-104310 4.3473e+06
+-121890 4.3735e+06
+-139510 4.4035e+06
+-157180 4.4375e+06
+-174890 4.4752e+06
+-192660 4.5168e+06
+-210490 4.5623e+06
+-228380 4.6115e+06
+-246330 4.6645e+06
+-264340 4.7213e+06
+-282430 4.7817e+06
+-300580 4.8459e+06
+-318790 4.9138e+06
+-337070 4.9852e+06
+-355410 5.0602e+06
+-373820 5.1387e+06
+-392290 5.2206e+06
+-410820 5.3059e+06
+-429420 5.3946e+06
+-448090 5.4864e+06
+-466850 5.5815e+06
+-485700 5.6798e+06
+-504660 5.7814e+06
+-523750 5.8862e+06
+-543010 5.9945e+06
+-562470 6.1064e+06
+-582180 6.2225e+06
+-602190 6.3433e+06
+-622590 6.4695e+06
+-643460 6.6024e+06
+-664900 6.7436e+06
+-687050 6.8952e+06
+-710050 7.0602e+06
+-734080 7.2424e+06
+-759390 7.4471e+06
+-786250 7.6812e+06
+-815070 7.9537e+06
+-846410 8.2767e+06
+-881160 8.666e+06
+-920780 9.142e+06
+-967780 9.7316e+06
+-1.0266e+06 1.0469e+07
+-1.1055e+06 1.1397e+07
+-1.2185e+06 1.2566e+07
+-1.3901e+06 1.4036e+07
+-1.6606e+06 1.5863e+07
+-2.0907e+06 1.8088e+07
+-2.7645e+06 2.0706e+07
+-3.7797e+06 2.3625e+07
+-5.2203e+06 2.6621e+07
+-7.1043e+06 2.9308e+07
+-9.3238e+06 3.1184e+07
+-1.1617e+07 3.1755e+07
+-1.3619e+07 3.0737e+07
+-1.4993e+07 2.8204e+07
+-1.5564e+07 2.4563e+07
+-1.5365e+07 2.0394e+07
+-1.4584e+07 1.6237e+07
+-1.3472e+07 1.2468e+07
+-1.226e+07 9.281e+06
+-1.112e+07 6.7176e+06
+-1.0155e+07 4.7313e+06
+-9.4142e+06 3.2329e+06
+-8.9088e+06 2.1235e+06
+-8.6273e+06 1.3116e+06
+-8.5473e+06 720360
+-8.6431e+06 289020
+-8.8897e+06 -28895
+-9.2646e+06 -267870
+-9.7487e+06 -453040
+-1.0326e+07 -602440
+-1.0983e+07 -728870
+-1.1709e+07 -841280
+-1.2494e+07 -945900
+-1.333e+07 -1.047e+06
+-1.4211e+07 -1.1475e+06
+-1.5129e+07 -1.2493e+06
+-1.608e+07 -1.3538e+06
+-1.7056e+07 -1.4613e+06
+-1.8052e+07 -1.5719e+06
+-1.9061e+07 -1.685e+06
+-2.0077e+07 -1.7995e+06
+-2.109e+07 -1.9144e+06
+-2.2094e+07 -2.029e+06
+-2.3081e+07 -2.1432e+06
+-2.4044e+07 -2.2579e+06
+-2.4977e+07 -2.3742e+06
+-2.5874e+07 -2.4934e+06
+-2.6731e+07 -2.616e+06
+-2.7542e+07 -2.7419e+06
+-2.8304e+07 -2.8697e+06
+-2.9012e+07 -2.9975e+06
+-2.9661e+07 -3.1225e+06
+-3.0243e+07 -3.2416e+06
+-3.0754e+07 -3.3511e+06
+-3.1188e+07 -3.4477e+06
+-3.1541e+07 -3.529e+06
+-3.1816e+07 -3.5957e+06
+-3.2014e+07 -3.6521e+06
+-3.214e+07 -3.7051e+06
+-3.2196e+07 -3.7615e+06
+-3.2183e+07 -3.823e+06
+-3.2097e+07 -3.8842e+06
+-3.1937e+07 -3.9338e+06
+-3.1705e+07 -3.9602e+06
+-3.1405e+07 -3.9591e+06
+-3.1045e+07 -3.9365e+06
+-3.0631e+07 -3.9061e+06
+-3.0166e+07 -3.8802e+06
+-2.9647e+07 -3.8609e+06
+-2.9072e+07 -3.8391e+06
+-2.8443e+07 -3.8009e+06
+-2.7773e+07 -3.7407e+06
+-2.7079e+07 -3.6682e+06
+-2.6378e+07 -3.6042e+06
+-2.5678e+07 -3.5661e+06
+-2.4975e+07 -3.5522e+06
+-2.4255e+07 -3.5384e+06
+-2.3508e+07 -3.4907e+06
+-2.2735e+07 -3.3884e+06
+-2.1954e+07 -3.2409e+06
+-2.1194e+07 -3.0856e+06
+-2.0472e+07 -2.9664e+06
+-1.9795e+07 -2.9062e+06
+-1.9147e+07 -2.8912e+06
+-1.8507e+07 -2.8801e+06
+-1.7862e+07 -2.8306e+06
+-1.7217e+07 -2.7276e+06
+-1.6596e+07 -2.5928e+06
+-1.6026e+07 -2.4706e+06
+-1.5525e+07 -2.3987e+06
+-1.5085e+07 -2.3842e+06
+-1.4682e+07 -2.3995e+06
+-1.429e+07 -2.4003e+06
+-1.3891e+07 -2.3533e+06
+-1.3492e+07 -2.2566e+06
+-1.3116e+07 -2.1398e+06
+-1.2791e+07 -2.0467e+06
+-1.2532e+07 -2.0107e+06
+-1.2336e+07 -2.0373e+06
+-1.2183e+07 -2.1028e+06
+-1.2044e+07 -2.168e+06
+-1.19e+07 -2.1979e+06
+-1.1743e+07 -2.1768e+06
+-1.1584e+07 -2.1135e+06
+-1.1443e+07 -2.0347e+06
+-1.1338e+07 -1.9721e+06
+-1.1281e+07 -1.9496e+06
+-1.1271e+07 -1.9757e+06
+-1.1298e+07 -2.043e+06
+-1.1344e+07 -2.1326e+06
+-1.139e+07 -2.2218e+06
+-1.1424e+07 -2.2912e+06
+-1.144e+07 -2.329e+06
+2.4293e+06 -185630
+2.4611e+06 -192290
+2.4911e+06 -199150
+2.5192e+06 -205900
+2.5449e+06 -212260
+2.5682e+06 -217970
+2.5891e+06 -222900
+2.6076e+06 -227000
+2.6236e+06 -230380
+2.6374e+06 -233220
+2.6488e+06 -235790
+2.6578e+06 -238350
+2.6642e+06 -241070
+2.6676e+06 -244000
+2.668e+06 -247040
+2.6651e+06 -249930
+2.6587e+06 -252340
+2.649e+06 -253950
+2.636e+06 -254540
+2.6201e+06 -254020
+2.6013e+06 -252500
+2.5801e+06 -250210
+2.5567e+06 -247410
+2.5311e+06 -244360
+2.5037e+06 -241170
+2.4744e+06 -237820
+2.4436e+06 -234170
+2.4114e+06 -230030
+2.3782e+06 -225210
+2.3443e+06 -219650
+2.3101e+06 -213370
+2.276e+06 -206510
+2.2424e+06 -199280
+2.2097e+06 -191900
+2.178e+06 -184520
+2.1477e+06 -177230
+2.1189e+06 -170060
+2.0919e+06 -162970
+2.0669e+06 -155950
+2.0442e+06 -148970
+2.0238e+06 -142040
+2.0061e+06 -135210
+1.991e+06 -128560
+1.9787e+06 -122170
+1.9692e+06 -116120
+1.9623e+06 -110500
+1.9581e+06 -105370
+1.9563e+06 -100780
+1.9567e+06 -96767
+1.9592e+06 -93359
+1.9635e+06 -90567
+1.9691e+06 -88389
+1.9759e+06 -86816
+1.9834e+06 -85830
+1.9912e+06 -85409
+1.999e+06 -85526
+2.0062e+06 -86154
+2.0124e+06 -87259
+2.0173e+06 -88802
+2.0204e+06 -90736
+2.0212e+06 -93003
+2.0193e+06 -95536
+2.0145e+06 -98257
+2.0062e+06 -101080
+1.9944e+06 -103930
+1.9787e+06 -106710
+1.959e+06 -109350
+1.9352e+06 -111780
+1.9072e+06 -113930
+1.8751e+06 -115740
+1.8389e+06 -117170
+1.7989e+06 -118150
+1.7551e+06 -118660
+1.7079e+06 -118640
+1.6576e+06 -118050
+1.6044e+06 -116840
+1.5489e+06 -114960
+1.4914e+06 -112350
+1.4324e+06 -108900
+1.3725e+06 -104490
+1.3123e+06 -98934
+1.2524e+06 -91965
+1.1934e+06 -83169
+1.1363e+06 -71928
+1.0821e+06 -57304
+1.0318e+06 -37867
+987030 -11432
+949830 25341
+922840 77534
+909620 152840
+914820 262730
+944310 424050
+1.0049e+06 660790
+1.1036e+06 1.0057e+06
+1.2452e+06 1.5009e+06
+1.4284e+06 2.195e+06
+1.6404e+06 3.1345e+06
+1.8508e+06 4.3452e+06
+2.011e+06 5.8049e+06
+2.0642e+06 7.4143e+06
+1.9702e+06 8.9899e+06
+1.7323e+06 1.0305e+07
+1.4034e+06 1.1174e+07
+1.0591e+06 1.1533e+07
+760840 1.1446e+07
+536900 1.1054e+07
+386320 1.0502e+07
+293260 9.9025e+06
+239040 9.3232e+06
+208310 8.7967e+06
+190560 8.3325e+06
+179450 7.928e+06
+171450 7.5759e+06
+164780 7.2677e+06
+158590 6.9955e+06
+152550 6.7526e+06
+146540 6.534e+06
+140540 6.3354e+06
+134560 6.1537e+06
+128630 5.9865e+06
+122780 5.832e+06
+117000 5.6887e+06
+111320 5.5555e+06
+105730 5.4314e+06
+100240 5.3159e+06
+94850 5.2082e+06
+89550 5.108e+06
+84337 5.0148e+06
+79208 4.9283e+06
+74157 4.8481e+06
+69178 4.7741e+06
+64268 4.7059e+06
+59419 4.6434e+06
+54629 4.5863e+06
+49892 4.5346e+06
+45203 4.488e+06
+40557 4.4463e+06
+35952 4.4096e+06
+31381 4.3775e+06
+26843 4.3501e+06
+22332 4.3271e+06
+17844 4.3086e+06
+13377 4.2944e+06
+8927.2 4.2845e+06
+4490.3 4.2787e+06
+63.512 4.2771e+06
+-4356.4 4.2796e+06
+-8772.6 4.2861e+06
+-13188 4.2966e+06
+-17605 4.3111e+06
+-22026 4.3295e+06
+-26455 4.3518e+06
+-30893 4.378e+06
+-35343 4.408e+06
+-39806 4.442e+06
+-44284 4.4798e+06
+-48779 4.5214e+06
+-53292 4.5668e+06
+-57825 4.6161e+06
+-62377 4.6691e+06
+-66951 4.7259e+06
+-71545 4.7864e+06
+-76160 4.8506e+06
+-80797 4.9184e+06
+-85455 4.9899e+06
+-90133 5.0649e+06
+-94833 5.1434e+06
+-99553 5.2254e+06
+-104290 5.3107e+06
+-109060 5.3993e+06
+-113840 5.4912e+06
+-118650 5.5864e+06
+-123490 5.6847e+06
+-128360 5.7863e+06
+-133260 5.8911e+06
+-138210 5.9995e+06
+-143220 6.1115e+06
+-148300 6.2276e+06
+-153460 6.3485e+06
+-158730 6.4748e+06
+-164130 6.6079e+06
+-169700 6.7492e+06
+-175470 6.901e+06
+-181500 7.0663e+06
+-187840 7.2488e+06
+-194570 7.4539e+06
+-201760 7.6884e+06
+-209540 7.9615e+06
+-218050 8.2853e+06
+-227530 8.6756e+06
+-238360 9.1531e+06
+-251270 9.7449e+06
+-267700 1.0486e+07
+-290510 1.1421e+07
+-325440 1.2603e+07
+-383460 1.4096e+07
+-484620 1.5964e+07
+-662930 1.8261e+07
+-970590 2.0995e+07
+-1.4764e+06 2.4083e+07
+-2.25e+06 2.7295e+07
+-3.3232e+06 3.0207e+07
+-4.6348e+06 3.2237e+07
+-5.9954e+06 3.2799e+07
+-7.1259e+06 3.1561e+07
+-7.7785e+06 2.864e+07
+-7.8555e+06 2.4568e+07
+-7.4327e+06 2.0042e+07
+-6.6892e+06 1.5665e+07
+-5.8174e+06 1.1817e+07
+-4.9663e+06 8.653e+06
+-4.2257e+06 6.1757e+06
+-3.635e+06 4.3028e+06
+-3.2003e+06 2.922e+06
+-2.9096e+06 1.9216e+06
+-2.7433e+06 1.205e+06
+-2.6806e+06 694200
+-2.7027e+06 329640
+-2.7939e+06 66960
+-2.9418e+06 -126090
+-3.137e+06 -272630
+-3.3722e+06 -389050
+-3.642e+06 -486870
+-3.9424e+06 -574110
+-4.2703e+06 -656300
+-4.6231e+06 -737220
+-4.9989e+06 -819460
+-5.3958e+06 -904780
+-5.8123e+06 -994310
+-6.2466e+06 -1.0887e+06
+-6.6969e+06 -1.188e+06
+-7.1607e+06 -1.292e+06
+-7.6355e+06 -1.3998e+06
+-8.1181e+06 -1.5109e+06
+-8.6054e+06 -1.6245e+06
+-9.0939e+06 -1.7406e+06
+-9.5804e+06 -1.8598e+06
+-1.0062e+07 -1.983e+06
+-1.0536e+07 -2.1111e+06
+-1.1001e+07 -2.2447e+06
+-1.1453e+07 -2.3834e+06
+-1.1891e+07 -2.5259e+06
+-1.2312e+07 -2.6706e+06
+-1.2713e+07 -2.8152e+06
+-1.309e+07 -2.9569e+06
+-1.3438e+07 -3.0923e+06
+-1.3754e+07 -3.2174e+06
+-1.4036e+07 -3.3291e+06
+-1.4281e+07 -3.4265e+06
+-1.449e+07 -3.5127e+06
+-1.4664e+07 -3.5943e+06
+-1.4805e+07 -3.6784e+06
+-1.4912e+07 -3.7681e+06
+-1.4984e+07 -3.8587e+06
+-1.5019e+07 -3.9391e+06
+-1.5016e+07 -3.9966e+06
+-1.4975e+07 -4.0252e+06
+-1.4899e+07 -4.0302e+06
+-1.4788e+07 -4.0257e+06
+-1.4643e+07 -4.0256e+06
+-1.4464e+07 -4.0337e+06
+-1.4248e+07 -4.04e+06
+-1.3997e+07 -4.028e+06
+-1.3717e+07 -3.9876e+06
+-1.342e+07 -3.926e+06
+-1.3116e+07 -3.865e+06
+-1.2811e+07 -3.827e+06
+-1.2502e+07 -3.8169e+06
+-1.2182e+07 -3.8142e+06
+-1.1839e+07 -3.7833e+06
+-1.1474e+07 -3.697e+06
+-1.1093e+07 -3.5568e+06
+-1.0711e+07 -3.3963e+06
+-1.0344e+07 -3.2621e+06
+-9.9962e+06 -3.1852e+06
+-9.6638e+06 -3.16e+06
+-9.335e+06 -3.1482e+06
+-9.0008e+06 -3.1035e+06
+-8.6619e+06 -3.0016e+06
+-8.3303e+06 -2.8566e+06
+-8.0223e+06 -2.7114e+06
+-7.7495e+06 -2.6099e+06
+-7.5113e+06 -2.5695e+06
+-7.2955e+06 -2.5706e+06
+-7.0853e+06 -2.5701e+06
+-6.8691e+06 -2.5284e+06
+-6.6474e+06 -2.4334e+06
+-6.4324e+06 -2.3067e+06
+-6.2413e+06 -2.1905e+06
+-6.0872e+06 -2.1237e+06
+-5.9723e+06 -2.1209e+06
+-5.8878e+06 -2.1666e+06
+-5.8182e+06 -2.2247e+06
+-5.7494e+06 -2.257e+06
+-5.6743e+06 -2.2412e+06
+-5.5953e+06 -2.1789e+06
+-5.5218e+06 -2.0924e+06
+-5.4654e+06 -2.0133e+06
+-5.4347e+06 -1.9691e+06
+-5.4321e+06 -1.9737e+06
+-5.4535e+06 -2.0244e+06
+-5.4905e+06 -2.1048e+06
+-5.5337e+06 -2.1925e+06
+-5.5749e+06 -2.2658e+06
+-5.6097e+06 -2.3099e+06
+1.6798e+06 -205750
+1.702e+06 -211460
+1.7228e+06 -217130
+1.742e+06 -222490
+1.7595e+06 -227320
+1.7752e+06 -231450
+1.789e+06 -234770
+1.8009e+06 -237300
+1.811e+06 -239120
+1.8192e+06 -240430
+1.8257e+06 -241450
+1.8303e+06 -242390
+1.8329e+06 -243390
+1.8334e+06 -244480
+1.8317e+06 -245540
+1.8277e+06 -246380
+1.8213e+06 -246720
+1.8126e+06 -246300
+1.8017e+06 -244960
+1.7887e+06 -242680
+1.7739e+06 -239560
+1.7574e+06 -235820
+1.7394e+06 -231720
+1.72e+06 -227450
+1.6993e+06 -223150
+1.6774e+06 -218770
+1.6545e+06 -214230
+1.6307e+06 -209350
+1.6063e+06 -204020
+1.5816e+06 -198170
+1.5567e+06 -191860
+1.5321e+06 -185210
+1.5079e+06 -178400
+1.4844e+06 -171610
+1.4617e+06 -164970
+1.44e+06 -158540
+1.4193e+06 -152350
+1.3999e+06 -146370
+1.3818e+06 -140560
+1.3651e+06 -134900
+1.35e+06 -129390
+1.3366e+06 -124050
+1.3248e+06 -118940
+1.3147e+06 -114090
+1.3063e+06 -109570
+1.2995e+06 -105400
+1.2942e+06 -101640
+1.2903e+06 -98303
+1.2876e+06 -95403
+1.2859e+06 -92944
+1.285e+06 -90917
+1.2848e+06 -89305
+1.2848e+06 -88082
+1.285e+06 -87218
+1.285e+06 -86682
+1.2846e+06 -86442
+1.2834e+06 -86468
+1.2813e+06 -86728
+1.278e+06 -87186
+1.2731e+06 -87805
+1.2666e+06 -88538
+1.2581e+06 -89337
+1.2475e+06 -90149
+1.2346e+06 -90921
+1.2193e+06 -91602
+1.2015e+06 -92144
+1.1813e+06 -92508
+1.1585e+06 -92657
+1.1333e+06 -92564
+1.1058e+06 -92204
+1.076e+06 -91557
+1.0442e+06 -90606
+1.0105e+06 -89334
+975120 -87726
+938330 -85762
+900380 -83419
+861580 -80665
+822250 -77453
+782710 -73715
+743330 -69347
+704510 -64194
+666700 -58022
+630380 -50478
+596160 -41027
+564770 -28859
+537160 -12738
+514630 9232.6
+498940 39960
+492600 83912
+499140 147920
+523440 242350
+572100 382740
+653470 591860
+777100 901990
+951750 1.3567e+06
+1.181e+06 2.0102e+06
+1.4556e+06 2.9205e+06
+1.7442e+06 4.1322e+06
+1.9872e+06 5.6434e+06
+2.106e+06 7.3636e+06
+2.0362e+06 9.0889e+06
+1.7734e+06 1.0541e+07
+1.3889e+06 1.1482e+07
+988410 1.1835e+07
+652870 1.169e+07
+413090 1.1224e+07
+261390 1.0608e+07
+174130 9.963e+06
+127490 9.3557e+06
+103750 8.8136e+06
+91784 8.3413e+06
+85357 7.9331e+06
+81288 7.5795e+06
+78088 7.2707e+06
+75133 6.9983e+06
+72198 6.7554e+06
+69230 6.5368e+06
+66238 6.3382e+06
+63246 6.1566e+06
+60278 5.9894e+06
+57353 5.8348e+06
+54482 5.6914e+06
+51671 5.5581e+06
+48925 5.4341e+06
+46244 5.3185e+06
+43626 5.2108e+06
+41069 5.1105e+06
+38571 5.0172e+06
+36128 4.9306e+06
+33737 4.8504e+06
+31393 4.7763e+06
+29095 4.7081e+06
+26837 4.6456e+06
+24618 4.5885e+06
+22433 4.5367e+06
+20279 4.4901e+06
+18155 4.4484e+06
+16056 4.4116e+06
+13979 4.3795e+06
+11923 4.3521e+06
+9884.8 4.3291e+06
+7861.6 4.3106e+06
+5851.2 4.2964e+06
+3851.2 4.2865e+06
+1859.6 4.2807e+06
+-126.01 4.2791e+06
+-2107.5 4.2816e+06
+-4087 4.2881e+06
+-6066.4 4.2986e+06
+-8047.5 4.313e+06
+-10032 4.3314e+06
+-12022 4.3537e+06
+-14018 4.3799e+06
+-16023 4.41e+06
+-18038 4.444e+06
+-20063 4.4818e+06
+-22101 4.5234e+06
+-24152 4.5689e+06
+-26217 4.6181e+06
+-28297 4.6711e+06
+-30393 4.7279e+06
+-32506 4.7885e+06
+-34635 4.8527e+06
+-36781 4.9205e+06
+-38944 4.992e+06
+-41125 5.0671e+06
+-43324 5.1456e+06
+-45540 5.2276e+06
+-47773 5.3129e+06
+-50025 5.4015e+06
+-52295 5.4935e+06
+-54584 5.5886e+06
+-56893 5.6869e+06
+-59224 5.7885e+06
+-61580 5.8934e+06
+-63965 6.0018e+06
+-66384 6.1138e+06
+-68844 6.23e+06
+-71355 6.3509e+06
+-73929 6.4773e+06
+-76582 6.6105e+06
+-79336 6.7519e+06
+-82215 6.9038e+06
+-85251 7.0692e+06
+-88484 7.2519e+06
+-91959 7.4572e+06
+-95731 7.692e+06
+-99863 7.9655e+06
+-104430 8.2897e+06
+-109550 8.6805e+06
+-115410 9.1587e+06
+-122380 9.7517e+06
+-131360 1.0495e+07
+-144330 1.1434e+07
+-165780 1.2625e+07
+-205180 1.4135e+07
+-281550 1.604e+07
+-429980 1.8404e+07
+-709160 2.1256e+07
+-1.2041e+06 2.4531e+07
+-2.0114e+06 2.8001e+07
+-3.1919e+06 3.1199e+07
+-4.687e+06 3.3436e+07
+-6.252e+06 3.3985e+07
+-7.5018e+06 3.2438e+07
+-8.1036e+06 2.899e+07
+-7.9632e+06 2.4365e+07
+-7.2345e+06 1.9429e+07
+-6.1857e+06 1.4847e+07
+-5.0658e+06 1.097e+07
+-4.0406e+06 7.8919e+06
+-3.1918e+06 5.553e+06
+-2.54e+06 3.8298e+06
+-2.0723e+06 2.5873e+06
+-1.7611e+06 1.7044e+06
+-1.576e+06 1.0829e+06
+-1.4896e+06 647260
+-1.4795e+06 341450
+-1.5284e+06 124930
+-1.6237e+06 -31286
+-1.7564e+06 -147680
+-1.9201e+06 -238650
+-2.1107e+06 -314260
+-2.3254e+06 -381510
+-2.5623e+06 -445250
+-2.8202e+06 -508800
+-3.0983e+06 -574460
+-3.3962e+06 -643810
+-3.7132e+06 -717940
+-4.0489e+06 -797570
+-4.4026e+06 -883030
+-4.7732e+06 -974290
+-5.1591e+06 -1.071e+06
+-5.5584e+06 -1.1727e+06
+-5.9688e+06 -1.2791e+06
+-6.3879e+06 -1.39e+06
+-6.8135e+06 -1.506e+06
+-7.2434e+06 -1.6279e+06
+-7.6755e+06 -1.7564e+06
+-8.1082e+06 -1.8919e+06
+-8.5395e+06 -2.034e+06
+-8.9675e+06 -2.1817e+06
+-9.3898e+06 -2.3336e+06
+-9.8034e+06 -2.488e+06
+-1.0205e+07 -2.6427e+06
+-1.0589e+07 -2.7946e+06
+-1.0952e+07 -2.9398e+06
+-1.1289e+07 -3.0744e+06
+-1.1599e+07 -3.1961e+06
+-1.188e+07 -3.3068e+06
+-1.2132e+07 -3.4122e+06
+-1.2357e+07 -3.5192e+06
+-1.2555e+07 -3.6321e+06
+-1.2724e+07 -3.7476e+06
+-1.2861e+07 -3.8552e+06
+-1.2963e+07 -3.942e+06
+-1.3027e+07 -4.0007e+06
+-1.3054e+07 -4.0354e+06
+-1.3044e+07 -4.06e+06
+-1.2996e+07 -4.0893e+06
+-1.291e+07 -4.128e+06
+-1.2785e+07 -4.1655e+06
+-1.2622e+07 -4.1824e+06
+-1.2427e+07 -4.1649e+06
+-1.2212e+07 -4.1169e+06
+-1.1987e+07 -4.0611e+06
+-1.1759e+07 -4.0249e+06
+-1.1525e+07 -4.0202e+06
+-1.1276e+07 -4.0316e+06
+-1.1e+07 -4.0231e+06
+-1.0691e+07 -3.9607e+06
+-1.0357e+07 -3.8371e+06
+-1.0011e+07 -3.6798e+06
+-9.6717e+06 -3.5364e+06
+-9.3484e+06 -3.445e+06
+-9.0396e+06 -3.4098e+06
+-8.7345e+06 -3.3976e+06
+-8.4226e+06 -3.3595e+06
+-8.1019e+06 -3.2628e+06
+-7.7826e+06 -3.1126e+06
+-7.4818e+06 -2.9481e+06
+-7.2138e+06 -2.818e+06
+-6.9815e+06 -2.7502e+06
+-6.7743e+06 -2.7351e+06
+-6.5741e+06 -2.7329e+06
+-6.3662e+06 -2.6989e+06
+-6.1479e+06 -2.6102e+06
+-5.9303e+06 -2.4784e+06
+-5.7331e+06 -2.3414e+06
+-5.574e+06 -2.2417e+06
+-5.4607e+06 -2.2038e+06
+-5.3872e+06 -2.2221e+06
+-5.3376e+06 -2.2664e+06
+-5.2939e+06 -2.298e+06
+-5.2438e+06 -2.2886e+06
+-5.1852e+06 -2.2312e+06
+-5.1259e+06 -2.1417e+06
+-5.0791e+06 -2.049e+06
+-5.0574e+06 -1.9826e+06
+-5.0686e+06 -1.9616e+06
+-5.1128e+06 -1.9886e+06
+-5.1837e+06 -2.0519e+06
+-5.2714e+06 -2.1306e+06
+-5.3655e+06 -2.2024e+06
+-5.4577e+06 -2.25e+06
+1.231e+06 -220300
+1.2471e+06 -225200
+1.262e+06 -229880
+1.2757e+06 -234130
+1.2879e+06 -237750
+1.2987e+06 -240610
+1.3079e+06 -242650
+1.3156e+06 -243890
+1.3218e+06 -244460
+1.3265e+06 -244530
+1.3297e+06 -244300
+1.3315e+06 -243970
+1.3316e+06 -243640
+1.3302e+06 -243340
+1.3271e+06 -242960
+1.3223e+06 -242320
+1.3158e+06 -241180
+1.3076e+06 -239330
+1.2979e+06 -236640
+1.2867e+06 -233130
+1.2742e+06 -228900
+1.2606e+06 -224170
+1.2459e+06 -219170
+1.2303e+06 -214090
+1.2138e+06 -209030
+1.1965e+06 -203980
+1.1786e+06 -198850
+1.1601e+06 -193530
+1.1412e+06 -187900
+1.1222e+06 -181940
+1.1033e+06 -175690
+1.0846e+06 -169270
+1.0663e+06 -162840
+1.0486e+06 -156540
+1.0315e+06 -150470
+1.0152e+06 -144680
+999630 -139190
+984930 -133960
+971120 -128960
+958280 -124170
+946460 -119580
+935690 -115200
+926000 -111060
+917370 -107170
+909760 -103570
+903100 -100260
+897300 -97278
+892250 -94616
+887800 -92278
+883820 -90253
+880150 -88525
+876620 -87067
+873070 -85848
+869320 -84836
+865200 -83997
+860550 -83302
+855200 -82722
+848980 -82231
+841750 -81800
+833370 -81401
+823720 -81002
+812700 -80572
+800220 -80078
+786230 -79490
+770700 -78781
+753650 -77930
+735090 -76922
+715090 -75743
+693730 -74389
+671120 -72853
+647370 -71136
+622620 -69235
+597050 -67150
+570800 -64877
+544080 -62410
+517060 -59737
+489970 -56837
+463000 -53673
+436410 -50191
+410420 -46301
+385320 -41872
+361400 -36702
+339040 -30489
+318680 -22778
+300920 -12883
+286550 243.22
+276710 18205
+273040 43470
+277890 79854
+294760 133250
+328650 212730
+386600 332180
+478090 512510
+614880 784560
+809550 1.1921e+06
+1.0713e+06 1.7937e+06
+1.3971e+06 2.6596e+06
+1.7584e+06 3.8568e+06
+2.0874e+06 5.4141e+06
+2.2798e+06 7.2625e+06
+2.2358e+06 9.18e+06
+1.9354e+06 1.0815e+07
+1.4751e+06 1.1851e+07
+1.0027e+06 1.2188e+07
+622520 1.1963e+07
+364330 1.1404e+07
+209800 1.0714e+07
+125870 1.002e+07
+83610 9.3843e+06
+63449 8.8272e+06
+54016 8.3478e+06
+49361 7.9365e+06
+46620 7.5816e+06
+44535 7.2724e+06
+42619 6.9999e+06
+40715 6.7571e+06
+38796 6.5385e+06
+36875 6.3399e+06
+34974 6.1582e+06
+33110 5.991e+06
+31296 5.8364e+06
+29538 5.693e+06
+27839 5.5597e+06
+26199 5.4355e+06
+24619 5.3199e+06
+23094 5.2121e+06
+21622 5.1118e+06
+20200 5.0185e+06
+18826 4.9319e+06
+17495 4.8517e+06
+16204 4.7775e+06
+14950 4.7093e+06
+13730 4.6467e+06
+12542 4.5896e+06
+11382 4.5378e+06
+10248 4.4911e+06
+9136.6 4.4495e+06
+8046.3 4.4126e+06
+6974.3 4.3806e+06
+5918.6 4.3531e+06
+4876.9 4.3301e+06
+3847.3 4.3116e+06
+2827.8 4.2974e+06
+1816.4 4.2874e+06
+811.44 4.2817e+06
+-188.91 4.2801e+06
+-1186.3 4.2825e+06
+-2182.4 4.289e+06
+-3178.7 4.2995e+06
+-4176.8 4.314e+06
+-5178.2 4.3324e+06
+-6184.2 4.3547e+06
+-7196.2 4.3809e+06
+-8215.6 4.411e+06
+-9243.6 4.445e+06
+-10281 4.4828e+06
+-11330 4.5244e+06
+-12391 4.5699e+06
+-13464 4.6191e+06
+-14552 4.6722e+06
+-15655 4.729e+06
+-16773 4.7895e+06
+-17907 4.8537e+06
+-19058 4.9216e+06
+-20226 4.9931e+06
+-21413 5.0682e+06
+-22617 5.1467e+06
+-23840 5.2287e+06
+-25081 5.314e+06
+-26342 5.4027e+06
+-27622 5.4946e+06
+-28923 5.5898e+06
+-30244 5.6882e+06
+-31587 5.7897e+06
+-32955 5.8947e+06
+-34349 6.003e+06
+-35773 6.1151e+06
+-37233 6.2313e+06
+-38735 6.3523e+06
+-40289 6.4787e+06
+-41908 6.6119e+06
+-43608 6.7534e+06
+-45411 6.9055e+06
+-47342 7.0709e+06
+-49435 7.2538e+06
+-51730 7.4593e+06
+-54270 7.6943e+06
+-57108 7.968e+06
+-60301 8.2925e+06
+-63921 8.6837e+06
+-68080 9.1624e+06
+-73022 9.7562e+06
+-79345 1.0501e+07
+-88565 1.1442e+07
+-104340 1.264e+07
+-135050 1.4166e+07
+-198610 1.6102e+07
+-330610 1.8532e+07
+-595050 2.1505e+07
+-1.0929e+06 2.4986e+07
+-1.9532e+06 2.876e+07
+-3.2781e+06 3.2319e+07
+-5.0257e+06 3.4839e+07
+-6.8854e+06 3.5383e+07
+-8.3216e+06 3.3416e+07
+-8.8836e+06 2.9262e+07
+-8.5012e+06 2.3948e+07
+-7.4487e+06 1.8559e+07
+-6.104e+06 1.3803e+07
+-4.7662e+06 9.961e+06
+-3.6041e+06 7.0288e+06
+-2.6797e+06 4.8735e+06
+-1.9908e+06 3.3281e+06
+-1.5055e+06 2.2378e+06
+-1.1833e+06 1.4769e+06
+-986400 949090
+-883090 583910
+-849020 330740
+-866310 153760
+-922350 27864
+-1.0085e+06 -64497
+-1.1192e+06 -135570
+-1.2508e+06 -193910
+-1.4012e+06 -245450
+-1.5693e+06 -294360
+-1.7545e+06 -343500
+-1.9569e+06 -394880
+-2.1764e+06 -449920
+-2.4134e+06 -509670
+-2.6681e+06 -574890
+-2.9405e+06 -646100
+-3.2304e+06 -723530
+-3.5371e+06 -807190
+-3.8597e+06 -896890
+-4.1968e+06 -992490
+-4.5469e+06 -1.0941e+06
+-4.9085e+06 -1.2021e+06
+-5.2802e+06 -1.3172e+06
+-5.6608e+06 -1.4401e+06
+-6.0489e+06 -1.5711e+06
+-6.4434e+06 -1.7097e+06
+-6.8428e+06 -1.8554e+06
+-7.2452e+06 -2.0069e+06
+-7.6481e+06 -2.1633e+06
+-8.0481e+06 -2.3229e+06
+-8.4411e+06 -2.4833e+06
+-8.8223e+06 -2.6407e+06
+-9.1872e+06 -2.7909e+06
+-9.5323e+06 -2.9306e+06
+-9.8561e+06 -3.06e+06
+-1.0158e+07 -3.1837e+06
+-1.044e+07 -3.3085e+06
+-1.0701e+07 -3.4394e+06
+-1.0939e+07 -3.5747e+06
+-1.1152e+07 -3.7055e+06
+-1.1332e+07 -3.819e+06
+-1.1478e+07 -3.9071e+06
+-1.1585e+07 -3.9724e+06
+-1.1654e+07 -4.0276e+06
+-1.1684e+07 -4.0874e+06
+-1.1677e+07 -4.1569e+06
+-1.1631e+07 -4.2254e+06
+-1.1548e+07 -4.2716e+06
+-1.1434e+07 -4.278e+06
+-1.1296e+07 -4.2458e+06
+-1.1145e+07 -4.1979e+06
+-1.0988e+07 -4.166e+06
+-1.0821e+07 -4.169e+06
+-1.0636e+07 -4.1971e+06
+-1.042e+07 -4.2148e+06
+-1.0166e+07 -4.1823e+06
+-9.8774e+06 -4.0826e+06
+-9.5692e+06 -3.9357e+06
+-9.2599e+06 -3.7883e+06
+-8.9626e+06 -3.685e+06
+-8.6789e+06 -3.6399e+06
+-8.3997e+06 -3.6267e+06
+-8.1132e+06 -3.5962e+06
+-7.8151e+06 -3.5079e+06
+-7.5129e+06 -3.357e+06
+-7.2237e+06 -3.1773e+06
+-6.9637e+06 -3.0206e+06
+-6.7392e+06 -2.9247e+06
+-6.5421e+06 -2.8911e+06
+-6.3545e+06 -2.8856e+06
+-6.1597e+06 -2.8602e+06
+-5.9516e+06 -2.7811e+06
+-5.7397e+06 -2.6481e+06
+-5.5448e+06 -2.4923e+06
+-5.3887e+06 -2.3582e+06
+-5.2837e+06 -2.2794e+06
+-5.2276e+06 -2.2625e+06
+-5.2045e+06 -2.2861e+06
+-5.1929e+06 -2.3137e+06
+-5.1752e+06 -2.3117e+06
+-5.1441e+06 -2.264e+06
+-5.1051e+06 -2.1771e+06
+-5.0729e+06 -2.0745e+06
+-5.065e+06 -1.9854e+06
+-5.0954e+06 -1.933e+06
+-5.1702e+06 -1.9268e+06
+-5.2864e+06 -1.9615e+06
+-5.4339e+06 -2.0207e+06
+-5.5988e+06 -2.0835e+06
+-5.7677e+06 -2.1314e+06
+960850 -231230
+972940 -235410
+984040 -239240
+994000 -242530
+1.0027e+06 -245110
+1.0102e+06 -246890
+1.0162e+06 -247820
+1.021e+06 -247970
+1.0244e+06 -247450
+1.0266e+06 -246450
+1.0274e+06 -245160
+1.027e+06 -243770
+1.0253e+06 -242370
+1.0223e+06 -240980
+1.018e+06 -239490
+1.0124e+06 -237730
+1.0056e+06 -235490
+997450 -232590
+988190 -228940
+977880 -224540
+966640 -219520
+954580 -214090
+941790 -208470
+928350 -202830
+914330 -197270
+899800 -191780
+884850 -186290
+869600 -180700
+854170 -174930
+838730 -168970
+823420 -162850
+808410 -156680
+793800 -150600
+779690 -144720
+766130 -139120
+753160 -133840
+740780 -128860
+729020 -124170
+717900 -119730
+707430 -115530
+697640 -111540
+688540 -107780
+680120 -104250
+672360 -100960
+665230 -97913
+658650 -95109
+652540 -92549
+646800 -90229
+641340 -88139
+636020 -86266
+630740 -84587
+625380 -83075
+619830 -81701
+613960 -80432
+607670 -79239
+600860 -78096
+593440 -76981
+585310 -75873
+576390 -74752
+566620 -73600
+555950 -72397
+544340 -71125
+531780 -69768
+518250 -68312
+503790 -66750
+488430 -65075
+472230 -63288
+455260 -61390
+437600 -59388
+419370 -57288
+400650 -55096
+381560 -52819
+362230 -50462
+342780 -48029
+323340 -45516
+304050 -42918
+285030 -40217
+266440 -37382
+248430 -34366
+231160 -31094
+214820 -27451
+199630 -23266
+185870 -18288
+173880 -12137
+164150 -4243.5
+157400 6255.1
+154610 20679
+157290 41064
+167660 70569
+189080 114110
+226500 179390
+287130 278350
+381180 429560
+522240 661350
+726660 1.0161e+06
+1.0103e+06 1.5544e+06
+1.3796e+06 2.3573e+06
+1.8145e+06 3.5171e+06
+2.2443e+06 5.1048e+06
+2.5347e+06 7.0944e+06
+2.5305e+06 9.2585e+06
+2.178e+06 1.1144e+07
+1.6117e+06 1.23e+07
+1.0465e+06 1.2604e+07
+615170 1.2267e+07
+339440 1.1594e+07
+183910 1.082e+07
+103920 1.0074e+07
+65505 9.4099e+06
+47838 8.839e+06
+39752 8.3533e+06
+35769 7.9393e+06
+33372 7.5834e+06
+31519 7.2739e+06
+29832 7.0013e+06
+28191 6.7585e+06
+26580 6.5398e+06
+25008 6.3412e+06
+23487 6.1595e+06
+22027 5.9922e+06
+20632 5.8376e+06
+19305 5.6941e+06
+18044 5.5607e+06
+16847 5.4365e+06
+15709 5.3208e+06
+14628 5.2131e+06
+13599 5.1127e+06
+12618 5.0194e+06
+11683 4.9327e+06
+10789 4.8524e+06
+9932 4.7783e+06
+9110.1 4.71e+06
+8319.8 4.6474e+06
+7558.2 4.5903e+06
+6822.6 4.5385e+06
+6110.4 4.4918e+06
+5419.3 4.4501e+06
+4747 4.4132e+06
+4091.2 4.3811e+06
+3449.9 4.3537e+06
+2821.2 4.3307e+06
+2203.3 4.3121e+06
+1594.2 4.2979e+06
+992.42 4.288e+06
+396.2 4.2822e+06
+-196.01 4.2806e+06
+-785.73 4.2831e+06
+-1374.4 4.2896e+06
+-1963.5 4.3001e+06
+-2554.4 4.3145e+06
+-3148.4 4.3329e+06
+-3746.8 4.3552e+06
+-4350.9 4.3815e+06
+-4962 4.4116e+06
+-5581.2 4.4455e+06
+-6209.7 4.4833e+06
+-6848.7 4.525e+06
+-7499.2 4.5705e+06
+-8162.3 4.6197e+06
+-8839 4.6728e+06
+-9530.3 4.7296e+06
+-10237 4.7901e+06
+-10960 4.8544e+06
+-11700 4.9223e+06
+-12459 4.9938e+06
+-13235 5.0689e+06
+-14031 5.1474e+06
+-14847 5.2294e+06
+-15683 5.3148e+06
+-16540 5.4035e+06
+-17418 5.4954e+06
+-18319 5.5906e+06
+-19243 5.689e+06
+-20192 5.7906e+06
+-21167 5.8955e+06
+-22172 6.0039e+06
+-23208 6.116e+06
+-24282 6.2323e+06
+-25400 6.3532e+06
+-26570 6.4797e+06
+-27804 6.613e+06
+-29118 6.7546e+06
+-30532 6.9067e+06
+-32072 7.0722e+06
+-33769 7.2552e+06
+-35664 7.4609e+06
+-37801 7.6961e+06
+-40233 7.9701e+06
+-43019 8.2949e+06
+-46226 8.6864e+06
+-49948 9.1656e+06
+-54371 9.76e+06
+-59947 1.0506e+07
+-67867 1.145e+07
+-81152 1.2653e+07
+-107040 1.4191e+07
+-162040 1.6157e+07
+-281060 1.8648e+07
+-531660 2.1744e+07
+-1.0304e+06 2.5449e+07
+-1.9448e+06 2.9578e+07
+-3.4401e+06 3.3599e+07
+-5.5183e+06 3.6519e+07
+-7.7916e+06 3.7083e+07
+-9.4884e+06 3.4535e+07
+-9.9761e+06 2.9422e+07
+-9.2612e+06 2.3255e+07
+-7.8182e+06 1.7395e+07
+-6.1615e+06 1.2534e+07
+-4.6266e+06 8.8107e+06
+-3.3622e+06 6.0921e+06
+-2.3957e+06 4.1627e+06
+-1.6958e+06 2.8166e+06
+-1.2113e+06 1.8867e+06
+-891200 1.2481e+06
+-692120 810570
+-580400 510820
+-531150 304780
+-526720 161980
+-554980 61390
+-607860 -11547
+-680210 -66927
+-768930 -111790
+-872310 -151080
+-989590 -188250
+-1.1206e+06 -225730
+-1.2656e+06 -265250
+-1.4251e+06 -308050
+-1.5997e+06 -355120
+-1.79e+06 -407240
+-1.9966e+06 -465030
+-2.2198e+06 -528950
+-2.4596e+06 -599240
+-2.7158e+06 -676010
+-2.9878e+06 -759320
+-3.2749e+06 -849360
+-3.5762e+06 -946580
+-3.8912e+06 -1.0516e+06
+-4.219e+06 -1.1651e+06
+-4.5591e+06 -1.2872e+06
+-4.9107e+06 -1.4178e+06
+-5.2729e+06 -1.5562e+06
+-5.6445e+06 -1.7018e+06
+-6.0235e+06 -1.8539e+06
+-6.4073e+06 -2.0118e+06
+-6.7922e+06 -2.1737e+06
+-7.1738e+06 -2.3364e+06
+-7.5475e+06 -2.4953e+06
+-7.9094e+06 -2.6466e+06
+-8.2573e+06 -2.789e+06
+-8.5905e+06 -2.9257e+06
+-8.9096e+06 -3.0631e+06
+-9.2146e+06 -3.2067e+06
+-9.5032e+06 -3.3569e+06
+-9.7711e+06 -3.5065e+06
+-1.0012e+07 -3.6437e+06
+-1.022e+07 -3.7596e+06
+-1.0392e+07 -3.8548e+06
+-1.0526e+07 -3.9399e+06
+-1.0625e+07 -4.0287e+06
+-1.069e+07 -4.1268e+06
+-1.072e+07 -4.2237e+06
+-1.0715e+07 -4.2974e+06
+-1.068e+07 -4.3281e+06
+-1.0619e+07 -4.3142e+06
+-1.054e+07 -4.2778e+06
+-1.0449e+07 -4.2538e+06
+-1.0345e+07 -4.2671e+06
+-1.0221e+07 -4.3138e+06
+-1.0064e+07 -4.3598e+06
+-9.8663e+06 -4.3605e+06
+-9.6284e+06 -4.2901e+06
+-9.3634e+06 -4.1599e+06
+-9.0901e+06 -4.014e+06
+-8.824e+06 -3.9019e+06
+-8.5697e+06 -3.8474e+06
+-8.3206e+06 -3.8326e+06
+-8.0646e+06 -3.8097e+06
+-7.795e+06 -3.7323e+06
+-7.5161e+06 -3.5853e+06
+-7.2431e+06 -3.3958e+06
+-6.9934e+06 -3.2161e+06
+-6.7766e+06 -3.0929e+06
+-6.5884e+06 -3.039e+06
+-6.4131e+06 -3.0277e+06
+-6.2334e+06 -3.0094e+06
+-6.0407e+06 -2.9411e+06
+-5.8416e+06 -2.8097e+06
+-5.6557e+06 -2.6378e+06
+-5.5068e+06 -2.4694e+06
+-5.4109e+06 -2.3465e+06
+-5.3695e+06 -2.2885e+06
+-5.3684e+06 -2.2852e+06
+-5.3849e+06 -2.3048e+06
+-5.3971e+06 -2.31e+06
+-5.3934e+06 -2.2756e+06
+-5.3759e+06 -2.1966e+06
+-5.3597e+06 -2.0882e+06
+-5.3656e+06 -1.9767e+06
+-5.4136e+06 -1.8882e+06
+-5.5156e+06 -1.8394e+06
+-5.6729e+06 -1.8335e+06
+-5.8764e+06 -1.8613e+06
+-6.11e+06 -1.9059e+06
+-6.3555e+06 -1.9495e+06
+801800 -239720
+811120 -243200
+819490 -246230
+826780 -248630
+832910 -250270
+837840 -251050
+841510 -250970
+843940 -250100
+845140 -248590
+845140 -246620
+843980 -244400
+841700 -242080
+838310 -239780
+833840 -237480
+828310 -235100
+821730 -232460
+814150 -229370
+805600 -225670
+796180 -221280
+785970 -216230
+775080 -210640
+763590 -204720
+751620 -198670
+739210 -192660
+726450 -186780
+713390 -181030
+700100 -175340
+686680 -169630
+673240 -163840
+659880 -157950
+646740 -152020
+633930 -146130
+621520 -140390
+609580 -134890
+598130 -129700
+587180 -124830
+576720 -120260
+566740 -115980
+557220 -111940
+548170 -108140
+539580 -104570
+531450 -101210
+523750 -98072
+516470 -95147
+509550 -92426
+502940 -89900
+496570 -87556
+490370 -85383
+484230 -83367
+478080 -81491
+471840 -79736
+465410 -78077
+458720 -76486
+451700 -74937
+444280 -73406
+436410 -71872
+428040 -70320
+419120 -68736
+409630 -67107
+399540 -65423
+388850 -63676
+377550 -61857
+365660 -59963
+353200 -57991
+340230 -55946
+326790 -53831
+312940 -51655
+298760 -49429
+284330 -47162
+269720 -44866
+255010 -42551
+240300 -40225
+225670 -37896
+211200 -35567
+196980 -33237
+183110 -30900
+169660 -28540
+156740 -26132
+144440 -23632
+132860 -20976
+122140 -18067
+112440 -14765
+103970 -10861
+97016 -6047.5
+91989 133.54
+89491 8373.9
+90414 19728
+96105 35822
+108610 59185
+131040 93786
+168130 145890
+226970 225410
+318010 348080
+456100 538780
+660950 836470
+955620 1.3009e+06
+1.3593e+06 2.0195e+06
+1.8683e+06 3.1092e+06
+2.4203e+06 4.6949e+06
+2.8515e+06 6.8272e+06
+2.9193e+06 9.3098e+06
+2.4945e+06 1.1552e+07
+1.7756e+06 1.2864e+07
+1.0909e+06 1.3099e+07
+604880 1.2604e+07
+316400 1.179e+07
+164230 1.0922e+07
+90263 1.0123e+07
+56197 9.4326e+06
+40832 8.8493e+06
+33731 8.3581e+06
+30084 7.9418e+06
+27735 7.5851e+06
+25856 7.2753e+06
+24167 7.0026e+06
+22567 6.7597e+06
+21043 6.5411e+06
+19595 6.3424e+06
+18227 6.1606e+06
+16941 5.9933e+06
+15735 5.8386e+06
+14605 5.695e+06
+13548 5.5616e+06
+12557 5.4374e+06
+11628 5.3216e+06
+10755 5.2138e+06
+9934.9 5.1134e+06
+9162.2 5.02e+06
+8432.9 4.9333e+06
+7743.1 4.853e+06
+7089.4 4.7788e+06
+6468.5 4.7105e+06
+5877.4 4.6479e+06
+5313.2 4.5908e+06
+4773.1 4.5389e+06
+4254.9 4.4922e+06
+3756.1 4.4505e+06
+3274.6 4.4137e+06
+2808.3 4.3815e+06
+2355.4 4.354e+06
+1913.9 4.3311e+06
+1482.2 4.3125e+06
+1058.7 4.2983e+06
+641.75 4.2883e+06
+229.83 4.2826e+06
+-178.46 4.2809e+06
+-584.51 4.2834e+06
+-989.68 4.2899e+06
+-1395.3 4.3004e+06
+-1802.6 4.3149e+06
+-2212.8 4.3333e+06
+-2627.1 4.3556e+06
+-3046.8 4.3818e+06
+-3473 4.4119e+06
+-3906.8 4.4459e+06
+-4349.3 4.4837e+06
+-4801.6 4.5254e+06
+-5264.9 4.5709e+06
+-5740.2 4.6201e+06
+-6228.5 4.6732e+06
+-6730.8 4.73e+06
+-7248.1 4.7906e+06
+-7781.3 4.8549e+06
+-8331.4 4.9228e+06
+-8899.2 4.9943e+06
+-9485.5 5.0694e+06
+-10091 5.1479e+06
+-10717 5.2299e+06
+-11364 5.3153e+06
+-12032 5.404e+06
+-12724 5.496e+06
+-13438 5.5912e+06
+-14178 5.6896e+06
+-14945 5.7912e+06
+-15740 5.8962e+06
+-16566 6.0046e+06
+-17427 6.1168e+06
+-18327 6.233e+06
+-19273 6.354e+06
+-20274 6.4806e+06
+-21341 6.6139e+06
+-22490 6.7555e+06
+-23741 6.9077e+06
+-25118 7.0734e+06
+-26654 7.2565e+06
+-28390 7.4623e+06
+-30373 7.6978e+06
+-32659 7.972e+06
+-35314 8.2971e+06
+-38411 8.689e+06
+-42047 9.1686e+06
+-46388 9.7636e+06
+-51791 1.051e+07
+-59201 1.1456e+07
+-71080 1.2664e+07
+-93444 1.4213e+07
+-140850 1.6204e+07
+-246160 1.8752e+07
+-477700 2.1969e+07
+-964880 2.591e+07
+-1.9191e+06 3.045e+07
+-3.5971e+06 3.5061e+07
+-6.0993e+06 3.8564e+07
+-8.9633e+06 3.9218e+07
+-1.102e+07 3.5837e+07
+-1.1334e+07 2.9375e+07
+-1.0118e+07 2.217e+07
+-8.1843e+06 1.5879e+07
+-6.1984e+06 1.1036e+07
+-4.4949e+06 7.5451e+06
+-3.1685e+06 5.1129e+06
+-2.1956e+06 3.4469e+06
+-1.511e+06 2.3146e+06
+-1.0455e+06 1.5472e+06
+-739670 1.0272e+06
+-547510 674370
+-434990 434200
+-378000 269930
+-359840 156590
+-369260 77194
+-398900 20069
+-444110 -22850
+-502150 -57202
+-571590 -86962
+-651850 -114950
+-742940 -143170
+-845240 -173070
+-959390 -205750
+-1.0862e+06 -242060
+-1.2264e+06 -282790
+-1.3809e+06 -328610
+-1.5504e+06 -380090
+-1.7354e+06 -437700
+-1.936e+06 -501710
+-2.1525e+06 -572380
+-2.3846e+06 -650010
+-2.6322e+06 -735070
+-2.8952e+06 -828180
+-3.1733e+06 -929920
+-3.4664e+06 -1.0406e+06
+-3.7742e+06 -1.16e+06
+-4.0964e+06 -1.2877e+06
+-4.4323e+06 -1.4234e+06
+-4.7807e+06 -1.5668e+06
+-5.1396e+06 -1.7178e+06
+-5.5063e+06 -1.8755e+06
+-5.8768e+06 -2.0372e+06
+-6.247e+06 -2.1989e+06
+-6.6129e+06 -2.3558e+06
+-6.9717e+06 -2.5055e+06
+-7.3224e+06 -2.65e+06
+-7.6652e+06 -2.7948e+06
+-7.9999e+06 -2.9463e+06
+-8.3242e+06 -3.1067e+06
+-8.6332e+06 -3.2708e+06
+-8.9201e+06 -3.4282e+06
+-9.1784e+06 -3.569e+06
+-9.4044e+06 -3.6913e+06
+-9.5976e+06 -3.8033e+06
+-9.7604e+06 -3.9174e+06
+-9.8946e+06 -4.0393e+06
+-1e+07 -4.1604e+06
+-1.0076e+07 -4.2592e+06
+-1.0121e+07 -4.3146e+06
+-1.0136e+07 -4.3222e+06
+-1.0128e+07 -4.3023e+06
+-1.0102e+07 -4.2906e+06
+-1.006e+07 -4.3165e+06
+-9.9962e+06 -4.3819e+06
+-9.9014e+06 -4.4558e+06
+-9.7656e+06 -4.4908e+06
+-9.587e+06 -4.4532e+06
+-9.375e+06 -4.3454e+06
+-9.1468e+06 -4.207e+06
+-8.9195e+06 -4.0903e+06
+-8.701e+06 -4.0277e+06
+-8.4878e+06 -4.0106e+06
+-8.2687e+06 -3.9951e+06
+-8.0342e+06 -3.9306e+06
+-7.7848e+06 -3.7928e+06
+-7.5324e+06 -3.6004e+06
+-7.2941e+06 -3.4041e+06
+-7.0829e+06 -3.2566e+06
+-6.8998e+06 -3.1815e+06
+-6.7335e+06 -3.1608e+06
+-6.568e+06 -3.1461e+06
+-6.3927e+06 -3.0872e+06
+-6.2102e+06 -2.9593e+06
+-6.0363e+06 -2.775e+06
+-5.8934e+06 -2.576e+06
+-5.7994e+06 -2.4104e+06
+-5.7596e+06 -2.3094e+06
+-5.7639e+06 -2.275e+06
+-5.7915e+06 -2.2818e+06
+-5.8199e+06 -2.2916e+06
+-5.8342e+06 -2.2706e+06
+-5.8332e+06 -2.2024e+06
+-5.8295e+06 -2.0918e+06
+-5.8445e+06 -1.9599e+06
+-5.9007e+06 -1.834e+06
+-6.0144e+06 -1.7373e+06
+-6.1915e+06 -1.6823e+06
+-6.4256e+06 -1.6687e+06
+-6.7013e+06 -1.686e+06
+-6.9984e+06 -1.7185e+06
+715340 -246390
+722500 -249160
+728690 -251390
+733790 -252920
+737750 -253620
+740500 -253430
+742030 -252370
+742340 -250520
+741440 -248060
+739400 -245170
+736270 -242070
+732100 -238920
+726950 -235820
+720850 -232750
+713850 -229620
+705980 -226260
+697280 -222490
+687810 -218150
+677640 -213190
+666880 -207640
+655610 -201630
+643930 -195370
+631940 -189050
+619710 -182830
+607310 -176780
+594780 -170910
+582200 -165160
+569620 -159450
+557150 -153730
+544860 -148000
+532860 -142290
+521220 -136700
+510010 -131310
+499260 -126190
+488980 -121370
+479150 -116870
+469750 -112650
+460750 -108690
+452130 -104970
+443850 -101470
+435900 -98172
+428260 -95085
+420900 -92196
+413800 -89494
+406910 -86961
+400180 -84578
+393550 -82327
+386970 -80191
+380350 -78156
+373650 -76205
+366780 -74321
+359710 -72484
+352380 -70671
+344740 -68863
+336770 -67043
+328430 -65195
+319720 -63311
+310610 -61383
+301120 -59404
+291240 -57372
+280980 -55285
+270380 -53144
+259460 -50951
+248260 -48715
+236840 -46443
+225230 -44147
+213520 -41840
+201750 -39533
+189980 -37239
+178290 -34970
+166720 -32734
+155350 -30540
+144230 -28394
+133410 -26299
+122950 -24252
+112900 -22247
+103310 -20269
+94246 -18293
+85763 -16283
+77933 -14184
+70846 -11915
+64618 -9362.6
+59416 -6359.9
+55474 -2664.2
+53137 2083
+52917 8418.9
+55590 17159
+62336 29556
+74969 47564
+96286 74256
+130610 114520
+184610 176200
+268460 271970
+397420 422460
+593570 661310
+886560 1.0432e+06
+1.3103e+06 1.6559e+06
+1.887e+06 2.6335e+06
+2.5826e+06 4.1594e+06
+3.2212e+06 6.4061e+06
+3.429e+06 9.2976e+06
+2.8999e+06 1.208e+07
+1.9506e+06 1.3594e+07
+1.1147e+06 1.3688e+07
+577200 1.297e+07
+285780 1.1985e+07
+143210 1.1017e+07
+77868 1.0167e+07
+48905 9.452e+06
+35919 8.8581e+06
+29757 8.3623e+06
+26447 7.9442e+06
+24136 7.5869e+06
+22245 7.2768e+06
+20579 7.0039e+06
+19019 6.761e+06
+17572 6.5422e+06
+16230 6.3435e+06
+14986 6.1616e+06
+13834 5.9942e+06
+12767 5.8394e+06
+11779 5.6958e+06
+10866 5.5623e+06
+10020 5.438e+06
+9232.3 5.3223e+06
+8498.1 5.2144e+06
+7814.3 5.1139e+06
+7176.2 5.0205e+06
+6578.1 4.9338e+06
+6015.9 4.8535e+06
+5486.8 4.7793e+06
+4988.2 4.711e+06
+4517 4.6483e+06
+4069.9 4.5911e+06
+3644.3 4.5393e+06
+3238.3 4.4926e+06
+2850 4.4508e+06
+2477.5 4.414e+06
+2118.3 4.3818e+06
+1770.7 4.3543e+06
+1433.4 4.3314e+06
+1105.1 4.3128e+06
+784.06 4.2986e+06
+468.65 4.2886e+06
+157.58 4.2828e+06
+-150.23 4.2812e+06
+-455.87 4.2837e+06
+-760.69 4.2902e+06
+-1066.1 4.3007e+06
+-1373.1 4.3151e+06
+-1682.6 4.3335e+06
+-1995.6 4.3559e+06
+-2313.4 4.3821e+06
+-2637.2 4.4122e+06
+-2967.9 4.4462e+06
+-3306.2 4.484e+06
+-3653.3 4.5257e+06
+-4010.3 4.5712e+06
+-4378.4 4.6205e+06
+-4758.3 4.6735e+06
+-5150.8 4.7304e+06
+-5557 4.7909e+06
+-5977.9 4.8552e+06
+-6414.6 4.9231e+06
+-6867.9 4.9947e+06
+-7338.3 5.0698e+06
+-7826.9 5.1483e+06
+-8334.8 5.2304e+06
+-8863.1 5.3158e+06
+-9412.4 5.4045e+06
+-9983.5 5.4965e+06
+-10578 5.5917e+06
+-11197 5.6901e+06
+-11843 5.7918e+06
+-12517 5.8967e+06
+-13223 6.0052e+06
+-13962 6.1174e+06
+-14742 6.2337e+06
+-15569 6.3547e+06
+-16449 6.4813e+06
+-17393 6.6147e+06
+-18418 6.7564e+06
+-19543 6.9087e+06
+-20791 7.0745e+06
+-22191 7.2577e+06
+-23785 7.4637e+06
+-25622 7.6993e+06
+-27759 7.9738e+06
+-30263 8.2992e+06
+-33210 8.6915e+06
+-36707 9.1716e+06
+-40922 9.7672e+06
+-46125 1.0515e+07
+-53034 1.1462e+07
+-63695 1.2674e+07
+-82772 1.4232e+07
+-122430 1.6244e+07
+-212060 1.8842e+07
+-417020 2.2172e+07
+-873500 2.6353e+07
+-1.8357e+06 3.1351e+07
+-3.6842e+06 3.6712e+07
+-6.7173e+06 4.1092e+07
+-1.0461e+07 4.2013e+07
+-1.3035e+07 3.7363e+07
+-1.2943e+07 2.8921e+07
+-1.0954e+07 2.0518e+07
+-8.4162e+06 1.3951e+07
+-6.1092e+06 9.3254e+06
+-4.2885e+06 6.2035e+06
+-2.9518e+06 4.1288e+06
+-2.0109e+06 2.754e+06
+-1.367e+06 1.8407e+06
+-936410 1.2312e+06
+-655230 822190
+-477190 546260
+-369810 359010
+-310740 231090
+-284840 142880
+-282040 81169
+-295810 36933
+-322060 3938.3
+-358400 -22193
+-403570 -44572
+-457100 -65437
+-519060 -86408
+-589860 -108680
+-670150 -133160
+-760720 -160620
+-862470 -191760
+-976340 -227270
+-1.1032e+06 -267790
+-1.2439e+06 -313860
+-1.3991e+06 -365940
+-1.5692e+06 -424390
+-1.7546e+06 -489620
+-1.9557e+06 -562140
+-2.1726e+06 -642580
+-2.4056e+06 -731530
+-2.655e+06 -829300
+-2.9208e+06 -935810
+-3.2031e+06 -1.0507e+06
+-3.5018e+06 -1.1739e+06
+-3.8163e+06 -1.3054e+06
+-4.1456e+06 -1.4457e+06
+-4.4877e+06 -1.5946e+06
+-4.8396e+06 -1.7504e+06
+-5.1975e+06 -1.9092e+06
+-5.5579e+06 -2.0662e+06
+-5.9177e+06 -2.2181e+06
+-6.2756e+06 -2.3653e+06
+-6.6313e+06 -2.5131e+06
+-6.9843e+06 -2.668e+06
+-7.3325e+06 -2.834e+06
+-7.671e+06 -3.0083e+06
+-7.9932e+06 -3.1813e+06
+-8.2928e+06 -3.3425e+06
+-8.5664e+06 -3.4874e+06
+-8.8143e+06 -3.6211e+06
+-9.0393e+06 -3.7545e+06
+-9.2436e+06 -3.8944e+06
+-9.4261e+06 -4.0347e+06
+-9.5823e+06 -4.1562e+06
+-9.7069e+06 -4.2374e+06
+-9.7979e+06 -4.2707e+06
+-9.8587e+06 -4.2725e+06
+-9.896e+06 -4.2771e+06
+-9.9153e+06 -4.3169e+06
+-9.9156e+06 -4.3993e+06
+-9.8887e+06 -4.498e+06
+-9.824e+06 -4.5659e+06
+-9.7155e+06 -4.5631e+06
+-9.5677e+06 -4.4834e+06
+-9.3951e+06 -4.3594e+06
+-9.2154e+06 -4.2437e+06
+-9.04e+06 -4.1755e+06
+-8.8691e+06 -4.156e+06
+-8.6927e+06 -4.1474e+06
+-8.4992e+06 -4.0979e+06
+-8.2843e+06 -3.9754e+06
+-8.0552e+06 -3.7892e+06
+-7.8281e+06 -3.5852e+06
+-7.619e+06 -3.4189e+06
+-7.4353e+06 -3.3231e+06
+-7.272e+06 -3.289e+06
+-7.1164e+06 -3.2725e+06
+-6.9562e+06 -3.2198e+06
+-6.7888e+06 -3.0968e+06
+-6.6235e+06 -2.9061e+06
+-6.4782e+06 -2.6845e+06
+-6.3708e+06 -2.4831e+06
+-6.3105e+06 -2.3424e+06
+-6.2934e+06 -2.2754e+06
+-6.3047e+06 -2.2646e+06
+-6.3248e+06 -2.273e+06
+-6.3385e+06 -2.261e+06
+-6.341e+06 -2.2023e+06
+-6.34e+06 -2.0915e+06
+-6.3529e+06 -1.9432e+06
+-6.4005e+06 -1.7838e+06
+-6.5005e+06 -1.6409e+06
+-6.6622e+06 -1.5353e+06
+-6.8839e+06 -1.4754e+06
+-7.1543e+06 -1.4581e+06
+-7.4561e+06 -1.4714e+06
+678380 -251500
+683560 -253500
+687700 -254900
+690710 -255520
+692520 -255260
+693090 -254090
+692410 -252030
+690500 -249210
+687400 -245800
+683180 -242030
+677920 -238090
+671680 -234170
+664550 -230340
+656570 -226590
+647800 -222810
+638280 -218840
+628070 -214500
+617210 -209640
+605800 -204220
+593930 -198290
+581700 -192000
+569220 -185530
+556590 -179070
+543890 -172770
+531170 -166700
+518500 -160840
+505930 -155140
+493500 -149540
+481280 -143980
+469350 -138470
+457770 -133050
+446610 -127790
+435900 -122770
+425670 -118020
+415900 -113580
+406580 -109420
+397670 -105520
+389110 -101850
+380880 -98389
+372930 -95117
+365240 -92034
+357770 -89135
+350500 -86410
+343390 -83845
+336390 -81415
+329480 -79099
+322590 -76872
+315680 -74719
+308700 -72623
+301600 -70570
+294340 -68548
+286880 -66540
+279200 -64532
+271270 -62511
+263080 -60465
+254630 -58386
+245920 -56271
+236960 -54118
+227770 -51924
+218360 -49693
+208770 -47428
+199020 -45134
+189160 -42820
+179220 -40497
+169270 -38178
+159330 -35876
+149470 -33603
+139730 -31373
+130150 -29196
+120790 -27081
+111680 -25036
+102870 -23067
+94375 -21178
+86242 -19369
+78497 -17636
+71169 -15972
+64286 -14363
+57879 -12786
+51983 -11209
+46643 -9586
+41922 -7852.8
+37908 -5918.4
+34728 -3653.4
+32574 -871.91
+31729 2697.8
+32622 7458.8
+35909 14019
+42589 23310
+54214 36776
+73194 56695
+103310 86698
+150500 132660
+224130 204180
+338880 317230
+517470 498640
+794020 794250
+1.2162e+06 1.2831e+06
+1.8389e+06 2.1016e+06
+2.6858e+06 3.4782e+06
+3.6234e+06 5.7448e+06
+4.1205e+06 9.1313e+06
+3.4277e+06 1.2823e+07
+2.1131e+06 1.4567e+07
+1.097e+06 1.4378e+07
+523960 1.3351e+07
+245060 1.2171e+07
+119140 1.11e+07
+64516 1.0203e+07
+41115 9.468e+06
+30610 8.8654e+06
+25455 8.3657e+06
+22613 7.9462e+06
+20384 7.5887e+06
+18634 7.2782e+06
+17174 7.0051e+06
+15710 6.762e+06
+14387 6.5433e+06
+13221 6.3445e+06
+12157 6.1625e+06
+11176 5.995e+06
+10258 5.8401e+06
+9413 5.6965e+06
+8656.8 5.563e+06
+7968.6 5.4386e+06
+7317.3 5.3228e+06
+6703.8 5.2149e+06
+6144.2 5.1144e+06
+5634.8 5.021e+06
+5156.2 4.9342e+06
+4700.4 4.8539e+06
+4272.7 4.7796e+06
+3876.3 4.7113e+06
+3506.6 4.6486e+06
+3155.4 4.5914e+06
+2818.1 4.5396e+06
+2496.5 4.4928e+06
+2194.3 4.4511e+06
+1907.7 4.4142e+06
+1629.3 4.3821e+06
+1357.6 4.3546e+06
+1096.1 4.3316e+06
+844.65 4.313e+06
+599.51 4.2988e+06
+357.4 4.2888e+06
+117.45 4.283e+06
+-119.14 4.2814e+06
+-351.78 4.2839e+06
+-583.38 4.2904e+06
+-817.56 4.3009e+06
+-1054.2 4.3153e+06
+-1291.3 4.3338e+06
+-1529.9 4.3561e+06
+-1773.1 4.3823e+06
+-2022.8 4.4124e+06
+-2278.7 4.4464e+06
+-2540 4.4842e+06
+-2807.2 4.5259e+06
+-3083.3 4.5714e+06
+-3370.8 4.6207e+06
+-3668.4 4.6738e+06
+-3974.9 4.7306e+06
+-4292.1 4.7912e+06
+-4623.1 4.8555e+06
+-4969.2 4.9234e+06
+-5329.8 4.995e+06
+-5703.5 5.0701e+06
+-6091.3 5.1487e+06
+-6497.5 5.2307e+06
+-6924.8 5.3161e+06
+-7370.2 5.4049e+06
+-7831.5 5.4969e+06
+-8312.6 5.5921e+06
+-8819.2 5.6905e+06
+-9353.1 5.7922e+06
+-9911.9 5.8972e+06
+-10494 6.0057e+06
+-11106 6.1179e+06
+-11760 6.2342e+06
+-12464 6.3553e+06
+-13210 6.482e+06
+-14003 6.6154e+06
+-14875 6.7571e+06
+-15852 6.9095e+06
+-16937 7.0754e+06
+-18139 7.2588e+06
+-19514 7.4649e+06
+-21130 7.7007e+06
+-23030 7.9755e+06
+-25253 8.3012e+06
+-27838 8.6937e+06
+-30979 9.1742e+06
+-34883 9.7706e+06
+-39638 1.0519e+07
+-45594 1.1468e+07
+-54861 1.2682e+07
+-70623 1.4247e+07
+-102390 1.6276e+07
+-175090 1.8917e+07
+-346910 2.2348e+07
+-750570 2.6756e+07
+-1.671e+06 3.2241e+07
+-3.6348e+06 3.8525e+07
+-7.2935e+06 4.4241e+07
+-1.2407e+07 4.589e+07
+-1.5791e+07 3.9134e+07
+-1.4752e+07 2.7649e+07
+-1.159e+07 1.8064e+07
+-8.3759e+06 1.1585e+07
+-5.8171e+06 7.4559e+06
+-3.9651e+06 4.8464e+06
+-2.6819e+06 3.1839e+06
+-1.8128e+06 2.1116e+06
+-1.2324e+06 1.411e+06
+-849670 947970
+-600670 638770
+-441860 430410
+-343780 288830
+-286660 191820
+-257320 124690
+-247080 77598
+-250340 43827
+-263570 18731
+-284710 -976.03
+-312680 -17660
+-347080 -33048
+-387960 -48417
+-435690 -64724
+-490860 -82721
+-554220 -103060
+-626650 -126350
+-709080 -153240
+-802520 -184360
+-907920 -220310
+-1.0262e+06 -261620
+-1.1581e+06 -308740
+-1.3043e+06 -362160
+-1.4655e+06 -422440
+-1.6422e+06 -490240
+-1.8351e+06 -566170
+-2.0446e+06 -650590
+-2.2711e+06 -743450
+-2.515e+06 -844510
+-2.7767e+06 -953650
+-3.0562e+06 -1.0713e+06
+-3.3532e+06 -1.1982e+06
+-3.6665e+06 -1.3351e+06
+-3.9942e+06 -1.4808e+06
+-4.3333e+06 -1.6321e+06
+-4.6805e+06 -1.7844e+06
+-5.0329e+06 -1.9336e+06
+-5.389e+06 -2.0793e+06
+-5.7479e+06 -2.2258e+06
+-6.1091e+06 -2.3801e+06
+-6.4707e+06 -2.5475e+06
+-6.8287e+06 -2.7269e+06
+-7.1772e+06 -2.9101e+06
+-7.5109e+06 -3.0858e+06
+-7.8269e+06 -3.2468e+06
+-8.126e+06 -3.3954e+06
+-8.411e+06 -3.5413e+06
+-8.6833e+06 -3.6929e+06
+-8.9399e+06 -3.848e+06
+-9.1731e+06 -3.9905e+06
+-9.3737e+06 -4.0989e+06
+-9.5365e+06 -4.1619e+06
+-9.6638e+06 -4.19e+06
+-9.7639e+06 -4.2139e+06
+-9.8461e+06 -4.2668e+06
+-9.9139e+06 -4.3622e+06
+-9.9611e+06 -4.4809e+06
+-9.9755e+06 -4.5786e+06
+-9.9463e+06 -4.6118e+06
+-9.8725e+06 -4.5655e+06
+-9.7646e+06 -4.4636e+06
+-9.6402e+06 -4.3557e+06
+-9.514e+06 -4.2858e+06
+-9.39e+06 -4.2646e+06
+-9.2601e+06 -4.2632e+06
+-9.1104e+06 -4.2314e+06
+-8.9317e+06 -4.1312e+06
+-8.7264e+06 -3.9617e+06
+-8.5087e+06 -3.7609e+06
+-8.2978e+06 -3.5836e+06
+-8.1075e+06 -3.4689e+06
+-7.94e+06 -3.418e+06
+-7.7864e+06 -3.3942e+06
+-7.6334e+06 -3.3443e+06
+-7.4722e+06 -3.228e+06
+-7.3042e+06 -3.039e+06
+-7.1411e+06 -2.807e+06
+-6.9992e+06 -2.582e+06
+-6.8915e+06 -2.4095e+06
+-6.8222e+06 -2.3114e+06
+-6.785e+06 -2.2783e+06
+-6.7668e+06 -2.2766e+06
+-6.7541e+06 -2.2651e+06
+-6.7389e+06 -2.2107e+06
+-6.7225e+06 -2.0999e+06
+-6.7148e+06 -1.9406e+06
+-6.731e+06 -1.7562e+06
+-6.7866e+06 -1.5761e+06
+-6.8926e+06 -1.4261e+06
+-7.0525e+06 -1.3219e+06
+-7.2623e+06 -1.2666e+06
+-7.5116e+06 -1.2525e+06
+675490 -255000
+678530 -256170
+680430 -256650
+681120 -256310
+680540 -255040
+678670 -252840
+675510 -249760
+671110 -245960
+665530 -241620
+658870 -236990
+651220 -232270
+642680 -227630
+633310 -223140
+623190 -218780
+612360 -214440
+600890 -209930
+588810 -205100
+576200 -199810
+563140 -194040
+549750 -187840
+536140 -181370
+522430 -174810
+508730 -168340
+495110 -162090
+481640 -156120
+468370 -150400
+455340 -144870
+442580 -139470
+430150 -134160
+418100 -128940
+406470 -123860
+395320 -118980
+384660 -114350
+374510 -110000
+364840 -105930
+355610 -102120
+346790 -98538
+338320 -95143
+330160 -91916
+322260 -88848
+314580 -85939
+307090 -83186
+299740 -80580
+292500 -78104
+285340 -75733
+278210 -73443
+271080 -71211
+263910 -69019
+256660 -66853
+249310 -64704
+241810 -62560
+234160 -60413
+226340 -58255
+218340 -56077
+210170 -53876
+201840 -51649
+193360 -49398
+184750 -47123
+176040 -44829
+167260 -42519
+158440 -40201
+149610 -37883
+140820 -35577
+132100 -33295
+123500 -31050
+115050 -28856
+106790 -26724
+98759 -24665
+90988 -22686
+83503 -20795
+76330 -18996
+69490 -17292
+62999 -15683
+56871 -14169
+51121 -12745
+45757 -11401
+40793 -10124
+36241 -8893.6
+32121 -7683
+28460 -6454.4
+25301 -5156.8
+22708 -3719.9
+20781 -2046.2
+19671 2.3893
+19608 2624.6
+20940 6112.3
+24202 10901
+30211 17654
+40239 27392
+56272 41718
+81449 63185
+120780 95916
+182310 146690
+279120 226880
+432530 355940
+677280 568060
+1.0693e+06 925370
+1.6939e+06 1.5452e+06
+2.6579e+06 2.6588e+06
+3.9826e+06 4.7316e+06
+5.1024e+06 8.5684e+06
+4.1219e+06 1.4043e+07
+2.2321e+06 1.5852e+07
+1.0221e+06 1.5145e+07
+443130 1.3735e+07
+197980 1.2339e+07
+95306 1.1166e+07
+50375 1.0231e+07
+31779 9.4825e+06
+24596 8.8718e+06
+20807 8.367e+06
+18068 7.9471e+06
+15463 7.5917e+06
+14421 7.2798e+06
+13863 7.0055e+06
+12238 6.7624e+06
+10806 6.5447e+06
+10032 6.3456e+06
+9373.3 6.1631e+06
+8653.9 5.9953e+06
+7784.8 5.8406e+06
+6989 5.6973e+06
+6492 5.5637e+06
+6109.1 5.4389e+06
+5574.9 5.323e+06
+4972.6 5.2153e+06
+4529.6 5.115e+06
+4235.8 5.0213e+06
+3915.2 4.9344e+06
+3518.1 4.8541e+06
+3142.1 4.78e+06
+2854.6 4.7116e+06
+2623.8 4.6488e+06
+2379.1 4.5916e+06
+2093.8 4.5397e+06
+1818.6 4.4931e+06
+1608.4 4.4513e+06
+1433 4.4144e+06
+1227.5 4.3822e+06
+995.76 4.3547e+06
+789.18 4.3318e+06
+620.19 4.3132e+06
+458.03 4.2989e+06
+277.11 4.2889e+06
+81.083 4.2832e+06
+-103.07 4.2816e+06
+-259.6 4.284e+06
+-412.91 4.2905e+06
+-592.85 4.301e+06
+-786.11 4.3155e+06
+-961.82 4.3339e+06
+-1122 4.3562e+06
+-1292.5 4.3824e+06
+-1485.4 4.4126e+06
+-1689 4.4466e+06
+-1882.8 4.4844e+06
+-2064.5 4.5261e+06
+-2260.2 4.5715e+06
+-2487.1 4.6209e+06
+-2723.8 4.674e+06
+-2946.4 4.7309e+06
+-3166.4 4.7914e+06
+-3409.1 4.8557e+06
+-3681.5 4.9236e+06
+-3968.4 4.9952e+06
+-4245.8 5.0704e+06
+-4514.2 5.1489e+06
+-4812.4 5.2309e+06
+-5161.4 5.3164e+06
+-5522 5.4052e+06
+-5856.6 5.4972e+06
+-6191.5 5.5924e+06
+-6577.7 5.6908e+06
+-7023.3 5.7926e+06
+-7482.1 5.8977e+06
+-7902.9 6.0061e+06
+-8318.7 6.1182e+06
+-8839.3 6.2346e+06
+-9474.9 6.3559e+06
+-10078 6.4826e+06
+-10596 6.6159e+06
+-11224 6.7575e+06
+-12110 6.9101e+06
+-13076 7.0764e+06
+-13925 7.2597e+06
+-14866 7.4656e+06
+-16239 7.7016e+06
+-17997 7.977e+06
+-19837 8.3033e+06
+-21415 8.6953e+06
+-23916 9.1754e+06
+-27955 9.774e+06
+-32343 1.0524e+07
+-35764 1.1472e+07
+-42847 1.2687e+07
+-55793 1.4257e+07
+-81467 1.6302e+07
+-139790 1.8981e+07
+-276380 2.2496e+07
+-604150 2.7093e+07
+-1.4191e+06 3.3035e+07
+-3.4038e+06 4.0409e+07
+-7.7264e+06 4.8195e+07
+-1.4956e+07 5.171e+07
+-1.9768e+07 4.0913e+07
+-1.6502e+07 2.4742e+07
+-1.1724e+07 1.4598e+07
+-7.9179e+06 8.8576e+06
+-5.2756e+06 5.5417e+06
+-3.5144e+06 3.5552e+06
+-2.3549e+06 2.326e+06
+-1.5941e+06 1.5451e+06
+-1.0954e+06 1.0385e+06
+-769260 704350
+-557140 480770
+-420620 329450
+-334440 225980
+-281950 154560
+-252180 104750
+-237920 69560
+-234530 44210
+-239050 25371
+-249750 10665
+-265700 -1646.8
+-286540 -12862
+-312300 -23961
+-343280 -35696
+-379970 -48667
+-423040 -63404
+-473270 -80428
+-531560 -100300
+-598890 -123600
+-676280 -150920
+-764740 -182810
+-865240 -219800
+-978680 -262400
+-1.1059e+06 -311240
+-1.2477e+06 -367000
+-1.4049e+06 -430310
+-1.5782e+06 -501570
+-1.7683e+06 -580790
+-1.9758e+06 -667740
+-2.2014e+06 -762360
+-2.4456e+06 -865160
+-2.7086e+06 -977290
+-2.9902e+06 -1.0998e+06
+-3.2892e+06 -1.2325e+06
+-3.6037e+06 -1.3727e+06
+-3.9309e+06 -1.5163e+06
+-4.2682e+06 -1.6588e+06
+-4.6138e+06 -1.7991e+06
+-4.9666e+06 -1.9407e+06
+-5.3261e+06 -2.0906e+06
+-5.6911e+06 -2.2551e+06
+-6.0586e+06 -2.4345e+06
+-6.4244e+06 -2.6217e+06
+-6.7844e+06 -2.8046e+06
+-7.1363e+06 -2.9742e+06
+-7.4806e+06 -3.1304e+06
+-7.8191e+06 -3.2821e+06
+-8.1517e+06 -3.4401e+06
+-8.4733e+06 -3.6063e+06
+-8.7737e+06 -3.7684e+06
+-9.0413e+06 -3.9051e+06
+-9.2689e+06 -4.0004e+06
+-9.4582e+06 -4.0575e+06
+-9.6195e+06 -4.1013e+06
+-9.7653e+06 -4.1651e+06
+-9.9025e+06 -4.2685e+06
+-1.0026e+07 -4.4012e+06
+-1.0123e+07 -4.525e+06
+-1.0177e+07 -4.5949e+06
+-1.0181e+07 -4.5871e+06
+-1.0143e+07 -4.5152e+06
+-1.0078e+07 -4.4225e+06
+-1.0003e+07 -4.3558e+06
+-9.9275e+06 -4.3353e+06
+-9.8433e+06 -4.3424e+06
+-9.7355e+06 -4.3318e+06
+-9.5905e+06 -4.2613e+06
+-9.4064e+06 -4.1194e+06
+-9.1956e+06 -3.9334e+06
+-8.9794e+06 -3.7537e+06
+-8.7776e+06 -3.6235e+06
+-8.5985e+06 -3.5542e+06
+-8.4367e+06 -3.5194e+06
+-8.2778e+06 -3.4706e+06
+-8.107e+06 -3.3648e+06
+-7.9184e+06 -3.1875e+06
+-7.7174e+06 -2.9595e+06
+-7.5188e+06 -2.7253e+06
+-7.3396e+06 -2.5316e+06
+-7.1918e+06 -2.4059e+06
+-7.0784e+06 -2.3464e+06
+-6.9935e+06 -2.3258e+06
+-6.9265e+06 -2.3047e+06
+-6.8671e+06 -2.2476e+06
+-6.8102e+06 -2.1356e+06
+-6.7572e+06 -1.9708e+06
+-6.7161e+06 -1.7721e+06
+-6.6981e+06 -1.5678e+06
+-6.7142e+06 -1.3853e+06
+-6.7726e+06 -1.2439e+06
+-6.8765e+06 -1.1514e+06
+-7.0244e+06 -1.104e+06
+694400 -256600
+694870 -256850
+694100 -256350
+692030 -254970
+688620 -252640
+683890 -249380
+677870 -245280
+670630 -240510
+662270 -235290
+652900 -229850
+642640 -224420
+631570 -219130
+619790 -214060
+607340 -209170
+594280 -204320
+580650 -199350
+566510 -194100
+551930 -188470
+537020 -182420
+521890 -176060
+506690 -169520
+491540 -162990
+476550 -156640
+461810 -150580
+447370 -144820
+433280 -139350
+419550 -134100
+406230 -129010
+393340 -124030
+380910 -119180
+368990 -114490
+357590 -110020
+346730 -105820
+336410 -101880
+326590 -98208
+317230 -94758
+308290 -91492
+299710 -88373
+291430 -85382
+283420 -82514
+275630 -79769
+268010 -77148
+260520 -74642
+253120 -72236
+245790 -69908
+238480 -67632
+231170 -65389
+223830 -63162
+216430 -60941
+208950 -58718
+201380 -56488
+193700 -54247
+185930 -51992
+178050 -49721
+170090 -47436
+162070 -45140
+153990 -42836
+145890 -40531
+137810 -38228
+129760 -35936
+121790 -33661
+113920 -31415
+106190 -29208
+98632 -27053
+91281 -24963
+84164 -22949
+77309 -21020
+70738 -19184
+64469 -17445
+58518 -15806
+52896 -14270
+47609 -12837
+42662 -11505
+38057 -10271
+33794 -9128.6
+29873 -8068.4
+26295 -7077.5
+23062 -6138.4
+20182 -5228.3
+17670 -4317
+15555 -3365.1
+13884 -2319.9
+12733 -1110
+12218 363.66
+12520 2241.4
+13913 4726.1
+16815 8116.9
+21867 12864
+30065 19652
+42964 29549
+63026 44236
+94206 66411
+142940 100480
+219880 153780
+342990 238860
+543160 377870
+874790 611610
+1.436e+06 1.02e+06
+2.4053e+06 1.7758e+06
+4.0734e+06 3.3148e+06
+6.4396e+06 7.0038e+06
+5.0459e+06 1.6595e+07
+2.4768e+06 1.7043e+07
+911130 1.5826e+07
+303970 1.4212e+07
+157270 1.2518e+07
+93996 1.1179e+07
+33498 1.0248e+07
+13609 9.5179e+06
+23826 8.8769e+06
+24069 8.3484e+06
+11653 7.944e+06
+4262.1 7.6097e+06
+10372 7.285e+06
+16210 6.9963e+06
+9349.5 6.7575e+06
+4390 6.5521e+06
+6313.8 6.3501e+06
+8326.9 6.1617e+06
+7983.2 5.9918e+06
+5199.1 5.8406e+06
+3315.2 5.7011e+06
+4453.5 5.5658e+06
+5832.3 5.4369e+06
+4687.3 5.3211e+06
+2661.8 5.2168e+06
+2434.2 5.1174e+06
+3463.9 5.0214e+06
+3595 4.9329e+06
+2544.7 4.8537e+06
+1682.9 4.7812e+06
+1746.8 4.7127e+06
+2190.3 4.6487e+06
+2141.1 4.5908e+06
+1453.6 4.5397e+06
+882.74 4.494e+06
+1009 4.452e+06
+1335.3 4.4141e+06
+1126.3 4.3817e+06
+568.39 4.3549e+06
+305.8 4.3325e+06
+427.68 4.3135e+06
+533 4.2987e+06
+340.27 4.2887e+06
+-50.039 4.2834e+06
+-277.31 4.2821e+06
+-179.79 4.2843e+06
+-90.056 4.2902e+06
+-337.84 4.3008e+06
+-707.58 4.3158e+06
+-826.55 4.3344e+06
+-746.38 4.3563e+06
+-767.91 4.3822e+06
+-1011.2 4.4125e+06
+-1331.1 4.4469e+06
+-1479.1 4.4849e+06
+-1414.1 4.5262e+06
+-1436.6 4.5713e+06
+-1752.3 4.6208e+06
+-2110.3 4.6744e+06
+-2215.3 4.7313e+06
+-2176.3 4.7915e+06
+-2274 4.8555e+06
+-2602.8 4.9237e+06
+-3011.9 4.9957e+06
+-3206.7 5.0709e+06
+-3122.2 5.149e+06
+-3178.7 5.2306e+06
+-3691.6 5.3164e+06
+-4265.4 5.406e+06
+-4379 5.4979e+06
+-4215.1 5.5923e+06
+-4381 5.6903e+06
+-5099 5.7927e+06
+-5863 5.8988e+06
+-5919.8 6.0071e+06
+-5461.9 6.1178e+06
+-5805.8 6.2335e+06
+-7304.2 6.3566e+06
+-8200.9 6.485e+06
+-7407.5 6.6165e+06
+-6905 6.7556e+06
+-8712.9 6.9097e+06
+-10953 7.0796e+06
+-10614 7.2623e+06
+-9187.7 7.4637e+06
+-10686 7.6993e+06
+-15005 7.9804e+06
+-17416 8.3108e+06
+-12492 8.6937e+06
+-12150 9.1642e+06
+-24839 9.7806e+06
+-35005 1.0547e+07
+-24811 1.1481e+07
+-17328 1.2665e+07
+-29700 1.4233e+07
+-70491 1.6329e+07
+-148280 1.9098e+07
+-261420 2.2707e+07
+-413650 2.7299e+07
+-953180 3.3323e+07
+-3.1079e+06 4.2136e+07
+-8.6756e+06 5.4176e+07
+-1.8272e+07 6.1802e+07
+-2.5428e+07 4.06e+07
+-1.7317e+07 1.896e+07
+-1.0925e+07 1.0215e+07
+-6.9406e+06 6.0326e+06
+-4.4889e+06 3.7568e+06
+-2.9574e+06 2.4208e+06
+-1.9851e+06 1.5977e+06
+-1.3596e+06 1.0736e+06
+-953460 731390
+-688290 503730
+-514900 349910
+-401890 244650
+-328930 171820
+-282740 120910
+-254610 84963
+-238780 59270
+-231540 40597
+-230510 26666
+-234260 15824
+-242010 6836.8
+-253420 -1239.7
+-268510 -9139.8
+-287490 -17440
+-310760 -26609
+-338850 -37063
+-372440 -49219
+-412310 -63534
+-459390 -80519
+-514660 -100710
+-579150 -124650
+-653900 -152860
+-739890 -185930
+-838100 -224480
+-949470 -269220
+-1.0749e+06 -320810
+-1.2154e+06 -379660
+-1.3717e+06 -445810
+-1.5447e+06 -519060
+-1.7352e+06 -599360
+-1.9441e+06 -687250
+-2.172e+06 -784010
+-2.4194e+06 -891090
+-2.686e+06 -1.0089e+06
+-2.9706e+06 -1.1355e+06
+-3.2713e+06 -1.2673e+06
+-3.5857e+06 -1.3999e+06
+-3.9121e+06 -1.5317e+06
+-4.2492e+06 -1.6654e+06
+-4.5969e+06 -1.8077e+06
+-4.9547e+06 -1.9652e+06
+-5.3213e+06 -2.1394e+06
+-5.694e+06 -2.3238e+06
+-6.0699e+06 -2.5066e+06
+-6.447e+06 -2.6773e+06
+-6.8248e+06 -2.8343e+06
+-7.2033e+06 -2.9865e+06
+-7.5808e+06 -3.1469e+06
+-7.9508e+06 -3.3216e+06
+-8.302e+06 -3.5018e+06
+-8.6221e+06 -3.6661e+06
+-8.9035e+06 -3.7935e+06
+-9.1479e+06 -3.8793e+06
+-9.3663e+06 -3.9416e+06
+-9.5728e+06 -4.0131e+06
+-9.7757e+06 -4.1197e+06
+-9.9715e+06 -4.2614e+06
+-1.0145e+07 -4.4078e+06
+-1.0276e+07 -4.5144e+06
+-1.0355e+07 -4.5493e+06
+-1.0383e+07 -4.5141e+06
+-1.0376e+07 -4.4442e+06
+-1.0352e+07 -4.3866e+06
+-1.032e+07 -4.3706e+06
+-1.0275e+07 -4.3892e+06
+-1.0202e+07 -4.4039e+06
+-1.0085e+07 -4.3701e+06
+-9.9174e+06 -4.2654e+06
+-9.711e+06 -4.1045e+06
+-9.4884e+06 -3.9308e+06
+-9.2725e+06 -3.7898e+06
+-9.0761e+06 -3.7034e+06
+-8.8956e+06 -3.6574e+06
+-8.7152e+06 -3.6115e+06
+-8.5161e+06 -3.5223e+06
+-8.2868e+06 -3.3675e+06
+-8.0295e+06 -3.1571e+06
+-7.7584e+06 -2.9273e+06
+-7.4942e+06 -2.7218e+06
+-7.2552e+06 -2.5721e+06
+-7.0514e+06 -2.4839e+06
+-6.8822e+06 -2.4378e+06
+-6.7392e+06 -2.3994e+06
+-6.6105e+06 -2.334e+06
+-6.4864e+06 -2.22e+06
+-6.3627e+06 -2.0541e+06
+-6.2416e+06 -1.8505e+06
+-6.1307e+06 -1.6337e+06
+-6.0405e+06 -1.4302e+06
+-5.9812e+06 -1.2602e+06
+-5.9612e+06 -1.1339e+06
+-5.9853e+06 -1.0507e+06
+723430 -255830
+720730 -255100
+716730 -253550
+711370 -251090
+704660 -247690
+696640 -243380
+687380 -238300
+677000 -232630
+665630 -226610
+653400 -220480
+640430 -214430
+626800 -208610
+612580 -203050
+597810 -197700
+582530 -192430
+566770 -187070
+550590 -181480
+534080 -175570
+517350 -169360
+500540 -162930
+483810 -156450
+467280 -150080
+451070 -143970
+435260 -138210
+419890 -132790
+405000 -127680
+390600 -122800
+376700 -118090
+363320 -113520
+350490 -109100
+338220 -104860
+326540 -100850
+315430 -97089
+304870 -93591
+294840 -90324
+285290 -87244
+276160 -84305
+267410 -81472
+258970 -78726
+250820 -76064
+242880 -73489
+235140 -71003
+227530 -68601
+220020 -66268
+212590 -63985
+205190 -61732
+197810 -59491
+190430 -57249
+183020 -55001
+175590 -52742
+168110 -50471
+160600 -48187
+153060 -45894
+145500 -43594
+137940 -41293
+130390 -38998
+122880 -36716
+115450 -34454
+108100 -32218
+100890 -30016
+93825 -27856
+86946 -25748
+80276 -23702
+73842 -21730
+67666 -19842
+61766 -18047
+56160 -16351
+50857 -14758
+45867 -13270
+41193 -11887
+36837 -10608
+32795 -9432.1
+29064 -8354.5
+25637 -7370.9
+22507 -6474.1
+19667 -5654.9
+17109 -4901.5
+14830 -4198.6
+12831 -3527.6
+11120 -2864.8
+9713.8 -2180.4
+8646.9 -1436
+7974.7 -580.79
+7785.1 453.84
+8213.5 1763.2
+9466.4 3482.7
+11858 5808.5
+15867 9030.4
+22231 13585
+32100 20137
+47285 29720
+70687 43960
+107030 65460
+164180 98459
+255510 150010
+404520 232190
+654130 366360
+1.0875e+06 592490
+1.8806e+06 992050
+3.4707e+06 1.7637e+06
+7.1887e+06 3.7523e+06
+8.0547e+06 2.0367e+07
+2.1191e+06 1.2218e+07
+-878610 1.714e+07
+-368170 1.5999e+07
+330680 1.2435e+07
+123270 1.0788e+07
+-124070 1.0423e+07
+2403.9 9.6868e+06
+125190 8.7106e+06
+19599 8.2115e+06
+-84530 8.0579e+06
+-17801 7.74e+06
+59623 7.2277e+06
+41650 6.8873e+06
+-35783 6.7854e+06
+-20504 6.6295e+06
+20391 6.3483e+06
+25483 6.1173e+06
+2573.1 5.9708e+06
+-16441 5.8669e+06
+-5649.9 5.7321e+06
+15566 5.5553e+06
+13133 5.4069e+06
+-6017.5 5.32e+06
+-10476 5.2412e+06
+3070.8 5.1268e+06
+10806 5.006e+06
+3180.1 4.9203e+06
+-5438.9 4.8604e+06
+-3624.6 4.7936e+06
+3338.1 4.7139e+06
+5535.5 4.6397e+06
+1086.5 4.585e+06
+-3490.5 4.5445e+06
+-2012.7 4.5018e+06
+2827.3 4.4515e+06
+3490.3 4.4072e+06
+-448.03 4.3794e+06
+-2496.4 4.3596e+06
+-412.09 4.3363e+06
+1785 4.312e+06
+1396.2 4.2951e+06
+-379.07 4.2876e+06
+-1426.6 4.2859e+06
+-631.21 4.2849e+06
+942.26 4.2836e+06
+887.16 4.2873e+06
+-708.21 4.3002e+06
+-1234.9 4.3181e+06
+-267.74 4.3359e+06
+184.26 4.3556e+06
+-219.45 4.381e+06
+-427.05 4.412e+06
+-598.08 4.4475e+06
+-970.04 4.4864e+06
+-810.93 4.5267e+06
+-251.81 4.5699e+06
+-251.99 4.6196e+06
+-807.53 4.675e+06
+-1392.7 4.7329e+06
+-1612.8 4.7925e+06
+-839.58 4.8548e+06
+267.65 4.9214e+06
+-541.47 4.9949e+06
+-2903.9 5.074e+06
+-3018.4 5.1522e+06
+-164.46 5.2284e+06
+1112.8 5.3116e+06
+-1748.2 5.4062e+06
+-4929.1 5.5039e+06
+-3703.9 5.5959e+06
+736.65 5.6856e+06
+1841.1 5.7854e+06
+-3719.8 5.9008e+06
+-8718.6 6.0185e+06
+-3911.7 6.1211e+06
+4686.9 6.2202e+06
+1375.5 6.3471e+06
+-11581 6.4989e+06
+-12583 6.6341e+06
+2524.9 6.7451e+06
+7640.1 6.8857e+06
+-10413 7.0861e+06
+-22947 7.2942e+06
+-5573.8 7.4654e+06
+14619 7.6598e+06
+-2025 7.9659e+06
+-44482 8.3734e+06
+-28326 8.738e+06
+52761 9.0515e+06
+27994 9.692e+06
+-97517 1.0687e+07
+-147840 1.1726e+07
+12128 1.2612e+07
+191010 1.3838e+07
+173010 1.5968e+07
+-215240 1.9387e+07
+-945990 2.4202e+07
+-787980 2.8607e+07
+1.9158e+06 3.0168e+07
+3.1178e+06 3.6397e+07
+-8.3246e+06 6.6238e+07
+-3.0011e+07 1.0611e+08
+-2.9548e+07 2.8354e+07
+-1.5355e+07 1.0328e+07
+-8.8977e+06 5.7774e+06
+-5.4955e+06 3.5566e+06
+-3.534e+06 2.2904e+06
+-2.3439e+06 1.518e+06
+-1.598e+06 1.0272e+06
+-1.1199e+06 706250
+-808730 491930
+-604100 346360
+-468720 246080
+-378950 176170
+-319570 126900
+-280600 91838
+-255470 66636
+-239840 48326
+-230820 34838
+-226580 24693
+-225970 16793
+-228350 10298
+-233440 4540.4
+-241210 -1016
+-251800 -6804.7
+-265510 -13183
+-282740 -20465
+-304040 -28969
+-330070 -39050
+-361610 -51118
+-399550 -65638
+-444880 -83104
+-498580 -104040
+-561640 -129030
+-635080 -158700
+-719880 -193780
+-817070 -234910
+-927640 -282500
+-1.0526e+06 -336650
+-1.1929e+06 -397150
+-1.3494e+06 -463950
+-1.5233e+06 -537580
+-1.7154e+06 -619350
+-1.9266e+06 -710880
+-2.1573e+06 -813040
+-2.4073e+06 -924730
+-2.6752e+06 -1.0428e+06
+-2.9592e+06 -1.1633e+06
+-3.2576e+06 -1.2843e+06
+-3.5695e+06 -1.4078e+06
+-3.8949e+06 -1.5398e+06
+-4.2343e+06 -1.6868e+06
+-4.5879e+06 -1.8508e+06
+-4.9546e+06 -2.0264e+06
+-5.3323e+06 -2.2024e+06
+-5.7186e+06 -2.3679e+06
+-6.1115e+06 -2.5209e+06
+-6.5094e+06 -2.6702e+06
+-6.9089e+06 -2.8307e+06
+-7.3036e+06 -3.0115e+06
+-7.6833e+06 -3.2069e+06
+-8.0371e+06 -3.3953e+06
+-8.3578e+06 -3.5512e+06
+-8.6466e+06 -3.6623e+06
+-8.9133e+06 -3.7406e+06
+-9.1711e+06 -3.8172e+06
+-9.4281e+06 -3.9242e+06
+-9.6811e+06 -4.0716e+06
+-9.9149e+06 -4.2379e+06
+-1.0109e+07 -4.3803e+06
+-1.0249e+07 -4.4598e+06
+-1.0335e+07 -4.4663e+06
+-1.0378e+07 -4.4256e+06
+-1.0396e+07 -4.3834e+06
+-1.04e+07 -4.3769e+06
+-1.0385e+07 -4.411e+06
+-1.0337e+07 -4.455e+06
+-1.0239e+07 -4.463e+06
+-1.0084e+07 -4.4022e+06
+-9.8825e+06 -4.2742e+06
+-9.6554e+06 -4.1138e+06
+-9.4271e+06 -3.9681e+06
+-9.2112e+06 -3.869e+06
+-9.0047e+06 -3.8163e+06
+-8.7908e+06 -3.7787e+06
+-8.5491e+06 -3.7136e+06
+-8.2665e+06 -3.5908e+06
+-7.9446e+06 -3.408e+06
+-7.5994e+06 -3.1911e+06
+-7.2545e+06 -2.9798e+06
+-6.9316e+06 -2.8084e+06
+-6.6434e+06 -2.691e+06
+-6.3908e+06 -2.6172e+06
+-6.1652e+06 -2.5593e+06
+-5.9538e+06 -2.4847e+06
+-5.7457e+06 -2.3693e+06
+-5.5353e+06 -2.2051e+06
+-5.3241e+06 -2.0009e+06
+-5.1192e+06 -1.7771e+06
+-4.9305e+06 -1.5581e+06
+-4.7685e+06 -1.3643e+06
+-4.6418e+06 -1.2077e+06
+-4.5565e+06 -1.0898e+06
+754720 -252200
+748260 -250450
+740470 -247840
+731340 -244300
+720900 -239840
+709240 -234560
+696500 -228600
+682810 -222170
+668350 -215510
+653250 -208840
+637620 -202350
+621540 -196130
+605040 -190210
+588140 -184510
+570840 -178890
+553170 -173220
+535180 -167370
+516970 -161290
+498680 -155010
+480450 -148640
+462460 -142340
+444820 -136250
+427650 -130510
+411020 -125160
+394960 -120180
+379470 -115510
+364560 -111080
+350240 -106830
+336510 -102720
+323390 -98769
+310880 -95014
+298980 -91486
+287690 -88203
+276960 -85153
+266770 -82300
+257060 -79595
+247780 -76990
+238880 -74451
+230320 -71961
+222050 -69519
+214020 -67128
+206190 -64792
+198530 -62507
+191000 -60263
+183560 -58043
+176180 -55833
+168860 -53620
+161570 -51396
+154300 -49158
+147060 -46907
+139850 -44643
+132660 -42371
+125520 -40097
+118420 -37828
+111400 -35573
+104470 -33341
+97651 -31141
+90970 -28982
+84452 -26869
+78120 -24810
+71998 -22813
+66107 -20885
+60466 -19037
+55093 -17278
+50000 -15614
+45198 -14051
+40692 -12594
+36485 -11243
+32577 -9997.2
+28963 -8854.5
+25639 -7812
+22594 -6865.8
+19820 -6011
+17305 -5241.7
+15037 -4550.6
+13006 -3928.9
+11201 -3365.9
+9614.7 -2848.7
+8243.8 -2362.4
+7090.8 -1888.7
+6166.8 -1405.6
+5494.5 -885.79
+5113.6 -294.16
+5087.4 415.39
+5513.9 1305.2
+6541.7 2461.7
+8395.4 4007.6
+11414 6120.3
+16117 9060.4
+23299 13217
+34205 19176
+50802 27836
+76258 40577
+115770 59551
+178080 88136
+278280 131660
+443410 198570
+724210 302180
+1.2217e+06 463350
+2.1492e+06 714680
+3.9451e+06 1.0608e+06
+1.9197e+07 -2.3169e+06
+-4.4109e+06 5.1685e+07
+7.2043e+06 1.7836e+07
+2.7412e+06 8.9966e+06
+-1.1737e+06 1.2506e+07
+-198430 1.2861e+07
+824270 1.0076e+07
+118910 8.9189e+06
+-393720 9.2665e+06
+96945 8.8572e+06
+470290 7.6913e+06
+109920 7.1865e+06
+-247350 7.4101e+06
+-58581 7.3261e+06
+235890 6.7389e+06
+131500 6.31e+06
+-68089 6.3256e+06
+-62161 6.3066e+06
+60243 6.0677e+06
+114920 5.7712e+06
+35938 5.6097e+06
+-51612 5.5899e+06
+-21020 5.5283e+06
+61230 5.3358e+06
+60215 5.1479e+06
+-9263.2 5.0837e+06
+-33122 5.0653e+06
+10268 4.9756e+06
+41983 4.8382e+06
+21754 4.7438e+06
+-10808 4.7077e+06
+-12961 4.6758e+06
+10300 4.6103e+06
+24636 4.5276e+06
+10842 4.4708e+06
+-10289 4.4522e+06
+-8002.2 4.4353e+06
+10404 4.391e+06
+14131 4.3422e+06
+417.05 4.3204e+06
+-7881.6 4.3178e+06
+-2740.7 4.3104e+06
+4388.8 4.293e+06
+4557.3 4.2766e+06
+-1614.2 4.2739e+06
+-6913.7 4.2865e+06
+-4463.4 4.3e+06
+983.79 4.3039e+06
+-742.34 4.3094e+06
+-6562.9 4.3298e+06
+-6569.4 4.3591e+06
+-3549.8 4.3874e+06
+-5220.3 4.415e+06
+-8189.6 4.4451e+06
+-7159.9 4.4804e+06
+-5819.8 4.5254e+06
+-7993.6 4.5768e+06
+-11379 4.6255e+06
+-12599 4.6728e+06
+-10080 4.7267e+06
+-6930.6 4.7896e+06
+-10861 4.8593e+06
+-20318 4.9315e+06
+-20748 4.998e+06
+-9730.7 5.0619e+06
+-6779.7 5.1417e+06
+-21133 5.2399e+06
+-33154 5.3316e+06
+-25093 5.4047e+06
+-9534.7 5.4813e+06
+-12181 5.5852e+06
+-35766 5.7079e+06
+-50413 5.8154e+06
+-31079 5.8914e+06
+-5161.4 5.9748e+06
+-24270 6.1153e+06
+-73097 6.2796e+06
+-74330 6.3827e+06
+-20729 6.4415e+06
+-10203 6.5751e+06
+-84204 6.8021e+06
+-134340 6.983e+06
+-75061 7.0553e+06
+-12756 7.1757e+06
+-87689 7.4806e+06
+-212820 7.8341e+06
+-160950 8.0027e+06
+45330 8.0993e+06
+-38053 8.6527e+06
+-471390 9.5606e+06
+-506260 1.0018e+07
+41350 1.0064e+07
+311450 1.0889e+07
+-353780 1.2971e+07
+-1.3518e+06 1.547e+07
+-1.9263e+06 1.7529e+07
+-842920 1.8349e+07
+2.7397e+06 1.8247e+07
+2.6783e+06 2.5085e+07
+-1.2562e+07 4.8292e+07
+-2.7015e+07 6.3394e+07
+1.5833e+07 1.6271e+07
+-7.6952e+07 1.3132e+08
+-1.7518e+07 4.1068e+06
+-1.0088e+07 3.8718e+06
+-6.1184e+06 2.6404e+06
+-3.889e+06 1.8114e+06
+-2.5674e+06 1.2538e+06
+-1.7507e+06 876030
+-1.2308e+06 618000
+-892470 440100
+-668830 316240
+-519270 229160
+-418410 167360
+-350030 123090
+-303560 91096
+-271970 67760
+-250610 50590
+-236310 37843
+-226980 28278
+-221240 20989
+-218200 15288
+-217370 10624
+-218490 6542.6
+-221510 2659.1
+-226520 -1347.5
+-233730 -5745
+-243420 -10766
+-256000 -16640
+-271990 -23623
+-292010 -32029
+-316830 -42235
+-347280 -54673
+-384270 -69835
+-428720 -88278
+-481590 -110640
+-543860 -137590
+-616580 -169760
+-700780 -207570
+-797500 -251110
+-907730 -300230
+-1.0325e+06 -354860
+-1.1727e+06 -415470
+-1.3297e+06 -483310
+-1.5045e+06 -560060
+-1.6981e+06 -646890
+-1.9107e+06 -743320
+-2.1419e+06 -846870
+-2.3902e+06 -954110
+-2.6543e+06 -1.063e+06
+-2.9334e+06 -1.1747e+06
+-3.2279e+06 -1.2945e+06
+-3.5393e+06 -1.4283e+06
+-3.8688e+06 -1.5784e+06
+-4.2164e+06 -1.7407e+06
+-4.5803e+06 -1.905e+06
+-4.9575e+06 -2.0614e+06
+-5.3444e+06 -2.2076e+06
+-5.7379e+06 -2.3525e+06
+-6.1345e+06 -2.5115e+06
+-6.5292e+06 -2.6959e+06
+-6.9147e+06 -2.9017e+06
+-7.2826e+06 -3.1077e+06
+-7.6267e+06 -3.2854e+06
+-7.9465e+06 -3.4168e+06
+-8.2483e+06 -3.5081e+06
+-8.542e+06 -3.5892e+06
+-8.8344e+06 -3.6963e+06
+-9.123e+06 -3.8485e+06
+-9.3944e+06 -4.0326e+06
+-9.6298e+06 -4.2084e+06
+-9.8139e+06 -4.3316e+06
+-9.9428e+06 -4.3817e+06
+-1.0025e+07 -4.3746e+06
+-1.0075e+07 -4.3539e+06
+-1.0103e+07 -4.3626e+06
+-1.0108e+07 -4.4162e+06
+-1.0076e+07 -4.492e+06
+-9.9934e+06 -4.5438e+06
+-9.8516e+06 -4.5299e+06
+-9.6583e+06 -4.4393e+06
+-9.4331e+06 -4.2984e+06
+-9.1979e+06 -4.1549e+06
+-8.9654e+06 -4.0507e+06
+-8.7325e+06 -3.9983e+06
+-8.4831e+06 -3.9763e+06
+-8.1975e+06 -3.9422e+06
+-7.8645e+06 -3.8573e+06
+-7.4878e+06 -3.7067e+06
+-7.0856e+06 -3.5054e+06
+-6.6832e+06 -3.2893e+06
+-6.3028e+06 -3.0969e+06
+-5.9557e+06 -2.9514e+06
+-5.6405e+06 -2.8525e+06
+-5.3466e+06 -2.7787e+06
+-5.0606e+06 -2.6988e+06
+-4.7729e+06 -2.5851e+06
+-4.4815e+06 -2.4235e+06
+-4.1918e+06 -2.2172e+06
+-3.9139e+06 -1.9834e+06
+-3.6588e+06 -1.7458e+06
+-3.4353e+06 -1.5267e+06
+-3.2484e+06 -1.3404e+06
+-3.0998e+06 -1.1909e+06
+784640 -245220
+773890 -242480
+761870 -238830
+748600 -234270
+734150 -228860
+718660 -222740
+702320 -216080
+685310 -209090
+667810 -202010
+649960 -195030
+631860 -188290
+613550 -181860
+595030 -175720
+576270 -169790
+557250 -163950
+537980 -158060
+518530 -152050
+498990 -145890
+479500 -139660
+460240 -133470
+441350 -127470
+422980 -121790
+405200 -116510
+388070 -111660
+371610 -107200
+355800 -103040
+340630 -99112
+326100 -95355
+312210 -91750
+298950 -88310
+286340 -85064
+274360 -82037
+262990 -79234
+252190 -76634
+241920 -74193
+232120 -71861
+222750 -69590
+213770 -67349
+205120 -65124
+196780 -62914
+188710 -60724
+180860 -58557
+173200 -56411
+165700 -54278
+158330 -52148
+151060 -50010
+143880 -47859
+136790 -45690
+129770 -43505
+122830 -41306
+115980 -39100
+109220 -36891
+102560 -34690
+96024 -32505
+89618 -30348
+83363 -28230
+77279 -26160
+71385 -24146
+65699 -22196
+60239 -20315
+55022 -18509
+50061 -16786
+45369 -15153
+40953 -13615
+36820 -12179
+32970 -10846
+29403 -9618.1
+26114 -8493.3
+23096 -7469.1
+20341 -6541.5
+17838 -5706
+15574 -4957.6
+13538 -4290.6
+11715 -3698.6
+10093 -3174.4
+8657.7 -2709.6
+7398.7 -2295.1
+6307 -1920.1
+5377.1 -1572.9
+4608.5 -1239.6
+4007.4 -904.34
+3588.7 -547.97
+3379.6 -146.9
+3423.9 328.86
+3789.8 918.62
+4579.7 1675.3
+5946.6 2671.8
+8119.5 4010.7
+11442 5838
+16433 8364.7
+23890 11897
+35044 16880
+51830 23964
+77328 34081
+116520 48551
+177570 69141
+274070 97992
+428770 137080
+679650 186810
+1.0921e+06 245850
+1.8438e+06 357420
+-2.6616e+06 4.1171e+06
+4.1597e+07 3.1745e+07
+-5.4125e+06 1.2152e+07
+-2.3405e+06 2.6182e+07
+4.3713e+06 1.425e+07
+1.8504e+06 8.6023e+06
+-609520 1.0584e+07
+416720 1.0655e+07
+1.1427e+06 8.4093e+06
+132970 7.6949e+06
+-506750 8.4351e+06
+135820 8.2638e+06
+673870 7.0595e+06
+205040 6.5014e+06
+-262480 6.8617e+06
+-69347 6.9429e+06
+287230 6.3758e+06
+212760 5.9019e+06
+-49082 5.9152e+06
+-101800 5.9982e+06
+59957 5.8308e+06
+171630 5.5042e+06
+77419 5.3085e+06
+-62225 5.3297e+06
+-37259 5.3344e+06
+83442 5.1558e+06
+98948 4.9438e+06
+6429.3 4.8791e+06
+-39635 4.8957e+06
+8677 4.8406e+06
+59177 4.71e+06
+45194 4.6044e+06
+-2589.7 4.5717e+06
+-20214 4.5686e+06
+9793.7 4.5285e+06
+39371 4.4454e+06
+22676 4.3826e+06
+-13051 4.3764e+06
+-13825 4.3807e+06
+12279 4.3489e+06
+19009 4.3035e+06
+701.91 4.2839e+06
+-13118 4.2894e+06
+-9384.7 4.2971e+06
+1076.8 4.2926e+06
+2856.3 4.2799e+06
+-8700.6 4.2798e+06
+-18662 4.302e+06
+-12738 4.3271e+06
+-4536.8 4.3396e+06
+-12288 4.3532e+06
+-23664 4.38e+06
+-20539 4.4134e+06
+-13595 4.4496e+06
+-19032 4.4906e+06
+-29589 4.5307e+06
+-31441 4.5697e+06
+-25366 4.6175e+06
+-22535 4.676e+06
+-32143 4.7382e+06
+-47176 4.8002e+06
+-46491 4.8578e+06
+-29971 4.9147e+06
+-29527 4.9905e+06
+-56412 5.0867e+06
+-73707 5.1695e+06
+-56084 5.2261e+06
+-35346 5.2956e+06
+-51274 5.4063e+06
+-90334 5.5286e+06
+-102900 5.6177e+06
+-71383 5.6756e+06
+-46064 5.7592e+06
+-85760 5.9101e+06
+-153670 6.0705e+06
+-147090 6.1451e+06
+-73626 6.1776e+06
+-75293 6.3191e+06
+-191790 6.5623e+06
+-257760 6.7135e+06
+-171380 6.7242e+06
+-99659 6.8166e+06
+-223470 7.1266e+06
+-401800 7.4397e+06
+-340860 7.4969e+06
+-116240 7.4924e+06
+-233550 7.9555e+06
+-728700 8.7306e+06
+-739070 8.9001e+06
+-102070 8.6637e+06
+-74553 9.4371e+06
+-1.2266e+06 1.1362e+07
+-2.0881e+06 1.2713e+07
+-1.6013e+06 1.2778e+07
+-336450 1.2831e+07
+621310 1.4484e+07
+-1.7747e+06 2.0501e+07
+-1.1042e+07 3.2236e+07
+-1.544e+07 3.4807e+07
+8.8338e+06 1.2137e+07
+1.6136e+07 2.9446e+07
+-1.5998e+08 2.2492e+08
+8.968e+06 -3.5753e+06
+-8.7182e+06 2.785e+06
+-5.5235e+06 1.2913e+06
+-3.6792e+06 1.0307e+06
+-2.5043e+06 812840
+-1.7444e+06 621770
+-1.2467e+06 467520
+-916280 349080
+-693980 260370
+-542730 194650
+-438840 146100
+-366910 110180
+-316790 83501
+-281680 63559
+-256980 48551
+-239540 37175
+-227210 28492
+-218500 21819
+-212440 16641
+-208350 12553
+-205860 9214.4
+-204750 6323.2
+-204980 3609.6
+-206580 837
+-209680 -2195
+-214490 -5656.1
+-221270 -9704.3
+-230420 -14515
+-242400 -20310
+-257810 -27376
+-277340 -36076
+-301750 -46850
+-331870 -60215
+-368550 -76772
+-412730 -97158
+-465380 -121960
+-527500 -151580
+-600120 -186120
+-684190 -225460
+-780700 -269530
+-890670 -318710
+-1.0153e+06 -374140
+-1.156e+06 -437430
+-1.3139e+06 -509920
+-1.4899e+06 -591640
+-1.6838e+06 -680800
+-1.8948e+06 -774520
+-2.1218e+06 -870730
+-2.3645e+06 -970110
+-2.6236e+06 -1.0767e+06
+-2.9008e+06 -1.1956e+06
+-3.1982e+06 -1.3297e+06
+-3.5163e+06 -1.4759e+06
+-3.8532e+06 -1.6261e+06
+-4.2051e+06 -1.7716e+06
+-4.5675e+06 -1.9103e+06
+-4.9365e+06 -2.0505e+06
+-5.3098e+06 -2.2068e+06
+-5.6851e+06 -2.3912e+06
+-6.0588e+06 -2.601e+06
+-6.4254e+06 -2.8162e+06
+-6.7788e+06 -3.0075e+06
+-7.1156e+06 -3.1536e+06
+-7.4374e+06 -3.2565e+06
+-7.7492e+06 -3.3436e+06
+-8.0563e+06 -3.4531e+06
+-8.3579e+06 -3.6105e+06
+-8.6447e+06 -3.8098e+06
+-8.9013e+06 -4.0145e+06
+-9.1128e+06 -4.1777e+06
+-9.2723e+06 -4.2702e+06
+-9.3834e+06 -4.2997e+06
+-9.457e+06 -4.3055e+06
+-9.5027e+06 -4.3342e+06
+-9.5215e+06 -4.4098e+06
+-9.5047e+06 -4.5171e+06
+-9.4394e+06 -4.6111e+06
+-9.3177e+06 -4.6434e+06
+-9.1434e+06 -4.5924e+06
+-8.9315e+06 -4.4765e+06
+-8.7001e+06 -4.3433e+06
+-8.4606e+06 -4.2423e+06
+-8.2112e+06 -4.198e+06
+-7.9388e+06 -4.1969e+06
+-7.6272e+06 -4.1968e+06
+-7.2679e+06 -4.1509e+06
+-6.8669e+06 -4.0317e+06
+-6.4431e+06 -3.8445e+06
+-6.0215e+06 -3.6223e+06
+-5.6223e+06 -3.4087e+06
+-5.2543e+06 -3.2373e+06
+-4.9128e+06 -3.118e+06
+-4.585e+06 -3.0347e+06
+-4.2573e+06 -2.9556e+06
+-3.9228e+06 -2.8471e+06
+-3.5843e+06 -2.6874e+06
+-3.253e+06 -2.474e+06
+-2.9438e+06 -2.2218e+06
+-2.6697e+06 -1.9565e+06
+-2.4377e+06 -1.705e+06
+-2.2478e+06 -1.4866e+06
+-2.0946e+06 -1.3087e+06
+809690 -234550
+794320 -230880
+777820 -226300
+760240 -220850
+741710 -214660
+722410 -207910
+702560 -200790
+682390 -193510
+662070 -186280
+641740 -179240
+621460 -172490
+601240 -166040
+581040 -159860
+560790 -153850
+540440 -147890
+520000 -141900
+499510 -135830
+479080 -129720
+458860 -123650
+439010 -117760
+419680 -112180
+400990 -107010
+383020 -102290
+365770 -98015
+349240 -94114
+333420 -90504
+318270 -87105
+303770 -83870
+289930 -80785
+276740 -77865
+264200 -75134
+252280 -72608
+240960 -70280
+230200 -68120
+219950 -66080
+210160 -64109
+200780 -62164
+191780 -60218
+183120 -58261
+174770 -56293
+166710 -54318
+158890 -52339
+151290 -50355
+143870 -48361
+136620 -46350
+129520 -44318
+122550 -42264
+115710 -40190
+109010 -38099
+102440 -35998
+96006 -33895
+89724 -31796
+83601 -29714
+77649 -27658
+71881 -25642
+66312 -23677
+60955 -21772
+55823 -19936
+50930 -18173
+46285 -16490
+41898 -14890
+37776 -13380
+33924 -11964
+30343 -10645
+27031 -9426.8
+23985 -8309.4
+21196 -7291.4
+18656 -6369.9
+16354 -5540.7
+14278 -4798.8
+12415 -4139
+10751 -3555.5
+9273.2 -3042.4
+7966.9 -2593.1
+6818.8 -2200.8
+5816 -1857.9
+4947.2 -1556.5
+4203.6 -1288.1
+3579.1 -1043.4
+3071.6 -812.11
+2683.9 -582.95
+2425.5 -342.79
+2314.1 -76.112
+2379.2 236.06
+2666.2 617.62
+3242.5 1099.6
+4208.1 1723
+5709.4 2543.7
+7961.8 3637.9
+11284 5110.5
+16151 7105.9
+23274 9820.1
+33728 13513
+49141 18511
+71980 25183
+105950 33842
+156450 44483
+230850 56243
+337670 66680
+481300 72377
+621500 66892
+3.7652e+06 -502090
+-2.5159e+06 1.2765e+07
+1.4983e+07 5.7739e+07
+1.4361e+07 5.6698e+06
+-1.6182e+06 1.0006e+07
+-533250 1.6738e+07
+2.8254e+06 1.1174e+07
+1.024e+06 8.1798e+06
+-481580 9.6399e+06
+641920 9.5163e+06
+1.3566e+06 7.4518e+06
+273900 6.7952e+06
+-487640 7.6979e+06
+120500 7.7674e+06
+716740 6.6339e+06
+330960 6.0302e+06
+-217800 6.3766e+06
+-90636 6.5838e+06
+289580 6.0983e+06
+277970 5.6048e+06
+1020.2 5.5626e+06
+-119960 5.6979e+06
+35065 5.6192e+06
+197910 5.2989e+06
+120720 5.0626e+06
+-54288 5.0899e+06
+-54511 5.1471e+06
+81083 5.0046e+06
+121180 4.7883e+06
+29719 4.7082e+06
+-38361 4.7359e+06
+-4958.2 4.7189e+06
+59287 4.6131e+06
+64279 4.4984e+06
+7876.7 4.457e+06
+-30655 4.4752e+06
+-26.182 4.463e+06
+44116 4.3869e+06
+28629 4.3214e+06
+-18003 4.3206e+06
+-24676 4.3385e+06
+4133.1 4.3222e+06
+15446 4.287e+06
+-3825.4 4.2695e+06
+-25678 4.2785e+06
+-26451 4.2987e+06
+-10048 4.3067e+06
+-5037.3 4.3004e+06
+-26063 4.3073e+06
+-43697 4.3379e+06
+-31975 4.3677e+06
+-18018 4.3871e+06
+-32819 4.4147e+06
+-54990 4.4527e+06
+-53218 4.4881e+06
+-39050 4.5261e+06
+-40754 4.5763e+06
+-61277 4.6318e+06
+-78808 4.6847e+06
+-72556 4.7342e+06
+-53728 4.7859e+06
+-61261 4.8565e+06
+-99712 4.9466e+06
+-117130 5.0197e+06
+-88859 5.0636e+06
+-68987 5.1286e+06
+-104150 5.245e+06
+-154430 5.3622e+06
+-155040 5.4287e+06
+-113800 5.4745e+06
+-103860 5.5689e+06
+-166290 5.7263e+06
+-236450 5.8686e+06
+-215270 5.9183e+06
+-139310 5.9461e+06
+-166450 6.1032e+06
+-311210 6.349e+06
+-371440 6.4646e+06
+-262910 6.4371e+06
+-206500 6.5347e+06
+-375110 6.8568e+06
+-568170 7.1248e+06
+-496450 7.1152e+06
+-291730 7.0852e+06
+-434940 7.4898e+06
+-927880 8.1303e+06
+-970790 8.1843e+06
+-430660 7.898e+06
+-538320 8.5909e+06
+-1.7346e+06 1.0209e+07
+-2.2248e+06 1.0692e+07
+-1.2061e+06 9.9625e+06
+-471010 1.0383e+07
+-1.5929e+06 1.3135e+07
+-4.3718e+06 1.7224e+07
+-8.1546e+06 2.1192e+07
+-7.5853e+06 1.9977e+07
+3.6351e+06 1.1943e+07
+1.4074e+06 2.7419e+07
+-5.6413e+07 9.0623e+07
+-6.2975e+07 6.0253e+07
+1.1899e+07 8.1409e+07
+-1.5994e+07 3.8284e+07
+-3.3699e+06 20379
+-2.7176e+06 347780
+-2.0418e+06 352910
+-1.5171e+06 328270
+-1.134e+06 283040
+-860800 232630
+-667710 186100
+-531300 146770
+-434640 114990
+-365830 89882
+-316580 70266
+-281130 54988
+-255470 43073
+-236780 33742
+-223070 26402
+-212940 20603
+-205390 16010
+-199730 12362
+-195510 9440.9
+-192430 7049.5
+-190320 4995.6
+-189140 3091.8
+-188900 1163.4
+-189690 -941.88
+-191610 -3349.4
+-194880 -6166.6
+-199720 -9505
+-206480 -13509
+-215600 -18385
+-227620 -24419
+-243140 -31986
+-262870 -41555
+-287540 -53677
+-317990 -68943
+-355070 -87896
+-399690 -110910
+-452780 -138100
+-515210 -169350
+-587920 -204580
+-671900 -244080
+-768380 -288800
+-878770 -340250
+-1.0045e+06 -399830
+-1.1466e+06 -467970
+-1.3053e+06 -543540
+-1.4803e+06 -624220
+-1.6709e+06 -708010
+-1.8767e+06 -795010
+-2.0987e+06 -888190
+-2.339e+06 -992030
+-2.5996e+06 -1.1095e+06
+-2.8811e+06 -1.239e+06
+-3.1816e+06 -1.3746e+06
+-3.4967e+06 -1.5092e+06
+-3.8216e+06 -1.6409e+06
+-4.1531e+06 -1.7762e+06
+-4.4906e+06 -1.9282e+06
+-4.8351e+06 -2.1079e+06
+-5.1864e+06 -2.3144e+06
+-5.5412e+06 -2.53e+06
+-5.8927e+06 -2.7272e+06
+-6.2339e+06 -2.8838e+06
+-6.5608e+06 -2.9982e+06
+-6.8744e+06 -3.0944e+06
+-7.1788e+06 -3.2096e+06
+-7.4764e+06 -3.3725e+06
+-7.7635e+06 -3.5831e+06
+-8.029e+06 -3.8099e+06
+-8.2587e+06 -4.0062e+06
+-8.4425e+06 -4.138e+06
+-8.5786e+06 -4.2048e+06
+-8.674e+06 -4.2407e+06
+-8.7381e+06 -4.2924e+06
+-8.7756e+06 -4.3896e+06
+-8.7827e+06 -4.5244e+06
+-8.749e+06 -4.6551e+06
+-8.6649e+06 -4.7301e+06
+-8.5289e+06 -4.7199e+06
+-8.3491e+06 -4.6349e+06
+-8.1398e+06 -4.5203e+06
+-7.9125e+06 -4.4304e+06
+-7.67e+06 -4.3983e+06
+-7.405e+06 -4.4182e+06
+-7.1064e+06 -4.449e+06
+-6.7675e+06 -4.4374e+06
+-6.3927e+06 -4.3459e+06
+-5.9981e+06 -4.1707e+06
+-5.6051e+06 -3.9423e+06
+-5.2318e+06 -3.7093e+06
+-4.886e+06 -3.515e+06
+-4.5631e+06 -3.3787e+06
+-4.2508e+06 -3.2897e+06
+-3.9366e+06 -3.2142e+06
+-3.615e+06 -3.1119e+06
+-3.291e+06 -2.9527e+06
+-2.9783e+06 -2.7275e+06
+-2.6941e+06 -2.45e+06
+-2.4528e+06 -2.1494e+06
+-2.2609e+06 -1.859e+06
+-2.1158e+06 -1.6051e+06
+-2.0076e+06 -1.4e+06
+826480 -220040
+806440 -215590
+785500 -210230
+763740 -204100
+741340 -197370
+718500 -190250
+695490 -182950
+672530 -175680
+649780 -168580
+627370 -161760
+605330 -155240
+583620 -149000
+562150 -142950
+540840 -137000
+519620 -131070
+498470 -125100
+477440 -119110
+456630 -113170
+436180 -107400
+416250 -101920
+396970 -96856
+378420 -92271
+360660 -88171
+343670 -84508
+327440 -81197
+311910 -78146
+297060 -75283
+282860 -72569
+269310 -69999
+256380 -67591
+244090 -65363
+232390 -63321
+221270 -61448
+210670 -59705
+200550 -58044
+190870 -56415
+181570 -54781
+172630 -53121
+164030 -51429
+155740 -49705
+147730 -47955
+140000 -46180
+132500 -44378
+125220 -42548
+118140 -40686
+111240 -38793
+104530 -36873
+97988 -34931
+91629 -32975
+85453 -31013
+79467 -29053
+73678 -27104
+68094 -25179
+62725 -23289
+57579 -21447
+52666 -19663
+47993 -17948
+43568 -16307
+39396 -14746
+35482 -13269
+31829 -11879
+28438 -10579
+25307 -9372.8
+22432 -8261.4
+19805 -7245.3
+17418 -6323
+15259 -5491.7
+13317 -4747.3
+11578 -4084.9
+10029 -3499.3
+8655.6 -2984.8
+7444.5 -2535.6
+6382 -2145.7
+5454.7 -1808.9
+4649.7 -1518.7
+3955.3 -1268.7
+3361.2 -1052
+2859 -861.86
+2443 -691.26
+2110.3 -532.72
+1861.8 -378.22
+1702.9 -218.94
+1645 -44.833
+1706.9 155.79
+1917.6 396.97
+2320 696.06
+2976.1 1075
+3974.9 1562.1
+5444.4 2193.8
+7567.7 3017.3
+10608 4092.4
+14944 5491.5
+21116 7295.7
+29886 9578.3
+42305 12367
+59743 15562
+83794 18789
+115850 21209
+156090 21494
+203810 18675
+284910 18983
+-784540 1.3349e+06
+7.6466e+06 1.4533e+07
+1.7339e+07 2.6467e+07
+-5.9312e+06 1.9437e+07
+7.4904e+06 2.8032e+07
+7.0435e+06 7.6489e+06
+-45891 9.3601e+06
+647210 1.2343e+07
+2.3655e+06 9.0116e+06
+714410 7.3709e+06
+-528720 8.7906e+06
+554350 8.829e+06
+1.3754e+06 6.9666e+06
+459240 6.1892e+06
+-416430 7.0516e+06
+67726 7.3123e+06
+700240 6.3398e+06
+418360 5.6942e+06
+-137510 5.952e+06
+-102800 6.219e+06
+253580 5.8755e+06
+329210 5.3892e+06
+78257 5.2605e+06
+-114320 5.411e+06
+1411.1 5.4245e+06
+201100 5.1386e+06
+159100 4.8698e+06
+-31416 4.8782e+06
+-68121 4.9668e+06
+57909 4.874e+06
+124400 4.6739e+06
+53700 4.5714e+06
+-34151 4.5915e+06
+-29687 4.6107e+06
+42780 4.5396e+06
+73165 4.4208e+06
+13970 4.3675e+06
+-46266 4.3993e+06
+-20699 4.4108e+06
+34823 4.3476e+06
+25361 4.2852e+06
+-27755 4.2861e+06
+-45266 4.3118e+06
+-18734 4.3113e+06
+1715.6 4.2884e+06
+-14265 4.2736e+06
+-49203 4.2882e+06
+-59530 4.3202e+06
+-33950 4.3352e+06
+-20913 4.3338e+06
+-52875 4.3538e+06
+-84443 4.3968e+06
+-70846 4.4279e+06
+-46741 4.4484e+06
+-60969 4.488e+06
+-97115 4.5428e+06
+-110110 4.5891e+06
+-92194 4.6266e+06
+-77145 4.6721e+06
+-99774 4.7395e+06
+-145400 4.8217e+06
+-155270 4.8838e+06
+-118270 4.9179e+06
+-107160 4.9803e+06
+-163350 5.0996e+06
+-217400 5.2079e+06
+-199390 5.2515e+06
+-153670 5.2896e+06
+-170470 5.4005e+06
+-253670 5.5602e+06
+-310320 5.6735e+06
+-271280 5.7021e+06
+-210020 5.7427e+06
+-270390 5.9172e+06
+-425670 6.1487e+06
+-464440 6.2263e+06
+-343510 6.182e+06
+-320830 6.3046e+06
+-531320 6.6384e+06
+-712090 6.8529e+06
+-614150 6.7915e+06
+-449670 6.7821e+06
+-631210 7.1719e+06
+-1.0697e+06 7.6874e+06
+-1.1039e+06 7.6815e+06
+-703280 7.4462e+06
+-914550 8.0691e+06
+-1.9371e+06 9.2609e+06
+-2.2217e+06 9.3469e+06
+-1.1557e+06 8.5078e+06
+-1.0436e+06 9.3912e+06
+-3.0082e+06 1.2232e+07
+-4.9765e+06 1.4201e+07
+-5.3799e+06 1.4301e+07
+-3.7749e+06 1.3261e+07
+-699420 1.3223e+07
+-6.3222e+06 2.4496e+07
+-3.0208e+07 4.8323e+07
+-2.9573e+07 3.4216e+07
+1.4615e+07 5.8726e+06
+-5.9866e+07 1.4323e+08
+-3.03e+07 8.5485e+07
+2.7255e+06 7.0333e+06
+-1.7156e+06 267640
+-1.3424e+06 82741
+-1.1069e+06 107890
+-898620 121410
+-724640 119840
+-587370 108930
+-482550 94234
+-403830 79162
+-345170 65367
+-301550 53438
+-269090 43423
+-244860 35134
+-226690 28311
+-213000 22696
+-202600 18070
+-194630 14259
+-188460 11130
+-183630 8571.5
+-179820 6486
+-176820 4769.3
+-174510 3305
+-172850 1964.9
+-171850 618.45
+-171550 -853.81
+-172030 -2549.2
+-173400 -4543
+-175830 -6902.5
+-179530 -9712.8
+-184810 -13108
+-192060 -17300
+-201770 -22597
+-214490 -29409
+-230850 -38237
+-251520 -49628
+-277230 -64085
+-308750 -81961
+-346820 -103360
+-392250 -128190
+-445850 -156290
+-508590 -187840
+-581670 -223600
+-666520 -264900
+-764610 -313190
+-877120 -369230
+-1.0046e+06 -432440
+-1.1469e+06 -501050
+-1.3035e+06 -573200
+-1.4745e+06 -648470
+-1.6607e+06 -728910
+-1.864e+06 -818300
+-2.0865e+06 -919870
+-2.3285e+06 -1.0336e+06
+-2.5879e+06 -1.1555e+06
+-2.8608e+06 -1.2801e+06
+-3.1429e+06 -1.4051e+06
+-3.4322e+06 -1.5348e+06
+-3.7304e+06 -1.6799e+06
+-4.0411e+06 -1.8502e+06
+-4.3665e+06 -2.0464e+06
+-4.7043e+06 -2.2548e+06
+-5.0464e+06 -2.4518e+06
+-5.382e+06 -2.6161e+06
+-5.7029e+06 -2.7432e+06
+-6.0072e+06 -2.8517e+06
+-6.2996e+06 -2.9748e+06
+-6.5866e+06 -3.1415e+06
+-6.87e+06 -3.3573e+06
+-7.1432e+06 -3.597e+06
+-7.3924e+06 -3.8179e+06
+-7.6037e+06 -3.9838e+06
+-7.7702e+06 -4.0872e+06
+-7.8954e+06 -4.1545e+06
+-7.9895e+06 -4.2292e+06
+-8.0618e+06 -4.344e+06
+-8.1137e+06 -4.4985e+06
+-8.1367e+06 -4.6571e+06
+-8.118e+06 -4.7695e+06
+-8.0485e+06 -4.8008e+06
+-7.9288e+06 -4.7531e+06
+-7.7696e+06 -4.6653e+06
+-7.5855e+06 -4.5916e+06
+-7.3871e+06 -4.5708e+06
+-7.1762e+06 -4.6041e+06
+-6.9466e+06 -4.655e+06
+-6.6906e+06 -4.6686e+06
+-6.4061e+06 -4.6004e+06
+-6.1002e+06 -4.4389e+06
+-5.7879e+06 -4.2099e+06
+-5.4858e+06 -3.9635e+06
+-5.2049e+06 -3.7498e+06
+-4.9472e+06 -3.5962e+06
+-4.7063e+06 -3.4977e+06
+-4.4725e+06 -3.4208e+06
+-4.2393e+06 -3.3206e+06
+-4.0075e+06 -3.1597e+06
+-3.7858e+06 -2.9232e+06
+-3.5875e+06 -2.6222e+06
+-3.4254e+06 -2.2881e+06
+-3.3072e+06 -1.96e+06
+-3.2328e+06 -1.671e+06
+-3.1954e+06 -1.4384e+06
+831840 -201800
+807440 -196770
+782440 -190890
+756960 -184330
+731210 -177350
+705420 -170170
+679830 -163010
+654650 -156030
+630060 -149350
+606110 -143000
+582810 -136940
+560090 -131090
+537850 -125350
+515960 -119640
+494360 -113880
+473020 -108080
+451970 -102310
+431310 -96670
+411170 -91305
+391670 -86343
+372910 -81874
+354950 -77928
+337810 -74475
+321460 -71436
+305850 -68711
+290920 -66208
+276650 -63862
+262990 -61647
+249940 -59568
+237480 -57644
+225610 -55888
+214300 -54297
+203510 -52845
+193190 -51487
+183320 -50173
+173830 -48859
+164710 -47514
+155930 -46124
+147460 -44686
+139300 -43205
+131420 -41683
+123820 -40121
+116480 -38519
+109380 -36874
+102500 -35187
+95851 -33463
+89417 -31709
+83202 -29935
+77207 -28148
+71438 -26360
+65900 -24577
+60597 -22812
+55536 -21074
+50721 -19376
+46157 -17731
+41847 -16148
+37796 -14636
+34003 -13201
+30468 -11847
+27192 -10576
+24170 -9391.2
+21398 -8293.5
+18870 -7284.2
+16576 -6363.3
+14507 -5529.3
+12649 -4779.6
+10990 -4110.4
+9515 -3517
+8210.6 -2994.6
+7062.7 -2537.9
+6057.7 -2141.4
+5182.3 -1799.5
+4423.8 -1506.6
+3770 -1256.9
+3209.5 -1044.6
+2731.9 -864.01
+2328.3 -709.71
+1991.3 -576.31
+1715.6 -458.51
+1498.4 -350.95
+1339.2 -248.07
+1241.2 -143.97
+1211 -32.263
+1260.3 94.125
+1406.9 243.2
+1676.7 424.26
+2106.5 648.29
+2747.8 928.46
+3672.2 1280.5
+4978.4 1722.8
+6801.8 2275.6
+9326 2958.1
+12795 3782.8
+17519 4741.9
+23869 5784.4
+32219 6778.8
+42803 7468.9
+55412 7464.4
+68920 6406.1
+80270 4693.1
+71410 4721.1
+648350 126900
+-180940 9.5311e+06
+4.2174e+06 3.2128e+07
+9.6758e+06 3.1395e+07
+1.014e+07 4.4686e+06
+-2.617e+06 1.6722e+07
+4.0252e+06 1.6862e+07
+3.6456e+06 8.1753e+06
+97903 9.1578e+06
+968270 1.0456e+07
+2.2429e+06 7.8594e+06
+797190 6.5419e+06
+-507150 7.9055e+06
+373430 8.2777e+06
+1.2861e+06 6.6598e+06
+567630 5.7924e+06
+-307310 6.5023e+06
+20136 6.8602e+06
+625550 6.1301e+06
+483760 5.4552e+06
+-21644 5.572e+06
+-107740 5.8654e+06
+191750 5.6871e+06
+357230 5.231e+06
+158220 5.0121e+06
+-92010 5.1481e+06
+-33542 5.2388e+06
+180000 5.0087e+06
+182730 4.7274e+06
+807.48 4.6999e+06
+-76304 4.7964e+06
+18088 4.7593e+06
+108330 4.5924e+06
+72805 4.4668e+06
+-29846 4.4682e+06
+-62263 4.5176e+06
+11067 4.4834e+06
+67761 4.367e+06
+13037 4.3042e+06
+-66081 4.3427e+06
+-53342 4.3727e+06
+7881.5 4.3261e+06
+11484 4.2705e+06
+-41890 4.2707e+06
+-77259 4.3035e+06
+-60299 4.3199e+06
+-25703 4.3059e+06
+-31375 4.2919e+06
+-82351 4.3173e+06
+-110220 4.3648e+06
+-77817 4.3826e+06
+-50550 4.3805e+06
+-86718 4.4137e+06
+-137050 4.4752e+06
+-134780 4.5141e+06
+-101940 4.5321e+06
+-100940 4.5711e+06
+-144790 4.6413e+06
+-188140 4.715e+06
+-181760 4.7611e+06
+-142760 4.7875e+06
+-150060 4.8512e+06
+-223460 4.9699e+06
+-270560 5.0649e+06
+-232280 5.0877e+06
+-191250 5.1229e+06
+-241240 5.2514e+06
+-337590 5.4079e+06
+-367560 5.4856e+06
+-312600 5.4976e+06
+-281800 5.564e+06
+-376760 5.7538e+06
+-522380 5.9544e+06
+-530130 5.9952e+06
+-413170 5.9566e+06
+-436400 6.1133e+06
+-675760 6.4467e+06
+-824310 6.6022e+06
+-695290 6.5029e+06
+-583020 6.5388e+06
+-818600 6.9407e+06
+-1.1941e+06 7.3431e+06
+-1.1774e+06 7.2748e+06
+-874930 7.1036e+06
+-1.1607e+06 7.6898e+06
+-2.008e+06 8.5936e+06
+-2.0957e+06 8.4847e+06
+-1.2955e+06 7.8679e+06
+-1.6109e+06 8.9174e+06
+-3.5971e+06 1.1171e+07
+-4.611e+06 1.166e+07
+-3.4622e+06 1.0454e+07
+-2.639e+06 1.0857e+07
+-3.7479e+06 1.3945e+07
+-8.6866e+06 2.0417e+07
+-1.7352e+07 2.7657e+07
+-1.324e+07 1.9509e+07
+5.3875e+06 1.0041e+07
+-3.8835e+07 7.8582e+07
+-3.7887e+07 4.7782e+07
+-1.521e+07 9.1067e+07
+2.0638e+06 5.6211e+07
+-3.0562e+06 1.6302e+07
+-640070 -10360
+-674860 19593
+-614070 29877
+-539810 41650
+-467250 47763
+-403130 48445
+-349690 45618
+-306650 41031
+-272670 35852
+-246120 30736
+-225480 25999
+-209450 21751
+-197000 18004
+-187290 14723
+-179680 11863
+-173680 9387.2
+-168900 7265.9
+-165050 5474.5
+-161940 3983.9
+-159400 2749.8
+-157360 1706.9
+-155780 768.77
+-154680 -163.74
+-154080 -1188.1
+-154040 -2385.7
+-154620 -3814.8
+-155920 -5515.7
+-158080 -7531.1
+-161290 -9936.9
+-165830 -12877
+-172080 -16591
+-180460 -21433
+-191470 -27857
+-205660 -36375
+-223600 -47470
+-245860 -61479
+-273050 -78497
+-305800 -98384
+-344850 -120920
+-391110 -146130
+-445720 -174550
+-510070 -207370
+-585620 -246030
+-673560 -291550
+-774550 -343870
+-888640 -401710
+-1.0156e+06 -463320
+-1.1554e+06 -527900
+-1.3091e+06 -596710
+-1.4781e+06 -673000
+-1.6642e+06 -760240
+-1.8678e+06 -859760
+-2.087e+06 -969350
+-2.3187e+06 -1.0846e+06
+-2.5599e+06 -1.2025e+06
+-2.8103e+06 -1.3251e+06
+-3.0733e+06 -1.46e+06
+-3.354e+06 -1.6162e+06
+-3.6556e+06 -1.7966e+06
+-3.9757e+06 -1.9925e+06
+-4.3048e+06 -2.1855e+06
+-4.6296e+06 -2.3561e+06
+-4.9397e+06 -2.4966e+06
+-5.2323e+06 -2.6185e+06
+-5.5139e+06 -2.749e+06
+-5.7951e+06 -2.9154e+06
+-6.0826e+06 -3.1279e+06
+-6.373e+06 -3.3701e+06
+-6.6525e+06 -3.6057e+06
+-6.9035e+06 -3.7992e+06
+-7.115e+06 -3.9365e+06
+-7.2878e+06 -4.0339e+06
+-7.4336e+06 -4.1284e+06
+-7.5665e+06 -4.2535e+06
+-7.6925e+06 -4.4165e+06
+-7.8044e+06 -4.5921e+06
+-7.885e+06 -4.7352e+06
+-7.9169e+06 -4.8083e+06
+-7.8931e+06 -4.8037e+06
+-7.8218e+06 -4.7495e+06
+-7.7225e+06 -4.6938e+06
+-7.6162e+06 -4.6772e+06
+-7.5148e+06 -4.7097e+06
+-7.4169e+06 -4.7642e+06
+-7.3103e+06 -4.7908e+06
+-7.1813e+06 -4.7433e+06
+-7.0235e+06 -4.6024e+06
+-6.8426e+06 -4.3855e+06
+-6.6544e+06 -4.1376e+06
+-6.478e+06 -3.9093e+06
+-6.3284e+06 -3.7339e+06
+-6.2107e+06 -3.6136e+06
+-6.1206e+06 -3.5209e+06
+-6.048e+06 -3.4123e+06
+-5.9828e+06 -3.2477e+06
+-5.9196e+06 -3.0072e+06
+-5.8598e+06 -2.6972e+06
+-5.8107e+06 -2.3467e+06
+-5.7818e+06 -1.9952e+06
+-5.7815e+06 -1.6788e+06
+-5.8142e+06 -1.4191e+06
+822930 -180280
+794860 -174930
+766560 -168800
+738170 -162140
+709910 -155220
+681990 -148280
+654640 -141550
+628040 -135150
+602310 -129120
+577490 -123450
+553540 -118030
+530380 -112760
+507890 -107490
+485950 -102160
+464480 -96733
+443470 -91259
+422940 -85845
+402960 -80638
+383630 -75788
+365040 -71418
+347260 -67592
+330300 -64307
+314150 -61498
+298750 -59064
+284060 -56896
+270010 -54906
+256560 -53040
+243670 -51287
+231330 -49657
+219530 -48172
+208250 -46842
+197460 -45655
+187140 -44577
+177230 -43560
+167710 -42555
+158540 -41523
+149690 -40440
+141150 -39299
+132910 -38102
+124960 -36854
+117290 -35558
+109890 -34214
+102760 -32820
+95888 -31377
+89268 -29887
+82897 -28357
+76775 -26796
+70904 -25217
+65287 -23628
+59928 -22041
+54830 -20462
+49997 -18904
+45429 -17375
+41130 -15888
+37098 -14455
+33333 -13083
+29833 -11782
+26594 -10555
+23611 -9405.5
+20877 -8335.2
+18386 -7345.3
+16128 -6436.2
+14094 -5607.7
+12271 -4858.3
+10646 -4185.5
+9205.8 -3585.8
+7935.1 -3055.1
+6819.6 -2588.7
+5845.2 -2182
+4998.2 -1830.1
+4265.7 -1528.1
+3635.6 -1270.9
+3096.4 -1053.3
+2637.4 -870.19
+2248.6 -716.46
+1921.3 -587.37
+1647.9 -478.48
+1422.3 -385.65
+1239.9 -304.99
+1097.9 -232.69
+995.55 -164.94
+934.06 -97.842
+917.34 -27.349
+952.19 50.763
+1049.1 140.95
+1223 247.97
+1494.8 376.96
+1892.7 533.41
+2454.2 723.09
+3229.1 951.53
+4281.3 1222.9
+5691.3 1537.8
+7555.5 1889.1
+9978.8 2255.6
+13055 2592.3
+16823 2820.9
+21182 2829.3
+25781 2505.6
+29953 1855.3
+33335 1168.9
+44825 961.9
+-80224 590110
+2.5923e+06 8.7408e+06
+7.0842e+06 2.2754e+07
+4.4033e+06 3.064e+07
+-3.5096e+06 1.0763e+07
+1.0606e+07 2.3823e+07
+4.7331e+06 5.7928e+06
+-211650 1.253e+07
+2.982e+06 1.1792e+07
+2.2232e+06 7.5116e+06
+-138250 8.5815e+06
+750660 9.5327e+06
+2.0387e+06 7.3401e+06
+920430 5.9993e+06
+-395370 7.1315e+06
+225850 7.7021e+06
+1.1396e+06 6.4505e+06
+653870 5.5167e+06
+-142480 6.0085e+06
+-26914 6.4387e+06
+506470 5.9531e+06
+523550 5.2901e+06
+99236 5.2464e+06
+-106750 5.5351e+06
+114310 5.5128e+06
+350640 5.1113e+06
+220570 4.8202e+06
+-58592 4.9165e+06
+-65804 5.0576e+06
+133750 4.8989e+06
+184320 4.6287e+06
+35268 4.5567e+06
+-79381 4.6408e+06
+-33547 4.6586e+06
+73241 4.5355e+06
+81180 4.3914e+06
+-27302 4.3699e+06
+-98297 4.4414e+06
+-34655 4.4416e+06
+44092 4.3347e+06
+3729.9 4.2658e+06
+-87326 4.3049e+06
+-97287 4.3504e+06
+-39810 4.3246e+06
+-15615 4.2752e+06
+-59678 4.2708e+06
+-118310 4.3139e+06
+-121420 4.3516e+06
+-72585 4.3423e+06
+-59277 4.3234e+06
+-121580 4.3614e+06
+-174230 4.4309e+06
+-146930 4.455e+06
+-104070 4.4476e+06
+-129290 4.484e+06
+-194690 4.5647e+06
+-221890 4.6274e+06
+-193420 4.6493e+06
+-164840 4.6707e+06
+-199310 4.743e+06
+-279210 4.8572e+06
+-307170 4.9317e+06
+-254000 4.9375e+06
+-229930 4.9767e+06
+-312400 5.12e+06
+-408860 5.2659e+06
+-404480 5.3059e+06
+-342030 5.3079e+06
+-353930 5.408e+06
+-477500 5.6077e+06
+-593730 5.7633e+06
+-568140 5.7714e+06
+-474620 5.7594e+06
+-548540 5.9512e+06
+-793890 6.2636e+06
+-894850 6.3583e+06
+-744010 6.2429e+06
+-692920 6.3371e+06
+-980610 6.7553e+06
+-1.2887e+06 7.053e+06
+-1.2073e+06 6.9263e+06
+-983190 6.831e+06
+-1.3181e+06 7.3934e+06
+-2.05e+06 8.1118e+06
+-2.0578e+06 7.9371e+06
+-1.4269e+06 7.4771e+06
+-1.9367e+06 8.4993e+06
+-3.5604e+06 1.0137e+07
+-3.8235e+06 9.8794e+06
+-2.5282e+06 8.7696e+06
+-2.7179e+06 1.016e+07
+-5.4185e+06 1.3634e+07
+-8.2571e+06 1.6128e+07
+-9.8529e+06 1.6853e+07
+-6.7871e+06 1.3832e+07
+-2.0398e+06 1.4767e+07
+-2.2237e+07 4.3278e+07
+-4.0037e+07 4.901e+07
+8.3538e+06 9.4929e+06
+-1.3821e+07 6.4181e+07
+-2.414e+07 1.0437e+08
+-1.0426e+07 5.453e+07
+143810 8.5482e+06
+-443800 19999
+-382550 -425.46
+-362750 7034.1
+-338110 13384
+-309870 18125
+-281680 20648
+-255850 21249
+-233410 20522
+-214530 19013
+-198960 17112
+-186280 15066
+-176020 13018
+-167750 11038
+-161100 9163.8
+-155740 7417.1
+-151420 5815.9
+-147920 4378.9
+-145070 3123.2
+-142730 2057.3
+-140820 1173.2
+-139270 438.93
+-138070 -202.15
+-137220 -826.04
+-136750 -1515.2
+-136710 -2342.9
+-137130 -3360.2
+-138080 -4594.3
+-139630 -6060
+-141910 -7788.7
+-145120 -9865.8
+-149520 -12470
+-155460 -15900
+-163300 -20572
+-173480 -26980
+-186420 -35598
+-202530 -46757
+-222270 -60534
+-246130 -76736
+-274740 -95037
+-308930 -115280
+-349760 -137820
+-398520 -163660
+-456570 -194250
+-525070 -230840
+-604720 -273780
+-695720 -322200
+-798020 -374490
+-911720 -429560
+-1.0376e+06 -488090
+-1.177e+06 -552850
+-1.3314e+06 -627500
+-1.5011e+06 -714360
+-1.6854e+06 -812580
+-1.8821e+06 -918390
+-2.09e+06 -1.0279e+06
+-2.3102e+06 -1.1409e+06
+-2.5467e+06 -1.2624e+06
+-2.8051e+06 -1.4009e+06
+-3.0881e+06 -1.5619e+06
+-3.3929e+06 -1.7424e+06
+-3.7093e+06 -1.9291e+06
+-4.0237e+06 -2.1045e+06
+-4.3255e+06 -2.2571e+06
+-4.6129e+06 -2.3906e+06
+-4.8946e+06 -2.5246e+06
+-5.1842e+06 -2.684e+06
+-5.4915e+06 -2.8836e+06
+-5.8151e+06 -3.1171e+06
+-6.1408e+06 -3.3574e+06
+-6.449e+06 -3.5708e+06
+-6.7254e+06 -3.7367e+06
+-6.9695e+06 -3.86e+06
+-7.1943e+06 -3.9682e+06
+-7.4175e+06 -4.0939e+06
+-7.6488e+06 -4.2532e+06
+-7.8815e+06 -4.4336e+06
+-8.0946e+06 -4.5997e+06
+-8.2635e+06 -4.7132e+06
+-8.3746e+06 -4.7553e+06
+-8.4343e+06 -4.7384e+06
+-8.4672e+06 -4.6989e+06
+-8.5037e+06 -4.6764e+06
+-8.5653e+06 -4.6906e+06
+-8.6538e+06 -4.7299e+06
+-8.7514e+06 -4.7572e+06
+-8.8307e+06 -4.7297e+06
+-8.8698e+06 -4.6209e+06
+-8.8635e+06 -4.4343e+06
+-8.8274e+06 -4.2011e+06
+-8.7905e+06 -3.9648e+06
+-8.7841e+06 -3.7611e+06
+-8.8284e+06 -3.6021e+06
+-8.9261e+06 -3.4734e+06
+-9.0623e+06 -3.3419e+06
+-9.2121e+06 -3.1721e+06
+-9.3505e+06 -2.9412e+06
+-9.4613e+06 -2.6479e+06
+-9.5421e+06 -2.3115e+06
+-9.604e+06 -1.9637e+06
+-9.6669e+06 -1.6369e+06
+-9.7522e+06 -1.3537e+06
+797500 -156220
+766820 -150850
+736300 -144800
+706110 -138350
+676420 -131800
+647440 -125400
+619340 -119340
+592250 -113720
+566230 -108530
+541280 -103690
+517360 -99048
+494370 -94465
+472200 -89806
+450740 -85000
+429940 -80054
+409780 -75051
+390270 -70134
+371460 -65473
+353410 -61225
+336170 -57497
+319740 -54330
+304130 -51691
+289280 -49492
+275120 -47618
+261600 -45957
+248650 -44429
+236230 -42993
+224310 -41648
+212870 -40413
+201890 -39312
+191350 -38349
+181240 -37507
+171510 -36747
+162140 -36020
+153090 -35280
+144340 -34494
+135880 -33643
+127690 -32728
+119770 -31753
+112130 -30725
+104750 -29647
+97642 -28519
+90801 -27339
+84226 -26107
+77917 -24827
+71875 -23507
+66104 -22160
+60605 -20796
+55383 -19425
+50440 -18058
+45778 -16701
+41397 -15365
+37296 -14058
+33474 -12792
+29927 -11577
+26649 -10420
+23635 -9328.6
+20876 -8305.8
+18363 -7354
+16088 -6474
+14037 -5666.1
+12201 -4930
+10567 -4264.3
+9119.4 -3666.9
+7845.2 -3134.7
+6729.2 -2663.8
+5756.8 -2250
+4913.8 -1889.3
+4186.4 -1577.3
+3562.1 -1310
+3028.9 -1083
+2575.9 -892
+2193 -732.39
+1870.9 -599.72
+1601.3 -489.68
+1376.9 -398.37
+1191.6 -322.25
+1040.2 -258.22
+919.1 -203.45
+825.69 -155.28
+758.92 -111.14
+719.17 -68.462
+708.43 -24.69
+730.49 22.691
+791.22 76.128
+898.88 137.97
+1064.7 210.39
+1303.1 295.36
+1632.8 394.35
+2076.7 508
+2662.2 635.31
+3420.4 772.41
+4382.3 910.74
+5572.4 1034.6
+6994.9 1119.4
+8611 1132
+10308 1041.3
+11870 851.54
+12968 689.61
+13001 1064.2
+6721.9 4205
+68100 277020
+302920 7.4234e+06
+3.43e+06 2.2339e+07
+7.6253e+06 3.1539e+07
+416830 1.6525e+07
+6.0668e+06 7.2754e+06
+-1.0452e+06 1.7386e+07
+6.0653e+06 1.4428e+07
+2.4197e+06 7.442e+06
+595230 1.0691e+07
+2.6374e+06 9.4493e+06
+1.7842e+06 6.6746e+06
+-205730 7.6987e+06
+431560 8.7715e+06
+1.7592e+06 7.0882e+06
+1.0226e+06 5.655e+06
+-219240 6.4779e+06
+102020 7.1865e+06
+941290 6.2598e+06
+722710 5.3532e+06
+19296 5.5871e+06
+-73099 6.0368e+06
+361230 5.7885e+06
+526110 5.1781e+06
+203210 4.9831e+06
+-95604 5.2348e+06
+32868 5.3386e+06
+306100 5.0154e+06
+254290 4.683e+06
+-18378 4.7207e+06
+-91729 4.8813e+06
+66085 4.8022e+06
+160140 4.5655e+06
+64046 4.4478e+06
+-78301 4.5049e+06
+-90921 4.5711e+06
+19976 4.4971e+06
+72499 4.343e+06
+-28537 4.2981e+06
+-132920 4.382e+06
+-92386 4.4138e+06
+-1835.2 4.3244e+06
+-16742 4.251e+06
+-107760 4.2832e+06
+-149240 4.3446e+06
+-109140 4.3461e+06
+-60950 4.3004e+06
+-83684 4.2845e+06
+-163940 4.34e+06
+-197780 4.406e+06
+-144210 4.4029e+06
+-106990 4.3733e+06
+-166380 4.4169e+06
+-243620 4.5111e+06
+-240800 4.5552e+06
+-192230 4.5462e+06
+-189890 4.5685e+06
+-255000 4.6579e+06
+-324510 4.7615e+06
+-323550 4.8059e+06
+-268770 4.8007e+06
+-274110 4.8536e+06
+-379470 5.0057e+06
+-460020 5.1304e+06
+-422140 5.1354e+06
+-366250 5.1374e+06
+-426260 5.2733e+06
+-564940 5.4731e+06
+-636050 5.5741e+06
+-582930 5.557e+06
+-531530 5.5884e+06
+-652410 5.8099e+06
+-876700 6.0786e+06
+-922410 6.1159e+06
+-770560 6.0119e+06
+-786970 6.1687e+06
+-1.1081e+06 6.5879e+06
+-1.3406e+06 6.7856e+06
+-1.1991e+06 6.6167e+06
+-1.0536e+06 6.6108e+06
+-1.4289e+06 7.1637e+06
+-2.0333e+06 7.7122e+06
+-2.0058e+06 7.5184e+06
+-1.5538e+06 7.2251e+06
+-2.0306e+06 8.0747e+06
+-3.3285e+06 9.2877e+06
+-3.2905e+06 8.8254e+06
+-2.22e+06 8.0581e+06
+-3.1167e+06 9.8725e+06
+-5.6405e+06 1.2469e+07
+-6.5976e+06 1.2638e+07
+-5.6368e+06 1.1654e+07
+-4.8194e+06 1.2205e+07
+-6.0723e+06 1.6163e+07
+-1.5736e+07 2.777e+07
+-2.2362e+07 2.9267e+07
+198120 8.6872e+06
+-2.0236e+07 5.8697e+07
+-2.7056e+06 1.5414e+07
+-2.7523e+07 8.4307e+07
+-1.2003e+07 8.3235e+07
+-391720 4.1185e+07
+-459980 9.3569e+06
+-204150 28463
+-232700 2378.9
+-230710 1755.4
+-223390 4145.1
+-213040 6652.9
+-201260 8522.2
+-189330 9587.5
+-178090 9943
+-167990 9763.6
+-159180 9217
+-151650 8433.4
+-145290 7503.5
+-139990 6488.4
+-135600 5431.1
+-131990 4366.6
+-129040 3328.9
+-126630 2352.7
+-124660 1471.6
+-123070 712.16
+-121790 86.221
+-120790 -416.28
+-120050 -830.86
+-119580 -1215.7
+-119420 -1641.9
+-119590 -2177.6
+-120140 -2872.6
+-121100 -3749.1
+-122510 -4806.3
+-124480 -6043.6
+-127120 -7500.1
+-130630 -9301.7
+-135270 -11699
+-141320 -15079
+-149120 -19921
+-158960 -26702
+-171170 -35754
+-186080 -47133
+-204080 -60584
+-225680 -75665
+-251610 -92052
+-282790 -109900
+-320380 -130080
+-365570 -154020
+-419450 -183130
+-482760 -218090
+-555850 -258350
+-638830 -302460
+-731900 -349130
+-835720 -398600
+-951450 -453250
+-1.0804e+06 -516760
+-1.2235e+06 -592040
+-1.3807e+06 -679060
+-1.5516e+06 -774400
+-1.7363e+06 -873370
+-1.9365e+06 -973880
+-2.1564e+06 -1.0793e+06
+-2.4005e+06 -1.198e+06
+-2.6708e+06 -1.3383e+06
+-2.964e+06 -1.5019e+06
+-3.2709e+06 -1.6805e+06
+-3.5797e+06 -1.8577e+06
+-3.8816e+06 -2.0182e+06
+-4.1767e+06 -2.158e+06
+-4.4747e+06 -2.2888e+06
+-4.7902e+06 -2.4332e+06
+-5.1342e+06 -2.6109e+06
+-5.5062e+06 -2.8258e+06
+-5.8928e+06 -3.0606e+06
+-6.2741e+06 -3.2847e+06
+-6.6346e+06 -3.4714e+06
+-6.973e+06 -3.6133e+06
+-7.3022e+06 -3.7273e+06
+-7.6412e+06 -3.8438e+06
+-8.0017e+06 -3.9878e+06
+-8.3779e+06 -4.1615e+06
+-8.747e+06 -4.3414e+06
+-9.0806e+06 -4.4903e+06
+-9.3606e+06 -4.5779e+06
+-9.5916e+06 -4.5976e+06
+-9.8e+06 -4.5704e+06
+-1.0022e+07 -4.532e+06
+-1.0285e+07 -4.5128e+06
+-1.0593e+07 -4.5213e+06
+-1.0924e+07 -4.5394e+06
+-1.1239e+07 -4.5325e+06
+-1.1503e+07 -4.4675e+06
+-1.1701e+07 -4.3295e+06
+-1.1847e+07 -4.1283e+06
+-1.1978e+07 -3.8927e+06
+-1.2139e+07 -3.6568e+06
+-1.2364e+07 -3.4447e+06
+-1.2662e+07 -3.2616e+06
+-1.3016e+07 -3.0944e+06
+-1.3387e+07 -2.9193e+06
+-1.3732e+07 -2.7141e+06
+-1.4016e+07 -2.4672e+06
+-1.4225e+07 -2.1813e+06
+-1.4372e+07 -1.8712e+06
+-1.4485e+07 -1.5576e+06
+-1.4603e+07 -1.2598e+06
+754140 -130650
+722220 -125560
+690830 -119890
+660140 -113960
+630300 -108060
+601460 -102430
+573710 -97238
+547120 -92531
+521720 -88267
+497460 -84324
+474290 -80530
+452110 -76716
+430850 -72753
+410430 -68587
+390810 -64249
+371980 -59848
+353950 -55548
+336740 -51527
+320360 -47937
+304820 -44870
+290070 -42344
+276080 -40308
+262770 -38660
+250070 -37279
+237920 -36059
+226260 -34929
+215040 -33863
+204250 -32867
+193860 -31967
+183860 -31185
+174210 -30524
+164910 -29962
+155910 -29459
+147190 -28969
+138740 -28447
+130540 -27867
+122580 -27219
+114860 -26503
+107390 -25730
+100160 -24905
+93191 -24034
+86475 -23114
+80018 -22145
+73827 -21125
+67905 -20061
+62257 -18962
+56889 -17837
+51805 -16699
+47006 -15557
+42496 -14419
+38274 -13292
+34338 -12184
+30686 -11103
+27312 -10060
+24210 -9061.7
+21372 -8116.2
+18788 -7228.2
+16447 -6400.6
+14338 -5635
+12448 -4931.6
+10765 -4290.2
+9273.6 -3709.8
+7960.9 -3188.6
+6812 -2724
+5812.2 -2312.8
+4946.8 -1951.2
+4201.9 -1635.5
+3563.8 -1361.9
+3020.2 -1127.1
+2559.4 -927.56
+2170.7 -759.81
+1844.5 -620.19
+1572 -504.91
+1345.5 -410.21
+1158 -332.56
+1003.6 -268.81
+877.27 -216.25
+775.06 -172.55
+693.88 -135.73
+631.62 -103.97
+587.14 -75.533
+560.31 -48.757
+551.99 -22.024
+564.15 6.1765
+599.88 37.191
+663.54 72.143
+760.77 111.87
+898.65 156.84
+1085.6 207.01
+1331.3 261.6
+1646 318.73
+2039.3 374.89
+2517.5 424.4
+3079.8 459
+3711.4 468.48
+4375.4 444.09
+5003.7 389.06
+5493.3 346.5
+5709.8 471.06
+5549.9 1198.1
+6841.7 3523.2
+46720 349720
+1.1162e+06 6.3888e+06
+3.3699e+06 1.8528e+07
+5.1872e+06 2.9547e+07
+2.0603e+06 2.2813e+07
+-1.593e+06 5.7609e+06
+7.5207e+06 2.0214e+07
+2.7185e+06 6.0549e+06
+733720 1.3748e+07
+3.6735e+06 1.03e+07
+1.2019e+06 7.6308e+06
+508070 9.7152e+06
+2.3026e+06 8.477e+06
+1.757e+06 6.1099e+06
+-83508 6.8484e+06
+187630 8.0711e+06
+1.4459e+06 6.8587e+06
+1.0788e+06 5.4626e+06
+-61921 5.9476e+06
+-2020.2 6.6789e+06
+722040 6.0987e+06
+739130 5.2598e+06
+155270 5.2386e+06
+-105330 5.6573e+06
+208620 5.6237e+06
+485180 5.1002e+06
+277360 4.7856e+06
+-71462 4.9706e+06
+-41668 5.1595e+06
+227450 4.9332e+06
+253860 4.5946e+06
+22768 4.563e+06
+-108420 4.7146e+06
+-15302 4.7147e+06
+109650 4.5292e+06
+78630 4.372e+06
+-74984 4.393e+06
+-147060 4.4963e+06
+-49152 4.4729e+06
+40522 4.3208e+06
+-37234 4.2535e+06
+-162140 4.3377e+06
+-158080 4.3994e+06
+-72173 4.338e+06
+-53638 4.2602e+06
+-128460 4.2757e+06
+-204100 4.3536e+06
+-196630 4.3912e+06
+-130180 4.3501e+06
+-121830 4.3154e+06
+-211890 4.3784e+06
+-280960 4.4774e+06
+-241630 4.4914e+06
+-185940 4.4521e+06
+-223140 4.4855e+06
+-312790 4.597e+06
+-353020 4.6801e+06
+-320590 4.6852e+06
+-283440 4.6787e+06
+-326420 4.7563e+06
+-436330 4.9072e+06
+-486090 4.9978e+06
+-425920 4.9756e+06
+-393020 4.991e+06
+-496340 5.1577e+06
+-631210 5.3436e+06
+-649940 5.3872e+06
+-583100 5.3569e+06
+-587690 5.4423e+06
+-743390 5.6826e+06
+-921540 5.8879e+06
+-914660 5.8768e+06
+-788100 5.8117e+06
+-871740 6.0266e+06
+-1.1962e+06 6.4191e+06
+-1.3455e+06 6.5224e+06
+-1.1635e+06 6.3385e+06
+-1.102e+06 6.4287e+06
+-1.5105e+06 6.9751e+06
+-1.9729e+06 7.3572e+06
+-1.8849e+06 7.1373e+06
+-1.6125e+06 7.0192e+06
+-2.0982e+06 7.7823e+06
+-3.0277e+06 8.6064e+06
+-2.9256e+06 8.177e+06
+-2.2233e+06 7.772e+06
+-3.222e+06 9.394e+06
+-5.2346e+06 1.1159e+07
+-5.0176e+06 1.0255e+07
+-3.744e+06 9.4893e+06
+-4.6578e+06 1.1827e+07
+-7.4742e+06 1.5443e+07
+-1.1095e+07 1.8825e+07
+-1.1866e+07 1.8095e+07
+-3.1593e+06 1.186e+07
+-1.2457e+07 3.3628e+07
+-2.6127e+07 4.0125e+07
+3.5642e+06 1.9231e+07
+-9.0975e+06 3.0956e+07
+-1.669e+07 8.4203e+07
+-1.116e+07 7.9147e+07
+-4.4835e+06 3.9508e+07
+-344490 7.4736e+06
+-173060 122.73
+-158200 -791.03
+-157000 426.15
+-154920 1319.7
+-151310 2429.4
+-146580 3455.6
+-141270 4222.7
+-135840 4683.3
+-130620 4858.7
+-125800 4795.7
+-121470 4543.1
+-117680 4142.6
+-114410 3628.1
+-111630 3029.3
+-109320 2375.4
+-107410 1698.3
+-105880 1033.3
+-104650 416.78
+-103700 -118.58
+-102970 -551.17
+-102460 -877.79
+-102150 -1118.8
+-102050 -1318
+-102180 -1536.1
+-102590 -1836.7
+-103300 -2269.3
+-104340 -2855.4
+-105760 -3586.8
+-107610 -4442.8
+-109990 -5428.8
+-113020 -6628.1
+-116910 -8250.9
+-121870 -10654
+-128160 -14303
+-136050 -19676
+-145780 -27102
+-157650 -36621
+-171970 -47923
+-189180 -60468
+-209840 -73791
+-234730 -87892
+-264770 -103500
+-301010 -122000
+-344430 -144890
+-395840 -173060
+-455750 -206210
+-524470 -243040
+-602300 -282170
+-689820 -323520
+-788090 -369110
+-898500 -422440
+-1.0224e+06 -486590
+-1.161e+06 -561900
+-1.3151e+06 -645130
+-1.4857e+06 -731170
+-1.6748e+06 -816860
+-1.8854e+06 -904610
+-2.1208e+06 -1.0029e+06
+-2.3822e+06 -1.1224e+06
+-2.6671e+06 -1.2684e+06
+-2.9687e+06 -1.4361e+06
+-3.2785e+06 -1.6099e+06
+-3.5909e+06 -1.7711e+06
+-3.907e+06 -1.909e+06
+-4.2359e+06 -2.029e+06
+-4.591e+06 -2.1513e+06
+-4.9824e+06 -2.3001e+06
+-5.4104e+06 -2.4884e+06
+-5.864e+06 -2.7083e+06
+-6.3256e+06 -2.9325e+06
+-6.7808e+06 -3.1292e+06
+-7.227e+06 -3.28e+06
+-7.6752e+06 -3.3913e+06
+-8.1426e+06 -3.4907e+06
+-8.6407e+06 -3.6107e+06
+-9.1655e+06 -3.7679e+06
+-9.6962e+06 -3.9512e+06
+-1.0205e+07 -4.1259e+06
+-1.0673e+07 -4.2513e+06
+-1.11e+07 -4.3023e+06
+-1.1512e+07 -4.2827e+06
+-1.1942e+07 -4.2228e+06
+-1.2419e+07 -4.1629e+06
+-1.2948e+07 -4.1326e+06
+-1.3506e+07 -4.1358e+06
+-1.405e+07 -4.1493e+06
+-1.4539e+07 -4.1348e+06
+-1.4951e+07 -4.0577e+06
+-1.5296e+07 -3.9021e+06
+-1.5612e+07 -3.6775e+06
+-1.5949e+07 -3.4127e+06
+-1.6349e+07 -3.1436e+06
+-1.6826e+07 -2.8987e+06
+-1.7363e+07 -2.6903e+06
+-1.7916e+07 -2.5126e+06
+-1.8429e+07 -2.3469e+06
+-1.8857e+07 -2.1706e+06
+-1.9178e+07 -1.9658e+06
+-1.9399e+07 -1.724e+06
+-1.9556e+07 -1.4482e+06
+-1.9694e+07 -1.1504e+06
+692670 -104810
+661020 -100250
+630240 -95246
+600460 -90086
+571790 -85046
+544290 -80344
+518020 -76109
+492950 -72367
+469070 -69044
+446310 -65996
+424600 -63043
+403890 -60015
+384120 -56795
+365270 -53342
+347310 -49704
+330260 -46004
+314100 -42407
+298840 -39085
+284430 -36176
+270850 -33756
+258010 -31827
+245830 -30326
+234230 -29149
+223150 -28181
+212510 -27326
+202270 -26527
+192390 -25766
+182870 -25057
+173660 -24428
+164760 -23900
+156140 -23473
+147770 -23125
+139630 -22819
+131710 -22509
+123990 -22160
+116470 -21750
+109150 -21271
+102040 -20730
+95143 -20135
+88470 -19496
+82027 -18815
+75822 -18091
+69863 -17323
+64159 -16511
+58718 -15661
+53546 -14780
+48651 -13879
+44037 -12967
+39705 -12053
+35658 -11144
+31892 -10244
+28407 -9361
+25196 -8501.7
+22254 -7673.8
+19571 -6884.5
+17138 -6139.6
+14942 -5443.1
+12972 -4797.1
+11214 -4202.5
+9653.4 -3659.3
+8277.3 -3166.9
+7070.9 -2724
+6019.7 -2328.7
+5109.3 -1978.4
+4325.4 -1670
+3654.3 -1400.2
+3083.1 -1165.7
+2599.6 -963.63
+2192.6 -791.2
+1851.8 -645.76
+1567.8 -524.57
+1332.3 -424.71
+1137.9 -343.17
+977.89 -276.92
+846.8 -223.17
+739.85 -179.46
+653.11 -143.76
+583.41 -114.4
+528.33 -89.997
+486.12 -69.334
+455.72 -51.281
+436.73 -34.753
+429.4 -18.725
+434.64 -2.2796
+453.98 15.337
+489.55 34.662
+544.06 55.967
+620.68 79.211
+722.88 103.98
+854.16 129.39
+1017.5 153.97
+1214.6 175.52
+1444.2 191.1
+1700.7 197.29
+1971.4 191.42
+2234.1 175.05
+2455.7 163.83
+2589.4 215.76
+2555.5 519.66
+2114.4 1704.9
+-473.16 6300.9
+-11942 277360
+402830 5.8585e+06
+2.5243e+06 1.7242e+07
+5.3541e+06 2.779e+07
+3.7164e+06 2.5182e+07
+-1.4871e+06 8.5822e+06
+4.8246e+06 1.1282e+07
+-649220 1.3914e+07
+5.6577e+06 1.2739e+07
+1.4975e+06 7.6655e+06
+1.5555e+06 1.1033e+07
+2.8773e+06 8.1468e+06
+713970 7.0242e+06
+191880 8.8724e+06
+1.8424e+06 8.0176e+06
+1.7019e+06 5.823e+06
+51820 6.1962e+06
+12155 7.4158e+06
+1.1362e+06 6.6537e+06
+1.0498e+06 5.351e+06
+88409 5.5161e+06
+-63668 6.1961e+06
+493890 5.9456e+06
+695530 5.1996e+06
+263870 4.9647e+06
+-113100 5.3102e+06
+66154 5.4488e+06
+402890 5.0403e+06
+314150 4.6506e+06
+-35478 4.7479e+06
+-100280 4.977e+06
+124060 4.8571e+06
+217560 4.5468e+06
+56474 4.4447e+06
+-115220 4.5635e+06
+-100600 4.6345e+06
+35208 4.5123e+06
+70394 4.3287e+06
+-73508 4.3084e+06
+-195500 4.4333e+06
+-129470 4.4602e+06
+-19358 4.3252e+06
+-59583 4.2371e+06
+-185270 4.3071e+06
+-226080 4.3969e+06
+-165120 4.3762e+06
+-113390 4.2962e+06
+-156040 4.2844e+06
+-258180 4.3743e+06
+-294120 4.4557e+06
+-226030 4.4282e+06
+-185930 4.3722e+06
+-265920 4.4291e+06
+-362920 4.5573e+06
+-360330 4.607e+06
+-304870 4.5704e+06
+-304890 4.5756e+06
+-384950 4.6859e+06
+-476010 4.8217e+06
+-486170 4.8652e+06
+-424250 4.8292e+06
+-428430 4.873e+06
+-558980 5.0589e+06
+-670030 5.2132e+06
+-641210 5.205e+06
+-579880 5.1787e+06
+-644940 5.3199e+06
+-816150 5.562e+06
+-930290 5.6912e+06
+-883350 5.6462e+06
+-806850 5.6423e+06
+-947860 5.9023e+06
+-1.2412e+06 6.2371e+06
+-1.3078e+06 6.2575e+06
+-1.1161e+06 6.0927e+06
+-1.1417e+06 6.2765e+06
+-1.5657e+06 6.8018e+06
+-1.8849e+06 7.0285e+06
+-1.7275e+06 6.7871e+06
+-1.6013e+06 6.8241e+06
+-2.1386e+06 7.5614e+06
+-2.8093e+06 8.1099e+06
+-2.5907e+06 7.6716e+06
+-2.1734e+06 7.5137e+06
+-3.1735e+06 8.9362e+06
+-4.5153e+06 9.969e+06
+-3.9762e+06 8.9614e+06
+-3.0554e+06 8.7294e+06
+-4.8161e+06 1.1475e+07
+-7.2649e+06 1.3677e+07
+-7.6712e+06 1.3437e+07
+-6.7476e+06 1.2882e+07
+-4.9853e+06 1.3401e+07
+-1.038e+07 2.3353e+07
+-2.036e+07 3.0789e+07
+-361290 9.2017e+06
+-1.5455e+07 4.7069e+07
+2.8203e+06 9.6098e+06
+-1.2657e+07 4.6858e+07
+-1.8479e+07 8.6871e+07
+-8.8365e+06 6.9948e+07
+-1.1476e+06 3.2527e+07
+-25770 6.6466e+06
+-103040 25848
+-111080 1733.6
+-111480 430.13
+-110970 524.59
+-109750 931.4
+-107910 1407
+-105610 1833.2
+-103070 2151.8
+-100460 2341.8
+-97908 2402.3
+-95512 2341.9
+-93330 2172.3
+-91399 1906.7
+-89734 1560.5
+-88338 1153
+-87206 708.39
+-86320 256.32
+-85658 -170.4
+-85195 -539.89
+-84905 -827.47
+-84770 -1022.7
+-84783 -1135.2
+-84949 -1197.2
+-85288 -1258.9
+-85830 -1377.6
+-86608 -1600.7
+-87656 -1950.1
+-89011 -2415.3
+-90714 -2965.6
+-92827 -3584.7
+-95447 -4324.4
+-98712 -5358.4
+-102800 -7009.3
+-107950 -9719.1
+-114390 -13949
+-122400 -20018
+-132270 -27953
+-144300 -37414
+-158840 -47808
+-176320 -58581
+-197310 -69618
+-222490 -81523
+-252710 -95583
+-288900 -113290
+-331930 -135610
+-382510 -162440
+-441150 -192600
+-508270 -224760
+-584410 -258630
+-670550 -295830
+-768220 -339500
+-879310 -392520
+-1.0058e+06 -455330
+-1.1494e+06 -524890
+-1.3117e+06 -596100
+-1.494e+06 -665540
+-1.6984e+06 -735280
+-1.9265e+06 -813920
+-2.1796e+06 -913130
+-2.4568e+06 -1.0406e+06
+-2.7553e+06 -1.1933e+06
+-3.0707e+06 -1.3563e+06
+-3.4001e+06 -1.509e+06
+-3.7447e+06 -1.6362e+06
+-4.111e+06 -1.7385e+06
+-4.5087e+06 -1.8344e+06
+-4.9459e+06 -1.9508e+06
+-5.4244e+06 -2.1075e+06
+-5.9374e+06 -2.3038e+06
+-6.4722e+06 -2.5163e+06
+-7.0171e+06 -2.7101e+06
+-7.568e+06 -2.8587e+06
+-8.1312e+06 -2.9597e+06
+-8.7191e+06 -3.0374e+06
+-9.3417e+06 -3.1292e+06
+-9.9975e+06 -3.2627e+06
+-1.0672e+07 -3.4382e+06
+-1.1342e+07 -3.6245e+06
+-1.1991e+07 -3.774e+06
+-1.2614e+07 -3.8464e+06
+-1.3229e+07 -3.8305e+06
+-1.386e+07 -3.7502e+06
+-1.4531e+07 -3.653e+06
+-1.5247e+07 -3.5862e+06
+-1.5989e+07 -3.5739e+06
+-1.6721e+07 -3.605e+06
+-1.7404e+07 -3.6389e+06
+-1.8013e+07 -3.6238e+06
+-1.8553e+07 -3.5201e+06
+-1.9052e+07 -3.3169e+06
+-1.9556e+07 -3.0358e+06
+-2.0101e+07 -2.7215e+06
+-2.0706e+07 -2.4243e+06
+-2.1357e+07 -2.1817e+06
+-2.2014e+07 -2.0072e+06
+-2.2624e+07 -1.8881e+06
+-2.3142e+07 -1.793e+06
+-2.3542e+07 -1.6836e+06
+-2.3828e+07 -1.5278e+06
+-2.4028e+07 -1.3087e+06
+-2.4189e+07 -1.0285e+06
+614340 -79976
+584550 -76162
+555840 -72013
+528320 -67792
+502040 -63738
+477030 -60033
+453240 -56775
+430610 -53967
+409080 -51524
+388560 -49300
+369000 -47127
+350370 -44849
+332640 -42367
+315840 -39654
+299980 -36763
+285060 -33814
+271080 -30961
+258010 -28355
+245780 -26115
+234310 -24297
+223500 -22895
+213250 -21845
+203470 -21050
+194090 -20410
+185050 -19843
+176330 -19305
+167890 -18786
+159730 -18304
+151810 -17886
+144120 -17548
+136640 -17292
+129330 -17097
+122180 -16929
+115180 -16751
+108330 -16531
+101630 -16253
+95094 -15915
+88733 -15521
+82556 -15083
+76574 -14607
+70798 -14096
+65235 -13551
+59898 -12970
+54796 -12353
+49939 -11704
+45336 -11032
+40994 -10344
+36916 -9648.5
+33105 -8951.9
+29560 -8259.3
+26279 -7575
+23260 -6904.1
+20496 -6252.2
+17980 -5625.4
+15702 -5029.4
+13651 -4468.8
+11815 -3946.4
+10181 -3464
+8734.4 -3022
+7462 -2620.2
+6349.4 -2257.8
+5382.6 -1933.5
+4547.7 -1645.6
+3831.1 -1391.7
+3219.8 -1169.1
+2701.6 -975.14
+2265 -807.2
+1899.3 -663.05
+1595 -540.65
+1343.1 -438.03
+1135.6 -353.18
+965.53 -283.9
+826.53 -227.89
+713.29 -182.84
+621.3 -146.64
+546.82 -117.45
+486.82 -93.796
+438.85 -74.521
+401.03 -58.696
+371.95 -45.532
+350.68 -34.303
+336.74 -24.317
+330.05 -14.925
+330.95 -5.5633
+340.13 4.2016
+358.56 14.634
+387.44 25.801
+428.04 37.552
+481.61 49.504
+549.1 61.023
+630.87 71.213
+726.21 78.934
+832.79 82.93
+946 82.229
+1058.4 77.304
+1159.2 73.344
+1234.3 90.205
+1261.2 194.79
+1182.7 611.5
+784.82 2101.4
+-457.88 7260.3
+34914 263850
+552660 5.1446e+06
+2.0053e+06 1.5328e+07
+4.1766e+06 2.6157e+07
+4.2106e+06 2.6815e+07
+-455370 1.2713e+07
+844060 6.8741e+06
+4.1593e+06 1.7449e+07
+2.0604e+06 6.241e+06
+1.2617e+06 1.3284e+07
+3.3461e+06 9.2268e+06
+731740 8.2143e+06
+1.5831e+06 9.6924e+06
+2.5062e+06 7.1279e+06
+645710 6.3163e+06
+-59651 8.0384e+06
+1.3937e+06 7.6212e+06
+1.5708e+06 5.6846e+06
+177540 5.6969e+06
+-83144 6.8171e+06
+810640 6.4491e+06
+955910 5.2827e+06
+241630 5.1892e+06
+-93819 5.7563e+06
+270400 5.7734e+06
+601220 5.1588e+06
+339270 4.7671e+06
+-95021 5.0067e+06
+-52605 5.2614e+06
+287240 4.9865e+06
+308730 4.5718e+06
+5690.1 4.5709e+06
+-137760 4.7973e+06
+8674.8 4.7823e+06
+147570 4.5297e+06
+72944 4.3664e+06
+-114670 4.4346e+06
+-179570 4.5603e+06
+-57524 4.5084e+06
+32156 4.3174e+06
+-80685 4.2547e+06
+-232570 4.3811e+06
+-214130 4.4561e+06
+-107720 4.3567e+06
+-103210 4.2514e+06
+-207000 4.2913e+06
+-291320 4.4041e+06
+-273860 4.4362e+06
+-200640 4.3623e+06
+-202260 4.3167e+06
+-312920 4.4063e+06
+-392070 4.5317e+06
+-346190 4.5352e+06
+-287430 4.4666e+06
+-336570 4.4981e+06
+-441860 4.64e+06
+-492700 4.7439e+06
+-464790 4.7332e+06
+-426060 4.7007e+06
+-474240 4.7859e+06
+-606870 4.9731e+06
+-678180 5.0777e+06
+-619480 5.0317e+06
+-583520 5.0295e+06
+-700470 5.218e+06
+-863960 5.4398e+06
+-908290 5.4908e+06
+-841430 5.4316e+06
+-831950 5.5023e+06
+-1.0117e+06 5.7872e+06
+-1.2436e+06 6.0387e+06
+-1.2394e+06 5.9951e+06
+-1.074e+06 5.8839e+06
+-1.1813e+06 6.1481e+06
+-1.5909e+06 6.6234e+06
+-1.7749e+06 6.7127e+06
+-1.5679e+06 6.4742e+06
+-1.5625e+06 6.6454e+06
+-2.1288e+06 7.3494e+06
+-2.6165e+06 7.6962e+06
+-2.3342e+06 7.2802e+06
+-2.0481e+06 7.2535e+06
+-2.9809e+06 8.4792e+06
+-3.9641e+06 9.1634e+06
+-3.2903e+06 8.217e+06
+-2.8523e+06 8.4034e+06
+-4.6822e+06 1.0822e+07
+-6.2477e+06 1.1787e+07
+-5.2811e+06 1.043e+07
+-4.5735e+06 1.0845e+07
+-5.9471e+06 1.3741e+07
+-9.2145e+06 1.7988e+07
+-1.2591e+07 2.0242e+07
+-4.3741e+06 1.1821e+07
+-8.3096e+06 2.7804e+07
+-1.4215e+07 2.669e+07
+-3.6287e+06 2.9411e+07
+-219160 1.2024e+07
+-1.4846e+07 5.8049e+07
+-1.361e+07 8.2455e+07
+-6.4986e+06 6.3734e+07
+-2.1545e+06 3.0513e+07
+-267280 6.1062e+06
+-83331 5785.9
+-80651 772.17
+-80678 399.29
+-80542 295.47
+-80122 402.73
+-79405 591.79
+-78431 793.11
+-77269 967.02
+-76000 1090.7
+-74696 1152
+-73421 1145
+-72224 1068.3
+-71143 923.89
+-70207 717.78
+-69433 460.79
+-68831 169.53
+-68400 -133.72
+-68131 -422.36
+-68009 -668.83
+-68014 -849.6
+-68129 -951.42
+-68342 -977.15
+-68652 -949.03
+-69070 -906.81
+-69622 -899.07
+-70338 -968.58
+-71255 -1136.4
+-72407 -1392.5
+-73827 -1703.9
+-75558 -2043.7
+-77661 -2441.7
+-80238 -3037.7
+-83439 -4112
+-87479 -6062.4
+-92631 -9310.7
+-99211 -14152
+-107550 -20601
+-117970 -28325
+-130770 -36734
+-146250 -45257
+-164720 -53711
+-186670 -62582
+-212760 -73004
+-243830 -86347
+-280850 -103560
+-324720 -124620
+-376130 -148550
+-435580 -174100
+-503600 -200890
+-581110 -230160
+-669660 -264520
+-771500 -306400
+-889090 -356170
+-1.0246e+06 -411120
+-1.1795e+06 -466670
+-1.3546e+06 -519760
+-1.5504e+06 -572370
+-1.768e+06 -632810
+-2.0092e+06 -712590
+-2.2758e+06 -819810
+-2.569e+06 -952520
+-2.8884e+06 -1.0967e+06
+-3.2331e+06 -1.2315e+06
+-3.6029e+06 -1.3401e+06
+-3.9998e+06 -1.4207e+06
+-4.4288e+06 -1.4894e+06
+-4.8958e+06 -1.5738e+06
+-5.4045e+06 -1.6968e+06
+-5.9539e+06 -1.8628e+06
+-6.538e+06 -2.0519e+06
+-7.1485e+06 -2.2294e+06
+-7.7796e+06 -2.3648e+06
+-8.4312e+06 -2.4499e+06
+-9.1088e+06 -2.5051e+06
+-9.8192e+06 -2.5688e+06
+-1.0565e+07 -2.675e+06
+-1.134e+07 -2.8318e+06
+-1.213e+07 -3.0128e+06
+-1.2923e+07 -3.1683e+06
+-1.3708e+07 -3.2498e+06
+-1.449e+07 -3.2355e+06
+-1.5281e+07 -3.1429e+06
+-1.6093e+07 -3.0217e+06
+-1.6931e+07 -2.93e+06
+-1.7788e+07 -2.9059e+06
+-1.8638e+07 -2.949e+06
+-1.9454e+07 -3.0193e+06
+-2.0216e+07 -3.0552e+06
+-2.0918e+07 -3.0003e+06
+-2.1574e+07 -2.8275e+06
+-2.2209e+07 -2.5507e+06
+-2.2852e+07 -2.2185e+06
+-2.3515e+07 -1.8955e+06
+-2.4193e+07 -1.638e+06
+-2.4861e+07 -1.4754e+06
+-2.5483e+07 -1.4019e+06
+-2.6025e+07 -1.3811e+06
+-2.6464e+07 -1.3605e+06
+-2.6798e+07 -1.2896e+06
+-2.7044e+07 -1.1352e+06
+-2.7233e+07 -890140
+522150 -57402
+495620 -54440
+470270 -51245
+446170 -48031
+423330 -44990
+401720 -42264
+381240 -39920
+361800 -37948
+343290 -36268
+325640 -34752
+308790 -33253
+292760 -31646
+277550 -29850
+263210 -27852
+249770 -25700
+237260 -23499
+225650 -21378
+214910 -19460
+204950 -17838
+195650 -16553
+186910 -15593
+178610 -14902
+170670 -14400
+163020 -14003
+155630 -13651
+148470 -13310
+141520 -12975
+134780 -12665
+128220 -12402
+121820 -12200
+115550 -12060
+109400 -11965
+103350 -11886
+97397 -11794
+91543 -11666
+85801 -11488
+80186 -11260
+74712 -10989
+69392 -10682
+64236 -10347
+59257 -9984.7
+54463 -9596.4
+49866 -9180.6
+45478 -8738
+41307 -8272
+37363 -7788.5
+33653 -7293.9
+30179 -6794.3
+26942 -6294.4
+23943 -5797.7
+21179 -5307.4
+18647 -4827.1
+16340 -4360.9
+14252 -3913.3
+12372 -3488.6
+10691 -3090.2
+9195 -2720.1
+7872.6 -2379.5
+6710.4 -2068.7
+5695.2 -1787.4
+4814 -1534.7
+4053.9 -1309.6
+3402.2 -1110.7
+2847.1 -935.86
+2377.2 -783.15
+1982.1 -650.45
+1652 -535.89
+1378.3 -437.84
+1152.7 -354.9
+967.97 -285.71
+817.45 -228.87
+695.29 -182.83
+596.42 -145.93
+516.55 -116.52
+452.14 -93.083
+400.31 -74.326
+358.76 -59.228
+325.65 -47.017
+299.55 -37.099
+279.35 -28.98
+264.29 -22.21
+253.89 -16.36
+247.94 -11.026
+246.51 -5.8636
+249.85 -0.6158
+258.36 4.8554
+272.52 10.557
+292.78 16.36
+319.47 22.007
+352.63 27.121
+391.89 31.23
+436.28 33.824
+484.01 34.482
+532.38 33.234
+577.8 31.552
+616.16 35.437
+642.78 65.837
+648.75 195.8
+595.82 686.36
+294.81 2488.6
+-1218.9 9250
+-9034.5 247910
+360330 4.7699e+06
+1.7691e+06 1.411e+07
+3.8298e+06 2.4317e+07
+4.2204e+06 2.7162e+07
+893390 1.6282e+07
+-709220 5.7954e+06
+4.1988e+06 1.4115e+07
+-629600 1.0167e+07
+4.6391e+06 1.2063e+07
+1.1014e+06 7.7498e+06
+1.984e+06 1.0639e+07
+2.1886e+06 7.4907e+06
+235490 7.8857e+06
+1.1919e+06 8.9208e+06
+2.2082e+06 6.7097e+06
+669950 5.7783e+06
+-166080 7.2719e+06
+991620 7.2672e+06
+1.3882e+06 5.5773e+06
+329300 5.3394e+06
+-141160 6.2743e+06
+502270 6.1996e+06
+834880 5.2649e+06
+367170 4.9515e+06
+-96276 5.361e+06
+72543 5.576e+06
+468110 5.1258e+06
+372580 4.6408e+06
+-57311 4.7553e+06
+-138820 5.0652e+06
+150410 4.9296e+06
+259850 4.5395e+06
+40781 4.4428e+06
+-154600 4.6297e+06
+-105390 4.7065e+06
+49601 4.5335e+06
+62194 4.3282e+06
+-113460 4.3347e+06
+-244290 4.4916e+06
+-160040 4.5121e+06
+-39668 4.3376e+06
+-105240 4.2354e+06
+-259770 4.341e+06
+-296200 4.4578e+06
+-219740 4.4126e+06
+-174580 4.2993e+06
+-237900 4.2964e+06
+-352670 4.4196e+06
+-388060 4.5107e+06
+-315400 4.4597e+06
+-280440 4.3834e+06
+-376080 4.4536e+06
+-484320 4.6117e+06
+-484110 4.6672e+06
+-431800 4.6065e+06
+-437530 4.5968e+06
+-525800 4.7283e+06
+-632790 4.8949e+06
+-657280 4.936e+06
+-595690 4.8732e+06
+-600270 4.9146e+06
+-747560 5.1317e+06
+-881210 5.3093e+06
+-865040 5.2916e+06
+-802170 5.2433e+06
+-863830 5.3892e+06
+-1.0578e+06 5.6728e+06
+-1.2088e+06 5.8267e+06
+-1.1555e+06 5.744e+06
+-1.0483e+06 5.7134e+06
+-1.2205e+06 6.034e+06
+-1.58e+06 6.4261e+06
+-1.6461e+06 6.4041e+06
+-1.4269e+06 6.2042e+06
+-1.527e+06 6.4897e+06
+-2.0832e+06 7.1315e+06
+-2.4024e+06 7.3021e+06
+-2.1127e+06 6.9468e+06
+-1.9784e+06 7.0742e+06
+-2.7554e+06 8.0643e+06
+-3.4737e+06 8.5166e+06
+-2.9149e+06 7.7872e+06
+-2.6631e+06 8.0751e+06
+-4.2882e+06 1.0032e+07
+-5.167e+06 1.0316e+07
+-3.8663e+06 8.933e+06
+-3.8783e+06 1.015e+07
+-6.1727e+06 1.3144e+07
+-7.7101e+06 1.4285e+07
+-7.6236e+06 1.4002e+07
+-4.9409e+06 1.2498e+07
+-6.7831e+06 1.9383e+07
+-1.596e+07 2.7699e+07
+-53595 9.9084e+06
+-1.3509e+07 3.7375e+07
+1.2761e+06 1.6045e+07
+-4.3038e+06 2.0548e+07
+-1.3901e+07 6.4417e+07
+-1.2845e+07 8.0226e+07
+-6.1619e+06 5.8538e+07
+-1.1934e+06 2.675e+07
+-5600.3 5.3037e+06
+-56788 18958
+-58119 1655.1
+-58179 461.84
+-58122 217.64
+-57957 203.33
+-57668 262.74
+-57253 344.74
+-56731 425.03
+-56133 488.33
+-55492 523.83
+-54844 523.79
+-54223 483.13
+-53660 399.57
+-53178 274.31
+-52799 112.82
+-52535 -74.401
+-52393 -271.78
+-52368 -459.53
+-52450 -615.98
+-52623 -721.34
+-52866 -762.67
+-53163 -738.98
+-53507 -664.7
+-53899 -569.25
+-54357 -490.89
+-54909 -464.93
+-55587 -509.73
+-56424 -617.34
+-57448 -757.62
+-58683 -902.04
+-60166 -1066.1
+-61967 -1357.2
+-64217 -2004
+-67128 -3339.6
+-71003 -5721.8
+-76211 -9402.4
+-83144 -14391
+-92149 -20393
+-103490 -26883
+-117320 -33339
+-133800 -39563
+-153190 -45924
+-175970 -53352
+-202940 -63001
+-235120 -75695
+-273520 -91466
+-318970 -109520
+-372030 -128810
+-433160 -148920
+-503160 -170730
+-583540 -196240
+-676570 -227340
+-784850 -264250
+-910530 -304740
+-1.0547e+06 -345120
+-1.2174e+06 -383010
+-1.3984e+06 -420380
+-1.5987e+06 -464570
+-1.8209e+06 -525720
+-2.0697e+06 -611060
+-2.3497e+06 -719050
+-2.6636e+06 -837290
+-3.0112e+06 -946910
+-3.3899e+06 -1.0321e+06
+-3.7971e+06 -1.0899e+06
+-4.2329e+06 -1.1344e+06
+-4.7009e+06 -1.1905e+06
+-5.2075e+06 -1.2809e+06
+-5.7576e+06 -1.4121e+06
+-6.3522e+06 -1.5681e+06
+-6.9866e+06 -1.7176e+06
+-7.6531e+06 -1.8308e+06
+-8.345e+06 -1.8969e+06
+-9.0605e+06 -1.9321e+06
+-9.803e+06 -1.9717e+06
+-1.0578e+07 -2.0502e+06
+-1.139e+07 -2.1795e+06
+-1.2236e+07 -2.3388e+06
+-1.3105e+07 -2.482e+06
+-1.3985e+07 -2.5601e+06
+-1.4866e+07 -2.5469e+06
+-1.5743e+07 -2.4543e+06
+-1.6617e+07 -2.3286e+06
+-1.7495e+07 -2.2291e+06
+-1.8378e+07 -2.1997e+06
+-1.926e+07 -2.2467e+06
+-2.0131e+07 -2.3348e+06
+-2.0974e+07 -2.4014e+06
+-2.1776e+07 -2.3842e+06
+-2.2532e+07 -2.2479e+06
+-2.3245e+07 -1.9993e+06
+-2.3921e+07 -1.6849e+06
+-2.4569e+07 -1.3729e+06
+-2.5193e+07 -1.1275e+06
+-2.579e+07 -986810
+-2.6346e+07 -950510
+-2.6848e+07 -982750
+-2.7283e+07 -1.0262e+06
+-2.7643e+07 -1.022e+06
+-2.7929e+07 -928170
+-2.8149e+07 -731090
+420780 -38115
+398620 -36013
+377600 -33763
+357770 -31521
+339090 -29427
+321510 -27581
+304890 -26027
+289130 -24751
+274110 -23686
+259750 -22732
+246040 -21777
+232980 -20729
+220610 -19530
+209010 -18172
+198210 -16697
+188240 -15185
+179090 -13732
+170700 -12429
+162980 -11343
+155810 -10502
+149080 -9893
+142680 -9471.8
+136540 -9178.1
+130590 -8952.2
+124820 -8749.6
+119220 -8548.1
+113760 -8347.3
+108450 -8160.9
+103270 -8006.5
+98190 -7895.4
+93197 -7827.2
+88269 -7789.3
+83395 -7761
+78574 -7720.9
+73817 -7652.2
+69138 -7546.6
+64552 -7403.8
+60076 -7229.1
+55723 -7029
+51504 -6808.7
+47428 -6570.1
+43505 -6313.1
+39745 -6037.1
+36159 -5742.7
+32757 -5432.4
+29545 -5110.4
+26529 -4781.1
+23711 -4448.8
+21093 -4116.6
+18674 -3786.8
+16452 -3461.4
+14423 -3142.8
+12582 -2833.7
+10922 -2537.4
+9435.8 -2256.7
+8112.5 -1993.8
+6941.8 -1750.4
+5912.3 -1527
+5012.7 -1323.8
+4231.4 -1140.5
+3557 -976.56
+2978.7 -831.03
+2485.7 -702.81
+2068.3 -590.52
+1717 -492.67
+1423.6 -407.82
+1180.3 -334.71
+980.02 -272.27
+816.46 -219.6
+683.74 -175.84
+576.63 -140.08
+490.48 -111.3
+421.34 -88.41
+365.88 -70.311
+321.42 -55.991
+285.82 -44.601
+257.38 -35.485
+234.76 -28.157
+216.91 -22.259
+202.99 -17.498
+192.41 -13.61
+184.74 -10.34
+179.76 -7.4473
+177.41 -4.7256
+177.76 -2.0251
+180.94 0.73119
+187.12 3.5396
+196.42 6.3194
+208.85 8.9229
+224.24 11.152
+242.17 12.786
+261.91 13.625
+282.42 13.595
+302.4 13.017
+320.52 13.428
+336.1 20.392
+350.11 53.809
+365.55 187.23
+375.88 700.55
+269.41 2675
+-694.12 10351
+16561 228520
+327420 4.3281e+06
+1.3976e+06 1.2948e+07
+3.2639e+06 2.2889e+07
+4.2431e+06 2.7041e+07
+1.8519e+06 1.8999e+07
+-1.001e+06 6.9693e+06
+2.3774e+06 1.0305e+07
+1.7587e+06 1.4095e+07
+2.0261e+06 6.7464e+06
+1.1697e+06 1.2166e+07
+2.8078e+06 8.7498e+06
+751170 8.4721e+06
+2.0866e+06 9.0279e+06
+1.789e+06 6.4967e+06
+8489.7 7.2017e+06
+787090 8.2825e+06
+1.8637e+06 6.4688e+06
+736600 5.4174e+06
+-216630 6.6376e+06
+637160 6.8762e+06
+1.2012e+06 5.5506e+06
+433140 5.0803e+06
+-146790 5.7735e+06
+244090 5.942e+06
+682010 5.2698e+06
+443990 4.788e+06
+-71789 5.02e+06
+-82988 5.3595e+06
+309310 5.0888e+06
+357500 4.5766e+06
+-11875 4.5616e+06
+-189500 4.8691e+06
+7366.9 4.8636e+06
+171470 4.5411e+06
+57076 4.3646e+06
+-156720 4.4837e+06
+-206130 4.6291e+06
+-66969 4.5489e+06
+16733 4.3289e+06
+-121520 4.2706e+06
+-291970 4.4301e+06
+-263020 4.5187e+06
+-143270 4.3868e+06
+-155720 4.2542e+06
+-285010 4.3179e+06
+-371530 4.4639e+06
+-345620 4.4868e+06
+-276250 4.3823e+06
+-292000 4.3324e+06
+-414890 4.4467e+06
+-498190 4.5914e+06
+-452810 4.5859e+06
+-400260 4.4949e+06
+-459630 4.5252e+06
+-572470 4.694e+06
+-632250 4.8177e+06
+-614700 4.792e+06
+-579110 4.7374e+06
+-630220 4.835e+06
+-777880 5.0548e+06
+-865920 5.1667e+06
+-812770 5.1015e+06
+-776360 5.0903e+06
+-897520 5.2976e+06
+-1.0796e+06 5.5501e+06
+-1.1458e+06 5.6065e+06
+-1.0704e+06 5.5146e+06
+-1.0414e+06 5.5782e+06
+-1.2525e+06 5.9228e+06
+-1.5309e+06 6.2063e+06
+-1.5065e+06 6.1069e+06
+-1.3182e+06 5.982e+06
+-1.5063e+06 6.3556e+06
+-2.0138e+06 6.9024e+06
+-2.1728e+06 6.9185e+06
+-1.8987e+06 6.6414e+06
+-1.9416e+06 6.9357e+06
+-2.6103e+06 7.7454e+06
+-3.0205e+06 7.9396e+06
+-2.5629e+06 7.3903e+06
+-2.5553e+06 7.8327e+06
+-3.8032e+06 9.2871e+06
+-4.3007e+06 9.3003e+06
+-3.1956e+06 8.273e+06
+-3.5992e+06 9.6758e+06
+-5.8521e+06 1.2094e+07
+-6.0679e+06 1.16e+07
+-4.9153e+06 1.0883e+07
+-4.9162e+06 1.2402e+07
+-6.9517e+06 1.6154e+07
+-1.1257e+07 2.018e+07
+-4.5165e+06 1.1876e+07
+-7.6037e+06 2.5208e+07
+-6.8527e+06 1.6588e+07
+-7.6225e+06 3.3028e+07
+1.7143e+06 1.0051e+07
+-6.8065e+06 2.9592e+07
+-1.4031e+07 6.8866e+07
+-1.0685e+07 7.5757e+07
+-4.4916e+06 5.3361e+07
+-1.1899e+06 2.4726e+07
+-137090 4.9901e+06
+-40747 11112
+-40971 1465.6
+-41001 436.88
+-40950 166.31
+-40865 112.67
+-40735 121.64
+-40554 149.74
+-40322 181.38
+-40048 207.88
+-39747 222.51
+-39438 219.59
+-39139 194.61
+-38872 144.7
+-38655 69.297
+-38507 -29.074
+-38437 -144.22
+-38454 -266.04
+-38554 -381.03
+-38731 -473.75
+-38967 -529.33
+-39243 -537.14
+-39538 -494.65
+-39839 -410.46
+-40141 -304.56
+-40453 -204.39
+-40797 -136.22
+-41199 -114.33
+-41689 -133.03
+-42287 -168.53
+-43004 -196.31
+-43858 -223.54
+-44896 -327.02
+-46226 -677.59
+-48058 -1528.8
+-50705 -3155.9
+-54567 -5753.8
+-60068 -9329.6
+-67567 -13651
+-77292 -18301
+-89319 -22862
+-103660 -27159
+-120400 -31451
+-139910 -36433
+-162890 -42982
+-190340 -51738
+-223310 -62742
+-262660 -75407
+-308930 -88921
+-362510 -102920
+-424040 -117980
+-494810 -135480
+-576870 -156750
+-672580 -181910
+-783770 -209280
+-911080 -236200
+-1.054e+06 -261100
+-1.2121e+06 -285710
+-1.3863e+06 -315900
+-1.5806e+06 -359570
+-1.8014e+06 -422300
+-2.0554e+06 -502750
+-2.3472e+06 -590950
+-2.6762e+06 -671730
+-3.0375e+06 -732190
+-3.4247e+06 -769650
+-3.834e+06 -795080
+-4.2679e+06 -828850
+-4.7343e+06 -890090
+-5.2433e+06 -985190
+-5.8011e+06 -1.1023e+06
+-6.4064e+06 -1.2163e+06
+-7.0501e+06 -1.3018e+06
+-7.7205e+06 -1.3486e+06
+-8.4096e+06 -1.3684e+06
+-9.1178e+06 -1.39e+06
+-9.8539e+06 -1.4431e+06
+-1.0629e+07 -1.5399e+06
+-1.1449e+07 -1.6653e+06
+-1.2309e+07 -1.7816e+06
+-1.3193e+07 -1.8464e+06
+-1.408e+07 -1.835e+06
+-1.4951e+07 -1.7548e+06
+-1.5799e+07 -1.6439e+06
+-1.6627e+07 -1.5541e+06
+-1.7449e+07 -1.526e+06
+-1.8276e+07 -1.5689e+06
+-1.9112e+07 -1.6545e+06
+-1.9949e+07 -1.7287e+06
+-2.0768e+07 -1.7343e+06
+-2.1546e+07 -1.6362e+06
+-2.2261e+07 -1.4362e+06
+-2.2904e+07 -1.1734e+06
+-2.3476e+07 -908650
+-2.3989e+07 -702090
+-2.4458e+07 -591490
+-2.4897e+07 -580090
+-2.5313e+07 -637310
+-2.5704e+07 -710840
+-2.606e+07 -744970
+-2.6366e+07 -698200
+-2.6608e+07 -554820
+316430 -22814
+299310 -21485
+283170 -20071
+268040 -18674
+253870 -17383
+240590 -16262
+228060 -15336
+216170 -14592
+204830 -13983
+193960 -13442
+183560 -12893
+173650 -12277
+164280 -11556
+155520 -10728
+147420 -9820.7
+140000 -8888.4
+133250 -7995.1
+127110 -7200.2
+121500 -6545.8
+116320 -6048.3
+111460 -5698.2
+106830 -5465.6
+102360 -5310.6
+98025 -5194.6
+93798 -5089.2
+89676 -4981.2
+85656 -4871.2
+81733 -4769.1
+77893 -4686.6
+74120 -4631.3
+70392 -4602.9
+66695 -4592.9
+63021 -4588.2
+59372 -4574.8
+55759 -4542
+52197 -4484.8
+48700 -4403.3
+45283 -4301.3
+41958 -4183
+38735 -4052
+35621 -3909.6
+32625 -3755.8
+29755 -3590.3
+27021 -3413.6
+24429 -3227.1
+21985 -3033.6
+19694 -2836
+17558 -2636.6
+15577 -2437.5
+13750 -2240
+12076 -2045.1
+10551 -1854.4
+9171.5 -1669.4
+7932.4 -1492.3
+6826.5 -1324.6
+5846 -1168
+4982.1 -1023.2
+4225.7 -890.62
+3567.6 -770.39
+2998.6 -662.26
+2509.7 -565.81
+2092.2 -480.47
+1737.9 -405.48
+1439.1 -339.96
+1189 -282.98
+980.99 -233.64
+809.5 -191.18
+669.27 -154.97
+555.54 -124.49
+463.98 -99.235
+390.67 -78.687
+332.17 -62.242
+285.55 -49.245
+248.39 -39.035
+218.73 -31.005
+195.07 -24.652
+176.22 -19.589
+161.25 -15.54
+149.4 -12.305
+140.11 -9.7241
+132.91 -7.6546
+127.49 -5.9561
+123.65 -4.495
+121.3 -3.1558
+120.43 -1.855
+121.07 -0.55005
+123.26 0.75723
+127.02 2.0245
+132.29 3.1776
+138.9 4.1234
+146.55 4.768
+154.83 5.0472
+163.21 4.9928
+171.17 4.9193
+178.55 6.0471
+186.41 12.803
+199.61 41.817
+233.7 158.38
+330.78 627.58
+571.08 2547.9
+838.94 10619
+498.92 221790
+285970 4.0128e+06
+1.2334e+06 1.2005e+07
+3.0142e+06 2.1334e+07
+3.8691e+06 2.6553e+07
+2.4752e+06 2.1163e+07
+-604100 8.9994e+06
+786300 7.453e+06
+2.8231e+06 1.4565e+07
+-463330 7.6008e+06
+3.5747e+06 1.1685e+07
+954410 7.5414e+06
+1.9258e+06 1.0146e+07
+1.5778e+06 7.3259e+06
+390740 8.363e+06
+1.8589e+06 8.2272e+06
+1.6156e+06 5.9584e+06
+-28645 6.5371e+06
+446060 7.6777e+06
+1.5651e+06 6.2974e+06
+760490 5.1712e+06
+-193220 6.0695e+06
+356150 6.5128e+06
+963130 5.5298e+06
+500530 4.9009e+06
+-98097 5.3427e+06
+36346 5.6835e+06
+496950 5.2667e+06
+463540 4.6908e+06
+-29202 4.7444e+06
+-188640 5.1349e+06
+139170 5.0384e+06
+292920 4.5615e+06
+25910 4.4293e+06
+-208960 4.6849e+06
+-127150 4.787e+06
+52346 4.5636e+06
+42881 4.3356e+06
+-154890 4.3698e+06
+-285730 4.5516e+06
+-190560 4.5679e+06
+-65839 4.3653e+06
+-149590 4.2477e+06
+-326370 4.3807e+06
+-358980 4.5252e+06
+-270850 4.4588e+06
+-237450 4.3132e+06
+-321510 4.3216e+06
+-441320 4.4758e+06
+-473590 4.5704e+06
+-405580 4.4989e+06
+-382300 4.4105e+06
+-487410 4.4921e+06
+-599760 4.6733e+06
+-605160 4.7354e+06
+-562610 4.6552e+06
+-574370 4.6324e+06
+-666370 4.7861e+06
+-784530 4.9804e+06
+-821420 5.0139e+06
+-763220 4.9294e+06
+-769200 4.9771e+06
+-924090 5.2203e+06
+-1.0711e+06 5.4126e+06
+-1.0661e+06 5.3865e+06
+-996810 5.3183e+06
+-1.0492e+06 5.473e+06
+-1.2692e+06 5.805e+06
+-1.4487e+06 5.9691e+06
+-1.3687e+06 5.8319e+06
+-1.2479e+06 5.8081e+06
+-1.4977e+06 6.2333e+06
+-1.921e+06 6.656e+06
+-1.9431e+06 6.5517e+06
+-1.7051e+06 6.3691e+06
+-1.9024e+06 6.8009e+06
+-2.5014e+06 7.4679e+06
+-2.6647e+06 7.4561e+06
+-2.2316e+06 7.0262e+06
+-2.3975e+06 7.5664e+06
+-3.4733e+06 8.7556e+06
+-3.6524e+06 8.5697e+06
+-2.7864e+06 7.8338e+06
+-3.4222e+06 9.238e+06
+-5.1371e+06 1.0878e+07
+-4.7778e+06 9.9139e+06
+-3.6036e+06 9.4823e+06
+-4.9199e+06 1.205e+07
+-6.7536e+06 1.4039e+07
+-7.5854e+06 1.4576e+07
+-5.2211e+06 1.243e+07
+-5.3687e+06 1.7096e+07
+-1.2174e+07 2.3347e+07
+-483610 1.1703e+07
+-9.4087e+06 2.6333e+07
+-3.2131e+06 2.4732e+07
+541650 9.7395e+06
+-8.7597e+06 3.7916e+07
+-1.2487e+07 7.0217e+07
+-9.6102e+06 7.2424e+07
+-4.2161e+06 4.9538e+07
+-969410 2.2499e+07
+-27152 4.4589e+06
+-28166 15023
+-27795 1551
+-27661 383.68
+-27593 118.09
+-27536 60.93
+-27471 55.277
+-27389 63.01
+-27287 73.56
+-27166 82.415
+-27033 86.177
+-26896 81.658
+-26766 66.006
+-26657 37.126
+-26581 -5.778
+-26551 -61.641
+-26574 -127.07
+-26657 -196.14
+-26798 -260.55
+-26989 -310.51
+-27217 -336.23
+-27462 -330.25
+-27704 -290.05
+-27926 -220.21
+-28119 -132.9
+-28286 -45.585
+-28441 24.538
+-28605 67.811
+-28799 87.869
+-29037 100.93
+-29322 124.59
+-29658 156.04
+-30072 145.89
+-30654 -19.196
+-31589 -509.73
+-33173 -1512.4
+-35791 -3159.9
+-39849 -5457.5
+-45686 -8245.7
+-53495 -11238
+-63295 -14143
+-75017 -16832
+-88655 -19469
+-104450 -22514
+-123010 -26555
+-145210 -32022
+-172020 -38950
+-204230 -46950
+-242320 -55471
+-286550 -64239
+-337370 -73586
+-395790 -84370
+-463440 -97410
+-542200 -112750
+-633430 -129300
+-737390 -145390
+-853390 -160090
+-980910 -174760
+-1.1213e+06 -193460
+-1.2788e+06 -221570
+-1.4606e+06 -262800
+-1.6741e+06 -316030
+-1.9238e+06 -374270
+-2.2088e+06 -426880
+-2.5228e+06 -464850
+-2.8574e+06 -486270
+-3.2068e+06 -498780
+-3.5726e+06 -516790
+-3.9636e+06 -554070
+-4.3921e+06 -615600
+-4.8674e+06 -693510
+-5.3903e+06 -770080
+-5.9515e+06 -827110
+-6.537e+06 -856550
+-7.1356e+06 -866110
+-7.7457e+06 -876110
+-8.3769e+06 -908250
+-9.0445e+06 -972360
+-9.7598e+06 -1.0586e+06
+-1.0522e+07 -1.1403e+06
+-1.1313e+07 -1.1865e+06
+-1.2109e+07 -1.1779e+06
+-1.2881e+07 -1.1187e+06
+-1.3617e+07 -1.036e+06
+-1.432e+07 -968040
+-1.5009e+07 -946160
+-1.5705e+07 -978870
+-1.6426e+07 -1.0466e+06
+-1.7169e+07 -1.1093e+06
+-1.7913e+07 -1.1234e+06
+-1.8623e+07 -1.0606e+06
+-1.9266e+07 -920260
+-1.9816e+07 -730530
+-2.0271e+07 -537310
+-2.0645e+07 -387190
+-2.0969e+07 -310620
+-2.1273e+07 -311800
+-2.158e+07 -368460
+-2.1898e+07 -440690
+-2.2216e+07 -484910
+-2.251e+07 -467800
+-2.2749e+07 -375660
+216360 -11774
+204420 -11058
+193220 -10299
+182780 -9554.7
+173040 -8873.1
+163940 -8288.1
+155380 -7812.7
+147250 -7438.2
+139470 -7137.4
+132010 -6871.4
+124850 -6599
+118030 -6286.1
+111580 -5912.9
+105560 -5478.6
+100030 -4999.9
+94999 -4507
+90456 -4035.8
+86359 -3618.9
+82637 -3279.1
+79209 -3025
+75996 -2850.6
+72929 -2738.9
+69962 -2667.8
+67068 -2616.1
+64237 -2568.4
+61467 -2517.8
+58760 -2465.2
+56113 -2416.3
+53516 -2377.8
+50956 -2353.8
+48419 -2344.2
+45892 -2344.5
+43371 -2347.1
+40858 -2344.7
+38363 -2331.3
+35897 -2304.2
+33474 -2263.8
+31105 -2212
+28798 -2151.5
+26562 -2084.1
+24402 -2010.6
+22324 -1931.2
+20335 -1845.5
+18440 -1753.9
+16647 -1657.3
+14957 -1557.1
+13375 -1454.7
+11902 -1351.6
+10537 -1248.7
+9281 -1146.6
+8131.4 -1045.9
+7086.6 -947.4
+6143.7 -851.92
+5298.7 -760.48
+4546.7 -674.05
+3882 -593.38
+3298.2 -518.95
+2788.7 -450.96
+2346.8 -389.42
+1966.1 -334.2
+1640 -285.06
+1362.4 -241.68
+1127.6 -203.65
+930.19 -170.47
+765.44 -141.66
+629 -116.74
+516.95 -95.303
+425.79 -77.041
+352.27 -61.69
+293.45 -49.002
+246.66 -38.71
+209.57 -30.509
+180.18 -24.06
+156.87 -19.021
+138.34 -15.077
+123.59 -11.97
+111.87 -9.5025
+102.56 -7.5368
+95.191 -5.9751
+89.372 -4.7415
+84.801 -3.767
+81.258 -2.9837
+78.594 -2.3261
+76.73 -1.737
+75.638 -1.1748
+75.32 -0.61802
+75.781 -0.066508
+77.006 0.46105
+78.941 0.93234
+81.48 1.3087
+84.454 1.5552
+87.65 1.6563
+90.841 1.6534
+93.9 1.7563
+97.127 2.7453
+102.31 7.5427
+116.43 27.696
+164.77 111.25
+336.72 466.59
+935.17 2022.6
+2999.9 9006.7
+23891 201480
+267640 3.7039e+06
+1.0989e+06 1.1099e+07
+2.5285e+06 2.0269e+07
+3.7343e+06 2.581e+07
+2.7217e+06 2.251e+07
+-61584 1.1397e+07
+-232140 6.1938e+06
+2.712e+06 1.2837e+07
+228220 1.0601e+07
+2.0263e+06 7.7217e+06
+858590 1.0713e+07
+2.4026e+06 8.5053e+06
+833010 8.3939e+06
+2.0793e+06 8.3956e+06
+1.0485e+06 6.4637e+06
+106310 7.857e+06
+1.4983e+06 7.7038e+06
+1.4824e+06 5.6735e+06
+-19474 5.9935e+06
+208600 7.1411e+06
+1.2383e+06 6.1463e+06
+775890 5.0144e+06
+-107780 5.6017e+06
+112960 6.1498e+06
+701940 5.4885e+06
+541570 4.8056e+06
+-22934 4.9918e+06
+-119020 5.4194e+06
+294410 5.2392e+06
+424750 4.6497e+06
+16795 4.5415e+06
+-245610 4.915e+06
+-26759 4.9689e+06
+184510 4.5798e+06
+40589 4.3586e+06
+-207920 4.5253e+06
+-241290 4.701e+06
+-85079 4.5952e+06
+-9491.9 4.3521e+06
+-162460 4.2972e+06
+-343180 4.4792e+06
+-310450 4.5846e+06
+-181600 4.4313e+06
+-206420 4.2701e+06
+-358000 4.3524e+06
+-444890 4.5318e+06
+-410230 4.5449e+06
+-350730 4.4117e+06
+-384000 4.3635e+06
+-511760 4.4996e+06
+-594090 4.6558e+06
+-555850 4.6444e+06
+-515080 4.5382e+06
+-580400 4.5661e+06
+-695950 4.7588e+06
+-764330 4.9013e+06
+-756800 4.8588e+06
+-724650 4.7855e+06
+-778720 4.9023e+06
+-934240 5.1492e+06
+-1.0307e+06 5.2586e+06
+-982910 5.1777e+06
+-944140 5.1639e+06
+-1.0631e+06 5.3898e+06
+-1.2631e+06 5.6722e+06
+-1.3442e+06 5.7236e+06
+-1.2448e+06 5.59e+06
+-1.212e+06 5.676e+06
+-1.4897e+06 6.1091e+06
+-1.8023e+06 6.3908e+06
+-1.7258e+06 6.2116e+06
+-1.5512e+06 6.1419e+06
+-1.8583e+06 6.6631e+06
+-2.3768e+06 7.184e+06
+-2.3715e+06 7.0337e+06
+-1.9966e+06 6.7456e+06
+-2.2462e+06 7.3187e+06
+-3.1456e+06 8.2603e+06
+-3.2121e+06 8.0345e+06
+-2.4907e+06 7.4902e+06
+-3.1232e+06 8.7062e+06
+-4.498e+06 9.941e+06
+-3.8621e+06 8.8858e+06
+-3.0892e+06 8.8648e+06
+-4.7822e+06 1.1422e+07
+-6.0626e+06 1.2227e+07
+-5.2523e+06 1.129e+07
+-4.6464e+06 1.1788e+07
+-5.5956e+06 1.4591e+07
+-9.7537e+06 1.9072e+07
+-4.0231e+06 1.1554e+07
+-7.3902e+06 2.3265e+07
+-2.2933e+06 1.0933e+07
+-8.819e+06 3.0168e+07
+-218130 1.6605e+07
+-1.2811e+06 1.2948e+07
+-9.4277e+06 4.4552e+07
+-1.2316e+07 7.1345e+07
+-8.138e+06 6.8327e+07
+-3.3488e+06 4.5608e+07
+-825710 2.0856e+07
+-64509 4.1744e+06
+-17849 11549
+-17506 1251.3
+-17346 281.14
+-17275 71.103
+-17236 28.413
+-17203 22.324
+-17165 24.089
+-17121 27.094
+-17071 29.268
+-17016 29.222
+-16962 25.534
+-16915 16.792
+-16880 1.8616
+-16868 -19.79
+-16885 -47.751
+-16937 -80.375
+-17027 -114.62
+-17154 -146.13
+-17312 -169.58
+-17490 -179.55
+-17672 -171.69
+-17840 -144.27
+-17980 -99.374
+-18080 -43.364
+-18140 14.331
+-18168 64.196
+-18178 100.78
+-18183 126.06
+-18192 149.27
+-18203 180.79
+-18211 219.73
+-18233 238.94
+-18333 174.71
+-18659 -69.701
+-19452 -600.85
+-21030 -1494.9
+-23735 -2755.2
+-27843 -4290.2
+-33503 -5935.3
+-40709 -7521.2
+-49366 -8970.8
+-59428 -10373
+-71049 -11986
+-84679 -14140
+-101020 -17079
+-120850 -20826
+-144780 -25160
+-173180 -29764
+-206220 -34473
+-244150 -39450
+-287670 -45148
+-337910 -52000
+-396180 -60014
+-463370 -68596
+-539500 -76845
+-623930 -84326
+-716310 -91888
+-818000 -101890
+-933020 -117400
+-1.0677e+06 -140460
+-1.2284e+06 -170320
+-1.419e+06 -202840
+-1.6382e+06 -231860
+-1.8798e+06 -252110
+-2.1355e+06 -262530
+-2.3997e+06 -267590
+-2.6734e+06 -275800
+-2.9645e+06 -295310
+-3.2849e+06 -329230
+-3.6439e+06 -373070
+-4.043e+06 -416470
+-4.4745e+06 -448570
+-4.9252e+06 -464360
+-5.3838e+06 -468150
+-5.848e+06 -471870
+-6.3264e+06 -488560
+-6.8342e+06 -524470
+-7.3836e+06 -574190
+-7.9757e+06 -621980
+-8.5961e+06 -649150
+-9.2195e+06 -643830
+-9.8198e+06 -607900
+-1.0382e+07 -557420
+-1.0908e+07 -515620
+-1.1418e+07 -501920
+-1.1937e+07 -522230
+-1.2485e+07 -565190
+-1.3063e+07 -606480
+-1.3652e+07 -619030
+-1.4218e+07 -584780
+-1.4723e+07 -502560
+-1.5139e+07 -389070
+-1.5459e+07 -272560
+-1.57e+07 -182250
+-1.5892e+07 -137700
+-1.6074e+07 -142260
+-1.6274e+07 -182590
+-1.6504e+07 -233920
+-1.6754e+07 -268760
+-1.6999e+07 -265730
+-1.7204e+07 -215590
+128200 -4803.9
+121030 -4502.1
+114320 -4183.4
+108100 -3872.1
+102320 -3589.2
+96928 -3348.6
+91858 -3155.7
+87044 -3006.2
+82434 -2887.9
+77999 -2783.9
+73737 -2676.2
+69668 -2550.3
+65827 -2397.7
+62253 -2218.3
+58978 -2019.6
+56015 -1814.8
+53357 -1619.2
+50974 -1447
+48821 -1307.7
+46843 -1204.8
+44990 -1135.7
+43218 -1092.8
+41498 -1066.6
+39814 -1048.1
+38162 -1030.7
+36542 -1011.7
+34955 -991.5
+33401 -972.68
+31874 -958.17
+30365 -949.8
+28865 -947.48
+27367 -949.24
+25867 -951.94
+24368 -952.33
+22876 -947.96
+21400 -937.7
+19948 -921.69
+18527 -900.84
+17143 -876.26
+15801 -848.79
+14505 -818.79
+13259 -786.29
+12067 -751.23
+10932 -713.72
+9857.9 -674.15
+8847.3 -633.1
+7901.7 -591.22
+7021.8 -549.06
+6207.6 -506.99
+5458.8 -465.29
+4774.4 -424.17
+4153.3 -383.93
+3593.7 -344.93
+3093.1 -307.61
+2648.5 -272.35
+2256.3 -239.47
+1912.7 -209.17
+1613.6 -181.54
+1354.8 -156.57
+1132.3 -134.21
+942.13 -114.34
+780.65 -96.835
+644.34 -81.507
+530.01 -68.155
+434.8 -56.568
+356.15 -46.551
+291.76 -37.941
+239.56 -30.609
+197.64 -24.451
+164.26 -19.37
+137.85 -15.259
+117.01 -11.993
+100.58 -9.434
+87.588 -7.4428
+77.297 -5.8904
+69.128 -4.6709
+62.641 -3.7052
+57.495 -2.9381
+53.414 -2.3314
+50.179 -1.8556
+47.611 -1.4841
+45.577 -1.1904
+43.988 -0.94863
+42.791 -0.73603
+41.963 -0.53591
+41.498 -0.33943
+41.394 -0.14604
+41.638 0.037668
+42.199 0.20028
+43.022 0.32861
+44.027 0.41184
+45.118 0.44815
+46.216 0.4609
+47.335 0.55097
+48.85 1.0944
+52.466 3.5492
+64.964 13.944
+113.39 58.782
+307.6 261.11
+1095.8 1214.3
+4210.9 5911.5
+7906.1 191130
+219410 3.4868e+06
+1.0194e+06 1.0327e+07
+2.0615e+06 1.9087e+07
+3.3191e+06 2.5182e+07
+2.9783e+06 2.338e+07
+526600 1.3557e+07
+-673390 6.1666e+06
+1.8309e+06 1.0482e+07
+1.4075e+06 1.268e+07
+25920 6.6285e+06
+2.4779e+06 1.1168e+07
+896170 7.2598e+06
+1.7081e+06 9.6194e+06
+1.2182e+06 7.2876e+06
+711970 8.4218e+06
+1.9664e+06 7.4458e+06
+864700 5.8875e+06
+-61705 7.2347e+06
+1.1615e+06 7.2926e+06
+1.3358e+06 5.4703e+06
+48965 5.5698e+06
+7217.1 6.644e+06
+920200 5.9893e+06
+776290 4.959e+06
+-24419 5.2145e+06
+-73347 5.7778e+06
+448070 5.4446e+06
+534870 4.7756e+06
+51906 4.7218e+06
+-219870 5.1581e+06
+92988 5.1817e+06
+331900 4.6508e+06
+49096 4.4134e+06
+-262940 4.7142e+06
+-174000 4.8803e+06
+44073 4.6155e+06
+19993 4.3459e+06
+-201220 4.4028e+06
+-328710 4.6106e+06
+-227070 4.6263e+06
+-101180 4.407e+06
+-191870 4.2723e+06
+-384740 4.4212e+06
+-419300 4.5965e+06
+-320490 4.5174e+06
+-296270 4.3388e+06
+-401700 4.3574e+06
+-523190 4.5422e+06
+-548640 4.6357e+06
+-491010 4.5464e+06
+-483530 4.4534e+06
+-591320 4.5436e+06
+-703450 4.7415e+06
+-718280 4.8121e+06
+-685530 4.7143e+06
+-699840 4.6789e+06
+-795600 4.8582e+06
+-921380 5.0761e+06
+-962790 5.0932e+06
+-907350 4.9915e+06
+-915660 5.054e+06
+-1.0718e+06 5.3193e+06
+-1.2279e+06 5.5195e+06
+-1.2294e+06 5.4804e+06
+-1.1442e+06 5.3912e+06
+-1.1996e+06 5.5761e+06
+-1.4701e+06 5.9713e+06
+-1.6619e+06 6.1134e+06
+-1.5328e+06 5.911e+06
+-1.4461e+06 5.9642e+06
+-1.8129e+06 6.5197e+06
+-2.2223e+06 6.8805e+06
+-2.1041e+06 6.6458e+06
+-1.8369e+06 6.5262e+06
+-2.1666e+06 7.1332e+06
+-2.8317e+06 7.7901e+06
+-2.7823e+06 7.5201e+06
+-2.3032e+06 7.2388e+06
+-2.8822e+06 8.277e+06
+-3.8954e+06 9.1482e+06
+-3.3455e+06 8.2995e+06
+-2.8108e+06 8.4309e+06
+-4.4409e+06 1.0606e+07
+-5.1857e+06 1.0757e+07
+-3.8674e+06 9.531e+06
+-4.1776e+06 1.1135e+07
+-5.8192e+06 1.3374e+07
+-7.1626e+06 1.4569e+07
+-5.3087e+06 1.2418e+07
+-4.8692e+06 1.5906e+07
+-8.64e+06 1.8721e+07
+-1.5841e+06 1.4123e+07
+-5.4867e+06 1.7085e+07
+-6.0649e+06 2.8065e+07
+715310 1.1645e+07
+-3.0712e+06 1.787e+07
+-1.024e+07 4.9983e+07
+-1.0809e+07 7.0423e+07
+-6.8939e+06 6.4675e+07
+-3.4153e+06 4.3013e+07
+-662270 1.9244e+07
+-17692 3.7872e+06
+-10737 11605
+-9870 824.02
+-9626 156.64
+-9562.7 32.549
+-9539.6 9.9537
+-9524.1 7.0005
+-9508.4 7.5156
+-9491 8.3001
+-9471.9 8.6159
+-9452.3 8.0461
+-9434.2 6.1113
+-9420.8 2.2836
+-9415.9 -3.8943
+-9423.6 -12.659
+-9448.3 -23.873
+-9493.2 -36.889
+-9559.9 -50.47
+-9647.6 -62.799
+-9751.9 -71.628
+-9865.3 -74.615
+-9977.1 -69.836
+-10075 -56.428
+-10148 -35.158
+-10188 -8.6341
+-10193 19.164
+-10165 44.155
+-10114 63.969
+-10047 79.451
+-9966.6 94.657
+-9870.6 114.23
+-9753.1 137.98
+-9621.3 154.24
+-9516.7 135.26
+-9536.7 38.578
+-9845.1 -182.74
+-10660 -562.41
+-12215 -1102
+-14701 -1761.3
+-18214 -2467.4
+-22744 -3145.1
+-28211 -3759.2
+-34567 -4347.7
+-41900 -5022.4
+-50499 -5927.5
+-60828 -7170.1
+-73405 -8759.5
+-88641 -10599
+-106760 -12550
+-127850 -14533
+-152040 -16615
+-179710 -18981
+-211560 -21811
+-248340 -25105
+-290550 -28609
+-338120 -31949
+-390600 -34962
+-447830 -38051
+-510900 -42270
+-582770 -48958
+-667910 -58984
+-770860 -71978
+-894080 -86074
+-1.0364e+06 -98506
+-1.1932e+06 -106950
+-1.3581e+06 -110940
+-1.5271e+06 -112500
+-1.7005e+06 -115470
+-1.8844e+06 -123520
+-2.0875e+06 -138100
+-2.3169e+06 -157220
+-2.5741e+06 -176240
+-2.8535e+06 -190230
+-3.1456e+06 -196860
+-3.4418e+06 -198000
+-3.7399e+06 -199010
+-4.0463e+06 -205850
+-4.3722e+06 -221440
+-4.7276e+06 -243480
+-5.114e+06 -264880
+-5.5211e+06 -277110
+-5.9303e+06 -274600
+-6.3215e+06 -258090
+-6.6829e+06 -234800
+-7.0162e+06 -215420
+-7.3361e+06 -209020
+-7.6634e+06 -218500
+-8.0145e+06 -238820
+-8.3921e+06 -258780
+-8.7825e+06 -265780
+-9.1588e+06 -251220
+-9.491e+06 -214290
+-9.7565e+06 -162580
+-9.9489e+06 -109190
+-1.008e+07 -67845
+-1.0176e+07 -47907
+-1.0267e+07 -51167
+-1.0378e+07 -71544
+-1.0519e+07 -97488
+-1.0685e+07 -116030
+-1.0854e+07 -116960
+-1.0998e+07 -95712
+59157 -1255.3
+55813 -1174.7
+52700 -1089.7
+49818 -1007
+47149 -932.19
+44664 -869.03
+42329 -818.83
+40110 -780.38
+37982 -750.32
+35932 -724
+33959 -696.53
+32073 -663.94
+30294 -624.02
+28641 -576.75
+27131 -524.21
+25770 -469.98
+24554 -418.26
+23470 -372.85
+22493 -336.34
+21599 -309.61
+20760 -291.91
+19957 -281.2
+19176 -274.88
+18409 -270.5
+17654 -266.35
+16913 -261.67
+16186 -256.61
+15474 -251.9
+14772 -248.32
+14078 -246.38
+13387 -246.06
+12695 -246.83
+12000 -247.82
+11305 -248.18
+10612 -247.24
+9925.2 -244.69
+9249 -240.6
+8587.2 -235.19
+7942.7 -228.79
+7317.8 -221.61
+6714.3 -213.76
+6134.1 -205.25
+5579 -196.06
+5051 -186.23
+4551.4 -175.86
+4081.7 -165.1
+3642.4 -154.14
+3233.9 -143.1
+2856.1 -132.09
+2508.9 -121.18
+2191.8 -110.43
+1904.3 -99.902
+1645.6 -89.703
+1414.4 -79.942
+1209.3 -70.726
+1028.8 -62.139
+870.78 -54.233
+733.47 -47.029
+614.86 -40.527
+513.05 -34.71
+426.18 -29.55
+352.51 -25.007
+290.41 -21.034
+238.4 -17.576
+195.15 -14.577
+159.48 -11.985
+130.33 -9.7571
+106.76 -7.8609
+87.891 -6.2694
+72.915 -4.9574
+61.106 -3.8975
+51.825 -3.0573
+44.529 -2.4008
+38.779 -1.8913
+34.233 -1.4952
+30.63 -1.1847
+27.772 -0.93922
+25.506 -0.74463
+23.708 -0.59118
+22.278 -0.47146
+21.136 -0.37875
+20.218 -0.3063
+19.483 -0.2475
+18.906 -0.19648
+18.475 -0.14891
+18.184 -0.10245
+18.034 -0.056858
+18.017 -0.013662
+18.12 0.024451
+18.323 0.054455
+18.593 0.074056
+18.897 0.083458
+19.213 0.089839
+19.576 0.12252
+20.232 0.29217
+22.241 1.0404
+30.003 4.2623
+62.435 18.747
+204.37 89.038
+838.02 461.84
+3744.9 2352.8
+64785 127870
+18320 3.3407e+06
+743350 9.8628e+06
+1.9677e+06 1.7982e+07
+3.0151e+06 2.4263e+07
+2.9661e+06 2.394e+07
+1.0531e+06 1.5524e+07
+-659850 6.8985e+06
+898230 8.421e+06
+2.031e+06 1.3075e+07
+-263300 7.9756e+06
+1.9347e+06 8.749e+06
+521280 9.2238e+06
+2.0349e+06 8.3911e+06
+872730 8.1235e+06
+1.8353e+06 7.9264e+06
+601530 6.661e+06
+495350 8.0382e+06
+1.7215e+06 6.9267e+06
+789670 5.504e+06
+-167040 6.6994e+06
+852450 6.8982e+06
+1.2045e+06 5.3662e+06
+110160 5.2288e+06
+-114450 6.1583e+06
+625920 5.866e+06
+711600 4.9393e+06
+62854 4.9026e+06
+-188070 5.4267e+06
+210130 5.3877e+06
+468210 4.7849e+06
+107920 4.5334e+06
+-270090 4.9145e+06
+-90493 5.0942e+06
+194760 4.6774e+06
+51537 4.3581e+06
+-256240 4.5464e+06
+-292590 4.777e+06
+-113410 4.6558e+06
+-42362 4.3835e+06
+-204750 4.3275e+06
+-390630 4.5253e+06
+-361980 4.6511e+06
+-226210 4.4902e+06
+-251970 4.2986e+06
+-423010 4.3898e+06
+-514820 4.6053e+06
+-468690 4.6128e+06
+-417930 4.4511e+06
+-471620 4.4072e+06
+-599540 4.5637e+06
+-676550 4.7257e+06
+-650360 4.7107e+06
+-621770 4.5941e+06
+-686510 4.6177e+06
+-804970 4.8333e+06
+-882590 4.9934e+06
+-877230 4.9283e+06
+-845850 4.8395e+06
+-906690 4.9835e+06
+-1.0651e+06 5.2517e+06
+-1.1621e+06 5.3488e+06
+-1.117e+06 5.2526e+06
+-1.0728e+06 5.2414e+06
+-1.1973e+06 5.4975e+06
+-1.4295e+06 5.8136e+06
+-1.5102e+06 5.8351e+06
+-1.3735e+06 5.66e+06
+-1.3845e+06 5.8296e+06
+-1.7619e+06 6.3628e+06
+-2.0412e+06 6.5618e+06
+-1.857e+06 6.2923e+06
+-1.721e+06 6.3434e+06
+-2.1269e+06 6.9782e+06
+-2.5777e+06 7.3757e+06
+-2.3851e+06 7.0444e+06
+-2.1005e+06 6.9791e+06
+-2.7444e+06 7.9668e+06
+-3.4496e+06 8.5329e+06
+-2.8928e+06 7.7833e+06
+-2.631e+06 8.0689e+06
+-3.9927e+06 9.8027e+06
+-4.3849e+06 9.6736e+06
+-3.1704e+06 8.679e+06
+-3.8777e+06 1.0516e+07
+-5.6385e+06 1.2276e+07
+-5.4153e+06 1.1654e+07
+-4.6829e+06 1.1596e+07
+-4.868e+06 1.3521e+07
+-8.2046e+06 1.7466e+07
+-3.1106e+06 1.1046e+07
+-6.8352e+06 2.0825e+07
+-813420 9.9255e+06
+-6.9784e+06 2.2866e+07
+-3.4872e+06 2.3252e+07
+626920 9.53e+06
+-4.5547e+06 2.3201e+07
+-9.9851e+06 5.3631e+07
+-1.0068e+07 6.9595e+07
+-6.6268e+06 6.1718e+07
+-2.6504e+06 3.9898e+07
+-340210 1.7684e+07
+-77629 3.6373e+06
+-5522.4 5058.7
+-4417.3 313.39
+-4239.2 54.999
+-4201.8 9.2437
+-4192.2 2.0946
+-4187 1.3611
+-4181.8 1.5495
+-4176.1 1.7273
+-4170 1.7353
+-4164.3 1.5
+-4159.8 0.91944
+-4157.7 -0.13186
+-4159.6 -1.7693
+-4167.5 -4.0561
+-4183.2 -6.9597
+-4208 -10.314
+-4242.7 -13.797
+-4286.7 -16.924
+-4337.9 -19.096
+-4392.3 -19.674
+-4444.6 -18.128
+-4488.5 -14.204
+-4518 -8.0847
+-4528.7 -0.45406
+-4518.8 7.6244
+-4489.6 15.049
+-4444.5 21.173
+-4387.1 26.227
+-4318.3 31.323
+-4235.7 37.75
+-4135.7 45.492
+-4020.9 51.386
+-3911.3 47.833
+-3855.6 23.172
+-3937 -35.531
+-4266.7 -137.59
+-4964.1 -283.49
+-6126.4 -462.14
+-7802.3 -653.43
+-9983.7 -836.54
+-12627 -1001.6
+-15703 -1158.8
+-19251 -1338.7
+-23413 -1580.7
+-28421 -1914.1
+-34534 -2341.4
+-41955 -2836.2
+-50793 -3359.7
+-61080 -3890.1
+-72866 -4443.4
+-86322 -5069
+-101760 -5814.3
+-119520 -6678.5
+-139830 -7593.2
+-162620 -8459.7
+-187660 -9239.5
+-214910 -10048
+-244980 -11179
+-279450 -12999
+-320660 -15740
+-370930 -19292
+-431480 -23131
+-501590 -26490
+-578700 -28724
+-659480 -29710
+-741670 -30019
+-825550 -30717
+-914240 -32839
+-1.0124e+06 -36791
+-1.124e+06 -42027
+-1.2499e+06 -47248
+-1.3871e+06 -51076
+-1.5306e+06 -52844
+-1.6757e+06 -53061
+-1.8213e+06 -53225
+-1.9705e+06 -55012
+-2.1296e+06 -59269
+-2.3039e+06 -65364
+-2.4946e+06 -71321
+-2.6963e+06 -74732
+-2.8989e+06 -74012
+-3.0918e+06 -69335
+-3.2683e+06 -62729
+-3.4292e+06 -57213
+-3.5826e+06 -55380
+-3.7402e+06 -58093
+-3.9112e+06 -63948
+-4.0978e+06 -69779
+-4.2925e+06 -71980
+-4.4807e+06 -68063
+-4.6457e+06 -57757
+-4.7747e+06 -43187
+-4.8639e+06 -28088
+-4.9197e+06 -16404
+-4.9566e+06 -10847
+-4.9919e+06 -11975
+-5.0395e+06 -18076
+-5.1061e+06 -25848
+-5.1885e+06 -31559
+-5.2754e+06 -32243
+-5.3508e+06 -26555
+15128 -90.986
+14268 -85.068
+13469 -78.84
+12731 -72.79
+12048 -67.333
+11413 -62.742
+10817 -59.113
+10250 -56.353
+9706 -54.21
+9181.1 -52.337
+8675.5 -50.374
+8192.1 -48.026
+7736 -45.131
+7312.8 -41.688
+6926.7 -37.854
+6579.6 -33.895
+6270.5 -30.122
+5995.4 -26.815
+5748.3 -24.163
+5522.2 -22.233
+5310.4 -20.964
+5107.2 -20.208
+4909.2 -19.771
+4714.6 -19.473
+4522.8 -19.187
+4334.2 -18.859
+4149.1 -18.502
+3967.5 -18.168
+3788.7 -17.918
+3611.5 -17.787
+3434.8 -17.776
+3257.6 -17.843
+3079.6 -17.927
+2901.2 -17.963
+2723.2 -17.903
+2546.6 -17.724
+2372.8 -17.43
+2202.6 -17.041
+2036.8 -16.577
+1876 -16.057
+1720.8 -15.487
+1571.6 -14.869
+1428.9 -14.203
+1293.2 -13.489
+1164.8 -12.736
+1044.1 -11.955
+931.29 -11.159
+826.42 -10.358
+729.47 -9.5596
+640.39 -8.7683
+559.09 -7.9883
+485.41 -7.2249
+419.13 -6.4853
+359.96 -5.7775
+307.52 -5.1094
+261.38 -4.4871
+221.05 -3.9144
+186.03 -3.3929
+155.81 -2.9225
+129.89 -2.502
+107.79 -2.1291
+89.068 -1.8011
+73.295 -1.5144
+60.095 -1.2649
+49.128 -1.0487
+40.091 -0.86176
+32.717 -0.70117
+26.762 -0.56449
+22.001 -0.4498
+18.231 -0.35531
+15.265 -0.27904
+12.938 -0.21865
+11.113 -0.17153
+9.6775 -0.13502
+8.5438 -0.10667
+7.6462 -0.084479
+6.9347 -0.066954
+6.3707 -0.053076
+5.9232 -0.04215
+5.5666 -0.033649
+5.2804 -0.027096
+5.0489 -0.02201
+4.8611 -0.017914
+4.7102 -0.014388
+4.5932 -0.011117
+4.5088 -0.007931
+4.4565 -0.004807
+4.435 -0.00185
+4.4411 0.000759
+4.4697 0.002814
+4.5139 0.004169
+4.5665 0.004863
+4.6242 0.005458
+4.6999 0.008206
+4.8687 0.021691
+5.4535 0.080777
+7.8382 0.33888
+18.356 1.5417
+68.996 8.024
+342.7 61.396
+1462.1 1401.3
+-138410 271960
+127860 3.002e+06
+562990 9.2233e+06
+1.6193e+06 1.7193e+07
+2.8413e+06 2.3478e+07
+2.9863e+06 2.4074e+07
+1.4267e+06 1.715e+07
+-464720 8.138e+06
+220690 7.0616e+06
+1.9876e+06 1.2226e+07
+329540 9.9183e+06
+632840 7.0098e+06
+1.5324e+06 1.0297e+07
+883310 7.054e+06
+1.4117e+06 9.069e+06
+1.0481e+06 7.2716e+06
+951140 8.202e+06
+1.7325e+06 6.8821e+06
+352560 6.1467e+06
+288870 7.5312e+06
+1.477e+06 6.5702e+06
+718700 5.233e+06
+-216810 6.212e+06
+577030 6.5775e+06
+1.0154e+06 5.2892e+06
+205420 4.9762e+06
+-178320 5.7319e+06
+332730 5.7268e+06
+596940 4.9436e+06
+149820 4.6799e+06
+-242430 5.1156e+06
+-4534.6 5.3031e+06
+346140 4.8129e+06
+131240 4.4257e+06
+-280840 4.7036e+06
+-242420 4.9813e+06
+28319 4.7135e+06
+13216 4.3677e+06
+-243750 4.4238e+06
+-379150 4.6679e+06
+-272870 4.6916e+06
+-145400 4.4599e+06
+-232080 4.3051e+06
+-435890 4.4585e+06
+-482410 4.6679e+06
+-372430 4.589e+06
+-346370 4.3757e+06
+-473380 4.3985e+06
+-599030 4.6156e+06
+-612890 4.7088e+06
+-565880 4.6022e+06
+-575440 4.5078e+06
+-679690 4.6049e+06
+-790790 4.8167e+06
+-818290 4.8961e+06
+-788140 4.7787e+06
+-799700 4.7317e+06
+-905200 4.9419e+06
+-1.0362e+06 5.1784e+06
+-1.0708e+06 5.1692e+06
+-1.0164e+06 5.0533e+06
+-1.0306e+06 5.1391e+06
+-1.1916e+06 5.4298e+06
+-1.3613e+06 5.6341e+06
+-1.3585e+06 5.5669e+06
+-1.2526e+06 5.465e+06
+-1.3517e+06 5.7261e+06
+-1.6961e+06 6.1844e+06
+-1.8446e+06 6.2399e+06
+-1.641e+06 5.9867e+06
+-1.6372e+06 6.1894e+06
+-2.0847e+06 6.8157e+06
+-2.3584e+06 6.9988e+06
+-2.0735e+06 6.6463e+06
+-1.9276e+06 6.7479e+06
+-2.5816e+06 7.6515e+06
+-3.1087e+06 8.0226e+06
+-2.5606e+06 7.3786e+06
+-2.3903e+06 7.678e+06
+-3.6085e+06 9.1525e+06
+-3.8126e+06 8.9453e+06
+-2.7696e+06 8.1474e+06
+-3.6555e+06 9.9223e+06
+-5.0961e+06 1.1121e+07
+-4.2744e+06 9.9333e+06
+-3.8909e+06 1.059e+07
+-5.115e+06 1.2676e+07
+-6.5109e+06 1.4151e+07
+-4.9235e+06 1.2116e+07
+-4.5189e+06 1.5101e+07
+-5.707e+06 1.4707e+07
+-3.1382e+06 1.6242e+07
+-2.4742e+06 1.1475e+07
+-6.5969e+06 2.5322e+07
+-1.5389e+06 1.8146e+07
+-48233 9.7175e+06
+-5.6583e+06 2.8423e+07
+-1.0116e+07 5.6598e+07
+-9.3069e+06 6.8114e+07
+-5.4528e+06 5.8186e+07
+-2.1654e+06 3.7366e+07
+-703790 1.6932e+07
+-9341.6 3.4392e+06
+-1422.6 10802
+-1134.6 104.54
+-1055.2 5.6822
+-1043 0.70873
+-1040.9 0.12186
+-1040 0.075809
+-1039 0.094894
+-1037.9 0.10834
+-1036.7 0.10679
+-1035.7 0.086673
+-1035 0.041715
+-1035.1 -0.036579
+-1036.2 -0.15633
+-1038.8 -0.32211
+-1043.4 -0.53168
+-1050.3 -0.7731
+-1059.7 -1.0229
+-1071.5 -1.2458
+-1085 -1.3976
+-1099.1 -1.4312
+-1112.5 -1.3069
+-1123.5 -1.005
+-1130.3 -0.5382
+-1131.7 0.043955
+-1127.2 0.66344
+-1116.9 1.239
+-1101.9 1.7227
+-1082.8 2.1315
+-1059.9 2.5483
+-1032.4 3.0698
+-999.22 3.6958
+-960.88 4.1924
+-922.64 3.9944
+-897.59 2.2329
+-908.2 -2.0575
+-984.66 -9.5736
+-1159.3 -20.352
+-1458.7 -33.568
+-1895.8 -47.717
+-2468.2 -61.244
+-3163.7 -73.406
+-3973.6 -84.952
+-4907.8 -98.146
+-6004.3 -115.92
+-7325 -140.46
+-8939.3 -171.94
+-10902 -208.39
+-13241 -246.93
+-15962 -285.87
+-19079 -326.36
+-22631 -371.99
+-26698 -426.22
+-31368 -488.96
+-36690 -555.18
+-42648 -617.7
+-49180 -673.89
+-56279 -732.62
+-64122 -815.84
+-73147 -950.8
+-83997 -1154.6
+-97303 -1418.6
+-113380 -1703.3
+-132030 -1951.2
+-152510 -2114.1
+-173910 -2183.1
+-195590 -2201.1
+-217640 -2248.5
+-240910 -2403.1
+-266730 -2695.5
+-296170 -3085
+-329500 -3474
+-365920 -3758.5
+-404000 -3888
+-442450 -3900.4
+-480930 -3908
+-520340 -4037.6
+-562380 -4353.7
+-608600 -4809.4
+-659320 -5256.4
+-713100 -5512.7
+-767150 -5457.6
+-818430 -5103.5
+-865080 -4602.7
+-907330 -4184
+-947460 -4044.5
+-988760 -4251
+-1.0339e+06 -4698.5
+-1.0836e+06 -5147.1
+-1.1357e+06 -5322.4
+-1.1862e+06 -5034
+-1.2303e+06 -4259.3
+-1.2643e+06 -3158.7
+-1.2871e+06 -2015.8
+-1.3005e+06 -1131.6
+-1.3087e+06 -714.12
+-1.3165e+06 -807.57
+-1.3281e+06 -1282.8
+-1.3453e+06 -1888.5
+-1.3674e+06 -2339.5
+-1.391e+06 -2408.3
+-1.4118e+06 -1990.6
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+-59122 415500
+47733 2.9922e+06
+662160 8.718e+06
+1.5329e+06 1.6168e+07
+2.5021e+06 2.2666e+07
+2.9228e+06 2.4179e+07
+1.7877e+06 1.8442e+07
+-141400 9.5186e+06
+-231540 6.3623e+06
+1.5959e+06 1.0878e+07
+1.0293e+06 1.1321e+07
+-82573 6.8058e+06
+1.6435e+06 9.3792e+06
+309980 8.0101e+06
+1.687e+06 8.2717e+06
+835300 7.7463e+06
+1.534e+06 7.6384e+06
+440260 6.8333e+06
+850080 7.8821e+06
+1.5587e+06 6.3061e+06
+235270 5.7561e+06
+135490 7.0512e+06
+1.2209e+06 6.2764e+06
+689200 5.0394e+06
+-222670 5.7976e+06
+303200 6.2464e+06
+825150 5.2601e+06
+296350 4.8089e+06
+-216160 5.3487e+06
+65883 5.5606e+06
+451230 4.9729e+06
+211230 4.5444e+06
+-254870 4.8533e+06
+-185890 5.1884e+06
+182040 4.8445e+06
+110850 4.3944e+06
+-269680 4.5387e+06
+-355860 4.8524e+06
+-150720 4.748e+06
+-69494 4.4294e+06
+-242860 4.3547e+06
+-438140 4.5669e+06
+-421940 4.7184e+06
+-280300 4.5609e+06
+-292000 4.3376e+06
+-478570 4.4252e+06
+-585490 4.679e+06
+-524780 4.6915e+06
+-473240 4.5002e+06
+-547920 4.4567e+06
+-675430 4.6347e+06
+-744070 4.8028e+06
+-730900 4.7838e+06
+-709390 4.6562e+06
+-767250 4.676e+06
+-894360 4.9171e+06
+-981430 5.0906e+06
+-965000 4.9955e+06
+-932220 4.8951e+06
+-1.009e+06 5.0746e+06
+-1.1712e+06 5.3622e+06
+-1.2645e+06 5.4391e+06
+-1.2166e+06 5.322e+06
+-1.1707e+06 5.3259e+06
+-1.3307e+06 5.6418e+06
+-1.608e+06 5.9832e+06
+-1.6467e+06 5.929e+06
+-1.4673e+06 5.7406e+06
+-1.5793e+06 6.0599e+06
+-2.0185e+06 6.6264e+06
+-2.1426e+06 6.6389e+06
+-1.836e+06 6.3185e+06
+-1.8293e+06 6.5763e+06
+-2.42e+06 7.3471e+06
+-2.747e+06 7.5121e+06
+-2.3004e+06 7.0362e+06
+-2.2638e+06 7.4173e+06
+-3.2276e+06 8.5584e+06
+-3.3829e+06 8.3811e+06
+-2.5429e+06 7.7799e+06
+-3.3112e+06 9.2377e+06
+-4.5188e+06 1.0166e+07
+-3.5268e+06 8.9288e+06
+-3.3945e+06 9.8345e+06
+-5.0601e+06 1.1941e+07
+-5.3271e+06 1.1801e+07
+-4.6358e+06 1.1487e+07
+-4.35e+06 1.275e+07
+-6.6369e+06 1.5621e+07
+-2.4736e+06 1.0855e+07
+-5.9854e+06 1.7916e+07
+-1.1253e+06 1.1538e+07
+-4.1882e+06 1.5487e+07
+-5.3767e+06 2.4857e+07
+-433850 1.3987e+07
+-1.0239e+06 1.1536e+07
+-6.5632e+06 3.3192e+07
+-9.6279e+06 5.8222e+07
+-8.2916e+06 6.6275e+07
+-5.2003e+06 5.5695e+07
+-2.3285e+06 3.5467e+07
+-376800 1.5532e+07
+226250 2.8954e+06
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+}
Index: /tags/1.6.0/examples/flow/demo2/demo2.tcl
===================================================================
--- /tags/1.6.0/examples/flow/demo2/demo2.tcl	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo2/demo2.tcl	(revision 6168)
@@ -0,0 +1,64 @@
+
+# Example of using unirect2d mesh with a vector field.
+# This is included only for testing purposes, since unirect2d meshes are
+# deprecated.
+if 0 {
+    # extents=2 is deprecated, since VTK needs 3D vectors, even for 2D meshes
+    # Enabling this block should cause an error
+    source data-unirect2d.tcl
+    set extents 2
+} else {
+    source data-2dflow.tcl
+    set extents 3
+}
+
+package require Rappture
+
+set driver [Rappture::library [lindex $argv 0]]
+
+set elements [subst {
+    output.field.about.label "Flow 2d half"
+    output.field.component.flow.axis z
+    output.field.component.flow.position 0%
+    output.field.component.flow.volume yes
+    output.field.component.flow.streams no
+    output.field.component.flow.outline no
+    output.field.component.flow.particles(left).axis x 
+    output.field.component.flow.particles(left).color yellow
+    output.field.component.flow.particles(left).position 10%
+    output.field.component.flow.particles(right).axis x 
+    output.field.component.flow.particles(right).color pink
+    output.field.component.flow.particles(right).position 90%
+    output.field.component.flow.box(one).label "Region 1"
+    output.field.component.flow.box(one).color magenta
+    output.field.component.flow.box(one).corner(1) "50 -10 0"
+    output.field.component.flow.box(one).corner(2) "70 20 0"
+    
+    output.field.component.style  "-nonuniformcolors {0.0 steelblue4 0.000001 blue 0.01 green  0.1 grey 1.0 white} -markers {1% 2% 3% 5% 8% 10% 20% 50% 80%} -opacity 1"
+    output.field.camera.position {
+	-qw 1 -qx 0 -qy 0 -qz 0 -xpan 0 -ypan 0 -zoom 1.0
+    }
+    output.field.component.extents $extents
+    output.field.component.mesh unirect2d
+    unirect2d.xaxis.min	-0.5
+    unirect2d.xaxis.max	152
+    unirect2d.xaxis.numpoints  305
+    unirect2d.yaxis.min	-22
+    unirect2d.yaxis.max	21.6
+    unirect2d.yaxis.numpoints  109
+    unirect2d.components 2
+}]
+
+puts stdout "Setting attributes for demo1"
+flush stdout
+
+foreach {key value} $elements {
+    $driver put $key $value
+}
+$driver put output.field.component.values $values
+
+Rappture::result $driver
+
+puts stdout "done"
+flush stdout
+exit 0
Index: /tags/1.6.0/examples/flow/demo2/tool.xml
===================================================================
--- /tags/1.6.0/examples/flow/demo2/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo2/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/demo2.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/flow/demo3/Makefile.in
===================================================================
--- /tags/1.6.0/examples/flow/demo3/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo3/Makefile.in	(revision 6168)
@@ -0,0 +1,36 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/demo3.tcl \
+		$(srcdir)/data-dx.tcl \
+		$(srcdir)/data-values.tcl \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/flow/demo3
+
+all: 
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: 
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/flow/demo3/data-dx.tcl
===================================================================
--- /tags/1.6.0/examples/flow/demo3/data-dx.tcl	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo3/data-dx.tcl	(revision 6168)
@@ -0,0 +1,69589 @@
+set dx {
+object 1 class gridpositions counts 121 25 23
+origin 0.000000 -1.500000 -1.000000
+delta 0.247933884 0 0
+delta 0 0.18 0
+delta 0 0 0.195652174
+object 2 class gridconnections counts 121 25 23
+object 3 class array type double rank 1 shape 3 items 69575 data follows
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.6430422e-03 4.7354696e-07 -8.2758465e-06
+4.7340258e-02 2.2199051e-05 -1.0900727e-04
+3.3923199e-01 3.9406090e-04 -1.0712358e-03
+1.8427061e+00 4.5980396e-03 -8.9072575e-03
+6.8299560e+00 3.4996162e-02 -5.7085964e-02
+1.5007930e+01 1.0745407e-01 -1.9710668e-01
+2.4043718e+01 1.9578552e-01 -4.4693138e-01
+3.1652687e+01 2.4937482e-01 -7.6219855e-01
+3.6779615e+01 2.3125154e-01 -1.0536702e+00
+3.9533480e+01 1.3776783e-01 -1.2282228e+00
+4.0443222e+01 -2.4935726e-03 -1.2281488e+00
+3.9766921e+01 -1.4237184e-01 -1.0536832e+00
+3.7218711e+01 -2.3504362e-01 -7.6263652e-01
+3.2210531e+01 -2.5249186e-01 -4.4767281e-01
+2.4569682e+01 -1.9841596e-01 -1.9768530e-01
+1.5359981e+01 -1.0939219e-01 -5.7333483e-02
+6.9794340e+00 -3.6056780e-02 -9.0267548e-03
+1.8782690e+00 -5.0838259e-03 -1.1116452e-03
+3.4501360e-01 -5.3759880e-04 -1.1774248e-04
+4.8063428e-02 -5.1119068e-05 -9.3762553e-06
+4.7081574e-03 -4.1736352e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.6408332e-02 -4.9265993e-06 -6.5982655e-05
+5.3689468e-01 1.2882237e-04 -9.7713408e-04
+4.5333475e+00 3.9152443e-03 -1.1276636e-02
+2.9560143e+01 6.2674047e-02 -1.1563118e-01
+1.2942219e+02 6.6818544e-01 -9.7585014e-01
+2.9141791e+02 2.1517907e+00 -3.6206209e+00
+4.6722182e+02 3.9319764e+00 -8.3734851e+00
+6.1315223e+02 4.9878033e+00 -1.4359380e+01
+7.1026889e+02 4.6147526e+00 -1.9886569e+01
+7.6192715e+02 2.7600887e+00 -2.3211007e+01
+7.7894698e+02 -1.5613868e-02 -2.3249457e+01
+7.6646779e+02 -2.7976377e+00 -1.9989076e+01
+7.1884882e+02 -4.6703473e+00 -1.4489917e+01
+6.2410467e+02 -5.0654335e+00 -8.4857617e+00
+4.7755196e+02 -4.0172825e+00 -3.6844807e+00
+2.9822068e+02 -2.2165559e+00 -9.9715286e-01
+1.3211023e+02 -6.9826983e-01 -1.2066024e-01
+3.0075446e+01 -7.3079620e-02 -1.2333764e-02
+4.6011795e+00 -6.4069657e-03 -1.1484266e-03
+5.4399145e-01 -5.5222185e-04 -8.3950165e-05
+4.6967519e-02 -4.2902196e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.2398870e-01 -1.3274547e-04 -3.2176050e-04
+4.4146876e+00 -4.1150429e-04 -5.6253289e-03
+4.6332486e+01 1.9408182e-02 -8.0961391e-02
+3.9074935e+02 5.6584475e-01 -1.1069361e+00
+2.2341048e+03 1.0980101e+01 -1.4871289e+01
+5.1198255e+03 3.7144769e+01 -5.9807614e+01
+8.1887672e+03 6.7828464e+01 -1.4089078e+02
+1.0701244e+04 8.5555972e+01 -2.4266723e+02
+1.2353221e+04 7.8963676e+01 -3.3652115e+02
+1.3223747e+04 4.7467737e+01 -3.9327316e+02
+1.3509935e+04 4.3577099e-01 -3.9472230e+02
+1.3303125e+04 -4.6991037e+01 -3.4030947e+02
+1.2504051e+04 -7.9505730e+01 -2.4733809e+02
+1.0895004e+04 -8.7227204e+01 -1.4476404e+02
+8.3719671e+03 -7.0014687e+01 -6.1920799e+01
+5.2386523e+03 -3.8834956e+01 -1.5511375e+01
+2.2770406e+03 -1.1674304e+01 -1.2197879e+00
+3.9652619e+02 -7.4814608e-01 -9.9743766e-02
+4.6897335e+01 -5.3840593e-02 -8.0666579e-03
+4.4614901e+00 -4.3082195e-03 -5.3632333e-04
+3.2710340e-01 -3.1919276e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7059140e+00 -1.4666788e-03 -8.2487320e-04
+2.7847175e+01 -1.5603954e-02 -1.8234513e-02
+3.7708220e+02 -5.3112162e-02 -3.5812865e-01
+4.4522529e+03 2.4630271e+00 -7.0838278e+00
+3.9418487e+04 1.7986319e+02 -2.2785973e+02
+8.9942023e+04 6.3360872e+02 -9.8890344e+02
+1.4299152e+05 1.1507741e+03 -2.3612421e+03
+1.8600256e+05 1.4427480e+03 -4.0770686e+03
+2.1401271e+05 1.3292667e+03 -5.6581619e+03
+2.2866915e+05 8.0394793e+02 -6.6201753e+03
+2.3348271e+05 2.0240543e+01 -6.6590873e+03
+2.3004720e+05 -7.7529046e+02 -5.7593938e+03
+2.1664707e+05 -1.3307299e+03 -4.2008406e+03
+1.8941182e+05 -1.4773024e+03 -2.4627449e+03
+1.4623063e+05 -1.2015948e+03 -1.0431690e+03
+9.2021254e+04 -6.7361929e+02 -2.4297108e+02
+4.0097693e+04 -1.9476256e+02 -9.1608913e+00
+4.5012530e+03 -5.5062493e+00 -6.4467906e-01
+3.8038779e+02 -3.8660805e-01 -4.6780983e-02
+2.8060708e+01 -3.0102267e-02 -2.8418826e-03
+1.7179408e+00 -2.0743759e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.0983555e+00 -9.9418270e-03 1.1379306e-03
+1.1697680e+02 -1.6783639e-01 2.7063044e-02
+2.0486651e+03 -2.5220565e+00 5.6037148e-01
+3.6718241e+04 -3.8259827e+01 1.1602177e+01
+5.5791002e+05 -2.4506985e+01 -1.2782363e+03
+1.4205532e+06 2.9056062e+02 -5.6384789e+03
+2.3438937e+06 6.8231807e+02 -1.3332108e+04
+3.0362579e+06 8.7079302e+02 -2.2860173e+04
+3.4211138e+06 6.5480285e+02 -3.1616678e+04
+3.5818634e+06 1.7697581e+01 -3.6974916e+04
+3.6315892e+06 -8.6697347e+02 -3.7275600e+04
+3.6182684e+06 -1.7103009e+03 -3.2401049e+04
+3.4911507e+06 -2.2228747e+03 -2.3827243e+04
+3.1276001e+06 -2.2313753e+03 -1.4143466e+04
+2.4312084e+06 -1.7600866e+03 -6.1025734e+03
+1.4763372e+06 -1.0372316e+03 -1.4478895e+03
+5.7425512e+05 -3.9649280e+02 -5.7845707e+01
+3.6887893e+04 -4.5353284e+01 -3.6556936e+00
+2.0583444e+03 -2.9265257e+00 -2.2752553e-01
+1.1753231e+02 -1.8968838e-01 -1.2089915e-02
+6.1271645e+00 -1.0997009e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.2936584e+01 -3.0694791e-02 4.8152727e-03
+2.5304587e+02 -5.6207941e-01 1.1247690e-01
+4.4798351e+03 -9.2576356e+00 2.2295515e+00
+7.9241497e+04 -1.5276054e+02 4.2354598e+01
+1.2485207e+06 -6.4387707e+02 -2.5679380e+03
+2.9851668e+06 -7.9460481e+02 -1.0846978e+04
+4.8330760e+06 -8.7111116e+02 -2.5159253e+04
+6.2430975e+06 -1.0954393e+03 -4.2692894e+04
+7.0636865e+06 -1.6576813e+03 -5.8708664e+04
+7.4346167e+06 -2.5669603e+03 -6.8487481e+04
+7.5514837e+06 -3.6165618e+03 -6.9062287e+04
+7.4976986e+06 -4.4652052e+03 -6.0213037e+04
+7.1854961e+06 -4.7833907e+03 -4.4562620e+04
+6.4026198e+06 -4.4048743e+03 -2.6755680e+04
+4.9859528e+06 -3.4210895e+03 -1.1800640e+04
+3.0825328e+06 -2.1592258e+03 -2.9659779e+03
+1.2761311e+06 -1.0296814e+03 -1.5885415e+02
+7.9505938e+04 -1.6447287e+02 -9.5106758e+00
+4.4953240e+03 -9.9205170e+00 -5.6319836e-01
+2.5394183e+02 -5.9882690e-01 -2.8679137e-02
+1.2982970e+01 -3.2514274e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0235211e+01 -5.7193571e-02 2.1583054e-03
+3.9548872e+02 -1.0686447e+00 6.7856290e-02
+6.9731388e+03 -1.7921508e+01 1.5848143e+00
+1.2243815e+05 -2.9923552e+02 3.2691243e+01
+1.9632999e+06 -1.4369954e+03 -4.0560072e+03
+4.6063903e+06 -2.2072450e+03 -1.6591126e+04
+7.3992731e+06 -2.9166663e+03 -3.7980821e+04
+9.5244335e+06 -3.6931839e+03 -6.3969334e+04
+1.0763846e+07 -4.6833725e+03 -8.7578723e+04
+1.1328179e+07 -5.8771122e+03 -1.0195378e+05
+1.1505827e+07 -7.0459182e+03 -1.0281210e+05
+1.1419121e+07 -7.8215291e+03 -8.9826711e+04
+1.0939952e+07 -7.8594640e+03 -6.6766270e+04
+9.7559183e+06 -7.0129767e+03 -4.0369072e+04
+7.6218799e+06 -5.4366332e+03 -1.8008807e+04
+4.7483418e+06 -3.5448730e+03 -4.6257192e+03
+2.0031684e+06 -1.8259705e+03 -2.2701714e+02
+1.2280019e+05 -3.1663635e+02 -1.3719974e+01
+6.9944107e+03 -1.8889629e+01 -8.1586047e-01
+3.9672275e+02 -1.1218259e+00 -4.1566300e-02
+2.0299189e+01 -5.9810736e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.6304205e+01 -7.2221067e-02 -1.3841031e-02
+5.1257917e+02 -1.3550674e+00 -2.4682940e-01
+9.0032622e+03 -2.2777065e+01 -3.7383360e+00
+1.5746801e+05 -3.8018783e+02 -5.6158168e+01
+2.4986049e+06 -1.8889129e+03 -5.4845610e+03
+5.8725257e+06 -3.0495564e+03 -2.1868727e+04
+9.4123446e+06 -4.1641917e+03 -4.9605918e+04
+1.2071800e+07 -5.2726517e+03 -8.3101215e+04
+1.3593607e+07 -6.4674813e+03 -1.1338955e+05
+1.4269425e+07 -7.7249159e+03 -1.3177528e+05
+1.4480277e+07 -8.8322450e+03 -1.3286337e+05
+1.4386110e+07 -9.4524078e+03 -1.1623560e+05
+1.3820007e+07 -9.2755195e+03 -8.6627031e+04
+1.2370282e+07 -8.1847136e+03 -5.2577501e+04
+9.7004191e+06 -6.3546797e+03 -2.3557410e+04
+6.0569243e+06 -4.2077624e+03 -6.0501856e+03
+2.5506799e+06 -2.2345655e+03 -2.0493030e+02
+1.5794977e+05 -3.9943753e+02 -1.2672977e+01
+9.0314354e+03 -2.3842324e+01 -7.6980429e-01
+5.1420822e+02 -1.4132856e+00 -3.9899024e-02
+2.6388463e+01 -7.5071648e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.0418636e+01 -6.1222516e-02 -3.9987878e-02
+5.9135697e+02 -1.1486166e+00 -7.6147530e-01
+1.0360540e+04 -1.9284587e+01 -1.2409600e+01
+1.8080572e+05 -3.2118658e+02 -1.9972836e+02
+2.8058907e+06 -1.6141243e+03 -6.6476428e+03
+6.6641030e+06 -2.6516484e+03 -2.5988889e+04
+1.0687715e+07 -3.6586788e+03 -5.8578986e+04
+1.3665337e+07 -4.6281516e+03 -9.7764057e+04
+1.5325595e+07 -5.6069420e+03 -1.3306848e+05
+1.6035581e+07 -6.5723852e+03 -1.5443775e+05
+1.6254433e+07 -7.3735018e+03 -1.5567194e+05
+1.6172953e+07 -7.7726258e+03 -1.3628888e+05
+1.5592465e+07 -7.5527101e+03 -1.0172518e+05
+1.4017946e+07 -6.6371554e+03 -6.1851176e+04
+1.1029086e+07 -5.1621104e+03 -2.7728111e+04
+6.8835561e+06 -3.4448472e+03 -7.0510725e+03
+2.8685473e+06 -1.8546797e+03 -1.0828446e+02
+1.8141491e+05 -3.3613184e+02 -7.0777411e+00
+1.0396070e+04 -2.0110727e+01 -4.5286486e-01
+5.9340715e+02 -1.1936836e+00 -2.4504100e-02
+3.0524510e+01 -6.3423651e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2653532e+01 -2.4034464e-02 -6.4253181e-02
+6.3396057e+02 -4.5063992e-01 -1.2367191e+00
+1.1092267e+04 -7.5576380e+00 -2.0362395e+01
+1.9337810e+05 -1.2568743e+02 -3.3041939e+02
+2.9419980e+06 -6.3400539e+02 -7.4019902e+03
+7.0612577e+06 -1.0478976e+03 -2.8572547e+04
+1.1340059e+07 -1.4507854e+03 -6.4155750e+04
+1.4469838e+07 -1.8339583e+03 -1.0682646e+05
+1.6178068e+07 -2.2112180e+03 -1.4518020e+05
+1.6884640e+07 -2.5734969e+03 -1.6834672e+05
+1.7100158e+07 -2.8662716e+03 -1.6965173e+05
+1.7035361e+07 -3.0038446e+03 -1.4857765e+05
+1.6471073e+07 -2.9080444e+03 -1.1097771e+05
+1.4857497e+07 -2.5520097e+03 -6.7522117e+04
+1.1716141e+07 -1.9868654e+03 -3.0248320e+04
+7.3037942e+06 -1.3304060e+03 -7.6134810e+03
+3.0118822e+06 -7.2028469e+02 -4.2508625e+00
+1.9408658e+05 -1.3129142e+02 -9.0418537e-01
+1.1133568e+04 -7.8673954e+00 -9.4009845e-02
+6.3634331e+02 -4.6752802e-01 -6.6623414e-03
+3.2776570e+01 -2.4858460e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3344627e+01 2.4034467e-02 -7.4076034e-02
+6.4711339e+02 4.5064008e-01 -1.4285037e+00
+1.1318027e+04 7.5576368e+00 -2.3559309e+01
+1.9726126e+05 1.2568742e+02 -3.8274322e+02
+2.9777856e+06 6.3400514e+02 -7.6628645e+03
+7.1779422e+06 1.0478976e+03 -2.9449421e+04
+1.1534741e+07 1.4507876e+03 -6.6038965e+04
+1.4707768e+07 1.8339585e+03 -1.0987717e+05
+1.6425450e+07 2.2112162e+03 -1.4924768e+05
+1.7126528e+07 2.5735063e+03 -1.7301007e+05
+1.7339465e+07 2.8662807e+03 -1.7433473e+05
+1.7281854e+07 3.0038431e+03 -1.5269301e+05
+1.6727475e+07 2.9080434e+03 -1.1407550e+05
+1.5107542e+07 2.5520135e+03 -6.9417634e+04
+1.1922856e+07 1.9868646e+03 -3.1084182e+04
+7.4285283e+06 1.3304049e+03 -7.7911828e+03
+3.0502384e+06 7.2028481e+02 3.9536567e+01
+1.9800726e+05 1.3129140e+02 1.7173745e+00
+1.1361520e+04 7.8673946e+00 5.9779989e-02
+6.4962295e+02 4.6752787e-01 1.0467542e-03
+3.3474234e+01 2.4858468e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2653532e+01 6.1222503e-02 -6.4253160e-02
+6.3396057e+02 1.1486164e+00 -1.2367200e+00
+1.1092267e+04 1.9284587e+01 -2.0362392e+01
+1.9337810e+05 3.2118661e+02 -3.3041941e+02
+2.9419980e+06 1.6141246e+03 -7.4019900e+03
+7.0612577e+06 2.6516485e+03 -2.8572545e+04
+1.1340059e+07 3.6586777e+03 -6.4155750e+04
+1.4469838e+07 4.6281534e+03 -1.0682647e+05
+1.6178068e+07 5.6069441e+03 -1.4518020e+05
+1.6884640e+07 6.5723769e+03 -1.6834671e+05
+1.7100158e+07 7.3734893e+03 -1.6965173e+05
+1.7035361e+07 7.7726301e+03 -1.4857764e+05
+1.6471073e+07 7.5527129e+03 -1.1097771e+05
+1.4857497e+07 6.6371536e+03 -6.7522119e+04
+1.1716141e+07 5.1621132e+03 -3.0248319e+04
+7.3037942e+06 3.4448474e+03 -7.6134816e+03
+3.0118822e+06 1.8546795e+03 -4.2508920e+00
+1.9408658e+05 3.3613184e+02 -9.0418511e-01
+1.1133568e+04 2.0110727e+01 -9.4010274e-02
+6.3634331e+02 1.1936837e+00 -6.6622779e-03
+3.2776570e+01 6.3423642e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.0418636e+01 7.2221077e-02 -3.9987839e-02
+5.9135697e+02 1.3550674e+00 -7.6147568e-01
+1.0360540e+04 2.2777065e+01 -1.2409590e+01
+1.8080572e+05 3.8018778e+02 -1.9972832e+02
+2.8058907e+06 1.8889122e+03 -6.6476452e+03
+6.6641030e+06 3.0495566e+03 -2.5988887e+04
+1.0687715e+07 4.1641904e+03 -5.8578986e+04
+1.3665337e+07 5.2726518e+03 -9.7764058e+04
+1.5325595e+07 6.4674822e+03 -1.3306848e+05
+1.6035581e+07 7.7249084e+03 -1.5443775e+05
+1.6254433e+07 8.8322465e+03 -1.5567194e+05
+1.6172953e+07 9.4524091e+03 -1.3628888e+05
+1.5592465e+07 9.2755193e+03 -1.0172518e+05
+1.4017946e+07 8.1847109e+03 -6.1851177e+04
+1.1029086e+07 6.3546803e+03 -2.7728112e+04
+6.8835561e+06 4.2077649e+03 -7.0510716e+03
+2.8685473e+06 2.2345653e+03 -1.0828443e+02
+1.8141491e+05 3.9943747e+02 -7.0777400e+00
+1.0396070e+04 2.3842322e+01 -4.5286499e-01
+5.9340715e+02 1.4132856e+00 -2.4504089e-02
+3.0524510e+01 7.5071649e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.6304205e+01 5.7193565e-02 -1.3841046e-02
+5.1257917e+02 1.0686445e+00 -2.4682958e-01
+9.0032622e+03 1.7921507e+01 -3.7383377e+00
+1.5746801e+05 2.9923551e+02 -5.6158231e+01
+2.4986049e+06 1.4369950e+03 -5.4845604e+03
+5.8725257e+06 2.2072442e+03 -2.1868728e+04
+9.4123446e+06 2.9166666e+03 -4.9605919e+04
+1.2071800e+07 3.6931829e+03 -8.3101213e+04
+1.3593607e+07 4.6833674e+03 -1.1338956e+05
+1.4269425e+07 5.8771119e+03 -1.3177528e+05
+1.4480277e+07 7.0459182e+03 -1.3286337e+05
+1.4386110e+07 7.8215255e+03 -1.1623559e+05
+1.3820007e+07 7.8594638e+03 -8.6627033e+04
+1.2370282e+07 7.0129802e+03 -5.2577498e+04
+9.7004191e+06 5.4366294e+03 -2.3557408e+04
+6.0569243e+06 3.5448710e+03 -6.0501884e+03
+2.5506799e+06 1.8259710e+03 -2.0493056e+02
+1.5794977e+05 3.1663639e+02 -1.2672971e+01
+9.0314354e+03 1.8889630e+01 -7.6980395e-01
+5.1420822e+02 1.1218257e+00 -3.9899018e-02
+2.6388463e+01 5.9810735e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0235211e+01 3.0694792e-02 2.1582811e-03
+3.9548872e+02 5.6207950e-01 6.7856473e-02
+6.9731388e+03 9.2576368e+00 1.5848173e+00
+1.2243815e+05 1.5276053e+02 3.2691148e+01
+1.9632999e+06 6.4387744e+02 -4.0560067e+03
+4.6063903e+06 7.9460439e+02 -1.6591125e+04
+7.3992731e+06 8.7111051e+02 -3.7980822e+04
+9.5244335e+06 1.0954387e+03 -6.3969332e+04
+1.0763846e+07 1.6576836e+03 -8.7578724e+04
+1.1328179e+07 2.5669621e+03 -1.0195378e+05
+1.1505827e+07 3.6165626e+03 -1.0281210e+05
+1.1419121e+07 4.4652052e+03 -8.9826711e+04
+1.0939952e+07 4.7833884e+03 -6.6766268e+04
+9.7559182e+06 4.4048746e+03 -4.0369074e+04
+7.6218799e+06 3.4210907e+03 -1.8008806e+04
+4.7483418e+06 2.1592257e+03 -4.6257185e+03
+2.0031684e+06 1.0296812e+03 -2.2701729e+02
+1.2280019e+05 1.6447287e+02 -1.3719972e+01
+6.9944107e+03 9.9205158e+00 -8.1586106e-01
+3.9672275e+02 5.9882693e-01 -4.1566279e-02
+2.0299189e+01 3.2514277e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.2936584e+01 9.9418264e-03 4.8152740e-03
+2.5304587e+02 1.6783632e-01 1.1247696e-01
+4.4798351e+03 2.5220557e+00 2.2295479e+00
+7.9241497e+04 3.8259829e+01 4.2354612e+01
+1.2485207e+06 2.4506906e+01 -2.5679380e+03
+2.9851668e+06 -2.9055990e+02 -1.0846979e+04
+4.8330760e+06 -6.8231858e+02 -2.5159251e+04
+6.2430975e+06 -8.7079461e+02 -4.2692894e+04
+7.0636865e+06 -6.5480313e+02 -5.8708663e+04
+7.4346167e+06 -1.7696605e+01 -6.8487481e+04
+7.5514837e+06 8.6697227e+02 -6.9062287e+04
+7.4976986e+06 1.7103017e+03 -6.0213037e+04
+7.1854961e+06 2.2228761e+03 -4.4562618e+04
+6.4026198e+06 2.2313737e+03 -2.6755683e+04
+4.9859528e+06 1.7600859e+03 -1.1800639e+04
+3.0825328e+06 1.0372312e+03 -2.9659780e+03
+1.2761311e+06 3.9649264e+02 -1.5885413e+02
+7.9505938e+04 4.5353273e+01 -9.5106787e+00
+4.4953240e+03 2.9265262e+00 -5.6319839e-01
+2.5394183e+02 1.8968842e-01 -2.8679122e-02
+1.2982970e+01 1.0997008e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.0983555e+00 1.4666782e-03 1.1379227e-03
+1.1697680e+02 1.5603971e-02 2.7063110e-02
+2.0486651e+03 5.3112155e-02 5.6037241e-01
+3.6718241e+04 -2.4630266e+00 1.1602152e+01
+5.5791002e+05 -1.7986318e+02 -1.2782362e+03
+1.4205532e+06 -6.3360873e+02 -5.6384791e+03
+2.3438937e+06 -1.1507739e+03 -1.3332108e+04
+3.0362579e+06 -1.4427478e+03 -2.2860173e+04
+3.4211138e+06 -1.3292667e+03 -3.1616679e+04
+3.5818634e+06 -8.0394811e+02 -3.6974916e+04
+3.6315892e+06 -2.0240617e+01 -3.7275599e+04
+3.6182684e+06 7.7529042e+02 -3.2401050e+04
+3.4911507e+06 1.3307298e+03 -2.3827243e+04
+3.1276001e+06 1.4773025e+03 -1.4143466e+04
+2.4312084e+06 1.2015950e+03 -6.1025735e+03
+1.4763372e+06 6.7361934e+02 -1.4478893e+03
+5.7425512e+05 1.9476255e+02 -5.7845712e+01
+3.6887893e+04 5.5062516e+00 -3.6556919e+00
+2.0583444e+03 3.8660806e-01 -2.2752550e-01
+1.1753231e+02 3.0102263e-02 -1.2089919e-02
+6.1271645e+00 2.0743761e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7059140e+00 1.3274561e-04 -8.2487214e-04
+2.7847175e+01 4.1150443e-04 -1.8234527e-02
+3.7708220e+02 -1.9408182e-02 -3.5812847e-01
+4.4522529e+03 -5.6584486e-01 -7.0838294e+00
+3.9418487e+04 -1.0980101e+01 -2.2785973e+02
+8.9942023e+04 -3.7144769e+01 -9.8890344e+02
+1.4299152e+05 -6.7828468e+01 -2.3612422e+03
+1.8600256e+05 -8.5555976e+01 -4.0770686e+03
+2.1401271e+05 -7.8963682e+01 -5.6581620e+03
+2.2866915e+05 -4.7467727e+01 -6.6201753e+03
+2.3348271e+05 -4.3575677e-01 -6.6590872e+03
+2.3004720e+05 4.6991038e+01 -5.7593939e+03
+2.1664707e+05 7.9505729e+01 -4.2008405e+03
+1.8941182e+05 8.7227191e+01 -2.4627449e+03
+1.4623063e+05 7.0014682e+01 -1.0431690e+03
+9.2021254e+04 3.8834960e+01 -2.4297108e+02
+4.0097693e+04 1.1674304e+01 -9.1608892e+00
+4.5012530e+03 7.4814597e-01 -6.4467908e-01
+3.8038779e+02 5.3840594e-02 -4.6780979e-02
+2.8060708e+01 4.3082191e-03 -2.8418828e-03
+1.7179408e+00 3.1919277e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2398870e-01 4.9266061e-06 -3.2176054e-04
+4.4146876e+00 -1.2882237e-04 -5.6253306e-03
+4.6332486e+01 -3.9152451e-03 -8.0961383e-02
+3.9074935e+02 -6.2674046e-02 -1.1069362e+00
+2.2341048e+03 -6.6818547e-01 -1.4871289e+01
+5.1198255e+03 -2.1517906e+00 -5.9807615e+01
+8.1887672e+03 -3.9319762e+00 -1.4089078e+02
+1.0701244e+04 -4.9878032e+00 -2.4266723e+02
+1.2353221e+04 -4.6147525e+00 -3.3652115e+02
+1.3223747e+04 -2.7600886e+00 -3.9327316e+02
+1.3509935e+04 1.5612892e-02 -3.9472230e+02
+1.3303125e+04 2.7976368e+00 -3.4030947e+02
+1.2504051e+04 4.6703473e+00 -2.4733809e+02
+1.0895004e+04 5.0654342e+00 -1.4476403e+02
+8.3719671e+03 4.0172822e+00 -6.1920799e+01
+5.2386523e+03 2.2165557e+00 -1.5511376e+01
+2.2770406e+03 6.9826985e-01 -1.2197878e+00
+3.9652619e+02 7.3079622e-02 -9.9743755e-02
+4.6897335e+01 6.4069639e-03 -8.0666580e-03
+4.4614901e+00 5.5222170e-04 -5.3632333e-04
+3.2710340e-01 4.2902188e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.6408332e-02 -4.7354856e-07 -6.5982670e-05
+5.3689468e-01 -2.2199075e-05 -9.7713437e-04
+4.5333475e+00 -3.9406070e-04 -1.1276635e-02
+2.9560143e+01 -4.5980380e-03 -1.1563119e-01
+1.2942219e+02 -3.4996156e-02 -9.7585009e-01
+2.9141791e+02 -1.0745408e-01 -3.6206209e+00
+4.6722182e+02 -1.9578553e-01 -8.3734852e+00
+6.1315223e+02 -2.4937479e-01 -1.4359380e+01
+7.1026889e+02 -2.3125154e-01 -1.9886569e+01
+7.6192715e+02 -1.3776785e-01 -2.3211007e+01
+7.7894698e+02 2.4935798e-03 -2.3249457e+01
+7.6646779e+02 1.4237183e-01 -1.9989076e+01
+7.1884882e+02 2.3504361e-01 -1.4489917e+01
+6.2410467e+02 2.5249182e-01 -8.4857618e+00
+4.7755196e+02 1.9841596e-01 -3.6844807e+00
+2.9822068e+02 1.0939219e-01 -9.9715288e-01
+1.3211023e+02 3.6056782e-02 -1.2066023e-01
+3.0075446e+01 5.0838258e-03 -1.2333764e-02
+4.6011795e+00 5.3759889e-04 -1.1484266e-03
+5.4399145e-01 5.1119064e-05 -8.3950160e-05
+4.6967519e-02 4.1736357e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.6430422e-03 0.0000000e+00 -8.2758485e-06
+4.7340258e-02 0.0000000e+00 -1.0900725e-04
+3.3923199e-01 0.0000000e+00 -1.0712356e-03
+1.8427061e+00 0.0000000e+00 -8.9072580e-03
+6.8299560e+00 0.0000000e+00 -5.7085964e-02
+1.5007930e+01 0.0000000e+00 -1.9710669e-01
+2.4043718e+01 0.0000000e+00 -4.4693137e-01
+3.1652687e+01 0.0000000e+00 -7.6219856e-01
+3.6779615e+01 0.0000000e+00 -1.0536702e+00
+3.9533480e+01 0.0000000e+00 -1.2282228e+00
+4.0443222e+01 0.0000000e+00 -1.2281488e+00
+3.9766921e+01 0.0000000e+00 -1.0536832e+00
+3.7218711e+01 0.0000000e+00 -7.6263652e-01
+3.2210531e+01 0.0000000e+00 -4.4767281e-01
+2.4569682e+01 0.0000000e+00 -1.9768530e-01
+1.5359981e+01 0.0000000e+00 -5.7333483e-02
+6.9794340e+00 0.0000000e+00 -9.0267546e-03
+1.8782690e+00 0.0000000e+00 -1.1116452e-03
+3.4501360e-01 0.0000000e+00 -1.1774249e-04
+4.8063428e-02 0.0000000e+00 -9.3762538e-06
+4.7081574e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.6525216e-03 -9.7051124e-09 -9.4697013e-06
+4.7435321e-02 2.1741554e-05 -1.2627503e-04
+3.3991547e-01 4.4271363e-04 -1.2524685e-03
+1.8465657e+00 5.3402523e-03 -1.0452327e-02
+6.8454642e+00 4.0851521e-02 -6.6812023e-02
+1.5045456e+01 1.2305774e-01 -2.2739604e-01
+2.4104113e+01 2.1745368e-01 -5.0524507e-01
+3.1723374e+01 2.6554129e-01 -8.4147359e-01
+3.6840698e+01 2.3176302e-01 -1.1343195e+00
+3.9567079e+01 1.2138710e-01 -1.2893053e+00
+4.0440404e+01 -2.8020015e-02 -1.2584670e+00
+3.9730242e+01 -1.6590747e-01 -1.0558803e+00
+3.7160640e+01 -2.4862314e-01 -7.4918659e-01
+3.2148706e+01 -2.5497029e-01 -4.3239078e-01
+2.4520226e+01 -1.9454649e-01 -1.8838868e-01
+1.5331003e+01 -1.0525565e-01 -5.4154947e-02
+6.9682205e+00 -3.4412937e-02 -8.5284707e-03
+1.8757474e+00 -4.9497066e-03 -1.0571593e-03
+3.4462062e-01 -5.5086953e-04 -1.1330648e-04
+4.8015985e-02 -5.6718341e-05 -9.1454315e-06
+4.7040039e-03 -4.9919802e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.6495553e-02 -1.3783686e-05 -7.3447607e-05
+5.3787461e-01 8.1645400e-05 -1.1132779e-03
+4.5415535e+00 4.2233213e-03 -1.3099908e-02
+2.9615643e+01 7.2574238e-02 -1.3583345e-01
+1.2969083e+02 7.8546697e-01 -1.1490849e+00
+2.9211353e+02 2.4792016e+00 -4.2008499e+00
+4.6836276e+02 4.3863026e+00 -9.5106330e+00
+6.1449360e+02 5.3227051e+00 -1.5909169e+01
+7.1142932e+02 4.6225391e+00 -2.1460373e+01
+7.6256696e+02 2.4206637e+00 -2.4399458e+01
+7.7889646e+02 -5.4048250e-01 -2.3836479e+01
+7.6577348e+02 -3.2800987e+00 -2.0027984e+01
+7.1774492e+02 -4.9479092e+00 -1.4224806e+01
+6.2292638e+02 -5.1140112e+00 -8.1874817e+00
+4.7661096e+02 -3.9341899e+00 -3.5068416e+00
+2.9767860e+02 -2.1291123e+00 -9.4090376e-01
+1.3191476e+02 -6.6536368e-01 -1.1448028e-01
+3.0039906e+01 -7.2017586e-02 -1.1872159e-02
+4.5966912e+00 -6.8062051e-03 -1.1285848e-03
+5.4353803e-01 -6.4768847e-04 -8.4197294e-05
+4.6932740e-02 -5.4410585e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.2454248e-01 -2.3999954e-04 -3.2756970e-04
+4.4218720e+00 -1.3652451e-03 -6.0650910e-03
+4.6405653e+01 1.6708359e-02 -9.1718002e-02
+3.9138203e+02 6.4289532e-01 -1.2947121e+00
+2.2382197e+03 1.3019738e+01 -1.7643869e+01
+5.1314214e+03 4.3106723e+01 -6.9867258e+01
+8.2081495e+03 7.6051203e+01 -1.6091445e+02
+1.0724112e+04 9.1512158e+01 -2.6997178e+02
+1.2373020e+04 7.9017432e+01 -3.6416541e+02
+1.3234696e+04 4.1378533e+01 -4.1407252e+02
+1.3509145e+04 -8.8818561e+00 -4.0494071e+02
+1.3291347e+04 -5.5526538e+01 -3.4091607e+02
+1.2485219e+04 -8.4408098e+01 -2.4262435e+02
+1.0874827e+04 -8.8056350e+01 -1.3950487e+02
+8.3558547e+03 -6.8478830e+01 -5.8847893e+01
+5.2295238e+03 -3.7232054e+01 -1.4616535e+01
+2.2740314e+03 -1.1101689e+01 -1.1709785e+00
+3.9614268e+02 -7.6049060e-01 -9.8998476e-02
+4.6861500e+01 -6.1659434e-02 -8.3102625e-03
+4.4586245e+00 -5.5233457e-03 -5.6897792e-04
+3.2691697e-01 -4.3696058e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7085984e+00 -2.4515596e-03 -4.7277146e-04
+2.7887765e+01 -2.8054234e-02 -1.4373773e-02
+3.7759438e+02 -1.5663321e-01 -3.5321352e-01
+4.4581874e+03 2.3411064e+00 -7.9859713e+00
+3.9480851e+04 2.1534120e+02 -2.7267161e+02
+9.0135362e+04 7.4102001e+02 -1.1639244e+03
+1.4331961e+05 1.2970887e+03 -2.7130513e+03
+1.8639036e+05 1.5465424e+03 -4.5558814e+03
+2.1434858e+05 1.3282606e+03 -6.1409973e+03
+2.2885550e+05 6.9603308e+02 -6.9820022e+03
+2.3347063e+05 -1.4292906e+02 -6.8358781e+03
+2.2984868e+05 -9.2425314e+02 -5.7686310e+03
+2.1632769e+05 -1.4162573e+03 -4.1173989e+03
+1.8906802e+05 -1.4914713e+03 -2.3701864e+03
+1.4595557e+05 -1.1738170e+03 -9.8979094e+02
+9.1867383e+04 -6.4458944e+02 -2.2856275e+02
+4.0051976e+04 -1.8476649e+02 -9.1807169e+00
+4.4982025e+03 -6.1942193e+00 -6.9640843e-01
+3.8019359e+02 -5.1076848e-01 -5.3098349e-02
+2.8048504e+01 -4.3108568e-02 -3.3094331e-03
+1.7172532e+00 -3.0588676e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.1075418e+00 -1.6334108e-02 4.6962108e-03
+1.1713621e+02 -2.8169732e-01 9.8925045e-02
+2.0511292e+03 -4.3453750e+00 1.8234995e+00
+3.6756320e+04 -6.7777639e+01 3.3862723e+01
+5.5979596e+05 -1.4511954e+02 -1.4916253e+03
+1.4262651e+06 1.2663524e+02 -6.5891431e+03
+2.3534351e+06 4.4044682e+02 -1.5273882e+04
+3.0475554e+06 4.8147661e+02 -2.5506364e+04
+3.4311434e+06 7.4772909e+01 -3.4282507e+04
+3.5879781e+06 -7.2763368e+02 -3.8973537e+04
+3.6324210e+06 -1.6891418e+03 -3.8259179e+04
+3.6140502e+06 -2.4980150e+03 -3.2467197e+04
+3.4835410e+06 -2.8874510e+03 -2.3386310e+04
+3.1191107e+06 -2.7339728e+03 -1.3654417e+04
+2.4243229e+06 -2.1103721e+03 -5.8324151e+03
+1.4725235e+06 -1.2679909e+03 -1.3953809e+03
+5.7328943e+05 -5.3448242e+02 -7.9976801e+01
+3.6880515e+04 -7.3865567e+01 -4.9280211e+00
+2.0578886e+03 -4.6823730e+00 -3.0058450e-01
+1.1750326e+02 -2.9890670e-01 -1.5729814e-02
+6.1254812e+00 -1.7105376e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.2956364e+01 -5.0391813e-02 1.4277301e-02
+2.5340569e+02 -9.3999308e-01 3.1274555e-01
+4.4857158e+03 -1.5822497e+01 5.9091136e+00
+7.9337678e+04 -2.6723327e+02 1.0918359e+02
+1.2526581e+06 -1.2448970e+03 -2.9284379e+03
+2.9967122e+06 -1.8083561e+03 -1.2538842e+04
+4.8519588e+06 -2.3437193e+03 -2.8637443e+04
+6.2654427e+06 -3.0564590e+03 -4.7444807e+04
+7.0839105e+06 -4.0770078e+03 -6.3517019e+04
+7.4478275e+06 -5.3217242e+03 -7.2133773e+04
+7.5550894e+06 -6.5035857e+03 -7.0925022e+04
+7.4919799e+06 -7.2514839e+03 -6.0452805e+04
+7.1733118e+06 -7.2646081e+03 -4.3891334e+04
+6.3884161e+06 -6.4451404e+03 -2.5976449e+04
+4.9742129e+06 -4.9619057e+03 -1.1384972e+04
+3.0759990e+06 -3.2039791e+03 -2.9152670e+03
+1.2745322e+06 -1.6254656e+03 -2.2534508e+02
+7.9493894e+04 -2.7398004e+02 -1.3186087e+01
+4.4944048e+03 -1.6185128e+01 -7.6417097e-01
+2.5387546e+02 -9.5849464e-01 -3.8217299e-02
+1.2978859e+01 -5.1212059e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0264471e+01 -9.3853725e-02 1.4202373e-02
+3.9602470e+02 -1.7851644e+00 3.2339700e-01
+6.9819469e+03 -3.0571660e+01 6.2643936e+00
+1.2258248e+05 -5.2211500e+02 1.1681544e+02
+1.9694306e+06 -2.6471757e+03 -4.6116641e+03
+4.6233915e+06 -4.3010132e+03 -1.9120205e+04
+7.4269067e+06 -5.9510134e+03 -4.3146491e+04
+9.5568832e+06 -7.6391455e+03 -7.1013483e+04
+1.0792887e+07 -9.4099297e+03 -9.4722189e+04
+1.1346695e+07 -1.1136979e+04 -1.0742210e+05
+1.1510095e+07 -1.2498681e+04 -1.0569444e+05
+1.1409607e+07 -1.3092786e+04 -9.0338661e+04
+1.0920879e+07 -1.2608714e+04 -6.5921411e+04
+9.7338588e+06 -1.0984236e+04 -3.9322888e+04
+7.6035246e+06 -8.4807024e+03 -1.7448793e+04
+4.7378734e+06 -5.6209293e+03 -4.5633699e+03
+2.0002943e+06 -3.0018976e+03 -3.1277391e+02
+1.2276150e+05 -5.2954954e+02 -1.8514397e+01
+6.9917339e+03 -3.0943527e+01 -1.0792410e+00
+3.9654183e+02 -1.8027554e+00 -5.4055600e-02
+2.0288483e+01 -9.4561814e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.6336862e+01 -1.1842824e-01 -8.0819336e-03
+5.1317121e+02 -2.2613033e+00 -1.2397885e-01
+9.0128647e+03 -3.8801198e+01 -1.4969209e+00
+1.5762300e+05 -6.6223909e+02 -1.6354863e+01
+2.5056632e+06 -3.4308984e+03 -6.2909225e+03
+5.8929197e+06 -5.7342109e+03 -2.5251693e+04
+9.4455999e+06 -8.0463455e+03 -5.6411748e+04
+1.2110364e+07 -1.0277907e+04 -9.2336527e+04
+1.3627019e+07 -1.2400285e+04 -1.2275797e+05
+1.4288799e+07 -1.4272289e+04 -1.3899646e+05
+1.4481135e+07 -1.5592805e+04 -1.3676065e+05
+1.4369315e+07 -1.5993295e+04 -1.1706496e+05
+1.3791194e+07 -1.5196706e+04 -8.5664794e+04
+1.2338098e+07 -1.3169764e+04 -5.1294546e+04
+9.6736863e+06 -1.0200223e+04 -2.2842265e+04
+6.0412335e+06 -6.8394931e+03 -5.9329050e+03
+2.5457210e+06 -3.7240706e+03 -2.5185756e+02
+1.5785249e+05 -6.6876652e+02 -1.5358008e+01
+9.0251584e+03 -3.9104626e+01 -9.1987860e-01
+5.1380681e+02 -2.2741317e+00 -4.7084219e-02
+2.6365670e+01 -1.1885341e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0448470e+01 -1.0032418e-01 -4.7938006e-02
+5.9188636e+02 -1.9151461e+00 -9.2349027e-01
+1.0368911e+04 -3.2817371e+01 -1.5278043e+01
+1.8093716e+05 -5.5877516e+02 -2.5018256e+02
+2.8128431e+06 -2.9142834e+03 -7.7191135e+03
+6.6856966e+06 -4.9190491e+03 -3.0127889e+04
+1.0723241e+07 -6.9315847e+03 -6.6768989e+04
+1.3705935e+07 -8.8297938e+03 -1.0881507e+05
+1.5359212e+07 -1.0562531e+04 -1.4427009e+05
+1.6052168e+07 -1.2020017e+04 -1.6310962e+05
+1.6249145e+07 -1.2988269e+04 -1.6042581e+05
+1.6147148e+07 -1.3207682e+04 -1.3740660e+05
+1.5553030e+07 -1.2484888e+04 -1.0068364e+05
+1.3975265e+07 -1.0804317e+04 -6.0368575e+04
+1.0993762e+07 -8.3880163e+03 -2.6857055e+04
+6.8623618e+06 -5.6576940e+03 -6.8445177e+03
+2.8611590e+06 -3.1077098e+03 -7.2539152e+01
+1.8124168e+05 -5.6296502e+02 -5.1108936e+00
+1.0385197e+04 -3.2997859e+01 -3.4526454e-01
+5.9272880e+02 -1.9216911e+00 -1.9361650e-02
+3.0486761e+01 -1.0046631e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2678438e+01 -3.9369040e-02 -8.5860855e-02
+6.3439028e+02 -7.5101328e-01 -1.6797099e+00
+1.1098833e+04 -1.2853800e+01 -2.8209298e+01
+1.9347733e+05 -2.1851573e+02 -4.6769715e+02
+2.9484364e+06 -1.1418914e+03 -8.6784532e+03
+7.0828311e+06 -1.9339385e+03 -3.3237012e+04
+1.1375893e+07 -2.7284783e+03 -7.3274618e+04
+1.4510283e+07 -3.4710432e+03 -1.1907831e+05
+1.6210152e+07 -4.1379216e+03 -1.5758749e+05
+1.6897694e+07 -4.6879837e+03 -1.7797363e+05
+1.7089215e+07 -5.0439690e+03 -1.7497440e+05
+1.7002183e+07 -5.1123609e+03 -1.4989196e+05
+1.6423405e+07 -4.8235902e+03 -1.0988588e+05
+1.4806880e+07 -4.1730606e+03 -6.5900062e+04
+1.1674353e+07 -3.2438348e+03 -2.9256596e+04
+7.2783977e+06 -2.1936870e+03 -7.3241247e+03
+3.0025479e+06 -1.2093400e+03 1.1178723e+02
+1.9384967e+05 -2.1991115e+02 5.6439541e+00
+1.1118854e+04 -1.2910508e+01 2.7081810e-01
+6.3543430e+02 -7.5278524e-01 1.0924008e-02
+3.2726412e+01 -3.9384503e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3367225e+01 3.9369052e-02 -1.0133619e-01
+6.4749725e+02 7.5101317e-01 -1.9872186e+00
+1.1323777e+04 1.2853799e+01 -3.3444868e+01
+1.9734615e+05 2.1851570e+02 -5.5536792e+02
+2.9839630e+06 1.1418913e+03 -9.0165589e+03
+7.1993603e+06 1.9339388e+03 -3.4302495e+04
+1.1570466e+07 2.7284795e+03 -7.5485316e+04
+1.4747890e+07 3.4710462e+03 -1.2254909e+05
+1.6456701e+07 4.1379234e+03 -1.6207533e+05
+1.7138047e+07 4.6879861e+03 -1.8296989e+05
+1.7326263e+07 5.0439730e+03 -1.7985620e+05
+1.7245849e+07 5.1123611e+03 -1.5407645e+05
+1.6676717e+07 4.8235895e+03 -1.1296574e+05
+1.5053975e+07 4.1730611e+03 -6.7744830e+04
+1.1878670e+07 3.2438357e+03 -3.0046637e+04
+7.4015626e+06 2.1936859e+03 -7.4683288e+03
+3.0401630e+06 1.2093398e+03 1.8836092e+02
+1.9774565e+05 2.1991111e+02 1.0147846e+01
+1.1345316e+04 1.2910506e+01 5.3094721e-01
+6.4862452e+02 7.5278532e-01 2.3804374e-02
+3.3419270e+01 3.9384508e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2678438e+01 1.0032417e-01 -8.5860930e-02
+6.3439028e+02 1.9151461e+00 -1.6797097e+00
+1.1098833e+04 3.2817372e+01 -2.8209300e+01
+1.9347733e+05 5.5877519e+02 -4.6769707e+02
+2.9484364e+06 2.9142832e+03 -8.6784531e+03
+7.0828311e+06 4.9190490e+03 -3.3237011e+04
+1.1375893e+07 6.9315830e+03 -7.3274618e+04
+1.4510283e+07 8.8297939e+03 -1.1907831e+05
+1.6210152e+07 1.0562534e+04 -1.5758749e+05
+1.6897694e+07 1.2020017e+04 -1.7797363e+05
+1.7089215e+07 1.2988268e+04 -1.7497440e+05
+1.7002183e+07 1.3207681e+04 -1.4989196e+05
+1.6423405e+07 1.2484888e+04 -1.0988588e+05
+1.4806880e+07 1.0804316e+04 -6.5900061e+04
+1.1674353e+07 8.3880186e+03 -2.9256598e+04
+7.2783977e+06 5.6576953e+03 -7.3241239e+03
+3.0025479e+06 3.1077098e+03 1.1178712e+02
+1.9384967e+05 5.6296504e+02 5.6439553e+00
+1.1118854e+04 3.2997861e+01 2.7081895e-01
+6.3543430e+02 1.9216911e+00 1.0924007e-02
+3.2726412e+01 1.0046630e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0448470e+01 1.1842824e-01 -4.7938013e-02
+5.9188636e+02 2.2613032e+00 -9.2349003e-01
+1.0368911e+04 3.8801197e+01 -1.5278045e+01
+1.8093716e+05 6.6223907e+02 -2.5018261e+02
+2.8128431e+06 3.4308982e+03 -7.7191135e+03
+6.6856966e+06 5.7342102e+03 -3.0127889e+04
+1.0723241e+07 8.0463459e+03 -6.6768987e+04
+1.3705935e+07 1.0277907e+04 -1.0881507e+05
+1.5359212e+07 1.2400282e+04 -1.4427010e+05
+1.6052168e+07 1.4272285e+04 -1.6310962e+05
+1.6249145e+07 1.5592802e+04 -1.6042580e+05
+1.6147148e+07 1.5993294e+04 -1.3740660e+05
+1.5553030e+07 1.5196705e+04 -1.0068364e+05
+1.3975265e+07 1.3169764e+04 -6.0368575e+04
+1.0993762e+07 1.0200221e+04 -2.6857053e+04
+6.8623618e+06 6.8394946e+03 -6.8445174e+03
+2.8611590e+06 3.7240706e+03 -7.2539189e+01
+1.8124168e+05 6.6876651e+02 -5.1108904e+00
+1.0385197e+04 3.9104624e+01 -3.4526452e-01
+5.9272880e+02 2.2741317e+00 -1.9361645e-02
+3.0486761e+01 1.1885340e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6336862e+01 9.3853723e-02 -8.0819441e-03
+5.1317121e+02 1.7851644e+00 -1.2397851e-01
+9.0128647e+03 3.0571659e+01 -1.4969212e+00
+1.5762300e+05 5.2211498e+02 -1.6354845e+01
+2.5056632e+06 2.6471756e+03 -6.2909222e+03
+5.8929197e+06 4.3010130e+03 -2.5251693e+04
+9.4455999e+06 5.9510136e+03 -5.6411749e+04
+1.2110364e+07 7.6391442e+03 -9.2336528e+04
+1.3627019e+07 9.4099300e+03 -1.2275797e+05
+1.4288799e+07 1.1136979e+04 -1.3899646e+05
+1.4481135e+07 1.2498684e+04 -1.3676065e+05
+1.4369315e+07 1.3092787e+04 -1.1706496e+05
+1.3791194e+07 1.2608715e+04 -8.5664793e+04
+1.2338098e+07 1.0984237e+04 -5.1294546e+04
+9.6736863e+06 8.4807009e+03 -2.2842263e+04
+6.0412335e+06 5.6209281e+03 -5.9329065e+03
+2.5457210e+06 3.0018973e+03 -2.5185762e+02
+1.5785249e+05 5.2954953e+02 -1.5358011e+01
+9.0251584e+03 3.0943526e+01 -9.1987829e-01
+5.1380681e+02 1.8027553e+00 -4.7084224e-02
+2.6365670e+01 9.4561812e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0264471e+01 5.0391813e-02 1.4202365e-02
+3.9602470e+02 9.3999311e-01 3.2339710e-01
+6.9819469e+03 1.5822498e+01 6.2643943e+00
+1.2258248e+05 2.6723327e+02 1.1681542e+02
+1.9694306e+06 1.2448972e+03 -4.6116638e+03
+4.6233915e+06 1.8083561e+03 -1.9120205e+04
+7.4269067e+06 2.3437186e+03 -4.3146491e+04
+9.5568832e+06 3.0564581e+03 -7.1013481e+04
+1.0792887e+07 4.0770063e+03 -9.4722193e+04
+1.1346695e+07 5.3217239e+03 -1.0742210e+05
+1.1510095e+07 6.5035858e+03 -1.0569444e+05
+1.1409607e+07 7.2514840e+03 -9.0338660e+04
+1.0920879e+07 7.2646080e+03 -6.5921411e+04
+9.7338588e+06 6.4451409e+03 -3.9322889e+04
+7.6035246e+06 4.9619058e+03 -1.7448791e+04
+4.7378734e+06 3.2039788e+03 -4.5633700e+03
+2.0002943e+06 1.6254658e+03 -3.1277388e+02
+1.2276150e+05 2.7398002e+02 -1.8514401e+01
+6.9917340e+03 1.6185129e+01 -1.0792408e+00
+3.9654183e+02 9.5849473e-01 -5.4055596e-02
+2.0288483e+01 5.1212061e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.2956364e+01 1.6334107e-02 1.4277302e-02
+2.5340569e+02 2.8169730e-01 3.1274557e-01
+4.4857158e+03 4.3453748e+00 5.9091141e+00
+7.9337678e+04 6.7777634e+01 1.0918362e+02
+1.2526581e+06 1.4511955e+02 -2.9284375e+03
+2.9967122e+06 -1.2663515e+02 -1.2538843e+04
+4.8519588e+06 -4.4044693e+02 -2.8637444e+04
+6.2654427e+06 -4.8147739e+02 -4.7444806e+04
+7.0839105e+06 -7.4773210e+01 -6.3517020e+04
+7.4478275e+06 7.2763483e+02 -7.2133773e+04
+7.5550894e+06 1.6891413e+03 -7.0925021e+04
+7.4919799e+06 2.4980147e+03 -6.0452806e+04
+7.1733118e+06 2.8874509e+03 -4.3891333e+04
+6.3884161e+06 2.7339730e+03 -2.5976449e+04
+4.9742129e+06 2.1103723e+03 -1.1384972e+04
+3.0759990e+06 1.2679910e+03 -2.9152669e+03
+1.2745322e+06 5.3448243e+02 -2.2534512e+02
+7.9493894e+04 7.3865572e+01 -1.3186086e+01
+4.4944048e+03 4.6823736e+00 -7.6417062e-01
+2.5387546e+02 2.9890669e-01 -3.8217305e-02
+1.2978859e+01 1.7105376e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.1075418e+00 2.4515595e-03 4.6962093e-03
+1.1713621e+02 2.8054236e-02 9.8925069e-02
+2.0511292e+03 1.5663319e-01 1.8234992e+00
+3.6756320e+04 -2.3411060e+00 3.3862725e+01
+5.5979596e+05 -2.1534120e+02 -1.4916253e+03
+1.4262651e+06 -7.4102002e+02 -6.5891431e+03
+2.3534351e+06 -1.2970887e+03 -1.5273882e+04
+3.0475554e+06 -1.5465424e+03 -2.5506363e+04
+3.4311434e+06 -1.3282607e+03 -3.4282507e+04
+3.5879781e+06 -6.9603330e+02 -3.8973537e+04
+3.6324210e+06 1.4292897e+02 -3.8259179e+04
+3.6140502e+06 9.2425301e+02 -3.2467197e+04
+3.4835410e+06 1.4162573e+03 -2.3386310e+04
+3.1191107e+06 1.4914713e+03 -1.3654417e+04
+2.4243229e+06 1.1738170e+03 -5.8324152e+03
+1.4725235e+06 6.4458945e+02 -1.3953808e+03
+5.7328943e+05 1.8476650e+02 -7.9976803e+01
+3.6880515e+04 6.1942213e+00 -4.9280198e+00
+2.0578886e+03 5.1076847e-01 -3.0058451e-01
+1.1750326e+02 4.3108565e-02 -1.5729814e-02
+6.1254812e+00 3.0588678e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7085984e+00 2.3999952e-04 -4.7277121e-04
+2.7887765e+01 1.3652451e-03 -1.4373774e-02
+3.7759438e+02 -1.6708364e-02 -3.5321352e-01
+4.4581874e+03 -6.4289533e-01 -7.9859709e+00
+3.9480851e+04 -1.3019738e+01 -2.7267161e+02
+9.0135362e+04 -4.3106723e+01 -1.1639244e+03
+1.4331961e+05 -7.6051202e+01 -2.7130513e+03
+1.8639036e+05 -9.1512156e+01 -4.5558813e+03
+2.1434858e+05 -7.9017432e+01 -6.1409973e+03
+2.2885550e+05 -4.1378531e+01 -6.9820021e+03
+2.3347063e+05 8.8818446e+00 -6.8358781e+03
+2.2984868e+05 5.5526542e+01 -5.7686310e+03
+2.1632769e+05 8.4408105e+01 -4.1173988e+03
+1.8906802e+05 8.8056350e+01 -2.3701864e+03
+1.4595557e+05 6.8478828e+01 -9.8979094e+02
+9.1867383e+04 3.7232055e+01 -2.2856276e+02
+4.0051976e+04 1.1101691e+01 -9.1807150e+00
+4.4982025e+03 7.6049056e-01 -6.9640847e-01
+3.8019359e+02 6.1659434e-02 -5.3098354e-02
+2.8048504e+01 5.5233457e-03 -3.3094325e-03
+1.7172532e+00 4.3696056e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2454248e-01 1.3783694e-05 -3.2756963e-04
+4.4218720e+00 -8.1645705e-05 -6.0650914e-03
+4.6405653e+01 -4.2233219e-03 -9.1718002e-02
+3.9138203e+02 -7.2574243e-02 -1.2947121e+00
+2.2382197e+03 -7.8546696e-01 -1.7643869e+01
+5.1314214e+03 -2.4792015e+00 -6.9867257e+01
+8.2081495e+03 -4.3863025e+00 -1.6091445e+02
+1.0724112e+04 -5.3227050e+00 -2.6997178e+02
+1.2373020e+04 -4.6225391e+00 -3.6416541e+02
+1.3234696e+04 -2.4206634e+00 -4.1407252e+02
+1.3509145e+04 5.4048276e-01 -4.0494070e+02
+1.3291347e+04 3.2800980e+00 -3.4091607e+02
+1.2485219e+04 4.9479089e+00 -2.4262435e+02
+1.0874827e+04 5.1140113e+00 -1.3950487e+02
+8.3558547e+03 3.9341899e+00 -5.8847893e+01
+5.2295238e+03 2.1291123e+00 -1.4616534e+01
+2.2740314e+03 6.6536363e-01 -1.1709786e+00
+3.9614268e+02 7.2017591e-02 -9.8998476e-02
+4.6861500e+01 6.8062050e-03 -8.3102629e-03
+4.4586245e+00 6.4768845e-04 -5.6897786e-04
+3.2691697e-01 5.4410576e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.6495553e-02 9.7042818e-09 -7.3447644e-05
+5.3787461e-01 -2.1741539e-05 -1.1132777e-03
+4.5415535e+00 -4.4271359e-04 -1.3099908e-02
+2.9615643e+01 -5.3402516e-03 -1.3583344e-01
+1.2969083e+02 -4.0851516e-02 -1.1490849e+00
+2.9211353e+02 -1.2305773e-01 -4.2008499e+00
+4.6836276e+02 -2.1745368e-01 -9.5106330e+00
+6.1449360e+02 -2.6554129e-01 -1.5909169e+01
+7.1142932e+02 -2.3176305e-01 -2.1460373e+01
+7.6256696e+02 -1.2138711e-01 -2.4399458e+01
+7.7889646e+02 2.8020016e-02 -2.3836479e+01
+7.6577348e+02 1.6590748e-01 -2.0027984e+01
+7.1774492e+02 2.4862313e-01 -1.4224806e+01
+6.2292638e+02 2.5497029e-01 -8.1874817e+00
+4.7661096e+02 1.9454650e-01 -3.5068415e+00
+2.9767860e+02 1.0525565e-01 -9.4090375e-01
+1.3191476e+02 3.4412935e-02 -1.1448028e-01
+3.0039906e+01 4.9497057e-03 -1.1872160e-02
+4.5966912e+00 5.5086952e-04 -1.1285849e-03
+5.4353803e-01 5.6718338e-05 -8.4197294e-05
+4.6932740e-02 4.9919805e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.6525216e-03 0.0000000e+00 -9.4697023e-06
+4.7435321e-02 0.0000000e+00 -1.2627502e-04
+3.3991547e-01 0.0000000e+00 -1.2524685e-03
+1.8465657e+00 0.0000000e+00 -1.0452326e-02
+6.8454642e+00 0.0000000e+00 -6.6812024e-02
+1.5045456e+01 0.0000000e+00 -2.2739604e-01
+2.4104113e+01 0.0000000e+00 -5.0524507e-01
+3.1723374e+01 0.0000000e+00 -8.4147359e-01
+3.6840698e+01 0.0000000e+00 -1.1343195e+00
+3.9567079e+01 0.0000000e+00 -1.2893053e+00
+4.0440404e+01 0.0000000e+00 -1.2584670e+00
+3.9730242e+01 0.0000000e+00 -1.0558803e+00
+3.7160640e+01 0.0000000e+00 -7.4918659e-01
+3.2148706e+01 0.0000000e+00 -4.3239078e-01
+2.4520226e+01 0.0000000e+00 -1.8838868e-01
+1.5331003e+01 0.0000000e+00 -5.4154946e-02
+6.9682205e+00 0.0000000e+00 -8.5284708e-03
+1.8757474e+00 0.0000000e+00 -1.0571593e-03
+3.4462062e-01 0.0000000e+00 -1.1330649e-04
+4.8015985e-02 0.0000000e+00 -9.1454310e-06
+4.7040039e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.6636842e-03 -4.4908604e-07 -1.0713505e-05
+4.7547166e-02 2.1848815e-05 -1.4440701e-04
+3.4071752e-01 4.9727528e-04 -1.4437268e-03
+1.8510717e+00 6.1365902e-03 -1.2086368e-02
+6.8634073e+00 4.7070833e-02 -7.7100329e-02
+1.5088158e+01 1.3952029e-01 -2.5932235e-01
+2.4171046e+01 2.4000971e-01 -5.6626495e-01
+3.1798780e+01 2.8173436e-01 -9.2340482e-01
+3.6902206e+01 2.3096530e-01 -1.2158783e+00
+3.9596812e+01 1.0278095e-01 -1.3483921e+00
+4.0431691e+01 -5.5642171e-02 -1.2840372e+00
+3.9688591e+01 -1.9042254e-01 -1.0519628e+00
+3.7100478e+01 -2.6171899e-01 -7.3008168e-01
+3.2087776e+01 -2.5593812e-01 -4.1321380e-01
+2.4473213e+01 -1.8901866e-01 -1.7718130e-01
+1.5304240e+01 -1.0003157e-01 -5.0386278e-02
+6.9581418e+00 -3.2370339e-02 -7.9372346e-03
+1.8735603e+00 -4.7585395e-03 -9.9155643e-04
+3.4429549e-01 -5.5869276e-04 -1.0773302e-04
+4.7979008e-02 -6.1930000e-05 -8.8257877e-06
+4.7009688e-03 -5.7906298e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.6598615e-02 -2.2326696e-05 -8.1184010e-05
+5.3903219e-01 3.9385718e-05 -1.2563001e-03
+4.5512273e+00 4.5961181e-03 -1.5028930e-02
+2.9680758e+01 8.3254577e-02 -1.5726234e-01
+1.3000329e+02 9.1028336e-01 -1.3329350e+00
+2.9290912e+02 2.8254844e+00 -4.8144832e+00
+4.6963241e+02 4.8604767e+00 -1.0704598e+01
+6.1592830e+02 5.6589067e+00 -1.7516473e+01
+7.1259865e+02 4.6028970e+00 -2.3057733e+01
+7.6313164e+02 2.0339862e+00 -2.5553625e+01
+7.7873133e+02 -1.1104253e+00 -2.4333713e+01
+7.6498268e+02 -3.7846474e+00 -1.9948682e+01
+7.1660082e+02 -5.2169258e+00 -1.3849374e+01
+6.2176625e+02 -5.1320307e+00 -7.8131455e+00
+4.7571804e+02 -3.8167749e+00 -3.2924708e+00
+2.9717924e+02 -2.0190797e+00 -8.7407004e-01
+1.3173990e+02 -6.2453186e-01 -1.0705096e-01
+3.0009540e+01 -7.0153649e-02 -1.1290001e-02
+4.5930908e+00 -7.1501560e-03 -1.0980822e-03
+5.4320223e-01 -7.4052228e-04 -8.3681311e-05
+4.6909125e-02 -6.5856653e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.2519980e-01 -3.4670659e-04 -3.3293869e-04
+4.4304070e+00 -2.3010687e-03 -6.5274459e-03
+4.6492478e+01 1.4407278e-02 -1.0316298e-01
+3.9212939e+02 7.2752335e-01 -1.4947973e+00
+2.2430372e+03 1.5195345e+01 -2.0597339e+01
+5.1447645e+03 4.9430664e+01 -8.0545612e+01
+8.2298226e+03 8.4659127e+01 -1.8201744e+02
+1.0748645e+04 9.7505929e+01 -2.9839814e+02
+1.2392986e+04 7.8573867e+01 -3.9233546e+02
+1.3244332e+04 3.4421587e+01 -4.3435877e+02
+1.3506350e+04 -1.9037691e+01 -4.1363641e+02
+1.3277885e+04 -6.4492144e+01 -3.3946639e+02
+1.2465693e+04 -8.9186834e+01 -2.3597049e+02
+1.0854983e+04 -8.8353688e+01 -1.3290425e+02
+8.3405984e+03 -6.6328745e+01 -5.5135925e+01
+5.2211415e+03 -3.5221478e+01 -1.3551169e+01
+2.2713577e+03 -1.0392183e+01 -1.1098434e+00
+3.9582547e+02 -7.6543257e-01 -9.7358921e-02
+4.6834691e+01 -6.9212631e-02 -8.4871252e-03
+4.4567337e+00 -6.7395253e-03 -5.9726560e-04
+3.2680957e-01 -5.5571998e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7117994e+00 -3.4483265e-03 -9.9401100e-05
+2.7936321e+01 -4.0633317e-02 -1.0322456e-02
+3.7820785e+02 -2.6023636e-01 -3.4914878e-01
+4.4652704e+03 2.2577947e+00 -8.9624141e+00
+3.9554403e+04 2.5327068e+02 -3.2059038e+02
+9.0359305e+04 8.5530555e+02 -1.3504079e+03
+1.4368834e+05 1.4507406e+03 -3.0852208e+03
+1.8680768e+05 1.6512406e+03 -5.0562782e+03
+2.1468748e+05 1.3183642e+03 -6.6349749e+03
+2.2901892e+05 5.7243763e+02 -7.3364079e+03
+2.3342360e+05 -3.2141020e+02 -6.9870063e+03
+2.2962084e+05 -1.0813834e+03 -5.7422781e+03
+2.1599630e+05 -1.5000987e+03 -3.9999789e+03
+1.8873022e+05 -1.4965155e+03 -2.2540150e+03
+1.4569568e+05 -1.1351867e+03 -9.2525973e+02
+9.1726545e+04 -6.0825684e+02 -2.1138584e+02
+4.0011720e+04 -1.7239840e+02 -9.1240663e+00
+4.4959125e+03 -6.8554426e+00 -7.4406409e-01
+3.8007564e+02 -6.3618074e-01 -5.9144221e-02
+2.8042703e+01 -5.6323338e-02 -3.7595168e-03
+1.7169971e+00 -4.0591035e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.1185188e+00 -2.2866750e-02 8.4414819e-03
+1.1732809e+02 -3.9836823e-01 1.7429609e-01
+2.0541191e+03 -6.2194784e+00 3.1437063e+00
+3.6802875e+04 -9.8216021e+01 5.7062487e+01
+5.6208698e+05 -2.6839477e+02 -1.7122892e+03
+1.4330297e+06 -3.8854227e+01 -7.5827450e+03
+2.3644029e+06 1.9432169e+02 -1.7294070e+04
+3.0600559e+06 7.8615205e+01 -2.8221891e+04
+3.4417162e+06 -5.3113631e+02 -3.6945143e+04
+3.5939692e+06 -1.5073797e+03 -4.0856414e+04
+3.6328127e+06 -2.5456969e+03 -3.9023803e+04
+3.6095222e+06 -3.3117464e+03 -3.2265438e+04
+3.4760408e+06 -3.5658324e+03 -2.2699499e+04
+3.1111493e+06 -3.2401336e+03 -1.2994420e+04
+2.4181315e+06 -2.4596770e+03 -5.4784698e+03
+1.4692556e+06 -1.4985103e+03 -1.3202638e+03
+5.7257355e+05 -6.7437737e+02 -1.0240780e+02
+3.6880615e+04 -1.0315646e+02 -6.2068102e+00
+2.0579003e+03 -6.4812417e+00 -3.7341314e-01
+1.1750334e+02 -4.1048822e-01 -1.9331656e-02
+6.1254201e+00 -2.3329598e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.2979789e+01 -7.0566650e-02 2.4275164e-02
+2.5383589e+02 -1.3280799e+00 5.2379355e-01
+4.4928253e+03 -2.2583374e+01 9.7781955e+00
+7.9455340e+04 -3.8545902e+02 1.7935914e+02
+1.2577145e+06 -1.8653291e+03 -3.2801864e+03
+3.0104993e+06 -2.8528421e+03 -1.4253293e+04
+4.8739227e+06 -3.8621445e+03 -3.2160792e+04
+6.2906280e+06 -5.0834637e+03 -5.2183997e+04
+7.1059283e+06 -6.5831062e+03 -6.8149802e+04
+7.4617331e+06 -8.1768676e+03 -7.5385924e+04
+7.5588605e+06 -9.4918201e+03 -7.2210838e+04
+7.4866324e+06 -1.0127137e+04 -6.0047950e+04
+7.1621623e+06 -9.8159219e+03 -4.2648342e+04
+6.3758635e+06 -8.5357651e+03 -2.4800178e+04
+4.9642589e+06 -6.5376974e+03 -1.0768171e+04
+3.0708103e+06 -4.2731403e+03 -2.8047697e+03
+1.2735826e+06 -2.2371480e+03 -2.9236488e+02
+7.9501830e+04 -3.8659044e+02 -1.6866568e+01
+4.4946294e+03 -2.2608340e+01 -9.6401267e-01
+2.5387478e+02 -1.3261806e+00 -4.7638323e-02
+1.2978166e+01 -7.0275043e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0298221e+01 -1.3142518e-01 2.7108218e-02
+3.9664897e+02 -2.5213302e+00 5.9609377e-01
+6.9923234e+03 -4.3604246e+01 1.1240534e+01
+1.2275456e+05 -7.5235886e+02 2.0605681e+02
+1.9768076e+06 -3.8982732e+03 -5.1380159e+03
+4.6435039e+06 -6.4634415e+03 -2.1639742e+04
+7.4587927e+06 -9.0853535e+03 -4.8302596e+04
+9.5931457e+06 -1.1719003e+04 -7.7929618e+04
+1.0824149e+07 -1.4301246e+04 -1.0147281e+05
+1.1365790e+07 -1.6580947e+04 -1.1216432e+05
+1.1514161e+07 -1.8137390e+04 -1.0758480e+05
+1.1400204e+07 -1.8534396e+04 -8.9774665e+04
+1.0902922e+07 -1.7500989e+04 -6.4132798e+04
+9.7138776e+06 -1.5067265e+04 -3.7620123e+04
+7.5875249e+06 -1.1607203e+04 -1.6550955e+04
+4.7291994e+06 -7.7537843e+03 -4.3963198e+03
+1.9982709e+06 -4.2118394e+03 -3.9824469e+02
+1.2274848e+05 -7.4855318e+02 -2.3257209e+01
+6.9905117e+03 -4.3305597e+01 -1.3376777e+00
+3.9644321e+02 -2.4990241e+00 -6.6213780e-02
+2.0281994e+01 -1.2999947e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6372606e+01 -1.6578953e-01 -1.3797883e-03
+5.1382421e+02 -3.1924500e+00 1.6740256e-02
+9.0235526e+03 -5.5310070e+01 1.0346520e+00
+1.5779715e+05 -9.5360438e+02 2.8122819e+01
+2.5138718e+06 -5.0256262e+03 -7.0531026e+03
+5.9165148e+06 -8.5087680e+03 -2.8602844e+04
+9.4831392e+06 -1.2058522e+04 -6.3168887e+04
+1.2152283e+07 -1.5453525e+04 -1.0135329e+05
+1.3661456e+07 -1.8538161e+04 -1.3155364e+05
+1.4306920e+07 -2.1045989e+04 -1.4520968e+05
+1.4479678e+07 -2.2582036e+04 -1.3930852e+05
+1.4350661e+07 -2.2746403e+04 -1.1644315e+05
+1.3761983e+07 -2.1300133e+04 -8.3432166e+04
+1.2307024e+07 -1.8300903e+04 -4.9125061e+04
+9.6487763e+06 -1.4155360e+04 -2.1666870e+04
+6.0270290e+06 -9.5465761e+03 -5.6695786e+03
+2.5413934e+06 -5.2577135e+03 -2.9610575e+02
+1.5777150e+05 -9.4581601e+02 -1.7855209e+01
+9.0198130e+03 -5.4758083e+01 -1.0572976e+00
+5.1345847e+02 -3.1544270e+00 -5.3558574e-02
+2.6345616e+01 -1.6350331e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0478199e+01 -1.4040160e-01 -5.5116707e-02
+5.9241389e+02 -2.7027097e+00 -1.0723821e+00
+1.0377251e+04 -4.6758570e+01 -1.7964315e+01
+1.8106804e+05 -8.0418839e+02 -2.9825642e+02
+2.8205184e+06 -4.2590161e+03 -8.7402128e+03
+6.7099394e+06 -7.2628413e+03 -3.4228904e+04
+1.0762166e+07 -1.0314603e+04 -7.4897892e+04
+1.3748360e+07 -1.3174396e+04 -1.1960165e+05
+1.5391549e+07 -1.5688610e+04 -1.5478868e+05
+1.6064575e+07 -1.7654787e+04 -1.7058659e+05
+1.6238352e+07 -1.8792129e+04 -1.6358372e+05
+1.6116445e+07 -1.8819193e+04 -1.3680824e+05
+1.5510630e+07 -1.7570061e+04 -9.8137470e+04
+1.3931755e+07 -1.5095444e+04 -5.7832676e+04
+1.0958918e+07 -1.1707599e+04 -2.5436118e+04
+6.8417749e+06 -7.9349547e+03 -6.4609027e+03
+2.8538694e+06 -4.3981768e+03 -3.0821351e+01
+1.8106411e+05 -7.9629636e+02 -2.7760660e+00
+1.0374094e+04 -4.6215104e+01 -2.1526224e-01
+5.9203831e+02 -2.6661416e+00 -1.3049520e-02
+3.0448452e+01 -1.3824347e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2700062e+01 -5.5085691e-02 -1.0694017e-01
+6.3475578e+02 -1.0596143e+00 -2.1155370e+00
+1.1104266e+04 -1.8309485e+01 -3.5998295e+01
+1.9355662e+05 -3.1439504e+02 -6.0507887e+02
+2.9551434e+06 -1.6671881e+03 -9.9039410e+03
+7.1063808e+06 -2.8498711e+03 -3.7866577e+04
+1.1414097e+07 -4.0491945e+03 -8.2335897e+04
+1.4550989e+07 -5.1637822e+03 -1.3105235e+05
+1.6238803e+07 -6.1307436e+03 -1.6926109e+05
+1.6903962e+07 -6.8748788e+03 -1.8630844e+05
+1.7069975e+07 -7.2948358e+03 -1.7856600e+05
+1.6961428e+07 -7.2893074e+03 -1.4934089e+05
+1.6370448e+07 -6.7986959e+03 -1.0715509e+05
+1.4753600e+07 -5.8425799e+03 -6.3128013e+04
+1.1631718e+07 -4.5375438e+03 -2.7662640e+04
+7.2527215e+06 -3.0822357e+03 -6.8392212e+03
+2.9927870e+06 -1.7130412e+03 2.3660343e+02
+1.9358833e+05 -3.1106714e+02 1.2711757e+01
+1.1102767e+04 -1.8082682e+01 6.6613228e-01
+6.3444872e+02 -1.0444798e+00 3.0054191e-02
+3.2672421e+01 -5.4198357e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3385231e+01 5.5085692e-02 -1.2817746e-01
+6.4779122e+02 1.0596143e+00 -2.5413798e+00
+1.1327942e+04 1.8309485e+01 -4.3325699e+01
+1.9740317e+05 3.1439503e+02 -7.2914016e+02
+2.9902192e+06 1.6671880e+03 -1.0319735e+04
+7.2224639e+06 2.8498716e+03 -3.9123131e+04
+1.1608123e+07 4.0491943e+03 -8.4877584e+04
+1.4787627e+07 5.1637835e+03 -1.3494179e+05
+1.6483653e+07 6.1307501e+03 -1.7415586e+05
+1.7141750e+07 6.8748809e+03 -1.9160868e+05
+1.7303670e+07 7.2948349e+03 -1.8360468e+05
+1.7201213e+07 7.2893056e+03 -1.5354723e+05
+1.6619747e+07 6.7986947e+03 -1.1017399e+05
+1.4997006e+07 5.8425803e+03 -6.4890832e+04
+1.1833094e+07 4.5375466e+03 -2.8389888e+04
+7.3739521e+06 3.0822359e+03 -6.9438672e+03
+3.0294460e+06 1.7130413e+03 3.4705517e+02
+1.9745142e+05 3.1106712e+02 1.9156806e+01
+1.1327271e+04 1.8082681e+01 1.0357202e+00
+6.4752303e+02 1.0444798e+00 4.8249402e-02
+3.3359123e+01 5.4198362e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2700062e+01 1.4040160e-01 -1.0694018e-01
+6.3475578e+02 2.7027097e+00 -2.1155369e+00
+1.1104266e+04 4.6758571e+01 -3.5998297e+01
+1.9355662e+05 8.0418844e+02 -6.0507891e+02
+2.9551434e+06 4.2590159e+03 -9.9039408e+03
+7.1063808e+06 7.2628422e+03 -3.7866576e+04
+1.1414097e+07 1.0314603e+04 -8.2335897e+04
+1.4550989e+07 1.3174396e+04 -1.3105234e+05
+1.6238803e+07 1.5688610e+04 -1.6926110e+05
+1.6903962e+07 1.7654788e+04 -1.8630845e+05
+1.7069975e+07 1.8792129e+04 -1.7856600e+05
+1.6961428e+07 1.8819193e+04 -1.4934088e+05
+1.6370448e+07 1.7570061e+04 -1.0715509e+05
+1.4753600e+07 1.5095442e+04 -6.3128012e+04
+1.1631718e+07 1.1707598e+04 -2.7662642e+04
+7.2527215e+06 7.9349546e+03 -6.8392218e+03
+2.9927870e+06 4.3981769e+03 2.3660345e+02
+1.9358833e+05 7.9629634e+02 1.2711757e+01
+1.1102767e+04 4.6215103e+01 6.6613230e-01
+6.3444872e+02 2.6661416e+00 3.0054221e-02
+3.2672421e+01 1.3824347e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0478199e+01 1.6578953e-01 -5.5116716e-02
+5.9241389e+02 3.1924500e+00 -1.0723818e+00
+1.0377251e+04 5.5310069e+01 -1.7964311e+01
+1.8106804e+05 9.5360435e+02 -2.9825670e+02
+2.8205184e+06 5.0256262e+03 -8.7402121e+03
+6.7099393e+06 8.5087667e+03 -3.4228905e+04
+1.0762166e+07 1.2058521e+04 -7.4897892e+04
+1.3748360e+07 1.5453524e+04 -1.1960165e+05
+1.5391549e+07 1.8538158e+04 -1.5478868e+05
+1.6064575e+07 2.1045986e+04 -1.7058659e+05
+1.6238352e+07 2.2582033e+04 -1.6358372e+05
+1.6116445e+07 2.2746402e+04 -1.3680824e+05
+1.5510630e+07 2.1300130e+04 -9.8137472e+04
+1.3931755e+07 1.8300904e+04 -5.7832674e+04
+1.0958918e+07 1.4155360e+04 -2.5436115e+04
+6.8417749e+06 9.5465763e+03 -6.4609032e+03
+2.8538694e+06 5.2577130e+03 -3.0821559e+01
+1.8106411e+05 9.4581600e+02 -2.7760652e+00
+1.0374094e+04 5.4758081e+01 -2.1526196e-01
+5.9203831e+02 3.1544269e+00 -1.3049521e-02
+3.0448452e+01 1.6350330e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6372606e+01 1.3142517e-01 -1.3797852e-03
+5.1382421e+02 2.5213302e+00 1.6740323e-02
+9.0235526e+03 4.3604245e+01 1.0346521e+00
+1.5779715e+05 7.5235883e+02 2.8122849e+01
+2.5138718e+06 3.8982731e+03 -7.0531026e+03
+5.9165148e+06 6.4634407e+03 -2.8602842e+04
+9.4831392e+06 9.0853538e+03 -6.3168889e+04
+1.2152283e+07 1.1719002e+04 -1.0135329e+05
+1.3661456e+07 1.4301245e+04 -1.3155364e+05
+1.4306920e+07 1.6580948e+04 -1.4520968e+05
+1.4479678e+07 1.8137393e+04 -1.3930852e+05
+1.4350661e+07 1.8534396e+04 -1.1644315e+05
+1.3761983e+07 1.7500991e+04 -8.3432163e+04
+1.2307024e+07 1.5067266e+04 -4.9125059e+04
+9.6487763e+06 1.1607203e+04 -2.1666871e+04
+6.0270290e+06 7.7537850e+03 -5.6695803e+03
+2.5413934e+06 4.2118396e+03 -2.9610566e+02
+1.5777150e+05 7.4855318e+02 -1.7855214e+01
+9.0198130e+03 4.3305597e+01 -1.0572973e+00
+5.1345847e+02 2.4990241e+00 -5.3558571e-02
+2.6345616e+01 1.2999947e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0298221e+01 7.0566649e-02 2.7108215e-02
+3.9664897e+02 1.3280799e+00 5.9609374e-01
+6.9923234e+03 2.2583373e+01 1.1240534e+01
+1.2275456e+05 3.8545902e+02 2.0605684e+02
+1.9768076e+06 1.8653290e+03 -5.1380161e+03
+4.6435039e+06 2.8528421e+03 -2.1639741e+04
+7.4587927e+06 3.8621440e+03 -4.8302595e+04
+9.5931457e+06 5.0834634e+03 -7.7929617e+04
+1.0824149e+07 6.5831047e+03 -1.0147281e+05
+1.1365790e+07 8.1768673e+03 -1.1216432e+05
+1.1514161e+07 9.4918217e+03 -1.0758480e+05
+1.1400204e+07 1.0127137e+04 -8.9774665e+04
+1.0902922e+07 9.8159230e+03 -6.4132798e+04
+9.7138776e+06 8.5357657e+03 -3.7620122e+04
+7.5875249e+06 6.5376970e+03 -1.6550954e+04
+4.7291994e+06 4.2731398e+03 -4.3963198e+03
+1.9982709e+06 2.2371479e+03 -3.9824472e+02
+1.2274848e+05 3.8659044e+02 -2.3257211e+01
+6.9905117e+03 2.2608339e+01 -1.3376776e+00
+3.9644321e+02 1.3261806e+00 -6.6213782e-02
+2.0281994e+01 7.0275043e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.2979789e+01 2.2866749e-02 2.4275159e-02
+2.5383589e+02 3.9836821e-01 5.2379351e-01
+4.4928253e+03 6.2194786e+00 9.7781974e+00
+7.9455340e+04 9.8216016e+01 1.7935912e+02
+1.2577145e+06 2.6839481e+02 -3.2801860e+03
+3.0104993e+06 3.8854227e+01 -1.4253293e+04
+4.8739227e+06 -1.9432169e+02 -3.2160792e+04
+6.2906280e+06 -7.8616011e+01 -5.2183997e+04
+7.1059283e+06 5.3113709e+02 -6.8149802e+04
+7.4617331e+06 1.5073818e+03 -7.5385923e+04
+7.5588605e+06 2.5456967e+03 -7.2210838e+04
+7.4866324e+06 3.3117468e+03 -6.0047950e+04
+7.1621623e+06 3.5658325e+03 -4.2648342e+04
+6.3758635e+06 3.2401334e+03 -2.4800179e+04
+4.9642589e+06 2.4596766e+03 -1.0768171e+04
+3.0708103e+06 1.4985098e+03 -2.8047695e+03
+1.2735826e+06 6.7437735e+02 -2.9236489e+02
+7.9501830e+04 1.0315646e+02 -1.6866571e+01
+4.4946294e+03 6.4812417e+00 -9.6401258e-01
+2.5387478e+02 4.1048821e-01 -4.7638321e-02
+1.2978166e+01 2.3329598e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.1185188e+00 3.4483268e-03 8.4414798e-03
+1.1732809e+02 4.0633322e-02 1.7429611e-01
+2.0541191e+03 2.6023644e-01 3.1437060e+00
+3.6802875e+04 -2.2577946e+00 5.7062493e+01
+5.6208698e+05 -2.5327068e+02 -1.7122892e+03
+1.4330297e+06 -8.5530554e+02 -7.5827450e+03
+2.3644029e+06 -1.4507405e+03 -1.7294071e+04
+3.0600559e+06 -1.6512405e+03 -2.8221891e+04
+3.4417162e+06 -1.3183643e+03 -3.6945143e+04
+3.5939692e+06 -5.7243780e+02 -4.0856414e+04
+3.6328127e+06 3.2141007e+02 -3.9023803e+04
+3.6095222e+06 1.0813834e+03 -3.2265438e+04
+3.4760408e+06 1.5000986e+03 -2.2699499e+04
+3.1111493e+06 1.4965154e+03 -1.2994420e+04
+2.4181315e+06 1.1351867e+03 -5.4784700e+03
+1.4692556e+06 6.0825685e+02 -1.3202637e+03
+5.7257355e+05 1.7239841e+02 -1.0240780e+02
+3.6880615e+04 6.8554432e+00 -6.2068100e+00
+2.0579003e+03 6.3618076e-01 -3.7341312e-01
+1.1750334e+02 5.6323338e-02 -1.9331655e-02
+6.1254201e+00 4.0591034e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7117994e+00 3.4670649e-04 -9.9401386e-05
+2.7936321e+01 2.3010674e-03 -1.0322450e-02
+3.7820785e+02 -1.4407287e-02 -3.4914893e-01
+4.4652704e+03 -7.2752329e-01 -8.9624141e+00
+3.9554403e+04 -1.5195345e+01 -3.2059038e+02
+9.0359305e+04 -4.9430663e+01 -1.3504079e+03
+1.4368834e+05 -8.4659127e+01 -3.0852208e+03
+1.8680768e+05 -9.7505928e+01 -5.0562782e+03
+2.1468748e+05 -7.8573868e+01 -6.6349749e+03
+2.2901892e+05 -3.4421591e+01 -7.3364079e+03
+2.3342360e+05 1.9037690e+01 -6.9870064e+03
+2.2962084e+05 6.4492156e+01 -5.7422781e+03
+2.1599630e+05 8.9186833e+01 -3.9999788e+03
+1.8873022e+05 8.8353686e+01 -2.2540151e+03
+1.4569568e+05 6.6328747e+01 -9.2525973e+02
+9.1726545e+04 3.5221481e+01 -2.1138584e+02
+4.0011720e+04 1.0392183e+01 -9.1240668e+00
+4.4959125e+03 7.6543262e-01 -7.4406407e-01
+3.8007564e+02 6.9212632e-02 -5.9144219e-02
+2.8042703e+01 6.7395259e-03 -3.7595166e-03
+1.7169971e+00 5.5571994e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2519980e-01 2.2326703e-05 -3.3293871e-04
+4.4304070e+00 -3.9385668e-05 -6.5274443e-03
+4.6492478e+01 -4.5961178e-03 -1.0316298e-01
+3.9212939e+02 -8.3254571e-02 -1.4947973e+00
+2.2430372e+03 -9.1028328e-01 -2.0597339e+01
+5.1447645e+03 -2.8254843e+00 -8.0545612e+01
+8.2298226e+03 -4.8604765e+00 -1.8201744e+02
+1.0748645e+04 -5.6589067e+00 -2.9839814e+02
+1.2392986e+04 -4.6028967e+00 -3.9233546e+02
+1.3244332e+04 -2.0339862e+00 -4.3435877e+02
+1.3506350e+04 1.1104248e+00 -4.1363641e+02
+1.3277885e+04 3.7846471e+00 -3.3946640e+02
+1.2465693e+04 5.2169262e+00 -2.3597049e+02
+1.0854983e+04 5.1320307e+00 -1.3290425e+02
+8.3405984e+03 3.8167749e+00 -5.5135925e+01
+5.2211415e+03 2.0190797e+00 -1.3551169e+01
+2.2713577e+03 6.2453186e-01 -1.1098434e+00
+3.9582547e+02 7.0153644e-02 -9.7358920e-02
+4.6834691e+01 7.1501565e-03 -8.4871246e-03
+4.4567336e+00 7.4052222e-04 -5.9726570e-04
+3.2680957e-01 6.5856655e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.6598615e-02 4.4908579e-07 -8.1184013e-05
+5.3903219e-01 -2.1848811e-05 -1.2563000e-03
+4.5512273e+00 -4.9727528e-04 -1.5028930e-02
+2.9680758e+01 -6.1365898e-03 -1.5726234e-01
+1.3000329e+02 -4.7070833e-02 -1.3329350e+00
+2.9290912e+02 -1.3952029e-01 -4.8144832e+00
+4.6963241e+02 -2.4000971e-01 -1.0704598e+01
+6.1592830e+02 -2.8173437e-01 -1.7516473e+01
+7.1259865e+02 -2.3096531e-01 -2.3057733e+01
+7.6313164e+02 -1.0278096e-01 -2.5553625e+01
+7.7873133e+02 5.5642175e-02 -2.4333713e+01
+7.6498268e+02 1.9042253e-01 -1.9948682e+01
+7.1660082e+02 2.6171898e-01 -1.3849374e+01
+6.2176625e+02 2.5593814e-01 -7.8131455e+00
+4.7571804e+02 1.8901866e-01 -3.2924708e+00
+2.9717924e+02 1.0003157e-01 -8.7407004e-01
+1.3173990e+02 3.2370337e-02 -1.0705096e-01
+3.0009540e+01 4.7585394e-03 -1.1290000e-02
+4.5930908e+00 5.5869275e-04 -1.0980822e-03
+5.4320223e-01 6.1929999e-05 -8.3681313e-05
+4.6909125e-02 5.7906299e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.6636842e-03 0.0000000e+00 -1.0713505e-05
+4.7547166e-02 0.0000000e+00 -1.4440701e-04
+3.4071752e-01 0.0000000e+00 -1.4437267e-03
+1.8510717e+00 0.0000000e+00 -1.2086368e-02
+6.8634073e+00 0.0000000e+00 -7.7100330e-02
+1.5088158e+01 0.0000000e+00 -2.5932235e-01
+2.4171046e+01 0.0000000e+00 -5.6626495e-01
+3.1798780e+01 0.0000000e+00 -9.2340481e-01
+3.6902206e+01 0.0000000e+00 -1.2158783e+00
+3.9596812e+01 0.0000000e+00 -1.3483921e+00
+4.0431691e+01 0.0000000e+00 -1.2840372e+00
+3.9688591e+01 0.0000000e+00 -1.0519628e+00
+3.7100478e+01 0.0000000e+00 -7.3008168e-01
+3.2087776e+01 0.0000000e+00 -4.1321380e-01
+2.4473213e+01 0.0000000e+00 -1.7718130e-01
+1.5304240e+01 0.0000000e+00 -5.0386278e-02
+6.9581418e+00 0.0000000e+00 -7.9372346e-03
+1.8735603e+00 0.0000000e+00 -9.9155639e-04
+3.4429549e-01 0.0000000e+00 -1.0773303e-04
+4.7979008e-02 0.0000000e+00 -8.8257874e-06
+4.7009688e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.6765131e-03 -8.3319452e-07 -1.1995655e-05
+4.7675837e-02 2.2476633e-05 -1.6314366e-04
+3.4164009e-01 5.5576473e-04 -1.6414840e-03
+1.8562424e+00 6.9627052e-03 -1.3774847e-02
+6.8838686e+00 5.3484577e-02 -8.7720642e-02
+1.5136190e+01 1.5641769e-01 -2.9217024e-01
+2.4244630e+01 2.6288678e-01 -6.2864096e-01
+3.1878820e+01 2.9756372e-01 -1.0062448e+00
+3.6963807e+01 2.2892528e-01 -1.2967712e+00
+3.9622207e+01 8.2498969e-02 -1.4046652e+00
+4.0416666e+01 -8.4579485e-02 -1.3050605e+00
+3.9641757e+01 -2.1527521e-01 -1.0429513e+00
+3.7038255e+01 -2.7409341e-01 -7.0663464e-01
+3.2027925e+01 -2.5557163e-01 -3.9121246e-01
+2.4428843e+01 -1.8219808e-01 -1.6464425e-01
+1.5279818e+01 -9.4006334e-02 -4.6216581e-02
+6.9492445e+00 -3.0037020e-02 -7.2822634e-03
+1.8717183e+00 -4.5222281e-03 -9.1801110e-04
+3.4404011e-01 -5.6135545e-04 -1.0127880e-04
+4.7952782e-02 -6.6622131e-05 -8.4305156e-06
+4.6990832e-03 -6.5449209e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.6717290e-02 -3.0284351e-05 -8.9223993e-05
+5.4036744e-01 3.1458413e-06 -1.4051495e-03
+4.5623929e+00 5.0193310e-03 -1.7034352e-02
+2.9755789e+01 9.4388750e-02 -1.7949059e-01
+1.3036133e+02 1.0392813e+00 -1.5233347e+00
+2.9380822e+02 3.1818932e+00 -5.4479130e+00
+4.7103377e+02 5.3428270e+00 -1.1929214e+01
+6.1745542e+02 5.9885388e+00 -1.9147308e+01
+7.1377084e+02 4.5574754e+00 -2.4648051e+01
+7.6361216e+02 1.6116231e+00 -2.6657688e+01
+7.7844342e+02 -1.7091622e+00 -2.4745194e+01
+7.6409124e+02 -4.2978563e+00 -1.9771171e+01
+7.1541715e+02 -5.4722835e+00 -1.3389306e+01
+6.2062798e+02 -5.1229995e+00 -7.3836149e+00
+4.7487730e+02 -3.6725864e+00 -3.0524829e+00
+2.9672515e+02 -1.8923823e+00 -8.0001163e-01
+1.3158649e+02 -5.7789336e-01 -9.8744666e-02
+2.9984512e+01 -6.7622217e-02 -1.0616191e-02
+4.5904041e+00 -7.4325462e-03 -1.0583278e-03
+5.4298756e-01 -8.2787554e-04 -8.2409526e-05
+4.6897027e-02 -7.6857282e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.2595831e-01 -4.4915134e-04 -3.3964128e-04
+4.4402836e+00 -3.1873510e-03 -7.0257547e-03
+4.6593130e+01 1.2578870e-02 -1.1523701e-01
+3.9299512e+02 8.1719121e-01 -1.7037668e+00
+2.2485904e+03 1.7449492e+01 -2.3667229e+01
+5.1599272e+03 5.5960554e+01 -9.1608576e+01
+8.2538536e+03 9.3445396e+01 -2.0374208e+02
+1.0774841e+04 1.0340181e+02 -3.2735101e+02
+1.2413021e+04 7.7668483e+01 -4.2049657e+02
+1.3252496e+04 2.6807814e+01 -4.5385689e+02
+1.3501404e+04 -2.9738159e+01 -4.2088232e+02
+1.3262663e+04 -7.3644660e+01 -3.3631336e+02
+1.2445483e+04 -9.3746100e+01 -2.2782947e+02
+1.0835538e+04 -8.8178243e+01 -1.2532927e+02
+8.3262723e+03 -6.3698490e+01 -5.0977331e+01
+5.2135500e+03 -3.2909268e+01 -1.2368964e+01
+2.2690321e+03 -9.5816565e+00 -1.0396123e+00
+3.9557656e+02 -7.6338743e-01 -9.4929411e-02
+4.6817186e+01 -7.6266729e-02 -8.5898882e-03
+4.4558507e+00 -7.9149900e-03 -6.1981068e-04
+3.2678414e-01 -6.7123363e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7154982e+00 -4.4209265e-03 2.7293520e-04
+2.7992681e+01 -5.2888071e-02 -6.3867410e-03
+3.7892265e+02 -3.6016435e-01 -3.4844290e-01
+4.4735311e+03 2.2188032e+00 -1.0010690e+01
+3.9639759e+04 2.9266688e+02 -3.7058382e+02
+9.0615282e+04 9.7371135e+02 -1.5443120e+03
+1.4409911e+05 1.6081236e+03 -3.4697624e+03
+1.8725465e+05 1.7545557e+03 -5.5678791e+03
+2.1502776e+05 1.3003108e+03 -7.1308014e+03
+2.2915662e+05 4.3694679e+02 -7.6786400e+03
+2.3333899e+05 -5.0998976e+02 -7.1137788e+03
+2.2936229e+05 -1.2423441e+03 -5.6865261e+03
+2.1565305e+05 -1.5804858e+03 -3.8565304e+03
+1.8839959e+05 -1.4934034e+03 -2.1206762e+03
+1.4545227e+05 -1.0880455e+03 -8.5292019e+02
+9.1599523e+04 -5.6649934e+02 -1.9230825e+02
+3.9977094e+04 -1.5826389e+02 -8.9999133e+00
+4.4944044e+03 -7.4692978e+00 -7.8589979e-01
+3.8003652e+02 -7.5839119e-01 -6.4660986e-02
+2.8043561e+01 -6.9262175e-02 -4.1718360e-03
+1.7171918e+00 -5.0377700e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.1311841e+00 -2.9302106e-02 1.2215884e-02
+1.1755105e+02 -5.1361889e-01 2.4999102e-01
+2.0576204e+03 -8.0766927e+00 4.4652161e+00
+3.6857817e+04 -1.2848150e+02 8.0224376e+01
+5.6478442e+05 -3.8970042e+02 -1.9348463e+03
+1.4408630e+06 -1.9892522e+02 -8.5954488e+03
+2.3768061e+06 -4.5740438e+01 -1.9344809e+04
+3.0737314e+06 -3.2237619e+02 -3.0943435e+04
+3.4527597e+06 -1.1414054e+03 -3.9545239e+04
+3.5997435e+06 -2.2948861e+03 -4.2587721e+04
+3.6326892e+06 -3.4077885e+03 -3.9566417e+04
+3.6046578e+06 -4.1242116e+03 -3.1820166e+04
+3.4686780e+06 -4.2353490e+03 -2.1802494e+04
+3.1037794e+06 -3.7330233e+03 -1.2193021e+04
+2.4127020e+06 -2.7963701e+03 -5.0552586e+03
+1.4665798e+06 -1.7209247e+03 -1.2250199e+03
+5.7212571e+05 -8.1116978e+02 -1.2427268e+02
+3.6888434e+04 -1.3212057e+02 -7.4404305e+00
+2.0583993e+03 -8.2549215e+00 -4.4294378e-01
+1.1753405e+02 -5.2017713e-01 -2.2738193e-02
+6.1270749e+00 -2.9430825e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3006551e+01 -9.0486335e-02 3.4422378e-02
+2.5433148e+02 -1.7122958e+00 7.3750708e-01
+4.5010935e+03 -2.9296674e+01 1.3689327e+01
+7.9593511e+04 -5.0319663e+02 2.5023399e+02
+1.2636690e+06 -2.4829408e+03 -3.6110332e+03
+3.0265187e+06 -3.8899662e+03 -1.5939434e+04
+4.8989366e+06 -5.3709465e+03 -3.5628148e+04
+6.3185548e+06 -7.1032500e+03 -5.6774067e+04
+7.1295704e+06 -9.0866141e+03 -7.2471025e+04
+7.4761441e+06 -1.1031367e+04 -7.8145491e+04
+7.5626615e+06 -1.2475713e+04 -7.2878641e+04
+7.4816288e+06 -1.2990308e+04 -5.9009010e+04
+7.1521347e+06 -1.2346482e+04 -4.0870312e+04
+6.3651224e+06 -1.0601774e+04 -2.3260436e+04
+4.9562584e+06 -8.0914259e+03 -9.9648325e+03
+3.0670859e+06 -5.3275400e+03 -2.6338636e+03
+1.2733367e+06 -2.8420088e+03 -3.5720014e+02
+7.9530931e+04 -4.9802315e+02 -2.0398552e+01
+4.4960745e+03 -2.8944503e+01 -1.1541125e+00
+2.5394475e+02 -1.6877354e+00 -5.6523928e-02
+1.2981177e+01 -8.8965337e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0335884e+01 -1.6854034e-01 4.0391286e-02
+3.9735174e+02 -3.2504444e+00 8.7576345e-01
+7.0041220e+03 -5.6548511e+01 1.6328993e+01
+1.2295223e+05 -9.8168263e+02 2.9714365e+02
+1.9853811e+06 -5.1455295e+03 -5.6137463e+03
+4.6666836e+06 -8.6165350e+03 -2.4066878e+04
+7.4948482e+06 -1.2206451e+04 -5.3286798e+04
+9.6330393e+06 -1.5785827e+04 -8.4497822e+04
+1.0857352e+07 -1.9181865e+04 -1.0760603e+05
+1.1385174e+07 -2.2014086e+04 -1.1600721e+05
+1.1517831e+07 -2.3759829e+04 -1.0839283e+05
+1.1390893e+07 -2.3950387e+04 -8.8122167e+04
+1.0886244e+07 -2.2359024e+04 -6.1431386e+04
+9.6962517e+06 -1.9113014e+04 -3.5294237e+04
+7.5741683e+06 -1.4701012e+04 -1.5328004e+04
+4.7225286e+06 -9.8641641e+03 -4.1205597e+03
+1.9971986e+06 -5.4104223e+03 -4.7981403e+02
+1.2276367e+05 -9.6529113e+02 -2.7740866e+01
+6.9909069e+03 -5.5501164e+01 -1.5794395e+00
+3.9643723e+02 -3.1837233e+00 -7.7469585e-02
+2.0280305e+01 -1.6474591e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6410626e+01 -2.1257616e-01 6.0155606e-03
+5.1452431e+02 -4.1146364e+00 1.7010944e-01
+9.0351160e+03 -7.1705411e+01 3.7636030e+00
+1.5798733e+05 -1.2437637e+03 7.5668007e+01
+2.5231571e+06 -6.6158986e+03 -7.7392625e+03
+5.9432404e+06 -1.1273170e+04 -3.1808265e+04
+9.5248382e+06 -1.6055767e+04 -6.9657966e+04
+1.2197307e+07 -2.0612683e+04 -1.0985520e+05
+1.3696551e+07 -2.4659856e+04 -1.3947199e+05
+1.4323410e+07 -2.7801783e+04 -1.5017484e+05
+1.4475664e+07 -2.9547285e+04 -1.4037324e+05
+1.4330142e+07 -2.9466462e+04 -1.1433815e+05
+1.3732605e+07 -2.7362747e+04 -7.9956699e+04
+1.2277448e+07 -2.3389225e+04 -4.6104478e+04
+9.6260885e+06 -1.8073280e+04 -2.0044429e+04
+6.0146034e+06 -1.2227683e+04 -5.2553408e+03
+2.5378408e+06 -6.7776660e+03 -3.3548051e+02
+1.5771075e+05 -1.2199815e+03 -2.0032546e+01
+9.0156532e+03 -7.0199708e+01 -1.1742766e+00
+5.1317944e+02 -4.0200407e+00 -5.8930645e-02
+2.6329219e+01 -2.0727975e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0506871e+01 -1.7998823e-01 -6.1260452e-02
+5.9292328e+02 -3.4825840e+00 -1.2027007e+00
+1.0385315e+04 -6.0601565e+01 -2.0369772e+01
+1.8119462e+05 -1.0485398e+03 -3.4217675e+02
+2.8288293e+06 -5.5999593e+03 -9.6690503e+03
+6.7367480e+06 -9.5983561e+03 -3.8152464e+04
+1.0804344e+07 -1.3685290e+04 -8.2701487e+04
+1.3792319e+07 -1.7504725e+04 -1.2976899e+05
+1.5422180e+07 -2.0799710e+04 -1.6425981e+05
+1.6072366e+07 -2.3272606e+04 -1.7658012e+05
+1.6221782e+07 -2.4574234e+04 -1.6498251e+05
+1.6080850e+07 -2.4402314e+04 -1.3445128e+05
+1.5465553e+07 -2.2621441e+04 -9.4116098e+04
+1.3887886e+07 -1.9351766e+04 -5.4284492e+04
+1.0925039e+07 -1.4997059e+04 -2.3482210e+04
+6.8221533e+06 -1.0191030e+04 -5.8972834e+03
+2.8468559e+06 -5.6772477e+03 1.5833777e+01
+1.8088726e+05 -1.0271721e+03 -1.2204388e-01
+1.0363089e+04 -5.9252045e+01 -6.5028797e-02
+5.9135699e+02 -3.3981004e+00 -5.6496609e-03
+3.0410801e+01 -1.7527808e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2717397e+01 -7.0608516e-02 -1.2671465e-01
+6.3503986e+02 -1.3651717e+00 -2.5281988e+00
+1.1108306e+04 -2.3726131e+01 -4.3443732e+01
+1.9361201e+05 -4.0984782e+02 -7.3752915e+02
+2.9620262e+06 -2.1909722e+03 -1.1029250e+04
+7.1318208e+06 -3.7625656e+03 -4.2305029e+04
+1.1454519e+07 -5.3650673e+03 -9.1047117e+04
+1.4591645e+07 -6.8508078e+03 -1.4235776e+05
+1.6263564e+07 -8.1174344e+03 -1.7980071e+05
+1.6902978e+07 -9.0547913e+03 -1.9303471e+05
+1.7042151e+07 -9.5368886e+03 -1.8024789e+05
+1.6913111e+07 -9.4550131e+03 -1.4687848e+05
+1.6312528e+07 -8.7606315e+03 -1.0281902e+05
+1.4698181e+07 -7.4986429e+03 -5.9253180e+04
+1.1588775e+07 -5.8196298e+03 -2.5487794e+04
+7.2271639e+06 -3.9625824e+03 -6.1585728e+03
+2.9827975e+06 -2.2122929e+03 3.6597037e+02
+1.9330832e+05 -4.0125636e+02 2.0068681e+01
+1.1085688e+04 -2.3183902e+01 1.0795840e+00
+6.3341131e+02 -1.3312588e+00 5.0155354e-02
+3.2616019e+01 -6.8720040e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3397624e+01 7.0608515e-02 -1.5361067e-01
+6.4797790e+02 1.3651716e+00 -3.0706306e+00
+1.1330259e+04 2.3726131e+01 -5.2839363e+01
+1.9742833e+05 4.0984780e+02 -8.9769310e+02
+2.9964601e+06 2.1909720e+03 -1.1520510e+04
+7.2471676e+06 3.7625652e+03 -4.3749295e+04
+1.1647557e+07 5.3650669e+03 -9.3913665e+04
+1.4826664e+07 6.8508076e+03 -1.4665238e+05
+1.6505843e+07 8.1174381e+03 -1.8507712e+05
+1.7137164e+07 9.0547942e+03 -1.9860101e+05
+1.7271392e+07 9.5368894e+03 -1.8539691e+05
+1.7147965e+07 9.4550084e+03 -1.5105891e+05
+1.6556903e+07 8.7606299e+03 -1.0573602e+05
+1.4937179e+07 7.4986445e+03 -6.0905520e+04
+1.1786686e+07 5.8196302e+03 -2.6137227e+04
+7.3461086e+06 3.9625823e+03 -6.2188439e+03
+3.0182925e+06 2.2122926e+03 5.1007894e+02
+1.9713055e+05 4.0125640e+02 2.8438458e+01
+1.1307785e+04 2.3183904e+01 1.5575073e+00
+6.4634442e+02 1.3312589e+00 7.3602968e-02
+3.3295285e+01 6.8720042e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2717397e+01 1.7998823e-01 -1.2671466e-01
+6.3503986e+02 3.4825840e+00 -2.5281987e+00
+1.1108306e+04 6.0601565e+01 -4.3443734e+01
+1.9361201e+05 1.0485398e+03 -7.3752920e+02
+2.9620262e+06 5.5999587e+03 -1.1029251e+04
+7.1318208e+06 9.5983562e+03 -4.2305028e+04
+1.1454519e+07 1.3685290e+04 -9.1047116e+04
+1.4591645e+07 1.7504726e+04 -1.4235776e+05
+1.6263564e+07 2.0799715e+04 -1.7980071e+05
+1.6902978e+07 2.3272606e+04 -1.9303471e+05
+1.7042151e+07 2.4574232e+04 -1.8024789e+05
+1.6913111e+07 2.4402316e+04 -1.4687848e+05
+1.6312528e+07 2.2621441e+04 -1.0281902e+05
+1.4698181e+07 1.9351766e+04 -5.9253179e+04
+1.1588775e+07 1.4997058e+04 -2.5487795e+04
+7.2271639e+06 1.0191029e+04 -6.1585729e+03
+2.9827975e+06 5.6772475e+03 3.6597055e+02
+1.9330832e+05 1.0271720e+03 2.0068678e+01
+1.1085688e+04 5.9252044e+01 1.0795839e+00
+6.3341131e+02 3.3981004e+00 5.0155344e-02
+3.2616019e+01 1.7527807e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0506871e+01 2.1257615e-01 -6.1260445e-02
+5.9292328e+02 4.1146364e+00 -1.2027007e+00
+1.0385315e+04 7.1705411e+01 -2.0369777e+01
+1.8119462e+05 1.2437637e+03 -3.4217685e+02
+2.8288293e+06 6.6158991e+03 -9.6690499e+03
+6.7367480e+06 1.1273169e+04 -3.8152464e+04
+1.0804344e+07 1.6055766e+04 -8.2701485e+04
+1.3792319e+07 2.0612681e+04 -1.2976898e+05
+1.5422180e+07 2.4659852e+04 -1.6425982e+05
+1.6072366e+07 2.7801782e+04 -1.7658013e+05
+1.6221782e+07 2.9547286e+04 -1.6498251e+05
+1.6080850e+07 2.9466463e+04 -1.3445128e+05
+1.5465553e+07 2.7362747e+04 -9.4116099e+04
+1.3887886e+07 2.3389226e+04 -5.4284491e+04
+1.0925039e+07 1.8073279e+04 -2.3482209e+04
+6.8221533e+06 1.2227682e+04 -5.8972825e+03
+2.8468559e+06 6.7776659e+03 1.5833751e+01
+1.8088726e+05 1.2199816e+03 -1.2204523e-01
+1.0363089e+04 7.0199707e+01 -6.5028824e-02
+5.9135699e+02 4.0200407e+00 -5.6496719e-03
+3.0410801e+01 2.0727975e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6410626e+01 1.6854034e-01 6.0155683e-03
+5.1452431e+02 3.2504444e+00 1.7010950e-01
+9.0351160e+03 5.6548509e+01 3.7636052e+00
+1.5798733e+05 9.8168260e+02 7.5667999e+01
+2.5231571e+06 5.1455295e+03 -7.7392632e+03
+5.9432404e+06 8.6165349e+03 -3.1808264e+04
+9.5248382e+06 1.2206450e+04 -6.9657966e+04
+1.2197307e+07 1.5785827e+04 -1.0985520e+05
+1.3696551e+07 1.9181864e+04 -1.3947200e+05
+1.4323410e+07 2.2014086e+04 -1.5017484e+05
+1.4475664e+07 2.3759831e+04 -1.4037324e+05
+1.4330142e+07 2.3950388e+04 -1.1433816e+05
+1.3732605e+07 2.2359027e+04 -7.9956701e+04
+1.2277448e+07 1.9113013e+04 -4.6104476e+04
+9.6260885e+06 1.4701013e+04 -2.0044429e+04
+6.0146034e+06 9.8641652e+03 -5.2553405e+03
+2.5378408e+06 5.4104228e+03 -3.3548029e+02
+1.5771075e+05 9.6529110e+02 -2.0032552e+01
+9.0156532e+03 5.5501163e+01 -1.1742766e+00
+5.1317944e+02 3.1837233e+00 -5.8930651e-02
+2.6329219e+01 1.6474591e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0335884e+01 9.0486334e-02 4.0391282e-02
+3.9735174e+02 1.7122958e+00 8.7576342e-01
+7.0041220e+03 2.9296674e+01 1.6328995e+01
+1.2295223e+05 5.0319663e+02 2.9714365e+02
+1.9853811e+06 2.4829408e+03 -5.6137464e+03
+4.6666836e+06 3.8899665e+03 -2.4066878e+04
+7.4948482e+06 5.3709469e+03 -5.3286797e+04
+9.6330393e+06 7.1032507e+03 -8.4497822e+04
+1.0857352e+07 9.0866141e+03 -1.0760603e+05
+1.1385174e+07 1.1031367e+04 -1.1600721e+05
+1.1517831e+07 1.2475713e+04 -1.0839283e+05
+1.1390893e+07 1.2990307e+04 -8.8122167e+04
+1.0886244e+07 1.2346481e+04 -6.1431387e+04
+9.6962517e+06 1.0601775e+04 -3.5294237e+04
+7.5741683e+06 8.0914253e+03 -1.5328004e+04
+4.7225286e+06 5.3275404e+03 -4.1205586e+03
+1.9971986e+06 2.8420085e+03 -4.7981407e+02
+1.2276367e+05 4.9802314e+02 -2.7740868e+01
+6.9909069e+03 2.8944502e+01 -1.5794395e+00
+3.9643723e+02 1.6877353e+00 -7.7469555e-02
+2.0280305e+01 8.8965331e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3006551e+01 2.9302107e-02 3.4422372e-02
+2.5433148e+02 5.1361890e-01 7.3750721e-01
+4.5010935e+03 8.0766925e+00 1.3689328e+01
+7.9593511e+04 1.2848150e+02 2.5023398e+02
+1.2636690e+06 3.8970044e+02 -3.6110332e+03
+3.0265187e+06 1.9892525e+02 -1.5939434e+04
+4.8989366e+06 4.5740247e+01 -3.5628148e+04
+6.3185548e+06 3.2237594e+02 -5.6774068e+04
+7.1295704e+06 1.1414053e+03 -7.2471025e+04
+7.4761441e+06 2.2948865e+03 -7.8145491e+04
+7.5626615e+06 3.4077883e+03 -7.2878641e+04
+7.4816288e+06 4.1242129e+03 -5.9009010e+04
+7.1521347e+06 4.2353486e+03 -4.0870312e+04
+6.3651224e+06 3.7330231e+03 -2.3260437e+04
+4.9562584e+06 2.7963698e+03 -9.9648322e+03
+3.0670859e+06 1.7209243e+03 -2.6338636e+03
+1.2733367e+06 8.1116975e+02 -3.5720012e+02
+7.9530931e+04 1.3212057e+02 -2.0398552e+01
+4.4960745e+03 8.2549215e+00 -1.1541125e+00
+2.5394475e+02 5.2017713e-01 -5.6523926e-02
+1.2981177e+01 2.9430826e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.1311841e+00 4.4209260e-03 1.2215882e-02
+1.1755105e+02 5.2888070e-02 2.4999102e-01
+2.0576204e+03 3.6016435e-01 4.4652162e+00
+3.6857816e+04 -2.2188045e+00 8.0224382e+01
+5.6478442e+05 -2.9266688e+02 -1.9348463e+03
+1.4408630e+06 -9.7371137e+02 -8.5954488e+03
+2.3768061e+06 -1.6081236e+03 -1.9344809e+04
+3.0737314e+06 -1.7545557e+03 -3.0943435e+04
+3.4527597e+06 -1.3003108e+03 -3.9545239e+04
+3.5997435e+06 -4.3694704e+02 -4.2587721e+04
+3.6326892e+06 5.0998966e+02 -3.9566417e+04
+3.6046578e+06 1.2423438e+03 -3.1820166e+04
+3.4686780e+06 1.5804858e+03 -2.1802494e+04
+3.1037794e+06 1.4934035e+03 -1.2193021e+04
+2.4127020e+06 1.0880455e+03 -5.0552587e+03
+1.4665798e+06 5.6649935e+02 -1.2250199e+03
+5.7212571e+05 1.5826389e+02 -1.2427268e+02
+3.6888434e+04 7.4692986e+00 -7.4404303e+00
+2.0583993e+03 7.5839123e-01 -4.4294377e-01
+1.1753405e+02 6.9262173e-02 -2.2738190e-02
+6.1270749e+00 5.0377697e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7154982e+00 4.4915135e-04 2.7293550e-04
+2.7992681e+01 3.1873506e-03 -6.3867456e-03
+3.7892265e+02 -1.2578867e-02 -3.4844296e-01
+4.4735311e+03 -8.1719118e-01 -1.0010689e+01
+3.9639759e+04 -1.7449493e+01 -3.7058382e+02
+9.0615282e+04 -5.5960555e+01 -1.5443120e+03
+1.4409911e+05 -9.3445396e+01 -3.4697624e+03
+1.8725465e+05 -1.0340181e+02 -5.5678791e+03
+2.1502776e+05 -7.7668490e+01 -7.1308015e+03
+2.2915662e+05 -2.6807808e+01 -7.6786400e+03
+2.3333899e+05 2.9738182e+01 -7.1137788e+03
+2.2936229e+05 7.3644670e+01 -5.6865261e+03
+2.1565305e+05 9.3746090e+01 -3.8565304e+03
+1.8839959e+05 8.8178237e+01 -2.1206762e+03
+1.4545227e+05 6.3698493e+01 -8.5292019e+02
+9.1599523e+04 3.2909268e+01 -1.9230825e+02
+3.9977094e+04 9.5816566e+00 -8.9999127e+00
+4.4944044e+03 7.6338743e-01 -7.8589980e-01
+3.8003652e+02 7.6266730e-02 -6.4660991e-02
+2.8043561e+01 7.9149896e-03 -4.1718355e-03
+1.7171918e+00 6.7123361e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2595831e-01 3.0284355e-05 -3.3964127e-04
+4.4402836e+00 -3.1457551e-06 -7.0257547e-03
+4.6593130e+01 -5.0193303e-03 -1.1523701e-01
+3.9299512e+02 -9.4388736e-02 -1.7037668e+00
+2.2485904e+03 -1.0392813e+00 -2.3667228e+01
+5.1599272e+03 -3.1818929e+00 -9.1608576e+01
+8.2538536e+03 -5.3428270e+00 -2.0374208e+02
+1.0774841e+04 -5.9885394e+00 -3.2735102e+02
+1.2413021e+04 -4.5574753e+00 -4.2049657e+02
+1.3252496e+04 -1.6116230e+00 -4.5385689e+02
+1.3501404e+04 1.7091615e+00 -4.2088232e+02
+1.3262663e+04 4.2978563e+00 -3.3631336e+02
+1.2445483e+04 5.4722839e+00 -2.2782946e+02
+1.0835538e+04 5.1229991e+00 -1.2532927e+02
+8.3262723e+03 3.6725862e+00 -5.0977332e+01
+5.2135500e+03 1.8923822e+00 -1.2368964e+01
+2.2690321e+03 5.7789337e-01 -1.0396123e+00
+3.9557656e+02 6.7622214e-02 -9.4929407e-02
+4.6817186e+01 7.4325468e-03 -8.5898894e-03
+4.4558507e+00 8.2787572e-04 -6.1981060e-04
+3.2678414e-01 7.6857286e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.6717290e-02 8.3319453e-07 -8.9223989e-05
+5.4036744e-01 -2.2476630e-05 -1.4051495e-03
+4.5623929e+00 -5.5576467e-04 -1.7034351e-02
+2.9755788e+01 -6.9627051e-03 -1.7949060e-01
+1.3036133e+02 -5.3484573e-02 -1.5233347e+00
+2.9380822e+02 -1.5641769e-01 -5.4479131e+00
+4.7103377e+02 -2.6288679e-01 -1.1929214e+01
+6.1745542e+02 -2.9756371e-01 -1.9147308e+01
+7.1377084e+02 -2.2892528e-01 -2.4648051e+01
+7.6361216e+02 -8.2498972e-02 -2.6657688e+01
+7.7844342e+02 8.4579456e-02 -2.4745194e+01
+7.6409124e+02 2.1527521e-01 -1.9771171e+01
+7.1541715e+02 2.7409338e-01 -1.3389306e+01
+6.2062798e+02 2.5557168e-01 -7.3836149e+00
+4.7487730e+02 1.8219810e-01 -3.0524829e+00
+2.9672515e+02 9.4006340e-02 -8.0001163e-01
+1.3158649e+02 3.0037021e-02 -9.8744665e-02
+2.9984512e+01 4.5222282e-03 -1.0616190e-02
+4.5904041e+00 5.6135549e-04 -1.0583278e-03
+5.4298756e-01 6.6622123e-05 -8.2409525e-05
+4.6897027e-02 6.5449204e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.6765131e-03 0.0000000e+00 -1.1995655e-05
+4.7675837e-02 0.0000000e+00 -1.6314366e-04
+3.4164009e-01 0.0000000e+00 -1.6414840e-03
+1.8562424e+00 0.0000000e+00 -1.3774847e-02
+6.8838685e+00 0.0000000e+00 -8.7720642e-02
+1.5136190e+01 0.0000000e+00 -2.9217025e-01
+2.4244630e+01 0.0000000e+00 -6.2864096e-01
+3.1878820e+01 0.0000000e+00 -1.0062448e+00
+3.6963807e+01 0.0000000e+00 -1.2967712e+00
+3.9622207e+01 0.0000000e+00 -1.4046652e+00
+4.0416666e+01 0.0000000e+00 -1.3050605e+00
+3.9641757e+01 0.0000000e+00 -1.0429513e+00
+3.7038255e+01 0.0000000e+00 -7.0663462e-01
+3.2027925e+01 0.0000000e+00 -3.9121247e-01
+2.4428843e+01 0.0000000e+00 -1.6464425e-01
+1.5279818e+01 0.0000000e+00 -4.6216581e-02
+6.9492445e+00 0.0000000e+00 -7.2822635e-03
+1.8717183e+00 0.0000000e+00 -9.1801101e-04
+3.4404011e-01 0.0000000e+00 -1.0127882e-04
+4.7952782e-02 0.0000000e+00 -8.4305152e-06
+4.6990832e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.6909467e-03 -1.1424596e-06 -1.3291144e-05
+4.7820955e-02 2.3651735e-05 -1.8206083e-04
+3.4268229e-01 6.1651283e-04 -1.8407691e-03
+1.8620806e+00 7.7936601e-03 -1.5472661e-02
+6.9068743e+00 5.9903761e-02 -9.8382161e-02
+1.5189584e+01 1.7326589e-01 -3.2504273e-01
+2.4324831e+01 2.8544666e-01 -6.9069054e-01
+3.1963331e+01 3.1262998e-01 -1.0878320e+00
+3.7025229e+01 2.2581918e-01 -1.3750729e+00
+3.9642983e+01 6.1308099e-02 -1.4571575e+00
+4.0395148e+01 -1.1379834e-01 -1.3218412e+00
+3.9589700e+01 -2.3962602e-01 -1.0301589e+00
+3.6974027e+01 -2.8542411e-01 -6.8050678e-01
+3.1969223e+01 -2.5407116e-01 -3.6773346e-01
+2.4387141e+01 -1.7452489e-01 -1.5150721e-01
+1.5257721e+01 -8.7525974e-02 -4.1884058e-02
+6.9415038e+00 -2.7542193e-02 -6.6011557e-03
+1.8702122e+00 -4.2542734e-03 -8.4081918e-04
+3.4385262e-01 -5.5900497e-04 -9.4328649e-05
+4.7937045e-02 -7.0608614e-05 -7.9835466e-06
+4.6983226e-03 -7.2229532e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.6850916e-02 -3.7286803e-05 -9.7481543e-05
+5.4187574e-01 -2.4992066e-05 -1.5571321e-03
+4.5750380e+00 5.4843008e-03 -1.9070027e-02
+2.9840805e+01 1.0565050e-01 -2.0194296e-01
+1.3076571e+02 1.1686960e+00 -1.7151166e+00
+2.9481202e+02 3.5383310e+00 -6.0839822e+00
+4.7256689e+02 5.8200402e+00 -1.3151696e+01
+6.1907238e+02 6.3033931e+00 -2.0759417e+01
+7.1494091e+02 4.4900500e+00 -2.6193719e+01
+7.6400306e+02 1.1695046e+00 -2.7692817e+01
+7.7802907e+02 -2.3153194e+00 -2.5076945e+01
+7.6309823e+02 -4.8023493e+00 -1.9521213e+01
+7.1419495e+02 -5.7072692e+00 -1.2877173e+01
+6.1951301e+02 -5.0910814e+00 -6.9251903e+00
+4.7408932e+02 -3.5108734e+00 -2.8008661e+00
+2.9631601e+02 -1.7562837e+00 -7.2297010e-01
+1.3145405e+02 -5.2802391e-01 -9.0046811e-02
+2.9964680e+01 -6.4577097e-02 -9.8919486e-03
+4.5886090e+00 -7.6438986e-03 -1.0119417e-03
+5.4289160e-01 -9.0610624e-04 -8.0480488e-05
+4.6896263e-02 -8.6938877e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.2681261e-01 -5.4277082e-04 -3.4881965e-04
+4.4514551e+00 -3.9826403e-03 -7.5627281e-03
+4.6707422e+01 1.1372677e-02 -1.2774341e-01
+3.9398009e+02 9.0955773e-01 -1.9166218e+00
+2.2548964e+03 1.9717071e+01 -2.6771035e+01
+5.1769399e+03 6.2513736e+01 -1.0275915e+02
+8.2802556e+03 1.0217032e+02 -2.2551149e+02
+1.0802664e+04 1.0905502e+02 -3.5608581e+02
+1.2433041e+04 7.6371890e+01 -4.4798745e+02
+1.3259092e+04 1.8823099e+01 -4.7223702e+02
+1.3494239e+04 -4.0601796e+01 -4.2678580e+02
+1.3245660e+04 -8.2673468e+01 -3.3191209e+02
+1.2424605e+04 -9.7964590e+01 -2.1877688e+02
+1.0816518e+04 -8.7604119e+01 -1.1724384e+02
+8.3128884e+03 -6.0755893e+01 -4.6614876e+01
+5.2067445e+03 -3.0427809e+01 -1.1137827e+01
+2.2670456e+03 -8.7146726e+00 -9.6462141e-01
+3.9539411e+02 -7.5484529e-01 -9.1903122e-02
+4.6808791e+01 -8.2534271e-02 -8.6182106e-03
+4.4559613e+00 -8.9992572e-03 -6.3569007e-04
+3.2683996e-01 -7.7844955e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7196592e+00 -5.3271521e-03 6.2337059e-04
+2.8056439e+01 -6.4279627e-02 -2.8374581e-03
+3.7973588e+02 -4.5177394e-01 -3.5291469e-01
+4.4829684e+03 2.2355415e+00 -1.1116231e+01
+3.9737279e+04 3.3240232e+02 -4.2132139e+02
+9.0903984e+04 1.0929670e+03 -1.7404768e+03
+1.4455236e+05 1.7649933e+03 -3.8565473e+03
+1.8773079e+05 1.8539853e+03 -6.0776240e+03
+2.1536802e+05 1.2754059e+03 -7.6169133e+03
+2.2926686e+05 2.9461803e+02 -8.0029526e+03
+2.3321550e+05 -7.0196030e+02 -7.2180978e+03
+2.2907255e+05 -1.4016627e+03 -5.6093698e+03
+2.1529815e+05 -1.6552533e+03 -3.6971798e+03
+1.8807656e+05 -1.4834239e+03 -1.9783363e+03
+1.4522556e+05 -1.0353876e+03 -7.7700169e+02
+9.1486228e+04 -5.2170492e+02 -1.7242925e+02
+3.9947908e+04 -1.4313404e+02 -8.8234835e+00
+4.4936583e+03 -8.0117853e+00 -8.2044079e-01
+3.8007511e+02 -8.7215617e-01 -6.9404896e-02
+2.8051042e+01 -8.1357774e-02 -4.5268301e-03
+1.7178380e+00 -5.9514261e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.1453701e+00 -3.5366815e-02 1.5853620e-02
+1.1780253e+02 -6.2256826e-01 3.2266374e-01
+2.0616006e+03 -9.8386649e+00 5.7293084e+00
+3.6920769e+04 -1.5730351e+02 1.0231621e+02
+5.6787518e+05 -5.0350195e+02 -2.1525355e+03
+1.4497462e+06 -3.4524390e+02 -9.5975752e+03
+2.3906078e+06 -2.6734189e+02 -2.1366937e+04
+3.0885151e+06 -7.0281861e+02 -3.3593806e+04
+3.4641835e+06 -1.7298428e+03 -4.2012375e+04
+3.6052116e+06 -3.0577065e+03 -4.4128120e+04
+3.6319890e+06 -4.2403877e+03 -3.9889545e+04
+3.5994371e+06 -4.9024329e+03 -3.1168076e+04
+3.4614685e+06 -4.8687618e+03 -2.0745082e+04
+3.0970343e+06 -4.1925700e+03 -1.1290811e+04
+2.4080656e+06 -3.1066939e+03 -4.5830230e+03
+1.4645146e+06 -1.9259768e+03 -1.1135948e+03
+5.7195255e+05 -9.3896241e+02 -1.4460296e+02
+3.6903869e+04 -1.5947742e+02 -8.5725278e+00
+2.0593851e+03 -9.9245903e+00 -5.0589986e-01
+1.1759564e+02 -6.2306883e-01 -2.5784287e-02
+6.1304738e+00 -3.5134559e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3036195e+01 -1.0930943e-01 4.4298565e-02
+2.5488466e+02 -2.0764700e+00 9.4502136e-01
+4.5104006e+03 -3.5681001e+01 1.7480258e+01
+7.9750346e+04 -6.1553088e+02 3.1887185e+02
+1.2704635e+06 -3.0716065e+03 -3.9074906e+03
+3.0446795e+06 -4.8749285e+03 -1.7538578e+04
+4.9268583e+06 -6.8047984e+03 -3.8922778e+04
+6.3490190e+06 -9.0293416e+03 -6.1060441e+04
+7.1545950e+06 -1.1481752e+04 -7.6333117e+04
+7.4908356e+06 -1.3765546e+04 -8.0316748e+04
+7.5663408e+06 -1.5330276e+04 -7.2906151e+04
+7.4769172e+06 -1.5720557e+04 -5.7376355e+04
+7.1432640e+06 -1.4749091e+04 -3.8625332e+04
+6.3562742e+06 -1.2554917e+04 -2.1414810e+04
+4.9502951e+06 -9.5561154e+03 -9.0021381e+03
+3.0648844e+06 -6.3212838e+03 -2.4053558e+03
+1.2738227e+06 -3.4134728e+03 -4.1682938e+02
+7.9581572e+04 -6.0333451e+02 -2.3613979e+01
+4.4987719e+03 -3.4910772e+01 -1.3252131e+00
+2.5408782e+02 -2.0269157e+00 -6.4431371e-02
+1.2988049e+01 -1.0643816e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0376684e+01 -2.0363117e-01 5.3521693e-02
+3.9811939e+02 -3.9418083e+00 1.1512118e+00
+7.0171280e+03 -6.8861462e+01 2.1325635e+01
+1.2317211e+05 -1.2005015e+03 3.8641849e+02
+1.9950488e+06 -6.3366095e+03 -6.0162963e+03
+4.6927706e+06 -1.0669018e+04 -2.6309290e+04
+7.5348332e+06 -1.5181630e+04 -5.7917483e+04
+9.6762365e+06 -1.9667239e+04 -9.0476765e+04
+1.0892126e+07 -2.3845739e+04 -1.1288685e+05
+1.1404518e+07 -2.7207364e+04 -1.1878861e+05
+1.1520903e+07 -2.9128487e+04 -1.0806265e+05
+1.1381639e+07 -2.9110778e+04 -8.5418438e+04
+1.0870951e+07 -2.6975046e+04 -5.7899091e+04
+9.6811621e+06 -2.2947013e+04 -3.2417392e+04
+7.5636355e+06 -1.7627564e+04 -1.3813143e+04
+4.7179916e+06 -1.1859546e+04 -3.7379501e+03
+1.9971454e+06 -6.5447773e+03 -5.5351079e+02
+1.2280870e+05 -1.1701299e+03 -3.1741816e+01
+6.9930311e+03 -6.6984645e+01 -1.7921414e+00
+3.9653142e+02 -3.8260190e+00 -8.7230347e-02
+2.0283863e+01 -1.9722678e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6449960e+01 -2.5680801e-01 1.3842884e-02
+5.1525467e+02 -4.9889592e+00 3.3062781e-01
+9.0472924e+03 -8.7297984e+01 6.5907324e+00
+1.5818945e+05 -1.5205613e+03 1.2453487e+02
+2.5333960e+06 -8.1350144e+03 -8.3159862e+03
+5.9729085e+06 -1.3910637e+04 -3.4742487e+04
+9.5704191e+06 -1.9868752e+04 -7.5636250e+04
+1.2245061e+07 -2.5536968e+04 -1.1752076e+05
+1.3731889e+07 -3.0506510e+04 -1.4619808e+05
+1.4337928e+07 -3.4253855e+04 -1.5366946e+05
+1.4468928e+07 -3.6192941e+04 -1.3986876e+05
+1.4307814e+07 -3.5866699e+04 -1.1078511e+05
+1.3703303e+07 -3.3123991e+04 -7.5334135e+04
+1.2249701e+07 -2.8214287e+04 -4.2320079e+04
+9.6059396e+06 -2.1782849e+04 -1.8015907e+04
+6.0041864e+06 -1.4764848e+04 -4.6936539e+03
+2.5351868e+06 -8.2167073e+03 -3.6771216e+02
+1.5767371e+05 -1.4790524e+03 -2.1758268e+01
+9.0129109e+03 -8.4737279e+01 -1.2633197e+00
+5.1298485e+02 -4.8319104e+00 -6.2834633e-02
+2.6317353e+01 -2.4819506e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0533513e+01 -2.1740565e-01 -6.6044354e-02
+5.9339782e+02 -4.2218056e+00 -1.3077388e+00
+1.0392846e+04 -7.3763212e+01 -2.2374083e+01
+1.8131306e+05 -1.2815701e+03 -3.7980260e+02
+2.8376567e+06 -6.8808033e+03 -1.0461408e+04
+6.7659480e+06 -1.1826938e+04 -4.1745130e+04
+1.0849519e+07 -1.6900872e+04 -8.9887922e+04
+1.3837464e+07 -2.1637300e+04 -1.3893276e+05
+1.5450727e+07 -2.5679307e+04 -1.7230721e+05
+1.6075263e+07 -2.8635157e+04 -1.8082282e+05
+1.6199370e+07 -3.0088418e+04 -1.6451548e+05
+1.6040558e+07 -2.9718027e+04 -1.3037257e+05
+1.5418207e+07 -2.7421246e+04 -8.8729678e+04
+1.3844157e+07 -2.3388336e+04 -4.9826716e+04
+1.0892588e+07 -1.8112319e+04 -2.1045606e+04
+6.8038304e+06 -1.2326406e+04 -5.1611220e+03
+2.8403003e+06 -6.8882344e+03 6.5954025e+01
+1.8071668e+05 -1.2452904e+03 2.7727688e+00
+1.0352546e+04 -7.1523206e+01 1.0132107e-01
+5.9070823e+02 -4.0844782e+00 2.6497716e-03
+3.0375141e+01 -2.0988565e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2729544e+01 -8.5278635e-02 -1.4427425e-01
+6.3522745e+02 -1.6547550e+00 -2.8989182e+00
+1.1110730e+04 -2.8875278e+01 -5.0210830e+01
+1.9364025e+05 -5.0086124e+02 -8.5915892e+02
+2.9689795e+06 -2.6912277e+03 -1.2002101e+04
+7.1590054e+06 -4.6334490e+03 -4.6380193e+04
+1.1496943e+07 -6.6203373e+03 -9.9084800e+04
+1.4631954e+07 -8.4605840e+03 -1.5257068e+05
+1.6284120e+07 -1.0013726e+04 -1.8879225e+05
+1.6894544e+07 -1.1135112e+04 -1.9785832e+05
+1.7005781e+07 -1.1674529e+04 -1.7990247e+05
+1.6857552e+07 -1.1516603e+04 -1.4254509e+05
+1.6250186e+07 -1.0624672e+04 -9.6999434e+04
+1.4641253e+07 -9.0691786e+03 -5.4390342e+04
+1.1546096e+07 -7.0338547e+03 -2.2790225e+04
+7.2021369e+06 -4.7958437e+03 -5.2937726e+03
+2.9728057e+06 -2.6849419e+03 4.9474298e+02
+1.9301679e+05 -4.8645023e+02 2.7427081e+01
+1.1068081e+04 -2.7984843e+01 1.4953311e+00
+6.3235183e+02 -1.6001451e+00 7.0472995e-02
+3.2558894e+01 -8.2288405e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3403550e+01 8.5278635e-02 -1.7648320e-01
+6.4804312e+02 1.6547549e+00 -3.5512148e+00
+1.1330520e+04 2.8875277e+01 -6.1563103e+01
+1.9741865e+05 5.0086120e+02 -1.0536082e+03
+3.0025876e+06 2.6912278e+03 -1.2563609e+04
+7.2733393e+06 4.6334497e+03 -4.8002215e+04
+1.1688573e+07 6.6203366e+03 -1.0225918e+05
+1.4864727e+07 8.4605846e+03 -1.5724354e+05
+1.6522984e+07 1.0013728e+04 -1.9441234e+05
+1.7124126e+07 1.1135113e+04 -2.0364401e+05
+1.7229511e+07 1.1674530e+04 -1.8511199e+05
+1.7086473e+07 1.1516601e+04 -1.4665354e+05
+1.6488778e+07 1.0624670e+04 -9.9778068e+04
+1.4875170e+07 9.0691782e+03 -5.5908295e+04
+1.1740060e+07 7.0338560e+03 -2.3349931e+04
+7.3184736e+06 4.7958440e+03 -5.3065829e+03
+3.0069452e+06 2.6849416e+03 6.7078041e+02
+1.9679081e+05 4.8645023e+02 3.7618766e+01
+1.1287358e+04 2.7984842e+01 2.0755953e+00
+6.4512085e+02 1.6001450e+00 9.8874124e-02
+3.3229583e+01 8.2288404e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2729544e+01 2.1740564e-01 -1.4427427e-01
+6.3522745e+02 4.2218055e+00 -2.8989183e+00
+1.1110730e+04 7.3763212e+01 -5.0210833e+01
+1.9364025e+05 1.2815701e+03 -8.5915897e+02
+2.9689795e+06 6.8808031e+03 -1.2002100e+04
+7.1590054e+06 1.1826938e+04 -4.6380194e+04
+1.1496943e+07 1.6900872e+04 -9.9084798e+04
+1.4631954e+07 2.1637301e+04 -1.5257068e+05
+1.6284120e+07 2.5679309e+04 -1.8879225e+05
+1.6894544e+07 2.8635156e+04 -1.9785832e+05
+1.7005781e+07 3.0088416e+04 -1.7990247e+05
+1.6857552e+07 2.9718023e+04 -1.4254509e+05
+1.6250186e+07 2.7421247e+04 -9.6999432e+04
+1.4641253e+07 2.3388336e+04 -5.4390343e+04
+1.1546096e+07 1.8112317e+04 -2.2790224e+04
+7.2021369e+06 1.2326405e+04 -5.2937732e+03
+2.9728057e+06 6.8882346e+03 4.9474300e+02
+1.9301679e+05 1.2452904e+03 2.7427077e+01
+1.1068081e+04 7.1523207e+01 1.4953311e+00
+6.3235183e+02 4.0844783e+00 7.0473000e-02
+3.2558894e+01 2.0988565e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0533513e+01 2.5680801e-01 -6.6044356e-02
+5.9339782e+02 4.9889592e+00 -1.3077389e+00
+1.0392846e+04 8.7297984e+01 -2.2374083e+01
+1.8131306e+05 1.5205613e+03 -3.7980264e+02
+2.8376567e+06 8.1350147e+03 -1.0461408e+04
+6.7659480e+06 1.3910636e+04 -4.1745129e+04
+1.0849519e+07 1.9868751e+04 -8.9887921e+04
+1.3837464e+07 2.5536968e+04 -1.3893276e+05
+1.5450727e+07 3.0506508e+04 -1.7230722e+05
+1.6075263e+07 3.4253855e+04 -1.8082282e+05
+1.6199370e+07 3.6192941e+04 -1.6451548e+05
+1.6040558e+07 3.5866701e+04 -1.3037256e+05
+1.5418207e+07 3.3123990e+04 -8.8729677e+04
+1.3844157e+07 2.8214288e+04 -4.9826715e+04
+1.0892588e+07 2.1782848e+04 -2.1045606e+04
+6.8038304e+06 1.4764848e+04 -5.1611219e+03
+2.8403003e+06 8.2167070e+03 6.5953978e+01
+1.8071668e+05 1.4790523e+03 2.7727708e+00
+1.0352546e+04 8.4737277e+01 1.0132127e-01
+5.9070823e+02 4.8319103e+00 2.6497778e-03
+3.0375141e+01 2.4819505e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6449960e+01 2.0363117e-01 1.3842882e-02
+5.1525467e+02 3.9418083e+00 3.3062774e-01
+9.0472924e+03 6.8861461e+01 6.5907408e+00
+1.5818945e+05 1.2005014e+03 1.2453501e+02
+2.5333960e+06 6.3366092e+03 -8.3159876e+03
+5.9729085e+06 1.0669018e+04 -3.4742487e+04
+9.5704191e+06 1.5181629e+04 -7.5636250e+04
+1.2245061e+07 1.9667240e+04 -1.1752076e+05
+1.3731889e+07 2.3845738e+04 -1.4619808e+05
+1.4337928e+07 2.7207364e+04 -1.5366946e+05
+1.4468928e+07 2.9128487e+04 -1.3986876e+05
+1.4307814e+07 2.9110776e+04 -1.1078511e+05
+1.3703303e+07 2.6975047e+04 -7.5334134e+04
+1.2249701e+07 2.2947013e+04 -4.2320080e+04
+9.6059396e+06 1.7627564e+04 -1.8015907e+04
+6.0041864e+06 1.1859546e+04 -4.6936540e+03
+2.5351868e+06 6.5447773e+03 -3.6771216e+02
+1.5767371e+05 1.1701299e+03 -2.1758271e+01
+9.0129109e+03 6.6984644e+01 -1.2633196e+00
+5.1298485e+02 3.8260191e+00 -6.2834628e-02
+2.6317353e+01 1.9722678e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0376684e+01 1.0930943e-01 5.3521689e-02
+3.9811939e+02 2.0764700e+00 1.1512117e+00
+7.0171280e+03 3.5681001e+01 2.1325635e+01
+1.2317211e+05 6.1553088e+02 3.8641851e+02
+1.9950488e+06 3.0716065e+03 -6.0162964e+03
+4.6927706e+06 4.8749287e+03 -2.6309289e+04
+7.5348332e+06 6.8047990e+03 -5.7917481e+04
+9.6762365e+06 9.0293412e+03 -9.0476765e+04
+1.0892126e+07 1.1481753e+04 -1.1288685e+05
+1.1404518e+07 1.3765546e+04 -1.1878861e+05
+1.1520903e+07 1.5330277e+04 -1.0806265e+05
+1.1381639e+07 1.5720559e+04 -8.5418438e+04
+1.0870951e+07 1.4749090e+04 -5.7899091e+04
+9.6811621e+06 1.2554917e+04 -3.2417392e+04
+7.5636355e+06 9.5561156e+03 -1.3813143e+04
+4.7179916e+06 6.3212837e+03 -3.7379500e+03
+1.9971454e+06 3.4134728e+03 -5.5351083e+02
+1.2280870e+05 6.0333451e+02 -3.1741816e+01
+6.9930311e+03 3.4910772e+01 -1.7921410e+00
+3.9653142e+02 2.0269156e+00 -8.7230346e-02
+2.0283863e+01 1.0643816e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3036195e+01 3.5366815e-02 4.4298563e-02
+2.5488466e+02 6.2256824e-01 9.4502130e-01
+4.5104006e+03 9.8386648e+00 1.7480258e+01
+7.9750346e+04 1.5730351e+02 3.1887185e+02
+1.2704635e+06 5.0350193e+02 -3.9074905e+03
+3.0446795e+06 3.4524369e+02 -1.7538577e+04
+4.9268583e+06 2.6734179e+02 -3.8922777e+04
+6.3490190e+06 7.0281885e+02 -6.1060441e+04
+7.1545950e+06 1.7298431e+03 -7.6333117e+04
+7.4908356e+06 3.0577075e+03 -8.0316747e+04
+7.5663408e+06 4.2403870e+03 -7.2906153e+04
+7.4769172e+06 4.9024350e+03 -5.7376355e+04
+7.1432640e+06 4.8687621e+03 -3.8625332e+04
+6.3562742e+06 4.1925707e+03 -2.1414811e+04
+4.9502951e+06 3.1066939e+03 -9.0021378e+03
+3.0648844e+06 1.9259764e+03 -2.4053559e+03
+1.2738227e+06 9.3896252e+02 -4.1682937e+02
+7.9581572e+04 1.5947742e+02 -2.3613979e+01
+4.4987719e+03 9.9245904e+00 -1.3252131e+00
+2.5408782e+02 6.2306882e-01 -6.4431371e-02
+1.2988049e+01 3.5134559e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.1453701e+00 5.3271520e-03 1.5853617e-02
+1.1780253e+02 6.4279629e-02 3.2266373e-01
+2.0616006e+03 4.5177396e-01 5.7293080e+00
+3.6920769e+04 -2.2355419e+00 1.0231621e+02
+5.6787518e+05 -3.3240233e+02 -2.1525355e+03
+1.4497462e+06 -1.0929670e+03 -9.5975751e+03
+2.3906078e+06 -1.7649933e+03 -2.1366937e+04
+3.0885151e+06 -1.8539853e+03 -3.3593806e+04
+3.4641835e+06 -1.2754059e+03 -4.2012375e+04
+3.6052116e+06 -2.9461814e+02 -4.4128120e+04
+3.6319890e+06 7.0196030e+02 -3.9889545e+04
+3.5994371e+06 1.4016625e+03 -3.1168077e+04
+3.4614685e+06 1.6552531e+03 -2.0745082e+04
+3.0970343e+06 1.4834238e+03 -1.1290811e+04
+2.4080656e+06 1.0353877e+03 -4.5830229e+03
+1.4645146e+06 5.2170494e+02 -1.1135948e+03
+5.7195255e+05 1.4313404e+02 -1.4460297e+02
+3.6903869e+04 8.0117851e+00 -8.5725277e+00
+2.0593851e+03 8.7215628e-01 -5.0589986e-01
+1.1759564e+02 8.1357779e-02 -2.5784286e-02
+6.1304738e+00 5.9514262e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7196592e+00 5.4277080e-04 6.2337037e-04
+2.8056439e+01 3.9826400e-03 -2.8374583e-03
+3.7973588e+02 -1.1372680e-02 -3.5291479e-01
+4.4829684e+03 -9.0955776e-01 -1.1116231e+01
+3.9737279e+04 -1.9717071e+01 -4.2132139e+02
+9.0903984e+04 -6.2513738e+01 -1.7404768e+03
+1.4455236e+05 -1.0217032e+02 -3.8565473e+03
+1.8773079e+05 -1.0905502e+02 -6.0776240e+03
+2.1536802e+05 -7.6371898e+01 -7.6169133e+03
+2.2926686e+05 -1.8823104e+01 -8.0029526e+03
+2.3321550e+05 4.0601797e+01 -7.2180978e+03
+2.2907255e+05 8.2673461e+01 -5.6093699e+03
+2.1529815e+05 9.7964593e+01 -3.6971797e+03
+1.8807656e+05 8.7604111e+01 -1.9783363e+03
+1.4522556e+05 6.0755890e+01 -7.7700171e+02
+9.1486228e+04 3.0427809e+01 -1.7242925e+02
+3.9947908e+04 8.7146723e+00 -8.8234841e+00
+4.4936583e+03 7.5484519e-01 -8.2044062e-01
+3.8007511e+02 8.2534261e-02 -6.9404903e-02
+2.8051042e+01 8.9992570e-03 -4.5268304e-03
+1.7178380e+00 7.7844956e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2681261e-01 3.7286798e-05 -3.4881965e-04
+4.4514551e+00 2.4992047e-05 -7.5627285e-03
+4.6707422e+01 -5.4843006e-03 -1.2774341e-01
+3.9398009e+02 -1.0565050e-01 -1.9166218e+00
+2.2548964e+03 -1.1686960e+00 -2.6771035e+01
+5.1769399e+03 -3.5383309e+00 -1.0275915e+02
+8.2802556e+03 -5.8200402e+00 -2.2551149e+02
+1.0802664e+04 -6.3033932e+00 -3.5608581e+02
+1.2433041e+04 -4.4900498e+00 -4.4798745e+02
+1.3259092e+04 -1.1695046e+00 -4.7223701e+02
+1.3494239e+04 2.3153190e+00 -4.2678580e+02
+1.3245660e+04 4.8023492e+00 -3.3191209e+02
+1.2424605e+04 5.7072697e+00 -2.1877687e+02
+1.0816518e+04 5.0910814e+00 -1.1724384e+02
+8.3128884e+03 3.5108732e+00 -4.6614877e+01
+5.2067445e+03 1.7562836e+00 -1.1137827e+01
+2.2670456e+03 5.2802395e-01 -9.6462145e-01
+3.9539411e+02 6.4577109e-02 -9.1903104e-02
+4.6808791e+01 7.6438993e-03 -8.6182105e-03
+4.4559613e+00 9.0610626e-04 -6.3569009e-04
+3.2683996e-01 8.6938876e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.6850916e-02 1.1424601e-06 -9.7481538e-05
+5.4187574e-01 -2.3651729e-05 -1.5571321e-03
+4.5750380e+00 -6.1651282e-04 -1.9070027e-02
+2.9840805e+01 -7.7936599e-03 -2.0194296e-01
+1.3076571e+02 -5.9903758e-02 -1.7151166e+00
+2.9481202e+02 -1.7326588e-01 -6.0839822e+00
+4.7256689e+02 -2.8544666e-01 -1.3151696e+01
+6.1907238e+02 -3.1262998e-01 -2.0759417e+01
+7.1494091e+02 -2.2581919e-01 -2.6193719e+01
+7.6400306e+02 -6.1308091e-02 -2.7692818e+01
+7.7802907e+02 1.1379835e-01 -2.5076945e+01
+7.6309823e+02 2.3962606e-01 -1.9521213e+01
+7.1419495e+02 2.8542411e-01 -1.2877173e+01
+6.1951301e+02 2.5407117e-01 -6.9251903e+00
+4.7408932e+02 1.7452487e-01 -2.8008661e+00
+2.9631601e+02 8.7525965e-02 -7.2297007e-01
+1.3145405e+02 2.7542192e-02 -9.0046812e-02
+2.9964680e+01 4.2542734e-03 -9.8919480e-03
+4.5886090e+00 5.5900496e-04 -1.0119417e-03
+5.4289160e-01 7.0608604e-05 -8.0480492e-05
+4.6896263e-02 7.2229528e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.6909467e-03 0.0000000e+00 -1.3291143e-05
+4.7820955e-02 0.0000000e+00 -1.8206083e-04
+3.4268229e-01 0.0000000e+00 -1.8407691e-03
+1.8620806e+00 0.0000000e+00 -1.5472661e-02
+6.9068743e+00 0.0000000e+00 -9.8382160e-02
+1.5189584e+01 0.0000000e+00 -3.2504273e-01
+2.4324831e+01 0.0000000e+00 -6.9069054e-01
+3.1963331e+01 0.0000000e+00 -1.0878320e+00
+3.7025229e+01 0.0000000e+00 -1.3750729e+00
+3.9642983e+01 0.0000000e+00 -1.4571575e+00
+4.0395148e+01 0.0000000e+00 -1.3218412e+00
+3.9589700e+01 0.0000000e+00 -1.0301589e+00
+3.6974027e+01 0.0000000e+00 -6.8050678e-01
+3.1969223e+01 0.0000000e+00 -3.6773346e-01
+2.4387141e+01 0.0000000e+00 -1.5150722e-01
+1.5257721e+01 0.0000000e+00 -4.1884056e-02
+6.9415038e+00 0.0000000e+00 -6.6011556e-03
+1.8702122e+00 0.0000000e+00 -8.4081914e-04
+3.4385262e-01 0.0000000e+00 -9.4328655e-05
+4.7937045e-02 0.0000000e+00 -7.9835464e-06
+4.6983226e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.7068576e-03 -1.3496510e-06 -1.4561243e-05
+4.7981497e-02 2.5468250e-05 -2.0057077e-04
+3.4383877e-01 6.7815056e-04 -2.0352075e-03
+1.8685660e+00 8.6039697e-03 -1.7124573e-02
+6.9323652e+00 6.6120712e-02 -1.0873623e-01
+1.5248195e+01 1.8952270e-01 -3.5686979e-01
+2.4411396e+01 3.0698084e-01 -7.5041569e-01
+3.2052010e+01 3.2652010e-01 -1.1656143e+00
+3.7086227e+01 2.2191585e-01 -1.4485288e+00
+3.9659054e+01 4.0162357e-02 -1.5047620e+00
+4.0367214e+01 -1.4205151e-01 -1.3347764e+00
+3.9532569e+01 -2.6247764e-01 -1.0151673e+00
+3.6907876e+01 -2.9533716e-01 -6.5367915e-01
+3.1911605e+01 -2.5168383e-01 -3.4437682e-01
+2.4347929e+01 -1.6652813e-01 -1.3863610e-01
+1.5237762e+01 -8.1005496e-02 -3.7671616e-02
+6.9348127e+00 -2.5041673e-02 -5.9388282e-03
+1.8690099e+00 -3.9713368e-03 -7.6520213e-04
+3.4372671e-01 -5.5191497e-04 -8.7369615e-05
+4.7930875e-02 -7.3681994e-05 -7.5173977e-06
+4.6985936e-03 -7.7884470e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.6998193e-02 -4.2877659e-05 -1.0574910e-04
+5.4354546e-01 -4.2082204e-05 -1.7079174e-03
+4.5890944e+00 5.9872930e-03 -2.1073458e-02
+2.9935526e+01 1.1671126e-01 -2.2390189e-01
+1.3121563e+02 1.2943585e+00 -1.9020563e+00
+2.9591824e+02 3.8833835e+00 -6.7021349e+00
+4.7422750e+02 6.2771835e+00 -1.4332947e+01
+6.2077382e+02 6.5948323e+00 -2.2302695e+01
+7.1610443e+02 4.4062100e+00 -2.7650507e+01
+7.6430269e+02 7.2734495e-01 -2.8637323e+01
+7.7748966e+02 -2.9031896e+00 -2.5336775e+01
+7.6200641e+02 -5.2775765e+00 -1.9229861e+01
+7.1293583e+02 -5.9142076e+00 -1.2351872e+01
+6.1842018e+02 -5.0415463e+00 -6.4691763e+00
+4.7335074e+02 -3.3428765e+00 -2.5542489e+00
+2.9594833e+02 -1.6195836e+00 -6.4799111e-01
+1.3134063e+02 -4.7807315e-01 -8.1538393e-02
+2.9949557e+01 -6.1219578e-02 -9.1679234e-03
+4.5876271e+00 -7.7754740e-03 -9.6242425e-04
+5.4290475e-01 -9.7119400e-04 -7.8059576e-05
+4.6905985e-02 -9.5570166e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.2775299e-01 -6.2229953e-04 -3.6095746e-04
+4.4638198e+00 -4.6373237e-03 -8.1303766e-03
+4.6834630e+01 1.1000374e-02 -1.4035115e-01
+3.9508088e+02 1.0024106e+00 -2.1268399e+00
+2.2619474e+03 2.1925407e+01 -2.9808849e+01
+5.1957726e+03 6.8881616e+01 -1.1363977e+02
+8.3089655e+03 1.1056222e+02 -2.4663461e+02
+1.0832029e+04 1.1431082e+02 -3.8371560e+02
+1.2452972e+04 7.4785567e+01 -4.7402654e+02
+1.3264090e+04 1.0819724e+01 -4.8911663e+02
+1.3484876e+04 -5.1171007e+01 -4.3148518e+02
+1.3226922e+04 -9.1212661e+01 -3.2681172e+02
+1.2403086e+04 -1.0170553e+02 -2.0950148e+02
+1.0797903e+04 -8.6727474e+01 -1.0920133e+02
+8.3003891e+03 -5.7707202e+01 -4.2337745e+01
+5.2006649e+03 -2.7939131e+01 -9.9386680e+00
+2.2653655e+03 -7.8465923e+00 -8.9006948e-01
+3.9527209e+02 -7.4074125e-01 -8.8529384e-02
+4.6808776e+01 -8.7713662e-02 -8.5757486e-03
+4.4569953e+00 -9.9366679e-03 -6.4424989e-04
+3.2697189e-01 -8.7175054e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7242241e+00 -6.1198615e-03 9.3272050e-04
+2.8126842e+01 -7.4200349e-02 9.2254555e-05
+3.8064037e+02 -5.2971560e-01 -3.6368545e-01
+4.4935358e+03 2.3237845e+00 -1.2252475e+01
+3.9846924e+04 3.7121024e+02 -4.7118260e+02
+9.1225040e+04 1.2093026e+03 -1.9326593e+03
+1.4504716e+05 1.9164940e+03 -4.2333856e+03
+1.8823478e+05 1.9468219e+03 -6.5698849e+03
+2.1570701e+05 1.2454853e+03 -8.0795780e+03
+2.2934908e+05 1.5166895e+02 -8.3026409e+03
+2.3305337e+05 -8.8928266e+02 -7.3023985e+03
+2.2875231e+05 -1.5529052e+03 -5.5204682e+03
+2.1493202e+05 -1.7219796e+03 -3.5340681e+03
+1.8776081e+05 -1.4682831e+03 -1.8367577e+03
+1.4501458e+05 -9.8092748e+02 -7.0255308e+02
+9.1385618e+04 -4.7682265e+02 -1.5306031e+02
+3.9923596e+04 -1.2798221e+02 -8.6131233e+00
+4.4936098e+03 -8.4592120e+00 -8.4620056e-01
+3.8018607e+02 -9.7174462e-01 -7.3127305e-02
+2.8064766e+01 -9.1983085e-02 -4.8047952e-03
+1.7189134e+00 -6.7519967e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.1608261e+00 -4.0758816e-02 1.9182916e-02
+1.1807847e+02 -7.1980862e-01 3.8884566e-01
+2.0660030e+03 -1.1418324e+01 6.8750554e+00
+3.6990966e+04 -1.8326522e+02 1.2226662e+02
+5.7132958e+05 -6.0355717e+02 -2.3573733e+03
+1.4596207e+06 -4.6844652e+02 -1.0554096e+04
+2.4057176e+06 -4.5647670e+02 -2.3290942e+04
+3.1042957e+06 -1.0414109e+03 -3.6083258e+04
+3.4758786e+06 -2.2664116e+03 -4.4266440e+04
+3.6102912e+06 -3.7585915e+03 -4.5435797e+04
+3.6306691e+06 -5.0033583e+03 -4.0001740e+04
+3.5938493e+06 -5.6087809e+03 -3.0358051e+04
+3.4544144e+06 -5.4351882e+03 -1.9590735e+04
+3.0909105e+06 -4.5962078e+03 -1.0339029e+04
+2.4042084e+06 -3.3753194e+03 -4.0875106e+03
+1.4630450e+06 -2.1034015e+03 -9.9133938e+02
+5.7204674e+05 -1.0512007e+03 -1.6230920e+02
+3.6926446e+04 -1.8380383e+02 -9.5410818e+00
+2.0608339e+03 -1.1402850e+01 -5.5875326e-01
+1.1768694e+02 -7.1373846e-01 -2.8295536e-02
+6.1355641e+00 -4.0137894e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3068089e+01 -1.2610708e-01 5.3453661e-02
+2.5548420e+02 -2.4027036e+00 1.1368109e+00
+4.5205671e+03 -4.1423944e+01 2.0975896e+01
+7.9922955e+04 -7.1698808e+02 3.8208994e+02
+1.2779995e+06 -3.6020227e+03 -4.1554355e+03
+3.0647993e+06 -5.7574525e+03 -1.8986270e+04
+4.9574219e+06 -8.0902788e+03 -4.1916093e+04
+6.3817016e+06 -1.0764346e+04 -6.4875699e+04
+7.1806853e+06 -1.3649189e+04 -7.9583168e+04
+7.5055509e+06 -1.6244314e+04 -8.1812795e+04
+7.5697342e+06 -1.7914482e+04 -7.2295019e+04
+7.4724194e+06 -1.8182173e+04 -5.5223897e+04
+7.1355234e+06 -1.6903184e+04 -3.6015333e+04
+6.3493052e+06 -1.4296150e+04 -1.9346405e+04
+4.9463508e+06 -1.0856744e+04 -7.9207263e+03
+3.0641892e+06 -7.2030507e+03 -2.1258784e+03
+1.2750355e+06 -3.9218736e+03 -4.6793444e+02
+7.9653203e+04 -6.9703853e+02 -2.6330700e+01
+4.5026999e+03 -4.0194151e+01 -1.4674310e+00
+2.5430334e+02 -2.3257961e+00 -7.0894950e-02
+1.2998780e+01 -1.2176363e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0419619e+01 -2.3496864e-01 6.5926062e-02
+3.9893381e+02 -4.5614836e+00 1.4102891e+00
+7.0310473e+03 -7.9941092e+01 2.6008095e+01
+1.2340941e+05 -1.3981583e+03 4.6988442e+02
+2.0056530e+06 -7.4129776e+03 -6.3232801e+03
+4.7214778e+06 -1.2518711e+04 -2.8269124e+04
+7.5783369e+06 -1.7862237e+04 -6.2000921e+04
+9.7222551e+06 -2.3169921e+04 -9.5613960e+04
+1.0928006e+07 -2.8061611e+04 -1.1708198e+05
+1.1423465e+07 -3.1903663e+04 -1.2036981e+05
+1.1523179e+07 -3.3976794e+04 -1.0658382e+05
+1.1372390e+07 -3.3757639e+04 -8.1759135e+04
+1.0857080e+07 -3.1116273e+04 -5.3674854e+04
+9.6686695e+06 -2.6374023e+04 -2.9104380e+04
+7.5559731e+06 -2.0236437e+04 -1.2062328e+04
+4.7156201e+06 -1.3636630e+04 -3.2571797e+03
+1.9981374e+06 -7.5559791e+03 -6.1503616e+02
+1.2288404e+05 -1.3523958e+03 -3.5021483e+01
+6.9969315e+03 -7.7153270e+01 -1.9627849e+00
+3.9672967e+02 -4.3919412e+00 -9.4884587e-02
+2.0292927e+01 -2.2571196e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6489476e+01 -2.9630421e-01 2.1820075e-02
+5.1599513e+02 -5.7724637e+00 4.9234701e-01
+9.0597597e+03 -1.0132469e+02 9.4086443e+00
+1.5839836e+05 -1.7705017e+03 1.7283357e+02
+2.5444148e+06 -9.5085268e+03 -8.7503822e+03
+6.0052043e+06 -1.6290709e+04 -3.7274149e+04
+9.6194387e+06 -2.3308184e+04 -8.0847854e+04
+1.2295043e+07 -2.9982051e+04 -1.2401782e+05
+1.3767022e+07 -3.5788437e+04 -1.5142387e+05
+1.4350189e+07 -4.0082289e+04 -1.5550639e+05
+1.4459406e+07 -4.2188206e+04 -1.3777253e+05
+1.4283810e+07 -4.1626392e+04 -1.0589887e+05
+1.3674318e+07 -3.8292676e+04 -6.9737421e+04
+1.2224037e+07 -3.2529935e+04 -3.7916897e+04
+9.5885328e+06 -2.5093141e+04 -1.5653391e+04
+5.9959207e+06 -1.7026606e+04 -3.9976793e+03
+2.5335236e+06 -9.5000439e+03 -3.9044086e+02
+1.5766329e+05 -1.7095179e+03 -2.2899125e+01
+9.0117826e+03 -9.7607046e+01 -1.3170924e+00
+5.1288780e+02 -5.5470573e+00 -6.4924486e-02
+2.6310784e+01 -2.8406777e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0557126e+01 -2.5080696e-01 -6.9110401e-02
+5.9382032e+02 -4.8840140e+00 -1.3800651e+00
+1.0399583e+04 -8.5598561e+01 -2.3843103e+01
+1.8141935e+05 -1.4919025e+03 -4.0873083e+02
+2.8468516e+06 -8.0387925e+03 -1.1073376e+04
+6.7972688e+06 -1.3838535e+04 -4.4846402e+04
+1.0897317e+07 -1.9801981e+04 -9.6150032e+04
+1.3883396e+07 -2.5367227e+04 -1.4669660e+05
+1.5476891e+07 -3.0085498e+04 -1.7856341e+05
+1.6073183e+07 -3.3476179e+04 -1.8308954e+05
+1.6171303e+07 -3.5059716e+04 -1.6215129e+05
+1.5995983e+07 -3.4499469e+04 -1.2470335e+05
+1.5369118e+07 -3.1726499e+04 -8.2179895e+04
+1.3801077e+07 -2.6998949e+04 -4.4630717e+04
+1.0861971e+07 -2.0892863e+04 -1.8213883e+04
+6.7870921e+06 -1.4230339e+04 -4.2718383e+03
+2.8343788e+06 -7.9681480e+03 1.1774235e+02
+1.8055836e+05 -1.4392654e+03 5.8081209e+00
+1.0342852e+04 -8.2383277e+01 2.7820461e-01
+5.9011670e+02 -4.6889045e+00 1.1577470e-02
+3.0342870e+01 -2.4021928e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2735730e+01 -9.8371418e-02 -1.5862126e-01
+6.3530596e+02 -1.9141096e+00 -3.2070323e+00
+1.1111359e+04 -3.3504396e+01 -5.5929597e+01
+1.9363883e+05 -5.8298804e+02 -9.6342673e+02
+2.9758908e+06 -3.1434374e+03 -1.2770088e+04
+7.1877279e+06 -5.4195294e+03 -4.9911573e+04
+1.1541090e+07 -7.7528040e+03 -1.0610795e+05
+1.4671646e+07 -9.9132926e+03 -1.6125320e+05
+1.6300337e+07 -1.1725568e+04 -1.9583036e+05
+1.6878780e+07 -1.3012455e+04 -2.0053034e+05
+1.6961286e+07 -1.3601052e+04 -1.7749355e+05
+1.6795413e+07 -1.3370484e+04 -1.3648351e+05
+1.6184190e+07 -1.2296367e+04 -8.9917729e+04
+1.4583539e+07 -1.0473893e+04 -4.8729311e+04
+1.1504261e+07 -8.1176138e+03 -1.9669065e+04
+7.1780460e+06 -5.5387782e+03 -4.2697796e+03
+2.9630571e+06 -3.1063882e+03 6.1707259e+02
+1.9272234e+05 -5.6219856e+02 3.4456043e+01
+1.1050492e+04 -3.2232863e+01 1.8948646e+00
+6.3130456e+02 -1.8368814e+00 9.0111420e-02
+3.2502965e+01 -9.4178909e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3402340e+01 9.8371413e-02 -1.9553220e-01
+6.4797638e+02 1.9141095e+00 -3.9570104e+00
+1.1328585e+04 3.3504392e+01 -6.9030209e+01
+1.9737230e+05 5.8298796e+02 -1.1886570e+03
+3.0085055e+06 3.1434372e+03 -1.3393432e+04
+7.3008011e+06 5.4195301e+03 -5.1694254e+04
+1.1730934e+07 7.7528027e+03 -1.0956131e+05
+1.4901602e+07 9.9132930e+03 -1.6626299e+05
+1.6535014e+07 1.1725568e+04 -2.0174316e+05
+1.7102838e+07 1.3012454e+04 -2.0648072e+05
+1.7178540e+07 1.3601051e+04 -1.8271230e+05
+1.7017498e+07 1.3370487e+04 -1.4047812e+05
+1.6416235e+07 1.2296365e+04 -9.2528622e+04
+1.4811790e+07 1.0473888e+04 -5.0095640e+04
+1.1693861e+07 8.1176138e+03 -2.0131440e+04
+7.2914988e+06 5.5387791e+03 -4.2342518e+03
+2.9956766e+06 3.1063884e+03 8.2165347e+02
+1.9644179e+05 5.6219854e+02 4.6271912e+01
+1.1266598e+04 3.2232862e+01 2.5661226e+00
+6.4389030e+02 1.8368813e+00 1.2290730e-01
+3.3164132e+01 9.4178906e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2735730e+01 2.5080696e-01 -1.5862127e-01
+6.3530596e+02 4.8840140e+00 -3.2070325e+00
+1.1111359e+04 8.5598561e+01 -5.5929603e+01
+1.9363883e+05 1.4919025e+03 -9.6342653e+02
+2.9758908e+06 8.0387921e+03 -1.2770087e+04
+7.1877279e+06 1.3838535e+04 -4.9911575e+04
+1.1541090e+07 1.9801980e+04 -1.0610795e+05
+1.4671646e+07 2.5367226e+04 -1.6125320e+05
+1.6300337e+07 3.0085496e+04 -1.9583036e+05
+1.6878780e+07 3.3476181e+04 -2.0053035e+05
+1.6961286e+07 3.5059716e+04 -1.7749355e+05
+1.6795413e+07 3.4499465e+04 -1.3648351e+05
+1.6184190e+07 3.1726500e+04 -8.9917729e+04
+1.4583539e+07 2.6998952e+04 -4.8729309e+04
+1.1504261e+07 2.0892862e+04 -1.9669063e+04
+7.1780460e+06 1.4230337e+04 -4.2697810e+03
+2.9630571e+06 7.9681477e+03 6.1707249e+02
+1.9272234e+05 1.4392654e+03 3.4456043e+01
+1.1050492e+04 8.2383277e+01 1.8948646e+00
+6.3130456e+02 4.6889045e+00 9.0111421e-02
+3.2502965e+01 2.4021928e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0557126e+01 2.9630421e-01 -6.9110403e-02
+5.9382032e+02 5.7724637e+00 -1.3800653e+00
+1.0399583e+04 1.0132469e+02 -2.3843109e+01
+1.8141935e+05 1.7705017e+03 -4.0873086e+02
+2.8468516e+06 9.5085271e+03 -1.1073376e+04
+6.7972688e+06 1.6290709e+04 -4.4846402e+04
+1.0897317e+07 2.3308185e+04 -9.6150031e+04
+1.3883396e+07 2.9982051e+04 -1.4669660e+05
+1.5476891e+07 3.5788439e+04 -1.7856341e+05
+1.6073183e+07 4.0082290e+04 -1.8308955e+05
+1.6171303e+07 4.2188205e+04 -1.6215129e+05
+1.5995983e+07 4.1626389e+04 -1.2470335e+05
+1.5369118e+07 3.8292676e+04 -8.2179891e+04
+1.3801077e+07 3.2529937e+04 -4.4630717e+04
+1.0861971e+07 2.5093140e+04 -1.8213882e+04
+6.7870921e+06 1.7026605e+04 -4.2718394e+03
+2.8343788e+06 9.5000436e+03 1.1774242e+02
+1.8055836e+05 1.7095179e+03 5.8081262e+00
+1.0342852e+04 9.7607044e+01 2.7820458e-01
+5.9011670e+02 5.5470572e+00 1.1577467e-02
+3.0342870e+01 2.8406777e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6489476e+01 2.3496864e-01 2.1820069e-02
+5.1599513e+02 4.5614836e+00 4.9234707e-01
+9.0597597e+03 7.9941091e+01 9.4086447e+00
+1.5839836e+05 1.3981582e+03 1.7283359e+02
+2.5444148e+06 7.4129771e+03 -8.7503826e+03
+6.0052043e+06 1.2518711e+04 -3.7274149e+04
+9.6194387e+06 1.7862236e+04 -8.0847854e+04
+1.2295043e+07 2.3169921e+04 -1.2401782e+05
+1.3767022e+07 2.8061611e+04 -1.5142387e+05
+1.4350189e+07 3.1903663e+04 -1.5550639e+05
+1.4459406e+07 3.3976796e+04 -1.3777254e+05
+1.4283810e+07 3.3757640e+04 -1.0589886e+05
+1.3674318e+07 3.1116274e+04 -6.9737417e+04
+1.2224037e+07 2.6374022e+04 -3.7916899e+04
+9.5885328e+06 2.0236435e+04 -1.5653393e+04
+5.9959207e+06 1.3636630e+04 -3.9976786e+03
+2.5335236e+06 7.5559787e+03 -3.9044086e+02
+1.5766329e+05 1.3523958e+03 -2.2899123e+01
+9.0117826e+03 7.7153270e+01 -1.3170924e+00
+5.1288780e+02 4.3919412e+00 -6.4924478e-02
+2.6310784e+01 2.2571196e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0419619e+01 1.2610708e-01 6.5926053e-02
+3.9893381e+02 2.4027036e+00 1.4102891e+00
+7.0310473e+03 4.1423944e+01 2.6008091e+01
+1.2340941e+05 7.1698810e+02 4.6988436e+02
+2.0056530e+06 3.6020228e+03 -6.3232796e+03
+4.7214778e+06 5.7574526e+03 -2.8269124e+04
+7.5783369e+06 8.0902793e+03 -6.2000920e+04
+9.7222551e+06 1.0764346e+04 -9.5613959e+04
+1.0928006e+07 1.3649191e+04 -1.1708198e+05
+1.1423465e+07 1.6244312e+04 -1.2036981e+05
+1.1523179e+07 1.7914481e+04 -1.0658382e+05
+1.1372390e+07 1.8182173e+04 -8.1759134e+04
+1.0857080e+07 1.6903184e+04 -5.3674853e+04
+9.6686695e+06 1.4296150e+04 -2.9104380e+04
+7.5559731e+06 1.0856746e+04 -1.2062329e+04
+4.7156201e+06 7.2030505e+03 -3.2571798e+03
+1.9981374e+06 3.9218737e+03 -6.1503615e+02
+1.2288404e+05 6.9703854e+02 -3.5021481e+01
+6.9969315e+03 4.0194151e+01 -1.9627848e+00
+3.9672967e+02 2.3257962e+00 -9.4884589e-02
+2.0292927e+01 1.2176363e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3068089e+01 4.0758816e-02 5.3453660e-02
+2.5548420e+02 7.1980863e-01 1.1368109e+00
+4.5205671e+03 1.1418324e+01 2.0975896e+01
+7.9922955e+04 1.8326521e+02 3.8208986e+02
+1.2779995e+06 6.0355716e+02 -4.1554355e+03
+3.0647993e+06 4.6844643e+02 -1.8986270e+04
+4.9574219e+06 4.5647692e+02 -4.1916093e+04
+6.3817016e+06 1.0414109e+03 -6.4875700e+04
+7.1806853e+06 2.2664136e+03 -7.9583169e+04
+7.5055509e+06 3.7585926e+03 -8.1812795e+04
+7.5697342e+06 5.0033580e+03 -7.2295020e+04
+7.4724194e+06 5.6087819e+03 -5.5223896e+04
+7.1355234e+06 5.4351890e+03 -3.6015333e+04
+6.3493052e+06 4.5962081e+03 -1.9346405e+04
+4.9463508e+06 3.3753195e+03 -7.9207265e+03
+3.0641892e+06 2.1034016e+03 -2.1258786e+03
+1.2750355e+06 1.0512008e+03 -4.6793440e+02
+7.9653203e+04 1.8380383e+02 -2.6330700e+01
+4.5026999e+03 1.1402851e+01 -1.4674309e+00
+2.5430334e+02 7.1373847e-01 -7.0894950e-02
+1.2998780e+01 4.0137894e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.1608261e+00 6.1198615e-03 1.9182918e-02
+1.1807847e+02 7.4200349e-02 3.8884567e-01
+2.0660030e+03 5.2971553e-01 6.8750537e+00
+3.6990966e+04 -2.3237839e+00 1.2226661e+02
+5.7132958e+05 -3.7121024e+02 -2.3573732e+03
+1.4596207e+06 -1.2093026e+03 -1.0554095e+04
+2.4057176e+06 -1.9164940e+03 -2.3290942e+04
+3.1042957e+06 -1.9468221e+03 -3.6083258e+04
+3.4758786e+06 -1.2454855e+03 -4.4266441e+04
+3.6102912e+06 -1.5166893e+02 -4.5435797e+04
+3.6306691e+06 8.8928265e+02 -4.0001740e+04
+3.5938493e+06 1.5529052e+03 -3.0358051e+04
+3.4544144e+06 1.7219796e+03 -1.9590735e+04
+3.0909105e+06 1.4682832e+03 -1.0339029e+04
+2.4042084e+06 9.8092755e+02 -4.0875104e+03
+1.4630450e+06 4.7682270e+02 -9.9133939e+02
+5.7204674e+05 1.2798222e+02 -1.6230920e+02
+3.6926446e+04 8.4592117e+00 -9.5410810e+00
+2.0608339e+03 9.7174460e-01 -5.5875328e-01
+1.1768694e+02 9.1983083e-02 -2.8295536e-02
+6.1355641e+00 6.7519965e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7242241e+00 6.2229952e-04 9.3272065e-04
+2.8126842e+01 4.6373232e-03 9.2249873e-05
+3.8064037e+02 -1.1000377e-02 -3.6368549e-01
+4.4935358e+03 -1.0024107e+00 -1.2252476e+01
+3.9846924e+04 -2.1925408e+01 -4.7118260e+02
+9.1225040e+04 -6.8881617e+01 -1.9326593e+03
+1.4504716e+05 -1.1056222e+02 -4.2333856e+03
+1.8823478e+05 -1.1431083e+02 -6.5698848e+03
+2.1570701e+05 -7.4785587e+01 -8.0795781e+03
+2.2934908e+05 -1.0819728e+01 -8.3026409e+03
+2.3305337e+05 5.1171008e+01 -7.3023985e+03
+2.2875231e+05 9.1212657e+01 -5.5204682e+03
+2.1493202e+05 1.0170554e+02 -3.5340681e+03
+1.8776081e+05 8.6727470e+01 -1.8367578e+03
+1.4501458e+05 5.7707201e+01 -7.0255309e+02
+9.1385618e+04 2.7939131e+01 -1.5306032e+02
+3.9923596e+04 7.8465925e+00 -8.6131237e+00
+4.4936098e+03 7.4074128e-01 -8.4620044e-01
+3.8018607e+02 8.7713657e-02 -7.3127311e-02
+2.8064766e+01 9.9366680e-03 -4.8047955e-03
+1.7189134e+00 8.7175056e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2775299e-01 4.2877654e-05 -3.6095746e-04
+4.4638198e+00 4.2082167e-05 -8.1303765e-03
+4.6834630e+01 -5.9872935e-03 -1.4035116e-01
+3.9508088e+02 -1.1671126e-01 -2.1268399e+00
+2.2619474e+03 -1.2943585e+00 -2.9808848e+01
+5.1957726e+03 -3.8833836e+00 -1.1363977e+02
+8.3089655e+03 -6.2771836e+00 -2.4663462e+02
+1.0832029e+04 -6.5948323e+00 -3.8371560e+02
+1.2452972e+04 -4.4062100e+00 -4.7402654e+02
+1.3264090e+04 -7.2734522e-01 -4.8911663e+02
+1.3484876e+04 2.9031894e+00 -4.3148518e+02
+1.3226922e+04 5.2775759e+00 -3.2681172e+02
+1.2403086e+04 5.9142074e+00 -2.0950148e+02
+1.0797903e+04 5.0415461e+00 -1.0920133e+02
+8.3003891e+03 3.3428765e+00 -4.2337745e+01
+5.2006649e+03 1.6195837e+00 -9.9386682e+00
+2.2653655e+03 4.7807317e-01 -8.9006948e-01
+3.9527209e+02 6.1219577e-02 -8.8529375e-02
+4.6808776e+01 7.7754734e-03 -8.5757492e-03
+4.4569953e+00 9.7119404e-04 -6.4424989e-04
+3.2697189e-01 9.5570167e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.6998193e-02 1.3496515e-06 -1.0574910e-04
+5.4354546e-01 -2.5468250e-05 -1.7079174e-03
+4.5890944e+00 -6.7815062e-04 -2.1073459e-02
+2.9935526e+01 -8.6039696e-03 -2.2390189e-01
+1.3121563e+02 -6.6120711e-02 -1.9020563e+00
+2.9591824e+02 -1.8952270e-01 -6.7021349e+00
+4.7422750e+02 -3.0698082e-01 -1.4332947e+01
+6.2077382e+02 -3.2652009e-01 -2.2302695e+01
+7.1610443e+02 -2.2191584e-01 -2.7650507e+01
+7.6430269e+02 -4.0162350e-02 -2.8637323e+01
+7.7748966e+02 1.4205152e-01 -2.5336775e+01
+7.6200641e+02 2.6247765e-01 -1.9229861e+01
+7.1293583e+02 2.9533716e-01 -1.2351872e+01
+6.1842018e+02 2.5168383e-01 -6.4691763e+00
+4.7335074e+02 1.6652812e-01 -2.5542489e+00
+2.9594833e+02 8.1005491e-02 -6.4799113e-01
+1.3134063e+02 2.5041671e-02 -8.1538397e-02
+2.9949557e+01 3.9713369e-03 -9.1679229e-03
+4.5876271e+00 5.5191500e-04 -9.6242419e-04
+5.4290475e-01 7.3681993e-05 -7.8059576e-05
+4.6905985e-02 7.7884467e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7068576e-03 0.0000000e+00 -1.4561244e-05
+4.7981497e-02 0.0000000e+00 -2.0057077e-04
+3.4383877e-01 0.0000000e+00 -2.0352075e-03
+1.8685660e+00 0.0000000e+00 -1.7124573e-02
+6.9323652e+00 0.0000000e+00 -1.0873623e-01
+1.5248195e+01 0.0000000e+00 -3.5686979e-01
+2.4411396e+01 0.0000000e+00 -7.5041569e-01
+3.2052010e+01 0.0000000e+00 -1.1656143e+00
+3.7086227e+01 0.0000000e+00 -1.4485288e+00
+3.9659054e+01 0.0000000e+00 -1.5047620e+00
+4.0367214e+01 0.0000000e+00 -1.3347764e+00
+3.9532569e+01 0.0000000e+00 -1.0151673e+00
+3.6907876e+01 0.0000000e+00 -6.5367915e-01
+3.1911605e+01 0.0000000e+00 -3.4437682e-01
+2.4347929e+01 0.0000000e+00 -1.3863610e-01
+1.5237762e+01 0.0000000e+00 -3.7671617e-02
+6.9348127e+00 0.0000000e+00 -5.9388281e-03
+1.8690099e+00 0.0000000e+00 -7.6520208e-04
+3.4372671e-01 0.0000000e+00 -8.7369618e-05
+4.7930875e-02 0.0000000e+00 -7.5173978e-06
+4.6985936e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.7240343e-03 -1.4218393e-06 -1.5754906e-05
+4.8155609e-02 2.8071962e-05 -2.1793888e-04
+3.4509846e-01 7.3954286e-04 -2.2171675e-03
+1.8756475e+00 9.3676228e-03 -1.8666287e-02
+6.9601702e+00 7.1911354e-02 -1.1838258e-01
+1.5311645e+01 2.0459502e-01 -3.8642772e-01
+2.4503789e+01 3.2671993e-01 -8.0554028e-01
+3.2144358e+01 3.3880974e-01 -1.2366981e+00
+3.7146566e+01 2.1756302e-01 -1.5145995e+00
+3.9670534e+01 2.0170568e-02 -1.5462504e+00
+4.0333227e+01 -1.6792114e-01 -1.3443419e+00
+3.9470727e+01 -2.8271516e-01 -9.9978470e-01
+3.6839927e+01 -3.0343379e-01 -6.2840262e-01
+3.1854874e+01 -2.4871528e-01 -3.2295639e-01
+2.4310813e+01 -1.5882879e-01 -1.2701176e-01
+1.5219581e+01 -7.4930573e-02 -3.3899735e-02
+6.9289793e+00 -2.2720312e-02 -5.3460526e-03
+1.8680554e+00 -3.6944279e-03 -6.9705893e-04
+3.4365135e-01 -5.4074404e-04 -8.0957158e-05
+4.7932639e-02 -7.5651334e-05 -7.0700496e-06
+4.6997280e-03 -8.2044849e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7157019e-02 -4.6538891e-05 -1.1370911e-04
+5.4535605e-01 -4.4542442e-05 -1.8516903e-03
+4.6044213e+00 6.5283068e-03 -2.2967322e-02
+3.0039208e+01 1.2723945e-01 -2.4452119e-01
+1.3170825e+02 1.4117466e+00 -2.0769790e+00
+2.9712015e+02 4.2044801e+00 -7.2787741e+00
+4.7600578e+02 6.6979296e+00 -1.5428270e+01
+6.2255059e+02 6.8538941e+00 -2.3720127e+01
+7.1725713e+02 4.3131387e+00 -2.8968401e+01
+7.6451343e+02 3.0805134e-01 -2.9467019e+01
+7.7683226e+02 -3.4435381e+00 -2.5534002e+01
+7.6082291e+02 -5.7005658e+00 -1.8932649e+01
+7.1164237e+02 -6.0849469e+00 -1.1857672e+01
+6.1734587e+02 -4.9809525e+00 -6.0511241e+00
+4.7265414e+02 -3.1818480e+00 -2.3315024e+00
+2.9561532e+02 -1.4926261e+00 -5.8080002e-01
+1.3124279e+02 -4.3180712e-01 -7.3875005e-02
+2.9938307e+01 -5.7817941e-02 -8.5011095e-03
+4.5873218e+00 -7.8227812e-03 -9.1378726e-04
+5.4300984e-01 -1.0191859e-03 -7.5348911e-05
+4.6924634e-02 -1.0220203e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2876437e-01 -6.8199505e-04 -3.7592751e-04
+4.4772061e+00 -5.0960660e-03 -8.7107506e-03
+4.6973332e+01 1.1718913e-02 -1.5260410e-01
+3.9628838e+02 1.0936268e+00 -2.3264927e+00
+2.2697024e+03 2.3995240e+01 -3.2664962e+01
+5.2163175e+03 7.4832851e+01 -1.2383826e+02
+8.3398213e+03 1.1832196e+02 -2.6631818e+02
+1.0862784e+04 1.1900712e+02 -4.0922722e+02
+1.2472746e+04 7.3039110e+01 -4.9772651e+02
+1.3267531e+04 3.2072368e+00 -5.0406693e+02
+1.3473435e+04 -6.0924821e+01 -4.3514473e+02
+1.3206571e+04 -9.8852884e+01 -3.2164150e+02
+1.2380972e+04 -1.0482390e+02 -2.0078854e+02
+1.0779634e+04 -8.5668704e+01 -1.0183144e+02
+8.2886472e+03 -5.4796580e+01 -3.8474805e+01
+5.1951955e+03 -2.5634551e+01 -8.8634643e+00
+2.2639362e+03 -7.0441788e+00 -8.2178067e-01
+3.9520028e+02 -7.2270595e-01 -8.5085830e-02
+4.6815859e+01 -9.1523999e-02 -8.4675117e-03
+4.4588236e+00 -1.0670069e-02 -6.4492519e-04
+3.2717001e-01 -9.4524800e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7291072e+00 -6.7486444e-03 1.1835654e-03
+2.8202718e+01 -8.1996146e-02 2.2081202e-03
+3.8162362e+02 -5.8814969e-01 -3.8117162e-01
+4.5051270e+03 2.5024595e+00 -1.3381166e+01
+3.9968116e+04 4.0770352e+02 -5.1828141e+02
+9.1576713e+04 1.3185108e+03 -2.1136322e+03
+1.4558083e+05 2.0572470e+03 -4.5862278e+03
+1.8876409e+05 2.0302109e+03 -7.0267394e+03
+2.1604357e+05 1.2128837e+03 -8.5031399e+03
+2.2940395e+05 1.5339248e+01 -8.5701477e+03
+2.3285464e+05 -1.0627865e+03 -7.3695624e+03
+2.2840366e+05 -1.6888590e+03 -5.4309030e+03
+2.1455545e+05 -1.7780944e+03 -3.3810645e+03
+1.8745128e+05 -1.4501279e+03 -1.7070747e+03
+1.4481711e+05 -9.2907766e+02 -6.3532873e+02
+9.1295698e+04 -4.3534810e+02 -1.3569481e+02
+3.9903237e+04 -1.1399208e+02 -8.3881299e+00
+4.4941514e+03 -8.7908998e+00 -8.6151736e-01
+3.8035982e+02 -1.0512294e+00 -7.5564002e-02
+2.8083994e+01 -1.0047727e-01 -4.9853403e-03
+1.7203714e+00 -7.3886005e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.1772058e+00 -4.5156854e-02 2.2028583e-02
+1.1837307e+02 -7.9957281e-01 4.4500666e-01
+2.0707418e+03 -1.2722503e+01 7.8406005e+00
+3.7067163e+04 -2.0484494e+02 1.3899112e+02
+5.7509981e+05 -6.8312724e+02 -2.5404056e+03
+1.4703828e+06 -5.5846815e+02 -1.1425530e+04
+2.4219860e+06 -5.9799769e+02 -2.5038726e+04
+3.1209140e+06 -1.3148891e+03 -3.8311931e+04
+3.4877178e+06 -2.7181222e+03 -4.6220149e+04
+3.6149113e+06 -4.3565699e+03 -4.6468334e+04
+3.6287089e+06 -5.6526349e+03 -3.9918360e+04
+3.5878952e+06 -6.2021087e+03 -2.9450939e+04
+3.4475023e+06 -5.9010680e+03 -1.8415898e+04
+3.0853630e+06 -4.9196238e+03 -9.3989234e+03
+2.4010660e+06 -3.5858901e+03 -3.5996845e+03
+1.4621173e+06 -2.2423037e+03 -8.6498400e+02
+5.7238486e+05 -1.1409114e+03 -1.7619057e+02
+3.6955320e+04 -2.0357644e+02 -1.0278928e+01
+2.0626979e+03 -1.2596403e+01 -5.9775243e-01
+1.1780521e+02 -7.8641093e-01 -3.0089634e-02
+6.1422051e+00 -4.4119187e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3101409e+01 -1.3989180e-01 6.1414852e-02
+2.5611509e+02 -2.6719143e+00 1.3028613e+00
+4.5313469e+03 -4.6191375e+01 2.3991905e+01
+8.0107266e+04 -8.0169506e+02 4.3653159e+02
+1.2861365e+06 -4.0425995e+03 -4.3409726e+03
+3.0865982e+06 -6.4832974e+03 -2.0215022e+04
+4.9902298e+06 -9.1480557e+03 -4.4472853e+04
+6.4161636e+06 -1.2202824e+04 -6.8046942e+04
+7.2074510e+06 -1.5459537e+04 -8.2071224e+04
+7.5200074e+06 -1.8321101e+04 -8.2563194e+04
+7.5726703e+06 -2.0075406e+04 -7.1076569e+04
+7.4680316e+06 -2.0228188e+04 -5.2662667e+04
+7.1288162e+06 -1.8678434e+04 -3.3178029e+04
+6.3440911e+06 -1.5718619e+04 -1.7164942e+04
+4.9442880e+06 -1.1912540e+04 -6.7754634e+03
+3.0648955e+06 -7.9176862e+03 -1.8063675e+03
+1.2769305e+06 -4.3353890e+03 -5.0697563e+02
+7.9744278e+04 -7.7327061e+02 -2.8356350e+01
+4.5077787e+03 -4.4461045e+01 -1.5704535e+00
+2.5458724e+02 -2.5653281e+00 -7.5434780e-02
+1.3013182e+01 -1.3395616e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0463450e+01 -2.6071682e-01 7.6993986e-02
+3.9977216e+02 -5.0733385e+00 1.6400688e+00
+7.0455008e+03 -8.9144602e+01 3.0139826e+01
+1.2365780e+05 -1.5632401e+03 5.4328910e+02
+2.0169795e+06 -8.3116843e+03 -6.5141292e+03
+4.7523839e+06 -1.4055607e+04 -2.9847975e+04
+7.6247696e+06 -2.0088078e+04 -6.5340582e+04
+9.7704561e+06 -2.6085361e+04 -9.9658977e+04
+1.0964443e+07 -3.1579897e+04 -1.1997508e+05
+1.1441644e+07 -3.5825433e+04 -1.2065012e+05
+1.1524474e+07 -3.8017101e+04 -1.0400320e+05
+1.1363078e+07 -3.7612868e+04 -7.7306715e+04
+1.0844586e+07 -3.4531962e+04 -4.8960042e+04
+9.6586909e+06 -2.9183951e+04 -2.5516026e+04
+7.5510669e+06 -2.2365943e+04 -1.0156405e+04
+4.7153254e+06 -1.5084535e+04 -2.6948502e+03
+2.0001479e+06 -8.3808970e+03 -6.5988059e+02
+1.2298892e+05 -1.5007005e+03 -3.7332390e+01
+7.0025820e+03 -8.5365818e+01 -2.0780706e+00
+3.9703154e+02 -4.8454580e+00 -9.9815448e-02
+2.0307527e+01 -2.4837117e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6527873e+01 -3.2875251e-01 2.9637934e-02
+5.1672211e+02 -6.4194932e+00 6.4880427e-01
+9.0721344e+03 -1.1297218e+02 1.2101638e+01
+1.5860784e+05 -1.9791607e+03 2.1854558e+02
+2.5559907e+06 -1.0656557e+04 -9.0124828e+03
+6.0396825e+06 -1.8273251e+04 -3.9272993e+04
+9.6712849e+06 -2.6170580e+04 -8.5036670e+04
+1.2346628e+07 -3.3685149e+04 -1.2902188e+05
+1.3801483e+07 -4.0193943e+04 -1.5486937e+05
+1.4359992e+07 -4.4942851e+04 -1.5555431e+05
+1.4447154e+07 -4.7177245e+04 -1.3414262e+05
+1.4258341e+07 -4.6400738e+04 -9.9886433e+04
+1.3645880e+07 -4.2555998e+04 -6.3424946e+04
+1.2200603e+07 -3.6071947e+04 -3.3102940e+04
+9.5739266e+06 -2.7799385e+04 -1.3063283e+04
+5.9898368e+06 -1.8872116e+04 -3.1917975e+03
+2.5328999e+06 -1.0547695e+04 -4.0128869e+02
+1.5768162e+05 -1.8969901e+03 -2.3323899e+01
+9.0124195e+03 -1.0799798e+02 -1.3285821e+00
+5.1289861e+02 -6.1199720e+00 -6.4880071e-02
+2.6310127e+01 -3.1259392e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0576707e+01 -2.7823641e-01 -7.0096783e-02
+5.9417340e+02 -5.4306132e+00 -1.4120542e+00
+1.0405257e+04 -9.5421177e+01 -2.4636920e+01
+1.8150936e+05 -1.6673962e+03 -4.2641412e+02
+2.8562397e+06 -9.0067086e+03 -1.1464366e+04
+6.8303436e+06 -1.5515140e+04 -4.7297212e+04
+1.0947248e+07 -2.2217619e+04 -1.0118085e+05
+1.3929679e+07 -2.8474561e+04 -1.5267394e+05
+1.5500477e+07 -3.3758550e+04 -1.8269495e+05
+1.6066276e+07 -3.7509774e+04 -1.8322187e+05
+1.6138051e+07 -3.9192969e+04 -1.5795431e+05
+1.5947773e+07 -3.8460340e+04 -1.1768415e+05
+1.5318924e+07 -3.5276675e+04 -7.4769780e+04
+1.3759141e+07 -2.9962667e+04 -3.8942768e+04
+1.0833511e+07 -2.3166833e+04 -1.5115647e+04
+6.7721512e+06 -1.5784376e+04 -3.2625055e+03
+2.8292492e+06 -8.8497325e+03 1.6912790e+02
+1.8041862e+05 -1.5969890e+03 8.8654391e+00
+1.0334409e+04 -9.1147927e+01 4.5881423e-01
+5.8960767e+02 -5.1729163e+00 2.0792582e-02
+3.0315399e+01 -2.6433073e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2735336e+01 -1.0912004e-01 -1.6872230e-01
+6.3526571e+02 -2.1281148e+00 -3.4309744e+00
+1.1110062e+04 -3.7344924e+01 -6.0210615e+01
+1.9360610e+05 -6.5148637e+02 -1.0433906e+03
+2.9826462e+06 -3.5213656e+03 -1.3284106e+04
+7.2177231e+06 -6.0747464e+03 -5.2719696e+04
+1.1586624e+07 -8.6958017e+03 -1.1177505e+05
+1.4710497e+07 -1.1123340e+04 -1.6797718e+05
+1.6312299e+07 -1.3152073e+04 -2.0054574e+05
+1.6856174e+07 -1.4575936e+04 -2.0087358e+05
+1.6909509e+07 -1.5202039e+04 -1.7308838e+05
+1.6727725e+07 -1.4905624e+04 -1.2895493e+05
+1.6115538e+07 -1.3674554e+04 -8.1905422e+04
+1.4525839e+07 -1.1626832e+04 -4.2541468e+04
+1.1463825e+07 -9.0039356e+03 -1.6268286e+04
+7.1552652e+06 -6.1451799e+03 -3.1266237e+03
+2.9538045e+06 -3.4503911e+03 7.2658870e+02
+1.9243492e+05 -6.2377272e+02 4.0792444e+01
+1.1033539e+04 -3.5660260e+01 2.2576826e+00
+6.3030766e+02 -2.0264013e+00 1.0806849e-01
+3.2450331e+01 -1.0362776e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3393546e+01 1.0912004e-01 -2.0944588e-01
+6.4777141e+02 2.1281148e+00 -4.2607037e+00
+1.1324383e+04 3.7344923e+01 -7.4749034e+01
+1.9728869e+05 6.5148632e+02 -1.2941083e+03
+3.0141263e+06 3.5213656e+03 -1.3957612e+04
+7.3293325e+06 6.0747464e+03 -5.4638539e+04
+1.1774371e+07 8.6958025e+03 -1.1546627e+05
+1.4937157e+07 1.1123340e+04 -1.7326795e+05
+1.6542129e+07 1.3152074e+04 -2.0668765e+05
+1.7073926e+07 1.4575935e+04 -2.0692721e+05
+1.7119475e+07 1.5202040e+04 -1.7826583e+05
+1.6942222e+07 1.4905623e+04 -1.3280085e+05
+1.6340415e+07 1.3674550e+04 -8.4328996e+04
+1.4747955e+07 1.1626830e+04 -4.3747716e+04
+1.1648736e+07 9.0039351e+03 -1.6631250e+04
+7.2656217e+06 6.1451793e+03 -3.0445406e+03
+2.9847767e+06 3.4503914e+03 9.5457487e+02
+1.9609489e+05 6.2377271e+02 5.3934459e+01
+1.1246209e+04 3.5660258e+01 3.0029395e+00
+6.4269601e+02 2.0264012e+00 1.4442639e-01
+3.3101303e+01 1.0362775e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2735336e+01 2.7823641e-01 -1.6872230e-01
+6.3526571e+02 5.4306132e+00 -3.4309745e+00
+1.1110062e+04 9.5421176e+01 -6.0210617e+01
+1.9360610e+05 1.6673962e+03 -1.0433905e+03
+2.9826462e+06 9.0067085e+03 -1.3284106e+04
+7.2177231e+06 1.5515139e+04 -5.2719695e+04
+1.1586624e+07 2.2217618e+04 -1.1177505e+05
+1.4710497e+07 2.8474560e+04 -1.6797718e+05
+1.6312299e+07 3.3758550e+04 -2.0054573e+05
+1.6856174e+07 3.7509777e+04 -2.0087359e+05
+1.6909509e+07 3.9192969e+04 -1.7308838e+05
+1.6727725e+07 3.8460342e+04 -1.2895493e+05
+1.6115538e+07 3.5276679e+04 -8.1905422e+04
+1.4525839e+07 2.9962667e+04 -4.2541467e+04
+1.1463825e+07 2.3166832e+04 -1.6268285e+04
+7.1552652e+06 1.5784375e+04 -3.1266238e+03
+2.9538045e+06 8.8497321e+03 7.2658867e+02
+1.9243492e+05 1.5969890e+03 4.0792441e+01
+1.1033539e+04 9.1147927e+01 2.2576824e+00
+6.3030766e+02 5.1729163e+00 1.0806849e-01
+3.2450331e+01 2.6433073e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0576707e+01 3.2875250e-01 -7.0096772e-02
+5.9417340e+02 6.4194931e+00 -1.4120548e+00
+1.0405257e+04 1.1297218e+02 -2.4636924e+01
+1.8150936e+05 1.9791607e+03 -4.2641412e+02
+2.8562397e+06 1.0656557e+04 -1.1464366e+04
+6.8303436e+06 1.8273250e+04 -4.7297212e+04
+1.0947248e+07 2.6170580e+04 -1.0118085e+05
+1.3929679e+07 3.3685148e+04 -1.5267393e+05
+1.5500477e+07 4.0193942e+04 -1.8269495e+05
+1.6066276e+07 4.4942851e+04 -1.8322188e+05
+1.6138051e+07 4.7177243e+04 -1.5795431e+05
+1.5947773e+07 4.6400736e+04 -1.1768415e+05
+1.5318924e+07 4.2556000e+04 -7.4769777e+04
+1.3759141e+07 3.6071948e+04 -3.8942769e+04
+1.0833511e+07 2.7799383e+04 -1.5115647e+04
+6.7721512e+06 1.8872115e+04 -3.2625062e+03
+2.8292492e+06 1.0547695e+04 1.6912793e+02
+1.8041862e+05 1.8969900e+03 8.8654365e+00
+1.0334409e+04 1.0799798e+02 4.5881405e-01
+5.8960767e+02 6.1199720e+00 2.0792580e-02
+3.0315399e+01 3.1259392e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6527873e+01 2.6071682e-01 2.9637955e-02
+5.1672211e+02 5.0733385e+00 6.4880439e-01
+9.0721344e+03 8.9144601e+01 1.2101635e+01
+1.5860784e+05 1.5632401e+03 2.1854564e+02
+2.5559907e+06 8.3116839e+03 -9.0124838e+03
+6.0396825e+06 1.4055606e+04 -3.9272994e+04
+9.6712849e+06 2.0088079e+04 -8.5036670e+04
+1.2346628e+07 2.6085361e+04 -1.2902188e+05
+1.3801483e+07 3.1579897e+04 -1.5486937e+05
+1.4359992e+07 3.5825432e+04 -1.5555431e+05
+1.4447154e+07 3.8017101e+04 -1.3414262e+05
+1.4258341e+07 3.7612867e+04 -9.9886433e+04
+1.3645880e+07 3.4531962e+04 -6.3424945e+04
+1.2200603e+07 2.9183952e+04 -3.3102941e+04
+9.5739266e+06 2.2365942e+04 -1.3063284e+04
+5.9898368e+06 1.5084535e+04 -3.1917974e+03
+2.5328999e+06 8.3808966e+03 -4.0128865e+02
+1.5768162e+05 1.5007005e+03 -2.3323898e+01
+9.0124195e+03 8.5365817e+01 -1.3285820e+00
+5.1289861e+02 4.8454580e+00 -6.4880069e-02
+2.6310127e+01 2.4837117e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0463450e+01 1.3989180e-01 7.6993997e-02
+3.9977216e+02 2.6719143e+00 1.6400687e+00
+7.0455008e+03 4.6191374e+01 3.0139824e+01
+1.2365780e+05 8.0169505e+02 5.4328909e+02
+2.0169795e+06 4.0425994e+03 -6.5141289e+03
+4.7523839e+06 6.4832977e+03 -2.9847974e+04
+7.6247696e+06 9.1480556e+03 -6.5340581e+04
+9.7704561e+06 1.2202824e+04 -9.9658976e+04
+1.0964443e+07 1.5459538e+04 -1.1997508e+05
+1.1441644e+07 1.8321101e+04 -1.2065013e+05
+1.1524474e+07 2.0075406e+04 -1.0400320e+05
+1.1363078e+07 2.0228188e+04 -7.7306714e+04
+1.0844586e+07 1.8678434e+04 -4.8960040e+04
+9.6586909e+06 1.5718619e+04 -2.5516028e+04
+7.5510669e+06 1.1912542e+04 -1.0156407e+04
+4.7153254e+06 7.9176868e+03 -2.6948500e+03
+2.0001479e+06 4.3353891e+03 -6.5988055e+02
+1.2298892e+05 7.7327061e+02 -3.7332388e+01
+7.0025820e+03 4.4461045e+01 -2.0780703e+00
+3.9703154e+02 2.5653281e+00 -9.9815443e-02
+2.0307527e+01 1.3395616e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3101409e+01 4.5156854e-02 6.1414851e-02
+2.5611509e+02 7.9957279e-01 1.3028613e+00
+4.5313469e+03 1.2722503e+01 2.3991904e+01
+8.0107266e+04 2.0484493e+02 4.3653159e+02
+1.2861365e+06 6.8312720e+02 -4.3409727e+03
+3.0865982e+06 5.5846806e+02 -2.0215021e+04
+4.9902298e+06 5.9799781e+02 -4.4472853e+04
+6.4161636e+06 1.3148889e+03 -6.8046941e+04
+7.2074510e+06 2.7181222e+03 -8.2071224e+04
+7.5200074e+06 4.3565704e+03 -8.2563194e+04
+7.5726703e+06 5.6526348e+03 -7.1076570e+04
+7.4680316e+06 6.2021093e+03 -5.2662667e+04
+7.1288162e+06 5.9010685e+03 -3.3178029e+04
+6.3440911e+06 4.9196241e+03 -1.7164942e+04
+4.9442880e+06 3.5858900e+03 -6.7754642e+03
+3.0648955e+06 2.2423040e+03 -1.8063678e+03
+1.2769305e+06 1.1409116e+03 -5.0697561e+02
+7.9744278e+04 2.0357645e+02 -2.8356351e+01
+4.5077787e+03 1.2596403e+01 -1.5704535e+00
+2.5458724e+02 7.8641095e-01 -7.5434768e-02
+1.3013182e+01 4.4119186e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.1772058e+00 6.7486442e-03 2.2028582e-02
+1.1837307e+02 8.1996147e-02 4.4500663e-01
+2.0707418e+03 5.8814968e-01 7.8406000e+00
+3.7067163e+04 -2.5024590e+00 1.3899113e+02
+5.7509981e+05 -4.0770352e+02 -2.5404056e+03
+1.4703828e+06 -1.3185108e+03 -1.1425530e+04
+2.4219860e+06 -2.0572470e+03 -2.5038726e+04
+3.1209140e+06 -2.0302109e+03 -3.8311931e+04
+3.4877178e+06 -1.2128837e+03 -4.6220150e+04
+3.6149113e+06 -1.5339233e+01 -4.6468334e+04
+3.6287089e+06 1.0627864e+03 -3.9918359e+04
+3.5878952e+06 1.6888590e+03 -2.9450939e+04
+3.4475023e+06 1.7780944e+03 -1.8415898e+04
+3.0853630e+06 1.4501279e+03 -9.3989233e+03
+2.4010660e+06 9.2907767e+02 -3.5996844e+03
+1.4621173e+06 4.3534810e+02 -8.6498417e+02
+5.7238486e+05 1.1399207e+02 -1.7619055e+02
+3.6955320e+04 8.7908989e+00 -1.0278928e+01
+2.0626979e+03 1.0512294e+00 -5.9775244e-01
+1.1780521e+02 1.0047727e-01 -3.0089634e-02
+6.1422051e+00 7.3886004e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7291072e+00 6.8199507e-04 1.1835658e-03
+2.8202718e+01 5.0960658e-03 2.2081135e-03
+3.8162362e+02 -1.1718907e-02 -3.8117158e-01
+4.5051270e+03 -1.0936268e+00 -1.3381166e+01
+3.9968116e+04 -2.3995241e+01 -5.1828141e+02
+9.1576713e+04 -7.4832850e+01 -2.1136322e+03
+1.4558083e+05 -1.1832196e+02 -4.5862278e+03
+1.8876409e+05 -1.1900712e+02 -7.0267393e+03
+2.1604357e+05 -7.3039111e+01 -8.5031399e+03
+2.2940395e+05 -3.2072356e+00 -8.5701478e+03
+2.3285464e+05 6.0924820e+01 -7.3695624e+03
+2.2840366e+05 9.8852867e+01 -5.4309030e+03
+2.1455545e+05 1.0482390e+02 -3.3810644e+03
+1.8745128e+05 8.5668703e+01 -1.7070747e+03
+1.4481711e+05 5.4796579e+01 -6.3532873e+02
+9.1295698e+04 2.5634552e+01 -1.3569482e+02
+3.9903237e+04 7.0441794e+00 -8.3881290e+00
+4.4941514e+03 7.2270594e-01 -8.6151730e-01
+3.8035982e+02 9.1524002e-02 -7.5564006e-02
+2.8083994e+01 1.0670070e-02 -4.9853401e-03
+1.7203714e+00 9.4524797e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2876437e-01 4.6538893e-05 -3.7592752e-04
+4.4772061e+00 4.4542438e-05 -8.7107509e-03
+4.6973332e+01 -6.5283067e-03 -1.5260410e-01
+3.9628838e+02 -1.2723945e-01 -2.3264927e+00
+2.2697024e+03 -1.4117466e+00 -3.2664962e+01
+5.2163175e+03 -4.2044802e+00 -1.2383826e+02
+8.3398213e+03 -6.6979298e+00 -2.6631818e+02
+1.0862784e+04 -6.8538943e+00 -4.0922721e+02
+1.2472746e+04 -4.3131394e+00 -4.9772651e+02
+1.3267531e+04 -3.0805169e-01 -5.0406693e+02
+1.3473435e+04 3.4435382e+00 -4.3514474e+02
+1.3206571e+04 5.7005662e+00 -3.2164149e+02
+1.2380972e+04 6.0849468e+00 -2.0078854e+02
+1.0779634e+04 4.9809525e+00 -1.0183145e+02
+8.2886472e+03 3.1818481e+00 -3.8474804e+01
+5.1951955e+03 1.4926261e+00 -8.8634648e+00
+2.2639362e+03 4.3180716e-01 -8.2178063e-01
+3.9520028e+02 5.7817946e-02 -8.5085818e-02
+4.6815859e+01 7.8227806e-03 -8.4675121e-03
+4.4588236e+00 1.0191859e-03 -6.4492525e-04
+3.2717001e-01 1.0220203e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.7157019e-02 1.4218390e-06 -1.1370911e-04
+5.4535605e-01 -2.8071962e-05 -1.8516903e-03
+4.6044213e+00 -7.3954285e-04 -2.2967322e-02
+3.0039208e+01 -9.3676230e-03 -2.4452119e-01
+1.3170825e+02 -7.1911354e-02 -2.0769790e+00
+2.9712015e+02 -2.0459502e-01 -7.2787741e+00
+4.7600578e+02 -3.2671992e-01 -1.5428271e+01
+6.2255059e+02 -3.3880971e-01 -2.3720127e+01
+7.1725713e+02 -2.1756300e-01 -2.8968401e+01
+7.6451343e+02 -2.0170495e-02 -2.9467019e+01
+7.7683226e+02 1.6792115e-01 -2.5534002e+01
+7.6082291e+02 2.8271515e-01 -1.8932649e+01
+7.1164237e+02 3.0343379e-01 -1.1857672e+01
+6.1734587e+02 2.4871527e-01 -6.0511241e+00
+4.7265414e+02 1.5882879e-01 -2.3315024e+00
+2.9561532e+02 7.4930574e-02 -5.8080003e-01
+1.3124279e+02 2.2720311e-02 -7.3875005e-02
+2.9938307e+01 3.6944276e-03 -8.5011098e-03
+4.5873218e+00 5.4074403e-04 -9.1378725e-04
+5.4300984e-01 7.5651326e-05 -7.5348920e-05
+4.6924634e-02 8.2044854e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7240343e-03 0.0000000e+00 -1.5754906e-05
+4.8155609e-02 0.0000000e+00 -2.1793888e-04
+3.4509846e-01 0.0000000e+00 -2.2171676e-03
+1.8756475e+00 0.0000000e+00 -1.8666287e-02
+6.9601702e+00 0.0000000e+00 -1.1838258e-01
+1.5311645e+01 0.0000000e+00 -3.8642772e-01
+2.4503789e+01 0.0000000e+00 -8.0554028e-01
+3.2144358e+01 0.0000000e+00 -1.2366981e+00
+3.7146566e+01 0.0000000e+00 -1.5145995e+00
+3.9670534e+01 0.0000000e+00 -1.5462504e+00
+4.0333227e+01 0.0000000e+00 -1.3443419e+00
+3.9470727e+01 0.0000000e+00 -9.9978469e-01
+3.6839927e+01 0.0000000e+00 -6.2840262e-01
+3.1854874e+01 0.0000000e+00 -3.2295639e-01
+2.4310813e+01 0.0000000e+00 -1.2701176e-01
+1.5219581e+01 0.0000000e+00 -3.3899736e-02
+6.9289793e+00 0.0000000e+00 -5.3460527e-03
+1.8680554e+00 0.0000000e+00 -6.9705891e-04
+3.4365135e-01 0.0000000e+00 -8.0957160e-05
+4.7932639e-02 0.0000000e+00 -7.0700496e-06
+4.6997280e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.7421662e-03 -1.3219066e-06 -1.6810035e-05
+4.8340448e-02 3.1651847e-05 -2.3330115e-04
+3.4644330e-01 7.9980091e-04 -2.3779388e-03
+1.8832368e+00 1.0058747e-02 -2.0025980e-02
+6.9899821e+00 7.7041063e-02 -1.2687898e-01
+1.5379281e+01 2.1785469e-01 -4.1236934e-01
+2.4601132e+01 3.4385581e-01 -8.5356823e-01
+3.2239636e+01 3.4907799e-01 -1.2979246e+00
+3.7205989e+01 2.1318071e-01 -1.5705289e+00
+3.9677745e+01 2.5658252e-03 -1.5803053e+00
+4.0293856e+01 -1.8986099e-01 -1.3510737e+00
+3.9404782e+01 -2.9914118e-01 -9.8598764e-01
+3.6770372e+01 -3.0930461e-01 -6.0712731e-01
+3.1798713e+01 -2.4552290e-01 -3.0544397e-01
+2.4275193e+01 -1.5212398e-01 -1.1770034e-01
+1.5202643e+01 -6.9845680e-02 -3.0916904e-02
+6.9237285e+00 -2.0788251e-02 -4.8778907e-03
+1.8672690e+00 -3.4487731e-03 -6.4276606e-04
+3.4361088e-01 -5.2660341e-04 -7.5693412e-05
+4.7939989e-02 -7.6359613e-05 -6.6832335e-06
+4.7014805e-03 -8.4357247e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7324351e-02 -4.7712595e-05 -1.2094157e-04
+5.4727636e-01 -2.8316563e-05 -1.9812795e-03
+4.6207902e+00 7.1107540e-03 -2.4661160e-02
+3.0150542e+01 1.3690855e-01 -2.6284535e-01
+1.3223828e+02 1.5161012e+00 -2.2319277e+00
+2.9840568e+02 4.4882251e+00 -7.7878302e+00
+4.7788527e+02 7.0650194e+00 -1.6388481e+01
+6.2438886e+02 7.0715989e+00 -2.4949272e+01
+7.1839449e+02 4.2194860e+00 -3.0092932e+01
+7.6464179e+02 -6.2883371e-02 -3.0155841e+01
+7.7607009e+02 -3.9044488e+00 -2.5679083e+01
+7.5955977e+02 -6.0466219e+00 -1.8668464e+01
+7.1031856e+02 -6.2111244e+00 -1.1442836e+01
+6.1628425e+02 -4.9169833e+00 -5.7097539e+00
+4.7198814e+02 -3.0426992e+00 -2.1531797e+00
+2.9530697e+02 -1.3870396e+00 -5.2763506e-01
+1.3115566e+02 -3.9352860e-01 -6.7766826e-02
+2.9929751e+01 -5.4706682e-02 -7.9528665e-03
+4.5874994e+00 -7.7867388e-03 -8.7038517e-04
+5.4318210e-01 -1.0464310e-03 -7.2576519e-05
+4.6949915e-02 -1.0629398e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2982551e-01 -7.1586329e-04 -3.9298824e-04
+4.4913610e+00 -5.3000298e-03 -9.2761813e-03
+4.7121277e+01 1.3818803e-02 -1.6392904e-01
+3.9758656e+02 1.1812123e+00 -2.5064121e+00
+2.2780798e+03 2.5842732e+01 -3.5210507e+01
+5.2383733e+03 8.0119310e+01 -1.3289744e+02
+8.3725437e+03 1.2513128e+02 -2.8368606e+02
+1.0894697e+04 1.2298006e+02 -4.3150697e+02
+1.2492287e+04 7.1288134e+01 -5.1811726e+02
+1.3269532e+04 -3.5580690e+00 -5.1662341e+02
+1.3460149e+04 -6.9293553e+01 -4.3794832e+02
+1.3184820e+04 -1.0515327e+02 -3.1709083e+02
+1.2358337e+04 -1.0717080e+02 -1.9349582e+02
+1.0761612e+04 -8.4569110e+01 -9.5821534e+01
+8.2774675e+03 -5.2299445e+01 -3.5385050e+01
+5.1901659e+03 -2.3729765e+01 -8.0126595e+00
+2.2626801e+03 -6.3841300e+00 -7.6602927e-01
+3.9516450e+02 -7.0308940e-01 -8.1868237e-02
+4.6828224e+01 -9.3721201e-02 -8.2994739e-03
+4.4612582e+00 -1.1143288e-02 -6.3724023e-04
+3.2741949e-01 -9.9301950e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7341922e+00 -7.1617008e-03 1.3607639e-03
+2.8282408e+01 -8.6990884e-02 3.3617399e-03
+3.8266680e+02 -6.2096919e-01 -4.0503625e-01
+4.5175633e+03 2.7926941e+00 -1.4452816e+01
+4.0099605e+04 4.4040896e+02 -5.6050765e+02
+9.1955622e+04 1.4160506e+03 -2.2753477e+03
+1.4614861e+05 2.1814961e+03 -4.8994999e+03
+1.8931474e+05 2.1012468e+03 -7.4284162e+03
+2.1637646e+05 1.1803966e+03 -8.8704201e+03
+2.2943352e+05 -1.0629213e+02 -8.7972482e+03
+2.3262333e+05 -1.2124243e+03 -7.4228062e+03
+2.2803028e+05 -1.8017403e+03 -5.3528338e+03
+2.1416975e+05 -1.8209522e+03 -3.2533490e+03
+1.8714631e+05 -1.4314820e+03 -1.6014676e+03
+1.4462980e+05 -8.8482661e+02 -5.8162505e+02
+9.1213543e+04 -4.0123239e+02 -1.2196692e+02
+3.9885585e+04 -1.0253115e+02 -8.1681656e+00
+4.4951350e+03 -8.9903081e+00 -8.6460823e-01
+3.8058264e+02 -1.1047127e+00 -7.6444170e-02
+2.8107625e+01 -1.0617002e-01 -5.0480957e-03
+1.7221397e+00 -7.8094196e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.1940590e+00 -4.8231986e-02 2.4217031e-02
+1.1867857e+02 -8.5593707e-01 4.8766119e-01
+2.0756985e+03 -1.3655149e+01 8.5650909e+00
+3.7147561e+04 -2.2046726e+02 1.5142696e+02
+5.7911891e+05 -7.3519563e+02 -2.6920640e+03
+1.4818809e+06 -6.0485212e+02 -1.2169271e+04
+2.4392006e+06 -6.7604904e+02 -2.6526233e+04
+3.1381611e+06 -1.4986622e+03 -4.0173491e+04
+3.4995574e+06 -3.0499217e+03 -4.7782756e+04
+3.6190158e+06 -4.8080969e+03 -4.7185432e+04
+3.6261153e+06 -6.1414860e+03 -3.9662700e+04
+3.5815889e+06 -6.6389464e+03 -2.8519238e+04
+3.4407022e+06 -6.2311320e+03 -1.7308978e+04
+3.0803009e+06 -5.1374595e+03 -8.5408609e+03
+2.3985172e+06 -3.7215018e+03 -3.1553610e+03
+1.4616349e+06 -2.3314982e+03 -7.4265747e+02
+5.7292559e+05 -1.2009371e+03 -1.8497799e+02
+3.6989292e+04 -2.1722377e+02 -1.0716256e+01
+2.0649053e+03 -1.3409294e+01 -6.1906613e-01
+1.1794612e+02 -8.3516535e-01 -3.0983521e-02
+6.1501618e+00 -4.6749635e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3135131e+01 -1.4965298e-01 6.7699612e-02
+2.5675841e+02 -2.8645124e+00 1.4329538e+00
+4.5424238e+03 -4.9639075e+01 2.6340059e+01
+8.0297953e+04 -8.6357960e+02 4.7876475e+02
+1.2946920e+06 -4.3605026e+03 -4.4514303e+03
+3.1096956e+06 -6.9959921e+03 -2.1157693e+04
+5.0247491e+06 -9.8953587e+03 -4.6457722e+04
+6.4518468e+06 -1.3234538e+04 -7.0405026e+04
+7.2344338e+06 -1.6777338e+04 -8.3660422e+04
+7.5339042e+06 -1.9842440e+04 -8.2522819e+04
+7.5749770e+06 -2.1653027e+04 -6.9317905e+04
+7.4636238e+06 -2.1705009e+04 -4.9844007e+04
+7.1229681e+06 -1.9938864e+04 -3.0288163e+04
+6.3403839e+06 -1.6711055e+04 -1.5007329e+04
+4.9438348e+06 -1.2639565e+04 -5.6360392e+03
+3.0667986e+06 -8.4080121e+03 -1.4626119e+03
+1.2794185e+06 -4.6211210e+03 -5.3033806e+02
+7.9852206e+04 -8.2599293e+02 -2.9496476e+01
+4.5138660e+03 -4.7369145e+01 -1.6239844e+00
+2.5493169e+02 -2.7260289e+00 -7.7577869e-02
+1.3030865e+01 -1.4201072e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0506705e+01 -2.7900026e-01 8.6092984e-02
+4.0060691e+02 -5.4403559e+00 1.8271801e+00
+7.0600238e+03 -9.5811337e+01 3.3476476e+01
+1.2390944e+05 -1.6839795e+03 6.0224187e+02
+2.0287606e+06 -8.9675166e+03 -6.5719045e+03
+4.7849343e+06 -1.5165539e+04 -3.0952712e+04
+7.6733625e+06 -2.1692696e+04 -6.7748287e+04
+9.8200491e+06 -2.8196688e+04 -1.0237920e+05
+1.1000812e+07 -3.4140861e+04 -1.2138438e+05
+1.1458684e+07 -3.8683841e+04 -1.1958306e+05
+1.1524625e+07 -4.0950212e+04 -1.0043716e+05
+1.1353622e+07 -4.0387426e+04 -7.2298117e+04
+1.0833334e+07 -3.6961768e+04 -4.4022717e+04
+9.6509777e+06 -3.1158895e+04 -2.1861719e+04
+7.5486172e+06 -2.3848591e+04 -8.2029450e+03
+4.7168796e+06 -1.6088591e+04 -2.0766489e+03
+2.0030881e+06 -8.9544107e+03 -6.8353844e+02
+1.2312117e+05 -1.6033512e+03 -3.8430194e+01
+7.0098738e+03 -9.0966072e+01 -2.1250561e+00
+3.9743170e+02 -5.1498139e+00 -1.0143208e-01
+2.0327427e+01 -2.6334280e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6563708e+01 -3.5179587e-01 3.6961346e-02
+5.1740903e+02 -6.8833805e+00 7.9307411e-01
+9.0839757e+03 -1.2140663e+02 1.4547110e+01
+1.5881056e+05 -2.1317071e+03 2.5955221e+02
+2.5678572e+06 -1.1496618e+04 -9.0778805e+03
+6.0757703e+06 -1.9713300e+04 -4.0617956e+04
+9.7251811e+06 -2.8245234e+04 -8.7961633e+04
+1.2399081e+07 -3.6373987e+04 -1.3223759e+05
+1.3834812e+07 -4.3399979e+04 -1.5630686e+05
+1.4367240e+07 -4.8478802e+04 -1.5376015e+05
+1.4432370e+07 -5.0791463e+04 -1.2913496e+05
+1.4231710e+07 -4.9832814e+04 -9.3058318e+04
+1.3618198e+07 -4.5590390e+04 -5.6747213e+04
+1.2179417e+07 -3.8567223e+04 -2.8153241e+04
+9.5620039e+06 -2.9690133e+04 -1.0389058e+04
+5.9858285e+06 -2.0156163e+04 -2.3132023e+03
+2.5333077e+06 -1.1277390e+04 -3.9802711e+02
+1.5772989e+05 -2.0267357e+03 -2.2912939e+01
+9.0149143e+03 -1.1508218e+02 -1.2916258e+00
+5.1302394e+02 -6.5043426e+00 -6.2432154e-02
+2.6315787e+01 -3.3143549e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0591279e+01 -2.9770390e-01 -6.8664354e-02
+5.9443999e+02 -5.8222270e+00 -1.3964032e+00
+1.0409601e+04 -1.0252878e+02 -2.4618575e+01
+1.8157894e+05 -1.7955951e+03 -4.3031023e+02
+2.8656286e+06 -9.7153104e+03 -1.1600438e+04
+6.8647145e+06 -1.6734993e+04 -4.8949722e+04
+1.0998716e+07 -2.3971192e+04 -1.0469189e+05
+1.3975858e+07 -3.0732046e+04 -1.5651359e+05
+1.5521424e+07 -3.6430056e+04 -1.8443114e+05
+1.6054962e+07 -4.0440529e+04 -1.8115472e+05
+1.6100394e+07 -4.2183310e+04 -1.5210526e+05
+1.5896818e+07 -4.1305091e+04 -1.0967828e+05
+1.5268370e+07 -3.7803026e+04 -6.6911687e+04
+1.3718802e+07 -3.2051719e+04 -3.3088812e+04
+1.0807413e+07 -2.4757213e+04 -1.1923715e+04
+6.7591196e+06 -1.6866680e+04 -2.1815801e+03
+2.8250365e+06 -9.4639661e+03 2.1775097e+02
+1.8030392e+05 -1.7060893e+03 1.1806799e+01
+1.0327619e+04 -9.7120001e+01 6.3506041e-01
+5.8920595e+02 -5.4974466e+00 2.9882315e-02
+3.0294093e+01 -2.8024651e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2727939e+01 -1.1674500e-01 -1.7356246e-01
+6.3510064e+02 -2.2813611e+00 -3.5493584e+00
+1.1106770e+04 -4.0122416e+01 -6.2663836e+01
+1.9354137e+05 -7.0149712e+02 -1.0920328e+03
+2.9891390e+06 -3.7980229e+03 -1.3502131e+04
+7.2486745e+06 -6.5516425e+03 -5.4636964e+04
+1.1633160e+07 -9.3805819e+03 -1.1576411e+05
+1.4748355e+07 -1.2002418e+04 -1.7235222e+05
+1.6320342e+07 -1.4189150e+04 -2.0263644e+05
+1.6827620e+07 -1.5711154e+04 -1.9881140e+05
+1.6851754e+07 -1.6359494e+04 -1.6687981e+05
+1.6655901e+07 -1.6007563e+04 -1.2035343e+05
+1.6045449e+07 -1.4655014e+04 -7.3412540e+04
+1.4468999e+07 -1.2439522e+04 -3.6184720e+04
+1.1425287e+07 -9.6239360e+03 -1.2779947e+04
+7.1341072e+06 -6.5675775e+03 -1.9211016e+03
+2.9452929e+06 -3.6900515e+03 8.1654698e+02
+1.9216568e+05 -6.6634673e+02 4.6049202e+01
+1.1017901e+04 -3.7994600e+01 2.5617516e+00
+6.2940212e+02 -2.1534173e+00 1.2325841e-01
+3.2403205e+01 -1.0986202e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3376985e+01 1.1674500e-01 -2.1692933e-01
+6.4742686e+02 2.2813611e+00 -4.4351063e+00
+1.1317929e+04 4.0122414e+01 -7.8225966e+01
+1.9716860e+05 7.0149707e+02 -1.3611251e+03
+3.0193801e+06 3.7980228e+03 -1.4210963e+04
+7.3586784e+06 6.5516415e+03 -5.6660170e+04
+1.1818589e+07 9.3805822e+03 -1.1963992e+05
+1.4971366e+07 1.2002418e+04 -1.7785384e+05
+1.6544829e+07 1.4189150e+04 -2.0893240e+05
+1.7038473e+07 1.5711153e+04 -2.0490211e+05
+1.7053822e+07 1.6359494e+04 -1.7196894e+05
+1.6862264e+07 1.6007560e+04 -1.2402582e+05
+1.6262721e+07 1.4655010e+04 -7.5641822e+04
+1.4684667e+07 1.2439522e+04 -3.7233314e+04
+1.1605303e+07 9.6239351e+03 -1.3048125e+04
+7.2412358e+06 6.5675774e+03 -1.7973339e+03
+2.9745382e+06 3.6900515e+03 1.0610211e+03
+1.9576310e+05 6.6634670e+02 6.0117654e+01
+1.1226979e+04 3.7994599e+01 3.3582900e+00
+6.4158540e+02 2.1534173e+00 1.6206805e-01
+3.3043647e+01 1.0986202e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2727939e+01 2.9770390e-01 -1.7356246e-01
+6.3510064e+02 5.8222270e+00 -3.5493586e+00
+1.1106770e+04 1.0252878e+02 -6.2663839e+01
+1.9354137e+05 1.7955951e+03 -1.0920328e+03
+2.9891390e+06 9.7153105e+03 -1.3502131e+04
+7.2486745e+06 1.6734993e+04 -5.4636963e+04
+1.1633160e+07 2.3971192e+04 -1.1576411e+05
+1.4748355e+07 3.0732045e+04 -1.7235222e+05
+1.6320342e+07 3.6430056e+04 -2.0263644e+05
+1.6827620e+07 4.0440528e+04 -1.9881140e+05
+1.6851754e+07 4.2183312e+04 -1.6687982e+05
+1.6655901e+07 4.1305094e+04 -1.2035343e+05
+1.6045449e+07 3.7803028e+04 -7.3412539e+04
+1.4468999e+07 3.2051718e+04 -3.6184719e+04
+1.1425287e+07 2.4757214e+04 -1.2779946e+04
+7.1341072e+06 1.6866679e+04 -1.9211022e+03
+2.9452929e+06 9.4639657e+03 8.1654697e+02
+1.9216568e+05 1.7060893e+03 4.6049202e+01
+1.1017901e+04 9.7119998e+01 2.5617518e+00
+6.2940212e+02 5.4974465e+00 1.2325840e-01
+3.2403205e+01 2.8024651e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0591279e+01 3.5179587e-01 -6.8664363e-02
+5.9443999e+02 6.8833805e+00 -1.3964033e+00
+1.0409601e+04 1.2140663e+02 -2.4618573e+01
+1.8157894e+05 2.1317071e+03 -4.3031020e+02
+2.8656286e+06 1.1496618e+04 -1.1600438e+04
+6.8647145e+06 1.9713300e+04 -4.8949722e+04
+1.0998716e+07 2.8245234e+04 -1.0469188e+05
+1.3975858e+07 3.6373987e+04 -1.5651359e+05
+1.5521424e+07 4.3399979e+04 -1.8443114e+05
+1.6054962e+07 4.8478803e+04 -1.8115472e+05
+1.6100394e+07 5.0791462e+04 -1.5210526e+05
+1.5896818e+07 4.9832814e+04 -1.0967828e+05
+1.5268370e+07 4.5590391e+04 -6.6911686e+04
+1.3718802e+07 3.8567222e+04 -3.3088810e+04
+1.0807413e+07 2.9690130e+04 -1.1923716e+04
+6.7591196e+06 2.0156161e+04 -2.1815810e+03
+2.8250365e+06 1.1277390e+04 2.1775097e+02
+1.8030392e+05 2.0267357e+03 1.1806791e+01
+1.0327619e+04 1.1508219e+02 6.3506059e-01
+5.8920595e+02 6.5043427e+00 2.9882317e-02
+3.0294093e+01 3.3143549e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6563708e+01 2.7900026e-01 3.6961330e-02
+5.1740903e+02 5.4403559e+00 7.9307416e-01
+9.0839757e+03 9.5811337e+01 1.4547108e+01
+1.5881056e+05 1.6839795e+03 2.5955238e+02
+2.5678572e+06 8.9675164e+03 -9.0778806e+03
+6.0757703e+06 1.5165539e+04 -4.0617956e+04
+9.7251811e+06 2.1692696e+04 -8.7961632e+04
+1.2399081e+07 2.8196688e+04 -1.3223758e+05
+1.3834812e+07 3.4140862e+04 -1.5630686e+05
+1.4367240e+07 3.8683841e+04 -1.5376015e+05
+1.4432370e+07 4.0950211e+04 -1.2913497e+05
+1.4231710e+07 4.0387426e+04 -9.3058317e+04
+1.3618198e+07 3.6961769e+04 -5.6747213e+04
+1.2179417e+07 3.1158896e+04 -2.8153241e+04
+9.5620039e+06 2.3848592e+04 -1.0389058e+04
+5.9858285e+06 1.6088591e+04 -2.3132024e+03
+2.5333077e+06 8.9544103e+03 -3.9802699e+02
+1.5772989e+05 1.6033511e+03 -2.2912944e+01
+9.0149143e+03 9.0966070e+01 -1.2916256e+00
+5.1302394e+02 5.1498139e+00 -6.2432153e-02
+2.6315787e+01 2.6334280e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0506705e+01 1.4965298e-01 8.6092981e-02
+4.0060691e+02 2.8645124e+00 1.8271801e+00
+7.0600238e+03 4.9639074e+01 3.3476476e+01
+1.2390944e+05 8.6357959e+02 6.0224187e+02
+2.0287606e+06 4.3605025e+03 -6.5719043e+03
+4.7849343e+06 6.9959915e+03 -3.0952711e+04
+7.6733625e+06 9.8953581e+03 -6.7748287e+04
+9.8200491e+06 1.3234536e+04 -1.0237920e+05
+1.1000812e+07 1.6777337e+04 -1.2138438e+05
+1.1458684e+07 1.9842440e+04 -1.1958307e+05
+1.1524625e+07 2.1653026e+04 -1.0043716e+05
+1.1353622e+07 2.1705009e+04 -7.2298115e+04
+1.0833334e+07 1.9938864e+04 -4.4022716e+04
+9.6509777e+06 1.6711054e+04 -2.1861719e+04
+7.5486172e+06 1.2639566e+04 -8.2029463e+03
+4.7168796e+06 8.4080130e+03 -2.0766500e+03
+2.0030881e+06 4.6211212e+03 -6.8353839e+02
+1.2312117e+05 8.2599295e+02 -3.8430194e+01
+7.0098738e+03 4.7369145e+01 -2.1250557e+00
+3.9743170e+02 2.7260288e+00 -1.0143207e-01
+2.0327427e+01 1.4201071e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3135131e+01 4.8231986e-02 6.7699610e-02
+2.5675841e+02 8.5593706e-01 1.4329538e+00
+4.5424238e+03 1.3655149e+01 2.6340060e+01
+8.0297953e+04 2.2046726e+02 4.7876473e+02
+1.2946920e+06 7.3519563e+02 -4.4514305e+03
+3.1096956e+06 6.0485221e+02 -2.1157692e+04
+5.0247491e+06 6.7604987e+02 -4.6457722e+04
+6.4518468e+06 1.4986623e+03 -7.0405025e+04
+7.2344338e+06 3.0499217e+03 -8.3660422e+04
+7.5339041e+06 4.8080965e+03 -8.2522820e+04
+7.5749770e+06 6.1414852e+03 -6.9317905e+04
+7.4636238e+06 6.6389473e+03 -4.9844006e+04
+7.1229681e+06 6.2311324e+03 -3.0288163e+04
+6.3403839e+06 5.1374595e+03 -1.5007329e+04
+4.9438348e+06 3.7215020e+03 -5.6360397e+03
+3.0667986e+06 2.3314980e+03 -1.4626120e+03
+1.2794185e+06 1.2009370e+03 -5.3033802e+02
+7.9852206e+04 2.1722377e+02 -2.9496477e+01
+4.5138660e+03 1.3409294e+01 -1.6239845e+00
+2.5493169e+02 8.3516538e-01 -7.7577866e-02
+1.3030865e+01 4.6749636e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.1940590e+00 7.1617005e-03 2.4217029e-02
+1.1867857e+02 8.6990885e-02 4.8766117e-01
+2.0756985e+03 6.2096919e-01 8.5650912e+00
+3.7147561e+04 -2.7926945e+00 1.5142696e+02
+5.7911891e+05 -4.4040896e+02 -2.6920641e+03
+1.4818809e+06 -1.4160506e+03 -1.2169271e+04
+2.4392006e+06 -2.1814962e+03 -2.6526233e+04
+3.1381611e+06 -2.1012468e+03 -4.0173491e+04
+3.4995574e+06 -1.1803966e+03 -4.7782756e+04
+3.6190158e+06 1.0629215e+02 -4.7185432e+04
+3.6261153e+06 1.2124244e+03 -3.9662699e+04
+3.5815889e+06 1.8017406e+03 -2.8519238e+04
+3.4407022e+06 1.8209522e+03 -1.7308979e+04
+3.0803009e+06 1.4314822e+03 -8.5408609e+03
+2.3985172e+06 8.8482665e+02 -3.1553610e+03
+1.4616349e+06 4.0123242e+02 -7.4265755e+02
+5.7292559e+05 1.0253116e+02 -1.8497799e+02
+3.6989292e+04 8.9903087e+00 -1.0716256e+01
+2.0649053e+03 1.1047127e+00 -6.1906614e-01
+1.1794612e+02 1.0617002e-01 -3.0983523e-02
+6.1501618e+00 7.8094197e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7341922e+00 7.1586324e-04 1.3607639e-03
+2.8282408e+01 5.3000294e-03 3.3617388e-03
+3.8266680e+02 -1.3818804e-02 -4.0503624e-01
+4.5175633e+03 -1.1812123e+00 -1.4452815e+01
+4.0099605e+04 -2.5842732e+01 -5.6050766e+02
+9.1955622e+04 -8.0119310e+01 -2.2753477e+03
+1.4614861e+05 -1.2513128e+02 -4.8995000e+03
+1.8931474e+05 -1.2298006e+02 -7.4284161e+03
+2.1637646e+05 -7.1288136e+01 -8.8704202e+03
+2.2943352e+05 3.5580692e+00 -8.7972482e+03
+2.3262333e+05 6.9293556e+01 -7.4228061e+03
+2.2803028e+05 1.0515326e+02 -5.3528339e+03
+2.1416975e+05 1.0717079e+02 -3.2533490e+03
+1.8714631e+05 8.4569107e+01 -1.6014676e+03
+1.4462980e+05 5.2299444e+01 -5.8162505e+02
+9.1213543e+04 2.3729764e+01 -1.2196693e+02
+3.9885585e+04 6.3841302e+00 -8.1681646e+00
+4.4951350e+03 7.0308932e-01 -8.6460829e-01
+3.8058264e+02 9.3721211e-02 -7.6444162e-02
+2.8107625e+01 1.1143287e-02 -5.0480964e-03
+1.7221397e+00 9.9301952e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2982551e-01 4.7712599e-05 -3.9298820e-04
+4.4913610e+00 2.8316636e-05 -9.2761812e-03
+4.7121277e+01 -7.1107539e-03 -1.6392904e-01
+3.9758656e+02 -1.3690855e-01 -2.5064121e+00
+2.2780798e+03 -1.5161011e+00 -3.5210507e+01
+5.2383733e+03 -4.4882252e+00 -1.3289744e+02
+8.3725437e+03 -7.0650196e+00 -2.8368607e+02
+1.0894697e+04 -7.0715991e+00 -4.3150696e+02
+1.2492287e+04 -4.2194863e+00 -5.1811726e+02
+1.3269532e+04 6.2882172e-02 -5.1662341e+02
+1.3460149e+04 3.9044487e+00 -4.3794832e+02
+1.3184820e+04 6.0466218e+00 -3.1709083e+02
+1.2358337e+04 6.2111244e+00 -1.9349582e+02
+1.0761612e+04 4.9169832e+00 -9.5821535e+01
+8.2774675e+03 3.0426992e+00 -3.5385050e+01
+5.1901659e+03 1.3870396e+00 -8.0126600e+00
+2.2626801e+03 3.9352865e-01 -7.6602926e-01
+3.9516450e+02 5.4706675e-02 -8.1868225e-02
+4.6828224e+01 7.7867353e-03 -8.2994751e-03
+4.4612582e+00 1.0464310e-03 -6.3724018e-04
+3.2741949e-01 1.0629397e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.7324351e-02 1.3219071e-06 -1.2094157e-04
+5.4727636e-01 -3.1651844e-05 -1.9812795e-03
+4.6207902e+00 -7.9980080e-04 -2.4661160e-02
+3.0150542e+01 -1.0058747e-02 -2.6284535e-01
+1.3223828e+02 -7.7041063e-02 -2.2319277e+00
+2.9840568e+02 -2.1785469e-01 -7.7878302e+00
+4.7788527e+02 -3.4385581e-01 -1.6388481e+01
+6.2438886e+02 -3.4907797e-01 -2.4949271e+01
+7.1839449e+02 -2.1318068e-01 -3.0092933e+01
+7.6464179e+02 -2.5657956e-03 -3.0155841e+01
+7.7607009e+02 1.8986099e-01 -2.5679083e+01
+7.5955977e+02 2.9914116e-01 -1.8668464e+01
+7.1031856e+02 3.0930459e-01 -1.1442836e+01
+6.1628425e+02 2.4552289e-01 -5.7097540e+00
+4.7198814e+02 1.5212398e-01 -2.1531797e+00
+2.9530697e+02 6.9845677e-02 -5.2763507e-01
+1.3115566e+02 2.0788251e-02 -6.7766835e-02
+2.9929751e+01 3.4487736e-03 -7.9528671e-03
+4.5874994e+00 5.2660357e-04 -8.7038493e-04
+5.4318210e-01 7.6359611e-05 -7.2576516e-05
+4.6949915e-02 8.4357251e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7421662e-03 0.0000000e+00 -1.6810034e-05
+4.8340448e-02 0.0000000e+00 -2.3330115e-04
+3.4644330e-01 0.0000000e+00 -2.3779389e-03
+1.8832368e+00 0.0000000e+00 -2.0025979e-02
+6.9899821e+00 0.0000000e+00 -1.2687898e-01
+1.5379281e+01 0.0000000e+00 -4.1236934e-01
+2.4601132e+01 0.0000000e+00 -8.5356823e-01
+3.2239636e+01 0.0000000e+00 -1.2979246e+00
+3.7205989e+01 0.0000000e+00 -1.5705289e+00
+3.9677745e+01 0.0000000e+00 -1.5803053e+00
+4.0293856e+01 0.0000000e+00 -1.3510737e+00
+3.9404782e+01 0.0000000e+00 -9.8598764e-01
+3.6770372e+01 0.0000000e+00 -6.0712731e-01
+3.1798713e+01 0.0000000e+00 -3.0544397e-01
+2.4275193e+01 0.0000000e+00 -1.1770034e-01
+1.5202643e+01 0.0000000e+00 -3.0916904e-02
+6.9237285e+00 0.0000000e+00 -4.8778910e-03
+1.8672690e+00 0.0000000e+00 -6.4276606e-04
+3.4361088e-01 0.0000000e+00 -7.5693406e-05
+4.7939989e-02 0.0000000e+00 -6.6832332e-06
+4.7014805e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.7608306e-03 -1.0096630e-06 -1.7654742e-05
+4.8532041e-02 3.6436637e-05 -2.4568462e-04
+3.4784723e-01 8.5834306e-04 -2.5079652e-03
+1.8912025e+00 1.0652666e-02 -2.1126366e-02
+7.0213372e+00 8.1273085e-02 -1.3375454e-01
+1.5450131e+01 2.2866098e-01 -4.3326548e-01
+2.4702157e+01 3.5757299e-01 -8.9186283e-01
+3.2336818e+01 3.5692946e-01 -1.3459738e+00
+3.7264196e+01 2.0925640e-01 -1.6134367e+00
+3.9681200e+01 -1.1328091e-02 -1.6055635e+00
+4.0250080e+01 -2.0624279e-01 -1.3555445e+00
+3.9335593e+01 -3.1050977e-01 -9.7584586e-01
+3.6699471e+01 -3.1253400e-01 -5.9241111e-01
+3.1742692e+01 -2.4249248e-01 -2.9389721e-01
+2.4240264e+01 -1.4715324e-01 -1.1181532e-01
+1.5186245e+01 -6.6329299e-02 -2.9087700e-02
+6.9187039e+00 -1.9471046e-02 -4.5920254e-03
+1.8665483e+00 -3.2623420e-03 -6.0903052e-04
+3.4358499e-01 -5.1092193e-04 -7.2220128e-05
+4.7949849e-02 -7.5677564e-05 -6.4025165e-06
+4.7035267e-03 -8.4486719e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7496093e-02 -4.5820998e-05 -1.2693034e-04
+5.4926318e-01 1.0993489e-05 -2.0883075e-03
+4.6378724e+00 7.7415322e-03 -2.6053672e-02
+3.0267568e+01 1.4540971e-01 -2.7783641e-01
+1.3279752e+02 1.6025872e+00 -2.3583985e+00
+2.9975664e+02 4.7208537e+00 -8.2015501e+00
+4.7984184e+02 7.3608988e+00 -1.7161448e+01
+6.2626924e+02 7.2393860e+00 -2.5924282e+01
+7.1951120e+02 4.1352468e+00 -3.0966987e+01
+7.6469827e+02 -3.5810222e-01 -3.0676695e+01
+7.7522263e+02 -4.2522995e+00 -2.5783175e+01
+7.5823420e+02 -6.2900405e+00 -1.8478075e+01
+7.0897007e+02 -6.2842729e+00 -1.1157843e+01
+6.1522743e+02 -4.8579679e+00 -5.4855555e+00
+4.7133753e+02 -2.9413020e+00 -2.0407942e+00
+2.9501011e+02 -1.3152219e+00 -4.9503838e-01
+1.3107299e+02 -3.6787895e-01 -6.3959352e-02
+2.9922383e+01 -5.2265421e-02 -7.5880619e-03
+4.5879098e+00 -7.6723969e-03 -8.3696051e-04
+5.4338906e-01 -1.0495852e-03 -7.0007536e-05
+4.6978784e-02 -1.0732466e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3090835e-01 -7.1789532e-04 -4.1076085e-04
+4.5059400e+00 -5.1891658e-03 -9.7895576e-03
+4.7275265e+01 1.7612771e-02 -1.7364852e-01
+3.9895140e+02 1.2633642e+00 -2.6564393e+00
+2.2869511e+03 2.7382085e+01 -3.7307184e+01
+5.2616317e+03 8.4483981e+01 -1.4032874e+02
+8.4067183e+03 1.3066382e+02 -2.9780626e+02
+1.0927435e+04 1.2607129e+02 -4.4937629e+02
+1.2511513e+04 6.9711460e+01 -5.3417789e+02
+1.3270284e+04 -8.9865988e+00 -5.2630102e+02
+1.3445364e+04 -7.5676730e+01 -4.4009170e+02
+1.3161976e+04 -1.0965475e+02 -3.1388363e+02
+1.2335287e+04 -1.0859573e+02 -1.8852229e+02
+1.0743706e+04 -8.3582557e+01 -9.1892045e+01
+8.2665893e+03 -5.0509963e+01 -3.3445208e+01
+5.1853529e+03 -2.2455562e+01 -7.4918737e+00
+2.2614994e+03 -5.9496397e+00 -7.2941737e-01
+3.9514679e+02 -6.8477192e-01 -7.9197438e-02
+4.6843531e+01 -9.4096306e-02 -8.0804846e-03
+4.4640515e+00 -1.1302367e-02 -6.2099881e-04
+3.2770045e-01 -1.0092815e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7393301e+00 -7.3079529e-03 1.4521654e-03
+2.8363726e+01 -8.8513929e-02 3.4587058e-03
+3.8374409e+02 -6.2205412e-01 -4.3416346e-01
+4.5305837e+03 3.2166746e+00 -1.5407897e+01
+4.0239357e+04 4.6780946e+02 -5.9558711e+02
+9.2356507e+04 1.4971831e+03 -2.4091713e+03
+1.4674338e+05 2.2832955e+03 -5.1565742e+03
+1.8988106e+05 2.1570913e+03 -7.7539189e+03
+2.1670431e+05 1.1512201e+03 -9.1632760e+03
+2.2944112e+05 -2.0455452e+02 -8.9753143e+03
+2.3236548e+05 -1.3275958e+03 -7.4655483e+03
+2.2763756e+05 -1.8834349e+03 -5.2990487e+03
+2.1377685e+05 -1.8478777e+03 -3.1668648e+03
+1.8684370e+05 -1.4151045e+03 -1.5327349e+03
+1.4444814e+05 -8.5351929e+02 -5.4806681e+02
+9.1135337e+04 -3.7871762e+02 -1.1359950e+02
+3.9869101e+04 -9.5091113e+01 -7.9741049e+00
+4.4963747e+03 -9.0446938e+00 -8.5382875e-01
+3.8083673e+02 -1.1264886e+00 -7.5518188e-02
+2.8134183e+01 -1.0840401e-01 -4.9746657e-03
+1.7241193e+00 -7.9635750e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.2108293e+00 -4.9660959e-02 2.5582693e-02
+1.1898521e+02 -8.8305849e-01 5.1349428e-01
+2.0807203e+03 -1.4121097e+01 8.9908020e+00
+3.7229764e+04 -2.2856366e+02 1.5856848e+02
+5.8330063e+05 -7.5270708e+02 -2.8026387e+03
+1.4939138e+06 -5.9706197e+02 -1.2741355e+04
+2.4570840e+06 -6.7448611e+02 -2.7666986e+04
+3.1557787e+06 -1.5674567e+03 -4.1559977e+04
+3.5112393e+06 -3.2256761e+03 -4.8864967e+04
+3.6225670e+06 -5.0683246e+03 -4.7552478e+04
+3.6229245e+06 -6.4219105e+03 -3.9267417e+04
+3.5749595e+06 -6.8747855e+03 -2.7646618e+04
+3.4339661e+06 -6.3894027e+03 -1.6368962e+04
+3.0755840e+06 -5.2239823e+03 -7.8431417e+03
+2.3963804e+06 -3.7651399e+03 -2.7947394e+03
+1.4614552e+06 -2.3598248e+03 -6.3393119e+02
+5.7360815e+05 -1.2241705e+03 -1.8740825e+02
+3.7026811e+04 -2.2318734e+02 -1.0784926e+01
+2.0673596e+03 -1.3746703e+01 -6.1903466e-01
+1.1810366e+02 -8.5417255e-01 -3.0806046e-02
+6.1590988e+00 -4.7706656e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3168036e+01 -1.5439871e-01 7.1832511e-02
+2.5739137e+02 -2.9611995e+00 1.5170145e+00
+4.5534117e+03 -5.1426559e+01 2.7834514e+01
+8.0488443e+04 -8.9661065e+02 5.0539233e+02
+1.3034440e+06 -4.5228579e+03 -4.4764747e+03
+3.1336123e+06 -7.2387927e+03 -2.1751461e+04
+5.0603150e+06 -1.0248755e+04 -4.7743067e+04
+6.4880798e+06 -1.3748103e+04 -7.1795444e+04
+7.2611169e+06 -1.7465589e+04 -8.4238632e+04
+7.5469319e+06 -2.0653144e+04 -8.1681518e+04
+7.5764871e+06 -2.2485701e+04 -6.7127864e+04
+7.4590407e+06 -2.2457700e+04 -4.6961865e+04
+7.1177219e+06 -2.0547505e+04 -2.7557635e+04
+6.3378012e+06 -1.7161559e+04 -1.3037382e+04
+4.9445731e+06 -1.2953605e+04 -4.5872069e+03
+3.0695842e+06 -8.6168570e+03 -1.1157958e+03
+1.2823594e+06 -4.7463290e+03 -5.3454224e+02
+7.9973282e+04 -8.4923954e+02 -2.9566503e+01
+4.5207528e+03 -4.8581532e+01 -1.6184135e+00
+2.5532479e+02 -2.7887965e+00 -7.6890602e-02
+1.3051213e+01 -1.4494534e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0547701e+01 -2.8798341e-01 9.2588520e-02
+4.0140626e+02 -5.6261844e+00 1.9582283e+00
+7.0740722e+03 -9.9290118e+01 3.5773345e+01
+1.2415499e+05 -1.7487351e+03 6.4234436e+02
+2.0406808e+06 -9.3155178e+03 -6.4852138e+03
+4.8184467e+06 -1.5734432e+04 -3.1502014e+04
+7.7231780e+06 -2.2509413e+04 -6.9056869e+04
+9.8701082e+06 -2.9286494e+04 -1.0357757e+05
+1.1036435e+07 -3.5484043e+04 -1.2118206e+05
+1.1474232e+07 -4.0189348e+04 -1.1719311e+05
+1.1523506e+07 -4.2476431e+04 -9.6083025e+04
+1.1343924e+07 -4.1792062e+04 -6.7050667e+04
+1.0823081e+07 -3.8145395e+04 -3.9199911e+04
+9.6450979e+06 -3.2081212e+04 -1.8400464e+04
+7.5481179e+06 -2.4517344e+04 -6.3374185e+03
+4.7198985e+06 -1.6534721e+04 -1.4384574e+03
+2.0067971e+06 -9.2119928e+03 -6.8180955e+02
+1.2327706e+05 -1.6488418e+03 -3.8090971e+01
+7.0186041e+03 -9.3310737e+01 -2.0921320e+00
+3.9791910e+02 -5.2691126e+00 -9.9216743e-02
+2.0352080e+01 -2.6881497e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6595426e+01 -3.6313478e-01 4.3433454e-02
+5.1802688e+02 -7.1184548e+00 9.1785306e-01
+9.0947958e+03 -1.2580923e+02 1.6616857e+01
+1.5899832e+05 -2.2135273e+03 2.9365371e+02
+2.5797128e+06 -1.1946930e+04 -8.9304817e+03
+6.1127782e+06 -2.0466731e+04 -4.1206080e+04
+9.7802017e+06 -2.9322310e+04 -8.9413777e+04
+1.2451581e+07 -3.7777201e+04 -1.3342255e+05
+1.3866577e+07 -4.5084552e+04 -1.5558691e+05
+1.4371970e+07 -5.0334700e+04 -1.5017202e+05
+1.4415405e+07 -5.2663846e+04 -1.2301954e+05
+1.4204303e+07 -5.1567505e+04 -8.5837393e+04
+1.3591440e+07 -4.7074163e+04 -5.0150751e+04
+1.2160341e+07 -3.9744479e+04 -2.3411856e+04
+9.5524434e+06 -3.0555607e+04 -7.8130874e+03
+5.9836291e+06 -2.0734984e+04 -1.4133650e+03
+2.5346692e+06 -1.1607969e+04 -3.7882699e+02
+1.5780811e+05 -2.0843148e+03 -2.1572873e+01
+9.0192836e+03 -1.1805114e+02 -1.2017542e+00
+5.1326558e+02 -6.6551030e+00 -5.7404031e-02
+2.6327893e+01 -3.3832480e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0599943e+01 -3.0727299e-01 -6.4525241e-02
+5.9460416e+02 -6.0204282e+00 -1.3267298e+00
+1.0412364e+04 -1.0623381e+02 -2.3665052e+01
+1.8162409e+05 -1.8642654e+03 -4.1808187e+02
+2.8748176e+06 -1.0096200e+04 -1.1457808e+04
+6.8998456e+06 -1.7377493e+04 -4.9678118e+04
+1.1051036e+07 -2.4887530e+04 -1.0643352e+05
+1.4021490e+07 -3.1914127e+04 -1.5792814e+05
+1.5539840e+07 -3.7833600e+04 -1.8359499e+05
+1.6039951e+07 -4.1975334e+04 -1.7694352e+05
+1.6059435e+07 -4.3728449e+04 -1.4492036e+05
+1.5844253e+07 -4.2740882e+04 -1.0118244e+05
+1.5218285e+07 -3.9039433e+04 -5.9131958e+04
+1.3680443e+07 -3.3040749e+04 -2.7476773e+04
+1.0783727e+07 -2.5489055e+04 -8.8571198e+03
+6.7479790e+06 -1.7357075e+04 -1.0944391e+03
+2.8218162e+06 -9.7429932e+03 2.6088981e+02
+1.8022050e+05 -1.7544784e+03 1.4470117e+01
+1.0322861e+04 -9.9620648e+01 7.9726868e-01
+5.8893435e+02 -5.6245852e+00 3.8345892e-02
+3.0280171e+01 -2.8605762e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2713362e+01 -1.2048888e-01 -1.7220692e-01
+6.3480910e+02 -2.3588336e+00 -3.5422613e+00
+1.1101485e+04 -4.1568625e+01 -6.2921770e+01
+1.9344512e+05 -7.2825639e+02 -1.1026741e+03
+2.9952802e+06 -3.9468020e+03 -1.3393259e+04
+7.2802267e+06 -6.8033065e+03 -5.5519656e+04
+1.1680287e+07 -9.7390897e+03 -1.1779507e+05
+1.4785166e+07 -1.2463069e+04 -1.7405666e+05
+1.6325087e+07 -1.4733704e+04 -2.0190163e+05
+1.6794445e+07 -1.6304848e+04 -1.9439724e+05
+1.6789792e+07 -1.6956667e+04 -1.5920712e+05
+1.6581734e+07 -1.6563148e+04 -1.1121729e+05
+1.5975340e+07 -1.5134777e+04 -6.5012411e+04
+1.4413877e+07 -1.2824599e+04 -3.0105723e+04
+1.1389048e+07 -9.9096754e+03 -9.4461127e+03
+7.1147915e+06 -6.7592456e+03 -7.2823131e+02
+2.9377407e+06 -3.7989759e+03 8.7994798e+02
+1.9192654e+05 -6.8521357e+02 4.9821352e+01
+1.1004289e+04 -3.8971049e+01 2.7838091e+00
+6.2862994e+02 -2.2031177e+00 1.3452448e-01
+3.2363807e+01 -1.1213513e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3352787e+01 1.2048888e-01 -2.1677998e-01
+6.4694714e+02 2.3588335e+00 -4.4547259e+00
+1.1309331e+04 4.1568624e+01 -7.8993661e+01
+1.9701436e+05 7.2825635e+02 -1.3812682e+03
+3.0242249e+06 3.9468016e+03 -1.4119705e+04
+7.3885607e+06 6.8033065e+03 -5.7608621e+04
+1.1863293e+07 9.7390908e+03 -1.2179087e+05
+1.5004335e+07 1.2463067e+04 -1.7968616e+05
+1.6543943e+07 1.4733704e+04 -2.0826714e+05
+1.6998053e+07 1.6304849e+04 -2.0045691e+05
+1.6983620e+07 1.6956668e+04 -1.6416752e+05
+1.6779674e+07 1.6563147e+04 -1.1470449e+05
+1.6184802e+07 1.5134772e+04 -6.7055800e+04
+1.4622974e+07 1.2824598e+04 -3.1011985e+04
+1.1564104e+07 9.9096730e+03 -9.6319617e+03
+7.2186564e+06 6.7592454e+03 -5.7110136e+02
+2.9652369e+06 3.7989756e+03 1.1322692e+03
+1.9546062e+05 6.8521351e+02 6.4318099e+01
+1.1209752e+04 3.8971048e+01 3.6033756e+00
+6.4060813e+02 2.2031177e+00 1.7440735e-01
+3.2993784e+01 1.1213513e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2713362e+01 3.0727299e-01 -1.7220691e-01
+6.3480910e+02 6.0204282e+00 -3.5422613e+00
+1.1101485e+04 1.0623381e+02 -6.2921771e+01
+1.9344512e+05 1.8642654e+03 -1.1026741e+03
+2.9952802e+06 1.0096200e+04 -1.3393258e+04
+7.2802267e+06 1.7377493e+04 -5.5519656e+04
+1.1680287e+07 2.4887529e+04 -1.1779507e+05
+1.4785166e+07 3.1914126e+04 -1.7405666e+05
+1.6325087e+07 3.7833601e+04 -2.0190162e+05
+1.6794445e+07 4.1975330e+04 -1.9439724e+05
+1.6789792e+07 4.3728449e+04 -1.5920712e+05
+1.6581734e+07 4.2740882e+04 -1.1121729e+05
+1.5975340e+07 3.9039435e+04 -6.5012413e+04
+1.4413877e+07 3.3040750e+04 -3.0105723e+04
+1.1389048e+07 2.5489057e+04 -9.4461139e+03
+7.1147915e+06 1.7357077e+04 -7.2823285e+02
+2.9377408e+06 9.7429929e+03 8.7994809e+02
+1.9192654e+05 1.7544784e+03 4.9821361e+01
+1.1004289e+04 9.9620648e+01 2.7838091e+00
+6.2862994e+02 5.6245851e+00 1.3452448e-01
+3.2363807e+01 2.8605761e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0599943e+01 3.6313478e-01 -6.4525225e-02
+5.9460416e+02 7.1184547e+00 -1.3267300e+00
+1.0412364e+04 1.2580923e+02 -2.3665050e+01
+1.8162409e+05 2.2135273e+03 -4.1808197e+02
+2.8748176e+06 1.1946930e+04 -1.1457807e+04
+6.8998456e+06 2.0466731e+04 -4.9678118e+04
+1.1051036e+07 2.9322310e+04 -1.0643352e+05
+1.4021490e+07 3.7777200e+04 -1.5792814e+05
+1.5539840e+07 4.5084551e+04 -1.8359499e+05
+1.6039951e+07 5.0334703e+04 -1.7694352e+05
+1.6059435e+07 5.2663844e+04 -1.4492036e+05
+1.5844253e+07 5.1567506e+04 -1.0118244e+05
+1.5218285e+07 4.7074166e+04 -5.9131956e+04
+1.3680443e+07 3.9744478e+04 -2.7476772e+04
+1.0783727e+07 3.0555604e+04 -8.8571183e+03
+6.7479790e+06 2.0734982e+04 -1.0944415e+03
+2.8218162e+06 1.1607969e+04 2.6088982e+02
+1.8022050e+05 2.0843148e+03 1.4470122e+01
+1.0322861e+04 1.1805114e+02 7.9726835e-01
+5.8893435e+02 6.6551030e+00 3.8345873e-02
+3.0280171e+01 3.3832481e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6595426e+01 2.8798341e-01 4.3433450e-02
+5.1802688e+02 5.6261844e+00 9.1785310e-01
+9.0947958e+03 9.9290118e+01 1.6616856e+01
+1.5899832e+05 1.7487351e+03 2.9365369e+02
+2.5797128e+06 9.3155179e+03 -8.9304819e+03
+6.1127782e+06 1.5734433e+04 -4.1206080e+04
+9.7802017e+06 2.2509413e+04 -8.9413776e+04
+1.2451581e+07 2.9286494e+04 -1.3342255e+05
+1.3866577e+07 3.5484041e+04 -1.5558691e+05
+1.4371970e+07 4.0189348e+04 -1.5017202e+05
+1.4415405e+07 4.2476433e+04 -1.2301954e+05
+1.4204303e+07 4.1792063e+04 -8.5837392e+04
+1.3591440e+07 3.8145395e+04 -5.0150753e+04
+1.2160341e+07 3.2081215e+04 -2.3411857e+04
+9.5524434e+06 2.4517345e+04 -7.8130867e+03
+5.9836291e+06 1.6534721e+04 -1.4133654e+03
+2.5346692e+06 9.2119927e+03 -3.7882692e+02
+1.5780811e+05 1.6488418e+03 -2.1572872e+01
+9.0192836e+03 9.3310736e+01 -1.2017543e+00
+5.1326558e+02 5.2691126e+00 -5.7404020e-02
+2.6327893e+01 2.6881496e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0547701e+01 1.5439871e-01 9.2588523e-02
+4.0140626e+02 2.9611994e+00 1.9582283e+00
+7.0740722e+03 5.1426558e+01 3.5773347e+01
+1.2415499e+05 8.9661064e+02 6.4234429e+02
+2.0406808e+06 4.5228580e+03 -6.4852133e+03
+4.8184467e+06 7.2387921e+03 -3.1502015e+04
+7.7231780e+06 1.0248754e+04 -6.9056871e+04
+9.8701082e+06 1.3748102e+04 -1.0357757e+05
+1.1036435e+07 1.7465586e+04 -1.2118206e+05
+1.1474232e+07 2.0653143e+04 -1.1719311e+05
+1.1523506e+07 2.2485702e+04 -9.6083024e+04
+1.1343924e+07 2.2457700e+04 -6.7050667e+04
+1.0823081e+07 2.0547505e+04 -3.9199909e+04
+9.6450979e+06 1.7161558e+04 -1.8400466e+04
+7.5481179e+06 1.2953605e+04 -6.3374200e+03
+4.7198985e+06 8.6168573e+03 -1.4384576e+03
+2.0067971e+06 4.7463293e+03 -6.8180953e+02
+1.2327706e+05 8.4923955e+02 -3.8090969e+01
+7.0186041e+03 4.8581531e+01 -2.0921319e+00
+3.9791910e+02 2.7887965e+00 -9.9216742e-02
+2.0352080e+01 1.4494534e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3168036e+01 4.9660958e-02 7.1832506e-02
+2.5739137e+02 8.8305847e-01 1.5170146e+00
+4.5534117e+03 1.4121097e+01 2.7834516e+01
+8.0488443e+04 2.2856365e+02 5.0539232e+02
+1.3034440e+06 7.5270702e+02 -4.4764747e+03
+3.1336123e+06 5.9706164e+02 -2.1751461e+04
+5.0603150e+06 6.7448672e+02 -4.7743067e+04
+6.4880798e+06 1.5674564e+03 -7.1795444e+04
+7.2611169e+06 3.2256767e+03 -8.4238630e+04
+7.5469319e+06 5.0683245e+03 -8.1681517e+04
+7.5764871e+06 6.4219104e+03 -6.7127864e+04
+7.4590407e+06 6.8747868e+03 -4.6961865e+04
+7.1177219e+06 6.3894031e+03 -2.7557635e+04
+6.3378012e+06 5.2239822e+03 -1.3037382e+04
+4.9445731e+06 3.7651401e+03 -4.5872069e+03
+3.0695842e+06 2.3598249e+03 -1.1157956e+03
+1.2823594e+06 1.2241705e+03 -5.3454227e+02
+7.9973282e+04 2.2318733e+02 -2.9566507e+01
+4.5207528e+03 1.3746704e+01 -1.6184134e+00
+2.5532479e+02 8.5417265e-01 -7.6890602e-02
+1.3051213e+01 4.7706659e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.2108293e+00 7.3079528e-03 2.5582690e-02
+1.1898521e+02 8.8513933e-02 5.1349432e-01
+2.0807203e+03 6.2205410e-01 8.9908020e+00
+3.7229764e+04 -3.2166747e+00 1.5856848e+02
+5.8330063e+05 -4.6780946e+02 -2.8026388e+03
+1.4939138e+06 -1.4971831e+03 -1.2741355e+04
+2.4570840e+06 -2.2832954e+03 -2.7666986e+04
+3.1557787e+06 -2.1570912e+03 -4.1559977e+04
+3.5112393e+06 -1.1512200e+03 -4.8864966e+04
+3.6225670e+06 2.0455447e+02 -4.7552478e+04
+3.6229245e+06 1.3275957e+03 -3.9267416e+04
+3.5749595e+06 1.8834348e+03 -2.7646618e+04
+3.4339661e+06 1.8478777e+03 -1.6368962e+04
+3.0755840e+06 1.4151046e+03 -7.8431418e+03
+2.3963804e+06 8.5351929e+02 -2.7947392e+03
+1.4614552e+06 3.7871762e+02 -6.3393123e+02
+5.7360815e+05 9.5091102e+01 -1.8740826e+02
+3.7026811e+04 9.0446937e+00 -1.0784926e+01
+2.0673596e+03 1.1264887e+00 -6.1903444e-01
+1.1810366e+02 1.0840400e-01 -3.0806052e-02
+6.1590988e+00 7.9635745e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7393301e+00 7.1789532e-04 1.4521652e-03
+2.8363726e+01 5.1891671e-03 3.4587042e-03
+3.8374409e+02 -1.7612772e-02 -4.3416343e-01
+4.5305837e+03 -1.2633642e+00 -1.5407897e+01
+4.0239357e+04 -2.7382085e+01 -5.9558711e+02
+9.2356507e+04 -8.4483981e+01 -2.4091713e+03
+1.4674338e+05 -1.3066382e+02 -5.1565742e+03
+1.8988106e+05 -1.2607128e+02 -7.7539189e+03
+2.1670431e+05 -6.9711460e+01 -9.1632760e+03
+2.2944112e+05 8.9865971e+00 -8.9753142e+03
+2.3236548e+05 7.5676732e+01 -7.4655483e+03
+2.2763756e+05 1.0965475e+02 -5.2990487e+03
+2.1377685e+05 1.0859573e+02 -3.1668648e+03
+1.8684370e+05 8.3582563e+01 -1.5327349e+03
+1.4444814e+05 5.0509964e+01 -5.4806680e+02
+9.1135337e+04 2.2455560e+01 -1.1359951e+02
+3.9869101e+04 5.9496395e+00 -7.9741049e+00
+4.4963747e+03 6.8477189e-01 -8.5382872e-01
+3.8083673e+02 9.4096306e-02 -7.5518176e-02
+2.8134183e+01 1.1302366e-02 -4.9746664e-03
+1.7241193e+00 1.0092815e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.3090835e-01 4.5820994e-05 -4.1076077e-04
+4.5059400e+00 -1.0993596e-05 -9.7895591e-03
+4.7275265e+01 -7.7415332e-03 -1.7364852e-01
+3.9895140e+02 -1.4540970e-01 -2.6564393e+00
+2.2869511e+03 -1.6025871e+00 -3.7307184e+01
+5.2616317e+03 -4.7208536e+00 -1.4032874e+02
+8.4067183e+03 -7.3608990e+00 -2.9780627e+02
+1.0927435e+04 -7.2393860e+00 -4.4937630e+02
+1.2511513e+04 -4.1352464e+00 -5.3417790e+02
+1.3270284e+04 3.5810223e-01 -5.2630102e+02
+1.3445364e+04 4.2522996e+00 -4.4009170e+02
+1.3161976e+04 6.2900404e+00 -3.1388363e+02
+1.2335287e+04 6.2842726e+00 -1.8852229e+02
+1.0743706e+04 4.8579677e+00 -9.1892046e+01
+8.2665893e+03 2.9413019e+00 -3.3445208e+01
+5.1853529e+03 1.3152220e+00 -7.4918736e+00
+2.2614994e+03 3.6787894e-01 -7.2941741e-01
+3.9514679e+02 5.2265426e-02 -7.9197433e-02
+4.6843531e+01 7.6723965e-03 -8.0804845e-03
+4.4640515e+00 1.0495852e-03 -6.2099878e-04
+3.2770045e-01 1.0732466e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.7496093e-02 1.0096635e-06 -1.2693034e-04
+5.4926318e-01 -3.6436634e-05 -2.0883077e-03
+4.6378724e+00 -8.5834297e-04 -2.6053671e-02
+3.0267568e+01 -1.0652666e-02 -2.7783640e-01
+1.3279752e+02 -8.1273087e-02 -2.3583985e+00
+2.9975664e+02 -2.2866098e-01 -8.2015501e+00
+4.7984184e+02 -3.5757299e-01 -1.7161448e+01
+6.2626924e+02 -3.5692942e-01 -2.5924282e+01
+7.1951120e+02 -2.0925641e-01 -3.0966988e+01
+7.6469827e+02 1.1328074e-02 -3.0676695e+01
+7.7522263e+02 2.0624279e-01 -2.5783175e+01
+7.5823420e+02 3.1050974e-01 -1.8478075e+01
+7.0897007e+02 3.1253401e-01 -1.1157843e+01
+6.1522743e+02 2.4249248e-01 -5.4855556e+00
+4.7133753e+02 1.4715325e-01 -2.0407942e+00
+2.9501011e+02 6.6329296e-02 -4.9503839e-01
+1.3107299e+02 1.9471048e-02 -6.3959350e-02
+2.9922383e+01 3.2623420e-03 -7.5880621e-03
+4.5879098e+00 5.1092203e-04 -8.3696043e-04
+5.4338906e-01 7.5677571e-05 -7.0007537e-05
+4.6978784e-02 8.4486732e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7608306e-03 0.0000000e+00 -1.7654741e-05
+4.8532041e-02 0.0000000e+00 -2.4568463e-04
+3.4784723e-01 0.0000000e+00 -2.5079652e-03
+1.8912025e+00 0.0000000e+00 -2.1126365e-02
+7.0213372e+00 0.0000000e+00 -1.3375454e-01
+1.5450131e+01 0.0000000e+00 -4.3326548e-01
+2.4702157e+01 0.0000000e+00 -8.9186283e-01
+3.2336818e+01 0.0000000e+00 -1.3459739e+00
+3.7264196e+01 0.0000000e+00 -1.6134367e+00
+3.9681200e+01 0.0000000e+00 -1.6055635e+00
+4.0250080e+01 0.0000000e+00 -1.3555445e+00
+3.9335593e+01 0.0000000e+00 -9.7584586e-01
+3.6699471e+01 0.0000000e+00 -5.9241111e-01
+3.1742692e+01 0.0000000e+00 -2.9389721e-01
+2.4240264e+01 0.0000000e+00 -1.1181532e-01
+1.5186245e+01 0.0000000e+00 -2.9087700e-02
+6.9187039e+00 0.0000000e+00 -4.5920255e-03
+1.8665483e+00 0.0000000e+00 -6.0903047e-04
+3.4358499e-01 0.0000000e+00 -7.2220125e-05
+4.7949849e-02 0.0000000e+00 -6.4025156e-06
+4.7035267e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.7794832e-03 -4.4322219e-07 -1.8209344e-05
+4.8725181e-02 4.2688687e-05 -2.5403751e-04
+3.4927542e-01 9.1494190e-04 -2.5971663e-03
+1.8993658e+00 1.1126987e-02 -2.1887438e-02
+7.0535984e+00 8.4378003e-02 -1.3852667e-01
+1.5522875e+01 2.3638686e-01 -4.4765783e-01
+2.4805161e+01 3.6708529e-01 -9.1774734e-01
+3.2434547e+01 3.6201924e-01 -1.3774957e+00
+3.7320798e+01 2.0633788e-01 -1.6404362e+00
+3.9681574e+01 -2.0137658e-02 -1.6206723e+00
+4.0203155e+01 -2.1540927e-01 -1.3583387e+00
+3.9264248e+01 -3.1556128e-01 -9.7143185e-01
+3.6627545e+01 -3.1269695e-01 -5.8680920e-01
+3.1686255e+01 -2.3999997e-01 -2.9037221e-01
+2.4205013e+01 -1.4464873e-01 -1.1047155e-01
+1.5169509e+01 -6.4957092e-02 -2.8778562e-02
+6.9134664e+00 -1.8994074e-02 -4.5469876e-03
+1.8657673e+00 -3.1631084e-03 -6.0279185e-04
+3.4354854e-01 -4.9511999e-04 -7.1224949e-05
+4.7958378e-02 -7.3475458e-05 -6.2790531e-06
+4.7054578e-03 -8.2101416e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7667017e-02 -4.0290521e-05 -1.3107676e-04
+5.5126029e-01 7.7948049e-05 -2.1634477e-03
+4.6552293e+00 8.4307157e-03 -2.7036144e-02
+3.0387606e+01 1.5246319e-01 -2.8841075e-01
+1.3337466e+02 1.6664706e+00 -2.4476441e+00
+3.0114813e+02 4.8887578e+00 -8.4915095e+00
+4.8184302e+02 7.5684544e+00 -1.7694061e+01
+6.2816608e+02 7.3495922e+00 -2.6578479e+01
+7.2060061e+02 4.0715597e+00 -3.1533111e+01
+7.6469687e+02 -5.4928073e-01 -3.1002570e+01
+7.7431519e+02 -4.4529106e+00 -2.5857636e+01
+7.5686825e+02 -6.4048788e+00 -1.8402368e+01
+7.0760402e+02 -6.2957923e+00 -1.1053221e+01
+6.1416542e+02 -4.8121177e+00 -5.4190857e+00
+4.7068321e+02 -2.8934660e+00 -2.0159438e+00
+2.9470840e+02 -1.2895824e+00 -4.8960567e-01
+1.3098713e+02 -3.5952873e-01 -6.3214556e-02
+2.9914359e+01 -5.0879212e-02 -7.4752577e-03
+4.5882437e+00 -7.4854249e-03 -8.1888735e-04
+5.4359008e-01 -1.0254030e-03 -6.7975845e-05
+4.7007385e-02 -1.0478752e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3197766e-01 -6.8234306e-04 -4.2725462e-04
+4.5205012e+00 -4.7050400e-03 -1.0205476e-02
+4.7431076e+01 2.3418853e-02 -1.8100478e-01
+4.0035015e+02 1.3384946e+00 -2.7657921e+00
+2.2961356e+03 2.8528371e+01 -3.8812148e+01
+5.2856680e+03 8.7670080e+01 -1.4562971e+02
+8.4417848e+03 1.3459780e+02 -3.0772551e+02
+1.0960560e+04 1.2813570e+02 -4.6163721e+02
+1.2530318e+04 6.8506536e+01 -5.4487746e+02
+1.3270044e+04 -1.2572492e+01 -5.3261376e+02
+1.3429535e+04 -7.9464577e+01 -4.4177374e+02
+1.3138440e+04 -1.1189469e+02 -3.1274712e+02
+1.2311961e+04 -1.0894694e+02 -1.8676993e+02
+1.0725753e+04 -8.2862422e+01 -9.0766579e+01
+8.2556869e+03 -4.9723011e+01 -3.3034619e+01
+5.1804810e+03 -2.2044368e+01 -7.4079560e+00
+2.2602758e+03 -5.8250675e+00 -7.1880222e-01
+3.9512532e+02 -6.7077275e-01 -7.7441947e-02
+4.6858887e+01 -9.2456934e-02 -7.8262604e-03
+4.4668921e+00 -1.1095654e-02 -5.9664914e-04
+3.2798752e-01 -9.8850222e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7443381e+00 -7.1394464e-03 1.4491199e-03
+2.8443940e+01 -8.5932132e-02 2.4618198e-03
+3.8482227e+02 -5.8558148e-01 -4.6671815e-01
+4.5438388e+03 3.7958889e+00 -1.6179263e+01
+4.0384478e+04 4.8838825e+02 -6.2116064e+02
+9.2772076e+04 1.5571272e+03 -2.5061873e+03
+1.4735545e+05 2.3567231e+03 -5.3403771e+03
+1.9045555e+05 2.1950954e+03 -7.9818259e+03
+2.1702546e+05 1.1288529e+03 -9.3633170e+03
+2.2943139e+05 -2.7050229e+02 -9.0956607e+03
+2.3208916e+05 -1.3975423e+03 -7.5012563e+03
+2.2723260e+05 -1.9257736e+03 -5.2824170e+03
+2.1337932e+05 -1.8561884e+03 -3.1376462e+03
+1.8654073e+05 -1.4037698e+03 -1.5137667e+03
+1.4426654e+05 -8.4054305e+02 -5.4134516e+02
+9.1056389e+04 -3.7209968e+02 -1.1234133e+02
+3.9851961e+04 -9.3195403e+01 -7.8302529e+00
+4.4976451e+03 -8.9433599e+00 -8.2812166e-01
+3.8109990e+02 -1.1111495e+00 -7.2602687e-02
+2.8161792e+01 -1.0655589e-01 -4.7517019e-03
+1.7261822e+00 -7.8030210e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.2268569e+00 -4.9141261e-02 2.5974273e-02
+1.1928121e+02 -8.7544320e-01 5.1947919e-01
+2.0856195e+03 -1.4030369e+01 9.0650174e+00
+3.7310770e+04 -2.2764191e+02 1.5949668e+02
+5.8754022e+05 -7.2883040e+02 -2.8628766e+03
+1.5062316e+06 -5.2479592e+02 -1.3098700e+04
+2.4752958e+06 -5.7728276e+02 -2.8376498e+04
+3.1734611e+06 -1.4959702e+03 -4.2367824e+04
+3.5225945e+06 -3.2091996e+03 -4.9384986e+04
+3.6255489e+06 -5.0924865e+03 -4.7544859e+04
+3.6192045e+06 -6.4461714e+03 -3.8776185e+04
+3.5680502e+06 -6.8654703e+03 -2.6927214e+04
+3.4272266e+06 -6.3402354e+03 -1.5703614e+04
+3.0710208e+06 -5.1537423e+03 -7.3904682e+03
+2.3944113e+06 -3.7000731e+03 -2.5617935e+03
+1.4613876e+06 -2.3164394e+03 -5.4987674e+02
+5.7435120e+05 -1.2037951e+03 -1.8232741e+02
+3.7065956e+04 -2.1999145e+02 -1.0424469e+01
+2.0699377e+03 -1.3519245e+01 -5.9451891e-01
+1.1826997e+02 -8.3796282e-01 -2.9415552e-02
+6.1685692e+00 -4.6688901e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3198735e+01 -1.5320289e-01 7.3362850e-02
+2.5798769e+02 -2.9438748e+00 1.5454747e+00
+4.5638615e+03 -5.1232828e+01 2.8298163e+01
+8.0671008e+04 -8.9507311e+02 5.1316383e+02
+1.3121357e+06 -4.4981058e+03 -4.4093026e+03
+3.1577774e+06 -7.1568563e+03 -2.1942255e+04
+5.0961404e+06 -1.0127185e+04 -4.8217709e+04
+6.5240915e+06 -1.3634993e+04 -7.2090424e+04
+7.2869390e+06 -1.7390732e+04 -8.3731032e+04
+7.5587844e+06 -2.0602096e+04 -8.0073947e+04
+7.5770455e+06 -2.2416278e+04 -6.4662240e+04
+7.4541025e+06 -2.2335836e+04 -4.4253716e+04
+7.1127336e+06 -2.0371519e+04 -2.5234105e+04
+6.3358196e+06 -1.6961770e+04 -1.1444408e+04
+4.9459304e+06 -1.2773340e+04 -3.7284930e+03
+3.0728216e+06 -8.4893019e+03 -7.9296103e+02
+1.2855589e+06 -4.6798095e+03 -5.1651440e+02
+8.0102580e+04 -8.3739697e+02 -2.8407124e+01
+4.5281549e+03 -4.7782759e+01 -1.5456858e+00
+2.5575000e+02 -2.7358342e+00 -7.3021118e-02
+1.3073353e+01 -1.4184927e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0584593e+01 -2.8596038e-01 9.5865293e-02
+4.0213492e+02 -5.5968965e+00 2.0202261e+00
+7.0870370e+03 -9.8970379e+01 3.6792973e+01
+1.2438393e+05 -1.7465416e+03 6.5932044e+02
+2.0523860e+06 -9.2938316e+03 -6.2501469e+03
+4.8521260e+06 -1.5653051e+04 -3.1433296e+04
+7.7731293e+06 -2.2378073e+04 -6.9133758e+04
+9.9195964e+06 -2.9145563e+04 -1.0311139e+05
+1.1070605e+07 -3.5358793e+04 -1.1931407e+05
+1.1487971e+07 -4.0063582e+04 -1.1359183e+05
+1.1521034e+07 -4.2307983e+04 -9.1228607e+04
+1.1333874e+07 -4.1549334e+04 -6.1965194e+04
+1.0813475e+07 -3.7833390e+04 -3.4897056e+04
+9.6404215e+06 -3.1742563e+04 -1.5439863e+04
+7.5488407e+06 -2.4212631e+04 -4.7233680e+03
+4.7238275e+06 -1.6314380e+04 -8.2724823e+02
+2.0110339e+06 -9.0926299e+03 -6.5117924e+02
+1.2345103e+05 -1.6264152e+03 -3.6133094e+01
+7.0284598e+03 -9.1801261e+01 -1.9702632e+00
+3.9847591e+02 -5.1701156e+00 -9.2785639e-02
+2.0380562e+01 -2.6311733e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6621429e+01 -3.6064272e-01 4.8678756e-02
+5.1854547e+02 -7.0823150e+00 1.0155010e+00
+9.1040801e+03 -1.2541656e+02 1.8177406e+01
+1.5916233e+05 -2.2109396e+03 3.1856564e+02
+2.5912330e+06 -1.1930179e+04 -8.5652655e+03
+6.1499183e+06 -2.0396602e+04 -4.0961839e+04
+9.8352980e+06 -2.9201869e+04 -8.9234294e+04
+1.2503249e+07 -3.7635962e+04 -1.3241232e+05
+1.3896411e+07 -4.4940600e+04 -1.5266488e+05
+1.4374375e+07 -5.0171900e+04 -1.4496089e+05
+1.4396775e+07 -5.2445112e+04 -1.1619352e+05
+1.4176591e+07 -5.1267182e+04 -7.8763788e+04
+1.3565723e+07 -4.6701732e+04 -4.4178087e+04
+1.2143058e+07 -3.9346254e+04 -1.9290990e+04
+9.5446939e+06 -3.0197061e+04 -5.5570314e+03
+5.9827896e+06 -2.0472840e+04 -5.5915105e+02
+2.5368232e+06 -1.1463232e+04 -3.4258529e+02
+1.5791467e+05 -2.0563085e+03 -1.9255802e+01
+9.0254407e+03 -1.1615688e+02 -1.0573119e+00
+5.1361868e+02 -6.5307552e+00 -4.9767052e-02
+2.6346191e+01 -3.3118260e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0601938e+01 -3.0516006e-01 -5.7477399e-02
+5.9465238e+02 -5.9896920e+00 -1.1983201e+00
+1.0413329e+04 -1.0589812e+02 -2.1681293e+01
+1.8164134e+05 -1.8620086e+03 -3.8785600e+02
+2.8836110e+06 -1.0085066e+04 -1.1026381e+04
+6.9351412e+06 -1.7328710e+04 -4.9389914e+04
+1.1103462e+07 -2.4800736e+04 -1.0621659e+05
+1.4066168e+07 -3.1807014e+04 -1.5672353e+05
+1.5556027e+07 -3.7716737e+04 -1.8013450e+05
+1.6022271e+07 -4.1836693e+04 -1.7078997e+05
+1.6016609e+07 -4.3542503e+04 -1.3686701e+05
+1.5791443e+07 -4.2491025e+04 -9.2832587e+04
+1.5169556e+07 -3.8734669e+04 -5.2070879e+04
+1.3644339e+07 -3.2717184e+04 -2.2595416e+04
+1.0762313e+07 -2.5197601e+04 -6.1813807e+03
+6.7385520e+06 -1.7142744e+04 -8.4463298e+01
+2.8195966e+06 -9.6234501e+03 2.9533355e+02
+1.8017384e+05 -1.7309771e+03 1.6660901e+01
+1.0320456e+04 -9.8024748e+01 9.3365256e-01
+5.8881126e+02 -5.5195747e+00 4.5566870e-02
+3.0274577e+01 -2.8002089e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2691731e+01 -1.1965565e-01 -1.6387328e-01
+6.3439497e+02 -2.3466841e+00 -3.3927557e+00
+1.1094296e+04 -4.1435203e+01 -6.0667613e+01
+1.9331926e+05 -7.2733739e+02 -1.0694819e+03
+3.0010102e+06 -3.9427582e+03 -1.2941807e+04
+7.3120023e+06 -6.7855632e+03 -5.5260522e+04
+1.1727587e+07 -9.7070850e+03 -1.1765368e+05
+1.4820998e+07 -1.2422672e+04 -1.7287015e+05
+1.6327465e+07 -1.4688375e+04 -1.9827583e+05
+1.6758426e+07 -1.6250155e+04 -1.8784276e+05
+1.6725863e+07 -1.6883517e+04 -1.5057287e+05
+1.6507371e+07 -1.6465825e+04 -1.0223513e+05
+1.5906788e+07 -1.5016951e+04 -5.7401377e+04
+1.4361296e+07 -1.2699928e+04 -2.4838322e+04
+1.1355368e+07 -9.7973710e+03 -6.5588682e+03
+7.0974085e+06 -6.6764526e+03 3.5781025e+02
+2.9313181e+06 -3.7525913e+03 9.0962682e+02
+1.9172953e+05 -6.7603163e+02 5.1689884e+01
+1.0993401e+04 -3.8346336e+01 2.8995078e+00
+6.2803118e+02 -2.1619546e+00 1.4064374e-01
+3.2334197e+01 -1.0976690e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3321451e+01 1.1965565e-01 -2.0797552e-01
+6.4634342e+02 2.3466839e+00 -4.2976223e+00
+1.1298808e+04 4.1435201e+01 -7.6645090e+01
+1.9683014e+05 7.2733735e+02 -1.3471067e+03
+3.0286581e+06 3.9427580e+03 -1.3665789e+04
+7.4186946e+06 6.7855632e+03 -5.7370794e+04
+1.1908203e+07 9.7070860e+03 -1.2169512e+05
+1.5036329e+07 1.2422672e+04 -1.7853407e+05
+1.6540652e+07 1.4688376e+04 -2.0462005e+05
+1.6954738e+07 1.6250156e+04 -1.9380475e+05
+1.6911422e+07 1.6883517e+04 -1.5537434e+05
+1.6696910e+07 1.6465827e+04 -1.0554190e+05
+1.6108512e+07 1.5016949e+04 -5.9285256e+04
+1.4563921e+07 1.2699926e+04 -2.5632300e+04
+1.1525561e+07 9.7973714e+03 -6.6836723e+03
+7.1980836e+06 6.6764521e+03 5.3624131e+02
+2.9571084e+06 3.7525912e+03 1.1595781e+03
+1.9520211e+05 6.7603162e+02 6.6026824e+01
+1.1195377e+04 3.8346338e+01 3.7087909e+00
+6.3981304e+02 2.1619546e+00 1.7997599e-01
+3.2954226e+01 1.0976691e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2691731e+01 3.0516005e-01 -1.6387332e-01
+6.3439497e+02 5.9896921e+00 -3.3927554e+00
+1.1094296e+04 1.0589812e+02 -6.0667617e+01
+1.9331926e+05 1.8620087e+03 -1.0694819e+03
+3.0010102e+06 1.0085065e+04 -1.2941806e+04
+7.3120023e+06 1.7328710e+04 -5.5260521e+04
+1.1727587e+07 2.4800736e+04 -1.1765368e+05
+1.4820998e+07 3.1807013e+04 -1.7287015e+05
+1.6327465e+07 3.7716739e+04 -1.9827583e+05
+1.6758426e+07 4.1836693e+04 -1.8784276e+05
+1.6725863e+07 4.3542504e+04 -1.5057287e+05
+1.6507371e+07 4.2491023e+04 -1.0223513e+05
+1.5906788e+07 3.8734665e+04 -5.7401381e+04
+1.4361296e+07 3.2717184e+04 -2.4838320e+04
+1.1355368e+07 2.5197603e+04 -6.5588690e+03
+7.0974085e+06 1.7142744e+04 3.5781162e+02
+2.9313181e+06 9.6234500e+03 9.0962681e+02
+1.9172953e+05 1.7309771e+03 5.1689896e+01
+1.0993401e+04 9.8024746e+01 2.8995073e+00
+6.2803118e+02 5.5195746e+00 1.4064377e-01
+3.2334197e+01 2.8002088e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0601938e+01 3.6064272e-01 -5.7477397e-02
+5.9465238e+02 7.0823150e+00 -1.1983199e+00
+1.0413329e+04 1.2541656e+02 -2.1681300e+01
+1.8164134e+05 2.2109396e+03 -3.8785609e+02
+2.8836110e+06 1.1930179e+04 -1.1026380e+04
+6.9351412e+06 2.0396602e+04 -4.9389912e+04
+1.1103462e+07 2.9201869e+04 -1.0621659e+05
+1.4066168e+07 3.7635960e+04 -1.5672353e+05
+1.5556027e+07 4.4940599e+04 -1.8013450e+05
+1.6022271e+07 5.0171901e+04 -1.7078997e+05
+1.6016609e+07 5.2445110e+04 -1.3686701e+05
+1.5791443e+07 5.1267183e+04 -9.2832588e+04
+1.5169556e+07 4.6701734e+04 -5.2070878e+04
+1.3644339e+07 3.9346250e+04 -2.2595413e+04
+1.0762313e+07 3.0197058e+04 -6.1813806e+03
+6.7385520e+06 2.0472840e+04 -8.4464160e+01
+2.8195966e+06 1.1463232e+04 2.9533360e+02
+1.8017384e+05 2.0563085e+03 1.6660900e+01
+1.0320456e+04 1.1615688e+02 9.3365229e-01
+5.8881126e+02 6.5307551e+00 4.5566876e-02
+3.0274577e+01 3.3118260e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6621429e+01 2.8596038e-01 4.8678766e-02
+5.1854547e+02 5.5968965e+00 1.0155010e+00
+9.1040801e+03 9.8970379e+01 1.8177405e+01
+1.5916233e+05 1.7465416e+03 3.1856567e+02
+2.5912330e+06 9.2938319e+03 -8.5652655e+03
+6.1499183e+06 1.5653051e+04 -4.0961839e+04
+9.8352980e+06 2.2378072e+04 -8.9234296e+04
+1.2503249e+07 2.9145564e+04 -1.3241231e+05
+1.3896411e+07 3.5358792e+04 -1.5266488e+05
+1.4374375e+07 4.0063579e+04 -1.4496090e+05
+1.4396775e+07 4.2307980e+04 -1.1619352e+05
+1.4176591e+07 4.1549334e+04 -7.8763790e+04
+1.3565723e+07 3.7833391e+04 -4.4178090e+04
+1.2143058e+07 3.1742567e+04 -1.9290988e+04
+9.5446939e+06 2.4212632e+04 -5.5570296e+03
+5.9827896e+06 1.6314380e+04 -5.5915132e+02
+2.5368232e+06 9.0926298e+03 -3.4258522e+02
+1.5791467e+05 1.6264152e+03 -1.9255803e+01
+9.0254407e+03 9.1801260e+01 -1.0573120e+00
+5.1361868e+02 5.1701156e+00 -4.9767047e-02
+2.6346191e+01 2.6311733e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0584593e+01 1.5320289e-01 9.5865295e-02
+4.0213492e+02 2.9438748e+00 2.0202261e+00
+7.0870370e+03 5.1232827e+01 3.6792970e+01
+1.2438393e+05 8.9507311e+02 6.5932040e+02
+2.0523860e+06 4.4981057e+03 -6.2501465e+03
+4.8521260e+06 7.1568561e+03 -3.1433296e+04
+7.7731293e+06 1.0127185e+04 -6.9133758e+04
+9.9195964e+06 1.3634995e+04 -1.0311139e+05
+1.1070605e+07 1.7390731e+04 -1.1931407e+05
+1.1487971e+07 2.0602094e+04 -1.1359183e+05
+1.1521034e+07 2.2416279e+04 -9.1228607e+04
+1.1333874e+07 2.2335836e+04 -6.1965194e+04
+1.0813475e+07 2.0371519e+04 -3.4897056e+04
+9.6404215e+06 1.6961771e+04 -1.5439862e+04
+7.5488407e+06 1.2773340e+04 -4.7233684e+03
+4.7238275e+06 8.4893022e+03 -8.2724841e+02
+2.0110339e+06 4.6798096e+03 -6.5117919e+02
+1.2345103e+05 8.3739695e+02 -3.6133097e+01
+7.0284598e+03 4.7782758e+01 -1.9702633e+00
+3.9847591e+02 2.7358341e+00 -9.2785632e-02
+2.0380562e+01 1.4184927e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3198735e+01 4.9141260e-02 7.3362846e-02
+2.5798769e+02 8.7544319e-01 1.5454747e+00
+4.5638615e+03 1.4030369e+01 2.8298162e+01
+8.0671008e+04 2.2764191e+02 5.1316383e+02
+1.3121357e+06 7.2883032e+02 -4.4093026e+03
+3.1577774e+06 5.2479597e+02 -2.1942255e+04
+5.0961404e+06 5.7728387e+02 -4.8217709e+04
+6.5240915e+06 1.4959692e+03 -7.2090424e+04
+7.2869390e+06 3.2091991e+03 -8.3731032e+04
+7.5587844e+06 5.0924867e+03 -8.0073947e+04
+7.5770455e+06 6.4461713e+03 -6.4662239e+04
+7.4541025e+06 6.8654704e+03 -4.4253716e+04
+7.1127336e+06 6.3402352e+03 -2.5234105e+04
+6.3358196e+06 5.1537420e+03 -1.1444408e+04
+4.9459304e+06 3.7000728e+03 -3.7284931e+03
+3.0728216e+06 2.3164393e+03 -7.9296109e+02
+1.2855589e+06 1.2037952e+03 -5.1651442e+02
+8.0102580e+04 2.1999145e+02 -2.8407124e+01
+4.5281549e+03 1.3519246e+01 -1.5456859e+00
+2.5575000e+02 8.3796286e-01 -7.3021117e-02
+1.3073353e+01 4.6688903e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.2268569e+00 7.1394464e-03 2.5974273e-02
+1.1928121e+02 8.5932133e-02 5.1947920e-01
+2.0856195e+03 5.8558142e-01 9.0650172e+00
+3.7310770e+04 -3.7958893e+00 1.5949668e+02
+5.8754022e+05 -4.8838825e+02 -2.8628766e+03
+1.5062316e+06 -1.5571272e+03 -1.3098700e+04
+2.4752958e+06 -2.3567231e+03 -2.8376498e+04
+3.1734611e+06 -2.1950955e+03 -4.2367824e+04
+3.5225945e+06 -1.1288529e+03 -4.9384986e+04
+3.6255489e+06 2.7050226e+02 -4.7544859e+04
+3.6192045e+06 1.3975423e+03 -3.8776184e+04
+3.5680502e+06 1.9257736e+03 -2.6927214e+04
+3.4272266e+06 1.8561884e+03 -1.5703614e+04
+3.0710208e+06 1.4037699e+03 -7.3904683e+03
+2.3944113e+06 8.4054309e+02 -2.5617934e+03
+1.4613876e+06 3.7209966e+02 -5.4987663e+02
+5.7435120e+05 9.3195395e+01 -1.8232742e+02
+3.7065956e+04 8.9433595e+00 -1.0424468e+01
+2.0699377e+03 1.1111494e+00 -5.9451893e-01
+1.1826997e+02 1.0655590e-01 -2.9415552e-02
+6.1685692e+00 7.8030210e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7443381e+00 6.8234307e-04 1.4491203e-03
+2.8443940e+01 4.7050398e-03 2.4618127e-03
+3.8482227e+02 -2.3418855e-02 -4.6671817e-01
+4.5438388e+03 -1.3384946e+00 -1.6179263e+01
+4.0384478e+04 -2.8528370e+01 -6.2116065e+02
+9.2772076e+04 -8.7670079e+01 -2.5061873e+03
+1.4735545e+05 -1.3459781e+02 -5.3403771e+03
+1.9045555e+05 -1.2813570e+02 -7.9818258e+03
+2.1702546e+05 -6.8506539e+01 -9.3633170e+03
+2.2943139e+05 1.2572493e+01 -9.0956607e+03
+2.3208916e+05 7.9464574e+01 -7.5012563e+03
+2.2723260e+05 1.1189469e+02 -5.2824170e+03
+2.1337932e+05 1.0894695e+02 -3.1376462e+03
+1.8654073e+05 8.2862422e+01 -1.5137667e+03
+1.4426654e+05 4.9723009e+01 -5.4134517e+02
+9.1056389e+04 2.2044368e+01 -1.1234133e+02
+3.9851961e+04 5.8250668e+00 -7.8302536e+00
+4.4976451e+03 6.7077272e-01 -8.2812163e-01
+3.8109990e+02 9.2456927e-02 -7.2602675e-02
+2.8161792e+01 1.1095653e-02 -4.7517022e-03
+1.7261822e+00 9.8850214e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3197766e-01 4.0290520e-05 -4.2725461e-04
+4.5205012e+00 -7.7948023e-05 -1.0205477e-02
+4.7431076e+01 -8.4307156e-03 -1.8100477e-01
+4.0035015e+02 -1.5246318e-01 -2.7657920e+00
+2.2961356e+03 -1.6664707e+00 -3.8812148e+01
+5.2856680e+03 -4.8887578e+00 -1.4562971e+02
+8.4417848e+03 -7.5684544e+00 -3.0772551e+02
+1.0960561e+04 -7.3495916e+00 -4.6163721e+02
+1.2530318e+04 -4.0715594e+00 -5.4487746e+02
+1.3270044e+04 5.4928067e-01 -5.3261376e+02
+1.3429535e+04 4.4529108e+00 -4.4177374e+02
+1.3138440e+04 6.4048786e+00 -3.1274712e+02
+1.2311961e+04 6.2957921e+00 -1.8676993e+02
+1.0725753e+04 4.8121175e+00 -9.0766580e+01
+8.2556869e+03 2.8934661e+00 -3.3034619e+01
+5.1804810e+03 1.2895825e+00 -7.4079560e+00
+2.2602758e+03 3.5952874e-01 -7.1880223e-01
+3.9512532e+02 5.0879211e-02 -7.7441949e-02
+4.6858887e+01 7.4854248e-03 -7.8262598e-03
+4.4668921e+00 1.0254030e-03 -5.9664920e-04
+3.2798752e-01 1.0478754e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.7667017e-02 4.4322272e-07 -1.3107675e-04
+5.5126029e-01 -4.2688693e-05 -2.1634478e-03
+4.6552293e+00 -9.1494195e-04 -2.7036143e-02
+3.0387606e+01 -1.1126987e-02 -2.8841074e-01
+1.3337466e+02 -8.4378005e-02 -2.4476441e+00
+3.0114813e+02 -2.3638686e-01 -8.4915094e+00
+4.8184302e+02 -3.6708530e-01 -1.7694061e+01
+6.2816608e+02 -3.6201925e-01 -2.6578479e+01
+7.2060061e+02 -2.0633789e-01 -3.1533111e+01
+7.6469687e+02 2.0137667e-02 -3.1002570e+01
+7.7431519e+02 2.1540926e-01 -2.5857636e+01
+7.5686825e+02 3.1556128e-01 -1.8402368e+01
+7.0760402e+02 3.1269695e-01 -1.1053221e+01
+6.1416542e+02 2.3999998e-01 -5.4190858e+00
+4.7068321e+02 1.4464873e-01 -2.0159438e+00
+2.9470840e+02 6.4957093e-02 -4.8960568e-01
+1.3098713e+02 1.8994077e-02 -6.3214559e-02
+2.9914359e+01 3.1631087e-03 -7.4752575e-03
+4.5882437e+00 4.9512006e-04 -8.1888730e-04
+5.4359008e-01 7.3475460e-05 -6.7975823e-05
+4.7007385e-02 8.2101410e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7794832e-03 0.0000000e+00 -1.8209345e-05
+4.8725181e-02 0.0000000e+00 -2.5403751e-04
+3.4927542e-01 0.0000000e+00 -2.5971662e-03
+1.8993658e+00 0.0000000e+00 -2.1887438e-02
+7.0535984e+00 0.0000000e+00 -1.3852667e-01
+1.5522875e+01 0.0000000e+00 -4.4765783e-01
+2.4805161e+01 0.0000000e+00 -9.1774733e-01
+3.2434547e+01 0.0000000e+00 -1.3774957e+00
+3.7320798e+01 0.0000000e+00 -1.6404362e+00
+3.9681574e+01 0.0000000e+00 -1.6206723e+00
+4.0203155e+01 0.0000000e+00 -1.3583387e+00
+3.9264248e+01 0.0000000e+00 -9.7143185e-01
+3.6627545e+01 0.0000000e+00 -5.8680921e-01
+3.1686255e+01 0.0000000e+00 -2.9037221e-01
+2.4205013e+01 0.0000000e+00 -1.1047155e-01
+1.5169509e+01 0.0000000e+00 -2.8778562e-02
+6.9134664e+00 0.0000000e+00 -4.5469878e-03
+1.8657673e+00 0.0000000e+00 -6.0279186e-04
+3.4354854e-01 0.0000000e+00 -7.1224948e-05
+4.7958378e-02 0.0000000e+00 -6.2790520e-06
+4.7054578e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.7974542e-03 4.1877800e-07 -1.8389727e-05
+4.8913377e-02 5.0688711e-05 -2.5727451e-04
+3.5068381e-01 9.6970531e-04 -2.6353750e-03
+1.9074980e+00 1.1462405e-02 -2.2229922e-02
+7.0859472e+00 8.6143102e-02 -1.4072185e-01
+1.5595829e+01 2.4044672e-01 -4.5412260e-01
+2.4907989e+01 3.7167463e-01 -9.2862537e-01
+3.2531109e+01 3.6407772e-01 -1.3892657e+00
+3.7375285e+01 2.0502112e-01 -1.6487731e+00
+3.9679646e+01 -2.2488248e-02 -1.6243577e+00
+4.0154556e+01 -2.1573403e-01 -1.3600246e+00
+3.9191999e+01 -3.1305813e-01 -9.7471831e-01
+3.6554922e+01 -3.0934824e-01 -5.9274737e-01
+3.1628690e+01 -2.3835951e-01 -2.9682312e-01
+2.4168192e+01 -1.4526992e-01 -1.1473247e-01
+1.5151371e+01 -6.6253576e-02 -3.0341575e-02
+6.9074866e+00 -1.9561467e-02 -4.8003133e-03
+1.8647732e+00 -3.1751111e-03 -6.3117322e-04
+3.4347093e-01 -4.8010213e-04 -7.3460790e-05
+4.7960864e-02 -6.9573705e-05 -6.3729093e-06
+4.7067689e-03 -7.6839931e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7830747e-02 -3.0584399e-05 -1.3272720e-04
+5.5319813e-01 1.7698145e-04 -2.1968579e-03
+4.6723093e+00 9.1903121e-03 -2.7497413e-02
+3.0507234e+01 1.5782453e-01 -2.9348682e-01
+1.3395507e+02 1.7032931e+00 -2.4910461e+00
+3.0254833e+02 4.9790452e+00 -8.6298377e+00
+4.8384765e+02 7.6717925e+00 -1.7934586e+01
+6.3004708e+02 7.3959193e+00 -2.6847424e+01
+7.2165406e+02 4.0403984e+00 -3.1736254e+01
+7.6465421e+02 -6.0820296e-01 -3.1107881e+01
+7.7337792e+02 -4.4728550e+00 -2.5913487e+01
+7.5548780e+02 -6.3657650e+00 -1.8480328e+01
+7.0622819e+02 -6.2367903e+00 -1.1177061e+01
+6.1308549e+02 -4.7864912e+00 -5.5490047e+00
+4.7000184e+02 -2.9136080e+00 -2.0992995e+00
+2.9438210e+02 -1.3215530e+00 -5.1770014e-01
+1.3088892e+02 -3.7275969e-01 -6.6293120e-02
+2.9903459e+01 -5.0880131e-02 -7.6879046e-03
+4.5881247e+00 -7.2263868e-03 -8.2260389e-04
+5.4373516e-01 -9.7032384e-04 -6.6934907e-05
+4.7030939e-02 -9.8172223e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.3299112e-01 -6.0405251e-04 -4.3999173e-04
+4.5345055e+00 -3.7944894e-03 -1.0472859e-02
+4.7583459e+01 3.1534165e-02 -1.8519943e-01
+4.0174117e+02 1.4051789e+00 -2.8235695e+00
+2.3053990e+03 2.9200256e+01 -3.9584009e+01
+5.3099377e+03 8.9430729e+01 -1.4830537e+02
+8.4770327e+03 1.3662947e+02 -3.1251100e+02
+1.0993523e+04 1.2904887e+02 -4.6712683e+02
+1.2548572e+04 6.7882632e+01 -5.4922368e+02
+1.3269125e+04 -1.3814237e+01 -5.3509860e+02
+1.3413214e+04 -8.0062806e+01 -4.4318706e+02
+1.3114686e+04 -1.1142277e+02 -3.1437614e+02
+1.2288518e+04 -1.0806981e+02 -1.8909956e+02
+1.0707548e+04 -8.2543961e+01 -9.3137173e+01
+8.2443646e+03 -5.0210757e+01 -3.4517711e+01
+5.1752189e+03 -2.2712731e+01 -7.8644551e+00
+2.2588686e+03 -6.0887337e+00 -7.4127705e-01
+3.9507388e+02 -6.6365536e-01 -7.7056121e-02
+4.6870762e+01 -8.8592132e-02 -7.5654034e-03
+4.4693950e+00 -1.0472769e-02 -5.6581263e-04
+3.2824899e-01 -9.2545653e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7490016e+00 -6.6140491e-03 1.3464942e-03
+2.8519794e+01 -7.8686668e-02 3.8525560e-04
+3.8586093e+02 -5.0640240e-01 -5.0033551e-01
+4.5568913e+03 4.5485313e+00 -1.6696115e+01
+4.0531194e+04 5.0067069e+02 -6.3488240e+02
+9.3192968e+04 1.5912265e+03 -2.5575699e+03
+1.4797252e+05 2.3961107e+03 -5.4341259e+03
+1.9102881e+05 2.2129144e+03 -8.0912528e+03
+2.1733790e+05 1.1169550e+03 -9.4527656e+03
+2.2941008e+05 -2.9530130e+02 -9.1499678e+03
+2.3180421e+05 -1.4118065e+03 -7.5332823e+03
+2.2682398e+05 -1.9208332e+03 -5.3152607e+03
+2.1298021e+05 -1.8431869e+03 -3.1810399e+03
+1.8623405e+05 -1.3999730e+03 -1.5569318e+03
+1.4407823e+05 -8.5092189e+02 -5.6791242e+02
+9.0971079e+04 -3.8542089e+02 -1.1989477e+02
+3.9832020e+04 -9.8274579e+01 -7.7679695e+00
+4.4986757e+03 -8.6744943e+00 -7.8765356e-01
+3.8134493e+02 -1.0536312e+00 -6.7642086e-02
+2.8188108e+01 -1.0005538e-01 -4.3750404e-03
+1.7281661e+00 -7.2844261e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.2413906e+00 -4.6407517e-02 2.5259705e-02
+1.1955306e+02 -8.2823982e-01 5.0296624e-01
+2.0901776e+03 -1.3302883e+01 8.7413642e+00
+3.7387024e+04 -2.1636274e+02 1.5339823e+02
+5.9171623e+05 -6.5724573e+02 -2.8646945e+03
+1.5185382e+06 -3.7831441e+02 -1.3201735e+04
+2.4934366e+06 -3.6894481e+02 -2.8577470e+04
+3.1908609e+06 -1.2595480e+03 -4.2504900e+04
+3.5334474e+06 -2.9653432e+03 -4.9275505e+04
+3.6279684e+06 -4.8373842e+03 -4.7152881e+04
+3.6150537e+06 -6.1684323e+03 -3.8245458e+04
+3.5609172e+06 -6.5686670e+03 -2.6464643e+04
+3.4203953e+06 -6.0493765e+03 -1.5427231e+04
+3.0663678e+06 -4.9022034e+03 -7.2720451e+03
+2.3923020e+06 -3.5102138e+03 -2.5035026e+03
+1.4611929e+06 -2.1910846e+03 -5.0311905e+02
+5.7505215e+05 -1.1335275e+03 -1.6882267e+02
+3.7104369e+04 -2.0632009e+02 -9.5896892e+00
+2.0724855e+03 -1.2647695e+01 -5.4334051e-01
+1.1843501e+02 -7.8171899e-01 -2.6722002e-02
+6.1779954e+00 -4.3432620e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3225703e+01 -1.4525652e-01 7.1880937e-02
+2.5851835e+02 -2.7966232e+00 1.5096030e+00
+4.5732733e+03 -4.8773637e+01 2.7568525e+01
+8.0837006e+04 -8.5387077e+02 4.9907896e+02
+1.3204829e+06 -4.2574803e+03 -4.2478511e+03
+3.1815402e+06 -6.6995697e+03 -2.1689414e+04
+5.1313334e+06 -9.4552048e+03 -4.7796215e+04
+6.5590312e+06 -1.2793829e+04 -7.1201597e+04
+7.3113130e+06 -1.6428034e+04 -8.2112859e+04
+7.5691714e+06 -1.9548490e+04 -7.7788800e+04
+7.5765145e+06 -2.1298702e+04 -6.2127551e+04
+7.4486057e+06 -2.1199843e+04 -4.1999483e+04
+7.1075701e+06 -1.9287749e+04 -2.3597642e+04
+6.3337714e+06 -1.6011332e+04 -1.0440343e+04
+4.9471768e+06 -1.2023741e+04 -3.1731778e+03
+3.0759597e+06 -7.9751016e+03 -5.2730221e+02
+1.2887654e+06 -4.3933972e+03 -4.7390966e+02
+8.0233768e+04 -7.8551451e+02 -2.5902817e+01
+4.5357013e+03 -4.4696559e+01 -1.4003483e+00
+2.5618535e+02 -2.5516644e+00 -6.5750399e-02
+1.3096105e+01 -1.3193558e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0615442e+01 -2.7145223e-01 9.5346494e-02
+4.0275556e+02 -5.3229031e+00 2.0009861e+00
+7.0982686e+03 -9.4316196e+01 3.6311993e+01
+1.2458495e+05 -1.6677136e+03 6.4913548e+02
+2.0634966e+06 -8.8468052e+03 -5.8720868e+03
+4.8850861e+06 -1.4822124e+04 -3.0709595e+04
+7.8220115e+06 -2.1152276e+04 -6.7894686e+04
+9.9674012e+06 -2.7582242e+04 -1.0091107e+05
+1.1102621e+07 -3.3535632e+04 -1.1581913e+05
+1.1499647e+07 -3.8052178e+04 -1.0899188e+05
+1.1517184e+07 -4.0182459e+04 -8.6258289e+04
+1.1323347e+07 -3.9406647e+04 -5.7525120e+04
+1.0804044e+07 -3.5798872e+04 -3.1583676e+04
+9.6361125e+06 -2.9953692e+04 -1.3332351e+04
+7.5498257e+06 -2.2789951e+04 -3.5511609e+03
+4.7279327e+06 -1.5329910e+04 -3.0160388e+02
+2.0154702e+06 -8.5420173e+03 -5.8926676e+02
+1.2363537e+05 -1.5266816e+03 -3.2443214e+01
+7.0389933e+03 -8.5918762e+01 -1.7544676e+00
+3.9907594e+02 -4.8242085e+00 -8.1961226e-02
+2.0411486e+01 -2.4482117e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6640166e+01 -3.4249094e-01 5.2301652e-02
+5.1893518e+02 -6.7382961e+00 1.0779909e+00
+9.1113179e+03 -1.1956458e+02 1.9088581e+01
+1.5929379e+05 -2.1119743e+03 3.3188675e+02
+2.6020865e+06 -1.1377586e+04 -7.9908187e+03
+6.1863316e+06 -1.9379998e+04 -3.9846261e+04
+9.8893355e+06 -2.7703577e+04 -8.7332456e+04
+1.2553196e+07 -3.5716466e+04 -1.2914472e+05
+1.3924047e+07 -4.2690958e+04 -1.4762553e+05
+1.4374821e+07 -4.7685288e+04 -1.3843895e+05
+1.4377164e+07 -4.9821186e+04 -1.0918959e+05
+1.4149118e+07 -4.8628701e+04 -7.2494129e+04
+1.3541091e+07 -4.4198986e+04 -3.9462483e+04
+1.2127050e+07 -3.7141885e+04 -1.6266294e+04
+9.5379548e+06 -2.8436939e+04 -3.8802288e+03
+5.9826621e+06 -1.9249164e+04 1.6662033e+02
+2.5395133e+06 -1.0776146e+04 -2.8931644e+02
+1.5804578e+05 -1.9311188e+03 -1.5982663e+01
+9.0331573e+03 -1.0875715e+02 -8.6081307e-01
+5.1406927e+02 -6.0959006e+00 -3.9708437e-02
+2.6369908e+01 -3.0824619e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0596736e+01 -2.8984144e-01 -4.7447392e-02
+5.9457521e+02 -5.6995131e+00 -1.0090554e+00
+1.0412343e+04 -1.0097067e+02 -1.8617553e+01
+1.8162821e+05 -1.7789289e+03 -3.3854027e+02
+2.8918331e+06 -9.6251922e+03 -1.0313047e+04
+6.9699726e+06 -1.6487322e+04 -4.8037027e+04
+1.1155218e+07 -2.3562619e+04 -1.0393381e+05
+1.4109565e+07 -3.0219496e+04 -1.5282808e+05
+1.5570514e+07 -3.5853881e+04 -1.7415202e+05
+1.6003275e+07 -3.9777098e+04 -1.6306378e+05
+1.5973669e+07 -4.1370953e+04 -1.2857369e+05
+1.5739953e+07 -4.0309536e+04 -8.5403102e+04
+1.5123096e+07 -3.6665577e+04 -4.6476494e+04
+1.3610622e+07 -3.0892445e+04 -1.9008692e+04
+1.0742811e+07 -2.3737073e+04 -4.2064028e+03
+6.7304743e+06 -1.6124403e+04 7.4656661e+02
+2.8182999e+06 -9.0500839e+03 3.1720254e+02
+1.8016778e+05 -1.6259986e+03 1.8140567e+01
+1.0320609e+04 -9.1799499e+01 1.0295915e+00
+5.8884715e+02 -5.1529794e+00 5.0774910e-02
+3.0277774e+01 -2.6066886e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2663558e+01 -1.1365289e-01 -1.4801552e-01
+6.3386921e+02 -2.2330672e+00 -3.0886952e+00
+1.1085414e+04 -3.9508580e+01 -5.5668053e+01
+1.9316764e+05 -6.9491337e+02 -9.8806313e+02
+3.0063122e+06 -3.7639990e+03 -1.2151200e+04
+7.3436243e+06 -6.4593171e+03 -5.3801229e+04
+1.1774666e+07 -9.2274743e+03 -1.1521520e+05
+1.4856076e+07 -1.1807724e+04 -1.6870564e+05
+1.6328733e+07 -1.3966625e+04 -1.9186121e+05
+1.6721781e+07 -1.5452252e+04 -1.7954166e+05
+1.6662647e+07 -1.6042582e+04 -1.4165387e+05
+1.6435274e+07 -1.5621349e+04 -9.4244987e+04
+1.5841485e+07 -1.4215925e+04 -5.1391832e+04
+1.4312002e+07 -1.1993019e+04 -2.0997148e+04
+1.1324322e+07 -9.2308803e+03 -4.4577587e+03
+7.0818838e+06 -6.2809059e+03 1.2235169e+03
+2.9261228e+06 -3.5295718e+03 8.9830261e+02
+1.9158571e+05 -6.3509377e+02 5.1223031e+01
+1.0985855e+04 -3.5913983e+01 2.8834045e+00
+6.2763979e+02 -2.0185003e+00 1.4032247e-01
+3.2316037e+01 -1.0218697e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3283921e+01 1.1365289e-01 -1.8977512e-01
+6.4563506e+02 2.2330672e+00 -3.9475521e+00
+1.1286716e+04 3.9508582e+01 -7.0872628e+01
+1.9662237e+05 6.9491336e+02 -1.2529245e+03
+3.0327281e+06 3.7639990e+03 -1.2850988e+04
+7.4488089e+06 6.4593173e+03 -5.5883969e+04
+1.1953085e+07 9.2274770e+03 -1.1922059e+05
+1.5067796e+07 1.1807723e+04 -1.7430339e+05
+1.6536506e+07 1.3966626e+04 -1.9809095e+05
+1.6911087e+07 1.5452252e+04 -1.8534506e+05
+1.6840272e+07 1.6042582e+04 -1.4628024e+05
+1.6616783e+07 1.5621351e+04 -9.7395671e+04
+1.6035847e+07 1.4215927e+04 -5.3162908e+04
+1.4508498e+07 1.1993017e+04 -2.1725159e+04
+1.1489926e+07 9.2308823e+03 -4.5524384e+03
+7.1795621e+06 6.2809062e+03 1.4072567e+03
+2.9503221e+06 3.5295714e+03 1.1343369e+03
+1.9500152e+05 6.3509373e+02 6.4736071e+01
+1.1184641e+04 3.5913981e+01 3.6448157e+00
+6.3924358e+02 2.0184999e+00 1.7727268e-01
+3.2927125e+01 1.0218696e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2663558e+01 2.8984144e-01 -1.4801551e-01
+6.3386921e+02 5.6995130e+00 -3.0886949e+00
+1.1085414e+04 1.0097067e+02 -5.5668063e+01
+1.9316764e+05 1.7789289e+03 -9.8806316e+02
+3.0063122e+06 9.6251920e+03 -1.2151199e+04
+7.3436243e+06 1.6487322e+04 -5.3801229e+04
+1.1774666e+07 2.3562618e+04 -1.1521520e+05
+1.4856076e+07 3.0219496e+04 -1.6870564e+05
+1.6328733e+07 3.5853881e+04 -1.9186121e+05
+1.6721781e+07 3.9777098e+04 -1.7954166e+05
+1.6662647e+07 4.1370953e+04 -1.4165386e+05
+1.6435274e+07 4.0309532e+04 -9.4244986e+04
+1.5841485e+07 3.6665575e+04 -5.1391835e+04
+1.4312002e+07 3.0892444e+04 -2.0997147e+04
+1.1324322e+07 2.3737072e+04 -4.4577589e+03
+7.0818838e+06 1.6124403e+04 1.2235158e+03
+2.9261228e+06 9.0500840e+03 8.9830264e+02
+1.9158571e+05 1.6259986e+03 5.1223033e+01
+1.0985855e+04 9.1799499e+01 2.8834035e+00
+6.2763979e+02 5.1529797e+00 1.4032251e-01
+3.2316037e+01 2.6066886e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0596736e+01 3.4249094e-01 -4.7447407e-02
+5.9457521e+02 6.7382961e+00 -1.0090549e+00
+1.0412343e+04 1.1956458e+02 -1.8617550e+01
+1.8162821e+05 2.1119742e+03 -3.3854047e+02
+2.8918331e+06 1.1377586e+04 -1.0313047e+04
+6.9699726e+06 1.9379998e+04 -4.8037026e+04
+1.1155218e+07 2.7703579e+04 -1.0393381e+05
+1.4109565e+07 3.5716465e+04 -1.5282808e+05
+1.5570514e+07 4.2690958e+04 -1.7415202e+05
+1.6003275e+07 4.7685288e+04 -1.6306378e+05
+1.5973669e+07 4.9821187e+04 -1.2857369e+05
+1.5739953e+07 4.8628701e+04 -8.5403101e+04
+1.5123096e+07 4.4198986e+04 -4.6476494e+04
+1.3610622e+07 3.7141885e+04 -1.9008690e+04
+1.0742811e+07 2.8436937e+04 -4.2064025e+03
+6.7304743e+06 1.9249163e+04 7.4656549e+02
+2.8182999e+06 1.0776146e+04 3.1720235e+02
+1.8016778e+05 1.9311188e+03 1.8140579e+01
+1.0320609e+04 1.0875715e+02 1.0295914e+00
+5.8884715e+02 6.0959007e+00 5.0774910e-02
+3.0277774e+01 3.0824619e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6640166e+01 2.7145223e-01 5.2301670e-02
+5.1893518e+02 5.3229030e+00 1.0779908e+00
+9.1113179e+03 9.4316196e+01 1.9088582e+01
+1.5929379e+05 1.6677136e+03 3.3188677e+02
+2.6020865e+06 8.8468050e+03 -7.9908189e+03
+6.1863316e+06 1.4822123e+04 -3.9846258e+04
+9.8893355e+06 2.1152274e+04 -8.7332459e+04
+1.2553196e+07 2.7582239e+04 -1.2914472e+05
+1.3924047e+07 3.3535632e+04 -1.4762553e+05
+1.4374821e+07 3.8052177e+04 -1.3843895e+05
+1.4377164e+07 4.0182458e+04 -1.0918960e+05
+1.4149118e+07 3.9406646e+04 -7.2494132e+04
+1.3541091e+07 3.5798871e+04 -3.9462483e+04
+1.2127050e+07 2.9953693e+04 -1.6266294e+04
+9.5379548e+06 2.2789951e+04 -3.8802281e+03
+5.9826621e+06 1.5329909e+04 1.6662076e+02
+2.5395133e+06 8.5420174e+03 -2.8931646e+02
+1.5804578e+05 1.5266816e+03 -1.5982654e+01
+9.0331573e+03 8.5918760e+01 -8.6081311e-01
+5.1406927e+02 4.8242084e+00 -3.9708443e-02
+2.6369908e+01 2.4482116e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0615442e+01 1.4525652e-01 9.5346503e-02
+4.0275556e+02 2.7966232e+00 2.0009863e+00
+7.0982686e+03 4.8773636e+01 3.6311993e+01
+1.2458495e+05 8.5387076e+02 6.4913547e+02
+2.0634966e+06 4.2574803e+03 -5.8720871e+03
+4.8850861e+06 6.6995699e+03 -3.0709595e+04
+7.8220115e+06 9.4552048e+03 -6.7894686e+04
+9.9674012e+06 1.2793831e+04 -1.0091107e+05
+1.1102621e+07 1.6428034e+04 -1.1581912e+05
+1.1499647e+07 1.9548490e+04 -1.0899188e+05
+1.1517184e+07 2.1298700e+04 -8.6258289e+04
+1.1323347e+07 2.1199844e+04 -5.7525121e+04
+1.0804044e+07 1.9287748e+04 -3.1583676e+04
+9.6361125e+06 1.6011333e+04 -1.3332350e+04
+7.5498257e+06 1.2023742e+04 -3.5511605e+03
+4.7279327e+06 7.9751023e+03 -3.0160398e+02
+2.0154702e+06 4.3933972e+03 -5.8926677e+02
+1.2363537e+05 7.8551449e+02 -3.2443214e+01
+7.0389933e+03 4.4696559e+01 -1.7544677e+00
+3.9907594e+02 2.5516644e+00 -8.1961223e-02
+2.0411486e+01 1.3193557e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3225703e+01 4.6407518e-02 7.1880939e-02
+2.5851835e+02 8.2823983e-01 1.5096029e+00
+4.5732733e+03 1.3302883e+01 2.7568526e+01
+8.0837006e+04 2.1636274e+02 4.9907898e+02
+1.3204829e+06 6.5724571e+02 -4.2478512e+03
+3.1815402e+06 3.7831445e+02 -2.1689414e+04
+5.1313334e+06 3.6894492e+02 -4.7796216e+04
+6.5590312e+06 1.2595480e+03 -7.1201597e+04
+7.3113130e+06 2.9653433e+03 -8.2112859e+04
+7.5691714e+06 4.8373838e+03 -7.7788802e+04
+7.5765145e+06 6.1684326e+03 -6.2127549e+04
+7.4486057e+06 6.5686661e+03 -4.1999483e+04
+7.1075701e+06 6.0493767e+03 -2.3597641e+04
+6.3337714e+06 4.9022029e+03 -1.0440344e+04
+4.9471768e+06 3.5102139e+03 -3.1731778e+03
+3.0759597e+06 2.1910850e+03 -5.2730244e+02
+1.2887654e+06 1.1335275e+03 -4.7390964e+02
+8.0233768e+04 2.0632009e+02 -2.5902816e+01
+4.5357013e+03 1.2647695e+01 -1.4003483e+00
+2.5618535e+02 7.8171897e-01 -6.5750409e-02
+1.3096105e+01 4.3432621e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.2413906e+00 6.6140491e-03 2.5259706e-02
+1.1955306e+02 7.8686666e-02 5.0296622e-01
+2.0901776e+03 5.0640238e-01 8.7413642e+00
+3.7387024e+04 -4.5485312e+00 1.5339823e+02
+5.9171623e+05 -5.0067069e+02 -2.8646945e+03
+1.5185382e+06 -1.5912265e+03 -1.3201735e+04
+2.4934366e+06 -2.3961107e+03 -2.8577470e+04
+3.1908609e+06 -2.2129143e+03 -4.2504900e+04
+3.5334474e+06 -1.1169550e+03 -4.9275505e+04
+3.6279684e+06 2.9530133e+02 -4.7152881e+04
+3.6150537e+06 1.4118065e+03 -3.8245457e+04
+3.5609172e+06 1.9208332e+03 -2.6464643e+04
+3.4203953e+06 1.8431869e+03 -1.5427231e+04
+3.0663678e+06 1.3999730e+03 -7.2720450e+03
+2.3923020e+06 8.5092190e+02 -2.5035026e+03
+1.4611929e+06 3.8542090e+02 -5.0311904e+02
+5.7505215e+05 9.8274579e+01 -1.6882269e+02
+3.7104369e+04 8.6744951e+00 -9.5896887e+00
+2.0724855e+03 1.0536312e+00 -5.4334051e-01
+1.1843501e+02 1.0005538e-01 -2.6722001e-02
+6.1779954e+00 7.2844262e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7490016e+00 6.0405259e-04 1.3464944e-03
+2.8519794e+01 3.7944899e-03 3.8525229e-04
+3.8586093e+02 -3.1534167e-02 -5.0033547e-01
+4.5568913e+03 -1.4051789e+00 -1.6696115e+01
+4.0531194e+04 -2.9200257e+01 -6.3488240e+02
+9.3192968e+04 -8.9430732e+01 -2.5575699e+03
+1.4797252e+05 -1.3662948e+02 -5.4341259e+03
+1.9102881e+05 -1.2904886e+02 -8.0912528e+03
+2.1733790e+05 -6.7882632e+01 -9.4527656e+03
+2.2941008e+05 1.3814241e+01 -9.1499678e+03
+2.3180421e+05 8.0062811e+01 -7.5332823e+03
+2.2682398e+05 1.1142278e+02 -5.3152607e+03
+2.1298021e+05 1.0806981e+02 -3.1810399e+03
+1.8623405e+05 8.2543962e+01 -1.5569318e+03
+1.4407823e+05 5.0210758e+01 -5.6791242e+02
+9.0971079e+04 2.2712729e+01 -1.1989477e+02
+3.9832020e+04 6.0887335e+00 -7.7679700e+00
+4.4986757e+03 6.6365536e-01 -7.8765369e-01
+3.8134493e+02 8.8592137e-02 -6.7642079e-02
+2.8188108e+01 1.0472769e-02 -4.3750403e-03
+1.7281661e+00 9.2545649e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3299112e-01 3.0584376e-05 -4.3999180e-04
+4.5345055e+00 -1.7698148e-04 -1.0472860e-02
+4.7583459e+01 -9.1903116e-03 -1.8519943e-01
+4.0174117e+02 -1.5782452e-01 -2.8235695e+00
+2.3053990e+03 -1.7032930e+00 -3.9584010e+01
+5.3099377e+03 -4.9790450e+00 -1.4830537e+02
+8.4770327e+03 -7.6717925e+00 -3.1251100e+02
+1.0993523e+04 -7.3959192e+00 -4.6712683e+02
+1.2548572e+04 -4.0403984e+00 -5.4922368e+02
+1.3269125e+04 6.0820321e-01 -5.3509860e+02
+1.3413214e+04 4.4728562e+00 -4.4318706e+02
+1.3114686e+04 6.3657651e+00 -3.1437615e+02
+1.2288518e+04 6.2367905e+00 -1.8909956e+02
+1.0707548e+04 4.7864914e+00 -9.3137173e+01
+8.2443646e+03 2.9136081e+00 -3.4517711e+01
+5.1752189e+03 1.3215530e+00 -7.8644549e+00
+2.2588686e+03 3.7275970e-01 -7.4127705e-01
+3.9507388e+02 5.0880129e-02 -7.7056128e-02
+4.6870762e+01 7.2263862e-03 -7.5654030e-03
+4.4693950e+00 9.7032380e-04 -5.6581263e-04
+3.2824899e-01 9.8172218e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.7830747e-02 -4.1877672e-07 -1.3272719e-04
+5.5319813e-01 -5.0688710e-05 -2.1968579e-03
+4.6723093e+00 -9.6970528e-04 -2.7497413e-02
+3.0507234e+01 -1.1462405e-02 -2.9348681e-01
+1.3395507e+02 -8.6143104e-02 -2.4910461e+00
+3.0254833e+02 -2.4044673e-01 -8.6298376e+00
+4.8384765e+02 -3.7167463e-01 -1.7934586e+01
+6.3004708e+02 -3.6407772e-01 -2.6847424e+01
+7.2165406e+02 -2.0502112e-01 -3.1736254e+01
+7.6465421e+02 2.2488231e-02 -3.1107881e+01
+7.7337792e+02 2.1573400e-01 -2.5913487e+01
+7.5548780e+02 3.1305813e-01 -1.8480328e+01
+7.0622819e+02 3.0934824e-01 -1.1177061e+01
+6.1308549e+02 2.3835952e-01 -5.5490047e+00
+4.7000184e+02 1.4526992e-01 -2.0992995e+00
+2.9438210e+02 6.6253586e-02 -5.1770014e-01
+1.3088892e+02 1.9561468e-02 -6.6293122e-02
+2.9903459e+01 3.1751110e-03 -7.6879056e-03
+4.5881247e+00 4.8010218e-04 -8.2260381e-04
+5.4373516e-01 6.9573707e-05 -6.6934908e-05
+4.7030939e-02 7.6839938e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7974542e-03 0.0000000e+00 -1.8389727e-05
+4.8913377e-02 0.0000000e+00 -2.5727451e-04
+3.5068381e-01 0.0000000e+00 -2.6353750e-03
+1.9074980e+00 0.0000000e+00 -2.2229922e-02
+7.0859472e+00 0.0000000e+00 -1.4072185e-01
+1.5595829e+01 0.0000000e+00 -4.5412260e-01
+2.4907989e+01 0.0000000e+00 -9.2862537e-01
+3.2531109e+01 0.0000000e+00 -1.3892657e+00
+3.7375285e+01 0.0000000e+00 -1.6487731e+00
+3.9679646e+01 0.0000000e+00 -1.6243577e+00
+4.0154556e+01 0.0000000e+00 -1.3600246e+00
+3.9191999e+01 0.0000000e+00 -9.7471832e-01
+3.6554922e+01 0.0000000e+00 -5.9274737e-01
+3.1628690e+01 0.0000000e+00 -2.9682312e-01
+2.4168192e+01 0.0000000e+00 -1.1473247e-01
+1.5151371e+01 0.0000000e+00 -3.0341575e-02
+6.9074866e+00 0.0000000e+00 -4.8003136e-03
+1.8647732e+00 0.0000000e+00 -6.3117323e-04
+3.4347093e-01 0.0000000e+00 -7.3460791e-05
+4.7960864e-02 0.0000000e+00 -6.3729090e-06
+4.7067689e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.8139526e-03 1.6138707e-06 -1.8112317e-05
+4.9088895e-02 6.0708456e-05 -2.5433894e-04
+3.5201940e-01 1.0229704e-03 -2.6128952e-03
+1.9153214e+00 1.1643105e-02 -2.2079420e-02
+7.1173864e+00 8.6381040e-02 -1.3989962e-01
+1.5666949e+01 2.4032414e-01 -4.5134361e-01
+2.5008033e+01 3.7072987e-01 -9.2211808e-01
+3.2624421e+01 3.6293268e-01 -1.3783623e+00
+3.7426973e+01 2.0593246e-01 -1.6359835e+00
+3.9676226e+01 -1.7060174e-02 -1.6155024e+00
+4.0105867e+01 -2.0568669e-01 -1.3611262e+00
+3.9120160e+01 -3.0182055e-01 -9.8746631e-01
+3.6481844e+01 -3.0200509e-01 -6.1238279e-01
+3.1569058e+01 -2.3775928e-01 -3.1499120e-01
+2.4128277e+01 -1.4952512e-01 -1.2555161e-01
+1.5130550e+01 -7.0633758e-02 -3.4096582e-02
+6.9001268e+00 -2.1330114e-02 -5.4066443e-03
+1.8633815e+00 -3.3134100e-03 -7.0147678e-04
+3.4331482e-01 -4.6558373e-04 -7.9776437e-05
+4.7951520e-02 -6.3674778e-05 -6.7577789e-06
+4.7068374e-03 -6.8263307e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.7979824e-02 -1.6245444e-05 -1.3121753e-04
+5.5499444e-01 3.1198613e-04 -2.1788095e-03
+4.6884520e+00 1.0031881e-02 -2.7330438e-02
+3.0622306e+01 1.6128384e-01 -2.9204346e-01
+1.3452093e+02 1.7090310e+00 -2.4805470e+00
+3.0391863e+02 4.9801030e+00 -8.5906280e+00
+4.8580609e+02 7.6570255e+00 -1.7835361e+01
+6.3187320e+02 7.3738524e+00 -2.6672405e+01
+7.2266034e+02 4.0541333e+00 -3.1526886e+01
+7.6458828e+02 -5.0800374e-01 -3.0970010e+01
+7.7244398e+02 -4.2808970e+00 -2.5960862e+01
+7.5412068e+02 -6.1487267e+00 -1.8746837e+01
+7.0484942e+02 -6.0978024e+00 -1.1572269e+01
+6.1197109e+02 -4.7857254e+00 -5.9098985e+00
+4.6926505e+02 -3.0131538e+00 -2.3094821e+00
+2.9400751e+02 -1.4203954e+00 -5.8513545e-01
+1.3076735e+02 -4.1094914e-01 -7.3937470e-02
+2.9886987e+01 -5.2472365e-02 -8.3064617e-03
+4.5870919e+00 -6.8830466e-03 -8.5621212e-04
+5.4376267e-01 -8.7987309e-04 -6.7525428e-05
+4.7043520e-02 -8.6933402e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.3389998e-01 -4.7885534e-04 -4.4625021e-04
+4.5473246e+00 -2.4141667e-03 -1.0539208e-02
+4.7726203e+01 4.2198627e-02 -1.8544978e-01
+4.0307438e+02 1.4620159e+00 -2.8193912e+00
+2.3144560e+03 2.9322518e+01 -3.9489856e+01
+5.3337818e+03 8.9538932e+01 -1.4789282e+02
+8.5116084e+03 1.3648677e+02 -3.1129823e+02
+1.1025665e+04 1.2871357e+02 -4.6477947e+02
+1.2566114e+04 6.8051657e+01 -5.4631835e+02
+1.3267880e+04 -1.2238458e+01 -5.3334288e+02
+1.3397018e+04 -7.6919978e+01 -4.4450820e+02
+1.3091240e+04 -1.0781749e+02 -3.1939396e+02
+1.2265111e+04 -1.0580347e+02 -1.9628205e+02
+1.0688829e+04 -8.2722794e+01 -9.9625638e+01
+8.2321448e+03 -5.2194663e+01 -3.8224410e+01
+5.1691709e+03 -2.4640207e+01 -8.9565687e+00
+2.2571093e+03 -6.8040387e+00 -8.0419962e-01
+3.9496059e+02 -6.6475130e-01 -7.8631944e-02
+4.6874816e+01 -8.2222235e-02 -7.3471567e-03
+4.4710825e+00 -9.3825438e-03 -5.3195458e-04
+3.2844533e-01 -8.1522670e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7530791e+00 -5.6983911e-03 1.1420910e-03
+2.8587577e+01 -6.6334076e-02 -2.7213660e-03
+3.8681334e+02 -3.8048130e-01 -5.3244658e-01
+4.5692243e+03 5.4860769e+00 -1.6889493e+01
+4.0674900e+04 5.0326239e+02 -6.3453487e+02
+9.3607866e+04 1.5951223e+03 -2.5550158e+03
+1.4857989e+05 2.3962780e+03 -5.4221755e+03
+1.9158970e+05 2.2086078e+03 -8.0629522e+03
+2.1763927e+05 1.1191633e+03 -9.4154358e+03
+2.2938385e+05 -2.7067365e+02 -9.1307640e+03
+2.3152196e+05 -1.3607420e+03 -7.5646894e+03
+2.2642140e+05 -1.8612571e+03 -5.4086607e+03
+2.1258271e+05 -1.8061282e+03 -3.3108375e+03
+1.8591945e+05 -1.4055701e+03 -1.6733921e+03
+1.4387512e+05 -8.8883171e+02 -6.3363912e+02
+9.0872735e+04 -4.2210004e+02 -1.3783475e+02
+3.9806724e+04 -1.1151218e+02 -7.8305163e+00
+4.4991357e+03 -8.2207193e+00 -7.3461171e-01
+3.8153808e+02 -9.4920387e-01 -6.0784129e-02
+2.8210198e+01 -8.8402466e-02 -3.8547223e-03
+1.7298672e+00 -6.3710271e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.2536116e+00 -4.1248753e-02 2.3329391e-02
+1.1978587e+02 -7.3754944e-01 4.6173713e-01
+2.0941518e+03 -1.1873471e+01 7.9805316e+00
+3.7454539e+04 -1.9362173e+02 1.3957361e+02
+5.9569349e+05 -5.3245168e+02 -2.8019684e+03
+1.5304974e+06 -1.4877073e+02 -1.3017331e+04
+2.5110560e+06 -3.4914937e+01 -2.8205529e+04
+3.2075971e+06 -8.3487149e+02 -4.1898184e+04
+3.5436207e+06 -2.4611430e+03 -4.8491201e+04
+3.6298563e+06 -4.2629473e+03 -4.6386862e+04
+3.6105986e+06 -5.5464776e+03 -3.7746037e+04
+3.5536258e+06 -5.9453898e+03 -2.6370520e+04
+3.4133615e+06 -5.4850521e+03 -1.5657803e+04
+3.0613300e+06 -4.4463630e+03 -7.5792122e+03
+2.3896833e+06 -3.1804514e+03 -2.6688461e+03
+1.4605841e+06 -1.9743462e+03 -5.0785002e+02
+5.7558703e+05 -1.0078631e+03 -1.4637771e+02
+3.7139130e+04 -1.8109964e+02 -8.2595827e+00
+2.0748095e+03 -1.1068036e+01 -4.6479612e-01
+1.1858612e+02 -6.8158812e-01 -2.2712733e-02
+6.1866406e+00 -3.7729012e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3247343e+01 -1.2992136e-01 6.7032284e-02
+2.5895279e+02 -2.5067558e+00 1.4017976e+00
+4.5811184e+03 -4.3819768e+01 2.5503013e+01
+8.0977253e+04 -7.6884850e+02 4.6048234e+02
+1.3281834e+06 -3.7765764e+03 -3.9958947e+03
+3.2041887e+06 -5.8229889e+03 -2.0970248e+04
+5.1649227e+06 -8.1663416e+03 -4.6428049e+04
+6.5919953e+06 -1.1134800e+04 -6.9092232e+04
+7.3336478e+06 -1.4467180e+04 -7.9421073e+04
+7.5778320e+06 -1.7368377e+04 -7.4976160e+04
+7.5747791e+06 -1.9004959e+04 -5.9782270e+04
+7.4423233e+06 -1.8927654e+04 -4.0517654e+04
+7.1017107e+06 -1.7188504e+04 -2.2954768e+04
+6.3308478e+06 -1.4222578e+04 -1.0254987e+04
+4.9474273e+06 -1.0639646e+04 -3.0462612e+03
+3.0783285e+06 -7.0312463e+03 -3.5816475e+02
+1.2916684e+06 -3.8635613e+03 -4.0547565e+02
+8.0358832e+04 -6.8963655e+02 -2.2002646e+01
+4.5429160e+03 -3.9104742e+01 -1.1807279e+00
+2.5660229e+02 -2.2242074e+00 -5.5050014e-02
+1.3117923e+01 -1.1459682e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0638319e+01 -2.4330842e-01 9.0510404e-02
+4.0323081e+02 -4.7809560e+00 1.8894628e+00
+7.1071131e+03 -8.4902060e+01 3.4127237e+01
+1.2474661e+05 -1.5044831e+03 6.0810325e+02
+2.0736235e+06 -7.9282519e+03 -5.3671724e+03
+4.9163795e+06 -1.3157703e+04 -2.9325833e+04
+7.8685426e+06 -1.8706890e+04 -6.5316337e+04
+1.0012379e+07 -2.4432151e+04 -9.6996990e+04
+1.1131819e+07 -2.9818068e+04 -1.1084453e+05
+1.1509089e+07 -3.3938190e+04 -1.0371649e+05
+1.1511994e+07 -3.5876911e+04 -8.1653797e+04
+1.1312206e+07 -3.5149910e+04 -5.4289967e+04
+1.0794200e+07 -3.1849772e+04 -2.9784103e+04
+9.6311284e+06 -2.6554685e+04 -1.2467865e+04
+7.5498809e+06 -2.0127866e+04 -3.0348142e+03
+4.7312985e+06 -1.3500210e+04 6.8381781e+01
+2.0196863e+06 -7.5159477e+03 -4.9532082e+02
+1.2381970e+05 -1.3422777e+03 -2.7004944e+01
+7.0495900e+03 -7.5261024e+01 -1.4454548e+00
+3.9968261e+02 -4.2094769e+00 -6.6852816e-02
+2.0442881e+01 -2.1284467e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6650255e+01 -3.0727795e-01 5.3880869e-02
+5.1916937e+02 -6.0580356e+00 1.0967699e+00
+9.1160464e+03 -1.0773450e+02 1.9200618e+01
+1.5938466e+05 -1.9071913e+03 3.3103937e+02
+2.6119538e+06 -1.0233173e+04 -7.2313515e+03
+6.2211227e+06 -1.7315148e+04 -3.7864997e+04
+9.9411421e+06 -2.4676749e+04 -8.3701785e+04
+1.2600566e+07 -3.1822850e+04 -1.2368138e+05
+1.3949355e+07 -3.8103863e+04 -1.4070314e+05
+1.4373872e+07 -4.2620689e+04 -1.3107148e+05
+1.4357424e+07 -4.4531402e+04 -1.0267663e+05
+1.4122485e+07 -4.3401088e+04 -6.7792957e+04
+1.3517504e+07 -3.9339321e+04 -3.6715818e+04
+1.2111588e+07 -3.2941087e+04 -1.4867231e+04
+9.5311646e+06 -2.5129507e+04 -3.0754073e+03
+5.9823870e+06 -1.6966066e+04 6.6550060e+02
+2.5423767e+06 -9.4932765e+03 -2.2058793e+02
+1.5819459e+05 -1.6998121e+03 -1.1869047e+01
+9.0420104e+03 -9.5362759e+01 -6.2045854e-01
+5.1459094e+02 -5.3238970e+00 -2.7707255e-02
+2.6397560e+01 -2.6820375e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0584161e+01 -2.6016385e-01 -3.4539468e-02
+5.9436969e+02 -5.1265946e+00 -7.6046435e-01
+1.0409364e+04 -9.1026691e+01 -1.4489046e+01
+1.8158405e+05 -1.6073295e+03 -2.7018679e+02
+2.8993452e+06 -8.6711110e+03 -9.3443696e+03
+7.0037094e+06 -1.4770745e+04 -4.5625640e+04
+1.1205546e+07 -2.1051358e+04 -9.9579150e+04
+1.4151475e+07 -2.6994061e+04 -1.4631804e+05
+1.5584080e+07 -3.2059564e+04 -1.6592807e+05
+1.5984637e+07 -3.5593818e+04 -1.5431694e+05
+1.5932658e+07 -3.7006103e+04 -1.2083101e+05
+1.5691514e+07 -3.5996197e+04 -7.9796870e+04
+1.5079801e+07 -3.2650832e+04 -4.3190377e+04
+1.3579248e+07 -2.7413601e+04 -1.7344291e+04
+1.0724608e+07 -2.0989833e+04 -3.2812150e+03
+6.7231706e+06 -1.4222770e+04 1.2791229e+03
+2.8177436e+06 -7.9795482e+03 3.2173336e+02
+1.8020336e+05 -1.4322653e+03 1.8612677e+01
+1.0323337e+04 -8.0544841e+01 1.0667548e+00
+5.8903996e+02 -4.5029504e+00 5.2999596e-02
+3.0289494e+01 -2.2692423e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2629845e+01 -1.0203535e-01 -1.2441568e-01
+6.3325187e+02 -2.0090030e+00 -2.6246651e+00
+1.1075197e+04 -3.5625371e+01 -4.7809165e+01
+1.9299664e+05 -6.2803143e+02 -8.5611353e+02
+3.0112253e+06 -3.3931186e+03 -1.1047229e+04
+7.3747429e+06 -5.7929771e+03 -5.1143549e+04
+1.1821191e+07 -8.2537434e+03 -1.1046615e+05
+1.4890812e+07 -1.0558218e+04 -1.6163782e+05
+1.6330488e+07 -1.2497950e+04 -1.8295415e+05
+1.6687153e+07 -1.3834189e+04 -1.7008578e+05
+1.6603213e+07 -1.4355061e+04 -1.3330258e+05
+1.6368152e+07 -1.3953710e+04 -8.8223643e+04
+1.5781170e+07 -1.2662768e+04 -4.7896715e+04
+1.4266602e+07 -1.0645621e+04 -1.9265005e+04
+1.1295757e+07 -8.1653096e+03 -3.5238475e+03
+7.0679424e+06 -5.5422992e+03 1.7369954e+03
+2.9221550e+06 -3.1133327e+03 8.3860033e+02
+1.9150367e+05 -5.5960901e+02 4.7975567e+01
+1.0982097e+04 -3.1520178e+01 2.7088067e+00
+6.2747780e+02 -1.7643378e+00 1.3218423e-01
+3.2310277e+01 -8.8979718e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3241679e+01 1.0203535e-01 -1.6182888e-01
+6.4485151e+02 2.0090030e+00 -3.3962853e+00
+1.1273579e+04 3.5625371e+01 -6.1510657e+01
+1.9640028e+05 6.2803144e+02 -1.0954851e+03
+3.0365468e+06 3.3931186e+03 -1.1700389e+04
+7.4786701e+06 5.7929759e+03 -5.3147470e+04
+1.1997780e+07 8.2537441e+03 -1.1434967e+05
+1.5099396e+07 1.0558214e+04 -1.6706612e+05
+1.6533423e+07 1.2497950e+04 -1.8897896e+05
+1.6870120e+07 1.3834189e+04 -1.7568031e+05
+1.6773638e+07 1.4355062e+04 -1.3775581e+05
+1.6542385e+07 1.3953712e+04 -9.1265089e+04
+1.5968880e+07 1.2662772e+04 -4.9623916e+04
+1.4457573e+07 1.0645621e+04 -1.9990749e+04
+1.1457234e+07 8.1653109e+03 -3.6295162e+03
+7.1629419e+06 5.5422999e+03 1.9060524e+03
+2.9449533e+06 3.1133324e+03 1.0481845e+03
+1.9487054e+05 5.5960900e+02 5.9944219e+01
+1.1178163e+04 3.1520175e+01 3.3815732e+00
+6.3893171e+02 1.7643377e+00 1.6476604e-01
+3.2913932e+01 8.8979713e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2629845e+01 2.6016385e-01 -1.2441570e-01
+6.3325187e+02 5.1265945e+00 -2.6246649e+00
+1.1075197e+04 9.1026690e+01 -4.7809164e+01
+1.9299664e+05 1.6073295e+03 -8.5611362e+02
+3.0112253e+06 8.6711109e+03 -1.1047228e+04
+7.3747429e+06 1.4770746e+04 -5.1143549e+04
+1.1821191e+07 2.1051358e+04 -1.1046615e+05
+1.4890812e+07 2.6994063e+04 -1.6163782e+05
+1.6330488e+07 3.2059562e+04 -1.8295415e+05
+1.6687153e+07 3.5593817e+04 -1.7008578e+05
+1.6603213e+07 3.7006099e+04 -1.3330258e+05
+1.6368152e+07 3.5996198e+04 -8.8223643e+04
+1.5781170e+07 3.2650833e+04 -4.7896719e+04
+1.4266602e+07 2.7413602e+04 -1.9265003e+04
+1.1295757e+07 2.0989833e+04 -3.5238478e+03
+7.0679424e+06 1.4222770e+04 1.7369952e+03
+2.9221550e+06 7.9795486e+03 8.3860037e+02
+1.9150367e+05 1.4322653e+03 4.7975561e+01
+1.0982097e+04 8.0544842e+01 2.7088067e+00
+6.2747780e+02 4.5029505e+00 1.3218424e-01
+3.2310277e+01 2.2692423e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0584161e+01 3.0727795e-01 -3.4539472e-02
+5.9436969e+02 6.0580355e+00 -7.6046428e-01
+1.0409364e+04 1.0773450e+02 -1.4489046e+01
+1.8158405e+05 1.9071913e+03 -2.7018680e+02
+2.8993452e+06 1.0233173e+04 -9.3443695e+03
+7.0037094e+06 1.7315147e+04 -4.5625639e+04
+1.1205546e+07 2.4676749e+04 -9.9579152e+04
+1.4151475e+07 3.1822849e+04 -1.4631804e+05
+1.5584080e+07 3.8103864e+04 -1.6592807e+05
+1.5984637e+07 4.2620689e+04 -1.5431694e+05
+1.5932658e+07 4.4531405e+04 -1.2083101e+05
+1.5691514e+07 4.3401087e+04 -7.9796867e+04
+1.5079801e+07 3.9339317e+04 -4.3190379e+04
+1.3579248e+07 3.2941085e+04 -1.7344291e+04
+1.0724608e+07 2.5129506e+04 -3.2812160e+03
+6.7231706e+06 1.6966066e+04 1.2791226e+03
+2.8177436e+06 9.4932763e+03 3.2173342e+02
+1.8020336e+05 1.6998121e+03 1.8612676e+01
+1.0323337e+04 9.5362758e+01 1.0667548e+00
+5.8903996e+02 5.3238970e+00 5.2999588e-02
+3.0289494e+01 2.6820375e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6650255e+01 2.4330842e-01 5.3880877e-02
+5.1916937e+02 4.7809560e+00 1.0967700e+00
+9.1160464e+03 8.4902059e+01 1.9200618e+01
+1.5938466e+05 1.5044831e+03 3.3103934e+02
+2.6119538e+06 7.9282519e+03 -7.2313518e+03
+6.2211227e+06 1.3157703e+04 -3.7864995e+04
+9.9411421e+06 1.8706889e+04 -8.3701788e+04
+1.2600566e+07 2.4432153e+04 -1.2368138e+05
+1.3949355e+07 2.9818071e+04 -1.4070315e+05
+1.4373872e+07 3.3938190e+04 -1.3107148e+05
+1.4357424e+07 3.5876915e+04 -1.0267662e+05
+1.4122485e+07 3.5149910e+04 -6.7792959e+04
+1.3517503e+07 3.1849772e+04 -3.6715819e+04
+1.2111588e+07 2.6554687e+04 -1.4867231e+04
+9.5311646e+06 2.0127865e+04 -3.0754079e+03
+5.9823870e+06 1.3500209e+04 6.6550107e+02
+2.5423767e+06 7.5159475e+03 -2.2058799e+02
+1.5819459e+05 1.3422777e+03 -1.1869041e+01
+9.0420104e+03 7.5261023e+01 -6.2045848e-01
+5.1459094e+02 4.2094768e+00 -2.7707263e-02
+2.6397560e+01 2.1284467e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0638319e+01 1.2992136e-01 9.0510405e-02
+4.0323081e+02 2.5067558e+00 1.8894627e+00
+7.1071131e+03 4.3819767e+01 3.4127237e+01
+1.2474661e+05 7.6884848e+02 6.0810327e+02
+2.0736235e+06 3.7765763e+03 -5.3671727e+03
+4.9163795e+06 5.8229889e+03 -2.9325832e+04
+7.8685426e+06 8.1663414e+03 -6.5316338e+04
+1.0012379e+07 1.1134802e+04 -9.6996989e+04
+1.1131819e+07 1.4467180e+04 -1.1084453e+05
+1.1509089e+07 1.7368379e+04 -1.0371649e+05
+1.1511994e+07 1.9004957e+04 -8.1653796e+04
+1.1312206e+07 1.8927655e+04 -5.4289966e+04
+1.0794200e+07 1.7188504e+04 -2.9784105e+04
+9.6311284e+06 1.4222579e+04 -1.2467865e+04
+7.5498809e+06 1.0639647e+04 -3.0348137e+03
+4.7312985e+06 7.0312467e+03 6.8381779e+01
+2.0196863e+06 3.8635614e+03 -4.9532081e+02
+1.2381970e+05 6.8963655e+02 -2.7004948e+01
+7.0495901e+03 3.9104742e+01 -1.4454547e+00
+3.9968261e+02 2.2242073e+00 -6.6852812e-02
+2.0442881e+01 1.1459681e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3247343e+01 4.1248752e-02 6.7032279e-02
+2.5895279e+02 7.3754944e-01 1.4017975e+00
+4.5811184e+03 1.1873471e+01 2.5503011e+01
+8.0977253e+04 1.9362173e+02 4.6048239e+02
+1.3281834e+06 5.3245168e+02 -3.9958947e+03
+3.2041887e+06 1.4877080e+02 -2.0970248e+04
+5.1649227e+06 3.4914723e+01 -4.6428049e+04
+6.5919953e+06 8.3487156e+02 -6.9092230e+04
+7.3336478e+06 2.4611443e+03 -7.9421073e+04
+7.5778319e+06 4.2629469e+03 -7.4976162e+04
+7.5747791e+06 5.5464766e+03 -5.9782271e+04
+7.4423233e+06 5.9453891e+03 -4.0517654e+04
+7.1017107e+06 5.4850520e+03 -2.2954768e+04
+6.3308478e+06 4.4463629e+03 -1.0254987e+04
+4.9474273e+06 3.1804514e+03 -3.0462616e+03
+3.0783285e+06 1.9743462e+03 -3.5816482e+02
+1.2916684e+06 1.0078630e+03 -4.0547563e+02
+8.0358832e+04 1.8109963e+02 -2.2002646e+01
+4.5429160e+03 1.1068036e+01 -1.1807281e+00
+2.5660229e+02 6.8158812e-01 -5.5050010e-02
+1.3117923e+01 3.7729012e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.2536116e+00 5.6983911e-03 2.3329390e-02
+1.1978587e+02 6.6334074e-02 4.6173711e-01
+2.0941518e+03 3.8048126e-01 7.9805314e+00
+3.7454539e+04 -5.4860772e+00 1.3957361e+02
+5.9569349e+05 -5.0326239e+02 -2.8019683e+03
+1.5304974e+06 -1.5951223e+03 -1.3017331e+04
+2.5110560e+06 -2.3962780e+03 -2.8205529e+04
+3.2075971e+06 -2.2086076e+03 -4.1898184e+04
+3.5436207e+06 -1.1191634e+03 -4.8491202e+04
+3.6298563e+06 2.7067369e+02 -4.6386862e+04
+3.6105986e+06 1.3607420e+03 -3.7746037e+04
+3.5536258e+06 1.8612572e+03 -2.6370520e+04
+3.4133615e+06 1.8061282e+03 -1.5657803e+04
+3.0613300e+06 1.4055702e+03 -7.5792123e+03
+2.3896833e+06 8.8883174e+02 -2.6688461e+03
+1.4605841e+06 4.2210004e+02 -5.0785020e+02
+5.7558703e+05 1.1151220e+02 -1.4637771e+02
+3.7139130e+04 8.2207193e+00 -8.2595822e+00
+2.0748095e+03 9.4920384e-01 -4.6479613e-01
+1.1858612e+02 8.8402460e-02 -2.2712731e-02
+6.1866406e+00 6.3710266e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7530791e+00 4.7885537e-04 1.1420909e-03
+2.8587577e+01 2.4141667e-03 -2.7213664e-03
+3.8681334e+02 -4.2198626e-02 -5.3244660e-01
+4.5692243e+03 -1.4620158e+00 -1.6889492e+01
+4.0674900e+04 -2.9322518e+01 -6.3453486e+02
+9.3607866e+04 -8.9538934e+01 -2.5550158e+03
+1.4857989e+05 -1.3648677e+02 -5.4221754e+03
+1.9158970e+05 -1.2871358e+02 -8.0629522e+03
+2.1763927e+05 -6.8051665e+01 -9.4154359e+03
+2.2938385e+05 1.2238461e+01 -9.1307640e+03
+2.3152196e+05 7.6919988e+01 -7.5646894e+03
+2.2642140e+05 1.0781749e+02 -5.4086607e+03
+2.1258271e+05 1.0580347e+02 -3.3108375e+03
+1.8591945e+05 8.2722793e+01 -1.6733921e+03
+1.4387512e+05 5.2194662e+01 -6.3363911e+02
+9.0872735e+04 2.4640207e+01 -1.3783475e+02
+3.9806724e+04 6.8040392e+00 -7.8305172e+00
+4.4991357e+03 6.6475134e-01 -7.3461169e-01
+3.8153808e+02 8.2222231e-02 -6.0784140e-02
+2.8210198e+01 9.3825439e-03 -3.8547221e-03
+1.7298672e+00 8.1522678e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3389998e-01 1.6245426e-05 -4.4625031e-04
+4.5473246e+00 -3.1198618e-04 -1.0539209e-02
+4.7726203e+01 -1.0031881e-02 -1.8544977e-01
+4.0307438e+02 -1.6128383e-01 -2.8193912e+00
+2.3144560e+03 -1.7090310e+00 -3.9489856e+01
+5.3337818e+03 -4.9801028e+00 -1.4789282e+02
+8.5116084e+03 -7.6570254e+00 -3.1129823e+02
+1.1025665e+04 -7.3738525e+00 -4.6477947e+02
+1.2566114e+04 -4.0541333e+00 -5.4631835e+02
+1.3267880e+04 5.0800382e-01 -5.3334288e+02
+1.3397018e+04 4.2808971e+00 -4.4450820e+02
+1.3091240e+04 6.1487275e+00 -3.1939396e+02
+1.2265111e+04 6.0978026e+00 -1.9628205e+02
+1.0688829e+04 4.7857252e+00 -9.9625639e+01
+8.2321448e+03 3.0131538e+00 -3.8224410e+01
+5.1691709e+03 1.4203954e+00 -8.9565686e+00
+2.2571093e+03 4.1094914e-01 -8.0419967e-01
+3.9496059e+02 5.2472368e-02 -7.8631950e-02
+4.6874816e+01 6.8830471e-03 -7.3471574e-03
+4.4710825e+00 8.7987322e-04 -5.3195443e-04
+3.2844533e-01 8.6933398e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.7979824e-02 -1.6138702e-06 -1.3121753e-04
+5.5499444e-01 -6.0708451e-05 -2.1788094e-03
+4.6884520e+00 -1.0229704e-03 -2.7330438e-02
+3.0622306e+01 -1.1643105e-02 -2.9204346e-01
+1.3452093e+02 -8.6381043e-02 -2.4805470e+00
+3.0391863e+02 -2.4032415e-01 -8.5906281e+00
+4.8580609e+02 -3.7072988e-01 -1.7835361e+01
+6.3187320e+02 -3.6293268e-01 -2.6672405e+01
+7.2266034e+02 -2.0593246e-01 -3.1526886e+01
+7.6458828e+02 1.7060170e-02 -3.0970010e+01
+7.7244398e+02 2.0568671e-01 -2.5960862e+01
+7.5412068e+02 3.0182053e-01 -1.8746837e+01
+7.0484942e+02 3.0200510e-01 -1.1572269e+01
+6.1197109e+02 2.3775929e-01 -5.9098984e+00
+4.6926505e+02 1.4952512e-01 -2.3094821e+00
+2.9400751e+02 7.0633760e-02 -5.8513544e-01
+1.3076735e+02 2.1330114e-02 -7.3937470e-02
+2.9886987e+01 3.3134100e-03 -8.3064624e-03
+4.5870919e+00 4.6558373e-04 -8.5621209e-04
+5.4376267e-01 6.3674778e-05 -6.7525427e-05
+4.7043520e-02 6.8263311e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8139526e-03 0.0000000e+00 -1.8112316e-05
+4.9088895e-02 0.0000000e+00 -2.5433893e-04
+3.5201940e-01 0.0000000e+00 -2.6128953e-03
+1.9153214e+00 0.0000000e+00 -2.2079421e-02
+7.1173864e+00 0.0000000e+00 -1.3989962e-01
+1.5666949e+01 0.0000000e+00 -4.5134361e-01
+2.5008033e+01 0.0000000e+00 -9.2211808e-01
+3.2624421e+01 0.0000000e+00 -1.3783623e+00
+3.7426973e+01 0.0000000e+00 -1.6359835e+00
+3.9676226e+01 0.0000000e+00 -1.6155023e+00
+4.0105867e+01 0.0000000e+00 -1.3611262e+00
+3.9120160e+01 0.0000000e+00 -9.8746632e-01
+3.6481844e+01 0.0000000e+00 -6.1238280e-01
+3.1569058e+01 0.0000000e+00 -3.1499120e-01
+2.4128277e+01 0.0000000e+00 -1.2555162e-01
+1.5130550e+01 0.0000000e+00 -3.4096581e-02
+6.9001268e+00 0.0000000e+00 -5.4066443e-03
+1.8633815e+00 0.0000000e+00 -7.0147683e-04
+3.4331482e-01 0.0000000e+00 -7.9776437e-05
+4.7951520e-02 0.0000000e+00 -6.7577784e-06
+4.7068374e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.8280813e-03 3.1716095e-06 -1.7300340e-05
+4.9242898e-02 7.2974264e-05 -2.4427806e-04
+3.5322114e-01 1.0751320e-03 -2.5211497e-03
+1.9225145e+00 1.1656850e-02 -2.1371077e-02
+7.1467564e+00 8.4937981e-02 -1.3567900e-01
+1.5733863e+01 2.3559955e-01 -4.3819209e-01
+2.5102269e+01 3.6378492e-01 -8.9621267e-01
+3.2712035e+01 3.5852901e-01 -1.3423561e+00
+3.7474973e+01 2.0970592e-01 -1.6000618e+00
+3.9672042e+01 -2.6501585e-03 -1.5932278e+00
+4.0058634e+01 -1.8390184e-01 -1.3620933e+00
+3.9049935e+01 -2.8076232e-01 -1.0111063e+00
+3.6408319e+01 -2.9012570e-01 -6.4745556e-01
+3.1506078e+01 -2.3819008e-01 -3.4628582e-01
+2.4083386e+01 -1.5768453e-01 -1.4370948e-01
+1.5105490e+01 -7.8338040e-02 -4.0311707e-02
+6.8906112e+00 -2.4380424e-02 -6.4156868e-03
+1.8613653e+00 -3.5783546e-03 -8.2118847e-04
+3.4303410e-01 -4.4931934e-04 -9.1151760e-05
+4.7923179e-02 -5.5284298e-05 -7.5262778e-06
+4.7048910e-03 -5.5798804e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8105872e-02 3.0539042e-06 -1.2593004e-04
+5.5655614e-01 4.8580517e-04 -2.1004642e-03
+4.7029033e+00 1.0963346e-02 -2.6440039e-02
+3.0728048e+01 1.6266038e-01 -2.8318602e-01
+1.3505156e+02 1.6802497e+00 -2.4091285e+00
+3.0521441e+02 4.8821708e+00 -8.3514834e+00
+4.8766106e+02 7.5130540e+00 -1.7355724e+01
+6.3359917e+02 7.2810267e+00 -2.6004195e+01
+7.2360518e+02 4.1249934e+00 -3.0864314e+01
+7.6451677e+02 -2.2452327e-01 -3.0570933e+01
+7.7154706e+02 -3.8494999e+00 -2.6008410e+01
+7.5279386e+02 -5.7320301e+00 -1.9230317e+01
+7.0347105e+02 -5.8684377e+00 -1.2273629e+01
+6.1079982e+02 -4.8106186e+00 -6.5299330e+00
+4.6843804e+02 -3.1987689e+00 -2.6618408e+00
+2.9355603e+02 -1.5918717e+00 -6.9682888e-01
+1.3060898e+02 -4.7598966e-01 -8.6853690e-02
+2.9861623e+01 -5.5646738e-02 -9.4208237e-03
+4.5845734e+00 -6.4215132e-03 -9.3015042e-04
+5.4359585e-01 -7.4796355e-04 -7.0650342e-05
+4.7037743e-02 -7.0452953e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.3465042e-01 -3.0399624e-04 -4.4339028e-04
+4.5582587e+00 -5.3562671e-04 -1.0356027e-02
+4.7852314e+01 5.5552288e-02 -1.8105642e-01
+4.0429268e+02 1.5074348e+00 -2.7441305e+00
+2.3229767e+03 2.8828483e+01 -3.8413029e+01
+5.3564415e+03 8.7797801e+01 -1.4398835e+02
+8.5445330e+03 1.3394318e+02 -3.0334313e+02
+1.1056231e+04 1.2706565e+02 -4.5369356e+02
+1.2582745e+04 6.9217192e+01 -5.3541642e+02
+1.3266678e+04 -7.4258649e+00 -5.2701323e+02
+1.3381599e+04 -6.9556494e+01 -4.4588694e+02
+1.3068635e+04 -1.0070316e+02 -3.2831019e+02
+1.2241855e+04 -1.0197635e+02 -2.0894572e+02
+1.0669245e+04 -8.3430945e+01 -1.1074172e+02
+8.2184476e+03 -5.5814458e+01 -4.4428756e+01
+5.1618617e+03 -2.7945877e+01 -1.0765587e+01
+2.2547924e+03 -8.0094478e+00 -9.1522729e-01
+3.9474594e+02 -6.7327265e-01 -8.2956644e-02
+4.6865629e+01 -7.2940396e-02 -7.2499704e-03
+4.4713561e+00 -7.7704626e-03 -5.0111685e-04
+3.2852694e-01 -6.5318076e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7563103e+00 -4.3709239e-03 8.3568705e-04
+2.8643262e+01 -4.8589465e-02 -6.7954708e-03
+3.8762815e+02 -2.0536623e-01 -5.6068910e-01
+4.5802603e+03 6.6094411e+00 -1.6698750e+01
+4.0810299e+04 4.9488718e+02 -6.1815713e+02
+9.4003790e+04 1.5649370e+03 -2.4912206e+03
+1.4916078e+05 2.3527744e+03 -5.2909437e+03
+1.9212559e+05 2.1807282e+03 -7.8805010e+03
+2.1792689e+05 1.1388751e+03 -9.2377795e+03
+2.2935996e+05 -1.8938331e+02 -9.0319368e+03
+2.3125459e+05 -1.2360557e+03 -7.5980604e+03
+2.2603493e+05 -1.7405880e+03 -5.5717085e+03
+2.1218954e+05 -1.7421736e+03 -3.5383401e+03
+1.8559142e+05 -1.4213812e+03 -1.8723559e+03
+1.4364745e+05 -9.5706491e+02 -7.4343731e+02
+9.0753391e+04 -4.8452011e+02 -1.6751886e+02
+3.9772945e+04 -1.3367095e+02 -8.0784361e+00
+4.4986120e+03 -7.5539490e+00 -6.7407399e-01
+3.8163697e+02 -7.9343818e-01 -5.2461786e-02
+2.8224371e+01 -7.1184226e-02 -3.2203974e-03
+1.7310281e+00 -5.0345022e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.2626681e+00 -3.3525949e-02 2.0098552e-02
+1.1996408e+02 -6.0074274e-01 3.9404266e-01
+2.0972868e+03 -9.6970325e+00 6.7507275e+00
+3.7509092e+04 -1.5863441e+02 1.1744107e+02
+5.9932721e+05 -3.5008460e+02 -2.6713122e+03
+1.5417414e+06 1.7145241e+02 -1.2521769e+04
+2.5276640e+06 4.3802054e+02 -2.7215025e+04
+3.2232648e+06 -2.0064721e+02 -4.0501400e+04
+3.5529411e+06 -1.6669827e+03 -4.7015929e+04
+3.6312664e+06 -3.3338318e+03 -4.5281605e+04
+3.6059881e+06 -4.5434726e+03 -3.7363757e+04
+3.5462450e+06 -4.9615550e+03 -2.6761976e+04
+3.4059897e+06 -4.6190677e+03 -1.6513225e+04
+3.0555632e+06 -3.7653824e+03 -8.4023433e+03
+2.3861282e+06 -2.6969865e+03 -3.1073908e+03
+1.4592298e+06 -1.6579127e+03 -5.7971761e+02
+5.7581101e+05 -8.2232886e+02 -1.1503928e+02
+3.7166569e+04 -1.4358579e+02 -6.4468387e+00
+2.0766662e+03 -8.7367592e+00 -3.6020229e-01
+1.1870722e+02 -5.3500677e-01 -1.7479615e-02
+6.1935687e+00 -2.9442225e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3262070e+01 -1.0678427e-01 5.8531080e-02
+2.5926058e+02 -2.0658672e+00 1.2158715e+00
+4.5868688e+03 -3.6215708e+01 2.1984187e+01
+8.1082566e+04 -6.3712388e+02 3.9516086e+02
+1.3349293e+06 -3.0369648e+03 -3.6638347e+03
+3.2249726e+06 -4.4923365e+03 -1.9783912e+04
+5.1958888e+06 -6.2065284e+03 -4.4105494e+04
+6.6220608e+06 -8.5842060e+03 -6.5787442e+04
+7.3533745e+06 -1.1417980e+04 -7.5763056e+04
+7.5845474e+06 -1.3961340e+04 -7.1851040e+04
+7.5717506e+06 -1.5432169e+04 -5.7933789e+04
+7.4350066e+06 -1.5421522e+04 -4.0157167e+04
+7.0945509e+06 -1.3987546e+04 -2.3628868e+04
+6.3261076e+06 -1.1525384e+04 -1.1128587e+04
+4.9456521e+06 -8.5694813e+03 -3.4809493e+03
+3.0791448e+06 -5.6246347e+03 -3.3053172e+02
+1.2939001e+06 -3.0730749e+03 -3.1142779e+02
+8.0467709e+04 -5.4714865e+02 -1.6741732e+01
+4.5491945e+03 -3.0866766e+01 -8.9014569e-01
+2.5696417e+02 -1.7458923e+00 -4.1141164e-02
+1.3136802e+01 -8.9462364e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0651436e+01 -2.0080846e-01 8.0906743e-02
+4.0352592e+02 -3.9561650e+00 1.6760948e+00
+7.1129606e+03 -7.0449069e+01 3.0061952e+01
+1.2485820e+05 -1.2516482e+03 5.3299877e+02
+2.0823874e+06 -6.5047735e+03 -4.7630854e+03
+4.9450341e+06 -1.0596586e+04 -2.7313486e+04
+7.9114144e+06 -1.4945641e+04 -6.1446179e+04
+1.0053409e+07 -1.9568012e+04 -9.1491898e+04
+1.1157620e+07 -2.4054512e+04 -1.0465587e+05
+1.1516229e+07 -2.7555623e+04 -9.8201462e+04
+1.1505569e+07 -2.9222085e+04 -7.7986704e+04
+1.1300296e+07 -2.8617373e+04 -5.2880899e+04
+1.0783234e+07 -2.5841322e+04 -3.0061462e+04
+9.6242287e+06 -2.1425473e+04 -1.3261639e+04
+7.5475920e+06 -1.6136232e+04 -3.4060754e+03
+4.7328322e+06 -1.0766588e+04 2.0216209e+02
+2.0231699e+06 -5.9838070e+03 -3.7071621e+02
+1.2399031e+05 -1.0685431e+03 -1.9927713e+01
+7.0594273e+03 -5.9580417e+01 -1.0512730e+00
+4.0024621e+02 -3.3128255e+00 -4.7937386e-02
+2.0472042e+01 -1.6656014e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6650641e+01 -2.5415802e-01 5.2963986e-02
+5.1922757e+02 -5.0240310e+00 1.0626281e+00
+9.1179074e+03 -8.9598826e+01 1.8351401e+01
+1.5942865e+05 -1.5905036e+03 3.1321533e+02
+2.6205480e+06 -8.4580361e+03 -6.3277440e+03
+6.2534010e+06 -1.4128523e+04 -3.5074129e+04
+9.9895648e+06 -2.0010324e+04 -7.8432149e+04
+1.2644599e+07 -2.5810013e+04 -1.1622276e+05
+1.3972379e+07 -3.1008353e+04 -1.3229290e+05
+1.4372294e+07 -3.4792188e+04 -1.2347832e+05
+1.4338559e+07 -3.6386632e+04 -9.7448985e+04
+1.4097336e+07 -3.5403251e+04 -6.5513233e+04
+1.3494816e+07 -3.1959766e+04 -3.6707238e+04
+1.2095724e+07 -2.6607632e+04 -1.5660797e+04
+9.5229999e+06 -2.0171645e+04 -3.4606570e+03
+5.9808907e+06 -1.3555985e+04 8.2507409e+02
+2.5449372e+06 -7.5793027e+03 -1.3994243e+02
+1.5835023e+05 -1.3569780e+03 -7.1506307e+00
+9.0513167e+03 -7.5685749e+01 -3.5162519e-01
+5.1514063e+02 -4.1995410e+00 -1.4609165e-02
+2.6426720e+01 -2.1032952e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0564540e+01 -2.1545338e-01 -1.9083568e-02
+5.9404236e+02 -4.2570170e+00 -4.5876617e-01
+1.0404508e+04 -7.5806577e+01 -9.3954089e+00
+1.8151090e+05 -1.3424069e+03 -1.8434595e+02
+2.9060632e+06 -7.1922275e+03 -8.1681301e+03
+7.0357573e+06 -1.2121205e+04 -4.2223350e+04
+1.1253755e+07 -1.7180061e+04 -9.3262462e+04
+1.4191856e+07 -2.2017848e+04 -1.3743574e+05
+1.5597773e+07 -2.6201525e+04 -1.5593510e+05
+1.5968339e+07 -2.9143550e+04 -1.4528578e+05
+1.5895867e+07 -3.0302379e+04 -1.1457954e+05
+1.5647966e+07 -2.9411504e+04 -7.7022692e+04
+1.5040506e+07 -2.6564548e+04 -4.3122693e+04
+1.3549967e+07 -2.2175011e+04 -1.8274495e+04
+1.0706822e+07 -1.6875582e+04 -3.7843614e+03
+6.7158372e+06 -1.1385073e+04 1.3781402e+03
+2.8176235e+06 -6.3842303e+03 3.0308271e+02
+1.8027729e+05 -1.1455326e+03 1.7709712e+01
+1.0328373e+04 -6.4034075e+01 1.0222704e+00
+5.8936916e+02 -3.5574956e+00 5.1026040e-02
+3.0308405e+01 -1.7821426e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2592213e+01 -8.4547726e-02 -9.3273767e-02
+6.3257470e+02 -1.6692263e+00 -2.0038963e+00
+1.1064206e+04 -2.9687599e+01 -3.7131643e+01
+1.9281604e+05 -5.2488365e+02 -6.7405531e+02
+3.0158577e+06 -2.8186203e+03 -9.6800749e+03
+7.4050641e+06 -4.7648353e+03 -4.7357672e+04
+1.1866927e+07 -6.7533028e+03 -1.0352084e+05
+1.4925829e+07 -8.6319324e+03 -1.5192374e+05
+1.6334657e+07 -1.0232996e+04 -1.7206106e+05
+1.6657559e+07 -1.1342590e+04 -1.6026811e+05
+1.6550944e+07 -1.1766772e+04 -1.2653460e+05
+1.6308880e+07 -1.1410969e+04 -8.5262537e+04
+1.5727557e+07 -1.0310544e+04 -4.7902626e+04
+1.4225515e+07 -8.6182871e+03 -2.0372047e+04
+1.1269249e+07 -6.5706138e+03 -4.1691374e+03
+7.0550785e+06 -4.4408643e+03 1.7505780e+03
+2.9192917e+06 -2.4935305e+03 7.2308425e+02
+1.9148772e+05 -4.4798521e+02 4.1488603e+01
+1.0982284e+04 -2.5079700e+01 2.3476502e+00
+6.2754814e+02 -1.3949518e+00 1.1475916e-01
+3.2316751e+01 -6.9929322e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3196868e+01 8.4547724e-02 -1.2428466e-01
+6.4403466e+02 1.6692263e+00 -2.6458794e+00
+1.1260136e+04 2.9687599e+01 -4.8577194e+01
+1.9617672e+05 5.2488365e+02 -8.7478571e+02
+3.0402994e+06 2.8186205e+03 -1.0264621e+04
+7.5081072e+06 4.7648351e+03 -4.9231429e+04
+1.2042238e+07 6.7533035e+03 -1.0719659e+05
+1.5132018e+07 8.6319313e+03 -1.5708197e+05
+1.6533675e+07 1.0232996e+04 -1.7779911e+05
+1.6835256e+07 1.1342592e+04 -1.6561941e+05
+1.6715323e+07 1.1766774e+04 -1.3083873e+05
+1.6476991e+07 1.1410972e+04 -8.8266589e+04
+1.5909671e+07 1.0310554e+04 -4.9678392e+04
+1.4411835e+07 8.6182884e+03 -2.1177196e+04
+1.1427253e+07 6.5706140e+03 -4.3373398e+03
+7.1478418e+06 4.4408643e+03 1.8810298e+03
+2.9409542e+06 2.4935302e+03 8.9314024e+02
+1.9481655e+05 4.4798517e+02 5.1160920e+01
+1.1176275e+04 2.5079698e+01 2.8892072e+00
+6.3889012e+02 1.3949515e+00 1.4089800e-01
+3.2914971e+01 6.9929307e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2592213e+01 2.1545338e-01 -9.3273762e-02
+6.3257470e+02 4.2570169e+00 -2.0038963e+00
+1.1064206e+04 7.5806577e+01 -3.7131640e+01
+1.9281604e+05 1.3424069e+03 -6.7405532e+02
+3.0158577e+06 7.1922273e+03 -9.6800750e+03
+7.4050641e+06 1.2121204e+04 -4.7357672e+04
+1.1866927e+07 1.7180061e+04 -1.0352084e+05
+1.4925829e+07 2.2017849e+04 -1.5192374e+05
+1.6334657e+07 2.6201525e+04 -1.7206106e+05
+1.6657559e+07 2.9143552e+04 -1.6026811e+05
+1.6550944e+07 3.0302382e+04 -1.2653460e+05
+1.6308880e+07 2.9411509e+04 -8.5262533e+04
+1.5727557e+07 2.6564544e+04 -4.7902634e+04
+1.4225515e+07 2.2175012e+04 -2.0372047e+04
+1.1269249e+07 1.6875581e+04 -4.1691381e+03
+7.0550785e+06 1.1385073e+04 1.7505779e+03
+2.9192917e+06 6.3842304e+03 7.2308428e+02
+1.9148772e+05 1.1455326e+03 4.1488603e+01
+1.0982284e+04 6.4034072e+01 2.3476496e+00
+6.2754814e+02 3.5574956e+00 1.1475916e-01
+3.2316751e+01 1.7821424e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0564540e+01 2.5415803e-01 -1.9083575e-02
+5.9404236e+02 5.0240311e+00 -4.5876602e-01
+1.0404508e+04 8.9598826e+01 -9.3954114e+00
+1.8151090e+05 1.5905036e+03 -1.8434599e+02
+2.9060632e+06 8.4580359e+03 -8.1681302e+03
+7.0357573e+06 1.4128523e+04 -4.2223349e+04
+1.1253755e+07 2.0010324e+04 -9.3262462e+04
+1.4191856e+07 2.5810013e+04 -1.3743574e+05
+1.5597773e+07 3.1008353e+04 -1.5593510e+05
+1.5968339e+07 3.4792188e+04 -1.4528577e+05
+1.5895867e+07 3.6386635e+04 -1.1457954e+05
+1.5647966e+07 3.5403247e+04 -7.7022696e+04
+1.5040506e+07 3.1959762e+04 -4.3122694e+04
+1.3549967e+07 2.6607630e+04 -1.8274497e+04
+1.0706822e+07 2.0171644e+04 -3.7843628e+03
+6.7158372e+06 1.3555985e+04 1.3781409e+03
+2.8176235e+06 7.5793025e+03 3.0308268e+02
+1.8027729e+05 1.3569780e+03 1.7709711e+01
+1.0328373e+04 7.5685749e+01 1.0222707e+00
+5.8936916e+02 4.1995410e+00 5.1025990e-02
+3.0308405e+01 2.1032953e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6650641e+01 2.0080846e-01 5.2963983e-02
+5.1922757e+02 3.9561650e+00 1.0626281e+00
+9.1179074e+03 7.0449068e+01 1.8351394e+01
+1.5942865e+05 1.2516482e+03 3.1321529e+02
+2.6205480e+06 6.5047736e+03 -6.3277432e+03
+6.2534010e+06 1.0596586e+04 -3.5074129e+04
+9.9895648e+06 1.4945641e+04 -7.8432149e+04
+1.2644599e+07 1.9568013e+04 -1.1622276e+05
+1.3972379e+07 2.4054513e+04 -1.3229290e+05
+1.4372294e+07 2.7555617e+04 -1.2347832e+05
+1.4338559e+07 2.9222082e+04 -9.7448988e+04
+1.4097336e+07 2.8617371e+04 -6.5513236e+04
+1.3494816e+07 2.5841323e+04 -3.6707237e+04
+1.2095724e+07 2.1425472e+04 -1.5660796e+04
+9.5229999e+06 1.6136232e+04 -3.4606578e+03
+5.9808907e+06 1.0766588e+04 8.2507393e+02
+2.5449372e+06 5.9838073e+03 -1.3994250e+02
+1.5835023e+05 1.0685431e+03 -7.1506277e+00
+9.0513167e+03 5.9580417e+01 -3.5162489e-01
+5.1514063e+02 3.3128255e+00 -1.4609172e-02
+2.6426720e+01 1.6656014e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0651436e+01 1.0678427e-01 8.0906742e-02
+4.0352592e+02 2.0658672e+00 1.6760948e+00
+7.1129606e+03 3.6215707e+01 3.0061951e+01
+1.2485820e+05 6.3712387e+02 5.3299878e+02
+2.0823874e+06 3.0369647e+03 -4.7630856e+03
+4.9450341e+06 4.4923367e+03 -2.7313485e+04
+7.9114144e+06 6.2065281e+03 -6.1446179e+04
+1.0053409e+07 8.5842061e+03 -9.1491899e+04
+1.1157620e+07 1.1417984e+04 -1.0465587e+05
+1.1516229e+07 1.3961342e+04 -9.8201461e+04
+1.1505569e+07 1.5432169e+04 -7.7986704e+04
+1.1300296e+07 1.5421522e+04 -5.2880899e+04
+1.0783234e+07 1.3987545e+04 -3.0061464e+04
+9.6242287e+06 1.1525385e+04 -1.3261638e+04
+7.5475920e+06 8.5694812e+03 -3.4060752e+03
+4.7328322e+06 5.6246349e+03 2.0216164e+02
+2.0231699e+06 3.0730749e+03 -3.7071616e+02
+1.2399031e+05 5.4714864e+02 -1.9927712e+01
+7.0594273e+03 3.0866766e+01 -1.0512730e+00
+4.0024621e+02 1.7458923e+00 -4.7937380e-02
+2.0472042e+01 8.9462364e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3262070e+01 3.3525949e-02 5.8531076e-02
+2.5926058e+02 6.0074274e-01 1.2158715e+00
+4.5868688e+03 9.6970322e+00 2.1984187e+01
+8.1082566e+04 1.5863441e+02 3.9516087e+02
+1.3349293e+06 3.5008463e+02 -3.6638347e+03
+3.2249726e+06 -1.7145237e+02 -1.9783912e+04
+5.1958888e+06 -4.3802070e+02 -4.4105493e+04
+6.6220608e+06 2.0064727e+02 -6.5787441e+04
+7.3533744e+06 1.6669817e+03 -7.5763056e+04
+7.5845474e+06 3.3338322e+03 -7.1851041e+04
+7.5717506e+06 4.5434730e+03 -5.7933789e+04
+7.4350066e+06 4.9615551e+03 -4.0157167e+04
+7.0945509e+06 4.6190677e+03 -2.3628868e+04
+6.3261076e+06 3.7653825e+03 -1.1128587e+04
+4.9456521e+06 2.6969871e+03 -3.4809498e+03
+3.0791448e+06 1.6579130e+03 -3.3053187e+02
+1.2939001e+06 8.2232882e+02 -3.1142781e+02
+8.0467709e+04 1.4358579e+02 -1.6741730e+01
+4.5491945e+03 8.7367591e+00 -8.9014570e-01
+2.5696417e+02 5.3500676e-01 -4.1141161e-02
+1.3136802e+01 2.9442224e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.2626681e+00 4.3709236e-03 2.0098551e-02
+1.1996408e+02 4.8589462e-02 3.9404259e-01
+2.0972868e+03 2.0536630e-01 6.7507274e+00
+3.7509092e+04 -6.6094410e+00 1.1744106e+02
+5.9932721e+05 -4.9488718e+02 -2.6713122e+03
+1.5417414e+06 -1.5649370e+03 -1.2521769e+04
+2.5276640e+06 -2.3527745e+03 -2.7215025e+04
+3.2232648e+06 -2.1807282e+03 -4.0501400e+04
+3.5529411e+06 -1.1388751e+03 -4.7015929e+04
+3.6312664e+06 1.8938332e+02 -4.5281606e+04
+3.6059881e+06 1.2360557e+03 -3.7363757e+04
+3.5462450e+06 1.7405880e+03 -2.6761976e+04
+3.4059897e+06 1.7421737e+03 -1.6513225e+04
+3.0555632e+06 1.4213813e+03 -8.4023434e+03
+2.3861282e+06 9.5706492e+02 -3.1073909e+03
+1.4592298e+06 4.8452012e+02 -5.7971763e+02
+5.7581101e+05 1.3367097e+02 -1.1503928e+02
+3.7166569e+04 7.5539499e+00 -6.4468385e+00
+2.0766662e+03 7.9343815e-01 -3.6020230e-01
+1.1870722e+02 7.1184225e-02 -1.7479614e-02
+6.1935687e+00 5.0345020e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7563103e+00 3.0399623e-04 8.3568730e-04
+2.8643262e+01 5.3562615e-04 -6.7954723e-03
+3.8762815e+02 -5.5552294e-02 -5.6068921e-01
+4.5802603e+03 -1.5074348e+00 -1.6698751e+01
+4.0810299e+04 -2.8828483e+01 -6.1815713e+02
+9.4003790e+04 -8.7797803e+01 -2.4912206e+03
+1.4916078e+05 -1.3394318e+02 -5.2909436e+03
+1.9212559e+05 -1.2706565e+02 -7.8805010e+03
+2.1792689e+05 -6.9217192e+01 -9.2377795e+03
+2.2935996e+05 7.4258640e+00 -9.0319368e+03
+2.3125459e+05 6.9556491e+01 -7.5980605e+03
+2.2603493e+05 1.0070316e+02 -5.5717085e+03
+2.1218954e+05 1.0197635e+02 -3.5383401e+03
+1.8559142e+05 8.3430946e+01 -1.8723559e+03
+1.4364745e+05 5.5814458e+01 -7.4343730e+02
+9.0753391e+04 2.7945875e+01 -1.6751885e+02
+3.9772945e+04 8.0094473e+00 -8.0784365e+00
+4.4986120e+03 6.7327252e-01 -6.7407409e-01
+3.8163697e+02 7.2940395e-02 -5.2461785e-02
+2.8224371e+01 7.7704626e-03 -3.2203974e-03
+1.7310281e+00 6.5318078e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3465042e-01 -3.0539062e-06 -4.4339030e-04
+4.5582587e+00 -4.8580517e-04 -1.0356027e-02
+4.7852314e+01 -1.0963345e-02 -1.8105642e-01
+4.0429268e+02 -1.6266038e-01 -2.7441306e+00
+2.3229767e+03 -1.6802497e+00 -3.8413029e+01
+5.3564415e+03 -4.8821708e+00 -1.4398835e+02
+8.5445330e+03 -7.5130541e+00 -3.0334313e+02
+1.1056231e+04 -7.2810266e+00 -4.5369356e+02
+1.2582745e+04 -4.1249935e+00 -5.3541642e+02
+1.3266678e+04 2.2452331e-01 -5.2701323e+02
+1.3381599e+04 3.8494999e+00 -4.4588694e+02
+1.3068635e+04 5.7320302e+00 -3.2831020e+02
+1.2241855e+04 5.8684381e+00 -2.0894572e+02
+1.0669245e+04 4.8106186e+00 -1.1074172e+02
+8.2184476e+03 3.1987687e+00 -4.4428757e+01
+5.1618617e+03 1.5918717e+00 -1.0765586e+01
+2.2547924e+03 4.7598964e-01 -9.1522735e-01
+3.9474594e+02 5.5646739e-02 -8.2956643e-02
+4.6865629e+01 6.4215131e-03 -7.2499706e-03
+4.4713561e+00 7.4796353e-04 -5.0111681e-04
+3.2852694e-01 7.0452951e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.8105872e-02 -3.1716099e-06 -1.2593004e-04
+5.5655614e-01 -7.2974258e-05 -2.1004641e-03
+4.7029033e+00 -1.0751320e-03 -2.6440039e-02
+3.0728048e+01 -1.1656849e-02 -2.8318602e-01
+1.3505156e+02 -8.4937983e-02 -2.4091285e+00
+3.0521441e+02 -2.3559955e-01 -8.3514834e+00
+4.8766106e+02 -3.6378492e-01 -1.7355724e+01
+6.3359917e+02 -3.5852902e-01 -2.6004195e+01
+7.2360518e+02 -2.0970592e-01 -3.0864314e+01
+7.6451677e+02 2.6501605e-03 -3.0570933e+01
+7.7154706e+02 1.8390184e-01 -2.6008410e+01
+7.5279386e+02 2.8076228e-01 -1.9230317e+01
+7.0347105e+02 2.9012568e-01 -1.2273629e+01
+6.1079982e+02 2.3819009e-01 -6.5299330e+00
+4.6843804e+02 1.5768453e-01 -2.6618408e+00
+2.9355603e+02 7.8338040e-02 -6.9682888e-01
+1.3060898e+02 2.4380424e-02 -8.6853691e-02
+2.9861623e+01 3.5783543e-03 -9.4208236e-03
+4.5845734e+00 4.4931931e-04 -9.3015044e-04
+5.4359585e-01 5.5284295e-05 -7.0650334e-05
+4.7037743e-02 5.5798799e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8280813e-03 0.0000000e+00 -1.7300340e-05
+4.9242898e-02 0.0000000e+00 -2.4427806e-04
+3.5322114e-01 0.0000000e+00 -2.5211497e-03
+1.9225145e+00 0.0000000e+00 -2.1371078e-02
+7.1467564e+00 0.0000000e+00 -1.3567900e-01
+1.5733863e+01 0.0000000e+00 -4.3819209e-01
+2.5102269e+01 0.0000000e+00 -8.9621266e-01
+3.2712035e+01 0.0000000e+00 -1.3423561e+00
+3.7474973e+01 0.0000000e+00 -1.6000618e+00
+3.9672042e+01 0.0000000e+00 -1.5932278e+00
+4.0058634e+01 0.0000000e+00 -1.3620933e+00
+3.9049935e+01 0.0000000e+00 -1.0111063e+00
+3.6408319e+01 0.0000000e+00 -6.4745556e-01
+3.1506078e+01 0.0000000e+00 -3.4628583e-01
+2.4083386e+01 0.0000000e+00 -1.4370948e-01
+1.5105490e+01 0.0000000e+00 -4.0311707e-02
+6.8906112e+00 0.0000000e+00 -6.4156870e-03
+1.8613653e+00 0.0000000e+00 -8.2118847e-04
+3.4303410e-01 0.0000000e+00 -9.1151763e-05
+4.7923179e-02 0.0000000e+00 -7.5262773e-06
+4.7048910e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.8388622e-03 5.1094040e-06 -1.5890303e-05
+4.9365698e-02 8.7630628e-05 -2.2632087e-04
+3.5422169e-01 1.1264754e-03 -2.3533490e-03
+1.9287204e+00 1.1495148e-02 -2.0054406e-02
+7.1727655e+00 8.1702460e-02 -1.2776603e-01
+1.5793927e+01 2.2597945e-01 -4.1380933e-01
+2.5187316e+01 3.5055791e-01 -8.4941438e-01
+3.2791176e+01 3.5094743e-01 -1.2795019e+00
+3.7518139e+01 2.1695829e-01 -1.5396266e+00
+3.9667622e+01 2.1765230e-02 -1.5569722e+00
+4.0014175e+01 -1.4924885e-01 -1.3632640e+00
+3.8982210e+01 -2.4892808e-01 -1.0466112e+00
+3.6333929e+01 -2.7308945e-01 -6.9913209e-01
+3.1437980e+01 -2.3937509e-01 -3.9165840e-01
+2.4031166e+01 -1.6969329e-01 -1.6974572e-01
+1.5074294e+01 -8.9366854e-02 -4.9182078e-02
+6.8779859e+00 -2.8687020e-02 -7.8697609e-03
+1.8584434e+00 -3.9499578e-03 -9.9791031e-04
+3.4257128e-01 -4.2636593e-04 -1.0872240e-04
+4.7866889e-02 -4.3638124e-05 -8.7941960e-06
+4.6999658e-03 -3.8690004e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8199870e-02 2.7462500e-05 -1.1635107e-04
+5.5778234e-01 6.9973896e-04 -1.9546586e-03
+4.7148399e+00 1.1985993e-02 -2.4750771e-02
+3.0819208e+01 1.6179930e-01 -2.6621431e-01
+1.3552408e+02 1.6142761e+00 -2.2713097e+00
+3.0638625e+02 4.6779561e+00 -7.8951210e+00
+4.8934913e+02 7.2323861e+00 -1.6465016e+01
+6.3517436e+02 7.1175890e+00 -2.4806839e+01
+7.2447078e+02 4.2644911e+00 -2.9719971e+01
+7.6445502e+02 2.6229326e-01 -2.9898752e+01
+7.7071800e+02 -3.1563856e+00 -2.6062560e+01
+7.5152964e+02 -5.0970515e+00 -1.9950221e+01
+7.0208951e+02 -5.5370686e+00 -1.3304699e+01
+6.0954085e+02 -4.8567469e+00 -7.4283612e+00
+4.6747772e+02 -3.4705903e+00 -3.1671393e+00
+2.9299285e+02 -1.8369044e+00 -8.5641927e-01
+1.3039727e+02 -5.6770626e-01 -1.0568697e-01
+2.9823215e+01 -6.0097391e-02 -1.1131767e-02
+4.5798510e+00 -5.7779020e-03 -1.0577365e-03
+5.4313828e-01 -5.6626902e-04 -7.7538379e-05
+4.7004345e-02 -4.8009056e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.3518559e-01 -7.8547206e-05 -4.2916687e-04
+4.5665635e+00 1.8498093e-03 -9.8840427e-03
+4.7954290e+01 7.1595787e-02 -1.7146988e-01
+4.0533412e+02 1.5395401e+00 -2.5906550e+00
+2.3305986e+03 2.7662940e+01 -3.6261258e+01
+5.3770821e+03 8.4051866e+01 -1.3627575e+02
+8.5747329e+03 1.2883250e+02 -2.8807572e+02
+1.1084392e+04 1.2407983e+02 -4.3319949e+02
+1.2598231e+04 7.1562878e+01 -5.1598468e+02
+1.3265876e+04 9.6211877e-01 -5.1588282e+02
+1.3367587e+04 -5.7594165e+01 -4.4743312e+02
+1.3047348e+04 -8.9767580e+01 -3.4147594e+02
+1.2218765e+04 -9.6402527e+01 -2.2752068e+02
+1.0648320e+04 -8.4613525e+01 -1.2683843e+02
+8.2025615e+03 -6.1097164e+01 -5.3325763e+01
+5.1527163e+03 -3.2664553e+01 -1.3352706e+01
+2.2516627e+03 -9.7084221e+00 -1.0822688e+00
+3.9438010e+02 -6.8545862e-01 -9.1059504e-02
+4.6836340e+01 -6.0159906e-02 -7.3888642e-03
+4.4694603e+00 -5.5767048e-03 -4.8255994e-04
+3.2843136e-01 -4.3499438e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7584284e+00 -2.6248860e-03 4.2829346e-04
+2.8682689e+01 -2.5368021e-02 -1.1780282e-02
+3.8825187e+02 1.9367707e-02 -5.8327716e-01
+4.5893888e+03 7.9056160e+00 -1.6077797e+01
+4.0931628e+04 4.7443548e+02 -5.8417927e+02
+9.4366562e+04 1.4974791e+03 -2.3603784e+03
+1.4969697e+05 2.2621413e+03 -5.0298685e+03
+1.9262290e+05 2.1284137e+03 -7.5315090e+03
+2.1819785e+05 1.1790217e+03 -8.9099281e+03
+2.2934595e+05 -4.5734193e+01 -8.8492148e+03
+2.3101440e+05 -1.0313611e+03 -7.6352627e+03
+2.2567422e+05 -1.5536140e+03 -5.8107058e+03
+2.1180216e+05 -1.6483613e+03 -3.8713627e+03
+1.8524252e+05 -1.4468031e+03 -2.1602794e+03
+1.4338342e+05 -1.0564941e+03 -9.0085052e+02
+9.0603472e+04 -5.7361036e+02 -2.0998622e+02
+3.9726762e+04 -1.6491784e+02 -8.5939591e+00
+4.4965782e+03 -6.6307722e+00 -6.1477886e-01
+3.8158771e+02 -5.8221832e-01 -4.3466049e-02
+2.8225949e+01 -4.8095015e-02 -2.5261342e-03
+1.7313240e+00 -3.2570454e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.2677214e+00 -2.3189334e-02 1.5511107e-02
+1.2007232e+02 -4.1677430e-01 2.9867263e-01
+2.0993297e+03 -6.7536924e+00 5.0287520e+00
+3.7546496e+04 -1.1102213e+02 8.6552488e+01
+6.0246814e+05 -1.0724183e+02 -2.4727005e+03
+1.5518811e+06 5.8840220e+02 -1.1703357e+04
+2.5427456e+06 1.0613136e+03 -2.5584172e+04
+3.2374489e+06 6.6167401e+02 -3.8301517e+04
+3.5612447e+06 -5.5777946e+02 -4.4868303e+04
+3.6322724e+06 -2.0210427e+03 -4.3898926e+04
+3.6013857e+06 -3.1297470e+03 -3.7198111e+04
+3.5388401e+06 -3.5895862e+03 -2.7757227e+04
+3.3981179e+06 -3.4279773e+03 -1.8105837e+04
+3.0486783e+06 -2.8412899e+03 -9.8265106e+03
+2.3811601e+06 -2.0477411e+03 -3.8671580e+03
+1.4567594e+06 -1.2348849e+03 -7.3544550e+02
+5.7555998e+05 -5.7376212e+02 -7.5571671e+01
+3.7182027e+04 -9.3453742e+01 -4.2065580e+00
+2.0777471e+03 -5.6363069e+00 -2.3339000e-01
+1.1877801e+02 -3.4103391e-01 -1.1243472e-02
+6.1975959e+00 -1.8527728e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3268413e+01 -7.5710182e-02 4.6177816e-02
+2.5941343e+02 -1.4708742e+00 9.4742559e-01
+4.5900340e+03 -2.5898158e+01 1.6926705e+01
+8.1144416e+04 -4.5741842e+02 3.0147246e+02
+1.3404202e+06 -2.0278192e+03 -3.2688767e+03
+3.2431305e+06 -2.6845235e+03 -1.8153798e+04
+5.2232027e+06 -3.5375533e+03 -4.0868862e+04
+6.6483228e+06 -5.0889816e+03 -6.1380163e+04
+7.3699722e+06 -7.2160768e+03 -7.1319642e+04
+7.5891542e+06 -9.2571395e+03 -6.8690341e+04
+7.5673687e+06 -1.0509650e+04 -5.6928579e+04
+7.4263863e+06 -1.0614849e+04 -4.1283004e+04
+7.0854114e+06 -9.6261221e+03 -2.5945354e+04
+6.3184937e+06 -7.8721495e+03 -1.3300647e+04
+4.9406958e+06 -5.7791298e+03 -4.6129512e+03
+3.0775255e+06 -3.7348652e+03 -4.9367951e+02
+1.2950391e+06 -2.0127376e+03 -1.9378761e+02
+8.0547857e+04 -3.5712882e+02 -1.0260401e+01
+4.5537752e+03 -1.9939497e+01 -5.3798776e-01
+2.5722447e+02 -1.1147749e+00 -2.4546734e-02
+1.3150183e+01 -5.6455656e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0653306e+01 -1.4375975e-01 6.6180140e-02
+4.0361187e+02 -2.8439497e+00 1.3532974e+00
+7.1153011e+03 -5.0860195e+01 2.3974794e+01
+1.2491074e+05 -9.0720889e+02 4.2122021e+02
+2.0894386e+06 -4.5590372e+03 -4.0986886e+03
+4.9700950e+06 -7.1016639e+03 -2.4742422e+04
+7.9493501e+06 -9.8085530e+03 -5.6407124e+04
+1.0089447e+07 -1.2909205e+04 -8.4625468e+04
+1.1179565e+07 -1.6149888e+04 -9.7636330e+04
+1.1521123e+07 -1.8802584e+04 -9.2985179e+04
+1.1498089e+07 -2.0116285e+04 -7.5898738e+04
+1.1287450e+07 -1.9713182e+04 -5.3955026e+04
+1.0770334e+07 -1.7688383e+04 -3.2992338e+04
+9.6139958e+06 -1.4496298e+04 -1.6135330e+04
+7.5413467e+06 -1.0764472e+04 -4.9046708e+03
+4.7312801e+06 -7.0986695e+03 1.1288979e+01
+2.0253199e+06 -3.9320999e+03 -2.1937667e+02
+1.2412947e+05 -7.0419594e+02 -1.1471167e+01
+7.0674268e+03 -3.8821467e+01 -5.8869555e-01
+4.0070094e+02 -2.1320700e+00 -2.6127228e-02
+2.0495358e+01 -1.0589933e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6640771e+01 -1.8296319e-01 4.9072571e-02
+5.1909899e+02 -3.6320794e+00 9.6578452e-01
+9.1167108e+03 -6.5065356e+01 1.6367609e+01
+1.5942239e+05 -1.1599693e+03 2.7538813e+02
+2.6276358e+06 -6.0344877e+03 -5.3369828e+03
+6.2823261e+06 -9.7817099e+03 -3.1581981e+04
+1.0033531e+07 -1.3642493e+04 -7.1714698e+04
+1.2684683e+07 -1.7595910e+04 -1.0711248e+05
+1.3993373e+07 -2.1308988e+04 -1.2294800e+05
+1.4371061e+07 -2.4098659e+04 -1.1641896e+05
+1.4321710e+07 -2.5286658e+04 -9.4399325e+04
+1.4074326e+07 -2.4540961e+04 -6.6561685e+04
+1.3472772e+07 -2.1976536e+04 -4.0229293e+04
+1.2078297e+07 -1.8072693e+04 -1.9226288e+04
+9.5118888e+06 -1.3513447e+04 -5.3662186e+03
+5.9768924e+06 -8.9892366e+03 5.2262128e+02
+2.5466024e+06 -5.0214727e+03 -5.3217108e+01
+1.5849659e+05 -9.0156877e+02 -2.2023518e+00
+9.0600571e+03 -4.9686227e+01 -7.8000752e-02
+5.1565392e+02 -2.7216757e+00 -1.6833069e-03
+2.6453752e+01 -1.3461478e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0538862e+01 -1.5561766e-01 -1.6682078e-03
+5.9361248e+02 -3.0882780e+00 -1.1559413e-01
+1.0398115e+04 -5.5252644e+01 -3.5346382e+00
+1.8141464e+05 -9.8290973e+02 -8.4330058e+01
+2.9119736e+06 -5.1762741e+03 -6.8529606e+03
+7.0655958e+06 -8.5114884e+03 -3.7961638e+04
+1.1299271e+07 -1.1904831e+04 -8.5215596e+04
+1.4230873e+07 -1.5232922e+04 -1.2659495e+05
+1.5612916e+07 -1.8212975e+04 -1.4483465e+05
+1.5956636e+07 -2.0356137e+04 -1.3687405e+05
+1.5865776e+07 -2.1190714e+04 -1.1087843e+05
+1.5611192e+07 -2.0490752e+04 -7.8155135e+04
+1.5005936e+07 -1.8349226e+04 -4.7212826e+04
+1.3522298e+07 -1.5129460e+04 -2.2486670e+04
+1.0688291e+07 -1.1360233e+04 -6.1083138e+03
+6.7074335e+06 -7.5913746e+03 8.9753149e+02
+2.8175013e+06 -4.2559688e+03 2.5423950e+02
+1.8038026e+05 -7.6528690e+02 1.4986673e+01
+1.0335058e+04 -4.2252957e+01 8.6826990e-01
+5.8978904e+02 -2.3166586e+00 4.3369712e-02
+3.0331740e+01 -1.1458041e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2553037e+01 -6.1164454e-02 -5.5277254e-02
+6.3188389e+02 -1.2129815e+00 -1.2397676e+00
+1.1053249e+04 -2.1676995e+01 -2.3858953e+01
+1.9263989e+05 -3.8506281e+02 -4.4555418e+02
+3.0203964e+06 -2.0362558e+03 -8.1242696e+03
+7.4343791e+06 -3.3653104e+03 -4.2585454e+04
+1.1911776e+07 -4.7106425e+03 -9.4628957e+04
+1.4961986e+07 -6.0084488e+03 -1.4000969e+05
+1.6343479e+07 -7.1483341e+03 -1.5989651e+05
+1.6636325e+07 -7.9529677e+03 -1.5106568e+05
+1.6509437e+07 -8.2537178e+03 -1.2249567e+05
+1.6260389e+07 -7.9707053e+03 -8.6524998e+04
+1.5682249e+07 -7.1393650e+03 -5.2427602e+04
+1.4188917e+07 -5.8946933e+03 -2.5064002e+04
+1.1244079e+07 -4.4350579e+03 -6.8196725e+03
+7.0425315e+06 -2.9698298e+03 1.1058473e+03
+2.9172647e+06 -1.6675035e+03 5.4439367e+02
+1.9153563e+05 -3.0009963e+02 3.1295546e+01
+1.0986147e+04 -1.6591095e+01 1.7707269e+00
+6.2782630e+02 -9.1057576e-01 8.6491076e-02
+3.2333724e+01 -4.5062343e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3152412e+01 6.1164458e-02 -7.7872812e-02
+6.4324132e+02 1.2129817e+00 -1.7104964e+00
+1.1247379e+04 2.1676995e+01 -3.2307759e+01
+1.9596896e+05 3.8506281e+02 -5.9467342e+02
+3.0442522e+06 2.0362558e+03 -8.6199504e+03
+7.5370370e+06 3.3653100e+03 -4.4280401e+04
+1.2086552e+07 4.7106432e+03 -9.8015530e+04
+1.5166791e+07 6.0084490e+03 -1.4480595e+05
+1.6539853e+07 7.1483345e+03 -1.6528095e+05
+1.6810229e+07 7.9529662e+03 -1.5616078e+05
+1.6669356e+07 8.2537197e+03 -1.2670055e+05
+1.6423939e+07 7.9707047e+03 -8.9590294e+04
+1.5860170e+07 7.1393662e+03 -5.4368327e+04
+1.4371726e+07 5.8946930e+03 -2.6048091e+04
+1.1399447e+07 4.4350579e+03 -7.1121988e+03
+7.1336199e+06 2.9698301e+03 1.1700931e+03
+2.9381274e+06 1.6675032e+03 6.6182833e+02
+1.9484026e+05 3.0009958e+02 3.7918147e+01
+1.1178873e+04 1.6591092e+01 2.1383895e+00
+6.3910325e+02 9.1057558e-01 1.0410454e-01
+3.2928951e+01 4.5062334e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2553037e+01 1.5561765e-01 -5.5277236e-02
+6.3188389e+02 3.0882779e+00 -1.2397680e+00
+1.1053249e+04 5.5252643e+01 -2.3858954e+01
+1.9263989e+05 9.8290972e+02 -4.4555430e+02
+3.0203964e+06 5.1762739e+03 -8.1242704e+03
+7.4343791e+06 8.5114884e+03 -4.2585453e+04
+1.1911776e+07 1.1904831e+04 -9.4628956e+04
+1.4961986e+07 1.5232921e+04 -1.4000970e+05
+1.6343479e+07 1.8212974e+04 -1.5989652e+05
+1.6636325e+07 2.0356139e+04 -1.5106568e+05
+1.6509437e+07 2.1190716e+04 -1.2249567e+05
+1.6260389e+07 2.0490756e+04 -8.6525000e+04
+1.5682249e+07 1.8349226e+04 -5.2427609e+04
+1.4188917e+07 1.5129461e+04 -2.5063997e+04
+1.1244079e+07 1.1360234e+04 -6.8196708e+03
+7.0425315e+06 7.5913740e+03 1.1058477e+03
+2.9172647e+06 4.2559688e+03 5.4439367e+02
+1.9153563e+05 7.6528687e+02 3.1295546e+01
+1.0986147e+04 4.2252955e+01 1.7707268e+00
+6.2782630e+02 2.3166586e+00 8.6491084e-02
+3.2333724e+01 1.1458040e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0538862e+01 1.8296320e-01 -1.6681876e-03
+5.9361248e+02 3.6320795e+00 -1.1559413e-01
+1.0398115e+04 6.5065356e+01 -3.5346415e+00
+1.8141464e+05 1.1599693e+03 -8.4330049e+01
+2.9119736e+06 6.0344878e+03 -6.8529607e+03
+7.0655958e+06 9.7817103e+03 -3.7961638e+04
+1.1299271e+07 1.3642493e+04 -8.5215596e+04
+1.4230873e+07 1.7595911e+04 -1.2659495e+05
+1.5612916e+07 2.1308989e+04 -1.4483465e+05
+1.5956636e+07 2.4098665e+04 -1.3687405e+05
+1.5865776e+07 2.5286655e+04 -1.1087843e+05
+1.5611192e+07 2.4540960e+04 -7.8155137e+04
+1.5005936e+07 2.1976537e+04 -4.7212828e+04
+1.3522298e+07 1.8072692e+04 -2.2486671e+04
+1.0688291e+07 1.3513448e+04 -6.1083133e+03
+6.7074335e+06 8.9892362e+03 8.9753238e+02
+2.8175013e+06 5.0214726e+03 2.5423953e+02
+1.8038026e+05 9.0156876e+02 1.4986670e+01
+1.0335058e+04 4.9686227e+01 8.6827062e-01
+5.8978904e+02 2.7216756e+00 4.3369701e-02
+3.0331740e+01 1.3461478e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6640771e+01 1.4375974e-01 4.9072563e-02
+5.1909899e+02 2.8439496e+00 9.6578434e-01
+9.1167108e+03 5.0860195e+01 1.6367610e+01
+1.5942239e+05 9.0720887e+02 2.7538805e+02
+2.6276358e+06 4.5590372e+03 -5.3369824e+03
+6.2823261e+06 7.1016636e+03 -3.1581981e+04
+1.0033531e+07 9.8085520e+03 -7.1714699e+04
+1.2684683e+07 1.2909204e+04 -1.0711247e+05
+1.3993373e+07 1.6149888e+04 -1.2294799e+05
+1.4371061e+07 1.8802579e+04 -1.1641897e+05
+1.4321710e+07 2.0116284e+04 -9.4399329e+04
+1.4074326e+07 1.9713182e+04 -6.6561684e+04
+1.3472772e+07 1.7688383e+04 -4.0229291e+04
+1.2078297e+07 1.4496299e+04 -1.9226288e+04
+9.5118888e+06 1.0764472e+04 -5.3662184e+03
+5.9768924e+06 7.0986697e+03 5.2262174e+02
+2.5466024e+06 3.9321000e+03 -5.3217135e+01
+1.5849659e+05 7.0419593e+02 -2.2023496e+00
+9.0600571e+03 3.8821466e+01 -7.8000589e-02
+5.1565392e+02 2.1320699e+00 -1.6832989e-03
+2.6453752e+01 1.0589933e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0653306e+01 7.5710180e-02 6.6180134e-02
+4.0361187e+02 1.4708742e+00 1.3532974e+00
+7.1153011e+03 2.5898157e+01 2.3974791e+01
+1.2491074e+05 4.5741840e+02 4.2122021e+02
+2.0894386e+06 2.0278190e+03 -4.0986887e+03
+4.9700950e+06 2.6845232e+03 -2.4742423e+04
+7.9493501e+06 3.5375533e+03 -5.6407125e+04
+1.0089447e+07 5.0889806e+03 -8.4625467e+04
+1.1179565e+07 7.2160779e+03 -9.7636331e+04
+1.1521123e+07 9.2571401e+03 -9.2985180e+04
+1.1498089e+07 1.0509650e+04 -7.5898739e+04
+1.1287450e+07 1.0614849e+04 -5.3955024e+04
+1.0770334e+07 9.6261232e+03 -3.2992338e+04
+9.6139958e+06 7.8721496e+03 -1.6135329e+04
+7.5413467e+06 5.7791301e+03 -4.9046711e+03
+4.7312801e+06 3.7348655e+03 1.1289404e+01
+2.0253199e+06 2.0127375e+03 -2.1937669e+02
+1.2412947e+05 3.5712881e+02 -1.1471167e+01
+7.0674268e+03 1.9939496e+01 -5.8869551e-01
+4.0070094e+02 1.1147749e+00 -2.6127219e-02
+2.0495358e+01 5.6455655e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3268413e+01 2.3189334e-02 4.6177813e-02
+2.5941343e+02 4.1677430e-01 9.4742554e-01
+4.5900340e+03 6.7536924e+00 1.6926703e+01
+8.1144416e+04 1.1102213e+02 3.0147248e+02
+1.3404202e+06 1.0724182e+02 -3.2688767e+03
+3.2431305e+06 -5.8840217e+02 -1.8153798e+04
+5.2232027e+06 -1.0613127e+03 -4.0868862e+04
+6.6483228e+06 -6.6167327e+02 -6.1380162e+04
+7.3699722e+06 5.5777985e+02 -7.1319642e+04
+7.5891542e+06 2.0210435e+03 -6.8690342e+04
+7.5673687e+06 3.1297475e+03 -5.6928580e+04
+7.4263863e+06 3.5895860e+03 -4.1283004e+04
+7.0854114e+06 3.4279766e+03 -2.5945353e+04
+6.3184937e+06 2.8412901e+03 -1.3300647e+04
+4.9406958e+06 2.0477423e+03 -4.6129512e+03
+3.0775255e+06 1.2348850e+03 -4.9367967e+02
+1.2950391e+06 5.7376218e+02 -1.9378764e+02
+8.0547857e+04 9.3453741e+01 -1.0260400e+01
+4.5537752e+03 5.6363066e+00 -5.3798767e-01
+2.5722447e+02 3.4103389e-01 -2.4546732e-02
+1.3150183e+01 1.8527728e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.2677214e+00 2.6248860e-03 1.5511107e-02
+1.2007232e+02 2.5368017e-02 2.9867263e-01
+2.0993297e+03 -1.9367737e-02 5.0287514e+00
+3.7546496e+04 -7.9056155e+00 8.6552487e+01
+6.0246814e+05 -4.7443548e+02 -2.4727006e+03
+1.5518811e+06 -1.4974790e+03 -1.1703356e+04
+2.5427456e+06 -2.2621413e+03 -2.5584172e+04
+3.2374489e+06 -2.1284136e+03 -3.8301517e+04
+3.5612447e+06 -1.1790218e+03 -4.4868303e+04
+3.6322724e+06 4.5734191e+01 -4.3898926e+04
+3.6013857e+06 1.0313611e+03 -3.7198112e+04
+3.5388401e+06 1.5536140e+03 -2.7757227e+04
+3.3981179e+06 1.6483613e+03 -1.8105837e+04
+3.0486783e+06 1.4468031e+03 -9.8265106e+03
+2.3811601e+06 1.0564940e+03 -3.8671582e+03
+1.4567594e+06 5.7361041e+02 -7.3544544e+02
+5.7555998e+05 1.6491784e+02 -7.5571679e+01
+3.7182027e+04 6.6307732e+00 -4.2065587e+00
+2.0777471e+03 5.8221840e-01 -2.3338996e-01
+1.1877801e+02 4.8095014e-02 -1.1243470e-02
+6.1975959e+00 3.2570452e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7584284e+00 7.8547146e-05 4.2829302e-04
+2.8682689e+01 -1.8498100e-03 -1.1780282e-02
+3.8825187e+02 -7.1595793e-02 -5.8327713e-01
+4.5893888e+03 -1.5395403e+00 -1.6077798e+01
+4.0931628e+04 -2.7662941e+01 -5.8417926e+02
+9.4366562e+04 -8.4051867e+01 -2.3603784e+03
+1.4969697e+05 -1.2883250e+02 -5.0298685e+03
+1.9262290e+05 -1.2407983e+02 -7.5315089e+03
+2.1819785e+05 -7.1562878e+01 -8.9099280e+03
+2.2934595e+05 -9.6212199e-01 -8.8492148e+03
+2.3101440e+05 5.7594161e+01 -7.6352628e+03
+2.2567422e+05 8.9767577e+01 -5.8107058e+03
+2.1180216e+05 9.6402525e+01 -3.8713627e+03
+1.8524252e+05 8.4613526e+01 -2.1602794e+03
+1.4338341e+05 6.1097162e+01 -9.0085053e+02
+9.0603472e+04 3.2664553e+01 -2.0998623e+02
+3.9726762e+04 9.7084216e+00 -8.5939590e+00
+4.4965782e+03 6.8545858e-01 -6.1477892e-01
+3.8158771e+02 6.0159901e-02 -4.3466054e-02
+2.8225949e+01 5.5767048e-03 -2.5261339e-03
+1.7313240e+00 4.3499443e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3518559e-01 -2.7462494e-05 -4.2916687e-04
+4.5665635e+00 -6.9973896e-04 -9.8840430e-03
+4.7954290e+01 -1.1985993e-02 -1.7146988e-01
+4.0533412e+02 -1.6179930e-01 -2.5906552e+00
+2.3305986e+03 -1.6142760e+00 -3.6261258e+01
+5.3770821e+03 -4.6779562e+00 -1.3627575e+02
+8.5747329e+03 -7.2323860e+00 -2.8807572e+02
+1.1084392e+04 -7.1175891e+00 -4.3319949e+02
+1.2598231e+04 -4.2644911e+00 -5.1598468e+02
+1.3265876e+04 -2.6229294e-01 -5.1588282e+02
+1.3367587e+04 3.1563857e+00 -4.4743312e+02
+1.3047348e+04 5.0970518e+00 -3.4147594e+02
+1.2218765e+04 5.5370689e+00 -2.2752068e+02
+1.0648320e+04 4.8567470e+00 -1.2683843e+02
+8.2025615e+03 3.4705903e+00 -5.3325764e+01
+5.1527163e+03 1.8369043e+00 -1.3352706e+01
+2.2516627e+03 5.6770626e-01 -1.0822688e+00
+3.9438010e+02 6.0097371e-02 -9.1059508e-02
+4.6836340e+01 5.7779015e-03 -7.3888641e-03
+4.4694603e+00 5.6626894e-04 -4.8255985e-04
+3.2843136e-01 4.8009042e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.8199870e-02 -5.1094050e-06 -1.1635108e-04
+5.5778234e-01 -8.7630630e-05 -1.9546586e-03
+4.7148399e+00 -1.1264756e-03 -2.4750771e-02
+3.0819208e+01 -1.1495148e-02 -2.6621431e-01
+1.3552408e+02 -8.1702460e-02 -2.2713097e+00
+3.0638625e+02 -2.2597945e-01 -7.8951210e+00
+4.8934913e+02 -3.5055791e-01 -1.6465016e+01
+6.3517436e+02 -3.5094743e-01 -2.4806839e+01
+7.2447078e+02 -2.1695829e-01 -2.9719971e+01
+7.6445502e+02 -2.1765247e-02 -2.9898752e+01
+7.7071800e+02 1.4924887e-01 -2.6062560e+01
+7.5152964e+02 2.4892807e-01 -1.9950221e+01
+7.0208951e+02 2.7308942e-01 -1.3304699e+01
+6.0954085e+02 2.3937508e-01 -7.4283612e+00
+4.6747772e+02 1.6969327e-01 -3.1671393e+00
+2.9299285e+02 8.9366853e-02 -8.5641928e-01
+1.3039727e+02 2.8687020e-02 -1.0568698e-01
+2.9823215e+01 3.9499583e-03 -1.1131766e-02
+4.5798510e+00 4.2636578e-04 -1.0577365e-03
+5.4313828e-01 4.3638117e-05 -7.7538373e-05
+4.7004345e-02 3.8690000e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8388622e-03 0.0000000e+00 -1.5890304e-05
+4.9365698e-02 0.0000000e+00 -2.2632088e-04
+3.5422169e-01 0.0000000e+00 -2.3533489e-03
+1.9287204e+00 0.0000000e+00 -2.0054406e-02
+7.1727655e+00 0.0000000e+00 -1.2776603e-01
+1.5793927e+01 0.0000000e+00 -4.1380933e-01
+2.5187316e+01 0.0000000e+00 -8.4941438e-01
+3.2791176e+01 0.0000000e+00 -1.2795019e+00
+3.7518139e+01 0.0000000e+00 -1.5396266e+00
+3.9667622e+01 0.0000000e+00 -1.5569722e+00
+4.0014175e+01 0.0000000e+00 -1.3632640e+00
+3.8982210e+01 0.0000000e+00 -1.0466112e+00
+3.6333929e+01 0.0000000e+00 -6.9913208e-01
+3.1437980e+01 0.0000000e+00 -3.9165840e-01
+2.4031166e+01 0.0000000e+00 -1.6974572e-01
+1.5074294e+01 0.0000000e+00 -4.9182079e-02
+6.8779859e+00 0.0000000e+00 -7.8697612e-03
+1.8584434e+00 0.0000000e+00 -9.9791038e-04
+3.4257128e-01 0.0000000e+00 -1.0872239e-04
+4.7866889e-02 0.0000000e+00 -8.7941955e-06
+4.6999658e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.8452694e-03 7.4297165e-06 -1.3836923e-05
+4.9447083e-02 1.0471959e-04 -1.9994106e-04
+3.5494969e-01 1.1771362e-03 -2.1050737e-03
+1.9335589e+00 1.1154186e-02 -1.8097776e-02
+7.1940311e+00 7.6617155e-02 -1.1598053e-01
+1.5844303e+01 2.1133043e-01 -3.7768688e-01
+2.5259526e+01 3.3099520e-01 -7.8089196e-01
+3.2858774e+01 3.4042654e-01 -1.1889167e+00
+3.7555025e+01 2.2826670e-01 -1.4540690e+00
+3.9663134e+01 5.6967999e-02 -1.5065494e+00
+3.9973342e+01 -1.0090276e-01 -1.3648139e+00
+3.8917292e+01 -2.0553594e-01 -1.0943599e+00
+3.6257598e+01 -2.5018810e-01 -7.6784037e-01
+3.1362322e+01 -2.4071324e-01 -4.5146927e-01
+2.3968680e+01 -1.8509703e-01 -2.0388647e-01
+1.5034637e+01 -1.0342383e-01 -6.0806086e-02
+6.8610744e+00 -3.4094068e-02 -9.8005119e-03
+1.8542656e+00 -4.3835932e-03 -1.2390938e-03
+3.4185454e-01 -3.8858677e-04 -1.3377050e-04
+4.7771481e-02 -2.7661679e-05 -1.0701106e-05
+4.6908624e-03 -1.5976411e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8252493e-02 5.6915504e-05 -1.0210900e-04
+5.5856819e-01 9.5323912e-04 -1.7364765e-03
+4.7234006e+00 1.3093286e-02 -2.2213311e-02
+3.0890251e+01 1.5858184e-01 -2.4068382e-01
+1.3591421e+02 1.5094379e+00 -2.0636324e+00
+3.0738152e+02 4.3633621e+00 -7.2109372e+00
+4.9080259e+02 6.8120665e+00 -1.5145468e+01
+6.3654389e+02 6.8866424e+00 -2.3061214e+01
+7.2523529e+02 4.4829057e+00 -2.8080366e+01
+7.6441345e+02 9.6705082e-01 -2.8948879e+01
+7.6998081e+02 -2.1860732e+00 -2.6126510e+01
+7.5034116e+02 -4.2292528e+00 -2.0914317e+01
+7.0069027e+02 -5.0907282e+00 -1.4674535e+01
+6.0815184e+02 -4.9133480e+00 -8.6128862e+00
+4.6633058e+02 -3.8207017e+00 -3.8301392e+00
+2.9227553e+02 -2.1504036e+00 -1.0658374e+00
+1.3011168e+02 -6.8336378e-01 -1.3098239e-01
+2.9766558e+01 -6.5159521e-02 -1.3549408e-02
+4.5720214e+00 -4.8531109e-03 -1.2552781e-03
+5.4226905e-01 -3.2394287e-04 -8.9766434e-05
+4.6931753e-02 -1.8772315e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.3544810e-01 1.9626940e-04 -4.0186455e-04
+4.5714834e+00 4.7276124e-03 -9.0961370e-03
+4.8024456e+01 9.0168448e-02 -1.5633681e-01
+4.0613468e+02 1.5561384e+00 -2.3544477e+00
+2.3369418e+03 2.5786385e+01 -3.2974607e+01
+5.3948241e+03 7.8200658e+01 -1.2455392e+02
+8.6010772e+03 1.2106586e+02 -2.6515198e+02
+1.1109273e+04 1.1977726e+02 -4.0292355e+02
+1.2612303e+04 7.5242172e+01 -4.8775474e+02
+1.3265783e+04 1.3157837e+01 -4.9985267e+02
+1.3355532e+04 -4.0785499e+01 -4.4919871e+02
+1.3027736e+04 -7.4781260e+01 -3.5903517e+02
+1.2195701e+04 -8.8881796e+01 -2.5218019e+02
+1.0625401e+04 -8.6109974e+01 -1.4806475e+02
+8.1836125e+03 -6.7930166e+01 -6.5006340e+01
+5.1410374e+03 -3.8725795e+01 -1.6752013e+01
+2.2474014e+03 -1.1860863e+01 -1.3132156e+00
+3.9379992e+02 -6.9397578e-01 -1.0422321e-01
+4.6778271e+01 -4.3088434e-02 -7.9186666e-03
+4.4644432e+00 -2.7364822e-03 -4.8907083e-04
+3.2808035e-01 -1.5682365e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7591729e+00 -4.7090008e-04 -7.7384006e-05
+2.8701783e+01 3.1802940e-03 -1.7624126e-02
+3.8863176e+02 2.9178874e-01 -5.9913495e-01
+4.5959989e+03 9.3461223e+00 -1.4999278e+01
+4.1032930e+04 4.4103924e+02 -5.3155400e+02
+9.4681389e+04 1.3904942e+03 -2.1586745e+03
+1.5016948e+05 2.1222197e+03 -4.6323385e+03
+1.9306759e+05 2.0515135e+03 -7.0087622e+03
+2.1844910e+05 1.2418682e+03 -8.4266371e+03
+2.2934906e+05 1.6395631e+02 -8.5805475e+03
+2.3081292e+05 -7.4272147e+02 -7.6771295e+03
+2.2534735e+05 -1.2967388e+03 -6.1282998e+03
+2.1141980e+05 -1.5216373e+03 -4.3131849e+03
+1.8486275e+05 -1.4795022e+03 -2.5400159e+03
+1.4306868e+05 -1.1856046e+03 -1.1076073e+03
+9.0411454e+04 -6.8847328e+02 -2.6584149e+02
+3.9663216e+04 -2.0467443e+02 -9.4822943e+00
+4.4923616e+03 -5.3901323e+00 -5.6953379e-01
+3.8132199e+02 -3.1190780e-01 -3.4987387e-02
+2.8209044e+01 -1.8965809e-02 -1.8531669e-03
+1.7303479e+00 -1.0339035e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.2679964e+00 -1.0294779e-02 9.5489199e-03
+1.2009640e+02 -1.8648352e-01 1.7513682e-01
+2.1000474e+03 -3.0538078e+00 2.8030622e+00
+3.7562897e+04 -5.0896664e+01 4.6645581e+01
+6.0496837e+05 1.9719929e+02 -2.2097384e+03
+1.5605198e+06 1.1062051e+03 -1.0564182e+04
+2.5557780e+06 1.8442036e+03 -2.3318553e+04
+3.2497375e+06 1.7671387e+03 -3.5322730e+04
+3.5683820e+06 8.8579226e+02 -4.2103986e+04
+3.6329624e+06 -3.0355272e+02 -4.2326505e+04
+3.5969584e+06 -1.2845794e+03 -3.7357285e+04
+3.5314640e+06 -1.8100546e+03 -2.9467930e+04
+3.3895571e+06 -1.8943677e+03 -2.0534340e+04
+3.0402496e+06 -1.6598514e+03 -1.1925229e+04
+2.3742635e+06 -1.2229189e+03 -4.9913420e+03
+1.4527718e+06 -7.0019156e+02 -9.9198814e+02
+5.7465352e+05 -2.6063894e+02 -2.9566181e+01
+3.7179603e+04 -3.0890411e+01 -1.6422379e+00
+2.0776646e+03 -1.7806279e+00 -9.1031840e-02
+1.1877307e+02 -1.0068900e-01 -4.3696764e-03
+6.1972432e+00 -5.0508815e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.3265122e+01 -3.6892149e-02 2.9888407e-02
+2.5938738e+02 -7.2500507e-01 5.9445885e-01
+4.5901999e+03 -1.2913801e+01 1.0288503e+01
+8.1155636e+04 -2.3037881e+02 1.7855112e+02
+1.3443777e+06 -7.4752613e+02 -2.8342180e+03
+3.2579206e+06 -3.9067712e+02 -1.6127447e+04
+5.2458671e+06 -1.4053229e+02 -3.6807127e+04
+6.6699342e+06 -6.2122737e+02 -5.6030184e+04
+7.3829956e+06 -1.8285432e+03 -6.6339207e+04
+7.5915535e+06 -3.2222091e+03 -6.5819823e+04
+7.5616026e+06 -4.2058349e+03 -5.7132479e+04
+7.4161757e+06 -4.4789374e+03 -4.4252915e+04
+7.0735528e+06 -4.0790736e+03 -3.0209606e+04
+6.3068607e+06 -3.2429363e+03 -1.6993515e+04
+4.9313071e+06 -2.2559861e+03 -6.5717088e+03
+3.0725094e+06 -1.3571554e+03 -8.9859667e+02
+1.2946197e+06 -6.8315049e+02 -5.6617010e+01
+8.0583862e+04 -1.2069582e+02 -2.8170159e+00
+4.5557146e+03 -6.3966509e+00 -1.4039702e-01
+2.5732514e+02 -3.3562878e-01 -6.1234053e-03
+1.3154859e+01 -1.5849946e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0642889e+01 -7.2587973e-02 4.6112026e-02
+4.0346851e+02 -1.4518540e+00 9.1632933e-01
+7.1137816e+03 -2.6253326e+01 1.5775364e+01
+1.2489804e+05 -4.7296852e+02 2.7106522e+02
+2.0944770e+06 -2.0929218e+03 -3.4219332e+03
+4.9906679e+06 -2.6670886e+03 -2.1718376e+04
+7.9811645e+06 -3.2791350e+03 -5.0394239e+04
+1.0119590e+07 -4.4309515e+03 -7.6726826e+04
+1.1197357e+07 -6.0766510e+03 -9.0270609e+04
+1.1523966e+07 -7.6537614e+03 -8.8681553e+04
+1.1489805e+07 -8.5385061e+03 -7.6065129e+04
+1.1273491e+07 -8.4202816e+03 -5.8164493e+04
+1.0754597e+07 -7.3773134e+03 -3.9129103e+04
+9.5988710e+06 -5.7579715e+03 -2.1489271e+04
+7.5293746e+06 -4.0097938e+03 -7.7633178e+03
+4.7252558e+06 -2.5002852e+03 -5.9593994e+02
+2.0254567e+06 -1.3679227e+03 -4.8023752e+01
+1.2421479e+05 -2.5198268e+02 -2.0590498e+00
+7.0722119e+03 -1.3156855e+01 -8.3975687e-02
+4.0096206e+02 -6.7792854e-01 -2.8053184e-03
+2.0508156e+01 -3.1453459e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.6620762e+01 -9.4313210e-02 4.1734243e-02
+5.1878585e+02 -1.8934881e+00 7.9651037e-01
+9.1124962e+03 -3.4317413e+01 1.3075113e+01
+1.5936653e+05 -6.1852044e+02 2.1448444e+02
+2.6330565e+06 -2.9699020e+03 -4.3292383e+03
+6.3071525e+06 -4.2778008e+03 -2.7544986e+04
+1.0072113e+07 -5.5696063e+03 -6.3835965e+04
+1.2720414e+07 -7.1728490e+03 -9.6825264e+04
+1.4012827e+07 -8.9992856e+03 -1.1335623e+05
+1.4371345e+07 -1.0538797e+04 -1.1075479e+05
+1.4308121e+07 -1.1235936e+04 -9.4468719e+04
+1.4054103e+07 -1.0822448e+04 -7.1843873e+04
+1.3450998e+07 -9.3994798e+03 -4.8047631e+04
+1.2057957e+07 -7.3474115e+03 -2.6118249e+04
+9.4960435e+06 -5.1683421e+03 -9.1143407e+03
+5.9689275e+06 -3.2812660e+03 -3.6842174e+02
+2.5466686e+06 -1.8338554e+03 3.1364433e+01
+1.5861121e+05 -3.3768826e+02 2.4560820e+00
+9.0668044e+03 -1.7616163e+01 1.6810367e-01
+5.1604035e+02 -9.0561544e-01 9.3626643e-03
+2.6473550e+01 -4.1889330e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.0508922e+01 -8.1236219e-02 1.6863732e-02
+5.9311495e+02 -1.6311049e+00 2.5201276e-01
+1.0390796e+04 -2.9541972e+01 2.7956293e+00
+1.8130591e+05 -5.3173088e+02 2.4740153e+01
+2.9171460e+06 -2.6324402e+03 -5.4851516e+03
+7.0928143e+06 -3.9501782e+03 -3.3031292e+04
+1.1341688e+07 -5.2320500e+03 -7.5785816e+04
+1.4268927e+07 -6.6454838e+03 -1.1436731e+05
+1.5631104e+07 -8.1034562e+03 -1.3345041e+05
+1.5952003e+07 -9.2466726e+03 -1.3010948e+05
+1.5844970e+07 -9.6912319e+03 -1.1084792e+05
+1.5583049e+07 -9.2565759e+03 -8.4271025e+04
+1.4976664e+07 -8.0274492e+03 -5.6371068e+04
+1.3495518e+07 -6.2983773e+03 -3.0640206e+04
+1.0667582e+07 -4.4641607e+03 -1.0635907e+04
+6.6966889e+06 -2.8604746e+03 -3.1208987e+02
+2.8167977e+06 -1.6095151e+03 1.6718165e+02
+1.8049521e+05 -2.9538651e+02 9.9292200e+00
+1.0342234e+04 -1.5435477e+01 5.7232327e-01
+5.9022196e+02 -7.9450751e-01 2.8296658e-02
+3.0354926e+01 -3.6778095e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2515551e+01 -3.2124630e-02 -1.1624877e-02
+6.3124228e+02 -6.4472113e-01 -3.5639576e-01
+1.1043428e+04 -1.1667600e+01 -8.4096173e+00
+1.9248731e+05 -2.0978917e+02 -1.7776515e+02
+3.0251120e+06 -1.0502224e+03 -6.4755542e+03
+7.4625884e+06 -1.5989474e+03 -3.7036034e+04
+1.1955808e+07 -2.1301065e+03 -8.4169270e+04
+1.5000381e+07 -2.6926461e+03 -1.2651771e+05
+1.6359464e+07 -3.2505854e+03 -1.4735550e+05
+1.6626991e+07 -3.6743348e+03 -1.4359396e+05
+1.6482379e+07 -3.8269062e+03 -1.2240082e+05
+1.6225555e+07 -3.6447786e+03 -9.3178694e+04
+1.5646663e+07 -3.1607924e+03 -6.2458837e+04
+1.4156701e+07 -2.4855266e+03 -3.4055975e+04
+1.1219218e+07 -1.7683610e+03 -1.1890164e+04
+7.0292764e+06 -1.1376823e+03 -3.5793954e+02
+2.9156433e+06 -6.4159765e+02 2.9560933e+02
+1.9163646e+05 -1.1754466e+02 1.6942081e+01
+1.0992855e+04 -6.1504127e+00 9.4877550e-01
+6.2825173e+02 -3.1695773e-01 4.5789391e-02
+3.2357422e+01 -1.4686259e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3112104e+01 3.2124631e-02 -2.3941244e-02
+6.4254516e+02 6.4472113e-01 -6.1723119e-01
+1.1236598e+04 1.1667599e+01 -1.3172056e+01
+1.9579938e+05 2.0978916e+02 -2.6317019e+02
+3.0487538e+06 1.0502223e+03 -6.8652099e+03
+7.5654830e+06 1.5989476e+03 -3.8509121e+04
+1.2130978e+07 2.1301075e+03 -8.7194624e+04
+1.5205086e+07 2.6926471e+03 -1.3087509e+05
+1.6554817e+07 3.2505843e+03 -1.5234084e+05
+1.6798986e+07 3.6743342e+03 -1.4844630e+05
+1.6639841e+07 3.8269077e+03 -1.2658488e+05
+1.6386496e+07 3.6447785e+03 -9.6431295e+04
+1.5822122e+07 3.1607902e+03 -6.4704137e+04
+1.4337386e+07 2.4855255e+03 -3.5335367e+04
+1.1372953e+07 1.7683596e+03 -1.2378336e+04
+7.1193569e+06 1.1376819e+03 -3.9071794e+02
+2.9361056e+06 6.4159741e+02 3.4792493e+02
+1.9493331e+05 1.1754462e+02 1.9794775e+01
+1.1185265e+04 6.1504092e+00 1.1016661e+00
+6.3951812e+02 3.1695760e-01 5.2879727e-02
+3.2952458e+01 1.4686253e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2515551e+01 8.1236217e-02 -1.1624883e-02
+6.3124228e+02 1.6311048e+00 -3.5639593e-01
+1.1043428e+04 2.9541972e+01 -8.4096168e+00
+1.9248731e+05 5.3173087e+02 -1.7776508e+02
+3.0251120e+06 2.6324403e+03 -6.4755545e+03
+7.4625884e+06 3.9501784e+03 -3.7036033e+04
+1.1955808e+07 5.2320497e+03 -8.4169270e+04
+1.5000381e+07 6.6454823e+03 -1.2651771e+05
+1.6359464e+07 8.1034548e+03 -1.4735550e+05
+1.6626991e+07 9.2466682e+03 -1.4359396e+05
+1.6482379e+07 9.6912322e+03 -1.2240083e+05
+1.6225555e+07 9.2565801e+03 -9.3178698e+04
+1.5646663e+07 8.0274499e+03 -6.2458838e+04
+1.4156701e+07 6.2983733e+03 -3.4055974e+04
+1.1219218e+07 4.4641613e+03 -1.1890164e+04
+7.0292764e+06 2.8604739e+03 -3.5793827e+02
+2.9156433e+06 1.6095147e+03 2.9560930e+02
+1.9163646e+05 2.9538649e+02 1.6942077e+01
+1.0992855e+04 1.5435477e+01 9.4877576e-01
+6.2825173e+02 7.9450758e-01 4.5789398e-02
+3.2357422e+01 3.6778098e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.0508922e+01 9.4313211e-02 1.6863723e-02
+5.9311495e+02 1.8934881e+00 2.5201276e-01
+1.0390796e+04 3.4317413e+01 2.7956293e+00
+1.8130591e+05 6.1852044e+02 2.4740182e+01
+2.9171460e+06 2.9699021e+03 -5.4851515e+03
+7.0928143e+06 4.2778007e+03 -3.3031293e+04
+1.1341688e+07 5.5696061e+03 -7.5785815e+04
+1.4268927e+07 7.1728498e+03 -1.1436731e+05
+1.5631104e+07 8.9992862e+03 -1.3345041e+05
+1.5952003e+07 1.0538803e+04 -1.3010947e+05
+1.5844970e+07 1.1235934e+04 -1.1084791e+05
+1.5583049e+07 1.0822447e+04 -8.4271027e+04
+1.4976664e+07 9.3994807e+03 -5.6371073e+04
+1.3495518e+07 7.3474142e+03 -3.0640201e+04
+1.0667582e+07 5.1683437e+03 -1.0635907e+04
+6.6966889e+06 3.2812663e+03 -3.1208920e+02
+2.8167977e+06 1.8338552e+03 1.6718176e+02
+1.8049521e+05 3.3768825e+02 9.9292177e+00
+1.0342234e+04 1.7616163e+01 5.7232381e-01
+5.9022196e+02 9.0561524e-01 2.8296663e-02
+3.0354926e+01 4.1889334e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.6620762e+01 7.2587987e-02 4.1734234e-02
+5.1878585e+02 1.4518540e+00 7.9651014e-01
+9.1124962e+03 2.6253326e+01 1.3075116e+01
+1.5936653e+05 4.7296851e+02 2.1448450e+02
+2.6330565e+06 2.0929217e+03 -4.3292389e+03
+6.3071525e+06 2.6670889e+03 -2.7544986e+04
+1.0072113e+07 3.2791344e+03 -6.3835966e+04
+1.2720414e+07 4.4309481e+03 -9.6825266e+04
+1.4012827e+07 6.0766516e+03 -1.1335622e+05
+1.4371345e+07 7.6537616e+03 -1.1075480e+05
+1.4308121e+07 8.5385074e+03 -9.4468718e+04
+1.4054103e+07 8.4202815e+03 -7.1843873e+04
+1.3450998e+07 7.3773147e+03 -4.8047632e+04
+1.2057957e+07 5.7579711e+03 -2.6118247e+04
+9.4960435e+06 4.0097943e+03 -9.1143398e+03
+5.9689275e+06 2.5002851e+03 -3.6842143e+02
+2.5466686e+06 1.3679227e+03 3.1364490e+01
+1.5861121e+05 2.5198266e+02 2.4560834e+00
+9.0668044e+03 1.3156855e+01 1.6810344e-01
+5.1604035e+02 6.7792849e-01 9.3627276e-03
+2.6473550e+01 3.1453448e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0642889e+01 3.6892143e-02 4.6111975e-02
+4.0346851e+02 7.2500509e-01 9.1632930e-01
+7.1137816e+03 1.2913802e+01 1.5775361e+01
+1.2489804e+05 2.3037880e+02 2.7106525e+02
+2.0944770e+06 7.4752588e+02 -3.4219329e+03
+4.9906679e+06 3.9067656e+02 -2.1718377e+04
+7.9811645e+06 1.4053166e+02 -5.0394240e+04
+1.0119590e+07 6.2122867e+02 -7.6726825e+04
+1.1197357e+07 1.8285446e+03 -9.0270609e+04
+1.1523966e+07 3.2222100e+03 -8.8681555e+04
+1.1489805e+07 4.2058348e+03 -7.6065128e+04
+1.1273491e+07 4.4789362e+03 -5.8164492e+04
+1.0754597e+07 4.0790741e+03 -3.9129103e+04
+9.5988710e+06 3.2429382e+03 -2.1489270e+04
+7.5293746e+06 2.2559863e+03 -7.7633178e+03
+4.7252558e+06 1.3571559e+03 -5.9593976e+02
+2.0254567e+06 6.8315064e+02 -4.8023738e+01
+1.2421479e+05 1.2069580e+02 -2.0590437e+00
+7.0722119e+03 6.3966501e+00 -8.3976014e-02
+4.0096206e+02 3.3562880e-01 -2.8053055e-03
+2.0508156e+01 1.5849946e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3265122e+01 1.0294778e-02 2.9888407e-02
+2.5938738e+02 1.8648348e-01 5.9445906e-01
+4.5901999e+03 3.0538068e+00 1.0288494e+01
+8.1155636e+04 5.0896663e+01 1.7855110e+02
+1.3443777e+06 -1.9719933e+02 -2.8342178e+03
+3.2579206e+06 -1.1062053e+03 -1.6127447e+04
+5.2458671e+06 -1.8442035e+03 -3.6807127e+04
+6.6699342e+06 -1.7671385e+03 -5.6030183e+04
+7.3829956e+06 -8.8579222e+02 -6.6339207e+04
+7.5915535e+06 3.0355419e+02 -6.5819823e+04
+7.5616026e+06 1.2845796e+03 -5.7132480e+04
+7.4161756e+06 1.8100544e+03 -4.4252915e+04
+7.0735528e+06 1.8943670e+03 -3.0209605e+04
+6.3068607e+06 1.6598514e+03 -1.6993515e+04
+4.9313071e+06 1.2229189e+03 -6.5717084e+03
+3.0725094e+06 7.0019138e+02 -8.9859689e+02
+1.2946197e+06 2.6063896e+02 -5.6617019e+01
+8.0583862e+04 3.0890410e+01 -2.8170135e+00
+4.5557147e+03 1.7806277e+00 -1.4039700e-01
+2.5732514e+02 1.0068897e-01 -6.1234030e-03
+1.3154859e+01 5.0508804e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.2679964e+00 4.7089972e-04 9.5489188e-03
+1.2009640e+02 -3.1803008e-03 1.7513683e-01
+2.1000474e+03 -2.9178890e-01 2.8030614e+00
+3.7562897e+04 -9.3461226e+00 4.6645554e+01
+6.0496837e+05 -4.4103922e+02 -2.2097384e+03
+1.5605198e+06 -1.3904941e+03 -1.0564182e+04
+2.5557780e+06 -2.1222196e+03 -2.3318553e+04
+3.2497375e+06 -2.0515135e+03 -3.5322730e+04
+3.5683820e+06 -1.2418684e+03 -4.2103986e+04
+3.6329624e+06 -1.6395639e+02 -4.2326506e+04
+3.5969584e+06 7.4272143e+02 -3.7357286e+04
+3.5314640e+06 1.2967388e+03 -2.9467930e+04
+3.3895571e+06 1.5216373e+03 -2.0534341e+04
+3.0402496e+06 1.4795022e+03 -1.1925228e+04
+2.3742635e+06 1.1856045e+03 -4.9913421e+03
+1.4527718e+06 6.8847330e+02 -9.9198815e+02
+5.7465352e+05 2.0467445e+02 -2.9566173e+01
+3.7179603e+04 5.3901331e+00 -1.6422373e+00
+2.0776646e+03 3.1190777e-01 -9.1031870e-02
+1.1877307e+02 1.8965810e-02 -4.3696752e-03
+6.1972432e+00 1.0339035e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7591729e+00 -1.9626946e-04 -7.7384397e-05
+2.8701783e+01 -4.7276139e-03 -1.7624133e-02
+3.8863176e+02 -9.0168449e-02 -5.9913484e-01
+4.5959989e+03 -1.5561385e+00 -1.4999278e+01
+4.1032930e+04 -2.5786385e+01 -5.3155400e+02
+9.4681389e+04 -7.8200656e+01 -2.1586745e+03
+1.5016948e+05 -1.2106586e+02 -4.6323385e+03
+1.9306759e+05 -1.1977726e+02 -7.0087622e+03
+2.1844910e+05 -7.5242170e+01 -8.4266370e+03
+2.2934906e+05 -1.3157848e+01 -8.5805476e+03
+2.3081292e+05 4.0785499e+01 -7.6771295e+03
+2.2534735e+05 7.4781263e+01 -6.1282998e+03
+2.1141980e+05 8.8881796e+01 -4.3131849e+03
+1.8486275e+05 8.6109966e+01 -2.5400160e+03
+1.4306868e+05 6.7930168e+01 -1.1076073e+03
+9.0411454e+04 3.8725794e+01 -2.6584148e+02
+3.9663216e+04 1.1860862e+01 -9.4822944e+00
+4.4923616e+03 6.9397577e-01 -5.6953385e-01
+3.8132199e+02 4.3088434e-02 -3.4987384e-02
+2.8209044e+01 2.7364816e-03 -1.8531669e-03
+1.7303479e+00 1.5682363e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3544810e-01 -5.6915496e-05 -4.0186468e-04
+4.5714834e+00 -9.5323899e-04 -9.0961361e-03
+4.8024456e+01 -1.3093284e-02 -1.5633681e-01
+4.0613468e+02 -1.5858184e-01 -2.3544476e+00
+2.3369418e+03 -1.5094379e+00 -3.2974606e+01
+5.3948241e+03 -4.3633622e+00 -1.2455392e+02
+8.6010772e+03 -6.8120666e+00 -2.6515198e+02
+1.1109273e+04 -6.8866425e+00 -4.0292355e+02
+1.2612303e+04 -4.4829056e+00 -4.8775474e+02
+1.3265783e+04 -9.6705067e-01 -4.9985267e+02
+1.3355532e+04 2.1860729e+00 -4.4919871e+02
+1.3027736e+04 4.2292530e+00 -3.5903517e+02
+1.2195701e+04 5.0907281e+00 -2.5218019e+02
+1.0625401e+04 4.9133484e+00 -1.4806475e+02
+8.1836125e+03 3.8207018e+00 -6.5006341e+01
+5.1410374e+03 2.1504037e+00 -1.6752012e+01
+2.2474014e+03 6.8336370e-01 -1.3132156e+00
+3.9379992e+02 6.5159510e-02 -1.0422322e-01
+4.6778271e+01 4.8531105e-03 -7.9186670e-03
+4.4644432e+00 3.2394266e-04 -4.8907082e-04
+3.2808035e-01 1.8772298e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.8252493e-02 -7.4297197e-06 -1.0210902e-04
+5.5856819e-01 -1.0471955e-04 -1.7364764e-03
+4.7234006e+00 -1.1771362e-03 -2.2213312e-02
+3.0890251e+01 -1.1154186e-02 -2.4068382e-01
+1.3591421e+02 -7.6617154e-02 -2.0636324e+00
+3.0738152e+02 -2.1133043e-01 -7.2109372e+00
+4.9080259e+02 -3.3099520e-01 -1.5145468e+01
+6.3654389e+02 -3.4042655e-01 -2.3061215e+01
+7.2523529e+02 -2.2826669e-01 -2.8080366e+01
+7.6441345e+02 -5.6967999e-02 -2.8948879e+01
+7.6998081e+02 1.0090277e-01 -2.6126510e+01
+7.5034116e+02 2.0553592e-01 -2.0914317e+01
+7.0069027e+02 2.5018811e-01 -1.4674536e+01
+6.0815184e+02 2.4071327e-01 -8.6128862e+00
+4.6633058e+02 1.8509703e-01 -3.8301392e+00
+2.9227553e+02 1.0342384e-01 -1.0658374e+00
+1.3011168e+02 3.4094071e-02 -1.3098238e-01
+2.9766558e+01 4.3835928e-03 -1.3549407e-02
+4.5720213e+00 3.8858668e-04 -1.2552784e-03
+5.4226905e-01 2.7661671e-05 -8.9766437e-05
+4.6931753e-02 1.5976406e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8452694e-03 0.0000000e+00 -1.3836917e-05
+4.9447083e-02 0.0000000e+00 -1.9994109e-04
+3.5494969e-01 0.0000000e+00 -2.1050738e-03
+1.9335589e+00 0.0000000e+00 -1.8097776e-02
+7.1940311e+00 0.0000000e+00 -1.1598053e-01
+1.5844303e+01 0.0000000e+00 -3.7768688e-01
+2.5259526e+01 0.0000000e+00 -7.8089196e-01
+3.2858774e+01 0.0000000e+00 -1.1889167e+00
+3.7555025e+01 0.0000000e+00 -1.4540690e+00
+3.9663134e+01 0.0000000e+00 -1.5065494e+00
+3.9973342e+01 0.0000000e+00 -1.3648139e+00
+3.8917292e+01 0.0000000e+00 -1.0943599e+00
+3.6257598e+01 0.0000000e+00 -7.6784036e-01
+3.1362322e+01 0.0000000e+00 -4.5146927e-01
+2.3968680e+01 0.0000000e+00 -2.0388647e-01
+1.5034637e+01 0.0000000e+00 -6.0806087e-02
+6.8610744e+00 0.0000000e+00 -9.8005121e-03
+1.8542656e+00 0.0000000e+00 -1.2390938e-03
+3.4185454e-01 0.0000000e+00 -1.3377051e-04
+4.7771481e-02 0.0000000e+00 -1.0701106e-05
+4.6908624e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.8462636e-03 1.0120246e-05 -1.1114415e-05
+4.9476660e-02 1.2419398e-04 -1.6488516e-04
+3.5533212e-01 1.2273265e-03 -1.7746460e-03
+1.9366390e+00 1.0637291e-02 -1.5491995e-02
+7.2091229e+00 6.9696171e-02 -1.0027995e-01
+1.5882040e+01 1.9172179e-01 -3.2973874e-01
+2.5315069e+01 3.0532427e-01 -6.9060549e-01
+3.2911506e+01 3.2739300e-01 -1.0707305e+00
+3.7583808e+01 2.4415352e-01 -1.3436669e+00
+3.9658201e+01 1.0344315e-01 -1.4421771e+00
+3.9936261e+01 -3.8414258e-02 -1.3666814e+00
+3.8854627e+01 -1.5003011e-01 -1.1539855e+00
+3.6177348e+01 -2.2063893e-01 -8.5309625e-01
+3.1275824e+01 -2.4125130e-01 -5.2534733e-01
+2.3892293e+01 -2.0299416e-01 -2.4596586e-01
+1.4983708e+01 -1.1987834e-01 -7.5158489e-02
+6.8384410e+00 -4.0300830e-02 -1.2224274e-02
+1.8484012e+00 -4.8084575e-03 -1.5514222e-03
+3.4079541e-01 -3.2464150e-04 -1.6765357e-04
+4.7623224e-02 -5.9924719e-06 -1.3404245e-05
+4.6761111e-03 1.3470044e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8254454e-02 9.1128726e-05 -8.2969078e-05
+5.5880878e-01 1.2439862e-03 -1.4433491e-03
+4.7277188e+00 1.4273328e-02 -1.8807505e-02
+3.0935569e+01 1.5296196e-01 -2.0645049e-01
+1.3619713e+02 1.3654244e+00 -1.7850958e+00
+3.0814616e+02 3.9384082e+00 -6.2964251e+00
+4.9195144e+02 6.2548114e+00 -1.3394760e+01
+6.3764969e+02 6.5948687e+00 -2.0768042e+01
+7.2587183e+02 4.7889417e+00 -2.5949375e+01
+7.6439443e+02 1.8977092e+00 -2.7724615e+01
+7.6934794e+02 -9.3138111e-01 -2.6198783e+01
+7.4922739e+02 -3.1193274e+00 -2.2115711e+01
+6.9924361e+02 -4.5154354e+00 -1.6374256e+01
+6.0657597e+02 -4.9627641e+00 -1.0076877e+01
+4.6493091e+02 -4.2321349e+00 -4.6480672e+00
+2.9135287e+02 -2.5204708e+00 -1.3248154e+00
+1.2972706e+02 -8.1737166e-01 -1.6312138e-01
+2.9685205e+01 -6.9790410e-02 -1.6786305e-02
+4.5599655e+00 -3.5137249e-03 -1.5413845e-03
+5.4083888e-01 -7.9999066e-06 -1.0920591e-04
+4.6805748e-02 1.8146215e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.3538237e-01 5.1693198e-04 -3.6006885e-04
+4.5722835e+00 8.0593680e-03 -7.9755221e-03
+4.8055297e+01 1.1096034e-01 -1.3550378e-01
+4.0663099e+02 1.5551051e+00 -2.0339632e+00
+2.3416243e+03 2.3181562e+01 -2.8532604e+01
+5.4087762e+03 7.0215981e+01 -1.0876227e+02
+8.6224172e+03 1.1065273e+02 -2.3450021e+02
+1.1129974e+04 1.1423662e+02 -3.6284251e+02
+1.2624643e+04 8.0371453e+01 -4.5076452e+02
+1.3266614e+04 2.9265071e+01 -4.7896246e+02
+1.3345833e+04 -1.9041619e+01 -4.5115237e+02
+1.3009956e+04 -5.5619137e+01 -3.8087183e+02
+1.2172299e+04 -7.9206489e+01 -2.8277893e+02
+1.0599620e+04 -8.7644697e+01 -1.7431556e+02
+8.1605381e+03 -7.6043181e+01 -7.9430093e+01
+5.1259884e+03 -4.5939184e+01 -2.0962396e+01
+2.2416148e+03 -1.4377855e+01 -1.6152938e+00
+3.9292659e+02 -6.8782329e-01 -1.2393060e-01
+4.6680610e+01 -2.0754275e-02 -9.0296242e-03
+4.4551269e+00 8.1531385e-04 -5.3666125e-04
+3.2737758e-01 1.8424853e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7583029e+00 2.0611000e-03 -6.7414453e-04
+2.8696762e+01 3.6648500e-02 -2.4242091e-02
+3.8871857e+02 6.0748405e-01 -6.0757611e-01
+4.5995123e+03 1.0888753e+01 -1.3454641e+01
+4.1108341e+04 3.9419143e+02 -4.5987550e+02
+9.4933482e+04 1.2429873e+03 -1.8847399e+03
+1.5055939e+05 1.9325324e+03 -4.0965327e+03
+1.9344572e+05 1.9507802e+03 -6.3112100e+03
+2.1867742e+05 1.3288791e+03 -7.7880347e+03
+2.2937565e+05 4.4094535e+02 -8.2263044e+03
+2.3065975e+05 -3.6916153e+02 -7.7230139e+03
+2.2505964e+05 -9.6838652e+02 -6.5225432e+03
+2.1103850e+05 -1.3589991e+03 -4.8614474e+03
+1.8443884e+05 -1.5152625e+03 -3.0099177e+03
+1.4268603e+05 -1.3401742e+03 -1.3631352e+03
+9.0163614e+04 -8.2611554e+02 -3.3511954e+02
+3.9576110e+04 -2.5152375e+02 -1.0867307e+01
+4.4851168e+03 -3.7553897e+00 -5.5496846e-01
+3.8075465e+02 2.0210007e-02 -2.8599307e-02
+2.8166379e+01 1.6190280e-02 -1.3088777e-03
+1.7276000e+00 1.6232813e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.2628254e+00 4.9811718e-03 2.2508921e-03
+1.2002412e+02 8.7125854e-02 2.4044819e-02
+2.0992413e+03 1.3573072e+00 8.0376954e-02
+3.7555048e+04 2.1058403e+01 -2.2405703e+00
+6.0668742e+05 5.6227287e+02 -1.8893729e+03
+1.5672672e+06 1.7266939e+03 -9.1204557e+03
+2.5662489e+06 2.7932094e+03 -2.0451999e+04
+3.2597362e+06 3.1264633e+03 -3.1626454e+04
+3.5742214e+06 2.6760467e+03 -3.8812941e+04
+3.6334316e+06 1.8300568e+03 -4.0671292e+04
+3.5928639e+06 1.0019832e+03 -3.7947951e+04
+3.5241481e+06 3.8655992e+02 -3.1986996e+04
+3.3800915e+06 -8.3588783e+00 -2.3872070e+04
+3.0298255e+06 -2.1171896e+02 -1.4751561e+04
+2.3649011e+06 -2.1583130e+02 -6.5134335e+03
+1.4468484e+06 -5.1185124e+01 -1.3650126e+03
+5.7289994e+05 1.1651823e+02 2.0531418e+01
+3.7151974e+04 4.3312213e+01 1.0932120e+00
+2.0759415e+03 2.7792387e+00 5.7331442e-02
+1.1866125e+02 1.8270939e-01 2.6320215e-03
+6.1907040e+00 1.0794550e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3251257e+01 9.1031469e-03 9.7435977e-03
+2.5916457e+02 1.6129099e-01 1.5839075e-01
+4.5870623e+03 2.5641241e+00 2.0892019e+00
+8.1111028e+04 4.1119372e+01 2.6636260e+01
+1.3465587e+06 7.9473916e+02 -2.3868650e+03
+3.2686521e+06 2.3813029e+03 -1.3772968e+04
+5.2629590e+06 3.9805458e+03 -3.2052142e+04
+6.6861448e+06 4.8172300e+03 -4.9953557e+04
+7.3920971e+06 4.7405648e+03 -6.1119605e+04
+7.5917177e+06 4.1340465e+03 -6.3587770e+04
+7.5544498e+06 3.4650569e+03 -5.8898028e+04
+7.4040765e+06 2.9703936e+03 -4.9382741e+04
+7.0581984e+06 2.6390333e+03 -3.6675725e+04
+6.2900134e+06 2.3491894e+03 -2.2389382e+04
+4.9161828e+06 1.9867498e+03 -9.4676838e+03
+3.0630897e+06 1.4945724e+03 -1.5937611e+03
+1.2921450e+06 9.0345801e+02 9.3925130e+01
+8.0557234e+04 1.5865503e+02 5.2101076e+00
+4.5538717e+03 9.5526265e+00 2.7969488e-01
+2.5719558e+02 5.7901786e-01 1.2940219e-02
+1.3146914e+01 3.1679127e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0619715e+01 1.1583289e-02 2.0694438e-02
+4.0308685e+02 1.9883939e-01 3.6479781e-01
+7.1082508e+03 3.0090486e+00 5.4507548e+00
+1.2481750e+05 4.4920210e+01 8.2194268e+01
+2.0972698e+06 8.6953181e+02 -2.7854724e+03
+5.0059615e+06 2.6767831e+03 -1.8374573e+04
+8.0058225e+06 4.6087377e+03 -4.3660711e+04
+1.0143120e+07 5.8270258e+03 -6.8201136e+04
+1.1210890e+07 6.1149958e+03 -8.3108783e+04
+1.1525094e+07 5.8282431e+03 -8.5930900e+04
+1.1481036e+07 5.4396337e+03 -7.9136490e+04
+1.1258234e+07 5.1877033e+03 -6.6096613e+04
+1.0735063e+07 5.0228423e+03 -4.8946921e+04
+9.5772088e+06 4.7282438e+03 -2.9663730e+04
+7.5098090e+06 4.0747625e+03 -1.2186197e+04
+4.7132866e+06 2.9847565e+03 -1.7071134e+03
+2.0228416e+06 1.6776779e+03 1.3386089e+02
+1.2421886e+05 2.8071892e+02 7.7243784e+00
+7.0720820e+03 1.6979489e+01 4.2744367e-01
+4.0092417e+02 1.0241588e+00 2.0193267e-02
+2.0504593e+01 5.5436153e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.6591495e+01 1.0291119e-02 3.0559703e-02
+5.1830556e+02 1.6303503e-01 5.4665083e-01
+9.1055757e+03 2.1514922e+00 8.3247252e+00
+1.5926656e+05 2.5403252e+01 1.2781373e+02
+2.6367358e+06 6.9984375e+02 -3.3818253e+03
+6.3272703e+06 2.3328064e+03 -2.3155646e+04
+1.0104578e+07 4.1457732e+03 -5.5157525e+04
+1.2751635e+07 5.3824501e+03 -8.5933712e+04
+1.4031471e+07 5.8265488e+03 -1.0428968e+05
+1.4374490e+07 5.7759214e+03 -1.0738214e+05
+1.4299104e+07 5.6427762e+03 -9.8568384e+04
+1.4037278e+07 5.6280754e+03 -8.2184186e+04
+1.3429012e+07 5.6551031e+03 -6.0830501e+04
+1.2033204e+07 5.4656541e+03 -3.6814945e+04
+9.4735162e+06 4.7775290e+03 -1.4990487e+04
+5.9553895e+06 3.5006088e+03 -1.9684161e+03
+2.5443356e+06 1.9387474e+03 1.0346624e+02
+1.5866451e+05 3.2470624e+02 6.1769367e+00
+9.0696722e+03 1.9941869e+01 3.4677450e-01
+5.1618013e+02 1.2147210e+00 1.6436485e-02
+2.6479351e+01 6.6072183e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.0477368e+01 6.3652711e-03 3.5479174e-02
+5.9260160e+02 8.9047739e-02 6.2281872e-01
+1.0383466e+04 8.8627863e-01 9.2173425e+00
+1.8120069e+05 3.5960972e+00 1.3623540e+02
+2.9217379e+06 4.0594316e+02 -4.1617456e+03
+7.1171400e+06 1.5138339e+03 -2.7668439e+04
+1.1380802e+07 2.7753691e+03 -6.5412186e+04
+1.4306674e+07 3.6663765e+03 -1.0144364e+05
+1.5654164e+07 4.0321405e+03 -1.2270999e+05
+1.5957060e+07 4.0745662e+03 -1.2606628e+05
+1.5836049e+07 4.0763310e+03 -1.1557885e+05
+1.5565285e+07 4.1706452e+03 -9.6357032e+04
+1.4953071e+07 4.2882520e+03 -7.1397106e+04
+1.3468674e+07 4.2193364e+03 -4.3306758e+04
+1.0643029e+07 3.7305080e+03 -1.7706847e+04
+6.6821294e+06 2.7448057e+03 -2.3915733e+03
+2.8147971e+06 1.5144051e+03 3.3421954e+01
+1.8059596e+05 2.5538584e+02 1.9858163e+00
+1.0348157e+04 1.5905477e+01 9.9319549e-02
+5.9055292e+02 9.7916818e-01 3.9187830e-03
+3.0371278e+01 5.3638414e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2483853e+01 2.0399914e-03 3.6022988e-02
+6.3072977e+02 2.5330367e-02 6.1224815e-01
+1.1036147e+04 1.6395186e-01 8.6157442e+00
+1.9238276e+05 -2.0962736e+00 1.1885028e+02
+3.0303546e+06 1.2583405e+02 -4.8436525e+03
+7.4897159e+06 5.1389910e+02 -3.0971225e+04
+1.1999275e+07 9.6177234e+02 -7.2624938e+04
+1.5042345e+07 1.2824208e+03 -1.1220488e+05
+1.6385323e+07 1.4202510e+03 -1.3545191e+05
+1.6633192e+07 1.4471316e+03 -1.3902478e+05
+1.6473405e+07 1.4637930e+03 -1.2743834e+05
+1.6207068e+07 1.5167994e+03 -1.0629725e+05
+1.5621941e+07 1.5784722e+03 -7.8865668e+04
+1.4128455e+07 1.5682112e+03 -4.7968605e+04
+1.1193332e+07 1.3955831e+03 -1.9748110e+04
+7.0140343e+06 1.0298646e+03 -2.7910788e+03
+2.9138279e+06 5.6768692e+02 -2.9004884e+01
+1.9176865e+05 9.6164664e+01 -1.9704312e+00
+1.1000898e+04 6.0372099e+00 -1.4499765e-01
+6.2872075e+02 3.7399703e-01 -8.8445362e-03
+3.2381637e+01 2.0578337e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3080596e+01 -2.0399966e-03 3.5588145e-02
+6.4203678e+02 -2.5330548e-02 5.9463761e-01
+1.1229384e+04 -1.6395204e-01 8.1366046e+00
+1.9569566e+05 2.0962790e+00 1.0766560e+02
+3.0542276e+06 -1.2583409e+02 -5.1145070e+03
+7.5935841e+06 -5.1389842e+02 -3.2187790e+04
+1.2175944e+07 -9.6177142e+02 -7.5231080e+04
+1.5248488e+07 -1.2824176e+03 -1.1606739e+05
+1.6581610e+07 -1.4202516e+03 -1.4001966e+05
+1.6805539e+07 -1.4471293e+03 -1.4367807e+05
+1.6630800e+07 -1.4637932e+03 -1.3170990e+05
+1.6367709e+07 -1.5167971e+03 -1.0988962e+05
+1.5796965e+07 -1.5784708e+03 -8.1576137e+04
+1.4308620e+07 -1.5682109e+03 -4.9674235e+04
+1.1346582e+07 -1.3955834e+03 -2.0511341e+04
+7.1038595e+06 -1.0298645e+03 -2.9541757e+03
+2.9343398e+06 -5.6768714e+02 -5.3032244e+01
+1.9507614e+05 -9.6164738e+01 -3.5360969e+00
+1.1194047e+04 -6.0372130e+00 -2.4379232e-01
+6.4003641e+02 -3.7399711e-01 -1.4086471e-02
+3.2979528e+01 -2.0578336e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2483853e+01 -6.3652685e-03 3.6022974e-02
+6.3072977e+02 -8.9047665e-02 6.1224863e-01
+1.1036147e+04 -8.8627842e-01 8.6157474e+00
+1.9238276e+05 -3.5960966e+00 1.1885026e+02
+3.0303546e+06 -4.0594296e+02 -4.8436522e+03
+7.4897159e+06 -1.5138339e+03 -3.0971225e+04
+1.1999275e+07 -2.7753689e+03 -7.2624936e+04
+1.5042345e+07 -3.6663760e+03 -1.1220488e+05
+1.6385323e+07 -4.0321405e+03 -1.3545191e+05
+1.6633192e+07 -4.0745687e+03 -1.3902478e+05
+1.6473405e+07 -4.0763309e+03 -1.2743834e+05
+1.6207068e+07 -4.1706433e+03 -1.0629725e+05
+1.5621941e+07 -4.2882513e+03 -7.8865669e+04
+1.4128455e+07 -4.2193345e+03 -4.7968605e+04
+1.1193332e+07 -3.7305064e+03 -1.9748109e+04
+7.0140343e+06 -2.7448058e+03 -2.7910792e+03
+2.9138279e+06 -1.5144053e+03 -2.9005084e+01
+1.9176865e+05 -2.5538581e+02 -1.9704270e+00
+1.1000898e+04 -1.5905476e+01 -1.4499717e-01
+6.2872075e+02 -9.7916823e-01 -8.8445223e-03
+3.2381637e+01 -5.3638408e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.0477368e+01 -1.0291120e-02 3.5479166e-02
+5.9260160e+02 -1.6303505e-01 6.2281890e-01
+1.0383466e+04 -2.1514924e+00 9.2173464e+00
+1.8120069e+05 -2.5403283e+01 1.3623542e+02
+2.9217379e+06 -6.9984392e+02 -4.1617460e+03
+7.1171400e+06 -2.3328067e+03 -2.7668439e+04
+1.1380802e+07 -4.1457725e+03 -6.5412183e+04
+1.4306674e+07 -5.3824479e+03 -1.0144364e+05
+1.5654164e+07 -5.8265475e+03 -1.2270999e+05
+1.5957060e+07 -5.7759205e+03 -1.2606627e+05
+1.5836049e+07 -5.6427754e+03 -1.1557885e+05
+1.5565285e+07 -5.6280775e+03 -9.6357030e+04
+1.4953071e+07 -5.6551022e+03 -7.1397106e+04
+1.3468674e+07 -5.4656536e+03 -4.3306755e+04
+1.0643029e+07 -4.7775275e+03 -1.7706848e+04
+6.6821294e+06 -3.5006087e+03 -2.3915732e+03
+2.8147971e+06 -1.9387476e+03 3.3421938e+01
+1.8059596e+05 -3.2470622e+02 1.9858156e+00
+1.0348157e+04 -1.9941868e+01 9.9319709e-02
+5.9055292e+02 -1.2147210e+00 3.9188258e-03
+3.0371278e+01 -6.6072194e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.6591495e+01 -1.1583288e-02 3.0559699e-02
+5.1830556e+02 -1.9883935e-01 5.4665099e-01
+9.1055757e+03 -3.0090481e+00 8.3247217e+00
+1.5926656e+05 -4.4920209e+01 1.2781374e+02
+2.6367358e+06 -8.6953197e+02 -3.3818257e+03
+6.3272703e+06 -2.6767830e+03 -2.3155646e+04
+1.0104578e+07 -4.6087388e+03 -5.5157524e+04
+1.2751635e+07 -5.8270287e+03 -8.5933713e+04
+1.4031471e+07 -6.1149964e+03 -1.0428968e+05
+1.4374490e+07 -5.8282431e+03 -1.0738213e+05
+1.4299104e+07 -5.4396346e+03 -9.8568381e+04
+1.4037278e+07 -5.1877038e+03 -8.2184184e+04
+1.3429012e+07 -5.0228408e+03 -6.0830502e+04
+1.2033204e+07 -4.7282428e+03 -3.6814943e+04
+9.4735162e+06 -4.0747601e+03 -1.4990487e+04
+5.9553895e+06 -2.9847560e+03 -1.9684157e+03
+2.5443356e+06 -1.6776779e+03 1.0346637e+02
+1.5866451e+05 -2.8071894e+02 6.1769352e+00
+9.0696722e+03 -1.6979491e+01 3.4677422e-01
+5.1618013e+02 -1.0241588e+00 1.6436493e-02
+2.6479351e+01 -5.5436156e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0619715e+01 -9.1031515e-03 2.0694434e-02
+4.0308685e+02 -1.6129096e-01 3.6479781e-01
+7.1082508e+03 -2.5641249e+00 5.4507513e+00
+1.2481750e+05 -4.1119389e+01 8.2194260e+01
+2.0972698e+06 -7.9473911e+02 -2.7854716e+03
+5.0059615e+06 -2.3813029e+03 -1.8374573e+04
+8.0058225e+06 -3.9805461e+03 -4.3660711e+04
+1.0143120e+07 -4.8172312e+03 -6.8201137e+04
+1.1210890e+07 -4.7405636e+03 -8.3108784e+04
+1.1525094e+07 -4.1340464e+03 -8.5930904e+04
+1.1481036e+07 -3.4650556e+03 -7.9136486e+04
+1.1258234e+07 -2.9703957e+03 -6.6096610e+04
+1.0735063e+07 -2.6390338e+03 -4.8946920e+04
+9.5772088e+06 -2.3491895e+03 -2.9663728e+04
+7.5098090e+06 -1.9867504e+03 -1.2186198e+04
+4.7132866e+06 -1.4945717e+03 -1.7071132e+03
+2.0228416e+06 -9.0345783e+02 1.3386094e+02
+1.2421886e+05 -1.5865499e+02 7.7243729e+00
+7.0720820e+03 -9.5526249e+00 4.2744376e-01
+4.0092417e+02 -5.7901781e-01 2.0193270e-02
+2.0504593e+01 -3.1679126e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3251257e+01 -4.9811705e-03 9.7436172e-03
+2.5916457e+02 -8.7125892e-02 1.5839051e-01
+4.5870623e+03 -1.3573076e+00 2.0891992e+00
+8.1111028e+04 -2.1058406e+01 2.6636300e+01
+1.3465587e+06 -5.6227294e+02 -2.3868647e+03
+3.2686521e+06 -1.7266940e+03 -1.3772969e+04
+5.2629590e+06 -2.7932097e+03 -3.2052142e+04
+6.6861448e+06 -3.1264629e+03 -4.9953556e+04
+7.3920971e+06 -2.6760464e+03 -6.1119605e+04
+7.5917177e+06 -1.8300560e+03 -6.3587771e+04
+7.5544498e+06 -1.0019831e+03 -5.8898031e+04
+7.4040765e+06 -3.8655843e+02 -4.9382738e+04
+7.0581984e+06 8.3585993e+00 -3.6675724e+04
+6.2900134e+06 2.1171923e+02 -2.2389381e+04
+4.9161828e+06 2.1583134e+02 -9.4676830e+03
+3.0630897e+06 5.1184844e+01 -1.5937615e+03
+1.2921450e+06 -1.1651816e+02 9.3925265e+01
+8.0557234e+04 -4.3312235e+01 5.2101036e+00
+4.5538717e+03 -2.7792391e+00 2.7969474e-01
+2.5719558e+02 -1.8270941e-01 1.2940217e-02
+1.3146914e+01 -1.0794550e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.2628254e+00 -2.0610999e-03 2.2508916e-03
+1.2002412e+02 -3.6648499e-02 2.4044768e-02
+2.0992413e+03 -6.0748407e-01 8.0376352e-02
+3.7555048e+04 -1.0888753e+01 -2.2405685e+00
+6.0668742e+05 -3.9419143e+02 -1.8893727e+03
+1.5672672e+06 -1.2429873e+03 -9.1204556e+03
+2.5662489e+06 -1.9325323e+03 -2.0451999e+04
+3.2597362e+06 -1.9507803e+03 -3.1626454e+04
+3.5742214e+06 -1.3288791e+03 -3.8812941e+04
+3.6334316e+06 -4.4094541e+02 -4.0671292e+04
+3.5928639e+06 3.6916151e+02 -3.7947952e+04
+3.5241481e+06 9.6838658e+02 -3.1986995e+04
+3.3800915e+06 1.3589990e+03 -2.3872070e+04
+3.0298255e+06 1.5152624e+03 -1.4751561e+04
+2.3649011e+06 1.3401741e+03 -6.5134334e+03
+1.4468484e+06 8.2611553e+02 -1.3650126e+03
+5.7289994e+05 2.5152374e+02 2.0531426e+01
+3.7151974e+04 3.7553914e+00 1.0932126e+00
+2.0759415e+03 -2.0210009e-02 5.7331429e-02
+1.1866125e+02 -1.6190278e-02 2.6320215e-03
+6.1907040e+00 -1.6232815e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7583029e+00 -5.1693201e-04 -6.7414467e-04
+2.8696762e+01 -8.0593689e-03 -2.4242103e-02
+3.8871857e+02 -1.1096035e-01 -6.0757611e-01
+4.5995123e+03 -1.5551051e+00 -1.3454641e+01
+4.1108341e+04 -2.3181561e+01 -4.5987550e+02
+9.4933482e+04 -7.0215981e+01 -1.8847399e+03
+1.5055939e+05 -1.1065273e+02 -4.0965327e+03
+1.9344572e+05 -1.1423662e+02 -6.3112100e+03
+2.1867742e+05 -8.0371454e+01 -7.7880347e+03
+2.2937565e+05 -2.9265071e+01 -8.2263044e+03
+2.3065975e+05 1.9041617e+01 -7.7230140e+03
+2.2505964e+05 5.5619136e+01 -6.5225432e+03
+2.1103850e+05 7.9206492e+01 -4.8614474e+03
+1.8443884e+05 8.7644699e+01 -3.0099177e+03
+1.4268603e+05 7.6043184e+01 -1.3631352e+03
+9.0163614e+04 4.5939185e+01 -3.3511953e+02
+3.9576110e+04 1.4377855e+01 -1.0867305e+01
+4.4851168e+03 6.8782315e-01 -5.5496855e-01
+3.8075465e+02 2.0754241e-02 -2.8599311e-02
+2.8166379e+01 -8.1531543e-04 -1.3088780e-03
+1.7276000e+00 -1.8424856e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3538237e-01 -9.1128637e-05 -3.6006892e-04
+4.5722835e+00 -1.2439862e-03 -7.9755238e-03
+4.8055297e+01 -1.4273327e-02 -1.3550377e-01
+4.0663099e+02 -1.5296196e-01 -2.0339632e+00
+2.3416243e+03 -1.3654244e+00 -2.8532604e+01
+5.4087762e+03 -3.9384082e+00 -1.0876227e+02
+8.6224172e+03 -6.2548114e+00 -2.3450021e+02
+1.1129974e+04 -6.5948688e+00 -3.6284251e+02
+1.2624643e+04 -4.7889417e+00 -4.5076452e+02
+1.3266614e+04 -1.8977095e+00 -4.7896246e+02
+1.3345833e+04 9.3138116e-01 -4.5115237e+02
+1.3009956e+04 3.1193279e+00 -3.8087183e+02
+1.2172299e+04 4.5154355e+00 -2.8277893e+02
+1.0599620e+04 4.9627644e+00 -1.7431556e+02
+8.1605381e+03 4.2321348e+00 -7.9430094e+01
+5.1259884e+03 2.5204709e+00 -2.0962396e+01
+2.2416148e+03 8.1737166e-01 -1.6152937e+00
+3.9292659e+02 6.9790404e-02 -1.2393063e-01
+4.6680610e+01 3.5137254e-03 -9.0296232e-03
+4.4551269e+00 7.9986666e-06 -5.3666117e-04
+3.2737758e-01 -1.8146269e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.8254454e-02 -1.0120253e-05 -8.2969195e-05
+5.5880878e-01 -1.2419396e-04 -1.4433492e-03
+4.7277188e+00 -1.2273263e-03 -1.8807505e-02
+3.0935569e+01 -1.0637290e-02 -2.0645048e-01
+1.3619713e+02 -6.9696173e-02 -1.7850958e+00
+3.0814616e+02 -1.9172179e-01 -6.2964251e+00
+4.9195144e+02 -3.0532427e-01 -1.3394760e+01
+6.3764969e+02 -3.2739299e-01 -2.0768042e+01
+7.2587183e+02 -2.4415352e-01 -2.5949375e+01
+7.6439443e+02 -1.0344314e-01 -2.7724615e+01
+7.6934794e+02 3.8414274e-02 -2.6198783e+01
+7.4922739e+02 1.5003011e-01 -2.2115711e+01
+6.9924361e+02 2.2063892e-01 -1.6374256e+01
+6.0657597e+02 2.4125130e-01 -1.0076877e+01
+4.6493091e+02 2.0299416e-01 -4.6480672e+00
+2.9135287e+02 1.1987834e-01 -1.3248154e+00
+1.2972706e+02 4.0300831e-02 -1.6312138e-01
+2.9685205e+01 4.8084569e-03 -1.6786306e-02
+4.5599655e+00 3.2464151e-04 -1.5413857e-03
+5.4083888e-01 5.9925361e-06 -1.0920584e-04
+4.6805748e-02 -1.3470092e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8462636e-03 0.0000000e+00 -1.1114418e-05
+4.9476660e-02 0.0000000e+00 -1.6488516e-04
+3.5533212e-01 0.0000000e+00 -1.7746461e-03
+1.9366390e+00 0.0000000e+00 -1.5491995e-02
+7.2091229e+00 0.0000000e+00 -1.0027995e-01
+1.5882040e+01 0.0000000e+00 -3.2973874e-01
+2.5315069e+01 0.0000000e+00 -6.9060550e-01
+3.2911506e+01 0.0000000e+00 -1.0707305e+00
+3.7583808e+01 0.0000000e+00 -1.3436669e+00
+3.9658201e+01 0.0000000e+00 -1.4421771e+00
+3.9936261e+01 0.0000000e+00 -1.3666814e+00
+3.8854627e+01 0.0000000e+00 -1.1539855e+00
+3.6177348e+01 0.0000000e+00 -8.5309625e-01
+3.1275824e+01 0.0000000e+00 -5.2534733e-01
+2.3892293e+01 0.0000000e+00 -2.4596585e-01
+1.4983708e+01 0.0000000e+00 -7.5158489e-02
+6.8384410e+00 0.0000000e+00 -1.2224274e-02
+1.8484012e+00 0.0000000e+00 -1.5514222e-03
+3.4079541e-01 0.0000000e+00 -1.6765362e-04
+4.7623224e-02 0.0000000e+00 -1.3404250e-05
+4.6761111e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.8408177e-03 1.3158358e-05 -7.7124717e-06
+4.9444118e-02 1.4597868e-04 -1.2114948e-04
+3.5529622e-01 1.2779354e-03 -1.3631855e-03
+1.9375687e+00 9.9594986e-03 -1.2252474e-02
+7.2165995e+00 6.1049575e-02 -8.0778651e-02
+1.5904142e+01 1.6747912e-01 -2.7036012e-01
+2.5349997e+01 2.7411827e-01 -5.7940680e-01
+3.2945790e+01 3.1250252e-01 -9.2619391e-01
+3.7602182e+01 2.6508237e-01 -1.2096500e+00
+3.9651681e+01 1.6133207e-01 -1.3644612e+00
+3.9902044e+01 3.8220629e-02 -1.3684650e+00
+3.8792521e+01 -8.2149068e-02 -1.2242103e+00
+3.6090089e+01 -1.8362995e-01 -9.5332212e-01
+3.1174243e+01 -2.3969785e-01 -6.1204358e-01
+2.3797620e+01 -2.2202877e-01 -2.9534217e-01
+1.4918183e+01 -1.3775741e-01 -9.2060003e-02
+6.8083794e+00 -4.6862675e-02 -1.5135684e-02
+1.8403354e+00 -5.1301292e-03 -1.9397106e-03
+3.3928804e-01 -2.2068949e-04 -2.1164670e-04
+4.7405736e-02 2.2904945e-05 -1.7062883e-05
+4.6539656e-03 5.0826362e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8196745e-02 1.2963375e-04 -5.8766508e-05
+5.5840197e-01 1.5685022e-03 -1.0744805e-03
+4.7269464e+00 1.5516372e-02 -1.4540572e-02
+3.0949640e+01 1.4503882e-01 -1.6369071e-01
+1.3634819e+02 1.1838013e+00 -1.4375065e+00
+3.0862609e+02 3.4083891e+00 -5.1583427e+00
+4.9272487e+02 5.5703965e+00 -1.1228051e+01
+6.3843083e+02 6.2534002e+00 -1.7950091e+01
+7.2634678e+02 5.1896399e+00 -2.3349595e+01
+7.6438846e+02 3.0546114e+00 -2.6236906e+01
+7.6881537e+02 6.0512565e-01 -2.6271237e+01
+7.4816822e+02 -1.7646102e+00 -2.3529603e+01
+6.9770096e+02 -3.7971270e+00 -1.8373456e+01
+6.0473999e+02 -4.9807044e+00 -1.1796469e+01
+4.6320004e+02 -4.6786584e+00 -5.6089754e+00
+2.9016464e+02 -2.9281725e+00 -1.6303286e+00
+1.2921338e+02 -9.6128623e-01 -2.0222610e-01
+2.9571406e+01 -7.2614075e-02 -2.0943173e-02
+4.5423386e+00 -1.6018385e-03 -1.9351603e-03
+5.3866913e-01 3.9535190e-04 -1.3786061e-04
+4.6609397e-02 6.3573353e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.3493622e-01 8.7771099e-04 -3.0192461e-04
+4.5682715e+00 1.1785855e-02 -6.5072707e-03
+4.8039697e+01 1.3357067e-01 -1.0896144e-01
+4.0676246e+02 1.5352130e+00 -1.6306051e+00
+2.3442746e+03 1.9862973e+01 -2.2960030e+01
+5.4180626e+03 6.0163788e+01 -8.9001816e+01
+8.6376175e+03 9.7726763e+01 -1.9635845e+02
+1.1145583e+04 1.0760993e+02 -3.1332435e+02
+1.2634863e+04 8.7028212e+01 -4.0538360e+02
+1.3268431e+04 4.9241349e+01 -4.5338716e+02
+1.3338654e+04 7.5418222e+00 -4.5314495e+02
+1.2993884e+04 -3.2285843e+01 -4.0655242e+02
+1.2147917e+04 -6.7178240e+01 -3.1878916e+02
+1.0569861e+04 -8.8831370e+01 -2.0517969e+02
+8.1320793e+03 -8.5003351e+01 -9.6396158e+01
+5.1065914e+03 -5.3989093e+01 -2.5938281e+01
+2.2338305e+03 -1.7121371e+01 -1.9939057e+00
+3.9166476e+02 -6.5296777e-01 -1.5172186e-01
+4.6530325e+01 7.8937273e-03 -1.0932276e-02
+4.4401000e+00 5.1334039e-03 -6.4339867e-04
+3.2620838e-01 5.8938103e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.7556041e+00 4.9208197e-03 -1.3442881e-03
+2.8664262e+01 7.4366915e-02 -3.1425999e-02
+3.8846837e+02 9.5970887e-01 -6.0735898e-01
+4.5994050e+03 1.2483653e+01 -1.1448506e+01
+4.1152309e+04 3.3392258e+02 -3.6947622e+02
+9.5108577e+04 1.0556306e+03 -1.5400385e+03
+1.5084843e+05 1.6947570e+03 -3.4261105e+03
+1.9374378e+05 1.8281503e+03 -5.4447143e+03
+2.1887915e+05 1.4406768e+03 -7.0000937e+03
+2.2943028e+05 7.8374649e+02 -7.7892341e+03
+2.3056138e+05 8.6870069e+01 -7.7701925e+03
+2.2481250e+05 -5.6945252e+02 -6.9858843e+03
+2.1065024e+05 -1.1577943e+03 -5.5070152e+03
+1.8395395e+05 -1.5480563e+03 -3.5629009e+03
+1.4221533e+05 -1.5131684e+03 -1.6640383e+03
+8.9844050e+04 -9.8133415e+02 -4.1712923e+02
+3.9457939e+04 -3.0319981e+02 -1.2879499e+01
+4.4738172e+03 -1.6425054e+00 -5.9037363e-01
+3.7978322e+02 4.1510960e-01 -2.6161114e-02
+2.8089261e+01 5.7110706e-02 -1.0204778e-03
+1.7224868e+00 4.6820703e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.2516729e+00 2.2328058e-02 -6.2546726e-03
+1.1984585e+02 3.9863435e-01 -1.5224740e-01
+2.0967567e+03 6.3950218e+00 -3.1030352e+00
+3.7520484e+04 1.0351084e+02 -5.9566069e+01
+6.0749804e+05 9.8462303e+02 -1.5208913e+03
+1.5717540e+06 2.4489769e+03 -7.4010195e+03
+2.5736752e+06 3.9114777e+03 -1.7044070e+04
+3.2670815e+06 4.7450401e+03 -2.7306232e+04
+3.5786492e+06 4.8169058e+03 -3.5110355e+04
+3.6337713e+06 4.3799072e+03 -3.9046150e+04
+3.5892361e+06 3.7272448e+03 -3.9058741e+04
+3.5168930e+06 2.9979495e+03 -3.5370995e+04
+3.3694831e+06 2.2305933e+03 -2.8150978e+04
+3.0169466e+06 1.5060223e+03 -1.8326129e+04
+2.3525363e+06 9.7590343e+02 -8.4504551e+03
+1.4385716e+06 7.1152109e+02 -1.8665582e+03
+5.7010405e+05 5.5462740e+02 7.1506619e+01
+3.7090370e+04 1.2766453e+02 3.8033083e+00
+2.0720106e+03 7.9496600e+00 1.9968435e-01
+1.1840570e+02 5.0321102e-01 9.1297135e-03
+6.1758475e+00 2.8668287e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3226224e+01 6.1295503e-02 -1.3934838e-02
+2.5873411e+02 1.1695337e+00 -3.5438029e-01
+4.5804443e+03 2.0220831e+01 -7.5621709e+00
+8.1007720e+04 3.5169257e+02 -1.5243623e+02
+1.3467673e+06 2.5774692e+03 -1.9538231e+03
+3.2747144e+06 5.6041011e+03 -1.1171280e+04
+5.2736692e+06 8.7950851e+03 -2.6765120e+04
+6.6963351e+06 1.1190126e+04 -4.3400511e+04
+7.3970445e+06 1.2444697e+04 -5.5975726e+04
+7.5896919e+06 1.2753145e+04 -6.2323147e+04
+7.5459343e+06 1.2436578e+04 -6.2516970e+04
+7.3897900e+06 1.1666316e+04 -5.6898818e+04
+7.0385674e+06 1.0467654e+04 -4.5504968e+04
+6.2667618e+06 8.8525347e+03 -2.9599832e+04
+4.8940286e+06 6.9054683e+03 -1.3375150e+04
+3.0482606e+06 4.7844191e+03 -2.6189932e+03
+1.2871095e+06 2.7213709e+03 2.4976566e+02
+8.0446589e+04 4.7473962e+02 1.3335553e+01
+4.5469167e+03 2.7546704e+01 6.9343528e-01
+2.5675311e+02 1.6079421e+00 3.1172228e-02
+1.3121749e+01 8.5006219e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.0583898e+01 1.0686636e-01 -9.7545000e-03
+4.0246989e+02 2.0717485e+00 -2.9500909e-01
+7.0987759e+03 3.6294409e+01 -6.8937377e+00
+1.2467048e+05 6.3548007e+02 -1.4366620e+02
+2.0976638e+06 4.2793970e+03 -2.2396074e+03
+5.0153238e+06 8.8586632e+03 -1.4856470e+04
+8.0224881e+06 1.3764201e+04 -3.6491203e+04
+1.0159554e+07 1.7752322e+04 -5.9487459e+04
+1.1220266e+07 2.0287754e+04 -7.6706784e+04
+1.1524983e+07 2.1482754e+04 -8.5325598e+04
+1.1472160e+07 2.1643275e+04 -8.5656452e+04
+1.1241501e+07 2.0935771e+04 -7.8192774e+04
+1.0710762e+07 1.9350009e+04 -6.2773783e+04
+9.5473543e+06 1.6821199e+04 -4.0887935e+04
+7.4807741e+06 1.3372501e+04 -1.8320053e+04
+4.6938790e+06 9.2670770e+03 -3.3951848e+03
+2.0167067e+06 5.1465468e+03 3.1444905e+02
+1.2410952e+05 8.8137022e+02 1.7161032e+01
+7.0650234e+03 5.0863677e+01 9.0263003e-01
+4.0046160e+02 2.9324694e+00 4.0672703e-02
+2.0477671e+01 1.5260090e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6554587e+01 1.2839513e-01 1.5378808e-02
+5.1769049e+02 2.4898879e+00 2.1231142e-01
+9.0965348e+03 4.3509900e+01 2.0377269e+00
+1.5913291e+05 7.5733904e+02 1.3829420e+01
+2.6386912e+06 4.9074111e+03 -2.5695546e+03
+6.3422334e+06 9.9472709e+03 -1.8621238e+04
+1.0130432e+07 1.5367745e+04 -4.6078775e+04
+1.2778458e+07 1.9900194e+04 -7.5049965e+04
+1.4050269e+07 2.2963842e+04 -9.6523501e+04
+1.4381970e+07 2.4610702e+04 -1.0713184e+05
+1.4295988e+07 2.5097462e+04 -1.0746939e+05
+1.4024403e+07 2.4559281e+04 -9.8217919e+04
+1.3406246e+07 2.2953601e+04 -7.9055878e+04
+1.2002458e+07 2.0162543e+04 -5.1650702e+04
+9.4422860e+06 1.6156911e+04 -2.3204841e+04
+5.9345980e+06 1.1231135e+04 -4.3773289e+03
+2.5387361e+06 6.2173690e+03 1.5138724e+02
+1.5861981e+05 1.0692236e+03 8.2303679e+00
+9.0663099e+03 6.2043012e+01 4.1329475e-01
+5.1592360e+02 3.5850823e+00 1.7207237e-02
+2.6462694e+01 1.8646489e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0447605e+01 1.0506057e-01 5.3097614e-02
+5.9213955e+02 2.0308861e+00 9.7415153e-01
+1.0377322e+04 3.5310357e+01 1.5317757e+01
+1.8112007e+05 6.1051933e+02 2.4276166e+02
+2.9259881e+06 3.8792451e+03 -2.9793019e+03
+7.1384499e+06 7.7876114e+03 -2.2129601e+04
+1.1416629e+07 1.1992852e+04 -5.4581966e+04
+1.4345012e+07 1.5546511e+04 -8.8565898e+04
+1.5684106e+07 1.8006699e+04 -1.1355043e+05
+1.5974475e+07 1.9394772e+04 -1.2574878e+05
+1.5841518e+07 1.9884970e+04 -1.2600522e+05
+1.5559459e+07 1.9564985e+04 -1.1518501e+05
+1.4935325e+07 1.8387686e+04 -9.2872700e+04
+1.3440616e+07 1.6240050e+04 -6.0892005e+04
+1.0612793e+07 1.3073750e+04 -2.7573026e+04
+6.6621310e+06 9.1131691e+03 -5.4566426e+03
+2.8106662e+06 5.0465586e+03 -1.5494464e+02
+1.8064672e+05 8.7289190e+02 -9.3689384e+00
+1.0350462e+04 5.0954400e+01 -5.8473684e-01
+5.9062732e+02 2.9575556e+00 -3.1610343e-02
+3.0371882e+01 1.5425133e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2462739e+01 4.0485116e-02 8.5689087e-02
+6.3044046e+02 7.8077270e-01 1.6251121e+00
+1.1033072e+04 1.3531038e+01 2.6479742e+01
+1.9235548e+05 2.3303337e+02 4.3125235e+02
+3.0365373e+06 1.4680469e+03 -3.3402743e+03
+7.5159064e+06 2.9357314e+03 -2.4678878e+04
+1.2042612e+07 4.5144593e+03 -6.0536996e+04
+1.5089392e+07 5.8533451e+03 -9.7890867e+04
+1.6423868e+07 6.7883860e+03 -1.2521787e+05
+1.6658505e+07 7.3255486e+03 -1.3846243e+05
+1.6485935e+07 7.5270025e+03 -1.3863394e+05
+1.6207303e+07 7.4231709e+03 -1.2672744e+05
+1.5608893e+07 6.9938604e+03 -1.0228522e+05
+1.4103462e+07 6.1926389e+03 -6.7244459e+04
+1.1164831e+07 4.9964978e+03 -3.0665978e+04
+6.9953089e+06 3.4882579e+03 -6.3156290e+03
+2.9110588e+06 1.9327810e+03 -4.3277586e+02
+1.9189904e+05 3.3543454e+02 -2.5710951e+01
+1.1008023e+04 1.9648914e+01 -1.5305011e+00
+6.2908265e+02 1.1437493e+00 -7.8590293e-02
+3.2397524e+01 5.9773959e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3063201e+01 -4.0485121e-02 9.8365094e-02
+6.4182025e+02 -7.8077279e-01 1.8764326e+00
+1.1227576e+04 -1.3531039e+01 3.0746582e+01
+1.9569001e+05 -2.3303335e+02 5.0246620e+02
+3.0611512e+06 -1.4680469e+03 -3.4850110e+03
+7.6215856e+06 -2.9357309e+03 -2.5614988e+04
+1.2222042e+07 -4.5144587e+03 -6.2683912e+04
+1.5298738e+07 -5.8533433e+03 -1.0122807e+05
+1.6623339e+07 -6.7883844e+03 -1.2938044e+05
+1.6833802e+07 -7.3255446e+03 -1.4299240e+05
+1.6645992e+07 -7.5270026e+03 -1.4313024e+05
+1.6370261e+07 -7.4231681e+03 -1.3083518e+05
+1.5785756e+07 -6.9938589e+03 -1.0563809e+05
+1.4284886e+07 -6.1926376e+03 -6.9518054e+04
+1.1318846e+07 -4.9964985e+03 -3.1789445e+04
+7.0856903e+06 -3.4882574e+03 -6.6437273e+03
+2.9321040e+06 -1.9327811e+03 -5.4236195e+02
+1.9523688e+05 -3.3543456e+02 -3.2229795e+01
+1.1203027e+04 -1.9648914e+01 -1.9115758e+00
+6.4051000e+02 -1.1437493e+00 -9.7671025e-02
+3.3001405e+01 -5.9773956e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2462739e+01 -1.0506057e-01 8.5689090e-02
+6.3044046e+02 -2.0308863e+00 1.6251121e+00
+1.1033072e+04 -3.5310356e+01 2.6479751e+01
+1.9235548e+05 -6.1051934e+02 4.3125235e+02
+3.0365373e+06 -3.8792453e+03 -3.3402748e+03
+7.5159064e+06 -7.7876107e+03 -2.4678878e+04
+1.2042612e+07 -1.1992850e+04 -6.0536995e+04
+1.5089392e+07 -1.5546509e+04 -9.7890865e+04
+1.6423868e+07 -1.8006697e+04 -1.2521788e+05
+1.6658505e+07 -1.9394774e+04 -1.3846243e+05
+1.6485935e+07 -1.9884967e+04 -1.3863394e+05
+1.6207303e+07 -1.9564981e+04 -1.2672744e+05
+1.5608893e+07 -1.8387682e+04 -1.0228522e+05
+1.4103462e+07 -1.6240047e+04 -6.7244460e+04
+1.1164831e+07 -1.3073746e+04 -3.0665976e+04
+6.9953089e+06 -9.1131678e+03 -6.3156298e+03
+2.9110588e+06 -5.0465582e+03 -4.3277582e+02
+1.9189904e+05 -8.7289188e+02 -2.5710950e+01
+1.1008023e+04 -5.0954399e+01 -1.5305009e+00
+6.2908265e+02 -2.9575557e+00 -7.8590286e-02
+3.2397524e+01 -1.5425134e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0447605e+01 -1.2839513e-01 5.3097602e-02
+5.9213955e+02 -2.4898878e+00 9.7415233e-01
+1.0377322e+04 -4.3509899e+01 1.5317758e+01
+1.8112007e+05 -7.5733906e+02 2.4276163e+02
+2.9259881e+06 -4.9074112e+03 -2.9793014e+03
+7.1384499e+06 -9.9472714e+03 -2.2129600e+04
+1.1416629e+07 -1.5367744e+04 -5.4581964e+04
+1.4345012e+07 -1.9900194e+04 -8.8565899e+04
+1.5684106e+07 -2.2963838e+04 -1.1355043e+05
+1.5974475e+07 -2.4610701e+04 -1.2574878e+05
+1.5841518e+07 -2.5097460e+04 -1.2600521e+05
+1.5559459e+07 -2.4559281e+04 -1.1518501e+05
+1.4935325e+07 -2.2953597e+04 -9.2872698e+04
+1.3440616e+07 -2.0162543e+04 -6.0892005e+04
+1.0612793e+07 -1.6156910e+04 -2.7573025e+04
+6.6621310e+06 -1.1231135e+04 -5.4566428e+03
+2.8106662e+06 -6.2173689e+03 -1.5494465e+02
+1.8064672e+05 -1.0692236e+03 -9.3689386e+00
+1.0350462e+04 -6.2043008e+01 -5.8473738e-01
+5.9062732e+02 -3.5850820e+00 -3.1610319e-02
+3.0371882e+01 -1.8646489e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6554587e+01 -1.0686636e-01 1.5378818e-02
+5.1769049e+02 -2.0717485e+00 2.1231156e-01
+9.0965348e+03 -3.6294410e+01 2.0377196e+00
+1.5913291e+05 -6.3548005e+02 1.3829361e+01
+2.6386912e+06 -4.2793969e+03 -2.5695550e+03
+6.3422334e+06 -8.8586628e+03 -1.8621238e+04
+1.0130432e+07 -1.3764202e+04 -4.6078772e+04
+1.2778458e+07 -1.7752322e+04 -7.5049965e+04
+1.4050269e+07 -2.0287753e+04 -9.6523502e+04
+1.4381970e+07 -2.1482752e+04 -1.0713184e+05
+1.4295988e+07 -2.1643275e+04 -1.0746939e+05
+1.4024403e+07 -2.0935773e+04 -9.8217916e+04
+1.3406246e+07 -1.9350010e+04 -7.9055880e+04
+1.2002458e+07 -1.6821197e+04 -5.1650701e+04
+9.4422860e+06 -1.3372500e+04 -2.3204841e+04
+5.9345980e+06 -9.2670763e+03 -4.3773287e+03
+2.5387361e+06 -5.1465469e+03 1.5138721e+02
+1.5861981e+05 -8.8137024e+02 8.2303813e+00
+9.0663099e+03 -5.0863679e+01 4.1329437e-01
+5.1592360e+02 -2.9324695e+00 1.7207227e-02
+2.6462694e+01 -1.5260090e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0583898e+01 -6.1295503e-02 -9.7545013e-03
+4.0246989e+02 -1.1695337e+00 -2.9500900e-01
+7.0987759e+03 -2.0220831e+01 -6.8937362e+00
+1.2467048e+05 -3.5169259e+02 -1.4366623e+02
+2.0976638e+06 -2.5774691e+03 -2.2396062e+03
+5.0153238e+06 -5.6041013e+03 -1.4856470e+04
+8.0224881e+06 -8.7950867e+03 -3.6491203e+04
+1.0159554e+07 -1.1190127e+04 -5.9487458e+04
+1.1220266e+07 -1.2444698e+04 -7.6706784e+04
+1.1524983e+07 -1.2753144e+04 -8.5325601e+04
+1.1472160e+07 -1.2436577e+04 -8.5656451e+04
+1.1241501e+07 -1.1666315e+04 -7.8192772e+04
+1.0710762e+07 -1.0467655e+04 -6.2773781e+04
+9.5473543e+06 -8.8525351e+03 -4.0887934e+04
+7.4807741e+06 -6.9054680e+03 -1.8320053e+04
+4.6938790e+06 -4.7844190e+03 -3.3951847e+03
+2.0167067e+06 -2.7213709e+03 3.1444897e+02
+1.2410952e+05 -4.7473962e+02 1.7161035e+01
+7.0650234e+03 -2.7546704e+01 9.0263006e-01
+4.0046160e+02 -1.6079421e+00 4.0672701e-02
+2.0477671e+01 -8.5006218e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3226224e+01 -2.2328058e-02 -1.3934835e-02
+2.5873411e+02 -3.9863436e-01 -3.5438033e-01
+4.5804443e+03 -6.3950226e+00 -7.5621723e+00
+8.1007720e+04 -1.0351086e+02 -1.5243625e+02
+1.3467673e+06 -9.8462305e+02 -1.9538224e+03
+3.2747144e+06 -2.4489768e+03 -1.1171280e+04
+5.2736692e+06 -3.9114776e+03 -2.6765118e+04
+6.6963351e+06 -4.7450402e+03 -4.3400510e+04
+7.3970445e+06 -4.8169064e+03 -5.5975726e+04
+7.5896919e+06 -4.3799069e+03 -6.2323147e+04
+7.5459343e+06 -3.7272448e+03 -6.2516970e+04
+7.3897900e+06 -2.9979489e+03 -5.6898817e+04
+7.0385674e+06 -2.2305933e+03 -4.5504967e+04
+6.2667618e+06 -1.5060224e+03 -2.9599832e+04
+4.8940286e+06 -9.7590326e+02 -1.3375150e+04
+3.0482606e+06 -7.1152141e+02 -2.6189934e+03
+1.2871095e+06 -5.5462733e+02 2.4976569e+02
+8.0446589e+04 -1.2766454e+02 1.3335557e+01
+4.5469167e+03 -7.9496607e+00 6.9343518e-01
+2.5675311e+02 -5.0321105e-01 3.1172228e-02
+1.3121749e+01 -2.8668288e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.2516729e+00 -4.9208196e-03 -6.2546700e-03
+1.1984585e+02 -7.4366918e-02 -1.5224750e-01
+2.0967567e+03 -9.5970879e-01 -3.1030369e+00
+3.7520484e+04 -1.2483650e+01 -5.9565998e+01
+6.0749804e+05 -3.3392259e+02 -1.5208912e+03
+1.5717540e+06 -1.0556306e+03 -7.4010195e+03
+2.5736752e+06 -1.6947570e+03 -1.7044070e+04
+3.2670815e+06 -1.8281502e+03 -2.7306232e+04
+3.5786492e+06 -1.4406767e+03 -3.5110355e+04
+3.6337713e+06 -7.8374650e+02 -3.9046149e+04
+3.5892361e+06 -8.6870065e+01 -3.9058741e+04
+3.5168930e+06 5.6945250e+02 -3.5370995e+04
+3.3694831e+06 1.1577943e+03 -2.8150978e+04
+3.0169466e+06 1.5480562e+03 -1.8326129e+04
+2.3525363e+06 1.5131684e+03 -8.4504552e+03
+1.4385716e+06 9.8133418e+02 -1.8665583e+03
+5.7010405e+05 3.0319983e+02 7.1506601e+01
+3.7090370e+04 1.6425068e+00 3.8033092e+00
+2.0720106e+03 -4.1510958e-01 1.9968434e-01
+1.1840570e+02 -5.7110702e-02 9.1297153e-03
+6.1758475e+00 -4.6820703e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7556041e+00 -8.7771087e-04 -1.3442881e-03
+2.8664262e+01 -1.1785855e-02 -3.1426002e-02
+3.8846837e+02 -1.3357067e-01 -6.0735906e-01
+4.5994050e+03 -1.5352129e+00 -1.1448505e+01
+4.1152309e+04 -1.9862973e+01 -3.6947622e+02
+9.5108577e+04 -6.0163788e+01 -1.5400385e+03
+1.5084843e+05 -9.7726763e+01 -3.4261105e+03
+1.9374378e+05 -1.0760993e+02 -5.4447143e+03
+2.1887915e+05 -8.7028214e+01 -7.0000937e+03
+2.2943028e+05 -4.9241356e+01 -7.7892341e+03
+2.3056138e+05 -7.5418234e+00 -7.7701925e+03
+2.2481250e+05 3.2285845e+01 -6.9858843e+03
+2.1065024e+05 6.7178244e+01 -5.5070152e+03
+1.8395395e+05 8.8831386e+01 -3.5629009e+03
+1.4221533e+05 8.5003351e+01 -1.6640384e+03
+8.9844050e+04 5.3989095e+01 -4.1712923e+02
+3.9457939e+04 1.7121370e+01 -1.2879500e+01
+4.4738172e+03 6.5296773e-01 -5.9037361e-01
+3.7978322e+02 -7.8937332e-03 -2.6161113e-02
+2.8089261e+01 -5.1334046e-03 -1.0204778e-03
+1.7224868e+00 -5.8938105e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3493622e-01 -1.2963375e-04 -3.0192478e-04
+4.5682715e+00 -1.5685021e-03 -6.5072700e-03
+4.8039697e+01 -1.5516371e-02 -1.0896144e-01
+4.0676246e+02 -1.4503882e-01 -1.6306051e+00
+2.3442746e+03 -1.1838013e+00 -2.2960030e+01
+5.4180626e+03 -3.4083890e+00 -8.9001816e+01
+8.6376175e+03 -5.5703961e+00 -1.9635845e+02
+1.1145583e+04 -6.2533999e+00 -3.1332435e+02
+1.2634863e+04 -5.1896393e+00 -4.0538360e+02
+1.3268431e+04 -3.0546111e+00 -4.5338716e+02
+1.3338654e+04 -6.0512562e-01 -4.5314495e+02
+1.2993884e+04 1.7646103e+00 -4.0655241e+02
+1.2147917e+04 3.7971270e+00 -3.1878915e+02
+1.0569861e+04 4.9807038e+00 -2.0517969e+02
+8.1320793e+03 4.6786580e+00 -9.6396159e+01
+5.1065914e+03 2.9281724e+00 -2.5938281e+01
+2.2338305e+03 9.6128619e-01 -1.9939057e+00
+3.9166476e+02 7.2614073e-02 -1.5172186e-01
+4.6530325e+01 1.6018376e-03 -1.0932277e-02
+4.4401000e+00 -3.9535202e-04 -6.4339864e-04
+3.2620838e-01 -6.3573358e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.8196745e-02 -1.3158358e-05 -5.8766518e-05
+5.5840197e-01 -1.4597867e-04 -1.0744805e-03
+4.7269464e+00 -1.2779353e-03 -1.4540572e-02
+3.0949640e+01 -9.9594978e-03 -1.6369071e-01
+1.3634819e+02 -6.1049575e-02 -1.4375065e+00
+3.0862609e+02 -1.6747913e-01 -5.1583427e+00
+4.9272487e+02 -2.7411827e-01 -1.1228051e+01
+6.3843083e+02 -3.1250251e-01 -1.7950091e+01
+7.2634678e+02 -2.6508239e-01 -2.3349595e+01
+7.6438846e+02 -1.6133205e-01 -2.6236906e+01
+7.6881537e+02 -3.8220626e-02 -2.6271237e+01
+7.4816822e+02 8.2149069e-02 -2.3529603e+01
+6.9770096e+02 1.8362995e-01 -1.8373456e+01
+6.0473999e+02 2.3969784e-01 -1.1796469e+01
+4.6320004e+02 2.2202877e-01 -5.6089754e+00
+2.9016464e+02 1.3775741e-01 -1.6303286e+00
+1.2921338e+02 4.6862675e-02 -2.0222609e-01
+2.9571406e+01 5.1301287e-03 -2.0943173e-02
+4.5423386e+00 2.2068937e-04 -1.9351604e-03
+5.3866913e-01 -2.2904932e-05 -1.3786060e-04
+4.6609397e-02 -5.0826373e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8408177e-03 0.0000000e+00 -7.7124720e-06
+4.9444118e-02 0.0000000e+00 -1.2114948e-04
+3.5529622e-01 0.0000000e+00 -1.3631855e-03
+1.9375687e+00 0.0000000e+00 -1.2252474e-02
+7.2165995e+00 0.0000000e+00 -8.0778650e-02
+1.5904142e+01 0.0000000e+00 -2.7036012e-01
+2.5349997e+01 0.0000000e+00 -5.7940680e-01
+3.2945790e+01 0.0000000e+00 -9.2619390e-01
+3.7602182e+01 0.0000000e+00 -1.2096500e+00
+3.9651681e+01 0.0000000e+00 -1.3644612e+00
+3.9902044e+01 0.0000000e+00 -1.3684650e+00
+3.8792521e+01 0.0000000e+00 -1.2242103e+00
+3.6090089e+01 0.0000000e+00 -9.5332212e-01
+3.1174243e+01 0.0000000e+00 -6.1204358e-01
+2.3797620e+01 0.0000000e+00 -2.9534217e-01
+1.4918183e+01 0.0000000e+00 -9.2060003e-02
+6.8083794e+00 0.0000000e+00 -1.5135684e-02
+1.8403354e+00 0.0000000e+00 -1.9397107e-03
+3.3928804e-01 0.0000000e+00 -2.1164669e-04
+4.7405736e-02 0.0000000e+00 -1.7062884e-05
+4.6539656e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.8279245e-03 1.6519783e-05 -3.6265987e-06
+4.9339314e-02 1.7007979e-04 -6.8902164e-05
+3.5477015e-01 1.3314955e-03 -8.7432203e-04
+1.9359601e+00 9.1541374e-03 -8.4197830e-03
+7.2150264e+00 5.0914391e-02 -5.7761047e-02
+1.5907603e+01 1.3924676e-01 -2.0046929e-01
+2.5360264e+01 2.3836902e-01 -4.4910559e-01
+3.2957732e+01 2.9668932e-01 -7.5773660e-01
+3.7607191e+01 2.9146363e-01 -1.0542099e+00
+3.9641412e+01 2.3039455e-01 -1.2743358e+00
+3.9868512e+01 1.2849052e-01 -1.3692947e+00
+3.8727910e+01 -2.0121080e-03 -1.3026712e+00
+3.5991489e+01 -1.3840474e-01 -1.0656657e+00
+3.1052352e+01 -2.3448945e-01 -7.0928461e-01
+2.3679581e+01 -2.4043321e-01 -3.5081164e-01
+1.4834289e+01 -1.5577371e-01 -1.1114415e-01
+6.7689454e+00 -5.3210747e-02 -1.8499490e-02
+1.8294792e+00 -5.2380022e-03 -2.4052749e-03
+3.3721138e-01 -6.1929983e-05 -2.6668582e-04
+4.7100344e-02 6.0517361e-05 -2.1811703e-05
+4.6224435e-03 9.7103494e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8070685e-02 1.7185458e-04 -2.9274731e-05
+5.5724904e-01 1.9232976e-03 -6.2956002e-04
+4.7202612e+00 1.6827324e-02 -9.4401354e-03
+3.0927084e+01 1.3516398e-01 -1.1289398e-01
+1.3634326e+02 9.6866952e-01 -1.0257223e+00
+3.0876794e+02 2.7852326e+00 -3.8135639e+00
+4.9305180e+02 4.7772402e+00 -8.6793662e+00
+6.3882268e+02 5.8788892e+00 -1.4653415e+01
+7.2661693e+02 5.6905253e+00 -2.0322629e+01
+7.6436970e+02 4.4297453e+00 -2.4503225e+01
+7.6835747e+02 2.4097619e+00 -2.6326603e+01
+7.4712029e+02 -1.7078434e-01 -2.5109901e+01
+6.9599262e+02 -2.9233166e+00 -2.0616648e+01
+6.0255402e+02 -4.9374968e+00 -1.3727666e+01
+4.6104752e+02 -5.1255295e+00 -6.6900502e+00
+2.8864281e+02 -3.3480090e+00 -1.9759833e+00
+1.2853638e+02 -1.1041682e+00 -2.4802988e-01
+2.9416265e+01 -7.2040339e-02 -2.6086354e-02
+4.5175987e+00 1.0448079e-03 -2.4531120e-03
+5.3555585e-01 8.9826664e-04 -1.7758184e-04
+4.6323458e-02 1.1806702e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3406093e-01 1.2710037e-03 -2.2386675e-04
+4.5587999e+00 1.5833936e-02 -4.6628977e-03
+4.7970975e+01 1.5761213e-01 -7.6725948e-02
+4.0647178e+02 1.4974097e+00 -1.1482917e+00
+2.3445368e+03 1.5889130e+01 -1.6330989e+01
+5.4218380e+03 4.8229869e+01 -6.5551065e+01
+8.6455689e+03 8.2575528e+01 -1.5130081e+02
+1.1155171e+04 1.0014243e+02 -2.5515223e+02
+1.2642468e+04 9.5254200e+01 -3.5232007e+02
+1.3271073e+04 7.2885708e+01 -4.2341891e+02
+1.3333850e+04 3.8661176e+01 -4.5486702e+02
+1.2979058e+04 -4.9448686e+00 -4.3526674e+02
+1.2121600e+04 -5.2636034e+01 -3.5923742e+02
+1.0534767e+04 -8.9193260e+01 -2.3988787e+02
+8.0968051e+03 -9.4226161e+01 -1.1551306e+02
+5.0817506e+03 -6.2440865e+01 -3.1579400e+01
+2.2235077e+03 -1.9909812e+01 -2.4509250e+00
+3.8990456e+02 -5.7381875e-01 -1.8895139e-01
+4.6312447e+01 4.3801997e-02 -1.3830160e-02
+4.4177508e+00 1.0244568e-02 -8.2724620e-04
+3.2444248e-01 1.0567154e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7508879e+00 8.0374796e-03 -2.0503323e-03
+2.8601333e+01 1.1541444e-01 -3.8701480e-02
+3.8784257e+02 1.3398121e+00 -5.9509806e-01
+4.5952107e+03 1.4083727e+01 -8.9870935e+00
+4.1159677e+04 2.6103015e+02 -2.6149631e+02
+9.5193231e+04 8.3124417e+02 -1.1291644e+03
+1.5101928e+05 1.4132729e+03 -2.6307141e+03
+1.9394862e+05 1.6871015e+03 -4.4225129e+03
+2.1904957e+05 1.5771024e+03 -6.0747857e+03
+2.2951463e+05 1.1879224e+03 -7.2741711e+03
+2.3051990e+05 6.1910591e+02 -7.8131364e+03
+2.2460235e+05 -1.0379670e+02 -7.5041306e+03
+2.1024253e+05 -9.1619485e+02 -6.2328549e+03
+1.8338779e+05 -1.5703748e+03 -4.1855144e+03
+1.4163404e+05 -1.6948941e+03 -2.0035572e+03
+8.9435121e+04 -1.1467883e+03 -5.1027981e+02
+3.9300059e+04 -3.5667411e+02 -1.5635608e+01
+4.4572783e+03 1.0249845e+00 -6.9551598e-01
+3.7829035e+02 8.7078894e-01 -2.9628731e-02
+2.7967806e+01 1.0319307e-01 -1.1226132e-03
+1.7143372e+00 8.0837392e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.2341244e+00 4.1290279e-02 -1.5704389e-02
+1.1955429e+02 7.3998779e-01 -3.4872237e-01
+2.0924817e+03 1.1931462e+01 -6.6653424e+00
+3.7457501e+04 1.9440832e+02 -1.2400708e+02
+6.0729106e+05 1.4581891e+03 -1.1141871e+03
+1.5736461e+06 3.2688772e+03 -5.4439426e+03
+2.5776206e+06 5.1978843e+03 -1.3173936e+04
+3.2714503e+06 6.6216542e+03 -2.2477319e+04
+3.5815678e+06 7.3022846e+03 -3.1121043e+04
+3.6340549e+06 7.3329622e+03 -3.7549721e+04
+3.5861691e+06 6.8738205e+03 -4.0737487e+04
+3.5096613e+06 6.0077924e+03 -3.9617373e+04
+3.3574796e+06 4.8114692e+03 -3.3341580e+04
+3.0011690e+06 3.4878008e+03 -2.2622198e+04
+2.3366649e+06 2.3487118e+03 -1.0794368e+04
+1.4275494e+06 1.5829225e+03 -2.5018731e+03
+5.6607849e+05 1.0474211e+03 1.1958802e+02
+3.6984830e+04 2.1989100e+02 6.2615803e+00
+2.0652313e+03 1.3589206e+01 3.2240569e-01
+1.1796496e+02 8.5192185e-01 1.4416794e-02
+6.1502813e+00 4.8066691e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3189738e+01 1.1825798e-01 -4.0481288e-02
+2.5809148e+02 2.2725217e+00 -9.3038427e-01
+4.5702887e+03 3.9586893e+01 -1.8430231e+01
+8.0845084e+04 6.9319977e+02 -3.5458555e+02
+1.3448623e+06 4.5652928e+03 -1.5566652e+03
+3.2756026e+06 9.2281501e+03 -8.4041029e+03
+5.2773365e+06 1.4241766e+04 -2.1115245e+04
+6.7000416e+06 1.8421644e+04 -3.6621684e+04
+7.3977287e+06 2.1189068e+04 -5.1192650e+04
+7.5855892e+06 2.2521438e+04 -6.2278483e+04
+7.5361043e+06 2.2583738e+04 -6.8158408e+04
+7.3730330e+06 2.1484505e+04 -6.6878124e+04
+7.0139214e+06 1.9293816e+04 -5.6714469e+04
+6.2359927e+06 1.6170776e+04 -3.8628383e+04
+4.8636384e+06 1.2421179e+04 -1.8310669e+04
+3.0270792e+06 8.4510566e+03 -3.9973962e+03
+1.2790287e+06 4.7295216e+03 4.0136617e+02
+8.0228438e+04 8.1841229e+02 2.0996266e+01
+4.5333774e+03 4.7056861e+01 1.0679365e+00
+2.5590562e+02 2.7204350e+00 4.6919364e-02
+1.3074218e+01 1.4251713e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0536031e+01 2.1055878e-01 -4.4433588e-02
+4.0163062e+02 4.1143259e+00 -1.0469676e+00
+7.0856159e+03 7.2679819e+01 -2.0979913e+01
+1.2446197e+05 1.2825189e+03 -4.0178637e+02
+2.0955896e+06 8.0603743e+03 -1.8225961e+03
+5.0182673e+06 1.5761714e+04 -1.1299627e+04
+8.0305599e+06 2.4032826e+04 -2.9162473e+04
+1.0168659e+07 3.1151917e+04 -5.0997811e+04
+1.1225792e+07 3.6208557e+04 -7.1543672e+04
+1.1524230e+07 3.9041983e+04 -8.7311047e+04
+1.1463604e+07 3.9785055e+04 -9.5955904e+04
+1.1223138e+07 3.8538072e+04 -9.4647228e+04
+1.0680773e+07 3.5339599e+04 -8.0704481e+04
+9.5077471e+06 3.0290930e+04 -5.5217492e+04
+7.4405004e+06 2.3695580e+04 -2.6218144e+04
+4.6656103e+06 1.6206451e+04 -5.7048251e+03
+2.0063005e+06 8.9505781e+03 4.8039235e+02
+1.2385102e+05 1.5318476e+03 2.5451492e+01
+7.0487779e+03 8.7459365e+01 1.2944309e+00
+3.9943242e+02 4.9878038e+00 5.6250236e-02
+2.0419451e+01 2.5698710e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6512169e+01 2.5654102e-01 -3.5638156e-03
+5.1698399e+02 5.0195383e+00 -2.0228317e-01
+9.0861725e+03 8.8568636e+01 -5.7287240e+00
+1.5898005e+05 1.5564246e+03 -1.2677849e+02
+2.6390248e+06 9.5515620e+03 -1.9515207e+03
+6.3517711e+06 1.8405790e+04 -1.4133244e+04
+1.0149433e+07 2.7880739e+04 -3.6982638e+04
+1.2801260e+07 3.6110063e+04 -6.4742401e+04
+1.4070369e+07 4.2089552e+04 -9.0723832e+04
+1.4395325e+07 4.5599387e+04 -1.1063614e+05
+1.4300059e+07 4.6738623e+04 -1.2166140e+05
+1.4015953e+07 4.5584214e+04 -1.2025664e+05
+1.3382090e+07 4.2136356e+04 -1.0289731e+05
+1.1964155e+07 3.6429425e+04 -7.0732845e+04
+9.4003789e+06 2.8714179e+04 -3.3844324e+04
+5.9048946e+06 1.9721949e+04 -7.6564108e+03
+2.5289808e+06 1.0886092e+04 1.6331639e+02
+1.5843447e+05 1.8726229e+03 7.8822164e+00
+9.0539707e+03 1.0735794e+02 3.2290075e-01
+5.1509525e+02 6.1297033e+00 9.3543774e-03
+2.6413639e+01 3.1539655e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0423441e+01 2.1189088e-01 6.8814291e-02
+5.9180503e+02 4.1366091e+00 1.2862599e+00
+1.0373742e+04 7.2713211e+01 2.0722181e+01
+1.8108863e+05 1.2712282e+03 3.3735830e+02
+2.9301955e+06 7.6999519e+03 -2.0183479e+03
+7.1567618e+06 1.4731229e+04 -1.6655657e+04
+1.1449391e+07 2.2230117e+04 -4.3766757e+04
+1.4385029e+07 2.8756122e+04 -7.6429579e+04
+1.5723017e+07 3.3536188e+04 -1.0678744e+05
+1.6006829e+07 3.6393950e+04 -1.2993680e+05
+1.5863664e+07 3.7395669e+04 -1.4274049e+05
+1.5566869e+07 3.6589956e+04 -1.4115637e+05
+1.4923377e+07 3.3957657e+04 -1.2102977e+05
+1.3410065e+07 2.9490088e+04 -8.3539483e+04
+1.0574968e+07 2.3342907e+04 -4.0342874e+04
+6.6350052e+06 1.6081403e+04 -9.5765550e+03
+2.8034920e+06 8.8873549e+03 -4.0366525e+02
+1.8060285e+05 1.5373638e+03 -2.4537494e+01
+1.0346211e+04 8.8578418e+01 -1.5068441e+00
+5.9025394e+02 5.0760266e+00 -7.9789467e-02
+3.0345748e+01 2.6174088e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2457263e+01 8.2043456e-02 1.3532319e-01
+6.3047478e+02 1.5988114e+00 2.6388001e+00
+1.1036003e+04 2.8032921e+01 4.4387185e+01
+1.9243738e+05 4.8859044e+02 7.4511983e+02
+3.0441029e+06 2.9418092e+03 -2.0623268e+03
+7.5413984e+06 5.6109418e+03 -1.8434057e+04
+1.2086391e+07 8.4521137e+03 -4.8435704e+04
+1.5143141e+07 1.0924936e+04 -8.4353117e+04
+1.6477874e+07 1.2740821e+04 -1.1756375e+05
+1.6706280e+07 1.3833927e+04 -1.4277834e+05
+1.6523000e+07 1.4228421e+04 -1.5667625e+05
+1.6228199e+07 1.3941095e+04 -1.5492331e+05
+1.5607947e+07 1.2961296e+04 -1.3298165e+05
+1.4080736e+07 1.1279269e+04 -9.2045385e+04
+1.1131944e+07 8.9461587e+03 -4.4761735e+04
+6.9714582e+06 6.1729496e+03 -1.1002574e+04
+2.9064441e+06 3.4144261e+03 -9.1489460e+02
+1.9198332e+05 5.9250091e+02 -5.4312670e+01
+1.1011264e+04 3.4239180e+01 -3.2143030e+00
+6.2914148e+02 1.9668597e+00 -1.6397251e-01
+3.2393699e+01 1.0159324e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3065425e+01 -8.2043458e-02 1.6186307e-01
+6.4200477e+02 -1.5988114e+00 3.1749747e+00
+1.1233128e+04 -2.8032921e+01 5.3689574e+01
+1.9581698e+05 -4.8859044e+02 9.0389538e+02
+3.0700185e+06 -2.9418093e+03 -2.0797773e+03
+7.6498057e+06 -5.6109413e+03 -1.9078019e+04
+1.2269972e+07 -8.4521131e+03 -5.0103879e+04
+1.5357647e+07 -1.0924934e+04 -8.7162797e+04
+1.6683024e+07 -1.2740819e+04 -1.2136571e+05
+1.6887395e+07 -1.3833922e+04 -1.4729148e+05
+1.6688716e+07 -1.4228418e+04 -1.6155927e+05
+1.6396322e+07 -1.3941092e+04 -1.5973884e+05
+1.5789104e+07 -1.2961294e+04 -1.3716398e+05
+1.4265314e+07 -1.1279267e+04 -9.5033808e+04
+1.1288038e+07 -8.9461576e+03 -4.6332938e+04
+7.0632335e+06 -6.1729487e+03 -1.1530232e+04
+2.9285191e+06 -3.4144260e+03 -1.1164779e+03
+1.9537156e+05 -5.9250087e+02 -6.6161571e+01
+1.1209243e+04 -3.4239179e+01 -3.8994254e+00
+6.4074227e+02 -1.9668596e+00 -1.9797359e-01
+3.3006618e+01 -1.0159324e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2457263e+01 -2.1189088e-01 1.3532318e-01
+6.3047478e+02 -4.1366091e+00 2.6388002e+00
+1.1036003e+04 -7.2713210e+01 4.4387183e+01
+1.9243738e+05 -1.2712282e+03 7.4511989e+02
+3.0441029e+06 -7.6999522e+03 -2.0623269e+03
+7.5413984e+06 -1.4731229e+04 -1.8434058e+04
+1.2086391e+07 -2.2230117e+04 -4.8435706e+04
+1.5143141e+07 -2.8756118e+04 -8.4353110e+04
+1.6477874e+07 -3.3536184e+04 -1.1756374e+05
+1.6706280e+07 -3.6393949e+04 -1.4277834e+05
+1.6523000e+07 -3.7395666e+04 -1.5667625e+05
+1.6228199e+07 -3.6589951e+04 -1.5492331e+05
+1.5607947e+07 -3.3957654e+04 -1.3298166e+05
+1.4080736e+07 -2.9490084e+04 -9.2045385e+04
+1.1131944e+07 -2.3342906e+04 -4.4761735e+04
+6.9714582e+06 -1.6081403e+04 -1.1002574e+04
+2.9064441e+06 -8.8873547e+03 -9.1489449e+02
+1.9198332e+05 -1.5373638e+03 -5.4312671e+01
+1.1011264e+04 -8.8578422e+01 -3.2143030e+00
+6.2914148e+02 -5.0760267e+00 -1.6397250e-01
+3.2393699e+01 -2.6174088e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0423441e+01 -2.5654103e-01 6.8814291e-02
+5.9180503e+02 -5.0195384e+00 1.2862601e+00
+1.0373742e+04 -8.8568636e+01 2.0722177e+01
+1.8108863e+05 -1.5564246e+03 3.3735824e+02
+2.9301955e+06 -9.5515619e+03 -2.0183468e+03
+7.1567618e+06 -1.8405789e+04 -1.6655654e+04
+1.1449391e+07 -2.7880736e+04 -4.3766754e+04
+1.4385029e+07 -3.6110063e+04 -7.6429578e+04
+1.5723017e+07 -4.2089549e+04 -1.0678744e+05
+1.6006829e+07 -4.5599386e+04 -1.2993679e+05
+1.5863664e+07 -4.6738619e+04 -1.4274049e+05
+1.5566869e+07 -4.5584212e+04 -1.4115637e+05
+1.4923377e+07 -4.2136353e+04 -1.2102977e+05
+1.3410065e+07 -3.6429423e+04 -8.3539484e+04
+1.0574968e+07 -2.8714177e+04 -4.0342873e+04
+6.6350052e+06 -1.9721948e+04 -9.5765554e+03
+2.8034920e+06 -1.0886092e+04 -4.0366528e+02
+1.8060285e+05 -1.8726229e+03 -2.4537509e+01
+1.0346211e+04 -1.0735794e+02 -1.5068437e+00
+5.9025394e+02 -6.1297031e+00 -7.9789448e-02
+3.0345748e+01 -3.1539655e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6512169e+01 -2.1055878e-01 -3.5638226e-03
+5.1698399e+02 -4.1143259e+00 -2.0228294e-01
+9.0861725e+03 -7.2679820e+01 -5.7287247e+00
+1.5898005e+05 -1.2825189e+03 -1.2677856e+02
+2.6390248e+06 -8.0603745e+03 -1.9515215e+03
+6.3517711e+06 -1.5761714e+04 -1.4133239e+04
+1.0149433e+07 -2.4032825e+04 -3.6982636e+04
+1.2801260e+07 -3.1151916e+04 -6.4742399e+04
+1.4070369e+07 -3.6208553e+04 -9.0723832e+04
+1.4395325e+07 -3.9041981e+04 -1.1063614e+05
+1.4300059e+07 -3.9785054e+04 -1.2166140e+05
+1.4015953e+07 -3.8538073e+04 -1.2025663e+05
+1.3382090e+07 -3.5339599e+04 -1.0289731e+05
+1.1964155e+07 -3.0290930e+04 -7.0732845e+04
+9.4003789e+06 -2.3695579e+04 -3.3844323e+04
+5.9048946e+06 -1.6206451e+04 -7.6564117e+03
+2.5289808e+06 -8.9505783e+03 1.6331630e+02
+1.5843447e+05 -1.5318476e+03 7.8822158e+00
+9.0539707e+03 -8.7459364e+01 3.2290079e-01
+5.1509525e+02 -4.9878038e+00 9.3543774e-03
+2.6413639e+01 -2.5698710e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0536031e+01 -1.1825798e-01 -4.4433591e-02
+4.0163062e+02 -2.2725217e+00 -1.0469677e+00
+7.0856159e+03 -3.9586892e+01 -2.0979914e+01
+1.2446197e+05 -6.9319972e+02 -4.0178640e+02
+2.0955896e+06 -4.5652923e+03 -1.8225936e+03
+5.0182673e+06 -9.2281503e+03 -1.1299626e+04
+8.0305599e+06 -1.4241767e+04 -2.9162472e+04
+1.0168659e+07 -1.8421644e+04 -5.0997808e+04
+1.1225792e+07 -2.1189069e+04 -7.1543674e+04
+1.1524230e+07 -2.2521438e+04 -8.7311047e+04
+1.1463604e+07 -2.2583738e+04 -9.5955902e+04
+1.1223138e+07 -2.1484505e+04 -9.4647227e+04
+1.0680773e+07 -1.9293816e+04 -8.0704481e+04
+9.5077471e+06 -1.6170775e+04 -5.5217491e+04
+7.4405004e+06 -1.2421178e+04 -2.6218145e+04
+4.6656103e+06 -8.4510563e+03 -5.7048248e+03
+2.0063005e+06 -4.7295215e+03 4.8039234e+02
+1.2385102e+05 -8.1841230e+02 2.5451493e+01
+7.0487779e+03 -4.7056861e+01 1.2944309e+00
+3.9943242e+02 -2.7204351e+00 5.6250229e-02
+2.0419451e+01 -1.4251713e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3189738e+01 -4.1290279e-02 -4.0481289e-02
+2.5809148e+02 -7.3998777e-01 -9.3038410e-01
+4.5702887e+03 -1.1931462e+01 -1.8430227e+01
+8.0845084e+04 -1.9440832e+02 -3.5458558e+02
+1.3448623e+06 -1.4581890e+03 -1.5566649e+03
+3.2756026e+06 -3.2688770e+03 -8.4041020e+03
+5.2773365e+06 -5.1978846e+03 -2.1115245e+04
+6.7000416e+06 -6.6216547e+03 -3.6621682e+04
+7.3977287e+06 -7.3022852e+03 -5.1192650e+04
+7.5855892e+06 -7.3329620e+03 -6.2278484e+04
+7.5361043e+06 -6.8738206e+03 -6.8158408e+04
+7.3730330e+06 -6.0077922e+03 -6.6878124e+04
+7.0139214e+06 -4.8114692e+03 -5.6714468e+04
+6.2359927e+06 -3.4878010e+03 -3.8628383e+04
+4.8636384e+06 -2.3487103e+03 -1.8310670e+04
+3.0270792e+06 -1.5829224e+03 -3.9973958e+03
+1.2790287e+06 -1.0474211e+03 4.0136619e+02
+8.0228438e+04 -2.1989100e+02 2.0996268e+01
+4.5333774e+03 -1.3589206e+01 1.0679364e+00
+2.5590562e+02 -8.5192184e-01 4.6919368e-02
+1.3074218e+01 -4.8066691e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.2341244e+00 -8.0374799e-03 -1.5704387e-02
+1.1955429e+02 -1.1541445e-01 -3.4872233e-01
+2.0924817e+03 -1.3398121e+00 -6.6653417e+00
+3.7457501e+04 -1.4083727e+01 -1.2400706e+02
+6.0729106e+05 -2.6103015e+02 -1.1141870e+03
+1.5736461e+06 -8.3124418e+02 -5.4439425e+03
+2.5776206e+06 -1.4132729e+03 -1.3173936e+04
+3.2714503e+06 -1.6871015e+03 -2.2477319e+04
+3.5815678e+06 -1.5771024e+03 -3.1121043e+04
+3.6340549e+06 -1.1879225e+03 -3.7549721e+04
+3.5861691e+06 -6.1910591e+02 -4.0737487e+04
+3.5096613e+06 1.0379667e+02 -3.9617373e+04
+3.3574796e+06 9.1619483e+02 -3.3341580e+04
+3.0011690e+06 1.5703747e+03 -2.2622198e+04
+2.3366649e+06 1.6948940e+03 -1.0794368e+04
+1.4275494e+06 1.1467884e+03 -2.5018731e+03
+5.6607849e+05 3.5667411e+02 1.1958801e+02
+3.6984830e+04 -1.0249839e+00 6.2615804e+00
+2.0652313e+03 -8.7078892e-01 3.2240568e-01
+1.1796496e+02 -1.0319307e-01 1.4416795e-02
+6.1502813e+00 -8.0837392e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7508879e+00 -1.2710036e-03 -2.0503325e-03
+2.8601333e+01 -1.5833934e-02 -3.8701452e-02
+3.8784257e+02 -1.5761212e-01 -5.9509797e-01
+4.5952107e+03 -1.4974097e+00 -8.9870930e+00
+4.1159677e+04 -1.5889129e+01 -2.6149631e+02
+9.5193231e+04 -4.8229868e+01 -1.1291644e+03
+1.5101928e+05 -8.2575528e+01 -2.6307141e+03
+1.9394862e+05 -1.0014243e+02 -4.4225129e+03
+2.1904957e+05 -9.5254206e+01 -6.0747857e+03
+2.2951463e+05 -7.2885705e+01 -7.2741711e+03
+2.3051990e+05 -3.8661171e+01 -7.8131365e+03
+2.2460235e+05 4.9448692e+00 -7.5041306e+03
+2.1024253e+05 5.2636036e+01 -6.2328549e+03
+1.8338779e+05 8.9193263e+01 -4.1855143e+03
+1.4163404e+05 9.4226155e+01 -2.0035572e+03
+8.9435121e+04 6.2440864e+01 -5.1027981e+02
+3.9300059e+04 1.9909807e+01 -1.5635607e+01
+4.4572783e+03 5.7381847e-01 -6.9551602e-01
+3.7829035e+02 -4.3802016e-02 -2.9628739e-02
+2.7967806e+01 -1.0244568e-02 -1.1226128e-03
+1.7143372e+00 -1.0567154e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.3406093e-01 -1.7185457e-04 -2.2386676e-04
+4.5587999e+00 -1.9232974e-03 -4.6628952e-03
+4.7970975e+01 -1.6827324e-02 -7.6725954e-02
+4.0647178e+02 -1.3516398e-01 -1.1482917e+00
+2.3445368e+03 -9.6866954e-01 -1.6330989e+01
+5.4218380e+03 -2.7852324e+00 -6.5551064e+01
+8.6455689e+03 -4.7772400e+00 -1.5130081e+02
+1.1155171e+04 -5.8788890e+00 -2.5515223e+02
+1.2642468e+04 -5.6905250e+00 -3.5232007e+02
+1.3271073e+04 -4.4297453e+00 -4.2341891e+02
+1.3333850e+04 -2.4097621e+00 -4.5486702e+02
+1.2979058e+04 1.7078479e-01 -4.3526674e+02
+1.2121600e+04 2.9233166e+00 -3.5923742e+02
+1.0534767e+04 4.9374969e+00 -2.3988787e+02
+8.0968051e+03 5.1255292e+00 -1.1551306e+02
+5.0817506e+03 3.3480090e+00 -3.1579401e+01
+2.2235077e+03 1.1041683e+00 -2.4509246e+00
+3.8990456e+02 7.2040343e-02 -1.8895138e-01
+4.6312447e+01 -1.0448082e-03 -1.3830159e-02
+4.4177508e+00 -8.9826665e-04 -8.2724609e-04
+3.2444248e-01 -1.1806702e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.8070685e-02 -1.6519783e-05 -2.9274723e-05
+5.5724904e-01 -1.7007979e-04 -6.2955992e-04
+4.7202612e+00 -1.3314955e-03 -9.4401357e-03
+3.0927084e+01 -9.1541370e-03 -1.1289397e-01
+1.3634326e+02 -5.0914391e-02 -1.0257223e+00
+3.0876794e+02 -1.3924677e-01 -3.8135639e+00
+4.9305180e+02 -2.3836901e-01 -8.6793662e+00
+6.3882268e+02 -2.9668933e-01 -1.4653415e+01
+7.2661693e+02 -2.9146362e-01 -2.0322629e+01
+7.6436970e+02 -2.3039455e-01 -2.4503225e+01
+7.6835747e+02 -1.2849052e-01 -2.6326603e+01
+7.4712029e+02 2.0121067e-03 -2.5109901e+01
+6.9599262e+02 1.3840474e-01 -2.0616648e+01
+6.0255402e+02 2.3448944e-01 -1.3727666e+01
+4.6104752e+02 2.4043320e-01 -6.6900502e+00
+2.8864281e+02 1.5577371e-01 -1.9759834e+00
+1.2853638e+02 5.3210750e-02 -2.4802986e-01
+2.9416265e+01 5.2380016e-03 -2.6086353e-02
+4.5175987e+00 6.1929486e-05 -2.4531119e-03
+5.3555585e-01 -6.0517380e-05 -1.7758184e-04
+4.6323458e-02 -9.7103501e-06 0.0000000e+00
+0 0 0
+0 0 0
+4.8279245e-03 0.0000000e+00 -3.6265976e-06
+4.9339314e-02 0.0000000e+00 -6.8902161e-05
+3.5477015e-01 0.0000000e+00 -8.7432202e-04
+1.9359601e+00 0.0000000e+00 -8.4197828e-03
+7.2150264e+00 0.0000000e+00 -5.7761046e-02
+1.5907603e+01 0.0000000e+00 -2.0046929e-01
+2.5360264e+01 0.0000000e+00 -4.4910559e-01
+3.2957732e+01 0.0000000e+00 -7.5773660e-01
+3.7607191e+01 0.0000000e+00 -1.0542099e+00
+3.9641412e+01 0.0000000e+00 -1.2743358e+00
+3.9868512e+01 0.0000000e+00 -1.3692947e+00
+3.8727910e+01 0.0000000e+00 -1.3026712e+00
+3.5991489e+01 0.0000000e+00 -1.0656657e+00
+3.1052352e+01 0.0000000e+00 -7.0928461e-01
+2.3679581e+01 0.0000000e+00 -3.5081164e-01
+1.4834289e+01 0.0000000e+00 -1.1114416e-01
+6.7689454e+00 0.0000000e+00 -1.8499490e-02
+1.8294792e+00 0.0000000e+00 -2.4052751e-03
+3.3721138e-01 0.0000000e+00 -2.6668578e-04
+4.7100344e-02 0.0000000e+00 -2.1811701e-05
+4.6224435e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.8065799e-03 2.0189568e-05 1.1550998e-06
+4.9152120e-02 1.9671805e-04 -8.3692707e-06
+3.5368212e-01 1.3933246e-03 -3.1366229e-04
+1.9314250e+00 8.2802415e-03 -4.0588508e-03
+7.2029691e+00 3.9687255e-02 -3.1688818e-02
+1.5889396e+01 1.0804942e-01 -1.2153117e-01
+2.5341677e+01 1.9955583e-01 -3.0249960e-01
+3.2942995e+01 2.8121157e-01 -5.6897386e-01
+3.7595015e+01 3.2366043e-01 -8.8045782e-01
+3.9623946e+01 3.0997469e-01 -1.1729662e+00
+3.9831942e+01 2.3129670e-01 -1.3676924e+00
+3.8656199e+01 8.9775475e-02 -1.3857572e+00
+3.5875955e+01 -8.4386234e-02 -1.1858371e+00
+3.0904063e+01 -2.2390896e-01 -8.1363951e-01
+2.3532590e+01 -2.5612163e-01 -4.1052702e-01
+1.4727977e+01 -1.7239012e-01 -1.3182401e-01
+6.7180525e+00 -5.8689944e-02 -2.2241127e-02
+1.8151992e+00 -5.0172968e-03 -2.9438678e-03
+3.3443545e-01 1.6508610e-04 -3.3302703e-04
+4.6687079e-02 1.0796263e-04 -2.7724611e-05
+4.5794343e-03 1.5284635e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.7867701e-02 2.1720718e-04 5.9661418e-06
+5.5525243e-01 2.3063081e-03 -1.0702010e-04
+4.7068504e+00 1.8240822e-02 -3.5437092e-03
+3.0862589e+01 1.2406469e-01 -5.4833782e-02
+1.3615853e+02 7.2736927e-01 -5.5778812e-01
+3.0851893e+02 2.0888637e+00 -2.2895881e+00
+4.9286012e+02 3.9039369e+00 -5.8022854e+00
+6.3875468e+02 5.4945425e+00 -1.0947611e+01
+7.2662552e+02 6.2958373e+00 -1.6928372e+01
+7.6429093e+02 6.0061742e+00 -2.2545792e+01
+7.6792242e+02 4.4563979e+00 -2.6335838e+01
+7.4601417e+02 1.6461305e+00 -2.6786072e+01
+6.9402768e+02 -1.8854538e+00 -2.3020064e+01
+5.9991407e+02 -4.8003237e+00 -1.5803704e+01
+4.5837492e+02 -5.5312098e+00 -7.8560103e+00
+2.8671488e+02 -3.7490762e+00 -2.3513981e+00
+1.2765930e+02 -1.2332837e+00 -2.9972270e-01
+2.9210196e+01 -6.6452567e-02 -3.2218428e-02
+4.4840869e+00 4.5633579e-03 -3.1049625e-03
+5.3128066e-01 1.5078568e-03 -2.2967222e-04
+4.5927434e-02 1.8163594e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3270935e-01 1.6878168e-03 -1.1902769e-04
+4.5432422e+00 2.0125642e-02 -2.3806455e-03
+4.7842674e+01 1.8284090e-01 -3.8679445e-02
+4.0570356e+02 1.4463318e+00 -5.9272353e-01
+2.3420669e+03 1.1375876e+01 -8.7712765e+00
+5.4192856e+03 3.4746087e+01 -3.8876056e+01
+8.6451788e+03 6.5669876e+01 -1.0025191e+02
+1.1157753e+04 9.2192578e+01 -1.8953149e+02
+1.2646781e+04 1.0506111e+02 -2.9261016e+02
+1.3274076e+04 9.9830622e+01 -3.8943730e+02
+1.3330889e+04 7.3784306e+01 -4.5580378e+02
+1.2964624e+04 2.6049474e+01 -4.6577315e+02
+1.2092085e+04 -3.5494698e+01 -4.0264799e+02
+1.0492783e+04 -8.8199247e+01 -2.7726548e+02
+8.0531805e+03 -1.0300203e+02 -1.3617005e+02
+5.0503101e+03 -7.0758217e+01 -3.7720396e+01
+2.2100656e+03 -2.2529011e+01 -2.9825581e+00
+3.8752746e+02 -4.3544793e-01 -2.3645970e-01
+4.6010877e+01 8.7555190e-02 -1.7881810e-02
+4.3863556e+00 1.6124271e-02 -1.1030150e-03
+3.2194134e-01 1.5797624e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7439792e+00 1.1320339e-02 -2.7237588e-03
+2.8505246e+01 1.5864095e-01 -4.5152651e-02
+3.8680569e+02 1.7378310e+00 -5.6326760e-01
+4.5864989e+03 1.5657558e+01 -6.0626328e+00
+4.1125584e+04 1.7733219e+02 -1.3792557e+02
+9.5174802e+04 5.7529405e+02 -6.6004420e+02
+1.5105547e+05 1.0957098e+03 -1.7262671e+03
+1.9404691e+05 1.5330269e+03 -3.2653911e+03
+2.1918185e+05 1.7373347e+03 -5.0299399e+03
+2.2962609e+05 1.6459759e+03 -6.6875491e+03
+2.3053174e+05 1.2171416e+03 -7.8427465e+03
+2.2441991e+05 4.2124352e+02 -8.0555003e+03
+2.0979839e+05 -6.3382046e+02 -7.0130351e+03
+1.8271744e+05 -1.5738030e+03 -4.8570888e+03
+1.4091840e+05 -1.8734019e+03 -2.3710516e+03
+8.8918464e+04 -1.3132501e+03 -6.1190291e+02
+3.9093168e+04 -4.0832978e+02 -1.9211289e+01
+4.4342239e+03 4.2952311e+00 -8.8757368e-01
+3.7615041e+02 1.3807015e+00 -4.0784372e-02
+2.7791498e+01 1.5338762e-01 -1.7395098e-03
+1.7024404e+00 1.1737101e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.2098331e+00 6.1258032e-02 -2.5646320e-02
+1.1914360e+02 1.1003122e+00 -5.5662717e-01
+2.0863311e+03 1.7792040e+01 -1.0460266e+01
+3.7364906e+04 2.9091287e+02 -1.9312017e+02
+6.0597893e+05 1.9738316e+03 -6.7748367e+02
+1.5726574e+06 4.1781170e+03 -3.2915926e+03
+2.5777104e+06 6.6456767e+03 -8.9313685e+03
+3.2725673e+06 8.7466570e+03 -1.7262000e+04
+3.5828879e+06 1.0113996e+04 -2.6958792e+04
+3.6343226e+06 1.0660803e+04 -3.6241287e+04
+3.5837019e+06 1.0407258e+04 -4.2964208e+04
+3.5023736e+06 9.3831487e+03 -4.4638388e+04
+3.3438290e+06 7.7089114e+03 -3.9330459e+04
+2.9820968e+06 5.7169009e+03 -2.7548968e+04
+2.3168539e+06 3.8908978e+03 -1.3502276e+04
+1.4134474e+06 2.5521964e+03 -3.2656484e+03
+5.6065902e+05 1.5847226e+03 1.6076772e+02
+3.6824809e+04 3.1685252e+02 8.2319885e+00
+2.0549283e+03 1.9504157e+01 4.1156752e-01
+1.1729540e+02 1.2167392e+00 1.7782497e-02
+6.1114922e+00 6.8308755e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3141673e+01 1.7809150e-01 -6.8768441e-02
+2.5723593e+02 3.4337822e+00 -1.5466818e+00
+4.5566175e+03 6.0027403e+01 -3.0110908e+01
+8.0624101e+04 1.0545289e+03 -5.7274376e+02
+1.3407609e+06 6.7074118e+03 -1.2049154e+03
+3.2709360e+06 1.3178411e+04 -5.5386564e+03
+5.2734718e+06 2.0223697e+04 -1.5252026e+04
+6.6969709e+06 2.6390494e+04 -2.9825133e+04
+7.3941610e+06 3.0824299e+04 -4.6967671e+04
+7.5795800e+06 3.3263684e+04 -6.3561366e+04
+7.5250305e+06 3.3716495e+04 -7.5796766e+04
+7.3535631e+06 3.2236431e+04 -7.9180114e+04
+6.9836245e+06 2.8945267e+04 -7.0119532e+04
+6.1967619e+06 2.4156475e+04 -4.9328296e+04
+4.8239953e+06 1.8414188e+04 -2.4208497e+04
+2.9987446e+06 1.2404156e+04 -5.7258455e+03
+1.2674794e+06 6.8697201e+03 5.3840737e+02
+7.9878746e+04 1.1773558e+03 2.7595908e+01
+4.5117319e+03 6.7376495e+01 1.3690911e+00
+2.5455721e+02 3.8757437e+00 5.8498227e-02
+1.2998942e+01 2.0208238e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0476890e+01 3.1911066e-01 -8.1877489e-02
+4.0058688e+02 6.2571355e+00 -1.8614849e+00
+7.0691383e+03 1.1093736e+02 -3.6293768e+01
+1.2419922e+05 1.9643385e+03 -6.8335642e+02
+2.0910561e+06 1.2106517e+04 -1.5490213e+03
+5.0144800e+06 2.3218867e+04 -7.8021767e+03
+8.0296855e+06 3.5189725e+04 -2.1893822e+04
+1.0170453e+07 4.5744024e+04 -4.3041228e+04
+1.1227956e+07 5.3540130e+04 -6.7920738e+04
+1.1523518e+07 5.8122750e+04 -9.2067795e+04
+1.1455826e+07 5.9456874e+04 -1.1003010e+05
+1.1203047e+07 5.7589419e+04 -1.1529159e+05
+1.0644315e+07 5.2615746e+04 -1.0250339e+05
+9.4570535e+06 4.4810213e+04 -7.2463548e+04
+7.3874720e+06 3.4777916e+04 -3.5798943e+04
+4.6272448e+06 2.3607023e+04 -8.6363195e+03
+1.9909465e+06 1.2969372e+04 6.1801085e+02
+1.2340643e+05 2.2081687e+03 3.1790251e+01
+7.0209844e+03 1.2540411e+02 1.5561726e+00
+3.9768692e+02 7.1128084e+00 6.4605192e-02
+2.0321513e+01 3.6462560e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6466409e+01 3.9024549e-01 -2.5375346e-02
+5.1623192e+02 7.6640100e+00 -6.8017881e-01
+9.0753629e+03 1.3577016e+02 -1.4703379e+01
+1.5882429e+05 2.3951801e+03 -2.8977667e+02
+2.6379014e+06 1.4495252e+04 -1.5551911e+03
+6.3557766e+06 2.7487549e+04 -9.8294118e+03
+1.0161577e+07 4.1383654e+04 -2.8167456e+04
+1.2820634e+07 5.3634620e+04 -5.5432000e+04
+1.4093032e+07 6.2755870e+04 -8.7311145e+04
+1.4416068e+07 6.8238561e+04 -1.1817013e+05
+1.4312501e+07 7.0033582e+04 -1.4118819e+05
+1.4012314e+07 6.8174270e+04 -1.4813409e+05
+1.3355955e+07 6.2711082e+04 -1.3209444e+05
+1.1916882e+07 5.3835862e+04 -9.3847332e+04
+9.3460274e+06 4.2099445e+04 -4.6817432e+04
+5.8647732e+06 2.8717556e+04 -1.1806580e+04
+2.5142245e+06 1.5790143e+04 1.2901658e+02
+1.5806254e+05 2.7046153e+03 4.4989908e+00
+9.0296732e+03 1.5416334e+02 3.7253565e-02
+5.1350355e+02 8.7508553e+00 -9.0920498e-03
+2.6321304e+01 4.4786856e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0408448e+01 3.2305815e-01 8.2180373e-02
+5.9167169e+02 6.3317323e+00 1.5477962e+00
+1.0374095e+04 1.1177853e+02 2.5186123e+01
+1.8113141e+05 1.9625660e+03 4.1502318e+02
+2.9346786e+06 1.1751672e+04 -1.3245041e+03
+7.1721962e+06 2.2155531e+04 -1.1426861e+04
+1.1479462e+07 3.3227997e+04 -3.3341987e+04
+1.4427913e+07 4.2970434e+04 -6.5561747e+04
+1.5772930e+07 5.0236846e+04 -1.0295543e+05
+1.6056470e+07 5.4642739e+04 -1.3900075e+05
+1.5904428e+07 5.6155473e+04 -1.6588661e+05
+1.5588484e+07 5.4796230e+04 -1.7412346e+05
+1.4916986e+07 5.0579028e+04 -1.5560036e+05
+1.3375719e+07 4.3602280e+04 -1.1102116e+05
+1.0527724e+07 3.4239498e+04 -5.5917272e+04
+6.5991223e+06 2.3432171e+04 -1.4748940e+04
+2.7923417e+06 1.2905868e+04 -7.1434129e+02
+1.8041347e+05 2.2233309e+03 -4.3675620e+01
+1.0332054e+04 1.2732414e+02 -2.6793884e+00
+5.8921476e+02 7.2520125e+00 -1.4136981e-01
+3.0280365e+01 3.7188131e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2471977e+01 1.2522472e-01 1.8312025e-01
+6.3092558e+02 2.4502450e+00 3.6138058e+00
+1.1046652e+04 4.3154256e+01 6.1589624e+01
+1.9265943e+05 7.5552519e+02 1.0465827e+03
+3.0534710e+06 4.5015130e+03 -1.0713614e+03
+7.5664677e+06 8.4651719e+03 -1.2450275e+04
+1.2131250e+07 1.2672687e+04 -3.6753512e+04
+1.5205184e+07 1.6369359e+04 -7.2195392e+04
+1.6549895e+07 1.9126772e+04 -1.1310610e+05
+1.6779426e+07 2.0803899e+04 -1.5241298e+05
+1.6587064e+07 2.1390652e+04 -1.8171242e+05
+1.6271144e+07 2.0894626e+04 -1.9075534e+05
+1.5619140e+07 1.9316548e+04 -1.7068596e+05
+1.4059104e+07 1.6684116e+04 -1.2213556e+05
+1.1092851e+07 1.3127492e+04 -6.1930299e+04
+6.9408062e+06 8.9987733e+03 -1.6844934e+04
+2.8990119e+06 4.9614182e+03 -1.4683310e+03
+1.9196834e+05 8.5742067e+02 -8.7442500e+01
+1.1007087e+04 4.9239623e+01 -5.1815741e+00
+6.2866536e+02 2.8109931e+00 -2.6443601e-01
+3.2356765e+01 1.4437990e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3092161e+01 -1.2522472e-01 2.2371308e-01
+6.4268985e+02 -2.4502449e+00 4.4391223e+00
+1.1247865e+04 -4.3154255e+01 7.6010465e+01
+1.9610957e+05 -7.5552516e+02 1.2944722e+03
+3.0812826e+06 -4.5015127e+03 -9.6666780e+02
+7.6785724e+06 -8.4651712e+03 -1.2802997e+04
+1.2320459e+07 -1.2672684e+04 -3.7944494e+04
+1.5426945e+07 -1.6369356e+04 -7.4503332e+04
+1.6763396e+07 -1.9126769e+04 -1.1662193e+05
+1.6969423e+07 -2.0803896e+04 -1.5704134e+05
+1.6761617e+07 -2.1390648e+04 -1.8716095e+05
+1.6447429e+07 -2.0894622e+04 -1.9647819e+05
+1.5807143e+07 -1.9316544e+04 -1.7588488e+05
+1.4248780e+07 -1.6684113e+04 -1.2598299e+05
+1.1252344e+07 -1.3127490e+04 -6.4034335e+04
+7.0348013e+06 -8.9987722e+03 -1.7604589e+04
+2.9226022e+06 -4.9614181e+03 -1.7647942e+03
+1.9542640e+05 -8.5742063e+02 -1.0479519e+02
+1.1209108e+04 -4.9239618e+01 -6.1810958e+00
+6.4049705e+02 -2.8109929e+00 -3.1388670e-01
+3.2981491e+01 -1.4437988e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2471977e+01 -3.2305815e-01 1.8312026e-01
+6.3092558e+02 -6.3317323e+00 3.6138058e+00
+1.1046652e+04 -1.1177853e+02 6.1589624e+01
+1.9265943e+05 -1.9625660e+03 1.0465827e+03
+3.0534710e+06 -1.1751672e+04 -1.0713619e+03
+7.5664677e+06 -2.2155531e+04 -1.2450275e+04
+1.2131250e+07 -3.3227998e+04 -3.6753509e+04
+1.5205184e+07 -4.2970430e+04 -7.2195390e+04
+1.6549895e+07 -5.0236842e+04 -1.1310610e+05
+1.6779426e+07 -5.4642734e+04 -1.5241298e+05
+1.6587064e+07 -5.6155464e+04 -1.8171242e+05
+1.6271144e+07 -5.4796225e+04 -1.9075534e+05
+1.5619140e+07 -5.0579025e+04 -1.7068596e+05
+1.4059104e+07 -4.3602276e+04 -1.2213556e+05
+1.1092851e+07 -3.4239497e+04 -6.1930300e+04
+6.9408062e+06 -2.3432171e+04 -1.6844934e+04
+2.8990119e+06 -1.2905868e+04 -1.4683310e+03
+1.9196834e+05 -2.2233309e+03 -8.7442492e+01
+1.1007087e+04 -1.2732414e+02 -5.1815742e+00
+6.2866536e+02 -7.2520124e+00 -2.6443598e-01
+3.2356765e+01 -3.7188131e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0408448e+01 -3.9024549e-01 8.2180372e-02
+5.9167169e+02 -7.6640100e+00 1.5477962e+00
+1.0374095e+04 -1.3577016e+02 2.5186122e+01
+1.8113141e+05 -2.3951801e+03 4.1502317e+02
+2.9346786e+06 -1.4495252e+04 -1.3245042e+03
+7.1721962e+06 -2.7487548e+04 -1.1426857e+04
+1.1479462e+07 -4.1383653e+04 -3.3341982e+04
+1.4427913e+07 -5.3634620e+04 -6.5561748e+04
+1.5772930e+07 -6.2755870e+04 -1.0295543e+05
+1.6056470e+07 -6.8238559e+04 -1.3900075e+05
+1.5904428e+07 -7.0033572e+04 -1.6588661e+05
+1.5588484e+07 -6.8174269e+04 -1.7412346e+05
+1.4916986e+07 -6.2711080e+04 -1.5560036e+05
+1.3375719e+07 -5.3835860e+04 -1.1102116e+05
+1.0527724e+07 -4.2099443e+04 -5.5917272e+04
+6.5991223e+06 -2.8717556e+04 -1.4748940e+04
+2.7923417e+06 -1.5790143e+04 -7.1434150e+02
+1.8041347e+05 -2.7046153e+03 -4.3675618e+01
+1.0332054e+04 -1.5416334e+02 -2.6793881e+00
+5.8921476e+02 -8.7508551e+00 -1.4136980e-01
+3.0280365e+01 -4.4786856e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6466409e+01 -3.1911067e-01 -2.5375364e-02
+5.1623192e+02 -6.2571355e+00 -6.8017881e-01
+9.0753629e+03 -1.1093736e+02 -1.4703375e+01
+1.5882429e+05 -1.9643385e+03 -2.8977660e+02
+2.6379014e+06 -1.2106517e+04 -1.5551897e+03
+6.3557766e+06 -2.3218866e+04 -9.8294095e+03
+1.0161577e+07 -3.5189723e+04 -2.8167453e+04
+1.2820634e+07 -4.5744025e+04 -5.5431998e+04
+1.4093032e+07 -5.3540127e+04 -8.7311146e+04
+1.4416068e+07 -5.8122745e+04 -1.1817013e+05
+1.4312501e+07 -5.9456877e+04 -1.4118819e+05
+1.4012314e+07 -5.7589416e+04 -1.4813409e+05
+1.3355955e+07 -5.2615744e+04 -1.3209444e+05
+1.1916882e+07 -4.4810211e+04 -9.3847332e+04
+9.3460274e+06 -3.4777916e+04 -4.6817433e+04
+5.8647732e+06 -2.3607023e+04 -1.1806581e+04
+2.5142245e+06 -1.2969372e+04 1.2901662e+02
+1.5806254e+05 -2.2081686e+03 4.4989953e+00
+9.0296732e+03 -1.2540411e+02 3.7253413e-02
+5.1350355e+02 -7.1128084e+00 -9.0920447e-03
+2.6321304e+01 -3.6462560e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0476890e+01 -1.7809149e-01 -8.1877498e-02
+4.0058688e+02 -3.4337823e+00 -1.8614850e+00
+7.0691383e+03 -6.0027403e+01 -3.6293769e+01
+1.2419922e+05 -1.0545289e+03 -6.8335600e+02
+2.0910561e+06 -6.7074115e+03 -1.5490203e+03
+5.0144800e+06 -1.3178411e+04 -7.8021757e+03
+8.0296855e+06 -2.0223695e+04 -2.1893821e+04
+1.0170453e+07 -2.6390493e+04 -4.3041226e+04
+1.1227956e+07 -3.0824298e+04 -6.7920738e+04
+1.1523518e+07 -3.3263686e+04 -9.2067794e+04
+1.1455826e+07 -3.3716497e+04 -1.1003010e+05
+1.1203047e+07 -3.2236432e+04 -1.1529159e+05
+1.0644315e+07 -2.8945266e+04 -1.0250339e+05
+9.4570535e+06 -2.4156475e+04 -7.2463548e+04
+7.3874720e+06 -1.8414186e+04 -3.5798945e+04
+4.6272448e+06 -1.2404156e+04 -8.6363188e+03
+1.9909465e+06 -6.8697200e+03 6.1801088e+02
+1.2340643e+05 -1.1773558e+03 3.1790251e+01
+7.0209844e+03 -6.7376494e+01 1.5561723e+00
+3.9768692e+02 -3.8757437e+00 6.4605193e-02
+2.0321513e+01 -2.0208238e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3141673e+01 -6.1258033e-02 -6.8768454e-02
+2.5723593e+02 -1.1003121e+00 -1.5466819e+00
+4.5566175e+03 -1.7792038e+01 -3.0110893e+01
+8.0624101e+04 -2.9091286e+02 -5.7274369e+02
+1.3407609e+06 -1.9738315e+03 -1.2049151e+03
+3.2709360e+06 -4.1781167e+03 -5.5386555e+03
+5.2734718e+06 -6.6456772e+03 -1.5252026e+04
+6.6969709e+06 -8.7466575e+03 -2.9825133e+04
+7.3941610e+06 -1.0113997e+04 -4.6967671e+04
+7.5795800e+06 -1.0660802e+04 -6.3561366e+04
+7.5250305e+06 -1.0407258e+04 -7.5796766e+04
+7.3535631e+06 -9.3831498e+03 -7.9180115e+04
+6.9836245e+06 -7.7089119e+03 -7.0119531e+04
+6.1967619e+06 -5.7169017e+03 -4.9328295e+04
+4.8239953e+06 -3.8908979e+03 -2.4208498e+04
+2.9987446e+06 -2.5521965e+03 -5.7258457e+03
+1.2674794e+06 -1.5847226e+03 5.3840737e+02
+7.9878746e+04 -3.1685251e+02 2.7595910e+01
+4.5117319e+03 -1.9504157e+01 1.3690910e+00
+2.5455721e+02 -1.2167392e+00 5.8498220e-02
+1.2998942e+01 -6.8308753e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.2098331e+00 -1.1320338e-02 -2.5646314e-02
+1.1914360e+02 -1.5864094e-01 -5.5662704e-01
+2.0863311e+03 -1.7378309e+00 -1.0460264e+01
+3.7364906e+04 -1.5657558e+01 -1.9312015e+02
+6.0597893e+05 -1.7733221e+02 -6.7748359e+02
+1.5726574e+06 -5.7529407e+02 -3.2915924e+03
+2.5777104e+06 -1.0957099e+03 -8.9313686e+03
+3.2725673e+06 -1.5330269e+03 -1.7261999e+04
+3.5828879e+06 -1.7373347e+03 -2.6958792e+04
+3.6343226e+06 -1.6459759e+03 -3.6241288e+04
+3.5837019e+06 -1.2171417e+03 -4.2964209e+04
+3.5023736e+06 -4.2124342e+02 -4.4638388e+04
+3.3438290e+06 6.3382036e+02 -3.9330459e+04
+2.9820968e+06 1.5738029e+03 -2.7548968e+04
+2.3168539e+06 1.8734018e+03 -1.3502276e+04
+1.4134474e+06 1.3132501e+03 -3.2656485e+03
+5.6065902e+05 4.0832978e+02 1.6076772e+02
+3.6824809e+04 -4.2952310e+00 8.2319888e+00
+2.0549283e+03 -1.3807014e+00 4.1156752e-01
+1.1729540e+02 -1.5338762e-01 1.7782497e-02
+6.1114922e+00 -1.1737100e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.7439792e+00 -1.6878167e-03 -2.7237580e-03
+2.8505246e+01 -2.0125641e-02 -4.5152637e-02
+3.8680569e+02 -1.8284090e-01 -5.6326753e-01
+4.5864989e+03 -1.4463319e+00 -6.0626328e+00
+4.1125584e+04 -1.1375875e+01 -1.3792557e+02
+9.5174802e+04 -3.4746087e+01 -6.6004420e+02
+1.5105547e+05 -6.5669875e+01 -1.7262671e+03
+1.9404691e+05 -9.2192567e+01 -3.2653911e+03
+2.1918185e+05 -1.0506111e+02 -5.0299399e+03
+2.2962609e+05 -9.9830626e+01 -6.6875491e+03
+2.3053174e+05 -7.3784305e+01 -7.8427465e+03
+2.2441991e+05 -2.6049475e+01 -8.0555003e+03
+2.0979839e+05 3.5494698e+01 -7.0130351e+03
+1.8271744e+05 8.8199232e+01 -4.8570888e+03
+1.4091841e+05 1.0300202e+02 -2.3710516e+03
+8.8918464e+04 7.0758213e+01 -6.1190291e+02
+3.9093168e+04 2.2529009e+01 -1.9211289e+01
+4.4342239e+03 4.3544784e-01 -8.8757360e-01
+3.7615041e+02 -8.7555197e-02 -4.0784378e-02
+2.7791498e+01 -1.6124271e-02 -1.7395095e-03
+1.7024404e+00 -1.5797624e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.3270935e-01 -2.1720717e-04 -1.1902761e-04
+4.5432422e+00 -2.3063080e-03 -2.3806441e-03
+4.7842674e+01 -1.8240822e-02 -3.8679446e-02
+4.0570356e+02 -1.2406468e-01 -5.9272345e-01
+2.3420669e+03 -7.2736924e-01 -8.7712763e+00
+5.4192856e+03 -2.0888637e+00 -3.8876056e+01
+8.6451788e+03 -3.9039369e+00 -1.0025191e+02
+1.1157753e+04 -5.4945426e+00 -1.8953149e+02
+1.2646781e+04 -6.2958373e+00 -2.9261016e+02
+1.3274076e+04 -6.0061742e+00 -3.8943730e+02
+1.3330889e+04 -4.4563978e+00 -4.5580378e+02
+1.2964624e+04 -1.6461302e+00 -4.6577315e+02
+1.2092085e+04 1.8854540e+00 -4.0264799e+02
+1.0492783e+04 4.8003241e+00 -2.7726548e+02
+8.0531805e+03 5.5312098e+00 -1.3617005e+02
+5.0503101e+03 3.7490763e+00 -3.7720396e+01
+2.2100656e+03 1.2332834e+00 -2.9825581e+00
+3.8752746e+02 6.6452545e-02 -2.3645970e-01
+4.6010877e+01 -4.5633585e-03 -1.7881810e-02
+4.3863556e+00 -1.5078568e-03 -1.1030149e-03
+3.2194134e-01 -1.8163595e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.7867701e-02 -2.0189567e-05 5.9661440e-06
+5.5525243e-01 -1.9671805e-04 -1.0702002e-04
+4.7068504e+00 -1.3933246e-03 -3.5437087e-03
+3.0862589e+01 -8.2802415e-03 -5.4833778e-02
+1.3615853e+02 -3.9687256e-02 -5.5778811e-01
+3.0851893e+02 -1.0804942e-01 -2.2895881e+00
+4.9286012e+02 -1.9955583e-01 -5.8022853e+00
+6.3875468e+02 -2.8121157e-01 -1.0947611e+01
+7.2662552e+02 -3.2366042e-01 -1.6928372e+01
+7.6429093e+02 -3.0997469e-01 -2.2545792e+01
+7.6792242e+02 -2.3129670e-01 -2.6335838e+01
+7.4601417e+02 -8.9775480e-02 -2.6786072e+01
+6.9402768e+02 8.4386236e-02 -2.3020064e+01
+5.9991407e+02 2.2390896e-01 -1.5803704e+01
+4.5837492e+02 2.5612163e-01 -7.8560103e+00
+2.8671488e+02 1.7239012e-01 -2.3513983e+00
+1.2765930e+02 5.8689950e-02 -2.9972266e-01
+2.9210196e+01 5.0172967e-03 -3.2218425e-02
+4.4840869e+00 -1.6508624e-04 -3.1049625e-03
+5.3128066e-01 -1.0796264e-04 -2.2967221e-04
+4.5927434e-02 -1.5284635e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.8065799e-03 0.0000000e+00 1.1551000e-06
+4.9152120e-02 0.0000000e+00 -8.3692660e-06
+3.5368212e-01 0.0000000e+00 -3.1366227e-04
+1.9314250e+00 0.0000000e+00 -4.0588506e-03
+7.2029691e+00 0.0000000e+00 -3.1688818e-02
+1.5889396e+01 0.0000000e+00 -1.2153117e-01
+2.5341677e+01 0.0000000e+00 -3.0249960e-01
+3.2942995e+01 0.0000000e+00 -5.6897386e-01
+3.7595015e+01 0.0000000e+00 -8.8045783e-01
+3.9623946e+01 0.0000000e+00 -1.1729662e+00
+3.9831942e+01 0.0000000e+00 -1.3676924e+00
+3.8656199e+01 0.0000000e+00 -1.3857572e+00
+3.5875955e+01 0.0000000e+00 -1.1858371e+00
+3.0904063e+01 0.0000000e+00 -8.1363951e-01
+2.3532590e+01 0.0000000e+00 -4.1052702e-01
+1.4727977e+01 0.0000000e+00 -1.3182401e-01
+6.7180525e+00 0.0000000e+00 -2.2241125e-02
+1.8151992e+00 0.0000000e+00 -2.9438677e-03
+3.3443545e-01 0.0000000e+00 -3.3302702e-04
+4.6687079e-02 0.0000000e+00 -2.7724611e-05
+4.5794343e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.7757460e-03 2.4170446e-05 6.6634054e-06
+4.8872085e-02 2.2643128e-04 6.0267555e-05
+3.5195825e-01 1.4723995e-03 3.1173295e-04
+1.9235663e+00 7.4281468e-03 7.4233513e-04
+7.1789662e+00 2.7948252e-02 -3.2030383e-03
+1.5846424e+01 7.5333548e-02 -3.5564224e-02
+2.5289800e+01 1.5968479e-01 -1.4337207e-01
+3.2896627e+01 2.6766753e-01 -3.6467173e-01
+3.7560716e+01 3.6197591e-01 -6.9234820e-01
+3.9594281e+01 3.9895951e-01 -1.0616435e+00
+3.9786878e+01 3.4487730e-01 -1.3614567e+00
+3.8571231e+01 1.9200399e-01 -1.4684928e+00
+3.5736790e+01 -2.1330531e-02 -1.3079972e+00
+3.0722737e+01 -2.0624657e-01 -9.2042446e-01
+2.3350925e+01 -2.6682541e-01 -4.7193472e-01
+1.4595219e+01 -1.8591308e-01 -1.5326394e-01
+6.6536359e+00 -6.2609939e-02 -2.6237457e-02
+1.7968692e+00 -4.3639759e-03 -3.5434789e-03
+3.3083215e-01 4.6969061e-04 -4.0986918e-04
+4.6146367e-02 1.6561646e-04 -3.4773914e-05
+4.5228815e-03 2.1778887e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.7578893e-02 2.6517870e-04 4.7799773e-05
+5.5231110e-01 2.7180434e-03 4.9752416e-04
+4.6858758e+00 1.9833297e-02 3.1111964e-03
+3.0750721e+01 1.1294191e-01 9.4661581e-03
+1.3576991e+02 4.7102416e-01 -4.4984658e-02
+3.0782583e+02 1.3481848e+00 -6.2473505e-01
+4.9207485e+02 2.9902301e+00 -2.6700118e+00
+6.3814697e+02 5.1306284e+00 -6.9252644e+00
+7.2629740e+02 7.0084561e+00 -1.3243627e+01
+7.6407843e+02 7.7574202e+00 -2.0389596e+01
+7.6742845e+02 6.7051831e+00 -2.6255936e+01
+7.4475349e+02 3.6576505e+00 -2.8460907e+01
+6.9169667e+02 -6.8177952e-01 -2.5469454e+01
+5.9670773e+02 -4.5362258e+00 -1.7933130e+01
+4.5508267e+02 -5.8498640e+00 -9.0578474e+00
+2.8430956e+02 -4.0967642e+00 -2.7416704e+00
+1.2654585e+02 -1.3350354e+00 -3.5579456e-01
+2.8943719e+01 -5.4435768e-02 -3.9246218e-02
+4.4401680e+00 9.0313169e-03 -3.8889392e-03
+5.2562949e-01 2.2222821e-03 -2.9443521e-04
+4.5401354e-02 2.5342457e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.3083219e-01 2.1181686e-03 2.4175621e-05
+4.5209463e+00 2.4585769e-02 4.5229530e-04
+4.7648115e+01 2.0926586e-01 5.5780513e-03
+4.0440115e+02 1.3915697e+00 2.9359757e-02
+2.3365194e+03 6.5072466e+00 -4.5938377e-01
+5.4095990e+03 2.0210455e+01 -9.6351367e+00
+8.6353399e+03 4.7684412e+01 -4.4490422e+01
+1.1152231e+04 8.4244222e+01 -1.1808249e+02
+1.2646870e+04 1.1643277e+02 -2.2759611e+02
+1.3276578e+04 1.2953556e+02 -3.5187663e+02
+1.3328782e+04 1.1213303e+02 -4.5519797e+02
+1.2949324e+04 6.0119814e+01 -4.9635982e+02
+1.2057837e+04 -1.5789913e+01 -4.4700367e+02
+1.0442253e+04 -8.5311416e+01 -3.1569766e+02
+7.9996822e+03 -1.1053509e+02 -1.5751414e+02
+5.0111499e+03 -7.8329023e+01 -4.4121691e+01
+2.1929328e+03 -2.4746823e+01 -3.5771056e+00
+3.8441634e+02 -2.2620708e-01 -2.9420902e-01
+4.5609773e+01 1.3908417e-01 -2.3157521e-02
+4.3442283e+00 2.2670865e-02 -1.4788531e-03
+3.1857024e-01 2.1456701e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7346930e+00 1.4659238e-02 -3.2549099e-03
+2.8373152e+01 2.0268745e-01 -4.9262477e-02
+3.8532103e+02 2.1430125e+00 -4.9835225e-01
+4.5728297e+03 1.7200784e+01 -2.6384573e+00
+4.1045193e+04 8.5883334e+01 -1.6239674e+00
+9.5041144e+04 2.9629094e+02 -1.4404706e+02
+1.5094083e+05 7.5335705e+02 -7.3508499e+02
+1.9402419e+05 1.3734892e+03 -2.0016050e+03
+2.1926560e+05 1.9199765e+03 -3.8888985e+03
+2.2975630e+05 2.1472989e+03 -6.0368625e+03
+2.3058653e+05 1.8662081e+03 -7.8457311e+03
+2.2424988e+05 9.9437375e+02 -8.6099570e+03
+2.0929711e+05 -3.1244057e+02 -7.8120322e+03
+1.8191897e+05 -1.5497642e+03 -5.5491046e+03
+1.4004542e+05 -2.0350758e+03 -2.7515818e+03
+8.8276630e+04 -1.4699829e+03 -7.1809442e+02
+3.8828126e+04 -4.5418804e+02 -2.3611345e+01
+4.4033991e+03 8.1649760e+00 -1.1776598e+00
+3.7324067e+02 1.9320937e+00 -6.0923937e-02
+2.7550120e+01 2.0608887e-01 -2.9641061e-03
+1.6861093e+00 1.5512591e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.1784235e+00 8.1460524e-02 -3.5391685e-02
+1.1860763e+02 1.4657646e+00 -7.6249098e-01
+2.0782188e+03 2.3752466e+01 -1.4259563e+01
+3.7241532e+04 3.8934160e+02 -2.6302650e+02
+6.0349792e+05 2.5188203e+03 -2.1495844e+02
+1.5685609e+06 5.1630311e+03 -9.8519465e+02
+2.5736448e+06 8.2403057e+03 -4.4065720e+03
+3.2702084e+06 1.1099174e+04 -1.1773283e+04
+3.5825200e+06 1.3218749e+04 -2.2704138e+04
+3.6345638e+06 1.4316639e+04 -3.5114708e+04
+3.5818046e+06 1.4272995e+04 -4.5624107e+04
+3.4949084e+06 1.3071172e+04 -5.0235773e+04
+3.3282997e+06 1.0879709e+04 -4.5898673e+04
+2.9594217e+06 8.1620719e+03 -3.2935435e+04
+2.2927902e+06 5.5799365e+03 -1.6486753e+04
+1.3960278e+06 3.6009945e+03 -4.1381600e+03
+5.5372382e+05 2.1516732e+03 1.9117537e+02
+3.6600167e+04 4.1448913e+02 9.4930214e+00
+2.0404535e+03 2.5445371e+01 4.5447957e-01
+1.1635519e+02 1.5821785e+00 1.8596158e-02
+6.0570733e+00 8.8527580e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3081825e+01 2.3840910e-01 -9.7100951e-02
+2.5616608e+02 4.6071959e+00 -2.1686811e+00
+4.5394598e+03 8.0733938e+01 -4.1992457e+01
+8.0346185e+04 1.4214287e+03 -7.9616392e+02
+1.3344368e+06 8.9359334e+03 -8.8919721e+02
+3.2604706e+06 1.7350493e+04 -2.6112355e+03
+5.2617737e+06 2.6602326e+04 -9.2751519e+03
+6.6870021e+06 3.4922482e+04 -2.3129677e+04
+7.3864597e+06 4.1138691e+04 -4.3348398e+04
+7.5718756e+06 4.4735556e+04 -6.6062882e+04
+7.5128063e+06 4.5572437e+04 -8.5138163e+04
+7.3312124e+06 4.3661893e+04 -9.3378225e+04
+6.9472192e+06 3.9182862e+04 -8.5276101e+04
+6.1484043e+06 3.2603930e+04 -6.1360327e+04
+4.7743921e+06 2.4718366e+04 -3.0895565e+04
+2.9626943e+06 1.6520814e+04 -7.7650302e+03
+1.2521504e+06 9.0651114e+03 6.5060759e+02
+7.9375316e+04 1.5359688e+03 3.2558136e+01
+4.4805542e+03 8.7616222e+01 1.5649607e+00
+2.5261710e+02 5.0228695e+00 6.4377442e-02
+1.2890797e+01 2.6105026e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0406976e+01 4.2811414e-01 -1.1979176e-01
+3.9935291e+02 8.4135450e+00 -2.6921694e+00
+7.0496808e+03 1.4952666e+02 -5.2027432e+01
+1.2388955e+05 2.6535639e+03 -9.7448657e+02
+2.0841351e+06 1.6280143e+04 -1.3976815e+03
+5.0038203e+06 3.1007785e+04 -4.3953037e+03
+8.0197540e+06 4.6931743e+04 -1.4793220e+04
+1.0165175e+07 6.1148879e+04 -3.5741417e+04
+1.1227375e+07 7.1831842e+04 -6.5853419e+04
+1.1523569e+07 7.8218078e+04 -9.9387431e+04
+1.1449300e+07 8.0121976e+04 -1.2741148e+05
+1.1181217e+07 7.7557234e+04 -1.3947688e+05
+1.0600843e+07 7.0682933e+04 -1.2750577e+05
+9.3943258e+06 5.9946479e+04 -9.2120580e+04
+7.3206046e+06 4.6268650e+04 -4.6803406e+04
+4.5778775e+06 3.1213291e+04 -1.2128513e+04
+1.9701197e+06 1.7048661e+04 7.1468403e+02
+1.2274120e+05 2.8804328e+03 3.5454491e+01
+6.9793996e+03 1.6300828e+02 1.6472180e+00
+3.9508119e+02 9.2120400e+00 6.3774736e-02
+2.0175697e+01 4.7064055e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6418809e+01 5.2400905e-01 -4.8294189e-02
+5.1546951e+02 1.0314981e+01 -1.1873162e+00
+9.0648399e+03 1.8318861e+02 -2.4326351e+01
+1.5868018e+05 3.2394769e+03 -4.6613589e+02
+2.6355109e+06 1.9564261e+04 -1.3596808e+03
+6.3542706e+06 3.6906913e+04 -5.7527902e+03
+1.0167045e+07 5.5483930e+04 -1.9772535e+04
+1.2837307e+07 7.1982716e+04 -4.7279347e+04
+1.4119514e+07 8.4384413e+04 -8.6312961e+04
+1.4445574e+07 9.1882992e+04 -1.2948351e+05
+1.4334312e+07 9.4302612e+04 -1.6547583e+05
+1.4013787e+07 9.1655108e+04 -1.8104729e+05
+1.3327363e+07 8.4048030e+04 -1.6582010e+05
+1.1859540e+07 7.1829664e+04 -1.2036153e+05
+9.2778670e+06 5.5864231e+04 -6.1796647e+04
+5.8130424e+06 3.7892821e+04 -1.6745375e+04
+2.4937508e+06 2.0735206e+04 4.1709254e+01
+1.5745905e+05 3.5279630e+03 -2.3331955e+00
+8.9904669e+03 2.0034953e+02 -4.6817089e-01
+5.1095738e+02 1.1329393e+01 -3.9360249e-02
+2.6174775e+01 5.7780924e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0405027e+01 4.3394776e-01 9.3482068e-02
+5.9179335e+02 8.5254861e+00 1.7613232e+00
+1.0379460e+04 1.5089683e+02 2.8688447e+01
+1.8126919e+05 2.6561202e+03 4.7426473e+02
+2.9397168e+06 1.5888753e+04 -8.8842411e+02
+7.1849081e+06 2.9820405e+04 -6.5138674e+03
+1.1507274e+07 4.4655688e+04 -2.3498293e+04
+1.4474808e+07 5.7776063e+04 -5.6187216e+04
+1.5835637e+07 6.7623618e+04 -1.0213393e+05
+1.6125322e+07 7.3602074e+04 -1.5270438e+05
+1.5965262e+07 7.5597773e+04 -1.9483316e+05
+1.5624889e+07 7.3621677e+04 -2.1320423e+05
+1.4915766e+07 6.7725903e+04 -1.9566176e+05
+1.3336397e+07 5.8114463e+04 -1.4262401e+05
+1.0469499e+07 4.5387735e+04 -7.3922279e+04
+6.5530724e+06 3.0893323e+04 -2.0872912e+04
+2.7763463e+06 1.6939997e+04 -1.0823181e+03
+1.8002586e+05 2.8998104e+03 -6.6558793e+01
+1.0304506e+04 1.6542972e+02 -4.0918157e+00
+5.8728249e+02 9.3857590e+00 -2.1591285e-01
+3.0162679e+01 4.7958283e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2509845e+01 1.6822760e-01 2.2785184e-01
+6.3185819e+02 3.2996864e+00 4.5210479e+00
+1.1066305e+04 5.8268730e+01 7.7496262e+01
+1.9304617e+05 1.0228064e+03 1.3240739e+03
+3.0649648e+06 6.0905537e+03 -3.7155782e+02
+7.5913376e+06 1.1404938e+04 -6.8260521e+03
+1.2177761e+07 1.7047301e+04 -2.5728699e+04
+1.5276908e+07 2.2025678e+04 -6.1702776e+04
+1.6642038e+07 2.5757708e+04 -1.1198033e+05
+1.6880185e+07 2.8026286e+04 -1.6716346e+05
+1.6679837e+07 2.8794023e+04 -2.1313267e+05
+1.6336879e+07 2.8065823e+04 -2.3331191e+05
+1.5642129e+07 2.5855554e+04 -2.1443012e+05
+1.4037321e+07 2.2227656e+04 -1.5675994e+05
+1.1045855e+07 1.7394425e+04 -8.1771413e+04
+6.9017972e+06 1.1859955e+04 -2.3729018e+04
+2.8877898e+06 6.5108184e+03 -2.0777223e+03
+1.9179653e+05 1.1181681e+03 -1.2426615e+02
+1.0991674e+04 6.3964868e+01 -7.3875918e+00
+6.2740415e+02 3.6372744e+00 -3.7789212e-01
+3.2272308e+01 1.8614799e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3146560e+01 -1.6822760e-01 2.8205658e-01
+6.4394453e+02 -3.2996863e+00 5.6267443e+00
+1.1273143e+04 -5.8268728e+01 9.6885813e+01
+1.9659352e+05 -1.0228064e+03 1.6585544e+03
+3.0952780e+06 -6.0905533e+03 -1.5568563e+02
+7.7081266e+06 -1.1404936e+04 -6.9000018e+03
+1.2374117e+07 -1.7047299e+04 -2.6463269e+04
+1.5508092e+07 -2.2025676e+04 -6.3559127e+04
+1.6866660e+07 -2.5757702e+04 -1.1530794e+05
+1.7082222e+07 -2.8026279e+04 -1.7205506e+05
+1.6866480e+07 -2.8794019e+04 -2.1933006e+05
+1.6524366e+07 -2.8065816e+04 -2.4013521e+05
+1.5839539e+07 -2.5855551e+04 -2.2081993e+05
+1.4234013e+07 -2.2227653e+04 -1.6159772e+05
+1.1210020e+07 -1.7394423e+04 -8.4484873e+04
+6.9987848e+06 -1.1859953e+04 -2.4748486e+04
+2.9133430e+06 -6.5108181e+03 -2.4676480e+03
+1.9534214e+05 -1.1181681e+03 -1.4704939e+02
+1.1198686e+04 -6.3964865e+01 -8.6979114e+00
+6.3951633e+02 -3.6372743e+00 -4.4264297e-01
+3.2911144e+01 -1.8614797e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2509845e+01 -4.3394776e-01 2.2785184e-01
+6.3185819e+02 -8.5254862e+00 4.5210481e+00
+1.1066305e+04 -1.5089683e+02 7.7496266e+01
+1.9304617e+05 -2.6561202e+03 1.3240739e+03
+3.0649648e+06 -1.5888753e+04 -3.7155798e+02
+7.5913376e+06 -2.9820405e+04 -6.8260496e+03
+1.2177761e+07 -4.4655688e+04 -2.5728695e+04
+1.5276908e+07 -5.7776058e+04 -6.1702780e+04
+1.6642038e+07 -6.7623612e+04 -1.1198033e+05
+1.6880185e+07 -7.3602070e+04 -1.6716346e+05
+1.6679837e+07 -7.5597764e+04 -2.1313267e+05
+1.6336879e+07 -7.3621674e+04 -2.3331191e+05
+1.5642129e+07 -6.7725900e+04 -2.1443012e+05
+1.4037321e+07 -5.8114461e+04 -1.5675994e+05
+1.1045855e+07 -4.5387733e+04 -8.1771415e+04
+6.9017972e+06 -3.0893323e+04 -2.3729018e+04
+2.8877898e+06 -1.6939997e+04 -2.0777224e+03
+1.9179653e+05 -2.8998103e+03 -1.2426615e+02
+1.0991674e+04 -1.6542972e+02 -7.3875919e+00
+6.2740415e+02 -9.3857587e+00 -3.7789210e-01
+3.2272308e+01 -4.7958281e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0405027e+01 -5.2400905e-01 9.3482061e-02
+5.9179335e+02 -1.0314981e+01 1.7613231e+00
+1.0379460e+04 -1.8318861e+02 2.8688453e+01
+1.8126919e+05 -3.2394768e+03 4.7426474e+02
+2.9397168e+06 -1.9564261e+04 -8.8842169e+02
+7.1849081e+06 -3.6906912e+04 -6.5138662e+03
+1.1507274e+07 -5.5483928e+04 -2.3498289e+04
+1.4474808e+07 -7.1982713e+04 -5.6187215e+04
+1.5835637e+07 -8.4384414e+04 -1.0213393e+05
+1.6125322e+07 -9.1882991e+04 -1.5270438e+05
+1.5965262e+07 -9.4302607e+04 -1.9483316e+05
+1.5624889e+07 -9.1655106e+04 -2.1320423e+05
+1.4915766e+07 -8.4048027e+04 -1.9566176e+05
+1.3336397e+07 -7.1829661e+04 -1.4262401e+05
+1.0469499e+07 -5.5864230e+04 -7.3922279e+04
+6.5530724e+06 -3.7892821e+04 -2.0872911e+04
+2.7763463e+06 -2.0735206e+04 -1.0823182e+03
+1.8002586e+05 -3.5279629e+03 -6.6558801e+01
+1.0304506e+04 -2.0034953e+02 -4.0918156e+00
+5.8728250e+02 -1.1329393e+01 -2.1591280e-01
+3.0162679e+01 -5.7780924e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6418809e+01 -4.2811414e-01 -4.8294190e-02
+5.1546951e+02 -8.4135451e+00 -1.1873162e+00
+9.0648399e+03 -1.4952666e+02 -2.4326344e+01
+1.5868018e+05 -2.6535638e+03 -4.6613554e+02
+2.6355109e+06 -1.6280142e+04 -1.3596797e+03
+6.3542706e+06 -3.1007785e+04 -5.7527888e+03
+1.0167045e+07 -4.6931743e+04 -1.9772532e+04
+1.2837307e+07 -6.1148880e+04 -4.7279346e+04
+1.4119514e+07 -7.1831842e+04 -8.6312961e+04
+1.4445574e+07 -7.8218075e+04 -1.2948351e+05
+1.4334312e+07 -8.0121974e+04 -1.6547583e+05
+1.4013787e+07 -7.7557230e+04 -1.8104729e+05
+1.3327363e+07 -7.0682930e+04 -1.6582010e+05
+1.1859540e+07 -5.9946477e+04 -1.2036153e+05
+9.2778670e+06 -4.6268648e+04 -6.1796647e+04
+5.8130424e+06 -3.1213291e+04 -1.6745375e+04
+2.4937508e+06 -1.7048661e+04 4.1709311e+01
+1.5745905e+05 -2.8804328e+03 -2.3331999e+00
+8.9904669e+03 -1.6300828e+02 -4.6817112e-01
+5.1095738e+02 -9.2120399e+00 -3.9360245e-02
+2.6174775e+01 -4.7064055e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0406976e+01 -2.3840909e-01 -1.1979179e-01
+3.9935291e+02 -4.6071959e+00 -2.6921694e+00
+7.0496808e+03 -8.0733933e+01 -5.2027403e+01
+1.2388955e+05 -1.4214287e+03 -9.7448642e+02
+2.0841351e+06 -8.9359332e+03 -1.3976812e+03
+5.0038203e+06 -1.7350492e+04 -4.3953035e+03
+8.0197540e+06 -2.6602325e+04 -1.4793219e+04
+1.0165175e+07 -3.4922481e+04 -3.5741416e+04
+1.1227375e+07 -4.1138690e+04 -6.5853418e+04
+1.1523569e+07 -4.4735556e+04 -9.9387430e+04
+1.1449300e+07 -4.5572436e+04 -1.2741148e+05
+1.1181217e+07 -4.3661893e+04 -1.3947688e+05
+1.0600843e+07 -3.9182861e+04 -1.2750577e+05
+9.3943258e+06 -3.2603927e+04 -9.2120580e+04
+7.3206046e+06 -2.4718365e+04 -4.6803406e+04
+4.5778775e+06 -1.6520814e+04 -1.2128514e+04
+1.9701197e+06 -9.0651113e+03 7.1468405e+02
+1.2274120e+05 -1.5359688e+03 3.5454490e+01
+6.9793996e+03 -8.7616222e+01 1.6472179e+00
+3.9508119e+02 -5.0228694e+00 6.3774729e-02
+2.0175697e+01 -2.6105026e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3081825e+01 -8.1460523e-02 -9.7100988e-02
+2.5616608e+02 -1.4657644e+00 -2.1686801e+00
+4.5394598e+03 -2.3752466e+01 -4.1992451e+01
+8.0346185e+04 -3.8934159e+02 -7.9616388e+02
+1.3344368e+06 -2.5188203e+03 -8.8919707e+02
+3.2604706e+06 -5.1630311e+03 -2.6112351e+03
+5.2617737e+06 -8.2403054e+03 -9.2751515e+03
+6.6870021e+06 -1.1099175e+04 -2.3129677e+04
+7.3864597e+06 -1.3218749e+04 -4.3348398e+04
+7.5718756e+06 -1.4316638e+04 -6.6062882e+04
+7.5128063e+06 -1.4272993e+04 -8.5138162e+04
+7.3312124e+06 -1.3071171e+04 -9.3378227e+04
+6.9472192e+06 -1.0879708e+04 -8.5276100e+04
+6.1484043e+06 -8.1620719e+03 -6.1360328e+04
+4.7743921e+06 -5.5799363e+03 -3.0895565e+04
+2.9626943e+06 -3.6009944e+03 -7.7650304e+03
+1.2521504e+06 -2.1516732e+03 6.5060756e+02
+7.9375316e+04 -4.1448913e+02 3.2558136e+01
+4.4805542e+03 -2.5445371e+01 1.5649608e+00
+2.5261710e+02 -1.5821784e+00 6.4377442e-02
+1.2890797e+01 -8.8527580e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.1784235e+00 -1.4659237e-02 -3.5391683e-02
+1.1860763e+02 -2.0268743e-01 -7.6249084e-01
+2.0782188e+03 -2.1430125e+00 -1.4259562e+01
+3.7241532e+04 -1.7200785e+01 -2.6302649e+02
+6.0349792e+05 -8.5883344e+01 -2.1495847e+02
+1.5685609e+06 -2.9629095e+02 -9.8519445e+02
+2.5736448e+06 -7.5335707e+02 -4.4065722e+03
+3.2702084e+06 -1.3734891e+03 -1.1773283e+04
+3.5825200e+06 -1.9199764e+03 -2.2704137e+04
+3.6345638e+06 -2.1472988e+03 -3.5114708e+04
+3.5818046e+06 -1.8662082e+03 -4.5624108e+04
+3.4949084e+06 -9.9437369e+02 -5.0235774e+04
+3.3282997e+06 3.1244056e+02 -4.5898673e+04
+2.9594217e+06 1.5497638e+03 -3.2935435e+04
+2.2927902e+06 2.0350757e+03 -1.6486753e+04
+1.3960278e+06 1.4699829e+03 -4.1381601e+03
+5.5372383e+05 4.5418804e+02 1.9117537e+02
+3.6600167e+04 -8.1649760e+00 9.4930212e+00
+2.0404535e+03 -1.9320937e+00 4.5447956e-01
+1.1635519e+02 -2.0608887e-01 1.8596157e-02
+6.0570733e+00 -1.5512591e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.7346930e+00 -2.1181686e-03 -3.2549091e-03
+2.8373152e+01 -2.4585769e-02 -4.9262472e-02
+3.8532103e+02 -2.0926586e-01 -4.9835217e-01
+4.5728297e+03 -1.3915697e+00 -2.6384563e+00
+4.1045193e+04 -6.5072470e+00 -1.6239664e+00
+9.5041144e+04 -2.0210455e+01 -1.4404705e+02
+1.5094083e+05 -4.7684414e+01 -7.3508497e+02
+1.9402419e+05 -8.4244224e+01 -2.0016050e+03
+2.1926560e+05 -1.1643277e+02 -3.8888984e+03
+2.2975630e+05 -1.2953556e+02 -6.0368625e+03
+2.3058653e+05 -1.1213304e+02 -7.8457312e+03
+2.2424988e+05 -6.0119815e+01 -8.6099570e+03
+2.0929711e+05 1.5789913e+01 -7.8120323e+03
+1.8191897e+05 8.5311422e+01 -5.5491045e+03
+1.4004542e+05 1.1053509e+02 -2.7515818e+03
+8.8276630e+04 7.8329022e+01 -7.1809442e+02
+3.8828126e+04 2.4746823e+01 -2.3611346e+01
+4.4033991e+03 2.2620712e-01 -1.1776598e+00
+3.7324067e+02 -1.3908416e-01 -6.0923943e-02
+2.7550120e+01 -2.2670864e-02 -2.9641059e-03
+1.6861093e+00 -2.1456701e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.3083219e-01 -2.6517869e-04 2.4175706e-05
+4.5209463e+00 -2.7180433e-03 4.5229557e-04
+4.7648115e+01 -1.9833296e-02 5.5780601e-03
+4.0440115e+02 -1.1294190e-01 2.9359761e-02
+2.3365194e+03 -4.7102416e-01 -4.5938363e-01
+5.4095990e+03 -1.3481848e+00 -9.6351361e+00
+8.6353399e+03 -2.9902300e+00 -4.4490421e+01
+1.1152231e+04 -5.1306292e+00 -1.1808249e+02
+1.2646870e+04 -7.0084563e+00 -2.2759611e+02
+1.3276578e+04 -7.7574202e+00 -3.5187663e+02
+1.3328782e+04 -6.7051832e+00 -4.5519797e+02
+1.2949324e+04 -3.6576507e+00 -4.9635982e+02
+1.2057837e+04 6.8177961e-01 -4.4700367e+02
+1.0442253e+04 4.5362262e+00 -3.1569766e+02
+7.9996822e+03 5.8498640e+00 -1.5751414e+02
+5.0111499e+03 4.0967642e+00 -4.4121691e+01
+2.1929328e+03 1.3350353e+00 -3.5771057e+00
+3.8441634e+02 5.4435766e-02 -2.9420902e-01
+4.5609773e+01 -9.0313175e-03 -2.3157523e-02
+4.3442283e+00 -2.2222821e-03 -1.4788530e-03
+3.1857024e-01 -2.5342457e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.7578893e-02 -2.4170446e-05 4.7799775e-05
+5.5231110e-01 -2.2643128e-04 4.9752418e-04
+4.6858758e+00 -1.4723994e-03 3.1111972e-03
+3.0750721e+01 -7.4281467e-03 9.4661571e-03
+1.3576991e+02 -2.7948251e-02 -4.4984646e-02
+3.0782583e+02 -7.5333545e-02 -6.2473502e-01
+4.9207485e+02 -1.5968479e-01 -2.6700119e+00
+6.3814697e+02 -2.6766752e-01 -6.9252642e+00
+7.2629740e+02 -3.6197593e-01 -1.3243627e+01
+7.6407843e+02 -3.9895952e-01 -2.0389596e+01
+7.6742845e+02 -3.4487729e-01 -2.6255936e+01
+7.4475349e+02 -1.9200399e-01 -2.8460907e+01
+6.9169667e+02 2.1330522e-02 -2.5469455e+01
+5.9670773e+02 2.0624657e-01 -1.7933130e+01
+4.5508267e+02 2.6682541e-01 -9.0578474e+00
+2.8430956e+02 1.8591308e-01 -2.7416704e+00
+1.2654585e+02 6.2609923e-02 -3.5579456e-01
+2.8943719e+01 4.3639749e-03 -3.9246218e-02
+4.4401680e+00 -4.6969070e-04 -3.8889393e-03
+5.2562950e-01 -1.6561646e-04 -2.9443520e-04
+4.5401354e-02 -2.1778887e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.7757460e-03 0.0000000e+00 6.6634063e-06
+4.8872085e-02 0.0000000e+00 6.0267563e-05
+3.5195825e-01 0.0000000e+00 3.1173298e-04
+1.9235663e+00 0.0000000e+00 7.4233522e-04
+7.1789662e+00 0.0000000e+00 -3.2030376e-03
+1.5846424e+01 0.0000000e+00 -3.5564223e-02
+2.5289800e+01 0.0000000e+00 -1.4337207e-01
+3.2896627e+01 0.0000000e+00 -3.6467173e-01
+3.7560716e+01 0.0000000e+00 -6.9234820e-01
+3.9594281e+01 0.0000000e+00 -1.0616435e+00
+3.9786878e+01 0.0000000e+00 -1.3614567e+00
+3.8571231e+01 0.0000000e+00 -1.4684928e+00
+3.5736790e+01 0.0000000e+00 -1.3079972e+00
+3.0722737e+01 0.0000000e+00 -9.2042446e-01
+2.3350925e+01 0.0000000e+00 -4.7193472e-01
+1.4595219e+01 0.0000000e+00 -1.5326395e-01
+6.6536359e+00 0.0000000e+00 -2.6237456e-02
+1.7968692e+00 0.0000000e+00 -3.5434788e-03
+3.3083215e-01 0.0000000e+00 -4.0986918e-04
+4.6146368e-02 0.0000000e+00 -3.4773913e-05
+4.5228815e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.7343156e-03 2.8481089e-05 1.2949354e-05
+4.8488089e-02 2.6005926e-04 1.3688534e-04
+3.4952042e-01 1.5812715e-03 9.9344366e-04
+1.9119674e+00 6.7191549e-03 5.8731336e-03
+7.1415028e+00 1.6459833e-02 2.6876666e-02
+1.5775476e+01 4.2958035e-02 5.4866147e-02
+2.5199871e+01 1.2125912e-01 2.3536202e-02
+3.2812905e+01 2.5794367e-01 -1.5068539e-01
+3.7498034e+01 4.0659104e-01 -4.9459484e-01
+3.9545684e+01 4.9571367e-01 -9.4171073e-01
+3.9726062e+01 4.6672546e-01 -1.3476206e+00
+3.8465396e+01 3.0273802e-01 -1.5445234e+00
+3.5566505e+01 5.0507096e-02 -1.4247461e+00
+3.0501655e+01 -1.7998326e-01 -1.0236813e+00
+2.3129247e+01 -2.7025176e-01 -5.3175065e-01
+1.4432432e+01 -1.9459950e-01 -1.7436433e-01
+6.5738807e+00 -6.4299114e-02 -3.0309987e-02
+1.7739411e+00 -3.1994033e-03 -4.1825175e-03
+3.2629018e-01 8.5448410e-04 -4.9502500e-04
+4.5461369e-02 2.3276733e-04 -4.2793910e-05
+4.4510334e-03 2.9054135e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.7194571e-02 3.1531804e-04 9.7485390e-05
+5.4831546e-01 3.1615429e-03 1.1916383e-03
+4.6564357e+00 2.1723329e-02 1.0489708e-02
+3.0585708e+01 1.0347823e-01 7.8743219e-02
+1.3515233e+02 2.1460792e-01 4.9817190e-01
+3.0663397e+02 6.0107035e-01 1.1319144e+00
+4.9061630e+02 2.0866569e+00 6.2505980e-01
+6.3690713e+02 4.8237031e+00 -2.7008616e+00
+7.2553474e+02 7.8289590e+00 -9.3605737e+00
+7.6362809e+02 9.6465048e+00 -1.8061023e+01
+7.6676202e+02 9.1012836e+00 -2.6029150e+01
+7.4321653e+02 5.8207682e+00 -3.0010217e+01
+6.8887707e+02 6.7969137e-01 -2.7819802e+01
+5.9282271e+02 -4.1154666e+00 -1.9999298e+01
+4.5107967e+02 -6.0342564e+00 -1.0232286e+01
+2.8136442e+02 -4.3546834e+00 -3.1270664e+00
+1.2516433e+02 -1.3959346e+00 -4.1391446e-01
+2.8608554e+01 -3.4995080e-02 -4.6953579e-02
+4.3844219e+00 1.4434623e-02 -4.7876011e-03
+5.1841821e-01 3.0272209e-03 -3.7076782e-04
+4.4728205e-02 3.3143488e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2837397e-01 2.5510567e-03 2.2247824e-04
+4.4911825e+00 2.9142189e-02 4.0056836e-03
+4.7379899e+01 2.3716358e-01 5.6781765e-02
+4.0250300e+02 1.3479355e+00 7.1047251e-01
+2.3275328e+03 1.5384088e+00 8.3732310e+00
+5.3919619e+03 5.2906851e+00 2.1320699e+01
+8.6148951e+03 2.9496029e+01 1.4356170e+01
+1.1137337e+04 7.6898161e+01 -4.2823940e+01
+1.2641462e+04 1.2931441e+02 -1.5890121e+02
+1.3277250e+04 1.6127685e+02 -3.1120318e+02
+1.3326049e+04 1.5266859e+02 -4.5203701e+02
+1.2931510e+04 9.6437339e+01 -5.2483945e+02
+1.2017139e+04 6.2769372e+00 -4.8973961e+02
+1.0381553e+04 -8.0037123e+01 -3.5311852e+02
+7.9349564e+03 -1.1598769e+02 -1.7843928e+02
+4.9633141e+03 -8.4494224e+01 -5.0463893e+01
+2.1716138e+03 -2.6327671e+01 -4.2131414e+00
+3.8046929e+02 5.9876497e-02 -3.6096589e-01
+4.5095436e+01 1.9740630e-01 -2.9600442e-02
+4.2899248e+00 2.9683301e-02 -1.9530267e-03
+3.1421487e-01 2.7337827e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7228089e+00 1.7924174e-02 -3.4889790e-03
+2.8201668e+01 2.4598298e-01 -4.8845367e-02
+3.8334548e+02 2.5438872e+00 -3.8001654e-01
+4.5537001e+03 1.8739641e+01 1.3578768e+00
+4.0913363e+04 -8.9420053e+00 1.4366869e+02
+9.4780207e+04 5.9151714e+00 4.0398146e+02
+1.5065892e+05 4.0121246e+02 3.1417258e+02
+1.9386374e+05 1.2181534e+03 -6.6663615e+02
+2.1928544e+05 2.1229564e+03 -2.6801168e+03
+2.2988965e+05 2.6781022e+03 -5.3302970e+03
+2.3066627e+05 2.5470351e+03 -7.8044013e+03
+2.2407106e+05 1.5999724e+03 -9.1291212e+03
+2.0871551e+05 4.3364584e+01 -8.5846057e+03
+1.8096961e+05 -1.4903105e+03 -6.2249720e+03
+1.3899545e+05 -2.1652987e+03 -3.1256931e+03
+8.7495213e+04 -1.6051582e+03 -8.2361218e+02
+3.8497055e+04 -4.9012402e+02 -2.8744712e+01
+4.3637223e+03 1.2559667e+01 -1.5677387e+00
+3.6945627e+02 2.5046394e+00 -9.0570730e-02
+2.7235019e+01 2.5905269e-01 -4.8385669e-03
+1.6647664e+00 1.9238181e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.1393782e+00 1.0096174e-01 -4.3992320e-02
+1.1793783e+02 1.8194235e+00 -9.4763194e-01
+2.0680222e+03 2.9536300e+01 -1.7743516e+01
+3.7085641e+04 4.8511428e+02 -3.2822768e+02
+5.9980966e+05 3.0760561e+03 2.7503655e+02
+1.5611998e+06 6.2024703e+03 1.4395527e+03
+2.5652113e+06 9.9558940e+03 3.1835906e+02
+3.2642033e+06 1.3642658e+04 -6.1011000e+03
+3.5803643e+06 1.6563491e+04 -1.8385957e+04
+3.6347028e+06 1.8230858e+04 -3.4077682e+04
+3.5803689e+06 1.8392033e+04 -4.8487068e+04
+3.4871089e+06 1.6994643e+04 -5.6082206e+04
+3.3107088e+06 1.4258153e+04 -5.2706091e+04
+2.9329706e+06 1.0773165e+04 -3.8518386e+04
+2.2643357e+06 7.3790784e+03 -1.9608294e+04
+1.3751950e+06 4.7014638e+03 -5.0820961e+03
+5.4521621e+05 2.7279766e+03 2.0741378e+02
+3.6302484e+04 5.0779657e+02 9.8600590e+00
+2.0212697e+03 3.1107427e+01 4.4115639e-01
+1.1510966e+02 1.9293541e+00 1.6388430e-02
+5.9850288e+00 1.0767114e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3009617e+01 2.9633324e-01 -1.2316314e-01
+2.5487447e+02 5.7368555e+00 -2.7489911e+00
+4.5187603e+03 1.0072031e+02 -5.3233511e+01
+8.0011670e+04 1.7764009e+03 -1.0100048e+03
+1.3259145e+06 1.1163991e+04 -5.7562883e+02
+3.2441048e+06 2.1605646e+04 3.8695449e+02
+5.2421351e+06 3.3189228e+04 -3.2077662e+03
+6.6701799e+06 4.3780387e+04 -1.6523283e+04
+7.3748303e+06 5.1847797e+04 -4.0178130e+04
+7.5627103e+06 5.6613800e+04 -6.9395747e+04
+7.4995534e+06 5.7807479e+04 -9.5558283e+04
+7.3059322e+06 5.5419829e+04 -1.0870320e+05
+6.9045161e+06 4.9691463e+04 -1.0143338e+05
+6.0906607e+06 4.1240878e+04 -7.4157474e+04
+4.7145688e+06 3.1114910e+04 -3.8069999e+04
+2.9187143e+06 2.0642074e+04 -1.0030607e+04
+1.2329002e+06 1.1219057e+04 7.2850763e+02
+7.8700845e+04 1.8753971e+03 3.5378422e+01
+4.4387033e+03 1.0670767e+02 1.6291092e+00
+2.5001131e+02 6.1008967e+00 6.3358127e-02
+1.2745557e+01 3.1626895e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0325957e+01 5.3232167e-01 -1.5496878e-01
+3.9792888e+02 1.0479966e+01 -3.4740534e+00
+7.0273769e+03 1.8659676e+02 -6.7046583e+01
+1.2353739e+05 3.3171330e+03 -1.2556202e+03
+2.0749349e+06 2.0409904e+04 -1.3013246e+03
+4.9862966e+06 3.8845026e+04 -1.0170292e+03
+8.0008667e+06 5.8867753e+04 -7.8082936e+03
+1.0153231e+07 7.6877091e+04 -2.8961354e+04
+1.1224726e+07 9.0508325e+04 -6.4973023e+04
+1.1525084e+07 9.8687103e+04 -1.0856137e+05
+1.1444498e+07 1.0110589e+05 -1.4705767e+05
+1.1157778e+07 9.7772782e+04 -1.6597113e+05
+1.0550179e+07 8.8917165e+04 -1.5453230e+05
+9.3191839e+06 7.5153704e+04 -1.1330318e+05
+7.2394469e+06 5.7726163e+04 -5.8756728e+04
+4.5170987e+06 3.8707182e+04 -1.6043122e+04
+1.9435356e+06 2.0999904e+04 7.6018834e+02
+1.2182783e+05 3.5130664e+03 3.5890293e+01
+6.9221873e+03 1.9827186e+02 1.5384187e+00
+3.9149498e+02 1.1173081e+01 5.2445399e-02
+1.9975097e+01 5.6931424e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6369328e+01 6.5136619e-01 -6.9564153e-02
+5.1470521e+02 1.2844663e+01 -1.6699631e+00
+9.0549272e+03 2.2854338e+02 -3.3703844e+01
+1.5855612e+05 4.0487425e+03 -6.4124949e+02
+2.6320143e+06 2.4546402e+04 -1.2812026e+03
+6.3473395e+06 4.6309466e+04 -1.8145610e+03
+1.0166117e+07 6.9690601e+04 -1.1709109e+04
+1.2852012e+07 9.0541604e+04 -4.0079237e+04
+1.4150910e+07 1.0625950e+05 -8.7227285e+04
+1.4484939e+07 1.1574088e+05 -1.4364655e+05
+1.4366234e+07 1.1871557e+05 -1.9317781e+05
+1.4020594e+07 1.1520342e+05 -2.1741485e+05
+1.3296051e+07 1.0537624e+05 -2.0256222e+05
+1.1791535e+07 8.9733070e+04 -1.4913687e+05
+9.1951631e+06 6.9458834e+04 -7.8165660e+04
+5.7490169e+06 4.6852388e+04 -2.2285375e+04
+2.4670772e+06 2.5488408e+04 -1.0020125e+02
+1.5658564e+05 4.2989821e+03 -1.2698119e+01
+8.9337861e+03 2.4345166e+02 -1.1971165e+00
+5.0728823e+02 1.3726679e+01 -8.1564684e-02
+2.5964345e+01 6.9817941e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0413280e+01 5.3918785e-01 1.0392616e-01
+5.9218296e+02 1.0611922e+01 1.9470563e+00
+1.0390270e+04 1.8818393e+02 3.1496495e+01
+1.8151268e+05 3.3185298e+03 5.1821539e+02
+2.9454728e+06 1.9936554e+04 -6.2795571e+02
+7.1949889e+06 3.7433335e+04 -1.8325716e+03
+1.1533183e+07 5.6107794e+04 -1.4158161e+04
+1.4526626e+07 7.2668025e+04 -4.8102088e+04
+1.5912471e+07 8.5108636e+04 -1.0378464e+05
+1.6214676e+07 9.2623567e+04 -1.7002174e+05
+1.6046986e+07 9.5043841e+04 -2.2807393e+05
+1.5676240e+07 9.2392890e+04 -2.5661474e+05
+1.4919258e+07 8.4766426e+04 -2.3949688e+05
+1.3291210e+07 7.2469664e+04 -1.7704674e+05
+1.0399223e+07 5.6334909e+04 -9.3646761e+04
+6.4958627e+06 3.8139087e+04 -2.7723713e+04
+2.7548078e+06 2.0798135e+04 -1.4949087e+03
+1.7939156e+05 3.5308476e+03 -9.2466933e+01
+1.0260337e+04 2.0085724e+02 -5.7032790e+00
+5.8424503e+02 1.1362264e+01 -3.0139381e-01
+2.9980469e+01 5.7899553e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2570954e+01 2.0896657e-01 2.6911178e-01
+6.3328632e+02 4.1060707e+00 5.3468326e+00
+1.1095428e+04 7.2647743e+01 9.1760262e+01
+1.9360908e+05 1.2775694e+03 1.5698112e+03
+3.0787194e+06 7.6416238e+03 1.1014558e+02
+7.6160588e+06 1.4317430e+04 -1.4951396e+03
+1.2226268e+07 2.1419658e+04 -1.5313984e+04
+1.5359266e+07 2.7699413e+04 -5.2703600e+04
+1.6755699e+07 3.2407560e+04 -1.1366350e+05
+1.7009878e+07 3.5252068e+04 -1.8598534e+05
+1.6802090e+07 3.6178020e+04 -2.4937216e+05
+1.6425422e+07 3.5196139e+04 -2.8071878e+05
+1.5676238e+07 3.2335480e+04 -2.6239664e+05
+1.4014231e+07 2.7695548e+04 -1.9453298e+05
+1.0989607e+07 2.1572533e+04 -1.0352247e+05
+6.8531902e+06 1.4630897e+04 -3.1407295e+04
+2.8719097e+06 7.9887668e+03 -2.7177605e+03
+1.9141208e+05 1.3608700e+03 -1.6334060e+02
+1.0961315e+04 7.7626469e+01 -9.7507506e+00
+6.2511489e+02 4.4011121e+00 -5.0033585e-01
+3.2126341e+01 2.2462576e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3228676e+01 -2.0896657e-01 3.3581729e-01
+6.4578228e+02 -4.1060706e+00 6.7102120e+00
+1.1309429e+04 -7.2647741e+01 1.1571949e+02
+1.9728039e+05 -1.2775694e+03 1.9839822e+03
+3.1121236e+06 -7.6416236e+03 4.2157140e+02
+7.7384948e+06 -1.4317429e+04 -1.3118047e+03
+1.2431272e+07 -2.1419657e+04 -1.5627816e+04
+1.5602039e+07 -2.7699411e+04 -5.4175662e+04
+1.6994213e+07 -3.2407556e+04 -1.1691345e+05
+1.7227103e+07 -3.5252063e+04 -1.9129000e+05
+1.7004036e+07 -3.6178017e+04 -2.5648974e+05
+1.6627080e+07 -3.5196135e+04 -2.8881190e+05
+1.5885521e+07 -3.2335477e+04 -2.7012284e+05
+1.4219749e+07 -2.7695545e+04 -2.0046716e+05
+1.1159604e+07 -2.1572531e+04 -1.0690595e+05
+6.9538474e+06 -1.4630895e+04 -3.2706788e+04
+2.8998085e+06 -7.9887667e+03 -3.1947864e+03
+1.9506029e+05 -1.3608699e+03 -1.9119558e+02
+1.1174096e+04 -7.7626464e+01 -1.1352037e+01
+6.3754596e+02 -4.4011118e+00 -5.7944358e-01
+3.2780952e+01 -2.2462574e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2570954e+01 -5.3918785e-01 2.6911180e-01
+6.3328632e+02 -1.0611922e+01 5.3468325e+00
+1.1095428e+04 -1.8818393e+02 9.1760266e+01
+1.9360908e+05 -3.3185298e+03 1.5698113e+03
+3.0787194e+06 -1.9936553e+04 1.1014607e+02
+7.6160588e+06 -3.7433334e+04 -1.4951374e+03
+1.2226268e+07 -5.6107792e+04 -1.5313986e+04
+1.5359266e+07 -7.2668021e+04 -5.2703601e+04
+1.6755699e+07 -8.5108632e+04 -1.1366350e+05
+1.7009878e+07 -9.2623563e+04 -1.8598533e+05
+1.6802090e+07 -9.5043835e+04 -2.4937216e+05
+1.6425422e+07 -9.2392887e+04 -2.8071878e+05
+1.5676238e+07 -8.4766423e+04 -2.6239664e+05
+1.4014231e+07 -7.2469664e+04 -1.9453299e+05
+1.0989607e+07 -5.6334908e+04 -1.0352247e+05
+6.8531902e+06 -3.8139087e+04 -3.1407296e+04
+2.8719097e+06 -2.0798135e+04 -2.7177604e+03
+1.9141208e+05 -3.5308475e+03 -1.6334060e+02
+1.0961315e+04 -2.0085723e+02 -9.7507506e+00
+6.2511489e+02 -1.1362263e+01 -5.0033586e-01
+3.2126341e+01 -5.7899551e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0413280e+01 -6.5136619e-01 1.0392616e-01
+5.9218296e+02 -1.2844663e+01 1.9470565e+00
+1.0390270e+04 -2.2854338e+02 3.1496492e+01
+1.8151268e+05 -4.0487424e+03 5.1821589e+02
+2.9454728e+06 -2.4546401e+04 -6.2795476e+02
+7.1949889e+06 -4.6309465e+04 -1.8325701e+03
+1.1533183e+07 -6.9690598e+04 -1.4158161e+04
+1.4526626e+07 -9.0541601e+04 -4.8102088e+04
+1.5912471e+07 -1.0625950e+05 -1.0378464e+05
+1.6214676e+07 -1.1574088e+05 -1.7002174e+05
+1.6046986e+07 -1.1871557e+05 -2.2807393e+05
+1.5676240e+07 -1.1520341e+05 -2.5661474e+05
+1.4919258e+07 -1.0537623e+05 -2.3949688e+05
+1.3291210e+07 -8.9733068e+04 -1.7704674e+05
+1.0399223e+07 -6.9458836e+04 -9.3646764e+04
+6.4958627e+06 -4.6852386e+04 -2.7723712e+04
+2.7548078e+06 -2.5488408e+04 -1.4949087e+03
+1.7939156e+05 -4.2989820e+03 -9.2466935e+01
+1.0260337e+04 -2.4345166e+02 -5.7032788e+00
+5.8424503e+02 -1.3726679e+01 -3.0139382e-01
+2.9980469e+01 -6.9817940e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6369328e+01 -5.3232167e-01 -6.9564164e-02
+5.1470521e+02 -1.0479966e+01 -1.6699632e+00
+9.0549272e+03 -1.8659675e+02 -3.3703807e+01
+1.5855612e+05 -3.3171329e+03 -6.4124940e+02
+2.6320143e+06 -2.0409904e+04 -1.2812019e+03
+6.3473395e+06 -3.8845026e+04 -1.8145591e+03
+1.0166117e+07 -5.8867753e+04 -1.1709108e+04
+1.2852012e+07 -7.6877089e+04 -4.0079239e+04
+1.4150910e+07 -9.0508321e+04 -8.7227284e+04
+1.4484939e+07 -9.8687098e+04 -1.4364655e+05
+1.4366234e+07 -1.0110589e+05 -1.9317781e+05
+1.4020594e+07 -9.7772777e+04 -2.1741485e+05
+1.3296051e+07 -8.8917163e+04 -2.0256222e+05
+1.1791535e+07 -7.5153702e+04 -1.4913687e+05
+9.1951631e+06 -5.7726160e+04 -7.8165658e+04
+5.7490169e+06 -3.8707182e+04 -2.2285373e+04
+2.4670772e+06 -2.0999903e+04 -1.0020133e+02
+1.5658564e+05 -3.5130664e+03 -1.2698121e+01
+8.9337861e+03 -1.9827185e+02 -1.1971168e+00
+5.0728823e+02 -1.1173081e+01 -8.1564708e-02
+2.5964345e+01 -5.6931423e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0325957e+01 -2.9633323e-01 -1.5496878e-01
+3.9792888e+02 -5.7368552e+00 -3.4740516e+00
+7.0273769e+03 -1.0072031e+02 -6.7046572e+01
+1.2353739e+05 -1.7764009e+03 -1.2556202e+03
+2.0749349e+06 -1.1163990e+04 -1.3013246e+03
+4.9862966e+06 -2.1605646e+04 -1.0170278e+03
+8.0008667e+06 -3.3189228e+04 -7.8082918e+03
+1.0153231e+07 -4.3780387e+04 -2.8961355e+04
+1.1224726e+07 -5.1847796e+04 -6.4973021e+04
+1.1525084e+07 -5.6613802e+04 -1.0856138e+05
+1.1444498e+07 -5.7807479e+04 -1.4705767e+05
+1.1157778e+07 -5.5419830e+04 -1.6597113e+05
+1.0550179e+07 -4.9691464e+04 -1.5453230e+05
+9.3191839e+06 -4.1240876e+04 -1.1330318e+05
+7.2394469e+06 -3.1114908e+04 -5.8756728e+04
+4.5170987e+06 -2.0642074e+04 -1.6043122e+04
+1.9435356e+06 -1.1219057e+04 7.6018831e+02
+1.2182783e+05 -1.8753971e+03 3.5890294e+01
+6.9221873e+03 -1.0670767e+02 1.5384185e+00
+3.9149498e+02 -6.1008966e+00 5.2445396e-02
+1.9975097e+01 -3.1626895e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.3009617e+01 -1.0096174e-01 -1.2316313e-01
+2.5487447e+02 -1.8194234e+00 -2.7489907e+00
+4.5187603e+03 -2.9536299e+01 -5.3233509e+01
+8.0011670e+04 -4.8511427e+02 -1.0100047e+03
+1.3259145e+06 -3.0760561e+03 -5.7562892e+02
+3.2441048e+06 -6.2024702e+03 3.8695511e+02
+5.2421351e+06 -9.9558937e+03 -3.2077658e+03
+6.6701799e+06 -1.3642658e+04 -1.6523283e+04
+7.3748303e+06 -1.6563490e+04 -4.0178130e+04
+7.5627103e+06 -1.8230858e+04 -6.9395748e+04
+7.4995534e+06 -1.8392032e+04 -9.5558283e+04
+7.3059322e+06 -1.6994643e+04 -1.0870320e+05
+6.9045161e+06 -1.4258152e+04 -1.0143338e+05
+6.0906607e+06 -1.0773164e+04 -7.4157474e+04
+4.7145688e+06 -7.3790782e+03 -3.8070000e+04
+2.9187143e+06 -4.7014636e+03 -1.0030607e+04
+1.2329002e+06 -2.7279765e+03 7.2850764e+02
+7.8700845e+04 -5.0779656e+02 3.5378421e+01
+4.4387033e+03 -3.1107427e+01 1.6291092e+00
+2.5001131e+02 -1.9293540e+00 6.3358126e-02
+1.2745557e+01 -1.0767114e-01 0.0000000e+00
+0 0 0
+0 0 0
+6.1393782e+00 -1.7924173e-02 -4.3992317e-02
+1.1793783e+02 -2.4598297e-01 -9.4763187e-01
+2.0680222e+03 -2.5438872e+00 -1.7743515e+01
+3.7085641e+04 -1.8739641e+01 -3.2822767e+02
+5.9980966e+05 8.9420178e+00 2.7503655e+02
+1.5611998e+06 -5.9151620e+00 1.4395528e+03
+2.5652113e+06 -4.0121250e+02 3.1835912e+02
+3.2642033e+06 -1.2181534e+03 -6.1010999e+03
+3.5803643e+06 -2.1229564e+03 -1.8385957e+04
+3.6347028e+06 -2.6781022e+03 -3.4077682e+04
+3.5803689e+06 -2.5470351e+03 -4.8487067e+04
+3.4871089e+06 -1.5999724e+03 -5.6082206e+04
+3.3107088e+06 -4.3364427e+01 -5.2706091e+04
+2.9329706e+06 1.4903105e+03 -3.8518386e+04
+2.2643357e+06 2.1652987e+03 -1.9608294e+04
+1.3751950e+06 1.6051582e+03 -5.0820962e+03
+5.4521621e+05 4.9012403e+02 2.0741379e+02
+3.6302484e+04 -1.2559667e+01 9.8600584e+00
+2.0212697e+03 -2.5046394e+00 4.4115634e-01
+1.1510966e+02 -2.5905269e-01 1.6388430e-02
+5.9850288e+00 -1.9238181e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.7228089e+00 -2.5510567e-03 -3.4889785e-03
+2.8201668e+01 -2.9142188e-02 -4.8845363e-02
+3.8334548e+02 -2.3716358e-01 -3.8001645e-01
+4.5537001e+03 -1.3479355e+00 1.3578779e+00
+4.0913363e+04 -1.5384091e+00 1.4366869e+02
+9.4780207e+04 -5.2906862e+00 4.0398147e+02
+1.5065892e+05 -2.9496030e+01 3.1417261e+02
+1.9386374e+05 -7.6898164e+01 -6.6663614e+02
+2.1928544e+05 -1.2931442e+02 -2.6801168e+03
+2.2988965e+05 -1.6127685e+02 -5.3302970e+03
+2.3066627e+05 -1.5266859e+02 -7.8044013e+03
+2.2407106e+05 -9.6437340e+01 -9.1291212e+03
+2.0871551e+05 -6.2769357e+00 -8.5846057e+03
+1.8096961e+05 8.0037123e+01 -6.2249720e+03
+1.3899545e+05 1.1598769e+02 -3.1256931e+03
+8.7495213e+04 8.4494225e+01 -8.2361218e+02
+3.8497055e+04 2.6327671e+01 -2.8744712e+01
+4.3637223e+03 -5.9876519e-02 -1.5677387e+00
+3.6945627e+02 -1.9740629e-01 -9.0570733e-02
+2.7235019e+01 -2.9683302e-02 -4.8385663e-03
+1.6647664e+00 -2.7337827e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.2837397e-01 -3.1531803e-04 2.2247833e-04
+4.4911825e+00 -3.1615428e-03 4.0056838e-03
+4.7379899e+01 -2.1723328e-02 5.6781768e-02
+4.0250300e+02 -1.0347823e-01 7.1047258e-01
+2.3275328e+03 -2.1460789e-01 8.3732308e+00
+5.3919619e+03 -6.0107025e-01 2.1320700e+01
+8.6148951e+03 -2.0866568e+00 1.4356171e+01
+1.1137337e+04 -4.8237032e+00 -4.2823939e+01
+1.2641462e+04 -7.8289590e+00 -1.5890121e+02
+1.3277250e+04 -9.6465048e+00 -3.1120318e+02
+1.3326049e+04 -9.1012836e+00 -4.5203701e+02
+1.2931510e+04 -5.8207683e+00 -5.2483945e+02
+1.2017139e+04 -6.7969174e-01 -4.8973961e+02
+1.0381553e+04 4.1154666e+00 -3.5311853e+02
+7.9349564e+03 6.0342562e+00 -1.7843928e+02
+4.9633141e+03 4.3546834e+00 -5.0463893e+01
+2.1716138e+03 1.3959346e+00 -4.2131414e+00
+3.8046929e+02 3.4995084e-02 -3.6096589e-01
+4.5095436e+01 -1.4434623e-02 -2.9600443e-02
+4.2899248e+00 -3.0272208e-03 -1.9530266e-03
+3.1421487e-01 -3.3143488e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.7194571e-02 -2.8481088e-05 9.7485396e-05
+5.4831546e-01 -2.6005926e-04 1.1916383e-03
+4.6564357e+00 -1.5812715e-03 1.0489709e-02
+3.0585708e+01 -6.7191541e-03 7.8743225e-02
+1.3515233e+02 -1.6459832e-02 4.9817188e-01
+3.0663397e+02 -4.2958026e-02 1.1319144e+00
+4.9061630e+02 -1.2125911e-01 6.2505984e-01
+6.3690713e+02 -2.5794367e-01 -2.7008615e+00
+7.2553474e+02 -4.0659106e-01 -9.3605738e+00
+7.6362809e+02 -4.9571366e-01 -1.8061023e+01
+7.6676202e+02 -4.6672545e-01 -2.6029150e+01
+7.4321653e+02 -3.0273802e-01 -3.0010217e+01
+6.8887707e+02 -5.0507091e-02 -2.7819802e+01
+5.9282271e+02 1.7998326e-01 -1.9999298e+01
+4.5107967e+02 2.7025176e-01 -1.0232286e+01
+2.8136442e+02 1.9459950e-01 -3.1270664e+00
+1.2516433e+02 6.4299112e-02 -4.1391446e-01
+2.8608554e+01 3.1994032e-03 -4.6953580e-02
+4.3844219e+00 -8.5448405e-04 -4.7876011e-03
+5.1841821e-01 -2.3276733e-04 -3.7076781e-04
+4.4728205e-02 -2.9054135e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.7343156e-03 0.0000000e+00 1.2949354e-05
+4.8488089e-02 0.0000000e+00 1.3688535e-04
+3.4952042e-01 0.0000000e+00 9.9344372e-04
+1.9119674e+00 0.0000000e+00 5.8731336e-03
+7.1415028e+00 0.0000000e+00 2.6876666e-02
+1.5775476e+01 0.0000000e+00 5.4866145e-02
+2.5199871e+01 0.0000000e+00 2.3536203e-02
+3.2812905e+01 0.0000000e+00 -1.5068539e-01
+3.7498034e+01 0.0000000e+00 -4.9459483e-01
+3.9545684e+01 0.0000000e+00 -9.4171073e-01
+3.9726062e+01 0.0000000e+00 -1.3476206e+00
+3.8465396e+01 0.0000000e+00 -1.5445234e+00
+3.5566505e+01 0.0000000e+00 -1.4247461e+00
+3.0501655e+01 0.0000000e+00 -1.0236813e+00
+2.3129247e+01 0.0000000e+00 -5.3175066e-01
+1.4432432e+01 0.0000000e+00 -1.7436433e-01
+6.5738807e+00 0.0000000e+00 -3.0309987e-02
+1.7739411e+00 0.0000000e+00 -4.1825175e-03
+3.2629018e-01 0.0000000e+00 -4.9502500e-04
+4.5461369e-02 0.0000000e+00 -4.2793910e-05
+4.4510334e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.6811153e-03 3.3135037e-05 2.0065280e-05
+4.7988395e-02 2.9850564e-04 2.2125404e-04
+3.4628664e-01 1.7341790e-03 1.7208614e-03
+1.8961960e+00 6.2941964e-03 1.1198123e-02
+7.0890263e+00 6.1207713e-03 5.7553926e-02
+1.5673269e+01 1.3096208e-02 1.4666506e-01
+2.5066831e+01 8.7130725e-02 1.9257406e-01
+3.2685321e+01 2.5404470e-01 6.6112737e-02
+3.7399345e+01 4.5741389e-01 -2.9261242e-01
+3.9469671e+01 5.9796824e-01 -8.1456831e-01
+3.9640542e+01 5.9349860e-01 -1.3225466e+00
+3.8329914e+01 4.1920504e-01 -1.6062700e+00
+3.5357295e+01 1.3021643e-01 -1.5272758e+00
+3.0234628e+01 -1.4397180e-01 -1.1162769e+00
+2.2863212e+01 -2.6424200e-01 -5.8600059e-01
+1.4236958e+01 -1.9675733e-01 -1.9376907e-01
+6.4774838e+00 -6.3148745e-02 -3.4223456e-02
+1.7460274e+00 -1.4806897e-03 -4.8290337e-03
+3.2073226e-01 1.3136390e-03 -5.8475280e-04
+4.4620671e-02 3.0740609e-04 -5.1460874e-05
+4.3627316e-03 3.6841002e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.6704158e-02 3.6705527e-04 1.5649257e-04
+5.4314641e-01 3.6400404e-03 1.9840042e-03
+4.6175572e+00 2.4049639e-02 1.8546977e-02
+3.0361420e+01 9.7676329e-02 1.5145250e-01
+1.3427983e+02 -2.3863081e-02 1.0539408e+00
+3.0488761e+02 -1.0738377e-01 2.9207870e+00
+4.8840018e+02 1.2518769e+00 3.9721605e+00
+6.3492925e+02 4.6135760e+00 1.5905079e+00
+7.2421531e+02 8.7530441e+00 -5.3856873e+00
+7.6280414e+02 1.1624224e+01 -1.5587987e+01
+7.6577873e+02 1.1573594e+01 -2.5584794e+01
+7.4126046e+02 8.0762341e+00 -3.1285755e+01
+6.8544116e+02 2.1785100e+00 -2.9898136e+01
+5.8815750e+02 -3.5147698e+00 -2.1862130e+01
+4.4629434e+02 -6.0386044e+00 -1.1302441e+01
+2.7783477e+02 -4.4864397e+00 -3.4831110e+00
+1.2349231e+02 -1.4033452e+00 -4.7089186e-01
+2.8198869e+01 -7.6989253e-03 -5.4988350e-02
+4.3158646e+00 2.0648208e-02 -5.7655735e-03
+5.0952212e-01 3.8938502e-03 -4.5592649e-04
+4.3896742e-02 4.1237802e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2527121e-01 2.9735591e-03 4.9625417e-04
+4.4531188e+00 3.3711838e-02 8.4880963e-03
+4.7029667e+01 2.6691054e-01 1.1585923e-01
+3.9994105e+02 1.3338109e+00 1.4416763e+00
+2.3147248e+03 -3.2161213e+00 1.7441950e+01
+5.3655471e+03 -9.2017478e+00 5.2951185e+01
+8.5826305e+03 1.2143698e+01 7.4323974e+01
+1.1111599e+04 7.0827078e+01 3.3848162e+01
+1.2628898e+04 1.4357684e+02 -8.8411999e+01
+1.3274252e+04 1.9412772e+02 -2.6791782e+02
+1.3320709e+04 1.9407969e+02 -4.4508418e+02
+1.2909198e+04 1.3390223e+02 -5.4859891e+02
+1.1968207e+04 3.0301811e+01 -5.2779021e+02
+1.0309264e+04 -7.1977166e+01 -3.8703913e+02
+7.8579972e+03 -1.1852307e+02 -1.9759552e+02
+4.9061540e+03 -8.8573471e+01 -5.6348406e+01
+2.1457636e+03 -2.7042806e+01 -4.8587874e+00
+3.7561525e+02 4.2169415e-01 -4.3413794e-01
+4.4458467e+01 2.6048317e-01 -3.7004411e-02
+4.2224763e+00 3.6849961e-02 -2.5119886e-03
+3.0880024e-01 3.3150137e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.7080539e+00 2.0962743e-02 -3.2341834e-03
+2.7986618e+01 2.8669324e-01 -4.1165682e-02
+3.8082615e+02 2.9274331e+00 -1.8236106e-01
+4.5285081e+03 2.0318956e+01 6.0245114e+00
+4.0724465e+04 -1.0161647e+02 2.9332323e+02
+9.4379927e+04 -2.8135389e+02 9.6575526e+02
+1.5019274e+05 5.7394839e+01 1.3866846e+03
+1.9354597e+05 1.0781335e+03 6.9714593e+02
+2.1921998e+05 2.3430523e+03 -1.4368735e+03
+2.3000246e+05 3.2212293e+03 -4.5767862e+03
+2.3074496e+05 3.2358157e+03 -7.6972107e+03
+2.2385695e+05 2.2179186e+03 -9.5671184e+03
+2.0802956e+05 4.2571853e+02 -9.2765812e+03
+1.7985035e+05 -1.3888206e+03 -6.8404733e+03
+1.3775507e+05 -2.2490713e+03 -3.4695379e+03
+8.6565180e+04 -1.7062047e+03 -9.2187296e+02
+3.8094549e+04 -5.1199611e+02 -3.4413214e+01
+4.3144560e+03 1.7323707e+01 -2.0489501e+00
+3.6472724e+02 3.0698623e+00 -1.2930371e-01
+2.6840534e+01 3.0937259e-01 -7.3419340e-03
+1.6380404e+00 2.2699091e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.0919509e+00 1.1865952e-01 -5.0269494e-02
+1.1712167e+02 2.1412286e+00 -1.0886455e+00
+2.0555555e+03 3.4813139e+01 -2.0507606e+01
+3.6894434e+04 5.7270873e+02 -3.8169035e+02
+5.9490320e+05 3.6228469e+03 8.0030760e+02
+1.5505005e+06 7.2643745e+03 3.9538859e+03
+2.5523001e+06 1.1749462e+04 5.1730341e+03
+3.2544429e+06 1.6317634e+04 -3.0601914e+02
+3.5763069e+06 2.0067880e+04 -1.3973461e+04
+3.6345906e+06 2.2303919e+04 -3.2943980e+04
+3.5792082e+06 2.2654258e+04 -5.1201632e+04
+3.4787969e+06 2.1045398e+04 -6.1717073e+04
+3.2909558e+06 1.7749540e+04 -5.9287903e+04
+2.9027575e+06 1.3475276e+04 -4.3938935e+04
+2.2315871e+06 9.2330319e+03 -2.2672375e+04
+1.3510435e+06 5.8139366e+03 -6.0410216e+03
+5.3516924e+05 3.2872184e+03 2.0674212e+02
+3.5926499e+04 5.9085171e+02 9.1991864e+00
+1.9970423e+03 3.6131114e+01 3.6529236e-01
+1.1353722e+02 2.2361912e+00 1.0907554e-02
+5.8941185e+00 1.2451698e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2923839e+01 3.4851162e-01 -1.4407451e-01
+2.5334272e+02 6.7572594e+00 -3.2283577e+00
+4.4942969e+03 1.1882370e+02 -6.2775436e+01
+7.9618396e+04 2.0986802e+03 -1.1954734e+03
+1.3152617e+06 1.3283493e+04 -2.0335453e+02
+3.2218845e+06 2.5763901e+04 3.5173985e+03
+5.2146482e+06 3.9734339e+04 3.0194239e+03
+6.6467051e+06 5.2649169e+04 -9.8373912e+03
+7.3595442e+06 6.2579055e+04 -3.7062475e+04
+7.5523280e+06 6.8481785e+04 -7.2858087e+04
+7.4854352e+06 6.9982485e+04 -1.0606814e+05
+7.2778472e+06 6.7075585e+04 -1.2401338e+05
+6.8556936e+06 6.0067863e+04 -1.1750916e+05
+6.0238142e+06 4.9718114e+04 -8.6905535e+04
+4.6448594e+06 3.7325079e+04 -4.5288158e+04
+2.8670579e+06 2.4569511e+04 -1.2387377e+04
+1.2098213e+06 1.3214641e+04 7.6401550e+02
+7.7846282e+04 2.1737683e+03 3.5661540e+01
+4.3855334e+03 1.2341950e+02 1.5430781e+00
+2.4669580e+02 7.0400659e+00 5.4709958e-02
+1.2560635e+01 3.6414964e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0232130e+01 6.2570531e-01 -1.8336660e-01
+3.9629087e+02 1.2336862e+01 -4.1249605e+00
+7.0019842e+03 2.2000102e+02 -7.9909638e+01
+1.2314144e+05 3.9165104e+03 -1.5017880e+03
+2.0635688e+06 2.4288998e+04 -1.1412191e+03
+4.9620367e+06 4.6378696e+04 2.5038716e+03
+7.9732934e+06 7.0505437e+04 -6.9389789e+02
+1.0135125e+07 9.2313208e+04 -2.2251876e+04
+1.1220660e+07 1.0885308e+05 -6.4459785e+04
+1.1528672e+07 1.1874060e+05 -1.1830681e+05
+1.1441869e+07 1.2158385e+05 -1.6727924e+05
+1.1133049e+07 1.1741954e+05 -1.9289499e+05
+1.0492632e+07 1.0655507e+05 -1.8183541e+05
+9.2320082e+06 8.9763242e+04 -1.3470490e+05
+7.1443967e+06 6.8612326e+04 -7.0941949e+04
+4.4451731e+06 4.5706437e+04 -2.0153265e+04
+1.9112478e+06 2.4601457e+04 7.4766767e+02
+1.2065100e+05 4.0654893e+03 3.2776623e+01
+6.8482414e+03 2.2892587e+02 1.2162195e+00
+3.8685198e+02 1.2869109e+01 3.0174635e-02
+1.9715193e+01 6.5422908e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6315550e+01 7.6499123e-01 -8.5508067e-02
+5.1390476e+02 1.5107758e+01 -2.0559548e+00
+9.0452659e+03 2.6923137e+02 -4.1625030e+01
+1.5844966e+05 4.7764925e+03 -7.9515061e+02
+2.6274813e+06 2.9191404e+04 -1.1645425e+03
+6.3350558e+06 5.5267372e+04 2.2304645e+03
+1.0159059e+07 8.3404915e+04 -3.6118676e+03
+1.2865333e+07 1.0856554e+05 -3.3184703e+04
+1.4187985e+07 1.2751796e+05 -8.8924065e+04
+1.4534830e+07 1.3886638e+05 -1.5894077e+05
+1.4408658e+07 1.4228662e+05 -2.2206761e+05
+1.4032884e+07 1.3784255e+05 -2.5478061e+05
+1.3262089e+07 1.2577937e+05 -2.4004331e+05
+1.1712984e+07 1.0673943e+05 -1.7846763e+05
+9.0980571e+06 8.2231260e+04 -9.4980595e+04
+5.6727279e+06 5.5132463e+04 -2.8117694e+04
+2.4340713e+06 2.9781578e+04 -2.9200318e+02
+1.5541680e+05 4.9685979e+03 -2.6274878e+01
+8.8578519e+03 2.8071296e+02 -2.1277306e+00
+5.0237569e+02 1.5788370e+01 -1.3444455e-01
+2.5682953e+01 8.0117631e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0429899e+01 6.3275779e-01 1.1561400e-01
+5.9279175e+02 1.2471965e+01 2.1426160e+00
+1.0405961e+04 2.2151600e+02 3.4166989e+01
+1.8185653e+05 3.9120838e+03 5.5472885e+02
+2.9519034e+06 2.3692482e+04 -3.7695429e+02
+7.2023444e+06 4.4647841e+04 2.8870710e+03
+1.1557290e+07 6.7100061e+04 -4.9152017e+03
+1.4583811e+07 8.7044841e+04 -4.0579472e+04
+1.6004041e+07 1.0199791e+05 -1.0662986e+05
+1.6324967e+07 1.1094866e+05 -1.8900270e+05
+1.6149641e+07 1.1370382e+05 -2.6307486e+05
+1.5742231e+07 1.1032674e+05 -3.0155062e+05
+1.4927017e+07 1.0096406e+05 -2.8449525e+05
+1.3239761e+07 8.6017374e+04 -2.1232470e+05
+1.0316571e+07 6.6553553e+04 -1.1399516e+05
+6.4271395e+06 4.4793476e+04 -3.4932976e+04
+2.7273241e+06 2.4262825e+04 -1.9305207e+03
+1.7847323e+05 4.0765264e+03 -1.2012245e+02
+1.0197014e+04 2.3135233e+02 -7.4384298e+00
+5.7993413e+02 1.3054799e+01 -3.9396554e-01
+2.9723983e+01 6.6369668e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2651242e+01 2.4511826e-01 3.0735206e-01
+6.3514820e+02 4.8235423e+00 6.0938878e+00
+1.1133259e+04 8.5475688e+01 1.0430283e+02
+1.9433978e+05 1.5053798e+03 1.7803053e+03
+3.0945779e+06 9.0773296e+03 5.3703521e+02
+7.6403646e+06 1.7070331e+04 3.8087724e+03
+1.2276680e+07 2.5605021e+04 -5.1085300e+03
+1.5452506e+07 3.3161456e+04 -4.4464649e+04
+1.6891260e+07 3.8812393e+04 -1.1683984e+05
+1.7168638e+07 4.2193066e+04 -2.0684443e+05
+1.6953472e+07 4.3242682e+04 -2.8776589e+05
+1.6536004e+07 4.1988009e+04 -3.3000904e+05
+1.5720527e+07 3.8476105e+04 -3.1181011e+05
+1.3988955e+07 3.2839869e+04 -2.3335644e+05
+1.0923351e+07 2.5460430e+04 -1.2600701e+05
+6.7942860e+06 1.7167858e+04 -3.9477178e+04
+2.8507359e+06 9.3120825e+03 -3.3527291e+03
+1.9076823e+05 1.5702236e+03 -2.0257467e+02
+1.0912884e+04 8.9357468e+01 -1.2149549e+01
+6.2159216e+02 5.0536428e+00 -6.2566451e-01
+3.1907042e+01 2.5733200e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3334147e+01 -2.4511825e-01 3.8476527e-01
+6.4813611e+02 -4.8235423e+00 7.6780214e+00
+1.1355881e+04 -8.5475687e+01 1.3217734e+02
+1.9816055e+05 -1.5053798e+03 2.2627752e+03
+3.1316155e+06 -9.0773295e+03 9.2553535e+02
+7.7693382e+06 -1.7070331e+04 4.2227547e+03
+1.2491751e+07 -2.5605020e+04 -5.0454630e+03
+1.5708942e+07 -3.3161455e+04 -4.5626331e+04
+1.7146332e+07 -3.8812390e+04 -1.2012058e+05
+1.7404064e+07 -4.2193061e+04 -2.1269545e+05
+1.7173769e+07 -4.3242676e+04 -2.9594259e+05
+1.6754611e+07 -4.1988005e+04 -3.3949697e+05
+1.5943947e+07 -3.8476100e+04 -3.2097066e+05
+1.4204911e+07 -3.2839864e+04 -2.4045325e+05
+1.1100168e+07 -2.5460427e+04 -1.3009642e+05
+6.8991527e+06 -1.7167855e+04 -4.1065952e+04
+2.8812718e+06 -9.3120821e+03 -3.9050999e+03
+1.9453047e+05 -1.5702235e+03 -2.3482914e+02
+1.1131986e+04 -8.9357462e+01 -1.4004045e+01
+6.3436650e+02 -5.0536424e+00 -7.1730437e-01
+3.2578312e+01 -2.5733198e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2651242e+01 -6.3275779e-01 3.0735206e-01
+6.3514820e+02 -1.2471965e+01 6.0938876e+00
+1.1133259e+04 -2.2151599e+02 1.0430282e+02
+1.9433978e+05 -3.9120836e+03 1.7803059e+03
+3.0945779e+06 -2.3692481e+04 5.3703443e+02
+7.6403646e+06 -4.4647839e+04 3.8087730e+03
+1.2276680e+07 -6.7100059e+04 -5.1085333e+03
+1.5452506e+07 -8.7044835e+04 -4.4464647e+04
+1.6891260e+07 -1.0199790e+05 -1.1683984e+05
+1.7168638e+07 -1.1094865e+05 -2.0684442e+05
+1.6953472e+07 -1.1370381e+05 -2.8776588e+05
+1.6536004e+07 -1.1032673e+05 -3.3000904e+05
+1.5720527e+07 -1.0096405e+05 -3.1181011e+05
+1.3988955e+07 -8.6017373e+04 -2.3335644e+05
+1.0923351e+07 -6.6553550e+04 -1.2600701e+05
+6.7942860e+06 -4.4793475e+04 -3.9477179e+04
+2.8507359e+06 -2.4262825e+04 -3.3527292e+03
+1.9076823e+05 -4.0765263e+03 -2.0257467e+02
+1.0912884e+04 -2.3135233e+02 -1.2149549e+01
+6.2159216e+02 -1.3054799e+01 -6.2566451e-01
+3.1907042e+01 -6.6369666e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0429899e+01 -7.6499123e-01 1.1561401e-01
+5.9279175e+02 -1.5107758e+01 2.1426161e+00
+1.0405961e+04 -2.6923136e+02 3.4167010e+01
+1.8185653e+05 -4.7764924e+03 5.5472900e+02
+2.9519034e+06 -2.9191403e+04 -3.7695339e+02
+7.2023444e+06 -5.5267371e+04 2.8870724e+03
+1.1557290e+07 -8.3404912e+04 -4.9152034e+03
+1.4583811e+07 -1.0856554e+05 -4.0579473e+04
+1.6004041e+07 -1.2751796e+05 -1.0662986e+05
+1.6324967e+07 -1.3886637e+05 -1.8900270e+05
+1.6149641e+07 -1.4228662e+05 -2.6307486e+05
+1.5742231e+07 -1.3784254e+05 -3.0155062e+05
+1.4927017e+07 -1.2577937e+05 -2.8449525e+05
+1.3239761e+07 -1.0673943e+05 -2.1232470e+05
+1.0316571e+07 -8.2231258e+04 -1.1399517e+05
+6.4271395e+06 -5.5132461e+04 -3.4932976e+04
+2.7273241e+06 -2.9781578e+04 -1.9305208e+03
+1.7847323e+05 -4.9685978e+03 -1.2012245e+02
+1.0197014e+04 -2.8071295e+02 -7.4384299e+00
+5.7993413e+02 -1.5788369e+01 -3.9396554e-01
+2.9723983e+01 -8.0117629e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6315550e+01 -6.2570529e-01 -8.5508088e-02
+5.1390476e+02 -1.2336862e+01 -2.0559527e+00
+9.0452659e+03 -2.2000101e+02 -4.1625020e+01
+1.5844966e+05 -3.9165103e+03 -7.9515061e+02
+2.6274813e+06 -2.4288997e+04 -1.1645423e+03
+6.3350558e+06 -4.6378695e+04 2.2304659e+03
+1.0159059e+07 -7.0505434e+04 -3.6118662e+03
+1.2865333e+07 -9.2313208e+04 -3.3184705e+04
+1.4187985e+07 -1.0885307e+05 -8.8924065e+04
+1.4534830e+07 -1.1874059e+05 -1.5894077e+05
+1.4408658e+07 -1.2158385e+05 -2.2206762e+05
+1.4032884e+07 -1.1741954e+05 -2.5478061e+05
+1.3262089e+07 -1.0655507e+05 -2.4004331e+05
+1.1712984e+07 -8.9763237e+04 -1.7846763e+05
+9.0980571e+06 -6.8612325e+04 -9.4980596e+04
+5.6727279e+06 -4.5706437e+04 -2.8117694e+04
+2.4340713e+06 -2.4601457e+04 -2.9200325e+02
+1.5541680e+05 -4.0654892e+03 -2.6274883e+01
+8.8578519e+03 -2.2892586e+02 -2.1277305e+00
+5.0237569e+02 -1.2869109e+01 -1.3444457e-01
+2.5682953e+01 -6.5422907e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0232130e+01 -3.4851161e-01 -1.8336660e-01
+3.9629087e+02 -6.7572592e+00 -4.1249598e+00
+7.0019842e+03 -1.1882370e+02 -7.9909637e+01
+1.2314144e+05 -2.0986802e+03 -1.5017879e+03
+2.0635688e+06 -1.3283493e+04 -1.1412189e+03
+4.9620367e+06 -2.5763901e+04 2.5038723e+03
+7.9732934e+06 -3.9734339e+04 -6.9389799e+02
+1.0135125e+07 -5.2649168e+04 -2.2251875e+04
+1.1220660e+07 -6.2579052e+04 -6.4459784e+04
+1.1528672e+07 -6.8481787e+04 -1.1830681e+05
+1.1441869e+07 -6.9982485e+04 -1.6727924e+05
+1.1133049e+07 -6.7075585e+04 -1.9289499e+05
+1.0492632e+07 -6.0067862e+04 -1.8183541e+05
+9.2320082e+06 -4.9718111e+04 -1.3470490e+05
+7.1443967e+06 -3.7325078e+04 -7.0941949e+04
+4.4451731e+06 -2.4569511e+04 -2.0153265e+04
+1.9112478e+06 -1.3214641e+04 7.4766764e+02
+1.2065100e+05 -2.1737683e+03 3.2776622e+01
+6.8482414e+03 -1.2341950e+02 1.2162194e+00
+3.8685198e+02 -7.0400658e+00 3.0174626e-02
+1.9715193e+01 -3.6414964e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2923839e+01 -1.1865952e-01 -1.4407450e-01
+2.5334272e+02 -2.1412286e+00 -3.2283576e+00
+4.4942969e+03 -3.4813138e+01 -6.2775434e+01
+7.9618396e+04 -5.7270873e+02 -1.1954733e+03
+1.3152617e+06 -3.6228468e+03 -2.0335463e+02
+3.2218845e+06 -7.2643742e+03 3.5173991e+03
+5.2146482e+06 -1.1749462e+04 3.0194242e+03
+6.6467051e+06 -1.6317634e+04 -9.8373905e+03
+7.3595442e+06 -2.0067879e+04 -3.7062476e+04
+7.5523280e+06 -2.2303918e+04 -7.2858088e+04
+7.4854352e+06 -2.2654258e+04 -1.0606814e+05
+7.2778472e+06 -2.1045397e+04 -1.2401338e+05
+6.8556936e+06 -1.7749540e+04 -1.1750916e+05
+6.0238142e+06 -1.3475276e+04 -8.6905534e+04
+4.6448594e+06 -9.2330319e+03 -4.5288158e+04
+2.8670579e+06 -5.8139366e+03 -1.2387377e+04
+1.2098213e+06 -3.2872184e+03 7.6401551e+02
+7.7846282e+04 -5.9085171e+02 3.5661538e+01
+4.3855334e+03 -3.6131113e+01 1.5430780e+00
+2.4669580e+02 -2.2361912e+00 5.4709955e-02
+1.2560635e+01 -1.2451698e-01 0.0000000e+00
+0 0 0
+0 0 0
+6.0919509e+00 -2.0962743e-02 -5.0269496e-02
+1.1712167e+02 -2.8669323e-01 -1.0886455e+00
+2.0555555e+03 -2.9274330e+00 -2.0507605e+01
+3.6894434e+04 -2.0318956e+01 -3.8169035e+02
+5.9490320e+05 1.0161647e+02 8.0030762e+02
+1.5505005e+06 2.8135391e+02 3.9538860e+03
+2.5523001e+06 -5.7394867e+01 5.1730341e+03
+3.2544429e+06 -1.0781335e+03 -3.0601898e+02
+3.5763069e+06 -2.3430524e+03 -1.3973461e+04
+3.6345906e+06 -3.2212293e+03 -3.2943980e+04
+3.5792082e+06 -3.2358157e+03 -5.1201632e+04
+3.4787969e+06 -2.2179184e+03 -6.1717073e+04
+3.2909558e+06 -4.2571842e+02 -5.9287903e+04
+2.9027575e+06 1.3888206e+03 -4.3938935e+04
+2.2315871e+06 2.2490713e+03 -2.2672375e+04
+1.3510435e+06 1.7062046e+03 -6.0410216e+03
+5.3516924e+05 5.1199611e+02 2.0674212e+02
+3.5926499e+04 -1.7323707e+01 9.1991871e+00
+1.9970423e+03 -3.0698624e+00 3.6529231e-01
+1.1353722e+02 -3.0937258e-01 1.0907553e-02
+5.8941185e+00 -2.2699091e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.7080539e+00 -2.9735591e-03 -3.2341831e-03
+2.7986618e+01 -3.3711839e-02 -4.1165684e-02
+3.8082615e+02 -2.6691055e-01 -1.8236098e-01
+4.5285081e+03 -1.3338110e+00 6.0245108e+00
+4.0724465e+04 3.2161210e+00 2.9332323e+02
+9.4379927e+04 9.2017460e+00 9.6575527e+02
+1.5019274e+05 -1.2143704e+01 1.3866846e+03
+1.9354597e+05 -7.0827079e+01 6.9714595e+02
+2.1921998e+05 -1.4357685e+02 -1.4368736e+03
+2.3000246e+05 -1.9412772e+02 -4.5767862e+03
+2.3074496e+05 -1.9407970e+02 -7.6972107e+03
+2.2385695e+05 -1.3390223e+02 -9.5671184e+03
+2.0802956e+05 -3.0301796e+01 -9.2765811e+03
+1.7985035e+05 7.1977165e+01 -6.8404734e+03
+1.3775507e+05 1.1852307e+02 -3.4695379e+03
+8.6565180e+04 8.8573473e+01 -9.2187295e+02
+3.8094549e+04 2.7042806e+01 -3.4413213e+01
+4.3144560e+03 -4.2169410e-01 -2.0489500e+00
+3.6472724e+02 -2.6048316e-01 -1.2930371e-01
+2.6840534e+01 -3.6849960e-02 -7.3419340e-03
+1.6380404e+00 -3.3150137e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.2527121e-01 -3.6705526e-04 4.9625412e-04
+4.4531188e+00 -3.6400403e-03 8.4880952e-03
+4.7029667e+01 -2.4049638e-02 1.1585925e-01
+3.9994105e+02 -9.7676344e-02 1.4416763e+00
+2.3147248e+03 2.3863095e-02 1.7441950e+01
+5.3655471e+03 1.0738382e-01 5.2951185e+01
+8.5826305e+03 -1.2518768e+00 7.4323976e+01
+1.1111599e+04 -4.6135762e+00 3.3848162e+01
+1.2628898e+04 -8.7530441e+00 -8.8411999e+01
+1.3274252e+04 -1.1624224e+01 -2.6791782e+02
+1.3320709e+04 -1.1573594e+01 -4.4508418e+02
+1.2909198e+04 -8.0762342e+00 -5.4859891e+02
+1.1968207e+04 -2.1785104e+00 -5.2779021e+02
+1.0309264e+04 3.5147698e+00 -3.8703914e+02
+7.8579972e+03 6.0386044e+00 -1.9759552e+02
+4.9061540e+03 4.4864398e+00 -5.6348406e+01
+2.1457636e+03 1.4033452e+00 -4.8587874e+00
+3.7561525e+02 7.6989237e-03 -4.3413795e-01
+4.4458467e+01 -2.0648207e-02 -3.7004411e-02
+4.2224763e+00 -3.8938502e-03 -2.5119886e-03
+3.0880024e-01 -4.1237801e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.6704158e-02 -3.3135038e-05 1.5649256e-04
+5.4314641e-01 -2.9850564e-04 1.9840041e-03
+4.6175572e+00 -1.7341790e-03 1.8546977e-02
+3.0361420e+01 -6.2941958e-03 1.5145251e-01
+1.3427983e+02 -6.1207703e-03 1.0539408e+00
+3.0488761e+02 -1.3096204e-02 2.9207870e+00
+4.8840018e+02 -8.7130720e-02 3.9721606e+00
+6.3492925e+02 -2.5404469e-01 1.5905079e+00
+7.2421531e+02 -4.5741392e-01 -5.3856874e+00
+7.6280414e+02 -5.9796822e-01 -1.5587987e+01
+7.6577873e+02 -5.9349860e-01 -2.5584794e+01
+7.4126046e+02 -4.1920502e-01 -3.1285755e+01
+6.8544116e+02 -1.3021643e-01 -2.9898136e+01
+5.8815750e+02 1.4397178e-01 -2.1862130e+01
+4.4629434e+02 2.6424202e-01 -1.1302441e+01
+2.7783477e+02 1.9675733e-01 -3.4831110e+00
+1.2349231e+02 6.3148746e-02 -4.7089186e-01
+2.8198869e+01 1.4806897e-03 -5.4988350e-02
+4.3158646e+00 -1.3136388e-03 -5.7655735e-03
+5.0952212e-01 -3.0740609e-04 -4.5592648e-04
+4.3896742e-02 -3.6841002e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.6811153e-03 0.0000000e+00 2.0065280e-05
+4.7988395e-02 0.0000000e+00 2.2125403e-04
+3.4628664e-01 0.0000000e+00 1.7208615e-03
+1.8961960e+00 0.0000000e+00 1.1198124e-02
+7.0890263e+00 0.0000000e+00 5.7553925e-02
+1.5673269e+01 0.0000000e+00 1.4666506e-01
+2.5066831e+01 0.0000000e+00 1.9257406e-01
+3.2685321e+01 0.0000000e+00 6.6112732e-02
+3.7399345e+01 0.0000000e+00 -2.9261242e-01
+3.9469671e+01 0.0000000e+00 -8.1456831e-01
+3.9640542e+01 0.0000000e+00 -1.3225466e+00
+3.8329914e+01 0.0000000e+00 -1.6062700e+00
+3.5357295e+01 0.0000000e+00 -1.5272758e+00
+3.0234628e+01 0.0000000e+00 -1.1162769e+00
+2.2863212e+01 0.0000000e+00 -5.8600059e-01
+1.4236958e+01 0.0000000e+00 -1.9376907e-01
+6.4774838e+00 0.0000000e+00 -3.4223456e-02
+1.7460274e+00 0.0000000e+00 -4.8290336e-03
+3.2073226e-01 0.0000000e+00 -5.8475281e-04
+4.4620671e-02 0.0000000e+00 -5.1460874e-05
+4.3627316e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.6150056e-03 3.8092541e-05 2.8017126e-05
+4.7361612e-02 3.4218583e-04 3.1261456e-04
+3.4217760e-01 1.9426128e-03 2.4790340e-03
+1.8758368e+00 6.2869139e-03 1.6551257e-02
+7.0200632e+00 -2.1437760e-03 8.7658149e-02
+1.5536677e+01 -1.1988317e-02 2.3623865e-01
+2.4885638e+01 6.0182990e-02 3.5724859e-01
+3.2506905e+01 2.5775538e-01 2.7790979e-01
+3.7255957e+01 5.1380203e-01 -9.2504348e-02
+3.9356328e+01 7.0264271e-01 -6.8180344e-01
+3.9520041e+01 7.2091586e-01 -1.2822189e+00
+3.8155315e+01 5.3770515e-01 -1.6453250e+00
+3.5101617e+01 2.1610483e-01 -1.6057518e+00
+2.9916645e+01 -9.7596652e-02 -1.1901719e+00
+2.2550105e+01 -2.4691281e-01 -6.3015176e-01
+1.4007536e+01 -1.9082432e-01 -2.0990582e-01
+6.3639062e+00 -5.8635519e-02 -3.7692622e-02
+1.7129793e+00 7.9704292e-04 -5.4416140e-03
+3.1413165e-01 1.8328508e-03 -6.7385445e-04
+4.3620866e-02 3.8625093e-04 -6.0300734e-05
+4.2576865e-03 4.4744341e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.6097013e-02 4.1927909e-04 2.2595845e-04
+5.3668430e-01 4.1513779e-03 2.8788857e-03
+4.5682679e+00 2.6917265e-02 2.7193588e-02
+3.0071802e+01 9.7455563e-02 2.2564318e-01
+1.3312734e+02 -2.2538653e-01 1.6013714e+00
+3.0253376e+02 -7.2910959e-01 4.6723394e+00
+4.8534263e+02 5.4668102e-01 7.2433994e+00
+6.3209878e+02 4.5370339e+00 5.7945911e+00
+7.2219663e+02 9.7665707e+00 -1.4395024e+00
+7.6144339e+02 1.3626246e+01 -1.3002358e+01
+7.6430869e+02 1.4033370e+01 -2.4844771e+01
+7.3872867e+02 1.0347400e+01 -3.2122677e+01
+6.8126550e+02 3.7797938e+00 -3.1510708e+01
+5.8263236e+02 -2.7200903e+00 -2.3363082e+01
+4.4068558e+02 -5.8210750e+00 -1.2180159e+01
+2.7370200e+02 -4.4569686e+00 -3.7812444e+00
+1.2152099e+02 -1.3457921e+00 -5.2276636e-01
+2.7712461e+01 2.7311119e-02 -6.2872477e-02
+4.2341572e+00 2.7438233e-02 -6.7704893e-03
+4.9890407e-01 4.7794008e-03 -5.4558997e-04
+4.2904152e-02 4.9174359e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.2145658e-01 3.3687021e-03 8.6520348e-04
+4.4058750e+00 3.8166200e-02 1.4094220e-02
+4.6588622e+01 2.9855226e-01 1.8350368e-01
+3.9664487e+02 1.3667294e+00 2.2104075e+00
+2.2977166e+03 -7.4154779e+00 2.6408749e+01
+5.3295722e+03 -2.2380191e+01 8.4034754e+01
+8.5373461e+03 -3.2674989e+00 1.3313335e+02
+1.1073407e+04 6.6677120e+01 1.0918478e+02
+1.2607181e+04 1.5894273e+02 -1.8274097e+01
+1.3265280e+04 2.2692137e+02 -2.2259719e+02
+1.3310346e+04 2.3477244e+02 -4.3297249e+02
+1.2880163e+04 1.7113645e+02 -5.6472605e+02
+1.1909317e+04 5.5654547e+01 -5.5771012e+02
+1.0224329e+04 -6.0864801e+01 -4.1462984e+02
+7.7683142e+03 -1.1734171e+02 -2.1342623e+02
+4.8394607e+03 -8.9882970e+01 -6.1306888e+01
+2.1152561e+03 -2.6672533e+01 -5.4726946e+00
+3.6982839e+02 8.5133419e-01 -5.0986423e-01
+4.3695787e+01 3.2527419e-01 -4.5020313e-02
+4.1416103e+00 4.3755728e-02 -3.1306815e-03
+3.0230877e-01 3.8525352e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.6901156e+00 2.3594513e-02 -2.2875822e-03
+2.7723224e+01 3.2259887e-01 -2.3326010e-02
+3.7770268e+02 3.2769156e+00 1.2178329e-01
+4.4965787e+03 2.1967469e+01 1.1450444e+01
+4.0472680e+04 -1.8598994e+02 4.4180915e+02
+9.3829013e+04 -5.4932807e+02 1.5196713e+03
+1.4952570e+05 -2.5836888e+02 2.4418134e+03
+1.9304909e+05 9.6448029e+02 2.0408970e+03
+2.1904218e+05 2.5748345e+03 -1.9719583e+02
+2.3006315e+05 3.7557468e+03 -3.7867082e+03
+2.3078912e+05 3.9042587e+03 -7.5003571e+03
+2.2357679e+05 2.8236830e+03 -9.8727396e+03
+2.0721613e+05 8.2323498e+02 -9.8268979e+03
+1.7854823e+05 -1.2405178e+03 -7.3451302e+03
+1.3631958e+05 -2.2715151e+03 -3.7554676e+03
+8.5484936e+04 -1.7600186e+03 -1.0050884e+03
+3.7618735e+04 -5.1562466e+02 -4.0322235e+01
+4.2553604e+03 2.2227016e+01 -2.6022813e+00
+3.5903422e+02 3.5917970e+00 -1.7578345e-01
+2.6365351e+01 3.5354626e-01 -1.0390389e-02
+1.6058593e+00 2.5643200e-02 0.0000000e+00
+0 0 0
+0 0 0
+6.0351741e+00 1.3328921e-01 -5.2917886e-02
+1.1614269e+02 2.4079891e+00 -1.1593307e+00
+2.0405683e+03 3.9197659e+01 -2.2092921e+01
+3.6664008e+04 6.4562487e+02 -4.1532431e+02
+5.8879999e+05 4.1289878e+03 1.3729043e+03
+1.5364912e+06 8.3002438e+03 6.5326553e+03
+2.5349285e+06 1.3551545e+04 1.0094340e+04
+3.2408969e+06 1.9029862e+04 5.5748962e+03
+3.5702295e+06 2.3611866e+04 -9.3847244e+03
+3.6340129e+06 2.6394573e+04 -3.1445895e+04
+3.5780701e+06 2.6907520e+04 -5.3311148e+04
+3.4697993e+06 2.5073964e+04 -6.6563858e+04
+3.2690643e+06 2.1220384e+04 -6.5069450e+04
+2.8690392e+06 1.6160288e+04 -4.8751926e+04
+2.1949351e+06 1.1061978e+04 -2.5433454e+04
+1.3239064e+06 6.8839845e+03 -6.9403512e+03
+5.2373001e+05 3.7962472e+03 1.8700310e+02
+3.5471403e+04 6.5689932e+02 7.4261536e+00
+1.9677256e+03 4.0110260e+01 2.2435503e-01
+1.1163505e+02 2.4779419e+00 2.1298205e-03
+5.7841859e+00 1.3770557e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2822574e+01 3.9115984e-01 -1.5660524e-01
+2.5153981e+02 7.5939889e+00 -3.5396903e+00
+4.4656471e+03 1.3371356e+02 -6.9405861e+01
+7.9161080e+04 2.3643383e+03 -1.3308035e+03
+1.3025848e+06 1.5162262e+04 3.1284136e+02
+3.1940125e+06 2.9594152e+04 6.8909345e+03
+5.1796167e+06 4.5908272e+04 9.5656667e+03
+6.6169357e+06 6.1113210e+04 -2.7482429e+03
+7.3409316e+06 7.2847700e+04 -3.3371444e+04
+7.5409837e+06 7.9806574e+04 -7.5439084e+04
+7.4706859e+06 8.1542132e+04 -1.1532441e+05
+7.2473230e+06 7.8081313e+04 -1.3780757e+05
+6.8014040e+06 6.9802952e+04 -1.3210061e+05
+5.9488275e+06 5.7594865e+04 -9.8548446e+04
+4.5663373e+06 4.3000698e+04 -5.1965053e+04
+2.8085637e+06 2.8061461e+04 -1.4648320e+04
+1.1833039e+06 1.4914883e+04 7.5053106e+02
+7.6813892e+04 2.4066870e+03 3.3133033e+01
+4.3210901e+03 1.3638935e+02 1.2972601e+00
+2.4266896e+02 7.7638233e+00 3.8222466e-02
+1.2335779e+01 4.0078326e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0122148e+01 7.0157461e-01 -2.0043320e-01
+3.9438516e+02 1.3850873e+01 -4.5516024e+00
+6.9727802e+03 2.4733107e+02 -8.8965052e+01
+1.2269271e+05 4.4082290e+03 -1.6841347e+03
+2.0501232e+06 2.7673487e+04 -7.4977282e+02
+4.9312562e+06 5.3178414e+04 6.4465058e+03
+7.9374250e+06 8.1231917e+04 6.9912790e+03
+1.0111381e+07 1.0669066e+05 -1.4842172e+04
+1.1215713e+07 1.2598271e+05 -6.3029902e+04
+1.1534787e+07 1.3741759e+05 -1.2675513e+05
+1.1441829e+07 1.4056028e+05 -1.8573308e+05
+1.1107602e+07 1.3551493e+05 -2.1771925e+05
+1.0429135e+07 1.2267779e+05 -2.0709684e+05
+9.1341276e+06 1.0297138e+05 -1.5459278e+05
+7.0369116e+06 7.8285830e+04 -8.2392831e+04
+4.3632167e+06 5.1764151e+04 -2.4139044e+04
+1.8737479e+06 2.7601776e+04 6.7396847e+02
+1.1921227e+05 4.4933377e+03 2.6049328e+01
+6.7574894e+03 2.5250640e+02 6.8427698e-01
+3.8113922e+02 1.4163378e+01 -2.5203134e-03
+1.9394945e+01 7.1851108e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6252145e+01 8.5688352e-01 -9.1903621e-02
+5.1298053e+02 1.6944928e+01 -2.2617233e+00
+9.0346230e+03 3.0238568e+02 -4.6673442e+01
+1.5834414e+05 5.3713270e+03 -9.0425042e+02
+2.6218237e+06 3.3211641e+04 -7.8480497e+02
+6.3173903e+06 6.3273070e+04 6.7860563e+03
+1.0145999e+07 9.5906061e+04 5.1726528e+03
+1.2877523e+07 1.2515726e+05 -2.5483715e+04
+1.4230966e+07 1.4713119e+05 -8.9613676e+04
+1.4595315e+07 1.6014508e+05 -1.7282634e+05
+1.4461540e+07 1.6386317e+05 -2.4901112e+05
+1.4050746e+07 1.5843362e+05 -2.8979203e+05
+1.3225989e+07 1.4418837e+05 -2.7520172e+05
+1.1624907e+07 1.2190848e+05 -2.0606262e+05
+8.9878080e+06 9.3426889e+04 -1.1095455e+05
+5.5851366e+06 6.2205066e+04 -3.3804125e+04
+2.3950742e+06 3.3317366e+04 -5.2254710e+02
+1.5394579e+05 5.4841282e+03 -4.2324758e+01
+8.7620549e+03 3.0919010e+02 -3.2115099e+00
+4.9617220e+02 1.7350660e+01 -1.9530042e-01
+2.5327598e+01 8.7856576e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0447427e+01 7.0816553e-01 1.3118969e-01
+5.9349445e+02 1.3976804e+01 2.3966080e+00
+1.0424708e+04 2.4858782e+02 3.7447799e+01
+1.8227467e+05 4.3957291e+03 5.9490872e+02
+2.9586676e+06 2.6927973e+04 1.1440169e+02
+7.2065636e+06 5.1061133e+04 8.1071611e+03
+1.1579256e+07 7.7062072e+04 4.9852762e+03
+1.4646088e+07 1.0019896e+05 -3.2333899e+04
+1.6109961e+07 1.1748304e+05 -1.0860513e+05
+1.6455526e+07 1.2770342e+05 -2.0672289e+05
+1.6272336e+07 1.3067433e+05 -2.9622945e+05
+1.5822056e+07 1.2652941e+05 -3.4415032e+05
+1.4938700e+07 1.1547735e+05 -3.2712161e+05
+1.3182335e+07 9.8014571e+04 -2.4580176e+05
+1.0222217e+07 7.5444830e+04 -1.3346586e+05
+6.3474213e+06 5.0436078e+04 -4.1978659e+04
+2.6939251e+06 2.7096903e+04 -2.3592115e+03
+1.7725127e+05 4.4945952e+03 -1.4771516e+02
+1.0113138e+04 2.5453950e+02 -9.1884603e+00
+5.7425382e+02 1.4330507e+01 -4.8799446e-01
+2.9387568e+01 7.2698604e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2741623e+01 2.7419498e-01 3.4358927e-01
+6.3728950e+02 5.4028663e+00 6.7762267e+00
+1.1177509e+04 9.5874396e+01 1.1523915e+02
+1.9520475e+05 1.6906581e+03 1.9553389e+03
+3.1119864e+06 1.0311211e+04 1.1635791e+03
+7.6635168e+06 1.9511428e+04 9.5610450e+03
+1.2328248e+07 2.9388189e+04 5.6667530e+03
+1.5555874e+07 3.8145396e+04 -3.5647683e+04
+1.7047770e+07 4.4668347e+04 -1.1934368e+05
+1.7355133e+07 4.8521140e+04 -2.2665644e+05
+1.7132336e+07 4.9648847e+04 -3.2449443e+05
+1.6667011e+07 4.8105596e+04 -3.7707797e+05
+1.5773864e+07 4.3960746e+04 -3.5889888e+05
+1.3961076e+07 3.7380367e+04 -2.7038597e+05
+1.0847188e+07 2.8831730e+04 -1.4760985e+05
+6.7251707e+06 1.9311596e+04 -4.7370076e+04
+2.8240098e+06 1.0390835e+04 -3.9378152e+03
+1.8983415e+05 1.7301553e+03 -2.3929632e+02
+1.0844303e+04 9.8250875e+01 -1.4425992e+01
+6.1669852e+02 5.5439813e+00 -7.4582819e-01
+3.1606505e+01 2.8169457e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3453284e+01 -2.7419497e-01 4.2925268e-01
+6.5084081e+02 -5.4028662e+00 8.5302832e+00
+1.1410036e+04 -9.5874395e+01 1.4612475e+02
+1.9919767e+05 -1.6906579e+03 2.4903239e+03
+3.1531181e+06 -1.0311210e+04 1.6101182e+03
+7.7997924e+06 -1.9511426e+04 1.0178846e+04
+1.2554643e+07 -2.9388185e+04 6.0632195e+03
+1.5827863e+07 -3.8145392e+04 -3.6566326e+04
+1.7321846e+07 -4.4668346e+04 -1.2274361e+05
+1.7611512e+07 -4.8521135e+04 -2.3314904e+05
+1.7373731e+07 -4.9648838e+04 -3.3381342e+05
+1.6905026e+07 -4.8105590e+04 -3.8801821e+05
+1.6013374e+07 -4.3960741e+04 -3.6952348e+05
+1.4188804e+07 -3.7380363e+04 -2.7865586e+05
+1.1031582e+07 -2.8831727e+04 -1.5240684e+05
+6.8346119e+06 -1.9311594e+04 -4.9242903e+04
+2.8573588e+06 -1.0390835e+04 -4.5482542e+03
+1.9371748e+05 -1.7301552e+03 -2.7495503e+02
+1.1070010e+04 -9.8250867e+01 -1.6477350e+01
+6.2982437e+02 -5.5439809e+00 -8.4725606e-01
+3.2294445e+01 -2.8169454e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2741623e+01 -7.0816552e-01 3.4358926e-01
+6.3728950e+02 -1.3976803e+01 6.7762265e+00
+1.1177509e+04 -2.4858781e+02 1.1523919e+02
+1.9520475e+05 -4.3957290e+03 1.9553391e+03
+3.1119864e+06 -2.6927972e+04 1.1635777e+03
+7.6635168e+06 -5.1061130e+04 9.5610437e+03
+1.2328248e+07 -7.7062067e+04 5.6667509e+03
+1.5555874e+07 -1.0019896e+05 -3.5647684e+04
+1.7047770e+07 -1.1748303e+05 -1.1934368e+05
+1.7355133e+07 -1.2770342e+05 -2.2665644e+05
+1.7132336e+07 -1.3067432e+05 -3.2449442e+05
+1.6667011e+07 -1.2652940e+05 -3.7707797e+05
+1.5773864e+07 -1.1547734e+05 -3.5889888e+05
+1.3961076e+07 -9.8014570e+04 -2.7038598e+05
+1.0847188e+07 -7.5444828e+04 -1.4760985e+05
+6.7251707e+06 -5.0436077e+04 -4.7370077e+04
+2.8240098e+06 -2.7096902e+04 -3.9378151e+03
+1.8983415e+05 -4.4945951e+03 -2.3929633e+02
+1.0844303e+04 -2.5453950e+02 -1.4425992e+01
+6.1669852e+02 -1.4330506e+01 -7.4582818e-01
+3.1606505e+01 -7.2698602e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0447427e+01 -8.5688349e-01 1.3118974e-01
+5.9349445e+02 -1.6944927e+01 2.3966092e+00
+1.0424708e+04 -3.0238568e+02 3.7447808e+01
+1.8227467e+05 -5.3713269e+03 5.9490882e+02
+2.9586676e+06 -3.3211641e+04 1.1440232e+02
+7.2065636e+06 -6.3273069e+04 8.1071589e+03
+1.1579256e+07 -9.5906058e+04 4.9852745e+03
+1.4646088e+07 -1.2515726e+05 -3.2333901e+04
+1.6109961e+07 -1.4713118e+05 -1.0860513e+05
+1.6455526e+07 -1.6014507e+05 -2.0672288e+05
+1.6272336e+07 -1.6386317e+05 -2.9622945e+05
+1.5822056e+07 -1.5843361e+05 -3.4415032e+05
+1.4938700e+07 -1.4418837e+05 -3.2712161e+05
+1.3182335e+07 -1.2190848e+05 -2.4580176e+05
+1.0222217e+07 -9.3426886e+04 -1.3346586e+05
+6.3474213e+06 -6.2205064e+04 -4.1978660e+04
+2.6939251e+06 -3.3317365e+04 -2.3592114e+03
+1.7725127e+05 -5.4841281e+03 -1.4771517e+02
+1.0113138e+04 -3.0919010e+02 -9.1884605e+00
+5.7425382e+02 -1.7350659e+01 -4.8799449e-01
+2.9387568e+01 -8.7856574e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6252145e+01 -7.0157460e-01 -9.1903602e-02
+5.1298053e+02 -1.3850872e+01 -2.2617229e+00
+9.0346230e+03 -2.4733106e+02 -4.6673439e+01
+1.5834414e+05 -4.4082289e+03 -9.0425037e+02
+2.6218237e+06 -2.7673487e+04 -7.8480494e+02
+6.3173903e+06 -5.3178413e+04 6.7860561e+03
+1.0145999e+07 -8.1231917e+04 5.1726525e+03
+1.2877523e+07 -1.0669066e+05 -2.5483716e+04
+1.4230966e+07 -1.2598270e+05 -8.9613677e+04
+1.4595315e+07 -1.3741759e+05 -1.7282634e+05
+1.4461540e+07 -1.4056028e+05 -2.4901112e+05
+1.4050746e+07 -1.3551492e+05 -2.8979203e+05
+1.3225989e+07 -1.2267779e+05 -2.7520173e+05
+1.1624907e+07 -1.0297138e+05 -2.0606262e+05
+8.9878080e+06 -7.8285828e+04 -1.1095455e+05
+5.5851366e+06 -5.1764150e+04 -3.3804124e+04
+2.3950742e+06 -2.7601775e+04 -5.2254718e+02
+1.5394579e+05 -4.4933376e+03 -4.2324772e+01
+8.7620549e+03 -2.5250639e+02 -3.2115099e+00
+4.9617220e+02 -1.4163378e+01 -1.9530043e-01
+2.5327598e+01 -7.1851107e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0122148e+01 -3.9115983e-01 -2.0043320e-01
+3.9438516e+02 -7.5939888e+00 -4.5516022e+00
+6.9727802e+03 -1.3371355e+02 -8.8965054e+01
+1.2269271e+05 -2.3643383e+03 -1.6841346e+03
+2.0501232e+06 -1.5162262e+04 -7.4977296e+02
+4.9312562e+06 -2.9594152e+04 6.4465056e+03
+7.9374250e+06 -4.5908271e+04 6.9912775e+03
+1.0111381e+07 -6.1113207e+04 -1.4842170e+04
+1.1215713e+07 -7.2847695e+04 -6.3029901e+04
+1.1534787e+07 -7.9806573e+04 -1.2675513e+05
+1.1441829e+07 -8.1542132e+04 -1.8573308e+05
+1.1107602e+07 -7.8081312e+04 -2.1771925e+05
+1.0429135e+07 -6.9802952e+04 -2.0709684e+05
+9.1341276e+06 -5.7594863e+04 -1.5459278e+05
+7.0369116e+06 -4.3000696e+04 -8.2392831e+04
+4.3632167e+06 -2.8061461e+04 -2.4139044e+04
+1.8737479e+06 -1.4914882e+04 6.7396848e+02
+1.1921227e+05 -2.4066870e+03 2.6049325e+01
+6.7574894e+03 -1.3638935e+02 6.8427621e-01
+3.8113922e+02 -7.7638232e+00 -2.5202989e-03
+1.9394945e+01 -4.0078326e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2822574e+01 -1.3328921e-01 -1.5660523e-01
+2.5153981e+02 -2.4079891e+00 -3.5396902e+00
+4.4656471e+03 -3.9197659e+01 -6.9405863e+01
+7.9161080e+04 -6.4562487e+02 -1.3308035e+03
+1.3025848e+06 -4.1289878e+03 3.1284134e+02
+3.1940125e+06 -8.3002437e+03 6.8909349e+03
+5.1796167e+06 -1.3551544e+04 9.5656670e+03
+6.6169357e+06 -1.9029862e+04 -2.7482414e+03
+7.3409316e+06 -2.3611867e+04 -3.3371447e+04
+7.5409837e+06 -2.6394575e+04 -7.5439086e+04
+7.4706859e+06 -2.6907519e+04 -1.1532441e+05
+7.2473230e+06 -2.5073963e+04 -1.3780757e+05
+6.8014040e+06 -2.1220383e+04 -1.3210061e+05
+5.9488275e+06 -1.6160288e+04 -9.8548445e+04
+4.5663373e+06 -1.1061978e+04 -5.1965053e+04
+2.8085637e+06 -6.8839847e+03 -1.4648320e+04
+1.1833039e+06 -3.7962472e+03 7.5053103e+02
+7.6813892e+04 -6.5689931e+02 3.3133031e+01
+4.3210901e+03 -4.0110259e+01 1.2972600e+00
+2.4266896e+02 -2.4779419e+00 3.8222471e-02
+1.2335779e+01 -1.3770556e-01 0.0000000e+00
+0 0 0
+0 0 0
+6.0351741e+00 -2.3594513e-02 -5.2917886e-02
+1.1614269e+02 -3.2259887e-01 -1.1593307e+00
+2.0405683e+03 -3.2769156e+00 -2.2092921e+01
+3.6664008e+04 -2.1967470e+01 -4.1532431e+02
+5.8879999e+05 1.8598993e+02 1.3729043e+03
+1.5364912e+06 5.4932810e+02 6.5326554e+03
+2.5349285e+06 2.5836890e+02 1.0094340e+04
+3.2408969e+06 -9.6448025e+02 5.5748962e+03
+3.5702295e+06 -2.5748344e+03 -9.3847250e+03
+3.6340129e+06 -3.7557466e+03 -3.1445895e+04
+3.5780701e+06 -3.9042587e+03 -5.3311147e+04
+3.4697993e+06 -2.8236830e+03 -6.6563858e+04
+3.2690643e+06 -8.2323500e+02 -6.5069450e+04
+2.8690392e+06 1.2405177e+03 -4.8751926e+04
+2.1949351e+06 2.2715151e+03 -2.5433455e+04
+1.3239064e+06 1.7600186e+03 -6.9403512e+03
+5.2373001e+05 5.1562468e+02 1.8700310e+02
+3.5471403e+04 -2.2227015e+01 7.4261534e+00
+1.9677256e+03 -3.5917970e+00 2.2435500e-01
+1.1163505e+02 -3.5354626e-01 2.1298193e-03
+5.7841859e+00 -2.5643200e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.6901156e+00 -3.3687021e-03 -2.2875822e-03
+2.7723224e+01 -3.8166200e-02 -2.3326018e-02
+3.7770268e+02 -2.9855226e-01 1.2178328e-01
+4.4965787e+03 -1.3667294e+00 1.1450443e+01
+4.0472680e+04 7.4154788e+00 4.4180916e+02
+9.3829013e+04 2.2380192e+01 1.5196713e+03
+1.4952570e+05 3.2674992e+00 2.4418133e+03
+1.9304909e+05 -6.6677117e+01 2.0408970e+03
+2.1904218e+05 -1.5894273e+02 -1.9719589e+02
+2.3006315e+05 -2.2692136e+02 -3.7867081e+03
+2.3078912e+05 -2.3477244e+02 -7.5003571e+03
+2.2357679e+05 -1.7113646e+02 -9.8727396e+03
+2.0721613e+05 -5.5654544e+01 -9.8268978e+03
+1.7854823e+05 6.0864798e+01 -7.3451302e+03
+1.3631958e+05 1.1734171e+02 -3.7554676e+03
+8.5484936e+04 8.9882971e+01 -1.0050884e+03
+3.7618735e+04 2.6672533e+01 -4.0322236e+01
+4.2553604e+03 -8.5133403e-01 -2.6022814e+00
+3.5903422e+02 -3.2527418e-01 -1.7578345e-01
+2.6365351e+01 -4.3755727e-02 -1.0390389e-02
+1.6058593e+00 -3.8525351e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.2145658e-01 -4.1927909e-04 8.6520345e-04
+4.4058750e+00 -4.1513779e-03 1.4094218e-02
+4.6588622e+01 -2.6917261e-02 1.8350368e-01
+3.9664487e+02 -9.7455560e-02 2.2104075e+00
+2.2977166e+03 2.2538652e-01 2.6408749e+01
+5.3295722e+03 7.2910960e-01 8.4034754e+01
+8.5373461e+03 -5.4668100e-01 1.3313335e+02
+1.1073407e+04 -4.5370339e+00 1.0918478e+02
+1.2607181e+04 -9.7665708e+00 -1.8274098e+01
+1.3265280e+04 -1.3626246e+01 -2.2259719e+02
+1.3310346e+04 -1.4033369e+01 -4.3297249e+02
+1.2880163e+04 -1.0347400e+01 -5.6472605e+02
+1.1909317e+04 -3.7797938e+00 -5.5771012e+02
+1.0224329e+04 2.7200902e+00 -4.1462984e+02
+7.7683142e+03 5.8210751e+00 -2.1342623e+02
+4.8394607e+03 4.4569687e+00 -6.1306888e+01
+2.1152561e+03 1.3457921e+00 -5.4726945e+00
+3.6982839e+02 -2.7311125e-02 -5.0986424e-01
+4.3695787e+01 -2.7438231e-02 -4.5020313e-02
+4.1416103e+00 -4.7794007e-03 -3.1306815e-03
+3.0230877e-01 -4.9174358e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.6097013e-02 -3.8092541e-05 2.2595845e-04
+5.3668430e-01 -3.4218583e-04 2.8788858e-03
+4.5682679e+00 -1.9426129e-03 2.7193586e-02
+3.0071802e+01 -6.2869141e-03 2.2564318e-01
+1.3312734e+02 2.1437763e-03 1.6013714e+00
+3.0253376e+02 1.1988317e-02 4.6723394e+00
+4.8534263e+02 -6.0182994e-02 7.2433994e+00
+6.3209878e+02 -2.5775539e-01 5.7945911e+00
+7.2219663e+02 -5.1380204e-01 -1.4395025e+00
+7.6144339e+02 -7.0264272e-01 -1.3002358e+01
+7.6430869e+02 -7.2091586e-01 -2.4844771e+01
+7.3872867e+02 -5.3770514e-01 -3.2122677e+01
+6.8126550e+02 -2.1610483e-01 -3.1510708e+01
+5.8263236e+02 9.7596643e-02 -2.3363082e+01
+4.4068558e+02 2.4691281e-01 -1.2180159e+01
+2.7370200e+02 1.9082432e-01 -3.7812444e+00
+1.2152099e+02 5.8635519e-02 -5.2276636e-01
+2.7712461e+01 -7.9704280e-04 -6.2872476e-02
+4.2341572e+00 -1.8328509e-03 -6.7704895e-03
+4.9890407e-01 -3.8625095e-04 -5.4558998e-04
+4.2904152e-02 -4.4744342e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.6150056e-03 0.0000000e+00 2.8017126e-05
+4.7361612e-02 0.0000000e+00 3.1261456e-04
+3.4217760e-01 0.0000000e+00 2.4790339e-03
+1.8758368e+00 0.0000000e+00 1.6551258e-02
+7.0200632e+00 0.0000000e+00 8.7658149e-02
+1.5536677e+01 0.0000000e+00 2.3623865e-01
+2.4885638e+01 0.0000000e+00 3.5724859e-01
+3.2506905e+01 0.0000000e+00 2.7790979e-01
+3.7255957e+01 0.0000000e+00 -9.2504351e-02
+3.9356328e+01 0.0000000e+00 -6.8180343e-01
+3.9520041e+01 0.0000000e+00 -1.2822189e+00
+3.8155315e+01 0.0000000e+00 -1.6453250e+00
+3.5101617e+01 0.0000000e+00 -1.6057518e+00
+2.9916645e+01 0.0000000e+00 -1.1901719e+00
+2.2550105e+01 0.0000000e+00 -6.3015177e-01
+1.4007536e+01 0.0000000e+00 -2.0990582e-01
+6.3639062e+00 0.0000000e+00 -3.7692622e-02
+1.7129793e+00 0.0000000e+00 -5.4416140e-03
+3.1413165e-01 0.0000000e+00 -6.7385447e-04
+4.3620866e-02 0.0000000e+00 -6.0300733e-05
+4.2576865e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.5351352e-03 4.3183513e-05 3.6686854e-05
+4.6599169e-02 3.9013746e-04 4.0899217e-04
+3.3713333e-01 2.2081073e-03 3.2451618e-03
+1.8505760e+00 6.7794408e-03 2.1726588e-02
+6.9335033e+00 -7.5651549e-03 1.1585159e-01
+1.5363292e+01 -3.0313470e-02 3.1954999e-01
+2.4652039e+01 4.2813677e-02 5.1033598e-01
+3.2271082e+01 2.7010317e-01 4.7605549e-01
+3.7058965e+01 5.7413459e-01 9.8913028e-02
+3.9195104e+01 8.0558791e-01 -5.4545090e-01
+3.9353714e+01 8.4364092e-01 -1.2227647e+00
+3.7932141e+01 6.5354322e-01 -1.6531343e+00
+3.4792861e+01 3.0559671e-01 -1.6499752e+00
+2.9544485e+01 -4.0918860e-02 -1.2368965e+00
+2.2189349e+01 -2.1678637e-01 -6.5935442e-01
+1.3744673e+01 -1.7542653e-01 -2.2106490e-01
+6.2335606e+00 -5.0320672e-02 -4.0398629e-02
+1.6749453e+00 3.6076196e-03 -5.9722337e-03
+3.0652430e-01 2.3911967e-03 -7.5608476e-04
+4.2468466e-02 4.6504481e-04 -6.8729035e-05
+4.1366835e-03 5.2273936e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.5364752e-02 4.6965596e-04 3.0578852e-04
+5.2883438e-01 4.6789077e-03 3.8669320e-03
+4.5077961e+00 3.0308849e-02 3.6237957e-02
+2.9712086e+01 1.0397835e-01 2.9875494e-01
+1.3167562e+02 -3.7347029e-01 2.1163870e+00
+2.9953204e+02 -1.2202739e+00 6.3080693e+00
+4.8137362e+02 2.4027105e-02 1.0295860e+01
+6.2830714e+02 4.6176555e+00 9.7399521e+00
+7.1933004e+02 1.0837714e+01 2.3429680e+00
+7.5936805e+02 1.5568761e+01 -1.0344863e+01
+7.6216821e+02 1.6372673e+01 -2.3733414e+01
+7.3546166e+02 1.2539594e+01 -3.2352456e+01
+6.7624129e+02 5.4328211e+00 -3.2455462e+01
+5.7619909e+02 -1.7290820e+00 -2.4334026e+01
+4.3425127e+02 -5.3461095e+00 -1.2770396e+01
+2.6897981e+02 -4.2334857e+00 -3.9901447e+00
+1.1925836e+02 -1.2127873e+00 -5.6504564e-01
+2.7151599e+01 6.9462782e-02 -7.0039154e-02
+4.1397575e+00 3.4489394e-02 -7.7377014e-03
+4.8663498e-01 5.6307018e-03 -6.3427193e-04
+4.1758033e-02 5.6412124e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.1687321e-01 3.7120078e-03 1.3410264e-03
+4.3487056e+00 4.2274418e-02 2.0914873e-02
+4.6049323e+01 3.3108108e-01 2.5944184e-01
+3.9255568e+02 1.4558463e+00 2.9967607e+00
+2.2762070e+03 -1.0750072e+01 3.4882922e+01
+5.2834519e+03 -3.3402360e+01 1.1318524e+02
+8.4780604e+03 -1.5730073e+01 1.8822496e+02
+1.1021227e+04 6.4904540e+01 1.8011857e+02
+1.2574169e+04 1.7486652e+02 4.9101709e+01
+1.3247735e+04 2.5819243e+02 -1.7597631e+02
+1.3292254e+04 2.7286012e+02 -4.1437190e+02
+1.2842072e+04 2.0648845e+02 -5.7022932e+02
+1.1838939e+04 8.1467531e+01 -5.7588594e+02
+1.0126182e+04 -4.6599300e+01 -4.3286915e+02
+7.6660534e+03 -1.1171531e+02 -2.2423909e+02
+4.7635560e+03 -8.7747055e+01 -6.4820869e+01
+2.0802292e+03 -2.4999752e+01 -6.0069857e+00
+3.6313801e+02 1.3362635e+00 -5.8340103e-01
+4.2812056e+01 3.8801544e-01 -5.3196042e-02
+4.0479102e+00 4.9910250e-02 -3.7754948e-03
+2.9479340e-01 4.3039939e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.6687058e+00 2.5602197e-02 -4.8032501e-04
+2.7407073e+01 3.5089711e-01 7.0473114e-03
+3.7391935e+02 3.5682408e+00 5.5321848e-01
+4.4572968e+03 2.3637367e+01 1.7653593e+01
+4.0153131e+04 -2.5624414e+02 5.8269703e+02
+9.3119283e+04 -7.8206947e+02 2.0410939e+03
+1.4864471e+05 -5.2738597e+02 3.4337393e+03
+1.9235220e+05 8.8561594e+02 3.3099177e+03
+2.1872201e+05 2.8088852e+03 9.9606442e+02
+2.3003444e+05 4.2562336e+03 -2.9732733e+03
+2.3075962e+05 4.5197028e+03 -7.1906176e+03
+2.2319716e+05 3.3886783e+03 -9.9931788e+03
+2.0625458e+05 1.2210449e+03 -1.0171207e+04
+1.7705801e+05 -1.0428851e+03 -7.6847040e+03
+1.3469469e+05 -2.2183431e+03 -3.9531843e+03
+8.4261630e+04 -1.7530682e+03 -1.0645573e+03
+3.7071902e+04 -4.9660863e+02 -4.6116300e+01
+4.1867925e+03 2.6989846e+01 -3.2019701e+00
+3.5241923e+02 4.0290531e+00 -2.2801178e-01
+2.5813456e+01 3.8764602e-01 -1.3852583e-02
+1.5685177e+00 2.7793007e-02 0.0000000e+00
+0 0 0
+0 0 0
+5.9680367e+00 1.4343422e-01 -5.0694592e-02
+1.1498365e+02 2.5934875e+00 -1.1342438e+00
+2.0227961e+03 4.2249690e+01 -2.2043419e+01
+3.6390150e+04 6.9635567e+02 -4.2090376e+02
+5.8156446e+05 4.5538226e+03 2.0045592e+03
+1.5193318e+06 9.2363901e+03 9.1454942e+03
+2.5132828e+06 1.5251181e+04 1.5012686e+04
+3.2236561e+06 2.1631166e+04 1.1507955e+04
+3.5620459e+06 2.7015281e+04 -4.5148522e+03
+3.6327249e+06 3.0300233e+04 -2.9270830e+04
+3.5766761e+06 3.0939372e+04 -5.4296476e+04
+3.4599925e+06 2.8872544e+04 -6.9973537e+04
+3.2452321e+06 2.4482787e+04 -6.9403132e+04
+2.8323702e+06 1.8673732e+04 -5.2450770e+04
+2.1551207e+06 1.2752499e+04 -2.7607167e+04
+1.2943992e+06 7.8381090e+03 -7.6912099e+03
+5.1118151e+05 4.2144316e+03 1.4625456e+02
+3.4941659e+04 6.9850074e+02 4.4879223e+00
+1.9336207e+03 4.2603263e+01 1.8629748e-02
+1.0942307e+02 2.6280439e+00 -9.7851310e-03
+5.6563990e+00 1.4579482e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2703445e+01 4.2014181e-01 -1.5757904e-01
+2.4942639e+02 8.1650642e+00 -3.6157336e+00
+4.4322526e+03 1.4391136e+02 -7.1882862e+01
+7.8632222e+04 2.5465595e+03 -1.3932282e+03
+1.2880318e+06 1.6640167e+04 1.0734297e+03
+3.1608727e+06 3.2799278e+04 1.0650408e+04
+5.1375892e+06 5.1274982e+04 1.6654128e+04
+6.5814135e+06 6.8620347e+04 5.1871329e+03
+7.3194031e+06 8.2017885e+04 -2.8286966e+04
+7.5289737e+06 8.9901283e+04 -7.5878023e+04
+7.4556636e+06 9.1780021e+04 -1.2169633e+05
+7.2150469e+06 8.7743925e+04 -1.4829157e+05
+6.7428818e+06 7.8253253e+04 -1.4353979e+05
+5.8674699e+06 6.4316076e+04 -1.0782454e+05
+4.4809466e+06 4.7709813e+04 -5.7391200e+04
+2.7447624e+06 3.0827676e+04 -1.6579432e+04
+1.1540928e+06 1.6163500e+04 6.8259983e+02
+7.5619335e+04 2.5480365e+03 2.7620702e+01
+4.2462496e+03 1.4417452e+02 8.8987702e-01
+2.3798070e+02 8.1920245e+00 1.4154111e-02
+1.2073607e+01 4.2212087e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.9991235e+01 7.5277746e-01 -2.0172287e-01
+3.9213136e+02 1.4878508e+01 -4.6613654e+00
+6.9385955e+03 2.6597785e+02 -9.2543219e+01
+1.2217483e+05 4.7449016e+03 -1.7729977e+03
+2.0346336e+06 3.0280648e+04 7.6180099e+01
+4.8942377e+06 5.8720632e+04 1.1173267e+04
+7.8937400e+06 9.0283910e+04 1.5849312e+04
+1.0082485e+07 1.1905182e+05 -5.6862771e+03
+1.1210234e+07 1.4080446e+05 -5.8994184e+04
+1.1543671e+07 1.5354569e+05 -1.3152269e+05
+1.1444754e+07 1.5683348e+05 -1.9950120e+05
+1.1082308e+07 1.5087892e+05 -2.3734236e+05
+1.0361353e+07 1.3618400e+05 -2.2749121e+05
+9.0279805e+06 1.1381927e+05 -1.7084731e+05
+6.9196932e+06 8.5991882e+04 -9.1910956e+04
+4.2733567e+06 5.6368443e+04 -2.7591729e+04
+1.8320557e+06 2.9724748e+04 5.3927378e+02
+1.1753332e+05 4.7503755e+03 1.5879394e+01
+6.6511126e+03 2.6646853e+02 -3.7869982e-02
+3.7442158e+02 1.4916031e+01 -4.4233939e-02
+1.9017636e+01 7.5519563e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6170980e+01 9.1866336e-01 -8.4721179e-02
+5.1179217e+02 1.8188424e+01 -2.2062858e+00
+9.0208750e+03 3.2497206e+02 -4.7452460e+01
+1.5820791e+05 5.7785935e+03 -9.4491738e+02
+2.6147385e+06 3.6283884e+04 1.3701230e+02
+6.2941318e+06 6.9729700e+04 1.2386455e+04
+1.0126794e+07 1.0632803e+05 1.5547310e+04
+1.2888333e+07 1.3923642e+05 -1.5447662e+04
+1.4279356e+07 1.6387276e+05 -8.6905985e+04
+1.4665702e+07 1.7826567e+05 -1.8201229e+05
+1.4524303e+07 1.8210249e+05 -2.7004465e+05
+1.4074201e+07 1.7565603e+05 -3.1827699e+05
+1.3188784e+07 1.5936574e+05 -3.0425386e+05
+1.1529399e+07 1.3415631e+05 -2.2908265e+05
+8.8670025e+06 1.0218660e+05 -1.2447188e+05
+5.4883291e+06 6.7484083e+04 -3.8780031e+04
+2.3510155e+06 3.5778643e+04 -7.7525047e+02
+1.5218868e+05 5.7919809e+03 -5.9749968e+01
+8.6472392e+03 3.2591100e+02 -4.3767646e+00
+4.8872211e+02 1.8249529e+01 -2.6017329e-01
+2.4900450e+01 9.2217053e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0454271e+01 7.5871983e-01 1.5310013e-01
+5.9408800e+02 1.4993113e+01 2.7548603e+00
+1.0443369e+04 2.6700354e+02 4.2061481e+01
+1.8271890e+05 4.7266521e+03 6.4977231e+02
+2.9650459e+06 2.9391617e+04 1.1636679e+03
+7.2067936e+06 5.6209845e+04 1.4453522e+04
+1.1598105e+07 8.5323885e+04 1.6608710e+04
+1.4712202e+07 1.1129821e+05 -2.1566422e+04
+1.6228557e+07 1.3062288e+05 -1.0691287e+05
+1.6604343e+07 1.4188396e+05 -2.1934752e+05
+1.6413094e+07 1.4492779e+05 -3.2293058e+05
+1.5914360e+07 1.3998860e+05 -3.7956642e+05
+1.4954118e+07 1.2735443e+05 -3.6297333e+05
+1.3120058e+07 1.0762365e+05 -2.7416362e+05
+1.0118061e+07 8.2341540e+04 -1.5016243e+05
+6.2583203e+06 5.4609825e+04 -4.8187162e+04
+2.6552090e+06 2.9052519e+04 -2.7449144e+03
+1.7572850e+05 4.7428638e+03 -1.7303043e+02
+1.0008775e+04 2.6806151e+02 -1.0818481e+01
+5.6720278e+02 1.5058518e+01 -5.7643212e-01
+2.8970994e+01 7.6231226e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2827966e+01 2.9365551e-01 3.7872108e-01
+6.3946107e+02 5.7935630e+00 7.4067060e+00
+1.1224291e+04 1.0294029e+02 1.2468864e+02
+1.9614361e+05 1.8173297e+03 2.0951501e+03
+3.1299040e+06 1.1249225e+04 2.3199755e+03
+7.6841603e+06 2.1467549e+04 1.6418823e+04
+1.2379338e+07 3.2519269e+04 1.8134006e+04
+1.5667315e+07 4.2341554e+04 -2.4350588e+04
+1.7222625e+07 4.9625943e+04 -1.1820788e+05
+1.7566291e+07 5.3863977e+04 -2.4134518e+05
+1.7335554e+07 5.5015468e+04 -3.5465061e+05
+1.6815926e+07 5.3173120e+04 -4.1675026e+05
+1.5834982e+07 4.8435352e+04 -3.9894920e+05
+1.3930808e+07 4.1004685e+04 -3.0206190e+05
+1.0762317e+07 3.1436942e+04 -1.6628681e+05
+6.6469563e+06 2.0890827e+04 -5.4353388e+04
+2.7919993e+06 1.1132043e+04 -4.4225102e+03
+1.8860018e+05 1.8247770e+03 -2.7044793e+02
+1.0754898e+04 1.0341524e+02 -1.6396774e+01
+6.1038920e+02 5.8224560e+00 -8.5138717e-01
+3.1222210e+01 2.9521990e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3571034e+01 -2.9365551e-01 4.6956110e-01
+6.5363053e+02 -5.7935628e+00 9.2669693e+00
+1.1467733e+04 -1.0294029e+02 1.5745008e+02
+2.0032696e+05 -1.8173294e+03 2.6628185e+03
+3.1754718e+06 -1.1249224e+04 2.8075691e+03
+7.8283161e+06 -2.1467546e+04 1.7218905e+04
+1.2618070e+07 -3.2519265e+04 1.8830280e+04
+1.5956448e+07 -4.2341549e+04 -2.5072179e+04
+1.7517801e+07 -4.9625938e+04 -1.2177543e+05
+1.7845977e+07 -5.3863972e+04 -2.4851287e+05
+1.7600363e+07 -5.5015457e+04 -3.6511419e+05
+1.7075367e+07 -5.3173110e+04 -4.2910829e+05
+1.6092114e+07 -4.8435345e+04 -4.1097754e+05
+1.4171279e+07 -4.1004677e+04 -3.1144275e+05
+1.0954762e+07 -3.1436939e+04 -1.7174872e+05
+6.7611319e+06 -2.0890825e+04 -5.6487077e+04
+2.8282044e+06 -1.1132042e+04 -5.0685717e+03
+1.9260667e+05 -1.8247769e+03 -3.0821042e+02
+1.0987201e+04 -1.0341523e+02 -1.8570945e+01
+6.2385732e+02 -5.8224555e+00 -9.5897812e-01
+3.1925907e+01 -2.9521987e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2827966e+01 -7.5871979e-01 3.7872110e-01
+6.3946107e+02 -1.4993112e+01 7.4067076e+00
+1.1224291e+04 -2.6700354e+02 1.2468865e+02
+1.9614361e+05 -4.7266520e+03 2.0951499e+03
+3.1299040e+06 -2.9391615e+04 2.3199755e+03
+7.6841603e+06 -5.6209843e+04 1.6418821e+04
+1.2379338e+07 -8.5323882e+04 1.8134005e+04
+1.5667315e+07 -1.1129820e+05 -2.4350591e+04
+1.7222625e+07 -1.3062287e+05 -1.1820788e+05
+1.7566291e+07 -1.4188395e+05 -2.4134518e+05
+1.7335554e+07 -1.4492778e+05 -3.5465061e+05
+1.6815926e+07 -1.3998860e+05 -4.1675026e+05
+1.5834982e+07 -1.2735442e+05 -3.9894919e+05
+1.3930808e+07 -1.0762365e+05 -3.0206190e+05
+1.0762317e+07 -8.2341537e+04 -1.6628681e+05
+6.6469563e+06 -5.4609823e+04 -5.4353389e+04
+2.7919994e+06 -2.9052518e+04 -4.4225102e+03
+1.8860018e+05 -4.7428637e+03 -2.7044793e+02
+1.0754898e+04 -2.6806150e+02 -1.6396774e+01
+6.1038920e+02 -1.5058518e+01 -8.5138716e-01
+3.1222210e+01 -7.6231224e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0454271e+01 -9.1866334e-01 1.5310016e-01
+5.9408800e+02 -1.8188424e+01 2.7548605e+00
+1.0443369e+04 -3.2497205e+02 4.2061486e+01
+1.8271890e+05 -5.7785934e+03 6.4977236e+02
+2.9650459e+06 -3.6283883e+04 1.1636670e+03
+7.2067936e+06 -6.9729698e+04 1.4453520e+04
+1.1598105e+07 -1.0632802e+05 1.6608711e+04
+1.4712202e+07 -1.3923641e+05 -2.1566423e+04
+1.6228557e+07 -1.6387276e+05 -1.0691287e+05
+1.6604343e+07 -1.7826567e+05 -2.1934752e+05
+1.6413094e+07 -1.8210249e+05 -3.2293058e+05
+1.5914360e+07 -1.7565603e+05 -3.7956642e+05
+1.4954118e+07 -1.5936574e+05 -3.6297334e+05
+1.3120058e+07 -1.3415631e+05 -2.7416362e+05
+1.0118061e+07 -1.0218659e+05 -1.5016243e+05
+6.2583203e+06 -6.7484081e+04 -4.8187163e+04
+2.6552090e+06 -3.5778642e+04 -2.7449143e+03
+1.7572850e+05 -5.7919808e+03 -1.7303043e+02
+1.0008775e+04 -3.2591100e+02 -1.0818481e+01
+5.6720278e+02 -1.8249529e+01 -5.7643212e-01
+2.8970994e+01 -9.2217052e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6170980e+01 -7.5277745e-01 -8.4721171e-02
+5.1179217e+02 -1.4878507e+01 -2.2062857e+00
+9.0208750e+03 -2.6597785e+02 -4.7452458e+01
+1.5820791e+05 -4.7449016e+03 -9.4491734e+02
+2.6147385e+06 -3.0280647e+04 1.3701175e+02
+6.2941318e+06 -5.8720631e+04 1.2386454e+04
+1.0126794e+07 -9.0283908e+04 1.5547309e+04
+1.2888333e+07 -1.1905181e+05 -1.5447663e+04
+1.4279356e+07 -1.4080446e+05 -8.6905986e+04
+1.4665702e+07 -1.5354568e+05 -1.8201229e+05
+1.4524303e+07 -1.5683347e+05 -2.7004465e+05
+1.4074201e+07 -1.5087891e+05 -3.1827699e+05
+1.3188784e+07 -1.3618400e+05 -3.0425386e+05
+1.1529399e+07 -1.1381927e+05 -2.2908265e+05
+8.8670025e+06 -8.5991880e+04 -1.2447188e+05
+5.4883291e+06 -5.6368442e+04 -3.8780031e+04
+2.3510155e+06 -2.9724747e+04 -7.7525039e+02
+1.5218868e+05 -4.7503755e+03 -5.9749979e+01
+8.6472392e+03 -2.6646852e+02 -4.3767647e+00
+4.8872211e+02 -1.4916031e+01 -2.6017330e-01
+2.4900450e+01 -7.5519562e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.9991235e+01 -4.2014181e-01 -2.0172287e-01
+3.9213136e+02 -8.1650641e+00 -4.6613655e+00
+6.9385955e+03 -1.4391135e+02 -9.2543218e+01
+1.2217483e+05 -2.5465595e+03 -1.7729977e+03
+2.0346336e+06 -1.6640167e+04 7.6179827e+01
+4.8942377e+06 -3.2799278e+04 1.1173266e+04
+7.8937400e+06 -5.1274980e+04 1.5849312e+04
+1.0082485e+07 -6.8620343e+04 -5.6862768e+03
+1.1210234e+07 -8.2017881e+04 -5.8994183e+04
+1.1543671e+07 -8.9901279e+04 -1.3152269e+05
+1.1444754e+07 -9.1780020e+04 -1.9950120e+05
+1.1082308e+07 -8.7743924e+04 -2.3734236e+05
+1.0361353e+07 -7.8253252e+04 -2.2749121e+05
+9.0279805e+06 -6.4316075e+04 -1.7084731e+05
+6.9196932e+06 -4.7709812e+04 -9.1910956e+04
+4.2733567e+06 -3.0827676e+04 -2.7591730e+04
+1.8320557e+06 -1.6163499e+04 5.3927384e+02
+1.1753332e+05 -2.5480365e+03 1.5879396e+01
+6.6511126e+03 -1.4417452e+02 -3.7870212e-02
+3.7442158e+02 -8.1920244e+00 -4.4233947e-02
+1.9017636e+01 -4.2212086e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2703445e+01 -1.4343422e-01 -1.5757904e-01
+2.4942639e+02 -2.5934874e+00 -3.6157336e+00
+4.4322526e+03 -4.2249690e+01 -7.1882863e+01
+7.8632222e+04 -6.9635567e+02 -1.3932282e+03
+1.2880318e+06 -4.5538226e+03 1.0734297e+03
+3.1608727e+06 -9.2363901e+03 1.0650408e+04
+5.1375892e+06 -1.5251181e+04 1.6654129e+04
+6.5814135e+06 -2.1631166e+04 5.1871324e+03
+7.3194031e+06 -2.7015282e+04 -2.8286967e+04
+7.5289737e+06 -3.0300234e+04 -7.5878024e+04
+7.4556636e+06 -3.0939372e+04 -1.2169633e+05
+7.2150469e+06 -2.8872543e+04 -1.4829157e+05
+6.7428818e+06 -2.4482787e+04 -1.4353979e+05
+5.8674699e+06 -1.8673731e+04 -1.0782454e+05
+4.4809466e+06 -1.2752499e+04 -5.7391201e+04
+2.7447624e+06 -7.8381088e+03 -1.6579432e+04
+1.1540928e+06 -4.2144316e+03 6.8259980e+02
+7.5619336e+04 -6.9850073e+02 2.7620701e+01
+4.2462496e+03 -4.2603263e+01 8.8987699e-01
+2.3798070e+02 -2.6280439e+00 1.4154110e-02
+1.2073607e+01 -1.4579482e-01 0.0000000e+00
+0 0 0
+0 0 0
+5.9680367e+00 -2.5602197e-02 -5.0694595e-02
+1.1498365e+02 -3.5089711e-01 -1.1342439e+00
+2.0227961e+03 -3.5682408e+00 -2.2043419e+01
+3.6390150e+04 -2.3637367e+01 -4.2090376e+02
+5.8156446e+05 2.5624414e+02 2.0045593e+03
+1.5193318e+06 7.8206949e+02 9.1454943e+03
+2.5132828e+06 5.2738598e+02 1.5012686e+04
+3.2236561e+06 -8.8561592e+02 1.1507955e+04
+3.5620459e+06 -2.8088852e+03 -4.5148523e+03
+3.6327249e+06 -4.2562335e+03 -2.9270830e+04
+3.5766761e+06 -4.5197028e+03 -5.4296476e+04
+3.4599925e+06 -3.3886783e+03 -6.9973537e+04
+3.2452321e+06 -1.2210448e+03 -6.9403131e+04
+2.8323702e+06 1.0428851e+03 -5.2450770e+04
+2.1551207e+06 2.2183431e+03 -2.7607168e+04
+1.2943992e+06 1.7530682e+03 -7.6912099e+03
+5.1118151e+05 4.9660864e+02 1.4625455e+02
+3.4941659e+04 -2.6989846e+01 4.4879217e+00
+1.9336207e+03 -4.0290531e+00 1.8629723e-02
+1.0942307e+02 -3.8764602e-01 -9.7851348e-03
+5.6563990e+00 -2.7793007e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.6687058e+00 -3.7120078e-03 -4.8032580e-04
+2.7407073e+01 -4.2274419e-02 7.0472978e-03
+3.7391935e+02 -3.3108107e-01 5.5321842e-01
+4.4572968e+03 -1.4558463e+00 1.7653593e+01
+4.0153131e+04 1.0750072e+01 5.8269702e+02
+9.3119283e+04 3.3402361e+01 2.0410939e+03
+1.4864471e+05 1.5730074e+01 3.4337393e+03
+1.9235220e+05 -6.4904541e+01 3.3099177e+03
+2.1872201e+05 -1.7486652e+02 9.9606438e+02
+2.3003444e+05 -2.5819243e+02 -2.9732732e+03
+2.3075962e+05 -2.7286011e+02 -7.1906176e+03
+2.2319716e+05 -2.0648845e+02 -9.9931788e+03
+2.0625458e+05 -8.1467532e+01 -1.0171207e+04
+1.7705801e+05 4.6599297e+01 -7.6847040e+03
+1.3469469e+05 1.1171531e+02 -3.9531843e+03
+8.4261630e+04 8.7747056e+01 -1.0645573e+03
+3.7071902e+04 2.4999752e+01 -4.6116300e+01
+4.1867925e+03 -1.3362635e+00 -3.2019701e+00
+3.5241923e+02 -3.8801542e-01 -2.2801178e-01
+2.5813456e+01 -4.9910249e-02 -1.3852583e-02
+1.5685177e+00 -4.3039938e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.1687321e-01 -4.6965596e-04 1.3410262e-03
+4.3487056e+00 -4.6789078e-03 2.0914872e-02
+4.6049323e+01 -3.0308848e-02 2.5944184e-01
+3.9255568e+02 -1.0397834e-01 2.9967607e+00
+2.2762070e+03 3.7347029e-01 3.4882922e+01
+5.2834519e+03 1.2202740e+00 1.1318524e+02
+8.4780604e+03 -2.4027109e-02 1.8822496e+02
+1.1021227e+04 -4.6176557e+00 1.8011857e+02
+1.2574169e+04 -1.0837714e+01 4.9101708e+01
+1.3247735e+04 -1.5568760e+01 -1.7597631e+02
+1.3292254e+04 -1.6372673e+01 -4.1437190e+02
+1.2842072e+04 -1.2539594e+01 -5.7022932e+02
+1.1838939e+04 -5.4328210e+00 -5.7588594e+02
+1.0126182e+04 1.7290820e+00 -4.3286916e+02
+7.6660534e+03 5.3461095e+00 -2.2423909e+02
+4.7635560e+03 4.2334858e+00 -6.4820869e+01
+2.0802292e+03 1.2127873e+00 -6.0069857e+00
+3.6313801e+02 -6.9462783e-02 -5.8340102e-01
+4.2812056e+01 -3.4489394e-02 -5.3196042e-02
+4.0479102e+00 -5.6307017e-03 -3.7754948e-03
+2.9479340e-01 -5.6412123e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.5364752e-02 -4.3183512e-05 3.0578850e-04
+5.2883438e-01 -3.9013745e-04 3.8669321e-03
+4.5077961e+00 -2.2081075e-03 3.6237956e-02
+2.9712086e+01 -6.7794409e-03 2.9875494e-01
+1.3167562e+02 7.5651557e-03 2.1163870e+00
+2.9953204e+02 3.0313470e-02 6.3080694e+00
+4.8137362e+02 -4.2813675e-02 1.0295860e+01
+6.2830714e+02 -2.7010317e-01 9.7399521e+00
+7.1933004e+02 -5.7413458e-01 2.3429680e+00
+7.5936805e+02 -8.0558789e-01 -1.0344863e+01
+7.6216821e+02 -8.4364092e-01 -2.3733414e+01
+7.3546166e+02 -6.5354322e-01 -3.2352456e+01
+6.7624129e+02 -3.0559674e-01 -3.2455462e+01
+5.7619909e+02 4.0918860e-02 -2.4334026e+01
+4.3425127e+02 2.1678636e-01 -1.2770396e+01
+2.6897981e+02 1.7542653e-01 -3.9901447e+00
+1.1925836e+02 5.0320676e-02 -5.6504565e-01
+2.7151599e+01 -3.6076190e-03 -7.0039154e-02
+4.1397575e+00 -2.3911967e-03 -7.7377013e-03
+4.8663498e-01 -4.6504481e-04 -6.3427193e-04
+4.1758033e-02 -5.2273937e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.5351352e-03 0.0000000e+00 3.6686853e-05
+4.6599169e-02 0.0000000e+00 4.0899215e-04
+3.3713333e-01 0.0000000e+00 3.2451619e-03
+1.8505760e+00 0.0000000e+00 2.1726588e-02
+6.9335033e+00 0.0000000e+00 1.1585159e-01
+1.5363292e+01 0.0000000e+00 3.1954999e-01
+2.4652039e+01 0.0000000e+00 5.1033598e-01
+3.2271082e+01 0.0000000e+00 4.7605549e-01
+3.7058965e+01 0.0000000e+00 9.8913032e-02
+3.9195104e+01 0.0000000e+00 -5.4545090e-01
+3.9353714e+01 0.0000000e+00 -1.2227647e+00
+3.7932141e+01 0.0000000e+00 -1.6531344e+00
+3.4792861e+01 0.0000000e+00 -1.6499751e+00
+2.9544485e+01 0.0000000e+00 -1.2368965e+00
+2.2189349e+01 0.0000000e+00 -6.5935442e-01
+1.3744673e+01 0.0000000e+00 -2.2106490e-01
+6.2335606e+00 0.0000000e+00 -4.0398630e-02
+1.6749453e+00 0.0000000e+00 -5.9722337e-03
+3.0652430e-01 0.0000000e+00 -7.5608475e-04
+4.2468466e-02 0.0000000e+00 -6.8729035e-05
+4.1366835e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.4413877e-03 4.8010316e-05 4.5737164e-05
+4.5699655e-02 4.3889247e-04 5.0635926e-04
+3.3114225e-01 2.5130112e-03 3.9844256e-03
+1.8203470e+00 7.7448496e-03 2.6468524e-02
+6.8290960e+00 -9.7754520e-03 1.4065128e-01
+1.5152400e+01 -4.0684802e-02 3.9222792e-01
+2.4363953e+01 3.6230009e-02 6.4408382e-01
+3.1973277e+01 2.9063339e-01 6.5125534e-01
+3.6800859e+01 6.3524629e-01 2.7411489e-01
+3.8976294e+01 9.0125825e-01 -4.0833363e-01
+3.9131405e+01 9.5514797e-01 -1.1411719e+00
+3.7651961e+01 7.6096451e-01 -1.6219563e+00
+3.4426106e+01 3.9512250e-01 -1.6503235e+00
+2.9117255e+01 2.5142516e-02 -1.2482355e+00
+2.1782866e+01 -1.7296126e-01 -6.6879073e-01
+1.3450847e+01 -1.4945178e-01 -2.2551292e-01
+6.0879024e+00 -3.7841687e-02 -4.2013086e-02
+1.6323970e+00 6.9058107e-03 -6.3705519e-03
+2.9801438e-01 2.9641370e-03 -8.2477236e-04
+4.1180790e-02 5.3901402e-04 -7.6110628e-05
+4.0016835e-03 5.8889348e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.4505450e-02 5.1377459e-04 3.9353760e-04
+5.1957309e-01 5.1799529e-03 4.9137646e-03
+4.4359366e+00 3.3970715e-02 4.5315580e-02
+2.9280994e+01 1.1676949e-01 3.6738307e-01
+1.2991994e+02 -4.5884410e-01 2.5721243e+00
+2.9587214e+02 -1.5512073e+00 7.7425417e+00
+4.7646163e+02 -2.8471640e-01 1.2975482e+01
+6.2347964e+02 4.8518900e+00 1.3241724e+01
+7.1548822e+02 1.1906387e+01 5.8123995e+00
+7.5641046e+02 1.7342730e+01 -7.6714903e+00
+7.5918044e+02 1.8462506e+01 -2.2191081e+01
+7.3131303e+02 1.4539588e+01 -3.1821072e+01
+6.7028582e+02 7.0694155e+00 -3.2539900e+01
+5.6884880e+02 -5.5435552e-01 -2.4610111e+01
+4.2703340e+02 -4.5876316e+00 -1.2977572e+01
+2.6371718e+02 -3.7867626e+00 -4.0776360e+00
+1.1673042e+02 -9.9448406e-01 -5.9305917e-01
+2.6523351e+01 1.1798465e-01 -7.5889859e-02
+4.0339811e+00 4.1448426e-02 -8.5976576e-03
+4.7290261e-01 6.3896930e-03 -7.1596670e-04
+4.0477273e-02 6.2368281e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.1150168e-01 3.9671685e-03 1.9181288e-03
+4.2813501e+00 4.5630808e-02 2.8822831e-02
+4.5409109e+01 3.6150031e-01 3.4150750e-01
+3.8765305e+02 1.5920067e+00 3.7689037e+00
+2.2501116e+03 -1.3020298e+01 4.2425763e+01
+5.2270780e+03 -4.1637770e+01 1.3888626e+02
+8.4043979e+03 -2.4563571e+01 2.3682769e+02
+1.0954028e+04 6.5548759e+01 2.4333007e+02
+1.2527992e+04 1.9036906e+02 1.1104420e+02
+1.3219082e+04 2.8609627e+02 -1.2905639e+02
+1.3263731e+04 3.0614921e+02 -3.8822040e+02
+1.2792698e+04 2.3804084e+02 -5.6234842e+02
+1.1755880e+04 1.0662113e+02 -5.7884119e+02
+1.0014842e+04 -2.9293846e+01 -4.3876109e+02
+7.5520521e+03 -1.0103765e+02 -2.2830984e+02
+4.6793255e+03 -8.1516059e+01 -6.6349991e+01
+2.0410964e+03 -2.1800009e+01 -6.4116506e+00
+3.5563139e+02 1.8626765e+00 -6.4972198e-01
+4.1820173e+01 4.4465044e-01 -6.1040703e-02
+3.9428772e+00 5.4791090e-02 -4.4090913e-03
+2.8638318e-01 4.6248117e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.6436884e+00 2.6721021e-02 2.2634876e-03
+2.7036107e+01 3.6795036e-01 5.0910905e-02
+3.6945016e+02 3.7651768e+00 1.1164262e+00
+4.4103811e+03 2.5123429e+01 2.4500744e+01
+3.9764102e+04 -3.0821413e+02 7.0872342e+02
+9.2250097e+04 -9.6668193e+02 2.5029542e+03
+1.4754620e+05 -7.3576036e+02 4.3126664e+03
+1.9144185e+05 8.4371986e+02 4.4448387e+03
+2.1823256e+05 3.0293016e+03 2.0953583e+03
+2.2987847e+05 4.6917530e+03 -2.1543255e+03
+2.3061549e+05 5.0452237e+03 -6.7492706e+03
+2.2268456e+05 3.8807088e+03 -9.8793339e+03
+2.0512815e+05 1.6008043e+03 -1.0247079e+04
+1.7538284e+05 -7.9632913e+02 -7.8048714e+03
+1.3289686e+05 -2.0766489e+03 -4.0314326e+03
+8.2911381e+04 -1.6716172e+03 -1.0910816e+03
+3.6460521e+04 -4.5006843e+02 -5.1431977e+01
+4.1097247e+03 3.1319318e+01 -3.8208512e+00
+3.4498892e+02 4.3378655e+00 -2.8376023e-01
+2.5194495e+01 4.0756716e-01 -1.7575826e-02
+1.5267040e+00 2.8862735e-02 0.0000000e+00
+0 0 0
+0 0 0
+5.8898853e+00 1.4754575e-01 -4.2673280e-02
+1.1363372e+02 2.6687049e+00 -9.9349693e-01
+2.0020760e+03 4.3475316e+01 -1.9983534e+01
+3.6070253e+04 7.1635568e+02 -3.9131887e+02
+5.7332312e+05 4.8418510e+03 2.6999564e+03
+1.4993610e+06 9.9603579e+03 1.1743762e+04
+2.4877873e+06 1.6672284e+04 1.9831182e+04
+3.2030107e+06 2.3888828e+04 1.7431483e+04
+3.5517824e+06 3.0004663e+04 7.1963860e+02
+3.6305305e+06 3.3724492e+04 -2.6118668e+04
+3.5747984e+06 3.4446597e+04 -5.3642322e+04
+3.4493759e+06 3.2146673e+04 -7.1291682e+04
+3.2198982e+06 2.7268736e+04 -7.1625697e+04
+2.7936611e+06 2.0793394e+04 -5.4506339e+04
+2.1132844e+06 1.4142810e+04 -2.8889513e+04
+1.2634580e+06 8.5766181e+03 -8.1964858e+03
+4.9796044e+05 4.4923145e+03 8.2194050e+01
+3.4347119e+04 7.0772117e+02 3.3199178e-01
+1.8953927e+03 4.3148359e+01 -2.5048221e-01
+1.0694545e+02 2.6592790e+00 -2.4578450e-02
+5.5133492e+00 1.4733403e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2564327e+01 4.3109923e-01 -1.4443478e-01
+2.4696734e+02 8.3831815e+00 -3.3998686e+00
+4.3936158e+03 1.4782431e+02 -6.9112012e+01
+7.8025165e+04 2.6161343e+03 -1.3618336e+03
+1.2718096e+06 1.7523643e+04 2.1785344e+03
+3.1230788e+06 3.4993296e+04 1.4939518e+04
+5.0894293e+06 5.5248903e+04 2.4522787e+04
+6.5409398e+06 7.4424560e+04 1.4460794e+04
+7.2955244e+06 8.9239622e+04 -2.0895503e+04
+7.5167163e+06 9.7862980e+04 -7.2776618e+04
+7.4409422e+06 9.9780483e+04 -1.2338915e+05
+7.1821313e+06 9.5171673e+04 -1.5349852e+05
+6.6820518e+06 8.4593750e+04 -1.4999361e+05
+5.7824276e+06 6.9174978e+04 -1.1333287e+05
+4.3916081e+06 5.0912858e+04 -6.0764473e+04
+2.6779639e+06 3.2519951e+04 -1.7909331e+04
+1.1233349e+06 1.6785529e+04 5.5530402e+02
+7.4292257e+04 2.5710857e+03 1.9017856e+01
+4.1627692e+03 1.4532187e+02 3.2472131e-01
+2.3273627e+02 8.2453202e+00 -1.6888320e-02
+1.1779834e+01 4.2421873e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.9834096e+01 7.7201052e-01 -1.8377165e-01
+3.8943802e+02 1.5271960e+01 -4.3792140e+00
+6.8980466e+03 2.7322935e+02 -8.9235346e+01
+1.2156730e+05 4.8768728e+03 -1.7424455e+03
+2.0170771e+06 3.1787060e+04 1.5506617e+03
+4.8513352e+06 6.2366037e+04 1.7080419e+04
+7.8428025e+06 9.6700447e+04 2.6566416e+04
+1.0048862e+07 1.2818333e+05 6.4309862e+03
+1.1204352e+07 1.5194580e+05 -5.0392814e+04
+1.1555336e+07 1.6567346e+05 -1.2986871e+05
+1.1450991e+07 1.6893418e+05 -2.0525956e+05
+1.1058393e+07 1.6207919e+05 -2.4825165e+05
+1.0291770e+07 1.4574296e+05 -2.3981780e+05
+8.9172283e+06 1.2115771e+05 -1.8104833e+05
+6.7968204e+06 9.0843118e+04 -9.8105774e+04
+4.1788564e+06 5.8939759e+04 -3.0025320e+04
+1.7877927e+06 3.0676802e+04 3.4637198e+02
+1.1565698e+05 4.7911757e+03 2.6239393e+00
+6.5316319e+03 2.6834458e+02 -9.1805573e-01
+3.6684825e+02 1.4993453e+01 -9.2856487e-02
+1.8591273e+01 7.5772493e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6062156e+01 9.4201466e-01 -6.1179199e-02
+5.1016378e+02 1.8670583e+01 -1.8314117e+00
+9.0012503e+03 3.3393620e+02 -4.2913536e+01
+1.5799765e+05 5.9429563e+03 -8.9873570e+02
+2.6056715e+06 3.8052091e+04 1.9032371e+03
+6.2648309e+06 7.3935285e+04 1.9634875e+04
+1.0100938e+07 1.1362093e+05 2.8570405e+04
+1.2896860e+07 1.4948546e+05 -1.2584125e+03
+1.4331752e+07 1.7626045e+05 -7.7968273e+04
+1.4744378e+07 1.9166646e+05 -1.8263800e+05
+1.4595740e+07 1.9542536e+05 -2.8056653e+05
+1.4103171e+07 1.8796772e+05 -3.3542514e+05
+1.3152070e+07 1.6987281e+05 -3.2284131e+05
+1.1429718e+07 1.4223302e+05 -2.4423522e+05
+8.7397030e+06 1.0753861e+05 -1.3363127e+05
+5.3856733e+06 7.0331033e+04 -4.2366714e+04
+2.3035144e+06 3.6841078e+04 -1.0298568e+03
+1.5018580e+05 5.8414019e+03 -7.7202941e+01
+8.5158244e+03 3.2809190e+02 -5.5354345e+00
+4.8017099e+02 1.8333345e+01 -3.2421082e-01
+2.4409435e+01 9.2452908e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0435832e+01 7.7792725e-01 1.8252605e-01
+5.9430997e+02 1.5390743e+01 3.2403984e+00
+1.0457747e+04 2.7441089e+02 4.8388005e+01
+1.8312228e+05 4.8626340e+03 7.2532896e+02
+2.9698870e+06 3.0813490e+04 3.1228747e+03
+7.2016410e+06 5.9561638e+04 2.2649102e+04
+1.1612053e+07 9.1091684e+04 3.1230572e+04
+1.4779666e+07 1.1935093e+05 -6.0988726e+03
+1.6356599e+07 1.4030691e+05 -9.8187227e+04
+1.6767817e+07 1.5232381e+05 -2.2231926e+05
+1.6568683e+07 1.5528557e+05 -3.3776816e+05
+1.6017161e+07 1.4955141e+05 -4.0215281e+05
+1.4973255e+07 1.3551567e+05 -3.8693221e+05
+1.3054992e+07 1.1390204e+05 -2.9353485e+05
+1.0007395e+07 8.6507263e+04 -1.6183722e+05
+6.1627311e+06 5.6829231e+04 -5.2746290e+04
+2.6124697e+06 2.9883011e+04 -3.0489770e+03
+1.7393210e+05 4.7824874e+03 -1.9365961e+02
+9.8856187e+03 2.6976897e+02 -1.2180090e+01
+5.5888659e+02 1.5120913e+01 -6.5146605e-01
+2.8480215e+01 7.6384279e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2892307e+01 3.0106427e-01 4.1252200e-01
+6.4133874e+02 5.9469944e+00 7.9786017e+00
+1.1268391e+04 1.0579841e+02 1.3249114e+02
+1.9707278e+05 1.8697720e+03 2.1961801e+03
+3.1467434e+06 1.1791741e+04 4.3785211e+03
+7.7002050e+06 2.2742034e+04 2.5153391e+04
+1.2427221e+07 3.4705415e+04 3.3656748e+04
+1.5783180e+07 4.5385032e+04 -8.2419472e+03
+1.7411240e+07 5.3277611e+04 -1.0982817e+05
+1.7797022e+07 5.7794260e+04 -2.4602965e+05
+1.7558335e+07 5.8910946e+04 -3.7243685e+05
+1.6979240e+07 5.6767940e+04 -4.4296739e+05
+1.5902485e+07 5.1503246e+04 -4.2645762e+05
+1.3899093e+07 4.3365518e+04 -3.2420646e+05
+1.0671222e+07 3.3004011e+04 -1.7960814e+05
+6.5619956e+06 2.1725914e+04 -5.9544110e+04
+2.7556495e+06 1.1444479e+04 -4.7557592e+03
+1.8708011e+05 1.8396848e+03 -2.9288895e+02
+1.0645599e+04 1.0404964e+02 -1.7871098e+01
+6.0272650e+02 5.8449384e+00 -9.3242295e-01
+3.0757912e+01 2.9571814e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3668229e+01 -3.0106424e-01 5.0493360e-01
+6.5615913e+02 -5.9469938e+00 9.8703200e+00
+1.1523403e+04 -1.0579840e+02 1.6579707e+02
+2.0145899e+05 -1.8697719e+03 2.7733090e+03
+3.1969337e+06 -1.1791740e+04 4.8949109e+03
+7.8525701e+06 -2.2742031e+04 2.6125038e+04
+1.2678967e+07 -3.4705409e+04 3.4638955e+04
+1.6090633e+07 -4.5385026e+04 -8.7757409e+03
+1.7729132e+07 -5.3277605e+04 -1.1355100e+05
+1.8101834e+07 -5.7794250e+04 -2.5381977e+05
+1.7848306e+07 -5.8910935e+04 -3.8394061e+05
+1.7261554e+07 -5.6767930e+04 -4.5659198e+05
+1.6178246e+07 -5.1503242e+04 -4.3971772e+05
+1.4152839e+07 -4.3365511e+04 -3.3454686e+05
+1.0871861e+07 -3.3004007e+04 -1.8563805e+05
+6.6808400e+06 -2.1725911e+04 -6.1894339e+04
+2.7946098e+06 -1.1444478e+04 -5.4108116e+03
+1.9120643e+05 -1.8396847e+03 -3.3120395e+02
+1.0884175e+04 -1.0404963e+02 -2.0079311e+01
+6.1650970e+02 -5.8449379e+00 -1.0418136e+00
+3.1475529e+01 -2.9571811e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2892307e+01 -7.7792723e-01 4.1252201e-01
+6.4133874e+02 -1.5390742e+01 7.9786018e+00
+1.1268391e+04 -2.7441088e+02 1.3249113e+02
+1.9707278e+05 -4.8626338e+03 2.1961800e+03
+3.1467434e+06 -3.0813489e+04 4.3785215e+03
+7.7002050e+06 -5.9561635e+04 2.5153391e+04
+1.2427221e+07 -9.1091680e+04 3.3656748e+04
+1.5783180e+07 -1.1935092e+05 -8.2419489e+03
+1.7411240e+07 -1.4030691e+05 -1.0982817e+05
+1.7797022e+07 -1.5232381e+05 -2.4602965e+05
+1.7558336e+07 -1.5528557e+05 -3.7243684e+05
+1.6979240e+07 -1.4955140e+05 -4.4296739e+05
+1.5902485e+07 -1.3551566e+05 -4.2645761e+05
+1.3899093e+07 -1.1390204e+05 -3.2420646e+05
+1.0671222e+07 -8.6507259e+04 -1.7960814e+05
+6.5619956e+06 -5.6829229e+04 -5.9544111e+04
+2.7556495e+06 -2.9883010e+04 -4.7557592e+03
+1.8708011e+05 -4.7824873e+03 -2.9288895e+02
+1.0645599e+04 -2.6976896e+02 -1.7871098e+01
+6.0272650e+02 -1.5120912e+01 -9.3242295e-01
+3.0757912e+01 -7.6384276e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0435832e+01 -9.4201464e-01 1.8252605e-01
+5.9430997e+02 -1.8670582e+01 3.2403983e+00
+1.0457747e+04 -3.3393620e+02 4.8388008e+01
+1.8312228e+05 -5.9429563e+03 7.2532879e+02
+2.9698870e+06 -3.8052089e+04 3.1228747e+03
+7.2016410e+06 -7.3935283e+04 2.2649101e+04
+1.1612053e+07 -1.1362093e+05 3.1230572e+04
+1.4779666e+07 -1.4948545e+05 -6.0988736e+03
+1.6356599e+07 -1.7626044e+05 -9.8187227e+04
+1.6767817e+07 -1.9166645e+05 -2.2231926e+05
+1.6568683e+07 -1.9542536e+05 -3.3776816e+05
+1.6017161e+07 -1.8796772e+05 -4.0215281e+05
+1.4973255e+07 -1.6987281e+05 -3.8693221e+05
+1.3054992e+07 -1.4223302e+05 -2.9353485e+05
+1.0007395e+07 -1.0753861e+05 -1.6183722e+05
+6.1627311e+06 -7.0331031e+04 -5.2746290e+04
+2.6124697e+06 -3.6841076e+04 -3.0489770e+03
+1.7393210e+05 -5.8414017e+03 -1.9365960e+02
+9.8856187e+03 -3.2809190e+02 -1.2180090e+01
+5.5888659e+02 -1.8333345e+01 -6.5146605e-01
+2.8480215e+01 -9.2452907e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6062156e+01 -7.7201051e-01 -6.1179214e-02
+5.1016378e+02 -1.5271960e+01 -1.8314120e+00
+9.0012503e+03 -2.7322935e+02 -4.2913538e+01
+1.5799765e+05 -4.8768727e+03 -8.9873566e+02
+2.6056715e+06 -3.1787059e+04 1.9032364e+03
+6.2648309e+06 -6.2366036e+04 1.9634875e+04
+1.0100938e+07 -9.6700445e+04 2.8570405e+04
+1.2896860e+07 -1.2818333e+05 -1.2584146e+03
+1.4331752e+07 -1.5194580e+05 -7.7968273e+04
+1.4744378e+07 -1.6567345e+05 -1.8263800e+05
+1.4595741e+07 -1.6893417e+05 -2.8056653e+05
+1.4103171e+07 -1.6207919e+05 -3.3542514e+05
+1.3152070e+07 -1.4574295e+05 -3.2284131e+05
+1.1429718e+07 -1.2115771e+05 -2.4423522e+05
+8.7397031e+06 -9.0843116e+04 -1.3363127e+05
+5.3856733e+06 -5.8939758e+04 -4.2366713e+04
+2.3035144e+06 -3.0676802e+04 -1.0298568e+03
+1.5018580e+05 -4.7911756e+03 -7.7202944e+01
+8.5158244e+03 -2.6834457e+02 -5.5354346e+00
+4.8017099e+02 -1.4993453e+01 -3.2421082e-01
+2.4409435e+01 -7.5772492e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.9834096e+01 -4.3109922e-01 -1.8377165e-01
+3.8943802e+02 -8.3831812e+00 -4.3792140e+00
+6.8980466e+03 -1.4782431e+02 -8.9235351e+01
+1.2156730e+05 -2.6161343e+03 -1.7424455e+03
+2.0170771e+06 -1.7523642e+04 1.5506610e+03
+4.8513352e+06 -3.4993295e+04 1.7080420e+04
+7.8428025e+06 -5.5248900e+04 2.6566417e+04
+1.0048862e+07 -7.4424556e+04 6.4309844e+03
+1.1204352e+07 -8.9239618e+04 -5.0392814e+04
+1.1555336e+07 -9.7862976e+04 -1.2986871e+05
+1.1450991e+07 -9.9780482e+04 -2.0525956e+05
+1.1058393e+07 -9.5171671e+04 -2.4825165e+05
+1.0291770e+07 -8.4593748e+04 -2.3981780e+05
+8.9172283e+06 -6.9174976e+04 -1.8104833e+05
+6.7968204e+06 -5.0912857e+04 -9.8105774e+04
+4.1788564e+06 -3.2519951e+04 -3.0025321e+04
+1.7877927e+06 -1.6785529e+04 3.4637195e+02
+1.1565698e+05 -2.5710857e+03 2.6239403e+00
+6.5316319e+03 -1.4532187e+02 -9.1805583e-01
+3.6684825e+02 -8.2453201e+00 -9.2856491e-02
+1.8591273e+01 -4.2421873e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2564327e+01 -1.4754574e-01 -1.4443477e-01
+2.4696734e+02 -2.6687047e+00 -3.3998687e+00
+4.3936158e+03 -4.3475317e+01 -6.9112022e+01
+7.8025165e+04 -7.1635568e+02 -1.3618336e+03
+1.2718096e+06 -4.8418510e+03 2.1785344e+03
+3.1230788e+06 -9.9603576e+03 1.4939519e+04
+5.0894293e+06 -1.6672284e+04 2.4522788e+04
+6.5409398e+06 -2.3888828e+04 1.4460792e+04
+7.2955244e+06 -3.0004661e+04 -2.0895504e+04
+7.5167163e+06 -3.3724491e+04 -7.2776618e+04
+7.4409422e+06 -3.4446596e+04 -1.2338915e+05
+7.1821313e+06 -3.2146672e+04 -1.5349852e+05
+6.6820518e+06 -2.7268735e+04 -1.4999361e+05
+5.7824276e+06 -2.0793393e+04 -1.1333287e+05
+4.3916082e+06 -1.4142810e+04 -6.0764473e+04
+2.6779639e+06 -8.5766178e+03 -1.7909331e+04
+1.1233349e+06 -4.4923143e+03 5.5530400e+02
+7.4292257e+04 -7.0772116e+02 1.9017856e+01
+4.1627692e+03 -4.3148359e+01 3.2472127e-01
+2.3273627e+02 -2.6592790e+00 -1.6888324e-02
+1.1779834e+01 -1.4733403e-01 0.0000000e+00
+0 0 0
+0 0 0
+5.8898853e+00 -2.6721022e-02 -4.2673279e-02
+1.1363372e+02 -3.6795041e-01 -9.9349756e-01
+2.0020760e+03 -3.7651769e+00 -1.9983536e+01
+3.6070253e+04 -2.5123429e+01 -3.9131887e+02
+5.7332312e+05 3.0821414e+02 2.6999565e+03
+1.4993610e+06 9.6668195e+02 1.1743762e+04
+2.4877873e+06 7.3576035e+02 1.9831183e+04
+3.2030107e+06 -8.4371992e+02 1.7431483e+04
+3.5517824e+06 -3.0293016e+03 7.1963803e+02
+3.6305305e+06 -4.6917529e+03 -2.6118668e+04
+3.5747984e+06 -5.0452237e+03 -5.3642323e+04
+3.4493759e+06 -3.8807088e+03 -7.1291682e+04
+3.2198982e+06 -1.6008042e+03 -7.1625697e+04
+2.7936611e+06 7.9632920e+02 -5.4506339e+04
+2.1132844e+06 2.0766489e+03 -2.8889513e+04
+1.2634580e+06 1.6716172e+03 -8.1964859e+03
+4.9796044e+05 4.5006843e+02 8.2194042e+01
+3.4347119e+04 -3.1319318e+01 3.3199148e-01
+1.8953927e+03 -4.3378656e+00 -2.5048221e-01
+1.0694545e+02 -4.0756716e-01 -2.4578451e-02
+5.5133492e+00 -2.8862734e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.6436884e+00 -3.9671688e-03 2.2634848e-03
+2.7036107e+01 -4.5630811e-02 5.0910861e-02
+3.6945016e+02 -3.6150031e-01 1.1164261e+00
+4.4103811e+03 -1.5920066e+00 2.4500743e+01
+3.9764102e+04 1.3020298e+01 7.0872342e+02
+9.2250097e+04 4.1637770e+01 2.5029542e+03
+1.4754620e+05 2.4563570e+01 4.3126664e+03
+1.9144185e+05 -6.5548758e+01 4.4448387e+03
+2.1823256e+05 -1.9036906e+02 2.0953582e+03
+2.2987847e+05 -2.8609627e+02 -2.1543256e+03
+2.3061549e+05 -3.0614920e+02 -6.7492706e+03
+2.2268456e+05 -2.3804083e+02 -9.8793339e+03
+2.0512815e+05 -1.0662113e+02 -1.0247079e+04
+1.7538284e+05 2.9293847e+01 -7.8048714e+03
+1.3289686e+05 1.0103765e+02 -4.0314326e+03
+8.2911381e+04 8.1516059e+01 -1.0910816e+03
+3.6460521e+04 2.1800009e+01 -5.1431977e+01
+4.1097247e+03 -1.8626766e+00 -3.8208513e+00
+3.4498892e+02 -4.4465044e-01 -2.8376022e-01
+2.5194495e+01 -5.4791089e-02 -1.7575825e-02
+1.5267040e+00 -4.6248117e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.1150168e-01 -5.1377460e-04 1.9181285e-03
+4.2813501e+00 -5.1799529e-03 2.8822829e-02
+4.5409109e+01 -3.3970713e-02 3.4150750e-01
+3.8765305e+02 -1.1676949e-01 3.7689036e+00
+2.2501116e+03 4.5884414e-01 4.2425763e+01
+5.2270780e+03 1.5512074e+00 1.3888626e+02
+8.4043979e+03 2.8471648e-01 2.3682769e+02
+1.0954028e+04 -4.8518900e+00 2.4333007e+02
+1.2527992e+04 -1.1906387e+01 1.1104419e+02
+1.3219082e+04 -1.7342730e+01 -1.2905639e+02
+1.3263731e+04 -1.8462506e+01 -3.8822040e+02
+1.2792698e+04 -1.4539588e+01 -5.6234842e+02
+1.1755880e+04 -7.0694155e+00 -5.7884119e+02
+1.0014842e+04 5.5435562e-01 -4.3876109e+02
+7.5520521e+03 4.5876316e+00 -2.2830984e+02
+4.6793255e+03 3.7867627e+00 -6.6349991e+01
+2.0410964e+03 9.9448406e-01 -6.4116507e+00
+3.5563139e+02 -1.1798464e-01 -6.4972198e-01
+4.1820173e+01 -4.1448425e-02 -6.1040702e-02
+3.9428772e+00 -6.3896930e-03 -4.4090913e-03
+2.8638318e-01 -6.2368280e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.4505450e-02 -4.8010312e-05 3.9353759e-04
+5.1957309e-01 -4.3889235e-04 4.9137645e-03
+4.4359366e+00 -2.5130110e-03 4.5315579e-02
+2.9280994e+01 -7.7448494e-03 3.6738307e-01
+1.2991994e+02 9.7754539e-03 2.5721244e+00
+2.9587214e+02 4.0684803e-02 7.7425417e+00
+4.7646163e+02 -3.6230001e-02 1.2975482e+01
+6.2347964e+02 -2.9063339e-01 1.3241724e+01
+7.1548822e+02 -6.3524627e-01 5.8123996e+00
+7.5641046e+02 -9.0125824e-01 -7.6714903e+00
+7.5918044e+02 -9.5514794e-01 -2.2191081e+01
+7.3131303e+02 -7.6096448e-01 -3.1821072e+01
+6.7028582e+02 -3.9512248e-01 -3.2539900e+01
+5.6884880e+02 -2.5142508e-02 -2.4610111e+01
+4.2703340e+02 1.7296126e-01 -1.2977572e+01
+2.6371718e+02 1.4945178e-01 -4.0776361e+00
+1.1673042e+02 3.7841689e-02 -5.9305917e-01
+2.6523351e+01 -6.9058102e-03 -7.5889859e-02
+4.0339811e+00 -2.9641370e-03 -8.5976576e-03
+4.7290261e-01 -5.3901400e-04 -7.1596668e-04
+4.0477273e-02 -5.8889348e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.4413878e-03 0.0000000e+00 4.5737170e-05
+4.5699655e-02 0.0000000e+00 5.0635918e-04
+3.3114225e-01 0.0000000e+00 3.9844254e-03
+1.8203470e+00 0.0000000e+00 2.6468524e-02
+6.8290960e+00 0.0000000e+00 1.4065128e-01
+1.5152400e+01 0.0000000e+00 3.9222792e-01
+2.4363953e+01 0.0000000e+00 6.4408382e-01
+3.1973277e+01 0.0000000e+00 6.5125534e-01
+3.6800859e+01 0.0000000e+00 2.7411489e-01
+3.8976294e+01 0.0000000e+00 -4.0833362e-01
+3.9131405e+01 0.0000000e+00 -1.1411719e+00
+3.7651961e+01 0.0000000e+00 -1.6219563e+00
+3.4426106e+01 0.0000000e+00 -1.6503235e+00
+2.9117255e+01 0.0000000e+00 -1.2482355e+00
+2.1782866e+01 0.0000000e+00 -6.6879073e-01
+1.3450847e+01 0.0000000e+00 -2.2551292e-01
+6.0879024e+00 0.0000000e+00 -4.2013086e-02
+1.6323970e+00 0.0000000e+00 -6.3705519e-03
+2.9801438e-01 0.0000000e+00 -8.2477235e-04
+4.1180790e-02 0.0000000e+00 -7.6110628e-05
+4.0016835e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.3350199e-03 5.1844261e-05 5.4523552e-05
+4.4674985e-02 4.8130350e-04 5.9788959e-04
+3.2428261e-01 2.8109434e-03 4.6465844e-03
+1.7855395e+00 8.9865472e-03 3.0467497e-02
+6.7081577e+00 -9.0769298e-03 1.6048269e-01
+1.4906392e+01 -4.3281711e-02 4.4977208e-01
+2.4023523e+01 3.9617089e-02 7.5058482e-01
+3.1613335e+01 3.1655793e-01 7.9396871e-01
+3.6478016e+01 6.9177403e-01 4.2503815e-01
+3.8693332e+01 9.8233945e-01 -2.7433976e-01
+3.8845577e+01 1.0475582e+00 -1.0360704e+00
+3.7308841e+01 8.5303436e-01 -1.5459847e+00
+3.3999117e+01 4.7989389e-01 -1.5988902e+00
+2.8636963e+01 9.8463586e-02 -1.2170620e+00
+2.1335344e+01 -1.1544797e-01 -6.5409180e-01
+1.3130604e+01 -1.1222794e-01 -2.2162067e-01
+5.9294468e+00 -2.0942688e-02 -4.2222386e-02
+1.5861313e+00 1.0630925e-02 -6.5876698e-03
+2.8877501e-01 3.5249502e-03 -8.7324528e-04
+3.9786282e-02 6.0304766e-04 -8.1784654e-05
+3.8558911e-03 6.4007793e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.3529609e-02 5.4429196e-04 4.8339355e-04
+5.0901361e-01 5.5743604e-03 5.9498190e-03
+4.3535695e+00 3.7298981e-02 5.3828895e-02
+2.8783875e+01 1.3281223e-01 4.2712211e-01
+1.2788273e+02 -4.8458752e-01 2.9398436e+00
+2.9159929e+02 -1.7178390e+00 8.8872597e+00
+4.7065017e+02 -3.8594169e-01 1.5124276e+01
+6.1761843e+02 5.1927150e+00 1.6109325e+01
+7.1060886e+02 1.2871963e+01 8.8084963e+00
+7.5245280e+02 1.8807215e+01 -5.0587200e+00
+7.5520805e+02 2.0150290e+01 -2.0189056e+01
+7.2617358e+02 1.6213960e+01 -3.0410529e+01
+6.6335792e+02 8.6001474e+00 -3.1602884e+01
+5.6061989e+02 7.7007027e-01 -2.4045577e+01
+4.1912103e+02 -3.5354509e+00 -1.2713205e+01
+2.5799893e+02 -3.0943575e+00 -4.0128164e+00
+1.1398093e+02 -6.8195990e-01 -6.0231013e-01
+2.5839477e+01 1.7204066e-01 -7.9846042e-02
+3.9189870e+00 4.7954736e-02 -9.2817662e-03
+4.5801129e-01 6.9971508e-03 -7.8455271e-04
+3.9092273e-02 6.6445483e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.0539896e-01 4.0819179e-03 2.5651024e-03
+4.2045360e+00 4.7584419e-02 3.7369139e-02
+4.4675064e+01 3.8389648e-01 4.2481630e-01
+3.8199370e+02 1.7376258e+00 4.4793503e+00
+2.2197642e+03 -1.4222264e+01 4.8564394e+01
+5.1612292e+03 -4.6862199e+01 1.5955758e+02
+8.3171716e+03 -2.9686784e+01 2.7608467e+02
+1.0871959e+04 6.7963467e+01 2.9538294e+02
+1.2467723e+04 2.0384280e+02 1.6468111e+02
+1.3177451e+04 3.0831217e+02 -8.3193180e+01
+1.3222553e+04 3.3211448e+02 -3.5397940e+02
+1.2730258e+04 2.6359985e+02 -5.3892463e+02
+1.1659475e+04 1.2969248e+02 -5.6361194e+02
+9.8909839e+03 -9.3792579e+00 -4.2960482e+02
+7.4278511e+03 -8.4932345e+01 -2.2400690e+02
+4.5882047e+03 -7.0617960e+01 -6.5362575e+01
+1.9985317e+03 -1.6841055e+01 -6.6387340e+00
+3.4745084e+02 2.4179217e+00 -7.0406619e-01
+4.0740956e+01 4.9118574e-01 -6.8080002e-02
+3.8289082e+00 5.7880259e-02 -4.9940903e-03
+2.7728267e-01 4.7708771e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.6152700e+00 2.6629411e-02 5.8709797e-03
+2.6613555e+01 3.6904457e-01 1.0696235e-01
+3.6433620e+02 3.8145300e+00 1.7902834e+00
+4.3562943e+03 2.5979764e+01 3.1634927e+01
+3.9310347e+04 -3.4083613e+02 8.1200388e+02
+9.1234931e+04 -1.0965992e+03 2.8769062e+03
+1.4624528e+05 -8.7891485e+02 5.0270503e+03
+1.9032246e+05 8.3039446e+02 5.3840101e+03
+2.1756019e+05 3.2107161e+03 3.0495123e+03
+2.2956554e+05 5.0245758e+03 -1.3538174e+03
+2.3032066e+05 5.4395861e+03 -6.1664525e+03
+2.2200973e+05 4.2641479e+03 -9.4921694e+03
+2.0382605e+05 1.9400985e+03 -1.0000476e+04
+1.7353462e+05 -5.0581458e+02 -7.6558231e+03
+1.3095284e+05 -1.8367153e+03 -3.9600246e+03
+8.1458672e+04 -1.5025437e+03 -1.0753901e+03
+3.5794770e+04 -3.7053453e+02 -5.5945285e+01
+4.0256935e+03 3.4939067e+01 -4.4351779e+00
+3.3691104e+02 4.4748328e+00 -3.4094850e-01
+2.4523569e+01 4.0926577e-01 -2.1407554e-02
+1.4814923e+00 2.8575020e-02 0.0000000e+00
+0 0 0
+0 0 0
+5.8010405e+00 1.4397296e-01 -2.8498796e-02
+1.1209965e+02 2.6021638e+00 -7.2755038e-01
+1.9785297e+03 4.2328247e+01 -1.5695019e+01
+3.5706353e+04 6.9597881e+02 -3.2179375e+02
+5.6429459e+05 4.9162724e+03 3.4496340e+03
+1.4771662e+06 1.0300163e+04 1.4247620e+04
+2.4592136e+06 1.7536988e+04 2.4405412e+04
+3.1795850e+06 2.5437464e+04 2.3224083e+04
+3.5397235e+06 3.2160249e+04 6.3334768e+03
+3.6274296e+06 3.6224341e+04 -2.1765432e+04
+3.5724004e+06 3.6985003e+04 -5.0912822e+04
+3.4381952e+06 3.4468371e+04 -6.9936358e+04
+3.1938397e+06 2.9187703e+04 -7.1125434e+04
+2.7542480e+06 2.2194038e+04 -5.4412160e+04
+2.0710154e+06 1.4998087e+04 -2.8977969e+04
+1.2323730e+06 8.9612162e+03 -8.3567180e+03
+4.8467280e+05 4.5687440e+03 -8.3556642e+00
+3.3702532e+04 6.7629080e+02 -5.1204290e+00
+1.8540497e+03 4.1279286e+01 -5.8191022e-01
+1.0426973e+02 2.5450383e+00 -4.1958861e-02
+5.3590194e+00 1.4094598e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2404493e+01 4.1963790e-01 -1.1583126e-01
+2.4415258e+02 8.1589703e+00 -2.8578696e+00
+4.3496327e+03 1.4379514e+02 -6.0341689e+01
+7.7339352e+04 2.5421977e+03 -1.2207470e+03
+1.2542194e+06 1.7577562e+04 3.7081518e+03
+3.0815578e+06 3.5665927e+04 1.9863380e+04
+5.0364400e+06 5.7027758e+04 3.3361910e+04
+6.4967207e+06 7.7495146e+04 2.5523341e+04
+7.2701694e+06 9.3347498e+04 -1.0308890e+04
+7.5049059e+06 1.0247160e+05 -6.4745714e+04
+7.4274632e+06 1.0432290e+05 -1.1860460e+05
+7.1502535e+06 9.9185903e+04 -1.5144440e+05
+6.6216475e+06 8.7739865e+04 -1.4959220e+05
+5.6973956e+06 7.1250686e+04 -1.1361693e+05
+4.3022956e+06 5.1921838e+04 -6.1228166e+04
+2.6113218e+06 3.2714476e+04 -1.8339323e+04
+1.0926139e+06 1.6586419e+04 3.6397091e+02
+7.2875437e+04 2.4498193e+03 7.2628069e+00
+4.0732493e+03 1.3845224e+02 -3.9024399e-01
+2.2709463e+02 7.8504578e+00 -5.4024396e-02
+1.1463223e+01 4.0353287e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.9646541e+01 7.5226179e-01 -1.4506969e-01
+3.8623115e+02 1.4887499e+01 -3.6667292e+00
+6.8499740e+03 2.6641397e+02 -7.8212894e+01
+1.2085217e+05 4.7546786e+03 -1.5755679e+03
+1.9973884e+06 3.1825737e+04 3.8648722e+03
+4.8030125e+06 6.3323801e+04 2.4529684e+04
+7.7853071e+06 9.9247621e+04 3.9805198e+04
+1.0010907e+07 1.3251205e+05 2.2742922e+04
+1.1197991e+07 1.5763902e+05 -3.5188335e+04
+1.1569581e+07 1.7195767e+05 -1.1891969e+05
+1.1460888e+07 1.7502136e+05 -1.9951493e+05
+1.1037473e+07 1.6733704e+05 -2.4674661e+05
+1.0223731e+07 1.4971309e+05 -2.4068107e+05
+8.8068037e+06 1.2358481e+05 -1.8259059e+05
+6.6738142e+06 9.1783159e+04 -9.9445772e+04
+4.0841934e+06 5.8821151e+04 -3.0889416e+04
+1.7432347e+06 3.0154503e+04 1.0047883e+02
+1.1364593e+05 4.5745474e+03 -1.3196109e+01
+6.4028574e+03 2.5594406e+02 -1.9134569e+00
+3.5865100e+02 1.4279948e+01 -1.4569501e-01
+1.8128550e+01 7.2056124e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.5916022e+01 9.1930396e-01 -2.0908710e-02
+5.0791863e+02 1.8235846e+01 -1.1240912e+00
+8.9728515e+03 3.2641467e+02 -3.2726040e+01
+1.5766598e+05 5.8121118e+03 -7.5849051e+02
+2.5938118e+06 3.8130837e+04 4.7961326e+03
+6.2287805e+06 7.5055769e+04 2.9114528e+04
+1.0067497e+07 1.1648651e+05 4.5316662e+04
+1.2901430e+07 1.5425834e+05 1.9000405e+04
+1.4385699e+07 1.8245603e+05 -5.9763960e+04
+1.4828677e+07 1.9843984e+05 -1.7054500e+05
+1.4673906e+07 2.0193042e+05 -2.7561914e+05
+1.4137410e+07 1.9352970e+05 -3.3605079e+05
+1.3117968e+07 1.7400624e+05 -3.2624175e+05
+1.1330292e+07 1.4467663e+05 -2.4790826e+05
+8.6115058e+06 1.0837599e+05 -1.3630385e+05
+5.2819204e+06 7.0056222e+04 -4.3785982e+04
+2.2549589e+06 3.6187843e+04 -1.2638093e+03
+1.4800043e+05 5.5892871e+03 -9.3178244e+01
+8.3717665e+03 3.1341285e+02 -6.5891635e+00
+4.7076514e+02 1.7478633e+01 -3.8200157e-01
+2.3868285e+01 8.7970964e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0376867e+01 7.6003728e-01 2.1823213e-01
+5.9387886e+02 1.5053352e+01 3.8318401e+00
+1.0463183e+04 2.6868869e+02 5.6121650e+01
+1.8340789e+05 4.7653636e+03 8.1726301e+02
+2.9715939e+06 3.0910394e+04 6.3307658e+03
+7.1891134e+06 6.0498927e+04 3.3415219e+04
+1.1618367e+07 9.3404458e+04 5.0183063e+04
+1.4844546e+07 1.2314375e+05 1.6417593e+04
+1.6489036e+07 1.4518736e+05 -7.8751081e+04
+1.6940523e+07 1.5763052e+05 -2.1064799e+05
+1.6734431e+07 1.6036234e+05 -3.3482816e+05
+1.6127729e+07 1.5387629e+05 -4.0574299e+05
+1.4996192e+07 1.3871407e+05 -3.9338776e+05
+1.2990126e+07 1.1577481e+05 -2.9962010e+05
+9.8949772e+06 8.7125505e+04 -1.6595217e+05
+6.0649705e+06 5.6585837e+04 -5.4721116e+04
+2.5678133e+06 2.9356830e+04 -3.2337145e+03
+1.7191274e+05 4.5821454e+03 -2.0721498e+02
+9.7469819e+03 2.5795903e+02 -1.3124425e+01
+5.4951967e+02 1.4426333e+01 -7.0520303e-01
+2.7927557e+01 7.2716428e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2915446e+01 2.9430762e-01 4.4259082e-01
+6.4256774e+02 5.8205865e+00 8.4463564e+00
+1.1303937e+04 1.0367675e+02 1.3791230e+02
+1.9789521e+05 1.8341280e+03 2.2467230e+03
+3.1603598e+06 1.1835870e+04 7.7047603e+03
+7.7087508e+06 2.3109261e+04 3.6548650e+04
+1.2467895e+07 3.5595453e+04 5.3682880e+04
+1.5897946e+07 4.6833453e+04 1.5226663e+04
+1.7606744e+07 5.5133513e+04 -9.0223534e+04
+1.8039938e+07 5.9807243e+04 -2.3531667e+05
+1.7794015e+07 6.0833670e+04 -3.7146705e+05
+1.7152315e+07 5.8403928e+04 -4.4906962e+05
+1.5974776e+07 5.2711558e+04 -4.3535809e+05
+1.3867606e+07 4.4071489e+04 -3.3216769e+05
+1.0577766e+07 3.3235154e+04 -1.8482049e+05
+6.4740551e+06 2.1631564e+04 -6.1925704e+04
+2.7167278e+06 1.1244278e+04 -4.8914457e+03
+1.8531093e+05 1.7635994e+03 -3.0372110e+02
+1.0518970e+04 9.9537516e+01 -1.8670018e+01
+5.9388415e+02 5.5782004e+00 -9.7953666e-01
+3.0223961e+01 2.8157855e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3724273e+01 -2.9430758e-01 5.3257100e-01
+6.5804617e+02 -5.8205859e+00 1.0286698e+01
+1.1570751e+04 -1.0367674e+02 1.7029213e+02
+2.0248978e+05 -1.8341278e+03 2.8077612e+03
+3.2151682e+06 -1.1835869e+04 8.2450416e+03
+7.8693364e+06 -2.3109258e+04 3.7697193e+04
+1.2732888e+07 -3.5595447e+04 5.4966406e+04
+1.6224343e+07 -4.6833444e+04 1.4923471e+04
+1.7948330e+07 -5.5133507e+04 -9.4007406e+04
+1.8371007e+07 -5.9807234e+04 -2.4356537e+05
+1.8110182e+07 -6.0833659e+04 -3.8377395e+05
+1.7458256e+07 -5.8403916e+04 -4.6366838e+05
+1.6269546e+07 -5.2711551e+04 -4.4954525e+05
+1.4134648e+07 -4.4071481e+04 -3.4321082e+05
+1.0786378e+07 -3.3235149e+04 -1.9125750e+05
+6.5972699e+06 -2.1631559e+04 -6.4424245e+04
+2.7582005e+06 -1.1244276e+04 -5.5264001e+03
+1.8954811e+05 -1.7635992e+03 -3.4088378e+02
+1.0763181e+04 -9.9537506e+01 -2.0814231e+01
+6.0793776e+02 -5.5781999e+00 -1.0858922e+00
+3.0952794e+01 -2.8157852e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2915446e+01 -7.6003726e-01 4.4259076e-01
+6.4256774e+02 -1.5053351e+01 8.4463563e+00
+1.1303937e+04 -2.6868868e+02 1.3791230e+02
+1.9789521e+05 -4.7653635e+03 2.2467230e+03
+3.1603598e+06 -3.0910393e+04 7.7047598e+03
+7.7087508e+06 -6.0498924e+04 3.6548650e+04
+1.2467895e+07 -9.3404452e+04 5.3682879e+04
+1.5897946e+07 -1.2314374e+05 1.5226661e+04
+1.7606744e+07 -1.4518735e+05 -9.0223533e+04
+1.8039938e+07 -1.5763051e+05 -2.3531667e+05
+1.7794015e+07 -1.6036233e+05 -3.7146705e+05
+1.7152315e+07 -1.5387629e+05 -4.4906962e+05
+1.5974776e+07 -1.3871406e+05 -4.3535809e+05
+1.3867606e+07 -1.1577480e+05 -3.3216769e+05
+1.0577766e+07 -8.7125499e+04 -1.8482049e+05
+6.4740551e+06 -5.6585834e+04 -6.1925704e+04
+2.7167278e+06 -2.9356829e+04 -4.8914457e+03
+1.8531093e+05 -4.5821453e+03 -3.0372110e+02
+1.0518970e+04 -2.5795902e+02 -1.8670018e+01
+5.9388415e+02 -1.4426333e+01 -9.7953666e-01
+3.0223961e+01 -7.2716426e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0376867e+01 -9.1930391e-01 2.1823210e-01
+5.9387886e+02 -1.8235845e+01 3.8318398e+00
+1.0463183e+04 -3.2641466e+02 5.6121637e+01
+1.8340789e+05 -5.8121116e+03 8.1726301e+02
+2.9715939e+06 -3.8130835e+04 6.3307667e+03
+7.1891134e+06 -7.5055767e+04 3.3415218e+04
+1.1618367e+07 -1.1648651e+05 5.0183064e+04
+1.4844546e+07 -1.5425833e+05 1.6417591e+04
+1.6489036e+07 -1.8245602e+05 -7.8751081e+04
+1.6940523e+07 -1.9843983e+05 -2.1064800e+05
+1.6734431e+07 -2.0193041e+05 -3.3482816e+05
+1.6127729e+07 -1.9352970e+05 -4.0574299e+05
+1.4996192e+07 -1.7400623e+05 -3.9338776e+05
+1.2990126e+07 -1.4467663e+05 -2.9962010e+05
+9.8949772e+06 -1.0837599e+05 -1.6595217e+05
+6.0649705e+06 -7.0056218e+04 -5.4721116e+04
+2.5678133e+06 -3.6187842e+04 -3.2337145e+03
+1.7191274e+05 -5.5892870e+03 -2.0721498e+02
+9.7469819e+03 -3.1341285e+02 -1.3124425e+01
+5.4951967e+02 -1.7478633e+01 -7.0520303e-01
+2.7927557e+01 -8.7970962e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.5916022e+01 -7.5226180e-01 -2.0908707e-02
+5.0791862e+02 -1.4887499e+01 -1.1240941e+00
+8.9728515e+03 -2.6641395e+02 -3.2726046e+01
+1.5766598e+05 -4.7546784e+03 -7.5849064e+02
+2.5938118e+06 -3.1825736e+04 4.7961322e+03
+6.2287805e+06 -6.3323799e+04 2.9114530e+04
+1.0067497e+07 -9.9247618e+04 4.5316662e+04
+1.2901430e+07 -1.3251204e+05 1.9000404e+04
+1.4385699e+07 -1.5763901e+05 -5.9763962e+04
+1.4828677e+07 -1.7195767e+05 -1.7054501e+05
+1.4673906e+07 -1.7502135e+05 -2.7561914e+05
+1.4137410e+07 -1.6733704e+05 -3.3605079e+05
+1.3117968e+07 -1.4971309e+05 -3.2624175e+05
+1.1330292e+07 -1.2358480e+05 -2.4790826e+05
+8.6115058e+06 -9.1783158e+04 -1.3630385e+05
+5.2819204e+06 -5.8821152e+04 -4.3785982e+04
+2.2549589e+06 -3.0154503e+04 -1.2638094e+03
+1.4800043e+05 -4.5745474e+03 -9.3178242e+01
+8.3717665e+03 -2.5594406e+02 -6.5891638e+00
+4.7076514e+02 -1.4279947e+01 -3.8200159e-01
+2.3868285e+01 -7.2056123e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.9646541e+01 -4.1963790e-01 -1.4506967e-01
+3.8623115e+02 -8.1589703e+00 -3.6667284e+00
+6.8499740e+03 -1.4379514e+02 -7.8212923e+01
+1.2085217e+05 -2.5421977e+03 -1.5755682e+03
+1.9973884e+06 -1.7577561e+04 3.8648718e+03
+4.8030126e+06 -3.5665926e+04 2.4529685e+04
+7.7853071e+06 -5.7027757e+04 3.9805199e+04
+1.0010907e+07 -7.7495135e+04 2.2742919e+04
+1.1197991e+07 -9.3347491e+04 -3.5188336e+04
+1.1569581e+07 -1.0247160e+05 -1.1891969e+05
+1.1460888e+07 -1.0432290e+05 -1.9951493e+05
+1.1037473e+07 -9.9185899e+04 -2.4674661e+05
+1.0223731e+07 -8.7739863e+04 -2.4068107e+05
+8.8068037e+06 -7.1250682e+04 -1.8259059e+05
+6.6738142e+06 -5.1921837e+04 -9.9445772e+04
+4.0841934e+06 -3.2714476e+04 -3.0889416e+04
+1.7432347e+06 -1.6586419e+04 1.0047878e+02
+1.1364593e+05 -2.4498193e+03 -1.3196110e+01
+6.4028574e+03 -1.3845224e+02 -1.9134568e+00
+3.5865100e+02 -7.8504577e+00 -1.4569502e-01
+1.8128550e+01 -4.0353286e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2404493e+01 -1.4397296e-01 -1.1583127e-01
+2.4415258e+02 -2.6021638e+00 -2.8578696e+00
+4.3496327e+03 -4.2328248e+01 -6.0341689e+01
+7.7339352e+04 -6.9597883e+02 -1.2207472e+03
+1.2542194e+06 -4.9162723e+03 3.7081519e+03
+3.0815578e+06 -1.0300163e+04 1.9863381e+04
+5.0364400e+06 -1.7536987e+04 3.3361913e+04
+6.4967207e+06 -2.5437466e+04 2.5523337e+04
+7.2701694e+06 -3.2160247e+04 -1.0308892e+04
+7.5049059e+06 -3.6224340e+04 -6.4745715e+04
+7.4274632e+06 -3.6985000e+04 -1.1860461e+05
+7.1502535e+06 -3.4468369e+04 -1.5144440e+05
+6.6216475e+06 -2.9187701e+04 -1.4959220e+05
+5.6973957e+06 -2.2194038e+04 -1.1361693e+05
+4.3022956e+06 -1.4998086e+04 -6.1228167e+04
+2.6113218e+06 -8.9612159e+03 -1.8339323e+04
+1.0926139e+06 -4.5687440e+03 3.6397091e+02
+7.2875437e+04 -6.7629080e+02 7.2628062e+00
+4.0732493e+03 -4.1279285e+01 -3.9024410e-01
+2.2709463e+02 -2.5450383e+00 -5.4024402e-02
+1.1463223e+01 -1.4094598e-01 0.0000000e+00
+0 0 0
+0 0 0
+5.8010405e+00 -2.6629411e-02 -2.8498799e-02
+1.1209965e+02 -3.6904457e-01 -7.2755044e-01
+1.9785297e+03 -3.8145301e+00 -1.5695021e+01
+3.5706353e+04 -2.5979764e+01 -3.2179377e+02
+5.6429459e+05 3.4083614e+02 3.4496340e+03
+1.4771662e+06 1.0965992e+03 1.4247620e+04
+2.4592136e+06 8.7891487e+02 2.4405413e+04
+3.1795850e+06 -8.3039460e+02 2.3224083e+04
+3.5397235e+06 -3.2107162e+03 6.3334762e+03
+3.6274296e+06 -5.0245756e+03 -2.1765432e+04
+3.5724004e+06 -5.4395860e+03 -5.0912823e+04
+3.4381952e+06 -4.2641479e+03 -6.9936358e+04
+3.1938397e+06 -1.9400986e+03 -7.1125434e+04
+2.7542480e+06 5.0581466e+02 -5.4412160e+04
+2.0710154e+06 1.8367154e+03 -2.8977970e+04
+1.2323730e+06 1.5025437e+03 -8.3567181e+03
+4.8467280e+05 3.7053454e+02 -8.3556628e+00
+3.3702532e+04 -3.4939066e+01 -5.1204292e+00
+1.8540497e+03 -4.4748328e+00 -5.8191022e-01
+1.0426973e+02 -4.0926576e-01 -4.1958863e-02
+5.3590194e+00 -2.8575019e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.6152700e+00 -4.0819177e-03 5.8709796e-03
+2.6613555e+01 -4.7584421e-02 1.0696232e-01
+3.6433620e+02 -3.8389648e-01 1.7902833e+00
+4.3562943e+03 -1.7376258e+00 3.1634927e+01
+3.9310347e+04 1.4222264e+01 8.1200388e+02
+9.1234931e+04 4.6862199e+01 2.8769062e+03
+1.4624528e+05 2.9686786e+01 5.0270504e+03
+1.9032246e+05 -6.7963473e+01 5.3840101e+03
+2.1756019e+05 -2.0384280e+02 3.0495122e+03
+2.2956554e+05 -3.0831216e+02 -1.3538174e+03
+2.3032066e+05 -3.3211445e+02 -6.1664525e+03
+2.2200973e+05 -2.6359984e+02 -9.4921694e+03
+2.0382605e+05 -1.2969247e+02 -1.0000476e+04
+1.7353462e+05 9.3792582e+00 -7.6558230e+03
+1.3095284e+05 8.4932342e+01 -3.9600246e+03
+8.1458672e+04 7.0617960e+01 -1.0753901e+03
+3.5794770e+04 1.6841055e+01 -5.5945285e+01
+4.0256935e+03 -2.4179217e+00 -4.4351779e+00
+3.3691104e+02 -4.9118574e-01 -3.4094850e-01
+2.4523569e+01 -5.7880259e-02 -2.1407554e-02
+1.4814923e+00 -4.7708770e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.0539896e-01 -5.4429200e-04 2.5651019e-03
+4.2045360e+00 -5.5743607e-03 3.7369135e-02
+4.4675064e+01 -3.7298980e-02 4.2481629e-01
+3.8199370e+02 -1.3281223e-01 4.4793504e+00
+2.2197642e+03 4.8458753e-01 4.8564394e+01
+5.1612292e+03 1.7178391e+00 1.5955758e+02
+8.3171716e+03 3.8594175e-01 2.7608468e+02
+1.0871959e+04 -5.1927150e+00 2.9538294e+02
+1.2467723e+04 -1.2871963e+01 1.6468111e+02
+1.3177451e+04 -1.8807215e+01 -8.3193174e+01
+1.3222553e+04 -2.0150291e+01 -3.5397941e+02
+1.2730258e+04 -1.6213960e+01 -5.3892463e+02
+1.1659475e+04 -8.6001473e+00 -5.6361194e+02
+9.8909839e+03 -7.7007026e-01 -4.2960482e+02
+7.4278511e+03 3.5354509e+00 -2.2400690e+02
+4.5882047e+03 3.0943576e+00 -6.5362575e+01
+1.9985317e+03 6.8195989e-01 -6.6387340e+00
+3.4745084e+02 -1.7204066e-01 -7.0406619e-01
+4.0740956e+01 -4.7954736e-02 -6.8080001e-02
+3.8289082e+00 -6.9971507e-03 -4.9940902e-03
+2.7728267e-01 -6.6445484e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.3529609e-02 -5.1844256e-05 4.8339352e-04
+5.0901361e-01 -4.8130340e-04 5.9498191e-03
+4.3535695e+00 -2.8109417e-03 5.3828894e-02
+2.8783875e+01 -8.9865463e-03 4.2712211e-01
+1.2788273e+02 9.0769298e-03 2.9398436e+00
+2.9159929e+02 4.3281712e-02 8.8872597e+00
+4.7065017e+02 -3.9617088e-02 1.5124276e+01
+6.1761843e+02 -3.1655793e-01 1.6109325e+01
+7.1060886e+02 -6.9177403e-01 8.8084962e+00
+7.5245280e+02 -9.8233942e-01 -5.0587198e+00
+7.5520805e+02 -1.0475582e+00 -2.0189056e+01
+7.2617358e+02 -8.5303430e-01 -3.0410529e+01
+6.6335792e+02 -4.7989388e-01 -3.1602884e+01
+5.6061989e+02 -9.8463582e-02 -2.4045577e+01
+4.1912103e+02 1.1544798e-01 -1.2713205e+01
+2.5799893e+02 1.1222795e-01 -4.0128164e+00
+1.1398093e+02 2.0942691e-02 -6.0231013e-01
+2.5839477e+01 -1.0630925e-02 -7.9846042e-02
+3.9189870e+00 -3.5249502e-03 -9.2817662e-03
+4.5801130e-01 -6.0304766e-04 -7.8455271e-04
+3.9092273e-02 -6.4007793e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.3350199e-03 0.0000000e+00 5.4523553e-05
+4.4674985e-02 0.0000000e+00 5.9788969e-04
+3.2428261e-01 0.0000000e+00 4.6465833e-03
+1.7855396e+00 0.0000000e+00 3.0467496e-02
+6.7081577e+00 0.0000000e+00 1.6048269e-01
+1.4906392e+01 0.0000000e+00 4.4977208e-01
+2.4023523e+01 0.0000000e+00 7.5058482e-01
+3.1613335e+01 0.0000000e+00 7.9396871e-01
+3.6478016e+01 0.0000000e+00 4.2503815e-01
+3.8693332e+01 0.0000000e+00 -2.7433975e-01
+3.8845577e+01 0.0000000e+00 -1.0360703e+00
+3.7308841e+01 0.0000000e+00 -1.5459847e+00
+3.3999117e+01 0.0000000e+00 -1.5988902e+00
+2.8636963e+01 0.0000000e+00 -1.2170620e+00
+2.1335344e+01 0.0000000e+00 -6.5409180e-01
+1.3130604e+01 0.0000000e+00 -2.2162067e-01
+5.9294468e+00 0.0000000e+00 -4.2222386e-02
+1.5861313e+00 0.0000000e+00 -6.5876698e-03
+2.8877501e-01 0.0000000e+00 -8.7324528e-04
+3.9786282e-02 0.0000000e+00 -8.1784654e-05
+3.8558911e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.2195233e-03 5.3477036e-05 6.2019565e-05
+4.3558475e-02 5.0510700e-04 6.7342251e-04
+3.1677508e-01 3.0165927e-03 5.1643678e-03
+1.7472603e+00 1.0077562e-02 3.3366099e-02
+6.5744639e+00 -6.7205936e-03 1.7378053e-01
+1.4632597e+01 -4.0323681e-02 4.8789991e-01
+2.3639859e+01 4.9148301e-02 8.2241533e-01
+3.1198870e+01 3.4172081e-01 8.9515950e-01
+3.6094220e+01 7.3534071e-01 5.4361509e-01
+3.8346125e+01 1.0392244e+00 -1.4840210e-01
+3.8494223e+01 1.1112804e+00 -9.0832856e-01
+3.6901699e+01 9.2121726e-01 -1.4224032e+00
+3.3514088e+01 5.5325013e-01 -1.4906244e+00
+2.8109661e+01 1.7485638e-01 -1.1381788e+00
+2.0854881e+01 -4.5983651e-02 -6.1173218e-01
+1.2790859e+01 -6.4028244e-02 -2.0795888e-01
+5.7618794e+00 3.4289354e-04 -4.0734300e-02
+1.5373047e+00 1.4666157e-02 -6.5738237e-03
+2.7905857e-01 4.0363064e-03 -8.9369516e-04
+3.8327405e-02 6.5002418e-04 -8.4842312e-05
+3.7042805e-03 6.6768319e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.2467446e-02 5.5006426e-04 5.6557600e-04
+4.9748448e-01 5.7345191e-03 6.8652917e-03
+4.2632743e+00 3.9250071e-02 6.0927015e-02
+2.8236407e+01 1.4584443e-01 4.7262823e-01
+1.2562845e+02 -4.7057446e-01 3.1907657e+00
+2.8684544e+02 -1.7530443e+00 9.6573329e+00
+4.6410468e+02 -3.4074078e-01 1.6592717e+01
+6.1085963e+02 5.5322340e+00 1.8161005e+01
+7.0475491e+02 1.3580017e+01 1.1170276e+01
+7.4748403e+02 1.9781472e+01 -2.6031950e+00
+7.5020227e+02 2.1255058e+01 -1.7741197e+01
+7.2000972e+02 1.7403298e+01 -2.8059423e+01
+6.5548445e+02 9.9041948e+00 -2.9536893e+01
+5.5161342e+02 2.1744390e+00 -2.2530010e+01
+4.1065742e+02 -2.2091610e+00 -1.1903221e+01
+2.5194814e+02 -2.1488378e+00 -3.7676298e+00
+1.1107187e+02 -2.6964360e-01 -5.8858208e-01
+2.5116518e+01 2.3037994e-01 -8.1336675e-02
+3.7978139e+00 5.3587604e-02 -9.7148608e-03
+4.4239526e-01 7.3835091e-03 -8.3231481e-04
+3.7647647e-02 6.7907975e-04 0.0000000e+00
+0 0 0
+0 0 0
+2.9874319e-01 3.9850481e-03 3.2207818e-03
+4.1205586e+00 4.7192134e-02 4.5740599e-02
+4.3869724e+01 3.8883921e-01 5.0149158e-01
+3.7575640e+02 1.8199051e+00 5.0647294e+00
+2.1861533e+03 -1.4616165e+01 5.2821227e+01
+5.0880680e+03 -4.9441062e+01 1.7367037e+02
+8.2191205e+03 -3.1889542e+01 3.0327026e+02
+1.0777239e+04 7.0544795e+01 3.3297787e+02
+1.2394310e+04 2.1285399e+02 2.0711769e+02
+1.3122506e+04 3.2193638e+02 -4.0092047e+01
+1.3167709e+04 3.4784457e+02 -3.1183747e+02
+1.2653960e+04 2.8062551e+02 -4.9876148e+02
+1.1549945e+04 1.4880961e+02 -5.2813754e+02
+9.7561266e+03 1.2170635e+01 -4.0327642e+02
+7.2957549e+03 -6.3478643e+01 -2.0991071e+02
+4.4921880e+03 -5.4686822e+01 -6.1356008e+01
+1.9534619e+03 -9.9126108e+00 -6.6432743e+00
+3.3879151e+02 2.9883443e+00 -7.4190858e-01
+3.9602941e+01 5.2351850e-01 -7.3824645e-02
+3.7093119e+00 5.8641920e-02 -5.4867329e-03
+2.6777941e-01 4.6956081e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.5842164e+00 2.4944346e-02 1.0094300e-02
+2.6151327e+01 3.4824157e-01 1.7127277e-01
+3.5872893e+02 3.6429684e+00 2.5244164e+00
+4.2967212e+03 2.5464629e+01 3.8452843e+01
+3.8806955e+04 -3.5727574e+02 8.8450436e+02
+9.0109360e+04 -1.1746949e+03 3.1353295e+03
+1.4478744e+05 -9.6611852e+02 5.5274025e+03
+1.8903018e+05 8.2229020e+02 6.0679365e+03
+2.1671886e+05 3.3152887e+03 3.8068326e+03
+2.2908727e+05 5.2087618e+03 -6.0172086e+02
+2.2985473e+05 5.6567406e+03 -5.4446930e+03
+2.2115550e+05 4.4991679e+03 -8.8090111e+03
+2.0234815e+05 2.2102940e+03 -9.3925935e+03
+1.7153590e+05 -1.8456182e+02 -7.1971376e+03
+1.2889986e+05 -1.4958772e+03 -3.7117539e+03
+7.9936053e+04 -1.2354714e+03 -1.0083508e+03
+3.5088197e+04 -2.5231580e+02 -5.9374588e+01
+3.9367511e+03 3.7580593e+01 -5.0244935e+00
+3.2841064e+02 4.3969489e+00 -3.9751893e-01
+2.3821070e+01 3.8879394e-01 -2.5171897e-02
+1.4343533e+00 2.6662658e-02 0.0000000e+00
+0 0 0
+0 0 0
+5.7035167e+00 1.3099966e-01 -8.5314688e-03
+1.1041887e+02 2.3602843e+00 -3.3979923e-01
+1.9527794e+03 3.8208767e+01 -9.1553414e+00
+3.5308760e+04 6.2431818e+02 -2.1041604e+02
+5.5483161e+05 4.6694598e+03 4.2258215e+03
+1.4536836e+06 9.9927258e+03 1.6540988e+04
+2.4288418e+06 1.7409335e+04 2.8537283e+04
+3.1545483e+06 2.5704313e+04 2.8691949e+04
+3.5266516e+06 3.2832554e+04 1.2246617e+04
+3.6238652e+06 3.7125881e+04 -1.6106034e+04
+3.5698715e+06 3.7888349e+04 -4.5808733e+04
+3.4271470e+06 3.5200020e+04 -6.5461371e+04
+3.1683292e+06 2.9657684e+04 -6.7398271e+04
+2.7159959e+06 2.2389812e+04 -5.1720591e+04
+2.0304143e+06 1.4969511e+04 -2.7584869e+04
+1.2028306e+06 8.7934558e+03 -8.0714323e+03
+4.7211354e+05 4.3649728e+03 -1.2946092e+02
+3.3027009e+04 5.9561300e+02 -1.1969829e+01
+1.8109166e+03 3.6534453e+01 -9.7415990e-01
+1.0148562e+02 2.2602569e+00 -6.1515756e-02
+5.1987772e+00 1.2538908e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2226012e+01 3.8156669e-01 -7.2085554e-02
+2.4102216e+02 7.4051980e+00 -1.9865835e+00
+4.3009989e+03 1.3016650e+02 -4.5310547e+01
+7.6586788e+04 2.2931808e+03 -9.6160945e+02
+1.2357112e+06 1.6512725e+04 5.7033529e+03
+3.0376735e+06 3.4127539e+04 2.5452758e+04
+4.9805553e+06 5.5488044e+04 4.3258753e+04
+6.4506067e+06 7.6374714e+04 3.8702312e+04
+7.2447798e+06 9.2701085e+04 4.2233453e+03
+7.4947707e+06 1.0202915e+05 -5.0544765e+04
+7.4167736e+06 1.0372832e+05 -1.0569514e+05
+7.1218570e+06 9.8178896e+04 -1.4027746e+05
+6.5653565e+06 8.6221258e+04 -1.4055009e+05
+5.6171675e+06 6.9306250e+04 -1.0723835e+05
+4.2180922e+06 4.9831631e+04 -5.7897081e+04
+2.5488840e+06 3.0879465e+04 -1.7545351e+04
+1.0639811e+06 1.5347253e+04 1.0516921e+02
+7.1423530e+04 2.1602947e+03 -7.6053973e+00
+3.9810695e+03 1.2234820e+02 -1.2393046e+00
+2.2126565e+02 6.9457764e+00 -9.5850161e-02
+1.1135543e+01 3.5721862e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.9427542e+01 6.8738847e-01 -8.6822874e-02
+3.8249039e+02 1.3596601e+01 -2.5374621e+00
+6.7940040e+03 2.4309388e+02 -5.9494795e+01
+1.2002252e+05 4.3324165e+03 -1.2690789e+03
+1.9755001e+06 2.9980764e+04 7.1512701e+03
+4.7499206e+06 6.0594614e+04 3.3776104e+04
+7.7221797e+06 9.6299813e+04 5.6091778e+04
+9.9690925e+06 1.2994019e+05 4.4341318e+04
+1.1190968e+07 1.5553685e+05 -1.1471416e+04
+1.1586067e+07 1.6998070e+05 -9.5908870e+04
+1.1474851e+07 1.7271158e+05 -1.7885507e+05
+1.1021596e+07 1.6437191e+05 -2.2917054e+05
+1.0161448e+07 1.4600645e+05 -2.2667223e+05
+8.7028890e+06 1.1933987e+05 -1.7279117e+05
+6.5576293e+06 8.7520359e+04 -9.4294966e+04
+3.9950945e+06 5.5254270e+04 -2.9570922e+04
+1.7013497e+06 2.7850201e+04 -1.8884495e+02
+1.1158067e+05 4.0675066e+03 -3.0797090e+01
+6.2697916e+03 2.2758179e+02 -2.9648757e+00
+3.5014021e+02 1.2690803e+01 -1.9911048e-01
+1.7646800e+01 6.3985814e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.5725857e+01 8.4438104e-01 3.3172262e-02
+5.0492565e+02 1.6756514e+01 -1.3376667e-01
+8.9333637e+03 3.0001518e+02 -1.7567226e+01
+1.5717201e+05 5.3417838e+03 -5.3296456e+02
+2.5781217e+06 3.6107986e+04 9.0298938e+03
+6.1850361e+06 7.2079019e+04 4.1289930e+04
+1.0025091e+07 1.1327242e+05 6.6722894e+04
+1.2899533e+07 1.5143099e+05 4.7129317e+04
+1.4437587e+07 1.8009879e+05 -2.9321055e+04
+1.4914747e+07 1.9617020e+05 -1.4158080e+05
+1.4755990e+07 1.9924559e+05 -2.5019924e+05
+1.4176385e+07 1.9007308e+05 -3.1487573e+05
+1.3089003e+07 1.6968394e+05 -3.0958818e+05
+1.1236615e+07 1.3972677e+05 -2.3629821e+05
+8.4894957e+06 1.0340758e+05 -1.3017528e+05
+5.1832528e+06 6.5908184e+04 -4.2161595e+04
+2.2085747e+06 3.3524045e+04 -1.4512490e+03
+1.4571681e+05 5.0058355e+03 -1.0596402e+02
+8.2204747e+03 2.8033599e+02 -7.4264173e+00
+4.6084892e+02 1.5607954e+01 -4.2734951e-01
+2.3296580e+01 7.8421425e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0264708e+01 7.0073655e-01 2.5580294e-01
+5.9255000e+02 1.3892112e+01 4.4490645e+00
+1.0455411e+04 2.4819108e+02 6.4045312e+01
+1.8350142e+05 4.4047869e+03 9.0751010e+02
+2.9681592e+06 2.9390792e+04 1.1059413e+04
+7.1666028e+06 5.8288663e+04 4.7360286e+04
+1.1613258e+07 9.1060036e+04 7.4681714e+04
+1.4901258e+07 1.2113562e+05 4.8264636e+04
+1.6618748e+07 1.4356145e+05 -4.4910211e+04
+1.7114951e+07 1.5607194e+05 -1.7923961e+05
+1.6903999e+07 1.5846308e+05 -3.0802579e+05
+1.6242387e+07 1.5134198e+05 -3.8395298e+05
+1.5022937e+07 1.3545805e+05 -3.7647229e+05
+1.2929244e+07 1.1197758e+05 -2.8784121e+05
+9.7869969e+06 8.3269522e+04 -1.5972282e+05
+5.9708660e+06 5.3345389e+04 -5.3055542e+04
+2.5242739e+06 2.7271577e+04 -3.2636139e+03
+1.6974345e+05 4.1229074e+03 -2.1140224e+02
+9.5977723e+03 2.3164943e+02 -1.3506080e+01
+5.3942597e+02 1.2925358e+01 -7.2979020e-01
+2.7331923e+01 6.5005802e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2880565e+01 2.7186642e-01 4.6375167e-01
+6.4282536e+02 5.3832045e+00 8.7150316e+00
+1.1325348e+04 9.6001952e+01 1.3949273e+02
+1.9851456e+05 1.7000024e+03 2.2249302e+03
+3.1680950e+06 1.1277674e+04 1.2602873e+04
+7.7060519e+06 2.2303929e+04 5.1286509e+04
+1.2495922e+07 3.4753009e+04 7.9566774e+04
+1.6003942e+07 4.6128268e+04 4.8578104e+04
+1.7799639e+07 5.4578561e+04 -5.5334197e+04
+1.8285029e+07 5.9279392e+04 -2.0363255e+05
+1.8033773e+07 6.0174704e+04 -3.4510263e+05
+1.7329159e+07 5.7498541e+04 -4.2810243e+05
+1.6049869e+07 5.1523469e+04 -4.1926106e+05
+1.3838615e+07 4.2666823e+04 -3.2095920e+05
+1.0487171e+07 3.1796449e+04 -1.7889127e+05
+6.3884427e+06 2.0416420e+04 -6.0349968e+04
+2.6779804e+06 1.0460561e+04 -4.7915453e+03
+1.8335250e+05 1.5902609e+03 -3.0047089e+02
+1.0379231e+04 8.9553637e+01 -1.8636716e+01
+5.8415117e+02 5.0059214e+00 -9.8430541e-01
+2.9637641e+01 2.5207289e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3720901e+01 -2.7186638e-01 5.4710497e-01
+6.5894205e+02 -5.3832038e+00 1.0417636e+01
+1.1603749e+04 -9.6001942e+01 1.6942334e+02
+2.0331559e+05 -1.7000023e+03 2.7436209e+03
+3.2272951e+06 -1.1277672e+04 1.3172093e+04
+7.8744781e+06 -2.2303925e+04 5.2638278e+04
+1.2773827e+07 -3.4753002e+04 8.1205693e+04
+1.6349189e+07 -4.6128257e+04 4.8616100e+04
+1.8165084e+07 -5.4578550e+04 -5.8980950e+04
+1.8642623e+07 -5.9279380e+04 -2.1203855e+05
+1.8376308e+07 -6.0174693e+04 -3.5781588e+05
+1.7658655e+07 -5.7498528e+04 -4.4321716e+05
+1.6363293e+07 -5.1523464e+04 -4.3391740e+05
+1.4118391e+07 -4.2666819e+04 -3.3232732e+05
+1.0703145e+07 -3.1796447e+04 -1.8550095e+05
+6.5155039e+06 -2.0416417e+04 -6.2902078e+04
+2.7215969e+06 -1.0460559e+04 -5.3773175e+03
+1.8768608e+05 -1.5902608e+03 -3.3476237e+02
+1.0628143e+04 -8.9553628e+01 -2.0617557e+01
+5.9841476e+02 -5.0059210e+00 -1.0827201e+00
+3.0374220e+01 -2.5207286e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2880565e+01 -7.0073651e-01 4.6375164e-01
+6.4282537e+02 -1.3892111e+01 8.7150308e+00
+1.1325348e+04 -2.4819107e+02 1.3949273e+02
+1.9851456e+05 -4.4047868e+03 2.2249302e+03
+3.1680950e+06 -2.9390791e+04 1.2602872e+04
+7.7060519e+06 -5.8288659e+04 5.1286510e+04
+1.2495922e+07 -9.1060028e+04 7.9566774e+04
+1.6003942e+07 -1.2113561e+05 4.8578103e+04
+1.7799639e+07 -1.4356144e+05 -5.5334199e+04
+1.8285029e+07 -1.5607193e+05 -2.0363255e+05
+1.8033773e+07 -1.5846307e+05 -3.4510263e+05
+1.7329159e+07 -1.5134197e+05 -4.2810243e+05
+1.6049869e+07 -1.3545804e+05 -4.1926106e+05
+1.3838615e+07 -1.1197757e+05 -3.2095920e+05
+1.0487171e+07 -8.3269517e+04 -1.7889127e+05
+6.3884427e+06 -5.3345385e+04 -6.0349968e+04
+2.6779804e+06 -2.7271576e+04 -4.7915453e+03
+1.8335250e+05 -4.1229072e+03 -3.0047089e+02
+1.0379231e+04 -2.3164943e+02 -1.8636716e+01
+5.8415117e+02 -1.2925358e+01 -9.8430541e-01
+2.9637641e+01 -6.5005799e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0264708e+01 -8.4438103e-01 2.5580285e-01
+5.9255000e+02 -1.6756514e+01 4.4490636e+00
+1.0455411e+04 -3.0001518e+02 6.4045309e+01
+1.8350142e+05 -5.3417838e+03 9.0751003e+02
+2.9681592e+06 -3.6107984e+04 1.1059413e+04
+7.1666028e+06 -7.2079016e+04 4.7360287e+04
+1.1613258e+07 -1.1327241e+05 7.4681713e+04
+1.4901258e+07 -1.5143098e+05 4.8264636e+04
+1.6618748e+07 -1.8009878e+05 -4.4910213e+04
+1.7114951e+07 -1.9617018e+05 -1.7923961e+05
+1.6903999e+07 -1.9924558e+05 -3.0802579e+05
+1.6242387e+07 -1.9007308e+05 -3.8395298e+05
+1.5022937e+07 -1.6968393e+05 -3.7647229e+05
+1.2929244e+07 -1.3972677e+05 -2.8784121e+05
+9.7869969e+06 -1.0340757e+05 -1.5972282e+05
+5.9708660e+06 -6.5908181e+04 -5.3055542e+04
+2.5242739e+06 -3.3524044e+04 -3.2636138e+03
+1.6974345e+05 -5.0058354e+03 -2.1140225e+02
+9.5977723e+03 -2.8033598e+02 -1.3506080e+01
+5.3942597e+02 -1.5607954e+01 -7.2979019e-01
+2.7331923e+01 -7.8421424e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.5725857e+01 -6.8738847e-01 3.3172250e-02
+5.0492565e+02 -1.3596601e+01 -1.3376707e-01
+8.9333637e+03 -2.4309388e+02 -1.7567241e+01
+1.5717201e+05 -4.3324164e+03 -5.3296452e+02
+2.5781217e+06 -2.9980763e+04 9.0298938e+03
+6.1850361e+06 -6.0594611e+04 4.1289932e+04
+1.0025091e+07 -9.6299810e+04 6.6722896e+04
+1.2899533e+07 -1.2994018e+05 4.7129315e+04
+1.4437587e+07 -1.5553685e+05 -2.9321059e+04
+1.4914747e+07 -1.6998069e+05 -1.4158080e+05
+1.4755990e+07 -1.7271158e+05 -2.5019924e+05
+1.4176385e+07 -1.6437190e+05 -3.1487573e+05
+1.3089003e+07 -1.4600644e+05 -3.0958818e+05
+1.1236615e+07 -1.1933987e+05 -2.3629821e+05
+8.4894957e+06 -8.7520356e+04 -1.3017528e+05
+5.1832528e+06 -5.5254269e+04 -4.2161596e+04
+2.2085747e+06 -2.7850201e+04 -1.4512490e+03
+1.4571681e+05 -4.0675066e+03 -1.0596403e+02
+8.2204747e+03 -2.2758179e+02 -7.4264175e+00
+4.6084892e+02 -1.2690803e+01 -4.2734952e-01
+2.3296580e+01 -6.3985813e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.9427542e+01 -3.8156669e-01 -8.6822868e-02
+3.8249039e+02 -7.4051979e+00 -2.5374621e+00
+6.7940040e+03 -1.3016650e+02 -5.9494797e+01
+1.2002252e+05 -2.2931808e+03 -1.2690789e+03
+1.9755001e+06 -1.6512724e+04 7.1512701e+03
+4.7499206e+06 -3.4127537e+04 3.3776107e+04
+7.7221797e+06 -5.5488043e+04 5.6091779e+04
+9.9690925e+06 -7.6374709e+04 4.4341315e+04
+1.1190968e+07 -9.2701073e+04 -1.1471417e+04
+1.1586067e+07 -1.0202914e+05 -9.5908873e+04
+1.1474851e+07 -1.0372832e+05 -1.7885507e+05
+1.1021596e+07 -9.8178890e+04 -2.2917054e+05
+1.0161448e+07 -8.6221253e+04 -2.2667224e+05
+8.7028891e+06 -6.9306245e+04 -1.7279117e+05
+6.5576293e+06 -4.9831629e+04 -9.4294966e+04
+3.9950945e+06 -3.0879465e+04 -2.9570923e+04
+1.7013497e+06 -1.5347253e+04 -1.8884495e+02
+1.1158067e+05 -2.1602947e+03 -3.0797093e+01
+6.2697916e+03 -1.2234820e+02 -2.9648758e+00
+3.5014021e+02 -6.9457764e+00 -1.9911048e-01
+1.7646800e+01 -3.5721862e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2226012e+01 -1.3099966e-01 -7.2085555e-02
+2.4102216e+02 -2.3602843e+00 -1.9865835e+00
+4.3009989e+03 -3.8208766e+01 -4.5310545e+01
+7.6586788e+04 -6.2431818e+02 -9.6160942e+02
+1.2357112e+06 -4.6694599e+03 5.7033524e+03
+3.0376735e+06 -9.9927257e+03 2.5452759e+04
+4.9805553e+06 -1.7409334e+04 4.3258755e+04
+6.4506067e+06 -2.5704309e+04 3.8702313e+04
+7.2447798e+06 -3.2832557e+04 4.2233456e+03
+7.4947707e+06 -3.7125883e+04 -5.0544768e+04
+7.4167736e+06 -3.7888343e+04 -1.0569514e+05
+7.1218570e+06 -3.5200020e+04 -1.4027746e+05
+6.5653565e+06 -2.9657680e+04 -1.4055009e+05
+5.6171675e+06 -2.2389811e+04 -1.0723835e+05
+4.2180923e+06 -1.4969511e+04 -5.7897081e+04
+2.5488840e+06 -8.7934557e+03 -1.7545351e+04
+1.0639811e+06 -4.3649727e+03 1.0516922e+02
+7.1423530e+04 -5.9561300e+02 -7.6053992e+00
+3.9810695e+03 -3.6534453e+01 -1.2393047e+00
+2.2126565e+02 -2.2602569e+00 -9.5850163e-02
+1.1135543e+01 -1.2538908e-01 0.0000000e+00
+0 0 0
+0 0 0
+5.7035167e+00 -2.4944345e-02 -8.5314695e-03
+1.1041887e+02 -3.4824156e-01 -3.3979924e-01
+1.9527794e+03 -3.6429681e+00 -9.1553414e+00
+3.5308760e+04 -2.5464629e+01 -2.1041604e+02
+5.5483161e+05 3.5727574e+02 4.2258215e+03
+1.4536836e+06 1.1746950e+03 1.6540989e+04
+2.4288418e+06 9.6611852e+02 2.8537285e+04
+3.1545483e+06 -8.2229049e+02 2.8691947e+04
+3.5266516e+06 -3.3152889e+03 1.2246616e+04
+3.6238652e+06 -5.2087619e+03 -1.6106033e+04
+3.5698715e+06 -5.6567406e+03 -4.5808735e+04
+3.4271470e+06 -4.4991678e+03 -6.5461370e+04
+3.1683292e+06 -2.2102942e+03 -6.7398272e+04
+2.7159959e+06 1.8456192e+02 -5.1720592e+04
+2.0304143e+06 1.4958772e+03 -2.7584870e+04
+1.2028306e+06 1.2354714e+03 -8.0714325e+03
+4.7211354e+05 2.5231581e+02 -1.2946092e+02
+3.3027009e+04 -3.7580592e+01 -1.1969830e+01
+1.8109166e+03 -4.3969488e+00 -9.7415990e-01
+1.0148562e+02 -3.8879393e-01 -6.1515758e-02
+5.1987772e+00 -2.6662658e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.5842164e+00 -3.9850480e-03 1.0094301e-02
+2.6151327e+01 -4.7192131e-02 1.7127279e-01
+3.5872893e+02 -3.8883923e-01 2.5244160e+00
+4.2967212e+03 -1.8199051e+00 3.8452844e+01
+3.8806955e+04 1.4616165e+01 8.8450436e+02
+9.0109360e+04 4.9441063e+01 3.1353295e+03
+1.4478744e+05 3.1889544e+01 5.5274026e+03
+1.8903018e+05 -7.0544803e+01 6.0679364e+03
+2.1671886e+05 -2.1285400e+02 3.8068326e+03
+2.2908727e+05 -3.2193638e+02 -6.0172073e+02
+2.2985473e+05 -3.4784458e+02 -5.4446932e+03
+2.2115550e+05 -2.8062549e+02 -8.8090111e+03
+2.0234815e+05 -1.4880961e+02 -9.3925935e+03
+1.7153590e+05 -1.2170638e+01 -7.1971377e+03
+1.2889986e+05 6.3478643e+01 -3.7117539e+03
+7.9936053e+04 5.4686822e+01 -1.0083508e+03
+3.5088197e+04 9.9126107e+00 -5.9374588e+01
+3.9367511e+03 -2.9883443e+00 -5.0244935e+00
+3.2841064e+02 -5.2351850e-01 -3.9751893e-01
+2.3821070e+01 -5.8641920e-02 -2.5171897e-02
+1.4343533e+00 -4.6956081e-03 0.0000000e+00
+0 0 0
+0 0 0
+2.9874319e-01 -5.5006426e-04 3.2207821e-03
+4.1205585e+00 -5.7345192e-03 4.5740594e-02
+4.3869724e+01 -3.9250064e-02 5.0149156e-01
+3.7575640e+02 -1.4584442e-01 5.0647295e+00
+2.1861533e+03 4.7057447e-01 5.2821228e+01
+5.0880680e+03 1.7530442e+00 1.7367037e+02
+8.2191205e+03 3.4074073e-01 3.0327027e+02
+1.0777239e+04 -5.5322343e+00 3.3297787e+02
+1.2394310e+04 -1.3580017e+01 2.0711769e+02
+1.3122506e+04 -1.9781472e+01 -4.0092042e+01
+1.3167709e+04 -2.1255058e+01 -3.1183747e+02
+1.2653960e+04 -1.7403298e+01 -4.9876149e+02
+1.1549945e+04 -9.9041951e+00 -5.2813754e+02
+9.7561266e+03 -2.1744393e+00 -4.0327642e+02
+7.2957549e+03 2.2091609e+00 -2.0991071e+02
+4.4921880e+03 2.1488377e+00 -6.1356008e+01
+1.9534619e+03 2.6964359e-01 -6.6432743e+00
+3.3879151e+02 -2.3037995e-01 -7.4190857e-01
+3.9602941e+01 -5.3587604e-02 -7.3824645e-02
+3.7093119e+00 -7.3835091e-03 -5.4867330e-03
+2.6777941e-01 -6.7907975e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.2467446e-02 -5.3477035e-05 5.6557602e-04
+4.9748448e-01 -5.0510699e-04 6.8652919e-03
+4.2632743e+00 -3.0165926e-03 6.0927008e-02
+2.8236407e+01 -1.0077557e-02 4.7262823e-01
+1.2562845e+02 6.7205940e-03 3.1907657e+00
+2.8684544e+02 4.0323680e-02 9.6573329e+00
+4.6410468e+02 -4.9148302e-02 1.6592717e+01
+6.1085963e+02 -3.4172082e-01 1.8161005e+01
+7.0475491e+02 -7.3534070e-01 1.1170276e+01
+7.4748403e+02 -1.0392243e+00 -2.6031948e+00
+7.5020227e+02 -1.1112804e+00 -1.7741198e+01
+7.2000972e+02 -9.2121726e-01 -2.8059424e+01
+6.5548445e+02 -5.5325008e-01 -2.9536893e+01
+5.5161342e+02 -1.7485638e-01 -2.2530010e+01
+4.1065742e+02 4.5983648e-02 -1.1903221e+01
+2.5194814e+02 6.4028246e-02 -3.7676298e+00
+1.1107187e+02 -3.4289373e-04 -5.8858208e-01
+2.5116518e+01 -1.4666157e-02 -8.1336675e-02
+3.7978139e+00 -4.0363065e-03 -9.7148608e-03
+4.4239526e-01 -6.5002418e-04 -8.3231482e-04
+3.7647647e-02 -6.6768318e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.2195233e-03 0.0000000e+00 6.2019567e-05
+4.3558475e-02 0.0000000e+00 6.7342253e-04
+3.1677508e-01 0.0000000e+00 5.1643678e-03
+1.7472603e+00 0.0000000e+00 3.3366097e-02
+6.5744639e+00 0.0000000e+00 1.7378053e-01
+1.4632597e+01 0.0000000e+00 4.8789991e-01
+2.3639859e+01 0.0000000e+00 8.2241534e-01
+3.1198870e+01 0.0000000e+00 8.9515950e-01
+3.6094220e+01 0.0000000e+00 5.4361511e-01
+3.8346125e+01 0.0000000e+00 -1.4840211e-01
+3.8494223e+01 0.0000000e+00 -9.0832857e-01
+3.6901699e+01 0.0000000e+00 -1.4224032e+00
+3.3514088e+01 0.0000000e+00 -1.4906244e+00
+2.8109661e+01 0.0000000e+00 -1.1381788e+00
+2.0854881e+01 0.0000000e+00 -6.1173218e-01
+1.2790859e+01 0.0000000e+00 -2.0795888e-01
+5.7618794e+00 0.0000000e+00 -4.0734300e-02
+1.5373047e+00 0.0000000e+00 -6.5738237e-03
+2.7905857e-01 0.0000000e+00 -8.9369516e-04
+3.8327405e-02 0.0000000e+00 -8.4842311e-05
+3.7042805e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.1023328e-03 5.0609481e-05 6.6581050e-05
+4.2419634e-02 4.8762572e-04 7.1779675e-04
+3.0907104e-01 2.9739707e-03 5.4478659e-03
+1.7077423e+00 1.0205695e-02 3.4760108e-02
+6.4356153e+00 -5.5097188e-03 1.7911847e-01
+1.4346214e+01 -3.7540449e-02 5.0304133e-01
+2.3233620e+01 5.5687655e-02 8.5359257e-01
+3.0750979e+01 3.5396446e-01 9.4751967e-01
+3.5666785e+01 7.5208533e-01 6.2286946e-01
+3.7947037e+01 1.0578604e+00 -3.5902680e-02
+3.8086487e+01 1.1329646e+00 -7.6113104e-01
+3.6439499e+01 9.5309232e-01 -1.2520240e+00
+3.2982280e+01 6.0395222e-01 -1.3241682e+00
+2.7549282e+01 2.4514374e-01 -1.0089330e+00
+2.0355800e+01 2.9387475e-02 -5.3923949e-01
+1.2442643e+01 -7.7634638e-03 -1.8326061e-01
+5.5909009e+00 2.4932662e-02 -3.7214815e-02
+1.4877260e+00 1.8613622e-02 -6.2496871e-03
+2.6928105e-01 4.3963146e-03 -8.6847506e-04
+3.6881690e-02 6.5985890e-04 -8.2619532e-05
+3.5571422e-03 6.4518691e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.1379204e-02 5.1345079e-04 6.2540039e-04
+4.8563116e-01 5.4614188e-03 7.5049317e-03
+4.1700545e+00 3.8190841e-02 6.5507907e-02
+2.7668713e+01 1.4552498e-01 4.9788276e-01
+1.2328014e+02 -4.5819335e-01 3.2988779e+00
+2.8186638e+02 -1.7410234e+00 9.9814226e+00
+4.5717160e+02 -2.8844147e-01 1.7258632e+01
+6.0354927e+02 5.6752537e+00 1.9247704e+01
+6.9819871e+02 1.3798824e+01 1.2757164e+01
+7.4168416e+02 2.0025504e+01 -4.1060791e-01
+7.4428203e+02 2.1548727e+01 -1.4906126e+01
+7.1293376e+02 1.7899201e+01 -2.4776272e+01
+6.4681848e+02 1.0798934e+01 -2.6305285e+01
+5.4203675e+02 3.5175409e+00 -2.0001008e+01
+4.0186905e+02 -6.9089770e-01 -1.0492347e+01
+2.4574318e+02 -9.7864764e-01 -3.3165010e+00
+1.0809115e+02 2.3641754e-01 -5.4725994e-01
+2.4377982e+01 2.8943798e-01 -7.9548065e-02
+3.6749174e+00 5.7493124e-02 -9.7483569e-03
+4.2674420e-01 7.4016697e-03 -8.3910347e-04
+3.6222938e-02 6.5012363e-04 0.0000000e+00
+0 0 0
+0 0 0
+2.9187967e-01 3.5813451e-03 3.7956264e-03
+4.0338371e+00 4.3176111e-02 5.2802362e-02
+4.3036303e+01 3.6315918e-01 5.6125551e-01
+3.6928235e+02 1.7296334e+00 5.4512047e+00
+2.1511392e+03 -1.4756039e+01 5.4763138e+01
+5.0116412e+03 -5.0473867e+01 1.7992286e+02
+8.1157137e+03 -3.3081460e+01 3.1612267e+02
+1.0675202e+04 7.0464666e+01 3.5336955e+02
+1.2311748e+04 2.1392827e+02 2.3580133e+02
+1.3056630e+04 3.2332379e+02 -1.6209779e+00
+1.3100508e+04 3.4988788e+02 -2.6275875e+02
+1.2564964e+04 2.8600724e+02 -4.4187172e+02
+1.1429148e+04 1.6130287e+02 -4.7157787e+02
+9.6131414e+03 3.3383649e+01 -3.5845882e+02
+7.1591428e+03 -3.7650240e+01 -1.8488738e+02
+4.3940019e+03 -3.3832634e+01 -5.3847308e+01
+1.9071433e+03 -9.1627330e-01 -6.3759795e+00
+3.2991602e+02 3.5461622e+00 -7.5721473e-01
+3.8444941e+01 5.3568489e-01 -7.7406151e-02
+3.5888165e+00 5.6275166e-02 -5.7842730e-03
+2.5832363e-01 4.3216272e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.5520423e+00 2.1217748e-02 1.4537628e-02
+2.5672882e+01 2.9834098e-01 2.3781795e-01
+3.5292652e+02 3.1567765e+00 3.2466159e+00
+4.2349717e+03 2.2545348e+01 4.4180402e+01
+3.8282716e+04 -3.6519380e+02 9.1885766e+02
+8.8938750e+04 -1.2153938e+03 3.2543885e+03
+1.4326077e+05 -1.0241344e+03 5.7721119e+03
+1.8764882e+05 7.7740443e+02 6.4465314e+03
+2.1576791e+05 3.2900158e+03 4.3213905e+03
+2.2847442e+05 5.1884360e+03 6.9127101e+01
+2.2922948e+05 5.6441672e+03 -4.5998976e+03
+2.2013075e+05 4.5389122e+03 -7.8280480e+03
+2.0071550e+05 2.3715246e+03 -8.4056251e+03
+1.6942672e+05 1.3884265e+02 -6.4018997e+03
+1.2678951e+05 -1.0656744e+03 -3.2635269e+03
+7.8386391e+04 -8.6706288e+02 -8.8063477e+02
+3.4358743e+04 -9.0710979e+01 -6.1386534e+01
+3.8455768e+03 3.8893140e+01 -5.5592026e+00
+3.1978210e+02 4.0546823e+00 -4.4965876e-01
+2.3114489e+01 3.4165290e-01 -2.8456308e-02
+1.3874111e+00 2.2807546e-02 0.0000000e+00
+0 0 0
+0 0 0
+5.6016217e+00 1.0686735e-01 1.6245334e-02
+1.0867041e+02 1.9073953e+00 1.5565989e-01
+1.9261286e+03 3.0453581e+01 -4.9031887e-01
+3.4899135e+04 4.8880470e+02 -5.7124385e+01
+5.4547543e+05 3.9484349e+03 4.9854261e+03
+1.4303342e+06 8.6353807e+03 1.8484087e+04
+2.3986933e+06 1.5608575e+04 3.1999889e+04
+3.1299324e+06 2.3793448e+04 3.3599759e+04
+3.5142187e+06 3.1011973e+04 1.8310702e+04
+3.6211136e+06 3.5391220e+04 -9.1405437e+03
+3.5684052e+06 3.6139203e+04 -3.8169289e+04
+3.4177140e+06 3.3372690e+04 -5.7570117e+04
+3.1453994e+06 2.7794905e+04 -6.0063729e+04
+2.6814778e+06 2.0641865e+04 -4.6048667e+04
+1.9942019e+06 1.3527611e+04 -2.4429587e+04
+1.1769854e+06 7.7782306e+03 -7.2297170e+03
+4.6130481e+05 3.7733840e+03 -2.8508178e+02
+3.2344679e+04 4.5640456e+02 -2.0263075e+01
+1.7676792e+03 2.8447004e+01 -1.4180808e+00
+9.8710170e+01 1.7810516e+00 -8.2026102e-02
+5.0400376e+00 9.9521041e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.2034907e+01 3.1315773e-01 -1.5186015e-02
+2.3768741e+02 6.0413917e+00 -8.1442842e-01
+4.2495483e+03 1.0535193e+02 -2.4262108e+01
+7.5797430e+04 1.8378426e+03 -5.8394205e+02
+1.2169540e+06 1.3965877e+04 8.1558462e+03
+2.9933923e+06 2.9423645e+04 3.1648796e+04
+4.9246105e+06 4.9024012e+04 5.4178215e+04
+6.4054471e+06 6.8960708e+04 5.4170598e+04
+7.2217625e+06 8.4938377e+04 2.3261572e+04
+7.4884690e+06 9.4109958e+04 -2.9155465e+04
+7.4113872e+06 9.5620107e+04 -8.3249903e+04
+7.1004496e+06 8.9891403e+04 -1.1836123e+05
+6.5180336e+06 7.7983730e+04 -1.2122713e+05
+5.5477545e+06 6.1627196e+04 -9.2799481e+04
+4.1452563e+06 4.3408430e+04 -4.9844369e+04
+2.4956578e+06 2.6318895e+04 -1.5158801e+04
+1.0400029e+06 1.2812599e+04 -2.1977714e+02
+7.0003705e+04 1.6816781e+03 -2.5225962e+01
+3.8904481e+03 9.6023747e+01 -2.1813154e+00
+2.1551890e+02 5.4854241e+00 -1.3893732e-01
+1.0812794e+01 2.8333279e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.9181013e+01 5.7279154e-01 -1.3104366e-02
+3.7828032e+02 1.1299247e+01 -1.0608934e+00
+6.7310289e+03 2.0130192e+02 -3.4035784e+01
+1.1908958e+05 3.5719612e+03 -8.3521598e+02
+1.9513985e+06 2.5776324e+04 1.1455904e+04
+4.6930041e+06 5.2880370e+04 4.4915728e+04
+7.6547267e+06 8.5655591e+04 7.5737107e+04
+9.9241364e+06 1.1759074e+05 7.2063121e+04
+1.1183155e+07 1.4242640e+05 2.2388270e+04
+1.1604454e+07 1.5646501e+05 -5.8353555e+04
+1.1493438e+07 1.5881013e+05 -1.4013031e+05
+1.1013271e+07 1.5015513e+05 -1.9206962e+05
+1.0109968e+07 1.3187249e+05 -1.9447868e+05
+8.6128364e+06 1.0613143e+05 -1.4893023e+05
+6.4565869e+06 7.6415207e+04 -8.0894598e+04
+3.9185528e+06 4.7330906e+04 -2.5364920e+04
+1.6658473e+06 2.3451847e+04 -5.0171762e+02
+1.0956006e+05 3.2493431e+03 -4.8771779e+01
+6.1387080e+03 1.8230485e+02 -3.9692857e+00
+3.4171784e+02 1.0184768e+01 -2.4626783e-01
+1.7169800e+01 5.1406441e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.5490332e+01 7.1351294e-01 9.4803702e-02
+5.0114226e+02 1.4151495e+01 1.0259445e+00
+8.8816997e+03 2.5315670e+02 8.3519437e-01
+1.5649078e+05 4.5018829e+03 -2.4784708e+02
+2.5573957e+06 3.1543432e+04 1.4711125e+04
+6.1324621e+06 6.3738187e+04 5.6427289e+04
+9.9719040e+06 1.0180453e+05 9.3465536e+04
+1.2887783e+07 1.3816546e+05 8.4640667e+04
+1.4482565e+07 1.6604077e+05 1.6048283e+04
+1.4997434e+07 1.8167234e+05 -9.1845945e+04
+1.4838171e+07 1.8428516e+05 -1.9950187e+05
+1.4219096e+07 1.7467947e+05 -2.6673694e+05
+1.3067893e+07 1.5425500e+05 -2.6800934e+05
+1.1155022e+07 1.2517695e+05 -2.0546181e+05
+8.3821050e+06 9.1066442e+04 -1.1272236e+05
+5.0973027e+06 5.7041423e+04 -3.6482866e+04
+2.1685140e+06 2.8586718e+04 -1.5570557e+03
+1.4344190e+05 4.0804723e+03 -1.1326816e+02
+8.0689738e+03 2.2843036e+02 -7.8927470e+00
+4.5088417e+02 1.2707531e+01 -4.5075218e-01
+2.2722059e+01 6.3783329e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0092394e+01 5.9794554e-01 2.8788224e-01
+5.9016964e+02 1.1861694e+01 4.9580447e+00
+1.0431372e+04 2.1203691e+02 7.0117105e+01
+1.8334325e+05 3.7643191e+03 9.6585021e+02
+2.9572416e+06 2.5956837e+04 1.7470049e+04
+7.1308933e+06 5.2029489e+04 6.4888279e+04
+1.1591771e+07 8.2495068e+04 1.0568422e+05
+1.4942360e+07 1.1128739e+05 9.1460451e+04
+1.6736269e+07 1.3317980e+05 6.8011713e+03
+1.7281204e+07 1.4538758e+05 -1.2316736e+05
+1.7069078e+07 1.4740894e+05 -2.5136976e+05
+1.6356211e+07 1.3989098e+05 -3.3040499e+05
+1.5053121e+07 1.2387726e+05 -3.3021193e+05
+1.2876647e+07 1.0095389e+05 -2.5339173e+05
+9.6909210e+06 7.3840852e+04 -1.4009027e+05
+5.8878196e+06 4.6529073e+04 -4.6531498e+04
+2.4859654e+06 2.3464676e+04 -3.1009656e+03
+1.6752343e+05 3.4032597e+03 -2.0372594e+02
+9.4447790e+03 1.9085519e+02 -1.3157389e+01
+5.2906564e+02 1.0625550e+01 -7.1507789e-01
+2.6721446e+01 5.3323293e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2776818e+01 2.3312527e-01 4.6856727e-01
+6.4188322e+02 4.6213404e+00 8.6510728e+00
+1.1328280e+04 8.2510794e+01 1.3524565e+02
+1.9884920e+05 1.4624606e+03 2.1024554e+03
+3.1668701e+06 1.0013188e+04 1.9271011e+04
+7.6874971e+06 2.0001853e+04 6.9853425e+04
+1.2504233e+07 3.1612383e+04 1.1242577e+05
+1.6091012e+07 4.2531875e+04 9.4111586e+04
+1.7977397e+07 5.0801597e+04 -1.2673694e+03
+1.8519243e+07 5.5398634e+04 -1.4549264e+05
+1.8266250e+07 5.6153461e+04 -2.8671411e+05
+1.7502059e+07 5.3315244e+04 -3.7303869e+05
+1.6125043e+07 4.7269028e+04 -3.7160451e+05
+1.3814685e+07 3.8593959e+04 -2.8531397e+05
+1.0405879e+07 2.8295747e+04 -1.5847761e+05
+6.3121115e+06 1.7876678e+04 -5.3494002e+04
+2.6433345e+06 9.0397354e+03 -4.4231845e+03
+1.8129309e+05 1.3203603e+03 -2.8087459e+02
+1.0232657e+04 7.4170903e+01 -1.7615700e+01
+5.7396376e+02 4.1345199e+00 -9.3725727e-01
+2.9025976e+01 2.0764031e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3645936e+01 -2.3312521e-01 5.4121525e-01
+6.5859314e+02 -4.6213388e+00 1.0132810e+01
+1.1617625e+04 -8.2510783e+01 1.6127890e+02
+2.0384760e+05 -1.4624604e+03 2.5541848e+03
+3.2299886e+06 -1.0013186e+04 1.9887039e+04
+7.8629077e+06 -2.0001849e+04 7.1461167e+04
+1.2793990e+07 -3.1612375e+04 1.1452337e+05
+1.6454089e+07 -4.2531864e+04 9.4686863e+04
+1.8365824e+07 -5.0801585e+04 -4.4497475e+03
+1.8902558e+07 -5.5398623e+04 -1.5358706e+05
+1.8634275e+07 -5.6153449e+04 -2.9924635e+05
+1.7854057e+07 -5.3315231e+04 -3.8801802e+05
+1.6455910e+07 -4.7269019e+04 -3.8609728e+05
+1.4105974e+07 -3.8593952e+04 -2.9649222e+05
+1.0628185e+07 -2.8295742e+04 -1.6494132e+05
+6.4422910e+06 -1.7876675e+04 -5.5975139e+04
+2.6886349e+06 -9.0397338e+03 -4.9336689e+03
+1.8570386e+05 -1.3203601e+03 -3.1073148e+02
+1.0485096e+04 -7.4170894e+01 -1.9342416e+01
+5.8836468e+02 -4.1345195e+00 -1.0232958e+00
+2.9766205e+01 -2.0764028e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2776818e+01 -5.9794553e-01 4.6856734e-01
+6.4188322e+02 -1.1861695e+01 8.6510687e+00
+1.1328280e+04 -2.1203690e+02 1.3524564e+02
+1.9884920e+05 -3.7643189e+03 2.1024553e+03
+3.1668701e+06 -2.5956835e+04 1.9271011e+04
+7.6874971e+06 -5.2029486e+04 6.9853426e+04
+1.2504233e+07 -8.2495059e+04 1.1242577e+05
+1.6091012e+07 -1.1128738e+05 9.4111585e+04
+1.7977397e+07 -1.3317978e+05 -1.2673705e+03
+1.8519243e+07 -1.4538757e+05 -1.4549264e+05
+1.8266250e+07 -1.4740893e+05 -2.8671410e+05
+1.7502059e+07 -1.3989097e+05 -3.7303869e+05
+1.6125043e+07 -1.2387725e+05 -3.7160451e+05
+1.3814685e+07 -1.0095389e+05 -2.8531397e+05
+1.0405879e+07 -7.3840847e+04 -1.5847761e+05
+6.3121115e+06 -4.6529070e+04 -5.3494002e+04
+2.6433345e+06 -2.3464675e+04 -4.4231845e+03
+1.8129309e+05 -3.4032596e+03 -2.8087459e+02
+1.0232657e+04 -1.9085518e+02 -1.7615700e+01
+5.7396376e+02 -1.0625550e+01 -9.3725728e-01
+2.9025976e+01 -5.3323291e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0092394e+01 -7.1351294e-01 2.8788224e-01
+5.9016964e+02 -1.4151495e+01 4.9580443e+00
+1.0431372e+04 -2.5315670e+02 7.0117103e+01
+1.8334325e+05 -4.5018828e+03 9.6584983e+02
+2.9572416e+06 -3.1543431e+04 1.7470049e+04
+7.1308933e+06 -6.3738184e+04 6.4888281e+04
+1.1591771e+07 -1.0180452e+05 1.0568422e+05
+1.4942360e+07 -1.3816544e+05 9.1460450e+04
+1.6736269e+07 -1.6604075e+05 6.8011681e+03
+1.7281204e+07 -1.8167233e+05 -1.2316736e+05
+1.7069078e+07 -1.8428515e+05 -2.5136976e+05
+1.6356211e+07 -1.7467946e+05 -3.3040499e+05
+1.5053121e+07 -1.5425500e+05 -3.3021194e+05
+1.2876647e+07 -1.2517694e+05 -2.5339173e+05
+9.6909210e+06 -9.1066437e+04 -1.4009027e+05
+5.8878196e+06 -5.7041420e+04 -4.6531499e+04
+2.4859654e+06 -2.8586717e+04 -3.1009656e+03
+1.6752343e+05 -4.0804722e+03 -2.0372594e+02
+9.4447790e+03 -2.2843035e+02 -1.3157390e+01
+5.2906564e+02 -1.2707531e+01 -7.1507790e-01
+2.6721446e+01 -6.3783328e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.5490332e+01 -5.7279153e-01 9.4803707e-02
+5.0114226e+02 -1.1299247e+01 1.0259446e+00
+8.8816997e+03 -2.0130191e+02 8.3519015e-01
+1.5649078e+05 -3.5719612e+03 -2.4784710e+02
+2.5573957e+06 -2.5776323e+04 1.4711126e+04
+6.1324621e+06 -5.2880366e+04 5.6427293e+04
+9.9719040e+06 -8.5655592e+04 9.3465539e+04
+1.2887783e+07 -1.1759074e+05 8.4640667e+04
+1.4482565e+07 -1.4242640e+05 1.6048275e+04
+1.4997434e+07 -1.5646500e+05 -9.1845948e+04
+1.4838171e+07 -1.5881012e+05 -1.9950187e+05
+1.4219096e+07 -1.5015513e+05 -2.6673694e+05
+1.3067893e+07 -1.3187248e+05 -2.6800935e+05
+1.1155022e+07 -1.0613142e+05 -2.0546181e+05
+8.3821050e+06 -7.6415203e+04 -1.1272236e+05
+5.0973027e+06 -4.7330904e+04 -3.6482867e+04
+2.1685140e+06 -2.3451846e+04 -1.5570557e+03
+1.4344190e+05 -3.2493431e+03 -1.1326816e+02
+8.0689738e+03 -1.8230484e+02 -7.8927473e+00
+4.5088417e+02 -1.0184768e+01 -4.5075219e-01
+2.2722059e+01 -5.1406440e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.9181013e+01 -3.1315772e-01 -1.3104365e-02
+3.7828032e+02 -6.0413916e+00 -1.0608934e+00
+6.7310289e+03 -1.0535192e+02 -3.4035780e+01
+1.1908958e+05 -1.8378426e+03 -8.3521597e+02
+1.9513985e+06 -1.3965876e+04 1.1455905e+04
+4.6930041e+06 -2.9423645e+04 4.4915729e+04
+7.6547267e+06 -4.9024013e+04 7.5737109e+04
+9.9241364e+06 -6.8960707e+04 7.2063122e+04
+1.1183155e+07 -8.4938377e+04 2.2388272e+04
+1.1604454e+07 -9.4109957e+04 -5.8353559e+04
+1.1493438e+07 -9.5620095e+04 -1.4013031e+05
+1.1013271e+07 -8.9891394e+04 -1.9206961e+05
+1.0109968e+07 -7.7983721e+04 -1.9447868e+05
+8.6128364e+06 -6.1627194e+04 -1.4893023e+05
+6.4565869e+06 -4.3408426e+04 -8.0894599e+04
+3.9185528e+06 -2.6318892e+04 -2.5364921e+04
+1.6658473e+06 -1.2812599e+04 -5.0171768e+02
+1.0956006e+05 -1.6816781e+03 -4.8771781e+01
+6.1387080e+03 -9.6023745e+01 -3.9692857e+00
+3.4171784e+02 -5.4854240e+00 -2.4626783e-01
+1.7169800e+01 -2.8333279e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.2034907e+01 -1.0686735e-01 -1.5186012e-02
+2.3768741e+02 -1.9073953e+00 -8.1442843e-01
+4.2495483e+03 -3.0453580e+01 -2.4262108e+01
+7.5797430e+04 -4.8880469e+02 -5.8394204e+02
+1.2169540e+06 -3.9484347e+03 8.1558464e+03
+2.9933923e+06 -8.6353804e+03 3.1648796e+04
+4.9246105e+06 -1.5608575e+04 5.4178216e+04
+6.4054471e+06 -2.3793447e+04 5.4170599e+04
+7.2217625e+06 -3.1011973e+04 2.3261573e+04
+7.4884690e+06 -3.5391220e+04 -2.9155461e+04
+7.4113872e+06 -3.6139204e+04 -8.3249903e+04
+7.1004496e+06 -3.3372692e+04 -1.1836122e+05
+6.5180336e+06 -2.7794907e+04 -1.2122713e+05
+5.5477545e+06 -2.0641864e+04 -9.2799481e+04
+4.1452563e+06 -1.3527612e+04 -4.9844368e+04
+2.4956578e+06 -7.7782313e+03 -1.5158802e+04
+1.0400029e+06 -3.7733840e+03 -2.1977718e+02
+7.0003705e+04 -4.5640456e+02 -2.5225963e+01
+3.8904481e+03 -2.8447004e+01 -2.1813155e+00
+2.1551890e+02 -1.7810515e+00 -1.3893732e-01
+1.0812794e+01 -9.9521040e-02 0.0000000e+00
+0 0 0
+0 0 0
+5.6016217e+00 -2.1217748e-02 1.6245335e-02
+1.0867041e+02 -2.9834098e-01 1.5565990e-01
+1.9261286e+03 -3.1567764e+00 -4.9031866e-01
+3.4899135e+04 -2.2545346e+01 -5.7124363e+01
+5.4547543e+05 3.6519381e+02 4.9854260e+03
+1.4303342e+06 1.2153941e+03 1.8484087e+04
+2.3986933e+06 1.0241345e+03 3.1999890e+04
+3.1299324e+06 -7.7740427e+02 3.3599759e+04
+3.5142187e+06 -3.2900158e+03 1.8310702e+04
+3.6211136e+06 -5.1884360e+03 -9.1405428e+03
+3.5684052e+06 -5.6441672e+03 -3.8169289e+04
+3.4177140e+06 -4.5389119e+03 -5.7570117e+04
+3.1453994e+06 -2.3715245e+03 -6.0063730e+04
+2.6814778e+06 -1.3884259e+02 -4.6048667e+04
+1.9942019e+06 1.0656746e+03 -2.4429587e+04
+1.1769854e+06 8.6706286e+02 -7.2297173e+03
+4.6130481e+05 9.0710978e+01 -2.8508177e+02
+3.2344679e+04 -3.8893141e+01 -2.0263075e+01
+1.7676792e+03 -4.0546822e+00 -1.4180808e+00
+9.8710170e+01 -3.4165289e-01 -8.2026103e-02
+5.0400376e+00 -2.2807545e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.5520423e+00 -3.5813451e-03 1.4537628e-02
+2.5672882e+01 -4.3176111e-02 2.3781796e-01
+3.5292652e+02 -3.6315919e-01 3.2466159e+00
+4.2349717e+03 -1.7296334e+00 4.4180404e+01
+3.8282716e+04 1.4756039e+01 9.1885769e+02
+8.8938749e+04 5.0473860e+01 3.2543885e+03
+1.4326077e+05 3.3081464e+01 5.7721119e+03
+1.8764882e+05 -7.0464664e+01 6.4465314e+03
+2.1576791e+05 -2.1392827e+02 4.3213905e+03
+2.2847442e+05 -3.2332378e+02 6.9127171e+01
+2.2922948e+05 -3.4988788e+02 -4.5998976e+03
+2.2013075e+05 -2.8600725e+02 -7.8280480e+03
+2.0071550e+05 -1.6130288e+02 -8.4056252e+03
+1.6942672e+05 -3.3383649e+01 -6.4018997e+03
+1.2678951e+05 3.7650235e+01 -3.2635269e+03
+7.8386391e+04 3.3832634e+01 -8.8063477e+02
+3.4358743e+04 9.1627306e-01 -6.1386534e+01
+3.8455768e+03 -3.5461622e+00 -5.5592025e+00
+3.1978210e+02 -5.3568485e-01 -4.4965877e-01
+2.3114489e+01 -5.6275166e-02 -2.8456309e-02
+1.3874111e+00 -4.3216271e-03 0.0000000e+00
+0 0 0
+0 0 0
+2.9187967e-01 -5.1345079e-04 3.7956263e-03
+4.0338371e+00 -5.4614187e-03 5.2802362e-02
+4.3036303e+01 -3.8190838e-02 5.6125551e-01
+3.6928235e+02 -1.4552496e-01 5.4512048e+00
+2.1511392e+03 4.5819337e-01 5.4763138e+01
+5.0116411e+03 1.7410232e+00 1.7992286e+02
+8.1157137e+03 2.8844148e-01 3.1612268e+02
+1.0675202e+04 -5.6752539e+00 3.5336955e+02
+1.2311748e+04 -1.3798824e+01 2.3580134e+02
+1.3056630e+04 -2.0025504e+01 -1.6209751e+00
+1.3100508e+04 -2.1548728e+01 -2.6275875e+02
+1.2564964e+04 -1.7899201e+01 -4.4187172e+02
+1.1429148e+04 -1.0798934e+01 -4.7157787e+02
+9.6131414e+03 -3.5175409e+00 -3.5845882e+02
+7.1591428e+03 6.9089755e-01 -1.8488738e+02
+4.3940019e+03 9.7864757e-01 -5.3847309e+01
+1.9071433e+03 -2.3641757e-01 -6.3759795e+00
+3.2991602e+02 -2.8943798e-01 -7.5721468e-01
+3.8444941e+01 -5.7493124e-02 -7.7406154e-02
+3.5888165e+00 -7.4016692e-03 -5.7842731e-03
+2.5832363e-01 -6.5012361e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.1379204e-02 -5.0609480e-05 6.2540040e-04
+4.8563116e-01 -4.8762571e-04 7.5049317e-03
+4.1700545e+00 -2.9739706e-03 6.5507909e-02
+2.7668713e+01 -1.0205696e-02 4.9788276e-01
+1.2328014e+02 5.5097150e-03 3.2988779e+00
+2.8186638e+02 3.7540444e-02 9.9814226e+00
+4.5717160e+02 -5.5687651e-02 1.7258632e+01
+6.0354927e+02 -3.5396447e-01 1.9247704e+01
+6.9819871e+02 -7.5208529e-01 1.2757165e+01
+7.4168416e+02 -1.0578604e+00 -4.1060789e-01
+7.4428203e+02 -1.1329646e+00 -1.4906126e+01
+7.1293376e+02 -9.5309232e-01 -2.4776272e+01
+6.4681848e+02 -6.0395222e-01 -2.6305285e+01
+5.4203675e+02 -2.4514372e-01 -2.0001008e+01
+4.0186905e+02 -2.9387472e-02 -1.0492347e+01
+2.4574318e+02 7.7634644e-03 -3.3165010e+00
+1.0809115e+02 -2.4932660e-02 -5.4725993e-01
+2.4377982e+01 -1.8613622e-02 -7.9548062e-02
+3.6749174e+00 -4.3963148e-03 -9.7483567e-03
+4.2674420e-01 -6.5985892e-04 -8.3910351e-04
+3.6222938e-02 -6.4518688e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.1023328e-03 0.0000000e+00 6.6581051e-05
+4.2419634e-02 0.0000000e+00 7.1779675e-04
+3.0907104e-01 0.0000000e+00 5.4478659e-03
+1.7077423e+00 0.0000000e+00 3.4760108e-02
+6.4356153e+00 0.0000000e+00 1.7911847e-01
+1.4346214e+01 0.0000000e+00 5.0304133e-01
+2.3233620e+01 0.0000000e+00 8.5359257e-01
+3.0750979e+01 0.0000000e+00 9.4751968e-01
+3.5666784e+01 0.0000000e+00 6.2286946e-01
+3.7947037e+01 0.0000000e+00 -3.5902678e-02
+3.8086487e+01 0.0000000e+00 -7.6113103e-01
+3.6439499e+01 0.0000000e+00 -1.2520240e+00
+3.2982280e+01 0.0000000e+00 -1.3241682e+00
+2.7549282e+01 0.0000000e+00 -1.0089330e+00
+2.0355800e+01 0.0000000e+00 -5.3923949e-01
+1.2442643e+01 0.0000000e+00 -1.8326061e-01
+5.5909009e+00 0.0000000e+00 -3.7214815e-02
+1.4877260e+00 0.0000000e+00 -6.2496869e-03
+2.6928105e-01 0.0000000e+00 -8.6847505e-04
+3.6881690e-02 0.0000000e+00 -8.2619532e-05
+3.5571422e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.0014875e-03 3.6326709e-05 6.4518569e-05
+4.1420582e-02 3.6406994e-04 6.9950030e-04
+3.0217663e-01 2.2604605e-03 5.3334418e-03
+1.6717781e+00 7.2278613e-03 3.4069766e-02
+6.3076750e+00 -1.3185846e-02 1.7519591e-01
+1.4080448e+01 -5.1865791e-02 4.9282800e-01
+2.2853023e+01 3.2676489e-02 8.4074919e-01
+3.0324281e+01 3.2030848e-01 9.4713891e-01
+3.5248065e+01 7.0720615e-01 6.5865184e-01
+3.7542234e+01 1.0047519e+00 5.8702585e-02
+3.7663538e+01 1.0808646e+00 -5.9921308e-01
+3.5961877e+01 9.1752911e-01 -1.0391197e+00
+3.2444001e+01 6.0115815e-01 -1.1019989e+00
+2.6995563e+01 2.8096908e-01 -8.2924894e-01
+1.9872703e+01 8.8740046e-02 -4.3489232e-01
+1.2110226e+01 4.3477730e-02 -1.4595283e-01
+5.4287910e+00 4.7097335e-02 -3.0940238e-02
+1.4414961e+00 2.0643867e-02 -5.3542392e-03
+2.6050111e-01 4.1486343e-03 -7.2293164e-04
+3.5681798e-02 5.3928770e-04 -6.2326610e-05
+3.4503816e-03 4.4434039e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.0385327e-02 3.9439849e-04 6.3580514e-04
+4.7468654e-01 4.3366198e-03 7.6078696e-03
+4.0830271e+00 3.0941594e-02 6.5954048e-02
+2.7133727e+01 1.1247673e-01 4.9569112e-01
+1.2105039e+02 -5.3105827e-01 3.2433140e+00
+2.7711491e+02 -1.8707041e+00 9.8136209e+00
+4.5050032e+02 -5.3407607e-01 1.7051651e+01
+5.9640336e+02 5.2316240e+00 1.9286247e+01
+6.9160235e+02 1.3107206e+01 1.3482607e+01
+7.3561124e+02 1.9130181e+01 1.4300943e+00
+7.3792132e+02 2.0645686e+01 -1.1774022e+01
+7.0538834e+02 1.7327507e+01 -2.0638576e+01
+6.3781319e+02 1.0915795e+01 -2.1947926e+01
+5.3235373e+02 4.4640305e+00 -1.6447971e+01
+3.9317997e+02 7.7143927e-01 -8.4415957e+00
+2.3969108e+02 2.8503496e-01 -2.6310493e+00
+1.0518865e+02 7.8858225e-01 -4.7003741e-01
+2.3665617e+01 3.3515626e-01 -7.2185194e-02
+3.5591289e+00 5.6558021e-02 -8.8060810e-03
+4.1271614e-01 6.4734965e-03 -7.1222985e-04
+3.5052175e-02 5.0296756e-04 0.0000000e+00
+0 0 0
+0 0 0
+2.8539533e-01 2.7187499e-03 4.1599876e-03
+3.9516526e+00 3.3625798e-02 5.7055355e-02
+4.2244110e+01 2.8824704e-01 5.9194285e-01
+3.6310942e+02 1.3151938e+00 5.5621477e+00
+2.1176311e+03 -1.5523842e+01 5.4063068e+01
+4.9383809e+03 -5.2014021e+01 1.7746664e+02
+8.0160769e+03 -3.6716024e+01 3.1328542e+02
+1.0575625e+04 6.3140704e+01 3.5495312e+02
+1.2228699e+04 2.0200455e+02 2.4910516e+02
+1.2986704e+04 3.0753496e+02 3.0626328e+01
+1.3026418e+04 3.3363709e+02 -2.0827599e+02
+1.2468190e+04 2.7532040e+02 -3.6949419e+02
+1.1302214e+04 1.6280636e+02 -3.9445077e+02
+9.4675980e+03 5.0298649e+01 -2.9474190e+02
+7.0234471e+03 -1.0209096e+01 -1.4806565e+02
+4.2977360e+03 -9.2110359e+00 -4.2303648e+01
+1.8614716e+03 9.9126504e+00 -5.7560339e+00
+3.2122329e+02 4.0068327e+00 -7.3498295e-01
+3.7329689e+01 5.1257212e-01 -7.5745548e-02
+3.4764877e+00 4.8492701e-02 -5.4359782e-03
+2.5000063e-01 3.3899926e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.5211520e+00 1.4895361e-02 1.8713738e-02
+2.5214905e+01 2.1054626e-01 2.9977062e-01
+3.4739070e+02 2.2417998e+00 3.8820333e+00
+4.1761473e+03 1.5959006e+01 4.8062582e+01
+3.7781680e+04 -3.7591106e+02 9.0948601e+02
+8.7823761e+04 -1.2455891e+03 3.2180495e+03
+1.4180694e+05 -1.1000593e+03 5.7352153e+03
+1.8632629e+05 6.3154296e+02 6.4893434e+03
+2.1483287e+05 3.0633053e+03 4.5630802e+03
+2.2782048e+05 4.8941394e+03 6.3041381e+02
+2.2851361e+05 5.3379925e+03 -3.6580687e+03
+2.1899474e+05 4.3223507e+03 -6.5690877e+03
+1.9899223e+05 2.3626950e+03 -7.0457049e+03
+1.6728200e+05 4.0813036e+02 -5.2588252e+03
+1.2470018e+05 -5.8377589e+02 -2.5959259e+03
+7.6871116e+04 -4.0847336e+02 -6.8138821e+02
+3.3633012e+04 1.1558364e+02 -6.1327872e+01
+3.7560116e+03 3.8200786e+01 -5.9566463e+00
+3.1145468e+02 3.3669398e+00 -4.8359512e-01
+2.2449187e+01 2.5966746e-01 -2.9467162e-02
+1.3450302e+00 1.6303692e-02 0.0000000e+00
+0 0 0
+0 0 0
+5.5021996e+00 6.9720926e-02 4.4596610e-02
+1.0697859e+02 1.2044065e+00 7.4255623e-01
+1.9006185e+03 1.8300990e+01 1.0193479e+01
+3.4511439e+04 2.7427858e+02 1.3956974e+02
+5.3702443e+05 2.5311350e+03 5.6835292e+03
+1.4092121e+06 5.6088682e+03 1.9951137e+04
+2.3718651e+06 1.1072626e+04 3.4606653e+04
+3.1091021e+06 1.8303580e+04 3.7764913e+04
+3.5055105e+06 2.5122569e+04 2.4413845e+04
+3.6218881e+06 2.9406815e+04 -8.7335221e+02
+3.5705925e+06 3.0162821e+04 -2.7885474e+04
+3.4127065e+06 2.7491713e+04 -4.6047325e+04
+3.1282890e+06 2.2238013e+04 -4.8812179e+04
+2.6542948e+06 1.5811068e+04 -3.7032038e+04
+1.9659266e+06 9.8547745e+03 -1.9195259e+04
+1.1576016e+06 5.4628210e+03 -5.6827209e+03
+4.5357736e+05 2.6368994e+03 -4.7658743e+02
+3.1688450e+04 2.4760934e+02 -2.9767619e+01
+1.7266549e+03 1.6490573e+01 -1.8668986e+00
+9.6120459e+01 1.0803701e+00 -9.7890062e-02
+4.8965693e+00 6.1881927e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.1841506e+01 2.1134014e-01 5.1781457e-02
+2.3433619e+02 3.9974730e+00 6.0993499e-01
+4.1983260e+03 6.7892629e+01 2.2405778e+00
+7.5020164e+04 1.1460687e+03 -9.2283382e+01
+1.1989136e+06 9.4663200e+03 1.1012891e+04
+2.9514887e+06 2.0201298e+04 3.8324061e+04
+4.8727006e+06 3.5300395e+04 6.6006208e+04
+6.3655828e+06 5.2171543e+04 7.2002590e+04
+7.2050573e+06 6.6599320e+04 4.7231035e+04
+7.4896628e+06 7.5178594e+04 2.6546737e+02
+7.4153113e+06 7.6557010e+04 -5.0052813e+04
+7.0910476e+06 7.1071424e+04 -8.4230548e+04
+6.4860291e+06 6.0085230e+04 -9.0073192e+04
+5.4965890e+06 4.5772404e+04 -6.8869010e+04
+4.0913446e+06 3.0914145e+04 -3.6016680e+04
+2.4577340e+06 1.8079058e+04 -1.0709103e+04
+1.0238625e+06 8.6655844e+03 -5.9738528e+02
+6.8701835e+04 9.9644381e+02 -4.4349771e+01
+3.8069323e+03 5.8740265e+01 -3.0836847e+00
+2.1024685e+02 3.4391785e+00 -1.7043590e-01
+1.0523583e+01 1.8065743e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.8916359e+01 4.0607061e-01 6.9923949e-02
+3.7375865e+02 7.9374905e+00 6.5157836e-01
+6.6633025e+03 1.3979447e+02 -3.5239413e+00
+1.1808357e+05 2.4476531e+03 -2.9909043e+02
+1.9251816e+06 1.8653883e+04 1.6730217e+04
+4.6336156e+06 3.8442277e+04 5.7877775e+04
+7.5848143e+06 6.4257833e+04 9.8832723e+04
+9.8772388e+06 9.1423563e+04 1.0647830e+05
+1.1174723e+07 1.1379704e+05 6.7712631e+04
+1.1624601e+07 1.2683990e+05 -4.0953533e+03
+1.1517483e+07 1.2890122e+05 -8.0485050e+04
+1.1015518e+07 1.2053400e+05 -1.3219449e+05
+1.0075131e+07 1.0356747e+05 -1.4084024e+05
+8.5450533e+06 8.0871564e+04 -1.0815629e+05
+6.3802842e+06 5.6300402e+04 -5.7239866e+04
+3.8628736e+06 3.3906430e+04 -1.7387968e+04
+1.6412897e+06 1.6630936e+04 -7.9574635e+02
+1.0770990e+05 2.1150443e+03 -6.4186646e+01
+6.0178706e+03 1.2006898e+02 -4.6779060e+00
+3.3397268e+02 6.7723078e+00 -2.6586993e-01
+1.6740392e+01 3.4419542e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.5214477e+01 5.2630699e-01 1.5561907e-01
+4.9662949e+02 1.0405537e+01 2.2003495e+00
+8.8181956e+03 1.8543101e+02 2.0067879e+01
+1.5561538e+05 3.2832332e+03 5.9887514e+01
+2.5303292e+06 2.3957597e+04 2.1822652e+04
+6.0697728e+06 4.8388375e+04 7.4565861e+04
+9.9056759e+06 7.9131214e+04 1.2592055e+05
+1.2861878e+07 1.1055384e+05 1.3269487e+05
+1.4514456e+07 1.3594497e+05 7.8655924e+04
+1.5070136e+07 1.5059051e+05 -1.7796648e+04
+1.4915404e+07 1.5287381e+05 -1.1900224e+05
+1.4263807e+07 1.4343962e+05 -1.8661856e+05
+1.3057231e+07 1.2420349e+05 -1.9659297e+05
+1.1092366e+07 9.8141259e+04 -1.5120584e+05
+8.2989025e+06 6.9357509e+04 -8.1060501e+04
+5.0331949e+06 4.2449750e+04 -2.5495991e+04
+2.1400282e+06 2.1143843e+04 -1.5230830e+03
+1.4131799e+05 2.8270254e+03 -1.1115773e+02
+7.9269126e+03 1.5863998e+02 -7.6675300e+00
+4.4157405e+02 8.8405217e+00 -4.2562756e-01
+2.2196429e+01 4.4419701e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.9860132e+01 4.5259051e-01 3.0597834e-01
+5.8669902e+02 8.9762465e+00 5.2058851e+00
+1.0389548e+04 1.6040716e+02 7.2053388e+01
+1.8289269e+05 2.8463111e+03 9.5953138e+02
+2.9362650e+06 2.0298528e+04 2.5595189e+04
+7.0781483e+06 4.0565307e+04 8.6163321e+04
+1.1547626e+07 6.5601809e+04 1.4383828e+05
+1.4958269e+07 9.0804206e+04 1.4767876e+05
+1.6829429e+07 1.1095427e+05 7.9509245e+04
+1.7426599e+07 1.2249657e+05 -3.7790954e+04
+1.7218951e+07 1.2426387e+05 -1.5905396e+05
+1.6462575e+07 1.1678301e+05 -2.3876148e+05
+1.5085537e+07 1.0151061e+05 -2.4848459e+05
+1.2836727e+07 8.0690518e+04 -1.9111323e+05
+9.6152502e+06 5.7464031e+04 -1.0354895e+05
+5.8248968e+06 3.5469694e+04 -3.3646100e+04
+2.4583400e+06 1.7815394e+04 -2.6922392e+03
+1.6539527e+05 2.4433453e+03 -1.8040079e+02
+9.2979655e+03 1.3681116e+02 -1.1758515e+01
+5.1917891e+02 7.6027139e+00 -6.3397082e-01
+2.6150855e+01 3.8081696e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2601183e+01 1.7866640e-01 4.4955931e-01
+6.3963796e+02 3.5451614e+00 8.1259048e+00
+1.1310057e+04 6.3362115e+01 1.2339334e+02
+1.9883807e+05 1.1240667e+03 1.8567754e+03
+3.1533044e+06 7.9363971e+03 2.7784659e+04
+7.6475520e+06 1.5788423e+04 9.2506662e+04
+1.2483839e+07 2.5411328e+04 1.5309095e+05
+1.6146048e+07 3.5032716e+04 1.5382631e+05
+1.8123891e+07 4.2687410e+04 7.5598826e+04
+1.8725892e+07 4.7056166e+04 -5.5609926e+04
+1.8476947e+07 4.7716416e+04 -1.8976000e+05
+1.7661010e+07 4.4872276e+04 -2.7680029e+05
+1.6196288e+07 3.9067035e+04 -2.8560150e+05
+1.3798191e+07 3.1133266e+04 -2.1955086e+05
+1.0341291e+07 2.2244428e+04 -1.1974298e+05
+6.2537875e+06 1.3780390e+04 -3.9729630e+04
+2.6182191e+06 6.9464096e+03 -3.7451971e+03
+1.7926992e+05 9.6311914e+02 -2.4179425e+02
+1.0089053e+04 5.3943986e+01 -1.5323251e+01
+5.6405909e+02 2.9974201e+00 -8.1328392e-01
+2.8443433e+01 1.5007632e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.3495276e+01 -1.7866636e-01 5.0799316e-01
+6.5687489e+02 -3.5451606e+00 9.3165642e+00
+1.1609331e+04 -6.3362097e+01 1.4433436e+02
+2.0401828e+05 -1.1240665e+03 2.2217870e+03
+3.2196013e+06 -7.9363953e+03 2.8481899e+04
+7.8285097e+06 -1.5788420e+04 9.4456733e+04
+1.2783455e+07 -2.5411319e+04 1.5581348e+05
+1.6524725e+07 -3.5032703e+04 1.5524302e+05
+1.8533073e+07 -4.2687399e+04 7.3368852e+04
+1.9132757e+07 -4.7056154e+04 -6.2718201e+04
+1.8868283e+07 -4.7716406e+04 -2.0129429e+05
+1.8033273e+07 -4.4872262e+04 -2.9076547e+05
+1.6542375e+07 -3.9067025e+04 -2.9909655e+05
+1.4099012e+07 -3.1133258e+04 -2.2986751e+05
+1.0568451e+07 -2.2244423e+04 -1.2564384e+05
+6.3861877e+06 -1.3780386e+04 -4.1979760e+04
+2.6647082e+06 -6.9464081e+03 -4.1602454e+03
+1.8373584e+05 -9.6311902e+02 -2.6598049e+02
+1.0343728e+04 -5.3943979e+01 -1.6724531e+01
+5.7851865e+02 -2.9974197e+00 -8.8366403e-01
+2.9182693e+01 -1.5007630e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2601183e+01 -4.5259051e-01 4.4955933e-01
+6.3963796e+02 -8.9762466e+00 8.1259054e+00
+1.1310057e+04 -1.6040716e+02 1.2339332e+02
+1.9883807e+05 -2.8463111e+03 1.8567749e+03
+3.1533044e+06 -2.0298526e+04 2.7784659e+04
+7.6475520e+06 -4.0565304e+04 9.2506663e+04
+1.2483839e+07 -6.5601799e+04 1.5309095e+05
+1.6146048e+07 -9.0804192e+04 1.5382630e+05
+1.8123891e+07 -1.1095426e+05 7.5598826e+04
+1.8725892e+07 -1.2249656e+05 -5.5609922e+04
+1.8476947e+07 -1.2426386e+05 -1.8976000e+05
+1.7661010e+07 -1.1678301e+05 -2.7680029e+05
+1.6196288e+07 -1.0151060e+05 -2.8560150e+05
+1.3798191e+07 -8.0690511e+04 -2.1955087e+05
+1.0341291e+07 -5.7464027e+04 -1.1974298e+05
+6.2537875e+06 -3.5469691e+04 -3.9729630e+04
+2.6182191e+06 -1.7815392e+04 -3.7451971e+03
+1.7926992e+05 -2.4433452e+03 -2.4179425e+02
+1.0089053e+04 -1.3681115e+02 -1.5323251e+01
+5.6405909e+02 -7.6027135e+00 -8.1328392e-01
+2.8443433e+01 -3.8081694e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.9860132e+01 -5.2630699e-01 3.0597834e-01
+5.8669902e+02 -1.0405537e+01 5.2058850e+00
+1.0389548e+04 -1.8543101e+02 7.2053381e+01
+1.8289269e+05 -3.2832332e+03 9.5953131e+02
+2.9362650e+06 -2.3957596e+04 2.5595190e+04
+7.0781483e+06 -4.8388375e+04 8.6163326e+04
+1.1547626e+07 -7.9131215e+04 1.4383828e+05
+1.4958269e+07 -1.1055384e+05 1.4767876e+05
+1.6829429e+07 -1.3594496e+05 7.9509242e+04
+1.7426599e+07 -1.5059051e+05 -3.7790953e+04
+1.7218951e+07 -1.5287380e+05 -1.5905396e+05
+1.6462575e+07 -1.4343961e+05 -2.3876148e+05
+1.5085537e+07 -1.2420348e+05 -2.4848459e+05
+1.2836727e+07 -9.8141252e+04 -1.9111323e+05
+9.6152502e+06 -6.9357504e+04 -1.0354895e+05
+5.8248968e+06 -4.2449747e+04 -3.3646099e+04
+2.4583400e+06 -2.1143842e+04 -2.6922393e+03
+1.6539527e+05 -2.8270253e+03 -1.8040079e+02
+9.2979655e+03 -1.5863997e+02 -1.1758515e+01
+5.1917891e+02 -8.8405214e+00 -6.3397082e-01
+2.6150855e+01 -4.4419700e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.5214477e+01 -4.0607061e-01 1.5561907e-01
+4.9662949e+02 -7.9374904e+00 2.2003494e+00
+8.8181956e+03 -1.3979447e+02 2.0067879e+01
+1.5561538e+05 -2.4476530e+03 5.9887478e+01
+2.5303292e+06 -1.8653882e+04 2.1822652e+04
+6.0697728e+06 -3.8442275e+04 7.4565864e+04
+9.9056759e+06 -6.4257833e+04 1.2592055e+05
+1.2861878e+07 -9.1423563e+04 1.3269487e+05
+1.4514456e+07 -1.1379704e+05 7.8655923e+04
+1.5070136e+07 -1.2683989e+05 -1.7796648e+04
+1.4915404e+07 -1.2890121e+05 -1.1900223e+05
+1.4263807e+07 -1.2053400e+05 -1.8661856e+05
+1.3057231e+07 -1.0356747e+05 -1.9659297e+05
+1.1092366e+07 -8.0871563e+04 -1.5120584e+05
+8.2989025e+06 -5.6300400e+04 -8.1060501e+04
+5.0331949e+06 -3.3906428e+04 -2.5495992e+04
+2.1400282e+06 -1.6630935e+04 -1.5230830e+03
+1.4131799e+05 -2.1150442e+03 -1.1115773e+02
+7.9269126e+03 -1.2006898e+02 -7.6675302e+00
+4.4157405e+02 -6.7723077e+00 -4.2562757e-01
+2.2196429e+01 -3.4419542e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.8916359e+01 -2.1134013e-01 6.9923948e-02
+3.7375865e+02 -3.9974729e+00 6.5157838e-01
+6.6633025e+03 -6.7892628e+01 -3.5239395e+00
+1.1808357e+05 -1.1460687e+03 -2.9909041e+02
+1.9251816e+06 -9.4663198e+03 1.6730217e+04
+4.6336156e+06 -2.0201297e+04 5.7877776e+04
+7.5848143e+06 -3.5300395e+04 9.8832724e+04
+9.8772388e+06 -5.2171542e+04 1.0647830e+05
+1.1174723e+07 -6.6599319e+04 6.7712631e+04
+1.1624601e+07 -7.5178594e+04 -4.0953527e+03
+1.1517483e+07 -7.6557007e+04 -8.0485048e+04
+1.1015518e+07 -7.1071421e+04 -1.3219449e+05
+1.0075131e+07 -6.0085228e+04 -1.4084024e+05
+8.5450533e+06 -4.5772403e+04 -1.0815629e+05
+6.3802842e+06 -3.0914144e+04 -5.7239866e+04
+3.8628736e+06 -1.8079058e+04 -1.7387968e+04
+1.6412897e+06 -8.6655841e+03 -7.9574639e+02
+1.0770990e+05 -9.9644380e+02 -6.4186646e+01
+6.0178706e+03 -5.8740264e+01 -4.6779062e+00
+3.3397268e+02 -3.4391784e+00 -2.6586993e-01
+1.6740392e+01 -1.8065743e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.1841506e+01 -6.9720926e-02 5.1781461e-02
+2.3433619e+02 -1.2044065e+00 6.0993497e-01
+4.1983260e+03 -1.8300990e+01 2.2405771e+00
+7.5020164e+04 -2.7427857e+02 -9.2283375e+01
+1.1989136e+06 -2.5311350e+03 1.1012891e+04
+2.9514887e+06 -5.6088680e+03 3.8324062e+04
+4.8727006e+06 -1.1072626e+04 6.6006208e+04
+6.3655828e+06 -1.8303580e+04 7.2002590e+04
+7.2050573e+06 -2.5122568e+04 4.7231036e+04
+7.4896628e+06 -2.9406814e+04 2.6546907e+02
+7.4153113e+06 -3.0162820e+04 -5.0052812e+04
+7.0910476e+06 -2.7491713e+04 -8.4230547e+04
+6.4860291e+06 -2.2238013e+04 -9.0073192e+04
+5.4965890e+06 -1.5811068e+04 -6.8869010e+04
+4.0913446e+06 -9.8547745e+03 -3.6016680e+04
+2.4577340e+06 -5.4628209e+03 -1.0709104e+04
+1.0238625e+06 -2.6368995e+03 -5.9738529e+02
+6.8701835e+04 -2.4760934e+02 -4.4349771e+01
+3.8069323e+03 -1.6490573e+01 -3.0836848e+00
+2.1024685e+02 -1.0803701e+00 -1.7043590e-01
+1.0523583e+01 -6.1881926e-02 0.0000000e+00
+0 0 0
+0 0 0
+5.5021996e+00 -1.4895361e-02 4.4596611e-02
+1.0697859e+02 -2.1054626e-01 7.4255623e-01
+1.9006185e+03 -2.2417998e+00 1.0193479e+01
+3.4511439e+04 -1.5959006e+01 1.3956973e+02
+5.3702443e+05 3.7591107e+02 5.6835292e+03
+1.4092121e+06 1.2455891e+03 1.9951137e+04
+2.3718651e+06 1.1000594e+03 3.4606653e+04
+3.1091021e+06 -6.3154287e+02 3.7764913e+04
+3.5055105e+06 -3.0633053e+03 2.4413845e+04
+3.6218881e+06 -4.8941393e+03 -8.7335161e+02
+3.5705925e+06 -5.3379924e+03 -2.7885474e+04
+3.4127065e+06 -4.3223507e+03 -4.6047325e+04
+3.1282890e+06 -2.3626949e+03 -4.8812179e+04
+2.6542948e+06 -4.0813030e+02 -3.7032038e+04
+1.9659266e+06 5.8377591e+02 -1.9195259e+04
+1.1576016e+06 4.0847334e+02 -5.6827210e+03
+4.5357736e+05 -1.1558364e+02 -4.7658744e+02
+3.1688450e+04 -3.8200785e+01 -2.9767618e+01
+1.7266549e+03 -3.3669395e+00 -1.8668986e+00
+9.6120459e+01 -2.5966744e-01 -9.7890061e-02
+4.8965693e+00 -1.6303691e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.5211520e+00 -2.7187498e-03 1.8713738e-02
+2.5214905e+01 -3.3625798e-02 2.9977062e-01
+3.4739070e+02 -2.8824704e-01 3.8820333e+00
+4.1761473e+03 -1.3151941e+00 4.8062582e+01
+3.7781679e+04 1.5523842e+01 9.0948601e+02
+8.7823761e+04 5.2014019e+01 3.2180495e+03
+1.4180694e+05 3.6716023e+01 5.7352154e+03
+1.8632629e+05 -6.3140697e+01 6.4893434e+03
+2.1483287e+05 -2.0200455e+02 4.5630802e+03
+2.2782048e+05 -3.0753496e+02 6.3041386e+02
+2.2851361e+05 -3.3363709e+02 -3.6580687e+03
+2.1899474e+05 -2.7532040e+02 -6.5690876e+03
+1.9899223e+05 -1.6280636e+02 -7.0457050e+03
+1.6728200e+05 -5.0298647e+01 -5.2588252e+03
+1.2470018e+05 1.0209096e+01 -2.5959259e+03
+7.6871116e+04 9.2110361e+00 -6.8138821e+02
+3.3633012e+04 -9.9126494e+00 -6.1327871e+01
+3.7560116e+03 -4.0068326e+00 -5.9566460e+00
+3.1145468e+02 -5.1257212e-01 -4.8359511e-01
+2.2449187e+01 -4.8492702e-02 -2.9467163e-02
+1.3450302e+00 -3.3899926e-03 0.0000000e+00
+0 0 0
+0 0 0
+2.8539533e-01 -3.9439848e-04 4.1599876e-03
+3.9516526e+00 -4.3366197e-03 5.7055355e-02
+4.2244110e+01 -3.0941592e-02 5.9194282e-01
+3.6310942e+02 -1.1247670e-01 5.5621479e+00
+2.1176311e+03 5.3105850e-01 5.4063068e+01
+4.9383809e+03 1.8707045e+00 1.7746664e+02
+8.0160769e+03 5.3407626e-01 3.1328542e+02
+1.0575625e+04 -5.2316243e+00 3.5495312e+02
+1.2228699e+04 -1.3107206e+01 2.4910516e+02
+1.2986704e+04 -1.9130180e+01 3.0626330e+01
+1.3026418e+04 -2.0645686e+01 -2.0827599e+02
+1.2468190e+04 -1.7327507e+01 -3.6949419e+02
+1.1302214e+04 -1.0915795e+01 -3.9445077e+02
+9.4675980e+03 -4.4640300e+00 -2.9474190e+02
+7.0234471e+03 -7.7143916e-01 -1.4806565e+02
+4.2977360e+03 -2.8503490e-01 -4.2303648e+01
+1.8614716e+03 -7.8858222e-01 -5.7560338e+00
+3.2122329e+02 -3.3515625e-01 -7.3498293e-01
+3.7329689e+01 -5.6558021e-02 -7.5745548e-02
+3.4764877e+00 -6.4734966e-03 -5.4359783e-03
+2.5000063e-01 -5.0296757e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.0385327e-02 -3.6326709e-05 6.3580514e-04
+4.7468654e-01 -3.6406994e-04 7.6078696e-03
+4.0830271e+00 -2.2604605e-03 6.5954048e-02
+2.7133727e+01 -7.2278607e-03 4.9569114e-01
+1.2105039e+02 1.3185841e-02 3.2433140e+00
+2.7711491e+02 5.1865788e-02 9.8136208e+00
+4.5050032e+02 -3.2676469e-02 1.7051651e+01
+5.9640336e+02 -3.2030848e-01 1.9286247e+01
+6.9160235e+02 -7.0720614e-01 1.3482608e+01
+7.3561124e+02 -1.0047519e+00 1.4300944e+00
+7.3792132e+02 -1.0808646e+00 -1.1774022e+01
+7.0538834e+02 -9.1752910e-01 -2.0638576e+01
+6.3781319e+02 -6.0115813e-01 -2.1947926e+01
+5.3235373e+02 -2.8096908e-01 -1.6447972e+01
+3.9317997e+02 -8.8740022e-02 -8.4415957e+00
+2.3969108e+02 -4.3477704e-02 -2.6310493e+00
+1.0518865e+02 -4.7097333e-02 -4.7003740e-01
+2.3665617e+01 -2.0643867e-02 -7.2185194e-02
+3.5591289e+00 -4.1486342e-03 -8.8060810e-03
+4.1271614e-01 -5.3928770e-04 -7.1222986e-04
+3.5052175e-02 -4.4434037e-05 0.0000000e+00
+0 0 0
+0 0 0
+4.0014875e-03 0.0000000e+00 6.4518569e-05
+4.1420582e-02 0.0000000e+00 6.9950030e-04
+3.0217663e-01 0.0000000e+00 5.3334419e-03
+1.6717781e+00 0.0000000e+00 3.4069767e-02
+6.3076750e+00 0.0000000e+00 1.7519591e-01
+1.4080448e+01 0.0000000e+00 4.9282800e-01
+2.2853022e+01 0.0000000e+00 8.4074919e-01
+3.0324281e+01 0.0000000e+00 9.4713892e-01
+3.5248065e+01 0.0000000e+00 6.5865184e-01
+3.7542234e+01 0.0000000e+00 5.8702588e-02
+3.7663538e+01 0.0000000e+00 -5.9921308e-01
+3.5961877e+01 0.0000000e+00 -1.0391197e+00
+3.2444001e+01 0.0000000e+00 -1.1019989e+00
+2.6995563e+01 0.0000000e+00 -8.2924894e-01
+1.9872703e+01 0.0000000e+00 -4.3489232e-01
+1.2110226e+01 0.0000000e+00 -1.4595283e-01
+5.4287910e+00 0.0000000e+00 -3.0940238e-02
+1.4414961e+00 0.0000000e+00 -5.3542392e-03
+2.6050111e-01 0.0000000e+00 -7.2293165e-04
+3.5681798e-02 0.0000000e+00 -6.2326610e-05
+3.4503816e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.9780698e-03 -1.9677895e-05 4.3095651e-05
+4.1101652e-02 -1.4921282e-04 5.1123820e-04
+2.9936094e-01 -9.6342820e-04 4.2903646e-03
+1.6545051e+00 -8.1067206e-03 2.9670170e-02
+6.2407246e+00 -6.3293338e-02 1.5991385e-01
+1.3942445e+01 -1.5800509e-01 4.5592215e-01
+2.2662607e+01 -1.3769196e-01 7.8402972e-01
+3.0118956e+01 9.4098872e-02 8.9525561e-01
+3.5047114e+01 4.4441930e-01 6.5178818e-01
+3.7333566e+01 7.2647141e-01 1.3398563e-01
+3.7417804e+01 8.0683623e-01 -4.2711676e-01
+3.5655642e+01 6.6926771e-01 -7.9014922e-01
+3.2079735e+01 4.0355108e-01 -8.2943378e-01
+2.6612325e+01 1.5423529e-01 -6.0043104e-01
+1.9536609e+01 3.1607728e-02 -2.9594491e-01
+1.1879911e+01 2.6429496e-02 -9.2059501e-02
+5.3186273e+00 3.7234265e-02 -1.9130133e-02
+1.4137434e+00 1.1304231e-02 -2.6816541e-03
+2.5697896e-01 9.2114470e-04 -8.0649238e-05
+3.5758728e-02 -2.0125470e-04 4.3674698e-05
+3.5553700e-03 -6.1313702e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.9805534e-02 4.4941010e-05 5.1517457e-04
+4.6774622e-01 8.7785051e-04 6.4284389e-03
+4.0234890e+00 6.8916770e-03 5.8111475e-02
+2.6746673e+01 -1.4159735e-02 4.5121859e-01
+1.1938230e+02 -9.4772110e-01 3.0037324e+00
+2.7356473e+02 -2.7450764e+00 9.1409868e+00
+4.4557136e+02 -2.0451003e+00 1.5977357e+01
+5.9118943e+02 2.9887236e+00 1.8296661e+01
+6.8677451e+02 1.0212320e+01 1.3356601e+01
+7.3097722e+02 1.5830668e+01 2.8864246e+00
+7.3272343e+02 1.7326614e+01 -8.4354630e+00
+6.9891176e+02 1.4482815e+01 -1.5772438e+01
+6.2995358e+02 9.0595004e+00 -1.6568774e+01
+5.2393000e+02 3.9092494e+00 -1.1900056e+01
+3.8571079e+02 1.3113262e+00 -5.7105941e+00
+2.3454860e+02 1.1186108e+00 -1.6603003e+00
+1.0273459e+02 1.1617992e+00 -3.3080746e-01
+2.3091848e+01 3.0383214e-01 -4.9565843e-02
+3.4782853e+00 3.6269488e-02 -4.0706118e-03
+4.0663563e-01 1.7727292e-03 3.5911783e-05
+3.5166323e-02 -1.3954996e-04 0.0000000e+00
+0 0 0
+0 0 0
+2.8041355e-01 1.0024882e-03 4.0242345e-03
+3.8869399e+00 1.4082880e-02 5.5531857e-02
+4.1606938e+01 1.2598888e-01 5.7360619e-01
+3.5806799e+02 2.9980219e-01 5.3010770e+00
+2.0899871e+03 -1.8536158e+01 5.0533473e+01
+4.8782482e+03 -5.8206263e+01 1.6612738e+02
+7.9351067e+03 -4.9732587e+01 2.9478513e+02
+1.0495728e+04 3.9726731e+01 3.3794430e+02
+1.2162125e+04 1.6765434e+02 2.4707619e+02
+1.2928156e+04 2.6544663e+02 5.6008307e+01
+1.2959383e+04 2.9035261e+02 -1.4998178e+02
+1.2376732e+04 2.3975266e+02 -2.8379385e+02
+1.1181818e+04 1.4415574e+02 -2.9849442e+02
+9.3314918e+03 5.4035239e+01 -2.1251427e+02
+6.8990204e+03 1.1875415e+01 -9.8651645e+01
+4.2107318e+03 1.5421976e+01 -2.5950765e+01
+1.8199332e+03 2.1329303e+01 -4.5799137e+00
+3.1349336e+02 4.0732602e+00 -6.1940839e-01
+3.6402690e+01 3.9828201e-01 -5.4421420e-02
+3.4003034e+00 2.5621447e-02 -2.0857813e-03
+2.4707900e-01 6.9630086e-04 0.0000000e+00
+0 0 0
+0 0 0
+1.4951714e+00 5.0605128e-03 2.1922587e-02
+2.4829999e+01 7.1746707e-02 3.4916386e-01
+3.4275607e+02 7.4442230e-01 4.3653665e+00
+4.1270862e+03 4.1726227e+00 4.9553608e+01
+3.7362687e+04 -4.0368062e+02 8.5369090e+02
+8.6904066e+04 -1.3071515e+03 3.0223315e+03
+1.4063240e+05 -1.2678890e+03 5.4150281e+03
+1.8529455e+05 2.8893745e+02 6.1975648e+03
+2.1413367e+05 2.5338136e+03 4.5306041e+03
+2.2731686e+05 4.2297852e+03 1.0698867e+03
+2.2787336e+05 4.6474235e+03 -2.6469436e+03
+2.1790071e+05 3.7559076e+03 -5.0690699e+03
+1.9732811e+05 2.0806725e+03 -5.3414637e+03
+1.6524854e+05 5.1732098e+02 -3.7712860e+03
+1.2276527e+05 -1.3405341e+02 -1.6904504e+03
+7.5489609e+04 1.0177111e+02 -3.9529238e+02
+3.2956619e+04 3.5999777e+02 -5.7568112e+01
+3.6745541e+03 3.3885380e+01 -5.9227470e+00
+3.0423361e+02 2.1330117e+00 -4.3640780e-01
+2.1940177e+01 1.1708236e-01 -1.8858566e-02
+1.3224676e+00 4.4003745e-03 0.0000000e+00
+0 0 0
+0 0 0
+5.4145842e+00 1.7275243e-02 7.5400665e-02
+1.0550865e+02 2.0333910e-01 1.4137396e+00
+1.8789140e+03 7.9459709e-01 2.3068112e+01
+3.4189691e+04 -3.9044547e+01 3.8803321e+02
+5.3062834e+05 8.3598003e+01 6.2968478e+03
+1.3933627e+06 -5.2909027e+01 2.0892006e+04
+2.3530346e+06 2.1315947e+03 3.6323061e+04
+3.0974730e+06 7.0274009e+03 4.1213709e+04
+3.5059118e+06 1.2682046e+04 3.0664162e+04
+3.6312697e+06 1.6633904e+04 8.8784961e+03
+3.5813488e+06 1.7486330e+04 -1.4716758e+04
+3.4171264e+06 1.5215964e+04 -3.0596664e+04
+3.1221831e+06 1.0859269e+04 -3.3269421e+04
+2.6396396e+06 6.1168906e+03 -2.4213776e+04
+1.9503493e+06 2.6679658e+03 -1.1438521e+04
+1.1483214e+06 1.1330942e+03 -3.1896404e+03
+4.5073461e+05 7.1101826e+02 -6.9790564e+02
+3.1109782e+04 -4.6077238e+01 -3.9274273e+01
+1.6916976e+03 -8.4065339e-02 -2.0999075e+00
+9.4107787e+01 1.0985085e-01 -8.0004142e-02
+4.8122835e+00 8.6820390e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.1659611e+01 7.3607811e-02 1.2556279e-01
+2.3121415e+02 1.2130961e+00 2.2378402e+00
+4.1512308e+03 1.6455501e+01 3.3672157e+01
+7.4316349e+04 1.8882237e+02 5.0962006e+02
+1.1829311e+06 2.3765227e+03 1.4199246e+04
+2.9157960e+06 4.4951147e+03 4.5343961e+04
+4.8306471e+06 1.0866804e+04 7.8662187e+04
+6.3375147e+06 2.1430743e+04 9.2326946e+04
+7.2009257e+06 3.2545065e+04 7.6595512e+04
+7.5043230e+06 4.0000252e+04 3.8568972e+04
+7.4347919e+06 4.1467011e+04 -4.8922966e+03
+7.1008153e+06 3.6948363e+04 -3.6392364e+04
+6.4776896e+06 2.8228254e+04 -4.5421858e+04
+5.4728683e+06 1.8190195e+04 -3.3774470e+04
+4.0654513e+06 9.8318639e+03 -1.5045024e+04
+2.4425325e+06 4.7955075e+03 -3.5059641e+03
+1.0195757e+06 2.4802204e+03 -9.8833774e+02
+6.7639696e+04 8.8968331e+01 -6.1244131e+01
+3.7391365e+03 9.9011009e+00 -3.4334379e+00
+2.0627245e+02 7.7939330e-01 -1.2858519e-01
+1.0356515e+01 4.7164389e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.8646927e+01 1.8739581e-01 1.5564318e-01
+3.6914418e+02 3.5049662e+00 2.4782400e+00
+6.5938547e+03 5.8258316e+01 3.0123282e+01
+1.1704310e+05 9.5056324e+02 3.0884668e+02
+1.8970945e+06 7.9244760e+03 2.2848026e+04
+4.5736074e+06 1.4878045e+04 7.2473264e+04
+7.5150433e+06 2.7772784e+04 1.2533831e+05
+9.8303440e+06 4.5664332e+04 1.4799957e+05
+1.1166441e+07 6.3197564e+04 1.2562944e+05
+1.1646815e+07 7.4593959e+04 6.8821345e+04
+1.1548247e+07 7.6733350e+04 2.7918086e+03
+1.1031892e+07 6.9667896e+04 -4.6302081e+04
+1.0063496e+07 5.5859813e+04 -6.2297703e+04
+8.5088650e+06 3.9277326e+04 -4.7196554e+04
+6.3395126e+06 2.4204161e+04 -2.0797269e+04
+3.8378146e+06 1.3454791e+04 -4.3975800e+03
+1.6333486e+06 7.0079291e+03 -9.8417040e+02
+1.0620781e+05 6.7696742e+02 -7.0087884e+01
+5.9201476e+03 4.1784205e+01 -4.2480314e+00
+3.2815259e+02 2.5124470e+00 -1.6099910e-01
+1.6493456e+01 1.3310149e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.4907795e+01 2.8632394e-01 2.0775358e-01
+4.9151442e+02 5.5836629e+00 3.2441175e+00
+8.7439396e+03 9.7901424e+01 3.7856943e+01
+1.5454510e+05 1.7035260e+03 3.5517396e+02
+2.4955715e+06 1.2797339e+04 3.0239993e+04
+5.9955173e+06 2.3814848e+04 9.5558708e+04
+9.8236268e+06 4.1149387e+04 1.6423120e+05
+1.2816496e+07 6.3103570e+04 1.9217365e+05
+1.4525624e+07 8.3701520e+04 1.6050168e+05
+1.5124597e+07 9.6809277e+04 8.3825551e+04
+1.4981113e+07 9.9189807e+04 -4.3399413e+03
+1.4307643e+07 9.0947756e+04 -6.9456035e+04
+1.3059025e+07 7.4711244e+04 -9.0101698e+04
+1.1055569e+07 5.4709029e+04 -6.8736586e+04
+8.2503357e+06 3.5624020e+04 -3.1589657e+04
+5.0016859e+06 2.0849154e+04 -7.4749659e+03
+2.1298317e+06 1.0971621e+04 -1.2422241e+03
+1.3955710e+05 1.2865990e+03 -9.0968564e+01
+7.8100282e+03 7.3398259e+01 -5.6982804e+00
+4.3446965e+02 4.1493227e+00 -2.3075872e-01
+2.1888209e+01 2.1056363e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.9573352e+01 2.6909819e-01 3.0400518e-01
+5.8217617e+02 5.3207259e+00 5.0897938e+00
+1.0329289e+04 9.4774124e+01 6.8476587e+01
+1.8211611e+05 1.6765004e+03 8.7208633e+02
+2.9025051e+06 1.2071167e+04 3.5358223e+04
+7.0038159e+06 2.2353187e+04 1.1115220e+05
+1.1472913e+07 3.7467284e+04 1.8954747e+05
+1.4936834e+07 5.5772731e+04 2.1831396e+05
+1.6882850e+07 7.2542834e+04 1.7605205e+05
+1.7535079e+07 8.3076247e+04 8.1304348e+04
+1.7339849e+07 8.4936106e+04 -2.5339871e+04
+1.6552460e+07 7.8234941e+04 -1.0251213e+05
+1.5117442e+07 6.4998489e+04 -1.2470423e+05
+1.2813356e+07 4.8477933e+04 -9.5102079e+04
+9.5691905e+06 3.2327238e+04 -4.5745547e+04
+5.7930177e+06 1.9333027e+04 -1.2350300e+04
+2.4486710e+06 1.0230059e+04 -1.9397705e+03
+1.6358803e+05 1.2869957e+03 -1.3293012e+02
+9.1745866e+03 7.2056351e+01 -8.2092689e+00
+5.1147204e+02 4.0032128e+00 -3.5628718e-01
+2.5804824e+01 2.0030677e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2356496e+01 1.1044979e-01 4.0333477e-01
+6.3607304e+02 2.1925989e+00 7.0963798e+00
+1.1269002e+04 3.9218314e+01 1.0370711e+02
+1.9842865e+05 6.9644618e+02 1.4931761e+03
+3.1238179e+06 4.9310016e+03 3.8119795e+04
+7.5795907e+06 9.1111408e+03 1.1932316e+05
+1.2423350e+07 1.5097036e+04 2.0218208e+05
+1.6152292e+07 2.2213827e+04 2.2949740e+05
+1.8218586e+07 2.8665458e+04 1.7868011e+05
+1.8883773e+07 3.2692258e+04 7.1183682e+04
+1.8647323e+07 3.3391048e+04 -4.7646295e+04
+1.7792807e+07 3.0811026e+04 -1.3201895e+05
+1.6257453e+07 2.5713234e+04 -1.5389841e+05
+1.3790610e+07 1.9316664e+04 -1.1715609e+05
+1.0301393e+07 1.3000355e+04 -5.7931206e+04
+6.2241944e+06 7.8393775e+03 -1.6844470e+04
+2.6101246e+06 4.1579356e+03 -2.6779015e+03
+1.7751769e+05 5.3694813e+02 -1.7562838e+02
+9.9662413e+03 2.9936412e+01 -1.0696832e+01
+5.5619248e+02 1.6557793e+00 -4.8278982e-01
+2.8078432e+01 8.2517367e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.3270920e+01 -1.1044977e-01 4.4525529e-01
+6.5375346e+02 -2.1925988e+00 7.9518858e+00
+1.1576869e+04 -3.9218307e+01 1.1885069e+02
+2.0376932e+05 -6.9644608e+02 1.7607040e+03
+3.1922696e+06 -4.9309997e+03 3.8954407e+04
+7.7639404e+06 -9.1111385e+03 1.2174602e+05
+1.2729618e+07 -1.5097029e+04 2.0577787e+05
+1.6542733e+07 -2.2213814e+04 2.3219764e+05
+1.8644509e+07 -2.8665454e+04 1.7809232e+05
+1.9310243e+07 -3.2692245e+04 6.5991180e+04
+1.9058141e+07 -3.3391037e+04 -5.7084334e+04
+1.8181628e+07 -3.0811015e+04 -1.4381726e+05
+1.6615308e+07 -2.5713222e+04 -1.6532341e+05
+1.4098076e+07 -1.9316656e+04 -1.2575452e+05
+1.0531429e+07 -1.3000351e+04 -6.2732371e+04
+6.3577910e+06 -7.8393753e+03 -1.8656912e+04
+2.6573527e+06 -4.1579346e+03 -2.9855008e+03
+1.8201759e+05 -5.3694802e+02 -1.9335491e+02
+1.0221973e+04 -2.9936407e+01 -1.1727447e+01
+5.7063848e+02 -1.6557790e+00 -5.3571574e-01
+2.8812012e+01 -8.2517354e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2356496e+01 -2.6909819e-01 4.0333472e-01
+6.3607304e+02 -5.3207257e+00 7.0963807e+00
+1.1269002e+04 -9.4774123e+01 1.0370711e+02
+1.9842865e+05 -1.6765004e+03 1.4931762e+03
+3.1238179e+06 -1.2071167e+04 3.8119794e+04
+7.5795907e+06 -2.2353186e+04 1.1932316e+05
+1.2423350e+07 -3.7467282e+04 2.0218208e+05
+1.6152292e+07 -5.5772729e+04 2.2949740e+05
+1.8218586e+07 -7.2542823e+04 1.7868012e+05
+1.8883773e+07 -8.3076239e+04 7.1183685e+04
+1.8647323e+07 -8.4936099e+04 -4.7646293e+04
+1.7792807e+07 -7.8234933e+04 -1.3201895e+05
+1.6257453e+07 -6.4998475e+04 -1.5389842e+05
+1.3790610e+07 -4.8477921e+04 -1.1715609e+05
+1.0301393e+07 -3.2327232e+04 -5.7931206e+04
+6.2241944e+06 -1.9333025e+04 -1.6844470e+04
+2.6101246e+06 -1.0230058e+04 -2.6779015e+03
+1.7751769e+05 -1.2869956e+03 -1.7562838e+02
+9.9662413e+03 -7.2056346e+01 -1.0696832e+01
+5.5619248e+02 -4.0032126e+00 -4.8278983e-01
+2.8078432e+01 -2.0030676e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.9573352e+01 -2.8632394e-01 3.0400516e-01
+5.8217617e+02 -5.5836628e+00 5.0897938e+00
+1.0329289e+04 -9.7901423e+01 6.8476584e+01
+1.8211611e+05 -1.7035259e+03 8.7208635e+02
+2.9025051e+06 -1.2797339e+04 3.5358223e+04
+7.0038159e+06 -2.3814847e+04 1.1115220e+05
+1.1472913e+07 -4.1149386e+04 1.8954747e+05
+1.4936834e+07 -6.3103569e+04 2.1831396e+05
+1.6882850e+07 -8.3701516e+04 1.7605206e+05
+1.7535079e+07 -9.6809277e+04 8.1304348e+04
+1.7339849e+07 -9.9189805e+04 -2.5339867e+04
+1.6552460e+07 -9.0947751e+04 -1.0251212e+05
+1.5117442e+07 -7.4711245e+04 -1.2470423e+05
+1.2813356e+07 -5.4709030e+04 -9.5102085e+04
+9.5691905e+06 -3.5624014e+04 -4.5745549e+04
+5.7930177e+06 -2.0849152e+04 -1.2350301e+04
+2.4486710e+06 -1.0971620e+04 -1.9397706e+03
+1.6358803e+05 -1.2865990e+03 -1.3293013e+02
+9.1745866e+03 -7.3398255e+01 -8.2092691e+00
+5.1147204e+02 -4.1493225e+00 -3.5628718e-01
+2.5804824e+01 -2.1056362e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.4907795e+01 -1.8739581e-01 2.0775358e-01
+4.9151442e+02 -3.5049662e+00 3.2441174e+00
+8.7439397e+03 -5.8258315e+01 3.7856943e+01
+1.5454510e+05 -9.5056322e+02 3.5517398e+02
+2.4955715e+06 -7.9244755e+03 3.0239993e+04
+5.9955173e+06 -1.4878044e+04 9.5558709e+04
+9.8236268e+06 -2.7772783e+04 1.6423120e+05
+1.2816496e+07 -4.5664331e+04 1.9217365e+05
+1.4525624e+07 -6.3197561e+04 1.6050168e+05
+1.5124597e+07 -7.4593957e+04 8.3825553e+04
+1.4981113e+07 -7.6733345e+04 -4.3399323e+03
+1.4307643e+07 -6.9667895e+04 -6.9456025e+04
+1.3059025e+07 -5.5859814e+04 -9.0101704e+04
+1.1055569e+07 -3.9277324e+04 -6.8736589e+04
+8.2503357e+06 -2.4204162e+04 -3.1589657e+04
+5.0016859e+06 -1.3454791e+04 -7.4749677e+03
+2.1298317e+06 -7.0079288e+03 -1.2422241e+03
+1.3955710e+05 -6.7696740e+02 -9.0968563e+01
+7.8100282e+03 -4.1784203e+01 -5.6982805e+00
+4.3446965e+02 -2.5124469e+00 -2.3075873e-01
+2.1888209e+01 -1.3310149e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.8646927e+01 -7.3607810e-02 1.5564318e-01
+3.6914418e+02 -1.2130961e+00 2.4782400e+00
+6.5938547e+03 -1.6455501e+01 3.0123283e+01
+1.1704310e+05 -1.8882236e+02 3.0884667e+02
+1.8970945e+06 -2.3765225e+03 2.2848026e+04
+4.5736074e+06 -4.4951142e+03 7.2473264e+04
+7.5150433e+06 -1.0866804e+04 1.2533831e+05
+9.8303440e+06 -2.1430743e+04 1.4799957e+05
+1.1166441e+07 -3.2545064e+04 1.2562944e+05
+1.1646815e+07 -4.0000252e+04 6.8821346e+04
+1.1548247e+07 -4.1467010e+04 2.7918118e+03
+1.1031892e+07 -3.6948362e+04 -4.6302075e+04
+1.0063496e+07 -2.8228253e+04 -6.2297697e+04
+8.5088650e+06 -1.8190198e+04 -4.7196558e+04
+6.3395126e+06 -9.8318645e+03 -2.0797271e+04
+3.8378146e+06 -4.7955074e+03 -4.3975806e+03
+1.6333486e+06 -2.4802203e+03 -9.8417044e+02
+1.0620781e+05 -8.8968326e+01 -7.0087881e+01
+5.9201476e+03 -9.9010972e+00 -4.2480315e+00
+3.2815259e+02 -7.7939318e-01 -1.6099910e-01
+1.6493456e+01 -4.7164385e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.1659611e+01 -1.7275243e-02 1.2556280e-01
+2.3121415e+02 -2.0333910e-01 2.2378401e+00
+4.1512308e+03 -7.9459708e-01 3.3672159e+01
+7.4316349e+04 3.9044544e+01 5.0962005e+02
+1.1829311e+06 -8.3597989e+01 1.4199246e+04
+2.9157960e+06 5.2909125e+01 4.5343962e+04
+4.8306471e+06 -2.1315945e+03 7.8662187e+04
+6.3375147e+06 -7.0274013e+03 9.2326947e+04
+7.2009257e+06 -1.2682046e+04 7.6595513e+04
+7.5043230e+06 -1.6633903e+04 3.8568973e+04
+7.4347919e+06 -1.7486330e+04 -4.8922955e+03
+7.1008153e+06 -1.5215964e+04 -3.6392363e+04
+6.4776896e+06 -1.0859269e+04 -4.5421858e+04
+5.4728683e+06 -6.1168905e+03 -3.3774471e+04
+4.0654513e+06 -2.6679657e+03 -1.5045024e+04
+2.4425325e+06 -1.1330939e+03 -3.5059642e+03
+1.0195757e+06 -7.1101819e+02 -9.8833775e+02
+6.7639696e+04 4.6077242e+01 -6.1244119e+01
+3.7391365e+03 8.4064345e-02 -3.4334381e+00
+2.0627245e+02 -1.0985086e-01 -1.2858520e-01
+1.0356515e+01 -8.6820386e-03 0.0000000e+00
+0 0 0
+0 0 0
+5.4145842e+00 -5.0605127e-03 7.5400665e-02
+1.0550865e+02 -7.1746706e-02 1.4137396e+00
+1.8789140e+03 -7.4442228e-01 2.3068112e+01
+3.4189691e+04 -4.1726222e+00 3.8803321e+02
+5.3062834e+05 4.0368062e+02 6.2968478e+03
+1.3933627e+06 1.3071515e+03 2.0892006e+04
+2.3530346e+06 1.2678890e+03 3.6323061e+04
+3.0974730e+06 -2.8893738e+02 4.1213710e+04
+3.5059118e+06 -2.5338135e+03 3.0664162e+04
+3.6312697e+06 -4.2297850e+03 8.8784964e+03
+3.5813488e+06 -4.6474235e+03 -1.4716758e+04
+3.4171264e+06 -3.7559076e+03 -3.0596663e+04
+3.1221831e+06 -2.0806725e+03 -3.3269421e+04
+2.6396396e+06 -5.1732097e+02 -2.4213776e+04
+1.9503493e+06 1.3405341e+02 -1.1438521e+04
+1.1483214e+06 -1.0177111e+02 -3.1896404e+03
+4.5073461e+05 -3.5999777e+02 -6.9790564e+02
+3.1109782e+04 -3.3885378e+01 -3.9274271e+01
+1.6916976e+03 -2.1330117e+00 -2.0999075e+00
+9.4107787e+01 -1.1708236e-01 -8.0004143e-02
+4.8122835e+00 -4.4003743e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.4951714e+00 -1.0024882e-03 2.1922586e-02
+2.4829999e+01 -1.4082880e-02 3.4916386e-01
+3.4275607e+02 -1.2598887e-01 4.3653665e+00
+4.1270862e+03 -2.9980212e-01 4.9553607e+01
+3.7362687e+04 1.8536159e+01 8.5369090e+02
+8.6904066e+04 5.8206263e+01 3.0223315e+03
+1.4063240e+05 4.9732587e+01 5.4150281e+03
+1.8529455e+05 -3.9726728e+01 6.1975649e+03
+2.1413367e+05 -1.6765434e+02 4.5306041e+03
+2.2731686e+05 -2.6544663e+02 1.0698867e+03
+2.2787336e+05 -2.9035261e+02 -2.6469436e+03
+2.1790071e+05 -2.3975266e+02 -5.0690698e+03
+1.9732811e+05 -1.4415574e+02 -5.3414637e+03
+1.6524854e+05 -5.4035237e+01 -3.7712860e+03
+1.2276527e+05 -1.1875415e+01 -1.6904504e+03
+7.5489609e+04 -1.5421976e+01 -3.9529238e+02
+3.2956619e+04 -2.1329303e+01 -5.7568111e+01
+3.6745541e+03 -4.0732603e+00 -5.9227469e+00
+3.0423361e+02 -3.9828201e-01 -4.3640780e-01
+2.1940177e+01 -2.5621447e-02 -1.8858566e-02
+1.3224676e+00 -6.9630088e-04 0.0000000e+00
+0 0 0
+0 0 0
+2.8041355e-01 -4.4941007e-05 4.0242345e-03
+3.8869399e+00 -8.7785045e-04 5.5531857e-02
+4.1606938e+01 -6.8916763e-03 5.7360619e-01
+3.5806799e+02 1.4159741e-02 5.3010770e+00
+2.0899871e+03 9.4772114e-01 5.0533473e+01
+4.8782482e+03 2.7450766e+00 1.6612738e+02
+7.9351066e+03 2.0451005e+00 2.9478513e+02
+1.0495728e+04 -2.9887235e+00 3.3794430e+02
+1.2162125e+04 -1.0212319e+01 2.4707619e+02
+1.2928156e+04 -1.5830668e+01 5.6008307e+01
+1.2959383e+04 -1.7326614e+01 -1.4998178e+02
+1.2376732e+04 -1.4482815e+01 -2.8379385e+02
+1.1181818e+04 -9.0595002e+00 -2.9849442e+02
+9.3314918e+03 -3.9092492e+00 -2.1251427e+02
+6.8990204e+03 -1.3113259e+00 -9.8651645e+01
+4.2107318e+03 -1.1186107e+00 -2.5950765e+01
+1.8199332e+03 -1.1617992e+00 -4.5799137e+00
+3.1349336e+02 -3.0383214e-01 -6.1940838e-01
+3.6402690e+01 -3.6269488e-02 -5.4421419e-02
+3.4003034e+00 -1.7727293e-03 -2.0857813e-03
+2.4707900e-01 1.3954995e-04 0.0000000e+00
+0 0 0
+0 0 0
+3.9805534e-02 1.9677896e-05 5.1517457e-04
+4.6774622e-01 1.4921282e-04 6.4284390e-03
+4.0234890e+00 9.6342823e-04 5.8111475e-02
+2.6746673e+01 8.1067206e-03 4.5121859e-01
+1.1938230e+02 6.3293339e-02 3.0037324e+00
+2.7356473e+02 1.5800509e-01 9.1409869e+00
+4.4557136e+02 1.3769196e-01 1.5977357e+01
+5.9118943e+02 -9.4098868e-02 1.8296661e+01
+6.8677451e+02 -4.4441930e-01 1.3356601e+01
+7.3097722e+02 -7.2647140e-01 2.8864247e+00
+7.3272343e+02 -8.0683622e-01 -8.4354629e+00
+6.9891176e+02 -6.6926771e-01 -1.5772438e+01
+6.2995358e+02 -4.0355108e-01 -1.6568774e+01
+5.2393000e+02 -1.5423529e-01 -1.1900056e+01
+3.8571079e+02 -3.1607727e-02 -5.7105941e+00
+2.3454860e+02 -2.6429493e-02 -1.6603003e+00
+1.0273459e+02 -3.7234261e-02 -3.3080746e-01
+2.3091848e+01 -1.1304229e-02 -4.9565842e-02
+3.4782853e+00 -9.2114459e-04 -4.0706118e-03
+4.0663563e-01 2.0125472e-04 3.5911782e-05
+3.5166323e-02 6.1313703e-05 0.0000000e+00
+0 0 0
+0 0 0
+3.9780698e-03 0.0000000e+00 4.3095651e-05
+4.1101652e-02 0.0000000e+00 5.1123820e-04
+2.9936094e-01 0.0000000e+00 4.2903646e-03
+1.6545051e+00 0.0000000e+00 2.9670170e-02
+6.2407246e+00 0.0000000e+00 1.5991385e-01
+1.3942445e+01 0.0000000e+00 4.5592215e-01
+2.2662607e+01 0.0000000e+00 7.8402972e-01
+3.0118956e+01 0.0000000e+00 8.9525561e-01
+3.5047114e+01 0.0000000e+00 6.5178819e-01
+3.7333566e+01 0.0000000e+00 1.3398563e-01
+3.7417804e+01 0.0000000e+00 -4.2711675e-01
+3.5655642e+01 0.0000000e+00 -7.9014922e-01
+3.2079735e+01 0.0000000e+00 -8.2943378e-01
+2.6612325e+01 0.0000000e+00 -6.0043104e-01
+1.9536609e+01 0.0000000e+00 -2.9594491e-01
+1.1879911e+01 0.0000000e+00 -9.2059500e-02
+5.3186273e+00 0.0000000e+00 -1.9130133e-02
+1.4137434e+00 0.0000000e+00 -2.6816541e-03
+2.5697896e-01 0.0000000e+00 -8.0649233e-05
+3.5758728e-02 0.0000000e+00 4.3674698e-05
+3.5553700e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.2870817e-03 -2.6175779e-04 -4.7254160e-05
+4.3783823e-02 -2.4486171e-03 -2.8080826e-04
+3.1507080e-01 -1.6083908e-02 9.3239579e-05
+1.7242461e+00 -8.4353598e-02 1.4705763e-02
+6.4644540e+00 -3.3467493e-01 1.2565127e-01
+1.4435879e+01 -7.5681620e-01 3.8903353e-01
+2.3459951e+01 -1.0945579e+00 6.8624766e-01
+3.1141417e+01 -1.1352340e+00 7.9902064e-01
+3.6158373e+01 -9.2203243e-01 6.0979335e-01
+3.8417398e+01 -6.6775197e-01 1.9371278e-01
+3.8415605e+01 -5.5717719e-01 -2.4691057e-01
+3.6550062e+01 -6.2982905e-01 -5.1150149e-01
+3.2857110e+01 -7.7688627e-01 -5.1198980e-01
+2.7245204e+01 -8.2391116e-01 -3.2095742e-01
+1.9997525e+01 -6.7018715e-01 -1.1168638e-01
+1.2165880e+01 -3.9147332e-01 -6.1816885e-03
+5.4642571e+00 -1.6279884e-01 1.0987359e-02
+1.4768230e+00 -5.9732061e-02 7.6397682e-03
+2.7946361e-01 -1.7799656e-02 2.9547674e-03
+4.2246252e-02 -4.1198371e-03 5.8708129e-04
+4.7478239e-03 -6.0537267e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.0792543e-02 -1.1949320e-03 -5.3835630e-05
+4.7589483e-01 -1.1649144e-02 9.9807606e-04
+4.0660220e+00 -8.2873216e-02 2.5254427e-02
+2.6896250e+01 -5.1556844e-01 3.0689234e-01
+1.1972033e+02 -2.8899509e+00 2.5241358e+00
+2.7445943e+02 -7.0949735e+00 7.9675925e+00
+4.4752477e+02 -9.2061895e+00 1.4125808e+01
+5.9436711e+02 -6.6168668e+00 1.6429759e+01
+6.9071291e+02 -9.5541634e-01 1.2524746e+01
+7.3477627e+02 4.0314889e+00 4.0264554e+00
+7.3548632e+02 5.6439661e+00 -4.9375791e+00
+7.0006948e+02 3.5880373e+00 -1.0313165e+01
+6.2942537e+02 -2.6153048e-01 -1.0300316e+01
+5.2220115e+02 -3.0104384e+00 -6.3849354e+00
+3.8368470e+02 -2.8302931e+00 -2.1987362e+00
+2.3304201e+02 -8.2558548e-01 -2.5802504e-01
+1.0205998e+02 2.7658523e-01 -2.2797970e-02
+2.3088909e+01 -1.1296286e-01 3.3371152e-02
+3.5500622e+00 -7.4716535e-02 1.8511168e-02
+4.3787113e-01 -2.0800488e-02 3.9563199e-03
+4.1697521e-02 -3.1802506e-03 0.0000000e+00
+0 0 0
+0 0 0
+2.7993612e-01 -3.0695066e-03 2.3520034e-03
+3.8718586e+00 -3.1951169e-02 3.7735365e-02
+4.1379960e+01 -2.5764207e-01 4.3948255e-01
+3.5582247e+02 -2.2231584e+00 4.3925911e+00
+2.0762476e+03 -2.8755379e+01 4.3997553e+01
+4.8501993e+03 -8.1524092e+01 1.4647554e+02
+7.9027126e+03 -9.2711157e+01 2.6237452e+02
+1.0472512e+04 -2.5984000e+01 3.0495818e+02
+1.2151501e+04 8.2467084e+01 2.3215930e+02
+1.2920026e+04 1.6870793e+02 7.5612617e+01
+1.2937181e+04 1.9224374e+02 -8.8785333e+01
+1.2327137e+04 1.5163496e+02 -1.8723748e+02
+1.1102657e+04 7.7859585e+01 -1.8619815e+02
+9.2358470e+03 1.8999079e+01 -1.1256281e+02
+6.8107934e+03 8.2865692e+00 -3.5452680e+01
+4.1498373e+03 2.7884297e+01 -3.2681169e+00
+1.7907399e+03 2.8373952e+01 -2.1722060e+00
+3.0880682e+02 2.5715842e+00 -1.7021644e-01
+3.6148159e+01 -4.8026721e-02 5.7624344e-02
+3.4779169e+00 -5.7524320e-02 1.6734614e-02
+2.7028470e-01 -9.6513448e-03 0.0000000e+00
+0 0 0
+0 0 0
+1.4806627e+00 -1.0722521e-02 2.2161694e-02
+2.4603886e+01 -1.4890110e-01 3.6522496e-01
+3.3994541e+02 -1.6456575e+00 4.5638970e+00
+4.0968863e+03 -1.5445604e+01 4.7986275e+01
+3.7101304e+04 -4.7118149e+02 7.5179477e+02
+8.6370567e+04 -1.4743712e+03 2.6781404e+03
+1.4003635e+05 -1.6596231e+03 4.8411068e+03
+1.8491453e+05 -4.1954634e+02 5.6146870e+03
+2.1404461e+05 1.5219095e+03 4.2643039e+03
+2.2732513e+05 3.0199802e+03 1.4047584e+03
+2.2765447e+05 3.3994309e+03 -1.5835333e+03
+2.1718368e+05 2.6572363e+03 -3.3721018e+03
+1.9604554e+05 1.3256915e+03 -3.3373655e+03
+1.6362206e+05 2.6059869e+02 -1.9524851e+03
+1.2123324e+05 1.1150950e+02 -5.2368168e+02
+7.4420279e+04 5.7035123e+02 3.1807857e+00
+3.2416524e+04 6.1720516e+02 -4.5554848e+01
+3.6143949e+03 2.1464099e+01 -4.2880947e+00
+3.0021542e+02 -3.1643186e-01 -1.5007678e-03
+2.2020330e+01 -1.9259164e-01 5.3412989e-02
+1.3919128e+00 -2.5683562e-02 0.0000000e+00
+0 0 0
+0 0 0
+5.3514623e+00 -5.4427578e-02 1.0682688e-01
+1.0446882e+02 -1.1704999e+00 2.1682623e+00
+1.8641637e+03 -2.3468827e+01 3.8741650e+01
+3.3983955e+04 -4.7995252e+02 7.0898483e+02
+5.2794332e+05 -3.9261151e+03 6.8489327e+03
+1.3872406e+06 -9.9036640e+03 2.1400364e+04
+2.3492839e+06 -1.3900640e+04 3.7392039e+04
+3.1036719e+06 -1.3586308e+04 4.4359834e+04
+3.5244932e+06 -1.0305594e+04 3.7605946e+04
+3.6581897e+06 -7.0156902e+03 2.0721592e+04
+3.6093896e+06 -5.8689922e+03 1.9492572e+03
+3.4395566e+06 -7.2122743e+03 -1.0611460e+04
+3.1354349e+06 -9.7460121e+03 -1.2791535e+04
+2.6452639e+06 -1.1286781e+04 -6.8684806e+03
+1.9541294e+06 -1.0094172e+04 -4.4284604e+02
+1.1541471e+06 -6.3750441e+03 6.7687888e+02
+4.5536379e+05 -2.4108933e+03 -9.2420831e+02
+3.0700456e+04 -4.4954539e+02 -4.3873052e+01
+1.6712861e+03 -2.2730697e+01 -1.0473191e+00
+9.4011522e+01 -1.2719687e+00 1.2832362e-01
+4.9901525e+00 -7.5228936e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.1505213e+01 -1.0290620e-01 2.0287644e-01
+2.2858982e+02 -2.3750645e+00 4.0317774e+00
+4.1122847e+03 -5.0324007e+01 6.9833007e+01
+7.3746065e+04 -1.0639595e+03 1.2241239e+03
+1.1708045e+06 -8.2218626e+03 1.7646424e+04
+2.8915229e+06 -2.0632533e+04 5.2648337e+04
+4.8066181e+06 -2.9469590e+04 9.2246334e+04
+6.3308125e+06 -3.0164163e+04 1.1552636e+05
+7.2190344e+06 -2.4976411e+04 1.1208850e+05
+7.5418390e+06 -1.9309652e+04 8.6866494e+04
+7.4793377e+06 -1.7266597e+04 5.3718227e+04
+7.1399473e+06 -1.9614427e+04 2.6988319e+04
+6.5040687e+06 -2.3990858e+04 1.4854017e+04
+5.4880789e+06 -2.6396663e+04 1.4753271e+04
+4.0786053e+06 -2.3578219e+04 1.5083318e+04
+2.4592303e+06 -1.5565283e+04 7.5758306e+03
+1.0324106e+06 -6.3710740e+03 -1.2988757e+03
+6.7013905e+04 -1.0587849e+03 -6.3845175e+01
+3.7048195e+03 -5.1340014e+01 -9.1885664e-01
+2.0634170e+02 -2.5736110e+00 3.1353779e-01
+1.0721600e+01 -1.2677537e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.8386405e+01 -8.0947332e-02 2.3856323e-01
+3.6464268e+02 -1.9563859e+00 4.3213828e+00
+6.5251526e+03 -4.2654011e+01 6.5353496e+01
+1.1599177e+05 -9.0945339e+02 9.6218304e+02
+1.8675273e+06 -7.3323077e+03 2.9639854e+04
+4.5153674e+06 -2.1234481e+04 8.8481813e+04
+7.4488771e+06 -3.0048044e+04 1.5522646e+05
+9.7863967e+06 -2.8050511e+04 1.9706010e+05
+1.1159995e+07 -1.8729382e+04 1.9725863e+05
+1.1672119e+07 -9.7054482e+03 1.6235027e+05
+1.1587527e+07 -6.7167840e+03 1.1251996e+05
+1.1066437e+07 -1.0829710e+04 6.9190718e+04
+1.0082157e+07 -1.8718383e+04 4.5256947e+04
+8.5142947e+06 -2.4731057e+04 3.8161612e+04
+6.3461704e+06 -2.4074782e+04 3.2000388e+04
+3.8548777e+06 -1.6171612e+04 1.5543609e+04
+1.6493399e+06 -5.9268508e+03 -8.9197348e+02
+1.0534037e+05 -1.0369083e+03 -4.6409162e+01
+5.8723296e+03 -5.0913599e+01 9.8246861e-01
+3.2849969e+02 -2.5193111e+00 5.8106886e-01
+1.7066094e+01 -1.1834392e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.4578858e+01 8.3341396e-04 2.4715596e-01
+4.8588669e+02 -1.6887360e-01 4.0873762e+00
+8.6590062e+03 -6.8150843e+00 5.3181936e+01
+1.5325570e+05 -1.8997117e+02 6.2309332e+02
+2.4517330e+06 -2.6452681e+03 3.9774501e+04
+5.9079498e+06 -1.3058643e+04 1.1916613e+05
+9.7222212e+06 -1.7924019e+04 2.0844774e+05
+1.2745044e+07 -1.1980385e+04 2.6382993e+05
+1.4506710e+07 6.0656482e+02 2.6340816e+05
+1.5150551e+07 1.1612503e+04 2.1613658e+05
+1.5026672e+07 1.4961718e+04 1.4889914e+05
+1.4345914e+07 9.5721714e+03 9.0226308e+04
+1.3073946e+07 -9.6687801e+02 5.7554498e+04
+1.1050954e+07 -1.0546704e+04 4.7984972e+04
+8.2473883e+06 -1.3793287e+04 4.0650940e+04
+5.0154674e+06 -9.5135185e+03 2.0211324e+04
+2.1468309e+06 -2.2098687e+03 -5.0482121e+02
+1.3851710e+05 -4.7403925e+02 -2.7682613e+01
+7.7523059e+03 -2.3552111e+01 2.6782162e+00
+4.3500144e+02 -1.1639488e+00 7.9106687e-01
+2.2614997e+01 -5.4065615e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.9235986e+01 5.5187674e-02 2.8301214e-01
+5.7659075e+02 1.0497701e+00 4.6497835e+00
+1.0248728e+04 1.7932130e+01 6.0463000e+01
+1.8095267e+05 3.0528167e+02 7.2865129e+02
+2.8531237e+06 8.4008066e+02 4.6624663e+04
+6.9023817e+06 -4.7265280e+03 1.3972674e+05
+1.1357572e+07 -5.9709544e+03 2.4311449e+05
+1.4862657e+07 6.8814667e+02 3.0462217e+05
+1.6877184e+07 1.1800386e+04 2.9909387e+05
+1.7586362e+07 2.0993181e+04 2.3843017e+05
+1.7413949e+07 2.3632595e+04 1.5565941e+05
+1.6613345e+07 1.8928684e+04 8.5418464e+04
+1.5143456e+07 9.6677031e+03 4.8770040e+04
+1.2808966e+07 5.8987932e+02 4.2022494e+04
+9.5621975e+06 -4.0371520e+03 3.9259358e+04
+5.8053201e+06 -3.0064804e+03 2.0449831e+04
+2.4669549e+06 5.9688101e+02 -6.4077127e+02
+1.6250843e+05 -3.3772693e-01 -3.4874404e+01
+9.1132437e+03 2.6905773e-01 2.6472587e+00
+5.1207101e+02 3.0776087e-02 8.5356101e-01
+2.6602708e+01 1.6114963e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.2043848e+01 3.1717198e-02 3.3611915e-01
+6.3111841e+02 6.2843566e-01 5.7120909e+00
+1.1202119e+04 1.1246042e+01 7.9281539e+01
+1.9753923e+05 2.0052554e+02 1.0734615e+03
+3.0746715e+06 8.5052097e+02 5.0209397e+04
+7.4755491e+06 -7.8609054e+02 1.5031057e+05
+1.2308222e+07 -7.9271296e+02 2.6026056e+05
+1.6088327e+07 2.0883967e+03 3.2282487e+05
+1.8235386e+07 6.5172468e+03 3.1130736e+05
+1.8965907e+07 1.0095141e+04 2.4007126e+05
+1.8753422e+07 1.1092504e+04 1.4651215e+05
+1.7879633e+07 9.2222415e+03 6.9391953e+04
+1.6298916e+07 5.5349810e+03 3.2061554e+04
+1.3791447e+07 1.8166641e+03 2.9998291e+04
+1.0294241e+07 -3.0762805e+02 3.3420879e+04
+6.2364504e+06 -3.3391577e+02 1.8492274e+04
+2.6296027e+06 6.4782768e+02 -1.0367260e+03
+1.7646846e+05 6.8441843e+01 -5.6272531e+01
+9.9050330e+03 3.6487610e+00 1.5561008e+00
+5.5676944e+02 1.9338031e-01 8.1653712e-01
+2.8887461e+01 9.1198203e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.2973036e+01 -3.1717192e-02 3.6131881e-01
+6.4913957e+02 -6.2843548e-01 6.2320809e+00
+1.1516882e+04 -1.1246037e+01 8.8711553e+01
+2.0301235e+05 -2.0052549e+02 1.2467336e+03
+3.1439510e+06 -8.5052018e+02 5.1266360e+04
+7.6602395e+06 7.8609308e+02 1.5339504e+05
+1.2616343e+07 7.9271490e+02 2.6508439e+05
+1.6484570e+07 -2.0883930e+03 3.2742456e+05
+1.8671666e+07 -6.5172454e+03 3.1330146e+05
+1.9405696e+07 -1.0095147e+04 2.3803849e+05
+1.9177749e+07 -1.1092493e+04 1.4061511e+05
+1.8279437e+07 -9.2222331e+03 6.1250071e+04
+1.6663557e+07 -5.5349712e+03 2.4070904e+04
+1.4101577e+07 -1.8166607e+03 2.4203387e+04
+1.0524605e+07 3.0763057e+02 3.0412318e+04
+6.3701428e+06 3.3391726e+02 1.7392746e+04
+2.6772742e+06 -6.4782699e+02 -1.2331722e+03
+1.8098838e+05 -6.8441774e+01 -6.7085151e+01
+1.0161234e+04 -3.6487566e+00 9.5169924e-01
+5.7118982e+02 -1.9338011e-01 7.8711610e-01
+2.9617368e+01 -9.1198112e-03 0.0000000e+00
+0 0 0
+0 0 0
+3.2043848e+01 -5.5187663e-02 3.3611916e-01
+6.3111841e+02 -1.0497701e+00 5.7120912e+00
+1.1202119e+04 -1.7932131e+01 7.9281532e+01
+1.9753923e+05 -3.0528166e+02 1.0734615e+03
+3.0746715e+06 -8.4008032e+02 5.0209398e+04
+7.4755490e+06 4.7265280e+03 1.5031057e+05
+1.2308222e+07 5.9709561e+03 2.6026056e+05
+1.6088327e+07 -6.8814397e+02 3.2282486e+05
+1.8235386e+07 -1.1800381e+04 3.1130735e+05
+1.8965907e+07 -2.0993169e+04 2.4007127e+05
+1.8753422e+07 -2.3632591e+04 1.4651216e+05
+1.7879633e+07 -1.8928675e+04 6.9391951e+04
+1.6298916e+07 -9.6676999e+03 3.2061553e+04
+1.3791447e+07 -5.8987434e+02 2.9998290e+04
+1.0294241e+07 4.0371557e+03 3.3420879e+04
+6.2364504e+06 3.0064814e+03 1.8492274e+04
+2.6296027e+06 -5.9688073e+02 -1.0367260e+03
+1.7646846e+05 3.3777396e-01 -5.6272530e+01
+9.9050330e+03 -2.6905572e-01 1.5561006e+00
+5.5676944e+02 -3.0775906e-02 8.1653712e-01
+2.8887461e+01 -1.6114885e-03 0.0000000e+00
+0 0 0
+0 0 0
+2.9235986e+01 -8.3342039e-04 2.8301211e-01
+5.7659075e+02 1.6887358e-01 4.6497835e+00
+1.0248728e+04 6.8150843e+00 6.0462998e+01
+1.8095267e+05 1.8997117e+02 7.2865134e+02
+2.8531237e+06 2.6452682e+03 4.6624663e+04
+6.9023817e+06 1.3058644e+04 1.3972674e+05
+1.1357572e+07 1.7924021e+04 2.4311449e+05
+1.4862657e+07 1.1980387e+04 3.0462217e+05
+1.6877184e+07 -6.0656190e+02 2.9909387e+05
+1.7586362e+07 -1.1612500e+04 2.3843017e+05
+1.7413949e+07 -1.4961718e+04 1.5565941e+05
+1.6613345e+07 -9.5721688e+03 8.5418463e+04
+1.5143456e+07 9.6688159e+02 4.8770039e+04
+1.2808966e+07 1.0546707e+04 4.2022493e+04
+9.5621975e+06 1.3793289e+04 3.9259356e+04
+5.8053201e+06 9.5135200e+03 2.0449830e+04
+2.4669549e+06 2.2098691e+03 -6.4077128e+02
+1.6250843e+05 4.7403928e+02 -3.4874405e+01
+9.1132437e+03 2.3552113e+01 2.6472588e+00
+5.1207101e+02 1.1639489e+00 8.5356100e-01
+2.6602708e+01 5.4065623e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.4578858e+01 8.0947332e-02 2.4715596e-01
+4.8588669e+02 1.9563859e+00 4.0873761e+00
+8.6590062e+03 4.2654012e+01 5.3181935e+01
+1.5325570e+05 9.0945340e+02 6.2309339e+02
+2.4517330e+06 7.3323079e+03 3.9774502e+04
+5.9079498e+06 2.1234481e+04 1.1916613e+05
+9.7222212e+06 3.0048045e+04 2.0844774e+05
+1.2745044e+07 2.8050513e+04 2.6382993e+05
+1.4506710e+07 1.8729384e+04 2.6340816e+05
+1.5150551e+07 9.7054504e+03 2.1613659e+05
+1.5026672e+07 6.7167848e+03 1.4889915e+05
+1.4345914e+07 1.0829708e+04 9.0226308e+04
+1.3073946e+07 1.8718383e+04 5.7554494e+04
+1.1050954e+07 2.4731058e+04 4.7984970e+04
+8.2473883e+06 2.4074782e+04 4.0650938e+04
+5.0154674e+06 1.6171612e+04 2.0211322e+04
+2.1468309e+06 5.9268510e+03 -5.0482114e+02
+1.3851710e+05 1.0369083e+03 -2.7682612e+01
+7.7523059e+03 5.0913601e+01 2.6782163e+00
+4.3500144e+02 2.5193112e+00 7.9106686e-01
+2.2614997e+01 1.1834393e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.8386405e+01 1.0290620e-01 2.3856323e-01
+3.6464268e+02 2.3750645e+00 4.3213828e+00
+6.5251526e+03 5.0324007e+01 6.5353495e+01
+1.1599177e+05 1.0639595e+03 9.6218305e+02
+1.8675273e+06 8.2218627e+03 2.9639854e+04
+4.5153674e+06 2.0632533e+04 8.8481813e+04
+7.4488771e+06 2.9469590e+04 1.5522646e+05
+9.7863967e+06 3.0164163e+04 1.9706010e+05
+1.1159995e+07 2.4976412e+04 1.9725863e+05
+1.1672119e+07 1.9309653e+04 1.6235027e+05
+1.1587527e+07 1.7266598e+04 1.1251996e+05
+1.1066437e+07 1.9614428e+04 6.9190725e+04
+1.0082157e+07 2.3990858e+04 4.5256945e+04
+8.5142947e+06 2.6396662e+04 3.8161610e+04
+6.3461704e+06 2.3578219e+04 3.2000387e+04
+3.8548777e+06 1.5565283e+04 1.5543609e+04
+1.6493399e+06 6.3710741e+03 -8.9197363e+02
+1.0534037e+05 1.0587849e+03 -4.6409149e+01
+5.8723296e+03 5.1340014e+01 9.8246848e-01
+3.2849969e+02 2.5736110e+00 5.8106886e-01
+1.7066094e+01 1.2677537e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.1505213e+01 5.4427578e-02 2.0287644e-01
+2.2858982e+02 1.1704999e+00 4.0317774e+00
+4.1122847e+03 2.3468827e+01 6.9833007e+01
+7.3746065e+04 4.7995252e+02 1.2241239e+03
+1.1708045e+06 3.9261151e+03 1.7646425e+04
+2.8915229e+06 9.9036641e+03 5.2648337e+04
+4.8066181e+06 1.3900641e+04 9.2246334e+04
+6.3308125e+06 1.3586308e+04 1.1552636e+05
+7.2190344e+06 1.0305594e+04 1.1208850e+05
+7.5418390e+06 7.0156907e+03 8.6866495e+04
+7.4793377e+06 5.8689922e+03 5.3718228e+04
+7.1399473e+06 7.2122744e+03 2.6988320e+04
+6.5040687e+06 9.7460122e+03 1.4854018e+04
+5.4880789e+06 1.1286782e+04 1.4753270e+04
+4.0786053e+06 1.0094172e+04 1.5083317e+04
+2.4592303e+06 6.3750444e+03 7.5758304e+03
+1.0324106e+06 2.4108933e+03 -1.2988757e+03
+6.7013905e+04 4.4954540e+02 -6.3845173e+01
+3.7048195e+03 2.2730697e+01 -9.1885661e-01
+2.0634170e+02 1.2719687e+00 3.1353780e-01
+1.0721600e+01 7.5228936e-02 0.0000000e+00
+0 0 0
+0 0 0
+5.3514623e+00 1.0722521e-02 1.0682688e-01
+1.0446882e+02 1.4890110e-01 2.1682623e+00
+1.8641637e+03 1.6456575e+00 3.8741650e+01
+3.3983955e+04 1.5445604e+01 7.0898483e+02
+5.2794332e+05 4.7118149e+02 6.8489327e+03
+1.3872406e+06 1.4743712e+03 2.1400364e+04
+2.3492839e+06 1.6596231e+03 3.7392039e+04
+3.1036719e+06 4.1954636e+02 4.4359834e+04
+3.5244932e+06 -1.5219095e+03 3.7605947e+04
+3.6581897e+06 -3.0199802e+03 2.0721592e+04
+3.6093896e+06 -3.3994309e+03 1.9492575e+03
+3.4395566e+06 -2.6572363e+03 -1.0611459e+04
+3.1354349e+06 -1.3256915e+03 -1.2791534e+04
+2.6452639e+06 -2.6059870e+02 -6.8684807e+03
+1.9541294e+06 -1.1150948e+02 -4.4284614e+02
+1.1541471e+06 -5.7035124e+02 6.7687881e+02
+4.5536379e+05 -6.1720516e+02 -9.2420827e+02
+3.0700456e+04 -2.1464100e+01 -4.3873052e+01
+1.6712861e+03 3.1643183e-01 -1.0473191e+00
+9.4011522e+01 1.9259164e-01 1.2832362e-01
+4.9901525e+00 2.5683562e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.4806627e+00 3.0695066e-03 2.2161694e-02
+2.4603886e+01 3.1951169e-02 3.6522496e-01
+3.3994541e+02 2.5764208e-01 4.5638970e+00
+4.0968863e+03 2.2231584e+00 4.7986275e+01
+3.7101304e+04 2.8755379e+01 7.5179477e+02
+8.6370567e+04 8.1524092e+01 2.6781404e+03
+1.4003635e+05 9.2711156e+01 4.8411068e+03
+1.8491453e+05 2.5984001e+01 5.6146870e+03
+2.1404461e+05 -8.2467082e+01 4.2643039e+03
+2.2732513e+05 -1.6870792e+02 1.4047585e+03
+2.2765447e+05 -1.9224374e+02 -1.5835333e+03
+2.1718368e+05 -1.5163496e+02 -3.3721018e+03
+1.9604554e+05 -7.7859587e+01 -3.3373655e+03
+1.6362206e+05 -1.8999079e+01 -1.9524851e+03
+1.2123324e+05 -8.2865681e+00 -5.2368168e+02
+7.4420279e+04 -2.7884297e+01 3.1807843e+00
+3.2416524e+04 -2.8373952e+01 -4.5554847e+01
+3.6143949e+03 -2.5715843e+00 -4.2880947e+00
+3.0021542e+02 4.8026719e-02 -1.5007665e-03
+2.2020330e+01 5.7524320e-02 5.3412989e-02
+1.3919128e+00 9.6513448e-03 0.0000000e+00
+0 0 0
+0 0 0
+2.7993612e-01 1.1949320e-03 2.3520033e-03
+3.8718586e+00 1.1649144e-02 3.7735365e-02
+4.1379960e+01 8.2873217e-02 4.3948255e-01
+3.5582247e+02 5.1556844e-01 4.3925911e+00
+2.0762476e+03 2.8899509e+00 4.3997553e+01
+4.8501993e+03 7.0949736e+00 1.4647554e+02
+7.9027126e+03 9.2061896e+00 2.6237452e+02
+1.0472512e+04 6.6168668e+00 3.0495818e+02
+1.2151501e+04 9.5541647e-01 2.3215930e+02
+1.2920026e+04 -4.0314887e+00 7.5612618e+01
+1.2937181e+04 -5.6439660e+00 -8.8785332e+01
+1.2327137e+04 -3.5880372e+00 -1.8723748e+02
+1.1102657e+04 2.6153035e-01 -1.8619815e+02
+9.2358470e+03 3.0104384e+00 -1.1256281e+02
+6.8107934e+03 2.8302931e+00 -3.5452680e+01
+4.1498373e+03 8.2558550e-01 -3.2681170e+00
+1.7907399e+03 -2.7658521e-01 -2.1722059e+00
+3.0880682e+02 1.1296286e-01 -1.7021644e-01
+3.6148159e+01 7.4716535e-02 5.7624344e-02
+3.4779169e+00 2.0800488e-02 1.6734614e-02
+2.7028470e-01 3.1802506e-03 0.0000000e+00
+0 0 0
+0 0 0
+4.0792543e-02 2.6175779e-04 -5.3835631e-05
+4.7589483e-01 2.4486171e-03 9.9807607e-04
+4.0660220e+00 1.6083908e-02 2.5254428e-02
+2.6896250e+01 8.4353599e-02 3.0689234e-01
+1.1972033e+02 3.3467493e-01 2.5241358e+00
+2.7445943e+02 7.5681621e-01 7.9675925e+00
+4.4752477e+02 1.0945579e+00 1.4125808e+01
+5.9436711e+02 1.1352340e+00 1.6429759e+01
+6.9071291e+02 9.2203244e-01 1.2524746e+01
+7.3477627e+02 6.6775197e-01 4.0264554e+00
+7.3548632e+02 5.5717720e-01 -4.9375791e+00
+7.0006948e+02 6.2982905e-01 -1.0313165e+01
+6.2942537e+02 7.7688628e-01 -1.0300316e+01
+5.2220115e+02 8.2391116e-01 -6.3849353e+00
+3.8368470e+02 6.7018715e-01 -2.1987362e+00
+2.3304201e+02 3.9147332e-01 -2.5802505e-01
+1.0205998e+02 1.6279884e-01 -2.2797970e-02
+2.3088909e+01 5.9732062e-02 3.3371153e-02
+3.5500622e+00 1.7799656e-02 1.8511168e-02
+4.3787113e-01 4.1198371e-03 3.9563199e-03
+4.1697521e-02 6.0537267e-04 0.0000000e+00
+0 0 0
+0 0 0
+4.2870817e-03 0.0000000e+00 -4.7254160e-05
+4.3783823e-02 0.0000000e+00 -2.8080825e-04
+3.1507080e-01 0.0000000e+00 9.3239601e-05
+1.7242461e+00 0.0000000e+00 1.4705763e-02
+6.4644540e+00 0.0000000e+00 1.2565127e-01
+1.4435879e+01 0.0000000e+00 3.8903353e-01
+2.3459951e+01 0.0000000e+00 6.8624767e-01
+3.1141417e+01 0.0000000e+00 7.9902065e-01
+3.6158373e+01 0.0000000e+00 6.0979335e-01
+3.8417398e+01 0.0000000e+00 1.9371278e-01
+3.8415605e+01 0.0000000e+00 -2.4691057e-01
+3.6550062e+01 0.0000000e+00 -5.1150149e-01
+3.2857110e+01 0.0000000e+00 -5.1198980e-01
+2.7245204e+01 0.0000000e+00 -3.2095741e-01
+1.9997525e+01 0.0000000e+00 -1.1168638e-01
+1.2165880e+01 0.0000000e+00 -6.1816885e-03
+5.4642571e+00 0.0000000e+00 1.0987359e-02
+1.4768230e+00 0.0000000e+00 7.6397682e-03
+2.7946361e-01 0.0000000e+00 2.9547674e-03
+4.2246252e-02 0.0000000e+00 5.8708129e-04
+4.7478239e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.0168761e-03 -1.3490416e-03 -3.8075278e-04
+5.9911622e-02 -1.3209062e-02 -3.2994895e-03
+4.1829676e-01 -9.0348751e-02 -1.6176703e-02
+2.2249201e+00 -4.7710519e-01 -3.9745467e-02
+8.1794960e+00 -1.7964087e+00 4.1621361e-02
+1.8247156e+01 -4.0447653e+00 2.7510939e-01
+2.9567404e+01 -6.3786069e+00 5.4626282e-01
+3.8943130e+01 -7.9236787e+00 6.6822793e-01
+4.4737548e+01 -8.4564861e+00 5.4553929e-01
+4.7061016e+01 -8.3445941e+00 2.4651529e-01
+4.6786719e+01 -8.0666845e+00 -5.7915161e-02
+4.4511116e+01 -7.8107451e+00 -2.0822486e-01
+4.0185586e+01 -7.3859607e+00 -1.5074089e-01
+3.3512849e+01 -6.4451290e+00 2.6742607e-02
+2.4725605e+01 -4.8650006e+00 1.6366313e-01
+1.5135439e+01 -2.9834553e+00 1.7755950e-01
+6.9164134e+00 -1.3935363e+00 1.1893949e-01
+1.9986442e+00 -4.5630391e-01 5.3422219e-02
+4.3160829e-01 -1.1625008e-01 1.7527624e-02
+8.0541818e-02 -2.4088051e-02 3.3201095e-03
+1.1412232e-02 -3.3442982e-03 0.0000000e+00
+0 0 0
+0 0 0
+4.7922394e-02 -6.2159514e-03 -2.2629410e-03
+5.4481839e-01 -6.3945230e-02 -2.0450334e-02
+4.5295860e+00 -4.7141912e-01 -1.0294400e-01
+2.9286232e+01 -2.7799608e+00 -1.9007072e-01
+1.2845972e+02 -1.2288093e+01 1.5622281e+00
+2.9434981e+02 -2.8595418e+01 6.2224964e+00
+4.7984230e+02 -4.4103295e+01 1.1629661e+01
+6.3611053e+02 -5.1993783e+01 1.3956346e+01
+7.3689410e+02 -5.1958096e+01 1.1276769e+01
+7.8113277e+02 -4.8465761e+01 5.0414375e+00
+7.7964393e+02 -4.5932667e+01 -1.2501863e+00
+7.4091599e+02 -4.5545560e+01 -4.3618736e+00
+6.6584569e+02 -4.4925834e+01 -3.2423228e+00
+5.5252489e+02 -4.0191545e+01 1.8034933e-01
+4.0624625e+02 -2.9697943e+01 2.4517370e+00
+2.4720443e+02 -1.6793575e+01 2.0994282e+00
+1.0897728e+02 -7.1302419e+00 9.1883084e-01
+2.5579358e+01 -2.4116365e+00 3.8371504e-01
+4.3110760e+00 -6.1996789e-01 1.2641895e-01
+6.4526633e-01 -1.2895981e-01 2.3895511e-02
+8.0049915e-02 -1.7801181e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.9416926e-01 -1.5621330e-02 -4.8277617e-03
+4.0152149e+00 -1.7354026e-01 -3.8589051e-02
+4.2401891e+01 -1.4383429e+00 -9.3595994e-02
+3.6152015e+02 -1.0205856e+01 1.6346198e+00
+2.0994210e+03 -6.7420863e+01 3.3593960e+01
+4.9086626e+03 -1.7290162e+02 1.1943689e+02
+8.0072846e+03 -2.4868227e+02 2.1944393e+02
+1.0619615e+04 -2.4081005e+02 2.6115716e+02
+1.2323123e+04 -1.7197461e+02 2.0955168e+02
+1.3091714e+04 -1.0342043e+02 9.2818495e+01
+1.3087649e+04 -7.9413427e+01 -2.4168512e+01
+1.2443145e+04 -1.0395477e+02 -8.1766909e+01
+1.1180164e+04 -1.4420278e+02 -5.9996643e+01
+9.2806549e+03 -1.4977636e+02 4.7802868e+00
+6.8357949e+03 -9.4203587e+01 4.4284382e+01
+4.1651256e+03 -1.7313371e+01 2.9515932e+01
+1.7985348e+03 1.0559853e+01 4.0309767e+00
+3.1420499e+02 -5.4507620e+00 1.6719381e+00
+3.8487723e+01 -1.8904588e+00 6.0286538e-01
+4.2458227e+00 -4.0913770e-01 1.1513755e-01
+4.2325880e-01 -5.5637728e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.4941953e+00 -4.0820343e-02 1.1666376e-02
+2.4735313e+01 -5.5362640e-01 2.6032604e-01
+3.4083060e+02 -5.8995012e+00 3.8362926e+00
+4.1013199e+03 -5.0758369e+01 3.9955204e+01
+3.7113107e+04 -6.4359685e+02 6.0432889e+02
+8.6528046e+04 -1.9360071e+03 2.2099555e+03
+1.4052165e+05 -2.5996274e+03 4.0756029e+03
+1.8583059e+05 -1.9119811e+03 4.8307091e+03
+2.1527999e+05 -4.2999133e+02 3.8533541e+03
+2.2858183e+05 8.0110412e+02 1.6921358e+03
+2.2859732e+05 1.1307927e+03 -4.6092273e+02
+2.1757792e+05 5.5641510e+02 -1.5155370e+03
+1.9584712e+05 -3.7942341e+02 -1.0818926e+03
+1.6302811e+05 -8.2157851e+02 1.8386147e+02
+1.2060692e+05 -2.2715134e+02 9.4313163e+02
+7.4014193e+04 7.7037186e+02 5.6153306e+02
+3.2192576e+04 8.0695033e+02 -1.0909860e+01
+3.6075553e+03 -1.3399899e+01 3.8788889e+00
+3.0644365e+02 -6.5518196e+00 2.3120203e+00
+2.4609866e+01 -1.1370751e+00 4.5042170e-01
+1.9206422e+00 -1.3394540e-01 0.0000000e+00
+0 0 0
+0 0 0
+5.3346321e+00 -1.5504180e-01 1.3105171e-01
+1.0417342e+02 -3.0727122e+00 2.9455358e+00
+1.8604695e+03 -5.7003175e+01 5.7743489e+01
+3.3952213e+04 -1.0958349e+03 1.1345622e+03
+5.3143263e+05 -1.0416746e+04 7.4184027e+03
+1.3975454e+06 -2.6573796e+04 2.1751419e+04
+2.3715629e+06 -4.1538750e+04 3.8411563e+04
+3.1415489e+06 -4.9496836e+04 4.8119420e+04
+3.5763674e+06 -5.0551127e+04 4.6366332e+04
+3.7179108e+06 -4.8414701e+04 3.5861084e+04
+3.6696724e+06 -4.6589650e+04 2.3298696e+04
+3.4944540e+06 -4.6091680e+04 1.5049421e+04
+3.1815962e+06 -4.5261315e+04 1.3769991e+04
+2.6831200e+06 -4.1138850e+04 1.6231109e+04
+1.9870087e+06 -3.1880642e+04 1.5005245e+04
+1.1822705e+06 -1.9050607e+04 6.7028130e+03
+4.7140728e+05 -7.4579360e+03 -1.0757848e+03
+3.0643715e+04 -1.0092739e+03 -2.3169361e+01
+1.6901758e+03 -5.5138815e+01 6.5280059e+00
+1.0162626e+02 -3.5868504e+00 1.3630460e+00
+6.4753671e+00 -2.5611393e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.1397732e+01 -3.2451983e-01 2.7695952e-01
+2.2674771e+02 -6.8763218e+00 5.9226734e+00
+4.0851075e+03 -1.3436766e+02 1.1046436e+02
+7.3354730e+04 -2.6500033e+03 2.0559681e+03
+1.1649017e+06 -2.3761524e+04 2.1303566e+04
+2.8856878e+06 -5.9736536e+04 6.0301432e+04
+4.8119782e+06 -9.3731796e+04 1.0713432e+05
+6.3593619e+06 -1.1327277e+05 1.4236087e+05
+7.2739377e+06 -1.1794375e+05 1.5485017e+05
+7.6165230e+06 -1.1493577e+05 1.4668724e+05
+7.5630832e+06 -1.1139784e+05 1.2774997e+05
+7.2228105e+06 -1.0959516e+05 1.0839034e+05
+6.5798250e+06 -1.0638243e+05 9.3755216e+04
+5.5566632e+06 -9.6050700e+04 8.0082764e+04
+4.1443024e+06 -7.5046538e+04 5.7551566e+04
+2.5194050e+06 -4.6168476e+04 2.4494709e+04
+1.0696544e+06 -1.8905308e+04 -1.3017301e+03
+6.7187157e+04 -2.4771995e+03 -7.0571639e+00
+3.7542836e+03 -1.2723511e+02 1.5575056e+01
+2.2237617e+02 -6.9525172e+00 2.9062525e+00
+1.3757996e+01 -3.8625780e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.8144978e+01 -3.9689319e-01 3.1380112e-01
+3.6036014e+02 -8.3889861e+00 6.1090127e+00
+6.4574432e+03 -1.6169397e+02 1.0114470e+02
+1.1490815e+05 -3.1072414e+03 1.6419984e+03
+1.8369734e+06 -2.8482945e+04 3.6917250e+04
+4.4617580e+06 -7.4926254e+04 1.0571632e+05
+7.3906449e+06 -1.1836223e+05 1.8857895e+05
+9.7494898e+06 -1.4199240e+05 2.5420548e+05
+1.1158230e+07 -1.4574879e+05 2.8377615e+05
+1.1702414e+07 -1.3995839e+05 2.7850414e+05
+1.1637603e+07 -1.3473538e+05 2.5176610e+05
+1.1123342e+07 -1.3325880e+05 2.1852419e+05
+1.0138218e+07 -1.3105535e+05 1.8713559e+05
+8.5715223e+06 -1.1997539e+05 1.5383270e+05
+6.4130099e+06 -9.4642014e+04 1.0658872e+05
+3.9277485e+06 -5.8149298e+04 4.5698768e+04
+1.6992540e+06 -2.2983238e+04 -1.3735679e+02
+1.0563791e+05 -2.9908700e+03 7.8780041e+01
+5.9517078e+03 -1.5646256e+02 2.8629315e+01
+3.5378299e+02 -8.3423101e+00 4.7358111e+00
+2.1840922e+01 -4.2527467e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.4227108e+01 -3.2117685e-01 2.7603382e-01
+4.7964194e+02 -6.6568111e+00 4.7886151e+00
+8.5598135e+03 -1.2493333e+02 6.7220609e+01
+1.5165575e+05 -2.3249709e+03 8.8489967e+02
+2.3973298e+06 -2.3408936e+04 5.0214147e+04
+5.8047145e+06 -6.6609756e+04 1.4513296e+05
+9.5966579e+06 -1.0628116e+05 2.5861514e+05
+1.2639108e+07 -1.2577216e+05 3.4833132e+05
+1.4446074e+07 -1.2577310e+05 3.8899177e+05
+1.5135035e+07 -1.1750765e+05 3.8205655e+05
+1.5040446e+07 -1.1168809e+05 3.4523508e+05
+1.4370856e+07 -1.1159561e+05 2.9863032e+05
+1.3099926e+07 -1.1239259e+05 2.5398751e+05
+1.1083006e+07 -1.0526153e+05 2.0722170e+05
+8.3009377e+06 -8.4045829e+04 1.4307611e+05
+5.0896337e+06 -5.1165936e+04 6.1926455e+04
+2.2035039e+06 -1.8880120e+04 1.1503867e+03
+1.3887744e+05 -2.3715052e+03 1.7068335e+02
+7.8539733e+03 -1.2783510e+02 4.0388500e+01
+4.6767637e+02 -6.8973789e+00 6.2686367e+00
+2.8802750e+01 -3.4439112e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.8838727e+01 -1.7966450e-01 2.5574621e-01
+5.6966844e+02 -3.6375148e+00 4.1587623e+00
+1.0141270e+04 -6.6363806e+01 5.3047259e+01
+1.7925781e+05 -1.1974114e+03 6.2034870e+02
+2.7851186e+06 -1.4036443e+04 5.9253005e+04
+6.7669076e+06 -4.3629983e+04 1.7174733e+05
+1.1188563e+07 -7.0343269e+04 3.0481833e+05
+1.4716090e+07 -8.2112128e+04 4.0772542e+05
+1.6788003e+07 -7.9895574e+04 4.5102879e+05
+1.7554637e+07 -7.2419913e+04 4.3766686e+05
+1.7417792e+07 -6.7849563e+04 3.8998518e+05
+1.6627358e+07 -6.8627478e+04 3.3300328e+05
+1.5153666e+07 -7.0997029e+04 2.8139825e+05
+1.2822968e+07 -6.8117592e+04 2.3025306e+05
+9.6031770e+06 -5.5034820e+04 1.6026251e+05
+5.8777105e+06 -3.3150265e+04 6.9856527e+04
+2.5275595e+06 -1.1313164e+04 1.6849149e+03
+1.6294519e+05 -1.3400163e+03 2.1667433e+02
+9.2293793e+03 -7.4272180e+01 4.6975807e+01
+5.4908249e+02 -4.0875325e+00 7.1544829e+00
+3.3617592e+01 -2.0479224e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.1648364e+01 -5.3604545e-02 2.6942402e-01
+6.2439172e+02 -1.0658363e+00 4.4244348e+00
+1.1100909e+04 -1.9036164e+01 5.8306467e+01
+1.9599202e+05 -3.3575119e+02 7.4385084e+02
+3.0019031e+06 -4.5227404e+03 6.3998541e+04
+7.3253712e+06 -1.4947032e+04 1.8549345e+05
+1.2119733e+07 -2.4261994e+04 3.2790117e+05
+1.5926777e+07 -2.8080690e+04 4.3541935e+05
+1.8141151e+07 -2.6842447e+04 4.7660141e+05
+1.8937829e+07 -2.3837087e+04 4.5609681e+05
+1.8763887e+07 -2.2111263e+04 3.9989333e+05
+1.7896862e+07 -2.2564562e+04 3.3660137e+05
+1.6305431e+07 -2.3780367e+04 2.8286980e+05
+1.3796502e+07 -2.3181554e+04 2.3287834e+05
+1.0327105e+07 -1.8869555e+04 1.6384866e+05
+6.3066703e+06 -1.1287303e+04 7.1765824e+04
+2.6920508e+06 -3.6498072e+03 1.6543462e+03
+1.7697048e+05 -4.1111973e+02 2.2342491e+02
+1.0028352e+04 -2.3194898e+01 4.9028350e+01
+5.9552421e+02 -1.2953172e+00 7.4813589e+00
+3.6229431e+01 -6.5403321e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.2584831e+01 5.3604548e-02 2.8099527e-01
+6.4261364e+02 1.0658364e+00 4.6752509e+00
+1.1420216e+04 1.9036164e+01 6.3268866e+01
+2.0155815e+05 3.3575118e+02 8.4596964e+02
+3.0703517e+06 4.5227398e+03 6.5399795e+04
+7.5062435e+06 1.4947031e+04 1.8950174e+05
+1.2422883e+07 2.4261988e+04 3.3443753e+05
+1.6320106e+07 2.8080691e+04 4.4274012e+05
+1.8578312e+07 2.6842449e+04 4.8240964e+05
+1.9381593e+07 2.3837087e+04 4.5883818e+05
+1.9192967e+07 2.2111272e+04 3.9939850e+05
+1.8299686e+07 2.2564569e+04 3.3402089e+05
+1.6669969e+07 2.3780371e+04 2.8004803e+05
+1.4103989e+07 2.3181556e+04 2.3127303e+05
+1.0554593e+07 1.8869556e+04 1.6354566e+05
+6.4393474e+06 1.1287305e+04 7.1766474e+04
+2.7401721e+06 3.6498078e+03 1.5689814e+03
+1.8151422e+05 4.1111979e+02 2.2090545e+02
+1.0286490e+04 2.3194901e+01 4.9259471e+01
+6.1031748e+02 1.2953174e+00 7.5411773e+00
+3.7027739e+01 6.5403328e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.1648364e+01 1.7966450e-01 2.6942402e-01
+6.2439172e+02 3.6375148e+00 4.4244345e+00
+1.1100909e+04 6.6363807e+01 5.8306462e+01
+1.9599202e+05 1.1974113e+03 7.4385072e+02
+3.0019031e+06 1.4036444e+04 6.3998543e+04
+7.3253712e+06 4.3629984e+04 1.8549344e+05
+1.2119733e+07 7.0343275e+04 3.2790117e+05
+1.5926777e+07 8.2112129e+04 4.3541935e+05
+1.8141151e+07 7.9895575e+04 4.7660141e+05
+1.8937829e+07 7.2419912e+04 4.5609682e+05
+1.8763887e+07 6.7849563e+04 3.9989333e+05
+1.7896862e+07 6.8627479e+04 3.3660137e+05
+1.6305431e+07 7.0997031e+04 2.8286980e+05
+1.3796502e+07 6.8117594e+04 2.3287834e+05
+1.0327105e+07 5.5034823e+04 1.6384867e+05
+6.3066703e+06 3.3150265e+04 7.1765823e+04
+2.6920508e+06 1.1313164e+04 1.6543462e+03
+1.7697048e+05 1.3400163e+03 2.2342491e+02
+1.0028352e+04 7.4272181e+01 4.9028350e+01
+5.9552421e+02 4.0875326e+00 7.4813588e+00
+3.6229431e+01 2.0479225e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.8838727e+01 3.2117684e-01 2.5574621e-01
+5.6966844e+02 6.6568112e+00 4.1587621e+00
+1.0141270e+04 1.2493334e+02 5.3047248e+01
+1.7925781e+05 2.3249710e+03 6.2034891e+02
+2.7851186e+06 2.3408936e+04 5.9253005e+04
+6.7669076e+06 6.6609756e+04 1.7174733e+05
+1.1188563e+07 1.0628116e+05 3.0481833e+05
+1.4716090e+07 1.2577216e+05 4.0772542e+05
+1.6788003e+07 1.2577310e+05 4.5102879e+05
+1.7554637e+07 1.1750765e+05 4.3766687e+05
+1.7417792e+07 1.1168810e+05 3.8998518e+05
+1.6627358e+07 1.1159561e+05 3.3300328e+05
+1.5153666e+07 1.1239259e+05 2.8139825e+05
+1.2822968e+07 1.0526153e+05 2.3025306e+05
+9.6031770e+06 8.4045831e+04 1.6026251e+05
+5.8777105e+06 5.1165937e+04 6.9856526e+04
+2.5275595e+06 1.8880120e+04 1.6849150e+03
+1.6294519e+05 2.3715052e+03 2.1667433e+02
+9.2293793e+03 1.2783510e+02 4.6975807e+01
+5.4908249e+02 6.8973790e+00 7.1544829e+00
+3.3617592e+01 3.4439113e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.4227108e+01 3.9689319e-01 2.7603386e-01
+4.7964194e+02 8.3889860e+00 4.7886146e+00
+8.5598135e+03 1.6169397e+02 6.7220608e+01
+1.5165575e+05 3.1072414e+03 8.8489967e+02
+2.3973298e+06 2.8482945e+04 5.0214148e+04
+5.8047145e+06 7.4926254e+04 1.4513296e+05
+9.5966579e+06 1.1836223e+05 2.5861514e+05
+1.2639108e+07 1.4199240e+05 3.4833132e+05
+1.4446074e+07 1.4574879e+05 3.8899177e+05
+1.5135035e+07 1.3995839e+05 3.8205655e+05
+1.5040446e+07 1.3473538e+05 3.4523508e+05
+1.4370856e+07 1.3325880e+05 2.9863032e+05
+1.3099926e+07 1.3105535e+05 2.5398750e+05
+1.1083006e+07 1.1997540e+05 2.0722170e+05
+8.3009377e+06 9.4642015e+04 1.4307611e+05
+5.0896337e+06 5.8149298e+04 6.1926454e+04
+2.2035039e+06 2.2983238e+04 1.1503868e+03
+1.3887744e+05 2.9908700e+03 1.7068335e+02
+7.8539733e+03 1.5646256e+02 4.0388500e+01
+4.6767637e+02 8.3423102e+00 6.2686367e+00
+2.8802750e+01 4.2527468e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.8144978e+01 3.2451983e-01 3.1380112e-01
+3.6036014e+02 6.8763218e+00 6.1090127e+00
+6.4574432e+03 1.3436766e+02 1.0114470e+02
+1.1490815e+05 2.6500033e+03 1.6419984e+03
+1.8369734e+06 2.3761524e+04 3.6917250e+04
+4.4617580e+06 5.9736536e+04 1.0571632e+05
+7.3906449e+06 9.3731797e+04 1.8857895e+05
+9.7494898e+06 1.1327277e+05 2.5420548e+05
+1.1158230e+07 1.1794375e+05 2.8377615e+05
+1.1702414e+07 1.1493577e+05 2.7850414e+05
+1.1637603e+07 1.1139784e+05 2.5176611e+05
+1.1123342e+07 1.0959516e+05 2.1852419e+05
+1.0138218e+07 1.0638243e+05 1.8713559e+05
+8.5715223e+06 9.6050699e+04 1.5383270e+05
+6.4130099e+06 7.5046538e+04 1.0658872e+05
+3.9277485e+06 4.6168476e+04 4.5698768e+04
+1.6992540e+06 1.8905308e+04 -1.3735684e+02
+1.0563791e+05 2.4771995e+03 7.8780042e+01
+5.9517078e+03 1.2723511e+02 2.8629315e+01
+3.5378299e+02 6.9525172e+00 4.7358111e+00
+2.1840922e+01 3.8625780e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.1397732e+01 1.5504180e-01 2.7695952e-01
+2.2674771e+02 3.0727121e+00 5.9226734e+00
+4.0851075e+03 5.7003175e+01 1.1046436e+02
+7.3354730e+04 1.0958349e+03 2.0559681e+03
+1.1649017e+06 1.0416746e+04 2.1303567e+04
+2.8856878e+06 2.6573796e+04 6.0301432e+04
+4.8119782e+06 4.1538750e+04 1.0713432e+05
+6.3593619e+06 4.9496836e+04 1.4236087e+05
+7.2739377e+06 5.0551127e+04 1.5485017e+05
+7.6165230e+06 4.8414701e+04 1.4668724e+05
+7.5630832e+06 4.6589650e+04 1.2774997e+05
+7.2228105e+06 4.6091680e+04 1.0839034e+05
+6.5798250e+06 4.5261316e+04 9.3755217e+04
+5.5566632e+06 4.1138851e+04 8.0082764e+04
+4.1443024e+06 3.1880643e+04 5.7551566e+04
+2.5194050e+06 1.9050607e+04 2.4494709e+04
+1.0696544e+06 7.4579360e+03 -1.3017301e+03
+6.7187157e+04 1.0092739e+03 -7.0571639e+00
+3.7542836e+03 5.5138815e+01 1.5575056e+01
+2.2237617e+02 3.5868504e+00 2.9062525e+00
+1.3757996e+01 2.5611393e-01 0.0000000e+00
+0 0 0
+0 0 0
+5.3346321e+00 4.0820342e-02 1.3105171e-01
+1.0417342e+02 5.5362640e-01 2.9455358e+00
+1.8604695e+03 5.8995012e+00 5.7743489e+01
+3.3952213e+04 5.0758369e+01 1.1345621e+03
+5.3143263e+05 6.4359685e+02 7.4184028e+03
+1.3975454e+06 1.9360071e+03 2.1751419e+04
+2.3715629e+06 2.5996274e+03 3.8411563e+04
+3.1415489e+06 1.9119811e+03 4.8119420e+04
+3.5763674e+06 4.2999138e+02 4.6366332e+04
+3.7179108e+06 -8.0110407e+02 3.5861084e+04
+3.6696724e+06 -1.1307927e+03 2.3298696e+04
+3.4944540e+06 -5.5641510e+02 1.5049422e+04
+3.1815962e+06 3.7942341e+02 1.3769992e+04
+2.6831200e+06 8.2157849e+02 1.6231108e+04
+1.9870087e+06 2.2715137e+02 1.5005245e+04
+1.1822705e+06 -7.7037186e+02 6.7028130e+03
+4.7140728e+05 -8.0695033e+02 -1.0757848e+03
+3.0643715e+04 1.3399900e+01 -2.3169361e+01
+1.6901758e+03 6.5518196e+00 6.5280059e+00
+1.0162626e+02 1.1370751e+00 1.3630460e+00
+6.4753671e+00 1.3394540e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.4941953e+00 1.5621330e-02 1.1666376e-02
+2.4735313e+01 1.7354026e-01 2.6032604e-01
+3.4083060e+02 1.4383429e+00 3.8362925e+00
+4.1013199e+03 1.0205856e+01 3.9955204e+01
+3.7113107e+04 6.7420864e+01 6.0432889e+02
+8.6528046e+04 1.7290162e+02 2.2099555e+03
+1.4052165e+05 2.4868227e+02 4.0756029e+03
+1.8583059e+05 2.4081005e+02 4.8307091e+03
+2.1527999e+05 1.7197461e+02 3.8533542e+03
+2.2858182e+05 1.0342043e+02 1.6921358e+03
+2.2859732e+05 7.9413431e+01 -4.6092272e+02
+2.1757792e+05 1.0395477e+02 -1.5155370e+03
+1.9584712e+05 1.4420278e+02 -1.0818926e+03
+1.6302811e+05 1.4977635e+02 1.8386148e+02
+1.2060692e+05 9.4203585e+01 9.4313163e+02
+7.4014193e+04 1.7313372e+01 5.6153306e+02
+3.2192576e+04 -1.0559853e+01 -1.0909860e+01
+3.6075553e+03 5.4507620e+00 3.8788889e+00
+3.0644365e+02 1.8904588e+00 2.3120203e+00
+2.4609866e+01 4.0913770e-01 4.5042170e-01
+1.9206422e+00 5.5637728e-02 0.0000000e+00
+0 0 0
+0 0 0
+2.9416926e-01 6.2159514e-03 -4.8277617e-03
+4.0152149e+00 6.3945230e-02 -3.8589051e-02
+4.2401891e+01 4.7141912e-01 -9.3595999e-02
+3.6152015e+02 2.7799608e+00 1.6346197e+00
+2.0994210e+03 1.2288093e+01 3.3593960e+01
+4.9086626e+03 2.8595418e+01 1.1943689e+02
+8.0072846e+03 4.4103295e+01 2.1944393e+02
+1.0619615e+04 5.1993783e+01 2.6115716e+02
+1.2323123e+04 5.1958096e+01 2.0955168e+02
+1.3091714e+04 4.8465761e+01 9.2818496e+01
+1.3087649e+04 4.5932667e+01 -2.4168511e+01
+1.2443145e+04 4.5545560e+01 -8.1766909e+01
+1.1180164e+04 4.4925834e+01 -5.9996642e+01
+9.2806548e+03 4.0191545e+01 4.7802870e+00
+6.8357949e+03 2.9697943e+01 4.4284382e+01
+4.1651256e+03 1.6793575e+01 2.9515932e+01
+1.7985348e+03 7.1302419e+00 4.0309767e+00
+3.1420499e+02 2.4116365e+00 1.6719381e+00
+3.8487723e+01 6.1996789e-01 6.0286538e-01
+4.2458227e+00 1.2895981e-01 1.1513755e-01
+4.2325880e-01 1.7801181e-02 0.0000000e+00
+0 0 0
+0 0 0
+4.7922394e-02 1.3490416e-03 -2.2629410e-03
+5.4481839e-01 1.3209062e-02 -2.0450334e-02
+4.5295860e+00 9.0348751e-02 -1.0294400e-01
+2.9286232e+01 4.7710519e-01 -1.9007072e-01
+1.2845972e+02 1.7964087e+00 1.5622281e+00
+2.9434981e+02 4.0447653e+00 6.2224964e+00
+4.7984230e+02 6.3786069e+00 1.1629661e+01
+6.3611053e+02 7.9236788e+00 1.3956346e+01
+7.3689410e+02 8.4564861e+00 1.1276769e+01
+7.8113277e+02 8.3445941e+00 5.0414375e+00
+7.7964393e+02 8.0666845e+00 -1.2501863e+00
+7.4091599e+02 7.8107451e+00 -4.3618735e+00
+6.6584569e+02 7.3859607e+00 -3.2423228e+00
+5.5252489e+02 6.4451290e+00 1.8034937e-01
+4.0624625e+02 4.8650006e+00 2.4517370e+00
+2.4720443e+02 2.9834553e+00 2.0994282e+00
+1.0897728e+02 1.3935363e+00 9.1883084e-01
+2.5579358e+01 4.5630391e-01 3.8371504e-01
+4.3110760e+00 1.1625008e-01 1.2641895e-01
+6.4526633e-01 2.4088051e-02 2.3895511e-02
+8.0049915e-02 3.3442982e-03 0.0000000e+00
+0 0 0
+0 0 0
+6.0168761e-03 0.0000000e+00 -3.8075278e-04
+5.9911622e-02 0.0000000e+00 -3.2994895e-03
+4.1829676e-01 0.0000000e+00 -1.6176703e-02
+2.2249201e+00 0.0000000e+00 -3.9745467e-02
+8.1794960e+00 0.0000000e+00 4.1621361e-02
+1.8247156e+01 0.0000000e+00 2.7510939e-01
+2.9567404e+01 0.0000000e+00 5.4626282e-01
+3.8943130e+01 0.0000000e+00 6.6822793e-01
+4.4737548e+01 0.0000000e+00 5.4553929e-01
+4.7061016e+01 0.0000000e+00 2.4651529e-01
+4.6786719e+01 0.0000000e+00 -5.7915158e-02
+4.4511116e+01 0.0000000e+00 -2.0822486e-01
+4.0185586e+01 0.0000000e+00 -1.5074089e-01
+3.3512849e+01 0.0000000e+00 2.6742609e-02
+2.4725605e+01 0.0000000e+00 1.6366313e-01
+1.5135439e+01 0.0000000e+00 1.7755950e-01
+6.9164134e+00 0.0000000e+00 1.1893949e-01
+1.9986442e+00 0.0000000e+00 5.3422219e-02
+4.3160829e-01 0.0000000e+00 1.7527624e-02
+8.0541818e-02 0.0000000e+00 3.3201095e-03
+1.1412232e-02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.3533596e-02 -6.0778069e-03 -1.4389128e-03
+1.3430924e-01 -6.2355291e-02 -1.3481238e-02
+9.2867089e-01 -4.4925095e-01 -7.4604423e-02
+4.8658633e+00 -2.4762873e+00 -2.3926026e-01
+1.7668340e+01 -9.5331265e+00 -1.9497801e-01
+3.9732749e+01 -2.1731818e+01 5.1246784e-02
+6.4336482e+01 -3.5052426e+01 3.3459507e-01
+8.3823502e+01 -4.5042371e+01 4.9659402e-01
+9.4758076e+01 -4.9986788e+01 4.6285356e-01
+9.8165389e+01 -5.0934408e+01 2.9288915e-01
+9.6743054e+01 -4.9794056e+01 1.3061080e-01
+9.2063273e+01 -4.7528033e+01 1.0648668e-01
+8.3663630e+01 -4.3634477e+01 2.6291986e-01
+7.0290093e+01 -3.7034262e+01 5.1993755e-01
+5.2121363e+01 -2.7594085e+01 7.1826471e-01
+3.2113245e+01 -1.7001463e+01 7.4192163e-01
+1.5082580e+01 -7.9984647e+00 5.7421924e-01
+4.8295410e+00 -2.5166649e+00 2.5998740e-01
+1.2177209e+00 -6.1141246e-01 8.5287270e-02
+2.7121919e-01 -1.2194286e-01 1.6552756e-02
+4.4570432e-02 -1.6605444e-02 0.0000000e+00
+0 0 0
+0 0 0
+7.8569701e-02 -2.6741366e-02 -9.9837474e-03
+8.5837269e-01 -2.8682400e-01 -9.9069331e-02
+6.7830540e+00 -2.2085512e+00 -5.9323704e-01
+4.1648779e+01 -1.3369334e+01 -2.0627373e+00
+1.7572431e+02 -5.8044405e+01 -8.1604483e-01
+4.0282142e+02 -1.3448277e+02 3.4632981e+00
+6.5594779e+02 -2.1618209e+02 8.4874612e+00
+8.6371893e+02 -2.7531137e+02 1.1148067e+01
+9.9060075e+02 -3.0250501e+02 9.9596370e+00
+1.0399871e+03 -3.0600840e+02 6.1792937e+00
+1.0319306e+03 -2.9858927e+02 2.6878420e+00
+9.8008038e+02 -2.8600784e+02 2.0032599e+00
+8.8367731e+02 -2.6408223e+02 4.6193920e+00
+7.3646020e+02 -2.2464462e+02 8.2944417e+00
+5.4353700e+02 -1.6613958e+02 9.5491881e+00
+3.3269911e+02 -1.0036220e+02 7.4152506e+00
+1.4998275e+02 -4.6071053e+01 4.4823688e+00
+3.9230145e+01 -1.3590733e+01 1.9056497e+00
+8.1538683e+00 -3.1742453e+00 6.2569035e-01
+1.6571423e+00 -6.2974967e-01 1.2162121e-01
+2.7090282e-01 -8.5837132e-02 0.0000000e+00
+0 0 0
+0 0 0
+3.5864452e-01 -6.0097722e-02 -3.1118902e-02
+4.7115630e+00 -6.8656944e-01 -3.2772157e-01
+4.7830547e+01 -5.8281122e+00 -2.1368167e+00
+3.9489298e+02 -4.0893878e+01 -7.9851005e+00
+2.2467596e+03 -2.2873186e+02 1.5363745e+01
+5.2593889e+03 -5.5465113e+02 8.4805824e+01
+8.5856572e+03 -8.7978703e+02 1.7003810e+02
+1.1375694e+04 -1.0748501e+03 2.1349782e+02
+1.3170988e+04 -1.1235487e+03 1.8667742e+02
+1.3953650e+04 -1.0943866e+03 1.1312007e+02
+1.3914552e+04 -1.0584547e+03 4.6082319e+01
+1.3206894e+04 -1.0355697e+03 3.1894480e+01
+1.1855880e+04 -9.8672363e+02 7.8820277e+01
+9.8398731e+03 -8.4644534e+02 1.4140275e+02
+7.2544899e+03 -5.9145695e+02 1.4802512e+02
+4.4336359e+03 -3.0417862e+02 8.3331170e+01
+1.9297305e+03 -1.1797655e+02 2.4040932e+01
+3.5600763e+02 -4.0761496e+01 9.4090490e+00
+5.1225552e+01 -9.6554065e+00 3.1523805e+00
+8.0979535e+00 -1.9394448e+00 6.0994475e-01
+1.2109440e+00 -2.6357754e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.5853319e+00 -1.1429166e-01 -3.6942596e-02
+2.5816359e+01 -1.5034829e+00 -3.0107556e-01
+3.5078079e+02 -1.5496746e+01 -5.8263256e-01
+4.1816745e+03 -1.3079858e+02 8.9674470e+00
+3.7658230e+04 -1.1670224e+03 4.0213427e+02
+8.8044028e+04 -3.3152285e+03 1.6467299e+03
+1.4320646e+05 -5.1222960e+03 3.2044262e+03
+1.8951641e+05 -5.5300934e+03 3.9738500e+03
+2.1952210e+05 -4.8221248e+03 3.4303132e+03
+2.3285995e+05 -3.9717538e+03 2.0295550e+03
+2.3249834e+05 -3.6899366e+03 7.6001515e+02
+2.2085315e+05 -4.0352836e+03 4.8449397e+02
+1.9839821e+05 -4.4419741e+03 1.3886531e+03
+1.6491518e+05 -3.9837942e+03 2.6389322e+03
+1.2201545e+05 -2.1445665e+03 2.7835128e+03
+7.5038769e+04 7.8317445e+01 1.3764410e+03
+3.2691721e+04 6.6348691e+02 9.5832236e+01
+3.7439613e+03 -1.2058570e+02 3.9250369e+01
+3.4923138e+02 -2.6680902e+01 1.3488131e+01
+3.8375977e+01 -4.7267402e+00 2.5093161e+00
+4.7595296e+00 -5.9314890e-01 0.0000000e+00
+0 0 0
+0 0 0
+5.4147435e+00 -3.1166521e-01 1.1726211e-01
+1.0529888e+02 -5.8951957e+00 3.3835123e+00
+1.8755539e+03 -1.0518821e+02 7.7990520e+01
+3.4187425e+04 -1.9743864e+03 1.6863661e+03
+5.4497714e+05 -2.1127561e+04 8.1023908e+03
+1.4348072e+06 -5.4835018e+04 2.2360328e+04
+2.4373936e+06 -8.8874693e+04 4.0282019e+04
+3.2338178e+06 -1.1136147e+05 5.3844499e+04
+3.6868720e+06 -1.2007109e+05 5.8588874e+04
+3.8363561e+06 -1.1989137e+05 5.6063155e+04
+3.7875990e+06 -1.1667039e+05 5.1117011e+04
+3.6060478e+06 -1.1268925e+05 4.8177114e+04
+3.2828515e+06 -1.0580143e+05 4.8281279e+04
+2.7721399e+06 -9.1835855e+04 4.7113441e+04
+2.0638154e+06 -6.8819652e+04 3.6981843e+04
+1.2434547e+06 -4.0509188e+04 1.6385111e+04
+5.0519045e+05 -1.5845935e+04 -8.8864182e+02
+3.1348324e+04 -1.8223045e+03 1.0846783e+02
+1.8347034e+03 -1.0831687e+02 4.5576188e+01
+1.4338854e+02 -8.8685445e+00 7.9557071e+00
+1.4659782e+01 -8.2185702e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.1369679e+01 -6.0913916e-01 3.2552713e-01
+2.2610394e+02 -1.2558794e+01 7.6328949e+00
+4.0739185e+03 -2.3950019e+02 1.5313389e+02
+7.3179074e+04 -4.6308744e+03 2.9852778e+03
+1.1683466e+06 -4.6678458e+04 2.5091305e+04
+2.9077081e+06 -1.2019959e+05 6.8435563e+04
+4.8624083e+06 -1.9476279e+05 1.2389359e+05
+6.4429843e+06 -2.4492537e+05 1.7383507e+05
+7.3869825e+06 -2.6552964e+05 2.0624879e+05
+7.7495088e+06 -2.6642511e+05 2.1979675e+05
+7.7064404e+06 -2.5978994e+05 2.1955904e+05
+7.3692194e+06 -2.5056524e+05 2.1102605e+05
+6.7241013e+06 -2.3457382e+05 1.9552216e+05
+5.6965764e+06 -2.0356753e+05 1.6734062e+05
+4.2789458e+06 -1.5370041e+05 1.1757795e+05
+2.6378093e+06 -9.2176889e+04 5.0841348e+04
+1.1419430e+06 -3.6917624e+04 -3.7557922e+02
+6.8928247e+04 -4.2306904e+03 2.9171659e+02
+4.0633512e+03 -2.2481741e+02 9.9149504e+01
+3.0951821e+02 -1.3671765e+01 1.6810683e+01
+3.0670998e+01 -9.2417552e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.7928801e+01 -7.6453969e-01 3.7157692e-01
+3.5626745e+02 -1.5808971e+01 7.7144395e+00
+6.3878229e+03 -2.9817803e+02 1.3601253e+02
+1.1370685e+05 -5.6169314e+03 2.3233691e+03
+1.8059540e+06 -5.7779803e+04 4.4444113e+04
+4.4158572e+06 -1.5382554e+05 1.2397088e+05
+7.3451993e+06 -2.5081658e+05 2.2547023e+05
+9.7245942e+06 -3.1442422e+05 3.1986468e+05
+1.1164941e+07 -3.3843970e+05 3.8606284e+05
+1.1740164e+07 -3.3705779e+05 4.1894581e+05
+1.1700566e+07 -3.2733855e+05 4.2353104e+05
+1.1205814e+07 -3.1609793e+05 4.0659230e+05
+1.0237295e+07 -2.9740356e+05 3.7034533e+05
+8.6893910e+06 -2.5955512e+05 3.0846417e+05
+6.5527098e+06 -1.9660716e+05 2.1167102e+05
+4.0726894e+06 -1.1738160e+05 9.1934848e+04
+1.7976245e+06 -4.5616209e+04 2.2629515e+03
+1.0823468e+05 -5.1600233e+03 5.9551050e+02
+6.4341590e+03 -2.7543004e+02 1.6367195e+02
+4.9219685e+02 -1.5418204e+01 2.7004530e+01
+4.8789896e+01 -8.6862080e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.3833917e+01 -6.7385361e-01 3.0250508e-01
+4.7231328e+02 -1.3715752e+01 5.5379385e+00
+8.4363445e+03 -2.5269292e+02 8.3521896e+01
+1.4954221e+05 -4.6216303e+03 1.2017674e+03
+2.3306513e+06 -5.1212231e+04 6.1312666e+04
+5.6822346e+06 -1.4316686e+05 1.7313396e+05
+9.4398640e+06 -2.3549447e+05 3.1460578e+05
+1.2487291e+07 -2.9390941e+05 4.4590745e+05
+1.4328565e+07 -3.1313295e+05 5.3810961e+05
+1.5060950e+07 -3.0851480e+05 5.8365223e+05
+1.5005894e+07 -2.9789610e+05 5.8876158e+05
+1.4369173e+07 -2.8824587e+05 5.6259197e+05
+1.3129367e+07 -2.7319967e+05 5.0894690e+05
+1.1151801e+07 -2.4024195e+05 4.2083855e+05
+8.4202010e+06 -1.8246805e+05 2.8743611e+05
+5.2421023e+06 -1.0788441e+05 1.2547026e+05
+2.3184099e+06 -3.9999712e+04 4.9476942e+03
+1.4210723e+05 -4.3258121e+03 8.8368922e+02
+8.4782834e+03 -2.3587842e+02 2.1982746e+02
+6.4936584e+02 -1.2982315e+01 3.5702107e+01
+6.4308068e+01 -6.7183087e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.8343326e+01 -4.2773437e-01 2.4928193e-01
+5.6058649e+02 -8.5597594e+00 4.1752426e+00
+9.9910488e+03 -1.5438108e+02 5.6084892e+01
+1.7673244e+05 -2.7575811e+03 7.1740500e+02
+2.6951652e+06 -3.3629771e+04 7.3088317e+04
+6.5883213e+06 -9.8482575e+04 2.0699038e+05
+1.0948670e+07 -1.6329640e+05 3.7468481e+05
+1.4471770e+07 -2.0304214e+05 5.2813745e+05
+1.6584146e+07 -2.1438902e+05 6.3325050e+05
+1.7406576e+07 -2.0921131e+05 6.8200791e+05
+1.7319742e+07 -2.0098391e+05 6.8314556e+05
+1.6568153e+07 -1.9487592e+05 6.4898115e+05
+1.5130230e+07 -1.8597902e+05 5.8519657e+05
+1.2848748e+07 -1.6466800e+05 4.8384209e+05
+9.6987486e+06 -1.2534527e+05 3.3114773e+05
+6.0294213e+06 -7.3434227e+04 1.4498666e+05
+2.6521870e+06 -2.6032726e+04 6.3922312e+03
+1.6660948e+05 -2.6571305e+03 1.0592568e+03
+9.9451380e+03 -1.4767905e+02 2.5529872e+02
+7.5831992e+02 -8.1478718e+00 4.1226847e+01
+7.4580585e+01 -4.0797617e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.1118828e+01 -1.4221331e-01 2.4401442e-01
+6.1483019e+02 -2.8157709e+00 4.0615552e+00
+1.0945501e+04 -5.0142316e+01 5.5231053e+01
+1.9342148e+05 -8.8361094e+02 7.5180481e+02
+2.9011434e+06 -1.1553648e+04 7.9435377e+04
+7.1163030e+06 -3.4800014e+04 2.2482096e+05
+1.1833818e+07 -5.7974724e+04 4.0541381e+05
+1.5632842e+07 -7.1937082e+04 5.6824390e+05
+1.7893946e+07 -7.5570946e+04 6.7663122e+05
+1.8755393e+07 -7.3340776e+04 7.2319649e+05
+1.8637146e+07 -7.0252569e+04 7.1920558e+05
+1.7809670e+07 -6.8207961e+04 6.7972983e+05
+1.6252564e+07 -6.5362720e+04 6.1198071e+05
+1.3794823e+07 -5.8106540e+04 5.0709815e+05
+1.0404766e+07 -4.4287597e+04 3.4838008e+05
+6.4546398e+06 -2.5808358e+04 1.5278473e+05
+2.8208996e+06 -8.9054055e+03 6.8086323e+03
+1.8086487e+05 -8.7243664e+02 1.1295515e+03
+1.0788004e+04 -4.9015020e+01 2.7123600e+02
+8.1756299e+02 -2.7172572e+00 4.3766609e+01
+7.9722885e+01 -1.3482181e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.2050481e+01 1.4221331e-01 2.4992357e-01
+6.3302663e+02 2.8157709e+00 4.2053870e+00
+1.1265547e+04 5.0142316e+01 5.8589844e+01
+1.9901689e+05 8.8361096e+02 8.3262564e+02
+2.9667308e+06 1.1553648e+04 8.1346222e+04
+7.2878939e+06 3.4800014e+04 2.3009574e+05
+1.2122747e+07 5.7974723e+04 4.1428225e+05
+1.6011198e+07 7.1937082e+04 5.7931583e+05
+1.8318702e+07 7.5570946e+04 6.8778421e+05
+1.9189977e+07 7.3340776e+04 7.3271860e+05
+1.9058739e+07 7.0252571e+04 7.2644150e+05
+1.8204595e+07 6.8207962e+04 6.8511644e+05
+1.6607815e+07 6.5362720e+04 6.1654514e+05
+1.4092827e+07 5.8106541e+04 5.1149379e+05
+1.0625475e+07 4.4287597e+04 3.5203708e+05
+6.5852910e+06 2.5808359e+04 1.5447672e+05
+2.8699881e+06 8.9054060e+03 6.8499293e+03
+1.8547459e+05 8.7243668e+02 1.1446881e+03
+1.1057920e+04 4.9015022e+01 2.7522811e+02
+8.3569078e+02 2.7172573e+00 4.4420302e+01
+8.1178397e+01 1.3482181e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.1118828e+01 4.2773438e-01 2.4401442e-01
+6.1483019e+02 8.5597595e+00 4.0615551e+00
+1.0945501e+04 1.5438108e+02 5.5231058e+01
+1.9342148e+05 2.7575811e+03 7.5180469e+02
+2.9011434e+06 3.3629771e+04 7.9435378e+04
+7.1163030e+06 9.8482575e+04 2.2482096e+05
+1.1833818e+07 1.6329640e+05 4.0541381e+05
+1.5632842e+07 2.0304214e+05 5.6824390e+05
+1.7893946e+07 2.1438902e+05 6.7663122e+05
+1.8755393e+07 2.0921131e+05 7.2319649e+05
+1.8637146e+07 2.0098391e+05 7.1920558e+05
+1.7809670e+07 1.9487592e+05 6.7972982e+05
+1.6252564e+07 1.8597903e+05 6.1198072e+05
+1.3794823e+07 1.6466800e+05 5.0709814e+05
+1.0404766e+07 1.2534527e+05 3.4838008e+05
+6.4546398e+06 7.3434228e+04 1.5278473e+05
+2.8208996e+06 2.6032726e+04 6.8086322e+03
+1.8086487e+05 2.6571305e+03 1.1295515e+03
+1.0788004e+04 1.4767905e+02 2.7123600e+02
+8.1756299e+02 8.1478719e+00 4.3766609e+01
+7.9722885e+01 4.0797616e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.8343326e+01 6.7385361e-01 2.4928193e-01
+5.6058649e+02 1.3715752e+01 4.1752426e+00
+9.9910488e+03 2.5269292e+02 5.6084893e+01
+1.7673244e+05 4.6216303e+03 7.1740505e+02
+2.6951652e+06 5.1212231e+04 7.3088317e+04
+6.5883213e+06 1.4316686e+05 2.0699038e+05
+1.0948670e+07 2.3549448e+05 3.7468481e+05
+1.4471770e+07 2.9390941e+05 5.2813744e+05
+1.6584146e+07 3.1313296e+05 6.3325050e+05
+1.7406576e+07 3.0851480e+05 6.8200791e+05
+1.7319742e+07 2.9789610e+05 6.8314555e+05
+1.6568153e+07 2.8824587e+05 6.4898115e+05
+1.5130230e+07 2.7319967e+05 5.8519657e+05
+1.2848748e+07 2.4024195e+05 4.8384209e+05
+9.6987486e+06 1.8246805e+05 3.3114773e+05
+6.0294213e+06 1.0788441e+05 1.4498666e+05
+2.6521870e+06 3.9999712e+04 6.3922312e+03
+1.6660948e+05 4.3258121e+03 1.0592568e+03
+9.9451380e+03 2.3587842e+02 2.5529872e+02
+7.5831992e+02 1.2982315e+01 4.1226847e+01
+7.4580585e+01 6.7183088e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.3833917e+01 7.6453969e-01 3.0250509e-01
+4.7231328e+02 1.5808971e+01 5.5379386e+00
+8.4363445e+03 2.9817803e+02 8.3521896e+01
+1.4954221e+05 5.6169314e+03 1.2017673e+03
+2.3306513e+06 5.7779803e+04 6.1312666e+04
+5.6822346e+06 1.5382554e+05 1.7313396e+05
+9.4398640e+06 2.5081658e+05 3.1460578e+05
+1.2487291e+07 3.1442422e+05 4.4590745e+05
+1.4328565e+07 3.3843970e+05 5.3810961e+05
+1.5060950e+07 3.3705779e+05 5.8365223e+05
+1.5005894e+07 3.2733855e+05 5.8876158e+05
+1.4369173e+07 3.1609793e+05 5.6259197e+05
+1.3129367e+07 2.9740356e+05 5.0894690e+05
+1.1151801e+07 2.5955512e+05 4.2083855e+05
+8.4202010e+06 1.9660716e+05 2.8743611e+05
+5.2421023e+06 1.1738160e+05 1.2547026e+05
+2.3184099e+06 4.5616209e+04 4.9476942e+03
+1.4210723e+05 5.1600234e+03 8.8368922e+02
+8.4782834e+03 2.7543004e+02 2.1982746e+02
+6.4936584e+02 1.5418204e+01 3.5702107e+01
+6.4308068e+01 8.6862080e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.7928801e+01 6.0913916e-01 3.7157692e-01
+3.5626745e+02 1.2558794e+01 7.7144396e+00
+6.3878229e+03 2.3950019e+02 1.3601252e+02
+1.1370685e+05 4.6308744e+03 2.3233691e+03
+1.8059540e+06 4.6678458e+04 4.4444113e+04
+4.4158572e+06 1.2019959e+05 1.2397088e+05
+7.3451993e+06 1.9476279e+05 2.2547023e+05
+9.7245942e+06 2.4492537e+05 3.1986468e+05
+1.1164941e+07 2.6552964e+05 3.8606284e+05
+1.1740164e+07 2.6642511e+05 4.1894582e+05
+1.1700566e+07 2.5978994e+05 4.2353104e+05
+1.1205814e+07 2.5056524e+05 4.0659230e+05
+1.0237295e+07 2.3457383e+05 3.7034533e+05
+8.6893910e+06 2.0356753e+05 3.0846417e+05
+6.5527098e+06 1.5370041e+05 2.1167102e+05
+4.0726894e+06 9.2176889e+04 9.1934848e+04
+1.7976245e+06 3.6917624e+04 2.2629515e+03
+1.0823468e+05 4.2306903e+03 5.9551050e+02
+6.4341590e+03 2.2481741e+02 1.6367195e+02
+4.9219685e+02 1.3671765e+01 2.7004530e+01
+4.8789896e+01 9.2417552e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.1369679e+01 3.1166521e-01 3.2552713e-01
+2.2610394e+02 5.8951957e+00 7.6328947e+00
+4.0739185e+03 1.0518821e+02 1.5313389e+02
+7.3179074e+04 1.9743864e+03 2.9852778e+03
+1.1683466e+06 2.1127561e+04 2.5091305e+04
+2.9077081e+06 5.4835018e+04 6.8435563e+04
+4.8624083e+06 8.8874693e+04 1.2389359e+05
+6.4429843e+06 1.1136147e+05 1.7383507e+05
+7.3869825e+06 1.2007109e+05 2.0624879e+05
+7.7495088e+06 1.1989137e+05 2.1979675e+05
+7.7064404e+06 1.1667039e+05 2.1955904e+05
+7.3692194e+06 1.1268925e+05 2.1102605e+05
+6.7241013e+06 1.0580143e+05 1.9552216e+05
+5.6965764e+06 9.1835856e+04 1.6734062e+05
+4.2789458e+06 6.8819653e+04 1.1757795e+05
+2.6378093e+06 4.0509188e+04 5.0841348e+04
+1.1419430e+06 1.5845935e+04 -3.7557922e+02
+6.8928247e+04 1.8223045e+03 2.9171659e+02
+4.0633512e+03 1.0831687e+02 9.9149504e+01
+3.0951821e+02 8.8685445e+00 1.6810683e+01
+3.0670998e+01 8.2185702e-01 0.0000000e+00
+0 0 0
+0 0 0
+5.4147435e+00 1.1429166e-01 1.1726211e-01
+1.0529888e+02 1.5034829e+00 3.3835123e+00
+1.8755539e+03 1.5496746e+01 7.7990520e+01
+3.4187425e+04 1.3079858e+02 1.6863661e+03
+5.4497714e+05 1.1670224e+03 8.1023908e+03
+1.4348072e+06 3.3152285e+03 2.2360328e+04
+2.4373936e+06 5.1222960e+03 4.0282019e+04
+3.2338178e+06 5.5300934e+03 5.3844499e+04
+3.6868720e+06 4.8221248e+03 5.8588874e+04
+3.8363561e+06 3.9717538e+03 5.6063155e+04
+3.7875990e+06 3.6899366e+03 5.1117012e+04
+3.6060478e+06 4.0352836e+03 4.8177114e+04
+3.2828515e+06 4.4419741e+03 4.8281279e+04
+2.7721399e+06 3.9837942e+03 4.7113441e+04
+2.0638154e+06 2.1445665e+03 3.6981843e+04
+1.2434547e+06 -7.8317440e+01 1.6385111e+04
+5.0519045e+05 -6.6348691e+02 -8.8864183e+02
+3.1348324e+04 1.2058570e+02 1.0846783e+02
+1.8347034e+03 2.6680902e+01 4.5576188e+01
+1.4338854e+02 4.7267402e+00 7.9557071e+00
+1.4659782e+01 5.9314890e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.5853319e+00 6.0097722e-02 -3.6942597e-02
+2.5816359e+01 6.8656944e-01 -3.0107557e-01
+3.5078079e+02 5.8281122e+00 -5.8263259e-01
+4.1816745e+03 4.0893878e+01 8.9674473e+00
+3.7658230e+04 2.2873186e+02 4.0213427e+02
+8.8044028e+04 5.5465113e+02 1.6467299e+03
+1.4320646e+05 8.7978703e+02 3.2044262e+03
+1.8951641e+05 1.0748501e+03 3.9738500e+03
+2.1952210e+05 1.1235487e+03 3.4303132e+03
+2.3285995e+05 1.0943866e+03 2.0295550e+03
+2.3249834e+05 1.0584547e+03 7.6001516e+02
+2.2085315e+05 1.0355697e+03 4.8449398e+02
+1.9839821e+05 9.8672363e+02 1.3886531e+03
+1.6491518e+05 8.4644534e+02 2.6389322e+03
+1.2201545e+05 5.9145695e+02 2.7835128e+03
+7.5038769e+04 3.0417862e+02 1.3764410e+03
+3.2691721e+04 1.1797655e+02 9.5832237e+01
+3.7439613e+03 4.0761496e+01 3.9250369e+01
+3.4923138e+02 9.6554065e+00 1.3488131e+01
+3.8375977e+01 1.9394448e+00 2.5093161e+00
+4.7595296e+00 2.6357754e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.5864452e-01 2.6741366e-02 -3.1118902e-02
+4.7115630e+00 2.8682400e-01 -3.2772157e-01
+4.7830547e+01 2.2085512e+00 -2.1368168e+00
+3.9489298e+02 1.3369334e+01 -7.9851005e+00
+2.2467596e+03 5.8044405e+01 1.5363745e+01
+5.2593889e+03 1.3448277e+02 8.4805824e+01
+8.5856572e+03 2.1618209e+02 1.7003810e+02
+1.1375694e+04 2.7531137e+02 2.1349782e+02
+1.3170988e+04 3.0250501e+02 1.8667742e+02
+1.3953650e+04 3.0600840e+02 1.1312007e+02
+1.3914552e+04 2.9858927e+02 4.6082318e+01
+1.3206894e+04 2.8600784e+02 3.1894480e+01
+1.1855880e+04 2.6408223e+02 7.8820277e+01
+9.8398731e+03 2.2464462e+02 1.4140275e+02
+7.2544899e+03 1.6613958e+02 1.4802512e+02
+4.4336359e+03 1.0036220e+02 8.3331171e+01
+1.9297305e+03 4.6071053e+01 2.4040932e+01
+3.5600763e+02 1.3590733e+01 9.4090490e+00
+5.1225552e+01 3.1742453e+00 3.1523805e+00
+8.0979535e+00 6.2974967e-01 6.0994475e-01
+1.2109440e+00 8.5837132e-02 0.0000000e+00
+0 0 0
+0 0 0
+7.8569701e-02 6.0778069e-03 -9.9837474e-03
+8.5837269e-01 6.2355291e-02 -9.9069331e-02
+6.7830540e+00 4.4925095e-01 -5.9323704e-01
+4.1648779e+01 2.4762873e+00 -2.0627373e+00
+1.7572431e+02 9.5331265e+00 -8.1604483e-01
+4.0282142e+02 2.1731818e+01 3.4632981e+00
+6.5594779e+02 3.5052426e+01 8.4874612e+00
+8.6371893e+02 4.5042371e+01 1.1148067e+01
+9.9060075e+02 4.9986788e+01 9.9596370e+00
+1.0399871e+03 5.0934408e+01 6.1792937e+00
+1.0319306e+03 4.9794056e+01 2.6878420e+00
+9.8008038e+02 4.7528033e+01 2.0032599e+00
+8.8367731e+02 4.3634477e+01 4.6193920e+00
+7.3646020e+02 3.7034262e+01 8.2944417e+00
+5.4353700e+02 2.7594085e+01 9.5491881e+00
+3.3269911e+02 1.7001463e+01 7.4152506e+00
+1.4998275e+02 7.9984647e+00 4.4823688e+00
+3.9230145e+01 2.5166649e+00 1.9056497e+00
+8.1538683e+00 6.1141246e-01 6.2569035e-01
+1.6571423e+00 1.2194286e-01 1.2162121e-01
+2.7090282e-01 1.6605444e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.3533596e-02 0.0000000e+00 -1.4389128e-03
+1.3430924e-01 0.0000000e+00 -1.3481238e-02
+9.2867089e-01 0.0000000e+00 -7.4604423e-02
+4.8658633e+00 0.0000000e+00 -2.3926026e-01
+1.7668340e+01 0.0000000e+00 -1.9497801e-01
+3.9732749e+01 0.0000000e+00 5.1246784e-02
+6.4336482e+01 0.0000000e+00 3.3459507e-01
+8.3823502e+01 0.0000000e+00 4.9659402e-01
+9.4758076e+01 0.0000000e+00 4.6285356e-01
+9.8165389e+01 0.0000000e+00 2.9288915e-01
+9.6743054e+01 0.0000000e+00 1.3061080e-01
+9.2063273e+01 0.0000000e+00 1.0648669e-01
+8.3663630e+01 0.0000000e+00 2.6291986e-01
+7.0290093e+01 0.0000000e+00 5.1993755e-01
+5.2121363e+01 0.0000000e+00 7.1826471e-01
+3.2113245e+01 0.0000000e+00 7.4192163e-01
+1.5082580e+01 0.0000000e+00 5.7421924e-01
+4.8295410e+00 0.0000000e+00 2.5998740e-01
+1.2177209e+00 0.0000000e+00 8.5287270e-02
+2.7121919e-01 0.0000000e+00 1.6552756e-02
+4.4570432e-02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.2792186e-02 -2.5357414e-02 -3.9011765e-03
+4.4484124e-01 -2.7462845e-01 -3.9804730e-02
+3.2386035e+00 -2.1059385e+00 -2.4379880e-01
+1.7776448e+01 -1.2288901e+01 -8.6548260e-01
+6.6859644e+01 -4.9257638e+01 -7.9914821e-01
+1.5357445e+02 -1.1420943e+02 -4.3141574e-01
+2.5026637e+02 -1.8626996e+02 -9.1347834e-02
+3.2572315e+02 -2.4216571e+02 1.7471914e-01
+3.6677205e+02 -2.7212615e+02 2.8689348e-01
+3.7820922e+02 -2.8001793e+02 2.6099062e-01
+3.7125917e+02 -2.7448933e+02 2.3420744e-01
+3.5233469e+02 -2.6039287e+02 3.5565850e-01
+3.1940524e+02 -2.3613292e+02 7.4696990e-01
+2.6731649e+02 -1.9772920e+02 1.4497749e+00
+1.9704915e+02 -1.4578427e+02 2.3062569e+00
+1.2077808e+02 -8.9234524e+01 2.8759487e+00
+5.7086097e+01 -4.1676163e+01 2.5485955e+00
+1.9005884e+01 -1.2788730e+01 1.1609832e+00
+5.0000581e+00 -3.0058640e+00 3.8450998e-01
+1.1592366e+00 -5.8129854e-01 7.7791118e-02
+2.0031667e-01 -7.7955124e-02 0.0000000e+00
+0 0 0
+0 0 0
+1.9246073e-01 -1.0603647e-01 -3.3211982e-02
+2.0961741e+00 -1.1921678e+00 -3.5347402e-01
+1.6314437e+01 -9.6816947e+00 -2.3091005e+00
+9.7363738e+01 -6.1368616e+01 -8.9443447e+00
+3.9868910e+02 -2.7358791e+02 -7.5788696e+00
+9.2289997e+02 -6.4001418e+02 -1.8526679e+00
+1.5065585e+03 -1.0427323e+03 3.9990151e+00
+1.9707762e+03 -1.3530309e+03 7.8069057e+00
+2.2352646e+03 -1.5175818e+03 8.5986838e+00
+2.3208337e+03 -1.5596682e+03 7.4023250e+00
+2.2868395e+03 -1.5286427e+03 6.6468079e+00
+2.1693050e+03 -1.4514613e+03 8.4905630e+00
+1.9607377e+03 -1.3182043e+03 1.3501536e+01
+1.6375098e+03 -1.1050883e+03 1.9811039e+01
+1.2081113e+03 -8.1436454e+02 2.3816980e+01
+7.4080450e+02 -4.9686009e+02 2.3337151e+01
+3.4276814e+02 -2.2989146e+02 1.8767056e+01
+1.0161272e+02 -6.4694748e+01 8.2904983e+00
+2.5155249e+01 -1.4533903e+01 2.8171565e+00
+6.1401059e+00 -2.8277939e+00 5.8068830e-01
+1.1600248e+00 -3.8638879e-01 0.0000000e+00
+0 0 0
+0 0 0
+5.8642784e-01 -2.1772562e-01 -1.1609417e-01
+7.2962050e+00 -2.5771662e+00 -1.3157378e+00
+6.9088694e+01 -2.2743521e+01 -9.5120587e+00
+5.3138087e+02 -1.6434380e+02 -4.3024766e+01
+2.8623360e+03 -9.0742806e+02 -2.4761005e+01
+6.7205007e+03 -2.1633214e+03 3.7434348e+01
+1.0983916e+04 -3.5197012e+03 1.1614460e+02
+1.4502807e+04 -4.5322966e+03 1.6829732e+02
+1.6689490e+04 -5.0388017e+03 1.7101520e+02
+1.7571370e+04 -5.1487583e+03 1.4238463e+02
+1.7449912e+04 -5.0464232e+03 1.2480447e+02
+1.6545014e+04 -4.8188609e+03 1.5408505e+02
+1.4870291e+04 -4.4098960e+03 2.3136507e+02
+1.2364518e+04 -3.7037957e+03 3.0542790e+02
+9.1357051e+03 -2.6872659e+03 2.9711404e+02
+5.6154896e+03 -1.5739270e+03 1.9232726e+02
+2.5007376e+03 -7.0410010e+02 9.5528853e+01
+5.3194957e+02 -1.8605737e+02 4.0949537e+01
+1.0449668e+02 -4.1349480e+01 1.4493990e+01
+2.5126625e+01 -8.3676651e+00 3.0051898e+00
+5.0018500e+00 -1.1721051e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.8967288e+00 -3.2393679e-01 -2.0518575e-01
+2.9624925e+01 -4.1947514e+00 -2.3961665e+00
+3.8648491e+02 -4.2427249e+01 -1.8416555e+01
+4.4665994e+03 -3.5977806e+02 -1.0790715e+02
+3.9493538e+04 -2.9518629e+03 1.0122045e+02
+9.2777652e+04 -7.7969373e+03 1.0012120e+03
+1.5118236e+05 -1.2809007e+04 2.3146183e+03
+2.0005881e+05 -1.5944746e+04 3.1846714e+03
+2.3145159e+05 -1.6929951e+04 3.1463273e+03
+2.4507819e+05 -1.6758484e+04 2.5378112e+03
+2.4427925e+05 -1.6435770e+04 2.1462493e+03
+2.3175963e+05 -1.6221370e+04 2.6422871e+03
+2.0806516e+05 -1.5503478e+04 4.0689178e+03
+1.7299251e+05 -1.3166244e+04 5.4540360e+03
+1.2827495e+05 -8.6385321e+03 5.1457990e+03
+7.9352977e+04 -3.4043627e+03 2.6620266e+03
+3.4913189e+04 -7.0950188e+02 4.4596047e+02
+4.2933269e+03 -4.7367098e+02 1.8420852e+02
+5.2639298e+02 -9.8865157e+01 6.4562603e+01
+1.0096025e+02 -1.9175546e+01 1.2786205e+01
+1.8966572e+01 -2.5929421e+00 0.0000000e+00
+0 0 0
+0 0 0
+5.7186362e+00 -5.9902083e-01 -2.8808603e-02
+1.0955273e+02 -1.0671927e+01 2.1945161e+00
+1.9284725e+03 -1.8073494e+02 8.7583586e+01
+3.4904091e+04 -3.2930880e+03 2.3042277e+03
+5.7502966e+05 -3.9611062e+04 8.9109145e+03
+1.5162623e+06 -1.0396986e+05 2.3628725e+04
+2.5757217e+06 -1.7146521e+05 4.3956893e+04
+3.4185084e+06 -2.1964412e+05 6.2965717e+04
+3.8988904e+06 -2.4199260e+05 7.6009946e+04
+4.0575976e+06 -2.4523336e+05 8.3243294e+04
+4.0061897e+06 -2.3926491e+05 8.7481711e+04
+3.8149017e+06 -2.2868909e+05 9.1095523e+04
+3.4757050e+06 -2.1071879e+05 9.3457320e+04
+2.9427636e+06 -1.7934047e+05 8.9007918e+04
+2.2076535e+06 -1.3254835e+05 6.9079612e+04
+1.3541582e+06 -7.7742671e+04 3.2714447e+04
+5.6717134e+05 -3.0504613e+04 5.2866547e+02
+3.3814521e+04 -3.1089537e+03 6.9775071e+02
+2.4213881e+03 -2.1724927e+02 2.2945008e+02
+3.3701587e+02 -2.4955836e+01 4.1603036e+01
+5.6661431e+01 -2.9915552e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.1490286e+01 -1.0042607e+00 2.8463258e-01
+2.2754718e+02 -2.0100750e+01 8.2702141e+00
+4.0876890e+03 -3.7440964e+02 1.8817444e+02
+7.3297925e+04 -7.1263591e+03 3.9025949e+03
+1.1852636e+06 -8.1393064e+04 2.8767552e+04
+2.9699582e+06 -2.1448186e+05 7.7029487e+04
+4.9789324e+06 -3.5386905e+05 1.4290924e+05
+6.6089367e+06 -4.5332409e+05 2.1063685e+05
+7.5880675e+06 -4.9960326e+05 2.6716251e+05
+7.9704425e+06 -5.0642052e+05 3.0741594e+05
+7.9374007e+06 -4.9400844e+05 3.3119923e+05
+7.6051300e+06 -4.7185889e+05 3.3845848e+05
+6.9605632e+06 -4.3450285e+05 3.2578058e+05
+5.9288469e+06 -3.7006724e+05 2.8423685e+05
+4.5013758e+06 -2.7463195e+05 2.0389041e+05
+2.8327536e+06 -1.6234417e+05 9.3547544e+04
+1.2653673e+06 -6.3749077e+04 3.3676671e+03
+7.4081421e+04 -6.4642746e+03 1.5698146e+03
+5.2880216e+03 -3.6579330e+02 4.9368828e+02
+7.1738400e+02 -2.7632850e+01 8.8499499e+01
+1.1870667e+02 -2.5277286e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.7744660e+01 -1.2054446e+00 3.8532506e-01
+3.5226437e+02 -2.4481613e+01 8.7692744e+00
+6.3110455e+03 -4.5438530e+02 1.6552237e+02
+1.1225075e+05 -8.4446297e+03 2.9398940e+03
+1.7748532e+06 -9.9173064e+04 5.1820741e+04
+4.3801527e+06 -2.6972388e+05 1.4276726e+05
+7.3165564e+06 -4.4793756e+05 2.6547871e+05
+9.7159381e+06 -5.7275233e+05 3.9356301e+05
+1.1183171e+07 -6.2790409e+05 5.0363453e+05
+1.1786491e+07 -6.3286485e+05 5.8375108e+05
+1.1775928e+07 -6.1520480e+05 6.2958581e+05
+1.1312931e+07 -5.8761217e+05 6.3822247e+05
+1.0379717e+07 -5.4243944e+05 6.0373694e+05
+8.8715379e+06 -4.6322746e+05 5.1475031e+05
+6.7749769e+06 -3.4377918e+05 3.6163039e+05
+4.3081086e+06 -2.0161119e+05 1.6547817e+05
+1.9666514e+06 -7.6548121e+04 9.2502455e+03
+1.1590073e+05 -7.5659428e+03 2.6858657e+03
+8.3688803e+03 -4.1547127e+02 8.0082236e+02
+1.1483259e+03 -2.5747102e+01 1.4280758e+02
+1.9084504e+02 -1.7752952e+00 0.0000000e+00
+0 0 0
+0 0 0
+2.3354197e+01 -1.0625885e+00 3.3686360e-01
+4.6292463e+02 -2.1354601e+01 6.5985024e+00
+8.2699857e+03 -3.8860581e+02 1.0717777e+02
+1.4657127e+05 -7.0280196e+03 1.6615024e+03
+2.2495071e+06 -8.9048540e+04 7.2681207e+04
+5.5345773e+06 -2.5185571e+05 2.0247033e+05
+9.2405402e+06 -4.2162919e+05 3.7548570e+05
+1.2272776e+07 -5.3804824e+05 5.5529673e+05
+1.4132807e+07 -5.8624768e+05 7.0939881e+05
+1.4903962e+07 -5.8690254e+05 8.2042372e+05
+1.4897770e+07 -5.6817808e+05 8.8152121e+05
+1.4317287e+07 -5.4278184e+05 8.8857662e+05
+1.3143635e+07 -5.0266780e+05 8.3453688e+05
+1.1247610e+07 -4.3063882e+05 7.0613893e+05
+8.6088524e+06 -3.1942685e+05 4.9313521e+05
+5.4931554e+06 -1.8533736e+05 2.2580834e+05
+2.5204702e+06 -6.7475729e+04 1.4675713e+04
+1.5182672e+05 -6.2937303e+03 3.6840115e+03
+1.1024928e+04 -3.4740486e+02 1.0693003e+03
+1.5224536e+03 -1.9764477e+01 1.9022984e+02
+2.5385916e+02 -1.0965404e+00 0.0000000e+00
+0 0 0
+0 0 0
+2.7664887e+01 -6.8844221e-01 3.0429325e-01
+5.4765909e+02 -1.3654553e+01 5.5316455e+00
+9.7680650e+03 -2.4411311e+02 8.4022815e+01
+1.7285072e+05 -4.3255489e+03 1.2632735e+03
+2.5793379e+06 -5.9796493e+04 8.7838552e+04
+6.3544510e+06 -1.7491743e+05 2.4477058e+05
+1.0614922e+07 -2.9479991e+05 4.5168931e+05
+1.4096621e+07 -3.7565217e+05 6.6444208e+05
+1.6225325e+07 -4.0731282e+05 8.4432879e+05
+1.7098323e+07 -4.0556023e+05 9.7123937e+05
+1.7076003e+07 -3.9133527e+05 1.0381357e+06
+1.6395779e+07 -3.7394973e+05 1.0416770e+06
+1.5041456e+07 -3.4728991e+05 9.7507313e+05
+1.2867946e+07 -2.9834871e+05 8.2358562e+05
+9.8492292e+06 -2.2121695e+05 5.7489515e+05
+6.2827916e+06 -1.2722463e+05 2.6341218e+05
+2.8749711e+06 -4.4685880e+04 1.7838236e+04
+1.7772557e+05 -3.9059776e+03 4.3343883e+03
+1.2901977e+04 -2.1774693e+02 1.2478909e+03
+1.7765351e+03 -1.1974910e+01 2.2188618e+02
+2.9595308e+02 -5.8286484e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0343983e+01 -2.3336322e-01 3.1976654e-01
+6.0026078e+02 -4.5910847e+00 5.8257004e+00
+1.0697816e+04 -8.1256363e+01 9.0654491e+01
+1.8916911e+05 -1.4242284e+03 1.4417064e+03
+2.7673325e+06 -2.0871288e+04 9.6327418e+04
+6.8322252e+06 -6.2235650e+04 2.6772348e+05
+1.1420108e+07 -1.0528301e+05 4.9191668e+05
+1.5163072e+07 -1.3405881e+05 7.2009355e+05
+1.7441367e+07 -1.4497801e+05 9.1033728e+05
+1.8362289e+07 -1.4393224e+05 1.0418131e+06
+1.8317766e+07 -1.3864142e+05 1.1084996e+06
+1.7568137e+07 -1.3251251e+05 1.1085951e+06
+1.6100977e+07 -1.2326578e+05 1.0361577e+06
+1.3763204e+07 -1.0606286e+05 8.7549123e+05
+1.0525729e+07 -7.8630692e+04 6.1194167e+05
+6.7038490e+06 -4.5004470e+04 2.8051227e+05
+3.0531316e+06 -1.5490965e+04 1.9085334e+04
+1.9269706e+05 -1.2977555e+03 4.6449248e+03
+1.3951459e+04 -7.2799784e+01 1.3365226e+03
+1.9083866e+03 -3.9614862e+00 2.3768553e+02
+3.1700796e+02 -1.8241726e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.1249317e+01 2.3336322e-01 3.3443748e-01
+6.1802888e+02 4.5910847e+00 6.1500258e+00
+1.1011825e+04 8.1256363e+01 9.7358930e+01
+1.9468077e+05 1.4242284e+03 1.5850196e+03
+2.8276188e+06 2.0871288e+04 9.8954378e+04
+6.9877079e+06 6.2235650e+04 2.7466911e+05
+1.1683022e+07 1.0528301e+05 5.0382821e+05
+1.5510823e+07 1.3405881e+05 7.3608514e+05
+1.7836251e+07 1.4497801e+05 9.2858016e+05
+1.8770247e+07 1.4393224e+05 1.0604463e+06
+1.8715655e+07 1.3864143e+05 1.1262469e+06
+1.7940893e+07 1.3251251e+05 1.1249235e+06
+1.6435241e+07 1.2326578e+05 1.0509657e+06
+1.4043320e+07 1.0606286e+05 8.8834652e+05
+1.0735159e+07 7.8630692e+04 6.2140038e+05
+6.8317814e+06 4.5004471e+04 2.8490104e+05
+3.1045478e+06 1.5490965e+04 1.9359444e+04
+1.9750977e+05 1.2977555e+03 4.7287464e+03
+1.4279778e+04 7.2799785e+01 1.3612884e+03
+1.9469350e+03 3.9614862e+00 2.4212121e+02
+3.2293478e+02 1.8241726e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.0343983e+01 6.8844221e-01 3.1976654e-01
+6.0026078e+02 1.3654553e+01 5.8257004e+00
+1.0697816e+04 2.4411311e+02 9.0654490e+01
+1.8916911e+05 4.3255490e+03 1.4417065e+03
+2.7673325e+06 5.9796493e+04 9.6327418e+04
+6.8322252e+06 1.7491743e+05 2.6772348e+05
+1.1420108e+07 2.9479991e+05 4.9191668e+05
+1.5163072e+07 3.7565217e+05 7.2009355e+05
+1.7441367e+07 4.0731282e+05 9.1033728e+05
+1.8362289e+07 4.0556023e+05 1.0418131e+06
+1.8317766e+07 3.9133527e+05 1.1084996e+06
+1.7568137e+07 3.7394973e+05 1.1085951e+06
+1.6100977e+07 3.4728991e+05 1.0361577e+06
+1.3763204e+07 2.9834871e+05 8.7549123e+05
+1.0525729e+07 2.2121695e+05 6.1194167e+05
+6.7038490e+06 1.2722463e+05 2.8051227e+05
+3.0531316e+06 4.4685880e+04 1.9085334e+04
+1.9269706e+05 3.9059776e+03 4.6449248e+03
+1.3951459e+04 2.1774693e+02 1.3365226e+03
+1.9083866e+03 1.1974910e+01 2.3768553e+02
+3.1700796e+02 5.8286485e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.7664887e+01 1.0625885e+00 3.0429324e-01
+5.4765909e+02 2.1354601e+01 5.5316455e+00
+9.7680650e+03 3.8860581e+02 8.4022815e+01
+1.7285072e+05 7.0280196e+03 1.2632735e+03
+2.5793379e+06 8.9048540e+04 8.7838552e+04
+6.3544510e+06 2.5185571e+05 2.4477058e+05
+1.0614922e+07 4.2162919e+05 4.5168931e+05
+1.4096621e+07 5.3804825e+05 6.6444208e+05
+1.6225325e+07 5.8624768e+05 8.4432879e+05
+1.7098323e+07 5.8690254e+05 9.7123937e+05
+1.7076003e+07 5.6817809e+05 1.0381357e+06
+1.6395779e+07 5.4278184e+05 1.0416770e+06
+1.5041456e+07 5.0266780e+05 9.7507313e+05
+1.2867946e+07 4.3063882e+05 8.2358562e+05
+9.8492292e+06 3.1942685e+05 5.7489515e+05
+6.2827916e+06 1.8533736e+05 2.6341218e+05
+2.8749711e+06 6.7475729e+04 1.7838236e+04
+1.7772557e+05 6.2937303e+03 4.3343883e+03
+1.2901977e+04 3.4740486e+02 1.2478909e+03
+1.7765351e+03 1.9764477e+01 2.2188618e+02
+2.9595308e+02 1.0965404e+00 0.0000000e+00
+0 0 0
+0 0 0
+2.3354197e+01 1.2054446e+00 3.3686360e-01
+4.6292463e+02 2.4481613e+01 6.5985024e+00
+8.2699857e+03 4.5438530e+02 1.0717777e+02
+1.4657127e+05 8.4446297e+03 1.6615024e+03
+2.2495071e+06 9.9173064e+04 7.2681207e+04
+5.5345773e+06 2.6972388e+05 2.0247033e+05
+9.2405402e+06 4.4793756e+05 3.7548570e+05
+1.2272776e+07 5.7275233e+05 5.5529673e+05
+1.4132807e+07 6.2790409e+05 7.0939881e+05
+1.4903962e+07 6.3286485e+05 8.2042372e+05
+1.4897770e+07 6.1520480e+05 8.8152121e+05
+1.4317287e+07 5.8761217e+05 8.8857662e+05
+1.3143635e+07 5.4243944e+05 8.3453688e+05
+1.1247610e+07 4.6322746e+05 7.0613893e+05
+8.6088524e+06 3.4377918e+05 4.9313521e+05
+5.4931554e+06 2.0161119e+05 2.2580834e+05
+2.5204702e+06 7.6548121e+04 1.4675713e+04
+1.5182672e+05 7.5659428e+03 3.6840115e+03
+1.1024928e+04 4.1547127e+02 1.0693003e+03
+1.5224536e+03 2.5747102e+01 1.9022984e+02
+2.5385916e+02 1.7752952e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.7744660e+01 1.0042607e+00 3.8532506e-01
+3.5226437e+02 2.0100750e+01 8.7692745e+00
+6.3110455e+03 3.7440964e+02 1.6552237e+02
+1.1225075e+05 7.1263591e+03 2.9398939e+03
+1.7748532e+06 8.1393064e+04 5.1820741e+04
+4.3801527e+06 2.1448186e+05 1.4276726e+05
+7.3165564e+06 3.5386905e+05 2.6547871e+05
+9.7159381e+06 4.5332409e+05 3.9356301e+05
+1.1183171e+07 4.9960326e+05 5.0363453e+05
+1.1786491e+07 5.0642053e+05 5.8375108e+05
+1.1775928e+07 4.9400844e+05 6.2958581e+05
+1.1312931e+07 4.7185889e+05 6.3822247e+05
+1.0379717e+07 4.3450285e+05 6.0373694e+05
+8.8715379e+06 3.7006724e+05 5.1475031e+05
+6.7749769e+06 2.7463195e+05 3.6163039e+05
+4.3081086e+06 1.6234417e+05 1.6547816e+05
+1.9666514e+06 6.3749077e+04 9.2502455e+03
+1.1590073e+05 6.4642746e+03 2.6858657e+03
+8.3688803e+03 3.6579330e+02 8.0082236e+02
+1.1483259e+03 2.7632850e+01 1.4280758e+02
+1.9084504e+02 2.5277286e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.1490286e+01 5.9902083e-01 2.8463258e-01
+2.2754718e+02 1.0671927e+01 8.2702141e+00
+4.0876890e+03 1.8073494e+02 1.8817443e+02
+7.3297925e+04 3.2930880e+03 3.9025949e+03
+1.1852636e+06 3.9611062e+04 2.8767552e+04
+2.9699582e+06 1.0396986e+05 7.7029487e+04
+4.9789324e+06 1.7146521e+05 1.4290925e+05
+6.6089367e+06 2.1964412e+05 2.1063685e+05
+7.5880675e+06 2.4199260e+05 2.6716251e+05
+7.9704425e+06 2.4523336e+05 3.0741594e+05
+7.9374007e+06 2.3926491e+05 3.3119923e+05
+7.6051300e+06 2.2868909e+05 3.3845848e+05
+6.9605632e+06 2.1071879e+05 3.2578058e+05
+5.9288469e+06 1.7934047e+05 2.8423685e+05
+4.5013758e+06 1.3254835e+05 2.0389041e+05
+2.8327536e+06 7.7742671e+04 9.3547544e+04
+1.2653673e+06 3.0504613e+04 3.3676671e+03
+7.4081421e+04 3.1089537e+03 1.5698146e+03
+5.2880216e+03 2.1724927e+02 4.9368828e+02
+7.1738400e+02 2.4955836e+01 8.8499499e+01
+1.1870667e+02 2.9915552e+00 0.0000000e+00
+0 0 0
+0 0 0
+5.7186362e+00 3.2393679e-01 -2.8808605e-02
+1.0955273e+02 4.1947514e+00 2.1945162e+00
+1.9284725e+03 4.2427249e+01 8.7583586e+01
+3.4904091e+04 3.5977806e+02 2.3042277e+03
+5.7502966e+05 2.9518629e+03 8.9109145e+03
+1.5162623e+06 7.7969373e+03 2.3628725e+04
+2.5757217e+06 1.2809007e+04 4.3956893e+04
+3.4185084e+06 1.5944746e+04 6.2965717e+04
+3.8988904e+06 1.6929951e+04 7.6009946e+04
+4.0575976e+06 1.6758484e+04 8.3243294e+04
+4.0061897e+06 1.6435770e+04 8.7481712e+04
+3.8149017e+06 1.6221370e+04 9.1095523e+04
+3.4757050e+06 1.5503478e+04 9.3457320e+04
+2.9427636e+06 1.3166244e+04 8.9007918e+04
+2.2076535e+06 8.6385321e+03 6.9079612e+04
+1.3541582e+06 3.4043627e+03 3.2714447e+04
+5.6717134e+05 7.0950188e+02 5.2866547e+02
+3.3814521e+04 4.7367098e+02 6.9775071e+02
+2.4213881e+03 9.8865157e+01 2.2945008e+02
+3.3701587e+02 1.9175546e+01 4.1603036e+01
+5.6661431e+01 2.5929421e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.8967288e+00 2.1772562e-01 -2.0518575e-01
+2.9624925e+01 2.5771662e+00 -2.3961665e+00
+3.8648491e+02 2.2743521e+01 -1.8416555e+01
+4.4665994e+03 1.6434380e+02 -1.0790715e+02
+3.9493538e+04 9.0742806e+02 1.0122045e+02
+9.2777652e+04 2.1633214e+03 1.0012120e+03
+1.5118236e+05 3.5197012e+03 2.3146183e+03
+2.0005881e+05 4.5322966e+03 3.1846714e+03
+2.3145159e+05 5.0388017e+03 3.1463273e+03
+2.4507819e+05 5.1487583e+03 2.5378112e+03
+2.4427925e+05 5.0464232e+03 2.1462493e+03
+2.3175963e+05 4.8188609e+03 2.6422871e+03
+2.0806516e+05 4.4098960e+03 4.0689178e+03
+1.7299251e+05 3.7037957e+03 5.4540360e+03
+1.2827495e+05 2.6872659e+03 5.1457990e+03
+7.9352977e+04 1.5739270e+03 2.6620266e+03
+3.4913189e+04 7.0410010e+02 4.4596047e+02
+4.2933269e+03 1.8605737e+02 1.8420852e+02
+5.2639298e+02 4.1349480e+01 6.4562603e+01
+1.0096025e+02 8.3676651e+00 1.2786205e+01
+1.8966572e+01 1.1721051e+00 0.0000000e+00
+0 0 0
+0 0 0
+5.8642784e-01 1.0603647e-01 -1.1609417e-01
+7.2962050e+00 1.1921678e+00 -1.3157378e+00
+6.9088694e+01 9.6816947e+00 -9.5120587e+00
+5.3138087e+02 6.1368616e+01 -4.3024766e+01
+2.8623360e+03 2.7358791e+02 -2.4761005e+01
+6.7205007e+03 6.4001418e+02 3.7434348e+01
+1.0983916e+04 1.0427323e+03 1.1614460e+02
+1.4502807e+04 1.3530309e+03 1.6829732e+02
+1.6689490e+04 1.5175818e+03 1.7101520e+02
+1.7571370e+04 1.5596682e+03 1.4238463e+02
+1.7449912e+04 1.5286427e+03 1.2480447e+02
+1.6545014e+04 1.4514613e+03 1.5408505e+02
+1.4870291e+04 1.3182043e+03 2.3136507e+02
+1.2364518e+04 1.1050883e+03 3.0542790e+02
+9.1357051e+03 8.1436454e+02 2.9711404e+02
+5.6154896e+03 4.9686009e+02 1.9232726e+02
+2.5007376e+03 2.2989146e+02 9.5528853e+01
+5.3194957e+02 6.4694748e+01 4.0949537e+01
+1.0449668e+02 1.4533903e+01 1.4493990e+01
+2.5126625e+01 2.8277939e+00 3.0051898e+00
+5.0018500e+00 3.8638879e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.9246073e-01 2.5357414e-02 -3.3211982e-02
+2.0961741e+00 2.7462845e-01 -3.5347402e-01
+1.6314437e+01 2.1059385e+00 -2.3091005e+00
+9.7363738e+01 1.2288901e+01 -8.9443447e+00
+3.9868910e+02 4.9257638e+01 -7.5788696e+00
+9.2289997e+02 1.1420943e+02 -1.8526679e+00
+1.5065585e+03 1.8626996e+02 3.9990151e+00
+1.9707762e+03 2.4216571e+02 7.8069057e+00
+2.2352646e+03 2.7212615e+02 8.5986838e+00
+2.3208337e+03 2.8001793e+02 7.4023250e+00
+2.2868395e+03 2.7448933e+02 6.6468079e+00
+2.1693050e+03 2.6039287e+02 8.4905631e+00
+1.9607377e+03 2.3613292e+02 1.3501537e+01
+1.6375098e+03 1.9772920e+02 1.9811039e+01
+1.2081113e+03 1.4578427e+02 2.3816980e+01
+7.4080450e+02 8.9234524e+01 2.3337151e+01
+3.4276814e+02 4.1676163e+01 1.8767056e+01
+1.0161272e+02 1.2788730e+01 8.2904983e+00
+2.5155249e+01 3.0058640e+00 2.8171565e+00
+6.1401059e+00 5.8129854e-01 5.8068830e-01
+1.1600248e+00 7.7955124e-02 0.0000000e+00
+0 0 0
+0 0 0
+4.2792186e-02 0.0000000e+00 -3.9011765e-03
+4.4484124e-01 0.0000000e+00 -3.9804730e-02
+3.2386035e+00 0.0000000e+00 -2.4379880e-01
+1.7776448e+01 0.0000000e+00 -8.6548260e-01
+6.6859644e+01 0.0000000e+00 -7.9914821e-01
+1.5357445e+02 0.0000000e+00 -4.3141574e-01
+2.5026637e+02 0.0000000e+00 -9.1347834e-02
+3.2572315e+02 0.0000000e+00 1.7471914e-01
+3.6677205e+02 0.0000000e+00 2.8689348e-01
+3.7820922e+02 0.0000000e+00 2.6099062e-01
+3.7125917e+02 0.0000000e+00 2.3420744e-01
+3.5233469e+02 0.0000000e+00 3.5565850e-01
+3.1940524e+02 0.0000000e+00 7.4696990e-01
+2.6731649e+02 0.0000000e+00 1.4497749e+00
+1.9704915e+02 0.0000000e+00 2.3062569e+00
+1.2077808e+02 0.0000000e+00 2.8759487e+00
+5.7086097e+01 0.0000000e+00 2.5485955e+00
+1.9005884e+01 0.0000000e+00 1.1609832e+00
+5.0000581e+00 0.0000000e+00 3.8450998e-01
+1.1592366e+00 0.0000000e+00 7.7791118e-02
+2.0031667e-01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.4576926e-01 -9.7972664e-02 -5.0044102e-03
+1.6329476e+00 -1.1305521e+00 -6.2558669e-02
+1.2979443e+01 -9.3334180e+00 -4.6997990e-01
+7.7673526e+01 -5.8414397e+01 -1.9526602e+00
+3.1308229e+02 -2.4682970e+02 -1.3456064e+00
+7.3728553e+02 -5.8389110e+02 -1.1655791e+00
+1.2105963e+03 -9.6016752e+02 -1.3280187e+00
+1.5812233e+03 -1.2559104e+03 -9.1774562e-01
+1.7862284e+03 -1.4199550e+03 -4.1913164e-01
+1.8459114e+03 -1.4678969e+03 -2.2442923e-01
+1.8111141e+03 -1.4399536e+03 -1.2582596e-01
+1.7122628e+03 -1.3602734e+03 2.1938451e-01
+1.5419428e+03 -1.2236615e+03 1.3433434e+00
+1.2794947e+03 -1.0147460e+03 3.9111526e+00
+9.3399592e+02 -7.4094312e+02 7.9075060e+00
+5.6649936e+02 -4.4926578e+02 1.1452002e+01
+2.6504430e+02 -2.0743883e+02 1.0932632e+01
+8.7309405e+01 -6.2272825e+01 4.9019347e+00
+2.2440763e+01 -1.4169216e+01 1.6304465e+00
+5.0896649e+00 -2.6485530e+00 3.4857125e-01
+8.9799196e-01 -3.4910404e-01 0.0000000e+00
+0 0 0
+0 0 0
+5.6978033e-01 -3.8755734e-01 -8.7734918e-02
+6.5005984e+00 -4.6005424e+00 -1.0221689e+00
+5.3129190e+01 -3.9771099e+01 -7.3992412e+00
+3.2998211e+02 -2.6701070e+02 -3.1421314e+01
+1.3860969e+03 -1.2400090e+03 -2.5649796e+01
+3.2729674e+03 -2.9460884e+03 -1.3519864e+01
+5.3777594e+03 -4.8397307e+03 -5.1576367e+00
+7.0350411e+03 -6.3267922e+03 1.4594047e+00
+7.9609080e+03 -7.1497705e+03 5.6315685e+00
+8.2398882e+03 -7.3886807e+03 7.3609486e+00
+8.0928175e+03 -7.2477311e+03 9.1604967e+00
+7.6528118e+03 -6.8485059e+03 1.3886227e+01
+6.8913714e+03 -6.1645307e+03 2.4121756e+01
+5.7233409e+03 -5.1175578e+03 4.1102536e+01
+4.1887759e+03 -3.7424990e+03 6.1993830e+01
+2.5480494e+03 -2.2726521e+03 7.8135247e+01
+1.1829601e+03 -1.0442906e+03 7.4795094e+01
+3.6618188e+02 -2.8555670e+02 3.3509813e+01
+9.4832584e+01 -6.2197192e+01 1.1860453e+01
+2.4598911e+01 -1.1895362e+01 2.6484570e+00
+5.0975147e+00 -1.6381370e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.2895390e+00 -7.3846803e-01 -3.5220050e-01
+1.5755307e+01 -9.1371973e+00 -4.2746476e+00
+1.4334583e+02 -8.4820946e+01 -3.3481937e+01
+1.0362021e+03 -6.4140019e+02 -1.6391366e+02
+5.2229709e+03 -3.6366977e+03 -1.2785977e+02
+1.2383342e+04 -8.6959274e+03 -4.0861793e+01
+2.0318864e+04 -1.4266523e+04 5.0982258e+01
+2.6721166e+04 -1.8619290e+04 1.2512103e+02
+3.0506903e+04 -2.1007060e+04 1.6499738e+02
+3.1855544e+04 -2.1690369e+04 1.8251267e+02
+3.1460319e+04 -2.1287608e+04 2.1198249e+02
+2.9777996e+04 -2.0153804e+04 2.8429833e+02
+2.6777969e+04 -1.8190768e+04 4.0285852e+02
+2.2260072e+04 -1.5131639e+04 5.2138543e+02
+1.6409569e+04 -1.1048357e+04 5.5337974e+02
+1.0095791e+04 -6.6632639e+03 4.6369043e+02
+4.6290060e+03 -3.0593566e+03 3.5048795e+02
+1.1819262e+03 -7.4698821e+02 1.6194280e+02
+3.0507984e+02 -1.6296467e+02 6.2127117e+01
+9.4953803e+01 -3.3783513e+01 1.4188089e+01
+2.2501939e+01 -4.9501368e+00 0.0000000e+00
+0 0 0
+0 0 0
+2.7840763e+00 -9.3229361e-01 -6.9352197e-01
+4.0893239e+01 -1.2183710e+01 -8.9153239e+00
+4.9542449e+02 -1.2428010e+02 -7.8395752e+01
+5.3397337e+03 -1.0799859e+03 -5.1294436e+02
+4.4868362e+04 -9.0930368e+03 -4.3142993e+02
+1.0618313e+05 -2.2768524e+04 2.3568462e+02
+1.7348379e+05 -3.7789261e+04 1.4569945e+03
+2.2937821e+05 -4.9052317e+04 2.5706215e+03
+2.6468470e+05 -5.4792817e+04 3.1232721e+03
+2.7945317e+05 -5.6261550e+04 3.3194748e+03
+2.7799095e+05 -5.5446023e+04 3.7661906e+03
+2.6362276e+05 -5.3247478e+04 4.9967305e+03
+2.3685429e+05 -4.8983505e+04 7.0003384e+03
+1.9725189e+05 -4.1141175e+04 8.7504987e+03
+1.4679409e+05 -2.9154183e+04 8.3371852e+03
+9.1697355e+04 -1.5589987e+04 4.9195302e+03
+4.1381213e+04 -6.2084370e+03 1.6005868e+03
+6.0453982e+03 -1.6421744e+03 7.4370173e+02
+1.1786303e+03 -3.5710524e+02 2.8560496e+02
+3.6642363e+02 -7.6031721e+01 6.2389788e+01
+8.7519573e+01 -1.1113350e+01 0.0000000e+00
+0 0 0
+0 0 0
+6.5264230e+00 -1.2041254e+00 -5.3595505e-01
+1.2088539e+02 -1.9991556e+01 -4.0607663e+00
+2.0648713e+03 -3.1393980e+02 4.9200166e+01
+3.6616974e+04 -5.4265753e+03 2.6829063e+03
+6.3238448e+05 -7.3375389e+04 9.6104385e+03
+1.6702374e+06 -1.9285640e+05 2.5723221e+04
+2.8343653e+06 -3.2072417e+05 5.0014451e+04
+3.7588576e+06 -4.1570212e+05 7.6315030e+04
+4.2840215e+06 -4.6320566e+05 9.9596759e+04
+4.4551957e+06 -4.7281145e+05 1.1854855e+05
+4.3968215e+06 -4.6147907e+05 1.3394981e+05
+4.1875529e+06 -4.3807322e+05 1.4612441e+05
+3.8191044e+06 -3.9902086e+05 1.5276235e+05
+3.2431420e+06 -3.3557350e+05 1.4681627e+05
+2.4539806e+06 -2.4620417e+05 1.1753920e+05
+1.5390039e+06 -1.4477189e+05 6.1875430e+04
+6.7440869e+05 -5.7637922e+04 6.0675726e+03
+4.0571338e+04 -5.3910651e+03 3.0596462e+03
+4.5711984e+03 -4.9256872e+02 1.0452994e+03
+1.1796630e+03 -8.0990182e+01 2.0761065e+02
+2.6494443e+02 -1.1785699e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.1893975e+01 -1.6186193e+00 1.0804495e-02
+2.3291231e+02 -3.1045692e+01 5.6998143e+00
+4.1467814e+03 -5.5805133e+02 1.9071889e+02
+7.3926299e+04 -1.0376080e+04 4.5118487e+03
+1.2207113e+06 -1.3604554e+05 3.1734318e+04
+3.0871790e+06 -3.6390148e+05 8.5558622e+04
+5.1869533e+06 -6.0690989e+05 1.6372341e+05
+6.8907826e+06 -7.8592004e+05 2.5209537e+05
+7.9144406e+06 -8.7408291e+05 3.3659955e+05
+8.3160892e+06 -8.9049398e+05 4.0863534e+05
+8.2896591e+06 -8.6794774e+05 4.6284555e+05
+7.9599801e+06 -8.2343558e+05 4.9335774e+05
+7.3138634e+06 -7.5003919e+05 4.9107592e+05
+6.2734773e+06 -6.3099491e+05 4.4186690e+05
+4.8290471e+06 -4.6311861e+05 3.3111006e+05
+3.1242192e+06 -2.7162042e+05 1.6649300e+05
+1.4640100e+06 -1.0561089e+05 1.5823336e+04
+8.7353229e+04 -9.4987844e+03 6.6592464e+03
+9.8067669e+03 -6.1496653e+02 2.2628988e+03
+2.5189517e+03 -6.6414981e+01 4.4675592e+02
+5.6200831e+02 -8.3314161e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.7600977e+01 -1.7737783e+00 2.9884209e-01
+3.4822361e+02 -3.5166788e+01 8.4606900e+00
+6.2208000e+03 -6.3909580e+02 1.7975070e+02
+1.1038501e+05 -1.1680324e+04 3.3497302e+03
+1.7433535e+06 -1.5950659e+05 5.8310463e+04
+4.3541884e+06 -4.4054483e+05 1.6091816e+05
+7.3037453e+06 -7.3998124e+05 3.0680063e+05
+9.7216377e+06 -9.5730707e+05 4.7248811e+05
+1.1209241e+07 -1.0603467e+06 6.3268186e+05
+1.1834881e+07 -1.0752585e+06 7.6905661e+05
+1.1853760e+07 -1.0447367e+06 8.6801307e+05
+1.1431844e+07 -9.9046541e+05 9.1612991e+05
+1.0551725e+07 -9.0308204e+05 8.9716499e+05
+9.1072927e+06 -7.6028628e+05 7.9070153e+05
+7.0787810e+06 -5.5667736e+05 5.8045616e+05
+4.6509272e+06 -3.2278613e+05 2.8880330e+05
+2.2403830e+06 -1.2064616e+05 3.0107033e+04
+1.3589461e+05 -1.0334467e+04 1.0948833e+04
+1.5624955e+04 -6.0341579e+02 3.6812078e+03
+4.0821654e+03 -4.6467436e+01 7.2742075e+02
+9.1433140e+02 -4.3970188e+00 0.0000000e+00
+0 0 0
+0 0 0
+2.2705323e+01 -1.5123639e+00 3.8746028e-01
+4.4981901e+02 -2.9916559e+01 8.2428551e+00
+8.0314642e+03 -5.3627816e+02 1.4394676e+02
+1.4224098e+05 -9.5694761e+03 2.3633938e+03
+2.1506850e+06 -1.4191282e+05 8.3591686e+04
+5.3513429e+06 -4.0521963e+05 2.3150084e+05
+8.9794562e+06 -6.8574353e+05 4.3834719e+05
+1.1968455e+07 -8.8649511e+05 6.7185681e+05
+1.3825609e+07 -9.7797076e+05 8.9667813e+05
+1.4626297e+07 -9.8707447e+05 1.0861590e+06
+1.4674954e+07 -9.5596043e+05 1.2201989e+06
+1.4172763e+07 -9.0568700e+05 1.2799451e+06
+1.3103046e+07 -8.2672256e+05 1.2441744e+06
+1.1340331e+07 -6.9659051e+05 1.0877583e+06
+8.8559731e+06 -5.0878921e+05 7.9274951e+05
+5.8615391e+06 -2.9158009e+05 3.9315970e+05
+2.8550643e+06 -1.0469664e+05 4.2616020e+04
+1.7765521e+05 -8.3110070e+03 1.4764069e+04
+2.0713865e+04 -4.6947369e+02 4.9411900e+03
+5.4684264e+03 -2.8762044e+01 9.7751186e+02
+1.2288134e+03 -1.8393993e+00 0.0000000e+00
+0 0 0
+0 0 0
+2.6655591e+01 -9.7302983e-01 4.6996163e-01
+5.2804721e+02 -1.9078927e+01 9.2442074e+00
+9.4237633e+03 -3.3720222e+02 1.5446996e+02
+1.6679742e+05 -5.9116045e+03 2.5498904e+03
+2.4327035e+06 -9.5546558e+04 1.0281796e+05
+6.0489082e+06 -2.8006508e+05 2.8320618e+05
+1.0156802e+07 -4.7669980e+05 5.3228275e+05
+1.3547459e+07 -6.1599052e+05 8.1094028e+05
+1.5659047e+07 -6.7755300e+05 1.0767998e+06
+1.6571437e+07 -6.8147559e+05 1.2980863e+06
+1.6625103e+07 -6.5841587e+05 1.4514420e+06
+1.6049265e+07 -6.2351924e+05 1.5157888e+06
+1.4832480e+07 -5.6971393e+05 1.4677556e+06
+1.2840194e+07 -4.8041337e+05 1.2793301e+06
+1.0039684e+07 -3.5028922e+05 9.3037541e+05
+6.6596865e+06 -1.9899114e+05 4.6089154e+05
+3.2499858e+06 -6.9266651e+04 5.0446781e+04
+2.0759752e+05 -5.0974510e+03 1.7361274e+04
+2.4271088e+04 -2.8499490e+02 5.8076845e+03
+6.4209410e+03 -1.5290630e+01 1.1498072e+03
+1.4445563e+03 -6.3541969e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.9134079e+01 -3.3041324e-01 5.6728711e-01
+5.7704767e+02 -6.4402788e+00 1.1141753e+01
+1.0295700e+04 -1.1291317e+02 1.8896811e+02
+1.8219060e+05 -1.9615469e+03 3.2174150e+03
+2.5944526e+06 -3.3478437e+04 1.1402922e+05
+6.4534822e+06 -9.9533948e+04 3.1224114e+05
+1.0841971e+07 -1.6994306e+05 5.8362144e+05
+1.4465372e+07 -2.1955980e+05 8.8489060e+05
+1.6719967e+07 -2.4113775e+05 1.1698754e+06
+1.7688233e+07 -2.4209697e+05 1.4045527e+06
+1.7732788e+07 -2.3361889e+05 1.5647335e+06
+1.7101308e+07 -2.2119648e+05 1.6292404e+06
+1.5788273e+07 -2.0222452e+05 1.5744548e+06
+1.3656800e+07 -1.7060804e+05 1.3710532e+06
+1.0673861e+07 -1.2429314e+05 9.9692498e+05
+7.0783444e+06 -7.0287377e+04 4.9372584e+05
+3.4475668e+06 -2.4065013e+04 5.4089028e+04
+2.2468105e+05 -1.6903817e+03 1.8697971e+04
+2.6199546e+04 -9.4275374e+01 6.2591643e+03
+6.9173700e+03 -4.7780943e+00 1.2396683e+03
+1.5561873e+03 -1.4644296e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.9976796e+01 3.3041324e-01 6.1169489e-01
+5.9369807e+02 6.4402788e+00 1.2061940e+01
+1.0591928e+04 1.1291317e+02 2.0613252e+02
+1.8742068e+05 1.9615469e+03 3.5431318e+03
+2.6466091e+06 3.3478437e+04 1.1759597e+05
+6.5849836e+06 9.9533948e+04 3.2125235e+05
+1.1065145e+07 1.6994306e+05 5.9924370e+05
+1.4764040e+07 2.1955980e+05 9.0690733e+05
+1.7063962e+07 2.4113775e+05 1.1969203e+06
+1.8048265e+07 2.4209697e+05 1.4347081e+06
+1.8087065e+07 2.3361890e+05 1.5960607e+06
+1.7434516e+07 2.2119648e+05 1.6600447e+06
+1.6087642e+07 2.0222452e+05 1.6031946e+06
+1.3909446e+07 1.7060804e+05 1.3958527e+06
+1.0867314e+07 1.2429314e+05 1.0151115e+06
+7.2035891e+06 7.0287378e+04 5.0272904e+05
+3.5040834e+06 2.4065013e+04 5.5063360e+04
+2.3010720e+05 1.6903817e+03 1.9085174e+04
+2.6785301e+04 9.4275373e+01 6.3911009e+03
+7.0625412e+03 4.7780943e+00 1.2659384e+03
+1.5885803e+03 1.4644296e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.9134079e+01 9.7302984e-01 5.6728711e-01
+5.7704767e+02 1.9078927e+01 1.1141753e+01
+1.0295700e+04 3.3720222e+02 1.8896811e+02
+1.8219060e+05 5.9116045e+03 3.2174150e+03
+2.5944526e+06 9.5546558e+04 1.1402922e+05
+6.4534822e+06 2.8006508e+05 3.1224114e+05
+1.0841971e+07 4.7669980e+05 5.8362144e+05
+1.4465372e+07 6.1599052e+05 8.8489060e+05
+1.6719967e+07 6.7755300e+05 1.1698754e+06
+1.7688233e+07 6.8147559e+05 1.4045527e+06
+1.7732788e+07 6.5841587e+05 1.5647335e+06
+1.7101308e+07 6.2351924e+05 1.6292404e+06
+1.5788273e+07 5.6971393e+05 1.5744548e+06
+1.3656800e+07 4.8041337e+05 1.3710532e+06
+1.0673861e+07 3.5028922e+05 9.9692498e+05
+7.0783444e+06 1.9899114e+05 4.9372584e+05
+3.4475668e+06 6.9266651e+04 5.4089028e+04
+2.2468105e+05 5.0974510e+03 1.8697971e+04
+2.6199546e+04 2.8499490e+02 6.2591643e+03
+6.9173700e+03 1.5290630e+01 1.2396683e+03
+1.5561873e+03 6.3541969e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.6655591e+01 1.5123639e+00 4.6996163e-01
+5.2804721e+02 2.9916559e+01 9.2442074e+00
+9.4237633e+03 5.3627816e+02 1.5446996e+02
+1.6679742e+05 9.5694761e+03 2.5498904e+03
+2.4327035e+06 1.4191282e+05 1.0281796e+05
+6.0489082e+06 4.0521963e+05 2.8320618e+05
+1.0156802e+07 6.8574353e+05 5.3228275e+05
+1.3547459e+07 8.8649511e+05 8.1094028e+05
+1.5659047e+07 9.7797076e+05 1.0767997e+06
+1.6571437e+07 9.8707447e+05 1.2980863e+06
+1.6625103e+07 9.5596043e+05 1.4514420e+06
+1.6049265e+07 9.0568700e+05 1.5157888e+06
+1.4832480e+07 8.2672256e+05 1.4677556e+06
+1.2840194e+07 6.9659051e+05 1.2793301e+06
+1.0039684e+07 5.0878921e+05 9.3037541e+05
+6.6596865e+06 2.9158009e+05 4.6089154e+05
+3.2499858e+06 1.0469664e+05 5.0446781e+04
+2.0759752e+05 8.3110070e+03 1.7361274e+04
+2.4271088e+04 4.6947369e+02 5.8076845e+03
+6.4209410e+03 2.8762044e+01 1.1498072e+03
+1.4445563e+03 1.8393993e+00 0.0000000e+00
+0 0 0
+0 0 0
+2.2705323e+01 1.7737783e+00 3.8746029e-01
+4.4981901e+02 3.5166788e+01 8.2428551e+00
+8.0314642e+03 6.3909580e+02 1.4394676e+02
+1.4224098e+05 1.1680324e+04 2.3633938e+03
+2.1506850e+06 1.5950659e+05 8.3591686e+04
+5.3513429e+06 4.4054483e+05 2.3150084e+05
+8.9794562e+06 7.3998124e+05 4.3834719e+05
+1.1968455e+07 9.5730707e+05 6.7185681e+05
+1.3825609e+07 1.0603467e+06 8.9667813e+05
+1.4626297e+07 1.0752585e+06 1.0861590e+06
+1.4674954e+07 1.0447367e+06 1.2201989e+06
+1.4172763e+07 9.9046541e+05 1.2799451e+06
+1.3103046e+07 9.0308204e+05 1.2441744e+06
+1.1340331e+07 7.6028628e+05 1.0877583e+06
+8.8559731e+06 5.5667736e+05 7.9274951e+05
+5.8615391e+06 3.2278613e+05 3.9315970e+05
+2.8550643e+06 1.2064616e+05 4.2616020e+04
+1.7765521e+05 1.0334467e+04 1.4764069e+04
+2.0713865e+04 6.0341579e+02 4.9411900e+03
+5.4684264e+03 4.6467436e+01 9.7751186e+02
+1.2288134e+03 4.3970188e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.7600977e+01 1.6186193e+00 2.9884209e-01
+3.4822361e+02 3.1045692e+01 8.4606900e+00
+6.2208000e+03 5.5805133e+02 1.7975070e+02
+1.1038501e+05 1.0376080e+04 3.3497302e+03
+1.7433535e+06 1.3604554e+05 5.8310463e+04
+4.3541884e+06 3.6390148e+05 1.6091816e+05
+7.3037453e+06 6.0690989e+05 3.0680063e+05
+9.7216377e+06 7.8592004e+05 4.7248811e+05
+1.1209241e+07 8.7408291e+05 6.3268186e+05
+1.1834881e+07 8.9049398e+05 7.6905661e+05
+1.1853760e+07 8.6794774e+05 8.6801307e+05
+1.1431844e+07 8.2343558e+05 9.1612990e+05
+1.0551725e+07 7.5003919e+05 8.9716499e+05
+9.1072927e+06 6.3099491e+05 7.9070153e+05
+7.0787810e+06 4.6311861e+05 5.8045616e+05
+4.6509272e+06 2.7162042e+05 2.8880330e+05
+2.2403830e+06 1.0561089e+05 3.0107033e+04
+1.3589461e+05 9.4987844e+03 1.0948833e+04
+1.5624955e+04 6.1496653e+02 3.6812078e+03
+4.0821654e+03 6.6414981e+01 7.2742075e+02
+9.1433140e+02 8.3314161e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.1893975e+01 1.2041254e+00 1.0804496e-02
+2.3291231e+02 1.9991556e+01 5.6998143e+00
+4.1467814e+03 3.1393980e+02 1.9071889e+02
+7.3926299e+04 5.4265753e+03 4.5118487e+03
+1.2207113e+06 7.3375389e+04 3.1734318e+04
+3.0871790e+06 1.9285640e+05 8.5558622e+04
+5.1869533e+06 3.2072417e+05 1.6372341e+05
+6.8907826e+06 4.1570212e+05 2.5209537e+05
+7.9144406e+06 4.6320566e+05 3.3659955e+05
+8.3160892e+06 4.7281145e+05 4.0863534e+05
+8.2896591e+06 4.6147907e+05 4.6284555e+05
+7.9599801e+06 4.3807322e+05 4.9335774e+05
+7.3138634e+06 3.9902086e+05 4.9107592e+05
+6.2734773e+06 3.3557350e+05 4.4186690e+05
+4.8290471e+06 2.4620417e+05 3.3111006e+05
+3.1242192e+06 1.4477189e+05 1.6649300e+05
+1.4640100e+06 5.7637922e+04 1.5823336e+04
+8.7353229e+04 5.3910651e+03 6.6592464e+03
+9.8067669e+03 4.9256872e+02 2.2628988e+03
+2.5189517e+03 8.0990182e+01 4.4675592e+02
+5.6200831e+02 1.1785699e+01 0.0000000e+00
+0 0 0
+0 0 0
+6.5264230e+00 9.3229361e-01 -5.3595505e-01
+1.2088539e+02 1.2183710e+01 -4.0607662e+00
+2.0648713e+03 1.2428010e+02 4.9200165e+01
+3.6616974e+04 1.0799859e+03 2.6829063e+03
+6.3238448e+05 9.0930368e+03 9.6104385e+03
+1.6702374e+06 2.2768524e+04 2.5723220e+04
+2.8343653e+06 3.7789261e+04 5.0014451e+04
+3.7588576e+06 4.9052317e+04 7.6315030e+04
+4.2840215e+06 5.4792817e+04 9.9596759e+04
+4.4551957e+06 5.6261550e+04 1.1854855e+05
+4.3968215e+06 5.5446023e+04 1.3394981e+05
+4.1875529e+06 5.3247478e+04 1.4612441e+05
+3.8191044e+06 4.8983505e+04 1.5276235e+05
+3.2431420e+06 4.1141175e+04 1.4681627e+05
+2.4539806e+06 2.9154183e+04 1.1753920e+05
+1.5390039e+06 1.5589987e+04 6.1875430e+04
+6.7440869e+05 6.2084370e+03 6.0675726e+03
+4.0571338e+04 1.6421744e+03 3.0596462e+03
+4.5711984e+03 3.5710524e+02 1.0452994e+03
+1.1796630e+03 7.6031721e+01 2.0761065e+02
+2.6494443e+02 1.1113350e+01 0.0000000e+00
+0 0 0
+0 0 0
+2.7840763e+00 7.3846803e-01 -6.9352197e-01
+4.0893239e+01 9.1371973e+00 -8.9153239e+00
+4.9542449e+02 8.4820946e+01 -7.8395752e+01
+5.3397337e+03 6.4140019e+02 -5.1294436e+02
+4.4868362e+04 3.6366977e+03 -4.3142993e+02
+1.0618313e+05 8.6959274e+03 2.3568462e+02
+1.7348379e+05 1.4266523e+04 1.4569945e+03
+2.2937821e+05 1.8619290e+04 2.5706215e+03
+2.6468470e+05 2.1007060e+04 3.1232721e+03
+2.7945317e+05 2.1690369e+04 3.3194748e+03
+2.7799095e+05 2.1287608e+04 3.7661906e+03
+2.6362276e+05 2.0153804e+04 4.9967305e+03
+2.3685429e+05 1.8190768e+04 7.0003384e+03
+1.9725189e+05 1.5131639e+04 8.7504987e+03
+1.4679409e+05 1.1048357e+04 8.3371852e+03
+9.1697355e+04 6.6632639e+03 4.9195302e+03
+4.1381213e+04 3.0593566e+03 1.6005868e+03
+6.0453982e+03 7.4698821e+02 7.4370173e+02
+1.1786303e+03 1.6296467e+02 2.8560496e+02
+3.6642363e+02 3.3783513e+01 6.2389788e+01
+8.7519573e+01 4.9501368e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.2895390e+00 3.8755734e-01 -3.5220050e-01
+1.5755307e+01 4.6005424e+00 -4.2746476e+00
+1.4334583e+02 3.9771099e+01 -3.3481937e+01
+1.0362021e+03 2.6701070e+02 -1.6391366e+02
+5.2229709e+03 1.2400090e+03 -1.2785977e+02
+1.2383342e+04 2.9460884e+03 -4.0861793e+01
+2.0318864e+04 4.8397307e+03 5.0982258e+01
+2.6721166e+04 6.3267922e+03 1.2512103e+02
+3.0506903e+04 7.1497705e+03 1.6499738e+02
+3.1855544e+04 7.3886807e+03 1.8251267e+02
+3.1460319e+04 7.2477311e+03 2.1198249e+02
+2.9777996e+04 6.8485059e+03 2.8429833e+02
+2.6777969e+04 6.1645307e+03 4.0285852e+02
+2.2260072e+04 5.1175578e+03 5.2138543e+02
+1.6409569e+04 3.7424990e+03 5.5337974e+02
+1.0095791e+04 2.2726521e+03 4.6369043e+02
+4.6290060e+03 1.0442906e+03 3.5048795e+02
+1.1819262e+03 2.8555670e+02 1.6194280e+02
+3.0507984e+02 6.2197192e+01 6.2127117e+01
+9.4953803e+01 1.1895362e+01 1.4188089e+01
+2.2501939e+01 1.6381370e+00 0.0000000e+00
+0 0 0
+0 0 0
+5.6978033e-01 9.7972664e-02 -8.7734918e-02
+6.5005984e+00 1.1305521e+00 -1.0221689e+00
+5.3129190e+01 9.3334180e+00 -7.3992412e+00
+3.2998211e+02 5.8414397e+01 -3.1421314e+01
+1.3860969e+03 2.4682970e+02 -2.5649796e+01
+3.2729674e+03 5.8389110e+02 -1.3519864e+01
+5.3777594e+03 9.6016752e+02 -5.1576367e+00
+7.0350411e+03 1.2559104e+03 1.4594047e+00
+7.9609080e+03 1.4199550e+03 5.6315685e+00
+8.2398882e+03 1.4678969e+03 7.3609486e+00
+8.0928175e+03 1.4399536e+03 9.1604967e+00
+7.6528118e+03 1.3602734e+03 1.3886227e+01
+6.8913714e+03 1.2236615e+03 2.4121756e+01
+5.7233409e+03 1.0147460e+03 4.1102536e+01
+4.1887759e+03 7.4094312e+02 6.1993830e+01
+2.5480494e+03 4.4926578e+02 7.8135247e+01
+1.1829601e+03 2.0743883e+02 7.4795094e+01
+3.6618188e+02 6.2272825e+01 3.3509813e+01
+9.4832584e+01 1.4169216e+01 1.1860453e+01
+2.4598911e+01 2.6485530e+00 2.6484570e+00
+5.0975147e+00 3.4910404e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.4576926e-01 0.0000000e+00 -5.0044102e-03
+1.6329476e+00 0.0000000e+00 -6.2558669e-02
+1.2979443e+01 0.0000000e+00 -4.6997990e-01
+7.7673526e+01 0.0000000e+00 -1.9526602e+00
+3.1308229e+02 0.0000000e+00 -1.3456064e+00
+7.3728553e+02 0.0000000e+00 -1.1655791e+00
+1.2105963e+03 0.0000000e+00 -1.3280187e+00
+1.5812233e+03 0.0000000e+00 -9.1774562e-01
+1.7862284e+03 0.0000000e+00 -4.1913164e-01
+1.8459114e+03 0.0000000e+00 -2.2442924e-01
+1.8111141e+03 0.0000000e+00 -1.2582596e-01
+1.7122628e+03 0.0000000e+00 2.1938451e-01
+1.5419428e+03 0.0000000e+00 1.3433434e+00
+1.2794947e+03 0.0000000e+00 3.9111526e+00
+9.3399592e+02 0.0000000e+00 7.9075060e+00
+5.6649936e+02 0.0000000e+00 1.1452002e+01
+2.6504430e+02 0.0000000e+00 1.0932632e+01
+8.7309405e+01 0.0000000e+00 4.9019347e+00
+2.2440763e+01 0.0000000e+00 1.6304465e+00
+5.0896649e+00 0.0000000e+00 3.4857125e-01
+8.9799196e-01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.6886570e-01 -3.4782664e-01 2.4730199e-02
+5.7542654e+00 -4.3241270e+00 2.2753936e-01
+5.0990964e+01 -3.8961018e+01 1.1770363e+00
+3.4118038e+02 -2.6574902e+02 3.4191987e+00
+1.5117444e+03 -1.2023332e+03 7.0902862e+00
+3.6536120e+03 -2.9098032e+03 5.6697751e-01
+6.0346042e+03 -4.8173470e+03 -6.0938829e+00
+7.9039667e+03 -6.3230778e+03 -5.7594431e+00
+8.9565147e+03 -7.1726603e+03 -3.3854229e+00
+9.2767673e+03 -7.4318370e+03 -2.4042734e+00
+9.0994146e+03 -7.2886844e+03 -2.0202537e+00
+8.5737704e+03 -6.8624773e+03 -1.0505505e+00
+7.6753454e+03 -6.1370255e+03 2.5722911e+00
+6.3211711e+03 -5.0513559e+03 1.2251788e+01
+4.5740961e+03 -3.6570442e+03 2.9195879e+01
+2.7449998e+03 -2.1952518e+03 4.5947260e+01
+1.2656745e+03 -1.0000806e+03 4.5397608e+01
+4.0680344e+02 -2.9373763e+02 1.9641208e+01
+1.0014983e+02 -6.4573301e+01 6.5054415e+00
+2.1700718e+01 -1.1601394e+01 1.4957820e+00
+3.8910910e+00 -1.4973170e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.6689370e+00 -1.2908378e+00 -1.5614554e-01
+2.0467534e+01 -1.6312352e+01 -2.1348557e+00
+1.8190963e+02 -1.5164461e+02 -1.8231704e+01
+1.2259914e+03 -1.0910633e+03 -8.8926793e+01
+5.4934867e+03 -5.3397378e+03 -5.8912088e+01
+1.3276815e+04 -1.2935792e+04 -3.6771231e+01
+2.1955728e+04 -2.1399583e+04 -3.2503403e+01
+2.8788085e+04 -2.8089110e+04 -1.9515272e+01
+3.2632969e+04 -3.1858750e+04 -5.4864487e+00
+3.3803454e+04 -3.3002520e+04 1.6313630e+00
+3.3162692e+04 -3.2363419e+04 6.4917205e+00
+3.1252657e+04 -3.0471754e+04 1.5923205e+01
+2.7988086e+04 -2.7258255e+04 4.0437936e+01
+2.3073810e+04 -2.2455873e+04 9.4485934e+01
+1.6732297e+04 -1.6288025e+04 1.8194552e+02
+1.0066353e+04 -9.8031534e+03 2.7154339e+02
+4.6197869e+03 -4.4489208e+03 2.8355682e+02
+1.4161103e+03 -1.1863304e+03 1.2622108e+02
+3.5983882e+02 -2.5012208e+02 4.6763617e+01
+9.5026362e+01 -4.6877295e+01 1.1612068e+01
+2.1749207e+01 -6.5369414e+00 0.0000000e+00
+0 0 0
+0 0 0
+3.1761602e+00 -2.2899001e+00 -8.8755886e-01
+4.0115262e+01 -2.9843490e+01 -1.1716377e+01
+3.7507797e+02 -2.9414767e+02 -1.0094545e+02
+2.7349250e+03 -2.3520574e+03 -5.3867423e+02
+1.3619133e+04 -1.3884172e+04 -3.9040165e+02
+3.2895614e+04 -3.3642768e+04 -1.9569734e+02
+5.4326122e+04 -5.5542401e+04 -6.0137042e+01
+7.1372809e+04 -7.2861694e+04 6.0804266e+01
+8.1159166e+04 -8.2606861e+04 1.5665144e+02
+8.4337032e+04 -8.5552938e+04 2.2558096e+02
+8.2931753e+04 -8.3910121e+04 3.0085008e+02
+7.8241454e+04 -7.9054433e+04 4.2007043e+02
+7.0128366e+04 -7.0797903e+04 6.0932102e+02
+5.7978656e+04 -5.8423677e+04 8.5854093e+02
+4.2354101e+04 -4.2466939e+04 1.0929238e+03
+2.5807365e+04 -2.5640932e+04 1.2191281e+03
+1.1936108e+04 -1.1747471e+04 1.2105761e+03
+3.3716986e+03 -2.7568961e+03 5.9136948e+02
+9.9070523e+02 -5.9454916e+02 2.5017117e+02
+3.6080162e+02 -1.2731484e+02 6.4760898e+01
+1.0058661e+02 -1.9860713e+01 0.0000000e+00
+0 0 0
+0 0 0
+4.9581047e+00 -2.5765503e+00 -1.8873782e+00
+6.9980965e+01 -3.4670681e+01 -2.6147913e+01
+7.9186605e+02 -3.6521046e+02 -2.5152668e+02
+7.7989434e+03 -3.2975259e+03 -1.7652680e+03
+5.9855593e+04 -2.9122076e+04 -1.5145942e+03
+1.4320384e+05 -7.1395105e+04 -7.8296766e+02
+2.3495044e+05 -1.1838595e+05 5.9393111e+02
+3.1023372e+05 -1.5526640e+05 2.1431270e+03
+3.5656664e+05 -1.7573349e+05 3.3878220e+03
+3.7481467e+05 -1.8192187e+05 4.3952514e+03
+3.7172755e+05 -1.7888806e+05 5.6365827e+03
+3.5218775e+05 -1.6956186e+05 7.5790224e+03
+3.1655311e+05 -1.5318943e+05 1.0271728e+04
+2.6374036e+05 -1.2742395e+05 1.2783529e+04
+1.9649035e+05 -9.2363367e+04 1.2983700e+04
+1.2378892e+05 -5.4068395e+04 9.3195971e+03
+5.8148952e+04 -2.4426805e+04 5.2311924e+03
+1.1092792e+04 -5.3238308e+03 2.7507335e+03
+3.3763721e+03 -1.2305009e+03 1.1889434e+03
+1.4216469e+03 -2.8853552e+02 2.9494076e+02
+4.0885240e+02 -4.6252780e+01 0.0000000e+00
+0 0 0
+0 0 0
+8.3155661e+00 -2.5291101e+00 -1.8365834e+00
+1.4654519e+02 -3.9599459e+01 -2.2567601e+01
+2.3738852e+03 -5.7206145e+02 -1.2473046e+02
+4.0355896e+04 -9.1485675e+03 1.9873897e+03
+7.3351064e+05 -1.3792089e+05 9.6600342e+03
+1.9397162e+06 -3.5970255e+05 2.8488675e+04
+3.2864092e+06 -6.0017468e+05 5.8233541e+04
+4.3519268e+06 -7.8337665e+05 9.3274580e+04
+4.9523147e+06 -8.7908266e+05 1.2833052e+05
+5.1419565e+06 -9.0125955e+05 1.6090740e+05
+5.0681650e+06 -8.7938289e+05 1.9005879e+05
+4.8240401e+06 -8.3026232e+05 2.1427204e+05
+4.4000986e+06 -7.4952060e+05 2.2960900e+05
+3.7425772e+06 -6.2447004e+05 2.2721983e+05
+2.8517843e+06 -4.5568673e+05 1.9273948e+05
+1.8305560e+06 -2.6934463e+05 1.1646355e+05
+8.5204496e+05 -1.0994924e+05 2.4349706e+04
+5.7700044e+04 -9.8895085e+03 1.1786678e+04
+1.1929918e+04 -1.2678105e+03 4.4652676e+03
+4.6329284e+03 -2.8027368e+02 1.0037403e+03
+1.2697933e+03 -4.7361281e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.2761499e+01 -2.6575156e+00 -7.3911789e-01
+2.4484579e+02 -4.8357156e+01 -3.9149044e+00
+4.2828964e+03 -8.2655011e+02 1.1445876e+02
+7.5436802e+04 -1.4817648e+04 4.2730372e+03
+1.2789027e+06 -2.2479940e+05 3.2960169e+04
+3.2711098e+06 -6.0342922e+05 9.2755978e+04
+5.5072233e+06 -1.0120292e+06 1.8434054e+05
+7.3166455e+06 -1.3197876e+06 2.9488857e+05
+8.3975567e+06 -1.4771155e+06 4.0980531e+05
+8.8167219e+06 -1.5100861e+06 5.1799917e+05
+8.7887780e+06 -1.4705223e+06 6.1001973e+05
+8.4524778e+06 -1.3874559e+06 6.7471570e+05
+7.7950340e+06 -1.2527433e+06 6.9676776e+05
+6.7349482e+06 -1.0435893e+06 6.5441613e+05
+5.2648402e+06 -7.5970183e+05 5.2263815e+05
+3.5244559e+06 -4.4422393e+05 2.9728074e+05
+1.7699694e+06 -1.7325227e+05 5.4624298e+04
+1.2043643e+05 -1.4004564e+04 2.5656153e+04
+2.5565045e+04 -1.1583313e+03 9.7883960e+03
+1.0028130e+04 -1.9096303e+02 2.1899068e+03
+2.7351876e+03 -3.0633750e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.7476107e+01 -2.5630920e+00 3.0446005e-02
+3.4354104e+02 -4.9255776e+01 5.6116402e+00
+6.1045235e+03 -8.7001007e+02 1.6534811e+02
+1.0789254e+05 -1.5542024e+04 3.3822004e+03
+1.7085924e+06 -2.4943006e+05 6.2773953e+04
+4.3284879e+06 -6.9110405e+05 1.7614927e+05
+7.2902346e+06 -1.1676270e+06 3.4525779e+05
+9.7197384e+06 -1.5223328e+06 5.4970232e+05
+1.1217053e+07 -1.6986452e+06 7.6341991e+05
+1.1854899e+07 -1.7302369e+06 9.6355266e+05
+1.1898118e+07 -1.6803115e+06 1.1289837e+06
+1.1520537e+07 -1.5836375e+06 1.2364723e+06
+1.0707237e+07 -1.4297735e+06 1.2579907e+06
+9.3528070e+06 -1.1902249e+06 1.1591120e+06
+7.4344621e+06 -8.6286328e+05 9.0659239e+05
+5.1037963e+06 -4.9743653e+05 5.0693583e+05
+2.6663829e+06 -1.8549548e+05 9.3179124e+04
+1.8683086e+05 -1.3768895e+04 4.2007209e+04
+4.1331235e+04 -9.1621739e+02 1.6058815e+04
+1.6450810e+04 -1.0216129e+02 3.6013680e+03
+4.4986586e+03 -1.3592987e+01 0.0000000e+00
+0 0 0
+0 0 0
+2.1745968e+01 -2.0658516e+00 4.6211440e-01
+4.3031380e+02 -4.0086797e+01 1.0798349e+01
+7.6761460e+03 -7.0536632e+02 2.0147275e+02
+1.3583682e+05 -1.2379019e+04 3.4426225e+03
+2.0287844e+06 -2.1690416e+05 9.2817382e+04
+5.1140066e+06 -6.1798286e+05 2.5703247e+05
+8.6231334e+06 -1.0511928e+06 4.9692100e+05
+1.1528473e+07 -1.3706097e+06 7.8517970e+05
+1.3352164e+07 -1.5254655e+06 1.0854457e+06
+1.4166080e+07 -1.5488473e+06 1.3642733e+06
+1.4268839e+07 -1.5003884e+06 1.5904646e+06
+1.3861081e+07 -1.4124817e+06 1.7309905e+06
+1.2931288e+07 -1.2750105e+06 1.7479855e+06
+1.1361493e+07 -1.0606499e+06 1.5972486e+06
+9.1173520e+06 -7.6606957e+05 1.2390759e+06
+6.3505818e+06 -4.3618006e+05 6.8877679e+05
+3.3878795e+06 -1.5653108e+05 1.2699727e+05
+2.4468699e+05 -1.0522473e+04 5.6719066e+04
+5.5428048e+04 -6.2495276e+02 2.1713618e+04
+2.2247230e+04 -4.5794307e+01 4.8784478e+03
+6.0975563e+03 -3.8880957e+00 0.0000000e+00
+0 0 0
+0 0 0
+2.5099515e+01 -1.3015055e+00 7.9172983e-01
+4.9764017e+02 -2.5186782e+01 1.6298757e+01
+8.8887935e+03 -4.3923097e+02 2.8513319e+02
+1.5743133e+05 -7.6022459e+03 4.8744556e+03
+2.2488907e+06 -1.4486393e+05 1.1664706e+05
+5.6503296e+06 -4.2109717e+05 3.1834003e+05
+9.5352061e+06 -7.1983152e+05 6.0857474e+05
+1.2769494e+07 -9.3871301e+05 9.5464374e+05
+1.4818390e+07 -1.0429823e+06 1.3128178e+06
+1.5749545e+07 -1.0566152e+06 1.6424776e+06
+1.5882797e+07 -1.0217586e+06 1.9061537e+06
+1.5438813e+07 -9.6113172e+05 2.0652555e+06
+1.4413719e+07 -8.6748881e+05 2.0764952e+06
+1.2687462e+07 -7.2132615e+05 1.8899037e+06
+1.0221905e+07 -5.1966389e+05 1.4612768e+06
+7.1675589e+06 -2.9333365e+05 8.1055799e+05
+3.8568408e+06 -1.0246567e+05 1.4963757e+05
+2.8600626e+05 -6.3089817e+03 6.7015342e+04
+6.5329340e+04 -3.5355375e+02 2.5685691e+04
+2.6302694e+04 -1.7855692e+01 5.7759995e+03
+7.2170301e+03 -3.6230682e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.7228488e+01 -4.3951833e-01 1.0436034e+00
+5.4017156e+02 -8.4785085e+00 2.1211441e+01
+9.6531564e+03 -1.4703547e+02 3.7155974e+02
+1.7104430e+05 -2.5269599e+03 6.4425807e+03
+2.3756531e+06 -5.0649844e+04 1.3102799e+05
+5.9582449e+06 -1.4876377e+05 3.5393186e+05
+1.0059342e+07 -2.5495024e+05 6.7168002e+05
+1.3482657e+07 -3.3251416e+05 1.0481965e+06
+1.5658691e+07 -3.6913889e+05 1.4356295e+06
+1.6651125e+07 -3.7355153e+05 1.7896733e+06
+1.6791562e+07 -3.6091377e+05 2.0700544e+06
+1.6313505e+07 -3.3936856e+05 2.2360943e+06
+1.5220573e+07 -3.0629403e+05 2.2425992e+06
+1.3395485e+07 -2.5464006e+05 2.0372278e+06
+1.0801329e+07 -1.8322252e+05 1.5733186e+06
+7.5891363e+06 -1.0297726e+05 8.7217040e+05
+4.0915157e+06 -3.5485190e+04 1.6124102e+05
+3.0917971e+05 -2.0765416e+03 7.2509915e+04
+7.0658008e+04 -1.1364364e+02 2.7811542e+04
+2.8459555e+04 -4.5987861e+00 6.2561002e+03
+7.8117778e+03 1.4740812e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.7956944e+01 4.3951833e-01 1.1408147e+00
+5.5469609e+02 8.4785085e+00 2.3185779e+01
+9.9139038e+03 1.4703547e+02 4.0713925e+02
+1.7568605e+05 2.5269599e+03 7.0878527e+03
+2.4166892e+06 5.0649844e+04 1.3570811e+05
+6.0579225e+06 1.4876377e+05 3.6524169e+05
+1.0229111e+07 2.5495024e+05 6.9137477e+05
+1.3713490e+07 3.3251416e+05 1.0768968e+06
+1.5929912e+07 3.6913889e+05 1.4726689e+06
+1.6940515e+07 3.7355153e+05 1.8333162e+06
+1.7080691e+07 3.6091377e+05 2.1178625e+06
+1.6588415e+07 3.3936856e+05 2.2852270e+06
+1.5470383e+07 3.0629403e+05 2.2898981e+06
+1.3611056e+07 2.5464006e+05 2.0790086e+06
+1.0974729e+07 1.8322252e+05 1.6051490e+06
+7.7130481e+06 1.0297726e+05 8.8973540e+05
+4.1582338e+06 3.5485190e+04 1.6461468e+05
+3.1641902e+05 2.0765416e+03 7.4149780e+04
+7.2260776e+04 1.1364364e+02 2.8447017e+04
+2.9100841e+04 4.5987861e+00 6.3995190e+03
+7.9883941e+03 -1.4740812e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.7228488e+01 1.3015055e+00 1.0436034e+00
+5.4017156e+02 2.5186782e+01 2.1211441e+01
+9.6531564e+03 4.3923097e+02 3.7155974e+02
+1.7104430e+05 7.6022459e+03 6.4425807e+03
+2.3756531e+06 1.4486393e+05 1.3102799e+05
+5.9582449e+06 4.2109717e+05 3.5393186e+05
+1.0059342e+07 7.1983152e+05 6.7168002e+05
+1.3482657e+07 9.3871301e+05 1.0481965e+06
+1.5658691e+07 1.0429823e+06 1.4356295e+06
+1.6651125e+07 1.0566152e+06 1.7896733e+06
+1.6791562e+07 1.0217586e+06 2.0700544e+06
+1.6313505e+07 9.6113172e+05 2.2360943e+06
+1.5220573e+07 8.6748882e+05 2.2425992e+06
+1.3395485e+07 7.2132615e+05 2.0372278e+06
+1.0801329e+07 5.1966389e+05 1.5733186e+06
+7.5891363e+06 2.9333365e+05 8.7217040e+05
+4.0915157e+06 1.0246567e+05 1.6124102e+05
+3.0917971e+05 6.3089817e+03 7.2509915e+04
+7.0658008e+04 3.5355375e+02 2.7811542e+04
+2.8459555e+04 1.7855692e+01 6.2561002e+03
+7.8117778e+03 3.6230682e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.5099515e+01 2.0658516e+00 7.9172983e-01
+4.9764017e+02 4.0086797e+01 1.6298757e+01
+8.8887935e+03 7.0536632e+02 2.8513319e+02
+1.5743133e+05 1.2379019e+04 4.8744557e+03
+2.2488907e+06 2.1690416e+05 1.1664706e+05
+5.6503296e+06 6.1798286e+05 3.1834003e+05
+9.5352061e+06 1.0511928e+06 6.0857474e+05
+1.2769494e+07 1.3706097e+06 9.5464374e+05
+1.4818390e+07 1.5254655e+06 1.3128178e+06
+1.5749545e+07 1.5488473e+06 1.6424776e+06
+1.5882797e+07 1.5003884e+06 1.9061537e+06
+1.5438813e+07 1.4124817e+06 2.0652555e+06
+1.4413719e+07 1.2750105e+06 2.0764952e+06
+1.2687462e+07 1.0606499e+06 1.8899037e+06
+1.0221905e+07 7.6606957e+05 1.4612768e+06
+7.1675589e+06 4.3618006e+05 8.1055799e+05
+3.8568408e+06 1.5653108e+05 1.4963757e+05
+2.8600626e+05 1.0522473e+04 6.7015342e+04
+6.5329340e+04 6.2495276e+02 2.5685691e+04
+2.6302694e+04 4.5794307e+01 5.7759995e+03
+7.2170301e+03 3.8880957e+00 0.0000000e+00
+0 0 0
+0 0 0
+2.1745968e+01 2.5630920e+00 4.6211439e-01
+4.3031380e+02 4.9255776e+01 1.0798349e+01
+7.6761460e+03 8.7001007e+02 2.0147275e+02
+1.3583682e+05 1.5542024e+04 3.4426225e+03
+2.0287844e+06 2.4943006e+05 9.2817382e+04
+5.1140066e+06 6.9110405e+05 2.5703247e+05
+8.6231334e+06 1.1676270e+06 4.9692100e+05
+1.1528473e+07 1.5223328e+06 7.8517970e+05
+1.3352164e+07 1.6986452e+06 1.0854457e+06
+1.4166080e+07 1.7302369e+06 1.3642733e+06
+1.4268839e+07 1.6803115e+06 1.5904646e+06
+1.3861081e+07 1.5836375e+06 1.7309905e+06
+1.2931288e+07 1.4297735e+06 1.7479855e+06
+1.1361493e+07 1.1902249e+06 1.5972486e+06
+9.1173520e+06 8.6286328e+05 1.2390759e+06
+6.3505818e+06 4.9743653e+05 6.8877679e+05
+3.3878795e+06 1.8549548e+05 1.2699727e+05
+2.4468699e+05 1.3768895e+04 5.6719066e+04
+5.5428048e+04 9.1621739e+02 2.1713618e+04
+2.2247230e+04 1.0216129e+02 4.8784478e+03
+6.0975563e+03 1.3592987e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.7476107e+01 2.6575156e+00 3.0446004e-02
+3.4354104e+02 4.8357156e+01 5.6116402e+00
+6.1045235e+03 8.2655011e+02 1.6534811e+02
+1.0789254e+05 1.4817648e+04 3.3822004e+03
+1.7085924e+06 2.2479940e+05 6.2773953e+04
+4.3284879e+06 6.0342922e+05 1.7614927e+05
+7.2902346e+06 1.0120292e+06 3.4525779e+05
+9.7197384e+06 1.3197876e+06 5.4970232e+05
+1.1217053e+07 1.4771155e+06 7.6341991e+05
+1.1854899e+07 1.5100861e+06 9.6355266e+05
+1.1898118e+07 1.4705223e+06 1.1289837e+06
+1.1520537e+07 1.3874559e+06 1.2364723e+06
+1.0707237e+07 1.2527433e+06 1.2579907e+06
+9.3528070e+06 1.0435893e+06 1.1591120e+06
+7.4344621e+06 7.5970183e+05 9.0659239e+05
+5.1037963e+06 4.4422393e+05 5.0693583e+05
+2.6663829e+06 1.7325227e+05 9.3179124e+04
+1.8683086e+05 1.4004564e+04 4.2007209e+04
+4.1331235e+04 1.1583313e+03 1.6058815e+04
+1.6450810e+04 1.9096303e+02 3.6013680e+03
+4.4986586e+03 3.0633750e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.2761499e+01 2.5291101e+00 -7.3911789e-01
+2.4484579e+02 3.9599459e+01 -3.9149044e+00
+4.2828964e+03 5.7206145e+02 1.1445876e+02
+7.5436802e+04 9.1485675e+03 4.2730372e+03
+1.2789027e+06 1.3792089e+05 3.2960169e+04
+3.2711098e+06 3.5970255e+05 9.2755978e+04
+5.5072233e+06 6.0017468e+05 1.8434054e+05
+7.3166455e+06 7.8337665e+05 2.9488857e+05
+8.3975567e+06 8.7908266e+05 4.0980531e+05
+8.8167219e+06 9.0125955e+05 5.1799917e+05
+8.7887780e+06 8.7938289e+05 6.1001973e+05
+8.4524778e+06 8.3026232e+05 6.7471570e+05
+7.7950340e+06 7.4952060e+05 6.9676776e+05
+6.7349482e+06 6.2447004e+05 6.5441613e+05
+5.2648402e+06 4.5568673e+05 5.2263815e+05
+3.5244559e+06 2.6934463e+05 2.9728074e+05
+1.7699694e+06 1.0994924e+05 5.4624298e+04
+1.2043643e+05 9.8895085e+03 2.5656153e+04
+2.5565045e+04 1.2678105e+03 9.7883960e+03
+1.0028130e+04 2.8027368e+02 2.1899068e+03
+2.7351876e+03 4.7361281e+01 0.0000000e+00
+0 0 0
+0 0 0
+8.3155661e+00 2.5765503e+00 -1.8365834e+00
+1.4654519e+02 3.4670681e+01 -2.2567601e+01
+2.3738852e+03 3.6521046e+02 -1.2473046e+02
+4.0355896e+04 3.2975259e+03 1.9873897e+03
+7.3351064e+05 2.9122076e+04 9.6600342e+03
+1.9397162e+06 7.1395105e+04 2.8488675e+04
+3.2864092e+06 1.1838595e+05 5.8233541e+04
+4.3519268e+06 1.5526640e+05 9.3274580e+04
+4.9523147e+06 1.7573349e+05 1.2833052e+05
+5.1419565e+06 1.8192187e+05 1.6090740e+05
+5.0681650e+06 1.7888806e+05 1.9005879e+05
+4.8240401e+06 1.6956186e+05 2.1427204e+05
+4.4000986e+06 1.5318943e+05 2.2960900e+05
+3.7425772e+06 1.2742395e+05 2.2721983e+05
+2.8517843e+06 9.2363367e+04 1.9273948e+05
+1.8305560e+06 5.4068395e+04 1.1646355e+05
+8.5204496e+05 2.4426805e+04 2.4349706e+04
+5.7700044e+04 5.3238308e+03 1.1786678e+04
+1.1929918e+04 1.2305009e+03 4.4652676e+03
+4.6329284e+03 2.8853552e+02 1.0037403e+03
+1.2697933e+03 4.6252780e+01 0.0000000e+00
+0 0 0
+0 0 0
+4.9581047e+00 2.2899001e+00 -1.8873782e+00
+6.9980965e+01 2.9843490e+01 -2.6147913e+01
+7.9186605e+02 2.9414767e+02 -2.5152668e+02
+7.7989434e+03 2.3520574e+03 -1.7652680e+03
+5.9855593e+04 1.3884172e+04 -1.5145942e+03
+1.4320384e+05 3.3642768e+04 -7.8296766e+02
+2.3495044e+05 5.5542401e+04 5.9393112e+02
+3.1023372e+05 7.2861694e+04 2.1431270e+03
+3.5656664e+05 8.2606861e+04 3.3878220e+03
+3.7481467e+05 8.5552938e+04 4.3952514e+03
+3.7172755e+05 8.3910121e+04 5.6365827e+03
+3.5218775e+05 7.9054433e+04 7.5790224e+03
+3.1655311e+05 7.0797903e+04 1.0271728e+04
+2.6374036e+05 5.8423677e+04 1.2783529e+04
+1.9649035e+05 4.2466939e+04 1.2983700e+04
+1.2378892e+05 2.5640932e+04 9.3195971e+03
+5.8148952e+04 1.1747471e+04 5.2311924e+03
+1.1092792e+04 2.7568961e+03 2.7507335e+03
+3.3763721e+03 5.9454916e+02 1.1889434e+03
+1.4216469e+03 1.2731484e+02 2.9494076e+02
+4.0885240e+02 1.9860713e+01 0.0000000e+00
+0 0 0
+0 0 0
+3.1761602e+00 1.2908378e+00 -8.8755886e-01
+4.0115262e+01 1.6312352e+01 -1.1716377e+01
+3.7507797e+02 1.5164461e+02 -1.0094545e+02
+2.7349250e+03 1.0910633e+03 -5.3867423e+02
+1.3619133e+04 5.3397378e+03 -3.9040165e+02
+3.2895614e+04 1.2935792e+04 -1.9569734e+02
+5.4326122e+04 2.1399583e+04 -6.0137042e+01
+7.1372809e+04 2.8089110e+04 6.0804266e+01
+8.1159166e+04 3.1858750e+04 1.5665144e+02
+8.4337032e+04 3.3002520e+04 2.2558096e+02
+8.2931753e+04 3.2363419e+04 3.0085008e+02
+7.8241454e+04 3.0471754e+04 4.2007043e+02
+7.0128366e+04 2.7258255e+04 6.0932102e+02
+5.7978656e+04 2.2455873e+04 8.5854093e+02
+4.2354101e+04 1.6288025e+04 1.0929238e+03
+2.5807365e+04 9.8031534e+03 1.2191281e+03
+1.1936108e+04 4.4489208e+03 1.2105761e+03
+3.3716986e+03 1.1863304e+03 5.9136948e+02
+9.9070523e+02 2.5012208e+02 2.5017117e+02
+3.6080162e+02 4.6877295e+01 6.4760898e+01
+1.0058661e+02 6.5369414e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.6689370e+00 3.4782664e-01 -1.5614554e-01
+2.0467534e+01 4.3241270e+00 -2.1348557e+00
+1.8190963e+02 3.8961018e+01 -1.8231704e+01
+1.2259914e+03 2.6574902e+02 -8.8926793e+01
+5.4934867e+03 1.2023332e+03 -5.8912088e+01
+1.3276815e+04 2.9098032e+03 -3.6771231e+01
+2.1955728e+04 4.8173470e+03 -3.2503403e+01
+2.8788085e+04 6.3230778e+03 -1.9515272e+01
+3.2632969e+04 7.1726603e+03 -5.4864487e+00
+3.3803454e+04 7.4318370e+03 1.6313630e+00
+3.3162692e+04 7.2886844e+03 6.4917205e+00
+3.1252657e+04 6.8624773e+03 1.5923205e+01
+2.7988086e+04 6.1370255e+03 4.0437936e+01
+2.3073810e+04 5.0513559e+03 9.4485934e+01
+1.6732297e+04 3.6570442e+03 1.8194552e+02
+1.0066353e+04 2.1952518e+03 2.7154339e+02
+4.6197869e+03 1.0000806e+03 2.8355682e+02
+1.4161103e+03 2.9373763e+02 1.2622108e+02
+3.5983882e+02 6.4573301e+01 4.6763617e+01
+9.5026362e+01 1.1601394e+01 1.1612068e+01
+2.1749207e+01 1.4973170e+00 0.0000000e+00
+0 0 0
+0 0 0
+4.6886570e-01 0.0000000e+00 2.4730199e-02
+5.7542654e+00 0.0000000e+00 2.2753936e-01
+5.0990964e+01 0.0000000e+00 1.1770363e+00
+3.4118038e+02 0.0000000e+00 3.4191987e+00
+1.5117444e+03 0.0000000e+00 7.0902862e+00
+3.6536120e+03 0.0000000e+00 5.6697751e-01
+6.0346042e+03 0.0000000e+00 -6.0938829e+00
+7.9039667e+03 0.0000000e+00 -5.7594431e+00
+8.9565147e+03 0.0000000e+00 -3.3854229e+00
+9.2767673e+03 0.0000000e+00 -2.4042734e+00
+9.0994146e+03 0.0000000e+00 -2.0202537e+00
+8.5737704e+03 0.0000000e+00 -1.0505505e+00
+7.6753454e+03 0.0000000e+00 2.5722911e+00
+6.3211711e+03 0.0000000e+00 1.2251788e+01
+4.5740961e+03 0.0000000e+00 2.9195879e+01
+2.7449998e+03 0.0000000e+00 4.5947260e+01
+1.2656745e+03 0.0000000e+00 4.5397608e+01
+4.0680344e+02 0.0000000e+00 1.9641208e+01
+1.0014983e+02 0.0000000e+00 6.5054415e+00
+2.1700718e+01 0.0000000e+00 1.4957820e+00
+3.8910910e+00 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.3474530e+00 -1.1218538e+00 2.4326652e-01
+1.8414481e+01 -1.5222741e+01 2.8057924e+00
+1.8590025e+02 -1.5220326e+02 2.0099764e+01
+1.4317037e+03 -1.1552216e+03 8.4798104e+01
+7.2218790e+03 -5.7227104e+03 9.7373960e+01
+1.7927712e+04 -1.4202441e+04 2.5715540e+01
+2.9729463e+04 -2.3640809e+04 -2.8334766e+01
+3.8986944e+04 -3.1084030e+04 -2.7282899e+01
+4.4259215e+04 -3.5316584e+04 -1.3400041e+01
+4.5894740e+04 -3.6623042e+04 -8.3311702e+00
+4.4982530e+04 -3.5885402e+04 -6.0445476e+00
+4.2261439e+04 -3.3691424e+04 -2.2891622e+00
+3.7657802e+04 -2.9994491e+04 9.7454591e+00
+3.0829317e+04 -2.4543183e+04 4.4782246e+01
+2.2142914e+04 -1.7635630e+04 1.1159376e+02
+1.3152915e+04 -1.0478869e+04 1.8254798e+02
+5.9687880e+03 -4.7032098e+03 1.8264439e+02
+1.8653029e+03 -1.3506605e+03 7.4805438e+01
+4.3681270e+02 -2.8622371e+02 2.4366275e+01
+8.9007406e+01 -4.9114724e+01 6.1743110e+00
+1.6243187e+01 -6.1777845e+00 0.0000000e+00
+0 0 0
+0 0 0
+4.3961290e+00 -3.8634536e+00 1.4407847e-02
+5.8831922e+01 -5.2465717e+01 -1.1070046e+00
+5.8012656e+02 -5.3073808e+02 -2.0789111e+01
+4.3522769e+03 -4.1515500e+03 -1.5074615e+02
+2.1375453e+04 -2.1727158e+04 -2.8265697e+01
+5.2953770e+04 -5.3844587e+04 -6.3074984e+01
+8.8017409e+04 -8.9631597e+04 -1.3396729e+02
+1.1559446e+05 -1.1792490e+05 -9.9471977e+01
+1.3123732e+05 -1.3397938e+05 -4.1028535e+01
+1.3605090e+05 -1.3889732e+05 -1.4193192e+01
+1.3333828e+05 -1.3607517e+05 -2.0732188e-02
+1.2528233e+05 -1.2774363e+05 2.2510175e+01
+1.1166559e+05 -1.1373780e+05 8.8316252e+01
+9.1486792e+04 -9.3128144e+04 2.6029495e+02
+6.5813329e+04 -6.7033173e+04 5.7680630e+02
+3.9162779e+04 -3.9934371e+04 9.3588282e+02
+1.7685546e+04 -1.7846460e+04 1.0133744e+03
+5.2783449e+03 -4.6401331e+03 4.4061238e+02
+1.2855945e+03 -9.4341095e+02 1.7204392e+02
+3.4112997e+02 -1.7238113e+02 4.9206710e+01
+8.9267902e+01 -2.4489769e+01 0.0000000e+00
+0 0 0
+0 0 0
+7.4297244e+00 -6.3575998e+00 -1.7594180e+00
+9.9905082e+01 -8.7916915e+01 -2.6098039e+01
+1.0022144e+03 -9.2848799e+02 -2.5548451e+02
+7.7949851e+03 -7.9342039e+03 -1.5328907e+03
+4.0624863e+04 -4.9302066e+04 -9.6371270e+02
+1.0042728e+05 -1.2181796e+05 -5.2200166e+02
+1.6691375e+05 -2.0239877e+05 -3.4245735e+02
+2.1947295e+05 -2.6625531e+05 -1.1219259e+02
+2.4940194e+05 -3.0244579e+05 1.1144428e+02
+2.5875100e+05 -3.1346156e+05 2.6170848e+02
+2.5378279e+05 -3.0705833e+05 3.9383672e+02
+2.3859732e+05 -2.8828529e+05 5.7962072e+02
+2.1285074e+05 -2.5679510e+05 9.1454791e+02
+1.7476925e+05 -2.1051769e+05 1.5134967e+03
+1.2636631e+05 -1.5192691e+05 2.3950247e+03
+7.5925136e+04 -9.1007073e+04 3.3499560e+03
+3.4695352e+04 -4.1133491e+04 3.8777430e+03
+9.9845223e+03 -9.3575301e+03 1.9823163e+03
+3.0768321e+03 -1.9921506e+03 9.4492912e+02
+1.2907231e+03 -4.4490757e+02 2.8753406e+02
+4.3940992e+02 -7.5779014e+01 0.0000000e+00
+0 0 0
+0 0 0
+9.3898610e+00 -6.5161889e+00 -4.2731672e+00
+1.3338987e+02 -9.1469601e+01 -6.4129384e+01
+1.4870687e+03 -1.0109259e+03 -6.7689416e+02
+1.3933841e+04 -9.5828888e+03 -5.1631071e+03
+9.8251097e+04 -8.9091885e+04 -3.7687919e+03
+2.3896611e+05 -2.1901684e+05 -2.3321777e+03
+3.9443557e+05 -3.6373422e+05 -4.8185791e+02
+5.2026794e+05 -4.7851454e+05 1.7431542e+03
+5.9546831e+05 -5.4342146e+05 3.8171466e+03
+6.2277094e+05 -5.6325467e+05 5.6539857e+03
+6.1494534e+05 -5.5229310e+05 7.6709754e+03
+5.8087360e+05 -5.1966548e+05 1.0365319e+04
+5.2074283e+05 -4.6461574e+05 1.3996242e+04
+4.3206190e+05 -3.8283571e+05 1.7992722e+04
+3.1984704e+05 -2.7756074e+05 2.0269855e+04
+2.0102793e+05 -1.6638154e+05 1.8405312e+04
+9.7681593e+04 -7.7971101e+04 1.5710280e+04
+2.4055730e+04 -1.5963860e+04 9.3536722e+03
+1.0023270e+04 -3.9463602e+03 4.6609843e+03
+5.3122553e+03 -1.0340453e+03 1.3595136e+03
+1.8792733e+03 -1.8668634e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.1561555e+01 -5.2638227e+00 -4.4983550e+00
+1.9496841e+02 -7.9993204e+01 -6.4397978e+01
+2.9725615e+03 -1.0833466e+03 -5.9065359e+02
+4.7539998e+04 -1.5899980e+04 -1.4576649e+03
+8.9670101e+05 -2.6233422e+05 8.5943010e+03
+2.3737133e+06 -6.7626965e+05 3.1850070e+04
+4.0167019e+06 -1.1296914e+06 6.7514564e+04
+5.3111773e+06 -1.4814010e+06 1.1115058e+05
+6.0326410e+06 -1.6706546e+06 1.5805746e+05
+6.2494763e+06 -1.7180697e+06 2.0535273e+05
+6.1455500e+06 -1.6754698e+06 2.5114444e+05
+5.8373767e+06 -1.5745435e+06 2.9268591e+05
+5.3138569e+06 -1.4105039e+06 3.2481586e+05
+4.5128751e+06 -1.1652303e+06 3.3691255e+05
+3.4470982e+06 -8.4550155e+05 3.0953950e+05
+2.2557874e+06 -5.0190891e+05 2.1983555e+05
+1.1265456e+06 -2.1082418e+05 7.8187959e+04
+9.7779455e+04 -1.9253953e+04 4.1398640e+04
+3.4885304e+04 -3.4716873e+03 1.7968582e+04
+1.7800711e+04 -9.6877203e+02 4.7355267e+03
+6.0075369e+03 -1.8890328e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.4145853e+01 -4.4118356e+00 -2.2363415e+00
+2.6433359e+02 -7.6408574e+01 -2.5308771e+01
+4.5083277e+03 -1.2341209e+03 -9.9965752e+01
+7.7968038e+04 -2.1094455e+04 2.5632730e+03
+1.3564317e+06 -3.6867171e+05 3.1371765e+04
+3.5122029e+06 -9.8291303e+05 9.6922081e+04
+5.9250762e+06 -1.6516662e+06 2.0104401e+05
+7.8687461e+06 -2.1646317e+06 3.3217404e+05
+9.0175518e+06 -2.4350387e+06 4.7656306e+05
+9.4494774e+06 -2.4970363e+06 6.2277424e+05
+9.4065758e+06 -2.4301126e+06 7.5961912e+05
+9.0468949e+06 -2.2819725e+06 8.7263100e+05
+8.3603331e+06 -2.0443613e+06 9.4118935e+05
+7.2644953e+06 -1.6881164e+06 9.3452845e+05
+5.7635914e+06 -1.2204750e+06 8.1075072e+05
+4.0102689e+06 -7.1362176e+05 5.3665062e+05
+2.2103295e+06 -2.8228774e+05 1.6775410e+05
+1.9886950e+05 -2.1252275e+04 9.1319349e+04
+7.5897455e+04 -2.5016821e+03 4.0016934e+04
+3.9189052e+04 -6.0434124e+02 1.0491582e+04
+1.3155019e+04 -1.1715261e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.7219681e+01 -3.6740835e+00 -4.8132558e-01
+3.3553962e+02 -6.8317718e+01 -5.7076171e-01
+5.9202566e+03 -1.1683391e+03 1.1791433e+02
+1.0416321e+05 -2.0319490e+04 3.0722750e+03
+1.6606435e+06 -3.8164680e+05 6.3996234e+04
+4.2719263e+06 -1.0476143e+06 1.8525908e+05
+7.2224112e+06 -1.7725088e+06 3.7392501e+05
+9.6396832e+06 -2.3236075e+06 6.1295601e+05
+1.1125830e+07 -2.6086208e+06 8.7776058e+05
+1.1759131e+07 -2.6680627e+06 1.1445556e+06
+1.1814711e+07 -2.5908838e+06 1.3887345e+06
+1.1476442e+07 -2.4297294e+06 1.5805856e+06
+1.0736779e+07 -2.1748731e+06 1.6815556e+06
+9.4991921e+06 -1.7929235e+06 1.6399776e+06
+7.7501603e+06 -1.2896806e+06 1.3934850e+06
+5.6221812e+06 -7.4238295e+05 9.0386133e+05
+3.2903704e+06 -2.7985985e+05 2.7744596e+05
+3.1084887e+05 -1.8403835e+04 1.5057950e+05
+1.2465163e+05 -1.5633869e+03 6.6320810e+04
+6.5013667e+04 -2.7731155e+02 1.7430923e+04
+2.1861254e+04 -4.8825179e+01 0.0000000e+00
+0 0 0
+0 0 0
+2.0250468e+01 -2.7534147e+00 5.7483077e-01
+4.0021194e+02 -5.2423166e+01 1.4782130e+01
+7.1353730e+03 -9.0543233e+02 2.9264835e+02
+1.2628224e+05 -1.5626547e+04 5.1542853e+03
+1.8742601e+06 -3.2070718e+05 9.8738910e+04
+4.7910845e+06 -9.0015657e+05 2.7420327e+05
+8.1158687e+06 -1.5319244e+06 5.4088363e+05
+1.0877589e+07 -2.0092937e+06 8.7745399e+05
+1.2623794e+07 -2.2525828e+06 1.2497862e+06
+1.3424530e+07 -2.2992775e+06 1.6225514e+06
+1.3570340e+07 -2.2286474e+06 1.9588145e+06
+1.3261724e+07 -2.0872411e+06 2.2156834e+06
+1.2498520e+07 -1.8663236e+06 2.3399015e+06
+1.1181290e+07 -1.5359289e+06 2.2631096e+06
+9.2840070e+06 -1.0999386e+06 1.9067126e+06
+6.9116931e+06 -6.2522994e+05 1.2284483e+06
+4.1879575e+06 -2.2733387e+05 3.7584426e+05
+4.1074914e+05 -1.3161898e+04 2.0454018e+05
+1.6897010e+05 -8.8079728e+02 9.0315541e+04
+8.8602042e+04 -9.6085409e+01 2.3779502e+04
+2.9840917e+04 -1.2683927e+01 0.0000000e+00
+0 0 0
+0 0 0
+2.2744391e+01 -1.6823914e+00 1.2841002e+00
+4.5155255e+02 -3.2194255e+01 2.7142806e+01
+8.0791965e+03 -5.5504798e+02 4.8635548e+02
+1.4334998e+05 -9.5008058e+03 8.4419656e+03
+2.0202024e+06 -2.1069906e+05 1.2712217e+05
+5.1336850e+06 -6.0011894e+05 3.4372911e+05
+8.7051888e+06 -1.0254574e+06 6.6727934e+05
+1.1700033e+07 -1.3456758e+06 1.0731224e+06
+1.3626032e+07 -1.5073427e+06 1.5202407e+06
+1.4542139e+07 -1.5366029e+06 1.9649726e+06
+1.4744806e+07 -1.4875490e+06 2.3618653e+06
+1.4445745e+07 -1.3918204e+06 2.6595127e+06
+1.3654795e+07 -1.2434983e+06 2.7956110e+06
+1.2277623e+07 -1.0221104e+06 2.6916310e+06
+1.0284510e+07 -7.2977552e+05 2.2588629e+06
+7.7606521e+06 -4.1136166e+05 1.4519014e+06
+4.7829040e+06 -1.4613057e+05 4.4463492e+05
+4.8222346e+05 -7.6502759e+03 2.4290610e+05
+2.0040675e+05 -4.3942826e+02 1.0738732e+05
+1.0532215e+05 -2.4231779e+01 2.8296009e+04
+3.5500819e+04 -4.6436568e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.4364866e+01 -5.6248240e-01 1.7437136e+00
+4.8441224e+02 -1.0766390e+01 3.6075166e+01
+8.6775833e+03 -1.8518537e+02 6.4178566e+02
+1.5412690e+05 -3.1560450e+03 1.1214421e+04
+2.1047043e+06 -7.3181925e+04 1.4464607e+05
+5.3274727e+06 -2.0994414e+05 3.8524343e+05
+9.0377655e+06 -3.5948020e+05 7.4084248e+05
+1.2165059e+07 -4.7187196e+05 1.1846363e+06
+1.4192706e+07 -5.2835999e+05 1.6716384e+06
+1.5170931e+07 -5.3828650e+05 2.1535165e+06
+1.5397983e+07 -5.2078794e+05 2.5803345e+06
+1.5092449e+07 -4.8703886e+05 2.8966088e+06
+1.4272600e+07 -4.3495846e+05 3.0360421e+06
+1.2851005e+07 -3.5730460e+05 2.9157168e+06
+1.0799626e+07 -2.5473722e+05 2.4423812e+06
+8.1944122e+06 -1.4300686e+05 1.5687504e+06
+5.0828177e+06 -5.0239026e+04 4.8155687e+05
+5.2183292e+05 -2.4901811e+03 2.6374357e+05
+2.1743637e+05 -1.3320581e+02 1.1665898e+05
+1.1435125e+05 -3.5591410e+00 3.0746615e+04
+3.8557109e+04 8.1984365e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.4924648e+01 5.6248240e-01 1.9073318e+00
+4.9569846e+02 1.0766390e+01 3.9372184e+01
+8.8823051e+03 1.8518537e+02 7.0060024e+02
+1.5780556e+05 3.1560450e+03 1.2268997e+04
+2.1321583e+06 7.3181925e+04 1.5043602e+05
+5.3897793e+06 2.0994414e+05 3.9869096e+05
+9.1445491e+06 3.5948020e+05 7.6429244e+05
+1.2314355e+07 4.7187196e+05 1.2196829e+06
+1.4374271e+07 5.2835999e+05 1.7186044e+06
+1.5371279e+07 5.3828650e+05 2.2112669e+06
+1.5603974e+07 5.2078794e+05 2.6464078e+06
+1.5293302e+07 4.8703886e+05 2.9674428e+06
+1.4460812e+07 4.3495846e+05 3.1070965e+06
+1.3022129e+07 3.5730460e+05 2.9814136e+06
+1.0950657e+07 2.5473722e+05 2.4960115e+06
+8.3200493e+06 1.4300686e+05 1.6029967e+06
+5.1680967e+06 5.0239026e+04 4.9265575e+05
+5.3404690e+05 2.4901811e+03 2.7004751e+05
+2.2257857e+05 1.3320581e+02 1.1946330e+05
+1.1706974e+05 3.5591410e+00 3.1487287e+04
+3.9477320e+04 -8.1984365e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.4364866e+01 1.6823914e+00 1.7437136e+00
+4.8441224e+02 3.2194255e+01 3.6075166e+01
+8.6775833e+03 5.5504798e+02 6.4178566e+02
+1.5412690e+05 9.5008058e+03 1.1214421e+04
+2.1047043e+06 2.1069906e+05 1.4464607e+05
+5.3274727e+06 6.0011894e+05 3.8524343e+05
+9.0377655e+06 1.0254574e+06 7.4084248e+05
+1.2165059e+07 1.3456758e+06 1.1846363e+06
+1.4192706e+07 1.5073427e+06 1.6716384e+06
+1.5170931e+07 1.5366029e+06 2.1535165e+06
+1.5397983e+07 1.4875490e+06 2.5803345e+06
+1.5092449e+07 1.3918204e+06 2.8966088e+06
+1.4272600e+07 1.2434983e+06 3.0360421e+06
+1.2851005e+07 1.0221104e+06 2.9157168e+06
+1.0799626e+07 7.2977552e+05 2.4423812e+06
+8.1944122e+06 4.1136166e+05 1.5687504e+06
+5.0828177e+06 1.4613057e+05 4.8155687e+05
+5.2183292e+05 7.6502759e+03 2.6374357e+05
+2.1743637e+05 4.3942826e+02 1.1665898e+05
+1.1435125e+05 2.4231779e+01 3.0746615e+04
+3.8557109e+04 4.6436568e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.2744391e+01 2.7534147e+00 1.2841002e+00
+4.5155255e+02 5.2423166e+01 2.7142806e+01
+8.0791965e+03 9.0543233e+02 4.8635548e+02
+1.4334998e+05 1.5626547e+04 8.4419656e+03
+2.0202024e+06 3.2070718e+05 1.2712217e+05
+5.1336850e+06 9.0015657e+05 3.4372911e+05
+8.7051888e+06 1.5319244e+06 6.6727934e+05
+1.1700033e+07 2.0092937e+06 1.0731224e+06
+1.3626032e+07 2.2525828e+06 1.5202407e+06
+1.4542139e+07 2.2992775e+06 1.9649726e+06
+1.4744806e+07 2.2286474e+06 2.3618653e+06
+1.4445745e+07 2.0872411e+06 2.6595127e+06
+1.3654795e+07 1.8663236e+06 2.7956110e+06
+1.2277623e+07 1.5359289e+06 2.6916310e+06
+1.0284510e+07 1.0999386e+06 2.2588629e+06
+7.7606521e+06 6.2522994e+05 1.4519014e+06
+4.7829040e+06 2.2733387e+05 4.4463492e+05
+4.8222346e+05 1.3161898e+04 2.4290610e+05
+2.0040675e+05 8.8079728e+02 1.0738732e+05
+1.0532215e+05 9.6085409e+01 2.8296009e+04
+3.5500819e+04 1.2683927e+01 0.0000000e+00
+0 0 0
+0 0 0
+2.0250468e+01 3.6740835e+00 5.7483077e-01
+4.0021194e+02 6.8317718e+01 1.4782130e+01
+7.1353730e+03 1.1683391e+03 2.9264835e+02
+1.2628224e+05 2.0319490e+04 5.1542853e+03
+1.8742601e+06 3.8164680e+05 9.8738910e+04
+4.7910845e+06 1.0476143e+06 2.7420327e+05
+8.1158687e+06 1.7725088e+06 5.4088363e+05
+1.0877589e+07 2.3236075e+06 8.7745399e+05
+1.2623794e+07 2.6086208e+06 1.2497862e+06
+1.3424530e+07 2.6680627e+06 1.6225514e+06
+1.3570340e+07 2.5908838e+06 1.9588145e+06
+1.3261724e+07 2.4297294e+06 2.2156834e+06
+1.2498520e+07 2.1748731e+06 2.3399015e+06
+1.1181290e+07 1.7929235e+06 2.2631096e+06
+9.2840070e+06 1.2896806e+06 1.9067126e+06
+6.9116931e+06 7.4238295e+05 1.2284483e+06
+4.1879575e+06 2.7985985e+05 3.7584426e+05
+4.1074914e+05 1.8403835e+04 2.0454018e+05
+1.6897010e+05 1.5633869e+03 9.0315541e+04
+8.8602042e+04 2.7731155e+02 2.3779502e+04
+2.9840917e+04 4.8825179e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.7219681e+01 4.4118356e+00 -4.8132558e-01
+3.3553962e+02 7.6408574e+01 -5.7076172e-01
+5.9202566e+03 1.2341209e+03 1.1791433e+02
+1.0416321e+05 2.1094455e+04 3.0722750e+03
+1.6606435e+06 3.6867171e+05 6.3996234e+04
+4.2719263e+06 9.8291303e+05 1.8525908e+05
+7.2224112e+06 1.6516662e+06 3.7392501e+05
+9.6396832e+06 2.1646317e+06 6.1295601e+05
+1.1125830e+07 2.4350387e+06 8.7776058e+05
+1.1759131e+07 2.4970363e+06 1.1445556e+06
+1.1814711e+07 2.4301126e+06 1.3887345e+06
+1.1476442e+07 2.2819725e+06 1.5805856e+06
+1.0736779e+07 2.0443613e+06 1.6815556e+06
+9.4991921e+06 1.6881164e+06 1.6399776e+06
+7.7501603e+06 1.2204750e+06 1.3934850e+06
+5.6221812e+06 7.1362176e+05 9.0386133e+05
+3.2903704e+06 2.8228774e+05 2.7744596e+05
+3.1084887e+05 2.1252275e+04 1.5057950e+05
+1.2465163e+05 2.5016821e+03 6.6320810e+04
+6.5013667e+04 6.0434124e+02 1.7430923e+04
+2.1861254e+04 1.1715261e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.4145853e+01 5.2638227e+00 -2.2363415e+00
+2.6433359e+02 7.9993204e+01 -2.5308771e+01
+4.5083277e+03 1.0833466e+03 -9.9965752e+01
+7.7968038e+04 1.5899980e+04 2.5632730e+03
+1.3564317e+06 2.6233422e+05 3.1371765e+04
+3.5122029e+06 6.7626965e+05 9.6922081e+04
+5.9250762e+06 1.1296914e+06 2.0104401e+05
+7.8687461e+06 1.4814010e+06 3.3217404e+05
+9.0175518e+06 1.6706546e+06 4.7656306e+05
+9.4494774e+06 1.7180697e+06 6.2277424e+05
+9.4065758e+06 1.6754698e+06 7.5961912e+05
+9.0468949e+06 1.5745435e+06 8.7263100e+05
+8.3603331e+06 1.4105039e+06 9.4118935e+05
+7.2644953e+06 1.1652303e+06 9.3452845e+05
+5.7635914e+06 8.4550155e+05 8.1075072e+05
+4.0102689e+06 5.0190891e+05 5.3665062e+05
+2.2103295e+06 2.1082418e+05 1.6775410e+05
+1.9886950e+05 1.9253953e+04 9.1319349e+04
+7.5897455e+04 3.4716873e+03 4.0016934e+04
+3.9189052e+04 9.6877203e+02 1.0491582e+04
+1.3155019e+04 1.8890328e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.1561555e+01 6.5161889e+00 -4.4983550e+00
+1.9496841e+02 9.1469601e+01 -6.4397978e+01
+2.9725615e+03 1.0109259e+03 -5.9065359e+02
+4.7539998e+04 9.5828888e+03 -1.4576649e+03
+8.9670101e+05 8.9091885e+04 8.5943010e+03
+2.3737133e+06 2.1901684e+05 3.1850070e+04
+4.0167019e+06 3.6373422e+05 6.7514564e+04
+5.3111773e+06 4.7851454e+05 1.1115058e+05
+6.0326410e+06 5.4342146e+05 1.5805746e+05
+6.2494763e+06 5.6325467e+05 2.0535273e+05
+6.1455500e+06 5.5229310e+05 2.5114444e+05
+5.8373767e+06 5.1966548e+05 2.9268591e+05
+5.3138569e+06 4.6461574e+05 3.2481586e+05
+4.5128751e+06 3.8283571e+05 3.3691255e+05
+3.4470982e+06 2.7756074e+05 3.0953950e+05
+2.2557874e+06 1.6638154e+05 2.1983555e+05
+1.1265456e+06 7.7971101e+04 7.8187959e+04
+9.7779455e+04 1.5963860e+04 4.1398640e+04
+3.4885304e+04 3.9463602e+03 1.7968582e+04
+1.7800711e+04 1.0340453e+03 4.7355267e+03
+6.0075369e+03 1.8668634e+02 0.0000000e+00
+0 0 0
+0 0 0
+9.3898610e+00 6.3575998e+00 -4.2731672e+00
+1.3338987e+02 8.7916915e+01 -6.4129384e+01
+1.4870687e+03 9.2848799e+02 -6.7689416e+02
+1.3933841e+04 7.9342039e+03 -5.1631071e+03
+9.8251097e+04 4.9302066e+04 -3.7687919e+03
+2.3896611e+05 1.2181796e+05 -2.3321777e+03
+3.9443557e+05 2.0239877e+05 -4.8185790e+02
+5.2026794e+05 2.6625531e+05 1.7431542e+03
+5.9546831e+05 3.0244579e+05 3.8171466e+03
+6.2277094e+05 3.1346156e+05 5.6539857e+03
+6.1494534e+05 3.0705833e+05 7.6709754e+03
+5.8087360e+05 2.8828529e+05 1.0365319e+04
+5.2074283e+05 2.5679510e+05 1.3996242e+04
+4.3206190e+05 2.1051769e+05 1.7992722e+04
+3.1984704e+05 1.5192691e+05 2.0269855e+04
+2.0102793e+05 9.1007073e+04 1.8405312e+04
+9.7681593e+04 4.1133491e+04 1.5710280e+04
+2.4055730e+04 9.3575301e+03 9.3536722e+03
+1.0023270e+04 1.9921506e+03 4.6609843e+03
+5.3122553e+03 4.4490757e+02 1.3595136e+03
+1.8792733e+03 7.5779014e+01 0.0000000e+00
+0 0 0
+0 0 0
+7.4297244e+00 3.8634536e+00 -1.7594180e+00
+9.9905082e+01 5.2465717e+01 -2.6098039e+01
+1.0022144e+03 5.3073808e+02 -2.5548451e+02
+7.7949851e+03 4.1515500e+03 -1.5328907e+03
+4.0624863e+04 2.1727158e+04 -9.6371270e+02
+1.0042728e+05 5.3844587e+04 -5.2200166e+02
+1.6691375e+05 8.9631597e+04 -3.4245735e+02
+2.1947295e+05 1.1792490e+05 -1.1219259e+02
+2.4940194e+05 1.3397938e+05 1.1144428e+02
+2.5875100e+05 1.3889732e+05 2.6170848e+02
+2.5378279e+05 1.3607517e+05 3.9383672e+02
+2.3859732e+05 1.2774363e+05 5.7962072e+02
+2.1285074e+05 1.1373780e+05 9.1454791e+02
+1.7476925e+05 9.3128144e+04 1.5134967e+03
+1.2636631e+05 6.7033173e+04 2.3950247e+03
+7.5925136e+04 3.9934371e+04 3.3499560e+03
+3.4695352e+04 1.7846460e+04 3.8777430e+03
+9.9845223e+03 4.6401331e+03 1.9823163e+03
+3.0768321e+03 9.4341095e+02 9.4492912e+02
+1.2907231e+03 1.7238113e+02 2.8753406e+02
+4.3940992e+02 2.4489769e+01 0.0000000e+00
+0 0 0
+0 0 0
+4.3961290e+00 1.1218538e+00 1.4407847e-02
+5.8831922e+01 1.5222741e+01 -1.1070046e+00
+5.8012656e+02 1.5220326e+02 -2.0789111e+01
+4.3522769e+03 1.1552216e+03 -1.5074615e+02
+2.1375453e+04 5.7227104e+03 -2.8265697e+01
+5.2953770e+04 1.4202441e+04 -6.3074984e+01
+8.8017409e+04 2.3640809e+04 -1.3396729e+02
+1.1559446e+05 3.1084030e+04 -9.9471977e+01
+1.3123732e+05 3.5316584e+04 -4.1028535e+01
+1.3605090e+05 3.6623042e+04 -1.4193192e+01
+1.3333828e+05 3.5885402e+04 -2.0732178e-02
+1.2528233e+05 3.3691424e+04 2.2510175e+01
+1.1166559e+05 2.9994491e+04 8.8316252e+01
+9.1486792e+04 2.4543183e+04 2.6029495e+02
+6.5813329e+04 1.7635630e+04 5.7680630e+02
+3.9162779e+04 1.0478869e+04 9.3588282e+02
+1.7685546e+04 4.7032098e+03 1.0133744e+03
+5.2783449e+03 1.3506605e+03 4.4061238e+02
+1.2855945e+03 2.8622371e+02 1.7204392e+02
+3.4112997e+02 4.9114724e+01 4.9206710e+01
+8.9267902e+01 6.1777845e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.3474530e+00 0.0000000e+00 2.4326652e-01
+1.8414481e+01 0.0000000e+00 2.8057924e+00
+1.8590025e+02 0.0000000e+00 2.0099764e+01
+1.4317037e+03 0.0000000e+00 8.4798104e+01
+7.2218790e+03 0.0000000e+00 9.7373960e+01
+1.7927712e+04 0.0000000e+00 2.5715540e+01
+2.9729463e+04 0.0000000e+00 -2.8334766e+01
+3.8986944e+04 0.0000000e+00 -2.7282899e+01
+4.4259215e+04 0.0000000e+00 -1.3400041e+01
+4.5894740e+04 0.0000000e+00 -8.3311702e+00
+4.4982530e+04 0.0000000e+00 -6.0445476e+00
+4.2261439e+04 0.0000000e+00 -2.2891623e+00
+3.7657802e+04 0.0000000e+00 9.7454591e+00
+3.0829317e+04 0.0000000e+00 4.4782246e+01
+2.2142914e+04 0.0000000e+00 1.1159376e+02
+1.3152915e+04 0.0000000e+00 1.8254798e+02
+5.9687880e+03 0.0000000e+00 1.8264439e+02
+1.8653029e+03 0.0000000e+00 7.4805438e+01
+4.3681270e+02 0.0000000e+00 2.4366275e+01
+8.9007406e+01 0.0000000e+00 6.1743110e+00
+1.6243187e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.3089762e+00 -3.2298691e+00 1.2683458e+00
+5.1299543e+01 -4.8565146e+01 1.6948430e+01
+6.0605623e+02 -5.4986137e+02 1.4665383e+02
+5.5932568e+03 -4.7742233e+03 7.5932407e+02
+3.4030220e+04 -2.6789856e+04 7.4083901e+02
+8.6767570e+04 -6.8287877e+04 1.8885783e+02
+1.4419267e+05 -1.1413077e+05 -1.4358571e+02
+1.8910030e+05 -1.5014208e+05 -1.1486024e+02
+2.1484898e+05 -1.7067173e+05 -3.2894457e+01
+2.2282731e+05 -1.7695555e+05 -9.9093437e+00
+2.1811432e+05 -1.7314602e+05 4.3203312e+00
+2.0439142e+05 -1.6214808e+05 2.2422498e+01
+1.8146268e+05 -1.4384371e+05 6.1254681e+01
+1.4784939e+05 -1.1713942e+05 1.8059818e+02
+1.0549587e+05 -8.3602197e+04 4.2983888e+02
+6.2031051e+04 -4.9161685e+04 7.1338789e+02
+2.7676840e+04 -2.1708964e+04 7.1429957e+02
+8.3976769e+03 -6.0894667e+03 2.7139223e+02
+1.8642878e+03 -1.2413430e+03 8.5260114e+01
+3.5176048e+02 -2.0214957e+02 2.4656606e+01
+6.5560977e+01 -2.4661185e+01 0.0000000e+00
+0 0 0
+0 0 0
+9.8198847e+00 -1.0193249e+01 1.5396242e+00
+1.4526852e+02 -1.5031359e+02 1.6851472e+01
+1.6187679e+03 -1.6776714e+03 1.0602014e+02
+1.3879355e+04 -1.4529981e+04 3.3469950e+02
+7.7241372e+04 -8.3004471e+04 6.8339623e+02
+1.9634866e+05 -2.1099544e+05 -3.9327888e+00
+3.2757987e+05 -3.5315696e+05 -5.4019961e+02
+4.3046804e+05 -4.6517527e+05 -3.8058490e+02
+4.8906717e+05 -5.2877246e+05 -1.0969396e+02
+5.0700468e+05 -5.4801753e+05 -1.4929761e+00
+4.9621165e+05 -5.3607744e+05 5.6554723e+01
+4.6500006e+05 -5.0193690e+05 1.2764159e+02
+4.1290367e+05 -4.4526207e+05 3.0792288e+02
+3.3659718e+05 -3.6276446e+05 8.2257691e+02
+2.4045254e+05 -2.5927434e+05 1.8555137e+03
+1.4155415e+05 -1.5279746e+05 3.0999205e+03
+6.2794735e+04 -6.7100324e+04 3.3820905e+03
+1.8152829e+04 -1.6993666e+04 1.4118055e+03
+4.1875175e+03 -3.3175888e+03 5.8612834e+02
+1.1094025e+03 -5.8700303e+02 2.0270928e+02
+3.5303045e+02 -8.5714456e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.4967909e+01 -1.5459595e+01 -2.2718387e+00
+2.1750090e+02 -2.2853602e+02 -4.1645234e+01
+2.3937059e+03 -2.6114404e+03 -4.9936775e+02
+2.0491746e+04 -2.4145658e+04 -3.5804508e+03
+1.1593919e+05 -1.6008301e+05 -1.8162376e+03
+2.9392329e+05 -4.0510216e+05 -1.2055252e+03
+4.9112118e+05 -6.7735927e+05 -1.2106399e+03
+6.4626973e+05 -8.9254902e+05 -6.3367128e+02
+7.3438051e+05 -1.0143928e+06 8.1365994e+00
+7.6123448e+05 -1.0508575e+06 3.6463986e+02
+7.4511179e+05 -1.0276582e+06 6.1641050e+02
+6.9841704e+05 -9.6207519e+05 9.3498534e+02
+6.2049872e+05 -8.5355803e+05 1.5829560e+03
+5.0653019e+05 -6.9597584e+05 3.0334041e+03
+3.6303087e+05 -4.9856317e+05 5.6576804e+03
+2.1510937e+05 -2.9537103e+05 9.0470095e+03
+9.6273472e+04 -1.3093163e+05 1.1300198e+04
+2.7150740e+04 -2.8879132e+04 6.0194467e+03
+8.4981125e+03 -6.0475338e+03 3.3281113e+03
+4.2103600e+03 -1.4277366e+03 1.2492080e+03
+1.8784377e+03 -2.7553427e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.6372689e+01 -1.4544780e+01 -7.8976419e+00
+2.4219041e+02 -2.1485637e+02 -1.3037783e+02
+2.7996308e+03 -2.5193782e+03 -1.5350021e+03
+2.6607043e+04 -2.5321368e+04 -1.3032495e+04
+1.8268119e+05 -2.4945671e+05 -8.0888938e+03
+4.5455906e+05 -6.2388514e+05 -4.8988712e+03
+7.5547043e+05 -1.0409777e+06 -2.3153482e+03
+9.9607900e+05 -1.3716504e+06 9.7499184e+02
+1.1364841e+06 -1.5586170e+06 4.1833405e+03
+1.1834581e+06 -1.6142901e+06 6.9288407e+03
+1.1632335e+06 -1.5787636e+06 9.7461156e+03
+1.0939840e+06 -1.4787488e+06 1.3309370e+04
+9.7585816e+05 -1.3136690e+06 1.8305020e+04
+8.0351358e+05 -1.0741261e+06 2.5003646e+04
+5.8751590e+05 -7.7333239e+05 3.2104007e+04
+3.6369184e+05 -4.6281057e+05 3.6879635e+04
+1.7800384e+05 -2.1692835e+05 4.2554104e+04
+5.2057117e+04 -4.3252452e+04 2.8926037e+04
+2.7317803e+04 -1.1530411e+04 1.7114380e+04
+1.8316979e+04 -3.4640423e+03 6.1459628e+03
+8.4826373e+03 -7.3293542e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.5990250e+01 -1.0192632e+01 -8.7808437e+00
+2.6486484e+02 -1.5473457e+02 -1.3879907e+02
+3.8782925e+03 -2.0313255e+03 -1.5325828e+03
+5.8529838e+04 -2.7798711e+04 -1.0045079e+04
+1.1207235e+06 -4.9075448e+05 7.2302197e+03
+2.9745777e+06 -1.2542886e+06 3.6769257e+04
+5.0340603e+06 -2.0978722e+06 7.6305439e+04
+6.6508961e+06 -2.7603931e+06 1.2532926e+05
+7.5421598e+06 -3.1241476e+06 1.8134104e+05
+7.7939618e+06 -3.2196215e+06 2.4218690e+05
+7.6402250e+06 -3.1375589e+06 3.0630716e+05
+7.2306512e+06 -2.9366849e+06 3.7096877e+05
+6.5531220e+06 -2.6131059e+06 4.3114059e+05
+5.5355660e+06 -2.1416557e+06 4.7597923e+05
+4.2118083e+06 -1.5437439e+06 4.8168056e+05
+2.7850582e+06 -9.1705223e+05 4.0665134e+05
+1.4922192e+06 -3.9444538e+05 2.1849485e+05
+1.7915640e+05 -3.8392989e+04 1.3225844e+05
+9.7209041e+04 -9.4031861e+03 6.7807475e+04
+6.3430901e+04 -3.2238233e+03 2.1937066e+04
+2.7953128e+04 -7.4146052e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.5583457e+01 -7.0945618e+00 -4.5356731e+00
+2.8448287e+02 -1.1880296e+02 -6.0616565e+01
+4.7293537e+03 -1.8279191e+03 -4.8504897e+02
+8.0186294e+04 -2.9745518e+04 -7.5649947e+02
+1.4264834e+06 -5.8851467e+05 2.6951968e+04
+3.7383679e+06 -1.5504878e+06 9.6986133e+04
+6.3206062e+06 -2.6056399e+06 2.0922376e+05
+8.3909856e+06 -3.4275968e+06 3.5418795e+05
+9.5988396e+06 -3.8725008e+06 5.2125332e+05
+1.0031722e+07 -3.9823023e+06 7.0168943e+05
+9.9585930e+06 -3.8740735e+06 8.8618678e+05
+9.5582475e+06 -3.6227246e+06 1.0608738e+06
+8.8267776e+06 -3.2224881e+06 1.2038114e+06
+7.6876803e+06 -2.6392906e+06 1.2782612e+06
+6.1701268e+06 -1.8958660e+06 1.2238479e+06
+4.4654259e+06 -1.1092387e+06 9.6087728e+05
+2.7565590e+06 -4.4726649e+05 4.6746884e+05
+3.6363186e+05 -3.3279088e+04 2.9759257e+05
+2.1622843e+05 -5.9052512e+03 1.5376367e+05
+1.4224718e+05 -1.9442217e+03 4.9425935e+04
+6.2289934e+04 -4.5044129e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.6424650e+01 -5.1060692e+00 -1.1934624e+00
+3.1717059e+02 -9.2399235e+01 -9.2281530e+00
+5.5580095e+03 -1.5352004e+03 6.0300231e+01
+9.7511865e+04 -2.6051100e+04 3.0172290e+03
+1.5753898e+06 -5.6173709e+05 6.1493368e+04
+4.1140483e+06 -1.5162683e+06 1.8515199e+05
+6.9799541e+06 -2.5623039e+06 3.8427320e+05
+9.3229357e+06 -3.3723374e+06 6.4576127e+05
+1.0755515e+07 -3.8060891e+06 9.4966462e+05
+1.1358085e+07 -3.9079051e+06 1.2763130e+06
+1.1408765e+07 -3.7957014e+06 1.6038870e+06
+1.1098872e+07 -3.5444344e+06 1.9031668e+06
+1.0433844e+07 -3.1483484e+06 2.1319613e+06
+9.3388113e+06 -2.5728957e+06 2.2259474e+06
+7.8293726e+06 -1.8385875e+06 2.0894565e+06
+6.0525108e+06 -1.0591468e+06 1.6090351e+06
+4.0864100e+06 -4.0667985e+05 7.7240884e+05
+5.7888605e+05 -2.4964490e+04 4.9605707e+05
+3.6028009e+05 -3.0936107e+03 2.5761697e+05
+2.3856062e+05 -8.5498932e+02 8.2980779e+04
+1.0458103e+05 -1.8943726e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.7932150e+01 -3.5260136e+00 7.3826300e-01
+3.5407870e+02 -6.6181842e+01 2.0654110e+01
+6.3164870e+03 -1.1276693e+03 4.3200901e+02
+1.1203374e+05 -1.9242814e+04 7.8722264e+03
+1.6721298e+06 -4.5155397e+05 9.9819417e+04
+4.3366310e+06 -1.2394345e+06 2.7743914e+05
+7.3780003e+06 -2.1042393e+06 5.5724292e+05
+9.9091187e+06 -2.7715598e+06 9.2493524e+05
+1.1516083e+07 -3.1263454e+06 1.3529021e+06
+1.2265319e+07 -3.2066196e+06 1.8108273e+06
+1.2431384e+07 -3.1106018e+06 2.2646837e+06
+1.2211311e+07 -2.9006076e+06 2.6712695e+06
+1.1622604e+07 -2.5722887e+06 2.9711261e+06
+1.0599479e+07 -2.0972727e+06 3.0773138e+06
+9.1489492e+06 -1.4917602e+06 2.8655444e+06
+7.3733466e+06 -8.4887957e+05 2.1936237e+06
+5.2386062e+06 -3.1509280e+05 1.0513879e+06
+7.7523856e+05 -1.6463467e+04 6.7839746e+05
+4.9257401e+05 -1.4486457e+03 3.5314857e+05
+3.2726088e+05 -2.8991733e+02 1.1392466e+05
+1.4363499e+05 -5.8849352e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.9411804e+01 -2.0753255e+00 1.8818992e+00
+3.8607691e+02 -3.9476883e+01 4.0652582e+01
+6.9256329e+03 -6.7704737e+02 7.4359424e+02
+1.2328788e+05 -1.1538820e+04 1.3101699e+04
+1.7399510e+06 -2.8968385e+05 1.3148293e+05
+4.4776353e+06 -8.0328509e+05 3.5138315e+05
+7.6291657e+06 -1.3681315e+06 6.9129847e+05
+1.0286729e+07 -1.8031915e+06 1.1362338e+06
+1.2016316e+07 -2.0335382e+06 1.6531425e+06
+1.2869495e+07 -2.0844760e+06 2.2036433e+06
+1.3113590e+07 -2.0203573e+06 2.7446141e+06
+1.2948744e+07 -1.8820189e+06 3.2230265e+06
+1.2404488e+07 -1.6669237e+06 3.5679684e+06
+1.1427046e+07 -1.3567936e+06 3.6780664e+06
+1.0021769e+07 -9.6198516e+05 3.4110328e+06
+8.2602374e+06 -5.4305194e+05 2.6056199e+06
+6.0203648e+06 -1.9750802e+05 1.2505744e+06
+9.1641820e+05 -9.1907275e+03 8.0910687e+05
+5.8708191e+05 -6.1989214e+02 4.2160295e+05
+3.9062006e+05 -7.4751824e+01 1.3608988e+05
+1.7154368e+05 -1.1823973e+01 0.0000000e+00
+0 0 0
+0 0 0
+2.0436669e+01 -6.8459113e-01 2.5374622e+00
+4.0729117e+02 -1.3073825e+01 5.3255471e+01
+7.3176532e+03 -2.2450493e+02 9.6064313e+02
+1.3041428e+05 -3.8214052e+03 1.6955848e+04
+1.7803309e+06 -9.9566254e+04 1.5121167e+05
+4.5563493e+06 -2.7741673e+05 3.9646670e+05
+7.7681832e+06 -4.7324703e+05 7.7116451e+05
+1.0497256e+07 -6.2396850e+05 1.2597449e+06
+1.2296553e+07 -7.0362257e+05 1.8259823e+06
+1.3206798e+07 -7.2105091e+05 2.4266902e+06
+1.3489421e+07 -6.9858741e+05 3.0134826e+06
+1.3346312e+07 -6.5041181e+05 3.5280122e+06
+1.2815759e+07 -5.7570765e+05 3.8936377e+06
+1.1853808e+07 -4.6819529e+05 4.0022357e+06
+1.0467924e+07 -3.3143362e+05 3.7033869e+06
+8.7144749e+06 -1.8637932e+05 2.8266516e+06
+6.4197069e+06 -6.7157891e+04 1.3594122e+06
+9.9434925e+05 -2.9455560e+03 8.8065073e+05
+6.3859344e+05 -1.7240131e+02 4.5904618e+05
+4.2513005e+05 -1.1573689e+01 1.4820420e+05
+1.8675006e+05 -5.7845992e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0798509e+01 6.8459113e-01 2.7569566e+00
+4.1466887e+02 1.3073825e+01 5.7638899e+01
+7.4525055e+03 2.2450493e+02 1.0384286e+03
+1.3284907e+05 3.8214052e+03 1.8352106e+04
+1.7936011e+06 9.9566254e+04 1.5777677e+05
+4.5814489e+06 2.7741673e+05 4.1127372e+05
+7.8122881e+06 4.7324703e+05 7.9704062e+05
+1.0564176e+07 6.2396850e+05 1.2992830e+06
+1.2385572e+07 7.0362257e+05 1.8807362e+06
+1.3313271e+07 7.2105091e+05 2.4966426e+06
+1.3606506e+07 6.9858741e+05 3.0969358e+06
+1.3467755e+07 6.5041181e+05 3.6216588e+06
+1.2938496e+07 5.7570765e+05 3.9925600e+06
+1.1978544e+07 4.6819529e+05 4.0997547e+06
+1.0596754e+07 3.3143362e+05 3.7907900e+06
+8.8453221e+06 1.8637932e+05 2.8927586e+06
+6.5340320e+06 6.7157891e+04 1.3925075e+06
+1.0182475e+06 2.9455560e+03 9.0241582e+05
+6.5421669e+05 1.7240131e+02 4.7043290e+05
+4.3559270e+05 1.1573689e+01 1.5188679e+05
+1.9136295e+05 5.7845992e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.0436669e+01 2.0753255e+00 2.5374622e+00
+4.0729117e+02 3.9476883e+01 5.3255471e+01
+7.3176532e+03 6.7704737e+02 9.6064313e+02
+1.3041428e+05 1.1538820e+04 1.6955848e+04
+1.7803309e+06 2.8968385e+05 1.5121167e+05
+4.5563493e+06 8.0328509e+05 3.9646670e+05
+7.7681832e+06 1.3681315e+06 7.7116451e+05
+1.0497256e+07 1.8031915e+06 1.2597449e+06
+1.2296553e+07 2.0335382e+06 1.8259823e+06
+1.3206798e+07 2.0844760e+06 2.4266902e+06
+1.3489421e+07 2.0203573e+06 3.0134826e+06
+1.3346312e+07 1.8820189e+06 3.5280122e+06
+1.2815759e+07 1.6669237e+06 3.8936377e+06
+1.1853808e+07 1.3567936e+06 4.0022357e+06
+1.0467924e+07 9.6198516e+05 3.7033869e+06
+8.7144749e+06 5.4305194e+05 2.8266516e+06
+6.4197069e+06 1.9750802e+05 1.3594122e+06
+9.9434925e+05 9.1907275e+03 8.8065073e+05
+6.3859344e+05 6.1989214e+02 4.5904618e+05
+4.2513005e+05 7.4751824e+01 1.4820420e+05
+1.8675006e+05 1.1823973e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.9411804e+01 3.5260136e+00 1.8818992e+00
+3.8607691e+02 6.6181842e+01 4.0652582e+01
+6.9256329e+03 1.1276693e+03 7.4359424e+02
+1.2328788e+05 1.9242814e+04 1.3101699e+04
+1.7399510e+06 4.5155397e+05 1.3148293e+05
+4.4776353e+06 1.2394345e+06 3.5138315e+05
+7.6291657e+06 2.1042393e+06 6.9129847e+05
+1.0286729e+07 2.7715598e+06 1.1362338e+06
+1.2016316e+07 3.1263454e+06 1.6531425e+06
+1.2869495e+07 3.2066196e+06 2.2036433e+06
+1.3113590e+07 3.1106018e+06 2.7446141e+06
+1.2948744e+07 2.9006076e+06 3.2230265e+06
+1.2404488e+07 2.5722887e+06 3.5679684e+06
+1.1427046e+07 2.0972727e+06 3.6780664e+06
+1.0021769e+07 1.4917602e+06 3.4110328e+06
+8.2602374e+06 8.4887957e+05 2.6056199e+06
+6.0203648e+06 3.1509280e+05 1.2505744e+06
+9.1641820e+05 1.6463467e+04 8.0910687e+05
+5.8708191e+05 1.4486457e+03 4.2160295e+05
+3.9062006e+05 2.8991733e+02 1.3608988e+05
+1.7154368e+05 5.8849352e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.7932150e+01 5.1060692e+00 7.3826300e-01
+3.5407870e+02 9.2399235e+01 2.0654110e+01
+6.3164870e+03 1.5352004e+03 4.3200901e+02
+1.1203374e+05 2.6051100e+04 7.8722264e+03
+1.6721298e+06 5.6173709e+05 9.9819417e+04
+4.3366310e+06 1.5162683e+06 2.7743914e+05
+7.3780003e+06 2.5623039e+06 5.5724292e+05
+9.9091187e+06 3.3723374e+06 9.2493524e+05
+1.1516083e+07 3.8060891e+06 1.3529021e+06
+1.2265319e+07 3.9079051e+06 1.8108273e+06
+1.2431384e+07 3.7957014e+06 2.2646837e+06
+1.2211311e+07 3.5444344e+06 2.6712695e+06
+1.1622604e+07 3.1483484e+06 2.9711261e+06
+1.0599479e+07 2.5728957e+06 3.0773138e+06
+9.1489492e+06 1.8385875e+06 2.8655444e+06
+7.3733466e+06 1.0591468e+06 2.1936237e+06
+5.2386062e+06 4.0667985e+05 1.0513879e+06
+7.7523856e+05 2.4964490e+04 6.7839746e+05
+4.9257401e+05 3.0936107e+03 3.5314857e+05
+3.2726088e+05 8.5498932e+02 1.1392466e+05
+1.4363499e+05 1.8943726e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.6424650e+01 7.0945618e+00 -1.1934624e+00
+3.1717059e+02 1.1880296e+02 -9.2281530e+00
+5.5580095e+03 1.8279191e+03 6.0300231e+01
+9.7511865e+04 2.9745518e+04 3.0172290e+03
+1.5753898e+06 5.8851467e+05 6.1493368e+04
+4.1140483e+06 1.5504878e+06 1.8515199e+05
+6.9799541e+06 2.6056399e+06 3.8427320e+05
+9.3229357e+06 3.4275968e+06 6.4576127e+05
+1.0755515e+07 3.8725008e+06 9.4966462e+05
+1.1358085e+07 3.9823023e+06 1.2763130e+06
+1.1408765e+07 3.8740735e+06 1.6038870e+06
+1.1098872e+07 3.6227246e+06 1.9031668e+06
+1.0433844e+07 3.2224881e+06 2.1319613e+06
+9.3388113e+06 2.6392906e+06 2.2259474e+06
+7.8293726e+06 1.8958660e+06 2.0894565e+06
+6.0525108e+06 1.1092387e+06 1.6090351e+06
+4.0864100e+06 4.4726649e+05 7.7240884e+05
+5.7888605e+05 3.3279088e+04 4.9605707e+05
+3.6028009e+05 5.9052512e+03 2.5761697e+05
+2.3856062e+05 1.9442217e+03 8.2980779e+04
+1.0458103e+05 4.5044129e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.5583457e+01 1.0192632e+01 -4.5356731e+00
+2.8448287e+02 1.5473457e+02 -6.0616565e+01
+4.7293537e+03 2.0313255e+03 -4.8504897e+02
+8.0186294e+04 2.7798711e+04 -7.5649947e+02
+1.4264834e+06 4.9075448e+05 2.6951968e+04
+3.7383679e+06 1.2542886e+06 9.6986133e+04
+6.3206062e+06 2.0978722e+06 2.0922376e+05
+8.3909856e+06 2.7603931e+06 3.5418795e+05
+9.5988396e+06 3.1241476e+06 5.2125332e+05
+1.0031722e+07 3.2196215e+06 7.0168943e+05
+9.9585930e+06 3.1375589e+06 8.8618678e+05
+9.5582475e+06 2.9366849e+06 1.0608738e+06
+8.8267776e+06 2.6131059e+06 1.2038114e+06
+7.6876803e+06 2.1416557e+06 1.2782612e+06
+6.1701268e+06 1.5437439e+06 1.2238479e+06
+4.4654259e+06 9.1705223e+05 9.6087728e+05
+2.7565590e+06 3.9444538e+05 4.6746884e+05
+3.6363186e+05 3.8392989e+04 2.9759257e+05
+2.1622843e+05 9.4031861e+03 1.5376367e+05
+1.4224718e+05 3.2238233e+03 4.9425935e+04
+6.2289934e+04 7.4146052e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.5990250e+01 1.4544780e+01 -8.7808437e+00
+2.6486484e+02 2.1485637e+02 -1.3879907e+02
+3.8782925e+03 2.5193782e+03 -1.5325828e+03
+5.8529838e+04 2.5321368e+04 -1.0045079e+04
+1.1207235e+06 2.4945671e+05 7.2302197e+03
+2.9745777e+06 6.2388514e+05 3.6769257e+04
+5.0340603e+06 1.0409777e+06 7.6305439e+04
+6.6508961e+06 1.3716504e+06 1.2532926e+05
+7.5421598e+06 1.5586170e+06 1.8134104e+05
+7.7939618e+06 1.6142901e+06 2.4218690e+05
+7.6402250e+06 1.5787636e+06 3.0630716e+05
+7.2306512e+06 1.4787488e+06 3.7096877e+05
+6.5531220e+06 1.3136690e+06 4.3114059e+05
+5.5355660e+06 1.0741261e+06 4.7597923e+05
+4.2118083e+06 7.7333239e+05 4.8168056e+05
+2.7850582e+06 4.6281057e+05 4.0665134e+05
+1.4922192e+06 2.1692835e+05 2.1849485e+05
+1.7915640e+05 4.3252452e+04 1.3225844e+05
+9.7209041e+04 1.1530411e+04 6.7807475e+04
+6.3430901e+04 3.4640423e+03 2.1937066e+04
+2.7953128e+04 7.3293542e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.6372689e+01 1.5459595e+01 -7.8976419e+00
+2.4219041e+02 2.2853602e+02 -1.3037783e+02
+2.7996308e+03 2.6114404e+03 -1.5350021e+03
+2.6607043e+04 2.4145658e+04 -1.3032495e+04
+1.8268119e+05 1.6008301e+05 -8.0888938e+03
+4.5455906e+05 4.0510216e+05 -4.8988712e+03
+7.5547043e+05 6.7735927e+05 -2.3153482e+03
+9.9607900e+05 8.9254902e+05 9.7499183e+02
+1.1364841e+06 1.0143928e+06 4.1833405e+03
+1.1834581e+06 1.0508575e+06 6.9288407e+03
+1.1632335e+06 1.0276582e+06 9.7461156e+03
+1.0939840e+06 9.6207519e+05 1.3309370e+04
+9.7585816e+05 8.5355803e+05 1.8305020e+04
+8.0351358e+05 6.9597584e+05 2.5003646e+04
+5.8751590e+05 4.9856317e+05 3.2104007e+04
+3.6369184e+05 2.9537103e+05 3.6879635e+04
+1.7800384e+05 1.3093163e+05 4.2554104e+04
+5.2057117e+04 2.8879132e+04 2.8926037e+04
+2.7317803e+04 6.0475338e+03 1.7114380e+04
+1.8316979e+04 1.4277366e+03 6.1459628e+03
+8.4826373e+03 2.7553427e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.4967909e+01 1.0193249e+01 -2.2718387e+00
+2.1750090e+02 1.5031359e+02 -4.1645234e+01
+2.3937059e+03 1.6776714e+03 -4.9936775e+02
+2.0491746e+04 1.4529981e+04 -3.5804508e+03
+1.1593919e+05 8.3004471e+04 -1.8162376e+03
+2.9392329e+05 2.1099544e+05 -1.2055252e+03
+4.9112118e+05 3.5315696e+05 -1.2106399e+03
+6.4626973e+05 4.6517527e+05 -6.3367128e+02
+7.3438051e+05 5.2877246e+05 8.1365994e+00
+7.6123448e+05 5.4801753e+05 3.6463986e+02
+7.4511179e+05 5.3607744e+05 6.1641050e+02
+6.9841704e+05 5.0193690e+05 9.3498534e+02
+6.2049872e+05 4.4526207e+05 1.5829560e+03
+5.0653019e+05 3.6276446e+05 3.0334041e+03
+3.6303087e+05 2.5927434e+05 5.6576804e+03
+2.1510937e+05 1.5279746e+05 9.0470095e+03
+9.6273472e+04 6.7100324e+04 1.1300198e+04
+2.7150740e+04 1.6993666e+04 6.0194467e+03
+8.4981125e+03 3.3175888e+03 3.3281113e+03
+4.2103600e+03 5.8700303e+02 1.2492080e+03
+1.8784377e+03 8.5714456e+01 0.0000000e+00
+0 0 0
+0 0 0
+9.8198847e+00 3.2298691e+00 1.5396242e+00
+1.4526852e+02 4.8565146e+01 1.6851472e+01
+1.6187679e+03 5.4986137e+02 1.0602014e+02
+1.3879355e+04 4.7742233e+03 3.3469950e+02
+7.7241372e+04 2.6789856e+04 6.8339623e+02
+1.9634866e+05 6.8287877e+04 -3.9327888e+00
+3.2757987e+05 1.1413077e+05 -5.4019961e+02
+4.3046804e+05 1.5014208e+05 -3.8058490e+02
+4.8906717e+05 1.7067173e+05 -1.0969396e+02
+5.0700468e+05 1.7695555e+05 -1.4929761e+00
+4.9621165e+05 1.7314602e+05 5.6554723e+01
+4.6500006e+05 1.6214808e+05 1.2764159e+02
+4.1290367e+05 1.4384371e+05 3.0792288e+02
+3.3659718e+05 1.1713942e+05 8.2257691e+02
+2.4045254e+05 8.3602197e+04 1.8555137e+03
+1.4155415e+05 4.9161685e+04 3.0999205e+03
+6.2794735e+04 2.1708964e+04 3.3820905e+03
+1.8152829e+04 6.0894667e+03 1.4118055e+03
+4.1875175e+03 1.2413430e+03 5.8612834e+02
+1.1094025e+03 2.0214957e+02 2.0270928e+02
+3.5303045e+02 2.4661185e+01 0.0000000e+00
+0 0 0
+0 0 0
+3.3089762e+00 0.0000000e+00 1.2683458e+00
+5.1299543e+01 0.0000000e+00 1.6948430e+01
+6.0605623e+02 0.0000000e+00 1.4665383e+02
+5.5932568e+03 0.0000000e+00 7.5932407e+02
+3.4030220e+04 0.0000000e+00 7.4083901e+02
+8.6767570e+04 0.0000000e+00 1.8885783e+02
+1.4419267e+05 0.0000000e+00 -1.4358571e+02
+1.8910030e+05 0.0000000e+00 -1.1486024e+02
+2.1484898e+05 0.0000000e+00 -3.2894457e+01
+2.2282731e+05 0.0000000e+00 -9.9093437e+00
+2.1811432e+05 0.0000000e+00 4.3203312e+00
+2.0439142e+05 0.0000000e+00 2.2422498e+01
+1.8146268e+05 0.0000000e+00 6.1254681e+01
+1.4784939e+05 0.0000000e+00 1.8059818e+02
+1.0549587e+05 0.0000000e+00 4.2983888e+02
+6.2031051e+04 0.0000000e+00 7.1338789e+02
+2.7676840e+04 0.0000000e+00 7.1429957e+02
+8.3976769e+03 0.0000000e+00 2.7139223e+02
+1.8642878e+03 0.0000000e+00 8.5260114e+01
+3.5176048e+02 0.0000000e+00 2.4656606e+01
+6.5560977e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.4765332e+00 -8.0589258e+00 4.8913689e+00
+1.1611326e+02 -1.3653371e+02 7.6611362e+01
+1.6592643e+03 -1.7939573e+03 8.1736059e+02
+1.9466763e+04 -1.8502786e+04 5.4466411e+03
+1.5910509e+05 -1.2428384e+05 4.6556156e+03
+4.1591948e+05 -3.2550462e+05 1.0083265e+03
+6.9142942e+05 -5.4546567e+05 -7.6275413e+02
+9.0616827e+05 -7.1740745e+05 -4.2327518e+02
+1.0298347e+06 -8.1543055e+05 2.1598441e+01
+1.0675078e+06 -8.4475049e+05 9.1614250e+01
+1.0430908e+06 -8.2505325e+05 1.6834873e+02
+9.7511489e+05 -7.7081577e+05 2.6065407e+02
+8.6315904e+05 -6.8181272e+05 3.7701616e+02
+7.0048006e+05 -5.5300702e+05 7.5335574e+02
+4.9680396e+05 -3.9219484e+05 1.6400991e+03
+2.8910648e+05 -2.2817142e+05 2.7360924e+03
+1.2667502e+05 -9.8989867e+04 2.7277759e+03
+3.7269893e+04 -2.7084808e+04 9.4036801e+02
+7.8290305e+03 -5.3004721e+03 2.7609741e+02
+1.3460232e+03 -8.1421410e+02 9.6048827e+01
+2.5765715e+02 -9.6047346e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.7309444e+01 -2.3013614e+01 7.4651287e+00
+2.8598798e+02 -3.7244060e+02 1.0265255e+02
+3.6683157e+03 -4.6580676e+03 9.1721514e+02
+3.7130365e+04 -4.5709999e+04 4.8734176e+03
+2.4646473e+05 -2.9375920e+05 5.1254183e+03
+6.4291854e+05 -7.6740234e+05 4.5326360e+02
+1.0751296e+06 -1.2904256e+06 -2.1365210e+03
+1.4125698e+06 -1.7004314e+06 -1.2143149e+03
+1.6049865e+06 -1.9325184e+06 -4.5846150e+01
+1.6626695e+06 -2.0007916e+06 3.3045159e+02
+1.6243376e+06 -1.9534194e+06 5.7065537e+02
+1.5184521e+06 -1.8245212e+06 8.2408839e+02
+1.3442350e+06 -1.6136106e+06 1.2906300e+03
+1.0912764e+06 -1.3090867e+06 2.6911249e+03
+7.7459477e+05 -9.2939014e+05 5.7441883e+03
+4.5106021e+05 -5.4154121e+05 9.6079122e+03
+1.9630059e+05 -2.3326967e+05 1.0381856e+04
+5.4844069e+04 -5.7473467e+04 4.0792745e+03
+1.1873892e+04 -1.0728050e+04 1.8204777e+03
+3.1209704e+03 -1.8223691e+03 8.1706491e+02
+1.3516574e+03 -2.7760939e+02 0.0000000e+00
+0 0 0
+0 0 0
+2.3898410e+01 -3.1964537e+01 2.0421985e-02
+3.7780912e+02 -5.0853890e+02 -2.4189487e+01
+4.6199466e+03 -6.3497919e+03 -5.5870592e+02
+4.4508370e+04 -6.4449724e+04 -5.8356055e+03
+2.8213068e+05 -4.6407771e+05 -1.7085909e+03
+7.3405195e+05 -1.2065585e+06 -2.6810496e+03
+1.2316365e+06 -2.0297518e+06 -3.8701919e+03
+1.6210848e+06 -2.6771381e+06 -1.9786095e+03
+1.8415744e+06 -3.0417536e+06 6.2723036e+01
+1.9067420e+06 -3.1472316e+06 9.9522023e+02
+1.8624658e+06 -3.0713613e+06 1.5830787e+03
+1.7411374e+06 -2.8678807e+06 2.2222401e+03
+1.5418128e+06 -2.5361948e+06 3.4923957e+03
+1.2527610e+06 -2.0585805e+06 6.7554015e+03
+8.9110456e+05 -1.4641146e+06 1.3406211e+04
+5.2107081e+05 -8.5680924e+05 2.2712805e+04
+2.2771187e+05 -3.7117513e+05 2.9179864e+04
+6.1904489e+04 -7.9217993e+04 1.6170641e+04
+1.9402574e+04 -1.6242144e+04 1.0780274e+04
+1.1958316e+04 -4.1336311e+03 5.3435801e+03
+7.9015540e+03 -9.5714561e+02 0.0000000e+00
+0 0 0
+0 0 0
+2.3414393e+01 -2.7678486e+01 -1.1327756e+01
+3.6610042e+02 -4.3275165e+02 -2.1102502e+02
+4.5097738e+03 -5.4280787e+03 -2.8428812e+03
+4.5449521e+04 -5.8420551e+04 -2.7714531e+04
+3.2265804e+05 -6.1671550e+05 -1.5053588e+04
+8.2460157e+05 -1.5823266e+06 -9.3280600e+03
+1.3792489e+06 -2.6567672e+06 -6.0910991e+03
+1.8182798e+06 -3.5046797e+06 -7.5027894e+02
+2.0701343e+06 -3.9806001e+06 4.4459991e+03
+2.1485650e+06 -4.1162451e+06 8.3526059e+03
+2.1035476e+06 -4.0153793e+06 1.2056585e+04
+1.9702241e+06 -3.7486878e+06 1.6623574e+04
+1.7489222e+06 -3.3160829e+06 2.3447608e+04
+1.4292331e+06 -2.6952911e+06 3.4438768e+04
+1.0314928e+06 -1.9242127e+06 5.0559971e+04
+6.2524797e+05 -1.1386543e+06 7.0848948e+04
+3.0062712e+05 -5.2376083e+05 1.0081137e+05
+9.6680217e+04 -1.0256333e+05 7.9533609e+04
+6.2442539e+04 -2.9883814e+04 5.8050544e+04
+5.5499377e+04 -1.0682842e+04 2.7417356e+04
+3.7754550e+04 -2.8117022e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.9476449e+01 -1.7367063e+01 -1.3797622e+01
+3.2502508e+02 -2.6881139e+02 -2.3789812e+02
+4.7166018e+03 -3.5292126e+03 -2.9750736e+03
+6.8854743e+04 -4.6388031e+04 -2.5332498e+04
+1.3301602e+06 -8.6044903e+05 8.9643548e+03
+3.5535719e+06 -2.1976754e+06 4.5319041e+04
+6.0247515e+06 -3.6849023e+06 8.2762903e+04
+7.9597640e+06 -4.8612671e+06 1.3048241e+05
+9.0173006e+06 -5.5147663e+06 1.8950787e+05
+9.2980511e+06 -5.6897738e+06 2.5894730e+05
+9.0839048e+06 -5.5390999e+06 3.3898810e+05
+8.5584436e+06 -5.1662199e+06 4.2872773e+05
+7.7106039e+06 -4.5708126e+06 5.2597556e+05
+6.4614474e+06 -3.7193875e+06 6.2419062e+05
+4.8709880e+06 -2.6611330e+06 7.0193120e+05
+3.2193385e+06 -1.5747101e+06 7.0370669e+05
+1.8283681e+06 -6.8624472e+05 5.3004166e+05
+3.0383313e+05 -7.3746557e+04 3.7654815e+05
+2.3088598e+05 -2.3732090e+04 2.3671949e+05
+1.9907743e+05 -1.0045857e+04 1.0043598e+05
+1.2843502e+05 -2.8576167e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.5794057e+01 -1.0442382e+01 -7.1352816e+00
+2.8454124e+02 -1.7232715e+02 -1.0367790e+02
+4.6474739e+03 -2.5706041e+03 -9.8040661e+02
+7.7651597e+04 -4.0210050e+04 -4.6236903e+03
+1.4186595e+06 -8.7897317e+05 2.1724355e+04
+3.7615860e+06 -2.2924241e+06 9.3254891e+04
+6.3767693e+06 -3.8526209e+06 2.0481031e+05
+8.4662285e+06 -5.0827583e+06 3.5105863e+05
+9.6708670e+06 -5.7625009e+06 5.2676582e+05
+1.0079364e+07 -5.9392655e+06 7.2861587e+05
+9.9703595e+06 -5.7752439e+06 9.5299334e+05
+9.5335719e+06 -5.3804881e+06 1.1919372e+06
+8.7737409e+06 -4.7557674e+06 1.4299287e+06
+7.6287796e+06 -3.8659683e+06 1.6354102e+06
+6.1600957e+06 -2.7590594e+06 1.7433677e+06
+4.6133520e+06 -1.6130071e+06 1.6337387e+06
+3.2104093e+06 -6.6141534e+05 1.1550590e+06
+6.2968771e+05 -5.2304645e+04 8.6756122e+05
+5.2644420e+05 -1.4016966e+04 5.4763032e+05
+4.5536726e+05 -6.0100019e+03 2.3047440e+05
+2.9161850e+05 -1.7117913e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.4483087e+01 -6.5892633e+00 -1.9115554e+00
+2.7762604e+02 -1.1718441e+02 -1.7509752e+01
+4.8403839e+03 -1.9083655e+03 3.7877335e+01
+8.4929599e+04 -3.1850825e+04 4.2609188e+03
+1.4122187e+06 -7.6757849e+05 5.6037402e+04
+3.7417950e+06 -2.0382465e+06 1.7411310e+05
+6.3707108e+06 -3.4382691e+06 3.6900455e+05
+8.5158091e+06 -4.5389154e+06 6.3228829e+05
+9.8187536e+06 -5.1450037e+06 9.5155301e+05
+1.0354084e+07 -5.2996685e+06 1.3159571e+06
+1.0384337e+07 -5.1481310e+06 1.7132716e+06
+1.0096555e+07 -4.7892770e+06 2.1243780e+06
+9.5106069e+06 -4.2253034e+06 2.5171515e+06
+8.5825748e+06 -3.4262169e+06 2.8336364e+06
+7.3701803e+06 -2.4336607e+06 2.9674302e+06
+6.0712736e+06 -1.4027625e+06 2.7384227e+06
+4.7831674e+06 -5.4831735e+05 1.9285673e+06
+1.0251880e+06 -3.4070873e+04 1.4640316e+06
+8.8902464e+05 -6.7730614e+03 9.2804314e+05
+7.7214492e+05 -2.6997655e+03 3.9114861e+05
+4.9477168e+05 -7.5382827e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.4614298e+01 -4.1875455e+00 9.1613411e-01
+2.8829633e+02 -7.7979766e+01 2.7493865e+01
+5.1485584e+03 -1.3205582e+03 6.0761514e+02
+9.1664336e+04 -2.2476167e+04 1.1602360e+04
+1.4067421e+06 -5.8565123e+05 9.5062817e+04
+3.7050762e+06 -1.5740710e+06 2.6244208e+05
+6.3318725e+06 -2.6644209e+06 5.3472169e+05
+8.5200754e+06 -3.5202343e+06 9.0508386e+05
+9.9106578e+06 -3.9905984e+06 1.3561037e+06
+1.0561853e+07 -4.1091947e+06 1.8690960e+06
+1.0718103e+07 -3.9883981e+06 2.4226439e+06
+1.0562947e+07 -3.7051147e+06 2.9868463e+06
+1.0131462e+07 -3.2623866e+06 3.5150720e+06
+9.3992068e+06 -2.6384925e+06 3.9276200e+06
+8.4242230e+06 -1.8656639e+06 4.0843494e+06
+7.3648668e+06 -1.0629622e+06 3.7530289e+06
+6.2007959e+06 -4.0228933e+05 2.6448112e+06
+1.3909753e+06 -2.0556478e+04 2.0155601e+06
+1.2241640e+06 -2.9433943e+03 1.2801405e+06
+1.0655696e+06 -1.0487725e+03 5.4018073e+05
+6.8336247e+05 -3.0057694e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.5194787e+01 -2.3648188e+00 2.3942903e+00
+3.0255549e+02 -4.4962641e+01 5.2898590e+01
+5.4397245e+03 -7.7253810e+02 9.9078686e+02
+9.7187470e+04 -1.3222769e+04 1.7837796e+04
+1.4097410e+06 -3.6472257e+05 1.2711920e+05
+3.6833876e+06 -9.8727288e+05 3.3456880e+05
+6.3090574e+06 -1.6753030e+06 6.6555921e+05
+8.5317900e+06 -2.2149702e+06 1.1152341e+06
+9.9893104e+06 -2.5113035e+06 1.6629447e+06
+1.0724965e+07 -2.5855053e+06 2.2837850e+06
+1.0968095e+07 -2.5080697e+06 2.9489524e+06
+1.0899698e+07 -2.3274636e+06 3.6203472e+06
+1.0567665e+07 -2.0462972e+06 4.2410815e+06
+9.9644183e+06 -1.6517364e+06 4.7169535e+06
+9.1512367e+06 -1.1641718e+06 4.8859932e+06
+8.2605479e+06 -6.5822175e+05 4.4809423e+06
+7.1831479e+06 -2.4448026e+05 3.1603501e+06
+1.6547967e+06 -1.0937785e+04 2.4123529e+06
+1.4644096e+06 -1.1929434e+03 1.5332747e+06
+1.2759422e+06 -3.7129739e+02 6.4727507e+05
+8.1862765e+05 -1.0948175e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.5691813e+01 -7.6773647e-01 3.1477741e+00
+3.1316956e+02 -1.4704382e+01 6.7011134e+01
+5.6382531e+03 -2.5380180e+02 1.2276749e+03
+1.0077804e+05 -4.3506457e+03 2.1991790e+04
+1.4142224e+06 -1.2366641e+05 1.4704412e+05
+3.6727958e+06 -3.3584375e+05 3.7916851e+05
+6.2978044e+06 -5.7062204e+05 7.4486629e+05
+8.5414844e+06 -7.5473665e+05 1.2404042e+06
+1.0038172e+07 -8.5580011e+05 1.8432819e+06
+1.0820921e+07 -8.8102989e+05 2.5246833e+06
+1.1109269e+07 -8.5440134e+05 3.2511675e+06
+1.1082725e+07 -7.9244231e+05 3.9797338e+06
+1.0797537e+07 -6.9617225e+05 4.6478305e+06
+1.0257363e+07 -5.6137456e+05 5.1539141e+06
+9.5270440e+06 -3.9502550e+05 5.3256475e+06
+8.7257808e+06 -2.2252016e+05 4.8786400e+06
+7.6924860e+06 -8.1960985e+04 3.4433417e+06
+1.8001815e+06 -3.4358660e+03 2.6300075e+06
+1.5956792e+06 -3.2091146e+02 1.6720497e+06
+1.3909320e+06 -8.7653935e+01 7.0596418e+05
+8.9262944e+05 -2.4685229e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.5877848e+01 7.6773647e-01 3.3851878e+00
+3.1699470e+02 1.4704382e+01 7.1650596e+01
+5.7079002e+03 2.5380180e+02 1.3086523e+03
+1.0201707e+05 4.3506457e+03 2.3439360e+04
+1.4160290e+06 1.2366641e+05 1.5367864e+05
+3.6694907e+06 3.3584375e+05 3.9394931e+05
+6.2941333e+06 5.7062204e+05 7.7086002e+05
+8.5445588e+06 7.5473665e+05 1.2810040e+06
+1.0053708e+07 8.5580011e+05 1.9012681e+06
+1.0850972e+07 8.8102989e+05 2.6015078e+06
+1.1152497e+07 8.5440134e+05 3.3467143e+06
+1.1137300e+07 7.9244231e+05 4.0922852e+06
+1.0864508e+07 6.9617225e+05 4.7739286e+06
+1.0341706e+07 5.6137456e+05 5.2880180e+06
+9.6352481e+06 3.9502550e+05 5.4594729e+06
+8.8605029e+06 2.2252016e+05 4.9992517e+06
+7.8397894e+06 8.1960985e+04 3.5295723e+06
+1.8446500e+06 3.4358660e+03 2.6962980e+06
+1.6355585e+06 3.2091146e+02 1.7143144e+06
+1.4258909e+06 8.7653935e+01 7.2384090e+05
+9.1515448e+05 2.4685229e+01 0.0000000e+00
+0 0 0
+0 0 0
+1.5691813e+01 2.3648188e+00 3.1477741e+00
+3.1316956e+02 4.4962641e+01 6.7011134e+01
+5.6382531e+03 7.7253810e+02 1.2276749e+03
+1.0077804e+05 1.3222769e+04 2.1991790e+04
+1.4142224e+06 3.6472257e+05 1.4704412e+05
+3.6727958e+06 9.8727288e+05 3.7916851e+05
+6.2978044e+06 1.6753030e+06 7.4486629e+05
+8.5414844e+06 2.2149702e+06 1.2404042e+06
+1.0038172e+07 2.5113035e+06 1.8432819e+06
+1.0820921e+07 2.5855053e+06 2.5246833e+06
+1.1109269e+07 2.5080697e+06 3.2511675e+06
+1.1082725e+07 2.3274636e+06 3.9797338e+06
+1.0797537e+07 2.0462972e+06 4.6478305e+06
+1.0257363e+07 1.6517364e+06 5.1539141e+06
+9.5270440e+06 1.1641718e+06 5.3256475e+06
+8.7257808e+06 6.5822175e+05 4.8786400e+06
+7.6924860e+06 2.4448026e+05 3.4433417e+06
+1.8001815e+06 1.0937785e+04 2.6300075e+06
+1.5956792e+06 1.1929434e+03 1.6720497e+06
+1.3909320e+06 3.7129740e+02 7.0596418e+05
+8.9262944e+05 1.0948176e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.5194787e+01 4.1875455e+00 2.3942903e+00
+3.0255549e+02 7.7979766e+01 5.2898590e+01
+5.4397245e+03 1.3205582e+03 9.9078686e+02
+9.7187470e+04 2.2476167e+04 1.7837797e+04
+1.4097410e+06 5.8565123e+05 1.2711920e+05
+3.6833876e+06 1.5740710e+06 3.3456880e+05
+6.3090574e+06 2.6644209e+06 6.6555921e+05
+8.5317900e+06 3.5202343e+06 1.1152341e+06
+9.9893104e+06 3.9905984e+06 1.6629447e+06
+1.0724965e+07 4.1091947e+06 2.2837850e+06
+1.0968095e+07 3.9883981e+06 2.9489524e+06
+1.0899698e+07 3.7051147e+06 3.6203472e+06
+1.0567665e+07 3.2623866e+06 4.2410815e+06
+9.9644183e+06 2.6384925e+06 4.7169535e+06
+9.1512367e+06 1.8656639e+06 4.8859932e+06
+8.2605479e+06 1.0629622e+06 4.4809423e+06
+7.1831479e+06 4.0228933e+05 3.1603501e+06
+1.6547967e+06 2.0556478e+04 2.4123529e+06
+1.4644096e+06 2.9433943e+03 1.5332747e+06
+1.2759422e+06 1.0487725e+03 6.4727507e+05
+8.1862765e+05 3.0057694e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.4614298e+01 6.5892633e+00 9.1613411e-01
+2.8829633e+02 1.1718441e+02 2.7493865e+01
+5.1485584e+03 1.9083655e+03 6.0761514e+02
+9.1664336e+04 3.1850825e+04 1.1602360e+04
+1.4067421e+06 7.6757849e+05 9.5062817e+04
+3.7050762e+06 2.0382465e+06 2.6244208e+05
+6.3318725e+06 3.4382691e+06 5.3472169e+05
+8.5200754e+06 4.5389154e+06 9.0508386e+05
+9.9106578e+06 5.1450037e+06 1.3561037e+06
+1.0561853e+07 5.2996685e+06 1.8690960e+06
+1.0718103e+07 5.1481310e+06 2.4226439e+06
+1.0562947e+07 4.7892770e+06 2.9868463e+06
+1.0131462e+07 4.2253034e+06 3.5150720e+06
+9.3992068e+06 3.4262169e+06 3.9276200e+06
+8.4242230e+06 2.4336607e+06 4.0843494e+06
+7.3648668e+06 1.4027625e+06 3.7530289e+06
+6.2007959e+06 5.4831735e+05 2.6448112e+06
+1.3909753e+06 3.4070873e+04 2.0155601e+06
+1.2241640e+06 6.7730614e+03 1.2801405e+06
+1.0655696e+06 2.6997655e+03 5.4018073e+05
+6.8336247e+05 7.5382827e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.4483087e+01 1.0442382e+01 -1.9115554e+00
+2.7762604e+02 1.7232715e+02 -1.7509752e+01
+4.8403839e+03 2.5706041e+03 3.7877335e+01
+8.4929599e+04 4.0210050e+04 4.2609188e+03
+1.4122187e+06 8.7897317e+05 5.6037402e+04
+3.7417950e+06 2.2924241e+06 1.7411310e+05
+6.3707108e+06 3.8526209e+06 3.6900455e+05
+8.5158091e+06 5.0827583e+06 6.3228829e+05
+9.8187536e+06 5.7625009e+06 9.5155301e+05
+1.0354084e+07 5.9392655e+06 1.3159571e+06
+1.0384337e+07 5.7752439e+06 1.7132716e+06
+1.0096555e+07 5.3804881e+06 2.1243780e+06
+9.5106069e+06 4.7557674e+06 2.5171515e+06
+8.5825748e+06 3.8659683e+06 2.8336364e+06
+7.3701803e+06 2.7590594e+06 2.9674302e+06
+6.0712736e+06 1.6130071e+06 2.7384227e+06
+4.7831674e+06 6.6141534e+05 1.9285673e+06
+1.0251880e+06 5.2304645e+04 1.4640316e+06
+8.8902464e+05 1.4016966e+04 9.2804314e+05
+7.7214492e+05 6.0100019e+03 3.9114861e+05
+4.9477168e+05 1.7117913e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.5794057e+01 1.7367063e+01 -7.1352816e+00
+2.8454124e+02 2.6881139e+02 -1.0367790e+02
+4.6474739e+03 3.5292126e+03 -9.8040661e+02
+7.7651597e+04 4.6388031e+04 -4.6236903e+03
+1.4186595e+06 8.6044903e+05 2.1724355e+04
+3.7615860e+06 2.1976754e+06 9.3254891e+04
+6.3767693e+06 3.6849023e+06 2.0481031e+05
+8.4662285e+06 4.8612671e+06 3.5105863e+05
+9.6708670e+06 5.5147663e+06 5.2676582e+05
+1.0079364e+07 5.6897738e+06 7.2861587e+05
+9.9703595e+06 5.5390999e+06 9.5299334e+05
+9.5335719e+06 5.1662199e+06 1.1919372e+06
+8.7737409e+06 4.5708126e+06 1.4299287e+06
+7.6287796e+06 3.7193875e+06 1.6354102e+06
+6.1600957e+06 2.6611330e+06 1.7433677e+06
+4.6133520e+06 1.5747101e+06 1.6337387e+06
+3.2104093e+06 6.8624472e+05 1.1550590e+06
+6.2968771e+05 7.3746557e+04 8.6756122e+05
+5.2644420e+05 2.3732090e+04 5.4763032e+05
+4.5536726e+05 1.0045857e+04 2.3047440e+05
+2.9161850e+05 2.8576167e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.9476449e+01 2.7678486e+01 -1.3797622e+01
+3.2502508e+02 4.3275165e+02 -2.3789812e+02
+4.7166018e+03 5.4280787e+03 -2.9750736e+03
+6.8854743e+04 5.8420551e+04 -2.5332498e+04
+1.3301602e+06 6.1671550e+05 8.9643548e+03
+3.5535719e+06 1.5823266e+06 4.5319041e+04
+6.0247515e+06 2.6567672e+06 8.2762903e+04
+7.9597640e+06 3.5046797e+06 1.3048241e+05
+9.0173006e+06 3.9806001e+06 1.8950787e+05
+9.2980511e+06 4.1162451e+06 2.5894730e+05
+9.0839048e+06 4.0153793e+06 3.3898810e+05
+8.5584436e+06 3.7486878e+06 4.2872773e+05
+7.7106039e+06 3.3160829e+06 5.2597556e+05
+6.4614474e+06 2.6952911e+06 6.2419062e+05
+4.8709880e+06 1.9242127e+06 7.0193120e+05
+3.2193385e+06 1.1386543e+06 7.0370669e+05
+1.8283681e+06 5.2376083e+05 5.3004166e+05
+3.0383313e+05 1.0256333e+05 3.7654815e+05
+2.3088598e+05 2.9883814e+04 2.3671949e+05
+1.9907743e+05 1.0682842e+04 1.0043598e+05
+1.2843502e+05 2.8117022e+03 0.0000000e+00
+0 0 0
+0 0 0
+2.3414393e+01 3.1964537e+01 -1.1327756e+01
+3.6610042e+02 5.0853890e+02 -2.1102502e+02
+4.5097738e+03 6.3497919e+03 -2.8428812e+03
+4.5449521e+04 6.4449724e+04 -2.7714531e+04
+3.2265804e+05 4.6407771e+05 -1.5053588e+04
+8.2460157e+05 1.2065585e+06 -9.3280600e+03
+1.3792489e+06 2.0297518e+06 -6.0910991e+03
+1.8182798e+06 2.6771381e+06 -7.5027894e+02
+2.0701343e+06 3.0417536e+06 4.4459991e+03
+2.1485650e+06 3.1472316e+06 8.3526059e+03
+2.1035476e+06 3.0713613e+06 1.2056585e+04
+1.9702241e+06 2.8678807e+06 1.6623574e+04
+1.7489222e+06 2.5361948e+06 2.3447608e+04
+1.4292331e+06 2.0585805e+06 3.4438768e+04
+1.0314928e+06 1.4641146e+06 5.0559971e+04
+6.2524797e+05 8.5680924e+05 7.0848948e+04
+3.0062712e+05 3.7117513e+05 1.0081137e+05
+9.6680217e+04 7.9217993e+04 7.9533609e+04
+6.2442539e+04 1.6242144e+04 5.8050544e+04
+5.5499377e+04 4.1336311e+03 2.7417356e+04
+3.7754550e+04 9.5714561e+02 0.0000000e+00
+0 0 0
+0 0 0
+2.3898410e+01 2.3013614e+01 2.0421985e-02
+3.7780912e+02 3.7244060e+02 -2.4189487e+01
+4.6199466e+03 4.6580676e+03 -5.5870592e+02
+4.4508370e+04 4.5709999e+04 -5.8356055e+03
+2.8213068e+05 2.9375920e+05 -1.7085909e+03
+7.3405195e+05 7.6740234e+05 -2.6810496e+03
+1.2316365e+06 1.2904256e+06 -3.8701919e+03
+1.6210848e+06 1.7004314e+06 -1.9786095e+03
+1.8415744e+06 1.9325184e+06 6.2723036e+01
+1.9067420e+06 2.0007916e+06 9.9522023e+02
+1.8624658e+06 1.9534194e+06 1.5830787e+03
+1.7411374e+06 1.8245212e+06 2.2222401e+03
+1.5418128e+06 1.6136106e+06 3.4923957e+03
+1.2527610e+06 1.3090867e+06 6.7554015e+03
+8.9110456e+05 9.2939014e+05 1.3406211e+04
+5.2107081e+05 5.4154121e+05 2.2712805e+04
+2.2771187e+05 2.3326967e+05 2.9179864e+04
+6.1904489e+04 5.7473467e+04 1.6170641e+04
+1.9402574e+04 1.0728050e+04 1.0780274e+04
+1.1958316e+04 1.8223691e+03 5.3435801e+03
+7.9015540e+03 2.7760939e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.7309444e+01 8.0589258e+00 7.4651287e+00
+2.8598798e+02 1.3653371e+02 1.0265255e+02
+3.6683157e+03 1.7939573e+03 9.1721514e+02
+3.7130365e+04 1.8502786e+04 4.8734176e+03
+2.4646473e+05 1.2428384e+05 5.1254183e+03
+6.4291854e+05 3.2550462e+05 4.5326360e+02
+1.0751296e+06 5.4546567e+05 -2.1365210e+03
+1.4125698e+06 7.1740745e+05 -1.2143149e+03
+1.6049865e+06 8.1543055e+05 -4.5846151e+01
+1.6626695e+06 8.4475049e+05 3.3045159e+02
+1.6243376e+06 8.2505325e+05 5.7065537e+02
+1.5184521e+06 7.7081577e+05 8.2408839e+02
+1.3442350e+06 6.8181272e+05 1.2906300e+03
+1.0912764e+06 5.5300702e+05 2.6911249e+03
+7.7459477e+05 3.9219484e+05 5.7441883e+03
+4.5106021e+05 2.2817142e+05 9.6079122e+03
+1.9630059e+05 9.8989867e+04 1.0381856e+04
+5.4844069e+04 2.7084808e+04 4.0792745e+03
+1.1873892e+04 5.3004721e+03 1.8204777e+03
+3.1209704e+03 8.1421410e+02 8.1706491e+02
+1.3516574e+03 9.6047346e+01 0.0000000e+00
+0 0 0
+0 0 0
+6.4765332e+00 0.0000000e+00 4.8913689e+00
+1.1611326e+02 0.0000000e+00 7.6611362e+01
+1.6592643e+03 0.0000000e+00 8.1736059e+02
+1.9466763e+04 0.0000000e+00 5.4466411e+03
+1.5910509e+05 0.0000000e+00 4.6556156e+03
+4.1591948e+05 0.0000000e+00 1.0083265e+03
+6.9142942e+05 0.0000000e+00 -7.6275413e+02
+9.0616827e+05 0.0000000e+00 -4.2327518e+02
+1.0298347e+06 0.0000000e+00 2.1598440e+01
+1.0675078e+06 0.0000000e+00 9.1614251e+01
+1.0430908e+06 0.0000000e+00 1.6834873e+02
+9.7511489e+05 0.0000000e+00 2.6065407e+02
+8.6315904e+05 0.0000000e+00 3.7701616e+02
+7.0048006e+05 0.0000000e+00 7.5335574e+02
+4.9680396e+05 0.0000000e+00 1.6400991e+03
+2.8910648e+05 0.0000000e+00 2.7360924e+03
+1.2667502e+05 0.0000000e+00 2.7277759e+03
+3.7269893e+04 0.0000000e+00 9.4036801e+02
+7.8290305e+03 0.0000000e+00 2.7609741e+02
+1.3460232e+03 0.0000000e+00 9.6048827e+01
+2.5765715e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+8.6958323e+00 -1.6516567e+01 1.4297268e+01
+1.8118011e+02 -3.2017252e+02 2.6940294e+02
+3.2250229e+03 -5.0206142e+03 3.7242585e+03
+5.2484059e+04 -6.4851080e+04 3.5558042e+04
+7.4465276e+05 -5.7658846e+05 2.6598829e+04
+1.9874590e+06 -1.5494643e+06 4.5236947e+03
+3.3001291e+06 -2.6000320e+06 -4.1439275e+03
+4.3211830e+06 -3.4178585e+06 -1.3001934e+03
+4.9114759e+06 -3.8838535e+06 9.1206788e+02
+5.0860598e+06 -4.0185221e+06 8.8211624e+02
+4.9590419e+06 -3.9163229e+06 1.2539654e+03
+4.6250527e+06 -3.6504112e+06 1.7273487e+03
+4.0836276e+06 -3.2207690e+06 2.0277653e+03
+3.3024440e+06 -2.6030349e+06 3.0986491e+03
+2.3286533e+06 -1.8349008e+06 6.1500818e+03
+1.3405998e+06 -1.0557076e+06 1.0364329e+04
+5.7606510e+05 -4.4931917e+05 1.0293424e+04
+1.6412505e+05 -1.1970859e+05 3.1468539e+03
+3.2600254e+04 -2.2442061e+04 8.1769145e+02
+5.0264617e+03 -3.2340303e+03 3.7128323e+02
+1.0002373e+03 -3.7129693e+02 0.0000000e+00
+0 0 0
+0 0 0
+2.1029867e+01 -4.2300705e+01 2.2063715e+01
+3.8552500e+02 -7.5691670e+02 3.5927088e+02
+5.7199105e+03 -1.0763376e+04 4.0504375e+03
+7.0488468e+04 -1.2301513e+05 2.8856383e+04
+6.0546217e+05 -9.3090105e+05 2.4171535e+04
+1.6166918e+06 -2.5007072e+06 1.6411436e+03
+2.7054174e+06 -4.2208713e+06 -7.8073939e+03
+3.5522034e+06 -5.5622155e+06 -3.0839495e+03
+4.0351490e+06 -6.3182650e+06 1.1649946e+03
+4.1749683e+06 -6.5317536e+06 2.0976485e+03
+4.0696704e+06 -6.3624990e+06 2.9408825e+03
+3.7954054e+06 -5.9282207e+06 3.7968982e+03
+3.3513199e+06 -5.2289051e+06 4.8480881e+03
+2.7108759e+06 -4.2259350e+06 8.1486390e+03
+1.9124023e+06 -2.9806516e+06 1.6091970e+04
+1.1009682e+06 -1.7162103e+06 2.6686677e+04
+4.6927903e+05 -7.2389852e+05 2.8287584e+04
+1.2649014e+05 -1.7328921e+05 1.0222136e+04
+2.5493409e+04 -3.0809064e+04 4.9696221e+03
+6.5825928e+03 -4.9727432e+03 3.2467127e+03
+5.0489349e+03 -8.2186176e+02 0.0000000e+00
+0 0 0
+0 0 0
+2.6748200e+01 -5.3702632e+01 8.5521368e+00
+4.5495822e+02 -9.2217643e+02 9.6662772e+01
+6.1459485e+03 -1.2669841e+04 4.7712649e+02
+6.7160089e+04 -1.4320650e+05 -1.9832216e+03
+4.9109751e+05 -1.1455428e+06 3.6917184e+03
+1.3082786e+06 -3.0650059e+06 -6.2363464e+03
+2.2004050e+06 -5.1849574e+06 -1.0918675e+04
+2.8951384e+06 -6.8426360e+06 -4.5518083e+03
+3.2870538e+06 -7.7695775e+06 1.2813358e+03
+3.3981521e+06 -8.0253362e+06 3.4537774e+03
+3.3114439e+06 -7.8129034e+06 4.8800729e+03
+3.0881127e+06 -7.2765676e+06 6.2517064e+03
+2.7272030e+06 -6.4165704e+06 8.5267710e+03
+2.2072923e+06 -5.1868102e+06 1.4870615e+04
+1.5593861e+06 -3.6630679e+06 2.9005363e+04
+9.0011006e+05 -2.1159317e+06 4.9687527e+04
+3.8362082e+05 -8.9372314e+05 6.3603199e+04
+9.9775194e+04 -1.8417180e+05 3.6615082e+04
+3.0964750e+04 -3.6769836e+04 3.1013678e+04
+2.5720019e+04 -1.0385014e+04 2.2664245e+04
+3.2955548e+04 -3.2116108e+03 0.0000000e+00
+0 0 0
+0 0 0
+2.4294339e+01 -4.3004885e+01 -1.1577693e+01
+3.9856823e+02 -7.1238971e+02 -2.5383222e+02
+5.2258240e+03 -9.5919263e+03 -4.0477975e+03
+5.6578114e+04 -1.1138571e+05 -4.6997185e+04
+4.2986825e+05 -1.2762551e+06 -2.3495099e+04
+1.1264215e+06 -3.3733568e+06 -1.6964098e+04
+1.8926012e+06 -5.7017194e+06 -1.3554463e+04
+2.4941949e+06 -7.5283815e+06 -3.7240230e+03
+2.8351227e+06 -8.5435182e+06 5.2282743e+03
+2.9345921e+06 -8.8168549e+06 1.0719927e+04
+2.8635617e+06 -8.5776395e+06 1.5441890e+04
+2.6731921e+06 -7.9851069e+06 2.1013287e+04
+2.3640359e+06 -7.0403561e+06 2.9685319e+04
+1.9206505e+06 -5.6944475e+06 4.5905172e+04
+1.3712746e+06 -4.0317846e+06 7.4839947e+04
+8.1451581e+05 -2.3511520e+06 1.2079234e+05
+3.7982113e+05 -1.0502899e+06 1.9816508e+05
+1.2716414e+05 -2.0189419e+05 1.8540354e+05
+1.0093113e+05 -6.5448556e+04 1.7559368e+05
+1.2840761e+05 -2.9270257e+04 1.2157069e+05
+1.6678109e+05 -1.0667456e+04 0.0000000e+00
+0 0 0
+0 0 0
+1.8390126e+01 -2.4721852e+01 -1.7196709e+01
+3.1152050e+02 -3.9415310e+02 -3.2192874e+02
+4.5594584e+03 -5.2829847e+03 -4.4737268e+03
+6.6009816e+04 -6.8676637e+04 -4.4337869e+04
+1.3158972e+06 -1.3234876e+06 1.7157598e+04
+3.5515325e+06 -3.4103911e+06 5.6231260e+04
+6.0369746e+06 -5.7407540e+06 8.3042855e+04
+7.9807228e+06 -7.5886283e+06 1.2233084e+05
+9.0385936e+06 -8.6195202e+06 1.7703985e+05
+9.3058830e+06 -8.8941121e+06 2.4646512e+05
+9.0649150e+06 -8.6455756e+06 3.3339102e+05
+8.5042325e+06 -8.0376161e+06 4.4011131e+05
+7.6173732e+06 -7.0770976e+06 5.7008350e+05
+6.3322173e+06 -5.7225158e+06 7.2738187e+05
+4.7223959e+06 -4.0624220e+06 9.0661144e+05
+3.0938400e+06 -2.3846315e+06 1.0655895e+06
+1.8145840e+06 -1.0395007e+06 1.0685844e+06
+3.8545553e+05 -1.2607230e+05 9.1114009e+05
+3.9073687e+05 -5.2259037e+04 7.3809968e+05
+4.7803566e+05 -2.8074340e+04 4.5794554e+05
+5.8660125e+05 -1.0888150e+04 0.0000000e+00
+0 0 0
+0 0 0
+1.3332762e+01 -1.3295686e+01 -8.9648708e+00
+2.3881494e+02 -2.1934635e+02 -1.3804532e+02
+3.8632577e+03 -3.2283440e+03 -1.4084699e+03
+6.3985481e+04 -4.9260268e+04 -7.1587229e+03
+1.2308028e+06 -1.1607449e+06 1.7955302e+04
+3.3041822e+06 -3.0203554e+06 8.5323496e+04
+5.6196490e+06 -5.0831022e+06 1.8479191e+05
+7.4671828e+06 -6.7220496e+06 3.1725890e+05
+8.5248525e+06 -7.6392134e+06 4.8296659e+05
+8.8672639e+06 -7.8833369e+06 6.8429118e+05
+8.7426650e+06 -7.6585971e+06 9.2500715e+05
+8.3246952e+06 -7.1106322e+06 1.2068999e+06
+7.6250141e+06 -6.2503374e+06 1.5288664e+06
+6.6009437e+06 -5.0467594e+06 1.8809459e+06
+5.3294630e+06 -3.5776058e+06 2.2267624e+06
+4.0707890e+06 -2.0837573e+06 2.4684511e+06
+3.1018843e+06 -8.6149880e+05 2.3989743e+06
+8.2533079e+05 -7.7580977e+04 2.1548399e+06
+9.1427992e+05 -3.0358467e+04 1.7451036e+06
+1.1172444e+06 -1.6799873e+04 1.0719519e+06
+1.3590717e+06 -6.3894611e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.1100947e+01 -7.5216468e+00 -2.3918991e+00
+2.1138695e+02 -1.3257855e+02 -2.2920610e+01
+3.6660312e+03 -2.1346430e+03 5.7731095e+01
+6.4275508e+04 -3.5344220e+04 6.7957734e+03
+1.1368196e+06 -9.2689516e+05 4.8345041e+04
+3.0600813e+06 -2.4419952e+06 1.5169850e+05
+5.2324102e+06 -4.1184607e+06 3.2535762e+05
+7.0036523e+06 -5.4502337e+06 5.6569855e+05
+8.0739140e+06 -6.1969664e+06 8.6829107e+05
+8.5024393e+06 -6.3958762e+06 1.2324750e+06
+8.5091168e+06 -6.2099074e+06 1.6590056e+06
+8.2557805e+06 -5.7568943e+06 2.1460421e+06
+7.7695702e+06 -5.0491835e+06 2.6859249e+06
+7.0320901e+06 -4.0661558e+06 3.2558061e+06
+6.1235267e+06 -2.8707785e+06 3.7956323e+06
+5.2702885e+06 -1.6516549e+06 4.1645150e+06
+4.6745223e+06 -6.5189227e+05 4.0635536e+06
+1.3720771e+06 -4.5138562e+04 3.6842220e+06
+1.5643255e+06 -1.4556146e+04 2.9931189e+06
+1.9165053e+06 -7.8947227e+03 1.8398533e+06
+2.3312073e+06 -2.9718137e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.0548122e+01 -4.4270039e+00 9.7153275e-01
+2.0744726e+02 -8.2130989e+01 3.1373048e+01
+3.6986517e+03 -1.3892640e+03 7.3590076e+02
+6.5914822e+04 -2.3738232e+04 1.4879427e+04
+1.0803337e+06 -6.6943126e+05 8.3823934e+04
+2.8987296e+06 -1.7800577e+06 2.2823300e+05
+4.9814029e+06 -3.0099202e+06 4.7016220e+05
+6.7174341e+06 -3.9866353e+06 8.0920509e+05
+7.8191778e+06 -4.5349382e+06 1.2386570e+06
+8.3317596e+06 -4.6809776e+06 1.7538517e+06
+8.4530003e+06 -4.5422821e+06 2.3513293e+06
+8.3371202e+06 -4.2048292e+06 3.0250906e+06
+8.0254175e+06 -3.6798865e+06 3.7618376e+06
+7.5210514e+06 -2.9553022e+06 4.5291394e+06
+6.9107806e+06 -2.0775695e+06 5.2493728e+06
+6.4004355e+06 -1.1822724e+06 5.7444216e+06
+6.1297931e+06 -4.5196084e+05 5.6154929e+06
+1.8811561e+06 -2.5246980e+04 5.1054205e+06
+2.1677812e+06 -6.5943627e+03 4.1538416e+06
+2.6598906e+06 -3.5994685e+03 2.5552254e+06
+3.2370907e+06 -1.4746552e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.0620922e+01 -2.3982599e+00 2.5451209e+00
+2.1113365e+02 -4.5686153e+01 5.7522115e+01
+3.7921031e+03 -7.8909647e+02 1.1049760e+03
+6.7764713e+04 -1.3632137e+04 2.0421638e+04
+1.0517833e+06 -4.0365386e+05 1.1260186e+05
+2.8036268e+06 -1.0794902e+06 2.9179513e+05
+4.8339166e+06 -1.8291759e+06 5.8619163e+05
+6.5566074e+06 -2.4245175e+06 9.9925648e+05
+7.6892074e+06 -2.7589523e+06 1.5233735e+06
+8.2648790e+06 -2.8479752e+06 2.1504571e+06
+8.4655018e+06 -2.7623716e+06 2.8731395e+06
+8.4406795e+06 -2.5543615e+06 3.6816901e+06
+8.2428861e+06 -2.2318045e+06 4.5583869e+06
+7.8919575e+06 -1.7886223e+06 5.4641677e+06
+7.4813114e+06 -1.2533816e+06 6.3099051e+06
+7.2045525e+06 -7.0792425e+05 6.8915524e+06
+7.1533562e+06 -2.6565822e+05 6.7350415e+06
+2.2483868e+06 -1.2880957e+04 6.1290853e+06
+2.6006552e+06 -2.8761960e+03 4.9891216e+06
+3.1933143e+06 -1.5858450e+03 3.0697359e+06
+3.8875723e+06 -6.8338155e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.0799214e+01 -7.6542456e-01 3.2597636e+00
+2.1520137e+02 -1.4727821e+01 7.0269622e+01
+3.8692258e+03 -2.5619500e+02 1.3063955e+03
+6.9111343e+04 -4.4410120e+03 2.3781970e+04
+1.0388197e+06 -1.3481980e+05 1.3035059e+05
+2.7536769e+06 -3.6151617e+05 3.3149550e+05
+4.7560100e+06 -6.1328521e+05 6.5739926e+05
+6.4736553e+06 -8.1322947e+05 1.1139404e+06
+7.6256440e+06 -9.2558388e+05 1.6930997e+06
+8.2370466e+06 -9.5547905e+05 2.3844780e+06
+8.4799943e+06 -9.2654264e+05 3.1779234e+06
+8.5015207e+06 -8.5628275e+05 4.0610485e+06
+8.3610491e+06 -7.4751366e+05 5.0132454e+06
+8.0887106e+06 -5.9842588e+05 5.9917014e+06
+7.7824837e+06 -4.1865830e+05 6.9015384e+06
+7.6294090e+06 -2.3558959e+05 7.5255755e+06
+7.6909996e+06 -8.7679195e+04 7.3490829e+06
+2.4502035e+06 -3.9708546e+03 6.6901507e+06
+2.8370041e+06 -8.1107355e+02 5.4467607e+06
+3.4848902e+06 -4.3762412e+02 3.3516542e+06
+4.2437810e+06 -1.8071715e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.0876311e+01 7.6542456e-01 3.4706880e+00
+2.1680295e+02 1.4727821e+01 7.4206789e+01
+3.8978337e+03 2.5619500e+02 1.3718833e+03
+6.9595035e+04 4.4410120e+03 2.4911897e+04
+1.0350566e+06 1.3481980e+05 1.3624475e+05
+2.7379731e+06 3.6151617e+05 3.4473005e+05
+4.7313712e+06 6.1328521e+05 6.8092180e+05
+6.4475563e+06 8.1322947e+05 1.1514654e+06
+7.6057959e+06 9.2558388e+05 1.7482099e+06
+8.2282934e+06 9.5547905e+05 2.4599300e+06
+8.4838837e+06 9.2654264e+05 3.2754579e+06
+8.5187559e+06 8.5628275e+05 4.1814361e+06
+8.3946636e+06 7.4751366e+05 5.1562533e+06
+8.1451880e+06 5.9842588e+05 6.1559192e+06
+7.8698982e+06 4.1865830e+05 7.0839526e+06
+7.7537604e+06 2.3558959e+05 7.7195159e+06
+7.8480713e+06 8.7679195e+04 7.5358756e+06
+2.5117570e+06 3.9708546e+03 6.8608269e+06
+2.9087444e+06 8.1107355e+02 5.5860189e+06
+3.5735288e+06 4.3762412e+02 3.4375057e+06
+4.3522988e+06 1.8071715e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.0799214e+01 2.3982599e+00 3.2597636e+00
+2.1520137e+02 4.5686153e+01 7.0269622e+01
+3.8692258e+03 7.8909647e+02 1.3063955e+03
+6.9111343e+04 1.3632137e+04 2.3781970e+04
+1.0388197e+06 4.0365386e+05 1.3035059e+05
+2.7536769e+06 1.0794902e+06 3.3149550e+05
+4.7560100e+06 1.8291759e+06 6.5739926e+05
+6.4736553e+06 2.4245175e+06 1.1139404e+06
+7.6256440e+06 2.7589523e+06 1.6930997e+06
+8.2370466e+06 2.8479752e+06 2.3844780e+06
+8.4799943e+06 2.7623716e+06 3.1779234e+06
+8.5015207e+06 2.5543615e+06 4.0610485e+06
+8.3610491e+06 2.2318045e+06 5.0132454e+06
+8.0887106e+06 1.7886223e+06 5.9917014e+06
+7.7824837e+06 1.2533816e+06 6.9015384e+06
+7.6294090e+06 7.0792425e+05 7.5255755e+06
+7.6909996e+06 2.6565822e+05 7.3490829e+06
+2.4502035e+06 1.2880957e+04 6.6901507e+06
+2.8370041e+06 2.8761960e+03 5.4467607e+06
+3.4848902e+06 1.5858450e+03 3.3516542e+06
+4.2437810e+06 6.8338158e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.0620922e+01 4.4270039e+00 2.5451209e+00
+2.1113365e+02 8.2130989e+01 5.7522115e+01
+3.7921031e+03 1.3892640e+03 1.1049760e+03
+6.7764713e+04 2.3738232e+04 2.0421638e+04
+1.0517833e+06 6.6943126e+05 1.1260186e+05
+2.8036268e+06 1.7800577e+06 2.9179513e+05
+4.8339166e+06 3.0099202e+06 5.8619163e+05
+6.5566074e+06 3.9866353e+06 9.9925648e+05
+7.6892074e+06 4.5349382e+06 1.5233735e+06
+8.2648790e+06 4.6809776e+06 2.1504571e+06
+8.4655018e+06 4.5422821e+06 2.8731395e+06
+8.4406795e+06 4.2048292e+06 3.6816901e+06
+8.2428861e+06 3.6798865e+06 4.5583869e+06
+7.8919575e+06 2.9553022e+06 5.4641677e+06
+7.4813114e+06 2.0775695e+06 6.3099051e+06
+7.2045525e+06 1.1822724e+06 6.8915524e+06
+7.1533562e+06 4.5196084e+05 6.7350415e+06
+2.2483868e+06 2.5246980e+04 6.1290853e+06
+2.6006552e+06 6.5943627e+03 4.9891216e+06
+3.1933143e+06 3.5994685e+03 3.0697359e+06
+3.8875723e+06 1.4746552e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.0548122e+01 7.5216468e+00 9.7153275e-01
+2.0744726e+02 1.3257855e+02 3.1373048e+01
+3.6986517e+03 2.1346430e+03 7.3590076e+02
+6.5914822e+04 3.5344220e+04 1.4879427e+04
+1.0803337e+06 9.2689516e+05 8.3823934e+04
+2.8987296e+06 2.4419952e+06 2.2823300e+05
+4.9814029e+06 4.1184607e+06 4.7016220e+05
+6.7174341e+06 5.4502337e+06 8.0920509e+05
+7.8191778e+06 6.1969664e+06 1.2386570e+06
+8.3317596e+06 6.3958762e+06 1.7538517e+06
+8.4530003e+06 6.2099074e+06 2.3513293e+06
+8.3371202e+06 5.7568943e+06 3.0250906e+06
+8.0254175e+06 5.0491835e+06 3.7618376e+06
+7.5210514e+06 4.0661558e+06 4.5291394e+06
+6.9107806e+06 2.8707785e+06 5.2493728e+06
+6.4004355e+06 1.6516549e+06 5.7444216e+06
+6.1297931e+06 6.5189227e+05 5.6154929e+06
+1.8811561e+06 4.5138562e+04 5.1054205e+06
+2.1677812e+06 1.4556146e+04 4.1538416e+06
+2.6598906e+06 7.8947227e+03 2.5552254e+06
+3.2370907e+06 2.9718136e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.1100947e+01 1.3295686e+01 -2.3918991e+00
+2.1138695e+02 2.1934635e+02 -2.2920610e+01
+3.6660312e+03 3.2283440e+03 5.7731095e+01
+6.4275508e+04 4.9260268e+04 6.7957734e+03
+1.1368196e+06 1.1607449e+06 4.8345041e+04
+3.0600813e+06 3.0203554e+06 1.5169850e+05
+5.2324102e+06 5.0831022e+06 3.2535762e+05
+7.0036523e+06 6.7220496e+06 5.6569855e+05
+8.0739140e+06 7.6392134e+06 8.6829107e+05
+8.5024393e+06 7.8833369e+06 1.2324750e+06
+8.5091168e+06 7.6585971e+06 1.6590056e+06
+8.2557805e+06 7.1106322e+06 2.1460421e+06
+7.7695702e+06 6.2503374e+06 2.6859249e+06
+7.0320901e+06 5.0467594e+06 3.2558061e+06
+6.1235267e+06 3.5776058e+06 3.7956323e+06
+5.2702885e+06 2.0837573e+06 4.1645150e+06
+4.6745223e+06 8.6149880e+05 4.0635536e+06
+1.3720771e+06 7.7580977e+04 3.6842220e+06
+1.5643255e+06 3.0358467e+04 2.9931189e+06
+1.9165053e+06 1.6799873e+04 1.8398533e+06
+2.3312073e+06 6.3894610e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.3332762e+01 2.4721852e+01 -8.9648708e+00
+2.3881494e+02 3.9415310e+02 -1.3804532e+02
+3.8632577e+03 5.2829847e+03 -1.4084699e+03
+6.3985481e+04 6.8676637e+04 -7.1587229e+03
+1.2308028e+06 1.3234876e+06 1.7955302e+04
+3.3041822e+06 3.4103911e+06 8.5323496e+04
+5.6196490e+06 5.7407540e+06 1.8479191e+05
+7.4671828e+06 7.5886283e+06 3.1725890e+05
+8.5248525e+06 8.6195202e+06 4.8296659e+05
+8.8672639e+06 8.8941121e+06 6.8429117e+05
+8.7426650e+06 8.6455756e+06 9.2500715e+05
+8.3246952e+06 8.0376161e+06 1.2068999e+06
+7.6250141e+06 7.0770976e+06 1.5288664e+06
+6.6009437e+06 5.7225158e+06 1.8809459e+06
+5.3294630e+06 4.0624220e+06 2.2267624e+06
+4.0707890e+06 2.3846315e+06 2.4684511e+06
+3.1018843e+06 1.0395007e+06 2.3989743e+06
+8.2533079e+05 1.2607230e+05 2.1548399e+06
+9.1427992e+05 5.2259037e+04 1.7451036e+06
+1.1172444e+06 2.8074340e+04 1.0719519e+06
+1.3590717e+06 1.0888150e+04 0.0000000e+00
+0 0 0
+0 0 0
+1.8390126e+01 4.3004885e+01 -1.7196709e+01
+3.1152050e+02 7.1238971e+02 -3.2192874e+02
+4.5594584e+03 9.5919263e+03 -4.4737268e+03
+6.6009816e+04 1.1138571e+05 -4.4337869e+04
+1.3158972e+06 1.2762551e+06 1.7157598e+04
+3.5515325e+06 3.3733568e+06 5.6231260e+04
+6.0369746e+06 5.7017194e+06 8.3042855e+04
+7.9807228e+06 7.5283815e+06 1.2233084e+05
+9.0385936e+06 8.5435182e+06 1.7703985e+05
+9.3058830e+06 8.8168549e+06 2.4646512e+05
+9.0649150e+06 8.5776395e+06 3.3339102e+05
+8.5042325e+06 7.9851069e+06 4.4011131e+05
+7.6173732e+06 7.0403561e+06 5.7008350e+05
+6.3322173e+06 5.6944475e+06 7.2738187e+05
+4.7223959e+06 4.0317846e+06 9.0661144e+05
+3.0938400e+06 2.3511520e+06 1.0655895e+06
+1.8145840e+06 1.0502899e+06 1.0685844e+06
+3.8545553e+05 2.0189419e+05 9.1114009e+05
+3.9073687e+05 6.5448556e+04 7.3809968e+05
+4.7803566e+05 2.9270257e+04 4.5794554e+05
+5.8660125e+05 1.0667456e+04 0.0000000e+00
+0 0 0
+0 0 0
+2.4294339e+01 5.3702632e+01 -1.1577693e+01
+3.9856823e+02 9.2217643e+02 -2.5383222e+02
+5.2258240e+03 1.2669841e+04 -4.0477975e+03
+5.6578114e+04 1.4320650e+05 -4.6997185e+04
+4.2986825e+05 1.1455428e+06 -2.3495099e+04
+1.1264215e+06 3.0650059e+06 -1.6964098e+04
+1.8926012e+06 5.1849574e+06 -1.3554463e+04
+2.4941949e+06 6.8426360e+06 -3.7240230e+03
+2.8351227e+06 7.7695775e+06 5.2282743e+03
+2.9345921e+06 8.0253362e+06 1.0719927e+04
+2.8635617e+06 7.8129034e+06 1.5441890e+04
+2.6731921e+06 7.2765676e+06 2.1013287e+04
+2.3640359e+06 6.4165704e+06 2.9685319e+04
+1.9206505e+06 5.1868102e+06 4.5905172e+04
+1.3712746e+06 3.6630679e+06 7.4839947e+04
+8.1451581e+05 2.1159317e+06 1.2079234e+05
+3.7982113e+05 8.9372314e+05 1.9816508e+05
+1.2716414e+05 1.8417180e+05 1.8540354e+05
+1.0093113e+05 3.6769836e+04 1.7559368e+05
+1.2840761e+05 1.0385014e+04 1.2157069e+05
+1.6678109e+05 3.2116108e+03 0.0000000e+00
+0 0 0
+0 0 0
+2.6748200e+01 4.2300705e+01 8.5521368e+00
+4.5495822e+02 7.5691670e+02 9.6662772e+01
+6.1459485e+03 1.0763376e+04 4.7712649e+02
+6.7160089e+04 1.2301513e+05 -1.9832216e+03
+4.9109751e+05 9.3090105e+05 3.6917184e+03
+1.3082786e+06 2.5007072e+06 -6.2363464e+03
+2.2004050e+06 4.2208713e+06 -1.0918675e+04
+2.8951384e+06 5.5622155e+06 -4.5518083e+03
+3.2870538e+06 6.3182650e+06 1.2813358e+03
+3.3981521e+06 6.5317536e+06 3.4537774e+03
+3.3114439e+06 6.3624990e+06 4.8800729e+03
+3.0881127e+06 5.9282207e+06 6.2517064e+03
+2.7272030e+06 5.2289051e+06 8.5267710e+03
+2.2072923e+06 4.2259350e+06 1.4870615e+04
+1.5593861e+06 2.9806516e+06 2.9005363e+04
+9.0011006e+05 1.7162103e+06 4.9687527e+04
+3.8362082e+05 7.2389852e+05 6.3603199e+04
+9.9775194e+04 1.7328921e+05 3.6615082e+04
+3.0964750e+04 3.0809064e+04 3.1013678e+04
+2.5720019e+04 4.9727432e+03 2.2664245e+04
+3.2955548e+04 8.2186178e+02 0.0000000e+00
+0 0 0
+0 0 0
+2.1029867e+01 1.6516567e+01 2.2063715e+01
+3.8552500e+02 3.2017252e+02 3.5927088e+02
+5.7199105e+03 5.0206142e+03 4.0504375e+03
+7.0488468e+04 6.4851080e+04 2.8856383e+04
+6.0546217e+05 5.7658846e+05 2.4171535e+04
+1.6166918e+06 1.5494643e+06 1.6411436e+03
+2.7054174e+06 2.6000320e+06 -7.8073938e+03
+3.5522034e+06 3.4178585e+06 -3.0839495e+03
+4.0351490e+06 3.8838535e+06 1.1649946e+03
+4.1749683e+06 4.0185221e+06 2.0976485e+03
+4.0696704e+06 3.9163229e+06 2.9408825e+03
+3.7954054e+06 3.6504112e+06 3.7968982e+03
+3.3513199e+06 3.2207690e+06 4.8480881e+03
+2.7108759e+06 2.6030349e+06 8.1486390e+03
+1.9124023e+06 1.8349008e+06 1.6091970e+04
+1.1009682e+06 1.0557076e+06 2.6686677e+04
+4.6927903e+05 4.4931917e+05 2.8287584e+04
+1.2649014e+05 1.1970859e+05 1.0222136e+04
+2.5493409e+04 2.2442061e+04 4.9696222e+03
+6.5825928e+03 3.2340303e+03 3.2467127e+03
+5.0489349e+03 3.7129695e+02 0.0000000e+00
+0 0 0
+0 0 0
+8.6958323e+00 0.0000000e+00 1.4297268e+01
+1.8118011e+02 0.0000000e+00 2.6940294e+02
+3.2250229e+03 0.0000000e+00 3.7242585e+03
+5.2484059e+04 0.0000000e+00 3.5558042e+04
+7.4465276e+05 0.0000000e+00 2.6598829e+04
+1.9874590e+06 0.0000000e+00 4.5236947e+03
+3.3001291e+06 0.0000000e+00 -4.1439274e+03
+4.3211830e+06 0.0000000e+00 -1.3001935e+03
+4.9114759e+06 0.0000000e+00 9.1206784e+02
+5.0860598e+06 0.0000000e+00 8.8211627e+02
+4.9590419e+06 0.0000000e+00 1.2539654e+03
+4.6250527e+06 0.0000000e+00 1.7273487e+03
+4.0836276e+06 0.0000000e+00 2.0277653e+03
+3.3024440e+06 0.0000000e+00 3.0986491e+03
+2.3286533e+06 0.0000000e+00 6.1500818e+03
+1.3405998e+06 0.0000000e+00 1.0364329e+04
+5.7606510e+05 0.0000000e+00 1.0293424e+04
+1.6412505e+05 0.0000000e+00 3.1468540e+03
+3.2600254e+04 0.0000000e+00 8.1769149e+02
+5.0264617e+03 0.0000000e+00 3.7128326e+02
+1.0002374e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.5768081e+05 -1.7438164e+06 2.0022395e+05
+2.6002564e+06 -5.5402821e+06 3.0290959e+05
+4.4665424e+06 -9.2065848e+06 8.4277221e+04
+5.7092892e+06 -1.1797475e+07 -7.1604087e+04
+6.3961879e+06 -1.3336245e+07 -1.9532693e+03
+6.6543694e+06 -1.3841081e+07 5.5568230e+04
+6.5036009e+06 -1.3461870e+07 3.7616475e+04
+6.0411259e+06 -1.2502579e+07 3.6326992e+04
+5.3210201e+06 -1.1013770e+07 4.7391918e+04
+4.2859894e+06 -8.8672492e+06 6.9299399e+04
+2.9844885e+06 -6.1752770e+06 1.2830596e+05
+1.7014007e+06 -3.4867387e+06 1.6496656e+05
+7.6189990e+05 -1.4946145e+06 1.2301843e+05
+2.6148624e+05 -4.6279131e+05 5.3366201e+04
+6.7181002e+04 -1.0084364e+05 1.3476442e+04
+1.2584880e+04 -1.5564363e+04 1.5975216e+03
+1.4333534e+03 -1.6383450e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.0369790e+06 -3.1603448e+06 3.7954946e+05
+3.2116773e+06 -8.6108649e+06 2.3845499e+05
+5.3467075e+06 -1.4287029e+07 -2.7808412e+04
+6.9128045e+06 -1.8698511e+07 -3.9577260e+04
+7.8472512e+06 -2.1259543e+07 3.6469901e+04
+8.1501366e+06 -2.1990992e+07 3.6243715e+04
+7.9373527e+06 -2.1390647e+07 2.7668092e+04
+7.3817472e+06 -1.9900611e+07 4.3952962e+04
+6.5054540e+06 -1.7525763e+07 5.0491448e+04
+5.2456618e+06 -1.4123522e+07 6.1102659e+04
+3.6743969e+06 -9.9004413e+06 1.1187004e+05
+2.0984715e+06 -5.6380357e+06 1.6469553e+05
+9.1173506e+05 -2.3774566e+06 1.3580260e+05
+2.8389644e+05 -6.5888992e+05 4.8004761e+04
+6.2518092e+04 -1.2486102e+05 9.5040568e+03
+1.0023733e+04 -1.7085708e+04 1.0016677e+03
+1.1910249e+03 -1.8277025e+03 0.0000000e+00
+0 0 0
+0 0 0
+5.1319178e+00 -2.4983395e+01 2.8547309e+01
+1.0200610e+02 -5.5346005e+02 6.6118137e+02
+1.7062726e+03 -1.0544317e+04 1.2724248e+04
+2.5929164e+04 -1.8278951e+05 2.2206865e+05
+3.6041070e+05 -2.7081895e+06 1.5415536e+05
+9.4959927e+05 -7.4412044e+06 2.2354554e+04
+1.5497154e+06 -1.2490032e+07 -2.4228725e+04
+2.0140426e+06 -1.6411900e+07 -3.6995401e+03
+2.2869422e+06 -1.8647027e+07 8.3174699e+03
+2.3627873e+06 -1.9265124e+07 5.7220957e+03
+2.2954330e+06 -1.8728722e+07 7.4065698e+03
+2.1370193e+06 -1.7415412e+07 1.0241192e+04
+1.8858235e+06 -1.5328599e+07 1.0881220e+04
+1.5224040e+06 -1.2346379e+07 1.3777733e+04
+1.0667228e+06 -8.6502493e+06 2.5516265e+04
+6.0363470e+05 -4.9192350e+06 4.3680640e+04
+2.5028301e+05 -2.0508434e+06 4.2849536e+04
+6.7320977e+04 -5.3091625e+05 1.1679934e+04
+1.2100970e+04 -9.5115927e+04 2.4341257e+03
+1.6446756e+03 -1.2794109e+04 1.5243222e+03
+3.8792060e+02 -1.5240117e+03 1.8329508e+03
+1.1944052e+03 -9.9479619e+02 1.6333418e+03
+1.4442809e+03 -1.6030206e+03 0.0000000e+00
+1.2802492e+01 -5.7933573e+01 4.1177553e+01
+2.2673984e+02 -1.1362345e+03 7.8273719e+02
+3.2080007e+03 -1.8349159e+04 1.1099490e+04
+3.7199641e+04 -2.4908372e+05 1.1068253e+05
+2.9726388e+05 -2.3668354e+06 7.7526717e+04
+7.7744855e+05 -6.5251801e+06 7.4570930e+02
+1.2835457e+06 -1.1044072e+07 -2.3343032e+04
+1.6766012e+06 -1.4554384e+07 -5.2564306e+03
+1.9022875e+06 -1.6525673e+07 6.2517307e+03
+1.9633394e+06 -1.7054465e+07 7.2221702e+03
+1.9075432e+06 -1.6568869e+07 9.4962033e+03
+1.7756221e+06 -1.5397953e+07 1.1819897e+04
+1.5661310e+06 -1.3545145e+07 1.3554882e+04
+1.2639926e+06 -1.0905416e+07 1.9475143e+04
+8.8614602e+05 -7.6403156e+06 3.5797664e+04
+5.0224440e+05 -4.3437814e+06 5.9067935e+04
+2.0727134e+05 -1.7910088e+06 6.1241006e+04
+5.2936599e+04 -4.1597519e+05 1.9853490e+04
+9.8277321e+03 -7.0246483e+04 1.0649722e+04
+2.2475197e+03 -1.0652901e+04 1.2843587e+04
+1.6476636e+03 -2.4436529e+03 1.7164507e+04
+1.0104568e+04 -9.6523935e+03 1.5717536e+04
+1.2809316e+04 -1.3931750e+04 0.0000000e+00
+1.6699816e+01 -6.8207674e+01 2.0322486e+01
+2.7712777e+02 -1.2502168e+03 3.1213522e+02
+3.6194711e+03 -1.8740157e+04 3.2296099e+03
+3.7922629e+04 -2.3616595e+05 1.9549298e+04
+2.6467618e+05 -2.1384579e+06 1.7593200e+04
+6.9461382e+05 -5.8791388e+06 -1.4783324e+04
+1.1578742e+06 -9.9924029e+06 -2.3921296e+04
+1.5181645e+06 -1.3194191e+07 -7.1405398e+03
+1.7217848e+06 -1.4972666e+07 5.1208132e+03
+1.7761847e+06 -1.5436008e+07 8.6307984e+03
+1.7259223e+06 -1.4986144e+07 1.1427206e+04
+1.6061011e+06 -1.3918462e+07 1.3947992e+04
+1.4158803e+06 -1.2237006e+07 1.7131930e+04
+1.1427255e+06 -9.8502488e+06 2.6531895e+04
+8.0243093e+05 -6.9060866e+06 4.9258063e+04
+4.5712131e+05 -3.9350093e+06 8.3474696e+04
+1.9002525e+05 -1.6180733e+06 1.0413482e+05
+4.7716840e+04 -3.2166650e+05 6.1884487e+04
+1.3905409e+04 -6.2139170e+04 7.0836515e+04
+9.9224767e+03 -2.0232555e+04 9.6213712e+04
+1.2244815e+04 -1.1956977e+04 1.2643778e+05
+6.3535307e+04 -4.9551491e+04 1.0280157e+05
+6.8654105e+04 -5.5562882e+04 0.0000000e+00
+1.5458518e+01 -5.1415221e+01 -7.9566319e+00
+2.4921646e+02 -8.9265602e+02 -2.1616568e+02
+3.1922965e+03 -1.2768391e+04 -4.1544041e+03
+3.3636339e+04 -1.5907571e+05 -5.8302867e+04
+2.4937464e+05 -1.9859202e+06 -3.0346997e+04
+6.4895206e+05 -5.4037936e+06 -2.8222686e+04
+1.0851823e+06 -9.1891330e+06 -2.4073595e+04
+1.4272865e+06 -1.2144704e+07 -6.6523672e+03
+1.6208237e+06 -1.3772209e+07 7.1899039e+03
+1.6744709e+06 -1.4182757e+07 1.4060740e+04
+1.6296669e+06 -1.3757829e+07 1.9640895e+04
+1.5177536e+06 -1.2769141e+07 2.5759095e+04
+1.3392023e+06 -1.1221505e+07 3.5091819e+04
+1.0847117e+06 -9.0336743e+06 5.4456253e+04
+7.7038221e+05 -6.3441767e+06 9.3438777e+04
+4.5311212e+05 -3.6428971e+06 1.6273030e+05
+2.0738170e+05 -1.5729079e+06 2.9000432e+05
+6.6747594e+04 -2.9603709e+05 3.2479145e+05
+4.8384446e+04 -1.0779662e+05 4.2299559e+05
+5.3910231e+04 -6.3785376e+04 5.4104578e+05
+6.8664706e+04 -4.4684867e+04 6.7189006e+05
+2.8991429e+05 -1.4163474e+05 4.7405903e+05
+2.6759634e+05 -1.2819108e+05 0.0000000e+00
+1.1822801e+01 -2.7849289e+01 -1.6998606e+01
+1.9765017e+02 -4.5613898e+02 -3.3964530e+02
+2.8445933e+03 -6.2694066e+03 -5.1237644e+03
+4.0446677e+04 -8.2035566e+04 -5.6600774e+04
+8.7624620e+05 -1.6265046e+06 2.3634643e+04
+2.3806920e+06 -4.2653714e+06 5.6052914e+04
+4.0511663e+06 -7.2167573e+06 6.9485546e+04
+5.3618078e+06 -9.5558418e+06 9.9538737e+04
+6.0785134e+06 -1.0858263e+07 1.4567285e+05
+6.2568573e+06 -1.1194139e+07 2.0607982e+05
+6.0844411e+06 -1.0857292e+07 2.8601634e+05
+5.6913648e+06 -1.0060496e+07 3.9023863e+05
+5.0785277e+06 -8.8196439e+06 5.2722272e+05
+4.2038330e+06 -7.0903716e+06 7.1230422e+05
+3.1204225e+06 -4.9929710e+06 9.6307197e+05
+2.0295105e+06 -2.8976428e+06 1.2821471e+06
+1.1606717e+06 -1.2467701e+06 1.6099215e+06
+2.1112530e+05 -1.7066786e+05 1.6588825e+06
+1.9437986e+05 -8.8458388e+04 1.8359013e+06
+2.1215306e+05 -6.2582446e+04 2.1005810e+06
+2.5615179e+05 -4.6180190e+04 2.4325257e+06
+9.3152816e+05 -1.7240028e+05 1.5317631e+06
+7.7890682e+05 -1.7270877e+05 0.0000000e+00
+8.5485110e+00 -1.3910090e+01 -9.1549493e+00
+1.5141990e+02 -2.3055760e+02 -1.4734129e+02
+2.4169257e+03 -3.3805240e+03 -1.5898918e+03
+3.9480634e+04 -5.0889630e+04 -8.2309816e+03
+8.4376885e+05 -1.2601554e+06 1.2453736e+04
+2.2969110e+06 -3.3135711e+06 6.7924656e+04
+3.9219993e+06 -5.5985296e+06 1.4734672e+05
+5.2219986e+06 -7.4193285e+06 2.5601753e+05
+5.9676186e+06 -8.4410708e+06 3.9605935e+05
+6.2053868e+06 -8.7089684e+06 5.7276630e+05
+6.1079695e+06 -8.4448918e+06 7.9506180e+05
+5.7998197e+06 -7.8132228e+06 1.0726641e+06
+5.2937627e+06 -6.8341689e+06 1.4184405e+06
+4.5648187e+06 -5.4843338e+06 1.8485278e+06
+3.6674326e+06 -3.8595169e+06 2.3771041e+06
+2.7720752e+06 -2.2303477e+06 3.0085227e+06
+2.0376595e+06 -9.1671897e+05 3.7426965e+06
+4.6105151e+05 -9.7202341e+04 4.0335102e+06
+4.6672962e+05 -5.1600918e+04 4.4442030e+06
+5.1260972e+05 -3.7311260e+04 5.0235666e+06
+6.1563545e+05 -2.6402195e+04 5.7472249e+06
+2.1335541e+06 -1.1544240e+05 3.5567129e+06
+1.7290468e+06 -1.3400280e+05 0.0000000e+00
+7.0114260e+00 -7.2764091e+00 -2.5441599e+00
+1.3224647e+02 -1.2756817e+02 -2.6393120e+01
+2.2687934e+03 -2.0381866e+03 2.8507274e+01
+3.9339809e+04 -3.3576226e+04 7.6508025e+03
+7.8165676e+05 -9.3393212e+05 3.6590379e+04
+2.1460834e+06 -2.4807683e+06 1.1778557e+05
+3.6917286e+06 -4.1978713e+06 2.5780887e+05
+4.9542275e+06 -5.5682100e+06 4.5611518e+05
+5.7166518e+06 -6.3406476e+06 7.1295427e+05
+6.0173788e+06 -6.5451340e+06 1.0341804e+06
+6.0124518e+06 -6.3440688e+06 1.4300224e+06
+5.8194295e+06 -5.8601159e+06 1.9132664e+06
+5.4610248e+06 -5.1131721e+06 2.5008150e+06
+4.9265372e+06 -4.0920703e+06 3.2141044e+06
+4.2691833e+06 -2.8695898e+06 4.0785208e+06
+3.6291223e+06 -1.6405083e+06 5.1298476e+06
+3.0939219e+06 -6.4407672e+05 6.4378057e+06
+7.7412352e+05 -5.3112274e+04 6.9916693e+06
+8.0931380e+05 -2.5396714e+04 7.7204767e+06
+8.9344906e+05 -1.8346891e+04 8.7245686e+06
+1.0747580e+06 -1.2812307e+04 9.9674280e+06
+3.6888583e+06 -5.7041386e+04 6.2201687e+06
+2.9917424e+06 -6.2716088e+04 0.0000000e+00
+6.5549181e+00 -4.0273243e+00 7.4411950e-01
+1.2794935e+02 -7.4426331e+01 2.7100195e+01
+2.2619382e+03 -1.2565005e+03 6.8212768e+02
+3.9958491e+04 -2.1532147e+04 1.4594380e+04
+7.3881852e+05 -6.4358407e+05 6.5761505e+04
+2.0299405e+06 -1.7248950e+06 1.7867718e+05
+3.5145551e+06 -2.9261006e+06 3.7375422e+05
+4.7539506e+06 -3.8851168e+06 6.5414443e+05
+5.5395592e+06 -4.4269890e+06 1.0201045e+06
+5.9010293e+06 -4.5710161e+06 1.4767169e+06
+5.9797565e+06 -4.4283912e+06 2.0342830e+06
+5.8879934e+06 -4.0843781e+06 2.7076720e+06
+5.6575574e+06 -3.5554937e+06 3.5178536e+06
+5.2908973e+06 -2.8374432e+06 4.4933806e+06
+4.8421659e+06 -1.9816532e+06 5.6740587e+06
+4.4288418e+06 -1.1209989e+06 7.1261429e+06
+4.0743109e+06 -4.2597826e+05 8.9635266e+06
+1.0663356e+06 -2.8677300e+04 9.7539122e+06
+1.1277648e+06 -1.2525876e+04 1.0781058e+07
+1.2471533e+06 -9.5847121e+03 1.2185033e+07
+1.5011016e+06 -7.5527847e+03 1.3915762e+07
+5.1538232e+06 -3.3557554e+04 8.7384552e+06
+4.2054318e+06 -2.8159806e+04 0.0000000e+00
+6.5265807e+00 -2.1033446e+00 2.1703618e+00
+1.2894455e+02 -4.0058360e+01 4.9991491e+01
+2.2995575e+03 -6.9359719e+02 9.7963372e+02
+4.0791079e+04 -1.2059754e+04 1.8480873e+04
+7.1483850e+05 -3.7730715e+05 8.9148788e+04
+1.9552317e+06 -1.0173204e+06 2.2996931e+05
+3.3996199e+06 -1.7295694e+06 4.6773482e+05
+4.6273470e+06 -2.2983320e+06 8.1021043e+05
+5.4340172e+06 -2.6200761e+06 1.2584877e+06
+5.8413295e+06 -2.7056878e+06 1.8167088e+06
+5.9794247e+06 -2.6201534e+06 2.4945482e+06
+5.9569611e+06 -2.4138319e+06 3.3077203e+06
+5.8130314e+06 -2.0976021e+06 4.2796835e+06
+5.5605645e+06 -1.6703643e+06 5.4439976e+06
+5.2556572e+06 -1.1628666e+06 6.8508652e+06
+5.0006917e+06 -6.5289827e+05 8.5866254e+06
+4.7696027e+06 -2.4338133e+05 1.0787782e+07
+1.2769507e+06 -1.4416237e+04 1.1744957e+07
+1.3553436e+06 -5.9944941e+03 1.2983737e+07
+1.4989899e+06 -4.7571481e+03 1.4673234e+07
+1.8038950e+06 -3.8890446e+03 1.6753248e+07
+6.2051682e+06 -1.9052725e+04 1.0533575e+07
+5.0751076e+06 -1.9661369e+04 0.0000000e+00
+6.5961615e+00 -6.6064427e-01 2.7603519e+00
+1.3071726e+02 -1.2733145e+01 5.9919237e+01
+2.3351326e+03 -2.2244059e+02 1.1228559e+03
+4.1431187e+04 -3.8851269e+03 2.0628386e+04
+7.0304368e+05 -1.2435875e+05 1.0345604e+05
+1.9138767e+06 -3.3629005e+05 2.6222585e+05
+3.3352076e+06 -5.7244114e+05 5.2590003e+05
+4.5570745e+06 -7.6104364e+05 9.0519241e+05
+5.3766829e+06 -8.6778594e+05 1.4018633e+06
+5.8101754e+06 -8.9619230e+05 2.0192391e+06
+5.9805953e+06 -8.6765664e+05 2.7661412e+06
+5.9944729e+06 -7.9884705e+05 3.6582042e+06
+5.8954751e+06 -6.9355660e+05 4.7197327e+06
+5.7031555e+06 -5.5166468e+05 5.9865882e+06
+5.4753132e+06 -3.8341210e+05 7.5143042e+06
+5.3059995e+06 -2.1445519e+05 9.3992706e+06
+5.1390161e+06 -7.9246223e+04 1.1787119e+07
+1.3924701e+06 -4.4119535e+03 1.2834848e+07
+1.4789865e+06 -1.7716969e+03 1.4188643e+07
+1.6354335e+06 -1.3810004e+03 1.6034724e+07
+1.9678834e+06 -1.0358102e+03 1.8307768e+07
+6.7829058e+06 -5.2724904e+03 1.1511082e+07
+5.5475901e+06 -7.8718697e+03 0.0000000e+00
+6.6307687e+00 6.6064427e-01 2.9242539e+00
+1.3146452e+02 1.2733145e+01 6.2796394e+01
+2.3487901e+03 2.2244059e+02 1.1669589e+03
+4.1665241e+04 3.8851269e+03 2.1326499e+04
+6.9947428e+05 1.2435875e+05 1.0819128e+05
+1.9005666e+06 3.3629005e+05 2.7301761e+05
+3.3142970e+06 5.7244114e+05 5.4520944e+05
+4.5342421e+06 7.6104364e+05 9.3643634e+05
+5.3579763e+06 8.6778594e+05 1.4486840e+06
+5.7996481e+06 8.9619230e+05 2.0849447e+06
+5.9798697e+06 8.6765664e+05 2.8536454e+06
+6.0044559e+06 7.9884705e+05 3.7702513e+06
+5.9186179e+06 6.9355660e+05 4.8591838e+06
+5.7441617e+06 5.5166468e+05 6.1568808e+06
+5.5395501e+06 3.8341210e+05 7.7204047e+06
+5.3962250e+06 2.1445519e+05 9.6490297e+06
+5.2480237e+06 7.9246223e+04 1.2090585e+07
+1.4276418e+06 4.4119535e+03 1.3165876e+07
+1.5163717e+06 1.7716969e+03 1.4554706e+07
+1.6766396e+06 1.3810004e+03 1.6448833e+07
+2.0174754e+06 1.0358099e+03 1.8781584e+07
+6.9606137e+06 5.2725104e+03 1.1810426e+07
+5.6924472e+06 7.8718080e+03 0.0000000e+00
+6.5961615e+00 2.1033446e+00 2.7603519e+00
+1.3071726e+02 4.0058360e+01 5.9919237e+01
+2.3351326e+03 6.9359719e+02 1.1228559e+03
+4.1431187e+04 1.2059754e+04 2.0628386e+04
+7.0304368e+05 3.7730715e+05 1.0345604e+05
+1.9138767e+06 1.0173204e+06 2.6222585e+05
+3.3352076e+06 1.7295694e+06 5.2590003e+05
+4.5570745e+06 2.2983320e+06 9.0519241e+05
+5.3766829e+06 2.6200761e+06 1.4018633e+06
+5.8101754e+06 2.7056878e+06 2.0192391e+06
+5.9805953e+06 2.6201534e+06 2.7661412e+06
+5.9944729e+06 2.4138319e+06 3.6582042e+06
+5.8954751e+06 2.0976021e+06 4.7197327e+06
+5.7031555e+06 1.6703643e+06 5.9865882e+06
+5.4753132e+06 1.1628666e+06 7.5143042e+06
+5.3059995e+06 6.5289827e+05 9.3992706e+06
+5.1390161e+06 2.4338133e+05 1.1787119e+07
+1.3924701e+06 1.4416237e+04 1.2834848e+07
+1.4789865e+06 5.9944941e+03 1.4188643e+07
+1.6354335e+06 4.7571481e+03 1.6034724e+07
+1.9678834e+06 3.8890461e+03 1.8307768e+07
+6.7829058e+06 1.9052744e+04 1.1511082e+07
+5.5475900e+06 1.9661420e+04 0.0000000e+00
+6.5265807e+00 4.0273243e+00 2.1703618e+00
+1.2894455e+02 7.4426331e+01 4.9991491e+01
+2.2995575e+03 1.2565005e+03 9.7963372e+02
+4.0791079e+04 2.1532147e+04 1.8480873e+04
+7.1483850e+05 6.4358407e+05 8.9148788e+04
+1.9552317e+06 1.7248950e+06 2.2996931e+05
+3.3996199e+06 2.9261006e+06 4.6773482e+05
+4.6273470e+06 3.8851168e+06 8.1021043e+05
+5.4340172e+06 4.4269890e+06 1.2584877e+06
+5.8413295e+06 4.5710161e+06 1.8167088e+06
+5.9794247e+06 4.4283912e+06 2.4945482e+06
+5.9569611e+06 4.0843781e+06 3.3077203e+06
+5.8130314e+06 3.5554937e+06 4.2796835e+06
+5.5605645e+06 2.8374432e+06 5.4439976e+06
+5.2556572e+06 1.9816532e+06 6.8508652e+06
+5.0006917e+06 1.1209989e+06 8.5866254e+06
+4.7696027e+06 4.2597826e+05 1.0787782e+07
+1.2769507e+06 2.8677300e+04 1.1744957e+07
+1.3553436e+06 1.2525876e+04 1.2983737e+07
+1.4989899e+06 9.5847121e+03 1.4673234e+07
+1.8038950e+06 7.5527842e+03 1.6753248e+07
+6.2051683e+06 3.3557566e+04 1.0533575e+07
+5.0751075e+06 2.8159820e+04 0.0000000e+00
+6.5549181e+00 7.2764091e+00 7.4411950e-01
+1.2794935e+02 1.2756817e+02 2.7100195e+01
+2.2619382e+03 2.0381866e+03 6.8212768e+02
+3.9958491e+04 3.3576226e+04 1.4594380e+04
+7.3881852e+05 9.3393212e+05 6.5761505e+04
+2.0299405e+06 2.4807683e+06 1.7867718e+05
+3.5145551e+06 4.1978713e+06 3.7375422e+05
+4.7539506e+06 5.5682100e+06 6.5414443e+05
+5.5395592e+06 6.3406476e+06 1.0201045e+06
+5.9010293e+06 6.5451340e+06 1.4767169e+06
+5.9797565e+06 6.3440688e+06 2.0342830e+06
+5.8879934e+06 5.8601159e+06 2.7076720e+06
+5.6575574e+06 5.1131721e+06 3.5178536e+06
+5.2908973e+06 4.0920703e+06 4.4933806e+06
+4.8421659e+06 2.8695898e+06 5.6740587e+06
+4.4288418e+06 1.6405083e+06 7.1261429e+06
+4.0743109e+06 6.4407672e+05 8.9635266e+06
+1.0663356e+06 5.3112274e+04 9.7539122e+06
+1.1277648e+06 2.5396714e+04 1.0781058e+07
+1.2471533e+06 1.8346891e+04 1.2185033e+07
+1.5011016e+06 1.2812305e+04 1.3915762e+07
+5.1538232e+06 5.7041367e+04 8.7384551e+06
+4.2054318e+06 6.2716086e+04 0.0000000e+00
+7.0114260e+00 1.3910090e+01 -2.5441599e+00
+1.3224647e+02 2.3055760e+02 -2.6393120e+01
+2.2687934e+03 3.3805240e+03 2.8507274e+01
+3.9339809e+04 5.0889630e+04 7.6508025e+03
+7.8165676e+05 1.2601554e+06 3.6590379e+04
+2.1460834e+06 3.3135711e+06 1.1778557e+05
+3.6917286e+06 5.5985296e+06 2.5780887e+05
+4.9542275e+06 7.4193285e+06 4.5611518e+05
+5.7166518e+06 8.4410708e+06 7.1295427e+05
+6.0173788e+06 8.7089684e+06 1.0341804e+06
+6.0124518e+06 8.4448918e+06 1.4300224e+06
+5.8194295e+06 7.8132228e+06 1.9132664e+06
+5.4610248e+06 6.8341689e+06 2.5008150e+06
+4.9265372e+06 5.4843338e+06 3.2141044e+06
+4.2691833e+06 3.8595169e+06 4.0785208e+06
+3.6291223e+06 2.2303477e+06 5.1298476e+06
+3.0939219e+06 9.1671897e+05 6.4378057e+06
+7.7412352e+05 9.7202341e+04 6.9916693e+06
+8.0931380e+05 5.1600918e+04 7.7204767e+06
+8.9344906e+05 3.7311260e+04 8.7245686e+06
+1.0747580e+06 2.6402194e+04 9.9674280e+06
+3.6888584e+06 1.1544241e+05 6.2201686e+06
+2.9917425e+06 1.3400282e+05 0.0000000e+00
+8.5485110e+00 2.7849289e+01 -9.1549493e+00
+1.5141990e+02 4.5613898e+02 -1.4734129e+02
+2.4169257e+03 6.2694066e+03 -1.5898918e+03
+3.9480634e+04 8.2035566e+04 -8.2309816e+03
+8.4376885e+05 1.6265046e+06 1.2453736e+04
+2.2969110e+06 4.2653714e+06 6.7924656e+04
+3.9219993e+06 7.2167573e+06 1.4734672e+05
+5.2219986e+06 9.5558418e+06 2.5601753e+05
+5.9676186e+06 1.0858263e+07 3.9605935e+05
+6.2053868e+06 1.1194139e+07 5.7276630e+05
+6.1079695e+06 1.0857292e+07 7.9506180e+05
+5.7998197e+06 1.0060496e+07 1.0726641e+06
+5.2937627e+06 8.8196439e+06 1.4184405e+06
+4.5648187e+06 7.0903716e+06 1.8485278e+06
+3.6674326e+06 4.9929710e+06 2.3771041e+06
+2.7720752e+06 2.8976428e+06 3.0085227e+06
+2.0376595e+06 1.2467701e+06 3.7426965e+06
+4.6105151e+05 1.7066786e+05 4.0335102e+06
+4.6672962e+05 8.8458388e+04 4.4442030e+06
+5.1260972e+05 6.2582446e+04 5.0235666e+06
+6.1563545e+05 4.6180191e+04 5.7472249e+06
+2.1335541e+06 1.7240029e+05 3.5567128e+06
+1.7290469e+06 1.7270877e+05 0.0000000e+00
+1.1822801e+01 5.1415221e+01 -1.6998606e+01
+1.9765017e+02 8.9265602e+02 -3.3964530e+02
+2.8445933e+03 1.2768391e+04 -5.1237644e+03
+4.0446677e+04 1.5907571e+05 -5.6600774e+04
+8.7624620e+05 1.9859202e+06 2.3634643e+04
+2.3806920e+06 5.4037936e+06 5.6052914e+04
+4.0511663e+06 9.1891330e+06 6.9485546e+04
+5.3618078e+06 1.2144704e+07 9.9538737e+04
+6.0785134e+06 1.3772209e+07 1.4567285e+05
+6.2568573e+06 1.4182757e+07 2.0607982e+05
+6.0844411e+06 1.3757829e+07 2.8601634e+05
+5.6913648e+06 1.2769141e+07 3.9023863e+05
+5.0785277e+06 1.1221505e+07 5.2722272e+05
+4.2038330e+06 9.0336743e+06 7.1230422e+05
+3.1204225e+06 6.3441767e+06 9.6307197e+05
+2.0295105e+06 3.6428971e+06 1.2821471e+06
+1.1606717e+06 1.5729079e+06 1.6099215e+06
+2.1112530e+05 2.9603709e+05 1.6588825e+06
+1.9437986e+05 1.0779662e+05 1.8359013e+06
+2.1215306e+05 6.3785376e+04 2.1005810e+06
+2.5615179e+05 4.4684868e+04 2.4325257e+06
+9.3152823e+05 1.4163475e+05 1.5317630e+06
+7.7890693e+05 1.2819104e+05 0.0000000e+00
+1.5458518e+01 6.8207674e+01 -7.9566319e+00
+2.4921646e+02 1.2502168e+03 -2.1616568e+02
+3.1922965e+03 1.8740157e+04 -4.1544041e+03
+3.3636339e+04 2.3616595e+05 -5.8302867e+04
+2.4937464e+05 2.1384579e+06 -3.0346997e+04
+6.4895206e+05 5.8791388e+06 -2.8222686e+04
+1.0851823e+06 9.9924029e+06 -2.4073595e+04
+1.4272865e+06 1.3194191e+07 -6.6523672e+03
+1.6208237e+06 1.4972666e+07 7.1899039e+03
+1.6744709e+06 1.5436008e+07 1.4060740e+04
+1.6296669e+06 1.4986144e+07 1.9640895e+04
+1.5177536e+06 1.3918462e+07 2.5759095e+04
+1.3392023e+06 1.2237006e+07 3.5091819e+04
+1.0847117e+06 9.8502488e+06 5.4456253e+04
+7.7038221e+05 6.9060866e+06 9.3438777e+04
+4.5311212e+05 3.9350093e+06 1.6273030e+05
+2.0738170e+05 1.6180733e+06 2.9000432e+05
+6.6747594e+04 3.2166650e+05 3.2479145e+05
+4.8384446e+04 6.2139170e+04 4.2299559e+05
+5.3910231e+04 2.0232555e+04 5.4104578e+05
+6.8664706e+04 1.1956976e+04 6.7189005e+05
+2.8991432e+05 4.9551511e+04 4.7405897e+05
+2.6759637e+05 5.5562875e+04 0.0000000e+00
+1.6699816e+01 5.7933573e+01 2.0322486e+01
+2.7712777e+02 1.1362345e+03 3.1213522e+02
+3.6194711e+03 1.8349159e+04 3.2296099e+03
+3.7922629e+04 2.4908372e+05 1.9549298e+04
+2.6467618e+05 2.3668354e+06 1.7593200e+04
+6.9461382e+05 6.5251801e+06 -1.4783324e+04
+1.1578742e+06 1.1044072e+07 -2.3921296e+04
+1.5181645e+06 1.4554384e+07 -7.1405398e+03
+1.7217848e+06 1.6525673e+07 5.1208132e+03
+1.7761847e+06 1.7054465e+07 8.6307984e+03
+1.7259223e+06 1.6568869e+07 1.1427206e+04
+1.6061011e+06 1.5397953e+07 1.3947992e+04
+1.4158803e+06 1.3545145e+07 1.7131930e+04
+1.1427255e+06 1.0905416e+07 2.6531895e+04
+8.0243093e+05 7.6403156e+06 4.9258063e+04
+4.5712131e+05 4.3437814e+06 8.3474696e+04
+1.9002525e+05 1.7910088e+06 1.0413482e+05
+4.7716840e+04 4.1597519e+05 6.1884487e+04
+1.3905409e+04 7.0246483e+04 7.0836515e+04
+9.9224767e+03 1.0652901e+04 9.6213712e+04
+1.2244816e+04 2.4436535e+03 1.2643778e+05
+6.3535351e+04 9.6524342e+03 1.0280151e+05
+6.8654027e+04 1.3931823e+04 0.0000000e+00
+1.2802492e+01 2.4983395e+01 4.1177553e+01
+2.2673984e+02 5.5346005e+02 7.8273719e+02
+3.2080007e+03 1.0544317e+04 1.1099490e+04
+3.7199641e+04 1.8278951e+05 1.1068253e+05
+2.9726388e+05 2.7081895e+06 7.7526717e+04
+7.7744855e+05 7.4412044e+06 7.4570926e+02
+1.2835457e+06 1.2490032e+07 -2.3343031e+04
+1.6766012e+06 1.6411900e+07 -5.2564308e+03
+1.9022875e+06 1.8647027e+07 6.2517306e+03
+1.9633394e+06 1.9265124e+07 7.2221702e+03
+1.9075432e+06 1.8728722e+07 9.4962032e+03
+1.7756221e+06 1.7415412e+07 1.1819897e+04
+1.5661310e+06 1.5328599e+07 1.3554882e+04
+1.2639926e+06 1.2346379e+07 1.9475143e+04
+8.8614602e+05 8.6502493e+06 3.5797664e+04
+5.0224440e+05 4.9192350e+06 5.9067935e+04
+2.0727134e+05 2.0508434e+06 6.1241006e+04
+5.2936599e+04 5.3091625e+05 1.9853490e+04
+9.8277321e+03 9.5115927e+04 1.0649722e+04
+2.2475199e+03 1.2794109e+04 1.2843587e+04
+1.6476644e+03 1.5240126e+03 1.7164515e+04
+1.0104651e+04 9.9482870e+02 1.5717469e+04
+1.2809330e+04 1.6030903e+03 0.0000000e+00
+5.1319177e+00 0.0000000e+00 2.8547309e+01
+1.0200610e+02 0.0000000e+00 6.6118137e+02
+1.7062726e+03 0.0000000e+00 1.2724248e+04
+2.5929164e+04 0.0000000e+00 2.2206865e+05
+3.6041070e+05 3.1603448e+06 1.5415536e+05
+9.4959927e+05 8.6108649e+06 2.2354554e+04
+1.5497154e+06 1.4287029e+07 -2.4228720e+04
+2.0140426e+06 1.8698511e+07 -3.6995470e+03
+2.2869422e+06 2.1259543e+07 8.3174679e+03
+2.3627873e+06 2.1990992e+07 5.7220984e+03
+2.2954330e+06 2.1390647e+07 7.4065645e+03
+2.1370193e+06 1.9900611e+07 1.0241191e+04
+1.8858235e+06 1.7525763e+07 1.0881222e+04
+1.5224040e+06 1.4123522e+07 1.3777731e+04
+1.0667228e+06 9.9004413e+06 2.5516264e+04
+6.0363469e+05 5.6380357e+06 4.3680640e+04
+2.5028300e+05 2.3774566e+06 4.2849536e+04
+6.7320969e+04 6.5888991e+05 1.1679935e+04
+1.2100961e+04 1.2486102e+05 2.4341273e+03
+1.6446697e+03 1.7085698e+04 1.5243234e+03
+3.8792252e+02 1.8276960e+03 1.8329526e+03
+1.1944593e+03 0.0000000e+00 1.6333224e+03
+1.4443261e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.0369789e+06 1.7438165e+06 3.7954936e+05
+3.2116773e+06 5.5402819e+06 2.3845502e+05
+5.3467075e+06 9.2065847e+06 -2.7808153e+04
+6.9128045e+06 1.1797475e+07 -3.9576988e+04
+7.8472513e+06 1.3336245e+07 3.6469964e+04
+8.1501365e+06 1.3841081e+07 3.6243639e+04
+7.9373528e+06 1.3461869e+07 2.7668057e+04
+7.3817472e+06 1.2502579e+07 4.3952956e+04
+6.5054540e+06 1.1013770e+07 5.0491440e+04
+5.2456618e+06 8.8672492e+06 6.1102635e+04
+3.6743968e+06 6.1752770e+06 1.1187008e+05
+2.0984715e+06 3.4867388e+06 1.6469554e+05
+9.1173504e+05 1.4946145e+06 1.3580259e+05
+2.8389649e+05 4.6279125e+05 4.8004771e+04
+6.2518110e+04 1.0084361e+05 9.5040674e+03
+1.0023710e+04 1.5564379e+04 1.0016759e+03
+1.1910183e+03 1.6383530e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.5768080e+05 0.0000000e+00 2.0022371e+05
+2.6002573e+06 0.0000000e+00 3.0291006e+05
+4.4665427e+06 0.0000000e+00 8.4277497e+04
+5.7092895e+06 0.0000000e+00 -7.1603987e+04
+6.3961882e+06 0.0000000e+00 -1.9535463e+03
+6.6543694e+06 0.0000000e+00 5.5568100e+04
+6.5036009e+06 0.0000000e+00 3.7616443e+04
+6.0411259e+06 0.0000000e+00 3.6326937e+04
+5.3210201e+06 0.0000000e+00 4.7391861e+04
+4.2859894e+06 0.0000000e+00 6.9299320e+04
+2.9844884e+06 0.0000000e+00 1.2830601e+05
+1.7014006e+06 0.0000000e+00 1.6496660e+05
+7.6189989e+05 0.0000000e+00 1.2301842e+05
+2.6148625e+05 0.0000000e+00 5.3366185e+04
+6.7181060e+04 0.0000000e+00 1.3476371e+04
+1.2584878e+04 0.0000000e+00 1.5975091e+03
+1.4334079e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.0294302e+06 -2.8264474e+06 3.9754062e+05
+3.7017735e+06 -9.3224670e+06 7.3982996e+05
+6.5257213e+06 -1.5642217e+07 2.9707949e+05
+8.3092235e+06 -1.9989912e+07 -1.6268360e+05
+9.1952400e+06 -2.2563305e+07 -3.3531045e+04
+9.5609525e+06 -2.3439300e+07 1.5442721e+05
+9.3735152e+06 -2.2764875e+07 1.2067693e+05
+8.6891569e+06 -2.1068919e+07 9.6486436e+04
+7.6336284e+06 -1.8499732e+07 1.2813000e+05
+6.1326850e+06 -1.4833465e+07 2.0251966e+05
+4.2407723e+06 -1.0260224e+07 3.5034530e+05
+2.4048263e+06 -5.7508024e+06 4.2098876e+05
+1.0921667e+06 -2.4685681e+06 3.0654823e+05
+3.9353053e+05 -7.8364618e+05 1.3819897e+05
+1.1041645e+05 -1.7889461e+05 3.7287625e+04
+2.2927938e+04 -2.9481630e+04 4.9527197e+03
+2.8281987e+03 -3.2550150e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.3816193e+05 -2.8527610e+06 5.2513065e+05
+1.7701085e+06 -7.7455772e+06 3.8980969e+05
+2.9178940e+06 -1.2780342e+07 -4.3252106e+04
+3.6739508e+06 -1.6709244e+07 -8.5066281e+04
+4.1460937e+06 -1.9010550e+07 6.3335770e+04
+4.3263883e+06 -1.9621766e+07 6.9550401e+04
+4.2025063e+06 -1.9003378e+07 4.2900659e+04
+3.8908805e+06 -1.7605994e+07 7.0843287e+04
+3.4332012e+06 -1.5439144e+07 8.2508446e+04
+2.7706633e+06 -1.2369925e+07 9.3966726e+04
+1.9228426e+06 -8.5872595e+06 1.7255674e+05
+1.0738786e+06 -4.8010100e+06 2.4735732e+05
+4.5429422e+05 -1.9581252e+06 1.9435528e+05
+1.3960992e+05 -5.1546870e+05 7.0464324e+04
+2.9878222e+04 -9.0032934e+04 1.4242523e+04
+4.4777619e+03 -1.1028939e+04 1.3358031e+03
+4.5096000e+02 -1.1791475e+03 0.0000000e+00
+0 0 0
+0 0 0
+1.6043498e+00 -2.2314499e+01 2.5842067e+01
+2.7104993e+01 -4.9927497e+02 6.0001814e+02
+3.6007245e+02 -9.5869263e+03 1.1533145e+04
+3.9995201e+03 -1.6681178e+05 2.0027457e+05
+4.0999753e+04 -2.4659293e+06 1.3285381e+05
+9.3953502e+04 -6.7633633e+06 6.2856370e+03
+1.3001367e+05 -1.1324493e+07 -2.9861561e+04
+1.6012194e+05 -1.4883951e+07 -1.2341982e+03
+1.8557674e+05 -1.6920148e+07 9.7295859e+03
+1.9055929e+05 -1.7443950e+07 4.1408929e+03
+1.8068364e+05 -1.6890379e+07 5.8909302e+03
+1.6810665e+05 -1.5640212e+07 9.0214686e+03
+1.5029878e+05 -1.3703420e+07 8.8226035e+03
+1.2239751e+05 -1.0970711e+07 9.6148819e+03
+8.4821498e+04 -7.6132631e+06 1.7519803e+04
+4.4137775e+04 -4.2557667e+06 3.1773409e+04
+1.3986783e+04 -1.7210888e+06 3.1033165e+04
+1.6790058e+03 -4.2623136e+05 7.4378003e+03
+-3.4658230e+02 -7.1557075e+04 1.4094932e+03
+-1.3377720e+02 -8.8314202e+03 9.9042723e+02
+8.1115992e+00 -9.9022193e+02 1.1813139e+03
+4.3913743e+02 -1.2935271e+03 3.2301084e+03
+2.8282307e+03 -4.9908410e+03 0.0000000e+00
+4.4487802e+00 -5.1245452e+01 3.7284665e+01
+6.9951911e+01 -1.0160951e+03 7.1089270e+02
+8.3922232e+02 -1.6586328e+04 1.0079073e+04
+7.7804143e+03 -2.2724535e+05 9.9931869e+04
+4.5704673e+04 -2.1748991e+06 6.0460879e+04
+1.0439341e+05 -6.0161113e+06 -1.3736009e+04
+1.5786986e+05 -1.0185097e+07 -2.7455435e+04
+2.0241718e+05 -1.3434310e+07 -2.9118485e+03
+2.3184024e+05 -1.5259895e+07 7.2819523e+03
+2.3790438e+05 -1.5717631e+07 6.3985720e+03
+2.2847747e+05 -1.5213830e+07 8.9154674e+03
+2.1265048e+05 -1.4079510e+07 1.1184438e+04
+1.8844126e+05 -1.2326643e+07 1.2097018e+04
+1.5244825e+05 -9.8630647e+06 1.5995425e+04
+1.0619386e+05 -6.8454815e+06 2.8165973e+04
+5.7773110e+04 -3.8297331e+06 4.6603704e+04
+2.1100366e+04 -1.5356624e+06 4.7348289e+04
+4.0679245e+03 -3.4440513e+05 1.4390741e+04
+3.9885552e+02 -5.5440565e+04 7.7031069e+03
+-3.3489990e+01 -7.7049821e+03 8.8576785e+03
+-1.3922857e+02 -1.4070446e+03 1.1061393e+04
+4.5157487e+03 -1.4508868e+04 2.9865553e+04
+2.3460307e+04 -3.8684771e+04 0.0000000e+00
+6.3585349e+00 -5.9692661e+01 1.8788490e+01
+9.6657571e+01 -1.1056287e+03 2.8879236e+02
+1.1221762e+03 -1.6758737e+04 2.9584963e+03
+1.0139877e+04 -2.1356841e+05 1.7064312e+04
+5.9489758e+04 -1.9592134e+06 6.5650784e+03
+1.4516679e+05 -5.4346127e+06 -2.5486435e+04
+2.3308480e+05 -9.2584289e+06 -2.7365528e+04
+3.0343778e+05 -1.2241303e+07 -5.6464108e+03
+3.4537428e+05 -1.3895416e+07 6.2852839e+03
+3.5547258e+05 -1.4299427e+07 8.7927988e+03
+3.4372733e+05 -1.3834599e+07 1.1756814e+04
+3.1946865e+05 -1.2795327e+07 1.4206402e+04
+2.8168441e+05 -1.1194861e+07 1.6620452e+04
+2.2716317e+05 -8.9549023e+06 2.4020311e+04
+1.5885005e+05 -6.2205628e+06 4.2682517e+04
+8.9016239e+04 -3.4899928e+06 7.1047286e+04
+3.5580129e+04 -1.3956155e+06 8.5445564e+04
+8.3904965e+03 -2.6931190e+05 4.9678676e+04
+2.0272572e+03 -4.9898463e+04 5.6014725e+04
+3.9290505e+02 -1.4711572e+04 7.2550887e+04
+-3.6800678e+02 -7.6422544e+03 9.1398918e+04
+3.0502694e+04 -7.3202493e+04 1.8312493e+05
+1.1335389e+05 -1.4432224e+05 0.0000000e+00
+6.3980709e+00 -4.4517082e+01 -6.1151320e+00
+9.6964639e+01 -7.7989266e+02 -1.7959939e+02
+1.1479041e+03 -1.1260129e+04 -3.6338150e+03
+1.1075298e+04 -1.4144689e+05 -5.3194296e+04
+7.5959988e+04 -1.8022228e+06 -3.6770224e+04
+1.9068459e+05 -4.9773790e+06 -3.5736465e+04
+3.1390406e+05 -8.4958083e+06 -2.7078804e+04
+4.1209228e+05 -1.1246765e+07 -6.4219309e+03
+4.6900116e+05 -1.2757226e+07 7.2103763e+03
+4.8421666e+05 -1.3115111e+07 1.3149283e+04
+4.7017527e+05 -1.2680211e+07 1.8252421e+04
+4.3724177e+05 -1.1720032e+07 2.3469316e+04
+3.8544131e+05 -1.0248585e+07 3.0954117e+04
+3.1209315e+05 -8.1982424e+06 4.6912703e+04
+2.2183721e+05 -5.7052643e+06 8.0159184e+04
+1.3054367e+05 -3.2271497e+06 1.3988452e+05
+5.9115624e+04 -1.3506691e+06 2.4320417e+05
+1.6869857e+04 -2.4905710e+05 2.7282710e+05
+8.5128041e+03 -8.9081653e+04 3.5188193e+05
+4.1462382e+03 -4.9769508e+04 4.3670386e+05
+1.7226614e+03 -3.2711678e+04 5.2871533e+05
+1.4316202e+05 -2.0380232e+05 8.0606665e+05
+4.0387118e+05 -3.2014406e+05 0.0000000e+00
+5.3552793e+00 -2.3805531e+01 -1.4244029e+01
+8.6835323e+01 -3.9235885e+02 -2.9096300e+02
+1.2161234e+03 -5.4156961e+03 -4.5069260e+03
+1.7129924e+04 -7.0725490e+04 -5.1911575e+04
+4.2406179e+05 -1.4074847e+06 5.5346819e+03
+1.1596253e+06 -3.7785950e+06 2.7817409e+04
+1.9765283e+06 -6.4333326e+06 3.9979662e+04
+2.6242116e+06 -8.5365332e+06 6.7343967e+04
+2.9843731e+06 -9.7002475e+06 1.0450588e+05
+3.0766591e+06 -9.9813088e+06 1.5090156e+05
+2.9908654e+06 -9.6487015e+06 2.1296801e+05
+2.7924635e+06 -8.9034362e+06 2.9527358e+05
+2.4857619e+06 -7.7668310e+06 4.0628505e+05
+2.0551172e+06 -6.2047906e+06 5.6154921e+05
+1.5266125e+06 -4.3303104e+06 7.8040528e+05
+9.8758825e+05 -2.4771983e+06 1.0723761e+06
+5.2753012e+05 -1.0366117e+06 1.3914603e+06
+6.0258347e+04 -1.4761366e+05 1.4408838e+06
+3.6506991e+04 -7.5939611e+04 1.5856146e+06
+2.1732810e+04 -4.9915306e+04 1.7761807e+06
+1.4489410e+04 -3.4028598e+04 2.0191600e+06
+4.6617958e+05 -2.6002864e+05 2.5407344e+06
+1.1200796e+06 -4.4221388e+05 0.0000000e+00
+4.2336328e+00 -1.1588216e+01 -7.9024370e+00
+7.4231828e+01 -1.9184706e+02 -1.3122616e+02
+1.1765131e+03 -2.7958753e+03 -1.5106345e+03
+1.9139152e+04 -4.1612707e+04 -1.0281935e+04
+4.7562013e+05 -1.0479240e+06 -1.6939445e+03
+1.3117921e+06 -2.8326272e+06 3.7457099e+04
+2.2507285e+06 -4.8226966e+06 9.8091743e+04
+3.0082158e+06 -6.4072006e+06 1.8254198e+05
+3.4487353e+06 -7.2896147e+06 2.9079255e+05
+3.5930694e+06 -7.5064139e+06 4.2821508e+05
+3.5376295e+06 -7.2545167e+06 6.0437028e+05
+3.3545150e+06 -6.6837238e+06 8.2996258e+05
+3.0540105e+06 -5.8170933e+06 1.1199771e+06
+2.6240166e+06 -4.6389668e+06 1.4949553e+06
+2.0901616e+06 -3.2364909e+06 1.9784068e+06
+1.5280814e+06 -1.8457067e+06 2.5909091e+06
+9.8916212e+05 -7.3914657e+05 3.3419414e+06
+1.3299314e+05 -8.3733162e+04 3.6061193e+06
+9.1344900e+04 -4.4880517e+04 3.9504449e+06
+5.9571906e+04 -2.9488334e+04 4.3830557e+06
+4.5840924e+04 -1.8207261e+04 4.9370289e+06
+1.0979554e+06 -1.7949730e+05 5.8920960e+06
+2.4502976e+06 -3.6566033e+05 0.0000000e+00
+3.6883196e+00 -5.8380140e+00 -2.4270954e+00
+6.9071012e+01 -1.0166580e+02 -2.9432893e+01
+1.1748318e+03 -1.6090795e+03 -1.2226704e+02
+2.0152826e+04 -2.6261809e+04 3.7138182e+03
+4.7120670e+05 -7.5336063e+05 1.9600542e+04
+1.3187495e+06 -2.0625138e+06 7.6820988e+04
+2.2844625e+06 -3.5197893e+06 1.8117980e+05
+3.0782646e+06 -4.6819186e+06 3.3186065e+05
+3.5615226e+06 -5.3319462e+06 5.2932131e+05
+3.7534804e+06 -5.4935863e+06 7.8039222e+05
+3.7486295e+06 -5.3072363e+06 1.0969342e+06
+3.6197499e+06 -4.8816271e+06 1.4945172e+06
+3.3813904e+06 -4.2379122e+06 1.9949706e+06
+3.0242766e+06 -3.3704692e+06 2.6287336e+06
+2.5679580e+06 -2.3439329e+06 3.4374008e+06
+2.0637813e+06 -1.3234038e+06 4.4804389e+06
+1.5067710e+06 -5.0628229e+05 5.8347255e+06
+2.2310552e+05 -4.5596350e+04 6.3476067e+06
+1.6119803e+05 -2.2834603e+04 6.9736765e+06
+1.0846403e+05 -1.4973512e+04 7.7441467e+06
+8.7439474e+04 -8.9077782e+03 8.7221658e+06
+1.9413835e+06 -8.7299723e+04 1.0377444e+07
+4.2569116e+06 -1.8160675e+05 0.0000000e+00
+3.5441943e+00 -3.1129045e+00 2.8561430e-01
+6.8621856e+01 -5.7137414e+01 1.5084723e+01
+1.2009367e+03 -9.5793382e+02 4.2494049e+02
+2.0969452e+04 -1.6333584e+04 9.4857552e+03
+4.5929014e+05 -5.0793566e+05 4.3589165e+04
+1.2922811e+06 -1.4055697e+06 1.2430456e+05
+2.2560793e+06 -2.4059993e+06 2.6899031e+05
+3.0642699e+06 -3.2043126e+06 4.8106507e+05
+3.5781876e+06 -3.6520299e+06 7.6252028e+05
+3.8132595e+06 -3.7640906e+06 1.1207943e+06
+3.8587497e+06 -3.6347292e+06 1.5692940e+06
+3.7861721e+06 -3.3380496e+06 2.1275378e+06
+3.6140937e+06 -2.8909264e+06 2.8240156e+06
+3.3369069e+06 -2.2926803e+06 3.7002171e+06
+2.9687240e+06 -1.5881730e+06 4.8178991e+06
+2.5369785e+06 -8.8759137e+05 6.2739500e+06
+1.9795167e+06 -3.2847341e+05 8.1909354e+06
+3.0678741e+05 -2.4829734e+04 8.9297169e+06
+2.2546080e+05 -1.2012869e+04 9.8211992e+06
+1.5225316e+05 -8.5122325e+03 1.0909638e+07
+1.2318886e+05 -6.1020977e+03 1.2284745e+07
+2.7347593e+06 -5.2556712e+04 1.4669068e+07
+6.0275219e+06 -7.8005477e+04 0.0000000e+00
+3.5648411e+00 -1.5836931e+00 1.4325282e+00
+6.9870416e+01 -3.0016606e+01 3.3385858e+01
+1.2342768e+03 -5.1755535e+02 6.5828817e+02
+2.1671752e+04 -8.9771132e+03 1.2421144e+04
+4.5073792e+05 -2.9361650e+05 6.2202567e+04
+1.2661212e+06 -8.1828921e+05 1.6403257e+05
+2.2214923e+06 -1.4043128e+06 3.4047364e+05
+3.0361537e+06 -1.8721320e+06 5.9948642e+05
+3.5715551e+06 -2.1348853e+06 9.4480405e+05
+3.8387583e+06 -2.2008419e+06 1.3841266e+06
+3.9216115e+06 -2.1243529e+06 1.9315635e+06
+3.8901163e+06 -1.9486375e+06 2.6089962e+06
+3.7663061e+06 -1.6845602e+06 3.4493553e+06
+3.5483230e+06 -1.3330201e+06 4.5019367e+06
+3.2470260e+06 -9.2052081e+05 5.8429157e+06
+2.8721493e+06 -5.1063335e+05 7.5945000e+06
+2.3165593e+06 -1.8523654e+05 9.9043065e+06
+3.6701470e+05 -1.2585818e+04 1.0801999e+07
+2.7079497e+05 -6.0091822e+03 1.1880543e+07
+1.8208784e+05 -4.3533844e+03 1.3193287e+07
+1.4606309e+05 -3.1627065e+03 1.4848179e+07
+3.2900036e+06 -3.2064135e+04 1.7742854e+07
+7.2978792e+06 -5.4414940e+04 0.0000000e+00
+3.6159431e+00 -4.9116051e-01 1.8876858e+00
+7.1126446e+01 -9.4331915e+00 4.0895090e+01
+1.2596871e+03 -1.6432339e+02 7.6310857e+02
+2.2150562e+04 -2.8660678e+03 1.3932688e+04
+4.4606285e+05 -9.6108536e+04 7.3405551e+04
+1.2488156e+06 -2.6877768e+05 1.8895512e+05
+2.1969031e+06 -4.6192239e+05 3.8486921e+05
+3.0140210e+06 -6.1614628e+05 6.7193695e+05
+3.5615166e+06 -7.0282414e+05 1.0550421e+06
+3.8471333e+06 -7.2460485e+05 1.5418471e+06
+3.9508626e+06 -6.9926360e+05 2.1464906e+06
+3.9416138e+06 -6.4101786e+05 2.8917302e+06
+3.8437661e+06 -5.5361610e+05 3.8124951e+06
+3.6582643e+06 -4.3757261e+05 4.9619388e+06
+3.3946582e+06 -3.0166149e+05 6.4237345e+06
+3.0527194e+06 -1.6669818e+05 8.3330795e+06
+2.4982889e+06 -5.9910582e+04 1.0848481e+07
+4.0013735e+05 -3.8585274e+03 1.1832086e+07
+2.9525749e+05 -1.7987841e+03 1.3011605e+07
+1.9777741e+05 -1.2429004e+03 1.4446150e+07
+1.5765756e+05 -7.3657648e+02 1.6253950e+07
+3.5902213e+06 -9.1986451e+03 1.9423770e+07
+7.9785247e+06 -2.3709019e+04 0.0000000e+00
+3.6383420e+00 4.9116051e-01 2.0101057e+00
+7.1617178e+01 9.4331915e+00 4.2991067e+01
+1.2689710e+03 1.6432339e+02 7.9416329e+02
+2.2319290e+04 2.8660678e+03 1.4407979e+04
+4.4457660e+05 9.6108536e+04 7.7088595e+04
+1.2428107e+06 2.6877768e+05 1.9728920e+05
+2.1881023e+06 4.6192239e+05 3.9963918e+05
+3.0057483e+06 6.1614628e+05 6.9584041e+05
+3.5570142e+06 7.0282414e+05 1.0911543e+06
+3.8484167e+06 7.2460485e+05 1.5931760e+06
+3.9585643e+06 6.9926360e+05 2.2159543e+06
+3.9559747e+06 6.4101786e+05 2.9823997e+06
+3.8658556e+06 5.5361610e+05 3.9279298e+06
+3.6901920e+06 4.3757261e+05 5.1067543e+06
+3.4382572e+06 3.0166149e+05 6.6047242e+06
+3.1067315e+06 1.6669818e+05 8.5608213e+06
+2.5526646e+06 5.9910582e+04 1.1136359e+07
+4.1025206e+05 3.8585274e+03 1.2146032e+07
+3.0262827e+05 1.7987841e+03 1.3356178e+07
+2.0242609e+05 1.2429005e+03 1.4827906e+07
+1.6106483e+05 7.3657715e+02 1.6682843e+07
+3.6831884e+06 9.1987336e+03 1.9941871e+07
+8.1849582e+06 2.3709020e+04 0.0000000e+00
+3.6159431e+00 1.5836931e+00 1.8876858e+00
+7.1126446e+01 3.0016606e+01 4.0895090e+01
+1.2596871e+03 5.1755535e+02 7.6310857e+02
+2.2150562e+04 8.9771132e+03 1.3932688e+04
+4.4606285e+05 2.9361650e+05 7.3405551e+04
+1.2488156e+06 8.1828921e+05 1.8895512e+05
+2.1969031e+06 1.4043128e+06 3.8486921e+05
+3.0140210e+06 1.8721320e+06 6.7193695e+05
+3.5615166e+06 2.1348853e+06 1.0550421e+06
+3.8471333e+06 2.2008419e+06 1.5418471e+06
+3.9508626e+06 2.1243529e+06 2.1464906e+06
+3.9416138e+06 1.9486375e+06 2.8917302e+06
+3.8437661e+06 1.6845602e+06 3.8124951e+06
+3.6582643e+06 1.3330201e+06 4.9619388e+06
+3.3946582e+06 9.2052081e+05 6.4237345e+06
+3.0527194e+06 5.1063335e+05 8.3330795e+06
+2.4982889e+06 1.8523654e+05 1.0848481e+07
+4.0013735e+05 1.2585818e+04 1.1832086e+07
+2.9525749e+05 6.0091822e+03 1.3011605e+07
+1.9777741e+05 4.3533845e+03 1.4446150e+07
+1.5765753e+05 3.1627092e+03 1.6253950e+07
+3.5902205e+06 3.2064141e+04 1.9423770e+07
+7.9785247e+06 5.4414874e+04 0.0000000e+00
+3.5648411e+00 3.1129045e+00 1.4325282e+00
+6.9870416e+01 5.7137414e+01 3.3385858e+01
+1.2342768e+03 9.5793382e+02 6.5828817e+02
+2.1671752e+04 1.6333584e+04 1.2421144e+04
+4.5073792e+05 5.0793566e+05 6.2202567e+04
+1.2661212e+06 1.4055697e+06 1.6403256e+05
+2.2214923e+06 2.4059993e+06 3.4047364e+05
+3.0361537e+06 3.2043126e+06 5.9948642e+05
+3.5715551e+06 3.6520299e+06 9.4480405e+05
+3.8387583e+06 3.7640906e+06 1.3841266e+06
+3.9216115e+06 3.6347292e+06 1.9315635e+06
+3.8901163e+06 3.3380496e+06 2.6089962e+06
+3.7663061e+06 2.8909264e+06 3.4493553e+06
+3.5483230e+06 2.2926803e+06 4.5019367e+06
+3.2470260e+06 1.5881730e+06 5.8429157e+06
+2.8721493e+06 8.8759137e+05 7.5945000e+06
+2.3165593e+06 3.2847341e+05 9.9043065e+06
+3.6701470e+05 2.4829734e+04 1.0801999e+07
+2.7079497e+05 1.2012869e+04 1.1880543e+07
+1.8208784e+05 8.5122324e+03 1.3193287e+07
+1.4606303e+05 6.1020995e+03 1.4848179e+07
+3.2900014e+06 5.2556654e+04 1.7742853e+07
+7.2978791e+06 7.8005418e+04 0.0000000e+00
+3.5441943e+00 5.8380140e+00 2.8561430e-01
+6.8621856e+01 1.0166580e+02 1.5084723e+01
+1.2009367e+03 1.6090795e+03 4.2494049e+02
+2.0969452e+04 2.6261809e+04 9.4857552e+03
+4.5929014e+05 7.5336063e+05 4.3589165e+04
+1.2922811e+06 2.0625138e+06 1.2430456e+05
+2.2560793e+06 3.5197893e+06 2.6899031e+05
+3.0642699e+06 4.6819186e+06 4.8106507e+05
+3.5781876e+06 5.3319462e+06 7.6252028e+05
+3.8132595e+06 5.4935863e+06 1.1207943e+06
+3.8587497e+06 5.3072363e+06 1.5692940e+06
+3.7861721e+06 4.8816271e+06 2.1275378e+06
+3.6140937e+06 4.2379122e+06 2.8240156e+06
+3.3369069e+06 3.3704692e+06 3.7002171e+06
+2.9687240e+06 2.3439329e+06 4.8178991e+06
+2.5369785e+06 1.3234038e+06 6.2739500e+06
+1.9795167e+06 5.0628229e+05 8.1909354e+06
+3.0678741e+05 4.5596350e+04 8.9297169e+06
+2.2546080e+05 2.2834603e+04 9.8211992e+06
+1.5225316e+05 1.4973512e+04 1.0909638e+07
+1.2318880e+05 8.9077786e+03 1.2284745e+07
+2.7347572e+06 8.7299746e+04 1.4669068e+07
+6.0275220e+06 1.8160668e+05 0.0000000e+00
+3.6883196e+00 1.1588216e+01 -2.4270954e+00
+6.9071012e+01 1.9184706e+02 -2.9432893e+01
+1.1748318e+03 2.7958753e+03 -1.2226704e+02
+2.0152826e+04 4.1612707e+04 3.7138182e+03
+4.7120670e+05 1.0479240e+06 1.9600542e+04
+1.3187495e+06 2.8326272e+06 7.6820988e+04
+2.2844625e+06 4.8226966e+06 1.8117980e+05
+3.0782646e+06 6.4072006e+06 3.3186065e+05
+3.5615226e+06 7.2896147e+06 5.2932131e+05
+3.7534804e+06 7.5064139e+06 7.8039222e+05
+3.7486295e+06 7.2545167e+06 1.0969342e+06
+3.6197499e+06 6.6837238e+06 1.4945172e+06
+3.3813904e+06 5.8170933e+06 1.9949706e+06
+3.0242766e+06 4.6389668e+06 2.6287336e+06
+2.5679580e+06 3.2364909e+06 3.4374008e+06
+2.0637813e+06 1.8457067e+06 4.4804389e+06
+1.5067710e+06 7.3914657e+05 5.8347255e+06
+2.2310552e+05 8.3733162e+04 6.3476067e+06
+1.6119803e+05 4.4880517e+04 6.9736765e+06
+1.0846403e+05 2.9488334e+04 7.7441467e+06
+8.7439451e+04 1.8207262e+04 8.7221658e+06
+1.9413828e+06 1.7949723e+05 1.0377444e+07
+4.2569116e+06 3.6566029e+05 0.0000000e+00
+4.2336328e+00 2.3805531e+01 -7.9024370e+00
+7.4231828e+01 3.9235885e+02 -1.3122616e+02
+1.1765131e+03 5.4156961e+03 -1.5106345e+03
+1.9139152e+04 7.0725490e+04 -1.0281935e+04
+4.7562013e+05 1.4074847e+06 -1.6939445e+03
+1.3117921e+06 3.7785950e+06 3.7457099e+04
+2.2507285e+06 6.4333326e+06 9.8091743e+04
+3.0082158e+06 8.5365332e+06 1.8254198e+05
+3.4487353e+06 9.7002475e+06 2.9079255e+05
+3.5930694e+06 9.9813088e+06 4.2821508e+05
+3.5376295e+06 9.6487015e+06 6.0437028e+05
+3.3545150e+06 8.9034362e+06 8.2996258e+05
+3.0540105e+06 7.7668310e+06 1.1199771e+06
+2.6240166e+06 6.2047906e+06 1.4949553e+06
+2.0901616e+06 4.3303104e+06 1.9784068e+06
+1.5280814e+06 2.4771983e+06 2.5909091e+06
+9.8916212e+05 1.0366117e+06 3.3419414e+06
+1.3299314e+05 1.4761366e+05 3.6061193e+06
+9.1344900e+04 7.5939611e+04 3.9504449e+06
+5.9571907e+04 4.9915306e+04 4.3830557e+06
+4.5840927e+04 3.4028601e+04 4.9370289e+06
+1.0979556e+06 2.6002868e+05 5.8920960e+06
+2.4502977e+06 4.4221385e+05 0.0000000e+00
+5.3552793e+00 4.4517082e+01 -1.4244029e+01
+8.6835323e+01 7.7989266e+02 -2.9096300e+02
+1.2161234e+03 1.1260129e+04 -4.5069260e+03
+1.7129924e+04 1.4144689e+05 -5.1911575e+04
+4.2406179e+05 1.8022228e+06 5.5346819e+03
+1.1596253e+06 4.9773790e+06 2.7817409e+04
+1.9765283e+06 8.4958083e+06 3.9979662e+04
+2.6242116e+06 1.1246765e+07 6.7343967e+04
+2.9843731e+06 1.2757226e+07 1.0450588e+05
+3.0766591e+06 1.3115111e+07 1.5090156e+05
+2.9908654e+06 1.2680211e+07 2.1296801e+05
+2.7924635e+06 1.1720032e+07 2.9527358e+05
+2.4857619e+06 1.0248585e+07 4.0628505e+05
+2.0551172e+06 8.1982424e+06 5.6154921e+05
+1.5266125e+06 5.7052643e+06 7.8040528e+05
+9.8758825e+05 3.2271497e+06 1.0723761e+06
+5.2753012e+05 1.3506691e+06 1.3914603e+06
+6.0258347e+04 2.4905710e+05 1.4408838e+06
+3.6506991e+04 8.9081653e+04 1.5856146e+06
+2.1732811e+04 4.9769508e+04 1.7761807e+06
+1.4489427e+04 3.2711681e+04 2.0191599e+06
+4.6618019e+05 2.0380241e+05 2.5407343e+06
+1.1200797e+06 3.2014406e+05 0.0000000e+00
+6.3980709e+00 5.9692661e+01 -6.1151320e+00
+9.6964639e+01 1.1056287e+03 -1.7959939e+02
+1.1479041e+03 1.6758737e+04 -3.6338150e+03
+1.1075298e+04 2.1356841e+05 -5.3194296e+04
+7.5959988e+04 1.9592134e+06 -3.6770224e+04
+1.9068459e+05 5.4346127e+06 -3.5736465e+04
+3.1390406e+05 9.2584289e+06 -2.7078804e+04
+4.1209228e+05 1.2241303e+07 -6.4219309e+03
+4.6900116e+05 1.3895416e+07 7.2103763e+03
+4.8421666e+05 1.4299427e+07 1.3149283e+04
+4.7017527e+05 1.3834599e+07 1.8252421e+04
+4.3724177e+05 1.2795327e+07 2.3469316e+04
+3.8544131e+05 1.1194861e+07 3.0954117e+04
+3.1209315e+05 8.9549023e+06 4.6912703e+04
+2.2183721e+05 6.2205628e+06 8.0159184e+04
+1.3054367e+05 3.4899928e+06 1.3988452e+05
+5.9115624e+04 1.3956155e+06 2.4320417e+05
+1.6869857e+04 2.6931190e+05 2.7282710e+05
+8.5128041e+03 4.9898463e+04 3.5188193e+05
+4.1462391e+03 1.4711572e+04 4.3670386e+05
+1.7226860e+03 7.6422586e+03 5.2871530e+05
+1.4316290e+05 7.3202562e+04 8.0606657e+05
+4.0387115e+05 1.4432225e+05 0.0000000e+00
+6.3585349e+00 5.1245452e+01 1.8788490e+01
+9.6657571e+01 1.0160951e+03 2.8879236e+02
+1.1221762e+03 1.6586328e+04 2.9584963e+03
+1.0139877e+04 2.2724535e+05 1.7064312e+04
+5.9489758e+04 2.1748991e+06 6.5650784e+03
+1.4516679e+05 6.0161113e+06 -2.5486435e+04
+2.3308480e+05 1.0185097e+07 -2.7365528e+04
+3.0343778e+05 1.3434310e+07 -5.6464108e+03
+3.4537428e+05 1.5259895e+07 6.2852839e+03
+3.5547258e+05 1.5717631e+07 8.7927988e+03
+3.4372733e+05 1.5213830e+07 1.1756814e+04
+3.1946865e+05 1.4079510e+07 1.4206402e+04
+2.8168441e+05 1.2326643e+07 1.6620452e+04
+2.2716317e+05 9.8630647e+06 2.4020311e+04
+1.5885005e+05 6.8454815e+06 4.2682517e+04
+8.9016239e+04 3.8297331e+06 7.1047286e+04
+3.5580129e+04 1.5356624e+06 8.5445564e+04
+8.3904965e+03 3.4440513e+05 4.9678676e+04
+2.0272572e+03 5.5440565e+04 5.6014725e+04
+3.9290531e+02 7.7049822e+03 7.2550888e+04
+-3.6799920e+02 1.4070506e+03 9.1398911e+04
+3.0503010e+04 1.4508953e+04 1.8312486e+05
+1.1335377e+05 3.8684754e+04 0.0000000e+00
+4.4487802e+00 2.2314499e+01 3.7284665e+01
+6.9951911e+01 4.9927497e+02 7.1089270e+02
+8.3922232e+02 9.5869263e+03 1.0079073e+04
+7.7804143e+03 1.6681178e+05 9.9931869e+04
+4.5704673e+04 2.4659293e+06 6.0460879e+04
+1.0439341e+05 6.7633633e+06 -1.3736009e+04
+1.5786986e+05 1.1324493e+07 -2.7455435e+04
+2.0241718e+05 1.4883951e+07 -2.9118485e+03
+2.3184024e+05 1.6920148e+07 7.2819522e+03
+2.3790438e+05 1.7443950e+07 6.3985719e+03
+2.2847747e+05 1.6890379e+07 8.9154674e+03
+2.1265048e+05 1.5640212e+07 1.1184438e+04
+1.8844126e+05 1.3703420e+07 1.2097018e+04
+1.5244825e+05 1.0970711e+07 1.5995425e+04
+1.0619385e+05 7.6132631e+06 2.8165973e+04
+5.7773110e+04 4.2557667e+06 4.6603704e+04
+2.1100365e+04 1.7210888e+06 4.7348289e+04
+4.0679242e+03 4.2623136e+05 1.4390741e+04
+3.9885525e+02 7.1557075e+04 7.7031069e+03
+-3.3489971e+01 8.8314200e+03 8.8576782e+03
+-1.3922856e+02 9.9022571e+02 1.1061396e+04
+4.5158573e+03 1.2936038e+03 2.9865542e+04
+2.3460341e+04 4.9908942e+03 0.0000000e+00
+1.6043498e+00 0.0000000e+00 2.5842067e+01
+2.7104993e+01 0.0000000e+00 6.0001814e+02
+3.6007245e+02 0.0000000e+00 1.1533145e+04
+3.9995201e+03 0.0000000e+00 2.0027457e+05
+4.0999752e+04 2.8527610e+06 1.3285380e+05
+9.3953497e+04 7.7455773e+06 6.2856283e+03
+1.3001367e+05 1.2780342e+07 -2.9861556e+04
+1.6012194e+05 1.6709244e+07 -1.2341934e+03
+1.8557674e+05 1.9010550e+07 9.7295818e+03
+1.9055929e+05 1.9621766e+07 4.1408918e+03
+1.8068364e+05 1.9003378e+07 5.8909307e+03
+1.6810665e+05 1.7605994e+07 9.0214673e+03
+1.5029878e+05 1.5439144e+07 8.8226045e+03
+1.2239751e+05 1.2369925e+07 9.6148817e+03
+8.4821482e+04 8.5872595e+06 1.7519806e+04
+4.4137733e+04 4.8010100e+06 3.1773405e+04
+1.3986744e+04 1.9581253e+06 3.1033163e+04
+1.6789843e+03 5.1546870e+05 7.4378041e+03
+-3.4660544e+02 9.0032948e+04 1.4094982e+03
+-1.3380170e+02 1.1028959e+04 9.9042995e+02
+8.1115391e+00 1.1791460e+03 1.1813015e+03
+4.3921962e+02 0.0000000e+00 3.2301455e+03
+2.8282976e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.3816193e+05 2.8264475e+06 5.2513050e+05
+1.7701085e+06 9.3224671e+06 3.8980944e+05
+2.9178942e+06 1.5642216e+07 -4.3251891e+04
+3.6739511e+06 1.9989911e+07 -8.5065840e+04
+4.1460938e+06 2.2563305e+07 6.3335588e+04
+4.3263884e+06 2.3439300e+07 6.9550387e+04
+4.2025060e+06 2.2764874e+07 4.2900625e+04
+3.8908808e+06 2.1068918e+07 7.0843266e+04
+3.4332010e+06 1.8499732e+07 8.2508409e+04
+2.7706633e+06 1.4833465e+07 9.3966691e+04
+1.9228420e+06 1.0260224e+07 1.7255677e+05
+1.0738773e+06 5.7508024e+06 2.4735735e+05
+4.5429330e+05 2.4685681e+06 1.9435531e+05
+1.3960969e+05 7.8364611e+05 7.0464424e+04
+2.9877804e+04 1.7889458e+05 1.4242569e+04
+4.4769941e+03 2.9481674e+04 1.3358129e+03
+4.5063187e+02 3.2550610e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.0294306e+06 0.0000000e+00 3.9754116e+05
+3.7017739e+06 0.0000000e+00 7.3983040e+05
+6.5257216e+06 0.0000000e+00 2.9707965e+05
+8.3092239e+06 0.0000000e+00 -1.6268352e+05
+9.1952403e+06 0.0000000e+00 -3.3531166e+04
+9.5609524e+06 0.0000000e+00 1.5442700e+05
+9.3735152e+06 0.0000000e+00 1.2067681e+05
+8.6891569e+06 0.0000000e+00 9.6486325e+04
+7.6336284e+06 0.0000000e+00 1.2812993e+05
+6.1326850e+06 0.0000000e+00 2.0251961e+05
+4.2407722e+06 0.0000000e+00 3.5034533e+05
+2.4048263e+06 0.0000000e+00 4.2098875e+05
+1.0921667e+06 0.0000000e+00 3.0654822e+05
+3.9353057e+05 0.0000000e+00 1.3819900e+05
+1.1041654e+05 0.0000000e+00 3.7287575e+04
+2.2927949e+04 0.0000000e+00 4.9527050e+03
+2.8282533e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.6900318e+05 -1.7136286e+06 2.8833371e+05
+1.4092249e+06 -5.8285401e+06 6.4875318e+05
+2.5606154e+06 -9.7492345e+06 3.1651017e+05
+3.1826700e+06 -1.2317943e+07 -1.6241385e+05
+3.3942221e+06 -1.3895772e+07 -6.6732775e+04
+3.5293796e+06 -1.4475965e+07 1.5872808e+05
+3.5046237e+06 -1.4002041e+07 1.3313577e+05
+3.2430409e+06 -1.2874802e+07 8.1389178e+04
+2.8455028e+06 -1.1261519e+07 1.0843461e+05
+2.2915641e+06 -8.9847988e+06 1.8761276e+05
+1.5652076e+06 -6.1386640e+06 3.1536796e+05
+8.6411577e+05 -3.3650292e+06 3.6245888e+05
+3.8613990e+05 -1.4038343e+06 2.5882325e+05
+1.4146075e+05 -4.3366491e+05 1.1878656e+05
+4.1827016e+04 -9.5093302e+04 3.3008798e+04
+8.7278607e+03 -1.4676777e+04 4.7433175e+03
+1.0175997e+03 -1.3884417e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-5.4819216e+03 -1.4783711e+06 3.0838637e+05
+-6.7552450e+02 -3.9710554e+06 2.2168572e+05
+-4.8225824e+04 -6.4950833e+06 -6.6345634e+04
+-1.2559951e+05 -8.5148844e+06 -6.9854231e+04
+-1.3598367e+05 -9.7382265e+06 5.4677450e+04
+-1.1011282e+05 -1.0033092e+07 4.8305365e+04
+-1.1226964e+05 -9.6567100e+06 1.7749939e+04
+-1.1571565e+05 -8.8920647e+06 4.1608562e+04
+-9.2078362e+04 -7.7435396e+06 4.8908715e+04
+-6.1646850e+04 -6.1481960e+06 4.4616130e+04
+-4.3813615e+04 -4.2135164e+06 8.6124668e+04
+-3.3677817e+04 -2.3004843e+06 1.2913615e+05
+-2.2227139e+04 -8.9616539e+05 9.7988643e+04
+-1.1186632e+04 -2.1838992e+05 3.3510207e+04
+-4.2030222e+03 -3.3541202e+04 6.0393458e+03
+-1.0771502e+03 -3.4581458e+03 3.7563436e+02
+-1.8208554e+02 -3.7975973e+02 0.0000000e+00
+0 0 0
+0 0 0
+3.0066995e-01 -1.4252581e+01 1.5556261e+01
+3.4253278e+00 -3.1132048e+02 3.5055640e+02
+1.2387091e+01 -5.7994623e+03 6.4977041e+03
+-4.6882374e+02 -9.7311823e+04 1.0827787e+05
+-1.4379388e+04 -1.3779708e+06 6.3256725e+04
+-4.4845588e+04 -3.7583802e+06 -1.0619419e+04
+-7.9298151e+04 -6.2761400e+06 -2.0250958e+04
+-9.9747850e+04 -8.2791489e+06 3.8833323e+03
+-1.0724659e+05 -9.4478632e+06 6.3433321e+03
+-1.1065969e+05 -9.7254053e+06 -1.2464344e+02
+-1.0872068e+05 -9.3695931e+06 2.1628394e+03
+-1.0018127e+05 -8.6260073e+06 4.3933155e+03
+-8.7798734e+04 -7.5048228e+06 3.7739502e+03
+-7.0498666e+04 -5.9549731e+06 3.4472280e+03
+-4.7840227e+04 -4.0830714e+06 5.6639744e+03
+-2.5595591e+04 -2.2366665e+06 1.1579517e+04
+-9.9899453e+03 -8.7224613e+05 1.1636977e+04
+-2.4661557e+03 -2.0471608e+05 2.1082923e+03
+-3.3809012e+02 -3.1825842e+04 3.8444053e+02
+1.8252920e+00 -3.5909513e+03 3.8164374e+02
+1.1121358e+01 -3.8223319e+02 3.8110451e+02
+-1.9055559e+02 -3.2646344e+02 1.3372597e+03
+1.0240374e+03 -4.8732108e+03 0.0000000e+00
+1.0031628e+00 -3.3470061e+01 2.2663097e+01
+1.2574116e+01 -6.5235368e+02 4.2107410e+02
+9.7934764e+01 -1.0419578e+04 5.7824774e+03
+2.1264712e+02 -1.3919486e+05 5.5233284e+04
+-5.2051981e+03 -1.2975850e+06 2.5757383e+04
+-1.9924249e+04 -3.5892133e+06 -1.9091782e+04
+-3.6533672e+04 -6.0819759e+06 -1.8852296e+04
+-4.4971272e+04 -8.0517200e+06 1.1072707e+03
+-4.7528460e+04 -9.1722191e+06 4.8318470e+03
+-4.9306442e+04 -9.4360566e+06 2.6939983e+03
+-4.8466324e+04 -9.0951581e+06 5.2027320e+03
+-4.4324909e+04 -8.3705237e+06 6.6945501e+03
+-3.8852730e+04 -7.2777358e+06 6.9015887e+03
+-3.1255873e+04 -5.7731853e+06 8.8179258e+03
+-2.0974595e+04 -3.9616736e+06 1.4588501e+04
+-1.0948353e+04 -2.1771281e+06 2.3771557e+04
+-4.1109862e+03 -8.4678208e+05 2.3518863e+04
+-9.1537668e+02 -1.8300449e+05 6.7905788e+03
+-9.7371099e+01 -2.8150867e+04 3.6118303e+03
+8.7678659e+00 -3.6141046e+03 3.5927259e+03
+2.3877491e+00 -3.7569001e+02 3.4445662e+03
+-1.0988412e+03 -6.1576235e+03 1.4890623e+04
+8.9905329e+03 -3.4505915e+04 0.0000000e+00
+1.6601666e+00 -3.9664353e+01 1.0892661e+01
+2.1795975e+01 -7.2560527e+02 1.5900584e+02
+2.0110542e+02 -1.0826870e+04 1.4873681e+03
+1.2346955e+03 -1.3564040e+05 6.8380831e+03
+3.1048636e+03 -1.2289802e+06 -5.3818086e+03
+2.8306706e+03 -3.4271900e+06 -2.5069001e+04
+1.9519174e+03 -5.8560041e+06 -1.9907991e+04
+4.1591340e+03 -7.7702507e+06 -2.0986796e+03
+6.9581560e+03 -8.8404956e+06 4.5939587e+03
+7.1911481e+03 -9.0886510e+06 5.4697542e+03
+6.7064573e+03 -8.7606868e+06 8.0193838e+03
+6.6494546e+03 -8.0593893e+06 9.7042262e+03
+5.9324482e+03 -7.0033211e+06 1.1041483e+04
+4.8362677e+03 -5.5552247e+06 1.5407768e+04
+4.0001769e+03 -3.8175588e+06 2.6142912e+04
+2.9263720e+03 -2.1071616e+06 4.2266298e+04
+1.5760798e+03 -8.1909252e+05 4.8580778e+04
+5.2610203e+02 -1.5387413e+05 2.7314808e+04
+1.4067032e+02 -2.7453144e+04 2.8503672e+04
+-9.9716756e+01 -6.9654055e+03 3.2347595e+04
+-3.4520770e+02 -2.1650411e+03 3.4114147e+04
+-4.3250043e+03 -3.5178176e+04 9.7962397e+04
+4.3040652e+04 -1.2462267e+05 0.0000000e+00
+1.9139754e+00 -3.0004214e+01 -5.1760436e+00
+2.6494852e+01 -5.2077929e+02 -1.3953223e+02
+2.7813227e+02 -7.4257455e+03 -2.6708844e+03
+2.3327897e+03 -9.1927262e+04 -3.7641510e+04
+1.4239172e+04 -1.1716058e+06 -3.3295136e+04
+3.3346978e+04 -3.2715589e+06 -3.1588609e+04
+5.4199363e+04 -5.6069319e+06 -2.0956034e+04
+7.2652188e+04 -7.4478430e+06 -3.9236863e+03
+8.4232968e+04 -8.4649045e+06 5.2533744e+03
+8.7296813e+04 -8.6955696e+06 9.0918453e+03
+8.4813983e+04 -8.3792329e+06 1.2999163e+04
+7.9037932e+04 -7.7048044e+06 1.6618064e+04
+6.9646938e+04 -6.6924226e+06 2.1513915e+04
+5.6625451e+04 -5.3101493e+06 3.1906153e+04
+4.1149908e+04 -3.6580708e+06 5.3105390e+04
+2.5291417e+04 -2.0385972e+06 8.9793245e+04
+1.1834169e+04 -8.2804921e+05 1.4603140e+05
+2.7322709e+03 -1.5018804e+05 1.5648290e+05
+5.2560691e+02 -5.1088530e+04 1.8810548e+05
+-9.4450331e+02 -2.5024806e+04 2.1125562e+05
+-2.5421895e+03 -1.2493136e+04 2.2584857e+05
+-1.1728279e+04 -1.0380590e+05 4.4936659e+05
+1.4529749e+05 -2.7162990e+05 0.0000000e+00
+1.8847057e+00 -1.6270210e+01 -1.0263431e+01
+2.9759589e+01 -2.6691053e+02 -2.0705645e+02
+4.1306344e+02 -3.6657766e+03 -3.1639654e+03
+5.9897478e+03 -4.7795080e+04 -3.6155972e+04
+1.7575366e+05 -9.4911262e+05 -1.0341022e+04
+4.8796470e+05 -2.6134787e+06 3.2393060e+03
+8.3794332e+05 -4.4818650e+06 1.6757388e+04
+1.1206079e+06 -5.9676913e+06 4.0209415e+04
+1.2816655e+06 -6.7890280e+06 6.7040568e+04
+1.3256868e+06 -6.9764255e+06 9.8868705e+04
+1.2901518e+06 -6.7208377e+06 1.4118711e+05
+1.2032586e+06 -6.1711422e+06 1.9672977e+05
+1.0687721e+06 -5.3501210e+06 2.7141796e+05
+8.8323238e+05 -4.2421108e+06 3.7526428e+05
+6.5765461e+05 -2.9319853e+06 5.1813676e+05
+4.2233364e+05 -1.6525021e+06 6.9729626e+05
+2.0672837e+05 -6.6930594e+05 8.5935474e+05
+1.1987498e+04 -9.5455823e+04 8.5289337e+05
+1.5326537e+03 -4.5620844e+04 8.8240002e+05
+-4.3278259e+03 -2.5809109e+04 9.0924496e+05
+-1.0433855e+04 -1.2683272e+04 9.3435836e+05
+-2.3273087e+04 -1.3707651e+05 1.4570816e+06
+3.9807451e+05 -3.8418252e+05 0.0000000e+00
+1.7576992e+00 -7.9662346e+00 -5.8280415e+00
+3.0961732e+01 -1.3143126e+02 -9.8037219e+01
+4.9790847e+02 -1.9076658e+03 -1.1775433e+03
+8.2684800e+03 -2.8298064e+04 -9.8038878e+03
+2.4183204e+05 -7.1426342e+05 -1.0864997e+04
+6.7440016e+05 -2.0006910e+06 1.3739179e+04
+1.1644346e+06 -3.4394968e+06 5.7664951e+04
+1.5652287e+06 -4.5861033e+06 1.1906403e+05
+1.8035970e+06 -5.2208646e+06 1.9603885e+05
+1.8861867e+06 -5.3663744e+06 2.9287043e+05
+1.8602670e+06 -5.1674548e+06 4.1684997e+05
+1.7625419e+06 -4.7378197e+06 5.7550055e+05
+1.5999231e+06 -4.0993816e+06 7.7884860e+05
+1.3677664e+06 -3.2457415e+06 1.0387295e+06
+1.0762373e+06 -2.2427607e+06 1.3634292e+06
+7.5402365e+05 -1.2594095e+06 1.7443944e+06
+4.2064289e+05 -4.8673275e+05 2.1303404e+06
+2.5429806e+04 -5.5768881e+04 2.1982168e+06
+2.7735943e+03 -2.7628159e+04 2.2687954e+06
+-1.1497199e+04 -1.5338338e+04 2.3293938e+06
+-2.6631619e+04 -5.8461491e+03 2.3950292e+06
+-3.3705622e+04 -9.1339834e+04 3.4809535e+06
+8.8449879e+05 -3.3096212e+05 0.0000000e+00
+1.7149501e+00 -3.9868669e+00 -2.0059982e+00
+3.2224850e+01 -6.9076288e+01 -2.7514807e+01
+5.5038888e+02 -1.0864073e+03 -2.2433044e+02
+9.4691544e+03 -1.7619105e+04 -2.1961725e+02
+2.6353933e+05 -5.1354425e+05 6.7285851e+03
+7.4748842e+05 -1.4667178e+06 4.4016528e+04
+1.3037874e+06 -2.5317435e+06 1.1693833e+05
+1.7660072e+06 -3.3805803e+06 2.2367277e+05
+2.0519064e+06 -3.8512125e+06 3.6363704e+05
+2.1684342e+06 -3.9596291e+06 5.4193801e+05
+2.1665118e+06 -3.8108703e+06 7.6747127e+05
+2.0864331e+06 -3.4883739e+06 1.0513423e+06
+1.9365761e+06 -3.0111525e+06 1.4079275e+06
+1.7104224e+06 -2.3780799e+06 1.8541201e+06
+1.4123880e+06 -1.6380012e+06 2.4049307e+06
+1.0581712e+06 -9.1035509e+05 3.0614862e+06
+6.4241368e+05 -3.3523569e+05 3.7743465e+06
+4.0660174e+04 -3.1091101e+04 3.9321141e+06
+3.7320405e+03 -1.4705797e+04 4.0766577e+06
+-2.1582117e+04 -8.3460336e+03 4.1997116e+06
+-4.8901756e+04 -3.3307896e+03 4.3335374e+06
+-4.2547239e+04 -4.1430176e+04 6.2675588e+06
+1.5736108e+06 -1.6449277e+05 0.0000000e+00
+1.7419932e+00 -2.0928984e+00 -9.1767321e-02
+3.3652377e+01 -3.8177287e+01 3.9787107e+00
+5.8719328e+02 -6.3562028e+02 1.6693510e+02
+1.0217140e+04 -1.0766898e+04 4.0670397e+03
+2.6966267e+05 -3.4513853e+05 2.5288788e+04
+7.7199911e+05 -1.0005067e+06 7.9359742e+04
+1.3579237e+06 -1.7341480e+06 1.7991989e+05
+1.8531520e+06 -2.3188809e+06 3.2933842e+05
+2.1708722e+06 -2.6435096e+06 5.2895081e+05
+2.3166067e+06 -2.7185564e+06 7.8453083e+05
+2.3411956e+06 -2.6150266e+06 1.1062412e+06
+2.2859386e+06 -2.3900066e+06 1.5081073e+06
+2.1604333e+06 -2.0582280e+06 2.0088432e+06
+1.9572740e+06 -1.6210330e+06 2.6314292e+06
+1.6748777e+06 -1.1122373e+06 3.3995116e+06
+1.3135769e+06 -6.1172532e+05 4.3242834e+06
+8.3922766e+05 -2.1736931e+05 5.3467060e+06
+5.4500249e+04 -1.7273870e+04 5.5851759e+06
+4.3519392e+03 -8.1079552e+03 5.7996870e+06
+-3.1439109e+04 -5.0659110e+03 5.9800991e+06
+-7.0567351e+04 -2.9116749e+03 6.1734362e+06
+-6.0575618e+04 -2.9116564e+04 8.9564575e+06
+2.2620276e+06 -6.4583381e+04 0.0000000e+00
+1.7932677e+00 -1.0482927e+00 7.2696766e-01
+3.4991112e+01 -1.9750619e+01 1.7179604e+01
+6.1509030e+02 -3.3839573e+02 3.3914153e+02
+1.0750213e+04 -5.8354113e+03 6.3291938e+03
+2.7139556e+05 -1.9886054e+05 3.9393566e+04
+7.7831295e+05 -5.8195513e+05 1.0865022e+05
+1.3765457e+06 -1.0119195e+06 2.3136832e+05
+1.8895482e+06 -1.3546824e+06 4.1377524e+05
+2.2279587e+06 -1.5451563e+06 6.5901828e+05
+2.3951499e+06 -1.5892788e+06 9.7334899e+05
+2.4404021e+06 -1.5280963e+06 1.3676281e+06
+2.4049998e+06 -1.3949318e+06 1.8576698e+06
+2.2997675e+06 -1.1991257e+06 2.4651060e+06
+2.1174759e+06 -9.4236634e+05 3.2172865e+06
+1.8524022e+06 -6.4457449e+05 4.1442474e+06
+1.4926605e+06 -3.5179479e+05 5.2638057e+06
+9.8026400e+05 -1.2227374e+05 6.5050055e+06
+6.4758094e+04 -8.8158886e+03 6.7988041e+06
+5.0963927e+03 -4.0769568e+03 7.0604717e+06
+-3.8040002e+04 -2.4718632e+03 7.2780055e+06
+-8.5477664e+04 -1.2351429e+03 7.5078697e+06
+-8.4899196e+04 -1.9894579e+04 1.0873551e+07
+2.7407498e+06 -5.0331367e+04 0.0000000e+00
+1.8358507e+00 -3.2220755e-01 1.0540073e+00
+3.5937192e+01 -6.1542627e+00 2.2646905e+01
+6.3326270e+02 -1.0658748e+02 4.1726306e+02
+1.1086409e+04 -1.8491887e+03 7.4951934e+03
+2.7186596e+05 -6.4968769e+04 4.7800312e+04
+7.7868569e+05 -1.9099212e+05 1.2696723e+05
+1.3812166e+06 -3.3267426e+05 2.6340841e+05
+1.9027183e+06 -4.4564365e+05 4.6567249e+05
+2.2524392e+06 -5.0845235e+05 7.3804588e+05
+2.4319667e+06 -5.2301511e+05 1.0869487e+06
+2.4890814e+06 -5.0276203e+05 1.5233957e+06
+2.4648363e+06 -4.5865473e+05 2.0638961e+06
+2.3710303e+06 -3.9389434e+05 2.7314006e+06
+2.2010494e+06 -3.0919192e+05 3.5554411e+06
+1.9471505e+06 -2.1113101e+05 4.5695052e+06
+1.5903297e+06 -1.1477241e+05 5.7948725e+06
+1.0578860e+06 -3.9476008e+04 7.1524777e+06
+7.0698436e+04 -2.7019941e+03 7.4758027e+06
+5.8366393e+03 -1.2070558e+03 7.7623537e+06
+-4.1147346e+04 -6.4990680e+02 7.9994565e+06
+-9.2782564e+04 -1.2161437e+02 8.2487831e+06
+-9.8883241e+04 -5.4419529e+03 1.1923435e+07
+2.9782696e+06 -2.5195940e+04 0.0000000e+00
+1.8518778e+00 3.2220755e-01 1.1420491e+00
+3.6276677e+01 6.1542627e+00 2.4174025e+01
+6.3959780e+02 1.0658748e+02 4.4037231e+02
+1.1201843e+04 1.8491887e+03 7.8594417e+03
+2.7194541e+05 6.4968769e+04 5.0553085e+04
+7.7829171e+05 1.9099212e+05 1.3308781e+05
+1.3817559e+06 3.3267426e+05 2.7408567e+05
+1.9057091e+06 4.4564365e+05 4.8283754e+05
+2.2589473e+06 5.0845235e+05 7.6399977e+05
+2.4423764e+06 5.2301511e+05 1.1240098e+06
+2.5031877e+06 5.0276203e+05 1.5738623e+06
+2.4823277e+06 4.5865473e+05 2.1301998e+06
+2.3919708e+06 3.9389434e+05 2.8162959e+06
+2.2258171e+06 3.0919192e+05 3.6622870e+06
+1.9755799e+06 2.1113101e+05 4.7027022e+06
+1.6200101e+06 1.1477241e+05 5.9598788e+06
+1.0815518e+06 3.9476008e+04 7.3520395e+06
+7.2577765e+04 2.7019941e+03 7.6843098e+06
+6.1272906e+03 1.2070558e+03 7.9783967e+06
+-4.2002247e+04 6.4990576e+02 8.2215252e+06
+-9.4818099e+04 1.2157447e+02 8.4771649e+06
+-1.0146718e+05 5.4411657e+03 1.2250940e+07
+3.0459029e+06 2.5196038e+04 0.0000000e+00
+1.8358507e+00 1.0482927e+00 1.0540073e+00
+3.5937192e+01 1.9750619e+01 2.2646905e+01
+6.3326270e+02 3.3839573e+02 4.1726306e+02
+1.1086409e+04 5.8354113e+03 7.4951934e+03
+2.7186596e+05 1.9886054e+05 4.7800312e+04
+7.7868569e+05 5.8195513e+05 1.2696723e+05
+1.3812166e+06 1.0119195e+06 2.6340841e+05
+1.9027183e+06 1.3546824e+06 4.6567249e+05
+2.2524392e+06 1.5451563e+06 7.3804588e+05
+2.4319667e+06 1.5892788e+06 1.0869487e+06
+2.4890814e+06 1.5280963e+06 1.5233957e+06
+2.4648363e+06 1.3949318e+06 2.0638961e+06
+2.3710303e+06 1.1991257e+06 2.7314006e+06
+2.2010494e+06 9.4236634e+05 3.5554411e+06
+1.9471505e+06 6.4457449e+05 4.5695052e+06
+1.5903297e+06 3.5179479e+05 5.7948725e+06
+1.0578860e+06 1.2227374e+05 7.1524777e+06
+7.0698436e+04 8.8158886e+03 7.4758027e+06
+5.8366392e+03 4.0769568e+03 7.7623537e+06
+-4.1147349e+04 2.4718635e+03 7.9994565e+06
+-9.2782625e+04 1.2351510e+03 8.2487832e+06
+-9.8885200e+04 1.9894662e+04 1.1923435e+07
+2.9782697e+06 5.0331167e+04 0.0000000e+00
+1.7932677e+00 2.0928984e+00 7.2696766e-01
+3.4991112e+01 3.8177287e+01 1.7179604e+01
+6.1509030e+02 6.3562028e+02 3.3914153e+02
+1.0750213e+04 1.0766898e+04 6.3291938e+03
+2.7139556e+05 3.4513853e+05 3.9393566e+04
+7.7831295e+05 1.0005067e+06 1.0865022e+05
+1.3765457e+06 1.7341480e+06 2.3136832e+05
+1.8895482e+06 2.3188809e+06 4.1377524e+05
+2.2279587e+06 2.6435096e+06 6.5901828e+05
+2.3951499e+06 2.7185564e+06 9.7334899e+05
+2.4404021e+06 2.6150266e+06 1.3676281e+06
+2.4049998e+06 2.3900066e+06 1.8576698e+06
+2.2997675e+06 2.0582280e+06 2.4651060e+06
+2.1174759e+06 1.6210330e+06 3.2172865e+06
+1.8524022e+06 1.1122373e+06 4.1442474e+06
+1.4926605e+06 6.1172532e+05 5.2638057e+06
+9.8026400e+05 2.1736931e+05 6.5050055e+06
+6.4758094e+04 1.7273870e+04 6.7988041e+06
+5.0963926e+03 8.1079552e+03 7.0604717e+06
+-3.8040006e+04 5.0659115e+03 7.2780055e+06
+-8.5477793e+04 2.9116929e+03 7.5078698e+06
+-8.4903276e+04 2.9117156e+04 1.0873552e+07
+2.7407498e+06 6.4583267e+04 0.0000000e+00
+1.7419932e+00 3.9868669e+00 -9.1767321e-02
+3.3652377e+01 6.9076288e+01 3.9787107e+00
+5.8719328e+02 1.0864073e+03 1.6693510e+02
+1.0217140e+04 1.7619105e+04 4.0670397e+03
+2.6966267e+05 5.1354425e+05 2.5288788e+04
+7.7199911e+05 1.4667178e+06 7.9359741e+04
+1.3579237e+06 2.5317435e+06 1.7991989e+05
+1.8531520e+06 3.3805803e+06 3.2933842e+05
+2.1708722e+06 3.8512125e+06 5.2895081e+05
+2.3166067e+06 3.9596291e+06 7.8453083e+05
+2.3411956e+06 3.8108703e+06 1.1062412e+06
+2.2859386e+06 3.4883739e+06 1.5081073e+06
+2.1604333e+06 3.0111525e+06 2.0088432e+06
+1.9572740e+06 2.3780799e+06 2.6314292e+06
+1.6748777e+06 1.6380012e+06 3.3995116e+06
+1.3135769e+06 9.1035509e+05 4.3242834e+06
+8.3922766e+05 3.3523569e+05 5.3467060e+06
+5.4500249e+04 3.1091101e+04 5.5851759e+06
+4.3519391e+03 1.4705797e+04 5.7996870e+06
+-3.1439112e+04 8.3460339e+03 5.9800991e+06
+-7.0567464e+04 3.3308008e+03 6.1734363e+06
+-6.0579139e+04 4.1430497e+04 8.9564593e+06
+2.2620275e+06 1.6449273e+05 0.0000000e+00
+1.7149501e+00 7.9662346e+00 -2.0059982e+00
+3.2224850e+01 1.3143126e+02 -2.7514807e+01
+5.5038888e+02 1.9076658e+03 -2.2433044e+02
+9.4691544e+03 2.8298064e+04 -2.1961725e+02
+2.6353933e+05 7.1426342e+05 6.7285851e+03
+7.4748842e+05 2.0006910e+06 4.4016528e+04
+1.3037874e+06 3.4394968e+06 1.1693833e+05
+1.7660072e+06 4.5861033e+06 2.2367277e+05
+2.0519064e+06 5.2208646e+06 3.6363704e+05
+2.1684342e+06 5.3663744e+06 5.4193801e+05
+2.1665118e+06 5.1674548e+06 7.6747127e+05
+2.0864331e+06 4.7378197e+06 1.0513423e+06
+1.9365761e+06 4.0993816e+06 1.4079275e+06
+1.7104224e+06 3.2457415e+06 1.8541201e+06
+1.4123880e+06 2.2427607e+06 2.4049307e+06
+1.0581712e+06 1.2594095e+06 3.0614862e+06
+6.4241368e+05 4.8673275e+05 3.7743465e+06
+4.0660174e+04 5.5768881e+04 3.9321141e+06
+3.7320405e+03 2.7628159e+04 4.0766577e+06
+-2.1582118e+04 1.5338338e+04 4.1997116e+06
+-4.8901786e+04 5.8461618e+03 4.3335374e+06
+-4.2548067e+04 9.1340266e+04 6.2675586e+06
+1.5736108e+06 3.3096211e+05 0.0000000e+00
+1.7576992e+00 1.6270210e+01 -5.8280415e+00
+3.0961732e+01 2.6691053e+02 -9.8037219e+01
+4.9790847e+02 3.6657766e+03 -1.1775433e+03
+8.2684800e+03 4.7795080e+04 -9.8038878e+03
+2.4183204e+05 9.4911262e+05 -1.0864997e+04
+6.7440016e+05 2.6134787e+06 1.3739179e+04
+1.1644346e+06 4.4818650e+06 5.7664951e+04
+1.5652287e+06 5.9676913e+06 1.1906403e+05
+1.8035970e+06 6.7890280e+06 1.9603885e+05
+1.8861867e+06 6.9764255e+06 2.9287043e+05
+1.8602670e+06 6.7208377e+06 4.1684997e+05
+1.7625419e+06 6.1711422e+06 5.7550055e+05
+1.5999231e+06 5.3501210e+06 7.7884860e+05
+1.3677664e+06 4.2421108e+06 1.0387295e+06
+1.0762373e+06 2.9319853e+06 1.3634292e+06
+7.5402365e+05 1.6525021e+06 1.7443944e+06
+4.2064289e+05 6.6930594e+05 2.1303404e+06
+2.5429806e+04 9.5455823e+04 2.1982168e+06
+2.7735943e+03 4.5620844e+04 2.2687954e+06
+-1.1497198e+04 2.5809109e+04 2.3293937e+06
+-2.6631592e+04 1.2683290e+04 2.3950291e+06
+-3.3704630e+04 1.3707710e+05 3.4809527e+06
+8.8449900e+05 3.8418247e+05 0.0000000e+00
+1.8847057e+00 3.0004214e+01 -1.0263431e+01
+2.9759589e+01 5.2077929e+02 -2.0705645e+02
+4.1306344e+02 7.4257455e+03 -3.1639654e+03
+5.9897478e+03 9.1927262e+04 -3.6155972e+04
+1.7575366e+05 1.1716058e+06 -1.0341022e+04
+4.8796470e+05 3.2715589e+06 3.2393060e+03
+8.3794332e+05 5.6069319e+06 1.6757388e+04
+1.1206079e+06 7.4478430e+06 4.0209415e+04
+1.2816655e+06 8.4649045e+06 6.7040568e+04
+1.3256868e+06 8.6955696e+06 9.8868705e+04
+1.2901518e+06 8.3792329e+06 1.4118711e+05
+1.2032586e+06 7.7048044e+06 1.9672977e+05
+1.0687721e+06 6.6924226e+06 2.7141796e+05
+8.8323238e+05 5.3101493e+06 3.7526428e+05
+6.5765461e+05 3.6580708e+06 5.1813676e+05
+4.2233364e+05 2.0385972e+06 6.9729626e+05
+2.0672837e+05 8.2804921e+05 8.5935474e+05
+1.1987498e+04 1.5018804e+05 8.5289337e+05
+1.5326538e+03 5.1088530e+04 8.8240002e+05
+-4.3278247e+03 2.5024806e+04 9.0924496e+05
+-1.0433807e+04 1.2493144e+04 9.3435834e+05
+-2.3271445e+04 1.0380605e+05 1.4570810e+06
+3.9807470e+05 2.7162991e+05 0.0000000e+00
+1.9139754e+00 3.9664353e+01 -5.1760436e+00
+2.6494852e+01 7.2560527e+02 -1.3953223e+02
+2.7813227e+02 1.0826870e+04 -2.6708844e+03
+2.3327897e+03 1.3564040e+05 -3.7641510e+04
+1.4239172e+04 1.2289802e+06 -3.3295136e+04
+3.3346978e+04 3.4271900e+06 -3.1588609e+04
+5.4199363e+04 5.8560041e+06 -2.0956034e+04
+7.2652188e+04 7.7702507e+06 -3.9236863e+03
+8.4232968e+04 8.8404956e+06 5.2533744e+03
+8.7296813e+04 9.0886510e+06 9.0918453e+03
+8.4813983e+04 8.7606868e+06 1.2999163e+04
+7.9037932e+04 8.0593893e+06 1.6618064e+04
+6.9646938e+04 7.0033211e+06 2.1513915e+04
+5.6625451e+04 5.5552247e+06 3.1906153e+04
+4.1149908e+04 3.8175588e+06 5.3105390e+04
+2.5291417e+04 2.1071616e+06 8.9793245e+04
+1.1834169e+04 8.1909252e+05 1.4603140e+05
+2.7322709e+03 1.5387413e+05 1.5648290e+05
+5.2560696e+02 2.7453144e+04 1.8810548e+05
+-9.4450135e+02 6.9654058e+03 2.1125562e+05
+-2.5421320e+03 2.1650526e+03 2.2584853e+05
+-1.1726304e+04 3.5178427e+04 4.4936546e+05
+1.4529726e+05 1.2462271e+05 0.0000000e+00
+1.6601666e+00 3.3470061e+01 1.0892661e+01
+2.1795975e+01 6.5235368e+02 1.5900584e+02
+2.0110542e+02 1.0419578e+04 1.4873681e+03
+1.2346955e+03 1.3919486e+05 6.8380831e+03
+3.1048636e+03 1.2975850e+06 -5.3818086e+03
+2.8306706e+03 3.5892133e+06 -2.5069001e+04
+1.9519174e+03 6.0819759e+06 -1.9907991e+04
+4.1591340e+03 8.0517200e+06 -2.0986796e+03
+6.9581560e+03 9.1722191e+06 4.5939587e+03
+7.1911481e+03 9.4360566e+06 5.4697542e+03
+6.7064573e+03 9.0951581e+06 8.0193838e+03
+6.6494547e+03 8.3705237e+06 9.7042262e+03
+5.9324482e+03 7.2777358e+06 1.1041483e+04
+4.8362677e+03 5.7731853e+06 1.5407768e+04
+4.0001769e+03 3.9616736e+06 2.6142912e+04
+2.9263720e+03 2.1771281e+06 4.2266298e+04
+1.5760798e+03 8.4678208e+05 4.8580778e+04
+5.2610204e+02 1.8300449e+05 2.7314808e+04
+1.4067033e+02 2.8150867e+04 2.8503672e+04
+-9.9716140e+01 3.6141052e+03 3.2347594e+04
+-3.4518489e+02 3.7571207e+02 3.4114120e+04
+-4.3241412e+03 6.1581772e+03 9.7961520e+04
+4.3040504e+04 3.4505865e+04 0.0000000e+00
+1.0031628e+00 1.4252581e+01 2.2663097e+01
+1.2574116e+01 3.1132048e+02 4.2107410e+02
+9.7934764e+01 5.7994623e+03 5.7824774e+03
+2.1264710e+02 9.7311823e+04 5.5233284e+04
+-5.2051982e+03 1.3779708e+06 2.5757383e+04
+-1.9924249e+04 3.7583802e+06 -1.9091782e+04
+-3.6533672e+04 6.2761400e+06 -1.8852296e+04
+-4.4971272e+04 8.2791489e+06 1.1072706e+03
+-4.7528460e+04 9.4478632e+06 4.8318470e+03
+-4.9306441e+04 9.7254053e+06 2.6939981e+03
+-4.8466324e+04 9.3695931e+06 5.2027318e+03
+-4.4324911e+04 8.6260073e+06 6.6945497e+03
+-3.8852731e+04 7.5048228e+06 6.9015888e+03
+-3.1255873e+04 5.9549731e+06 8.8179259e+03
+-2.0974595e+04 4.0830714e+06 1.4588501e+04
+-1.0948353e+04 2.2366665e+06 2.3771556e+04
+-4.1109875e+03 8.7224613e+05 2.3518863e+04
+-9.1537517e+02 2.0471608e+05 6.7905788e+03
+-9.7369501e+01 3.1825841e+04 3.6118291e+03
+8.7679279e+00 3.5909564e+03 3.5927257e+03
+2.3851157e+00 3.8224398e+02 3.4445801e+03
+-1.0988137e+03 3.2661339e+02 1.4890814e+04
+8.9904992e+03 4.8731461e+03 0.0000000e+00
+3.0066995e-01 0.0000000e+00 1.5556261e+01
+3.4253277e+00 0.0000000e+00 3.5055640e+02
+1.2387087e+01 0.0000000e+00 6.4977041e+03
+-4.6882384e+02 0.0000000e+00 1.0827787e+05
+-1.4379391e+04 1.4783711e+06 6.3256714e+04
+-4.4845610e+04 3.9710554e+06 -1.0619428e+04
+-7.9298144e+04 6.4950833e+06 -2.0250965e+04
+-9.9747830e+04 8.5148844e+06 3.8833295e+03
+-1.0724658e+05 9.7382265e+06 6.3433316e+03
+-1.1065968e+05 1.0033092e+07 -1.2464668e+02
+-1.0872072e+05 9.6567099e+06 2.1628283e+03
+-1.0018134e+05 8.8920648e+06 4.3933092e+03
+-8.7798759e+04 7.7435396e+06 3.7739537e+03
+-7.0498664e+04 6.1481960e+06 3.4472312e+03
+-4.7840237e+04 4.2135164e+06 5.6639577e+03
+-2.5595608e+04 2.3004843e+06 1.1579476e+04
+-9.9899255e+03 8.9616533e+05 1.1636947e+04
+-2.4660902e+03 2.1838981e+05 2.1082923e+03
+-3.3802680e+02 3.3541107e+04 3.8444850e+02
+1.8486390e+00 3.4581239e+03 3.8163124e+02
+1.1118378e+01 3.7979041e+02 3.8108842e+02
+-1.9051489e+02 0.0000000e+00 1.3374358e+03
+1.0239971e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-5.4820177e+03 1.7136288e+06 3.0838620e+05
+-6.7629052e+02 5.8285401e+06 2.2168515e+05
+-4.8225399e+04 9.7492338e+06 -6.6345749e+04
+-1.2559825e+05 1.2317943e+07 -6.9854292e+04
+-1.3598344e+05 1.3895772e+07 5.4677435e+04
+-1.1011301e+05 1.4475965e+07 4.8305027e+04
+-1.1227077e+05 1.4002041e+07 1.7750496e+04
+-1.1571756e+05 1.2874802e+07 4.1608156e+04
+-9.2079033e+04 1.1261519e+07 4.8908795e+04
+-6.1646815e+04 8.9847988e+06 4.4616170e+04
+-4.3813928e+04 6.1386644e+06 8.6124152e+04
+-3.3678245e+04 3.3650291e+06 1.2913485e+05
+-2.2226230e+04 1.4038320e+06 9.7987679e+04
+-1.1184203e+04 4.3366118e+05 3.3510192e+04
+-4.2008346e+03 9.5090208e+04 6.0397313e+03
+-1.0763161e+03 1.4675403e+04 3.7576056e+02
+-1.8198883e+02 1.3881730e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.6900309e+05 0.0000000e+00 2.8833402e+05
+1.4092250e+06 0.0000000e+00 6.4875362e+05
+2.5606154e+06 0.0000000e+00 3.1651063e+05
+3.1826707e+06 0.0000000e+00 -1.6241357e+05
+3.3942223e+06 0.0000000e+00 -6.6732987e+04
+3.5293796e+06 0.0000000e+00 1.5872775e+05
+3.5046235e+06 0.0000000e+00 1.3313560e+05
+3.2430408e+06 0.0000000e+00 8.1389118e+04
+2.8455029e+06 0.0000000e+00 1.0843456e+05
+2.2915641e+06 0.0000000e+00 1.8761274e+05
+1.5652074e+06 0.0000000e+00 3.1536799e+05
+8.6411575e+05 0.0000000e+00 3.6245871e+05
+3.8613995e+05 0.0000000e+00 2.5882324e+05
+1.4146079e+05 0.0000000e+00 1.1878657e+05
+4.1826897e+04 0.0000000e+00 3.3008770e+04
+8.7278871e+03 0.0000000e+00 4.7432298e+03
+1.0176298e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.2377121e+04 -5.8716379e+05 1.1110369e+05
+-2.0571346e+05 -2.0317988e+06 2.7672760e+05
+-3.5496091e+05 -3.3176811e+06 1.2145924e+05
+-5.0887046e+05 -4.1297160e+06 -1.1141914e+05
+-6.2128101e+05 -4.7363143e+06 -4.0265667e+04
+-6.2364193e+05 -4.9909878e+06 8.9518055e+04
+-5.7523279e+05 -4.7731951e+06 6.3194103e+04
+-5.3543014e+05 -4.3229867e+06 2.4007604e+04
+-4.6632384e+05 -3.7499224e+06 3.4974617e+04
+-3.5647134e+05 -2.9633191e+06 6.5168388e+04
+-2.4377504e+05 -1.9851617e+06 1.1261504e+05
+-1.4728911e+05 -1.0475924e+06 1.3004757e+05
+-7.3616373e+04 -4.0890130e+05 9.1316490e+04
+-2.9275971e+04 -1.1268330e+05 4.0550753e+04
+-9.3024661e+03 -1.9463845e+04 1.0192476e+04
+-2.6927437e+03 -1.8495510e+03 1.3123597e+03
+-3.7921433e+02 7.2957758e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-2.6487693e+04 -6.9538591e+05 1.2922789e+05
+-1.0125151e+05 -1.8633967e+06 6.1401765e+04
+-1.7817673e+05 -3.0663967e+06 -5.9931755e+04
+-2.1250741e+05 -4.0844263e+06 -1.8313582e+04
+-2.1195269e+05 -4.7221841e+06 4.3525156e+04
+-2.1077919e+05 -4.8627985e+06 1.6001709e+04
+-2.1137826e+05 -4.6571955e+06 -8.8935734e+02
+-1.9901150e+05 -4.2614568e+06 2.0876289e+04
+-1.7451372e+05 -3.6718259e+06 2.5215164e+04
+-1.3882933e+05 -2.8775218e+06 1.6600475e+04
+-9.0535647e+04 -1.9502944e+06 2.8455228e+04
+-4.3107597e+04 -1.0540644e+06 4.4357564e+04
+-1.3732189e+04 -4.0558214e+05 3.2543666e+04
+-2.7743590e+03 -9.8240701e+04 9.6887937e+03
+2.3644579e+01 -1.5572954e+04 1.5712467e+03
+3.6768267e+02 -1.8552184e+03 1.3208009e+02
+1.8750389e+02 -2.3021931e+02 0.0000000e+00
+0 0 0
+0 0 0
+7.0739297e-02 -7.7862053e+00 8.0161360e+00
+9.9630144e-01 -1.6668976e+02 1.7713492e+02
+1.2887750e+01 -3.0367626e+03 3.2133969e+03
+2.0165365e+02 -4.9777316e+04 5.2320235e+04
+3.4385888e+03 -6.8789140e+05 2.7007751e+04
+9.7213907e+03 -1.8818675e+06 -9.0883726e+03
+1.9325635e+04 -3.1665006e+06 -7.6082874e+03
+2.9283547e+04 -4.2266986e+06 5.6326552e+03
+3.3499779e+04 -4.8597444e+06 2.4466674e+03
+3.2319334e+04 -5.0019159e+06 -1.4149394e+03
+3.1051136e+04 -4.8001708e+06 1.7885928e+03
+2.9728513e+04 -4.3923847e+06 2.8067882e+03
+2.5516331e+04 -3.7845795e+06 2.2452704e+03
+1.9302797e+04 -2.9680025e+06 2.9245468e+03
+1.3329846e+04 -2.0125981e+06 4.0581817e+03
+8.1502823e+03 -1.0899564e+06 6.2043242e+03
+3.9756662e+03 -4.1904622e+05 5.7027993e+03
+1.3658963e+03 -9.7534366e+04 1.1643900e+03
+3.2698377e+02 -1.5364838e+04 2.9120019e+02
+4.9970836e+01 -1.8494318e+03 2.3728623e+02
+2.1703760e+01 -2.3774027e+02 2.3419487e+02
+1.9816218e+02 -1.0600097e+02 -4.8522274e+01
+-3.6244416e+02 -1.3681957e+03 0.0000000e+00
+2.2503545e-01 -1.8698978e+01 1.1690900e+01
+2.8284644e+00 -3.5869092e+02 2.1343771e+02
+2.7351567e+01 -5.6278243e+03 2.8750826e+03
+2.4713953e+02 -7.3844698e+04 2.6907972e+04
+2.1335953e+03 -6.7781439e+05 9.4921617e+03
+6.0731274e+03 -1.8857129e+06 -1.2659854e+04
+1.1971569e+04 -3.2192870e+06 -8.3786439e+03
+1.7810454e+04 -4.3003860e+06 2.5269813e+03
+2.0006407e+04 -4.9267455e+06 1.9931518e+03
+1.9155944e+04 -5.0693110e+06 9.2586822e+02
+1.8489683e+04 -4.8697077e+06 3.5067541e+03
+1.7773700e+04 -4.4550700e+06 4.0933666e+03
+1.5284304e+04 -3.8386743e+06 4.0511013e+03
+1.1580646e+04 -3.0124210e+06 5.6330186e+03
+7.9299800e+03 -2.0445957e+06 8.7260337e+03
+4.7093403e+03 -1.1097785e+06 1.2890386e+04
+2.1698934e+03 -4.2439385e+05 1.1957134e+04
+6.5673832e+02 -9.0647245e+04 3.4978977e+03
+1.3396887e+02 -1.3956665e+04 1.8583847e+03
+2.2605224e+01 -1.8602106e+03 1.8553274e+03
+5.0417377e+01 -2.8992937e+02 1.8594867e+03
+3.8289517e+02 -1.5801900e+03 1.8537758e+03
+-2.7933711e+03 -1.0746378e+04 0.0000000e+00
+3.8524844e-01 -2.2592447e+01 5.1683876e+00
+4.7592571e+00 -4.0801101e+02 7.1525197e+01
+4.2938301e+01 -6.0003271e+03 6.0219516e+02
+3.0824390e+02 -7.4162793e+04 1.8467426e+03
+1.6824503e+03 -6.6748543e+05 -7.0598026e+03
+4.2746005e+03 -1.8776735e+06 -1.6543133e+04
+8.0279969e+03 -3.2313740e+06 -1.0532229e+04
+1.1823971e+04 -4.3185337e+06 -4.9372953e+01
+1.3411038e+04 -4.9356311e+06 2.3833689e+03
+1.3003077e+04 -5.0757377e+06 2.9980786e+03
+1.2584304e+04 -4.8777800e+06 5.1924837e+03
+1.2094515e+04 -4.4613660e+06 6.0435157e+03
+1.0492935e+04 -3.8439039e+06 6.7126676e+03
+8.0905931e+03 -3.0184044e+06 9.4417833e+03
+5.6380738e+03 -2.0520934e+06 1.5301576e+04
+3.3792615e+03 -1.1183544e+06 2.3424623e+04
+1.5400883e+03 -4.2634034e+05 2.5407108e+04
+4.2464927e+02 -7.9156544e+04 1.4017860e+04
+1.2693545e+02 -1.4100336e+04 1.4175265e+04
+1.3868439e+02 -3.6059363e+03 1.5682589e+04
+3.3898753e+02 -1.2006150e+03 1.5909080e+04
+2.4183160e+01 -1.0351318e+04 2.0331021e+04
+-9.7902205e+03 -4.2854331e+04 0.0000000e+00
+4.9359501e-01 -1.7400049e+01 -3.7720174e+00
+6.5006261e+00 -2.9879355e+02 -9.2995254e+01
+6.5976347e+01 -4.2057252e+03 -1.6754413e+03
+5.7062346e+02 -5.1366242e+04 -2.2709826e+04
+4.0905334e+03 -6.5673572e+05 -2.3310894e+04
+1.0576717e+04 -1.8570021e+06 -2.1212053e+04
+1.8399045e+04 -3.2042109e+06 -1.2574868e+04
+2.5283354e+04 -4.2818955e+06 -1.8441973e+03
+2.8998786e+04 -4.8852935e+06 3.0523641e+03
+2.9608768e+04 -5.0205280e+06 5.5307530e+03
+2.8784423e+04 -4.8245848e+06 8.3651959e+03
+2.6964433e+04 -4.4114540e+06 1.0526632e+04
+2.3666636e+04 -3.8008273e+06 1.3430363e+04
+1.9059813e+04 -2.9871100e+06 1.9701544e+04
+1.3762169e+04 -2.0367738e+06 3.1769650e+04
+8.3969101e+03 -1.1210121e+06 5.1321880e+04
+3.7518818e+03 -4.4467106e+05 7.7734884e+04
+8.0250258e+02 -8.0333785e+04 8.0841893e+04
+4.4176933e+02 -2.6968807e+04 9.3794202e+04
+6.9502931e+02 -1.2874299e+04 1.0142304e+05
+1.4410460e+03 -6.2107119e+03 1.0244990e+05
+-3.0148438e+03 -3.5095028e+04 1.1848017e+05
+-3.0847110e+04 -9.6685611e+04 0.0000000e+00
+5.9292938e-01 -9.6398406e+00 -6.4684324e+00
+9.4695313e+00 -1.5739114e+02 -1.2758079e+02
+1.3751278e+02 -2.1563051e+03 -1.9014502e+03
+2.1510240e+03 -2.8287954e+04 -2.1141015e+04
+7.3832032e+04 -5.6309315e+05 -1.2861961e+04
+2.1088463e+05 -1.5878752e+06 -4.9087373e+03
+3.6717334e+05 -2.7447988e+06 6.4491899e+03
+4.9504516e+05 -3.6728803e+06 2.2996724e+04
+5.6873399e+05 -4.1896139e+06 4.0248629e+04
+5.8986591e+05 -4.3051046e+06 6.0646108e+04
+5.7482904e+05 -4.1360563e+06 8.7440373e+04
+5.3555416e+05 -3.7779910e+06 1.2168189e+05
+4.7423892e+05 -3.2516628e+06 1.6705053e+05
+3.9063231e+05 -2.5562916e+06 2.2883227e+05
+2.8960182e+05 -1.7498117e+06 3.0992294e+05
+1.8253702e+05 -9.7354972e+05 4.0225715e+05
+8.2655765e+04 -3.8342844e+05 4.6508713e+05
+3.8041739e+03 -5.5000113e+04 4.4793678e+05
+1.5885132e+03 -2.5518006e+04 4.4643012e+05
+2.2661168e+03 -1.4128635e+04 4.4109051e+05
+4.1369541e+03 -6.8363225e+03 4.2714542e+05
+-1.4965187e+04 -4.7456102e+04 4.3119859e+05
+-7.6300161e+04 -1.4073507e+05 0.0000000e+00
+6.8037510e-01 -4.8128035e+00 -3.7497130e+00
+1.2327574e+01 -7.9413536e+01 -6.3093156e+01
+2.0610637e+02 -1.1567392e+03 -7.7085688e+02
+3.5611599e+03 -1.7309732e+04 -7.0417592e+03
+1.1947771e+05 -4.3659991e+05 -1.1180666e+04
+3.3634167e+05 -1.2644623e+06 3.4648860e+03
+5.8505155e+05 -2.1950386e+06 3.3087743e+04
+7.9140135e+05 -2.9404299e+06 7.4464696e+04
+9.1689445e+05 -3.3540362e+06 1.2558962e+05
+9.6292173e+05 -3.4456615e+06 1.8941144e+05
+9.5154037e+05 -3.3082491e+06 2.7033078e+05
+9.0042415e+05 -3.0179425e+06 3.7239998e+05
+8.1378562e+05 -2.5937213e+06 5.0059595e+05
+6.9035535e+05 -2.0371818e+06 6.5889720e+05
+5.3469523e+05 -1.3941050e+06 8.4473268e+05
+3.5958045e+05 -7.7181118e+05 1.0374373e+06
+1.8076319e+05 -2.8863499e+05 1.1825236e+06
+8.3807016e+03 -3.3572113e+04 1.1781447e+06
+3.4178893e+03 -1.6238510e+04 1.1682209e+06
+4.8105003e+03 -9.1644500e+03 1.1469490e+06
+8.3016973e+03 -4.0890446e+03 1.1092684e+06
+-4.5785529e+04 -3.0643428e+04 1.1045358e+06
+-1.5189853e+05 -1.2092143e+05 0.0000000e+00
+7.5819697e-01 -2.4355395e+00 -1.4205109e+00
+1.4484252e+01 -4.2231690e+01 -2.0861758e+01
+2.5200075e+02 -6.6570980e+02 -2.1350306e+02
+4.4130131e+03 -1.0834788e+04 -1.6323060e+03
+1.4259259e+05 -3.1846889e+05 1.1834030e+03
+4.0709546e+05 -9.4745211e+05 2.4566181e+04
+7.1436427e+05 -1.6539868e+06 7.2937491e+04
+9.7296334e+05 -2.2188185e+06 1.4436990e+05
+1.1359714e+06 -2.5316013e+06 2.3786996e+05
+1.2045174e+06 -2.6004121e+06 3.5653730e+05
+1.2040873e+06 -2.4948910e+06 5.0560368e+05
+1.1555932e+06 -2.2724397e+06 6.9094087e+05
+1.0638779e+06 -1.9489718e+06 9.1888952e+05
+9.2572754e+05 -1.5273134e+06 1.1937159e+06
+7.4263398e+05 -1.0417378e+06 1.5111028e+06
+5.2326046e+05 -5.7018338e+05 1.8443857e+06
+2.7969820e+05 -2.0219693e+05 2.1206631e+06
+1.3418437e+04 -1.9309808e+04 2.1336426e+06
+5.6361188e+03 -9.0873144e+03 2.1245873e+06
+8.0142899e+03 -5.4217060e+03 2.0912482e+06
+1.3429830e+04 -2.9483888e+03 2.0277759e+06
+-9.4246305e+04 -1.6692999e+04 2.0655246e+06
+-2.5050381e+05 -5.2692625e+04 0.0000000e+00
+8.2107326e-01 -1.2779725e+00 -2.3664714e-01
+1.5969224e+01 -2.3291877e+01 -1.4933080e+00
+2.8081201e+02 -3.8759302e+02 2.6771176e+01
+4.9277383e+03 -6.5654898e+03 1.0468754e+03
+1.5359972e+05 -2.1542942e+05 1.4070368e+04
+4.4356399e+05 -6.5393565e+05 4.8989031e+04
+7.8480714e+05 -1.1476170e+06 1.1573581e+05
+1.0761617e+06 -1.5418511e+06 2.1575880e+05
+1.2654108e+06 -1.7599628e+06 3.4958176e+05
+1.3528646e+06 -1.8077347e+06 5.2064661e+05
+1.3653194e+06 -1.7331926e+06 7.3482445e+05
+1.3251875e+06 -1.5762470e+06 9.9938283e+05
+1.2376017e+06 -1.3489564e+06 1.3221990e+06
+1.0978003e+06 -1.0543735e+06 1.7087329e+06
+9.0371510e+05 -7.1631704e+05 2.1544747e+06
+6.5784363e+05 -3.8768330e+05 2.6277079e+06
+3.6543992e+05 -1.3205785e+05 3.0313566e+06
+1.8036884e+04 -1.0875477e+04 3.0593856e+06
+7.9296066e+03 -5.0549325e+03 3.0517756e+06
+1.1476140e+04 -3.1566028e+03 3.0065952e+06
+1.9019510e+04 -2.0353037e+03 2.9160953e+06
+-1.4275626e+05 -1.5948924e+04 2.9975319e+06
+-3.5267645e+05 -1.7222706e+04 0.0000000e+00
+8.6846165e-01 -6.3574117e-01 2.8257474e-01
+1.6989486e+01 -1.1953223e+01 6.9455460e+00
+2.9976557e+02 -2.0441595e+02 1.3909320e+02
+5.2664201e+03 -3.5205100e+03 2.5779064e+03
+1.5909409e+05 -1.2445420e+05 2.3904144e+04
+4.6164811e+05 -3.8263607e+05 6.9269415e+04
+8.2139117e+05 -6.7413963e+05 1.5094655e+05
+1.1322275e+06 -9.0683737e+05 2.7325351e+05
+1.3386698e+06 -1.0355412e+06 4.3812082e+05
+1.4398844e+06 -1.0636609e+06 6.4931248e+05
+1.4627473e+06 -1.0192705e+06 9.1304508e+05
+1.4302647e+06 -9.2587263e+05 1.2374058e+06
+1.3479296e+06 -7.9101249e+05 1.6312998e+06
+1.2102677e+06 -6.1698652e+05 2.1011211e+06
+1.0125814e+06 -4.1784190e+05 2.6424668e+06
+7.5196341e+05 -2.2428957e+05 3.2197701e+06
+4.2691544e+05 -7.4484601e+04 3.7155454e+06
+2.1526123e+04 -5.5553192e+03 3.7534573e+06
+9.8588166e+03 -2.4942597e+03 3.7461342e+06
+1.4461529e+04 -1.4021465e+03 3.6918782e+06
+2.3991836e+04 -5.9490902e+02 3.5809683e+06
+-1.7360744e+05 -9.5035314e+03 3.6632311e+06
+-4.4024758e+05 -2.2218043e+04 0.0000000e+00
+8.9868295e-01 -1.9431068e-01 4.9573729e-01
+1.7613615e+01 -3.7023291e+00 1.0568421e+01
+3.1115264e+02 -6.3977740e+01 1.9224027e+02
+5.4700701e+03 -1.1082065e+03 3.3962753e+03
+1.6171810e+05 -4.0695720e+04 2.9785661e+04
+4.6973195e+05 -1.2588652e+05 8.1989847e+04
+8.3832562e+05 -2.2224904e+05 1.7299026e+05
+1.1592387e+06 -2.9916898e+05 3.0880138e+05
+1.3751736e+06 -3.4171131e+05 4.9223711e+05
+1.4843385e+06 -3.5099641e+05 7.2720086e+05
+1.5133044e+06 -3.3625516e+05 1.0199625e+06
+1.4852852e+06 -3.0524857e+05 1.3788896e+06
+1.4061455e+06 -2.6054671e+05 1.8133086e+06
+1.2702980e+06 -2.0299657e+05 2.3300701e+06
+1.0716723e+06 -1.3724160e+05 2.9249479e+06
+8.0400442e+05 -7.3357348e+04 3.5603410e+06
+4.6115093e+05 -2.4072758e+04 4.1066642e+06
+2.3510428e+04 -1.7061157e+03 4.1500030e+06
+1.0969216e+04 -7.3860345e+02 4.1431148e+06
+1.6178342e+04 -3.5835234e+02 4.0847453e+06
+2.6992421e+04 4.7396115e+00 3.9643706e+06
+-1.8476653e+05 -1.5716050e+03 4.0423220e+06
+-4.9779776e+05 -1.3550418e+04 0.0000000e+00
+9.0914104e-01 1.9431068e-01 5.5411536e-01
+1.7826241e+01 3.7023291e+00 1.1599894e+01
+3.1500182e+02 6.3977740e+01 2.0824040e+02
+5.5387498e+03 1.1082065e+03 3.6549208e+03
+1.6249375e+05 4.0695720e+04 3.1715145e+04
+4.7198490e+05 1.2588652e+05 8.6248924e+04
+8.4314815e+05 2.2224904e+05 1.8035861e+05
+1.1671305e+06 2.9916898e+05 3.2059928e+05
+1.3860509e+06 3.4171131e+05 5.1007303e+05
+1.4977493e+06 3.5099641e+05 7.5270737e+05
+1.5286372e+06 3.3625516e+05 1.0547476e+06
+1.5019784e+06 3.0524857e+05 1.4245997e+06
+1.4237989e+06 2.6054671e+05 1.8716782e+06
+1.2885458e+06 2.0299657e+05 2.4029564e+06
+1.0897555e+06 1.3724160e+05 3.0142976e+06
+8.2006263e+05 7.3357348e+04 3.6675303e+06
+4.7169394e+05 2.4072758e+04 4.2292427e+06
+2.4110292e+04 1.7061157e+03 4.2742979e+06
+1.1278656e+04 7.3860346e+02 4.2676693e+06
+1.6649226e+04 3.5835084e+02 4.2083012e+06
+2.7863720e+04 -4.8116642e+00 4.0856289e+06
+-1.8639965e+05 1.5690830e+03 4.1674207e+06
+-5.1712509e+05 1.3550460e+04 0.0000000e+00
+8.9868295e-01 6.3574117e-01 4.9573729e-01
+1.7613615e+01 1.1953223e+01 1.0568421e+01
+3.1115264e+02 2.0441595e+02 1.9224027e+02
+5.4700701e+03 3.5205100e+03 3.3962753e+03
+1.6171810e+05 1.2445420e+05 2.9785661e+04
+4.6973195e+05 3.8263607e+05 8.1989847e+04
+8.3832562e+05 6.7413963e+05 1.7299026e+05
+1.1592387e+06 9.0683737e+05 3.0880138e+05
+1.3751736e+06 1.0355412e+06 4.9223711e+05
+1.4843385e+06 1.0636609e+06 7.2720086e+05
+1.5133044e+06 1.0192705e+06 1.0199625e+06
+1.4852852e+06 9.2587263e+05 1.3788896e+06
+1.4061455e+06 7.9101249e+05 1.8133086e+06
+1.2702980e+06 6.1698652e+05 2.3300701e+06
+1.0716723e+06 4.1784190e+05 2.9249479e+06
+8.0400442e+05 2.2428957e+05 3.5603410e+06
+4.6115093e+05 7.4484601e+04 4.1066642e+06
+2.3510428e+04 5.5553192e+03 4.1500030e+06
+1.0969216e+04 2.4942597e+03 4.1431148e+06
+1.6178340e+04 1.4021472e+03 4.0847453e+06
+2.6992412e+04 5.9491103e+02 3.9643705e+06
+-1.8476651e+05 9.5034949e+03 4.0423174e+06
+-4.9779748e+05 2.2217868e+04 0.0000000e+00
+8.6846165e-01 1.2779725e+00 2.8257474e-01
+1.6989486e+01 2.3291877e+01 6.9455460e+00
+2.9976557e+02 3.8759302e+02 1.3909320e+02
+5.2664201e+03 6.5654898e+03 2.5779064e+03
+1.5909409e+05 2.1542942e+05 2.3904144e+04
+4.6164811e+05 6.5393565e+05 6.9269415e+04
+8.2139117e+05 1.1476170e+06 1.5094655e+05
+1.1322275e+06 1.5418511e+06 2.7325351e+05
+1.3386698e+06 1.7599628e+06 4.3812082e+05
+1.4398844e+06 1.8077347e+06 6.4931248e+05
+1.4627473e+06 1.7331926e+06 9.1304508e+05
+1.4302647e+06 1.5762470e+06 1.2374058e+06
+1.3479296e+06 1.3489564e+06 1.6312998e+06
+1.2102677e+06 1.0543735e+06 2.1011211e+06
+1.0125814e+06 7.1631704e+05 2.6424668e+06
+7.5196341e+05 3.8768330e+05 3.2197701e+06
+4.2691544e+05 1.3205785e+05 3.7155454e+06
+2.1526123e+04 1.0875477e+04 3.7534573e+06
+9.8588166e+03 5.0549325e+03 3.7461342e+06
+1.4461527e+04 3.1566033e+03 3.6918782e+06
+2.3991775e+04 2.0353287e+03 3.5809682e+06
+-1.7360899e+05 1.5949989e+04 3.6632274e+06
+-4.4024763e+05 1.7222476e+04 0.0000000e+00
+8.2107326e-01 2.4355395e+00 -2.3664714e-01
+1.5969224e+01 4.2231690e+01 -1.4933080e+00
+2.8081201e+02 6.6570980e+02 2.6771176e+01
+4.9277383e+03 1.0834788e+04 1.0468754e+03
+1.5359972e+05 3.1846889e+05 1.4070368e+04
+4.4356399e+05 9.4745211e+05 4.8989031e+04
+7.8480714e+05 1.6539868e+06 1.1573581e+05
+1.0761617e+06 2.2188185e+06 2.1575880e+05
+1.2654108e+06 2.5316013e+06 3.4958176e+05
+1.3528646e+06 2.6004121e+06 5.2064661e+05
+1.3653194e+06 2.4948910e+06 7.3482445e+05
+1.3251875e+06 2.2724397e+06 9.9938283e+05
+1.2376017e+06 1.9489718e+06 1.3221990e+06
+1.0978003e+06 1.5273134e+06 1.7087329e+06
+9.0371510e+05 1.0417378e+06 2.1544747e+06
+6.5784363e+05 5.7018338e+05 2.6277079e+06
+3.6543992e+05 2.0219693e+05 3.0313566e+06
+1.8036884e+04 1.9309808e+04 3.0593856e+06
+7.9296066e+03 9.0873144e+03 3.0517756e+06
+1.1476138e+04 5.4217063e+03 3.0065952e+06
+1.9019459e+04 2.9483956e+03 2.9160953e+06
+-1.4275795e+05 1.6693176e+04 2.9975309e+06
+-3.5267668e+05 5.2692766e+04 0.0000000e+00
+7.5819697e-01 4.8128035e+00 -1.4205109e+00
+1.4484252e+01 7.9413536e+01 -2.0861758e+01
+2.5200075e+02 1.1567392e+03 -2.1350306e+02
+4.4130131e+03 1.7309732e+04 -1.6323060e+03
+1.4259259e+05 4.3659991e+05 1.1834030e+03
+4.0709546e+05 1.2644623e+06 2.4566181e+04
+7.1436427e+05 2.1950386e+06 7.2937491e+04
+9.7296334e+05 2.9404299e+06 1.4436990e+05
+1.1359714e+06 3.3540362e+06 2.3786996e+05
+1.2045174e+06 3.4456615e+06 3.5653730e+05
+1.2040873e+06 3.3082491e+06 5.0560368e+05
+1.1555932e+06 3.0179425e+06 6.9094087e+05
+1.0638779e+06 2.5937213e+06 9.1888952e+05
+9.2572754e+05 2.0371818e+06 1.1937159e+06
+7.4263398e+05 1.3941050e+06 1.5111028e+06
+5.2326046e+05 7.7181118e+05 1.8443857e+06
+2.7969820e+05 2.8863499e+05 2.1206631e+06
+1.3418437e+04 3.3572113e+04 2.1336426e+06
+5.6361188e+03 1.6238510e+04 2.1245873e+06
+8.0142904e+03 9.1644497e+03 2.0912482e+06
+1.3429844e+04 4.0890416e+03 2.0277759e+06
+-9.4245857e+04 3.0643290e+04 2.0655231e+06
+-2.5050352e+05 1.2092156e+05 0.0000000e+00
+6.8037510e-01 9.6398406e+00 -3.7497130e+00
+1.2327574e+01 1.5739114e+02 -6.3093156e+01
+2.0610637e+02 2.1563051e+03 -7.7085688e+02
+3.5611599e+03 2.8287954e+04 -7.0417592e+03
+1.1947771e+05 5.6309315e+05 -1.1180666e+04
+3.3634167e+05 1.5878752e+06 3.4648860e+03
+5.8505155e+05 2.7447988e+06 3.3087743e+04
+7.9140135e+05 3.6728803e+06 7.4464696e+04
+9.1689445e+05 4.1896139e+06 1.2558962e+05
+9.6292173e+05 4.3051046e+06 1.8941144e+05
+9.5154037e+05 4.1360563e+06 2.7033078e+05
+9.0042415e+05 3.7779910e+06 3.7239998e+05
+8.1378562e+05 3.2516628e+06 5.0059595e+05
+6.9035535e+05 2.5562916e+06 6.5889720e+05
+5.3469523e+05 1.7498117e+06 8.4473268e+05
+3.5958045e+05 9.7354972e+05 1.0374373e+06
+1.8076319e+05 3.8342844e+05 1.1825236e+06
+8.3807016e+03 5.5000113e+04 1.1781447e+06
+3.4178894e+03 2.5518006e+04 1.1682209e+06
+4.8105018e+03 1.4128635e+04 1.1469490e+06
+8.3017367e+03 6.8363299e+03 1.1092684e+06
+-4.5784252e+04 4.7456285e+04 1.1045350e+06
+-1.5189829e+05 1.4073539e+05 0.0000000e+00
+5.9292938e-01 1.7400049e+01 -6.4684324e+00
+9.4695313e+00 2.9879355e+02 -1.2758079e+02
+1.3751278e+02 4.2057252e+03 -1.9014502e+03
+2.1510240e+03 5.1366242e+04 -2.1141015e+04
+7.3832032e+04 6.5673572e+05 -1.2861961e+04
+2.1088463e+05 1.8570021e+06 -4.9087373e+03
+3.6717334e+05 3.2042109e+06 6.4491899e+03
+4.9504516e+05 4.2818955e+06 2.2996724e+04
+5.6873399e+05 4.8852935e+06 4.0248629e+04
+5.8986591e+05 5.0205280e+06 6.0646108e+04
+5.7482904e+05 4.8245848e+06 8.7440373e+04
+5.3555416e+05 4.4114540e+06 1.2168189e+05
+4.7423892e+05 3.8008273e+06 1.6705053e+05
+3.9063231e+05 2.9871100e+06 2.2883227e+05
+2.8960182e+05 2.0367738e+06 3.0992294e+05
+1.8253702e+05 1.1210121e+06 4.0225715e+05
+8.2655765e+04 4.4467106e+05 4.6508713e+05
+3.8041739e+03 8.0333785e+04 4.4793678e+05
+1.5885133e+03 2.6968807e+04 4.4643012e+05
+2.2661176e+03 1.2874299e+04 4.4109051e+05
+4.1369605e+03 6.2106955e+03 4.2714538e+05
+-1.4964960e+04 3.5094767e+04 4.3120024e+05
+-7.6300040e+04 9.6685938e+04 0.0000000e+00
+4.9359501e-01 2.2592447e+01 -3.7720174e+00
+6.5006261e+00 4.0801101e+02 -9.2995254e+01
+6.5976347e+01 6.0003271e+03 -1.6754413e+03
+5.7062346e+02 7.4162793e+04 -2.2709826e+04
+4.0905334e+03 6.6748543e+05 -2.3310894e+04
+1.0576717e+04 1.8776735e+06 -2.1212053e+04
+1.8399045e+04 3.2313740e+06 -1.2574868e+04
+2.5283354e+04 4.3185337e+06 -1.8441973e+03
+2.8998786e+04 4.9356311e+06 3.0523641e+03
+2.9608768e+04 5.0757377e+06 5.5307530e+03
+2.8784423e+04 4.8777800e+06 8.3651959e+03
+2.6964433e+04 4.4613660e+06 1.0526632e+04
+2.3666636e+04 3.8439039e+06 1.3430363e+04
+1.9059813e+04 3.0184044e+06 1.9701544e+04
+1.3762169e+04 2.0520934e+06 3.1769650e+04
+8.3969101e+03 1.1183544e+06 5.1321880e+04
+3.7518818e+03 4.2634034e+05 7.7734884e+04
+8.0250258e+02 7.9156544e+04 8.0841893e+04
+4.4176933e+02 1.4100336e+04 9.3794202e+04
+6.9502906e+02 3.6059360e+03 1.0142303e+05
+1.4410380e+03 1.2006235e+03 1.0244994e+05
+-3.0151729e+03 1.0351564e+04 1.1848201e+05
+-3.0847113e+04 4.2854518e+04 0.0000000e+00
+3.8524844e-01 1.8698978e+01 5.1683876e+00
+4.7592571e+00 3.5869092e+02 7.1525197e+01
+4.2938301e+01 5.6278243e+03 6.0219516e+02
+3.0824390e+02 7.3844698e+04 1.8467426e+03
+1.6824503e+03 6.7781439e+05 -7.0598026e+03
+4.2746005e+03 1.8857129e+06 -1.6543133e+04
+8.0279969e+03 3.2192870e+06 -1.0532229e+04
+1.1823971e+04 4.3003860e+06 -4.9372957e+01
+1.3411038e+04 4.9267455e+06 2.3833689e+03
+1.3003077e+04 5.0693110e+06 2.9980786e+03
+1.2584304e+04 4.8697077e+06 5.1924837e+03
+1.2094515e+04 4.4550700e+06 6.0435157e+03
+1.0492935e+04 3.8386743e+06 6.7126676e+03
+8.0905931e+03 3.0124210e+06 9.4417833e+03
+5.6380738e+03 2.0445957e+06 1.5301576e+04
+3.3792615e+03 1.1097785e+06 2.3424623e+04
+1.5400883e+03 4.2439385e+05 2.5407108e+04
+4.2464942e+02 9.0647246e+04 1.4017860e+04
+1.2693546e+02 1.3956666e+04 1.4175265e+04
+1.3868363e+02 1.8602116e+03 1.5682590e+04
+3.3895944e+02 2.8996754e+02 1.5909101e+04
+2.3305751e+01 1.5815085e+03 2.0331713e+04
+-9.7901386e+03 1.0746410e+04 0.0000000e+00
+2.2503545e-01 7.7862053e+00 1.1690900e+01
+2.8284644e+00 1.6668976e+02 2.1343771e+02
+2.7351567e+01 3.0367626e+03 2.8750826e+03
+2.4713952e+02 4.9777316e+04 2.6907972e+04
+2.1335950e+03 6.8789140e+05 9.4921617e+03
+6.0731273e+03 1.8818675e+06 -1.2659854e+04
+1.1971568e+04 3.1665006e+06 -8.3786439e+03
+1.7810454e+04 4.2266986e+06 2.5269812e+03
+2.0006407e+04 4.8597444e+06 1.9931519e+03
+1.9155944e+04 5.0019159e+06 9.2586800e+02
+1.8489680e+04 4.8001708e+06 3.5067525e+03
+1.7773699e+04 4.3923847e+06 4.0933658e+03
+1.5284304e+04 3.7845795e+06 4.0511004e+03
+1.1580646e+04 2.9680025e+06 5.6330183e+03
+7.9299791e+03 2.0125981e+06 8.7260336e+03
+4.7093401e+03 1.0899564e+06 1.2890386e+04
+2.1698969e+03 4.1904624e+05 1.1957137e+04
+6.5674348e+02 9.7534366e+04 3.4978980e+03
+1.3397374e+02 1.5364837e+04 1.8583832e+03
+2.2605122e+01 1.8494386e+03 1.8553266e+03
+5.0388442e+01 2.3775508e+02 1.8595355e+03
+3.8198706e+02 1.0618984e+02 1.8540522e+03
+-2.7933900e+03 1.3681357e+03 0.0000000e+00
+7.0739295e-02 0.0000000e+00 8.0161360e+00
+9.9630135e-01 0.0000000e+00 1.7713492e+02
+1.2887747e+01 0.0000000e+00 3.2133969e+03
+2.0165345e+02 0.0000000e+00 5.2320235e+04
+3.4385820e+03 6.9538591e+05 2.7007719e+04
+9.7213653e+03 1.8633967e+06 -9.0884069e+03
+1.9325647e+04 3.0663967e+06 -7.6082982e+03
+2.9283597e+04 4.0844263e+06 5.6326482e+03
+3.3499792e+04 4.7221841e+06 2.4466721e+03
+3.2319342e+04 4.8627985e+06 -1.4149431e+03
+3.1051114e+04 4.6571954e+06 1.7885921e+03
+2.9728488e+04 4.2614568e+06 2.8067671e+03
+2.5516328e+04 3.6718259e+06 2.2452435e+03
+1.9302801e+04 2.8775218e+06 2.9245203e+03
+1.3329831e+04 1.9502945e+06 4.0581315e+03
+8.1502765e+03 1.0540644e+06 6.2042579e+03
+3.9757473e+03 4.0558206e+05 5.7027679e+03
+1.3660734e+03 9.8240569e+04 1.1644009e+03
+3.2716306e+02 1.5572834e+04 2.9121433e+02
+5.0065612e+01 1.8551694e+03 2.3726659e+02
+2.1704150e+01 2.3027931e+02 2.3417883e+02
+1.9815644e+02 0.0000000e+00 -4.8301177e+01
+-3.6250163e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-2.6488578e+04 5.8716386e+05 1.2922702e+05
+-1.0125233e+05 2.0317991e+06 6.1400682e+04
+-1.7817621e+05 3.3176804e+06 -5.9932258e+04
+-2.1250574e+05 4.1297154e+06 -1.8313900e+04
+-2.1195083e+05 4.7363142e+06 4.3525855e+04
+-2.1077885e+05 4.9909877e+06 1.6002473e+04
+-2.1137870e+05 4.7731950e+06 -8.8917010e+02
+-1.9901199e+05 4.3229864e+06 2.0875584e+04
+-1.7451353e+05 3.7499217e+06 2.5214258e+04
+-1.3882922e+05 2.9633189e+06 1.6599539e+04
+-9.0536067e+04 1.9851625e+06 2.8453656e+04
+-4.3107598e+04 1.0475920e+06 4.4355436e+04
+-1.3729397e+04 4.0889803e+05 3.2542630e+04
+-2.7684547e+03 1.1267848e+05 9.6889744e+03
+2.9608166e+01 1.9459692e+04 1.5716772e+03
+3.7111339e+02 1.8472394e+03 1.3217598e+02
+1.8839206e+02 -7.9248247e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.2377124e+04 0.0000000e+00 1.1110392e+05
+-2.0571374e+05 0.0000000e+00 2.7672796e+05
+-3.5496061e+05 0.0000000e+00 1.2145996e+05
+-5.0886991e+05 0.0000000e+00 -1.1141874e+05
+-6.2128088e+05 0.0000000e+00 -4.0265596e+04
+-6.2364197e+05 0.0000000e+00 8.9517986e+04
+-5.7523299e+05 0.0000000e+00 6.3194081e+04
+-5.3543038e+05 0.0000000e+00 2.4007655e+04
+-4.6632377e+05 0.0000000e+00 3.4974559e+04
+-3.5647142e+05 0.0000000e+00 6.5168307e+04
+-2.4377526e+05 0.0000000e+00 1.1261509e+05
+-1.4728896e+05 0.0000000e+00 1.3004754e+05
+-7.3616234e+04 0.0000000e+00 9.1316375e+04
+-2.9275843e+04 0.0000000e+00 4.0550603e+04
+-9.3025767e+03 0.0000000e+00 1.0192431e+04
+-2.6927853e+03 0.0000000e+00 1.3123073e+03
+-3.7919156e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.9642521e+04 -2.7826205e+05 4.1595781e+04
+-8.4264084e+04 -9.4395007e+05 7.8993961e+04
+-1.6265850e+05 -1.5499364e+06 -2.4664868e+03
+-1.9236719e+05 -2.0019631e+06 -5.2924171e+04
+-1.7651687e+05 -2.3718890e+06 1.5654401e+04
+-1.6688490e+05 -2.5011935e+06 4.3887932e+04
+-1.7277293e+05 -2.3636026e+06 8.0099514e+03
+-1.6942270e+05 -2.1248554e+06 6.5758421e+03
+-1.4875300e+05 -1.8218513e+06 2.0415135e+04
+-1.1474270e+05 -1.4149452e+06 1.8676579e+04
+-7.1023104e+04 -9.4261324e+05 2.5916631e+04
+-3.1589785e+04 -5.0698369e+05 3.2844390e+04
+-9.2900821e+03 -2.0722717e+05 2.2768543e+04
+-1.7030582e+03 -6.1792491e+04 8.9970698e+03
+1.3885130e+02 -1.3100964e+04 1.3714515e+03
+6.7019011e+02 -2.5351485e+03 -1.6381022e+02
+4.1700372e+02 -4.7517534e+02 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.5194256e+04 -3.9706524e+05 6.7121247e+04
+8.1190268e+04 -1.0843054e+06 2.5034804e+04
+1.4512744e+05 -1.8218756e+06 -2.6330328e+04
+2.0533984e+05 -2.4562518e+06 1.0111089e+04
+2.3799267e+05 -2.8413187e+06 2.9594349e+04
+2.3373141e+05 -2.9175576e+06 1.4478891e+03
+2.1892851e+05 -2.7923141e+06 -1.4740423e+02
+2.0637224e+05 -2.5491880e+06 1.8801423e+04
+1.8024931e+05 -2.1790494e+06 2.1236454e+04
+1.3760204e+05 -1.6890069e+06 1.8866716e+04
+9.2605632e+04 -1.1344020e+06 2.7514178e+04
+5.4071443e+04 -6.1078043e+05 3.4131882e+04
+2.5763931e+04 -2.3635986e+05 2.3768455e+04
+9.5971021e+03 -5.8717049e+04 8.3217277e+03
+2.7907032e+03 -9.7590694e+03 2.2127736e+03
+8.0361509e+02 -1.1529477e+03 3.9464122e+02
+2.3870831e+02 -1.3173996e+02 0.0000000e+00
+0 0 0
+0 0 0
+1.5278012e-02 -4.1166398e+00 4.1721011e+00
+2.3155918e-01 -8.8279227e+01 9.3216071e+01
+3.4053272e+00 -1.6200064e+03 1.7227049e+03
+6.0493304e+01 -2.6946764e+04 2.8810629e+04
+1.4237826e+03 -3.8138978e+05 1.5149976e+04
+4.1239067e+03 -1.0601464e+06 -3.4115119e+03
+6.9236347e+03 -1.8106765e+06 -2.2085733e+03
+8.0605729e+03 -2.4401060e+06 2.8686298e+03
+6.7875452e+03 -2.8114727e+06 -2.6508882e+02
+5.3189567e+03 -2.8900017e+06 -8.2074453e+02
+5.4813938e+03 -2.7696095e+06 2.0443830e+03
+5.9303213e+03 -2.5250819e+06 1.7364861e+03
+5.2756506e+03 -2.1579936e+06 9.2140789e+02
+3.8284374e+03 -1.6745329e+06 1.9217949e+03
+2.0406908e+03 -1.1243649e+06 3.1738271e+03
+3.5491604e+02 -6.0423909e+05 4.4278538e+03
+-4.5859175e+02 -2.3122825e+05 3.7304958e+03
+-3.7872487e+02 -5.4070662e+04 8.2872981e+02
+-1.6394418e+02 -8.6085244e+03 1.6911853e+02
+-5.2355168e+01 -1.0006942e+03 1.1919106e+02
+-5.6468222e+00 -1.1915760e+02 1.3396474e+02
+2.4408366e+02 -3.8374935e+02 4.7193279e+02
+4.2575512e+02 2.3010292e+02 0.0000000e+00
+4.4327732e-02 -9.9504640e+00 6.0145319e+00
+5.4050700e-01 -1.9075155e+02 1.1077481e+02
+5.3071068e+00 -3.0018196e+03 1.5146324e+03
+5.1226599e+01 -3.9716320e+04 1.4480102e+04
+4.3863246e+02 -3.7010284e+05 4.8881241e+03
+1.1689636e+03 -1.0440730e+06 -6.2811346e+03
+1.8757165e+03 -1.8032812e+06 -3.5806101e+03
+1.6924271e+03 -2.4286229e+06 1.0543641e+03
+4.3001843e+02 -2.7909481e+06 1.0614688e+02
+-4.4816733e+02 -2.8709199e+06 6.2850082e+02
+-1.4305731e+02 -2.7529789e+06 2.6306725e+03
+3.5400656e+02 -2.5073729e+06 2.3413986e+03
+3.8122263e+02 -2.1427520e+06 2.0028532e+03
+1.5479096e+02 -1.6643063e+06 3.2020869e+03
+-2.3843913e+02 -1.1181978e+06 5.2034898e+03
+-6.5076939e+02 -6.0112375e+05 7.4482584e+03
+-6.7559722e+02 -2.2751395e+05 6.5794514e+03
+-3.4786220e+02 -4.8362772e+04 1.8761625e+03
+-1.3211895e+02 -7.4245836e+03 9.5830953e+02
+-6.5510833e+01 -9.5873906e+02 1.0044711e+03
+-5.4754395e+01 -1.6818462e+02 1.1586701e+03
+8.3070875e+02 -2.2785912e+03 2.6056976e+03
+7.1420575e+02 -1.5201266e+03 0.0000000e+00
+7.5562006e-02 -1.2116970e+01 2.4761923e+00
+8.5115096e-01 -2.1836769e+02 3.4000438e+01
+6.8618366e+00 -3.2118481e+03 2.8010547e+02
+4.4680976e+01 -3.9873571e+04 7.0091953e+02
+2.3281939e+02 -3.6326898e+05 -4.6833194e+03
+5.7072530e+02 -1.0358917e+06 -9.1607486e+03
+9.2906335e+02 -1.8000340e+06 -5.3090455e+03
+8.1260760e+02 -2.4227541e+06 -1.6647289e+02
+5.0903671e+01 -2.7785560e+06 8.0150243e+02
+-4.8932138e+02 -2.8584473e+06 1.8212599e+03
+-2.8479404e+02 -2.7417093e+06 3.4207678e+03
+7.0558127e+01 -2.4954651e+06 3.5368598e+03
+1.4309565e+02 -2.1325748e+06 3.7095033e+03
+4.8590982e+01 -1.6579508e+06 5.3960211e+03
+-1.5439791e+02 -1.1157557e+06 8.7463812e+03
+-3.7829250e+02 -6.0163384e+05 1.3014019e+04
+-3.8301274e+02 -2.2606750e+05 1.3490674e+04
+-1.9178000e+02 -4.1610318e+04 7.3546489e+03
+-1.0994533e+02 -7.4017688e+03 7.5687149e+03
+-1.3737544e+02 -1.9444327e+03 8.8304684e+03
+-1.7201416e+02 -8.6164986e+02 1.0034935e+04
+2.9489516e+03 -8.9484437e+03 1.3780016e+04
+1.6279112e+02 -9.8407447e+03 0.0000000e+00
+1.1172547e-01 -9.4231113e+00 -2.3119890e+00
+1.4076040e+00 -1.6130202e+02 -5.4284630e+01
+1.3965696e+01 -2.2645160e+03 -9.4960614e+02
+1.2645864e+02 -2.7630988e+04 -1.2748024e+04
+1.0664291e+03 -3.5883385e+05 -1.4159048e+04
+2.9463811e+03 -1.0299738e+06 -1.2446590e+04
+5.1576431e+03 -1.7922306e+06 -7.0085426e+03
+6.7878349e+03 -2.4101054e+06 -1.1617913e+03
+7.3532997e+03 -2.7595399e+06 1.4676554e+03
+7.3394217e+03 -2.8380406e+06 3.3303746e+03
+7.2581691e+03 -2.7220740e+06 5.2212568e+03
+6.9307175e+03 -2.4764960e+06 6.2859308e+03
+6.1444323e+03 -2.1166114e+06 7.8447888e+03
+4.9736483e+03 -1.6474986e+06 1.1478765e+04
+3.5145231e+03 -1.1121960e+06 1.8166717e+04
+1.9503559e+03 -6.0539625e+05 2.8375689e+04
+6.3591070e+02 -2.3551458e+05 4.0938737e+04
+-6.0677882e+01 -4.2505338e+04 4.2696937e+04
+-1.9417928e+02 -1.4460060e+04 5.0391177e+04
+-3.5390021e+02 -7.1712660e+03 5.6666940e+04
+-3.7646297e+02 -4.1107795e+03 6.1733577e+04
+1.0147765e+04 -2.5804762e+04 6.5427288e+04
+-2.0575677e+03 -2.4104263e+04 0.0000000e+00
+1.8017062e-01 -5.3082544e+00 -3.7020982e+00
+3.0085597e+00 -8.6728485e+01 -7.1814665e+01
+4.7120232e+01 -1.1937937e+03 -1.0521444e+03
+7.9937558e+02 -1.5870601e+04 -1.1460883e+04
+3.1384798e+04 -3.1837044e+05 -9.4770537e+03
+9.2269515e+04 -9.1582017e+05 -5.0155903e+03
+1.6271662e+05 -1.5953423e+06 2.5527757e+03
+2.2073078e+05 -2.1460334e+06 1.2795160e+04
+2.5455749e+05 -2.4559802e+06 2.3411898e+04
+2.6495739e+05 -2.5259245e+06 3.6204264e+04
+2.5870484e+05 -2.4222388e+06 5.2493306e+04
+2.4072070e+05 -2.2017431e+06 7.2573809e+04
+2.1242939e+05 -1.8809226e+06 9.8694518e+04
+1.7418390e+05 -1.4657508e+06 1.3339509e+05
+1.2796888e+05 -9.9405547e+05 1.7688746e+05
+7.8407877e+04 -5.4700301e+05 2.2262336e+05
+3.2289089e+04 -2.1081047e+05 2.4828592e+05
+6.3312712e+02 -3.0674554e+04 2.3962618e+05
+-3.8460133e+02 -1.4330297e+04 2.4146954e+05
+-6.6701089e+02 -8.2692882e+03 2.4550069e+05
+-4.1325973e+02 -4.9330404e+03 2.5087317e+05
+2.6760670e+04 -3.6217315e+04 2.1955971e+05
+-1.0463081e+04 -3.6228313e+04 0.0000000e+00
+2.6405374e-01 -2.7058781e+00 -2.1860549e+00
+4.9899660e+00 -4.4907902e+01 -3.6669030e+01
+8.7388050e+01 -6.6151586e+02 -4.5022850e+02
+1.5708123e+03 -1.0070755e+04 -4.2597271e+03
+5.8515231e+04 -2.5374043e+05 -7.9272592e+03
+1.6592885e+05 -7.5394031e+05 6.0569238e+02
+2.9072498e+05 -1.3197852e+06 1.9375145e+04
+3.9569178e+05 -1.7766713e+06 4.5722638e+04
+4.6095181e+05 -2.0325327e+06 7.8217797e+04
+4.8619804e+05 -2.0895296e+06 1.1854663e+05
+4.8127323e+05 -2.0023101e+06 1.6888509e+05
+4.5449438e+05 -1.8179464e+06 2.3101816e+05
+4.0845798e+05 -1.5514780e+06 3.0690116e+05
+3.4319684e+05 -1.2085337e+06 3.9684254e+05
+2.6109360e+05 -8.1953605e+05 4.9592474e+05
+1.6868263e+05 -4.4837715e+05 5.8819670e+05
+7.7065810e+04 -1.6343641e+05 6.4452003e+05
+1.8946988e+03 -1.9343227e+04 6.3967470e+05
+-3.6867872e+02 -9.3480784e+03 6.3847905e+05
+-6.0144776e+02 -5.5000682e+03 6.4112178e+05
+4.8976156e+02 -3.2251007e+03 6.4722577e+05
+5.5786547e+04 -2.8837031e+04 5.3827341e+05
+-3.3790065e+04 -3.0580607e+04 0.0000000e+00
+3.3606572e-01 -1.3948288e+00 -8.8891812e-01
+6.5746309e+00 -2.4369211e+01 -1.3517989e+01
+1.1725205e+02 -3.8830985e+02 -1.5197530e+02
+2.1005941e+03 -6.3999700e+03 -1.5103415e+03
+7.5888921e+04 -1.8839409e+05 -1.5300584e+02
+2.1697061e+05 -5.7824909e+05 1.4280624e+04
+3.8266160e+05 -1.0189449e+06 4.5143061e+04
+5.2396909e+05 -1.3735408e+06 9.1006849e+04
+6.1476588e+05 -1.5712751e+06 1.5095479e+05
+6.5405827e+05 -1.6146587e+06 2.2654296e+05
+6.5393562e+05 -1.5458871e+06 3.2027168e+05
+6.2491388e+05 -1.4014871e+06 4.3449169e+05
+5.6997536e+05 -1.1939470e+06 5.7086323e+05
+4.8815102e+05 -9.2819816e+05 7.2810425e+05
+3.8082390e+05 -6.2731278e+05 8.9769106e+05
+2.5426133e+05 -3.3897429e+05 1.0572873e+06
+1.2193308e+05 -1.1661291e+05 1.1682289e+06
+3.3244090e+03 -1.1318577e+04 1.1702983e+06
+-7.8778987e+01 -5.2145726e+03 1.1718797e+06
+-5.4032460e+01 -3.0811475e+03 1.1775291e+06
+2.4120497e+03 -1.9260282e+03 1.1872478e+06
+9.4922789e+04 -2.0046430e+04 9.8928813e+05
+-7.5199180e+04 -1.4045312e+04 0.0000000e+00
+3.8703539e-01 -7.3848222e-01 -2.2230869e-01
+7.6299871e+00 -1.3539507e+01 -2.7127752e+00
+1.3620503e+02 -2.2699375e+02 -1.9421899e+01
+2.4277563e+03 -3.8763687e+03 -4.3041237e+01
+8.5876074e+04 -1.2878620e+05 8.0727107e+03
+2.4838984e+05 -4.0519130e+05 3.0189069e+04
+4.4135479e+05 -7.1838790e+05 7.3084392e+04
+6.0791943e+05 -9.6986063e+05 1.3764640e+05
+7.1756599e+05 -1.1096960e+06 2.2391203e+05
+7.6860701e+05 -1.1400069e+06 3.3351782e+05
+7.7436577e+05 -1.0905459e+06 4.6913027e+05
+7.4660899e+05 -9.8721496e+05 6.3343667e+05
+6.8843800e+05 -8.3937885e+05 8.2803228e+05
+5.9791457e+05 -6.5098456e+05 1.0507044e+06
+4.7495635e+05 -4.3818825e+05 1.2903387e+06
+3.2430690e+05 -2.3394489e+05 1.5188460e+06
+1.5997628e+05 -7.6972615e+04 1.6846693e+06
+4.5552561e+03 -6.4032097e+03 1.6932356e+06
+2.2637177e+02 -2.8227402e+03 1.6985470e+06
+5.3229090e+02 -1.6019594e+03 1.7080116e+06
+4.4320881e+03 -9.4984730e+02 1.7216229e+06
+1.3633979e+05 -1.4864967e+04 1.4373454e+06
+-1.2035169e+05 -9.6068137e+03 0.0000000e+00
+4.2034130e-01 -3.6742855e-01 7.7066672e-02
+8.2987781e+00 -6.9364881e+00 2.1647561e+00
+1.4806243e+02 -1.1922865e+02 4.6102804e+01
+2.6341276e+03 -2.0653977e+03 8.6742429e+02
+9.1542607e+04 -7.4827308e+04 1.4460019e+04
+2.6660758e+05 -2.3921077e+05 4.3520018e+04
+4.7628100e+05 -4.2602962e+05 9.6271900e+04
+6.5900177e+05 -5.7588420e+05 1.7552117e+05
+7.8135478e+05 -6.5908328e+05 2.8222351e+05
+8.4093035e+05 -6.7697713e+05 4.1814784e+05
+8.5154565e+05 -6.4720455e+05 5.8600818e+05
+8.2563160e+05 -5.8520277e+05 7.8862906e+05
+7.6643257e+05 -4.9678586e+05 1.0275331e+06
+6.7145457e+05 -3.8453188e+05 1.2998935e+06
+5.3943306e+05 -2.5800733e+05 1.5928609e+06
+3.7343204e+05 -1.3655347e+05 1.8740008e+06
+1.8697724e+05 -4.3685521e+04 2.0806519e+06
+5.3240415e+03 -3.3026826e+03 2.0937535e+06
+2.7145496e+02 -1.4142183e+03 2.1019323e+06
+6.7979421e+02 -7.1872191e+02 2.1148308e+06
+5.5395775e+03 -2.1006722e+02 2.1325433e+06
+1.7066869e+05 -5.9363991e+03 1.7793386e+06
+-1.4865562e+05 -1.1911234e+04 0.0000000e+00
+4.3956736e-01 -1.1204149e-01 2.0372854e-01
+8.6807962e+00 -2.1415290e+00 4.3415879e+00
+1.5484061e+02 -3.7159545e+01 7.8584507e+01
+2.7533066e+03 -6.4691243e+02 1.3768627e+03
+9.4472165e+04 -2.4529136e+04 1.8324622e+04
+2.7592486e+05 -7.9023287e+04 5.1944229e+04
+4.9441782e+05 -1.4107164e+05 1.1089405e+05
+6.8596310e+05 -1.9082680e+05 1.9911230e+05
+8.1549116e+05 -2.1843254e+05 3.1814399e+05
+8.8003391e+05 -2.2434782e+05 4.6981923e+05
+8.9353182e+05 -2.1441167e+05 6.5679895e+05
+8.6874363e+05 -1.9375038e+05 8.8188810e+05
+8.0908592e+05 -1.6433651e+05 1.1464983e+06
+7.1188266e+05 -1.2706800e+05 1.4474498e+06
+5.7521465e+05 -8.5112741e+04 1.7710129e+06
+4.0097389e+05 -4.4848450e+04 2.0823384e+06
+2.0198927e+05 -1.4165658e+04 2.3119802e+06
+5.6140637e+03 -1.0325149e+03 2.3276064e+06
+5.6438777e+01 -4.4627848e+02 2.3375512e+06
+3.7659436e+02 -2.2305100e+02 2.3528573e+06
+5.5684795e+03 -1.0590753e+01 2.3740817e+06
+1.9136865e+05 -1.8089342e+02 1.9921911e+06
+-1.5627798e+05 -5.7415145e+03 0.0000000e+00
+4.4592251e-01 1.1204149e-01 2.3913554e-01
+8.8066767e+00 2.1415290e+00 4.9756415e+00
+1.5707621e+02 3.7159545e+01 8.8582160e+01
+2.7927387e+03 6.4691243e+02 1.5407684e+03
+9.5376486e+04 2.4529136e+04 1.9599760e+04
+2.7876116e+05 7.9023287e+04 5.4776926e+04
+4.9997875e+05 1.4107164e+05 1.1580304e+05
+6.9430163e+05 1.9082680e+05 2.0697833e+05
+8.2612150e+05 2.1843254e+05 3.3004266e+05
+8.9226056e+05 2.2434782e+05 4.8683575e+05
+9.0667091e+05 2.1441167e+05 6.7997870e+05
+8.8221220e+05 1.9375038e+05 9.1224411e+05
+8.2238069e+05 1.6433651e+05 1.1849893e+06
+7.2447687e+05 1.2706800e+05 1.4949222e+06
+5.8638634e+05 8.5112741e+04 1.8280659e+06
+4.0959241e+05 4.4848450e+04 2.1488392e+06
+2.0661603e+05 1.4165658e+04 2.3855858e+06
+5.6574696e+03 1.0325149e+03 2.4019736e+06
+-9.0838772e+01 4.4627847e+02 2.4124506e+06
+1.5328023e+02 2.2305226e+02 2.4285004e+06
+5.3701902e+03 1.0596534e+01 2.4509727e+06
+1.9781816e+05 1.8073157e+02 2.0663933e+06
+-1.5602888e+05 5.7415109e+03 0.0000000e+00
+4.3956736e-01 3.6742855e-01 2.0372854e-01
+8.6807962e+00 6.9364881e+00 4.3415879e+00
+1.5484061e+02 1.1922865e+02 7.8584507e+01
+2.7533066e+03 2.0653977e+03 1.3768627e+03
+9.4472165e+04 7.4827308e+04 1.8324622e+04
+2.7592486e+05 2.3921077e+05 5.1944229e+04
+4.9441782e+05 4.2602962e+05 1.1089405e+05
+6.8596310e+05 5.7588420e+05 1.9911230e+05
+8.1549116e+05 6.5908328e+05 3.1814399e+05
+8.8003391e+05 6.7697713e+05 4.6981923e+05
+8.9353182e+05 6.4720455e+05 6.5679895e+05
+8.6874363e+05 5.8520277e+05 8.8188810e+05
+8.0908592e+05 4.9678586e+05 1.1464983e+06
+7.1188266e+05 3.8453188e+05 1.4474498e+06
+5.7521465e+05 2.5800733e+05 1.7710129e+06
+4.0097389e+05 1.3655347e+05 2.0823384e+06
+2.0198927e+05 4.3685521e+04 2.3119802e+06
+5.6140637e+03 3.3026826e+03 2.3276064e+06
+5.6438772e+01 1.4142183e+03 2.3375512e+06
+3.7659339e+02 7.1872251e+02 2.3528573e+06
+5.5685908e+03 2.1009153e+02 2.3740816e+06
+1.9137289e+05 5.9367499e+03 1.9921862e+06
+-1.5627792e+05 1.1911223e+04 0.0000000e+00
+4.2034130e-01 7.3848222e-01 7.7066672e-02
+8.2987781e+00 1.3539507e+01 2.1647561e+00
+1.4806243e+02 2.2699375e+02 4.6102804e+01
+2.6341276e+03 3.8763687e+03 8.6742429e+02
+9.1542607e+04 1.2878620e+05 1.4460019e+04
+2.6660758e+05 4.0519130e+05 4.3520018e+04
+4.7628100e+05 7.1838790e+05 9.6271900e+04
+6.5900177e+05 9.6986063e+05 1.7552117e+05
+7.8135478e+05 1.1096960e+06 2.8222351e+05
+8.4093035e+05 1.1400069e+06 4.1814784e+05
+8.5154565e+05 1.0905459e+06 5.8600818e+05
+8.2563160e+05 9.8721496e+05 7.8862906e+05
+7.6643257e+05 8.3937885e+05 1.0275331e+06
+6.7145457e+05 6.5098456e+05 1.2998935e+06
+5.3943306e+05 4.3818825e+05 1.5928609e+06
+3.7343204e+05 2.3394489e+05 1.8740008e+06
+1.8697724e+05 7.6972615e+04 2.0806519e+06
+5.3240415e+03 6.4032097e+03 2.0937535e+06
+2.7145497e+02 2.8227402e+03 2.1019323e+06
+6.7979389e+02 1.6019595e+03 2.1148308e+06
+5.5396628e+03 9.4984869e+02 2.1325431e+06
+1.7067222e+05 1.4865495e+04 1.7793332e+06
+-1.4865555e+05 9.6066667e+03 0.0000000e+00
+3.8703539e-01 1.3948288e+00 -2.2230869e-01
+7.6299871e+00 2.4369211e+01 -2.7127752e+00
+1.3620503e+02 3.8830985e+02 -1.9421899e+01
+2.4277563e+03 6.3999700e+03 -4.3041237e+01
+8.5876074e+04 1.8839409e+05 8.0727107e+03
+2.4838984e+05 5.7824909e+05 3.0189069e+04
+4.4135479e+05 1.0189449e+06 7.3084392e+04
+6.0791943e+05 1.3735408e+06 1.3764640e+05
+7.1756599e+05 1.5712751e+06 2.2391203e+05
+7.6860701e+05 1.6146587e+06 3.3351782e+05
+7.7436577e+05 1.5458871e+06 4.6913027e+05
+7.4660899e+05 1.4014871e+06 6.3343667e+05
+6.8843800e+05 1.1939470e+06 8.2803228e+05
+5.9791457e+05 9.2819816e+05 1.0507044e+06
+4.7495635e+05 6.2731278e+05 1.2903387e+06
+3.2430690e+05 3.3897429e+05 1.5188460e+06
+1.5997628e+05 1.1661291e+05 1.6846693e+06
+4.5552561e+03 1.1318577e+04 1.6932356e+06
+2.2637178e+02 5.2145726e+03 1.6985470e+06
+5.3229054e+02 3.0811478e+03 1.7080116e+06
+4.4321314e+03 1.9260306e+03 1.7216228e+06
+1.3634119e+05 2.0046544e+04 1.4373428e+06
+-1.2035184e+05 1.4045233e+04 0.0000000e+00
+3.3606572e-01 2.7058781e+00 -8.8891812e-01
+6.5746309e+00 4.4907902e+01 -1.3517989e+01
+1.1725205e+02 6.6151586e+02 -1.5197530e+02
+2.1005941e+03 1.0070755e+04 -1.5103415e+03
+7.5888921e+04 2.5374043e+05 -1.5300584e+02
+2.1697061e+05 7.5394031e+05 1.4280624e+04
+3.8266160e+05 1.3197852e+06 4.5143061e+04
+5.2396909e+05 1.7766713e+06 9.1006849e+04
+6.1476588e+05 2.0325327e+06 1.5095479e+05
+6.5405827e+05 2.0895296e+06 2.2654296e+05
+6.5393562e+05 2.0023101e+06 3.2027168e+05
+6.2491388e+05 1.8179464e+06 4.3449169e+05
+5.6997536e+05 1.5514780e+06 5.7086323e+05
+4.8815102e+05 1.2085337e+06 7.2810425e+05
+3.8082390e+05 8.1953605e+05 8.9769106e+05
+2.5426133e+05 4.4837715e+05 1.0572873e+06
+1.2193308e+05 1.6343641e+05 1.1682289e+06
+3.3244090e+03 1.9343227e+04 1.1702983e+06
+-7.8778972e+01 9.3480784e+03 1.1718797e+06
+-5.4031320e+01 5.5000680e+03 1.1775291e+06
+2.4120948e+03 3.2250911e+03 1.1872478e+06
+9.4924118e+04 2.8836660e+04 9.8928772e+05
+-7.5199243e+04 3.0580528e+04 0.0000000e+00
+2.6405374e-01 5.3082544e+00 -2.1860549e+00
+4.9899660e+00 8.6728485e+01 -3.6669030e+01
+8.7388050e+01 1.1937937e+03 -4.5022850e+02
+1.5708123e+03 1.5870601e+04 -4.2597271e+03
+5.8515231e+04 3.1837044e+05 -7.9272592e+03
+1.6592885e+05 9.1582017e+05 6.0569238e+02
+2.9072498e+05 1.5953423e+06 1.9375145e+04
+3.9569178e+05 2.1460334e+06 4.5722638e+04
+4.6095181e+05 2.4559802e+06 7.8217797e+04
+4.8619804e+05 2.5259245e+06 1.1854663e+05
+4.8127323e+05 2.4222388e+06 1.6888509e+05
+4.5449438e+05 2.2017431e+06 2.3101816e+05
+4.0845798e+05 1.8809226e+06 3.0690116e+05
+3.4319684e+05 1.4657508e+06 3.9684254e+05
+2.6109360e+05 9.9405547e+05 4.9592474e+05
+1.6868263e+05 5.4700301e+05 5.8819670e+05
+7.7065810e+04 2.1081047e+05 6.4452003e+05
+1.8946988e+03 3.0674554e+04 6.3967470e+05
+-3.6867870e+02 1.4330297e+04 6.3847905e+05
+-6.0144733e+02 8.2692884e+03 6.4112178e+05
+4.8977142e+02 4.9330271e+03 6.4722581e+05
+5.5786672e+04 3.6216788e+04 5.3827475e+05
+-3.3790140e+04 3.6228319e+04 0.0000000e+00
+1.8017062e-01 9.4231113e+00 -3.7020982e+00
+3.0085597e+00 1.6130202e+02 -7.1814665e+01
+4.7120232e+01 2.2645160e+03 -1.0521444e+03
+7.9937558e+02 2.7630988e+04 -1.1460883e+04
+3.1384798e+04 3.5883385e+05 -9.4770537e+03
+9.2269515e+04 1.0299738e+06 -5.0155903e+03
+1.6271662e+05 1.7922306e+06 2.5527757e+03
+2.2073078e+05 2.4101054e+06 1.2795160e+04
+2.5455749e+05 2.7595399e+06 2.3411898e+04
+2.6495739e+05 2.8380406e+06 3.6204264e+04
+2.5870484e+05 2.7220740e+06 5.2493306e+04
+2.4072070e+05 2.4764960e+06 7.2573809e+04
+2.1242939e+05 2.1166114e+06 9.8694518e+04
+1.7418390e+05 1.6474986e+06 1.3339509e+05
+1.2796888e+05 1.1121960e+06 1.7688746e+05
+7.8407877e+04 6.0539625e+05 2.2262336e+05
+3.2289089e+04 2.3551458e+05 2.4828592e+05
+6.3312711e+02 4.2505338e+04 2.3962618e+05
+-3.8460136e+02 1.4460060e+04 2.4146954e+05
+-6.6701251e+02 7.1712651e+03 2.4550069e+05
+-4.1332002e+02 4.1107555e+03 2.5087324e+05
+2.6758507e+04 2.5803896e+04 2.1956267e+05
+-1.0463034e+04 2.4104309e+04 0.0000000e+00
+1.1172547e-01 1.2116970e+01 -2.3119890e+00
+1.4076040e+00 2.1836769e+02 -5.4284630e+01
+1.3965696e+01 3.2118481e+03 -9.4960614e+02
+1.2645864e+02 3.9873571e+04 -1.2748024e+04
+1.0664291e+03 3.6326898e+05 -1.4159048e+04
+2.9463811e+03 1.0358917e+06 -1.2446590e+04
+5.1576431e+03 1.8000340e+06 -7.0085426e+03
+6.7878349e+03 2.4227541e+06 -1.1617913e+03
+7.3532997e+03 2.7785560e+06 1.4676554e+03
+7.3394217e+03 2.8584473e+06 3.3303746e+03
+7.2581691e+03 2.7417093e+06 5.2212568e+03
+6.9307175e+03 2.4954651e+06 6.2859308e+03
+6.1444323e+03 2.1325748e+06 7.8447888e+03
+4.9736483e+03 1.6579508e+06 1.1478765e+04
+3.5145231e+03 1.1157557e+06 1.8166717e+04
+1.9503559e+03 6.0163384e+05 2.8375689e+04
+6.3591070e+02 2.2606750e+05 4.0938737e+04
+-6.0677882e+01 4.1610318e+04 4.2696937e+04
+-1.9417934e+02 7.4017688e+03 5.0391177e+04
+-3.5390259e+02 1.9444324e+03 5.6666941e+04
+-3.7654817e+02 8.6163286e+02 6.1733650e+04
+1.0144730e+04 8.9477821e+03 6.5429873e+04
+-2.0576603e+03 9.8407044e+03 0.0000000e+00
+7.5562006e-02 9.9504640e+00 2.4761923e+00
+8.5115095e-01 1.9075155e+02 3.4000438e+01
+6.8618365e+00 3.0018196e+03 2.8010547e+02
+4.4680976e+01 3.9716320e+04 7.0091953e+02
+2.3281939e+02 3.7010284e+05 -4.6833194e+03
+5.7072530e+02 1.0440730e+06 -9.1607486e+03
+9.2906329e+02 1.8032812e+06 -5.3090455e+03
+8.1260761e+02 2.4286229e+06 -1.6647289e+02
+5.0903688e+01 2.7909481e+06 8.0150243e+02
+-4.8932137e+02 2.8709199e+06 1.8212599e+03
+-2.8479423e+02 2.7529789e+06 3.4207677e+03
+7.0558093e+01 2.5073729e+06 3.5368597e+03
+1.4309565e+02 2.1427520e+06 3.7095033e+03
+4.8590977e+01 1.6643063e+06 5.3960211e+03
+-1.5439793e+02 1.1181978e+06 8.7463812e+03
+-3.7829251e+02 6.0112375e+05 1.3014019e+04
+-3.8301267e+02 2.2751395e+05 1.3490674e+04
+-1.9177998e+02 4.8362772e+04 7.3546489e+03
+-1.0994533e+02 7.4245835e+03 7.5687149e+03
+-1.3737727e+02 9.5873933e+02 8.8304689e+03
+-1.7208581e+02 1.6819158e+02 1.0034957e+04
+2.9463884e+03 2.2787935e+03 1.3780862e+04
+1.6271306e+02 1.5200883e+03 0.0000000e+00
+4.4327731e-02 4.1166398e+00 6.0145319e+00
+5.4050698e-01 8.8279227e+01 1.1077481e+02
+5.3071064e+00 1.6200064e+03 1.5146324e+03
+5.1226590e+01 2.6946764e+04 1.4480102e+04
+4.3863231e+02 3.8138979e+05 4.8881243e+03
+1.1689604e+03 1.0601464e+06 -6.2811373e+03
+1.8757169e+03 1.8106765e+06 -3.5806103e+03
+1.6924281e+03 2.4401060e+06 1.0543641e+03
+4.3001903e+02 2.8114727e+06 1.0614709e+02
+-4.4816777e+02 2.8900017e+06 6.2850036e+02
+-1.4305659e+02 2.7696095e+06 2.6306724e+03
+3.5400724e+02 2.5250819e+06 2.3413970e+03
+3.8122285e+02 2.1579936e+06 2.0028517e+03
+1.5479071e+02 1.6745329e+06 3.2020856e+03
+-2.3844006e+02 1.1243649e+06 5.2034895e+03
+-6.5076961e+02 6.0423909e+05 7.4482589e+03
+-6.7559809e+02 2.3122825e+05 6.5794528e+03
+-3.4786127e+02 5.4070665e+04 1.8761649e+03
+-1.3211676e+02 8.6085266e+03 9.5831230e+02
+-6.5510855e+01 1.0006844e+03 1.0044714e+03
+-5.4794400e+01 1.1916710e+02 1.1586786e+03
+8.2932033e+02 3.8406812e+02 2.6060727e+03
+7.1420247e+02 -2.2999505e+02 0.0000000e+00
+1.5278011e-02 0.0000000e+00 4.1721011e+00
+2.3155914e-01 0.0000000e+00 9.3216071e+01
+3.4053256e+00 0.0000000e+00 1.7227049e+03
+6.0493237e+01 0.0000000e+00 2.8810629e+04
+1.4237403e+03 3.9706513e+05 1.5149917e+04
+4.1238953e+03 1.0843054e+06 -3.4115817e+03
+6.9236816e+03 1.8218755e+06 -2.2086335e+03
+8.0606608e+03 2.4562517e+06 2.8685860e+03
+6.7876419e+03 2.8413189e+06 -2.6502840e+02
+5.3190487e+03 2.9175576e+06 -8.2065733e+02
+5.4814487e+03 2.7923141e+06 2.0444106e+03
+5.9303590e+03 2.5491880e+06 1.7364378e+03
+5.2756599e+03 2.1790493e+06 9.2135507e+02
+3.8284345e+03 1.6890069e+06 1.9217485e+03
+2.0406634e+03 1.1344020e+06 3.1737578e+03
+3.5485565e+02 6.1078046e+05 4.4278159e+03
+-4.5863416e+02 2.3635989e+05 3.7305311e+03
+-3.7868753e+02 5.8717153e+04 8.2880377e+02
+-1.6386270e+02 9.7591811e+03 1.6917483e+02
+-5.2295211e+01 1.1529747e+03 1.1924499e+02
+-5.6484843e+00 1.3160398e+02 1.3396086e+02
+2.4404968e+02 0.0000000e+00 4.7213647e+02
+4.2570632e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.5193780e+04 2.7826239e+05 6.7120377e+04
+8.1190225e+04 9.4395043e+05 2.5032777e+04
+1.4512924e+05 1.5499351e+06 -2.6332250e+04
+2.0534294e+05 2.0019601e+06 1.0110630e+04
+2.3799635e+05 2.3718855e+06 2.9596819e+04
+2.3373444e+05 2.5011903e+06 1.4508300e+03
+2.1893088e+05 2.3636018e+06 -1.4649516e+02
+2.0637368e+05 2.1248559e+06 1.8799899e+04
+1.8024982e+05 1.8218512e+06 2.1234708e+04
+1.3760199e+05 1.4149452e+06 1.8865212e+04
+9.2604943e+04 9.4261426e+05 2.7511954e+04
+5.4069584e+04 5.0698455e+05 3.4130687e+04
+2.5762737e+04 2.0722874e+05 2.3769693e+04
+9.5984957e+03 6.1796092e+04 8.3238059e+03
+2.7933243e+03 1.3105128e+04 2.2141329e+03
+8.0572723e+02 2.5374392e+03 3.9505375e+02
+2.3938089e+02 4.7566889e+02 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.9642680e+04 0.0000000e+00 4.1595902e+04
+-8.4264278e+04 0.0000000e+00 7.8994035e+04
+-1.6265837e+05 0.0000000e+00 -2.4664373e+03
+-1.9236690e+05 0.0000000e+00 -5.2923936e+04
+-1.7651679e+05 0.0000000e+00 1.5654748e+04
+-1.6688485e+05 0.0000000e+00 4.3888227e+04
+-1.7277297e+05 0.0000000e+00 8.0100194e+03
+-1.6942280e+05 0.0000000e+00 6.5757336e+03
+-1.4875314e+05 0.0000000e+00 2.0415147e+04
+-1.1474290e+05 0.0000000e+00 1.8676635e+04
+-7.1022921e+04 0.0000000e+00 2.5916451e+04
+-3.1589545e+04 0.0000000e+00 3.2844239e+04
+-9.2901565e+03 0.0000000e+00 2.2768477e+04
+-1.7029280e+03 0.0000000e+00 8.9968321e+03
+1.3897736e+02 0.0000000e+00 1.3712748e+03
+6.7013731e+02 0.0000000e+00 -1.6394026e+02
+4.1692317e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.2302632e+04 -2.0250584e+05 2.7247120e+04
+1.1667284e+05 -6.9252553e+05 4.7086875e+04
+2.1144961e+05 -1.1757362e+06 -6.4536998e+02
+2.8806935e+05 -1.5485124e+06 -1.2706159e+04
+3.3607086e+05 -1.8047682e+06 3.1773061e+04
+3.4003038e+05 -1.8646848e+06 2.4915767e+04
+3.1197031e+05 -1.7643861e+06 -4.8190804e+03
+2.8259292e+05 -1.6036930e+06 1.1888293e+04
+2.4903088e+05 -1.3735429e+06 3.1224625e+04
+1.9346245e+05 -1.0540171e+06 2.9058652e+04
+1.2736406e+05 -6.9534200e+05 3.3853240e+04
+7.3474243e+04 -3.7464339e+05 3.7038399e+04
+3.7629248e+04 -1.5619622e+05 2.5354218e+04
+1.5996205e+04 -4.8990763e+04 1.1880680e+04
+5.9259242e+03 -1.1392807e+04 3.6104632e+03
+2.4953154e+03 -2.4180601e+03 4.4354386e+02
+7.5328202e+02 -4.9137071e+02 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.5464263e+02 -2.1709169e+05 3.9125460e+04
+5.8643724e+03 -5.9888054e+05 2.0806059e+04
+9.9913292e+03 -1.0126128e+06 -7.1811901e+03
+7.9060566e+03 -1.3644752e+06 6.2154616e+03
+3.1775428e+02 -1.5714184e+06 1.0540606e+04
+-7.7388670e+03 -1.6103278e+06 -2.3460776e+03
+-8.1843728e+03 -1.5422249e+06 2.6055940e+03
+-2.1617865e+03 -1.4046172e+06 1.2063849e+04
+8.2291814e+02 -1.1920840e+06 1.0031302e+04
+-1.5997663e+03 -9.1495754e+05 1.0173620e+04
+-4.7341743e+03 -6.0618836e+05 1.8359792e+04
+-5.6726826e+03 -3.1897812e+05 2.2438648e+04
+-4.2556300e+03 -1.1861746e+05 1.4879448e+04
+-2.1789015e+03 -2.7526638e+04 5.1907310e+03
+-8.7393780e+02 -3.9275983e+03 1.3901626e+03
+-1.9560438e+02 -2.7309611e+02 2.4441945e+02
+2.3940911e+00 -1.0635626e+01 0.0000000e+00
+0 0 0
+0 0 0
+-2.9337392e-03 -2.1513506e+00 2.1695624e+00
+-1.3417870e-01 -4.6403871e+01 4.8939171e+01
+-3.9319415e+00 -8.5880625e+02 9.1508269e+02
+-9.3343433e+01 -1.4432870e+04 1.5501789e+04
+-1.8425488e+03 -2.0651431e+05 8.1907305e+03
+-5.4033366e+03 -5.7943062e+05 -1.7319461e+03
+-9.7167997e+03 -9.9606482e+05 -1.6394881e+03
+-1.3432168e+04 -1.3449625e+06 3.4054912e+02
+-1.5388422e+04 -1.5480526e+06 -8.4925066e+02
+-1.5257760e+04 -1.5905456e+06 -5.4759719e+01
+-1.4120136e+04 -1.5241064e+06 1.4282064e+03
+-1.2971620e+04 -1.3847956e+06 5.0851651e+02
+-1.1346025e+04 -1.1747188e+06 -2.3498550e+02
+-8.7358352e+03 -9.0287912e+05 2.5088089e+02
+-5.7567603e+03 -5.9896849e+05 8.2846011e+02
+-3.2084165e+03 -3.1614842e+05 1.5620892e+03
+-1.3784136e+03 -1.1754580e+05 1.4102458e+03
+-3.7058706e+02 -2.6308524e+04 1.8399361e+02
+-5.1550935e+01 -3.8479260e+03 -8.0766525e+00
+4.8240692e-01 -3.4718150e+02 1.3171182e+01
+4.0702774e-01 -1.3417915e+01 9.8274561e+00
+-5.1497923e+00 -2.3479850e+02 4.9386181e+02
+7.4851426e+02 -3.9822563e+02 0.0000000e+00
+-3.2747203e-03 -5.2047660e+00 3.1010178e+00
+-2.0302511e-01 -1.0021458e+02 5.7655262e+01
+-5.3744096e+00 -1.5878208e+03 7.9735132e+02
+-9.7942616e+01 -2.1197770e+04 7.7114211e+03
+-1.1370803e+03 -1.9969325e+05 2.4660755e+03
+-3.4010565e+03 -5.6889379e+05 -3.5007352e+03
+-6.1163000e+03 -9.8926793e+05 -2.3056088e+03
+-8.3612939e+03 -1.3370526e+06 -1.6174487e+02
+-9.4461602e+03 -1.5380595e+06 -2.7868078e+02
+-9.2484048e+03 -1.5826753e+06 6.5126051e+02
+-8.5390387e+03 -1.5166826e+06 1.6233807e+03
+-7.9085354e+03 -1.3759257e+06 1.0160185e+03
+-6.9488709e+03 -1.1670531e+06 6.8042324e+02
+-5.3271662e+03 -8.9798395e+05 1.2672109e+03
+-3.4720021e+03 -5.9670415e+05 2.2364328e+03
+-1.8928669e+03 -3.1610902e+05 3.4391390e+03
+-7.7152116e+02 -1.1707188e+05 3.0611492e+03
+-1.7690525e+02 -2.4215510e+04 7.9717812e+02
+-1.5290280e+01 -3.5478189e+03 3.8024229e+02
+5.6493610e+00 -3.8063142e+02 3.4252580e+02
+5.4996885e-01 1.3105596e+01 2.6069811e+02
+-2.0066311e+02 -1.4427202e+03 2.4999915e+03
+2.6950199e+03 -3.9651916e+03 0.0000000e+00
+1.9911522e-03 -6.3504264e+00 1.2192313e+00
+-1.3822578e-01 -1.1478928e+02 1.6783309e+01
+-4.2920295e+00 -1.6968580e+03 1.3697441e+02
+-7.3587796e+01 -2.1224220e+04 2.8169263e+02
+-7.3841087e+02 -1.9561496e+05 -2.8253730e+03
+-2.2238351e+03 -5.6378569e+05 -5.1389123e+03
+-3.9818648e+03 -9.8638423e+05 -3.1116840e+03
+-5.4154573e+03 -1.3334233e+06 -5.1292741e+02
+-6.1117605e+03 -1.5326633e+06 2.5350517e+02
+-5.9944384e+03 -1.5781405e+06 1.2238493e+03
+-5.5296071e+03 -1.5122626e+06 2.0487470e+03
+-5.0928992e+03 -1.3705456e+06 1.8321513e+03
+-4.4543898e+03 -1.1624372e+06 1.8137099e+03
+-3.4145056e+03 -8.9538646e+05 2.6793089e+03
+-2.2301355e+03 -5.9635550e+05 4.4063924e+03
+-1.2139437e+03 -3.1750215e+05 6.6351708e+03
+-4.8594836e+02 -1.1709986e+05 6.7660874e+03
+-1.0547721e+02 -2.1152408e+04 3.6166826e+03
+-2.0874833e+01 -3.6418328e+03 3.6216258e+03
+-1.7844484e+01 -8.2603749e+02 3.9475009e+03
+-5.7283494e+01 -1.8332111e+02 4.0291974e+03
+-8.8471333e+02 -5.6565200e+03 1.2076662e+04
+6.3779795e+03 -1.3036158e+04 0.0000000e+00
+1.7178791e-02 -4.9575254e+00 -1.2983543e+00
+1.3949159e-01 -8.4996448e+01 -2.9823077e+01
+1.3515715e-01 -1.1963083e+03 -5.1654230e+02
+-1.1833419e+01 -1.4649364e+04 -6.9531061e+03
+-1.0422558e+02 -1.9327190e+05 -8.1255047e+03
+-3.1580247e+02 -5.6156792e+05 -7.0810913e+03
+-5.2857341e+02 -9.8373306e+05 -4.0460476e+03
+-6.6574540e+02 -1.3291182e+06 -8.9762210e+02
+-6.5130051e+02 -1.5262819e+06 7.2556932e+02
+-4.4603411e+02 -1.5716725e+06 2.0429501e+03
+-2.4496105e+02 -1.5058166e+06 3.1000631e+03
+-2.0783252e+02 -1.3638511e+06 3.5440778e+03
+-1.7898482e+02 -1.1569168e+06 4.3471463e+03
+-3.0895116e+01 -8.9234224e+05 6.3074708e+03
+1.1032534e+02 -5.9647418e+05 9.8303492e+03
+1.1156545e+02 -3.2088825e+05 1.5055234e+04
+2.0884100e+00 -1.2242636e+05 2.1015554e+04
+-7.9107814e+01 -2.1921582e+04 2.1803158e+04
+-1.1213351e+02 -7.3252576e+03 2.5404537e+04
+-1.9070963e+02 -3.3869281e+03 2.7802237e+04
+-3.9655654e+02 -1.6029581e+03 2.9241968e+04
+-2.1832270e+03 -1.6408867e+04 5.2325311e+04
+1.6648832e+04 -2.6546570e+04 0.0000000e+00
+5.5410983e-02 -2.8238636e+00 -2.0089022e+00
+9.7877877e-01 -4.6336032e+01 -3.8639538e+01
+1.6563658e+01 -6.4294785e+02 -5.6144339e+02
+3.0265976e+02 -8.6703858e+03 -6.0437055e+03
+1.3417848e+04 -1.7538623e+05 -5.9624267e+03
+4.0488622e+04 -5.1213837e+05 -3.6110781e+03
+7.2388758e+04 -8.9794584e+05 9.2956949e+02
+9.9192378e+04 -1.2137131e+06 7.0628461e+03
+1.1550320e+05 -1.3937798e+06 1.3615035e+04
+1.2119151e+05 -1.4357488e+06 2.1457292e+04
+1.1863739e+05 -1.3752852e+06 3.0993281e+04
+1.1002179e+05 -1.2445639e+06 4.2404976e+04
+9.6562489e+04 -1.0556299e+06 5.6984963e+04
+7.8767617e+04 -8.1570637e+05 7.5765380e+04
+5.7396179e+04 -5.4836834e+05 9.8232250e+04
+3.4326266e+04 -2.9876689e+05 1.2019250e+05
+1.3065226e+04 -1.1310254e+05 1.3009254e+05
+-2.2700716e+01 -1.6424308e+04 1.2525110e+05
+-5.2019042e+02 -7.4062280e+03 1.2546766e+05
+-8.2277953e+02 -3.9098820e+03 1.2614638e+05
+-1.4640258e+03 -1.8447141e+03 1.2743889e+05
+-4.3498763e+03 -2.4055854e+04 1.6619642e+05
+3.9203997e+04 -3.9573665e+04 0.0000000e+00
+1.0750672e-01 -1.4664034e+00 -1.2009131e+00
+2.1176680e+00 -2.4563214e+01 -2.0101433e+01
+3.8606325e+01 -3.6714859e+02 -2.4711896e+02
+7.1628943e+02 -5.6977665e+03 -2.3652154e+03
+2.8723537e+04 -1.4315276e+05 -4.8069896e+03
+8.1875140e+04 -4.3301576e+05 1.2411290e+02
+1.4447192e+05 -7.6313585e+05 1.1567180e+04
+1.9794235e+05 -1.0321887e+06 2.7792202e+04
+2.3201553e+05 -1.1849036e+06 4.7852323e+04
+2.4585195e+05 -1.2200690e+06 7.2518618e+04
+2.4363588e+05 -1.1678286e+06 1.0269942e+05
+2.2934947e+05 -1.0557595e+06 1.3903993e+05
+2.0470552e+05 -8.9489565e+05 1.8205813e+05
+1.7018165e+05 -6.9154100e+05 2.3090795e+05
+1.2718945e+05 -4.6506683e+05 2.8151060e+05
+7.9309292e+04 -2.5197669e+05 3.2409374e+05
+3.3371381e+04 -9.0100101e+04 3.4478573e+05
+1.1810042e+01 -1.0551971e+04 3.4079628e+05
+-1.3057539e+03 -4.7538224e+03 3.3908095e+05
+-2.0235577e+03 -2.3862023e+03 3.3897938e+05
+-3.4115065e+03 -8.1091308e+02 3.4184685e+05
+-5.4636588e+03 -1.9339293e+04 3.9838046e+05
+7.7244202e+04 -3.8958912e+04 0.0000000e+00
+1.5392470e-01 -7.7204028e-01 -5.1222213e-01
+3.0837965e+00 -1.3647708e+01 -7.9368941e+00
+5.6312453e+01 -2.2080534e+02 -9.3340548e+01
+1.0306116e+03 -3.6991791e+03 -1.0219455e+03
+4.0092589e+04 -1.0823280e+05 -1.4557589e+02
+1.1441703e+05 -3.3930173e+05 8.6939673e+03
+2.0263935e+05 -6.0226188e+05 2.7842250e+04
+2.7888513e+05 -8.1566755e+05 5.6405111e+04
+3.2878314e+05 -9.3616615e+05 9.3650388e+04
+3.5087010e+05 -9.6339570e+05 1.4016523e+05
+3.5065558e+05 -9.2125133e+05 1.9686797e+05
+3.3341617e+05 -8.3170583e+05 2.6431203e+05
+3.0111452e+05 -7.0392390e+05 3.4220112e+05
+2.5388906e+05 -5.4304724e+05 4.2796932e+05
+1.9312595e+05 -3.6401224e+05 5.1461267e+05
+1.2321936e+05 -1.9471752e+05 5.8839547e+05
+5.3702396e+04 -6.5556489e+04 6.3208254e+05
+-1.0534935e+02 -6.2461753e+03 6.3120651e+05
+-2.3535517e+03 -2.5719430e+03 6.3129940e+05
+-3.6421567e+03 -1.1679594e+03 6.3366928e+05
+-5.9898830e+03 -2.0101328e+02 6.4146132e+05
+-3.1774998e+03 -1.1593433e+04 7.3181575e+05
+1.3045845e+05 -2.6531855e+04 0.0000000e+00
+1.8694558e-01 -4.1489758e-01 -1.5705289e-01
+3.7448122e+00 -7.6883042e+00 -2.2312814e+00
+6.8014578e+01 -1.3050587e+02 -2.4340301e+01
+1.2334460e+03 -2.2566894e+03 -2.7251969e+02
+4.7415597e+04 -7.4906765e+04 4.8619209e+03
+1.3671220e+05 -2.4144505e+05 1.8682881e+04
+2.4363320e+05 -4.3142678e+05 4.5569372e+04
+3.3693643e+05 -5.8517656e+05 8.6061388e+04
+3.9914844e+05 -6.7164238e+05 1.3995517e+05
+4.2824314e+05 -6.9085502e+05 2.0777835e+05
+4.3056754e+05 -6.6002254e+05 2.9034779e+05
+4.1224591e+05 -5.9502843e+05 3.8803348e+05
+3.7536450e+05 -5.0272856e+05 4.9991164e+05
+3.1966564e+05 -3.8698150e+05 6.2209483e+05
+2.4617178e+05 -2.5836094e+05 7.4522811e+05
+1.5938963e+05 -1.3649521e+05 8.5192308e+05
+7.0614869e+04 -4.3853652e+04 9.1958165e+05
+-3.4681581e+02 -3.5915253e+03 9.2182907e+05
+-3.4507940e+03 -1.4074357e+03 9.2434173e+05
+-5.3462853e+03 -6.0138444e+02 9.2965373e+05
+-8.7051159e+03 -2.4938082e+01 9.4261486e+05
+3.3432777e+02 -6.7245600e+03 1.0737515e+06
+1.8889138e+05 -1.6804330e+04 0.0000000e+00
+2.0795236e-01 -2.0767214e-01 5.1635058e-03
+4.1582871e+00 -3.9550489e+00 4.1239926e-01
+7.5279442e+01 -6.8663468e+01 1.1352984e+01
+1.3599649e+03 -1.2016686e+03 2.3049490e+02
+5.1892094e+04 -4.3851605e+04 8.8258480e+03
+1.5080141e+05 -1.4394680e+05 2.7133766e+04
+2.7006135e+05 -2.5847246e+05 6.0399094e+04
+3.7489967e+05 -3.5102227e+05 1.1034690e+05
+4.4569057e+05 -4.0294006e+05 1.7730879e+05
+4.7991033e+05 -4.1434233e+05 2.6181612e+05
+4.8435231e+05 -3.9557733e+05 3.6456425e+05
+4.6566658e+05 -3.5622876e+05 4.8572959e+05
+4.2606009e+05 -3.0054144e+05 6.2391496e+05
+3.6502992e+05 -2.3092647e+05 7.7428459e+05
+2.8324238e+05 -1.5368543e+05 9.2579975e+05
+1.8500900e+05 -8.0472416e+04 1.0582000e+06
+8.2582721e+04 -2.5107701e+04 1.1438486e+06
+-5.9522720e+02 -1.9130809e+03 1.1480894e+06
+-4.3406548e+03 -7.8244569e+02 1.1520765e+06
+-6.7238449e+03 -3.7044109e+02 1.1592492e+06
+-1.0951279e+04 -3.3328426e+01 1.1757485e+06
+1.1094081e+03 -1.7737832e+03 1.3403570e+06
+2.3799969e+05 -9.5800737e+03 0.0000000e+00
+2.1963701e-01 -6.3387371e-02 7.5645571e-02
+4.3876362e+00 -1.2209458e+00 1.6347025e+00
+7.9325542e+01 -2.1374161e+01 2.9860467e+01
+1.4311324e+03 -3.7558176e+02 5.2594785e+02
+5.4315072e+04 -1.4426211e+04 1.1257647e+04
+1.5849423e+05 -4.7779467e+04 3.2520951e+04
+2.8465360e+05 -8.6012615e+04 6.9825322e+04
+3.9605728e+05 -1.1689187e+05 1.2560074e+05
+4.7181411e+05 -1.3419409e+05 2.0053182e+05
+5.0904739e+05 -1.3797213e+05 2.9514814e+05
+5.1474760e+05 -1.3167601e+05 4.1003103e+05
+4.9585881e+05 -1.1850730e+05 5.4519439e+05
+4.5470726e+05 -9.9903838e+04 6.9893544e+05
+3.9070748e+05 -7.6687448e+04 8.6587159e+05
+3.0431937e+05 -5.0951211e+04 1.0340327e+06
+1.9964389e+05 -2.6559873e+04 1.1814501e+06
+8.9353612e+04 -8.1792001e+03 1.2771573e+06
+-7.6202961e+02 -6.1764598e+02 1.2822379e+06
+-4.8773968e+03 -2.7679128e+02 1.2866661e+06
+-7.5460301e+03 -1.6095068e+02 1.2943792e+06
+-1.2347923e+04 -5.1795070e+01 1.3123141e+06
+-1.0086123e+03 4.5069728e+02 1.5024669e+06
+2.6959338e+05 -2.6715529e+03 0.0000000e+00
+2.2341015e-01 6.3387371e-02 9.5737615e-02
+4.4617461e+00 1.2209458e+00 1.9987767e+00
+8.0637263e+01 2.1374161e+01 3.5689407e+01
+1.4543094e+03 3.7558176e+02 6.2295516e+02
+5.5081189e+04 1.4426211e+04 1.2065830e+04
+1.6092622e+05 4.7779467e+04 3.4341836e+04
+2.8928940e+05 8.6012615e+04 7.3005956e+04
+4.0280900e+05 1.1689187e+05 1.3071485e+05
+4.8017649e+05 1.3419409e+05 2.0827169e+05
+5.1838703e+05 1.3797213e+05 3.0620095e+05
+5.2448455e+05 1.3167601e+05 4.2503530e+05
+5.0550936e+05 1.1850730e+05 5.6472354e+05
+4.6383975e+05 9.9903838e+04 7.2345680e+05
+3.9887979e+05 7.6687448e+04 8.9567898e+05
+3.1102786e+05 5.0951211e+04 1.0691350e+06
+2.0430194e+05 2.6559873e+04 1.2213058e+06
+9.1485390e+04 8.1792001e+03 1.3200780e+06
+-8.1886752e+02 6.1764598e+02 1.3253191e+06
+-5.0510340e+03 2.7679129e+02 1.3297257e+06
+-7.8092076e+03 1.6095159e+02 1.3373663e+06
+-1.2811589e+04 5.1875001e+01 1.3554444e+06
+-2.4615924e+03 -4.4830362e+02 1.5566231e+06
+2.8056395e+05 2.6713623e+03 0.0000000e+00
+2.1963701e-01 2.0767214e-01 7.5645571e-02
+4.3876362e+00 3.9550489e+00 1.6347025e+00
+7.9325542e+01 6.8663468e+01 2.9860467e+01
+1.4311324e+03 1.2016686e+03 5.2594785e+02
+5.4315072e+04 4.3851605e+04 1.1257647e+04
+1.5849423e+05 1.4394680e+05 3.2520951e+04
+2.8465360e+05 2.5847246e+05 6.9825322e+04
+3.9605728e+05 3.5102227e+05 1.2560074e+05
+4.7181411e+05 4.0294006e+05 2.0053182e+05
+5.0904739e+05 4.1434233e+05 2.9514814e+05
+5.1474760e+05 3.9557733e+05 4.1003103e+05
+4.9585881e+05 3.5622876e+05 5.4519439e+05
+4.5470726e+05 3.0054144e+05 6.9893544e+05
+3.9070748e+05 2.3092647e+05 8.6587159e+05
+3.0431937e+05 1.5368543e+05 1.0340327e+06
+1.9964389e+05 8.0472416e+04 1.1814501e+06
+8.9353612e+04 2.5107701e+04 1.2771573e+06
+-7.6202961e+02 1.9130809e+03 1.2822379e+06
+-4.8773968e+03 7.8244570e+02 1.2866661e+06
+-7.5460301e+03 3.7044132e+02 1.2943792e+06
+-1.2347860e+04 3.3341017e+01 1.3123142e+06
+-1.0060355e+03 1.7740742e+03 1.5024689e+06
+2.6959341e+05 9.5800568e+03 0.0000000e+00
+2.0795236e-01 4.1489758e-01 5.1635058e-03
+4.1582871e+00 7.6883042e+00 4.1239926e-01
+7.5279442e+01 1.3050587e+02 1.1352984e+01
+1.3599649e+03 2.2566894e+03 2.3049490e+02
+5.1892094e+04 7.4906765e+04 8.8258480e+03
+1.5080141e+05 2.4144505e+05 2.7133766e+04
+2.7006135e+05 4.3142678e+05 6.0399094e+04
+3.7489967e+05 5.8517656e+05 1.1034690e+05
+4.4569057e+05 6.7164238e+05 1.7730879e+05
+4.7991033e+05 6.9085502e+05 2.6181612e+05
+4.8435231e+05 6.6002254e+05 3.6456425e+05
+4.6566658e+05 5.9502843e+05 4.8572959e+05
+4.2606009e+05 5.0272856e+05 6.2391496e+05
+3.6502992e+05 3.8698150e+05 7.7428459e+05
+2.8324238e+05 2.5836094e+05 9.2579975e+05
+1.8500900e+05 1.3649521e+05 1.0582000e+06
+8.2582721e+04 4.3853652e+04 1.1438486e+06
+-5.9522720e+02 3.5915253e+03 1.1480894e+06
+-4.3406548e+03 1.4074357e+03 1.1520765e+06
+-6.7238451e+03 6.0138441e+02 1.1592492e+06
+-1.0951212e+04 2.4934965e+01 1.1757485e+06
+1.1119458e+03 6.7243123e+03 1.3403582e+06
+2.3799961e+05 1.6804387e+04 0.0000000e+00
+1.8694558e-01 7.7204028e-01 -1.5705289e-01
+3.7448122e+00 1.3647708e+01 -2.2312814e+00
+6.8014578e+01 2.2080534e+02 -2.4340301e+01
+1.2334460e+03 3.6991791e+03 -2.7251969e+02
+4.7415597e+04 1.0823280e+05 4.8619209e+03
+1.3671220e+05 3.3930173e+05 1.8682881e+04
+2.4363320e+05 6.0226188e+05 4.5569372e+04
+3.3693643e+05 8.1566755e+05 8.6061388e+04
+3.9914844e+05 9.3616615e+05 1.3995517e+05
+4.2824314e+05 9.6339570e+05 2.0777835e+05
+4.3056754e+05 9.2125133e+05 2.9034779e+05
+4.1224591e+05 8.3170583e+05 3.8803348e+05
+3.7536450e+05 7.0392390e+05 4.9991164e+05
+3.1966564e+05 5.4304724e+05 6.2209483e+05
+2.4617178e+05 3.6401224e+05 7.4522811e+05
+1.5938963e+05 1.9471752e+05 8.5192308e+05
+7.0614869e+04 6.5556489e+04 9.1958165e+05
+-3.4681581e+02 6.2461753e+03 9.2182907e+05
+-3.4507940e+03 2.5719430e+03 9.2434173e+05
+-5.3462854e+03 1.1679592e+03 9.2965373e+05
+-8.7050865e+03 2.0102905e+02 9.4261486e+05
+3.3512593e+02 1.1593897e+04 1.0737513e+06
+1.8889136e+05 2.6531887e+04 0.0000000e+00
+1.5392470e-01 1.4664034e+00 -5.1222213e-01
+3.0837965e+00 2.4563214e+01 -7.9368941e+00
+5.6312453e+01 3.6714859e+02 -9.3340548e+01
+1.0306116e+03 5.6977665e+03 -1.0219455e+03
+4.0092589e+04 1.4315276e+05 -1.4557589e+02
+1.1441703e+05 4.3301576e+05 8.6939673e+03
+2.0263935e+05 7.6313585e+05 2.7842250e+04
+2.7888513e+05 1.0321887e+06 5.6405111e+04
+3.2878314e+05 1.1849036e+06 9.3650388e+04
+3.5087010e+05 1.2200690e+06 1.4016523e+05
+3.5065558e+05 1.1678286e+06 1.9686797e+05
+3.3341617e+05 1.0557595e+06 2.6431203e+05
+3.0111452e+05 8.9489565e+05 3.4220112e+05
+2.5388906e+05 6.9154100e+05 4.2796932e+05
+1.9312595e+05 4.6506683e+05 5.1461267e+05
+1.2321936e+05 2.5197669e+05 5.8839547e+05
+5.3702396e+04 9.0100101e+04 6.3208254e+05
+-1.0534935e+02 1.0551971e+04 6.3120651e+05
+-2.3535517e+03 4.7538224e+03 6.3129940e+05
+-3.6421557e+03 2.3862026e+03 6.3366928e+05
+-5.9898574e+03 8.1092101e+02 6.4146134e+05
+-3.1765470e+03 1.9339496e+04 7.3181642e+05
+1.3045846e+05 3.8958779e+04 0.0000000e+00
+1.0750672e-01 2.8238636e+00 -1.2009131e+00
+2.1176680e+00 4.6336032e+01 -2.0101433e+01
+3.8606325e+01 6.4294785e+02 -2.4711896e+02
+7.1628943e+02 8.6703858e+03 -2.3652154e+03
+2.8723537e+04 1.7538623e+05 -4.8069896e+03
+8.1875140e+04 5.1213837e+05 1.2411290e+02
+1.4447192e+05 8.9794584e+05 1.1567180e+04
+1.9794235e+05 1.2137131e+06 2.7792202e+04
+2.3201553e+05 1.3937798e+06 4.7852323e+04
+2.4585195e+05 1.4357488e+06 7.2518618e+04
+2.4363588e+05 1.3752852e+06 1.0269942e+05
+2.2934947e+05 1.2445639e+06 1.3903993e+05
+2.0470552e+05 1.0556299e+06 1.8205813e+05
+1.7018165e+05 8.1570637e+05 2.3090795e+05
+1.2718945e+05 5.4836834e+05 2.8151060e+05
+7.9309292e+04 2.9876689e+05 3.2409374e+05
+3.3371381e+04 1.1310254e+05 3.4478573e+05
+1.1810042e+01 1.6424308e+04 3.4079628e+05
+-1.3057540e+03 7.4062280e+03 3.3908095e+05
+-2.0235581e+03 3.9098822e+03 3.3897938e+05
+-3.4115128e+03 1.8447175e+03 3.4184687e+05
+-5.4638109e+03 2.4055935e+04 3.9838091e+05
+7.7244228e+04 3.9573556e+04 0.0000000e+00
+5.5410983e-02 4.9575254e+00 -2.0089022e+00
+9.7877877e-01 8.4996448e+01 -3.8639538e+01
+1.6563658e+01 1.1963083e+03 -5.6144339e+02
+3.0265976e+02 1.4649364e+04 -6.0437055e+03
+1.3417848e+04 1.9327190e+05 -5.9624267e+03
+4.0488622e+04 5.6156792e+05 -3.6110781e+03
+7.2388758e+04 9.8373306e+05 9.2956949e+02
+9.9192378e+04 1.3291182e+06 7.0628461e+03
+1.1550320e+05 1.5262819e+06 1.3615035e+04
+1.2119151e+05 1.5716725e+06 2.1457292e+04
+1.1863739e+05 1.5058166e+06 3.0993281e+04
+1.1002179e+05 1.3638511e+06 4.2404976e+04
+9.6562489e+04 1.1569168e+06 5.6984963e+04
+7.8767617e+04 8.9234224e+05 7.5765380e+04
+5.7396179e+04 5.9647418e+05 9.8232250e+04
+3.4326266e+04 3.2088825e+05 1.2019250e+05
+1.3065226e+04 1.2242636e+05 1.3009254e+05
+-2.2700717e+01 2.1921582e+04 1.2525110e+05
+-5.2019047e+02 7.3252576e+03 1.2546766e+05
+-8.2278069e+02 3.3869283e+03 1.2614638e+05
+-1.4640600e+03 1.6029596e+03 1.2743888e+05
+-4.3510361e+03 1.6408774e+04 1.6619557e+05
+3.9204059e+04 2.6546672e+04 0.0000000e+00
+1.7178791e-02 6.3504264e+00 -1.2983543e+00
+1.3949159e-01 1.1478928e+02 -2.9823077e+01
+1.3515714e-01 1.6968580e+03 -5.1654230e+02
+-1.1833419e+01 2.1224220e+04 -6.9531061e+03
+-1.0422558e+02 1.9561496e+05 -8.1255047e+03
+-3.1580247e+02 5.6378569e+05 -7.0810913e+03
+-5.2857341e+02 9.8638423e+05 -4.0460476e+03
+-6.6574540e+02 1.3334233e+06 -8.9762210e+02
+-6.5130051e+02 1.5326633e+06 7.2556932e+02
+-4.4603411e+02 1.5781405e+06 2.0429501e+03
+-2.4496106e+02 1.5122626e+06 3.1000631e+03
+-2.0783252e+02 1.3705456e+06 3.5440778e+03
+-1.7898482e+02 1.1624372e+06 4.3471463e+03
+-3.0895117e+01 8.9538646e+05 6.3074708e+03
+1.1032534e+02 5.9635550e+05 9.8303492e+03
+1.1156545e+02 3.1750215e+05 1.5055234e+04
+2.0884125e+00 1.1709986e+05 2.1015554e+04
+-7.9107815e+01 2.1152408e+04 2.1803158e+04
+-1.1213352e+02 3.6418328e+03 2.5404537e+04
+-1.9070978e+02 8.2603684e+02 2.7802236e+04
+-3.9655647e+02 1.8329684e+02 2.9241907e+04
+-2.1831409e+03 5.6555795e+03 5.2322970e+04
+1.6648616e+04 1.3036092e+04 0.0000000e+00
+1.9911522e-03 5.2047660e+00 1.2192313e+00
+-1.3822578e-01 1.0021458e+02 1.6783309e+01
+-4.2920296e+00 1.5878208e+03 1.3697441e+02
+-7.3587797e+01 2.1197770e+04 2.8169263e+02
+-7.3841087e+02 1.9969325e+05 -2.8253730e+03
+-2.2238352e+03 5.6889379e+05 -5.1389125e+03
+-3.9818648e+03 9.8926793e+05 -3.1116839e+03
+-5.4154574e+03 1.3370526e+06 -5.1292742e+02
+-6.1117604e+03 1.5380595e+06 2.5350518e+02
+-5.9944385e+03 1.5826753e+06 1.2238491e+03
+-5.5296071e+03 1.5166826e+06 2.0487470e+03
+-5.0928992e+03 1.3759257e+06 1.8321512e+03
+-4.4543898e+03 1.1670531e+06 1.8137099e+03
+-3.4145056e+03 8.9798395e+05 2.6793089e+03
+-2.2301355e+03 5.9670415e+05 4.4063924e+03
+-1.2139436e+03 3.1610902e+05 6.6351708e+03
+-4.8594846e+02 1.1707188e+05 6.7660875e+03
+-1.0547734e+02 2.4215510e+04 3.6166827e+03
+-2.0874839e+01 3.5478185e+03 3.6216261e+03
+-1.7843649e+01 3.8062983e+02 3.9474995e+03
+-5.7251339e+01 -1.3139742e+01 4.0291016e+03
+-8.8361313e+02 1.4415332e+03 1.2073178e+04
+6.3778765e+03 3.9652165e+03 0.0000000e+00
+-3.2747205e-03 2.1513506e+00 3.1010178e+00
+-2.0302511e-01 4.6403871e+01 5.7655262e+01
+-5.3744097e+00 8.5880625e+02 7.9735132e+02
+-9.7942621e+01 1.4432870e+04 7.7114211e+03
+-1.1370817e+03 2.0651430e+05 2.4660728e+03
+-3.4010576e+03 5.7943061e+05 -3.5007381e+03
+-6.1162998e+03 9.9606482e+05 -2.3056109e+03
+-8.3612930e+03 1.3449625e+06 -1.6174383e+02
+-9.4461609e+03 1.5480526e+06 -2.7868194e+02
+-9.2484022e+03 1.5905456e+06 6.5126313e+02
+-8.5390368e+03 1.5241064e+06 1.6233816e+03
+-7.9085350e+03 1.3847956e+06 1.0160167e+03
+-6.9488716e+03 1.1747188e+06 6.8042190e+02
+-5.3271666e+03 9.0287912e+05 1.2672102e+03
+-3.4720027e+03 5.9896849e+05 2.2364313e+03
+-1.8928697e+03 3.1614842e+05 3.4391390e+03
+-7.7152583e+02 1.1754580e+05 3.0611519e+03
+-1.7690991e+02 2.6308528e+04 7.9718236e+02
+-1.5292613e+01 3.8479291e+03 3.8024759e+02
+5.6490644e+00 3.4716314e+02 3.4253134e+02
+5.6299662e-01 1.3390610e+01 2.6064528e+02
+-2.0032062e+02 2.3418271e+02 2.4976380e+03
+2.6949457e+03 3.9822555e+02 0.0000000e+00
+-2.9337390e-03 0.0000000e+00 2.1695624e+00
+-1.3417869e-01 0.0000000e+00 4.8939171e+01
+-3.9319405e+00 0.0000000e+00 9.1508269e+02
+-9.3344211e+01 0.0000000e+00 1.5501783e+04
+-1.8425654e+03 2.1709169e+05 8.1906978e+03
+-5.4033522e+03 5.9888059e+05 -1.7320263e+03
+-9.7167773e+03 1.0126128e+06 -1.6395873e+03
+-1.3432103e+04 1.3644752e+06 3.4051964e+02
+-1.5388328e+04 1.5714183e+06 -8.4916269e+02
+-1.5257650e+04 1.6103278e+06 -5.4638287e+01
+-1.4120047e+04 1.5422250e+06 1.4282598e+03
+-1.2971612e+04 1.4046174e+06 5.0846921e+02
+-1.1346054e+04 1.1920840e+06 -2.3502879e+02
+-8.7358483e+03 9.1495755e+05 2.5085514e+02
+-5.7567776e+03 6.0618839e+05 8.2840179e+02
+-3.2084956e+03 3.1897808e+05 1.5620760e+03
+-1.3785652e+03 1.1861747e+05 1.4103333e+03
+-3.7073729e+02 2.7526787e+04 1.8412367e+02
+-5.1638769e+01 3.9278127e+03 -7.9788867e+00
+4.6349371e-01 2.7316706e+02 1.3258421e+01
+4.0201757e-01 1.0451269e+01 9.8728127e+00
+-5.3202555e+00 0.0000000e+00 4.9339861e+02
+7.4844772e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.5420302e+02 2.0250659e+05 3.9124677e+04
+5.8640886e+03 6.9252763e+05 2.0803768e+04
+9.9922812e+03 1.1757378e+06 -7.1842072e+03
+7.9083132e+03 1.5485112e+06 6.2144044e+03
+3.2103829e+02 1.8047644e+06 1.0543654e+04
+-7.7355046e+03 1.8646829e+06 -2.3415088e+03
+-8.1822232e+03 1.7643892e+06 2.6074004e+03
+-2.1617138e+03 1.6036976e+06 1.2062567e+04
+8.2193590e+02 1.3735445e+06 1.0029971e+04
+-1.6003688e+03 1.0540172e+06 1.0172719e+04
+-4.7346244e+03 6.9534195e+05 1.8357904e+04
+-5.6750734e+03 3.7464225e+05 2.2438394e+04
+-4.2604741e+03 1.5619691e+05 1.4882169e+04
+-2.1836211e+03 4.8996395e+04 5.1947246e+03
+-8.7691188e+02 1.1400039e+04 1.3927332e+03
+-1.9625607e+02 2.4222525e+03 2.4529522e+02
+2.8422217e+00 4.9228606e+02 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.2302473e+04 0.0000000e+00 2.7247214e+04
+1.1667286e+05 0.0000000e+00 4.7086884e+04
+2.1144963e+05 0.0000000e+00 -6.4514492e+02
+2.8806930e+05 0.0000000e+00 -1.2705822e+04
+3.3607095e+05 0.0000000e+00 3.1773257e+04
+3.4003049e+05 0.0000000e+00 2.4915921e+04
+3.1197029e+05 0.0000000e+00 -4.8189453e+03
+2.8259287e+05 0.0000000e+00 1.1888439e+04
+2.4903072e+05 0.0000000e+00 3.1224853e+04
+1.9346240e+05 0.0000000e+00 2.9058668e+04
+1.2736418e+05 0.0000000e+00 3.3853118e+04
+7.3474368e+04 0.0000000e+00 3.7038215e+04
+3.7629404e+04 0.0000000e+00 2.5353971e+04
+1.5996242e+04 0.0000000e+00 1.1880618e+04
+5.9258176e+03 0.0000000e+00 3.6103857e+03
+2.4952457e+03 0.0000000e+00 4.4340529e+02
+7.5320594e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.2823279e+02 -9.4357214e+04 1.4317030e+04
+4.8573691e+02 -3.2980964e+05 3.1761997e+04
+4.8326390e+03 -5.5884594e+05 1.1220665e+04
+2.7438119e+03 -7.2602577e+05 -2.4682167e+03
+-7.8541432e+03 -8.3420394e+05 1.2473781e+04
+-1.7861358e+04 -8.5499991e+05 7.9805500e+03
+-2.0639500e+04 -8.1147198e+05 -4.1572194e+03
+-1.5246067e+04 -7.4220835e+05 6.6974137e+03
+-7.8350053e+03 -6.3233080e+05 1.6354540e+04
+-7.3316652e+03 -4.7667855e+05 1.6220826e+04
+-1.0891829e+04 -3.0544446e+05 2.1651604e+04
+-9.8040654e+03 -1.5584484e+05 2.3556244e+04
+-5.4102754e+03 -5.8720623e+04 1.5484843e+04
+-2.4871186e+03 -1.5443568e+04 7.3153668e+03
+-8.0845605e+02 -2.2511973e+03 2.5685065e+03
+1.8777100e+02 -6.7546870e+01 4.8436052e+02
+2.1588518e+02 2.1556578e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.0335509e+03 -1.0650012e+05 1.8831068e+04
+-2.0977560e+04 -2.9370242e+05 9.5657794e+03
+-3.6981848e+04 -4.9708750e+05 -5.2193225e+03
+-4.9351249e+04 -6.7285141e+05 -1.1363755e+03
+-5.5649503e+04 -7.8047379e+05 1.1007334e+03
+-5.4843878e+04 -8.0600657e+05 -7.8758859e+02
+-5.0163537e+04 -7.7391957e+05 3.6391701e+03
+-4.5484970e+04 -7.0017655e+05 4.9305445e+03
+-3.9741991e+04 -5.8783033e+05 9.9513015e+02
+-3.0558366e+04 -4.4754382e+05 8.1900004e+02
+-1.9550135e+04 -2.9468644e+05 4.8769473e+03
+-1.0262235e+04 -1.5346526e+05 7.0869189e+03
+-4.3087093e+03 -5.6102208e+04 4.5215845e+03
+-1.3081947e+03 -1.2884572e+04 1.0918801e+03
+-2.0983231e+02 -1.9288648e+03 1.0527888e+02
+1.6760216e+01 -1.8148080e+02 6.8506874e+00
+2.0386232e+01 -8.9863142e+00 0.0000000e+00
+0 0 0
+0 0 0
+2.2929215e-03 -1.1097764e+00 1.1045497e+00
+5.4038496e-02 -2.3949048e+01 2.4865381e+01
+1.1565382e+00 -4.4266590e+02 4.6244280e+02
+2.2865509e+01 -7.4029090e+03 7.7491428e+03
+3.3482154e+02 -1.0480592e+05 3.8775702e+03
+9.4748855e+02 -2.9488126e+05 -1.2944159e+03
+1.8699520e+03 -5.0878078e+05 -1.1878866e+03
+2.9439139e+03 -6.9048221e+05 6.6831560e+01
+3.9923302e+03 -7.9967504e+05 -1.1266522e+02
+4.6923788e+03 -8.2647390e+05 4.0452646e+02
+4.5700450e+03 -7.9299155e+05 7.8632387e+02
+3.7552442e+03 -7.1629248e+05 1.7539658e+02
+2.9614350e+03 -6.0200361e+05 4.1212474e+01
+2.4517643e+03 -4.5900384e+05 3.1366989e+02
+1.9596524e+03 -3.0244843e+05 3.5924483e+02
+1.3455412e+03 -1.5829229e+05 6.3231202e+02
+7.3205428e+02 -5.8228627e+04 6.4826285e+02
+2.9371504e+02 -1.3009810e+04 1.0919924e+02
+9.4698068e+01 -1.9760637e+03 1.0148996e+01
+2.6194218e+01 -2.1137191e+02 1.4324869e+01
+9.2393192e+00 -1.4610881e+01 1.1108580e+01
+2.1975959e+01 -4.4598307e+00 -1.1837642e+01
+2.2267240e+02 -5.0849527e+02 0.0000000e+00
+3.9795135e-03 -2.6923381e+00 1.5753075e+00
+7.6361511e-02 -5.1942898e+01 2.9289771e+01
+1.3591393e+00 -8.2417695e+02 4.0406727e+02
+2.2334483e+01 -1.1000732e+04 3.8816133e+03
+2.6459580e+02 -1.0339599e+05 1.0700133e+03
+8.1602026e+02 -2.9596362e+05 -2.0647088e+03
+1.5830550e+03 -5.1714867e+05 -1.3961758e+03
+2.3976174e+03 -7.0254099e+05 -9.6310773e+01
+3.1167751e+03 -8.1245859e+05 1.2429687e+02
+3.5324725e+03 -8.3975248e+05 6.2199225e+02
+3.3957708e+03 -8.0517461e+05 8.7024340e+02
+2.8375973e+03 -7.2668453e+05 5.1616286e+02
+2.2818002e+03 -6.1124160e+05 5.2348799e+02
+1.8550420e+03 -4.6650098e+05 8.3841707e+02
+1.4162369e+03 -3.0768906e+05 1.1908109e+03
+9.2694731e+02 -1.6166331e+05 1.7420152e+03
+4.7766824e+02 -5.9299080e+04 1.5632789e+03
+1.7291155e+02 -1.2232520e+04 4.3617275e+02
+5.2769899e+01 -1.8268879e+03 2.1893683e+02
+2.2759108e+01 -2.1970173e+02 2.1015683e+02
+2.7686765e+01 -8.3175175e+00 1.7672678e+02
+1.7261039e+01 -8.6279726e+01 4.0622213e+01
+2.4992889e+02 -2.8659605e+03 0.0000000e+00
+3.6759989e-03 -3.2910293e+00 5.9700636e-01
+5.1264905e-02 -5.9639805e+01 8.1044227e+00
+7.1578392e-01 -8.8399162e+02 6.2911279e+01
+1.0581321e+01 -1.1084595e+04 6.2605139e+01
+1.1506281e+02 -1.0251448e+05 -1.6723780e+03
+3.8169701e+02 -2.9735832e+05 -2.8832072e+03
+7.8258106e+02 -5.2302805e+05 -1.7682760e+03
+1.2330987e+03 -7.1067816e+05 -2.7966191e+02
+1.6516607e+03 -8.2081481e+05 3.1314368e+02
+1.9096151e+03 -8.4819506e+05 8.5167616e+02
+1.8453928e+03 -8.1283405e+05 1.1361110e+03
+1.5293705e+03 -7.3316319e+05 9.9249497e+02
+1.2204469e+03 -6.1700532e+05 1.0813789e+03
+1.0000205e+03 -4.7136851e+05 1.5343844e+03
+7.7768094e+02 -3.1150584e+05 2.3433470e+03
+5.1728777e+02 -1.6449959e+05 3.4484048e+03
+2.6564961e+02 -6.0081177e+04 3.4789040e+03
+9.2389054e+01 -1.0821854e+04 1.8703715e+03
+4.3274707e+01 -1.8852957e+03 1.8646297e+03
+5.4782353e+01 -4.5114171e+02 2.0234429e+03
+9.8648548e+01 -1.0330582e+02 1.9624993e+03
+-2.5227522e+02 -1.2009654e+03 2.4447404e+03
+-8.1949395e+02 -8.1123253e+03 0.0000000e+00
+6.5033386e-03 -2.5748127e+00 -7.0554110e-01
+9.0113398e-02 -4.4249370e+01 -1.6046598e+01
+1.1547408e+00 -6.2430691e+02 -2.7675089e+02
+1.5456764e+01 -7.6604660e+03 -3.7281701e+03
+1.9010818e+02 -1.0202350e+05 -4.5134864e+03
+6.3097527e+02 -2.9887905e+05 -3.9395336e+03
+1.2309625e+03 -5.2646142e+05 -2.2657002e+03
+1.8176206e+03 -7.1493552e+05 -4.9170558e+02
+2.2676100e+03 -8.2474303e+05 5.1759967e+02
+2.4951272e+03 -8.5188945e+05 1.2708273e+03
+2.4289534e+03 -8.1600666e+05 1.7695253e+03
+2.1372167e+03 -7.3574009e+05 2.0013819e+03
+1.7923005e+03 -6.1947212e+05 2.4968883e+03
+1.4536361e+03 -4.7389718e+05 3.5410263e+03
+1.0757998e+03 -3.1425296e+05 5.3226717e+03
+6.5693355e+02 -1.6767051e+05 7.9482177e+03
+2.8156220e+02 -6.3242653e+04 1.0830220e+04
+8.4651208e+01 -1.1345363e+04 1.1189969e+04
+9.5780985e+01 -3.7929708e+03 1.2889730e+04
+1.8099468e+02 -1.7380850e+03 1.3804969e+04
+3.0696513e+02 -7.3724194e+02 1.3735383e+04
+-1.4290535e+03 -5.2435665e+03 1.7023814e+04
+-2.7291517e+03 -1.6360735e+04 0.0000000e+00
+2.2046371e-02 -1.4782853e+00 -1.0631628e+00
+4.2027003e-01 -2.4378900e+01 -2.0375123e+01
+7.5516149e+00 -3.4090391e+02 -2.9476608e+02
+1.4061280e+02 -4.6529720e+03 -3.1402132e+03
+6.5156510e+03 -9.4792818e+04 -3.4686980e+03
+2.0135831e+04 -2.7976047e+05 -2.2344883e+03
+3.6509370e+04 -4.9324330e+05 4.2677692e+02
+5.0544586e+04 -6.6994454e+05 4.0835858e+03
+5.9333870e+04 -7.7253552e+05 8.0454119e+03
+6.2514002e+04 -7.9780726e+05 1.2640729e+04
+6.1098589e+04 -7.6385753e+05 1.8030397e+04
+5.6321845e+04 -6.8842062e+05 2.4410861e+04
+4.9032151e+04 -5.7995882e+05 3.2427899e+04
+3.9597209e+04 -4.4468416e+05 4.2385284e+04
+2.8457029e+04 -2.9669520e+05 5.3766669e+04
+1.6676742e+04 -1.6043009e+05 6.4175771e+04
+6.3742670e+03 -6.0048625e+04 6.7672701e+04
+2.8418847e+02 -8.7414278e+03 6.4761877e+04
+2.8004889e+02 -3.8876802e+03 6.4056347e+04
+5.0506056e+02 -2.0046712e+03 6.2995093e+04
+7.6962642e+02 -7.7922702e+02 6.0803426e+04
+-4.6972889e+03 -7.8172690e+03 6.3724539e+04
+-5.5588054e+03 -2.5429937e+04 0.0000000e+00
+4.8125028e-02 -7.8022028e-01 -6.3868334e-01
+9.7755382e-01 -1.3200222e+01 -1.0677248e+01
+1.8272879e+01 -2.0017074e+02 -1.3107697e+02
+3.4474900e+02 -3.1617863e+03 -1.2507222e+03
+1.4426460e+04 -7.9086526e+04 -2.6599376e+03
+4.1329923e+04 -2.4208195e+05 2.0676404e+02
+7.3427376e+04 -4.2901994e+05 7.0279441e+03
+1.0123865e+05 -5.8299112e+05 1.6778226e+04
+1.1930525e+05 -6.7188047e+05 2.8833459e+04
+1.2683065e+05 -6.9342400e+05 4.3471501e+04
+1.2564129e+05 -6.6341240e+05 6.1020957e+04
+1.1775744e+05 -5.9745491e+05 8.1647274e+04
+1.0427605e+05 -5.0320067e+05 1.0531859e+05
+8.5700189e+04 -3.8599613e+05 1.3111203e+05
+6.2992064e+04 -2.5771584e+05 1.5633005e+05
+3.8358353e+04 -1.3860797e+05 1.7545887e+05
+1.6115530e+04 -4.8992992e+04 1.8165908e+05
+6.3233037e+02 -5.7520471e+03 1.7804918e+05
+5.2686170e+02 -2.5404427e+03 1.7486933e+05
+9.5000837e+02 -1.2673690e+03 1.7115846e+05
+1.3602940e+03 -3.1810283e+02 1.6592553e+05
+-1.1187177e+04 -4.8925928e+03 1.6872438e+05
+-9.0370094e+03 -2.5653161e+04 0.0000000e+00
+7.3851339e-02 -4.1978170e-01 -2.8036522e-01
+1.5077323e+00 -7.5174604e+00 -4.3870621e+00
+2.8037449e+01 -1.2357398e+02 -5.2708818e+01
+5.2162856e+02 -2.1041737e+03 -6.0133838e+02
+2.1178048e+04 -6.0840907e+04 6.7584000e+01
+6.0242405e+04 -1.9328804e+05 5.4483012e+03
+1.0706234e+05 -3.4506231e+05 1.7067686e+04
+1.4802259e+05 -4.6946480e+05 3.4403910e+04
+1.7524018e+05 -5.4084336e+05 5.6909750e+04
+1.8744419e+05 -5.5777417e+05 8.4685820e+04
+1.8711315e+05 -5.3309798e+05 1.1791383e+05
+1.7694528e+05 -4.7951908e+05 1.5644890e+05
+1.5824123e+05 -4.0337812e+05 1.9949964e+05
+1.3150657e+05 -3.0898206e+05 2.4486806e+05
+9.7977571e+04 -2.0565248e+05 2.8795308e+05
+6.0763985e+04 -1.0919173e+05 3.2099221e+05
+2.6338276e+04 -3.6322026e+04 3.3568537e+05
+9.7419030e+02 -3.5090931e+03 3.3236288e+05
+7.4899773e+02 -1.4490234e+03 3.2816891e+05
+1.3782484e+03 -7.2793310e+02 3.2260907e+05
+1.8685557e+03 -1.8556629e+02 3.1461809e+05
+-2.0524474e+04 -1.6897556e+03 3.2876341e+05
+-9.8936348e+03 -1.5650597e+04 0.0000000e+00
+9.3226961e-02 -2.2977617e-01 -9.6286906e-02
+1.8951695e+00 -4.3111680e+00 -1.4529366e+00
+3.4962007e+01 -7.4200766e+01 -1.7773580e+01
+6.4384499e+02 -1.3003122e+03 -2.3203407e+02
+2.5950374e+04 -4.2635553e+04 3.0278344e+03
+7.4389898e+04 -1.3948894e+05 1.1551028e+04
+1.3282647e+05 -2.5073772e+05 2.8033174e+04
+1.8434104e+05 -3.4162246e+05 5.2786226e+04
+2.1907608e+05 -3.9351284e+05 8.5528067e+04
+2.3533517e+05 -4.0558189e+05 1.2624376e+05
+2.3606274e+05 -3.8726130e+05 1.7491189e+05
+2.2446863e+05 -3.4788498e+05 2.3105505e+05
+2.0199958e+05 -2.9219384e+05 2.9323569e+05
+1.6909867e+05 -2.2336761e+05 3.5818821e+05
+1.2708725e+05 -1.4808499e+05 4.1970525e+05
+7.9645420e+04 -7.7643462e+04 4.6790119e+05
+3.4976583e+04 -2.4625293e+04 4.9184275e+05
+1.2574626e+03 -2.0863798e+03 4.8881575e+05
+9.4901825e+02 -8.6301729e+02 4.8382994e+05
+1.7787795e+03 -4.7853344e+02 4.7645547e+05
+2.3148503e+03 -2.1395173e+02 4.6546389e+05
+-3.0654981e+04 -1.0669015e+03 4.9583155e+05
+-7.5751531e+03 -6.4950704e+03 0.0000000e+00
+1.0581094e-01 -1.1620183e-01 -1.1432925e-02
+2.1434110e+00 -2.2371016e+00 -7.0623232e-02
+3.9360137e+01 -3.9296588e+01 9.4450350e-01
+7.2135357e+02 -6.9558447e+02 3.4828099e+01
+2.9039064e+04 -2.5160274e+04 5.4125787e+03
+8.3906374e+04 -8.3940439e+04 1.6759114e+04
+1.5045972e+05 -1.5165342e+05 3.7276436e+04
+2.0945599e+05 -2.0687079e+05 6.7968444e+04
+2.4960418e+05 -2.3829551e+05 1.0883751e+05
+2.6885971e+05 -2.4550297e+05 1.5980922e+05
+2.7045766e+05 -2.3424174e+05 2.2068430e+05
+2.5796439e+05 -2.1020538e+05 2.9070690e+05
+2.3295291e+05 -1.7632790e+05 3.6794813e+05
+1.9583027e+05 -1.3456841e+05 4.4834858e+05
+1.4793490e+05 -8.8936528e+04 5.2450760e+05
+9.3263614e+04 -4.6211598e+04 5.8482112e+05
+4.1220599e+04 -1.4218352e+04 6.1577630e+05
+1.4981102e+03 -1.1430868e+03 6.1273967e+05
+1.1721571e+03 -5.1405872e+02 6.0687790e+05
+2.2067685e+03 -3.3085226e+02 5.9779961e+05
+2.8405086e+03 -2.1640297e+02 5.8401050e+05
+-3.9103947e+04 -4.3165127e+02 6.2358861e+05
+-6.7821178e+03 -1.8635521e+03 0.0000000e+00
+1.1278966e-01 -3.5601693e-02 2.6247217e-02
+2.2807914e+00 -6.9251437e-01 5.8850473e-01
+4.1799598e+01 -1.2253330e+01 1.1071191e+01
+7.6462280e+02 -2.1758417e+02 1.9958047e+02
+3.0768114e+04 -8.3096673e+03 6.8959315e+03
+8.9332720e+04 -2.7991525e+04 2.0108525e+04
+1.6061458e+05 -5.0705697e+04 4.3199823e+04
+2.2401142e+05 -6.9214114e+04 7.7589007e+04
+2.6736692e+05 -7.9731104e+04 1.2347180e+05
+2.8840400e+05 -8.2126222e+04 1.8073844e+05
+2.9051068e+05 -7.8329019e+04 2.4906264e+05
+2.7746835e+05 -7.0251915e+04 3.2749962e+05
+2.5095098e+05 -5.8888423e+04 4.1381642e+05
+2.1136976e+05 -4.4901173e+04 5.0348691e+05
+1.6007254e+05 -2.9626614e+04 5.8842383e+05
+1.0121028e+05 -1.5324695e+04 6.5597054e+05
+4.4874970e+04 -4.6506682e+03 6.9088149e+05
+1.6813175e+03 -3.7477035e+02 6.8766983e+05
+1.3831841e+03 -1.8632590e+02 6.8108152e+05
+2.5918285e+03 -1.3833223e+02 6.7075114e+05
+3.3621000e+03 -1.1211130e+02 6.5493701e+05
+-4.4350067e+04 9.0248052e+01 6.9775657e+05
+-9.0328918e+03 -8.8345937e+01 0.0000000e+00
+1.1502638e-01 3.5601693e-02 3.7180388e-02
+2.3248659e+00 6.9251437e-01 7.8903177e-01
+4.2584469e+01 1.2253330e+01 1.4335166e+01
+7.7859991e+02 2.1758417e+02 2.5487636e+02
+3.1324100e+04 8.3096673e+03 7.3926305e+03
+9.1088997e+04 2.7991525e+04 2.1246799e+04
+1.6391561e+05 5.0705697e+04 4.5209199e+04
+2.2875651e+05 6.9214114e+04 8.0833456e+04
+2.7316645e+05 7.9731104e+04 1.2838129e+05
+2.9478633e+05 8.2126222e+04 1.8772954e+05
+2.9705136e+05 7.8329019e+04 2.5850469e+05
+2.8381569e+05 7.0251915e+04 3.3969453e+05
+2.5679338e+05 5.8888423e+04 4.2896406e+05
+2.1640427e+05 4.4901173e+04 5.2163724e+05
+1.6400156e+05 2.9626614e+04 6.0941031e+05
+1.0378208e+05 1.5324695e+04 6.7928079e+05
+4.6059846e+04 4.6506682e+03 7.1540500e+05
+1.7525487e+03 3.7477035e+02 7.1208404e+05
+1.4732844e+03 1.8632590e+02 7.0518707e+05
+2.7524235e+03 1.3833222e+02 6.9434877e+05
+3.5890609e+03 1.1212130e+02 6.7772389e+05
+-4.6075202e+04 -9.0049157e+01 7.2151738e+05
+-1.0577685e+04 8.8241352e+01 0.0000000e+00
+1.1278966e-01 1.1620183e-01 2.6247217e-02
+2.2807914e+00 2.2371016e+00 5.8850473e-01
+4.1799598e+01 3.9296588e+01 1.1071191e+01
+7.6462280e+02 6.9558447e+02 1.9958047e+02
+3.0768114e+04 2.5160274e+04 6.8959315e+03
+8.9332720e+04 8.3940439e+04 2.0108525e+04
+1.6061458e+05 1.5165342e+05 4.3199823e+04
+2.2401142e+05 2.0687079e+05 7.7589007e+04
+2.6736692e+05 2.3829551e+05 1.2347180e+05
+2.8840400e+05 2.4550297e+05 1.8073844e+05
+2.9051068e+05 2.3424174e+05 2.4906264e+05
+2.7746835e+05 2.1020538e+05 3.2749962e+05
+2.5095098e+05 1.7632790e+05 4.1381642e+05
+2.1136976e+05 1.3456841e+05 5.0348691e+05
+1.6007254e+05 8.8936528e+04 5.8842383e+05
+1.0121028e+05 4.6211598e+04 6.5597054e+05
+4.4874970e+04 1.4218352e+04 6.9088149e+05
+1.6813175e+03 1.1430868e+03 6.8766983e+05
+1.3831841e+03 5.1405872e+02 6.8108152e+05
+2.5918285e+03 3.3085227e+02 6.7075114e+05
+3.3621005e+03 2.1640308e+02 6.5493688e+05
+-4.4349429e+04 4.3162979e+02 6.9775860e+05
+-9.0329331e+03 1.8635568e+03 0.0000000e+00
+1.0581094e-01 2.2977617e-01 -1.1432925e-02
+2.1434110e+00 4.3111680e+00 -7.0623232e-02
+3.9360137e+01 7.4200766e+01 9.4450350e-01
+7.2135357e+02 1.3003122e+03 3.4828099e+01
+2.9039064e+04 4.2635553e+04 5.4125787e+03
+8.3906374e+04 1.3948894e+05 1.6759114e+04
+1.5045972e+05 2.5073772e+05 3.7276436e+04
+2.0945599e+05 3.4162246e+05 6.7968444e+04
+2.4960418e+05 3.9351284e+05 1.0883751e+05
+2.6885971e+05 4.0558189e+05 1.5980922e+05
+2.7045766e+05 3.8726130e+05 2.2068430e+05
+2.5796439e+05 3.4788498e+05 2.9070690e+05
+2.3295291e+05 2.9219384e+05 3.6794813e+05
+1.9583027e+05 2.2336761e+05 4.4834858e+05
+1.4793490e+05 1.4808499e+05 5.2450760e+05
+9.3263614e+04 7.7643462e+04 5.8482112e+05
+4.1220599e+04 2.4625293e+04 6.1577630e+05
+1.4981102e+03 2.0863798e+03 6.1273967e+05
+1.1721571e+03 8.6301729e+02 6.0687790e+05
+2.2067684e+03 4.7853339e+02 5.9779961e+05
+2.8405056e+03 2.1394350e+02 5.8401035e+05
+-3.9103380e+04 1.0672128e+03 6.2359009e+05
+-6.7821807e+03 6.4950824e+03 0.0000000e+00
+9.3226961e-02 4.1978170e-01 -9.6286906e-02
+1.8951695e+00 7.5174604e+00 -1.4529366e+00
+3.4962007e+01 1.2357398e+02 -1.7773580e+01
+6.4384499e+02 2.1041737e+03 -2.3203407e+02
+2.5950374e+04 6.0840907e+04 3.0278344e+03
+7.4389898e+04 1.9328804e+05 1.1551028e+04
+1.3282647e+05 3.4506231e+05 2.8033174e+04
+1.8434104e+05 4.6946480e+05 5.2786226e+04
+2.1907608e+05 5.4084336e+05 8.5528067e+04
+2.3533517e+05 5.5777417e+05 1.2624376e+05
+2.3606274e+05 5.3309798e+05 1.7491189e+05
+2.2446863e+05 4.7951908e+05 2.3105505e+05
+2.0199958e+05 4.0337812e+05 2.9323569e+05
+1.6909867e+05 3.0898206e+05 3.5818821e+05
+1.2708725e+05 2.0565248e+05 4.1970525e+05
+7.9645420e+04 1.0919173e+05 4.6790119e+05
+3.4976583e+04 3.6322026e+04 4.9184275e+05
+1.2574626e+03 3.5090931e+03 4.8881575e+05
+9.4901825e+02 1.4490234e+03 4.8382994e+05
+1.7787794e+03 7.2793288e+02 4.7645547e+05
+2.3148509e+03 1.8556492e+02 4.6546391e+05
+-3.0655013e+04 1.6897493e+03 4.9583161e+05
+-7.5751547e+03 1.5650604e+04 0.0000000e+00
+7.3851339e-02 7.8022028e-01 -2.8036522e-01
+1.5077323e+00 1.3200222e+01 -4.3870621e+00
+2.8037449e+01 2.0017074e+02 -5.2708818e+01
+5.2162856e+02 3.1617863e+03 -6.0133838e+02
+2.1178048e+04 7.9086526e+04 6.7584000e+01
+6.0242405e+04 2.4208195e+05 5.4483012e+03
+1.0706234e+05 4.2901994e+05 1.7067686e+04
+1.4802259e+05 5.8299112e+05 3.4403910e+04
+1.7524018e+05 6.7188047e+05 5.6909750e+04
+1.8744419e+05 6.9342400e+05 8.4685820e+04
+1.8711315e+05 6.6341240e+05 1.1791383e+05
+1.7694528e+05 5.9745491e+05 1.5644890e+05
+1.5824123e+05 5.0320067e+05 1.9949964e+05
+1.3150657e+05 3.8599613e+05 2.4486806e+05
+9.7977571e+04 2.5771584e+05 2.8795308e+05
+6.0763985e+04 1.3860797e+05 3.2099221e+05
+2.6338276e+04 4.8992992e+04 3.3568537e+05
+9.7419030e+02 5.7520471e+03 3.3236288e+05
+7.4899772e+02 2.5404427e+03 3.2816891e+05
+1.3782484e+03 1.2673687e+03 3.2260907e+05
+1.8685582e+03 3.1810384e+02 3.1461815e+05
+-2.0524447e+04 4.8923536e+03 3.2876344e+05
+-9.8935909e+03 2.5653134e+04 0.0000000e+00
+4.8125028e-02 1.4782853e+00 -6.3868334e-01
+9.7755382e-01 2.4378900e+01 -1.0677248e+01
+1.8272879e+01 3.4090391e+02 -1.3107697e+02
+3.4474900e+02 4.6529720e+03 -1.2507222e+03
+1.4426460e+04 9.4792818e+04 -2.6599376e+03
+4.1329923e+04 2.7976047e+05 2.0676404e+02
+7.3427376e+04 4.9324330e+05 7.0279441e+03
+1.0123865e+05 6.6994454e+05 1.6778226e+04
+1.1930525e+05 7.7253552e+05 2.8833459e+04
+1.2683065e+05 7.9780726e+05 4.3471501e+04
+1.2564129e+05 7.6385753e+05 6.1020957e+04
+1.1775744e+05 6.8842062e+05 8.1647274e+04
+1.0427605e+05 5.7995882e+05 1.0531859e+05
+8.5700189e+04 4.4468416e+05 1.3111203e+05
+6.2992064e+04 2.9669520e+05 1.5633005e+05
+3.8358353e+04 1.6043009e+05 1.7545887e+05
+1.6115530e+04 6.0048625e+04 1.8165908e+05
+6.3233037e+02 8.7414278e+03 1.7804918e+05
+5.2686169e+02 3.8876802e+03 1.7486933e+05
+9.5000761e+02 2.0046719e+03 1.7115846e+05
+1.3602718e+03 7.7924944e+02 1.6592553e+05
+-1.1187763e+04 7.8178805e+03 1.6872396e+05
+-9.0369039e+03 2.5430002e+04 0.0000000e+00
+2.2046371e-02 2.5748127e+00 -1.0631628e+00
+4.2027003e-01 4.4249370e+01 -2.0375123e+01
+7.5516149e+00 6.2430691e+02 -2.9476608e+02
+1.4061280e+02 7.6604660e+03 -3.1402132e+03
+6.5156510e+03 1.0202350e+05 -3.4686980e+03
+2.0135831e+04 2.9887905e+05 -2.2344883e+03
+3.6509370e+04 5.2646142e+05 4.2677692e+02
+5.0544586e+04 7.1493552e+05 4.0835858e+03
+5.9333870e+04 8.2474303e+05 8.0454119e+03
+6.2514002e+04 8.5188945e+05 1.2640729e+04
+6.1098589e+04 8.1600666e+05 1.8030397e+04
+5.6321845e+04 7.3574009e+05 2.4410861e+04
+4.9032151e+04 6.1947212e+05 3.2427899e+04
+3.9597209e+04 4.7389718e+05 4.2385284e+04
+2.8457029e+04 3.1425296e+05 5.3766669e+04
+1.6676742e+04 1.6767051e+05 6.4175771e+04
+6.3742670e+03 6.3242653e+04 6.7672701e+04
+2.8418847e+02 1.1345363e+04 6.4761877e+04
+2.8004889e+02 3.7929708e+03 6.4056347e+04
+5.0505956e+02 1.7380864e+03 6.2995093e+04
+7.6960647e+02 7.3728418e+02 6.0803390e+04
+-4.6980546e+03 5.2448964e+03 6.3723392e+04
+-5.5588443e+03 1.6360888e+04 0.0000000e+00
+6.5033386e-03 3.2910293e+00 -7.0554110e-01
+9.0113398e-02 5.9639805e+01 -1.6046598e+01
+1.1547408e+00 8.8399162e+02 -2.7675089e+02
+1.5456764e+01 1.1084595e+04 -3.7281701e+03
+1.9010818e+02 1.0251448e+05 -4.5134864e+03
+6.3097527e+02 2.9735832e+05 -3.9395336e+03
+1.2309625e+03 5.2302805e+05 -2.2657002e+03
+1.8176206e+03 7.1067816e+05 -4.9170558e+02
+2.2676100e+03 8.2081481e+05 5.1759967e+02
+2.4951272e+03 8.4819506e+05 1.2708273e+03
+2.4289534e+03 8.1283405e+05 1.7695253e+03
+2.1372167e+03 7.3316319e+05 2.0013819e+03
+1.7923005e+03 6.1700532e+05 2.4968883e+03
+1.4536361e+03 4.7136851e+05 3.5410263e+03
+1.0757998e+03 3.1150584e+05 5.3226717e+03
+6.5693355e+02 1.6449959e+05 7.9482177e+03
+2.8156220e+02 6.0081177e+04 1.0830220e+04
+8.4651208e+01 1.0821854e+04 1.1189969e+04
+9.5780995e+01 1.8852957e+03 1.2889730e+04
+1.8099584e+02 4.5114216e+02 1.3804969e+04
+3.0701243e+02 1.0331881e+02 1.3735365e+04
+-1.4272691e+03 1.2012735e+03 1.7023054e+04
+-2.7291829e+03 8.1123966e+03 0.0000000e+00
+3.6759989e-03 2.6923381e+00 5.9700636e-01
+5.1264905e-02 5.1942898e+01 8.1044227e+00
+7.1578392e-01 8.2417695e+02 6.2911279e+01
+1.0581322e+01 1.1000732e+04 6.2605139e+01
+1.1506281e+02 1.0339599e+05 -1.6723780e+03
+3.8169703e+02 2.9596362e+05 -2.8832072e+03
+7.8258111e+02 5.1714867e+05 -1.7682760e+03
+1.2330986e+03 7.0254099e+05 -2.7966179e+02
+1.6516606e+03 8.1245859e+05 3.1314354e+02
+1.9096150e+03 8.3975248e+05 8.5167616e+02
+1.8453929e+03 8.0517461e+05 1.1361110e+03
+1.5293705e+03 7.2668453e+05 9.9249491e+02
+1.2204469e+03 6.1124160e+05 1.0813788e+03
+1.0000205e+03 4.6650098e+05 1.5343844e+03
+7.7768097e+02 3.0768906e+05 2.3433469e+03
+5.1728785e+02 1.6166331e+05 3.4484049e+03
+2.6564956e+02 5.9299080e+04 3.4789041e+03
+9.2388957e+01 1.2232520e+04 1.8703715e+03
+4.3274711e+01 1.8268880e+03 1.8646298e+03
+5.4784370e+01 2.1970154e+02 2.0234424e+03
+9.8728487e+01 8.3035901e+00 1.9624764e+03
+-2.4943938e+02 8.5621154e+01 2.4439563e+03
+-8.1947175e+02 2.8659442e+03 0.0000000e+00
+3.9795134e-03 1.1097764e+00 1.5753075e+00
+7.6361510e-02 2.3949048e+01 2.9289771e+01
+1.3591393e+00 4.4266590e+02 4.0406727e+02
+2.2334484e+01 7.4029088e+03 3.8816130e+03
+2.6459582e+02 1.0480592e+05 1.0700124e+03
+8.1601893e+02 2.9488126e+05 -2.0647105e+03
+1.5830533e+03 5.0878079e+05 -1.3961780e+03
+2.3976164e+03 6.9048221e+05 -9.6310970e+01
+3.1167750e+03 7.9967504e+05 1.2429896e+02
+3.5324740e+03 8.2647390e+05 6.2199488e+02
+3.3957724e+03 7.9299155e+05 8.7024419e+02
+2.8375973e+03 7.1629249e+05 5.1616098e+02
+2.2817996e+03 6.0200361e+05 5.2348721e+02
+1.8550420e+03 4.5900384e+05 8.3841700e+02
+1.4162376e+03 3.0244843e+05 1.1908097e+03
+9.2695039e+02 1.5829230e+05 1.7420192e+03
+4.7766635e+02 5.8228626e+04 1.5632814e+03
+1.7290787e+02 1.3009808e+04 4.3617565e+02
+5.2767488e+01 1.9760636e+03 2.1893904e+02
+2.2758970e+01 2.1136522e+02 2.1015689e+02
+2.7728774e+01 1.4606101e+01 1.7668874e+02
+1.8616405e+01 4.2362876e+00 3.9684532e+01
+2.4985820e+02 5.0856636e+02 0.0000000e+00
+2.2929213e-03 0.0000000e+00 1.1045497e+00
+5.4038486e-02 0.0000000e+00 2.4865381e+01
+1.1565377e+00 0.0000000e+00 4.6244271e+02
+2.2865540e+01 0.0000000e+00 7.7491418e+03
+3.3480116e+02 1.0650013e+05 3.8775565e+03
+9.4744193e+02 2.9370249e+05 -1.2944626e+03
+1.8699009e+03 4.9708761e+05 -1.1879596e+03
+2.9438864e+03 6.7285146e+05 6.6804597e+01
+3.9923383e+03 7.8047376e+05 -1.1257732e+02
+4.6924241e+03 8.0600661e+05 4.0464101e+02
+4.5700709e+03 7.7391973e+05 7.8634429e+02
+3.7552204e+03 7.0017666e+05 1.7533340e+02
+2.9614054e+03 5.8783031e+05 4.1186510e+01
+2.4517606e+03 4.4754376e+05 3.1365631e+02
+1.9596723e+03 2.9468644e+05 3.5919791e+02
+1.3455375e+03 1.5346517e+05 6.3230131e+02
+7.3198033e+02 5.6102052e+04 6.4832964e+02
+2.9359616e+02 1.2884512e+04 1.0929179e+02
+9.4613465e+01 1.9288929e+03 1.0210146e+01
+2.6175645e+01 1.8149988e+02 1.4363302e+01
+9.2404989e+00 8.9998577e+00 1.1121382e+01
+2.1889485e+01 0.0000000e+00 -1.1852196e+01
+2.2262114e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.0342369e+03 9.4357830e+04 1.8830745e+04
+-2.0979029e+04 3.2981191e+05 9.5644479e+03
+-3.6983400e+04 5.5884927e+05 -5.2215363e+03
+-4.9352032e+04 7.2602769e+05 -1.1373877e+03
+-5.5649376e+04 8.3420337e+05 1.1034117e+03
+-5.4842704e+04 8.5500114e+05 -7.8393033e+02
+-5.0163180e+04 8.1147690e+05 3.6398585e+03
+-4.5486084e+04 7.4221227e+05 4.9286236e+03
+-3.9743291e+04 6.3233011e+05 9.9405631e+02
+-3.0558491e+04 4.7667746e+05 8.1846889e+02
+-1.9549305e+04 3.0544420e+05 4.8753831e+03
+-1.0262258e+04 1.5584123e+05 7.0865400e+03
+-4.3109354e+03 5.8715580e+04 4.5236421e+03
+-1.3119491e+03 1.5441855e+04 1.0946272e+03
+-2.1249999e+02 2.2521271e+03 1.0698288e+02
+1.6251739e+01 6.8361743e+01 7.6131729e+00
+2.0328353e+01 -2.1595749e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.2836539e+02 0.0000000e+00 1.4316998e+04
+4.8571622e+02 0.0000000e+00 3.1761811e+04
+4.8330159e+03 0.0000000e+00 1.1220702e+04
+2.7439584e+03 0.0000000e+00 -2.4684760e+03
+-7.8540250e+03 0.0000000e+00 1.2473867e+04
+-1.7861493e+04 0.0000000e+00 7.9809396e+03
+-2.0639674e+04 0.0000000e+00 -4.1569445e+03
+-1.5246098e+04 0.0000000e+00 6.6974775e+03
+-7.8351380e+03 0.0000000e+00 1.6354531e+04
+-7.3315946e+03 0.0000000e+00 1.6220732e+04
+-1.0891952e+04 0.0000000e+00 2.1651626e+04
+-9.8040291e+03 0.0000000e+00 2.3556263e+04
+-5.4101006e+03 0.0000000e+00 1.5484680e+04
+-2.4870836e+03 0.0000000e+00 7.3153096e+03
+-8.0842772e+02 0.0000000e+00 2.5685030e+03
+1.8774511e+02 0.0000000e+00 4.8435629e+02
+2.1580106e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.1763695e+03 -4.0358483e+04 5.9196516e+03
+-2.3566221e+04 -1.4037147e+05 1.2601033e+04
+-4.3164509e+04 -2.3571514e+05 2.8261353e+03
+-5.5729675e+04 -3.0820974e+05 -4.7312471e+03
+-6.1163020e+04 -3.6291375e+05 4.7474158e+02
+-6.0708571e+04 -3.8161614e+05 1.4577812e+03
+-5.5599619e+04 -3.6680464e+05 2.1532483e+02
+-4.9605339e+04 -3.3241270e+05 2.9038640e+03
+-4.3009828e+04 -2.7725647e+05 1.8981164e+03
+-3.2935207e+04 -2.0731955e+05 1.6024834e+02
+-2.0504288e+04 -1.3473612e+05 3.6500893e+03
+-1.0325780e+04 -6.9846424e+04 5.5423566e+03
+-4.4701252e+03 -2.6382471e+04 3.0468701e+03
+-1.5047084e+03 -7.1882173e+03 8.5954401e+02
+-1.8484475e+02 -1.3104706e+03 1.6831288e+02
+1.4640526e+02 -8.0732172e+01 3.3797348e+01
+8.5932809e+01 2.2467459e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.2816856e+03 -5.9417691e+04 9.7439716e+03
+1.0190713e+04 -1.6546314e+05 3.6673648e+03
+1.8274003e+04 -2.8324969e+05 -4.0539386e+03
+2.6523339e+04 -3.8748212e+05 -6.5559516e+02
+3.3053885e+04 -4.5413952e+05 1.8667938e+03
+3.6204058e+04 -4.7272418e+05 1.9268995e+03
+3.4980963e+04 -4.5369321e+05 3.6709708e+03
+2.9820062e+04 -4.0711564e+05 3.0688808e+03
+2.3663087e+04 -3.3910516e+05 1.5124971e+03
+1.8810316e+04 -2.5747074e+05 2.2952287e+03
+1.4351688e+04 -1.7009954e+05 3.7568243e+03
+9.1639587e+03 -8.9793731e+04 4.2779361e+03
+4.5506368e+03 -3.3997905e+04 3.0340244e+03
+1.9569681e+03 -8.4581943e+03 1.0386628e+03
+8.5162399e+02 -1.5167904e+03 1.8352439e+02
+3.2542086e+02 -2.1644530e+02 1.0576256e+01
+7.8292088e+01 -2.4861239e+01 0.0000000e+00
+0 0 0
+0 0 0
+2.0332846e-03 -5.8124473e-01 5.8150437e-01
+5.0692916e-02 -1.2641156e+01 1.3226006e+01
+1.1129921e+00 -2.3601492e+02 2.4928447e+02
+2.3296381e+01 -3.9963751e+03 4.2452287e+03
+4.7866512e+02 -5.7473401e+04 2.1570953e+03
+1.3932420e+03 -1.6312594e+05 -6.2586616e+02
+2.4207589e+03 -2.8392279e+05 -5.0355888e+02
+3.1830078e+03 -3.8852883e+05 3.0405709e+02
+3.4799716e+03 -4.5355728e+05 2.3417077e+02
+3.3550032e+03 -4.7142505e+05 2.7242182e+02
+2.9933725e+03 -4.5211252e+05 2.6840487e+02
+2.6125868e+03 -4.0580196e+05 9.7384416e+01
+2.2462705e+03 -3.3860346e+05 3.1084273e+02
+1.7228439e+03 -2.5698112e+05 5.5014381e+02
+1.0457422e+03 -1.6917268e+05 5.3719413e+02
+4.5380210e+02 -8.9003314e+04 6.3851837e+02
+1.0615039e+02 -3.3299923e+04 5.6644013e+02
+-1.3093554e+01 -7.7432794e+03 1.5833333e+02
+-1.9962492e+01 -1.2827123e+03 3.8916158e+01
+-6.2784672e+00 -1.6788699e+02 2.2830622e+01
+2.1111164e+00 -2.2943652e+01 2.8057289e+01
+9.0345030e+01 -1.7023564e+01 -2.3290857e+01
+1.1596661e+02 -3.2896591e+01 0.0000000e+00
+3.7142326e-03 -1.4057357e+00 8.2475624e-01
+8.0439482e-02 -2.7296911e+01 1.5476434e+01
+1.4689106e+00 -4.3666103e+02 2.1601278e+02
+2.2775836e+01 -5.8848540e+03 2.1040503e+03
+2.4543630e+02 -5.5944194e+04 5.9400300e+02
+7.1714682e+02 -1.6136974e+05 -1.0633215e+03
+1.2521515e+03 -2.8400041e+05 -6.5480232e+02
+1.6229548e+03 -3.8852490e+05 1.1593090e+02
+1.7259134e+03 -4.5228794e+05 2.3745651e+02
+1.6094109e+03 -4.6961172e+05 3.4718118e+02
+1.4021731e+03 -4.5013316e+05 3.6141954e+02
+1.2323516e+03 -4.0411578e+05 2.8048372e+02
+1.0825904e+03 -3.3757018e+05 4.4641849e+02
+8.1963948e+02 -2.5615722e+05 6.5791870e+02
+4.5877248e+02 -1.6838858e+05 8.3127702e+02
+1.5992565e+02 -8.8510944e+04 1.1059288e+03
+5.1595765e+00 -3.2679204e+04 9.5771912e+02
+-3.1052494e+01 -6.8688050e+03 2.8720878e+02
+-2.1595990e+01 -1.0728294e+03 1.5169180e+02
+-1.2273562e+01 -1.5213054e+02 1.7097144e+02
+-6.4546404e+00 -4.0415558e+01 2.2258467e+02
+3.3787642e+02 -1.6060196e+02 4.8134545e+01
+1.2547552e+02 -1.8755544e+02 0.0000000e+00
+3.3532375e-03 -1.7140534e+00 3.0864049e-01
+6.4601068e-02 -3.1233039e+01 4.2314319e+00
+1.0716301e+00 -4.6609969e+02 3.3314243e+01
+1.5112470e+01 -5.8914703e+03 3.5399388e+01
+1.4368490e+02 -5.5028315e+04 -9.0910148e+02
+4.3473323e+02 -1.6080024e+05 -1.5316357e+03
+7.7493605e+02 -2.8463286e+05 -8.9154046e+02
+1.0176806e+03 -3.8916001e+05 -4.1010520e+01
+1.0941443e+03 -4.5205822e+05 2.8678397e+02
+1.0310238e+03 -4.6893109e+05 4.8474305e+02
+9.0479490e+02 -4.4927074e+05 5.6292173e+02
+7.9479848e+02 -4.0336631e+05 5.4802721e+02
+6.9514685e+02 -3.3718891e+05 6.9205542e+02
+5.2800959e+02 -2.5595091e+05 9.5776094e+02
+3.0169065e+02 -1.6832946e+05 1.3746339e+03
+1.1136477e+02 -8.8676429e+04 1.9460417e+03
+9.2934337e+00 -3.2403042e+04 1.9262354e+03
+-1.5877834e+01 -5.8859701e+03 1.0516674e+03
+-1.6223726e+01 -1.0607977e+03 1.0991342e+03
+-2.2197696e+01 -2.9964560e+02 1.3236293e+03
+-2.0741788e+01 -1.6220939e+02 1.5648137e+03
+8.7454042e+02 -1.0710336e+03 1.3484311e+03
+-2.9006237e+02 -1.0625053e+03 0.0000000e+00
+3.6871013e-03 -1.3389849e+00 -3.7225231e-01
+6.3447500e-02 -2.3114640e+01 -8.4639853e+00
+9.6898993e-01 -3.2783134e+02 -1.4654659e+02
+1.3521284e+01 -4.0449749e+03 -1.9911065e+03
+1.5188610e+02 -5.4528616e+04 -2.4525833e+03
+4.8781080e+02 -1.6098589e+05 -2.1237681e+03
+9.0127370e+02 -2.8523793e+05 -1.1890064e+03
+1.2346858e+03 -3.8957239e+05 -1.9369534e+02
+1.4024293e+03 -4.5175524e+05 3.6850343e+02
+1.4104631e+03 -4.6821003e+05 7.3210972e+02
+1.3154387e+03 -4.4838803e+05 9.6291565e+02
+1.1821739e+03 -4.0257687e+05 1.1285166e+03
+1.0223776e+03 -3.3674556e+05 1.4550822e+03
+7.9813255e+02 -2.5586418e+05 2.0238596e+03
+5.1948227e+02 -1.6869495e+05 2.9456698e+03
+2.5539823e+02 -8.9631552e+04 4.3023278e+03
+6.8379029e+01 -3.3690029e+04 5.8024982e+03
+-4.7084832e+00 -6.0990473e+03 6.1049351e+03
+-1.5967799e+01 -2.1116744e+03 7.2675606e+03
+-3.1487747e+01 -1.0663443e+03 8.2467418e+03
+-1.0376909e+01 -6.3227112e+02 9.0341454e+03
+2.1097536e+03 -3.5306287e+03 7.9549303e+03
+-1.6236407e+03 -3.3252434e+03 0.0000000e+00
+1.0183360e-02 -7.7140196e-01 -5.5571989e-01
+2.0091828e-01 -1.2794088e+01 -1.0656920e+01
+3.6640879e+00 -1.8028388e+02 -1.5431685e+02
+6.7657534e+01 -2.4850370e+03 -1.6412995e+03
+3.2423875e+03 -5.0989554e+04 -1.9070986e+03
+1.0171560e+04 -1.5170106e+05 -1.2276617e+03
+1.8583545e+04 -2.6884992e+05 3.1015402e+02
+2.5825879e+04 -3.6697803e+05 2.4344985e+03
+3.0345381e+04 -4.2506340e+05 4.7311478e+03
+3.1925052e+04 -4.4021740e+05 7.3274672e+03
+3.1123047e+04 -4.2141320e+05 1.0328181e+04
+2.8610725e+04 -3.7840748e+05 1.3869912e+04
+2.4780228e+04 -3.1684804e+05 1.8224316e+04
+1.9788592e+04 -2.4128087e+05 2.3449619e+04
+1.3942922e+04 -1.5997157e+05 2.9240342e+04
+7.9153260e+03 -8.6041629e+04 3.4411836e+04
+2.8522983e+03 -3.2029028e+04 3.6272803e+04
+7.0940318e+01 -4.7667253e+03 3.5153729e+04
+1.8793994e+01 -2.2119245e+03 3.5515234e+04
+2.1216205e+01 -1.2784268e+03 3.6211158e+04
+1.3940401e+02 -7.5950780e+02 3.6968617e+04
+4.8339497e+03 -4.7629338e+03 2.8668311e+04
+-5.0230770e+03 -5.8776073e+03 0.0000000e+00
+2.2947783e-02 -4.1211310e-01 -3.3411161e-01
+4.7359027e-01 -7.0387834e+00 -5.5854527e+00
+8.9547831e+00 -1.0810580e+02 -6.8445432e+01
+1.7014121e+02 -1.7325399e+03 -6.4633479e+02
+7.3183815e+03 -4.3144379e+04 -1.3834301e+03
+2.1047264e+04 -1.3309704e+05 2.9521310e+02
+3.7597323e+04 -2.3701169e+05 4.2870350e+03
+5.2094027e+04 -3.2355876e+05 1.0012393e+04
+6.1625023e+04 -3.7444501e+05 1.7074231e+04
+6.5630987e+04 -3.8748443e+05 2.5540924e+04
+6.4950036e+04 -3.7068576e+05 3.5504739e+04
+6.0621560e+04 -3.3272120e+05 4.6954339e+04
+5.3279697e+04 -2.7862135e+05 5.9723998e+04
+4.3293653e+04 -2.1231126e+05 7.3160926e+04
+3.1302562e+04 -1.4087621e+05 8.5755069e+04
+1.8614767e+04 -7.5360662e+04 9.4817689e+04
+7.5948797e+03 -2.6491342e+04 9.7800653e+04
+2.5494684e+02 -3.2104389e+03 9.6621750e+04
+1.3980327e+02 -1.5097125e+03 9.6306596e+04
+2.0801328e+02 -9.0960074e+02 9.6679764e+04
+5.3364799e+02 -5.5893992e+02 9.7305842e+04
+9.2389374e+03 -3.2908809e+03 7.5406977e+04
+-1.1628476e+04 -4.8687753e+03 0.0000000e+00
+3.6693500e-02 -2.2614440e-01 -1.4881086e-01
+7.5860990e-01 -4.0997579e+00 -2.3387139e+00
+1.4278440e+01 -6.8372494e+01 -2.8313011e+01
+2.6859480e+02 -1.1809262e+03 -3.2689290e+02
+1.1167531e+04 -3.3648009e+04 1.8725337e+02
+3.1650203e+04 -1.0774894e+05 3.4313573e+03
+5.6403365e+04 -1.9326155e+05 1.0340191e+04
+7.8287412e+04 -2.6410164e+05 2.0618236e+04
+9.3002071e+04 -3.0546989e+05 3.3881226e+04
+9.9637118e+04 -3.1583997e+05 5.0043844e+04
+9.9308010e+04 -3.0185604e+05 6.9019269e+04
+9.3412513e+04 -2.7066782e+05 9.0498660e+04
+8.2775892e+04 -2.2643792e+05 1.1378057e+05
+6.7892956e+04 -1.7233742e+05 1.3742033e+05
+4.9675988e+04 -1.1400944e+05 1.5885515e+05
+3.0073749e+04 -6.0207537e+04 1.7439226e+05
+1.2765163e+04 -1.9918148e+04 1.8139218e+05
+4.8905922e+02 -2.0090024e+03 1.8067587e+05
+3.3165082e+02 -9.0188819e+02 1.8048539e+05
+5.0983507e+02 -5.7776106e+02 1.8102197e+05
+1.1199462e+03 -4.3174821e+02 1.8164339e+05
+1.4123755e+04 -2.2655503e+03 1.4596983e+05
+-2.1718380e+04 -1.0524621e+03 0.0000000e+00
+4.7678197e-02 -1.2617756e-01 -5.4418074e-02
+9.8050599e-01 -2.3961962e+00 -8.4331622e-01
+1.8308676e+01 -4.1783812e+01 -1.0778668e+01
+3.4114606e+02 -7.4127511e+02 -1.4773085e+02
+1.4086149e+04 -2.3833989e+04 1.9024738e+03
+4.0106497e+04 -7.8640626e+04 7.0775587e+03
+7.1701648e+04 -1.4202885e+05 1.6969687e+04
+9.9809354e+04 -1.9434692e+05 3.1746658e+04
+1.1894025e+05 -2.2472980e+05 5.1142400e+04
+1.2787864e+05 -2.3219222e+05 7.4951175e+04
+1.2796800e+05 -2.2169528e+05 1.0288515e+05
+1.2090417e+05 -1.9855367e+05 1.3433546e+05
+1.0765753e+05 -1.6588181e+05 1.6812141e+05
+8.8791536e+04 -1.2601721e+05 2.0210834e+05
+6.5401781e+04 -8.3045659e+04 2.3283003e+05
+3.9940846e+04 -4.3304425e+04 2.5563149e+05
+1.7227982e+04 -1.3648739e+04 2.6711068e+05
+7.1652398e+02 -1.2059397e+03 2.6684856e+05
+5.4895106e+02 -5.2859697e+02 2.6687533e+05
+8.5566207e+02 -3.4490571e+02 2.6756559e+05
+1.7724114e+03 -2.9104417e+02 2.6796733e+05
+1.8740585e+04 -2.3588263e+03 2.1866504e+05
+-3.3225371e+04 6.8379843e+02 0.0000000e+00
+5.5052297e-02 -6.4618259e-02 -1.0800663e-02
+1.1275251e+00 -1.2575206e+00 -1.3359038e-01
+2.0950268e+01 -2.2341722e+01 -1.1658109e+00
+3.8840131e+02 -3.9971525e+02 -9.7734216e+00
+1.6057630e+04 -1.4167045e+04 3.3047156e+03
+4.6053632e+04 -4.7696209e+04 1.0213041e+04
+8.2629683e+04 -8.6583771e+04 2.2597999e+04
+1.1530511e+05 -1.1861221e+05 4.1014167e+04
+1.3769799e+05 -1.3714307e+05 6.5333621e+04
+1.4835360e+05 -1.4162713e+05 9.5274647e+04
+1.4877650e+05 -1.3512347e+05 1.3038401e+05
+1.4088649e+05 -1.2090166e+05 1.6980991e+05
+1.2576974e+05 -1.0089047e+05 2.1200174e+05
+1.0403973e+05 -7.6525581e+04 2.5430065e+05
+7.6909133e+04 -5.0276429e+04 2.9255719e+05
+4.7171525e+04 -2.5978672e+04 3.2132352e+05
+2.0481887e+04 -7.9327647e+03 3.3634626e+05
+8.9465496e+02 -6.5356866e+02 3.3639734e+05
+7.3349696e+02 -2.8990715e+02 3.3659731e+05
+1.1496097e+03 -1.8489139e+02 3.3749446e+05
+2.3409730e+03 -1.5292874e+02 3.3785588e+05
+2.3253060e+04 -1.6905723e+03 2.7483125e+05
+-4.2946864e+04 4.8643746e+02 0.0000000e+00
+5.9188974e-02 -1.9908452e-02 8.8908830e-03
+1.2097272e+00 -3.9111388e-01 2.1354838e-01
+2.2426472e+01 -6.9928745e+00 4.2378263e+00
+4.1487971e+02 -1.2540846e+02 7.9674138e+01
+1.7188591e+04 -4.6959404e+03 4.1880931e+03
+4.9547261e+04 -1.5969049e+04 1.2246392e+04
+8.9110358e+04 -2.9066636e+04 2.6233480e+04
+1.2453875e+05 -3.9844115e+04 4.6938058e+04
+1.4890058e+05 -4.6068303e+04 7.4329631e+04
+1.6058737e+05 -4.7562902e+04 1.0808203e+05
+1.6119784e+05 -4.5360874e+04 1.4763227e+05
+1.5279311e+05 -4.0565301e+04 1.9197116e+05
+1.3654156e+05 -3.3829552e+04 2.3931965e+05
+1.1309614e+05 -2.5638170e+04 2.8670585e+05
+8.3738157e+04 -1.6816930e+04 3.2958073e+05
+5.1452219e+04 -8.6499832e+03 3.6201011e+05
+2.2385421e+04 -2.6026148e+03 3.7916950e+05
+9.9937042e+02 -2.1130437e+02 3.7940919e+05
+8.4348172e+02 -9.8407950e+01 3.7975739e+05
+1.3232420e+03 -6.5567641e+01 3.8090665e+05
+2.7003246e+03 -5.5306645e+01 3.8147081e+05
+2.6994981e+04 -5.1346825e+02 3.0894932e+05
+-4.9077923e+04 1.9679302e+02 0.0000000e+00
+6.0516475e-02 1.9908452e-02 1.4693001e-02
+1.2361107e+00 3.9111388e-01 3.2122041e-01
+2.2901003e+01 6.9928745e+00 6.0189369e+00
+4.2341386e+02 1.2540846e+02 1.1038806e+02
+1.7556573e+04 4.6959404e+03 4.4860338e+03
+5.0695866e+04 1.5969049e+04 1.2941066e+04
+9.1250176e+04 2.9066636e+04 2.7473225e+04
+1.2759403e+05 3.9844115e+04 4.8947477e+04
+1.5261014e+05 4.6068303e+04 7.7367187e+04
+1.6463684e+05 4.7562902e+04 1.1239088e+05
+1.6530373e+05 4.5360874e+04 1.5341676e+05
+1.5672069e+05 4.0565301e+04 1.9938116e+05
+1.4008669e+05 3.3829552e+04 2.4842874e+05
+1.1607063e+05 2.5638170e+04 2.9748603e+05
+8.5977055e+04 1.6816930e+04 3.4187668e+05
+5.2851273e+04 8.6499832e+03 3.7550752e+05
+2.3000387e+04 2.6026148e+03 3.9336175e+05
+1.0321449e+03 2.1130437e+02 3.9365954e+05
+8.7719178e+02 9.8407950e+01 3.9405882e+05
+1.3758241e+03 6.5567634e+01 3.9530428e+05
+2.8168326e+03 5.5306517e+01 3.9596589e+05
+2.8485485e+04 5.1346542e+02 3.2037827e+05
+-5.1151402e+04 -1.9679476e+02 0.0000000e+00
+5.9188974e-02 6.4618259e-02 8.8908830e-03
+1.2097272e+00 1.2575206e+00 2.1354838e-01
+2.2426472e+01 2.2341722e+01 4.2378263e+00
+4.1487971e+02 3.9971525e+02 7.9674138e+01
+1.7188591e+04 1.4167045e+04 4.1880931e+03
+4.9547261e+04 4.7696209e+04 1.2246392e+04
+8.9110358e+04 8.6583771e+04 2.6233480e+04
+1.2453875e+05 1.1861221e+05 4.6938058e+04
+1.4890058e+05 1.3714307e+05 7.4329631e+04
+1.6058737e+05 1.4162713e+05 1.0808203e+05
+1.6119784e+05 1.3512347e+05 1.4763227e+05
+1.5279311e+05 1.2090166e+05 1.9197116e+05
+1.3654156e+05 1.0089047e+05 2.3931965e+05
+1.1309614e+05 7.6525581e+04 2.8670585e+05
+8.3738157e+04 5.0276429e+04 3.2958073e+05
+5.1452219e+04 2.5978672e+04 3.6201011e+05
+2.2385421e+04 7.9327647e+03 3.7916950e+05
+9.9937042e+02 6.5356866e+02 3.7940919e+05
+8.4348172e+02 2.8990715e+02 3.7975739e+05
+1.3232420e+03 1.8489140e+02 3.8090665e+05
+2.7003247e+03 1.5292942e+02 3.8147081e+05
+2.6994983e+04 1.6906046e+03 3.0894928e+05
+-4.9077963e+04 -4.8641758e+02 0.0000000e+00
+5.5052297e-02 1.2617756e-01 -1.0800663e-02
+1.1275251e+00 2.3961962e+00 -1.3359038e-01
+2.0950268e+01 4.1783812e+01 -1.1658109e+00
+3.8840131e+02 7.4127511e+02 -9.7734216e+00
+1.6057630e+04 2.3833989e+04 3.3047156e+03
+4.6053632e+04 7.8640626e+04 1.0213041e+04
+8.2629683e+04 1.4202885e+05 2.2597999e+04
+1.1530511e+05 1.9434692e+05 4.1014167e+04
+1.3769799e+05 2.2472980e+05 6.5333621e+04
+1.4835360e+05 2.3219222e+05 9.5274647e+04
+1.4877650e+05 2.2169528e+05 1.3038401e+05
+1.4088649e+05 1.9855367e+05 1.6980991e+05
+1.2576974e+05 1.6588181e+05 2.1200174e+05
+1.0403973e+05 1.2601721e+05 2.5430065e+05
+7.6909133e+04 8.3045659e+04 2.9255719e+05
+4.7171525e+04 4.3304425e+04 3.2132352e+05
+2.0481887e+04 1.3648739e+04 3.3634626e+05
+8.9465496e+02 1.2059397e+03 3.3639734e+05
+7.3349696e+02 5.2859697e+02 3.3659731e+05
+1.1496097e+03 3.4490566e+02 3.3749446e+05
+2.3409729e+03 2.9104316e+02 3.3785588e+05
+2.3253049e+04 2.3588108e+03 2.7483124e+05
+-4.2946874e+04 -6.8377511e+02 0.0000000e+00
+4.7678197e-02 2.2614440e-01 -5.4418074e-02
+9.8050599e-01 4.0997579e+00 -8.4331622e-01
+1.8308676e+01 6.8372494e+01 -1.0778668e+01
+3.4114606e+02 1.1809262e+03 -1.4773085e+02
+1.4086149e+04 3.3648009e+04 1.9024738e+03
+4.0106497e+04 1.0774894e+05 7.0775587e+03
+7.1701648e+04 1.9326155e+05 1.6969687e+04
+9.9809354e+04 2.6410164e+05 3.1746658e+04
+1.1894025e+05 3.0546989e+05 5.1142400e+04
+1.2787864e+05 3.1583997e+05 7.4951175e+04
+1.2796800e+05 3.0185604e+05 1.0288515e+05
+1.2090417e+05 2.7066782e+05 1.3433546e+05
+1.0765753e+05 2.2643792e+05 1.6812141e+05
+8.8791536e+04 1.7233742e+05 2.0210834e+05
+6.5401781e+04 1.1400944e+05 2.3283003e+05
+3.9940846e+04 6.0207537e+04 2.5563149e+05
+1.7227982e+04 1.9918148e+04 2.6711068e+05
+7.1652398e+02 2.0090024e+03 2.6684856e+05
+5.4895106e+02 9.0188819e+02 2.6687533e+05
+8.5566207e+02 5.7776094e+02 2.6756559e+05
+1.7724132e+03 4.3174469e+02 2.6796733e+05
+1.8740616e+04 2.2654453e+03 2.1866506e+05
+-3.3225346e+04 1.0524459e+03 0.0000000e+00
+3.6693500e-02 4.1211310e-01 -1.4881086e-01
+7.5860990e-01 7.0387834e+00 -2.3387139e+00
+1.4278440e+01 1.0810580e+02 -2.8313011e+01
+2.6859480e+02 1.7325399e+03 -3.2689290e+02
+1.1167531e+04 4.3144379e+04 1.8725337e+02
+3.1650203e+04 1.3309704e+05 3.4313573e+03
+5.6403365e+04 2.3701169e+05 1.0340191e+04
+7.8287412e+04 3.2355876e+05 2.0618236e+04
+9.3002071e+04 3.7444501e+05 3.3881226e+04
+9.9637118e+04 3.8748443e+05 5.0043844e+04
+9.9308010e+04 3.7068576e+05 6.9019269e+04
+9.3412513e+04 3.3272120e+05 9.0498660e+04
+8.2775892e+04 2.7862135e+05 1.1378057e+05
+6.7892956e+04 2.1231126e+05 1.3742033e+05
+4.9675988e+04 1.4087621e+05 1.5885515e+05
+3.0073749e+04 7.5360662e+04 1.7439226e+05
+1.2765163e+04 2.6491342e+04 1.8139218e+05
+4.8905922e+02 3.2104389e+03 1.8067587e+05
+3.3165082e+02 1.5097125e+03 1.8048539e+05
+5.0983513e+02 9.0960054e+02 1.8102197e+05
+1.1199482e+03 5.5893333e+02 1.8164340e+05
+1.4123752e+04 3.2907395e+03 1.4596990e+05
+-2.1718299e+04 4.8687162e+03 0.0000000e+00
+2.2947783e-02 7.7140196e-01 -3.3411161e-01
+4.7359027e-01 1.2794088e+01 -5.5854527e+00
+8.9547831e+00 1.8028388e+02 -6.8445432e+01
+1.7014121e+02 2.4850370e+03 -6.4633479e+02
+7.3183815e+03 5.0989554e+04 -1.3834301e+03
+2.1047264e+04 1.5170106e+05 2.9521310e+02
+3.7597323e+04 2.6884992e+05 4.2870350e+03
+5.2094027e+04 3.6697803e+05 1.0012393e+04
+6.1625023e+04 4.2506340e+05 1.7074231e+04
+6.5630987e+04 4.4021740e+05 2.5540924e+04
+6.4950036e+04 4.2141320e+05 3.5504739e+04
+6.0621560e+04 3.7840748e+05 4.6954339e+04
+5.3279697e+04 3.1684804e+05 5.9723998e+04
+4.3293653e+04 2.4128087e+05 7.3160926e+04
+3.1302562e+04 1.5997157e+05 8.5755069e+04
+1.8614767e+04 8.6041629e+04 9.4817689e+04
+7.5948797e+03 3.2029028e+04 9.7800653e+04
+2.5494684e+02 4.7667253e+03 9.6621750e+04
+1.3980327e+02 2.2119245e+03 9.6306596e+04
+2.0801331e+02 1.2784269e+03 9.6679764e+04
+5.3364445e+02 7.5951716e+02 9.7305818e+04
+9.2389037e+03 4.7630639e+03 7.5406825e+04
+-1.1628568e+04 5.8774149e+03 0.0000000e+00
+1.0183360e-02 1.3389849e+00 -5.5571989e-01
+2.0091828e-01 2.3114640e+01 -1.0656920e+01
+3.6640879e+00 3.2783134e+02 -1.5431685e+02
+6.7657534e+01 4.0449749e+03 -1.6412995e+03
+3.2423875e+03 5.4528616e+04 -1.9070986e+03
+1.0171560e+04 1.6098589e+05 -1.2276617e+03
+1.8583545e+04 2.8523793e+05 3.1015402e+02
+2.5825879e+04 3.8957239e+05 2.4344985e+03
+3.0345381e+04 4.5175524e+05 4.7311478e+03
+3.1925052e+04 4.6821003e+05 7.3274672e+03
+3.1123047e+04 4.4838803e+05 1.0328181e+04
+2.8610725e+04 4.0257687e+05 1.3869912e+04
+2.4780228e+04 3.3674556e+05 1.8224316e+04
+1.9788592e+04 2.5586418e+05 2.3449619e+04
+1.3942922e+04 1.6869495e+05 2.9240342e+04
+7.9153260e+03 8.9631552e+04 3.4411836e+04
+2.8522983e+03 3.3690029e+04 3.6272803e+04
+7.0940318e+01 6.0990473e+03 3.5153729e+04
+1.8793991e+01 2.1116744e+03 3.5515234e+04
+2.1216028e+01 1.0663449e+03 3.6211158e+04
+1.3939875e+02 6.3229843e+02 3.6968585e+04
+4.8339785e+03 3.5312323e+03 2.8668376e+04
+-5.0229758e+03 3.3252750e+03 0.0000000e+00
+3.6871013e-03 1.7140534e+00 -3.7225231e-01
+6.3447500e-02 3.1233039e+01 -8.4639853e+00
+9.6898993e-01 4.6609969e+02 -1.4654659e+02
+1.3521284e+01 5.8914703e+03 -1.9911065e+03
+1.5188610e+02 5.5028315e+04 -2.4525833e+03
+4.8781080e+02 1.6080024e+05 -2.1237681e+03
+9.0127370e+02 2.8463286e+05 -1.1890064e+03
+1.2346858e+03 3.8916001e+05 -1.9369534e+02
+1.4024293e+03 4.5205822e+05 3.6850343e+02
+1.4104631e+03 4.6893109e+05 7.3210972e+02
+1.3154387e+03 4.4927074e+05 9.6291564e+02
+1.1821739e+03 4.0336631e+05 1.1285166e+03
+1.0223776e+03 3.3718891e+05 1.4550822e+03
+7.9813255e+02 2.5595091e+05 2.0238596e+03
+5.1948227e+02 1.6832946e+05 2.9456698e+03
+2.5539823e+02 8.8676429e+04 4.3023278e+03
+6.8379030e+01 3.2403042e+04 5.8024982e+03
+-4.7084829e+00 5.8859701e+03 6.1049351e+03
+-1.5967796e+01 1.0607977e+03 7.2675606e+03
+-3.1487661e+01 2.9964621e+02 8.2467428e+03
+-1.0371348e+01 1.6222875e+02 9.0341966e+03
+2.1101222e+03 1.0715531e+03 7.9564862e+03
+-1.6236576e+03 1.0624449e+03 0.0000000e+00
+3.3532375e-03 1.4057357e+00 3.0864049e-01
+6.4601068e-02 2.7296911e+01 4.2314319e+00
+1.0716301e+00 4.3666103e+02 3.3314243e+01
+1.5112470e+01 5.8848540e+03 3.5399388e+01
+1.4368490e+02 5.5944194e+04 -9.0910148e+02
+4.3473323e+02 1.6136974e+05 -1.5316357e+03
+7.7493606e+02 2.8400041e+05 -8.9154051e+02
+1.0176805e+03 3.8852490e+05 -4.1010505e+01
+1.0941442e+03 4.5228794e+05 2.8678402e+02
+1.0310238e+03 4.6961172e+05 4.8474309e+02
+9.0479497e+02 4.5013316e+05 5.6292173e+02
+7.9479855e+02 4.0411578e+05 5.4802716e+02
+6.9514690e+02 3.3757018e+05 6.9205541e+02
+5.2800962e+02 2.5615722e+05 9.5776096e+02
+3.0169068e+02 1.6838858e+05 1.3746339e+03
+1.1136481e+02 8.8510944e+04 1.9460417e+03
+9.2934573e+00 3.2679204e+04 1.9262354e+03
+-1.5877841e+01 6.8688050e+03 1.0516673e+03
+-1.6223722e+01 1.0728297e+03 1.0991341e+03
+-2.2197483e+01 1.5213161e+02 1.3236306e+03
+-2.0732133e+01 4.0440790e+01 1.5648790e+03
+8.7494380e+02 1.6167540e+02 1.3503730e+03
+-2.9007947e+02 1.8754124e+02 0.0000000e+00
+3.7142325e-03 5.8124473e-01 8.2475624e-01
+8.0439477e-02 1.2641156e+01 1.5476434e+01
+1.4689105e+00 2.3601492e+02 2.1601278e+02
+2.2775833e+01 3.9963751e+03 2.1040503e+03
+2.4543626e+02 5.7473401e+04 5.9400286e+02
+7.1714574e+02 1.6312594e+05 -1.0633218e+03
+1.2521497e+03 2.8392279e+05 -6.5480272e+02
+1.6229533e+03 3.8852883e+05 1.1593112e+02
+1.7259132e+03 4.5355728e+05 2.3745853e+02
+1.6094123e+03 4.7142506e+05 3.4718248e+02
+1.4021752e+03 4.5211252e+05 3.6141913e+02
+1.2323533e+03 4.0580196e+05 2.8048206e+02
+1.0825916e+03 3.3860346e+05 4.4641788e+02
+8.1964032e+02 2.5698112e+05 6.5791867e+02
+4.5877309e+02 1.6917268e+05 8.3127579e+02
+1.5992696e+02 8.9003314e+04 1.1059287e+03
+5.1604047e+00 3.3299919e+04 9.5771981e+02
+-3.1052714e+01 7.7432761e+03 2.8720934e+02
+-2.1596363e+01 1.2827111e+03 1.5169179e+02
+-1.2273613e+01 1.6788737e+02 1.7096971e+02
+-6.4503382e+00 2.2954882e+01 2.2263466e+02
+3.3785172e+02 1.7134828e+01 4.8184286e+01
+1.2539292e+02 3.2976792e+01 0.0000000e+00
+2.0332841e-03 0.0000000e+00 5.8150437e-01
+5.0692891e-02 0.0000000e+00 1.3226006e+01
+1.1129909e+00 0.0000000e+00 2.4928447e+02
+2.3296310e+01 0.0000000e+00 4.2452284e+03
+4.7864841e+02 5.9417686e+04 2.1570960e+03
+1.3932037e+03 1.6546314e+05 -6.2586956e+02
+2.4207003e+03 2.8324969e+05 -5.0356599e+02
+3.1829627e+03 3.8748213e+05 3.0406406e+02
+3.4799557e+03 4.5413950e+05 2.3422821e+02
+3.3550515e+03 4.7272420e+05 2.7246050e+02
+2.9934216e+03 4.5369325e+05 2.6837874e+02
+2.6126231e+03 4.0711563e+05 9.7328640e+01
+2.2462987e+03 3.3910508e+05 3.1081644e+02
+1.7228624e+03 2.5747067e+05 5.5012652e+02
+1.0457712e+03 1.7009956e+05 5.3715121e+02
+4.5384215e+02 8.9793665e+04 6.3849605e+02
+1.0617936e+02 3.3997759e+04 5.6645658e+02
+-1.3098838e+01 8.4580800e+03 1.5834784e+02
+-1.9978670e+01 1.5167354e+03 3.8916013e+01
+-6.2803143e+00 2.1642533e+02 2.2834162e+01
+2.1091130e+00 2.4864458e+01 2.8047453e+01
+9.0328261e+01 0.0000000e+00 -2.3256365e+01
+1.1590029e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.2811729e+03 4.0358252e+04 9.7440256e+03
+1.0189570e+04 1.4037122e+05 3.6673415e+03
+1.8272226e+04 2.3571541e+05 -4.0540095e+03
+2.6521832e+04 3.0820972e+05 -6.5546871e+02
+3.3053332e+04 3.6291287e+05 1.8684474e+03
+3.6205808e+04 3.8161620e+05 1.9279304e+03
+3.4982205e+04 3.6680571e+05 3.6700842e+03
+2.9820635e+04 3.3241202e+05 3.0669727e+03
+2.3663562e+04 2.7725338e+05 1.5113552e+03
+1.8810843e+04 2.0731811e+05 2.2945789e+03
+1.4352729e+04 1.3473680e+05 3.7552973e+03
+9.1653292e+03 6.9844167e+04 4.2772089e+03
+4.5517308e+03 2.6377825e+04 3.0344793e+03
+1.9569139e+03 7.1848028e+03 1.0388888e+03
+8.5096874e+02 1.3090491e+03 1.8310553e+02
+3.2540947e+02 8.0744438e+01 1.0608687e+01
+7.8268284e+01 -2.2465944e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.1764443e+03 0.0000000e+00 5.9196034e+03
+-2.3566291e+04 0.0000000e+00 1.2600992e+04
+-4.3164450e+04 0.0000000e+00 2.8261402e+03
+-5.5729672e+04 0.0000000e+00 -4.7314238e+03
+-6.1163039e+04 0.0000000e+00 4.7469838e+02
+-6.0708584e+04 0.0000000e+00 1.4577072e+03
+-5.5599524e+04 0.0000000e+00 2.1502420e+02
+-4.9605650e+04 0.0000000e+00 2.9038560e+03
+-4.3010082e+04 0.0000000e+00 1.8981661e+03
+-3.2935183e+04 0.0000000e+00 1.6023827e+02
+-2.0504256e+04 0.0000000e+00 3.6500503e+03
+-1.0325726e+04 0.0000000e+00 5.5425024e+03
+-4.4701433e+03 0.0000000e+00 3.0468006e+03
+-1.5046398e+03 0.0000000e+00 8.5953248e+02
+-1.8488667e+02 0.0000000e+00 1.6834805e+02
+1.4628125e+02 0.0000000e+00 3.3818932e+01
+8.5867711e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.9584959e+03 -2.9675413e+04 3.8149902e+03
+1.7449123e+04 -1.0242808e+05 6.5011166e+03
+3.1245515e+04 -1.7610051e+05 -4.5429481e+02
+4.3630000e+04 -2.3547756e+05 -3.4719298e+03
+5.3895187e+04 -2.7950374e+05 1.6765620e+03
+5.8894074e+04 -2.9526776e+05 4.0406974e+03
+5.6861608e+04 -2.8270027e+05 4.1495361e+03
+4.8903784e+04 -2.5197496e+05 4.4151845e+03
+3.8355863e+04 -2.0798565e+05 2.5458172e+03
+2.9576301e+04 -1.5698454e+05 1.8798173e+03
+2.2561399e+04 -1.0475088e+05 4.4111914e+03
+1.4728598e+04 -5.6862425e+04 5.3855556e+03
+7.6207370e+03 -2.3451390e+04 3.2931582e+03
+3.7045743e+03 -7.6940539e+03 1.1976051e+03
+1.9862015e+03 -2.2314124e+03 2.9032015e+02
+9.4084955e+02 -5.6914301e+02 4.3576907e+01
+2.4581854e+02 -9.7033666e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.2858053e+03 -3.3515505e+04 5.8359719e+03
+4.8861576e+03 -9.4087233e+04 2.7996840e+03
+8.4445501e+03 -1.6190445e+05 -1.5669178e+03
+1.0502846e+04 -2.2164380e+05 6.1981928e+02
+1.1169633e+04 -2.5923272e+05 2.2348272e+03
+1.0584359e+04 -2.6886804e+05 1.4548008e+03
+9.1622006e+03 -2.5685411e+05 1.4274064e+03
+7.5932991e+03 -2.2968956e+05 1.3687772e+03
+6.1040175e+03 -1.9086210e+05 1.8043024e+03
+4.5357257e+03 -1.4397816e+05 3.0725189e+03
+2.7319953e+03 -9.3816504e+04 3.7591435e+03
+9.8451187e+02 -4.8569142e+04 3.6453140e+03
+-6.0290174e+00 -1.7845903e+04 2.5964930e+03
+-1.3738516e+02 -4.1297695e+03 1.1266809e+03
+2.0724510e+01 -5.9621917e+02 3.2238811e+02
+8.0685875e+01 -4.8207855e+01 4.6189407e+01
+3.2518682e+01 -5.0702846e+00 0.0000000e+00
+0 0 0
+0 0 0
+-5.5035602e-04 -3.0590379e-01 3.0848743e-01
+-2.1241766e-02 -6.7064734e+00 7.0868956e+00
+-6.1848277e-01 -1.2648967e+02 1.3530804e+02
+-1.4876210e+01 -2.1680251e+03 2.3415056e+03
+-2.8358649e+02 -3.1632556e+04 1.2208077e+03
+-8.3712385e+02 -9.0352885e+04 -2.8317460e+02
+-1.5379826e+03 -1.5798255e+05 -2.4633798e+02
+-2.1857609e+03 -2.1666875e+05 1.4739370e+02
+-2.6366883e+03 -2.5301242e+05 4.3756531e+01
+-2.8179039e+03 -2.6263598e+05 -1.5388578e+01
+-2.7029921e+03 -2.5116133e+05 -1.1803306e+01
+-2.3349198e+03 -2.2471459e+05 -3.9273675e+01
+-1.8684809e+03 -1.8684475e+05 5.8123287e+01
+-1.4528580e+03 -1.4087823e+05 1.3388975e+02
+-1.0679617e+03 -9.1718064e+04 1.4915223e+02
+-6.5448907e+02 -4.7556740e+04 2.4504175e+02
+-2.9540028e+02 -1.7418090e+04 2.1878003e+02
+-9.4886932e+01 -3.8632896e+03 3.4093504e+01
+-2.4693980e+01 -5.6004783e+02 2.6519580e+00
+-4.3253868e+00 -5.1383325e+01 3.8744032e+00
+-2.2127496e-02 -3.9409989e+00 4.8874539e+00
+3.6042676e+01 -4.8405492e+01 1.0759646e+02
+2.5745373e+02 1.8310076e+01 0.0000000e+00
+-9.1211737e-04 -7.3676799e-01 4.3549055e-01
+-3.2301397e-02 -1.4402633e+01 8.2443907e+00
+-8.0595887e-01 -2.3231742e+02 1.1634701e+02
+-1.5133075e+01 -3.1615001e+03 1.1477309e+03
+-1.8362337e+02 -3.0389867e+04 3.3410103e+02
+-5.5991347e+02 -8.8186701e+04 -5.5502322e+02
+-1.0253090e+03 -1.5591549e+05 -3.4462312e+02
+-1.4355846e+03 -2.1399842e+05 4.3579499e+01
+-1.7077125e+03 -2.4960215e+05 6.6937010e+01
+-1.8038844e+03 -2.5924298e+05 8.7229401e+01
+-1.7153447e+03 -2.4806605e+05 1.0946224e+02
+-1.4764793e+03 -2.2199649e+05 1.0019709e+02
+-1.1823648e+03 -1.8464062e+05 1.6102301e+02
+-9.1836093e+02 -1.3921050e+05 2.3129460e+02
+-6.6810982e+02 -9.0698543e+04 3.3865505e+02
+-3.9889107e+02 -4.7173481e+04 5.1421256e+02
+-1.6949915e+02 -1.7173753e+04 4.4453422e+02
+-4.7605692e+01 -3.5154243e+03 1.1322211e+02
+-1.2230570e+01 -5.1178102e+02 5.5589861e+01
+-4.4742366e+00 -5.5704922e+01 5.2112690e+01
+-4.5884718e+00 -2.9215128e+00 4.9226946e+01
+8.2024979e+01 -3.2448089e+02 5.8156339e+02
+9.8303199e+02 -2.6691800e+02 0.0000000e+00
+-7.9684050e-04 -8.9519389e-01 1.6257598e-01
+-2.7577078e-02 -1.6404663e+01 2.2567846e+00
+-6.3438989e-01 -2.4651681e+02 1.8162198e+01
+-1.0616128e+01 -3.1411725e+03 2.3563227e+01
+-1.1012243e+02 -2.9624959e+04 -4.8753676e+02
+-3.3814806e+02 -8.7087472e+04 -8.1388382e+02
+-6.1735136e+02 -1.5486738e+05 -4.6970141e+02
+-8.6034782e+02 -2.1256434e+05 -2.5748761e+01
+-1.0200640e+03 -2.4763929e+05 1.2560158e+02
+-1.0756131e+03 -2.5721715e+05 2.0640328e+02
+-1.0219259e+03 -2.4618708e+05 2.5415321e+02
+-8.7886538e+02 -2.2033479e+05 2.6611690e+02
+-7.0334827e+02 -1.8330334e+05 3.2733752e+02
+-5.4710968e+02 -1.3825121e+05 4.4316496e+02
+-3.9952667e+02 -9.0225832e+04 6.7167177e+02
+-2.3898083e+02 -4.7140500e+04 9.8903637e+02
+-9.9886957e+01 -1.7050882e+04 9.7534608e+02
+-2.6396480e+01 -3.0485569e+03 5.1899728e+02
+-1.0734210e+01 -5.2378032e+02 5.2550708e+02
+-1.2965063e+01 -1.1882871e+02 5.7939823e+02
+-2.6520258e+01 -3.4360113e+01 6.1661524e+02
+2.2126009e+01 -1.1932067e+03 2.3377547e+03
+2.1358091e+03 -1.4708359e+03 0.0000000e+00
+2.9251991e-04 -6.9737348e-01 -1.9442583e-01
+-3.1878800e-03 -1.2095079e+01 -4.4373750e+00
+-1.6563456e-01 -1.7247676e+02 -7.7342803e+01
+-3.1450868e+00 -2.1403289e+03 -1.0615200e+03
+-2.7467156e+01 -2.9186593e+04 -1.3205335e+03
+-7.5421655e+01 -8.6708432e+04 -1.1363415e+03
+-1.2670692e+02 -1.5434602e+05 -6.2972282e+02
+-1.6798405e+02 -2.1169299e+05 -9.8399024e+01
+-1.9663769e+02 -2.4633200e+05 1.9338170e+02
+-2.0619188e+02 -2.5578373e+05 3.7661594e+02
+-1.8681654e+02 -2.4481426e+05 5.0605196e+02
+-1.4002190e+02 -2.1911642e+05 6.0987227e+02
+-9.2234830e+01 -1.8235676e+05 7.7789702e+02
+-7.0401192e+01 -1.3766782e+05 1.0630407e+03
+-6.3669586e+01 -9.0125083e+04 1.5454434e+03
+-4.9545259e+01 -4.7544491e+04 2.2543780e+03
+-3.2054629e+01 -1.7715376e+04 3.0193056e+03
+-2.1458737e+01 -3.1851850e+03 3.1726840e+03
+-2.9361044e+01 -1.0773002e+03 3.7395971e+03
+-5.3787011e+01 -5.0011876e+02 4.1431863e+03
+-1.0562602e+02 -2.4800324e+02 4.4520786e+03
+-8.2664179e+01 -3.0020583e+03 8.4537935e+03
+4.0528417e+03 -3.6103290e+03 0.0000000e+00
+4.2291889e-03 -4.0217620e-01 -2.8924311e-01
+8.2852714e-02 -6.7048617e+00 -5.5613944e+00
+1.5191350e+00 -9.5088611e+01 -8.0804588e+01
+2.8855781e+01 -1.3202509e+03 -8.6208082e+02
+1.4886308e+03 -2.7270205e+04 -1.0247115e+03
+4.7226560e+03 -8.1636369e+04 -6.4786978e+02
+8.7039477e+03 -1.4533286e+05 2.1856486e+02
+1.2193208e+04 -1.9925835e+05 1.4165940e+03
+1.4424124e+04 -2.3170924e+05 2.7150898e+03
+1.5251346e+04 -2.4056833e+05 4.1734023e+03
+1.4915724e+04 -2.3028089e+05 5.8473567e+03
+1.3721380e+04 -2.0617050e+05 7.7907857e+03
+1.1844922e+04 -1.7173629e+05 1.0105625e+04
+9.3793526e+03 -1.2995992e+05 1.2806973e+04
+6.5158976e+03 -8.5632898e+04 1.5741813e+04
+3.6091245e+03 -4.5806096e+04 1.8309619e+04
+1.1939341e+03 -1.6949914e+04 1.9202521e+04
+-3.8259992e+01 -2.5180728e+03 1.8644609e+04
+-1.0869632e+02 -1.1393026e+03 1.8834102e+04
+-1.8469126e+02 -6.0986080e+02 1.9149751e+04
+-3.1806562e+02 -3.1437753e+02 1.9673592e+04
+1.4394757e+02 -4.1466922e+03 2.5508227e+04
+7.8552341e+03 -5.1985417e+03 0.0000000e+00
+1.1097028e-02 -2.1681673e-01 -1.7350872e-01
+2.3082512e-01 -3.7331762e+00 -2.9024291e+00
+4.3997384e+00 -5.7931517e+01 -3.5504479e+01
+8.4284130e+01 -9.3888309e+02 -3.3101524e+02
+3.6942793e+03 -2.3282807e+04 -6.9431072e+02
+1.0643660e+04 -7.2211334e+04 2.8425842e+02
+1.9102488e+04 -1.2913385e+05 2.5800804e+03
+2.6599533e+04 -1.7705824e+05 5.8744634e+03
+3.1597247e+04 -2.0573273e+05 9.9257215e+03
+3.3729869e+04 -2.1346933e+05 1.4727835e+04
+3.3367972e+04 -2.0425362e+05 2.0282626e+04
+3.1034700e+04 -1.8282939e+05 2.6528378e+04
+2.7090582e+04 -1.5233190e+05 3.3313106e+04
+2.1787624e+04 -1.1538448e+05 4.0243686e+04
+1.5519835e+04 -7.6129847e+04 4.6523363e+04
+9.0043278e+03 -4.0533860e+04 5.0861564e+04
+3.4058773e+03 -1.4183842e+04 5.2284496e+04
+-6.4412390e+01 -1.7062433e+03 5.1792025e+04
+-2.4809602e+02 -7.6187875e+02 5.1802501e+04
+-4.1316048e+02 -4.0414081e+02 5.2217955e+04
+-6.7385978e+02 -1.9731026e+02 5.3308390e+04
+1.1378033e+03 -3.5476898e+03 6.0810519e+04
+1.4469924e+04 -4.2418376e+03 0.0000000e+00
+1.8564417e-02 -1.2106022e-01 -7.7627421e-02
+3.8703463e-01 -2.2180282e+00 -1.2212001e+00
+7.3468074e+00 -3.7440894e+01 -1.4780190e+01
+1.3932489e+02 -6.5427306e+02 -1.7012030e+02
+5.8633743e+03 -1.8351244e+04 2.0247286e+02
+1.6555261e+04 -5.9045056e+04 2.1311363e+03
+2.9570713e+04 -1.0633252e+05 6.1624674e+03
+4.1189075e+04 -1.4592824e+05 1.2130805e+04
+4.9082951e+04 -1.6946320e+05 1.9780403e+04
+5.2656255e+04 -1.7569390e+05 2.8985836e+04
+5.2404152e+04 -1.6796554e+05 3.9601613e+04
+4.9052446e+04 -1.5021930e+05 5.1351590e+04
+4.3107733e+04 -1.2506186e+05 6.3749708e+04
+3.4944192e+04 -9.4634795e+04 7.5948790e+04
+2.5153425e+04 -6.2270336e+04 8.6611841e+04
+1.4836791e+04 -3.2741661e+04 9.4056602e+04
+5.8320707e+03 -1.0790061e+04 9.7595912e+04
+-9.6328565e+01 -1.0647055e+03 9.7539762e+04
+-4.0950034e+02 -4.2337657e+02 9.7942411e+04
+-6.8249182e+02 -2.0413107e+02 9.8934729e+04
+-1.0879004e+03 -8.7984132e+01 1.0103325e+05
+2.8774987e+03 -2.7181306e+03 1.1144982e+05
+2.2683547e+04 -2.6607948e+03 0.0000000e+00
+2.4737520e-02 -6.8812512e-02 -2.9307034e-02
+5.1314799e-01 -1.3208016e+00 -4.5917566e-01
+9.6689885e+00 -2.3293117e+01 -5.9672659e+00
+1.8174413e+02 -4.1758387e+02 -8.3254531e+01
+7.5830819e+03 -1.3114502e+04 1.1830716e+03
+2.1444831e+04 -4.3471940e+04 4.2716222e+03
+3.8371899e+04 -7.8823203e+04 1.0092049e+04
+5.3554967e+04 -1.0830937e+05 1.8727565e+04
+6.3973324e+04 -1.2573567e+05 2.9966963e+04
+6.8828186e+04 -1.3026159e+05 4.3585109e+04
+6.8722768e+04 -1.2441522e+05 5.9280022e+04
+6.4556042e+04 -1.1115017e+05 7.6559014e+04
+5.6949863e+04 -9.2423000e+04 9.4627817e+04
+4.6366247e+04 -6.9819534e+04 1.1223784e+05
+3.3551610e+04 -4.5772165e+04 1.2758984e+05
+1.9929908e+04 -2.3767794e+04 1.3862692e+05
+7.9315029e+03 -7.4631396e+03 1.4459647e+05
+-1.3157560e+02 -6.2993918e+02 1.4500981e+05
+-5.6237091e+02 -2.1823336e+02 1.4591599e+05
+-9.4144033e+02 -7.2507207e+01 1.4758146e+05
+-1.4824605e+03 1.3450734e+01 1.5073490e+05
+4.9645838e+03 -2.0667752e+03 1.6385966e+05
+3.0485040e+04 -2.7314948e+03 0.0000000e+00
+2.8998186e-02 -3.5716688e-02 -7.0417127e-03
+5.9907493e-01 -7.0182987e-01 -9.7563281e-02
+1.1233322e+01 -1.2594333e+01 -1.0794009e+00
+2.1009395e+02 -2.2742056e+02 -1.2935341e+01
+8.7796959e+03 -7.8433033e+03 1.9938000e+03
+2.4984047e+04 -2.6531924e+04 6.1233688e+03
+4.4834221e+04 -4.8353432e+04 1.3449060e+04
+6.2694560e+04 -6.6512833e+04 2.4263072e+04
+7.5012873e+04 -7.7202569e+04 3.8415086e+04
+8.0833557e+04 -7.9938712e+04 5.5612249e+04
+8.0842314e+04 -7.6294620e+04 7.5425834e+04
+7.6072908e+04 -6.8098868e+04 9.7188115e+04
+6.7237078e+04 -5.6565521e+04 1.1986330e+05
+5.4860759e+04 -4.2669957e+04 1.4189269e+05
+3.9798529e+04 -2.7890594e+04 1.6112173e+05
+2.3704587e+04 -1.4352055e+04 1.7517293e+05
+9.4494495e+03 -4.3660104e+03 1.8310823e+05
+-1.7329164e+02 -3.3641353e+02 1.8388266e+05
+-7.0056694e+02 -1.0721229e+02 1.8520570e+05
+-1.1765871e+03 -1.6980300e+01 1.8747637e+05
+-1.8396634e+03 5.1916299e+01 1.9161854e+05
+6.9704977e+03 -1.0293434e+03 2.0686367e+05
+3.7548881e+04 -2.4567297e+03 0.0000000e+00
+3.1422629e-02 -1.1076131e-02 3.1257888e-03
+6.4775056e-01 -2.1955419e-01 8.2826763e-02
+1.2117199e+01 -3.9618880e+00 1.7596550e+00
+2.2611150e+02 -7.1664833e+01 3.4772135e+01
+9.4778570e+03 -2.6079290e+03 2.5101321e+03
+2.7104443e+04 -8.9120592e+03 7.3330859e+03
+4.8742097e+04 -1.6285395e+04 1.5633311e+04
+6.8243815e+04 -2.2415040e+04 2.7830448e+04
+8.1725251e+04 -2.6016160e+04 4.3819364e+04
+8.8131579e+04 -2.6930866e+04 6.3267308e+04
+8.8200062e+04 -2.5693063e+04 8.5663527e+04
+8.3051515e+04 -2.2921775e+04 1.1022803e+05
+7.3458172e+04 -1.9028637e+04 1.3577454e+05
+5.9988030e+04 -1.4342934e+04 1.6055562e+05
+4.3559833e+04 -9.3604512e+03 1.8220380e+05
+2.5961277e+04 -4.7950054e+03 1.9813770e+05
+1.0323723e+04 -1.4373934e+03 2.0727078e+05
+-2.1452914e+02 -1.0816811e+02 2.0825643e+05
+-8.0984693e+02 -3.5678447e+01 2.0983823e+05
+-1.3616745e+03 -6.2296461e+00 2.1251239e+05
+-2.1227393e+03 1.9738524e+01 2.1736763e+05
+8.4247698e+03 -2.1248410e+02 2.3512098e+05
+4.3482692e+04 -8.9096048e+02 0.0000000e+00
+3.2204207e-02 1.1076131e-02 6.1600058e-03
+6.6343012e-01 2.1955419e-01 1.3973224e-01
+1.2401992e+01 3.9618880e+00 2.7149671e+00
+2.3127925e+02 7.1664833e+01 5.1519907e+01
+9.7068260e+03 2.6079290e+03 2.6854093e+03
+2.7808786e+04 8.9120592e+03 7.7483705e+03
+5.0045927e+04 1.6285395e+04 1.6381830e+04
+7.0098620e+04 2.2415040e+04 2.9047162e+04
+8.3969703e+04 2.6016160e+04 4.5655274e+04
+9.0570381e+04 2.6930866e+04 6.5859998e+04
+9.0655478e+04 2.5693063e+04 8.9122122e+04
+8.5376125e+04 2.2921775e+04 1.1462314e+05
+7.5526300e+04 1.9028637e+04 1.4112625e+05
+6.1689104e+04 1.4342934e+04 1.6682191e+05
+4.4804628e+04 9.3604512e+03 1.8927344e+05
+2.6703696e+04 4.7950054e+03 2.0583100e+05
+1.0602570e+04 1.4373934e+03 2.1535403e+05
+-2.3273708e+02 1.0816811e+02 2.1640258e+05
+-8.5344894e+02 3.5678447e+01 2.1806186e+05
+-1.4351916e+03 6.2296351e+00 2.2086042e+05
+-2.2360638e+03 -1.9739032e+01 2.2595279e+05
+8.9496331e+03 2.1248451e+02 2.4506361e+05
+4.5983250e+04 8.9098516e+02 0.0000000e+00
+3.1422629e-02 3.5716688e-02 3.1257888e-03
+6.4775056e-01 7.0182987e-01 8.2826763e-02
+1.2117199e+01 1.2594333e+01 1.7596550e+00
+2.2611150e+02 2.2742056e+02 3.4772135e+01
+9.4778570e+03 7.8433033e+03 2.5101321e+03
+2.7104443e+04 2.6531924e+04 7.3330859e+03
+4.8742097e+04 4.8353432e+04 1.5633311e+04
+6.8243815e+04 6.6512833e+04 2.7830448e+04
+8.1725251e+04 7.7202569e+04 4.3819364e+04
+8.8131579e+04 7.9938712e+04 6.3267308e+04
+8.8200062e+04 7.6294620e+04 8.5663527e+04
+8.3051515e+04 6.8098868e+04 1.1022803e+05
+7.3458172e+04 5.6565521e+04 1.3577454e+05
+5.9988030e+04 4.2669957e+04 1.6055562e+05
+4.3559833e+04 2.7890594e+04 1.8220380e+05
+2.5961277e+04 1.4352055e+04 1.9813770e+05
+1.0323723e+04 4.3660104e+03 2.0727078e+05
+-2.1452914e+02 3.3641353e+02 2.0825643e+05
+-8.0984693e+02 1.0721229e+02 2.0983823e+05
+-1.3616745e+03 1.6980276e+01 2.1251239e+05
+-2.1227388e+03 -5.1916281e+01 2.1736764e+05
+8.4247683e+03 1.0293566e+03 2.3512098e+05
+4.3482640e+04 2.4567542e+03 0.0000000e+00
+2.8998186e-02 6.8812512e-02 -7.0417127e-03
+5.9907493e-01 1.3208016e+00 -9.7563281e-02
+1.1233322e+01 2.3293117e+01 -1.0794009e+00
+2.1009395e+02 4.1758387e+02 -1.2935341e+01
+8.7796959e+03 1.3114502e+04 1.9938000e+03
+2.4984047e+04 4.3471940e+04 6.1233688e+03
+4.4834221e+04 7.8823203e+04 1.3449060e+04
+6.2694560e+04 1.0830937e+05 2.4263072e+04
+7.5012873e+04 1.2573567e+05 3.8415086e+04
+8.0833557e+04 1.3026159e+05 5.5612249e+04
+8.0842314e+04 1.2441522e+05 7.5425834e+04
+7.6072908e+04 1.1115017e+05 9.7188115e+04
+6.7237078e+04 9.2423000e+04 1.1986330e+05
+5.4860759e+04 6.9819534e+04 1.4189269e+05
+3.9798529e+04 4.5772165e+04 1.6112173e+05
+2.3704587e+04 2.3767794e+04 1.7517293e+05
+9.4494495e+03 7.4631396e+03 1.8310823e+05
+-1.7329164e+02 6.2993918e+02 1.8388266e+05
+-7.0056694e+02 2.1823336e+02 1.8520570e+05
+-1.1765871e+03 7.2507202e+01 1.8747637e+05
+-1.8396632e+03 -1.3450746e+01 1.9161854e+05
+6.9705061e+03 2.0667907e+03 2.0686368e+05
+3.7548872e+04 2.7314991e+03 0.0000000e+00
+2.4737520e-02 1.2106022e-01 -2.9307034e-02
+5.1314799e-01 2.2180282e+00 -4.5917566e-01
+9.6689885e+00 3.7440894e+01 -5.9672659e+00
+1.8174413e+02 6.5427306e+02 -8.3254531e+01
+7.5830819e+03 1.8351244e+04 1.1830716e+03
+2.1444831e+04 5.9045056e+04 4.2716222e+03
+3.8371899e+04 1.0633252e+05 1.0092049e+04
+5.3554967e+04 1.4592824e+05 1.8727565e+04
+6.3973324e+04 1.6946320e+05 2.9966963e+04
+6.8828186e+04 1.7569390e+05 4.3585109e+04
+6.8722768e+04 1.6796554e+05 5.9280022e+04
+6.4556042e+04 1.5021930e+05 7.6559014e+04
+5.6949863e+04 1.2506186e+05 9.4627817e+04
+4.6366247e+04 9.4634795e+04 1.1223784e+05
+3.3551610e+04 6.2270336e+04 1.2758984e+05
+1.9929908e+04 3.2741661e+04 1.3862692e+05
+7.9315029e+03 1.0790061e+04 1.4459647e+05
+-1.3157560e+02 1.0647055e+03 1.4500981e+05
+-5.6237091e+02 4.2337657e+02 1.4591599e+05
+-9.4144029e+02 2.0413100e+02 1.4758146e+05
+-1.4824593e+03 8.7981806e+01 1.5073490e+05
+4.9646075e+03 2.7180400e+03 1.6385967e+05
+3.0485049e+04 2.6608069e+03 0.0000000e+00
+1.8564417e-02 2.1681673e-01 -7.7627421e-02
+3.8703463e-01 3.7331762e+00 -1.2212001e+00
+7.3468074e+00 5.7931517e+01 -1.4780190e+01
+1.3932489e+02 9.3888309e+02 -1.7012030e+02
+5.8633743e+03 2.3282807e+04 2.0247286e+02
+1.6555261e+04 7.2211334e+04 2.1311363e+03
+2.9570713e+04 1.2913385e+05 6.1624674e+03
+4.1189075e+04 1.7705824e+05 1.2130805e+04
+4.9082951e+04 2.0573273e+05 1.9780403e+04
+5.2656255e+04 2.1346933e+05 2.8985836e+04
+5.2404152e+04 2.0425362e+05 3.9601613e+04
+4.9052446e+04 1.8282939e+05 5.1351590e+04
+4.3107733e+04 1.5233190e+05 6.3749708e+04
+3.4944192e+04 1.1538448e+05 7.5948790e+04
+2.5153425e+04 7.6129847e+04 8.6611841e+04
+1.4836791e+04 4.0533860e+04 9.4056602e+04
+5.8320707e+03 1.4183842e+04 9.7595912e+04
+-9.6328565e+01 1.7062433e+03 9.7539762e+04
+-4.0950034e+02 7.6187875e+02 9.7942411e+04
+-6.8249172e+02 4.0414074e+02 9.8934729e+04
+-1.0878978e+03 1.9730742e+02 1.0103325e+05
+2.8775013e+03 3.5476558e+03 1.1144989e+05
+2.2683554e+04 4.2418432e+03 0.0000000e+00
+1.1097028e-02 4.0217620e-01 -1.7350872e-01
+2.3082512e-01 6.7048617e+00 -2.9024291e+00
+4.3997384e+00 9.5088611e+01 -3.5504479e+01
+8.4284130e+01 1.3202509e+03 -3.3101524e+02
+3.6942793e+03 2.7270205e+04 -6.9431072e+02
+1.0643660e+04 8.1636369e+04 2.8425842e+02
+1.9102488e+04 1.4533286e+05 2.5800804e+03
+2.6599533e+04 1.9925835e+05 5.8744634e+03
+3.1597247e+04 2.3170924e+05 9.9257215e+03
+3.3729869e+04 2.4056833e+05 1.4727835e+04
+3.3367972e+04 2.3028089e+05 2.0282626e+04
+3.1034700e+04 2.0617050e+05 2.6528378e+04
+2.7090582e+04 1.7173629e+05 3.3313106e+04
+2.1787624e+04 1.2995992e+05 4.0243686e+04
+1.5519835e+04 8.5632898e+04 4.6523363e+04
+9.0043278e+03 4.5806096e+04 5.0861564e+04
+3.4058773e+03 1.6949914e+04 5.2284496e+04
+-6.4412390e+01 2.5180728e+03 5.1792025e+04
+-2.4809602e+02 1.1393026e+03 5.1802501e+04
+-4.1316046e+02 6.0986084e+02 5.2217954e+04
+-6.7386016e+02 3.1438048e+02 5.3308386e+04
+1.1377360e+03 4.1468038e+03 6.0810402e+04
+1.4469870e+04 5.1985313e+03 0.0000000e+00
+4.2291889e-03 6.9737348e-01 -2.8924311e-01
+8.2852714e-02 1.2095079e+01 -5.5613944e+00
+1.5191350e+00 1.7247676e+02 -8.0804588e+01
+2.8855781e+01 2.1403289e+03 -8.6208082e+02
+1.4886308e+03 2.9186593e+04 -1.0247115e+03
+4.7226560e+03 8.6708432e+04 -6.4786978e+02
+8.7039477e+03 1.5434602e+05 2.1856486e+02
+1.2193208e+04 2.1169299e+05 1.4165940e+03
+1.4424124e+04 2.4633200e+05 2.7150898e+03
+1.5251346e+04 2.5578373e+05 4.1734023e+03
+1.4915724e+04 2.4481426e+05 5.8473567e+03
+1.3721380e+04 2.1911642e+05 7.7907857e+03
+1.1844922e+04 1.8235676e+05 1.0105625e+04
+9.3793526e+03 1.3766782e+05 1.2806973e+04
+6.5158976e+03 9.0125083e+04 1.5741813e+04
+3.6091245e+03 4.7544491e+04 1.8309619e+04
+1.1939341e+03 1.7715376e+04 1.9202521e+04
+-3.8259992e+01 3.1851850e+03 1.8644609e+04
+-1.0869632e+02 1.0773002e+03 1.8834102e+04
+-1.8469123e+02 5.0011881e+02 1.9149751e+04
+-3.1806375e+02 2.4800895e+02 1.9673587e+04
+1.4399623e+02 3.0021411e+03 2.5508232e+04
+7.8552420e+03 3.6103066e+03 0.0000000e+00
+2.9251991e-04 8.9519389e-01 -1.9442583e-01
+-3.1878800e-03 1.6404663e+01 -4.4373750e+00
+-1.6563456e-01 2.4651681e+02 -7.7342803e+01
+-3.1450868e+00 3.1411725e+03 -1.0615200e+03
+-2.7467156e+01 2.9624959e+04 -1.3205335e+03
+-7.5421655e+01 8.7087472e+04 -1.1363415e+03
+-1.2670692e+02 1.5486738e+05 -6.2972282e+02
+-1.6798405e+02 2.1256434e+05 -9.8399024e+01
+-1.9663769e+02 2.4763929e+05 1.9338170e+02
+-2.0619188e+02 2.5721715e+05 3.7661594e+02
+-1.8681654e+02 2.4618708e+05 5.0605196e+02
+-1.4002189e+02 2.2033479e+05 6.0987227e+02
+-9.2234827e+01 1.8330334e+05 7.7789702e+02
+-7.0401190e+01 1.3825121e+05 1.0630407e+03
+-6.3669586e+01 9.0225832e+04 1.5454434e+03
+-4.9545259e+01 4.7140500e+04 2.2543780e+03
+-3.2054628e+01 1.7050882e+04 3.0193056e+03
+-2.1458737e+01 3.0485569e+03 3.1726840e+03
+-2.9361039e+01 5.2378032e+02 3.7395971e+03
+-5.3786854e+01 1.1882863e+02 4.1431865e+03
+-1.0562633e+02 3.4358712e+01 4.4520920e+03
+-8.2533483e+01 1.1929741e+03 8.4539165e+03
+4.0527809e+03 1.4706953e+03 0.0000000e+00
+-7.9684051e-04 7.3676799e-01 1.6257598e-01
+-2.7577078e-02 1.4402633e+01 2.2567846e+00
+-6.3438988e-01 2.3231742e+02 1.8162198e+01
+-1.0616128e+01 3.1615001e+03 2.3563227e+01
+-1.1012243e+02 3.0389867e+04 -4.8753675e+02
+-3.3814806e+02 8.8186701e+04 -8.1388382e+02
+-6.1735136e+02 1.5591549e+05 -4.6970139e+02
+-8.6034784e+02 2.1399842e+05 -2.5748738e+01
+-1.0200640e+03 2.4960215e+05 1.2560162e+02
+-1.0756131e+03 2.5924298e+05 2.0640327e+02
+-1.0219258e+03 2.4806605e+05 2.5415321e+02
+-8.7886530e+02 2.2199649e+05 2.6611687e+02
+-7.0334819e+02 1.8464062e+05 3.2733752e+02
+-5.4710964e+02 1.3921050e+05 4.4316498e+02
+-3.9952667e+02 9.0698543e+04 6.7167175e+02
+-2.3898080e+02 4.7173481e+04 9.8903636e+02
+-9.9886922e+01 1.7173753e+04 9.7534608e+02
+-2.6396463e+01 3.5154243e+03 5.1899725e+02
+-1.0734208e+01 5.1178109e+02 5.2550707e+02
+-1.2965462e+01 5.5705143e+01 5.7939852e+02
+-2.6533999e+01 2.9270392e+00 6.1663207e+02
+2.1765536e+01 3.2467427e+02 2.3381121e+03
+2.1358117e+03 2.6685255e+02 0.0000000e+00
+-9.1211740e-04 3.0590379e-01 4.3549055e-01
+-3.2301398e-02 6.7064734e+00 8.2443907e+00
+-8.0595889e-01 1.2648967e+02 1.1634701e+02
+-1.5133076e+01 2.1680251e+03 1.1477309e+03
+-1.8362334e+02 3.1632556e+04 3.3410109e+02
+-5.5991348e+02 9.0352886e+04 -5.5502270e+02
+-1.0253096e+03 1.5798255e+05 -3.4462299e+02
+-1.4355851e+03 2.1666875e+05 4.3580178e+01
+-1.7077130e+03 2.5301242e+05 6.6937286e+01
+-1.8038834e+03 2.6263599e+05 8.7229167e+01
+-1.7153430e+03 2.5116133e+05 1.0946164e+02
+-1.4764770e+03 2.2471459e+05 1.0019656e+02
+-1.1823627e+03 1.8684475e+05 1.6102301e+02
+-9.1836029e+02 1.4087823e+05 2.3129436e+02
+-6.6810964e+02 9.1718065e+04 3.3865414e+02
+-3.9889030e+02 4.7556741e+04 5.1421197e+02
+-1.6949805e+02 1.7418089e+04 4.4453421e+02
+-4.7605155e+01 3.8632889e+03 1.1322205e+02
+-1.2230360e+01 5.6004728e+02 5.5589858e+01
+-4.4742234e+00 5.1383461e+01 5.2112357e+01
+-4.5919433e+00 3.9436127e+00 4.9237366e+01
+8.1958497e+01 4.8397273e+01 5.8147956e+02
+9.8294128e+02 -1.8317021e+01 0.0000000e+00
+-5.5035611e-04 0.0000000e+00 3.0848743e-01
+-2.1241769e-02 0.0000000e+00 7.0868955e+00
+-6.1848280e-01 0.0000000e+00 1.3530803e+02
+-1.4876179e+01 0.0000000e+00 2.3415056e+03
+-2.8358544e+02 3.3515542e+04 1.2208148e+03
+-8.3712811e+02 9.4087200e+04 -2.8316652e+02
+-1.5379981e+03 1.6190442e+05 -2.4633972e+02
+-2.1857714e+03 2.2164374e+05 1.4740718e+02
+-2.6366959e+03 2.5923273e+05 4.3759809e+01
+-2.8178818e+03 2.6886808e+05 -1.5406086e+01
+-2.7029465e+03 2.5685412e+05 -1.1825506e+01
+-2.3348584e+03 2.2968953e+05 -3.9289662e+01
+-1.8684289e+03 1.9086204e+05 5.8111780e+01
+-1.4528343e+03 1.4397816e+05 1.3387961e+02
+-1.0679560e+03 9.3816554e+04 1.4911643e+02
+-6.5446381e+02 4.8569143e+04 2.4502000e+02
+-2.9536506e+02 1.7845876e+04 2.1877727e+02
+-9.4873217e+01 4.1297549e+03 3.4086096e+01
+-2.4690888e+01 5.9619572e+02 2.6499462e+00
+-4.3250675e+00 4.8211111e+01 3.8748786e+00
+-2.2885849e-02 5.0721958e+00 4.8845175e+00
+3.6028256e+01 0.0000000e+00 1.0758047e+02
+2.5744113e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.2856958e+03 2.9675229e+04 5.8357894e+03
+4.8862037e+03 1.0242804e+05 2.8000332e+03
+8.4440839e+03 1.7609991e+05 -1.5673122e+03
+1.0502948e+04 2.3547750e+05 6.2052620e+02
+1.1169113e+04 2.7950297e+05 2.2345044e+03
+1.0584889e+04 2.9526784e+05 1.4538280e+03
+9.1634690e+03 2.8270002e+05 1.4266602e+03
+7.5948303e+03 2.5197406e+05 1.3681656e+03
+6.1055137e+03 2.0798436e+05 1.8038940e+03
+4.5364423e+03 1.5698443e+05 3.0720534e+03
+2.7320910e+03 1.0475150e+05 3.7577500e+03
+9.8531426e+02 5.6862319e+04 3.6445912e+03
+-4.8650290e+00 2.3450678e+04 2.5963888e+03
+-1.3710441e+02 7.6939386e+03 1.1262233e+03
+2.0723843e+01 2.2314656e+03 3.2237225e+02
+8.0692385e+01 5.6911141e+02 4.6190649e+01
+3.2518077e+01 9.7012814e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.9584500e+03 0.0000000e+00 3.8149700e+03
+1.7449112e+04 0.0000000e+00 6.5010713e+03
+3.1245529e+04 0.0000000e+00 -4.5432918e+02
+4.3630040e+04 0.0000000e+00 -3.4719312e+03
+5.3895163e+04 0.0000000e+00 1.6764496e+03
+5.8894020e+04 0.0000000e+00 4.0405856e+03
+5.6861697e+04 0.0000000e+00 4.1493462e+03
+4.8903727e+04 0.0000000e+00 4.4150487e+03
+3.8355677e+04 0.0000000e+00 2.5458303e+03
+2.9576087e+04 0.0000000e+00 1.8798740e+03
+2.2561298e+04 0.0000000e+00 4.4113635e+03
+1.4728515e+04 0.0000000e+00 5.3855827e+03
+7.6207584e+03 0.0000000e+00 3.2932202e+03
+3.7046239e+03 0.0000000e+00 1.1977274e+03
+1.9861703e+03 0.0000000e+00 2.9034603e+02
+9.4082108e+02 0.0000000e+00 4.3622607e+01
+2.4580858e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.7352428e+03 -1.5698718e+04 2.2264411e+03
+6.7509915e+03 -5.5241542e+04 4.7860655e+03
+1.2599896e+04 -9.5029244e+04 1.3949593e+03
+1.6066747e+04 -1.2547692e+05 -8.5175571e+02
+1.7117147e+04 -1.4649738e+05 2.0263531e+03
+1.6865449e+04 -1.5238183e+05 3.2377033e+03
+1.5311382e+04 -1.4412963e+05 2.2529944e+03
+1.2289123e+04 -1.2793162e+05 2.2618841e+03
+8.8052918e+03 -1.0562645e+05 2.6034212e+03
+6.1868961e+03 -7.8828329e+04 3.4383651e+03
+4.1635235e+03 -5.0672282e+04 4.9824342e+03
+2.1049543e+03 -2.5615775e+04 5.0552302e+03
+7.3389188e+02 -9.3005026e+03 3.2857807e+03
+3.9140913e+02 -2.4075516e+03 1.5540587e+03
+4.7243553e+02 -4.9374996e+02 5.9744464e+02
+4.5994641e+02 -1.1524984e+02 1.5415483e+02
+1.9759623e+02 -2.4433757e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.2475360e+03 -1.6041240e+04 2.8758646e+03
+-4.1315434e+03 -4.4838069e+04 1.4901446e+03
+-7.3424378e+03 -7.7013859e+04 -7.3825247e+02
+-1.0167525e+04 -1.0567751e+05 1.3270296e+02
+-1.1992928e+04 -1.2390356e+05 7.0144735e+02
+-1.2482405e+04 -1.2862815e+05 1.5401186e+01
+-1.1780091e+04 -1.2302599e+05 -1.4595291e+02
+-1.0225808e+04 -1.1022609e+05 -3.1858962e+01
+-8.2903822e+03 -9.1504340e+04 2.4043341e+02
+-6.3659744e+03 -6.8385686e+04 6.9971961e+02
+-4.4690785e+03 -4.3723198e+04 9.5170712e+02
+-2.5965863e+03 -2.2079908e+04 9.9693929e+02
+-1.1322752e+03 -7.8641089e+03 6.8679393e+02
+-3.8624865e+02 -1.7073870e+03 2.3555251e+02
+-1.0095489e+02 -1.9355510e+02 5.7038144e+01
+1.0074970e+01 1.7736944e-02 1.2381721e+01
+1.9174079e+01 1.2925528e+00 0.0000000e+00
+0 0 0
+0 0 0
+1.1188066e-04 -1.5784017e-01 1.5717794e-01
+1.5590307e-03 -3.4505781e+00 3.5849552e+00
+9.5476957e-03 -6.4686906e+01 6.7643826e+01
+-3.5157978e-01 -1.0966175e+03 1.1497367e+03
+-2.9866095e+01 -1.5715353e+04 5.7012637e+02
+-8.8139152e+01 -4.4822301e+04 -1.9462604e+02
+-1.0758568e+02 -7.8469015e+04 -1.6986713e+02
+-5.5504344e+01 -1.0799661e+05 1.8973988e+01
+4.6537050e+01 -1.2653445e+05 -3.3341667e+01
+1.5279926e+02 -1.3161638e+05 -1.5817393e+01
+2.1700403e+02 -1.2601096e+05 4.9159343e+01
+2.2476521e+02 -1.1277059e+05 3.3968516e+01
+1.9748079e+02 -9.3533085e+04 -3.2479455e+00
+1.6417032e+02 -6.9969867e+04 -3.6092708e+01
+1.5002506e+02 -4.4958329e+04 -1.8948404e+01
+1.4911076e+02 -2.2962765e+04 6.0308277e+01
+1.2110450e+02 -8.2839540e+03 6.3648580e+01
+6.3055689e+01 -1.7950948e+03 -6.5864710e+00
+2.2980192e+01 -2.4169726e+02 -6.1179965e+00
+7.3226183e+00 -1.7093029e+01 -6.5555200e-01
+3.1611666e+00 5.9188313e-01 -3.1397669e+00
+1.3992211e+01 -1.0346001e+01 2.9255314e+01
+1.7492196e+02 -9.9073131e+01 0.0000000e+00
+2.0805947e-04 -3.8122194e-01 2.2226159e-01
+2.2744095e-03 -7.4491788e+00 4.1862864e+00
+1.0233449e-02 -1.1988431e+02 5.8567496e+01
+-7.4386755e-02 -1.6231245e+03 5.7001576e+02
+-7.9874445e-01 -1.5473014e+04 1.4485216e+02
+4.5870143e+00 -4.4927526e+04 -3.1442374e+02
+3.9986429e+01 -7.9644840e+04 -2.0389413e+02
+1.1383393e+02 -1.0974150e+05 -8.4228689e+00
+2.0342903e+02 -1.2846255e+05 8.5300663e+00
+2.7574780e+02 -1.3373950e+05 5.2019068e+01
+3.0415524e+02 -1.2808167e+05 1.0323328e+02
+2.8483978e+02 -1.1452411e+05 9.5436594e+01
+2.3851222e+02 -9.4931313e+04 7.2787696e+01
+1.8939506e+02 -7.1072658e+04 6.7822771e+01
+1.5306213e+02 -4.5841711e+04 1.3003248e+02
+1.2534032e+02 -2.3593267e+04 2.3630323e+02
+8.6477902e+01 -8.5100916e+03 2.0646375e+02
+3.9375895e+01 -1.7235691e+03 4.7956486e+01
+1.3971004e+01 -2.4267899e+02 2.2736660e+01
+6.7641281e+00 -2.2774646e+01 1.7179998e+01
+8.0444742e+00 6.2766118e+00 -1.1377594e+00
+1.4201973e+01 -5.6205076e+01 1.1245790e+02
+5.2232281e+02 -6.3799618e+02 0.0000000e+00
+1.8522620e-04 -4.6369014e-01 8.1486138e-02
+1.0650984e-03 -8.5059936e+00 1.1096588e+00
+-1.4462500e-02 -1.2783253e+02 8.4379518e+00
+-4.1538094e-01 -1.6266696e+03 1.7823818e+00
+-4.1011264e+00 -1.5307560e+04 -2.6969262e+02
+-6.6451027e+00 -4.5089349e+04 -4.3937268e+02
+9.7614142e+00 -8.0452349e+04 -2.5897668e+02
+5.1927364e+01 -1.1088231e+05 -3.0441808e+01
+1.0571534e+02 -1.2967076e+05 5.1986325e+01
+1.5015960e+02 -1.3502709e+05 1.1380808e+02
+1.6865386e+02 -1.2932091e+05 1.6247118e+02
+1.5893271e+02 -1.1556621e+05 1.6677173e+02
+1.3325752e+02 -9.5766246e+04 1.6509949e+02
+1.0570434e+02 -7.1759660e+04 1.9928761e+02
+8.5784212e+01 -4.6449017e+04 3.2128292e+02
+7.1232613e+01 -2.4076221e+04 4.9402297e+02
+4.9295250e+01 -8.6528032e+03 4.8755241e+02
+2.1656417e+01 -1.5396787e+03 2.5560907e+02
+1.1546751e+01 -2.5837598e+02 2.4902509e+02
+1.5132679e+01 -5.0724935e+01 2.4887683e+02
+2.5388406e+01 7.7425290e+00 1.9550224e+02
+-1.0346328e+02 -2.4439561e+02 5.0888156e+02
+6.1185288e+02 -1.8899160e+03 0.0000000e+00
+4.9168644e-04 -3.6128498e-01 -1.0260433e-01
+6.7690413e-03 -6.2768275e+00 -2.3417273e+00
+7.9605206e-02 -8.9613560e+01 -4.0805935e+01
+9.7599721e-01 -1.1122560e+03 -5.5934062e+02
+1.3485114e+01 -1.5205216e+04 -7.0263765e+02
+5.1095941e+01 -4.5312676e+04 -6.0582797e+02
+1.1286605e+02 -8.0959669e+04 -3.3808109e+02
+1.8549518e+02 -1.1151509e+05 -5.8777850e+01
+2.4868444e+02 -1.3027407e+05 9.9217623e+01
+2.8677720e+02 -1.3563028e+05 2.0943244e+02
+2.9280205e+02 -1.2988484e+05 2.9374125e+02
+2.6990208e+02 -1.1603173e+05 3.4934111e+02
+2.2832061e+02 -9.6155993e+04 4.1853270e+02
+1.7818099e+02 -7.2140610e+04 5.5089969e+02
+1.2817563e+02 -4.6890085e+04 8.0012187e+02
+8.2604620e+01 -2.4573707e+04 1.1654580e+03
+4.2781360e+01 -9.1077798e+03 1.5455986e+03
+1.8466445e+01 -1.6366731e+03 1.6026677e+03
+2.1892212e+01 -5.4000427e+02 1.8330428e+03
+4.0437383e+01 -2.3074837e+02 1.9188418e+03
+6.3623215e+01 -6.7654647e+01 1.8249821e+03
+-4.5396942e+02 -8.3193906e+02 2.7838318e+03
+4.4053918e+02 -3.6474621e+03 0.0000000e+00
+2.2331166e-03 -2.0881557e-01 -1.5047334e-01
+4.4272120e-02 -3.4921909e+00 -2.8965293e+00
+8.1166532e-01 -4.9715823e+01 -4.2086797e+01
+1.5156088e+01 -6.9362644e+02 -4.4701670e+02
+7.7430183e+02 -1.4393781e+04 -5.4412267e+02
+2.4807553e+03 -4.3276824e+04 -3.3807337e+02
+4.6158897e+03 -7.7353073e+04 1.4338885e+02
+6.5285299e+03 -1.0651819e+05 8.1117241e+02
+7.7897358e+03 -1.2436970e+05 1.5411911e+03
+8.2845193e+03 -1.2948301e+05 2.3607502e+03
+8.1085194e+03 -1.2400600e+05 3.2891116e+03
+7.4192952e+03 -1.1077763e+05 4.3370984e+03
+6.3450112e+03 -9.1865328e+04 5.5463450e+03
+4.9775573e+03 -6.9122650e+04 6.9301805e+03
+3.4338612e+03 -4.5286140e+04 8.4082719e+03
+1.9054894e+03 -2.4109948e+04 9.6481483e+03
+6.9383899e+02 -8.8868111e+03 9.9272747e+03
+4.1033909e+01 -1.3083488e+03 9.5196565e+03
+4.8202526e+01 -5.6970985e+02 9.3924632e+03
+8.4725882e+01 -2.7621889e+02 9.1685166e+03
+1.1515279e+02 -7.7306857e+01 8.7449504e+03
+-1.2508797e+03 -1.2803056e+03 1.0588138e+04
+7.2714299e+02 -5.0719391e+03 0.0000000e+00
+5.6142712e-03 -1.1355455e-01 -8.9778270e-02
+1.1722629e-01 -1.9673872e+00 -1.5009832e+00
+2.2392820e+00 -3.0775229e+01 -1.8281121e+01
+4.2923254e+01 -5.0320613e+02 -1.6734056e+02
+1.8954076e+03 -1.2423146e+04 -3.3910320e+02
+5.4782614e+03 -3.8676378e+04 2.2584928e+02
+9.8785115e+03 -6.9430713e+04 1.5274663e+03
+1.3821206e+04 -9.5605120e+04 3.3927188e+03
+1.6481734e+04 -1.1154030e+05 5.6788288e+03
+1.7628542e+04 -1.1606313e+05 8.3602829e+03
+1.7423105e+04 -1.1111300e+05 1.1412151e+04
+1.6135806e+04 -9.9240787e+04 1.4774199e+04
+1.3984198e+04 -8.2325294e+04 1.8340548e+04
+1.1141315e+04 -6.2023602e+04 2.1887808e+04
+7.8472805e+03 -4.0715470e+04 2.4989693e+04
+4.5120346e+03 -2.1593369e+04 2.6965407e+04
+1.7890478e+03 -7.5357501e+03 2.7231175e+04
+7.6543961e+01 -8.9124684e+02 2.6673117e+04
+7.0557835e+01 -3.7131320e+02 2.6156067e+04
+1.2405999e+02 -1.6518844e+02 2.5507816e+04
+1.4298641e+02 -9.2135652e+00 2.4622876e+04
+-2.7293536e+03 -1.0006495e+03 2.8210295e+04
+2.0668351e+03 -4.8584494e+03 0.0000000e+00
+9.5250178e-03 -6.4437028e-02 -4.0078118e-02
+1.9968014e-01 -1.1909278e+00 -6.2918298e-01
+3.8113501e+00 -2.0303140e+01 -7.5658144e+00
+7.2658584e+01 -3.5818654e+02 -8.5919101e+01
+3.0735303e+03 -9.8874851e+03 1.6826362e+02
+8.6549183e+03 -3.1905532e+04 1.2977603e+03
+1.5492672e+04 -5.7666629e+04 3.6117167e+03
+2.1648700e+04 -7.9470101e+04 7.0170743e+03
+2.5868090e+04 -9.2659221e+04 1.1350855e+04
+2.7781343e+04 -9.6341290e+04 1.6503923e+04
+2.7606024e+04 -9.2160092e+04 2.2349144e+04
+2.5721968e+04 -8.2250336e+04 2.8689171e+04
+2.2435923e+04 -6.8185510e+04 3.5221197e+04
+1.8005314e+04 -5.1331734e+04 4.1468207e+04
+1.2802608e+04 -3.3617428e+04 4.6720983e+04
+7.4729234e+03 -1.7615464e+04 5.0106945e+04
+3.0526883e+03 -5.7976495e+03 5.1148227e+04
+1.1301210e+02 -5.6010027e+02 5.0607740e+04
+8.5649221e+01 -1.9931665e+02 4.9940593e+04
+1.5289676e+02 -6.9882291e+01 4.9009899e+04
+1.4349767e+02 3.3963303e+01 4.7735325e+04
+-4.6603713e+03 -5.0486826e+02 5.4777413e+04
+4.4380616e+03 -3.6811826e+03 0.0000000e+00
+1.2905883e-02 -3.7286855e-02 -1.5318536e-02
+2.6947330e-01 -7.2216331e-01 -2.4040838e-01
+5.1124774e+00 -1.2856790e+01 -3.1302476e+00
+9.6738052e+01 -2.3250895e+02 -4.3801764e+01
+4.0497291e+03 -7.1204942e+03 7.2256014e+02
+1.1385866e+04 -2.3659058e+04 2.5350512e+03
+2.0388691e+04 -4.3048408e+04 5.9000383e+03
+2.8523329e+04 -5.9393383e+04 1.0854957e+04
+3.4144563e+04 -6.9224349e+04 1.7248847e+04
+3.6756767e+04 -7.1921207e+04 2.4900184e+04
+3.6626926e+04 -6.8738396e+04 3.3574330e+04
+3.4232348e+04 -6.1286021e+04 4.2933709e+04
+2.9957456e+04 -5.0750137e+04 5.2490743e+04
+2.4130030e+04 -3.8147920e+04 6.1543146e+04
+1.7234218e+04 -2.4896214e+04 6.9139324e+04
+1.0120616e+04 -1.2887815e+04 7.4220967e+04
+4.1719304e+03 -4.0480612e+03 7.6230951e+04
+1.4325695e+02 -3.3919849e+02 7.5735217e+04
+9.5729635e+01 -1.0791317e+02 7.4985713e+04
+1.7302823e+02 -2.8029664e+01 7.3829392e+04
+1.2890684e+02 4.3891854e+01 7.2208096e+04
+-6.5791895e+03 -1.0601332e+02 8.3353013e+04
+7.3392080e+03 -2.9098397e+03 0.0000000e+00
+1.5309801e-02 -1.9617258e-02 -3.9812121e-03
+3.1846838e-01 -3.8868066e-01 -5.6857305e-02
+6.0148541e+00 -7.0343465e+00 -6.6083307e-01
+1.1327471e+02 -1.2802042e+02 -8.3301216e+00
+4.7467807e+03 -4.2807571e+03 1.1848479e+03
+1.3411680e+04 -1.4512474e+04 3.6106302e+03
+2.4069616e+04 -2.6539023e+04 7.8658507e+03
+3.3721785e+04 -3.6652828e+04 1.4098071e+04
+4.0417830e+04 -4.2711313e+04 2.2180079e+04
+4.3563918e+04 -4.4350631e+04 3.1879142e+04
+4.3466889e+04 -4.2357429e+04 4.2873600e+04
+4.0682083e+04 -3.7733379e+04 5.4711784e+04
+3.5655655e+04 -3.1216199e+04 6.6759269e+04
+2.8768439e+04 -2.3433232e+04 7.8136900e+04
+2.0586351e+04 -1.5249671e+04 8.7702535e+04
+1.2113042e+04 -7.8251158e+03 9.4231381e+04
+4.9974751e+03 -2.3857262e+03 9.7021020e+04
+1.6383264e+02 -1.8944136e+02 9.6534139e+04
+1.0112095e+02 -6.4548890e+01 9.5689087e+04
+1.8459479e+02 -2.3214482e+01 9.4323090e+04
+1.0556141e+02 1.9559952e+01 9.2402197e+04
+-8.2404822e+03 2.0878469e+02 1.0729842e+05
+1.0302273e+04 -1.9382883e+03 0.0000000e+00
+1.6699293e-02 -6.1256728e-03 1.2317507e-03
+3.4663240e-01 -1.2236382e-01 3.6033072e-02
+6.5313522e+00 -2.2255447e+00 8.1307775e-01
+1.2271806e+02 -4.0551795e+01 1.6737899e+01
+5.1589476e+03 -1.4271042e+03 1.4819945e+03
+1.4643533e+04 -4.8874156e+03 4.3178467e+03
+2.6328797e+04 -8.9613484e+03 9.1534717e+03
+3.6924068e+04 -1.2383590e+04 1.6203981e+04
+4.4286052e+04 -1.4429388e+04 2.5361254e+04
+4.7759029e+04 -1.4978896e+04 3.6362068e+04
+4.7676006e+04 -1.4300154e+04 4.8828848e+04
+4.4643473e+04 -1.2733141e+04 6.2236652e+04
+3.9148472e+04 -1.0528262e+04 7.5858415e+04
+3.1605769e+04 -7.8975389e+03 8.8704982e+04
+2.2630914e+04 -5.1318187e+03 9.9516049e+04
+1.3320136e+04 -2.6218525e+03 1.0695393e+05
+5.4869021e+03 -7.8881327e+02 1.1019384e+05
+1.7522243e+02 -6.3206624e+01 1.0967785e+05
+1.0372549e+02 -2.5009835e+01 1.0872474e+05
+1.9080057e+02 -1.3831885e+01 1.0716288e+05
+8.4147630e+01 -1.2442846e+00 1.0497680e+05
+-9.4574808e+03 1.5937548e+02 1.2290847e+05
+1.2850562e+04 -6.0898126e+02 0.0000000e+00
+1.7149827e-02 6.1256728e-03 2.8030339e-03
+3.5574982e-01 1.2236382e-01 6.5755689e-02
+6.6984152e+00 2.2255447e+00 1.3182435e+00
+1.2577280e+02 4.0551795e+01 2.5721104e+01
+5.2948978e+03 1.4271042e+03 1.5834408e+03
+1.5055712e+04 4.8874156e+03 4.5616838e+03
+2.7088195e+04 8.9613484e+03 9.5967191e+03
+3.8002288e+04 1.2383590e+04 1.6925872e+04
+4.5588803e+04 1.4429388e+04 2.6447996e+04
+4.9170915e+04 1.4978896e+04 3.7889672e+04
+4.9090783e+04 1.4300154e+04 5.0854059e+04
+4.5972817e+04 1.2733141e+04 6.4791086e+04
+4.0318528e+04 1.0528262e+04 7.8942333e+04
+3.2554515e+04 7.8975389e+03 9.2281844e+04
+2.3312993e+04 5.1318187e+03 1.0350984e+05
+1.3720989e+04 2.6218525e+03 1.1124884e+05
+5.6472496e+03 7.8881327e+02 1.1462654e+05
+1.7891084e+02 6.3206624e+01 1.1408848e+05
+1.0472073e+02 2.5009835e+01 1.1308029e+05
+1.9318563e+02 1.3831898e+01 1.1142425e+05
+7.5907125e+01 1.2450376e+00 1.0910979e+05
+-9.9195795e+03 -1.5936730e+02 1.2829776e+05
+1.3942195e+04 6.0898740e+02 0.0000000e+00
+1.6699293e-02 1.9617258e-02 1.2317507e-03
+3.4663240e-01 3.8868066e-01 3.6033072e-02
+6.5313522e+00 7.0343465e+00 8.1307775e-01
+1.2271806e+02 1.2802042e+02 1.6737899e+01
+5.1589476e+03 4.2807571e+03 1.4819945e+03
+1.4643533e+04 1.4512474e+04 4.3178467e+03
+2.6328797e+04 2.6539023e+04 9.1534717e+03
+3.6924068e+04 3.6652828e+04 1.6203981e+04
+4.4286052e+04 4.2711313e+04 2.5361254e+04
+4.7759029e+04 4.4350631e+04 3.6362068e+04
+4.7676006e+04 4.2357429e+04 4.8828848e+04
+4.4643473e+04 3.7733379e+04 6.2236652e+04
+3.9148472e+04 3.1216199e+04 7.5858415e+04
+3.1605769e+04 2.3433232e+04 8.8704982e+04
+2.2630914e+04 1.5249671e+04 9.9516049e+04
+1.3320136e+04 7.8251158e+03 1.0695393e+05
+5.4869021e+03 2.3857262e+03 1.1019384e+05
+1.7522243e+02 1.8944136e+02 1.0967785e+05
+1.0372549e+02 6.4548890e+01 1.0872474e+05
+1.9080056e+02 2.3214459e+01 1.0716288e+05
+8.4147152e+01 -1.9560818e+01 1.0497679e+05
+-9.4574864e+03 -2.0877603e+02 1.2290846e+05
+1.2850562e+04 1.9382953e+03 0.0000000e+00
+1.5309801e-02 3.7286855e-02 -3.9812121e-03
+3.1846838e-01 7.2216331e-01 -5.6857305e-02
+6.0148541e+00 1.2856790e+01 -6.6083307e-01
+1.1327471e+02 2.3250895e+02 -8.3301216e+00
+4.7467807e+03 7.1204942e+03 1.1848479e+03
+1.3411680e+04 2.3659058e+04 3.6106302e+03
+2.4069616e+04 4.3048408e+04 7.8658507e+03
+3.3721785e+04 5.9393383e+04 1.4098071e+04
+4.0417830e+04 6.9224349e+04 2.2180079e+04
+4.3563918e+04 7.1921207e+04 3.1879142e+04
+4.3466889e+04 6.8738396e+04 4.2873600e+04
+4.0682083e+04 6.1286021e+04 5.4711784e+04
+3.5655655e+04 5.0750137e+04 6.6759269e+04
+2.8768439e+04 3.8147920e+04 7.8136900e+04
+2.0586351e+04 2.4896214e+04 8.7702535e+04
+1.2113042e+04 1.2887815e+04 9.4231381e+04
+4.9974751e+03 4.0480612e+03 9.7021020e+04
+1.6383264e+02 3.3919849e+02 9.6534139e+04
+1.0112095e+02 1.0791317e+02 9.5689087e+04
+1.8459480e+02 2.8029653e+01 9.4323090e+04
+1.0556181e+02 -4.3891984e+01 9.2402199e+04
+-8.2404876e+03 1.0601193e+02 1.0729840e+05
+1.0302254e+04 2.9098407e+03 0.0000000e+00
+1.2905883e-02 6.4437028e-02 -1.5318536e-02
+2.6947330e-01 1.1909278e+00 -2.4040838e-01
+5.1124774e+00 2.0303140e+01 -3.1302476e+00
+9.6738052e+01 3.5818654e+02 -4.3801764e+01
+4.0497291e+03 9.8874851e+03 7.2256014e+02
+1.1385866e+04 3.1905532e+04 2.5350512e+03
+2.0388691e+04 5.7666629e+04 5.9000383e+03
+2.8523329e+04 7.9470101e+04 1.0854957e+04
+3.4144563e+04 9.2659221e+04 1.7248847e+04
+3.6756767e+04 9.6341290e+04 2.4900184e+04
+3.6626926e+04 9.2160092e+04 3.3574330e+04
+3.4232348e+04 8.2250336e+04 4.2933709e+04
+2.9957456e+04 6.8185510e+04 5.2490743e+04
+2.4130030e+04 5.1331734e+04 6.1543146e+04
+1.7234218e+04 3.3617428e+04 6.9139324e+04
+1.0120616e+04 1.7615464e+04 7.4220967e+04
+4.1719304e+03 5.7976495e+03 7.6230951e+04
+1.4325695e+02 5.6010027e+02 7.5735217e+04
+9.5729636e+01 1.9931665e+02 7.4985713e+04
+1.7302824e+02 6.9882269e+01 7.3829392e+04
+1.2890702e+02 -3.3963862e+01 7.2208095e+04
+-6.5791739e+03 5.0487475e+02 8.3352977e+04
+7.3391692e+03 3.6812239e+03 0.0000000e+00
+9.5250178e-03 1.1355455e-01 -4.0078118e-02
+1.9968014e-01 1.9673872e+00 -6.2918298e-01
+3.8113501e+00 3.0775229e+01 -7.5658144e+00
+7.2658584e+01 5.0320613e+02 -8.5919101e+01
+3.0735303e+03 1.2423146e+04 1.6826362e+02
+8.6549183e+03 3.8676378e+04 1.2977603e+03
+1.5492672e+04 6.9430713e+04 3.6117167e+03
+2.1648700e+04 9.5605120e+04 7.0170743e+03
+2.5868090e+04 1.1154030e+05 1.1350855e+04
+2.7781343e+04 1.1606313e+05 1.6503923e+04
+2.7606024e+04 1.1111300e+05 2.2349144e+04
+2.5721968e+04 9.9240787e+04 2.8689171e+04
+2.2435923e+04 8.2325294e+04 3.5221197e+04
+1.8005314e+04 6.2023602e+04 4.1468207e+04
+1.2802608e+04 4.0715470e+04 4.6720983e+04
+7.4729234e+03 2.1593369e+04 5.0106945e+04
+3.0526883e+03 7.5357501e+03 5.1148227e+04
+1.1301210e+02 8.9124684e+02 5.0607740e+04
+8.5649222e+01 3.7131320e+02 4.9940593e+04
+1.5289680e+02 1.6518843e+02 4.9009899e+04
+1.4349732e+02 9.2140916e+00 4.7735326e+04
+-4.6603780e+03 1.0006711e+03 5.4777411e+04
+4.4380414e+03 4.8584796e+03 0.0000000e+00
+5.6142712e-03 2.0881557e-01 -8.9778270e-02
+1.1722629e-01 3.4921909e+00 -1.5009832e+00
+2.2392820e+00 4.9715823e+01 -1.8281121e+01
+4.2923254e+01 6.9362644e+02 -1.6734056e+02
+1.8954076e+03 1.4393781e+04 -3.3910320e+02
+5.4782614e+03 4.3276824e+04 2.2584928e+02
+9.8785115e+03 7.7353073e+04 1.5274663e+03
+1.3821206e+04 1.0651819e+05 3.3927188e+03
+1.6481734e+04 1.2436970e+05 5.6788288e+03
+1.7628542e+04 1.2948301e+05 8.3602829e+03
+1.7423105e+04 1.2400600e+05 1.1412151e+04
+1.6135806e+04 1.1077763e+05 1.4774199e+04
+1.3984198e+04 9.1865328e+04 1.8340548e+04
+1.1141315e+04 6.9122650e+04 2.1887808e+04
+7.8472805e+03 4.5286140e+04 2.4989693e+04
+4.5120346e+03 2.4109948e+04 2.6965407e+04
+1.7890478e+03 8.8868111e+03 2.7231175e+04
+7.6543961e+01 1.3083488e+03 2.6673117e+04
+7.0557836e+01 5.6970985e+02 2.6156067e+04
+1.2405999e+02 2.7621895e+02 2.5507816e+04
+1.4298569e+02 7.7309399e+01 2.4622874e+04
+-2.7293961e+03 1.2803806e+03 2.8210299e+04
+2.0667887e+03 5.0719268e+03 0.0000000e+00
+2.2331166e-03 3.6128498e-01 -1.5047334e-01
+4.4272120e-02 6.2768275e+00 -2.8965293e+00
+8.1166532e-01 8.9613560e+01 -4.2086797e+01
+1.5156088e+01 1.1122560e+03 -4.4701670e+02
+7.7430183e+02 1.5205216e+04 -5.4412267e+02
+2.4807553e+03 4.5312676e+04 -3.3807337e+02
+4.6158897e+03 8.0959669e+04 1.4338885e+02
+6.5285299e+03 1.1151509e+05 8.1117241e+02
+7.7897358e+03 1.3027407e+05 1.5411911e+03
+8.2845193e+03 1.3563028e+05 2.3607502e+03
+8.1085194e+03 1.2988484e+05 3.2891116e+03
+7.4192952e+03 1.1603173e+05 4.3370984e+03
+6.3450112e+03 9.6155993e+04 5.5463450e+03
+4.9775573e+03 7.2140610e+04 6.9301805e+03
+3.4338612e+03 4.6890085e+04 8.4082719e+03
+1.9054894e+03 2.4573707e+04 9.6481483e+03
+6.9383899e+02 9.1077798e+03 9.9272747e+03
+4.1033909e+01 1.6366731e+03 9.5196565e+03
+4.8202528e+01 5.4000427e+02 9.3924632e+03
+8.4725928e+01 2.3074835e+02 9.1685165e+03
+1.1515513e+02 6.7655501e+01 8.7449516e+03
+-1.2508200e+03 8.3191238e+02 1.0588121e+04
+7.2717811e+02 3.6474252e+03 0.0000000e+00
+4.9168645e-04 4.6369014e-01 -1.0260433e-01
+6.7690413e-03 8.5059936e+00 -2.3417273e+00
+7.9605206e-02 1.2783253e+02 -4.0805935e+01
+9.7599721e-01 1.6266696e+03 -5.5934062e+02
+1.3485114e+01 1.5307560e+04 -7.0263765e+02
+5.1095941e+01 4.5089349e+04 -6.0582797e+02
+1.1286605e+02 8.0452349e+04 -3.3808109e+02
+1.8549518e+02 1.1088231e+05 -5.8777849e+01
+2.4868444e+02 1.2967076e+05 9.9217623e+01
+2.8677720e+02 1.3502709e+05 2.0943244e+02
+2.9280205e+02 1.2932091e+05 2.9374125e+02
+2.6990209e+02 1.1556621e+05 3.4934111e+02
+2.2832061e+02 9.5766246e+04 4.1853270e+02
+1.7818099e+02 7.1759660e+04 5.5089969e+02
+1.2817563e+02 4.6449017e+04 8.0012187e+02
+8.2604621e+01 2.4076221e+04 1.1654580e+03
+4.2781360e+01 8.6528032e+03 1.5455986e+03
+1.8466445e+01 1.5396787e+03 1.6026677e+03
+2.1892214e+01 2.5837598e+02 1.8330428e+03
+4.0437441e+01 5.0724921e+01 1.9188419e+03
+6.3624707e+01 -7.7416314e+00 1.8249864e+03
+-4.5394577e+02 2.4434038e+02 2.7838346e+03
+4.4053345e+02 1.8898401e+03 0.0000000e+00
+1.8522622e-04 3.8122194e-01 8.1486138e-02
+1.0650988e-03 7.4491788e+00 1.1096588e+00
+-1.4462495e-02 1.1988431e+02 8.4379518e+00
+-4.1538090e-01 1.6231245e+03 1.7823821e+00
+-4.1011258e+00 1.5473014e+04 -2.6969262e+02
+-6.6451026e+00 4.4927526e+04 -4.3937268e+02
+9.7614147e+00 7.9644840e+04 -2.5897668e+02
+5.1927365e+01 1.0974150e+05 -3.0441799e+01
+1.0571534e+02 1.2846255e+05 5.1986335e+01
+1.5015961e+02 1.3373950e+05 1.1380809e+02
+1.6865388e+02 1.2808167e+05 1.6247117e+02
+1.5893275e+02 1.1452411e+05 1.6677175e+02
+1.3325755e+02 9.4931313e+04 1.6509951e+02
+1.0570434e+02 7.1072658e+04 1.9928761e+02
+8.5784208e+01 4.5841711e+04 3.2128292e+02
+7.1232622e+01 2.3593267e+04 4.9402297e+02
+4.9295264e+01 8.5100916e+03 4.8755242e+02
+2.1656422e+01 1.7235692e+03 2.5560907e+02
+1.1546751e+01 2.4267899e+02 2.4902509e+02
+1.5132704e+01 2.2774632e+01 2.4887719e+02
+2.5386125e+01 -6.2783620e+00 1.9549376e+02
+-1.0344360e+02 5.6138509e+01 5.0888821e+02
+6.1183997e+02 6.3793611e+02 0.0000000e+00
+2.0805959e-04 1.5784017e-01 2.2226159e-01
+2.2744135e-03 3.4505781e+00 4.1862864e+00
+1.0233576e-02 6.4686906e+01 5.8567496e+01
+-7.4382987e-02 1.0966175e+03 5.7001577e+02
+-7.9873208e-01 1.5715353e+04 1.4485218e+02
+4.5870142e+00 4.4822301e+04 -3.1442378e+02
+3.9986449e+01 7.8469015e+04 -2.0389404e+02
+1.1383395e+02 1.0799661e+05 -8.4226809e+00
+2.0342904e+02 1.2653445e+05 8.5302964e+00
+2.7574784e+02 1.3161638e+05 5.2018618e+01
+3.0415590e+02 1.2601096e+05 1.0323309e+02
+2.8484084e+02 1.1277059e+05 9.5436847e+01
+2.3851316e+02 9.3533085e+04 7.2788088e+01
+1.8939531e+02 6.9969868e+04 6.7823093e+01
+1.5306203e+02 4.4958330e+04 1.3003241e+02
+1.2534060e+02 2.2962765e+04 2.3630316e+02
+8.6478269e+01 8.2839543e+03 2.0646397e+02
+3.9375974e+01 1.7950953e+03 4.7956685e+01
+1.3970995e+01 2.4169757e+02 2.2736749e+01
+6.7641044e+00 1.7092928e+01 1.7179957e+01
+8.0434959e+00 -5.9195390e-01 -1.1420010e+00
+1.4176920e+01 1.0339007e+01 1.1243625e+02
+5.2221485e+02 9.9041731e+01 0.0000000e+00
+1.1188084e-04 0.0000000e+00 1.5717794e-01
+1.5590407e-03 0.0000000e+00 3.5849552e+00
+9.5485970e-03 0.0000000e+00 6.7643830e+01
+-3.5156734e-01 0.0000000e+00 1.1497367e+03
+-2.9865945e+01 1.6041243e+04 5.7012719e+02
+-8.8139510e+01 4.4838067e+04 -1.9462539e+02
+-1.0758538e+02 7.7013847e+04 -1.6986942e+02
+-5.5503052e+01 1.0567751e+05 1.8978564e+01
+4.6536833e+01 1.2390354e+05 -3.3346356e+01
+1.5280337e+02 1.2862817e+05 -1.5828846e+01
+2.1701429e+02 1.2302602e+05 4.9151290e+01
+2.2478848e+02 1.1022610e+05 3.3968228e+01
+1.9750757e+02 9.1504351e+04 -3.2346913e+00
+1.6417645e+02 6.8385707e+04 -3.6085014e+01
+1.5002125e+02 4.3723221e+04 -1.8952968e+01
+1.4911902e+02 2.2079926e+04 6.0304481e+01
+1.2111462e+02 7.8641228e+03 6.3656381e+01
+6.3055763e+01 1.7074063e+03 -6.5835476e+00
+2.2978656e+01 1.9356309e+02 -6.1181933e+00
+7.3227322e+00 -1.7433641e-02 -6.5551276e-01
+3.1606605e+00 -1.2924174e+00 -3.1419106e+00
+1.3970158e+01 0.0000000e+00 2.9256246e+01
+1.7484725e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.2475551e+03 1.5698691e+04 2.8758371e+03
+-4.1315610e+03 5.5241577e+04 1.4900880e+03
+-7.3424554e+03 9.5029317e+04 -7.3826146e+02
+-1.0167490e+04 1.2547694e+05 1.3274150e+02
+-1.1992857e+04 1.4649734e+05 7.0147475e+02
+-1.2482381e+04 1.5238178e+05 1.5133744e+01
+-1.1779989e+04 1.4412956e+05 -1.4627060e+02
+-1.0225167e+04 1.2793165e+05 -3.1823795e+01
+-8.2896691e+03 1.0562689e+05 2.4081719e+02
+-6.3658122e+03 7.8828904e+04 6.9987484e+02
+-4.4692277e+03 5.0672896e+04 9.5152642e+02
+-2.5963390e+03 2.5616307e+04 9.9679571e+02
+-1.1320172e+03 9.3009579e+03 6.8711368e+02
+-3.8634508e+02 2.4075689e+03 2.3553482e+02
+-1.0096646e+02 4.9377648e+02 5.7011800e+01
+1.0081124e+01 1.1523054e+02 1.2376128e+01
+1.9175481e+01 2.4424323e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.7352412e+03 0.0000000e+00 2.2264176e+03
+6.7510157e+03 0.0000000e+00 4.7860441e+03
+1.2599926e+04 0.0000000e+00 1.3949207e+03
+1.6066788e+04 0.0000000e+00 -8.5172841e+02
+1.7117192e+04 0.0000000e+00 2.0263459e+03
+1.6865406e+04 0.0000000e+00 3.2376260e+03
+1.5311353e+04 0.0000000e+00 2.2529923e+03
+1.2289119e+04 0.0000000e+00 2.2618972e+03
+8.8050967e+03 0.0000000e+00 2.6033785e+03
+6.1867173e+03 0.0000000e+00 3.4384490e+03
+4.1635333e+03 0.0000000e+00 4.9827032e+03
+2.1050452e+03 0.0000000e+00 5.0551929e+03
+7.3387588e+02 0.0000000e+00 3.2857940e+03
+3.9141492e+02 0.0000000e+00 1.5541234e+03
+4.7250466e+02 0.0000000e+00 5.9741808e+02
+4.5992720e+02 0.0000000e+00 1.5415952e+02
+1.9757297e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.3009541e+03 -5.5036339e+03 8.4110475e+02
+-4.7996985e+03 -1.9601438e+04 2.0205398e+03
+-8.6520821e+03 -3.3201538e+04 7.4612299e+02
+-1.1515961e+04 -4.3640229e+04 -4.0008829e+02
+-1.3362752e+04 -5.1730601e+04 4.5701143e+02
+-1.3806539e+04 -5.4458575e+04 5.8234964e+02
+-1.2806685e+04 -5.1941664e+04 -1.4109937e+02
+-1.1182686e+04 -4.6865659e+04 -1.3379487e+02
+-9.2876411e+03 -3.9212159e+04 2.1139187e+02
+-7.1940150e+03 -2.8918937e+04 6.1574545e+02
+-4.9627510e+03 -1.7835026e+04 1.0567674e+03
+-2.7758956e+03 -8.5143443e+03 1.0360512e+03
+-1.0837947e+03 -2.8829969e+03 6.4714734e+02
+-2.6207932e+02 -5.8550803e+02 3.2085097e+02
+1.9921580e+01 2.3270678e+01 1.2388720e+02
+1.3277179e+02 5.9109490e+01 4.0963557e+01
+9.9021640e+01 1.6482194e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.1674047e+02 -8.4549227e+03 1.3870042e+03
+9.0561144e+02 -2.3749827e+04 4.9823809e+02
+1.7965127e+03 -4.1226288e+04 -6.1605708e+02
+2.9754270e+03 -5.7317868e+04 -8.1371053e+01
+4.0167751e+03 -6.8066220e+04 2.4457511e+02
+4.6337943e+03 -7.1417441e+04 8.7240800e+01
+4.7293135e+03 -6.8708556e+04 3.4485784e+02
+4.3320127e+03 -6.1548735e+04 4.7011166e+02
+3.6403431e+03 -5.0910992e+04 2.3832324e+02
+2.8042345e+03 -3.7977667e+04 1.2684448e+02
+2.0241300e+03 -2.4468907e+04 2.6731898e+02
+1.4552471e+03 -1.2742525e+04 4.4366686e+02
+9.9687974e+02 -4.9068518e+03 3.3837267e+02
+5.5769374e+02 -1.2705134e+03 7.9118737e+01
+2.4556739e+02 -2.3215969e+02 -1.1974121e+01
+9.8263019e+01 -3.4900753e+01 -6.1540310e+00
+3.3922639e+01 -4.4204212e+00 0.0000000e+00
+0 0 0
+0 0 0
+4.1485639e-04 -8.2210289e-02 8.1907314e-02
+1.1246399e-02 -1.8017370e+00 1.8739569e+00
+2.6668160e-01 -3.3877585e+01 3.5494408e+01
+5.8583188e+00 -5.7631546e+02 6.0559999e+02
+1.1743519e+02 -8.2961136e+03 2.9948967e+02
+3.4427035e+02 -2.3782666e+04 -1.0008142e+02
+6.1556138e+02 -4.1972676e+04 -7.6840411e+01
+8.4306974e+02 -5.8324539e+04 3.1256645e+01
+9.7009573e+02 -6.8975471e+04 1.6948754e+01
+9.9170600e+02 -7.2285990e+04 4.6593242e+01
+9.2119230e+02 -6.9462602e+04 9.6450942e+01
+7.8131450e+02 -6.2098316e+04 8.9486730e+01
+6.1673020e+02 -5.1301615e+04 6.0861055e+01
+4.5838443e+02 -3.8257739e+04 4.6713728e+01
+3.0664672e+02 -2.4651930e+04 7.3114998e+01
+1.6576374e+02 -1.2803296e+04 1.1723254e+02
+6.1852138e+01 -4.8256204e+03 9.5253784e+01
+1.3672374e+01 -1.1500171e+03 2.4140668e+01
+2.3622633e+00 -1.9358032e+02 6.1697207e+00
+1.2697433e+00 -2.6766604e+01 4.0883439e+00
+2.3416456e+00 -4.0935428e+00 4.5843390e+00
+3.3271837e+01 1.6101769e+00 -1.6304345e+01
+8.8946223e+01 -4.0692154e+01 0.0000000e+00
+7.6900967e-04 -1.9836432e-01 1.1559308e-01
+1.8091146e-02 -3.8853182e+00 2.1833576e+00
+3.5598090e-01 -6.2694986e+01 3.0655010e+01
+5.8632843e+00 -8.5120805e+02 2.9960994e+02
+6.6255669e+01 -8.1401469e+03 7.6588846e+01
+1.9694460e+02 -2.3737631e+04 -1.6080336e+02
+3.5246855e+02 -4.2349499e+04 -9.6462666e+01
+4.7677699e+02 -5.8794922e+04 1.0976951e+01
+5.4013856e+02 -6.9328701e+04 2.7497216e+01
+5.4422112e+02 -7.2587069e+04 6.0103068e+01
+4.9933672e+02 -6.9689773e+04 9.2093194e+01
+4.1896347e+02 -6.2227948e+04 8.7601677e+01
+3.2754942e+02 -5.1377811e+04 7.4759865e+01
+2.4177914e+02 -3.8313569e+04 7.8205446e+01
+1.5912623e+02 -2.4700868e+04 1.2107902e+02
+8.0341692e+01 -1.2814140e+04 1.7692191e+02
+2.3107513e+01 -4.7323643e+03 1.4703616e+02
+4.3491622e-01 -1.0072667e+03 4.3226725e+01
+-1.7928201e+00 -1.5834426e+02 2.3754495e+01
+-9.0824423e-01 -2.3671125e+01 2.8331595e+01
+1.7085035e+00 -6.9993679e+00 3.7573412e+01
+1.1521233e+02 1.2003666e+01 -7.3847667e+01
+1.7715432e+02 -1.4439138e+02 0.0000000e+00
+7.2536592e-04 -2.4100608e-01 4.2101619e-02
+1.5445218e-02 -4.4314425e+00 5.7384573e-01
+2.7516676e-01 -6.6769711e+01 4.3589415e+00
+4.0540267e+00 -8.5190558e+02 5.8706365e-01
+3.9660983e+01 -8.0410240e+03 -1.4229801e+02
+1.2075160e+02 -2.3778809e+04 -2.2851696e+02
+2.1861820e+02 -4.2657504e+04 -1.2936869e+02
+2.9735874e+02 -5.9163732e+04 -5.9897427e+00
+3.3792894e+02 -6.9609341e+04 4.2437300e+01
+3.4115924e+02 -7.2817056e+04 8.1423845e+01
+3.1356611e+02 -6.9863849e+04 1.1058772e+02
+2.6375878e+02 -6.2334661e+04 1.1247457e+02
+2.0679196e+02 -5.1448892e+04 1.1002150e+02
+1.5278602e+02 -3.8381267e+04 1.3063796e+02
+1.0050153e+02 -2.4785665e+04 2.0071813e+02
+5.0854663e+01 -1.2885350e+04 2.9230574e+02
+1.4792850e+01 -4.6884422e+03 2.8288605e+02
+6.2048228e-01 -8.5761986e+02 1.5427513e+02
+-1.0208934e+00 -1.5609048e+02 1.6458899e+02
+-1.3408812e+00 -4.7175093e+01 2.0456652e+02
+3.8175382e+00 -2.7631900e+01 2.4676656e+02
+2.6815904e+02 -4.9599397e+01 -6.3251686e+01
+2.6474185e+01 -3.4887373e+02 0.0000000e+00
+6.5464231e-04 -1.8756518e-01 -5.3603852e-02
+1.2531713e-02 -3.2659739e+00 -1.2248350e+00
+2.0571296e-01 -4.6738097e+01 -2.1382557e+01
+2.9472247e+00 -5.8140752e+02 -2.9385185e+02
+3.2171647e+01 -7.9829839e+03 -3.7057850e+02
+1.0290168e+02 -2.3883576e+04 -3.1761648e+02
+1.9093832e+02 -4.2879795e+04 -1.7339734e+02
+2.6527566e+02 -5.9393477e+04 -2.3432918e+01
+3.0784407e+02 -6.9756060e+04 6.4126119e+01
+3.1700099e+02 -7.2910652e+04 1.2749901e+02
+2.9785889e+02 -6.9916778e+04 1.7537064e+02
+2.5797787e+02 -6.2352445e+04 2.0507940e+02
+2.0834887e+02 -5.1463895e+04 2.4005429e+02
+1.5650015e+02 -3.8429293e+04 3.0976174e+02
+1.0366251e+02 -2.4893740e+04 4.4234974e+02
+5.3384440e+01 -1.3048450e+04 6.3467068e+02
+1.6458585e+01 -4.8685649e+03 8.4111620e+02
+2.1265702e+00 -8.9298981e+02 8.9282602e+02
+1.3107352e+00 -3.1376501e+02 1.0710820e+03
+1.9619112e+00 -1.6405068e+02 1.2264331e+03
+1.6322659e+01 -1.0198919e+02 1.3480911e+03
+5.4070255e+02 -3.4402179e+02 6.4785287e+02
+-4.4178821e+02 -7.0821779e+02 0.0000000e+00
+1.3000325e-03 -1.0849010e-01 -7.8141998e-02
+2.6019866e-02 -1.8194093e+00 -1.5064544e+00
+4.7214636e-01 -2.5987579e+01 -2.1917453e+01
+8.5026991e+00 -3.6392468e+02 -2.3274690e+02
+4.2466635e+02 -7.5817738e+03 -2.8432153e+02
+1.3657949e+03 -2.2883608e+04 -1.6932922e+02
+2.5413238e+03 -4.1072669e+04 9.8110518e+01
+3.5875453e+03 -5.6822795e+04 4.6841314e+02
+4.2679563e+03 -6.6640191e+04 8.7432418e+02
+4.5222467e+03 -6.9600629e+04 1.3265735e+03
+4.4032322e+03 -6.6715401e+04 1.8304836e+03
+3.9977629e+03 -5.9488814e+04 2.3883850e+03
+3.3857385e+03 -4.9137273e+04 3.0210359e+03
+2.6277980e+03 -3.6794961e+04 3.7364630e+03
+1.7870739e+03 -2.4004096e+04 4.4936059e+03
+9.6834705e+02 -1.2748786e+04 5.1310836e+03
+3.3853027e+02 -4.7054153e+03 5.3232427e+03
+1.6704160e+01 -7.1356855e+02 5.1681511e+03
+1.6618805e+01 -3.3346507e+02 5.2194349e+03
+2.6214707e+01 -1.9765444e+02 5.3115499e+03
+6.6437112e+01 -1.2265930e+02 5.3809355e+03
+9.6180389e+02 -5.3808100e+02 3.3623136e+03
+-1.3371963e+03 -1.1043409e+03 0.0000000e+00
+2.8910995e-03 -5.9389298e-02 -4.6377630e-02
+6.0433312e-02 -1.0340847e+00 -7.7490918e-01
+1.1528176e+00 -1.6277552e+01 -9.3984713e+00
+2.2023035e+01 -2.6794542e+02 -8.4477511e+01
+9.7906024e+02 -6.5879872e+03 -1.6191671e+02
+2.8409277e+03 -2.0569936e+04 1.6174443e+02
+5.1400700e+03 -3.7064014e+04 8.9153073e+02
+7.2120137e+03 -5.1256102e+04 1.9340309e+03
+8.6168664e+03 -6.0047844e+04 3.2065516e+03
+9.2206097e+03 -6.2670405e+04 4.6842599e+03
+9.0977223e+03 -6.0047378e+04 6.3416191e+03
+8.3892214e+03 -5.3536378e+04 8.1357679e+03
+7.2215702e+03 -4.4240980e+04 1.0002103e+04
+5.7031831e+03 -3.3174881e+04 1.1820155e+04
+3.9734416e+03 -2.1685423e+04 1.3375321e+04
+2.2589198e+03 -1.1469783e+04 1.4349433e+04
+9.0472517e+02 -4.0066753e+03 1.4535015e+04
+5.3074809e+01 -4.9272072e+02 1.4337637e+04
+5.5815232e+01 -2.2708719e+02 1.4246002e+04
+8.8023778e+01 -1.3761683e+02 1.4222000e+04
+1.7891595e+02 -8.4750049e+01 1.4148161e+04
+1.5119555e+03 -3.6158145e+02 9.7303270e+03
+-2.9085926e+03 -1.0594682e+03 0.0000000e+00
+4.8886388e-03 -3.4174940e-02 -2.0577979e-02
+1.0290225e-01 -6.3610876e-01 -3.2177606e-01
+1.9718766e+00 -1.0931060e+01 -3.8287950e+00
+3.7729316e+01 -1.9431114e+02 -4.2533811e+01
+1.6027481e+03 -5.2822932e+03 1.2255438e+02
+4.5083920e+03 -1.7075750e+04 7.7489496e+02
+8.0865102e+03 -3.0967868e+04 2.0849109e+03
+1.1329670e+04 -4.2852257e+04 4.0000955e+03
+1.3566857e+04 -5.0166816e+04 6.4203005e+03
+1.4580469e+04 -5.2315654e+04 9.2664225e+03
+1.4466499e+04 -5.0088997e+04 1.2447566e+04
+1.3423764e+04 -4.4628426e+04 1.5837818e+04
+1.1631905e+04 -3.6860266e+04 1.9261122e+04
+9.2539301e+03 -2.7623838e+04 2.2461462e+04
+6.5122764e+03 -1.8017671e+04 2.5084043e+04
+3.7701981e+03 -9.4180418e+03 2.6735027e+04
+1.5818281e+03 -3.1062979e+03 2.7305510e+04
+1.0200955e+02 -3.1860043e+02 2.7142392e+04
+1.1179312e+02 -1.3521337e+02 2.7024374e+04
+1.7681150e+02 -8.5752309e+01 2.6948595e+04
+3.3603686e+02 -6.0292866e+01 2.6731598e+04
+2.1131254e+03 -1.3038539e+02 1.9726967e+04
+-5.1296144e+03 -5.5992937e+02 0.0000000e+00
+6.6930888e-03 -2.0101946e-02 -7.8601998e-03
+1.4052612e-01 -3.9224088e-01 -1.2278090e-01
+2.6814875e+00 -7.0377410e+00 -1.5851099e+00
+5.1021237e+01 -1.2819318e+02 -2.1986252e+01
+2.1402451e+03 -3.8276739e+03 4.3287844e+02
+5.9933058e+03 -1.2730811e+04 1.4804989e+03
+1.0742281e+04 -2.3238131e+04 3.3971717e+03
+1.5060500e+04 -3.2189920e+04 6.1976632e+03
+1.8062105e+04 -3.7668309e+04 9.7816147e+03
+1.9453235e+04 -3.9252121e+04 1.4021614e+04
+1.9350825e+04 -3.7549503e+04 1.8758221e+04
+1.8007342e+04 -3.3425447e+04 2.3780248e+04
+1.5651278e+04 -2.7579954e+04 2.8806115e+04
+1.2493977e+04 -2.0640330e+04 3.3458659e+04
+8.8306416e+03 -1.3418014e+04 3.7262579e+04
+5.1483435e+03 -6.9311680e+03 3.9747977e+04
+2.1973776e+03 -2.1853712e+03 4.0801603e+04
+1.5019153e+02 -2.0168492e+02 4.0677753e+04
+1.6943921e+02 -8.6578496e+01 4.0555409e+04
+2.6857207e+02 -6.2662216e+01 4.0436775e+04
+4.9763215e+02 -5.6023153e+01 4.0063779e+04
+2.6837195e+03 -4.8206802e+01 3.0718694e+04
+-7.4063965e+03 -1.2717492e+02 0.0000000e+00
+8.0095090e-03 -1.0714280e-02 -2.0873749e-03
+1.6762650e-01 -2.1376330e-01 -2.9723079e-02
+3.1860727e+00 -3.8963332e+00 -3.4234946e-01
+6.0365544e+01 -7.1379692e+01 -4.2466778e+00
+2.5323370e+03 -2.3109459e+03 6.9346907e+02
+7.1171349e+03 -7.8392711e+03 2.0964749e+03
+1.2777621e+04 -1.4380027e+04 4.5303661e+03
+1.7933909e+04 -1.9938581e+04 8.0669038e+03
+2.1529712e+04 -2.3326519e+04 1.2613231e+04
+2.3211827e+04 -2.4293600e+04 1.8006801e+04
+2.3115349e+04 -2.3223650e+04 2.4032488e+04
+2.1536579e+04 -2.0656716e+04 3.0409260e+04
+1.8743310e+04 -1.7028976e+04 3.6770626e+04
+1.4984110e+04 -1.2728246e+04 4.2642872e+04
+1.0608981e+04 -8.2519236e+03 4.7454151e+04
+6.2001347e+03 -4.2263912e+03 5.0662281e+04
+2.6629962e+03 -1.2955465e+03 5.2106935e+04
+1.9010533e+02 -1.1759434e+02 5.1996572e+04
+2.1964081e+02 -5.7566358e+01 5.1849040e+04
+3.4890942e+02 -4.9830405e+01 5.1671893e+04
+6.3797850e+02 -5.5014452e+01 5.1138468e+04
+3.1187185e+03 -3.5958161e+01 3.9767015e+04
+-9.2374556e+03 1.1477275e+02 0.0000000e+00
+8.7802259e-03 -3.3686885e-03 5.7347593e-04
+1.8339423e-01 -6.7731141e-02 1.7779483e-02
+3.4780370e+00 -1.2401297e+00 4.1489116e-01
+6.5750912e+01 -2.2737008e+01 8.7393525e+00
+2.7665197e+03 -7.7206000e+02 8.6228134e+02
+7.8080531e+03 -2.6453436e+03 2.5038333e+03
+1.4040605e+04 -4.8651798e+03 5.2771780e+03
+1.9722985e+04 -6.7495084e+03 9.2891877e+03
+2.3690237e+04 -7.8956053e+03 1.4454090e+04
+2.5551847e+04 -8.2205162e+03 2.0588188e+04
+2.5455428e+04 -7.8554802e+03 2.7440596e+04
+2.3726280e+04 -6.9841520e+03 3.4685225e+04
+2.0658049e+04 -5.7547174e+03 4.1901389e+04
+1.6522993e+04 -4.2983905e+03 4.8554309e+04
+1.1704975e+04 -2.7827070e+03 5.4011032e+04
+6.8453867e+03 -1.4192113e+03 5.7678601e+04
+2.9481598e+03 -4.2972205e+02 5.9351519e+04
+2.1800779e+02 -4.0059299e+01 5.9231199e+04
+2.5685894e+02 -2.2231497e+01 5.9042730e+04
+4.0888026e+02 -2.1645772e+01 5.8796466e+04
+7.4068621e+02 -2.6579983e+01 5.8111493e+04
+3.3402757e+03 -1.8037231e+01 4.5295799e+04
+-1.0509312e+04 1.0518862e+02 0.0000000e+00
+9.0312690e-03 3.3686885e-03 1.3811814e-03
+1.8851893e-01 6.7731141e-02 3.3149790e-02
+3.5727703e+00 1.2401297e+00 6.7853540e-01
+6.7496777e+01 2.2737008e+01 1.3480541e+01
+2.8440579e+03 7.7206000e+02 9.2020047e+02
+8.0403902e+03 2.6453436e+03 2.6448348e+03
+1.4467349e+04 4.8651798e+03 5.5353217e+03
+2.0328475e+04 6.7495084e+03 9.7101174e+03
+2.4421552e+04 7.8956053e+03 1.5086158e+04
+2.6343366e+04 8.2205162e+03 2.1472675e+04
+2.6246016e+04 7.8554802e+03 2.8606481e+04
+2.4464991e+04 6.9841520e+03 3.6146003e+04
+2.1303017e+04 5.7547174e+03 4.3652079e+04
+1.7040542e+04 4.2983905e+03 5.0569271e+04
+1.2072898e+04 2.7827070e+03 5.6243952e+04
+7.0615314e+03 1.4192113e+03 6.0064987e+04
+3.0441165e+03 4.2972205e+02 6.1808676e+04
+2.2845417e+02 4.0059299e+01 6.1679014e+04
+2.7133654e+02 2.2231497e+01 6.1467936e+04
+4.3230664e+02 2.1645760e+01 6.1185523e+04
+7.8017438e+02 2.6579576e+01 6.0428096e+04
+3.3959358e+03 1.8022144e+01 4.7076519e+04
+-1.0995078e+04 -1.0519971e+02 0.0000000e+00
+8.7802259e-03 1.0714280e-02 5.7347593e-04
+1.8339423e-01 2.1376330e-01 1.7779483e-02
+3.4780370e+00 3.8963332e+00 4.1489116e-01
+6.5750912e+01 7.1379692e+01 8.7393525e+00
+2.7665197e+03 2.3109459e+03 8.6228134e+02
+7.8080531e+03 7.8392711e+03 2.5038333e+03
+1.4040605e+04 1.4380027e+04 5.2771780e+03
+1.9722985e+04 1.9938581e+04 9.2891877e+03
+2.3690237e+04 2.3326519e+04 1.4454090e+04
+2.5551847e+04 2.4293600e+04 2.0588188e+04
+2.5455428e+04 2.3223650e+04 2.7440596e+04
+2.3726280e+04 2.0656716e+04 3.4685225e+04
+2.0658049e+04 1.7028976e+04 4.1901389e+04
+1.6522993e+04 1.2728246e+04 4.8554309e+04
+1.1704975e+04 8.2519236e+03 5.4011032e+04
+6.8453867e+03 4.2263912e+03 5.7678601e+04
+2.9481598e+03 1.2955465e+03 5.9351519e+04
+2.1800779e+02 1.1759434e+02 5.9231199e+04
+2.5685894e+02 5.7566358e+01 5.9042730e+04
+4.0888027e+02 4.9830398e+01 5.8796466e+04
+7.4068668e+02 5.5014482e+01 5.8111491e+04
+3.3402957e+03 3.5969411e+01 4.5295808e+04
+-1.0509322e+04 -1.1476202e+02 0.0000000e+00
+8.0095090e-03 2.0101946e-02 -2.0873749e-03
+1.6762650e-01 3.9224088e-01 -2.9723079e-02
+3.1860727e+00 7.0377410e+00 -3.4234946e-01
+6.0365544e+01 1.2819318e+02 -4.2466778e+00
+2.5323370e+03 3.8276739e+03 6.9346907e+02
+7.1171349e+03 1.2730811e+04 2.0964749e+03
+1.2777621e+04 2.3238131e+04 4.5303661e+03
+1.7933909e+04 3.2189920e+04 8.0669038e+03
+2.1529712e+04 3.7668309e+04 1.2613231e+04
+2.3211827e+04 3.9252121e+04 1.8006801e+04
+2.3115349e+04 3.7549503e+04 2.4032488e+04
+2.1536579e+04 3.3425447e+04 3.0409260e+04
+1.8743310e+04 2.7579954e+04 3.6770626e+04
+1.4984110e+04 2.0640330e+04 4.2642872e+04
+1.0608981e+04 1.3418014e+04 4.7454151e+04
+6.2001347e+03 6.9311680e+03 5.0662281e+04
+2.6629962e+03 2.1853712e+03 5.2106935e+04
+1.9010534e+02 2.0168492e+02 5.1996572e+04
+2.1964081e+02 8.6578496e+01 5.1849040e+04
+3.4890943e+02 6.2662199e+01 5.1671893e+04
+6.3797872e+02 5.6022665e+01 5.1138468e+04
+3.1187207e+03 4.8190037e+01 3.9767004e+04
+-9.2374782e+03 1.2720110e+02 0.0000000e+00
+6.6930888e-03 3.4174940e-02 -7.8601998e-03
+1.4052612e-01 6.3610876e-01 -1.2278090e-01
+2.6814875e+00 1.0931060e+01 -1.5851099e+00
+5.1021237e+01 1.9431114e+02 -2.1986252e+01
+2.1402451e+03 5.2822932e+03 4.3287844e+02
+5.9933058e+03 1.7075750e+04 1.4804989e+03
+1.0742281e+04 3.0967868e+04 3.3971717e+03
+1.5060500e+04 4.2852257e+04 6.1976632e+03
+1.8062105e+04 5.0166816e+04 9.7816147e+03
+1.9453235e+04 5.2315654e+04 1.4021614e+04
+1.9350825e+04 5.0088997e+04 1.8758221e+04
+1.8007342e+04 4.4628426e+04 2.3780248e+04
+1.5651278e+04 3.6860266e+04 2.8806115e+04
+1.2493977e+04 2.7623838e+04 3.3458659e+04
+8.8306416e+03 1.8017671e+04 3.7262579e+04
+5.1483435e+03 9.4180418e+03 3.9747977e+04
+2.1973776e+03 3.1062979e+03 4.0801603e+04
+1.5019153e+02 3.1860043e+02 4.0677753e+04
+1.6943921e+02 1.3521337e+02 4.0555409e+04
+2.6857208e+02 8.5752314e+01 4.0436775e+04
+4.9763257e+02 6.0293132e+01 4.0063779e+04
+2.6837304e+03 1.3041282e+02 3.0718660e+04
+-7.4064369e+03 5.6000530e+02 0.0000000e+00
+4.8886388e-03 5.9389298e-02 -2.0577979e-02
+1.0290225e-01 1.0340847e+00 -3.2177606e-01
+1.9718766e+00 1.6277552e+01 -3.8287950e+00
+3.7729316e+01 2.6794542e+02 -4.2533811e+01
+1.6027481e+03 6.5879872e+03 1.2255438e+02
+4.5083920e+03 2.0569936e+04 7.7489496e+02
+8.0865102e+03 3.7064014e+04 2.0849109e+03
+1.1329670e+04 5.1256102e+04 4.0000955e+03
+1.3566857e+04 6.0047844e+04 6.4203005e+03
+1.4580469e+04 6.2670405e+04 9.2664225e+03
+1.4466499e+04 6.0047378e+04 1.2447566e+04
+1.3423764e+04 5.3536378e+04 1.5837818e+04
+1.1631905e+04 4.4240980e+04 1.9261122e+04
+9.2539301e+03 3.3174881e+04 2.2461462e+04
+6.5122764e+03 2.1685423e+04 2.5084043e+04
+3.7701981e+03 1.1469783e+04 2.6735027e+04
+1.5818281e+03 4.0066753e+03 2.7305510e+04
+1.0200955e+02 4.9272072e+02 2.7142392e+04
+1.1179312e+02 2.2708719e+02 2.7024374e+04
+1.7681150e+02 1.3761684e+02 2.6948595e+04
+3.3603675e+02 8.4750604e+01 2.6731601e+04
+2.1131164e+03 3.6157551e+02 1.9726945e+04
+-5.1296019e+03 1.0594728e+03 0.0000000e+00
+2.8910995e-03 1.0849010e-01 -4.6377630e-02
+6.0433312e-02 1.8194093e+00 -7.7490918e-01
+1.1528176e+00 2.5987579e+01 -9.3984713e+00
+2.2023035e+01 3.6392468e+02 -8.4477511e+01
+9.7906024e+02 7.5817738e+03 -1.6191671e+02
+2.8409277e+03 2.2883608e+04 1.6174443e+02
+5.1400700e+03 4.1072669e+04 8.9153073e+02
+7.2120137e+03 5.6822795e+04 1.9340309e+03
+8.6168664e+03 6.6640191e+04 3.2065516e+03
+9.2206097e+03 6.9600629e+04 4.6842599e+03
+9.0977223e+03 6.6715401e+04 6.3416191e+03
+8.3892214e+03 5.9488814e+04 8.1357679e+03
+7.2215702e+03 4.9137273e+04 1.0002103e+04
+5.7031831e+03 3.6794961e+04 1.1820155e+04
+3.9734416e+03 2.4004096e+04 1.3375321e+04
+2.2589198e+03 1.2748786e+04 1.4349433e+04
+9.0472517e+02 4.7054153e+03 1.4535015e+04
+5.3074809e+01 7.1356855e+02 1.4337637e+04
+5.5815233e+01 3.3346507e+02 1.4246002e+04
+8.8023796e+01 1.9765446e+02 1.4222000e+04
+1.7891646e+02 1.2266012e+02 1.4148160e+04
+1.5119678e+03 5.3809666e+02 9.7303555e+03
+-2.9085569e+03 1.1043404e+03 0.0000000e+00
+1.3000325e-03 1.8756518e-01 -7.8141998e-02
+2.6019866e-02 3.2659739e+00 -1.5064544e+00
+4.7214636e-01 4.6738097e+01 -2.1917453e+01
+8.5026991e+00 5.8140752e+02 -2.3274690e+02
+4.2466635e+02 7.9829839e+03 -2.8432153e+02
+1.3657949e+03 2.3883576e+04 -1.6932922e+02
+2.5413238e+03 4.2879795e+04 9.8110518e+01
+3.5875453e+03 5.9393477e+04 4.6841314e+02
+4.2679563e+03 6.9756060e+04 8.7432418e+02
+4.5222467e+03 7.2910652e+04 1.3265735e+03
+4.4032322e+03 6.9916778e+04 1.8304836e+03
+3.9977629e+03 6.2352445e+04 2.3883850e+03
+3.3857385e+03 5.1463895e+04 3.0210359e+03
+2.6277980e+03 3.8429293e+04 3.7364630e+03
+1.7870739e+03 2.4893740e+04 4.4936059e+03
+9.6834705e+02 1.3048450e+04 5.1310836e+03
+3.3853027e+02 4.8685649e+03 5.3232427e+03
+1.6704160e+01 8.9298981e+02 5.1681511e+03
+1.6618805e+01 3.1376501e+02 5.2194349e+03
+2.6214739e+01 1.6405067e+02 5.3115499e+03
+6.6437698e+01 1.0198899e+02 5.3809340e+03
+9.6182582e+02 3.4402370e+02 3.3623609e+03
+-1.3372121e+03 7.0818360e+02 0.0000000e+00
+6.5464231e-04 2.4100608e-01 -5.3603852e-02
+1.2531713e-02 4.4314425e+00 -1.2248350e+00
+2.0571296e-01 6.6769711e+01 -2.1382557e+01
+2.9472247e+00 8.5190558e+02 -2.9385185e+02
+3.2171647e+01 8.0410240e+03 -3.7057850e+02
+1.0290168e+02 2.3778809e+04 -3.1761648e+02
+1.9093832e+02 4.2657504e+04 -1.7339734e+02
+2.6527566e+02 5.9163732e+04 -2.3432918e+01
+3.0784407e+02 6.9609341e+04 6.4126119e+01
+3.1700099e+02 7.2817056e+04 1.2749900e+02
+2.9785889e+02 6.9863849e+04 1.7537064e+02
+2.5797787e+02 6.2334661e+04 2.0507940e+02
+2.0834887e+02 5.1448892e+04 2.4005430e+02
+1.5650014e+02 3.8381267e+04 3.0976174e+02
+1.0366251e+02 2.4785665e+04 4.4234974e+02
+5.3384441e+01 1.2885350e+04 6.3467068e+02
+1.6458585e+01 4.6884422e+03 8.4111621e+02
+2.1265701e+00 8.5761986e+02 8.9282602e+02
+1.3107351e+00 1.5609048e+02 1.0710820e+03
+1.9619033e+00 4.7175093e+01 1.2264331e+03
+1.6322395e+01 2.7632074e+01 1.3480902e+03
+5.4071442e+02 4.9616283e+01 6.4783876e+02
+-4.4177567e+02 3.4888912e+02 0.0000000e+00
+7.2536594e-04 1.9836432e-01 4.2101619e-02
+1.5445219e-02 3.8853182e+00 5.7384573e-01
+2.7516676e-01 6.2694986e+01 4.3589415e+00
+4.0540269e+00 8.5120805e+02 5.8706404e-01
+3.9660984e+01 8.1401469e+03 -1.4229801e+02
+1.2075160e+02 2.3737631e+04 -2.2851696e+02
+2.1861820e+02 4.2349499e+04 -1.2936869e+02
+2.9735874e+02 5.8794922e+04 -5.9897424e+00
+3.3792894e+02 6.9328701e+04 4.2437298e+01
+3.4115924e+02 7.2587069e+04 8.1423842e+01
+3.1356612e+02 6.9689773e+04 1.1058771e+02
+2.6375879e+02 6.2227948e+04 1.1247458e+02
+2.0679197e+02 5.1377811e+04 1.1002151e+02
+1.5278602e+02 3.8313569e+04 1.3063798e+02
+1.0050152e+02 2.4700868e+04 2.0071815e+02
+5.0854664e+01 1.2814140e+04 2.9230575e+02
+1.4792855e+01 4.7323643e+03 2.8288606e+02
+6.2048125e-01 1.0072667e+03 1.5427514e+02
+-1.0208949e+00 1.5834425e+02 1.6458899e+02
+-1.3408751e+00 2.3671147e+01 2.0456652e+02
+3.8182966e+00 7.0002794e+00 2.4677084e+02
+2.6817486e+02 -1.2009385e+01 -6.3223510e+01
+2.6476154e+01 1.4437875e+02 0.0000000e+00
+7.6900976e-04 8.2210289e-02 1.1559308e-01
+1.8091149e-02 1.8017370e+00 2.1833576e+00
+3.5598108e-01 3.3877585e+01 3.0655011e+01
+5.8632859e+00 5.7631546e+02 2.9960994e+02
+6.6255683e+01 8.2961136e+03 7.6588840e+01
+1.9694462e+02 2.3782666e+04 -1.6080335e+02
+3.5246856e+02 4.1972676e+04 -9.6462659e+01
+4.7677697e+02 5.8324539e+04 1.0976950e+01
+5.4013856e+02 6.8975471e+04 2.7497206e+01
+5.4422116e+02 7.2285990e+04 6.0103037e+01
+4.9933676e+02 6.9462602e+04 9.2093077e+01
+4.1896367e+02 6.2098316e+04 8.7601661e+01
+3.2754964e+02 5.1301616e+04 7.4760199e+01
+2.4177894e+02 3.8257739e+04 7.8206002e+01
+1.5912586e+02 2.4651930e+04 1.2107950e+02
+8.0341663e+01 1.2803296e+04 1.7692215e+02
+2.3107584e+01 4.8256207e+03 1.4703644e+02
+4.3483634e-01 1.1500173e+03 4.3226970e+01
+-1.7928915e+00 1.9358049e+02 2.3754621e+01
+-9.0828238e-01 2.6766503e+01 2.8331591e+01
+1.7077396e+00 4.0936742e+00 3.7571602e+01
+1.1517119e+02 -1.6075524e+00 -7.3822412e+01
+1.7710489e+02 4.0665979e+01 0.0000000e+00
+4.1485649e-04 0.0000000e+00 8.1907314e-02
+1.1246422e-02 0.0000000e+00 1.8739569e+00
+2.6668190e-01 0.0000000e+00 3.5494409e+01
+5.8583244e+00 0.0000000e+00 6.0559997e+02
+1.1743551e+02 8.4549228e+03 2.9948908e+02
+3.4427114e+02 2.3749825e+04 -1.0008105e+02
+6.1556183e+02 4.1226285e+04 -7.6840239e+01
+8.4306979e+02 5.7317869e+04 3.1256938e+01
+9.7009833e+02 6.8066228e+04 1.6949184e+01
+9.9170708e+02 7.1417443e+04 4.6592681e+01
+9.2119115e+02 6.8708559e+04 9.6450031e+01
+7.8131632e+02 6.1548755e+04 8.9483074e+01
+6.1673454e+02 5.0911002e+04 6.0869699e+01
+4.5837723e+02 3.7977679e+04 4.6729288e+01
+3.0663416e+02 2.4468917e+04 7.3129368e+01
+1.6576182e+02 1.2742544e+04 1.1723907e+02
+6.1852183e+01 4.9068587e+03 9.5261651e+01
+1.3668778e+01 1.2705188e+03 2.4147071e+01
+2.3656773e+00 2.3216918e+02 6.1710763e+00
+1.2692989e+00 3.4899239e+01 4.0884244e+00
+2.3412847e+00 4.4201188e+00 4.5843641e+00
+3.3263197e+01 0.0000000e+00 -1.6316378e+01
+8.8916605e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.1674748e+02 5.5036549e+03 1.3869651e+03
+9.0563899e+02 1.9601478e+04 4.9822235e+02
+1.7965362e+03 3.3201581e+04 -6.1606242e+02
+2.9754834e+03 4.3640233e+04 -8.1322954e+01
+4.0168689e+03 5.1730606e+04 2.4457221e+02
+4.6338275e+03 5.4458584e+04 8.7243818e+01
+4.7292868e+03 5.1941613e+04 3.4491216e+02
+4.3319809e+03 4.6865579e+04 4.6993484e+02
+3.6404439e+03 3.9212230e+04 2.3859320e+02
+2.8039763e+03 2.8919202e+04 1.2728100e+02
+2.0235976e+03 1.7835586e+04 2.6778505e+02
+1.4551427e+03 8.5149707e+03 4.4381116e+02
+9.9681593e+02 2.8832498e+03 3.3858527e+02
+5.5788555e+02 5.8553885e+02 7.9335417e+01
+2.4548334e+02 -2.3300685e+01 -1.1992377e+01
+9.8254600e+01 -5.9114174e+01 -6.1521165e+00
+3.3918801e+01 -1.6476408e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.3009562e+03 0.0000000e+00 8.4110042e+02
+-4.7997001e+03 0.0000000e+00 2.0205327e+03
+-8.6520791e+03 0.0000000e+00 7.4609194e+02
+-1.1515956e+04 0.0000000e+00 -4.0007891e+02
+-1.3362747e+04 0.0000000e+00 4.5705831e+02
+-1.3806568e+04 0.0000000e+00 5.8235387e+02
+-1.2806722e+04 0.0000000e+00 -1.4105483e+02
+-1.1182710e+04 0.0000000e+00 -1.3371747e+02
+-9.2876860e+03 0.0000000e+00 2.1143882e+02
+-7.1940989e+03 0.0000000e+00 6.1569394e+02
+-4.9629286e+03 0.0000000e+00 1.0569935e+03
+-2.7758482e+03 0.0000000e+00 1.0361008e+03
+-1.0837326e+03 0.0000000e+00 6.4717074e+02
+-2.6201607e+02 0.0000000e+00 3.2086251e+02
+1.9935620e+01 0.0000000e+00 1.2387138e+02
+1.3274982e+02 0.0000000e+00 4.0958262e+01
+9.8984593e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.6948589e+02 -3.9833705e+03 5.1092450e+02
+2.3574515e+03 -1.3899197e+04 8.1602371e+02
+4.4140809e+03 -2.4265479e+04 -1.2903185e+02
+6.6124188e+03 -3.3126068e+04 -4.0681338e+02
+8.6239488e+03 -4.0099927e+04 2.8418949e+02
+9.6994242e+03 -4.2877541e+04 4.8359254e+02
+9.5516954e+03 -4.1295778e+04 5.4879712e+02
+8.7731112e+03 -3.7140638e+04 6.6895263e+02
+7.5194041e+03 -3.0959431e+04 4.7336917e+02
+5.5922760e+03 -2.3086347e+04 3.4458323e+02
+3.7457725e+03 -1.4905941e+04 4.0979236e+02
+2.5541846e+03 -8.0992172e+03 4.5909081e+02
+1.8453688e+03 -3.6651751e+03 4.1333958e+02
+1.2656884e+03 -1.3847007e+03 2.1864720e+02
+7.5584500e+02 -4.2307843e+02 -7.3523631e+00
+3.0847740e+02 -1.0219567e+02 -3.0408273e+01
+8.3794355e+01 -1.6404149e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.6781188e+02 -4.9972821e+03 8.6287540e+02
+1.6581696e+03 -1.4174575e+04 3.8569756e+02
+2.9516487e+03 -2.4759387e+04 -2.7553155e+02
+3.9314992e+03 -3.4434502e+04 7.6796328e+01
+4.4768888e+03 -4.0815398e+04 3.3215181e+02
+4.5385821e+03 -4.2746016e+04 2.9580327e+02
+4.1260941e+03 -4.0955066e+04 5.5831256e+02
+3.4605739e+03 -3.6395013e+04 6.8412369e+02
+2.7313781e+03 -2.9842993e+04 4.7665312e+02
+1.9298138e+03 -2.2150403e+04 4.1522359e+02
+1.1665113e+03 -1.4247137e+04 6.1403654e+02
+6.0333737e+02 -7.3770411e+03 7.4461802e+02
+2.9026574e+02 -2.7718215e+03 5.5911200e+02
+1.6275324e+02 -6.7109130e+02 2.4044138e+02
+1.1540449e+02 -1.0666831e+02 5.3128601e+01
+6.1874744e+01 -1.3910280e+01 1.2306031e+00
+2.0312577e+01 -1.7887149e+00 0.0000000e+00
+0 0 0
+0 0 0
+-7.6594017e-05 -4.3477714e-02 4.3969160e-02
+-2.9233811e-03 -9.6152558e-01 1.0196645e+00
+-8.4546543e-02 -1.8316109e+01 1.9687002e+01
+-1.9889910e+00 -3.1724020e+02 3.4477450e+02
+-3.3632974e+01 -4.6802000e+03 1.7876064e+02
+-1.0258921e+02 -1.3509148e+04 -3.9806943e+01
+-2.0376845e+02 -2.3948577e+04 -3.1286548e+01
+-3.1284498e+02 -3.3333084e+04 2.3210248e+01
+-4.0028726e+02 -3.9430855e+04 9.0504389e+00
+-4.4247053e+02 -4.1310577e+04 7.7877277e+00
+-4.3716230e+02 -3.9603265e+04 1.4341706e+01
+-3.9855667e+02 -3.5209339e+04 8.5393058e+00
+-3.3617556e+02 -2.8892124e+04 1.0577915e+01
+-2.5905536e+02 -2.1441565e+04 1.9180237e+01
+-1.8377491e+02 -1.3774166e+04 3.6635005e+01
+-1.2132740e+02 -7.1100973e+03 5.6782422e+01
+-6.9156990e+01 -2.6278441e+03 4.3814331e+01
+-2.8432602e+01 -5.9465923e+02 9.5070262e+00
+-7.8392710e+00 -8.9508835e+01 2.5488057e+00
+-1.3114009e+00 -1.0411210e+01 1.6164002e+00
+5.7037994e-01 -1.5684327e+00 3.1657019e+00
+2.5104966e+01 -8.2876311e+00 1.9717339e+01
+1.0583866e+02 9.1366038e+00 0.0000000e+00
+-1.1665575e-04 -1.0430618e-01 6.1714128e-02
+-4.2498163e-03 -2.0561311e+00 1.1786606e+00
+-1.0837628e-01 -3.3478287e+01 1.6805196e+01
+-2.0788895e+00 -4.6004202e+02 1.6754919e+02
+-2.5831515e+01 -4.4677355e+03 4.7171845e+01
+-8.2353038e+01 -1.3102125e+04 -8.0553911e+01
+-1.5995891e+02 -2.3470051e+04 -4.6653125e+01
+-2.3779431e+02 -3.2673556e+04 8.3902105e+00
+-2.9666386e+02 -3.8598049e+04 1.2386434e+01
+-3.2214109e+02 -4.0450627e+04 1.8798850e+01
+-3.1325911e+02 -3.8793979e+04 2.2108882e+01
+-2.8141690e+02 -3.4504389e+04 1.7539099e+01
+-2.3489925e+02 -2.8334097e+04 2.1960515e+01
+-1.7904260e+02 -2.1032176e+04 3.3393477e+01
+-1.2460357e+02 -1.3513729e+04 5.6686372e+01
+-7.9693053e+01 -6.9775544e+03 8.4178238e+01
+-4.3406623e+01 -2.5464175e+03 6.9265724e+01
+-1.6686995e+01 -5.2659933e+02 1.8327734e+01
+-5.1397575e+00 -7.8071502e+01 1.0236294e+01
+-2.1931353e+00 -1.0099777e+01 1.1209743e+01
+-1.3520885e+00 -2.9851316e+00 1.5690036e+01
+7.6157623e+01 -6.1754501e+01 1.0821266e+02
+3.5957214e+02 9.8164318e+00 0.0000000e+00
+-8.0461654e-05 -1.2618409e-01 2.2683737e-02
+-3.2051798e-03 -2.3310853e+00 3.1628835e-01
+-7.8796476e-02 -3.5347911e+01 2.5398749e+00
+-1.3772897e+00 -4.5473556e+02 2.6647334e+00
+-1.4801424e+01 -4.3369215e+03 -7.3686881e+01
+-4.7833991e+01 -1.2888400e+04 -1.1882560e+02
+-9.3170494e+01 -2.3211613e+04 -6.5474531e+01
+-1.3862414e+02 -3.2302116e+04 -9.3186724e-01
+-1.7312892e+02 -3.8109924e+04 2.2000819e+01
+-1.8812616e+02 -3.9935516e+04 3.6175512e+01
+-1.8302881e+02 -3.8304583e+04 4.3374115e+01
+-1.6464159e+02 -3.4075501e+04 4.2886094e+01
+-1.3775365e+02 -2.7994718e+04 4.8052709e+01
+-1.0535942e+02 -2.0790576e+04 6.4598097e+01
+-7.3683126e+01 -1.3377139e+04 1.0219195e+02
+-4.7267199e+01 -6.9268038e+03 1.4956326e+02
+-2.5380965e+01 -2.5014090e+03 1.4472865e+02
+-9.2602609e+00 -4.5018788e+02 7.8197947e+01
+-4.3861983e+00 -7.9036122e+01 8.2527872e+01
+-5.5695577e+00 -2.0911381e+01 9.7568059e+01
+-8.6791481e+00 -1.2505060e+01 1.1958477e+02
+1.2117276e+02 -2.3409839e+02 4.3891538e+02
+7.1943331e+02 -8.9060890e+01 0.0000000e+00
+6.6125765e-05 -9.7879901e-02 -2.7715668e-02
+1.0961998e-04 -1.7102353e+00 -6.3614357e-01
+-1.4652350e-02 -2.4583032e+01 -1.1180657e+01
+-3.4319005e-01 -3.0740516e+02 -1.5522064e+02
+-3.1293174e+00 -4.2608089e+03 -1.9603229e+02
+-9.6139253e+00 -1.2805207e+04 -1.6671043e+02
+-1.9155440e+01 -2.3078976e+04 -8.9253390e+01
+-3.0189673e+01 -3.2086025e+04 -9.8789756e+00
+-4.0113754e+01 -3.7807277e+04 3.5432680e+01
+-4.5095446e+01 -3.9603778e+04 6.5791377e+01
+-4.4103911e+01 -3.7983631e+04 8.6802527e+01
+-3.9723903e+01 -3.3792860e+04 1.0186326e+02
+-3.3403701e+01 -2.7774986e+04 1.2388420e+02
+-2.5860648e+01 -2.0647622e+04 1.6329103e+02
+-1.9653743e+01 -1.3323074e+04 2.3254281e+02
+-1.5817537e+01 -6.9575756e+03 3.3251659e+02
+-1.1923450e+01 -2.5821666e+03 4.4165622e+02
+-7.4716134e+00 -4.7031489e+02 4.7138141e+02
+-9.5283748e+00 -1.6276255e+02 5.6594695e+02
+-1.7469637e+01 -8.0425381e+01 6.4489250e+02
+-3.0069903e+01 -5.0833409e+01 7.2961257e+02
+1.5847244e+02 -5.7824296e+02 1.4559862e+03
+1.1975476e+03 -3.4920739e+02 0.0000000e+00
+5.3765044e-04 -5.6543571e-02 -4.0573948e-02
+1.0514913e-02 -9.5096278e-01 -7.8434156e-01
+1.9070849e-01 -1.3627360e+01 -1.1458575e+01
+3.5712270e+00 -1.9136188e+02 -1.2257038e+02
+1.9326975e+02 -4.0039114e+03 -1.4807121e+02
+6.2493952e+02 -1.2128765e+04 -8.3657470e+01
+1.1662907e+03 -2.1851209e+04 6.3607873e+01
+1.6513472e+03 -3.0352811e+04 2.6659268e+02
+1.9699807e+03 -3.5731547e+04 4.8883764e+02
+2.0931885e+03 -3.7419741e+04 7.3385873e+02
+2.0438378e+03 -3.5893616e+04 1.0032384e+03
+1.8581284e+03 -3.1949469e+04 1.2994818e+03
+1.5709962e+03 -2.6293581e+04 1.6328191e+03
+1.2125111e+03 -1.9603401e+04 2.0038844e+03
+8.1402647e+02 -1.2737149e+04 2.3910065e+03
+4.2559506e+02 -6.7427929e+03 2.7189757e+03
+1.2099408e+02 -2.4823634e+03 2.8367087e+03
+-1.2955361e+01 -3.7635345e+02 2.7724068e+03
+-2.6573043e+01 -1.7293854e+02 2.8257746e+03
+-4.5478013e+01 -9.6663190e+01 2.9137051e+03
+-7.2696514e+01 -6.1289851e+01 3.0632953e+03
+2.8728800e+02 -8.0032186e+02 3.9598928e+03
+1.8377200e+03 -6.0527054e+02 0.0000000e+00
+1.4082200e-03 -3.1084549e-02 -2.3976142e-02
+2.9543758e-02 -5.4341488e-01 -4.0063449e-01
+5.6704349e-01 -8.5949324e+00 -4.8472882e+00
+1.0923476e+01 -1.4215036e+02 -4.2959247e+01
+4.9182804e+02 -3.4832475e+03 -7.6390993e+01
+1.4308165e+03 -1.0902393e+04 1.0734823e+02
+2.5964597e+03 -1.9712910e+04 5.1265958e+02
+3.6542756e+03 -2.7371696e+04 1.0892818e+03
+4.3771773e+03 -3.2192707e+04 1.7901311e+03
+4.6904602e+03 -3.3695994e+04 2.5965334e+03
+4.6268271e+03 -3.2315535e+04 3.4893477e+03
+4.2561284e+03 -2.8768918e+04 4.4418904e+03
+3.6459503e+03 -2.3693074e+04 5.4170034e+03
+2.8583920e+03 -1.7692275e+04 6.3506690e+03
+1.9697206e+03 -1.1520434e+04 7.1376752e+03
+1.0940072e+03 -6.0767462e+03 7.6365410e+03
+3.8536944e+02 -2.1206094e+03 7.7941427e+03
+-1.9458387e+01 -2.5974105e+02 7.7500635e+03
+-5.0410699e+01 -1.1540975e+02 7.7987607e+03
+-8.4948763e+01 -6.3369396e+01 7.9384394e+03
+-1.2823283e+02 -3.9145019e+01 8.2234434e+03
+6.9199330e+02 -6.8714528e+02 8.9302623e+03
+2.7875870e+03 -5.3654402e+02 0.0000000e+00
+2.4497025e-03 -1.8095237e-02 -1.0550376e-02
+5.1847412e-02 -3.3871472e-01 -1.6419570e-01
+9.9935720e-01 -5.8568695e+00 -1.9297391e+00
+1.9229642e+01 -1.0471974e+02 -2.0860683e+01
+8.2276287e+02 -2.8062957e+03 8.2172721e+01
+2.3162558e+03 -9.0823677e+03 4.5428358e+02
+4.1641274e+03 -1.6523970e+04 1.1877270e+03
+5.8492689e+03 -2.2956396e+04 2.2528279e+03
+7.0186093e+03 -2.6981471e+04 3.5898395e+03
+7.5488209e+03 -2.8221126e+04 5.1466196e+03
+7.4817138e+03 -2.7048335e+04 6.8642044e+03
+6.9197250e+03 -2.4067862e+04 8.6671864e+03
+5.9632491e+03 -1.9814452e+04 1.0457220e+04
+4.7078664e+03 -1.4789689e+04 1.2100698e+04
+3.2770848e+03 -9.6116899e+03 1.3427146e+04
+1.8558304e+03 -5.0128328e+03 1.4277600e+04
+6.9195852e+02 -1.6540753e+03 1.4700935e+04
+-2.6308400e+01 -1.6796840e+02 1.4737481e+04
+-7.7251031e+01 -6.5967071e+01 1.4877082e+04
+-1.3081005e+02 -3.4978984e+01 1.5156313e+04
+-1.8969698e+02 -2.4004191e+01 1.5666906e+04
+1.3813055e+03 -5.0513014e+02 1.6216711e+04
+4.0525392e+03 -2.7259905e+02 0.0000000e+00
+3.3910345e-03 -1.0800844e-02 -3.9923383e-03
+7.1654027e-02 -2.1203064e-01 -6.1804326e-02
+1.3763924e+00 -3.8283493e+00 -7.8522945e-01
+2.6354041e+01 -7.0139780e+01 -1.0697996e+01
+1.1117707e+03 -2.0432209e+03 2.5470166e+02
+3.1103552e+03 -6.7971803e+03 8.5246492e+02
+5.5837397e+03 -1.2444175e+04 1.9312116e+03
+7.8451905e+03 -1.7305419e+04 3.4955453e+03
+9.4249841e+03 -2.0330921e+04 5.4821158e+03
+1.0155689e+04 -2.1249795e+04 7.8083314e+03
+1.0088055e+04 -2.0350847e+04 1.0373614e+04
+9.3541043e+03 -1.8093717e+04 1.3052708e+04
+8.0837387e+03 -1.4883104e+04 1.5688899e+04
+6.4023408e+03 -1.1094924e+04 1.8085770e+04
+4.4753665e+03 -7.1878307e+03 2.0017186e+04
+2.5523535e+03 -3.7058495e+03 2.1306192e+04
+9.6882232e+02 -1.1700581e+03 2.2050731e+04
+-3.3705739e+01 -1.0536237e+02 2.2172022e+04
+-1.0391605e+02 -3.8765567e+01 2.2418176e+04
+-1.7711130e+02 -2.0440119e+01 2.2849320e+04
+-2.5084704e+02 -1.7539200e+01 2.3591334e+04
+2.1611608e+03 -4.3688797e+02 2.4045623e+04
+5.3901760e+03 -1.3581384e+02 0.0000000e+00
+4.0823918e-03 -5.8272678e-03 -1.0464591e-03
+8.6032461e-02 -1.1692954e-01 -1.4553522e-02
+1.6469905e+00 -2.1438863e+00 -1.5993436e-01
+3.1416957e+01 -3.9490899e+01 -1.8602268e+00
+1.3247456e+03 -1.2378173e+03 4.0032754e+02
+3.7165406e+03 -4.1975815e+03 1.2013230e+03
+6.6803411e+03 -7.7218793e+03 2.5763064e+03
+9.3939711e+03 -1.0748184e+04 4.5590087e+03
+1.1294769e+04 -1.2624230e+04 7.0872600e+03
+1.2180970e+04 -1.3187533e+04 1.0055854e+04
+1.2111434e+04 -1.2621327e+04 1.3330249e+04
+1.1242292e+04 -1.1213315e+04 1.6744134e+04
+9.7270065e+03 -9.2159998e+03 2.0093333e+04
+7.7140468e+03 -6.8622245e+03 2.3130697e+04
+5.4008860e+03 -4.4340047e+03 2.5584967e+04
+3.0871630e+03 -2.2669936e+03 2.7259083e+04
+1.1776053e+03 -6.9582114e+02 2.8270237e+04
+-3.9867502e+01 -5.9726743e+01 2.8454574e+04
+-1.2509237e+02 -2.2658733e+01 2.8783200e+04
+-2.1424779e+02 -1.2588972e+01 2.9338506e+04
+-2.9899287e+02 -1.3831862e+01 3.0271770e+04
+2.8413658e+03 -3.6264642e+02 3.0474883e+04
+6.4375767e+03 -6.7362904e+01 0.0000000e+00
+4.4883153e-03 -1.8443287e-03 3.0897150e-04
+9.4423384e-02 -3.7284061e-02 9.6343433e-03
+1.8040359e+00 -6.8647225e-01 2.2622143e-01
+3.4342840e+01 -1.2651866e+01 4.7952603e+00
+1.4524771e+03 -4.1425824e+02 4.9527884e+02
+4.0911517e+03 -1.4186106e+03 1.4332094e+03
+7.3644730e+03 -2.6163609e+03 3.0038230e+03
+1.0363445e+04 -3.6436689e+03 5.2588476e+03
+1.2465911e+04 -4.2792015e+03 8.1381456e+03
+1.3448536e+04 -4.4688356e+03 1.1522759e+04
+1.3375987e+04 -4.2754066e+03 1.5256280e+04
+1.2420355e+04 -3.7968929e+03 1.9145783e+04
+1.0750462e+04 -3.1191384e+03 2.2956509e+04
+8.5294185e+03 -2.3209969e+03 2.6408856e+04
+5.9746025e+03 -1.4976027e+03 2.9202827e+04
+3.4170179e+03 -7.6247401e+02 3.1126676e+04
+1.3052787e+03 -2.3103215e+02 3.2304768e+04
+-4.3090549e+01 -1.9781932e+01 3.2525922e+04
+-1.3705729e+02 -8.0386200e+00 3.2905218e+04
+-2.3553410e+02 -4.9426460e+00 3.3541986e+04
+-3.2523859e+02 -6.3902707e+00 3.4600469e+04
+3.2935383e+03 -1.5027459e+02 3.4434834e+04
+6.9121945e+03 -1.0548318e+01 0.0000000e+00
+4.6205239e-03 1.8443287e-03 7.2208775e-04
+9.7149911e-02 3.7284061e-02 1.7522981e-02
+1.8549673e+00 6.8647225e-01 3.6238144e-01
+3.5290538e+01 1.2651866e+01 7.2648878e+00
+1.4948108e+03 4.1425824e+02 5.2799551e+02
+4.2174094e+03 1.4186106e+03 1.5137550e+03
+7.5962283e+03 2.6163609e+03 3.1521535e+03
+1.0692421e+04 3.6436689e+03 5.5008701e+03
+1.2863387e+04 4.2792015e+03 8.5006319e+03
+1.3878458e+04 4.4688356e+03 1.2027869e+04
+1.3804421e+04 4.2754066e+03 1.5918652e+04
+1.2818977e+04 3.7968929e+03 1.9970880e+04
+1.1096308e+04 3.1191384e+03 2.3939312e+04
+8.8045586e+03 2.3209969e+03 2.7533302e+04
+6.1678560e+03 1.4976027e+03 3.0443139e+04
+3.5278602e+03 7.6247401e+02 3.2451862e+04
+1.3481991e+03 2.3103215e+02 3.3685715e+04
+-4.3890142e+01 1.9781932e+01 3.3918496e+04
+-1.4057270e+02 8.0386193e+00 3.4314328e+04
+-2.4189298e+02 4.9426174e+00 3.4978642e+04
+-3.3259804e+02 6.3892169e+00 3.6078635e+04
+3.4493024e+03 1.5023519e+02 3.5724756e+04
+6.9904591e+03 1.0518462e+01 0.0000000e+00
+4.4883153e-03 5.8272678e-03 3.0897150e-04
+9.4423384e-02 1.1692954e-01 9.6343433e-03
+1.8040359e+00 2.1438863e+00 2.2622143e-01
+3.4342840e+01 3.9490899e+01 4.7952603e+00
+1.4524771e+03 1.2378173e+03 4.9527884e+02
+4.0911517e+03 4.1975815e+03 1.4332094e+03
+7.3644730e+03 7.7218793e+03 3.0038230e+03
+1.0363445e+04 1.0748184e+04 5.2588476e+03
+1.2465911e+04 1.2624230e+04 8.1381456e+03
+1.3448536e+04 1.3187533e+04 1.1522759e+04
+1.3375987e+04 1.2621327e+04 1.5256280e+04
+1.2420355e+04 1.1213315e+04 1.9145783e+04
+1.0750462e+04 9.2159998e+03 2.2956509e+04
+8.5294185e+03 6.8622245e+03 2.6408856e+04
+5.9746025e+03 4.4340047e+03 2.9202827e+04
+3.4170179e+03 2.2669936e+03 3.1126676e+04
+1.3052787e+03 6.9582114e+02 3.2304768e+04
+-4.3090549e+01 5.9726743e+01 3.2525922e+04
+-1.3705729e+02 2.2658732e+01 3.2905218e+04
+-2.3553409e+02 1.2588963e+01 3.3541986e+04
+-3.2523846e+02 1.3831622e+01 3.4600469e+04
+3.2935366e+03 3.6263628e+02 3.4434837e+04
+6.9121799e+03 6.7361652e+01 0.0000000e+00
+4.0823918e-03 1.0800844e-02 -1.0464591e-03
+8.6032461e-02 2.1203064e-01 -1.4553522e-02
+1.6469905e+00 3.8283493e+00 -1.5993436e-01
+3.1416957e+01 7.0139780e+01 -1.8602268e+00
+1.3247456e+03 2.0432209e+03 4.0032754e+02
+3.7165406e+03 6.7971803e+03 1.2013230e+03
+6.6803411e+03 1.2444175e+04 2.5763064e+03
+9.3939711e+03 1.7305419e+04 4.5590087e+03
+1.1294769e+04 2.0330921e+04 7.0872600e+03
+1.2180970e+04 2.1249795e+04 1.0055854e+04
+1.2111434e+04 2.0350847e+04 1.3330249e+04
+1.1242292e+04 1.8093717e+04 1.6744134e+04
+9.7270065e+03 1.4883104e+04 2.0093333e+04
+7.7140468e+03 1.1094924e+04 2.3130697e+04
+5.4008860e+03 7.1878307e+03 2.5584967e+04
+3.0871630e+03 3.7058495e+03 2.7259083e+04
+1.1776053e+03 1.1700581e+03 2.8270237e+04
+-3.9867502e+01 1.0536237e+02 2.8454574e+04
+-1.2509237e+02 3.8765567e+01 2.8783200e+04
+-2.1424778e+02 2.0440119e+01 2.9338506e+04
+-2.9899252e+02 1.7539296e+01 3.0271770e+04
+2.8413752e+03 4.3688992e+02 3.0474861e+04
+6.4375344e+03 1.3586076e+02 0.0000000e+00
+3.3910345e-03 1.8095237e-02 -3.9923383e-03
+7.1654027e-02 3.3871472e-01 -6.1804326e-02
+1.3763924e+00 5.8568695e+00 -7.8522945e-01
+2.6354041e+01 1.0471974e+02 -1.0697996e+01
+1.1117707e+03 2.8062957e+03 2.5470166e+02
+3.1103552e+03 9.0823677e+03 8.5246492e+02
+5.5837397e+03 1.6523970e+04 1.9312116e+03
+7.8451905e+03 2.2956396e+04 3.4955453e+03
+9.4249841e+03 2.6981471e+04 5.4821158e+03
+1.0155689e+04 2.8221126e+04 7.8083314e+03
+1.0088055e+04 2.7048335e+04 1.0373614e+04
+9.3541043e+03 2.4067862e+04 1.3052708e+04
+8.0837387e+03 1.9814452e+04 1.5688899e+04
+6.4023408e+03 1.4789689e+04 1.8085770e+04
+4.4753665e+03 9.6116899e+03 2.0017186e+04
+2.5523535e+03 5.0128328e+03 2.1306192e+04
+9.6882232e+02 1.6540753e+03 2.2050731e+04
+-3.3705739e+01 1.6796840e+02 2.2172022e+04
+-1.0391605e+02 6.5967071e+01 2.2418176e+04
+-1.7711130e+02 3.4979000e+01 2.2849320e+04
+-2.5084683e+02 2.4004728e+01 2.3591333e+04
+2.1611723e+03 5.0516151e+02 2.4045621e+04
+5.3901772e+03 2.7266751e+02 0.0000000e+00
+2.4497025e-03 3.1084549e-02 -1.0550376e-02
+5.1847412e-02 5.4341488e-01 -1.6419570e-01
+9.9935720e-01 8.5949324e+00 -1.9297391e+00
+1.9229642e+01 1.4215036e+02 -2.0860683e+01
+8.2276287e+02 3.4832475e+03 8.2172721e+01
+2.3162558e+03 1.0902393e+04 4.5428358e+02
+4.1641274e+03 1.9712910e+04 1.1877270e+03
+5.8492689e+03 2.7371696e+04 2.2528279e+03
+7.0186093e+03 3.2192707e+04 3.5898395e+03
+7.5488209e+03 3.3695994e+04 5.1466196e+03
+7.4817138e+03 3.2315535e+04 6.8642044e+03
+6.9197250e+03 2.8768918e+04 8.6671864e+03
+5.9632491e+03 2.3693074e+04 1.0457220e+04
+4.7078664e+03 1.7692275e+04 1.2100698e+04
+3.2770848e+03 1.1520434e+04 1.3427146e+04
+1.8558304e+03 6.0767462e+03 1.4277600e+04
+6.9195852e+02 2.1206094e+03 1.4700935e+04
+-2.6308400e+01 2.5974105e+02 1.4737481e+04
+-7.7251031e+01 1.1540975e+02 1.4877082e+04
+-1.3081004e+02 6.3369419e+01 1.5156313e+04
+-1.8969643e+02 3.9145979e+01 1.5666905e+04
+1.3813222e+03 6.8720196e+02 1.6216716e+04
+4.0526126e+03 5.3658929e+02 0.0000000e+00
+1.4082200e-03 5.6543571e-02 -2.3976142e-02
+2.9543758e-02 9.5096278e-01 -4.0063449e-01
+5.6704349e-01 1.3627360e+01 -4.8472882e+00
+1.0923476e+01 1.9136188e+02 -4.2959247e+01
+4.9182804e+02 4.0039114e+03 -7.6390993e+01
+1.4308165e+03 1.2128765e+04 1.0734823e+02
+2.5964597e+03 2.1851209e+04 5.1265958e+02
+3.6542756e+03 3.0352811e+04 1.0892818e+03
+4.3771773e+03 3.5731547e+04 1.7901311e+03
+4.6904602e+03 3.7419741e+04 2.5965334e+03
+4.6268271e+03 3.5893616e+04 3.4893477e+03
+4.2561284e+03 3.1949469e+04 4.4418904e+03
+3.6459503e+03 2.6293581e+04 5.4170034e+03
+2.8583920e+03 1.9603401e+04 6.3506690e+03
+1.9697206e+03 1.2737149e+04 7.1376752e+03
+1.0940072e+03 6.7427929e+03 7.6365410e+03
+3.8536944e+02 2.4823634e+03 7.7941427e+03
+-1.9458387e+01 3.7635345e+02 7.7500635e+03
+-5.0410699e+01 1.7293854e+02 7.7987607e+03
+-8.4948756e+01 9.6663195e+01 7.9384395e+03
+-1.2823241e+02 6.1289535e+01 8.2234423e+03
+6.9201887e+02 8.0031966e+02 8.9302710e+03
+2.7876625e+03 6.0525461e+02 0.0000000e+00
+5.3765044e-04 9.7879901e-02 -4.0573948e-02
+1.0514913e-02 1.7102353e+00 -7.8434156e-01
+1.9070849e-01 2.4583032e+01 -1.1458575e+01
+3.5712270e+00 3.0740516e+02 -1.2257038e+02
+1.9326975e+02 4.2608089e+03 -1.4807121e+02
+6.2493952e+02 1.2805207e+04 -8.3657470e+01
+1.1662907e+03 2.3078976e+04 6.3607873e+01
+1.6513472e+03 3.2086025e+04 2.6659268e+02
+1.9699807e+03 3.7807277e+04 4.8883764e+02
+2.0931885e+03 3.9603778e+04 7.3385873e+02
+2.0438378e+03 3.7983631e+04 1.0032384e+03
+1.8581284e+03 3.3792860e+04 1.2994818e+03
+1.5709962e+03 2.7774986e+04 1.6328191e+03
+1.2125111e+03 2.0647622e+04 2.0038844e+03
+8.1402647e+02 1.3323074e+04 2.3910065e+03
+4.2559506e+02 6.9575756e+03 2.7189757e+03
+1.2099408e+02 2.5821666e+03 2.8367087e+03
+-1.2955360e+01 4.7031489e+02 2.7724068e+03
+-2.6573044e+01 1.6276255e+02 2.8257746e+03
+-4.5478033e+01 8.0425364e+01 2.9137051e+03
+-7.2697375e+01 5.0833188e+01 3.0632966e+03
+2.8733393e+02 5.7823182e+02 3.9599198e+03
+1.8377659e+03 3.4913903e+02 0.0000000e+00
+6.6125769e-05 1.2618409e-01 -2.7715668e-02
+1.0962003e-04 2.3310853e+00 -6.3614357e-01
+-1.4652350e-02 3.5347911e+01 -1.1180657e+01
+-3.4319004e-01 4.5473556e+02 -1.5522064e+02
+-3.1293174e+00 4.3369215e+03 -1.9603229e+02
+-9.6139253e+00 1.2888400e+04 -1.6671043e+02
+-1.9155440e+01 2.3211613e+04 -8.9253390e+01
+-3.0189673e+01 3.2302116e+04 -9.8789756e+00
+-4.0113754e+01 3.8109924e+04 3.5432680e+01
+-4.5095446e+01 3.9935516e+04 6.5791377e+01
+-4.4103911e+01 3.8304583e+04 8.6802527e+01
+-3.9723903e+01 3.4075501e+04 1.0186326e+02
+-3.3403701e+01 2.7994718e+04 1.2388421e+02
+-2.5860648e+01 2.0790576e+04 1.6329103e+02
+-1.9653743e+01 1.3377139e+04 2.3254281e+02
+-1.5817537e+01 6.9268038e+03 3.3251659e+02
+-1.1923449e+01 2.5014090e+03 4.4165622e+02
+-7.4716132e+00 4.5018788e+02 4.7138141e+02
+-9.5283756e+00 7.9036122e+01 5.6594695e+02
+-1.7469662e+01 2.0911388e+01 6.4489250e+02
+-3.0068682e+01 1.2505654e+01 7.2961127e+02
+1.5855328e+02 2.3412047e+02 1.4560051e+03
+1.1975502e+03 8.9010067e+01 0.0000000e+00
+-8.0461632e-05 1.0430618e-01 2.2683737e-02
+-3.2051795e-03 2.0561311e+00 3.1628835e-01
+-7.8796462e-02 3.3478287e+01 2.5398750e+00
+-1.3772897e+00 4.6004202e+02 2.6647335e+00
+-1.4801423e+01 4.4677355e+03 -7.3686881e+01
+-4.7833991e+01 1.3102125e+04 -1.1882560e+02
+-9.3170494e+01 2.3470051e+04 -6.5474532e+01
+-1.3862414e+02 3.2673556e+04 -9.3186803e-01
+-1.7312892e+02 3.8598049e+04 2.2000819e+01
+-1.8812616e+02 4.0450627e+04 3.6175508e+01
+-1.8302881e+02 3.8793979e+04 4.3374112e+01
+-1.6464159e+02 3.4504389e+04 4.2886093e+01
+-1.3775366e+02 2.8334097e+04 4.8052714e+01
+-1.0535942e+02 2.1032176e+04 6.4598114e+01
+-7.3683137e+01 1.3513729e+04 1.0219197e+02
+-4.7267198e+01 6.9775544e+03 1.4956327e+02
+-2.5380954e+01 2.5464175e+03 1.4472866e+02
+-9.2602556e+00 5.2659932e+02 7.8197952e+01
+-4.3861959e+00 7.8071496e+01 8.2527874e+01
+-5.5695430e+00 1.0099806e+01 9.7568109e+01
+-8.6782467e+00 2.9858417e+00 1.1958467e+02
+1.2122293e+02 6.1758980e+01 4.3889092e+02
+7.1945546e+02 -9.7607893e+00 0.0000000e+00
+-1.1665560e-04 4.3477714e-02 6.1714128e-02
+-4.2498090e-03 9.6152559e-01 1.1786606e+00
+-1.0837622e-01 1.8316109e+01 1.6805196e+01
+-2.0788889e+00 3.1724020e+02 1.6754919e+02
+-2.5831508e+01 4.6802000e+03 4.7171858e+01
+-8.2353025e+01 1.3509148e+04 -8.0553896e+01
+-1.5995891e+02 2.3948577e+04 -4.6653151e+01
+-2.3779430e+02 3.3333084e+04 8.3901899e+00
+-2.9666387e+02 3.9430855e+04 1.2386500e+01
+-3.2214109e+02 4.1310577e+04 1.8798790e+01
+-3.1325904e+02 3.9603265e+04 2.2108845e+01
+-2.8141682e+02 3.5209339e+04 1.7539112e+01
+-2.3489936e+02 2.8892124e+04 2.1960644e+01
+-1.7904290e+02 2.1441565e+04 3.3393892e+01
+-1.2460397e+02 1.3774166e+04 5.6686830e+01
+-7.9693054e+01 7.1100975e+03 8.4178464e+01
+-4.3406335e+01 2.6278440e+03 6.9265806e+01
+-1.6686856e+01 5.9465905e+02 1.8327773e+01
+-5.1391333e+00 8.9509151e+01 1.0236321e+01
+-2.1931594e+00 1.0411161e+01 1.1209703e+01
+-1.3533931e+00 1.5693083e+00 1.5687228e+01
+7.6120779e+01 8.3353464e+00 1.0822349e+02
+3.5956904e+02 -9.0971286e+00 0.0000000e+00
+-7.6593336e-05 0.0000000e+00 4.3969163e-02
+-2.9233733e-03 0.0000000e+00 1.0196645e+00
+-8.4546391e-02 0.0000000e+00 1.9687002e+01
+-1.9889862e+00 0.0000000e+00 3.4477451e+02
+-3.3632823e+01 4.9972818e+03 1.7876113e+02
+-1.0258888e+02 1.4174576e+04 -3.9806554e+01
+-2.0376837e+02 2.4759388e+04 -3.1287403e+01
+-3.1284492e+02 3.4434512e+04 2.3213274e+01
+-4.0028947e+02 4.0815404e+04 9.0520714e+00
+-4.4246889e+02 4.2746017e+04 7.7871330e+00
+-4.3716275e+02 4.0955064e+04 1.4341434e+01
+-3.9855592e+02 3.6395017e+04 8.5397401e+00
+-3.3617806e+02 2.9842994e+04 1.0582020e+01
+-2.5906539e+02 2.2150398e+04 1.9191836e+01
+-1.8379103e+02 1.4247135e+04 3.6648016e+01
+-1.2132821e+02 7.3770473e+03 5.6787686e+01
+-6.9148851e+01 2.7718170e+03 4.3815764e+01
+-2.8435240e+01 6.7107235e+02 9.5069299e+00
+-7.8105147e+00 1.0664835e+02 2.5443604e+00
+-1.2989968e+00 1.3906416e+01 1.6169371e+00
+5.6899948e-01 1.7891889e+00 3.1654225e+00
+2.5062804e+01 0.0000000e+00 1.9701696e+01
+1.0579498e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.6781519e+02 3.9833766e+03 8.6289381e+02
+1.6581762e+03 1.3899216e+04 3.8571397e+02
+2.9516457e+03 2.4265475e+04 -2.7552388e+02
+3.9315624e+03 3.3126032e+04 7.6877074e+01
+4.4769936e+03 4.0099963e+04 3.3219504e+02
+4.5386241e+03 4.2877650e+04 2.9576556e+02
+4.1260522e+03 4.1295842e+04 5.5832235e+02
+3.4604679e+03 3.7140689e+04 6.8416271e+02
+2.7314225e+03 3.0959387e+04 4.7678820e+02
+1.9294455e+03 2.3086180e+04 4.1553528e+02
+1.1655006e+03 1.4906216e+04 6.1455428e+02
+6.0249473e+02 8.0995180e+03 7.4473224e+02
+2.8948861e+02 3.6651116e+03 5.5884212e+02
+1.6318237e+02 1.3844306e+03 2.4018833e+02
+1.1618347e+02 4.2299936e+02 5.3139147e+01
+6.1912636e+01 1.0220644e+02 1.2463326e+00
+2.0532692e+01 1.6422202e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.6946750e+02 0.0000000e+00 5.1098426e+02
+2.3574295e+03 0.0000000e+00 8.1601705e+02
+4.4140672e+03 0.0000000e+00 -1.2908692e+02
+6.6124487e+03 0.0000000e+00 -4.0682199e+02
+8.6239288e+03 0.0000000e+00 2.8424636e+02
+9.6994743e+03 0.0000000e+00 4.8365775e+02
+9.5516734e+03 0.0000000e+00 5.4886188e+02
+8.7730978e+03 0.0000000e+00 6.6898357e+02
+7.5193466e+03 0.0000000e+00 4.7341018e+02
+5.5921555e+03 0.0000000e+00 3.4457890e+02
+3.7455137e+03 0.0000000e+00 4.0977920e+02
+2.5542230e+03 0.0000000e+00 4.5917832e+02
+1.8453420e+03 0.0000000e+00 4.1341299e+02
+1.2657482e+03 0.0000000e+00 2.1861453e+02
+7.5587619e+02 0.0000000e+00 -7.3931334e+00
+3.0847517e+02 0.0000000e+00 -3.0429295e+01
+8.3753151e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.1901458e+02 -2.5960582e+03 3.6368317e+02
+2.7339116e+03 -9.1601660e+03 7.0341552e+02
+5.1075898e+03 -1.6030075e+04 1.5130982e+02
+6.8648502e+03 -2.1551976e+04 -1.1310248e+02
+7.8551023e+03 -2.5466232e+04 3.8163158e+02
+7.9655519e+03 -2.6704493e+04 8.1353563e+02
+7.2859314e+03 -2.5246207e+04 1.0325562e+03
+6.3691050e+03 -2.2196276e+04 1.0328318e+03
+5.1063391e+03 -1.8118075e+04 9.1767792e+02
+3.4525218e+03 -1.3274026e+04 9.1330484e+02
+2.0102519e+03 -8.3454049e+03 9.7252596e+02
+1.0526565e+03 -4.2733339e+03 9.8824100e+02
+6.4704284e+02 -1.7103362e+03 8.5156944e+02
+6.1667255e+02 -5.4526801e+02 4.9766198e+02
+5.7212865e+02 -1.6461552e+02 1.2803029e+02
+2.6311110e+02 -5.8680308e+01 2.3624058e+00
+6.1045995e+01 -1.4557558e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.9074026e+02 -2.3834333e+03 4.4589622e+02
+-6.0188494e+02 -6.7057802e+03 2.5156404e+02
+-1.1084706e+03 -1.1625194e+04 -9.3201286e+01
+-1.6414892e+03 -1.6110776e+04 3.8598436e+01
+-2.0234857e+03 -1.9051101e+04 1.2379385e+02
+-2.1631178e+03 -1.9916677e+04 3.7678330e+01
+-2.1084851e+03 -1.9066127e+04 9.2174577e+01
+-1.8815681e+03 -1.6896619e+04 1.3466015e+02
+-1.5620588e+03 -1.3772073e+04 8.1879040e+01
+-1.2244564e+03 -1.0137863e+04 9.9986363e+01
+-8.7058169e+02 -6.4133926e+03 2.0507008e+02
+-5.4868411e+02 -3.1770336e+03 2.6079282e+02
+-2.8424876e+02 -1.0669538e+03 1.9192263e+02
+-8.7614384e+01 -1.9143868e+02 8.8489346e+01
+2.1085817e+01 -6.4443684e+00 2.4637956e+01
+2.2672425e+01 4.3172446e+00 1.8277572e+00
+6.5807931e+00 1.0042854e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.4340647e-05 -2.2457807e-02 2.2425554e-02
+-1.5007296e-03 -4.9427818e-01 5.1528108e-01
+-4.1213615e-02 -9.3384178e+00 9.8103660e+00
+-1.0096454e+00 -1.5962744e+02 1.6845846e+02
+-2.3393713e+01 -2.3077201e+03 8.2505581e+01
+-6.8537821e+01 -6.6290559e+03 -2.8270155e+01
+-1.1424737e+02 -1.1720305e+04 -2.2680383e+01
+-1.4107952e+02 -1.6308506e+04 3.2834039e+00
+-1.4467106e+02 -1.9297879e+04 -5.5547923e+00
+-1.2931983e+02 -2.0226917e+04 -8.4639541e+00
+-1.0248160e+02 -1.9397209e+04 -1.2060298e+01
+-7.4496175e+01 -1.7215158e+04 -1.7586995e+01
+-5.1287856e+01 -1.4062956e+04 -1.1591770e+01
+-2.9854044e+01 -1.0369896e+04 -8.8784775e+00
+-8.5741096e+00 -6.5872900e+03 -1.0181862e+01
+7.5198589e+00 -3.3122236e+03 -3.9428786e+00
+1.4023307e+01 -1.1520230e+03 -1.7829511e+00
+1.0977176e+01 -2.2730483e+02 -5.3265918e+00
+5.6300882e+00 -2.3421174e+01 -1.8194859e+00
+1.8326997e+00 -4.6231295e-03 -6.4172256e-01
+6.4489693e-01 6.6064904e-01 -3.8099300e-01
+1.0999190e+01 -3.5336763e+00 1.7259984e+01
+9.0270046e+01 -1.3147549e+01 0.0000000e+00
+-7.6938117e-05 -5.4055505e-02 3.1557979e-02
+-2.3572979e-03 -1.0630394e+00 5.9842669e-01
+-5.4143159e-02 -1.7232695e+01 8.4384708e+00
+-9.6073160e-01 -2.3509717e+02 8.2790035e+01
+-1.1111732e+01 -2.2594231e+03 1.9773329e+01
+-3.2081410e+01 -6.6131616e+03 -4.6392533e+01
+-5.1904256e+01 -1.1846223e+04 -2.8529130e+01
+-5.9810256e+01 -1.6514175e+04 -8.4419195e-01
+-5.5787805e+01 -1.9540604e+04 1.0045621e+00
+-4.4126119e+01 -2.0507897e+04 3.9695497e+00
+-2.8877160e+01 -1.9680128e+04 2.5070251e+00
+-1.5688577e+01 -1.7477115e+04 -1.2643742e+00
+-6.9991738e+00 -1.4295316e+04 3.1963008e+00
+2.0343336e-01 -1.0553376e+04 7.4301591e+00
+7.4429851e+00 -6.7250431e+03 1.3131480e+01
+1.2403015e+01 -3.4159491e+03 2.4760944e+01
+1.2342752e+01 -1.2048672e+03 2.1855782e+01
+7.4259307e+00 -2.3312539e+02 3.5762300e+00
+3.1292704e+00 -2.9749931e+01 1.6359636e+00
+1.4117551e+00 -1.5949819e+00 -3.7785789e-01
+1.8694309e+00 2.1635240e+00 -5.1022437e+00
+2.6844197e+01 -2.6980414e+01 6.7548957e+01
+3.0635012e+02 -1.2541846e+02 0.0000000e+00
+-6.4525221e-05 -6.5501519e-02 1.1430078e-02
+-1.9859344e-03 -1.2089636e+00 1.5613498e-01
+-4.3174005e-02 -1.8295227e+01 1.1830442e+00
+-6.9691732e-01 -2.3453825e+02 -5.6243229e-02
+-7.0325743e+00 -2.2267908e+03 -4.0457407e+01
+-2.0612736e+01 -6.6165807e+03 -6.4259630e+01
+-3.3563919e+01 -1.1933587e+04 -3.6501673e+01
+-3.8899346e+01 -1.6646951e+04 -3.4502990e+00
+-3.6593363e+01 -1.9688928e+04 8.3383719e+00
+-2.9411274e+01 -2.0673608e+04 1.5334837e+01
+-2.0003961e+01 -1.9844773e+04 1.6954187e+01
+-1.1884631e+01 -1.7628650e+04 1.5731916e+01
+-6.4354154e+00 -1.4430580e+04 1.9677557e+01
+-1.7356716e+00 -1.0664595e+04 2.7273357e+01
+3.1179336e+00 -6.8175321e+03 4.2961284e+01
+6.6087142e+00 -3.4925217e+03 6.5657992e+01
+6.8513424e+00 -1.2365448e+03 6.5103329e+01
+3.9883978e+00 -2.1498249e+02 3.3711773e+01
+2.4118654e+00 -3.4021890e+01 3.1185891e+01
+3.0479583e+00 -4.0668172e+00 2.5040212e+01
+5.0617863e+00 5.4641400e+00 7.9982270e+00
+-1.2642329e+00 -8.7190469e+01 1.9064352e+02
+4.9741343e+02 -4.1028173e+02 0.0000000e+00
+1.2754652e-05 -5.0845024e-02 -1.4603124e-02
+-2.8313129e-04 -8.8831464e-01 -3.3485930e-01
+-1.1492346e-02 -1.2758816e+01 -5.8744299e+00
+-2.0890414e-01 -1.5927494e+02 -8.1272023e+01
+-1.8046755e+00 -2.2060827e+03 -1.0330481e+02
+-4.3131498e+00 -6.6368403e+03 -8.8345962e+01
+-4.5703792e+00 -1.1988689e+04 -4.7829668e+01
+-8.5270780e-01 -1.6717657e+04 -6.4607931e+00
+5.1232649e+00 -1.9758068e+04 1.7442242e+01
+1.1140904e+01 -2.0745752e+04 3.3350013e+01
+1.5871975e+01 -1.9914693e+04 4.3294383e+01
+1.7822434e+01 -1.7693689e+04 5.0786735e+01
+1.6799188e+01 -1.4493082e+04 6.3085594e+01
+1.4443914e+01 -1.0724655e+04 8.2840364e+01
+1.1808748e+01 -6.8822201e+03 1.1606588e+02
+8.8219319e+00 -3.5665848e+03 1.6548949e+02
+5.6017771e+00 -1.3071609e+03 2.1858040e+02
+3.2181719e+00 -2.3344479e+02 2.2635291e+02
+4.1140384e+00 -7.4168540e+01 2.5285714e+02
+7.6354644e+00 -2.6610121e+01 2.5029534e+02
+1.0891756e+01 2.5093604e-02 2.1477274e+02
+-1.0918633e+02 -2.0705557e+02 6.0235158e+02
+5.8295255e+02 -8.2130568e+02 0.0000000e+00
+2.4778964e-04 -2.9414874e-02 -2.1140289e-02
+4.8961427e-03 -4.9511254e-01 -4.0872362e-01
+9.0182518e-02 -7.1015021e+00 -5.9655117e+00
+1.7173508e+00 -9.9855002e+01 -6.3531577e+01
+9.5104269e+01 -2.0941513e+03 -7.7297449e+01
+3.1127243e+02 -6.3581715e+03 -4.2299173e+01
+5.8837542e+02 -1.1490851e+04 3.7778644e+01
+8.4482449e+02 -1.6021550e+04 1.4819474e+02
+1.0204669e+03 -1.8930108e+04 2.6974819e+02
+1.0940968e+03 -1.9880120e+04 4.0320801e+02
+1.0744107e+03 -1.9090047e+04 5.4798908e+02
+9.7916234e+02 -1.6972356e+04 7.0562290e+02
+8.2679404e+02 -1.3924054e+04 8.8079751e+02
+6.3627992e+02 -1.0338804e+04 1.0711783e+03
+4.2808859e+02 -6.6896459e+03 1.2645420e+03
+2.3012266e+02 -3.5271788e+03 1.4206083e+03
+8.1786231e+01 -1.2919170e+03 1.4445722e+03
+5.6605423e+00 -1.8919669e+02 1.3817082e+03
+7.3578743e+00 -7.8156324e+01 1.3517651e+03
+1.3189944e+01 -3.1293640e+01 1.2977806e+03
+1.4902587e+01 1.9565598e+00 1.2082501e+03
+-2.9970827e+02 -2.8698069e+02 1.8751717e+03
+7.3802991e+02 -1.1705543e+03 0.0000000e+00
+6.7032264e-04 -1.6259556e-02 -1.2417421e-02
+1.4182131e-02 -2.8500584e-01 -2.0716249e-01
+2.7455581e-01 -4.5233011e+00 -2.4928759e+00
+5.3294084e+00 -7.5093693e+01 -2.1660118e+01
+2.4438742e+02 -1.8328125e+03 -3.5558343e+01
+7.1659676e+02 -5.7471738e+03 6.7663771e+01
+1.3071284e+03 -1.0424968e+04 2.9111217e+02
+1.8479183e+03 -1.4531831e+04 6.0775055e+02
+2.2209961e+03 -1.7157385e+04 9.9120859e+02
+2.3841219e+03 -1.8011548e+04 1.4289745e+03
+2.3516394e+03 -1.7293927e+04 1.9080426e+03
+2.1589109e+03 -1.5379595e+04 2.4124989e+03
+1.8419484e+03 -1.2628930e+04 2.9213767e+03
+1.4358814e+03 -9.3946283e+03 3.3997114e+03
+9.8338180e+02 -6.0953325e+03 3.7917368e+03
+5.4592720e+02 -3.2061626e+03 4.0188007e+03
+2.0711651e+02 -1.1162651e+03 4.0214017e+03
+7.3051285e+00 -1.3057206e+02 3.9360136e+03
+5.8951737e+00 -4.9464472e+01 3.8510158e+03
+1.1252546e+01 -1.5692243e+01 3.7392131e+03
+4.7731072e+00 1.1087093e+01 3.5970772e+03
+-5.7058027e+02 -2.2488152e+02 4.7975516e+03
+1.2936000e+03 -1.1613744e+03 0.0000000e+00
+1.1737949e-03 -9.5729882e-03 -5.4106607e-03
+2.5073027e-02 -1.7997641e-01 -8.3665710e-02
+4.8779225e-01 -3.1272916e+00 -9.6811025e-01
+9.4661852e+00 -5.6173916e+01 -1.0124431e+01
+4.1213788e+02 -1.4846044e+03 5.2292463e+01
+1.1672921e+03 -4.8083467e+03 2.6242903e+02
+2.1062996e+03 -8.7744368e+03 6.6972532e+02
+2.9672750e+03 -1.2237525e+04 1.2574133e+03
+3.5675172e+03 -1.4439542e+04 1.9906632e+03
+3.8395716e+03 -1.5148654e+04 2.8370188e+03
+3.8019283e+03 -1.4537307e+04 3.7601844e+03
+3.5070275e+03 -1.2923134e+04 4.7164208e+03
+3.0090350e+03 -1.0609731e+04 5.6514359e+03
+2.3613949e+03 -7.8907978e+03 6.4940768e+03
+1.6319357e+03 -5.1113423e+03 7.1552357e+03
+9.1958582e+02 -2.6601240e+03 7.5454416e+03
+3.5705034e+02 -8.7769981e+02 7.6417845e+03
+6.8552168e+00 -8.4047731e+01 7.5620966e+03
+-7.2302963e-01 -2.5446612e+01 7.4615507e+03
+1.0485326e+00 -3.8671823e+00 7.3178670e+03
+-2.0243366e+01 1.3915869e+01 7.1455847e+03
+-8.8948435e+02 -1.3870180e+02 9.3300907e+03
+2.4165384e+03 -9.1528795e+02 0.0000000e+00
+1.6282968e-03 -5.7936566e-03 -2.0165940e-03
+3.4763458e-02 -1.1428696e-01 -3.0815471e-02
+6.7480476e-01 -2.0739506e+00 -3.8256887e-01
+1.3046830e+01 -3.8174272e+01 -5.0750020e+00
+5.6015718e+02 -1.0857472e+03 1.4768134e+02
+1.5752778e+03 -3.6109456e+03 4.8535768e+02
+2.8369560e+03 -6.6294784e+03 1.0871831e+03
+3.9957220e+03 -9.2546128e+03 1.9537393e+03
+4.8080205e+03 -1.0915337e+04 3.0464976e+03
+5.1826883e+03 -1.1443696e+04 4.3145394e+03
+5.1421283e+03 -1.0973995e+04 5.6971541e+03
+4.7544060e+03 -9.7484309e+03 7.1221494e+03
+4.0902085e+03 -7.9972701e+03 8.5032185e+03
+3.2197727e+03 -5.9411729e+03 9.7361617e+03
+2.2339097e+03 -3.8371324e+03 1.0703409e+04
+1.2660008e+03 -1.9749702e+03 1.1304607e+04
+4.9432294e+02 -6.2437615e+02 1.1525783e+04
+5.3935831e+00 -5.1585862e+01 1.1454222e+04
+-8.7766087e+00 -1.1873194e+01 1.1345509e+04
+-1.1726733e+01 2.6815280e+00 1.1173576e+04
+-4.9943230e+01 1.5356447e+01 1.0971231e+04
+-1.2051112e+03 -1.1394034e+02 1.4312744e+04
+3.8198120e+03 -7.4570327e+02 0.0000000e+00
+1.9597959e-03 -3.1621235e-03 -5.0893725e-04
+4.1763048e-02 -6.3747116e-02 -6.7793676e-03
+8.0861350e-01 -1.1744036e+00 -6.7949361e-02
+1.5587649e+01 -2.1729737e+01 -6.8317701e-01
+6.6954019e+02 -6.5977141e+02 2.2854637e+02
+1.8881285e+03 -2.2352871e+03 6.8130002e+02
+3.4042518e+03 -4.1230748e+03 1.4509857e+03
+4.7981416e+03 -5.7607541e+03 2.5529564e+03
+5.7774170e+03 -6.7928735e+03 3.9478452e+03
+6.2322582e+03 -7.1179298e+03 5.5707917e+03
+6.1887422e+03 -6.8215413e+03 7.3410298e+03
+5.7277291e+03 -6.0556424e+03 9.1628045e+03
+4.9330912e+03 -4.9640973e+03 1.0923547e+04
+3.8881765e+03 -3.6838085e+03 1.2492053e+04
+2.7015479e+03 -2.3731968e+03 1.3727455e+04
+1.5334913e+03 -1.2114901e+03 1.4517647e+04
+5.9833199e+02 -3.7228755e+02 1.4844832e+04
+3.9688610e+00 -2.7886765e+01 1.4777296e+04
+-1.5487601e+01 -4.4925396e+00 1.4660311e+04
+-2.2636385e+01 5.1953210e+00 1.4466186e+04
+-7.5268575e+01 1.4302885e+01 1.4243515e+04
+-1.4598352e+03 -9.3839495e+01 1.8524625e+04
+5.0005072e+03 -5.4399267e+02 0.0000000e+00
+2.1521271e-03 -1.0072077e-03 1.8127235e-04
+4.5803916e-02 -2.0452029e-02 5.5056537e-03
+8.8551161e-01 -3.7829320e-01 1.2791956e-01
+1.7042634e+01 -7.0022175e+00 2.7006066e+00
+7.3497982e+02 -2.2113915e+02 2.8156565e+02
+2.0816502e+03 -7.5636063e+02 8.1214065e+02
+3.7588456e+03 -1.3986255e+03 1.6933188e+03
+5.3015656e+03 -1.9551514e+03 2.9495953e+03
+6.3860704e+03 -2.3051960e+03 4.5417581e+03
+6.8907964e+03 -2.4148205e+03 6.3963883e+03
+6.8445426e+03 -2.3134638e+03 8.4197550e+03
+6.3366488e+03 -2.0529270e+03 1.0500746e+04
+5.4595297e+03 -1.6821523e+03 1.2509733e+04
+4.3048129e+03 -1.2475391e+03 1.4298069e+04
+2.9921008e+03 -8.0259483e+02 1.5709968e+04
+1.6985166e+03 -4.0799820e+02 1.6624978e+04
+6.6117011e+02 -1.2367111e+02 1.7020470e+04
+2.8825544e+00 -8.8396849e+00 1.6955450e+04
+-1.9981341e+01 -1.0594899e+00 1.6834941e+04
+-3.0103380e+01 2.4690675e+00 1.6632236e+04
+-9.2127333e+01 5.9003123e+00 1.6407528e+04
+-1.6137859e+03 -3.7591997e+01 2.1258603e+04
+5.6806951e+03 -1.9704065e+02 0.0000000e+00
+2.2141686e-03 1.0072077e-03 3.9193999e-04
+4.7105058e-02 2.0452029e-02 9.5327340e-03
+9.1023613e-01 3.7829320e-01 1.9767756e-01
+1.7510007e+01 7.0022175e+00 3.9737731e+00
+7.5660451e+02 2.2113915e+02 2.9990176e+02
+2.1468584e+03 7.5636063e+02 8.5773151e+02
+3.8790232e+03 1.3986255e+03 1.7776856e+03
+5.4725172e+03 1.9551514e+03 3.0872866e+03
+6.5928111e+03 2.3051960e+03 4.7474707e+03
+7.1143486e+03 2.4148205e+03 6.6819387e+03
+7.0669410e+03 2.3134638e+03 8.7924909e+03
+6.5429076e+03 2.0529270e+03 1.0962706e+04
+5.6376289e+03 1.6821523e+03 1.3057080e+04
+4.4455614e+03 1.2475391e+03 1.4920999e+04
+3.0900369e+03 8.0259483e+02 1.6393629e+04
+1.7538745e+03 4.0799820e+02 1.7351618e+04
+6.8192925e+02 1.2367111e+02 1.7770546e+04
+2.4394750e+00 8.8396848e+00 1.7706537e+04
+-2.1626937e+01 1.0594900e+00 1.7585472e+04
+-3.2868337e+01 -2.4690761e+00 1.7381385e+04
+-9.8152618e+01 -5.9004875e+00 1.7158741e+04
+-1.6632461e+03 3.7588604e+01 2.2196108e+04
+5.8845921e+03 1.9703555e+02 0.0000000e+00
+2.1521271e-03 3.1621235e-03 1.8127235e-04
+4.5803916e-02 6.3747116e-02 5.5056537e-03
+8.8551161e-01 1.1744036e+00 1.2791956e-01
+1.7042634e+01 2.1729737e+01 2.7006066e+00
+7.3497982e+02 6.5977141e+02 2.8156565e+02
+2.0816502e+03 2.2352871e+03 8.1214065e+02
+3.7588456e+03 4.1230748e+03 1.6933188e+03
+5.3015656e+03 5.7607541e+03 2.9495953e+03
+6.3860704e+03 6.7928735e+03 4.5417581e+03
+6.8907964e+03 7.1179298e+03 6.3963883e+03
+6.8445426e+03 6.8215413e+03 8.4197550e+03
+6.3366488e+03 6.0556424e+03 1.0500746e+04
+5.4595297e+03 4.9640973e+03 1.2509733e+04
+4.3048129e+03 3.6838085e+03 1.4298069e+04
+2.9921008e+03 2.3731968e+03 1.5709968e+04
+1.6985166e+03 1.2114901e+03 1.6624978e+04
+6.6117011e+02 3.7228755e+02 1.7020470e+04
+2.8825544e+00 2.7886765e+01 1.6955450e+04
+-1.9981341e+01 4.4925390e+00 1.6834941e+04
+-3.0103386e+01 -5.1953234e+00 1.6632236e+04
+-9.2127678e+01 -1.4302865e+01 1.6407528e+04
+-1.6138021e+03 9.3844575e+01 2.1258586e+04
+5.6806584e+03 5.4400886e+02 0.0000000e+00
+1.9597959e-03 5.7936566e-03 -5.0893725e-04
+4.1763048e-02 1.1428696e-01 -6.7793676e-03
+8.0861350e-01 2.0739506e+00 -6.7949361e-02
+1.5587649e+01 3.8174272e+01 -6.8317701e-01
+6.6954019e+02 1.0857472e+03 2.2854637e+02
+1.8881285e+03 3.6109456e+03 6.8130002e+02
+3.4042518e+03 6.6294784e+03 1.4509857e+03
+4.7981416e+03 9.2546128e+03 2.5529564e+03
+5.7774170e+03 1.0915337e+04 3.9478452e+03
+6.2322582e+03 1.1443696e+04 5.5707917e+03
+6.1887422e+03 1.0973995e+04 7.3410298e+03
+5.7277291e+03 9.7484309e+03 9.1628045e+03
+4.9330912e+03 7.9972701e+03 1.0923547e+04
+3.8881765e+03 5.9411729e+03 1.2492053e+04
+2.7015479e+03 3.8371324e+03 1.3727455e+04
+1.5334913e+03 1.9749702e+03 1.4517647e+04
+5.9833199e+02 6.2437615e+02 1.4844832e+04
+3.9688609e+00 5.1585862e+01 1.4777296e+04
+-1.5487601e+01 1.1873194e+01 1.4660311e+04
+-2.2636397e+01 -2.6815251e+00 1.4466186e+04
+-7.5269010e+01 -1.5356204e+01 1.4243515e+04
+-1.4598454e+03 1.1395661e+02 1.8524623e+04
+5.0005022e+03 7.4575434e+02 0.0000000e+00
+1.6282968e-03 9.5729882e-03 -2.0165940e-03
+3.4763458e-02 1.7997641e-01 -3.0815471e-02
+6.7480476e-01 3.1272916e+00 -3.8256887e-01
+1.3046830e+01 5.6173916e+01 -5.0750020e+00
+5.6015718e+02 1.4846044e+03 1.4768134e+02
+1.5752778e+03 4.8083467e+03 4.8535768e+02
+2.8369560e+03 8.7744368e+03 1.0871831e+03
+3.9957220e+03 1.2237525e+04 1.9537393e+03
+4.8080205e+03 1.4439542e+04 3.0464976e+03
+5.1826883e+03 1.5148654e+04 4.3145394e+03
+5.1421283e+03 1.4537307e+04 5.6971541e+03
+4.7544060e+03 1.2923134e+04 7.1221494e+03
+4.0902085e+03 1.0609731e+04 8.5032185e+03
+3.2197727e+03 7.8907978e+03 9.7361617e+03
+2.2339097e+03 5.1113423e+03 1.0703409e+04
+1.2660008e+03 2.6601240e+03 1.1304607e+04
+4.9432294e+02 8.7769981e+02 1.1525783e+04
+5.3935831e+00 8.4047731e+01 1.1454222e+04
+-8.7766088e+00 2.5446611e+01 1.1345509e+04
+-1.1726738e+01 3.8671819e+00 1.1173576e+04
+-4.9943346e+01 -1.3915719e+01 1.0971232e+04
+-1.2051216e+03 1.3871372e+02 1.4312751e+04
+3.8198348e+03 9.1536052e+02 0.0000000e+00
+1.1737949e-03 1.6259556e-02 -5.4106607e-03
+2.5073027e-02 2.8500584e-01 -8.3665710e-02
+4.8779225e-01 4.5233011e+00 -9.6811025e-01
+9.4661852e+00 7.5093693e+01 -1.0124431e+01
+4.1213788e+02 1.8328125e+03 5.2292463e+01
+1.1672921e+03 5.7471738e+03 2.6242903e+02
+2.1062996e+03 1.0424968e+04 6.6972532e+02
+2.9672750e+03 1.4531831e+04 1.2574133e+03
+3.5675172e+03 1.7157385e+04 1.9906632e+03
+3.8395716e+03 1.8011548e+04 2.8370188e+03
+3.8019283e+03 1.7293927e+04 3.7601844e+03
+3.5070275e+03 1.5379595e+04 4.7164208e+03
+3.0090350e+03 1.2628930e+04 5.6514359e+03
+2.3613949e+03 9.3946283e+03 6.4940768e+03
+1.6319357e+03 6.0953325e+03 7.1552357e+03
+9.1958582e+02 3.2061626e+03 7.5454416e+03
+3.5705034e+02 1.1162651e+03 7.6417845e+03
+6.8552168e+00 1.3057206e+02 7.5620966e+03
+-7.2302882e-01 4.9464473e+01 7.4615507e+03
+1.0485575e+00 1.5692274e+01 7.3178670e+03
+-2.0242363e+01 -1.1085589e+01 7.1455828e+03
+-8.8944314e+02 2.2495083e+02 9.3301102e+03
+2.4166098e+03 1.1614718e+03 0.0000000e+00
+6.7032264e-04 2.9414874e-02 -1.2417421e-02
+1.4182131e-02 4.9511254e-01 -2.0716249e-01
+2.7455581e-01 7.1015021e+00 -2.4928759e+00
+5.3294084e+00 9.9855002e+01 -2.1660118e+01
+2.4438742e+02 2.0941513e+03 -3.5558343e+01
+7.1659676e+02 6.3581715e+03 6.7663771e+01
+1.3071284e+03 1.1490851e+04 2.9111217e+02
+1.8479183e+03 1.6021550e+04 6.0775055e+02
+2.2209961e+03 1.8930108e+04 9.9120859e+02
+2.3841219e+03 1.9880120e+04 1.4289745e+03
+2.3516394e+03 1.9090047e+04 1.9080426e+03
+2.1589109e+03 1.6972356e+04 2.4124989e+03
+1.8419484e+03 1.3924054e+04 2.9213767e+03
+1.4358814e+03 1.0338804e+04 3.3997114e+03
+9.8338180e+02 6.6896459e+03 3.7917368e+03
+5.4592720e+02 3.5271788e+03 4.0188007e+03
+2.0711651e+02 1.2919170e+03 4.0214017e+03
+7.3051286e+00 1.8919669e+02 3.9360136e+03
+5.8951756e+00 7.8156325e+01 3.8510158e+03
+1.1252626e+01 3.1293638e+01 3.7392131e+03
+4.7760213e+00 -1.9574486e+00 3.5970764e+03
+-5.7050720e+02 2.8699060e+02 4.7975069e+03
+1.2937994e+03 1.1705538e+03 0.0000000e+00
+2.4778964e-04 5.0845024e-02 -2.1140289e-02
+4.8961427e-03 8.8831464e-01 -4.0872362e-01
+9.0182518e-02 1.2758816e+01 -5.9655117e+00
+1.7173508e+00 1.5927494e+02 -6.3531577e+01
+9.5104269e+01 2.2060827e+03 -7.7297449e+01
+3.1127243e+02 6.6368403e+03 -4.2299173e+01
+5.8837542e+02 1.1988689e+04 3.7778644e+01
+8.4482449e+02 1.6717657e+04 1.4819474e+02
+1.0204669e+03 1.9758068e+04 2.6974819e+02
+1.0940968e+03 2.0745752e+04 4.0320801e+02
+1.0744107e+03 1.9914693e+04 5.4798908e+02
+9.7916234e+02 1.7693689e+04 7.0562290e+02
+8.2679404e+02 1.4493082e+04 8.8079751e+02
+6.3627992e+02 1.0724655e+04 1.0711783e+03
+4.2808859e+02 6.8822201e+03 1.2645420e+03
+2.3012266e+02 3.5665848e+03 1.4206083e+03
+8.1786231e+01 1.3071609e+03 1.4445722e+03
+5.6605424e+00 2.3344479e+02 1.3817082e+03
+7.3578767e+00 7.4168540e+01 1.3517651e+03
+1.3190042e+01 2.6610124e+01 1.2977805e+03
+1.4903383e+01 -2.7213827e-02 1.2082518e+03
+-2.9954585e+02 2.0701714e+02 1.8751044e+03
+7.3814867e+02 8.2125626e+02 0.0000000e+00
+1.2754656e-05 6.5501519e-02 -1.4603124e-02
+-2.8313121e-04 1.2089636e+00 -3.3485930e-01
+-1.1492345e-02 1.8295227e+01 -5.8744299e+00
+-2.0890413e-01 2.3453825e+02 -8.1272023e+01
+-1.8046755e+00 2.2267908e+03 -1.0330481e+02
+-4.3131497e+00 6.6165807e+03 -8.8345962e+01
+-4.5703791e+00 1.1933587e+04 -4.7829668e+01
+-8.5270776e-01 1.6646951e+04 -6.4607931e+00
+5.1232649e+00 1.9688928e+04 1.7442242e+01
+1.1140904e+01 2.0673608e+04 3.3350013e+01
+1.5871975e+01 1.9844773e+04 4.3294383e+01
+1.7822434e+01 1.7628650e+04 5.0786735e+01
+1.6799188e+01 1.4430580e+04 6.3085594e+01
+1.4443914e+01 1.0664595e+04 8.2840364e+01
+1.1808748e+01 6.8175321e+03 1.1606588e+02
+8.8219320e+00 3.4925217e+03 1.6548949e+02
+5.6017775e+00 1.2365448e+03 2.1858040e+02
+3.2181720e+00 2.1498249e+02 2.2635291e+02
+4.1140388e+00 3.4021890e+01 2.5285714e+02
+7.6353423e+00 4.0667332e+00 2.5029497e+02
+1.0895938e+01 -5.4674704e+00 2.1477094e+02
+-1.0901140e+02 8.7078878e+01 6.0227302e+02
+5.8291858e+02 4.1019380e+02 0.0000000e+00
+-6.4525187e-05 5.4055505e-02 1.1430078e-02
+-1.9859330e-03 1.0630394e+00 1.5613499e-01
+-4.3173996e-02 1.7232695e+01 1.1830442e+00
+-6.9691723e-01 2.3509717e+02 -5.6243185e-02
+-7.0325736e+00 2.2594231e+03 -4.0457407e+01
+-2.0612735e+01 6.6131616e+03 -6.4259629e+01
+-3.3563918e+01 1.1846223e+04 -3.6501674e+01
+-3.8899345e+01 1.6514175e+04 -3.4503002e+00
+-3.6593362e+01 1.9540604e+04 8.3383707e+00
+-2.9411273e+01 2.0507897e+04 1.5334835e+01
+-2.0003961e+01 1.9680128e+04 1.6954186e+01
+-1.1884630e+01 1.7477115e+04 1.5731916e+01
+-6.4354196e+00 1.4295316e+04 1.9677561e+01
+-1.7356773e+00 1.0553376e+04 2.7273369e+01
+3.1179278e+00 6.7250431e+03 4.2961298e+01
+6.6087156e+00 3.4159491e+03 6.5658000e+01
+6.8513568e+00 1.2048672e+03 6.5103330e+01
+3.9884069e+00 2.3312538e+02 3.3711772e+01
+2.4118194e+00 2.9749763e+01 3.1185882e+01
+3.0480550e+00 1.5949457e+00 2.5040063e+01
+5.0658102e+00 -2.1639406e+00 7.9925498e+00
+-1.1351951e+00 2.6978652e+01 1.9045020e+02
+4.9725112e+02 1.2549828e+02 0.0000000e+00
+-7.6937784e-05 2.2457807e-02 3.1557979e-02
+-2.3572939e-03 4.9427818e-01 5.9842669e-01
+-5.4143093e-02 9.3384178e+00 8.4384708e+00
+-9.6073023e-01 1.5962744e+02 8.2790035e+01
+-1.1111711e+01 2.3077200e+03 1.9773352e+01
+-3.2081375e+01 6.6290559e+03 -4.6392520e+01
+-5.1904222e+01 1.1720305e+04 -2.8529135e+01
+-5.9810220e+01 1.6308506e+04 -8.4423349e-01
+-5.5787774e+01 1.9297879e+04 1.0045195e+00
+-4.4126038e+01 2.0226918e+04 3.9697345e+00
+-2.8877227e+01 1.9397210e+04 2.5067445e+00
+-1.5688564e+01 1.7215160e+04 -1.2643246e+00
+-6.9993570e+00 1.4062956e+04 3.1964018e+00
+2.0321257e-01 1.0369896e+04 7.4305424e+00
+7.4427745e+00 6.5872950e+03 1.3131885e+01
+1.2403009e+01 3.3122238e+03 2.4761152e+01
+1.2343194e+01 1.1520230e+03 2.1855764e+01
+7.4233095e+00 2.2729598e+02 3.5750114e+00
+3.1283821e+00 2.3421102e+01 1.6361498e+00
+1.4115421e+00 4.2616655e-03 -3.7765686e-01
+1.8729858e+00 -6.5956014e-01 -5.1084077e+00
+2.6987390e+01 3.5875189e+00 6.7461706e+01
+3.0634993e+02 1.3242518e+01 0.0000000e+00
+-4.4340348e-05 0.0000000e+00 2.2425554e-02
+-1.5007208e-03 0.0000000e+00 5.1528109e-01
+-4.1213310e-02 0.0000000e+00 9.8103658e+00
+-1.0096310e+00 0.0000000e+00 1.6845845e+02
+-2.3392914e+01 2.3834321e+03 8.2506600e+01
+-6.8536788e+01 6.7057807e+03 -2.8270001e+01
+-1.1424641e+02 1.1625193e+04 -2.2680403e+01
+-1.4107868e+02 1.6110783e+04 3.2818100e+00
+-1.4467003e+02 1.9051119e+04 -5.5513977e+00
+-1.2932284e+02 1.9916685e+04 -8.4642875e+00
+-1.0248468e+02 1.9066130e+04 -1.2063072e+01
+-7.4494827e+01 1.6896632e+04 -1.7595520e+01
+-5.1295899e+01 1.3772103e+04 -1.1589722e+01
+-2.9862067e+01 1.0137937e+04 -8.8343447e+00
+-8.5775354e+00 6.4134247e+03 -1.0177391e+01
+7.5513046e+00 3.1771055e+03 -3.9384475e+00
+1.3975024e+01 1.0667785e+03 -1.8174785e+00
+1.0924023e+01 1.9145425e+02 -5.3350243e+00
+5.6035040e+00 6.4933733e+00 -1.8212617e+00
+1.8299421e+00 -4.2985281e+00 -6.4421117e-01
+6.4786500e-01 -9.9750583e-01 -3.8159514e-01
+1.1066618e+01 0.0000000e+00 1.7200198e+01
+9.0269724e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.9071742e+02 2.5960897e+03 4.4594188e+02
+-6.0185054e+02 9.1601882e+03 2.5156364e+02
+-1.1084395e+03 1.6030097e+04 -9.3136472e+01
+-1.6414605e+03 2.1552007e+04 3.8660501e+01
+-2.0234272e+03 2.5466398e+04 1.2380342e+02
+-2.1632429e+03 2.6704741e+04 3.7618936e+01
+-2.1086320e+03 2.5246311e+04 9.2122762e+01
+-1.8816029e+03 2.2196280e+04 1.3454391e+02
+-1.5620431e+03 1.8118108e+04 8.2003976e+01
+-1.2248438e+03 1.3273674e+04 1.0124315e+02
+-8.7086227e+02 8.3441724e+03 2.0685691e+02
+-5.4884994e+02 4.2728148e+03 2.6249239e+02
+-2.8522489e+02 1.7114540e+03 1.9253012e+02
+-8.9065072e+01 5.4768850e+02 8.8530227e+01
+2.0095031e+01 1.6621491e+02 2.4962606e+01
+2.2195420e+01 5.8637448e+01 1.7420345e+00
+6.7482435e+00 1.4531920e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.1895597e+02 0.0000000e+00 3.6372465e+02
+2.7338905e+03 0.0000000e+00 7.0335858e+02
+5.1075909e+03 0.0000000e+00 1.5124570e+02
+6.8649161e+03 0.0000000e+00 -1.1318408e+02
+7.8550651e+03 0.0000000e+00 3.8160891e+02
+7.9654721e+03 0.0000000e+00 8.1356542e+02
+7.2859965e+03 0.0000000e+00 1.0325533e+03
+6.3691064e+03 0.0000000e+00 1.0328238e+03
+5.1063034e+03 0.0000000e+00 9.1775589e+02
+3.4524550e+03 0.0000000e+00 9.1338483e+02
+2.0100315e+03 0.0000000e+00 9.7259857e+02
+1.0526215e+03 0.0000000e+00 9.8824135e+02
+6.4697065e+02 0.0000000e+00 8.5138138e+02
+6.1669250e+02 0.0000000e+00 4.9755205e+02
+5.7212161e+02 0.0000000e+00 1.2799916e+02
+2.6305322e+02 0.0000000e+00 2.3105099e+00
+6.1012308e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.2400209e+02 -7.7603774e+02 1.1927022e+02
+-4.9678577e+02 -2.7995589e+03 3.3812731e+02
+-9.1255137e+02 -4.7308914e+03 1.9286302e+02
+-1.1954149e+03 -6.1705043e+03 -2.4704250e+01
+-1.5133859e+03 -7.3049131e+03 1.1090523e+02
+-1.7893272e+03 -7.7364374e+03 3.2420743e+02
+-1.6677286e+03 -7.3363278e+03 3.4285835e+02
+-1.3477668e+03 -6.4325214e+03 3.0472968e+02
+-1.2214974e+03 -5.2192893e+03 3.3119588e+02
+-1.0531521e+03 -3.7781421e+03 3.4000392e+02
+-7.9731194e+02 -2.2725010e+03 3.5661915e+02
+-5.9247987e+02 -9.9718344e+02 3.6335332e+02
+-2.9445607e+02 -2.2680180e+02 3.0678382e+02
+5.0324730e+01 4.9757597e+01 2.0279668e+02
+2.2538979e+02 5.7831364e+01 1.0258359e+02
+1.3455600e+02 1.4357877e+01 3.2463931e+01
+4.9101977e+01 -1.4973979e-01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.4086344e+00 -1.1581591e+03 1.8797170e+02
+-2.4527627e+01 -3.2547825e+03 6.5902224e+01
+2.6607939e+00 -5.6958738e+03 -8.0217082e+01
+1.4120246e+02 -8.0314108e+03 -2.0031888e+00
+2.8655276e+02 -9.6623877e+03 4.5429714e+01
+3.9307451e+02 -1.0252954e+04 5.6645615e+00
+5.0353356e+02 -9.9441614e+03 1.4497848e+00
+5.5474942e+02 -8.8936834e+03 2.6264280e+01
+4.8918329e+02 -7.2828677e+03 3.7770036e+01
+4.0424657e+02 -5.3917976e+03 2.2721151e+01
+3.2657348e+02 -3.4658993e+03 1.8962407e+01
+2.3883060e+02 -1.7897749e+03 2.4040312e+01
+1.8002536e+02 -6.7364706e+02 6.6108917e+00
+1.4484736e+02 -1.7119060e+02 -4.9013682e+00
+1.0130807e+02 -3.2268741e+01 4.9272943e+00
+4.2041962e+01 -4.9384860e+00 4.8547910e+00
+1.2290695e+01 -1.0080345e+00 0.0000000e+00
+0 0 0
+0 0 0
+7.4281259e-05 -1.1649325e-02 1.1530703e-02
+2.1422056e-03 -2.5543180e-01 2.6331958e-01
+5.3410460e-02 -4.7974832e+00 4.9661788e+00
+1.2064238e+00 -8.1286568e+01 8.4036677e+01
+2.3774914e+01 -1.1605230e+03 3.9234304e+01
+7.1311494e+01 -3.3385214e+03 -1.6875999e+01
+1.3332146e+02 -5.9492514e+03 -1.1067150e+01
+1.9184193e+02 -8.3792981e+03 3.8987873e+00
+2.2805690e+02 -1.0034938e+04 3.7211809e+00
+2.3640558e+02 -1.0625823e+04 1.0864345e+01
+2.2493253e+02 -1.0274224e+04 1.3513288e+01
+1.9902140e+02 -9.1643393e+03 1.0651590e+01
+1.6077961e+02 -7.4983759e+03 1.4092611e+01
+1.1764923e+02 -5.5396131e+03 1.4092286e+01
+7.7014377e+01 -3.5481072e+03 1.0711617e+01
+4.3409248e+01 -1.8279993e+03 1.3046482e+01
+2.1198279e+01 -6.7955187e+02 1.1776487e+01
+9.3670265e+00 -1.6113078e+02 3.3353315e+00
+3.8795151e+00 -2.8120651e+01 9.3777164e-01
+1.2687529e+00 -3.9364939e+00 4.9750763e-01
+7.6314815e-01 -5.9181276e-01 -8.8265553e-03
+1.1221901e+01 9.1043516e-01 -1.1570185e+00
+4.9933186e+01 -1.3192168e+01 0.0000000e+00
+1.3490554e-04 -2.8110801e-02 1.6249632e-02
+3.3880799e-03 -5.5159762e-01 3.0667007e-01
+7.0585292e-02 -8.9095004e+00 4.2939588e+00
+1.2153368e+00 -1.2088371e+02 4.1715034e+01
+1.4216394e+01 -1.1532474e+03 9.1113342e+00
+4.3607367e+01 -3.3806713e+03 -2.4427553e+01
+8.1387203e+01 -6.0931058e+03 -1.3864628e+01
+1.1540469e+02 -8.5696354e+03 1.2577047e+00
+1.3539715e+02 -1.0229679e+04 4.8138101e+00
+1.3871031e+02 -1.0815400e+04 1.1554921e+01
+1.3003419e+02 -1.0435497e+04 1.3916861e+01
+1.1351257e+02 -9.2914852e+03 1.1861674e+01
+9.1000098e+01 -7.5983678e+03 1.3854297e+01
+6.5837747e+01 -5.6069585e+03 1.5565312e+01
+4.2041053e+01 -3.5848847e+03 1.7728558e+01
+2.2732429e+01 -1.8442693e+03 2.3654254e+01
+9.9219381e+00 -6.7401677e+02 2.0546959e+01
+3.2981176e+00 -1.4283185e+02 6.3758502e+00
+9.3163571e-01 -2.2868932e+01 3.3217661e+00
+3.5252048e-01 -3.3518954e+00 3.7964022e+00
+1.2705627e+00 -6.8537062e-01 4.4905539e+00
+4.0630023e+01 6.3597151e+00 -1.4745187e+01
+1.4652122e+02 -6.7948471e+01 0.0000000e+00
+1.2537837e-04 -3.4113908e-02 5.8132029e-03
+2.8641432e-03 -6.2890448e-01 7.8269990e-02
+5.4162784e-02 -9.4978613e+00 5.6929412e-01
+8.3435135e-01 -1.2137867e+02 -4.6701231e-01
+8.4389244e+00 -1.1476440e+03 -2.1541918e+01
+2.6418384e+01 -3.4156481e+03 -3.3596291e+01
+4.9694057e+01 -6.1915317e+03 -1.8428310e+01
+7.0661603e+01 -8.6969025e+03 -7.2220106e-01
+8.3007930e+01 -1.0357061e+04 7.0582480e+00
+8.5104286e+01 -1.0936708e+04 1.3849883e+01
+7.9806370e+01 -1.0538000e+04 1.6542472e+01
+6.9668318e+01 -9.3723141e+03 1.5818433e+01
+5.5879494e+01 -7.6625179e+03 1.7653614e+01
+4.0483287e+01 -5.6528193e+03 2.1295500e+01
+2.5899128e+01 -3.6153729e+03 2.9002475e+01
+1.4005324e+01 -1.8635896e+03 4.0926182e+01
+6.0118829e+00 -6.7249155e+02 4.0240425e+01
+1.8897040e+00 -1.2269557e+02 2.2203447e+01
+7.9741820e-01 -2.2443211e+01 2.3392173e+01
+9.5134638e-01 -6.5393017e+00 2.8676615e+01
+3.5814119e+00 -3.0067454e+00 3.2478329e+01
+8.2013861e+01 9.0070336e+00 -5.3434361e+01
+1.5605057e+02 -1.7220263e+02 0.0000000e+00
+9.9395860e-05 -2.6503760e-02 -7.6967889e-03
+2.0556208e-03 -4.6280539e-01 -1.7613464e-01
+3.6085543e-02 -6.6405041e+00 -3.0810697e+00
+5.4131674e-01 -8.2768006e+01 -4.2441959e+01
+5.9898709e+00 -1.1437680e+03 -5.4112546e+01
+1.9453590e+01 -3.4473194e+03 -4.6207941e+01
+3.6993163e+01 -6.2547133e+03 -2.4589902e+01
+5.2925117e+01 -8.7727220e+03 -2.5482562e+00
+6.2651985e+01 -1.0428242e+04 1.1104260e+01
+6.4894158e+01 -1.1000793e+04 2.1436111e+01
+6.1438575e+01 -1.0589963e+04 2.7832187e+01
+5.4059951e+01 -9.4124962e+03 3.1776770e+01
+4.3764395e+01 -7.6957902e+03 3.8083837e+01
+3.2046192e+01 -5.6804332e+03 4.8095444e+01
+2.0629518e+01 -3.6411145e+03 6.5016277e+01
+1.1032467e+01 -1.8919972e+03 9.1213378e+01
+4.5730974e+00 -7.0136340e+02 1.2111391e+02
+1.7871270e+00 -1.2930313e+02 1.2915251e+02
+2.0206564e+00 -4.5371706e+01 1.5417441e+02
+3.5738065e+00 -2.3300528e+01 1.7499729e+02
+9.7846505e+00 -1.2978019e+01 1.8607565e+02
+1.3794819e+02 -1.4714164e+01 -3.7336432e+01
+7.2133638e+00 -3.0291504e+02 0.0000000e+00
+1.4709272e-04 -1.5356985e-02 -1.1046078e-02
+3.0320021e-03 -2.5855316e-01 -2.1343416e-01
+5.6086567e-02 -3.7097955e+00 -3.1100469e+00
+1.0111001e+00 -5.2205635e+01 -3.2966167e+01
+5.3966607e+01 -1.0955535e+03 -4.0043014e+01
+1.7817452e+02 -3.3334499e+03 -2.0814594e+01
+3.3637918e+02 -6.0463625e+03 2.2830843e+01
+4.8063652e+02 -8.4685754e+03 8.2872266e+01
+5.7623871e+02 -1.0050641e+04 1.4949962e+02
+6.1191026e+02 -1.0591855e+04 2.2274857e+02
+5.9497927e+02 -1.0188742e+04 3.0095929e+02
+5.3741797e+02 -9.0543464e+03 3.8455380e+02
+4.4958716e+02 -7.4103050e+03 4.7627552e+02
+3.4198744e+02 -5.4844587e+03 5.7459352e+02
+2.2679592e+02 -3.5390936e+03 6.7386531e+02
+1.2035737e+02 -1.8644379e+03 7.5607123e+02
+4.4394760e+01 -6.8556582e+02 7.7766512e+02
+4.9761771e+00 -1.0468611e+02 7.5373247e+02
+6.9458599e+00 -4.8659552e+01 7.5743233e+02
+1.1472648e+01 -2.8702410e+01 7.6455150e+02
+2.4361337e+01 -1.6540712e+01 7.5865569e+02
+2.0929986e+02 -3.2258142e+01 2.6715399e+02
+-2.3401770e+02 -4.1920561e+02 0.0000000e+00
+2.9946086e-04 -8.5323803e-03 -6.4537430e-03
+6.4424813e-03 -1.4983075e-01 -1.0743650e-01
+1.2622175e-01 -2.3837225e+00 -1.2851754e+00
+2.4652285e+00 -3.9680754e+01 -1.0945876e+01
+1.1838540e+02 -9.6418954e+02 -1.6307786e+01
+3.5354417e+02 -3.0281115e+03 4.1406380e+01
+6.4868902e+02 -5.5106901e+03 1.6417329e+02
+9.1908506e+02 -7.7129828e+03 3.3741400e+02
+1.1047781e+03 -9.1435700e+03 5.4656070e+02
+1.1841975e+03 -9.6291945e+03 7.8382451e+02
+1.1652424e+03 -9.2592996e+03 1.0407789e+03
+1.0665046e+03 -8.2292301e+03 1.3080688e+03
+9.0635122e+02 -6.7409333e+03 1.5742943e+03
+7.0286232e+02 -4.9981568e+03 1.8210115e+03
+4.7838854e+02 -3.2333177e+03 2.0202288e+03
+2.6538370e+02 -1.6981655e+03 2.1344999e+03
+1.0850045e+02 -5.9307194e+02 2.1406221e+03
+1.1648298e+01 -7.3710933e+01 2.1053037e+03
+1.6134039e+01 -3.3809374e+01 2.0802147e+03
+2.6184366e+01 -2.1213374e+01 2.0577938e+03
+4.9472036e+01 -1.3454025e+01 2.0100084e+03
+2.6554168e+02 -1.5714551e+01 1.1573271e+03
+-5.1266655e+02 -4.1935887e+02 0.0000000e+00
+5.0051783e-04 -5.0759550e-03 -2.7831482e-03
+1.0918335e-02 -9.5744123e-02 -4.2715086e-02
+2.1673337e-01 -1.6697765e+00 -4.8560219e-01
+4.2810192e+00 -3.0096234e+01 -4.8849563e+00
+1.9569879e+02 -7.8479123e+02 3.2155826e+01
+5.6415004e+02 -2.5428656e+03 1.5005193e+02
+1.0244821e+03 -4.6539755e+03 3.7515493e+02
+1.4475325e+03 -6.5160781e+03 6.9799277e+02
+1.7423278e+03 -7.7189920e+03 1.0986042e+03
+1.8747418e+03 -8.1233028e+03 1.5575423e+03
+1.8539024e+03 -7.8068951e+03 2.0531637e+03
+1.7062759e+03 -6.9358937e+03 2.5605789e+03
+1.4593001e+03 -5.6808900e+03 3.0502705e+03
+1.1403245e+03 -4.2117219e+03 3.4849061e+03
+7.8439419e+02 -2.7204517e+03 3.8195816e+03
+4.4345189e+02 -1.4139188e+03 4.0114689e+03
+1.8955973e+02 -4.6859946e+02 4.0544871e+03
+2.0820040e+01 -4.8952147e+01 4.0157634e+03
+2.8930675e+01 -2.0558977e+01 3.9728593e+03
+4.6972463e+01 -1.4064322e+01 3.9197864e+03
+8.3869054e+01 -1.1074788e+01 3.8132964e+03
+2.8956223e+02 2.5640870e+00 2.6159744e+03
+-7.8493825e+02 -3.2043424e+02 0.0000000e+00
+6.8117412e-04 -3.1116027e-03 -1.0172296e-03
+1.4899294e-02 -6.1610221e-02 -1.5286969e-02
+2.9615744e-01 -1.1223757e+00 -1.8404038e-01
+5.8489035e+00 -2.0732702e+01 -2.3496456e+00
+2.6451376e+02 -5.7622693e+02 8.4729470e+01
+7.5807445e+02 -1.9151567e+03 2.7422388e+02
+1.3746257e+03 -3.5256039e+03 6.0818251e+02
+1.9422686e+03 -4.9403408e+03 1.0858986e+03
+2.3401364e+03 -5.8497542e+03 1.6845450e+03
+2.5222891e+03 -6.1521094e+03 2.3737508e+03
+2.4995529e+03 -5.9084449e+03 3.1178759e+03
+2.3060908e+03 -5.2457695e+03 3.8760669e+03
+1.9777565e+03 -4.2937224e+03 4.6013513e+03
+1.5504741e+03 -3.1801063e+03 5.2390343e+03
+1.0711448e+03 -2.0483776e+03 5.7297251e+03
+6.1019833e+02 -1.0532306e+03 6.0248393e+03
+2.6622020e+02 -3.3504225e+02 6.1193849e+03
+3.0638463e+01 -3.1106195e+01 6.0762940e+03
+4.3061328e+01 -1.2148669e+01 6.0160458e+03
+7.0023335e+01 -8.5566362e+00 5.9287880e+03
+1.2169577e+02 -6.8965239e+00 5.7529707e+03
+3.0003743e+02 1.5924939e+01 4.2344351e+03
+-1.0085850e+03 -2.5356192e+02 0.0000000e+00
+8.0675854e-04 -1.7168207e-03 -2.4174470e-04
+1.7655246e-02 -3.4736981e-02 -3.0071819e-03
+3.5086891e-01 -6.4236088e-01 -2.5277458e-02
+6.9234656e+00 -1.1927306e+01 -1.6648976e-01
+3.1478007e+02 -3.5110360e+02 1.2947030e+02
+9.0662941e+02 -1.1878913e+03 3.8370398e+02
+1.6469201e+03 -2.1966854e+03 8.1211717e+02
+2.3291320e+03 -3.0806856e+03 1.4214716e+03
+2.8082546e+03 -3.6468686e+03 2.1877482e+03
+3.0290925e+03 -3.8334150e+03 3.0722195e+03
+3.0042828e+03 -3.6794222e+03 4.0276562e+03
+2.7744248e+03 -3.2647047e+03 4.9998957e+03
+2.3820755e+03 -2.6703575e+03 5.9275464e+03
+1.8698032e+03 -1.9757729e+03 6.7415864e+03
+1.2936757e+03 -1.2695637e+03 7.3706447e+03
+7.3868732e+02 -6.4760109e+02 7.7598192e+03
+3.2477358e+02 -2.0047442e+02 7.8988098e+03
+3.8751715e+01 -1.7364716e+01 7.8502854e+03
+5.4934659e+01 -6.3775710e+00 7.7740921e+03
+8.9360600e+01 -4.0858927e+00 7.6576244e+03
+1.5343480e+02 -2.1280465e+00 7.4241484e+03
+3.0925762e+02 2.9071241e+01 5.6419092e+03
+-1.1933528e+03 -1.8373831e+02 0.0000000e+00
+8.7501007e-04 -5.5017286e-04 1.1046928e-04
+1.9155627e-02 -1.1211028e-02 3.2328043e-03
+3.8070056e-01 -2.0812254e-01 7.3805509e-02
+7.5102438e+00 -3.8656645e+00 1.5445537e+00
+3.4431321e+02 -1.1783961e+02 1.5894718e+02
+9.9794018e+02 -4.0235180e+02 4.5711773e+02
+1.8165201e+03 -7.4584842e+02 9.4860619e+02
+2.5711914e+03 -1.0465039e+03 1.6447987e+03
+3.1014199e+03 -1.2386995e+03 2.5212802e+03
+3.3462178e+03 -1.3017062e+03 3.5341500e+03
+3.3196263e+03 -1.2490023e+03 4.6286465e+03
+3.0665352e+03 -1.1078244e+03 5.7418798e+03
+2.6338110e+03 -9.0577722e+02 6.8030183e+03
+2.0681616e+03 -6.6978671e+02 7.7336835e+03
+1.4313096e+03 -4.2981416e+02 8.4547251e+03
+8.1733722e+02 -2.1835210e+02 8.9066555e+03
+3.5969811e+02 -6.6701371e+01 9.0743545e+03
+4.3620101e+01 -5.6133857e+00 9.0218656e+03
+6.2060558e+01 -2.0029348e+00 8.9354490e+03
+1.0092843e+02 -1.1648318e+00 8.8014962e+03
+1.7249447e+02 -2.0220445e-01 8.5349486e+03
+3.1863197e+02 1.6492227e+01 6.6150992e+03
+-1.3093234e+03 -6.4775994e+01 0.0000000e+00
+8.9596544e-04 5.5017286e-04 2.1785740e-04
+1.9617857e-02 1.1211028e-02 5.2830032e-03
+3.8992112e-01 2.0812254e-01 1.0935293e-01
+7.6921638e+00 3.8656645e+00 2.1958674e+00
+3.5394660e+02 1.1783961e+02 1.6917455e+02
+1.0285572e+03 4.0235180e+02 4.8277208e+02
+1.8738253e+03 7.4584842e+02 9.9627309e+02
+2.6531865e+03 1.0465039e+03 1.7225960e+03
+3.2007663e+03 1.2386995e+03 2.6372417e+03
+3.4536159e+03 1.3017062e+03 3.6945620e+03
+3.4263062e+03 1.2490023e+03 4.8371921e+03
+3.1652368e+03 1.1078244e+03 5.9992141e+03
+2.7187612e+03 9.0577722e+02 7.1065274e+03
+2.1349883e+03 6.6978671e+02 8.0775271e+03
+1.4775359e+03 4.2981416e+02 8.8303998e+03
+8.4354563e+02 2.1835210e+02 9.3040245e+03
+3.7105205e+02 6.6701371e+01 9.4814990e+03
+4.5154434e+01 5.6133857e+00 9.4275573e+03
+6.4290232e+01 2.0029345e+00 9.3376342e+03
+1.0453921e+02 1.1648241e+00 9.1978970e+03
+1.7847868e+02 2.0183501e-01 8.9208614e+03
+3.2349472e+02 -1.6507578e+01 6.9671182e+03
+-1.3413313e+03 6.4718101e+01 0.0000000e+00
+8.7501007e-04 1.7168207e-03 1.1046928e-04
+1.9155627e-02 3.4736981e-02 3.2328043e-03
+3.8070056e-01 6.4236088e-01 7.3805509e-02
+7.5102438e+00 1.1927306e+01 1.5445537e+00
+3.4431321e+02 3.5110360e+02 1.5894718e+02
+9.9794018e+02 1.1878913e+03 4.5711773e+02
+1.8165201e+03 2.1966854e+03 9.4860619e+02
+2.5711914e+03 3.0806856e+03 1.6447987e+03
+3.1014199e+03 3.6468686e+03 2.5212802e+03
+3.3462178e+03 3.8334150e+03 3.5341500e+03
+3.3196263e+03 3.6794222e+03 4.6286465e+03
+3.0665352e+03 3.2647047e+03 5.7418798e+03
+2.6338110e+03 2.6703575e+03 6.8030183e+03
+2.0681616e+03 1.9757729e+03 7.7336835e+03
+1.4313096e+03 1.2695637e+03 8.4547251e+03
+8.1733722e+02 6.4760109e+02 8.9066555e+03
+3.5969811e+02 2.0047442e+02 9.0743545e+03
+4.3620101e+01 1.7364716e+01 9.0218656e+03
+6.2060559e+01 6.3775705e+00 8.9354490e+03
+1.0092845e+02 4.0858831e+00 8.8014962e+03
+1.7249495e+02 2.1278002e+00 8.5349478e+03
+3.1863944e+02 -2.9062801e+01 6.6150609e+03
+-1.3092927e+03 1.8375957e+02 0.0000000e+00
+8.0675854e-04 3.1116027e-03 -2.4174470e-04
+1.7655246e-02 6.1610221e-02 -3.0071819e-03
+3.5086891e-01 1.1223757e+00 -2.5277458e-02
+6.9234656e+00 2.0732702e+01 -1.6648976e-01
+3.1478007e+02 5.7622693e+02 1.2947030e+02
+9.0662941e+02 1.9151567e+03 3.8370398e+02
+1.6469201e+03 3.5256039e+03 8.1211717e+02
+2.3291320e+03 4.9403408e+03 1.4214716e+03
+2.8082546e+03 5.8497542e+03 2.1877482e+03
+3.0290925e+03 6.1521094e+03 3.0722195e+03
+3.0042828e+03 5.9084449e+03 4.0276562e+03
+2.7744248e+03 5.2457695e+03 4.9998957e+03
+2.3820755e+03 4.2937224e+03 5.9275464e+03
+1.8698032e+03 3.1801063e+03 6.7415864e+03
+1.2936757e+03 2.0483776e+03 7.3706447e+03
+7.3868732e+02 1.0532306e+03 7.7598192e+03
+3.2477358e+02 3.3504225e+02 7.8988098e+03
+3.8751715e+01 3.1106195e+01 7.8502854e+03
+5.4934659e+01 1.2148669e+01 7.7740921e+03
+8.9360594e+01 8.5566425e+00 7.6576243e+03
+1.5343528e+02 6.8969344e+00 7.4241508e+03
+3.0927145e+02 -1.5921907e+01 5.6419175e+03
+-1.1933412e+03 2.5356343e+02 0.0000000e+00
+6.8117412e-04 5.0759550e-03 -1.0172296e-03
+1.4899294e-02 9.5744123e-02 -1.5286969e-02
+2.9615744e-01 1.6697765e+00 -1.8404038e-01
+5.8489035e+00 3.0096234e+01 -2.3496456e+00
+2.6451376e+02 7.8479123e+02 8.4729470e+01
+7.5807445e+02 2.5428656e+03 2.7422388e+02
+1.3746257e+03 4.6539755e+03 6.0818251e+02
+1.9422686e+03 6.5160781e+03 1.0858986e+03
+2.3401364e+03 7.7189920e+03 1.6845450e+03
+2.5222891e+03 8.1233028e+03 2.3737508e+03
+2.4995529e+03 7.8068951e+03 3.1178759e+03
+2.3060908e+03 6.9358937e+03 3.8760669e+03
+1.9777565e+03 5.6808900e+03 4.6013513e+03
+1.5504741e+03 4.2117219e+03 5.2390343e+03
+1.0711448e+03 2.7204517e+03 5.7297251e+03
+6.1019833e+02 1.4139188e+03 6.0248393e+03
+2.6622020e+02 4.6859946e+02 6.1193849e+03
+3.0638463e+01 4.8952147e+01 6.0762940e+03
+4.3061328e+01 2.0558976e+01 6.0160458e+03
+7.0023327e+01 1.4064304e+01 5.9287881e+03
+1.2169539e+02 1.1073790e+01 5.7529695e+03
+3.0003110e+02 -2.5777393e+00 4.2344708e+03
+-1.0085913e+03 3.2041525e+02 0.0000000e+00
+5.0051783e-04 8.5323803e-03 -2.7831482e-03
+1.0918335e-02 1.4983075e-01 -4.2715086e-02
+2.1673337e-01 2.3837225e+00 -4.8560219e-01
+4.2810192e+00 3.9680754e+01 -4.8849563e+00
+1.9569879e+02 9.6418954e+02 3.2155826e+01
+5.6415004e+02 3.0281115e+03 1.5005193e+02
+1.0244821e+03 5.5106901e+03 3.7515493e+02
+1.4475325e+03 7.7129828e+03 6.9799277e+02
+1.7423278e+03 9.1435700e+03 1.0986042e+03
+1.8747418e+03 9.6291945e+03 1.5575423e+03
+1.8539024e+03 9.2592996e+03 2.0531637e+03
+1.7062759e+03 8.2292301e+03 2.5605789e+03
+1.4593001e+03 6.7409333e+03 3.0502705e+03
+1.1403245e+03 4.9981568e+03 3.4849061e+03
+7.8439419e+02 3.2333177e+03 3.8195816e+03
+4.4345189e+02 1.6981655e+03 4.0114689e+03
+1.8955973e+02 5.9307194e+02 4.0544871e+03
+2.0820040e+01 7.3710933e+01 4.0157634e+03
+2.8930674e+01 3.3809374e+01 3.9728593e+03
+4.6972446e+01 2.1213386e+01 3.9197864e+03
+8.3868645e+01 1.3454943e+01 3.8132943e+03
+2.8953479e+02 1.5729505e+01 2.6159745e+03
+-7.8496006e+02 4.1946577e+02 0.0000000e+00
+2.9946086e-04 1.5356985e-02 -6.4537430e-03
+6.4424813e-03 2.5855316e-01 -1.0743650e-01
+1.2622175e-01 3.7097955e+00 -1.2851754e+00
+2.4652285e+00 5.2205635e+01 -1.0945876e+01
+1.1838540e+02 1.0955535e+03 -1.6307786e+01
+3.5354417e+02 3.3334499e+03 4.1406380e+01
+6.4868902e+02 6.0463625e+03 1.6417329e+02
+9.1908506e+02 8.4685754e+03 3.3741400e+02
+1.1047781e+03 1.0050641e+04 5.4656070e+02
+1.1841975e+03 1.0591855e+04 7.8382451e+02
+1.1652424e+03 1.0188742e+04 1.0407789e+03
+1.0665046e+03 9.0543464e+03 1.3080688e+03
+9.0635122e+02 7.4103050e+03 1.5742943e+03
+7.0286232e+02 5.4844587e+03 1.8210115e+03
+4.7838854e+02 3.5390936e+03 2.0202288e+03
+2.6538370e+02 1.8644379e+03 2.1344999e+03
+1.0850045e+02 6.8556582e+02 2.1406221e+03
+1.1648298e+01 1.0468611e+02 2.1053037e+03
+1.6134039e+01 4.8659552e+01 2.0802147e+03
+2.6184369e+01 2.8702405e+01 2.0577939e+03
+4.9471179e+01 1.6536762e+01 2.0099918e+03
+2.6558731e+02 3.2274190e+01 1.1573533e+03
+-5.1257801e+02 4.1930308e+02 0.0000000e+00
+1.4709272e-04 2.6503760e-02 -1.1046078e-02
+3.0320021e-03 4.6280539e-01 -2.1343416e-01
+5.6086567e-02 6.6405041e+00 -3.1100469e+00
+1.0111001e+00 8.2768006e+01 -3.2966167e+01
+5.3966607e+01 1.1437680e+03 -4.0043014e+01
+1.7817452e+02 3.4473194e+03 -2.0814594e+01
+3.3637918e+02 6.2547133e+03 2.2830843e+01
+4.8063652e+02 8.7727220e+03 8.2872266e+01
+5.7623871e+02 1.0428242e+04 1.4949962e+02
+6.1191026e+02 1.1000793e+04 2.2274857e+02
+5.9497927e+02 1.0589963e+04 3.0095929e+02
+5.3741797e+02 9.4124962e+03 3.8455380e+02
+4.4958716e+02 7.6957902e+03 4.7627552e+02
+3.4198744e+02 5.6804332e+03 5.7459352e+02
+2.2679592e+02 3.6411145e+03 6.7386531e+02
+1.2035737e+02 1.8919972e+03 7.5607123e+02
+4.4394760e+01 7.0136340e+02 7.7766512e+02
+4.9761771e+00 1.2930313e+02 7.5373247e+02
+6.9458608e+00 4.5371706e+01 7.5743233e+02
+1.1472435e+01 2.3300109e+01 7.6454996e+02
+2.4360327e+01 1.2971679e+01 7.5865812e+02
+2.0933315e+02 1.4546335e+01 2.6750535e+02
+-2.3371856e+02 3.0290354e+02 0.0000000e+00
+9.9395864e-05 3.4113908e-02 -7.6967888e-03
+2.0556209e-03 6.2890448e-01 -1.7613464e-01
+3.6085544e-02 9.4978613e+00 -3.0810697e+00
+5.4131674e-01 1.2137867e+02 -4.2441959e+01
+5.9898709e+00 1.1476440e+03 -5.4112546e+01
+1.9453590e+01 3.4156481e+03 -4.6207941e+01
+3.6993163e+01 6.1915317e+03 -2.4589902e+01
+5.2925117e+01 8.6969025e+03 -2.5482562e+00
+6.2651985e+01 1.0357061e+04 1.1104260e+01
+6.4894158e+01 1.0936708e+04 2.1436111e+01
+6.1438575e+01 1.0538000e+04 2.7832187e+01
+5.4059951e+01 9.3723141e+03 3.1776770e+01
+4.3764395e+01 7.6625179e+03 3.8083837e+01
+3.2046192e+01 5.6528193e+03 4.8095444e+01
+2.0629518e+01 3.6153729e+03 6.5016277e+01
+1.1032467e+01 1.8635896e+03 9.1213378e+01
+4.5730975e+00 6.7249155e+02 1.2111391e+02
+1.7871272e+00 1.2269557e+02 1.2915251e+02
+2.0206497e+00 2.2443186e+01 1.5417434e+02
+3.5737259e+00 6.5389099e+00 1.7499716e+02
+9.7838573e+00 2.9924851e+00 1.8608827e+02
+1.3794165e+02 -9.4980614e+00 -3.6821586e+01
+7.0759631e+00 1.7195399e+02 0.0000000e+00
+1.2537843e-04 2.8110801e-02 5.8132031e-03
+2.8641439e-03 5.5159762e-01 7.8269991e-02
+5.4162791e-02 8.9095004e+00 5.6929412e-01
+8.3435143e-01 1.2088371e+02 -4.6701231e-01
+8.4389249e+00 1.1532474e+03 -2.1541919e+01
+2.6418385e+01 3.3806713e+03 -3.3596291e+01
+4.9694058e+01 6.0931058e+03 -1.8428311e+01
+7.0661605e+01 8.5696354e+03 -7.2220143e-01
+8.3007931e+01 1.0229679e+04 7.0582471e+00
+8.5104285e+01 1.0815400e+04 1.3849883e+01
+7.9806371e+01 1.0435497e+04 1.6542472e+01
+6.9668322e+01 9.2914852e+03 1.5818430e+01
+5.5879492e+01 7.5983678e+03 1.7653617e+01
+4.0483284e+01 5.6069584e+03 2.1295509e+01
+2.5899124e+01 3.5848847e+03 2.9002483e+01
+1.4005322e+01 1.8442693e+03 4.0926192e+01
+6.0118892e+00 6.7401678e+02 4.0240426e+01
+1.8896036e+00 1.4283140e+02 2.2203398e+01
+7.9742400e-01 2.2868729e+01 2.3392242e+01
+9.5143393e-01 3.3513000e+00 2.8676468e+01
+3.5838185e+00 6.7526113e-01 3.2475726e+01
+8.2068960e+01 -6.6782490e+00 -5.3549812e+01
+1.5581422e+02 6.8006533e+01 0.0000000e+00
+1.3490567e-04 1.1649325e-02 1.6249633e-02
+3.3880825e-03 2.5543180e-01 3.0667007e-01
+7.0585344e-02 4.7974832e+00 4.2939588e+00
+1.2153377e+00 8.1286568e+01 4.1715034e+01
+1.4216408e+01 1.1605230e+03 9.1113284e+00
+4.3607384e+01 3.3385215e+03 -2.4427573e+01
+8.1387229e+01 5.9492514e+03 -1.3864643e+01
+1.1540474e+02 8.3792981e+03 1.2576859e+00
+1.3539717e+02 1.0034938e+04 4.8137702e+00
+1.3871026e+02 1.0625825e+04 1.1555334e+01
+1.3003367e+02 1.0274226e+04 1.3916248e+01
+1.1351335e+02 9.1643440e+03 1.1861582e+01
+9.1000046e+01 7.4983756e+03 1.3854389e+01
+6.5837580e+01 5.5396129e+03 1.5565615e+01
+4.2040920e+01 3.5481234e+03 1.7728775e+01
+2.2732351e+01 1.8280141e+03 2.3654603e+01
+9.9209071e+00 6.7954747e+02 2.0546196e+01
+3.2931843e+00 1.6113194e+02 6.3757845e+00
+9.2733531e-01 2.8123555e+01 3.3220073e+00
+3.5224506e-01 3.9369388e+00 3.7973648e+00
+1.2760904e+00 5.8747410e-01 4.4816586e+00
+4.0834291e+01 -1.0115292e+00 -1.5033572e+01
+1.4641328e+02 1.3244218e+01 0.0000000e+00
+7.4281470e-05 0.0000000e+00 1.1530704e-02
+2.1422120e-03 0.0000000e+00 2.6331957e-01
+5.3410669e-02 0.0000000e+00 4.9661788e+00
+1.2064324e+00 0.0000000e+00 8.4036681e+01
+2.3775289e+01 1.1581576e+03 3.9233998e+01
+7.1311850e+01 3.2547837e+03 -1.6876815e+01
+1.3332225e+02 5.6958738e+03 -1.1067845e+01
+1.9184343e+02 8.0314100e+03 3.8982936e+00
+2.2805734e+02 9.6624005e+03 3.7251511e+00
+2.3639365e+02 1.0252966e+04 1.0867686e+01
+2.2493426e+02 9.9441591e+03 1.3514968e+01
+1.9904194e+02 8.8936953e+03 1.0626601e+01
+1.6080109e+02 7.2829704e+03 1.4096306e+01
+1.1764091e+02 5.3920017e+03 1.4204745e+01
+7.6928414e+01 3.4659699e+03 1.0851826e+01
+4.3433902e+01 1.7898038e+03 1.3179430e+01
+2.1128814e+01 6.7372895e+02 1.1843752e+01
+9.1924576e+00 1.7136048e+02 3.3467111e+00
+3.7163192e+00 3.2413541e+01 9.3919545e-01
+1.2012145e+00 4.9970485e+00 5.0795347e-01
+7.6461628e-01 9.8523627e-01 -3.4581317e-03
+1.1292464e+01 0.0000000e+00 -1.3056912e+00
+4.9856367e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.4190039e+00 7.7605031e+02 1.8797422e+02
+-2.4517482e+01 2.7995587e+03 6.5866466e+01
+2.6816861e+00 4.7308752e+03 -8.0255196e+01
+1.4126294e+02 6.1705512e+03 -2.0000383e+00
+2.8651476e+02 7.3051085e+03 4.5349955e+01
+3.9294808e+02 7.7364593e+03 5.6606674e+00
+5.0369466e+02 7.3359147e+03 1.5856898e+00
+5.5536914e+02 6.4321470e+03 2.6162449e+01
+4.8974730e+02 5.2191828e+03 3.8157594e+01
+4.0345712e+02 3.7773428e+03 2.5753351e+01
+3.2756047e+02 2.2699263e+03 2.3374092e+01
+2.3984640e+02 9.9609726e+02 2.8385388e+01
+1.7786036e+02 2.3009380e+02 8.9364391e+00
+1.3903527e+02 -4.3730980e+01 -4.4587651e+00
+9.5803262e+01 -5.2756529e+01 5.0040423e+00
+3.9469866e+01 -1.2058297e+01 4.7836981e+00
+1.1776917e+01 7.4706389e-01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.2405058e+02 0.0000000e+00 1.1929302e+02
+-4.9676272e+02 0.0000000e+00 3.3806519e+02
+-9.1255768e+02 0.0000000e+00 1.9276378e+02
+-1.1954247e+03 0.0000000e+00 -2.4773126e+01
+-1.5134742e+03 0.0000000e+00 1.1086350e+02
+-1.7893773e+03 0.0000000e+00 3.2418109e+02
+-1.6676717e+03 0.0000000e+00 3.4292069e+02
+-1.3477108e+03 0.0000000e+00 3.0474797e+02
+-1.2213982e+03 0.0000000e+00 3.3118375e+02
+-1.0530911e+03 0.0000000e+00 3.3999776e+02
+-7.9739362e+02 0.0000000e+00 3.5653068e+02
+-5.9262810e+02 0.0000000e+00 3.6340594e+02
+-2.9438635e+02 0.0000000e+00 3.0654224e+02
+5.0200316e+01 0.0000000e+00 2.0266798e+02
+2.2529310e+02 0.0000000e+00 1.0269051e+02
+1.3450951e+02 0.0000000e+00 3.2507297e+01
+4.9054027e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.1827457e+02 -4.8479011e+02 6.1455235e+01
+3.3600700e+02 -1.6998164e+03 9.3417495e+01
+6.3247797e+02 -2.9905024e+03 -3.5088385e+01
+1.0881227e+03 -4.1682944e+03 -4.1716309e+00
+1.4574469e+03 -5.1818954e+03 1.7410882e+02
+1.7051869e+03 -5.7052294e+03 1.3272508e+02
+1.8789357e+03 -5.6356709e+03 8.1546118e+01
+1.7854568e+03 -5.0978672e+03 2.3414542e+02
+1.5156895e+03 -4.2371114e+03 2.6658218e+02
+1.2348477e+03 -3.2085342e+03 1.7411060e+02
+8.2751170e+02 -2.1374985e+03 1.7204461e+02
+5.0221551e+02 -1.1943191e+03 1.1777805e+02
+3.9316440e+02 -5.5596095e+02 2.0342931e+01
+3.3491083e+02 -2.1977775e+02 1.8237810e+01
+2.5071356e+02 -7.4257863e+01 5.9366969e+01
+1.4549858e+02 -2.3175569e+01 3.3953378e+01
+6.8917890e+01 -6.6110938e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.3350554e+02 -7.3442786e+02 1.1954015e+02
+4.5065982e+02 -2.0987516e+03 4.3289377e+01
+8.2660769e+02 -3.7220187e+03 -4.9142017e+01
+1.1690856e+03 -5.2697231e+03 2.4472369e+01
+1.3565035e+03 -6.3310329e+03 1.0355569e+02
+1.3867764e+03 -6.6931844e+03 9.7807929e+01
+1.3252143e+03 -6.4619569e+03 1.0241465e+02
+1.1595555e+03 -5.7540587e+03 1.5379736e+02
+9.1932648e+02 -4.6869317e+03 1.7347493e+02
+6.6374435e+02 -3.4479608e+03 1.4741501e+02
+3.9827565e+02 -2.2078236e+03 1.4603990e+02
+1.9879195e+02 -1.1473660e+03 1.3911467e+02
+1.1886609e+02 -4.4516253e+02 8.9477591e+01
+9.6385167e+01 -1.2290877e+02 4.1073015e+01
+7.0783504e+01 -2.6554038e+01 2.3892577e+01
+3.7977963e+01 -4.4267216e+00 9.2072602e+00
+1.6258477e+01 -1.3701209e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.5954057e-06 -6.2671194e-03 6.3449961e-03
+-1.8253324e-04 -1.3896727e-01 1.4763700e-01
+-5.7430859e-03 -2.6562692e+00 2.8630596e+00
+-1.2489527e-01 -4.6200519e+01 5.0394899e+01
+-6.3144491e-01 -6.8529428e+02 2.5670317e+01
+-2.8290431e+00 -1.9932537e+03 -5.6874089e+00
+-9.9862163e+00 -3.5809132e+03 -3.4850435e+00
+-2.1479561e+01 -5.0628829e+03 2.9962997e+00
+-3.5526436e+01 -6.0665036e+03 2.0503377e+00
+-4.7765018e+01 -6.4138221e+03 6.8596789e+00
+-5.2854629e+01 -6.1858706e+03 8.5604962e+00
+-5.1012488e+01 -5.5009595e+03 5.4954493e+00
+-4.5636781e+01 -4.4815244e+03 6.5046276e+00
+-3.8615025e+01 -3.2932162e+03 8.0242543e+00
+-3.1639805e+01 -2.1010706e+03 8.9723310e+00
+-2.4142273e+01 -1.0833923e+03 1.2550079e+01
+-1.5006315e+01 -4.0765329e+02 1.1246112e+01
+-6.2047587e+00 -1.0009196e+02 4.0011792e+00
+-1.4788876e+00 -1.8406655e+01 1.1787025e+00
+2.1932023e-02 -2.5794584e+00 5.7803336e-01
+6.2672222e-01 -6.5549568e-01 -9.5735578e-02
+1.0002828e+01 -2.1151081e+00 3.2393055e+00
+3.8225614e+01 -5.6593256e-01 0.0000000e+00
+-3.3673364e-06 -1.5007457e-02 8.8786108e-03
+-2.3286342e-04 -2.9653731e-01 1.7006959e-01
+-7.2569013e-03 -4.8423571e+00 2.4339997e+00
+-1.5430022e-01 -6.6767938e+01 2.4371054e+01
+-2.0696723e+00 -6.5124238e+02 6.6052249e+00
+-7.4440507e+00 -1.9240215e+03 -1.1575536e+01
+-1.6651473e+01 -3.4884121e+03 -6.0379167e+00
+-2.7990157e+01 -4.9264308e+03 9.0477262e-01
+-3.8866316e+01 -5.8930061e+03 1.6707998e+00
+-4.6587401e+01 -6.2324374e+03 5.5838052e+00
+-4.8730934e+01 -6.0084100e+03 6.8883521e+00
+-4.5400864e+01 -5.3395900e+03 4.4322436e+00
+-3.9045075e+01 -4.3518552e+03 4.8082574e+00
+-3.1541538e+01 -3.1977950e+03 6.7663378e+00
+-2.3961053e+01 -2.0380650e+03 9.7628511e+00
+-1.6921957e+01 -1.0485140e+03 1.4510258e+01
+-1.0162493e+01 -3.8601750e+02 1.2958891e+01
+-4.3567624e+00 -8.3658398e+01 4.1797628e+00
+-1.5161805e+00 -1.3919080e+01 2.1400025e+00
+-6.5623495e-01 -2.1641282e+00 2.7262413e+00
+-9.5194384e-02 -1.1221078e+00 4.5586901e+00
+3.4625308e+01 -1.0655591e+01 1.9097208e+01
+1.3361407e+02 3.2049579e-01 0.0000000e+00
+4.1913504e-07 -1.8117894e-02 3.2353962e-03
+-1.3271797e-04 -3.3544549e-01 4.5140444e-02
+-4.5842109e-03 -5.1000987e+00 3.6162898e-01
+-9.1936294e-02 -6.5815365e+01 3.3534383e-01
+-1.0731569e+00 -6.3043999e+02 -1.0954967e+01
+-3.9856367e+00 -1.8873523e+03 -1.7220096e+01
+-9.1339922e+00 -3.4377950e+03 -9.0091114e+00
+-1.5642563e+01 -4.8489584e+03 -1.7731605e-01
+-2.2040823e+01 -5.7914705e+03 3.3358040e+00
+-2.6694485e+01 -6.1245020e+03 7.1991115e+00
+-2.8082329e+01 -5.9019970e+03 8.6747953e+00
+-2.6237444e+01 -5.2424552e+03 7.4457440e+00
+-2.2634579e+01 -4.2738879e+03 7.9924228e+00
+-1.8385885e+01 -3.1414923e+03 1.0558908e+01
+-1.4081547e+01 -2.0033385e+03 1.5813087e+01
+-1.0001405e+01 -1.0319393e+03 2.3245192e+01
+-5.9132136e+00 -3.7394514e+02 2.3097571e+01
+-2.3985765e+00 -6.9224706e+01 1.2952159e+01
+-1.2633597e+00 -1.3130410e+01 1.4224378e+01
+-1.6087985e+00 -4.3323252e+00 1.8952725e+01
+-1.8030803e+00 -4.0395925e+00 2.7254557e+01
+6.6723335e+01 -4.1625097e+01 7.3513822e+01
+2.4821754e+02 -1.1127744e+01 0.0000000e+00
+8.6389107e-06 -1.4026752e-02 -4.0003856e-03
+8.2272870e-05 -2.4554928e-01 -9.1923249e-02
+1.0357014e-04 -3.5368750e+00 -1.6191649e+00
+-8.1437586e-03 -4.4320723e+01 -2.2564346e+01
+1.6542471e-02 -6.1833107e+02 -2.8699941e+01
+-8.9720777e-02 -1.8723038e+03 -2.4205115e+01
+-9.8888996e-01 -3.4115017e+03 -1.2516413e+01
+-2.8677736e+00 -4.8046170e+03 -1.0648659e+00
+-5.3617763e+00 -5.7304440e+03 5.9223475e+00
+-7.6574048e+00 -6.0576922e+03 1.1664177e+01
+-8.7491518e+00 -5.8352914e+03 1.5146282e+01
+-8.4850227e+00 -5.1815160e+03 1.6752128e+01
+-7.5793383e+00 -4.2256076e+03 1.9815650e+01
+-6.5374233e+00 -3.1085108e+03 2.5417786e+01
+-5.5392063e+00 -1.9867639e+03 3.5011849e+01
+-4.5401499e+00 -1.0311194e+03 4.9764553e+01
+-3.2288216e+00 -3.8325943e+02 6.6880763e+01
+-1.9662668e+00 -7.1534165e+01 7.2943621e+01
+-2.5756921e+00 -2.6073607e+01 9.0483166e+01
+-4.7504990e+00 -1.4634984e+01 1.0910995e+02
+-6.9361309e+00 -1.2354932e+01 1.3414592e+02
+9.9527946e+01 -1.0593359e+02 2.3694028e+02
+3.5958506e+02 -5.1569778e+01 0.0000000e+00
+3.5545628e-05 -8.1135530e-03 -5.8016517e-03
+7.5307502e-04 -1.3677068e-01 -1.1230132e-01
+1.4753819e-02 -1.9652093e+00 -1.6426343e+00
+2.9420643e-01 -2.7669895e+01 -1.7576569e+01
+2.0692455e+01 -5.8182247e+02 -2.0811014e+01
+7.0195561e+01 -1.7751559e+03 -9.9799967e+00
+1.3223118e+02 -3.2312724e+03 1.3938693e+01
+1.8733135e+02 -4.5438686e+03 4.6495463e+01
+2.2246034e+02 -5.4128229e+03 8.2652748e+01
+2.3421735e+02 -5.7198373e+03 1.2249067e+02
+2.2652316e+02 -5.5088444e+03 1.6449988e+02
+2.0435688e+02 -4.8925744e+03 2.0861931e+02
+1.7095349e+02 -3.9951209e+03 2.5676626e+02
+1.2947730e+02 -2.9475923e+03 3.0835786e+02
+8.4077752e+01 -1.8964451e+03 3.6075729e+02
+4.0853310e+01 -9.9715821e+02 4.0630012e+02
+7.5463338e+00 -3.6702328e+02 4.2691240e+02
+-3.5945183e+00 -5.7386184e+01 4.2133511e+02
+-6.4715878e+00 -2.7819881e+01 4.3649883e+02
+-1.1139808e+01 -1.7729106e+01 4.6220540e+02
+-1.6063741e+01 -1.5502311e+01 5.0577506e+02
+1.5032516e+02 -1.5747538e+02 6.1629110e+02
+4.8868225e+02 -1.0690963e+02 0.0000000e+00
+8.4244650e-05 -4.5182852e-03 -3.3800517e-03
+1.9643229e-03 -7.9447230e-02 -5.6225345e-02
+4.1558726e-02 -1.2658087e+00 -6.7096290e-01
+8.6873179e-01 -2.1093613e+01 -5.6507483e+00
+4.8972290e+01 -5.1060999e+02 -7.4501211e+00
+1.5205375e+02 -1.6059340e+03 2.4818438e+01
+2.8170037e+02 -2.9317541e+03 9.2288780e+01
+3.9986409e+02 -4.1194110e+03 1.8705207e+02
+4.8015583e+02 -4.9022397e+03 3.0109118e+02
+5.1361287e+02 -5.1779601e+03 4.2979869e+02
+5.0448417e+02 -4.9862386e+03 5.6795112e+02
+4.6134205e+02 -4.4295493e+03 7.1008867e+02
+3.9186403e+02 -3.6207114e+03 8.5016634e+02
+3.0326017e+02 -2.6766084e+03 9.7878459e+02
+2.0460976e+02 -1.7266015e+03 1.0827197e+03
+1.0908644e+02 -9.0519611e+02 1.1470549e+03
+3.2679557e+01 -3.1640646e+02 1.1722589e+03
+-5.1822033e+00 -4.0119041e+01 1.1718223e+03
+-1.0493664e+01 -1.8963453e+01 1.1895936e+03
+-1.7777886e+01 -1.2436915e+01 1.2282636e+03
+-2.4281881e+01 -1.2261070e+01 1.2987779e+03
+2.6190546e+02 -1.6332252e+02 1.3082621e+03
+6.4516275e+02 -1.3613324e+02 0.0000000e+00
+1.3454451e-04 -2.7097810e-03 -1.4425308e-03
+3.2345214e-03 -5.1226002e-02 -2.1979945e-02
+6.9966239e-02 -8.9548100e-01 -2.4554053e-01
+1.4823881e+00 -1.6172986e+01 -2.3675368e+00
+7.9816792e+01 -4.1641564e+02 1.9320107e+01
+2.4174032e+02 -1.3495079e+03 8.5303681e+01
+4.4530913e+02 -2.4768813e+03 2.0960387e+02
+6.3196221e+02 -3.4811024e+03 3.8686563e+02
+7.6093980e+02 -4.1397411e+03 6.0575498e+02
+8.1768335e+02 -4.3700435e+03 8.5489682e+02
+8.0730929e+02 -4.2063908e+03 1.1216421e+03
+7.4220657e+02 -3.7358047e+03 1.3919669e+03
+6.3421958e+02 -3.0536861e+03 1.6500222e+03
+4.9451335e+02 -2.2575307e+03 1.8767556e+03
+3.3750560e+02 -1.4543494e+03 2.0513921e+03
+1.8448181e+02 -7.5477077e+02 2.1599369e+03
+6.1538351e+01 -2.5049399e+02 2.2220458e+03
+-6.0480942e+00 -2.6496059e+01 2.2352909e+03
+-1.3428907e+01 -1.1132910e+01 2.2698200e+03
+-2.2939672e+01 -7.5183573e+00 2.3348136e+03
+-2.8735445e+01 -9.0256695e+00 2.4441843e+03
+4.4876188e+02 -1.3980699e+02 2.2614695e+03
+8.0516645e+02 -1.1621452e+02 0.0000000e+00
+1.6629735e-04 -1.6799205e-03 -5.1498372e-04
+4.0953328e-03 -3.3350024e-02 -7.5870010e-03
+9.0131181e-02 -6.0917043e-01 -8.7871311e-02
+1.9309759e+00 -1.1279706e+01 -1.0632232e+00
+1.0533613e+02 -3.0662395e+02 4.8322729e+01
+3.2062373e+02 -1.0181258e+03 1.5439130e+02
+5.9177867e+02 -1.8791033e+03 3.3946031e+02
+8.4097476e+02 -2.6429637e+03 6.0261536e+02
+1.0141306e+03 -3.1416686e+03 9.3054863e+02
+1.0917711e+03 -3.3144851e+03 1.3055083e+03
+1.0801880e+03 -3.1884317e+03 1.7069142e+03
+9.9539462e+02 -2.8300789e+03 2.1118846e+03
+8.5284012e+02 -2.3120276e+03 2.4951424e+03
+6.6703950e+02 -1.7077420e+03 2.8287883e+03
+4.5711288e+02 -1.0973043e+03 3.0857751e+03
+2.5183152e+02 -5.6361542e+02 3.2529866e+03
+8.6984850e+01 -1.7978000e+02 3.3615080e+03
+-6.6308017e+00 -1.7069039e+01 3.3893502e+03
+-1.5747759e+01 -6.8033412e+00 3.4438297e+03
+-2.7220684e+01 -4.9325953e+00 3.5384880e+03
+-3.1020602e+01 -6.6129509e+00 3.6887919e+03
+6.7432997e+02 -9.4443609e+01 3.2691371e+03
+9.7136050e+02 -6.7362761e+01 0.0000000e+00
+1.7545314e-04 -9.3620548e-04 -1.1240964e-04
+4.4398720e-03 -1.8992266e-02 -1.2547933e-03
+9.9629898e-02 -3.5215014e-01 -7.0360694e-03
+2.1623656e+00 -6.5551040e+00 2.9461558e-02
+1.2235660e+02 -1.8725212e+02 7.3081094e+01
+3.7851808e+02 -6.3241875e+02 2.1548542e+02
+7.0204886e+02 -1.1723126e+03 4.5356595e+02
+9.9968071e+02 -1.6501356e+03 7.9018921e+02
+1.2067673e+03 -1.9610293e+03 1.2110372e+03
+1.3001415e+03 -2.0679295e+03 1.6934326e+03
+1.2873175e+03 -1.9882111e+03 2.2101773e+03
+1.1873188e+03 -1.7637445e+03 2.7309489e+03
+1.0183564e+03 -1.4399920e+03 3.2226325e+03
+7.9737659e+02 -1.0626424e+03 3.6499594e+03
+5.4695954e+02 -6.8124490e+02 3.9806162e+03
+3.0160588e+02 -3.4726725e+02 4.2013495e+03
+1.0470426e+02 -1.0798604e+02 4.3496248e+03
+-7.3680948e+00 -9.9088326e+00 4.3885844e+03
+-1.7962748e+01 -4.1503402e+00 4.4588288e+03
+-3.1276445e+01 -3.3182691e+00 4.5778515e+03
+-3.3516041e+01 -4.3500058e+00 4.7625396e+03
+8.7344004e+02 -4.2138078e+01 4.1460515e+03
+1.1418899e+03 -2.0225701e+01 0.0000000e+00
+1.7208420e-04 -3.0173389e-04 6.8454277e-05
+4.4670402e-03 -6.1642802e-03 1.9290553e-03
+1.0203185e-01 -1.1473804e-01 4.3185656e-02
+2.2408075e+00 -2.1365269e+00 8.9404483e-01
+1.3141457e+02 -6.2920548e+01 8.9461112e+01
+4.1274375e+02 -2.1437391e+02 2.5661270e+02
+7.6886422e+02 -3.9831738e+02 5.3027342e+02
+1.0966078e+03 -5.6092743e+02 9.1564890e+02
+1.3246118e+03 -6.6653810e+02 1.3979657e+03
+1.4274714e+03 -7.0269284e+02 1.9514755e+03
+1.4136331e+03 -6.7539647e+02 2.5446540e+03
+1.3041233e+03 -5.9894482e+02 3.1422662e+03
+1.1188847e+03 -4.8882147e+02 3.7060218e+03
+8.7630109e+02 -3.6053142e+02 4.1957714e+03
+6.0100028e+02 -2.3084378e+02 4.5756796e+03
+3.3097851e+02 -1.1721956e+02 4.8319906e+03
+1.1432377e+02 -3.6014717e+01 5.0053936e+03
+-8.1040848e+00 -3.3185337e+00 5.0505275e+03
+-1.9748516e+01 -1.4943569e+00 5.1296806e+03
+-3.4471019e+01 -1.2918247e+00 5.2630536e+03
+-3.6133337e+01 -1.6393301e+00 5.4689730e+03
+1.0007604e+03 -9.3877565e+00 4.7540958e+03
+1.2897520e+03 -2.8599004e-01 0.0000000e+00
+1.6910147e-04 3.0173389e-04 1.2339619e-04
+4.4383578e-03 6.1642802e-03 2.9743350e-03
+1.0213906e-01 1.1473804e-01 6.1280331e-02
+2.2542601e+00 2.1365269e+00 1.2261301e+00
+1.3417107e+02 6.2920548e+01 9.5160560e+01
+4.2394743e+02 2.1437391e+02 2.7102255e+02
+7.9107301e+02 3.9831738e+02 5.5714009e+02
+1.1289780e+03 5.6092743e+02 9.5949373e+02
+1.3640028e+03 6.6653810e+02 1.4631811e+03
+1.4699986e+03 7.0269284e+02 2.0414127e+03
+1.4557614e+03 6.7539647e+02 2.6611646e+03
+1.3430216e+03 5.9894482e+02 3.2854901e+03
+1.1523123e+03 4.8882147e+02 3.8742962e+03
+9.0248913e+02 3.6053142e+02 4.3857325e+03
+6.1885092e+02 2.3084378e+02 4.7827299e+03
+3.4055843e+02 1.1721956e+02 5.0512780e+03
+1.1727430e+02 3.6014717e+01 5.2330263e+03
+-8.4131823e+00 3.3185337e+00 5.2799569e+03
+-2.0438275e+01 1.4943569e+00 5.3616967e+03
+-3.5689456e+01 1.2918256e+00 5.4993417e+03
+-3.7268465e+01 1.6392115e+00 5.7118062e+03
+1.0434119e+03 9.3660193e+00 4.9731353e+03
+1.3526511e+03 2.4293528e-01 0.0000000e+00
+1.7208420e-04 9.3620548e-04 6.8454277e-05
+4.4670402e-03 1.8992266e-02 1.9290553e-03
+1.0203185e-01 3.5215014e-01 4.3185656e-02
+2.2408075e+00 6.5551040e+00 8.9404483e-01
+1.3141457e+02 1.8725212e+02 8.9461112e+01
+4.1274375e+02 6.3241875e+02 2.5661270e+02
+7.6886422e+02 1.1723126e+03 5.3027342e+02
+1.0966078e+03 1.6501356e+03 9.1564890e+02
+1.3246118e+03 1.9610293e+03 1.3979657e+03
+1.4274714e+03 2.0679295e+03 1.9514755e+03
+1.4136331e+03 1.9882111e+03 2.5446540e+03
+1.3041233e+03 1.7637445e+03 3.1422662e+03
+1.1188847e+03 1.4399920e+03 3.7060218e+03
+8.7630109e+02 1.0626424e+03 4.1957714e+03
+6.0100028e+02 6.8124490e+02 4.5756796e+03
+3.3097851e+02 3.4726725e+02 4.8319906e+03
+1.1432377e+02 1.0798604e+02 5.0053936e+03
+-8.1040848e+00 9.9088326e+00 5.0505275e+03
+-1.9748516e+01 4.1503396e+00 5.1296806e+03
+-3.4471038e+01 3.3182432e+00 5.2630535e+03
+-3.6133960e+01 4.3496767e+00 5.4689719e+03
+1.0007325e+03 4.2151161e+01 4.7540574e+03
+1.2897340e+03 2.0221253e+01 0.0000000e+00
+1.7545314e-04 1.6799205e-03 -1.1240964e-04
+4.4398720e-03 3.3350024e-02 -1.2547933e-03
+9.9629898e-02 6.0917043e-01 -7.0360694e-03
+2.1623656e+00 1.1279706e+01 2.9461558e-02
+1.2235660e+02 3.0662395e+02 7.3081094e+01
+3.7851808e+02 1.0181258e+03 2.1548542e+02
+7.0204886e+02 1.8791033e+03 4.5356595e+02
+9.9968071e+02 2.6429637e+03 7.9018921e+02
+1.2067673e+03 3.1416686e+03 1.2110372e+03
+1.3001415e+03 3.3144851e+03 1.6934326e+03
+1.2873175e+03 3.1884317e+03 2.2101773e+03
+1.1873188e+03 2.8300789e+03 2.7309489e+03
+1.0183564e+03 2.3120276e+03 3.2226325e+03
+7.9737659e+02 1.7077420e+03 3.6499594e+03
+5.4695954e+02 1.0973043e+03 3.9806162e+03
+3.0160588e+02 5.6361542e+02 4.2013495e+03
+1.0470426e+02 1.7978000e+02 4.3496248e+03
+-7.3680948e+00 1.7069039e+01 4.3885844e+03
+-1.7962747e+01 6.8033418e+00 4.4588288e+03
+-3.1276428e+01 4.9326211e+00 4.5778516e+03
+-3.3516070e+01 6.6138206e+00 4.7625414e+03
+8.7343481e+02 9.4458717e+01 4.1460717e+03
+1.1419048e+03 6.7389818e+01 0.0000000e+00
+1.6629735e-04 2.7097810e-03 -5.1498372e-04
+4.0953328e-03 5.1226002e-02 -7.5870010e-03
+9.0131181e-02 8.9548100e-01 -8.7871311e-02
+1.9309759e+00 1.6172986e+01 -1.0632232e+00
+1.0533613e+02 4.1641564e+02 4.8322729e+01
+3.2062373e+02 1.3495079e+03 1.5439130e+02
+5.9177867e+02 2.4768813e+03 3.3946031e+02
+8.4097476e+02 3.4811024e+03 6.0261536e+02
+1.0141306e+03 4.1397411e+03 9.3054863e+02
+1.0917711e+03 4.3700435e+03 1.3055083e+03
+1.0801880e+03 4.2063908e+03 1.7069142e+03
+9.9539462e+02 3.7358047e+03 2.1118846e+03
+8.5284012e+02 3.0536861e+03 2.4951424e+03
+6.6703950e+02 2.2575307e+03 2.8287883e+03
+4.5711288e+02 1.4543494e+03 3.0857751e+03
+2.5183152e+02 7.5477077e+02 3.2529866e+03
+8.6984850e+01 2.5049399e+02 3.3615080e+03
+-6.6308017e+00 2.6496059e+01 3.3893502e+03
+-1.5747759e+01 1.1132910e+01 3.4438297e+03
+-2.7220670e+01 7.5183656e+00 3.5384880e+03
+-3.1020513e+01 9.0258692e+00 3.6887918e+03
+6.7432926e+02 1.3979264e+02 3.2691613e+03
+9.7136130e+02 1.1616873e+02 0.0000000e+00
+1.3454451e-04 4.5182852e-03 -1.4425308e-03
+3.2345214e-03 7.9447230e-02 -2.1979945e-02
+6.9966239e-02 1.2658087e+00 -2.4554053e-01
+1.4823881e+00 2.1093613e+01 -2.3675368e+00
+7.9816792e+01 5.1060999e+02 1.9320107e+01
+2.4174032e+02 1.6059340e+03 8.5303681e+01
+4.4530913e+02 2.9317541e+03 2.0960387e+02
+6.3196221e+02 4.1194110e+03 3.8686563e+02
+7.6093980e+02 4.9022397e+03 6.0575498e+02
+8.1768335e+02 5.1779601e+03 8.5489682e+02
+8.0730929e+02 4.9862386e+03 1.1216421e+03
+7.4220657e+02 4.4295493e+03 1.3919669e+03
+6.3421958e+02 3.6207114e+03 1.6500222e+03
+4.9451335e+02 2.6766084e+03 1.8767556e+03
+3.3750560e+02 1.7266015e+03 2.0513921e+03
+1.8448181e+02 9.0519611e+02 2.1599369e+03
+6.1538351e+01 3.1640646e+02 2.2220458e+03
+-6.0480943e+00 4.0119041e+01 2.2352909e+03
+-1.3428908e+01 1.8963452e+01 2.2698200e+03
+-2.2939704e+01 1.2436896e+01 2.3348136e+03
+-2.8736723e+01 1.2261791e+01 2.4441837e+03
+4.4872608e+02 1.6335063e+02 2.2614348e+03
+8.0516586e+02 1.3614721e+02 0.0000000e+00
+8.4244650e-05 8.1135530e-03 -3.3800517e-03
+1.9643229e-03 1.3677068e-01 -5.6225345e-02
+4.1558726e-02 1.9652093e+00 -6.7096290e-01
+8.6873179e-01 2.7669895e+01 -5.6507483e+00
+4.8972290e+01 5.8182247e+02 -7.4501211e+00
+1.5205375e+02 1.7751559e+03 2.4818438e+01
+2.8170037e+02 3.2312724e+03 9.2288780e+01
+3.9986409e+02 4.5438686e+03 1.8705207e+02
+4.8015583e+02 5.4128229e+03 3.0109118e+02
+5.1361287e+02 5.7198373e+03 4.2979869e+02
+5.0448417e+02 5.5088444e+03 5.6795112e+02
+4.6134205e+02 4.8925744e+03 7.1008867e+02
+3.9186403e+02 3.9951209e+03 8.5016634e+02
+3.0326017e+02 2.9475923e+03 9.7878459e+02
+2.0460976e+02 1.8964451e+03 1.0827197e+03
+1.0908644e+02 9.9715821e+02 1.1470549e+03
+3.2679557e+01 3.6702328e+02 1.1722589e+03
+-5.1822034e+00 5.7386184e+01 1.1718223e+03
+-1.0493666e+01 2.7819878e+01 1.1895936e+03
+-1.7777967e+01 1.7729041e+01 1.2282638e+03
+-2.4285523e+01 1.5501915e+01 1.2987805e+03
+2.6175520e+02 1.5746086e+02 1.3081744e+03
+6.4510328e+02 1.0693340e+02 0.0000000e+00
+3.5545628e-05 1.4026752e-02 -5.8016517e-03
+7.5307503e-04 2.4554928e-01 -1.1230132e-01
+1.4753819e-02 3.5368750e+00 -1.6426343e+00
+2.9420643e-01 4.4320723e+01 -1.7576569e+01
+2.0692455e+01 6.1833107e+02 -2.0811014e+01
+7.0195561e+01 1.8723038e+03 -9.9799967e+00
+1.3223118e+02 3.4115017e+03 1.3938693e+01
+1.8733135e+02 4.8046170e+03 4.6495463e+01
+2.2246034e+02 5.7304440e+03 8.2652748e+01
+2.3421735e+02 6.0576922e+03 1.2249067e+02
+2.2652316e+02 5.8352914e+03 1.6449988e+02
+2.0435688e+02 5.1815160e+03 2.0861931e+02
+1.7095349e+02 4.2256076e+03 2.5676626e+02
+1.2947730e+02 3.1085108e+03 3.0835786e+02
+8.4077752e+01 1.9867639e+03 3.6075729e+02
+4.0853310e+01 1.0311194e+03 4.0630012e+02
+7.5463338e+00 3.8325943e+02 4.2691240e+02
+-3.5945183e+00 7.1534165e+01 4.2133511e+02
+-6.4715874e+00 2.6073596e+01 4.3649880e+02
+-1.1139940e+01 1.4634798e+01 4.6220542e+02
+-1.6068647e+01 1.2351031e+01 5.0578516e+02
+1.5015696e+02 1.0583726e+02 6.1659106e+02
+4.8866689e+02 5.1622537e+01 0.0000000e+00
+8.6389182e-06 1.8117894e-02 -4.0003856e-03
+8.2272933e-05 3.3544549e-01 -9.1923249e-02
+1.0357046e-04 5.1000987e+00 -1.6191649e+00
+-8.1437545e-03 6.5815365e+01 -2.2564346e+01
+1.6542486e-02 6.3043999e+02 -2.8699941e+01
+-8.9720759e-02 1.8873523e+03 -2.4205115e+01
+-9.8888997e-01 3.4377950e+03 -1.2516413e+01
+-2.8677736e+00 4.8489584e+03 -1.0648660e+00
+-5.3617763e+00 5.7914705e+03 5.9223475e+00
+-7.6574048e+00 6.1245020e+03 1.1664177e+01
+-8.7491518e+00 5.9019970e+03 1.5146282e+01
+-8.4850225e+00 5.2424552e+03 1.6752128e+01
+-7.5793383e+00 4.2738879e+03 1.9815650e+01
+-6.5374232e+00 3.1414923e+03 2.5417786e+01
+-5.5392063e+00 2.0033385e+03 3.5011849e+01
+-4.5401500e+00 1.0319393e+03 4.9764553e+01
+-3.2288216e+00 3.7394514e+02 6.6880763e+01
+-1.9662674e+00 6.9224701e+01 7.2943619e+01
+-2.5756963e+00 1.3130409e+01 9.0483152e+01
+-4.7507559e+00 4.3319146e+00 1.0911050e+02
+-6.9452088e+00 4.0250851e+00 1.3416545e+02
+9.9242897e+01 4.1166117e+01 2.3753449e+02
+3.5968710e+02 1.1235118e+01 0.0000000e+00
+4.1916403e-07 1.5007457e-02 3.2353963e-03
+-1.3271759e-04 2.9653731e-01 4.5140444e-02
+-4.5842056e-03 4.8423571e+00 3.6162898e-01
+-9.1936236e-02 6.6767938e+01 3.3534378e-01
+-1.0731566e+00 6.5124239e+02 -1.0954968e+01
+-3.9856365e+00 1.9240215e+03 -1.7220098e+01
+-9.1339925e+00 3.4884121e+03 -9.0091123e+00
+-1.5642564e+01 4.9264308e+03 -1.7731618e-01
+-2.2040823e+01 5.8930061e+03 3.3358036e+00
+-2.6694485e+01 6.2324374e+03 7.1991130e+00
+-2.8082329e+01 6.0084100e+03 8.6747937e+00
+-2.6237439e+01 5.3395901e+03 7.4457410e+00
+-2.2634577e+01 4.3518552e+03 7.9924277e+00
+-1.8385882e+01 3.1977950e+03 1.0558913e+01
+-1.4081547e+01 2.0380650e+03 1.5813089e+01
+-1.0001409e+01 1.0485140e+03 2.3245193e+01
+-5.9131700e+00 3.8601778e+02 2.3097613e+01
+-2.3986579e+00 8.3658406e+01 1.2952170e+01
+-1.2633725e+00 1.3918984e+01 1.4224370e+01
+-1.6089289e+00 2.1638615e+00 1.8952804e+01
+-1.8085683e+00 1.1098013e+00 2.7260421e+01
+6.6535343e+01 1.0257930e+01 7.3701391e+01
+2.4810339e+02 -1.2792419e-01 0.0000000e+00
+-3.3672469e-06 6.2671194e-03 8.8786108e-03
+-2.3286141e-04 1.3896727e-01 1.7006959e-01
+-7.2568611e-03 2.6562692e+00 2.4339997e+00
+-1.5429945e-01 4.6200520e+01 2.4371054e+01
+-2.0696644e+00 6.8529433e+02 6.6051882e+00
+-7.4440503e+00 1.9932537e+03 -1.1575590e+01
+-1.6651480e+01 3.5809132e+03 -6.0379346e+00
+-2.7990171e+01 5.0628830e+03 9.0476171e-01
+-3.8866308e+01 6.0665036e+03 1.6707902e+00
+-4.6587397e+01 6.4138220e+03 5.5838654e+00
+-4.8730949e+01 6.1858737e+03 6.8888711e+00
+-4.5400713e+01 5.5009610e+03 4.4319738e+00
+-3.9044695e+01 4.4815264e+03 4.8084934e+00
+-3.1541369e+01 3.2932159e+03 6.7665110e+00
+-2.3961057e+01 2.1010706e+03 9.7629149e+00
+-1.6918900e+01 1.0834133e+03 1.4514875e+01
+-1.0163967e+01 4.0765741e+02 1.2960139e+01
+-4.3607790e+00 1.0009321e+02 4.1793024e+00
+-1.5198940e+00 1.8406422e+01 2.1391511e+00
+-6.5543549e-01 2.5843829e+00 2.7273093e+00
+-9.1007022e-02 6.4943197e-01 4.5542919e+00
+3.4740446e+01 1.9567398e+00 1.8947609e+01
+1.3349749e+02 6.9398435e-01 0.0000000e+00
+-3.5952672e-06 0.0000000e+00 6.3449962e-03
+-1.8252792e-04 0.0000000e+00 1.4763700e-01
+-5.7428988e-03 0.0000000e+00 2.8630598e+00
+-1.2489130e-01 0.0000000e+00 5.0394911e+01
+-6.3140273e-01 7.3442698e+02 2.5668870e+01
+-2.8287619e+00 2.0987522e+03 -5.6893168e+00
+-9.9864557e+00 3.7220182e+03 -3.4856260e+00
+-2.1480194e+01 5.2697252e+03 2.9956580e+00
+-3.5526337e+01 6.3310330e+03 2.0498826e+00
+-4.7764206e+01 6.6932336e+03 6.8778441e+00
+-5.2862722e+01 6.4619697e+03 8.5788094e+00
+-5.0990346e+01 5.7540694e+03 5.5025312e+00
+-4.5616053e+01 4.6869476e+03 6.4986793e+00
+-3.8609308e+01 3.4479856e+03 8.0306420e+00
+-3.1540753e+01 2.2083918e+03 9.1788124e+00
+-2.4121903e+01 1.1474744e+03 1.2673193e+01
+-1.5077618e+01 4.4526920e+02 1.1268002e+01
+-6.3516590e+00 1.2293238e+02 3.9767014e+00
+-1.6059032e+00 2.6532215e+01 1.1731549e+00
+-3.2733346e-02 4.4351338e+00 5.5711571e-01
+6.2760151e-01 1.4322969e+00 -8.6476623e-02
+1.0076450e+01 0.0000000e+00 3.0858001e+00
+3.8267643e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.3350764e+02 4.8484444e+02 1.1949401e+02
+4.5067416e+02 1.6998351e+03 4.3221553e+01
+8.2661006e+02 2.9904740e+03 -4.9160627e+01
+1.1690823e+03 4.1683119e+03 2.4432710e+01
+1.3564921e+03 5.1819720e+03 1.0356918e+02
+1.3866221e+03 5.7051185e+03 9.8012189e+01
+1.3254988e+03 5.6352077e+03 1.0296717e+02
+1.1603355e+03 5.0979467e+03 1.5412407e+02
+9.2005346e+02 4.2374184e+03 1.7335168e+02
+6.6524364e+02 3.2085091e+03 1.5104212e+02
+3.9975745e+02 2.1371812e+03 1.5054416e+02
+1.9920030e+02 1.1964139e+03 1.4224806e+02
+1.1644258e+02 5.5915349e+02 8.9559203e+01
+9.1407732e+01 2.1997589e+02 4.0144832e+01
+6.6357683e+01 7.2313554e+01 2.3829901e+01
+3.5981527e+01 2.2375257e+01 9.3774223e+00
+1.5887971e+01 6.6991173e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.1822617e+02 0.0000000e+00 6.1428048e+01
+3.3599419e+02 0.0000000e+00 9.3334304e+01
+6.3250225e+02 0.0000000e+00 -3.5108150e+01
+1.0881236e+03 0.0000000e+00 -4.2248364e+00
+1.4574545e+03 0.0000000e+00 1.7404583e+02
+1.7051910e+03 0.0000000e+00 1.3265918e+02
+1.8790206e+03 0.0000000e+00 8.1569022e+01
+1.7854753e+03 0.0000000e+00 2.3406476e+02
+1.5157668e+03 0.0000000e+00 2.6651832e+02
+1.2349475e+03 0.0000000e+00 1.7404266e+02
+8.2749620e+02 0.0000000e+00 1.7190920e+02
+5.0197292e+02 0.0000000e+00 1.1781470e+02
+3.9302513e+02 0.0000000e+00 2.0196402e+01
+3.3489825e+02 0.0000000e+00 1.8179850e+01
+2.5050379e+02 0.0000000e+00 5.9468715e+01
+1.4541257e+02 0.0000000e+00 3.3961669e+01
+6.8902755e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.3140834e+02 -4.4080968e+02 7.4645393e+01
+8.6919795e+02 -1.5521061e+03 8.2428730e+01
+1.6066117e+03 -2.7765288e+03 -5.4300096e+01
+2.1147637e+03 -3.8262644e+03 8.2169932e+01
+2.4765817e+03 -4.5583199e+03 3.0395567e+02
+2.7491725e+03 -4.8058789e+03 2.2682089e+02
+2.6040375e+03 -4.6032080e+03 2.4078288e+02
+2.1573759e+03 -4.0633341e+03 4.4452965e+02
+1.7990330e+03 -3.2864312e+03 4.6438674e+02
+1.3423633e+03 -2.3978532e+03 4.1979372e+02
+7.3023491e+02 -1.5115139e+03 4.1401707e+02
+3.7406374e+02 -7.8573931e+02 2.8989139e+02
+2.5593876e+02 -3.5626955e+02 1.5230923e+02
+2.0516086e+02 -1.6773423e+02 1.0370299e+02
+1.7964256e+02 -7.9798600e+01 7.5452567e+01
+1.4058325e+02 -3.2354397e+01 2.4582436e+01
+7.1503289e+01 -9.2443188e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.0679175e+01 -3.6965282e+02 7.3079312e+01
+-2.3194132e+01 -1.0461807e+03 4.1023406e+01
+-5.4800075e+01 -1.8319747e+03 -2.2124351e+01
+-1.2984785e+02 -2.5667227e+03 1.7268977e+01
+-1.9789685e+02 -3.0518683e+03 6.5218903e+01
+-2.1330908e+02 -3.1902268e+03 4.9675229e+01
+-2.2594846e+02 -3.0526003e+03 5.0252956e+01
+-2.3642143e+02 -2.6994248e+03 8.2325034e+01
+-1.9573788e+02 -2.1758890e+03 8.6612666e+01
+-1.5571154e+02 -1.5706650e+03 7.8880474e+01
+-1.5074323e+02 -9.6989005e+02 8.6276103e+01
+-1.2002804e+02 -4.6326594e+02 8.2622183e+01
+-6.7923632e+01 -1.4594206e+02 5.9082803e+01
+-2.3728006e+01 -2.3428418e+01 3.4890083e+01
+6.6307266e+00 2.2965163e-01 1.9010500e+01
+1.7983931e+01 1.1770195e+00 5.4727240e+00
+1.2873566e+01 -3.8632577e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.7270233e-05 -3.3210034e-03 3.3346783e-03
+-5.4137358e-04 -7.3320684e-02 7.7014203e-02
+-1.4306624e-02 -1.3921094e+00 1.4776871e+00
+-3.3790398e-01 -2.3970355e+01 2.5661039e+01
+-7.0337041e+00 -3.5020281e+02 1.2613434e+01
+-2.1008926e+01 -1.0116756e+03 -3.7118018e+00
+-3.7710036e+01 -1.8052969e+03 -2.6663341e+00
+-5.0943258e+01 -2.5396071e+03 -3.2159390e-01
+-5.6156925e+01 -3.0286777e+03 -2.8772644e+00
+-5.3719961e+01 -3.1852149e+03 -1.9341683e+00
+-4.7349936e+01 -3.0582568e+03 -1.7823653e+00
+-3.9015387e+01 -2.7087619e+03 -4.4423952e+00
+-2.9030189e+01 -2.1922012e+03 -4.7366839e+00
+-1.8603837e+01 -1.5915357e+03 -4.0658517e+00
+-9.1451451e+00 -9.9249257e+02 -3.9580248e+00
+-2.3106625e+00 -4.8680810e+02 -2.2475184e+00
+5.3848439e-01 -1.6292162e+02 -8.1260423e-01
+6.5412355e-01 -3.0248690e+01 -8.5288065e-01
+5.3231266e-01 -2.3507769e+00 -2.8342253e-01
+5.2442052e-01 4.7886728e-01 -8.7707714e-02
+7.6479459e-01 -1.7134761e-03 -8.6293963e-01
+5.4845135e+00 -2.5838440e+00 6.2708843e+00
+3.0945422e+01 -5.0426924e+00 0.0000000e+00
+-3.0376176e-05 -7.9701186e-03 4.6761240e-03
+-8.4353037e-04 -1.5705290e-01 8.9019004e-02
+-1.8723368e-02 -2.5540964e+00 1.2624724e+00
+-3.3316278e-01 -3.5009846e+01 1.2480827e+01
+-3.9433208e+00 -3.3878298e+02 2.9346426e+00
+-1.1943914e+01 -9.9750710e+02 -6.7339987e+00
+-2.1333678e+01 -1.8035693e+03 -3.7793403e+00
+-2.8070397e+01 -2.5426005e+03 -7.0572688e-01
+-3.0027417e+01 -3.0366598e+03 -1.5625069e+00
+-2.8078671e+01 -3.2049389e+03 -3.4727789e-01
+-2.4074635e+01 -3.0831870e+03 -7.3405066e-02
+-1.9157249e+01 -2.7330747e+03 -2.0042263e+00
+-1.3909297e+01 -2.2171002e+03 -2.2409672e+00
+-8.4240064e+00 -1.6155621e+03 -1.3320084e+00
+-3.1559433e+00 -1.0144833e+03 -1.6537844e-01
+4.2260844e-01 -5.0645133e+02 2.1332812e+00
+1.3847951e+00 -1.7480849e+02 2.4728951e+00
+7.9234722e-01 -3.3111084e+01 1.8618498e-01
+3.3278421e-01 -3.9526143e+00 -6.3902769e-02
+2.0713215e-01 5.6379679e-02 -5.0476924e-01
+4.7849304e-01 3.9576434e-01 -1.4735304e+00
+1.3935701e+01 -1.1220308e+01 2.7852353e+01
+1.1040891e+02 -2.8159792e+01 0.0000000e+00
+-2.7508752e-05 -9.6334660e-03 1.6912753e-03
+-7.1031945e-04 -1.7803190e-01 2.3247879e-02
+-1.4509020e-02 -2.6996997e+00 1.7877602e-01
+-2.3297554e-01 -3.4719045e+01 2.9014413e-02
+-2.4040620e+00 -3.3135292e+02 -6.0701385e+00
+-7.4114802e+00 -9.9068862e+02 -9.4627760e+00
+-1.3299980e+01 -1.8037446e+03 -5.1215387e+00
+-1.7516428e+01 -2.5450250e+03 -8.2312576e-01
+-1.8773146e+01 -3.0410144e+03 2.6374293e-01
+-1.7618794e+01 -3.2155431e+03 1.7923311e+00
+-1.5173538e+01 -3.0966077e+03 2.3042715e+00
+-1.2154887e+01 -2.7460919e+03 1.2389139e+00
+-8.9350591e+00 -2.2308092e+03 1.2484033e+00
+-5.5430937e+00 -1.6296855e+03 2.5289995e+00
+-2.2488138e+00 -1.0288506e+03 5.0636243e+00
+2.6771280e-02 -5.2022382e+02 8.8071738e+00
+7.0108849e-01 -1.8179192e+02 9.1762961e+00
+4.0092387e-01 -3.1407367e+01 4.6730785e+00
+2.5769579e-01 -4.7497506e+00 3.9491595e+00
+3.8006788e-01 -1.3275128e-01 2.1491501e+00
+7.3901976e-01 1.1649491e+00 -1.1619993e+00
+1.2665775e+01 -3.1983420e+01 7.3658534e+01
+2.0765881e+02 -9.2924324e+01 0.0000000e+00
+-1.8672282e-05 -7.4638023e-03 -2.1423525e-03
+-4.3201341e-04 -1.3047850e-01 -4.9181469e-02
+-8.1201935e-03 -1.8757842e+00 -8.6487321e-01
+-1.2377950e-01 -2.3445825e+01 -1.2022457e+01
+-1.2689309e+00 -3.2672504e+02 -1.5364860e+01
+-3.8476828e+00 -9.8925957e+02 -1.3035950e+01
+-6.8027269e+00 -1.8041411e+03 -6.8255485e+00
+-8.8308056e+00 -2.5449453e+03 -9.4224914e-01
+-9.3138150e+00 -3.0403633e+03 2.3586603e+00
+-8.5944306e+00 -3.2174076e+03 5.1601603e+00
+-7.2670995e+00 -3.0998180e+03 6.8884413e+00
+-5.6952698e+00 -2.7494969e+03 7.5036819e+00
+-4.0726193e+00 -2.2357660e+03 8.9537148e+00
+-2.3996793e+00 -1.6367206e+03 1.1851087e+01
+-8.1121793e-01 -1.0384468e+03 1.6719295e+01
+2.1132073e-01 -5.3237672e+02 2.4120723e+01
+4.2889703e-01 -1.9347592e+02 3.2146990e+01
+2.8688731e-01 -3.4588172e+01 3.3074641e+01
+4.2743344e-01 -1.0522215e+01 3.5843998e+01
+8.6562712e-01 -2.9479303e+00 3.3043044e+01
+9.6626926e-01 9.2556537e-01 2.5378415e+01
+-1.2230451e+01 -6.8564209e+01 1.7371869e+02
+2.8523636e+02 -2.0697049e+02 0.0000000e+00
+-1.6471683e-05 -4.3230693e-03 -3.0887157e-03
+-2.7224061e-04 -7.2805155e-02 -5.9736742e-02
+-3.4447888e-03 -1.0449331e+00 -8.7238917e-01
+-2.6416799e-02 -1.4696677e+01 -9.3009142e+00
+4.7308171e+00 -3.0903974e+02 -1.1024581e+01
+1.8932762e+01 -9.4392843e+02 -5.0929183e+00
+3.7371000e+01 -1.7224127e+03 8.0387964e+00
+5.4433600e+01 -2.4298348e+03 2.5826027e+01
+6.6264016e+01 -2.9038554e+03 4.5514544e+01
+7.1308616e+01 -3.0762443e+03 6.7259984e+01
+7.0273108e+01 -2.9663971e+03 9.0089064e+01
+6.4701231e+01 -2.6334548e+03 1.1370261e+02
+5.5573830e+01 -2.1458832e+03 1.3919949e+02
+4.3692234e+01 -1.5779939e+03 1.6625777e+02
+3.0018030e+01 -1.0111816e+03 1.9305225e+02
+1.6093334e+01 -5.2899839e+02 2.1443389e+02
+5.0502511e+00 -1.9298945e+02 2.1644350e+02
+2.4088749e-01 -2.7994306e+01 2.0601423e+02
+4.9163822e-01 -1.0773835e+01 1.9930262e+02
+1.0500596e+00 -3.0219539e+00 1.8718678e+02
+6.9895490e-02 1.9298982e+00 1.7004882e+02
+-5.8856629e+01 -9.8678963e+01 4.0931945e+02
+3.5965735e+02 -3.2616182e+02 0.0000000e+00
+-3.0143549e-05 -2.4172963e-03 -1.7913849e-03
+-4.0529245e-04 -4.2505716e-02 -2.9721209e-02
+-3.1598562e-03 -6.7737573e-01 -3.5256004e-01
+2.3344695e-02 -1.1291197e+01 -2.9126535e+00
+1.2365262e+01 -2.7197786e+02 -3.3675062e+00
+4.6133947e+01 -8.5607303e+02 1.4696896e+01
+8.9174088e+01 -1.5671446e+03 5.1955091e+01
+1.2791482e+02 -2.2100107e+03 1.0408028e+02
+1.5353265e+02 -2.6397521e+03 1.6660008e+02
+1.6363182e+02 -2.7965008e+03 2.3683761e+02
+1.6042659e+02 -2.6971705e+03 3.1166857e+02
+1.4723702e+02 -2.3955638e+03 3.8788261e+02
+1.2621426e+02 -1.9545183e+03 4.6216749e+02
+9.8776847e+01 -1.4407948e+03 5.2945178e+02
+6.7077135e+01 -9.2661598e+02 5.8241879e+02
+3.5387862e+01 -4.8437982e+02 6.1149881e+02
+1.0446143e+01 -1.6844614e+02 6.0918890e+02
+-4.8980405e-01 -1.9076598e+01 5.9557879e+02
+-7.2810442e-01 -6.0057404e+00 5.8104514e+02
+-8.2430049e-01 1.6324682e-02 5.6105327e+02
+-4.2576379e+00 4.2498902e+00 5.3870841e+02
+-1.0689943e+02 -9.8431990e+01 9.0726684e+02
+5.1967921e+02 -3.7852889e+02 0.0000000e+00
+-6.4663783e-05 -1.4620965e-03 -7.5599149e-04
+-9.4216255e-04 -2.7669276e-02 -1.1415747e-02
+-9.7150182e-03 -4.8425075e-01 -1.2485947e-01
+-3.5649564e-02 -8.7543366e+00 -1.1436818e+00
+1.7695242e+01 -2.2249395e+02 1.1493954e+01
+6.9511989e+01 -7.2088297e+02 4.8532228e+01
+1.3583022e+02 -1.3266170e+03 1.1748359e+02
+1.9551512e+02 -1.8713924e+03 2.1531239e+02
+2.3498056e+02 -2.2340543e+03 3.3557384e+02
+2.5084520e+02 -2.3657618e+03 4.7167302e+02
+2.4660180e+02 -2.2810750e+03 6.1628502e+02
+2.2716098e+02 -2.0257114e+03 7.6147814e+02
+1.9559587e+02 -1.6530185e+03 8.9860199e+02
+1.5370565e+02 -1.2188767e+03 1.0174916e+03
+1.0458785e+02 -7.8320103e+02 1.1069944e+03
+5.4930531e+01 -4.0565387e+02 1.1578197e+03
+1.4865562e+01 -1.3419624e+02 1.1702426e+03
+-2.1383311e+00 -1.2177016e+01 1.1594332e+03
+-3.5373282e+00 -2.3452809e+00 1.1458812e+03
+-5.3180491e+00 1.8039045e+00 1.1264720e+03
+-1.2619912e+01 4.7757643e+00 1.1098305e+03
+-1.3801845e+02 -7.9159292e+01 1.6772591e+03
+8.2004091e+02 -3.3669266e+02 0.0000000e+00
+-1.1697024e-04 -9.1635650e-04 -2.6247240e-04
+-1.8458875e-03 -1.8218779e-02 -3.7717501e-03
+-2.3108617e-02 -3.3327521e-01 -4.1507496e-02
+-2.2139641e-01 -6.1789404e+00 -4.6453139e-01
+1.9120496e+01 -1.6432099e+02 2.7578139e+01
+8.5061959e+01 -5.4488307e+02 8.7140004e+01
+1.7028987e+02 -1.0081287e+03 1.9014048e+02
+2.4707334e+02 -1.4231574e+03 3.3580684e+02
+2.9776720e+02 -1.6983039e+03 5.1641987e+02
+3.1826537e+02 -1.7975187e+03 7.2168249e+02
+3.1330609e+02 -1.7322810e+03 9.3977042e+02
+2.8921341e+02 -1.5375890e+03 1.1578293e+03
+2.4970711e+02 -1.2541242e+03 1.3620680e+03
+1.9665343e+02 -9.2407926e+02 1.5376566e+03
+1.3367127e+02 -5.9238941e+02 1.6702866e+03
+6.9276719e+01 -3.0385345e+02 1.7510410e+03
+1.6323040e+01 -9.6801629e+01 1.7843082e+03
+-4.2997268e+00 -7.7356223e+00 1.7775357e+03
+-7.1479326e+00 -1.0273009e+00 1.7676179e+03
+-1.1176794e+01 1.5738069e+00 1.7518041e+03
+-2.2987232e+01 3.4007687e+00 1.7451492e+03
+-1.5199222e+02 -5.3878851e+01 2.5461918e+03
+1.2241369e+03 -2.3109955e+02 0.0000000e+00
+-1.7459503e-04 -5.1559625e-04 -5.0712086e-05
+-2.8881803e-03 -1.0475736e-02 -4.6570190e-04
+-3.9687248e-02 -1.9454003e-01 1.1626136e-04
+-4.7770544e-01 -3.6264543e+00 8.7701227e-02
+1.7345348e+01 -1.0057204e+02 4.1350015e+01
+9.2529823e+01 -3.3892370e+02 1.2137890e+02
+1.9076495e+02 -6.2969890e+02 2.5423301e+02
+2.7928499e+02 -8.8959157e+02 4.4106293e+02
+3.3745157e+02 -1.0613447e+03 6.7341949e+02
+3.6079345e+02 -1.1228735e+03 9.3812227e+02
+3.5518607e+02 -1.0815972e+03 1.2195699e+03
+3.2810186e+02 -9.5954252e+02 1.5007403e+03
+2.8364608e+02 -7.8221305e+02 1.7635395e+03
+2.2350742e+02 -5.7588271e+02 1.9892121e+03
+1.5143807e+02 -3.6839782e+02 2.1607420e+03
+7.7129494e+01 -1.8761578e+02 2.2689807e+03
+1.5346670e+01 -5.8388335e+01 2.3199250e+03
+-6.2397966e+00 -4.5385380e+00 2.3155996e+03
+-1.0292379e+01 -7.3374016e-01 2.3076357e+03
+-1.6300417e+01 6.2610120e-01 2.2936073e+03
+-3.2041795e+01 1.5111208e+00 2.2940265e+03
+-1.5920357e+02 -2.9471122e+01 3.3022666e+03
+1.6325476e+03 -1.2037060e+02 0.0000000e+00
+-2.1962162e-04 -1.6708903e-04 4.3198610e-05
+-3.7205351e-03 -3.4187610e-03 1.1737984e-03
+-5.3341388e-02 -6.3734775e-02 2.5741789e-02
+-6.9775895e-01 -1.1885800e+00 5.2643402e-01
+1.4705729e+01 -3.3833039e+01 5.0496268e+01
+9.4771613e+01 -1.1496795e+02 1.4451265e+02
+2.0026417e+02 -2.1408657e+02 2.9750037e+02
+2.9529877e+02 -3.0257984e+02 5.1179767e+02
+3.5744211e+02 -3.6096303e+02 7.7858572e+02
+3.8210880e+02 -3.8179943e+02 1.0828743e+03
+3.7599164e+02 -3.6766138e+02 1.4065800e+03
+3.4732236e+02 -3.2607230e+02 1.7299107e+03
+3.0039584e+02 -2.6572271e+02 2.0319092e+03
+2.3667268e+02 -1.9553464e+02 2.2911896e+03
+1.5985317e+02 -1.2493992e+02 2.4888788e+03
+8.0260791e+01 -6.3397844e+01 2.6153786e+03
+1.3801210e+01 -1.9520211e+01 2.6770330e+03
+-7.4128640e+00 -1.5401781e+00 2.6733434e+03
+-1.2120508e+01 -3.2652075e-01 2.6653082e+03
+-1.9279460e+01 7.4500648e-02 2.6506682e+03
+-3.7457604e+01 2.9826820e-01 2.6532052e+03
+-1.6605451e+02 -9.3543642e+00 3.7999036e+03
+1.9256975e+03 -3.5692775e+01 0.0000000e+00
+-2.3663402e-04 1.6708903e-04 7.1557420e-05
+-4.0378358e-03 3.4187610e-03 1.7102291e-03
+-5.8609734e-02 6.3734775e-02 3.4989469e-02
+-7.8397924e-01 1.1885800e+00 6.9606876e-01
+1.3514152e+01 3.3833039e+01 5.3686913e+01
+9.5060357e+01 1.1496795e+02 1.5263809e+02
+2.0284207e+02 2.1408657e+02 3.1269590e+02
+2.9992252e+02 3.0257984e+02 5.3659165e+02
+3.6327467e+02 3.6096303e+02 8.1539368e+02
+3.8829735e+02 3.8179943e+02 1.1334961e+03
+3.8198221e+02 3.6766138e+02 1.4719525e+03
+3.5282754e+02 3.2607230e+02 1.8100020e+03
+3.0518372e+02 2.6572271e+02 2.1256851e+03
+2.4041238e+02 1.9553464e+02 2.3966926e+03
+1.6217190e+02 1.2493992e+02 2.6034917e+03
+8.0984658e+01 6.3397844e+01 2.7362698e+03
+1.3141065e+01 1.9520211e+01 2.8013626e+03
+-7.7698746e+00 1.5401781e+00 2.7976390e+03
+-1.2656097e+01 3.2652050e-01 2.7892038e+03
+-2.0151667e+01 -7.4509067e-02 2.7738150e+03
+-3.9109249e+01 -2.9862946e-01 2.7762527e+03
+-1.6974788e+02 9.3343438e+00 3.9707205e+03
+2.0282547e+03 3.5647791e+01 0.0000000e+00
+-2.1962162e-04 5.1559625e-04 4.3198610e-05
+-3.7205351e-03 1.0475736e-02 1.1737984e-03
+-5.3341388e-02 1.9454003e-01 2.5741789e-02
+-6.9775895e-01 3.6264543e+00 5.2643402e-01
+1.4705729e+01 1.0057204e+02 5.0496268e+01
+9.4771613e+01 3.3892370e+02 1.4451265e+02
+2.0026417e+02 6.2969890e+02 2.9750037e+02
+2.9529877e+02 8.8959157e+02 5.1179767e+02
+3.5744211e+02 1.0613447e+03 7.7858572e+02
+3.8210880e+02 1.1228735e+03 1.0828743e+03
+3.7599164e+02 1.0815972e+03 1.4065800e+03
+3.4732236e+02 9.5954252e+02 1.7299107e+03
+3.0039584e+02 7.8221305e+02 2.0319092e+03
+2.3667268e+02 5.7588271e+02 2.2911896e+03
+1.5985317e+02 3.6839782e+02 2.4888788e+03
+8.0260791e+01 1.8761578e+02 2.6153786e+03
+1.3801210e+01 5.8388335e+01 2.6770330e+03
+-7.4128640e+00 4.5385380e+00 2.6733434e+03
+-1.2120508e+01 7.3374036e-01 2.6653082e+03
+-1.9279486e+01 -6.2608776e-01 2.6506682e+03
+-3.7458762e+01 -1.5104525e+00 2.6532043e+03
+-1.6609661e+02 2.9470183e+01 3.7998973e+03
+1.9256447e+03 1.2033725e+02 0.0000000e+00
+-1.7459503e-04 9.1635650e-04 -5.0712086e-05
+-2.8881803e-03 1.8218779e-02 -4.6570190e-04
+-3.9687248e-02 3.3327521e-01 1.1626136e-04
+-4.7770544e-01 6.1789404e+00 8.7701227e-02
+1.7345348e+01 1.6432099e+02 4.1350015e+01
+9.2529823e+01 5.4488307e+02 1.2137890e+02
+1.9076495e+02 1.0081287e+03 2.5423301e+02
+2.7928499e+02 1.4231574e+03 4.4106293e+02
+3.3745157e+02 1.6983039e+03 6.7341949e+02
+3.6079345e+02 1.7975187e+03 9.3812227e+02
+3.5518607e+02 1.7322810e+03 1.2195699e+03
+3.2810186e+02 1.5375890e+03 1.5007403e+03
+2.8364608e+02 1.2541242e+03 1.7635395e+03
+2.2350742e+02 9.2407926e+02 1.9892121e+03
+1.5143807e+02 5.9238941e+02 2.1607420e+03
+7.7129494e+01 3.0385345e+02 2.2689807e+03
+1.5346670e+01 9.6801629e+01 2.3199250e+03
+-6.2397966e+00 7.7356224e+00 2.3155996e+03
+-1.0292379e+01 1.0273016e+00 2.3076357e+03
+-1.6300445e+01 -1.5737864e+00 2.2936074e+03
+-3.2043163e+01 -3.4002336e+00 2.2940234e+03
+-1.5924322e+02 5.3895089e+01 3.3022775e+03
+1.6325373e+03 2.3113074e+02 0.0000000e+00
+-1.1697024e-04 1.4620965e-03 -2.6247240e-04
+-1.8458875e-03 2.7669276e-02 -3.7717501e-03
+-2.3108617e-02 4.8425075e-01 -4.1507496e-02
+-2.2139641e-01 8.7543366e+00 -4.6453139e-01
+1.9120496e+01 2.2249395e+02 2.7578139e+01
+8.5061959e+01 7.2088297e+02 8.7140004e+01
+1.7028987e+02 1.3266170e+03 1.9014048e+02
+2.4707334e+02 1.8713924e+03 3.3580684e+02
+2.9776720e+02 2.2340543e+03 5.1641987e+02
+3.1826537e+02 2.3657618e+03 7.2168249e+02
+3.1330609e+02 2.2810750e+03 9.3977042e+02
+2.8921341e+02 2.0257114e+03 1.1578293e+03
+2.4970711e+02 1.6530185e+03 1.3620680e+03
+1.9665343e+02 1.2188767e+03 1.5376566e+03
+1.3367127e+02 7.8320103e+02 1.6702866e+03
+6.9276719e+01 4.0565387e+02 1.7510410e+03
+1.6323040e+01 1.3419624e+02 1.7843082e+03
+-4.2997268e+00 1.2177016e+01 1.7775357e+03
+-7.1479326e+00 2.3452810e+00 1.7676179e+03
+-1.1176796e+01 -1.8039016e+00 1.7518042e+03
+-2.2987484e+01 -4.7756753e+00 1.7451484e+03
+-1.5199184e+02 7.9157498e+01 2.5462056e+03
+1.2241326e+03 3.3669767e+02 0.0000000e+00
+-6.4663783e-05 2.4172963e-03 -7.5599149e-04
+-9.4216255e-04 4.2505716e-02 -1.1415747e-02
+-9.7150182e-03 6.7737573e-01 -1.2485947e-01
+-3.5649564e-02 1.1291197e+01 -1.1436818e+00
+1.7695242e+01 2.7197786e+02 1.1493954e+01
+6.9511989e+01 8.5607303e+02 4.8532228e+01
+1.3583022e+02 1.5671446e+03 1.1748359e+02
+1.9551512e+02 2.2100107e+03 2.1531239e+02
+2.3498056e+02 2.6397521e+03 3.3557384e+02
+2.5084520e+02 2.7965008e+03 4.7167302e+02
+2.4660180e+02 2.6971705e+03 6.1628502e+02
+2.2716098e+02 2.3955638e+03 7.6147814e+02
+1.9559587e+02 1.9545183e+03 8.9860199e+02
+1.5370565e+02 1.4407948e+03 1.0174916e+03
+1.0458785e+02 9.2661598e+02 1.1069944e+03
+5.4930531e+01 4.8437982e+02 1.1578197e+03
+1.4865562e+01 1.6844614e+02 1.1702426e+03
+-2.1383311e+00 1.9076598e+01 1.1594332e+03
+-3.5373278e+00 6.0057389e+00 1.1458812e+03
+-5.3180258e+00 -1.6378851e-02 1.1264720e+03
+-1.2619021e+01 -4.2510477e+00 1.1098309e+03
+-1.3798430e+02 9.8379083e+01 1.6773193e+03
+8.2003692e+02 3.7848423e+02 0.0000000e+00
+-3.0143549e-05 4.3230693e-03 -1.7913849e-03
+-4.0529244e-04 7.2805155e-02 -2.9721209e-02
+-3.1598562e-03 1.0449331e+00 -3.5256004e-01
+2.3344695e-02 1.4696677e+01 -2.9126535e+00
+1.2365262e+01 3.0903974e+02 -3.3675062e+00
+4.6133947e+01 9.4392843e+02 1.4696896e+01
+8.9174088e+01 1.7224127e+03 5.1955091e+01
+1.2791482e+02 2.4298348e+03 1.0408028e+02
+1.5353265e+02 2.9038554e+03 1.6660008e+02
+1.6363182e+02 3.0762443e+03 2.3683761e+02
+1.6042659e+02 2.9663971e+03 3.1166857e+02
+1.4723702e+02 2.6334548e+03 3.8788261e+02
+1.2621426e+02 2.1458832e+03 4.6216749e+02
+9.8776847e+01 1.5779939e+03 5.2945178e+02
+6.7077135e+01 1.0111816e+03 5.8241879e+02
+3.5387862e+01 5.2899839e+02 6.1149881e+02
+1.0446143e+01 1.9298945e+02 6.0918890e+02
+-4.8980405e-01 2.7994306e+01 5.9557879e+02
+-7.2810405e-01 1.0773833e+01 5.8104514e+02
+-8.2427407e-01 3.0219344e+00 5.6105341e+02
+-4.2563536e+00 -1.9310504e+00 5.3870428e+02
+-1.0684487e+02 9.8635743e+01 9.0731098e+02
+5.1970735e+02 3.2606322e+02 0.0000000e+00
+-1.6471683e-05 7.4638023e-03 -3.0887157e-03
+-2.7224060e-04 1.3047850e-01 -5.9736742e-02
+-3.4447887e-03 1.8757842e+00 -8.7238917e-01
+-2.6416799e-02 2.3445825e+01 -9.3009142e+00
+4.7308171e+00 3.2672504e+02 -1.1024581e+01
+1.8932762e+01 9.8925957e+02 -5.0929183e+00
+3.7371000e+01 1.8041411e+03 8.0387964e+00
+5.4433600e+01 2.5449453e+03 2.5826027e+01
+6.6264016e+01 3.0403633e+03 4.5514544e+01
+7.1308616e+01 3.2174076e+03 6.7259984e+01
+7.0273108e+01 3.0998180e+03 9.0089064e+01
+6.4701232e+01 2.7494969e+03 1.1370261e+02
+5.5573830e+01 2.2357660e+03 1.3919949e+02
+4.3692234e+01 1.6367206e+03 1.6625777e+02
+3.0018030e+01 1.0384468e+03 1.9305225e+02
+1.6093334e+01 5.3237672e+02 2.1443389e+02
+5.0502511e+00 1.9347592e+02 2.1644350e+02
+2.4088752e-01 3.4588172e+01 2.0601423e+02
+4.9164008e-01 1.0522211e+01 1.9930263e+02
+1.0500467e+00 2.9477983e+00 1.8718678e+02
+6.8281261e-02 -9.2898803e-01 1.7004786e+02
+-5.8889224e+01 6.8469574e+01 4.0926005e+02
+3.5964228e+02 2.0679247e+02 0.0000000e+00
+-1.8672277e-05 9.6334660e-03 -2.1423525e-03
+-4.3201335e-04 1.7803190e-01 -4.9181469e-02
+-8.1201927e-03 2.6996997e+00 -8.6487321e-01
+-1.2377950e-01 3.4719045e+01 -1.2022457e+01
+-1.2689309e+00 3.3135292e+02 -1.5364860e+01
+-3.8476828e+00 9.9068862e+02 -1.3035950e+01
+-6.8027269e+00 1.8037446e+03 -6.8255486e+00
+-8.8308056e+00 2.5450250e+03 -9.4224912e-01
+-9.3138150e+00 3.0410144e+03 2.3586603e+00
+-8.5944306e+00 3.2155431e+03 5.1601604e+00
+-7.2670995e+00 3.0966077e+03 6.8884414e+00
+-5.6952698e+00 2.7460919e+03 7.5036819e+00
+-4.0726193e+00 2.2308092e+03 8.9537149e+00
+-2.3996793e+00 1.6296855e+03 1.1851087e+01
+-8.1121796e-01 1.0288506e+03 1.6719295e+01
+2.1132063e-01 5.2022382e+02 2.4120723e+01
+4.2889703e-01 1.8179193e+02 3.2146993e+01
+2.8688707e-01 3.1407366e+01 3.3074643e+01
+4.2742659e-01 4.7497308e+00 3.5844001e+01
+8.6538308e-01 1.3253054e-01 3.3043228e+01
+9.5685943e-01 -1.1713723e+00 2.5383311e+01
+-1.2532870e+01 3.1793893e+01 1.7383981e+02
+2.8525719e+02 9.2798147e+01 0.0000000e+00
+-2.7508724e-05 7.9701186e-03 1.6912752e-03
+-7.1031886e-04 1.5705290e-01 2.3247879e-02
+-1.4509011e-02 2.5540964e+00 1.7877601e-01
+-2.3297543e-01 3.5009846e+01 2.9014331e-02
+-2.4040613e+00 3.3878298e+02 -6.0701399e+00
+-7.4114800e+00 9.9750710e+02 -9.4627777e+00
+-1.3299981e+01 1.8035693e+03 -5.1215401e+00
+-1.7516428e+01 2.5426005e+03 -8.2312525e-01
+-1.8773147e+01 3.0366598e+03 2.6374270e-01
+-1.7618794e+01 3.2049389e+03 1.7923333e+00
+-1.5173536e+01 3.0831870e+03 2.3042740e+00
+-1.2154887e+01 2.7330747e+03 1.2389116e+00
+-8.9350593e+00 2.2171002e+03 1.2484045e+00
+-5.5430916e+00 1.6155621e+03 2.5290017e+00
+-2.2488150e+00 1.0144833e+03 5.0636249e+00
+2.6767884e-02 5.0645194e+02 8.8073256e+00
+7.0105076e-01 1.7480870e+02 9.1763362e+00
+4.0098473e-01 3.3111024e+01 4.6730355e+00
+2.5764682e-01 3.9526138e+00 3.9491697e+00
+3.7981586e-01 -5.6357659e-02 2.1493208e+00
+7.2877262e-01 -4.0039728e-01 -1.1590187e+00
+1.2319823e+01 1.1059875e+01 7.3791325e+01
+2.0753705e+02 2.8098606e+01 0.0000000e+00
+-3.0376054e-05 3.3210034e-03 4.6761240e-03
+-8.4352701e-04 7.3320685e-02 8.9019001e-02
+-1.8723276e-02 1.3921094e+00 1.2624724e+00
+-3.3316095e-01 2.3970355e+01 1.2480826e+01
+-3.9432999e+00 3.5020283e+02 2.9345976e+00
+-1.1943913e+01 1.0116756e+03 -6.7340482e+00
+-2.1333707e+01 1.8052969e+03 -3.7793719e+00
+-2.8070428e+01 2.5396071e+03 -7.0570776e-01
+-3.0027459e+01 3.0286777e+03 -1.5625239e+00
+-2.8078667e+01 3.1852148e+03 -3.4719372e-01
+-2.4074586e+01 3.0582568e+03 -7.3330271e-02
+-1.9157318e+01 2.7087608e+03 -2.0044857e+00
+-1.3909153e+01 2.1922007e+03 -2.2405797e+00
+-8.4241591e+00 1.5915342e+03 -1.3319023e+00
+-3.1559676e+00 9.9250700e+02 -1.6069967e-01
+4.2032867e-01 4.8681535e+02 2.1366834e+00
+1.3864663e+00 1.6292231e+02 2.4726425e+00
+7.9509935e-01 3.0243079e+01 1.8465626e-01
+3.3469798e-01 2.3480270e+00 -6.5345018e-02
+2.0569310e-01 -4.7410421e-01 -5.0808710e-01
+4.7839623e-01 -1.4832691e-03 -1.4761213e+00
+1.3938439e+01 2.4973614e+00 2.7885562e+01
+1.1041388e+02 5.0090024e+00 0.0000000e+00
+-1.7270048e-05 0.0000000e+00 3.3346782e-03
+-5.4136614e-04 0.0000000e+00 7.7014200e-02
+-1.4306340e-02 0.0000000e+00 1.4776866e+00
+-3.3788571e-01 0.0000000e+00 2.5661038e+01
+-7.0328836e+00 3.6965319e+02 1.2612173e+01
+-2.1009093e+01 1.0461815e+03 -3.7134339e+00
+-3.7711080e+01 1.8319755e+03 -2.6673381e+00
+-5.0944237e+01 2.5667246e+03 -3.2098071e-01
+-5.6158092e+01 3.0518661e+03 -2.8777722e+00
+-5.3720025e+01 3.1902232e+03 -1.9304962e+00
+-4.7348729e+01 3.0526308e+03 -1.7663444e+00
+-3.9009067e+01 2.6994428e+03 -4.4297558e+00
+-2.9022205e+01 2.1759084e+03 -4.7309840e+00
+-1.8596447e+01 1.5707759e+03 -3.9854233e+00
+-9.2136122e+00 9.6999297e+02 -3.8358679e+00
+-2.3165621e+00 4.6336082e+02 -2.1867084e+00
+5.8554190e-01 1.4593688e+02 -8.5549067e-01
+7.4008437e-01 2.3197385e+01 -9.0164614e-01
+6.2190831e-01 -4.8687209e-01 -2.9439767e-01
+5.7496892e-01 -1.2230060e+00 -1.5337028e-01
+7.6985622e-01 5.6597449e-01 -8.5981106e-01
+5.4624715e+00 0.0000000e+00 6.2539412e+00
+3.0964747e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.0641359e+01 4.4088773e+02 7.3035572e+01
+-2.3206739e+01 1.5521368e+03 4.0959956e+01
+-5.4846255e+01 2.7765430e+03 -2.2152116e+01
+-1.2987106e+02 3.8262844e+03 1.7278856e+01
+-1.9790815e+02 4.5583322e+03 6.5211124e+01
+-2.1328351e+02 4.8058234e+03 4.9879816e+01
+-2.2594201e+02 4.6031539e+03 5.0797030e+01
+-2.3624946e+02 4.0640374e+03 8.2776464e+01
+-1.9551008e+02 3.2872989e+03 8.6947285e+01
+-1.5586137e+02 2.3979085e+03 8.0899624e+01
+-1.5129858e+02 1.5124954e+03 8.9452748e+01
+-1.2011417e+02 7.8890261e+02 8.3554615e+01
+-6.6794813e+01 3.5588863e+02 5.6839538e+01
+-2.1092581e+01 1.5932768e+02 3.3208127e+01
+9.7515101e+00 6.9981706e+01 1.9346192e+01
+2.0074129e+01 2.8213907e+01 5.8795364e+00
+1.3462821e+01 8.8682370e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.3144780e+02 0.0000000e+00 7.4558215e+01
+8.6917844e+02 0.0000000e+00 8.2378849e+01
+1.6065595e+03 0.0000000e+00 -5.4295227e+01
+2.1147585e+03 0.0000000e+00 8.2199819e+01
+2.4765950e+03 0.0000000e+00 3.0393686e+02
+2.7491732e+03 0.0000000e+00 2.2681292e+02
+2.6040068e+03 0.0000000e+00 2.4091059e+02
+2.1573019e+03 0.0000000e+00 4.4470874e+02
+1.7991319e+03 0.0000000e+00 4.6459406e+02
+1.3424430e+03 0.0000000e+00 4.1998850e+02
+7.3045601e+02 0.0000000e+00 4.1404975e+02
+3.7416160e+02 0.0000000e+00 2.8981151e+02
+2.5569507e+02 0.0000000e+00 1.5230354e+02
+2.0488528e+02 0.0000000e+00 1.0388513e+02
+1.7942135e+02 0.0000000e+00 7.5572612e+01
+1.4055590e+02 0.0000000e+00 2.4618929e+01
+7.1568704e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.4492821e+01 -1.3556056e+02 2.9521324e+01
+1.3542529e+02 -4.8581928e+02 4.7828435e+01
+1.9484351e+02 -8.3313272e+02 2.0337301e+01
+8.6371229e+01 -1.1003923e+03 9.0123834e+01
+1.1244367e+02 -1.2709199e+03 1.6814454e+02
+2.6545628e+02 -1.2982937e+03 1.6612229e+02
+1.8218692e+02 -1.2217293e+03 2.1049063e+02
+2.2496040e+01 -1.0708408e+03 2.7772376e+02
+2.4784324e+01 -8.4520578e+02 3.1713975e+02
+7.9369159e+00 -5.8416371e+02 3.4863215e+02
+-7.7025944e+01 -3.2567924e+02 2.9607995e+02
+-1.0992974e+02 -1.1611497e+02 1.9307616e+02
+-1.0448194e+02 -1.3202552e+01 1.2986552e+02
+-3.8701579e+01 1.3454784e+00 9.0120347e+01
+4.3914635e+01 -5.2454564e+00 5.0526122e+01
+8.2835244e+01 -5.8552993e+00 1.3366699e+01
+5.3269377e+01 -2.9755279e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-9.5969271e+00 -1.6582925e+02 2.9187546e+01
+-2.9091880e+01 -4.6252856e+02 1.1794151e+01
+-5.7577379e+01 -8.1007238e+02 -8.4646621e+00
+-9.0787583e+01 -1.1565602e+03 8.6379430e+00
+-6.7112674e+01 -1.4107422e+03 1.7674497e+01
+-2.6384241e+00 -1.5089801e+03 1.7749182e+01
+1.5669023e+01 -1.4708603e+03 2.5277473e+01
+9.7440483e+00 -1.3193760e+03 2.7646834e+01
+2.8004216e+01 -1.0756975e+03 3.4592577e+01
+4.2829645e+01 -7.8902190e+02 3.9504003e+01
+4.4543661e+01 -5.0412569e+02 2.2662792e+01
+3.4378933e+01 -2.5816034e+02 1.0301556e+01
+1.2100170e+01 -9.3137092e+01 1.0211793e+01
+1.2301504e+00 -2.0561685e+01 7.1180152e+00
+7.5671036e+00 -2.8689034e+00 3.8032748e+00
+1.5237744e+01 -3.1441885e-01 1.0106295e+00
+1.1186310e+01 -2.7682679e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.1592703e-05 -1.7698966e-03 1.7410337e-03
+3.4944875e-04 -3.8614122e-02 3.9464334e-02
+8.9675583e-03 -7.2008538e-01 7.3627500e-01
+2.0442611e-01 -1.2076553e+01 1.2270499e+01
+3.9138112e+00 -1.6986031e+02 5.3542031e+00
+1.2307865e+01 -4.8752298e+02 -2.9678836e+00
+2.3587317e+01 -8.7300797e+02 -1.3297543e+00
+3.4677440e+01 -1.2444837e+03 9.7312369e-01
+4.4126621e+01 -1.5099985e+03 -5.4142935e-02
+4.9420790e+01 -1.6133246e+03 1.1497418e+00
+4.8274817e+01 -1.5677559e+03 2.4202469e+00
+4.2649215e+01 -1.4002818e+03 1.6616932e+00
+3.5182469e+01 -1.1403140e+03 2.0653718e+00
+2.6760828e+01 -8.3510969e+02 2.7885090e+00
+1.8760058e+01 -5.3138824e+02 1.6666338e+00
+1.2129619e+01 -2.7186388e+02 9.2970917e-01
+6.3671992e+00 -9.8605931e+01 7.9684620e-01
+2.4177360e+00 -2.1647502e+01 1.1896119e-01
+8.9622467e-01 -3.1741693e+00 6.0258258e-02
+5.5863644e-01 -3.4567264e-01 5.7149890e-02
+7.6439014e-01 -1.0423559e-01 -2.6459176e-01
+3.3601308e+00 -6.5879194e-01 2.4977477e+00
+1.3375881e+01 -6.8175477e+00 0.0000000e+00
+2.0335761e-05 -4.2769881e-03 2.4563796e-03
+5.4118464e-04 -8.3607894e-02 4.6065438e-02
+1.1750231e-02 -1.3435819e+00 6.3908839e-01
+2.0811370e-01 -1.8106155e+01 6.1274136e+00
+2.4922677e+00 -1.7125057e+02 1.0820989e+00
+7.9540748e+00 -5.0237202e+02 -3.9668462e+00
+1.5331245e+01 -9.1167952e+02 -1.9602144e+00
+2.2529309e+01 -1.2973976e+03 3.5392259e-01
+2.7994613e+01 -1.5679607e+03 2.9407159e-01
+3.0414215e+01 -1.6727933e+03 1.2700102e+00
+2.9365663e+01 -1.6219872e+03 2.0610107e+00
+2.5868251e+01 -1.4448503e+03 1.6039333e+00
+2.1040427e+01 -1.1754314e+03 1.7715977e+00
+1.5681800e+01 -8.5979879e+02 2.3548933e+00
+1.0754903e+01 -5.4550338e+02 2.5591764e+00
+6.7508378e+00 -2.7858104e+02 2.9288015e+00
+3.5248857e+00 -1.0022698e+02 2.4097636e+00
+1.2990575e+00 -2.0387893e+01 6.4344134e-01
+4.2440448e-01 -2.9689575e+00 3.4661343e-01
+2.2432556e-01 -3.3996546e-01 3.0881921e-01
+5.0918486e-01 2.8086199e-02 1.4563907e-01
+8.9639691e+00 -9.5528012e-01 5.4146127e+00
+4.0951850e+01 -2.9774144e+01 0.0000000e+00
+1.6651173e-05 -5.1937688e-03 8.7262074e-04
+4.2543698e-04 -9.5458266e-02 1.1587236e-02
+8.6474573e-03 -1.4360945e+00 8.0943302e-02
+1.3887618e-01 -1.8266864e+01 -1.3019938e-01
+1.4410997e+00 -1.7182458e+02 -3.4013490e+00
+4.6929194e+00 -5.1263889e+02 -5.2388857e+00
+9.1237283e+00 -9.3663658e+02 -2.7055352e+00
+1.3464091e+01 -1.3310692e+03 -1.4436213e-02
+1.6761640e+01 -1.6043134e+03 8.0344178e-01
+1.8216952e+01 -1.7096409e+03 1.8152499e+00
+1.7589183e+01 -1.6554049e+03 2.4702532e+00
+1.5489336e+01 -1.4722611e+03 2.2368065e+00
+1.2589201e+01 -1.1971338e+03 2.4149429e+00
+9.3902863e+00 -8.7547545e+02 3.1582247e+00
+6.4641418e+00 -5.5532498e+02 4.2668710e+00
+4.0646144e+00 -2.8414256e+02 5.7905431e+00
+2.0866479e+00 -1.0148379e+02 5.6612720e+00
+7.2910505e-01 -1.8130741e+01 3.0759395e+00
+3.6801218e-01 -3.1015757e+00 3.0977643e+00
+4.9486695e-01 -6.7996648e-01 3.3230485e+00
+1.2929643e+00 2.3266425e-02 2.7738518e+00
+1.7719877e+01 -2.2914742e+00 -1.0198265e+00
+6.3721393e+01 -7.8065177e+01 0.0000000e+00
+2.0559453e-06 -4.0377926e-03 -1.1767044e-03
+1.2055811e-04 -7.0316547e-02 -2.6870995e-02
+3.2457577e-03 -1.0056534e+00 -4.6867800e-01
+5.9794442e-02 -1.2488352e+01 -6.4307641e+00
+7.1386118e-01 -1.7197811e+02 -8.2600275e+00
+2.4958275e+00 -5.2015882e+02 -7.0835990e+00
+4.9422037e+00 -9.5182555e+02 -3.6395590e+00
+7.3274510e+00 -1.3506276e+03 -2.3937112e-01
+9.1220355e+00 -1.6246830e+03 1.6944072e+00
+9.8891095e+00 -1.7297719e+03 3.3418959e+00
+9.5171550e+00 -1.6733645e+03 4.5172218e+00
+8.3700930e+00 -1.4868606e+03 5.0514319e+00
+6.8179974e+00 -1.2088983e+03 5.9252796e+00
+5.1182295e+00 -8.8456780e+02 7.4997122e+00
+3.5636251e+00 -5.6215564e+02 9.9555308e+00
+2.2755950e+00 -2.8995226e+02 1.3700955e+01
+1.2278708e+00 -1.0672855e+02 1.8146735e+01
+6.3751124e-01 -1.9497143e+01 1.9162511e+01
+8.3724945e-01 -6.5060281e+00 2.2157147e+01
+1.5494081e+00 -2.8918326e+00 2.3685237e+01
+3.4833076e+00 -9.6876119e-01 2.2159862e+01
+2.8709415e+01 -9.2243322e+00 -1.1847508e+01
+4.9967613e+01 -1.5197757e+02 0.0000000e+00
+-3.0494536e-05 -2.3465246e-03 -1.6772451e-03
+-5.1187898e-04 -3.9417795e-02 -3.2336359e-02
+-7.5970249e-03 -5.6414888e-01 -4.6968865e-01
+-1.1614262e-01 -7.9173229e+00 -4.9509915e+00
+-5.7886043e-01 -1.6572763e+02 -5.8917938e+00
+1.9247524e+00 -5.0641042e+02 -2.6321846e+00
+5.1093595e+00 -9.2691508e+02 4.7189810e+00
+7.2813283e+00 -1.3134841e+03 1.4727711e+01
+7.9452063e+00 -1.5773907e+03 2.5754179e+01
+7.3466337e+00 -1.6779629e+03 3.7907183e+01
+6.2615316e+00 -1.6221185e+03 5.0672789e+01
+5.6433569e+00 -1.4408165e+03 6.3686493e+01
+5.5188856e+00 -1.1726151e+03 7.7458268e+01
+5.2074118e+00 -8.6052897e+02 9.1904266e+01
+4.3020037e+00 -5.5060872e+02 1.0607337e+02
+2.9419537e+00 -2.8812921e+02 1.1740170e+02
+2.2167827e+00 -1.0557288e+02 1.1907950e+02
+1.3423057e+00 -1.5862529e+01 1.1434347e+02
+2.3912705e+00 -6.9365856e+00 1.1287439e+02
+4.0645953e+00 -3.5484350e+00 1.1051646e+02
+7.7326584e+00 -1.2546471e+00 1.0313718e+02
+3.5888872e+01 -1.4771572e+01 1.3938469e+01
+-1.4348817e+01 -2.2476151e+02 0.0000000e+00
+-8.9388358e-05 -1.3191263e-03 -9.6815353e-04
+-1.6298996e-03 -2.3167869e-02 -1.5993472e-02
+-2.6406737e-02 -3.6882786e-01 -1.8806761e-01
+-4.2226052e-01 -6.1435081e+00 -1.5162772e+00
+-6.4802056e+00 -1.4691392e+02 -1.4845163e+00
+-7.9777103e+00 -4.6253909e+02 8.7558076e+00
+-9.4580459e+00 -8.4916811e+02 2.9640973e+01
+-1.2388095e+01 -1.2023256e+03 5.8785357e+01
+-1.6437043e+01 -1.4422550e+03 9.3619414e+01
+-1.9914386e+01 -1.5333546e+03 1.3255729e+02
+-2.0923490e+01 -1.4819784e+03 1.7376727e+02
+-1.8576107e+01 -1.3165826e+03 2.1534657e+02
+-1.3818768e+01 -1.0726706e+03 2.5543510e+02
+-8.7480156e+00 -7.8889811e+02 2.9132911e+02
+-5.0971037e+00 -5.0626651e+02 3.1916114e+02
+-3.0374854e+00 -2.6439755e+02 3.3385482e+02
+-3.1952314e-01 -9.2288688e+01 3.3133629e+02
+2.3410234e+00 -1.1164972e+01 3.2380791e+02
+4.5021077e+00 -4.6391945e+00 3.1628031e+02
+7.4895836e+00 -2.4096930e+00 3.0682769e+02
+1.3221539e+01 -7.9597544e-01 2.8888978e+02
+3.4048792e+01 -1.2721100e+01 1.4597779e+02
+-7.3244483e+01 -2.5754537e+02 0.0000000e+00
+-1.7515673e-04 -8.0498403e-04 -4.0364930e-04
+-3.2547903e-03 -1.5231494e-02 -6.0273967e-03
+-5.3782611e-02 -2.6653449e-01 -6.4253176e-02
+-8.7452830e-01 -4.8170668e+00 -5.5181578e-01
+-1.5933291e+01 -1.2071062e+02 6.8734117e+00
+-2.3279214e+01 -3.9081196e+02 2.7937487e+01
+-3.1055382e+01 -7.2108103e+02 6.6736013e+01
+-4.0511489e+01 -1.0210957e+03 1.2153273e+02
+-5.0378811e+01 -1.2239688e+03 1.8860590e+02
+-5.7414326e+01 -1.3005854e+03 2.6409627e+02
+-5.8469138e+01 -1.2565600e+03 3.4374874e+02
+-5.2552230e+01 -1.1161484e+03 4.2302776e+02
+-4.1640859e+01 -9.0954489e+02 4.9713879e+02
+-2.9518074e+01 -6.6914138e+02 5.6060577e+02
+-1.9500716e+01 -4.2902912e+02 6.0745695e+02
+-1.2329818e+01 -2.2201503e+02 6.3233478e+02
+-4.8173688e+00 -7.3848874e+01 6.3357790e+02
+3.3308553e+00 -7.4715583e+00 6.2441530e+02
+6.7620786e+00 -2.7107638e+00 6.1218746e+02
+1.1254479e+01 -1.5237368e+00 5.9472898e+02
+1.9049191e+01 -8.2691677e-01 5.6309078e+02
+2.1797712e+01 -1.1210147e+01 4.0176479e+02
+-7.6399161e+01 -2.3575346e+02 0.0000000e+00
+-2.7658349e-04 -5.0998897e-04 -1.3538181e-04
+-5.1878418e-03 -1.0141919e-02 -1.8830021e-03
+-8.6691367e-02 -1.8555250e-01 -1.9282244e-02
+-1.4277606e+00 -3.4401086e+00 -1.8987619e-01
+-2.8254968e+01 -8.9445949e+01 1.5920919e+01
+-4.3605437e+01 -2.9603547e+02 4.9811822e+01
+-5.9914424e+01 -5.4901177e+02 1.0794686e+02
+-7.7900269e+01 -7.7792701e+02 1.8975182e+02
+-9.5069144e+01 -9.3208620e+02 2.9070553e+02
+-1.0647741e+02 -9.8992593e+02 4.0478881e+02
+-1.0767100e+02 -9.5595118e+02 5.2515711e+02
+-9.7527868e+01 -8.4875191e+02 6.4450185e+02
+-7.9134429e+01 -6.9138046e+02 7.5517896e+02
+-5.8140201e+01 -5.0832664e+02 8.4915786e+02
+-3.9666414e+01 -3.2520417e+02 9.1867060e+02
+-2.5309669e+01 -1.6671291e+02 9.5795487e+02
+-1.1254619e+01 -5.3511876e+01 9.6519553e+02
+4.2844917e+00 -4.8867693e+00 9.5402652e+02
+9.0769525e+00 -1.6667991e+00 9.3675767e+02
+1.5146063e+01 -1.0720354e+00 9.0998311e+02
+2.4957084e+01 -9.1921331e-01 8.6213111e+02
+4.9129137e+00 -1.1219064e+01 7.0514150e+02
+-3.0182816e+01 -1.7077751e+02 0.0000000e+00
+-3.7341819e-04 -2.8966479e-04 -2.1501018e-05
+-7.0446608e-03 -5.8872258e-03 -1.1971389e-04
+-1.1859002e-01 -1.0935767e-01 2.5882332e-03
+-1.9706923e+00 -2.0389485e+00 9.4414870e-02
+-4.0826164e+01 -5.4872512e+01 2.3692490e+01
+-6.4684871e+01 -1.8439648e+02 6.9268192e+01
+-9.0079760e+01 -3.4334100e+02 1.4444214e+02
+-1.1699559e+02 -4.8683147e+02 2.4962718e+02
+-1.4164481e+02 -5.8316961e+02 3.7980697e+02
+-1.5748235e+02 -6.1910813e+02 5.2726497e+02
+-1.5887954e+02 -5.9759444e+02 6.8297384e+02
+-1.4460129e+02 -5.3033510e+02 8.3726017e+02
+-1.1875937e+02 -4.3179272e+02 9.8007789e+02
+-8.8741255e+01 -3.1723295e+02 1.1012329e+03
+-6.1386257e+01 -2.0254861e+02 1.1914016e+03
+-3.9221355e+01 -1.0312175e+02 1.2441613e+03
+-1.8070131e+01 -3.2376897e+01 1.2564432e+03
+5.1909539e+00 -2.8347890e+00 1.2429604e+03
+1.1285571e+01 -9.6667421e-01 1.2206823e+03
+1.8851273e+01 -6.5282064e-01 1.1851114e+03
+3.0733238e+01 -6.3772144e-01 1.1220546e+03
+-2.5480923e+00 -8.0141921e+00 9.6212275e+02
+5.2126371e+01 -9.1472843e+01 0.0000000e+00
+-4.4316400e-04 -9.4381065e-05 2.8258657e-05
+-8.3876928e-03 -1.9317640e-03 7.3995467e-04
+-1.4179709e-01 -3.6024923e-02 1.5862902e-02
+-2.3685936e+00 -6.7202718e-01 3.1977631e-01
+-5.0238229e+01 -1.8481449e+01 2.8872672e+01
+-8.0619613e+01 -6.2593862e+01 8.2461282e+01
+-1.1299568e+02 -1.1680008e+02 1.6918021e+02
+-1.4672013e+02 -1.6568271e+02 2.9005034e+02
+-1.7701463e+02 -1.9844949e+02 4.3978696e+02
+-1.9618022e+02 -2.1063281e+02 6.0960066e+02
+-1.9776471e+02 -2.0326111e+02 7.8902368e+02
+-1.8045713e+02 -1.8033395e+02 9.6680203e+02
+-1.4909659e+02 -1.4678141e+02 1.1312832e+03
+-1.1230710e+02 -1.0779008e+02 1.2708201e+03
+-7.8166440e+01 -6.8746424e+01 1.3750375e+03
+-4.9913994e+01 -3.4876932e+01 1.4369675e+03
+-2.3193034e+01 -1.0838503e+01 1.4524233e+03
+5.9049177e+00 -9.3714847e-01 1.4372079e+03
+1.2979361e+01 -3.2255868e-01 1.4114639e+03
+2.1679283e+01 -2.1673536e-01 1.3700691e+03
+3.5366216e+01 -2.1246830e-01 1.2968199e+03
+2.8983591e+00 -2.7107606e+00 1.1225060e+03
+1.3752581e+02 -2.6308808e+01 0.0000000e+00
+-4.6855754e-04 9.4381065e-05 4.3161386e-05
+-8.8776812e-03 1.9317640e-03 1.0194787e-03
+-1.5028718e-01 3.6024923e-02 2.0647081e-02
+-2.5146464e+00 6.7202718e-01 4.0725984e-01
+-5.3725603e+01 1.8481449e+01 3.0684116e+01
+-8.6549440e+01 6.2593862e+01 8.7106190e+01
+-1.2154283e+02 1.1680008e+02 1.7789093e+02
+-1.5781215e+02 1.6568271e+02 3.0426018e+02
+-1.9020817e+02 1.9844949e+02 4.6084405e+02
+-2.1061106e+02 2.1063281e+02 6.3848682e+02
+-2.1227188e+02 2.0326111e+02 8.2621869e+02
+-1.9385285e+02 1.8033395e+02 1.0122312e+03
+-1.6045593e+02 1.4678141e+02 1.1843080e+03
+-1.2115267e+02 1.0779008e+02 1.3302929e+03
+-8.4471600e+01 6.8746424e+01 1.4394435e+03
+-5.3917286e+01 3.4876932e+01 1.5045916e+03
+-2.5078017e+01 1.0838503e+01 1.5211337e+03
+6.1852672e+00 9.3714848e-01 1.5053042e+03
+1.3629825e+01 3.2255885e-01 1.4783732e+03
+2.2761644e+01 2.1674078e-01 1.4350264e+03
+3.7197282e+01 2.1262787e-01 1.3582946e+03
+7.7221636e+00 2.7163410e+00 1.1754380e+03
+1.7361829e+02 2.6257285e+01 0.0000000e+00
+-4.4316400e-04 2.8966479e-04 2.8258657e-05
+-8.3876928e-03 5.8872258e-03 7.3995467e-04
+-1.4179709e-01 1.0935767e-01 1.5862902e-02
+-2.3685936e+00 2.0389485e+00 3.1977631e-01
+-5.0238229e+01 5.4872512e+01 2.8872672e+01
+-8.0619613e+01 1.8439648e+02 8.2461282e+01
+-1.1299568e+02 3.4334100e+02 1.6918021e+02
+-1.4672013e+02 4.8683147e+02 2.9005034e+02
+-1.7701463e+02 5.8316961e+02 4.3978696e+02
+-1.9618022e+02 6.1910813e+02 6.0960066e+02
+-1.9776471e+02 5.9759444e+02 7.8902368e+02
+-1.8045713e+02 5.3033510e+02 9.6680203e+02
+-1.4909659e+02 4.3179272e+02 1.1312832e+03
+-1.1230710e+02 3.1723295e+02 1.2708201e+03
+-7.8166440e+01 2.0254861e+02 1.3750375e+03
+-4.9913994e+01 1.0312175e+02 1.4369675e+03
+-2.3193034e+01 3.2376897e+01 1.4524233e+03
+5.9049177e+00 2.8347890e+00 1.4372079e+03
+1.2979360e+01 9.6667425e-01 1.4114639e+03
+2.1679267e+01 6.5281954e-01 1.3700691e+03
+3.5365590e+01 6.3753019e-01 1.2968196e+03
+2.8742356e+00 8.0005205e+00 1.1225138e+03
+1.3748664e+02 9.1449241e+01 0.0000000e+00
+-3.7341819e-04 5.0998897e-04 -2.1501018e-05
+-7.0446608e-03 1.0141919e-02 -1.1971389e-04
+-1.1859002e-01 1.8555250e-01 2.5882332e-03
+-1.9706923e+00 3.4401086e+00 9.4414870e-02
+-4.0826164e+01 8.9445949e+01 2.3692490e+01
+-6.4684871e+01 2.9603547e+02 6.9268192e+01
+-9.0079760e+01 5.4901177e+02 1.4444214e+02
+-1.1699559e+02 7.7792701e+02 2.4962718e+02
+-1.4164481e+02 9.3208620e+02 3.7980697e+02
+-1.5748235e+02 9.8992593e+02 5.2726497e+02
+-1.5887954e+02 9.5595118e+02 6.8297384e+02
+-1.4460129e+02 8.4875191e+02 8.3726017e+02
+-1.1875937e+02 6.9138046e+02 9.8007789e+02
+-8.8741255e+01 5.0832664e+02 1.1012329e+03
+-6.1386257e+01 3.2520417e+02 1.1914016e+03
+-3.9221355e+01 1.6671291e+02 1.2441613e+03
+-1.8070131e+01 5.3511876e+01 1.2564432e+03
+5.1909538e+00 4.8867693e+00 1.2429604e+03
+1.1285571e+01 1.6668001e+00 1.2206823e+03
+1.8851271e+01 1.0720662e+00 1.1851114e+03
+3.0733311e+01 9.2036128e-01 1.1220521e+03
+-2.5363741e+00 1.1261321e+01 9.6215429e+02
+5.2117096e+01 1.7078852e+02 0.0000000e+00
+-2.7658349e-04 8.0498403e-04 -1.3538181e-04
+-5.1878418e-03 1.5231494e-02 -1.8830021e-03
+-8.6691367e-02 2.6653449e-01 -1.9282244e-02
+-1.4277606e+00 4.8170668e+00 -1.8987619e-01
+-2.8254968e+01 1.2071062e+02 1.5920919e+01
+-4.3605437e+01 3.9081196e+02 4.9811822e+01
+-5.9914424e+01 7.2108103e+02 1.0794686e+02
+-7.7900269e+01 1.0210957e+03 1.8975182e+02
+-9.5069144e+01 1.2239688e+03 2.9070553e+02
+-1.0647741e+02 1.3005854e+03 4.0478881e+02
+-1.0767100e+02 1.2565600e+03 5.2515711e+02
+-9.7527868e+01 1.1161484e+03 6.4450185e+02
+-7.9134429e+01 9.0954489e+02 7.5517896e+02
+-5.8140201e+01 6.6914138e+02 8.4915786e+02
+-3.9666414e+01 4.2902912e+02 9.1867060e+02
+-2.5309669e+01 2.2201503e+02 9.5795487e+02
+-1.1254619e+01 7.3848874e+01 9.6519553e+02
+4.2844917e+00 7.4715584e+00 9.5402652e+02
+9.0769524e+00 2.7107644e+00 9.3675767e+02
+1.5146068e+01 1.5237546e+00 9.0998312e+02
+2.4957381e+01 8.2753757e-01 8.6213091e+02
+4.9292404e+00 1.1232110e+01 7.0515927e+02
+-3.0148639e+01 2.3574324e+02 0.0000000e+00
+-1.7515673e-04 1.3191263e-03 -4.0364930e-04
+-3.2547903e-03 2.3167869e-02 -6.0273967e-03
+-5.3782611e-02 3.6882786e-01 -6.4253176e-02
+-8.7452830e-01 6.1435081e+00 -5.5181578e-01
+-1.5933291e+01 1.4691392e+02 6.8734117e+00
+-2.3279214e+01 4.6253909e+02 2.7937487e+01
+-3.1055382e+01 8.4916811e+02 6.6736013e+01
+-4.0511489e+01 1.2023256e+03 1.2153273e+02
+-5.0378811e+01 1.4422550e+03 1.8860590e+02
+-5.7414326e+01 1.5333546e+03 2.6409627e+02
+-5.8469138e+01 1.4819784e+03 3.4374874e+02
+-5.2552230e+01 1.3165826e+03 4.2302776e+02
+-4.1640859e+01 1.0726706e+03 4.9713879e+02
+-2.9518074e+01 7.8889811e+02 5.6060577e+02
+-1.9500716e+01 5.0626651e+02 6.0745695e+02
+-1.2329818e+01 2.6439755e+02 6.3233478e+02
+-4.8173688e+00 9.2288688e+01 6.3357790e+02
+3.3308553e+00 1.1164972e+01 6.2441530e+02
+6.7620788e+00 4.6391938e+00 6.1218746e+02
+1.1254495e+01 2.4096767e+00 5.9472904e+02
+1.9049680e+01 7.9547549e-01 5.6309239e+02
+2.1823058e+01 1.2693754e+01 4.0178490e+02
+-7.6395677e+01 2.5749877e+02 0.0000000e+00
+-8.9388358e-05 2.3465246e-03 -9.6815353e-04
+-1.6298996e-03 3.9417795e-02 -1.5993472e-02
+-2.6406737e-02 5.6414888e-01 -1.8806761e-01
+-4.2226052e-01 7.9173229e+00 -1.5162772e+00
+-6.4802056e+00 1.6572763e+02 -1.4845163e+00
+-7.9777103e+00 5.0641042e+02 8.7558076e+00
+-9.4580459e+00 9.2691508e+02 2.9640973e+01
+-1.2388095e+01 1.3134841e+03 5.8785357e+01
+-1.6437043e+01 1.5773907e+03 9.3619414e+01
+-1.9914386e+01 1.6779629e+03 1.3255729e+02
+-2.0923490e+01 1.6221185e+03 1.7376727e+02
+-1.8576107e+01 1.4408165e+03 2.1534657e+02
+-1.3818768e+01 1.1726151e+03 2.5543510e+02
+-8.7480156e+00 8.6052897e+02 2.9132911e+02
+-5.0971037e+00 5.5060871e+02 3.1916114e+02
+-3.0374854e+00 2.8812921e+02 3.3385482e+02
+-3.1952315e-01 1.0557288e+02 3.3133629e+02
+2.3410234e+00 1.5862529e+01 3.2380791e+02
+4.5021077e+00 6.9365841e+00 3.1628031e+02
+7.4895797e+00 3.5483784e+00 3.0682776e+02
+1.3221404e+01 1.2521064e+00 2.8889097e+02
+3.4065399e+01 1.4705420e+01 1.4596823e+02
+-7.3231999e+01 2.2471447e+02 0.0000000e+00
+-3.0494536e-05 4.0377926e-03 -1.6772451e-03
+-5.1187898e-04 7.0316547e-02 -3.2336359e-02
+-7.5970248e-03 1.0056534e+00 -4.6968865e-01
+-1.1614262e-01 1.2488352e+01 -4.9509915e+00
+-5.7886043e-01 1.7197811e+02 -5.8917938e+00
+1.9247524e+00 5.2015882e+02 -2.6321846e+00
+5.1093595e+00 9.5182555e+02 4.7189810e+00
+7.2813283e+00 1.3506276e+03 1.4727711e+01
+7.9452063e+00 1.6246830e+03 2.5754179e+01
+7.3466337e+00 1.7297719e+03 3.7907183e+01
+6.2615316e+00 1.6733645e+03 5.0672789e+01
+5.6433569e+00 1.4868606e+03 6.3686493e+01
+5.5188856e+00 1.2088983e+03 7.7458268e+01
+5.2074118e+00 8.8456780e+02 9.1904266e+01
+4.3020037e+00 5.6215564e+02 1.0607337e+02
+2.9419537e+00 2.8995226e+02 1.1740170e+02
+2.2167827e+00 1.0672855e+02 1.1907950e+02
+1.3423057e+00 1.9497143e+01 1.1434347e+02
+2.3912708e+00 6.5060256e+00 1.1287440e+02
+4.0646195e+00 2.8918015e+00 1.1051647e+02
+7.7334487e+00 9.6677549e-01 1.0313676e+02
+3.5904116e+01 9.1937644e+00 1.3878568e+01
+-1.4389734e+01 1.5191091e+02 0.0000000e+00
+2.0559473e-06 5.1937688e-03 -1.1767044e-03
+1.2055814e-04 9.5458266e-02 -2.6870995e-02
+3.2457581e-03 1.4360945e+00 -4.6867800e-01
+5.9794446e-02 1.8266864e+01 -6.4307641e+00
+7.1386120e-01 1.7182458e+02 -8.2600276e+00
+2.4958275e+00 5.1263889e+02 -7.0835990e+00
+4.9422037e+00 9.3663658e+02 -3.6395591e+00
+7.3274510e+00 1.3310692e+03 -2.3937112e-01
+9.1220355e+00 1.6043134e+03 1.6944072e+00
+9.8891095e+00 1.7096409e+03 3.3418959e+00
+9.5171550e+00 1.6554049e+03 4.5172218e+00
+8.3700929e+00 1.4722611e+03 5.0514319e+00
+6.8179974e+00 1.1971338e+03 5.9252795e+00
+5.1182294e+00 8.7547545e+02 7.4997122e+00
+3.5636250e+00 5.5532498e+02 9.9555310e+00
+2.2755950e+00 2.8414256e+02 1.3700955e+01
+1.2278707e+00 1.0148379e+02 1.8146735e+01
+6.3751095e-01 1.8130744e+01 1.9162511e+01
+8.3724848e-01 3.1015741e+00 2.2157179e+01
+1.5492182e+00 6.7993453e-01 2.3685211e+01
+3.4789420e+00 -2.4003704e-02 2.2156822e+01
+2.8533672e+01 2.2764902e+00 -1.1991598e+01
+4.9870596e+01 7.8014462e+01 0.0000000e+00
+1.6651188e-05 4.2769881e-03 8.7262074e-04
+4.2543731e-04 8.3607894e-02 1.1587236e-02
+8.6474626e-03 1.3435819e+00 8.0943300e-02
+1.3887624e-01 1.8106155e+01 -1.3019941e-01
+1.4411001e+00 1.7125057e+02 -3.4013500e+00
+4.6929195e+00 5.0237202e+02 -5.2388871e+00
+9.1237285e+00 9.1167952e+02 -2.7055360e+00
+1.3464092e+01 1.2973976e+03 -1.4436194e-02
+1.6761639e+01 1.5679607e+03 8.0344116e-01
+1.8216952e+01 1.6727933e+03 1.8152501e+00
+1.7589182e+01 1.6219872e+03 2.4702556e+00
+1.5489333e+01 1.4448503e+03 2.2368081e+00
+1.2589199e+01 1.1754313e+03 2.4149391e+00
+9.3902796e+00 8.5979872e+02 3.1582224e+00
+6.4641361e+00 5.4550337e+02 4.2668745e+00
+4.0646173e+00 2.7858104e+02 5.7905427e+00
+2.0866424e+00 1.0022741e+02 5.6613337e+00
+7.2929669e-01 2.0387926e+01 3.0758774e+00
+3.6801552e-01 2.9693388e+00 3.0978047e+00
+4.9467791e-01 3.3982569e-01 3.3230627e+00
+1.2862223e+00 -2.9173574e-02 2.7704197e+00
+1.7492936e+01 9.2178464e-01 -1.0443850e+00
+6.3633669e+01 2.9628991e+01 0.0000000e+00
+2.0335839e-05 1.7698966e-03 2.4563797e-03
+5.4118725e-04 3.8614122e-02 4.6065438e-02
+1.1750292e-02 7.2008537e-01 6.3908843e-01
+2.0811471e-01 1.2076553e+01 6.1274132e+00
+2.4922808e+00 1.6986033e+02 1.0820705e+00
+7.9540857e+00 4.8752299e+02 -3.9668864e+00
+1.5331253e+01 8.7300792e+02 -1.9602408e+00
+2.2529317e+01 1.2444836e+03 3.5391625e-01
+2.7994593e+01 1.5099985e+03 2.9405216e-01
+3.0414194e+01 1.6133245e+03 1.2700026e+00
+2.9365621e+01 1.5677559e+03 2.0610645e+00
+2.5868088e+01 1.4002812e+03 1.6038045e+00
+2.1040442e+01 1.1403138e+03 1.7717153e+00
+1.5681731e+01 8.3510931e+02 2.3552276e+00
+1.0754816e+01 5.3138638e+02 2.5592141e+00
+6.7510695e+00 2.7187643e+02 2.9330878e+00
+3.5306784e+00 9.8607316e+01 2.4097545e+00
+1.3070908e+00 2.1643537e+01 6.4215469e-01
+4.2877193e-01 3.1736009e+00 3.4381476e-01
+2.2462949e-01 3.5666630e-01 3.0940368e-01
+5.0797534e-01 1.0170034e-01 1.4882087e-01
+8.8997561e+00 5.3965295e-01 5.5689208e+00
+4.0907733e+01 6.6250072e+00 0.0000000e+00
+1.1592854e-05 0.0000000e+00 1.7410337e-03
+3.4945555e-04 0.0000000e+00 3.9464332e-02
+8.9678621e-03 0.0000000e+00 7.3627545e-01
+2.0443662e-01 0.0000000e+00 1.2270508e+01
+3.9142659e+00 1.6583032e+02 5.3533693e+00
+1.2308289e+01 4.6252800e+02 -2.9690995e+00
+2.3587632e+01 8.1007023e+02 -1.3303168e+00
+3.4677806e+01 1.1565579e+03 9.7264421e-01
+4.4126620e+01 1.4107416e+03 -5.5180827e-02
+4.9420525e+01 1.5089801e+03 1.1493838e+00
+4.8273581e+01 1.4708605e+03 2.4250406e+00
+4.2650474e+01 1.3193840e+03 1.6643423e+00
+3.5181198e+01 1.0757076e+03 2.0670503e+00
+2.6756894e+01 7.8903281e+02 2.7901582e+00
+1.8759132e+01 5.0440655e+02 1.7973885e+00
+1.2122940e+01 2.5822133e+02 1.0301001e+00
+6.5351806e+00 9.2924495e+01 7.6351538e-01
+2.6842105e+00 2.0372113e+01 9.0647951e-02
+1.0642608e+00 2.7640743e+00 5.7966654e-02
+6.0838518e-01 3.6519099e-01 1.6075688e-02
+7.6548251e-01 3.8683526e-01 -2.6705160e-01
+3.3822734e+00 0.0000000e+00 2.5790154e+00
+1.3351943e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-9.5821841e+00 1.3561560e+02 2.9157820e+01
+-2.9078265e+01 4.8586715e+02 1.1754037e+01
+-5.7570576e+01 8.3315199e+02 -8.4999116e+00
+-9.0759982e+01 1.1004123e+03 8.6179662e+00
+-6.7095665e+01 1.2709128e+03 1.7615762e+01
+-2.6689337e+00 1.2982361e+03 1.7746208e+01
+1.5576981e+01 1.2216014e+03 2.5482348e+01
+9.7677661e+00 1.0711430e+03 2.7706237e+01
+2.7769013e+01 8.4548776e+02 3.4655995e+01
+4.2821861e+01 5.8393592e+02 4.1071201e+01
+4.2761803e+01 3.2509582e+02 2.6321067e+01
+3.6302862e+01 1.1585891e+02 1.2266054e+01
+1.8240770e+01 1.0518442e+01 9.2580902e+00
+9.3322958e+00 -7.3327148e+00 6.5387871e+00
+1.3289456e+01 1.2327265e+00 4.5340370e+00
+1.7229548e+01 6.2418782e+00 1.4407167e+00
+1.1362221e+01 3.9270749e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.4521948e+01 0.0000000e+00 2.9535720e+01
+1.3540864e+02 0.0000000e+00 4.7833269e+01
+1.9481244e+02 0.0000000e+00 2.0295037e+01
+8.6383022e+01 0.0000000e+00 9.0113178e+01
+1.1251563e+02 0.0000000e+00 1.6812954e+02
+2.6543534e+02 0.0000000e+00 1.6600322e+02
+1.8218418e+02 0.0000000e+00 2.1035677e+02
+2.2556581e+01 0.0000000e+00 2.7765002e+02
+2.4731623e+01 0.0000000e+00 3.1722477e+02
+7.7200218e+00 0.0000000e+00 3.4872495e+02
+-7.7075479e+01 0.0000000e+00 2.9617785e+02
+-1.0991148e+02 0.0000000e+00 1.9316029e+02
+-1.0472364e+02 0.0000000e+00 1.3011563e+02
+-3.8820371e+01 0.0000000e+00 9.0375355e+01
+4.3681448e+01 0.0000000e+00 5.0562851e+01
+8.2830367e+01 0.0000000e+00 1.3334899e+01
+5.3216056e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.8570262e+01 -5.7934464e+01 -1.2585221e+01
+4.2786408e+01 -1.9832180e+02 1.6311615e+01
+-2.4698594e+00 -3.4206192e+02 6.7712600e+01
+7.7474097e+00 -4.9438415e+02 3.8765741e+01
+1.2619416e+02 -6.4245219e+02 3.1430646e+01
+2.4161470e+02 -7.2294521e+02 1.4824606e+02
+3.0328802e+02 -7.3831759e+02 2.0544257e+02
+2.8700291e+02 -6.9449749e+02 1.5746336e+02
+1.7267680e+02 -5.8454748e+02 2.0102470e+02
+1.3971400e+02 -4.5178780e+02 2.6481565e+02
+2.0598952e+02 -3.2330822e+02 1.8211755e+02
+1.2020617e+02 -1.9892434e+02 8.7432853e+01
+-4.4573205e+01 -9.5182619e+01 7.0142240e+01
+-4.1427125e+01 -3.6902427e+01 4.7769874e+01
+3.0362560e+01 -1.3808477e+01 6.5776976e+00
+4.7412389e+01 -5.9352692e+00 -6.3041973e+00
+2.7024854e+01 -2.2571970e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.5511371e+01 -1.1599269e+02 1.3058376e+01
+1.1221585e+02 -3.3221332e+02 5.6845721e+00
+1.9056062e+02 -5.9480158e+02 1.0285584e+01
+2.6969491e+02 -8.5754254e+02 1.2961027e+01
+3.4341639e+02 -1.0537857e+03 1.3768517e+01
+3.7754878e+02 -1.1344113e+03 4.5046229e+01
+3.6531831e+02 -1.1053753e+03 6.2504014e+01
+3.1605763e+02 -9.8810062e+02 5.0634197e+01
+2.3408725e+02 -8.0502924e+02 6.5031366e+01
+1.6403078e+02 -5.9178663e+02 8.3828456e+01
+1.2447544e+02 -3.8410694e+02 5.8124809e+01
+6.9000657e+01 -2.0776540e+02 3.3290079e+01
+1.1415014e+01 -8.5731531e+01 2.6316763e+01
+6.4268503e-01 -2.4996232e+01 1.5000264e+01
+1.2162721e+01 -5.9072844e+00 2.5047959e+00
+1.4424300e+01 -1.3519629e+00 -1.2668115e+00
+7.7975899e+00 -1.3549829e-01 0.0000000e+00
+0 0 0
+0 0 0
+1.0349840e-06 -1.0224925e-03 1.0330502e-03
+3.2822367e-05 -2.2549512e-02 2.3899181e-02
+9.6352233e-04 -4.2836995e-01 4.6027318e-01
+3.0381085e-02 -7.4016299e+00 8.0359449e+00
+1.1783098e+00 -1.0907256e+02 3.8513040e+00
+3.5492990e+00 -3.1832977e+02 -1.2734420e+00
+5.0884670e+00 -5.7738549e+02 -1.9403945e-01
+4.7019298e+00 -8.2917971e+02 1.4197641e+00
+3.0666134e+00 -1.0123231e+03 1.0171457e+00
+6.7705045e-01 -1.0867016e+03 2.0539977e+00
+-1.8886352e+00 -1.0562680e+03 3.1101901e+00
+-3.6118754e+00 -9.4140168e+02 2.6722239e+00
+-4.6429516e+00 -7.6555447e+02 3.0542182e+00
+-5.4883029e+00 -5.6062978e+02 4.1054375e+00
+-5.8249418e+00 -3.5947272e+02 4.0946064e+00
+-5.3724297e+00 -1.8982966e+02 3.5355296e+00
+-4.1561581e+00 -7.4313995e+01 2.6412236e+00
+-1.9865622e+00 -1.8939555e+01 1.1382887e+00
+-4.9083498e-01 -3.7535910e+00 3.7228002e-01
+1.4805766e-01 -7.1456524e-01 1.4531240e-01
+4.2432759e-01 -1.2403350e-01 3.7861445e-01
+9.7376213e-01 -1.2844926e-01 2.8912873e+00
+-2.1935017e+00 -1.3682681e+00 0.0000000e+00
+1.4961349e-06 -2.4508338e-03 1.4471808e-03
+4.5815255e-05 -4.8176843e-02 2.7569882e-02
+1.0849228e-03 -7.8214029e-01 3.9200554e-01
+2.0275017e-02 -1.0717754e+01 3.8959676e+00
+2.4513669e-01 -1.0390656e+02 9.7711122e-01
+6.8393556e-01 -3.0801313e+02 -2.0694008e+00
+5.4951019e-01 -5.6370897e+02 -9.6419366e-01
+-7.6054888e-01 -8.0746745e+02 6.1339759e-01
+-2.7055632e+00 -9.8173352e+02 7.2392770e-01
+-4.5727712e+00 -1.0521335e+03 1.1427797e+00
+-5.9346430e+00 -1.0214594e+03 1.6345135e+00
+-6.3054688e+00 -9.0909130e+02 1.4978378e+00
+-5.8773166e+00 -7.3869562e+02 1.5567337e+00
+-5.4492431e+00 -5.4005322e+02 2.1112196e+00
+-5.0737332e+00 -3.4426076e+02 2.7279005e+00
+-4.1407875e+00 -1.7934206e+02 3.1327683e+00
+-2.5780084e+00 -6.7581251e+01 2.5036347e+00
+-1.0772706e+00 -1.4949560e+01 8.8997322e-01
+-3.6691433e-01 -2.6130978e+00 5.4080384e-01
+-1.5398818e-01 -5.3388510e-01 7.3509844e-01
+-1.9735745e-02 -3.4873600e-01 1.4885694e+00
+4.8975909e+00 -3.0621791e+00 8.4463977e+00
+4.4591798e+00 -1.2758474e+01 0.0000000e+00
+-8.4557102e-07 -2.9613896e-03 5.2805247e-04
+8.8765453e-06 -5.4557304e-02 7.3250745e-03
+5.6604497e-04 -8.2493018e-01 5.8196379e-02
+1.3028981e-02 -1.0584199e+01 5.0488687e-02
+1.6300188e-01 -1.0077732e+02 -1.8006564e+00
+4.8428547e-01 -3.0270831e+02 -2.8968418e+00
+4.7109645e-01 -5.5650163e+02 -1.4515434e+00
+-2.7616278e-01 -7.9543153e+02 2.5279441e-01
+-1.4406828e+00 -9.6409123e+02 8.1282759e-01
+-2.5828407e+00 -1.0318262e+03 1.3053910e+00
+-3.4289978e+00 -1.0008398e+03 1.7040009e+00
+-3.6749797e+00 -8.8987125e+02 1.6482708e+00
+-3.4385874e+00 -7.2275035e+02 1.7307868e+00
+-3.2088581e+00 -5.2801602e+02 2.2927304e+00
+-3.0094718e+00 -3.3572880e+02 3.2343867e+00
+-2.4541932e+00 -1.7384151e+02 4.2526440e+00
+-1.4881560e+00 -6.3819244e+01 4.0658808e+00
+-5.8198747e-01 -1.1950751e+01 2.3781639e+00
+-3.0537058e-01 -2.3902683e+00 2.8289664e+00
+-3.9965591e-01 -9.9866366e-01 4.1882739e+00
+-4.1173765e-01 -1.1992199e+00 6.7422812e+00
+1.6262567e+01 -1.1903883e+01 1.7039211e+01
+3.2101411e+01 -3.6472747e+01 0.0000000e+00
+-1.1957534e-05 -2.2959809e-03 -6.5139520e-04
+-1.7718180e-04 -3.9998783e-02 -1.4912177e-02
+-2.0345214e-03 -5.7314581e-01 -2.6141627e-01
+-1.8288203e-02 -7.1456958e+00 -3.6218365e+00
+-9.9199528e-02 -9.8959961e+01 -4.6261358e+00
+-2.1276596e-01 -3.0066215e+02 -3.9637066e+00
+-6.1725427e-01 -5.5291516e+02 -1.9907245e+00
+-1.4631398e+00 -7.8868668e+02 5.5015924e-02
+-2.4726592e+00 -9.5366160e+02 1.2200761e+00
+-3.3205792e+00 -1.0195151e+03 2.1186350e+00
+-3.8143572e+00 -9.8819954e+02 2.8098434e+00
+-3.7828751e+00 -8.7806500e+02 3.1565640e+00
+-3.3420667e+00 -7.1306500e+02 3.6312777e+00
+-2.8447246e+00 -5.2101244e+02 4.5906539e+00
+-2.3707654e+00 -3.3136476e+02 6.1609986e+00
+-1.7551435e+00 -1.7211666e+02 8.4668897e+00
+-1.0233851e+00 -6.4496822e+01 1.1395723e+01
+-4.9805095e-01 -1.2206708e+01 1.2787259e+01
+-6.3489730e-01 -4.7102799e+00 1.6579417e+01
+-1.1851751e+00 -3.0453221e+00 2.1360656e+01
+-1.5409802e+00 -3.2183142e+00 2.8403995e+01
+3.1508642e+01 -2.7024990e+01 4.0728285e+01
+5.9940422e+01 -6.3519423e+01 0.0000000e+00
+-4.9903860e-05 -1.3330510e-03 -9.4352053e-04
+-9.0328635e-04 -2.2364819e-02 -1.8186077e-02
+-1.4599532e-02 -3.1967075e-01 -2.6465864e-01
+-2.3656923e-01 -4.4756649e+00 -2.8142629e+00
+-5.7340847e+00 -9.3402270e+01 -3.2167299e+00
+-1.4803546e+01 -2.8585286e+02 -1.2977158e+00
+-2.7015733e+01 -5.2505559e+02 2.9678090e+00
+-3.9982014e+01 -7.4726284e+02 8.8073153e+00
+-5.0623632e+01 -9.0147460e+02 1.5189158e+01
+-5.6572778e+01 -9.6254164e+02 2.2135086e+01
+-5.6803889e+01 -9.3242972e+02 2.9430688e+01
+-5.1392559e+01 -8.2839485e+02 3.6796449e+01
+-4.1870370e+01 -6.7332571e+02 4.4446410e+01
+-3.0763978e+01 -4.9308519e+02 5.2490546e+01
+-2.0172115e+01 -3.1500918e+02 6.0609082e+01
+-1.1419932e+01 -1.6499166e+02 6.7845969e+01
+-5.6467349e+00 -6.0914909e+01 7.2127574e+01
+-1.0781439e+00 -9.8290468e+00 7.2170362e+01
+-1.5552043e+00 -5.1331323e+00 7.6539689e+01
+-2.6892107e+00 -3.8401686e+00 8.4088339e+01
+-3.5556900e+00 -4.3189269e+00 9.6482579e+01
+4.8516884e+01 -3.9540072e+01 9.6367148e+01
+7.2702262e+01 -9.1322371e+01 0.0000000e+00
+-1.2756918e-04 -7.5115265e-04 -5.4371758e-04
+-2.4154766e-03 -1.3168057e-02 -8.9549028e-03
+-4.1065135e-02 -2.0916280e-01 -1.0480445e-01
+-6.9493795e-01 -3.4740108e+00 -8.3378115e-01
+-1.7614191e+01 -8.2464081e+01 -6.3798463e-01
+-4.0221914e+01 -2.5962754e+02 5.3808980e+00
+-6.8592727e+01 -4.7803896e+02 1.7498952e+01
+-9.6945122e+01 -6.7958111e+02 3.4374243e+01
+-1.1929558e+02 -8.1870731e+02 5.4465491e+01
+-1.3118586e+02 -8.7358653e+02 7.6781854e+01
+-1.3068866e+02 -8.4612371e+02 1.0024101e+02
+-1.1847493e+02 -7.5195255e+02 1.2369754e+02
+-9.7639002e+01 -6.1188935e+02 1.4608142e+02
+-7.2741572e+01 -4.4903160e+02 1.6602139e+02
+-4.8277302e+01 -2.8755995e+02 1.8175236e+02
+-2.7772836e+01 -1.5009740e+02 1.9159345e+02
+-1.3799092e+01 -5.2688361e+01 1.9684647e+02
+-1.8065315e+00 -7.0253413e+00 1.9819032e+02
+-2.3331206e+00 -3.7500178e+00 2.0364244e+02
+-3.9375712e+00 -3.1403899e+00 2.1436981e+02
+-4.9133684e+00 -4.1668452e+00 2.3234699e+02
+7.5985630e+01 -4.3909003e+01 1.9477899e+02
+8.8084824e+01 -1.1407459e+02 0.0000000e+00
+-2.4100237e-04 -4.6168154e-04 -2.2362546e-04
+-4.6251196e-03 -8.7225673e-03 -3.2987860e-03
+-7.9700477e-02 -1.5235983e-01 -3.4183887e-02
+-1.3638506e+00 -2.7478399e+00 -2.7103249e-01
+-3.5061775e+01 -6.7832259e+01 4.2256292e+00
+-7.5987130e+01 -2.1930894e+02 1.6614944e+01
+-1.2600585e+02 -4.0567468e+02 3.9201134e+01
+-1.7515479e+02 -5.7669728e+02 7.0960614e+01
+-2.1358530e+02 -6.9420279e+02 1.0966258e+02
+-2.3397215e+02 -7.4033266e+02 1.5296653e+02
+-2.3310595e+02 -7.1685582e+02 1.9833545e+02
+-2.1223770e+02 -6.3703866e+02 2.4310703e+02
+-1.7646676e+02 -5.1852954e+02 2.8457313e+02
+-1.3315804e+02 -3.8067691e+02 3.1985839e+02
+-8.9869550e+01 -2.4357220e+02 3.4623948e+02
+-5.2763796e+01 -1.2596140e+02 3.6253746e+02
+-2.6165092e+01 -4.2142097e+01 3.7333892e+02
+-2.3868335e+00 -4.7724675e+00 3.7680373e+02
+-2.5686201e+00 -2.3955986e+00 3.8478001e+02
+-4.3303852e+00 -2.2423012e+00 3.9946681e+02
+-4.6312825e+00 -3.5727487e+00 4.2255307e+02
+1.1719625e+02 -4.3714529e+01 3.2706811e+02
+1.0782215e+02 -1.2121326e+02 0.0000000e+00
+-3.7121138e-04 -2.9547840e-04 -7.1575246e-05
+-7.1607763e-03 -5.8690092e-03 -9.5219885e-04
+-1.2405307e-01 -1.0722182e-01 -8.7285048e-03
+-2.1333787e+00 -1.9847227e+00 -6.6227518e-02
+-5.5259258e+01 -5.0385919e+01 9.4917228e+00
+-1.1654665e+02 -1.6630648e+02 2.9430477e+01
+-1.9041338e+02 -3.0911583e+02 6.3370578e+01
+-2.6245132e+02 -4.3966978e+02 1.1089413e+02
+-3.1862299e+02 -5.2901508e+02 1.6926027e+02
+-3.4849073e+02 -5.6389289e+02 2.3483381e+02
+-3.4744465e+02 -5.4578357e+02 3.0353522e+02
+-3.1728326e+02 -4.8484086e+02 3.7109280e+02
+-2.6523123e+02 -3.9453227e+02 4.3319233e+02
+-2.0170677e+02 -2.8950102e+02 4.8558301e+02
+-1.3755476e+02 -1.8485463e+02 5.2475379e+02
+-8.1739958e+01 -9.4720947e+01 5.4994363e+02
+-4.0463254e+01 -3.0586711e+01 5.6759688e+02
+-2.8100257e+00 -3.0952366e+00 5.7301417e+02
+-2.4130801e+00 -1.4392805e+00 5.8354788e+02
+-4.0977423e+00 -1.4042517e+00 6.0195363e+02
+-3.1632374e+00 -2.5487477e+00 6.2904993e+02
+1.6665851e+02 -3.8840386e+01 4.6242922e+02
+1.2419326e+02 -1.0986347e+02 0.0000000e+00
+-4.9181896e-04 -1.6940089e-04 -7.6767397e-06
+-9.5111844e-03 -3.4392610e-03 2.9098680e-05
+-1.6523655e-01 -6.3806833e-02 3.2606386e-03
+-2.8501064e+00 -1.1881607e+00 8.6112727e-02
+-7.4177275e+01 -3.0977076e+01 1.4028382e+01
+-1.5412228e+02 -1.0370461e+02 4.0863921e+01
+-2.4970522e+02 -1.9348544e+02 8.4858985e+01
+-3.4254355e+02 -2.7537429e+02 1.4611146e+02
+-4.1483843e+02 -3.3125423e+02 2.2154423e+02
+-4.5336399e+02 -3.5296095e+02 3.0649393e+02
+-4.5225434e+02 -3.4149226e+02 3.9557742e+02
+-4.1376629e+02 -3.0324020e+02 4.8314176e+02
+-3.4700378e+02 -2.4665525e+02 5.6350915e+02
+-2.6512161e+02 -1.8087419e+02 6.3126268e+02
+-1.8191146e+02 -1.1527952e+02 6.8221278e+02
+-1.0886715e+02 -5.8675452e+01 7.1581308e+02
+-5.3914755e+01 -1.8526534e+01 7.3959752e+02
+-3.1690938e+00 -1.7396236e+00 7.4660196e+02
+-2.2134522e+00 -7.2848746e-01 7.5939019e+02
+-3.7947295e+00 -6.6128949e-01 7.8129322e+02
+-1.4950159e+00 -1.3010707e+00 8.1227378e+02
+2.2090020e+02 -2.6013777e+01 5.7599987e+02
+1.6291562e+02 -7.7235926e+01 0.0000000e+00
+-5.7682995e-04 -5.5498753e-05 1.9763809e-05
+-1.1169479e-02 -1.1347818e-03 4.9707077e-04
+-1.9434034e-01 -2.1138550e-02 1.0372039e-02
+-3.3577836e+00 -3.9389740e-01 2.0529867e-01
+-8.7626945e+01 -1.0445810e+01 1.7062748e+01
+-1.8068094e+02 -3.5224913e+01 4.8644378e+01
+-2.9146581e+02 -6.5854768e+01 9.9483833e+01
+-3.9884362e+02 -9.3762742e+01 1.6999578e+02
+-4.8240664e+02 -1.1277809e+02 2.5691166e+02
+-5.2699881e+02 -1.2014383e+02 3.5491312e+02
+-5.2588410e+02 -1.1621345e+02 4.5775370e+02
+-4.8162531e+02 -1.0317075e+02 5.5885242e+02
+-4.0461734e+02 -8.3896812e+01 6.5161474e+02
+-3.0990909e+02 -6.1497608e+01 7.2984014e+02
+-2.1333890e+02 -3.9154759e+01 7.8888783e+02
+-1.2817430e+02 -1.9860626e+01 8.2833331e+02
+-6.3579562e+01 -6.2038892e+00 8.5639720e+02
+-3.4700895e+00 -5.5846113e-01 8.6459104e+02
+-2.1572931e+00 -2.1248444e-01 8.7921169e+02
+-3.7202892e+00 -1.7083331e-01 9.0412081e+02
+-3.3819334e-01 -3.5059267e-01 9.3887473e+02
+2.6992521e+02 -8.7464016e+00 6.5458185e+02
+2.2866310e+02 -2.7346722e+01 0.0000000e+00
+-6.0744522e-04 5.5498753e-05 2.7890173e-05
+-1.1767034e-02 1.1347818e-03 6.4767984e-04
+-2.0483701e-01 2.1138550e-02 1.2920404e-02
+-3.5410968e+00 3.9389740e-01 2.5157604e-01
+-9.2491886e+01 1.0445810e+01 1.8126240e+01
+-1.9026305e+02 3.5224913e+01 5.1390025e+01
+-3.0650904e+02 6.5854768e+01 1.0464670e+02
+-4.1910630e+02 9.3762742e+01 1.7841536e+02
+-5.0671405e+02 1.1277809e+02 2.6936507e+02
+-5.5348656e+02 1.2014383e+02 3.7195292e+02
+-5.5237672e+02 1.1621345e+02 4.7963086e+02
+-5.0605490e+02 1.0317075e+02 5.8549141e+02
+-4.2537558e+02 8.3896812e+01 6.8261744e+02
+-3.2606433e+02 6.1497608e+01 7.6453389e+02
+-2.2469261e+02 3.9154759e+01 8.2644538e+02
+-1.3516748e+02 1.9860626e+01 8.6797433e+02
+-6.7106672e+01 6.2038892e+00 8.9759521e+02
+-3.5965800e+00 5.5846114e-01 9.0626013e+02
+-2.1689094e+00 2.1248452e-01 9.2163390e+02
+-3.7457426e+00 1.7083755e-01 9.4779961e+02
+5.6134996e-02 3.5074732e-01 9.8423971e+02
+2.9088072e+02 8.7531345e+00 6.8358359e+02
+2.6448261e+02 2.7355568e+01 0.0000000e+00
+-5.7682995e-04 1.6940089e-04 1.9763809e-05
+-1.1169479e-02 3.4392610e-03 4.9707077e-04
+-1.9434034e-01 6.3806833e-02 1.0372039e-02
+-3.3577836e+00 1.1881607e+00 2.0529867e-01
+-8.7626945e+01 3.0977076e+01 1.7062748e+01
+-1.8068094e+02 1.0370461e+02 4.8644378e+01
+-2.9146581e+02 1.9348544e+02 9.9483833e+01
+-3.9884362e+02 2.7537429e+02 1.6999578e+02
+-4.8240664e+02 3.3125423e+02 2.5691166e+02
+-5.2699881e+02 3.5296095e+02 3.5491312e+02
+-5.2588410e+02 3.4149226e+02 4.5775370e+02
+-4.8162531e+02 3.0324020e+02 5.5885242e+02
+-4.0461734e+02 2.4665525e+02 6.5161474e+02
+-3.0990909e+02 1.8087419e+02 7.2984014e+02
+-2.1333890e+02 1.1527952e+02 7.8888783e+02
+-1.2817430e+02 5.8675452e+01 8.2833331e+02
+-6.3579562e+01 1.8526534e+01 8.5639720e+02
+-3.4700895e+00 1.7396236e+00 8.6459104e+02
+-2.1572933e+00 7.2848752e-01 8.7921169e+02
+-3.7203010e+00 6.6129057e-01 9.0412080e+02
+-3.3856643e-01 1.3011281e+00 9.3887464e+02
+2.6991367e+02 2.6013224e+01 6.5457319e+02
+2.2866966e+02 7.7234133e+01 0.0000000e+00
+-4.9181896e-04 2.9547840e-04 -7.6767397e-06
+-9.5111844e-03 5.8690092e-03 2.9098680e-05
+-1.6523655e-01 1.0722182e-01 3.2606386e-03
+-2.8501064e+00 1.9847227e+00 8.6112727e-02
+-7.4177275e+01 5.0385919e+01 1.4028382e+01
+-1.5412228e+02 1.6630648e+02 4.0863921e+01
+-2.4970522e+02 3.0911583e+02 8.4858985e+01
+-3.4254355e+02 4.3966978e+02 1.4611146e+02
+-4.1483843e+02 5.2901508e+02 2.2154423e+02
+-4.5336399e+02 5.6389289e+02 3.0649393e+02
+-4.5225434e+02 5.4578357e+02 3.9557742e+02
+-4.1376629e+02 4.8484086e+02 4.8314176e+02
+-3.4700378e+02 3.9453227e+02 5.6350915e+02
+-2.6512161e+02 2.8950102e+02 6.3126268e+02
+-1.8191146e+02 1.8485463e+02 6.8221278e+02
+-1.0886715e+02 9.4720947e+01 7.1581308e+02
+-5.3914755e+01 3.0586711e+01 7.3959752e+02
+-3.1690938e+00 3.0952367e+00 7.4660196e+02
+-2.2134526e+00 1.4392815e+00 7.5939019e+02
+-3.7947442e+00 1.4042775e+00 7.8129322e+02
+-1.4954754e+00 2.5496379e+00 8.1227365e+02
+2.2087946e+02 3.8867736e+01 5.7600310e+02
+1.6291201e+02 1.0984788e+02 0.0000000e+00
+-3.7121138e-04 4.6168154e-04 -7.1575246e-05
+-7.1607763e-03 8.7225673e-03 -9.5219885e-04
+-1.2405307e-01 1.5235983e-01 -8.7285048e-03
+-2.1333787e+00 2.7478399e+00 -6.6227518e-02
+-5.5259258e+01 6.7832259e+01 9.4917228e+00
+-1.1654665e+02 2.1930894e+02 2.9430477e+01
+-1.9041338e+02 4.0567468e+02 6.3370578e+01
+-2.6245132e+02 5.7669728e+02 1.1089413e+02
+-3.1862299e+02 6.9420279e+02 1.6926027e+02
+-3.4849073e+02 7.4033266e+02 2.3483381e+02
+-3.4744465e+02 7.1685582e+02 3.0353522e+02
+-3.1728326e+02 6.3703866e+02 3.7109280e+02
+-2.6523123e+02 5.1852954e+02 4.3319233e+02
+-2.0170677e+02 3.8067691e+02 4.8558301e+02
+-1.3755476e+02 2.4357220e+02 5.2475379e+02
+-8.1739958e+01 1.2596140e+02 5.4994363e+02
+-4.0463254e+01 4.2142097e+01 5.6759688e+02
+-2.8100257e+00 4.7724676e+00 5.7301417e+02
+-2.4130809e+00 2.3955992e+00 5.8354788e+02
+-4.0977600e+00 2.2423258e+00 6.0195367e+02
+-3.1639441e+00 3.5735030e+00 6.2905110e+02
+1.6663102e+02 4.3746152e+01 4.6247181e+02
+1.2417100e+02 1.2117335e+02 0.0000000e+00
+-2.4100237e-04 7.5115265e-04 -2.2362546e-04
+-4.6251196e-03 1.3168057e-02 -3.2987860e-03
+-7.9700477e-02 2.0916280e-01 -3.4183887e-02
+-1.3638506e+00 3.4740108e+00 -2.7103249e-01
+-3.5061775e+01 8.2464081e+01 4.2256292e+00
+-7.5987130e+01 2.5962754e+02 1.6614944e+01
+-1.2600585e+02 4.7803896e+02 3.9201134e+01
+-1.7515479e+02 6.7958111e+02 7.0960614e+01
+-2.1358530e+02 8.1870731e+02 1.0966258e+02
+-2.3397215e+02 8.7358653e+02 1.5296653e+02
+-2.3310595e+02 8.4612371e+02 1.9833545e+02
+-2.1223770e+02 7.5195255e+02 2.4310703e+02
+-1.7646676e+02 6.1188935e+02 2.8457313e+02
+-1.3315804e+02 4.4903160e+02 3.1985839e+02
+-8.9869550e+01 2.8755995e+02 3.4623948e+02
+-5.2763796e+01 1.5009740e+02 3.6253746e+02
+-2.6165092e+01 5.2688361e+01 3.7333892e+02
+-2.3868335e+00 7.0253413e+00 3.7680373e+02
+-2.5686206e+00 3.7500172e+00 3.8478001e+02
+-4.3303945e+00 3.1403609e+00 3.9946686e+02
+-4.6314575e+00 4.1660278e+00 4.2255580e+02
+1.1718239e+02 4.3897474e+01 3.2704471e+02
+1.0786959e+02 1.1409494e+02 0.0000000e+00
+-1.2756918e-04 1.3330510e-03 -5.4371758e-04
+-2.4154766e-03 2.2364819e-02 -8.9549028e-03
+-4.1065135e-02 3.1967075e-01 -1.0480445e-01
+-6.9493795e-01 4.4756649e+00 -8.3378115e-01
+-1.7614191e+01 9.3402270e+01 -6.3798463e-01
+-4.0221914e+01 2.8585286e+02 5.3808980e+00
+-6.8592727e+01 5.2505559e+02 1.7498952e+01
+-9.6945122e+01 7.4726284e+02 3.4374243e+01
+-1.1929558e+02 9.0147460e+02 5.4465491e+01
+-1.3118586e+02 9.6254164e+02 7.6781854e+01
+-1.3068866e+02 9.3242972e+02 1.0024101e+02
+-1.1847493e+02 8.2839485e+02 1.2369754e+02
+-9.7639002e+01 6.7332571e+02 1.4608142e+02
+-7.2741572e+01 4.9308519e+02 1.6602139e+02
+-4.8277302e+01 3.1500918e+02 1.8175236e+02
+-2.7772836e+01 1.6499166e+02 1.9159345e+02
+-1.3799092e+01 6.0914909e+01 1.9684647e+02
+-1.8065315e+00 9.8290468e+00 1.9819032e+02
+-2.3331208e+00 5.1331325e+00 2.0364244e+02
+-3.9375586e+00 3.8401864e+00 2.1436983e+02
+-4.9131504e+00 4.3197533e+00 2.3235029e+02
+7.5985859e+01 3.9517502e+01 1.9475113e+02
+8.8108683e+01 9.1301713e+01 0.0000000e+00
+-4.9903860e-05 2.2959809e-03 -9.4352053e-04
+-9.0328635e-04 3.9998783e-02 -1.8186077e-02
+-1.4599532e-02 5.7314581e-01 -2.6465864e-01
+-2.3656923e-01 7.1456958e+00 -2.8142629e+00
+-5.7340847e+00 9.8959961e+01 -3.2167299e+00
+-1.4803546e+01 3.0066215e+02 -1.2977159e+00
+-2.7015733e+01 5.5291516e+02 2.9678090e+00
+-3.9982014e+01 7.8868668e+02 8.8073153e+00
+-5.0623632e+01 9.5366160e+02 1.5189158e+01
+-5.6572778e+01 1.0195151e+03 2.2135086e+01
+-5.6803889e+01 9.8819954e+02 2.9430688e+01
+-5.1392559e+01 8.7806500e+02 3.6796449e+01
+-4.1870370e+01 7.1306500e+02 4.4446411e+01
+-3.0763978e+01 5.2101244e+02 5.2490547e+01
+-2.0172115e+01 3.3136476e+02 6.0609082e+01
+-1.1419932e+01 1.7211666e+02 6.7845969e+01
+-5.6467349e+00 6.4496822e+01 7.2127574e+01
+-1.0781439e+00 1.2206708e+01 7.2170362e+01
+-1.5552045e+00 4.7102789e+00 7.6539691e+01
+-2.6892186e+00 3.0452802e+00 8.4088435e+01
+-3.5558538e+00 3.2178748e+00 9.6477026e+01
+4.8515258e+01 2.7044821e+01 9.6338754e+01
+7.2701218e+01 6.3514130e+01 0.0000000e+00
+-1.1957534e-05 2.9613896e-03 -6.5139520e-04
+-1.7718180e-04 5.4557304e-02 -1.4912177e-02
+-2.0345214e-03 8.2493018e-01 -2.6141627e-01
+-1.8288203e-02 1.0584199e+01 -3.6218365e+00
+-9.9199530e-02 1.0077732e+02 -4.6261358e+00
+-2.1276597e-01 3.0270831e+02 -3.9637066e+00
+-6.1725428e-01 5.5650163e+02 -1.9907245e+00
+-1.4631399e+00 7.9543153e+02 5.5015915e-02
+-2.4726593e+00 9.6409123e+02 1.2200761e+00
+-3.3205792e+00 1.0318262e+03 2.1186350e+00
+-3.8143573e+00 1.0008398e+03 2.8098434e+00
+-3.7828750e+00 8.8987125e+02 3.1565640e+00
+-3.3420665e+00 7.2275035e+02 3.6312778e+00
+-2.8447245e+00 5.2801602e+02 4.5906543e+00
+-2.3707653e+00 3.3572880e+02 6.1609989e+00
+-1.7551436e+00 1.7384151e+02 8.4668898e+00
+-1.0233852e+00 6.3819244e+01 1.1395724e+01
+-4.9805098e-01 1.1950736e+01 1.2787259e+01
+-6.3489844e-01 2.3902681e+00 1.6579417e+01
+-1.1851868e+00 9.9872378e-01 2.1360910e+01
+-1.5425082e+00 1.2005259e+00 2.8399912e+01
+3.1475277e+01 1.1984922e+01 4.0724473e+01
+5.9914938e+01 3.6415436e+01 0.0000000e+00
+-8.4556916e-07 2.4508339e-03 5.2805249e-04
+8.8765519e-06 4.8176843e-02 7.3250746e-03
+5.6604552e-04 7.8214030e-01 5.8196378e-02
+1.3028997e-02 1.0717754e+01 5.0488678e-02
+1.6300184e-01 1.0390657e+02 -1.8006573e+00
+4.8428550e-01 3.0801313e+02 -2.8968431e+00
+4.7109643e-01 5.6370896e+02 -1.4515440e+00
+-2.7616291e-01 8.0746745e+02 2.5279455e-01
+-1.4406835e+00 9.8173352e+02 8.1282733e-01
+-2.5828414e+00 1.0521335e+03 1.3053913e+00
+-3.4289992e+00 1.0214594e+03 1.7040015e+00
+-3.6749794e+00 9.0909129e+02 1.6482709e+00
+-3.4385803e+00 7.3869562e+02 1.7307887e+00
+-3.2088528e+00 5.4005319e+02 2.2927471e+00
+-3.0094708e+00 3.4426075e+02 3.2343964e+00
+-2.4541974e+00 1.7934207e+02 4.2526445e+00
+-1.4881689e+00 6.7581002e+01 4.0658225e+00
+-5.8179774e-01 1.4949468e+01 2.3781851e+00
+-3.0537155e-01 2.6129043e+00 2.8289814e+00
+-3.9970870e-01 5.3379967e-01 4.1882956e+00
+-4.1378280e-01 3.4675425e-01 6.7419411e+00
+1.6190492e+01 2.9700127e+00 1.7060634e+01
+3.2137640e+01 1.2590276e+01 0.0000000e+00
+1.4961582e-06 1.0224926e-03 1.4471810e-03
+4.5815623e-05 2.2549512e-02 2.7569883e-02
+1.0849263e-03 4.2836996e-01 3.9200552e-01
+2.0275351e-02 7.4016305e+00 3.8959675e+00
+2.4514092e-01 1.0907258e+02 9.7709559e-01
+6.8393023e-01 3.1832983e+02 -2.0694420e+00
+5.4951001e-01 5.7738546e+02 -9.6420929e-01
+-7.6055260e-01 8.2917971e+02 6.1339241e-01
+-2.7055715e+00 1.0123232e+03 7.2391759e-01
+-4.5728114e+00 1.0867016e+03 1.1427877e+00
+-5.9346977e+00 1.0562680e+03 1.6345091e+00
+-6.3054535e+00 9.4140190e+02 1.4977973e+00
+-5.8771150e+00 7.6555424e+02 1.5567266e+00
+-5.4491163e+00 5.6062933e+02 2.1115448e+00
+-5.0736364e+00 3.5947260e+02 2.7281540e+00
+-4.1405327e+00 1.8982905e+02 3.1334469e+00
+-2.5718192e+00 7.4313831e+01 2.5031170e+00
+-1.0706383e+00 1.8941790e+01 8.8852233e-01
+-3.6474750e-01 3.7551166e+00 5.3983158e-01
+-1.5385621e-01 7.1717008e-01 7.3475064e-01
+-2.2128114e-02 1.2222310e-01 1.4894608e+00
+4.8460108e+00 4.6308802e-02 8.5461479e+00
+4.4036126e+00 1.2478641e+00 0.0000000e+00
+1.0350663e-06 0.0000000e+00 1.0330504e-03
+3.2825116e-05 0.0000000e+00 2.3899192e-02
+9.6360419e-04 0.0000000e+00 4.6027335e-01
+3.0386167e-02 0.0000000e+00 8.0359529e+00
+1.1785881e+00 1.1599248e+02 3.8511104e+00
+3.5491278e+00 3.3221473e+02 -1.2746791e+00
+5.0886806e+00 5.9480174e+02 -1.9431592e-01
+4.7019064e+00 8.5754176e+02 1.4196462e+00
+3.0663907e+00 1.0537864e+03 1.0165015e+00
+6.7571290e-01 1.1344084e+03 2.0545650e+00
+-1.8908304e+00 1.1053744e+03 3.1102090e+00
+-3.6105474e+00 9.8810474e+02 2.6683717e+00
+-4.6464715e+00 8.0499756e+02 3.0525233e+00
+-5.4624391e+00 5.9178749e+02 4.1136727e+00
+-5.7867717e+00 3.8404545e+02 4.0925618e+00
+-5.3774772e+00 2.0786370e+02 3.5581413e+00
+-3.9318536e+00 8.5677933e+01 2.6405412e+00
+-1.7795242e+00 2.4951639e+01 1.0942467e+00
+-3.9510120e-01 5.9741513e+00 3.3483782e-01
+1.0773666e-01 1.4359430e+00 1.1656730e-01
+4.1958865e-01 2.0715844e-01 3.7572868e-01
+8.6608602e-01 0.0000000e+00 2.9376844e+00
+-2.3434695e+00 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.5530360e+01 5.7969047e+01 1.3066059e+01
+1.1221280e+02 1.9838357e+02 5.6627652e+00
+1.9056023e+02 3.4206033e+02 1.0273544e+01
+2.6970101e+02 4.9440025e+02 1.2953290e+01
+3.4342716e+02 6.4248458e+02 1.3732257e+01
+3.7752823e+02 7.2289400e+02 4.5047073e+01
+3.6528289e+02 7.3823743e+02 6.2479441e+01
+3.1576902e+02 6.9454712e+02 5.0013668e+01
+2.3392674e+02 5.8434119e+02 6.4517302e+01
+1.6493882e+02 4.5077914e+02 8.3429878e+01
+1.2595865e+02 3.2313170e+02 6.1147340e+01
+7.2512630e+01 1.9729117e+02 3.5508968e+01
+1.7723836e+01 9.5350925e+01 2.6352822e+01
+6.6755811e+00 3.9721785e+01 1.4192205e+01
+1.3877680e+01 1.7800190e+01 1.7773189e+00
+1.2954989e+01 9.0502827e+00 -1.4868496e+00
+6.7971883e+00 3.2853115e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.8562198e+01 0.0000000e+00 -1.2524001e+01
+4.2793061e+01 0.0000000e+00 1.6356755e+01
+-2.4861334e+00 0.0000000e+00 6.7721344e+01
+7.7233471e+00 0.0000000e+00 3.8785247e+01
+1.2624222e+02 0.0000000e+00 3.1405208e+01
+2.4164464e+02 0.0000000e+00 1.4819437e+02
+3.0329633e+02 0.0000000e+00 2.0536555e+02
+2.8699612e+02 0.0000000e+00 1.5746282e+02
+1.7267278e+02 0.0000000e+00 2.0105270e+02
+1.3958024e+02 0.0000000e+00 2.6481462e+02
+2.0619318e+02 0.0000000e+00 1.8193013e+02
+1.2013523e+02 0.0000000e+00 8.7360561e+01
+-4.4794704e+01 0.0000000e+00 7.0325870e+01
+-4.1359093e+01 0.0000000e+00 4.7800603e+01
+3.0392787e+01 0.0000000e+00 6.5412781e+00
+4.7333444e+01 0.0000000e+00 -6.3220889e+00
+2.6948901e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.0887019e+01 -8.9678925e+01 -6.7002406e+00
+1.1741489e+02 -3.1332826e+02 3.7570880e+01
+1.3530369e+02 -5.6164626e+02 8.7614921e+01
+3.0220518e+02 -7.8952902e+02 3.7371177e+01
+3.9122481e+02 -9.6365299e+02 4.2361892e+01
+3.3277095e+02 -1.0281559e+03 1.8911956e+02
+4.0668024e+02 -9.8980286e+02 2.6570281e+02
+4.2052660e+02 -8.7613799e+02 2.4481574e+02
+1.7284760e+02 -7.0250877e+02 2.7779524e+02
+6.0661432e+01 -5.1149345e+02 3.1508911e+02
+1.5497413e+02 -3.3945119e+02 2.6465162e+02
+6.6632177e+01 -1.9743291e+02 1.8315847e+02
+-1.0941685e+02 -9.9861812e+01 1.1249980e+02
+-8.7051989e+01 -4.9884877e+01 4.6123219e+01
+6.6489998e-02 -2.8087206e+01 5.5876828e-01
+1.3787993e+01 -1.4846657e+01 -7.3382203e+00
+6.1024482e+00 -4.5101711e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.0209877e+00 -7.0452651e+01 9.2604999e+00
+-9.8619542e-01 -2.0137556e+02 1.0510260e+01
+-2.2092509e+01 -3.5485911e+02 1.6400305e+01
+-1.5175918e+01 -4.9952829e+02 1.1279334e+01
+-1.9662492e+01 -6.0013994e+02 1.0846892e+01
+-4.6501272e+01 -6.3370268e+02 4.0441572e+01
+-3.4319327e+01 -6.0644814e+02 5.6736921e+01
+-1.8659745e+01 -5.3379746e+02 4.9113246e+01
+-4.8930145e+01 -4.2782023e+02 5.7444988e+01
+-5.6282251e+01 -3.0366389e+02 6.9929373e+01
+-2.3644701e+01 -1.8230918e+02 6.0902229e+01
+-2.6304864e+01 -8.5298103e+01 4.4074998e+01
+-4.6748241e+01 -2.7541672e+01 2.9918518e+01
+-3.0739687e+01 -4.0326286e+00 1.5153453e+01
+-4.7973961e+00 -2.1103182e-01 4.2349463e+00
+3.9901303e+00 8.4549918e-02 -2.5857006e-01
+2.6204240e+00 4.0704853e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.2220320e-06 -6.2358248e-04 6.2883965e-04
+-1.2271467e-04 -1.3702314e-02 1.4486690e-02
+-3.0646802e-03 -2.5932508e-01 2.7783992e-01
+-6.8469990e-02 -4.4645171e+00 4.8412122e+00
+-1.2769391e+00 -6.5519162e+01 2.3628285e+00
+-4.0751290e+00 -1.9062953e+02 -7.5852375e-01
+-7.6387340e+00 -3.4247527e+02 -4.1522891e-01
+-1.0286496e+01 -4.8515586e+02 2.0079047e-01
+-1.1679401e+01 -5.8484867e+02 -3.4800044e-01
+-1.1937233e+01 -6.2123605e+02 -2.0368462e-01
+-1.0702754e+01 -5.9787151e+02 3.3230905e-02
+-8.7087081e+00 -5.2816207e+02 -4.7407011e-01
+-6.8224581e+00 -4.2530874e+02 -8.0596539e-01
+-4.6169939e+00 -3.0471255e+02 -6.2853175e-01
+-2.3490924e+00 -1.8605239e+02 -3.6122533e-01
+-1.2004518e+00 -8.9609256e+01 -2.2197969e-01
+-6.9189037e-01 -2.9466332e+01 1.4299414e-01
+-5.7840529e-01 -5.1280452e+00 -1.6966526e-01
+-5.6129681e-02 -2.6623276e-01 -3.3424950e-02
+9.6557636e-02 9.5923335e-02 6.6810205e-03
+1.0854613e-01 1.2301263e-01 4.2472729e-01
+-2.6595143e+00 -5.4886940e-01 4.6489842e+00
+-1.3743797e+01 -2.3263873e+00 0.0000000e+00
+-8.1388367e-06 -1.4957035e-03 8.8175600e-04
+-2.0245646e-04 -2.9299231e-02 1.6726947e-02
+-4.1792126e-03 -4.7403261e-01 2.3669862e-01
+-7.1149680e-02 -6.4778128e+00 2.3414193e+00
+-8.2035591e-01 -6.2702971e+01 5.9071910e-01
+-2.3921429e+00 -1.8563340e+02 -1.3293314e+00
+-4.2862771e+00 -3.3808684e+02 -8.8197928e-01
+-5.8943762e+00 -4.8082863e+02 -7.5390638e-02
+-6.6163705e+00 -5.8083740e+02 -1.7584093e-01
+-6.4324489e+00 -6.1923707e+02 -3.1524148e-01
+-5.7911451e+00 -5.9801331e+02 -3.1693501e-01
+-4.7774361e+00 -5.2946222e+02 -5.4482933e-01
+-3.3801343e+00 -4.2750724e+02 -8.4319688e-01
+-2.0130961e+00 -3.0819192e+02 -8.0116009e-01
+-1.0123071e+00 -1.9058929e+02 -3.2036036e-01
+-3.4535249e-01 -9.3974385e+01 2.4933380e-01
+2.0361381e-02 -3.2142473e+01 3.2710329e-01
+7.3381137e-02 -5.9356098e+00 -1.6029615e-02
+2.7962268e-02 -6.6329572e-01 -1.3847760e-02
+1.0036382e-02 1.3450459e-02 -9.5405442e-02
+-6.1615404e-02 2.7912674e-02 4.2244409e-02
+-5.0405044e+00 -6.0191561e+00 1.5451000e+01
+-1.9582330e+01 -2.1590216e+01 0.0000000e+00
+-1.0049061e-05 -1.8084501e-03 3.2195006e-04
+-2.0825785e-04 -3.3198116e-02 4.4379691e-03
+-3.6396199e-03 -5.0018439e-01 3.4795416e-02
+-5.2930771e-02 -6.4000908e+00 2.3033126e-02
+-5.1325720e-01 -6.0916593e+01 -1.0870851e+00
+-1.5136316e+00 -1.8291997e+02 -1.8025975e+00
+-2.7275163e+00 -3.3562504e+02 -1.0657788e+00
+-3.7674779e+00 -4.7828305e+02 -1.2004314e-01
+-4.2478587e+00 -5.7826671e+02 1.1643378e-01
+-4.1532153e+00 -6.1771928e+02 1.6902435e-01
+-3.7661867e+00 -5.9773111e+02 2.2401514e-01
+-3.1304133e+00 -5.2988066e+02 9.7889762e-02
+-2.2405075e+00 -4.2855041e+02 -5.7019858e-02
+-1.3715098e+00 -3.1019491e+02 1.0862312e-01
+-7.2888069e-01 -1.9350407e+02 7.4281174e-01
+-2.7731554e-01 -9.6939373e+01 1.5315583e+00
+-1.4518004e-02 -3.3704549e+01 1.6199967e+00
+3.7091571e-02 -5.7639736e+00 8.3036561e-01
+1.7073703e-02 -8.4324398e-01 6.8786951e-01
+1.7378642e-02 8.5178398e-03 2.7542115e-01
+-1.0500719e-01 7.8277339e-02 -8.1838340e-02
+-6.1530494e+00 -1.6489141e+01 3.2824274e+01
+-5.0341080e+00 -5.7535269e+01 0.0000000e+00
+-1.9688472e-05 -1.4036120e-03 -3.9710716e-04
+-3.3960498e-04 -2.4360884e-02 -9.0719159e-03
+-4.9149688e-03 -3.4766606e-01 -1.5870980e-01
+-6.1970048e-02 -4.3177625e+00 -2.1973563e+00
+-5.9206391e-01 -5.9829276e+01 -2.7918095e+00
+-1.7273319e+00 -1.8177553e+02 -2.4216847e+00
+-3.1585071e+00 -3.3420156e+02 -1.3039136e+00
+-4.4821066e+00 -4.7646607e+02 -1.0192042e-01
+-5.3088024e+00 -5.7608963e+02 5.5714404e-01
+-5.5267883e+00 -6.1592107e+02 9.6514152e-01
+-5.2691899e+00 -5.9658994e+02 1.2787992e+00
+-4.5894696e+00 -5.2922837e+02 1.4331040e+00
+-3.5635004e+00 -4.2848855e+02 1.5926824e+00
+-2.4566892e+00 -3.1105142e+02 2.0611592e+00
+-1.4880832e+00 -1.9535480e+02 3.0292028e+00
+-7.1989771e-01 -9.9381961e+01 4.4365452e+00
+-2.1411190e-01 -3.6028975e+01 5.9517137e+00
+-9.9234052e-03 -6.4190457e+00 6.1186582e+00
+8.0513702e-03 -1.8899978e+00 6.5224623e+00
+2.3130225e-02 -4.2996302e-01 5.7526389e+00
+-2.7935131e-01 4.5600426e-02 4.5221360e+00
+-1.3779296e+01 -2.9263493e+01 6.2583054e+01
+-1.3367081e+00 -9.5091177e+01 0.0000000e+00
+-6.1755322e-05 -8.1674854e-04 -5.7501195e-04
+-1.1400071e-03 -1.3650853e-02 -1.1048322e-02
+-1.8808289e-02 -1.9430509e-01 -1.6020054e-01
+-3.0932537e-01 -2.7088977e+00 -1.6963092e+00
+-8.9735565e+00 -5.6392590e+01 -1.8935229e+00
+-2.5245957e+01 -1.7253258e+02 -6.9406976e-01
+-4.6377254e+01 -3.1747206e+02 1.9379485e+00
+-6.7139796e+01 -4.5296103e+02 5.5906929e+00
+-8.2677337e+01 -5.4802610e+02 9.5808731e+00
+-9.0078698e+01 -5.8666708e+02 1.3832803e+01
+-8.8723696e+01 -5.6910597e+02 1.8268636e+01
+-7.9496097e+01 -5.0558082e+02 2.2724620e+01
+-6.4540553e+01 -4.1033866e+02 2.7244912e+01
+-4.6971903e+01 -2.9953214e+02 3.1933557e+01
+-2.9843116e+01 -1.9036729e+02 3.6617051e+01
+-1.5539222e+01 -9.8997432e+01 4.0351813e+01
+-5.7938812e+00 -3.6096658e+01 4.0566642e+01
+-2.7566029e-01 -5.1744932e+00 3.8519606e+01
+-8.8365843e-02 -1.8879228e+00 3.7050693e+01
+-9.8416650e-02 -3.7055856e-01 3.4400490e+01
+-7.2427121e-01 2.0601908e-01 3.1409902e+01
+-2.4146506e+01 -4.1625699e+01 1.1643403e+02
+6.8755458e+00 -1.3846908e+02 0.0000000e+00
+-1.5189875e-04 -4.6248250e-04 -3.2993647e-04
+-2.9130139e-03 -8.0804498e-03 -5.4028027e-03
+-5.0295738e-02 -1.2788356e-01 -6.2593720e-02
+-8.6599355e-01 -2.1160908e+00 -4.8434498e-01
+-2.4439205e+01 -4.9800162e+01 -2.5175852e-01
+-5.9957290e+01 -1.5661419e+02 3.5652292e+00
+-1.0462367e+02 -2.8902239e+02 1.1146503e+01
+-1.4815445e+02 -4.1229143e+02 2.1686223e+01
+-1.8121619e+02 -4.9860520e+02 3.4185926e+01
+-1.9780264e+02 -5.3382182e+02 4.7957452e+01
+-1.9604947e+02 -5.1810116e+02 6.2313458e+01
+-1.7763795e+02 -4.6062793e+02 7.6523596e+01
+-1.4693201e+02 -3.7442153e+02 8.9899471e+01
+-1.0988515e+02 -2.7412789e+02 1.0163880e+02
+-7.2645908e+01 -1.7500882e+02 1.1064893e+02
+-4.0525818e+01 -9.1037890e+01 1.1544237e+02
+-1.7494035e+01 -3.1721154e+01 1.1476181e+02
+-8.8692252e-01 -3.5167259e+00 1.1218443e+02
+-3.9523174e-01 -9.8012589e-01 1.0933875e+02
+-5.4095856e-01 2.0875282e-01 1.0536282e+02
+-1.6177072e+00 5.3617802e-01 1.0173348e+02
+-3.0458901e+01 -4.7623575e+01 2.1417536e+02
+3.9275925e+01 -1.7504887e+02 0.0000000e+00
+-2.8336395e-04 -2.8676228e-04 -1.3335864e-04
+-5.5010143e-03 -5.4029331e-03 -1.9349806e-03
+-9.6151891e-02 -9.4081399e-02 -1.9285732e-02
+-1.6723517e+00 -1.6911444e+00 -1.3573106e-01
+-4.6742828e+01 -4.1051207e+01 2.7963670e+00
+-1.0805939e+02 -1.3240596e+02 1.0660396e+01
+-1.8375482e+02 -2.4546105e+02 2.4848029e+01
+-2.5707894e+02 -3.5022434e+02 4.4705087e+01
+-3.1294795e+02 -4.2331924e+02 6.8781773e+01
+-3.4146391e+02 -4.5308314e+02 9.5534851e+01
+-3.3928466e+02 -4.3972193e+02 1.2333434e+02
+-3.0903413e+02 -3.9099870e+02 1.5050153e+02
+-2.5779594e+02 -3.1796464e+02 1.7537382e+02
+-1.9520749e+02 -2.3296657e+02 1.9626195e+02
+-1.3143916e+02 -1.4871131e+02 2.1153406e+02
+-7.5542792e+01 -7.6744995e+01 2.2002016e+02
+-3.4458646e+01 -2.5529776e+01 2.2212234e+02
+-1.8087091e+00 -2.2242779e+00 2.2025176e+02
+-9.3881400e-01 -2.6106740e-01 2.1790290e+02
+-1.3656798e+00 5.8578845e-01 2.1456116e+02
+-3.0491715e+00 6.8471156e-01 2.1283175e+02
+-3.2074058e+01 -4.5398331e+01 3.5987855e+02
+8.7970506e+01 -1.8262995e+02 0.0000000e+00
+-4.3247082e-04 -1.8557065e-04 -3.9932188e-05
+-8.4300073e-03 -3.6769511e-03 -4.9668313e-04
+-1.4792759e-01 -6.6986721e-02 -3.7168439e-03
+-2.5813201e+00 -1.2363196e+00 -1.0600265e-02
+-7.1841821e+01 -3.0579017e+01 6.0997720e+00
+-1.6106099e+02 -1.0054654e+02 1.8754694e+01
+-2.7000123e+02 -1.8725127e+02 4.0132763e+01
+-3.7513342e+02 -2.6731833e+02 6.9908848e+01
+-4.5532514e+02 -3.2298848e+02 1.0628025e+02
+-4.9660065e+02 -3.4556250e+02 1.4686952e+02
+-4.9407990e+02 -3.3527263e+02 1.8905546e+02
+-4.5132737e+02 -2.9805189e+02 2.3015276e+02
+-3.7823756e+02 -2.4233713e+02 2.6753158e+02
+-2.8834215e+02 -1.7750195e+02 2.9870234e+02
+-1.9607366e+02 -1.1311781e+02 3.2162774e+02
+-1.1445519e+02 -5.7884278e+01 3.3548225e+02
+-5.3657905e+01 -1.8604649e+01 3.4175177e+02
+-2.8888985e+00 -1.3643958e+00 3.4097076e+02
+-1.6363672e+00 4.6622728e-02 3.3988636e+02
+-2.4461461e+00 6.4089092e-01 3.3817968e+02
+-4.8229828e+00 6.7090298e-01 3.3985326e+02
+-2.9025352e+01 -3.7419271e+01 5.2753105e+02
+1.5645589e+02 -1.6538207e+02 0.0000000e+00
+-5.6892583e-04 -1.0744835e-04 -1.0154443e-06
+-1.1108011e-02 -2.1764550e-03 9.5315265e-05
+-1.9524630e-01 -4.0274866e-02 3.3932125e-03
+-3.4124278e+00 -7.4802720e-01 7.7422208e-02
+-9.4787889e+01 -1.8845491e+01 8.9545106e+00
+-2.0893591e+02 -6.2776204e+01 2.5997808e+01
+-3.4740712e+02 -1.1732459e+02 5.3773030e+01
+-4.8073646e+02 -1.6758943e+02 9.2237050e+01
+-5.8248501e+02 -2.0244698e+02 1.3934212e+02
+-6.3509931e+02 -2.1652506e+02 1.9204000e+02
+-6.3234651e+02 -2.1001041e+02 2.4686995e+02
+-5.7859003e+02 -1.8663641e+02 3.0027821e+02
+-4.8616985e+02 -1.5169846e+02 3.4880561e+02
+-3.7204371e+02 -1.1105537e+02 3.8928113e+02
+-2.5440480e+02 -7.0659561e+01 4.1931622e+02
+-1.4979545e+02 -3.5935192e+01 4.3829543e+02
+-7.1295751e+01 -1.1306421e+01 4.4837820e+02
+-3.9164828e+00 -7.5685016e-01 4.4851804e+02
+-2.3469706e+00 9.6548002e-02 4.4860164e+02
+-3.5565521e+00 4.6591850e-01 4.4853843e+02
+-6.5803549e+00 5.0553217e-01 4.5378925e+02
+-2.1679250e+01 -2.4278916e+01 6.8318951e+02
+2.4842400e+02 -1.2125136e+02 0.0000000e+00
+-6.6425535e-04 -3.5406051e-05 1.5383098e-05
+-1.2978656e-02 -7.2234105e-04 3.7044621e-04
+-2.2830793e-01 -1.3423050e-02 7.4862216e-03
+-3.9935494e+00 -2.4953054e-01 1.4475544e-01
+-1.1083443e+02 -6.3635430e+00 1.0870294e+01
+-2.4219285e+02 -2.1337836e+01 3.0943837e+01
+-4.0098406e+02 -3.9955188e+01 6.3092690e+01
+-5.5369298e+02 -5.7093511e+01 1.0744613e+02
+-6.7025675e+02 -6.8962118e+01 1.6181138e+02
+-7.3067723e+02 -7.3744303e+01 2.2270904e+02
+-7.2779415e+02 -7.1511682e+01 2.8612037e+02
+-6.6650666e+02 -6.3539631e+01 3.4790495e+02
+-5.6081803e+02 -5.1633865e+01 4.0404104e+02
+-4.3002973e+02 -3.7787647e+01 4.5089396e+02
+-2.9491417e+02 -2.4020995e+01 4.8583066e+02
+-1.7443688e+02 -1.2178283e+01 5.0833633e+02
+-8.3701860e+01 -3.7943424e+00 5.2094655e+02
+-4.6709466e+00 -2.4649092e-01 5.2163705e+02
+-2.9062679e+00 3.8574630e-02 5.2244400e+02
+-4.4350315e+00 1.6413675e-01 5.2346052e+02
+-7.9044997e+00 1.8722412e-01 5.3134481e+02
+-1.1787184e+01 -8.1714566e+00 7.9697390e+02
+3.4382097e+02 -4.5066063e+01 0.0000000e+00
+-6.9842859e-04 3.5406051e-05 2.0171269e-05
+-1.3649272e-02 7.2234105e-04 4.5772626e-04
+-2.4016311e-01 1.3423050e-02 8.9377289e-03
+-4.2020145e+00 2.4953054e-01 1.7079440e-01
+-1.1659136e+02 6.3635430e+00 1.1543180e+01
+-2.5408869e+02 2.1337836e+01 3.2693149e+01
+-4.2011704e+02 3.9955188e+01 6.6390780e+01
+-5.7972447e+02 5.7093511e+01 1.1282192e+02
+-7.0156197e+02 6.8962118e+01 1.6974561e+02
+-7.6476347e+02 7.3744303e+01 2.3353391e+02
+-7.6183885e+02 7.1511682e+01 2.9997268e+02
+-6.9787585e+02 6.3539631e+01 3.6471437e+02
+-5.8746705e+02 5.1633865e+01 4.2353811e+02
+-4.5074656e+02 3.7787647e+01 4.7264504e+02
+-3.0940441e+02 2.4020995e+01 5.0931485e+02
+-1.8327042e+02 1.2178283e+01 5.3306122e+02
+-8.8174277e+01 3.7943424e+00 5.4654014e+02
+-4.9523969e+00 2.4649092e-01 5.4740298e+02
+-3.1254825e+00 -3.8574766e-02 5.4843670e+02
+-4.7803056e+00 -1.6414523e-01 5.4979955e+02
+-8.4005709e+00 -1.8747901e-01 5.5863122e+02
+-6.4465467e+00 8.1653815e+00 8.3963883e+02
+3.8861838e+02 4.5089542e+01 0.0000000e+00
+-6.6425535e-04 1.0744835e-04 1.5383098e-05
+-1.2978656e-02 2.1764550e-03 3.7044621e-04
+-2.2830793e-01 4.0274866e-02 7.4862216e-03
+-3.9935494e+00 7.4802720e-01 1.4475544e-01
+-1.1083443e+02 1.8845491e+01 1.0870294e+01
+-2.4219285e+02 6.2776204e+01 3.0943837e+01
+-4.0098406e+02 1.1732459e+02 6.3092690e+01
+-5.5369298e+02 1.6758943e+02 1.0744613e+02
+-6.7025675e+02 2.0244698e+02 1.6181138e+02
+-7.3067723e+02 2.1652506e+02 2.2270904e+02
+-7.2779415e+02 2.1001041e+02 2.8612037e+02
+-6.6650666e+02 1.8663641e+02 3.4790495e+02
+-5.6081803e+02 1.5169846e+02 4.0404104e+02
+-4.3002973e+02 1.1105537e+02 4.5089396e+02
+-2.9491417e+02 7.0659561e+01 4.8583066e+02
+-1.7443688e+02 3.5935192e+01 5.0833633e+02
+-8.3701860e+01 1.1306421e+01 5.2094655e+02
+-4.6709466e+00 7.5685016e-01 5.2163705e+02
+-2.9062680e+00 -9.6548145e-02 5.2244400e+02
+-4.4350322e+00 -4.6592318e-01 5.2346051e+02
+-7.9046031e+00 -5.0584234e-01 5.3134502e+02
+-1.1795546e+01 2.4259127e+01 7.9695756e+02
+3.4387036e+02 1.2124402e+02 0.0000000e+00
+-5.6892583e-04 1.8557065e-04 -1.0154443e-06
+-1.1108011e-02 3.6769511e-03 9.5315265e-05
+-1.9524630e-01 6.6986721e-02 3.3932125e-03
+-3.4124278e+00 1.2363196e+00 7.7422208e-02
+-9.4787889e+01 3.0579017e+01 8.9545106e+00
+-2.0893591e+02 1.0054654e+02 2.5997808e+01
+-3.4740712e+02 1.8725127e+02 5.3773030e+01
+-4.8073646e+02 2.6731833e+02 9.2237050e+01
+-5.8248501e+02 3.2298848e+02 1.3934212e+02
+-6.3509931e+02 3.4556250e+02 1.9204000e+02
+-6.3234651e+02 3.3527263e+02 2.4686995e+02
+-5.7859003e+02 2.9805189e+02 3.0027821e+02
+-4.8616985e+02 2.4233713e+02 3.4880561e+02
+-3.7204371e+02 1.7750195e+02 3.8928113e+02
+-2.5440480e+02 1.1311781e+02 4.1931622e+02
+-1.4979545e+02 5.7884278e+01 4.3829543e+02
+-7.1295751e+01 1.8604649e+01 4.4837820e+02
+-3.9164828e+00 1.3643958e+00 4.4851804e+02
+-2.3469705e+00 -4.6622100e-02 4.4860164e+02
+-3.5565419e+00 -6.4087212e-01 4.4853839e+02
+-6.5796950e+00 -6.7056609e-01 4.5378754e+02
+-2.1673911e+01 3.7425718e+01 6.8319351e+02
+2.4841934e+02 1.6534580e+02 0.0000000e+00
+-4.3247082e-04 2.8676228e-04 -3.9932188e-05
+-8.4300073e-03 5.4029331e-03 -4.9668313e-04
+-1.4792759e-01 9.4081399e-02 -3.7168439e-03
+-2.5813201e+00 1.6911444e+00 -1.0600265e-02
+-7.1841821e+01 4.1051207e+01 6.0997720e+00
+-1.6106099e+02 1.3240596e+02 1.8754694e+01
+-2.7000123e+02 2.4546105e+02 4.0132763e+01
+-3.7513342e+02 3.5022434e+02 6.9908848e+01
+-4.5532514e+02 4.2331924e+02 1.0628025e+02
+-4.9660065e+02 4.5308314e+02 1.4686952e+02
+-4.9407990e+02 4.3972193e+02 1.8905546e+02
+-4.5132737e+02 3.9099870e+02 2.3015276e+02
+-3.7823756e+02 3.1796464e+02 2.6753158e+02
+-2.8834215e+02 2.3296657e+02 2.9870234e+02
+-1.9607366e+02 1.4871131e+02 3.2162774e+02
+-1.1445519e+02 7.6744995e+01 3.3548225e+02
+-5.3657905e+01 2.5529776e+01 3.4175177e+02
+-2.8888985e+00 2.2242779e+00 3.4097076e+02
+-1.6363676e+00 2.6106802e-01 3.3988636e+02
+-2.4461634e+00 -5.8576451e-01 3.3817965e+02
+-4.8235631e+00 -6.8369304e-01 3.3985249e+02
+-2.9041415e+01 4.5427040e+01 5.2752167e+02
+1.5649934e+02 1.8265424e+02 0.0000000e+00
+-2.8336395e-04 4.6248250e-04 -1.3335864e-04
+-5.5010143e-03 8.0804498e-03 -1.9349806e-03
+-9.6151891e-02 1.2788356e-01 -1.9285732e-02
+-1.6723517e+00 2.1160908e+00 -1.3573107e-01
+-4.6742828e+01 4.9800162e+01 2.7963670e+00
+-1.0805939e+02 1.5661419e+02 1.0660396e+01
+-1.8375482e+02 2.8902239e+02 2.4848029e+01
+-2.5707894e+02 4.1229143e+02 4.4705087e+01
+-3.1294795e+02 4.9860520e+02 6.8781773e+01
+-3.4146391e+02 5.3382182e+02 9.5534851e+01
+-3.3928466e+02 5.1810116e+02 1.2333434e+02
+-3.0903413e+02 4.6062793e+02 1.5050153e+02
+-2.5779594e+02 3.7442153e+02 1.7537382e+02
+-1.9520749e+02 2.7412789e+02 1.9626195e+02
+-1.3143916e+02 1.7500882e+02 2.1153406e+02
+-7.5542792e+01 9.1037890e+01 2.2002016e+02
+-3.4458646e+01 3.1721154e+01 2.2212234e+02
+-1.8087091e+00 3.5167258e+00 2.2025176e+02
+-9.3881441e-01 9.8012515e-01 2.1790290e+02
+-1.3656985e+00 -2.0876872e-01 2.1456121e+02
+-3.0495989e+00 -5.3663010e-01 2.1283198e+02
+-3.2064948e+01 4.7635392e+01 3.5993280e+02
+8.8018846e+01 1.7508709e+02 0.0000000e+00
+-1.5189875e-04 8.1674854e-04 -3.2993647e-04
+-2.9130139e-03 1.3650853e-02 -5.4028027e-03
+-5.0295738e-02 1.9430509e-01 -6.2593720e-02
+-8.6599355e-01 2.7088977e+00 -4.8434498e-01
+-2.4439205e+01 5.6392590e+01 -2.5175853e-01
+-5.9957290e+01 1.7253258e+02 3.5652292e+00
+-1.0462367e+02 3.1747206e+02 1.1146503e+01
+-1.4815445e+02 4.5296103e+02 2.1686223e+01
+-1.8121619e+02 5.4802610e+02 3.4185926e+01
+-1.9780264e+02 5.8666708e+02 4.7957452e+01
+-1.9604947e+02 5.6910597e+02 6.2313458e+01
+-1.7763795e+02 5.0558082e+02 7.6523596e+01
+-1.4693201e+02 4.1033866e+02 8.9899471e+01
+-1.0988515e+02 2.9953214e+02 1.0163880e+02
+-7.2645908e+01 1.9036729e+02 1.1064893e+02
+-4.0525818e+01 9.8997432e+01 1.1544237e+02
+-1.7494035e+01 3.6096658e+01 1.1476181e+02
+-8.8692253e-01 5.1744932e+00 1.1218443e+02
+-3.9523142e-01 1.8879231e+00 1.0933875e+02
+-5.4095450e-01 3.7055622e-01 1.0536281e+02
+-1.6174404e+00 -2.0538780e-01 1.0173992e+02
+-3.0470114e+01 4.1618224e+01 2.1421559e+02
+3.9295558e+01 1.3849466e+02 0.0000000e+00
+-6.1755323e-05 1.4036120e-03 -5.7501195e-04
+-1.1400071e-03 2.4360884e-02 -1.1048322e-02
+-1.8808289e-02 3.4766606e-01 -1.6020054e-01
+-3.0932537e-01 4.3177625e+00 -1.6963092e+00
+-8.9735565e+00 5.9829276e+01 -1.8935229e+00
+-2.5245957e+01 1.8177553e+02 -6.9406978e-01
+-4.6377254e+01 3.3420156e+02 1.9379485e+00
+-6.7139796e+01 4.7646607e+02 5.5906929e+00
+-8.2677337e+01 5.7608963e+02 9.5808731e+00
+-9.0078698e+01 6.1592107e+02 1.3832803e+01
+-8.8723696e+01 5.9658994e+02 1.8268636e+01
+-7.9496097e+01 5.2922837e+02 2.2724620e+01
+-6.4540553e+01 4.2848855e+02 2.7244912e+01
+-4.6971903e+01 3.1105142e+02 3.1933557e+01
+-2.9843116e+01 1.9535480e+02 3.6617051e+01
+-1.5539222e+01 9.9381961e+01 4.0351813e+01
+-5.7938812e+00 3.6028975e+01 4.0566642e+01
+-2.7566033e-01 6.4190457e+00 3.8519606e+01
+-8.8365712e-02 1.8899971e+00 3.7050693e+01
+-9.8404489e-02 4.2996033e-01 3.4400549e+01
+-7.2410522e-01 -4.6133462e-02 3.1409707e+01
+-2.4136470e+01 2.9249480e+01 1.1640924e+02
+6.9087362e+00 9.5116355e+01 0.0000000e+00
+-1.9688474e-05 1.8084501e-03 -3.9710716e-04
+-3.3960503e-04 3.3198116e-02 -9.0719160e-03
+-4.9149694e-03 5.0018439e-01 -1.5870980e-01
+-6.1970051e-02 6.4000908e+00 -2.1973563e+00
+-5.9206393e-01 6.0916593e+01 -2.7918095e+00
+-1.7273320e+00 1.8291997e+02 -2.4216848e+00
+-3.1585071e+00 3.3562504e+02 -1.3039136e+00
+-4.4821066e+00 4.7828305e+02 -1.0192038e-01
+-5.3088024e+00 5.7826671e+02 5.5714410e-01
+-5.5267883e+00 6.1771928e+02 9.6514154e-01
+-5.2691899e+00 5.9773111e+02 1.2787992e+00
+-4.5894696e+00 5.2988066e+02 1.4331040e+00
+-3.5635003e+00 4.2855041e+02 1.5926824e+00
+-2.4566891e+00 3.1019491e+02 2.0611594e+00
+-1.4880828e+00 1.9350407e+02 3.0292027e+00
+-7.1989723e-01 9.6939372e+01 4.4365454e+00
+-2.1411561e-01 3.3704540e+01 5.9517145e+00
+-9.9234815e-03 5.7639750e+00 6.1186577e+00
+8.0524895e-03 8.4324476e-01 6.5224664e+00
+2.3132670e-02 -8.4964220e-03 5.7526014e+00
+-2.7936192e-01 -7.8494014e-02 4.5220119e+00
+-1.3790282e+01 1.6472746e+01 6.2563208e+01
+-1.3430821e+00 5.7460603e+01 0.0000000e+00
+-1.0049080e-05 1.4957035e-03 3.2195007e-04
+-2.0825824e-04 2.9299232e-02 4.4379692e-03
+-3.6396258e-03 4.7403262e-01 3.4795418e-02
+-5.2930843e-02 6.4778129e+00 2.3033060e-02
+-5.1325765e-01 6.2702973e+01 -1.0870863e+00
+-1.5136324e+00 1.8563341e+02 -1.8025996e+00
+-2.7275169e+00 3.3808683e+02 -1.0657791e+00
+-3.7674784e+00 4.8082862e+02 -1.2004239e-01
+-4.2478598e+00 5.8083740e+02 1.1643516e-01
+-4.1532161e+00 6.1923706e+02 1.6902468e-01
+-3.7661872e+00 5.9801331e+02 2.2401559e-01
+-3.1304133e+00 5.2946222e+02 9.7888680e-02
+-2.2405041e+00 4.2750724e+02 -5.7021752e-02
+-1.3715025e+00 3.0819193e+02 1.0863417e-01
+-7.2886719e-01 1.9058930e+02 7.4280310e-01
+-2.7741092e-01 9.3973993e+01 1.5315318e+00
+-1.4599147e-02 3.2142447e+01 1.6200541e+00
+3.7030669e-02 5.9348560e+00 8.3033134e-01
+1.7077336e-02 6.6327388e-01 6.8785318e-01
+1.7233578e-02 -1.3459696e-02 2.7491721e-01
+-1.0545006e-01 -3.1703236e-02 -8.0035654e-02
+-6.2004624e+00 5.9518913e+00 3.2884809e+01
+-5.0569074e+00 2.1440744e+01 0.0000000e+00
+-8.1389259e-06 6.2358253e-04 8.8175611e-04
+-2.0245900e-04 1.3702315e-02 1.6726948e-02
+-4.1792691e-03 2.5932512e-01 2.3669865e-01
+-7.1150764e-02 4.4645188e+00 2.3414190e+00
+-8.2036784e-01 6.5519213e+01 5.9068504e-01
+-2.3921723e+00 1.9062959e+02 -1.3293932e+00
+-4.2862927e+00 3.4247523e+02 -8.8198346e-01
+-5.8943877e+00 4.8515586e+02 -7.5369459e-02
+-6.6163866e+00 5.8484867e+02 -1.7583167e-01
+-6.4324421e+00 6.2123608e+02 -3.1521233e-01
+-5.7911612e+00 5.9787149e+02 -3.1692184e-01
+-4.7774484e+00 5.2816216e+02 -5.4487473e-01
+-3.3800064e+00 4.2530844e+02 -8.4328568e-01
+-2.0128852e+00 3.0471341e+02 -8.0098238e-01
+-1.0129758e+00 1.8604836e+02 -3.2078063e-01
+-3.4535194e-01 8.9606136e+01 2.5188871e-01
+1.8071363e-02 2.9480208e+01 3.2415073e-01
+7.6305119e-02 5.1280153e+00 -1.5951164e-02
+2.7663102e-02 2.7016680e-01 -1.5268251e-02
+8.6550047e-03 -9.2605550e-02 -9.8644151e-02
+-5.9439319e-02 -1.2529655e-01 5.7101522e-02
+-5.0828369e+00 3.8906009e-01 1.5549137e+01
+-1.9595398e+01 2.1972773e+00 0.0000000e+00
+-4.2221900e-06 0.0000000e+00 6.2883983e-04
+-1.2272142e-04 0.0000000e+00 1.4486700e-02
+-3.0649417e-03 0.0000000e+00 2.7784034e-01
+-6.8479977e-02 0.0000000e+00 4.8412271e+00
+-1.2773180e+00 7.0454374e+01 2.3619766e+00
+-4.0760774e+00 2.0137703e+02 -7.6032502e-01
+-7.6391774e+00 3.5485819e+02 -4.1527897e-01
+-1.0286759e+01 4.9952793e+02 2.0111433e-01
+-1.1679697e+01 6.0014362e+02 -3.4762545e-01
+-1.1936982e+01 6.3370405e+02 -2.0307979e-01
+-1.0703315e+01 6.0644732e+02 3.3404203e-02
+-8.7098160e+00 5.3377577e+02 -4.8759187e-01
+-6.8276628e+00 4.2781338e+02 -8.1138193e-01
+-4.6003099e+00 3.0363244e+02 -5.9164051e-01
+-2.3094258e+00 1.8227769e+02 -2.9827642e-01
+-1.1697844e+00 8.5163362e+01 -6.5145010e-02
+-8.5733281e-01 2.6367283e+01 -2.6818286e-02
+-4.3185118e-01 3.8603319e+00 -1.0647961e-01
+-6.8738124e-02 -9.0400701e-02 -7.2243551e-02
+4.0917290e-02 -5.2093896e-02 -4.1257084e-02
+1.0961025e-01 -2.7358440e-01 4.1735857e-01
+-2.5225618e+00 0.0000000e+00 4.7961894e+00
+-1.3814736e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.0195504e+00 8.9697091e+01 9.2391074e+00
+-1.0201949e+00 3.1338314e+02 1.0465744e+01
+-2.2105730e+01 5.6159517e+02 1.6398746e+01
+-1.5200146e+01 7.8949370e+02 1.1287609e+01
+-1.9688080e+01 9.6362910e+02 1.0843381e+01
+-4.6489786e+01 1.0280932e+03 4.0471320e+01
+-3.4323125e+01 9.8975833e+02 5.6700156e+01
+-1.8762832e+01 8.7641699e+02 4.8591736e+01
+-4.9193712e+01 7.0252860e+02 5.7222770e+01
+-5.5707738e+01 5.1040272e+02 7.1099786e+01
+-2.2200573e+01 3.3876337e+02 6.2811226e+01
+-2.3819760e+01 1.9881831e+02 4.5489175e+01
+-4.4372122e+01 1.0429323e+02 2.9543235e+01
+-2.9152478e+01 5.5504126e+01 1.3727969e+01
+-5.1189056e+00 3.0325648e+01 1.9797586e+00
+1.6052485e+00 1.4446261e+01 -1.1691201e+00
+1.3015737e+00 4.0376889e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.0829647e+01 0.0000000e+00 -6.6210892e+00
+1.1739558e+02 0.0000000e+00 3.7632562e+01
+1.3531212e+02 0.0000000e+00 8.7616489e+01
+3.0222007e+02 0.0000000e+00 3.7366477e+01
+3.9124426e+02 0.0000000e+00 4.2363728e+01
+3.3275655e+02 0.0000000e+00 1.8912049e+02
+4.0671032e+02 0.0000000e+00 2.6566802e+02
+4.2052804e+02 0.0000000e+00 2.4480019e+02
+1.7293331e+02 0.0000000e+00 2.7770328e+02
+6.0508918e+01 0.0000000e+00 3.1486219e+02
+1.5483300e+02 0.0000000e+00 2.6473083e+02
+6.7044221e+01 0.0000000e+00 1.8321258e+02
+-1.0913653e+02 0.0000000e+00 1.1257783e+02
+-8.7129016e+01 0.0000000e+00 4.6288976e+01
+-6.2819250e-03 0.0000000e+00 5.6173980e-01
+1.3649586e+01 0.0000000e+00 -7.2311358e+00
+6.0675841e+00 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.2097180e+01 -4.7756158e+01 2.4781710e+01
+-3.4590790e+01 -1.7385470e+02 5.2736277e+01
+-1.0494844e+02 -3.0649117e+02 3.4969376e+01
+-7.3400730e+01 -4.1606129e+02 4.0707082e+01
+-9.7251511e+01 -4.9927885e+02 9.3951472e+01
+-2.0441360e+02 -5.2683119e+02 1.4361461e+02
+-1.7122792e+02 -4.9727555e+02 2.1549430e+02
+-1.1267013e+02 -4.3424889e+02 2.8842294e+02
+-2.0547760e+02 -3.4879272e+02 2.7477098e+02
+-2.4129813e+02 -2.4911070e+02 2.3612698e+02
+-1.5125054e+02 -1.4980848e+02 2.5371526e+02
+-1.3913087e+02 -7.4598359e+01 2.3015918e+02
+-1.7984504e+02 -3.8077944e+01 1.1304869e+02
+-1.4142903e+02 -2.6098924e+01 1.6596639e+01
+-7.7484651e+01 -1.8441802e+01 -6.2261034e+00
+-4.0534603e+01 -1.1134256e+01 -2.9744148e+00
+-1.1923105e+01 -2.9110120e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.0681187e+01 -4.2163026e+01 1.2264066e+01
+-5.3843190e+01 -1.2008807e+02 1.1353068e+01
+-1.0854362e+02 -2.1206773e+02 3.4048725e+00
+-1.3600165e+02 -3.0093517e+02 9.1043472e+00
+-1.6049458e+02 -3.6674588e+02 1.7409240e+01
+-1.8561890e+02 -3.9408037e+02 2.3784241e+01
+-1.6621785e+02 -3.8181580e+02 4.0223322e+01
+-1.2889916e+02 -3.3843148e+02 5.4040410e+01
+-1.1698654e+02 -2.7439324e+02 4.7697335e+01
+-9.7557173e+01 -1.9849949e+02 3.8361801e+01
+-5.8752770e+01 -1.2138550e+02 4.5048677e+01
+-4.1922692e+01 -5.8117388e+01 4.4183487e+01
+-4.2782162e+01 -1.9565434e+01 2.1695579e+01
+-3.2865162e+01 -4.3956686e+00 2.1202057e+00
+-1.9128697e+01 -3.5984253e-01 -1.6656796e+00
+-8.9317027e+00 -2.8305567e-03 1.2373849e-01
+-2.6579190e+00 4.0442716e-01 0.0000000e+00
+0 0 0
+0 0 0
+3.4738250e-08 -4.3691797e-04 4.3266122e-04
+4.3413654e-06 -9.4769564e-03 9.7825580e-03
+1.3511183e-04 -1.7606525e-01 1.8264793e-01
+1.3035320e-03 -2.9540370e+00 3.0669081e+00
+-1.5421768e-01 -4.1832679e+01 1.6138328e+00
+-6.2176756e-01 -1.2145415e+02 -4.7346263e-01
+-6.5159239e-01 -2.1899375e+02 -5.3472185e-01
+5.1867029e-01 -3.1245460e+02 1.8242149e-01
+2.1855513e+00 -3.8070603e+02 2.7758956e-01
+3.5798156e+00 -4.0946369e+02 1.4377214e-01
+4.7969173e+00 -3.9759402e+02 4.2201774e-01
+5.3928734e+00 -3.5293949e+02 8.2862237e-01
+5.0633095e+00 -2.8615686e+02 5.7314904e-01
+4.6566932e+00 -2.0728935e+02 8.9562247e-02
+4.3022874e+00 -1.2816305e+02 2.1586002e-01
+3.2929733e+00 -6.2865782e+01 4.7122010e-01
+1.7763408e+00 -2.1670929e+01 1.0830378e-01
+6.0110450e-01 -4.3417750e+00 -1.1606149e-01
+1.4394869e-02 -4.5054569e-01 -9.5800277e-02
+-8.0220440e-02 3.8801284e-02 3.3418922e-02
+-1.1426622e-01 1.2514517e-01 5.1061184e-01
+-4.5172353e+00 -1.5310128e+00 3.9299383e+00
+-2.0858145e+01 -9.1400121e+00 0.0000000e+00
+-4.5926403e-07 -1.0550610e-03 6.1046336e-04
+-7.9488581e-07 -2.0471849e-02 1.1403694e-02
+1.2658302e-04 -3.2689588e-01 1.5792855e-01
+3.6877317e-03 -4.3900194e+00 1.5190739e+00
+5.8111672e-02 -4.1571288e+01 3.7921533e-01
+3.2307686e-01 -1.2287501e+02 -9.1513126e-01
+1.0037720e+00 -2.2452683e+02 -6.7210101e-01
+2.1177830e+00 -3.2110023e+02 -3.8640315e-02
+3.4625447e+00 -3.9091969e+02 9.6043673e-02
+4.5919340e+00 -4.2040765e+02 1.5622420e-02
+5.0858257e+00 -4.0847930e+02 2.3914207e-02
+4.9651071e+00 -3.6277382e+02 1.1568180e-01
+4.5400415e+00 -2.9400773e+02 4.6382029e-02
+3.9844090e+00 -2.1315375e+02 -8.8615335e-02
+3.2977340e+00 -1.3262868e+02 6.6960918e-02
+2.4511555e+00 -6.6000017e+01 4.0467789e-01
+1.4745487e+00 -2.3113545e+01 3.9312305e-01
+6.0679599e-01 -4.5322856e+00 5.0217589e-02
+1.9373884e-01 -5.7710655e-01 1.0737669e-02
+7.7291041e-02 -1.2298281e-02 -1.0262735e-02
+-1.3225971e-01 -3.7741007e-03 1.8925448e-01
+-1.2624111e+01 -5.5216786e+00 1.1762077e+01
+-5.4784478e+01 -3.0085895e+01 0.0000000e+00
+-3.2277189e-06 -1.2819265e-03 2.2004416e-04
+-4.1024634e-05 -2.3361506e-02 2.9424680e-03
+-3.6453142e-04 -3.4861645e-01 2.1387952e-02
+-2.0792949e-03 -4.4073247e+00 -1.2158161e-02
+-2.3489289e-03 -4.1346610e+01 -7.4774413e-01
+8.9260748e-02 -1.2398222e+02 -1.2434197e+00
+4.1561101e-01 -2.2813236e+02 -7.8102182e-01
+1.0097598e+00 -3.2657784e+02 -8.0649870e-02
+1.7731467e+00 -3.9722677e+02 2.0542937e-01
+2.4408898e+00 -4.2704799e+02 2.5166919e-01
+2.7479954e+00 -4.1503742e+02 2.9560995e-01
+2.7081143e+00 -3.6867134e+02 3.5460503e-01
+2.5081607e+00 -2.9872797e+02 3.2617950e-01
+2.2354289e+00 -2.1677764e+02 3.4313504e-01
+1.8774363e+00 -1.3557178e+02 6.8041875e-01
+1.4131837e+00 -6.8209651e+01 1.1995533e+00
+8.4522343e-01 -2.4014768e+01 1.2410344e+00
+3.3219701e-01 -4.2293180e+00 6.4296119e-01
+1.6534875e-01 -6.5599042e-01 5.7362389e-01
+2.0931513e-01 -4.9040953e-02 4.1842601e-01
+1.4315815e-02 1.2771962e-02 2.8267048e-01
+-2.0860739e+01 -1.0000155e+01 1.9469666e+01
+-8.2391765e+01 -5.5716278e+01 0.0000000e+00
+-1.7026343e-05 -9.9897694e-04 -2.8561167e-04
+-2.6835672e-04 -1.7237506e-02 -6.4808599e-03
+-3.4736541e-03 -2.4424837e-01 -1.1229026e-01
+-3.9539473e-02 -3.0089062e+00 -1.5331394e+00
+-3.6921194e-01 -4.1174887e+01 -1.9277139e+00
+-1.0190193e+00 -1.2493898e+02 -1.6792682e+00
+-1.7509639e+00 -2.3029074e+02 -9.2843127e-01
+-2.3079839e+00 -3.2962776e+02 -5.2624304e-02
+-2.5389772e+00 -4.0054167e+02 4.9244515e-01
+-2.4738721e+00 -4.3040007e+02 7.9160822e-01
+-2.2360670e+00 -4.1829883e+02 1.0198963e+00
+-1.8622630e+00 -3.7159250e+02 1.2138419e+00
+-1.3411584e+00 -3.0109912e+02 1.3626510e+00
+-7.4588533e-01 -2.1874679e+02 1.6209950e+00
+-2.0759070e-01 -1.3746244e+02 2.2311656e+00
+1.5564254e-01 -7.0056802e+01 3.2028129e+00
+2.7746693e-01 -2.5593055e+01 4.2895215e+00
+2.4886616e-01 -4.6254173e+00 4.4268451e+00
+3.5022353e-01 -1.4067922e+00 4.8354750e+00
+6.5133700e-01 -4.2707555e-01 4.5853254e+00
+6.4254692e-01 -7.8311901e-02 3.7545399e+00
+-3.0176262e+01 -1.6946978e+01 2.7071321e+01
+-1.1060886e+02 -9.1661345e+01 0.0000000e+00
+-6.7013892e-05 -5.8375257e-04 -4.0996579e-04
+-1.2390968e-03 -9.7114052e-03 -7.8369765e-03
+-2.0578674e-02 -1.3753117e-01 -1.1278379e-01
+-3.4362878e-01 -1.9089902e+00 -1.1783963e+00
+-1.0568545e+01 -3.9472916e+01 -1.2853784e+00
+-3.0413449e+01 -1.2064412e+02 -4.1274380e-01
+-5.6091073e+01 -2.2247325e+02 1.4835888e+00
+-8.1000588e+01 -3.1845752e+02 4.1741381e+00
+-9.9430599e+01 -3.8676000e+02 7.1457376e+00
+-1.0806587e+02 -4.1550312e+02 1.0235960e+01
+-1.0622594e+02 -4.0397158e+02 1.3410962e+01
+-9.5164008e+01 -3.5911762e+02 1.6603998e+01
+-7.7440069e+01 -2.9136258e+02 1.9766968e+01
+-5.6423300e+01 -2.1247268e+02 2.2944249e+01
+-3.5615584e+01 -1.3485654e+02 2.6110813e+01
+-1.8051422e+01 -7.0088140e+01 2.8654351e+01
+-5.8348465e+00 -2.5625660e+01 2.8727922e+01
+2.7748155e-01 -3.7138603e+00 2.7263223e+01
+8.8848867e-01 -1.4257194e+00 2.6305292e+01
+1.5568754e+00 -4.4775625e-01 2.4670670e+01
+1.9244349e+00 -4.8254009e-02 2.1990463e+01
+-3.8108377e+01 -2.4793412e+01 4.3797624e+01
+-1.2832897e+02 -1.3462320e+02 0.0000000e+00
+-1.6905475e-04 -3.3256594e-04 -2.3403064e-04
+-3.2623033e-03 -5.7900591e-03 -3.8060874e-03
+-5.6785805e-02 -9.1297848e-02 -4.3549345e-02
+-9.8718369e-01 -1.5054352e+00 -3.2591420e-01
+-2.9073635e+01 -3.5085096e+01 -7.9305328e-02
+-7.3267166e+01 -1.1016232e+02 2.7487678e+00
+-1.2896056e+02 -2.0368157e+02 8.2939707e+00
+-1.8287668e+02 -2.9143197e+02 1.5990658e+01
+-2.2341599e+02 -3.5365434e+02 2.5084800e+01
+-2.4342444e+02 -3.7980627e+02 3.5009752e+01
+-2.4092380e+02 -3.6933942e+02 4.5251916e+01
+-2.1825633e+02 -3.2853441e+02 5.5287080e+01
+-1.8073550e+02 -2.6687722e+02 6.4605215e+01
+-1.3530203e+02 -1.9511699e+02 7.2666409e+01
+-8.9239760e+01 -1.2436067e+02 7.8764394e+01
+-4.9058441e+01 -6.4631831e+01 8.1840708e+01
+-1.9517344e+01 -2.2579544e+01 8.0817901e+01
+7.4802862e-02 -2.5632968e+00 7.8705613e+01
+1.4171779e+00 -8.2707065e-01 7.6294554e+01
+2.4614512e+00 -1.1287453e-01 7.2957247e+01
+3.1615352e+00 7.0273879e-02 6.8057313e+01
+-4.7056770e+01 -2.9012836e+01 8.8875483e+01
+-1.3395278e+02 -1.6455623e+02 0.0000000e+00
+-3.1503600e-04 -2.0808275e-04 -9.2811141e-05
+-6.1516999e-03 -3.9095837e-03 -1.3226009e-03
+-1.0829535e-01 -6.7865135e-02 -1.2611854e-02
+-1.8986847e+00 -1.2158637e+00 -7.5850345e-02
+-5.5009798e+01 -2.9038462e+01 2.1444864e+00
+-1.3064518e+02 -9.3400379e+01 7.9683418e+00
+-2.2442020e+02 -1.7342351e+02 1.8375671e+01
+-3.1484635e+02 -2.4816071e+02 3.2871823e+01
+-3.8313130e+02 -3.0095182e+02 5.0352659e+01
+-4.1747238e+02 -3.2307087e+02 6.9625733e+01
+-4.1432660e+02 -3.1414158e+02 8.9469831e+01
+-3.7728062e+02 -2.7948099e+02 1.0866291e+02
+-3.1490903e+02 -2.2712689e+02 1.2602566e+02
+-2.3854018e+02 -1.6617529e+02 1.4041665e+02
+-1.6021755e+02 -1.0591200e+02 1.5074637e+02
+-9.0901803e+01 -5.4625661e+01 1.5609921e+02
+-3.8893198e+01 -1.8253836e+01 1.5620806e+02
+-4.5662887e-01 -1.6760058e+00 1.5396869e+02
+1.7098883e+00 -3.5479746e-01 1.5084771e+02
+3.0215377e+00 9.8987479e-02 1.4624860e+02
+3.7598362e+00 3.2856852e-02 1.3947725e+02
+-6.0526683e+01 -3.0345199e+01 1.6929360e+02
+-1.3205046e+02 -1.7408782e+02 0.0000000e+00
+-4.7887534e-04 -1.3609909e-04 -2.5579137e-05
+-9.3846047e-03 -2.6899574e-03 -2.9060808e-04
+-1.6574729e-01 -4.8864490e-02 -1.4715521e-03
+-2.9131704e+00 -8.9912160e-01 1.3636694e-02
+-8.3722135e+01 -2.1703744e+01 4.5592335e+00
+-1.9275728e+02 -7.1067926e+01 1.3923064e+01
+-3.2661701e+02 -1.3251860e+02 2.9633931e+01
+-4.5534409e+02 -1.8971535e+02 5.1399243e+01
+-5.5272822e+02 -2.2997876e+02 7.7829262e+01
+-6.0216856e+02 -2.4678028e+02 1.0710658e+02
+-5.9848866e+02 -2.3989597e+02 1.3726973e+02
+-5.4650911e+02 -2.1339115e+02 1.6636163e+02
+-4.5813040e+02 -1.7339829e+02 1.9252587e+02
+-3.4922536e+02 -1.2683848e+02 2.1407228e+02
+-2.3681231e+02 -8.0723747e+01 2.2962268e+02
+-1.3654576e+02 -4.1306120e+01 2.3839371e+02
+-6.0538062e+01 -1.3376125e+01 2.4039615e+02
+-1.1802446e+00 -1.0853561e+00 2.3809685e+02
+1.8025637e+00 -1.5832343e-01 2.3446144e+02
+3.2715079e+00 1.1107716e-01 2.2873170e+02
+3.7868468e+00 -1.0956022e-01 2.2026422e+02
+-7.6650033e+01 -2.9023526e+01 2.6656636e+02
+-1.1493437e+02 -1.6417696e+02 0.0000000e+00
+-6.2772843e-04 -7.9542280e-05 2.2457882e-06
+-1.2317119e-02 -1.6073627e-03 1.2875924e-04
+-2.1779779e-01 -2.9664339e-02 3.4800954e-03
+-3.8318972e+00 -5.4946338e-01 7.3291299e-02
+-1.0965960e+02 -1.3410549e+01 6.6518108e+00
+-2.4818159e+02 -4.4434799e+01 1.9264364e+01
+-4.1724285e+02 -8.3128348e+01 3.9709837e+01
+-5.7954396e+02 -1.1906869e+02 6.7870671e+01
+-7.0243846e+02 -1.4430560e+02 1.0215096e+02
+-7.6515408e+02 -1.5479866e+02 1.4022411e+02
+-7.6108043e+02 -1.5043829e+02 1.7950035e+02
+-6.9608493e+02 -1.3378314e+02 2.1738724e+02
+-5.8494090e+02 -1.0868188e+02 2.5144187e+02
+-4.4747621e+02 -7.9466445e+01 2.7950232e+02
+-3.0505673e+02 -5.0504792e+01 2.9993529e+02
+-1.7745680e+02 -2.5699645e+01 3.1199016e+02
+-8.0167634e+01 -8.1755793e+00 3.1566150e+02
+-1.8770972e+00 -6.5083739e-01 3.1318760e+02
+1.8148337e+00 -1.1412688e-01 3.0898160e+02
+3.3828198e+00 1.2074953e-02 3.0214122e+02
+3.5882323e+00 -2.3569217e-01 2.9210468e+02
+-9.2007227e+01 -2.1794283e+01 3.5520339e+02
+-8.4698845e+01 -1.2381719e+02 0.0000000e+00
+-7.3120945e-04 -2.6352533e-05 1.3764355e-05
+-1.4354513e-02 -5.3639808e-04 3.1865657e-04
+-2.5394819e-01 -9.9424768e-03 6.2370520e-03
+-4.4700095e+00 -1.8436395e-01 1.1759763e-01
+-1.2765242e+02 -4.5347748e+00 8.0598123e+00
+-2.8637436e+02 -1.5115069e+01 2.2921597e+01
+-4.7947863e+02 -2.8327062e+01 4.6614875e+01
+-6.6468788e+02 -4.0587179e+01 7.9128266e+01
+-8.0498968e+02 -4.9184847e+01 1.1874044e+02
+-8.7677800e+02 -5.2752177e+01 1.6279474e+02
+-8.7246254e+02 -5.1257594e+01 2.0828243e+02
+-7.9861245e+02 -4.5575273e+01 2.5218035e+02
+-6.7194630e+02 -3.7017663e+01 2.9164441e+02
+-5.1498003e+02 -2.7059606e+01 3.2418788e+02
+-3.5204042e+02 -1.7184732e+01 3.4799407e+02
+-2.0571300e+02 -8.7211329e+00 3.6229168e+02
+-9.3803513e+01 -2.7546455e+00 3.6697240e+02
+-2.3664610e+00 -2.2609629e-01 3.6424317e+02
+1.8145923e+00 -5.4775568e-02 3.5946296e+02
+3.4465209e+00 -2.4812090e-02 3.5161829e+02
+3.4215309e+00 -1.3922576e-01 3.4019367e+02
+-1.0217384e+02 -8.1286444e+00 4.1691407e+02
+-5.0954677e+01 -4.6916990e+01 0.0000000e+00
+-7.6821162e-04 2.6352533e-05 1.7077961e-05
+-1.5082890e-02 5.3639808e-04 3.7790069e-04
+-2.6687119e-01 9.9424768e-03 7.2010295e-03
+-4.6981375e+00 1.8436395e-01 1.3459610e-01
+-1.3408147e+02 4.5347748e+00 8.5551571e+00
+-2.9998101e+02 1.5115069e+01 2.4217332e+01
+-5.0161691e+02 2.8327062e+01 4.9063077e+01
+-6.9495134e+02 4.0587179e+01 8.3115599e+01
+-8.4142737e+02 4.9184847e+01 1.2461130e+02
+-9.1643583e+02 5.2752177e+01 1.7077931e+02
+-9.1203862e+02 5.1257594e+01 2.1846389e+02
+-8.3505187e+02 4.5575273e+01 2.6448936e+02
+-7.0288185e+02 3.7017663e+01 3.0586884e+02
+-5.3899635e+02 2.7059606e+01 3.3999941e+02
+-3.6877147e+02 1.7184732e+01 3.6499701e+02
+-2.1578976e+02 8.7211329e+00 3.8007409e+02
+-9.8678714e+01 2.7546455e+00 3.8506923e+02
+-2.5414422e+00 2.2609628e-01 3.8220608e+02
+1.8145638e+00 5.4775211e-02 3.7715649e+02
+3.4696344e+00 2.4799391e-02 3.6885692e+02
+3.3708103e+00 1.3875414e-01 3.5680781e+02
+-1.0515117e+02 8.1461474e+00 4.3923881e+02
+-3.3919220e+01 4.6948158e+01 0.0000000e+00
+-7.3120945e-04 7.9542280e-05 1.3764355e-05
+-1.4354513e-02 1.6073627e-03 3.1865657e-04
+-2.5394819e-01 2.9664339e-02 6.2370520e-03
+-4.4700095e+00 5.4946338e-01 1.1759763e-01
+-1.2765242e+02 1.3410549e+01 8.0598123e+00
+-2.8637436e+02 4.4434799e+01 2.2921597e+01
+-4.7947863e+02 8.3128348e+01 4.6614875e+01
+-6.6468788e+02 1.1906869e+02 7.9128266e+01
+-8.0498968e+02 1.4430560e+02 1.1874044e+02
+-8.7677800e+02 1.5479866e+02 1.6279474e+02
+-8.7246254e+02 1.5043829e+02 2.0828243e+02
+-7.9861245e+02 1.3378314e+02 2.5218035e+02
+-6.7194630e+02 1.0868188e+02 2.9164441e+02
+-5.1498003e+02 7.9466445e+01 3.2418788e+02
+-3.5204042e+02 5.0504792e+01 3.4799407e+02
+-2.0571300e+02 2.5699645e+01 3.6229168e+02
+-9.3803513e+01 8.1755792e+00 3.6697240e+02
+-2.3664610e+00 6.5083739e-01 3.6424317e+02
+1.8145930e+00 1.1412696e-01 3.5946296e+02
+3.4465491e+00 -1.2075726e-02 3.5161826e+02
+3.4226873e+00 2.3564250e-01 3.4019404e+02
+-1.0213020e+02 2.1769481e+01 4.1686846e+02
+-5.0887221e+01 1.2377828e+02 0.0000000e+00
+-6.2772843e-04 1.3609909e-04 2.2457882e-06
+-1.2317119e-02 2.6899574e-03 1.2875924e-04
+-2.1779779e-01 4.8864490e-02 3.4800954e-03
+-3.8318972e+00 8.9912160e-01 7.3291299e-02
+-1.0965960e+02 2.1703744e+01 6.6518108e+00
+-2.4818159e+02 7.1067926e+01 1.9264364e+01
+-4.1724285e+02 1.3251860e+02 3.9709837e+01
+-5.7954396e+02 1.8971535e+02 6.7870671e+01
+-7.0243846e+02 2.2997876e+02 1.0215096e+02
+-7.6515408e+02 2.4678028e+02 1.4022411e+02
+-7.6108043e+02 2.3989597e+02 1.7950035e+02
+-6.9608493e+02 2.1339115e+02 2.1738724e+02
+-5.8494090e+02 1.7339829e+02 2.5144187e+02
+-4.4747621e+02 1.2683848e+02 2.7950232e+02
+-3.0505673e+02 8.0723747e+01 2.9993529e+02
+-1.7745680e+02 4.1306120e+01 3.1199016e+02
+-8.0167634e+01 1.3376125e+01 3.1566150e+02
+-1.8770972e+00 1.0853561e+00 3.1318760e+02
+1.8148342e+00 1.5832365e-01 3.0898160e+02
+3.3828424e+00 -1.1107065e-01 3.0214121e+02
+3.5895157e+00 1.0956746e-01 2.9209951e+02
+-9.1957707e+01 2.9025251e+01 3.5512842e+02
+-8.4596513e+01 1.6415310e+02 0.0000000e+00
+-4.7887534e-04 2.0808275e-04 -2.5579137e-05
+-9.3846047e-03 3.9095837e-03 -2.9060808e-04
+-1.6574729e-01 6.7865135e-02 -1.4715521e-03
+-2.9131704e+00 1.2158637e+00 1.3636694e-02
+-8.3722135e+01 2.9038462e+01 4.5592335e+00
+-1.9275728e+02 9.3400379e+01 1.3923064e+01
+-3.2661701e+02 1.7342351e+02 2.9633931e+01
+-4.5534409e+02 2.4816071e+02 5.1399243e+01
+-5.5272822e+02 3.0095182e+02 7.7829262e+01
+-6.0216856e+02 3.2307087e+02 1.0710658e+02
+-5.9848866e+02 3.1414158e+02 1.3726973e+02
+-5.4650911e+02 2.7948099e+02 1.6636163e+02
+-4.5813040e+02 2.2712689e+02 1.9252587e+02
+-3.4922536e+02 1.6617529e+02 2.1407228e+02
+-2.3681231e+02 1.0591200e+02 2.2962268e+02
+-1.3654576e+02 5.4625661e+01 2.3839371e+02
+-6.0538062e+01 1.8253836e+01 2.4039615e+02
+-1.1802446e+00 1.6760058e+00 2.3809685e+02
+1.8025639e+00 3.5479794e-01 2.3446144e+02
+3.2715149e+00 -9.8978553e-02 2.2873166e+02
+3.7872769e+00 -3.2200894e-02 2.2026260e+02
+-7.6608945e+01 3.0375403e+01 2.6654979e+02
+-1.1485636e+02 1.7408704e+02 0.0000000e+00
+-3.1503600e-04 3.3256594e-04 -9.2811141e-05
+-6.1516999e-03 5.7900591e-03 -1.3226009e-03
+-1.0829535e-01 9.1297848e-02 -1.2611854e-02
+-1.8986847e+00 1.5054352e+00 -7.5850345e-02
+-5.5009798e+01 3.5085096e+01 2.1444864e+00
+-1.3064518e+02 1.1016232e+02 7.9683418e+00
+-2.2442020e+02 2.0368157e+02 1.8375671e+01
+-3.1484635e+02 2.9143197e+02 3.2871823e+01
+-3.8313130e+02 3.5365434e+02 5.0352659e+01
+-4.1747238e+02 3.7980627e+02 6.9625733e+01
+-4.1432660e+02 3.6933942e+02 8.9469831e+01
+-3.7728062e+02 3.2853441e+02 1.0866291e+02
+-3.1490903e+02 2.6687722e+02 1.2602566e+02
+-2.3854018e+02 1.9511699e+02 1.4041665e+02
+-1.6021755e+02 1.2436067e+02 1.5074637e+02
+-9.0901803e+01 6.4631831e+01 1.5609921e+02
+-3.8893198e+01 2.2579544e+01 1.5620806e+02
+-4.5662887e-01 2.5632968e+00 1.5396869e+02
+1.7098882e+00 8.2707016e-01 1.5084771e+02
+3.0215330e+00 1.1286518e-01 1.4624864e+02
+3.7592325e+00 -7.0656560e-02 1.3947871e+02
+-6.0540908e+01 2.9010071e+01 1.6932031e+02
+-1.3201411e+02 1.6459298e+02 0.0000000e+00
+-1.6905475e-04 5.8375257e-04 -2.3403064e-04
+-3.2623033e-03 9.7114052e-03 -3.8060874e-03
+-5.6785805e-02 1.3753117e-01 -4.3549345e-02
+-9.8718369e-01 1.9089902e+00 -3.2591420e-01
+-2.9073635e+01 3.9472916e+01 -7.9305329e-02
+-7.3267166e+01 1.2064412e+02 2.7487678e+00
+-1.2896056e+02 2.2247325e+02 8.2939707e+00
+-1.8287668e+02 3.1845752e+02 1.5990658e+01
+-2.2341599e+02 3.8676000e+02 2.5084800e+01
+-2.4342444e+02 4.1550312e+02 3.5009752e+01
+-2.4092380e+02 4.0397158e+02 4.5251916e+01
+-2.1825633e+02 3.5911762e+02 5.5287080e+01
+-1.8073550e+02 2.9136258e+02 6.4605215e+01
+-1.3530203e+02 2.1247268e+02 7.2666409e+01
+-8.9239760e+01 1.3485654e+02 7.8764394e+01
+-4.9058441e+01 7.0088140e+01 8.1840708e+01
+-1.9517344e+01 2.5625660e+01 8.0817901e+01
+7.4802870e-02 3.7138603e+00 7.8705613e+01
+1.4171781e+00 1.4257195e+00 7.6294554e+01
+2.4614496e+00 4.4776354e-01 7.2957175e+01
+3.1619514e+00 4.9139320e-02 6.8058149e+01
+-4.7061608e+01 2.4833135e+01 8.8917776e+01
+-1.3395301e+02 1.3470843e+02 0.0000000e+00
+-6.7013893e-05 9.9897694e-04 -4.0996579e-04
+-1.2390968e-03 1.7237506e-02 -7.8369765e-03
+-2.0578674e-02 2.4424837e-01 -1.1278379e-01
+-3.4362878e-01 3.0089062e+00 -1.1783963e+00
+-1.0568545e+01 4.1174887e+01 -1.2853785e+00
+-3.0413449e+01 1.2493898e+02 -4.1274382e-01
+-5.6091073e+01 2.3029074e+02 1.4835888e+00
+-8.1000588e+01 3.2962776e+02 4.1741381e+00
+-9.9430599e+01 4.0054167e+02 7.1457376e+00
+-1.0806587e+02 4.3040007e+02 1.0235960e+01
+-1.0622594e+02 4.1829883e+02 1.3410962e+01
+-9.5164008e+01 3.7159250e+02 1.6603998e+01
+-7.7440069e+01 3.0109912e+02 1.9766968e+01
+-5.6423300e+01 2.1874679e+02 2.2944249e+01
+-3.5615583e+01 1.3746244e+02 2.6110813e+01
+-1.8051422e+01 7.0056802e+01 2.8654351e+01
+-5.8348465e+00 2.5593054e+01 2.8727922e+01
+2.7748156e-01 4.6254174e+00 2.7263223e+01
+8.8848989e-01 1.4067936e+00 2.6305290e+01
+1.5569450e+00 4.2713492e-01 2.4670563e+01
+1.9252494e+00 7.9830813e-02 2.1991028e+01
+-3.8094881e+01 1.6997177e+01 4.3785063e+01
+-1.2830866e+02 9.1752022e+01 0.0000000e+00
+-1.7026348e-05 1.2819265e-03 -2.8561167e-04
+-2.6835679e-04 2.3361506e-02 -6.4808600e-03
+-3.4736545e-03 3.4861646e-01 -1.1229026e-01
+-3.9539478e-02 4.4073248e+00 -1.5331394e+00
+-3.6921197e-01 4.1346610e+01 -1.9277140e+00
+-1.0190193e+00 1.2398222e+02 -1.6792683e+00
+-1.7509639e+00 2.2813236e+02 -9.2843127e-01
+-2.3079839e+00 3.2657784e+02 -5.2624268e-02
+-2.5389773e+00 3.9722677e+02 4.9244522e-01
+-2.4738721e+00 4.2704799e+02 7.9160826e-01
+-2.2360670e+00 4.1503742e+02 1.0198963e+00
+-1.8622631e+00 3.6867134e+02 1.2138419e+00
+-1.3411584e+00 2.9872797e+02 1.3626510e+00
+-7.4588515e-01 2.1677764e+02 1.6209953e+00
+-2.0759030e-01 1.3557178e+02 2.2311658e+00
+1.5564283e-01 6.8209619e+01 3.2028089e+00
+2.7746447e-01 2.4014758e+01 4.2895251e+00
+2.4886624e-01 4.2293080e+00 4.4268448e+00
+3.5022705e-01 6.5599244e-01 4.8354715e+00
+6.5146856e-01 4.9075579e-02 4.5851646e+00
+6.4701101e-01 -1.2238420e-02 3.7509006e+00
+-3.0056959e+01 1.0064096e+01 2.6966523e+01
+-1.1050903e+02 5.5720843e+01 0.0000000e+00
+-3.2277538e-06 1.0550610e-03 2.2004417e-04
+-4.1025281e-05 2.0471849e-02 2.9424680e-03
+-3.6454198e-04 3.2689589e-01 2.1387950e-02
+-2.0794570e-03 4.3900196e+00 -1.2158274e-02
+-2.3499748e-03 4.1571290e+01 -7.4774629e-01
+8.9260035e-02 1.2287501e+02 -1.2434229e+00
+4.1561064e-01 2.2452683e+02 -7.8102181e-01
+1.0097590e+00 3.2110022e+02 -8.0648567e-02
+1.7731459e+00 3.9091969e+02 2.0543137e-01
+2.4408892e+00 4.2040765e+02 2.5167031e-01
+2.7479954e+00 4.0847929e+02 2.9561057e-01
+2.7081137e+00 3.6277382e+02 3.5460495e-01
+2.5081609e+00 2.9400774e+02 3.2618041e-01
+2.2354336e+00 2.1315375e+02 3.4314161e-01
+1.8774481e+00 1.3262826e+02 6.8034458e-01
+1.4131273e+00 6.5999833e+01 1.1995920e+00
+8.4512307e-01 2.3113530e+01 1.2410987e+00
+3.3212363e-01 4.5323503e+00 6.4296302e-01
+1.6533908e-01 5.7703531e-01 5.7361364e-01
+2.0947762e-01 1.2179874e-02 4.1826567e-01
+2.1671439e-02 1.1757105e-03 2.8931476e-01
+-2.0667960e+01 5.4202252e+00 1.9401889e+01
+-8.2342106e+01 2.9872862e+01 0.0000000e+00
+-4.5942222e-07 4.3691802e-04 6.1046346e-04
+-7.9989246e-07 9.4769575e-03 1.1403694e-02
+1.2644740e-04 1.7606530e-01 1.5792857e-01
+3.6846988e-03 2.9540392e+00 1.5190736e+00
+5.8073223e-02 4.1832767e+01 3.7914550e-01
+3.2305773e-01 1.2145415e+02 -9.1522728e-01
+1.0037582e+00 2.1899364e+02 -6.7209655e-01
+2.1177669e+00 3.1245457e+02 -3.8596576e-02
+3.4625195e+00 3.8070608e+02 9.6091502e-02
+4.5919229e+00 4.0946373e+02 1.5651921e-02
+5.0858362e+00 3.9759401e+02 2.3938720e-02
+4.9650833e+00 3.5293946e+02 1.1570158e-01
+4.5400306e+00 2.8615700e+02 4.6404100e-02
+3.9845223e+00 2.0729066e+02 -8.8048583e-02
+3.2970340e+00 1.2816153e+02 6.8674251e-02
+2.4495157e+00 6.2866719e+01 4.0694253e-01
+1.4713998e+00 2.1671523e+01 3.9561989e-01
+6.0373535e-01 4.3490007e+00 4.9431133e-02
+1.9311015e-01 4.5083524e-01 1.0176832e-02
+7.7102648e-02 -3.5692493e-02 -1.0387355e-02
+-1.2965934e-01 -1.2699386e-01 1.8780929e-01
+-1.2557100e+01 1.4774259e+00 1.1737440e+01
+-5.4905976e+01 9.0455655e+00 0.0000000e+00
+3.4418225e-08 0.0000000e+00 4.3266129e-04
+4.3281807e-06 0.0000000e+00 9.7825687e-03
+1.3448197e-04 0.0000000e+00 1.8264852e-01
+1.2730080e-03 0.0000000e+00 3.0669371e+00
+-1.5588684e-01 4.2167597e+01 1.6115926e+00
+-6.2245134e-01 1.2008847e+02 -4.7651600e-01
+-6.5207067e-01 2.1206442e+02 -5.3449632e-01
+5.1819890e-01 3.0093154e+02 1.8369727e-01
+2.1845438e+00 3.6674663e+02 2.7874692e-01
+3.5793679e+00 3.9408177e+02 1.4436851e-01
+4.7969445e+00 3.8181772e+02 4.2286908e-01
+5.3922466e+00 3.3842966e+02 8.3045263e-01
+5.0626019e+00 2.7448080e+02 6.0895948e-01
+4.6318626e+00 1.9850645e+02 1.6120473e-01
+4.2804478e+00 1.2144494e+02 2.8791075e-01
+3.2485604e+00 5.8197997e+01 5.3823376e-01
+1.6866518e+00 1.9357763e+01 2.3913964e-01
+4.8832166e-01 3.7889942e+00 -1.2073928e-01
+-3.3552257e-03 3.6740807e-01 -1.0429382e-01
+-9.9728192e-02 -4.9265637e-03 5.7509599e-03
+-1.1434887e-01 -4.1655661e-01 5.1216623e-01
+-4.4892940e+00 0.0000000e+00 3.9569915e+00
+-2.0944135e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.0770117e+01 4.7783148e+01 1.2173918e+01
+-5.3861700e+01 1.7387414e+02 1.1249980e+01
+-1.0856095e+02 3.0636994e+02 3.3992892e+00
+-1.3602268e+02 4.1600873e+02 9.1445792e+00
+-1.6053007e+02 4.9927285e+02 1.7444310e+01
+-1.8564136e+02 5.2681632e+02 2.3802193e+01
+-1.6622741e+02 4.9728576e+02 4.0238293e+01
+-1.2891310e+02 4.3430942e+02 5.4508271e+01
+-1.1777077e+02 3.4880190e+02 4.8762526e+01
+-9.8488365e+01 2.4957982e+02 4.0639474e+01
+-5.9487596e+01 1.5244681e+02 4.6924438e+01
+-4.3209416e+01 7.9316190e+01 4.4461653e+01
+-4.4363640e+01 4.2344878e+01 2.1465020e+01
+-3.4348129e+01 2.8069986e+01 2.3793301e+00
+-1.9582259e+01 1.8754131e+01 -1.5393998e+00
+-9.8780521e+00 1.0076000e+01 -7.4125604e-01
+-2.8119814e+00 2.9594864e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.2059278e+01 0.0000000e+00 2.4759107e+01
+-3.4599022e+01 0.0000000e+00 5.2694540e+01
+-1.0491831e+02 0.0000000e+00 3.4889270e+01
+-7.3391092e+01 0.0000000e+00 4.0635813e+01
+-9.7259418e+01 0.0000000e+00 9.3944121e+01
+-2.0445755e+02 0.0000000e+00 1.4361217e+02
+-1.7125323e+02 0.0000000e+00 2.1548371e+02
+-1.1266564e+02 0.0000000e+00 2.8851690e+02
+-2.0540606e+02 0.0000000e+00 2.7497028e+02
+-2.4138639e+02 0.0000000e+00 2.3609646e+02
+-1.5126345e+02 0.0000000e+00 2.5388743e+02
+-1.3890169e+02 0.0000000e+00 2.3017455e+02
+-1.7946676e+02 0.0000000e+00 1.1301509e+02
+-1.4141016e+02 0.0000000e+00 1.6536985e+01
+-7.7603245e+01 0.0000000e+00 -6.2545946e+00
+-4.0668660e+01 0.0000000e+00 -3.0519355e+00
+-1.2034067e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.3511110e+01 -1.5567942e+01 4.1250645e+01
+-2.0192101e+02 -6.1182294e+01 5.1136507e+01
+-3.4249949e+02 -1.0202305e+02 -1.0689002e+01
+-4.9814652e+02 -1.3746121e+02 3.9531074e+01
+-5.4012573e+02 -1.8321525e+02 1.2166501e+02
+-5.0584373e+02 -2.1519712e+02 9.0438411e+01
+-5.2900570e+02 -2.2044611e+02 1.5411148e+02
+-4.5569354e+02 -2.1253837e+02 2.8973957e+02
+-2.7838820e+02 -1.9603457e+02 2.4329674e+02
+-2.3731048e+02 -1.6181185e+02 1.6253938e+02
+-2.5292447e+02 -1.0846050e+02 2.1526941e+02
+-1.6415294e+02 -6.1617817e+01 2.0730039e+02
+-1.1452210e+02 -3.7692274e+01 8.2627790e+01
+-1.5284628e+02 -2.4441484e+01 3.1872434e+00
+-1.4809628e+02 -1.4115528e+01 -8.0416281e+00
+-9.3633608e+01 -7.1249798e+00 -4.5881423e+00
+-3.2663653e+01 -2.3124347e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.1702777e-01 -4.1880761e+01 1.5739435e+01
+1.1254710e+01 -1.2152005e+02 1.1027012e+01
+2.6810355e+01 -2.2043644e+02 -5.9126162e+00
+3.0660259e+01 -3.2083543e+02 1.0780804e+01
+4.0131609e+01 -4.0047067e+02 2.7409331e+01
+4.7034759e+01 -4.3990193e+02 1.9460561e+01
+2.6918808e+01 -4.3289453e+02 3.8774844e+01
+1.4519760e+01 -3.8744379e+02 6.9389505e+01
+1.9957881e+01 -3.1855367e+02 5.4962408e+01
+-2.3969613e-02 -2.3830994e+02 3.3929593e+01
+-2.3756990e+01 -1.5621380e+02 4.6685006e+01
+-1.8876889e+01 -8.5575436e+01 4.7726517e+01
+-1.5668081e+01 -3.7060847e+01 1.9983087e+01
+-2.6605928e+01 -1.1995737e+01 1.2772372e+00
+-2.7647845e+01 -3.1081058e+00 -1.2094280e+00
+-1.7621520e+01 -6.5943054e-01 -1.1146140e+00
+-6.4616081e+00 3.7732163e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.3040008e-07 -4.0695343e-04 4.0751852e-04
+-1.7998011e-05 -8.8634025e-03 9.2932598e-03
+-4.9213190e-04 -1.6584537e-01 1.7576588e-01
+-1.1101964e-02 -2.8151337e+00 3.0033106e+00
+-1.8980171e-01 -4.0626811e+01 1.7849451e+00
+-6.4954934e-01 -1.1948818e+02 -2.1915499e-01
+-1.9126630e+00 -2.1893881e+02 -4.5704146e-01
+-4.1801335e+00 -3.1720383e+02 6.1010152e-01
+-6.6927063e+00 -3.9219436e+02 1.2122178e+00
+-8.7325283e+00 -4.2742547e+02 1.0480759e+00
+-9.8869404e+00 -4.1872682e+02 1.5645607e+00
+-9.6245276e+00 -3.7354881e+02 2.6871050e+00
+-8.5225556e+00 -3.0519572e+02 2.6687290e+00
+-7.6392430e+00 -2.2545899e+02 2.1134541e+00
+-6.7167149e+00 -1.4536160e+02 2.2810700e+00
+-5.0039600e+00 -7.7390148e+01 2.3925300e+00
+-3.1426383e+00 -3.1273610e+01 1.5434529e+00
+-1.7607218e+00 -8.5524192e+00 4.6192520e-01
+-9.3108886e-01 -1.7959766e+00 9.6117617e-02
+-4.5280872e-01 -2.8668457e-01 9.6176942e-02
+-3.5959503e-01 5.9748518e-02 6.5549634e-01
+-5.1233458e+00 -1.8982954e+00 3.1637581e+00
+-2.6146711e+01 -1.1698346e+01 0.0000000e+00
+-1.1097372e-06 -9.7980190e-04 5.7349893e-04
+-2.8169069e-05 -1.9049764e-02 1.0787235e-02
+-6.2943458e-04 -3.0530836e-01 1.5100626e-01
+-1.1808595e-02 -4.1244590e+00 1.4758279e+00
+-1.5492120e-01 -3.9395292e+01 4.5733324e-01
+-6.6188735e-01 -1.1731576e+02 -7.3012039e-01
+-1.7324987e+00 -2.1642689e+02 -5.0576182e-01
+-3.2780345e+00 -3.1251776e+02 2.0396922e-01
+-4.9795398e+00 -3.8409069e+02 5.4239684e-01
+-6.2990184e+00 -4.1657478e+02 5.8265796e-01
+-6.7359539e+00 -4.0701219e+02 6.8982930e-01
+-6.3463660e+00 -3.6256933e+02 1.0218103e+00
+-5.6040781e+00 -2.9523176e+02 1.2019603e+00
+-4.7936153e+00 -2.1663487e+02 1.1476590e+00
+-3.9022533e+00 -1.3827343e+02 1.2594811e+00
+-2.8687454e+00 -7.2293265e+01 1.4825243e+00
+-1.7198114e+00 -2.7793618e+01 1.1968947e+00
+-7.1966261e-01 -6.4433758e+00 4.1428633e-01
+-2.4593790e-01 -1.1687047e+00 2.2668953e-01
+-1.2007083e-01 -2.2345710e-01 3.5853428e-01
+-4.6147549e-01 -1.8834773e-01 9.3608921e-01
+-1.7630896e+01 -4.8353081e+00 8.8811777e+00
+-9.4585710e+01 -2.8242251e+01 0.0000000e+00
+-3.6673816e-06 -1.1885169e-03 2.0915459e-04
+-5.8741462e-05 -2.1677460e-02 2.8545676e-03
+-8.2206363e-04 -3.2406349e-01 2.2067227e-02
+-1.0346042e-02 -4.1084186e+00 1.4293562e-02
+-9.4967702e-02 -3.8649248e+01 -6.3913221e-01
+-4.0109027e-01 -1.1638103e+02 -1.0835127e+00
+-1.0571659e+00 -2.1538770e+02 -6.4992526e-01
+-2.0109798e+00 -3.1022058e+02 7.3635142e-02
+-3.0679018e+00 -3.7964384e+02 4.6783249e-01
+-3.8875463e+00 -4.1036328e+02 5.8476503e-01
+-4.1544024e+00 -4.0021405e+02 6.8902315e-01
+-3.9118485e+00 -3.5615214e+02 8.9180005e-01
+-3.4512694e+00 -2.8939236e+02 1.0118231e+00
+-2.9388878e+00 -2.1151891e+02 1.0701776e+00
+-2.3766318e+00 -1.3431307e+02 1.3642386e+00
+-1.7329619e+00 -6.9593282e+01 1.8104019e+00
+-1.0102431e+00 -2.5867297e+01 1.7395461e+00
+-3.9087954e-01 -4.9932232e+00 1.0124702e+00
+-1.9682267e-01 -1.0244968e+00 1.2304428e+00
+-2.6736027e-01 -4.5391097e-01 1.9375806e+00
+-9.7578287e-01 -6.1209017e-01 3.3512201e+00
+-2.8136533e+01 -7.3613495e+00 1.3165051e+01
+-1.5888332e+02 -3.9634121e+01 0.0000000e+00
+-1.8613475e-05 -9.2540399e-04 -2.6152575e-04
+-3.0118995e-04 -1.5971403e-02 -5.9347499e-03
+-4.0571143e-03 -2.2651718e-01 -1.0289760e-01
+-4.8182068e-02 -2.7959301e+00 -1.4067435e+00
+-4.5648622e-01 -3.8218093e+01 -1.7506235e+00
+-1.4053486e+00 -1.1623685e+02 -1.5084666e+00
+-2.8024278e+00 -2.1503871e+02 -8.0599182e-01
+-4.3548251e+00 -3.0903443e+02 5.4692222e-02
+-5.7200169e+00 -3.7704898e+02 6.4086865e-01
+-6.5588582e+00 -4.0660258e+02 9.6516083e-01
+-6.6515994e+00 -3.9604918e+02 1.2158201e+00
+-6.0773219e+00 -3.5220087e+02 1.4796061e+00
+-5.1116365e+00 -2.8583574e+02 1.6934690e+00
+-3.9803731e+00 -2.0853673e+02 1.9457830e+00
+-2.8224447e+00 -1.3225201e+02 2.4995772e+00
+-1.7490837e+00 -6.8625136e+01 3.4361930e+00
+-8.7027135e-01 -2.5942812e+01 4.6594466e+00
+-3.5423864e-01 -4.9978642e+00 5.2672153e+00
+-4.1886250e-01 -1.9675642e+00 6.9793692e+00
+-7.8746444e-01 -1.3561152e+00 9.3204422e+00
+-1.9031617e+00 -1.5789213e+00 1.2827491e+01
+-2.7736744e+01 -1.4632745e+01 1.7658121e+01
+-1.7128051e+02 -6.5150728e+01 0.0000000e+00
+-7.3737659e-05 -5.4061933e-04 -3.7806090e-04
+-1.3737481e-03 -8.9902294e-03 -7.2245828e-03
+-2.3023468e-02 -1.2727763e-01 -1.0401933e-01
+-3.8768046e-01 -1.7655194e+00 -1.0903784e+00
+-1.2316118e+01 -3.6408928e+01 -1.1519702e+00
+-3.6160364e+01 -1.1132370e+02 -3.1820678e-01
+-6.7375749e+01 -2.0553646e+02 1.4642224e+00
+-9.7953909e+01 -2.9463013e+02 4.0132489e+00
+-1.2095374e+02 -3.5835070e+02 6.8381200e+00
+-1.3209583e+02 -3.8546936e+02 9.7348494e+00
+-1.3020577e+02 -3.7501392e+02 1.2679412e+01
+-1.1693424e+02 -3.3339028e+02 1.5639056e+01
+-9.5683784e+01 -2.7049342e+02 1.8540449e+01
+-7.0454096e+01 -1.9738575e+02 2.1420259e+01
+-4.5283884e+01 -1.2553803e+02 2.4374577e+01
+-2.3893438e+01 -6.5567322e+01 2.7158778e+01
+-9.3400124e+00 -2.4304915e+01 2.9026048e+01
+-9.1841278e-01 -3.9785666e+00 2.9202645e+01
+-1.0792904e+00 -2.1440671e+00 3.1346926e+01
+-1.8468324e+00 -1.7280599e+00 3.5122528e+01
+-3.4418856e+00 -2.1717764e+00 4.1081906e+01
+-2.0381448e+01 -2.2631414e+01 3.1350877e+01
+-1.5091179e+02 -9.8129757e+01 0.0000000e+00
+-1.8581116e-04 -3.0836133e-04 -2.1550159e-04
+-3.6029037e-03 -5.3654145e-03 -3.4997160e-03
+-6.3070819e-02 -8.4540910e-02 -3.9951426e-02
+-1.1029588e+00 -1.3926232e+00 -2.9707255e-01
+-3.3396190e+01 -3.2354561e+01 -2.8884741e-02
+-8.5732395e+01 -1.0153758e+02 2.6502203e+00
+-1.5190951e+02 -1.8780287e+02 7.8655756e+00
+-2.1586389e+02 -2.6886701e+02 1.5089661e+01
+-2.6378880e+02 -3.2648451e+02 2.3596271e+01
+-2.8729781e+02 -3.5081930e+02 3.2819588e+01
+-2.8416880e+02 -3.4122007e+02 4.2270747e+01
+-2.5737909e+02 -3.0346674e+02 5.1469979e+01
+-2.1328257e+02 -2.4643065e+02 5.9954279e+01
+-1.5988267e+02 -1.8012979e+02 6.7278957e+01
+-1.0562576e+02 -1.1483793e+02 7.2964855e+01
+-5.8429532e+01 -5.9782994e+01 7.6551618e+01
+-2.4932917e+01 -2.1084596e+01 7.8746873e+01
+-1.8240531e+00 -2.8692971e+00 7.9536459e+01
+-1.7651608e+00 -1.6135845e+00 8.2188316e+01
+-2.9134331e+00 -1.4936824e+00 8.7328825e+01
+-4.9124337e+00 -2.2342185e+00 9.5469729e+01
+-1.0278449e+01 -2.7083256e+01 6.3137361e+01
+-1.3678858e+02 -1.2078594e+02 0.0000000e+00
+-3.4521153e-04 -1.9362620e-04 -8.4559594e-05
+-6.7689296e-03 -3.6363833e-03 -1.1963612e-03
+-1.1975391e-01 -6.3086561e-02 -1.1192154e-02
+-2.1110442e+00 -1.1294111e+00 -6.2044696e-02
+-6.2668447e+01 -2.6811487e+01 2.0535293e+00
+-1.5155222e+02 -8.6131489e+01 7.5544771e+00
+-2.6208060e+02 -1.5992671e+02 1.7338722e+01
+-3.6838148e+02 -2.2891597e+02 3.0922812e+01
+-4.4820622e+02 -2.7772483e+02 4.7238047e+01
+-4.8794452e+02 -2.9823742e+02 6.5128297e+01
+-4.8383072e+02 -2.9002114e+02 8.3433490e+01
+-4.4036624e+02 -2.5796848e+02 1.0102085e+02
+-3.6758504e+02 -2.0956193e+02 1.1682814e+02
+-2.7846828e+02 -1.5326311e+02 1.2988957e+02
+-1.8692161e+02 -9.7669701e+01 1.3942540e+02
+-1.0609144e+02 -5.0425080e+01 1.4525712e+02
+-4.7073077e+01 -1.7011997e+01 1.4936440e+02
+-2.8327557e+00 -1.9939593e+00 1.5086519e+02
+-2.2219126e+00 -1.0884228e+00 1.5427183e+02
+-3.6145410e+00 -1.1573514e+00 1.6057158e+02
+-5.7406024e+00 -2.1037384e+00 1.6993696e+02
+2.4698705e+00 -3.0890338e+01 1.1074797e+02
+-1.4603384e+02 -1.3481221e+02 0.0000000e+00
+-5.2310163e-04 -1.2728625e-04 -2.2113665e-05
+-1.0290301e-02 -2.5149172e-03 -2.3788379e-04
+-1.8257296e-01 -4.5663014e-02 -8.3576227e-04
+-3.2250614e+00 -8.3972675e-01 2.1370834e-02
+-9.4757774e+01 -2.0070035e+01 4.3155578e+00
+-2.2212893e+02 -6.5591676e+01 1.3147396e+01
+-3.7903226e+02 -1.2228038e+02 2.7916322e+01
+-5.2955989e+02 -1.7509100e+02 4.8307142e+01
+-6.4279275e+02 -2.1231921e+02 7.2966047e+01
+-6.9968638e+02 -2.2789450e+02 1.0014095e+02
+-6.9478614e+02 -2.2155422e+02 1.2797151e+02
+-6.3410744e+02 -1.9703943e+02 1.5464078e+02
+-5.3147465e+02 -1.6005144e+02 1.7847455e+02
+-4.0501249e+02 -1.1702860e+02 1.9802716e+02
+-2.7428106e+02 -7.4469345e+01 2.1229555e+02
+-1.5785595e+02 -3.8144955e+01 2.2132563e+02
+-7.1436555e+01 -1.2488995e+01 2.2770112e+02
+-3.8135859e+00 -1.3527957e+00 2.2969330e+02
+-2.4896225e+00 -7.3580094e-01 2.3363286e+02
+-4.0111572e+00 -8.6278636e-01 2.4062088e+02
+-6.0326221e+00 -1.8216129e+00 2.5015810e+02
+1.6178698e+01 -3.2200346e+01 1.5874707e+02
+-1.8337675e+02 -1.3454884e+02 0.0000000e+00
+-6.8394299e-04 -7.4739668e-05 3.6679807e-06
+-1.3467741e-02 -1.5098250e-03 1.4919744e-04
+-2.3915560e-01 -2.7852614e-02 3.6966048e-03
+-4.2273540e+00 -5.1566970e-01 7.5096317e-02
+-1.2351382e+02 -1.2417364e+01 6.2766431e+00
+-2.8462160e+02 -4.1040739e+01 1.8165709e+01
+-4.8199442e+02 -7.6750405e+01 3.7387305e+01
+-6.7107311e+02 -1.0994749e+02 6.3772940e+01
+-8.1345358e+02 -1.3329040e+02 9.5759261e+01
+-8.8537429e+02 -1.4302086e+02 1.3110583e+02
+-8.7988229e+02 -1.3900427e+02 1.6735773e+02
+-8.0427819e+02 -1.2359544e+02 2.0210701e+02
+-6.7566155e+02 -1.0037144e+02 2.3314767e+02
+-5.1661389e+02 -7.3363464e+01 2.5862022e+02
+-3.5160597e+02 -4.6622422e+01 2.7732255e+02
+-2.0393750e+02 -2.3753634e+01 2.8941193e+02
+-9.3306986e+01 -7.6535282e+00 2.9771581e+02
+-4.6657507e+00 -8.2818238e-01 2.9997985e+02
+-2.6799465e+00 -4.8205523e-01 3.0422089e+02
+-4.2871584e+00 -6.0371233e-01 3.1163166e+02
+-6.1368878e+00 -1.3665974e+00 3.2090726e+02
+2.8689022e+01 -2.6086671e+01 1.9409752e+02
+-2.3627473e+02 -1.0697645e+02 0.0000000e+00
+-7.9536887e-04 -2.4829402e-05 1.4249154e-05
+-1.5666858e-02 -5.0523698e-04 3.2200607e-04
+-2.7828648e-01 -9.3613704e-03 6.1690593e-03
+-4.9201967e+00 -1.7352223e-01 1.1420882e-01
+-1.4335029e+02 -4.2020576e+00 7.5967742e+00
+-3.2745560e+02 -1.3966314e+01 2.1603581e+01
+-5.5234476e+02 -2.6162415e+01 4.3881725e+01
+-7.6761513e+02 -3.7489482e+01 7.4350958e+01
+-9.2980415e+02 -4.5443889e+01 1.1131891e+02
+-1.0119545e+03 -4.8752907e+01 1.5222744e+02
+-1.0060881e+03 -4.7376123e+01 1.9422490e+02
+-9.2036739e+02 -4.2118132e+01 2.3450253e+02
+-7.7410631e+02 -3.4198727e+01 2.7048984e+02
+-5.9290491e+02 -2.4990708e+01 3.0004196e+02
+-4.0456440e+02 -1.5870568e+01 3.2181409e+02
+-2.3559299e+02 -8.0657257e+00 3.3600617e+02
+-1.0840635e+02 -2.5836184e+00 3.4553909e+02
+-5.2574706e+00 -2.8884345e-01 3.4789076e+02
+-2.8179710e+00 -1.8225132e-01 3.5222352e+02
+-4.4887335e+00 -2.3751511e-01 3.5979255e+02
+-6.2205388e+00 -5.4405724e-01 3.6861216e+02
+3.6758550e+01 -1.0329714e+01 2.1405387e+02
+-2.8657708e+02 -4.2594457e+01 0.0000000e+00
+-8.3513931e-04 2.4829402e-05 1.7268893e-05
+-1.6451477e-02 5.0523698e-04 3.7538149e-04
+-2.9224379e-01 9.3613704e-03 7.0252415e-03
+-5.1672765e+00 1.7352223e-01 1.2911976e-01
+-1.5041781e+02 4.2020576e+00 8.0613449e+00
+-3.4267433e+02 1.3966314e+01 2.2822045e+01
+-5.7730499e+02 2.6162415e+01 4.6185291e+01
+-8.0184437e+02 3.7489482e+01 7.8099352e+01
+-9.7104392e+02 4.5443889e+01 1.1682813e+02
+-1.0568169e+03 4.8752907e+01 1.5970337e+02
+-1.0508216e+03 4.7376123e+01 2.0373413e+02
+-9.6152364e+02 4.2118132e+01 2.4596964e+02
+-8.0901917e+02 3.4198727e+01 2.8370951e+02
+-6.1997493e+02 2.4990708e+01 3.1470668e+02
+-4.2336986e+02 1.5870568e+01 3.3756394e+02
+-2.4684755e+02 8.0657257e+00 3.5249028e+02
+-1.1378587e+02 2.5836184e+00 3.6243020e+02
+-5.4697689e+00 2.8884343e-01 3.6478084e+02
+-2.8698427e+00 1.8225086e-01 3.6910074e+02
+-4.5650806e+00 2.3750558e-01 3.7666026e+02
+-6.2640099e+00 5.4423195e-01 3.8520671e+02
+3.9046948e+01 1.0346153e+01 2.2030866e+02
+-3.0942209e+02 4.2636938e+01 0.0000000e+00
+-7.9536887e-04 7.4739668e-05 1.4249154e-05
+-1.5666858e-02 1.5098250e-03 3.2200607e-04
+-2.7828648e-01 2.7852614e-02 6.1690593e-03
+-4.9201967e+00 5.1566970e-01 1.1420882e-01
+-1.4335029e+02 1.2417364e+01 7.5967742e+00
+-3.2745560e+02 4.1040739e+01 2.1603581e+01
+-5.5234476e+02 7.6750405e+01 4.3881725e+01
+-7.6761513e+02 1.0994749e+02 7.4350958e+01
+-9.2980415e+02 1.3329040e+02 1.1131891e+02
+-1.0119545e+03 1.4302086e+02 1.5222744e+02
+-1.0060881e+03 1.3900427e+02 1.9422490e+02
+-9.2036739e+02 1.2359544e+02 2.3450253e+02
+-7.7410631e+02 1.0037144e+02 2.7048984e+02
+-5.9290491e+02 7.3363464e+01 3.0004196e+02
+-4.0456440e+02 4.6622422e+01 3.2181409e+02
+-2.3559299e+02 2.3753634e+01 3.3600617e+02
+-1.0840635e+02 7.6535282e+00 3.4553909e+02
+-5.2574706e+00 8.2818239e-01 3.4789076e+02
+-2.8179704e+00 4.8205537e-01 3.5222352e+02
+-4.4887147e+00 6.0371510e-01 3.5979257e+02
+-6.2196420e+00 1.3663703e+00 3.6861255e+02
+3.6794731e+01 2.6049488e+01 2.1398480e+02
+-2.8649520e+02 1.0696326e+02 0.0000000e+00
+-6.8394299e-04 1.2728625e-04 3.6679807e-06
+-1.3467741e-02 2.5149172e-03 1.4919744e-04
+-2.3915560e-01 4.5663014e-02 3.6966048e-03
+-4.2273540e+00 8.3972675e-01 7.5096317e-02
+-1.2351382e+02 2.0070035e+01 6.2766431e+00
+-2.8462160e+02 6.5591676e+01 1.8165709e+01
+-4.8199442e+02 1.2228038e+02 3.7387305e+01
+-6.7107311e+02 1.7509100e+02 6.3772940e+01
+-8.1345358e+02 2.1231921e+02 9.5759261e+01
+-8.8537429e+02 2.2789450e+02 1.3110583e+02
+-8.7988229e+02 2.2155422e+02 1.6735773e+02
+-8.0427819e+02 1.9703943e+02 2.0210701e+02
+-6.7566155e+02 1.6005144e+02 2.3314767e+02
+-5.1661389e+02 1.1702860e+02 2.5862022e+02
+-3.5160597e+02 7.4469345e+01 2.7732255e+02
+-2.0393750e+02 3.8144955e+01 2.8941193e+02
+-9.3306986e+01 1.2488995e+01 2.9771581e+02
+-4.6657507e+00 1.3527957e+00 2.9997985e+02
+-2.6799457e+00 7.3580131e-01 3.0422088e+02
+-4.2871213e+00 8.6279853e-01 3.1163172e+02
+-6.1358139e+00 1.8217886e+00 3.2090166e+02
+2.8756123e+01 3.2228883e+01 1.9401983e+02
+-2.3616294e+02 1.3453986e+02 0.0000000e+00
+-5.2310163e-04 1.9362620e-04 -2.2113665e-05
+-1.0290301e-02 3.6363833e-03 -2.3788379e-04
+-1.8257296e-01 6.3086561e-02 -8.3576227e-04
+-3.2250614e+00 1.1294111e+00 2.1370834e-02
+-9.4757774e+01 2.6811487e+01 4.3155578e+00
+-2.2212893e+02 8.6131489e+01 1.3147396e+01
+-3.7903226e+02 1.5992671e+02 2.7916322e+01
+-5.2955989e+02 2.2891597e+02 4.8307142e+01
+-6.4279275e+02 2.7772483e+02 7.2966047e+01
+-6.9968638e+02 2.9823742e+02 1.0014095e+02
+-6.9478614e+02 2.9002114e+02 1.2797151e+02
+-6.3410744e+02 2.5796848e+02 1.5464078e+02
+-5.3147465e+02 2.0956193e+02 1.7847455e+02
+-4.0501249e+02 1.5326311e+02 1.9802716e+02
+-2.7428106e+02 9.7669701e+01 2.1229555e+02
+-1.5785595e+02 5.0425080e+01 2.2132563e+02
+-7.1436555e+01 1.7011997e+01 2.2770112e+02
+-3.8135859e+00 1.9939593e+00 2.2969330e+02
+-2.4896218e+00 1.0884233e+00 2.3363286e+02
+-4.0111331e+00 1.1573599e+00 2.4062094e+02
+-6.0326543e+00 2.1037512e+00 2.5016046e+02
+1.6196230e+01 3.0889167e+01 1.5869655e+02
+-1.8328003e+02 1.3478290e+02 0.0000000e+00
+-3.4521153e-04 3.0836133e-04 -8.4559594e-05
+-6.7689296e-03 5.3654145e-03 -1.1963612e-03
+-1.1975391e-01 8.4540910e-02 -1.1192154e-02
+-2.1110442e+00 1.3926232e+00 -6.2044696e-02
+-6.2668447e+01 3.2354561e+01 2.0535293e+00
+-1.5155222e+02 1.0153758e+02 7.5544771e+00
+-2.6208060e+02 1.8780287e+02 1.7338722e+01
+-3.6838148e+02 2.6886701e+02 3.0922812e+01
+-4.4820622e+02 3.2648451e+02 4.7238047e+01
+-4.8794452e+02 3.5081930e+02 6.5128297e+01
+-4.8383072e+02 3.4122007e+02 8.3433490e+01
+-4.4036624e+02 3.0346674e+02 1.0102085e+02
+-3.6758504e+02 2.4643065e+02 1.1682814e+02
+-2.7846828e+02 1.8012979e+02 1.2988957e+02
+-1.8692161e+02 1.1483793e+02 1.3942540e+02
+-1.0609144e+02 5.9782994e+01 1.4525712e+02
+-4.7073077e+01 2.1084596e+01 1.4936440e+02
+-2.8327558e+00 2.8692971e+00 1.5086519e+02
+-2.2219130e+00 1.6135848e+00 1.5427183e+02
+-3.6145214e+00 1.4936983e+00 1.6057154e+02
+-5.7397405e+00 2.2349646e+00 1.6993922e+02
+2.4882537e+00 2.7099841e+01 1.1073086e+02
+-1.4599055e+02 1.2084270e+02 0.0000000e+00
+-1.8581116e-04 5.4061933e-04 -2.1550159e-04
+-3.6029037e-03 8.9902294e-03 -3.4997160e-03
+-6.3070819e-02 1.2727763e-01 -3.9951426e-02
+-1.1029588e+00 1.7655194e+00 -2.9707255e-01
+-3.3396190e+01 3.6408928e+01 -2.8884742e-02
+-8.5732395e+01 1.1132370e+02 2.6502203e+00
+-1.5190951e+02 2.0553646e+02 7.8655756e+00
+-2.1586389e+02 2.9463013e+02 1.5089661e+01
+-2.6378880e+02 3.5835070e+02 2.3596271e+01
+-2.8729781e+02 3.8546936e+02 3.2819588e+01
+-2.8416880e+02 3.7501392e+02 4.2270747e+01
+-2.5737909e+02 3.3339028e+02 5.1469979e+01
+-2.1328257e+02 2.7049342e+02 5.9954279e+01
+-1.5988267e+02 1.9738575e+02 6.7278957e+01
+-1.0562576e+02 1.2553803e+02 7.2964855e+01
+-5.8429532e+01 6.5567322e+01 7.6551618e+01
+-2.4932917e+01 2.4304915e+01 7.8746873e+01
+-1.8240532e+00 3.9785666e+00 7.9536459e+01
+-1.7651627e+00 2.1440675e+00 8.2188311e+01
+-2.9134525e+00 1.7281220e+00 8.7328790e+01
+-4.9124096e+00 2.1724070e+00 9.5465491e+01
+-1.0267089e+01 2.2657911e+01 6.3115062e+01
+-1.3676010e+02 9.8187704e+01 0.0000000e+00
+-7.3737659e-05 9.2540399e-04 -3.7806090e-04
+-1.3737481e-03 1.5971403e-02 -7.2245828e-03
+-2.3023468e-02 2.2651718e-01 -1.0401933e-01
+-3.8768046e-01 2.7959301e+00 -1.0903784e+00
+-1.2316118e+01 3.8218093e+01 -1.1519702e+00
+-3.6160364e+01 1.1623685e+02 -3.1820680e-01
+-6.7375749e+01 2.1503871e+02 1.4642224e+00
+-9.7953909e+01 3.0903443e+02 4.0132489e+00
+-1.2095374e+02 3.7704898e+02 6.8381201e+00
+-1.3209583e+02 4.0660258e+02 9.7348494e+00
+-1.3020577e+02 3.9604918e+02 1.2679412e+01
+-1.1693424e+02 3.5220087e+02 1.5639056e+01
+-9.5683784e+01 2.8583574e+02 1.8540449e+01
+-7.0454096e+01 2.0853673e+02 2.1420259e+01
+-4.5283884e+01 1.3225201e+02 2.4374577e+01
+-2.3893438e+01 6.8625136e+01 2.7158778e+01
+-9.3400123e+00 2.5942811e+01 2.9026048e+01
+-9.1841283e-01 4.9978643e+00 2.9202645e+01
+-1.0792936e+00 1.9675657e+00 3.1346930e+01
+-1.8469739e+00 1.3561533e+00 3.5121839e+01
+-3.4421309e+00 1.5854249e+00 4.1076039e+01
+-2.0385799e+01 1.4766885e+01 3.1259089e+01
+-1.5090587e+02 6.5280275e+01 0.0000000e+00
+-1.8613476e-05 1.1885169e-03 -2.6152576e-04
+-3.0118996e-04 2.1677460e-02 -5.9347498e-03
+-4.0571145e-03 3.2406349e-01 -1.0289760e-01
+-4.8182073e-02 4.1084186e+00 -1.4067435e+00
+-4.5648623e-01 3.8649248e+01 -1.7506235e+00
+-1.4053485e+00 1.1638103e+02 -1.5084667e+00
+-2.8024278e+00 2.1538770e+02 -8.0599182e-01
+-4.3548251e+00 3.1022058e+02 5.4692298e-02
+-5.7200169e+00 3.7964384e+02 6.4086873e-01
+-6.5588582e+00 4.1036328e+02 9.6516087e-01
+-6.6515994e+00 4.0021405e+02 1.2158201e+00
+-6.0773219e+00 3.5615214e+02 1.4796060e+00
+-5.1116364e+00 2.8939236e+02 1.6934690e+00
+-3.9803731e+00 2.1151891e+02 1.9457831e+00
+-2.8224445e+00 1.3431307e+02 2.4995775e+00
+-1.7490835e+00 6.9593252e+01 3.4361886e+00
+-8.7027266e-01 2.5867286e+01 4.6594510e+00
+-3.5423805e-01 4.9932045e+00 5.2672151e+00
+-4.1886306e-01 1.0244968e+00 6.9793732e+00
+-7.8751672e-01 4.5397433e-01 9.3205341e+00
+-1.9058415e+00 6.1574723e-01 1.2801302e+01
+-2.7642104e+01 7.7321960e+00 1.7421315e+01
+-1.7122695e+02 3.9688229e+01 0.0000000e+00
+-3.6673937e-06 9.7980191e-04 2.0915461e-04
+-5.8741935e-05 1.9049764e-02 2.8545673e-03
+-8.2207104e-04 3.0530836e-01 2.2067211e-02
+-1.0346122e-02 4.1244590e+00 1.4293448e-02
+-9.4968007e-02 3.9395293e+01 -6.3913387e-01
+-4.0109001e-01 1.1731576e+02 -1.0835159e+00
+-1.0571654e+00 2.1642689e+02 -6.4992489e-01
+-2.0109801e+00 3.1251776e+02 7.3637460e-02
+-3.0679017e+00 3.8409069e+02 4.6783455e-01
+-3.8875464e+00 4.1657478e+02 5.8476673e-01
+-4.1544028e+00 4.0701219e+02 6.8902285e-01
+-3.9118490e+00 3.6256933e+02 8.9179889e-01
+-3.4512688e+00 2.9523176e+02 1.0118219e+00
+-2.9388847e+00 2.1663487e+02 1.0701797e+00
+-2.3766273e+00 1.3827314e+02 1.3641856e+00
+-1.7330202e+00 7.2293157e+01 1.8104280e+00
+-1.0103164e+00 2.7793575e+01 1.7395787e+00
+-3.9089424e-01 6.4432761e+00 1.0124672e+00
+-1.9682339e-01 1.1686732e+00 1.2304534e+00
+-2.6733121e-01 2.2324507e-01 1.9379917e+00
+-9.7585830e-01 1.8216563e-01 3.3690294e+00
+-2.8215777e+01 4.5395924e+00 1.2751627e+01
+-1.5875155e+02 2.7894372e+01 0.0000000e+00
+-1.1098226e-06 4.0695345e-04 5.7349887e-04
+-2.8172039e-05 8.8634035e-03 1.0787231e-02
+-6.2952080e-04 1.6584542e-01 1.5100614e-01
+-1.1809351e-02 2.8151361e+00 1.4758278e+00
+-1.5493256e-01 4.0626835e+01 4.5729229e-01
+-6.6187931e-01 1.1948819e+02 -7.3021637e-01
+-1.7324907e+00 2.1893866e+02 -5.0574413e-01
+-3.2780330e+00 3.1720376e+02 2.0404208e-01
+-4.9795403e+00 3.9219435e+02 5.4244795e-01
+-6.2990178e+00 4.2742547e+02 5.8271580e-01
+-6.7359823e+00 4.1872683e+02 6.8982855e-01
+-6.3463946e+00 3.7354886e+02 1.0217806e+00
+-5.6040844e+00 3.0519574e+02 1.2019072e+00
+-4.7935005e+00 2.2546524e+02 1.1495685e+00
+-3.9032043e+00 1.4536141e+02 1.2615535e+00
+-2.8708937e+00 7.7391444e+01 1.4836703e+00
+-1.7220654e+00 3.1274110e+01 1.1972505e+00
+-7.2033782e-01 8.5514674e+00 4.1313125e-01
+-2.4549370e-01 1.7953296e+00 2.2510108e-01
+-1.2018181e-01 2.8725433e-01 3.5837090e-01
+-4.6145300e-01 -6.2598088e-02 9.3519447e-01
+-1.7691233e+01 1.8442069e+00 8.7640590e+00
+-9.5196643e+01 1.1717408e+01 0.0000000e+00
+-5.3057006e-07 0.0000000e+00 4.0751849e-04
+-1.8005551e-05 0.0000000e+00 9.2932538e-03
+-4.9245129e-04 0.0000000e+00 1.7576568e-01
+-1.1117057e-02 0.0000000e+00 3.0032905e+00
+-1.9045225e-01 4.1879088e+01 1.7841022e+00
+-6.4916134e-01 1.2152148e+02 -2.2204898e-01
+-1.9123059e+00 2.2043317e+02 -4.5627859e-01
+-4.1799791e+00 3.2083330e+02 6.1231501e-01
+-6.6927265e+00 4.0047019e+02 1.2136429e+00
+-8.7324087e+00 4.3990490e+02 1.0497738e+00
+-9.8876449e+00 4.3289597e+02 1.5649958e+00
+-9.6257453e+00 3.8744437e+02 2.6866387e+00
+-8.5233224e+00 3.1872322e+02 2.7452642e+00
+-7.6879765e+00 2.3832210e+02 2.2082116e+00
+-6.7526855e+00 1.5625491e+02 2.3477944e+00
+-5.0716178e+00 8.5644527e+01 2.4166325e+00
+-3.2082099e+00 3.7043511e+01 1.5420531e+00
+-1.7782194e+00 1.1932535e+01 4.2775301e-01
+-9.1569208e-01 3.0839162e+00 5.1476333e-02
+-4.4872401e-01 6.0712241e-01 8.1595767e-02
+-3.5970594e-01 -3.9325273e-01 6.5788348e-01
+-5.1975302e+00 0.0000000e+00 3.2082885e+00
+-2.6497691e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.4003948e-01 1.5668265e+01 1.5745375e+01
+1.1267701e+01 6.1195441e+01 1.0935879e+01
+2.6810792e+01 1.0188846e+02 -5.8896603e+00
+3.0666559e+01 1.3740209e+02 1.0852835e+01
+4.0130492e+01 1.8320421e+02 2.7477087e+01
+4.7032293e+01 2.1520579e+02 1.9501425e+01
+2.6910232e+01 2.2046560e+02 3.8792829e+01
+1.4482050e+01 2.1254531e+02 7.0298953e+01
+1.8744445e+01 1.9536378e+02 5.7162839e+01
+-7.9574928e-01 1.6090439e+02 3.6891964e+01
+-2.5084509e+01 1.1011740e+02 4.8384283e+01
+-2.1215930e+01 6.4292736e+01 4.7743623e+01
+-1.7497797e+01 3.8420298e+01 1.9504440e+01
+-2.6870786e+01 2.3787731e+01 1.7054263e-01
+-2.7066207e+01 1.3359930e+01 -2.6183165e+00
+-1.7711901e+01 7.0381046e+00 -1.2157295e+00
+-6.4589699e+00 2.1882381e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.3542663e+01 0.0000000e+00 4.1289763e+01
+-2.0196911e+02 0.0000000e+00 5.1138523e+01
+-3.4255691e+02 0.0000000e+00 -1.0740315e+01
+-4.9817174e+02 0.0000000e+00 3.9496268e+01
+-5.4012740e+02 0.0000000e+00 1.2171313e+02
+-5.0582799e+02 0.0000000e+00 9.0478214e+01
+-5.2902946e+02 0.0000000e+00 1.5411194e+02
+-4.5567056e+02 0.0000000e+00 2.8974572e+02
+-2.7839414e+02 0.0000000e+00 2.4337821e+02
+-2.3718421e+02 0.0000000e+00 1.6229468e+02
+-2.5302069e+02 0.0000000e+00 2.1493442e+02
+-1.6420375e+02 0.0000000e+00 2.0753105e+02
+-1.1424564e+02 0.0000000e+00 8.2804543e+01
+-1.5298380e+02 0.0000000e+00 3.3435840e+00
+-1.4808190e+02 0.0000000e+00 -8.1442855e+00
+-9.3604568e+01 0.0000000e+00 -4.5754181e+00
+-3.2805986e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.5275336e+02 -5.6854046e+01 3.6001997e+01
+-3.8553610e+02 -2.0411670e+02 6.3975512e+01
+-6.2385810e+02 -3.5625727e+02 2.0032518e+01
+-9.9530621e+02 -4.7886421e+02 3.7359943e+01
+-1.2103535e+03 -5.6499495e+02 1.3038585e+02
+-1.1857982e+03 -5.8557073e+02 1.6257861e+02
+-1.2379081e+03 -5.4816243e+02 2.0028569e+02
+-1.1678243e+03 -4.7707638e+02 3.0673788e+02
+-7.9959647e+02 -3.7906728e+02 3.2509243e+02
+-5.9961564e+02 -2.6935328e+02 2.5813619e+02
+-6.1963860e+02 -1.6172083e+02 2.6031800e+02
+-4.4128601e+02 -8.0138539e+01 2.5251396e+02
+-2.1670144e+02 -3.9722891e+01 1.3377513e+02
+-2.1232742e+02 -2.5864780e+01 2.0466632e+01
+-2.3129853e+02 -1.8418520e+01 -1.0948429e+01
+-1.5630507e+02 -1.1252629e+01 -6.1280600e+00
+-5.5925533e+01 -3.5127108e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-2.4533784e+01 -4.7449412e+01 1.5013295e+01
+-5.6583964e+01 -1.3458794e+02 1.3323632e+01
+-7.9950577e+01 -2.3602511e+02 -9.4167192e-02
+-1.2298483e+02 -3.3294432e+02 7.6316145e+00
+-1.3585019e+02 -4.0417458e+02 2.2791041e+01
+-1.0828580e+02 -4.3299471e+02 2.5499735e+01
+-1.1169279e+02 -4.1905650e+02 3.5036198e+01
+-1.1031774e+02 -3.7209701e+02 5.4892462e+01
+-5.8648938e+01 -3.0251616e+02 5.2493838e+01
+-3.6957397e+01 -2.1854642e+02 3.8620155e+01
+-5.6632406e+01 -1.3327003e+02 4.3043592e+01
+-3.8258558e+01 -6.3055512e+01 4.5341810e+01
+-1.2096179e+01 -2.0295558e+01 2.2338296e+01
+-2.7752518e+01 -3.4760201e+00 1.0953655e+00
+-4.1756537e+01 -6.8200253e-02 -3.1418687e+00
+-3.0494075e+01 1.0270731e-01 -1.3058916e+00
+-1.1731376e+01 4.4884359e-01 0.0000000e+00
+0 0 0
+0 0 0
+5.6025200e-06 -4.9801706e-04 4.9188404e-04
+1.6600974e-04 -1.0807210e-02 1.1115086e-02
+4.1615531e-03 -2.0074536e-01 2.0720671e-01
+9.0890512e-02 -3.3636378e+00 3.4688534e+00
+1.4796983e+00 -4.7475616e+01 1.8254995e+00
+4.6697064e+00 -1.3749509e+02 -5.8657780e-01
+8.9898598e+00 -2.4678610e+02 -7.2795293e-01
+1.2560388e+01 -3.5054114e+02 1.2836573e-01
+1.4662961e+01 -4.2569357e+02 2.9168736e-01
+1.5150727e+01 -4.5664872e+02 6.2461203e-02
+1.3628388e+01 -4.4281020e+02 3.0098409e-01
+1.1054284e+01 -3.9330092e+02 8.2598323e-01
+8.4906210e+00 -3.1930372e+02 6.0056244e-01
+5.5078168e+00 -2.3136381e+02 -1.1526380e-01
+2.6793908e+00 -1.4276313e+02 -1.8264797e-02
+1.2232519e+00 -6.9620393e+01 3.5265517e-01
+4.6913708e-01 -2.3657233e+01 1.0248571e-01
+-3.3416132e-01 -4.5585172e+00 -2.4707564e-01
+-6.9966816e-01 -3.7542965e-01 -1.7121566e-01
+-5.7413913e-01 8.0354597e-02 -2.7439632e-02
+-6.3968950e-01 1.6356863e-01 5.3867707e-01
+-7.5466127e+00 -1.2984824e+00 4.2593597e+00
+-3.5155481e+01 -8.4835818e+00 0.0000000e+00
+9.9084563e-06 -1.2030894e-03 6.9405405e-04
+2.6282805e-04 -2.3367455e-02 1.2963301e-02
+5.6124219e-03 -3.7340151e-01 1.7937757e-01
+9.7078204e-02 -5.0151492e+00 1.7220022e+00
+1.1283945e+00 -4.7453739e+01 4.1680936e-01
+3.3619058e+00 -1.4002856e+02 -1.0735085e+00
+6.1883297e+00 -2.5498608e+02 -7.9436760e-01
+8.7250445e+00 -3.6328122e+02 -5.7376386e-02
+1.0033571e+01 -4.4083648e+02 7.2420344e-02
+9.9513830e+00 -4.7280828e+02 -1.8420233e-02
+9.0231166e+00 -4.5862833e+02 4.0633740e-02
+7.4761119e+00 -4.0722971e+02 1.4693548e-01
+5.4419457e+00 -3.3021883e+02 1.6014934e-02
+3.4865874e+00 -2.3945553e+02 -1.7443980e-01
+2.0180904e+00 -1.4885659e+02 -1.3167314e-03
+9.7870754e-01 -7.3849778e+01 3.8060578e-01
+3.0580124e-01 -2.5675317e+01 3.7217750e-01
+3.2733354e-02 -4.9522517e+00 1.3529901e-02
+-2.0423781e-04 -5.9056106e-01 -1.7070215e-02
+-1.1949014e-02 1.3773129e-02 -5.8517886e-02
+-5.0180590e-01 3.8494919e-02 1.0706722e-01
+-2.5979939e+01 -5.5446661e+00 1.2704329e+01
+-1.3320949e+02 -3.1917327e+01 0.0000000e+00
+6.1478629e-06 -1.4617094e-03 2.4880479e-04
+1.8280473e-04 -2.6672656e-02 3.3124596e-03
+3.9259062e-03 -3.9851918e-01 2.3682161e-02
+6.3606222e-02 -5.0431943e+00 -2.2225007e-02
+6.5057463e-01 -4.7353786e+01 -8.6772176e-01
+1.9728150e+00 -1.4183190e+02 -1.4382929e+00
+3.6520194e+00 -2.6022898e+02 -9.0456806e-01
+5.1594961e+00 -3.7126154e+02 -9.4722270e-02
+5.9244243e+00 -4.5014105e+02 2.1753147e-01
+5.8575861e+00 -4.8260895e+02 2.7306409e-01
+5.3047305e+00 -4.6816880e+02 3.5440226e-01
+4.3907295e+00 -4.1559785e+02 4.1996436e-01
+3.1878051e+00 -3.3679108e+02 3.5314813e-01
+2.0514142e+00 -2.4444224e+02 3.4954930e-01
+1.2127828e+00 -1.5282298e+02 7.2657075e-01
+6.0431556e-01 -7.6769844e+01 1.3093594e+00
+1.9514737e-01 -2.6923109e+01 1.3517601e+00
+3.1833344e-02 -4.7058748e+00 6.8266824e-01
+2.2696936e-02 -6.9909059e-01 5.7194646e-01
+2.1727192e-02 -6.4399420e-03 3.0307847e-01
+-6.6293638e-01 1.0307206e-01 -7.4727578e-02
+-4.2807247e+01 -1.1148624e+01 2.0201304e+01
+-2.4203642e+02 -6.6396248e+01 0.0000000e+00
+-1.4303704e-05 -1.1384996e-03 -3.2751957e-04
+-1.8973074e-04 -1.9672867e-02 -7.4387676e-03
+-1.8376679e-03 -2.7914240e-01 -1.2903499e-01
+-1.3795672e-02 -3.4425874e+00 -1.7640283e+00
+-1.1184263e-01 -4.7242898e+01 -2.2195591e+00
+-2.9018563e-01 -1.4323807e+02 -1.9285456e+00
+-5.5707534e-01 -2.6334715e+02 -1.0557351e+00
+-8.8513380e-01 -3.7574806e+02 -3.8910680e-02
+-1.3283810e+00 -4.5515472e+02 5.8311410e-01
+-1.7777138e+00 -4.8773781e+02 9.3083584e-01
+-2.0002360e+00 -4.7309787e+02 1.2085473e+00
+-1.9962728e+00 -4.1989232e+02 1.4219686e+00
+-1.8496965e+00 -3.4019261e+02 1.5615519e+00
+-1.5036216e+00 -2.4718885e+02 1.8314170e+00
+-9.8864386e-01 -1.5533636e+02 2.5109962e+00
+-4.9927371e-01 -7.9107046e+01 3.5984076e+00
+-1.6391074e-01 -2.8828963e+01 4.7979011e+00
+2.0920308e-02 -5.1884051e+00 4.9052963e+00
+8.0157772e-02 -1.5292131e+00 5.2363991e+00
+1.2849144e-01 -3.8459201e-01 4.6987663e+00
+-4.0624119e-01 9.5244151e-02 3.2096552e+00
+-4.3315924e+01 -1.8423333e+01 2.6017623e+01
+-2.9988873e+02 -1.0899678e+02 0.0000000e+00
+-7.9124866e-05 -6.6482776e-04 -4.6828467e-04
+-1.4727820e-03 -1.1077687e-02 -8.9644305e-03
+-2.4781519e-02 -1.5715406e-01 -1.2919472e-01
+-4.2272860e-01 -2.1854595e+00 -1.3512745e+00
+-1.4052023e+01 -4.5378724e+01 -1.4795442e+00
+-4.1767392e+01 -1.3865922e+02 -4.5137365e-01
+-7.7803148e+01 -2.5514117e+02 1.7700461e+00
+-1.1266789e+02 -3.6416662e+02 4.9025961e+00
+-1.3859872e+02 -4.4094102e+02 8.3338839e+00
+-1.5096550e+02 -4.7241554e+02 1.1881287e+01
+-1.4856798e+02 -4.5835708e+02 1.5502713e+01
+-1.3343485e+02 -4.0699026e+02 1.9101253e+01
+-1.0932377e+02 -3.3008555e+02 2.2634183e+01
+-8.0432451e+01 -2.4076057e+02 2.6184257e+01
+-5.1284349e+01 -1.5288090e+02 2.9729261e+01
+-2.6331410e+01 -7.9478602e+01 3.2538789e+01
+-9.0044820e+00 -2.9039581e+01 3.2413878e+01
+-1.1608427e-01 -4.1780460e+00 3.0601190e+01
+3.1252101e-01 -1.5483290e+00 2.9228494e+01
+5.0258892e-01 -3.9150229e-01 2.6885979e+01
+4.7345771e-01 1.9958878e-01 2.2870396e+01
+-3.2193743e+01 -2.5390524e+01 4.1648996e+01
+-3.2505053e+02 -1.5199188e+02 0.0000000e+00
+-2.0520263e-04 -3.7866410e-04 -2.6677219e-04
+-3.9968625e-03 -6.6050890e-03 -4.3454117e-03
+-7.0386710e-02 -1.0437833e-01 -4.9805248e-02
+-1.2397691e+00 -1.7251491e+00 -3.7330528e-01
+-3.8703963e+01 -4.0363243e+01 -8.1012499e-02
+-1.0095914e+02 -1.2672520e+02 3.2117109e+00
+-1.7966197e+02 -2.3382757e+02 9.6505816e+00
+-2.5530615e+02 -3.3363018e+02 1.8556394e+01
+-3.1154345e+02 -4.0365743e+02 2.9027458e+01
+-3.3875147e+02 -4.3232703e+02 4.0392604e+01
+-3.3464967e+02 -4.1953437e+02 5.2050756e+01
+-3.0299783e+02 -3.7272121e+02 6.3400448e+01
+-2.5120535e+02 -3.0264515e+02 7.3882828e+01
+-1.8835957e+02 -2.2131680e+02 8.2915964e+01
+-1.2416145e+02 -1.4114282e+02 8.9713566e+01
+-6.7836355e+01 -7.3397620e+01 9.3039407e+01
+-2.6793059e+01 -2.5640205e+01 9.1500172e+01
+-4.4681483e-01 -2.8835058e+00 8.8828394e+01
+7.6503965e-01 -8.7880119e-01 8.5628666e+01
+1.2638339e+00 -2.3673656e-02 8.1083548e+01
+1.9354386e+00 3.4089680e-01 7.4094440e+01
+-2.3496473e+01 -2.8895219e+01 9.0835448e+01
+-3.6248983e+02 -1.8090650e+02 0.0000000e+00
+-3.8150069e-04 -2.3714656e-04 -1.0522838e-04
+-7.5127495e-03 -4.4651028e-03 -1.5013947e-03
+-1.3360815e-01 -7.7690215e-02 -1.4335266e-02
+-2.3689043e+00 -1.3951241e+00 -8.6500112e-02
+-7.2178069e+01 -3.3424802e+01 2.4846804e+00
+-1.7752805e+02 -1.0750111e+02 9.2364150e+00
+-3.0875134e+02 -1.9920302e+02 2.1282595e+01
+-4.3448220e+02 -2.8425820e+02 3.8011330e+01
+-5.2824774e+02 -3.4370428e+02 5.8099700e+01
+-5.7434620e+02 -3.6796303e+02 8.0137392e+01
+-5.6888792e+02 -3.5704379e+02 1.0270402e+02
+-5.1754276e+02 -3.1724948e+02 1.2440882e+02
+-4.3205627e+02 -2.5770976e+02 1.4394465e+02
+-3.2730885e+02 -1.8859593e+02 1.6006435e+02
+-2.1928647e+02 -1.2027927e+02 1.7156566e+02
+-1.2321831e+02 -6.2081135e+01 1.7737605e+02
+-5.1548059e+01 -2.0751670e+01 1.7696250e+02
+-9.0415662e-01 -1.8897451e+00 1.7404014e+02
+1.4437123e+00 -3.6242205e-01 1.6985814e+02
+2.4419373e+00 1.8542848e-01 1.6359255e+02
+3.9126583e+00 2.5072004e-01 1.5402956e+02
+-2.4385959e+01 -3.0145076e+01 1.8215185e+02
+-4.2961147e+02 -1.8942522e+02 0.0000000e+00
+-5.7656086e-04 -1.5539976e-04 -2.8287571e-05
+-1.1386716e-02 -3.0778589e-03 -3.1911628e-04
+-2.0298089e-01 -5.6035763e-02 -1.5656331e-03
+-3.6041838e+00 -1.0333112e+00 1.5743888e-02
+-1.0843716e+02 -2.4995734e+01 5.2660655e+00
+-2.5862525e+02 -8.1834381e+01 1.6095658e+01
+-4.4409940e+02 -1.5228404e+02 3.4243818e+01
+-6.2148496e+02 -2.1740488e+02 5.9315580e+01
+-7.5406077e+02 -2.6276062e+02 8.9639939e+01
+-8.1988914e+02 -2.8119107e+02 1.2307074e+02
+-8.1331697e+02 -2.7277452e+02 1.5733231e+02
+-7.4189523e+02 -2.4233070e+02 1.9020132e+02
+-6.2176931e+02 -1.9683035e+02 2.1961656e+02
+-4.7370711e+02 -1.4401573e+02 2.4373099e+02
+-3.2014632e+02 -9.1718819e+01 2.6103580e+02
+-1.8253739e+02 -4.6971575e+01 2.7060768e+02
+-7.8519131e+01 -1.5221718e+01 2.7216030e+02
+-1.3555869e+00 -1.2322585e+00 2.6904481e+02
+2.2891063e+00 -1.6133639e-01 2.6406500e+02
+3.9179601e+00 1.6312921e-01 2.5615818e+02
+6.2226669e+00 1.9934182e-02 2.4412799e+02
+-3.4407054e+01 -2.9033002e+01 2.9360436e+02
+-5.3147248e+02 -1.7752528e+02 0.0000000e+00
+-7.5191237e-04 -9.0997968e-05 3.5675909e-06
+-1.4860358e-02 -1.8424739e-03 1.6079963e-04
+-2.6503829e-01 -3.4074413e-02 4.0821380e-03
+-4.7072987e+00 -6.3243842e-01 8.3154045e-02
+-1.4064632e+02 -1.5452180e+01 7.6721008e+00
+-3.2983520e+02 -5.1185339e+01 2.2236660e+01
+-5.6230243e+02 -9.5559420e+01 4.5820051e+01
+-7.8438128e+02 -1.3649154e+02 7.8214885e+01
+-9.5056755e+02 -1.6492787e+02 1.1749610e+02
+-1.0335481e+03 -1.7643957e+02 1.6091842e+02
+-1.0261090e+03 -1.7111081e+02 2.0548145e+02
+-9.3739561e+02 -1.5197511e+02 2.4824326e+02
+-7.8733115e+02 -1.2340898e+02 2.8649150e+02
+-6.0174377e+02 -9.0259505e+01 3.1786515e+02
+-4.0863722e+02 -5.7405740e+01 3.4058332e+02
+-2.3484059e+02 -2.9238105e+01 3.5375293e+02
+-1.0245577e+02 -9.3108855e+00 3.5699088e+02
+-1.6931001e+00 -7.4313615e-01 3.5352911e+02
+3.1600729e+00 -1.2267869e-01 3.4765043e+02
+5.4307948e+00 3.0098234e-02 3.3806553e+02
+8.5169872e+00 -1.8537666e-01 3.2361694e+02
+-4.9357858e+01 -2.2154167e+01 3.9484311e+02
+-6.6059690e+02 -1.3490375e+02 0.0000000e+00
+-8.7291591e-04 -3.0183842e-05 1.6732909e-05
+-1.7254157e-02 -6.1554246e-04 3.7710038e-04
+-3.0775148e-01 -1.1432416e-02 7.2001009e-03
+-5.4658256e+00 -2.1241168e-01 1.3280222e-01
+-1.6273140e+02 -5.2266963e+00 9.2884233e+00
+-3.7837231e+02 -1.7415046e+01 2.6434842e+01
+-6.4264003e+02 -3.2569309e+01 5.3740000e+01
+-8.9494126e+02 -4.6534584e+01 9.1109176e+01
+-1.0838609e+03 -5.6223646e+01 1.3646169e+02
+-1.1784589e+03 -6.0137522e+01 1.8666408e+02
+-1.1704568e+03 -5.8311470e+01 2.3823341e+02
+-1.0700686e+03 -5.1781904e+01 2.8774144e+02
+-8.9976366e+02 -4.2041546e+01 3.3203135e+02
+-6.8878107e+02 -3.0740812e+01 3.6838881e+02
+-4.6888060e+02 -1.9537021e+01 3.9483629e+02
+-2.7051937e+02 -9.9243986e+00 4.1044896e+02
+-1.1879196e+02 -3.1383312e+00 4.1466201e+02
+-1.8697944e+00 -2.5836061e-01 4.1078956e+02
+3.8532062e+00 -5.9764922e-02 4.0405547e+02
+6.6250015e+00 -2.2404587e-02 3.9299409e+02
+1.0259359e+01 -1.3027750e-01 3.7645894e+02
+-6.5531671e+01 -8.4329321e+00 4.6502745e+02
+-7.8902089e+02 -5.1881766e+01 0.0000000e+00
+-9.1601784e-04 3.0183842e-05 2.0510844e-05
+-1.8106343e-02 6.1554246e-04 4.4429171e-04
+-3.2294907e-01 1.1432416e-02 8.2847394e-03
+-5.7355915e+00 2.1241168e-01 1.5177640e-01
+-1.7057594e+02 5.2266963e+00 9.8565157e+00
+-3.9556880e+02 1.7415046e+01 2.7920890e+01
+-6.7106810e+02 3.2569309e+01 5.6545382e+01
+-9.3403984e+02 4.6534584e+01 9.5671680e+01
+-1.1309860e+03 5.6223646e+01 1.4316650e+02
+-1.2296876e+03 6.0137522e+01 1.9576213e+02
+-1.2214889e+03 5.8311470e+01 2.4980643e+02
+-1.1169802e+03 5.1781904e+01 3.0169915e+02
+-9.3952862e+02 4.2041546e+01 3.4812552e+02
+-7.1957602e+02 3.0740812e+01 3.8624497e+02
+-4.9020654e+02 1.9537021e+01 4.1400761e+02
+-2.8315554e+02 9.9243986e+00 4.3046680e+02
+-1.2456813e+02 3.1383312e+00 4.3497239e+02
+-1.9173374e+00 2.5836058e-01 4.3090324e+02
+4.1256425e+00 5.9763787e-02 4.2378822e+02
+7.0917228e+00 2.2374753e-02 4.1208664e+02
+1.0911825e+01 1.2982357e-01 3.9465097e+02
+-7.3563625e+01 8.4260463e+00 4.9040290e+02
+-8.4846403e+02 5.1905971e+01 0.0000000e+00
+-8.7291591e-04 9.0997968e-05 1.6732909e-05
+-1.7254157e-02 1.8424739e-03 3.7710038e-04
+-3.0775148e-01 3.4074413e-02 7.2001009e-03
+-5.4658256e+00 6.3243842e-01 1.3280222e-01
+-1.6273140e+02 1.5452180e+01 9.2884233e+00
+-3.7837231e+02 5.1185339e+01 2.6434842e+01
+-6.4264003e+02 9.5559420e+01 5.3740000e+01
+-8.9494126e+02 1.3649154e+02 9.1109176e+01
+-1.0838609e+03 1.6492787e+02 1.3646169e+02
+-1.1784589e+03 1.7643957e+02 1.8666408e+02
+-1.1704568e+03 1.7111081e+02 2.3823341e+02
+-1.0700686e+03 1.5197511e+02 2.8774144e+02
+-8.9976366e+02 1.2340898e+02 3.3203135e+02
+-6.8878107e+02 9.0259505e+01 3.6838881e+02
+-4.6888060e+02 5.7405740e+01 3.9483629e+02
+-2.7051937e+02 2.9238105e+01 4.1044896e+02
+-1.1879196e+02 9.3108855e+00 4.1466201e+02
+-1.8697943e+00 7.4313615e-01 4.1078956e+02
+3.8532073e+00 1.2267890e-01 4.0405547e+02
+6.6249960e+00 -3.0088694e-02 3.9299411e+02
+1.0260023e+01 1.8517825e-01 3.7645904e+02
+-6.5469895e+01 2.2152049e+01 4.6499630e+02
+-7.8897044e+02 1.3492004e+02 0.0000000e+00
+-7.5191237e-04 1.5539976e-04 3.5675909e-06
+-1.4860358e-02 3.0778589e-03 1.6079963e-04
+-2.6503829e-01 5.6035763e-02 4.0821380e-03
+-4.7072987e+00 1.0333112e+00 8.3154045e-02
+-1.4064632e+02 2.4995734e+01 7.6721008e+00
+-3.2983520e+02 8.1834381e+01 2.2236660e+01
+-5.6230243e+02 1.5228404e+02 4.5820051e+01
+-7.8438128e+02 2.1740488e+02 7.8214885e+01
+-9.5056755e+02 2.6276062e+02 1.1749610e+02
+-1.0335481e+03 2.8119107e+02 1.6091842e+02
+-1.0261090e+03 2.7277452e+02 2.0548145e+02
+-9.3739561e+02 2.4233070e+02 2.4824326e+02
+-7.8733115e+02 1.9683035e+02 2.8649150e+02
+-6.0174377e+02 1.4401573e+02 3.1786515e+02
+-4.0863722e+02 9.1718819e+01 3.4058332e+02
+-2.3484059e+02 4.6971575e+01 3.5375293e+02
+-1.0245577e+02 1.5221718e+01 3.5699088e+02
+-1.6931000e+00 1.2322585e+00 3.5352911e+02
+3.1600727e+00 1.6133668e-01 3.4765043e+02
+5.4308186e+00 -1.6312206e-01 3.3806553e+02
+8.5178259e+00 -2.0455610e-02 3.2361737e+02
+-4.9290615e+01 2.9028802e+01 3.9478737e+02
+-6.6046868e+02 1.7752810e+02 0.0000000e+00
+-5.7656086e-04 2.3714656e-04 -2.8287571e-05
+-1.1386716e-02 4.4651028e-03 -3.1911628e-04
+-2.0298089e-01 7.7690215e-02 -1.5656331e-03
+-3.6041838e+00 1.3951241e+00 1.5743888e-02
+-1.0843716e+02 3.3424802e+01 5.2660655e+00
+-2.5862525e+02 1.0750111e+02 1.6095658e+01
+-4.4409940e+02 1.9920302e+02 3.4243818e+01
+-6.2148496e+02 2.8425820e+02 5.9315580e+01
+-7.5406077e+02 3.4370428e+02 8.9639939e+01
+-8.1988914e+02 3.6796303e+02 1.2307074e+02
+-8.1331697e+02 3.5704379e+02 1.5733231e+02
+-7.4189523e+02 3.1724948e+02 1.9020132e+02
+-6.2176931e+02 2.5770976e+02 2.1961656e+02
+-4.7370711e+02 1.8859593e+02 2.4373099e+02
+-3.2014632e+02 1.2027927e+02 2.6103580e+02
+-1.8253739e+02 6.2081135e+01 2.7060768e+02
+-7.8519131e+01 2.0751670e+01 2.7216030e+02
+-1.3555869e+00 1.8897450e+00 2.6904481e+02
+2.2891072e+00 3.6242102e-01 2.6406500e+02
+3.9179632e+00 -1.8544877e-01 2.5615807e+02
+6.2237873e+00 -2.5082582e-01 2.4413210e+02
+-3.4369722e+01 3.0133275e+01 2.9359303e+02
+-5.3142658e+02 1.8941060e+02 0.0000000e+00
+-3.8150069e-04 3.7866410e-04 -1.0522838e-04
+-7.5127495e-03 6.6050890e-03 -1.5013947e-03
+-1.3360815e-01 1.0437833e-01 -1.4335266e-02
+-2.3689043e+00 1.7251491e+00 -8.6500112e-02
+-7.2178069e+01 4.0363243e+01 2.4846804e+00
+-1.7752805e+02 1.2672520e+02 9.2364150e+00
+-3.0875134e+02 2.3382757e+02 2.1282595e+01
+-4.3448220e+02 3.3363018e+02 3.8011330e+01
+-5.2824774e+02 4.0365743e+02 5.8099700e+01
+-5.7434620e+02 4.3232703e+02 8.0137392e+01
+-5.6888792e+02 4.1953437e+02 1.0270402e+02
+-5.1754276e+02 3.7272121e+02 1.2440882e+02
+-4.3205627e+02 3.0264515e+02 1.4394465e+02
+-3.2730885e+02 2.2131680e+02 1.6006435e+02
+-2.1928647e+02 1.4114282e+02 1.7156566e+02
+-1.2321831e+02 7.3397620e+01 1.7737605e+02
+-5.1548059e+01 2.5640205e+01 1.7696250e+02
+-9.0415661e-01 2.8835058e+00 1.7404014e+02
+1.4437129e+00 8.7880159e-01 1.6985814e+02
+2.4419427e+00 2.3666840e-02 1.6359255e+02
+3.9127478e+00 -3.4053034e-01 1.5402994e+02
+-2.4382281e+01 2.8910928e+01 1.8212038e+02
+-4.2957332e+02 1.8102292e+02 0.0000000e+00
+-2.0520263e-04 6.6482776e-04 -2.6677219e-04
+-3.9968625e-03 1.1077687e-02 -4.3454117e-03
+-7.0386710e-02 1.5715406e-01 -4.9805248e-02
+-1.2397691e+00 2.1854595e+00 -3.7330528e-01
+-3.8703963e+01 4.5378724e+01 -8.1012500e-02
+-1.0095914e+02 1.3865922e+02 3.2117109e+00
+-1.7966197e+02 2.5514117e+02 9.6505816e+00
+-2.5530615e+02 3.6416662e+02 1.8556394e+01
+-3.1154345e+02 4.4094102e+02 2.9027458e+01
+-3.3875147e+02 4.7241554e+02 4.0392604e+01
+-3.3464967e+02 4.5835708e+02 5.2050756e+01
+-3.0299783e+02 4.0699026e+02 6.3400448e+01
+-2.5120535e+02 3.3008555e+02 7.3882828e+01
+-1.8835957e+02 2.4076057e+02 8.2915964e+01
+-1.2416145e+02 1.5288090e+02 8.9713566e+01
+-6.7836355e+01 7.9478602e+01 9.3039407e+01
+-2.6793059e+01 2.9039581e+01 9.1500172e+01
+-4.4681476e-01 4.1780461e+00 8.8828394e+01
+7.6504266e-01 1.5483300e+00 8.5628660e+01
+1.2639758e+00 3.9154579e-01 8.1083664e+01
+1.9402246e+00 -2.0006185e-01 7.4090366e+01
+-2.3446728e+01 2.5420091e+01 9.0750139e+01
+-3.6242470e+02 1.5212971e+02 0.0000000e+00
+-7.9124866e-05 1.1384996e-03 -4.6828467e-04
+-1.4727820e-03 1.9672867e-02 -8.9644305e-03
+-2.4781519e-02 2.7914240e-01 -1.2919472e-01
+-4.2272860e-01 3.4425874e+00 -1.3512745e+00
+-1.4052023e+01 4.7242898e+01 -1.4795442e+00
+-4.1767392e+01 1.4323807e+02 -4.5137367e-01
+-7.7803148e+01 2.6334715e+02 1.7700461e+00
+-1.1266789e+02 3.7574806e+02 4.9025961e+00
+-1.3859872e+02 4.5515472e+02 8.3338839e+00
+-1.5096550e+02 4.8773781e+02 1.1881287e+01
+-1.4856798e+02 4.7309787e+02 1.5502713e+01
+-1.3343485e+02 4.1989232e+02 1.9101253e+01
+-1.0932377e+02 3.4019261e+02 2.2634183e+01
+-8.0432451e+01 2.4718885e+02 2.6184257e+01
+-5.1284349e+01 1.5533636e+02 2.9729261e+01
+-2.6331410e+01 7.9107046e+01 3.2538789e+01
+-9.0044820e+00 2.8828962e+01 3.2413878e+01
+-1.1608418e-01 5.1884052e+00 3.0601190e+01
+3.1252403e-01 1.5292169e+00 2.9228486e+01
+5.0271584e-01 3.8471764e-01 2.6885620e+01
+4.7882693e-01 -9.1232953e-02 2.2871550e+01
+-3.2089168e+01 1.8507405e+01 4.1487896e+01
+-3.2500825e+02 1.0906251e+02 0.0000000e+00
+-1.4303702e-05 1.4617094e-03 -3.2751957e-04
+-1.8973072e-04 2.6672656e-02 -7.4387676e-03
+-1.8376677e-03 3.9851918e-01 -1.2903499e-01
+-1.3795669e-02 5.0431943e+00 -1.7640283e+00
+-1.1184262e-01 4.7353786e+01 -2.2195591e+00
+-2.9018564e-01 1.4183190e+02 -1.9285457e+00
+-5.5707535e-01 2.6022898e+02 -1.0557351e+00
+-8.8513381e-01 3.7126154e+02 -3.8910595e-02
+-1.3283810e+00 4.5014105e+02 5.8311416e-01
+-1.7777138e+00 4.8260895e+02 9.3083588e-01
+-2.0002360e+00 4.6816880e+02 1.2085472e+00
+-1.9962728e+00 4.1559785e+02 1.4219686e+00
+-1.8496964e+00 3.3679108e+02 1.5615518e+00
+-1.5036216e+00 2.4444224e+02 1.8314171e+00
+-9.8864387e-01 1.5282298e+02 2.5109965e+00
+-4.9927367e-01 7.6769828e+01 3.5984050e+00
+-1.6391004e-01 2.6923099e+01 4.7979054e+00
+2.0920462e-02 4.7058536e+00 4.9052961e+00
+8.0158893e-02 6.9908970e-01 5.2364014e+00
+1.2848331e-01 6.4065546e-03 4.6987150e+00
+-4.0748084e-01 -1.0488065e-01 3.2139297e+00
+-4.3457934e+01 1.1001093e+01 2.5667830e+01
+-2.9986601e+02 6.6351515e+01 0.0000000e+00
+6.1478837e-06 1.2030894e-03 2.4880476e-04
+1.8280520e-04 2.3367455e-02 3.3124596e-03
+3.9259119e-03 3.7340150e-01 2.3682149e-02
+6.3606263e-02 5.0151494e+00 -2.2225043e-02
+6.5057467e-01 4.7453741e+01 -8.6772303e-01
+1.9728149e+00 1.4002856e+02 -1.4382952e+00
+3.6520189e+00 2.5498607e+02 -9.0456809e-01
+5.1594959e+00 3.6328122e+02 -9.4719702e-02
+5.9244246e+00 4.4083648e+02 2.1753318e-01
+5.8575862e+00 4.7280828e+02 2.7306509e-01
+5.3047303e+00 4.5862833e+02 3.5440219e-01
+4.3907294e+00 4.0722971e+02 4.1996357e-01
+3.1878054e+00 3.3021882e+02 3.5314793e-01
+2.0514132e+00 2.3945554e+02 3.4955154e-01
+1.2127833e+00 1.4885655e+02 7.2657314e-01
+6.0430604e-01 7.3849681e+01 1.3093935e+00
+1.9514919e-01 2.5675279e+01 1.3518180e+00
+3.1877620e-02 4.9521714e+00 6.8272855e-01
+2.2713568e-02 5.9033999e-01 5.7194095e-01
+2.1796946e-02 -1.3975689e-02 3.0319731e-01
+-6.6171412e-01 -4.2481250e-02 -7.3528065e-02
+-4.2809879e+01 5.4207028e+00 2.0099180e+01
+-2.4210770e+02 3.1946779e+01 0.0000000e+00
+9.9085204e-06 4.9801710e-04 6.9405398e-04
+2.6282965e-04 1.0807212e-02 1.2963295e-02
+5.6124596e-03 2.0074545e-01 1.7937769e-01
+9.7078350e-02 3.3636382e+00 1.7220013e+00
+1.1284000e+00 4.7475622e+01 4.1678181e-01
+3.3619044e+00 1.3749514e+02 -1.0735739e+00
+6.1883089e+00 2.4678606e+02 -7.9434317e-01
+8.7250306e+00 3.5054113e+02 -5.7311568e-02
+1.0033582e+01 4.2569357e+02 7.2462958e-02
+9.9513816e+00 4.5664875e+02 -1.8401942e-02
+9.0231210e+00 4.4281018e+02 4.0643005e-02
+7.4760989e+00 3.9330088e+02 1.4689637e-01
+5.4419606e+00 3.1930364e+02 1.6031397e-02
+3.4865442e+00 2.3136372e+02 -1.7217516e-01
+2.0184954e+00 1.4276212e+02 5.5753015e-04
+9.7812235e-01 6.9619696e+01 3.8201293e-01
+3.0569970e-01 2.3655977e+01 3.7353982e-01
+3.3898076e-02 4.5573558e+00 1.4127057e-02
+1.4414823e-03 3.7504056e-01 -1.7507251e-02
+-1.1673907e-02 -8.0847328e-02 -5.9183624e-02
+-5.0089115e-01 -1.6775082e-01 1.0559812e-01
+-2.6035011e+01 1.2011251e+00 1.2669308e+01
+-1.3384933e+02 8.6261228e+00 0.0000000e+00
+5.6025333e-06 0.0000000e+00 4.9188395e-04
+1.6601074e-04 0.0000000e+00 1.1115080e-02
+4.1616033e-03 0.0000000e+00 2.0720653e-01
+9.0894786e-02 0.0000000e+00 3.4688368e+00
+1.4799671e+00 4.7448826e+01 1.8253106e+00
+4.6695960e+00 1.3458968e+02 -5.8816003e-01
+8.9892047e+00 2.3602351e+02 -7.2710917e-01
+1.2559901e+01 3.3294406e+02 1.3016700e-01
+1.4663581e+01 4.0417468e+02 2.9300278e-01
+1.5150514e+01 4.3299591e+02 6.3006564e-02
+1.3628490e+01 4.1905936e+02 3.0146141e-01
+1.1054045e+01 3.7209753e+02 8.2491196e-01
+8.4904406e+00 3.0250914e+02 6.0039395e-01
+5.5415496e+00 2.1877154e+02 -3.6814746e-02
+2.6926004e+00 1.3324843e+02 4.1173595e-02
+1.1987903e+00 6.3005595e+01 3.8477309e-01
+4.6917519e-01 2.0226196e+01 1.3759195e-01
+-2.9845232e-01 3.4408645e+00 -2.2579671e-01
+-6.4388440e-01 7.8116558e-02 -1.7872407e-01
+-5.5873474e-01 -1.0683107e-01 -4.2850561e-02
+-6.3716018e-01 -4.6117444e-01 5.2791797e-01
+-7.5756143e+00 0.0000000e+00 4.1089700e+00
+-3.5477964e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-2.4516886e+01 5.6926501e+01 1.5040138e+01
+-5.6608696e+01 2.0412243e+02 1.3302488e+01
+-7.9972150e+01 3.5616453e+02 -5.6656937e-02
+-1.2300143e+02 4.7887257e+02 7.6846574e+00
+-1.3582710e+02 5.6507624e+02 2.2826716e+01
+-1.0827671e+02 5.8561543e+02 2.5527664e+01
+-1.1171796e+02 5.4816191e+02 3.5050738e+01
+-1.1031434e+02 4.7711499e+02 5.4831994e+01
+-5.7852980e+01 3.7908355e+02 5.4856782e+01
+-3.5917959e+01 2.6742888e+02 4.1404882e+01
+-5.6236712e+01 1.6092078e+02 4.4885695e+01
+-3.8859807e+01 7.9409517e+01 4.6123886e+01
+-1.2371272e+01 3.7764141e+01 2.3456802e+01
+-2.6636319e+01 2.4726141e+01 1.9351760e+00
+-4.0125550e+01 1.8277033e+01 -3.2047507e+00
+-3.0145530e+01 1.0707491e+01 -1.5874411e+00
+-1.1656051e+01 3.1474675e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.5282511e+02 0.0000000e+00 3.6051487e+01
+-3.8558455e+02 0.0000000e+00 6.4035286e+01
+-6.2391185e+02 0.0000000e+00 2.0050684e+01
+-9.9535613e+02 0.0000000e+00 3.7367975e+01
+-1.2103652e+03 0.0000000e+00 1.3045823e+02
+-1.1857617e+03 0.0000000e+00 1.6264146e+02
+-1.2378891e+03 0.0000000e+00 2.0034316e+02
+-1.1678133e+03 0.0000000e+00 3.0668520e+02
+-7.9960586e+02 0.0000000e+00 3.2511935e+02
+-5.9958383e+02 0.0000000e+00 2.5815327e+02
+-6.1975095e+02 0.0000000e+00 2.6032166e+02
+-4.4122210e+02 0.0000000e+00 2.5278945e+02
+-2.1603513e+02 0.0000000e+00 1.3376091e+02
+-2.1255801e+02 0.0000000e+00 2.0523019e+01
+-2.3124608e+02 0.0000000e+00 -1.0831796e+01
+-1.5639450e+02 0.0000000e+00 -6.0943097e+00
+-5.5879789e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.0308513e+02 -1.0890757e+02 4.0152174e-01
+-2.5980487e+02 -3.7841375e+02 4.6882924e+01
+-3.6825534e+02 -6.7928769e+02 7.7886986e+01
+-5.6114555e+02 -9.6096264e+02 2.8602854e+01
+-8.1520440e+02 -1.1772331e+03 6.9807588e+01
+-9.2996378e+02 -1.2571886e+03 2.1622602e+02
+-9.5320188e+02 -1.2126349e+03 2.5484720e+02
+-9.3568481e+02 -1.0753872e+03 2.5752048e+02
+-7.4551199e+02 -8.6205468e+02 3.3932118e+02
+-5.7685175e+02 -6.2964607e+02 3.4773016e+02
+-5.9414482e+02 -4.2279206e+02 2.6170137e+02
+-4.8923905e+02 -2.5119862e+02 2.0155455e+02
+-2.6365403e+02 -1.3154151e+02 1.3485518e+02
+-2.2332106e+02 -6.7119260e+01 4.3869516e+01
+-2.5539507e+02 -3.5085015e+01 -8.5704387e+00
+-2.0004085e+02 -1.7367660e+01 -1.0720727e+01
+-8.3124769e+01 -5.0666818e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-5.6777323e+01 -8.9957938e+01 1.3355491e+01
+-1.7784340e+02 -2.5754574e+02 1.3749704e+01
+-3.0746975e+02 -4.5352231e+02 1.5505838e+01
+-4.4324475e+02 -6.3655857e+02 1.1402036e+01
+-5.5783678e+02 -7.6182189e+02 1.7977472e+01
+-5.9529036e+02 -8.0089829e+02 4.8730446e+01
+-5.7016742e+02 -7.6363883e+02 5.8208810e+01
+-5.1057735e+02 -6.7099448e+02 5.3874227e+01
+-4.0151043e+02 -5.3799534e+02 7.2676760e+01
+-2.9299454e+02 -3.8310839e+02 8.2177605e+01
+-2.3279599e+02 -2.3176782e+02 6.7317483e+01
+-1.6559324e+02 -1.1004712e+02 5.3500801e+01
+-9.0694314e+01 -3.5540352e+01 3.6097390e+01
+-6.6212146e+01 -5.9754209e+00 1.3375148e+01
+-6.2787512e+01 -2.1920064e-01 -4.6132467e-01
+-4.5100123e+01 4.7828334e-03 -1.7253057e+00
+-1.8801973e+01 2.7672437e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.7290079e-06 -7.7951404e-04 7.8784515e-04
+-8.1959579e-05 -1.7181964e-02 1.8217774e-02
+-2.2504923e-03 -3.2641602e-01 3.5104588e-01
+-6.3698891e-02 -5.6445279e+00 6.1501644e+00
+-2.1465609e+00 -8.3263890e+01 3.0823248e+00
+-6.4381144e+00 -2.4247771e+02 -8.7499990e-01
+-9.9756280e+00 -4.3487963e+02 -5.5452840e-01
+-1.0986949e+01 -6.1385227e+02 2.8653394e-01
+-9.7453385e+00 -7.3683300e+02 -2.9193504e-01
+-6.6518322e+00 -7.7918620e+02 -2.0145414e-01
+-3.0708850e+00 -7.4713336e+02 -5.6306220e-03
+-6.9377938e-01 -6.5875608e+02 -4.9615414e-01
+1.1126174e+00 -5.3042938e+02 -7.3737588e-01
+3.0024643e+00 -3.8076119e+02 -5.7931824e-01
+4.1551319e+00 -2.3353811e+02 -2.8462871e-01
+4.2486768e+00 -1.1347285e+02 1.1577484e-01
+3.1066775e+00 -3.8056476e+01 1.6070198e-01
+9.6171231e-01 -6.9790965e+00 -1.3162394e-01
+-3.9974579e-01 -5.2199497e-01 -1.2892110e-01
+-7.0808616e-01 6.6808967e-02 -5.6993018e-02
+-1.0674971e+00 1.4557896e-01 5.1026636e-01
+-1.1900806e+01 -4.4430772e-01 5.3066748e+00
+-4.8504912e+01 -1.5679292e+00 0.0000000e+00
+-5.2468658e-06 -1.8675353e-03 1.1031766e-03
+-1.3088179e-04 -3.6684441e-02 2.0999376e-02
+-2.7842618e-03 -5.9547539e-01 2.9845542e-01
+-4.9382016e-02 -8.1673099e+00 2.9676978e+00
+-5.8790487e-01 -7.9361976e+01 7.8208917e-01
+-1.7045839e+00 -2.3499905e+02 -1.6300738e+00
+-2.2114547e+00 -4.2703960e+02 -1.0703794e+00
+-1.1074426e+00 -6.0505344e+02 -3.6723594e-02
+1.0714318e+00 -7.2773801e+02 -1.6959527e-01
+3.4188510e+00 -7.7248953e+02 -3.3373441e-01
+5.2539020e+00 -7.4341309e+02 -2.8476605e-01
+5.8908212e+00 -6.5691941e+02 -5.3614748e-01
+5.6072388e+00 -5.3024122e+02 -8.8954873e-01
+5.3963530e+00 -3.8273505e+02 -8.2629742e-01
+5.2799778e+00 -2.3740023e+02 -2.2605843e-01
+4.4832789e+00 -1.1768392e+02 4.8089162e-01
+2.8593123e+00 -4.0657230e+01 5.2814365e-01
+1.2070047e+00 -7.6585959e+00 3.3383642e-02
+4.0814071e-01 -9.1048414e-01 1.3538481e-02
+1.5234274e-01 -1.6647579e-02 -6.4994361e-02
+-5.9090107e-01 1.1820607e-02 1.5777940e-01
+-3.7346565e+01 -6.8874347e+00 1.7960787e+01
+-1.5779177e+02 -2.2710664e+01 0.0000000e+00
+-8.1187770e-06 -2.2554468e-03 4.0217817e-04
+-1.5717796e-04 -4.1509701e-02 5.5674205e-03
+-2.6999585e-03 -6.2728131e-01 4.3999224e-02
+-4.0558872e-02 -8.0525314e+00 3.3385881e-02
+-4.1794347e-01 -7.6907636e+01 -1.3524362e+00
+-1.2498142e+00 -2.3089078e+02 -2.2380840e+00
+-1.7587753e+00 -4.2256455e+02 -1.3023438e+00
+-1.2597602e+00 -5.9983803e+02 -9.8495707e-02
+-3.9165409e-02 -7.2206853e+02 1.9561468e-01
+1.3558554e+00 -7.6806474e+02 2.7255364e-01
+2.5006177e+00 -7.4071180e+02 3.7537403e-01
+2.9650782e+00 -6.5535382e+02 2.3544095e-01
+2.9025930e+00 -5.2976865e+02 4.8083967e-02
+2.9028431e+00 -3.8379331e+02 2.5491180e-01
+2.9609838e+00 -2.3993079e+02 1.0374036e+00
+2.5729392e+00 -1.2062374e+02 2.0086005e+00
+1.6292900e+00 -4.2179236e+01 2.0964642e+00
+6.5868738e-01 -7.2819418e+00 1.0929563e+00
+3.5128971e-01 -1.1089779e+00 9.6325493e-01
+4.4273145e-01 -5.9016182e-02 5.8461938e-01
+-4.2655425e-01 -2.4875190e-02 3.8510267e-01
+-6.7689192e+01 -2.0823377e+01 3.9202531e+01
+-2.6979513e+02 -6.8279000e+01 0.0000000e+00
+-2.5569543e-05 -1.7481145e-03 -4.9606646e-04
+-4.3087146e-04 -3.0411033e-02 -1.1353594e-02
+-6.1733977e-03 -4.3515660e-01 -1.9914258e-01
+-7.9856013e-02 -5.4189653e+00 -2.7666483e+00
+-8.4943459e-01 -7.5429989e+01 -3.5067029e+00
+-2.5881759e+00 -2.2908599e+02 -3.0135016e+00
+-4.5284075e+00 -4.2002582e+02 -1.5808980e+00
+-5.8184623e+00 -5.9644297e+02 -4.2633576e-02
+-6.2575146e+00 -7.1797952e+02 7.9748612e-01
+-5.9619106e+00 -7.6440602e+02 1.3229645e+00
+-5.1518408e+00 -7.3796919e+02 1.7319590e+00
+-4.1793746e+00 -6.5335868e+02 1.9199216e+00
+-3.1205172e+00 -5.2867621e+02 2.0983024e+00
+-1.8277469e+00 -3.8402457e+02 2.6536883e+00
+-5.0854951e-01 -2.4158616e+02 3.8289627e+00
+3.6207791e-01 -1.2321916e+02 5.5630411e+00
+5.9945507e-01 -4.4841929e+01 7.4623682e+00
+5.0083165e-01 -8.0605752e+00 7.7611104e+00
+7.1172527e-01 -2.4609308e+00 8.4814960e+00
+1.3209116e+00 -7.0284498e-01 7.9328603e+00
+6.2726906e-01 -2.3694030e-01 7.1115597e+00
+-9.6212184e+01 -3.7779301e+01 7.6882767e+01
+-3.4468356e+02 -1.1537425e+02 0.0000000e+00
+-9.4506391e-05 -1.0156720e-03 -7.1706098e-04
+-1.7811339e-03 -1.7012871e-02 -1.3806872e-02
+-3.0262793e-02 -2.4274657e-01 -2.0073562e-01
+-5.1664112e-01 -3.3922355e+00 -2.1335529e+00
+-1.8249472e+01 -7.0992658e+01 -2.3734346e+00
+-5.5319651e+01 -2.1710665e+02 -8.0051826e-01
+-1.0293263e+02 -3.9829764e+02 2.6007858e+00
+-1.4785354e+02 -5.6593842e+02 7.2818866e+00
+-1.7997171e+02 -6.8166715e+02 1.2342500e+01
+-1.9398661e+02 -7.2671630e+02 1.7673890e+01
+-1.8933993e+02 -7.0269125e+02 2.3167897e+01
+-1.6920309e+02 -6.2303024e+02 2.8607704e+01
+-1.3815124e+02 -5.0531579e+02 3.4074755e+01
+-1.0111666e+02 -3.6901034e+02 3.9744742e+01
+-6.3780084e+01 -2.3479658e+02 4.5450899e+01
+-3.1894175e+01 -1.2229834e+02 5.0092841e+01
+-9.7036044e+00 -4.4692022e+01 5.0642056e+01
+6.0785105e-01 -6.5154853e+00 4.8373031e+01
+1.6755479e+00 -2.4936635e+00 4.7042737e+01
+2.9471373e+00 -6.8889930e-01 4.4584247e+01
+2.6679974e+00 -1.0962009e-01 4.2262953e+01
+-1.2142024e+02 -5.1663602e+01 1.4537129e+02
+-3.7280796e+02 -1.5901211e+02 0.0000000e+00
+-2.3580260e-04 -5.7467627e-04 -4.1039578e-04
+-4.6207808e-03 -1.0064480e-02 -6.7348685e-03
+-8.1923082e-02 -1.5971330e-01 -7.8231775e-02
+-1.4527710e+00 -2.6500810e+00 -6.0738443e-01
+-4.7316722e+01 -6.2696778e+01 -2.9050493e-01
+-1.2588129e+02 -1.9707986e+02 4.6048633e+00
+-2.2505783e+02 -3.6257648e+02 1.4279560e+01
+-3.1957287e+02 -5.1504993e+02 2.7657796e+01
+-3.8887594e+02 -6.2008515e+02 4.3408281e+01
+-4.2152089e+02 -6.6115023e+02 6.0611629e+01
+-4.1547574e+02 -6.3963065e+02 7.8377103e+01
+-3.7588447e+02 -5.6756613e+02 9.5799632e+01
+-3.1177400e+02 -4.6102564e+02 1.1207814e+02
+-2.3393989e+02 -3.3765279e+02 1.2630090e+02
+-1.5408312e+02 -2.1578787e+02 1.3721386e+02
+-8.3627787e+01 -1.1240411e+02 1.4311107e+02
+-3.1860505e+01 -3.9240855e+01 1.4272734e+02
+2.3659591e-01 -4.4577412e+00 1.3998619e+02
+2.3745910e+00 -1.3655930e+00 1.3724857e+02
+4.1703985e+00 3.3783170e-02 1.3361931e+02
+3.8620205e+00 3.4578611e-01 1.3123740e+02
+-1.5430493e+02 -5.6706829e+01 2.6711217e+02
+-3.8227645e+02 -1.9187742e+02 0.0000000e+00
+-4.3490084e-04 -3.5672053e-04 -1.6455559e-04
+-8.6123448e-03 -6.7387894e-03 -2.3906506e-03
+-1.5418025e-01 -1.1768334e-01 -2.3848505e-02
+-2.7534172e+00 -2.1214293e+00 -1.6798732e-01
+-8.6891909e+01 -5.1712740e+01 3.5618144e+00
+-2.1792426e+02 -1.6669859e+02 1.3576762e+01
+-3.8128552e+02 -3.0806081e+02 3.1595276e+01
+-5.3695015e+02 -4.3768308e+02 5.6696372e+01
+-6.5192307e+02 -5.2664868e+02 8.6935238e+01
+-7.0747932e+02 -5.6135840e+02 1.2027653e+02
+-6.9980442e+02 -5.4306927e+02 1.5463164e+02
+-6.3644852e+02 -4.8195561e+02 1.8792688e+02
+-5.3168061e+02 -3.9166287e+02 2.1818845e+02
+-4.0316996e+02 -2.8706553e+02 2.4346230e+02
+-2.7006921e+02 -1.8343316e+02 2.6189032e+02
+-1.5116584e+02 -9.4792674e+01 2.7222641e+02
+-6.2338207e+01 -3.1599600e+01 2.7537531e+02
+-8.0480613e-01 -2.8505834e+00 2.7366880e+02
+2.3773950e+00 -4.5427840e-01 2.7182380e+02
+4.3307964e+00 5.3688247e-01 2.6943185e+02
+3.0544872e+00 5.9154453e-01 2.7004402e+02
+-2.0241012e+02 -5.3655115e+01 4.4501868e+02
+-3.9622847e+02 -2.0023940e+02 0.0000000e+00
+-6.5421899e-04 -2.3146662e-04 -4.7595784e-05
+-1.2987517e-02 -4.5984180e-03 -5.8716614e-04
+-2.3294380e-01 -8.4007989e-02 -4.2996110e-03
+-4.1639861e+00 -1.5546596e+00 -1.1267063e-02
+-1.2933643e+02 -3.8551522e+01 7.7267778e+00
+-3.1471425e+02 -1.2666501e+02 2.3782198e+01
+-5.4409355e+02 -2.3513424e+02 5.0849777e+01
+-7.6245848e+02 -3.3424502e+02 8.8385237e+01
+-9.2425085e+02 -4.0202615e+02 1.3395280e+02
+-1.0033724e+03 -4.2835205e+02 1.8442967e+02
+-9.9415357e+02 -4.1427442e+02 2.3647142e+02
+-9.0657596e+02 -3.6756932e+02 2.8676586e+02
+-7.6018963e+02 -2.9865884e+02 3.3218214e+02
+-5.7959165e+02 -2.1883779e+02 3.6983894e+02
+-3.9157545e+02 -1.3960922e+02 3.9744414e+02
+-2.2258391e+02 -7.1544965e+01 4.1424295e+02
+-9.5401546e+01 -2.3054985e+01 4.2258075e+02
+-2.2046609e+00 -1.7729004e+00 4.2235214e+02
+1.9169149e+00 -4.5708376e-02 4.2231576e+02
+3.7644862e+00 6.4976549e-01 4.2235637e+02
+8.2192745e-01 6.2807654e-01 4.2772063e+02
+-2.6295472e+02 -4.4835386e+01 6.4753458e+02
+-4.2239824e+02 -1.8589099e+02 0.0000000e+00
+-8.5011662e-04 -1.3441593e-04 1.1535588e-06
+-1.6882059e-02 -2.7294639e-03 1.5389973e-04
+-3.0281120e-01 -5.0640770e-02 4.5595902e-03
+-5.4114665e+00 -9.4296465e-01 9.7032550e-02
+-1.6664053e+02 -2.3776803e+01 1.1316517e+01
+-3.9894640e+02 -7.9126075e+01 3.2888783e+01
+-6.8513104e+02 -1.4739690e+02 6.7980054e+01
+-9.5737222e+02 -2.0964223e+02 1.1636821e+02
+-1.1593974e+03 -2.5209704e+02 1.7526895e+02
+-1.2588005e+03 -2.6851539e+02 2.4068470e+02
+-1.2483006e+03 -2.5960799e+02 3.0820986e+02
+-1.1399543e+03 -2.3026806e+02 3.7346734e+02
+-9.5782258e+02 -1.8703940e+02 4.3233933e+02
+-7.3241900e+02 -1.3698314e+02 4.8115990e+02
+-4.9709647e+02 -8.7253839e+01 5.1726378e+02
+-2.8489012e+02 -4.4444915e+01 5.4021326e+02
+-1.2453832e+02 -1.4027542e+01 5.5326838e+02
+-3.4793481e+00 -9.9432163e-01 5.5427604e+02
+1.4579756e+00 5.3909201e-02 5.5587852e+02
+3.1870574e+00 4.8860492e-01 5.5828342e+02
+-1.5610842e+00 4.9849924e-01 5.6849209e+02
+-3.3088529e+02 -2.9364916e+01 8.3454920e+02
+-4.8530897e+02 -1.3856671e+02 0.0000000e+00
+-9.8459682e-04 -4.4374529e-05 2.1639516e-05
+-1.9550356e-02 -9.0746855e-04 4.9584327e-04
+-3.5058620e-01 -1.6905928e-02 9.5957198e-03
+-6.2629891e+00 -3.1506035e-01 1.7885492e-01
+-1.9201675e+02 -8.0324078e+00 1.3719812e+01
+-4.5596760e+02 -2.6903777e+01 3.9092808e+01
+-7.8038884e+02 -5.0210411e+01 7.9655132e+01
+-1.0888690e+03 -7.1438586e+01 1.3537925e+02
+-1.3179533e+03 -8.5896838e+01 2.0327152e+02
+-1.4310007e+03 -9.1474124e+01 2.7877205e+02
+-1.4196415e+03 -8.8422601e+01 3.5677137e+02
+-1.2973266e+03 -7.8413885e+01 4.3217515e+02
+-1.0911466e+03 -6.3679810e+01 5.0019854e+02
+-8.3558661e+02 -4.6623002e+01 5.5664396e+02
+-5.6840599e+02 -2.9671643e+01 5.9858716e+02
+-3.2706409e+02 -1.5068063e+01 6.2575503e+02
+-1.4428149e+02 -4.7107865e+00 6.4192781e+02
+-4.2920030e+00 -3.2516759e-01 6.4368086e+02
+1.2513649e+00 2.6037315e-02 6.4631058e+02
+2.9705416e+00 1.7477056e-01 6.5027880e+02
+-3.1870283e+00 1.9057106e-01 6.6403289e+02
+-3.9217806e+02 -9.9051034e+00 9.7121933e+02
+-5.7897776e+02 -5.1840747e+01 0.0000000e+00
+-1.0323649e-03 4.4374529e-05 2.7597998e-05
+-2.0497312e-02 9.0746855e-04 6.0363034e-04
+-3.6752597e-01 1.6905928e-02 1.1368670e-02
+-6.5646648e+00 3.1506035e-01 2.1032131e-01
+-2.0099317e+02 8.0324078e+00 1.4562737e+01
+-4.7609774e+02 2.6903777e+01 4.1284124e+01
+-8.1398576e+02 5.0210411e+01 8.3780965e+01
+-1.1352250e+03 7.1438586e+01 1.4208898e+02
+-1.3738352e+03 8.5896838e+01 2.1314447e+02
+-1.4916852e+03 9.1474124e+01 2.9219385e+02
+-1.4800217e+03 8.8422601e+01 3.7388149e+02
+-1.3527867e+03 7.8413885e+01 4.5286024e+02
+-1.1381377e+03 6.3679810e+01 5.2410966e+02
+-8.7195677e+02 4.6623002e+01 5.8324441e+02
+-5.9355358e+02 2.9671643e+01 6.2724816e+02
+-3.4194124e+02 1.5068063e+01 6.5589774e+02
+-1.5123397e+02 4.7107865e+00 6.7314201e+02
+-4.5584099e+00 3.2516756e-01 6.7513275e+02
+1.2170160e+00 -2.6037544e-02 6.7809346e+02
+2.9580063e+00 -1.7478794e-01 6.8257673e+02
+-3.7431987e+00 -1.9188273e-01 6.9761499e+02
+-4.1830871e+02 9.8639497e+00 1.0225907e+03
+-6.2801948e+02 5.1820225e+01 0.0000000e+00
+-9.8459682e-04 1.3441593e-04 2.1639516e-05
+-1.9550356e-02 2.7294639e-03 4.9584327e-04
+-3.5058620e-01 5.0640770e-02 9.5957198e-03
+-6.2629891e+00 9.4296465e-01 1.7885492e-01
+-1.9201675e+02 2.3776803e+01 1.3719812e+01
+-4.5596760e+02 7.9126075e+01 3.9092808e+01
+-7.8038884e+02 1.4739690e+02 7.9655132e+01
+-1.0888690e+03 2.0964223e+02 1.3537925e+02
+-1.3179533e+03 2.5209704e+02 2.0327152e+02
+-1.4310007e+03 2.6851539e+02 2.7877205e+02
+-1.4196415e+03 2.5960799e+02 3.5677137e+02
+-1.2973266e+03 2.3026806e+02 4.3217515e+02
+-1.0911466e+03 1.8703940e+02 5.0019854e+02
+-8.3558661e+02 1.3698314e+02 5.5664396e+02
+-5.6840599e+02 8.7253839e+01 5.9858716e+02
+-3.2706409e+02 4.4444915e+01 6.2575503e+02
+-1.4428149e+02 1.4027542e+01 6.4192781e+02
+-4.2920030e+00 9.9432163e-01 6.4368086e+02
+1.2513657e+00 -5.3909824e-02 6.4631057e+02
+2.9705497e+00 -4.8855929e-01 6.5027879e+02
+-3.1890682e+00 -4.9869531e-01 6.6403518e+02
+-3.9251998e+02 2.9357523e+01 9.7124933e+02
+-5.7897655e+02 1.3867104e+02 0.0000000e+00
+-8.5011662e-04 2.3146662e-04 1.1535588e-06
+-1.6882059e-02 4.5984180e-03 1.5389973e-04
+-3.0281120e-01 8.4007989e-02 4.5595902e-03
+-5.4114665e+00 1.5546596e+00 9.7032550e-02
+-1.6664053e+02 3.8551522e+01 1.1316517e+01
+-3.9894640e+02 1.2666501e+02 3.2888783e+01
+-6.8513104e+02 2.3513424e+02 6.7980054e+01
+-9.5737222e+02 3.3424502e+02 1.1636821e+02
+-1.1593974e+03 4.0202615e+02 1.7526895e+02
+-1.2588005e+03 4.2835205e+02 2.4068470e+02
+-1.2483006e+03 4.1427442e+02 3.0820986e+02
+-1.1399543e+03 3.6756932e+02 3.7346734e+02
+-9.5782258e+02 2.9865884e+02 4.3233933e+02
+-7.3241900e+02 2.1883779e+02 4.8115990e+02
+-4.9709647e+02 1.3960922e+02 5.1726378e+02
+-2.8489012e+02 7.1544965e+01 5.4021326e+02
+-1.2453832e+02 2.3054985e+01 5.5326838e+02
+-3.4793483e+00 1.7729004e+00 5.5427604e+02
+1.4579644e+00 4.5709935e-02 5.5587853e+02
+3.1867670e+00 -6.4980168e-01 5.5828336e+02
+-1.5651233e+00 -6.2827728e-01 5.6849607e+02
+-3.3120807e+02 4.4816918e+01 8.3455373e+02
+-4.8521874e+02 1.8584361e+02 0.0000000e+00
+-6.5421899e-04 3.5672053e-04 -4.7595784e-05
+-1.2987517e-02 6.7387894e-03 -5.8716614e-04
+-2.3294380e-01 1.1768334e-01 -4.2996110e-03
+-4.1639861e+00 2.1214293e+00 -1.1267063e-02
+-1.2933643e+02 5.1712740e+01 7.7267778e+00
+-3.1471425e+02 1.6669859e+02 2.3782198e+01
+-5.4409355e+02 3.0806081e+02 5.0849777e+01
+-7.6245848e+02 4.3768308e+02 8.8385237e+01
+-9.2425085e+02 5.2664868e+02 1.3395280e+02
+-1.0033724e+03 5.6135840e+02 1.8442967e+02
+-9.9415357e+02 5.4306927e+02 2.3647142e+02
+-9.0657596e+02 4.8195561e+02 2.8676586e+02
+-7.6018963e+02 3.9166287e+02 3.3218214e+02
+-5.7959165e+02 2.8706553e+02 3.6983894e+02
+-3.9157545e+02 1.8343316e+02 3.9744414e+02
+-2.2258391e+02 9.4792674e+01 4.1424295e+02
+-9.5401546e+01 3.1599600e+01 4.2258075e+02
+-2.2046610e+00 2.8505833e+00 4.2235214e+02
+1.9169068e+00 4.5427657e-01 4.2231576e+02
+3.7643306e+00 -5.3689893e-01 4.2235649e+02
+8.1867594e-01 -5.9211510e-01 4.2772464e+02
+-2.6299238e+02 5.3629226e+01 6.4750244e+02
+-4.2243310e+02 2.0029770e+02 0.0000000e+00
+-4.3490084e-04 5.7467627e-04 -1.6455559e-04
+-8.6123448e-03 1.0064480e-02 -2.3906506e-03
+-1.5418025e-01 1.5971330e-01 -2.3848505e-02
+-2.7534172e+00 2.6500810e+00 -1.6798732e-01
+-8.6891909e+01 6.2696778e+01 3.5618144e+00
+-2.1792426e+02 1.9707986e+02 1.3576762e+01
+-3.8128552e+02 3.6257648e+02 3.1595276e+01
+-5.3695015e+02 5.1504993e+02 5.6696372e+01
+-6.5192307e+02 6.2008515e+02 8.6935238e+01
+-7.0747932e+02 6.6115023e+02 1.2027653e+02
+-6.9980442e+02 6.3963065e+02 1.5463164e+02
+-6.3644852e+02 5.6756613e+02 1.8792688e+02
+-5.3168061e+02 4.6102564e+02 2.1818845e+02
+-4.0316996e+02 3.3765279e+02 2.4346230e+02
+-2.7006921e+02 2.1578787e+02 2.6189032e+02
+-1.5116584e+02 1.1240411e+02 2.7222641e+02
+-6.2338207e+01 3.9240855e+01 2.7537531e+02
+-8.0480618e-01 4.4577412e+00 2.7366880e+02
+2.3773934e+00 1.3655940e+00 2.7182380e+02
+4.3306961e+00 -3.3727671e-02 2.6943180e+02
+3.0504204e+00 -3.4208714e-01 2.7004411e+02
+-2.0253180e+02 5.6799999e+01 4.4504482e+02
+-3.9631548e+02 1.9205522e+02 0.0000000e+00
+-2.3580260e-04 1.0156720e-03 -4.1039578e-04
+-4.6207808e-03 1.7012871e-02 -6.7348685e-03
+-8.1923082e-02 2.4274657e-01 -7.8231775e-02
+-1.4527710e+00 3.3922355e+00 -6.0738444e-01
+-4.7316722e+01 7.0992658e+01 -2.9050493e-01
+-1.2588129e+02 2.1710665e+02 4.6048633e+00
+-2.2505783e+02 3.9829764e+02 1.4279560e+01
+-3.1957287e+02 5.6593842e+02 2.7657796e+01
+-3.8887594e+02 6.8166715e+02 4.3408281e+01
+-4.2152089e+02 7.2671630e+02 6.0611629e+01
+-4.1547574e+02 7.0269125e+02 7.8377103e+01
+-3.7588447e+02 6.2303024e+02 9.5799632e+01
+-3.1177400e+02 5.0531579e+02 1.1207814e+02
+-2.3393989e+02 3.6901034e+02 1.2630090e+02
+-1.5408312e+02 2.3479658e+02 1.3721386e+02
+-8.3627787e+01 1.2229834e+02 1.4311107e+02
+-3.1860505e+01 4.4692022e+01 1.4272734e+02
+2.3659589e-01 6.5154853e+00 1.3998619e+02
+2.3745900e+00 2.4936636e+00 1.3724857e+02
+4.1703411e+00 6.8888458e-01 1.3361960e+02
+3.8560029e+00 1.0766228e-01 1.3120234e+02
+-1.5433579e+02 5.1900485e+01 2.6699041e+02
+-3.8231919e+02 1.5929727e+02 0.0000000e+00
+-9.4506391e-05 1.7481145e-03 -7.1706098e-04
+-1.7811339e-03 3.0411033e-02 -1.3806872e-02
+-3.0262793e-02 4.3515660e-01 -2.0073562e-01
+-5.1664112e-01 5.4189653e+00 -2.1335529e+00
+-1.8249472e+01 7.5429989e+01 -2.3734346e+00
+-5.5319651e+01 2.2908599e+02 -8.0051827e-01
+-1.0293263e+02 4.2002582e+02 2.6007858e+00
+-1.4785354e+02 5.9644297e+02 7.2818867e+00
+-1.7997171e+02 7.1797952e+02 1.2342500e+01
+-1.9398661e+02 7.6440602e+02 1.7673890e+01
+-1.8933993e+02 7.3796919e+02 2.3167897e+01
+-1.6920309e+02 6.5335868e+02 2.8607704e+01
+-1.3815124e+02 5.2867621e+02 3.4074755e+01
+-1.0111666e+02 3.8402457e+02 3.9744742e+01
+-6.3780084e+01 2.4158616e+02 4.5450899e+01
+-3.1894175e+01 1.2321916e+02 5.0092841e+01
+-9.7036044e+00 4.4841929e+01 5.0642056e+01
+6.0785109e-01 8.0605753e+00 4.8373031e+01
+1.6755498e+00 2.4609335e+00 4.7042736e+01
+2.9472106e+00 7.0293666e-01 4.4584170e+01
+2.6717416e+00 2.3952424e-01 4.2259330e+01
+-1.2155664e+02 3.7850795e+01 1.4505367e+02
+-3.7278727e+02 1.1546398e+02 0.0000000e+00
+-2.5569542e-05 2.2554468e-03 -4.9606646e-04
+-4.3087145e-04 4.1509701e-02 -1.1353594e-02
+-6.1733976e-03 6.2728131e-01 -1.9914258e-01
+-7.9856013e-02 8.0525314e+00 -2.7666483e+00
+-8.4943459e-01 7.6907636e+01 -3.5067029e+00
+-2.5881759e+00 2.3089078e+02 -3.0135017e+00
+-4.5284075e+00 4.2256455e+02 -1.5808980e+00
+-5.8184623e+00 5.9983803e+02 -4.2633509e-02
+-6.2575146e+00 7.2206853e+02 7.9748618e-01
+-5.9619106e+00 7.6806474e+02 1.3229645e+00
+-5.1518408e+00 7.4071180e+02 1.7319590e+00
+-4.1793746e+00 6.5535382e+02 1.9199216e+00
+-3.1205172e+00 5.2976865e+02 2.0983024e+00
+-1.8277469e+00 3.8379331e+02 2.6536882e+00
+-5.0854969e-01 2.3993079e+02 3.8289626e+00
+3.6207787e-01 1.2062374e+02 5.5630400e+00
+5.9945638e-01 4.2179229e+01 7.4623710e+00
+5.0083166e-01 7.2819246e+00 7.7611104e+00
+7.1172847e-01 1.1089776e+00 8.4814955e+00
+1.3210680e+00 5.9059707e-02 7.9327852e+00
+6.3274980e-01 2.5546741e-02 7.1065799e+00
+-9.6018616e+01 2.0805008e+01 7.6713086e+01
+-3.4470078e+02 6.8000664e+01 0.0000000e+00
+-8.1187706e-06 1.8675353e-03 4.0217816e-04
+-1.5717788e-04 3.6684442e-02 5.5674209e-03
+-2.6999603e-03 5.9547539e-01 4.3999212e-02
+-4.0558887e-02 8.1673100e+00 3.3385763e-02
+-4.1794362e-01 7.9361980e+01 -1.3524377e+00
+-1.2498139e+00 2.3499906e+02 -2.2380861e+00
+-1.7587761e+00 4.2703960e+02 -1.3023436e+00
+-1.2597611e+00 6.0505344e+02 -9.8493883e-02
+-3.9165568e-02 7.2773801e+02 1.9561624e-01
+1.3558555e+00 7.7248953e+02 2.7255414e-01
+2.5006179e+00 7.4341309e+02 3.7537372e-01
+2.9650784e+00 6.5691941e+02 2.3544104e-01
+2.9025928e+00 5.3024122e+02 4.8084181e-02
+2.9028413e+00 3.8273505e+02 2.5491349e-01
+2.9609766e+00 2.3740011e+02 1.0373944e+00
+2.5729636e+00 1.1768384e+02 2.0086296e+00
+1.6292982e+00 4.0657184e+01 2.0965245e+00
+6.5870776e-01 7.6584717e+00 1.0930384e+00
+3.5130836e-01 9.1018275e-01 9.6323849e-01
+4.4287643e-01 1.6494097e-02 5.8473061e-01
+-4.2307602e-01 -1.5210317e-02 3.8665151e-01
+-6.7644070e+01 6.7502011e+00 3.9276977e+01
+-2.6991180e+02 2.2454602e+01 0.0000000e+00
+-5.2468379e-06 7.7951405e-04 1.1031766e-03
+-1.3088191e-04 1.7181965e-02 2.0999375e-02
+-2.7842916e-03 3.2641608e-01 2.9845544e-01
+-4.9382197e-02 5.6445308e+00 2.9676982e+00
+-5.8791960e-01 8.3263957e+01 7.8203969e-01
+-1.7045884e+00 2.4247774e+02 -1.6301544e+00
+-2.2114797e+00 4.3487960e+02 -1.0703646e+00
+-1.1074771e+00 6.1385226e+02 -3.6674152e-02
+1.0714242e+00 7.3683303e+02 -1.6954961e-01
+3.4188587e+00 7.7918621e+02 -3.3371996e-01
+5.2538975e+00 7.4713328e+02 -2.8479478e-01
+5.8908259e+00 6.5875602e+02 -5.3613467e-01
+5.6072261e+00 5.3042921e+02 -8.8953624e-01
+5.3963096e+00 3.8076166e+02 -8.2590905e-01
+5.2812804e+00 2.3353691e+02 -2.2549008e-01
+4.4835495e+00 1.1347094e+02 4.8199849e-01
+2.8592135e+00 3.8057040e+01 5.2985906e-01
+1.2083275e+00 6.9787184e+00 3.5183746e-02
+4.0942211e-01 5.2358102e-01 1.4114628e-02
+1.5265510e-01 -6.7978003e-02 -6.5722406e-02
+-5.9073533e-01 -1.5202469e-01 1.6054056e-01
+-3.7402271e+01 2.2149583e-01 1.8056740e+01
+-1.5813444e+02 1.1028765e+00 0.0000000e+00
+-2.7288907e-06 0.0000000e+00 7.8784561e-04
+-8.1957059e-05 0.0000000e+00 1.8217778e-02
+-2.2505304e-03 0.0000000e+00 3.5104663e-01
+-6.3703912e-02 0.0000000e+00 6.1501729e+00
+-2.1471058e+00 8.9960446e+01 3.0807114e+00
+-6.4377720e+00 2.5754335e+02 -8.7759261e-01
+-9.9762922e+00 4.5352124e+02 -5.5411285e-01
+-1.0988347e+01 6.3655847e+02 2.8809819e-01
+-9.7458656e+00 7.6182180e+02 -2.9050015e-01
+-6.6513741e+00 8.0090146e+02 -2.0107773e-01
+-3.0706265e+00 7.6363804e+02 -6.6580570e-03
+-6.9389925e-01 6.7099567e+02 -4.9659156e-01
+1.1176563e+00 5.3802877e+02 -7.2334651e-01
+3.0399416e+00 3.8309935e+02 -5.5644763e-01
+4.1924132e+00 2.3174735e+02 -2.6671199e-01
+4.2542767e+00 1.0998657e+02 1.5435659e-01
+3.0949822e+00 3.5388219e+01 1.9773427e-01
+9.9062424e-01 5.9863274e+00 -7.2621851e-02
+-3.6318824e-01 2.8251087e-01 -1.1217410e-01
+-6.9468785e-01 6.6765123e-02 -6.6849803e-02
+-1.0696421e+00 -2.8409342e-01 4.9804203e-01
+-1.1966799e+01 0.0000000e+00 5.1117127e+00
+-4.8682852e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-5.6793671e+01 1.0895108e+02 1.3285944e+01
+-1.7781659e+02 3.7849107e+02 1.3686361e+01
+-3.0750619e+02 6.7919035e+02 1.5526358e+01
+-4.4329850e+02 9.6093234e+02 1.1447045e+01
+-5.5786557e+02 1.1772716e+03 1.8033000e+01
+-5.9531177e+02 1.2572538e+03 4.8715177e+01
+-5.7016780e+02 1.2126531e+03 5.8194140e+01
+-5.1055090e+02 1.0754304e+03 5.3997078e+01
+-4.0088505e+02 8.6190932e+02 7.3150255e+01
+-2.9159726e+02 6.2898090e+02 8.2950008e+01
+-2.3170542e+02 4.2236928e+02 6.7656073e+01
+-1.6550890e+02 2.5038484e+02 5.3907098e+01
+-9.0962107e+01 1.2999659e+02 3.7887488e+01
+-6.5544896e+01 6.7567494e+01 1.5216414e+01
+-6.1649333e+01 3.6746359e+01 2.7301543e-01
+-4.4930095e+01 1.7270105e+01 -2.1463199e+00
+-1.8870776e+01 4.7837734e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.0316394e+02 0.0000000e+00 4.4294153e-01
+-2.5990636e+02 0.0000000e+00 4.6918533e+01
+-3.6832718e+02 0.0000000e+00 7.7907442e+01
+-5.6123569e+02 0.0000000e+00 2.8611573e+01
+-8.1527559e+02 0.0000000e+00 6.9908258e+01
+-9.3000263e+02 0.0000000e+00 2.1627514e+02
+-9.5316396e+02 0.0000000e+00 2.5485150e+02
+-9.3566774e+02 0.0000000e+00 2.5749325e+02
+-7.4555270e+02 0.0000000e+00 3.3924475e+02
+-5.7690865e+02 0.0000000e+00 3.4773731e+02
+-5.9421929e+02 0.0000000e+00 2.6158785e+02
+-4.8901902e+02 0.0000000e+00 2.0130888e+02
+-2.6354127e+02 0.0000000e+00 1.3522331e+02
+-2.2348071e+02 0.0000000e+00 4.3916490e+01
+-2.5539665e+02 0.0000000e+00 -8.8023730e+00
+-2.0006699e+02 0.0000000e+00 -1.0769399e+01
+-8.3211998e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.1206367e+02 -7.4477405e+01 -1.6058165e+01
+-4.2489178e+02 -2.5447544e+02 1.9713305e+01
+-6.9460122e+02 -4.3612340e+02 8.2741153e+01
+-7.5069593e+02 -6.2670103e+02 4.7339905e+01
+-8.8942782e+02 -8.1267301e+02 3.6908933e+01
+-1.0432702e+03 -9.1408394e+02 1.7074144e+02
+-8.8072936e+02 -9.3101278e+02 2.3091379e+02
+-6.9261002e+02 -8.7075417e+02 1.8011556e+02
+-6.4035114e+02 -7.2766852e+02 2.4837804e+02
+-4.5472888e+02 -5.5671355e+02 3.1811865e+02
+-2.6727065e+02 -3.9465489e+02 2.0538214e+02
+-2.2901834e+02 -2.3732185e+02 1.0025784e+02
+-1.9231295e+02 -1.1148982e+02 8.7610717e+01
+-2.1435739e+02 -4.4075761e+01 5.4882968e+01
+-2.6896598e+02 -1.9079386e+01 2.2432616e+00
+-2.4881311e+02 -1.0662957e+01 -1.1164121e+01
+-1.2077095e+02 -4.2508013e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.9025838e+00 -1.4965771e+02 1.6501596e+01
+5.7860527e+00 -4.2821145e+02 6.6069464e+00
+1.6341490e+01 -7.6515517e+02 1.1827679e+01
+2.7096658e+01 -1.1004661e+03 1.5248805e+01
+-2.2733221e+01 -1.3485203e+03 1.5881706e+01
+-9.8803148e+01 -1.4470242e+03 5.2333688e+01
+-1.1465498e+02 -1.4057564e+03 7.1611043e+01
+-1.1396360e+02 -1.2536694e+03 5.7913149e+01
+-1.2987231e+02 -1.0198491e+03 7.8456936e+01
+-1.2129893e+02 -7.4958227e+02 9.9632385e+01
+-1.1115157e+02 -4.8676590e+02 7.0099855e+01
+-1.1004803e+02 -2.6372885e+02 4.0961725e+01
+-8.3116019e+01 -1.0896675e+02 3.0927130e+01
+-6.2467190e+01 -3.1878005e+01 1.4982281e+01
+-5.8993696e+01 -7.6644375e+00 -2.2612473e-01
+-5.0619725e+01 -1.8414274e+00 -2.6350267e+00
+-2.5380088e+01 -3.0551870e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.3550388e-05 -1.3336523e-03 1.3444737e-03
+-4.0542685e-04 -2.9425475e-02 3.1093425e-02
+-1.0377630e-02 -5.5891054e-01 5.9813105e-01
+-2.3734429e-01 -9.6454718e+00 1.0417331e+01
+-4.6556258e+00 -1.4174065e+02 5.0054336e+00
+-1.4829189e+01 -4.1318067e+02 -1.6342862e+00
+-2.8970659e+01 -7.4756212e+02 -2.3220983e-01
+-4.3533689e+01 -1.0700349e+03 1.8806083e+00
+-5.6123660e+01 -1.3015996e+03 1.3380974e+00
+-6.2926319e+01 -1.3920069e+03 2.5950967e+00
+-6.1435472e+01 -1.3486822e+03 3.8855861e+00
+-5.4539651e+01 -1.1992832e+03 3.3640860e+00
+-4.5187276e+01 -9.7411825e+02 3.9330656e+00
+-3.4451910e+01 -7.1341497e+02 5.2197005e+00
+-2.4677451e+01 -4.5783636e+02 5.1225751e+00
+-1.6776038e+01 -2.4205151e+02 4.5089889e+00
+-9.7433705e+00 -9.4978265e+01 3.3704455e+00
+-4.5703201e+00 -2.4332149e+01 1.3568327e+00
+-2.2215131e+00 -4.8655196e+00 3.7993903e-01
+-1.3565090e+00 -9.3906566e-01 1.2593672e-01
+-1.5329452e+00 -1.6354974e-01 4.6117577e-01
+-1.4428330e+01 -2.8194269e-01 3.3575579e+00
+-6.6789904e+01 -2.6687534e+00 0.0000000e+00
+-2.4529837e-05 -3.1977150e-03 1.8833457e-03
+-6.3557565e-04 -6.2920258e-02 3.5882822e-02
+-1.3622616e-02 -1.0221798e+00 5.0999019e-01
+-2.4023732e-01 -1.4007192e+01 5.0625659e+00
+-2.8815310e+00 -1.3566516e+02 1.2806978e+00
+-9.3361144e+00 -4.0160351e+02 -2.6650327e+00
+-1.8359154e+01 -7.3286396e+02 -1.2154965e+00
+-2.7493096e+01 -1.0457185e+03 8.5375774e-01
+-3.4603415e+01 -1.2660672e+03 9.9621488e-01
+-3.7785558e+01 -1.3513418e+03 1.5355659e+00
+-3.6497800e+01 -1.3075584e+03 2.1635023e+00
+-3.2119373e+01 -1.1610986e+03 1.9890453e+00
+-2.6120676e+01 -9.4248807e+02 2.0888650e+00
+-1.9563575e+01 -6.8914920e+02 2.7830275e+00
+-1.3618599e+01 -4.3968292e+02 3.5372109e+00
+-8.7751156e+00 -2.2930953e+02 4.0536205e+00
+-4.7447701e+00 -8.6568907e+01 3.2483482e+00
+-1.8214927e+00 -1.9216143e+01 1.1608328e+00
+-6.2014755e-01 -3.3795025e+00 7.0310697e-01
+-3.4147159e-01 -6.9759787e-01 9.5751032e-01
+-1.2502692e+00 -4.5034352e-01 1.9035604e+00
+-4.1270634e+01 -3.7807021e+00 9.3426610e+00
+-2.0200437e+02 -1.7798745e+01 0.0000000e+00
+-2.6132899e-05 -3.8632779e-03 6.8357709e-04
+-5.8130914e-04 -7.1265719e-02 9.4531691e-03
+-1.0864086e-02 -1.0788739e+00 7.4311392e-02
+-1.6698581e-01 -1.3854675e+01 4.8221586e-02
+-1.6984976e+00 -1.3197962e+02 -2.3567587e+00
+-5.5965531e+00 -3.9585526e+02 -3.7582642e+00
+-1.1104732e+01 -7.2542257e+02 -1.8537016e+00
+-1.6715171e+01 -1.0325034e+03 3.8656070e-01
+-2.1092099e+01 -1.2457507e+03 1.1230377e+00
+-2.3054759e+01 -1.3275744e+03 1.7662181e+00
+-2.2282023e+01 -1.2832886e+03 2.2790687e+00
+-1.9603239e+01 -1.1384567e+03 2.2054773e+00
+-1.5922230e+01 -9.2377469e+02 2.3169200e+00
+-1.1923872e+01 -6.7502111e+02 3.0156439e+00
+-8.3126281e+00 -4.2958297e+02 4.1893055e+00
+-5.3410112e+00 -2.2269264e+02 5.4864887e+00
+-2.8185254e+00 -8.1880985e+01 5.2463813e+00
+-1.0105274e+00 -1.5374159e+01 3.0736121e+00
+-5.1740832e-01 -3.0901176e+00 3.6531922e+00
+-7.0968673e-01 -1.3014964e+00 5.4095009e+00
+-2.5462063e+00 -1.5411566e+00 8.6200953e+00
+-6.6443431e+01 -1.4424339e+01 1.8068001e+01
+-3.0753773e+02 -4.8620206e+01 0.0000000e+00
+-4.0870063e-05 -2.9930674e-03 -8.5491002e-04
+-7.4914744e-04 -5.2217687e-02 -1.9584666e-02
+-1.1725012e-02 -7.4929190e-01 -3.4361506e-01
+-1.6092094e-01 -9.3528242e+00 -4.7644013e+00
+-1.6843788e+00 -1.2984084e+02 -6.0682428e+00
+-5.4428510e+00 -3.9391656e+02 -5.1522737e+00
+-1.0624791e+01 -7.2195355e+02 -2.5249096e+00
+-1.5811633e+01 -1.0252291e+03 1.9404506e-01
+-1.9768149e+01 -1.2337941e+03 1.7480507e+00
+-2.1551344e+01 -1.3131720e+03 2.9351270e+00
+-2.0943114e+01 -1.2683891e+03 3.8268921e+00
+-1.8549128e+01 -1.1245129e+03 4.2528582e+00
+-1.5096597e+01 -9.1237632e+02 4.8305729e+00
+-1.1222791e+01 -6.6680282e+02 6.0073219e+00
+-7.5753983e+00 -4.2447692e+02 7.9681150e+00
+-4.5254354e+00 -2.2074125e+02 1.0904243e+01
+-2.1967441e+00 -8.2844731e+01 1.4664195e+01
+-9.3454297e-01 -1.5732632e+01 1.6458053e+01
+-1.1504492e+00 -6.0826628e+00 2.1312776e+01
+-2.1353215e+00 -3.9388629e+00 2.7406380e+01
+-5.5707263e+00 -4.1166862e+00 3.6179707e+01
+-8.6331802e+01 -3.3068250e+01 4.4944786e+01
+-3.3005279e+02 -8.4901657e+01 0.0000000e+00
+-1.1850277e-04 -1.7358683e-03 -1.2332027e-03
+-2.2614455e-03 -2.9167572e-02 -2.3803006e-02
+-3.8839246e-02 -4.1759637e-01 -3.4692209e-01
+-6.6516033e-01 -5.8567926e+00 -3.6944345e+00
+-2.4737220e+01 -1.2282874e+02 -4.2187848e+00
+-7.6403641e+01 -3.7545699e+02 -1.5943664e+00
+-1.4348769e+02 -6.8714851e+02 4.1556593e+00
+-2.0756010e+02 -9.7333731e+02 1.1970388e+01
+-2.5389494e+02 -1.1683355e+03 2.0434988e+01
+-2.7446575e+02 -1.2417852e+03 2.9527333e+01
+-2.6847273e+02 -1.1986711e+03 3.8942100e+01
+-2.4050760e+02 -1.0625907e+03 4.8324362e+01
+-1.9721297e+02 -8.6298031e+02 5.7990086e+01
+-1.4586925e+02 -6.3218901e+02 6.8128861e+01
+-9.4215736e+01 -4.0430009e+02 7.8387685e+01
+-4.9763176e+01 -2.1204306e+02 8.7558492e+01
+-1.9473724e+01 -7.8403305e+01 9.2887185e+01
+-2.3747142e+00 -1.2692683e+01 9.2829802e+01
+-3.1905414e+00 -6.6269248e+00 9.8240153e+01
+-5.3905931e+00 -4.9497563e+00 1.0758878e+02
+-1.1046916e+01 -5.4713693e+00 1.2265844e+02
+-9.6761428e+01 -4.7546159e+01 1.1245858e+02
+-2.7245604e+02 -1.1705189e+02 0.0000000e+00
+-2.8549222e-04 -9.7747213e-04 -7.0870657e-04
+-5.6398609e-03 -1.7166857e-02 -1.1690341e-02
+-1.0090388e-01 -2.7326132e-01 -1.3704460e-01
+-1.8057897e+00 -4.5490542e+00 -1.0917643e+00
+-6.1875982e+01 -1.0855948e+02 -8.0176149e-01
+-1.6799828e+02 -3.4139953e+02 7.2577747e+00
+-3.0207349e+02 -6.2627771e+02 2.3402636e+01
+-4.2924657e+02 -8.8602367e+02 4.5762694e+01
+-5.2165009e+02 -1.0619846e+03 7.2186004e+01
+-5.6444983e+02 -1.1279390e+03 1.0126870e+02
+-5.5583331e+02 -1.0885884e+03 1.3154363e+02
+-5.0314544e+02 -9.6532468e+02 1.6153860e+02
+-4.1825401e+02 -7.8491400e+02 1.8995230e+02
+-3.1508030e+02 -5.7623193e+02 2.1513563e+02
+-2.0874141e+02 -3.6943122e+02 2.3492505e+02
+-1.1480928e+02 -1.9310346e+02 2.4716695e+02
+-4.8541518e+01 -6.7889811e+01 2.5333447e+02
+-4.7391291e+00 -9.0874401e+00 2.5470495e+02
+-5.8339122e+00 -4.8399104e+00 2.6112644e+02
+-9.5850555e+00 -4.0308377e+00 2.7396297e+02
+-1.7677800e+01 -5.1963952e+00 2.9522269e+02
+-9.1803038e+01 -5.0788864e+01 2.3596321e+02
+-2.0970112e+02 -1.3523364e+02 0.0000000e+00
+-5.2182402e-04 -6.0128114e-04 -2.8926781e-04
+-1.0413527e-02 -1.1384308e-02 -4.2706356e-03
+-1.8811494e-01 -1.9932776e-01 -4.4269502e-02
+-3.3921379e+00 -3.6035238e+00 -3.5107910e-01
+-1.1204757e+02 -8.9369903e+01 5.6150031e+00
+-2.8719039e+02 -2.8860119e+02 2.2082777e+01
+-5.0565497e+02 -5.3184795e+02 5.2022473e+01
+-7.1248999e+02 -7.5237882e+02 9.3917460e+01
+-8.6358028e+02 -9.0103713e+02 1.4462717e+02
+-9.3525086e+02 -9.5645044e+02 2.0091017e+02
+-9.2403896e+02 -9.2281287e+02 2.5936915e+02
+-8.4069812e+02 -8.1828370e+02 3.1657776e+02
+-7.0363740e+02 -6.6555916e+02 3.6917972e+02
+-5.3507735e+02 -4.8882465e+02 4.1367983e+02
+-3.5944647e+02 -3.1313363e+02 4.4675950e+02
+-2.0225725e+02 -1.6217720e+02 4.6692465e+02
+-8.8682873e+01 -5.4361122e+01 4.7974063e+02
+-7.5218673e+00 -6.1982816e+00 4.8356853e+02
+-8.5809675e+00 -3.1010907e+00 4.9278807e+02
+-1.4030283e+01 -2.8752303e+00 5.0999357e+02
+-2.4406826e+01 -4.4208794e+00 5.3667937e+02
+-7.1088098e+01 -4.9895699e+01 4.0444466e+02
+-2.0886840e+02 -1.3840712e+02 0.0000000e+00
+-7.7999337e-04 -3.8570302e-04 -8.9803741e-05
+-1.5595450e-02 -7.6777033e-03 -1.1884752e-03
+-2.8207061e-01 -1.4059033e-01 -1.0799098e-02
+-5.0876466e+00 -2.6083017e+00 -8.2360684e-02
+-1.6489601e+02 -6.6437774e+01 1.2545091e+01
+-4.1071542e+02 -2.1899512e+02 3.8940208e+01
+-7.1528306e+02 -4.0549794e+02 8.3779702e+01
+-1.0034076e+03 -5.7392749e+02 1.4627745e+02
+-1.2145542e+03 -6.8699585e+02 2.2253952e+02
+-1.3159660e+03 -7.2887715e+02 3.0755983e+02
+-1.3023626e+03 -7.0294479e+02 3.9590077e+02
+-1.1879304e+03 -6.2309998e+02 4.8207148e+02
+-9.9772551e+02 -5.0666697e+02 5.6071517e+02
+-7.6241931e+02 -3.7195109e+02 6.2666926e+02
+-5.1594249e+02 -2.3779161e+02 6.7569428e+02
+-2.9388334e+02 -1.2204567e+02 7.0686217e+02
+-1.3139869e+02 -3.9508879e+01 7.2800707e+02
+-1.0441535e+01 -4.0502657e+00 7.3409592e+02
+-1.1400614e+01 -1.8850190e+00 7.4619738e+02
+-1.8618575e+01 -1.8197496e+00 7.6752496e+02
+-3.1253801e+01 -3.1752684e+00 7.9835517e+02
+-4.7165400e+01 -4.5289045e+01 5.7794018e+02
+-2.8022727e+02 -1.2845811e+02 0.0000000e+00
+-1.0082114e-03 -2.2170760e-04 -5.9006356e-06
+-2.0154421e-02 -4.5104440e-03 9.9202239e-05
+-3.6431012e-01 -8.3862589e-02 4.8703865e-03
+-6.5645557e+00 -1.5649887e+00 1.1464647e-01
+-2.1058596e+02 -4.0875422e+01 1.8497731e+01
+-5.1674345e+02 -1.3663281e+02 5.3932460e+01
+-8.9467841e+02 -2.5393457e+02 1.1191645e+02
+-1.2520455e+03 -3.5962239e+02 1.9228460e+02
+-1.5143796e+03 -4.3035972e+02 2.9063067e+02
+-1.6411740e+03 -4.5641841e+02 4.0054539e+02
+-1.6255659e+03 -4.4000569e+02 5.1487158e+02
+-1.4846638e+03 -3.8987332e+02 6.2635443e+02
+-1.2491894e+03 -3.1689451e+02 7.2794877e+02
+-9.5701703e+02 -2.3249260e+02 8.1308831e+02
+-6.5018037e+02 -1.4836830e+02 8.7674889e+02
+-3.7284722e+02 -7.5652021e+01 9.1831235e+02
+-1.6869371e+02 -2.3963191e+01 9.4692205e+02
+-1.3155291e+01 -2.2984436e+00 9.5484617e+02
+-1.4127475e+01 -9.7598516e-01 9.6952258e+02
+-2.3049113e+01 -8.8271286e-01 9.9482172e+02
+-3.8135153e+01 -1.6512655e+00 1.0298742e+03
+-3.9265634e+01 -3.0943462e+01 7.2390820e+02
+-4.1027121e+02 -9.2880117e+01 0.0000000e+00
+-1.1635922e-03 -7.2759929e-05 3.0047682e-05
+-2.3249529e-02 -1.4906462e-03 7.0942270e-04
+-4.1997594e-01 -2.7826030e-02 1.4062602e-02
+-7.5613923e+00 -5.1960103e-01 2.6707819e-01
+-2.4130398e+02 -1.3789755e+01 2.2468646e+01
+-5.8781603e+02 -4.6423832e+01 6.4108093e+01
+-1.0147750e+03 -8.6452680e+01 1.3101240e+02
+-1.4183936e+03 -1.2247953e+02 2.2339411e+02
+-1.7149128e+03 -1.4655477e+02 3.3654858e+02
+-1.8586466e+03 -1.5539614e+02 4.6317222e+02
+-1.8416731e+03 -1.4977357e+02 5.9497169e+02
+-1.6830624e+03 -1.3267708e+02 7.2351128e+02
+-1.4173311e+03 -1.0781430e+02 8.4061551e+02
+-1.0871742e+03 -7.9068869e+01 9.3877933e+02
+-7.4004762e+02 -5.0408665e+01 1.0124613e+03
+-4.2586300e+02 -2.5617206e+01 1.0612254e+03
+-1.9402479e+02 -8.0314399e+00 1.0950370e+03
+-1.5153265e+01 -7.4329423e-01 1.1043431e+03
+-1.6238233e+01 -2.9135677e-01 1.1211480e+03
+-2.6470500e+01 -2.3737176e-01 1.1499438e+03
+-4.3758176e+01 -4.5468967e-01 1.1893183e+03
+-4.8432141e+01 -1.0470928e+01 8.2509428e+02
+-5.4059315e+02 -3.3082929e+01 0.0000000e+00
+-1.2185407e-03 7.2759929e-05 4.0655901e-05
+-2.4342635e-02 1.4906462e-03 9.0468670e-04
+-4.3960827e-01 2.7826030e-02 1.7334929e-02
+-7.9124857e+00 5.1960103e-01 3.2595369e-01
+-2.5210493e+02 1.3789755e+01 2.3858204e+01
+-6.1278083e+02 4.6423832e+01 6.7693627e+01
+-1.0569405e+03 8.6452680e+01 1.3774301e+02
+-1.4767835e+03 1.2247953e+02 2.3434240e+02
+-1.7852912e+03 1.4655477e+02 3.5268884e+02
+-1.9349607e+03 1.5539614e+02 4.8517211e+02
+-1.9174993e+03 1.4977357e+02 6.2310252e+02
+-1.7526680e+03 1.3267708e+02 7.5762968e+02
+-1.4763179e+03 1.0781430e+02 8.8018131e+02
+-1.1328376e+03 7.9068869e+01 9.8292439e+02
+-7.7158797e+02 5.0408665e+01 1.0601414e+03
+-4.4449993e+02 2.5617206e+01 1.1114657e+03
+-2.0299768e+02 8.0314399e+00 1.1471666e+03
+-1.5900364e+01 7.4329413e-01 1.1570219e+03
+-1.7052322e+01 2.9136152e-01 1.1747086e+03
+-2.7787884e+01 2.3766213e-01 1.2049794e+03
+-4.5991940e+01 4.5902025e-01 1.2463144e+03
+-5.5270643e+01 1.0123144e+01 8.6243779e+02
+-5.9412236e+02 3.3105840e+01 0.0000000e+00
+-1.1635922e-03 2.2170760e-04 3.0047682e-05
+-2.3249529e-02 4.5104440e-03 7.0942270e-04
+-4.1997594e-01 8.3862589e-02 1.4062602e-02
+-7.5613923e+00 1.5649887e+00 2.6707819e-01
+-2.4130398e+02 4.0875422e+01 2.2468646e+01
+-5.8781603e+02 1.3663281e+02 6.4108093e+01
+-1.0147750e+03 2.5393457e+02 1.3101240e+02
+-1.4183936e+03 3.5962239e+02 2.2339411e+02
+-1.7149128e+03 4.3035972e+02 3.3654858e+02
+-1.8586466e+03 4.5641841e+02 4.6317222e+02
+-1.8416731e+03 4.4000569e+02 5.9497169e+02
+-1.6830624e+03 3.8987332e+02 7.2351128e+02
+-1.4173311e+03 3.1689451e+02 8.4061551e+02
+-1.0871742e+03 2.3249260e+02 9.3877933e+02
+-7.4004762e+02 1.4836830e+02 1.0124613e+03
+-4.2586300e+02 7.5652021e+01 1.0612254e+03
+-1.9402479e+02 2.3963191e+01 1.0950370e+03
+-1.5153265e+01 2.2984433e+00 1.1043431e+03
+-1.6238238e+01 9.7597448e-01 1.1211481e+03
+-2.6471630e+01 8.8247910e-01 1.1499429e+03
+-4.3788385e+01 1.6534779e+00 1.1892271e+03
+-4.9169613e+01 3.0779640e+01 8.2522253e+02
+-5.4058733e+02 9.2903034e+01 0.0000000e+00
+-1.0082114e-03 3.8570302e-04 -5.9006356e-06
+-2.0154421e-02 7.6777033e-03 9.9202239e-05
+-3.6431012e-01 1.4059033e-01 4.8703865e-03
+-6.5645557e+00 2.6083017e+00 1.1464647e-01
+-2.1058596e+02 6.6437774e+01 1.8497731e+01
+-5.1674345e+02 2.1899512e+02 5.3932460e+01
+-8.9467841e+02 4.0549794e+02 1.1191645e+02
+-1.2520455e+03 5.7392749e+02 1.9228460e+02
+-1.5143796e+03 6.8699585e+02 2.9063067e+02
+-1.6411740e+03 7.2887715e+02 4.0054539e+02
+-1.6255659e+03 7.0294479e+02 5.1487158e+02
+-1.4846638e+03 6.2309998e+02 6.2635443e+02
+-1.2491894e+03 5.0666697e+02 7.2794877e+02
+-9.5701703e+02 3.7195109e+02 8.1308831e+02
+-6.5018037e+02 2.3779161e+02 8.7674889e+02
+-3.7284722e+02 1.2204567e+02 9.1831235e+02
+-1.6869371e+02 3.9508879e+01 9.4692205e+02
+-1.3155290e+01 4.0502657e+00 9.5484617e+02
+-1.4127509e+01 1.8850144e+00 9.6952260e+02
+-2.3050267e+01 1.8196263e+00 9.9482248e+02
+-3.8170520e+01 3.1719437e+00 1.0297900e+03
+-4.0254242e+01 4.5560704e+01 7.2405246e+02
+-4.1015530e+02 1.2848491e+02 0.0000000e+00
+-7.7999337e-04 6.0128114e-04 -8.9803741e-05
+-1.5595450e-02 1.1384308e-02 -1.1884752e-03
+-2.8207061e-01 1.9932776e-01 -1.0799098e-02
+-5.0876466e+00 3.6035238e+00 -8.2360684e-02
+-1.6489601e+02 8.9369903e+01 1.2545091e+01
+-4.1071542e+02 2.8860119e+02 3.8940208e+01
+-7.1528306e+02 5.3184795e+02 8.3779702e+01
+-1.0034076e+03 7.5237882e+02 1.4627745e+02
+-1.2145542e+03 9.0103713e+02 2.2253952e+02
+-1.3159660e+03 9.5645044e+02 3.0755983e+02
+-1.3023626e+03 9.2281287e+02 3.9590077e+02
+-1.1879304e+03 8.1828370e+02 4.8207148e+02
+-9.9772551e+02 6.6555916e+02 5.6071517e+02
+-7.6241931e+02 4.8882465e+02 6.2666926e+02
+-5.1594249e+02 3.1313363e+02 6.7569428e+02
+-2.9388334e+02 1.6217720e+02 7.0686217e+02
+-1.3139869e+02 5.4361121e+01 7.2800707e+02
+-1.0441536e+01 6.1982816e+00 7.3409592e+02
+-1.1400638e+01 3.1010952e+00 7.4619739e+02
+-1.8619301e+01 2.8752758e+00 7.6752538e+02
+-3.1275393e+01 4.4228812e+00 7.9836848e+02
+-4.7808835e+01 4.9882227e+01 5.7787317e+02
+-2.8028737e+02 1.3847741e+02 0.0000000e+00
+-5.2182402e-04 9.7747213e-04 -2.8926781e-04
+-1.0413527e-02 1.7166857e-02 -4.2706356e-03
+-1.8811494e-01 2.7326132e-01 -4.4269502e-02
+-3.3921379e+00 4.5490542e+00 -3.5107910e-01
+-1.1204757e+02 1.0855948e+02 5.6150031e+00
+-2.8719039e+02 3.4139953e+02 2.2082777e+01
+-5.0565497e+02 6.2627771e+02 5.2022473e+01
+-7.1248999e+02 8.8602367e+02 9.3917460e+01
+-8.6358028e+02 1.0619846e+03 1.4462717e+02
+-9.3525086e+02 1.1279390e+03 2.0091017e+02
+-9.2403896e+02 1.0885884e+03 2.5936915e+02
+-8.4069812e+02 9.6532468e+02 3.1657776e+02
+-7.0363740e+02 7.8491400e+02 3.6917972e+02
+-5.3507735e+02 5.7623193e+02 4.1367983e+02
+-3.5944647e+02 3.6943122e+02 4.4675950e+02
+-2.0225725e+02 1.9310346e+02 4.6692465e+02
+-8.8682873e+01 6.7889811e+01 4.7974063e+02
+-7.5218673e+00 9.0874401e+00 4.8356853e+02
+-8.5809785e+00 4.8399112e+00 4.9278805e+02
+-1.4030662e+01 4.0310010e+00 5.0999369e+02
+-2.4418872e+01 5.2001538e+00 5.3667849e+02
+-7.1516394e+01 5.0924446e+01 4.0444086e+02
+-2.0908068e+02 1.3545127e+02 0.0000000e+00
+-2.8549222e-04 1.7358683e-03 -7.0870657e-04
+-5.6398609e-03 2.9167572e-02 -1.1690341e-02
+-1.0090388e-01 4.1759637e-01 -1.3704460e-01
+-1.8057897e+00 5.8567926e+00 -1.0917643e+00
+-6.1875982e+01 1.2282874e+02 -8.0176149e-01
+-1.6799828e+02 3.7545699e+02 7.2577747e+00
+-3.0207349e+02 6.8714851e+02 2.3402636e+01
+-4.2924657e+02 9.7333731e+02 4.5762694e+01
+-5.2165009e+02 1.1683355e+03 7.2186004e+01
+-5.6444983e+02 1.2417852e+03 1.0126870e+02
+-5.5583331e+02 1.1986711e+03 1.3154363e+02
+-5.0314544e+02 1.0625907e+03 1.6153860e+02
+-4.1825401e+02 8.6298031e+02 1.8995230e+02
+-3.1508030e+02 6.3218901e+02 2.1513563e+02
+-2.0874141e+02 4.0430009e+02 2.3492505e+02
+-1.1480928e+02 2.1204306e+02 2.4716695e+02
+-4.8541518e+01 7.8403305e+01 2.5333447e+02
+-4.7391291e+00 1.2692683e+01 2.5470495e+02
+-5.8339126e+00 6.6269259e+00 2.6112644e+02
+-9.5852649e+00 4.9498184e+00 2.7396231e+02
+-1.7680245e+01 5.4792225e+00 2.9521946e+02
+-9.1784062e+01 4.7707393e+01 2.3578659e+02
+-2.0976629e+02 1.1734439e+02 0.0000000e+00
+-1.1850277e-04 2.9930674e-03 -1.2332027e-03
+-2.2614455e-03 5.2217687e-02 -2.3803006e-02
+-3.8839246e-02 7.4929190e-01 -3.4692209e-01
+-6.6516033e-01 9.3528242e+00 -3.6944345e+00
+-2.4737220e+01 1.2984084e+02 -4.2187848e+00
+-7.6403641e+01 3.9391656e+02 -1.5943665e+00
+-1.4348769e+02 7.2195355e+02 4.1556593e+00
+-2.0756010e+02 1.0252291e+03 1.1970388e+01
+-2.5389494e+02 1.2337941e+03 2.0434988e+01
+-2.7446575e+02 1.3131720e+03 2.9527333e+01
+-2.6847273e+02 1.2683891e+03 3.8942100e+01
+-2.4050760e+02 1.1245129e+03 4.8324362e+01
+-1.9721297e+02 9.1237632e+02 5.7990086e+01
+-1.4586925e+02 6.6680282e+02 6.8128861e+01
+-9.4215736e+01 4.2447692e+02 7.8387685e+01
+-4.9763176e+01 2.2074125e+02 8.7558492e+01
+-1.9473724e+01 8.2844731e+01 9.2887185e+01
+-2.3747143e+00 1.5732632e+01 9.2829802e+01
+-3.1905432e+00 6.0826637e+00 9.8240157e+01
+-5.3907087e+00 3.9388959e+00 1.0758900e+02
+-1.1053727e+01 4.1173815e+00 1.2261115e+02
+-9.6863410e+01 3.3435441e+01 1.1218916e+02
+-2.7247988e+02 8.5144774e+01 0.0000000e+00
+-4.0870062e-05 3.8632779e-03 -8.5491002e-04
+-7.4914744e-04 7.1265719e-02 -1.9584666e-02
+-1.1725012e-02 1.0788739e+00 -3.4361506e-01
+-1.6092094e-01 1.3854675e+01 -4.7644013e+00
+-1.6843788e+00 1.3197962e+02 -6.0682428e+00
+-5.4428510e+00 3.9585526e+02 -5.1522737e+00
+-1.0624791e+01 7.2542257e+02 -2.5249097e+00
+-1.5811633e+01 1.0325034e+03 1.9404510e-01
+-1.9768149e+01 1.2457507e+03 1.7480508e+00
+-2.1551344e+01 1.3275744e+03 2.9351270e+00
+-2.0943114e+01 1.2832886e+03 3.8268921e+00
+-1.8549128e+01 1.1384567e+03 4.2528582e+00
+-1.5096598e+01 9.2377469e+02 4.8305729e+00
+-1.1222791e+01 6.7502111e+02 6.0073219e+00
+-7.5753985e+00 4.2958297e+02 7.9681151e+00
+-4.5254356e+00 2.2269264e+02 1.0904243e+01
+-2.1967441e+00 8.1880979e+01 1.4664195e+01
+-9.3454299e-01 1.5374149e+01 1.6458053e+01
+-1.1504499e+00 3.0901194e+00 2.1312775e+01
+-2.1352787e+00 1.3016172e+00 2.7406397e+01
+-5.5694324e+00 1.5459086e+00 3.6179813e+01
+-8.6404342e+01 1.4626603e+01 4.4718533e+01
+-3.3009444e+02 4.8816025e+01 0.0000000e+00
+-2.6132900e-05 3.1977150e-03 6.8357708e-04
+-5.8130916e-04 6.2920258e-02 9.4531687e-03
+-1.0864085e-02 1.0221798e+00 7.4311389e-02
+-1.6698582e-01 1.4007192e+01 4.8221516e-02
+-1.6984978e+00 1.3566516e+02 -2.3567593e+00
+-5.5965539e+00 4.0160351e+02 -3.7582653e+00
+-1.1104734e+01 7.3286396e+02 -1.8537020e+00
+-1.6715172e+01 1.0457185e+03 3.8656156e-01
+-2.1092099e+01 1.2660672e+03 1.1230389e+00
+-2.3054759e+01 1.3513418e+03 1.7662191e+00
+-2.2282023e+01 1.3075584e+03 2.2790683e+00
+-1.9603241e+01 1.1610986e+03 2.2054768e+00
+-1.5922236e+01 9.4248807e+02 2.3169218e+00
+-1.1923877e+01 6.8914911e+02 3.0156462e+00
+-8.3126324e+00 4.3968292e+02 4.1893033e+00
+-5.3410133e+00 2.2930944e+02 5.4864776e+00
+-2.8185086e+00 8.6568810e+01 5.2464107e+00
+-1.0105069e+00 1.9216096e+01 3.0736786e+00
+-5.1740202e-01 3.3792435e+00 3.6531784e+00
+-7.0956063e-01 6.9759716e-01 5.4096435e+00
+-2.5392394e+00 4.5007075e-01 8.6214332e+00
+-6.6087560e+01 3.7473266e+00 1.7945138e+01
+-3.0734422e+02 1.7774809e+01 0.0000000e+00
+-2.4529862e-05 1.3336523e-03 1.8833455e-03
+-6.3557586e-04 2.9425480e-02 3.5882818e-02
+-1.3622611e-02 5.5891066e-01 5.0999031e-01
+-2.4023783e-01 9.6454741e+00 5.0625639e+00
+-2.8815365e+00 1.4174071e+02 1.2806825e+00
+-9.3361342e+00 4.1318080e+02 -2.6650666e+00
+-1.8359194e+01 7.4756215e+02 -1.2155121e+00
+-2.7493108e+01 1.0700348e+03 8.5377819e-01
+-3.4603420e+01 1.3015995e+03 9.9626285e-01
+-3.7785570e+01 1.3920069e+03 1.5355892e+00
+-3.6497750e+01 1.3486822e+03 2.1634836e+00
+-3.2119404e+01 1.1992832e+03 1.9891006e+00
+-2.6120826e+01 9.7411677e+02 2.0884749e+00
+-1.9562977e+01 7.1341319e+02 2.7835838e+00
+-1.3618720e+01 4.5783022e+02 3.5362864e+00
+-8.7745988e+00 2.4205050e+02 4.0535802e+00
+-4.7445723e+00 9.4976552e+01 3.2496093e+00
+-1.8210055e+00 2.4329027e+01 1.1616978e+00
+-6.1943387e-01 4.8661503e+00 7.0365702e-01
+-3.4160245e-01 9.3856915e-01 9.5691867e-01
+-1.2503881e+00 1.5835155e-01 1.9083872e+00
+-4.1146871e+01 1.6011904e-01 9.2405775e+00
+-2.0192522e+02 2.5759722e+00 0.0000000e+00
+-1.3550492e-05 0.0000000e+00 1.3444739e-03
+-4.0543254e-04 0.0000000e+00 3.1093409e-02
+-1.0377756e-02 0.0000000e+00 5.9813127e-01
+-2.3735190e-01 0.0000000e+00 1.0417306e+01
+-4.6560537e+00 1.4966176e+02 5.0052269e+00
+-1.4830008e+01 4.2821397e+02 -1.6355561e+00
+-2.8971880e+01 7.6515504e+02 -2.3282309e-01
+-4.3534173e+01 1.1004669e+03 1.8811406e+00
+-5.6123991e+01 1.3485190e+03 1.3398670e+00
+-6.2926897e+01 1.4470221e+03 2.5958970e+00
+-6.1434211e+01 1.4057562e+03 3.8852706e+00
+-5.4542328e+01 1.2536581e+03 3.3588526e+00
+-4.5177959e+01 1.0198436e+03 3.9203728e+00
+-3.4421778e+01 7.4959145e+02 5.2037039e+00
+-2.4640002e+01 4.8675940e+02 5.1091120e+00
+-1.6766066e+01 2.6367667e+02 4.5033982e+00
+-9.7434707e+00 1.0891683e+02 3.4014454e+00
+-4.5475435e+00 3.1878542e+01 1.3901799e+00
+-2.2028235e+00 7.7159970e+00 3.9586061e-01
+-1.3618419e+00 1.8843215e+00 1.1732463e-01
+-1.5416022e+00 2.9064470e-01 4.5680493e-01
+-1.4611260e+01 0.0000000e+00 3.2611535e+00
+-6.7090580e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.8801335e+00 7.4513709e+01 1.6475276e+01
+5.7538358e+00 2.5455024e+02 6.5652297e+00
+1.6293301e+01 4.3610273e+02 1.1818511e+01
+2.7057655e+01 6.2667401e+02 1.5252669e+01
+-2.2744993e+01 8.1269148e+02 1.5927220e+01
+-9.8847275e+01 9.1412318e+02 5.2361735e+01
+-1.1464504e+02 9.3103447e+02 7.1559890e+01
+-1.1402522e+02 8.7092276e+02 5.7753602e+01
+-1.2954988e+02 7.2815637e+02 7.8104568e+01
+-1.2032167e+02 5.5732017e+02 9.9098858e+01
+-1.1036731e+02 3.9498005e+02 6.9538058e+01
+-1.0987847e+02 2.3655833e+02 4.0750627e+01
+-8.3307269e+01 1.1015171e+02 3.1858758e+01
+-6.2011203e+01 4.4186132e+01 1.6016910e+01
+-5.8427180e+01 2.0321771e+01 1.8921708e-01
+-5.0870258e+01 1.0955209e+01 -2.9411068e+00
+-2.5569874e+01 4.0480870e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.1208419e+02 0.0000000e+00 -1.6056572e+01
+-4.2495115e+02 0.0000000e+00 1.9709057e+01
+-6.9471896e+02 0.0000000e+00 8.2736619e+01
+-7.5080036e+02 0.0000000e+00 4.7331811e+01
+-8.8952135e+02 0.0000000e+00 3.6956469e+01
+-1.0433439e+03 0.0000000e+00 1.7077424e+02
+-8.8072930e+02 0.0000000e+00 2.3090886e+02
+-6.9262651e+02 0.0000000e+00 1.8013476e+02
+-6.4041850e+02 0.0000000e+00 2.4840057e+02
+-4.5482337e+02 0.0000000e+00 3.1824007e+02
+-2.6732379e+02 0.0000000e+00 2.0538176e+02
+-2.2888821e+02 0.0000000e+00 1.0036209e+02
+-1.9219089e+02 0.0000000e+00 8.7722374e+01
+-2.1428588e+02 0.0000000e+00 5.4848939e+01
+-2.6903078e+02 0.0000000e+00 2.3117336e+00
+-2.4891123e+02 0.0000000e+00 -1.1115088e+01
+-1.2076202e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-3.6357816e+02 -1.9814510e+02 3.2818848e+01
+-1.3478424e+03 -7.0211495e+02 6.0793331e+01
+-2.4938868e+03 -1.1956141e+03 4.5670906e+01
+-3.3098988e+03 -1.5614055e+03 1.2705725e+02
+-3.8608308e+03 -1.7837961e+03 1.8850827e+02
+-4.2247305e+03 -1.8113453e+03 1.8898080e+02
+-4.0185267e+03 -1.6952555e+03 2.8591830e+02
+-3.4094402e+03 -1.4807174e+03 3.6223661e+02
+-2.8821011e+03 -1.1725866e+03 3.8275061e+02
+-2.1898224e+03 -8.1499410e+02 4.3965526e+02
+-1.3319189e+03 -4.5586007e+02 3.8769269e+02
+-8.5079261e+02 -1.6487345e+02 2.4316840e+02
+-6.5807751e+02 -1.7262445e+01 1.5925464e+02
+-5.3662188e+02 9.5746056e+00 1.1532203e+02
+-4.4536494e+02 -1.6863488e+00 6.5494167e+01
+-3.2245316e+02 -8.5493681e+00 1.6116444e+01
+-1.4659335e+02 -5.4912754e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-9.0285311e+00 -2.2481020e+02 3.7595636e+01
+-4.7402395e+01 -6.2598071e+02 1.4649039e+01
+-6.5536923e+01 -1.0901222e+03 -8.9660029e+00
+-1.0873495e+01 -1.5442468e+03 1.1845785e+01
+5.8728376e+01 -1.8699060e+03 1.6495020e+01
+7.8584957e+01 -1.9884779e+03 1.6101396e+01
+1.0285362e+02 -1.9299357e+03 3.3272381e+01
+1.2981464e+02 -1.7260614e+03 3.4841171e+01
+1.0025272e+02 -1.4047415e+03 3.6869845e+01
+8.2809454e+01 -1.0287443e+03 4.8206285e+01
+1.0402594e+02 -6.5542666e+02 3.2592582e+01
+7.7997118e+01 -3.3279764e+02 1.2810418e+01
+2.1150512e+01 -1.1762833e+02 8.9096941e+00
+-2.6650495e+01 -2.4600672e+01 7.7663159e+00
+-5.5732626e+01 -2.8416849e+00 5.6610389e+00
+-5.4690422e+01 -2.6242918e-01 1.6306075e+00
+-2.8717995e+01 -5.2380755e-01 0.0000000e+00
+0 0 0
+0 0 0
+2.3689132e-05 -2.3723031e-03 2.3350636e-03
+7.4806986e-04 -5.1837915e-02 5.3019481e-02
+1.9792388e-02 -9.6847628e-01 9.9132487e-01
+4.6354995e-01 -1.6276063e+01 1.6566495e+01
+9.2874983e+00 -2.2942568e+02 7.2386245e+00
+2.7626816e+01 -6.5719415e+02 -4.0042016e+00
+4.9731544e+01 -1.1709223e+03 -1.9059670e+00
+6.7374559e+01 -1.6581503e+03 1.0891256e+00
+7.4446532e+01 -1.9989881e+03 -4.0271215e-01
+7.1356843e+01 -2.1242558e+03 1.0920386e+00
+6.2966799e+01 -2.0559881e+03 2.7431008e+00
+5.2090870e+01 -1.8315702e+03 1.6216721e+00
+3.9285511e+01 -1.4895242e+03 1.9702642e+00
+2.6002918e+01 -1.0901037e+03 2.8747304e+00
+1.3793132e+01 -6.9261551e+02 1.6942510e+00
+4.2926141e+00 -3.5296228e+02 7.9025118e-01
+-2.9248495e-01 -1.2687294e+02 5.8380904e-01
+-1.2239437e+00 -2.7290506e+01 -7.2729614e-02
+-1.3527642e+00 -3.7898968e+00 6.8037593e-03
+-1.2320908e+00 -3.6422368e-01 -1.5616099e-02
+-1.5277816e+00 -1.2366447e-01 -3.9757186e-01
+-1.6603568e+01 -1.5050361e+00 3.2839693e+00
+-8.6460535e+01 -1.1371933e+01 0.0000000e+00
+4.0720648e-05 -5.7292841e-03 3.2917306e-03
+1.1544057e-03 -1.1216449e-01 6.1828326e-02
+2.5887567e-02 -1.8056350e+00 8.5947683e-01
+4.6285843e-01 -2.4379635e+01 8.2599519e+00
+5.4913769e+00 -2.3102312e+02 1.4844404e+00
+1.6652298e+01 -6.7638118e+02 -5.3169351e+00
+2.9809067e+01 -1.2217038e+03 -2.7036913e+00
+3.9333376e+01 -1.7280498e+03 3.6948981e-01
+4.2262544e+01 -2.0757829e+03 2.9833327e-01
+3.9766772e+01 -2.2030553e+03 1.5454669e+00
+3.4392683e+01 -2.1278340e+03 2.5008697e+00
+2.7808516e+01 -1.8908341e+03 1.8370510e+00
+2.0813083e+01 -1.5366315e+03 2.0105692e+00
+1.3445869e+01 -1.1238194e+03 2.7182002e+00
+6.2550248e+00 -7.1276279e+02 2.9918475e+00
+1.0899249e+00 -3.6338364e+02 3.5495892e+00
+-8.4465334e-01 -1.3016849e+02 2.9450237e+00
+-6.6569193e-01 -2.6237790e+01 7.3649711e-01
+-3.2366327e-01 -3.7309877e+00 3.8110998e-01
+-2.3341751e-01 -3.7784029e-01 2.8825474e-01
+-1.0931867e+00 8.1403483e-02 -7.3767884e-02
+-4.6840248e+01 -2.5784437e+00 7.4211601e+00
+-2.8584886e+02 -4.5845168e+01 0.0000000e+00
+3.0548592e-05 -6.9522256e-03 1.1662599e-03
+8.8411485e-04 -1.2795921e-01 1.5495553e-02
+1.9102466e-02 -1.9282346e+00 1.0812861e-01
+3.1485292e-01 -2.4572116e+01 -1.8122922e-01
+3.2861245e+00 -2.3161985e+02 -4.5691224e+00
+1.0159123e+01 -6.8968572e+02 -7.0202582e+00
+1.8268431e+01 -1.2544524e+03 -3.6447512e+00
+2.4098433e+01 -1.7724689e+03 -3.9282159e-02
+2.5879128e+01 -2.1238660e+03 1.0726064e+00
+2.4359585e+01 -2.2517924e+03 2.3954090e+00
+2.1088305e+01 -2.1720170e+03 3.2081120e+00
+1.7105422e+01 -1.9271942e+03 2.8596043e+00
+1.2904774e+01 -1.5656490e+03 3.0500571e+00
+8.4576882e+00 -1.1451166e+03 3.9657086e+00
+4.0733198e+00 -7.2658390e+02 5.4008799e+00
+8.8555344e-01 -3.7163297e+02 7.4236416e+00
+-3.6163515e-01 -1.3248740e+02 7.2857409e+00
+-3.1162802e-01 -2.3579495e+01 3.9285469e+00
+-2.2502700e-01 -3.9653221e+00 3.8706418e+00
+-3.5988210e-01 -7.6837516e-01 3.9113665e+00
+-1.4736660e+00 2.0852903e-01 2.7120542e+00
+-6.1128854e+01 -4.7663586e+00 -4.1564124e-01
+-4.9176907e+02 -1.1032344e+02 0.0000000e+00
+-1.4473737e-05 -5.3990924e-03 -1.5795295e-03
+-3.8383851e-05 -9.4144111e-02 -3.6105391e-02
+2.9601724e-03 -1.3483317e+00 -6.3069347e-01
+7.6408872e-02 -1.6766765e+01 -8.6733749e+00
+8.6841082e-01 -2.3173232e+02 -1.1113698e+01
+2.7571943e+00 -6.9952954e+02 -9.4699220e+00
+4.6784804e+00 -1.2744217e+03 -4.8039330e+00
+5.4024017e+00 -1.7982939e+03 -1.9297825e-01
+4.5576957e+00 -2.1508314e+03 2.4465962e+00
+2.8904435e+00 -2.2784362e+03 4.6485105e+00
+1.2848072e+00 -2.1957661e+03 6.1696735e+00
+1.5768227e-01 -1.9465502e+03 6.8187960e+00
+-4.6321198e-01 -1.5813482e+03 7.8846213e+00
+-8.9599669e-01 -1.1574074e+03 9.8486417e+00
+-1.2752004e+00 -7.3603786e+02 1.3002401e+01
+-1.2680144e+00 -3.7977788e+02 1.7889890e+01
+-7.5368060e-01 -1.3972791e+02 2.3687339e+01
+-2.4888279e-01 -2.5511047e+01 2.4933236e+01
+-3.1459314e-01 -8.3964615e+00 2.8528519e+01
+-6.8482645e-01 -3.5368791e+00 2.9846535e+01
+-1.3792512e+00 -8.5301529e-01 2.6716809e+01
+-3.8392412e+01 -1.3882127e+01 -1.2106449e+01
+-6.3656453e+02 -2.0903686e+02 0.0000000e+00
+-1.3772723e-04 -3.1331956e-03 -2.2466724e-03
+-2.5891897e-03 -5.2693438e-02 -4.3369601e-02
+-4.4478781e-02 -7.5507335e-01 -6.3098837e-01
+-7.8568445e-01 -1.0608942e+01 -6.6682863e+00
+-3.2029262e+01 -2.2318251e+02 -7.9260490e+00
+-9.9705200e+01 -6.8075423e+02 -3.3998031e+00
+-1.8723976e+02 -1.2407392e+03 6.6697752e+00
+-2.7073330e+02 -1.7487467e+03 2.0295789e+01
+-3.3116574e+02 -2.0884533e+03 3.5188470e+01
+-3.5847314e+02 -2.2106374e+03 5.1397110e+01
+-3.5198138e+02 -2.1290672e+03 6.8206868e+01
+-3.1712968e+02 -1.8868841e+03 8.5162926e+01
+-2.6183542e+02 -1.5345520e+03 1.0298921e+02
+-1.9526834e+02 -1.1266753e+03 1.2165618e+02
+-1.2689361e+02 -7.2171258e+02 1.4000878e+02
+-6.6054464e+01 -3.7814525e+02 1.5466743e+02
+-2.2268661e+01 -1.3869124e+02 1.5642570e+02
+-5.2742172e-01 -2.0795036e+01 1.4986240e+02
+-3.5077581e-02 -8.9381591e+00 1.4724868e+02
+-3.0193940e-01 -4.3201482e+00 1.4294330e+02
+6.1425376e-01 -1.0876383e+00 1.3151619e+02
+1.4695216e+01 -2.1784391e+01 2.8263414e+01
+-7.6052405e+02 -3.0697877e+02 0.0000000e+00
+-3.6531840e-04 -1.7591473e-03 -1.2942221e-03
+-7.2842058e-03 -3.0934314e-02 -2.1409002e-02
+-1.3202414e-01 -4.9317844e-01 -2.5218366e-01
+-2.4010118e+00 -8.2277810e+00 -2.0381231e+00
+-8.7271488e+01 -1.9784575e+02 -1.9793841e+00
+-2.4084424e+02 -6.2183964e+02 1.1951987e+01
+-4.3427935e+02 -1.1368379e+03 4.0256511e+01
+-6.1622080e+02 -1.6010790e+03 7.9563027e+01
+-7.4677237e+02 -1.9099944e+03 1.2622647e+02
+-8.0617739e+02 -2.0206416e+03 1.7795819e+02
+-7.9353652e+02 -1.9456498e+03 2.3224404e+02
+-7.1969717e+02 -1.7246816e+03 2.8659326e+02
+-6.0068497e+02 -1.4042027e+03 3.3867492e+02
+-4.5492650e+02 -1.0332814e+03 3.8512716e+02
+-3.0244141e+02 -6.6393760e+02 4.2105217e+02
+-1.6444807e+02 -3.4726840e+02 4.3981411e+02
+-6.1817170e+01 -1.2138492e+02 4.3578343e+02
+-5.4395222e-01 -1.4637069e+01 4.2543029e+02
+1.8500628e+00 -5.9186062e+00 4.1472676e+02
+2.7110082e+00 -2.8110442e+00 4.0092239e+02
+6.9057196e+00 -4.5760276e-01 3.7570903e+02
+6.6437972e+01 -1.8719963e+01 2.1440503e+02
+-9.8466554e+02 -3.4303694e+02 0.0000000e+00
+-6.7118349e-04 -1.0732198e-03 -5.3656810e-04
+-1.3527279e-02 -2.0336280e-02 -8.0208498e-03
+-2.4723290e-01 -3.5645357e-01 -8.5627757e-02
+-4.5142589e+00 -6.4533772e+00 -7.3791056e-01
+-1.5728187e+02 -1.6260479e+02 9.2554342e+00
+-4.1191028e+02 -5.2557742e+02 3.7713106e+01
+-7.2914220e+02 -9.6567064e+02 9.0033106e+01
+-1.0269628e+03 -1.3601832e+03 1.6361018e+02
+-1.2416615e+03 -1.6214268e+03 2.5312376e+02
+-1.3414916e+03 -1.7144201e+03 3.5314297e+02
+-1.3242344e+03 -1.6501899e+03 4.5787850e+02
+-1.2063314e+03 -1.4625495e+03 5.6137967e+02
+-1.0129977e+03 -1.1910178e+03 6.5755500e+02
+-7.7364594e+02 -8.7670946e+02 7.3955170e+02
+-5.2083307e+02 -5.6285963e+02 7.9986033e+02
+-2.8952697e+02 -2.9174662e+02 8.3160826e+02
+-1.1369125e+02 -9.7213974e+01 8.3244570e+02
+3.2469427e-02 -9.8156870e+00 8.2006998e+02
+5.5859072e+00 -3.4217435e+00 8.0340624e+02
+8.8492731e+00 -1.6972578e+00 7.7941290e+02
+1.7988123e+01 -5.4093035e-01 7.3711245e+02
+9.5680138e+01 -1.4762516e+01 5.6656743e+02
+-1.3659510e+03 -3.0460487e+02 0.0000000e+00
+-9.9653725e-04 -6.8055412e-04 -1.7612178e-04
+-2.0107515e-02 -1.3554132e-02 -2.4462039e-03
+-3.6752017e-01 -2.4839101e-01 -2.5059210e-02
+-6.7025885e+00 -4.6128744e+00 -2.5062012e-01
+-2.2859086e+02 -1.2054354e+02 2.1382972e+01
+-5.8362425e+02 -3.9827847e+02 6.6992852e+01
+-1.0235670e+03 -7.3551235e+02 1.4511853e+02
+-1.4364515e+03 -1.0366317e+03 2.5461093e+02
+-1.7351429e+03 -1.2351745e+03 3.8894736e+02
+-1.8758235e+03 -1.3053217e+03 5.3970643e+02
+-1.8546696e+03 -1.2557894e+03 6.9761288e+02
+-1.6934642e+03 -1.1124936e+03 8.5309075e+02
+-1.4264664e+03 -9.0560963e+02 9.9642348e+02
+-1.0940626e+03 -6.6622165e+02 1.1175790e+03
+-7.4128639e+02 -4.2680453e+02 1.2068678e+03
+-4.1662533e+02 -2.1918085e+02 1.2570440e+03
+-1.6677484e+02 -7.0508788e+01 1.2657150e+03
+1.0076376e+00 -6.4514278e+00 1.2509016e+03
+1.0208201e+01 -2.1040749e+00 1.2279751e+03
+1.6534895e+01 -1.1915360e+00 1.1923159e+03
+3.1332000e+01 -7.9339028e-01 1.1299900e+03
+1.0352400e+02 -1.4278202e+01 9.7881814e+02
+-1.8719940e+03 -2.2086713e+02 0.0000000e+00
+-1.2787585e-03 -3.8709737e-04 -2.2909637e-05
+-2.5778612e-02 -7.8787579e-03 -7.4093294e-05
+-4.7049257e-01 -1.4658107e-01 4.2984175e-03
+-8.5642345e+00 -2.7373492e+00 1.2845207e-01
+-2.8878310e+02 -7.3984811e+01 3.1766860e+01
+-7.2802903e+02 -2.4817422e+02 9.2948186e+01
+-1.2708310e+03 -4.6012890e+02 1.9371735e+02
+-1.7801883e+03 -6.4893263e+02 3.3416114e+02
+-2.1493519e+03 -7.7302474e+02 5.0698366e+02
+-2.3243402e+03 -8.1658231e+02 7.0141051e+02
+-2.2999446e+03 -7.8523788e+02 9.0523773e+02
+-2.1024221e+03 -6.9531122e+02 1.1058136e+03
+-1.7736340e+03 -5.6573626e+02 1.2903848e+03
+-1.3632094e+03 -4.1588962e+02 1.4462451e+03
+-9.2665135e+02 -2.6591789e+02 1.5618295e+03
+-5.2372868e+02 -1.3563789e+02 1.6291679e+03
+-2.1169606e+02 -4.2701103e+01 1.6443626e+03
+1.8501915e+00 -3.7666916e+00 1.6266724e+03
+1.4191048e+01 -1.2365152e+00 1.5974863e+03
+2.3192235e+01 -7.4544926e-01 1.5507989e+03
+4.2830613e+01 -6.1843931e-01 1.4696581e+03
+1.0091035e+02 -1.0852878e+01 1.3261688e+03
+-2.4024948e+03 -1.2383489e+02 0.0000000e+00
+-1.4683896e-03 -1.2625829e-04 4.3958313e-05
+-2.9574179e-02 -2.5877862e-03 1.0776368e-03
+-5.3912540e-01 -4.8332167e-02 2.1978198e-02
+-9.8001369e+00 -9.0302008e-01 4.2639364e-01
+-3.2860480e+02 -2.4926206e+01 3.8668604e+01
+-8.2355773e+02 -8.4262318e+01 1.1049841e+02
+-1.4344033e+03 -1.5656099e+02 2.2655874e+02
+-2.0075685e+03 -2.2089110e+02 3.8769215e+02
+-2.4233148e+03 -2.6310144e+02 5.8617085e+02
+-2.6209282e+03 -2.7786255e+02 8.0973270e+02
+-2.5942983e+03 -2.6712647e+02 1.0442465e+03
+-2.3726713e+03 -2.3646881e+02 1.2750129e+03
+-2.0029669e+03 -1.9234437e+02 1.4872569e+03
+-1.5409551e+03 -1.4133663e+02 1.6664848e+03
+-1.0490762e+03 -9.0273238e+01 1.7998687e+03
+-5.9456415e+02 -4.5887623e+01 1.8788196e+03
+-2.4166102e+02 -1.4303815e+01 1.8980585e+03
+2.2189734e+00 -1.2517955e+00 1.8781714e+03
+1.6507567e+01 -4.1907950e-01 1.8446082e+03
+2.7082548e+01 -2.5572663e-01 1.7905654e+03
+4.9661889e+01 -2.1894949e-01 1.6967502e+03
+9.8319044e+01 -3.9906714e+00 1.5431370e+03
+-2.7997241e+03 -3.7653680e+01 0.0000000e+00
+-1.5349933e-03 1.2625829e-04 6.3936047e-05
+-3.0904834e-02 2.5877862e-03 1.4505621e-03
+-5.6313977e-01 4.8332167e-02 2.8317725e-02
+-1.0231751e+01 9.0302008e-01 5.4154282e-01
+-3.4249382e+02 2.4926206e+01 4.1078019e+01
+-8.5689479e+02 8.4262318e+01 1.1666735e+02
+-1.4914979e+03 1.5656099e+02 2.3810280e+02
+-2.0869381e+03 2.2089110e+02 4.0647522e+02
+-2.5189364e+03 2.6310144e+02 6.1391760e+02
+-2.7244281e+03 2.7786255e+02 8.4765985e+02
+-2.6969924e+03 2.6712647e+02 1.0929001e+03
+-2.4669279e+03 2.3646881e+02 1.3342223e+03
+-2.0829280e+03 1.9234437e+02 1.5561436e+03
+-1.6029127e+03 1.4133663e+02 1.7435455e+03
+-1.0917494e+03 9.0273238e+01 1.8831604e+03
+-6.1928422e+02 4.5887623e+01 1.9661695e+03
+-2.5220983e+02 1.4303815e+01 1.9867740e+03
+2.2742952e+00 1.2517952e+00 1.9660957e+03
+1.7189208e+01 4.1906914e-01 1.9310161e+03
+2.8233101e+01 2.5511366e-01 1.8744832e+03
+5.1733942e+01 2.0633001e-01 1.7762820e+03
+9.8290934e+01 3.5946873e+00 1.6147536e+03
+-2.9426643e+03 3.7884355e+01 0.0000000e+00
+-1.4683896e-03 3.8709737e-04 4.3958313e-05
+-2.9574179e-02 7.8787579e-03 1.0776368e-03
+-5.3912540e-01 1.4658107e-01 2.1978198e-02
+-9.8001369e+00 2.7373492e+00 4.2639364e-01
+-3.2860480e+02 7.3984811e+01 3.8668604e+01
+-8.2355773e+02 2.4817422e+02 1.1049841e+02
+-1.4344033e+03 4.6012890e+02 2.2655874e+02
+-2.0075685e+03 6.4893263e+02 3.8769215e+02
+-2.4233148e+03 7.7302474e+02 5.8617085e+02
+-2.6209282e+03 8.1658231e+02 8.0973270e+02
+-2.5942983e+03 7.8523788e+02 1.0442465e+03
+-2.3726713e+03 6.9531122e+02 1.2750129e+03
+-2.0029669e+03 5.6573626e+02 1.4872569e+03
+-1.5409551e+03 4.1588962e+02 1.6664848e+03
+-1.0490762e+03 2.6591789e+02 1.7998687e+03
+-5.9456415e+02 1.3563789e+02 1.8788196e+03
+-2.4166102e+02 4.2701103e+01 1.8980585e+03
+2.2189736e+00 3.7666915e+00 1.8781714e+03
+1.6507548e+01 1.2364878e+00 1.8446081e+03
+2.7082056e+01 7.4491909e-01 1.7905646e+03
+4.9653859e+01 6.0496111e-01 1.6967237e+03
+9.8164011e+01 1.0508008e+01 1.5424781e+03
+-2.7998035e+03 1.2389190e+02 0.0000000e+00
+-1.2787585e-03 6.8055412e-04 -2.2909637e-05
+-2.5778612e-02 1.3554132e-02 -7.4093294e-05
+-4.7049257e-01 2.4839101e-01 4.2984175e-03
+-8.5642345e+00 4.6128744e+00 1.2845207e-01
+-2.8878310e+02 1.2054354e+02 3.1766860e+01
+-7.2802903e+02 3.9827847e+02 9.2948186e+01
+-1.2708310e+03 7.3551235e+02 1.9371735e+02
+-1.7801883e+03 1.0366317e+03 3.3416114e+02
+-2.1493519e+03 1.2351745e+03 5.0698366e+02
+-2.3243402e+03 1.3053217e+03 7.0141051e+02
+-2.2999446e+03 1.2557894e+03 9.0523773e+02
+-2.1024221e+03 1.1124936e+03 1.1058136e+03
+-1.7736340e+03 9.0560963e+02 1.2903848e+03
+-1.3632094e+03 6.6622165e+02 1.4462451e+03
+-9.2665135e+02 4.2680453e+02 1.5618295e+03
+-5.2372868e+02 2.1918085e+02 1.6291679e+03
+-2.1169606e+02 7.0508787e+01 1.6443626e+03
+1.8501912e+00 6.4514272e+00 1.6266724e+03
+1.4191033e+01 2.1040612e+00 1.5974863e+03
+2.3191779e+01 1.1911937e+00 1.5507980e+03
+4.2818658e+01 7.8492964e-01 1.4696288e+03
+1.0054251e+02 1.4050847e+01 1.3252818e+03
+-2.4025024e+03 2.2094488e+02 0.0000000e+00
+-9.9653725e-04 1.0732198e-03 -1.7612178e-04
+-2.0107515e-02 2.0336280e-02 -2.4462039e-03
+-3.6752017e-01 3.5645357e-01 -2.5059210e-02
+-6.7025885e+00 6.4533772e+00 -2.5062012e-01
+-2.2859086e+02 1.6260479e+02 2.1382972e+01
+-5.8362425e+02 5.2557742e+02 6.6992852e+01
+-1.0235670e+03 9.6567064e+02 1.4511853e+02
+-1.4364515e+03 1.3601832e+03 2.5461093e+02
+-1.7351429e+03 1.6214268e+03 3.8894736e+02
+-1.8758235e+03 1.7144201e+03 5.3970643e+02
+-1.8546696e+03 1.6501899e+03 6.9761288e+02
+-1.6934642e+03 1.4625495e+03 8.5309075e+02
+-1.4264664e+03 1.1910178e+03 9.9642348e+02
+-1.0940626e+03 8.7670946e+02 1.1175790e+03
+-7.4128639e+02 5.6285963e+02 1.2068678e+03
+-4.1662533e+02 2.9174662e+02 1.2570440e+03
+-1.6677484e+02 9.7213974e+01 1.2657150e+03
+1.0076373e+00 9.8156871e+00 1.2509016e+03
+1.0208187e+01 3.4217403e+00 1.2279751e+03
+1.6534468e+01 1.6972017e+00 1.1923153e+03
+3.1316310e+01 5.4058896e-01 1.1299685e+03
+1.0312748e+02 1.4783933e+01 9.7829927e+02
+-1.8720852e+03 3.0473301e+02 0.0000000e+00
+-6.7118349e-04 1.7591473e-03 -5.3656810e-04
+-1.3527279e-02 3.0934314e-02 -8.0208498e-03
+-2.4723290e-01 4.9317844e-01 -8.5627757e-02
+-4.5142589e+00 8.2277810e+00 -7.3791056e-01
+-1.5728187e+02 1.9784575e+02 9.2554342e+00
+-4.1191028e+02 6.2183964e+02 3.7713106e+01
+-7.2914220e+02 1.1368379e+03 9.0033106e+01
+-1.0269628e+03 1.6010790e+03 1.6361018e+02
+-1.2416615e+03 1.9099944e+03 2.5312376e+02
+-1.3414916e+03 2.0206416e+03 3.5314297e+02
+-1.3242344e+03 1.9456498e+03 4.5787850e+02
+-1.2063314e+03 1.7246816e+03 5.6137967e+02
+-1.0129977e+03 1.4042027e+03 6.5755500e+02
+-7.7364594e+02 1.0332814e+03 7.3955170e+02
+-5.2083307e+02 6.6393760e+02 7.9986033e+02
+-2.8952697e+02 3.4726840e+02 8.3160826e+02
+-1.1369125e+02 1.2138492e+02 8.3244570e+02
+3.2469646e-02 1.4637069e+01 8.2006998e+02
+5.5858982e+00 5.9186088e+00 8.0340624e+02
+8.8489155e+00 2.8110977e+00 7.7941274e+02
+1.7971297e+01 4.5752807e-01 7.3710576e+02
+9.5141386e+01 1.8722103e+01 5.6650844e+02
+-1.3662129e+03 3.4334294e+02 0.0000000e+00
+-3.6531840e-04 3.1331956e-03 -1.2942221e-03
+-7.2842058e-03 5.2693438e-02 -2.1409002e-02
+-1.3202414e-01 7.5507335e-01 -2.5218366e-01
+-2.4010118e+00 1.0608942e+01 -2.0381231e+00
+-8.7271488e+01 2.2318251e+02 -1.9793841e+00
+-2.4084424e+02 6.8075423e+02 1.1951987e+01
+-4.3427935e+02 1.2407392e+03 4.0256511e+01
+-6.1622080e+02 1.7487467e+03 7.9563027e+01
+-7.4677237e+02 2.0884533e+03 1.2622647e+02
+-8.0617739e+02 2.2106374e+03 1.7795819e+02
+-7.9353652e+02 2.1290672e+03 2.3224404e+02
+-7.1969717e+02 1.8868841e+03 2.8659326e+02
+-6.0068497e+02 1.5345520e+03 3.3867492e+02
+-4.5492650e+02 1.1266753e+03 3.8512716e+02
+-3.0244141e+02 7.2171258e+02 4.2105217e+02
+-1.6444807e+02 3.7814525e+02 4.3981411e+02
+-6.1817170e+01 1.3869124e+02 4.3578343e+02
+-5.4395225e-01 2.0795036e+01 4.2543029e+02
+1.8500600e+00 8.9381569e+00 4.1472674e+02
+2.7105936e+00 4.3201284e+00 4.0092185e+02
+6.8929971e+00 1.0953277e+00 3.7571080e+02
+6.6141863e+01 2.2031618e+01 2.1438447e+02
+-9.8456068e+02 3.0718752e+02 0.0000000e+00
+-1.3772723e-04 5.3990924e-03 -2.2466724e-03
+-2.5891897e-03 9.4144111e-02 -4.3369601e-02
+-4.4478781e-02 1.3483317e+00 -6.3098837e-01
+-7.8568445e-01 1.6766765e+01 -6.6682863e+00
+-3.2029262e+01 2.3173232e+02 -7.9260490e+00
+-9.9705200e+01 6.9952954e+02 -3.3998031e+00
+-1.8723976e+02 1.2744217e+03 6.6697752e+00
+-2.7073330e+02 1.7982939e+03 2.0295789e+01
+-3.3116574e+02 2.1508314e+03 3.5188470e+01
+-3.5847314e+02 2.2784362e+03 5.1397110e+01
+-3.5198138e+02 2.1957661e+03 6.8206868e+01
+-3.1712968e+02 1.9465502e+03 8.5162926e+01
+-2.6183542e+02 1.5813482e+03 1.0298921e+02
+-1.9526834e+02 1.1574074e+03 1.2165618e+02
+-1.2689361e+02 7.3603786e+02 1.4000878e+02
+-6.6054464e+01 3.7977788e+02 1.5466743e+02
+-2.2268661e+01 1.3972791e+02 1.5642570e+02
+-5.2742154e-01 2.5511047e+01 1.4986240e+02
+-3.5084126e-02 8.3964537e+00 1.4724864e+02
+-3.0243004e-01 3.5368665e+00 1.4294315e+02
+6.0348731e-01 8.5555544e-01 1.3152544e+02
+1.4676771e+01 1.3934015e+01 2.8118813e+01
+-7.6041854e+02 2.0918964e+02 0.0000000e+00
+-1.4473734e-05 6.9522256e-03 -1.5795295e-03
+-3.8383802e-05 1.2795921e-01 -3.6105391e-02
+2.9601727e-03 1.9282346e+00 -6.3069347e-01
+7.6408874e-02 2.4572116e+01 -8.6733749e+00
+8.6841083e-01 2.3161985e+02 -1.1113698e+01
+2.7571943e+00 6.8968572e+02 -9.4699220e+00
+4.6784804e+00 1.2544524e+03 -4.8039330e+00
+5.4024016e+00 1.7724689e+03 -1.9297825e-01
+4.5576957e+00 2.1238660e+03 2.4465962e+00
+2.8904435e+00 2.2517924e+03 4.6485105e+00
+1.2848073e+00 2.1720170e+03 6.1696735e+00
+1.5768222e-01 1.9271942e+03 6.8187960e+00
+-4.6321235e-01 1.5656490e+03 7.8846214e+00
+-8.9599697e-01 1.1451166e+03 9.8486418e+00
+-1.2752005e+00 7.2658390e+02 1.3002401e+01
+-1.2680145e+00 3.7163297e+02 1.7889890e+01
+-7.5368059e-01 1.3248740e+02 2.3687339e+01
+-2.4888269e-01 2.3579492e+01 2.4933234e+01
+-3.1460307e-01 3.9653270e+00 2.8528514e+01
+-6.8516223e-01 7.6825308e-01 2.9847008e+01
+-1.3870617e+00 -2.1454083e-01 2.6721691e+01
+-3.8227189e+01 4.5516203e+00 -1.2092573e+01
+-6.3642167e+02 1.1031267e+02 0.0000000e+00
+3.0548609e-05 5.7292841e-03 1.1662599e-03
+8.8411515e-04 1.1216449e-01 1.5495553e-02
+1.9102469e-02 1.8056349e+00 1.0812861e-01
+3.1485295e-01 2.4379635e+01 -1.8122927e-01
+3.2861247e+00 2.3102312e+02 -4.5691227e+00
+1.0159122e+01 6.7638118e+02 -7.0202585e+00
+1.8268429e+01 1.2217038e+03 -3.6447513e+00
+2.4098431e+01 1.7280498e+03 -3.9282446e-02
+2.5879127e+01 2.0757829e+03 1.0726067e+00
+2.4359586e+01 2.2030553e+03 2.3954098e+00
+2.1088309e+01 2.1278340e+03 3.2081150e+00
+1.7105417e+01 1.8908341e+03 2.8596069e+00
+1.2904760e+01 1.5366315e+03 3.0500584e+00
+8.4576810e+00 1.1238194e+03 3.9657102e+00
+4.0733179e+00 7.1276278e+02 5.4008800e+00
+8.8555365e-01 3.6338364e+02 7.4236433e+00
+-3.6163590e-01 1.3016844e+02 7.2857348e+00
+-3.1161856e-01 2.6237773e+01 3.9285655e+00
+-2.2502447e-01 3.7309164e+00 3.8705985e+00
+-3.6035071e-01 3.7803084e-01 3.9116089e+00
+-1.4885458e+00 -8.0084318e-02 2.7264855e+00
+-6.1628526e+01 2.6479508e+00 -3.4781455e-01
+-4.9151354e+02 4.5692383e+01 0.0000000e+00
+4.0720730e-05 2.3723031e-03 3.2917305e-03
+1.1544076e-03 5.1837914e-02 6.1828325e-02
+2.5887591e-02 9.6847624e-01 8.5947683e-01
+4.6285864e-01 1.6276064e+01 8.2599511e+00
+5.4913846e+00 2.2942571e+02 1.4844437e+00
+1.6652281e+01 6.5719426e+02 -5.3169465e+00
+2.9808991e+01 1.1709223e+03 -2.7037097e+00
+3.9333322e+01 1.6581502e+03 3.6947331e-01
+4.2262510e+01 1.9989881e+03 2.9833623e-01
+3.9766800e+01 2.1242559e+03 1.5455622e+00
+3.4392747e+01 2.0559880e+03 2.5009964e+00
+2.7808285e+01 1.8315702e+03 1.8371456e+00
+2.0812672e+01 1.4895246e+03 2.0106163e+00
+1.3445717e+01 1.0901031e+03 2.7182582e+00
+6.2550171e+00 6.9261541e+02 2.9918531e+00
+1.0899372e+00 3.5296161e+02 3.5493485e+00
+-8.4437891e-01 1.2687239e+02 2.9452360e+00
+-6.6545709e-01 2.7290666e+01 7.3679565e-01
+-3.2350760e-01 3.7897866e+00 3.8136085e-01
+-2.3348390e-01 3.6364308e-01 2.8762058e-01
+-1.1058912e+00 1.2383706e-01 -6.0759085e-02
+-4.7163086e+01 1.4014730e+00 7.2045002e+00
+-2.8541076e+02 1.1481551e+01 0.0000000e+00
+2.3689311e-05 0.0000000e+00 2.3350634e-03
+7.4807642e-04 0.0000000e+00 5.3019469e-02
+1.9792631e-02 0.0000000e+00 9.9132536e-01
+4.6354067e-01 0.0000000e+00 1.6566498e+01
+9.2871778e+00 2.2481150e+02 7.2387175e+00
+2.7625736e+01 6.2598201e+02 -4.0047483e+00
+4.9728740e+01 1.0901235e+03 -1.9066214e+00
+6.7372573e+01 1.5442480e+03 1.0890206e+00
+7.4445306e+01 1.8699072e+03 -4.0211687e-01
+7.1356553e+01 1.9884755e+03 1.0947936e+00
+6.2968007e+01 1.9299345e+03 2.7463801e+00
+5.2082014e+01 1.7260650e+03 1.6272041e+00
+3.9273284e+01 1.4047318e+03 1.9686149e+00
+2.6003273e+01 1.0287670e+03 2.8788940e+00
+1.3793801e+01 6.5537228e+02 1.6882949e+00
+4.2995516e+00 3.3280051e+02 7.8678786e-01
+-2.8693236e-01 1.1761300e+02 5.8954919e-01
+-1.2162967e+00 2.4599777e+01 -7.0954166e-02
+-1.3486556e+00 2.8535235e+00 1.1147706e-02
+-1.2369717e+00 2.6742866e-01 -1.7299967e-02
+-1.5295976e+00 5.0696111e-01 -4.1395080e-01
+-1.6733495e+01 0.0000000e+00 3.1110908e+00
+-8.6183448e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-9.0488882e+00 1.9817770e+02 3.7595174e+01
+-4.7448616e+01 7.0219907e+02 1.4632429e+01
+-6.5623689e+01 1.1956394e+03 -8.9844211e+00
+-1.0946597e+01 1.5614434e+03 1.1840594e+01
+5.8667882e+01 1.7838603e+03 1.6475074e+01
+7.8577824e+01 1.8113899e+03 1.6177775e+01
+1.0284077e+02 1.6952664e+03 3.3361881e+01
+1.2946683e+02 1.4808943e+03 3.5040652e+01
+9.9907010e+01 1.1727029e+03 3.7085183e+01
+8.2746111e+01 8.1496280e+02 4.7822317e+01
+1.0436291e+02 4.5577376e+02 3.2690239e+01
+7.8047367e+01 1.6475089e+02 1.2813568e+01
+2.1227459e+01 1.6738332e+01 8.9594976e+00
+-2.6658350e+01 -9.5152054e+00 7.7207494e+00
+-5.5645634e+01 1.6946216e+00 5.8071340e+00
+-5.4870874e+01 8.5241386e+00 1.5524595e+00
+-2.8824669e+01 5.3134078e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-3.6368095e+02 0.0000000e+00 3.2854438e+01
+-1.3479471e+03 0.0000000e+00 6.0865327e+01
+-2.4940525e+03 0.0000000e+00 4.5675311e+01
+-3.3101119e+03 0.0000000e+00 1.2706052e+02
+-3.8610457e+03 0.0000000e+00 1.8852555e+02
+-4.2248139e+03 0.0000000e+00 1.8900350e+02
+-4.0185774e+03 0.0000000e+00 2.8590947e+02
+-3.4094832e+03 0.0000000e+00 3.6230274e+02
+-2.8822022e+03 0.0000000e+00 3.8284217e+02
+-2.1898999e+03 0.0000000e+00 4.3974633e+02
+-1.3319081e+03 0.0000000e+00 3.8769727e+02
+-8.5070363e+02 0.0000000e+00 2.4317127e+02
+-6.5800332e+02 0.0000000e+00 1.5925402e+02
+-5.3660507e+02 0.0000000e+00 1.1529394e+02
+-4.4544749e+02 0.0000000e+00 6.5530849e+01
+-3.2249031e+02 0.0000000e+00 1.6148108e+01
+-1.4650296e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.7765192e+02 -5.9022982e+02 9.4076779e+01
+-5.4500693e+02 -2.0703229e+03 1.0608276e+02
+-1.0630309e+03 -3.6920892e+03 -5.4263027e+01
+-1.7428541e+03 -5.0722637e+03 1.1700013e+02
+-2.2547215e+03 -6.0262206e+03 3.6284905e+02
+-2.6324521e+03 -6.3379818e+03 2.5780538e+02
+-2.9041534e+03 -6.0547643e+03 3.2044305e+02
+-2.7194351e+03 -5.3387088e+03 5.8289943e+02
+-2.2781424e+03 -4.3269735e+03 5.6685543e+02
+-1.8775307e+03 -3.1706374e+03 5.1369213e+02
+-1.3317518e+03 -2.0136670e+03 5.3259581e+02
+-8.9864684e+02 -1.0628674e+03 3.7066283e+02
+-7.4615836e+02 -4.8577733e+02 1.7952760e+02
+-6.6480487e+02 -2.1811821e+02 1.1772328e+02
+-5.3834553e+02 -9.5435516e+01 9.8571026e+01
+-3.2873814e+02 -3.8141051e+01 3.6994731e+01
+-1.3840102e+02 -1.2049701e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.8663699e+02 -5.1079223e+02 9.8200525e+01
+-6.3125922e+02 -1.4432567e+03 5.4985974e+01
+-1.1622333e+03 -2.5155608e+03 -2.4869018e+01
+-1.6359660e+03 -3.5006115e+03 2.8569790e+01
+-1.8892644e+03 -4.1347740e+03 8.5077463e+01
+-1.9381167e+03 -4.2993231e+03 6.3120483e+01
+-1.8643163e+03 -4.0984682e+03 7.3937762e+01
+-1.6348103e+03 -3.6181963e+03 1.1805009e+02
+-1.3054184e+03 -2.9190483e+03 1.1579641e+02
+-9.6736246e+02 -2.1135222e+03 1.0885375e+02
+-6.1476759e+02 -1.3114100e+03 1.2576239e+02
+-3.4338367e+02 -6.3197918e+02 1.1625337e+02
+-2.2155644e+02 -2.0291265e+02 7.6269804e+01
+-1.7717357e+02 -3.4240550e+01 4.2918806e+01
+-1.3431593e+02 -3.2607344e-01 2.6445211e+01
+-7.6677575e+01 1.4106419e+00 8.8792442e+00
+-3.1032581e+01 -8.4624254e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.3683382e-06 -4.5202704e-03 4.5473278e-03
+6.9947896e-06 -9.9970422e-02 1.0525882e-01
+1.7193265e-03 -1.9024278e+00 2.0257597e+00
+3.0713555e-02 -3.2852449e+01 3.5310963e+01
+-1.9412348e+00 -4.8167821e+02 1.7425708e+01
+-4.2893217e+00 -1.3889102e+03 -5.0041200e+00
+-4.2140361e-01 -2.4667417e+03 -3.6701850e+00
+1.1150719e+01 -3.4477899e+03 -2.6799862e-01
+2.8396628e+01 -4.0854661e+03 -3.5258944e+00
+4.4440637e+01 -4.2736983e+03 -2.2347768e+00
+5.1757111e+01 -4.0876923e+03 -1.8010880e+00
+5.0932919e+01 -3.6137139e+03 -5.1290064e+00
+4.6152844e+01 -2.9253985e+03 -5.6464745e+00
+3.9653439e+01 -2.1281294e+03 -4.6887011e+00
+3.3514858e+01 -1.3315453e+03 -4.2747541e+00
+2.6783176e+01 -6.5661944e+02 -2.1116529e+00
+1.7180945e+01 -2.2184177e+02 -6.5602643e-01
+6.9369992e+00 -4.2014828e+01 -1.0335331e+00
+1.1860795e+00 -3.5844260e+00 -3.1409782e-01
+-5.2627250e-01 5.3312897e-01 -1.4149028e-01
+-1.3156733e+00 -6.4720194e-02 -1.1480472e+00
+-2.1838817e+01 -4.4077381e+00 8.4948401e+00
+-9.2207447e+01 -9.9439637e+00 0.0000000e+00
+-1.1127408e-05 -1.0838578e-02 6.3701561e-03
+-7.4586673e-05 -2.1387999e-01 1.2150872e-01
+1.7015503e-03 -3.4845842e+00 1.7278511e+00
+6.8622974e-02 -4.7869579e+01 1.7139217e+01
+1.1645205e+00 -4.6432186e+02 4.1096343e+00
+5.2873927e+00 -1.3643131e+03 -9.1225615e+00
+1.4339086e+01 -2.4552140e+03 -5.1802902e+00
+2.7318978e+01 -3.4400912e+03 -8.6455148e-01
+4.0960195e+01 -4.0832222e+03 -1.8062721e+00
+5.1199184e+01 -4.2868062e+03 -1.3073925e-01
+5.4493130e+01 -4.1081971e+03 2.7346311e-01
+5.0991620e+01 -3.6344304e+03 -2.1931440e+00
+4.3925834e+01 -2.9481879e+03 -2.5165517e+00
+3.5730754e+01 -2.1515651e+03 -1.3657444e+00
+2.7680393e+01 -1.3545689e+03 2.3249205e-01
+2.0202819e+01 -6.7878946e+02 3.2896193e+00
+1.2580621e+01 -2.3557701e+02 3.6000476e+00
+5.5446647e+00 -4.4992068e+01 3.6693443e-01
+1.9609127e+00 -5.4892097e+00 -1.2860018e-02
+8.3676517e-01 3.4363153e-03 -5.5409456e-01
+-4.1180438e-01 3.9776837e-01 -1.6978870e+00
+-7.3143702e+01 -1.7696497e+01 3.7895883e+01
+-3.0711366e+02 -4.3565150e+01 0.0000000e+00
+-2.0894443e-05 -1.3089189e-02 2.3020541e-03
+-2.3018297e-04 -2.4219128e-01 3.1727646e-02
+-9.0745854e-04 -3.6782111e+00 2.4536445e-01
+1.9901335e-02 -4.7387954e+01 5.8690811e-02
+4.2050765e-01 -4.5315765e+02 -8.2399009e+00
+2.3299001e+00 -1.3518887e+03 -1.2835089e+01
+7.0809744e+00 -2.4499350e+03 -6.9266121e+00
+1.4338622e+01 -3.4362848e+03 -9.7318328e-01
+2.2276039e+01 -4.0812459e+03 6.5364840e-01
+2.8426381e+01 -4.2929718e+03 2.7524111e+00
+3.0565032e+01 -4.1183903e+03 3.4689264e+00
+2.8730936e+01 -3.6446970e+03 2.1100111e+00
+2.4861652e+01 -2.9601250e+03 2.0902734e+00
+2.0391206e+01 -2.1651209e+03 3.7124821e+00
+1.6000707e+01 -1.3698474e+03 7.0635877e+00
+1.1814887e+01 -6.9468157e+02 1.2026365e+01
+7.2806880e+00 -2.4364669e+02 1.2453721e+01
+3.0499806e+00 -4.2287153e+01 6.3872130e+00
+1.6340079e+00 -6.4947413e+00 5.5337677e+00
+2.0689792e+00 -3.3293674e-01 3.4412918e+00
+1.4587703e+00 1.2254140e+00 -3.1893829e-01
+-1.3320320e+02 -4.6347168e+01 1.0040323e+02
+-5.2939711e+02 -1.2222376e+02 0.0000000e+00
+-5.9440972e-05 -1.0130108e-02 -2.9141143e-03
+-9.1961588e-04 -1.7727172e-01 -6.6952448e-02
+-1.1693997e-02 -2.5515477e+00 -1.1789617e+00
+-1.3509677e-01 -3.1932304e+01 -1.6423107e+01
+-1.4661214e+00 -4.4631276e+02 -2.0933471e+01
+-4.1489997e+00 -1.3482596e+03 -1.7656376e+01
+-6.3464928e+00 -2.4474501e+03 -9.1163141e+00
+-6.7405880e+00 -3.4322785e+03 -9.7963597e-01
+-5.2638703e+00 -4.0760452e+03 3.6411982e+00
+-2.9087364e+00 -4.2910032e+03 7.4717710e+00
+-1.0860756e+00 -4.1183508e+03 9.8031087e+00
+-1.2605333e-01 -3.6452250e+03 1.0614853e+01
+6.7793540e-01 -2.9630878e+03 1.2436553e+01
+1.6996781e+00 -2.1714144e+03 1.6134428e+01
+2.8432606e+00 -1.3803404e+03 2.2508953e+01
+3.6616695e+00 -7.0942823e+02 3.2325928e+01
+3.4133605e+00 -2.5860130e+02 4.3113493e+01
+2.4201304e+00 -4.6477314e+01 4.4634644e+01
+3.2531300e+00 -1.4355232e+01 4.8927411e+01
+5.9947592e+00 -4.3534073e+00 4.6268295e+01
+7.6122444e+00 5.2727114e-01 3.7974745e+01
+-1.8684107e+02 -9.5383084e+01 2.3831248e+02
+-6.9536558e+02 -2.6282793e+02 0.0000000e+00
+-2.1152677e-04 -5.8585054e-03 -4.1978030e-03
+-4.0482634e-03 -9.8742859e-02 -8.1267589e-02
+-7.0358117e-02 -1.4183883e+00 -1.1885477e+00
+-1.2375701e+00 -1.9963424e+01 -1.2705541e+01
+-5.4407536e+01 -4.2160149e+02 -1.5038536e+01
+-1.7140080e+02 -1.2848339e+03 -6.7685998e+00
+-3.1914007e+02 -2.3336617e+03 1.1343347e+01
+-4.5413755e+02 -3.2732805e+03 3.5749614e+01
+-5.4509732e+02 -3.8889262e+03 6.2562184e+01
+-5.8019172e+02 -4.0985703e+03 9.1847870e+01
+-5.6367355e+02 -3.9370989e+03 1.2228816e+02
+-5.0589599e+02 -3.4876842e+03 1.5351367e+02
+-4.1783370e+02 -2.8406130e+03 1.8703709e+02
+-3.1159185e+02 -2.0906504e+03 2.2259662e+02
+-2.0069248e+02 -1.3419302e+03 2.5798527e+02
+-1.0055009e+02 -7.0349459e+02 2.8654726e+02
+-2.7142294e+01 -2.5728353e+02 2.9010312e+02
+3.7655122e+00 -3.7665037e+01 2.7699791e+02
+7.8595043e+00 -1.4800898e+01 2.6954899e+02
+1.3606334e+01 -4.6423460e+00 2.5592966e+02
+1.8138513e+01 1.5534996e+00 2.3737891e+02
+-2.6130558e+02 -1.3648962e+02 5.5660111e+02
+-8.5095253e+02 -4.1686759e+02 0.0000000e+00
+-5.2208194e-04 -3.2702398e-03 -2.4315021e-03
+-1.0523700e-02 -5.7546879e-02 -4.0387988e-02
+-1.9299482e-01 -9.1788352e-01 -4.7992206e-01
+-3.5504290e+00 -1.5315958e+01 -3.9779711e+00
+-1.3727264e+02 -3.7093578e+02 -4.6425215e+00
+-3.8534538e+02 -1.1650476e+03 2.0072262e+01
+-6.9583681e+02 -2.1229645e+03 7.0932492e+01
+-9.8361032e+02 -2.9767512e+03 1.4179268e+02
+-1.1853979e+03 -3.5347854e+03 2.2627737e+02
+-1.2736175e+03 -3.7253720e+03 3.2051918e+02
+-1.2510625e+03 -3.5792768e+03 4.2022304e+02
+-1.1361596e+03 -3.1721353e+03 5.2113659e+02
+-9.5239844e+02 -2.5867877e+03 6.1902481e+02
+-7.2562950e+02 -1.9084001e+03 7.0747747e+02
+-4.8473445e+02 -1.2293076e+03 7.7714792e+02
+-2.6266482e+02 -6.4386458e+02 8.1573466e+02
+-9.3129851e+01 -2.2444484e+02 8.1420866e+02
+4.1389911e+00 -2.5789417e+01 7.9765009e+02
+1.2133440e+01 -8.4880153e+00 7.8105386e+02
+2.0814111e+01 -6.6462909e-01 7.5897304e+02
+2.6394688e+01 4.5005734e+00 7.3653554e+02
+-4.1283751e+02 -1.3661814e+02 1.2159383e+03
+-1.0345265e+03 -4.8414613e+02 0.0000000e+00
+-9.4351747e-04 -1.9753854e-03 -1.0225204e-03
+-1.9219579e-02 -3.7415244e-02 -1.5461854e-02
+-3.5551835e-01 -6.5551586e-01 -1.6954406e-01
+-6.5724606e+00 -1.1864950e+01 -1.5623508e+00
+-2.4183425e+02 -3.0345376e+02 1.5508010e+01
+-6.4610776e+02 -9.8119867e+02 6.5856590e+01
+-1.1483763e+03 -1.7973890e+03 1.5951517e+02
+-1.6151324e+03 -2.5209901e+03 2.9192362e+02
+-1.9464935e+03 -2.9918630e+03 4.5383327e+02
+-2.0971325e+03 -3.1518251e+03 6.3592728e+02
+-2.0684780e+03 -3.0272882e+03 8.2818241e+02
+-1.8878530e+03 -2.6825122e+03 1.0200808e+03
+-1.5923499e+03 -2.1878144e+03 1.2004597e+03
+-1.2234911e+03 -1.6144750e+03 1.3563798e+03
+-8.2836636e+02 -1.0390397e+03 1.4736452e+03
+-4.6113901e+02 -5.3920499e+02 1.5405977e+03
+-1.7775206e+02 -1.7883423e+02 1.5590479e+03
+2.9694301e+00 -1.6606271e+01 1.5469277e+03
+1.4765238e+01 -3.5981944e+00 1.5328586e+03
+2.5761238e+01 1.7609726e+00 1.5135197e+03
+2.9420498e+01 5.3025870e+00 1.5012854e+03
+-6.5241589e+02 -1.0953978e+02 2.2223029e+03
+-1.2102823e+03 -4.2600634e+02 0.0000000e+00
+-1.3842564e-03 -1.2374056e-03 -3.5026070e-04
+-2.8208794e-02 -2.4624707e-02 -5.0395197e-03
+-5.2137843e-01 -4.5095642e-01 -5.5740697e-02
+-9.6182437e+00 -8.3709043e+00 -6.3413073e-01
+-3.4578216e+02 -2.2415053e+02 3.7253948e+01
+-9.0368094e+02 -7.4181470e+02 1.1792666e+02
+-1.5941828e+03 -1.3661856e+03 2.5733906e+02
+-2.2363956e+03 -1.9175500e+03 4.5384307e+02
+-2.6946579e+03 -2.2747686e+03 6.9626367e+02
+-2.9064087e+03 -2.3951040e+03 9.7012785e+02
+-2.8719112e+03 -2.2992258e+03 1.2593070e+03
+-2.6271341e+03 -2.0363218e+03 1.5467865e+03
+-2.2222633e+03 -1.6600117e+03 1.8147808e+03
+-1.7140895e+03 -1.2241070e+03 2.0444396e+03
+-1.1675585e+03 -7.8598149e+02 2.2176535e+03
+-6.5773725e+02 -4.0395019e+02 2.3235106e+03
+-2.6270666e+02 -1.2905510e+02 2.3696633e+03
+1.3150827e+00 -1.0634175e+01 2.3633837e+03
+1.6688669e+01 -1.7342350e+00 2.3550393e+03
+2.9720611e+01 1.6403374e+00 2.3419745e+03
+3.0010474e+01 3.8265279e+00 2.3447723e+03
+-9.3611300e+02 -7.3747762e+01 3.3489388e+03
+-1.3929474e+03 -2.8950372e+02 0.0000000e+00
+-1.7585357e-03 -6.9630246e-04 -6.1325940e-05
+-3.5778111e-02 -1.4160234e-02 -5.2629948e-04
+-6.5978620e-01 -2.6324404e-01 1.0549615e-03
+-1.2138178e+01 -4.9128768e+00 1.1697061e-01
+-4.3140428e+02 -1.3722199e+02 5.5809607e+01
+-1.1164468e+03 -4.6152459e+02 1.6393723e+02
+-1.9628247e+03 -8.5353317e+02 3.4327847e+02
+-2.7502599e+03 -1.1988598e+03 5.9465980e+02
+-3.3133726e+03 -1.4218393e+03 9.0575123e+02
+-3.5753715e+03 -1.4963827e+03 1.2580612e+03
+-3.5357085e+03 -1.4357575e+03 1.6303569e+03
+-3.2376233e+03 -1.2709186e+03 2.0001548e+03
+-2.7421731e+03 -1.0354809e+03 2.3441631e+03
+-2.1188007e+03 -7.6294898e+02 2.6385965e+03
+-1.4471862e+03 -4.8886239e+02 2.8620122e+03
+-8.1959615e+02 -2.4947507e+02 3.0034046e+03
+-3.3230011e+02 -7.7880429e+01 3.0728340e+03
+1.9131636e-01 -6.2624432e+00 3.0701211e+03
+1.8744188e+01 -1.1914736e+00 3.0650252e+03
+3.3802466e+01 5.9420626e-01 3.0554611e+03
+3.1476409e+01 1.6651021e+00 3.0689622e+03
+-1.1889070e+03 -4.0315002e+01 4.3253474e+03
+-1.6074124e+03 -1.5130777e+02 0.0000000e+00
+-2.0057958e-03 -2.2570492e-04 6.6808732e-05
+-4.0752767e-02 -4.6221954e-03 1.7073580e-03
+-7.5025332e-01 -8.6259370e-02 3.5850606e-02
+-1.3776681e+01 -1.6104564e+00 7.0997427e-01
+-4.8704193e+02 -4.6169999e+01 6.8095121e+01
+-1.2553367e+03 -1.5657904e+02 1.9492855e+02
+-2.2038804e+03 -2.9022508e+02 4.0109760e+02
+-3.0864582e+03 -4.0782116e+02 6.8894864e+02
+-3.7181302e+03 -4.8361776e+02 1.0455425e+03
+-4.0127882e+03 -5.0884607e+02 1.4498658e+03
+-3.9694446e+03 -4.8808824e+02 1.8773429e+03
+-3.6362022e+03 -4.3191662e+02 2.3018719e+03
+-3.0813059e+03 -3.5178608e+02 2.6965161e+03
+-2.3825157e+03 -2.5907316e+02 3.0342009e+03
+-1.6291347e+03 -1.6581289e+02 3.2912099e+03
+-9.2460593e+02 -8.4314610e+01 3.4560912e+03
+-3.7695056e+02 -2.6045932e+01 3.5395463e+03
+-2.5245872e-01 -2.1279202e+00 3.5378832e+03
+2.0568128e+01 -5.0549078e-01 3.5331366e+03
+3.7250594e+01 2.5020327e-02 3.5235365e+03
+3.3759301e+01 2.8754275e-01 3.5408166e+03
+-1.3552477e+03 -1.3000236e+01 4.9671511e+03
+-1.8171650e+03 -4.5316490e+01 0.0000000e+00
+-2.0918522e-03 2.2570492e-04 1.0544904e-04
+-4.2479960e-02 4.6221954e-03 2.4361841e-03
+-7.8158320e-01 8.6259370e-02 4.8360878e-02
+-1.4342721e+01 1.6104564e+00 9.3841872e-01
+-5.0626856e+02 4.6169999e+01 7.2373159e+01
+-1.3034742e+03 1.5657904e+02 2.0579452e+02
+-2.2875183e+03 2.9022508e+02 4.2136469e+02
+-3.2031467e+03 4.0782116e+02 7.2193099e+02
+-3.8586049e+03 4.8361776e+02 1.0943639e+03
+-4.1645489e+03 5.0884607e+02 1.5167925e+03
+-4.1198574e+03 4.8808824e+02 1.9634811e+03
+-3.7743453e+03 4.3191662e+02 2.4070653e+03
+-3.1987708e+03 3.5178608e+02 2.8193360e+03
+-2.4737911e+03 2.5907316e+02 3.1720680e+03
+-1.6920461e+03 1.6581289e+02 3.4407390e+03
+-9.6084183e+02 8.4314610e+01 3.6136674e+03
+-3.9224310e+02 2.6045932e+01 3.7016088e+03
+-3.4295539e-01 2.1279200e+00 3.6999702e+03
+2.1300772e+01 5.0545729e-01 3.6948476e+03
+3.8605275e+01 -2.6168492e-02 3.6845266e+03
+3.4853755e+01 -3.1341366e-01 3.7020073e+03
+-1.4118948e+03 1.2435950e+01 5.1867581e+03
+-1.9111533e+03 4.5531619e+01 0.0000000e+00
+-2.0057958e-03 6.9630246e-04 6.6808732e-05
+-4.0752767e-02 1.4160234e-02 1.7073580e-03
+-7.5025332e-01 2.6324404e-01 3.5850606e-02
+-1.3776681e+01 4.9128768e+00 7.0997427e-01
+-4.8704193e+02 1.3722199e+02 6.8095121e+01
+-1.2553367e+03 4.6152459e+02 1.9492855e+02
+-2.2038804e+03 8.5353317e+02 4.0109760e+02
+-3.0864582e+03 1.1988598e+03 6.8894864e+02
+-3.7181302e+03 1.4218393e+03 1.0455425e+03
+-4.0127882e+03 1.4963827e+03 1.4498658e+03
+-3.9694446e+03 1.4357575e+03 1.8773429e+03
+-3.6362022e+03 1.2709186e+03 2.3018719e+03
+-3.0813059e+03 1.0354809e+03 2.6965161e+03
+-2.3825157e+03 7.6294898e+02 3.0342009e+03
+-1.6291347e+03 4.8886239e+02 3.2912099e+03
+-9.2460593e+02 2.4947507e+02 3.4560912e+03
+-3.7695056e+02 7.7880429e+01 3.5395463e+03
+-2.5245901e-01 6.2624425e+00 3.5378832e+03
+2.0568145e+01 1.1914469e+00 3.5331366e+03
+3.7251308e+01 -5.9499882e-01 3.5235361e+03
+3.3789484e+01 -1.6906332e+00 3.5407786e+03
+-1.3540893e+03 3.9703015e+01 4.9657657e+03
+-1.8172523e+03 1.5132522e+02 0.0000000e+00
+-1.7585357e-03 1.2374056e-03 -6.1325940e-05
+-3.5778111e-02 2.4624707e-02 -5.2629948e-04
+-6.5978620e-01 4.5095642e-01 1.0549614e-03
+-1.2138178e+01 8.3709043e+00 1.1697061e-01
+-4.3140428e+02 2.2415053e+02 5.5809607e+01
+-1.1164468e+03 7.4181470e+02 1.6393723e+02
+-1.9628247e+03 1.3661856e+03 3.4327847e+02
+-2.7502599e+03 1.9175500e+03 5.9465980e+02
+-3.3133726e+03 2.2747686e+03 9.0575123e+02
+-3.5753715e+03 2.3951040e+03 1.2580612e+03
+-3.5357085e+03 2.2992258e+03 1.6303569e+03
+-3.2376233e+03 2.0363218e+03 2.0001548e+03
+-2.7421731e+03 1.6600117e+03 2.3441631e+03
+-2.1188007e+03 1.2241070e+03 2.6385965e+03
+-1.4471862e+03 7.8598149e+02 2.8620122e+03
+-8.1959615e+02 4.0395019e+02 3.0034046e+03
+-3.3230011e+02 1.2905510e+02 3.0728340e+03
+1.9131651e-01 1.0634175e+01 3.0701211e+03
+1.8744221e+01 1.7342105e+00 3.0650252e+03
+3.3803611e+01 -1.6411148e+00 3.0554594e+03
+3.1520026e+01 -3.8489017e+00 3.0689161e+03
+-1.1874687e+03 7.3175298e+01 4.3234598e+03
+-1.6074156e+03 2.8952918e+02 0.0000000e+00
+-1.3842564e-03 1.9753854e-03 -3.5026070e-04
+-2.8208794e-02 3.7415244e-02 -5.0395197e-03
+-5.2137843e-01 6.5551586e-01 -5.5740697e-02
+-9.6182437e+00 1.1864950e+01 -6.3413073e-01
+-3.4578216e+02 3.0345376e+02 3.7253948e+01
+-9.0368094e+02 9.8119867e+02 1.1792666e+02
+-1.5941828e+03 1.7973890e+03 2.5733906e+02
+-2.2363956e+03 2.5209901e+03 4.5384307e+02
+-2.6946579e+03 2.9918630e+03 6.9626367e+02
+-2.9064087e+03 3.1518251e+03 9.7012785e+02
+-2.8719112e+03 3.0272882e+03 1.2593070e+03
+-2.6271341e+03 2.6825122e+03 1.5467865e+03
+-2.2222633e+03 2.1878144e+03 1.8147808e+03
+-1.7140895e+03 1.6144750e+03 2.0444396e+03
+-1.1675585e+03 1.0390397e+03 2.2176535e+03
+-6.5773725e+02 5.3920499e+02 2.3235106e+03
+-2.6270666e+02 1.7883423e+02 2.3696633e+03
+1.3150832e+00 1.6606271e+01 2.3633837e+03
+1.6688686e+01 3.5981800e+00 2.3550392e+03
+2.9721220e+01 -1.7614252e+00 2.3419728e+03
+3.0035400e+01 -5.3218686e+00 2.3447271e+03
+-9.3499976e+02 1.0900624e+02 3.3470222e+03
+-1.3927174e+03 4.2636832e+02 0.0000000e+00
+-9.4351747e-04 3.2702398e-03 -1.0225204e-03
+-1.9219579e-02 5.7546879e-02 -1.5461854e-02
+-3.5551835e-01 9.1788352e-01 -1.6954406e-01
+-6.5724606e+00 1.5315958e+01 -1.5623508e+00
+-2.4183425e+02 3.7093578e+02 1.5508010e+01
+-6.4610776e+02 1.1650476e+03 6.5856590e+01
+-1.1483763e+03 2.1229645e+03 1.5951517e+02
+-1.6151324e+03 2.9767512e+03 2.9192362e+02
+-1.9464935e+03 3.5347854e+03 4.5383327e+02
+-2.0971325e+03 3.7253720e+03 6.3592728e+02
+-2.0684780e+03 3.5792768e+03 8.2818241e+02
+-1.8878530e+03 3.1721353e+03 1.0200808e+03
+-1.5923499e+03 2.5867877e+03 1.2004597e+03
+-1.2234911e+03 1.9084001e+03 1.3563798e+03
+-8.2836636e+02 1.2293076e+03 1.4736452e+03
+-4.6113901e+02 6.4386458e+02 1.5405977e+03
+-1.7775206e+02 2.2444484e+02 1.5590479e+03
+2.9694302e+00 2.5789417e+01 1.5469277e+03
+1.4765241e+01 8.4880038e+00 1.5328586e+03
+2.5761849e+01 6.6466832e-01 1.5135196e+03
+2.9427412e+01 -4.4992084e+00 1.5012407e+03
+-6.5207743e+02 1.3663842e+02 2.2208314e+03
+-1.2100805e+03 4.8431020e+02 0.0000000e+00
+-5.2208194e-04 5.8585054e-03 -2.4315021e-03
+-1.0523700e-02 9.8742859e-02 -4.0387988e-02
+-1.9299482e-01 1.4183883e+00 -4.7992206e-01
+-3.5504290e+00 1.9963424e+01 -3.9779711e+00
+-1.3727264e+02 4.2160149e+02 -4.6425215e+00
+-3.8534538e+02 1.2848339e+03 2.0072262e+01
+-6.9583681e+02 2.3336617e+03 7.0932492e+01
+-9.8361032e+02 3.2732805e+03 1.4179268e+02
+-1.1853979e+03 3.8889262e+03 2.2627737e+02
+-1.2736175e+03 4.0985703e+03 3.2051918e+02
+-1.2510625e+03 3.9370989e+03 4.2022304e+02
+-1.1361596e+03 3.4876842e+03 5.2113659e+02
+-9.5239844e+02 2.8406130e+03 6.1902481e+02
+-7.2562950e+02 2.0906504e+03 7.0747747e+02
+-4.8473445e+02 1.3419302e+03 7.7714792e+02
+-2.6266482e+02 7.0349459e+02 8.1573466e+02
+-9.3129851e+01 2.5728353e+02 8.1420866e+02
+4.1389910e+00 3.7665037e+01 7.9765009e+02
+1.2133432e+01 1.4800898e+01 7.8105389e+02
+2.0813840e+01 4.6429474e+00 7.5897236e+02
+2.6389831e+01 -1.5332077e+00 7.3650944e+02
+-4.1284853e+02 1.3697289e+02 1.2151621e+03
+-1.0343435e+03 4.1691240e+02 0.0000000e+00
+-2.1152677e-04 1.0130108e-02 -4.1978030e-03
+-4.0482634e-03 1.7727172e-01 -8.1267589e-02
+-7.0358117e-02 2.5515477e+00 -1.1885477e+00
+-1.2375701e+00 3.1932304e+01 -1.2705541e+01
+-5.4407536e+01 4.4631276e+02 -1.5038536e+01
+-1.7140080e+02 1.3482596e+03 -6.7685998e+00
+-3.1914007e+02 2.4474501e+03 1.1343347e+01
+-4.5413755e+02 3.4322785e+03 3.5749614e+01
+-5.4509732e+02 4.0760452e+03 6.2562184e+01
+-5.8019172e+02 4.2910032e+03 9.1847870e+01
+-5.6367355e+02 4.1183508e+03 1.2228817e+02
+-5.0589599e+02 3.6452250e+03 1.5351367e+02
+-4.1783370e+02 2.9630878e+03 1.8703709e+02
+-3.1159185e+02 2.1714144e+03 2.2259662e+02
+-2.0069248e+02 1.3803404e+03 2.5798527e+02
+-1.0055009e+02 7.0942823e+02 2.8654726e+02
+-2.7142294e+01 2.5860130e+02 2.9010312e+02
+3.7655122e+00 4.6477313e+01 2.7699791e+02
+7.8595108e+00 1.4355224e+01 2.6954896e+02
+1.3605256e+01 4.3534905e+00 2.5593073e+02
+1.8093842e+01 -5.2444680e-01 2.3743189e+02
+-2.6281478e+02 9.5408659e+01 5.5648664e+02
+-8.5071574e+02 2.6294645e+02 0.0000000e+00
+-5.9440962e-05 1.3089189e-02 -2.9141143e-03
+-9.1961574e-04 2.4219128e-01 -6.6952448e-02
+-1.1693995e-02 3.6782111e+00 -1.1789617e+00
+-1.3509676e-01 4.7387954e+01 -1.6423107e+01
+-1.4661214e+00 4.5315765e+02 -2.0933471e+01
+-4.1489996e+00 1.3518887e+03 -1.7656376e+01
+-6.3464928e+00 2.4499350e+03 -9.1163141e+00
+-6.7405880e+00 3.4362848e+03 -9.7963597e-01
+-5.2638704e+00 4.0812459e+03 3.6411982e+00
+-2.9087365e+00 4.2929718e+03 7.4717710e+00
+-1.0860756e+00 4.1183903e+03 9.8031087e+00
+-1.2605311e-01 3.6446970e+03 1.0614853e+01
+6.7793587e-01 2.9601250e+03 1.2436553e+01
+1.6996790e+00 2.1651209e+03 1.6134428e+01
+2.8432613e+00 1.3698474e+03 2.2508953e+01
+3.6616700e+00 6.9468157e+02 3.2325927e+01
+3.4133609e+00 2.4364669e+02 4.3113492e+01
+2.4201303e+00 4.2287152e+01 4.4634640e+01
+3.2531032e+00 6.4947433e+00 4.8927415e+01
+5.9932250e+00 3.3227144e-01 4.6269638e+01
+7.5575311e+00 -1.2468568e+00 3.8047629e+01
+-1.8865476e+02 4.5607883e+01 2.3827802e+02
+-6.9512499e+02 1.2231317e+02 0.0000000e+00
+-2.0894377e-05 1.0838578e-02 2.3020540e-03
+-2.3018180e-04 2.1387999e-01 3.1727646e-02
+-9.0744367e-04 3.4845842e+00 2.4536444e-01
+1.9901486e-02 4.7869579e+01 5.8690774e-02
+4.2050852e-01 4.6432186e+02 -8.2399012e+00
+2.3299004e+00 1.3643131e+03 -1.2835088e+01
+7.0809735e+00 2.4552140e+03 -6.9266121e+00
+1.4338622e+01 3.4400912e+03 -9.7318351e-01
+2.2276038e+01 4.0832222e+03 6.5364926e-01
+2.8426378e+01 4.2868062e+03 2.7524088e+00
+3.0565037e+01 4.1081971e+03 3.4689243e+00
+2.8730941e+01 3.6344304e+03 2.1100023e+00
+2.4861667e+01 2.9481878e+03 2.0902608e+00
+2.0391235e+01 2.1515651e+03 3.7124739e+00
+1.6000726e+01 1.3545689e+03 7.0635832e+00
+1.1814897e+01 6.7878945e+02 1.2026363e+01
+7.2806960e+00 2.3557701e+02 1.2453718e+01
+3.0499750e+00 4.4992064e+01 6.3872131e+00
+1.6339955e+00 5.4891938e+00 5.5337308e+00
+2.0681443e+00 -3.6569001e-03 3.4411557e+00
+1.4294777e+00 -4.1182875e-01 -3.3501834e-01
+-1.3400179e+02 1.7368000e+01 1.0027725e+02
+-5.2920771e+02 4.3676293e+01 0.0000000e+00
+-1.1127141e-05 4.5202703e-03 6.3701559e-03
+-7.4580291e-05 9.9970421e-02 1.2150871e-01
+1.7016687e-03 1.9024278e+00 1.7278511e+00
+6.8624640e-02 3.2852448e+01 1.7139217e+01
+1.1645425e+00 4.8167827e+02 4.1096427e+00
+5.2873597e+00 1.3889102e+03 -9.1225667e+00
+1.4339050e+01 2.4667417e+03 -5.1802807e+00
+2.7318958e+01 3.4477898e+03 -8.6457284e-01
+4.0960171e+01 4.0854662e+03 -1.8062790e+00
+5.1199170e+01 4.2736983e+03 -1.3077399e-01
+5.4493248e+01 4.0876924e+03 2.7340071e-01
+5.0991762e+01 3.6137137e+03 -2.1933862e+00
+4.3926360e+01 2.9253977e+03 -2.5169562e+00
+3.5731747e+01 2.1281281e+03 -1.3659693e+00
+2.7680912e+01 1.3315447e+03 2.3237228e-01
+2.0203003e+01 6.5661954e+02 3.2895814e+00
+1.2580507e+01 2.2184171e+02 3.5999854e+00
+5.5453120e+00 4.2015490e+01 3.6700819e-01
+1.9605616e+00 3.5848599e+00 -1.2719349e-02
+8.3662535e-01 -5.3318655e-01 -5.5323860e-01
+-4.2405952e-01 5.9534212e-02 -1.7065118e+00
+-7.3642632e+01 4.3841391e+00 3.7364404e+01
+-3.0684956e+02 1.0226872e+01 0.0000000e+00
+-3.3679079e-06 0.0000000e+00 4.5473276e-03
+7.0081532e-06 0.0000000e+00 1.0525881e-01
+1.7197174e-03 0.0000000e+00 2.0257595e+00
+3.0722366e-02 0.0000000e+00 3.5311029e+01
+-1.9415353e+00 5.1079274e+02 1.7425282e+01
+-4.2903742e+00 1.4432553e+03 -5.0045257e+00
+-4.2324031e-01 2.5155654e+03 -3.6698635e+00
+1.1149450e+01 3.5006132e+03 -2.6766727e-01
+2.8395555e+01 4.1347737e+03 -3.5257053e+00
+4.4438378e+01 4.2993229e+03 -2.2348870e+00
+5.1759007e+01 4.0984688e+03 -1.8023415e+00
+5.0936669e+01 3.6181929e+03 -5.1360963e+00
+4.6170970e+01 2.9190247e+03 -5.6607841e+00
+3.9688192e+01 2.1134770e+03 -4.6947481e+00
+3.3527560e+01 1.3114092e+03 -4.2759082e+00
+2.6783181e+01 6.3197427e+02 -2.1142003e+00
+1.7198851e+01 2.0291408e+02 -6.5071515e-01
+6.9520576e+00 3.4227696e+01 -1.0315570e+00
+1.1783739e+00 3.2940325e-01 -3.1325502e-01
+-5.2674053e-01 -1.4173920e+00 -1.3911456e-01
+-1.3130331e+00 8.3453870e-01 -1.1305973e+00
+-2.1898404e+01 0.0000000e+00 8.4165889e+00
+-9.2078421e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.8665011e+02 5.9022615e+02 9.8168153e+01
+-6.3130723e+02 2.0704137e+03 5.5011400e+01
+-1.1623483e+03 3.6921460e+03 -2.4841545e+01
+-1.6360560e+03 5.0723115e+03 2.8568203e+01
+-1.8893437e+03 6.0262883e+03 8.5066105e+01
+-1.9382060e+03 6.3380546e+03 6.3119079e+01
+-1.8643458e+03 6.0547787e+03 7.3951215e+01
+-1.6347498e+03 5.3385315e+03 1.1783096e+02
+-1.3047978e+03 4.3263339e+03 1.1522506e+02
+-9.6610124e+02 3.1705896e+03 1.0884267e+02
+-6.1465498e+02 2.0135933e+03 1.2568102e+02
+-3.4334853e+02 1.0628091e+03 1.1624084e+02
+-2.2157988e+02 4.8571098e+02 7.6249329e+01
+-1.7676386e+02 2.1812823e+02 4.2916014e+01
+-1.3432712e+02 9.5488308e+01 2.6439516e+01
+-7.6672834e+01 3.8209567e+01 8.9531107e+00
+-3.1041353e+01 1.2003559e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.7770219e+02 0.0000000e+00 9.4121013e+01
+-5.4527606e+02 0.0000000e+00 1.0615012e+02
+-1.0633901e+03 0.0000000e+00 -5.4138576e+01
+-1.7432113e+03 0.0000000e+00 1.1706121e+02
+-2.2549886e+03 0.0000000e+00 3.6290744e+02
+-2.6326630e+03 0.0000000e+00 2.5786580e+02
+-2.9042840e+03 0.0000000e+00 3.2051600e+02
+-2.7195342e+03 0.0000000e+00 5.8299704e+02
+-2.2782436e+03 0.0000000e+00 5.6696650e+02
+-1.8775483e+03 0.0000000e+00 5.1374970e+02
+-1.3317046e+03 0.0000000e+00 5.3257768e+02
+-8.9861838e+02 0.0000000e+00 3.7061393e+02
+-7.4609149e+02 0.0000000e+00 1.7950959e+02
+-6.6473448e+02 0.0000000e+00 1.1770414e+02
+-5.3837530e+02 0.0000000e+00 9.8556273e+01
+-3.2876734e+02 0.0000000e+00 3.7019208e+01
+-1.3834157e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.4605463e+01 -6.3726479e+02 8.5083846e+01
+2.9082433e+02 -2.2376797e+03 1.3412057e+02
+5.3581386e+02 -3.9273216e+03 -4.2249808e+01
+7.2603691e+02 -5.4603922e+03 -1.7825854e+01
+1.0732227e+03 -6.7770032e+03 2.1342584e+02
+1.3774482e+03 -7.4423081e+03 1.6744045e+02
+1.1846269e+03 -7.3232764e+03 1.1229837e+02
+8.8064524e+02 -6.6012231e+03 3.1660436e+02
+9.1877011e+02 -5.4705452e+03 3.3946603e+02
+8.3286298e+02 -4.1276993e+03 2.0880055e+02
+6.0763314e+02 -2.7371296e+03 2.2083618e+02
+4.6184840e+02 -1.5225059e+03 1.5063366e+02
+1.3564313e+02 -7.0351595e+02 1.6670539e+01
+-3.1232295e+02 -2.7208244e+02 1.9602909e+01
+-5.2961258e+02 -8.8184461e+01 8.4120515e+01
+-3.2064534e+02 -2.7218358e+01 4.9301281e+01
+-1.1019085e+02 -8.5140379e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.0039657e+01 -9.9553512e+02 1.6159401e+02
+6.9838064e+01 -2.8368371e+03 5.9653646e+01
+4.5267185e+01 -5.0105107e+03 -6.4657189e+01
+-1.3085082e+02 -7.0614497e+03 3.1328913e+01
+-3.2317462e+02 -8.4448696e+03 1.3310627e+02
+-4.7969921e+02 -8.8902599e+03 1.2263827e+02
+-6.4228122e+02 -8.5536222e+03 1.3094525e+02
+-7.0340324e+02 -7.6018378e+03 2.0011360e+02
+-6.0434081e+02 -6.1920068e+03 2.2049813e+02
+-5.0206871e+02 -4.5620189e+03 1.8922296e+02
+-4.2429247e+02 -2.9300315e+03 1.9164700e+02
+-3.2508428e+02 -1.5295587e+03 1.8034631e+02
+-2.5833797e+02 -5.9767050e+02 1.1128157e+02
+-2.2082630e+02 -1.6648117e+02 4.9332347e+01
+-1.6816084e+02 -3.6416801e+01 3.1409675e+01
+-7.9284340e+01 -6.2390392e+00 1.3012380e+01
+-2.4468740e+01 -2.0662998e+00 0.0000000e+00
+0 0 0
+0 0 0
+-9.6155420e-05 -8.5863009e-03 8.6790880e-03
+-2.7539033e-03 -1.9032468e-01 2.0176466e-01
+-6.8292614e-02 -3.6349228e+00 3.9066993e+00
+-1.5339883e+00 -6.3124748e+01 6.8596149e+01
+-2.9901613e+01 -9.3387208e+02 3.4871433e+01
+-8.9913112e+01 -2.7085496e+03 -7.7922054e+00
+-1.6928919e+02 -4.8448152e+03 -4.6177213e+00
+-2.4491337e+02 -6.8146286e+03 4.6251840e+00
+-2.9200773e+02 -8.1233772e+03 3.5395542e+00
+-3.0330653e+02 -8.5487138e+03 9.7407145e+00
+-2.8903492e+02 -8.2152578e+03 1.2173566e+01
+-2.5603555e+02 -7.2912262e+03 8.5304605e+00
+-2.0760420e+02 -5.9395318e+03 9.8126131e+00
+-1.5353943e+02 -4.3707079e+03 1.1694289e+01
+-1.0250826e+02 -2.7955474e+03 1.3233931e+01
+-5.9975293e+01 -1.4471903e+03 1.7624244e+01
+-3.0717357e+01 -5.4758976e+02 1.5442443e+01
+-1.4152348e+01 -1.3545115e+02 5.5016444e+00
+-6.1801782e+00 -2.5219361e+01 1.6742261e+00
+-2.2516145e+00 -3.6457742e+00 8.0592846e-01
+-1.4390276e+00 -9.9700618e-01 -2.4658440e-01
+-2.2143838e+01 -4.2508472e+00 4.3099775e+00
+-1.0625430e+02 -5.6720433e+00 0.0000000e+00
+-1.7568639e-04 -2.0568307e-02 1.2146565e-02
+-4.3671393e-03 -4.0641513e-01 2.3252957e-01
+-9.0412989e-02 -6.6348241e+00 3.3245454e+00
+-1.5520576e+00 -9.1416143e+01 3.3236621e+01
+-1.8140715e+01 -8.9031522e+02 8.9849914e+00
+-5.5762199e+01 -2.6227428e+03 -1.5772693e+01
+-1.0449634e+02 -4.7336502e+03 -8.1022418e+00
+-1.4867437e+02 -6.6484240e+03 1.6865522e+00
+-1.7472232e+02 -7.9089545e+03 2.9463392e+00
+-1.7910415e+02 -8.3235890e+03 8.1248885e+00
+-1.6796111e+02 -7.9946466e+03 9.9679362e+00
+-1.4686966e+02 -7.0903552e+03 6.9581993e+00
+-1.1840860e+02 -5.7776983e+03 7.4591601e+00
+-8.6667328e+01 -4.2507961e+03 9.9454683e+00
+-5.6518767e+01 -2.7152612e+03 1.3858489e+01
+-3.1734536e+01 -1.4014051e+03 2.0010603e+01
+-1.4637789e+01 -5.1808274e+02 1.7721998e+01
+-5.1415701e+00 -1.1282825e+02 5.7853319e+00
+-1.5400873e+00 -1.8927748e+01 2.9947200e+00
+-6.3146325e-01 -3.0266882e+00 3.8357808e+00
+-2.2679525e+00 -1.6835946e+00 6.3785432e+00
+-7.9021169e+01 -1.6817046e+01 2.4819678e+01
+-3.2849771e+02 -1.1419293e+01 0.0000000e+00
+-1.6950074e-04 -2.4831248e-02 4.4115472e-03
+-3.7709053e-03 -4.5984693e-01 6.1384063e-02
+-7.0086878e-02 -6.9922532e+00 4.8799260e-01
+-1.0696074e+00 -9.0220816e+01 3.8217442e-01
+-1.0769263e+01 -8.6372145e+02 -1.5021828e+01
+-3.3787825e+01 -2.5781780e+03 -2.3468878e+01
+-6.3867082e+01 -4.6740539e+03 -1.2117147e+01
+-9.1201449e+01 -6.5551776e+03 1.7650196e-01
+-1.0739162e+02 -7.7842361e+03 5.1257461e+00
+-1.1021816e+02 -8.1901355e+03 1.0316771e+01
+-1.0340512e+02 -7.8627387e+03 1.2378989e+01
+-9.0408650e+01 -6.9697337e+03 1.0897094e+01
+-7.2899027e+01 -5.6806176e+03 1.1577068e+01
+-5.3392860e+01 -4.1802812e+03 1.4846215e+01
+-3.4851838e+01 -2.6712917e+03 2.1729193e+01
+-1.9549616e+01 -1.3798147e+03 3.1503312e+01
+-8.8525762e+00 -5.0165616e+02 3.1209999e+01
+-2.9323140e+00 -9.3204543e+01 1.7568584e+01
+-1.3034942e+00 -1.7813916e+01 1.9392148e+01
+-1.5969368e+00 -6.0326848e+00 2.6064056e+01
+-6.0052379e+00 -5.7430749e+00 3.7587528e+01
+-1.4705785e+02 -5.5432367e+01 9.0057707e+01
+-4.2667359e+02 -2.5441837e+01 0.0000000e+00
+-1.6989550e-04 -1.9215048e-02 -5.5057460e-03
+-3.2913411e-03 -3.3648817e-01 -1.2649278e-01
+-5.4612468e-02 -4.8481141e+00 -2.2277134e+00
+-7.8810060e-01 -6.0759418e+01 -3.1036107e+01
+-8.5559912e+00 -8.4831006e+02 -3.9357627e+01
+-2.7572604e+01 -2.5611112e+03 -3.3000775e+01
+-5.2526731e+01 -4.6440735e+03 -1.6800916e+01
+-7.5450897e+01 -6.5023690e+03 -8.9923231e-01
+-8.9732604e+01 -7.7094751e+03 8.8084752e+00
+-9.3373920e+01 -8.1074854e+03 1.6623613e+01
+-8.8676699e+01 -7.7798948e+03 2.1370273e+01
+-7.8178768e+01 -6.8938742e+03 2.3563397e+01
+-6.3506171e+01 -5.6203720e+03 2.7501952e+01
+-4.6796878e+01 -4.1390181e+03 3.4735413e+01
+-3.0466991e+01 -2.6505920e+03 4.7346050e+01
+-1.6642376e+01 -1.3791069e+03 6.6942287e+01
+-7.1077355e+00 -5.1414568e+02 8.9952897e+01
+-2.7730382e+00 -9.6358620e+01 9.8300148e+01
+-3.1350367e+00 -3.5325715e+01 1.2220011e+02
+-5.5791403e+00 -2.0092715e+01 1.4783405e+02
+-1.5010505e+01 -1.7052189e+01 1.8176604e+02
+-2.1781462e+02 -1.3409308e+02 2.9145939e+02
+-2.6248665e+02 -7.2772890e+01 0.0000000e+00
+-3.5847100e-04 -1.1101926e-02 -7.9661768e-03
+-7.0346696e-03 -1.8720544e-01 -1.5426250e-01
+-1.2449751e-01 -2.6907086e+00 -2.2575287e+00
+-2.1826546e+00 -3.7897126e+01 -2.4174736e+01
+-9.8641854e+01 -7.9959639e+02 -2.8654079e+01
+-3.1479238e+02 -2.4328188e+03 -1.3554886e+01
+-5.8991521e+02 -4.4063981e+03 1.9544833e+01
+-8.4234668e+02 -6.1589978e+03 6.4382788e+01
+-1.0119674e+03 -7.2920439e+03 1.1382169e+02
+-1.0769796e+03 -7.6646706e+03 1.6779473e+02
+-1.0468232e+03 -7.3532454e+03 2.2429507e+02
+-9.4175543e+02 -6.5169532e+03 2.8323354e+02
+-7.8237484e+02 -5.3198029e+03 3.4720550e+02
+-5.9004750e+02 -3.9290581e+03 4.1570120e+02
+-3.8834274e+02 -2.5326960e+03 4.8545540e+02
+-2.0568603e+02 -1.3347484e+03 5.4623289e+02
+-7.6219939e+01 -4.9252343e+02 5.7368829e+02
+-7.6766326e+00 -7.7377934e+01 5.6614975e+02
+-1.0075953e+01 -3.7745880e+01 5.8650557e+02
+-1.6664009e+01 -2.4377048e+01 6.2106024e+02
+-3.4806431e+01 -2.1319953e+01 6.7827740e+02
+-2.9496336e+02 -1.9725798e+02 7.7510073e+02
+4.6185719e+01 -1.4651903e+02 0.0000000e+00
+-8.1592386e-04 -6.1715490e-03 -4.6365355e-03
+-1.6628100e-02 -1.0855271e-01 -7.7184862e-02
+-3.0835284e-01 -1.7303273e+00 -9.2220810e-01
+-5.7273058e+00 -2.8854521e+01 -7.7879363e+00
+-2.3210605e+02 -7.0210084e+02 -1.0450091e+01
+-6.5994867e+02 -2.2024845e+03 3.3818889e+01
+-1.1940233e+03 -4.0006917e+03 1.2629902e+02
+-1.6849719e+03 -5.5870523e+03 2.5571516e+02
+-2.0247217e+03 -6.6076312e+03 4.1062630e+02
+-2.1703680e+03 -6.9416939e+03 5.8440023e+02
+-2.1312635e+03 -6.6584885e+03 7.6984429e+02
+-1.9402677e+03 -5.9026488e+03 9.5964800e+02
+-1.6353017e+03 -4.8232059e+03 1.1459543e+03
+-1.2561241e+03 -3.5692712e+03 1.3166620e+03
+-8.4848448e+02 -2.3067322e+03 1.4544482e+03
+-4.7027740e+02 -1.2119711e+03 1.5392834e+03
+-1.9292864e+02 -4.2466307e+02 1.5712218e+03
+-1.7479508e+01 -5.4254524e+01 1.5697169e+03
+-2.2094713e+01 -2.5931611e+01 1.5921308e+03
+-3.5826690e+01 -1.7353746e+01 1.6417483e+03
+-6.6851098e+01 -1.7069539e+01 1.7307436e+03
+-3.4462060e+02 -2.0534037e+02 1.6705295e+03
+3.7108093e+02 -1.9307146e+02 0.0000000e+00
+-1.4463983e-03 -3.6938611e-03 -1.9748072e-03
+-2.9755262e-02 -6.9858464e-02 -3.0133373e-02
+-5.5639780e-01 -1.2219666e+00 -3.3761456e-01
+-1.0397982e+01 -2.2088691e+01 -3.2779240e+00
+-4.0060531e+02 -5.7264191e+02 2.6034209e+01
+-1.0872104e+03 -1.8513638e+03 1.1601617e+02
+-1.9376079e+03 -3.3809991e+03 2.8555511e+02
+-2.7206584e+03 -4.7225711e+03 5.2659995e+02
+-3.2693691e+03 -5.5810167e+03 8.2286098e+02
+-3.5147391e+03 -5.8594691e+03 1.1582428e+03
+-3.4663359e+03 -5.6177567e+03 1.5153689e+03
+-3.1719544e+03 -4.9786737e+03 1.8754952e+03
+-2.6897840e+03 -4.0682014e+03 2.2179248e+03
+-2.0821737e+03 -3.0106629e+03 2.5179991e+03
+-1.4225188e+03 -1.9431397e+03 2.7485591e+03
+-8.0468835e+02 -1.0106064e+03 2.8907438e+03
+-3.4494772e+02 -3.3625159e+02 2.9695280e+03
+-3.0654275e+01 -3.6025734e+01 2.9849229e+03
+-3.8174522e+01 -1.5450536e+01 3.0273814e+03
+-6.1841676e+01 -1.0722295e+01 3.1083529e+03
+-1.0921044e+02 -1.2683529e+01 3.2425978e+03
+-3.5020904e+02 -1.7573787e+02 2.9107880e+03
+6.5035917e+02 -1.6792306e+02 0.0000000e+00
+-2.0924917e-03 -2.2861742e-03 -6.9945155e-04
+-4.3028191e-02 -4.5408184e-02 -1.0330334e-02
+-8.0323262e-01 -8.3000433e-01 -1.2043847e-01
+-1.4966509e+01 -1.5382260e+01 -1.4786042e+00
+-5.6367969e+02 -4.2167399e+02 6.5451008e+01
+-1.5021746e+03 -1.3970118e+03 2.0959278e+02
+-2.6611570e+03 -2.5655163e+03 4.6108417e+02
+-3.7294671e+03 -3.5861077e+03 8.1769231e+02
+-4.4821495e+03 -4.2359464e+03 1.2601136e+03
+-4.8246447e+03 -4.4444505e+03 1.7633310e+03
+-4.7671097e+03 -4.2583800e+03 2.2991528e+03
+-4.3720763e+03 -3.7716567e+03 2.8370780e+03
+-3.7174080e+03 -3.0801378e+03 3.3441591e+03
+-2.8875010e+03 -2.2774600e+03 3.7843676e+03
+-1.9827218e+03 -1.4661154e+03 4.1225066e+03
+-1.1320022e+03 -7.5468818e+02 4.3408533e+03
+-4.9554066e+02 -2.4139247e+02 4.4788282e+03
+-4.4709427e+01 -2.3328526e+01 4.5121555e+03
+-5.5737529e+01 -9.5273688e+00 4.5786585e+03
+-9.0333846e+01 -7.0256781e+00 4.6950164e+03
+-1.5536863e+02 -9.1352624e+00 4.8768472e+03
+-3.4375305e+02 -1.1800941e+02 4.2262327e+03
+8.5907190e+02 -9.6536399e+01 0.0000000e+00
+-2.6271124e-03 -1.2727436e-03 -1.4485392e-04
+-5.3899042e-02 -2.5832882e-02 -1.5992243e-03
+-1.0031663e+00 -4.7931982e-01 -8.9036338e-03
+-1.8627284e+01 -8.9298189e+00 2.7762342e-02
+-6.9449650e+02 -2.5753070e+02 9.8976689e+01
+-1.8385972e+03 -8.6790389e+02 2.9201914e+02
+-3.2501590e+03 -1.6007908e+03 6.1462788e+02
+-4.5519852e+03 -2.2392781e+03 1.0695236e+03
+-5.4712282e+03 -2.6443276e+03 1.6357604e+03
+-5.8924037e+03 -2.7730870e+03 2.2814291e+03
+-5.8265332e+03 -2.6554832e+03 2.9693570e+03
+-5.3485692e+03 -2.3505834e+03 3.6592296e+03
+-4.5526657e+03 -1.9184092e+03 4.3079937e+03
+-3.5413281e+03 -1.4171755e+03 4.8702366e+03
+-2.4368960e+03 -9.1025509e+02 5.3040861e+03
+-1.3968219e+03 -4.6503975e+02 5.5916633e+03
+-6.1723987e+02 -1.4504282e+02 5.7802535e+03
+-5.6476338e+01 -1.3579982e+01 5.8271726e+03
+-7.0525630e+01 -5.7894859e+00 5.9127045e+03
+-1.1423847e+02 -4.6122775e+00 6.0583319e+03
+-1.9422713e+02 -5.8346378e+00 6.2807391e+03
+-3.4567673e+02 -5.1814009e+01 5.3713153e+03
+1.0268336e+03 -2.8484812e+01 0.0000000e+00
+-2.9730287e-03 -4.1001385e-04 1.0450313e-04
+-6.0888927e-02 -8.3807246e-03 2.7885053e-03
+-1.1308815e+00 -1.5609961e-01 6.0196438e-02
+-2.0951295e+01 -2.9090982e+00 1.2140894e+00
+-7.7790043e+02 -8.6541723e+01 1.2108361e+02
+-2.0552486e+03 -2.9422657e+02 3.4731821e+02
+-3.6308581e+03 -5.4395290e+02 7.1745798e+02
+-5.0842994e+03 -7.6125451e+02 1.2372756e+03
+-6.1113743e+03 -8.9884098e+02 1.8850331e+03
+-6.5830201e+03 -9.4234936e+02 2.6245274e+03
+-6.5110431e+03 -9.0209485e+02 3.4127375e+03
+-5.9787076e+03 -7.9824371e+02 4.2029032e+03
+-5.0909125e+03 -6.5123791e+02 4.9453385e+03
+-3.9619808e+03 -4.8082985e+02 5.5884580e+03
+-2.7284370e+03 -3.0845967e+02 6.0859649e+03
+-1.5660622e+03 -1.5698759e+02 6.4193690e+03
+-6.9411673e+02 -4.8386618e+01 6.6398789e+03
+-6.3714383e+01 -4.5533814e+00 6.6943143e+03
+-7.9446282e+01 -2.0744098e+00 6.7906136e+03
+-1.2858092e+02 -1.7700911e+00 6.9535999e+03
+-2.1770929e+02 -2.1823944e+00 7.2014163e+03
+-3.5680838e+02 -1.1516022e+01 6.1626796e+03
+1.1195481e+03 -2.9770469e-01 0.0000000e+00
+-3.0920793e-03 4.1001385e-04 1.8019947e-04
+-6.3287629e-02 8.3807246e-03 4.2264201e-03
+-1.1745780e+00 1.5609961e-01 8.5021997e-02
+-2.1744199e+01 2.9090982e+00 1.6683036e+00
+-8.0644435e+02 8.6541723e+01 1.2876065e+02
+-2.1298220e+03 2.9422657e+02 3.6665530e+02
+-3.7621653e+03 5.4395290e+02 7.5339654e+02
+-5.2680240e+03 7.6125451e+02 1.2957648e+03
+-6.3323097e+03 8.9884098e+02 1.9717876e+03
+-6.8212674e+03 9.4234936e+02 2.7438075e+03
+-6.7470199e+03 9.0209485e+02 3.5667802e+03
+-6.1957587e+03 7.9824371e+02 4.3917062e+03
+-5.2761370e+03 6.5123791e+02 5.1665965e+03
+-4.1065773e+03 4.8082985e+02 5.8377230e+03
+-2.8284885e+03 3.0845967e+02 6.3572461e+03
+-1.6239356e+03 1.5698759e+02 6.7063647e+03
+-7.2010173e+02 4.8386618e+01 6.9374501e+03
+-6.6048065e+01 4.5533814e+00 6.9940485e+03
+-8.2246679e+01 2.0743763e+00 7.0934470e+03
+-1.3306440e+02 1.7684687e+00 7.2615781e+03
+-2.2512380e+02 2.1462842e+00 7.5172270e+03
+-3.6406171e+02 1.0565677e+01 6.4473077e+03
+1.1363408e+03 2.8976344e-01 0.0000000e+00
+-2.9730287e-03 1.2727436e-03 1.0450313e-04
+-6.0888927e-02 2.5832882e-02 2.7885053e-03
+-1.1308815e+00 4.7931982e-01 6.0196438e-02
+-2.0951295e+01 8.9298189e+00 1.2140894e+00
+-7.7790043e+02 2.5753070e+02 1.2108361e+02
+-2.0552486e+03 8.6790389e+02 3.4731821e+02
+-3.6308581e+03 1.6007908e+03 7.1745798e+02
+-5.0842994e+03 2.2392781e+03 1.2372756e+03
+-6.1113743e+03 2.6443276e+03 1.8850331e+03
+-6.5830201e+03 2.7730870e+03 2.6245274e+03
+-6.5110431e+03 2.6554832e+03 3.4127375e+03
+-5.9787076e+03 2.3505834e+03 4.2029032e+03
+-5.0909125e+03 1.9184092e+03 4.9453385e+03
+-3.9619808e+03 1.4171755e+03 5.5884580e+03
+-2.7284370e+03 9.1025509e+02 6.0859649e+03
+-1.5660622e+03 4.6503975e+02 6.4193690e+03
+-6.9411673e+02 1.4504282e+02 6.6398789e+03
+-6.3714384e+01 1.3579982e+01 6.6943143e+03
+-7.9446250e+01 5.7895016e+00 6.7906135e+03
+-1.2858044e+02 4.6116171e+00 6.9536021e+03
+-2.1769884e+02 5.8051534e+00 7.2014317e+03
+-3.5610184e+02 5.0984848e+01 6.1630180e+03
+1.1193978e+03 2.8516074e+01 0.0000000e+00
+-2.6271124e-03 2.2861742e-03 -1.4485392e-04
+-5.3899042e-02 4.5408184e-02 -1.5992243e-03
+-1.0031663e+00 8.3000433e-01 -8.9036338e-03
+-1.8627284e+01 1.5382260e+01 2.7762342e-02
+-6.9449650e+02 4.2167399e+02 9.8976689e+01
+-1.8385972e+03 1.3970118e+03 2.9201914e+02
+-3.2501590e+03 2.5655163e+03 6.1462788e+02
+-4.5519852e+03 3.5861077e+03 1.0695236e+03
+-5.4712282e+03 4.2359464e+03 1.6357604e+03
+-5.8924037e+03 4.4444505e+03 2.2814291e+03
+-5.8265332e+03 4.2583800e+03 2.9693570e+03
+-5.3485692e+03 3.7716567e+03 3.6592296e+03
+-4.5526657e+03 3.0801378e+03 4.3079937e+03
+-3.5413281e+03 2.2774600e+03 4.8702366e+03
+-2.4368960e+03 1.4661154e+03 5.3040861e+03
+-1.3968219e+03 7.5468818e+02 5.5916633e+03
+-6.1723987e+02 2.4139247e+02 5.7802535e+03
+-5.6476338e+01 2.3328526e+01 5.8271726e+03
+-7.0525654e+01 9.5273354e+00 5.9127043e+03
+-1.1423781e+02 7.0248658e+00 6.0583325e+03
+-1.9420449e+02 9.1110756e+00 6.2807501e+03
+-3.4484233e+02 1.1743298e+02 5.3716762e+03
+1.0267626e+03 9.6763110e+01 0.0000000e+00
+-2.0924917e-03 3.6938611e-03 -6.9945155e-04
+-4.3028191e-02 6.9858464e-02 -1.0330334e-02
+-8.0323262e-01 1.2219666e+00 -1.2043847e-01
+-1.4966509e+01 2.2088691e+01 -1.4786042e+00
+-5.6367969e+02 5.7264191e+02 6.5451008e+01
+-1.5021746e+03 1.8513638e+03 2.0959278e+02
+-2.6611570e+03 3.3809991e+03 4.6108417e+02
+-3.7294671e+03 4.7225711e+03 8.1769231e+02
+-4.4821495e+03 5.5810167e+03 1.2601136e+03
+-4.8246447e+03 5.8594691e+03 1.7633310e+03
+-4.7671097e+03 5.6177567e+03 2.2991528e+03
+-4.3720763e+03 4.9786737e+03 2.8370780e+03
+-3.7174080e+03 4.0682014e+03 3.3441591e+03
+-2.8875010e+03 3.0106629e+03 3.7843676e+03
+-1.9827218e+03 1.9431397e+03 4.1225066e+03
+-1.1320022e+03 1.0106064e+03 4.3408533e+03
+-4.9554066e+02 3.3625159e+02 4.4788282e+03
+-4.4709427e+01 3.6025734e+01 4.5121555e+03
+-5.5737520e+01 1.5450527e+01 4.5786585e+03
+-9.0333214e+01 1.0721922e+01 4.6950159e+03
+-1.5534181e+02 1.2677549e+01 4.8768267e+03
+-3.4285058e+02 1.7592322e+02 4.2261830e+03
+8.5927875e+02 1.6826716e+02 0.0000000e+00
+-1.4463983e-03 6.1715490e-03 -1.9748072e-03
+-2.9755262e-02 1.0855271e-01 -3.0133373e-02
+-5.5639780e-01 1.7303273e+00 -3.3761456e-01
+-1.0397982e+01 2.8854521e+01 -3.2779240e+00
+-4.0060531e+02 7.0210084e+02 2.6034209e+01
+-1.0872104e+03 2.2024845e+03 1.1601617e+02
+-1.9376079e+03 4.0006917e+03 2.8555511e+02
+-2.7206584e+03 5.5870523e+03 5.2659995e+02
+-3.2693691e+03 6.6076312e+03 8.2286098e+02
+-3.5147391e+03 6.9416939e+03 1.1582428e+03
+-3.4663359e+03 6.6584885e+03 1.5153689e+03
+-3.1719544e+03 5.9026488e+03 1.8754952e+03
+-2.6897840e+03 4.8232059e+03 2.2179248e+03
+-2.0821737e+03 3.5692712e+03 2.5179991e+03
+-1.4225188e+03 2.3067322e+03 2.7485591e+03
+-8.0468835e+02 1.2119711e+03 2.8907438e+03
+-3.4494772e+02 4.2466307e+02 2.9695280e+03
+-3.0654275e+01 5.4254524e+01 2.9849229e+03
+-3.8174499e+01 2.5931624e+01 3.0273816e+03
+-6.1840828e+01 1.7354850e+01 3.1083513e+03
+-1.0917715e+02 1.7109596e+01 3.2425239e+03
+-3.4895848e+02 2.0665555e+02 2.9086735e+03
+6.5067928e+02 1.9321110e+02 0.0000000e+00
+-8.1592386e-04 1.1101926e-02 -4.6365355e-03
+-1.6628100e-02 1.8720544e-01 -7.7184862e-02
+-3.0835284e-01 2.6907086e+00 -9.2220810e-01
+-5.7273058e+00 3.7897126e+01 -7.7879363e+00
+-2.3210604e+02 7.9959639e+02 -1.0450091e+01
+-6.5994867e+02 2.4328188e+03 3.3818889e+01
+-1.1940233e+03 4.4063981e+03 1.2629902e+02
+-1.6849719e+03 6.1589978e+03 2.5571516e+02
+-2.0247217e+03 7.2920439e+03 4.1062630e+02
+-2.1703680e+03 7.6646706e+03 5.8440023e+02
+-2.1312635e+03 7.3532454e+03 7.6984429e+02
+-1.9402677e+03 6.5169532e+03 9.5964800e+02
+-1.6353017e+03 5.3198029e+03 1.1459543e+03
+-1.2561241e+03 3.9290581e+03 1.3166620e+03
+-8.4848448e+02 2.5326960e+03 1.4544482e+03
+-4.7027740e+02 1.3347484e+03 1.5392834e+03
+-1.9292864e+02 4.9252343e+02 1.5712218e+03
+-1.7479508e+01 7.7377934e+01 1.5697169e+03
+-2.2094723e+01 3.7745900e+01 1.5921308e+03
+-3.5826076e+01 2.4379152e+01 1.6417464e+03
+-6.6805977e+01 2.1398794e+01 1.7306529e+03
+-3.4292150e+02 1.9981389e+02 1.6675653e+03
+3.7140361e+02 1.4696215e+02 0.0000000e+00
+-3.5847100e-04 1.9215048e-02 -7.9661768e-03
+-7.0346695e-03 3.3648817e-01 -1.5426250e-01
+-1.2449751e-01 4.8481141e+00 -2.2575287e+00
+-2.1826546e+00 6.0759418e+01 -2.4174736e+01
+-9.8641854e+01 8.4831006e+02 -2.8654079e+01
+-3.1479238e+02 2.5611112e+03 -1.3554885e+01
+-5.8991521e+02 4.6440735e+03 1.9544834e+01
+-8.4234668e+02 6.5023690e+03 6.4382788e+01
+-1.0119674e+03 7.7094751e+03 1.1382169e+02
+-1.0769796e+03 8.1074854e+03 1.6779473e+02
+-1.0468232e+03 7.7798948e+03 2.2429507e+02
+-9.4175543e+02 6.8938742e+03 2.8323354e+02
+-7.8237484e+02 5.6203720e+03 3.4720550e+02
+-5.9004750e+02 4.1390181e+03 4.1570120e+02
+-3.8834274e+02 2.6505920e+03 4.8545540e+02
+-2.0568603e+02 1.3791069e+03 5.4623289e+02
+-7.6219938e+01 5.1414568e+02 5.7368829e+02
+-7.6766324e+00 9.6358620e+01 5.6614975e+02
+-1.0075949e+01 3.5325696e+01 5.8650542e+02
+-1.6662349e+01 2.0093022e+01 6.2105916e+02
+-3.4785417e+01 1.7068936e+01 6.7826841e+02
+-2.9417010e+02 1.3469363e+02 7.7477719e+02
+4.6682498e+01 7.3102403e+01 0.0000000e+00
+-1.6989547e-04 2.4831248e-02 -5.5057460e-03
+-3.2913407e-03 4.5984693e-01 -1.2649278e-01
+-5.4612464e-02 6.9922532e+00 -2.2277134e+00
+-7.8810057e-01 9.0220816e+01 -3.1036107e+01
+-8.5559911e+00 8.6372144e+02 -3.9357626e+01
+-2.7572604e+01 2.5781780e+03 -3.3000775e+01
+-5.2526731e+01 4.6740539e+03 -1.6800915e+01
+-7.5450897e+01 6.5551776e+03 -8.9923230e-01
+-8.9732604e+01 7.7842361e+03 8.8084752e+00
+-9.3373920e+01 8.1901355e+03 1.6623613e+01
+-8.8676698e+01 7.8627387e+03 2.1370272e+01
+-7.8178767e+01 6.9697337e+03 2.3563396e+01
+-6.3506169e+01 5.6806176e+03 2.7501951e+01
+-4.6796876e+01 4.1802812e+03 3.4735412e+01
+-3.0466989e+01 2.6712917e+03 4.7346049e+01
+-1.6642375e+01 1.3798147e+03 6.6942286e+01
+-7.1077328e+00 5.0165616e+02 8.9952896e+01
+-2.7730371e+00 9.3204542e+01 9.8300142e+01
+-3.1349943e+00 1.7813907e+01 1.2220003e+02
+-5.5786595e+00 6.0311071e+00 1.4783383e+02
+-1.5001795e+01 5.6843942e+00 1.8177799e+02
+-2.1743484e+02 5.3588999e+01 2.9166227e+02
+-2.6197092e+02 2.5707734e+01 0.0000000e+00
+-1.6950058e-04 2.0568307e-02 4.4115471e-03
+-3.7709023e-03 4.0641513e-01 6.1384062e-02
+-7.0086836e-02 6.6348241e+00 4.8799259e-01
+-1.0696070e+00 9.1416142e+01 3.8217438e-01
+-1.0769261e+01 8.9031522e+02 -1.5021827e+01
+-3.3787827e+01 2.6227428e+03 -2.3468876e+01
+-6.3867088e+01 4.7336502e+03 -1.2117145e+01
+-9.1201453e+01 6.6484240e+03 1.7650206e-01
+-1.0739162e+02 7.9089545e+03 5.1257382e+00
+-1.1021816e+02 8.3235890e+03 1.0316749e+01
+-1.0340511e+02 7.9946467e+03 1.2378959e+01
+-9.0408626e+01 7.0903552e+03 1.0897065e+01
+-7.2898973e+01 5.7776982e+03 1.1577046e+01
+-5.3392788e+01 4.2507960e+03 1.4846196e+01
+-3.4851790e+01 2.7152612e+03 2.1729175e+01
+-1.9549578e+01 1.4014050e+03 3.1503303e+01
+-8.8524863e+00 5.1808266e+02 3.1209984e+01
+-2.9323112e+00 1.1282840e+02 1.7568598e+01
+-1.3034770e+00 1.8927768e+01 1.9392210e+01
+-1.5971497e+00 3.0249380e+00 2.6063760e+01
+-5.9837090e+00 1.6308894e+00 3.7530539e+01
+-1.4612057e+02 1.5215288e+01 8.8025390e+01
+-4.2625213e+02 1.1606912e+01 0.0000000e+00
+-1.7568570e-04 8.5863008e-03 1.2146565e-02
+-4.3671220e-03 1.9032468e-01 2.3252956e-01
+-9.0412617e-02 3.6349227e+00 3.3245453e+00
+-1.5520507e+00 6.3124744e+01 3.3236619e+01
+-1.8140637e+01 9.3387198e+02 8.9850300e+00
+-5.5762291e+01 2.7085500e+03 -1.5772597e+01
+-1.0449655e+02 4.8448154e+03 -8.1021724e+00
+-1.4867448e+02 6.8146288e+03 1.6865464e+00
+-1.7472244e+02 8.1233775e+03 2.9461036e+00
+-1.7910434e+02 8.5487144e+03 8.1242474e+00
+-1.6796099e+02 8.2152581e+03 9.9670685e+00
+-1.4686891e+02 7.2912256e+03 6.9573659e+00
+-1.1840681e+02 5.9395302e+03 7.4585743e+00
+-8.6665000e+01 4.3707065e+03 9.9449270e+00
+-5.6517385e+01 2.7955464e+03 1.3858049e+01
+-3.1733563e+01 1.4471893e+03 2.0010318e+01
+-1.4634607e+01 5.4759213e+02 1.7723090e+01
+-5.1398219e+00 1.3545115e+02 5.7854811e+00
+-1.5399525e+00 2.5219451e+01 2.9943202e+00
+-6.3130834e-01 3.6447851e+00 3.8423968e+00
+-2.3074633e+00 9.5889564e-01 6.3359648e+00
+-7.8388242e+01 3.7674008e+00 2.2529431e+01
+-3.2806994e+02 5.7515999e+00 0.0000000e+00
+-9.6154255e-05 0.0000000e+00 8.6790871e-03
+-2.7538605e-03 0.0000000e+00 2.0176463e-01
+-6.8290948e-02 0.0000000e+00 3.9066978e+00
+-1.5339186e+00 0.0000000e+00 6.8596082e+01
+-2.9898399e+01 9.9555074e+02 3.4874309e+01
+-8.9919789e+01 2.8368426e+03 -7.7890109e+00
+-1.6929698e+02 5.0105176e+03 -4.6146324e+00
+-2.4491731e+02 7.0614549e+03 4.6259345e+00
+-2.9201162e+02 8.4448724e+03 3.5339831e+00
+-3.0331504e+02 8.8902788e+03 9.7226266e+00
+-2.8903203e+02 8.5536223e+03 1.2148914e+01
+-2.5601047e+02 7.6018154e+03 8.5062935e+00
+-2.0754447e+02 6.1919555e+03 9.7963079e+00
+-1.5346207e+02 4.5619754e+03 1.1677402e+01
+-1.0246922e+02 2.9299967e+03 1.3223754e+01
+-5.9950098e+01 1.5295566e+03 1.7631795e+01
+-3.0639177e+01 5.9759476e+02 1.5467024e+01
+-1.4108694e+01 1.6647377e+02 5.5051956e+00
+-6.1805517e+00 3.6417456e+01 1.6661963e+00
+-2.2403756e+00 6.2387510e+00 8.0690073e-01
+-1.4391441e+00 2.0563804e+00 -1.6454807e-01
+-2.2581078e+01 0.0000000e+00 3.6009618e+00
+-1.0611604e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+9.9277756e+00 6.3734427e+02 1.6162765e+02
+6.9609286e+01 2.2378328e+03 5.9790690e+01
+4.4977836e+01 3.9275007e+03 -6.4522579e+01
+-1.3102268e+02 5.4605379e+03 3.1363445e+01
+-3.2330684e+02 6.7771515e+03 1.3304619e+02
+-4.8010591e+02 7.4424261e+03 1.2208672e+02
+-6.4218070e+02 7.3232823e+03 1.3026332e+02
+-7.0255024e+02 6.6004663e+03 1.9940619e+02
+-6.0233820e+02 5.4688699e+03 2.2003148e+02
+-4.9945839e+02 4.1267723e+03 1.8859478e+02
+-4.2327680e+02 2.7370595e+03 1.9153612e+02
+-3.2505084e+02 1.5224637e+03 1.8032985e+02
+-2.5603016e+02 7.0345381e+02 1.1211741e+02
+-2.1977865e+02 2.7222613e+02 4.9379036e+01
+-1.6820499e+02 8.8175175e+01 3.1374135e+01
+-7.9286225e+01 2.7223810e+01 1.3004566e+01
+-2.4456338e+01 8.5087962e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.4435589e+01 0.0000000e+00 8.5156877e+01
+2.9025249e+02 0.0000000e+00 1.3435339e+02
+5.3510976e+02 0.0000000e+00 -4.1907219e+01
+7.2562885e+02 0.0000000e+00 -1.7656299e+01
+1.0729995e+03 0.0000000e+00 2.1343009e+02
+1.3771256e+03 0.0000000e+00 1.6745411e+02
+1.1843431e+03 0.0000000e+00 1.1242822e+02
+8.8061092e+02 0.0000000e+00 3.1671217e+02
+9.1859462e+02 0.0000000e+00 3.3961856e+02
+8.3293775e+02 0.0000000e+00 2.0884226e+02
+6.0762791e+02 0.0000000e+00 2.2077092e+02
+4.6182043e+02 0.0000000e+00 1.5057101e+02
+1.3564626e+02 0.0000000e+00 1.6685404e+01
+-3.1228642e+02 0.0000000e+00 1.9660625e+01
+-5.2959468e+02 0.0000000e+00 8.4121130e+01
+-3.2065171e+02 0.0000000e+00 4.9291683e+01
+-1.1015386e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.1010256e+03 -1.1384320e+03 1.8120423e+02
+-4.0972655e+03 -4.0710650e+03 4.9003200e+02
+-7.5363821e+03 -6.8441670e+03 2.5983669e+02
+-1.0052055e+04 -8.8524637e+03 -4.9921116e+01
+-1.1469776e+04 -1.0360259e+04 1.8095996e+02
+-1.1638253e+04 -1.0868105e+04 5.0115631e+02
+-1.0721966e+04 -1.0250735e+04 4.9912133e+02
+-9.4451467e+03 -8.9741851e+03 4.4699066e+02
+-7.6209698e+03 -7.2804257e+03 5.0654341e+02
+-5.2886508e+03 -5.2691349e+03 5.0046891e+02
+-3.2775037e+03 -3.1705840e+03 5.1029286e+02
+-1.8710970e+03 -1.3936209e+03 5.2693894e+02
+-1.2188068e+03 -3.2474906e+02 4.4602612e+02
+-1.1262924e+03 5.3982868e+01 2.9318822e+02
+-1.0181941e+03 6.7444193e+01 1.4581024e+02
+-4.9839938e+02 1.4678612e+01 4.4588136e+01
+-1.2788033e+02 -1.3510099e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.0779055e+02 -1.5987060e+03 2.6225946e+02
+6.4253316e+02 -4.4792244e+03 9.7725344e+01
+1.2050991e+03 -7.7954647e+03 -1.1074873e+02
+1.8366733e+03 -1.0918465e+04 -1.2274390e+01
+2.2980785e+03 -1.3050834e+04 5.7041628e+01
+2.4697694e+03 -1.3769597e+04 9.0662699e+00
+2.4106188e+03 -1.3294629e+04 4.9190151e-02
+2.1499093e+03 -1.1857806e+04 3.0359095e+01
+1.7979982e+03 -9.7004523e+03 4.7682604e+01
+1.4281588e+03 -7.1798316e+03 2.8150752e+01
+1.0215326e+03 -4.6127121e+03 2.4453604e+01
+6.4839917e+02 -2.3770447e+03 3.4394562e+01
+3.2848819e+02 -8.8845296e+02 1.1196664e+01
+7.1684795e+01 -2.2190307e+02 -5.4285736e+00
+-7.2425743e+01 -4.0553205e+01 6.8343208e+00
+-5.8072464e+01 -5.9874183e+00 6.2885367e+00
+-1.8383796e+01 -1.1464229e+00 0.0000000e+00
+0 0 0
+0 0 0
+7.2973733e-05 -1.6106185e-02 1.5937056e-02
+2.4579482e-03 -3.5318489e-01 3.6391010e-01
+6.7164566e-02 -6.6332432e+00 6.8616962e+00
+1.6227949e+00 -1.1236035e+02 1.1606528e+02
+3.5940489e+01 -1.6028470e+03 5.4363924e+01
+1.0429279e+02 -4.5962203e+03 -2.2861491e+01
+1.7349474e+02 -8.1458846e+03 -1.5225458e+01
+2.1411771e+02 -1.1397814e+04 5.0920654e+00
+2.1972187e+02 -1.3561788e+04 4.3172420e+00
+1.9799643e+02 -1.4279544e+04 1.2964028e+01
+1.6115100e+02 -1.3748070e+04 1.6219718e+01
+1.2312043e+02 -1.2233200e+04 1.2456471e+01
+9.0758808e+01 -1.0003121e+04 1.6762063e+01
+5.9486147e+01 -7.3929564e+03 1.6862287e+01
+2.6900864e+01 -4.7378981e+03 1.2639111e+01
+2.1273574e-01 -2.4404480e+03 1.5854317e+01
+-1.3375266e+01 -9.0439010e+02 1.4449281e+01
+-1.2998574e+01 -2.1244638e+02 3.8402711e+00
+-7.5861696e+00 -3.6381725e+01 1.0748438e+00
+-2.8237074e+00 -4.9563335e+00 6.1463087e-01
+-1.2166516e+00 -7.0941113e-01 -4.4078149e-02
+-2.2715888e+01 -7.9809811e-01 -5.9790091e-01
+-1.5860707e+02 -2.2450720e+01 0.0000000e+00
+1.2536910e-04 -3.8863764e-02 2.2456523e-02
+3.8378933e-03 -7.6273831e-01 4.2380491e-01
+8.8326356e-02 -1.2321762e+01 5.9335843e+00
+1.5732915e+00 -1.6718525e+02 5.7633132e+01
+1.8276129e+01 -1.5943237e+03 1.2693008e+01
+5.2699414e+01 -4.6585560e+03 -3.3432944e+01
+8.5686740e+01 -8.3505651e+03 -1.8936294e+01
+1.0019165e+02 -1.1667474e+04 1.8579515e+00
+9.5857752e+01 -1.3836920e+04 6.4098363e+00
+7.9657359e+01 -1.4546806e+04 1.4910711e+01
+5.8470178e+01 -1.3977564e+04 1.7972961e+01
+3.9912922e+01 -1.2417317e+04 1.5307393e+01
+2.6537538e+01 -1.0150504e+04 1.7744226e+01
+1.4278916e+01 -7.4960939e+03 1.9935480e+01
+1.1868967e+00 -4.7985733e+03 2.2905092e+01
+-9.3749674e+00 -2.4707135e+03 3.0811007e+01
+-1.2858705e+01 -9.0215761e+02 2.6799439e+01
+-8.6507066e+00 -1.9032966e+02 8.1918495e+00
+-3.8324640e+00 -3.0150997e+01 4.2534008e+00
+-1.7686790e+00 -4.2917341e+00 4.7260347e+00
+-2.8387277e+00 -8.1367597e-01 4.9956956e+00
+-6.3279980e+01 3.8193865e+00 -1.5365714e+01
+-5.4479034e+02 -1.0824171e+02 0.0000000e+00
+9.9578422e-05 -4.7151617e-02 8.0187738e-03
+3.1381039e-03 -8.6947858e-01 1.0785004e-01
+6.9071708e-02 -1.3134568e+01 7.8149751e-01
+1.1244368e+00 -1.6789306e+02 -7.0474284e-01
+1.1414342e+01 -1.5875146e+03 -2.9697509e+01
+3.3421819e+01 -4.7093658e+03 -4.6097369e+01
+5.4591536e+01 -8.4900208e+03 -2.5100240e+01
+6.3962787e+01 -1.1847067e+04 -6.7123484e-01
+6.1365728e+01 -1.4016205e+04 9.8564239e+00
+5.1311546e+01 -1.4717244e+04 1.8764938e+01
+3.8258378e+01 -1.4122846e+04 2.2383118e+01
+2.6924917e+01 -1.2533731e+04 2.1463354e+01
+1.8700261e+01 -1.0244332e+04 2.3692198e+01
+1.0969571e+01 -7.5651327e+03 2.8368596e+01
+2.5277702e+00 -4.8461907e+03 3.8606377e+01
+-4.4822841e+00 -2.5016806e+03 5.4506119e+01
+-7.0006593e+00 -9.0315548e+02 5.3652080e+01
+-4.6203276e+00 -1.6452236e+02 2.9532799e+01
+-2.9066335e+00 -2.9857024e+01 3.0841964e+01
+-3.6836663e+00 -8.3935615e+00 3.7026640e+01
+-6.7664934e+00 -3.4375154e+00 4.0411782e+01
+-4.3009566e+01 6.4782445e+00 -6.6286609e+01
+-9.0444867e+02 -2.6447781e+02 0.0000000e+00
+-4.6269356e-05 -3.6610556e-02 -1.0664687e-02
+6.0940445e-05 -6.3944889e-01 -2.4404666e-01
+1.3758775e-02 -9.1774013e+00 -4.2695847e+00
+2.9156467e-01 -1.1440921e+02 -5.8833093e+01
+2.6647710e+00 -1.5828127e+03 -7.4755724e+01
+6.5339492e+00 -4.7547576e+03 -6.3470433e+01
+6.9035566e+00 -8.5795249e+03 -3.3396610e+01
+1.1840910e+00 -1.1954250e+04 -2.8488116e+00
+-7.9133014e+00 -1.4116805e+04 1.5931522e+01
+-1.6740767e+01 -1.4807869e+04 2.9923308e+01
+-2.3012972e+01 -1.4197202e+04 3.8616175e+01
+-2.4889976e+01 -1.2592298e+04 4.3893892e+01
+-2.2610508e+01 -1.0293371e+04 5.2037789e+01
+-1.8639107e+01 -7.6063598e+03 6.5107103e+01
+-1.4630854e+01 -4.8844768e+03 8.7557044e+01
+-1.0643831e+01 -2.5427089e+03 1.2258682e+02
+-6.6590370e+00 -9.4380240e+02 1.6278504e+02
+-3.7319176e+00 -1.7407039e+02 1.7329194e+02
+-4.7111568e+00 -6.0656475e+01 2.0566800e+02
+-8.7599334e+00 -3.0499674e+01 2.3095489e+02
+-1.2727709e+01 -1.5872494e+01 2.4110681e+02
+9.4062873e+01 -2.0739192e+01 -4.3554017e+01
+-1.0883959e+03 -4.5347622e+02 0.0000000e+00
+-4.9614011e-04 -2.1185625e-02 -1.5287261e-02
+-9.5582993e-03 -3.5673383e-01 -2.9547869e-01
+-1.7043496e-01 -5.1190785e+00 -4.3078640e+00
+-3.1383109e+00 -7.2043866e+01 -4.5717553e+01
+-1.5491186e+02 -1.5166936e+03 -5.5566606e+01
+-4.9640833e+02 -4.6000188e+03 -2.8689516e+01
+-9.3218351e+02 -8.2978089e+03 3.1862807e+01
+-1.3340993e+03 -1.1545381e+04 1.1474582e+02
+-1.6081156e+03 -1.3612010e+04 2.0609937e+02
+-1.7203949e+03 -1.4264148e+04 3.0579320e+02
+-1.6834437e+03 -1.3666421e+04 4.1163229e+02
+-1.5261813e+03 -1.2120318e+04 5.2407813e+02
+-1.2802477e+03 -9.9183042e+03 6.4688376e+02
+-9.7780098e+02 -7.3501837e+03 7.7846116e+02
+-6.5287021e+02 -4.7530002e+03 9.1151204e+02
+-3.4870369e+02 -2.5096454e+03 1.0214662e+03
+-1.2225909e+02 -9.2465378e+02 1.0483567e+03
+-6.6196601e+00 -1.4103583e+02 1.0142652e+03
+-7.3596039e+00 -6.4951286e+01 1.0158437e+03
+-1.3425099e+01 -3.7426350e+01 1.0195536e+03
+-1.3867495e+01 -1.9921352e+01 1.0026634e+03
+3.3944485e+02 -4.1385752e+01 3.8890746e+02
+-1.3470181e+03 -6.2078214e+02 0.0000000e+00
+-1.3289569e-03 -1.1746012e-02 -8.9265802e-03
+-2.7315146e-02 -2.0627232e-01 -1.4870105e-01
+-5.1293427e-01 -3.2821436e+00 -1.7810546e+00
+-9.6759188e+00 -5.4657615e+01 -1.5218693e+01
+-4.0604800e+02 -1.3348587e+03 -2.3111630e+01
+-1.1597981e+03 -4.1795528e+03 5.6271777e+01
+-2.0963049e+03 -7.5643782e+03 2.2512260e+02
+-2.9504037e+03 -1.0517416e+04 4.6259029e+02
+-3.5364067e+03 -1.2385613e+04 7.4787841e+02
+-3.7868921e+03 -1.2969536e+04 1.0697901e+03
+-3.7231586e+03 -1.2421385e+04 1.4166491e+03
+-3.4023820e+03 -1.1017352e+04 1.7757979e+03
+-2.8862510e+03 -9.0238336e+03 2.1322767e+03
+-2.2362676e+03 -6.6998380e+03 2.4620745e+03
+-1.5239464e+03 -4.3435473e+03 2.7280835e+03
+-8.4472700e+02 -2.2866466e+03 2.8795343e+03
+-3.2098209e+02 -8.0029730e+02 2.8832313e+03
+-8.5709295e+00 -9.9300536e+01 2.8325874e+03
+-3.0939303e+00 -4.4900602e+01 2.7935359e+03
+-7.0586568e+00 -2.7188974e+01 2.7545305e+03
+4.9506655e+00 -1.5534788e+01 2.6783422e+03
+6.6902726e+02 -2.2815382e+01 1.6461227e+03
+-2.1492206e+03 -6.3399805e+02 0.0000000e+00
+-2.3780549e-03 -6.9689582e-03 -3.8453971e-03
+-4.9305983e-02 -1.3146081e-01 -5.9106178e-02
+-9.3019786e-01 -2.2933369e+00 -6.7411283e-01
+-1.7540183e+01 -4.1359201e+01 -6.8303257e+00
+-6.9920344e+02 -1.0863286e+03 4.3237715e+01
+-1.9178566e+03 -3.5101188e+03 2.0444990e+02
+-3.4209244e+03 -6.3891399e+03 5.1252808e+02
+-4.7926095e+03 -8.8861219e+03 9.5318458e+02
+-5.7431002e+03 -1.0456353e+04 1.4976554e+03
+-6.1637908e+03 -1.0941164e+04 2.1183355e+03
+-6.0822051e+03 -1.0472521e+04 2.7853412e+03
+-5.5839289e+03 -9.2852213e+03 3.4651846e+03
+-4.7632303e+03 -7.6042337e+03 4.1190311e+03
+-3.7158465e+03 -5.6452782e+03 4.6981440e+03
+-2.5568291e+03 -3.6543916e+03 5.1432986e+03
+-1.4410136e+03 -1.9038338e+03 5.3968110e+03
+-5.6446369e+02 -6.3238964e+02 5.4484193e+03
+-8.3414398e+00 -6.6067731e+01 5.3928736e+03
+7.7513607e+00 -2.7204570e+01 5.3292517e+03
+1.0022236e+01 -1.7685461e+01 5.2478843e+03
+4.2610020e+01 -1.2574449e+01 5.0931034e+03
+1.0350624e+03 -2.9049485e+00 3.6879278e+03
+-3.7056698e+03 -5.0195718e+02 0.0000000e+00
+-3.4018385e-03 -4.2609604e-03 -1.3986510e-03
+-7.0426639e-02 -8.4381458e-02 -2.1079559e-02
+-1.3243830e+00 -1.5377925e+00 -2.5547349e-01
+-2.4855934e+01 -2.8423821e+01 -3.3014291e+00
+-9.7079543e+02 -7.9751795e+02 1.1500363e+02
+-2.6266578e+03 -2.6438526e+03 3.7322053e+02
+-4.6650258e+03 -4.8405504e+03 8.2849983e+02
+-6.5275374e+03 -6.7377266e+03 1.4781749e+03
+-7.8249218e+03 -7.9243955e+03 2.2889897e+03
+-8.4088552e+03 -8.2859259e+03 3.2179620e+03
+-8.3124395e+03 -7.9252677e+03 4.2160383e+03
+-7.6478122e+03 -7.0219037e+03 5.2284566e+03
+-6.5400099e+03 -5.7467679e+03 6.1935927e+03
+-5.1173962e+03 -4.2620672e+03 7.0402769e+03
+-3.5361299e+03 -2.7513481e+03 7.6906414e+03
+-2.0068786e+03 -1.4181036e+03 8.0797877e+03
+-7.9503654e+02 -4.5224042e+02 8.1991343e+03
+-7.3730924e+00 -4.2176066e+01 8.1379063e+03
+1.9740981e+01 -1.6121243e+01 8.0513445e+03
+2.9386993e+01 -1.0602540e+01 7.9245408e+03
+8.4523829e+01 -7.5375968e+00 7.6796115e+03
+1.3875946e+03 1.3152325e+01 5.9322057e+03
+-5.6083236e+03 -3.8856166e+02 0.0000000e+00
+-4.2196039e-03 -2.3464850e-03 -3.2198402e-04
+-8.7104629e-02 -4.7487233e-02 -4.0106215e-03
+-1.6320043e+00 -8.7849546e-01 -3.4469634e-02
+-3.0503189e+01 -1.6321621e+01 -2.6076432e-01
+-1.1821936e+03 -4.8591737e+02 1.7583576e+02
+-3.1879789e+03 -1.6400229e+03 5.2138789e+02
+-5.6566772e+03 -3.0162891e+03 1.1036448e+03
+-7.9140887e+03 -4.2018186e+03 1.9298403e+03
+-9.4899731e+03 -4.9404357e+03 2.9646255e+03
+-1.0203965e+04 -5.1629951e+03 4.1532558e+03
+-1.0094231e+04 -4.9352002e+03 5.4308864e+03
+-9.2948992e+03 -4.3698323e+03 6.7251450e+03
+-7.9562247e+03 -3.5738101e+03 7.9557463e+03
+-6.2329951e+03 -2.6478442e+03 9.0331904e+03
+-4.3141859e+03 -1.7052128e+03 9.8643450e+03
+-2.4549754e+03 -8.7198282e+02 1.0376378e+04
+-9.7629947e+02 -2.7069978e+02 1.0553897e+04
+-6.7321529e+00 -2.3689283e+01 1.0485666e+04
+2.9161008e+01 -8.5477256e+00 1.0378406e+04
+4.4988911e+01 -5.0098641e+00 1.0213587e+04
+1.1883262e+02 -1.8864292e+00 9.8948767e+03
+1.6722045e+03 3.2762288e+01 7.8573965e+03
+-7.1847192e+03 -2.6126011e+02 0.0000000e+00
+-4.7358419e-03 -7.5121909e-04 1.6754730e-04
+-9.7561196e-02 -1.5311271e-02 4.6638549e-03
+-1.8235417e+00 -2.8435511e-01 1.0318370e-01
+-3.3997339e+01 -5.2847052e+00 2.1123119e+00
+-1.3143864e+03 -1.6308819e+02 2.1576913e+02
+-3.5443417e+03 -5.5553166e+02 6.2037095e+02
+-6.2895914e+03 -1.0242024e+03 1.2870176e+03
+-8.8007216e+03 -1.4274304e+03 2.2290516e+03
+-1.0554913e+04 -1.6781326e+03 3.4102867e+03
+-1.1351221e+04 -1.7532127e+03 4.7687049e+03
+-1.1231503e+04 -1.6752766e+03 6.2292415e+03
+-1.0344532e+04 -1.4828093e+03 7.7080430e+03
+-8.8571649e+03 -1.2122052e+03 9.1126905e+03
+-6.9413260e+03 -8.9761121e+02 1.0341803e+04
+-4.8069486e+03 -5.7731118e+02 1.1292413e+04
+-2.7375448e+03 -2.9402480e+02 1.1885937e+04
+-1.0895297e+03 -9.0095341e+01 1.2100746e+04
+-6.3282931e+00 -7.6950282e+00 1.2027365e+04
+3.5172487e+01 -2.7161408e+00 1.1906915e+04
+5.5171677e+01 -1.4366898e+00 1.1719589e+04
+1.4102285e+02 3.8270685e-03 1.1358954e+04
+1.8458695e+03 2.0046344e+01 9.1689895e+03
+-8.0813009e+03 -8.6648376e+01 0.0000000e+00
+-4.9112571e-03 7.5121909e-04 3.1673959e-04
+-1.0110330e-01 1.5311271e-02 7.5098730e-03
+-1.8882234e+00 2.8435511e-01 1.5244503e-01
+-3.5174028e+01 5.2847052e+00 3.0128633e+00
+-1.3592026e+03 1.6308819e+02 2.2959473e+02
+-3.6661755e+03 5.5553166e+02 6.5488487e+02
+-6.5065888e+03 1.0242024e+03 1.3509035e+03
+-9.1049931e+03 1.4274304e+03 2.3330118e+03
+-1.0920371e+04 1.6781326e+03 3.5648077e+03
+-1.1744704e+04 1.7532127e+03 4.9818185e+03
+-1.1621211e+04 1.6752766e+03 6.5054564e+03
+-1.0703818e+04 1.4828093e+03 8.0478971e+03
+-9.1651861e+03 1.2122052e+03 9.5125358e+03
+-7.1831755e+03 8.9761121e+02 1.0793912e+04
+-4.9749047e+03 5.7731118e+02 1.1785705e+04
+-2.8335670e+03 2.9402480e+02 1.2407287e+04
+-1.1277156e+03 9.0095341e+01 1.2634710e+04
+-6.1388166e+00 7.6950282e+00 1.2559411e+04
+3.7322155e+01 2.7161371e+00 1.2434410e+04
+5.8852315e+01 1.4360164e+00 1.2239617e+04
+1.4883080e+02 -1.6416353e-02 1.1865683e+04
+1.9022060e+03 -2.0292073e+01 9.6397530e+03
+-8.3480615e+03 8.6754818e+01 0.0000000e+00
+-4.7358419e-03 2.3464850e-03 1.6754730e-04
+-9.7561196e-02 4.7487233e-02 4.6638549e-03
+-1.8235417e+00 8.7849546e-01 1.0318370e-01
+-3.3997339e+01 1.6321621e+01 2.1123119e+00
+-1.3143864e+03 4.8591737e+02 2.1576913e+02
+-3.5443417e+03 1.6400229e+03 6.2037095e+02
+-6.2895914e+03 3.0162891e+03 1.2870176e+03
+-8.8007216e+03 4.2018186e+03 2.2290516e+03
+-1.0554913e+04 4.9404357e+03 3.4102867e+03
+-1.1351221e+04 5.1629951e+03 4.7687049e+03
+-1.1231503e+04 4.9352002e+03 6.2292415e+03
+-1.0344532e+04 4.3698323e+03 7.7080430e+03
+-8.8571649e+03 3.5738101e+03 9.1126905e+03
+-6.9413260e+03 2.6478442e+03 1.0341803e+04
+-4.8069486e+03 1.7052128e+03 1.1292413e+04
+-2.7375448e+03 8.7198282e+02 1.1885937e+04
+-1.0895297e+03 2.7069978e+02 1.2100746e+04
+-6.3282931e+00 2.3689283e+01 1.2027365e+04
+3.5172484e+01 8.5476984e+00 1.1906915e+04
+5.5171616e+01 5.0096656e+00 1.1719589e+04
+1.4102021e+02 1.8753419e+00 1.1358978e+04
+1.8463517e+03 -3.3331647e+01 9.1695639e+03
+-8.0813180e+03 2.6117823e+02 0.0000000e+00
+-4.2196039e-03 4.2609604e-03 -3.2198402e-04
+-8.7104629e-02 8.4381458e-02 -4.0106215e-03
+-1.6320043e+00 1.5377925e+00 -3.4469634e-02
+-3.0503189e+01 2.8423821e+01 -2.6076432e-01
+-1.1821936e+03 7.9751795e+02 1.7583576e+02
+-3.1879789e+03 2.6438526e+03 5.2138789e+02
+-5.6566772e+03 4.8405504e+03 1.1036448e+03
+-7.9140887e+03 6.7377266e+03 1.9298403e+03
+-9.4899731e+03 7.9243955e+03 2.9646255e+03
+-1.0203965e+04 8.2859259e+03 4.1532558e+03
+-1.0094231e+04 7.9252677e+03 5.4308864e+03
+-9.2948992e+03 7.0219037e+03 6.7251450e+03
+-7.9562247e+03 5.7467679e+03 7.9557463e+03
+-6.2329951e+03 4.2620672e+03 9.0331904e+03
+-4.3141859e+03 2.7513481e+03 9.8643450e+03
+-2.4549754e+03 1.4181036e+03 1.0376378e+04
+-9.7629947e+02 4.5224042e+02 1.0553897e+04
+-6.7321529e+00 4.2176066e+01 1.0485666e+04
+2.9161005e+01 1.6121239e+01 1.0378406e+04
+4.4988665e+01 1.0602186e+01 1.0213587e+04
+1.1883521e+02 7.5413498e+00 9.8948809e+03
+1.6721191e+03 -1.3542715e+01 7.8581305e+03
+-7.1847284e+03 3.8837851e+02 0.0000000e+00
+-3.4018385e-03 6.9689582e-03 -1.3986510e-03
+-7.0426639e-02 1.3146081e-01 -2.1079559e-02
+-1.3243830e+00 2.2933369e+00 -2.5547349e-01
+-2.4855934e+01 4.1359201e+01 -3.3014291e+00
+-9.7079543e+02 1.0863286e+03 1.1500363e+02
+-2.6266578e+03 3.5101188e+03 3.7322053e+02
+-4.6650258e+03 6.3891399e+03 8.2849983e+02
+-6.5275374e+03 8.8861219e+03 1.4781749e+03
+-7.8249218e+03 1.0456353e+04 2.2889897e+03
+-8.4088552e+03 1.0941164e+04 3.2179620e+03
+-8.3124395e+03 1.0472521e+04 4.2160383e+03
+-7.6478122e+03 9.2852213e+03 5.2284566e+03
+-6.5400099e+03 7.6042337e+03 6.1935927e+03
+-5.1173962e+03 5.6452782e+03 7.0402769e+03
+-3.5361299e+03 3.6543916e+03 7.6906414e+03
+-2.0068786e+03 1.9038338e+03 8.0797877e+03
+-7.9503654e+02 6.3238964e+02 8.1991343e+03
+-7.3730923e+00 6.6067731e+01 8.1379063e+03
+1.9740985e+01 2.7204570e+01 8.0513445e+03
+2.9387041e+01 1.7685174e+01 7.9245413e+03
+8.4532341e+01 1.2568983e+01 7.6794966e+03
+1.3877177e+03 3.1406379e+00 5.9322434e+03
+-5.6082721e+03 5.0233624e+02 0.0000000e+00
+-2.3780549e-03 1.1746012e-02 -3.8453971e-03
+-4.9305983e-02 2.0627232e-01 -5.9106178e-02
+-9.3019786e-01 3.2821436e+00 -6.7411283e-01
+-1.7540183e+01 5.4657615e+01 -6.8303257e+00
+-6.9920344e+02 1.3348587e+03 4.3237715e+01
+-1.9178566e+03 4.1795528e+03 2.0444990e+02
+-3.4209244e+03 7.5643782e+03 5.1252808e+02
+-4.7926095e+03 1.0517416e+04 9.5318458e+02
+-5.7431002e+03 1.2385613e+04 1.4976554e+03
+-6.1637908e+03 1.2969536e+04 2.1183355e+03
+-6.0822051e+03 1.2421385e+04 2.7853412e+03
+-5.5839289e+03 1.1017352e+04 3.4651846e+03
+-4.7632303e+03 9.0238336e+03 4.1190311e+03
+-3.7158465e+03 6.6998380e+03 4.6981440e+03
+-2.5568291e+03 4.3435473e+03 5.1432986e+03
+-1.4410136e+03 2.2866466e+03 5.3968110e+03
+-5.6446369e+02 8.0029730e+02 5.4484193e+03
+-8.3414399e+00 9.9300536e+01 5.3928736e+03
+7.7513506e+00 4.4900601e+01 5.3292517e+03
+1.0023268e+01 2.7190358e+01 5.2478830e+03
+4.2649243e+01 1.5602524e+01 5.0930234e+03
+1.0363880e+03 2.4959265e+01 3.6853798e+03
+-3.7052231e+03 6.3423845e+02 0.0000000e+00
+-1.3289569e-03 2.1185625e-02 -8.9265802e-03
+-2.7315146e-02 3.5673383e-01 -1.4870105e-01
+-5.1293427e-01 5.1190785e+00 -1.7810546e+00
+-9.6759188e+00 7.2043866e+01 -1.5218693e+01
+-4.0604800e+02 1.5166936e+03 -2.3111630e+01
+-1.1597981e+03 4.6000188e+03 5.6271777e+01
+-2.0963049e+03 8.2978089e+03 2.2512260e+02
+-2.9504037e+03 1.1545381e+04 4.6259029e+02
+-3.5364067e+03 1.3612010e+04 7.4787841e+02
+-3.7868921e+03 1.4264148e+04 1.0697901e+03
+-3.7231586e+03 1.3666421e+04 1.4166491e+03
+-3.4023820e+03 1.2120318e+04 1.7757979e+03
+-2.8862510e+03 9.9183042e+03 2.1322767e+03
+-2.2362676e+03 7.3501837e+03 2.4620745e+03
+-1.5239464e+03 4.7530002e+03 2.7280835e+03
+-8.4472700e+02 2.5096454e+03 2.8795343e+03
+-3.2098209e+02 9.2465378e+02 2.8832313e+03
+-8.5709294e+00 1.4103583e+02 2.8325874e+03
+-3.0939375e+00 6.4951286e+01 2.7935359e+03
+-7.0577295e+00 3.7428412e+01 2.7545299e+03
+5.0205480e+00 2.0039454e+01 2.6782663e+03
+6.7129360e+02 4.5314538e+01 1.6436979e+03
+-2.1485137e+03 6.2114900e+02 0.0000000e+00
+-4.9614011e-04 3.6610556e-02 -1.5287261e-02
+-9.5582992e-03 6.3944889e-01 -2.9547869e-01
+-1.7043496e-01 9.1774013e+00 -4.3078640e+00
+-3.1383109e+00 1.1440921e+02 -4.5717553e+01
+-1.5491186e+02 1.5828127e+03 -5.5566606e+01
+-4.9640833e+02 4.7547576e+03 -2.8689516e+01
+-9.3218351e+02 8.5795249e+03 3.1862807e+01
+-1.3340993e+03 1.1954250e+04 1.1474582e+02
+-1.6081156e+03 1.4116805e+04 2.0609937e+02
+-1.7203949e+03 1.4807869e+04 3.0579320e+02
+-1.6834437e+03 1.4197202e+04 4.1163229e+02
+-1.5261813e+03 1.2592298e+04 5.2407813e+02
+-1.2802477e+03 1.0293371e+04 6.4688376e+02
+-9.7780098e+02 7.6063598e+03 7.7846116e+02
+-6.5287021e+02 4.8844768e+03 9.1151204e+02
+-3.4870369e+02 2.5427089e+03 1.0214662e+03
+-1.2225909e+02 9.4380240e+02 1.0483567e+03
+-6.6196598e+00 1.7407038e+02 1.0142652e+03
+-7.3595999e+00 6.0656479e+01 1.0158437e+03
+-1.3427123e+01 3.0497704e+01 1.0195391e+03
+-1.3796353e+01 1.5889030e+01 1.0027003e+03
+3.4187678e+02 2.1354903e+01 3.9061356e+02
+-1.3462003e+03 4.5380625e+02 0.0000000e+00
+-4.6269311e-05 4.7151617e-02 -1.0664687e-02
+6.0941086e-05 8.6947858e-01 -2.4404666e-01
+1.3758781e-02 1.3134568e+01 -4.2695847e+00
+2.9156471e-01 1.6789306e+02 -5.8833093e+01
+2.6647711e+00 1.5875146e+03 -7.4755724e+01
+6.5339492e+00 4.7093658e+03 -6.3470433e+01
+6.9035564e+00 8.4900208e+03 -3.3396609e+01
+1.1840908e+00 1.1847067e+04 -2.8488115e+00
+-7.9133010e+00 1.4016205e+04 1.5931522e+01
+-1.6740767e+01 1.4717244e+04 2.9923308e+01
+-2.3012972e+01 1.4122846e+04 3.8616173e+01
+-2.4889975e+01 1.2533731e+04 4.3893891e+01
+-2.2610508e+01 1.0244332e+04 5.2037788e+01
+-1.8639107e+01 7.5651327e+03 6.5107102e+01
+-1.4630853e+01 4.8461907e+03 8.7557043e+01
+-1.0643830e+01 2.5016806e+03 1.2258682e+02
+-6.6590336e+00 9.0315548e+02 1.6278504e+02
+-3.7319100e+00 1.6452236e+02 1.7329194e+02
+-4.7111956e+00 2.9857046e+01 2.0566760e+02
+-8.7588114e+00 8.3932019e+00 2.3095243e+02
+-1.2667709e+01 3.3502836e+00 2.4115711e+02
+9.5936087e+01 -9.3583721e+00 -4.1587967e+01
+-1.0874996e+03 2.6481324e+02 0.0000000e+00
+9.9578717e-05 3.8863764e-02 8.0187738e-03
+3.1381090e-03 7.6273831e-01 1.0785004e-01
+6.9071772e-02 1.2321762e+01 7.8149751e-01
+1.1244373e+00 1.6718525e+02 -7.0474267e-01
+1.1414343e+01 1.5943237e+03 -2.9697506e+01
+3.3421814e+01 4.6585560e+03 -4.6097365e+01
+5.4591523e+01 8.3505651e+03 -2.5100234e+01
+6.3962798e+01 1.1667474e+04 -6.7122800e-01
+6.1365736e+01 1.3836920e+04 9.8564282e+00
+5.1311542e+01 1.4546806e+04 1.8764900e+01
+3.8258402e+01 1.3977564e+04 2.2383072e+01
+2.6924922e+01 1.2417318e+04 2.1463323e+01
+1.8700277e+01 1.0150504e+04 2.3692189e+01
+1.0969591e+01 7.4960940e+03 2.8368577e+01
+2.5277817e+00 4.7985734e+03 3.8606332e+01
+-4.4822778e+00 2.4707135e+03 5.4506103e+01
+-7.0005378e+00 9.0215765e+02 5.3651985e+01
+-4.6201095e+00 1.9033018e+02 2.9532855e+01
+-2.9064377e+00 3.0151063e+01 3.0841798e+01
+-3.6828011e+00 4.2918430e+00 3.7028811e+01
+-6.7129414e+00 7.3278878e-01 4.0379271e+01
+-4.1246732e+01 -6.0106408e+00 -6.7841729e+01
+-9.0358824e+02 1.0839926e+02 0.0000000e+00
+1.2537030e-04 1.6106185e-02 2.2456523e-02
+3.8379200e-03 3.5318489e-01 4.2380490e-01
+8.8326801e-02 6.6332432e+00 5.9335844e+00
+1.5732955e+00 1.1236035e+02 5.7633136e+01
+1.8276104e+01 1.6028470e+03 1.2693121e+01
+5.2699150e+01 4.5962205e+03 -3.3432856e+01
+8.5687114e+01 8.1458862e+03 -1.8935989e+01
+1.0019192e+02 1.1397814e+04 1.8580140e+00
+9.5857867e+01 1.3561788e+04 6.4095803e+00
+7.9657352e+01 1.4279544e+04 1.4909742e+01
+5.8470047e+01 1.3748071e+04 1.7971643e+01
+3.9912970e+01 1.2233201e+04 1.5306569e+01
+2.6537990e+01 1.0003121e+04 1.7744245e+01
+1.4279433e+01 7.3929585e+03 1.9935263e+01
+1.1871699e+00 4.7379002e+03 2.2903872e+01
+-9.3750850e+00 2.4404482e+03 3.0810634e+01
+-1.2855552e+01 9.0438961e+02 2.6799545e+01
+-8.6462359e+00 2.1244635e+02 8.1897883e+00
+-3.8276919e+00 3.6379956e+01 4.2486315e+00
+-1.7630871e+00 4.9488637e+00 4.7234013e+00
+-2.7897663e+00 7.0212838e-01 5.2364984e+00
+-6.1982315e+01 -4.8806047e-01 -1.7257326e+01
+-5.4398573e+02 2.2309310e+01 0.0000000e+00
+7.2975569e-05 0.0000000e+00 1.5937055e-02
+2.4580016e-03 0.0000000e+00 3.6391009e-01
+6.7165660e-02 0.0000000e+00 6.8616966e+00
+1.6227914e+00 0.0000000e+00 1.1606534e+02
+3.5937645e+01 1.5987082e+03 5.4368004e+01
+1.0429244e+02 4.4792475e+03 -2.2847039e+01
+1.7349489e+02 7.7954693e+03 -1.5222025e+01
+2.1411898e+02 1.0918475e+04 5.0959680e+00
+2.1971782e+02 1.3050843e+04 4.3114092e+00
+1.9798959e+02 1.3769616e+04 1.2934556e+01
+1.6114412e+02 1.3294650e+04 1.6179988e+01
+1.2312171e+02 1.1857813e+04 1.2435211e+01
+9.0770223e+01 9.7004694e+03 1.6772225e+01
+5.9498244e+01 7.1799040e+03 1.6865981e+01
+2.6917087e+01 4.6127749e+03 1.2605061e+01
+2.2390933e-01 2.3770390e+03 1.5833673e+01
+-1.3288787e+01 8.8841498e+02 1.4457868e+01
+-1.2878500e+01 2.2189381e+02 3.7801725e+00
+-7.4528466e+00 4.0500795e+01 9.3160079e-01
+-2.6596496e+00 5.7344459e+00 5.6501533e-01
+-1.1506303e+00 1.1389208e+00 -1.8320783e-02
+-2.2494471e+01 0.0000000e+00 -5.9193664e-01
+-1.5918780e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.0795096e+02 1.1386187e+03 2.6247343e+02
+6.4180998e+02 4.0714166e+03 9.8102676e+01
+1.2051915e+03 6.8445431e+03 -1.1053031e+02
+1.8363179e+03 8.8527120e+03 -1.2109392e+01
+2.2985078e+03 1.0360349e+04 5.6868354e+01
+2.4696598e+03 1.0868576e+04 8.1436701e+00
+2.4103954e+03 1.0251373e+04 -1.1572512e+00
+2.1498837e+03 8.9743861e+03 2.9836297e+01
+1.7985705e+03 7.2810808e+03 4.8320351e+01
+1.4282573e+03 5.2719648e+03 2.8542149e+01
+1.0199006e+03 3.1740035e+03 2.4135688e+01
+6.4833384e+02 1.3937139e+03 3.4181130e+01
+3.3069603e+02 3.2426760e+02 1.1602700e+01
+7.4883789e+01 -5.3995573e+01 -7.1706763e+00
+-6.8646232e+01 -6.8348066e+01 2.1210033e+00
+-5.2418340e+01 -1.4708518e+01 6.2145963e+00
+-1.8455638e+01 1.3521729e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.1015294e+03 0.0000000e+00 1.8143247e+02
+-4.0982911e+03 0.0000000e+00 4.9054587e+02
+-7.5370836e+03 0.0000000e+00 2.6030305e+02
+-1.0052386e+04 0.0000000e+00 -4.9560830e+01
+-1.1469864e+04 0.0000000e+00 1.8110740e+02
+-1.1638281e+04 0.0000000e+00 5.0104071e+02
+-1.0722429e+04 0.0000000e+00 4.9908271e+02
+-9.4454195e+03 0.0000000e+00 4.4731075e+02
+-7.6211373e+03 0.0000000e+00 5.0672927e+02
+-5.2884157e+03 0.0000000e+00 5.0040806e+02
+-3.2774762e+03 0.0000000e+00 5.1015701e+02
+-1.8711805e+03 0.0000000e+00 5.2686944e+02
+-1.2188727e+03 0.0000000e+00 4.4607569e+02
+-1.1263471e+03 0.0000000e+00 2.9325557e+02
+-1.0181446e+03 0.0000000e+00 1.4581937e+02
+-4.9840978e+02 0.0000000e+00 4.4547451e+01
+-1.2787706e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-8.5221597e+02 -3.6352446e+03 5.1217605e+02
+-2.9476522e+03 -1.2735985e+04 9.7248623e+02
+-5.5216630e+03 -2.2140304e+04 2.0087303e+02
+-8.4115975e+03 -2.9555023e+04 -1.5645886e+02
+-1.1168229e+04 -3.4680944e+04 5.4367156e+02
+-1.2663682e+04 -3.6163470e+04 1.1456577e+03
+-1.2479747e+04 -3.4085041e+04 1.4044352e+03
+-1.1467955e+04 -2.9970815e+04 1.3819126e+03
+-9.8169021e+03 -2.4521731e+04 1.2562474e+03
+-7.2769851e+03 -1.8047521e+04 1.2404944e+03
+-4.9415564e+03 -1.1431900e+04 1.2894843e+03
+-3.4907876e+03 -5.9150414e+03 1.3182452e+03
+-2.6311594e+03 -2.4076660e+03 1.1537496e+03
+-1.8980434e+03 -7.9373674e+02 6.8320188e+02
+-1.2056170e+03 -2.4796537e+02 1.7233265e+02
+-5.3963765e+02 -8.5898730e+01 -1.2807941e+00
+-1.6112417e+02 -2.0833071e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.9264827e+02 -3.3577876e+03 6.2298058e+02
+-2.4034300e+03 -9.4177152e+03 3.4938968e+02
+-4.2312770e+03 -1.6224671e+04 -1.2986725e+02
+-5.6019721e+03 -2.2301636e+04 5.5426821e+01
+-6.3515832e+03 -2.6162641e+04 1.8678672e+02
+-6.4212814e+03 -2.7173148e+04 8.7514832e+01
+-5.8514088e+03 -2.5900329e+04 1.6482713e+02
+-4.9549345e+03 -2.2917117e+04 2.1567489e+02
+-3.9610732e+03 -1.8694572e+04 1.4758900e+02
+-2.8491732e+03 -1.3793394e+04 1.7064038e+02
+-1.7872861e+03 -8.7559558e+03 3.0351236e+02
+-9.8451108e+02 -4.3569453e+03 3.7838456e+02
+-5.1331364e+02 -1.4713922e+03 2.8391029e+02
+-3.0524445e+02 -2.6715652e+02 1.3446903e+02
+-2.1314574e+02 -1.0250451e+01 3.7474681e+01
+-1.1416806e+02 5.6698557e+00 1.9924915e+00
+-3.8683519e+01 1.4592408e+00 0.0000000e+00
+0 0 0
+0 0 0
+6.8210814e-05 -3.1306212e-02 3.1310975e-02
+2.9841347e-03 -6.8956112e-01 7.2034590e-01
+9.0935541e-02 -1.3043451e+01 1.3740026e+01
+2.1617051e+00 -2.2334448e+02 2.3654560e+02
+3.4318211e+01 -3.2361585e+03 1.1653905e+02
+1.0675676e+02 -9.2654146e+03 -3.8225575e+01
+2.2148643e+02 -1.6279501e+04 -3.1501066e+01
+3.5318791e+02 -2.2476536e+04 4.3282081e+00
+4.6377125e+02 -2.6394676e+04 -7.6846631e+00
+5.1971772e+02 -2.7491171e+04 -1.1383453e+01
+5.1666395e+02 -2.6252056e+04 -1.5173035e+01
+4.7249319e+02 -2.3259158e+04 -2.2504345e+01
+3.9949084e+02 -1.9010665e+04 -1.5194266e+01
+3.0948612e+02 -1.4047195e+04 -1.1393456e+01
+2.2244827e+02 -8.9502613e+03 -1.2635298e+01
+1.5074497e+02 -4.5161348e+03 -3.9778885e+00
+8.8814190e+01 -1.5761433e+03 -1.4054501e+00
+3.7268539e+01 -3.1199779e+02 -6.8312122e+00
+1.0014750e+01 -3.2275278e+01 -2.4057254e+00
+1.3287322e+00 -1.7073349e-02 -8.7130522e-01
+-1.2640988e+00 9.0760224e-01 -2.9088817e-01
+-4.2466797e+01 -5.6399001e+00 2.5099574e+01
+-1.7775396e+02 -1.7431937e+01 0.0000000e+00
+9.0505116e-05 -7.5308189e-02 4.4036841e-02
+4.1601195e-03 -1.4817512e+00 8.3590471e-01
+1.1504716e-01 -2.4039431e+01 1.1805164e+01
+2.2864819e+00 -3.2832282e+02 1.1607031e+02
+2.8953205e+01 -3.1590756e+03 2.8310390e+01
+9.3876292e+01 -9.2145280e+03 -6.3753044e+01
+1.8615275e+02 -1.6404405e+04 -3.9314980e+01
+2.8228898e+02 -2.2696955e+04 -9.9305458e-01
+3.5741181e+02 -2.6658780e+04 1.5563199e+00
+3.9108696e+02 -2.7806697e+04 5.6524435e+00
+3.8152577e+02 -2.6573827e+04 4.3681819e+00
+3.4349815e+02 -2.3557826e+04 -5.4945900e-01
+2.8750273e+02 -1.9277066e+04 4.8863428e+00
+2.2038973e+02 -1.4258911e+04 1.0492149e+01
+1.5543798e+02 -9.1124903e+03 1.8469990e+01
+1.0197005e+02 -4.6432758e+03 3.4265962e+01
+5.7512133e+01 -1.6423725e+03 3.0124319e+01
+2.2899665e+01 -3.1838107e+02 4.9571924e+00
+7.2586956e+00 -4.0662406e+01 2.2531588e+00
+3.1130657e+00 -2.1961616e+00 -4.5207716e-01
+1.4162109e+00 2.7746238e+00 -6.5739843e+00
+-1.3234968e+02 -4.2973617e+01 9.9829216e+01
+-5.9754332e+02 -1.7256763e+02 0.0000000e+00
+3.9818773e-05 -9.1202754e-02 1.5954324e-02
+2.8961567e-03 -1.6839242e+00 2.1836926e-01
+8.1181439e-02 -2.5496625e+01 1.6634534e+00
+1.4880290e+00 -3.2710114e+02 7.8185509e-02
+1.6319143e+01 -3.1079608e+03 -5.5941475e+01
+5.3659923e+01 -9.2020100e+03 -8.8697658e+01
+1.0688511e+02 -1.6495286e+04 -5.0110352e+01
+1.6260456e+02 -2.2841500e+04 -4.2068264e+00
+2.0651179e+02 -2.6820306e+04 1.2173059e+01
+2.2637364e+02 -2.7991528e+04 2.1942132e+01
+2.2104635e+02 -2.6759383e+04 2.4709880e+01
+1.9933577e+02 -2.3728711e+04 2.3183218e+01
+1.6730436e+02 -1.9430485e+04 2.7998353e+01
+1.2877781e+02 -1.4386612e+04 3.7890917e+01
+9.1384497e+01 -9.2224097e+03 5.8953655e+01
+6.0247640e+01 -4.7386315e+03 8.9579432e+01
+3.3574054e+01 -1.6821457e+03 8.8777897e+01
+1.2710203e+01 -2.9294503e+02 4.6011328e+01
+6.1656887e+00 -4.6438277e+01 4.2715060e+01
+7.8103323e+00 -5.6748641e+00 3.4699766e+01
+1.1105399e+01 6.8649444e+00 1.2737879e+01
+-2.1973305e+02 -1.3540733e+02 2.8189480e+02
+-1.1436259e+03 -5.6437898e+02 0.0000000e+00
+-1.6963552e-04 -7.0739532e-02 -2.0339855e-02
+-1.5812932e-03 -1.2361671e+00 -4.6645473e-01
+-2.1141347e-03 -1.7760761e+01 -8.1864455e+00
+1.6797086e-01 -2.2180115e+02 -1.1336284e+02
+1.1793182e+00 -3.0762860e+03 -1.4355215e+02
+3.8183011e+00 -9.2207389e+03 -1.2210757e+02
+9.8135030e+00 -1.6554821e+04 -6.5482307e+01
+1.9594697e+01 -2.2917541e+04 -7.8519137e+00
+3.0409574e+01 -2.6891891e+04 2.5410856e+01
+3.6715021e+01 -2.8067106e+04 4.7532824e+01
+3.6767162e+01 -2.6833154e+04 6.1524078e+01
+3.3646068e+01 -2.3797390e+04 7.1666969e+01
+2.8890629e+01 -1.9497991e+04 8.7672142e+01
+2.3162783e+01 -1.4454441e+04 1.1369957e+02
+1.9292097e+01 -9.3007873e+03 1.5815424e+02
+1.7943523e+01 -4.8340038e+03 2.2493915e+02
+1.5226297e+01 -1.7765320e+03 2.9744014e+02
+1.0134995e+01 -3.1808846e+02 3.0871667e+02
+1.3015017e+01 -1.0140411e+02 3.4595633e+02
+2.3829105e+01 -3.6851266e+01 3.4454369e+02
+3.9123330e+01 -1.3565784e+00 3.0091404e+02
+-3.0184297e+02 -3.0705409e+02 8.6845920e+02
+-1.7903043e+03 -1.1167300e+03 0.0000000e+00
+-9.2076556e-04 -4.0864301e-02 -2.9450606e-02
+-1.7809464e-02 -6.8783191e-01 -5.6953463e-01
+-3.1768120e-01 -9.8655474e+00 -8.3175023e+00
+-5.8219333e+00 -1.3871074e+02 -8.8724286e+01
+-2.9496877e+02 -2.9171261e+03 -1.0782734e+02
+-9.4196863e+02 -8.8242699e+03 -5.8736060e+01
+-1.7470315e+03 -1.5851389e+04 5.2679843e+01
+-2.4611444e+03 -2.1943382e+04 2.0556595e+02
+-2.9233158e+03 -2.5743997e+04 3.7287185e+02
+-3.0943164e+03 -2.6875775e+04 5.5546258e+02
+-3.0102988e+03 -2.5703335e+04 7.5249846e+02
+-2.7267415e+03 -2.2810046e+04 9.6571471e+02
+-2.2968588e+03 -1.8717355e+04 1.2016900e+03
+-1.7663059e+03 -1.3922465e+04 1.4582186e+03
+-1.1826432e+03 -9.0322821e+03 1.7194864e+03
+-6.1873219e+02 -4.7758660e+03 1.9313771e+03
+-1.7971153e+02 -1.7539965e+03 1.9662940e+03
+1.6369060e+01 -2.5778733e+02 1.8830042e+03
+3.4818598e+01 -1.0699613e+02 1.8464188e+03
+5.9704822e+01 -4.3538746e+01 1.7799764e+03
+9.2400876e+01 7.1031589e-01 1.6716397e+03
+-5.1516061e+02 -4.2010193e+02 2.6392941e+03
+-2.5805467e+03 -1.5744101e+03 0.0000000e+00
+-2.3645277e-03 -2.2534582e-02 -1.7294148e-02
+-4.8833807e-02 -3.9492720e-01 -2.8868019e-01
+-9.2180824e-01 -6.2672068e+00 -3.4781468e+00
+-1.7479040e+01 -1.0406023e+02 -3.0325532e+01
+-7.5085125e+02 -2.5520189e+03 -5.0629413e+01
+-2.1520617e+03 -7.9744161e+03 9.1780462e+01
+-3.8779422e+03 -1.4378157e+04 4.0018604e+02
+-5.4301372e+03 -1.9899272e+04 8.3580916e+02
+-6.4769440e+03 -2.3328594e+04 1.3609437e+03
+-6.9147130e+03 -2.4344524e+04 1.9575142e+03
+-6.7966115e+03 -2.3279648e+04 2.6072801e+03
+-6.2294638e+03 -2.0664165e+04 3.2884808e+03
+-5.3170089e+03 -1.6971582e+04 3.9734652e+03
+-4.1546740e+03 -1.2647144e+04 4.6165508e+03
+-2.8565429e+03 -8.2270435e+03 5.1439087e+03
+-1.5877578e+03 -4.3394547e+03 5.4505282e+03
+-5.6868593e+02 -1.5148296e+03 5.4590652e+03
+2.1906900e+01 -1.7818648e+02 5.3489865e+03
+6.3228749e+01 -6.8090376e+01 5.2437581e+03
+1.0707964e+02 -2.2314621e+01 5.1084040e+03
+1.5688926e+02 1.3140623e+01 4.9440351e+03
+-1.0989889e+03 -3.3930513e+02 6.6312550e+03
+-3.7060998e+03 -1.5559466e+03 0.0000000e+00
+-4.1570566e-03 -1.3225344e-02 -7.5302364e-03
+-8.6570449e-02 -2.4859320e-01 -1.1659977e-01
+-1.6410151e+00 -4.3196374e+00 -1.3533520e+00
+-3.1088445e+01 -7.7617952e+01 -1.4247371e+01
+-1.2691229e+03 -2.0665070e+03 7.0160179e+01
+-3.5090287e+03 -6.6714392e+03 3.5835530e+02
+-6.2568334e+03 -1.2101592e+04 9.1769897e+02
+-8.7399505e+03 -1.6756984e+04 1.7227524e+03
+-1.0440432e+04 -1.9631592e+04 2.7230817e+03
+-1.1185281e+04 -2.0472269e+04 3.8723163e+03
+-1.1044115e+04 -1.9565398e+04 5.1199757e+03
+-1.0175039e+04 -1.7359906e+04 6.4068270e+03
+-8.7344156e+03 -1.4254658e+04 7.6610882e+03
+-6.8714354e+03 -1.0620015e+04 8.7895477e+03
+-4.7720321e+03 -6.8970961e+03 9.6748034e+03
+-2.7050172e+03 -3.5993759e+03 1.0198728e+04
+-1.0262134e+03 -1.1908324e+03 1.0336481e+04
+2.6468208e+01 -1.1534151e+02 1.0238826e+04
+9.3788921e+01 -3.5783113e+01 1.0120481e+04
+1.6002829e+02 -6.4288084e+00 9.9545893e+03
+2.2488885e+02 1.6855540e+01 9.7685956e+03
+-2.0490797e+03 -2.2341530e+02 1.2736848e+04
+-5.2092799e+03 -1.2244061e+03 0.0000000e+00
+-5.8531091e-03 -7.9782774e-03 -2.7957958e-03
+-1.2161912e-01 -1.5736324e-01 -4.2833284e-02
+-2.2960329e+00 -2.8559885e+00 -5.3483244e-01
+-4.3254919e+01 -5.2589981e+01 -7.1638179e+00
+-1.7344141e+03 -1.5109729e+03 2.0092075e+02
+-4.7493334e+03 -5.0102223e+03 6.6237957e+02
+-8.4458900e+03 -9.1438024e+03 1.4854545e+03
+-1.1794168e+04 -1.2672787e+04 2.6678876e+03
+-1.4101950e+04 -1.4839768e+04 4.1530921e+03
+-1.5132570e+04 -1.5463945e+04 5.8684827e+03
+-1.4971725e+04 -1.4767592e+04 7.7299620e+03
+-1.3824989e+04 -1.3093006e+04 9.6402385e+03
+-1.1897350e+04 -1.0742674e+04 1.1485596e+04
+-9.3872624e+03 -7.9945748e+03 1.3130022e+04
+-6.5458610e+03 -5.1768173e+03 1.4419474e+04
+-3.7375444e+03 -2.6719427e+03 1.5222707e+04
+-1.4454988e+03 -8.4726022e+02 1.5529597e+04
+3.1620152e+01 -7.1580942e+01 1.5446843e+04
+1.2397525e+02 -1.7714915e+01 1.5324540e+04
+2.1330127e+02 2.0471131e+00 1.5132151e+04
+2.9252691e+02 1.8331334e+01 1.4922672e+04
+-3.0977724e+03 -1.8415188e+02 1.9368775e+04
+-6.8391584e+03 -9.8467036e+02 0.0000000e+00
+-7.1659603e-03 -4.3435612e-03 -6.8835975e-04
+-1.4840401e-01 -8.7560301e-02 -9.1919133e-03
+-2.7901321e+00 -1.6133754e+00 -9.3677193e-02
+-5.2324586e+01 -2.9863968e+01 -9.9829361e-01
+-2.0873833e+03 -9.1808086e+02 3.1129935e+02
+-5.7135473e+03 -3.1017124e+03 9.2835786e+02
+-1.0162324e+04 -5.6873110e+03 1.9775136e+03
+-1.4196622e+04 -7.8889788e+03 3.4762389e+03
+-1.6984098e+04 -9.2353309e+03 5.3659263e+03
+-1.8237906e+04 -9.6182612e+03 7.5541843e+03
+-1.8058000e+04 -9.1790864e+03 9.9294475e+03
+-1.6689076e+04 -8.1325383e+03 1.2363156e+04
+-1.4375694e+04 -6.6675914e+03 1.4707542e+04
+-1.1355432e+04 -4.9565878e+03 1.6791992e+04
+-7.9301737e+03 -3.2015800e+03 1.8432743e+04
+-4.5391391e+03 -1.6390438e+03 1.9484007e+04
+-1.7664686e+03 -5.0539543e+02 1.9932312e+04
+3.6031647e+01 -3.9241326e+01 1.9857208e+04
+1.4803762e+02 -7.5882360e+00 1.9728205e+04
+2.5623159e+02 5.4383587e+00 1.9513571e+04
+3.4634685e+02 1.6992638e+01 1.9287448e+04
+-3.9926854e+03 -1.4366353e+02 2.4912391e+04
+-8.1440430e+03 -7.0033552e+02 0.0000000e+00
+-7.9751568e-03 -1.3816722e-03 2.7742585e-04
+-1.6479430e-01 -2.8055283e-02 8.0055122e-03
+-3.0903484e+00 -5.1902027e-01 1.8045714e-01
+-5.7801679e+01 -9.6109172e+00 3.7317463e+00
+-2.3044050e+03 -3.0771451e+02 3.8338399e+02
+-6.3183002e+03 -1.0496012e+03 1.1052312e+03
+-1.1246043e+04 -1.9293733e+03 2.3037454e+03
+-1.5716930e+04 -2.6775949e+03 4.0085700e+03
+-1.8808278e+04 -3.1341513e+03 6.1607563e+03
+-2.0201390e+04 -3.2630995e+03 8.6557636e+03
+-2.0006218e+04 -3.1129596e+03 1.1364352e+04
+-1.8493490e+04 -2.7569438e+03 1.4137715e+04
+-1.5933843e+04 -2.2593404e+03 1.6806142e+04
+-1.2590089e+04 -1.6785392e+03 1.9176857e+04
+-8.7961264e+03 -1.0827485e+03 2.1047203e+04
+-5.0383483e+03 -5.5201631e+02 2.2260979e+04
+-1.9650809e+03 -1.6794933e+02 2.2799084e+04
+3.7975512e+01 -1.2566508e+01 2.2728105e+04
+1.6155330e+02 -2.0658087e+00 2.2596202e+04
+2.8077668e+02 2.6379386e+00 2.2373399e+04
+3.7562003e+02 6.9631028e+00 2.2148832e+04
+-4.5740169e+03 -5.5196942e+01 2.8480250e+04
+-8.7231558e+03 -2.4794500e+02 0.0000000e+00
+-8.2466742e-03 1.3816722e-03 5.7207270e-04
+-1.7027686e-01 2.8055283e-02 1.3635065e-02
+-3.1904748e+00 5.1902027e-01 2.7784591e-01
+-5.9623859e+01 9.6109172e+00 5.5058426e+00
+-2.3773808e+03 3.0771451e+02 4.0825499e+02
+-6.5238362e+03 1.0496012e+03 1.1667132e+03
+-1.1615638e+04 1.9293733e+03 2.4170157e+03
+-1.6235993e+04 2.6775949e+03 4.1928259e+03
+-1.9431058e+04 3.1341513e+03 6.4352105e+03
+-2.0871236e+04 3.2630995e+03 9.0355442e+03
+-2.0670097e+04 3.1129596e+03 1.1858511e+04
+-1.9107527e+04 2.7569438e+03 1.4748333e+04
+-1.6463308e+04 2.2593404e+03 1.7527773e+04
+-1.3008992e+04 1.6785392e+03 1.9996511e+04
+-9.0894167e+03 1.0827485e+03 2.1945526e+04
+-5.2070623e+03 5.5201631e+02 2.3214989e+04
+-2.0322387e+03 1.6794933e+02 2.3783613e+04
+3.8267636e+01 1.2566508e+01 2.3714074e+04
+1.6547966e+02 2.0658058e+00 2.3581785e+04
+2.8806145e+02 -2.6378583e+00 2.3357851e+04
+3.8375745e+02 -6.9659896e+00 2.3136854e+04
+-4.7701890e+03 5.4917174e+01 2.9699136e+04
+-8.8064543e+03 2.4789992e+02 0.0000000e+00
+-7.9751568e-03 4.3435612e-03 2.7742585e-04
+-1.6479430e-01 8.7560301e-02 8.0055122e-03
+-3.0903484e+00 1.6133754e+00 1.8045714e-01
+-5.7801679e+01 2.9863968e+01 3.7317463e+00
+-2.3044050e+03 9.1808086e+02 3.8338399e+02
+-6.3183002e+03 3.1017124e+03 1.1052312e+03
+-1.1246043e+04 5.6873110e+03 2.3037454e+03
+-1.5716930e+04 7.8889788e+03 4.0085700e+03
+-1.8808278e+04 9.2353309e+03 6.1607563e+03
+-2.0201390e+04 9.6182612e+03 8.6557636e+03
+-2.0006218e+04 9.1790864e+03 1.1364352e+04
+-1.8493490e+04 8.1325383e+03 1.4137715e+04
+-1.5933843e+04 6.6675914e+03 1.6806142e+04
+-1.2590089e+04 4.9565878e+03 1.9176857e+04
+-8.7961264e+03 3.2015800e+03 2.1047203e+04
+-5.0383483e+03 1.6390438e+03 2.2260979e+04
+-1.9650809e+03 5.0539543e+02 2.2799084e+04
+3.7975512e+01 3.9241326e+01 2.2728105e+04
+1.6155330e+02 7.5882314e+00 2.2596202e+04
+2.8077665e+02 -5.4386605e+00 2.2373398e+04
+3.7562509e+02 -1.6998299e+01 2.2148826e+04
+-4.5737553e+03 1.4331406e+02 2.8480466e+04
+-8.7229572e+03 7.0023784e+02 0.0000000e+00
+-7.1659603e-03 7.9782774e-03 -6.8835975e-04
+-1.4840401e-01 1.5736324e-01 -9.1919133e-03
+-2.7901321e+00 2.8559885e+00 -9.3677193e-02
+-5.2324586e+01 5.2589981e+01 -9.9829361e-01
+-2.0873833e+03 1.5109729e+03 3.1129935e+02
+-5.7135473e+03 5.0102223e+03 9.2835786e+02
+-1.0162324e+04 9.1438024e+03 1.9775136e+03
+-1.4196622e+04 1.2672787e+04 3.4762389e+03
+-1.6984098e+04 1.4839768e+04 5.3659263e+03
+-1.8237906e+04 1.5463945e+04 7.5541843e+03
+-1.8058000e+04 1.4767592e+04 9.9294475e+03
+-1.6689076e+04 1.3093006e+04 1.2363156e+04
+-1.4375694e+04 1.0742674e+04 1.4707542e+04
+-1.1355432e+04 7.9945748e+03 1.6791992e+04
+-7.9301737e+03 5.1768173e+03 1.8432743e+04
+-4.5391391e+03 2.6719427e+03 1.9484007e+04
+-1.7664686e+03 8.4726022e+02 1.9932312e+04
+3.6031648e+01 7.1580942e+01 1.9857208e+04
+1.4803762e+02 1.7714904e+01 1.9728205e+04
+2.5623163e+02 -2.0475013e+00 1.9513571e+04
+3.4634339e+02 -1.8354667e+01 1.9287419e+04
+-3.9927498e+03 1.8347226e+02 2.4912128e+04
+-8.1437956e+03 9.8450630e+02 0.0000000e+00
+-5.8531091e-03 1.3225344e-02 -2.7957958e-03
+-1.2161912e-01 2.4859320e-01 -4.2833284e-02
+-2.2960329e+00 4.3196374e+00 -5.3483244e-01
+-4.3254919e+01 7.7617952e+01 -7.1638179e+00
+-1.7344141e+03 2.0665070e+03 2.0092075e+02
+-4.7493334e+03 6.6714392e+03 6.6237957e+02
+-8.4458900e+03 1.2101592e+04 1.4854545e+03
+-1.1794168e+04 1.6756984e+04 2.6678876e+03
+-1.4101950e+04 1.9631592e+04 4.1530921e+03
+-1.5132570e+04 2.0472269e+04 5.8684827e+03
+-1.4971725e+04 1.9565398e+04 7.7299620e+03
+-1.3824989e+04 1.7359906e+04 9.6402385e+03
+-1.1897350e+04 1.4254658e+04 1.1485596e+04
+-9.3872624e+03 1.0620015e+04 1.3130022e+04
+-6.5458610e+03 6.8970961e+03 1.4419474e+04
+-3.7375444e+03 3.5993759e+03 1.5222707e+04
+-1.4454988e+03 1.1908324e+03 1.5529597e+04
+3.1620151e+01 1.1534151e+02 1.5446843e+04
+1.2397525e+02 3.5783120e+01 1.5324540e+04
+2.1330141e+02 6.4289530e+00 1.5132150e+04
+2.9253933e+02 -1.6859765e+01 1.4922648e+04
+-3.0973432e+03 2.2313445e+02 1.9368943e+04
+-6.8389103e+03 1.2244676e+03 0.0000000e+00
+-4.1570566e-03 2.2534582e-02 -7.5302364e-03
+-8.6570449e-02 3.9492720e-01 -1.1659977e-01
+-1.6410151e+00 6.2672068e+00 -1.3533520e+00
+-3.1088445e+01 1.0406023e+02 -1.4247371e+01
+-1.2691229e+03 2.5520189e+03 7.0160179e+01
+-3.5090287e+03 7.9744161e+03 3.5835530e+02
+-6.2568334e+03 1.4378157e+04 9.1769897e+02
+-8.7399505e+03 1.9899272e+04 1.7227524e+03
+-1.0440432e+04 2.3328594e+04 2.7230817e+03
+-1.1185281e+04 2.4344524e+04 3.8723163e+03
+-1.1044115e+04 2.3279648e+04 5.1199757e+03
+-1.0175039e+04 2.0664165e+04 6.4068270e+03
+-8.7344156e+03 1.6971582e+04 7.6610882e+03
+-6.8714354e+03 1.2647144e+04 8.7895477e+03
+-4.7720321e+03 8.2270435e+03 9.6748034e+03
+-2.7050172e+03 4.3394547e+03 1.0198728e+04
+-1.0262134e+03 1.5148296e+03 1.0336481e+04
+2.6468208e+01 1.7818649e+02 1.0238826e+04
+9.3788926e+01 6.8090383e+01 1.0120481e+04
+1.6002851e+02 2.2315416e+01 9.9545895e+03
+2.2488812e+02 -1.3083586e+01 9.7685243e+03
+-2.0487461e+03 3.4092991e+02 1.2735864e+04
+-5.2087501e+03 1.5561866e+03 0.0000000e+00
+-2.3645277e-03 4.0864301e-02 -1.7294148e-02
+-4.8833807e-02 6.8783191e-01 -2.8868019e-01
+-9.2180824e-01 9.8655474e+00 -3.4781468e+00
+-1.7479040e+01 1.3871074e+02 -3.0325532e+01
+-7.5085125e+02 2.9171261e+03 -5.0629413e+01
+-2.1520617e+03 8.8242699e+03 9.1780462e+01
+-3.8779422e+03 1.5851389e+04 4.0018604e+02
+-5.4301372e+03 2.1943382e+04 8.3580916e+02
+-6.4769440e+03 2.5743997e+04 1.3609437e+03
+-6.9147130e+03 2.6875775e+04 1.9575142e+03
+-6.7966115e+03 2.5703335e+04 2.6072801e+03
+-6.2294638e+03 2.2810046e+04 3.2884808e+03
+-5.3170089e+03 1.8717355e+04 3.9734652e+03
+-4.1546740e+03 1.3922465e+04 4.6165508e+03
+-2.8565429e+03 9.0322821e+03 5.1439087e+03
+-1.5877578e+03 4.7758660e+03 5.4505282e+03
+-5.6868593e+02 1.7539965e+03 5.4590652e+03
+2.1906899e+01 2.5778733e+02 5.3489865e+03
+6.3228734e+01 1.0699614e+02 5.2437581e+03
+1.0707908e+02 4.3537780e+01 5.1083989e+03
+1.5690752e+02 -6.2375533e-01 4.9439732e+03
+-1.0981639e+03 4.2311495e+02 6.6312450e+03
+-3.7052921e+03 1.5746025e+03 0.0000000e+00
+-9.2076555e-04 7.0739532e-02 -2.9450606e-02
+-1.7809464e-02 1.2361671e+00 -5.6953463e-01
+-3.1768120e-01 1.7760761e+01 -8.3175023e+00
+-5.8219333e+00 2.2180115e+02 -8.8724286e+01
+-2.9496877e+02 3.0762860e+03 -1.0782734e+02
+-9.4196863e+02 9.2207389e+03 -5.8736060e+01
+-1.7470315e+03 1.6554821e+04 5.2679843e+01
+-2.4611444e+03 2.2917541e+04 2.0556595e+02
+-2.9233158e+03 2.6891891e+04 3.7287185e+02
+-3.0943164e+03 2.8067106e+04 5.5546258e+02
+-3.0102988e+03 2.6833154e+04 7.5249846e+02
+-2.7267415e+03 2.3797390e+04 9.6571472e+02
+-2.2968588e+03 1.9497991e+04 1.2016900e+03
+-1.7663059e+03 1.4454441e+04 1.4582186e+03
+-1.1826432e+03 9.3007873e+03 1.7194864e+03
+-6.1873219e+02 4.8340038e+03 1.9313771e+03
+-1.7971153e+02 1.7765320e+03 1.9662940e+03
+1.6369060e+01 3.1808846e+02 1.8830042e+03
+3.4818532e+01 1.0140403e+02 1.8464182e+03
+5.9705758e+01 3.6850882e+01 1.7799727e+03
+9.2451064e+01 1.3685063e+00 1.6717329e+03
+-5.1358195e+02 3.0713466e+02 2.6430169e+03
+-2.5796769e+03 1.1170593e+03 0.0000000e+00
+-1.6963546e-04 9.1202754e-02 -2.0339855e-02
+-1.5812922e-03 1.6839242e+00 -4.6645473e-01
+-2.1141245e-03 2.5496625e+01 -8.1864455e+00
+1.6797093e-01 3.2710114e+02 -1.1336284e+02
+1.1793185e+00 3.1079608e+03 -1.4355215e+02
+3.8183013e+00 9.2020100e+03 -1.2210757e+02
+9.8135029e+00 1.6495286e+04 -6.5482306e+01
+1.9594698e+01 2.2841500e+04 -7.8519128e+00
+3.0409576e+01 2.6820306e+04 2.5410856e+01
+3.6715022e+01 2.7991528e+04 4.7532824e+01
+3.6767161e+01 2.6759383e+04 6.1524079e+01
+3.3646067e+01 2.3728711e+04 7.1666969e+01
+2.8890628e+01 1.9430485e+04 8.7672142e+01
+2.3162782e+01 1.4386612e+04 1.1369957e+02
+1.9292097e+01 9.2224097e+03 1.5815424e+02
+1.7943522e+01 4.7386315e+03 2.2493915e+02
+1.5226295e+01 1.6821457e+03 2.9744014e+02
+1.0135003e+01 2.9294503e+02 3.0871665e+02
+1.3015113e+01 4.6438296e+01 3.4595607e+02
+2.3830222e+01 5.6732838e+00 3.4454464e+02
+3.9144040e+01 -6.9451843e+00 3.0092279e+02
+-3.0078386e+02 1.3314793e+02 8.7162977e+02
+-1.7892966e+03 5.6473858e+02 0.0000000e+00
+3.9819211e-05 7.5308189e-02 1.5954324e-02
+2.8961651e-03 1.4817512e+00 2.1836926e-01
+8.1181559e-02 2.4039431e+01 1.6634534e+00
+1.4880302e+00 3.2832281e+02 7.8185615e-02
+1.6319149e+01 3.1590756e+03 -5.5941467e+01
+5.3659927e+01 9.2145280e+03 -8.8697651e+01
+1.0688513e+02 1.6404405e+04 -5.0110325e+01
+1.6260460e+02 2.2696955e+04 -4.2068381e+00
+2.0651185e+02 2.6658780e+04 1.2173054e+01
+2.2637366e+02 2.7806697e+04 2.1942137e+01
+2.2104633e+02 2.6573827e+04 2.4709856e+01
+1.9933574e+02 2.3557826e+04 2.3183214e+01
+1.6730433e+02 1.9277066e+04 2.7998356e+01
+1.2877777e+02 1.4258911e+04 3.7890905e+01
+9.1384458e+01 9.1124903e+03 5.8953623e+01
+6.0247614e+01 4.6432757e+03 8.9579490e+01
+3.3574179e+01 1.6423726e+03 8.8777928e+01
+1.2710449e+01 3.1838119e+02 4.6011207e+01
+6.1660097e+00 4.0662501e+01 4.2714555e+01
+7.8116673e+00 2.1954386e+00 3.4697936e+01
+1.1122075e+01 -2.8164561e+00 1.2734210e+01
+-2.1943024e+02 4.1600343e+01 2.8143306e+02
+-1.1425932e+03 1.7256264e+02 0.0000000e+00
+9.0507003e-05 3.1306211e-02 4.4036841e-02
+4.1601681e-03 6.8956111e-01 8.3590470e-01
+1.1504820e-01 1.3043451e+01 1.1805164e+01
+2.2864994e+00 2.2334447e+02 1.1607030e+02
+2.8953316e+01 3.2361581e+03 2.8310624e+01
+9.3878238e+01 9.2654160e+03 -6.3751580e+01
+1.8615399e+02 1.6279501e+04 -3.9314601e+01
+2.8229010e+02 2.2476536e+04 -9.9356267e-01
+3.5741391e+02 2.6394674e+04 1.5562931e+00
+3.9108712e+02 2.7491170e+04 5.6523357e+00
+3.8152534e+02 2.6252056e+04 4.3678043e+00
+3.4349756e+02 2.3259159e+04 -5.4951674e-01
+2.8750187e+02 1.9010666e+04 4.8866434e+00
+2.2038821e+02 1.4047197e+04 1.0492252e+01
+1.5543618e+02 8.9502641e+03 1.8469431e+01
+1.0197269e+02 4.5161451e+03 3.4268170e+01
+5.7515954e+01 1.5761432e+03 3.0126061e+01
+2.2906635e+01 3.1200040e+02 4.9539492e+00
+7.2676765e+00 3.2277068e+01 2.2440155e+00
+3.1228104e+00 1.0873314e-02 -4.5728344e-01
+1.4238739e+00 -9.3346871e-01 -6.5537201e+00
+-1.3211369e+02 5.4710757e+00 9.9708662e+01
+-5.9710441e+02 1.7606735e+01 0.0000000e+00
+6.8213970e-05 0.0000000e+00 3.1310973e-02
+2.9842511e-03 0.0000000e+00 7.2034583e-01
+9.0939782e-02 0.0000000e+00 1.3740022e+01
+2.1618704e+00 0.0000000e+00 2.3654542e+02
+3.4362877e+01 3.3578284e+03 1.1655802e+02
+1.0681867e+02 9.4176337e+03 -3.8185921e+01
+2.2152242e+02 1.6224738e+04 -3.1493587e+01
+3.5321122e+02 2.2301630e+04 4.3198279e+00
+4.6384303e+02 2.6162772e+04 -7.6724375e+00
+5.1969787e+02 2.7173174e+04 -1.1384402e+01
+5.1664309e+02 2.5900355e+04 -1.5182258e+01
+4.7246800e+02 2.2917137e+04 -2.2506289e+01
+3.9945886e+02 1.8694648e+04 -1.5178091e+01
+3.0943894e+02 1.3793445e+04 -1.1367287e+01
+2.2238500e+02 8.7558630e+03 -1.2673807e+01
+1.5070336e+02 4.3569818e+03 -3.9899354e+00
+8.8902662e+01 1.4713018e+03 -1.3400505e+00
+3.7462607e+01 2.6723359e+02 -6.9143029e+00
+1.0275626e+01 1.0296105e+01 -2.6619520e+00
+1.6061537e+00 -5.8758808e+00 -1.0407972e+00
+-1.0878376e+00 -1.8183942e+00 -2.1912715e-01
+-4.2563233e+01 0.0000000e+00 2.5319361e+01
+-1.7830735e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.9140156e+02 3.6343207e+03 6.2286004e+02
+-2.4020194e+03 1.2736296e+04 3.5104217e+02
+-4.2306295e+03 2.2141226e+04 -1.2962432e+02
+-5.6020866e+03 2.9555325e+04 5.5928901e+01
+-6.3491143e+03 3.4680051e+04 1.8627282e+02
+-6.4198755e+03 3.6163927e+04 8.7435916e+01
+-5.8521146e+03 3.4085759e+04 1.6454267e+02
+-4.9559154e+03 2.9971567e+04 2.1591342e+02
+-3.9623914e+03 2.4523491e+04 1.4803245e+02
+-2.8517183e+03 1.8051428e+04 1.7002586e+02
+-1.7919417e+03 1.1436856e+04 3.0087907e+02
+-9.8700959e+02 5.9158083e+03 3.7763181e+02
+-5.1117003e+02 2.4043413e+03 2.8645696e+02
+-2.9983675e+02 7.9612810e+02 1.3228390e+02
+-2.0542257e+02 2.4976952e+02 2.9583363e+01
+-1.0572247e+02 8.0557264e+01 -3.5481888e+00
+-3.4119900e+01 2.0866609e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-8.5235254e+02 0.0000000e+00 5.1297493e+02
+-2.9491326e+03 0.0000000e+00 9.7330454e+02
+-5.5220173e+03 0.0000000e+00 2.0129509e+02
+-8.4117981e+03 0.0000000e+00 -1.5607695e+02
+-1.1168324e+04 0.0000000e+00 5.4397645e+02
+-1.2663833e+04 0.0000000e+00 1.1456714e+03
+-1.2480161e+04 0.0000000e+00 1.4046638e+03
+-1.1468157e+04 0.0000000e+00 1.3820612e+03
+-9.8169744e+03 0.0000000e+00 1.2559417e+03
+-7.2769591e+03 0.0000000e+00 1.2404249e+03
+-4.9415808e+03 0.0000000e+00 1.2894132e+03
+-3.4907943e+03 0.0000000e+00 1.3182201e+03
+-2.6312008e+03 0.0000000e+00 1.1537517e+03
+-1.8980656e+03 0.0000000e+00 6.8304504e+02
+-1.2056762e+03 0.0000000e+00 1.7225183e+02
+-5.3970052e+02 0.0000000e+00 -1.3452881e+00
+-1.6107473e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.6498563e+03 -5.4067386e+03 7.0635773e+02
+6.0851951e+03 -1.8812134e+04 1.1379320e+03
+1.0896707e+04 -3.2664111e+04 -1.4807158e+02
+1.4397723e+04 -4.4343063e+04 -5.4803356e+02
+1.6561116e+04 -5.3438519e+04 3.6987856e+02
+1.6940884e+04 -5.6900467e+04 6.3865179e+02
+1.5656893e+04 -5.4611697e+04 7.1363683e+02
+1.3765795e+04 -4.9031511e+04 8.4282814e+02
+1.1559314e+04 -4.0856354e+04 5.7157204e+02
+9.0946707e+03 -3.0490555e+04 4.1214827e+02
+6.3591393e+03 -1.9717582e+04 5.0355016e+02
+3.5291289e+03 -1.0720122e+04 5.7714189e+02
+1.2664297e+03 -4.8503596e+03 5.3974063e+02
+1.6348547e+02 -1.8319557e+03 2.9498905e+02
+-1.9853283e+02 -5.5723969e+02 -1.5096349e+01
+-3.1104630e+02 -1.3357754e+02 -4.5252837e+01
+-1.9304671e+02 -2.1711187e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-3.3306812e+02 -6.9551677e+03 1.1908393e+03
+-9.0540035e+02 -1.9644137e+04 5.2481303e+02
+-1.8974015e+03 -3.4095018e+04 -3.7782205e+02
+-3.3613009e+03 -4.7076154e+04 1.1459852e+02
+-4.7256683e+03 -5.5415734e+04 4.6583204e+02
+-5.5707552e+03 -5.7702112e+04 4.1695240e+02
+-5.7334054e+03 -5.5078855e+04 7.6604642e+02
+-5.2526874e+03 -4.8890869e+04 9.2315876e+02
+-4.4057402e+03 -4.0132979e+04 6.4445281e+02
+-3.3878875e+03 -2.9869638e+04 5.6224981e+02
+-2.4683098e+03 -1.9291464e+04 8.1697085e+02
+-1.8378580e+03 -1.0041558e+04 9.9175396e+02
+-1.3236803e+03 -3.8003050e+03 7.5206606e+02
+-7.7776426e+02 -9.3259801e+02 3.2522816e+02
+-3.6253451e+02 -1.5276352e+02 7.0361019e+01
+-1.5720344e+02 -2.0779580e+01 5.9625085e-01
+-5.7358992e+01 -2.4763431e+00 0.0000000e+00
+0 0 0
+0 0 0
+-5.9403458e-04 -6.0843324e-02 6.1505569e-02
+-1.6009407e-02 -1.3449056e+00 1.4254047e+00
+-3.7747045e-01 -2.5601770e+01 2.7495581e+01
+-8.2328495e+00 -4.4301932e+02 4.8090946e+02
+-1.6252825e+02 -6.5263978e+03 2.4898591e+02
+-4.7302152e+02 -1.8759561e+04 -5.5727106e+01
+-8.4152777e+02 -3.3043927e+04 -4.3804080e+01
+-1.1463682e+03 -4.5653719e+04 3.3282140e+01
+-1.3119977e+03 -5.3622079e+04 1.5396919e+01
+-1.3363152e+03 -5.5846391e+04 1.5707385e+01
+-1.2410141e+03 -5.3332830e+04 2.7360212e+01
+-1.0573270e+03 -4.7353262e+04 1.9573584e+01
+-8.4230105e+02 -3.8892496e+04 2.0881981e+01
+-6.3395848e+02 -2.8937207e+04 3.1866706e+01
+-4.3205807e+02 -1.8659752e+04 5.4660903e+01
+-2.4156366e+02 -9.6761140e+03 8.1499595e+01
+-9.6789842e+01 -3.5966310e+03 6.3429853e+01
+-2.5279078e+01 -8.2142521e+02 1.4804985e+01
+-5.8781694e+00 -1.2602100e+02 3.9552649e+00
+-2.7409140e+00 -1.5154347e+01 2.3995006e+00
+-3.9001371e+00 -2.2854665e+00 4.8456306e+00
+-5.2829978e+01 -1.0427195e+01 2.5995588e+01
+-1.6207427e+02 1.2416392e+01 0.0000000e+00
+-1.1041719e-03 -1.4598996e-01 8.6341309e-02
+-2.5800363e-02 -2.8767262e+00 1.6481224e+00
+-5.0501893e-01 -4.6816303e+01 2.3482721e+01
+-8.2885329e+00 -6.4289654e+02 2.3393495e+02
+-9.3403140e+01 -6.2361511e+03 6.6044623e+01
+-2.7614025e+02 -1.8211708e+04 -1.1179181e+02
+-4.9119484e+02 -3.2413827e+04 -6.4544362e+01
+-6.5997005e+02 -4.4788822e+04 1.2816977e+01
+-7.4281520e+02 -5.2528554e+04 1.9518789e+01
+-7.4524699e+02 -5.4720352e+04 2.9812969e+01
+-6.8391900e+02 -5.2273921e+04 3.6348833e+01
+-5.7740638e+02 -4.6426466e+04 3.0457458e+01
+-4.5672063e+02 -3.8153184e+04 3.5368850e+01
+-3.4224074e+02 -2.8389258e+04 5.0050746e+01
+-2.3019468e+02 -1.8304931e+04 8.0862364e+01
+-1.2140998e+02 -9.4895813e+03 1.1770975e+02
+-3.9612173e+01 -3.4787985e+03 9.7002390e+01
+-4.1457197e+00 -7.2362492e+02 2.6247476e+01
+1.2592444e+00 -1.0839699e+02 1.4622924e+01
+6.9517081e-01 -1.4444115e+01 1.6330605e+01
+-3.3809382e+00 -4.6223659e+00 2.3449449e+01
+-1.7768683e+02 -8.2439335e+01 1.4080034e+02
+-3.6447800e+02 1.1584030e+01 0.0000000e+00
+-1.0470601e-03 -1.7660721e-01 3.1704133e-02
+-2.2076699e-02 -3.2616327e+00 4.4158352e-01
+-3.9038931e-01 -4.9440987e+01 3.5378385e+00
+-5.7241583e+00 -6.3574266e+02 3.5961524e+00
+-5.5802008e+01 -6.0579123e+03 -1.0252152e+02
+-1.6901348e+02 -1.7926676e+04 -1.6487992e+02
+-3.0425890e+02 -3.2077355e+04 -9.0208064e+01
+-4.1124000e+02 -4.4305413e+04 2.2780231e-01
+-4.6445145e+02 -5.1890256e+04 3.2893144e+01
+-4.6696126e+02 -5.4047724e+04 5.3600580e+01
+-4.2925002e+02 -5.1634973e+04 6.4949172e+01
+-3.6318057e+02 -4.5863563e+04 6.4562487e+01
+-2.8786466e+02 -3.7704112e+04 7.0659151e+01
+-2.1571157e+02 -2.8066121e+04 9.2010635e+01
+-1.4486575e+02 -1.8118564e+04 1.4189354e+02
+-7.6405048e+01 -9.4167175e+03 2.0568240e+02
+-2.4937392e+01 -3.4137392e+03 1.9913452e+02
+-2.8190435e+00 -6.1694770e+02 1.0798656e+02
+4.0199236e-01 -1.0915671e+02 1.1450998e+02
+5.4471852e-01 -2.9786840e+01 1.3712414e+02
+-8.0194089e+00 -1.8855652e+01 1.7048217e+02
+-3.9098235e+02 -3.1524588e+02 5.7453900e+02
+-2.1710010e+02 -1.1900362e+02 0.0000000e+00
+-9.6778675e-04 -1.3693936e-01 -3.8869698e-02
+-1.8273464e-02 -2.3921504e+00 -8.9165981e-01
+-2.9635659e-01 -3.4375858e+01 -1.5662547e+01
+-4.2082249e+00 -4.2972441e+02 -2.1730461e+02
+-4.5615585e+01 -5.9550781e+03 -2.7334390e+02
+-1.4501501e+02 -1.7819747e+04 -2.3144013e+02
+-2.6774089e+02 -3.1908429e+04 -1.2281238e+02
+-3.7007452e+02 -4.4026907e+04 -1.1648774e+01
+-4.2733483e+02 -5.1496165e+04 5.2004761e+01
+-4.3850013e+02 -5.3615413e+04 9.4909012e+01
+-4.1172386e+02 -5.1216399e+04 1.2482584e+02
+-3.5759234e+02 -4.5492929e+04 1.4543076e+02
+-2.9040055e+02 -3.7413678e+04 1.7428820e+02
+-2.1972776e+02 -2.7875259e+04 2.2631758e+02
+-1.4723837e+02 -1.8044674e+04 3.1895798e+02
+-7.7687471e+01 -9.4565457e+03 4.5441723e+02
+-2.5680721e+01 -3.5226920e+03 6.0427701e+02
+-4.5775312e+00 -6.4408637e+02 6.4612821e+02
+-3.8382151e+00 -2.2416257e+02 7.7798799e+02
+-6.4227758e+00 -1.1257746e+02 8.9103049e+02
+-2.9058890e+01 -7.3280847e+01 1.0136380e+03
+-7.4509030e+02 -7.7607156e+02 1.9177110e+03
+4.0936627e+02 -4.5359747e+02 0.0000000e+00
+-1.9805314e-03 -7.9010939e-02 -5.6868656e-02
+-3.9277504e-02 -1.3284040e+00 -1.0991470e+00
+-7.0685351e-01 -1.9029612e+01 -1.6056220e+01
+-1.2655565e+01 -2.6715228e+02 -1.7179471e+02
+-6.1395730e+02 -5.6006156e+03 -2.0726869e+02
+-1.9589468e+03 -1.6893288e+04 -1.1674921e+02
+-3.6250744e+03 -3.0235852e+04 8.8716676e+01
+-5.0901319e+03 -4.1679945e+04 3.7074173e+02
+-6.0249199e+03 -4.8701771e+04 6.7795176e+02
+-6.3564026e+03 -5.0690294e+04 1.0149187e+03
+-6.1689244e+03 -4.8426322e+04 1.3834675e+03
+-5.5887012e+03 -4.3033689e+04 1.7861868e+03
+-4.7272551e+03 -3.5434542e+04 2.2374478e+03
+-3.6675816e+03 -2.6476279e+04 2.7397429e+03
+-2.4959900e+03 -1.7256496e+04 3.2649119e+03
+-1.3559748e+03 -9.1655848e+03 3.7111935e+03
+-4.7899300e+02 -3.3852438e+03 3.8730269e+03
+-2.6179878e+01 -5.1520747e+02 3.7866969e+03
+-2.7614024e+01 -2.3832264e+02 3.8632896e+03
+-4.4126482e+01 -1.3558880e+02 3.9901321e+03
+-1.0299090e+02 -8.8732656e+01 4.2009758e+03
+-1.2554057e+03 -1.0676232e+03 5.2327670e+03
+1.6303454e+03 -7.8174570e+02 0.0000000e+00
+-4.4466396e-03 -4.3335120e-02 -3.3593708e-02
+-9.2130935e-02 -7.5725161e-01 -5.6144897e-01
+-1.7420535e+00 -1.1973094e+01 -6.7977215e+00
+-3.3017277e+01 -1.9801975e+02 -6.0392017e+01
+-1.4299433e+03 -4.8730344e+03 -1.0888109e+02
+-4.1090330e+03 -1.5190698e+04 1.4550020e+02
+-7.3881685e+03 -2.7287111e+04 7.0698562e+02
+-1.0308111e+04 -3.7598263e+04 1.5032767e+03
+-1.2252991e+04 -4.3889272e+04 2.4668248e+03
+-1.3053851e+04 -4.5654616e+04 3.5702855e+03
+-1.2833739e+04 -4.3605227e+04 4.7863181e+03
+-1.1800908e+04 -3.8753931e+04 6.0780043e+03
+-1.0136912e+04 -3.1932680e+04 7.3960452e+03
+-7.9945822e+03 -2.3896626e+04 8.6563003e+03
+-5.5668866e+03 -1.5608247e+04 9.7183952e+03
+-3.1663010e+03 -8.2593443e+03 1.0390698e+04
+-1.2726991e+03 -2.8911017e+03 1.0600569e+04
+-7.7466736e+01 -3.5641598e+02 1.0541151e+04
+-8.3089687e+01 -1.6029688e+02 1.0609444e+04
+-1.3163044e+02 -9.0529512e+01 1.0803094e+04
+-2.5793334e+02 -5.8780862e+01 1.1187940e+04
+-1.8722614e+03 -9.1150917e+02 1.1805099e+04
+3.7053336e+03 -6.8992026e+02 0.0000000e+00
+-7.5804382e-03 -2.5142313e-02 -1.4769425e-02
+-1.5810039e-01 -4.7041450e-01 -2.3007660e-01
+-3.0013646e+00 -8.1323341e+00 -2.7104872e+00
+-5.6933808e+01 -1.4542730e+02 -2.9457579e+01
+-2.3562721e+03 -3.9253573e+03 1.1001450e+02
+-6.5552714e+03 -1.2656508e+04 6.2206705e+02
+-1.1678186e+04 -2.2876636e+04 1.6329448e+03
+-1.6265486e+04 -3.1537072e+04 3.0972898e+03
+-1.9374100e+04 -3.6786267e+04 4.9279529e+03
+-2.0726003e+04 -3.8235564e+04 7.0496231e+03
+-2.0484585e+04 -3.6494582e+04 9.3794476e+03
+-1.8947075e+04 -3.2416996e+04 1.1814550e+04
+-1.6375584e+04 -2.6701193e+04 1.4224231e+04
+-1.3003382e+04 -1.9972983e+04 1.6432535e+04
+-9.1407379e+03 -1.3019920e+04 1.8212914e+04
+-5.2901631e+03 -6.8118555e+03 1.9350571e+04
+-2.2217829e+03 -2.2547268e+03 1.9909765e+04
+-1.4470818e+02 -2.3199755e+02 1.9956523e+04
+-1.5899847e+02 -9.3532048e+01 2.0142546e+04
+-2.5202992e+02 -5.2109075e+01 2.0516184e+04
+-4.6661272e+02 -3.8124490e+01 2.1187029e+04
+-2.5234224e+03 -6.6615146e+02 2.1416012e+04
+6.5191260e+03 -3.4186949e+02 0.0000000e+00
+-1.0477631e-02 -1.4953815e-02 -5.5639761e-03
+-2.1785975e-01 -2.9344986e-01 -8.6287986e-02
+-4.1158879e+00 -5.2978075e+00 -1.1009595e+00
+-7.7589755e+01 -9.7082391e+01 -1.5111028e+01
+-3.1648841e+03 -2.8575046e+03 3.4750624e+02
+-8.7523271e+03 -9.4729801e+03 1.1669725e+03
+-1.5572246e+04 -1.7230524e+04 2.6472164e+03
+-2.1696992e+04 -2.3775953e+04 4.7889221e+03
+-2.5877618e+04 -2.7719543e+04 7.4978655e+03
+-2.7736296e+04 -2.8788942e+04 1.0654969e+04
+-2.7475941e+04 -2.7455060e+04 1.4119663e+04
+-2.5477630e+04 -2.4366806e+04 1.7722114e+04
+-2.2078731e+04 -2.0052658e+04 2.1254960e+04
+-1.7584950e+04 -1.4980998e+04 2.4460662e+04
+-1.2410227e+04 -9.7352236e+03 2.7040333e+04
+-7.2293978e+03 -5.0353050e+03 2.8755636e+04
+-3.0842154e+03 -1.5952557e+03 2.9734881e+04
+-2.0976158e+02 -1.4701414e+02 2.9891279e+04
+-2.3502867e+02 -5.6679554e+01 3.0213431e+04
+-3.7286495e+02 -3.2254588e+01 3.0779743e+04
+-6.7591090e+02 -2.8950258e+01 3.1739072e+04
+-3.1548507e+03 -5.7126950e+02 3.1701271e+04
+9.2784524e+03 -1.6511196e+02 0.0000000e+00
+-1.2654454e-02 -8.0450075e-03 -1.4203142e-03
+-2.6214568e-01 -1.6138411e-01 -1.9744389e-02
+-4.9301906e+00 -2.9587806e+00 -2.1871285e-01
+-9.2487751e+01 -5.4513536e+01 -2.6244025e+00
+-3.7635597e+03 -1.7310153e+03 5.4706266e+02
+-1.0430767e+04 -5.8506758e+03 1.6419779e+03
+-1.8579531e+04 -1.0693284e+04 3.5219448e+03
+-2.5908937e+04 -1.4768441e+04 6.2267474e+03
+-3.0925953e+04 -1.7213001e+04 9.6620611e+03
+-3.3174723e+04 -1.7866290e+04 1.3676226e+04
+-3.2892141e+04 -1.7026515e+04 1.8081822e+04
+-3.0528524e+04 -1.5099902e+04 2.2654367e+04
+-2.6482715e+04 -1.2416175e+04 2.7124905e+04
+-2.1117181e+04 -9.2651906e+03 3.1170847e+04
+-1.4924664e+04 -6.0052424e+03 3.4435356e+04
+-8.7125605e+03 -3.0803764e+03 3.6653849e+04
+-3.7369679e+03 -9.4907551e+02 3.7978168e+04
+-2.6288058e+02 -8.4133256e+01 3.8214199e+04
+-2.9982747e+02 -3.3879900e+01 3.8639264e+04
+-4.7620973e+02 -2.0516985e+01 3.9359969e+04
+-8.5419234e+02 -2.2498009e+01 4.0554057e+04
+-3.6497218e+03 -4.6837552e+02 4.0108198e+04
+1.1414273e+04 -8.7354134e+01 0.0000000e+00
+-1.3965581e-02 -2.5423360e-03 4.8775273e-04
+-2.8862754e-01 -5.1381875e-02 1.4318757e-02
+-5.4138117e+00 -9.4600803e-01 3.2500949e-01
+-1.0128714e+02 -1.7439135e+01 6.7360719e+00
+-4.1259898e+03 -5.7931916e+02 6.7662466e+02
+-1.1471190e+04 -1.9774524e+03 1.9562908e+03
+-2.0458222e+04 -3.6234645e+03 4.0986496e+03
+-2.8547367e+04 -5.0069177e+03 7.1675630e+03
+-3.4089186e+04 -5.8349306e+03 1.1070401e+04
+-3.6578515e+04 -6.0544514e+03 1.5635687e+04
+-3.6275398e+04 -5.7676393e+03 2.0645990e+04
+-3.3676219e+04 -5.1128465e+03 2.5841664e+04
+-2.9220625e+04 -4.2021723e+03 3.0914443e+04
+-2.3307657e+04 -3.1337363e+03 3.5500556e+04
+-1.6479114e+04 -2.0283318e+03 3.9206633e+04
+-9.6249520e+03 -1.0361130e+03 4.1748973e+04
+-4.1371491e+03 -3.1521992e+02 4.3287186e+04
+-2.9959541e+02 -2.8002497e+01 4.3568626e+04
+-3.4722964e+02 -1.2086401e+01 4.4055615e+04
+-5.5225624e+02 -7.9983736e+00 4.4876129e+04
+-9.8314094e+02 -1.0007152e+01 4.6222410e+04
+-3.8993204e+03 -1.9219566e+02 4.5272109e+04
+1.2892070e+04 -1.6941110e+01 0.0000000e+00
+-1.4400273e-02 2.5423360e-03 1.0689272e-03
+-2.9738248e-01 5.1381875e-02 2.5410793e-02
+-5.5732982e+00 9.4600803e-01 5.1621815e-01
+-1.0418365e+02 1.7439135e+01 1.0197737e+01
+-4.2469741e+03 5.7931916e+02 7.2115274e+02
+-1.1822767e+04 1.9774524e+03 2.0651788e+03
+-2.1095535e+04 3.6234645e+03 4.2981471e+03
+-2.9443543e+04 5.0069177e+03 7.4918618e+03
+-3.5163566e+04 5.8349306e+03 1.1554508e+04
+-3.7733601e+04 6.0544514e+03 1.6307971e+04
+-3.7421928e+04 5.7676393e+03 2.1524523e+04
+-3.4741148e+04 5.1128465e+03 2.6932451e+04
+-3.0145290e+04 4.2021723e+03 3.2210089e+04
+-2.4046111e+04 3.1337363e+03 3.6979736e+04
+-1.7002093e+04 2.0283318e+03 4.0835748e+04
+-9.9311877e+03 1.0361130e+03 4.3487648e+04
+-4.2718734e+03 3.1521992e+02 4.5096843e+04
+-3.1325340e+02 2.8002497e+01 4.5392359e+04
+-3.6556609e+02 1.2086401e+01 4.5899232e+04
+-5.8179129e+02 7.9984046e+00 4.6753088e+04
+-1.0324858e+03 1.0008043e+01 4.8149316e+04
+-3.9593542e+03 1.9223309e+02 4.6954226e+04
+1.3463434e+04 1.7023281e+01 0.0000000e+00
+-1.3965581e-02 8.0450075e-03 4.8775273e-04
+-2.8862754e-01 1.6138411e-01 1.4318757e-02
+-5.4138117e+00 2.9587806e+00 3.2500949e-01
+-1.0128714e+02 5.4513536e+01 6.7360719e+00
+-4.1259898e+03 1.7310153e+03 6.7662466e+02
+-1.1471190e+04 5.8506758e+03 1.9562908e+03
+-2.0458222e+04 1.0693284e+04 4.0986496e+03
+-2.8547367e+04 1.4768441e+04 7.1675630e+03
+-3.4089186e+04 1.7213001e+04 1.1070401e+04
+-3.6578515e+04 1.7866290e+04 1.5635687e+04
+-3.6275398e+04 1.7026515e+04 2.0645990e+04
+-3.3676219e+04 1.5099902e+04 2.5841664e+04
+-2.9220625e+04 1.2416175e+04 3.0914443e+04
+-2.3307657e+04 9.2651906e+03 3.5500556e+04
+-1.6479114e+04 6.0052424e+03 3.9206633e+04
+-9.6249520e+03 3.0803764e+03 4.1748973e+04
+-4.1371491e+03 9.4907551e+02 4.3287186e+04
+-2.9959541e+02 8.4133256e+01 4.3568626e+04
+-3.4722964e+02 3.3879898e+01 4.4055615e+04
+-5.5225622e+02 2.0516929e+01 4.4876130e+04
+-9.8313993e+02 2.2490617e+01 4.6222410e+04
+-3.8992486e+03 4.6809342e+02 4.5272040e+04
+1.2892360e+04 8.7480583e+01 0.0000000e+00
+-1.2654454e-02 1.4953815e-02 -1.4203142e-03
+-2.6214568e-01 2.9344986e-01 -1.9744389e-02
+-4.9301906e+00 5.2978075e+00 -2.1871285e-01
+-9.2487751e+01 9.7082391e+01 -2.6244025e+00
+-3.7635597e+03 2.8575046e+03 5.4706266e+02
+-1.0430767e+04 9.4729801e+03 1.6419779e+03
+-1.8579531e+04 1.7230524e+04 3.5219448e+03
+-2.5908937e+04 2.3775953e+04 6.2267474e+03
+-3.0925953e+04 2.7719543e+04 9.6620611e+03
+-3.3174723e+04 2.8788942e+04 1.3676226e+04
+-3.2892141e+04 2.7455060e+04 1.8081822e+04
+-3.0528524e+04 2.4366806e+04 2.2654367e+04
+-2.6482715e+04 2.0052658e+04 2.7124905e+04
+-2.1117181e+04 1.4980998e+04 3.1170847e+04
+-1.4924664e+04 9.7352236e+03 3.4435356e+04
+-8.7125605e+03 5.0353050e+03 3.6653849e+04
+-3.7369679e+03 1.5952557e+03 3.7978168e+04
+-2.6288058e+02 1.4701414e+02 3.8214199e+04
+-2.9982746e+02 5.6679547e+01 3.8639264e+04
+-4.7620968e+02 3.2254401e+01 3.9359968e+04
+-8.5418577e+02 2.8951911e+01 4.0554036e+04
+-3.6493967e+03 5.7075258e+02 4.0108097e+04
+1.1414727e+04 1.6526036e+02 0.0000000e+00
+-1.0477631e-02 2.5142313e-02 -5.5639761e-03
+-2.1785975e-01 4.7041450e-01 -8.6287986e-02
+-4.1158879e+00 8.1323341e+00 -1.1009595e+00
+-7.7589755e+01 1.4542730e+02 -1.5111028e+01
+-3.1648841e+03 3.9253573e+03 3.4750624e+02
+-8.7523271e+03 1.2656508e+04 1.1669725e+03
+-1.5572246e+04 2.2876636e+04 2.6472164e+03
+-2.1696992e+04 3.1537072e+04 4.7889221e+03
+-2.5877618e+04 3.6786267e+04 7.4978655e+03
+-2.7736296e+04 3.8235564e+04 1.0654969e+04
+-2.7475941e+04 3.6494582e+04 1.4119663e+04
+-2.5477630e+04 3.2416996e+04 1.7722114e+04
+-2.2078731e+04 2.6701193e+04 2.1254960e+04
+-1.7584950e+04 1.9972983e+04 2.4460662e+04
+-1.2410227e+04 1.3019920e+04 2.7040333e+04
+-7.2293978e+03 6.8118555e+03 2.8755636e+04
+-3.0842154e+03 2.2547268e+03 2.9734881e+04
+-2.0976158e+02 2.3199755e+02 2.9891279e+04
+-2.3502867e+02 9.3532046e+01 3.0213431e+04
+-3.7286484e+02 5.2108959e+01 3.0779743e+04
+-6.7590407e+02 3.8122337e+01 3.1739035e+04
+-3.1546866e+03 6.6593930e+02 3.1701192e+04
+9.2787326e+03 3.4191950e+02 0.0000000e+00
+-7.5804382e-03 4.3335120e-02 -1.4769425e-02
+-1.5810039e-01 7.5725161e-01 -2.3007660e-01
+-3.0013646e+00 1.1973094e+01 -2.7104872e+00
+-5.6933808e+01 1.9801975e+02 -2.9457579e+01
+-2.3562721e+03 4.8730345e+03 1.1001450e+02
+-6.5552714e+03 1.5190698e+04 6.2206705e+02
+-1.1678186e+04 2.7287111e+04 1.6329448e+03
+-1.6265486e+04 3.7598263e+04 3.0972898e+03
+-1.9374100e+04 4.3889272e+04 4.9279529e+03
+-2.0726003e+04 4.5654616e+04 7.0496231e+03
+-2.0484585e+04 4.3605227e+04 9.3794476e+03
+-1.8947075e+04 3.8753931e+04 1.1814550e+04
+-1.6375584e+04 3.1932680e+04 1.4224231e+04
+-1.3003382e+04 2.3896626e+04 1.6432535e+04
+-9.1407379e+03 1.5608247e+04 1.8212914e+04
+-5.2901631e+03 8.2593443e+03 1.9350571e+04
+-2.2217829e+03 2.8911017e+03 1.9909765e+04
+-1.4470818e+02 3.5641598e+02 1.9956523e+04
+-1.5899847e+02 1.6029690e+02 2.0142546e+04
+-2.5203017e+02 9.0530287e+01 2.0516183e+04
+-4.6663047e+02 5.8806307e+01 2.1187018e+04
+-2.5242277e+03 9.1230439e+02 2.1414807e+04
+6.5193352e+03 6.8994196e+02 0.0000000e+00
+-4.4466396e-03 7.9010939e-02 -3.3593708e-02
+-9.2130935e-02 1.3284040e+00 -5.6144897e-01
+-1.7420535e+00 1.9029612e+01 -6.7977215e+00
+-3.3017277e+01 2.6715228e+02 -6.0392017e+01
+-1.4299433e+03 5.6006156e+03 -1.0888109e+02
+-4.1090330e+03 1.6893288e+04 1.4550020e+02
+-7.3881685e+03 3.0235852e+04 7.0698562e+02
+-1.0308111e+04 4.1679945e+04 1.5032767e+03
+-1.2252991e+04 4.8701771e+04 2.4668248e+03
+-1.3053851e+04 5.0690294e+04 3.5702855e+03
+-1.2833739e+04 4.8426322e+04 4.7863181e+03
+-1.1800908e+04 4.3033689e+04 6.0780043e+03
+-1.0136912e+04 3.5434542e+04 7.3960452e+03
+-7.9945822e+03 2.6476279e+04 8.6563003e+03
+-5.5668866e+03 1.7256496e+04 9.7183952e+03
+-3.1663010e+03 9.1655848e+03 1.0390698e+04
+-1.2726991e+03 3.3852438e+03 1.0600569e+04
+-7.7466736e+01 5.1520748e+02 1.0541151e+04
+-8.3089667e+01 2.3832267e+02 1.0609444e+04
+-1.3162985e+02 1.3558983e+02 1.0803093e+04
+-2.5791757e+02 8.8781904e+01 1.1187943e+04
+-1.8721148e+03 1.0691889e+03 1.1804183e+04
+3.7054721e+03 7.8211013e+02 0.0000000e+00
+-1.9805314e-03 1.3693936e-01 -5.6868656e-02
+-3.9277504e-02 2.3921504e+00 -1.0991470e+00
+-7.0685351e-01 3.4375858e+01 -1.6056220e+01
+-1.2655565e+01 4.2972441e+02 -1.7179471e+02
+-6.1395730e+02 5.9550781e+03 -2.0726869e+02
+-1.9589468e+03 1.7819747e+04 -1.1674921e+02
+-3.6250744e+03 3.1908429e+04 8.8716677e+01
+-5.0901319e+03 4.4026907e+04 3.7074173e+02
+-6.0249199e+03 5.1496165e+04 6.7795176e+02
+-6.3564026e+03 5.3615413e+04 1.0149187e+03
+-6.1689244e+03 5.1216399e+04 1.3834675e+03
+-5.5887012e+03 4.5492929e+04 1.7861868e+03
+-4.7272551e+03 3.7413678e+04 2.2374478e+03
+-3.6675816e+03 2.7875259e+04 2.7397429e+03
+-2.4959900e+03 1.8044674e+04 3.2649119e+03
+-1.3559748e+03 9.4565457e+03 3.7111935e+03
+-4.7899300e+02 3.5226920e+03 3.8730269e+03
+-2.6179879e+01 6.4408637e+02 3.7866969e+03
+-2.7613987e+01 2.2416264e+02 3.8632895e+03
+-4.4124733e+01 1.1257772e+02 3.9901321e+03
+-1.0292832e+02 7.3281274e+01 4.2010188e+03
+-1.2530546e+03 7.7610199e+02 5.2335789e+03
+1.6304416e+03 4.5424514e+02 0.0000000e+00
+-9.6778673e-04 1.7660721e-01 -3.8869698e-02
+-1.8273464e-02 3.2616327e+00 -8.9165981e-01
+-2.9635659e-01 4.9440987e+01 -1.5662547e+01
+-4.2082249e+00 6.3574266e+02 -2.1730461e+02
+-4.5615585e+01 6.0579123e+03 -2.7334390e+02
+-1.4501501e+02 1.7926676e+04 -2.3144013e+02
+-2.6774089e+02 3.2077355e+04 -1.2281237e+02
+-3.7007452e+02 4.4305413e+04 -1.1648775e+01
+-4.2733483e+02 5.1890256e+04 5.2004760e+01
+-4.3850013e+02 5.4047724e+04 9.4909012e+01
+-4.1172386e+02 5.1634973e+04 1.2482584e+02
+-3.5759234e+02 4.5863563e+04 1.4543076e+02
+-2.9040055e+02 3.7704112e+04 1.7428820e+02
+-2.1972776e+02 2.8066121e+04 2.2631758e+02
+-1.4723837e+02 1.8118564e+04 3.1895798e+02
+-7.7687468e+01 9.4167175e+03 4.5441723e+02
+-2.5680718e+01 3.4137392e+03 6.0427701e+02
+-4.5775252e+00 6.1694770e+02 6.4612821e+02
+-3.8382355e+00 1.0915670e+02 7.7798751e+02
+-6.4217690e+00 2.9787650e+01 8.9102956e+02
+-2.9032616e+01 1.8819349e+01 1.0136683e+03
+-7.4445726e+02 3.1381130e+02 1.9176192e+03
+4.0978779e+02 1.1973352e+02 0.0000000e+00
+-1.0470600e-03 1.4598996e-01 3.1704134e-02
+-2.2076697e-02 2.8767262e+00 4.4158353e-01
+-3.9038928e-01 4.6816303e+01 3.5378386e+00
+-5.7241581e+00 6.4289654e+02 3.5961527e+00
+-5.5802014e+01 6.2361511e+03 -1.0252151e+02
+-1.6901348e+02 1.8211708e+04 -1.6487987e+02
+-3.0425900e+02 3.2413828e+04 -9.0208045e+01
+-4.1124008e+02 4.4788822e+04 2.2774821e-01
+-4.6445144e+02 5.2528554e+04 3.2893119e+01
+-4.6696123e+02 5.4720352e+04 5.3600601e+01
+-4.2925004e+02 5.2273921e+04 6.4949189e+01
+-3.6318059e+02 4.6426466e+04 6.4562517e+01
+-2.8786468e+02 3.8153184e+04 7.0659161e+01
+-2.1571157e+02 2.8389258e+04 9.2010628e+01
+-1.4486575e+02 1.8304931e+04 1.4189351e+02
+-7.6404907e+01 9.4895821e+03 2.0568261e+02
+-2.4937182e+01 3.4787985e+03 1.9913471e+02
+-2.8188553e+00 7.2362520e+02 1.0798651e+02
+4.0215079e-01 1.0839750e+02 1.1450957e+02
+5.4455292e-01 1.4444266e+01 1.3712011e+02
+-8.0266299e+00 4.6101605e+00 1.7047803e+02
+-3.9140840e+02 8.1745301e+01 5.7452335e+02
+-2.1747945e+02 -1.2216833e+01 0.0000000e+00
+-1.1041714e-03 6.0843324e-02 8.6341310e-02
+-2.5800353e-02 1.3449056e+00 1.6481224e+00
+-5.0501866e-01 2.5601770e+01 2.3482722e+01
+-8.2885228e+00 4.4301933e+02 2.3393495e+02
+-9.3402239e+01 6.5264016e+03 6.6046231e+01
+-2.7614088e+02 1.8759562e+04 -1.1178885e+02
+-4.9119759e+02 3.3043934e+04 -6.4543922e+01
+-6.5997220e+02 4.5653725e+04 1.2814851e+01
+-7.4281454e+02 5.3622079e+04 1.9517900e+01
+-7.4524599e+02 5.5846389e+04 2.9813642e+01
+-6.8391974e+02 5.3332830e+04 3.6349569e+01
+-5.7740680e+02 4.7353262e+04 3.0458081e+01
+-4.5672058e+02 3.8892495e+04 3.5369178e+01
+-3.4224113e+02 2.8937207e+04 5.0050358e+01
+-2.3019450e+02 1.8659749e+04 8.0863329e+01
+-1.2140564e+02 9.6761083e+03 1.1771549e+02
+-3.9605561e+01 3.5966254e+03 9.7010056e+01
+-4.1405521e+00 8.2143447e+02 2.6247974e+01
+1.2631531e+00 1.2603619e+02 1.4613776e+01
+7.0011454e-01 1.5162710e+01 1.6318053e+01
+-3.3834447e+00 2.2849425e+00 2.3451415e+01
+-1.7807080e+02 1.0433839e+01 1.4071783e+02
+-3.6515385e+02 -1.2253680e+01 0.0000000e+00
+-5.9403428e-04 0.0000000e+00 6.1505572e-02
+-1.6009413e-02 0.0000000e+00 1.4254048e+00
+-3.7747180e-01 0.0000000e+00 2.7495587e+01
+-8.2321377e+00 0.0000000e+00 4.8091290e+02
+-1.6250766e+02 6.9551492e+03 2.4903572e+02
+-4.7307616e+02 1.9644109e+04 -5.5626202e+01
+-8.4161938e+02 3.4095254e+04 -4.3803820e+01
+-1.1464316e+03 4.7076366e+04 3.3197647e+01
+-1.3119674e+03 5.5415721e+04 1.5365923e+01
+-1.3362792e+03 5.7702237e+04 1.5728454e+01
+-1.2410403e+03 5.5078860e+04 2.7381748e+01
+-1.0573458e+03 4.8890869e+04 1.9588819e+01
+-8.4230455e+02 4.0132945e+04 2.0902739e+01
+-6.3397355e+02 2.9869592e+04 3.1876155e+01
+-4.3206031e+02 1.9291368e+04 5.4702270e+01
+-2.4144383e+02 1.0041271e+04 8.1689878e+01
+-9.6586487e+01 3.8000902e+03 6.3714433e+01
+-2.5145157e+01 9.3289154e+02 1.4865862e+01
+-5.7898247e+00 1.5322405e+02 3.7433495e+00
+-2.6029730e+00 2.0892652e+01 2.2229978e+00
+-3.7982682e+00 2.4234854e+00 4.7946153e+00
+-5.2961216e+01 0.0000000e+00 2.5628314e+01
+-1.6227362e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-3.3390458e+02 5.4058788e+03 1.1917767e+03
+-9.0737847e+02 1.8812972e+04 5.2827542e+02
+-1.9005014e+03 3.2671118e+04 -3.7776065e+02
+-3.3636212e+03 4.4348770e+04 1.1136942e+02
+-4.7244693e+03 5.3437308e+04 4.6513728e+02
+-5.5695216e+03 5.6899017e+04 4.1800706e+02
+-5.7346087e+03 5.4611942e+04 7.6674987e+02
+-5.2534419e+03 4.9031608e+04 9.2353520e+02
+-4.4058656e+03 4.0855851e+04 6.4410263e+02
+-3.3882307e+03 3.0488598e+04 5.6161364e+02
+-2.4689048e+03 1.9711996e+04 8.1796057e+02
+-1.8344462e+03 1.0708792e+04 9.9787729e+02
+-1.3174681e+03 4.8421081e+03 7.6215742e+02
+-7.7445075e+02 1.8414192e+03 3.2824233e+02
+-3.6086906e+02 5.7256814e+02 6.4350398e+01
+-1.5345996e+02 1.3631625e+02 -3.3349378e+00
+-5.4911143e+01 1.9878776e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.6505884e+03 0.0000000e+00 7.0610546e+02
+6.0849142e+03 0.0000000e+00 1.1384981e+03
+1.0896156e+04 0.0000000e+00 -1.4760418e+02
+1.4397806e+04 0.0000000e+00 -5.4778643e+02
+1.6560926e+04 0.0000000e+00 3.7019127e+02
+1.6940600e+04 0.0000000e+00 6.3885104e+02
+1.5656485e+04 0.0000000e+00 7.1375476e+02
+1.3765757e+04 0.0000000e+00 8.4296833e+02
+1.1559060e+04 0.0000000e+00 5.7142063e+02
+9.0943635e+03 0.0000000e+00 4.1217390e+02
+6.3588968e+03 0.0000000e+00 5.0359249e+02
+3.5290215e+03 0.0000000e+00 5.7709486e+02
+1.2661509e+03 0.0000000e+00 5.3957825e+02
+1.6334454e+02 0.0000000e+00 2.9488714e+02
+-1.9860648e+02 0.0000000e+00 -1.5257698e+01
+-3.1101318e+02 0.0000000e+00 -4.5207477e+01
+-1.9295782e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-2.8932355e+03 -7.8695627e+03 1.1967126e+03
+-1.0939630e+04 -2.7893330e+04 2.8733694e+03
+-1.9949869e+04 -4.6946948e+04 1.0919339e+03
+-2.5187024e+04 -6.1146892e+04 -5.0816109e+02
+-2.6829197e+04 -7.1809845e+04 7.0668483e+02
+-2.6531601e+04 -7.5046824e+04 9.2591739e+02
+-2.4244777e+04 -7.1208346e+04 -1.3874563e+01
+-1.9748361e+04 -6.4036692e+04 1.3386772e+01
+-1.4565062e+04 -5.3511371e+04 4.0928697e+02
+-1.0561421e+04 -3.9509623e+04 9.2133921e+02
+-7.3450368e+03 -2.4414717e+04 1.5934720e+03
+-4.0576845e+03 -1.1639201e+04 1.6029653e+03
+-1.7463902e+03 -3.8947370e+03 1.0120991e+03
+-9.7484088e+02 -7.5261961e+02 4.9611407e+02
+-9.3354315e+02 5.4976076e+01 1.9859855e+02
+-8.0215061e+02 8.4631175e+01 7.1356100e+01
+-3.2784246e+02 2.1721998e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.6609159e+03 -1.1801847e+04 1.9383016e+03
+5.4232022e+03 -3.2997510e+04 7.1387931e+02
+9.5832999e+03 -5.6877442e+04 -8.3632758e+02
+1.3227736e+04 -7.8463501e+04 -1.0824874e+02
+1.5524162e+04 -9.2500271e+04 3.3234886e+02
+1.6080864e+04 -9.6460714e+04 9.4720208e+01
+1.5152542e+04 -9.2421849e+04 4.2227583e+02
+1.3199920e+04 -8.2658100e+04 5.9108147e+02
+1.0787699e+04 -6.8401858e+04 2.8812487e+02
+8.3662172e+03 -5.1119780e+04 1.4417803e+02
+5.9415842e+03 -3.3018580e+04 3.3814637e+02
+3.5055666e+03 -1.7223217e+04 5.7877105e+02
+1.5530403e+03 -6.6288464e+03 4.3615966e+02
+5.2514262e+02 -1.7120800e+03 9.2710898e+01
+1.1524597e+02 -3.1144902e+02 -1.8645520e+01
+-3.8388503e+01 -4.6343420e+01 -6.3517984e+00
+-3.6264823e+01 -5.7252624e+00 0.0000000e+00
+0 0 0
+0 0 0
+-8.7484944e-05 -1.1566737e-01 1.1516082e-01
+1.6539211e-04 -2.5327482e+00 2.6317342e+00
+5.0582479e-02 -4.7567438e+01 4.9771119e+01
+1.9809870e+00 -8.0797907e+02 8.4753635e+02
+7.0053576e+01 -1.1605347e+04 4.1866975e+02
+2.0201094e+02 -3.3113939e+04 -1.3993376e+02
+2.8099893e+02 -5.8032243e+04 -1.0765947e+02
+2.4163430e+02 -8.0003425e+04 4.4262483e+01
+1.1251082e+02 -9.3904657e+04 2.4068883e+01
+-3.4535787e+01 -9.7801269e+04 6.2844090e+01
+-1.3119091e+02 -9.3599367e+04 1.3053865e+02
+-1.5681193e+02 -8.3547841e+04 1.1976400e+02
+-1.3929687e+02 -6.9065526e+04 8.0428377e+01
+-1.1757413e+02 -5.1617408e+04 6.1671793e+01
+-1.2623231e+02 -3.3358445e+04 9.5708098e+01
+-1.5561257e+02 -1.7368344e+04 1.5488347e+02
+-1.4464763e+02 -6.5531313e+03 1.2702632e+02
+-8.0977256e+01 -1.5612570e+03 3.1901766e+01
+-3.0985349e+01 -2.6250760e+02 8.0676800e+00
+-1.0373334e+01 -3.6100337e+01 5.4571640e+00
+-4.8101596e+00 -5.3985906e+00 6.0453661e+00
+-2.7533218e+01 2.5228213e+00 -2.1774502e+01
+-2.8878054e+02 -6.2498793e+01 0.0000000e+00
+-1.7784533e-04 -2.7918098e-01 1.6258729e-01
+3.7086543e-04 -5.4643279e+00 3.0679958e+00
+6.9235580e-02 -8.8095845e+01 4.3022148e+01
+1.6250711e+00 -1.1947318e+03 4.1986125e+02
+1.9165274e+01 -1.1405627e+04 1.0757264e+02
+4.6015304e+01 -3.3104281e+04 -2.2423636e+02
+3.2626385e+01 -5.8646144e+04 -1.3415672e+02
+-4.6505671e+01 -8.0767803e+04 1.6756540e+01
+-1.6065344e+02 -9.4509917e+04 3.9854673e+01
+-2.5948185e+02 -9.8331477e+04 8.4296840e+01
+-3.0412473e+02 -9.4023471e+04 1.2860680e+02
+-2.8884994e+02 -8.3829732e+04 1.2194111e+02
+-2.4029431e+02 -6.9263789e+04 1.0377788e+02
+-1.9010681e+02 -5.1773664e+04 1.0790482e+02
+-1.5956324e+02 -3.3485389e+04 1.6421672e+02
+-1.4202311e+02 -1.7422783e+04 2.3927442e+02
+-1.0638956e+02 -6.4468086e+03 1.9972910e+02
+-5.1299863e+01 -1.3731665e+03 5.8792702e+01
+-1.8805980e+01 -2.1581399e+02 3.2164324e+01
+-9.2205519e+00 -3.2072407e+01 3.8052344e+01
+-1.1251793e+01 -9.0893902e+00 4.9613925e+01
+-4.0586355e+01 1.8635502e+01 -1.0361387e+02
+-8.7468792e+02 -2.3224000e+02 0.0000000e+00
+-1.6920811e-04 -3.3923750e-01 5.9178667e-02
+1.3667433e-03 -6.2339226e+00 8.0532992e-01
+8.4035348e-02 -9.3861832e+01 6.0968919e+00
+1.6397647e+00 -1.1965464e+03 5.4764501e-01
+1.6696680e+01 -1.1278847e+04 -1.9873043e+02
+4.1570667e+01 -3.3195210e+04 -3.1838566e+02
+4.0664118e+01 -5.9130313e+04 -1.7913967e+02
+-4.1708848e+00 -8.1347919e+04 -6.0925132e+00
+-7.3335199e+01 -9.4968734e+04 6.1608840e+01
+-1.3452657e+02 -9.8717974e+04 1.1567147e+02
+-1.6340251e+02 -9.4330178e+04 1.5653071e+02
+-1.5662541e+02 -8.4038774e+04 1.5901819e+02
+-1.3009814e+02 -6.9417405e+04 1.5486831e+02
+-1.0239025e+02 -5.1913623e+04 1.8150658e+02
+-8.6650404e+01 -3.3636537e+04 2.7443977e+02
+-7.9281411e+01 -1.7543516e+04 3.9804973e+02
+-6.0289288e+01 -6.3996041e+03 3.8619725e+02
+-2.8231062e+01 -1.1722778e+03 2.1072057e+02
+-1.5440010e+01 -2.1323226e+02 2.2398092e+02
+-2.0218015e+01 -6.3906692e+01 2.7657794e+02
+-3.3843001e+01 -3.6163847e+01 3.2947301e+02
+1.2013108e+02 -5.8521733e+01 -1.0461205e+02
+-1.1292242e+03 -5.6283661e+02 0.0000000e+00
+-6.7261461e-04 -2.6394479e-01 -7.5587889e-02
+-8.3512471e-03 -4.5936288e+00 -1.7258038e+00
+-8.1638761e-02 -6.5701201e+01 -3.0101153e+01
+-8.3848718e-01 -8.1679855e+02 -4.1321879e+02
+-1.2875349e+01 -1.1206118e+04 -5.1868824e+02
+-5.3071936e+01 -3.3363114e+04 -4.4272726e+02
+-1.2632039e+02 -5.9474562e+04 -2.3989852e+02
+-2.1882047e+02 -8.1709556e+04 -2.9515926e+01
+-3.0239442e+02 -9.5216258e+04 9.3067459e+01
+-3.5384681e+02 -9.8891167e+04 1.8160721e+02
+-3.6318662e+02 -9.4445673e+04 2.4856518e+02
+-3.3486513e+02 -8.4102156e+04 2.8921983e+02
+-2.8247726e+02 -6.9471738e+04 3.3562923e+02
+-2.1948313e+02 -5.2006529e+04 4.2829022e+02
+-1.5774473e+02 -3.3803878e+04 6.0613696e+02
+-1.0267606e+02 -1.7779671e+04 8.6727982e+02
+-5.4469305e+01 -6.6542473e+03 1.1507116e+03
+-2.3961356e+01 -1.2226191e+03 1.2204367e+03
+-2.8254371e+01 -4.2876224e+02 1.4603829e+03
+-5.2069952e+01 -2.2299528e+02 1.6651196e+03
+-8.0502941e+01 -1.3598206e+02 1.8163821e+03
+6.1432410e+02 -4.4869504e+02 8.4714182e+02
+-1.0614450e+03 -1.1136623e+03 0.0000000e+00
+-3.2834270e-03 -1.5248783e-01 -1.1015406e-01
+-6.4507856e-02 -2.5558268e+00 -2.1227258e+00
+-1.1742824e+00 -3.6484710e+01 -3.0871787e+01
+-2.1858402e+01 -5.1068869e+02 -3.2777882e+02
+-1.0951203e+03 -1.0653440e+04 -3.9929366e+02
+-3.4859752e+03 -3.1998244e+04 -2.3713534e+02
+-6.4517637e+03 -5.7022015e+04 1.3700680e+02
+-9.0741493e+03 -7.8241668e+04 6.5313629e+02
+-1.0767914e+04 -9.1036502e+04 1.2163739e+03
+-1.1397843e+04 -9.4474468e+04 1.8411155e+03
+-1.1116873e+04 -9.0190470e+04 2.5338610e+03
+-1.0150563e+04 -8.0302503e+04 3.2960689e+03
+-8.6735716e+03 -6.6385899e+04 4.1565457e+03
+-6.8063072e+03 -4.9839969e+04 5.1287109e+03
+-4.7005827e+03 -3.2629366e+04 6.1587923e+03
+-2.6103325e+03 -1.7392583e+04 7.0260621e+03
+-9.4584502e+02 -6.4400948e+03 7.2787617e+03
+-5.1681052e+01 -9.7638514e+02 7.0580289e+03
+-5.7851024e+01 -4.5502323e+02 7.1145269e+03
+-1.0226795e+02 -2.6826701e+02 7.2179401e+03
+-1.3368629e+02 -1.6294046e+02 7.2755949e+03
+1.7091516e+03 -7.0548136e+02 4.5702401e+03
+-1.7244325e+03 -1.6987460e+03 0.0000000e+00
+-8.3103978e-03 -8.3276693e-02 -6.5347374e-02
+-1.7248941e-01 -1.4490341e+00 -1.0917815e+00
+-3.2763467e+00 -2.2796166e+01 -1.3246033e+01
+-6.2502102e+01 -3.7516993e+02 -1.1927996e+02
+-2.7130072e+03 -9.2588018e+03 -2.3085448e+02
+-7.7829160e+03 -2.8774307e+04 2.1909116e+02
+-1.3948001e+04 -5.1477068e+04 1.2339764e+03
+-1.9394307e+04 -7.0600648e+04 2.6791534e+03
+-2.2993621e+04 -8.2052239e+04 4.4355207e+03
+-2.4474240e+04 -8.5084234e+04 6.4656751e+03
+-2.4101686e+04 -8.1188821e+04 8.7319725e+03
+-2.2268032e+04 -7.2277579e+04 1.1174172e+04
+-1.9274626e+04 -5.9779945e+04 1.3705932e+04
+-1.5352360e+04 -4.4944405e+04 1.6168146e+04
+-1.0817807e+04 -2.9483157e+04 1.8272857e+04
+-6.2201798e+03 -1.5650476e+04 1.9584630e+04
+-2.4522978e+03 -5.4845991e+03 1.9808733e+04
+-9.3458193e+01 -6.7480800e+02 1.9523147e+04
+-7.6270201e+01 -3.1003900e+02 1.9371344e+04
+-1.3662876e+02 -1.8617316e+02 1.9294248e+04
+-1.4169662e+02 -1.1048214e+02 1.9125553e+04
+3.6668649e+03 -4.6484599e+02 1.3345962e+04
+-3.9892161e+03 -1.6429257e+03 0.0000000e+00
+-1.4152411e-02 -4.7754284e-02 -2.8950436e-02
+-2.9493590e-01 -8.8823746e-01 -4.5291160e-01
+-5.5962610e+00 -1.5256400e+01 -5.3977804e+00
+-1.0611566e+02 -2.7118214e+02 -6.0203714e+01
+-4.4159482e+03 -7.4228894e+03 1.6355997e+02
+-1.2340099e+04 -2.3890523e+04 1.0646033e+03
+-2.1948807e+04 -4.3018824e+04 2.8769796e+03
+-3.0475084e+04 -5.9033887e+04 5.5198153e+03
+-3.6197403e+04 -6.8554748e+04 8.8456284e+03
+-3.8678081e+04 -7.1024675e+04 1.2738147e+04
+-3.8284493e+04 -6.7718451e+04 1.7067686e+04
+-3.5574031e+04 -6.0243842e+04 2.1660905e+04
+-3.0976938e+04 -4.9800415e+04 2.6282729e+04
+-2.4840415e+04 -3.7419532e+04 3.0594889e+04
+-1.7659072e+04 -2.4493763e+04 3.4123829e+04
+-1.0300253e+04 -1.2849415e+04 3.6332857e+04
+-4.1798677e+03 -4.2521305e+03 3.7058474e+04
+-1.3571111e+02 -4.3803521e+02 3.6812704e+04
+-8.3368645e+01 -1.8559324e+02 3.6612628e+04
+-1.5380336e+02 -1.1563375e+02 3.6443862e+04
+-1.0960065e+02 -7.6677170e+01 3.6053024e+04
+6.1403870e+03 -1.5314003e+02 2.7077043e+04
+-7.7109238e+03 -9.4343426e+02 0.0000000e+00
+-1.9261857e-02 -2.7985117e-02 -1.0984942e-02
+-3.9966706e-01 -5.4571689e-01 -1.7169820e-01
+-7.5340930e+00 -9.7878174e+00 -2.2220761e+00
+-1.4171921e+02 -1.7828526e+02 -3.0989513e+01
+-5.8331574e+03 -5.3782065e+03 5.9260095e+02
+-1.6269736e+04 -1.7814246e+04 2.0337338e+03
+-2.8943436e+04 -3.2286864e+04 4.6729646e+03
+-4.0226571e+04 -4.4351449e+04 8.5201053e+03
+-4.7856915e+04 -5.1478471e+04 1.3423124e+04
+-5.1244255e+04 -5.3288668e+04 1.9195077e+04
+-5.0848017e+04 -5.0761549e+04 2.5610251e+04
+-4.7375741e+04 -4.5115707e+04 3.2380228e+04
+-4.1372515e+04 -3.7257547e+04 3.9131143e+04
+-3.3284172e+04 -2.7956575e+04 4.5367408e+04
+-2.3756029e+04 -1.8239408e+04 5.0458854e+04
+-1.3932770e+04 -9.4562584e+03 5.3769070e+04
+-5.7018694e+03 -2.9923709e+03 5.5126964e+04
+-1.7114919e+02 -2.7893250e+02 5.4929249e+04
+-8.6485952e+01 -1.1963303e+02 5.4714746e+04
+-1.6308024e+02 -8.4074392e+01 5.4473402e+04
+-6.4481307e+01 -7.0427061e+01 5.3855722e+04
+8.5269915e+03 -4.4802793e+01 4.2065538e+04
+-1.2014969e+04 -3.5272802e+02 0.0000000e+00
+-2.2953873e-02 -1.4871957e-02 -2.8137405e-03
+-4.7429444e-01 -2.9655154e-01 -3.9830333e-02
+-8.8963257e+00 -5.4036877e+00 -4.5782493e-01
+-1.6646349e+02 -9.8995570e+01 -5.7717691e+00
+-6.8516254e+03 -3.2470775e+03 9.5116501e+02
+-1.9197696e+04 -1.0971320e+04 2.8751677e+03
+-3.4221729e+04 -1.9983118e+04 6.2136183e+03
+-4.7624126e+04 -2.7475733e+04 1.1053092e+04
+-5.6717787e+04 -3.1881933e+04 1.7248388e+04
+-6.0793290e+04 -3.2982562e+04 2.4560848e+04
+-6.0384932e+04 -3.1395078e+04 3.2687167e+04
+-5.6322185e+04 -2.7880498e+04 4.1245619e+04
+-4.9243206e+04 -2.3003656e+04 4.9752219e+04
+-3.9669658e+04 -1.7239785e+04 5.7587906e+04
+-2.8357728e+04 -1.1217350e+04 6.3998912e+04
+-1.6658295e+04 -5.7667150e+03 6.8255103e+04
+-6.8205355e+03 -1.7747465e+03 7.0121046e+04
+-1.9575554e+02 -1.6323766e+02 6.9938226e+04
+-8.7226449e+01 -7.9400039e+01 6.9685392e+04
+-1.6694395e+02 -6.6232232e+01 6.9358284e+04
+-1.7776224e+01 -6.9194355e+01 6.8520640e+04
+1.0552709e+04 -3.0611755e+01 5.4304125e+04
+-1.6217709e+04 -2.1260055e+01 0.0000000e+00
+-2.5123220e-02 -4.6684924e-03 9.5417407e-04
+-5.1785791e-01 -9.3817955e-02 2.7450964e-02
+-9.6871149e+00 -1.7172992e+00 6.1436575e-01
+-1.8077404e+02 -3.1486545e+01 1.2592241e+01
+-7.4579977e+03 -1.0848604e+03 1.1823831e+03
+-2.0986357e+04 -3.7026725e+03 3.4289035e+03
+-3.7473954e+04 -6.7616867e+03 7.2232051e+03
+-5.2196933e+04 -9.3019478e+03 1.2698987e+04
+-6.2198339e+04 -1.0792350e+04 1.9718557e+04
+-6.6693271e+04 -1.1161313e+04 2.8012065e+04
+-6.6265216e+04 -1.0619824e+04 3.7226630e+04
+-6.1824208e+04 -9.4267233e+03 4.6920844e+04
+-5.4070745e+04 -7.7739236e+03 5.6541232e+04
+-4.3575694e+04 -5.8221407e+03 6.5391624e+04
+-3.1162909e+04 -3.7829185e+03 7.2640988e+04
+-1.8307872e+04 -1.9366511e+03 7.7493845e+04
+-7.4828775e+03 -5.8883922e+02 7.9653666e+04
+-2.0960313e+02 -5.5630438e+01 7.9456066e+04
+-8.7299354e+01 -3.0498721e+01 7.9147235e+04
+-1.6879953e+02 -2.8602810e+01 7.8726148e+04
+1.8562365e+01 -3.3556993e+01 7.7688808e+04
+1.2023057e+04 -1.5894706e+01 6.1751667e+04
+-1.9744846e+04 6.0083663e+01 0.0000000e+00
+-2.5834092e-02 4.6684924e-03 2.0968341e-03
+-5.3210166e-01 9.3817955e-02 4.9180106e-02
+-9.9452631e+00 1.7172992e+00 9.8654657e-01
+-1.8544211e+02 3.1486545e+01 1.9271919e+01
+-7.6589172e+03 1.0848604e+03 1.2614942e+03
+-2.1586639e+04 3.7026725e+03 3.6200211e+03
+-3.8569926e+04 6.7616867e+03 7.5710391e+03
+-5.3740155e+04 9.3019478e+03 1.3263756e+04
+-6.4047959e+04 1.0792350e+04 2.0563448e+04
+-6.8682611e+04 1.1161313e+04 2.9189831e+04
+-6.8244779e+04 1.0619824e+04 3.8773034e+04
+-6.3672796e+04 9.4267233e+03 4.8851235e+04
+-5.5689326e+04 7.7739236e+03 5.8847423e+04
+-4.4882509e+04 5.8221407e+03 6.8039540e+04
+-3.2098995e+04 3.7829185e+03 7.5570606e+04
+-1.8855708e+04 1.9366511e+03 8.0621824e+04
+-7.6998619e+03 5.8883922e+02 8.2872134e+04
+-2.1412281e+02 5.5630438e+01 8.2661743e+04
+-8.7539343e+01 3.0498723e+01 8.2322719e+04
+-1.6986801e+02 2.8602856e+01 8.1853590e+04
+3.1912926e+01 3.3558692e+01 8.0722075e+04
+1.2578629e+04 1.5948968e+01 6.4152248e+04
+-2.1245315e+04 -5.9927825e+01 0.0000000e+00
+-2.5123220e-02 1.4871957e-02 9.5417407e-04
+-5.1785791e-01 2.9655154e-01 2.7450964e-02
+-9.6871149e+00 5.4036877e+00 6.1436575e-01
+-1.8077404e+02 9.8995570e+01 1.2592241e+01
+-7.4579977e+03 3.2470775e+03 1.1823831e+03
+-2.0986357e+04 1.0971320e+04 3.4289035e+03
+-3.7473954e+04 1.9983118e+04 7.2232051e+03
+-5.2196933e+04 2.7475733e+04 1.2698987e+04
+-6.2198339e+04 3.1881933e+04 1.9718557e+04
+-6.6693271e+04 3.2982562e+04 2.8012065e+04
+-6.6265216e+04 3.1395078e+04 3.7226630e+04
+-6.1824208e+04 2.7880498e+04 4.6920844e+04
+-5.4070745e+04 2.3003656e+04 5.6541232e+04
+-4.3575694e+04 1.7239785e+04 6.5391624e+04
+-3.1162909e+04 1.1217350e+04 7.2640988e+04
+-1.8307872e+04 5.7667150e+03 7.7493845e+04
+-7.4828775e+03 1.7747465e+03 7.9653666e+04
+-2.0960313e+02 1.6323766e+02 7.9456066e+04
+-8.7299347e+01 7.9400039e+01 7.9147235e+04
+-1.6879933e+02 6.6232298e+01 7.8726148e+04
+1.8567396e+01 6.9194853e+01 7.7688805e+04
+1.2023231e+04 3.0661455e+01 6.1751614e+04
+-1.9744605e+04 2.1539746e+01 0.0000000e+00
+-2.2953873e-02 2.7985117e-02 -2.8137405e-03
+-4.7429444e-01 5.4571689e-01 -3.9830333e-02
+-8.8963257e+00 9.7878174e+00 -4.5782493e-01
+-1.6646349e+02 1.7828526e+02 -5.7717691e+00
+-6.8516254e+03 5.3782065e+03 9.5116501e+02
+-1.9197696e+04 1.7814246e+04 2.8751677e+03
+-3.4221729e+04 3.2286864e+04 6.2136183e+03
+-4.7624126e+04 4.4351449e+04 1.1053092e+04
+-5.6717787e+04 5.1478471e+04 1.7248388e+04
+-6.0793290e+04 5.3288668e+04 2.4560848e+04
+-6.0384932e+04 5.0761549e+04 3.2687167e+04
+-5.6322185e+04 4.5115707e+04 4.1245619e+04
+-4.9243206e+04 3.7257547e+04 4.9752219e+04
+-3.9669658e+04 2.7956575e+04 5.7587906e+04
+-2.8357728e+04 1.8239408e+04 6.3998912e+04
+-1.6658295e+04 9.4562584e+03 6.8255103e+04
+-6.8205355e+03 2.9923709e+03 7.0121046e+04
+-1.9575554e+02 2.7893250e+02 6.9938226e+04
+-8.7226438e+01 1.1963303e+02 6.9685392e+04
+-1.6694359e+02 8.4074360e+01 6.9358284e+04
+-1.7764485e+01 7.0428573e+01 6.8520623e+04
+1.0553149e+04 4.4854681e+01 5.4303882e+04
+-1.6217025e+04 3.5310320e+02 0.0000000e+00
+-1.9261857e-02 4.7754284e-02 -1.0984942e-02
+-3.9966706e-01 8.8823746e-01 -1.7169820e-01
+-7.5340930e+00 1.5256400e+01 -2.2220761e+00
+-1.4171921e+02 2.7118214e+02 -3.0989513e+01
+-5.8331574e+03 7.4228894e+03 5.9260095e+02
+-1.6269736e+04 2.3890523e+04 2.0337338e+03
+-2.8943436e+04 4.3018824e+04 4.6729646e+03
+-4.0226571e+04 5.9033887e+04 8.5201053e+03
+-4.7856915e+04 6.8554748e+04 1.3423124e+04
+-5.1244255e+04 7.1024675e+04 1.9195077e+04
+-5.0848017e+04 6.7718451e+04 2.5610251e+04
+-4.7375741e+04 6.0243842e+04 3.2380228e+04
+-4.1372515e+04 4.9800415e+04 3.9131143e+04
+-3.3284172e+04 3.7419532e+04 4.5367408e+04
+-2.3756029e+04 2.4493763e+04 5.0458854e+04
+-1.3932770e+04 1.2849415e+04 5.3769070e+04
+-5.7018694e+03 4.2521305e+03 5.5126964e+04
+-1.7114919e+02 4.3803521e+02 5.4929249e+04
+-8.6485945e+01 1.8559325e+02 5.4714746e+04
+-1.6307957e+02 1.1563394e+02 5.4473402e+04
+-6.4466728e+01 7.6682357e+01 5.3855711e+04
+8.5288381e+03 1.5390386e+02 4.2065311e+04
+-1.2014283e+04 9.4350746e+02 0.0000000e+00
+-1.4152411e-02 8.3276693e-02 -2.8950436e-02
+-2.9493590e-01 1.4490341e+00 -4.5291160e-01
+-5.5962610e+00 2.2796166e+01 -5.3977804e+00
+-1.0611566e+02 3.7516993e+02 -6.0203714e+01
+-4.4159482e+03 9.2588018e+03 1.6355997e+02
+-1.2340099e+04 2.8774307e+04 1.0646033e+03
+-2.1948807e+04 5.1477068e+04 2.8769796e+03
+-3.0475084e+04 7.0600648e+04 5.5198153e+03
+-3.6197403e+04 8.2052239e+04 8.8456284e+03
+-3.8678081e+04 8.5084234e+04 1.2738147e+04
+-3.8284493e+04 8.1188821e+04 1.7067686e+04
+-3.5574031e+04 7.2277579e+04 2.1660905e+04
+-3.0976938e+04 5.9779945e+04 2.6282729e+04
+-2.4840415e+04 4.4944405e+04 3.0594889e+04
+-1.7659072e+04 2.9483157e+04 3.4123829e+04
+-1.0300253e+04 1.5650476e+04 3.6332857e+04
+-4.1798677e+03 5.4845991e+03 3.7058474e+04
+-1.3571111e+02 6.7480800e+02 3.6812704e+04
+-8.3368641e+01 3.1003901e+02 3.6612628e+04
+-1.5380331e+02 1.8617334e+02 3.6443862e+04
+-1.0959359e+02 1.1048397e+02 3.6053032e+04
+6.1408367e+03 4.6492039e+02 2.7076952e+04
+-7.7108530e+03 1.6426610e+03 0.0000000e+00
+-8.3103979e-03 1.5248783e-01 -6.5347374e-02
+-1.7248941e-01 2.5558268e+00 -1.0917815e+00
+-3.2763467e+00 3.6484710e+01 -1.3246033e+01
+-6.2502102e+01 5.1068869e+02 -1.1927996e+02
+-2.7130072e+03 1.0653440e+04 -2.3085448e+02
+-7.7829160e+03 3.1998244e+04 2.1909116e+02
+-1.3948001e+04 5.7022015e+04 1.2339764e+03
+-1.9394307e+04 7.8241668e+04 2.6791534e+03
+-2.2993621e+04 9.1036502e+04 4.4355207e+03
+-2.4474240e+04 9.4474468e+04 6.4656751e+03
+-2.4101686e+04 9.0190470e+04 8.7319725e+03
+-2.2268032e+04 8.0302503e+04 1.1174172e+04
+-1.9274626e+04 6.6385899e+04 1.3705932e+04
+-1.5352360e+04 4.9839969e+04 1.6168146e+04
+-1.0817807e+04 3.2629366e+04 1.8272857e+04
+-6.2201798e+03 1.7392583e+04 1.9584630e+04
+-2.4522978e+03 6.4400948e+03 1.9808733e+04
+-9.3458193e+01 9.7638514e+02 1.9523147e+04
+-7.6270184e+01 4.5502325e+02 1.9371344e+04
+-1.3662844e+02 2.6826748e+02 1.9294248e+04
+-1.4169292e+02 1.6295478e+02 1.9125552e+04
+3.6663004e+03 7.0593953e+02 1.3345612e+04
+-3.9896650e+03 1.6989161e+03 0.0000000e+00
+-3.2834270e-03 2.6394479e-01 -1.1015406e-01
+-6.4507856e-02 4.5936288e+00 -2.1227258e+00
+-1.1742824e+00 6.5701201e+01 -3.0871787e+01
+-2.1858402e+01 8.1679855e+02 -3.2777882e+02
+-1.0951203e+03 1.1206118e+04 -3.9929366e+02
+-3.4859752e+03 3.3363114e+04 -2.3713534e+02
+-6.4517637e+03 5.9474562e+04 1.3700680e+02
+-9.0741493e+03 8.1709556e+04 6.5313629e+02
+-1.0767914e+04 9.5216258e+04 1.2163739e+03
+-1.1397843e+04 9.8891167e+04 1.8411155e+03
+-1.1116873e+04 9.4445673e+04 2.5338610e+03
+-1.0150563e+04 8.4102156e+04 3.2960689e+03
+-8.6735716e+03 6.9471738e+04 4.1565457e+03
+-6.8063072e+03 5.2006529e+04 5.1287109e+03
+-4.7005827e+03 3.3803878e+04 6.1587923e+03
+-2.6103325e+03 1.7779671e+04 7.0260621e+03
+-9.4584502e+02 6.6542473e+03 7.2787617e+03
+-5.1681051e+01 1.2226191e+03 7.0580289e+03
+-5.7850997e+01 4.2876225e+02 7.1145269e+03
+-1.0226729e+02 2.2299528e+02 7.2179417e+03
+-1.3367623e+02 1.3597653e+02 7.2756678e+03
+1.7090317e+03 4.4836612e+02 4.5696234e+03
+-1.7251653e+03 1.1138690e+03 0.0000000e+00
+-6.7261469e-04 3.3923750e-01 -7.5587889e-02
+-8.3512485e-03 6.2339226e+00 -1.7258038e+00
+-8.1638779e-02 9.3861832e+01 -3.0101153e+01
+-8.3848734e-01 1.1965464e+03 -4.1321879e+02
+-1.2875350e+01 1.1278847e+04 -5.1868824e+02
+-5.3071937e+01 3.3195210e+04 -4.4272726e+02
+-1.2632040e+02 5.9130313e+04 -2.3989852e+02
+-2.1882047e+02 8.1347919e+04 -2.9515927e+01
+-3.0239443e+02 9.4968734e+04 9.3067457e+01
+-3.5384681e+02 9.8717974e+04 1.8160721e+02
+-3.6318662e+02 9.4330178e+04 2.4856518e+02
+-3.3486513e+02 8.4038774e+04 2.8921983e+02
+-2.8247726e+02 6.9417405e+04 3.3562923e+02
+-2.1948313e+02 5.1913623e+04 4.2829023e+02
+-1.5774474e+02 3.3636537e+04 6.0613697e+02
+-1.0267606e+02 1.7543516e+04 8.6727983e+02
+-5.4469300e+01 6.3996041e+03 1.1507116e+03
+-2.3961355e+01 1.1722778e+03 1.2204367e+03
+-2.8254357e+01 2.1323227e+02 1.4603828e+03
+-5.2069622e+01 6.3906620e+01 1.6651194e+03
+-8.0496794e+01 3.6168987e+01 1.8163911e+03
+6.1434301e+02 5.8864373e+01 8.4709112e+02
+-1.0619258e+03 5.6370132e+02 0.0000000e+00
+-1.6920872e-04 2.7918098e-01 5.9178668e-02
+1.3667294e-03 5.4643279e+00 8.0532993e-01
+8.4035099e-02 8.8095845e+01 6.0968920e+00
+1.6397613e+00 1.1947318e+03 5.4764350e-01
+1.6696664e+01 1.1405627e+04 -1.9873041e+02
+4.1570541e+01 3.3104281e+04 -3.1838561e+02
+4.0663895e+01 5.8646144e+04 -1.7913964e+02
+-4.1711074e+00 8.0767803e+04 -6.0925333e+00
+-7.3335309e+01 9.4509917e+04 6.1608818e+01
+-1.3452662e+02 9.8331477e+04 1.1567145e+02
+-1.6340254e+02 9.4023471e+04 1.5653070e+02
+-1.5662543e+02 8.3829732e+04 1.5901818e+02
+-1.3009813e+02 6.9263789e+04 1.5486834e+02
+-1.0239026e+02 5.1773664e+04 1.8150671e+02
+-8.6650538e+01 3.3485388e+04 2.7443985e+02
+-7.9281246e+01 1.7422783e+04 3.9804992e+02
+-6.0289115e+01 6.4468085e+03 3.8619741e+02
+-2.8231029e+01 1.3731669e+03 2.1072052e+02
+-1.5440149e+01 2.1581465e+02 2.2398043e+02
+-2.0218511e+01 3.2073339e+01 2.7657678e+02
+-3.3855972e+01 9.0906025e+00 3.2948445e+02
+1.1968745e+02 -1.8569164e+01 -1.0417769e+02
+-1.1295052e+03 2.3308510e+02 0.0000000e+00
+-1.7784847e-04 1.1566737e-01 1.6258729e-01
+3.7076863e-04 2.5327482e+00 3.0679959e+00
+6.9232911e-02 4.7567438e+01 4.3022152e+01
+1.6250360e+00 8.0797922e+02 4.1986142e+02
+1.9164131e+01 1.1605349e+04 1.0757328e+02
+4.6010338e+01 3.3113939e+04 -2.2423510e+02
+3.2620155e+01 5.8032247e+04 -1.3415559e+02
+-4.6512203e+01 8.0003432e+04 1.6755518e+01
+-1.6065600e+02 9.3904660e+04 3.9854132e+01
+-2.5948248e+02 9.7801271e+04 8.4296584e+01
+-3.0412519e+02 9.3599366e+04 1.2860686e+02
+-2.8885036e+02 8.3547839e+04 1.2194132e+02
+-2.4029342e+02 6.9065525e+04 1.0377847e+02
+-1.9010677e+02 5.1617405e+04 1.0790425e+02
+-1.5955994e+02 3.3358438e+04 1.6422029e+02
+-1.4201663e+02 1.7368331e+04 2.3928112e+02
+-1.0638321e+02 6.5531313e+03 1.9973600e+02
+-5.1299724e+01 1.5612685e+03 5.8793409e+01
+-1.8810577e+01 2.6252507e+02 3.2156715e+01
+-9.2236902e+00 3.6117848e+01 3.8036041e+01
+-1.1262421e+01 5.4167995e+00 4.9588865e+01
+-4.0823993e+01 -2.6827405e+00 -1.0354425e+02
+-8.7511249e+02 6.2413333e+01 0.0000000e+00
+-8.7490354e-05 0.0000000e+00 1.1516082e-01
+1.6516902e-04 0.0000000e+00 2.6317344e+00
+5.0578758e-02 0.0000000e+00 4.9771216e+01
+1.9803932e+00 0.0000000e+00 8.4753790e+02
+6.9984916e+01 1.1801760e+04 4.1864823e+02
+2.0188439e+02 3.2997540e+04 -1.3991398e+02
+2.8080873e+02 5.6877545e+04 -1.0763444e+02
+2.4143532e+02 7.8463725e+04 4.4205085e+01
+1.1246015e+02 9.2500393e+04 2.4058332e+01
+-3.4548252e+01 9.6460750e+04 6.2848077e+01
+-1.3119757e+02 9.2421858e+04 1.3054256e+02
+-1.5682163e+02 8.2658088e+04 1.1976984e+02
+-1.3927536e+02 6.8401835e+04 8.0423200e+01
+-1.1752435e+02 5.1119711e+04 6.1667502e+01
+-1.2610812e+02 3.3018336e+04 9.5817173e+01
+-1.5534996e+02 1.7222915e+04 1.5513904e+02
+-1.4443396e+02 6.6286603e+03 1.2726794e+02
+-8.0982037e+01 1.7124041e+03 3.1969133e+01
+-3.1162883e+01 3.1192983e+02 7.9369112e+00
+-1.0464758e+01 4.6611107e+01 5.3054715e+00
+-4.8276890e+00 5.8604663e+00 5.8910312e+00
+-2.7596051e+01 0.0000000e+00 -2.2157052e+01
+-2.8903611e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.6593334e+03 7.8710440e+03 1.9374780e+03
+5.4193308e+03 2.7894170e+04 7.1420273e+02
+9.5772101e+03 4.6950127e+04 -8.3609321e+02
+1.3221683e+04 6.1153313e+04 -1.1098536e+02
+1.5522552e+04 7.1810604e+04 3.3178314e+02
+1.6080533e+04 7.5046910e+04 9.5564553e+01
+1.5150792e+04 7.1209726e+04 4.2229564e+02
+1.3199489e+04 6.4036168e+04 5.9122620e+02
+1.0788356e+04 5.3510380e+04 2.8846127e+02
+8.3679021e+03 3.9507779e+04 1.4510040e+02
+5.9463425e+03 2.4406250e+04 3.4193813e+02
+3.5147989e+03 1.1627688e+04 5.8608929e+02
+1.5612780e+03 3.8909758e+03 4.4502725e+02
+5.2371991e+02 7.6335484e+02 9.5907773e+01
+1.0841132e+02 -3.9674674e+01 -2.1767559e+01
+-4.1969867e+01 -7.7937262e+01 -8.7117160e+00
+-3.6564274e+01 -2.1197266e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-2.8927664e+03 0.0000000e+00 1.1969719e+03
+-1.0939964e+04 0.0000000e+00 2.8730181e+03
+-1.9950491e+04 0.0000000e+00 1.0924468e+03
+-2.5187330e+04 0.0000000e+00 -5.0774658e+02
+-2.6829180e+04 0.0000000e+00 7.0731732e+02
+-2.6531681e+04 0.0000000e+00 9.2627264e+02
+-2.4244991e+04 0.0000000e+00 -1.3635716e+01
+-1.9748579e+04 0.0000000e+00 1.3534995e+01
+-1.4565245e+04 0.0000000e+00 4.0914267e+02
+-1.0561646e+04 0.0000000e+00 9.2141277e+02
+-7.3452220e+03 0.0000000e+00 1.5934026e+03
+-4.0576898e+03 0.0000000e+00 1.6028467e+03
+-1.7465266e+03 0.0000000e+00 1.0122371e+03
+-9.7462234e+02 0.0000000e+00 4.9623119e+02
+-9.3337712e+02 0.0000000e+00 1.9848598e+02
+-8.0215990e+02 0.0000000e+00 7.1327392e+01
+-3.2773198e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.6570942e+03 -2.2470153e+04 3.1476643e+03
+-2.3208672e+04 -7.8475291e+04 6.6715897e+03
+-4.1249963e+04 -1.3388669e+05 1.9221472e+03
+-5.7478635e+04 -1.7505917e+05 -1.1115544e+03
+-7.1055412e+04 -2.0251118e+05 2.9701324e+03
+-7.7707775e+04 -2.0923875e+05 4.7086004e+03
+-7.5040912e+04 -1.9716640e+05 3.4043764e+03
+-6.4439471e+04 -1.7486840e+05 3.4087539e+03
+-5.0451942e+04 -1.4469090e+05 3.7247155e+03
+-3.9118844e+04 -1.0853051e+05 4.7412453e+03
+-3.0284605e+04 -7.0278125e+04 6.9105365e+03
+-2.0119497e+04 -3.5871794e+04 7.0785643e+03
+-1.0620170e+04 -1.3211087e+04 4.6205186e+03
+-5.2963159e+03 -3.4982178e+03 2.1862784e+03
+-2.9372067e+03 -7.4879247e+02 8.4310813e+02
+-1.4373305e+03 -1.8389711e+02 2.2271892e+02
+-3.7986393e+02 -3.9866949e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-2.1057751e+03 -2.2778889e+04 4.0754303e+03
+-7.7375640e+03 -6.3369890e+04 2.1307931e+03
+-1.3187230e+04 -1.0797371e+05 -1.0116494e+03
+-1.6298177e+04 -1.4675049e+05 2.0558452e+02
+-1.7274129e+04 -1.7054480e+05 1.0356703e+03
+-1.6415177e+04 -1.7581476e+05 1.0772275e+02
+-1.4361380e+04 -1.6743159e+05 -1.1316282e+02
+-1.2030671e+04 -1.4980910e+05 5.8124056e+01
+-9.7598437e+03 -1.2451221e+05 4.2698689e+02
+-7.4239427e+03 -9.3353209e+04 1.0398413e+03
+-4.7458610e+03 -5.9953325e+04 1.4024870e+03
+-2.0318226e+03 -3.0400433e+04 1.4685161e+03
+-3.4811846e+02 -1.0845254e+04 1.0038715e+03
+2.6365224e+01 -2.3465447e+03 3.5097567e+02
+-1.1245463e+02 -2.6118260e+02 9.1550569e+01
+-1.5419344e+02 2.0232748e+00 2.1435529e+01
+-5.6574708e+01 1.8950062e+00 0.0000000e+00
+0 0 0
+0 0 0
+6.5196027e-04 -2.2363954e-01 2.2290010e-01
+2.6865965e-02 -4.8869214e+00 5.0831210e+00
+8.0213124e-01 -9.1587966e+01 9.5919538e+01
+1.9415419e+01 -1.5526623e+03 1.6311549e+03
+3.6468640e+02 -2.2254914e+04 8.1254775e+02
+1.0731143e+03 -6.3161513e+04 -2.6693270e+02
+1.9735425e+03 -1.0969670e+05 -2.3649246e+02
+2.8068991e+03 -1.4958090e+05 2.8656340e+01
+3.3872236e+03 -1.7374537e+05 -4.5491846e+01
+3.6213449e+03 -1.7948922e+05 -2.6970258e+01
+3.4742896e+03 -1.7112394e+05 5.9893778e+01
+3.0023952e+03 -1.5294737e+05 3.8959925e+01
+2.4089469e+03 -1.2701373e+05 -7.7615883e+00
+1.8872565e+03 -9.5318679e+04 -4.7121787e+01
+1.4070214e+03 -6.1509610e+04 -2.4091028e+01
+8.8142749e+02 -3.1543387e+04 8.1797284e+01
+4.1024001e+02 -1.1404147e+04 8.5801669e+01
+1.3635869e+02 -2.4678216e+03 -1.0256868e+01
+3.6289797e+01 -3.2983574e+02 -8.8786775e+00
+6.2903296e+00 -2.2394724e+01 -1.1260599e+00
+-3.7839816e-01 1.0547708e+00 -4.7173900e+00
+-6.1834143e+01 -1.6913230e+01 4.6530707e+01
+-3.9563695e+02 -1.3910439e+02 0.0000000e+00
+1.0340317e-03 -5.4009096e-01 3.1523954e-01
+4.0221670e-02 -1.0547517e+01 5.9359841e+00
+1.0393941e+00 -1.6966427e+02 8.3042127e+01
+1.9797673e+01 -2.2962864e+03 8.0849367e+02
+2.4154155e+02 -2.1878140e+04 2.0935396e+02
+7.3530537e+02 -6.3204077e+04 -4.3737230e+02
+1.3432520e+03 -1.1116125e+05 -2.8344259e+02
+1.8755680e+03 -1.5177758e+05 -8.8349690e+00
+2.2261607e+03 -1.7615495e+05 1.3928921e+01
+2.3486433e+03 -1.8215470e+05 7.1287732e+01
+2.2325515e+03 -1.7373055e+05 1.4121944e+02
+1.9231277e+03 -1.5514884e+05 1.3071187e+02
+1.5455396e+03 -1.2877071e+05 1.0185601e+02
+1.2109668e+03 -9.6715169e+04 9.7271620e+01
+8.9441169e+02 -6.2646635e+04 1.8032926e+02
+5.4643470e+02 -3.2375091e+04 3.2357524e+02
+2.4028621e+02 -1.1710126e+04 2.8287811e+02
+7.0645658e+01 -2.3720697e+03 6.5180645e+01
+1.9034347e+01 -3.3308759e+02 3.0592475e+01
+7.2590460e+00 -3.0651179e+01 2.2369315e+01
+6.7935351e+00 9.1736255e+00 -3.7972151e+00
+-1.5335888e+02 -9.1615160e+01 1.8367691e+02
+-1.4693461e+03 -8.9219932e+02 0.0000000e+00
+8.6183241e-04 -6.5686495e-01 1.1574295e-01
+3.4001964e-02 -1.2042043e+01 1.5776337e+00
+8.1595777e-01 -1.8086485e+02 1.2046296e+01
+1.3870740e+01 -2.3002105e+03 3.7393642e+00
+1.4457187e+02 -2.1626000e+04 -3.7627593e+02
+4.4278056e+02 -6.3368317e+04 -6.1324500e+02
+8.0583763e+02 -1.1218012e+05 -3.5954557e+02
+1.1194545e+03 -1.5322231e+05 -3.8448437e+01
+1.3240805e+03 -1.7766743e+05 7.6618522e+01
+1.3943620e+03 -1.8376877e+05 1.6179422e+02
+1.3242145e+03 -1.7528618e+05 2.2980826e+02
+1.1397103e+03 -1.5645182e+05 2.3645206e+02
+9.1560667e+02 -1.2981472e+05 2.3475063e+02
+7.1895837e+02 -9.7582522e+04 2.8075614e+02
+5.3348553e+02 -6.3430106e+04 4.4409102e+02
+3.2679110e+02 -3.3015497e+04 6.7842409e+02
+1.4143983e+02 -1.1904015e+04 6.7058384e+02
+3.9130941e+01 -2.1203519e+03 3.5150407e+02
+1.6548284e+01 -3.5534939e+02 3.4177758e+02
+2.0177132e+01 -6.8913382e+01 3.3964472e+02
+3.9005955e+01 1.1791905e+01 2.6417740e+02
+-1.1646167e+02 -3.7556903e+02 7.8472312e+02
+-3.1072668e+03 -2.6444766e+03 0.0000000e+00
+-6.3423798e-04 -5.1160595e-01 -1.4529737e-01
+8.8934246e-04 -8.8829376e+00 -3.3136432e+00
+1.8283458e-01 -1.2674523e+02 -5.7697737e+01
+3.7906789e+00 -1.5722668e+03 -7.9027063e+02
+3.2530424e+01 -2.1474948e+04 -9.8672867e+02
+8.7593315e+01 -6.3648661e+04 -8.4705008e+02
+1.4500816e+02 -1.1282891e+05 -4.6959037e+02
+1.9105784e+02 -1.5402487e+05 -7.6907283e+01
+2.2457066e+02 -1.7841606e+05 1.4475941e+02
+2.3702790e+02 -1.8451404e+05 2.9915532e+02
+2.1428201e+02 -1.7598223e+05 4.1774436e+02
+1.5745557e+02 -1.5702146e+05 4.9506573e+02
+1.0106502e+02 -1.3029199e+05 5.8879810e+02
+8.0096433e+01 -9.8059985e+04 7.6668105e+02
+7.9300523e+01 -6.4003664e+04 1.1031940e+03
+6.7006930e+01 -3.3684179e+04 1.6021930e+03
+4.6309829e+01 -1.2531001e+04 2.1283998e+03
+3.1532775e+01 -2.2548775e+03 2.2074313e+03
+4.3036290e+01 -7.4357550e+02 2.5243668e+03
+7.8870777e+01 -3.1725102e+02 2.6417637e+03
+1.5017042e+02 -9.2832715e+01 2.5157175e+03
+-6.5560040e+01 -1.2146877e+03 4.0347197e+03
+-5.7331879e+03 -5.0998551e+03 0.0000000e+00
+-6.2790821e-03 -2.9530375e-01 -2.1330655e-01
+-1.2214938e-01 -4.9348125e+00 -4.1037902e+00
+-2.2228171e+00 -7.0198183e+01 -5.9602303e+01
+-4.1917349e+01 -9.7874097e+02 -6.3306914e+02
+-2.1130052e+03 -2.0324611e+04 -7.6552026e+02
+-6.6593021e+03 -6.0767550e+04 -4.7330434e+02
+-1.2190475e+04 -1.0776561e+05 2.0210602e+02
+-1.6952444e+04 -1.4708035e+05 1.1358857e+03
+-1.9915122e+04 -1.7028594e+05 2.1529681e+03
+-2.0939212e+04 -1.7611010e+05 3.2904043e+03
+-2.0401339e+04 -1.6798045e+05 4.5730902e+03
+-1.8731730e+04 -1.4987953e+05 6.0123266e+03
+-1.6165809e+04 -1.2445244e+05 7.6650107e+03
+-1.2817110e+04 -9.3937636e+04 9.5534644e+03
+-8.9245899e+03 -6.1799718e+04 1.1573526e+04
+-4.9528127e+03 -3.3041024e+04 1.3272851e+04
+-1.6364086e+03 -1.2224975e+04 1.3657389e+04
+5.3897347e+01 -1.7998568e+03 1.3096790e+04
+1.5194786e+02 -7.8352133e+02 1.2926937e+04
+2.5855167e+02 -3.8001504e+02 1.2628881e+04
+4.3638214e+02 -1.0732948e+02 1.2073309e+04
+-5.7429711e+02 -1.8492140e+03 1.4991447e+04
+-1.0818162e+04 -7.0603734e+03 0.0000000e+00
+-1.6244461e-02 -1.6018637e-01 -1.2718332e-01
+-3.3619851e-01 -2.7727122e+00 -2.1255745e+00
+-6.3771694e+00 -4.3335961e+01 -2.5886973e+01
+-1.2164880e+02 -7.0825378e+02 -2.3722746e+02
+-5.2518085e+03 -1.7539993e+04 -4.8304503e+02
+-1.5030429e+04 -5.4309305e+04 3.0622366e+02
+-2.6797910e+04 -9.6733087e+04 2.1236089e+03
+-3.7055550e+04 -1.3201507e+05 4.7195647e+03
+-4.3731549e+04 -1.5271619e+05 7.8877426e+03
+-4.6438328e+04 -1.5784504e+05 1.1586767e+04
+-4.5775028e+04 -1.5049689e+05 1.5776549e+04
+-4.2490178e+04 -1.3425087e+05 2.0370033e+04
+-3.7069523e+04 -1.1151199e+05 2.5224487e+04
+-2.9832277e+04 -8.4277956e+04 3.0044724e+04
+-2.1279945e+04 -5.5553233e+04 3.4260376e+04
+-1.2361498e+04 -2.9585680e+04 3.6946351e+04
+-4.6752097e+03 -1.0363748e+04 3.7308036e+04
+8.4942985e+01 -1.2272906e+03 3.6557068e+04
+3.3530653e+02 -5.1189430e+02 3.5873865e+04
+5.5974543e+02 -2.2778950e+02 3.5025265e+04
+8.9740043e+02 -1.3694301e+01 3.3892533e+04
+-2.2499549e+03 -1.4728169e+03 3.9432949e+04
+-1.9515074e+04 -6.7335195e+03 0.0000000e+00
+-2.7143383e-02 -9.0577683e-02 -5.6617711e-02
+-5.6322591e-01 -1.6723918e+00 -8.8864806e-01
+-1.0641342e+01 -2.8489106e+01 -1.0690422e+01
+-2.0095847e+02 -5.0243831e+02 -1.2166308e+02
+-8.3431529e+03 -1.3958024e+04 2.2357251e+02
+-2.3409115e+04 -4.4807045e+04 1.7903281e+03
+-4.1540790e+04 -8.0355197e+04 5.0044215e+03
+-5.7459846e+04 -1.0974751e+05 9.7216273e+03
+-6.8022122e+04 -1.2686894e+05 1.5699096e+04
+-7.2579640e+04 -1.3101586e+05 2.2771477e+04
+-7.1952620e+04 -1.2480991e+05 3.0752619e+04
+-6.7192197e+04 -1.1124750e+05 3.9367414e+04
+-5.8988618e+04 -9.2342673e+04 4.8209772e+04
+-4.7820173e+04 -6.9737843e+04 5.6649417e+04
+-3.4444678e+04 -4.5860822e+04 6.3742613e+04
+-2.0325081e+04 -2.4131476e+04 6.8313238e+04
+-7.9829638e+03 -7.9735837e+03 6.9726169e+04
+1.1958849e+02 -7.7546722e+02 6.9019046e+04
+5.3983010e+02 -2.7827094e+02 6.8162224e+04
+9.0290335e+02 -9.7953133e+01 6.6975681e+04
+1.4163854e+03 4.5546218e+01 6.5390454e+04
+-4.9359061e+03 -8.0750284e+02 7.5801431e+04
+-3.0054878e+04 -5.0917520e+03 0.0000000e+00
+-3.6210395e-02 -5.2221024e-02 -2.1408121e-02
+-7.4741843e-01 -1.0104571e+00 -3.3559145e-01
+-1.4012422e+01 -1.7977139e+01 -4.3692297e+00
+-2.6217244e+02 -3.2501961e+02 -6.1334702e+01
+-1.0794322e+04 -1.0051620e+04 9.9342617e+02
+-3.0346934e+04 -3.3232697e+04 3.4962760e+03
+-5.3949913e+04 -5.9999440e+04 8.1469973e+03
+-7.4766902e+04 -8.2037890e+04 1.4977709e+04
+-8.8707955e+04 -9.4793722e+04 2.3753536e+04
+-9.4896209e+04 -9.7810715e+04 3.4200343e+04
+-9.4348773e+04 -9.3087949e+04 4.5979140e+04
+-8.8381890e+04 -8.2886625e+04 5.8624417e+04
+-7.7852658e+04 -6.8725071e+04 7.1486959e+04
+-6.3355873e+04 -5.1823796e+04 8.3644613e+04
+-4.5849748e+04 -3.3962719e+04 9.3840228e+04
+-2.7226527e+04 -1.7656135e+04 1.0065864e+05
+-1.0817833e+04 -5.5701630e+03 1.0337119e+05
+1.5647506e+02 -4.7393475e+02 1.0274203e+05
+7.2751705e+02 -1.5388110e+02 1.0180364e+05
+1.2236771e+03 -4.0428024e+01 1.0035936e+05
+1.8983671e+03 6.0034358e+01 9.8382019e+04
+-7.9694669e+03 -2.7222882e+02 1.1434320e+05
+-3.9821009e+04 -4.0458293e+03 0.0000000e+00
+-4.2523099e-02 -2.7396740e-02 -5.2550574e-03
+-8.7383747e-01 -5.4235123e-01 -7.3817928e-02
+-1.6296173e+01 -9.8094822e+00 -8.4162817e-01
+-3.0323817e+02 -1.7848171e+02 -1.0604846e+01
+-1.2502606e+04 -6.0435169e+03 1.6322726e+03
+-3.5379014e+04 -2.0389733e+04 4.9706266e+03
+-6.3079231e+04 -3.6998548e+04 1.0827237e+04
+-8.7578838e+04 -5.0638829e+04 1.9382888e+04
+-1.0405877e+05 -5.8498166e+04 3.0428312e+04
+-1.1146407e+05 -6.0323007e+04 4.3611385e+04
+-1.1096527e+05 -5.7366206e+04 5.8469977e+04
+-1.0408908e+05 -5.1035128e+04 7.4385379e+04
+-9.1826651e+04 -4.2274444e+04 9.0518197e+04
+-7.4860293e+04 -3.1836127e+04 1.0572116e+05
+-5.4288604e+04 -2.0805563e+04 1.1849488e+05
+-3.2308448e+04 -1.0722621e+04 1.2721152e+05
+-1.2850579e+04 -3.2849732e+03 1.3095638e+05
+2.0246988e+02 -2.6647543e+02 1.3035069e+05
+8.9546833e+02 -9.2328520e+01 1.2930644e+05
+1.5122840e+03 -3.1724682e+01 1.2761851e+05
+2.3322292e+03 2.9446694e+01 1.2529910e+05
+-1.0776703e+04 1.8214405e+02 1.4617411e+05
+-4.8657797e+04 -2.7552877e+03 0.0000000e+00
+-4.6149972e-02 -8.5422989e-03 2.1723107e-03
+-9.4606338e-01 -1.7049861e-01 5.8525160e-02
+-1.7595833e+01 -3.0992304e+00 1.2569916e+00
+-3.2657348e+02 -5.6458230e+01 2.5032953e+01
+-1.3502401e+04 -2.0149861e+03 2.0409055e+03
+-3.8402309e+04 -6.8678173e+03 5.9349415e+03
+-6.8614275e+04 -1.2495263e+04 1.2571977e+04
+-9.5375848e+04 -1.7111589e+04 2.2223652e+04
+-1.1340991e+05 -1.9765362e+04 3.4702418e+04
+-1.2154779e+05 -2.0375505e+04 4.9609433e+04
+-1.2105708e+05 -1.9368778e+04 6.6403864e+04
+-1.1360203e+05 -1.7222981e+04 8.4369537e+04
+-1.0026547e+05 -1.4258842e+04 1.0254866e+05
+-8.1788841e+04 -1.0730399e+04 1.1965608e+05
+-5.9354489e+04 -7.0022752e+03 1.3404437e+05
+-3.5335094e+04 -3.5933052e+03 1.4394228e+05
+-1.4015406e+04 -1.0865822e+03 1.4827641e+05
+2.5066285e+02 -8.9024425e+01 1.4763870e+05
+1.0294885e+03 -3.5339449e+01 1.4646492e+05
+1.7411648e+03 -1.8238044e+01 1.4454147e+05
+2.6796073e+03 4.1541103e-01 1.4190945e+05
+-1.2788213e+04 1.7846732e+02 1.6672440e+05
+-5.6232555e+04 -8.9460061e+02 0.0000000e+00
+-4.7326881e-02 8.5422989e-03 4.4081910e-03
+-9.6946786e-01 1.7049861e-01 1.0077717e-01
+-1.8016790e+01 3.0992304e+00 1.9738433e+00
+-3.3413582e+02 5.6458230e+01 3.7751092e+01
+-1.3831139e+04 2.0149861e+03 2.1800005e+03
+-3.9408667e+04 6.8678173e+03 6.2663944e+03
+-7.0464501e+04 1.2495263e+04 1.3170443e+04
+-9.7986480e+04 1.7111589e+04 2.3193590e+04
+-1.1654142e+05 1.9765362e+04 3.6156331e+04
+-1.2492148e+05 2.0375505e+04 5.1644196e+04
+-1.2442747e+05 1.9368778e+04 6.9089329e+04
+-1.1677175e+05 1.7222981e+04 8.7742316e+04
+-1.0307030e+05 1.4258842e+04 1.0660560e+05
+-8.4086043e+04 1.0730399e+04 1.2434834e+05
+-6.1029301e+04 7.0022752e+03 1.3927410e+05
+-3.6329407e+04 3.5933052e+03 1.4956118e+05
+-1.4386185e+04 1.0865822e+03 1.5407434e+05
+2.7250218e+02 8.9024426e+01 1.5340967e+05
+1.0834296e+03 3.5339456e+01 1.5216802e+05
+1.8327614e+03 1.8238293e+01 1.5012891e+05
+2.8198650e+03 -4.1166812e-01 1.4734179e+05
+-1.3516169e+04 -1.7833677e+02 1.7379339e+05
+-5.9470865e+04 8.9470442e+02 0.0000000e+00
+-4.6149972e-02 2.7396740e-02 2.1723107e-03
+-9.4606338e-01 5.4235123e-01 5.8525160e-02
+-1.7595833e+01 9.8094822e+00 1.2569916e+00
+-3.2657348e+02 1.7848171e+02 2.5032953e+01
+-1.3502401e+04 6.0435169e+03 2.0409055e+03
+-3.8402309e+04 2.0389733e+04 5.9349415e+03
+-6.8614275e+04 3.6998548e+04 1.2571977e+04
+-9.5375848e+04 5.0638829e+04 2.2223652e+04
+-1.1340991e+05 5.8498166e+04 3.4702418e+04
+-1.2154779e+05 6.0323007e+04 4.9609433e+04
+-1.2105708e+05 5.7366206e+04 6.6403864e+04
+-1.1360203e+05 5.1035128e+04 8.4369537e+04
+-1.0026547e+05 4.2274444e+04 1.0254866e+05
+-8.1788841e+04 3.1836127e+04 1.1965608e+05
+-5.9354489e+04 2.0805563e+04 1.3404437e+05
+-3.5335094e+04 1.0722621e+04 1.4394228e+05
+-1.4015406e+04 3.2849732e+03 1.4827641e+05
+2.5066285e+02 2.6647543e+02 1.4763870e+05
+1.0294885e+03 9.2328524e+01 1.4646492e+05
+1.7411649e+03 3.1724904e+01 1.4454147e+05
+2.6796150e+03 -2.9441405e+01 1.4190946e+05
+-1.2787993e+04 -1.8195334e+02 1.6672430e+05
+-5.6232516e+04 2.7554720e+03 0.0000000e+00
+-4.2523099e-02 5.2221024e-02 -5.2550574e-03
+-8.7383747e-01 1.0104571e+00 -7.3817928e-02
+-1.6296173e+01 1.7977139e+01 -8.4162817e-01
+-3.0323817e+02 3.2501961e+02 -1.0604846e+01
+-1.2502606e+04 1.0051620e+04 1.6322726e+03
+-3.5379014e+04 3.3232697e+04 4.9706266e+03
+-6.3079231e+04 5.9999440e+04 1.0827237e+04
+-8.7578838e+04 8.2037890e+04 1.9382888e+04
+-1.0405877e+05 9.4793722e+04 3.0428312e+04
+-1.1146407e+05 9.7810715e+04 4.3611385e+04
+-1.1096527e+05 9.3087949e+04 5.8469977e+04
+-1.0408908e+05 8.2886625e+04 7.4385379e+04
+-9.1826651e+04 6.8725071e+04 9.0518197e+04
+-7.4860293e+04 5.1823796e+04 1.0572116e+05
+-5.4288604e+04 3.3962719e+04 1.1849488e+05
+-3.2308448e+04 1.7656135e+04 1.2721152e+05
+-1.2850579e+04 5.5701630e+03 1.3095638e+05
+2.0246988e+02 4.7393475e+02 1.3035069e+05
+8.9546834e+02 1.5388110e+02 1.2930644e+05
+1.5122844e+03 4.0428326e+01 1.2761851e+05
+2.3322358e+03 -6.0030171e+01 1.2529910e+05
+-1.0776017e+04 2.7316721e+02 1.4617365e+05
+-4.8657480e+04 4.0464441e+03 0.0000000e+00
+-3.6210395e-02 9.0577683e-02 -2.1408121e-02
+-7.4741843e-01 1.6723918e+00 -3.3559145e-01
+-1.4012422e+01 2.8489106e+01 -4.3692297e+00
+-2.6217244e+02 5.0243831e+02 -6.1334702e+01
+-1.0794322e+04 1.3958024e+04 9.9342617e+02
+-3.0346934e+04 4.4807045e+04 3.4962760e+03
+-5.3949913e+04 8.0355197e+04 8.1469973e+03
+-7.4766902e+04 1.0974751e+05 1.4977709e+04
+-8.8707955e+04 1.2686894e+05 2.3753536e+04
+-9.4896209e+04 1.3101586e+05 3.4200343e+04
+-9.4348773e+04 1.2480991e+05 4.5979140e+04
+-8.8381890e+04 1.1124750e+05 5.8624417e+04
+-7.7852658e+04 9.2342673e+04 7.1486959e+04
+-6.3355873e+04 6.9737843e+04 8.3644613e+04
+-4.5849748e+04 4.5860822e+04 9.3840228e+04
+-2.7226527e+04 2.4131476e+04 1.0065864e+05
+-1.0817833e+04 7.9735837e+03 1.0337119e+05
+1.5647506e+02 7.7546722e+02 1.0274203e+05
+7.2751706e+02 2.7827095e+02 1.0180364e+05
+1.2236778e+03 9.7953352e+01 1.0035936e+05
+1.8983924e+03 -4.5526063e+01 9.8382087e+04
+-7.9683658e+03 8.0893700e+02 1.1434352e+05
+-3.9820788e+04 5.0922785e+03 0.0000000e+00
+-2.7143383e-02 1.6018637e-01 -5.6617711e-02
+-5.6322591e-01 2.7727122e+00 -8.8864806e-01
+-1.0641342e+01 4.3335961e+01 -1.0690422e+01
+-2.0095847e+02 7.0825378e+02 -1.2166308e+02
+-8.3431529e+03 1.7539993e+04 2.2357251e+02
+-2.3409115e+04 5.4309305e+04 1.7903281e+03
+-4.1540790e+04 9.6733087e+04 5.0044215e+03
+-5.7459846e+04 1.3201507e+05 9.7216273e+03
+-6.8022122e+04 1.5271619e+05 1.5699096e+04
+-7.2579640e+04 1.5784504e+05 2.2771477e+04
+-7.1952620e+04 1.5049689e+05 3.0752619e+04
+-6.7192197e+04 1.3425087e+05 3.9367414e+04
+-5.8988618e+04 1.1151199e+05 4.8209772e+04
+-4.7820173e+04 8.4277956e+04 5.6649417e+04
+-3.4444678e+04 5.5553233e+04 6.3742613e+04
+-2.0325081e+04 2.9585680e+04 6.8313238e+04
+-7.9829638e+03 1.0363748e+04 6.9726169e+04
+1.1958850e+02 1.2272906e+03 6.9019046e+04
+5.3983010e+02 5.1189430e+02 6.8162224e+04
+9.0290185e+02 2.2778935e+02 6.6975677e+04
+1.4163736e+03 1.3713556e+01 6.5390470e+04
+-4.9359601e+03 1.4728070e+03 7.5803397e+04
+-3.0054945e+04 6.7337312e+03 0.0000000e+00
+-1.6244461e-02 2.9530375e-01 -1.2718332e-01
+-3.3619851e-01 4.9348125e+00 -2.1255745e+00
+-6.3771694e+00 7.0198183e+01 -2.5886973e+01
+-1.2164880e+02 9.7874097e+02 -2.3722746e+02
+-5.2518085e+03 2.0324611e+04 -4.8304503e+02
+-1.5030429e+04 6.0767550e+04 3.0622366e+02
+-2.6797910e+04 1.0776561e+05 2.1236089e+03
+-3.7055550e+04 1.4708035e+05 4.7195647e+03
+-4.3731549e+04 1.7028594e+05 7.8877426e+03
+-4.6438328e+04 1.7611010e+05 1.1586767e+04
+-4.5775028e+04 1.6798045e+05 1.5776549e+04
+-4.2490178e+04 1.4987953e+05 2.0370033e+04
+-3.7069523e+04 1.2445244e+05 2.5224487e+04
+-2.9832277e+04 9.3937636e+04 3.0044724e+04
+-2.1279945e+04 6.1799718e+04 3.4260376e+04
+-1.2361498e+04 3.3041024e+04 3.6946351e+04
+-4.6752097e+03 1.2224975e+04 3.7308036e+04
+8.4942985e+01 1.7998568e+03 3.6557068e+04
+3.3530654e+02 7.8352132e+02 3.5873865e+04
+5.5974562e+02 3.8001491e+02 3.5025265e+04
+8.9736263e+02 1.0732424e+02 3.3892436e+04
+-2.2502531e+03 1.8486434e+03 3.9433152e+04
+-1.9514878e+04 7.0603980e+03 0.0000000e+00
+-6.2790821e-03 5.1160595e-01 -2.1330655e-01
+-1.2214938e-01 8.8829376e+00 -4.1037902e+00
+-2.2228171e+00 1.2674523e+02 -5.9602303e+01
+-4.1917349e+01 1.5722668e+03 -6.3306914e+02
+-2.1130052e+03 2.1474948e+04 -7.6552026e+02
+-6.6593021e+03 6.3648661e+04 -4.7330434e+02
+-1.2190475e+04 1.1282891e+05 2.0210602e+02
+-1.6952444e+04 1.5402487e+05 1.1358857e+03
+-1.9915122e+04 1.7841606e+05 2.1529681e+03
+-2.0939212e+04 1.8451404e+05 3.2904043e+03
+-2.0401339e+04 1.7598223e+05 4.5730902e+03
+-1.8731730e+04 1.5702146e+05 6.0123266e+03
+-1.6165809e+04 1.3029199e+05 7.6650107e+03
+-1.2817110e+04 9.8059985e+04 9.5534644e+03
+-8.9245899e+03 6.4003664e+04 1.1573526e+04
+-4.9528127e+03 3.3684179e+04 1.3272851e+04
+-1.6364086e+03 1.2531001e+04 1.3657389e+04
+5.3897347e+01 2.2548775e+03 1.3096790e+04
+1.5194788e+02 7.4357551e+02 1.2926937e+04
+2.5855192e+02 3.1725100e+02 1.2628881e+04
+4.3638513e+02 9.2832546e+01 1.2073312e+04
+-5.7342948e+02 1.2147010e+03 1.4991488e+04
+-1.0818714e+04 5.0995177e+03 0.0000000e+00
+-6.3423810e-04 6.5686495e-01 -1.4529737e-01
+8.8934065e-04 1.2042043e+01 -3.3136432e+00
+1.8283456e-01 1.8086485e+02 -5.7697737e+01
+3.7906788e+00 2.3002105e+03 -7.9027063e+02
+3.2530423e+01 2.1626000e+04 -9.8672867e+02
+8.7593312e+01 6.3368317e+04 -8.4705008e+02
+1.4500815e+02 1.1218012e+05 -4.6959037e+02
+1.9105784e+02 1.5322231e+05 -7.6907282e+01
+2.2457066e+02 1.7766743e+05 1.4475941e+02
+2.3702790e+02 1.8376877e+05 2.9915531e+02
+2.1428201e+02 1.7528618e+05 4.1774435e+02
+1.5745557e+02 1.5645182e+05 4.9506573e+02
+1.0106502e+02 1.2981472e+05 5.8879810e+02
+8.0096433e+01 9.7582522e+04 7.6668105e+02
+7.9300524e+01 6.3430106e+04 1.1031940e+03
+6.7006939e+01 3.3015496e+04 1.6021930e+03
+4.6309830e+01 1.1904015e+04 2.1283998e+03
+3.1532770e+01 2.1203519e+03 2.2074313e+03
+4.3036275e+01 3.5534938e+02 2.5243668e+03
+7.8870812e+01 6.8913585e+01 2.6417637e+03
+1.5016954e+02 -1.1784732e+01 2.5157150e+03
+-6.5665872e+01 3.7583626e+02 4.0345893e+03
+-5.7334094e+03 2.6446234e+03 0.0000000e+00
+8.6183162e-04 5.4009096e-01 1.1574295e-01
+3.4001948e-02 1.0547517e+01 1.5776337e+00
+8.1595757e-01 1.6966427e+02 1.2046296e+01
+1.3870737e+01 2.2962865e+03 3.7393682e+00
+1.4457184e+02 2.1878140e+04 -3.7627596e+02
+4.4278047e+02 6.3204076e+04 -6.1324509e+02
+8.0583760e+02 1.1116125e+05 -3.5954554e+02
+1.1194544e+03 1.5177758e+05 -3.8448372e+01
+1.3240805e+03 1.7615495e+05 7.6618510e+01
+1.3943620e+03 1.8215470e+05 1.6179413e+02
+1.3242144e+03 1.7373055e+05 2.2980814e+02
+1.1397103e+03 1.5514884e+05 2.3645203e+02
+9.1560669e+02 1.2877071e+05 2.3475065e+02
+7.1895835e+02 9.6715168e+04 2.8075604e+02
+5.3348566e+02 6.2646635e+04 4.4409096e+02
+3.2679120e+02 3.2375091e+04 6.7842406e+02
+1.4143983e+02 1.1710127e+04 6.7058383e+02
+3.9130756e+01 2.3720698e+03 3.5150386e+02
+1.6548113e+01 3.3308780e+02 3.4177717e+02
+2.0176414e+01 3.0651797e+01 3.3964402e+02
+3.8986878e+01 -9.1710092e+00 2.6418760e+02
+-1.1711579e+02 9.1691301e+01 7.8513619e+02
+-3.1076210e+03 8.9222640e+02 0.0000000e+00
+1.0340275e-03 2.2363954e-01 3.1523954e-01
+4.0221568e-02 4.8869215e+00 5.9359841e+00
+1.0393925e+00 9.1587971e+01 8.3042135e+01
+1.9797616e+01 1.5526624e+03 8.0849365e+02
+2.4154072e+02 2.2254908e+04 2.0935053e+02
+7.3530637e+02 6.3161506e+04 -4.3737522e+02
+1.3432532e+03 1.0969668e+05 -2.8344139e+02
+1.8755675e+03 1.4958090e+05 -8.8330674e+00
+2.2261600e+03 1.7374537e+05 1.3928797e+01
+2.3486423e+03 1.7948922e+05 7.1285291e+01
+2.2325500e+03 1.7112394e+05 1.4121583e+02
+1.9231282e+03 1.5294737e+05 1.3071203e+02
+1.5455403e+03 1.2701373e+05 1.0185467e+02
+1.2109686e+03 9.5318677e+04 9.7270157e+01
+8.9441358e+02 6.1509603e+04 1.8032845e+02
+5.4643872e+02 3.1543388e+04 3.2357566e+02
+2.4028633e+02 1.1404155e+04 2.8287736e+02
+7.0640630e+01 2.4678309e+03 6.5175955e+01
+1.9028551e+01 3.2983821e+02 3.0586414e+01
+7.2555914e+00 2.2401865e+01 2.2357045e+01
+6.7664714e+00 -1.0435522e+00 -3.7996201e+00
+-1.5416336e+02 1.6778718e+01 1.8445247e+02
+-1.4697979e+03 1.3857319e+02 0.0000000e+00
+6.5195116e-04 0.0000000e+00 2.2290010e-01
+2.6865745e-02 0.0000000e+00 5.0831224e+00
+8.0211912e-01 0.0000000e+00 9.5919553e+01
+1.9414856e+01 0.0000000e+00 1.6311475e+03
+3.6473648e+02 2.2778867e+04 8.1243649e+02
+1.0731921e+03 6.3369772e+04 -2.6703670e+02
+1.9736145e+03 1.0797330e+05 -2.3645897e+02
+2.8069010e+03 1.4675027e+05 2.8703921e+01
+3.3872223e+03 1.7054481e+05 -4.5502905e+01
+3.6213383e+03 1.7581488e+05 -2.7044672e+01
+3.4742489e+03 1.6743167e+05 5.9776216e+01
+3.0024429e+03 1.4980939e+05 3.8981449e+01
+2.4089741e+03 1.2451226e+05 -7.7975869e+00
+1.8873147e+03 9.3353208e+04 -4.7166752e+01
+1.4071380e+03 5.9953274e+04 -2.4084148e+01
+8.8157575e+02 3.0400565e+04 8.1813576e+01
+4.1026364e+02 1.0845483e+04 8.5786941e+01
+1.3616106e+02 2.3465085e+03 -1.0400136e+01
+3.6094718e+01 2.6115488e+02 -8.9744704e+00
+6.2190305e+00 -2.0475343e+00 -1.2092668e+00
+-4.1065146e-01 -1.8403567e+00 -4.8284070e+00
+-6.2245868e+01 0.0000000e+00 4.6598788e+01
+-3.9605216e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-2.1049297e+03 2.2471000e+04 4.0721321e+03
+-7.7344745e+03 7.8468790e+04 2.1269184e+03
+-1.3184270e+04 1.3387261e+05 -1.0106680e+03
+-1.6297791e+04 1.7505276e+05 2.0632704e+02
+-1.7273396e+04 2.0251163e+05 1.0354690e+03
+-1.6415314e+04 2.0924051e+05 1.0567997e+02
+-1.4362703e+04 1.9716695e+05 -1.1610397e+02
+-1.2031427e+04 1.7486707e+05 5.7133945e+01
+-9.7595294e+03 1.4468996e+05 4.2600197e+02
+-7.4221450e+03 1.0853038e+05 1.0388754e+03
+-4.7419929e+03 7.0277427e+04 1.4030602e+03
+-2.0263715e+03 3.5876387e+04 1.4684081e+03
+-3.4663153e+02 1.3220290e+04 1.0015058e+03
+2.1218501e+01 3.5029293e+03 3.4758735e+02
+-1.1904629e+02 7.4690703e+02 8.9246991e+01
+-1.5668116e+02 1.8116897e+02 2.0741838e+01
+-5.6704580e+01 3.9038893e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.6564868e+03 0.0000000e+00 3.1481663e+03
+-2.3208134e+04 0.0000000e+00 6.6714968e+03
+-4.1249756e+04 0.0000000e+00 1.9226673e+03
+-5.7478379e+04 0.0000000e+00 -1.1112230e+03
+-7.1055469e+04 0.0000000e+00 2.9701685e+03
+-7.7708164e+04 0.0000000e+00 4.7086548e+03
+-7.5041404e+04 0.0000000e+00 3.4048072e+03
+-6.4439710e+04 0.0000000e+00 3.4091885e+03
+-5.0452192e+04 0.0000000e+00 3.7249465e+03
+-3.9119125e+04 0.0000000e+00 4.7415486e+03
+-3.0284750e+04 0.0000000e+00 6.9107241e+03
+-2.0119603e+04 0.0000000e+00 7.0787391e+03
+-1.0620165e+04 0.0000000e+00 4.6206504e+03
+-5.2962081e+03 0.0000000e+00 2.1862294e+03
+-2.9374057e+03 0.0000000e+00 8.4323265e+02
+-1.4373135e+03 0.0000000e+00 2.2285336e+02
+-3.7987580e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+9.0027406e+03 -4.1464594e+04 5.3179209e+03
+3.3817515e+04 -1.4227561e+05 9.0221599e+03
+6.0894269e+04 -2.4261701e+05 -5.6661039e+02
+7.7571585e+04 -3.2149137e+05 -4.7094441e+03
+8.4266295e+04 -3.7869257e+05 2.3387993e+03
+8.2993195e+04 -3.9781629e+05 5.5456539e+03
+7.5849303e+04 -3.7960513e+05 5.6009835e+03
+6.7980282e+04 -3.3810691e+05 5.8925268e+03
+5.9358754e+04 -2.7959041e+05 3.3484241e+03
+4.5933369e+04 -2.1182393e+05 2.4192634e+03
+2.9150668e+04 -1.4200446e+05 5.8255581e+03
+1.5060165e+04 -7.7494065e+04 7.1668502e+03
+6.6221242e+03 -3.2161582e+04 4.3789247e+03
+2.2026286e+03 -1.0611610e+04 1.5846732e+03
+1.8886785e+02 -3.0879487e+03 3.8026931e+02
+-3.0650543e+02 -7.8967809e+02 5.5700740e+01
+-1.5760791e+02 -1.3490539e+02 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-4.2890335e+03 -4.7501081e+04 8.2197455e+03
+-1.3127342e+04 -1.3258063e+05 3.9145386e+03
+-2.3501040e+04 -2.2618302e+05 -2.2056427e+03
+-3.4227399e+04 -3.0664622e+05 8.7843459e+02
+-4.2772757e+04 -3.5551508e+05 3.1995668e+03
+-4.6943586e+04 -3.6625863e+05 2.1676546e+03
+-4.5381895e+04 -3.4855357e+05 2.1366030e+03
+-3.8588601e+04 -3.1147279e+05 2.0599898e+03
+-3.0544806e+04 -2.5934038e+05 2.5949210e+03
+-2.4427703e+04 -1.9646298e+05 4.2377301e+03
+-1.8926456e+04 -1.2876363e+05 5.1775022e+03
+-1.2308485e+04 -6.7103245e+04 5.0633448e+03
+-6.2335589e+03 -2.4830080e+04 3.6172949e+03
+-2.7448500e+03 -5.7946621e+03 1.5726581e+03
+-1.2290418e+03 -8.5150421e+02 4.5280143e+02
+-4.8299606e+02 -7.3226363e+01 6.5162007e+01
+-1.1804833e+02 -8.2699311e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.1607069e-03 -4.3570675e-01 4.3951941e-01
+-7.8653460e-02 -9.5409643e+00 1.0086003e+01
+-1.7235611e+00 -1.7972539e+02 1.9233709e+02
+-3.5874614e+01 -3.0766721e+03 3.3242993e+03
+-7.2286190e+02 -4.4826188e+04 1.7376786e+03
+-2.0806775e+03 -1.2729869e+05 -3.9046264e+02
+-3.5764121e+03 -2.2067758e+05 -3.4594859e+02
+-4.6527407e+03 -2.9974404e+05 2.1150424e+02
+-5.0455729e+03 -3.4694480e+05 7.4030384e+01
+-4.8472680e+03 -3.5771002e+05 -5.9711710e+00
+-4.3299620e+03 -3.4075959e+05 4.2214239e+00
+-3.7884439e+03 -3.0464692e+05 -3.0804378e+01
+-3.2695295e+03 -2.5379708e+05 1.0437500e+02
+-2.5444173e+03 -1.9213817e+05 2.1124277e+02
+-1.5994788e+03 -1.2577683e+05 2.3094709e+02
+-7.4170825e+02 -6.5607730e+04 3.5856902e+02
+-2.0661627e+02 -2.4171311e+04 3.1665637e+02
+-3.2821471e+00 -5.3915898e+03 5.3225248e+01
+2.1315296e+01 -7.8896984e+02 5.6691516e+00
+6.8596026e+00 -7.4370847e+01 6.2446663e+00
+-3.8980091e+00 -6.3332948e+00 7.8201819e+00
+-1.3450610e+02 -6.8047546e+01 1.4854186e+02
+-2.0017083e+02 2.7214529e+01 0.0000000e+00
+-5.8340652e-03 -1.0496592e+00 6.2082057e-01
+-1.2580820e-01 -2.0494624e+01 1.1740510e+01
+-2.2903786e+00 -3.3015760e+02 1.6550250e+02
+-3.5447082e+01 -4.4869860e+03 1.6310612e+03
+-3.8128064e+02 -4.3054786e+04 4.8248181e+02
+-1.1037197e+03 -1.2420367e+05 -7.7347826e+02
+-1.9048472e+03 -2.1772211e+05 -4.8083991e+02
+-2.4433362e+03 -2.9597307e+05 6.7098949e+01
+-2.5822376e+03 -3.4217328e+05 1.0396835e+02
+-2.4077753e+03 -3.5298442e+05 1.3478857e+02
+-2.1080614e+03 -3.3645519e+05 1.7100579e+02
+-1.8579243e+03 -3.0085602e+05 1.6115298e+02
+-1.6345874e+03 -2.5070150e+05 2.4569911e+02
+-1.2595116e+03 -1.8976442e+05 3.4242676e+02
+-7.4391950e+02 -1.2428187e+05 4.8580140e+02
+-2.9718717e+02 -6.5001196e+04 7.2289109e+02
+-4.3981910e+01 -2.3788548e+04 6.2439666e+02
+3.1703324e+01 -4.8891255e+03 1.6087466e+02
+2.7106866e+01 -7.1546986e+02 7.9302165e+01
+1.5963904e+01 -7.9448381e+01 7.5675063e+01
+7.0110354e+00 -6.1900246e+00 7.5314342e+01
+-4.9657173e+02 -4.5420396e+02 8.0467121e+02
+-2.6380821e+02 -3.3755888e+02 0.0000000e+00
+-5.3616274e-03 -1.2756260e+00 2.3219026e-01
+-1.0257306e-01 -2.3349079e+01 3.2232206e+00
+-1.6884758e+00 -3.5043049e+02 2.6000540e+01
+-2.3660372e+01 -4.4591775e+03 3.5723163e+01
+-2.2374793e+02 -4.1971002e+04 -6.7974135e+02
+-6.6944766e+02 -1.2263317e+05 -1.1380181e+03
+-1.1785096e+03 -2.1622136e+05 -6.5442442e+02
+-1.5310308e+03 -2.9394822e+05 -2.8794747e+01
+-1.6354296e+03 -3.3942920e+05 1.8663790e+02
+-1.5404324e+03 -3.5016630e+05 3.0331336e+02
+-1.3580079e+03 -3.3384550e+05 3.7584200e+02
+-1.1961369e+03 -2.9854011e+05 3.9578191e+02
+-1.0472485e+03 -2.4882199e+05 4.7913317e+02
+-8.0791576e+02 -1.8839240e+05 6.3398503e+02
+-4.8433561e+02 -1.2357075e+05 9.4067915e+02
+-2.0062572e+02 -6.4906302e+04 1.3732020e+03
+-3.5130869e+01 -2.3595286e+04 1.3565107e+03
+1.5565443e+01 -4.2325451e+03 7.2349585e+02
+1.9930107e+01 -7.3024960e+02 7.3489380e+02
+2.7611664e+01 -1.6913708e+02 8.1714796e+02
+2.1798867e+01 -5.4629678e+01 8.8279475e+02
+-1.2520586e+03 -1.6648734e+03 3.2290596e+03
+3.6662632e+02 -1.9379894e+03 0.0000000e+00
+-5.7586266e-03 -9.9359968e-01 -2.7690195e-01
+-9.8348766e-02 -1.7214706e+01 -6.3120373e+00
+-1.4864577e+00 -2.4521902e+02 -1.0985422e+02
+-2.0498312e+01 -3.0398431e+03 -1.5048996e+03
+-2.2630622e+02 -4.1359845e+04 -1.8572196e+03
+-7.1686510e+02 -1.2209374e+05 -1.5921864e+03
+-1.3092382e+03 -2.1548127e+05 -8.7802982e+02
+-1.7746255e+03 -2.9273117e+05 -1.2939393e+02
+-1.9986882e+03 -3.3761864e+05 2.8330462e+02
+-1.9996752e+03 -3.4819112e+05 5.4482032e+02
+-1.8613540e+03 -3.3195708e+05 7.3203784e+02
+-1.6722180e+03 -2.9685743e+05 8.7903309e+02
+-1.4479503e+03 -2.4750122e+05 1.1072701e+03
+-1.1380084e+03 -1.8755810e+05 1.4910736e+03
+-7.5215950e+02 -1.2339322e+05 2.1450066e+03
+-3.7952087e+02 -6.5433327e+04 3.1185592e+03
+-1.0891599e+02 -2.4508543e+04 4.1870417e+03
+5.4488513e-01 -4.4172602e+03 4.4027447e+03
+1.4994365e+01 -1.4979473e+03 5.1984843e+03
+3.0842184e+01 -7.0268365e+02 5.7800595e+03
+-9.2233836e+00 -3.5933273e+02 6.2441564e+03
+-2.9328928e+03 -4.1628945e+03 1.1609668e+04
+2.3864632e+03 -4.8149879e+03 0.0000000e+00
+-1.5119426e-02 -5.7228794e-01 -4.1247140e-01
+-2.9611148e-01 -9.5298747e+00 -7.9233403e+00
+-5.3626360e+00 -1.3499393e+02 -1.1500861e+02
+-9.8480014e+01 -1.8724956e+03 -1.2257934e+03
+-4.5902462e+03 -3.8667643e+04 -1.4407544e+03
+-1.4295174e+04 -1.1499534e+05 -9.0328236e+02
+-2.5921531e+04 -2.0296905e+05 3.1554852e+02
+-3.5732139e+04 -2.7563300e+05 1.9970748e+03
+-4.1670636e+04 -3.1768132e+05 3.8152753e+03
+-4.3588071e+04 -3.2757757e+05 5.8505906e+03
+-4.2348731e+04 -3.1233547e+05 8.1763711e+03
+-3.8886607e+04 -2.7938552e+05 1.0859335e+04
+-3.3708757e+04 -2.3313665e+05 1.4037718e+04
+-2.6990589e+04 -1.7708634e+05 1.7739443e+04
+-1.9096045e+04 -1.1724939e+05 2.1767073e+04
+-1.0890713e+04 -6.3031025e+04 2.5302672e+04
+-3.9479600e+03 -2.3435694e+04 2.6541375e+04
+-1.1349723e+02 -3.4817786e+03 2.5773288e+04
+-5.0258027e+01 -1.5799786e+03 2.6057525e+04
+-6.9393351e+01 -8.5521821e+02 2.6538005e+04
+-2.5600628e+02 -4.5438525e+02 2.7325445e+04
+-6.5528675e+03 -5.7110872e+03 3.4852208e+04
+7.3557072e+03 -6.9391526e+03 0.0000000e+00
+-3.3638786e-02 -3.0778530e-01 -2.4710831e-01
+-6.9069558e-01 -5.2926857e+00 -4.1298003e+00
+-1.2997027e+01 -8.2034554e+01 -5.0469316e+01
+-2.4594170e+02 -1.3285197e+03 -4.7015233e+02
+-1.0382515e+04 -3.3020942e+04 -9.8614666e+02
+-2.9651294e+04 -1.0174994e+05 3.8931488e+02
+-5.2585383e+04 -1.8040116e+05 3.6089018e+03
+-7.2304626e+04 -2.4498843e+05 8.2134119e+03
+-8.4932316e+04 -2.8211959e+05 1.3852446e+04
+-8.9960603e+04 -2.9070859e+05 2.0505737e+04
+-8.8721695e+04 -2.7704635e+05 2.8163288e+04
+-8.2684069e+04 -2.4775754e+05 3.6729195e+04
+-7.2678549e+04 -2.0679422e+05 4.5995794e+04
+-5.9141680e+04 -1.5722395e+05 5.5442805e+04
+-4.2857988e+04 -1.0423229e+05 6.4003748e+04
+-2.5541292e+04 -5.5766752e+04 6.9919268e+04
+-1.0439452e+04 -1.9605153e+04 7.1852970e+04
+-3.7962507e+02 -2.3627238e+03 7.1198483e+04
+-2.4134119e+02 -1.0620372e+03 7.1257189e+04
+-3.6527482e+02 -5.7350984e+02 7.1900501e+04
+-8.5025215e+02 -2.9436817e+02 7.3488137e+04
+-1.2258089e+04 -4.8772695e+03 8.2662456e+04
+1.6764581e+04 -5.6094430e+03 0.0000000e+00
+-5.3630605e-02 -1.7128558e-01 -1.1001249e-01
+-1.1035746e+00 -3.1340400e+00 -1.7283096e+00
+-2.0674854e+01 -5.2843960e+01 -2.0885392e+01
+-3.8731204e+02 -9.2284702e+02 -2.4020453e+02
+-1.5843583e+04 -2.6028935e+04 2.6821900e+02
+-4.4626646e+04 -8.3221305e+04 2.9571156e+03
+-7.8973044e+04 -1.4859300e+05 8.5812096e+03
+-1.0878239e+05 -2.0196755e+05 1.6882870e+04
+-1.2831172e+05 -2.3242251e+05 2.7475388e+04
+-1.3668830e+05 -2.3928050e+05 4.0155959e+04
+-1.3572041e+05 -2.2782160e+05 5.4698992e+04
+-1.2740863e+05 -2.0355346e+05 7.0711351e+04
+-1.1284691e+05 -1.6976184e+05 8.7537264e+04
+-9.2621297e+04 -1.2894173e+05 1.0405617e+05
+-6.7856453e+04 -8.5251598e+04 1.1848725e+05
+-4.1113482e+04 -4.5043819e+04 1.2855271e+05
+-1.7437280e+04 -1.4917747e+04 1.3331962e+05
+-7.0943155e+02 -1.4862020e+03 1.3327212e+05
+-5.2488929e+02 -6.0338920e+02 1.3387819e+05
+-8.1152164e+02 -3.0388922e+02 1.3532300e+05
+-1.6902080e+03 -1.4958221e+02 1.3828480e+05
+-1.8380484e+04 -3.7671410e+03 1.5061925e+05
+3.0671324e+04 -3.4136068e+03 0.0000000e+00
+-6.9652193e-02 -9.7042945e-02 -4.0800839e-02
+-1.4253988e+00 -1.8602460e+00 -6.3661445e-01
+-2.6483341e+01 -3.2772047e+01 -8.2376079e+00
+-4.9120618e+02 -5.8715437e+02 -1.1489652e+02
+-1.9970193e+04 -1.8604540e+04 1.6365790e+03
+-5.6559468e+04 -6.1292668e+04 5.9204753e+03
+-1.0042905e+05 -1.1019113e+05 1.3997741e+04
+-1.3873162e+05 -1.4995278e+05 2.5947690e+04
+-1.6411611e+05 -1.7249465e+05 4.1427985e+04
+-1.7539135e+05 -1.7743657e+05 6.0079199e+04
+-1.7477027e+05 -1.6876871e+05 8.1447809e+04
+-1.6470939e+05 -1.5062193e+05 1.0484378e+05
+-1.4651246e+05 -1.2546364e+05 1.2920538e+05
+-1.2084761e+05 -9.5137442e+04 1.5289283e+05
+-8.9064027e+04 -6.2672118e+04 1.7352763e+05
+-5.4381431e+04 -3.2705672e+04 1.8834439e+05
+-2.3389837e+04 -1.0327268e+04 1.9632591e+05
+-1.0228699e+03 -8.9215162e+02 1.9691121e+05
+-8.3321601e+02 -3.2499232e+02 1.9819355e+05
+-1.3011231e+03 -1.2534397e+02 2.0053980e+05
+-2.5907085e+03 -1.2826543e+01 2.0489212e+05
+-2.4029577e+04 -2.9047097e+03 2.2008980e+05
+4.5990989e+04 -3.4750312e+03 0.0000000e+00
+-8.0463691e-02 -5.0251289e-02 -8.8510640e-03
+-1.6393923e+00 -9.8620916e-01 -1.1733302e-01
+-3.0296879e+01 -1.7679719e+01 -1.2089548e+00
+-5.5884889e+02 -3.1905439e+02 -1.3698212e+01
+-2.2753261e+04 -1.1129684e+04 2.7621012e+03
+-6.4956551e+04 -3.7421376e+04 8.4683462e+03
+-1.1577061e+05 -6.7620579e+04 1.8589176e+04
+-1.6031076e+05 -9.2118228e+04 3.3486544e+04
+-1.9000954e+05 -1.0594511e+05 5.2887779e+04
+-2.0342099e+05 -1.0891584e+05 7.6323967e+04
+-2.0305401e+05 -1.0351363e+05 1.0315763e+05
+-1.9171725e+05 -9.2297704e+04 1.3246157e+05
+-1.7089019e+05 -7.6800169e+04 1.6286163e+05
+-1.4130735e+05 -5.8154052e+04 1.9232530e+05
+-1.0446167e+05 -3.8197753e+04 2.1802400e+05
+-6.4013118e+04 -1.9756679e+04 2.3677968e+05
+-2.7673460e+04 -6.0479409e+03 2.4732324e+05
+-1.2649010e+03 -4.8302758e+02 2.4838148e+05
+-1.0892914e+03 -1.6616685e+02 2.5020742e+05
+-1.7070597e+03 -4.1405774e+01 2.5334282e+05
+-3.3574175e+03 4.9918184e+01 2.5896972e+05
+-2.9599302e+04 -1.4835169e+03 2.7637112e+05
+5.8531882e+04 -3.1775879e+03 0.0000000e+00
+-8.6570097e-02 -1.5565875e-02 5.7347108e-03
+-1.7597111e+00 -3.0817854e-01 1.4135181e-01
+-3.2436861e+01 -5.5556645e+00 2.8583252e+00
+-5.9685112e+02 -1.0043343e+02 5.4515002e+01
+-2.4351412e+04 -3.7014249e+03 3.4752660e+03
+-6.9899315e+04 -1.2572646e+04 1.0123542e+04
+-1.2488824e+05 -2.2779829e+04 2.1556761e+04
+-1.7319477e+05 -3.1051125e+04 3.8308575e+04
+-2.0549650e+05 -3.5709302e+04 6.0159350e+04
+-2.2017946e+05 -3.6699617e+04 8.6574806e+04
+-2.1993023e+05 -3.4864735e+04 1.1679907e+05
+-2.0778369e+05 -3.1071368e+04 1.4975439e+05
+-1.8534700e+05 -2.5839238e+04 1.8387499e+05
+-1.5341092e+05 -1.9550787e+04 2.1689381e+05
+-1.1355410e+05 -1.2822133e+04 2.4571780e+05
+-6.9680391e+04 -6.6024927e+03 2.6690891e+05
+-3.0157188e+04 -1.9924033e+03 2.7899516e+05
+-1.4062930e+03 -1.5622641e+02 2.8032531e+05
+-1.2404478e+03 -5.5555971e+01 2.8248464e+05
+-1.9438778e+03 -1.4338723e+01 2.8614261e+05
+-3.8361165e+03 2.0650385e+01 2.9268761e+05
+-3.4314812e+04 -3.2256903e+02 3.1305326e+05
+6.6225184e+04 -1.1673694e+03 0.0000000e+00
+-8.8539519e-02 1.5565875e-02 1.0080888e-02
+-1.7984972e+00 3.0817854e-01 2.2275317e-01
+-3.3127271e+01 5.5556645e+00 4.2219047e+00
+-6.0913509e+02 1.0043343e+02 7.8354304e+01
+-2.4872242e+04 3.7014249e+03 3.7166081e+03
+-7.1527244e+04 1.2572646e+04 1.0689893e+04
+-1.2790409e+05 2.2779829e+04 2.2569823e+04
+-1.7746504e+05 3.1051125e+04 3.9946131e+04
+-2.1063204e+05 3.5709302e+04 6.2618142e+04
+-2.2573215e+05 3.6699617e+04 9.0029572e+04
+-2.2551100e+05 3.4864735e+04 1.2138364e+05
+-2.1308213e+05 3.1071368e+04 1.5555128e+05
+-1.9010047e+05 2.5839238e+04 1.9090298e+05
+-1.5738006e+05 1.9550787e+04 2.2509543e+05
+-1.1652886e+05 1.2822133e+04 2.5495072e+05
+-7.1527688e+04 6.6024927e+03 2.7694402e+05
+-3.0956246e+04 1.9924033e+03 2.8952927e+05
+-1.4504715e+03 1.5622641e+02 2.9093980e+05
+-1.2866444e+03 5.5555975e+01 2.9319876e+05
+-2.0152082e+03 1.4338837e+01 2.9701805e+05
+-3.9904923e+03 -2.0648269e+01 3.0386965e+05
+-3.6216818e+04 3.2287422e+02 3.2592486e+05
+6.8779422e+04 1.1674683e+03 0.0000000e+00
+-8.6570097e-02 5.0251289e-02 5.7347108e-03
+-1.7597111e+00 9.8620916e-01 1.4135181e-01
+-3.2436861e+01 1.7679719e+01 2.8583252e+00
+-5.9685112e+02 3.1905439e+02 5.4515002e+01
+-2.4351412e+04 1.1129684e+04 3.4752660e+03
+-6.9899315e+04 3.7421376e+04 1.0123542e+04
+-1.2488824e+05 6.7620579e+04 2.1556761e+04
+-1.7319477e+05 9.2118228e+04 3.8308575e+04
+-2.0549650e+05 1.0594511e+05 6.0159350e+04
+-2.2017946e+05 1.0891584e+05 8.6574806e+04
+-2.1993023e+05 1.0351363e+05 1.1679907e+05
+-2.0778369e+05 9.2297704e+04 1.4975439e+05
+-1.8534700e+05 7.6800169e+04 1.8387499e+05
+-1.5341092e+05 5.8154052e+04 2.1689381e+05
+-1.1355410e+05 3.8197753e+04 2.4571780e+05
+-6.9680391e+04 1.9756679e+04 2.6690891e+05
+-3.0157188e+04 6.0479409e+03 2.7899516e+05
+-1.4062930e+03 4.8302758e+02 2.8032531e+05
+-1.2404478e+03 1.6616686e+02 2.8248464e+05
+-1.9438777e+03 4.1405876e+01 2.8614261e+05
+-3.8361155e+03 -4.9921895e+01 2.9268762e+05
+-3.4314735e+04 1.4835969e+03 3.1305319e+05
+6.6225521e+04 3.1773556e+03 0.0000000e+00
+-8.0463691e-02 9.7042945e-02 -8.8510640e-03
+-1.6393923e+00 1.8602460e+00 -1.1733302e-01
+-3.0296879e+01 3.2772047e+01 -1.2089548e+00
+-5.5884889e+02 5.8715437e+02 -1.3698212e+01
+-2.2753261e+04 1.8604540e+04 2.7621012e+03
+-6.4956551e+04 6.1292668e+04 8.4683462e+03
+-1.1577061e+05 1.1019113e+05 1.8589176e+04
+-1.6031076e+05 1.4995278e+05 3.3486544e+04
+-1.9000954e+05 1.7249465e+05 5.2887779e+04
+-2.0342099e+05 1.7743657e+05 7.6323967e+04
+-2.0305401e+05 1.6876871e+05 1.0315763e+05
+-1.9171725e+05 1.5062193e+05 1.3246157e+05
+-1.7089019e+05 1.2546364e+05 1.6286163e+05
+-1.4130735e+05 9.5137442e+04 1.9232530e+05
+-1.0446167e+05 6.2672118e+04 2.1802400e+05
+-6.4013118e+04 3.2705672e+04 2.3677968e+05
+-2.7673460e+04 1.0327268e+04 2.4732324e+05
+-1.2649010e+03 8.9215162e+02 2.4838148e+05
+-1.0892914e+03 3.2499234e+02 2.5020742e+05
+-1.7070595e+03 1.2534512e+02 2.5334282e+05
+-3.3574130e+03 1.2877812e+01 2.5896978e+05
+-2.9600210e+04 2.9064310e+03 2.7637114e+05
+5.8532005e+04 3.4747155e+03 0.0000000e+00
+-6.9652193e-02 1.7128558e-01 -4.0800839e-02
+-1.4253988e+00 3.1340400e+00 -6.3661445e-01
+-2.6483341e+01 5.2843960e+01 -8.2376079e+00
+-4.9120618e+02 9.2284702e+02 -1.1489652e+02
+-1.9970193e+04 2.6028935e+04 1.6365790e+03
+-5.6559468e+04 8.3221305e+04 5.9204753e+03
+-1.0042905e+05 1.4859300e+05 1.3997741e+04
+-1.3873162e+05 2.0196755e+05 2.5947690e+04
+-1.6411611e+05 2.3242251e+05 4.1427985e+04
+-1.7539135e+05 2.3928050e+05 6.0079199e+04
+-1.7477027e+05 2.2782160e+05 8.1447809e+04
+-1.6470939e+05 2.0355346e+05 1.0484378e+05
+-1.4651246e+05 1.6976184e+05 1.2920538e+05
+-1.2084761e+05 1.2894173e+05 1.5289283e+05
+-8.9064027e+04 8.5251598e+04 1.7352763e+05
+-5.4381431e+04 4.5043819e+04 1.8834439e+05
+-2.3389837e+04 1.4917747e+04 1.9632591e+05
+-1.0228699e+03 1.4862020e+03 1.9691121e+05
+-8.3321604e+02 6.0338927e+02 1.9819355e+05
+-1.3011241e+03 3.0389168e+02 2.0053980e+05
+-2.5907672e+03 1.4964520e+02 2.0489220e+05
+-2.4031616e+04 3.7689949e+03 2.2009288e+05
+4.5991353e+04 3.4138002e+03 0.0000000e+00
+-5.3630605e-02 3.0778530e-01 -1.1001249e-01
+-1.1035746e+00 5.2926857e+00 -1.7283096e+00
+-2.0674854e+01 8.2034554e+01 -2.0885392e+01
+-3.8731204e+02 1.3285197e+03 -2.4020453e+02
+-1.5843583e+04 3.3020942e+04 2.6821900e+02
+-4.4626646e+04 1.0174994e+05 2.9571156e+03
+-7.8973044e+04 1.8040116e+05 8.5812096e+03
+-1.0878239e+05 2.4498843e+05 1.6882870e+04
+-1.2831172e+05 2.8211959e+05 2.7475388e+04
+-1.3668830e+05 2.9070859e+05 4.0155959e+04
+-1.3572041e+05 2.7704635e+05 5.4698992e+04
+-1.2740863e+05 2.4775754e+05 7.0711351e+04
+-1.1284691e+05 2.0679422e+05 8.7537264e+04
+-9.2621297e+04 1.5722395e+05 1.0405617e+05
+-6.7856453e+04 1.0423229e+05 1.1848725e+05
+-4.1113482e+04 5.5766752e+04 1.2855271e+05
+-1.7437280e+04 1.9605153e+04 1.3331962e+05
+-7.0943155e+02 2.3627238e+03 1.3327212e+05
+-5.2488943e+02 1.0620372e+03 1.3387819e+05
+-8.1152490e+02 5.7351264e+02 1.3532300e+05
+-1.6903160e+03 2.9437180e+02 1.3828496e+05
+-1.8383943e+04 4.8765638e+03 1.5062537e+05
+3.0671701e+04 5.6096331e+03 0.0000000e+00
+-3.3638786e-02 5.7228794e-01 -2.4710831e-01
+-6.9069558e-01 9.5298747e+00 -4.1298003e+00
+-1.2997027e+01 1.3499393e+02 -5.0469316e+01
+-2.4594170e+02 1.8724956e+03 -4.7015233e+02
+-1.0382515e+04 3.8667643e+04 -9.8614666e+02
+-2.9651294e+04 1.1499534e+05 3.8931488e+02
+-5.2585383e+04 2.0296905e+05 3.6089018e+03
+-7.2304626e+04 2.7563300e+05 8.2134119e+03
+-8.4932316e+04 3.1768132e+05 1.3852446e+04
+-8.9960603e+04 3.2757757e+05 2.0505737e+04
+-8.8721695e+04 3.1233547e+05 2.8163288e+04
+-8.2684069e+04 2.7938552e+05 3.6729195e+04
+-7.2678549e+04 2.3313665e+05 4.5995794e+04
+-5.9141680e+04 1.7708634e+05 5.5442805e+04
+-4.2857988e+04 1.1724939e+05 6.4003748e+04
+-2.5541292e+04 6.3031025e+04 6.9919268e+04
+-1.0439452e+04 2.3435694e+04 7.1852970e+04
+-3.7962507e+02 3.4817786e+03 7.1198483e+04
+-2.4134121e+02 1.5799786e+03 7.1257190e+04
+-3.6527814e+02 8.5521753e+02 7.1900489e+04
+-8.5031374e+02 4.5437210e+02 7.3488166e+04
+-1.2259691e+04 5.7093539e+03 8.2664812e+04
+1.6764965e+04 6.9393378e+03 0.0000000e+00
+-1.5119426e-02 9.9359968e-01 -4.1247140e-01
+-2.9611148e-01 1.7214706e+01 -7.9233403e+00
+-5.3626360e+00 2.4521902e+02 -1.1500861e+02
+-9.8480014e+01 3.0398431e+03 -1.2257934e+03
+-4.5902462e+03 4.1359845e+04 -1.4407544e+03
+-1.4295174e+04 1.2209374e+05 -9.0328236e+02
+-2.5921531e+04 2.1548127e+05 3.1554852e+02
+-3.5732139e+04 2.9273117e+05 1.9970748e+03
+-4.1670636e+04 3.3761864e+05 3.8152753e+03
+-4.3588071e+04 3.4819112e+05 5.8505906e+03
+-4.2348731e+04 3.3195708e+05 8.1763711e+03
+-3.8886607e+04 2.9685743e+05 1.0859335e+04
+-3.3708757e+04 2.4750122e+05 1.4037718e+04
+-2.6990589e+04 1.8755810e+05 1.7739443e+04
+-1.9096045e+04 1.2339322e+05 2.1767073e+04
+-1.0890713e+04 6.5433327e+04 2.5302672e+04
+-3.9479600e+03 2.4508543e+04 2.6541375e+04
+-1.1349723e+02 4.4172602e+03 2.5773288e+04
+-5.0258029e+01 1.4979473e+03 2.6057525e+04
+-6.9393349e+01 7.0268333e+02 2.6538004e+04
+-2.5594454e+02 3.5932506e+02 2.7325544e+04
+-6.5505102e+03 4.1614926e+03 3.4850487e+04
+7.3558561e+03 4.8145737e+03 0.0000000e+00
+-5.7586268e-03 1.2756260e+00 -2.7690195e-01
+-9.8348769e-02 2.3349079e+01 -6.3120373e+00
+-1.4864577e+00 3.5043049e+02 -1.0985422e+02
+-2.0498312e+01 4.4591775e+03 -1.5048996e+03
+-2.2630622e+02 4.1971002e+04 -1.8572196e+03
+-7.1686510e+02 1.2263317e+05 -1.5921864e+03
+-1.3092382e+03 2.1622136e+05 -8.7802983e+02
+-1.7746255e+03 2.9394822e+05 -1.2939393e+02
+-1.9986882e+03 3.3942920e+05 2.8330462e+02
+-1.9996752e+03 3.5016630e+05 5.4482031e+02
+-1.8613540e+03 3.3384550e+05 7.3203783e+02
+-1.6722180e+03 2.9854011e+05 8.7903308e+02
+-1.4479503e+03 2.4882199e+05 1.1072701e+03
+-1.1380084e+03 1.8839240e+05 1.4910736e+03
+-7.5215950e+02 1.2357075e+05 2.1450066e+03
+-3.7952087e+02 6.4906302e+04 3.1185592e+03
+-1.0891599e+02 2.3595286e+04 4.1870417e+03
+5.4488008e-01 4.2325451e+03 4.4027447e+03
+1.4994356e+01 7.3024959e+02 5.1984843e+03
+3.0841950e+01 1.6913701e+02 5.7800595e+03
+-9.2325024e+00 5.4629521e+01 6.2441573e+03
+-2.9299634e+03 1.6648826e+03 1.1609402e+04
+2.3864326e+03 1.9378664e+03 0.0000000e+00
+-5.3616284e-03 1.0496592e+00 2.3219026e-01
+-1.0257308e-01 2.0494624e+01 3.2232206e+00
+-1.6884759e+00 3.3015760e+02 2.6000540e+01
+-2.3660373e+01 4.4869860e+03 3.5723158e+01
+-2.2374794e+02 4.3054786e+04 -6.7974140e+02
+-6.6944766e+02 1.2420367e+05 -1.1380181e+03
+-1.1785096e+03 2.1772211e+05 -6.5442453e+02
+-1.5310307e+03 2.9597307e+05 -2.8794699e+01
+-1.6354295e+03 3.4217328e+05 1.8663793e+02
+-1.5404324e+03 3.5298442e+05 3.0331332e+02
+-1.3580080e+03 3.3645519e+05 3.7584189e+02
+-1.1961370e+03 3.0085602e+05 3.9578186e+02
+-1.0472485e+03 2.5070150e+05 4.7913315e+02
+-8.0791575e+02 1.8976442e+05 6.3398509e+02
+-4.8433568e+02 1.2428187e+05 9.4067886e+02
+-2.0062560e+02 6.5001196e+04 1.3732018e+03
+-3.5131006e+01 2.3788548e+04 1.3565106e+03
+1.5565249e+01 4.8891255e+03 7.2349573e+02
+1.9930042e+01 7.1546957e+02 7.3489358e+02
+2.7611378e+01 7.9448616e+01 8.1714702e+02
+2.1787690e+01 6.1965643e+00 8.8277942e+02
+-1.2524732e+03 4.5447570e+02 3.2285416e+03
+3.6610034e+02 3.3814559e+02 0.0000000e+00
+-5.8340688e-03 4.3570675e-01 6.2082057e-01
+-1.2580823e-01 9.5409644e+00 1.1740510e+01
+-2.2903795e+00 1.7972539e+02 1.6550250e+02
+-3.5447096e+01 3.0766721e+03 1.6310611e+03
+-3.8128059e+02 4.4826188e+04 4.8248017e+02
+-1.1037189e+03 1.2729867e+05 -7.7348529e+02
+-1.9048409e+03 2.2067756e+05 -4.8084081e+02
+-2.4433301e+03 2.9974403e+05 6.7100959e+01
+-2.5822342e+03 3.4694480e+05 1.0396902e+02
+-2.4077749e+03 3.5771002e+05 1.3478711e+02
+-2.1080633e+03 3.4075959e+05 1.7100264e+02
+-1.8579259e+03 3.0464693e+05 1.6115214e+02
+-1.6345884e+03 2.5379708e+05 2.4569917e+02
+-1.2595114e+03 1.9213817e+05 3.4242424e+02
+-7.4391633e+02 1.2577683e+05 4.8579820e+02
+-2.9718753e+02 6.5607734e+04 7.2288646e+02
+-4.3987356e+01 2.4171316e+04 6.2439251e+02
+3.1696867e+01 5.3915821e+03 1.6087027e+02
+2.7105790e+01 7.8896215e+02 7.9300447e+01
+1.5965614e+01 7.4369962e+01 7.5669239e+01
+6.9969025e+00 6.3371307e+00 7.5298205e+01
+-4.9705659e+02 6.8173504e+01 8.0449281e+02
+-2.6392903e+02 -2.7080284e+01 0.0000000e+00
+-3.1607095e-03 0.0000000e+00 4.3951944e-01
+-7.8653597e-02 0.0000000e+00 1.0086003e+01
+-1.7235647e+00 0.0000000e+00 1.9233708e+02
+-3.5874613e+01 0.0000000e+00 3.3242987e+03
+-7.2285646e+02 4.7500589e+04 1.7374914e+03
+-2.0805371e+03 1.3258052e+05 -3.9062983e+02
+-3.5761689e+03 2.2618271e+05 -3.4596920e+02
+-4.6525263e+03 3.0664592e+05 2.1156407e+02
+-5.0454484e+03 3.5551501e+05 7.4048389e+01
+-4.8472469e+03 3.6625868e+05 -6.0277317e+00
+-4.3299939e+03 3.4855367e+05 4.1357115e+00
+-3.7884908e+03 3.1147282e+05 -3.0821248e+01
+-3.2695567e+03 2.5934034e+05 1.0436528e+02
+-2.5443940e+03 1.9646305e+05 2.1119198e+02
+-1.5994237e+03 1.2876371e+05 2.3086759e+02
+-7.4173171e+02 6.7103488e+04 3.5842127e+02
+-2.0679113e+02 2.4830316e+04 3.1647598e+02
+-3.4631115e+00 5.7945701e+03 5.3112202e+01
+2.1281004e+01 8.5122160e+02 5.6672730e+00
+6.9402914e+00 7.3079194e+01 6.2368027e+00
+-3.8697693e+00 8.2528102e+00 7.7832908e+00
+-1.3473927e+02 0.0000000e+00 1.4844760e+02
+-2.0012041e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-4.2878451e+03 4.1467217e+04 8.2162857e+03
+-1.3122025e+04 1.4227506e+05 3.9092951e+03
+-2.3492469e+04 2.4260650e+05 -2.2062947e+03
+-3.4219920e+04 3.2148144e+05 8.8029419e+02
+-4.2768327e+04 3.7869071e+05 3.1995239e+03
+-4.6942508e+04 3.9781919e+05 2.1662148e+03
+-4.5382625e+04 3.7960599e+05 2.1338163e+03
+-3.8589812e+04 3.3810591e+05 2.0591037e+03
+-3.0545456e+04 2.7959010e+05 2.5952704e+03
+-2.4427506e+04 2.1182513e+05 4.2362689e+03
+-1.8924592e+04 1.4200730e+05 5.1752842e+03
+-1.2309274e+04 7.7503156e+04 5.0585194e+03
+-6.2392630e+03 3.2170643e+04 3.6108242e+03
+-2.7504907e+03 1.0608757e+04 1.5685807e+03
+-1.2302777e+03 3.0781070e+03 4.5293052e+02
+-4.8084458e+02 7.8438727e+02 6.5783812e+01
+-1.1688100e+02 1.3421216e+02 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+9.0026471e+03 0.0000000e+00 5.3183358e+03
+3.3817761e+04 0.0000000e+00 9.0229881e+03
+6.0894917e+04 0.0000000e+00 -5.6627231e+02
+7.7572476e+04 0.0000000e+00 -4.7100394e+03
+8.4266268e+04 0.0000000e+00 2.3391363e+03
+8.2992841e+04 0.0000000e+00 5.5459986e+03
+7.5849068e+04 0.0000000e+00 5.6012943e+03
+6.7979999e+04 0.0000000e+00 5.8928777e+03
+5.9358286e+04 0.0000000e+00 3.3487275e+03
+4.5932981e+04 0.0000000e+00 2.4195367e+03
+2.9150354e+04 0.0000000e+00 5.8258146e+03
+1.5060077e+04 0.0000000e+00 7.1670148e+03
+6.6220880e+03 0.0000000e+00 4.3790717e+03
+2.2027488e+03 0.0000000e+00 1.5847138e+03
+1.8868944e+02 0.0000000e+00 3.8031369e+02
+-3.0649027e+02 0.0000000e+00 5.5787973e+01
+-1.5761334e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.3369747e+02 -5.7247545e+04 8.4497957e+03
+-6.9561874e+03 -1.9797821e+05 1.8090851e+04
+-1.7645640e+04 -3.2953801e+05 4.4868065e+03
+-1.7492672e+04 -4.2625630e+05 -6.2513755e+03
+-4.0304410e+03 -4.9714290e+05 8.5046571e+02
+9.7191802e+03 -5.1915345e+05 2.1473163e+03
+1.4790353e+04 -4.9692974e+05 1.4568781e+02
+9.0797079e+03 -4.4996646e+05 3.7698502e+03
+2.1037107e+02 -3.7612199e+05 2.8565228e+03
+1.3411469e+03 -2.8217752e+05 7.7287020e+02
+9.0449097e+03 -1.8378785e+05 5.3714514e+03
+1.0192466e+04 -9.5334677e+04 7.7709983e+03
+5.8331826e+03 -3.5960143e+04 4.3285237e+03
+2.6890221e+03 -9.7006426e+03 1.3094487e+03
+7.4354956e+02 -1.6961002e+03 2.8907388e+02
+-4.7049902e+02 -7.2982031e+01 5.3517936e+01
+-3.7283344e+02 3.7733022e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+8.7980218e+03 -8.4093259e+04 1.3758658e+04
+3.0076802e+04 -2.3262617e+05 5.2024747e+03
+5.2346260e+04 -3.9452109e+05 -5.6617513e+03
+6.9119087e+04 -5.3431852e+05 -9.4601207e+02
+7.7266483e+04 -6.2073224e+05 2.6040861e+03
+7.5717996e+04 -6.4186216e+05 2.6512087e+03
+6.9117358e+04 -6.1378480e+05 5.0104695e+03
+6.2718106e+04 -5.5050397e+05 4.2412748e+03
+5.5026184e+04 -4.5951888e+05 2.0671599e+03
+4.2793552e+04 -3.5032357e+05 2.9919644e+03
+2.7939671e+04 -2.3263933e+05 4.9773126e+03
+1.5025285e+04 -1.2345627e+05 5.7651358e+03
+6.4421836e+03 -4.6969888e+04 4.0991395e+03
+2.0013601e+03 -1.1732892e+04 1.3855894e+03
+3.3802326e+02 -2.1142483e+03 2.3667447e+02
+-2.5490659e+01 -3.0438879e+02 1.0640298e+01
+-3.4589683e+01 -3.5085377e+01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1448898e-03 -8.3285090e-01 8.3283508e-01
+-7.0113547e-02 -1.8075586e+01 1.8899882e+01
+-1.4244145e+00 -3.3666178e+02 3.5526251e+02
+-2.6873709e+01 -5.6852377e+03 6.0314993e+03
+-3.5585637e+02 -8.1495119e+04 3.0670695e+03
+-9.9941891e+02 -2.2975873e+05 -8.8163473e+02
+-2.0630805e+03 -3.9619280e+05 -7.2325649e+02
+-3.4016997e+03 -5.3671589e+05 4.2306234e+02
+-4.7833953e+03 -6.2091359e+05 3.4222905e+02
+-5.7463362e+03 -6.4102260e+05 4.0173721e+02
+-5.6208948e+03 -6.1249951e+05 4.0738412e+02
+-4.5637865e+03 -5.4949300e+05 1.7173739e+02
+-3.5499417e+03 -4.5951568e+05 4.4895179e+02
+-2.9642805e+03 -3.5022016e+05 7.6540824e+02
+-2.4353588e+03 -2.3178357e+05 7.4553065e+02
+-1.7266377e+03 -1.2261379e+05 8.8797844e+02
+-9.7194458e+02 -4.6107567e+04 7.9100191e+02
+-4.0431538e+02 -1.0763496e+04 2.2263976e+02
+-1.3513087e+02 -1.7904447e+03 5.5289308e+01
+-3.8433386e+01 -2.3610368e+02 3.2297005e+01
+-1.3679709e+01 -3.2490331e+01 3.9482850e+01
+-3.5006562e+01 -2.0542521e+01 -3.9475619e+01
+-3.7871965e+02 -6.4052267e+01 0.0000000e+00
+-5.6668774e-03 -2.0155886e+00 1.1825705e+00
+-1.0113743e-01 -3.9063182e+01 2.2145496e+01
+-1.6779342e+00 -6.2348918e+02 3.0836046e+02
+-2.6471852e+01 -8.3818872e+03 2.9960347e+03
+-3.0970339e+02 -7.9429503e+04 8.5884084e+02
+-9.6015687e+02 -2.2755098e+05 -1.4924251e+03
+-1.8991341e+03 -3.9676570e+05 -9.2524031e+02
+-2.9393589e+03 -5.3731054e+05 1.6542319e+02
+-3.8913496e+03 -6.1978572e+05 3.4666823e+02
+-4.4601976e+03 -6.3913129e+05 5.0778228e+02
+-4.2953304e+03 -6.1034483e+05 5.4037005e+02
+-3.5636096e+03 -5.4767841e+05 4.3146680e+02
+-2.8442861e+03 -4.5852373e+05 6.4920653e+02
+-2.3266069e+03 -3.4943254e+05 9.2867924e+02
+-1.8115842e+03 -2.3094691e+05 1.1596886e+03
+-1.2164787e+03 -1.2207198e+05 1.5371794e+03
+-6.4581677e+02 -4.5305112e+04 1.3365592e+03
+-2.4167273e+02 -9.5565567e+03 4.0299576e+02
+-7.6316831e+01 -1.4971302e+03 2.1310493e+02
+-3.3572891e+01 -2.1373665e+02 2.4027482e+02
+-4.0526131e+01 -5.7318377e+01 3.1264013e+02
+-2.6209224e+01 -2.0420290e+02 2.5953022e+01
+-5.6924072e+02 -3.2378203e+02 0.0000000e+00
+-5.5773776e-03 -2.4590152e+00 4.4364236e-01
+-7.1037072e-02 -4.4727543e+01 6.0764670e+00
+-8.6226437e-01 -6.6612356e+02 4.7884639e+01
+-1.1653797e+01 -8.4003430e+03 5.4333870e+01
+-1.2451753e+02 -7.8206559e+04 -1.2678400e+03
+-4.2272990e+02 -2.2691689e+05 -2.1486529e+03
+-9.0451274e+02 -3.9793726e+05 -1.2510838e+03
+-1.4815851e+03 -5.3856027e+05 -5.0799019e+01
+-2.0422806e+03 -6.1984670e+05 4.1703390e+02
+-2.4004305e+03 -6.3855749e+05 7.0323108e+02
+-2.3276398e+03 -6.0949835e+05 8.2638527e+02
+-1.9129699e+03 -5.4694718e+05 8.1199236e+02
+-1.5107102e+03 -4.5824992e+05 1.0016444e+03
+-1.2438921e+03 -3.4934664e+05 1.3517169e+03
+-9.8814463e+02 -2.3100350e+05 1.9121097e+03
+-6.7666884e+02 -1.2238164e+05 2.6978072e+03
+-3.5988386e+02 -4.4965249e+04 2.6826965e+03
+-1.2994786e+02 -8.1956906e+03 1.4673438e+03
+-6.2491642e+01 -1.4802206e+03 1.5328559e+03
+-7.8894231e+01 -4.2029203e+02 1.8459172e+03
+-1.4002220e+02 -2.2811479e+02 2.1785346e+03
+4.0142545e+02 -1.4225728e+03 1.7434180e+03
+7.4148723e+02 -1.5878270e+03 0.0000000e+00
+-1.0044381e-02 -1.9211555e+00 -5.3357397e-01
+-1.3497795e-01 -3.3113193e+01 -1.2111294e+01
+-1.6375299e+00 -4.6886743e+02 -2.0921635e+02
+-2.0769470e+01 -5.7756797e+03 -2.8336085e+03
+-2.4933066e+02 -7.7563698e+04 -3.4534449e+03
+-8.1968363e+02 -2.2728516e+05 -2.9823502e+03
+-1.6044659e+03 -3.9895847e+05 -1.6659184e+03
+-2.3810937e+03 -5.3935761e+05 -2.6210936e+02
+-2.9824874e+03 -6.1966037e+05 5.3536349e+02
+-3.2898110e+03 -6.3778921e+05 1.0572163e+03
+-3.2043879e+03 -6.0849441e+05 1.3963072e+03
+-2.8153857e+03 -5.4604231e+05 1.6345994e+03
+-2.3575058e+03 -4.5778225e+05 2.0764838e+03
+-1.9181348e+03 -3.4933077e+05 2.8407410e+03
+-1.4337109e+03 -2.3157576e+05 4.0945573e+03
+-8.8907583e+02 -1.2374522e+05 5.9676969e+03
+-3.8998482e+02 -4.6794948e+04 8.0784651e+03
+-1.1935298e+02 -8.4887653e+03 8.4914376e+03
+-1.3387576e+02 -2.9370765e+03 1.0097164e+04
+-2.5106464e+02 -1.4854490e+03 1.1444227e+04
+-4.1870682e+02 -8.8026839e+02 1.2505864e+04
+2.1803936e+03 -4.7557347e+03 1.0725577e+04
+2.9545934e+03 -4.7703461e+03 0.0000000e+00
+-3.3038610e-02 -1.1054490e+00 -7.9778738e-01
+-6.2384725e-01 -1.8304629e+01 -1.5278616e+01
+-1.1109436e+01 -2.5750002e+02 -2.2089922e+02
+-2.0568928e+02 -3.5443594e+03 -2.3450102e+03
+-9.1886689e+03 -7.2633702e+04 -2.6765841e+03
+-2.8156666e+04 -2.1439898e+05 -1.7012768e+03
+-5.0647103e+04 -3.7640187e+05 4.6770137e+02
+-6.9535060e+04 -5.0854894e+05 3.4619524e+03
+-8.1011355e+04 -5.8355557e+05 6.6978690e+03
+-8.4877000e+04 -6.0015022e+05 1.0347814e+04
+-8.2704484e+04 -5.7233700e+05 1.4546159e+04
+-7.6194985e+04 -5.1365190e+05 1.9464130e+04
+-6.6432024e+04 -4.3106537e+05 2.5470524e+04
+-5.3825620e+04 -3.2968485e+05 3.2659636e+04
+-3.8863132e+04 -2.1978444e+05 4.0635405e+04
+-2.2885261e+04 -1.1888557e+05 4.7770302e+04
+-8.7645410e+03 -4.4509512e+04 5.0301447e+04
+-3.9110682e+02 -6.6036942e+03 4.8693986e+04
+-3.7529148e+02 -3.0593526e+03 4.9141296e+04
+-6.7535172e+02 -1.7702028e+03 5.0032008e+04
+-1.0089266e+03 -1.0479459e+03 5.0952606e+04
+6.9798095e+03 -6.3979983e+03 3.9062206e+04
+5.8197349e+03 -8.3816042e+03 0.0000000e+00
+-7.1321084e-02 -5.8925972e-01 -4.7850694e-01
+-1.4401031e+00 -1.0047228e+01 -7.9864999e+00
+-2.6763979e+01 -1.5406115e+02 -9.7658424e+01
+-5.0249143e+02 -2.4662277e+03 -9.1924044e+02
+-2.0481936e+04 -6.1496604e+04 -1.9569174e+03
+-5.8213174e+04 -1.8821482e+05 4.2080163e+02
+-1.0260129e+05 -3.3201180e+05 6.0466322e+03
+-1.4029292e+05 -4.4860192e+05 1.4087908e+04
+-1.6410007e+05 -5.1426760e+05 2.3967694e+04
+-1.7348456e+05 -5.2841607e+05 3.5757498e+04
+-1.7130386e+05 -5.0355477e+05 4.9557425e+04
+-1.6038082e+05 -4.5172328e+05 6.5325560e+04
+-1.4211486e+05 -3.7913250e+05 8.2828998e+04
+-1.1703657e+05 -2.9016315e+05 1.0120218e+05
+-8.6265860e+04 -1.9359205e+05 1.1841766e+05
+-5.2647542e+04 -1.0414489e+05 1.3078323e+05
+-2.2069071e+04 -3.6818642e+04 1.3472198e+05
+-8.4810278e+02 -4.4497677e+03 1.3303653e+05
+-6.7917075e+02 -2.0908746e+03 1.3250588e+05
+-1.2288056e+03 -1.2610390e+03 1.3286025e+05
+-1.7154629e+03 -7.6886318e+02 1.3344637e+05
+1.6198699e+04 -4.3649674e+03 1.0295655e+05
+8.7970102e+03 -7.0659590e+03 0.0000000e+00
+-1.0907132e-01 -3.2244787e-01 -2.1137113e-01
+-2.2148320e+00 -5.8355034e+00 -3.3118387e+00
+-4.0962171e+01 -9.7169136e+01 -3.9916534e+01
+-7.5831159e+02 -1.6765260e+03 -4.5861863e+02
+-3.0068215e+04 -4.7981360e+04 2.5076946e+02
+-8.4948735e+04 -1.5244447e+05 4.8025125e+03
+-1.4981051e+05 -2.7086166e+05 1.4489841e+04
+-2.0541464e+05 -3.6633342e+05 2.8853593e+04
+-2.4134155e+05 -4.1968632e+05 4.7302143e+04
+-2.5664227e+05 -4.3081947e+05 6.9659511e+04
+-2.5524963e+05 -4.1011711e+05 9.5751072e+04
+-2.4098017e+05 -3.6751566e+05 1.2511499e+05
+-2.1550434e+05 -3.0815631e+05 1.5679622e+05
+-1.7930901e+05 -2.3556025e+05 1.8888104e+05
+-1.3381988e+05 -1.5669524e+05 2.1794766e+05
+-8.3052381e+04 -8.3221098e+04 2.3896277e+05
+-3.5818920e+04 -2.7702158e+04 2.4822792e+05
+-1.2834251e+03 -2.8048143e+03 2.4715696e+05
+-9.3486197e+02 -1.2674419e+03 2.4674350e+05
+-1.7328469e+03 -8.1565237e+02 2.4721944e+05
+-2.2703540e+03 -6.0463503e+02 2.4763536e+05
+2.8996276e+04 -2.9542622e+03 1.9884790e+05
+7.5214711e+03 -1.7575838e+03 0.0000000e+00
+-1.3758311e-01 -1.7947512e-01 -7.5041828e-02
+-2.7814677e+00 -3.4025312e+00 -1.1519451e+00
+-5.1017841e+01 -5.9242123e+01 -1.4544458e+01
+-9.3445721e+02 -1.0498639e+03 -1.9795553e+02
+-3.6802438e+04 -3.4003896e+04 2.6568260e+03
+-1.0489956e+05 -1.1132182e+05 9.8742644e+03
+-1.8591500e+05 -1.9916920e+05 2.3667748e+04
+-2.5588164e+05 -2.6972184e+05 4.4206194e+04
+-3.0172218e+05 -3.0890194e+05 7.1027881e+04
+-3.2209351e+05 -3.1684085e+05 1.0375142e+05
+-3.2173385e+05 -3.0129806e+05 1.4189594e+05
+-3.0524116e+05 -2.6966871e+05 1.8458076e+05
+-2.7450198e+05 -2.2580417e+05 2.3021815e+05
+-2.2989801e+05 -1.7229563e+05 2.7600392e+05
+-1.7292832e+05 -1.1417726e+05 3.1735024e+05
+-1.0833024e+05 -5.9887059e+04 3.4796500e+05
+-4.7232504e+04 -1.9009850e+04 3.6311536e+05
+-1.6368472e+03 -1.7067842e+03 3.6263131e+05
+-1.1611894e+03 -7.6296783e+02 3.6245481e+05
+-2.1954703e+03 -5.0346630e+02 3.6303697e+05
+-2.7398247e+03 -4.2023014e+02 3.6300168e+05
+4.2491542e+04 -3.0804856e+03 2.9660682e+05
+1.8517540e+03 7.6380836e+02 0.0000000e+00
+-1.5621668e-01 -9.1786175e-02 -1.1935964e-02
+-3.1461137e+00 -1.7832115e+00 -1.2453429e-01
+-5.7418463e+01 -3.1633510e+01 -6.1156363e-01
+-1.0461392e+03 -5.6532170e+02 2.1365266e+00
+-4.1145826e+04 -2.0222881e+04 4.6136866e+03
+-1.1832017e+05 -6.7552086e+04 1.4207578e+04
+-2.1064598e+05 -1.2148138e+05 3.1395127e+04
+-2.9080703e+05 -1.6469954e+05 5.6869095e+04
+-3.4377222e+05 -1.8860041e+05 9.0330250e+04
+-3.6784844e+05 -1.9334171e+05 1.3125855e+05
+-3.6830432e+05 -1.8371077e+05 1.7892158e+05
+-3.5030618e+05 -1.6426181e+05 2.3210362e+05
+-3.1594576e+05 -1.3738354e+05 2.8873855e+05
+-2.6555897e+05 -1.0466794e+05 3.4536249e+05
+-2.0064980e+05 -6.9154151e+04 3.9652751e+05
+-1.2634467e+05 -3.5949097e+04 4.3492110e+05
+-5.5355171e+04 -1.1066083e+04 4.5465904e+05
+-1.9396703e+03 -9.3697619e+02 4.5456400e+05
+-1.4304184e+03 -4.2676746e+02 4.5456893e+05
+-2.7112849e+03 -2.7538955e+02 4.5534508e+05
+-3.3457669e+03 -2.2314519e+02 4.5513634e+05
+5.3532726e+04 -2.2114897e+03 3.7113533e+05
+-1.1649018e+03 5.5989837e+02 0.0000000e+00
+-1.6663326e-01 -2.8265419e-02 1.6542406e-02
+-3.3492512e+00 -5.5435544e-01 3.7722643e-01
+-6.0986357e+01 -9.8964887e+00 7.1897014e+00
+-1.1086914e+03 -1.7727949e+02 1.3098774e+02
+-4.3577686e+04 -6.7056371e+03 5.8400180e+03
+-1.2598864e+05 -2.2624082e+04 1.7001341e+04
+-2.2492449e+05 -4.0795033e+04 3.6351242e+04
+-3.1109794e+05 -5.5343463e+04 6.4898345e+04
+-3.6828514e+05 -6.3372966e+04 1.0245954e+05
+-3.9454440e+05 -6.4948666e+04 1.4843144e+05
+-3.9543787e+05 -6.1687622e+04 2.0191594e+05
+-3.7648506e+05 -5.5127234e+04 2.6148273e+05
+-3.3994591e+05 -4.6077450e+04 3.2477556e+05
+-2.8617314e+05 -3.5075902e+04 3.8794574e+05
+-2.1667873e+05 -2.3138384e+04 4.4505460e+05
+-1.3677241e+05 -1.1974763e+04 4.8817229e+05
+-6.0060414e+04 -3.6340940e+03 5.1064353e+05
+-2.1748984e+03 -3.0463984e+02 5.1077980e+05
+-1.6974594e+03 -1.4508001e+02 5.1095512e+05
+-3.1935952e+03 -9.6552487e+01 5.1202600e+05
+-3.9879542e+03 -7.8487321e+01 5.1203315e+05
+6.0285596e+04 -6.7074212e+02 4.1589199e+05
+7.5043157e+02 2.1817473e+02 0.0000000e+00
+-1.6999084e-01 2.8265419e-02 2.4920479e-02
+-3.4147476e+00 5.5435544e-01 5.3245996e-01
+-6.2139124e+01 9.8964887e+00 9.7513356e+00
+-1.1289668e+03 1.7727949e+02 1.7502410e+02
+-4.4360798e+04 6.7056371e+03 6.2523053e+03
+-1.2847565e+05 2.2624082e+04 1.7952546e+04
+-2.2957610e+05 4.0795033e+04 3.8034492e+04
+-3.1772686e+05 5.5343463e+04 6.7609388e+04
+-3.7630319e+05 6.3372966e+04 1.0653461e+05
+-4.0327302e+05 6.4948666e+04 1.5417814e+05
+-4.0429179e+05 6.1687622e+04 2.0958369e+05
+-3.8500014e+05 5.5127234e+04 2.7124723e+05
+-3.4772483e+05 4.6077450e+04 3.3671668e+05
+-2.9283566e+05 3.5075902e+04 4.0202048e+05
+-2.2185134e+05 2.3138384e+04 4.6106619e+05
+-1.4013491e+05 1.1974763e+04 5.0572389e+05
+-6.1579094e+04 3.6340940e+03 5.2907855e+05
+-2.2674404e+03 3.0463984e+02 5.2928624e+05
+-1.8135571e+03 1.4508001e+02 5.2952299e+05
+-3.3980827e+03 9.6551775e+01 5.3071276e+05
+-4.2742752e+03 7.8447235e+01 5.3083961e+05
+6.2480523e+04 6.7017102e+02 4.3080016e+05
+2.4788548e+03 -2.1805556e+02 0.0000000e+00
+-1.6663326e-01 9.1786175e-02 1.6542406e-02
+-3.3492512e+00 1.7832115e+00 3.7722643e-01
+-6.0986357e+01 3.1633510e+01 7.1897014e+00
+-1.1086914e+03 5.6532170e+02 1.3098774e+02
+-4.3577686e+04 2.0222881e+04 5.8400180e+03
+-1.2598864e+05 6.7552086e+04 1.7001341e+04
+-2.2492449e+05 1.2148138e+05 3.6351242e+04
+-3.1109794e+05 1.6469954e+05 6.4898345e+04
+-3.6828514e+05 1.8860041e+05 1.0245954e+05
+-3.9454440e+05 1.9334171e+05 1.4843144e+05
+-3.9543787e+05 1.8371077e+05 2.0191594e+05
+-3.7648506e+05 1.6426181e+05 2.6148273e+05
+-3.3994591e+05 1.3738354e+05 3.2477556e+05
+-2.8617314e+05 1.0466794e+05 3.8794574e+05
+-2.1667873e+05 6.9154151e+04 4.4505460e+05
+-1.3677241e+05 3.5949097e+04 4.8817229e+05
+-6.0060414e+04 1.1066083e+04 5.1064353e+05
+-2.1748984e+03 9.3697619e+02 5.1077980e+05
+-1.6974593e+03 4.2676749e+02 5.1095512e+05
+-3.1935947e+03 2.7538972e+02 5.1202600e+05
+-3.9879191e+03 2.2313898e+02 5.1203311e+05
+6.0286445e+04 2.2107923e+03 4.1589131e+05
+7.5087106e+02 -5.5975421e+02 0.0000000e+00
+-1.5621668e-01 1.7947512e-01 -1.1935964e-02
+-3.1461137e+00 3.4025312e+00 -1.2453429e-01
+-5.7418463e+01 5.9242123e+01 -6.1156363e-01
+-1.0461392e+03 1.0498639e+03 2.1365266e+00
+-4.1145826e+04 3.4003896e+04 4.6136866e+03
+-1.1832017e+05 1.1132182e+05 1.4207578e+04
+-2.1064598e+05 1.9916920e+05 3.1395127e+04
+-2.9080703e+05 2.6972184e+05 5.6869095e+04
+-3.4377222e+05 3.0890194e+05 9.0330250e+04
+-3.6784844e+05 3.1684085e+05 1.3125855e+05
+-3.6830432e+05 3.0129806e+05 1.7892158e+05
+-3.5030618e+05 2.6966871e+05 2.3210362e+05
+-3.1594576e+05 2.2580417e+05 2.8873855e+05
+-2.6555897e+05 1.7229563e+05 3.4536249e+05
+-2.0064980e+05 1.1417726e+05 3.9652751e+05
+-1.2634467e+05 5.9887059e+04 4.3492110e+05
+-5.5355171e+04 1.9009850e+04 4.5465904e+05
+-1.9396703e+03 1.7067842e+03 4.5456400e+05
+-1.4304184e+03 7.6296793e+02 4.5456893e+05
+-2.7112841e+03 5.0346932e+02 4.5534508e+05
+-3.3457280e+03 4.2031720e+02 4.5513621e+05
+5.3534769e+04 3.0844931e+03 3.7113489e+05
+-1.1650315e+03 -7.6369355e+02 0.0000000e+00
+-1.3758311e-01 3.2244787e-01 -7.5041828e-02
+-2.7814677e+00 5.8355034e+00 -1.1519451e+00
+-5.1017841e+01 9.7169136e+01 -1.4544458e+01
+-9.3445721e+02 1.6765260e+03 -1.9795553e+02
+-3.6802438e+04 4.7981360e+04 2.6568260e+03
+-1.0489956e+05 1.5244447e+05 9.8742644e+03
+-1.8591500e+05 2.7086166e+05 2.3667748e+04
+-2.5588164e+05 3.6633342e+05 4.4206194e+04
+-3.0172218e+05 4.1968632e+05 7.1027881e+04
+-3.2209351e+05 4.3081947e+05 1.0375142e+05
+-3.2173385e+05 4.1011711e+05 1.4189594e+05
+-3.0524116e+05 3.6751566e+05 1.8458076e+05
+-2.7450198e+05 3.0815631e+05 2.3021815e+05
+-2.2989801e+05 2.3556025e+05 2.7600392e+05
+-1.7292832e+05 1.5669524e+05 3.1735024e+05
+-1.0833024e+05 8.3221098e+04 3.4796500e+05
+-4.7232504e+04 2.7702158e+04 3.6311536e+05
+-1.6368472e+03 2.8048143e+03 3.6263131e+05
+-1.1611895e+03 1.2674421e+03 3.6245481e+05
+-2.1954718e+03 8.1565555e+02 3.6303697e+05
+-2.7398646e+03 6.0475390e+02 3.6300184e+05
+4.2489015e+04 2.9575535e+03 2.9660815e+05
+1.8519983e+03 1.7571929e+03 0.0000000e+00
+-1.0907132e-01 5.8925972e-01 -2.1137113e-01
+-2.2148320e+00 1.0047228e+01 -3.3118387e+00
+-4.0962171e+01 1.5406115e+02 -3.9916534e+01
+-7.5831159e+02 2.4662277e+03 -4.5861863e+02
+-3.0068215e+04 6.1496604e+04 2.5076946e+02
+-8.4948735e+04 1.8821482e+05 4.8025125e+03
+-1.4981051e+05 3.3201180e+05 1.4489841e+04
+-2.0541464e+05 4.4860192e+05 2.8853593e+04
+-2.4134155e+05 5.1426760e+05 4.7302143e+04
+-2.5664227e+05 5.2841607e+05 6.9659511e+04
+-2.5524963e+05 5.0355477e+05 9.5751072e+04
+-2.4098017e+05 4.5172328e+05 1.2511499e+05
+-2.1550434e+05 3.7913250e+05 1.5679622e+05
+-1.7930901e+05 2.9016315e+05 1.8888104e+05
+-1.3381988e+05 1.9359205e+05 2.1794766e+05
+-8.3052381e+04 1.0414489e+05 2.3896277e+05
+-3.5818920e+04 3.6818642e+04 2.4822792e+05
+-1.2834251e+03 4.4497677e+03 2.4715696e+05
+-9.3486211e+02 2.0908748e+03 2.4674350e+05
+-1.7328513e+03 1.2610416e+03 2.4721945e+05
+-2.2705259e+03 7.6889209e+02 2.4763552e+05
+2.8990804e+04 4.3649523e+03 1.9885338e+05
+7.5221603e+03 7.0652983e+03 0.0000000e+00
+-7.1321084e-02 1.1054490e+00 -4.7850694e-01
+-1.4401031e+00 1.8304629e+01 -7.9864999e+00
+-2.6763979e+01 2.5750002e+02 -9.7658424e+01
+-5.0249143e+02 3.5443594e+03 -9.1924044e+02
+-2.0481936e+04 7.2633702e+04 -1.9569174e+03
+-5.8213174e+04 2.1439898e+05 4.2080163e+02
+-1.0260129e+05 3.7640187e+05 6.0466322e+03
+-1.4029292e+05 5.0854894e+05 1.4087908e+04
+-1.6410007e+05 5.8355557e+05 2.3967694e+04
+-1.7348456e+05 6.0015022e+05 3.5757498e+04
+-1.7130386e+05 5.7233700e+05 4.9557425e+04
+-1.6038082e+05 5.1365190e+05 6.5325560e+04
+-1.4211486e+05 4.3106537e+05 8.2828998e+04
+-1.1703657e+05 3.2968485e+05 1.0120218e+05
+-8.6265860e+04 2.1978444e+05 1.1841766e+05
+-5.2647542e+04 1.1888557e+05 1.3078323e+05
+-2.2069071e+04 4.4509512e+04 1.3472198e+05
+-8.4810278e+02 6.6036942e+03 1.3303653e+05
+-6.7917088e+02 3.0593526e+03 1.3250588e+05
+-1.2288114e+03 1.7702039e+03 1.3286025e+05
+-1.7156250e+03 1.0479368e+03 1.3344652e+05
+1.6193658e+04 6.3969844e+03 1.0296113e+05
+8.7970687e+03 8.3814978e+03 0.0000000e+00
+-3.3038610e-02 1.9211555e+00 -7.9778738e-01
+-6.2384725e-01 3.3113193e+01 -1.5278616e+01
+-1.1109436e+01 4.6886743e+02 -2.2089922e+02
+-2.0568928e+02 5.7756797e+03 -2.3450102e+03
+-9.1886689e+03 7.7563698e+04 -2.6765841e+03
+-2.8156666e+04 2.2728516e+05 -1.7012768e+03
+-5.0647103e+04 3.9895847e+05 4.6770137e+02
+-6.9535060e+04 5.3935761e+05 3.4619524e+03
+-8.1011355e+04 6.1966037e+05 6.6978690e+03
+-8.4877000e+04 6.3778921e+05 1.0347814e+04
+-8.2704484e+04 6.0849441e+05 1.4546159e+04
+-7.6194985e+04 5.4604231e+05 1.9464130e+04
+-6.6432024e+04 4.5778225e+05 2.5470524e+04
+-5.3825620e+04 3.4933077e+05 3.2659636e+04
+-3.8863132e+04 2.3157576e+05 4.0635405e+04
+-2.2885261e+04 1.2374522e+05 4.7770302e+04
+-8.7645410e+03 4.6794948e+04 5.0301447e+04
+-3.9110682e+02 8.4887653e+03 4.8693986e+04
+-3.7529149e+02 2.9370764e+03 4.9141296e+04
+-6.7534905e+02 1.4854487e+03 5.0032016e+04
+-1.0088765e+03 8.8020854e+02 5.0952676e+04
+6.9812275e+03 4.7553166e+03 3.9062607e+04
+5.8202369e+03 4.7705891e+03 0.0000000e+00
+-1.0044381e-02 2.4590152e+00 -5.3357397e-01
+-1.3497795e-01 4.4727543e+01 -1.2111294e+01
+-1.6375300e+00 6.6612356e+02 -2.0921635e+02
+-2.0769470e+01 8.4003430e+03 -2.8336085e+03
+-2.4933066e+02 7.8206559e+04 -3.4534449e+03
+-8.1968363e+02 2.2691689e+05 -2.9823502e+03
+-1.6044659e+03 3.9793726e+05 -1.6659184e+03
+-2.3810937e+03 5.3856027e+05 -2.6210937e+02
+-2.9824874e+03 6.1984670e+05 5.3536349e+02
+-3.2898110e+03 6.3855749e+05 1.0572163e+03
+-3.2043879e+03 6.0949835e+05 1.3963072e+03
+-2.8153857e+03 5.4694718e+05 1.6345994e+03
+-2.3575058e+03 4.5824992e+05 2.0764838e+03
+-1.9181348e+03 3.4934664e+05 2.8407410e+03
+-1.4337109e+03 2.3100350e+05 4.0945573e+03
+-8.8907583e+02 1.2238164e+05 5.9676969e+03
+-3.8998482e+02 4.4965249e+04 8.0784651e+03
+-1.1935298e+02 8.1956906e+03 8.4914376e+03
+-1.3387577e+02 1.4802206e+03 1.0097164e+04
+-2.5106525e+02 4.2029196e+02 1.1444228e+04
+-4.1853590e+02 2.2811238e+02 1.2506201e+04
+2.1858791e+03 1.4211071e+03 1.0724569e+04
+2.9549913e+03 1.5876282e+03 0.0000000e+00
+-5.5773790e-03 2.0155886e+00 4.4364236e-01
+-7.1037101e-02 3.9063182e+01 6.0764670e+00
+-8.6226497e-01 6.2348918e+02 4.7884639e+01
+-1.1653801e+01 8.3818872e+03 5.4333869e+01
+-1.2451755e+02 7.9429503e+04 -1.2678400e+03
+-4.2272997e+02 2.2755098e+05 -2.1486529e+03
+-9.0451284e+02 3.9676570e+05 -1.2510841e+03
+-1.4815852e+03 5.3731054e+05 -5.0799042e+01
+-2.0422807e+03 6.1978572e+05 4.1703397e+02
+-2.4004306e+03 6.3913129e+05 7.0323120e+02
+-2.3276398e+03 6.1034483e+05 8.2638529e+02
+-1.9129699e+03 5.4767841e+05 8.1199234e+02
+-1.5107103e+03 4.5852373e+05 1.0016444e+03
+-1.2438921e+03 3.4943254e+05 1.3517169e+03
+-9.8814464e+02 2.3094691e+05 1.9121097e+03
+-6.7666881e+02 1.2207198e+05 2.6978071e+03
+-3.5988392e+02 4.5305112e+04 2.6826965e+03
+-1.2994791e+02 9.5565564e+03 1.4673438e+03
+-6.2491565e+01 1.4971301e+03 1.5328559e+03
+-7.8893889e+01 2.1373700e+02 1.8459161e+03
+-1.4001355e+02 5.7327716e+01 2.1785021e+03
+4.0501476e+02 2.0448629e+02 1.7427589e+03
+7.4178420e+02 3.2325345e+02 0.0000000e+00
+-5.6668831e-03 8.3285090e-01 1.1825706e+00
+-1.0113767e-01 1.8075586e+01 2.2145496e+01
+-1.6779368e+00 3.3666178e+02 3.0836046e+02
+-2.6471879e+01 5.6852377e+03 2.9960347e+03
+-3.0970371e+02 8.1495119e+04 8.5884156e+02
+-9.6015851e+02 2.2975869e+05 -1.4924313e+03
+-1.8991383e+03 3.9619280e+05 -9.2524224e+02
+-2.9393608e+03 5.3671590e+05 1.6542314e+02
+-3.8913504e+03 6.2091359e+05 3.4667010e+02
+-4.4601993e+03 6.4102260e+05 5.0778502e+02
+-4.2953332e+03 6.1249952e+05 5.4037049e+02
+-3.5636118e+03 5.4949300e+05 4.3146619e+02
+-2.8442881e+03 4.5951569e+05 6.4920640e+02
+-2.3266076e+03 3.5022017e+05 9.2867967e+02
+-1.8115851e+03 2.3178356e+05 1.1596852e+03
+-1.2164787e+03 1.2261378e+05 1.5371765e+03
+-6.4582026e+02 4.6107564e+04 1.3365579e+03
+-2.4167485e+02 1.0763489e+04 4.0299716e+02
+-7.6314866e+01 1.7904410e+03 2.1310701e+02
+-3.3569572e+01 2.3610601e+02 2.4027321e+02
+-4.0509606e+01 3.2491888e+01 3.1261556e+02
+-2.5754328e+01 2.0636170e+01 2.5166938e+01
+-5.6877875e+02 6.3671978e+01 0.0000000e+00
+-3.1449048e-03 0.0000000e+00 8.3283510e-01
+-7.0113825e-02 0.0000000e+00 1.8899882e+01
+-1.4244193e+00 0.0000000e+00 3.5526251e+02
+-2.6873828e+01 0.0000000e+00 6.0314994e+03
+-3.5585919e+02 8.4092693e+04 3.0669281e+03
+-9.9952149e+02 2.3262628e+05 -8.8167569e+02
+-2.0631841e+03 3.9452142e+05 -7.2327679e+02
+-3.4017362e+03 5.3431879e+05 4.2305312e+02
+-4.7833931e+03 6.2073231e+05 3.4227309e+02
+-5.7463644e+03 6.4186220e+05 4.0181626e+02
+-5.6209859e+03 6.1378494e+05 4.0738165e+02
+-4.5638637e+03 5.5050404e+05 1.7172650e+02
+-3.5500040e+03 4.5951890e+05 4.4895769e+02
+-2.9643032e+03 3.5032355e+05 7.6538656e+02
+-2.4353514e+03 2.3263940e+05 7.4547275e+02
+-1.7266606e+03 1.2345629e+05 8.8789556e+02
+-9.7207405e+02 4.6969789e+04 7.9095284e+02
+-4.0439285e+02 1.1732691e+04 2.2268015e+02
+-1.3507895e+02 2.1141115e+03 5.5369399e+01
+-3.8346200e+01 3.0438070e+02 3.2325235e+01
+-1.3653303e+01 3.5116364e+01 3.9484454e+01
+-3.4874631e+01 0.0000000e+00 -3.9747144e+01
+-3.7868377e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+8.7966353e+03 5.7250137e+04 1.3758078e+04
+3.0073363e+04 1.9798721e+05 5.2017554e+03
+5.2343269e+04 3.2954981e+05 -5.6623731e+03
+6.9118218e+04 4.2626492e+05 -9.4664353e+02
+7.7267211e+04 4.9714555e+05 2.6051894e+03
+7.5717707e+04 5.1915380e+05 2.6533721e+03
+6.9114659e+04 4.9693114e+05 5.0098881e+03
+6.2715850e+04 4.4996751e+05 4.2407515e+03
+5.5024450e+04 3.7612279e+05 2.0671043e+03
+4.2792781e+04 2.8217851e+05 2.9918535e+03
+2.7939378e+04 1.8378899e+05 4.9756876e+03
+1.5024382e+04 9.5335723e+04 5.7625983e+03
+6.4374999e+03 3.5958175e+04 4.0974558e+03
+1.9985238e+03 9.6945890e+03 1.3865431e+03
+3.3936330e+02 1.6924354e+03 2.3899014e+02
+-2.2716055e+01 7.3278549e+01 1.1962526e+01
+-3.4623892e+01 -3.7765910e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.3324235e+02 0.0000000e+00 8.4495892e+03
+-6.9558198e+03 0.0000000e+00 1.8090756e+04
+-1.7646222e+04 0.0000000e+00 4.4870229e+03
+-1.7493204e+04 0.0000000e+00 -6.2506098e+03
+-4.0300041e+03 0.0000000e+00 8.5089381e+02
+9.7200668e+03 0.0000000e+00 2.1475441e+03
+1.4790091e+04 0.0000000e+00 1.4607051e+02
+9.0792899e+03 0.0000000e+00 3.7704176e+03
+2.0996806e+02 0.0000000e+00 2.8568970e+03
+1.3406802e+03 0.0000000e+00 7.7305326e+02
+9.0445740e+03 0.0000000e+00 5.3715556e+03
+1.0192458e+04 0.0000000e+00 7.7709918e+03
+5.8332116e+03 0.0000000e+00 4.3286337e+03
+2.6891715e+03 0.0000000e+00 1.3097829e+03
+7.4349576e+02 0.0000000e+00 2.8900107e+02
+-4.7055425e+02 0.0000000e+00 5.3532962e+01
+-3.7295271e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-4.6672149e+04 -1.3672429e+05 2.0791605e+04
+-1.6672550e+05 -4.7369136e+05 4.5710314e+04
+-2.9853544e+05 -7.9432933e+05 1.6456900e+04
+-4.0297605e+05 -1.0197059e+06 -2.8419757e+03
+-4.6720759e+05 -1.1592299e+06 1.8383244e+04
+-4.7026225e+05 -1.1792130e+06 1.2266602e+04
+-4.2947125e+05 -1.1145862e+06 -5.2168551e+03
+-3.8873240e+05 -1.0193394e+06 9.4943358e+03
+-3.4445964e+05 -8.7179065e+05 2.3584104e+04
+-2.6998923e+05 -6.6138499e+05 2.3790443e+04
+-1.7962278e+05 -4.2681325e+05 3.0892397e+04
+-1.0487446e+05 -2.1944278e+05 3.3281658e+04
+-5.4333661e+04 -8.3411414e+04 2.2094568e+04
+-2.3350576e+04 -2.2131455e+04 1.0588542e+04
+-8.7665544e+03 -3.2841838e+03 3.7290985e+03
+-3.7319704e+03 -1.3454438e+02 6.9563445e+02
+-1.1428758e+03 -9.4003655e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-2.3451785e+03 -1.5259137e+05 2.7010279e+04
+-1.2853262e+04 -4.1769824e+05 1.3947233e+04
+-2.1489077e+04 -6.9947304e+05 -7.0737169e+03
+-2.0290957e+04 -9.3592676e+05 -1.4430138e+03
+-1.0309958e+04 -1.0747773e+06 1.6808940e+03
+1.2541669e+03 -1.1018890e+06 -1.1792194e+03
+2.6548043e+03 -1.0541468e+06 4.8439520e+03
+-5.0611679e+03 -9.5369308e+05 6.9802583e+03
+-8.5236514e+03 -8.0300878e+05 1.7482209e+03
+-3.7829927e+03 -6.1438400e+05 1.3238495e+03
+2.5021606e+03 -4.0690915e+05 6.8572576e+03
+5.5921984e+03 -2.1311802e+05 9.9655866e+03
+4.8860641e+03 -7.8265797e+04 6.3760069e+03
+2.6807604e+03 -1.7991191e+04 1.5563428e+03
+1.1208853e+03 -2.6715107e+03 1.6085721e+02
+2.3218890e+02 -2.4330693e+02 1.1938932e+01
+-2.1391726e+01 -1.0657908e+01 0.0000000e+00
+0 0 0
+0 0 0
+3.7078852e-03 -1.6042033e+00 1.5973506e+00
+1.8634475e-01 -3.4540404e+01 3.5881297e+01
+5.5977682e+00 -6.3686447e+02 6.6572358e+02
+1.3372549e+02 -1.0624608e+04 1.1129732e+04
+2.6201457e+03 -1.5002849e+05 5.5910971e+03
+7.6165803e+03 -4.1891289e+05 -1.8102524e+03
+1.3577436e+04 -7.1522418e+05 -1.6996578e+03
+1.8613311e+04 -9.5972456e+05 8.3124292e+01
+2.1184920e+04 -1.1005026e+06 -1.5992684e+02
+2.0899768e+04 -1.1292426e+06 5.4757745e+02
+1.9269275e+04 -1.0795885e+06 1.0991475e+03
+1.7698587e+04 -9.7512993e+05 2.7362965e+02
+1.5561365e+04 -8.2190898e+05 6.2467812e+01
+1.2100690e+04 -6.2979926e+05 4.1276392e+02
+8.0904688e+03 -4.1750408e+05 4.8186907e+02
+4.5993035e+03 -2.1983678e+05 8.7468929e+02
+2.0250411e+03 -8.1289477e+04 9.0138389e+02
+5.6269996e+02 -1.8202733e+04 1.4591228e+02
+8.5558390e+01 -2.7574750e+03 1.1187074e+01
+2.3218565e+00 -2.9152423e+02 1.8649227e+01
+-4.2328707e-01 -1.9005147e+01 1.3739726e+01
+-9.3033179e+00 -8.7545114e+00 -3.1757757e+00
+-1.1250872e+03 -7.3177504e+02 0.0000000e+00
+3.0255332e-03 -3.8940449e+00 2.2811492e+00
+2.6982963e-01 -7.4956279e+01 4.2326056e+01
+7.5196634e+00 -1.1863396e+03 5.8260364e+02
+1.3941607e+02 -1.5793069e+04 5.5851769e+03
+1.6276327e+03 -1.4796427e+05 1.5836159e+03
+4.8344552e+03 -4.2022426e+05 -2.8996022e+03
+8.6093800e+03 -7.2665392e+05 -1.9783774e+03
+1.1655081e+04 -9.7616016e+05 -1.3721512e+02
+1.3065232e+04 -1.1177760e+06 1.7958923e+02
+1.2715729e+04 -1.1471147e+06 8.7571076e+02
+1.1691797e+04 -1.0959454e+06 1.2454878e+03
+1.0830934e+04 -9.8905000e+05 7.7101496e+02
+9.5747781e+03 -8.3431893e+05 7.6189893e+02
+7.4196426e+03 -6.3995561e+05 1.1719997e+03
+4.9103364e+03 -4.2470510e+05 1.6510982e+03
+2.7340766e+03 -2.2455825e+05 2.4220158e+03
+1.1454542e+03 -8.2846196e+04 2.1874640e+03
+2.7444698e+02 -1.7140279e+04 6.0888986e+02
+2.9362772e+01 -2.5586861e+03 3.0442145e+02
+-4.5934672e+00 -3.0548304e+02 2.8940083e+02
+2.4559727e+00 -8.3953466e+00 2.3581442e+02
+2.3489036e+02 -1.3798760e+02 1.0394837e+02
+-4.0067978e+03 -4.1428967e+03 0.0000000e+00
+-5.6932008e-03 -4.7626326e+00 8.6870349e-01
+1.6197679e-01 -8.6120121e+01 1.1799532e+01
+5.8164709e+00 -1.2733736e+03 9.2154741e+01
+1.0315578e+02 -1.5924002e+04 1.0827807e+02
+1.0472022e+03 -1.4670870e+05 -2.3190099e+03
+3.1377334e+03 -4.2205550e+05 -4.0482313e+03
+5.5632023e+03 -7.3468128e+05 -2.4885863e+03
+7.4868017e+03 -9.8723023e+05 -3.8690116e+02
+8.3746356e+03 -1.1290322e+06 4.5236281e+02
+8.1551660e+03 -1.1584329e+06 1.2149948e+03
+7.4862698e+03 -1.1061839e+06 1.6395928e+03
+6.8980847e+03 -9.9768249e+05 1.4610318e+03
+6.0738396e+03 -8.4201207e+05 1.5696227e+03
+4.7082710e+03 -6.4650187e+05 2.1637194e+03
+3.1225006e+03 -4.2991204e+05 3.2600090e+03
+1.7341961e+03 -2.2850476e+05 4.7956576e+03
+7.1127673e+02 -8.3995607e+04 4.8739080e+03
+1.6002696e+02 -1.5179058e+04 2.6227120e+03
+3.5265007e+01 -2.6436006e+03 2.6098699e+03
+3.3382996e+01 -6.2951473e+02 2.8216244e+03
+9.4244678e+01 -1.3803294e+02 2.7169953e+03
+1.1206057e+03 -1.7159544e+03 3.5758137e+03
+-9.3629943e+03 -1.1663687e+04 0.0000000e+00
+-2.8449529e-02 -3.7266539e+00 -1.0175735e+00
+-2.5065492e-01 -6.3921386e+01 -2.3100631e+01
+-7.0845625e-01 -9.0005130e+02 -3.9735199e+02
+1.2814865e+01 -1.1022577e+04 -5.3323616e+03
+1.2952799e+02 -1.4606254e+05 -6.3573798e+03
+4.2084597e+02 -4.2411642e+05 -5.5369954e+03
+7.0238386e+02 -7.3934308e+05 -3.1820454e+03
+8.6613262e+02 -9.9298029e+05 -6.7921333e+02
+8.2044131e+02 -1.1342652e+06 7.5085265e+02
+5.1857870e+02 -1.1633186e+06 1.8281601e+03
+2.3223348e+02 -1.1103544e+06 2.5620029e+03
+1.8943839e+02 -1.0010362e+06 2.9109086e+03
+1.7855437e+02 -8.4522208e+05 3.5848538e+03
+8.8345534e+00 -6.4983514e+05 4.9911459e+03
+-1.6208101e+02 -4.3362005e+05 7.4275313e+03
+-1.5374350e+02 -2.3289246e+05 1.1079893e+04
+-1.3085085e+00 -8.8493534e+04 1.5189143e+04
+1.1640870e+02 -1.5900583e+04 1.5674907e+04
+1.6927781e+02 -5.3039552e+03 1.8032108e+04
+2.9405731e+02 -2.4273567e+03 1.9284828e+04
+5.9865415e+02 -1.0241946e+03 1.9153628e+04
+2.6421629e+03 -7.3798202e+03 2.4355725e+04
+-2.4129501e+04 -2.3297243e+04 0.0000000e+00
+-8.5122118e-02 -2.1366458e+00 -1.5379247e+00
+-1.4939213e+00 -3.5162794e+01 -2.9426442e+01
+-2.5043052e+01 -4.9062488e+02 -4.2491925e+02
+-4.5317683e+02 -6.6833800e+03 -4.5166284e+03
+-1.9069200e+04 -1.3585692e+05 -4.8417143e+03
+-5.6951234e+04 -3.9711074e+05 -3.0528282e+03
+-1.0087204e+05 -6.9287875e+05 7.0777625e+02
+-1.3690881e+05 -9.3078025e+05 5.8814919e+03
+-1.5809016e+05 -1.0628071e+06 1.1502265e+04
+-1.6490280e+05 -1.0898136e+06 1.8023095e+04
+-1.6096630e+05 -1.0397068e+06 2.5637333e+04
+-1.4925766e+05 -9.3690395e+05 3.4567740e+04
+-1.3127313e+05 -7.9150315e+05 4.5689913e+04
+-1.0749840e+05 -6.0992846e+05 5.9456021e+04
+-7.8730565e+04 -4.0950562e+05 7.5209019e+04
+-4.7326424e+04 -2.2289748e+05 8.9655208e+04
+-1.8056398e+04 -8.4026277e+04 9.4479808e+04
+3.2282580e+01 -1.2163361e+04 9.0319196e+04
+7.5610565e+02 -5.3929346e+03 8.9276779e+04
+1.2130080e+03 -2.7794148e+03 8.7740477e+04
+2.1354026e+03 -1.0751034e+03 8.4647057e+04
+4.8948767e+03 -1.0996490e+04 9.0348658e+04
+-5.6197616e+04 -3.5883293e+04 0.0000000e+00
+-1.6232874e-01 -1.1254051e+00 -9.2023298e-01
+-3.1773717e+00 -1.8999580e+01 -1.5346179e+01
+-5.7524272e+01 -2.8751144e+02 -1.8769932e+02
+-1.0603189e+03 -4.5340464e+03 -1.7792055e+03
+-4.0941726e+04 -1.1344051e+05 -3.7358288e+03
+-1.1562350e+05 -3.4380355e+05 3.6730551e+02
+-2.0219862e+05 -6.0295017e+05 1.0036058e+04
+-2.7451304e+05 -8.1033188e+05 2.3807805e+04
+-3.1920664e+05 -9.2467120e+05 4.0778425e+04
+-3.3632769e+05 -9.4748380e+05 6.1291706e+04
+-3.3229367e+05 -9.0316687e+05 8.5741570e+04
+-3.1259990e+05 -8.1323602e+05 1.1429272e+05
+-2.7934644e+05 -6.8685787e+05 1.4687902e+05
+-2.3284466e+05 -5.2952528e+05 1.8228394e+05
+-1.7460907e+05 -3.5577128e+05 2.1689281e+05
+-1.0918872e+05 -1.9261027e+05 2.4314677e+05
+-4.5912511e+04 -6.8576532e+04 2.5154047e+05
+-2.0164649e+01 -8.0003524e+03 2.4654952e+05
+1.8469793e+03 -3.5215685e+03 2.4215200e+05
+2.8942649e+03 -1.7531521e+03 2.3700267e+05
+4.8420933e+03 -4.2994703e+02 2.2979996e+05
+5.0417335e+03 -6.9646552e+03 2.3692509e+05
+-1.0929801e+05 -3.6106337e+04 0.0000000e+00
+-2.3152724e-01 -6.0432678e-01 -3.9862243e-01
+-4.6109884e+00 -1.0799593e+01 -6.2024530e+00
+-8.3661632e+01 -1.7717584e+02 -7.3838590e+01
+-1.5217409e+03 -3.0122714e+03 -8.3218434e+02
+-5.7113439e+04 -8.7345706e+04 1.1823529e+02
+-1.6167338e+05 -2.7469341e+05 7.7327435e+03
+-2.8387097e+05 -4.8528279e+05 2.4125832e+04
+-3.8715546e+05 -6.5295735e+05 4.8492125e+04
+-4.5273827e+05 -7.4475422e+05 7.9971876e+04
+-4.8026372e+05 -7.6248526e+05 1.1859479e+05
+-4.7829082e+05 -7.2602586e+05 1.6449497e+05
+-4.5418566e+05 -6.5291648e+05 2.1738092e+05
+-4.1035943e+05 -5.5077673e+05 2.7615486e+05
+-3.4657507e+05 -4.2401493e+05 3.3791057e+05
+-2.6419744e+05 -2.8400281e+05 3.9651966e+05
+-1.6878371e+05 -1.5180546e+05 4.4144618e+05
+-7.3335977e+04 -5.0905888e+04 4.6129259e+05
+1.2369120e+02 -4.9155325e+03 4.5680065e+05
+3.2554548e+03 -2.0332136e+03 4.5112198e+05
+5.0890266e+03 -1.0190034e+03 4.4356596e+05
+8.3173516e+03 -2.4864206e+02 4.3279695e+05
+1.0174124e+02 -2.4840995e+03 4.5721093e+05
+-1.8200947e+05 -2.2344930e+04 0.0000000e+00
+-2.8123107e-01 -3.3048067e-01 -1.3019815e-01
+-5.5992678e+00 -6.1878177e+00 -1.9241731e+00
+-1.0102458e+02 -1.0629017e+02 -2.2803105e+01
+-1.8202439e+03 -1.8596491e+03 -2.8963866e+02
+-6.7462659e+04 -6.1270327e+04 4.2952039e+03
+-1.9317241e+05 -1.9839453e+05 1.6269176e+04
+-3.4140643e+05 -3.5291217e+05 3.9389989e+04
+-4.6790436e+05 -4.7552745e+05 7.3982808e+04
+-5.4969944e+05 -5.4228422e+05 1.1949006e+05
+-5.8598172e+05 -5.5481045e+05 1.7570347e+05
+-5.8674099e+05 -5.2772803e+05 2.4241279e+05
+-5.6064002e+05 -4.7394729e+05 3.1884245e+05
+-5.1028863e+05 -3.9918467e+05 4.0303704e+05
+-4.3489217e+05 -3.0670235e+05 4.9071860e+05
+-3.3527939e+05 -2.0463453e+05 5.7370139e+05
+-2.1709883e+05 -1.0803970e+05 6.3870422e+05
+-9.5700728e+04 -3.4589621e+04 6.7085618e+05
+4.2541649e+02 -2.9632375e+03 6.6684162e+05
+4.6964096e+03 -1.2377677e+03 6.6018858e+05
+7.3510150e+03 -6.8168107e+02 6.5030477e+05
+1.1907109e+04 -2.8820461e+02 6.3569740e+05
+-6.3665918e+03 -1.5663064e+03 6.8363771e+05
+-2.6049092e+05 -9.7964862e+03 0.0000000e+00
+-3.1326412e-01 -1.6717107e-01 -6.2621454e-03
+-6.2242756e+00 -3.2116053e+00 9.5687328e-02
+-1.1189543e+02 -5.6299343e+01 4.5818288e+00
+-2.0074755e+03 -9.9482836e+02 1.0109741e+02
+-7.3767352e+04 -3.6190954e+04 7.6432502e+03
+-2.1310194e+05 -1.1947568e+05 2.3506167e+04
+-3.7858784e+05 -2.1360880e+05 5.2144659e+04
+-5.2083958e+05 -2.8817225e+05 9.4822005e+04
+-6.1392942e+05 -3.2862423e+05 1.5131921e+05
+-6.5655439e+05 -3.3606246e+05 2.2127717e+05
+-6.5953142e+05 -3.1940949e+05 3.0418573e+05
+-6.3238422e+05 -2.8655226e+05 3.9886875e+05
+-5.7795557e+05 -2.4103968e+05 5.0273356e+05
+-4.9514944e+05 -1.8489091e+05 6.1051258e+05
+-3.8432237e+05 -1.2298652e+05 7.1253714e+05
+-2.5082670e+05 -6.4365026e+04 7.9334450e+05
+-1.1124246e+05 -2.0018487e+04 8.3466065e+05
+7.3173573e+02 -1.6441195e+03 8.3067012e+05
+5.8440278e+03 -7.4541587e+02 8.2290333e+05
+9.1517025e+03 -4.6823777e+02 8.1082690e+05
+1.4841055e+04 -2.8429178e+02 7.9263609e+05
+-8.5914285e+03 -7.0720935e+02 8.5390115e+05
+-3.2555369e+05 -3.2668322e+03 0.0000000e+00
+-3.3131165e-01 -5.1248482e-02 4.8755801e-02
+-6.5749118e+00 -9.9473960e-01 1.0575508e+00
+-1.1800756e+02 -1.7563956e+01 1.9343367e+01
+-2.1135850e+03 -3.1132692e+02 3.4073556e+02
+-7.7183283e+04 -1.1959664e+04 9.7150440e+03
+-2.2402307e+05 -3.9859028e+04 2.8132820e+04
+-3.9920670e+05 -7.1452178e+04 6.0258412e+04
+-5.5046873e+05 -9.6459093e+04 1.0791605e+05
+-6.5010860e+05 -1.1000319e+05 1.7111846e+05
+-6.9643246e+05 -1.1246866e+05 2.4941271e+05
+-7.0066106e+05 -1.0685231e+05 3.4207872e+05
+-6.7282568e+05 -9.5805538e+04 4.4767261e+05
+-6.1599589e+05 -8.0532307e+04 5.6321522e+05
+-5.2900493e+05 -6.1717744e+04 6.8287384e+05
+-4.1195486e+05 -4.0988394e+04 7.9615184e+05
+-2.6989785e+05 -2.1358040e+04 8.8627029e+05
+-1.1992295e+05 -6.5573050e+03 9.3267164e+05
+9.3145773e+02 -5.4186579e+02 9.2846303e+05
+6.5231618e+03 -2.6928747e+02 9.1976628e+05
+1.0209171e+04 -1.9238615e+02 9.0608766e+05
+1.6644005e+04 -1.4510281e+02 8.8531652e+05
+-6.3539999e+03 5.3158365e+01 9.5119276e+05
+-3.6683573e+05 -4.0191301e+02 0.0000000e+00
+-3.3718548e-01 5.1248482e-02 6.4697679e-02
+-6.6890275e+00 9.9473960e-01 1.3494984e+00
+-1.2000163e+02 1.7563956e+01 2.4084090e+01
+-2.1483317e+03 3.1132692e+02 4.2079508e+02
+-7.8265922e+04 1.1959664e+04 1.0406590e+04
+-2.2748687e+05 3.9859028e+04 2.9699752e+04
+-4.0578006e+05 7.1452178e+04 6.2999358e+04
+-5.5995647e+05 9.6459093e+04 1.1231078e+05
+-6.6172470e+05 1.1000319e+05 1.7772593e+05
+-7.0924236e+05 1.1246866e+05 2.5875796e+05
+-7.1384859e+05 1.0685231e+05 3.5461013e+05
+-6.8574504e+05 9.5805538e+04 4.6374395e+05
+-6.2809772e+05 8.0532307e+04 5.8305223e+05
+-5.3974328e+05 6.1717744e+04 7.0652435e+05
+-4.2071189e+05 4.0988394e+04 8.2340812e+05
+-2.7593864e+05 2.1358040e+04 9.1649576e+05
+-1.2263938e+05 6.5573050e+03 9.6444144e+05
+9.9756957e+02 5.4186579e+02 9.6009270e+05
+6.7393310e+03 2.6928749e+02 9.5100123e+05
+1.0542814e+04 1.9238368e+02 9.3667557e+05
+1.7236556e+04 1.4501642e+02 9.1487462e+05
+-4.5806215e+03 -5.5779108e+01 9.8204470e+05
+-3.8101699e+05 4.0242902e+02 0.0000000e+00
+-3.3131165e-01 1.6717107e-01 4.8755801e-02
+-6.5749118e+00 3.2116053e+00 1.0575508e+00
+-1.1800756e+02 5.6299343e+01 1.9343367e+01
+-2.1135850e+03 9.9482836e+02 3.4073556e+02
+-7.7183283e+04 3.6190954e+04 9.7150440e+03
+-2.2402307e+05 1.1947568e+05 2.8132820e+04
+-3.9920670e+05 2.1360880e+05 6.0258412e+04
+-5.5046873e+05 2.8817225e+05 1.0791605e+05
+-6.5010860e+05 3.2862423e+05 1.7111846e+05
+-6.9643246e+05 3.3606246e+05 2.4941271e+05
+-7.0066106e+05 3.1940949e+05 3.4207872e+05
+-6.7282568e+05 2.8655226e+05 4.4767261e+05
+-6.1599589e+05 2.4103968e+05 5.6321522e+05
+-5.2900493e+05 1.8489091e+05 6.8287384e+05
+-4.1195486e+05 1.2298652e+05 7.9615184e+05
+-2.6989785e+05 6.4365026e+04 8.8627029e+05
+-1.1992295e+05 2.0018487e+04 9.3267164e+05
+9.3145774e+02 1.6441195e+03 9.2846303e+05
+6.5231618e+03 7.4541594e+02 9.1976628e+05
+1.0209172e+04 4.6823933e+02 9.0608766e+05
+1.6644067e+04 2.8432386e+02 8.8531637e+05
+-6.3518436e+03 7.0873475e+02 9.5119015e+05
+-3.6683494e+05 3.2673891e+03 0.0000000e+00
+-3.1326412e-01 3.3048067e-01 -6.2621454e-03
+-6.2242756e+00 6.1878177e+00 9.5687328e-02
+-1.1189543e+02 1.0629017e+02 4.5818288e+00
+-2.0074755e+03 1.8596491e+03 1.0109741e+02
+-7.3767352e+04 6.1270327e+04 7.6432502e+03
+-2.1310194e+05 1.9839453e+05 2.3506167e+04
+-3.7858784e+05 3.5291217e+05 5.2144659e+04
+-5.2083958e+05 4.7552745e+05 9.4822005e+04
+-6.1392942e+05 5.4228422e+05 1.5131921e+05
+-6.5655439e+05 5.5481045e+05 2.2127717e+05
+-6.5953142e+05 5.2772803e+05 3.0418573e+05
+-6.3238422e+05 4.7394729e+05 3.9886875e+05
+-5.7795557e+05 3.9918467e+05 5.0273356e+05
+-4.9514944e+05 3.0670235e+05 6.1051258e+05
+-3.8432237e+05 2.0463453e+05 7.1253714e+05
+-2.5082670e+05 1.0803970e+05 7.9334450e+05
+-1.1124246e+05 3.4589621e+04 8.3466065e+05
+7.3173573e+02 2.9632376e+03 8.3067012e+05
+5.8440279e+03 1.2377679e+03 8.2290333e+05
+9.1517049e+03 6.8168529e+02 8.1082689e+05
+1.4841151e+04 2.8833948e+02 7.9263600e+05
+-8.5883406e+03 1.5707832e+03 8.5389706e+05
+-3.2555346e+05 9.7962685e+03 0.0000000e+00
+-2.8123107e-01 6.0432678e-01 -1.3019815e-01
+-5.5992678e+00 1.0799593e+01 -1.9241731e+00
+-1.0102458e+02 1.7717584e+02 -2.2803105e+01
+-1.8202439e+03 3.0122714e+03 -2.8963866e+02
+-6.7462659e+04 8.7345706e+04 4.2952039e+03
+-1.9317241e+05 2.7469341e+05 1.6269176e+04
+-3.4140643e+05 4.8528279e+05 3.9389989e+04
+-4.6790436e+05 6.5295735e+05 7.3982808e+04
+-5.4969944e+05 7.4475422e+05 1.1949006e+05
+-5.8598172e+05 7.6248526e+05 1.7570347e+05
+-5.8674099e+05 7.2602586e+05 2.4241279e+05
+-5.6064002e+05 6.5291648e+05 3.1884245e+05
+-5.1028863e+05 5.5077673e+05 4.0303704e+05
+-4.3489217e+05 4.2401493e+05 4.9071860e+05
+-3.3527939e+05 2.8400281e+05 5.7370139e+05
+-2.1709883e+05 1.5180546e+05 6.3870422e+05
+-9.5700728e+04 5.0905888e+04 6.7085618e+05
+4.2541649e+02 4.9155325e+03 6.6684162e+05
+4.6964097e+03 2.0332137e+03 6.6018858e+05
+7.3510166e+03 1.0190053e+03 6.5030477e+05
+1.1907176e+04 2.4868069e+02 6.3569739e+05
+-6.3639852e+03 2.4876129e+03 6.8363498e+05
+-2.6049073e+05 2.2344391e+04 0.0000000e+00
+-2.3152724e-01 1.1254051e+00 -3.9862243e-01
+-4.6109884e+00 1.8999580e+01 -6.2024530e+00
+-8.3661632e+01 2.8751144e+02 -7.3838590e+01
+-1.5217409e+03 4.5340464e+03 -8.3218434e+02
+-5.7113439e+04 1.1344051e+05 1.1823529e+02
+-1.6167338e+05 3.4380355e+05 7.7327435e+03
+-2.8387097e+05 6.0295017e+05 2.4125832e+04
+-3.8715546e+05 8.1033188e+05 4.8492125e+04
+-4.5273827e+05 9.2467120e+05 7.9971876e+04
+-4.8026372e+05 9.4748380e+05 1.1859479e+05
+-4.7829082e+05 9.0316687e+05 1.6449497e+05
+-4.5418566e+05 8.1323602e+05 2.1738092e+05
+-4.1035943e+05 6.8685787e+05 2.7615486e+05
+-3.4657507e+05 5.2952528e+05 3.3791057e+05
+-2.6419744e+05 3.5577128e+05 3.9651966e+05
+-1.6878371e+05 1.9261027e+05 4.4144618e+05
+-7.3335977e+04 6.8576532e+04 4.6129259e+05
+1.2369119e+02 8.0003524e+03 4.5680065e+05
+3.2554547e+03 3.5215685e+03 4.5112198e+05
+5.0890252e+03 1.7531528e+03 4.4356596e+05
+8.3173178e+03 4.3002839e+02 4.3279710e+05
+9.9748765e+01 6.9661625e+03 4.5720960e+05
+-1.8200904e+05 3.6106593e+04 0.0000000e+00
+-1.6232874e-01 2.1366458e+00 -9.2023298e-01
+-3.1773717e+00 3.5162794e+01 -1.5346179e+01
+-5.7524272e+01 4.9062488e+02 -1.8769932e+02
+-1.0603189e+03 6.6833800e+03 -1.7792055e+03
+-4.0941726e+04 1.3585692e+05 -3.7358288e+03
+-1.1562350e+05 3.9711074e+05 3.6730551e+02
+-2.0219862e+05 6.9287875e+05 1.0036058e+04
+-2.7451304e+05 9.3078025e+05 2.3807805e+04
+-3.1920664e+05 1.0628071e+06 4.0778425e+04
+-3.3632769e+05 1.0898136e+06 6.1291706e+04
+-3.3229367e+05 1.0397068e+06 8.5741570e+04
+-3.1259990e+05 9.3690395e+05 1.1429272e+05
+-2.7934644e+05 7.9150315e+05 1.4687902e+05
+-2.3284466e+05 6.0992846e+05 1.8228394e+05
+-1.7460907e+05 4.0950562e+05 2.1689281e+05
+-1.0918872e+05 2.2289748e+05 2.4314677e+05
+-4.5912511e+04 8.4026277e+04 2.5154047e+05
+-2.0164648e+01 1.2163361e+04 2.4654952e+05
+1.8469792e+03 5.3929346e+03 2.4215200e+05
+2.8942623e+03 2.7794204e+03 2.3700268e+05
+4.8418594e+03 1.0751949e+03 2.2980003e+05
+5.0364184e+03 1.0998489e+04 2.3692495e+05
+-1.0929783e+05 3.5883970e+04 0.0000000e+00
+-8.5122118e-02 3.7266539e+00 -1.5379247e+00
+-1.4939213e+00 6.3921386e+01 -2.9426442e+01
+-2.5043052e+01 9.0005130e+02 -4.2491925e+02
+-4.5317683e+02 1.1022577e+04 -4.5166284e+03
+-1.9069200e+04 1.4606254e+05 -4.8417143e+03
+-5.6951234e+04 4.2411642e+05 -3.0528282e+03
+-1.0087204e+05 7.3934308e+05 7.0777625e+02
+-1.3690881e+05 9.9298029e+05 5.8814919e+03
+-1.5809016e+05 1.1342652e+06 1.1502265e+04
+-1.6490280e+05 1.1633186e+06 1.8023095e+04
+-1.6096630e+05 1.1103544e+06 2.5637333e+04
+-1.4925766e+05 1.0010362e+06 3.4567740e+04
+-1.3127313e+05 8.4522208e+05 4.5689913e+04
+-1.0749840e+05 6.4983514e+05 5.9456021e+04
+-7.8730565e+04 4.3362005e+05 7.5209019e+04
+-4.7326424e+04 2.3289246e+05 8.9655208e+04
+-1.8056398e+04 8.8493534e+04 9.4479808e+04
+3.2282580e+01 1.5900583e+04 9.0319196e+04
+7.5610583e+02 5.3039552e+03 8.9276779e+04
+1.2130093e+03 2.4273547e+03 8.7740487e+04
+2.1353842e+03 1.0242639e+03 8.4647157e+04
+4.8939736e+03 7.3825125e+03 9.0350386e+04
+-5.6196695e+04 2.3297300e+04 0.0000000e+00
+-2.8449529e-02 4.7626326e+00 -1.0175735e+00
+-2.5065493e-01 8.6120121e+01 -2.3100631e+01
+-7.0845630e-01 1.2733736e+03 -3.9735199e+02
+1.2814864e+01 1.5924002e+04 -5.3323616e+03
+1.2952798e+02 1.4670870e+05 -6.3573798e+03
+4.2084596e+02 4.2205550e+05 -5.5369954e+03
+7.0238385e+02 7.3468128e+05 -3.1820454e+03
+8.6613261e+02 9.8723023e+05 -6.7921334e+02
+8.2044131e+02 1.1290322e+06 7.5085266e+02
+5.1857870e+02 1.1584329e+06 1.8281601e+03
+2.3223347e+02 1.1061839e+06 2.5620029e+03
+1.8943839e+02 9.9768249e+05 2.9109086e+03
+1.7855436e+02 8.4201207e+05 3.5848538e+03
+8.8345519e+00 6.4650187e+05 4.9911459e+03
+-1.6208101e+02 4.2991204e+05 7.4275313e+03
+-1.5374350e+02 2.2850476e+05 1.1079893e+04
+-1.3085085e+00 8.3995607e+04 1.5189143e+04
+1.1640870e+02 1.5179058e+04 1.5674907e+04
+1.6927782e+02 2.6436006e+03 1.8032108e+04
+2.9406484e+02 6.2951526e+02 1.9284849e+04
+5.9882827e+02 1.3797227e+02 1.9153776e+04
+2.6469311e+03 1.7166919e+03 2.4358544e+04
+-2.4128939e+04 1.1663520e+04 0.0000000e+00
+-5.6932022e-03 3.8940449e+00 8.6870349e-01
+1.6197676e-01 7.4956279e+01 1.1799532e+01
+5.8164704e+00 1.1863396e+03 9.2154742e+01
+1.0315577e+02 1.5793069e+04 1.0827807e+02
+1.0472022e+03 1.4796427e+05 -2.3190098e+03
+3.1377333e+03 4.2022426e+05 -4.0482312e+03
+5.5632020e+03 7.2665392e+05 -2.4885866e+03
+7.4868013e+03 9.7616016e+05 -3.8690120e+02
+8.3746354e+03 1.1177760e+06 4.5236290e+02
+8.1551660e+03 1.1471147e+06 1.2149951e+03
+7.4862697e+03 1.0959454e+06 1.6395928e+03
+6.8980846e+03 9.8905000e+05 1.4610318e+03
+6.0738395e+03 8.3431893e+05 1.5696227e+03
+4.7082710e+03 6.3995561e+05 2.1637194e+03
+3.1225006e+03 4.2470510e+05 3.2600090e+03
+1.7341961e+03 2.2455825e+05 4.7956576e+03
+7.1127673e+02 8.2846196e+04 4.8739080e+03
+1.6002699e+02 1.7140279e+04 2.6227121e+03
+3.5265085e+01 2.5586862e+03 2.6098699e+03
+3.3383667e+01 3.0548362e+02 2.8216240e+03
+9.4408242e+01 8.4127632e+00 2.7172922e+03
+1.1252911e+03 1.3688369e+02 3.5768244e+03
+-9.3626011e+03 4.1431016e+03 0.0000000e+00
+3.0255262e-03 1.6042033e+00 2.2811492e+00
+2.6982942e-01 3.4540405e+01 4.2326057e+01
+7.5196570e+00 6.3686447e+02 5.8260364e+02
+1.3941601e+02 1.0624608e+04 5.5851769e+03
+1.6276320e+03 1.5002849e+05 1.5836177e+03
+4.8344511e+03 4.1891287e+05 -2.8996037e+03
+8.6093672e+03 7.1522419e+05 -1.9783761e+03
+1.1655069e+04 9.5972457e+05 -1.3721585e+02
+1.3065225e+04 1.1005026e+06 1.7959010e+02
+1.2715725e+04 1.1292426e+06 8.7571622e+02
+1.1691798e+04 1.0795885e+06 1.2454919e+03
+1.0830933e+04 9.7512993e+05 7.7101452e+02
+9.5747776e+03 8.2190898e+05 7.6189873e+02
+7.4196416e+03 6.2979926e+05 1.1719999e+03
+4.9103356e+03 4.1750408e+05 1.6510988e+03
+2.7340764e+03 2.1983678e+05 2.4220163e+03
+1.1454540e+03 8.1289474e+04 2.1874649e+03
+2.7444748e+02 1.8202730e+04 6.0889168e+02
+2.9364031e+01 2.7574764e+03 3.0442259e+02
+-4.5918874e+00 2.9152719e+02 2.8940120e+02
+2.4877544e+00 1.9006217e+01 2.3581030e+02
+2.3739690e+02 8.8812019e+00 1.0386643e+02
+-4.0064258e+03 7.3168576e+02 0.0000000e+00
+3.7078694e-03 0.0000000e+00 1.5973506e+00
+1.8634408e-01 0.0000000e+00 3.5881297e+01
+5.5977594e+00 0.0000000e+00 6.6572359e+02
+1.3372522e+02 0.0000000e+00 1.1129732e+04
+2.6201327e+03 1.5259113e+05 5.5911006e+03
+7.6163367e+03 4.1769825e+05 -1.8101342e+03
+1.3577025e+04 6.9947343e+05 -1.6995889e+03
+1.8612946e+04 9.3592723e+05 8.3073207e+01
+2.1184748e+04 1.0747775e+06 -1.5993517e+02
+2.0899654e+04 1.1018890e+06 5.4772054e+02
+1.9269197e+04 1.0541468e+06 1.0992675e+03
+1.7698578e+04 9.5369313e+05 2.7362632e+02
+1.5561348e+04 8.0300879e+05 6.2463391e+01
+1.2100657e+04 6.1438399e+05 4.1277487e+02
+8.0904441e+03 4.0690914e+05 4.8188699e+02
+4.5993055e+03 2.1311800e+05 8.7469769e+02
+2.0250276e+03 7.8265660e+04 9.0140999e+02
+5.6271054e+02 1.7991078e+04 1.4595836e+02
+8.5580642e+01 2.6715653e+03 1.1209787e+01
+2.3352130e+00 2.4339231e+02 1.8663110e+01
+-4.1008348e-01 1.0641411e+01 1.3748273e+01
+-8.8718961e+00 0.0000000e+00 -3.3733356e+00
+-1.1249289e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-2.3472826e+03 1.3672249e+05 2.7012556e+04
+-1.2861326e+04 4.7369366e+05 1.3951834e+04
+-2.1502126e+04 7.9434229e+05 -7.0716368e+03
+-2.0302187e+04 1.0197213e+06 -1.4452603e+03
+-1.0315417e+04 1.1592352e+06 1.6796853e+03
+1.2513070e+03 1.1792105e+06 -1.1752383e+03
+2.6524466e+03 1.1145859e+06 4.8478284e+03
+-5.0628407e+03 1.0193394e+06 6.9801964e+03
+-8.5247105e+03 8.7179019e+05 1.7479619e+03
+-3.7840085e+03 6.6138439e+05 1.3243578e+03
+2.5013269e+03 4.2681310e+05 6.8584469e+03
+5.5919007e+03 2.1944269e+05 9.9665524e+03
+4.8851246e+03 8.3407756e+04 6.3768305e+03
+2.6806639e+03 2.2128621e+04 1.5571487e+03
+1.1207697e+03 3.2840778e+03 1.6074447e+02
+2.3212206e+02 1.3449766e+02 1.1941490e+01
+-2.1429519e+01 9.3898536e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-4.6672534e+04 0.0000000e+00 2.0792432e+04
+-1.6672535e+05 0.0000000e+00 4.5711041e+04
+-2.9853588e+05 0.0000000e+00 1.6457045e+04
+-4.0297585e+05 0.0000000e+00 -2.8417148e+03
+-4.6720696e+05 0.0000000e+00 1.8382771e+04
+-4.7026246e+05 0.0000000e+00 1.2266702e+04
+-4.2947187e+05 0.0000000e+00 -5.2160006e+03
+-3.8873265e+05 0.0000000e+00 9.4950201e+03
+-3.4445975e+05 0.0000000e+00 2.3584530e+04
+-2.6998968e+05 0.0000000e+00 2.3790713e+04
+-1.7962297e+05 0.0000000e+00 3.0892610e+04
+-1.0487449e+05 0.0000000e+00 3.3281610e+04
+-5.4333760e+04 0.0000000e+00 2.2094598e+04
+-2.3350697e+04 0.0000000e+00 1.0588732e+04
+-8.7666401e+03 0.0000000e+00 3.7290828e+03
+-3.7321256e+03 0.0000000e+00 6.9561571e+02
+-1.1430418e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.0873117e+04 -2.9074365e+05 3.9341130e+04
+1.2943501e+05 -9.8526981e+05 6.7215376e+04
+2.4477865e+05 -1.6539906e+06 -9.9054140e+02
+2.8585135e+05 -2.1530881e+06 -1.7942707e+04
+2.6072721e+05 -2.4862415e+06 4.5343320e+04
+2.4512465e+05 -2.5524171e+06 3.6580157e+04
+2.5237473e+05 -2.4064104e+06 -5.7154062e+03
+2.4748937e+05 -2.1873595e+06 1.6358631e+04
+2.1872123e+05 -1.8806103e+06 4.3557479e+04
+1.7084012e+05 -1.4523780e+06 4.0781912e+04
+1.0785609e+05 -9.6558570e+05 4.6841820e+04
+4.9679507e+04 -5.2469031e+05 5.1220694e+04
+1.5681848e+04 -2.2060095e+05 3.5369132e+04
+3.3602823e+03 -6.9666301e+04 1.6688122e+04
+4.2221378e+01 -1.6326780e+04 5.0657401e+03
+-9.4009869e+02 -3.5084610e+03 6.1913452e+02
+-6.2002767e+02 -7.1796259e+02 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-3.6268304e+04 -3.1326922e+05 5.6448696e+04
+-1.1526931e+05 -8.5664225e+05 3.0237199e+04
+-2.0391525e+05 -1.4315817e+06 -9.7454462e+03
+-2.8667376e+05 -1.9057077e+06 9.2569437e+03
+-3.3047138e+05 -2.1723647e+06 1.5541550e+04
+-3.2253939e+05 -2.2101710e+06 -2.9109453e+03
+-3.0068838e+05 -2.1095805e+06 3.6023023e+03
+-2.8371418e+05 -1.9223889e+06 1.7284744e+04
+-2.4918096e+05 -1.6375598e+06 1.4889404e+04
+-1.9156952e+05 -1.2644571e+06 1.4754998e+04
+-1.3011015e+05 -8.4407174e+05 2.5853495e+04
+-7.6986057e+04 -4.4787807e+05 3.1619473e+04
+-3.7231483e+04 -1.6800131e+05 2.1137385e+04
+-1.4029316e+04 -3.9278746e+04 7.4599054e+03
+-4.1338878e+03 -5.6373432e+03 2.0252407e+03
+-1.2134955e+03 -3.9654535e+02 3.5901768e+02
+-3.6345088e+02 -1.6886372e+01 0.0000000e+00
+0 0 0
+0 0 0
+-2.5192322e-02 -3.1400723e+00 3.1689725e+00
+-3.9832216e-01 -6.7538086e+01 7.1291725e+01
+-6.1173508e+00 -1.2460389e+03 1.3290458e+03
+-1.0925147e+02 -2.0874988e+04 2.2447011e+04
+-2.4207131e+03 -2.9770931e+05 1.1927861e+04
+-6.8800399e+03 -8.2785172e+05 -2.3660536e+03
+-1.1401476e+04 -1.4066652e+06 -2.3036338e+03
+-1.3274497e+04 -1.8766522e+06 5.2864306e+02
+-1.1448360e+04 -2.1380287e+06 -1.1740233e+03
+-9.2215529e+03 -2.1810931e+06 -1.3065190e+02
+-9.3347071e+03 -2.0831061e+06 1.9989954e+03
+-9.9067942e+03 -1.8936073e+06 8.2302248e+02
+-8.8728350e+03 -1.6120855e+06 -2.1703235e+02
+-6.6097345e+03 -1.2463768e+06 4.1306063e+02
+-3.7828025e+03 -8.3300363e+05 1.2182218e+03
+-1.0575866e+03 -4.4326204e+05 2.2590899e+03
+4.0164010e+02 -1.6616179e+05 2.0429726e+03
+4.6969958e+02 -3.7416572e+04 2.7379891e+02
+2.2296952e+02 -5.4923677e+03 -8.5876255e+00
+7.4188396e+01 -4.9709007e+02 2.0090190e+01
+6.8204492e+00 -2.0253198e+01 1.6211351e+01
+-3.7123035e+02 -3.4283287e+02 7.2097201e+02
+-6.2903604e+02 -5.4405002e+02 0.0000000e+00
+-7.2257585e-02 -7.6022289e+00 4.5374397e+00
+-9.2074460e-01 -1.4595823e+02 8.4148158e+01
+-9.7197497e+00 -2.3051461e+03 1.1604948e+03
+-1.0085868e+02 -3.0668497e+04 1.1194279e+04
+-8.8909514e+02 -2.8770655e+05 3.7082442e+03
+-2.3642104e+03 -8.1206181e+05 -4.8829956e+03
+-3.7928199e+03 -1.3959076e+06 -3.2384041e+03
+-3.7847711e+03 -1.8642551e+06 -1.9563559e+02
+-2.0557049e+03 -2.1227256e+06 -3.7786242e+02
+-7.6586895e+02 -2.1688907e+06 9.0134186e+02
+-1.1330111e+03 -2.0716998e+06 2.3197922e+03
+-1.7613048e+03 -1.8802431e+06 1.5478541e+03
+-1.6616115e+03 -1.6003729e+06 1.0716109e+03
+-1.1253444e+03 -1.2386007e+06 1.8404988e+03
+-3.0932380e+02 -8.2910945e+05 3.1659762e+03
+5.4226254e+02 -4.4275997e+05 4.8557163e+03
+7.9999145e+02 -1.6532130e+05 4.3606825e+03
+4.5730420e+02 -3.4378831e+04 1.1400839e+03
+1.8416392e+02 -5.0504358e+03 5.4335087e+02
+9.4232067e+01 -5.4381228e+02 4.9124780e+02
+7.7416406e+01 1.5235989e+01 3.8079802e+02
+-1.2485450e+03 -2.0995880e+03 3.6209156e+03
+-9.7636900e+02 -5.5463796e+03 0.0000000e+00
+-1.2132776e-01 -9.2825051e+00 1.7959108e+00
+-1.4131486e+00 -1.6733416e+02 2.4746966e+01
+-1.2200215e+01 -2.4659156e+03 2.0353312e+02
+-8.9200687e+01 -3.0734498e+04 4.6189053e+02
+-5.2438295e+02 -2.8181877e+05 -3.8543033e+03
+-1.3135089e+03 -8.0427535e+05 -7.1895261e+03
+-2.1351208e+03 -1.3910356e+06 -4.3632515e+03
+-2.1784067e+03 -1.8582594e+06 -6.9376431e+02
+-1.1808186e+03 -2.1142420e+06 3.7809922e+02
+-4.1276771e+02 -2.1616866e+06 1.7419859e+03
+-6.6120835e+02 -2.0647685e+06 2.9582449e+03
+-1.0926653e+03 -1.8720179e+06 2.7237654e+03
+-1.0701235e+03 -1.5931944e+06 2.6891964e+03
+-7.5728152e+02 -1.2342761e+06 3.8301581e+03
+-2.6659733e+02 -8.2807174e+05 6.1815480e+03
+2.5050175e+02 -4.4439770e+05 9.3029692e+03
+4.2148235e+02 -1.6532119e+05 9.5926515e+03
+2.4421741e+02 -3.0011296e+04 5.1409258e+03
+1.4996533e+02 -5.1761104e+03 5.1519001e+03
+1.9044627e+02 -1.1809058e+03 5.6319304e+03
+2.3222341e+02 -2.7561972e+02 5.7848061e+03
+-4.3454989e+03 -8.1049094e+03 1.7256231e+04
+6.9714440e+01 -1.8235531e+04 0.0000000e+00
+-1.7603110e-01 -7.2482642e+00 -1.8866593e+00
+-2.2447612e+00 -1.2397921e+02 -4.3247507e+01
+-2.2640151e+01 -1.7406714e+03 -7.4655997e+02
+-2.0710443e+02 -2.1264163e+04 -9.9969765e+03
+-1.7056398e+03 -2.7856831e+05 -1.1412272e+04
+-4.5846340e+03 -8.0075092e+05 -9.9312170e+03
+-7.8842753e+03 -1.3867059e+06 -5.6742047e+03
+-1.0257712e+04 -1.8515753e+06 -1.2343710e+03
+-1.1044516e+04 -2.1046741e+06 1.0626861e+03
+-1.0988365e+04 -2.1520675e+06 2.9505041e+03
+-1.0843648e+04 -2.0552558e+06 4.5136582e+03
+-1.0350671e+04 -1.8621715e+06 5.2073548e+03
+-9.1891656e+03 -1.5849367e+06 6.3173771e+03
+-7.4611378e+03 -1.2294585e+06 8.9697053e+03
+-5.3111693e+03 -8.2776196e+05 1.3809017e+04
+-2.9997079e+03 -4.4887735e+05 2.1134637e+04
+-1.0358015e+03 -1.7293862e+05 2.9786568e+04
+4.4966206e+01 -3.1034413e+04 3.0881127e+04
+2.4434656e+02 -1.0356139e+04 3.5986087e+04
+4.5931301e+02 -4.8095730e+03 3.9449499e+04
+4.5630084e+02 -2.3138757e+03 4.1630108e+04
+-1.4745873e+04 -2.3207526e+04 7.4120707e+04
+3.9566010e+03 -3.6891420e+04 0.0000000e+00
+-2.7908971e-01 -4.1225224e+00 -2.9317742e+00
+-4.6521202e+00 -6.7472117e+01 -5.6280664e+01
+-7.2518005e+01 -9.3366231e+02 -8.1581484e+02
+-1.2215092e+03 -1.2558797e+04 -8.7528476e+03
+-4.4955198e+04 -2.5323591e+05 -8.1992494e+03
+-1.3054855e+05 -7.3060834e+05 -4.7445176e+03
+-2.2773826e+05 -1.2662682e+06 1.6840126e+03
+-3.0564449e+05 -1.6915505e+06 1.0394872e+04
+-3.4930456e+05 -1.9228261e+06 1.9761284e+04
+-3.6140139e+05 -1.9668218e+06 3.1014157e+04
+-3.5197659e+05 -1.8778854e+06 4.4654048e+04
+-3.2764836e+05 -1.6999295e+06 6.0802792e+04
+-2.8996449e+05 -1.4466389e+06 8.1196410e+04
+-2.3891535e+05 -1.1241784e+06 1.0733333e+05
+-1.7662124e+05 -7.6116501e+05 1.3862705e+05
+-1.0893551e+05 -4.1796517e+05 1.6932395e+05
+-4.5161710e+04 -1.5970784e+05 1.8319848e+05
+-1.0358911e+03 -2.2995312e+04 1.7622756e+05
+4.1097403e+02 -1.0347950e+04 1.7656450e+05
+7.6791999e+02 -5.4991460e+03 1.7769916e+05
+3.1241496e+02 -2.6521786e+03 1.7986045e+05
+-3.8399643e+04 -3.3752846e+04 2.3370029e+05
+1.7442868e+04 -5.4505823e+04 0.0000000e+00
+-4.0593092e-01 -2.1374139e+00 -1.7415064e+00
+-7.6349422e+00 -3.5714135e+01 -2.9041918e+01
+-1.3288886e+02 -5.3251473e+02 -3.5482491e+02
+-2.3728235e+03 -8.2478007e+03 -3.3533170e+03
+-8.3851300e+04 -2.0702702e+05 -6.6526266e+03
+-2.3514128e+05 -6.1825322e+05 5.1004247e+02
+-4.0782761e+05 -1.0769767e+06 1.6847520e+04
+-5.4952748e+05 -1.4396116e+06 3.9923058e+04
+-6.3474168e+05 -1.6357501e+06 6.8382107e+04
+-6.6568134e+05 -1.6723193e+06 1.0323324e+05
+-6.5715583e+05 -1.5954001e+06 1.4561008e+05
+-6.2047700e+05 -1.4426979e+06 1.9625562e+05
+-5.5862979e+05 -1.2269150e+06 2.5581499e+05
+-4.7093214e+05 -9.5348164e+05 3.2320569e+05
+-3.5974371e+05 -6.4581415e+05 3.9298947e+05
+-2.3329016e+05 -3.5264709e+05 4.5177283e+05
+-1.0680878e+05 -1.2731833e+05 4.8027958e+05
+-2.9229410e+03 -1.4759906e+04 4.7494695e+05
+2.1291607e+02 -6.6384304e+03 4.7287150e+05
+4.3799705e+02 -3.3676451e+03 4.7319626e+05
+-1.2821297e+03 -1.2055962e+03 4.7787390e+05
+-7.8763572e+04 -2.7127742e+04 5.5505410e+05
+5.2747640e+04 -5.3370253e+04 0.0000000e+00
+-5.1660317e-01 -1.1247647e+00 -7.2757322e-01
+-1.0052641e+01 -1.9838199e+01 -1.1161857e+01
+-1.7815425e+02 -3.2026053e+02 -1.2892343e+02
+-3.1709377e+03 -5.3555031e+03 -1.3720243e+03
+-1.0867830e+05 -1.5679903e+05 -3.5153798e+01
+-3.0759984e+05 -4.8498854e+05 1.2626627e+04
+-5.3723426e+05 -8.5084607e+05 3.9859261e+04
+-7.2838647e+05 -1.1388216e+06 8.0300290e+04
+-8.4730735e+05 -1.2936570e+06 1.3277625e+05
+-8.9601511e+05 -1.3216981e+06 1.9790651e+05
+-8.9293322e+05 -1.2595755e+06 2.7672428e+05
+-8.5253367e+05 -1.1374057e+06 3.6978003e+05
+-7.7826455e+05 -9.6582434e+05 4.7659453e+05
+-6.6794770e+05 -7.4931455e+05 5.9380008e+05
+-5.2242962e+05 -5.0588637e+05 7.1210448e+05
+-3.4944566e+05 -2.7277342e+05 8.1289275e+05
+-1.6744658e+05 -9.2843820e+04 8.7252885e+05
+-5.0300288e+03 -8.8152010e+03 8.7173786e+05
+-3.9793282e+02 -3.6498720e+03 8.7240269e+05
+-6.0262571e+02 -1.6946141e+03 8.7642131e+05
+-4.3164870e+03 -3.5525665e+02 8.8820481e+05
+-1.3198561e+05 -1.6443692e+04 1.0096081e+06
+1.1303922e+05 -3.6585726e+04 0.0000000e+00
+-5.9665726e-01 -6.0528375e-01 -2.0405479e-01
+-1.1694704e+01 -1.1192234e+01 -2.7545837e+00
+-2.0738459e+02 -1.8956845e+02 -2.7086661e+01
+-3.6712066e+03 -3.2714420e+03 -2.6018511e+02
+-1.2288017e+05 -1.0871558e+05 7.0738858e+03
+-3.5223803e+05 -3.4553914e+05 2.6690100e+04
+-6.2004229e+05 -6.1022929e+05 6.4709185e+04
+-8.4572160e+05 -8.1800668e+05 1.2171146e+05
+-9.8954726e+05 -9.2923098e+05 1.9713328e+05
+-1.0530301e+06 -9.4887564e+05 2.9135912e+05
+-1.0567226e+06 -9.0338283e+05 4.0514804e+05
+-1.0170410e+06 -8.1457852e+05 5.3872188e+05
+-9.3766519e+05 -6.9047949e+05 6.9075359e+05
+-8.1511738e+05 -5.3452471e+05 8.5618896e+05
+-6.4827546e+05 -3.5945821e+05 1.0227569e+06
+-4.4279110e+05 -1.9148802e+05 1.1671637e+06
+-2.1776819e+05 -6.2319137e+04 1.2587065e+06
+-6.8283491e+03 -5.1607733e+03 1.2623059e+06
+-1.0085955e+03 -2.0624061e+03 1.2664234e+06
+-1.6520492e+03 -9.1646896e+02 1.2746483e+06
+-7.3862780e+03 -1.0107004e+02 1.2936875e+06
+-1.8750291e+05 -9.7881277e+03 1.4681682e+06
+1.7669644e+05 -2.3544400e+04 0.0000000e+00
+-6.5015698e-01 -3.0376948e-01 3.5378585e-02
+-1.2757372e+01 -5.7723970e+00 1.1486379e+00
+-2.2601434e+02 -9.9980110e+01 2.5679208e+01
+-3.9916347e+03 -1.7458710e+03 4.8426731e+02
+-1.3093241e+05 -6.3743221e+04 1.2676965e+04
+-3.7824881e+05 -2.0622764e+05 3.8512336e+04
+-6.6963911e+05 -3.6597883e+05 8.5313144e+04
+-9.1758570e+05 -4.9121521e+05 1.5526779e+05
+-1.0782645e+06 -5.5807903e+05 2.4845096e+05
+-1.1524042e+06 -5.6969281e+05 3.6511792e+05
+-1.1615523e+06 -5.4198576e+05 5.0574174e+05
+-1.1232818e+06 -4.8815431e+05 6.7021516e+05
+-1.0416140e+06 -4.1319286e+05 8.5658693e+05
+-9.1243209e+05 -3.1929505e+05 1.0586399e+06
+-7.3313444e+05 -2.1405993e+05 1.2620537e+06
+-5.0714289e+05 -1.1305950e+05 1.4399414e+06
+-2.5278303e+05 -3.5802527e+04 1.5549653e+06
+-7.9590410e+03 -2.8000776e+03 1.5612954e+06
+-1.2134533e+03 -1.1755145e+03 1.5674660e+06
+-2.0188147e+03 -5.7354857e+02 1.5782936e+06
+-9.0730659e+03 -8.9633987e+01 1.6021963e+06
+-2.3304483e+05 -3.0096436e+03 1.8198717e+06
+2.1553264e+05 -1.3483724e+04 0.0000000e+00
+-6.8157244e-01 -9.2915291e-02 1.3940660e-01
+-1.3374281e+01 -1.7855778e+00 2.9519563e+00
+-2.3681909e+02 -3.1181915e+01 5.2965291e+01
+-4.1789774e+03 -5.4664131e+02 9.1912810e+02
+-1.3511627e+05 -2.0989309e+04 1.6098204e+04
+-3.9166324e+05 -6.8495033e+04 4.6005763e+04
+-6.9563157e+05 -1.2186257e+05 9.8314367e+04
+-9.5585557e+05 -1.6368007e+05 1.7616607e+05
+-1.1260992e+06 -1.8598037e+05 2.8005806e+05
+-1.2063993e+06 -1.8982280e+05 4.1015492e+05
+-1.2186646e+06 -1.8052295e+05 5.6669561e+05
+-1.1811023e+06 -1.6249434e+05 7.4931224e+05
+-1.0981020e+06 -1.3743450e+05 9.5565995e+05
+-9.6541723e+05 -1.0609993e+05 1.1788771e+06
+-7.7967962e+05 -7.1015996e+04 1.4035580e+06
+-5.4277098e+05 -3.7349358e+04 1.6007209e+06
+-2.7196424e+05 -1.1687959e+04 1.7286477e+06
+-8.4089964e+03 -9.1263195e+02 1.7361007e+06
+-1.0118510e+03 -4.1746516e+02 1.7428776e+06
+-1.7032015e+03 -2.4337946e+02 1.7544598e+06
+-9.2014567e+03 -8.5712741e+01 1.7803014e+06
+-2.6013785e+05 3.3314536e+02 2.0307425e+06
+2.2588554e+05 -3.7574229e+03 0.0000000e+00
+-6.9204883e-01 9.2915291e-02 1.6903276e-01
+-1.3579297e+01 1.7855778e+00 3.4881471e+00
+-2.4041092e+02 3.1181915e+01 6.1533611e+01
+-4.2414116e+03 5.4664131e+02 1.0613309e+03
+-1.3641515e+05 2.0989309e+04 1.7231943e+04
+-3.9577532e+05 6.8495033e+04 4.8530329e+04
+-7.0365837e+05 1.2186257e+05 1.0268350e+05
+-9.6777265e+05 1.6368007e+05 1.8313954e+05
+-1.1410833e+06 1.8598037e+05 2.9053742e+05
+-1.2233552e+06 1.8982280e+05 4.2500463e+05
+-1.2365770e+06 1.8052295e+05 5.8668717e+05
+-1.1991627e+06 1.6249434e+05 7.7511617e+05
+-1.1156627e+06 1.3743450e+05 9.8781217e+05
+-9.8184586e+05 1.0609993e+05 1.2177149e+06
+-7.9412637e+05 7.1015996e+04 1.4490974e+06
+-5.5385039e+05 3.7349358e+04 1.6523104e+06
+-2.7783045e+05 1.1687959e+04 1.7841256e+06
+-8.4892185e+03 9.1263196e+02 1.7917871e+06
+-8.4462366e+02 4.1746523e+02 1.7985361e+06
+-1.4342845e+03 2.4337956e+02 1.8100264e+06
+-8.9623747e+03 8.5707343e+01 1.8360540e+06
+-2.6845659e+05 -3.3346834e+02 2.1005965e+06
+2.2563845e+05 3.7573059e+03 0.0000000e+00
+-6.8157244e-01 3.0376948e-01 1.3940660e-01
+-1.3374281e+01 5.7723970e+00 2.9519563e+00
+-2.3681909e+02 9.9980110e+01 5.2965291e+01
+-4.1789774e+03 1.7458710e+03 9.1912810e+02
+-1.3511627e+05 6.3743221e+04 1.6098204e+04
+-3.9166324e+05 2.0622764e+05 4.6005763e+04
+-6.9563157e+05 3.6597883e+05 9.8314367e+04
+-9.5585557e+05 4.9121521e+05 1.7616607e+05
+-1.1260992e+06 5.5807903e+05 2.8005806e+05
+-1.2063993e+06 5.6969281e+05 4.1015492e+05
+-1.2186646e+06 5.4198576e+05 5.6669561e+05
+-1.1811023e+06 4.8815431e+05 7.4931224e+05
+-1.0981020e+06 4.1319286e+05 9.5565995e+05
+-9.6541723e+05 3.1929505e+05 1.1788771e+06
+-7.7967962e+05 2.1405993e+05 1.4035580e+06
+-5.4277098e+05 1.1305950e+05 1.6007209e+06
+-2.7196424e+05 3.5802527e+04 1.7286477e+06
+-8.4089964e+03 2.8000777e+03 1.7361007e+06
+-1.0118510e+03 1.1755146e+03 1.7428776e+06
+-1.7032009e+03 5.7355223e+02 1.7544598e+06
+-9.2014336e+03 8.9744125e+01 1.7803013e+06
+-2.6013709e+05 3.0131952e+03 2.0307399e+06
+2.2588570e+05 1.3484555e+04 0.0000000e+00
+-6.5015698e-01 6.0528375e-01 3.5378585e-02
+-1.2757372e+01 1.1192234e+01 1.1486379e+00
+-2.2601434e+02 1.8956845e+02 2.5679208e+01
+-3.9916347e+03 3.2714420e+03 4.8426731e+02
+-1.3093241e+05 1.0871558e+05 1.2676965e+04
+-3.7824881e+05 3.4553914e+05 3.8512336e+04
+-6.6963911e+05 6.1022929e+05 8.5313144e+04
+-9.1758570e+05 8.1800668e+05 1.5526779e+05
+-1.0782645e+06 9.2923098e+05 2.4845096e+05
+-1.1524042e+06 9.4887564e+05 3.6511792e+05
+-1.1615523e+06 9.0338283e+05 5.0574174e+05
+-1.1232818e+06 8.1457852e+05 6.7021516e+05
+-1.0416140e+06 6.9047949e+05 8.5658693e+05
+-9.1243209e+05 5.3452471e+05 1.0586399e+06
+-7.3313444e+05 3.5945821e+05 1.2620537e+06
+-5.0714289e+05 1.9148802e+05 1.4399414e+06
+-2.5278303e+05 6.2319137e+04 1.5549653e+06
+-7.9590410e+03 5.1607733e+03 1.5612954e+06
+-1.2134533e+03 2.0624062e+03 1.5674660e+06
+-2.0188123e+03 9.1647255e+02 1.5782936e+06
+-9.0729800e+03 1.0117502e+02 1.6021963e+06
+-2.3304184e+05 9.7912272e+03 1.8198718e+06
+2.1553278e+05 2.3544672e+04 0.0000000e+00
+-5.9665726e-01 1.1247647e+00 -2.0405479e-01
+-1.1694704e+01 1.9838199e+01 -2.7545837e+00
+-2.0738459e+02 3.2026053e+02 -2.7086661e+01
+-3.6712066e+03 5.3555031e+03 -2.6018511e+02
+-1.2288017e+05 1.5679903e+05 7.0738858e+03
+-3.5223803e+05 4.8498854e+05 2.6690100e+04
+-6.2004229e+05 8.5084607e+05 6.4709185e+04
+-8.4572160e+05 1.1388216e+06 1.2171146e+05
+-9.8954726e+05 1.2936570e+06 1.9713328e+05
+-1.0530301e+06 1.3216981e+06 2.9135912e+05
+-1.0567226e+06 1.2595755e+06 4.0514804e+05
+-1.0170410e+06 1.1374057e+06 5.3872188e+05
+-9.3766519e+05 9.6582434e+05 6.9075359e+05
+-8.1511738e+05 7.4931455e+05 8.5618896e+05
+-6.4827546e+05 5.0588637e+05 1.0227569e+06
+-4.4279110e+05 2.7277342e+05 1.1671637e+06
+-2.1776819e+05 9.2843820e+04 1.2587065e+06
+-6.8283491e+03 8.8152010e+03 1.2623059e+06
+-1.0085954e+03 3.6498720e+03 1.2664234e+06
+-1.6520462e+03 1.6946135e+03 1.2746483e+06
+-7.3861708e+03 3.5522076e+02 1.2936876e+06
+-1.8749912e+05 1.6442259e+04 1.4681717e+06
+1.7669712e+05 3.6585437e+04 0.0000000e+00
+-5.1660317e-01 2.1374139e+00 -7.2757322e-01
+-1.0052641e+01 3.5714135e+01 -1.1161857e+01
+-1.7815425e+02 5.3251473e+02 -1.2892343e+02
+-3.1709377e+03 8.2478007e+03 -1.3720243e+03
+-1.0867830e+05 2.0702702e+05 -3.5153798e+01
+-3.0759984e+05 6.1825322e+05 1.2626627e+04
+-5.3723426e+05 1.0769767e+06 3.9859261e+04
+-7.2838647e+05 1.4396116e+06 8.0300290e+04
+-8.4730735e+05 1.6357501e+06 1.3277625e+05
+-8.9601511e+05 1.6723193e+06 1.9790651e+05
+-8.9293322e+05 1.5954001e+06 2.7672428e+05
+-8.5253367e+05 1.4426979e+06 3.6978003e+05
+-7.7826455e+05 1.2269150e+06 4.7659453e+05
+-6.6794770e+05 9.5348164e+05 5.9380008e+05
+-5.2242962e+05 6.4581415e+05 7.1210448e+05
+-3.4944566e+05 3.5264709e+05 8.1289275e+05
+-1.6744658e+05 1.2731833e+05 8.7252885e+05
+-5.0300288e+03 1.4759906e+04 8.7173786e+05
+-3.9793279e+02 6.6384304e+03 8.7240269e+05
+-6.0262430e+02 3.3676441e+03 8.7642131e+05
+-4.3164390e+03 1.2055188e+03 8.8820477e+05
+-1.3198234e+05 2.7129082e+04 1.0096080e+06
+1.1303932e+05 5.3370185e+04 0.0000000e+00
+-4.0593092e-01 4.1225224e+00 -1.7415064e+00
+-7.6349422e+00 6.7472117e+01 -2.9041918e+01
+-1.3288886e+02 9.3366231e+02 -3.5482491e+02
+-2.3728235e+03 1.2558797e+04 -3.3533170e+03
+-8.3851300e+04 2.5323591e+05 -6.6526266e+03
+-2.3514128e+05 7.3060834e+05 5.1004247e+02
+-4.0782761e+05 1.2662682e+06 1.6847520e+04
+-5.4952748e+05 1.6915505e+06 3.9923058e+04
+-6.3474168e+05 1.9228261e+06 6.8382107e+04
+-6.6568134e+05 1.9668218e+06 1.0323324e+05
+-6.5715583e+05 1.8778854e+06 1.4561008e+05
+-6.2047700e+05 1.6999295e+06 1.9625562e+05
+-5.5862979e+05 1.4466389e+06 2.5581499e+05
+-4.7093214e+05 1.1241784e+06 3.2320569e+05
+-3.5974371e+05 7.6116501e+05 3.9298947e+05
+-2.3329016e+05 4.1796517e+05 4.5177283e+05
+-1.0680878e+05 1.5970784e+05 4.8027958e+05
+-2.9229410e+03 2.2995312e+04 4.7494695e+05
+2.1291604e+02 1.0347950e+04 4.7287150e+05
+4.3799825e+02 5.4991529e+03 4.7319625e+05
+-1.2820523e+03 2.6524140e+03 4.7787452e+05
+-7.8765952e+04 3.3756626e+04 5.5504934e+05
+5.2747578e+04 5.4506378e+04 0.0000000e+00
+-2.7908971e-01 7.2482642e+00 -2.9317742e+00
+-4.6521202e+00 1.2397921e+02 -5.6280664e+01
+-7.2518005e+01 1.7406714e+03 -8.1581484e+02
+-1.2215092e+03 2.1264163e+04 -8.7528476e+03
+-4.4955198e+04 2.7856831e+05 -8.1992494e+03
+-1.3054855e+05 8.0075092e+05 -4.7445176e+03
+-2.2773826e+05 1.3867059e+06 1.6840126e+03
+-3.0564449e+05 1.8515753e+06 1.0394872e+04
+-3.4930456e+05 2.1046741e+06 1.9761284e+04
+-3.6140139e+05 2.1520675e+06 3.1014157e+04
+-3.5197659e+05 2.0552558e+06 4.4654048e+04
+-3.2764836e+05 1.8621715e+06 6.0802792e+04
+-2.8996449e+05 1.5849367e+06 8.1196410e+04
+-2.3891535e+05 1.2294585e+06 1.0733333e+05
+-1.7662124e+05 8.2776196e+05 1.3862705e+05
+-1.0893551e+05 4.4887735e+05 1.6932395e+05
+-4.5161710e+04 1.7293862e+05 1.8319848e+05
+-1.0358911e+03 3.1034413e+04 1.7622756e+05
+4.1097377e+02 1.0356139e+04 1.7656450e+05
+7.6791954e+02 4.8095769e+03 1.7769917e+05
+3.1238101e+02 2.3140417e+03 1.7986054e+05
+-3.8401607e+04 2.3212770e+04 2.3369997e+05
+1.7443412e+04 3.6891997e+04 0.0000000e+00
+-1.7603110e-01 9.2825051e+00 -1.8866593e+00
+-2.2447612e+00 1.6733416e+02 -4.3247507e+01
+-2.2640151e+01 2.4659156e+03 -7.4655997e+02
+-2.0710443e+02 3.0734498e+04 -9.9969765e+03
+-1.7056398e+03 2.8181877e+05 -1.1412272e+04
+-4.5846340e+03 8.0427535e+05 -9.9312170e+03
+-7.8842753e+03 1.3910356e+06 -5.6742047e+03
+-1.0257712e+04 1.8582594e+06 -1.2343710e+03
+-1.1044516e+04 2.1142420e+06 1.0626861e+03
+-1.0988365e+04 2.1616866e+06 2.9505041e+03
+-1.0843648e+04 2.0647685e+06 4.5136582e+03
+-1.0350671e+04 1.8720179e+06 5.2073548e+03
+-9.1891656e+03 1.5931944e+06 6.3173771e+03
+-7.4611378e+03 1.2342761e+06 8.9697053e+03
+-5.3111693e+03 8.2807174e+05 1.3809017e+04
+-2.9997079e+03 4.4439770e+05 2.1134637e+04
+-1.0358015e+03 1.6532119e+05 2.9786568e+04
+4.4966206e+01 3.0011296e+04 3.0881127e+04
+2.4434683e+02 5.1761104e+03 3.5986088e+04
+4.5931617e+02 1.1809037e+03 3.9449510e+04
+4.5635806e+02 2.7567775e+02 4.1630344e+04
+-1.4744836e+04 8.1072819e+03 7.4127599e+04
+3.9571305e+03 1.8236198e+04 0.0000000e+00
+-1.2132776e-01 7.6022289e+00 1.7959108e+00
+-1.4131486e+00 1.4595823e+02 2.4746966e+01
+-1.2200216e+01 2.3051461e+03 2.0353312e+02
+-8.9200691e+01 3.0668497e+04 4.6189055e+02
+-5.2438299e+02 2.8770655e+05 -3.8543033e+03
+-1.3135090e+03 8.1206181e+05 -7.1895261e+03
+-2.1351211e+03 1.3959076e+06 -4.3632516e+03
+-2.1784071e+03 1.8642551e+06 -6.9376426e+02
+-1.1808187e+03 2.1227256e+06 3.7809942e+02
+-4.1276788e+02 2.1688907e+06 1.7419859e+03
+-6.6120839e+02 2.0716998e+06 2.9582449e+03
+-1.0926653e+03 1.8802431e+06 2.7237654e+03
+-1.0701234e+03 1.6003729e+06 2.6891964e+03
+-7.5728151e+02 1.2386007e+06 3.8301582e+03
+-2.6659734e+02 8.2910945e+05 6.1815480e+03
+2.5050174e+02 4.4275997e+05 9.3029692e+03
+4.2148235e+02 1.6532130e+05 9.5926515e+03
+2.4421742e+02 3.4378831e+04 5.1409258e+03
+1.4996536e+02 5.0504358e+03 5.1519002e+03
+1.9045118e+02 5.4381264e+02 5.6319451e+03
+2.3228929e+02 -1.5278921e+01 5.7850207e+03
+-4.3442410e+03 2.0989623e+03 1.7262872e+04
+7.0276778e+01 5.5466736e+03 0.0000000e+00
+-7.2257589e-02 3.1400723e+00 4.5374397e+00
+-9.2074470e-01 6.7538086e+01 8.4148158e+01
+-9.7197521e+00 1.2460389e+03 1.1604948e+03
+-1.0085872e+02 2.0874988e+04 1.1194279e+04
+-8.8909519e+02 2.9770931e+05 3.7082450e+03
+-2.3642124e+03 8.2785172e+05 -4.8829947e+03
+-3.7928288e+03 1.4066652e+06 -3.2384017e+03
+-3.7847822e+03 1.8766522e+06 -1.9563552e+02
+-2.0557101e+03 2.1380287e+06 -3.7786167e+02
+-7.6587244e+02 2.1810931e+06 9.0134635e+02
+-1.1330112e+03 2.0831061e+06 2.3197921e+03
+-1.7613037e+03 1.8936073e+06 1.5478536e+03
+-1.6616095e+03 1.6120855e+06 1.0716108e+03
+-1.1253440e+03 1.2463768e+06 1.8404993e+03
+-3.0932399e+02 8.3300363e+05 3.1659768e+03
+5.4226229e+02 4.4326204e+05 4.8557164e+03
+7.9999155e+02 1.6616179e+05 4.3606826e+03
+4.5730430e+02 3.7416572e+04 1.1400839e+03
+1.8416412e+02 5.4923687e+03 5.4335101e+02
+9.4232480e+01 4.9709075e+02 4.9124854e+02
+7.7484049e+01 2.0260399e+01 3.8095983e+02
+-1.2482543e+03 3.4241445e+02 3.6231578e+03
+-9.7617581e+02 5.4396838e+02 0.0000000e+00
+-2.5192328e-02 0.0000000e+00 3.1689725e+00
+-3.9832245e-01 0.0000000e+00 7.1291726e+01
+-6.1173526e+00 0.0000000e+00 1.3290458e+03
+-1.0925136e+02 0.0000000e+00 2.2447011e+04
+-2.4207087e+03 3.1326925e+05 1.1927914e+04
+-6.8801149e+03 8.5664205e+05 -2.3659596e+03
+-1.1401728e+04 1.4315816e+06 -2.3035378e+03
+-1.3274806e+04 1.9057077e+06 5.2864457e+02
+-1.1448494e+04 2.1723647e+06 -1.1740450e+03
+-9.2216664e+03 2.2101709e+06 -1.3054924e+02
+-9.3346897e+03 2.1095804e+06 1.9990987e+03
+-9.9067555e+03 1.9223887e+06 8.2300418e+02
+-8.8727708e+03 1.6375597e+06 -2.1703962e+02
+-6.6097233e+03 1.2644570e+06 4.1307561e+02
+-3.7828120e+03 8.4407172e+05 1.2182394e+03
+-1.0575925e+03 4.4787806e+05 2.2590933e+03
+4.0164744e+02 1.6800129e+05 2.0429796e+03
+4.6971019e+02 3.9278742e+04 2.7381031e+02
+2.2296442e+02 5.6373315e+03 -8.5857964e+00
+7.4183100e+01 3.9653540e+02 2.0091064e+01
+6.8260309e+00 1.6878502e+01 1.6237233e+01
+-3.7111162e+02 0.0000000e+00 7.2089637e+02
+-6.2877342e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-3.6268799e+04 2.9074040e+05 5.6450376e+04
+-1.1527112e+05 9.8526193e+05 3.0240292e+04
+-2.0392234e+05 1.6539843e+06 -9.7422189e+03
+-2.8668273e+05 2.1530889e+06 9.2571455e+03
+-3.3047639e+05 2.4862421e+06 1.5540713e+04
+-3.2254221e+05 2.5524133e+06 -2.9081100e+03
+-3.0069105e+05 2.4064095e+06 3.6058227e+03
+-2.8371261e+05 2.1873592e+06 1.7285061e+04
+-2.4917882e+05 1.8806095e+06 1.4889392e+04
+-1.9156952e+05 1.4523766e+06 1.4755382e+04
+-1.3011053e+05 9.6558489e+05 2.5854064e+04
+-7.6986231e+04 5.2469050e+05 3.1619754e+04
+-3.7231475e+04 2.2060095e+05 2.1137496e+04
+-1.4029313e+04 6.9666271e+04 7.4599520e+03
+-4.1340142e+03 1.6326790e+04 2.0252763e+03
+-1.2136227e+03 3.5084883e+03 3.5906562e+02
+-3.6353240e+02 7.1801880e+02 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.0873425e+04 0.0000000e+00 3.9341983e+04
+1.2943475e+05 0.0000000e+00 6.7215290e+04
+2.4477876e+05 0.0000000e+00 -9.9020188e+02
+2.8585120e+05 0.0000000e+00 -1.7942488e+04
+2.6072713e+05 0.0000000e+00 4.5343728e+04
+2.4512451e+05 0.0000000e+00 3.6580191e+04
+2.5237442e+05 0.0000000e+00 -5.7150007e+03
+2.4748905e+05 0.0000000e+00 1.6358912e+04
+2.1872072e+05 0.0000000e+00 4.3557786e+04
+1.7083970e+05 0.0000000e+00 4.0782372e+04
+1.0785567e+05 0.0000000e+00 4.6842094e+04
+4.9679248e+04 0.0000000e+00 5.1220774e+04
+1.5681605e+04 0.0000000e+00 3.5369293e+04
+3.3600835e+03 0.0000000e+00 1.6688286e+04
+4.2084082e+01 0.0000000e+00 5.0658392e+03
+-9.4031066e+02 0.0000000e+00 6.1918289e+02
+-6.2029337e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+8.6127917e+04 -4.0017380e+05 6.0825657e+04
+2.7832794e+05 -1.3452128e+06 1.1556732e+05
+4.7193595e+05 -2.1803607e+06 -1.3550104e+03
+6.7628200e+05 -2.7782296e+06 -7.5895365e+04
+8.2809924e+05 -3.2615046e+06 2.0057586e+04
+8.2597794e+05 -3.4213057e+06 6.2469841e+04
+7.5444342e+05 -3.2229001e+06 1.3102561e+04
+7.0226795e+05 -2.8962872e+06 9.0814483e+03
+6.1595342e+05 -2.4916791e+06 2.7708904e+04
+4.7395552e+05 -1.9473268e+06 2.5710845e+04
+3.2706232e+05 -1.3070411e+06 3.5591180e+04
+2.0076948e+05 -7.0818108e+05 4.5431122e+04
+1.0193570e+05 -2.9108051e+05 3.1816728e+04
+4.0821232e+04 -8.6960807e+04 1.2597031e+04
+1.2980280e+04 -1.8405082e+04 1.8651210e+03
+3.7748484e+03 -3.5544670e+03 -2.4190381e+02
+5.1452463e+02 -6.6461476e+02 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.0683023e+04 -5.7440929e+05 9.7280367e+04
+1.5262678e+05 -1.5523475e+06 3.6518995e+04
+2.6489465e+05 -2.5749485e+06 -3.7703098e+04
+3.1221191e+05 -3.4289959e+06 1.4177429e+04
+3.0761974e+05 -3.9282703e+06 4.2852074e+04
+3.0309471e+05 -4.0072240e+06 3.1362721e+03
+3.0357654e+05 -3.8238030e+06 -2.2572008e+02
+2.8697301e+05 -3.4935217e+06 2.6324552e+04
+2.5301703e+05 -2.9978008e+06 3.0248288e+04
+2.0301493e+05 -2.3381841e+06 2.6521154e+04
+1.3444621e+05 -1.5830788e+06 3.8002515e+04
+6.5598554e+04 -8.6018274e+05 4.7419558e+04
+2.1752199e+04 -3.3603713e+05 3.3392582e+04
+4.7679500e+03 -8.4134062e+04 1.1768572e+04
+1.6916373e+02 -1.4080794e+04 3.1412450e+03
+-5.0074897e+02 -1.6861724e+03 5.6020165e+02
+-2.7121364e+02 -1.9664747e+02 0.0000000e+00
+0 0 0
+0 0 0
+-1.0835763e-01 -6.0718818e+00 6.1550471e+00
+-1.5176402e+00 -1.2972421e+02 1.3699858e+02
+-1.9244008e+01 -2.3701301e+03 2.5202553e+03
+-2.9059662e+02 -3.9234772e+04 4.1936373e+04
+-4.7722288e+03 -5.5228890e+05 2.2167487e+04
+-1.3297975e+04 -1.5189982e+06 -4.7639056e+03
+-2.6474163e+04 -2.5614961e+06 -3.1436617e+03
+-4.0306303e+04 -3.4093370e+06 4.2292470e+03
+-4.6048936e+04 -3.8892163e+06 -2.2377349e+02
+-4.4099429e+04 -3.9713804e+06 -1.1894952e+03
+-4.2154249e+04 -3.7950616e+06 2.8892514e+03
+-4.0454588e+04 -3.4627367e+06 2.6520503e+03
+-3.4881313e+04 -2.9706628e+06 1.5225380e+03
+-2.6491929e+04 -2.3196099e+06 2.8305829e+03
+-1.8446302e+04 -1.5701226e+06 4.5378468e+03
+-1.1479050e+04 -8.5153577e+05 6.3123557e+03
+-5.7338264e+03 -3.2897265e+05 5.3833435e+03
+-2.0120071e+03 -7.7483378e+04 1.2143660e+03
+-4.9323110e+02 -1.2404731e+04 2.5450311e+02
+-7.9526961e+01 -1.4554335e+03 1.7747731e+02
+-3.4197973e+01 -1.7748265e+02 1.9933105e+02
+-2.8553497e+02 -5.4243917e+02 6.5622312e+02
+4.8180056e+02 3.3445939e+02 0.0000000e+00
+-3.4621774e-01 -1.4692972e+01 8.8950505e+00
+-4.3566115e+00 -2.8066186e+02 1.6326856e+02
+-4.1983164e+01 -4.3979717e+03 2.2233736e+03
+-3.7193398e+02 -5.7907356e+04 2.1167033e+04
+-3.0985378e+03 -5.3635456e+05 7.4421299e+03
+-8.6544952e+03 -1.4964876e+06 -8.7781893e+03
+-1.6951253e+04 -2.5520786e+06 -5.0372134e+03
+-2.5213787e+04 -3.3945518e+06 1.6065715e+03
+-2.8279481e+04 -3.8616207e+06 2.3479637e+02
+-2.6944984e+04 -3.9458524e+06 8.8593424e+02
+-2.5904339e+04 -3.7731894e+06 3.7850521e+03
+-2.4935099e+04 -3.4393077e+06 3.5298448e+03
+-2.1531345e+04 -2.9503179e+06 3.0546334e+03
+-1.6390520e+04 -2.3059224e+06 4.6322801e+03
+-1.1322916e+04 -1.5618314e+06 7.3547129e+03
+-6.8444543e+03 -8.4732131e+05 1.0526965e+04
+-3.2338885e+03 -3.2385133e+05 9.4395220e+03
+-1.0012094e+03 -6.9299923e+04 2.7145799e+03
+-2.1177093e+02 -1.0684775e+04 1.3905594e+03
+-4.0499465e+01 -1.3911954e+03 1.4610528e+03
+-8.0192885e+01 -2.5348196e+02 1.6946652e+03
+-5.1421529e+02 -3.2208353e+03 3.6387313e+03
+3.9077796e+03 -2.0678983e+03 0.0000000e+00
+-5.9382989e-01 -1.7911275e+01 3.6908053e+00
+-7.3572456e+00 -3.2173992e+02 5.0712965e+01
+-6.6602395e+01 -4.7138436e+03 4.2098702e+02
+-4.7738548e+02 -5.8245927e+04 1.1477427e+03
+-2.5554185e+03 -5.2693096e+05 -6.2448186e+03
+-6.3285542e+03 -1.4849292e+06 -1.2788153e+04
+-1.1723824e+04 -2.5478298e+06 -7.4482239e+03
+-1.7208170e+04 -3.3868116e+06 -1.5861301e+02
+-1.9528304e+04 -3.8446223e+06 1.1904635e+03
+-1.8934113e+04 -3.9287516e+06 2.6109928e+03
+-1.8286495e+04 -3.7579155e+06 4.9623391e+03
+-1.7563087e+04 -3.4231331e+06 5.2581628e+03
+-1.5269552e+04 -2.9363524e+06 5.4920924e+03
+-1.1816796e+04 -2.2970907e+06 7.7198923e+03
+-8.2997752e+03 -1.5583604e+06 1.2282020e+04
+-5.0608172e+03 -8.4803751e+05 1.8309542e+04
+-2.3697101e+03 -3.2205640e+05 1.9305804e+04
+-6.6858627e+02 -5.9651729e+04 1.0570414e+04
+-2.0524424e+02 -1.0636531e+04 1.0877380e+04
+-2.1864094e+02 -2.8082208e+03 1.2703492e+04
+-5.0951982e+02 -1.2605437e+03 1.4452298e+04
+1.9022681e+02 -1.2590186e+04 1.9285924e+04
+1.3605056e+04 -1.3731372e+04 0.0000000e+00
+-7.6208054e-01 -1.3935171e+01 -3.3900545e+00
+-1.0059216e+01 -2.3789106e+02 -7.9424465e+01
+-1.0233065e+02 -3.3299736e+03 -1.3836040e+03
+-8.8352428e+02 -4.0512192e+04 -1.8440919e+04
+-6.2172920e+03 -5.2108459e+05 -1.9775634e+04
+-1.5645051e+04 -1.4762447e+06 -1.7399714e+04
+-2.6789719e+04 -2.5365021e+06 -9.8220039e+03
+-3.6483672e+04 -3.3688339e+06 -1.5737429e+03
+-4.1646764e+04 -3.8177494e+06 2.1555914e+03
+-4.2430618e+04 -3.9000025e+06 4.8487458e+03
+-4.1230012e+04 -3.7303476e+06 7.6672354e+03
+-3.8660734e+04 -3.3964704e+06 9.3145600e+03
+-3.4013646e+04 -2.9137087e+06 1.1495396e+04
+-2.7511315e+04 -2.2819759e+06 1.6430772e+04
+-2.0024270e+04 -1.5528676e+06 2.5651083e+04
+-1.2391522e+04 -8.5307603e+05 4.0081419e+04
+-5.6776754e+03 -3.3597402e+05 5.8640916e+04
+-1.2495327e+03 -6.0788359e+04 6.1072045e+04
+-6.9199195e+02 -2.0614450e+04 7.1986302e+04
+-1.0529984e+03 -1.0242102e+04 8.0932495e+04
+-2.1092702e+03 -5.9019188e+03 8.8139443e+04
+5.1594766e+03 -3.6052635e+04 9.1696543e+04
+4.2722354e+04 -3.3617298e+04 0.0000000e+00
+-9.1893049e-01 -7.8377961e+00 -5.4575346e+00
+-1.4688692e+01 -1.2768158e+02 -1.0563043e+02
+-2.1325104e+02 -1.7518945e+03 -1.5429765e+03
+-3.3278397e+03 -2.3219570e+04 -1.6729268e+04
+-1.0617632e+05 -4.6392759e+05 -1.2665153e+04
+-2.9894594e+05 -1.3144927e+06 -6.0197871e+03
+-5.1427407e+05 -2.2607014e+06 4.7153424e+03
+-6.8552109e+05 -3.0036032e+06 1.9361241e+04
+-7.8031797e+05 -3.4020853e+06 3.4710559e+04
+-8.0466401e+05 -3.4753580e+06 5.3328678e+04
+-7.8252447e+05 -3.3234506e+06 7.6979553e+04
+-7.2974646e+05 -3.0231914e+06 1.0579868e+05
+-6.4841191e+05 -2.5922147e+06 1.4275204e+05
+-5.3710879e+05 -2.0325021e+06 1.9147169e+05
+-4.0108238e+05 -1.3894269e+06 2.5249220e+05
+-2.5476085e+05 -7.7157517e+05 3.1681668e+05
+-1.1619149e+05 -3.0092615e+05 3.5279858e+05
+-5.7342963e+03 -4.3176415e+04 3.3988504e+05
+-2.4264427e+03 -2.0068709e+04 3.4217672e+05
+-3.3486576e+03 -1.1626894e+04 3.4767808e+05
+-5.9139524e+03 -6.9881975e+03 3.5499073e+05
+2.3528062e+04 -5.0022139e+04 3.0703254e+05
+1.0474132e+05 -5.0027015e+04 0.0000000e+00
+-1.0597484e+00 -3.9919380e+00 -3.1920407e+00
+-1.9168353e+01 -6.6080658e+01 -5.3259556e+01
+-3.1940941e+02 -9.7097392e+02 -6.4765955e+02
+-5.4919267e+03 -1.4752625e+04 -5.9955017e+03
+-1.7218675e+05 -3.7090785e+05 -1.0679783e+04
+-4.7829702e+05 -1.0839596e+06 1.9428617e+03
+-8.2255287e+05 -1.8730215e+06 2.8988231e+04
+-1.1006312e+06 -2.4903148e+06 6.6803453e+04
+-1.2638761e+06 -2.8195296e+06 1.1338220e+05
+-1.3198406e+06 -2.8788011e+06 1.7098455e+05
+-1.3012326e+06 -2.7507913e+06 2.4240205e+05
+-1.2317516e+06 -2.4993080e+06 3.2979323e+05
+-1.1158906e+06 -2.1408345e+06 4.3567387e+05
+-9.5042706e+05 -1.6778964e+06 5.6056307e+05
+-7.3966190e+05 -1.1468955e+06 6.9794987e+05
+-4.9952301e+05 -6.3325322e+05 8.2586078e+05
+-2.5152657e+05 -2.3376045e+05 9.0341288e+05
+-1.2298110e+04 -2.7165738e+04 8.9677737e+05
+-5.0749942e+03 -1.3045250e+04 8.9504182e+05
+-6.9222641e+03 -7.7249479e+03 8.9850013e+05
+-1.1567479e+04 -4.5874495e+03 9.0638473e+05
+6.9110902e+04 -3.9558233e+04 7.4804639e+05
+2.0523188e+05 -4.1640696e+04 0.0000000e+00
+-1.1894598e+00 -2.0609285e+00 -1.2581528e+00
+-2.2648337e+01 -3.5935600e+01 -1.8807515e+01
+-3.9225183e+02 -5.7153658e+02 -2.0414728e+02
+-6.8319436e+03 -9.4040448e+03 -1.8917211e+03
+-2.0561151e+05 -2.7627192e+05 4.0554490e+02
+-5.7961176e+05 -8.3296013e+05 2.1418032e+04
+-1.0059583e+06 -1.4486548e+06 6.5775268e+04
+-1.3555559e+06 -1.9287181e+06 1.3134796e+05
+-1.5685672e+06 -2.1835650e+06 2.1664327e+05
+-1.6532654e+06 -2.2284039e+06 3.2349646e+05
+-1.6478667e+06 -2.1272826e+06 4.5492124e+05
+-1.5807482e+06 -1.9298832e+06 6.1371104e+05
+-1.4571761e+06 -1.6501289e+06 8.0191701e+05
+-1.2711187e+06 -1.2907369e+06 1.0179285e+06
+-1.0225695e+06 -8.7931378e+05 1.2504867e+06
+-7.2177002e+05 -4.7964753e+05 1.4692054e+06
+-3.8512687e+05 -1.6743424e+05 1.6205595e+06
+-1.9380743e+04 -1.6056149e+04 1.6238006e+06
+-8.2108837e+03 -7.3851664e+03 1.6259534e+06
+-1.1312300e+04 -4.4154278e+03 1.6333536e+06
+-1.8359230e+04 -2.8084740e+03 1.6456174e+06
+1.3866015e+05 -2.7677289e+04 1.3630907e+06
+3.3279909e+05 -1.8962041e+04 0.0000000e+00
+-1.2975227e+00 -1.0959611e+00 -2.6410196e-01
+-2.5128981e+01 -2.0059985e+01 -2.7054401e+00
+-4.3955253e+02 -3.3570062e+02 -6.3734551e+00
+-7.6678966e+03 -5.7219261e+03 3.0819790e+02
+-2.2156397e+05 -1.8943990e+05 1.2159974e+04
+-6.3222743e+05 -5.8480183e+05 4.3991066e+04
+-1.1067916e+06 -1.0232194e+06 1.0530503e+05
+-1.5018070e+06 -1.3644263e+06 1.9709873e+05
+-1.7499461e+06 -1.5450514e+06 3.1898398e+05
+-1.8587831e+06 -1.5762931e+06 4.7262619e+05
+-1.8689322e+06 -1.5034496e+06 6.6100283e+05
+-1.8112336e+06 -1.3618733e+06 8.8718553e+05
+-1.6915246e+06 -1.1621624e+06 1.1530784e+06
+-1.5018123e+06 -9.0687006e+05 1.4559065e+06
+-1.2375044e+06 -6.1536963e+05 1.7811913e+06
+-9.0067518e+05 -3.3180632e+05 2.0912341e+06
+-4.9829041e+05 -1.1108060e+05 2.3154027e+06
+-2.5804018e+04 -9.2811382e+03 2.3276034e+06
+-1.1440817e+04 -4.1359296e+03 2.3347863e+06
+-1.6028874e+04 -2.3998653e+03 2.3471476e+06
+-2.5744881e+04 -1.4676044e+03 2.3641653e+06
+2.0632619e+05 -2.0778368e+04 1.9634383e+06
+4.6286403e+05 -1.3235877e+04 0.0000000e+00
+-1.3805011e+00 -5.4834639e-01 1.8272937e-01
+-2.6876330e+01 -1.0333863e+01 4.5755660e+00
+-4.7146241e+02 -1.7726238e+02 9.1585397e+01
+-8.2301758e+03 -3.0639840e+03 1.6721844e+03
+-2.2961789e+05 -1.1034100e+05 2.1258760e+04
+-6.5879302e+05 -3.4579705e+05 6.2798193e+04
+-1.1601581e+06 -6.0772759e+05 1.3782540e+05
+-1.5826909e+06 -8.1143710e+05 2.4994133e+05
+-1.8540964e+06 -9.1912638e+05 3.9984820e+05
+-1.9804311e+06 -9.3756426e+05 5.8914628e+05
+-2.0028291e+06 -8.9366694e+05 8.2064041e+05
+-1.9533783e+06 -8.0856163e+05 1.0974252e+06
+-1.8387113e+06 -6.8890220e+05 1.4212623e+06
+-1.6501724e+06 -5.3653032e+05 1.7886628e+06
+-1.3800222e+06 -3.6294666e+05 2.1831276e+06
+-1.0233375e+06 -1.9409666e+05 2.5616126e+06
+-5.7777746e+05 -6.3346832e+04 2.8388732e+06
+-3.0649134e+04 -4.9070287e+03 2.8571892e+06
+-1.4174063e+04 -2.1575554e+03 2.8681714e+06
+-2.0097425e+04 -1.1506391e+03 2.8850008e+06
+-3.2328628e+04 -4.2541295e+02 2.9072142e+06
+2.4820454e+05 -8.5867950e+03 2.4137732e+06
+5.7389236e+05 -1.6270583e+04 0.0000000e+00
+-1.4338853e+00 -1.6785785e-01 3.7182436e-01
+-2.7959103e+01 -3.2023323e+00 7.8251163e+00
+-4.9089520e+02 -5.5442942e+01 1.4008179e+02
+-8.5724519e+03 -9.6291965e+02 2.4324919e+03
+-2.3354662e+05 -3.6221342e+04 2.6743190e+04
+-6.7100285e+05 -1.1433750e+05 7.4623248e+04
+-1.1855190e+06 -2.0141117e+05 1.5819426e+05
+-1.6225717e+06 -2.6911985e+05 2.8259316e+05
+-1.9069600e+06 -3.0489525e+05 4.4922277e+05
+-2.0433532e+06 -3.1099316e+05 6.5960551e+05
+-2.0727086e+06 -2.9633452e+05 9.1631710e+05
+-2.0277212e+06 -2.6794562e+05 1.2223200e+06
+-1.9157929e+06 -2.2809733e+05 1.5792061e+06
+-1.7283863e+06 -1.7746106e+05 1.9831060e+06
+-1.4562490e+06 -1.1985130e+05 2.4165800e+06
+-1.0901685e+06 -6.3831033e+04 2.8337119e+06
+-6.2137831e+05 -2.0600830e+04 3.1403800e+06
+-3.3419115e+04 -1.5582819e+03 3.1620414e+06
+-1.5762170e+04 -6.9722272e+02 3.1753314e+06
+-2.2428834e+04 -3.7112463e+02 3.1952775e+06
+-3.6270492e+04 -7.2203462e+01 3.2219933e+06
+2.6300506e+05 -4.7754476e+02 2.6907411e+06
+6.4643887e+05 -7.7419834e+03 0.0000000e+00
+-1.4524247e+00 1.6785785e-01 4.2466015e-01
+-2.8330001e+01 3.2023323e+00 8.7706991e+00
+-4.9750483e+02 5.5442942e+01 1.5497872e+02
+-8.6886129e+03 9.6291965e+02 2.6763407e+03
+-2.3473011e+05 3.6221342e+04 2.8548617e+04
+-6.7449016e+05 1.1433750e+05 7.8588463e+04
+-1.1929001e+06 2.0141117e+05 1.6500789e+05
+-1.6344386e+06 2.6911985e+05 2.9343412e+05
+-1.9229410e+06 3.0489525e+05 4.6550129e+05
+-2.0625302e+06 3.1099316e+05 6.8269001e+05
+-2.0940245e+06 2.9633452e+05 9.4746847e+05
+-2.0503060e+06 2.6794562e+05 1.2627205e+06
+-1.9390975e+06 2.2809733e+05 1.6299607e+06
+-1.7520130e+06 1.7746106e+05 2.0452057e+06
+-1.4793971e+06 1.1985130e+05 2.4907738e+06
+-1.1106367e+06 6.3831033e+04 2.9198980e+06
+-6.3470080e+05 2.0600830e+04 3.2355667e+06
+-3.4262490e+04 1.5582819e+03 3.2582234e+06
+-1.6209998e+04 6.9722281e+02 3.2721944e+06
+-2.3063954e+04 3.7112663e+02 3.2930818e+06
+-3.7397766e+04 7.2253251e+01 3.3213727e+06
+2.6513889e+05 4.7882492e+02 2.7868209e+06
+6.7053800e+05 7.7424320e+03 0.0000000e+00
+-1.4338853e+00 5.4834639e-01 3.7182436e-01
+-2.7959103e+01 1.0333863e+01 7.8251163e+00
+-4.9089520e+02 1.7726238e+02 1.4008179e+02
+-8.5724519e+03 3.0639840e+03 2.4324919e+03
+-2.3354662e+05 1.1034100e+05 2.6743190e+04
+-6.7100285e+05 3.4579705e+05 7.4623248e+04
+-1.1855190e+06 6.0772759e+05 1.5819426e+05
+-1.6225717e+06 8.1143710e+05 2.8259316e+05
+-1.9069600e+06 9.1912638e+05 4.4922277e+05
+-2.0433532e+06 9.3756426e+05 6.5960551e+05
+-2.0727086e+06 8.9366694e+05 9.1631710e+05
+-2.0277212e+06 8.0856163e+05 1.2223200e+06
+-1.9157929e+06 6.8890220e+05 1.5792061e+06
+-1.7283863e+06 5.3653032e+05 1.9831060e+06
+-1.4562490e+06 3.6294666e+05 2.4165800e+06
+-1.0901685e+06 1.9409666e+05 2.8337119e+06
+-6.2137831e+05 6.3346832e+04 3.1403800e+06
+-3.3419115e+04 4.9070287e+03 3.1620414e+06
+-1.5762170e+04 2.1575555e+03 3.1753314e+06
+-2.2428834e+04 1.1506436e+03 3.1952775e+06
+-3.6270520e+04 4.2554641e+02 3.2219933e+06
+2.6300340e+05 8.5909056e+03 2.6907407e+06
+6.4643775e+05 1.6270906e+04 0.0000000e+00
+-1.3805011e+00 1.0959611e+00 1.8272937e-01
+-2.6876330e+01 2.0059985e+01 4.5755660e+00
+-4.7146241e+02 3.3570062e+02 9.1585397e+01
+-8.2301758e+03 5.7219261e+03 1.6721844e+03
+-2.2961789e+05 1.8943990e+05 2.1258760e+04
+-6.5879302e+05 5.8480183e+05 6.2798193e+04
+-1.1601581e+06 1.0232194e+06 1.3782540e+05
+-1.5826909e+06 1.3644263e+06 2.4994133e+05
+-1.8540964e+06 1.5450514e+06 3.9984820e+05
+-1.9804311e+06 1.5762931e+06 5.8914628e+05
+-2.0028291e+06 1.5034496e+06 8.2064041e+05
+-1.9533783e+06 1.3618733e+06 1.0974252e+06
+-1.8387113e+06 1.1621624e+06 1.4212623e+06
+-1.6501724e+06 9.0687006e+05 1.7886628e+06
+-1.3800222e+06 6.1536963e+05 2.1831276e+06
+-1.0233375e+06 3.3180632e+05 2.5616126e+06
+-5.7777746e+05 1.1108060e+05 2.8388732e+06
+-3.0649134e+04 9.2811382e+03 2.8571892e+06
+-1.4174063e+04 4.1359297e+03 2.8681714e+06
+-2.0097425e+04 2.3998687e+03 2.8850008e+06
+-3.2328613e+04 1.4677058e+03 2.9072143e+06
+2.4820513e+05 2.0781640e+04 2.4137766e+06
+5.7389247e+05 1.3236499e+04 0.0000000e+00
+-1.2975227e+00 2.0609285e+00 -2.6410196e-01
+-2.5128981e+01 3.5935600e+01 -2.7054401e+00
+-4.3955253e+02 5.7153658e+02 -6.3734551e+00
+-7.6678966e+03 9.4040448e+03 3.0819790e+02
+-2.2156397e+05 2.7627192e+05 1.2159974e+04
+-6.3222743e+05 8.3296013e+05 4.3991066e+04
+-1.1067916e+06 1.4486548e+06 1.0530503e+05
+-1.5018070e+06 1.9287181e+06 1.9709873e+05
+-1.7499461e+06 2.1835650e+06 3.1898398e+05
+-1.8587831e+06 2.2284039e+06 4.7262619e+05
+-1.8689322e+06 2.1272826e+06 6.6100283e+05
+-1.8112336e+06 1.9298832e+06 8.8718553e+05
+-1.6915246e+06 1.6501289e+06 1.1530784e+06
+-1.5018123e+06 1.2907369e+06 1.4559065e+06
+-1.2375044e+06 8.7931378e+05 1.7811913e+06
+-9.0067518e+05 4.7964753e+05 2.0912341e+06
+-4.9829041e+05 1.6743424e+05 2.3154027e+06
+-2.5804018e+04 1.6056149e+04 2.3276034e+06
+-1.1440817e+04 7.3851664e+03 2.3347863e+06
+-1.6028874e+04 4.4154270e+03 2.3471476e+06
+-2.5744881e+04 2.8084366e+03 2.3641656e+06
+2.0632624e+05 2.7675595e+04 1.9634456e+06
+4.6286520e+05 1.8961776e+04 0.0000000e+00
+-1.1894598e+00 3.9919380e+00 -1.2581528e+00
+-2.2648337e+01 6.6080658e+01 -1.8807515e+01
+-3.9225183e+02 9.7097392e+02 -2.0414728e+02
+-6.8319436e+03 1.4752625e+04 -1.8917211e+03
+-2.0561151e+05 3.7090785e+05 4.0554490e+02
+-5.7961176e+05 1.0839596e+06 2.1418032e+04
+-1.0059583e+06 1.8730215e+06 6.5775268e+04
+-1.3555559e+06 2.4903148e+06 1.3134796e+05
+-1.5685672e+06 2.8195296e+06 2.1664327e+05
+-1.6532654e+06 2.8788011e+06 3.2349646e+05
+-1.6478667e+06 2.7507913e+06 4.5492124e+05
+-1.5807482e+06 2.4993080e+06 6.1371104e+05
+-1.4571761e+06 2.1408345e+06 8.0191701e+05
+-1.2711187e+06 1.6778964e+06 1.0179285e+06
+-1.0225695e+06 1.1468955e+06 1.2504867e+06
+-7.2177002e+05 6.3325322e+05 1.4692054e+06
+-3.8512687e+05 2.3376045e+05 1.6205595e+06
+-1.9380743e+04 2.7165738e+04 1.6238006e+06
+-8.2108837e+03 1.3045250e+04 1.6259534e+06
+-1.1312301e+04 7.7249486e+03 1.6333536e+06
+-1.8359211e+04 4.5874621e+03 1.6456176e+06
+1.3866058e+05 3.9556639e+04 1.3630936e+06
+3.3279890e+05 4.1640681e+04 0.0000000e+00
+-1.0597484e+00 7.8377961e+00 -3.1920407e+00
+-1.9168353e+01 1.2768158e+02 -5.3259556e+01
+-3.1940941e+02 1.7518945e+03 -6.4765955e+02
+-5.4919267e+03 2.3219570e+04 -5.9955017e+03
+-1.7218675e+05 4.6392759e+05 -1.0679783e+04
+-4.7829702e+05 1.3144927e+06 1.9428617e+03
+-8.2255287e+05 2.2607014e+06 2.8988231e+04
+-1.1006312e+06 3.0036032e+06 6.6803453e+04
+-1.2638761e+06 3.4020853e+06 1.1338220e+05
+-1.3198406e+06 3.4753580e+06 1.7098455e+05
+-1.3012326e+06 3.3234506e+06 2.4240205e+05
+-1.2317516e+06 3.0231914e+06 3.2979323e+05
+-1.1158906e+06 2.5922147e+06 4.3567387e+05
+-9.5042706e+05 2.0325021e+06 5.6056307e+05
+-7.3966190e+05 1.3894269e+06 6.9794987e+05
+-4.9952301e+05 7.7157517e+05 8.2586078e+05
+-2.5152657e+05 3.0092615e+05 9.0341288e+05
+-1.2298110e+04 4.3176415e+04 8.9677737e+05
+-5.0749945e+03 2.0068708e+04 8.9504182e+05
+-6.9222718e+03 1.1626899e+04 8.9850013e+05
+-1.1567568e+04 6.9883505e+03 9.0638476e+05
+6.9106203e+04 5.0025754e+04 7.4804360e+05
+2.0523111e+05 5.0027360e+04 0.0000000e+00
+-9.1893049e-01 1.3935171e+01 -5.4575346e+00
+-1.4688692e+01 2.3789106e+02 -1.0563043e+02
+-2.1325104e+02 3.3299736e+03 -1.5429765e+03
+-3.3278397e+03 4.0512192e+04 -1.6729268e+04
+-1.0617632e+05 5.2108459e+05 -1.2665153e+04
+-2.9894594e+05 1.4762447e+06 -6.0197871e+03
+-5.1427407e+05 2.5365021e+06 4.7153424e+03
+-6.8552109e+05 3.3688339e+06 1.9361241e+04
+-7.8031797e+05 3.8177494e+06 3.4710559e+04
+-8.0466401e+05 3.9000025e+06 5.3328678e+04
+-7.8252447e+05 3.7303476e+06 7.6979553e+04
+-7.2974646e+05 3.3964704e+06 1.0579868e+05
+-6.4841191e+05 2.9137087e+06 1.4275204e+05
+-5.3710879e+05 2.2819759e+06 1.9147169e+05
+-4.0108238e+05 1.5528676e+06 2.5249220e+05
+-2.5476085e+05 8.5307603e+05 3.1681668e+05
+-1.1619149e+05 3.3597402e+05 3.5279858e+05
+-5.7342963e+03 6.0788359e+04 3.3988504e+05
+-2.4264428e+03 2.0614450e+04 3.4217672e+05
+-3.3486599e+03 1.0242108e+04 3.4767809e+05
+-5.9140358e+03 5.9020936e+03 3.5499076e+05
+2.3525047e+04 3.6057926e+04 3.0703194e+05
+1.0474071e+05 3.3618275e+04 0.0000000e+00
+-7.6208054e-01 1.7911275e+01 -3.3900545e+00
+-1.0059216e+01 3.2173992e+02 -7.9424465e+01
+-1.0233065e+02 4.7138436e+03 -1.3836040e+03
+-8.8352428e+02 5.8245927e+04 -1.8440919e+04
+-6.2172920e+03 5.2693096e+05 -1.9775634e+04
+-1.5645051e+04 1.4849292e+06 -1.7399714e+04
+-2.6789719e+04 2.5478298e+06 -9.8220039e+03
+-3.6483672e+04 3.3868116e+06 -1.5737429e+03
+-4.1646764e+04 3.8446223e+06 2.1555914e+03
+-4.2430618e+04 3.9287516e+06 4.8487458e+03
+-4.1230012e+04 3.7579155e+06 7.6672354e+03
+-3.8660734e+04 3.4231331e+06 9.3145600e+03
+-3.4013646e+04 2.9363524e+06 1.1495396e+04
+-2.7511315e+04 2.2970907e+06 1.6430772e+04
+-2.0024270e+04 1.5583604e+06 2.5651083e+04
+-1.2391522e+04 8.4803751e+05 4.0081419e+04
+-5.6776754e+03 3.2205640e+05 5.8640916e+04
+-1.2495327e+03 5.9651729e+04 6.1072045e+04
+-6.9199193e+02 1.0636531e+04 7.1986303e+04
+-1.0529995e+03 2.8082217e+03 8.0932506e+04
+-2.1093360e+03 1.2606097e+03 8.8139684e+04
+5.1572727e+03 1.2592588e+04 9.1702922e+04
+4.2722597e+04 1.3732440e+04 0.0000000e+00
+-5.9382989e-01 1.4692972e+01 3.6908053e+00
+-7.3572456e+00 2.8066186e+02 5.0712965e+01
+-6.6602395e+01 4.3979717e+03 4.2098702e+02
+-4.7738548e+02 5.7907356e+04 1.1477427e+03
+-2.5554185e+03 5.3635456e+05 -6.2448186e+03
+-6.3285542e+03 1.4964876e+06 -1.2788153e+04
+-1.1723824e+04 2.5520786e+06 -7.4482240e+03
+-1.7208170e+04 3.3945518e+06 -1.5861292e+02
+-1.9528305e+04 3.8616207e+06 1.1904635e+03
+-1.8934113e+04 3.9458524e+06 2.6109927e+03
+-1.8286496e+04 3.7731894e+06 4.9623390e+03
+-1.7563087e+04 3.4393077e+06 5.2581628e+03
+-1.5269552e+04 2.9503179e+06 5.4920924e+03
+-1.1816796e+04 2.3059224e+06 7.7198923e+03
+-8.2997752e+03 1.5618314e+06 1.2282020e+04
+-5.0608172e+03 8.4732131e+05 1.8309542e+04
+-2.3697101e+03 3.2385133e+05 1.9305804e+04
+-6.6858627e+02 6.9299923e+04 1.0570414e+04
+-2.0524416e+02 1.0684775e+04 1.0877381e+04
+-2.1864253e+02 1.3911893e+03 1.2703507e+04
+-5.0961406e+02 2.5343707e+02 1.4452586e+04
+1.8684041e+02 3.2202509e+03 1.9293842e+04
+1.3606121e+04 2.0682079e+03 0.0000000e+00
+-3.4621774e-01 6.0718818e+00 8.8950505e+00
+-4.3566115e+00 1.2972421e+02 1.6326856e+02
+-4.1983164e+01 2.3701301e+03 2.2233736e+03
+-3.7193398e+02 3.9234772e+04 2.1167033e+04
+-3.0985372e+03 5.5228890e+05 7.4421292e+03
+-8.6544951e+03 1.5189982e+06 -8.7781909e+03
+-1.6951255e+04 2.5614960e+06 -5.0372133e+03
+-2.5213791e+04 3.4093370e+06 1.6065741e+03
+-2.8279486e+04 3.8892163e+06 2.3479652e+02
+-2.6944990e+04 3.9713804e+06 8.8593358e+02
+-2.5904343e+04 3.7950616e+06 3.7850499e+03
+-2.4935100e+04 3.4627367e+06 3.5298442e+03
+-2.1531344e+04 2.9706628e+06 3.0546340e+03
+-1.6390519e+04 2.3196099e+06 4.6322807e+03
+-1.1322917e+04 1.5701226e+06 7.3547131e+03
+-6.8444544e+03 8.5153577e+05 1.0526965e+04
+-3.2338886e+03 3.2897265e+05 9.4395220e+03
+-1.0012094e+03 7.7483378e+04 2.7145800e+03
+-2.1177110e+02 1.2404730e+04 1.3905595e+03
+-4.0498300e+01 1.4554331e+03 1.4610798e+03
+-8.0287000e+01 1.7739561e+02 1.6948923e+03
+-5.1837540e+02 5.4194837e+02 3.6433158e+03
+3.9080988e+03 -3.3410097e+02 0.0000000e+00
+-1.0835763e-01 0.0000000e+00 6.1550471e+00
+-1.5176401e+00 0.0000000e+00 1.3699858e+02
+-1.9244005e+01 0.0000000e+00 2.5202552e+03
+-2.9059604e+02 0.0000000e+00 4.1936372e+04
+-4.7722003e+03 5.7440929e+05 2.2167478e+04
+-1.3297924e+04 1.5523474e+06 -4.7639425e+03
+-2.6474177e+04 2.5749482e+06 -3.1436315e+03
+-4.0306428e+04 3.4289957e+06 4.2293181e+03
+-4.6049106e+04 3.9282702e+06 -2.2380148e+02
+-4.4099598e+04 4.0072241e+06 -1.1895044e+03
+-4.2154372e+04 3.8238027e+06 2.8891615e+03
+-4.0454614e+04 3.4935217e+06 2.6520315e+03
+-3.4881257e+04 2.9978008e+06 1.5225506e+03
+-2.6491914e+04 2.3381841e+06 2.8305938e+03
+-1.8446305e+04 1.5830788e+06 4.5378479e+03
+-1.1479054e+04 8.6018272e+05 6.3123578e+03
+-5.7338313e+03 3.3603714e+05 5.3833470e+03
+-2.0120127e+03 8.4134056e+04 1.2143670e+03
+-4.9323482e+02 1.4080789e+04 2.5450674e+02
+-7.9528039e+01 1.6861705e+03 1.7748044e+02
+-3.4179209e+01 1.9663937e+02 1.9953252e+02
+-2.8714884e+02 0.0000000e+00 6.5751819e+02
+4.8171728e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.0683891e+04 4.0017618e+05 9.7280413e+04
+1.5262946e+05 1.3452096e+06 3.6517642e+04
+2.6489551e+05 2.1803499e+06 -3.7701875e+04
+3.1220911e+05 2.7782231e+06 1.4178839e+04
+3.0761649e+05 3.2615054e+06 4.2850689e+04
+3.0308881e+05 3.4213054e+06 3.1346947e+03
+3.0357081e+05 3.2229011e+06 -2.2561623e+02
+2.8697197e+05 2.8962876e+06 2.6323940e+04
+2.5301874e+05 2.4916787e+06 3.0248501e+04
+2.0301541e+05 1.9473267e+06 2.6521009e+04
+1.3444616e+05 1.3070407e+06 3.8002447e+04
+6.5598328e+04 7.0818135e+05 4.7419744e+04
+2.1752065e+04 2.9108069e+05 3.3392663e+04
+4.7678400e+03 8.6960935e+04 1.1768695e+04
+1.6907084e+02 1.8405004e+04 3.1413966e+03
+-5.0078653e+02 3.5544507e+03 5.6028120e+02
+-2.7125357e+02 6.6464226e+02 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+8.6128005e+04 0.0000000e+00 6.0824915e+04
+2.7832767e+05 0.0000000e+00 1.1556728e+05
+4.7193564e+05 0.0000000e+00 -1.3542916e+03
+6.7628189e+05 0.0000000e+00 -7.5895125e+04
+8.2809900e+05 0.0000000e+00 2.0057608e+04
+8.2597775e+05 0.0000000e+00 6.2470261e+04
+7.5444314e+05 0.0000000e+00 1.3102399e+04
+7.0226756e+05 0.0000000e+00 9.0815247e+03
+6.1595323e+05 0.0000000e+00 2.7709640e+04
+4.7395531e+05 0.0000000e+00 2.5710945e+04
+3.2706181e+05 0.0000000e+00 3.5591360e+04
+2.0076898e+05 0.0000000e+00 4.5431395e+04
+1.0193534e+05 0.0000000e+00 3.1816980e+04
+4.0820936e+04 0.0000000e+00 1.2597272e+04
+1.2980053e+04 0.0000000e+00 1.8653725e+03
+3.7746181e+03 0.0000000e+00 -2.4174618e+02
+5.1433003e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-5.5164287e+05 -8.6489818e+05 1.6729955e+05
+-2.0900087e+06 -2.9623418e+06 4.1482111e+05
+-3.7547781e+06 -4.7714610e+06 1.8884039e+05
+-4.6062472e+06 -5.8465678e+06 -1.5751088e+05
+-4.8559695e+06 -6.6273915e+06 -6.3972983e+04
+-5.0235838e+06 -6.9470956e+06 1.2568684e+05
+-4.9910770e+06 -6.6343899e+06 9.4438165e+04
+-4.6276159e+06 -6.0136582e+06 3.7266253e+04
+-4.0715345e+06 -5.2364056e+06 5.0038133e+04
+-3.2984666e+06 -4.1678877e+06 9.2024723e+04
+-2.2732335e+06 -2.8182998e+06 1.5963792e+05
+-1.2666186e+06 -1.5016913e+06 1.8648232e+05
+-5.7049966e+05 -5.9100512e+05 1.3251876e+05
+-2.1062507e+05 -1.6389533e+05 5.9368395e+04
+-6.2709602e+04 -2.8438936e+04 1.5080704e+04
+-1.3176011e+04 -2.6573193e+03 1.9948122e+03
+-1.5651573e+03 4.0636257e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.9211479e+03 -1.0179691e+06 1.9083277e+05
+-1.6387752e+04 -2.6954664e+06 9.2971893e+04
+4.2899292e+04 -4.3708525e+06 -8.5641184e+04
+1.5086367e+05 -5.7423392e+06 -2.8521603e+04
+1.6297948e+05 -6.5731358e+06 6.1866278e+04
+1.2188128e+05 -6.7285204e+06 2.4504541e+04
+1.2364944e+05 -6.4289983e+06 -9.6005711e+02
+1.3227695e+05 -5.8889141e+06 2.8991877e+04
+1.0434175e+05 -5.0945832e+06 3.5844767e+04
+6.6788236e+04 -4.0190451e+06 2.3228846e+04
+4.8120106e+04 -2.7478018e+06 3.9057778e+04
+4.0650808e+04 -1.4998267e+06 6.2140694e+04
+2.9186961e+04 -5.8274091e+05 4.6441717e+04
+1.5460509e+04 -1.4205808e+05 1.3911900e+04
+5.9949781e+03 -2.2561297e+04 2.2084462e+03
+1.5765943e+03 -2.6933766e+03 1.6715915e+02
+2.7344794e+02 -3.3686449e+02 0.0000000e+00
+0 0 0
+0 0 0
+-4.6038956e-01 -1.1624308e+01 1.1976340e+01
+-5.2726345e+00 -2.4790731e+02 2.6363864e+02
+-2.0155848e+01 -4.4955812e+03 4.7601317e+03
+6.8458909e+02 -7.3308200e+04 7.7093146e+04
+2.1249937e+04 -1.0070228e+06 4.0124915e+04
+6.5775207e+04 -2.7214690e+06 -1.2945615e+04
+1.1514706e+05 -4.5141632e+06 -1.1256202e+04
+1.4290441e+05 -5.9449095e+06 8.1033630e+03
+1.5158548e+05 -6.7664772e+06 3.8103657e+03
+1.5536789e+05 -6.9222291e+06 -1.9479665e+03
+1.5268395e+05 -6.6282773e+06 2.4928158e+03
+1.4105390e+05 -6.0720644e+06 4.1346605e+03
+1.2410750e+05 -5.2528183e+06 3.3809544e+03
+1.0038132e+05 -4.1467504e+06 4.2129862e+03
+6.8857804e+04 -2.8365886e+06 5.6957520e+03
+3.7327274e+04 -1.5516946e+06 8.7573812e+03
+1.4799807e+04 -6.0275631e+05 8.2391398e+03
+3.7301668e+03 -1.4125177e+05 1.6906559e+03
+5.3028490e+02 -2.2321284e+04 4.2712787e+02
+1.0897360e+00 -2.6951480e+03 3.4828279e+02
+-1.5864570e+01 -3.4898221e+02 3.4207145e+02
+2.8704281e+02 -1.3049461e+02 -1.0000963e+02
+-1.5786583e+03 -2.0927009e+03 0.0000000e+00
+-1.5359391e+00 -2.7948053e+01 1.7513467e+01
+-1.9292304e+01 -5.3413706e+02 3.1867892e+02
+-1.5155203e+02 -8.3428228e+03 4.2754894e+03
+-3.6193214e+02 -1.0888831e+05 3.9845599e+04
+7.4904269e+03 -9.9257373e+05 1.4807595e+04
+2.8858290e+04 -2.7263674e+06 -1.7806799e+04
+5.2529197e+04 -4.5893795e+06 -1.2070870e+04
+6.3632262e+04 -6.0495145e+06 3.6880839e+03
+6.6051634e+04 -6.8601371e+06 3.0169321e+03
+6.7954573e+04 -7.0154691e+06 1.3573284e+03
+6.6827304e+04 -6.7247039e+06 5.0522385e+03
+6.1288707e+04 -6.1593105e+06 6.0745342e+03
+5.3993719e+04 -5.3282864e+06 6.0175743e+03
+4.3830635e+04 -4.2090216e+06 8.0676473e+03
+2.9749701e+04 -2.8818412e+06 1.2247544e+04
+1.5708084e+04 -1.5802060e+06 1.8206379e+04
+5.9703542e+03 -6.1103880e+05 1.7284630e+04
+1.3544123e+03 -1.3141683e+05 5.0940588e+03
+1.4846778e+02 -2.0298620e+04 2.7111568e+03
+-1.2674190e+01 -2.7138306e+03 2.7020142e+03
+8.5560898e-01 -4.2486352e+02 2.6968469e+03
+1.6057531e+03 -2.2187421e+03 2.6651250e+03
+-1.3540998e+04 -1.5863070e+04 0.0000000e+00
+-2.5443377e+00 -3.3805952e+01 7.8084063e+00
+-3.3428342e+01 -6.0848815e+02 1.0823059e+02
+-3.0922321e+02 -8.9118930e+03 9.1992156e+02
+-1.9135721e+03 -1.0958117e+05 3.0489665e+03
+-4.9874346e+03 -9.7814526e+05 -8.9474884e+03
+-4.8494554e+03 -2.7137500e+06 -2.3044007e+04
+-3.7473281e+03 -4.6054707e+06 -1.4929314e+04
+-7.2895379e+03 -6.0743478e+06 -1.4627468e+01
+-1.1807546e+04 -6.8713420e+06 3.4694912e+03
+-1.2431841e+04 -7.0228197e+06 4.3178163e+03
+-1.1698728e+04 -6.7345255e+06 7.5516383e+03
+-1.1388864e+04 -6.1668829e+06 8.9497901e+03
+-1.0037548e+04 -5.3344425e+06 9.8738475e+03
+-8.0676201e+03 -4.2163563e+06 1.3459392e+04
+-6.5023834e+03 -2.8916253e+06 2.1446161e+04
+-4.6909299e+03 -1.5921899e+06 3.3060204e+04
+-2.5292819e+03 -6.1456469e+05 3.6745663e+04
+-8.2868951e+02 -1.1488689e+05 2.0375828e+04
+-2.1937076e+02 -2.0491488e+04 2.0582823e+04
+1.5230310e+02 -5.2386838e+03 2.2736732e+04
+5.4183844e+02 -1.7388123e+03 2.2999322e+04
+6.1428090e+03 -1.4798352e+04 2.9626352e+04
+-6.4298072e+04 -6.2452468e+04 0.0000000e+00
+-2.9425340e+00 -2.6047598e+01 -5.5779006e+00
+-4.0758184e+01 -4.4607883e+02 -1.3728826e+02
+-4.2837126e+02 -6.2604929e+03 -2.4626477e+03
+-3.5954819e+03 -7.6235674e+04 -3.3096186e+04
+-2.1775357e+04 -9.6346571e+05 -3.2217673e+04
+-4.9846630e+04 -2.6822751e+06 -2.9490985e+04
+-7.9656973e+04 -4.5644292e+06 -1.7665277e+04
+-1.0558197e+05 -6.0203780e+06 -2.5367931e+03
+-1.2171965e+05 -6.7982614e+06 4.4554705e+03
+-1.2593155e+05 -6.9429709e+06 8.1076230e+03
+-1.2238333e+05 -6.6576641e+06 1.2399599e+04
+-1.1417738e+05 -6.0946942e+06 1.5727569e+04
+-1.0083433e+05 -5.2717210e+06 1.9826714e+04
+-8.2338081e+04 -4.1700756e+06 2.8372808e+04
+-6.0300408e+04 -2.8680670e+06 4.5090664e+04
+-3.7520039e+04 -1.5949818e+06 7.3011039e+04
+-1.7886396e+04 -6.4207793e+05 1.1273300e+05
+-4.1605083e+03 -1.1627781e+05 1.1703490e+05
+-8.2586827e+02 -3.8830087e+04 1.3550737e+05
+1.3941916e+03 -1.8513087e+04 1.4633458e+05
+3.8335302e+03 -8.9253732e+03 1.4757834e+05
+1.6118399e+04 -4.9811341e+04 1.7163241e+05
+-2.1533099e+05 -1.3962036e+05 0.0000000e+00
+-2.9226172e+00 -1.4406604e+01 -9.6373071e+00
+-4.6256242e+01 -2.3452116e+02 -1.8962742e+02
+-6.4410040e+02 -3.2026620e+03 -2.8166089e+03
+-9.3652634e+03 -4.1886708e+04 -3.1128151e+04
+-2.5441960e+05 -8.3030423e+05 -1.6046349e+04
+-6.9508875e+05 -2.2981068e+06 -4.0718902e+03
+-1.1778010e+06 -3.9168924e+06 1.1918261e+04
+-1.5557475e+06 -5.1739806e+06 3.5747376e+04
+-1.7622508e+06 -5.8416819e+06 6.1100642e+04
+-1.8126094e+06 -5.9652913e+06 9.1366464e+04
+-1.7611954e+06 -5.7186265e+06 1.3099979e+05
+-1.6449409e+06 -5.2295018e+06 1.8100183e+05
+-1.4668300e+06 -4.5184382e+06 2.4613718e+05
+-1.2198347e+06 -3.5750978e+06 3.3388521e+05
+-9.1563755e+05 -2.4683607e+06 4.4873408e+05
+-5.9300491e+05 -1.3876850e+06 5.7968135e+05
+-2.9245828e+05 -5.5460613e+05 6.6847635e+05
+-1.8046671e+04 -7.7913425e+04 6.4242434e+05
+-2.4549388e+03 -3.5821182e+04 6.3944393e+05
+6.2552944e+03 -1.9841170e+04 6.3116806e+05
+1.5371661e+04 -9.5928216e+03 6.1054990e+05
+3.0279158e+04 -6.6141700e+04 6.2012916e+05
+-5.8455538e+05 -2.0059108e+05 0.0000000e+00
+-2.7604152e+00 -7.1926857e+00 -5.5132512e+00
+-4.8697755e+01 -1.1841482e+02 -9.2090188e+01
+-7.8367447e+02 -1.7214736e+03 -1.1090135e+03
+-1.2998796e+04 -2.5728140e+04 -9.7607124e+03
+-3.5098659e+05 -6.4706177e+05 -1.4203345e+04
+-9.6345716e+05 -1.8350294e+06 7.8794908e+03
+-1.6425391e+06 -3.1400167e+06 5.0990109e+04
+-2.1821404e+06 -4.1525142e+06 1.1103289e+05
+-2.4913334e+06 -4.6884922e+06 1.8530043e+05
+-2.5911355e+06 -4.7864577e+06 2.7776163e+05
+-2.5508184e+06 -4.5854185e+06 3.9413938e+05
+-2.4189268e+06 -4.1876605e+06 5.3947326e+05
+-2.2022171e+06 -3.6128808e+06 7.2024235e+05
+-1.8914497e+06 -2.8558411e+06 9.4200828e+05
+-1.4964522e+06 -1.9711743e+06 1.2016121e+06
+-1.0532777e+06 -1.1028264e+06 1.4705082e+06
+-5.8864756e+05 -4.1902116e+05 1.6720443e+06
+-3.7496329e+04 -4.7351212e+04 1.6666803e+06
+-4.4464067e+03 -2.2596093e+04 1.6528266e+06
+1.6375262e+04 -1.2767105e+04 1.6224550e+06
+3.8535675e+04 -5.7001965e+03 1.5684592e+06
+3.9829815e+04 -4.1854675e+04 1.5734532e+06
+-1.2863989e+06 -1.6960915e+05 0.0000000e+00
+-2.7326275e+00 -3.6538122e+00 -1.9957059e+00
+-5.1330676e+01 -6.3285041e+01 -2.8443149e+01
+-8.7545839e+02 -9.9676152e+02 -2.6994872e+02
+-1.5021245e+04 -1.6212015e+04 -1.5967729e+03
+-3.8335351e+05 -4.7438516e+05 3.4686215e+03
+-1.0702147e+06 -1.3791250e+06 3.8167166e+04
+-1.8437732e+06 -2.3726178e+06 1.0858319e+05
+-2.4690813e+06 -3.1423759e+06 2.1197033e+05
+-2.8426072e+06 -3.5491959e+06 3.4671407e+05
+-2.9867143e+06 -3.6229099e+06 5.1661521e+05
+-2.9767067e+06 -3.4681020e+06 7.2813861e+05
+-2.8665577e+06 -3.1622510e+06 9.8853859e+05
+-2.6650515e+06 -2.7224624e+06 1.3059956e+06
+-2.3603579e+06 -2.1470257e+06 1.6864194e+06
+-1.9546723e+06 -1.4770643e+06 2.1244123e+06
+-1.4666201e+06 -8.1731925e+05 2.5837551e+06
+-8.8881557e+05 -2.9527602e+05 2.9636987e+06
+-5.9113194e+04 -2.7533255e+04 2.9836132e+06
+-6.0740419e+03 -1.2805041e+04 2.9716853e+06
+3.0325843e+04 -7.6755906e+03 2.9249556e+06
+6.9711776e+04 -4.1987661e+03 2.8353832e+06
+4.5278965e+04 -2.2870785e+04 2.9097798e+06
+-2.2642237e+06 -7.3271720e+04 0.0000000e+00
+-2.8097372e+00 -1.9318790e+00 -2.0971873e-01
+-5.4175938e+01 -3.5190189e+01 7.4238578e-01
+-9.4262794e+02 -5.8521169e+02 9.2267955e+01
+-1.6341955e+04 -9.9037568e+03 2.4580678e+03
+-3.9311213e+05 -3.2237375e+05 2.1994825e+04
+-1.1078808e+06 -9.5460621e+05 7.3129309e+04
+-1.9254779e+06 -1.6506446e+06 1.6984235e+05
+-2.5985874e+06 -2.1896460e+06 3.1389280e+05
+-3.0162300e+06 -2.4744199e+06 5.0540071e+05
+-3.1986566e+06 -2.5258059e+06 7.4817013e+05
+-3.2217437e+06 -2.4161920e+06 1.0490716e+06
+-3.1416167e+06 -2.1996940e+06 1.4168977e+06
+-2.9691651e+06 -1.8896321e+06 1.8617079e+06
+-2.6918010e+06 -1.4863447e+06 2.3910156e+06
+-2.3043948e+06 -1.0185986e+06 2.9994404e+06
+-1.8055677e+06 -5.5766889e+05 3.6446826e+06
+-1.1488996e+06 -1.9421122e+05 4.1942270e+06
+-7.8501310e+04 -1.5888830e+04 4.2352798e+06
+-7.2895605e+03 -7.3577611e+03 4.2256813e+06
+4.3615466e+04 -4.6159885e+03 4.1629773e+06
+9.9375010e+04 -2.9620358e+03 4.0366207e+06
+6.4241668e+04 -2.2350439e+04 4.1781849e+06
+-3.2213320e+06 -2.5526363e+04 0.0000000e+00
+-2.9169714e+00 -9.6918649e-01 5.7377781e-01
+-5.6755132e+01 -1.8211227e+01 1.3473618e+01
+-9.9401515e+02 -3.1114001e+02 2.6195469e+02
+-1.7298359e+04 -5.3514110e+03 4.7777916e+03
+-3.9643691e+05 -1.8689297e+05 3.6116035e+04
+-1.1194851e+06 -5.5982733e+05 1.0202928e+05
+-1.9569252e+06 -9.7168363e+05 2.1983543e+05
+-2.6570385e+06 -1.2906482e+06 3.9518522e+05
+-3.1039589e+06 -1.4592155e+06 6.2984324e+05
+-3.3144382e+06 -1.4895929e+06 9.2763736e+05
+-3.3626559e+06 -1.4242113e+06 1.2954836e+06
+-3.3054851e+06 -1.2950509e+06 1.7429472e+06
+-3.1560768e+06 -1.1106013e+06 2.2812820e+06
+-2.9027220e+06 -8.7177052e+05 2.9192575e+06
+-2.5356798e+06 -5.9561672e+05 3.6519332e+06
+-2.0380326e+06 -3.2361788e+05 4.4325772e+06
+-1.3312564e+06 -1.1022929e+05 5.1020743e+06
+-9.2809975e+04 -8.3489500e+03 5.1566952e+06
+-8.7058488e+03 -3.7804925e+03 5.1476498e+06
+5.2226854e+04 -2.1591040e+03 5.0728686e+06
+1.1933690e+05 -9.4868965e+02 4.9191897e+06
+9.3297315e+04 -1.3414096e+04 5.0651608e+06
+-3.8744095e+06 -3.2851567e+04 0.0000000e+00
+-3.0008082e+00 -2.9784249e-01 8.9557882e-01
+-5.8547413e+01 -5.6703272e+00 1.8942989e+01
+-1.0274793e+03 -9.7867956e+01 3.4225499e+02
+-1.7904440e+04 -1.6926065e+03 6.0154382e+03
+-3.9773666e+05 -6.1230502e+04 4.4543009e+04
+-1.1219624e+06 -1.8441190e+05 1.2008709e+05
+-1.9673531e+06 -3.2071800e+05 2.5095557e+05
+-2.6810665e+06 -4.2630389e+05 4.4510610e+05
+-3.1442870e+06 -4.8212090e+05 7.0533847e+05
+-3.3708272e+06 -4.9217855e+05 1.0353982e+06
+-3.4330649e+06 -4.7044879e+05 1.4419919e+06
+-3.3881095e+06 -4.2751195e+05 1.9348413e+06
+-3.2509116e+06 -3.6628659e+05 2.5256453e+06
+-3.0111153e+06 -2.8719923e+05 3.2238029e+06
+-2.6569990e+06 -1.9590578e+05 4.0248419e+06
+-2.1627487e+06 -1.0603249e+05 4.8798367e+06
+-1.4300424e+06 -3.5756037e+04 5.6140276e+06
+-1.0113482e+05 -2.6137132e+03 5.6760081e+06
+-1.0022533e+04 -1.1548087e+03 5.6676427e+06
+5.6145739e+04 -5.8586664e+02 5.5874949e+06
+1.2895696e+05 -4.9587146e+01 5.4213684e+06
+1.0925595e+05 -2.2703596e+03 5.5639737e+06
+-4.1961393e+06 -1.9521093e+04 0.0000000e+00
+-3.0318238e+00 2.9784249e-01 9.8371411e-01
+-5.9186831e+01 5.6703272e+00 2.0499890e+01
+-1.0391468e+03 9.7867956e+01 3.6640598e+02
+-1.8113157e+04 1.6926065e+03 6.4057369e+03
+-3.9808911e+05 6.1230502e+04 4.7303733e+04
+-1.1221317e+06 1.8441190e+05 1.2612150e+05
+-1.9695439e+06 3.2071800e+05 2.6132922e+05
+-2.6873374e+06 4.2630389e+05 4.6162027e+05
+-3.1556944e+06 4.8212090e+05 7.3013183e+05
+-3.3873055e+06 4.9217855e+05 1.0705500e+06
+-3.4538246e+06 4.7044879e+05 1.4894525e+06
+-3.4124158e+06 4.2751195e+05 1.9965383e+06
+-3.2787190e+06 3.6628659e+05 2.6035866e+06
+-3.0429985e+06 2.8719923e+05 3.3201737e+06
+-2.6930698e+06 1.9590578e+05 4.1420349e+06
+-2.2003373e+06 1.0603249e+05 5.0196705e+06
+-1.4599297e+06 3.5756037e+04 5.7733873e+06
+-1.0378691e+05 2.6137132e+03 5.8376843e+06
+-1.0529617e+04 1.1548088e+03 5.8296943e+06
+5.7206567e+04 5.8586758e+02 5.7482521e+06
+1.3162764e+05 4.9593013e+01 5.5791275e+06
+1.1150877e+05 2.2696031e+03 5.7282176e+06
+-4.2884112e+06 1.9521640e+04 0.0000000e+00
+-3.0008082e+00 9.6918649e-01 8.9557882e-01
+-5.8547413e+01 1.8211227e+01 1.8942989e+01
+-1.0274793e+03 3.1114001e+02 3.4225499e+02
+-1.7904440e+04 5.3514110e+03 6.0154382e+03
+-3.9773666e+05 1.8689297e+05 4.4543009e+04
+-1.1219624e+06 5.5982733e+05 1.2008709e+05
+-1.9673531e+06 9.7168363e+05 2.5095557e+05
+-2.6810665e+06 1.2906482e+06 4.4510610e+05
+-3.1442870e+06 1.4592155e+06 7.0533847e+05
+-3.3708272e+06 1.4895929e+06 1.0353982e+06
+-3.4330649e+06 1.4242113e+06 1.4419919e+06
+-3.3881095e+06 1.2950509e+06 1.9348413e+06
+-3.2509116e+06 1.1106013e+06 2.5256453e+06
+-3.0111153e+06 8.7177052e+05 3.2238029e+06
+-2.6569990e+06 5.9561672e+05 4.0248419e+06
+-2.1627487e+06 3.2361788e+05 4.8798367e+06
+-1.4300424e+06 1.1022929e+05 5.6140276e+06
+-1.0113482e+05 8.3489500e+03 5.6760081e+06
+-1.0022533e+04 3.7804927e+03 5.6676427e+06
+5.6145741e+04 2.1591068e+03 5.5874949e+06
+1.2895701e+05 9.4876535e+02 5.4213682e+06
+1.0925777e+05 1.3416215e+04 5.5639738e+06
+-4.1961393e+06 3.2851439e+04 0.0000000e+00
+-2.9169714e+00 1.9318790e+00 5.7377781e-01
+-5.6755132e+01 3.5190189e+01 1.3473618e+01
+-9.9401515e+02 5.8521169e+02 2.6195469e+02
+-1.7298359e+04 9.9037568e+03 4.7777916e+03
+-3.9643691e+05 3.2237375e+05 3.6116035e+04
+-1.1194851e+06 9.5460621e+05 1.0202928e+05
+-1.9569252e+06 1.6506446e+06 2.1983543e+05
+-2.6570385e+06 2.1896460e+06 3.9518522e+05
+-3.1039589e+06 2.4744199e+06 6.2984324e+05
+-3.3144382e+06 2.5258059e+06 9.2763736e+05
+-3.3626559e+06 2.4161920e+06 1.2954836e+06
+-3.3054851e+06 2.1996940e+06 1.7429472e+06
+-3.1560768e+06 1.8896321e+06 2.2812820e+06
+-2.9027220e+06 1.4863447e+06 2.9192575e+06
+-2.5356798e+06 1.0185986e+06 3.6519332e+06
+-2.0380326e+06 5.5766889e+05 4.4325772e+06
+-1.3312564e+06 1.9421122e+05 5.1020743e+06
+-9.2809975e+04 1.5888830e+04 5.1566952e+06
+-8.7058488e+03 7.3577612e+03 5.1476498e+06
+5.2226854e+04 4.6159909e+03 5.0728686e+06
+1.1933691e+05 2.9621133e+03 4.9191897e+06
+9.3297598e+04 2.2352846e+04 5.0651606e+06
+-3.8744092e+06 2.5526902e+04 0.0000000e+00
+-2.8097372e+00 3.6538122e+00 -2.0971873e-01
+-5.4175938e+01 6.3285041e+01 7.4238578e-01
+-9.4262794e+02 9.9676152e+02 9.2267955e+01
+-1.6341955e+04 1.6212015e+04 2.4580678e+03
+-3.9311213e+05 4.7438516e+05 2.1994825e+04
+-1.1078808e+06 1.3791250e+06 7.3129309e+04
+-1.9254779e+06 2.3726178e+06 1.6984235e+05
+-2.5985874e+06 3.1423759e+06 3.1389280e+05
+-3.0162300e+06 3.5491959e+06 5.0540071e+05
+-3.1986566e+06 3.6229099e+06 7.4817013e+05
+-3.2217437e+06 3.4681020e+06 1.0490716e+06
+-3.1416167e+06 3.1622510e+06 1.4168977e+06
+-2.9691651e+06 2.7224624e+06 1.8617079e+06
+-2.6918010e+06 2.1470257e+06 2.3910156e+06
+-2.3043948e+06 1.4770643e+06 2.9994404e+06
+-1.8055677e+06 8.1731925e+05 3.6446826e+06
+-1.1488996e+06 2.9527602e+05 4.1942270e+06
+-7.8501310e+04 2.7533255e+04 4.2352798e+06
+-7.2895605e+03 1.2805041e+04 4.2256813e+06
+4.3615464e+04 7.6755909e+03 4.1629774e+06
+9.9374949e+04 4.1987843e+03 4.0366209e+06
+6.4240364e+04 2.2871231e+04 4.1781880e+06
+-3.2213318e+06 7.3272313e+04 0.0000000e+00
+-2.7326275e+00 7.1926857e+00 -1.9957059e+00
+-5.1330676e+01 1.1841482e+02 -2.8443149e+01
+-8.7545839e+02 1.7214736e+03 -2.6994872e+02
+-1.5021245e+04 2.5728140e+04 -1.5967729e+03
+-3.8335351e+05 6.4706177e+05 3.4686215e+03
+-1.0702147e+06 1.8350294e+06 3.8167166e+04
+-1.8437732e+06 3.1400167e+06 1.0858319e+05
+-2.4690813e+06 4.1525142e+06 2.1197033e+05
+-2.8426072e+06 4.6884922e+06 3.4671407e+05
+-2.9867143e+06 4.7864577e+06 5.1661521e+05
+-2.9767067e+06 4.5854185e+06 7.2813861e+05
+-2.8665577e+06 4.1876605e+06 9.8853859e+05
+-2.6650515e+06 3.6128808e+06 1.3059956e+06
+-2.3603579e+06 2.8558411e+06 1.6864194e+06
+-1.9546723e+06 1.9711743e+06 2.1244123e+06
+-1.4666201e+06 1.1028264e+06 2.5837551e+06
+-8.8881557e+05 4.1902116e+05 2.9636987e+06
+-5.9113194e+04 4.7351212e+04 2.9836132e+06
+-6.0740420e+03 2.2596093e+04 2.9716853e+06
+3.0325841e+04 1.2767102e+04 2.9249556e+06
+6.9711773e+04 5.7001704e+03 2.8353833e+06
+4.5278900e+04 4.1853519e+04 2.9097827e+06
+-2.2642238e+06 1.6960910e+05 0.0000000e+00
+-2.7604152e+00 1.4406604e+01 -5.5132512e+00
+-4.8697755e+01 2.3452116e+02 -9.2090188e+01
+-7.8367447e+02 3.2026620e+03 -1.1090135e+03
+-1.2998796e+04 4.1886708e+04 -9.7607124e+03
+-3.5098659e+05 8.3030423e+05 -1.4203345e+04
+-9.6345716e+05 2.2981068e+06 7.8794908e+03
+-1.6425391e+06 3.9168924e+06 5.0990109e+04
+-2.1821404e+06 5.1739806e+06 1.1103289e+05
+-2.4913334e+06 5.8416819e+06 1.8530043e+05
+-2.5911355e+06 5.9652913e+06 2.7776163e+05
+-2.5508184e+06 5.7186265e+06 3.9413938e+05
+-2.4189268e+06 5.2295018e+06 5.3947326e+05
+-2.2022171e+06 4.5184382e+06 7.2024235e+05
+-1.8914497e+06 3.5750978e+06 9.4200828e+05
+-1.4964522e+06 2.4683607e+06 1.2016121e+06
+-1.0532777e+06 1.3876850e+06 1.4705082e+06
+-5.8864756e+05 5.5460613e+05 1.6720443e+06
+-3.7496329e+04 7.7913425e+04 1.6666803e+06
+-4.4464068e+03 3.5821182e+04 1.6528266e+06
+1.6375265e+04 1.9841178e+04 1.6224550e+06
+3.8535738e+04 9.5929863e+03 1.5684589e+06
+3.9832296e+04 6.6147174e+04 1.5734539e+06
+-1.2863994e+06 2.0059107e+05 0.0000000e+00
+-2.9226172e+00 2.6047598e+01 -9.6373071e+00
+-4.6256242e+01 4.4607883e+02 -1.8962742e+02
+-6.4410040e+02 6.2604929e+03 -2.8166089e+03
+-9.3652634e+03 7.6235674e+04 -3.1128151e+04
+-2.5441960e+05 9.6346571e+05 -1.6046349e+04
+-6.9508875e+05 2.6822751e+06 -4.0718902e+03
+-1.1778010e+06 4.5644292e+06 1.1918261e+04
+-1.5557475e+06 6.0203780e+06 3.5747376e+04
+-1.7622508e+06 6.7982614e+06 6.1100642e+04
+-1.8126094e+06 6.9429709e+06 9.1366464e+04
+-1.7611954e+06 6.6576641e+06 1.3099979e+05
+-1.6449409e+06 6.0946942e+06 1.8100183e+05
+-1.4668300e+06 5.2717210e+06 2.4613718e+05
+-1.2198347e+06 4.1700756e+06 3.3388521e+05
+-9.1563755e+05 2.8680670e+06 4.4873408e+05
+-5.9300491e+05 1.5949818e+06 5.7968135e+05
+-2.9245828e+05 6.4207793e+05 6.6847635e+05
+-1.8046671e+04 1.1627781e+05 6.4242434e+05
+-2.4549384e+03 3.8830087e+04 6.3944394e+05
+6.2552959e+03 1.8513091e+04 6.3116807e+05
+1.5371692e+04 8.9254796e+03 6.1054982e+05
+3.0279907e+04 4.9814705e+04 6.2012743e+05
+-5.8455554e+05 1.3962020e+05 0.0000000e+00
+-2.9425340e+00 3.3805952e+01 -5.5779006e+00
+-4.0758184e+01 6.0848815e+02 -1.3728826e+02
+-4.2837126e+02 8.9118930e+03 -2.4626477e+03
+-3.5954819e+03 1.0958117e+05 -3.3096186e+04
+-2.1775357e+04 9.7814526e+05 -3.2217673e+04
+-4.9846630e+04 2.7137500e+06 -2.9490985e+04
+-7.9656973e+04 4.6054707e+06 -1.7665277e+04
+-1.0558197e+05 6.0743478e+06 -2.5367931e+03
+-1.2171965e+05 6.8713420e+06 4.4554705e+03
+-1.2593155e+05 7.0228197e+06 8.1076230e+03
+-1.2238333e+05 6.7345255e+06 1.2399599e+04
+-1.1417738e+05 6.1668829e+06 1.5727569e+04
+-1.0083433e+05 5.3344425e+06 1.9826714e+04
+-8.2338081e+04 4.2163563e+06 2.8372808e+04
+-6.0300408e+04 2.8916253e+06 4.5090664e+04
+-3.7520039e+04 1.5921899e+06 7.3011039e+04
+-1.7886396e+04 6.1456469e+05 1.1273300e+05
+-4.1605082e+03 1.1488689e+05 1.1703490e+05
+-8.2586819e+02 2.0491488e+04 1.3550737e+05
+1.3941924e+03 5.2386801e+03 1.4633459e+05
+3.8335576e+03 1.7387601e+03 1.4757847e+05
+1.6119298e+04 1.4797066e+04 1.7163408e+05
+-2.1533097e+05 6.2452670e+04 0.0000000e+00
+-2.5443377e+00 2.7948053e+01 7.8084063e+00
+-3.3428342e+01 5.3413706e+02 1.0823059e+02
+-3.0922321e+02 8.3428228e+03 9.1992156e+02
+-1.9135721e+03 1.0888831e+05 3.0489665e+03
+-4.9874346e+03 9.9257373e+05 -8.9474884e+03
+-4.8494554e+03 2.7263674e+06 -2.3044007e+04
+-3.7473282e+03 4.5893795e+06 -1.4929314e+04
+-7.2895380e+03 6.0495145e+06 -1.4627558e+01
+-1.1807546e+04 6.8601371e+06 3.4694911e+03
+-1.2431841e+04 7.0154691e+06 4.3178161e+03
+-1.1698728e+04 6.7247039e+06 7.5516383e+03
+-1.1388865e+04 6.1593105e+06 8.9497901e+03
+-1.0037548e+04 5.3282864e+06 9.8738475e+03
+-8.0676200e+03 4.2090216e+06 1.3459392e+04
+-6.5023835e+03 2.8818412e+06 2.1446161e+04
+-4.6909300e+03 1.5802060e+06 3.3060204e+04
+-2.5292819e+03 6.1103880e+05 3.6745663e+04
+-8.2868951e+02 1.3141683e+05 2.0375828e+04
+-2.1937073e+02 2.0298620e+04 2.0582826e+04
+1.5230090e+02 2.7138150e+03 2.2736749e+04
+5.4174580e+02 4.2468642e+02 2.2999463e+04
+6.1400426e+03 2.2148142e+03 2.9628438e+04
+-6.4298109e+04 1.5863539e+04 0.0000000e+00
+-1.5359391e+00 1.1624308e+01 1.7513467e+01
+-1.9292304e+01 2.4790731e+02 3.1867892e+02
+-1.5155203e+02 4.4955812e+03 4.2754894e+03
+-3.6193213e+02 7.3308200e+04 3.9845599e+04
+7.4904272e+03 1.0070228e+06 1.4807595e+04
+2.8858289e+04 2.7214690e+06 -1.7806804e+04
+5.2529196e+04 4.5141632e+06 -1.2070871e+04
+6.3632262e+04 5.9449095e+06 3.6880854e+03
+6.6051629e+04 6.7664772e+06 3.0169296e+03
+6.7954565e+04 6.9222291e+06 1.3573241e+03
+6.6827297e+04 6.6282773e+06 5.0522362e+03
+6.1288705e+04 6.0720644e+06 6.0745341e+03
+5.3993720e+04 5.2528183e+06 6.0175752e+03
+4.3830635e+04 4.1467504e+06 8.0676479e+03
+2.9749700e+04 2.8365886e+06 1.2247544e+04
+1.5708084e+04 1.5516946e+06 1.8206379e+04
+5.9703535e+03 6.0275631e+05 1.7284630e+04
+1.3544121e+03 1.4125177e+05 5.0940588e+03
+1.4846769e+02 2.2321283e+04 2.7111571e+03
+-1.2673081e+01 2.6951471e+03 2.7020866e+03
+6.9006058e-01 3.4872565e+02 2.6970683e+03
+1.5996947e+03 1.2853785e+02 2.6652753e+03
+-1.3541681e+04 2.0932224e+03 0.0000000e+00
+-4.6038956e-01 0.0000000e+00 1.1976340e+01
+-5.2726345e+00 0.0000000e+00 2.6363864e+02
+-2.0155847e+01 0.0000000e+00 4.7601317e+03
+6.8458908e+02 0.0000000e+00 7.7093145e+04
+2.1249941e+04 1.0179689e+06 4.0124824e+04
+6.5775162e+04 2.6954665e+06 -1.2945710e+04
+1.1514703e+05 4.3708525e+06 -1.1256247e+04
+1.4290434e+05 5.7423391e+06 8.1033497e+03
+1.5158537e+05 6.5731357e+06 3.8103276e+03
+1.5536765e+05 6.7285203e+06 -1.9480936e+03
+1.5268373e+05 6.4289984e+06 2.4927519e+03
+1.4105382e+05 5.8889141e+06 4.1346532e+03
+1.2410754e+05 5.0945832e+06 3.3809785e+03
+1.0038133e+05 4.0190451e+06 4.2130050e+03
+6.8857778e+04 2.7478018e+06 5.6957514e+03
+3.7327250e+04 1.4998267e+06 8.7573847e+03
+1.4799787e+04 5.8274093e+05 8.2391457e+03
+3.7301593e+03 1.4205808e+05 1.6906629e+03
+5.3028197e+02 2.2561294e+04 4.2713529e+02
+1.0869940e+00 2.6933740e+03 3.4829248e+02
+-1.5894871e+01 3.3682907e+02 3.4267955e+02
+2.8426052e+02 0.0000000e+00 -1.0019020e+02
+-1.5785446e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.9204301e+03 8.6490000e+05 1.9083073e+05
+-1.6389051e+04 2.9623471e+06 9.2968637e+04
+4.2898837e+04 4.7714606e+06 -8.5642819e+04
+1.5086157e+05 5.8465664e+06 -2.8522640e+04
+1.6297499e+05 6.6273956e+06 6.1863503e+04
+1.2187376e+05 6.9470979e+06 2.4501023e+04
+1.2364227e+05 6.6343895e+06 -9.6198560e+02
+1.3227469e+05 6.0136578e+06 2.8991527e+04
+1.0434326e+05 5.2364048e+06 3.5845376e+04
+6.6788705e+04 4.1678877e+06 2.3229499e+04
+4.8118922e+04 2.8183004e+06 3.9057904e+04
+4.0650207e+04 1.5016918e+06 6.2140908e+04
+2.9186203e+04 5.9100539e+05 4.6441940e+04
+1.5460285e+04 1.6389541e+05 1.3912167e+04
+5.9949072e+03 2.8438921e+04 2.2087047e+03
+1.5765240e+03 2.6575201e+03 1.6725051e+02
+2.7336219e+02 -4.0537788e+01 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-5.5164254e+05 0.0000000e+00 1.6729880e+05
+-2.0900088e+06 0.0000000e+00 4.1482089e+05
+-3.7547789e+06 0.0000000e+00 1.8884017e+05
+-4.6062472e+06 0.0000000e+00 -1.5751069e+05
+-4.8559696e+06 0.0000000e+00 -6.3972958e+04
+-5.0235841e+06 0.0000000e+00 1.2568683e+05
+-4.9910774e+06 0.0000000e+00 9.4438280e+04
+-4.6276161e+06 0.0000000e+00 3.7266416e+04
+-4.0715348e+06 0.0000000e+00 5.0038253e+04
+-3.2984669e+06 0.0000000e+00 9.2024964e+04
+-2.2732344e+06 0.0000000e+00 1.5963834e+05
+-1.2666190e+06 0.0000000e+00 1.8648271e+05
+-5.7050012e+05 0.0000000e+00 1.3251910e+05
+-2.1062560e+05 0.0000000e+00 5.9368691e+04
+-6.2709967e+04 0.0000000e+00 1.5081022e+04
+-1.3176195e+04 0.0000000e+00 1.9948811e+03
+-1.5653676e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.5193669e+06 -2.5367554e+06 4.3672606e+05
+-5.4196255e+06 -8.5383513e+06 9.7824060e+05
+-9.4459411e+06 -1.4092129e+07 4.8962715e+05
+-1.1875847e+07 -1.7549812e+07 -2.2732805e+05
+-1.3011161e+07 -1.9586739e+07 -1.0608379e+05
+-1.3471535e+07 -2.0308390e+07 2.2445564e+05
+-1.3207366e+07 -1.9629955e+07 1.9864526e+05
+-1.2260980e+07 -1.8074315e+07 1.2405568e+05
+-1.0803521e+07 -1.5867156e+07 1.5788073e+05
+-8.7302862e+06 -1.2744870e+07 2.6578209e+05
+-6.0877108e+06 -8.7892098e+06 4.4729713e+05
+-3.4835343e+06 -4.8682172e+06 5.2104714e+05
+-1.5951979e+06 -2.0506514e+06 3.7695260e+05
+-5.7899343e+05 -6.3858827e+05 1.7456428e+05
+-1.6342857e+05 -1.4097036e+05 4.8872843e+04
+-3.4064549e+04 -2.1810183e+04 7.1055651e+03
+-4.2199838e+03 -2.0436622e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-8.0320399e+05 -2.1928360e+06 4.6220577e+05
+-2.6144019e+06 -5.8166450e+06 3.3851355e+05
+-4.2518257e+06 -9.3692921e+06 -8.9598256e+04
+-5.2778384e+06 -1.2106403e+07 -1.0430469e+05
+-5.8978584e+06 -1.3706336e+07 7.6130770e+04
+-6.1327015e+06 -1.4049017e+07 7.1341440e+04
+-5.9574154e+06 -1.3504585e+07 2.7036697e+04
+-5.5223278e+06 -1.2453074e+07 6.0400291e+04
+-4.8868411e+06 -1.0887210e+07 7.1636345e+04
+-3.9673777e+06 -8.7026109e+06 6.3543329e+04
+-2.7778433e+06 -6.0205051e+06 1.2080197e+05
+-1.5673780e+06 -3.3241454e+06 1.8475903e+05
+-6.6958822e+05 -1.3101758e+06 1.4305756e+05
+-2.0743223e+05 -3.2214096e+05 4.9502992e+04
+-4.4674618e+04 -4.9734888e+04 8.9371220e+03
+-6.7052749e+03 -5.1324456e+03 5.4125696e+02
+-6.6757743e+02 -5.6137832e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.4517612e+00 -2.1511920e+01 2.3503291e+01
+-4.1447000e+01 -4.6822419e+02 5.2790185e+02
+-5.5199625e+02 -8.6847104e+03 9.7444527e+03
+-6.1750851e+03 -1.4500841e+05 1.6161254e+05
+-6.4029744e+04 -2.0415283e+06 9.5584615e+04
+-1.4562850e+05 -5.4955199e+06 -1.4136714e+04
+-1.9894662e+05 -9.0394820e+06 -2.9853174e+04
+-2.4069702e+05 -1.1757851e+07 5.1962939e+03
+-2.7585420e+05 -1.3283135e+07 9.4355142e+03
+-2.8270533e+05 -1.3601534e+07 2.5246034e+01
+-2.6842921e+05 -1.3086518e+07 3.0714128e+03
+-2.4996233e+05 -1.2065473e+07 6.4867647e+03
+-2.2399698e+05 -1.0538342e+07 5.7236950e+03
+-1.8355342e+05 -8.4179975e+06 5.0450202e+03
+-1.2863390e+05 -5.8259094e+06 7.9410898e+03
+-6.8145657e+04 -3.2273037e+06 1.6572273e+04
+-2.2272588e+04 -1.2737433e+06 1.7212151e+04
+-2.9309611e+03 -3.0143229e+05 3.1646012e+03
+4.4933673e+02 -4.7062663e+04 5.7332477e+02
+1.9377699e+02 -5.3157526e+03 5.6394464e+02
+-1.1647594e+01 -5.6473546e+02 5.6308380e+02
+-6.4941714e+02 -4.7197728e+02 1.9715783e+03
+-4.2105383e+03 -7.2908258e+03 0.0000000e+00
+-6.7985946e+00 -5.0576325e+01 3.4327061e+01
+-1.0684677e+02 -9.8234575e+02 6.3600308e+02
+-1.2819927e+03 -1.5622498e+04 8.7042317e+03
+-1.1906130e+04 -2.0760511e+05 8.2845126e+04
+-7.0291540e+04 -1.9214702e+06 4.0569024e+04
+-1.5885375e+05 -5.2410861e+06 -2.6152764e+04
+-2.3638613e+05 -8.7494459e+06 -2.7273461e+04
+-2.9830559e+05 -1.1424606e+07 1.4188729e+03
+-3.3849206e+05 -1.2884240e+07 7.0668821e+03
+-3.4640139e+05 -1.3184050e+07 3.9386727e+03
+-3.3279455e+05 -1.2690515e+07 7.5567028e+03
+-3.1009245e+05 -1.1696488e+07 9.9535390e+03
+-2.7551228e+05 -1.0209152e+07 1.0269374e+04
+-2.2418023e+05 -8.1523570e+06 1.2639716e+04
+-1.5769638e+05 -5.6462745e+06 2.0450909e+04
+-8.6991047e+04 -3.1379677e+06 3.3814054e+04
+-3.2347349e+04 -1.2361246e+06 3.4513039e+04
+-6.3526125e+03 -2.6925875e+05 1.0046531e+04
+-6.4429461e+02 -4.1564462e+04 5.3410929e+03
+3.9849727e+01 -5.3442347e+03 5.3170510e+03
+2.0100575e+02 -5.6094373e+02 5.1131148e+03
+-6.7573895e+03 -9.1024625e+03 2.2106744e+04
+-3.4745017e+04 -5.0878481e+04 0.0000000e+00
+-9.7284958e+00 -6.0011578e+01 1.6619411e+01
+-1.4773586e+02 -1.0944033e+03 2.4298448e+02
+-1.7132406e+03 -1.6265681e+04 2.2901848e+03
+-1.5459383e+04 -2.0272758e+05 1.0958462e+04
+-9.0412627e+04 -1.8205126e+06 -4.5739043e+03
+-2.1744476e+05 -4.9988873e+06 -3.4177359e+04
+-3.4353620e+05 -8.4155644e+06 -2.8270018e+04
+-4.4096962e+05 -1.1016077e+07 -3.1191178e+03
+-4.9758363e+05 -1.2408119e+07 6.5363404e+03
+-5.1049519e+05 -1.2687305e+07 7.8550036e+03
+-4.9362545e+05 -1.2212453e+07 1.1720430e+04
+-4.5937219e+05 -1.1251221e+07 1.4435818e+04
+-4.0614418e+05 -9.8149022e+06 1.6292786e+04
+-3.2934109e+05 -7.8367529e+06 2.1962226e+04
+-2.3238499e+05 -5.4350716e+06 3.6641865e+04
+-1.3182876e+05 -3.0341994e+06 6.0011396e+04
+-5.3474445e+04 -1.1963613e+06 7.1193311e+04
+-1.2701863e+04 -2.2645500e+05 4.0262729e+04
+-3.0793255e+03 -4.0456927e+04 4.2015149e+04
+-6.3795457e+02 -1.0278950e+04 4.7740122e+04
+4.7335364e+02 -3.2439122e+03 5.0491575e+04
+-4.5480284e+04 -5.1742797e+04 1.4475500e+05
+-1.6706218e+05 -1.8214949e+05 0.0000000e+00
+-9.8220678e+00 -4.5418930e+01 -7.7131139e+00
+-1.4876681e+02 -7.8640142e+02 -2.0770638e+02
+-1.7597956e+03 -1.1183919e+04 -3.9580443e+03
+-1.6949448e+04 -1.3808813e+05 -5.5243519e+04
+-1.1540832e+05 -1.7372833e+06 -4.4839883e+04
+-2.8433493e+05 -4.7660907e+06 -4.3148169e+04
+-4.6068724e+05 -8.0483264e+06 -2.9355924e+04
+-5.9708229e+05 -1.0548365e+07 -5.5669353e+03
+-6.7413167e+05 -1.1868851e+07 7.5768953e+03
+-6.9388558e+05 -1.2125144e+07 1.3370016e+04
+-6.7383673e+05 -1.1667104e+07 1.9474357e+04
+-6.2755693e+05 -1.0743495e+07 2.5128038e+04
+-5.5478217e+05 -9.3679304e+06 3.2104114e+04
+-4.5168160e+05 -7.4816023e+06 4.6296963e+04
+-3.2396247e+05 -5.2009360e+06 7.5823485e+04
+-1.9307546e+05 -2.9316187e+06 1.2879819e+05
+-8.8897004e+04 -1.2111743e+06 2.1462182e+05
+-2.5405463e+04 -2.2026141e+05 2.2967319e+05
+-1.2852366e+04 -7.4499515e+04 2.7574227e+05
+-6.4626035e+03 -3.6511120e+04 3.0983124e+05
+-3.0144873e+03 -1.8371938e+04 3.3180727e+05
+-2.1173819e+05 -1.5064744e+05 6.5856850e+05
+-5.9102287e+05 -3.9315867e+05 0.0000000e+00
+-8.3021001e+00 -2.4588802e+01 -1.5450645e+01
+-1.3496193e+02 -4.0228832e+02 -3.1085805e+02
+-1.8988724e+03 -5.5095396e+03 -4.7304655e+03
+-2.6930153e+04 -7.1664042e+04 -5.3589668e+04
+-6.1822143e+05 -1.4183369e+06 -8.7341958e+03
+-1.6613197e+06 -3.8205355e+06 1.1941584e+04
+-2.7911677e+06 -6.4532715e+06 3.0253347e+04
+-3.6570862e+06 -8.4807230e+06 6.3949667e+04
+-4.1174395e+06 -9.5537097e+06 1.0399727e+05
+-4.2218135e+06 -9.7642056e+06 1.5226269e+05
+-4.0993915e+06 -9.3928273e+06 2.1618180e+05
+-3.8345690e+06 -8.6365401e+06 2.9885537e+05
+-3.4281648e+06 -7.5156429e+06 4.0790267e+05
+-2.8538738e+06 -5.9971464e+06 5.5748589e+05
+-2.1391021e+06 -4.1823204e+06 7.6233478e+05
+-1.3971094e+06 -2.3844073e+06 1.0192278e+06
+-7.5258244e+05 -9.8245525e+05 1.2506329e+06
+-9.0220928e+04 -1.3626067e+05 1.2388064e+06
+-5.4573410e+04 -6.4376865e+04 1.2808022e+06
+-3.3154431e+04 -3.6476369e+04 1.3201772e+06
+-2.2982133e+04 -1.8038130e+04 1.3581972e+06
+-6.8296159e+05 -1.9479770e+05 2.1155873e+06
+-1.6252311e+06 -5.4820364e+05 0.0000000e+00
+-6.6737901e+00 -1.2050165e+01 -8.6252624e+00
+-1.1746319e+02 -1.9849760e+02 -1.4365055e+02
+-1.8699598e+03 -2.8786756e+03 -1.6882292e+03
+-3.0530814e+04 -4.2715460e+04 -1.3104793e+04
+-6.9603804e+05 -1.0753194e+06 -1.1070870e+04
+-1.8847030e+06 -2.9370790e+06 2.6718498e+04
+-3.1890107e+06 -4.9712958e+06 9.1214419e+04
+-4.2096410e+06 -6.5432727e+06 1.8126479e+05
+-4.7808941e+06 -7.3776067e+06 2.9472246e+05
+-4.9552029e+06 -7.5427303e+06 4.3731464e+05
+-4.8722805e+06 -7.2525486e+06 6.1849808e+05
+-4.6262513e+06 -6.6584709e+06 8.4775338e+05
+-4.2260173e+06 -5.7823660e+06 1.1382766e+06
+-3.6500246e+06 -4.6068346e+06 1.5065398e+06
+-2.9253520e+06 -3.2115538e+06 1.9646730e+06
+-2.1494430e+06 -1.8244607e+06 2.5008916e+06
+-1.3940131e+06 -7.1836953e+05 3.0421714e+06
+-1.9535618e+05 -7.9069283e+04 3.1428399e+06
+-1.3429116e+05 -3.8413768e+04 3.2467215e+06
+-8.9077057e+04 -2.1324499e+04 3.3370220e+06
+-7.0308887e+04 -8.1398134e+03 3.4359682e+06
+-1.5903240e+06 -1.2704180e+05 4.9983643e+06
+-3.5209029e+06 -4.6427482e+05 0.0000000e+00
+-5.9325751e+00 -6.0665409e+00 -2.7836765e+00
+-1.1136662e+02 -1.0511804e+02 -3.6127295e+01
+-1.8978909e+03 -1.6545785e+03 -2.3779189e+02
+-3.2582545e+04 -2.6863668e+04 1.4717156e+03
+-6.9264319e+05 -7.7848211e+05 1.3924103e+04
+-1.9013456e+06 -2.1623795e+06 7.0355516e+04
+-3.2490442e+06 -3.6736450e+06 1.7797575e+05
+-4.3260575e+06 -4.8428719e+06 3.3455103e+05
+-4.9596627e+06 -5.4652188e+06 5.3921869e+05
+-5.1990692e+06 -5.5895292e+06 7.9837243e+05
+-5.1822709e+06 -5.3716950e+06 1.1230831e+06
+-5.0056879e+06 -4.9235395e+06 1.5272818e+06
+-4.6846523e+06 -4.2653045e+06 2.0298212e+06
+-4.2020170e+06 -3.3892423e+06 2.6538879e+06
+-3.5779285e+06 -2.3551699e+06 3.4207601e+06
+-2.8780387e+06 -1.3247968e+06 4.3325148e+06
+-2.0968859e+06 -4.9862816e+05 5.3208437e+06
+-3.2295174e+05 -4.4634257e+04 5.5502473e+06
+-2.3366996e+05 -2.0692354e+04 5.7601218e+06
+-1.5962586e+05 -1.1805614e+04 5.9405546e+06
+-1.3140622e+05 -4.8108329e+03 6.1383436e+06
+-2.7783250e+06 -5.7761658e+04 8.8926675e+06
+-6.0521485e+06 -2.2871905e+05 0.0000000e+00
+-5.7946295e+00 -3.2173810e+00 1.3573248e-01
+-1.1223201e+02 -5.8739994e+01 1.1813753e+01
+-1.9636450e+03 -9.7894993e+02 3.5720223e+02
+-3.4253443e+04 -1.6594122e+04 7.9991453e+03
+-6.7799913e+05 -5.2627446e+05 4.0678489e+04
+-1.8702827e+06 -1.4806451e+06 1.2134599e+05
+-3.2218730e+06 -2.5251798e+06 2.6927593e+05
+-4.3258261e+06 -3.3340018e+06 4.8764458e+05
+-5.0058512e+06 -3.7655744e+06 7.7762133e+05
+-5.3039587e+06 -3.8524159e+06 1.1458102e+06
+-5.3515690e+06 -3.7003497e+06 1.6042901e+06
+-5.2449113e+06 -3.3863231e+06 2.1703683e+06
+-5.0057952e+06 -2.9266760e+06 2.8683699e+06
+-4.6230632e+06 -2.3190970e+06 3.7294868e+06
+-4.1113306e+06 -1.6054497e+06 4.7867024e+06
+-3.5056957e+06 -8.9433474e+05 6.0563682e+06
+-2.7233897e+06 -3.2613545e+05 7.4583656e+06
+-4.3933878e+05 -2.5535840e+04 7.8001046e+06
+-3.2332330e+05 -1.1854429e+04 8.1073004e+06
+-2.2145908e+05 -7.4488628e+03 8.3680182e+06
+-1.8267682e+05 -4.3211996e+03 8.6495804e+06
+-3.8728838e+06 -4.2468353e+04 1.2571413e+07
+-8.4858524e+06 -9.4393419e+04 0.0000000e+00
+-5.8901494e+00 -1.6284915e+00 1.3842885e+00
+-1.1533292e+02 -3.0704798e+01 3.1926882e+01
+-2.0343494e+03 -5.2637500e+02 6.1968619e+02
+-3.5649137e+04 -9.0783251e+03 1.1454668e+04
+-6.6778130e+05 -3.0454082e+05 6.1065414e+04
+-1.8388764e+06 -8.6370247e+05 1.6351414e+05
+-3.1844967e+06 -1.4774439e+06 3.4334972e+05
+-4.3035738e+06 -1.9530654e+06 6.0894864e+05
+-5.0167815e+06 -2.2073026e+06 9.6349946e+05
+-5.3582541e+06 -2.2587134e+06 1.4136129e+06
+-5.4523794e+06 -2.1686635e+06 1.9716502e+06
+-5.3946736e+06 -1.9822603e+06 2.6567759e+06
+-5.2127006e+06 -1.7101208e+06 3.4968445e+06
+-4.9014696e+06 -1.3521833e+06 4.5286784e+06
+-4.4729674e+06 -9.3330671e+05 5.7938230e+06
+-3.9402024e+06 -5.1629680e+05 7.3179549e+06
+-3.1600953e+06 -1.8482394e+05 9.0054823e+06
+-5.2216187e+05 -1.3468186e+04 9.4227665e+06
+-3.8577368e+05 -6.2255001e+03 9.7942054e+06
+-2.6302882e+05 -3.7929565e+03 1.0105805e+07
+-2.1502741e+05 -1.9095870e+03 1.0437758e+07
+-4.6267335e+06 -2.9584358e+04 1.5144905e+07
+-1.0203293e+07 -7.6577784e+04 0.0000000e+00
+-6.0090377e+00 -5.0376358e-01 1.8835016e+00
+-1.1801198e+02 -9.6267240e+00 4.0270000e+01
+-2.0857754e+03 -1.6676792e+02 7.3895908e+02
+-3.6587091e+04 -2.8928717e+03 1.3236157e+04
+-6.6253624e+05 -9.9725087e+04 7.3220001e+04
+-1.8183831e+06 -2.8389840e+05 1.8983663e+05
+-3.1578358e+06 -4.8642002e+05 3.8929546e+05
+-4.2845288e+06 -6.4344461e+05 6.8313692e+05
+-5.0168308e+06 -7.2745962e+05 1.0758378e+06
+-5.3830291e+06 -7.4449157e+05 1.5738178e+06
+-5.5024632e+06 -7.1465233e+05 2.1892049e+06
+-5.4700810e+06 -6.5281347e+05 2.9417295e+06
+-5.3174030e+06 -5.6265546e+05 3.8607556e+06
+-5.0440417e+06 -4.4438043e+05 4.9858791e+06
+-4.6614547e+06 -3.0623796e+05 6.3632661e+06
+-4.1704631e+06 -1.6880907e+05 8.0234928e+06
+-3.3918194e+06 -5.9923925e+04 9.8603698e+06
+-5.6768676e+05 -4.2186149e+03 1.0317672e+07
+-4.1946025e+05 -1.9024861e+03 1.0722787e+07
+-2.8493759e+05 -1.0433286e+03 1.1061121e+07
+-2.3153824e+05 -2.3835369e+02 1.1419945e+07
+-5.0330169e+06 -8.2490722e+03 1.6540883e+07
+-1.1117591e+07 -3.7809406e+04 0.0000000e+00
+-6.0573472e+00 5.0376358e-01 2.0179963e+00
+-1.1902437e+02 9.6267240e+00 4.2602086e+01
+-2.1043252e+03 1.6676792e+02 7.7424460e+02
+-3.6916635e+04 2.8928717e+03 1.3791979e+04
+-6.6094745e+05 9.9725087e+04 7.7200148e+04
+-1.8113547e+06 2.8389840e+05 1.9862632e+05
+-3.1483416e+06 4.8642002e+05 4.0458402e+05
+-4.2772728e+06 6.4344461e+05 7.0763016e+05
+-5.0156452e+06 7.2745962e+05 1.1126617e+06
+-5.3896078e+06 7.4449157e+05 1.6259809e+06
+-5.5166874e+06 7.1465233e+05 2.2595390e+06
+-5.4916259e+06 6.5281347e+05 3.0331222e+06
+-5.3473519e+06 5.6265546e+05 3.9764442e+06
+-5.0851833e+06 4.4438043e+05 5.1298681e+06
+-4.7166429e+06 3.0623796e+05 6.5409653e+06
+-4.2388150e+06 1.6880907e+05 8.2418248e+06
+-3.4606641e+06 5.9923925e+04 1.0122711e+07
+-5.8166941e+05 4.2186149e+03 1.0592157e+07
+-4.2968193e+05 1.9024862e+03 1.1007504e+07
+-2.9150081e+05 1.0433291e+03 1.1354125e+07
+-2.3647796e+05 2.3836613e+02 1.1721754e+07
+-5.1595851e+06 8.2494209e+03 1.6976349e+07
+-1.1395816e+07 3.7809684e+04 0.0000000e+00
+-6.0090377e+00 1.6284915e+00 1.8835016e+00
+-1.1801198e+02 3.0704798e+01 4.0270000e+01
+-2.0857754e+03 5.2637500e+02 7.3895908e+02
+-3.6587091e+04 9.0783251e+03 1.3236157e+04
+-6.6253624e+05 3.0454082e+05 7.3220001e+04
+-1.8183831e+06 8.6370247e+05 1.8983663e+05
+-3.1578358e+06 1.4774439e+06 3.8929546e+05
+-4.2845288e+06 1.9530654e+06 6.8313692e+05
+-5.0168308e+06 2.2073026e+06 1.0758378e+06
+-5.3830291e+06 2.2587134e+06 1.5738178e+06
+-5.5024632e+06 2.1686635e+06 2.1892049e+06
+-5.4700810e+06 1.9822603e+06 2.9417295e+06
+-5.3174030e+06 1.7101208e+06 3.8607556e+06
+-5.0440417e+06 1.3521833e+06 4.9858791e+06
+-4.6614547e+06 9.3330671e+05 6.3632661e+06
+-4.1704631e+06 5.1629680e+05 8.0234928e+06
+-3.3918194e+06 1.8482394e+05 9.8603698e+06
+-5.6768676e+05 1.3468186e+04 1.0317672e+07
+-4.1946025e+05 6.2255001e+03 1.0722787e+07
+-2.8493759e+05 3.7929575e+03 1.1061121e+07
+-2.3153822e+05 1.9096140e+03 1.1419945e+07
+-5.0330162e+06 2.9585049e+04 1.6540883e+07
+-1.1117592e+07 7.6578147e+04 0.0000000e+00
+-5.8901494e+00 3.2173810e+00 1.3842885e+00
+-1.1533292e+02 5.8739994e+01 3.1926882e+01
+-2.0343494e+03 9.7894993e+02 6.1968619e+02
+-3.5649137e+04 1.6594122e+04 1.1454668e+04
+-6.6778130e+05 5.2627446e+05 6.1065414e+04
+-1.8388764e+06 1.4806451e+06 1.6351414e+05
+-3.1844967e+06 2.5251798e+06 3.4334972e+05
+-4.3035738e+06 3.3340018e+06 6.0894864e+05
+-5.0167815e+06 3.7655744e+06 9.6349946e+05
+-5.3582541e+06 3.8524159e+06 1.4136129e+06
+-5.4523794e+06 3.7003497e+06 1.9716502e+06
+-5.3946736e+06 3.3863231e+06 2.6567759e+06
+-5.2127006e+06 2.9266760e+06 3.4968445e+06
+-4.9014696e+06 2.3190970e+06 4.5286784e+06
+-4.4729674e+06 1.6054497e+06 5.7938230e+06
+-3.9402024e+06 8.9433474e+05 7.3179549e+06
+-3.1600953e+06 3.2613545e+05 9.0054823e+06
+-5.2216187e+05 2.5535840e+04 9.4227665e+06
+-3.8577368e+05 1.1854429e+04 9.7942054e+06
+-2.6302882e+05 7.4488635e+03 1.0105805e+07
+-2.1502739e+05 4.3212335e+03 1.0437758e+07
+-4.6267330e+06 4.2470477e+04 1.5144904e+07
+-1.0203293e+07 9.4393894e+04 0.0000000e+00
+-5.7946295e+00 6.0665409e+00 1.3573248e-01
+-1.1223201e+02 1.0511804e+02 1.1813753e+01
+-1.9636450e+03 1.6545785e+03 3.5720223e+02
+-3.4253443e+04 2.6863668e+04 7.9991453e+03
+-6.7799913e+05 7.7848211e+05 4.0678489e+04
+-1.8702827e+06 2.1623795e+06 1.2134599e+05
+-3.2218730e+06 3.6736450e+06 2.6927593e+05
+-4.3258261e+06 4.8428719e+06 4.8764458e+05
+-5.0058512e+06 5.4652188e+06 7.7762133e+05
+-5.3039587e+06 5.5895292e+06 1.1458102e+06
+-5.3515690e+06 5.3716950e+06 1.6042901e+06
+-5.2449113e+06 4.9235395e+06 2.1703683e+06
+-5.0057952e+06 4.2653045e+06 2.8683699e+06
+-4.6230632e+06 3.3892423e+06 3.7294868e+06
+-4.1113306e+06 2.3551699e+06 4.7867024e+06
+-3.5056957e+06 1.3247968e+06 6.0563682e+06
+-2.7233897e+06 4.9862816e+05 7.4583656e+06
+-4.3933878e+05 4.4634257e+04 7.8001046e+06
+-3.2332330e+05 2.0692354e+04 8.1073004e+06
+-2.2145908e+05 1.1805614e+04 8.3680182e+06
+-1.8267683e+05 4.8108499e+03 8.6495806e+06
+-3.8728849e+06 5.7761574e+04 1.2571415e+07
+-8.4858519e+06 2.2871847e+05 0.0000000e+00
+-5.9325751e+00 1.2050165e+01 -2.7836765e+00
+-1.1136662e+02 1.9849760e+02 -3.6127295e+01
+-1.8978909e+03 2.8786756e+03 -2.3779189e+02
+-3.2582545e+04 4.2715460e+04 1.4717156e+03
+-6.9264319e+05 1.0753194e+06 1.3924103e+04
+-1.9013456e+06 2.9370790e+06 7.0355516e+04
+-3.2490442e+06 4.9712958e+06 1.7797575e+05
+-4.3260575e+06 6.5432727e+06 3.3455103e+05
+-4.9596627e+06 7.3776067e+06 5.3921869e+05
+-5.1990692e+06 7.5427303e+06 7.9837243e+05
+-5.1822709e+06 7.2525486e+06 1.1230831e+06
+-5.0056879e+06 6.6584709e+06 1.5272818e+06
+-4.6846523e+06 5.7823660e+06 2.0298212e+06
+-4.2020170e+06 4.6068346e+06 2.6538879e+06
+-3.5779285e+06 3.2115538e+06 3.4207601e+06
+-2.8780387e+06 1.8244607e+06 4.3325148e+06
+-2.0968859e+06 7.1836953e+05 5.3208437e+06
+-3.2295174e+05 7.9069283e+04 5.5502473e+06
+-2.3366996e+05 3.8413768e+04 5.7601218e+06
+-1.5962586e+05 2.1324500e+04 5.9405546e+06
+-1.3140622e+05 8.1397547e+03 6.1383437e+06
+-2.7783251e+06 1.2703947e+05 8.8926698e+06
+-6.0521485e+06 4.6427433e+05 0.0000000e+00
+-6.6737901e+00 2.4588802e+01 -8.6252624e+00
+-1.1746319e+02 4.0228832e+02 -1.4365055e+02
+-1.8699598e+03 5.5095396e+03 -1.6882292e+03
+-3.0530814e+04 7.1664042e+04 -1.3104793e+04
+-6.9603804e+05 1.4183369e+06 -1.1070870e+04
+-1.8847030e+06 3.8205355e+06 2.6718498e+04
+-3.1890107e+06 6.4532715e+06 9.1214419e+04
+-4.2096410e+06 8.4807230e+06 1.8126479e+05
+-4.7808941e+06 9.5537097e+06 2.9472246e+05
+-4.9552029e+06 9.7642056e+06 4.3731464e+05
+-4.8722805e+06 9.3928273e+06 6.1849808e+05
+-4.6262513e+06 8.6365401e+06 8.4775338e+05
+-4.2260173e+06 7.5156429e+06 1.1382766e+06
+-3.6500246e+06 5.9971464e+06 1.5065398e+06
+-2.9253520e+06 4.1823204e+06 1.9646730e+06
+-2.1494430e+06 2.3844073e+06 2.5008916e+06
+-1.3940131e+06 9.8245525e+05 3.0421714e+06
+-1.9535618e+05 1.3626067e+05 3.1428399e+06
+-1.3429116e+05 6.4376866e+04 3.2467215e+06
+-8.9077054e+04 3.6476371e+04 3.3370220e+06
+-7.0308818e+04 1.8038182e+04 3.4359681e+06
+-1.5903216e+06 1.9479945e+05 4.9983620e+06
+-3.5209033e+06 5.4820351e+05 0.0000000e+00
+-8.3021001e+00 4.5418930e+01 -1.5450645e+01
+-1.3496193e+02 7.8640142e+02 -3.1085805e+02
+-1.8988724e+03 1.1183919e+04 -4.7304655e+03
+-2.6930153e+04 1.3808813e+05 -5.3589668e+04
+-6.1822143e+05 1.7372833e+06 -8.7341958e+03
+-1.6613197e+06 4.7660907e+06 1.1941584e+04
+-2.7911677e+06 8.0483264e+06 3.0253347e+04
+-3.6570862e+06 1.0548365e+07 6.3949667e+04
+-4.1174395e+06 1.1868851e+07 1.0399727e+05
+-4.2218135e+06 1.2125144e+07 1.5226269e+05
+-4.0993915e+06 1.1667104e+07 2.1618180e+05
+-3.8345690e+06 1.0743495e+07 2.9885537e+05
+-3.4281648e+06 9.3679304e+06 4.0790267e+05
+-2.8538738e+06 7.4816023e+06 5.5748589e+05
+-2.1391021e+06 5.2009360e+06 7.6233478e+05
+-1.3971094e+06 2.9316187e+06 1.0192278e+06
+-7.5258244e+05 1.2111743e+06 1.2506329e+06
+-9.0220928e+04 2.2026141e+05 1.2388064e+06
+-5.4573410e+04 7.4499515e+04 1.2808022e+06
+-3.3154427e+04 3.6511120e+04 1.3201772e+06
+-2.2981996e+04 1.8371951e+04 1.3581971e+06
+-6.8295724e+05 1.5064860e+05 2.1155851e+06
+-1.6252319e+06 3.9315892e+05 0.0000000e+00
+-9.8220678e+00 6.0011578e+01 -7.7131139e+00
+-1.4876681e+02 1.0944033e+03 -2.0770638e+02
+-1.7597956e+03 1.6265681e+04 -3.9580443e+03
+-1.6949448e+04 2.0272758e+05 -5.5243519e+04
+-1.1540832e+05 1.8205126e+06 -4.4839883e+04
+-2.8433493e+05 4.9988873e+06 -4.3148169e+04
+-4.6068724e+05 8.4155644e+06 -2.9355924e+04
+-5.9708229e+05 1.1016077e+07 -5.5669353e+03
+-6.7413167e+05 1.2408119e+07 7.5768953e+03
+-6.9388558e+05 1.2687305e+07 1.3370016e+04
+-6.7383673e+05 1.2212453e+07 1.9474357e+04
+-6.2755693e+05 1.1251221e+07 2.5128038e+04
+-5.5478217e+05 9.8149022e+06 3.2104114e+04
+-4.5168160e+05 7.8367529e+06 4.6296963e+04
+-3.2396247e+05 5.4350716e+06 7.5823485e+04
+-1.9307546e+05 3.0341994e+06 1.2879819e+05
+-8.8897004e+04 1.1963613e+06 2.1462182e+05
+-2.5405463e+04 2.2645500e+05 2.2967319e+05
+-1.2852366e+04 4.0456927e+04 2.7574227e+05
+-6.4625989e+03 1.0278941e+04 3.0983124e+05
+-3.0143240e+03 3.2436534e+03 3.3180742e+05
+-2.1173259e+05 5.1735219e+04 6.5857259e+05
+-5.9102319e+05 1.8214886e+05 0.0000000e+00
+-9.7284958e+00 5.0576325e+01 1.6619411e+01
+-1.4773586e+02 9.8234575e+02 2.4298448e+02
+-1.7132406e+03 1.5622498e+04 2.2901848e+03
+-1.5459383e+04 2.0760511e+05 1.0958462e+04
+-9.0412627e+04 1.9214702e+06 -4.5739043e+03
+-2.1744476e+05 5.2410861e+06 -3.4177359e+04
+-3.4353620e+05 8.7494459e+06 -2.8270018e+04
+-4.4096962e+05 1.1424606e+07 -3.1191178e+03
+-4.9758363e+05 1.2884240e+07 6.5363403e+03
+-5.1049519e+05 1.3184050e+07 7.8550035e+03
+-4.9362545e+05 1.2690515e+07 1.1720430e+04
+-4.5937219e+05 1.1696488e+07 1.4435818e+04
+-4.0614418e+05 1.0209152e+07 1.6292786e+04
+-3.2934109e+05 8.1523570e+06 2.1962226e+04
+-2.3238499e+05 5.6462745e+06 3.6641865e+04
+-1.3182876e+05 3.1379677e+06 6.0011396e+04
+-5.3474445e+04 1.2361246e+06 7.1193311e+04
+-1.2701863e+04 2.6925875e+05 4.0262729e+04
+-3.0793256e+03 4.1564462e+04 4.2015152e+04
+-6.3795549e+02 5.3442122e+03 4.7740137e+04
+4.7335657e+02 5.6056200e+02 5.0491638e+04
+-4.5478935e+04 9.0917310e+03 1.4475410e+05
+-1.6706211e+05 5.0878363e+04 0.0000000e+00
+-6.7985946e+00 2.1511920e+01 3.4327061e+01
+-1.0684677e+02 4.6822419e+02 6.3600308e+02
+-1.2819927e+03 8.6847104e+03 8.7042317e+03
+-1.1906130e+04 1.4500841e+05 8.2845126e+04
+-7.0291540e+04 2.0415283e+06 4.0569024e+04
+-1.5885375e+05 5.4955199e+06 -2.6152767e+04
+-2.3638613e+05 9.0394819e+06 -2.7273458e+04
+-2.9830559e+05 1.1757851e+07 1.4188727e+03
+-3.3849206e+05 1.3283135e+07 7.0668809e+03
+-3.4640140e+05 1.3601534e+07 3.9386711e+03
+-3.3279455e+05 1.3086518e+07 7.5567043e+03
+-3.1009245e+05 1.2065473e+07 9.9535418e+03
+-2.7551228e+05 1.0538342e+07 1.0269376e+04
+-2.2418023e+05 8.4179975e+06 1.2639717e+04
+-1.5769638e+05 5.8259094e+06 2.0450909e+04
+-8.6991048e+04 3.2273037e+06 3.3814053e+04
+-3.2347349e+04 1.2737433e+06 3.4513040e+04
+-6.3526125e+03 3.0143229e+05 1.0046531e+04
+-6.4429447e+02 4.7062663e+04 5.3410933e+03
+3.9849144e+01 5.3157506e+03 5.3171515e+03
+2.0086934e+02 5.6427231e+02 5.1132622e+03
+-6.7612886e+03 4.6704457e+02 2.2098903e+04
+-3.4745631e+04 7.2907856e+03 0.0000000e+00
+-2.4517612e+00 0.0000000e+00 2.3503291e+01
+-4.1447000e+01 0.0000000e+00 5.2790185e+02
+-5.5199624e+02 0.0000000e+00 9.7444527e+03
+-6.1750850e+03 0.0000000e+00 1.6161254e+05
+-6.4029736e+04 2.1928359e+06 9.5584559e+04
+-1.4562857e+05 5.8166449e+06 -1.4136730e+04
+-1.9894663e+05 9.3692921e+06 -2.9853176e+04
+-2.4069699e+05 1.2106403e+07 5.1963706e+03
+-2.7585424e+05 1.3706336e+07 9.4354976e+03
+-2.8270544e+05 1.4049017e+07 2.5196205e+01
+-2.6842934e+05 1.3504585e+07 3.0714622e+03
+-2.4996237e+05 1.2453074e+07 6.4868447e+03
+-2.2399692e+05 1.0887210e+07 5.7237403e+03
+-1.8355337e+05 8.7026109e+06 5.0450299e+03
+-1.2863389e+05 6.0205050e+06 7.9410744e+03
+-6.8145686e+04 3.3241454e+06 1.6572277e+04
+-2.2272612e+04 1.3101758e+06 1.7212161e+04
+-2.9309770e+03 3.2214098e+05 3.1646086e+03
+4.4932477e+02 4.9734898e+04 5.7333023e+02
+1.9376662e+02 5.1324445e+03 5.6395680e+02
+-1.1658589e+01 5.6132869e+02 5.6439060e+02
+-6.5171545e+02 0.0000000e+00 1.9674108e+03
+-4.2108157e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-8.0320546e+05 2.5367565e+06 4.6220526e+05
+-2.6144045e+06 8.5383532e+06 3.3851326e+05
+-4.2518259e+06 1.4092129e+07 -8.9599160e+04
+-5.2778370e+06 1.7549811e+07 -1.0430538e+05
+-5.8978597e+06 1.9586737e+07 7.6128040e+04
+-6.1327051e+06 2.0308385e+07 7.1339580e+04
+-5.9574194e+06 1.9629948e+07 2.7038324e+04
+-5.5223288e+06 1.8074313e+07 6.0402553e+04
+-4.8868391e+06 1.5867157e+07 7.1637411e+04
+-3.9673760e+06 1.2744870e+07 6.3543206e+04
+-2.7778434e+06 8.7892094e+06 1.2080121e+05
+-1.5673787e+06 4.8682167e+06 1.8475889e+05
+-6.6958899e+05 2.0506519e+06 1.4305797e+05
+-2.0743286e+05 6.3858882e+05 4.9503257e+04
+-4.4675097e+04 1.4097089e+05 8.9372702e+03
+-6.7056965e+03 2.1810609e+04 5.4132453e+02
+-6.6779357e+02 2.0438090e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.5193668e+06 0.0000000e+00 4.3672587e+05
+-5.4196258e+06 0.0000000e+00 9.7824035e+05
+-9.4459411e+06 0.0000000e+00 4.8962666e+05
+-1.1875847e+07 0.0000000e+00 -2.2732846e+05
+-1.3011162e+07 0.0000000e+00 -1.0608337e+05
+-1.3471535e+07 0.0000000e+00 2.2445563e+05
+-1.3207367e+07 0.0000000e+00 1.9864522e+05
+-1.2260981e+07 0.0000000e+00 1.2405548e+05
+-1.0803522e+07 0.0000000e+00 1.5788109e+05
+-8.7302863e+06 0.0000000e+00 2.6578272e+05
+-6.0877120e+06 0.0000000e+00 4.4729737e+05
+-3.4835348e+06 0.0000000e+00 5.2104787e+05
+-1.5951986e+06 0.0000000e+00 3.7695293e+05
+-5.7899409e+05 0.0000000e+00 1.7456465e+05
+-1.6342910e+05 0.0000000e+00 4.8873026e+04
+-3.4064969e+04 0.0000000e+00 7.1056244e+03
+-4.2202158e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.1205514e+06 -4.1900092e+06 6.0268321e+05
+-3.8113671e+06 -1.3675723e+07 1.1205818e+06
+-6.4693062e+06 -2.2646664e+07 4.6505018e+05
+-8.1657093e+06 -2.8552239e+07 -2.3010630e+05
+-9.0642639e+06 -3.1917763e+07 -5.8456650e+04
+-9.3957192e+06 -3.3021403e+07 2.2071179e+05
+-9.1827212e+06 -3.2058665e+07 1.8182681e+05
+-8.5405893e+06 -2.9710489e+07 1.4712492e+05
+-7.5433739e+06 -2.6172325e+07 1.8869090e+05
+-6.1099992e+06 -2.1114435e+07 2.8811736e+05
+-4.2897884e+06 -1.4734632e+07 4.9739535e+05
+-2.4686493e+06 -8.3436205e+06 6.0661849e+05
+-1.1154232e+06 -3.6167534e+06 4.4813932e+05
+-3.8574321e+05 -1.1572522e+06 2.0393482e+05
+-9.9707675e+04 -2.6577340e+05 5.5369453e+04
+-1.8762499e+04 -4.3917523e+04 7.4164366e+03
+-2.1511217e+03 -4.8316007e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.5364443e+06 -4.2474665e+06 7.9069760e+05
+-4.7086020e+06 -1.1387894e+07 5.9706797e+05
+-7.7360495e+06 -1.8515298e+07 -5.0074500e+04
+-9.8745868e+06 -2.3879102e+07 -1.2646253e+05
+-1.1113232e+07 -2.6916634e+07 8.7782348e+04
+-1.1502888e+07 -2.7665523e+07 1.0208726e+05
+-1.1200729e+07 -2.6777829e+07 6.4565744e+04
+-1.0429291e+07 -2.4844329e+07 1.0536872e+05
+-9.2165742e+06 -2.1859754e+07 1.2253123e+05
+-7.4721876e+06 -1.7621320e+07 1.3422648e+05
+-5.2773497e+06 -1.2344129e+07 2.4322988e+05
+-3.0440269e+06 -6.9791356e+06 3.5539448e+05
+-1.3355516e+06 -2.8804129e+06 2.8501741e+05
+-4.1899991e+05 -7.6514578e+05 1.0447765e+05
+-9.2722890e+04 -1.3444047e+05 2.1192991e+04
+-1.4890214e+04 -1.6513128e+04 1.9734806e+03
+-1.7639971e+03 -1.7617030e+03 0.0000000e+00
+0 0 0
+0 0 0
+-7.8065990e+00 -3.3908894e+01 3.9263731e+01
+-1.5482672e+02 -7.5596355e+02 9.0860701e+02
+-2.5819778e+03 -1.4450464e+04 1.7389052e+04
+-3.9080725e+04 -2.5009317e+05 3.0038787e+05
+-5.4016874e+05 -3.6727547e+06 2.0181490e+05
+-1.4057276e+06 -9.9392538e+06 1.3274163e+04
+-2.2609321e+06 -1.6396784e+07 -4.3254171e+04
+-2.8993412e+06 -2.1261137e+07 -2.5751421e+03
+-3.2637258e+06 -2.3945428e+07 1.4090333e+04
+-3.3604607e+06 -2.4579899e+07 6.2215584e+03
+-3.2642770e+06 -2.3784487e+07 8.7276692e+03
+-3.0429123e+06 -2.2056339e+07 1.3688268e+04
+-2.6927563e+06 -1.9390857e+07 1.3550700e+04
+-2.1859063e+06 -1.5619491e+07 1.4074732e+04
+-1.5450066e+06 -1.0938439e+07 2.4757568e+04
+-8.8392638e+05 -6.1844336e+06 4.5836314e+04
+-3.7073799e+05 -2.5323155e+06 4.6204297e+04
+-1.0056393e+05 -6.3254005e+05 1.1231543e+04
+-1.8173721e+04 -1.0671490e+05 2.1290255e+03
+-2.4751567e+03 -1.3193465e+04 1.4782965e+03
+-5.8108068e+02 -1.4781106e+03 1.7641320e+03
+-1.7656510e+03 -1.9124591e+03 4.7928246e+03
+-2.1503028e+03 -7.4724252e+03 0.0000000e+00
+-1.9499331e+01 -7.8002440e+01 5.6794283e+01
+-3.4458225e+02 -1.5413407e+03 1.0799069e+03
+-4.8604619e+03 -2.5050369e+04 1.5258282e+04
+-5.6132813e+04 -3.4132028e+05 1.5071207e+05
+-4.4588585e+05 -3.2413219e+06 9.4873660e+04
+-1.1508248e+06 -8.8364703e+06 -1.5938781e+04
+-1.8721337e+06 -1.4737808e+07 -3.9167343e+04
+-2.4134043e+06 -1.9180555e+07 -4.6510303e+03
+-2.7148406e+06 -2.1584068e+07 1.0338396e+04
+-2.7923565e+06 -2.2132848e+07 9.2430794e+03
+-2.7126944e+06 -2.1408484e+07 1.3139440e+04
+-2.5284055e+06 -1.9841774e+07 1.6887322e+04
+-2.2362950e+06 -1.7431376e+07 1.8188295e+04
+-1.8147832e+06 -1.4033679e+07 2.2978545e+04
+-1.2833813e+06 -9.8293504e+06 3.9575155e+04
+-7.3554307e+05 -5.5630321e+06 6.6725710e+04
+-3.0725102e+05 -2.2607951e+06 7.0108979e+04
+-7.9092069e+04 -5.1119961e+05 2.1507993e+04
+-1.4742826e+04 -8.2608409e+04 1.1500036e+04
+-3.3754411e+03 -1.1503288e+04 1.3225148e+04
+-2.4783581e+03 -2.1250679e+03 1.6551469e+04
+-1.4987132e+04 -2.1541087e+04 4.4409839e+04
+-1.9033048e+04 -5.7243409e+04 0.0000000e+00
+-2.5486992e+01 -9.1017391e+01 2.8773447e+01
+-4.2207779e+02 -1.6808269e+03 4.4260160e+02
+-5.4964197e+03 -2.5380040e+04 4.5554518e+03
+-5.7342294e+04 -3.2174336e+05 2.6861443e+04
+-3.9733901e+05 -2.9236196e+06 1.6085433e+04
+-1.0276509e+06 -7.9778106e+06 -3.2368069e+04
+-1.6877035e+06 -1.3387635e+07 -3.8374151e+04
+-2.1844122e+06 -1.7467033e+07 -8.4528981e+03
+-2.4565388e+06 -1.9642218e+07 8.6521992e+03
+-2.5255224e+06 -2.0121706e+07 1.2537105e+04
+-2.4538250e+06 -1.9453067e+07 1.7319329e+04
+-2.2864971e+06 -1.8018720e+07 2.1389780e+04
+-2.0212084e+06 -1.5819652e+07 2.4730551e+04
+-1.6400876e+06 -1.2732476e+07 3.4274197e+04
+-1.1616646e+06 -8.9256776e+06 5.9880969e+04
+-6.6933585e+05 -5.0670550e+06 1.0141093e+05
+-2.8194369e+05 -2.0573148e+06 1.2639987e+05
+-7.1303949e+04 -4.0013520e+05 7.3937545e+04
+-2.0813653e+04 -7.4248415e+04 8.3311878e+04
+-1.4856097e+04 -2.1925975e+04 1.0795271e+05
+-1.8348567e+04 -1.1503516e+04 1.3615303e+05
+-9.3943561e+04 -1.0803440e+05 2.7110962e+05
+-1.0151176e+05 -2.1184261e+05 0.0000000e+00
+-2.3683983e+01 -6.7938925e+01 -9.2165508e+00
+-3.8133605e+02 -1.1876239e+03 -2.6985028e+02
+-4.8755290e+03 -1.7107323e+04 -5.4268348e+03
+-5.1206675e+04 -2.1439967e+05 -7.8513297e+04
+-3.7652411e+05 -2.6940972e+06 -4.6919852e+04
+-9.6262098e+05 -7.2996157e+06 -4.6828700e+04
+-1.5856425e+06 -1.2272098e+07 -3.7410362e+04
+-2.0599076e+06 -1.6032382e+07 -9.2358134e+03
+-2.3208193e+06 -1.8014995e+07 1.0228064e+04
+-2.3903124e+06 -1.8434414e+07 1.9363438e+04
+-2.3265827e+06 -1.7808627e+07 2.7669278e+04
+-2.1698116e+06 -1.6484810e+07 3.6014081e+04
+-1.9196754e+06 -1.4465490e+07 4.6745515e+04
+-1.5631446e+06 -1.1642817e+07 6.8549587e+04
+-1.1199525e+06 -8.1761784e+06 1.1504038e+05
+-6.6684571e+05 -4.6802810e+06 2.0203667e+05
+-3.1005041e+05 -1.9951416e+06 3.6101691e+05
+-9.9837731e+04 -3.6891233e+05 4.0422631e+05
+-7.2066676e+04 -1.3110292e+05 5.2029513e+05
+-8.0228623e+04 -7.3248743e+04 6.4538392e+05
+-1.0214823e+05 -4.8406824e+04 7.8142097e+05
+-4.2585798e+05 -2.9695811e+05 1.1844626e+06
+-3.9274266e+05 -4.6498747e+05 0.0000000e+00
+-1.8303065e+01 -3.6281686e+01 -2.1656275e+01
+-3.0675246e+02 -5.9658448e+02 -4.4090521e+02
+-4.4370026e+03 -8.2156483e+03 -6.7944493e+03
+-6.3649911e+04 -1.0712897e+05 -7.7345393e+04
+-1.2827307e+06 -2.1273386e+06 2.0405313e+04
+-3.4207542e+06 -5.5746203e+06 5.4844305e+04
+-5.7344877e+06 -9.3437385e+06 6.9805047e+04
+-7.4877833e+06 -1.2240480e+07 1.0859930e+05
+-8.4042292e+06 -1.3784330e+07 1.6472409e+05
+-8.6071551e+06 -1.4120754e+07 2.3640546e+05
+-8.3638829e+06 -1.3639598e+07 3.3186783e+05
+-7.8398550e+06 -1.2604000e+07 4.5634406e+05
+-7.0266433e+06 -1.1031364e+07 6.2069637e+05
+-5.8582902e+06 -8.8647678e+06 8.4706364e+05
+-4.3906859e+06 -6.2418171e+06 1.1642862e+06
+-2.8860370e+06 -3.6138485e+06 1.5867813e+06
+-1.6649145e+06 -1.5406506e+06 2.0446223e+06
+-3.1419629e+05 -2.1208056e+05 2.1117659e+06
+-2.8675500e+05 -1.0764872e+05 2.3204933e+06
+-3.1264700e+05 -7.0940630e+04 2.5976778e+06
+-3.7719145e+05 -4.8715387e+04 2.9521956e+06
+-1.3559879e+06 -3.7067396e+05 3.6989378e+06
+-1.1329690e+06 -6.3225864e+05 0.0000000e+00
+-1.3484879e+01 -1.7691611e+01 -1.1778986e+01
+-2.4005496e+02 -2.9262667e+02 -1.9314502e+02
+-3.8570735e+03 -4.2653919e+03 -2.1562877e+03
+-6.3443324e+04 -6.3598225e+04 -1.2774523e+04
+-1.2438656e+06 -1.5988359e+06 6.5503654e+03
+-3.3168518e+06 -4.2035365e+06 6.7615395e+04
+-5.5805249e+06 -7.0420559e+06 1.5744702e+05
+-7.3364703e+06 -9.2387071e+06 2.8250380e+05
+-8.3069801e+06 -1.0419919e+07 4.4417894e+05
+-8.5975402e+06 -1.0683834e+07 6.4959636e+05
+-8.4556174e+06 -1.0317500e+07 9.1083549e+05
+-8.0418746e+06 -9.5187640e+06 1.2412228e+06
+-7.3657520e+06 -8.3109231e+06 1.6605165e+06
+-6.3862696e+06 -6.6654640e+06 2.1974577e+06
+-5.1646297e+06 -4.6908385e+06 2.8857568e+06
+-3.9237198e+06 -2.7075817e+06 3.7537668e+06
+-2.8852861e+06 -1.1062469e+06 4.8106361e+06
+-6.7368857e+05 -1.1924885e+05 5.1961368e+06
+-6.7819791e+05 -6.2396481e+04 5.6947913e+06
+-7.4499468e+05 -4.1028818e+04 6.3207971e+06
+-8.9461637e+05 -2.5465192e+04 7.1218544e+06
+-3.0705864e+06 -2.5040102e+05 8.4818439e+06
+-2.4888000e+06 -5.1340085e+05 0.0000000e+00
+-1.1322819e+01 -8.9781699e+00 -3.3231978e+00
+-2.1443706e+02 -1.5651477e+02 -3.6364656e+01
+-3.6939653e+03 -2.4822963e+03 -2.3385852e+01
+-6.4261689e+04 -4.0617577e+04 8.6751106e+03
+-1.1604861e+06 -1.1587209e+06 3.6402915e+04
+-3.1159496e+06 -3.0769452e+06 1.2441556e+05
+-5.2824039e+06 -5.1647121e+06 2.8043151e+05
+-7.0035776e+06 -6.7850537e+06 5.0429810e+05
+-8.0105633e+06 -7.6617559e+06 7.9703546e+05
+-8.3919572e+06 -7.8610998e+06 1.1671890e+06
+-8.3729921e+06 -7.5888236e+06 1.6292339e+06
+-8.1080492e+06 -6.9896822e+06 2.2025134e+06
+-7.6218637e+06 -6.0869430e+06 2.9157446e+06
+-6.8945805e+06 -4.8680365e+06 3.8108807e+06
+-5.9892413e+06 -3.4146907e+06 4.9460456e+06
+-5.0904191e+06 -1.9522609e+06 6.4031052e+06
+-4.3212319e+06 -7.6451729e+05 8.2857216e+06
+-1.1151394e+06 -6.5867451e+04 9.0245278e+06
+-1.1605993e+06 -3.2112191e+04 9.9211729e+06
+-1.2817755e+06 -2.1173925e+04 1.1023468e+07
+-1.5419782e+06 -1.2820557e+04 1.2421395e+07
+-5.2474284e+06 -1.2218756e+05 1.4762285e+07
+-4.2588470e+06 -2.5320616e+05 0.0000000e+00
+-1.0787349e+01 -4.8431659e+00 8.5771580e-01
+-2.1094267e+02 -8.9062000e+01 3.2115601e+01
+-3.7346597e+03 -1.4964331e+03 8.1726706e+02
+-6.6034498e+04 -2.5565588e+04 1.7546333e+04
+-1.1038338e+06 -7.8637316e+05 7.1033246e+04
+-2.9633886e+06 -2.1062139e+06 1.9340771e+05
+-5.0574852e+06 -3.5449596e+06 4.0926738e+05
+-6.7618430e+06 -4.6633178e+06 7.2354839e+05
+-7.8116007e+06 -5.2707976e+06 1.1383397e+06
+-8.2783710e+06 -5.4103367e+06 1.6619889e+06
+-8.3678106e+06 -5.2206583e+06 2.3100653e+06
+-8.2299021e+06 -4.8010686e+06 3.1064425e+06
+-7.9036304e+06 -4.1709668e+06 4.0883015e+06
+-7.3887272e+06 -3.3262385e+06 5.3121675e+06
+-6.7526728e+06 -2.3243215e+06 6.8631405e+06
+-6.1520588e+06 -1.3164112e+06 8.8736540e+06
+-5.6221116e+06 -5.0081422e+05 1.1508673e+07
+-1.5200120e+06 -3.7177398e+04 1.2560656e+07
+-1.6006571e+06 -1.7744125e+04 1.3823622e+07
+-1.7707216e+06 -1.2703030e+04 1.5364413e+07
+-2.1313517e+06 -9.3034727e+03 1.7309571e+07
+-7.2593463e+06 -7.7548257e+04 2.0651394e+07
+-5.9282935e+06 -1.1481516e+05 0.0000000e+00
+-1.0869047e+01 -2.4918942e+00 2.6276262e+00
+-2.1480358e+02 -4.7309998e+01 6.0346285e+01
+-3.8309205e+03 -8.1710130e+02 1.1775857e+03
+-6.7936046e+04 -1.4191925e+04 2.2090832e+04
+-1.0734673e+06 -4.5671362e+05 9.8117324e+04
+-2.8679774e+06 -1.2301858e+06 2.5119018e+05
+-4.9165262e+06 -2.0753537e+06 5.1361376e+05
+-6.6166698e+06 -2.7329808e+06 8.9637283e+05
+-7.7033872e+06 -3.0910228e+06 1.4032037e+06
+-8.2335489e+06 -3.1736978e+06 2.0418595e+06
+-8.3978024e+06 -3.0612886e+06 2.8279128e+06
+-8.3434916e+06 -2.8119866e+06 3.7876488e+06
+-8.1211175e+06 -2.4385832e+06 4.9636821e+06
+-7.7461482e+06 -1.9405106e+06 6.4226328e+06
+-7.2912223e+06 -1.3519966e+06 8.2685629e+06
+-6.8947581e+06 -7.6063413e+05 1.0667341e+07
+-6.5245733e+06 -2.8471398e+05 1.3815719e+07
+-1.8086007e+06 -1.9617461e+04 1.5084598e+07
+-1.9111751e+06 -9.3906461e+03 1.6601646e+07
+-2.1142646e+06 -6.8552410e+03 1.8447034e+07
+-2.5442593e+06 -5.0667384e+03 2.0772029e+07
+-8.6837919e+06 -4.9205100e+04 2.4800744e+07
+-7.1069706e+06 -8.4184323e+04 0.0000000e+00
+-1.1055135e+01 -7.7802527e-01 3.3322285e+00
+-2.1900495e+02 -1.4963770e+01 7.1978964e+01
+-3.9100995e+03 -2.6101232e+02 1.3402140e+03
+-6.9319936e+04 -4.5573086e+03 2.4438443e+04
+-1.0594199e+06 -1.4986624e+05 1.1447476e+05
+-2.8167811e+06 -4.0477306e+05 2.8746007e+05
+-4.8402685e+06 -6.8375068e+05 5.7828972e+05
+-6.5400832e+06 -9.0094359e+05 1.0018070e+06
+-7.6496412e+06 -1.0193215e+06 1.5629161e+06
+-8.2158016e+06 -1.0467172e+06 2.2687080e+06
+-8.4197776e+06 -1.0094343e+06 3.1341681e+06
+-8.4074909e+06 -9.2666263e+05 4.1862541e+06
+-8.2367903e+06 -8.0286270e+05 5.4699208e+06
+-7.9331909e+06 -6.3815730e+05 7.0567167e+06
+-7.5732841e+06 -4.4392777e+05 9.0604772e+06
+-7.2856824e+06 -2.4891902e+05 1.1663981e+07
+-6.9970938e+06 -9.2504441e+04 1.5077046e+07
+-1.9668316e+06 -6.1710329e+03 1.6462745e+07
+-2.0795938e+06 -2.9184888e+03 1.8116406e+07
+-2.3000326e+06 -2.0406071e+03 2.0126686e+07
+-2.7674250e+06 -1.2675721e+03 2.2658774e+07
+-9.4645195e+06 -1.4559794e+04 2.7055631e+07
+-7.7448538e+06 -3.6584274e+04 0.0000000e+00
+-1.1135592e+01 7.7802527e-01 3.5221946e+00
+-2.2066370e+02 1.4963770e+01 7.5233989e+01
+-3.9395951e+03 2.6101232e+02 1.3884793e+03
+-6.9819369e+04 4.5573086e+03 2.5176596e+04
+-1.0553651e+06 1.4986624e+05 1.1986173e+05
+-2.8006375e+06 4.0477306e+05 2.9959841e+05
+-4.8160504e+06 6.8375068e+05 5.9980581e+05
+-6.5159391e+06 9.0094359e+05 1.0365849e+06
+-7.6329355e+06 1.0193215e+06 1.6152323e+06
+-8.2103546e+06 1.0467172e+06 2.3425447e+06
+-8.4261870e+06 1.0094343e+06 3.2331757e+06
+-8.4258979e+06 9.2666263e+05 4.3141223e+06
+-8.2698447e+06 8.0286270e+05 5.6308897e+06
+-7.9869841e+06 6.3815730e+05 7.2563759e+06
+-7.6553824e+06 4.4392777e+05 9.3072598e+06
+-7.4006262e+06 2.4891902e+05 1.1971233e+07
+-7.1357896e+06 9.2504441e+04 1.5461350e+07
+-2.0153024e+06 6.1710329e+03 1.6882641e+07
+-2.1307976e+06 2.9184887e+03 1.8577919e+07
+-2.3564443e+06 2.0406063e+03 2.0638782e+07
+-2.8352898e+06 1.2675459e+03 2.3235058e+07
+-9.7058016e+06 1.4558949e+04 2.7752157e+07
+-7.9413333e+06 3.6583808e+04 0.0000000e+00
+-1.1055135e+01 2.4918942e+00 3.3322285e+00
+-2.1900495e+02 4.7309998e+01 7.1978964e+01
+-3.9100995e+03 8.1710130e+02 1.3402140e+03
+-6.9319936e+04 1.4191925e+04 2.4438443e+04
+-1.0594199e+06 4.5671362e+05 1.1447476e+05
+-2.8167811e+06 1.2301858e+06 2.8746007e+05
+-4.8402685e+06 2.0753537e+06 5.7828972e+05
+-6.5400832e+06 2.7329808e+06 1.0018070e+06
+-7.6496412e+06 3.0910228e+06 1.5629161e+06
+-8.2158016e+06 3.1736978e+06 2.2687080e+06
+-8.4197776e+06 3.0612886e+06 3.1341681e+06
+-8.4074909e+06 2.8119866e+06 4.1862541e+06
+-8.2367903e+06 2.4385832e+06 5.4699208e+06
+-7.9331909e+06 1.9405106e+06 7.0567167e+06
+-7.5732841e+06 1.3519966e+06 9.0604772e+06
+-7.2856824e+06 7.6063413e+05 1.1663981e+07
+-6.9970938e+06 2.8471398e+05 1.5077046e+07
+-1.9668316e+06 1.9617461e+04 1.6462745e+07
+-2.0795938e+06 9.3906461e+03 1.8116406e+07
+-2.3000326e+06 6.8552404e+03 2.0126686e+07
+-2.7674250e+06 5.0667326e+03 2.2658774e+07
+-9.4645197e+06 4.9204967e+04 2.7055631e+07
+-7.7448542e+06 8.4184982e+04 0.0000000e+00
+-1.0869047e+01 4.8431659e+00 2.6276262e+00
+-2.1480358e+02 8.9062000e+01 6.0346285e+01
+-3.8309205e+03 1.4964331e+03 1.1775857e+03
+-6.7936046e+04 2.5565588e+04 2.2090832e+04
+-1.0734673e+06 7.8637316e+05 9.8117324e+04
+-2.8679774e+06 2.1062139e+06 2.5119018e+05
+-4.9165262e+06 3.5449596e+06 5.1361376e+05
+-6.6166698e+06 4.6633178e+06 8.9637283e+05
+-7.7033872e+06 5.2707976e+06 1.4032037e+06
+-8.2335489e+06 5.4103367e+06 2.0418595e+06
+-8.3978024e+06 5.2206583e+06 2.8279128e+06
+-8.3434916e+06 4.8010686e+06 3.7876488e+06
+-8.1211175e+06 4.1709668e+06 4.9636821e+06
+-7.7461482e+06 3.3262385e+06 6.4226328e+06
+-7.2912223e+06 2.3243215e+06 8.2685629e+06
+-6.8947581e+06 1.3164112e+06 1.0667341e+07
+-6.5245733e+06 5.0081422e+05 1.3815719e+07
+-1.8086007e+06 3.7177398e+04 1.5084598e+07
+-1.9111751e+06 1.7744125e+04 1.6601646e+07
+-2.1142646e+06 1.2703029e+04 1.8447034e+07
+-2.5442593e+06 9.3035066e+03 2.0772029e+07
+-8.6837921e+06 7.7549541e+04 2.4800744e+07
+-7.1069709e+06 1.1481546e+05 0.0000000e+00
+-1.0787349e+01 8.9781699e+00 8.5771580e-01
+-2.1094267e+02 1.5651477e+02 3.2115601e+01
+-3.7346597e+03 2.4822963e+03 8.1726706e+02
+-6.6034498e+04 4.0617577e+04 1.7546333e+04
+-1.1038338e+06 1.1587209e+06 7.1033246e+04
+-2.9633886e+06 3.0769452e+06 1.9340771e+05
+-5.0574852e+06 5.1647121e+06 4.0926738e+05
+-6.7618430e+06 6.7850537e+06 7.2354839e+05
+-7.8116007e+06 7.6617559e+06 1.1383397e+06
+-8.2783710e+06 7.8610998e+06 1.6619889e+06
+-8.3678106e+06 7.5888236e+06 2.3100653e+06
+-8.2299021e+06 6.9896822e+06 3.1064425e+06
+-7.9036304e+06 6.0869430e+06 4.0883015e+06
+-7.3887272e+06 4.8680365e+06 5.3121675e+06
+-6.7526728e+06 3.4146907e+06 6.8631405e+06
+-6.1520588e+06 1.9522609e+06 8.8736540e+06
+-5.6221116e+06 7.6451729e+05 1.1508673e+07
+-1.5200120e+06 6.5867451e+04 1.2560656e+07
+-1.6006571e+06 3.2112191e+04 1.3823622e+07
+-1.7707216e+06 2.1173926e+04 1.5364413e+07
+-2.1313517e+06 1.2820550e+04 1.7309571e+07
+-7.2593465e+06 1.2218724e+05 2.0651395e+07
+-5.9282921e+06 2.5320636e+05 0.0000000e+00
+-1.1322819e+01 1.7691611e+01 -3.3231978e+00
+-2.1443706e+02 2.9262667e+02 -3.6364656e+01
+-3.6939653e+03 4.2653919e+03 -2.3385852e+01
+-6.4261689e+04 6.3598225e+04 8.6751106e+03
+-1.1604861e+06 1.5988359e+06 3.6402915e+04
+-3.1159496e+06 4.2035365e+06 1.2441556e+05
+-5.2824039e+06 7.0420559e+06 2.8043151e+05
+-7.0035776e+06 9.2387071e+06 5.0429810e+05
+-8.0105633e+06 1.0419919e+07 7.9703546e+05
+-8.3919572e+06 1.0683834e+07 1.1671890e+06
+-8.3729921e+06 1.0317500e+07 1.6292339e+06
+-8.1080492e+06 9.5187640e+06 2.2025134e+06
+-7.6218637e+06 8.3109231e+06 2.9157446e+06
+-6.8945805e+06 6.6654640e+06 3.8108807e+06
+-5.9892413e+06 4.6908385e+06 4.9460456e+06
+-5.0904191e+06 2.7075817e+06 6.4031052e+06
+-4.3212319e+06 1.1062469e+06 8.2857216e+06
+-1.1151394e+06 1.1924885e+05 9.0245278e+06
+-1.1605993e+06 6.2396481e+04 9.9211729e+06
+-1.2817755e+06 4.1028817e+04 1.1023468e+07
+-1.5419782e+06 2.5465128e+04 1.2421395e+07
+-5.2474282e+06 2.5039882e+05 1.4762287e+07
+-4.2588466e+06 5.1340032e+05 0.0000000e+00
+-1.3484879e+01 3.6281686e+01 -1.1778986e+01
+-2.4005496e+02 5.9658448e+02 -1.9314502e+02
+-3.8570735e+03 8.2156483e+03 -2.1562877e+03
+-6.3443324e+04 1.0712897e+05 -1.2774523e+04
+-1.2438656e+06 2.1273386e+06 6.5503654e+03
+-3.3168518e+06 5.5746203e+06 6.7615395e+04
+-5.5805249e+06 9.3437385e+06 1.5744702e+05
+-7.3364703e+06 1.2240480e+07 2.8250380e+05
+-8.3069801e+06 1.3784330e+07 4.4417894e+05
+-8.5975402e+06 1.4120754e+07 6.4959636e+05
+-8.4556174e+06 1.3639598e+07 9.1083549e+05
+-8.0418746e+06 1.2604000e+07 1.2412228e+06
+-7.3657520e+06 1.1031364e+07 1.6605165e+06
+-6.3862696e+06 8.8647678e+06 2.1974577e+06
+-5.1646297e+06 6.2418171e+06 2.8857568e+06
+-3.9237198e+06 3.6138485e+06 3.7537668e+06
+-2.8852861e+06 1.5406506e+06 4.8106361e+06
+-6.7368857e+05 2.1208056e+05 5.1961368e+06
+-6.7819791e+05 1.0764872e+05 5.6947913e+06
+-7.4499468e+05 7.0940630e+04 6.3207971e+06
+-8.9461634e+05 4.8715397e+04 7.1218544e+06
+-3.0705857e+06 3.7067471e+05 8.4818425e+06
+-2.4888016e+06 6.3225811e+05 0.0000000e+00
+-1.8303065e+01 6.7938925e+01 -2.1656275e+01
+-3.0675246e+02 1.1876239e+03 -4.4090521e+02
+-4.4370026e+03 1.7107323e+04 -6.7944493e+03
+-6.3649911e+04 2.1439967e+05 -7.7345393e+04
+-1.2827307e+06 2.6940972e+06 2.0405313e+04
+-3.4207542e+06 7.2996157e+06 5.4844305e+04
+-5.7344877e+06 1.2272098e+07 6.9805047e+04
+-7.4877833e+06 1.6032382e+07 1.0859930e+05
+-8.4042292e+06 1.8014995e+07 1.6472409e+05
+-8.6071551e+06 1.8434414e+07 2.3640546e+05
+-8.3638829e+06 1.7808627e+07 3.3186783e+05
+-7.8398550e+06 1.6484810e+07 4.5634406e+05
+-7.0266433e+06 1.4465490e+07 6.2069637e+05
+-5.8582902e+06 1.1642817e+07 8.4706364e+05
+-4.3906859e+06 8.1761784e+06 1.1642862e+06
+-2.8860370e+06 4.6802810e+06 1.5867813e+06
+-1.6649145e+06 1.9951416e+06 2.0446223e+06
+-3.1419629e+05 3.6891233e+05 2.1117659e+06
+-2.8675500e+05 1.3110292e+05 2.3204933e+06
+-3.1264699e+05 7.3248741e+04 2.5976778e+06
+-3.7719137e+05 4.8406778e+04 2.9521958e+06
+-1.3559856e+06 2.9695734e+05 3.6989414e+06
+-1.1329705e+06 4.6498746e+05 0.0000000e+00
+-2.3683983e+01 9.1017391e+01 -9.2165509e+00
+-3.8133605e+02 1.6808269e+03 -2.6985028e+02
+-4.8755290e+03 2.5380040e+04 -5.4268348e+03
+-5.1206675e+04 3.2174336e+05 -7.8513297e+04
+-3.7652411e+05 2.9236196e+06 -4.6919852e+04
+-9.6262098e+05 7.9778106e+06 -4.6828700e+04
+-1.5856425e+06 1.3387635e+07 -3.7410362e+04
+-2.0599076e+06 1.7467033e+07 -9.2358134e+03
+-2.3208193e+06 1.9642218e+07 1.0228064e+04
+-2.3903124e+06 2.0121706e+07 1.9363438e+04
+-2.3265827e+06 1.9453067e+07 2.7669278e+04
+-2.1698116e+06 1.8018720e+07 3.6014081e+04
+-1.9196754e+06 1.5819652e+07 4.6745515e+04
+-1.5631446e+06 1.2732476e+07 6.8549587e+04
+-1.1199525e+06 8.9256776e+06 1.1504038e+05
+-6.6684571e+05 5.0670550e+06 2.0203667e+05
+-3.1005041e+05 2.0573148e+06 3.6101691e+05
+-9.9837731e+04 4.0013520e+05 4.0422631e+05
+-7.2066676e+04 7.4248415e+04 5.2029513e+05
+-8.0228620e+04 2.1925965e+04 6.4538393e+05
+-1.0214812e+05 1.1503221e+04 7.8142128e+05
+-4.2585426e+05 1.0802565e+05 1.1844746e+06
+-3.9274326e+05 2.1184320e+05 0.0000000e+00
+-2.5486992e+01 7.8002440e+01 2.8773447e+01
+-4.2207779e+02 1.5413407e+03 4.4260160e+02
+-5.4964197e+03 2.5050369e+04 4.5554518e+03
+-5.7342294e+04 3.4132028e+05 2.6861443e+04
+-3.9733901e+05 3.2413219e+06 1.6085433e+04
+-1.0276509e+06 8.8364703e+06 -3.2368069e+04
+-1.6877035e+06 1.4737808e+07 -3.8374151e+04
+-2.1844122e+06 1.9180555e+07 -8.4528981e+03
+-2.4565388e+06 2.1584068e+07 8.6521992e+03
+-2.5255224e+06 2.2132848e+07 1.2537105e+04
+-2.4538250e+06 2.1408484e+07 1.7319329e+04
+-2.2864971e+06 1.9841774e+07 2.1389780e+04
+-2.0212084e+06 1.7431376e+07 2.4730551e+04
+-1.6400876e+06 1.4033679e+07 3.4274197e+04
+-1.1616646e+06 9.8293504e+06 5.9880969e+04
+-6.6933585e+05 5.5630321e+06 1.0141093e+05
+-2.8194369e+05 2.2607951e+06 1.2639987e+05
+-7.1303949e+04 5.1119961e+05 7.3937545e+04
+-2.0813653e+04 8.2608409e+04 8.3311880e+04
+-1.4856102e+04 1.1503272e+04 1.0795272e+05
+-1.8348678e+04 2.1247093e+03 1.3615327e+05
+-9.3942266e+04 2.1529474e+04 2.7111277e+05
+-1.0151106e+05 5.7243888e+04 0.0000000e+00
+-1.9499331e+01 3.3908894e+01 5.6794283e+01
+-3.4458225e+02 7.5596355e+02 1.0799069e+03
+-4.8604619e+03 1.4450464e+04 1.5258282e+04
+-5.6132813e+04 2.5009317e+05 1.5071207e+05
+-4.4588585e+05 3.6727547e+06 9.4873660e+04
+-1.1508248e+06 9.9392538e+06 -1.5938782e+04
+-1.8721337e+06 1.6396784e+07 -3.9167340e+04
+-2.4134043e+06 2.1261137e+07 -4.6510305e+03
+-2.7148406e+06 2.3945428e+07 1.0338395e+04
+-2.7923565e+06 2.4579899e+07 9.2430799e+03
+-2.7126944e+06 2.3784487e+07 1.3139445e+04
+-2.5284055e+06 2.2056339e+07 1.6887328e+04
+-2.2362950e+06 1.9390857e+07 1.8188300e+04
+-1.8147832e+06 1.5619491e+07 2.2978545e+04
+-1.2833813e+06 1.0938439e+07 3.9575154e+04
+-7.3554307e+05 6.1844336e+06 6.6725710e+04
+-3.0725102e+05 2.5323155e+06 7.0108979e+04
+-7.9092069e+04 6.3254005e+05 2.1507994e+04
+-1.4742826e+04 1.0671490e+05 1.1500036e+04
+-3.3754432e+03 1.3193463e+04 1.3225213e+04
+-2.4786124e+03 1.4777608e+03 1.6551643e+04
+-1.4988470e+04 1.9074208e+03 4.4400877e+04
+-1.9033119e+04 7.4725895e+03 0.0000000e+00
+-7.8065990e+00 0.0000000e+00 3.9263731e+01
+-1.5482672e+02 0.0000000e+00 9.0860701e+02
+-2.5819778e+03 0.0000000e+00 1.7389052e+04
+-3.9080725e+04 0.0000000e+00 3.0038787e+05
+-5.4016874e+05 4.2474666e+06 2.0181491e+05
+-1.4057276e+06 1.1387894e+07 1.3274214e+04
+-2.2609320e+06 1.8515298e+07 -4.3254118e+04
+-2.8993411e+06 2.3879102e+07 -2.5751165e+03
+-3.2637258e+06 2.6916634e+07 1.4090335e+04
+-3.3604607e+06 2.7665523e+07 6.2215734e+03
+-3.2642771e+06 2.6777829e+07 8.7278129e+03
+-3.0429123e+06 2.4844329e+07 1.3688432e+04
+-2.6927563e+06 2.1859754e+07 1.3550800e+04
+-2.1859062e+06 1.7621320e+07 1.4074819e+04
+-1.5450066e+06 1.2344129e+07 2.4757561e+04
+-8.8392639e+05 6.9791356e+06 4.5836314e+04
+-3.7073800e+05 2.8804129e+06 4.6204300e+04
+-1.0056394e+05 7.6514576e+05 1.1231548e+04
+-1.8173735e+04 1.3444047e+05 2.1290299e+03
+-2.4751716e+03 1.6513131e+04 1.4783002e+03
+-5.8112097e+02 1.7617037e+03 1.7651286e+03
+-1.7665661e+03 0.0000000e+00 4.7874004e+03
+-2.1507018e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.5364450e+06 4.1900077e+06 7.9069839e+05
+-4.7086029e+06 1.3675720e+07 5.9707015e+05
+-7.7360486e+06 2.2646664e+07 -5.0072871e+04
+-9.8745847e+06 2.8552240e+07 -1.2646347e+05
+-1.1113231e+07 3.1917762e+07 8.7780111e+04
+-1.1502888e+07 3.3021398e+07 1.0208773e+05
+-1.1200730e+07 3.2058657e+07 6.4570490e+04
+-1.0429291e+07 2.9710488e+07 1.0537379e+05
+-9.2165737e+06 2.6172329e+07 1.2253372e+05
+-7.4721866e+06 2.1114437e+07 1.3422745e+05
+-5.2773491e+06 1.4734632e+07 2.4323019e+05
+-3.0440273e+06 8.3436199e+06 3.5539446e+05
+-1.3355521e+06 3.6167531e+06 2.8501740e+05
+-4.1900032e+05 1.1572528e+06 1.0447789e+05
+-9.2723651e+04 2.6577378e+05 2.1193134e+04
+-1.4890607e+04 4.3917609e+04 1.9735645e+03
+-1.7641603e+03 4.8316308e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.1205516e+06 0.0000000e+00 6.0268300e+05
+-3.8113675e+06 0.0000000e+00 1.1205815e+06
+-6.4693062e+06 0.0000000e+00 4.6504964e+05
+-8.1657090e+06 0.0000000e+00 -2.3010686e+05
+-9.0642636e+06 0.0000000e+00 -5.8456417e+04
+-9.3957186e+06 0.0000000e+00 2.2071247e+05
+-9.1827207e+06 0.0000000e+00 1.8182739e+05
+-8.5405901e+06 0.0000000e+00 1.4712491e+05
+-7.5433753e+06 0.0000000e+00 1.8869101e+05
+-6.1099990e+06 0.0000000e+00 2.8811767e+05
+-4.2897891e+06 0.0000000e+00 4.9739512e+05
+-2.4686497e+06 0.0000000e+00 6.0661825e+05
+-1.1154237e+06 0.0000000e+00 4.4813959e+05
+-3.8574397e+05 0.0000000e+00 2.0393530e+05
+-9.9708060e+04 0.0000000e+00 5.5369778e+04
+-1.8762903e+04 0.0000000e+00 7.4166071e+03
+-2.1513188e+03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0.0000000e+00 -2.5966522e+06 3.0408952e+05
+0.0000000e+00 -8.1609977e+06 4.6123899e+05
+0.0000000e+00 -1.3382524e+07 1.3541724e+05
+0.0000000e+00 -1.6923226e+07 -1.0344842e+05
+0.0000000e+00 -1.8957718e+07 -6.9609959e+03
+0.0000000e+00 -1.9604856e+07 8.0315048e+04
+0.0000000e+00 -1.9064907e+07 5.7714795e+04
+0.0000000e+00 -1.7728809e+07 5.6129457e+04
+0.0000000e+00 -1.5662851e+07 7.1170139e+04
+0.0000000e+00 -1.2682531e+07 9.9509582e+04
+0.0000000e+00 -8.9090581e+06 1.8278426e+05
+0.0000000e+00 -5.0827374e+06 2.3880960e+05
+0.0000000e+00 -2.2010898e+06 1.8094383e+05
+0.0000000e+00 -6.8715971e+05 7.9271516e+04
+0.0000000e+00 -1.5067643e+05 2.0152362e+04
+0.0000000e+00 -2.3336991e+04 2.4154876e+03
+0.0000000e+00 -2.4504810e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0.0000000e+00 -4.7055415e+06 5.7244504e+05
+0.0000000e+00 -1.2664324e+07 3.6716918e+05
+0.0000000e+00 -2.0718430e+07 -3.2974135e+04
+0.0000000e+00 -2.6771204e+07 -5.9583526e+04
+0.0000000e+00 -3.0181282e+07 5.0750697e+04
+0.0000000e+00 -3.1110359e+07 5.3365487e+04
+0.0000000e+00 -3.0254206e+07 4.1935220e+04
+0.0000000e+00 -2.8182809e+07 6.6644452e+04
+0.0000000e+00 -2.4889007e+07 7.6226536e+04
+0.0000000e+00 -2.0166461e+07 8.7968473e+04
+0.0000000e+00 -1.4256609e+07 1.5817260e+05
+0.0000000e+00 -8.2058376e+06 2.3724593e+05
+0.0000000e+00 -3.4992706e+06 1.9987511e+05
+0.0000000e+00 -9.7770281e+05 7.1418301e+04
+0.0000000e+00 -1.8618016e+05 1.4197397e+04
+0.0000000e+00 -2.5518415e+04 1.4886055e+03
+0.0000000e+00 -2.7258705e+03 0.0000000e+00
+0 0 0
+0 0 0
+-1.3165496e+01 -3.8062921e+01 4.3421818e+01
+-2.7356601e+02 -8.4008838e+02 1.0022495e+03
+-4.8514270e+03 -1.5930115e+04 1.9201814e+04
+-7.8573461e+04 -2.7458165e+05 3.3327620e+05
+-1.1078304e+06 -4.0389013e+06 2.3429760e+05
+-2.9217268e+06 -1.0951925e+07 3.7898132e+04
+-4.7858704e+06 -1.8121105e+07 -3.4488561e+04
+-6.1901760e+06 -2.3508658e+07 -6.1988910e+03
+-6.9794395e+06 -2.6483522e+07 1.1754961e+04
+-7.2044778e+06 -2.7263036e+07 8.4488242e+03
+-7.0239010e+06 -2.6497401e+07 1.1266979e+04
+-6.5584624e+06 -2.4672019e+07 1.6026576e+04
+-5.8050417e+06 -2.1777724e+07 1.7028221e+04
+-4.7181848e+06 -1.7637417e+07 2.0263509e+04
+-3.3537534e+06 -1.2463819e+07 3.6220116e+04
+-1.9504642e+06 -7.1662233e+06 6.3143655e+04
+-8.4700784e+05 -3.0236471e+06 6.3790015e+04
+-2.4309729e+05 -7.8897074e+05 1.7591302e+04
+-4.8488040e+04 -1.4194415e+05 3.6696108e+03
+-7.4852989e+03 -1.9114447e+04 2.2757394e+03
+-1.4877801e+03 -2.2754629e+03 2.7319900e+03
+0.0000000e+00 -1.4735907e+03 2.4399292e+03
+0.0000000e+00 -2.4112264e+03 0.0000000e+00
+-3.1893228e+01 -8.8467598e+01 6.2798574e+01
+-5.8321489e+02 -1.7292024e+03 1.1905453e+03
+-8.6226585e+03 -2.7802354e+04 1.6824981e+04
+-1.0575545e+05 -3.7526680e+05 1.6713276e+05
+-9.0216963e+05 -3.5367403e+06 1.2125553e+05
+-2.3784673e+06 -9.6095173e+06 6.4901232e+03
+-3.9255088e+06 -1.6028601e+07 -3.2637978e+04
+-5.0914615e+06 -2.0855061e+07 -8.1779099e+03
+-5.7375249e+06 -2.3477545e+07 8.5288583e+03
+-5.9174893e+06 -2.4139724e+07 1.0350425e+04
+-5.7679162e+06 -2.3446068e+07 1.4239441e+04
+-5.3856022e+06 -2.1818851e+07 1.8268715e+04
+-4.7671963e+06 -1.9249250e+07 2.0696488e+04
+-3.8755614e+06 -1.5584024e+07 2.8081836e+04
+-2.7562579e+06 -1.1013290e+07 5.0428590e+04
+-1.6034091e+06 -6.3327740e+06 8.4845388e+04
+-6.9113957e+05 -2.6458304e+06 9.0917304e+04
+-1.8760986e+05 -6.1927189e+05 2.9736249e+04
+-3.7942181e+04 -1.0493686e+05 1.5928319e+04
+-9.7980497e+03 -1.5934669e+04 1.9171149e+04
+-7.5097287e+03 -3.6805397e+03 2.5607553e+04
+0.0000000e+00 -1.4373981e+04 2.3520812e+04
+0.0000000e+00 -2.0743575e+04 0.0000000e+00
+-4.0662578e+01 -1.0439838e+02 3.1106368e+01
+-6.9011650e+02 -1.9081963e+03 4.7813896e+02
+-9.2930632e+03 -2.8497354e+04 4.9697826e+03
+-1.0107851e+05 -3.5725800e+05 3.0697195e+04
+-7.3349939e+05 -3.2034718e+06 3.3589105e+04
+-1.9266765e+06 -8.6614106e+06 -1.5491976e+04
+-3.1950366e+06 -1.4503868e+07 -3.2892494e+04
+-4.1528565e+06 -1.8908729e+07 -1.0779695e+04
+-4.6777470e+06 -2.1273760e+07 6.6435808e+03
+-4.8207800e+06 -2.1850007e+07 1.2184131e+04
+-4.6977688e+06 -2.1206979e+07 1.7038531e+04
+-4.3862455e+06 -1.9723479e+07 2.1414452e+04
+-3.8830723e+06 -1.7391790e+07 2.5818587e+04
+-3.1584990e+06 -1.4077751e+07 3.7957100e+04
+-2.2496531e+06 -9.9565644e+06 6.9220550e+04
+-1.3126490e+06 -5.7398140e+06 1.1957367e+05
+-5.6644636e+05 -2.3964847e+06 1.5473065e+05
+-1.4830811e+05 -4.7999775e+05 9.2460674e+04
+-4.6081318e+04 -9.2823778e+04 1.0561526e+05
+-3.8192606e+04 -3.0216228e+04 1.4323332e+05
+-4.8883964e+04 -1.7944998e+04 1.8803318e+05
+0.0000000e+00 -7.3372728e+04 1.5308724e+05
+0.0000000e+00 -8.2102743e+04 0.0000000e+00
+-3.7089652e+01 -7.8807132e+01 -1.2185578e+01
+-6.0771561e+02 -1.3656193e+03 -3.2838303e+02
+-7.9529092e+03 -1.9494451e+04 -6.2539054e+03
+-8.5820830e+04 -2.4239039e+05 -8.6507354e+04
+-6.4678699e+05 -2.9835663e+06 -3.6150001e+04
+-1.6660545e+06 -7.9595134e+06 -3.4613613e+04
+-2.7591425e+06 -1.3332423e+07 -3.2558146e+04
+-3.5936658e+06 -1.7397882e+07 -9.6470536e+03
+-4.0546716e+06 -1.9559610e+07 1.0055521e+04
+-4.1854654e+06 -2.0065655e+07 2.0856287e+04
+-4.0850243e+06 -1.9457979e+07 3.0298609e+04
+-3.8182238e+06 -1.8085039e+07 4.0270628e+04
+-3.3845719e+06 -1.5940323e+07 5.3699876e+04
+-2.7632428e+06 -1.2904127e+07 8.0173795e+04
+-1.9893210e+06 -9.1417989e+06 1.3477672e+05
+-1.1955381e+06 -5.3125296e+06 2.3618473e+05
+-5.6584073e+05 -2.3373260e+06 4.3281634e+05
+-1.8941998e+05 -4.4090906e+05 4.8330990e+05
+-1.4952670e+05 -1.5935923e+05 6.2730537e+05
+-1.8966886e+05 -9.4123227e+04 8.0065260e+05
+-2.4596114e+05 -6.6116862e+04 9.9263738e+05
+0.0000000e+00 -2.0710108e+05 7.0050774e+05
+0.0000000e+00 -1.8731676e+05 0.0000000e+00
+-2.8393596e+01 -4.2642629e+01 -2.6073971e+01
+-4.8232576e+02 -6.9699051e+02 -5.1912949e+02
+-7.0980613e+03 -9.5603392e+03 -7.7921830e+03
+-1.0375395e+05 -1.2493121e+05 -8.5147323e+04
+-1.9293387e+06 -2.4724218e+06 5.0316209e+04
+-5.1064407e+06 -6.3247097e+06 1.0119901e+05
+-8.5486343e+06 -1.0535020e+07 1.1794251e+05
+-1.1149765e+07 -1.3778791e+07 1.6083300e+05
+-1.2505858e+07 -1.5528613e+07 2.3146497e+05
+-1.2816465e+07 -1.5950901e+07 3.2602021e+05
+-1.2479932e+07 -1.5466165e+07 4.5025540e+05
+-1.1733333e+07 -1.4350273e+07 6.0896764e+05
+-1.0555008e+07 -1.2615572e+07 8.1258116e+05
+-8.8367994e+06 -1.0196009e+07 1.0829725e+06
+-6.6552558e+06 -7.2412825e+06 1.4470260e+06
+-4.4080732e+06 -4.2530926e+06 1.9096252e+06
+-2.6077458e+06 -1.8647441e+06 2.3798747e+06
+-5.7162284e+05 -2.4635251e+05 2.4427447e+06
+-5.7365039e+05 -1.2578053e+05 2.6960614e+06
+-6.9986306e+05 -8.9179020e+04 3.0783332e+06
+-8.5731134e+05 -6.6205222e+04 3.5585415e+06
+0.0000000e+00 -2.4626205e+05 2.2417146e+06
+0.0000000e+00 -2.4800279e+05 0.0000000e+00
+-2.1008452e+01 -2.1342312e+01 -1.3776744e+01
+-3.7840460e+02 -3.5352049e+02 -2.1889712e+02
+-6.1664099e+03 -5.1853766e+03 -2.2845233e+03
+-1.0293132e+05 -7.8195587e+04 -9.5321483e+03
+-1.8219337e+06 -1.9340172e+06 3.0131253e+04
+-4.7847633e+06 -4.9440686e+06 1.1740164e+05
+-8.0152731e+06 -8.2193788e+06 2.3650836e+05
+-1.0516677e+07 -1.0761270e+07 3.9919320e+05
+-1.1900653e+07 -1.2146344e+07 6.1059733e+05
+-1.2327236e+07 -1.2488044e+07 8.7743648e+05
+-1.2148437e+07 -1.2105843e+07 1.2099340e+06
+-1.1586218e+07 -1.1214985e+07 1.6189887e+06
+-1.0646721e+07 -9.8363181e+06 2.1207046e+06
+-9.2650296e+06 -7.9341502e+06 2.7376056e+06
+-7.5288457e+06 -5.6301882e+06 3.4907275e+06
+-5.7787805e+06 -3.2929308e+06 4.3856264e+06
+-4.3997610e+06 -1.3810678e+06 5.4164250e+06
+-1.2027825e+06 -1.3905996e+05 5.8382264e+06
+-1.3231191e+06 -7.1798147e+04 6.4291651e+06
+-1.6145772e+06 -5.1985965e+04 7.2615546e+06
+-1.9620418e+06 -3.7028315e+04 8.2998032e+06
+0.0000000e+00 -1.6134315e+05 5.1442978e+06
+0.0000000e+00 -1.8872334e+05 0.0000000e+00
+-1.7931330e+01 -1.1248712e+01 -3.4850884e+00
+-3.4304191e+02 -1.9744722e+02 -3.0953503e+01
+-5.9778722e+03 -3.1611970e+03 2.2877382e+02
+-1.0523390e+05 -5.2202685e+04 1.5208081e+04
+-1.6984471e+06 -1.4451586e+06 6.4310564e+04
+-4.4637530e+06 -3.7222334e+06 1.9027877e+05
+-7.5183854e+06 -6.1948563e+06 4.0173777e+05
+-9.9434916e+06 -8.1189604e+06 6.9934257e+05
+-1.1367727e+07 -9.1737963e+06 1.0839576e+06
+-1.1920657e+07 -9.4374448e+06 1.5620584e+06
+-1.1916218e+07 -9.1450375e+06 2.1444791e+06
+-1.1565257e+07 -8.4585433e+06 2.8452459e+06
+-1.0897906e+07 -7.4003476e+06 3.6853181e+06
+-9.8849473e+06 -5.9525737e+06 4.6941083e+06
+-8.6240484e+06 -4.2090739e+06 5.9078011e+06
+-7.4145427e+06 -2.4365632e+06 7.3755571e+06
+-6.5370288e+06 -9.7936470e+05 9.1896509e+06
+-1.9723027e+06 -7.7239459e+04 9.9849937e+06
+-2.2354195e+06 -3.5764620e+04 1.1023780e+07
+-2.7359535e+06 -2.5990695e+04 1.2451963e+07
+-3.3255047e+06 -1.8480976e+04 1.4216942e+07
+0.0000000e+00 -8.0416816e+04 8.8885875e+06
+0.0000000e+00 -8.8084193e+04 0.0000000e+00
+-1.7375523e+01 -6.2979843e+00 1.6374466e+00
+-3.4254566e+02 -1.1661349e+02 5.2406714e+01
+-6.1210785e+03 -1.9730845e+03 1.2507130e+03
+-1.0927764e+05 -3.3880014e+04 2.6171185e+04
+-1.6271802e+06 -1.0025936e+06 1.0695257e+05
+-4.2581275e+06 -2.6003534e+06 2.7981147e+05
+-7.2092640e+06 -4.3370186e+06 5.7375258e+05
+-9.6104416e+06 -5.6900976e+06 9.9348830e+05
+-1.1095766e+07 -6.4344711e+06 1.5383284e+06
+-1.1767912e+07 -6.6217049e+06 2.2121294e+06
+-1.1911460e+07 -6.4135556e+06 3.0242970e+06
+-1.1731214e+07 -5.9233727e+06 3.9904377e+06
+-1.1279300e+07 -5.1705195e+06 5.1362789e+06
+-1.0558238e+07 -4.1473854e+06 6.5006010e+06
+-9.6792465e+06 -2.9210836e+06 8.1391844e+06
+-8.9176548e+06 -1.6746252e+06 1.0142842e+07
+-8.4673490e+06 -6.5425378e+05 1.2662969e+07
+-2.6769711e+06 -4.3472448e+04 1.3786161e+07
+-3.0673726e+06 -1.8774205e+04 1.5235886e+07
+-3.7602083e+06 -1.4564849e+04 1.7213947e+07
+-4.5731144e+06 -1.1782824e+04 1.9649012e+07
+0.0000000e+00 -5.0305901e+04 1.2359554e+07
+0.0000000e+00 -4.2463796e+04 0.0000000e+00
+-1.7712574e+01 -3.3255603e+00 3.8711027e+00
+-3.5247097e+02 -6.3451068e+01 8.8376061e+01
+-6.3364658e+03 -1.1006917e+03 1.7215286e+03
+-1.1331072e+05 -1.9169321e+04 3.2385508e+04
+-1.5944780e+06 -5.9065382e+05 1.4145649e+05
+-4.1432034e+06 -1.5390251e+06 3.5535421e+05
+-7.0389530e+06 -2.5718671e+06 7.1262942e+05
+-9.4409936e+06 -3.3771942e+06 1.2240498e+06
+-1.0981724e+07 -3.8210758e+06 1.8889912e+06
+-1.1741871e+07 -3.9330284e+06 2.7086371e+06
+-1.1984956e+07 -3.8079221e+06 3.6901571e+06
+-1.1912880e+07 -3.5130265e+06 4.8491997e+06
+-1.1595277e+07 -3.0613734e+06 6.2142133e+06
+-1.1059370e+07 -2.4504674e+06 7.8305174e+06
+-1.0428924e+07 -1.7207782e+06 9.7679136e+06
+-9.9656420e+06 -9.7993857e+05 1.2144111e+07
+-9.7965078e+06 -3.7695454e+05 1.5138746e+07
+-3.1803783e+06 -2.2915972e+04 1.6489967e+07
+-3.6574577e+06 -9.7236754e+03 1.8227200e+07
+-4.4866374e+06 -7.8164835e+03 2.0592824e+07
+-5.4583974e+06 -6.5397852e+03 2.3501719e+07
+0.0000000e+00 -3.0136900e+04 1.4797758e+07
+0.0000000e+00 -3.1274784e+04 0.0000000e+00
+-1.8130904e+01 -1.0513537e+00 4.8015619e+00
+-3.6146501e+02 -2.0296775e+01 1.0410733e+02
+-6.5015420e+03 -3.5516185e+02 1.9500200e+03
+-1.1615971e+05 -6.2124672e+03 3.5832942e+04
+-1.5817235e+06 -1.9518195e+05 1.6266458e+05
+-4.0863834e+06 -5.0970236e+05 4.0294417e+05
+-6.9550259e+06 -8.5270241e+05 7.9853685e+05
+-9.3627011e+06 -1.1202584e+06 1.3642189e+06
+-1.0938341e+07 -1.2678574e+06 2.0997004e+06
+-1.1748187e+07 -1.3051213e+06 3.0041788e+06
+-1.2042954e+07 -1.2633399e+06 4.0827727e+06
+-1.2023241e+07 -1.1648345e+06 5.3503303e+06
+-1.1769719e+07 -1.0141921e+06 6.8360779e+06
+-1.1325018e+07 -8.1092662e+05 8.5883643e+06
+-1.0821341e+07 -5.6857608e+05 1.0684219e+07
+-1.0513351e+07 -3.2272772e+05 1.3254676e+07
+-1.0485932e+07 -1.2331869e+05 1.6489879e+07
+-3.4574312e+06 -7.2282129e+03 1.7964791e+07
+-3.9795894e+06 -3.0291943e+03 1.9858092e+07
+-4.8834706e+06 -2.3978199e+03 2.2436111e+07
+-5.9427841e+06 -1.8709110e+03 2.5606802e+07
+0.0000000e+00 -8.7438893e+03 1.6120889e+07
+0.0000000e+00 -1.2568280e+04 0.0000000e+00
+-1.8299473e+01 1.0513537e+00 5.0611729e+00
+-3.6488121e+02 2.0296775e+01 1.0868513e+02
+-6.5617873e+03 3.5516185e+02 2.0205536e+03
+-1.1717713e+05 6.2124672e+03 3.6953377e+04
+-1.5784779e+06 1.9518195e+05 1.6970234e+05
+-4.0692331e+06 5.0970236e+05 4.1889319e+05
+-6.9296488e+06 8.5270241e+05 8.2708685e+05
+-9.3397469e+06 1.1202584e+06 1.4103780e+06
+-1.0926882e+07 1.2678574e+06 2.1686095e+06
+-1.1752224e+07 1.3051213e+06 3.1002367e+06
+-1.2062175e+07 1.2633399e+06 4.2095453e+06
+-1.2056954e+07 1.1648345e+06 5.5109324e+06
+-1.1820974e+07 1.0141921e+06 7.0336780e+06
+-1.1402071e+07 8.1092662e+05 8.8269121e+06
+-1.0935393e+07 5.6857608e+05 1.0969770e+07
+-1.0673430e+07 3.2272772e+05 1.3597118e+07
+-1.0686757e+07 1.2331869e+05 1.6901449e+07
+-3.5425695e+06 7.2282129e+03 1.8414259e+07
+-4.0780071e+06 3.0291943e+03 2.0355410e+07
+-5.0048515e+06 2.3978191e+03 2.2999022e+07
+-6.0912308e+06 1.8708861e+03 2.6251221e+07
+0.0000000e+00 8.7431201e+03 1.6527933e+07
+0.0000000e+00 1.2567523e+04 0.0000000e+00
+-1.8130904e+01 3.3255603e+00 4.8015619e+00
+-3.6146501e+02 6.3451068e+01 1.0410733e+02
+-6.5015420e+03 1.1006917e+03 1.9500200e+03
+-1.1615971e+05 1.9169321e+04 3.5832942e+04
+-1.5817235e+06 5.9065382e+05 1.6266458e+05
+-4.0863834e+06 1.5390251e+06 4.0294417e+05
+-6.9550259e+06 2.5718671e+06 7.9853685e+05
+-9.3627011e+06 3.3771942e+06 1.3642189e+06
+-1.0938341e+07 3.8210758e+06 2.0997004e+06
+-1.1748187e+07 3.9330284e+06 3.0041788e+06
+-1.2042954e+07 3.8079221e+06 4.0827727e+06
+-1.2023241e+07 3.5130265e+06 5.3503303e+06
+-1.1769719e+07 3.0613734e+06 6.8360779e+06
+-1.1325018e+07 2.4504674e+06 8.5883643e+06
+-1.0821341e+07 1.7207782e+06 1.0684219e+07
+-1.0513351e+07 9.7993857e+05 1.3254676e+07
+-1.0485932e+07 3.7695454e+05 1.6489879e+07
+-3.4574312e+06 2.2915972e+04 1.7964791e+07
+-3.9795894e+06 9.7236754e+03 1.9858092e+07
+-4.8834706e+06 7.8164830e+03 2.2436111e+07
+-5.9427841e+06 6.5397744e+03 2.5606802e+07
+0.0000000e+00 3.0136573e+04 1.6120889e+07
+0.0000000e+00 3.1274528e+04 0.0000000e+00
+-1.7712574e+01 6.2979843e+00 3.8711027e+00
+-3.5247097e+02 1.1661349e+02 8.8376061e+01
+-6.3364658e+03 1.9730845e+03 1.7215286e+03
+-1.1331072e+05 3.3880014e+04 3.2385508e+04
+-1.5944780e+06 1.0025936e+06 1.4145649e+05
+-4.1432034e+06 2.6003534e+06 3.5535421e+05
+-7.0389530e+06 4.3370186e+06 7.1262942e+05
+-9.4409936e+06 5.6900976e+06 1.2240498e+06
+-1.0981724e+07 6.4344711e+06 1.8889912e+06
+-1.1741871e+07 6.6217049e+06 2.7086371e+06
+-1.1984956e+07 6.4135556e+06 3.6901571e+06
+-1.1912880e+07 5.9233727e+06 4.8491997e+06
+-1.1595277e+07 5.1705195e+06 6.2142133e+06
+-1.1059370e+07 4.1473854e+06 7.8305174e+06
+-1.0428924e+07 2.9210836e+06 9.7679136e+06
+-9.9656420e+06 1.6746252e+06 1.2144111e+07
+-9.7965078e+06 6.5425378e+05 1.5138746e+07
+-3.1803783e+06 4.3472448e+04 1.6489967e+07
+-3.6574577e+06 1.8774205e+04 1.8227200e+07
+-4.4866374e+06 1.4564849e+04 2.0592824e+07
+-5.4583974e+06 1.1782834e+04 2.3501719e+07
+0.0000000e+00 5.0306194e+04 1.4797757e+07
+0.0000000e+00 4.2463374e+04 0.0000000e+00
+-1.7375523e+01 1.1248712e+01 1.6374466e+00
+-3.4254566e+02 1.9744722e+02 5.2406714e+01
+-6.1210785e+03 3.1611970e+03 1.2507130e+03
+-1.0927764e+05 5.2202685e+04 2.6171185e+04
+-1.6271802e+06 1.4451586e+06 1.0695257e+05
+-4.2581275e+06 3.7222334e+06 2.7981147e+05
+-7.2092640e+06 6.1948563e+06 5.7375258e+05
+-9.6104416e+06 8.1189604e+06 9.9348830e+05
+-1.1095766e+07 9.1737963e+06 1.5383284e+06
+-1.1767912e+07 9.4374448e+06 2.2121294e+06
+-1.1911460e+07 9.1450375e+06 3.0242970e+06
+-1.1731214e+07 8.4585433e+06 3.9904377e+06
+-1.1279300e+07 7.4003476e+06 5.1362789e+06
+-1.0558238e+07 5.9525737e+06 6.5006010e+06
+-9.6792465e+06 4.2090739e+06 8.1391844e+06
+-8.9176548e+06 2.4365632e+06 1.0142842e+07
+-8.4673490e+06 9.7936470e+05 1.2662969e+07
+-2.6769711e+06 7.7239459e+04 1.3786161e+07
+-3.0673726e+06 3.5764620e+04 1.5235886e+07
+-3.7602083e+06 2.5990695e+04 1.7213947e+07
+-4.5731144e+06 1.8480980e+04 1.9649012e+07
+0.0000000e+00 8.0416963e+04 1.2359554e+07
+0.0000000e+00 8.8084900e+04 0.0000000e+00
+-1.7931330e+01 2.1342312e+01 -3.4850884e+00
+-3.4304191e+02 3.5352049e+02 -3.0953503e+01
+-5.9778722e+03 5.1853766e+03 2.2877382e+02
+-1.0523390e+05 7.8195587e+04 1.5208081e+04
+-1.6984471e+06 1.9340172e+06 6.4310564e+04
+-4.4637530e+06 4.9440686e+06 1.9027877e+05
+-7.5183854e+06 8.2193788e+06 4.0173777e+05
+-9.9434916e+06 1.0761270e+07 6.9934257e+05
+-1.1367727e+07 1.2146344e+07 1.0839576e+06
+-1.1920657e+07 1.2488044e+07 1.5620584e+06
+-1.1916218e+07 1.2105843e+07 2.1444791e+06
+-1.1565257e+07 1.1214985e+07 2.8452459e+06
+-1.0897906e+07 9.8363181e+06 3.6853181e+06
+-9.8849473e+06 7.9341502e+06 4.6941083e+06
+-8.6240484e+06 5.6301882e+06 5.9078011e+06
+-7.4145427e+06 3.2929308e+06 7.3755571e+06
+-6.5370288e+06 1.3810678e+06 9.1896509e+06
+-1.9723027e+06 1.3905996e+05 9.9849937e+06
+-2.2354195e+06 7.1798147e+04 1.1023780e+07
+-2.7359535e+06 5.1985964e+04 1.2451963e+07
+-3.3255047e+06 3.7028297e+04 1.4216942e+07
+0.0000000e+00 1.6134264e+05 8.8885883e+06
+0.0000000e+00 1.8872371e+05 0.0000000e+00
+-2.1008452e+01 4.2642629e+01 -1.3776744e+01
+-3.7840460e+02 6.9699051e+02 -2.1889712e+02
+-6.1664099e+03 9.5603392e+03 -2.2845233e+03
+-1.0293132e+05 1.2493121e+05 -9.5321483e+03
+-1.8219337e+06 2.4724218e+06 3.0131253e+04
+-4.7847633e+06 6.3247097e+06 1.1740164e+05
+-8.0152731e+06 1.0535020e+07 2.3650836e+05
+-1.0516677e+07 1.3778791e+07 3.9919320e+05
+-1.1900653e+07 1.5528613e+07 6.1059733e+05
+-1.2327236e+07 1.5950901e+07 8.7743648e+05
+-1.2148437e+07 1.5466165e+07 1.2099340e+06
+-1.1586218e+07 1.4350273e+07 1.6189887e+06
+-1.0646721e+07 1.2615572e+07 2.1207046e+06
+-9.2650296e+06 1.0196009e+07 2.7376056e+06
+-7.5288457e+06 7.2412825e+06 3.4907275e+06
+-5.7787805e+06 4.2530926e+06 4.3856264e+06
+-4.3997610e+06 1.8647441e+06 5.4164250e+06
+-1.2027825e+06 2.4635251e+05 5.8382264e+06
+-1.3231191e+06 1.2578053e+05 6.4291651e+06
+-1.6145772e+06 8.9179020e+04 7.2615546e+06
+-1.9620418e+06 6.6205231e+04 8.2998032e+06
+0.0000000e+00 2.4626261e+05 5.1442975e+06
+0.0000000e+00 2.4800354e+05 0.0000000e+00
+-2.8393596e+01 7.8807132e+01 -2.6073971e+01
+-4.8232576e+02 1.3656193e+03 -5.1912949e+02
+-7.0980613e+03 1.9494451e+04 -7.7921830e+03
+-1.0375395e+05 2.4239039e+05 -8.5147323e+04
+-1.9293387e+06 2.9835663e+06 5.0316209e+04
+-5.1064407e+06 7.9595134e+06 1.0119901e+05
+-8.5486343e+06 1.3332423e+07 1.1794251e+05
+-1.1149765e+07 1.7397882e+07 1.6083300e+05
+-1.2505858e+07 1.9559610e+07 2.3146497e+05
+-1.2816465e+07 2.0065655e+07 3.2602021e+05
+-1.2479932e+07 1.9457979e+07 4.5025540e+05
+-1.1733333e+07 1.8085039e+07 6.0896764e+05
+-1.0555008e+07 1.5940323e+07 8.1258116e+05
+-8.8367994e+06 1.2904127e+07 1.0829725e+06
+-6.6552558e+06 9.1417989e+06 1.4470260e+06
+-4.4080732e+06 5.3125296e+06 1.9096252e+06
+-2.6077458e+06 2.3373260e+06 2.3798747e+06
+-5.7162284e+05 4.4090906e+05 2.4427447e+06
+-5.7365039e+05 1.5935923e+05 2.6960614e+06
+-6.9986306e+05 9.4123226e+04 3.0783332e+06
+-8.5731134e+05 6.6116846e+04 3.5585416e+06
+0.0000000e+00 2.0710057e+05 2.2417181e+06
+0.0000000e+00 1.8731638e+05 0.0000000e+00
+-3.7089652e+01 1.0439838e+02 -1.2185578e+01
+-6.0771561e+02 1.9081963e+03 -3.2838303e+02
+-7.9529092e+03 2.8497354e+04 -6.2539054e+03
+-8.5820830e+04 3.5725800e+05 -8.6507354e+04
+-6.4678699e+05 3.2034718e+06 -3.6150001e+04
+-1.6660545e+06 8.6614106e+06 -3.4613613e+04
+-2.7591425e+06 1.4503868e+07 -3.2558146e+04
+-3.5936658e+06 1.8908729e+07 -9.6470536e+03
+-4.0546716e+06 2.1273760e+07 1.0055521e+04
+-4.1854654e+06 2.1850007e+07 2.0856287e+04
+-4.0850243e+06 2.1206979e+07 3.0298609e+04
+-3.8182238e+06 1.9723479e+07 4.0270628e+04
+-3.3845719e+06 1.7391790e+07 5.3699876e+04
+-2.7632428e+06 1.4077751e+07 8.0173795e+04
+-1.9893210e+06 9.9565644e+06 1.3477672e+05
+-1.1955381e+06 5.7398140e+06 2.3618473e+05
+-5.6584073e+05 2.3964847e+06 4.3281634e+05
+-1.8941998e+05 4.7999775e+05 4.8330990e+05
+-1.4952670e+05 9.2823778e+04 6.2730537e+05
+-1.8966886e+05 3.0216226e+04 8.0065260e+05
+-2.4596114e+05 1.7944946e+04 9.9263752e+05
+0.0000000e+00 7.3368923e+04 7.0051492e+05
+0.0000000e+00 8.2102603e+04 0.0000000e+00
+-4.0662578e+01 8.8467598e+01 3.1106368e+01
+-6.9011650e+02 1.7292024e+03 4.7813896e+02
+-9.2930632e+03 2.7802354e+04 4.9697826e+03
+-1.0107851e+05 3.7526680e+05 3.0697195e+04
+-7.3349939e+05 3.5367403e+06 3.3589105e+04
+-1.9266765e+06 9.6095173e+06 -1.5491976e+04
+-3.1950366e+06 1.6028601e+07 -3.2892494e+04
+-4.1528565e+06 2.0855061e+07 -1.0779695e+04
+-4.6777470e+06 2.3477545e+07 6.6435807e+03
+-4.8207800e+06 2.4139724e+07 1.2184131e+04
+-4.6977688e+06 2.3446068e+07 1.7038531e+04
+-4.3862455e+06 2.1818851e+07 2.1414452e+04
+-3.8830723e+06 1.9249250e+07 2.5818587e+04
+-3.1584990e+06 1.5584024e+07 3.7957100e+04
+-2.2496531e+06 1.1013290e+07 6.9220550e+04
+-1.3126490e+06 6.3327740e+06 1.1957367e+05
+-5.6644636e+05 2.6458304e+06 1.5473065e+05
+-1.4830811e+05 6.1927189e+05 9.2460674e+04
+-4.6081318e+04 1.0493686e+05 1.0561526e+05
+-3.8192606e+04 1.5934669e+04 1.4323332e+05
+-4.8883964e+04 3.6805423e+03 1.8803344e+05
+0.0000000e+00 1.4369840e+04 1.5309025e+05
+0.0000000e+00 2.0744741e+04 0.0000000e+00
+-3.1893228e+01 3.8062921e+01 6.2798574e+01
+-5.8321489e+02 8.4008838e+02 1.1905453e+03
+-8.6226585e+03 1.5930115e+04 1.6824981e+04
+-1.0575545e+05 2.7458165e+05 1.6713276e+05
+-9.0216963e+05 4.0389013e+06 1.2125553e+05
+-2.3784673e+06 1.0951925e+07 6.4901231e+03
+-3.9255088e+06 1.8121105e+07 -3.2637978e+04
+-5.0914615e+06 2.3508658e+07 -8.1779106e+03
+-5.7375249e+06 2.6483522e+07 8.5288573e+03
+-5.9174893e+06 2.7263036e+07 1.0350425e+04
+-5.7679162e+06 2.6497401e+07 1.4239443e+04
+-5.3856022e+06 2.4672019e+07 1.8268719e+04
+-4.7671963e+06 2.1777724e+07 2.0696488e+04
+-3.8755614e+06 1.7637417e+07 2.8081836e+04
+-2.7562579e+06 1.2463819e+07 5.0428590e+04
+-1.6034091e+06 7.1662233e+06 8.4845388e+04
+-6.9113957e+05 3.0236471e+06 9.0917304e+04
+-1.8760986e+05 7.8897074e+05 2.9736249e+04
+-3.7942181e+04 1.4194415e+05 1.5928319e+04
+-9.7980497e+03 1.9114447e+04 1.9171148e+04
+-7.5097288e+03 2.2754649e+03 2.5608266e+04
+0.0000000e+00 1.4719427e+03 2.3517695e+04
+0.0000000e+00 2.4120767e+03 0.0000000e+00
+-1.3165496e+01 0.0000000e+00 4.3421818e+01
+-2.7356601e+02 0.0000000e+00 1.0022495e+03
+-4.8514270e+03 0.0000000e+00 1.9201814e+04
+-7.8573461e+04 0.0000000e+00 3.3327620e+05
+-1.1078304e+06 4.7055416e+06 2.3429760e+05
+-2.9217268e+06 1.2664324e+07 3.7898131e+04
+-4.7858704e+06 2.0718430e+07 -3.4488517e+04
+-6.1901760e+06 2.6771203e+07 -6.1989126e+03
+-6.9794395e+06 3.0181282e+07 1.1754925e+04
+-7.2044778e+06 3.1110359e+07 8.4488292e+03
+-7.0239010e+06 3.0254206e+07 1.1267052e+04
+-6.5584624e+06 2.8182809e+07 1.6026670e+04
+-5.8050417e+06 2.4889007e+07 1.7028318e+04
+-4.7181848e+06 2.0166460e+07 2.0263511e+04
+-3.3537534e+06 1.4256609e+07 3.6220116e+04
+-1.9504642e+06 8.2058376e+06 6.3143656e+04
+-8.4700784e+05 3.4992705e+06 6.3790020e+04
+-2.4309729e+05 9.7770281e+05 1.7591300e+04
+-4.8488040e+04 1.8618016e+05 3.6696171e+03
+-7.4852989e+03 2.5518467e+04 2.2757428e+03
+-1.4877802e+03 2.7259005e+03 2.7324180e+03
+0.0000000e+00 0.0000000e+00 2.4377950e+03
+0.0000000e+00 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0.0000000e+00 2.5966511e+06 5.7244557e+05
+0.0000000e+00 8.1609958e+06 3.6717068e+05
+0.0000000e+00 1.3382525e+07 -3.2972810e+04
+0.0000000e+00 1.6923229e+07 -5.9583159e+04
+0.0000000e+00 1.8957718e+07 5.0749410e+04
+0.0000000e+00 1.9604854e+07 5.3365570e+04
+0.0000000e+00 1.9064904e+07 4.1937529e+04
+0.0000000e+00 1.7728808e+07 6.6647223e+04
+0.0000000e+00 1.5662853e+07 7.6228352e+04
+0.0000000e+00 1.2682532e+07 8.7969828e+04
+0.0000000e+00 8.9090575e+06 1.5817273e+05
+0.0000000e+00 5.0827370e+06 2.3724597e+05
+0.0000000e+00 2.2010893e+06 1.9987514e+05
+0.0000000e+00 6.8715959e+05 7.1418058e+04
+0.0000000e+00 1.5067683e+05 1.4197740e+04
+0.0000000e+00 2.3336906e+04 1.4886963e+03
+0.0000000e+00 2.4504359e+03 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0.0000000e+00 0.0000000e+00 3.0408911e+05
+0.0000000e+00 0.0000000e+00 4.6123879e+05
+0.0000000e+00 0.0000000e+00 1.3541729e+05
+0.0000000e+00 0.0000000e+00 -1.0344843e+05
+0.0000000e+00 0.0000000e+00 -6.9611484e+03
+0.0000000e+00 0.0000000e+00 8.0315329e+04
+0.0000000e+00 0.0000000e+00 5.7714866e+04
+0.0000000e+00 0.0000000e+00 5.6129756e+04
+0.0000000e+00 0.0000000e+00 7.1171027e+04
+0.0000000e+00 0.0000000e+00 9.9509432e+04
+0.0000000e+00 0.0000000e+00 1.8278513e+05
+0.0000000e+00 0.0000000e+00 2.3880930e+05
+0.0000000e+00 0.0000000e+00 1.8094396e+05
+0.0000000e+00 0.0000000e+00 7.9271872e+04
+0.0000000e+00 0.0000000e+00 2.0152709e+04
+0.0000000e+00 0.0000000e+00 2.4156948e+03
+0.0000000e+00 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-9.7336887e+00 -2.5145071e+01 2.1713264e+01
+-1.7409086e+02 -4.8573736e+02 4.0797548e+02
+-2.4795769e+03 -7.5830880e+03 5.6192134e+03
+-2.8964527e+04 -9.7410650e+04 5.3420930e+04
+-2.3529808e+05 -8.5967495e+05 4.0563524e+04
+-6.0816544e+05 -2.2806575e+06 7.6596458e+03
+-9.9791489e+05 -3.7744455e+06 -5.8502809e+03
+-1.2924650e+06 -4.9014778e+06 -2.0834820e+03
+-1.4574655e+06 -5.5252533e+06 1.1958234e+03
+-1.5061664e+06 -5.6984170e+06 1.3013738e+03
+-1.4716382e+06 -5.5529750e+06 2.0135840e+03
+-1.3772227e+06 -5.1821110e+06 2.8848723e+03
+-1.2218847e+06 -4.5835967e+06 3.3245950e+03
+-9.9632231e+05 -3.7231654e+06 4.6274934e+03
+-7.1206018e+05 -2.6458536e+06 8.7879454e+03
+-4.1836694e+05 -1.5383213e+06 1.5011922e+04
+-1.8509946e+05 -6.6220023e+05 1.5303766e+04
+-5.4815292e+04 -1.7770131e+05 4.7230770e+03
+-1.1555269e+04 -3.3436881e+04 1.2271873e+03
+-1.9884856e+03 -4.8233422e+03 5.5371624e+02
+-3.8031435e+02 -5.5374950e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.6057506e+01 -6.4566413e+01 3.3585618e+01
+-4.2957182e+02 -1.1517054e+03 5.4591057e+02
+-5.4928033e+03 -1.6309859e+04 6.1428264e+03
+-5.5355905e+04 -1.8538883e+05 4.3721468e+04
+-3.6501859e+05 -1.3913859e+06 3.8281343e+04
+-9.4071508e+05 -3.6847364e+06 4.6080552e+03
+-1.5524115e+06 -6.1321807e+06 -1.0754139e+04
+-2.0157853e+06 -7.9831486e+06 -4.7595465e+03
+-2.2727932e+06 -8.9960884e+06 1.3438467e+03
+-2.3474175e+06 -9.2701007e+06 2.9558320e+03
+-2.2932926e+06 -9.0292036e+06 4.5608910e+03
+-2.1461555e+06 -8.4231438e+06 6.1469717e+03
+-1.9042000e+06 -7.4480627e+06 7.6166048e+03
+-1.5531725e+06 -6.0497669e+06 1.1829253e+04
+-1.1109732e+06 -4.3020622e+06 2.2753196e+04
+-6.5334014e+05 -2.5040524e+06 3.8415324e+04
+-2.8728287e+05 -1.0696127e+06 4.1971111e+04
+-8.0767234e+04 -2.5785763e+05 1.5284807e+04
+-1.7536180e+04 -4.5980309e+04 7.4222340e+03
+-4.6085598e+03 -7.4277322e+03 4.8371342e+03
+-1.9942443e+03 -1.2320998e+03 0.0000000e+00
+0 0 0
+0 0 0
+-3.6065686e+01 -8.2187893e+01 1.3024588e+01
+-5.6908429e+02 -1.4077794e+03 1.4806640e+02
+-6.9394663e+03 -1.9276651e+04 7.6126154e+02
+-6.6572063e+04 -2.1681636e+05 -2.3176632e+03
+-4.1893324e+05 -1.7177198e+06 9.4500885e+03
+-1.0754332e+06 -4.5207989e+06 -5.7307761e+03
+-1.7801469e+06 -7.5380252e+06 -1.4775988e+04
+-2.3157941e+06 -9.8280709e+06 -6.9161389e+03
+-2.6109282e+06 -1.1071110e+07 1.2866653e+03
+-2.6955190e+06 -1.1398867e+07 4.7920458e+03
+-2.6331275e+06 -1.1096517e+07 7.4642090e+03
+-2.4643333e+06 -1.0347538e+07 9.9467099e+03
+-2.1870095e+06 -9.1472955e+06 1.3116694e+04
+-1.7852786e+06 -7.4312825e+06 2.1411900e+04
+-1.2797602e+06 -5.2914839e+06 4.0940758e+04
+-7.5602280e+05 -3.0911504e+06 7.1412550e+04
+-3.3420619e+05 -1.3250115e+06 9.4571182e+04
+-9.1376471e+04 -2.7490800e+05 5.4689908e+04
+-2.8656899e+04 -5.4910881e+04 4.6196061e+04
+-1.7621640e+04 -1.5485610e+04 3.3682973e+04
+-1.1630012e+04 -4.8030791e+03 0.0000000e+00
+0 0 0
+0 0 0
+-3.5511760e+01 -6.5932523e+01 -1.7833261e+01
+-5.5483884e+02 -1.0905115e+03 -3.8797794e+02
+-6.8270275e+03 -1.4660079e+04 -6.1304314e+03
+-6.8652434e+04 -1.6998784e+05 -7.0127341e+04
+-4.8411270e+05 -1.9213567e+06 -2.9164648e+04
+-1.2165373e+06 -4.9791078e+06 -2.0373004e+04
+-2.0065577e+06 -8.2929501e+06 -1.8032883e+04
+-2.6159492e+06 -1.0818402e+07 -5.4185447e+03
+-2.9579824e+06 -1.2180652e+07 7.4347059e+03
+-3.0629356e+06 -1.2530282e+07 1.6319979e+04
+-2.9999023e+06 -1.2189815e+07 2.4496122e+04
+-2.8130189e+06 -1.1361824e+07 3.3576374e+04
+-2.5021595e+06 -1.0042205e+07 4.6073131e+04
+-2.0539330e+06 -8.1628137e+06 6.8294465e+04
+-1.4939828e+06 -5.8272691e+06 1.0874148e+05
+-9.1560567e+05 -3.4382877e+06 1.7594637e+05
+-4.4610604e+05 -1.5649153e+06 2.9611552e+05
+-1.4312566e+05 -3.0108885e+05 2.7600205e+05
+-9.1878404e+04 -9.6849597e+04 2.6029247e+05
+-8.1399902e+04 -4.3173741e+04 1.7971165e+05
+-5.5288708e+04 -1.5763866e+04 0.0000000e+00
+0 0 0
+0 0 0
+-2.9941492e+01 -3.7865023e+01 -2.6519604e+01
+-5.0158156e+02 -6.0253019e+02 -4.9524509e+02
+-7.3271149e+03 -8.0578056e+03 -6.8684653e+03
+-1.0803928e+05 -1.0447983e+05 -6.8091153e+04
+-1.9490271e+06 -2.0059454e+06 3.6185953e+04
+-5.1025432e+06 -5.0449339e+06 9.8114617e+04
+-8.5188075e+06 -8.3620082e+06 1.3734604e+05
+-1.1106212e+07 -1.0920775e+07 1.9616689e+05
+-1.2465087e+07 -1.2306541e+07 2.8128401e+05
+-1.2799520e+07 -1.2656607e+07 3.9066397e+05
+-1.2503415e+07 -1.2301597e+07 5.2592870e+05
+-1.1805328e+07 -1.1451549e+07 6.8764882e+05
+-1.0678840e+07 -1.0109361e+07 8.7863636e+05
+-9.0093879e+06 -8.2160419e+06 1.1044531e+06
+-6.8559528e+06 -5.8812733e+06 1.3591544e+06
+-4.5784511e+06 -3.4930904e+06 1.5843350e+06
+-2.6216651e+06 -1.5509496e+06 1.5842885e+06
+-4.4897163e+05 -1.8262826e+05 1.3431767e+06
+-3.3697601e+05 -7.4544724e+04 1.0841975e+06
+-2.8964491e+05 -4.0080223e+04 6.7088579e+05
+-1.8655486e+05 -1.5634555e+04 0.0000000e+00
+0 0 0
+0 0 0
+-2.4837229e+01 -2.0397273e+01 -1.3638973e+01
+-4.5016895e+02 -3.3618029e+02 -2.0822453e+02
+-7.4065590e+03 -4.9446204e+03 -2.0812607e+03
+-1.2462022e+05 -7.5417486e+04 -9.4547117e+03
+-2.1004519e+06 -1.7731775e+06 3.6295554e+04
+-5.4456891e+06 -4.4899381e+06 1.4222556e+05
+-9.0920897e+06 -7.4361284e+06 2.9316238e+05
+-1.1922222e+07 -9.7156482e+06 4.9358102e+05
+-1.3503898e+07 -1.0955172e+07 7.4545709e+05
+-1.4020951e+07 -1.1268079e+07 1.0506431e+06
+-1.3864529e+07 -1.0945634e+07 1.4107716e+06
+-1.3274851e+07 -1.0176262e+07 1.8241182e+06
+-1.2249200e+07 -8.9688596e+06 2.2860959e+06
+-1.0698583e+07 -7.2786411e+06 2.7822482e+06
+-8.6884342e+06 -5.2026831e+06 3.2632465e+06
+-6.5353243e+06 -3.0665824e+06 3.5932823e+06
+-4.5456968e+06 -1.2933403e+06 3.4816088e+06
+-9.1581082e+05 -1.1175211e+05 3.1237610e+06
+-7.5804789e+05 -4.2409462e+04 2.5265546e+06
+-6.5453353e+05 -2.3479192e+04 1.5499098e+06
+-4.1875585e+05 -9.0106871e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.3347318e+01 -1.1615493e+01 -3.3657930e+00
+-4.4960420e+02 -2.0482591e+02 -2.8157874e+01
+-7.8749408e+03 -3.3001753e+03 2.2446561e+02
+-1.3870428e+05 -5.4672420e+04 1.2949778e+04
+-2.1130454e+06 -1.4270747e+06 8.1445275e+04
+-5.4639238e+06 -3.6499784e+06 2.4165641e+05
+-9.1628119e+06 -6.0551527e+06 5.0510723e+05
+-1.2104387e+07 -7.9173459e+06 8.6770032e+05
+-1.3845023e+07 -8.9330508e+06 1.3228753e+06
+-1.4542190e+07 -9.1900815e+06 1.8664115e+06
+-1.4566946e+07 -8.9221665e+06 2.4936724e+06
+-1.4160931e+07 -8.2829328e+06 3.1960170e+06
+-1.3345092e+07 -7.2843526e+06 3.9586955e+06
+-1.2058248e+07 -5.8960424e+06 4.7493976e+06
+-1.0366928e+07 -4.1976215e+06 5.4872151e+06
+-8.5285936e+06 -2.4454101e+06 5.9800936e+06
+-6.6801159e+06 -9.8786899e+05 5.8177094e+06
+-1.4715842e+06 -6.6240877e+04 5.2714796e+06
+-1.2647321e+06 -2.0618536e+04 4.2790013e+06
+-1.0969596e+06 -1.1242819e+04 2.6277710e+06
+-7.0240481e+05 -4.3396018e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.4004441e+01 -6.9074681e+00 1.9208923e+00
+-4.7476468e+02 -1.2829295e+02 5.7606947e+01
+-8.4999211e+03 -2.1725978e+03 1.3088721e+03
+-1.5165527e+05 -3.7155216e+04 2.6169296e+04
+-2.1248647e+06 -1.0378053e+06 1.3458441e+05
+-5.4555159e+06 -2.6739147e+06 3.5590902e+05
+-9.1841754e+06 -4.4459598e+06 7.2162752e+05
+-1.2218717e+07 -5.8186114e+06 1.2311689e+06
+-1.4101620e+07 -6.5689749e+06 1.8729467e+06
+-1.4960758e+07 -6.7592568e+06 2.6349681e+06
+-1.5144288e+07 -6.5588360e+06 3.5044651e+06
+-1.4894309e+07 -6.0805384e+06 4.4651662e+06
+-1.4255920e+07 -5.3362089e+06 5.4936429e+06
+-1.3197845e+07 -4.3075874e+06 6.5447953e+06
+-1.1793411e+07 -3.0542057e+06 7.5155444e+06
+-1.0253194e+07 -1.7614598e+06 8.1671330e+06
+-8.5561659e+06 -6.9201563e+05 7.9600965e+06
+-1.9774944e+06 -3.8622612e+04 7.2330015e+06
+-1.7250675e+06 -1.0088668e+04 5.8801666e+06
+-1.4996136e+06 -5.6346923e+03 3.6139637e+06
+-9.6107536e+05 -2.4149200e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.5258323e+01 -3.7802060e+00 4.4184872e+00
+-5.0368850e+02 -7.2104401e+01 9.9447476e+01
+-9.0696500e+03 -1.2470025e+03 1.9070364e+03
+-1.6226312e+05 -2.1566577e+04 3.5270799e+04
+-2.1458136e+06 -6.2903050e+05 1.7783148e+05
+-5.4621887e+06 -1.6277763e+06 4.5067848e+05
+-9.2171015e+06 -2.7115738e+06 8.9444098e+05
+-1.2327174e+07 -3.5515390e+06 1.5135486e+06
+-1.4319570e+07 -4.0113930e+06 2.2938130e+06
+-1.5295797e+07 -4.1281714e+06 3.2166529e+06
+-1.5584871e+07 -4.0042371e+06 4.2619696e+06
+-1.5429845e+07 -3.7084433e+06 5.4068389e+06
+-1.4896388e+07 -3.2493990e+06 6.6211397e+06
+-1.3979260e+07 -2.6177980e+06 7.8512399e+06
+-1.2761599e+07 -1.8505778e+06 8.9802875e+06
+-1.1424708e+07 -1.0602046e+06 9.7380981e+06
+-9.8292883e+06 -4.1030548e+05 9.4891684e+06
+-2.3394042e+06 -2.0655406e+04 8.6302270e+06
+-2.0516728e+06 -4.9348399e+03 7.0192883e+06
+-1.7851623e+06 -2.8318957e+03 4.3150104e+06
+-1.1445199e+06 -1.2820437e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.6259298e+01 -1.2139733e+00 5.5621618e+00
+-5.2462108e+02 -2.3389316e+01 1.2000316e+02
+-9.4558294e+03 -4.0742334e+02 2.2347113e+03
+-1.6919429e+05 -7.0715295e+03 4.0774244e+04
+-2.1638723e+06 -2.1068505e+05 2.0457759e+05
+-5.4732381e+06 -5.4627301e+05 5.0992896e+05
+-9.2462523e+06 -9.1091219e+05 1.0004938e+06
+-1.2404062e+07 -1.1936168e+06 1.6839325e+06
+-1.4462049e+07 -1.3485073e+06 2.5447547e+06
+-1.5503766e+07 -1.3878728e+06 3.5600348e+06
+-1.5845835e+07 -1.3459427e+06 4.7046219e+06
+-1.5732226e+07 -1.2458592e+06 5.9510229e+06
+-1.5242188e+07 -1.0907602e+06 7.2648530e+06
+-1.4387934e+07 -8.7784106e+05 8.5878117e+06
+-1.3261014e+07 -6.1963079e+05 9.7965375e+06
+-1.2028611e+07 -3.5385516e+05 1.0605448e+07
+-1.0482310e+07 -1.3608182e+05 1.0327602e+07
+-2.5395326e+06 -6.5610380e+03 9.3956092e+06
+-2.2303352e+06 -1.5112860e+03 7.6429315e+06
+-1.9413126e+06 -8.6213950e+02 4.6988037e+06
+-1.2448814e+06 -3.8101767e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.6628324e+01 1.2139733e+00 5.9009045e+00
+-5.3212403e+02 2.3389316e+01 1.2636509e+02
+-9.5914544e+03 4.0742334e+02 2.3411855e+03
+-1.7159815e+05 7.0715295e+03 4.2619150e+04
+-2.1707071e+06 2.1068505e+05 2.1347828e+05
+-5.4780154e+06 5.4627301e+05 5.2971456e+05
+-9.2573421e+06 9.1091219e+05 1.0355834e+06
+-1.2431187e+07 1.1936168e+06 1.7397895e+06
+-1.4510539e+07 1.3485073e+06 2.6264316e+06
+-1.5572605e+07 1.3878728e+06 3.6710671e+06
+-1.5929738e+07 1.3459427e+06 4.8467441e+06
+-1.5826269e+07 1.2458592e+06 6.1243408e+06
+-1.5346169e+07 1.0907602e+06 7.4680151e+06
+-1.4507772e+07 8.7784106e+05 8.8180339e+06
+-1.3405928e+07 6.1963079e+05 1.0049307e+07
+-1.2203901e+07 3.5385516e+05 1.0872068e+07
+-1.0671056e+07 1.3608182e+05 1.0584202e+07
+-2.6013028e+06 6.5610380e+03 9.6298134e+06
+-2.2850273e+06 1.5112860e+03 7.8338110e+06
+-1.9891214e+06 8.6213942e+02 4.8163567e+06
+-1.2756361e+06 3.8101704e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.6259298e+01 3.7802060e+00 5.5621618e+00
+-5.2462108e+02 7.2104401e+01 1.2000316e+02
+-9.4558294e+03 1.2470025e+03 2.2347113e+03
+-1.6919429e+05 2.1566577e+04 4.0774244e+04
+-2.1638723e+06 6.2903050e+05 2.0457759e+05
+-5.4732381e+06 1.6277763e+06 5.0992896e+05
+-9.2462523e+06 2.7115738e+06 1.0004938e+06
+-1.2404062e+07 3.5515390e+06 1.6839325e+06
+-1.4462049e+07 4.0113930e+06 2.5447547e+06
+-1.5503766e+07 4.1281714e+06 3.5600348e+06
+-1.5845835e+07 4.0042371e+06 4.7046219e+06
+-1.5732226e+07 3.7084433e+06 5.9510229e+06
+-1.5242188e+07 3.2493990e+06 7.2648530e+06
+-1.4387934e+07 2.6177980e+06 8.5878117e+06
+-1.3261014e+07 1.8505778e+06 9.7965375e+06
+-1.2028611e+07 1.0602046e+06 1.0605448e+07
+-1.0482310e+07 4.1030548e+05 1.0327602e+07
+-2.5395326e+06 2.0655406e+04 9.3956092e+06
+-2.2303352e+06 4.9348399e+03 7.6429315e+06
+-1.9413126e+06 2.8318957e+03 4.6988037e+06
+-1.2448814e+06 1.2820435e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.5258323e+01 6.9074681e+00 4.4184872e+00
+-5.0368850e+02 1.2829295e+02 9.9447476e+01
+-9.0696500e+03 2.1725978e+03 1.9070364e+03
+-1.6226312e+05 3.7155216e+04 3.5270799e+04
+-2.1458136e+06 1.0378053e+06 1.7783148e+05
+-5.4621887e+06 2.6739147e+06 4.5067848e+05
+-9.2171015e+06 4.4459598e+06 8.9444098e+05
+-1.2327174e+07 5.8186114e+06 1.5135486e+06
+-1.4319570e+07 6.5689749e+06 2.2938130e+06
+-1.5295797e+07 6.7592568e+06 3.2166529e+06
+-1.5584871e+07 6.5588360e+06 4.2619696e+06
+-1.5429845e+07 6.0805384e+06 5.4068389e+06
+-1.4896388e+07 5.3362089e+06 6.6211397e+06
+-1.3979260e+07 4.3075874e+06 7.8512399e+06
+-1.2761599e+07 3.0542057e+06 8.9802875e+06
+-1.1424708e+07 1.7614598e+06 9.7380981e+06
+-9.8292883e+06 6.9201563e+05 9.4891684e+06
+-2.3394042e+06 3.8622612e+04 8.6302270e+06
+-2.0516728e+06 1.0088668e+04 7.0192883e+06
+-1.7851623e+06 5.6346924e+03 4.3150104e+06
+-1.1445199e+06 2.4149202e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.4004441e+01 1.1615493e+01 1.9208923e+00
+-4.7476468e+02 2.0482591e+02 5.7606947e+01
+-8.4999211e+03 3.3001753e+03 1.3088721e+03
+-1.5165527e+05 5.4672420e+04 2.6169296e+04
+-2.1248647e+06 1.4270747e+06 1.3458441e+05
+-5.4555159e+06 3.6499784e+06 3.5590902e+05
+-9.1841754e+06 6.0551527e+06 7.2162752e+05
+-1.2218717e+07 7.9173459e+06 1.2311689e+06
+-1.4101620e+07 8.9330508e+06 1.8729467e+06
+-1.4960758e+07 9.1900815e+06 2.6349681e+06
+-1.5144288e+07 8.9221665e+06 3.5044651e+06
+-1.4894309e+07 8.2829328e+06 4.4651662e+06
+-1.4255920e+07 7.2843526e+06 5.4936429e+06
+-1.3197845e+07 5.8960424e+06 6.5447953e+06
+-1.1793411e+07 4.1976215e+06 7.5155444e+06
+-1.0253194e+07 2.4454101e+06 8.1671330e+06
+-8.5561659e+06 9.8786899e+05 7.9600965e+06
+-1.9774944e+06 6.6240877e+04 7.2330015e+06
+-1.7250675e+06 2.0618536e+04 5.8801666e+06
+-1.4996136e+06 1.1242819e+04 3.6139637e+06
+-9.6107536e+05 4.3396019e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.3347318e+01 2.0397273e+01 -3.3657930e+00
+-4.4960420e+02 3.3618029e+02 -2.8157874e+01
+-7.8749408e+03 4.9446204e+03 2.2446561e+02
+-1.3870428e+05 7.5417486e+04 1.2949778e+04
+-2.1130454e+06 1.7731775e+06 8.1445275e+04
+-5.4639238e+06 4.4899381e+06 2.4165641e+05
+-9.1628119e+06 7.4361284e+06 5.0510723e+05
+-1.2104387e+07 9.7156482e+06 8.6770032e+05
+-1.3845023e+07 1.0955172e+07 1.3228753e+06
+-1.4542190e+07 1.1268079e+07 1.8664115e+06
+-1.4566946e+07 1.0945634e+07 2.4936724e+06
+-1.4160931e+07 1.0176262e+07 3.1960170e+06
+-1.3345092e+07 8.9688596e+06 3.9586955e+06
+-1.2058248e+07 7.2786411e+06 4.7493976e+06
+-1.0366928e+07 5.2026831e+06 5.4872151e+06
+-8.5285936e+06 3.0665824e+06 5.9800936e+06
+-6.6801159e+06 1.2933403e+06 5.8177094e+06
+-1.4715842e+06 1.1175211e+05 5.2714796e+06
+-1.2647321e+06 4.2409462e+04 4.2790013e+06
+-1.0969596e+06 2.3479192e+04 2.6277710e+06
+-7.0240481e+05 9.0106868e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.4837229e+01 3.7865023e+01 -1.3638973e+01
+-4.5016895e+02 6.0253019e+02 -2.0822453e+02
+-7.4065590e+03 8.0578056e+03 -2.0812607e+03
+-1.2462022e+05 1.0447983e+05 -9.4547117e+03
+-2.1004519e+06 2.0059454e+06 3.6295554e+04
+-5.4456891e+06 5.0449339e+06 1.4222556e+05
+-9.0920897e+06 8.3620082e+06 2.9316238e+05
+-1.1922222e+07 1.0920775e+07 4.9358102e+05
+-1.3503898e+07 1.2306541e+07 7.4545709e+05
+-1.4020951e+07 1.2656607e+07 1.0506431e+06
+-1.3864529e+07 1.2301597e+07 1.4107716e+06
+-1.3274851e+07 1.1451549e+07 1.8241182e+06
+-1.2249200e+07 1.0109361e+07 2.2860959e+06
+-1.0698583e+07 8.2160419e+06 2.7822482e+06
+-8.6884342e+06 5.8812733e+06 3.2632465e+06
+-6.5353243e+06 3.4930904e+06 3.5932823e+06
+-4.5456968e+06 1.5509496e+06 3.4816088e+06
+-9.1581082e+05 1.8262826e+05 3.1237610e+06
+-7.5804789e+05 7.4544724e+04 2.5265546e+06
+-6.5453353e+05 4.0080223e+04 1.5499098e+06
+-4.1875585e+05 1.5634555e+04 0.0000000e+00
+0 0 0
+0 0 0
+-2.9941492e+01 6.5932523e+01 -2.6519604e+01
+-5.0158156e+02 1.0905115e+03 -4.9524509e+02
+-7.3271149e+03 1.4660079e+04 -6.8684653e+03
+-1.0803928e+05 1.6998784e+05 -6.8091153e+04
+-1.9490271e+06 1.9213567e+06 3.6185953e+04
+-5.1025432e+06 4.9791078e+06 9.8114617e+04
+-8.5188075e+06 8.2929501e+06 1.3734604e+05
+-1.1106212e+07 1.0818402e+07 1.9616689e+05
+-1.2465087e+07 1.2180652e+07 2.8128401e+05
+-1.2799520e+07 1.2530282e+07 3.9066397e+05
+-1.2503415e+07 1.2189815e+07 5.2592870e+05
+-1.1805328e+07 1.1361824e+07 6.8764882e+05
+-1.0678840e+07 1.0042205e+07 8.7863636e+05
+-9.0093879e+06 8.1628137e+06 1.1044531e+06
+-6.8559528e+06 5.8272691e+06 1.3591544e+06
+-4.5784511e+06 3.4382877e+06 1.5843350e+06
+-2.6216651e+06 1.5649153e+06 1.5842885e+06
+-4.4897163e+05 3.0108885e+05 1.3431767e+06
+-3.3697601e+05 9.6849597e+04 1.0841975e+06
+-2.8964491e+05 4.3173741e+04 6.7088579e+05
+-1.8655486e+05 1.5763868e+04 0.0000000e+00
+0 0 0
+0 0 0
+-3.5511760e+01 8.2187893e+01 -1.7833261e+01
+-5.5483884e+02 1.4077794e+03 -3.8797794e+02
+-6.8270275e+03 1.9276651e+04 -6.1304314e+03
+-6.8652434e+04 2.1681636e+05 -7.0127341e+04
+-4.8411270e+05 1.7177198e+06 -2.9164648e+04
+-1.2165373e+06 4.5207989e+06 -2.0373004e+04
+-2.0065577e+06 7.5380252e+06 -1.8032883e+04
+-2.6159492e+06 9.8280709e+06 -5.4185447e+03
+-2.9579824e+06 1.1071110e+07 7.4347059e+03
+-3.0629356e+06 1.1398867e+07 1.6319979e+04
+-2.9999023e+06 1.1096517e+07 2.4496122e+04
+-2.8130189e+06 1.0347538e+07 3.3576374e+04
+-2.5021595e+06 9.1472955e+06 4.6073131e+04
+-2.0539330e+06 7.4312825e+06 6.8294465e+04
+-1.4939828e+06 5.2914839e+06 1.0874148e+05
+-9.1560567e+05 3.0911504e+06 1.7594637e+05
+-4.4610604e+05 1.3250115e+06 2.9611552e+05
+-1.4312566e+05 2.7490800e+05 2.7600205e+05
+-9.1878404e+04 5.4910881e+04 2.6029247e+05
+-8.1399902e+04 1.5485610e+04 1.7971165e+05
+-5.5288708e+04 4.8030793e+03 0.0000000e+00
+0 0 0
+0 0 0
+-3.6065686e+01 6.4566413e+01 1.3024588e+01
+-5.6908429e+02 1.1517054e+03 1.4806640e+02
+-6.9394663e+03 1.6309859e+04 7.6126154e+02
+-6.6572063e+04 1.8538883e+05 -2.3176632e+03
+-4.1893324e+05 1.3913859e+06 9.4500885e+03
+-1.0754332e+06 3.6847364e+06 -5.7307761e+03
+-1.7801469e+06 6.1321807e+06 -1.4775988e+04
+-2.3157941e+06 7.9831486e+06 -6.9161389e+03
+-2.6109282e+06 8.9960884e+06 1.2866653e+03
+-2.6955190e+06 9.2701007e+06 4.7920458e+03
+-2.6331275e+06 9.0292036e+06 7.4642090e+03
+-2.4643333e+06 8.4231438e+06 9.9467099e+03
+-2.1870095e+06 7.4480627e+06 1.3116694e+04
+-1.7852786e+06 6.0497669e+06 2.1411900e+04
+-1.2797602e+06 4.3020622e+06 4.0940758e+04
+-7.5602280e+05 2.5040524e+06 7.1412550e+04
+-3.3420619e+05 1.0696127e+06 9.4571182e+04
+-9.1376471e+04 2.5785763e+05 5.4689908e+04
+-2.8656899e+04 4.5980309e+04 4.6196061e+04
+-1.7621640e+04 7.4277322e+03 3.3682973e+04
+-1.1630012e+04 1.2320999e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.6057506e+01 2.5145071e+01 3.3585618e+01
+-4.2957182e+02 4.8573736e+02 5.4591057e+02
+-5.4928033e+03 7.5830880e+03 6.1428264e+03
+-5.5355905e+04 9.7410650e+04 4.3721468e+04
+-3.6501859e+05 8.5967495e+05 3.8281343e+04
+-9.4071508e+05 2.2806575e+06 4.6080552e+03
+-1.5524115e+06 3.7744455e+06 -1.0754139e+04
+-2.0157853e+06 4.9014778e+06 -4.7595466e+03
+-2.2727932e+06 5.5252533e+06 1.3438466e+03
+-2.3474175e+06 5.6984170e+06 2.9558320e+03
+-2.2932926e+06 5.5529750e+06 4.5608911e+03
+-2.1461555e+06 5.1821110e+06 6.1469717e+03
+-1.9042000e+06 4.5835967e+06 7.6166048e+03
+-1.5531725e+06 3.7231654e+06 1.1829253e+04
+-1.1109732e+06 2.6458536e+06 2.2753196e+04
+-6.5334014e+05 1.5383213e+06 3.8415324e+04
+-2.8728287e+05 6.6220023e+05 4.1971111e+04
+-8.0767234e+04 1.7770131e+05 1.5284807e+04
+-1.7536180e+04 3.3436881e+04 7.4222340e+03
+-4.6085598e+03 4.8233422e+03 4.8371341e+03
+-1.9942443e+03 5.5374957e+02 0.0000000e+00
+0 0 0
+0 0 0
+-9.7336887e+00 0.0000000e+00 2.1713264e+01
+-1.7409086e+02 0.0000000e+00 4.0797548e+02
+-2.4795769e+03 0.0000000e+00 5.6192134e+03
+-2.8964527e+04 0.0000000e+00 5.3420930e+04
+-2.3529808e+05 0.0000000e+00 4.0563524e+04
+-6.0816544e+05 0.0000000e+00 7.6596453e+03
+-9.9791489e+05 0.0000000e+00 -5.8502809e+03
+-1.2924650e+06 0.0000000e+00 -2.0834825e+03
+-1.4574655e+06 0.0000000e+00 1.1958226e+03
+-1.5061664e+06 0.0000000e+00 1.3013739e+03
+-1.4716382e+06 0.0000000e+00 2.0135856e+03
+-1.3772227e+06 0.0000000e+00 2.8848747e+03
+-1.2218847e+06 0.0000000e+00 3.3245952e+03
+-9.9632231e+05 0.0000000e+00 4.6274934e+03
+-7.1206018e+05 0.0000000e+00 8.7879454e+03
+-4.1836694e+05 0.0000000e+00 1.5011923e+04
+-1.8509946e+05 0.0000000e+00 1.5303766e+04
+-5.4815292e+04 0.0000000e+00 4.7230770e+03
+-1.1555269e+04 0.0000000e+00 1.2271874e+03
+-1.9884856e+03 0.0000000e+00 5.5371630e+02
+-3.8031436e+02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-4.9107652e+00 -1.2205639e+01 7.3827158e+00
+-7.5967781e+01 -2.0611577e+02 1.1537541e+02
+-8.9480978e+02 -2.6969532e+03 1.2275615e+03
+-8.2249523e+03 -2.7669631e+04 8.1576183e+03
+-4.9746703e+04 -1.8449215e+05 7.0983901e+03
+-1.2548917e+05 -4.7726489e+05 1.6870071e+03
+-2.0593133e+05 -7.8923264e+05 -1.0639108e+03
+-2.6694797e+05 -1.0259163e+06 -6.6466296e+02
+-3.0094244e+05 -1.1571746e+06 -1.3159540e+01
+-3.1113960e+05 -1.1951750e+06 1.3498805e+02
+-3.0453087e+05 -1.1672776e+06 3.0526695e+02
+-2.8568056e+05 -1.0917282e+06 4.9131222e+02
+-2.5421634e+05 -9.6783597e+05 6.5888610e+02
+-2.0810976e+05 -7.8869009e+05 1.1364320e+03
+-1.4961122e+05 -5.6366300e+05 2.3504619e+03
+-8.8776866e+04 -3.3119708e+05 3.9574683e+03
+-3.9962242e+04 -1.4521095e+05 4.0311994e+03
+-1.2195001e+04 -3.9989180e+04 1.4000876e+03
+-2.7153398e+03 -7.8509039e+03 4.1106241e+02
+-5.1269775e+02 -1.2071296e+03 1.4240418e+02
+-9.5494859e+01 -1.4241531e+02 0.0000000e+00
+0 0 0
+0 0 0
+-1.4595225e+01 -3.4948991e+01 1.1281071e+01
+-2.1548120e+02 -5.6397008e+02 1.5504476e+02
+-2.3943634e+03 -7.0266027e+03 1.3862544e+03
+-2.0446841e+04 -6.8596867e+04 7.4044258e+03
+-1.1307186e+05 -4.3731216e+05 8.2777105e+03
+-2.8417443e+05 -1.1268537e+06 1.3258482e+03
+-4.6808463e+05 -1.8693238e+06 -2.9098500e+03
+-6.0804049e+05 -2.4346967e+06 -1.8742294e+03
+-6.8552688e+05 -2.7460988e+06 -2.1628512e+02
+-7.0850857e+05 -2.8347415e+06 4.4136394e+02
+-6.9340639e+05 -2.7676797e+06 9.5724566e+02
+-6.5050067e+05 -2.5878878e+06 1.4619878e+03
+-5.7891777e+05 -2.2937743e+06 2.1180998e+03
+-4.7413824e+05 -1.8695450e+06 3.9386613e+03
+-3.4125905e+05 -1.3375863e+06 8.1477505e+03
+-2.0278289e+05 -7.8743394e+05 1.3827356e+04
+-9.0802649e+04 -3.4319712e+05 1.5333316e+04
+-2.6393487e+04 -8.5093565e+04 6.0639545e+03
+-6.1025947e+03 -1.5923666e+04 2.7031306e+03
+-1.6162815e+03 -2.7062357e+03 1.2099584e+03
+-5.1387624e+02 -4.1282500e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.2306157e+01 -4.8678831e+01 -2.9688406e-02
+-3.2360770e+02 -7.7273413e+02 -3.6742238e+01
+-3.5528186e+03 -9.6194936e+03 -8.3049904e+02
+-3.0299722e+04 -9.7195407e+04 -8.5042996e+03
+-1.7027487e+05 -6.9343032e+05 -1.0445068e+03
+-4.2623642e+05 -1.7744860e+06 -2.6089717e+03
+-7.0296336e+05 -2.9439279e+06 -5.1883868e+03
+-9.1452777e+05 -3.8381139e+06 -3.0374664e+03
+-1.0314866e+06 -4.3283863e+06 -1.9161918e+02
+-1.0661538e+06 -4.4656628e+06 1.3644296e+03
+-1.0436579e+06 -4.3583320e+06 2.5471476e+03
+-9.7931974e+05 -4.0740824e+06 3.7282152e+03
+-8.7192379e+05 -3.6106462e+06 5.5144741e+03
+-7.1501375e+05 -2.9441253e+06 9.8299716e+03
+-5.1630899e+05 -2.1102362e+06 1.9028712e+04
+-3.0890140e+05 -1.2482080e+06 3.2681353e+04
+-1.3968367e+05 -5.4825772e+05 4.3219425e+04
+-3.9572882e+04 -1.1770959e+05 2.4031860e+04
+-1.2385844e+04 -2.4133568e+04 1.5970708e+04
+-6.1227461e+03 -6.1289670e+03 7.8945447e+03
+-2.7282852e+03 -1.4200066e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.4567506e+01 -4.2235888e+01 -1.7387198e+01
+-3.6346137e+02 -6.5955202e+02 -3.2194677e+02
+-4.2027276e+03 -8.2630723e+03 -4.3026680e+03
+-3.9939932e+04 -8.8844762e+04 -4.1365815e+04
+-2.7311330e+05 -9.2609701e+05 -1.9698535e+04
+-6.6812903e+05 -2.3309804e+06 -1.1612398e+04
+-1.0952665e+06 -3.8586551e+06 -8.1764696e+03
+-1.4288444e+06 -5.0321678e+06 -1.2273321e+03
+-1.6200163e+06 -5.6740349e+06 6.4551887e+03
+-1.6837063e+06 -5.8514466e+06 1.3009756e+04
+-1.6557850e+06 -5.7089487e+06 1.9509212e+04
+-1.5588314e+06 -5.3356550e+06 2.6894236e+04
+-1.3928921e+06 -4.7296965e+06 3.6677132e+04
+-1.1514450e+06 -3.8615524e+06 5.1616293e+04
+-8.4794397e+05 -2.7784860e+06 7.3827227e+04
+-5.3012272e+05 -1.6630672e+06 1.0320351e+05
+-2.6230638e+05 -7.7893843e+05 1.5008456e+05
+-7.6226246e+04 -1.5240110e+05 1.1787666e+05
+-3.9697434e+04 -4.4065007e+04 8.5627132e+04
+-2.6525828e+04 -1.5688716e+04 4.0312807e+04
+-1.2265490e+04 -4.1304184e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.4443771e+01 -2.6471824e+01 -2.1261785e+01
+-4.0719616e+02 -4.0892961e+02 -3.6626961e+02
+-6.0145033e+03 -5.3539618e+03 -4.5879916e+03
+-9.1778448e+04 -7.0081327e+04 -3.9612259e+04
+-1.6415731e+06 -1.2920509e+06 1.8887617e+04
+-4.2656579e+06 -3.2251591e+06 7.6181048e+04
+-7.1082477e+06 -5.3259229e+06 1.3288911e+05
+-9.2701209e+06 -6.9412453e+06 2.0587521e+05
+-1.0419927e+07 -7.8115663e+06 2.9824755e+05
+-1.0727561e+07 -8.0328147e+06 4.0765759e+05
+-1.0516473e+07 -7.8198960e+06 5.3166308e+05
+-9.9714347e+06 -7.3038039e+06 6.6591906e+05
+-9.0682408e+06 -6.4796121e+06 8.0523577e+05
+-7.7060404e+06 -5.3001486e+06 9.4048448e+05
+-5.9135547e+06 -3.8240109e+06 1.0436112e+06
+-3.9474526e+06 -2.2890514e+06 1.0385969e+06
+-2.1315637e+06 -1.0151322e+06 7.8468928e+05
+-2.6300548e+05 -1.0681403e+05 5.5313606e+05
+-1.4028166e+05 -3.3890967e+04 3.4626767e+05
+-9.1195073e+04 -1.4336327e+04 1.4646544e+05
+-4.0123211e+04 -4.0966231e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.4450144e+01 -1.5929278e+01 -1.0929631e+01
+-4.4928225e+02 -2.6244633e+02 -1.5829960e+02
+-7.5232275e+03 -3.9065726e+03 -1.4890203e+03
+-1.2836538e+05 -6.0938702e+04 -6.8864796e+03
+-2.1111756e+06 -1.3267482e+06 3.8534547e+04
+-5.4081613e+06 -3.3738411e+06 1.4968863e+05
+-9.0062830e+06 -5.5809206e+06 3.1887960e+05
+-1.1812900e+07 -7.2721369e+06 5.4044845e+05
+-1.3405196e+07 -8.1773549e+06 8.0753587e+05
+-1.3960250e+07 -8.3989517e+06 1.1129722e+06
+-1.3851733e+07 -8.1665285e+06 1.4468087e+06
+-1.3304288e+07 -7.6202390e+06 1.7926807e+06
+-1.2306355e+07 -6.7554939e+06 2.1257167e+06
+-1.0753895e+07 -5.5215299e+06 2.4024106e+06
+-8.6714082e+06 -3.9744888e+06 2.5358625e+06
+-6.3001203e+06 -2.3512046e+06 2.3628116e+06
+-3.8899827e+06 -9.8263759e+05 1.6746029e+06
+-5.2663085e+05 -7.5640006e+04 1.2542489e+06
+-3.0819926e+05 -1.9680249e+04 7.9018957e+05
+-2.0222859e+05 -8.4207618e+03 3.3196907e+05
+-8.8464244e+04 -2.4191592e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.6385918e+01 -1.0103951e+01 -2.7867269e+00
+-5.1179823e+02 -1.7956750e+02 -2.3471525e+01
+-9.0081331e+03 -2.9213741e+03 1.2452235e+02
+-1.5863684e+05 -4.8687403e+04 7.8057857e+03
+-2.3561664e+06 -1.1664683e+06 9.0646928e+04
+-6.0051784e+06 -3.0137503e+06 2.7181072e+05
+-1.0036294e+07 -5.0017993e+06 5.6617161e+05
+-1.3251556e+07 -6.5212408e+06 9.6244487e+05
+-1.5169968e+07 -7.3317618e+06 1.4417967e+06
+-1.5957462e+07 -7.5259731e+06 1.9840896e+06
+-1.6003321e+07 -7.3106345e+06 2.5645702e+06
+-1.5553178e+07 -6.8124864e+06 3.1490648e+06
+-1.4611427e+07 -6.0290466e+06 3.6889524e+06
+-1.3080295e+07 -4.9162012e+06 4.1056709e+06
+-1.0971759e+07 -3.5227734e+06 4.2587873e+06
+-8.4725746e+06 -2.0561282e+06 3.9076919e+06
+-5.6920707e+06 -8.2181591e+05 2.7588250e+06
+-8.2826879e+05 -5.0233587e+04 2.0901032e+06
+-5.0758903e+05 -9.6820770e+03 1.3229620e+06
+-3.3536613e+05 -3.8677083e+03 5.5681550e+05
+-1.4690133e+05 -1.1071349e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.9295767e+01 -6.4794099e+00 1.6667855e+00
+-5.8005796e+02 -1.2067059e+02 4.8063159e+01
+-1.0377036e+04 -2.0433322e+03 1.0471359e+03
+-1.8453760e+05 -3.4765417e+04 2.0007478e+04
+-2.5250945e+06 -8.9595592e+05 1.4972494e+05
+-6.3851447e+06 -2.3386607e+06 4.0426414e+05
+-1.0701981e+07 -3.8934793e+06 8.1375011e+05
+-1.4214031e+07 -5.0805855e+06 1.3684088e+06
+-1.6392474e+07 -5.7130630e+06 2.0405645e+06
+-1.7379805e+07 -5.8629274e+06 2.7965656e+06
+-1.7563544e+07 -5.6909246e+06 3.5961121e+06
+-1.7202546e+07 -5.2962020e+06 4.3880646e+06
+-1.6321952e+07 -4.6784982e+06 5.1035483e+06
+-1.4841331e+07 -3.8054495e+06 5.6362830e+06
+-1.2768892e+07 -2.7152559e+06 5.8042461e+06
+-1.0239360e+07 -1.5680026e+06 5.3022868e+06
+-7.2138797e+06 -6.0919225e+05 3.7473770e+06
+-1.0992350e+06 -3.1453759e+04 2.8503377e+06
+-6.8755388e+05 -4.5901847e+03 1.8077322e+06
+-4.5581032e+05 -1.7038129e+03 7.6176503e+05
+-1.9989836e+05 -5.1909437e+02 0.0000000e+00
+0 0 0
+0 0 0
+-3.2062536e+01 -3.6942496e+00 4.0190526e+00
+-6.3893838e+02 -7.0284761e+01 8.8883101e+01
+-1.1486101e+04 -1.2083929e+03 1.6703943e+03
+-2.0490407e+05 -2.0694747e+04 3.0240669e+04
+-2.6487730e+06 -5.6095523e+05 1.9819941e+05
+-6.6421221e+06 -1.4725875e+06 5.1205962e+05
+-1.1149802e+07 -2.4570916e+06 1.0083724e+06
+-1.4870417e+07 -3.2086729e+06 1.6797035e+06
+-1.7236381e+07 -3.6090637e+06 2.4925154e+06
+-1.8365159e+07 -3.7034804e+06 3.4024309e+06
+-1.8636972e+07 -3.5930917e+06 4.3566988e+06
+-1.8320044e+07 -3.3406569e+06 5.2913525e+06
+-1.7460097e+07 -2.9469210e+06 6.1234845e+06
+-1.5997747e+07 -2.3925886e+06 6.7291106e+06
+-1.3946361e+07 -1.7020928e+06 6.9007092e+06
+-1.1407179e+07 -9.7626177e+05 6.2914392e+06
+-8.2262161e+06 -3.7350922e+05 4.4526839e+06
+-1.2927608e+06 -1.7431917e+04 3.3920188e+06
+-8.1478878e+05 -2.1472314e+03 2.1526917e+06
+-5.4087808e+05 -7.6238621e+02 9.0746605e+05
+-2.3732604e+05 -2.4686645e+02 0.0000000e+00
+0 0 0
+0 0 0
+-3.3969572e+01 -1.2067033e+00 5.2227281e+00
+-6.7812074e+02 -2.3134173e+01 1.1157179e+02
+-1.2206434e+04 -3.9973828e+02 2.0535222e+03
+-2.1795653e+05 -6.8601347e+03 3.6981151e+04
+-2.7254234e+06 -1.9076987e+05 2.2834697e+05
+-6.7941539e+06 -5.0203593e+05 5.7871120e+05
+-1.1412313e+07 -8.3862931e+05 1.1263100e+06
+-1.5255913e+07 -1.0956219e+06 1.8651098e+06
+-1.7731669e+07 -1.2325538e+06 2.7582198e+06
+-1.8938797e+07 -1.2647971e+06 3.7545675e+06
+-1.9251163e+07 -1.2268176e+06 4.7936211e+06
+-1.8942961e+07 -1.1400669e+06 5.8037665e+06
+-1.8074826e+07 -1.0049728e+06 6.6944561e+06
+-1.6604022e+07 -8.1516620e+05 7.3331218e+06
+-1.4551795e+07 -5.7906051e+05 7.5008708e+06
+-1.2004168e+07 -3.3106704e+05 6.8312332e+06
+-8.7394883e+06 -1.2584922e+05 4.8407513e+06
+-1.4001731e+06 -5.6192357e+03 3.6895792e+06
+-8.8423224e+05 -6.4572335e+02 2.3419747e+06
+-5.8722330e+05 -2.2251619e+02 9.8734552e+05
+-2.5771070e+05 -7.2070777e+01 0.0000000e+00
+0 0 0
+0 0 0
+-3.4643500e+01 1.2067033e+00 5.6017695e+00
+-6.9180089e+02 2.3134173e+01 1.1901029e+02
+-1.2455732e+04 3.9973828e+02 2.1838112e+03
+-2.2244912e+05 6.8601347e+03 3.9314510e+04
+-2.7513296e+06 1.9076987e+05 2.3839728e+05
+-6.8445203e+06 5.0203593e+05 6.0083028e+05
+-1.1498798e+07 8.3862931e+05 1.1650280e+06
+-1.5382777e+07 1.0956219e+06 1.9253749e+06
+-1.7894158e+07 1.2325538e+06 2.8438865e+06
+-1.9125546e+07 1.2647971e+06 3.8672328e+06
+-1.9448404e+07 1.2268176e+06 4.9322634e+06
+-1.9139007e+07 1.1400669e+06 5.9648673e+06
+-1.8263412e+07 1.0049728e+06 6.8721645e+06
+-1.6785171e+07 8.1516620e+05 7.5192310e+06
+-1.4729151e+07 5.7906051e+05 7.6843335e+06
+-1.2177515e+07 3.3106704e+05 6.9958143e+06
+-8.8869107e+06 1.2584922e+05 4.9599710e+06
+-1.4334631e+06 5.6192357e+03 3.7808928e+06
+-9.0546256e+05 6.4572335e+02 2.4000367e+06
+-6.0137452e+05 2.2251619e+02 1.0118447e+06
+-2.6393553e+05 7.2070760e+01 0.0000000e+00
+0 0 0
+0 0 0
+-3.3969572e+01 3.6942496e+00 5.2227281e+00
+-6.7812074e+02 7.0284761e+01 1.1157179e+02
+-1.2206434e+04 1.2083929e+03 2.0535222e+03
+-2.1795653e+05 2.0694747e+04 3.6981151e+04
+-2.7254234e+06 5.6095523e+05 2.2834697e+05
+-6.7941539e+06 1.4725875e+06 5.7871120e+05
+-1.1412313e+07 2.4570916e+06 1.1263100e+06
+-1.5255913e+07 3.2086729e+06 1.8651098e+06
+-1.7731669e+07 3.6090637e+06 2.7582198e+06
+-1.8938797e+07 3.7034804e+06 3.7545675e+06
+-1.9251163e+07 3.5930917e+06 4.7936211e+06
+-1.8942961e+07 3.3406569e+06 5.8037665e+06
+-1.8074826e+07 2.9469210e+06 6.6944561e+06
+-1.6604022e+07 2.3925886e+06 7.3331218e+06
+-1.4551795e+07 1.7020928e+06 7.5008708e+06
+-1.2004168e+07 9.7626177e+05 6.8312332e+06
+-8.7394883e+06 3.7350922e+05 4.8407513e+06
+-1.4001731e+06 1.7431917e+04 3.6895792e+06
+-8.8423224e+05 2.1472314e+03 2.3419747e+06
+-5.8722330e+05 7.6238620e+02 9.8734552e+05
+-2.5771070e+05 2.4686643e+02 0.0000000e+00
+0 0 0
+0 0 0
+-3.2062536e+01 6.4794099e+00 4.0190526e+00
+-6.3893838e+02 1.2067059e+02 8.8883101e+01
+-1.1486101e+04 2.0433322e+03 1.6703943e+03
+-2.0490407e+05 3.4765417e+04 3.0240669e+04
+-2.6487730e+06 8.9595592e+05 1.9819941e+05
+-6.6421221e+06 2.3386607e+06 5.1205962e+05
+-1.1149802e+07 3.8934793e+06 1.0083724e+06
+-1.4870417e+07 5.0805855e+06 1.6797035e+06
+-1.7236381e+07 5.7130630e+06 2.4925154e+06
+-1.8365159e+07 5.8629274e+06 3.4024309e+06
+-1.8636972e+07 5.6909246e+06 4.3566988e+06
+-1.8320044e+07 5.2962020e+06 5.2913525e+06
+-1.7460097e+07 4.6784982e+06 6.1234845e+06
+-1.5997747e+07 3.8054495e+06 6.7291106e+06
+-1.3946361e+07 2.7152559e+06 6.9007092e+06
+-1.1407179e+07 1.5680026e+06 6.2914392e+06
+-8.2262161e+06 6.0919225e+05 4.4526839e+06
+-1.2927608e+06 3.1453759e+04 3.3920188e+06
+-8.1478878e+05 4.5901847e+03 2.1526917e+06
+-5.4087808e+05 1.7038129e+03 9.0746605e+05
+-2.3732604e+05 5.1909437e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.9295767e+01 1.0103951e+01 1.6667855e+00
+-5.8005796e+02 1.7956750e+02 4.8063159e+01
+-1.0377036e+04 2.9213741e+03 1.0471359e+03
+-1.8453760e+05 4.8687403e+04 2.0007478e+04
+-2.5250945e+06 1.1664683e+06 1.4972494e+05
+-6.3851447e+06 3.0137503e+06 4.0426414e+05
+-1.0701981e+07 5.0017993e+06 8.1375011e+05
+-1.4214031e+07 6.5212408e+06 1.3684088e+06
+-1.6392474e+07 7.3317618e+06 2.0405645e+06
+-1.7379805e+07 7.5259731e+06 2.7965656e+06
+-1.7563544e+07 7.3106345e+06 3.5961121e+06
+-1.7202546e+07 6.8124864e+06 4.3880646e+06
+-1.6321952e+07 6.0290466e+06 5.1035483e+06
+-1.4841331e+07 4.9162012e+06 5.6362830e+06
+-1.2768892e+07 3.5227734e+06 5.8042461e+06
+-1.0239360e+07 2.0561282e+06 5.3022868e+06
+-7.2138797e+06 8.2181591e+05 3.7473770e+06
+-1.0992350e+06 5.0233587e+04 2.8503377e+06
+-6.8755388e+05 9.6820770e+03 1.8077322e+06
+-4.5581032e+05 3.8677083e+03 7.6176503e+05
+-1.9989836e+05 1.1071349e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.6385918e+01 1.5929278e+01 -2.7867269e+00
+-5.1179823e+02 2.6244633e+02 -2.3471525e+01
+-9.0081331e+03 3.9065726e+03 1.2452235e+02
+-1.5863684e+05 6.0938702e+04 7.8057857e+03
+-2.3561664e+06 1.3267482e+06 9.0646928e+04
+-6.0051784e+06 3.3738411e+06 2.7181072e+05
+-1.0036294e+07 5.5809206e+06 5.6617161e+05
+-1.3251556e+07 7.2721369e+06 9.6244487e+05
+-1.5169968e+07 8.1773549e+06 1.4417967e+06
+-1.5957462e+07 8.3989517e+06 1.9840896e+06
+-1.6003321e+07 8.1665285e+06 2.5645702e+06
+-1.5553178e+07 7.6202390e+06 3.1490648e+06
+-1.4611427e+07 6.7554939e+06 3.6889524e+06
+-1.3080295e+07 5.5215299e+06 4.1056709e+06
+-1.0971759e+07 3.9744888e+06 4.2587873e+06
+-8.4725746e+06 2.3512046e+06 3.9076919e+06
+-5.6920707e+06 9.8263759e+05 2.7588250e+06
+-8.2826879e+05 7.5640006e+04 2.0901032e+06
+-5.0758903e+05 1.9680249e+04 1.3229620e+06
+-3.3536613e+05 8.4207618e+03 5.5681550e+05
+-1.4690133e+05 2.4191592e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.4450144e+01 2.6471824e+01 -1.0929631e+01
+-4.4928225e+02 4.0892961e+02 -1.5829960e+02
+-7.5232275e+03 5.3539618e+03 -1.4890203e+03
+-1.2836538e+05 7.0081327e+04 -6.8864796e+03
+-2.1111756e+06 1.2920509e+06 3.8534547e+04
+-5.4081613e+06 3.2251591e+06 1.4968863e+05
+-9.0062830e+06 5.3259229e+06 3.1887960e+05
+-1.1812900e+07 6.9412453e+06 5.4044845e+05
+-1.3405196e+07 7.8115663e+06 8.0753587e+05
+-1.3960250e+07 8.0328147e+06 1.1129722e+06
+-1.3851733e+07 7.8198960e+06 1.4468087e+06
+-1.3304288e+07 7.3038039e+06 1.7926807e+06
+-1.2306355e+07 6.4796121e+06 2.1257167e+06
+-1.0753895e+07 5.3001486e+06 2.4024106e+06
+-8.6714082e+06 3.8240109e+06 2.5358625e+06
+-6.3001203e+06 2.2890514e+06 2.3628116e+06
+-3.8899827e+06 1.0151322e+06 1.6746029e+06
+-5.2663085e+05 1.0681403e+05 1.2542489e+06
+-3.0819926e+05 3.3890967e+04 7.9018957e+05
+-2.0222859e+05 1.4336327e+04 3.3196907e+05
+-8.8464244e+04 4.0966232e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.4443771e+01 4.2235888e+01 -2.1261785e+01
+-4.0719616e+02 6.5955202e+02 -3.6626961e+02
+-6.0145033e+03 8.2630723e+03 -4.5879916e+03
+-9.1778448e+04 8.8844762e+04 -3.9612259e+04
+-1.6415731e+06 9.2609701e+05 1.8887617e+04
+-4.2656579e+06 2.3309804e+06 7.6181048e+04
+-7.1082477e+06 3.8586551e+06 1.3288911e+05
+-9.2701209e+06 5.0321678e+06 2.0587521e+05
+-1.0419927e+07 5.6740349e+06 2.9824755e+05
+-1.0727561e+07 5.8514466e+06 4.0765759e+05
+-1.0516473e+07 5.7089487e+06 5.3166308e+05
+-9.9714347e+06 5.3356550e+06 6.6591906e+05
+-9.0682408e+06 4.7296965e+06 8.0523577e+05
+-7.7060404e+06 3.8615524e+06 9.4048448e+05
+-5.9135547e+06 2.7784860e+06 1.0436112e+06
+-3.9474526e+06 1.6630672e+06 1.0385969e+06
+-2.1315637e+06 7.7893843e+05 7.8468928e+05
+-2.6300548e+05 1.5240110e+05 5.5313606e+05
+-1.4028166e+05 4.4065007e+04 3.4626767e+05
+-9.1195073e+04 1.5688716e+04 1.4646544e+05
+-4.0123211e+04 4.1304184e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.4567506e+01 4.8678831e+01 -1.7387198e+01
+-3.6346137e+02 7.7273413e+02 -3.2194677e+02
+-4.2027276e+03 9.6194936e+03 -4.3026680e+03
+-3.9939932e+04 9.7195407e+04 -4.1365815e+04
+-2.7311330e+05 6.9343032e+05 -1.9698535e+04
+-6.6812903e+05 1.7744860e+06 -1.1612398e+04
+-1.0952665e+06 2.9439279e+06 -8.1764696e+03
+-1.4288444e+06 3.8381139e+06 -1.2273321e+03
+-1.6200163e+06 4.3283863e+06 6.4551887e+03
+-1.6837063e+06 4.4656628e+06 1.3009756e+04
+-1.6557850e+06 4.3583320e+06 1.9509212e+04
+-1.5588314e+06 4.0740824e+06 2.6894236e+04
+-1.3928921e+06 3.6106462e+06 3.6677132e+04
+-1.1514450e+06 2.9441253e+06 5.1616293e+04
+-8.4794397e+05 2.1102362e+06 7.3827227e+04
+-5.3012272e+05 1.2482080e+06 1.0320351e+05
+-2.6230638e+05 5.4825772e+05 1.5008456e+05
+-7.6226246e+04 1.1770959e+05 1.1787666e+05
+-3.9697434e+04 2.4133568e+04 8.5627132e+04
+-2.6525828e+04 6.1289670e+03 4.0312807e+04
+-1.2265490e+04 1.4200066e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.2306157e+01 3.4948991e+01 -2.9688406e-02
+-3.2360770e+02 5.6397008e+02 -3.6742238e+01
+-3.5528186e+03 7.0266027e+03 -8.3049904e+02
+-3.0299722e+04 6.8596867e+04 -8.5042996e+03
+-1.7027487e+05 4.3731216e+05 -1.0445068e+03
+-4.2623642e+05 1.1268537e+06 -2.6089717e+03
+-7.0296336e+05 1.8693238e+06 -5.1883868e+03
+-9.1452777e+05 2.4346967e+06 -3.0374664e+03
+-1.0314866e+06 2.7460988e+06 -1.9161918e+02
+-1.0661538e+06 2.8347415e+06 1.3644296e+03
+-1.0436579e+06 2.7676797e+06 2.5471476e+03
+-9.7931974e+05 2.5878878e+06 3.7282152e+03
+-8.7192379e+05 2.2937743e+06 5.5144741e+03
+-7.1501375e+05 1.8695450e+06 9.8299716e+03
+-5.1630899e+05 1.3375863e+06 1.9028712e+04
+-3.0890140e+05 7.8743394e+05 3.2681353e+04
+-1.3968367e+05 3.4319712e+05 4.3219425e+04
+-3.9572882e+04 8.5093565e+04 2.4031860e+04
+-1.2385844e+04 1.5923666e+04 1.5970708e+04
+-6.1227461e+03 2.7062357e+03 7.8945447e+03
+-2.7282852e+03 4.1282500e+02 0.0000000e+00
+0 0 0
+0 0 0
+-1.4595225e+01 1.2205639e+01 1.1281071e+01
+-2.1548120e+02 2.0611577e+02 1.5504476e+02
+-2.3943634e+03 2.6969532e+03 1.3862544e+03
+-2.0446841e+04 2.7669631e+04 7.4044258e+03
+-1.1307186e+05 1.8449215e+05 8.2777105e+03
+-2.8417443e+05 4.7726489e+05 1.3258482e+03
+-4.6808463e+05 7.8923264e+05 -2.9098500e+03
+-6.0804049e+05 1.0259163e+06 -1.8742294e+03
+-6.8552688e+05 1.1571746e+06 -2.1628513e+02
+-7.0850857e+05 1.1951750e+06 4.4136394e+02
+-6.9340639e+05 1.1672776e+06 9.5724567e+02
+-6.5050067e+05 1.0917282e+06 1.4619878e+03
+-5.7891777e+05 9.6783597e+05 2.1180998e+03
+-4.7413824e+05 7.8869009e+05 3.9386613e+03
+-3.4125905e+05 5.6366300e+05 8.1477505e+03
+-2.0278289e+05 3.3119708e+05 1.3827356e+04
+-9.0802649e+04 1.4521095e+05 1.5333316e+04
+-2.6393487e+04 3.9989180e+04 6.0639545e+03
+-6.1025947e+03 7.8509039e+03 2.7031306e+03
+-1.6162815e+03 1.2071296e+03 1.2099584e+03
+-5.1387624e+02 1.4241531e+02 0.0000000e+00
+0 0 0
+0 0 0
+-4.9107652e+00 0.0000000e+00 7.3827158e+00
+-7.5967781e+01 0.0000000e+00 1.1537541e+02
+-8.9480978e+02 0.0000000e+00 1.2275615e+03
+-8.2249523e+03 0.0000000e+00 8.1576183e+03
+-4.9746703e+04 0.0000000e+00 7.0983901e+03
+-1.2548917e+05 0.0000000e+00 1.6870071e+03
+-2.0593133e+05 0.0000000e+00 -1.0639108e+03
+-2.6694797e+05 0.0000000e+00 -6.6466296e+02
+-3.0094244e+05 0.0000000e+00 -1.3159558e+01
+-3.1113960e+05 0.0000000e+00 1.3498805e+02
+-3.0453087e+05 0.0000000e+00 3.0526698e+02
+-2.8568056e+05 0.0000000e+00 4.9131223e+02
+-2.5421634e+05 0.0000000e+00 6.5888611e+02
+-2.0810976e+05 0.0000000e+00 1.1364320e+03
+-1.4961122e+05 0.0000000e+00 2.3504619e+03
+-8.8776866e+04 0.0000000e+00 3.9574683e+03
+-3.9962242e+04 0.0000000e+00 4.0311994e+03
+-1.2195001e+04 0.0000000e+00 1.4000876e+03
+-2.7153398e+03 0.0000000e+00 4.1106241e+02
+-5.1269775e+02 0.0000000e+00 1.4240419e+02
+-9.5494859e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.9620977e+00 -4.8399287e+00 1.8912611e+00
+-2.6758937e+01 -7.2550929e+01 2.5233347e+01
+-2.6937735e+02 -8.1818924e+02 2.1799015e+02
+-2.0666848e+03 -7.0682071e+03 1.1279296e+03
+-1.0365093e+04 -3.9378272e+04 1.1245911e+03
+-2.5470956e+04 -9.9207258e+04 3.1363668e+02
+-4.1718822e+04 -1.6369948e+05 -1.9939034e+02
+-5.4068477e+04 -2.1290003e+05 -1.7885154e+02
+-6.0878886e+04 -2.4018248e+05 -5.9924024e+01
+-6.2907779e+04 -2.4827844e+05 -1.3301571e+01
+-6.1644393e+04 -2.4292473e+05 2.4949790e+01
+-5.7986621e+04 -2.2773440e+05 6.5410393e+01
+-5.1805769e+04 -2.0246625e+05 1.2109885e+02
+-4.2628536e+04 -1.6563594e+05 2.7580981e+02
+-3.0853277e+04 -1.1909870e+05 6.1657523e+02
+-1.8489812e+04 -7.0697090e+04 1.0266106e+03
+-8.4584098e+03 -3.1521560e+04 1.0443384e+03
+-2.6567139e+03 -8.8929866e+03 3.9903822e+02
+-6.2372371e+02 -1.8179352e+03 1.2535740e+02
+-1.2716888e+02 -2.9631414e+02 3.6142667e+01
+-2.3197975e+01 -3.6154216e+01 0.0000000e+00
+0 0 0
+0 0 0
+-6.4098948e+00 -1.5314135e+01 2.2888762e+00
+-8.5617088e+01 -2.2521974e+02 2.5093570e+01
+-8.4198127e+02 -2.5046997e+03 1.5922189e+02
+-6.2928204e+03 -2.1586978e+04 5.2397236e+02
+-3.0719723e+04 -1.2237375e+05 1.1673194e+03
+-7.5294807e+04 -3.0707372e+05 1.5416467e+02
+-1.2359449e+05 -5.0729929e+05 -7.3616755e+02
+-1.6042935e+05 -6.6065731e+05 -5.9003219e+02
+-1.8067787e+05 -7.4541253e+05 -2.0898446e+02
+-1.8667348e+05 -7.7031207e+05 -1.0444141e+01
+-1.8292657e+05 -7.5355080e+05 1.3580620e+02
+-1.7208473e+05 -7.0630166e+05 2.8712532e+02
+-1.5377061e+05 -6.2786856e+05 5.4226821e+02
+-1.2661333e+05 -5.1383730e+05 1.2187097e+03
+-9.1781008e+04 -3.6999664e+05 2.6386120e+03
+-5.5108389e+04 -2.2017773e+05 4.4447544e+03
+-2.5095336e+04 -9.7730345e+04 4.9462267e+03
+-7.5251504e+03 -2.4890206e+04 2.0751101e+03
+-1.8362166e+03 -4.8696637e+03 8.6046045e+02
+-4.8708890e+02 -8.6182581e+02 2.9677952e+02
+-1.2737511e+02 -1.2587583e+02 0.0000000e+00
+0 0 0
+0 0 0
+-1.0871533e+01 -2.3291202e+01 -3.4575569e+00
+-1.4599204e+02 -3.4360494e+02 -6.2688012e+01
+-1.4617155e+03 -3.9153461e+03 -7.4314475e+02
+-1.1334160e+04 -3.6049594e+04 -5.2460910e+03
+-5.8723428e+04 -2.3693668e+05 -2.2346037e+03
+-1.4343772e+05 -5.9073518e+05 -1.3718444e+03
+-2.3536845e+05 -9.7462220e+05 -1.6438437e+03
+-3.0596680e+05 -1.2698541e+06 -1.0080116e+03
+-3.4505072e+05 -1.4327527e+06 -1.0365979e+02
+-3.5690604e+05 -1.4801889e+06 5.2542671e+02
+-3.5006167e+05 -1.4476774e+06 1.0557529e+03
+-3.2949346e+05 -1.3567095e+06 1.6372870e+03
+-2.9460666e+05 -1.2061025e+06 2.5540622e+03
+-2.4302894e+05 -9.8774601e+05 4.4779702e+03
+-1.7703573e+05 -7.1287075e+05 8.0788212e+03
+-1.0734600e+05 -4.2664120e+05 1.2986888e+04
+-4.9488216e+04 -1.9151479e+05 1.6575874e+04
+-1.4278327e+04 -4.2457364e+04 8.8484772e+03
+-4.3951325e+03 -8.8879964e+03 4.8760985e+03
+-1.8397411e+03 -2.0935004e+03 1.8247681e+03
+-6.2566267e+02 -4.0373034e+02 0.0000000e+00
+0 0 0
+0 0 0
+-1.3904212e+01 -2.1959798e+01 -1.1994698e+01
+-1.9793705e+02 -3.2405342e+02 -1.9707054e+02
+-2.2144536e+03 -3.7960797e+03 -2.3046110e+03
+-2.0843921e+04 -3.8126584e+04 -1.9323632e+04
+-1.4708917e+05 -3.7127477e+05 -1.1009663e+04
+-3.5138600e+05 -9.1191076e+05 -6.5771229e+03
+-5.7203510e+05 -1.5009621e+06 -3.4686939e+03
+-7.4698226e+05 -1.9561361e+06 9.5112886e+02
+-8.5017660e+05 -2.2075454e+06 5.9040670e+03
+-8.8782636e+05 -2.2809132e+06 1.0748387e+04
+-8.7713106e+05 -2.2314206e+06 1.5837617e+04
+-8.2903887e+05 -2.0922866e+06 2.1622273e+04
+-7.4389082e+05 -1.8622117e+06 2.8730192e+04
+-6.1897428e+05 -1.5291103e+06 3.7623754e+04
+-4.6087356e+05 -1.1092815e+06 4.6964081e+04
+-2.9203353e+05 -6.7128066e+05 5.3514340e+04
+-1.4304404e+05 -3.1999416e+05 6.2731365e+04
+-3.4734605e+04 -6.3641849e+04 4.2424208e+04
+-1.4293472e+04 -1.6843431e+04 2.4975681e+04
+-7.5437396e+03 -5.0387274e+03 8.9388195e+03
+-2.6650947e+03 -1.0653057e+03 0.0000000e+00
+0 0 0
+0 0 0
+-1.7606658e+01 -1.5373839e+01 -1.3423072e+01
+-2.9946233e+02 -2.3292678e+02 -2.1228354e+02
+-4.6185893e+03 -3.0484289e+03 -2.3558483e+03
+-7.4793619e+04 -4.1519757e+04 -1.5947504e+04
+-1.3156093e+06 -7.2638949e+05 1.3203382e+04
+-3.4047862e+06 -1.8181515e+06 5.8572405e+04
+-5.6728936e+06 -2.9955716e+06 1.1782780e+05
+-7.4081742e+06 -3.8925824e+06 1.9232734e+05
+-8.3461184e+06 -4.3685323e+06 2.7950517e+05
+-8.6180003e+06 -4.4861129e+06 3.7514384e+05
+-8.4750882e+06 -4.3718650e+06 4.7420349e+05
+-8.0604021e+06 -4.0988297e+06 5.6971404e+05
+-7.3549990e+06 -3.6585696e+06 6.5283021e+05
+-6.2758738e+06 -3.0154969e+06 7.0905009e+05
+-4.8289780e+06 -2.1925505e+06 7.0774239e+05
+-3.1869711e+06 -1.3172536e+06 5.9323385e+05
+-1.6036661e+06 -5.7567774e+05 3.2101979e+05
+-1.4269933e+05 -5.5360927e+04 1.9243272e+05
+-4.9500443e+04 -1.3395876e+04 9.8203945e+04
+-2.5114888e+04 -4.5830032e+03 3.1668037e+04
+-8.4631455e+03 -1.0573346e+03 0.0000000e+00
+0 0 0
+0 0 0
+-2.2168673e+01 -1.0707099e+01 -6.9482104e+00
+-4.1717342e+02 -1.7893961e+02 -9.3044211e+01
+-7.1670849e+03 -2.7453347e+03 -7.5228108e+02
+-1.2471927e+05 -4.4510238e+04 -1.4079159e+03
+-2.0087163e+06 -8.7373807e+05 4.3481390e+04
+-5.0818220e+06 -2.2508115e+06 1.4980209e+05
+-8.4456860e+06 -3.7240439e+06 3.1767736e+05
+-1.1087316e+07 -4.8357099e+06 5.3522132e+05
+-1.2610966e+07 -5.4150722e+06 7.8753084e+05
+-1.3171114e+07 -5.5470767e+06 1.0593585e+06
+-1.3100315e+07 -5.3961556e+06 1.3322315e+06
+-1.2596353e+07 -5.0558588e+06 1.5813254e+06
+-1.1643770e+07 -4.5133735e+06 1.7735445e+06
+-1.0136538e+07 -3.7192718e+06 1.8599619e+06
+-8.0704784e+06 -2.6959685e+06 1.7624502e+06
+-5.6349165e+06 -1.5959142e+06 1.3759070e+06
+-3.1083555e+06 -6.5475081e+05 6.7335294e+05
+-2.8714823e+05 -4.8127318e+04 4.2663671e+05
+-1.0651664e+05 -8.3327088e+03 2.1989092e+05
+-5.4726864e+04 -2.7284537e+03 7.0534652e+04
+-1.8350424e+04 -6.3650380e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7549246e+01 -7.7438469e+00 -1.7999246e+00
+-5.3920832e+02 -1.3995608e+02 -1.3373364e+01
+-9.5567087e+03 -2.3211745e+03 1.1104201e+02
+-1.6883469e+05 -3.9299868e+04 5.0985196e+03
+-2.4820303e+06 -8.3863858e+05 9.5862895e+04
+-6.2326666e+06 -2.2094944e+06 2.8203399e+05
+-1.0382460e+07 -3.6745152e+06 5.7867099e+05
+-1.3703784e+07 -4.7730563e+06 9.6824526e+05
+-1.5699466e+07 -5.3386145e+06 1.4212855e+06
+-1.6528224e+07 -5.4597693e+06 1.9047405e+06
+-1.6571324e+07 -5.3031085e+06 2.3796962e+06
+-1.6064413e+07 -4.9627153e+06 2.7977872e+06
+-1.4999686e+07 -4.4252154e+06 3.0978881e+06
+-1.3257829e+07 -3.6397379e+06 3.1958876e+06
+-1.0816275e+07 -2.6256492e+06 2.9700843e+06
+-7.8409854e+06 -1.5316166e+06 2.2741975e+06
+-4.5704247e+06 -6.0026105e+05 1.0980617e+06
+-4.4413012e+05 -3.6816583e+04 7.0261233e+05
+-1.7298604e+05 -4.4724261e+03 3.6414905e+05
+-8.9800723e+04 -1.2349285e+03 1.1709012e+05
+-3.0167852e+04 -2.7986378e+02 0.0000000e+00
+0 0 0
+0 0 0
+-3.2854798e+01 -5.3961099e+00 1.2112938e+00
+-6.5132796e+02 -1.0125024e+02 3.3775453e+01
+-1.1651534e+04 -1.7242933e+03 7.1139245e+02
+-2.0689811e+05 -2.9404740e+04 1.3176782e+04
+-2.8257488e+06 -6.7838511e+05 1.5357752e+05
+-7.0463104e+06 -1.8141068e+06 4.1935569e+05
+-1.1761688e+07 -3.0299416e+06 8.3448890e+05
+-1.5593293e+07 -3.9386282e+06 1.3793225e+06
+-1.7960893e+07 -4.4030750e+06 2.0122020e+06
+-1.9011616e+07 -4.4985373e+06 2.6827810e+06
+-1.9151902e+07 -4.3644027e+06 3.3324336e+06
+-1.8645273e+07 -4.0792750e+06 3.8917203e+06
+-1.7499507e+07 -3.6323534e+06 4.2764133e+06
+-1.5598247e+07 -2.9814354e+06 4.3750261e+06
+-1.2910388e+07 -2.1416452e+06 4.0325181e+06
+-9.5722777e+06 -1.2353593e+06 3.0691786e+06
+-5.7558029e+06 -4.6988759e+05 1.4807282e+06
+-5.8227762e+05 -2.5094702e+04 9.5204893e+05
+-2.3230697e+05 -2.2751728e+03 4.9460477e+05
+-1.2122762e+05 -4.9145391e+02 1.5927860e+05
+-4.0790294e+04 -1.0933157e+02 0.0000000e+00
+0 0 0
+0 0 0
+-3.7252205e+01 -3.2084666e+00 3.0020255e+00
+-7.4147412e+02 -6.1068955e+01 6.5356478e+01
+-1.3305037e+04 -1.0481520e+03 1.2081512e+03
+-2.3678121e+05 -1.7880127e+04 2.1560679e+04
+-3.0690725e+06 -4.3757220e+05 2.0104725e+05
+-7.6037325e+06 -1.1802696e+06 5.2882047e+05
+-1.2705539e+07 -1.9770381e+06 1.0316537e+06
+-1.6894348e+07 -2.5716878e+06 1.6886434e+06
+-1.9525751e+07 -2.8745310e+06 2.4494691e+06
+-2.0729543e+07 -2.9353636e+06 3.2506789e+06
+-2.0923876e+07 -2.8457878e+06 4.0189680e+06
+-2.0393028e+07 -2.6575096e+06 4.6701875e+06
+-1.9163754e+07 -2.3637821e+06 5.1052730e+06
+-1.7133006e+07 -1.9372441e+06 5.1963405e+06
+-1.4272928e+07 -1.3875947e+06 4.7688571e+06
+-1.0700883e+07 -7.9477781e+05 3.6219799e+06
+-6.5286468e+06 -2.9725460e+05 1.7517776e+06
+-6.8076170e+05 -1.4517450e+04 1.1292012e+06
+-2.7390061e+05 -1.1041036e+03 5.8714196e+05
+-1.4320937e+05 -1.9100872e+02 1.8917281e+05
+-4.8220153e+04 -4.2407248e+01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0134641e+01 -1.0656010e+00 4.0222025e+00
+-7.9982921e+02 -2.0375157e+01 8.5036879e+01
+-1.4367126e+04 -3.5044113e+02 1.5480174e+03
+-2.5591317e+05 -5.9766083e+03 2.7601138e+04
+-3.2150875e+06 -1.5087251e+05 2.3056554e+05
+-7.9307867e+06 -4.0852281e+05 5.9545158e+05
+-1.3257544e+07 -6.8529102e+05 1.1489353e+06
+-1.7656131e+07 -8.9175878e+05 1.8692248e+06
+-2.0441183e+07 -9.9676423e+05 2.7009717e+06
+-2.1728459e+07 -1.0176576e+06 3.5729279e+06
+-2.1941002e+07 -9.8627835e+05 4.4032577e+06
+-2.1376424e+07 -9.2061644e+05 5.0998270e+06
+-2.0076726e+07 -8.1840339e+05 5.5563481e+06
+-1.7952561e+07 -6.7021092e+05 5.6378540e+06
+-1.4983993e+07 -4.7938761e+05 5.1618450e+06
+-1.1281163e+07 -2.7367650e+05 3.9177389e+06
+-6.9178508e+06 -1.0161602e+05 1.9004628e+06
+-7.3584864e+05 -4.7604630e+03 1.2263813e+06
+-2.9644168e+05 -3.3738913e+02 6.3782403e+05
+-1.5505887e+05 -5.1722541e+01 2.0552031e+05
+-5.2221523e+04 -1.1268095e+01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1136106e+01 1.0656010e+00 4.3614037e+00
+-8.2001012e+02 2.0375157e+01 9.1820320e+01
+-1.4733284e+04 3.5044113e+02 1.6684903e+03
+-2.6249741e+05 5.9766083e+03 2.9763565e+04
+-3.2636968e+06 1.5087251e+05 2.4038567e+05
+-8.0385267e+06 4.0852281e+05 6.1734651e+05
+-1.3439003e+07 6.8529102e+05 1.1869688e+06
+-1.7906444e+07 8.9175878e+05 1.9271185e+06
+-2.0741387e+07 9.9676423e+05 2.7808195e+06
+-2.2054322e+07 1.0176576e+06 3.6742801e+06
+-2.2269609e+07 9.8627835e+05 4.5229289e+06
+-2.1689509e+07 9.2061644e+05 5.2321984e+06
+-2.0361823e+07 8.1840339e+05 5.6938033e+06
+-1.8202858e+07 6.7021092e+05 5.7710685e+06
+-1.5196570e+07 4.7938761e+05 5.2797120e+06
+-1.1451774e+07 2.7367650e+05 4.0066174e+06
+-7.0296400e+06 1.0161602e+05 1.9461146e+06
+-7.5306239e+05 4.7604630e+03 1.2561930e+06
+-3.0329988e+05 3.3738913e+02 6.5335553e+05
+-1.5864787e+05 5.1722540e+01 2.1052543e+05
+-5.3432631e+04 1.1268095e+01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0134641e+01 3.2084666e+00 4.0222025e+00
+-7.9982921e+02 6.1068955e+01 8.5036879e+01
+-1.4367126e+04 1.0481520e+03 1.5480174e+03
+-2.5591317e+05 1.7880127e+04 2.7601138e+04
+-3.2150875e+06 4.3757220e+05 2.3056554e+05
+-7.9307867e+06 1.1802696e+06 5.9545158e+05
+-1.3257544e+07 1.9770381e+06 1.1489353e+06
+-1.7656131e+07 2.5716878e+06 1.8692248e+06
+-2.0441183e+07 2.8745310e+06 2.7009717e+06
+-2.1728459e+07 2.9353636e+06 3.5729279e+06
+-2.1941002e+07 2.8457878e+06 4.4032577e+06
+-2.1376424e+07 2.6575096e+06 5.0998270e+06
+-2.0076726e+07 2.3637821e+06 5.5563481e+06
+-1.7952561e+07 1.9372441e+06 5.6378540e+06
+-1.4983993e+07 1.3875947e+06 5.1618450e+06
+-1.1281163e+07 7.9477781e+05 3.9177389e+06
+-6.9178508e+06 2.9725460e+05 1.9004628e+06
+-7.3584864e+05 1.4517450e+04 1.2263813e+06
+-2.9644168e+05 1.1041036e+03 6.3782403e+05
+-1.5505887e+05 1.9100872e+02 2.0552031e+05
+-5.2221523e+04 4.2407248e+01 0.0000000e+00
+0 0 0
+0 0 0
+-3.7252205e+01 5.3961099e+00 3.0020255e+00
+-7.4147412e+02 1.0125024e+02 6.5356478e+01
+-1.3305037e+04 1.7242933e+03 1.2081512e+03
+-2.3678121e+05 2.9404740e+04 2.1560679e+04
+-3.0690725e+06 6.7838511e+05 2.0104725e+05
+-7.6037325e+06 1.8141068e+06 5.2882047e+05
+-1.2705539e+07 3.0299416e+06 1.0316537e+06
+-1.6894348e+07 3.9386282e+06 1.6886434e+06
+-1.9525751e+07 4.4030750e+06 2.4494691e+06
+-2.0729543e+07 4.4985373e+06 3.2506789e+06
+-2.0923876e+07 4.3644027e+06 4.0189680e+06
+-2.0393028e+07 4.0792750e+06 4.6701875e+06
+-1.9163754e+07 3.6323534e+06 5.1052730e+06
+-1.7133006e+07 2.9814354e+06 5.1963405e+06
+-1.4272928e+07 2.1416452e+06 4.7688571e+06
+-1.0700883e+07 1.2353593e+06 3.6219799e+06
+-6.5286468e+06 4.6988759e+05 1.7517776e+06
+-6.8076170e+05 2.5094702e+04 1.1292012e+06
+-2.7390061e+05 2.2751728e+03 5.8714196e+05
+-1.4320937e+05 4.9145391e+02 1.8917281e+05
+-4.8220153e+04 1.0933157e+02 0.0000000e+00
+0 0 0
+0 0 0
+-3.2854798e+01 7.7438469e+00 1.2112938e+00
+-6.5132796e+02 1.3995608e+02 3.3775453e+01
+-1.1651534e+04 2.3211745e+03 7.1139245e+02
+-2.0689811e+05 3.9299868e+04 1.3176782e+04
+-2.8257488e+06 8.3863858e+05 1.5357752e+05
+-7.0463104e+06 2.2094944e+06 4.1935569e+05
+-1.1761688e+07 3.6745152e+06 8.3448890e+05
+-1.5593293e+07 4.7730563e+06 1.3793225e+06
+-1.7960893e+07 5.3386145e+06 2.0122020e+06
+-1.9011616e+07 5.4597693e+06 2.6827810e+06
+-1.9151902e+07 5.3031085e+06 3.3324336e+06
+-1.8645273e+07 4.9627153e+06 3.8917203e+06
+-1.7499507e+07 4.4252154e+06 4.2764133e+06
+-1.5598247e+07 3.6397379e+06 4.3750261e+06
+-1.2910388e+07 2.6256492e+06 4.0325181e+06
+-9.5722777e+06 1.5316166e+06 3.0691786e+06
+-5.7558029e+06 6.0026105e+05 1.4807282e+06
+-5.8227762e+05 3.6816583e+04 9.5204893e+05
+-2.3230697e+05 4.4724261e+03 4.9460477e+05
+-1.2122762e+05 1.2349285e+03 1.5927860e+05
+-4.0790294e+04 2.7986378e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7549246e+01 1.0707099e+01 -1.7999246e+00
+-5.3920832e+02 1.7893961e+02 -1.3373364e+01
+-9.5567087e+03 2.7453347e+03 1.1104201e+02
+-1.6883469e+05 4.4510238e+04 5.0985196e+03
+-2.4820303e+06 8.7373807e+05 9.5862895e+04
+-6.2326666e+06 2.2508115e+06 2.8203399e+05
+-1.0382460e+07 3.7240439e+06 5.7867099e+05
+-1.3703784e+07 4.8357099e+06 9.6824526e+05
+-1.5699466e+07 5.4150722e+06 1.4212855e+06
+-1.6528224e+07 5.5470767e+06 1.9047405e+06
+-1.6571324e+07 5.3961556e+06 2.3796962e+06
+-1.6064413e+07 5.0558588e+06 2.7977872e+06
+-1.4999686e+07 4.5133735e+06 3.0978881e+06
+-1.3257829e+07 3.7192718e+06 3.1958876e+06
+-1.0816275e+07 2.6959685e+06 2.9700843e+06
+-7.8409854e+06 1.5959142e+06 2.2741975e+06
+-4.5704247e+06 6.5475081e+05 1.0980617e+06
+-4.4413012e+05 4.8127318e+04 7.0261233e+05
+-1.7298604e+05 8.3327088e+03 3.6414905e+05
+-8.9800723e+04 2.7284537e+03 1.1709012e+05
+-3.0167852e+04 6.3650380e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.2168673e+01 1.5373839e+01 -6.9482104e+00
+-4.1717342e+02 2.3292678e+02 -9.3044211e+01
+-7.1670849e+03 3.0484289e+03 -7.5228108e+02
+-1.2471927e+05 4.1519757e+04 -1.4079159e+03
+-2.0087163e+06 7.2638949e+05 4.3481390e+04
+-5.0818220e+06 1.8181515e+06 1.4980209e+05
+-8.4456860e+06 2.9955716e+06 3.1767736e+05
+-1.1087316e+07 3.8925824e+06 5.3522132e+05
+-1.2610966e+07 4.3685323e+06 7.8753084e+05
+-1.3171114e+07 4.4861129e+06 1.0593585e+06
+-1.3100315e+07 4.3718650e+06 1.3322315e+06
+-1.2596353e+07 4.0988297e+06 1.5813254e+06
+-1.1643770e+07 3.6585696e+06 1.7735445e+06
+-1.0136538e+07 3.0154969e+06 1.8599619e+06
+-8.0704784e+06 2.1925505e+06 1.7624502e+06
+-5.6349165e+06 1.3172536e+06 1.3759070e+06
+-3.1083555e+06 5.7567774e+05 6.7335294e+05
+-2.8714823e+05 5.5360927e+04 4.2663671e+05
+-1.0651664e+05 1.3395876e+04 2.1989092e+05
+-5.4726864e+04 4.5830032e+03 7.0534652e+04
+-1.8350424e+04 1.0573346e+03 0.0000000e+00
+0 0 0
+0 0 0
+-1.7606658e+01 2.1959798e+01 -1.3423072e+01
+-2.9946233e+02 3.2405342e+02 -2.1228354e+02
+-4.6185893e+03 3.7960797e+03 -2.3558483e+03
+-7.4793619e+04 3.8126584e+04 -1.5947504e+04
+-1.3156093e+06 3.7127477e+05 1.3203382e+04
+-3.4047862e+06 9.1191076e+05 5.8572405e+04
+-5.6728936e+06 1.5009621e+06 1.1782780e+05
+-7.4081742e+06 1.9561361e+06 1.9232734e+05
+-8.3461184e+06 2.2075454e+06 2.7950517e+05
+-8.6180003e+06 2.2809132e+06 3.7514384e+05
+-8.4750882e+06 2.2314206e+06 4.7420349e+05
+-8.0604021e+06 2.0922866e+06 5.6971404e+05
+-7.3549990e+06 1.8622117e+06 6.5283021e+05
+-6.2758738e+06 1.5291103e+06 7.0905009e+05
+-4.8289780e+06 1.1092815e+06 7.0774239e+05
+-3.1869711e+06 6.7128066e+05 5.9323385e+05
+-1.6036661e+06 3.1999416e+05 3.2101979e+05
+-1.4269933e+05 6.3641849e+04 1.9243272e+05
+-4.9500443e+04 1.6843431e+04 9.8203945e+04
+-2.5114888e+04 5.0387274e+03 3.1668037e+04
+-8.4631455e+03 1.0653057e+03 0.0000000e+00
+0 0 0
+0 0 0
+-1.3904212e+01 2.3291202e+01 -1.1994698e+01
+-1.9793705e+02 3.4360494e+02 -1.9707054e+02
+-2.2144536e+03 3.9153461e+03 -2.3046110e+03
+-2.0843921e+04 3.6049594e+04 -1.9323632e+04
+-1.4708917e+05 2.3693668e+05 -1.1009663e+04
+-3.5138600e+05 5.9073518e+05 -6.5771229e+03
+-5.7203510e+05 9.7462220e+05 -3.4686939e+03
+-7.4698226e+05 1.2698541e+06 9.5112886e+02
+-8.5017660e+05 1.4327527e+06 5.9040670e+03
+-8.8782636e+05 1.4801889e+06 1.0748387e+04
+-8.7713106e+05 1.4476774e+06 1.5837617e+04
+-8.2903887e+05 1.3567095e+06 2.1622273e+04
+-7.4389082e+05 1.2061025e+06 2.8730192e+04
+-6.1897428e+05 9.8774601e+05 3.7623754e+04
+-4.6087356e+05 7.1287075e+05 4.6964081e+04
+-2.9203353e+05 4.2664120e+05 5.3514340e+04
+-1.4304404e+05 1.9151479e+05 6.2731365e+04
+-3.4734605e+04 4.2457364e+04 4.2424208e+04
+-1.4293472e+04 8.8879964e+03 2.4975681e+04
+-7.5437396e+03 2.0935004e+03 8.9388195e+03
+-2.6650947e+03 4.0373034e+02 0.0000000e+00
+0 0 0
+0 0 0
+-1.0871533e+01 1.5314135e+01 -3.4575569e+00
+-1.4599204e+02 2.2521974e+02 -6.2688012e+01
+-1.4617155e+03 2.5046997e+03 -7.4314475e+02
+-1.1334160e+04 2.1586978e+04 -5.2460910e+03
+-5.8723428e+04 1.2237375e+05 -2.2346037e+03
+-1.4343772e+05 3.0707372e+05 -1.3718444e+03
+-2.3536845e+05 5.0729929e+05 -1.6438437e+03
+-3.0596680e+05 6.6065731e+05 -1.0080116e+03
+-3.4505072e+05 7.4541253e+05 -1.0365979e+02
+-3.5690604e+05 7.7031207e+05 5.2542671e+02
+-3.5006167e+05 7.5355080e+05 1.0557529e+03
+-3.2949346e+05 7.0630166e+05 1.6372870e+03
+-2.9460666e+05 6.2786856e+05 2.5540622e+03
+-2.4302894e+05 5.1383730e+05 4.4779702e+03
+-1.7703573e+05 3.6999664e+05 8.0788212e+03
+-1.0734600e+05 2.2017773e+05 1.2986888e+04
+-4.9488216e+04 9.7730345e+04 1.6575874e+04
+-1.4278327e+04 2.4890206e+04 8.8484772e+03
+-4.3951325e+03 4.8696637e+03 4.8760985e+03
+-1.8397411e+03 8.6182581e+02 1.8247681e+03
+-6.2566267e+02 1.2587583e+02 0.0000000e+00
+0 0 0
+0 0 0
+-6.4098948e+00 4.8399287e+00 2.2888762e+00
+-8.5617088e+01 7.2550929e+01 2.5093570e+01
+-8.4198127e+02 8.1818924e+02 1.5922189e+02
+-6.2928204e+03 7.0682071e+03 5.2397236e+02
+-3.0719723e+04 3.9378272e+04 1.1673194e+03
+-7.5294807e+04 9.9207258e+04 1.5416467e+02
+-1.2359449e+05 1.6369948e+05 -7.3616755e+02
+-1.6042935e+05 2.1290003e+05 -5.9003219e+02
+-1.8067787e+05 2.4018248e+05 -2.0898446e+02
+-1.8667348e+05 2.4827844e+05 -1.0444141e+01
+-1.8292657e+05 2.4292473e+05 1.3580620e+02
+-1.7208473e+05 2.2773440e+05 2.8712532e+02
+-1.5377061e+05 2.0246625e+05 5.4226821e+02
+-1.2661333e+05 1.6563594e+05 1.2187097e+03
+-9.1781008e+04 1.1909870e+05 2.6386120e+03
+-5.5108389e+04 7.0697090e+04 4.4447544e+03
+-2.5095336e+04 3.1521560e+04 4.9462267e+03
+-7.5251504e+03 8.8929866e+03 2.0751101e+03
+-1.8362166e+03 1.8179352e+03 8.6046045e+02
+-4.8708890e+02 2.9631414e+02 2.9677952e+02
+-1.2737511e+02 3.6154216e+01 0.0000000e+00
+0 0 0
+0 0 0
+-1.9620977e+00 0.0000000e+00 1.8912611e+00
+-2.6758937e+01 0.0000000e+00 2.5233347e+01
+-2.6937735e+02 0.0000000e+00 2.1799015e+02
+-2.0666848e+03 0.0000000e+00 1.1279296e+03
+-1.0365093e+04 0.0000000e+00 1.1245911e+03
+-2.5470956e+04 0.0000000e+00 3.1363667e+02
+-4.1718822e+04 0.0000000e+00 -1.9939034e+02
+-5.4068477e+04 0.0000000e+00 -1.7885154e+02
+-6.0878886e+04 0.0000000e+00 -5.9924024e+01
+-6.2907779e+04 0.0000000e+00 -1.3301571e+01
+-6.1644393e+04 0.0000000e+00 2.4949790e+01
+-5.7986621e+04 0.0000000e+00 6.5410394e+01
+-5.1805769e+04 0.0000000e+00 1.2109885e+02
+-4.2628536e+04 0.0000000e+00 2.7580981e+02
+-3.0853277e+04 0.0000000e+00 6.1657523e+02
+-1.8489812e+04 0.0000000e+00 1.0266106e+03
+-8.4584098e+03 0.0000000e+00 1.0443384e+03
+-2.6567139e+03 0.0000000e+00 3.9903822e+02
+-6.2372371e+02 0.0000000e+00 1.2535740e+02
+-1.2716888e+02 0.0000000e+00 3.6142667e+01
+-2.3197975e+01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.6519212e-01 -1.6525172e+00 3.5561161e-01
+-8.1459686e+00 -2.2355830e+01 4.0984735e+00
+-7.1976573e+01 -2.2266138e+02 2.9359079e+01
+-4.7976701e+02 -1.6817622e+03 1.2420352e+02
+-2.1137817e+03 -8.2735497e+03 1.4644234e+02
+-5.0592498e+03 -2.0307931e+04 4.2667333e+01
+-8.2520389e+03 -3.3384116e+04 -4.0000321e+01
+-1.0673650e+04 -4.3392409e+04 -4.2418023e+01
+-1.1984355e+04 -4.8914829e+04 -2.2120017e+01
+-1.2359965e+04 -5.0558898e+04 -1.1037043e+01
+-1.2118465e+04 -4.9534249e+04 -2.7167505e+00
+-1.1436666e+04 -4.6559226e+04 6.5544955e+00
+-1.0273234e+04 -4.1549739e+04 2.3758035e+01
+-8.5118102e+03 -3.4162445e+04 6.9477138e+01
+-6.2109471e+03 -2.4732788e+04 1.5993507e+02
+-3.7606817e+03 -1.4829421e+04 2.6022621e+02
+-1.7467589e+03 -6.7140956e+03 2.6267095e+02
+-5.6395080e+02 -1.9380827e+03 1.0799055e+02
+-1.3914704e+02 -4.1175450e+02 3.5168385e+01
+-3.0169678e+01 -7.0721942e+01 8.8911278e+00
+-5.4094649e+00 -8.8973823e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.3716181e+00 -5.7039615e+00 1.3167657e-02
+-2.9027554e+01 -7.7253193e+01 -1.6790040e+00
+-2.5730220e+02 -7.7874369e+02 -3.0275768e+01
+-1.7277878e+03 -6.0629569e+03 -2.1411367e+02
+-7.6974815e+03 -3.1499843e+04 -1.0062116e+01
+-1.8417023e+04 -7.7133987e+04 -6.1790501e+01
+-3.0074182e+04 -1.2677857e+05 -1.8764396e+02
+-3.8948181e+04 -1.6490376e+05 -1.5746163e+02
+-4.3757025e+04 -1.8591922e+05 -7.3915971e+01
+-4.5142889e+04 -1.9214398e+05 -1.9429536e+01
+-4.4272385e+04 -1.8823114e+05 2.3275340e+01
+-4.1786663e+04 -1.7690644e+05 7.2426166e+01
+-3.7542495e+04 -1.5787131e+05 1.6588502e+02
+-3.1130521e+04 -1.2987135e+05 3.9198709e+02
+-2.2760863e+04 -9.4182633e+04 8.2168694e+02
+-1.3815633e+04 -5.6631544e+04 1.3310537e+03
+-6.3867339e+03 -2.5549767e+04 1.4581224e+03
+-1.9649390e+03 -6.6762762e+03 6.3610446e+02
+-4.9989569e+02 -1.3600217e+03 2.4805081e+02
+-1.3197547e+02 -2.4855398e+02 7.0769427e+01
+-3.0197903e+01 -3.5305161e+01 0.0000000e+00
+0 0 0
+0 0 0
+-4.5461727e+00 -9.4107181e+00 -2.6186041e+00
+-5.7397396e+01 -1.2986826e+02 -3.8598182e+01
+-5.3649875e+02 -1.3677237e+03 -3.7483487e+02
+-3.9090995e+03 -1.1640223e+04 -2.2226294e+03
+-1.9401597e+04 -7.1742829e+04 -1.3014739e+03
+-4.6309822e+04 -1.7488067e+05 -6.8269137e+02
+-7.5503177e+04 -2.8681943e+05 -5.0711080e+02
+-9.8063454e+04 -3.7307916e+05 -2.3505128e+02
+-1.1065447e+05 -4.2064845e+05 9.7932005e+01
+-1.1463052e+05 -4.3471025e+05 3.8867691e+02
+-1.1271602e+05 -4.2586377e+05 6.7565515e+02
+-1.0645986e+05 -4.0027418e+05 1.0097964e+03
+-9.5635867e+04 -3.5731823e+05 1.4859243e+03
+-7.9433523e+04 -2.9425018e+05 2.2693361e+03
+-5.8450917e+04 -2.1394024e+05 3.4421291e+03
+-3.5918818e+04 -1.2939533e+05 4.7787308e+03
+-1.6723581e+04 -5.9129550e+04 5.5938798e+03
+-4.7115975e+03 -1.3510970e+04 2.8618448e+03
+-1.3777033e+03 -2.8754015e+03 1.3597954e+03
+-5.0022689e+02 -6.4085544e+02 4.1258261e+02
+-1.3935440e+02 -1.0903082e+02 0.0000000e+00
+0 0 0
+0 0 0
+-7.2730230e+00 -9.6686760e+00 -6.3732313e+00
+-1.0332942e+02 -1.3557631e+02 -9.5272810e+01
+-1.1807640e+03 -1.4968193e+03 -9.9986683e+02
+-1.1762851e+04 -1.4177322e+04 -7.5438381e+03
+-9.0743861e+04 -1.3033038e+05 -5.3015986e+03
+-2.1289130e+05 -3.1513835e+05 -3.5386139e+03
+-3.4445140e+05 -5.1655825e+05 -1.3835011e+03
+-4.5067927e+05 -6.7234731e+05 1.5816563e+03
+-5.1564564e+05 -7.5852478e+05 4.9270209e+03
+-5.4154080e+05 -7.8454763e+05 8.4788423e+03
+-5.3725488e+05 -7.6969101e+05 1.2429905e+04
+-5.0882522e+05 -7.2502703e+05 1.6969104e+04
+-4.5701089e+05 -6.4937215e+05 2.2143097e+04
+-3.8106840e+05 -5.3724766e+05 2.7234699e+04
+-2.8492217e+05 -3.9236762e+05 2.9710692e+04
+-1.8059393e+05 -2.3767764e+05 2.6553413e+04
+-8.5343254e+04 -1.1303650e+05 2.2759577e+04
+-1.5878052e+04 -2.3083138e+04 1.3475192e+04
+-4.7055358e+03 -5.6705803e+03 6.6824342e+03
+-1.9648957e+03 -1.4801453e+03 1.9428802e+03
+-5.6431130e+02 -2.6693394e+02 0.0000000e+00
+0 0 0
+0 0 0
+-1.2693560e+01 -7.8170380e+00 -6.7647361e+00
+-2.2621695e+02 -1.1863189e+02 -9.6954539e+01
+-3.7131411e+03 -1.6033178e+03 -8.9590423e+02
+-6.3933594e+04 -2.3457470e+04 -2.4757816e+03
+-1.0802495e+06 -3.8160454e+05 1.3438582e+04
+-2.7879457e+06 -9.6581799e+05 4.7277766e+04
+-4.6513618e+06 -1.5895016e+06 9.8689394e+04
+-6.0877593e+06 -2.0572564e+06 1.6318363e+05
+-6.8775298e+06 -2.2990979e+06 2.3516817e+05
+-7.1218042e+06 -2.3552013e+06 3.0962567e+05
+-7.0192021e+06 -2.2970692e+06 3.8111769e+05
+-6.6837639e+06 -2.1632110e+06 4.4266348e+05
+-6.1020968e+06 -1.9450465e+06 4.8543560e+05
+-5.2063224e+06 -1.6169769e+06 4.9561347e+05
+-3.9906658e+06 -1.1840176e+06 4.4895123e+05
+-2.5811937e+06 -7.1062625e+05 3.1612242e+05
+-1.2109497e+06 -3.0262713e+05 1.1299671e+05
+-8.4421964e+04 -2.7574613e+04 5.9210816e+04
+-1.6629188e+04 -4.9135522e+03 2.5582533e+04
+-6.3681145e+03 -1.3657667e+03 6.7213805e+03
+-1.7419375e+03 -2.6676142e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.0007666e+01 -6.5743402e+00 -3.4037048e+00
+-3.8660852e+02 -1.1373395e+02 -3.8866541e+01
+-6.8115793e+03 -1.8335892e+03 -1.6410078e+02
+-1.2073583e+05 -3.1258054e+04 3.6530448e+03
+-1.8966544e+06 -5.3771997e+05 4.7706507e+04
+-4.7377102e+06 -1.4060701e+06 1.4384677e+05
+-7.8602124e+06 -2.3266434e+06 2.9551495e+05
+-1.0329588e+07 -3.0079450e+06 4.8847515e+05
+-1.1774477e+07 -3.3511915e+06 7.0407983e+05
+-1.2324077e+07 -3.4218670e+06 9.2370782e+05
+-1.2269529e+07 -3.3304771e+06 1.1263294e+06
+-1.1784402e+07 -3.1351786e+06 1.2863458e+06
+-1.0854576e+07 -2.8209093e+06 1.3730148e+06
+-9.3815969e+06 -2.3455922e+06 1.3466891e+06
+-7.3512140e+06 -1.7122937e+06 1.1557008e+06
+-4.9365554e+06 -1.0128413e+06 7.5955474e+05
+-2.4828303e+06 -4.0680219e+05 2.3820461e+05
+-1.7468748e+05 -3.0724067e+04 1.2889332e+05
+-3.5311899e+04 -3.5470453e+03 5.6322070e+04
+-1.3656506e+04 -8.4834449e+02 1.4734290e+04
+-3.7177499e+03 -1.6514552e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7833930e+01 -5.5180680e+00 -7.7158870e-01
+-5.4965833e+02 -1.0254786e+02 -1.5076759e+00
+-9.8144469e+03 -1.7518421e+03 1.7448341e+02
+-1.7427521e+05 -3.0422070e+04 4.7790197e+03
+-2.5519459e+06 -5.5944978e+05 9.6424415e+04
+-6.3126890e+06 -1.5037682e+06 2.7414486e+05
+-1.0479549e+07 -2.5043101e+06 5.4890053e+05
+-1.3824179e+07 -3.2374974e+06 8.9884765e+05
+-1.5842469e+07 -3.5987162e+06 1.2893756e+06
+-1.6678774e+07 -3.6644936e+06 1.6825516e+06
+-1.6695920e+07 -3.5591821e+06 2.0358523e+06
+-1.6117036e+07 -3.3472059e+06 2.3005029e+06
+-1.4930927e+07 -3.0105686e+06 2.4214031e+06
+-1.3015064e+07 -2.5004885e+06 2.3335346e+06
+-1.0339909e+07 -1.8172443e+06 1.9621192e+06
+-7.0960266e+06 -1.0593680e+06 1.2636870e+06
+-3.6957710e+06 -4.0683797e+05 3.8906912e+05
+-2.6865946e+05 -2.7199426e+04 2.1007383e+05
+-5.6471560e+04 -2.2864429e+03 9.2298747e+04
+-2.2157873e+04 -4.0468276e+02 2.4212235e+04
+-6.0481288e+03 -7.2633478e+01 0.0000000e+00
+0 0 0
+0 0 0
+-3.5006634e+01 -4.1851705e+00 8.1893822e-01
+-6.9520564e+02 -7.9718588e+01 2.1867346e+01
+-1.2451609e+04 -1.3774155e+03 4.4751564e+02
+-2.2126373e+05 -2.3782944e+04 8.1740046e+03
+-3.0517730e+06 -4.7308787e+05 1.4783629e+05
+-7.5088045e+06 -1.2976410e+06 4.0420314e+05
+-1.2480527e+07 -2.1726900e+06 7.9142243e+05
+-1.6511169e+07 -2.8098647e+06 1.2816661e+06
+-1.8985401e+07 -3.1187817e+06 1.8262395e+06
+-2.0049627e+07 -3.1694886e+06 2.3692457e+06
+-2.0117238e+07 -3.0732553e+06 2.8486548e+06
+-1.9452631e+07 -2.8872610e+06 3.1960682e+06
+-1.8056186e+07 -2.5951025e+06 3.3372814e+06
+-1.5797214e+07 -2.1526469e+06 3.1884070e+06
+-1.2638532e+07 -1.5584830e+06 2.6577899e+06
+-8.7756487e+06 -8.9830130e+05 1.7000943e+06
+-4.6506303e+06 -3.3419465e+05 5.2227836e+05
+-3.4980611e+05 -2.0115763e+04 2.8272318e+05
+-7.5021014e+04 -1.3772730e+03 1.2452806e+05
+-2.9661781e+04 -1.6614769e+02 3.2723685e+04
+-8.1138987e+03 -2.5343928e+01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0719046e+01 -2.5910888e+00 1.8727592e+00
+-8.0994718e+02 -4.9670356e+01 4.0297592e+01
+-1.4521821e+04 -8.5824611e+02 7.3791225e+02
+-2.5822317e+05 -1.4730317e+04 1.3127249e+04
+-3.4058639e+06 -3.1265349e+05 1.8948428e+05
+-8.3484099e+06 -8.6855518e+05 5.0507593e+05
+-1.3887099e+07 -1.4595830e+06 9.7352949e+05
+-1.8404678e+07 -1.8884563e+06 1.5624515e+06
+-2.1200728e+07 -2.0944063e+06 2.2130528e+06
+-2.2416537e+07 -2.1259492e+06 2.8565072e+06
+-2.2498697e+07 -2.0592138e+06 3.4172863e+06
+-2.1744226e+07 -1.9331788e+06 3.8144021e+06
+-2.0170303e+07 -1.7365985e+06 3.9624468e+06
+-1.7651118e+07 -1.4391778e+06 3.7670898e+06
+-1.4152189e+07 -1.0393157e+06 3.1271836e+06
+-9.8729721e+06 -5.9474775e+05 1.9957193e+06
+-5.2647252e+06 -2.1705927e+05 6.1466233e+05
+-4.0793324e+05 -1.2121594e+04 3.3383969e+05
+-8.7887289e+04 -7.4583493e+02 1.4719493e+05
+-3.4820149e+04 -6.4615839e+01 3.8704180e+04
+-9.5334639e+03 -7.8530919e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.4391518e+01 -8.7402448e-01 2.5398128e+00
+-8.8343439e+02 -1.6775028e+01 5.3249662e+01
+-1.5845833e+04 -2.8954805e+02 9.6325855e+02
+-2.8187294e+05 -4.9556156e+03 1.7148324e+04
+-3.6166470e+06 -1.0898578e+05 2.1504008e+05
+-8.8447490e+06 -3.0458268e+05 5.6502987e+05
+-1.4718367e+07 -5.1277097e+05 1.0790406e+06
+-1.9523721e+07 -6.6362097e+05 1.7217951e+06
+-2.2506812e+07 -7.3575315e+05 2.4287712e+06
+-2.3803098e+07 -7.4644390e+05 3.1239044e+06
+-2.3878120e+07 -7.2265983e+05 3.7244681e+06
+-2.3050323e+07 -6.7818914e+05 4.1433776e+06
+-2.1351423e+07 -6.0905357e+05 4.2905297e+06
+-1.8664410e+07 -5.0451353e+05 4.0677147e+06
+-1.4961809e+07 -3.6390057e+05 3.3701155e+06
+-1.0447762e+07 -2.0753517e+05 2.1495018e+06
+-5.5748273e+06 -7.5087674e+04 6.6450663e+05
+-4.4106566e+05 -4.0397940e+03 3.6164186e+05
+-9.4812634e+04 -2.3890731e+02 1.5950588e+05
+-3.7546069e+04 -1.7496040e+01 4.1945964e+04
+-1.0281646e+04 -1.7657483e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.5657670e+01 8.7402448e-01 2.7735149e+00
+-9.0873566e+02 1.6775028e+01 5.7948992e+01
+-1.6301394e+04 2.8954805e+02 1.0469627e+03
+-2.9000943e+05 4.9556156e+03 1.8647749e+04
+-3.6864790e+06 1.0898578e+05 2.2345846e+05
+-9.0086563e+06 3.0458268e+05 5.8442271e+05
+-1.4992763e+07 5.1277097e+05 1.1126413e+06
+-1.9892898e+07 6.6362097e+05 1.7718526e+06
+-2.2936760e+07 7.3575315e+05 2.4957194e+06
+-2.4257408e+07 7.4644390e+05 3.2059180e+06
+-2.4326570e+07 7.2265982e+05 3.8175593e+06
+-2.3470205e+07 6.7818914e+05 4.2418769e+06
+-2.1725724e+07 6.0905357e+05 4.3876704e+06
+-1.8980197e+07 5.0451353e+05 4.1559823e+06
+-1.5209622e+07 3.6390057e+05 3.4412335e+06
+-1.0620345e+07 2.0753517e+05 2.1947344e+06
+-5.6647455e+06 7.5087674e+04 6.7966455e+05
+-4.5159901e+05 4.0397940e+03 3.7012159e+05
+-9.6912027e+04 2.3890731e+02 1.6325592e+05
+-3.8358921e+04 1.7496040e+01 4.2931978e+04
+-1.0504185e+04 1.7657483e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.4391518e+01 2.5910888e+00 2.5398128e+00
+-8.8343439e+02 4.9670356e+01 5.3249662e+01
+-1.5845833e+04 8.5824611e+02 9.6325855e+02
+-2.8187294e+05 1.4730317e+04 1.7148324e+04
+-3.6166470e+06 3.1265349e+05 2.1504008e+05
+-8.8447490e+06 8.6855518e+05 5.6502987e+05
+-1.4718367e+07 1.4595830e+06 1.0790406e+06
+-1.9523721e+07 1.8884563e+06 1.7217951e+06
+-2.2506812e+07 2.0944063e+06 2.4287712e+06
+-2.3803098e+07 2.1259492e+06 3.1239044e+06
+-2.3878120e+07 2.0592138e+06 3.7244681e+06
+-2.3050323e+07 1.9331788e+06 4.1433776e+06
+-2.1351423e+07 1.7365985e+06 4.2905297e+06
+-1.8664410e+07 1.4391778e+06 4.0677147e+06
+-1.4961809e+07 1.0393157e+06 3.3701155e+06
+-1.0447762e+07 5.9474775e+05 2.1495018e+06
+-5.5748273e+06 2.1705927e+05 6.6450663e+05
+-4.4106566e+05 1.2121594e+04 3.6164186e+05
+-9.4812634e+04 7.4583493e+02 1.5950588e+05
+-3.7546069e+04 6.4615839e+01 4.1945964e+04
+-1.0281646e+04 7.8530919e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.0719046e+01 4.1851705e+00 1.8727592e+00
+-8.0994718e+02 7.9718588e+01 4.0297592e+01
+-1.4521821e+04 1.3774155e+03 7.3791225e+02
+-2.5822317e+05 2.3782944e+04 1.3127249e+04
+-3.4058639e+06 4.7308787e+05 1.8948428e+05
+-8.3484099e+06 1.2976410e+06 5.0507593e+05
+-1.3887099e+07 2.1726900e+06 9.7352949e+05
+-1.8404678e+07 2.8098647e+06 1.5624515e+06
+-2.1200728e+07 3.1187817e+06 2.2130528e+06
+-2.2416537e+07 3.1694886e+06 2.8565072e+06
+-2.2498697e+07 3.0732553e+06 3.4172863e+06
+-2.1744226e+07 2.8872610e+06 3.8144021e+06
+-2.0170303e+07 2.5951025e+06 3.9624468e+06
+-1.7651118e+07 2.1526469e+06 3.7670898e+06
+-1.4152189e+07 1.5584830e+06 3.1271836e+06
+-9.8729721e+06 8.9830130e+05 1.9957193e+06
+-5.2647252e+06 3.3419465e+05 6.1466233e+05
+-4.0793324e+05 2.0115763e+04 3.3383969e+05
+-8.7887289e+04 1.3772730e+03 1.4719493e+05
+-3.4820149e+04 1.6614769e+02 3.8704180e+04
+-9.5334639e+03 2.5343928e+01 0.0000000e+00
+0 0 0
+0 0 0
+-3.5006634e+01 5.5180680e+00 8.1893822e-01
+-6.9520564e+02 1.0254786e+02 2.1867346e+01
+-1.2451609e+04 1.7518421e+03 4.4751564e+02
+-2.2126373e+05 3.0422070e+04 8.1740046e+03
+-3.0517730e+06 5.5944978e+05 1.4783629e+05
+-7.5088045e+06 1.5037682e+06 4.0420314e+05
+-1.2480527e+07 2.5043101e+06 7.9142243e+05
+-1.6511169e+07 3.2374974e+06 1.2816661e+06
+-1.8985401e+07 3.5987162e+06 1.8262395e+06
+-2.0049627e+07 3.6644936e+06 2.3692457e+06
+-2.0117238e+07 3.5591821e+06 2.8486548e+06
+-1.9452631e+07 3.3472059e+06 3.1960682e+06
+-1.8056186e+07 3.0105686e+06 3.3372814e+06
+-1.5797214e+07 2.5004885e+06 3.1884070e+06
+-1.2638532e+07 1.8172443e+06 2.6577899e+06
+-8.7756487e+06 1.0593680e+06 1.7000943e+06
+-4.6506303e+06 4.0683797e+05 5.2227836e+05
+-3.4980611e+05 2.7199426e+04 2.8272318e+05
+-7.5021014e+04 2.2864429e+03 1.2452806e+05
+-2.9661781e+04 4.0468276e+02 3.2723685e+04
+-8.1138987e+03 7.2633478e+01 0.0000000e+00
+0 0 0
+0 0 0
+-2.7833930e+01 6.5743402e+00 -7.7158870e-01
+-5.4965833e+02 1.1373395e+02 -1.5076758e+00
+-9.8144469e+03 1.8335892e+03 1.7448341e+02
+-1.7427521e+05 3.1258054e+04 4.7790197e+03
+-2.5519459e+06 5.3771997e+05 9.6424414e+04
+-6.3126890e+06 1.4060701e+06 2.7414486e+05
+-1.0479549e+07 2.3266434e+06 5.4890053e+05
+-1.3824179e+07 3.0079450e+06 8.9884765e+05
+-1.5842469e+07 3.3511915e+06 1.2893756e+06
+-1.6678774e+07 3.4218670e+06 1.6825516e+06
+-1.6695920e+07 3.3304771e+06 2.0358523e+06
+-1.6117036e+07 3.1351786e+06 2.3005029e+06
+-1.4930927e+07 2.8209093e+06 2.4214031e+06
+-1.3015064e+07 2.3455922e+06 2.3335346e+06
+-1.0339909e+07 1.7122937e+06 1.9621192e+06
+-7.0960266e+06 1.0128413e+06 1.2636870e+06
+-3.6957710e+06 4.0680219e+05 3.8906912e+05
+-2.6865946e+05 3.0724067e+04 2.1007383e+05
+-5.6471560e+04 3.5470453e+03 9.2298747e+04
+-2.2157873e+04 8.4834449e+02 2.4212235e+04
+-6.0481288e+03 1.6514552e+02 0.0000000e+00
+0 0 0
+0 0 0
+-2.0007666e+01 7.8170380e+00 -3.4037048e+00
+-3.8660852e+02 1.1863189e+02 -3.8866541e+01
+-6.8115793e+03 1.6033178e+03 -1.6410078e+02
+-1.2073583e+05 2.3457470e+04 3.6530448e+03
+-1.8966544e+06 3.8160454e+05 4.7706507e+04
+-4.7377102e+06 9.6581799e+05 1.4384677e+05
+-7.8602124e+06 1.5895016e+06 2.9551495e+05
+-1.0329588e+07 2.0572564e+06 4.8847515e+05
+-1.1774477e+07 2.2990979e+06 7.0407983e+05
+-1.2324077e+07 2.3552013e+06 9.2370782e+05
+-1.2269529e+07 2.2970692e+06 1.1263294e+06
+-1.1784402e+07 2.1632110e+06 1.2863458e+06
+-1.0854576e+07 1.9450465e+06 1.3730148e+06
+-9.3815969e+06 1.6169769e+06 1.3466891e+06
+-7.3512140e+06 1.1840176e+06 1.1557008e+06
+-4.9365554e+06 7.1062625e+05 7.5955474e+05
+-2.4828303e+06 3.0262713e+05 2.3820461e+05
+-1.7468748e+05 2.7574613e+04 1.2889332e+05
+-3.5311899e+04 4.9135522e+03 5.6322070e+04
+-1.3656506e+04 1.3657667e+03 1.4734290e+04
+-3.7177499e+03 2.6676142e+02 0.0000000e+00
+0 0 0
+0 0 0
+-1.2693560e+01 9.6686760e+00 -6.7647361e+00
+-2.2621695e+02 1.3557631e+02 -9.6954539e+01
+-3.7131411e+03 1.4968193e+03 -8.9590423e+02
+-6.3933594e+04 1.4177322e+04 -2.4757816e+03
+-1.0802495e+06 1.3033038e+05 1.3438582e+04
+-2.7879457e+06 3.1513835e+05 4.7277766e+04
+-4.6513618e+06 5.1655825e+05 9.8689394e+04
+-6.0877593e+06 6.7234731e+05 1.6318363e+05
+-6.8775298e+06 7.5852478e+05 2.3516817e+05
+-7.1218042e+06 7.8454763e+05 3.0962567e+05
+-7.0192021e+06 7.6969101e+05 3.8111769e+05
+-6.6837639e+06 7.2502703e+05 4.4266348e+05
+-6.1020968e+06 6.4937215e+05 4.8543560e+05
+-5.2063224e+06 5.3724766e+05 4.9561347e+05
+-3.9906658e+06 3.9236762e+05 4.4895123e+05
+-2.5811937e+06 2.3767764e+05 3.1612242e+05
+-1.2109497e+06 1.1303650e+05 1.1299671e+05
+-8.4421964e+04 2.3083138e+04 5.9210816e+04
+-1.6629188e+04 5.6705803e+03 2.5582533e+04
+-6.3681145e+03 1.4801453e+03 6.7213805e+03
+-1.7419375e+03 2.6693394e+02 0.0000000e+00
+0 0 0
+0 0 0
+-7.2730230e+00 9.4107181e+00 -6.3732313e+00
+-1.0332942e+02 1.2986826e+02 -9.5272810e+01
+-1.1807640e+03 1.3677237e+03 -9.9986683e+02
+-1.1762851e+04 1.1640223e+04 -7.5438381e+03
+-9.0743861e+04 7.1742829e+04 -5.3015986e+03
+-2.1289130e+05 1.7488067e+05 -3.5386139e+03
+-3.4445140e+05 2.8681943e+05 -1.3835011e+03
+-4.5067927e+05 3.7307916e+05 1.5816563e+03
+-5.1564564e+05 4.2064845e+05 4.9270209e+03
+-5.4154080e+05 4.3471025e+05 8.4788423e+03
+-5.3725488e+05 4.2586377e+05 1.2429905e+04
+-5.0882522e+05 4.0027418e+05 1.6969104e+04
+-4.5701089e+05 3.5731823e+05 2.2143097e+04
+-3.8106840e+05 2.9425018e+05 2.7234699e+04
+-2.8492217e+05 2.1394024e+05 2.9710692e+04
+-1.8059393e+05 1.2939533e+05 2.6553413e+04
+-8.5343254e+04 5.9129550e+04 2.2759577e+04
+-1.5878052e+04 1.3510970e+04 1.3475192e+04
+-4.7055358e+03 2.8754015e+03 6.6824342e+03
+-1.9648957e+03 6.4085544e+02 1.9428802e+03
+-5.6431130e+02 1.0903082e+02 0.0000000e+00
+0 0 0
+0 0 0
+-4.5461727e+00 5.7039615e+00 -2.6186041e+00
+-5.7397396e+01 7.7253193e+01 -3.8598182e+01
+-5.3649875e+02 7.7874369e+02 -3.7483487e+02
+-3.9090995e+03 6.0629569e+03 -2.2226294e+03
+-1.9401597e+04 3.1499843e+04 -1.3014739e+03
+-4.6309822e+04 7.7133987e+04 -6.8269137e+02
+-7.5503177e+04 1.2677857e+05 -5.0711080e+02
+-9.8063454e+04 1.6490376e+05 -2.3505128e+02
+-1.1065447e+05 1.8591922e+05 9.7932005e+01
+-1.1463052e+05 1.9214398e+05 3.8867691e+02
+-1.1271602e+05 1.8823114e+05 6.7565515e+02
+-1.0645986e+05 1.7690644e+05 1.0097964e+03
+-9.5635867e+04 1.5787131e+05 1.4859243e+03
+-7.9433523e+04 1.2987135e+05 2.2693361e+03
+-5.8450917e+04 9.4182633e+04 3.4421291e+03
+-3.5918818e+04 5.6631544e+04 4.7787308e+03
+-1.6723581e+04 2.5549767e+04 5.5938798e+03
+-4.7115975e+03 6.6762762e+03 2.8618448e+03
+-1.3777033e+03 1.3600217e+03 1.3597954e+03
+-5.0022689e+02 2.4855398e+02 4.1258261e+02
+-1.3935440e+02 3.5305161e+01 0.0000000e+00
+0 0 0
+0 0 0
+-2.3716181e+00 1.6525172e+00 1.3167657e-02
+-2.9027554e+01 2.2355830e+01 -1.6790040e+00
+-2.5730220e+02 2.2266138e+02 -3.0275768e+01
+-1.7277878e+03 1.6817622e+03 -2.1411367e+02
+-7.6974815e+03 8.2735497e+03 -1.0062116e+01
+-1.8417023e+04 2.0307931e+04 -6.1790501e+01
+-3.0074182e+04 3.3384116e+04 -1.8764396e+02
+-3.8948181e+04 4.3392409e+04 -1.5746163e+02
+-4.3757025e+04 4.8914829e+04 -7.3915971e+01
+-4.5142889e+04 5.0558898e+04 -1.9429536e+01
+-4.4272385e+04 4.9534249e+04 2.3275340e+01
+-4.1786663e+04 4.6559226e+04 7.2426166e+01
+-3.7542495e+04 4.1549739e+04 1.6588502e+02
+-3.1130521e+04 3.4162445e+04 3.9198709e+02
+-2.2760863e+04 2.4732788e+04 8.2168694e+02
+-1.3815633e+04 1.4829421e+04 1.3310537e+03
+-6.3867339e+03 6.7140956e+03 1.4581224e+03
+-1.9649390e+03 1.9380827e+03 6.3610446e+02
+-4.9989569e+02 4.1175450e+02 2.4805081e+02
+-1.3197547e+02 7.0721942e+01 7.0769427e+01
+-3.0197903e+01 8.8973823e+00 0.0000000e+00
+0 0 0
+0 0 0
+-6.6519212e-01 0.0000000e+00 3.5561161e-01
+-8.1459686e+00 0.0000000e+00 4.0984735e+00
+-7.1976573e+01 0.0000000e+00 2.9359079e+01
+-4.7976701e+02 0.0000000e+00 1.2420352e+02
+-2.1137817e+03 0.0000000e+00 1.4644234e+02
+-5.0592498e+03 0.0000000e+00 4.2667333e+01
+-8.2520389e+03 0.0000000e+00 -4.0000321e+01
+-1.0673650e+04 0.0000000e+00 -4.2418023e+01
+-1.1984355e+04 0.0000000e+00 -2.2120017e+01
+-1.2359965e+04 0.0000000e+00 -1.1037043e+01
+-1.2118465e+04 0.0000000e+00 -2.7167505e+00
+-1.1436666e+04 0.0000000e+00 6.5544955e+00
+-1.0273234e+04 0.0000000e+00 2.3758035e+01
+-8.5118102e+03 0.0000000e+00 6.9477138e+01
+-6.2109471e+03 0.0000000e+00 1.5993507e+02
+-3.7606817e+03 0.0000000e+00 2.6022621e+02
+-1.7467589e+03 0.0000000e+00 2.6267095e+02
+-5.6395080e+02 0.0000000e+00 1.0799055e+02
+-1.3914704e+02 0.0000000e+00 3.5168385e+01
+-3.0169678e+01 0.0000000e+00 8.8911278e+00
+-5.4094649e+00 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-2.0021268e-01 -4.9989224e-01 3.4912795e-02
+-2.2371476e+00 -6.1950171e+00 3.2110894e-01
+-1.7724571e+01 -5.5597495e+01 1.6666023e+00
+-1.0564171e+02 -3.7738641e+02 4.9277056e+00
+-4.2334444e+02 -1.6960094e+03 1.0499848e+01
+-9.8740703e+02 -4.0624525e+03 1.1095527e+00
+-1.5998570e+03 -6.6420207e+03 -9.0515760e+00
+-2.0604991e+03 -8.6130647e+03 -9.1378232e+00
+-2.3022982e+03 -9.6857347e+03 -5.4600732e+00
+-2.3660158e+03 -9.9965028e+03 -2.9060308e+00
+-2.3196400e+03 -9.8008530e+03 -8.7790524e-01
+-2.1980328e+03 -9.2411165e+03 1.6050034e+00
+-1.9889668e+03 -8.2894227e+03 6.7600148e+00
+-1.6631972e+03 -6.8611408e+03 1.9287736e+01
+-1.2259712e+03 -5.0074171e+03 4.1728896e+01
+-7.5064952e+02 -3.0328657e+03 6.4562445e+01
+-3.5357310e+02 -1.3924111e+03 6.3787696e+01
+-1.1691312e+02 -4.1089251e+02 2.7642533e+01
+-3.0102607e+01 -9.0552928e+01 9.1510247e+00
+-6.8316496e+00 -1.6287598e+01 2.1005949e+00
+-1.2058621e+00 -2.1030079e+00 0.0000000e+00
+0 0 0
+0 0 0
+-7.8623014e-01 -1.8583908e+00 -2.2688941e-01
+-8.9545711e+00 -2.3416912e+01 -3.0779771e+00
+-7.3030580e+01 -2.1688932e+02 -2.6057773e+01
+-4.5231472e+02 -1.5531575e+03 -1.2575974e+02
+-1.8906894e+03 -7.5483747e+03 -8.0186546e+01
+-4.4204492e+03 -1.8088736e+04 -5.0476872e+01
+-7.1684462e+03 -2.9548401e+04 -4.9832583e+01
+-9.2534001e+03 -3.8322381e+04 -3.5296897e+01
+-1.0366776e+04 -4.3097594e+04 -1.3686943e+01
+-1.0678177e+04 -4.4478507e+04 3.6060334e+00
+-1.0481907e+04 -4.3607548e+04 1.9822614e+01
+-9.9311528e+03 -4.1116831e+04 4.0027068e+01
+-8.9793596e+03 -3.6887545e+04 7.5014573e+01
+-7.5083624e+03 -3.0553161e+04 1.4487646e+02
+-5.5449296e+03 -2.2338279e+04 2.5980543e+02
+-3.4032697e+03 -1.3566816e+04 3.8139203e+02
+-1.5891089e+03 -6.2070623e+03 3.9841819e+02
+-4.9223303e+02 -1.6627630e+03 1.7758270e+02
+-1.2730093e+02 -3.5126926e+02 6.5704273e+01
+-3.2976122e+01 -6.5865944e+01 1.6283266e+01
+-6.8331375e+00 -9.1845073e+00 0.0000000e+00
+0 0 0
+0 0 0
+-1.8152880e+00 -3.3044080e+00 -1.2848675e+00
+-2.2252611e+01 -4.2962764e+01 -1.6883800e+01
+-2.0353199e+02 -4.2214839e+02 -1.4459148e+02
+-1.4804248e+03 -3.3613053e+03 -7.6511845e+02
+-7.4830092e+03 -1.9685092e+04 -5.4698883e+02
+-1.7516296e+04 -4.7134010e+04 -2.9524122e+02
+-2.8373684e+04 -7.6828390e+04 -1.4474560e+02
+-3.6925161e+04 -9.9608079e+04 2.6579708e+00
+-4.1886599e+04 -1.1202142e+05 1.5860636e+02
+-4.3640722e+04 -1.1562909e+05 3.1939218e+02
+-4.3101979e+04 -1.1340638e+05 5.0418628e+02
+-4.0814070e+04 -1.0698643e+05 7.2799800e+02
+-3.6736932e+04 -9.6059711e+04 1.0012288e+03
+-3.0631791e+04 -7.9666458e+04 1.3127942e+03
+-2.2711119e+04 -5.8352527e+04 1.5872433e+03
+-1.4070664e+04 -3.5553335e+04 1.7256085e+03
+-6.4754525e+03 -1.6433029e+04 1.7034461e+03
+-1.6282372e+03 -3.8741114e+03 8.3143415e+02
+-4.1259966e+02 -8.3567914e+02 3.5074040e+02
+-1.2720551e+02 -1.7873097e+02 9.0584038e+01
+-3.0094930e+01 -2.7859942e+01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1047840e+00 -3.7319645e+00 -2.7406825e+00
+-6.1034609e+01 -5.0158340e+01 -3.7839915e+01
+-7.5086849e+02 -5.2767913e+02 -3.6220472e+02
+-8.2090266e+03 -4.7573388e+03 -2.5199956e+03
+-6.9246028e+04 -4.1453885e+04 -2.2490356e+03
+-1.6050482e+05 -1.0012687e+05 -1.6426628e+03
+-2.5869876e+05 -1.6395444e+05 -2.6925624e+02
+-3.3935648e+05 -2.1284129e+05 1.6411637e+03
+-3.9033258e+05 -2.3946551e+05 3.7721998e+03
+-4.1203686e+05 -2.4756167e+05 6.2008417e+03
+-4.0996060e+05 -2.4366540e+05 9.1655802e+03
+-3.8825350e+05 -2.3113996e+05 1.2747381e+04
+-3.4800292e+05 -2.0897736e+05 1.6657060e+04
+-2.8944941e+05 -1.7429486e+05 1.9666470e+04
+-2.1575515e+05 -1.2703406e+05 1.9180984e+04
+-1.3544531e+05 -7.4925849e+04 1.3404873e+04
+-6.1553878e+04 -3.4195388e+04 7.3778556e+03
+-8.7381222e+03 -7.4936864e+03 3.8575011e+03
+-1.6193928e+03 -1.7249428e+03 1.6606217e+03
+-4.9055040e+02 -4.0335659e+02 4.1090198e+02
+-1.1665547e+02 -6.4613783e+01 0.0000000e+00
+0 0 0
+0 0 0
+-1.0043172e+01 -3.6932384e+00 -2.6891149e+00
+-1.8815875e+02 -5.7885698e+01 -3.3019950e+01
+-3.2540427e+03 -8.3722123e+02 -1.8257623e+02
+-5.8383339e+04 -1.3391628e+04 2.9014580e+03
+-9.3525253e+05 -1.9726238e+05 1.3712999e+04
+-2.4071464e+06 -5.0609578e+05 3.8882577e+04
+-4.0235876e+06 -8.3182250e+05 7.8976417e+04
+-5.2790394e+06 -1.0708341e+06 1.2824929e+05
+-5.9796678e+06 -1.1900061e+06 1.8092794e+05
+-6.2064439e+06 -1.2150507e+06 2.3305668e+05
+-6.1244650e+06 -1.1860013e+06 2.8065555e+05
+-5.8299013e+06 -1.1226555e+06 3.1830849e+05
+-5.3136404e+06 -1.0178416e+06 3.3871639e+05
+-4.5184465e+06 -8.5389048e+05 3.3043611e+05
+-3.4344104e+06 -6.2903666e+05 2.7618328e+05
+-2.1690104e+06 -3.7580449e+05 1.6487858e+05
+-9.5909051e+05 -1.5520561e+05 3.4029577e+04
+-6.0191936e+04 -1.4104156e+04 1.6410018e+04
+-6.3605294e+03 -1.7795437e+03 6.1959602e+03
+-1.5749312e+03 -3.9004095e+02 1.3894612e+03
+-3.5119922e+02 -6.5890891e+01 0.0000000e+00
+0 0 0
+0 0 0
+-1.8654881e+01 -3.9299495e+00 -1.1160742e+00
+-3.6776883e+02 -7.1594593e+01 -6.2468661e+00
+-6.5937167e+03 -1.2240901e+03 1.6275943e+02
+-1.1831584e+05 -2.1921386e+04 6.2725359e+03
+-1.8124673e+06 -3.2310456e+05 4.7927666e+04
+-4.4756082e+06 -8.5214042e+05 1.3187038e+05
+-7.4133664e+06 -1.4070791e+06 2.6028101e+05
+-9.7495061e+06 -1.8088730e+06 4.1823839e+05
+-1.1129673e+07 -2.0038869e+06 5.8731515e+05
+-1.1662551e+07 -2.0396906e+06 7.5042927e+05
+-1.1607165e+07 -1.9872427e+06 8.8930679e+05
+-1.1119673e+07 -1.8808492e+06 9.8277125e+05
+-1.0189996e+07 -1.7068504e+06 1.0072002e+06
+-8.7306929e+06 -1.4328837e+06 9.3528948e+05
+-6.7294944e+06 -1.0538990e+06 7.3843212e+05
+-4.3662231e+06 -6.2353268e+05 4.1582810e+05
+-2.0509508e+06 -2.4665999e+05 7.5402991e+04
+-1.2836157e+05 -2.0353600e+04 3.5326522e+04
+-1.3553637e+04 -1.6560781e+03 1.3444796e+04
+-3.3357900e+03 -2.6817131e+02 3.0022100e+03
+-7.3845636e+02 -4.2974435e+01 0.0000000e+00
+0 0 0
+0 0 0
+-2.7888551e+01 -3.8494085e+00 -2.5919705e-02
+-5.5438847e+02 -7.4051512e+01 7.1611407e+00
+-9.9559631e+03 -1.3084723e+03 2.3305951e+02
+-1.7760187e+05 -2.3367998e+04 5.0063316e+03
+-2.6007806e+06 -3.6069912e+05 9.1435654e+04
+-6.3455686e+06 -9.7992606e+05 2.5210089e+05
+-1.0496407e+07 -1.6289760e+06 4.9085613e+05
+-1.3832404e+07 -2.0926990e+06 7.8290748e+05
+-1.5846895e+07 -2.3104859e+06 1.0939326e+06
+-1.6670703e+07 -2.3429284e+06 1.3890995e+06
+-1.6648475e+07 -2.2770108e+06 1.6314229e+06
+-1.5993486e+07 -2.1539150e+06 1.7809391e+06
+-1.4697648e+07 -1.9559233e+06 1.7967330e+06
+-1.2646225e+07 -1.6421260e+06 1.6371366e+06
+-9.8192285e+06 -1.2039398e+06 1.2664966e+06
+-6.4510264e+06 -7.0335373e+05 7.0131740e+05
+-3.1013538e+06 -2.6718393e+05 1.2742407e+05
+-1.9819941e+05 -2.0590040e+04 5.7200464e+04
+-2.1379800e+04 -1.3610940e+03 2.1813720e+04
+-5.3446596e+03 -1.5097093e+02 4.8833062e+03
+-1.1874489e+03 -2.0348166e+01 0.0000000e+00
+0 0 0
+0 0 0
+-3.6248556e+01 -3.1622950e+00 5.5480823e-01
+-7.2108806e+02 -6.1488626e+01 1.3874336e+01
+-1.2936299e+04 -1.0841984e+03 2.7429068e+02
+-2.3025607e+05 -1.9067417e+04 4.9660545e+03
+-3.2261377e+06 -3.1610133e+05 1.3473305e+05
+-7.8408785e+06 -8.8059492e+05 3.6747591e+05
+-1.2975080e+07 -1.4727483e+06 7.0580049e+05
+-1.7122456e+07 -1.8915128e+06 1.1159006e+06
+-1.9646494e+07 -2.0827507e+06 1.5492585e+06
+-2.0693182e+07 -2.1053424e+06 1.9552278e+06
+-2.0678228e+07 -2.0416407e+06 2.2808470e+06
+-1.9866829e+07 -1.9301015e+06 2.4712309e+06
+-1.8260240e+07 -1.7534138e+06 2.4727749e+06
+-1.5728276e+07 -1.4720757e+06 2.2337867e+06
+-1.2246287e+07 -1.0762545e+06 1.7138566e+06
+-8.0865306e+06 -6.2211345e+05 9.4349825e+05
+-3.9179872e+06 -2.2872765e+05 1.7239889e+05
+-2.5811716e+05 -1.6380094e+04 7.6499997e+04
+-2.8105276e+04 -9.8233857e+02 2.9205504e+04
+-7.0792123e+03 -7.7492782e+01 6.5494565e+03
+-1.5770673e+03 -7.7231515e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.2815547e+01 -2.0321643e+00 9.6637023e-01
+-8.5153332e+02 -3.9478285e+01 2.0542164e+01
+-1.5267620e+04 -6.9163510e+02 3.7377786e+02
+-2.7157141e+05 -1.2033562e+04 6.6881637e+03
+-3.6711135e+06 -2.1273589e+05 1.6857233e+05
+-8.9113759e+06 -6.0291631e+05 4.5385971e+05
+-1.4755383e+07 -1.0126624e+06 8.6205755e+05
+-1.9485971e+07 -1.3005776e+06 1.3524153e+06
+-2.2367892e+07 -1.4296293e+06 1.8664589e+06
+-2.3556182e+07 -1.4421657e+06 2.3429278e+06
+-2.3519722e+07 -1.3965130e+06 2.7188249e+06
+-2.2566532e+07 -1.3196905e+06 2.9307199e+06
+-2.0712190e+07 -1.1992345e+06 2.9184278e+06
+-1.7823022e+07 -1.0068431e+06 2.6250993e+06
+-1.3875791e+07 -7.3477837e+05 2.0072254e+06
+-9.1688411e+06 -4.2174829e+05 1.1027293e+06
+-4.4412884e+06 -1.5177294e+05 2.0233777e+05
+-3.0155094e+05 -1.0250694e+04 8.9826072e+04
+-3.2772247e+04 -5.8978525e+02 3.4318476e+04
+-8.2431728e+03 -3.7425936e+01 7.7014331e+03
+-1.8371234e+03 -2.6305212e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6994017e+01 -6.9543792e-01 1.2657725e+00
+-9.3446804e+02 -1.3486190e+01 2.6307326e+01
+-1.6750679e+04 -2.3540351e+02 4.7492170e+02
+-2.9789405e+05 -4.0760078e+03 8.5384809e+03
+-3.9348244e+06 -7.4739899e+04 1.8871991e+05
+-9.5488281e+06 -2.1362957e+05 5.0351227e+05
+-1.5817433e+07 -3.5958666e+05 9.4950265e+05
+-2.0894661e+07 -4.6184150e+05 1.4817068e+06
+-2.3983692e+07 -5.0726703e+05 2.0362248e+06
+-2.5244199e+07 -5.1121972e+05 2.5463806e+06
+-2.5178066e+07 -4.9470214e+05 2.9445159e+06
+-2.4121876e+07 -4.6740759e+05 3.1637863e+06
+-2.2103937e+07 -4.2481534e+05 3.1418813e+06
+-1.8992976e+07 -3.5667882e+05 2.8202834e+06
+-1.4770041e+07 -2.6007779e+05 2.1538146e+06
+-9.7496171e+06 -1.4877700e+05 1.1826987e+06
+-4.7087642e+06 -5.2997476e+04 2.1786013e+05
+-3.2691436e+05 -3.4706117e+03 9.6928739e+04
+-3.5321180e+04 -1.9697139e+02 3.7044471e+04
+-8.8420090e+03 -1.1447513e+01 8.3144323e+03
+-1.9691970e+03 -6.4764623e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.8427077e+01 6.9543792e-01 1.3785316e+00
+-9.6290799e+02 1.3486190e+01 2.8578485e+01
+-1.7259393e+04 2.3540351e+02 5.1577018e+02
+-3.0692778e+05 4.0760078e+03 9.2821092e+03
+-4.0218992e+06 7.4739899e+04 1.9522242e+05
+-9.7599007e+06 2.1362957e+05 5.1920763e+05
+-1.6169390e+07 3.5958667e+05 9.7666067e+05
+-2.1361114e+07 4.6184150e+05 1.5211943e+06
+-2.4517349e+07 5.0726703e+05 2.0872491e+06
+-2.5799182e+07 5.1121972e+05 2.6065838e+06
+-2.5719699e+07 4.9470214e+05 3.0103083e+06
+-2.4625540e+07 4.6740759e+05 3.2308275e+06
+-2.2550053e+07 4.2481534e+05 3.2055262e+06
+-1.9363674e+07 3.5667882e+05 2.8756455e+06
+-1.5049624e+07 2.6007779e+05 2.1954919e+06
+-9.9279692e+06 1.4877700e+05 1.2055620e+06
+-4.7876403e+06 5.2997476e+04 2.2246196e+05
+-3.3514157e+05 3.4706117e+03 9.9063299e+04
+-3.6105846e+04 1.9697139e+02 3.7863175e+04
+-9.0168515e+03 1.1447513e+01 8.4982104e+03
+-2.0072701e+03 6.4764623e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6994017e+01 2.0321643e+00 1.2657725e+00
+-9.3446804e+02 3.9478285e+01 2.6307326e+01
+-1.6750679e+04 6.9163510e+02 4.7492170e+02
+-2.9789405e+05 1.2033562e+04 8.5384809e+03
+-3.9348244e+06 2.1273589e+05 1.8871991e+05
+-9.5488281e+06 6.0291631e+05 5.0351227e+05
+-1.5817433e+07 1.0126624e+06 9.4950265e+05
+-2.0894661e+07 1.3005776e+06 1.4817068e+06
+-2.3983692e+07 1.4296293e+06 2.0362248e+06
+-2.5244199e+07 1.4421657e+06 2.5463806e+06
+-2.5178066e+07 1.3965130e+06 2.9445159e+06
+-2.4121876e+07 1.3196905e+06 3.1637863e+06
+-2.2103937e+07 1.1992345e+06 3.1418813e+06
+-1.8992976e+07 1.0068431e+06 2.8202834e+06
+-1.4770041e+07 7.3477837e+05 2.1538146e+06
+-9.7496171e+06 4.2174829e+05 1.1826987e+06
+-4.7087642e+06 1.5177294e+05 2.1786013e+05
+-3.2691436e+05 1.0250694e+04 9.6928739e+04
+-3.5321180e+04 5.8978525e+02 3.7044471e+04
+-8.8420090e+03 3.7425936e+01 8.3144323e+03
+-1.9691970e+03 2.6305212e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.2815547e+01 3.1622950e+00 9.6637023e-01
+-8.5153332e+02 6.1488626e+01 2.0542164e+01
+-1.5267620e+04 1.0841984e+03 3.7377786e+02
+-2.7157141e+05 1.9067417e+04 6.6881637e+03
+-3.6711135e+06 3.1610133e+05 1.6857233e+05
+-8.9113759e+06 8.8059492e+05 4.5385971e+05
+-1.4755383e+07 1.4727483e+06 8.6205755e+05
+-1.9485971e+07 1.8915128e+06 1.3524153e+06
+-2.2367892e+07 2.0827507e+06 1.8664589e+06
+-2.3556182e+07 2.1053424e+06 2.3429278e+06
+-2.3519722e+07 2.0416407e+06 2.7188249e+06
+-2.2566532e+07 1.9301015e+06 2.9307199e+06
+-2.0712190e+07 1.7534138e+06 2.9184278e+06
+-1.7823022e+07 1.4720757e+06 2.6250993e+06
+-1.3875791e+07 1.0762545e+06 2.0072254e+06
+-9.1688411e+06 6.2211345e+05 1.1027293e+06
+-4.4412884e+06 2.2872765e+05 2.0233777e+05
+-3.0155094e+05 1.6380094e+04 8.9826072e+04
+-3.2772247e+04 9.8233857e+02 3.4318476e+04
+-8.2431728e+03 7.7492782e+01 7.7014331e+03
+-1.8371234e+03 7.7231515e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.6248556e+01 3.8494085e+00 5.5480823e-01
+-7.2108806e+02 7.4051512e+01 1.3874336e+01
+-1.2936299e+04 1.3084723e+03 2.7429068e+02
+-2.3025607e+05 2.3367998e+04 4.9660545e+03
+-3.2261377e+06 3.6069912e+05 1.3473305e+05
+-7.8408785e+06 9.7992606e+05 3.6747591e+05
+-1.2975080e+07 1.6289760e+06 7.0580049e+05
+-1.7122456e+07 2.0926990e+06 1.1159006e+06
+-1.9646494e+07 2.3104859e+06 1.5492585e+06
+-2.0693182e+07 2.3429284e+06 1.9552278e+06
+-2.0678228e+07 2.2770108e+06 2.2808470e+06
+-1.9866829e+07 2.1539150e+06 2.4712309e+06
+-1.8260240e+07 1.9559233e+06 2.4727749e+06
+-1.5728276e+07 1.6421260e+06 2.2337867e+06
+-1.2246287e+07 1.2039398e+06 1.7138566e+06
+-8.0865306e+06 7.0335373e+05 9.4349825e+05
+-3.9179872e+06 2.6718393e+05 1.7239889e+05
+-2.5811716e+05 2.0590040e+04 7.6499997e+04
+-2.8105276e+04 1.3610940e+03 2.9205504e+04
+-7.0792123e+03 1.5097093e+02 6.5494565e+03
+-1.5770673e+03 2.0348166e+01 0.0000000e+00
+0 0 0
+0 0 0
+-2.7888551e+01 3.9299495e+00 -2.5919705e-02
+-5.5438847e+02 7.1594593e+01 7.1611407e+00
+-9.9559631e+03 1.2240901e+03 2.3305951e+02
+-1.7760187e+05 2.1921386e+04 5.0063316e+03
+-2.6007806e+06 3.2310456e+05 9.1435654e+04
+-6.3455686e+06 8.5214042e+05 2.5210089e+05
+-1.0496407e+07 1.4070791e+06 4.9085614e+05
+-1.3832404e+07 1.8088730e+06 7.8290748e+05
+-1.5846895e+07 2.0038869e+06 1.0939326e+06
+-1.6670703e+07 2.0396906e+06 1.3890995e+06
+-1.6648475e+07 1.9872427e+06 1.6314229e+06
+-1.5993486e+07 1.8808492e+06 1.7809391e+06
+-1.4697648e+07 1.7068504e+06 1.7967330e+06
+-1.2646225e+07 1.4328837e+06 1.6371366e+06
+-9.8192285e+06 1.0538990e+06 1.2664966e+06
+-6.4510264e+06 6.2353268e+05 7.0131740e+05
+-3.1013538e+06 2.4665999e+05 1.2742407e+05
+-1.9819941e+05 2.0353600e+04 5.7200464e+04
+-2.1379800e+04 1.6560781e+03 2.1813720e+04
+-5.3446596e+03 2.6817131e+02 4.8833062e+03
+-1.1874489e+03 4.2974435e+01 0.0000000e+00
+0 0 0
+0 0 0
+-1.8654881e+01 3.6932384e+00 -1.1160742e+00
+-3.6776883e+02 5.7885698e+01 -6.2468661e+00
+-6.5937167e+03 8.3722123e+02 1.6275943e+02
+-1.1831584e+05 1.3391628e+04 6.2725359e+03
+-1.8124673e+06 1.9726238e+05 4.7927666e+04
+-4.4756082e+06 5.0609578e+05 1.3187038e+05
+-7.4133664e+06 8.3182250e+05 2.6028101e+05
+-9.7495061e+06 1.0708341e+06 4.1823839e+05
+-1.1129673e+07 1.1900061e+06 5.8731515e+05
+-1.1662551e+07 1.2150507e+06 7.5042927e+05
+-1.1607165e+07 1.1860013e+06 8.8930679e+05
+-1.1119673e+07 1.1226555e+06 9.8277125e+05
+-1.0189996e+07 1.0178416e+06 1.0072002e+06
+-8.7306929e+06 8.5389048e+05 9.3528948e+05
+-6.7294944e+06 6.2903666e+05 7.3843212e+05
+-4.3662231e+06 3.7580449e+05 4.1582810e+05
+-2.0509508e+06 1.5520561e+05 7.5402991e+04
+-1.2836157e+05 1.4104156e+04 3.5326522e+04
+-1.3553637e+04 1.7795437e+03 1.3444796e+04
+-3.3357900e+03 3.9004095e+02 3.0022100e+03
+-7.3845636e+02 6.5890891e+01 0.0000000e+00
+0 0 0
+0 0 0
+-1.0043172e+01 3.7319645e+00 -2.6891149e+00
+-1.8815875e+02 5.0158340e+01 -3.3019950e+01
+-3.2540427e+03 5.2767913e+02 -1.8257623e+02
+-5.8383339e+04 4.7573388e+03 2.9014580e+03
+-9.3525253e+05 4.1453885e+04 1.3712999e+04
+-2.4071464e+06 1.0012687e+05 3.8882577e+04
+-4.0235876e+06 1.6395444e+05 7.8976416e+04
+-5.2790394e+06 2.1284129e+05 1.2824929e+05
+-5.9796678e+06 2.3946551e+05 1.8092794e+05
+-6.2064439e+06 2.4756167e+05 2.3305668e+05
+-6.1244650e+06 2.4366540e+05 2.8065555e+05
+-5.8299013e+06 2.3113996e+05 3.1830849e+05
+-5.3136404e+06 2.0897736e+05 3.3871638e+05
+-4.5184465e+06 1.7429486e+05 3.3043611e+05
+-3.4344104e+06 1.2703406e+05 2.7618328e+05
+-2.1690104e+06 7.4925849e+04 1.6487858e+05
+-9.5909051e+05 3.4195388e+04 3.4029577e+04
+-6.0191936e+04 7.4936864e+03 1.6410018e+04
+-6.3605294e+03 1.7249428e+03 6.1959602e+03
+-1.5749312e+03 4.0335659e+02 1.3894612e+03
+-3.5119922e+02 6.4613783e+01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1047840e+00 3.3044080e+00 -2.7406825e+00
+-6.1034609e+01 4.2962764e+01 -3.7839915e+01
+-7.5086849e+02 4.2214839e+02 -3.6220472e+02
+-8.2090266e+03 3.3613053e+03 -2.5199956e+03
+-6.9246028e+04 1.9685092e+04 -2.2490356e+03
+-1.6050482e+05 4.7134010e+04 -1.6426628e+03
+-2.5869876e+05 7.6828390e+04 -2.6925624e+02
+-3.3935648e+05 9.9608079e+04 1.6411637e+03
+-3.9033258e+05 1.1202142e+05 3.7721998e+03
+-4.1203686e+05 1.1562909e+05 6.2008417e+03
+-4.0996060e+05 1.1340638e+05 9.1655802e+03
+-3.8825350e+05 1.0698643e+05 1.2747381e+04
+-3.4800292e+05 9.6059711e+04 1.6657060e+04
+-2.8944941e+05 7.9666458e+04 1.9666470e+04
+-2.1575515e+05 5.8352527e+04 1.9180984e+04
+-1.3544531e+05 3.5553335e+04 1.3404873e+04
+-6.1553878e+04 1.6433029e+04 7.3778556e+03
+-8.7381222e+03 3.8741114e+03 3.8575011e+03
+-1.6193928e+03 8.3567914e+02 1.6606217e+03
+-4.9055040e+02 1.7873097e+02 4.1090198e+02
+-1.1665547e+02 2.7859942e+01 0.0000000e+00
+0 0 0
+0 0 0
+-1.8152880e+00 1.8583908e+00 -1.2848675e+00
+-2.2252611e+01 2.3416912e+01 -1.6883800e+01
+-2.0353199e+02 2.1688932e+02 -1.4459148e+02
+-1.4804248e+03 1.5531575e+03 -7.6511845e+02
+-7.4830092e+03 7.5483747e+03 -5.4698883e+02
+-1.7516296e+04 1.8088736e+04 -2.9524122e+02
+-2.8373684e+04 2.9548401e+04 -1.4474560e+02
+-3.6925161e+04 3.8322381e+04 2.6579709e+00
+-4.1886599e+04 4.3097594e+04 1.5860636e+02
+-4.3640722e+04 4.4478507e+04 3.1939218e+02
+-4.3101979e+04 4.3607548e+04 5.0418628e+02
+-4.0814070e+04 4.1116831e+04 7.2799800e+02
+-3.6736932e+04 3.6887545e+04 1.0012288e+03
+-3.0631791e+04 3.0553161e+04 1.3127942e+03
+-2.2711119e+04 2.2338279e+04 1.5872433e+03
+-1.4070664e+04 1.3566816e+04 1.7256085e+03
+-6.4754525e+03 6.2070623e+03 1.7034461e+03
+-1.6282372e+03 1.6627630e+03 8.3143415e+02
+-4.1259966e+02 3.5126926e+02 3.5074040e+02
+-1.2720551e+02 6.5865944e+01 9.0584038e+01
+-3.0094930e+01 9.1845073e+00 0.0000000e+00
+0 0 0
+0 0 0
+-7.8623014e-01 4.9989224e-01 -2.2688941e-01
+-8.9545711e+00 6.1950171e+00 -3.0779771e+00
+-7.3030580e+01 5.5597495e+01 -2.6057773e+01
+-4.5231472e+02 3.7738641e+02 -1.2575974e+02
+-1.8906894e+03 1.6960094e+03 -8.0186546e+01
+-4.4204492e+03 4.0624525e+03 -5.0476872e+01
+-7.1684462e+03 6.6420207e+03 -4.9832583e+01
+-9.2534001e+03 8.6130647e+03 -3.5296897e+01
+-1.0366776e+04 9.6857347e+03 -1.3686943e+01
+-1.0678177e+04 9.9965028e+03 3.6060334e+00
+-1.0481907e+04 9.8008530e+03 1.9822614e+01
+-9.9311528e+03 9.2411165e+03 4.0027068e+01
+-8.9793596e+03 8.2894227e+03 7.5014573e+01
+-7.5083624e+03 6.8611408e+03 1.4487646e+02
+-5.5449296e+03 5.0074171e+03 2.5980543e+02
+-3.4032697e+03 3.0328657e+03 3.8139203e+02
+-1.5891089e+03 1.3924111e+03 3.9841819e+02
+-4.9223303e+02 4.1089251e+02 1.7758270e+02
+-1.2730093e+02 9.0552928e+01 6.5704273e+01
+-3.2976122e+01 1.6287598e+01 1.6283266e+01
+-6.8331375e+00 2.1030079e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.0021268e-01 0.0000000e+00 3.4912795e-02
+-2.2371476e+00 0.0000000e+00 3.2110894e-01
+-1.7724571e+01 0.0000000e+00 1.6666023e+00
+-1.0564171e+02 0.0000000e+00 4.9277056e+00
+-4.2334444e+02 0.0000000e+00 1.0499848e+01
+-9.8740703e+02 0.0000000e+00 1.1095527e+00
+-1.5998570e+03 0.0000000e+00 -9.0515760e+00
+-2.0604991e+03 0.0000000e+00 -9.1378232e+00
+-2.3022982e+03 0.0000000e+00 -5.4600732e+00
+-2.3660158e+03 0.0000000e+00 -2.9060308e+00
+-2.3196400e+03 0.0000000e+00 -8.7790524e-01
+-2.1980328e+03 0.0000000e+00 1.6050034e+00
+-1.9889668e+03 0.0000000e+00 6.7600148e+00
+-1.6631972e+03 0.0000000e+00 1.9287736e+01
+-1.2259712e+03 0.0000000e+00 4.1728896e+01
+-7.5064952e+02 0.0000000e+00 6.4562445e+01
+-3.5357310e+02 0.0000000e+00 6.3787696e+01
+-1.1691312e+02 0.0000000e+00 2.7642533e+01
+-3.0102607e+01 0.0000000e+00 9.1510247e+00
+-6.8316496e+00 0.0000000e+00 2.1005949e+00
+-1.2058621e+00 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-5.6914129e-02 -1.3623038e-01 -7.0681686e-03
+-5.9009526e-01 -1.5664195e+00 -8.7700965e-02
+-4.2824183e+00 -1.2875552e+01 -6.5430227e-01
+-2.3413935e+01 -8.0173901e+01 -2.7081730e+00
+-8.7550613e+01 -3.3653077e+02 -1.9712255e+00
+-1.9907395e+02 -7.8844867e+02 -1.8556272e+00
+-3.1973052e+02 -1.2797524e+03 -2.2297510e+00
+-4.0959816e+02 -1.6514068e+03 -1.7239066e+00
+-4.5535189e+02 -1.8478177e+03 -8.5251948e-01
+-4.6634584e+02 -1.9003782e+03 -1.4424939e-01
+-4.5731195e+02 -1.8630035e+03 5.3124811e-01
+-4.3534061e+02 -1.7635704e+03 1.4094931e+00
+-3.9718234e+02 -1.5933885e+03 3.0135511e+00
+-3.3560899e+02 -1.3308152e+03 6.2405169e+00
+-2.5021801e+02 -9.8079789e+02 1.1285225e+01
+-1.5493075e+02 -6.0022995e+02 1.5796410e+01
+-7.3646647e+01 -2.7902588e+02 1.4895839e+01
+-2.4544427e+01 -8.4143795e+01 6.6709366e+00
+-6.4499790e+00 -1.9198611e+01 2.2169195e+00
+-1.4935818e+00 -3.5946489e+00 4.7350068e-01
+-2.5809792e-01 -4.7426349e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.6051581e-01 -5.3943793e-01 -1.2250678e-01
+-2.8405487e+00 -6.3814374e+00 -1.4215114e+00
+-2.2153073e+01 -5.4933246e+01 -1.0241324e+01
+-1.3248630e+02 -3.6693678e+02 -4.3306868e+01
+-5.4206833e+02 -1.6922658e+03 -3.6192949e+01
+-1.2418800e+03 -3.9819657e+03 -2.1245112e+01
+-2.0006921e+03 -6.4567265e+03 -1.2025083e+01
+-2.5844014e+03 -8.3283240e+03 -4.1066417e+00
+-2.9051521e+03 -9.3167829e+03 3.2349822e+00
+-3.0045055e+03 -9.5809388e+03 1.0123648e+01
+-2.9598782e+03 -9.3931941e+03 1.8285819e+01
+-2.8121607e+03 -8.8933308e+03 2.9054070e+01
+-2.5499183e+03 -8.0377768e+03 4.4001124e+01
+-2.1419752e+03 -6.7180092e+03 6.4808009e+01
+-1.5932111e+03 -4.9572005e+03 8.9492061e+01
+-9.8472005e+02 -3.0375513e+03 1.0826378e+02
+-4.5690571e+02 -1.4047558e+03 1.0179056e+02
+-1.3413618e+02 -3.8598305e+02 4.5532968e+01
+-3.2769913e+01 -8.4292333e+01 1.6095670e+01
+-7.9227749e+00 -1.6142641e+01 3.5903156e+00
+-1.4924421e+00 -2.2246433e+00 0.0000000e+00
+0 0 0
+0 0 0
+-8.3231129e-01 -1.0305353e+00 -4.9187934e-01
+-1.0464483e+01 -1.2712532e+01 -5.9489120e+00
+-1.0045001e+02 -1.1756549e+02 -4.6398647e+01
+-7.8282048e+02 -8.8466342e+02 -2.2627630e+02
+-4.2417152e+03 -4.9727933e+03 -1.8704273e+02
+-9.8208011e+03 -1.1769540e+04 -9.4963458e+01
+-1.5860505e+04 -1.9059828e+04 -5.0415120e+00
+-2.0776055e+04 -2.4559529e+04 7.7058134e+01
+-2.3821882e+04 -2.7456565e+04 1.5212309e+02
+-2.5070819e+04 -2.8236878e+04 2.3815933e+02
+-2.4906750e+04 -2.7707683e+04 3.5741947e+02
+-2.3596372e+04 -2.6269371e+04 5.1576167e+02
+-2.1176180e+04 -2.3775763e+04 6.9299589e+02
+-1.7606078e+04 -1.9877895e+04 8.2716880e+02
+-1.3044611e+04 -1.4618704e+04 8.2216400e+02
+-8.0596436e+03 -8.8818717e+03 6.5546416e+02
+-3.6012565e+03 -4.1002685e+03 4.7678078e+02
+-7.4719328e+02 -1.0097700e+03 2.1952390e+02
+-1.4058852e+02 -2.2083851e+02 8.4058939e+01
+-3.2658726e+01 -4.5805034e+01 1.9174548e+01
+-6.4307724e+00 -6.7142532e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.8506985e+00 -1.3133276e+00 -9.7129328e-01
+-4.5116878e+01 -1.7152751e+01 -1.2448805e+01
+-5.9693257e+02 -1.7485579e+02 -1.0909442e+02
+-6.9743922e+03 -1.5162398e+03 -7.1215246e+02
+-6.1668483e+04 -1.2485409e+04 -7.7708156e+02
+-1.4188712e+05 -3.0801491e+04 -3.6282658e+02
+-2.2828157e+05 -5.0501455e+04 6.6161278e+02
+-3.0010994e+05 -6.4982082e+04 1.8376238e+03
+-3.4655100e+05 -7.2353876e+04 2.9533589e+03
+-3.6722464e+05 -7.4411722e+04 4.3159835e+03
+-3.6621228e+05 -7.3455750e+04 6.3157252e+03
+-3.4687849e+05 -7.0368197e+04 9.0395475e+03
+-3.1042534e+05 -6.4361023e+04 1.2047228e+04
+-2.5749193e+05 -5.3757133e+04 1.3968993e+04
+-1.9107731e+05 -3.7893944e+04 1.2566388e+04
+-1.1882323e+05 -2.0052180e+04 7.1146222e+03
+-5.2808580e+04 -7.8991913e+03 2.1682467e+03
+-6.3618648e+03 -2.2212014e+03 1.0034207e+03
+-7.3747381e+02 -4.8405620e+02 3.8471940e+02
+-1.3263867e+02 -1.0295141e+02 8.3954052e+01
+-2.4363389e+01 -1.5052282e+01 0.0000000e+00
+0 0 0
+0 0 0
+-8.8625744e+00 -1.7431987e+00 -7.5072612e-01
+-1.7144669e+02 -2.9090560e+01 -5.5249849e+00
+-3.0504036e+03 -4.5905050e+02 7.5030659e+01
+-5.5804200e+04 -7.9511162e+03 3.9307685e+03
+-8.5281407e+05 -1.0361039e+05 1.2617285e+04
+-2.1896201e+06 -2.6781002e+05 3.2099477e+04
+-3.6656057e+06 -4.3834086e+05 6.1956965e+04
+-4.8184188e+06 -5.5984981e+05 9.6204134e+04
+-5.4685400e+06 -6.1748374e+05 1.3020616e+05
+-5.6850817e+06 -6.2783303e+05 1.6226533e+05
+-5.6132089e+06 -6.1336809e+05 1.9092154e+05
+-5.3382888e+06 -5.8405785e+05 2.1299865e+05
+-4.8535903e+06 -5.3443804e+05 2.2302558e+05
+-4.1082389e+06 -4.5267900e+05 2.1173976e+05
+-3.0919238e+06 -3.3536389e+05 1.6672314e+05
+-1.9091515e+06 -1.9932847e+05 8.6140624e+04
+-8.0830093e+05 -8.0262991e+04 7.7148392e+03
+-5.1059823e+04 -7.7215130e+03 4.0830379e+03
+-3.4698976e+03 -6.9016464e+02 1.3985145e+03
+-4.4584603e+02 -1.1114050e+02 2.7761850e+02
+-7.2549073e+01 -1.6083929e+01 0.0000000e+00
+0 0 0
+0 0 0
+-1.7992247e+01 -2.4096451e+00 3.8124330e-03
+-3.5855785e+02 -4.6350648e+01 8.0529155e+00
+-6.4857391e+03 -8.3407565e+02 2.7510039e+02
+-1.1709485e+05 -1.5492196e+04 6.5951864e+03
+-1.7597424e+06 -1.9401484e+05 4.4274757e+04
+-4.3062531e+06 -5.0913346e+05 1.1624308e+05
+-7.1210315e+06 -8.3515757e+05 2.2072494e+05
+-9.3653623e+06 -1.0653261e+06 3.4205735e+05
+-1.0696687e+07 -1.1725514e+06 4.6413927e+05
+-1.1210916e+07 -1.1899619e+06 5.7463308e+05
+-1.1145775e+07 -1.1614410e+06 6.6131546e+05
+-1.0646079e+07 -1.1061926e+06 7.0985593e+05
+-9.7057346e+06 -1.0132833e+06 7.0443964e+05
+-8.2469497e+06 -8.5953186e+05 6.2754936e+05
+-6.2638192e+06 -6.3783985e+05 4.6435012e+05
+-3.9523764e+06 -3.7889448e+05 2.3006938e+05
+-1.7718094e+06 -1.4972311e+05 2.0388090e+04
+-1.1049694e+05 -1.4018983e+04 8.8209265e+03
+-7.5284662e+03 -8.9617244e+02 3.0017631e+03
+-9.4324291e+02 -9.4086332e+01 5.9216183e+02
+-1.5073477e+02 -1.1643688e+01 0.0000000e+00
+0 0 0
+0 0 0
+-2.7945620e+01 -2.7125547e+00 3.5997828e-01
+-5.5754466e+02 -5.3873230e+01 1.1038753e+01
+-1.0045788e+04 -9.7972768e+02 2.4651545e+02
+-1.7973610e+05 -1.7900164e+04 4.7887184e+03
+-2.6422920e+06 -2.2973666e+05 8.2021932e+04
+-6.3743845e+06 -6.2028114e+05 2.2198559e+05
+-1.0506138e+07 -1.0236418e+06 4.2020099e+05
+-1.3823108e+07 -1.3037440e+06 6.4932287e+05
+-1.5820127e+07 -1.4286880e+06 8.7869119e+05
+-1.6620534e+07 -1.4433420e+06 1.0819022e+06
+-1.6556011e+07 -1.4051080e+06 1.2331049e+06
+-1.5833309e+07 -1.3385087e+06 1.3052433e+06
+-1.4449424e+07 -1.2285430e+06 1.2722796e+06
+-1.2299762e+07 -1.0440136e+06 1.1102978e+06
+-9.3783306e+06 -7.7396487e+05 8.0552491e+05
+-5.9641136e+06 -4.5563133e+05 3.9534894e+05
+-2.7206382e+06 -1.7422992e+05 3.9140180e+04
+-1.7158457e+05 -1.5861242e+04 1.4367590e+04
+-1.1815281e+04 -9.2196289e+02 4.8288617e+03
+-1.4928467e+03 -7.0266404e+01 9.5322885e+02
+-2.3922130e+02 -6.6424210e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.6969611e+01 -2.3852157e+00 3.9371639e-01
+-7.3619554e+02 -4.7326098e+01 8.9540651e+00
+-1.3223262e+04 -8.5084432e+02 1.6703339e+02
+-2.3571209e+05 -1.5225020e+04 2.9479017e+03
+-3.3633000e+06 -2.0689460e+05 1.1726805e+05
+-8.0888212e+06 -5.7470825e+05 3.1963791e+05
+-1.3325795e+07 -9.5430663e+05 6.0101847e+05
+-1.7534307e+07 -1.2139363e+06 9.2306267e+05
+-2.0069606e+07 -1.3247674e+06 1.2422542e+06
+-2.1082183e+07 -1.3324500e+06 1.5203631e+06
+-2.0989994e+07 -1.2938170e+06 1.7208389e+06
+-2.0059233e+07 -1.2326890e+06 1.8074229e+06
+-1.8294970e+07 -1.1336794e+06 1.7472895e+06
+-1.5572221e+07 -9.6513663e+05 1.5123581e+06
+-1.1882674e+07 -7.1471819e+05 1.0894985e+06
+-7.5688985e+06 -4.1699680e+05 5.3323178e+05
+-3.4600048e+06 -1.5452204e+05 5.5541507e+04
+-2.2418633e+05 -1.3447961e+04 1.9197397e+04
+-1.5480016e+04 -7.6060988e+02 6.4107832e+03
+-1.9571427e+03 -4.8089522e+01 1.2665367e+03
+-3.1378484e+02 -3.3881632e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.4007699e+01 -1.5837497e+00 3.9068589e-01
+-8.7519337e+02 -3.1229325e+01 7.9539606e+00
+-1.5695218e+04 -5.5553525e+02 1.4024321e+02
+-2.7935875e+05 -9.8081331e+03 2.5106969e+03
+-3.8779149e+06 -1.4099605e+05 1.4341359e+05
+-9.3324864e+06 -4.0001271e+05 3.8982854e+05
+-1.5380264e+07 -6.6728166e+05 7.2768494e+05
+-2.0234289e+07 -8.4817764e+05 1.1102441e+06
+-2.3144787e+07 -9.2294867e+05 1.4853198e+06
+-2.4285493e+07 -9.2541913e+05 1.8076001e+06
+-2.4143849e+07 -8.9698466e+05 2.0348956e+06
+-2.3036228e+07 -8.5477998e+05 2.1266820e+06
+-2.0979128e+07 -7.8734636e+05 2.0472868e+06
+-1.7836014e+07 -6.7124987e+05 1.7663919e+06
+-1.3597241e+07 -4.9676013e+05 1.2698830e+06
+-8.6489444e+06 -2.8800943e+05 6.2099898e+05
+-3.9364010e+06 -1.0436016e+05 6.5949657e+04
+-2.6275989e+05 -8.7203165e+03 2.2430959e+04
+-1.8086293e+04 -4.8982502e+02 7.4742207e+03
+-2.2657957e+03 -2.8440730e+01 1.4771948e+03
+-3.6168411e+02 -1.6327065e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.8448289e+01 -5.4924686e-01 4.1976904e-01
+-9.6288094e+02 -1.0788869e+01 8.3922121e+00
+-1.7255931e+04 -1.9090313e+02 1.4901289e+02
+-3.0695714e+05 -3.3504108e+03 2.7543753e+03
+-4.1815440e+06 -4.9786850e+04 1.5826476e+05
+-1.0076307e+07 -1.4279178e+05 4.2852240e+05
+-1.6613074e+07 -2.3876285e+05 7.9564502e+05
+-2.1851693e+07 -3.0338694e+05 1.2078862e+06
+-2.4977693e+07 -3.2966605e+05 1.6086044e+06
+-2.6180461e+07 -3.3004478e+05 1.9494919e+06
+-2.5992473e+07 -3.1963079e+05 2.1865446e+06
+-2.4763789e+07 -3.0463905e+05 2.2783170e+06
+-2.2520877e+07 -2.8084219e+05 2.1887531e+06
+-1.9122492e+07 -2.3961827e+05 1.8866368e+06
+-1.4559098e+07 -1.7728348e+05 1.3562177e+06
+-9.2421581e+06 -1.0246811e+05 6.6321736e+05
+-4.1842177e+06 -3.6719709e+04 7.1030327e+04
+-2.8569390e+05 -2.9999824e+03 2.4089536e+04
+-1.9574785e+04 -1.6832331e+02 8.0216391e+03
+-2.4247844e+03 -9.5073570e+00 1.5854810e+03
+-3.8484620e+02 -5.0246355e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9963493e+01 5.4924686e-01 4.3792182e-01
+-9.9280790e+02 1.0788869e+01 8.7600994e+00
+-1.7788866e+04 1.9090313e+02 1.5642718e+02
+-3.1638780e+05 3.3504108e+03 2.9156245e+03
+-4.2814607e+06 4.9786850e+04 1.6290345e+05
+-1.0322970e+07 1.4279178e+05 4.4038930e+05
+-1.7022610e+07 2.3876285e+05 8.1608356e+05
+-2.2388411e+07 3.0338694e+05 1.2366063e+06
+-2.5584095e+07 3.2966605e+05 1.6440201e+06
+-2.6804562e+07 3.3004478e+05 1.9893106e+06
+-2.6597868e+07 3.1963079e+05 2.2282181e+06
+-2.5325944e+07 3.0463905e+05 2.3193447e+06
+-2.3019181e+07 2.8084219e+05 2.2267881e+06
+-1.9535248e+07 2.3961827e+05 1.9191258e+06
+-1.4864898e+07 1.7728348e+05 1.3798325e+06
+-9.4279134e+06 1.0246811e+05 6.7484045e+05
+-4.2587157e+06 3.6719709e+04 7.2476420e+04
+-2.9323854e+05 2.9999824e+03 2.4573427e+04
+-2.0050508e+04 1.6832331e+02 8.1814429e+03
+-2.4714589e+03 9.5073570e+00 1.6170355e+03
+-3.9123952e+02 5.0246355e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.8448289e+01 1.5837497e+00 4.1976904e-01
+-9.6288094e+02 3.1229325e+01 8.3922122e+00
+-1.7255931e+04 5.5553525e+02 1.4901289e+02
+-3.0695714e+05 9.8081331e+03 2.7543753e+03
+-4.1815440e+06 1.4099605e+05 1.5826476e+05
+-1.0076307e+07 4.0001271e+05 4.2852240e+05
+-1.6613074e+07 6.6728166e+05 7.9564502e+05
+-2.1851693e+07 8.4817763e+05 1.2078862e+06
+-2.4977693e+07 9.2294867e+05 1.6086044e+06
+-2.6180461e+07 9.2541913e+05 1.9494919e+06
+-2.5992473e+07 8.9698466e+05 2.1865446e+06
+-2.4763789e+07 8.5477998e+05 2.2783170e+06
+-2.2520877e+07 7.8734636e+05 2.1887531e+06
+-1.9122492e+07 6.7124987e+05 1.8866368e+06
+-1.4559098e+07 4.9676013e+05 1.3562177e+06
+-9.2421581e+06 2.8800943e+05 6.6321736e+05
+-4.1842177e+06 1.0436016e+05 7.1030327e+04
+-2.8569390e+05 8.7203165e+03 2.4089536e+04
+-1.9574785e+04 4.8982503e+02 8.0216391e+03
+-2.4247844e+03 2.8440730e+01 1.5854810e+03
+-3.8484620e+02 1.6327065e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.4007699e+01 2.3852157e+00 3.9068589e-01
+-8.7519337e+02 4.7326098e+01 7.9539606e+00
+-1.5695218e+04 8.5084432e+02 1.4024321e+02
+-2.7935875e+05 1.5225020e+04 2.5106969e+03
+-3.8779149e+06 2.0689460e+05 1.4341359e+05
+-9.3324864e+06 5.7470825e+05 3.8982854e+05
+-1.5380264e+07 9.5430663e+05 7.2768494e+05
+-2.0234289e+07 1.2139363e+06 1.1102441e+06
+-2.3144787e+07 1.3247674e+06 1.4853198e+06
+-2.4285493e+07 1.3324500e+06 1.8076001e+06
+-2.4143849e+07 1.2938170e+06 2.0348956e+06
+-2.3036228e+07 1.2326890e+06 2.1266820e+06
+-2.0979128e+07 1.1336794e+06 2.0472868e+06
+-1.7836014e+07 9.6513663e+05 1.7663919e+06
+-1.3597241e+07 7.1471819e+05 1.2698830e+06
+-8.6489444e+06 4.1699680e+05 6.2099898e+05
+-3.9364010e+06 1.5452204e+05 6.5949657e+04
+-2.6275989e+05 1.3447961e+04 2.2430959e+04
+-1.8086293e+04 7.6060989e+02 7.4742207e+03
+-2.2657957e+03 4.8089522e+01 1.4771948e+03
+-3.6168411e+02 3.3881632e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.6969611e+01 2.7125547e+00 3.9371639e-01
+-7.3619554e+02 5.3873230e+01 8.9540651e+00
+-1.3223262e+04 9.7972768e+02 1.6703339e+02
+-2.3571209e+05 1.7900164e+04 2.9479017e+03
+-3.3633000e+06 2.2973666e+05 1.1726805e+05
+-8.0888212e+06 6.2028114e+05 3.1963791e+05
+-1.3325795e+07 1.0236418e+06 6.0101847e+05
+-1.7534307e+07 1.3037440e+06 9.2306267e+05
+-2.0069606e+07 1.4286880e+06 1.2422542e+06
+-2.1082183e+07 1.4433420e+06 1.5203631e+06
+-2.0989994e+07 1.4051080e+06 1.7208389e+06
+-2.0059233e+07 1.3385087e+06 1.8074229e+06
+-1.8294970e+07 1.2285430e+06 1.7472895e+06
+-1.5572221e+07 1.0440136e+06 1.5123581e+06
+-1.1882674e+07 7.7396487e+05 1.0894985e+06
+-7.5688985e+06 4.5563133e+05 5.3323178e+05
+-3.4600048e+06 1.7422992e+05 5.5541507e+04
+-2.2418633e+05 1.5861242e+04 1.9197397e+04
+-1.5480016e+04 9.2196289e+02 6.4107832e+03
+-1.9571427e+03 7.0266404e+01 1.2665367e+03
+-3.1378484e+02 6.6424210e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.7945620e+01 2.4096451e+00 3.5997828e-01
+-5.5754466e+02 4.6350648e+01 1.1038753e+01
+-1.0045788e+04 8.3407565e+02 2.4651545e+02
+-1.7973610e+05 1.5492196e+04 4.7887184e+03
+-2.6422920e+06 1.9401484e+05 8.2021932e+04
+-6.3743845e+06 5.0913346e+05 2.2198558e+05
+-1.0506138e+07 8.3515757e+05 4.2020099e+05
+-1.3823108e+07 1.0653261e+06 6.4932287e+05
+-1.5820127e+07 1.1725514e+06 8.7869119e+05
+-1.6620534e+07 1.1899619e+06 1.0819022e+06
+-1.6556011e+07 1.1614410e+06 1.2331049e+06
+-1.5833309e+07 1.1061926e+06 1.3052433e+06
+-1.4449424e+07 1.0132833e+06 1.2722796e+06
+-1.2299762e+07 8.5953186e+05 1.1102978e+06
+-9.3783306e+06 6.3783985e+05 8.0552491e+05
+-5.9641136e+06 3.7889448e+05 3.9534894e+05
+-2.7206382e+06 1.4972311e+05 3.9140180e+04
+-1.7158457e+05 1.4018983e+04 1.4367590e+04
+-1.1815281e+04 8.9617244e+02 4.8288617e+03
+-1.4928467e+03 9.4086332e+01 9.5322885e+02
+-2.3922130e+02 1.1643688e+01 0.0000000e+00
+0 0 0
+0 0 0
+-1.7992247e+01 1.7431987e+00 3.8124335e-03
+-3.5855785e+02 2.9090560e+01 8.0529155e+00
+-6.4857391e+03 4.5905050e+02 2.7510039e+02
+-1.1709485e+05 7.9511162e+03 6.5951864e+03
+-1.7597424e+06 1.0361039e+05 4.4274757e+04
+-4.3062531e+06 2.6781002e+05 1.1624308e+05
+-7.1210315e+06 4.3834086e+05 2.2072494e+05
+-9.3653623e+06 5.5984981e+05 3.4205735e+05
+-1.0696687e+07 6.1748374e+05 4.6413927e+05
+-1.1210916e+07 6.2783303e+05 5.7463308e+05
+-1.1145775e+07 6.1336809e+05 6.6131546e+05
+-1.0646079e+07 5.8405785e+05 7.0985593e+05
+-9.7057346e+06 5.3443804e+05 7.0443964e+05
+-8.2469497e+06 4.5267900e+05 6.2754936e+05
+-6.2638192e+06 3.3536389e+05 4.6435012e+05
+-3.9523764e+06 1.9932847e+05 2.3006938e+05
+-1.7718094e+06 8.0262991e+04 2.0388090e+04
+-1.1049694e+05 7.7215130e+03 8.8209265e+03
+-7.5284662e+03 6.9016464e+02 3.0017631e+03
+-9.4324291e+02 1.1114050e+02 5.9216183e+02
+-1.5073477e+02 1.6083929e+01 0.0000000e+00
+0 0 0
+0 0 0
+-8.8625744e+00 1.3133276e+00 -7.5072612e-01
+-1.7144669e+02 1.7152751e+01 -5.5249849e+00
+-3.0504036e+03 1.7485579e+02 7.5030659e+01
+-5.5804200e+04 1.5162398e+03 3.9307685e+03
+-8.5281407e+05 1.2485409e+04 1.2617285e+04
+-2.1896201e+06 3.0801491e+04 3.2099477e+04
+-3.6656057e+06 5.0501455e+04 6.1956965e+04
+-4.8184188e+06 6.4982082e+04 9.6204134e+04
+-5.4685400e+06 7.2353876e+04 1.3020616e+05
+-5.6850817e+06 7.4411722e+04 1.6226533e+05
+-5.6132089e+06 7.3455750e+04 1.9092154e+05
+-5.3382888e+06 7.0368197e+04 2.1299865e+05
+-4.8535903e+06 6.4361023e+04 2.2302558e+05
+-4.1082389e+06 5.3757133e+04 2.1173976e+05
+-3.0919238e+06 3.7893944e+04 1.6672314e+05
+-1.9091515e+06 2.0052180e+04 8.6140624e+04
+-8.0830093e+05 7.8991913e+03 7.7148392e+03
+-5.1059823e+04 2.2212014e+03 4.0830379e+03
+-3.4698976e+03 4.8405620e+02 1.3985145e+03
+-4.4584603e+02 1.0295141e+02 2.7761850e+02
+-7.2549073e+01 1.5052282e+01 0.0000000e+00
+0 0 0
+0 0 0
+-2.8506985e+00 1.0305353e+00 -9.7129328e-01
+-4.5116878e+01 1.2712532e+01 -1.2448805e+01
+-5.9693257e+02 1.1756549e+02 -1.0909442e+02
+-6.9743922e+03 8.8466342e+02 -7.1215246e+02
+-6.1668483e+04 4.9727933e+03 -7.7708156e+02
+-1.4188712e+05 1.1769540e+04 -3.6282657e+02
+-2.2828157e+05 1.9059828e+04 6.6161278e+02
+-3.0010994e+05 2.4559529e+04 1.8376238e+03
+-3.4655100e+05 2.7456565e+04 2.9533589e+03
+-3.6722464e+05 2.8236878e+04 4.3159835e+03
+-3.6621228e+05 2.7707683e+04 6.3157253e+03
+-3.4687849e+05 2.6269371e+04 9.0395475e+03
+-3.1042534e+05 2.3775763e+04 1.2047228e+04
+-2.5749193e+05 1.9877895e+04 1.3968993e+04
+-1.9107731e+05 1.4618704e+04 1.2566388e+04
+-1.1882323e+05 8.8818717e+03 7.1146222e+03
+-5.2808580e+04 4.1002685e+03 2.1682467e+03
+-6.3618648e+03 1.0097700e+03 1.0034207e+03
+-7.3747381e+02 2.2083851e+02 3.8471940e+02
+-1.3263867e+02 4.5805034e+01 8.3954052e+01
+-2.4363389e+01 6.7142532e+00 0.0000000e+00
+0 0 0
+0 0 0
+-8.3231129e-01 5.3943793e-01 -4.9187934e-01
+-1.0464483e+01 6.3814374e+00 -5.9489120e+00
+-1.0045001e+02 5.4933246e+01 -4.6398647e+01
+-7.8282048e+02 3.6693678e+02 -2.2627630e+02
+-4.2417152e+03 1.6922658e+03 -1.8704273e+02
+-9.8208011e+03 3.9819657e+03 -9.4963458e+01
+-1.5860505e+04 6.4567265e+03 -5.0415122e+00
+-2.0776055e+04 8.3283240e+03 7.7058134e+01
+-2.3821882e+04 9.3167829e+03 1.5212309e+02
+-2.5070819e+04 9.5809388e+03 2.3815933e+02
+-2.4906750e+04 9.3931941e+03 3.5741947e+02
+-2.3596372e+04 8.8933308e+03 5.1576167e+02
+-2.1176180e+04 8.0377768e+03 6.9299589e+02
+-1.7606078e+04 6.7180092e+03 8.2716880e+02
+-1.3044611e+04 4.9572005e+03 8.2216400e+02
+-8.0596436e+03 3.0375513e+03 6.5546416e+02
+-3.6012565e+03 1.4047558e+03 4.7678078e+02
+-7.4719328e+02 3.8598305e+02 2.1952390e+02
+-1.4058852e+02 8.4292333e+01 8.4058939e+01
+-3.2658726e+01 1.6142641e+01 1.9174548e+01
+-6.4307724e+00 2.2246433e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.6051581e-01 1.3623038e-01 -1.2250678e-01
+-2.8405487e+00 1.5664195e+00 -1.4215114e+00
+-2.2153073e+01 1.2875552e+01 -1.0241324e+01
+-1.3248630e+02 8.0173901e+01 -4.3306868e+01
+-5.4206833e+02 3.3653077e+02 -3.6192949e+01
+-1.2418800e+03 7.8844867e+02 -2.1245112e+01
+-2.0006921e+03 1.2797524e+03 -1.2025083e+01
+-2.5844014e+03 1.6514068e+03 -4.1066417e+00
+-2.9051521e+03 1.8478177e+03 3.2349822e+00
+-3.0045055e+03 1.9003782e+03 1.0123648e+01
+-2.9598782e+03 1.8630035e+03 1.8285819e+01
+-2.8121607e+03 1.7635704e+03 2.9054070e+01
+-2.5499183e+03 1.5933885e+03 4.4001124e+01
+-2.1419752e+03 1.3308152e+03 6.4808009e+01
+-1.5932111e+03 9.8079789e+02 8.9492061e+01
+-9.8472005e+02 6.0022995e+02 1.0826378e+02
+-4.5690571e+02 2.7902588e+02 1.0179056e+02
+-1.3413618e+02 8.4143795e+01 4.5532968e+01
+-3.2769913e+01 1.9198611e+01 1.6095670e+01
+-7.9227749e+00 3.5946489e+00 3.5903156e+00
+-1.4924421e+00 4.7426349e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.6914129e-02 0.0000000e+00 -7.0681686e-03
+-5.9009526e-01 0.0000000e+00 -8.7700965e-02
+-4.2824183e+00 0.0000000e+00 -6.5430227e-01
+-2.3413935e+01 0.0000000e+00 -2.7081730e+00
+-8.7550613e+01 0.0000000e+00 -1.9712255e+00
+-1.9907395e+02 0.0000000e+00 -1.8556272e+00
+-3.1973052e+02 0.0000000e+00 -2.2297510e+00
+-4.0959816e+02 0.0000000e+00 -1.7239066e+00
+-4.5535189e+02 0.0000000e+00 -8.5251948e-01
+-4.6634584e+02 0.0000000e+00 -1.4424939e-01
+-4.5731195e+02 0.0000000e+00 5.3124811e-01
+-4.3534061e+02 0.0000000e+00 1.4094931e+00
+-3.9718234e+02 0.0000000e+00 3.0135511e+00
+-3.3560899e+02 0.0000000e+00 6.2405169e+00
+-2.5021801e+02 0.0000000e+00 1.1285225e+01
+-1.5493075e+02 0.0000000e+00 1.5796410e+01
+-7.3646647e+01 0.0000000e+00 1.4895839e+01
+-2.4544427e+01 0.0000000e+00 6.6709366e+00
+-6.4499790e+00 0.0000000e+00 2.2169195e+00
+-1.4935818e+00 0.0000000e+00 4.7350068e-01
+-2.5809792e-01 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-1.7884982e-02 -3.3814150e-02 -5.2149969e-03
+-1.7759405e-01 -3.6460211e-01 -5.3114090e-02
+-1.2292077e+00 -2.7812833e+00 -3.2504132e-01
+-6.4432675e+00 -1.6135849e+01 -1.1598599e+00
+-2.3330164e+01 -6.4224205e+01 -1.1561039e+00
+-5.1918019e+01 -1.4754723e+02 -7.6480273e-01
+-8.2905505e+01 -2.3718889e+02 -4.0092618e-01
+-1.0654142e+02 -3.0337837e+02 -7.9296728e-02
+-1.1923784e+02 -3.3635740e+02 1.6405369e-01
+-1.2297357e+02 -3.4357252e+02 3.6429971e-01
+-1.2119057e+02 -3.3638258e+02 6.2549394e-01
+-1.1560422e+02 -3.2012681e+02 1.0159089e+00
+-1.0552621e+02 -2.9223475e+02 1.5945173e+00
+-8.9307094e+01 -2.4711796e+02 2.4105841e+00
+-6.6851554e+01 -1.8429767e+02 3.3417943e+00
+-4.1541937e+01 -1.1394950e+02 3.9024737e+00
+-1.9558725e+01 -5.3529172e+01 3.3437228e+00
+-6.2031317e+00 -1.6511922e+01 1.5143491e+00
+-1.5406132e+00 -3.8958753e+00 5.0085860e-01
+-3.3846085e-01 -7.5558782e-01 1.0132543e-01
+-5.5230895e-02 -1.0154159e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.0851078e-01 -1.4148244e-01 -4.4336744e-02
+-1.1952004e+00 -1.5836076e+00 -4.7067960e-01
+-9.5440626e+00 -1.2792442e+01 -3.0685316e+00
+-5.9173472e+01 -8.0598621e+01 -1.1918587e+01
+-2.5062524e+02 -3.5655984e+02 -1.1026040e+01
+-5.6858212e+02 -8.2688179e+02 -4.9893829e+00
+-9.1577652e+02 -1.3279865e+03 8.9265142e-01
+-1.1960385e+03 -1.6957515e+03 4.9028827e+00
+-1.3662263e+03 -1.8774810e+03 7.1007184e+00
+-1.4337462e+03 -1.9163494e+03 9.1183325e+00
+-1.4237834e+03 -1.8762119e+03 1.2852895e+01
+-1.3521923e+03 -1.7862459e+03 1.9003654e+01
+-1.2186180e+03 -1.6312543e+03 2.6722991e+01
+-1.0167670e+03 -1.3790709e+03 3.3467666e+01
+-7.5332834e+02 -1.0264597e+03 3.5746908e+01
+-4.6354954e+02 -6.3164224e+02 3.2269139e+01
+-2.0924645e+02 -2.9347627e+02 2.4556965e+01
+-5.3622015e+01 -8.3239545e+01 1.0770420e+01
+-1.0755169e+01 -1.8796385e+01 3.6561866e+00
+-2.1063441e+00 -3.6697363e+00 7.5390437e-01
+-3.3744355e-01 -5.0263572e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.2649765e-01 -2.9220232e-01 -1.5509376e-01
+-7.0030186e+00 -3.4461095e+00 -1.7540566e+00
+-7.2049422e+01 -3.0277507e+01 -1.2669582e+01
+-6.0092123e+02 -2.1749074e+02 -5.7676704e+01
+-3.4249160e+03 -1.1864911e+03 -4.4544540e+01
+-7.9034561e+03 -2.8001186e+03 1.1347238e+01
+-1.2766979e+04 -4.4905156e+03 8.0350888e+01
+-1.6820061e+04 -5.6996476e+03 1.2825331e+02
+-1.9447035e+04 -6.2732282e+03 1.4915379e+02
+-2.0625158e+04 -6.3846531e+03 1.7179629e+02
+-2.0585354e+04 -6.2549532e+03 2.2914138e+02
+-1.9514680e+04 -5.9699360e+03 3.3113904e+02
+-1.7470369e+04 -5.4583382e+03 4.5241222e+02
+-1.4471878e+04 -4.5851537e+03 5.2429568e+02
+-1.0681096e+04 -3.3284408e+03 4.6276275e+02
+-6.5598462e+03 -1.9455549e+03 2.7687792e+02
+-2.8741520e+03 -8.6814192e+02 1.2443913e+02
+-5.2148641e+02 -2.3735033e+02 5.2843045e+01
+-7.1900160e+01 -5.3355244e+01 1.8713548e+01
+-1.0651867e+01 -1.0847595e+01 3.8845476e+00
+-1.5252387e+00 -1.5236218e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.4214467e+00 -4.4721987e-01 -2.7423426e-01
+-3.9830722e+01 -5.8073934e+00 -3.1991069e+00
+-5.4676031e+02 -5.8949112e+01 -2.4699755e+01
+-6.5674680e+03 -4.9998648e+02 -1.4912826e+02
+-5.9027261e+04 -3.9284269e+03 -4.8415407e+01
+-1.3526060e+05 -1.0134747e+04 6.5969169e+02
+-2.1744871e+05 -1.6411009e+04 1.7473256e+03
+-2.8625531e+05 -2.0313563e+04 2.5066132e+03
+-3.3138886e+05 -2.1697549e+04 2.7687928e+03
+-3.5216250e+05 -2.1744847e+04 3.0668448e+03
+-3.5203276e+05 -2.1383698e+04 4.0160698e+03
+-3.3393392e+05 -2.0718460e+04 5.8200204e+03
+-2.9897983e+05 -1.9134500e+04 8.0506707e+03
+-2.4785195e+05 -1.5585621e+04 9.4111564e+03
+-1.8349797e+05 -9.5804533e+03 8.0838327e+03
+-1.1353425e+05 -3.0749301e+03 3.9242236e+03
+-5.0103437e+04 -2.1206041e+02 5.6299931e+02
+-5.6701508e+03 -6.0051251e+02 2.3444743e+02
+-5.1060903e+02 -1.2854992e+02 8.2777323e+01
+-5.2170536e+01 -2.4975827e+01 1.6437420e+01
+-6.0683387e+00 -3.3812514e+00 0.0000000e+00
+0 0 0
+0 0 0
+-8.4062433e+00 -8.7751037e-01 -2.6040570e-02
+-1.6484004e+02 -1.5745473e+01 3.3053926e+00
+-2.9646678e+03 -2.6781901e+02 1.2643947e+02
+-5.4608786e+04 -4.8778987e+03 3.3089373e+03
+-8.0885453e+05 -5.5520504e+04 1.0941477e+04
+-2.0734987e+06 -1.4268834e+05 2.7373735e+04
+-3.4736270e+06 -2.3106940e+05 5.0053467e+04
+-4.5696777e+06 -2.9125417e+05 7.2252978e+04
+-5.1909666e+06 -3.1751079e+05 9.0492840e+04
+-5.4012338e+06 -3.2074767e+05 1.0564777e+05
+-5.3345554e+06 -3.1358280e+05 1.1919340e+05
+-5.0694917e+06 -3.0080215e+05 1.3048008e+05
+-4.5997668e+06 -2.7840140e+05 1.3592340e+05
+-3.8773256e+06 -2.3859555e+05 1.2802003e+05
+-2.8925641e+06 -1.7810097e+05 9.7180840e+04
+-1.7539418e+06 -1.0569578e+05 4.4591950e+04
+-7.2180346e+05 -4.2093978e+04 -2.3598739e+01
+-4.8017690e+04 -4.5225167e+03 8.5627210e+02
+-2.7240738e+03 -3.0940588e+02 2.9130427e+02
+-1.9844375e+02 -3.4180860e+01 5.3107029e+01
+-1.8808547e+01 -4.0147482e+00 0.0000000e+00
+0 0 0
+0 0 0
+-1.7732108e+01 -1.5359984e+00 3.9834913e-01
+-3.5479916e+02 -3.0784833e+01 1.1679021e+01
+-6.4379472e+03 -5.7268542e+02 2.6875360e+02
+-1.1649133e+05 -1.0861122e+04 5.6484593e+03
+-1.7320595e+06 -1.1613708e+05 3.8582056e+04
+-4.2121337e+06 -2.9840552e+05 1.0017985e+05
+-6.9525995e+06 -4.8303478e+05 1.8371320e+05
+-9.1359616e+06 -6.0890013e+05 2.7195848e+05
+-1.0429587e+07 -6.6423952e+05 3.5158676e+05
+-1.0924862e+07 -6.7158424e+05 4.1636930e+05
+-1.0847507e+07 -6.5709876e+05 4.6161741e+05
+-1.0335048e+07 -6.3076664e+05 4.8055178e+05
+-9.3834944e+06 -5.8437205e+05 4.6428225e+05
+-7.9208235e+06 -5.0206011e+05 4.0162059e+05
+-5.9468955e+06 -3.7710939e+05 2.8370537e+05
+-3.6752439e+06 -2.2634182e+05 1.2721894e+05
+-1.5988411e+06 -9.0928813e+04 3.0854652e+03
+-1.0406045e+05 -9.8045985e+03 1.9310629e+03
+-5.9780479e+03 -5.5162985e+02 6.2286855e+02
+-4.2619326e+02 -4.0434921e+01 1.1207295e+02
+-3.9099058e+01 -3.5775099e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.8045883e+01 -1.9213807e+00 4.8564607e-01
+-5.6023246e+02 -3.9023035e+01 1.1411648e+01
+-1.0106635e+04 -7.2327174e+02 2.2284530e+02
+-1.8107276e+05 -1.3408970e+04 4.1073506e+03
+-2.6805914e+06 -1.4407737e+05 7.0347022e+04
+-6.4125013e+06 -3.7954790e+05 1.8960614e+05
+-1.0531409e+07 -6.1730143e+05 3.4914333e+05
+-1.3825429e+07 -7.7621805e+05 5.1878197e+05
+-1.5796002e+07 -8.4234417e+05 6.7276116e+05
+-1.6567516e+07 -8.4740431e+05 7.9556413e+05
+-1.6465215e+07 -8.2722423e+05 8.7489426e+05
+-1.5691477e+07 -7.9513112e+05 8.9742755e+05
+-1.4246625e+07 -7.3943430e+05 8.4969059e+05
+-1.2032737e+07 -6.3785319e+05 7.1845893e+05
+-9.0548212e+06 -4.8005368e+05 4.9789384e+05
+-5.6289370e+06 -2.8691143e+05 2.2328692e+05
+-2.4861122e+06 -1.1262419e+05 1.0456280e+04
+-1.6212078e+05 -1.2118396e+04 3.3062878e+03
+-9.3952590e+03 -6.6489964e+02 9.9953552e+02
+-6.7157878e+02 -4.0785899e+01 1.7861853e+02
+-6.1412360e+01 -2.7679127e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.7421039e+01 -1.7790746e+00 3.0912193e-01
+-7.4530429e+02 -3.5829853e+01 6.2246893e+00
+-1.3392194e+04 -6.5321520e+02 1.0510087e+02
+-2.3891468e+05 -1.1833015e+04 1.7317356e+03
+-3.4717218e+06 -1.3223865e+05 9.8314823e+04
+-8.2804263e+06 -3.5892747e+05 2.6929946e+05
+-1.3581566e+07 -5.8710212e+05 4.9487075e+05
+-1.7812008e+07 -7.3630417e+05 7.3265705e+05
+-2.0331199e+07 -7.9430008e+05 9.4620595e+05
+-2.1301919e+07 -7.9443369e+05 1.1129709e+06
+-2.1146582e+07 -7.7338396e+05 1.2157184e+06
+-2.0131551e+07 -7.4446162e+05 1.2373670e+06
+-1.8263829e+07 -6.9526514e+05 1.1620562e+06
+-1.5420872e+07 -6.0235168e+05 9.7520492e+05
+-1.1605797e+07 -4.5396042e+05 6.7223421e+05
+-7.2160419e+06 -2.6959158e+05 3.0205780e+05
+-3.1852045e+06 -1.0291335e+05 1.7546668e+04
+-2.1244138e+05 -1.0840042e+04 4.5233624e+03
+-1.2342392e+04 -5.9771186e+02 1.3185510e+03
+-8.7979871e+02 -3.4283153e+01 2.3470424e+02
+-7.9882075e+01 -1.9664348e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.4688930e+01 -1.2130363e+00 1.1519322e-01
+-8.8840523e+02 -2.4204487e+01 1.7016919e+00
+-1.5930615e+04 -4.3569400e+02 1.9577680e+01
+-2.8365794e+05 -7.7778109e+03 2.6356511e+02
+-4.0369634e+06 -9.0771075e+04 1.1784451e+05
+-9.6454551e+06 -2.5233343e+05 3.2421922e+05
+-1.5821581e+07 -4.1461275e+05 5.9304675e+05
+-2.0731293e+07 -5.1899557e+05 8.7274276e+05
+-2.3628976e+07 -5.5738539e+05 1.1200170e+06
+-2.4714002e+07 -5.5503458e+05 1.3091267e+06
+-2.4490463e+07 -5.3923869e+05 1.4215951e+06
+-2.3279177e+07 -5.1972917e+05 1.4398120e+06
+-2.1095100e+07 -4.8704919e+05 1.3475687e+06
+-1.7796434e+07 -4.2341205e+05 1.1290498e+06
+-1.3380916e+07 -3.1945120e+05 7.7821585e+05
+-8.3017148e+06 -1.8878486e+05 3.5017947e+05
+-3.6406205e+06 -7.0533590e+04 2.2019177e+04
+-2.4963443e+05 -7.2587588e+03 5.3124408e+03
+-1.4492293e+04 -4.0309115e+02 1.5238196e+03
+-1.0243337e+03 -2.2635873e+01 2.7071040e+02
+-9.1736256e+01 -1.2038890e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.9236887e+01 -4.2559011e-01 1.1525999e-03
+-9.7792672e+02 -8.4498847e+00 -7.0766589e-01
+-1.7519433e+04 -1.5117105e+02 -2.1728987e+01
+-3.1169767e+05 -2.6812098e+03 -3.7779892e+02
+-4.3688433e+06 -3.2132266e+04 1.2828275e+05
+-1.0463020e+07 -9.0467464e+04 3.5312977e+05
+-1.7168865e+07 -1.4900348e+05 6.4331079e+05
+-2.2482837e+07 -1.8634161e+05 9.4180081e+05
+-2.5595667e+07 -1.9967253e+05 1.2020621e+06
+-2.6732858e+07 -1.9838761e+05 1.3978119e+06
+-2.6452726e+07 -1.9255246e+05 1.5113792e+06
+-2.5112625e+07 -1.8572304e+05 1.5262089e+06
+-2.2734031e+07 -1.7436892e+05 1.4266821e+06
+-1.9163356e+07 -1.5186671e+05 1.1960011e+06
+-1.4393558e+07 -1.1465051e+05 8.2565997e+05
+-8.9096092e+06 -6.7589016e+04 3.7191526e+05
+-3.8819974e+06 -2.4976835e+04 2.4138205e+04
+-2.7197471e+05 -2.5357646e+03 5.6960184e+03
+-1.5763642e+04 -1.4133963e+02 1.6231238e+03
+-1.1044703e+03 -7.8999223e+00 2.8807377e+02
+-9.7565624e+01 -4.1069405e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0780552e+01 4.2559011e-01 -3.4120575e-02
+-1.0083188e+03 8.4498847e+00 -1.4229747e+00
+-1.8059115e+04 1.5117105e+02 -3.3515987e+01
+-3.2122962e+05 2.6812099e+03 -5.5411336e+02
+-4.4776769e+06 3.2132266e+04 1.3139756e+05
+-1.0734195e+07 9.0467464e+04 3.6168775e+05
+-1.7616793e+07 1.4900348e+05 6.5786376e+05
+-2.3064368e+07 1.8634161e+05 9.6113744e+05
+-2.6246397e+07 1.9967253e+05 1.2240941e+06
+-2.7397818e+07 1.9838762e+05 1.4205747e+06
+-2.7095905e+07 1.9255245e+05 1.5335065e+06
+-2.5710855e+07 1.8572304e+05 1.5469715e+06
+-2.3266656e+07 1.7436892e+05 1.4457084e+06
+-1.9605810e+07 1.5186671e+05 1.2125362e+06
+-1.4719451e+07 1.1465051e+05 8.3778838e+05
+-9.1028422e+06 6.7589016e+04 3.7753917e+05
+-3.9558622e+06 2.4976835e+04 2.4731946e+04
+-2.7938120e+05 2.5357646e+03 5.8030707e+03
+-1.6180670e+04 1.4133963e+02 1.6505542e+03
+-1.1295544e+03 7.8999223e+00 2.9284989e+02
+-9.9211012e+01 4.1069405e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9236887e+01 1.2130363e+00 1.1526045e-03
+-9.7792672e+02 2.4204487e+01 -7.0766584e-01
+-1.7519433e+04 4.3569400e+02 -2.1728987e+01
+-3.1169767e+05 7.7778109e+03 -3.7779891e+02
+-4.3688433e+06 9.0771075e+04 1.2828275e+05
+-1.0463020e+07 2.5233343e+05 3.5312977e+05
+-1.7168865e+07 4.1461274e+05 6.4331079e+05
+-2.2482837e+07 5.1899557e+05 9.4180081e+05
+-2.5595667e+07 5.5738539e+05 1.2020621e+06
+-2.6732858e+07 5.5503458e+05 1.3978119e+06
+-2.6452726e+07 5.3923869e+05 1.5113791e+06
+-2.5112625e+07 5.1972917e+05 1.5262089e+06
+-2.2734031e+07 4.8704919e+05 1.4266821e+06
+-1.9163356e+07 4.2341204e+05 1.1960011e+06
+-1.4393558e+07 3.1945120e+05 8.2565997e+05
+-8.9096092e+06 1.8878486e+05 3.7191526e+05
+-3.8819974e+06 7.0533590e+04 2.4138205e+04
+-2.7197471e+05 7.2587588e+03 5.6960184e+03
+-1.5763642e+04 4.0309115e+02 1.6231238e+03
+-1.1044703e+03 2.2635873e+01 2.8807377e+02
+-9.7565624e+01 1.2038890e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.4688930e+01 1.7790746e+00 1.1519322e-01
+-8.8840523e+02 3.5829853e+01 1.7016919e+00
+-1.5930615e+04 6.5321520e+02 1.9577679e+01
+-2.8365794e+05 1.1833015e+04 2.6356512e+02
+-4.0369634e+06 1.3223865e+05 1.1784451e+05
+-9.6454551e+06 3.5892747e+05 3.2421922e+05
+-1.5821581e+07 5.8710212e+05 5.9304675e+05
+-2.0731293e+07 7.3630417e+05 8.7274276e+05
+-2.3628976e+07 7.9430008e+05 1.1200170e+06
+-2.4714002e+07 7.9443369e+05 1.3091267e+06
+-2.4490463e+07 7.7338396e+05 1.4215951e+06
+-2.3279177e+07 7.4446162e+05 1.4398120e+06
+-2.1095100e+07 6.9526514e+05 1.3475686e+06
+-1.7796434e+07 6.0235168e+05 1.1290498e+06
+-1.3380916e+07 4.5396042e+05 7.7821585e+05
+-8.3017148e+06 2.6959158e+05 3.5017947e+05
+-3.6406205e+06 1.0291335e+05 2.2019177e+04
+-2.4963443e+05 1.0840042e+04 5.3124408e+03
+-1.4492293e+04 5.9771186e+02 1.5238196e+03
+-1.0243337e+03 3.4283153e+01 2.7071040e+02
+-9.1736256e+01 1.9664348e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.7421039e+01 1.9213807e+00 3.0912193e-01
+-7.4530429e+02 3.9023035e+01 6.2246893e+00
+-1.3392194e+04 7.2327174e+02 1.0510087e+02
+-2.3891468e+05 1.3408970e+04 1.7317357e+03
+-3.4717218e+06 1.4407737e+05 9.8314822e+04
+-8.2804263e+06 3.7954790e+05 2.6929946e+05
+-1.3581566e+07 6.1730143e+05 4.9487075e+05
+-1.7812008e+07 7.7621805e+05 7.3265705e+05
+-2.0331199e+07 8.4234417e+05 9.4620595e+05
+-2.1301919e+07 8.4740431e+05 1.1129709e+06
+-2.1146582e+07 8.2722424e+05 1.2157184e+06
+-2.0131551e+07 7.9513112e+05 1.2373670e+06
+-1.8263829e+07 7.3943430e+05 1.1620562e+06
+-1.5420872e+07 6.3785319e+05 9.7520492e+05
+-1.1605797e+07 4.8005368e+05 6.7223421e+05
+-7.2160419e+06 2.8691143e+05 3.0205780e+05
+-3.1852045e+06 1.1262419e+05 1.7546668e+04
+-2.1244138e+05 1.2118396e+04 4.5233624e+03
+-1.2342392e+04 6.6489964e+02 1.3185510e+03
+-8.7979871e+02 4.0785899e+01 2.3470424e+02
+-7.9882075e+01 2.7679127e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.8045883e+01 1.5359984e+00 4.8564607e-01
+-5.6023246e+02 3.0784833e+01 1.1411648e+01
+-1.0106635e+04 5.7268542e+02 2.2284530e+02
+-1.8107276e+05 1.0861122e+04 4.1073506e+03
+-2.6805914e+06 1.1613708e+05 7.0347022e+04
+-6.4125013e+06 2.9840552e+05 1.8960614e+05
+-1.0531409e+07 4.8303478e+05 3.4914333e+05
+-1.3825429e+07 6.0890013e+05 5.1878197e+05
+-1.5796002e+07 6.6423952e+05 6.7276116e+05
+-1.6567516e+07 6.7158424e+05 7.9556413e+05
+-1.6465215e+07 6.5709876e+05 8.7489426e+05
+-1.5691477e+07 6.3076664e+05 8.9742755e+05
+-1.4246625e+07 5.8437206e+05 8.4969059e+05
+-1.2032737e+07 5.0206011e+05 7.1845893e+05
+-9.0548212e+06 3.7710939e+05 4.9789384e+05
+-5.6289370e+06 2.2634182e+05 2.2328692e+05
+-2.4861122e+06 9.0928813e+04 1.0456280e+04
+-1.6212078e+05 9.8045985e+03 3.3062878e+03
+-9.3952590e+03 5.5162985e+02 9.9953552e+02
+-6.7157878e+02 4.0434921e+01 1.7861853e+02
+-6.1412360e+01 3.5775099e+00 0.0000000e+00
+0 0 0
+0 0 0
+-1.7732108e+01 8.7751037e-01 3.9834913e-01
+-3.5479916e+02 1.5745473e+01 1.1679021e+01
+-6.4379472e+03 2.6781901e+02 2.6875360e+02
+-1.1649133e+05 4.8778987e+03 5.6484593e+03
+-1.7320595e+06 5.5520504e+04 3.8582056e+04
+-4.2121337e+06 1.4268834e+05 1.0017985e+05
+-6.9525995e+06 2.3106940e+05 1.8371320e+05
+-9.1359616e+06 2.9125417e+05 2.7195848e+05
+-1.0429587e+07 3.1751079e+05 3.5158676e+05
+-1.0924862e+07 3.2074767e+05 4.1636930e+05
+-1.0847507e+07 3.1358280e+05 4.6161741e+05
+-1.0335048e+07 3.0080215e+05 4.8055178e+05
+-9.3834944e+06 2.7840140e+05 4.6428225e+05
+-7.9208235e+06 2.3859555e+05 4.0162059e+05
+-5.9468955e+06 1.7810097e+05 2.8370537e+05
+-3.6752439e+06 1.0569578e+05 1.2721894e+05
+-1.5988411e+06 4.2093978e+04 3.0854652e+03
+-1.0406045e+05 4.5225167e+03 1.9310629e+03
+-5.9780479e+03 3.0940588e+02 6.2286855e+02
+-4.2619326e+02 3.4180860e+01 1.1207295e+02
+-3.9099058e+01 4.0147482e+00 0.0000000e+00
+0 0 0
+0 0 0
+-8.4062433e+00 4.4721987e-01 -2.6040571e-02
+-1.6484004e+02 5.8073934e+00 3.3053926e+00
+-2.9646678e+03 5.8949112e+01 1.2643947e+02
+-5.4608786e+04 4.9998648e+02 3.3089373e+03
+-8.0885453e+05 3.9284269e+03 1.0941477e+04
+-2.0734987e+06 1.0134747e+04 2.7373735e+04
+-3.4736270e+06 1.6411009e+04 5.0053467e+04
+-4.5696777e+06 2.0313563e+04 7.2252978e+04
+-5.1909666e+06 2.1697549e+04 9.0492840e+04
+-5.4012338e+06 2.1744847e+04 1.0564777e+05
+-5.3345554e+06 2.1383698e+04 1.1919340e+05
+-5.0694917e+06 2.0718460e+04 1.3048008e+05
+-4.5997668e+06 1.9134500e+04 1.3592340e+05
+-3.8773256e+06 1.5585621e+04 1.2802003e+05
+-2.8925641e+06 9.5804533e+03 9.7180840e+04
+-1.7539418e+06 3.0749301e+03 4.4591950e+04
+-7.2180346e+05 2.1206041e+02 -2.3598740e+01
+-4.8017690e+04 6.0051251e+02 8.5627210e+02
+-2.7240738e+03 1.2854992e+02 2.9130427e+02
+-1.9844375e+02 2.4975827e+01 5.3107029e+01
+-1.8808547e+01 3.3812514e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.4214467e+00 2.9220232e-01 -2.7423426e-01
+-3.9830722e+01 3.4461095e+00 -3.1991069e+00
+-5.4676031e+02 3.0277507e+01 -2.4699755e+01
+-6.5674680e+03 2.1749074e+02 -1.4912826e+02
+-5.9027261e+04 1.1864911e+03 -4.8415409e+01
+-1.3526060e+05 2.8001186e+03 6.5969169e+02
+-2.1744871e+05 4.4905156e+03 1.7473256e+03
+-2.8625531e+05 5.6996476e+03 2.5066132e+03
+-3.3138886e+05 6.2732282e+03 2.7687928e+03
+-3.5216250e+05 6.3846531e+03 3.0668448e+03
+-3.5203276e+05 6.2549532e+03 4.0160698e+03
+-3.3393392e+05 5.9699360e+03 5.8200204e+03
+-2.9897983e+05 5.4583382e+03 8.0506707e+03
+-2.4785195e+05 4.5851537e+03 9.4111564e+03
+-1.8349797e+05 3.3284408e+03 8.0838327e+03
+-1.1353425e+05 1.9455549e+03 3.9242236e+03
+-5.0103437e+04 8.6814192e+02 5.6299931e+02
+-5.6701508e+03 2.3735033e+02 2.3444743e+02
+-5.1060903e+02 5.3355244e+01 8.2777323e+01
+-5.2170536e+01 1.0847595e+01 1.6437420e+01
+-6.0683387e+00 1.5236218e+00 0.0000000e+00
+0 0 0
+0 0 0
+-5.2649765e-01 1.4148244e-01 -1.5509376e-01
+-7.0030186e+00 1.5836076e+00 -1.7540566e+00
+-7.2049422e+01 1.2792442e+01 -1.2669582e+01
+-6.0092123e+02 8.0598621e+01 -5.7676704e+01
+-3.4249160e+03 3.5655984e+02 -4.4544540e+01
+-7.9034561e+03 8.2688179e+02 1.1347237e+01
+-1.2766979e+04 1.3279865e+03 8.0350888e+01
+-1.6820061e+04 1.6957515e+03 1.2825331e+02
+-1.9447035e+04 1.8774810e+03 1.4915379e+02
+-2.0625158e+04 1.9163494e+03 1.7179629e+02
+-2.0585354e+04 1.8762119e+03 2.2914138e+02
+-1.9514680e+04 1.7862459e+03 3.3113904e+02
+-1.7470369e+04 1.6312543e+03 4.5241222e+02
+-1.4471878e+04 1.3790709e+03 5.2429568e+02
+-1.0681096e+04 1.0264597e+03 4.6276275e+02
+-6.5598462e+03 6.3164224e+02 2.7687792e+02
+-2.8741520e+03 2.9347627e+02 1.2443913e+02
+-5.2148641e+02 8.3239545e+01 5.2843045e+01
+-7.1900160e+01 1.8796385e+01 1.8713548e+01
+-1.0651867e+01 3.6697363e+00 3.8845476e+00
+-1.5252387e+00 5.0263572e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.0851078e-01 3.3814150e-02 -4.4336744e-02
+-1.1952004e+00 3.6460211e-01 -4.7067960e-01
+-9.5440626e+00 2.7812833e+00 -3.0685316e+00
+-5.9173472e+01 1.6135849e+01 -1.1918587e+01
+-2.5062524e+02 6.4224205e+01 -1.1026040e+01
+-5.6858212e+02 1.4754723e+02 -4.9893829e+00
+-9.1577652e+02 2.3718889e+02 8.9265143e-01
+-1.1960385e+03 3.0337837e+02 4.9028827e+00
+-1.3662263e+03 3.3635740e+02 7.1007184e+00
+-1.4337462e+03 3.4357252e+02 9.1183326e+00
+-1.4237834e+03 3.3638258e+02 1.2852895e+01
+-1.3521923e+03 3.2012681e+02 1.9003654e+01
+-1.2186180e+03 2.9223475e+02 2.6722991e+01
+-1.0167670e+03 2.4711796e+02 3.3467666e+01
+-7.5332834e+02 1.8429767e+02 3.5746908e+01
+-4.6354954e+02 1.1394950e+02 3.2269139e+01
+-2.0924645e+02 5.3529172e+01 2.4556965e+01
+-5.3622015e+01 1.6511922e+01 1.0770420e+01
+-1.0755169e+01 3.8958753e+00 3.6561866e+00
+-2.1063441e+00 7.5558782e-01 7.5390437e-01
+-3.3744355e-01 1.0154159e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.7884982e-02 0.0000000e+00 -5.2149969e-03
+-1.7759405e-01 0.0000000e+00 -5.3114090e-02
+-1.2292077e+00 0.0000000e+00 -3.2504132e-01
+-6.4432675e+00 0.0000000e+00 -1.1598599e+00
+-2.3330164e+01 0.0000000e+00 -1.1561039e+00
+-5.1918019e+01 0.0000000e+00 -7.6480273e-01
+-8.2905505e+01 0.0000000e+00 -4.0092618e-01
+-1.0654142e+02 0.0000000e+00 -7.9296729e-02
+-1.1923784e+02 0.0000000e+00 1.6405370e-01
+-1.2297357e+02 0.0000000e+00 3.6429972e-01
+-1.2119057e+02 0.0000000e+00 6.2549394e-01
+-1.1560422e+02 0.0000000e+00 1.0159089e+00
+-1.0552621e+02 0.0000000e+00 1.5945173e+00
+-8.9307094e+01 0.0000000e+00 2.4105841e+00
+-6.6851554e+01 0.0000000e+00 3.3417943e+00
+-4.1541937e+01 0.0000000e+00 3.9024737e+00
+-1.9558725e+01 0.0000000e+00 3.3437228e+00
+-6.2031317e+00 0.0000000e+00 1.5143491e+00
+-1.5406132e+00 0.0000000e+00 5.0085860e-01
+-3.3846085e-01 0.0000000e+00 1.0132543e-01
+-5.5230895e-02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-8.3477584e-03 -7.7130711e-03 -1.8241528e-03
+-8.3665916e-02 -7.8668948e-02 -1.7083341e-02
+-5.8862989e-01 -5.6291635e-01 -9.4744833e-02
+-3.1499135e+00 -3.0799591e+00 -3.0813972e-01
+-1.1589657e+01 -1.1756268e+01 -2.9237856e-01
+-2.5630836e+01 -2.6538465e+01 -4.1097090e-02
+-4.1141837e+01 -4.2051752e+01 2.4698652e-01
+-5.3820289e+01 -5.2884674e+01 4.1053323e-01
+-6.1658529e+01 -5.7584331e+01 4.1555101e-01
+-6.4902381e+01 -5.8015360e+01 3.5972611e-01
+-6.4617784e+01 -5.6585186e+01 3.7212420e-01
+-6.1481661e+01 -5.4267512e+01 5.1707803e-01
+-5.5464744e+01 -5.0312814e+01 7.6842928e-01
+-4.6281795e+01 -4.3274232e+01 1.0173630e+00
+-3.4256431e+01 -3.2699778e+01 1.1220180e+00
+-2.1066900e+01 -2.0367173e+01 1.0141547e+00
+-9.6379214e+00 -9.6298042e+00 7.2315570e-01
+-2.7431685e+00 -3.0589512e+00 3.2214373e-01
+-5.7492557e-01 -7.4899188e-01 1.0544800e-01
+-1.0320996e-01 -1.5029735e-01 2.0494459e-02
+-1.4176439e-02 -2.0559998e-02 0.0000000e+00
+0 0 0
+0 0 0
+-6.9569382e-02 -3.4015100e-02 -1.2639366e-02
+-7.9849376e-01 -3.6270688e-01 -1.2530806e-01
+-6.7068673e+00 -2.7737355e+00 -7.5168417e-01
+-4.3691807e+01 -1.6659668e+01 -2.6536415e+00
+-1.9185594e+02 -7.1579284e+01 -1.5999261e+00
+-4.3522689e+02 -1.6422585e+02 2.7322325e+00
+-7.0348475e+02 -2.5920052e+02 7.5892317e+00
+-9.2820905e+02 -3.2306759e+02 9.9427069e+00
+-1.0744307e+03 -3.4861461e+02 9.1773949e+00
+-1.1408053e+03 -3.4912544e+02 7.3465236e+00
+-1.1402116e+03 -3.3986749e+02 7.0569715e+00
+-1.0827378e+03 -3.2619853e+02 9.5335157e+00
+-9.7072168e+02 -3.0255033e+02 1.3874673e+01
+-8.0419833e+02 -2.5906212e+02 1.7093881e+01
+-5.9198672e+02 -1.9284840e+02 1.5900884e+01
+-3.6179128e+02 -1.1686475e+02 1.0640214e+01
+-1.6020488e+02 -5.3649242e+01 5.6180790e+00
+-3.7151176e+01 -1.6249131e+01 2.3374194e+00
+-6.0773061e+00 -3.8570961e+00 7.6766052e-01
+-8.6589611e-01 -7.7278558e-01 1.4970073e-01
+-1.0231707e-01 -1.0598575e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.4319699e-01 -7.7951002e-02 -3.9364764e-02
+-6.1017170e+00 -8.8809271e-01 -4.1528048e-01
+-6.4990972e+01 -7.5160750e+00 -2.7313912e+00
+-5.5726134e+02 -5.2421623e+01 -1.0629328e+01
+-3.2319557e+03 -2.8698066e+02 1.1811767e+01
+-7.4528128e+03 -6.8374286e+02 8.0685490e+01
+-1.2044634e+04 -1.0613373e+03 1.6047737e+02
+-1.5907268e+04 -1.2712337e+03 1.9584995e+02
+-1.8459589e+04 -1.3145730e+03 1.7436226e+02
+-1.9654751e+04 -1.2795264e+03 1.3435607e+02
+-1.9679419e+04 -1.2355655e+03 1.2411874e+02
+-1.8691515e+04 -1.1917179e+03 1.6647291e+02
+-1.6744328e+04 -1.1064777e+03 2.4435942e+02
+-1.3865664e+04 -9.1852142e+02 2.9760431e+02
+-1.0220290e+04 -6.1120962e+02 2.5515871e+02
+-6.2611567e+03 -2.8691873e+02 1.2652323e+02
+-2.7289796e+03 -1.0179174e+02 2.9493329e+01
+-4.7324728e+02 -4.6277243e+01 1.1282313e+01
+-5.6684020e+01 -1.1612683e+01 3.8217596e+00
+-5.9711977e+00 -2.3766136e+00 7.4491860e-01
+-5.6072713e-01 -3.2557875e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.2945685e+00 -1.5950730e-01 -4.5321829e-02
+-3.8276615e+01 -2.1196243e+00 -3.6789751e-01
+-5.3172393e+02 -2.2111109e+01 -8.0924660e-01
+-6.4391346e+03 -1.8810000e+02 6.5357631e+00
+-5.8142554e+04 -1.5515792e+03 3.8642772e+02
+-1.3298679e+05 -4.1895384e+03 1.6184152e+03
+-2.1367261e+05 -6.2959526e+03 3.0769351e+03
+-2.8140377e+05 -6.7369884e+03 3.6911429e+03
+-3.2620775e+05 -6.0377019e+03 3.2331614e+03
+-3.4737398e+05 -5.2707176e+03 2.4358334e+03
+-3.4808567e+05 -4.9429055e+03 2.1960863e+03
+-3.3097242e+05 -4.9054526e+03 2.9483256e+03
+-2.9692935e+05 -4.6363572e+03 4.4277254e+03
+-2.4647494e+05 -3.4027575e+03 5.5349452e+03
+-1.8247487e+05 -8.7918042e+02 4.7798192e+03
+-1.1274446e+05 1.5852049e+03 2.1179070e+03
+-4.9765366e+04 1.5825875e+03 9.5456488e+01
+-5.5348317e+03 -1.3023904e+02 4.4099240e+01
+-4.6112520e+02 -3.3050031e+01 1.6052754e+01
+-3.5609138e+01 -5.9203978e+00 3.0351403e+00
+-2.6152694e+00 -7.4350769e-01 0.0000000e+00
+0 0 0
+0 0 0
+-8.2614330e+00 -4.7433937e-01 1.7002174e-01
+-1.6258264e+02 -8.9958364e+00 4.7888306e+00
+-2.9314316e+03 -1.6013698e+02 1.0957847e+02
+-5.4077876e+04 -2.9848658e+03 2.3754344e+03
+-7.8811401e+05 -2.9473174e+04 9.5565108e+03
+-2.0190691e+06 -7.4159516e+04 2.5096832e+04
+-3.3813167e+06 -1.1741343e+05 4.3904020e+04
+-4.4459347e+06 -1.4426979e+05 5.7693786e+04
+-5.0491408e+06 -1.5371574e+05 6.3545975e+04
+-5.2544609e+06 -1.5316697e+05 6.4669259e+04
+-5.1906990e+06 -1.4966015e+05 6.5530035e+04
+-4.9318395e+06 -1.4521902e+05 6.8191359e+04
+-4.4703952e+06 -1.3692645e+05 7.1109873e+04
+-3.7582862e+06 -1.1966480e+05 6.8332552e+04
+-2.7861012e+06 -9.0650765e+04 5.1641214e+04
+-1.6681126e+06 -5.4157490e+04 2.1554719e+04
+-6.7507053e+05 -2.1708836e+04 -1.8867889e+03
+-4.7399935e+04 -2.7231282e+03 8.8345931e+01
+-2.5612504e+03 -1.6021121e+02 5.2683718e+01
+-1.4864819e+02 -1.2543962e+01 9.5117217e+00
+-8.9287578e+00 -1.1115750e+00 0.0000000e+00
+0 0 0
+0 0 0
+-1.7682342e+01 -9.8009948e-01 4.5599417e-01
+-3.5396520e+02 -2.0121230e+01 1.0747425e+01
+-6.4242502e+03 -3.8099106e+02 2.1790450e+02
+-1.1626648e+05 -7.3015492e+03 4.3097325e+03
+-1.7225453e+06 -6.7160746e+04 3.2483175e+04
+-4.1730541e+06 -1.6658259e+05 8.5826614e+04
+-6.8733885e+06 -2.6347667e+05 1.5267889e+05
+-9.0156478e+06 -3.2528737e+05 2.1338265e+05
+-1.0277715e+07 -3.4909708e+05 2.5689222e+05
+-1.0754144e+07 -3.5016473e+05 2.8317230e+05
+-1.0665874e+07 -3.4347569e+05 2.9535522e+05
+-1.0145453e+07 -3.3356496e+05 2.9410553e+05
+-9.1882831e+06 -3.1442582e+05 2.7639360e+05
+-7.7233964e+06 -2.7547875e+05 2.3478046e+05
+-5.7532386e+06 -2.1096814e+05 1.6144091e+05
+-3.5060073e+06 -1.2910566e+05 6.7152485e+04
+-1.4978676e+06 -5.3579418e+04 -1.9504321e+03
+-1.0231206e+05 -6.6916487e+03 2.6969347e+02
+-5.6261579e+03 -3.5686130e+02 1.1445356e+02
+-3.2292559e+02 -2.1311398e+01 1.9953332e+01
+-1.8874686e+01 -1.3826147e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.8195472e+01 -1.3110522e+00 4.8054152e-01
+-5.6304162e+02 -2.6978893e+01 1.0147371e+01
+-1.0155448e+04 -5.0557128e+02 1.8354090e+02
+-1.8198026e+05 -9.4551835e+03 3.2446718e+03
+-2.7167230e+06 -8.5994025e+04 5.8209531e+04
+-6.4617114e+06 -2.1783959e+05 1.5867670e+05
+-1.0574989e+07 -3.4568648e+05 2.8446660e+05
+-1.3843079e+07 -4.2528888e+05 4.0211813e+05
+-1.5779935e+07 -4.5363063e+05 4.9058504e+05
+-1.6520097e+07 -4.5257424e+05 5.4557528e+05
+-1.6388507e+07 -4.4322757e+05 5.6861936e+05
+-1.5583972e+07 -4.3182684e+05 5.5937609e+05
+-1.4106287e+07 -4.0965819e+05 5.1427050e+05
+-1.1858020e+07 -3.6145949e+05 4.2553485e+05
+-8.8486930e+06 -2.7839233e+05 2.8683086e+05
+-5.4212564e+06 -1.7055170e+05 1.2059627e+05
+-2.3503115e+06 -6.9819630e+04 1.0358501e+03
+-1.5956154e+05 -8.8279068e+03 6.1286995e+02
+-8.8536577e+03 -4.7361432e+02 1.8802172e+02
+-5.1007377e+02 -2.6422543e+01 3.1627857e+01
+-2.9703976e+01 -1.4631410e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.7759637e+01 -1.2550568e+00 2.8260275e-01
+-7.5155800e+02 -2.5510999e+01 5.0684218e+00
+-1.3498783e+04 -4.6914190e+02 7.5227473e+01
+-2.4082380e+05 -8.5651893e+03 1.0943623e+03
+-3.5568558e+06 -7.9552172e+04 7.9786564e+04
+-8.4322712e+06 -2.0778375e+05 2.2157568e+05
+-1.3771715e+07 -3.3125525e+05 3.9729350e+05
+-1.7995077e+07 -4.0552118e+05 5.6059546e+05
+-2.0477644e+07 -4.2875224e+05 6.8216153e+05
+-2.1403441e+07 -4.2436491e+05 7.5547462e+05
+-2.1202448e+07 -4.1446871e+05 7.8258153e+05
+-2.0139452e+07 -4.0538829e+05 7.6404433e+05
+-1.8218651e+07 -3.8768875e+05 6.9689689e+05
+-1.5313338e+07 -3.4491888e+05 5.7282297e+05
+-1.1429278e+07 -2.6697903e+05 3.8489111e+05
+-7.0017191e+06 -1.6308234e+05 1.6309899e+05
+-3.0312364e+06 -6.5226704e+04 4.5379095e+03
+-2.0945939e+05 -8.2284476e+03 9.5646378e+02
+-1.1660875e+04 -4.4910186e+02 2.5043473e+02
+-6.7215500e+02 -2.4766435e+01 4.1134913e+01
+-3.8921568e+01 -1.2887350e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.5128763e+01 -8.7116143e-01 5.5937048e-02
+-8.9635970e+02 -1.7516379e+01 1.5790938e-02
+-1.6062902e+04 -3.1771056e+02 -1.9129083e+01
+-2.8597110e+05 -5.7124326e+03 -5.5872537e+02
+-4.1564622e+06 -5.4594804e+04 9.3982652e+04
+-9.8761705e+06 -1.4637484e+05 2.6328910e+05
+-1.6125767e+07 -2.3426616e+05 4.7048533e+05
+-2.1040200e+07 -2.8565981e+05 6.5953035e+05
+-2.3894476e+07 -2.9987312e+05 7.9615151e+05
+-2.4921609e+07 -2.9488225e+05 8.7427575e+05
+-2.4641876e+07 -2.8738871e+05 8.9860903e+05
+-2.3376111e+07 -2.8204997e+05 8.7220483e+05
+-2.1132363e+07 -2.7156399e+05 7.9334271e+05
+-1.7757261e+07 -2.4324067e+05 6.5249106e+05
+-1.3246101e+07 -1.8900004e+05 4.3969695e+05
+-8.0971664e+06 -1.1513753e+05 1.8720371e+05
+-3.4803461e+06 -4.5171691e+04 6.8743737e+03
+-2.4651551e+05 -5.6556365e+03 1.1826429e+03
+-1.3735030e+04 -3.1242790e+02 2.8870621e+02
+-7.8994281e+02 -1.7264336e+01 4.6813192e+01
+-4.5330021e+01 -8.8177827e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9703506e+01 -3.0817002e-01 -9.6372963e-02
+-9.8619771e+02 -6.1620442e+00 -3.1797175e+00
+-1.7654018e+04 -1.1103810e+02 -7.5267184e+01
+-3.1401475e+05 -1.9830717e+03 -1.4875463e+03
+-4.5066910e+06 -1.9305833e+04 1.0107117e+05
+-1.0740124e+07 -5.2506001e+04 2.8430651e+05
+-1.7540859e+07 -8.4210924e+04 5.0624593e+05
+-2.2864894e+07 -1.0247523e+05 7.0511819e+05
+-2.5927786e+07 -1.0717080e+05 8.4453487e+05
+-2.6998209e+07 -1.0502845e+05 9.2003204e+05
+-2.6657128e+07 -1.0225186e+05 9.3929731e+05
+-2.5262764e+07 -1.0054748e+05 9.0793373e+05
+-2.2825859e+07 -9.7168919e+04 8.2536738e+05
+-1.9174641e+07 -8.7352202e+04 6.8076398e+05
+-1.4294504e+07 -6.8013469e+04 4.6072311e+05
+-8.7193614e+06 -4.1376670e+04 1.9671439e+05
+-3.7224099e+06 -1.6071431e+04 8.0267265e+03
+-2.6889245e+05 -2.0018700e+03 1.2907003e+03
+-1.4979786e+04 -1.1118181e+02 3.0559863e+02
+-8.5921503e+02 -6.1602904e+00 4.9239276e+01
+-4.8894575e+01 -3.1355172e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1248320e+01 3.0817003e-01 -1.4857262e-01
+-1.0165390e+03 6.1620442e+00 -4.2524541e+00
+-1.8191663e+04 1.1103810e+02 -9.3780953e+01
+-3.2349910e+05 1.9830717e+03 -1.7904425e+03
+-4.6211487e+06 1.9305833e+04 1.0306969e+05
+-1.1026449e+07 5.2506001e+04 2.9031162e+05
+-1.8011095e+07 8.4210927e+04 5.1619233e+05
+-2.3470206e+07 1.0247524e+05 7.1707959e+05
+-2.6599735e+07 1.0717080e+05 8.5607661e+05
+-2.7681337e+07 1.0502845e+05 9.2953841e+05
+-2.7317298e+07 1.0225187e+05 9.4642825e+05
+-2.5878930e+07 1.0054748e+05 9.1340822e+05
+-2.3377946e+07 9.7168920e+04 8.3036023e+05
+-1.9636047e+07 8.7352202e+04 6.8589281e+05
+-1.4634703e+07 6.8013469e+04 4.6511781e+05
+-8.9192749e+06 4.1376671e+04 1.9879712e+05
+-3.7975724e+06 1.6071431e+04 8.3644814e+03
+-2.7634100e+05 2.0018700e+03 1.3205406e+03
+-1.5392333e+04 1.1118181e+02 3.0983963e+02
+-8.8185934e+02 6.1602905e+00 4.9823962e+01
+-5.0014153e+01 3.1355172e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9703506e+01 8.7116143e-01 -9.6372965e-02
+-9.8619771e+02 1.7516379e+01 -3.1797174e+00
+-1.7654018e+04 3.1771056e+02 -7.5267182e+01
+-3.1401475e+05 5.7124327e+03 -1.4875464e+03
+-4.5066910e+06 5.4594804e+04 1.0107117e+05
+-1.0740124e+07 1.4637484e+05 2.8430651e+05
+-1.7540859e+07 2.3426616e+05 5.0624593e+05
+-2.2864894e+07 2.8565981e+05 7.0511819e+05
+-2.5927786e+07 2.9987312e+05 8.4453487e+05
+-2.6998209e+07 2.9488225e+05 9.2003204e+05
+-2.6657128e+07 2.8738872e+05 9.3929731e+05
+-2.5262764e+07 2.8204997e+05 9.0793373e+05
+-2.2825859e+07 2.7156399e+05 8.2536738e+05
+-1.9174641e+07 2.4324067e+05 6.8076398e+05
+-1.4294504e+07 1.8900004e+05 4.6072311e+05
+-8.7193614e+06 1.1513753e+05 1.9671439e+05
+-3.7224099e+06 4.5171691e+04 8.0267265e+03
+-2.6889245e+05 5.6556365e+03 1.2907003e+03
+-1.4979786e+04 3.1242790e+02 3.0559863e+02
+-8.5921503e+02 1.7264336e+01 4.9239276e+01
+-4.8894575e+01 8.8177827e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.5128763e+01 1.2550568e+00 5.5937050e-02
+-8.9635970e+02 2.5510999e+01 1.5790931e-02
+-1.6062902e+04 4.6914190e+02 -1.9129083e+01
+-2.8597110e+05 8.5651893e+03 -5.5872536e+02
+-4.1564622e+06 7.9552172e+04 9.3982651e+04
+-9.8761705e+06 2.0778375e+05 2.6328910e+05
+-1.6125767e+07 3.3125525e+05 4.7048534e+05
+-2.1040200e+07 4.0552118e+05 6.5953035e+05
+-2.3894476e+07 4.2875224e+05 7.9615151e+05
+-2.4921609e+07 4.2436491e+05 8.7427575e+05
+-2.4641876e+07 4.1446871e+05 8.9860903e+05
+-2.3376111e+07 4.0538830e+05 8.7220483e+05
+-2.1132363e+07 3.8768875e+05 7.9334271e+05
+-1.7757261e+07 3.4491888e+05 6.5249106e+05
+-1.3246101e+07 2.6697903e+05 4.3969695e+05
+-8.0971664e+06 1.6308234e+05 1.8720371e+05
+-3.4803461e+06 6.5226704e+04 6.8743737e+03
+-2.4651551e+05 8.2284477e+03 1.1826429e+03
+-1.3735030e+04 4.4910186e+02 2.8870621e+02
+-7.8994281e+02 2.4766435e+01 4.6813192e+01
+-4.5330021e+01 1.2887350e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.7759637e+01 1.3110522e+00 2.8260276e-01
+-7.5155800e+02 2.6978893e+01 5.0684219e+00
+-1.3498783e+04 5.0557128e+02 7.5227475e+01
+-2.4082380e+05 9.4551835e+03 1.0943623e+03
+-3.5568558e+06 8.5994025e+04 7.9786563e+04
+-8.4322712e+06 2.1783959e+05 2.2157568e+05
+-1.3771715e+07 3.4568648e+05 3.9729350e+05
+-1.7995077e+07 4.2528888e+05 5.6059546e+05
+-2.0477644e+07 4.5363063e+05 6.8216154e+05
+-2.1403441e+07 4.5257424e+05 7.5547462e+05
+-2.1202448e+07 4.4322756e+05 7.8258153e+05
+-2.0139452e+07 4.3182684e+05 7.6404433e+05
+-1.8218651e+07 4.0965819e+05 6.9689689e+05
+-1.5313338e+07 3.6145949e+05 5.7282297e+05
+-1.1429278e+07 2.7839234e+05 3.8489111e+05
+-7.0017191e+06 1.7055170e+05 1.6309899e+05
+-3.0312364e+06 6.9819630e+04 4.5379094e+03
+-2.0945939e+05 8.8279068e+03 9.5646378e+02
+-1.1660875e+04 4.7361432e+02 2.5043473e+02
+-6.7215500e+02 2.6422543e+01 4.1134913e+01
+-3.8921568e+01 1.4631410e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.8195472e+01 9.8009948e-01 4.8054153e-01
+-5.6304162e+02 2.0121230e+01 1.0147371e+01
+-1.0155448e+04 3.8099106e+02 1.8354090e+02
+-1.8198026e+05 7.3015492e+03 3.2446718e+03
+-2.7167230e+06 6.7160746e+04 5.8209530e+04
+-6.4617114e+06 1.6658259e+05 1.5867670e+05
+-1.0574989e+07 2.6347667e+05 2.8446660e+05
+-1.3843079e+07 3.2528737e+05 4.0211813e+05
+-1.5779935e+07 3.4909708e+05 4.9058504e+05
+-1.6520097e+07 3.5016473e+05 5.4557528e+05
+-1.6388507e+07 3.4347569e+05 5.6861936e+05
+-1.5583972e+07 3.3356496e+05 5.5937609e+05
+-1.4106287e+07 3.1442582e+05 5.1427050e+05
+-1.1858020e+07 2.7547875e+05 4.2553485e+05
+-8.8486930e+06 2.1096814e+05 2.8683086e+05
+-5.4212564e+06 1.2910566e+05 1.2059627e+05
+-2.3503115e+06 5.3579418e+04 1.0358501e+03
+-1.5956154e+05 6.6916487e+03 6.1286995e+02
+-8.8536577e+03 3.5686130e+02 1.8802172e+02
+-5.1007377e+02 2.1311398e+01 3.1627857e+01
+-2.9703976e+01 1.3826147e+00 0.0000000e+00
+0 0 0
+0 0 0
+-1.7682342e+01 4.7433937e-01 4.5599417e-01
+-3.5396520e+02 8.9958364e+00 1.0747425e+01
+-6.4242502e+03 1.6013698e+02 2.1790450e+02
+-1.1626648e+05 2.9848658e+03 4.3097325e+03
+-1.7225453e+06 2.9473174e+04 3.2483175e+04
+-4.1730541e+06 7.4159516e+04 8.5826614e+04
+-6.8733885e+06 1.1741343e+05 1.5267889e+05
+-9.0156478e+06 1.4426979e+05 2.1338265e+05
+-1.0277715e+07 1.5371574e+05 2.5689222e+05
+-1.0754144e+07 1.5316697e+05 2.8317230e+05
+-1.0665874e+07 1.4966015e+05 2.9535522e+05
+-1.0145453e+07 1.4521902e+05 2.9410553e+05
+-9.1882831e+06 1.3692645e+05 2.7639360e+05
+-7.7233964e+06 1.1966480e+05 2.3478046e+05
+-5.7532386e+06 9.0650765e+04 1.6144091e+05
+-3.5060073e+06 5.4157490e+04 6.7152485e+04
+-1.4978676e+06 2.1708836e+04 -1.9504321e+03
+-1.0231206e+05 2.7231282e+03 2.6969347e+02
+-5.6261579e+03 1.6021121e+02 1.1445356e+02
+-3.2292559e+02 1.2543962e+01 1.9953332e+01
+-1.8874686e+01 1.1115750e+00 0.0000000e+00
+0 0 0
+0 0 0
+-8.2614330e+00 1.5950730e-01 1.7002174e-01
+-1.6258264e+02 2.1196243e+00 4.7888307e+00
+-2.9314316e+03 2.2111109e+01 1.0957847e+02
+-5.4077876e+04 1.8810001e+02 2.3754344e+03
+-7.8811401e+05 1.5515792e+03 9.5565108e+03
+-2.0190691e+06 4.1895383e+03 2.5096832e+04
+-3.3813167e+06 6.2959526e+03 4.3904020e+04
+-4.4459347e+06 6.7369884e+03 5.7693786e+04
+-5.0491408e+06 6.0377020e+03 6.3545975e+04
+-5.2544609e+06 5.2707176e+03 6.4669259e+04
+-5.1906990e+06 4.9429055e+03 6.5530035e+04
+-4.9318395e+06 4.9054525e+03 6.8191360e+04
+-4.4703952e+06 4.6363571e+03 7.1109872e+04
+-3.7582862e+06 3.4027576e+03 6.8332552e+04
+-2.7861012e+06 8.7918037e+02 5.1641213e+04
+-1.6681126e+06 -1.5852049e+03 2.1554719e+04
+-6.7507053e+05 -1.5825875e+03 -1.8867889e+03
+-4.7399935e+04 1.3023904e+02 8.8345931e+01
+-2.5612504e+03 3.3050031e+01 5.2683718e+01
+-1.4864819e+02 5.9203978e+00 9.5117217e+00
+-8.9287578e+00 7.4350769e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.2945685e+00 7.7951002e-02 -4.5321829e-02
+-3.8276615e+01 8.8809271e-01 -3.6789751e-01
+-5.3172393e+02 7.5160750e+00 -8.0924660e-01
+-6.4391346e+03 5.2421623e+01 6.5357629e+00
+-5.8142554e+04 2.8698066e+02 3.8642772e+02
+-1.3298679e+05 6.8374286e+02 1.6184152e+03
+-2.1367261e+05 1.0613373e+03 3.0769351e+03
+-2.8140377e+05 1.2712337e+03 3.6911429e+03
+-3.2620775e+05 1.3145730e+03 3.2331614e+03
+-3.4737398e+05 1.2795264e+03 2.4358334e+03
+-3.4808567e+05 1.2355655e+03 2.1960863e+03
+-3.3097242e+05 1.1917179e+03 2.9483256e+03
+-2.9692935e+05 1.1064777e+03 4.4277254e+03
+-2.4647494e+05 9.1852142e+02 5.5349453e+03
+-1.8247487e+05 6.1120963e+02 4.7798192e+03
+-1.1274446e+05 2.8691873e+02 2.1179070e+03
+-4.9765366e+04 1.0179174e+02 9.5456488e+01
+-5.5348317e+03 4.6277243e+01 4.4099240e+01
+-4.6112520e+02 1.1612683e+01 1.6052754e+01
+-3.5609138e+01 2.3766136e+00 3.0351403e+00
+-2.6152694e+00 3.2557875e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.4319699e-01 3.4015100e-02 -3.9364764e-02
+-6.1017170e+00 3.6270688e-01 -4.1528048e-01
+-6.4990972e+01 2.7737355e+00 -2.7313912e+00
+-5.5726134e+02 1.6659668e+01 -1.0629328e+01
+-3.2319557e+03 7.1579284e+01 1.1811767e+01
+-7.4528128e+03 1.6422585e+02 8.0685490e+01
+-1.2044634e+04 2.5920052e+02 1.6047737e+02
+-1.5907268e+04 3.2306759e+02 1.9584995e+02
+-1.8459589e+04 3.4861461e+02 1.7436226e+02
+-1.9654751e+04 3.4912544e+02 1.3435607e+02
+-1.9679419e+04 3.3986749e+02 1.2411874e+02
+-1.8691515e+04 3.2619853e+02 1.6647291e+02
+-1.6744328e+04 3.0255033e+02 2.4435942e+02
+-1.3865664e+04 2.5906212e+02 2.9760431e+02
+-1.0220290e+04 1.9284840e+02 2.5515871e+02
+-6.2611567e+03 1.1686475e+02 1.2652323e+02
+-2.7289796e+03 5.3649242e+01 2.9493329e+01
+-4.7324728e+02 1.6249131e+01 1.1282313e+01
+-5.6684020e+01 3.8570961e+00 3.8217596e+00
+-5.9711977e+00 7.7278558e-01 7.4491860e-01
+-5.6072713e-01 1.0598575e-01 0.0000000e+00
+0 0 0
+0 0 0
+-6.9569382e-02 7.7130711e-03 -1.2639366e-02
+-7.9849376e-01 7.8668948e-02 -1.2530806e-01
+-6.7068673e+00 5.6291635e-01 -7.5168417e-01
+-4.3691807e+01 3.0799591e+00 -2.6536415e+00
+-1.9185594e+02 1.1756268e+01 -1.5999261e+00
+-4.3522689e+02 2.6538465e+01 2.7322324e+00
+-7.0348475e+02 4.2051752e+01 7.5892317e+00
+-9.2820905e+02 5.2884674e+01 9.9427069e+00
+-1.0744307e+03 5.7584331e+01 9.1773950e+00
+-1.1408053e+03 5.8015360e+01 7.3465236e+00
+-1.1402116e+03 5.6585186e+01 7.0569716e+00
+-1.0827378e+03 5.4267512e+01 9.5335159e+00
+-9.7072168e+02 5.0312814e+01 1.3874673e+01
+-8.0419832e+02 4.3274232e+01 1.7093881e+01
+-5.9198672e+02 3.2699778e+01 1.5900884e+01
+-3.6179128e+02 2.0367173e+01 1.0640214e+01
+-1.6020488e+02 9.6298042e+00 5.6180790e+00
+-3.7151176e+01 3.0589512e+00 2.3374194e+00
+-6.0773061e+00 7.4899188e-01 7.6766052e-01
+-8.6589611e-01 1.5029735e-01 1.4970073e-01
+-1.0231707e-01 2.0559998e-02 0.0000000e+00
+0 0 0
+0 0 0
+-8.3477584e-03 0.0000000e+00 -1.8241528e-03
+-8.3665916e-02 0.0000000e+00 -1.7083341e-02
+-5.8862989e-01 0.0000000e+00 -9.4744833e-02
+-3.1499135e+00 0.0000000e+00 -3.0813972e-01
+-1.1589657e+01 0.0000000e+00 -2.9237856e-01
+-2.5630836e+01 0.0000000e+00 -4.1097091e-02
+-4.1141837e+01 0.0000000e+00 2.4698652e-01
+-5.3820289e+01 0.0000000e+00 4.1053323e-01
+-6.1658529e+01 0.0000000e+00 4.1555101e-01
+-6.4902381e+01 0.0000000e+00 3.5972611e-01
+-6.4617784e+01 0.0000000e+00 3.7212420e-01
+-6.1481661e+01 0.0000000e+00 5.1707803e-01
+-5.5464744e+01 0.0000000e+00 7.6842928e-01
+-4.6281795e+01 0.0000000e+00 1.0173630e+00
+-3.4256431e+01 0.0000000e+00 1.1220180e+00
+-2.1066900e+01 0.0000000e+00 1.0141547e+00
+-9.6379214e+00 0.0000000e+00 7.2315570e-01
+-2.7431685e+00 0.0000000e+00 3.2214373e-01
+-5.7492557e-01 0.0000000e+00 1.0544800e-01
+-1.0320996e-01 0.0000000e+00 2.0494459e-02
+-1.4176439e-02 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.2755240e-03 -1.6228502e-03 -4.4938413e-04
+-6.4466662e-02 -1.5759312e-02 -3.8893262e-03
+-4.6668437e-01 -1.0675777e-01 -1.9077078e-02
+-2.5636578e+00 -5.5786450e-01 -4.7468306e-02
+-9.6039367e+00 -2.0750085e+00 4.1820122e-02
+-2.1287660e+01 -4.6058088e+00 3.0445261e-01
+-3.4367335e+01 -7.0654873e+00 5.9543866e-01
+-4.5463734e+01 -8.4694658e+00 7.0834981e-01
+-5.2792159e+01 -8.7357752e+00 5.7775489e-01
+-5.6214166e+01 -8.4285544e+00 3.1809421e-01
+-5.6308828e+01 -8.0957741e+00 1.0491294e-01
+-5.3541906e+01 -7.8868004e+00 5.1957730e-02
+-4.8016019e+01 -7.5540077e+00 1.5724083e-01
+-3.9738854e+01 -6.6921597e+00 3.0645931e-01
+-2.9186513e+01 -5.1172212e+00 3.5376288e-01
+-1.7819232e+01 -3.1601577e+00 2.6625241e-01
+-8.0340341e+00 -1.4819937e+00 1.4435883e-01
+-2.1582000e+00 -5.0261554e-01 6.2005834e-02
+-4.0162937e-01 -1.3160590e-01 2.0315529e-02
+-5.8988895e-02 -2.7775965e-02 3.8704284e-03
+-6.4048984e-03 -3.9011120e-03 0.0000000e+00
+0 0 0
+0 0 0
+-6.0995592e-02 -7.5577650e-03 -2.6388746e-03
+-7.1594779e-01 -7.7165876e-02 -2.3778276e-02
+-6.1542446e+00 -5.6394855e-01 -1.1921025e-01
+-4.0860547e+01 -3.2907371e+00 -2.1759741e-01
+-1.8162403e+02 -1.4324501e+01 1.7999822e+00
+-4.1240841e+02 -3.2723099e+01 7.0987965e+00
+-6.6761689e+02 -4.8725612e+01 1.2891064e+01
+-8.8384016e+02 -5.4908968e+01 1.4961671e+01
+-1.0276840e+03 -5.2548980e+01 1.2028180e+01
+-1.0960677e+03 -4.7644586e+01 6.5066612e+00
+-1.0991746e+03 -4.4621074e+01 1.9949910e+00
+-1.0454948e+03 -4.3936887e+01 8.0199443e-01
+-9.3741622e+02 -4.2914680e+01 2.8572100e+00
+-7.7591013e+02 -3.7789429e+01 5.6662874e+00
+-5.7039485e+02 -2.7051197e+01 6.0083954e+00
+-3.4800469e+02 -1.4418020e+01 3.4796655e+00
+-1.5344448e+02 -5.8556976e+00 1.0929776e+00
+-3.4573249e+01 -2.4167533e+00 4.2918859e-01
+-5.2449302e+00 -6.7817085e-01 1.4337775e-01
+-6.3103679e-01 -1.4674161e-01 2.7484073e-02
+-5.8097626e-02 -2.0636484e-02 0.0000000e+00
+0 0 0
+0 0 0
+-4.2533414e-01 -2.0146328e-02 -5.2742816e-03
+-5.9188160e+00 -2.2426570e-01 -4.1075504e-02
+-6.3649936e+01 -1.8639700e+00 -8.2090063e-02
+-5.4953383e+02 -1.3151690e+01 2.0513490e+00
+-3.2003401e+03 -8.3496440e+01 3.9607664e+01
+-7.3783150e+03 -2.0559370e+02 1.3798045e+02
+-1.1920643e+04 -2.8023286e+02 2.4549614e+02
+-1.5746374e+04 -2.5242331e+02 2.8211700e+02
+-1.8290434e+04 -1.6474748e+02 2.2516034e+02
+-1.9508900e+04 -8.9447195e+01 1.2111188e+02
+-1.9578252e+04 -6.1241909e+01 3.6566039e+01
+-1.8641527e+04 -7.1305250e+01 1.3946778e+01
+-1.6738785e+04 -8.7385946e+01 5.2874382e+01
+-1.3887343e+04 -6.9712305e+01 1.0647666e+02
+-1.0247453e+04 -2.7415385e+00 1.0932993e+02
+-6.2804098e+03 6.2222481e+01 5.1942507e+01
+-2.7392774e+03 5.2389591e+01 3.9950429e+00
+-4.7070219e+02 -2.5992114e+00 1.6324087e+00
+-5.4449718e+01 -1.9335600e+00 6.5349625e-01
+-5.1315950e+00 -4.6251972e-01 1.2967170e-01
+-3.8699578e-01 -6.4696140e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.2719053e+00 -6.0747078e-02 1.7937554e-02
+-3.8009067e+01 -8.3654152e-01 3.6266617e-01
+-5.2917598e+02 -9.0556812e+00 5.0064253e+00
+-6.4178782e+03 -7.8666791e+01 4.9265113e+01
+-5.8025349e+04 -8.6630234e+02 7.1486554e+02
+-1.3262613e+05 -2.4188580e+03 2.5674716e+03
+-2.1291091e+05 -3.0602594e+03 4.5857901e+03
+-2.8023621e+05 -2.0820823e+03 5.2478977e+03
+-3.2491620e+05 -3.7681585e+02 4.1684187e+03
+-3.4641415e+05 8.7897372e+02 2.2401652e+03
+-3.4784553e+05 1.2559467e+03 6.8283791e+02
+-3.3161247e+05 9.8413646e+02 2.6743848e+02
+-2.9833274e+05 5.6432141e+02 1.0191180e+03
+-2.4824853e+05 6.2798285e+02 2.0950181e+03
+-1.8407409e+05 1.5115633e+03 2.1799262e+03
+-1.1382346e+05 2.3522965e+03 9.6885374e+02
+-5.0372154e+04 1.6680877e+03 -4.0055919e+01
+-5.5838271e+03 5.9642130e+00 3.7606017e-01
+-4.5749558e+02 -7.4544496e+00 2.2673376e+00
+-3.2911579e+01 -1.3846362e+00 4.9189525e-01
+-2.0244753e+00 -1.6359497e-01 0.0000000e+00
+0 0 0
+0 0 0
+-8.2553386e+00 -2.5286162e-01 1.8602022e-01
+-1.6240689e+02 -4.9634554e+00 4.1371813e+00
+-2.9265265e+03 -9.0676811e+01 8.0853202e+01
+-5.3959221e+04 -1.7118751e+03 1.5954072e+03
+-7.8175813e+05 -1.4379662e+04 8.7528822e+03
+-2.0027604e+06 -3.4877178e+04 2.4902476e+04
+-3.3493841e+06 -5.2540518e+04 4.2450040e+04
+-4.3959036e+06 -6.0613557e+04 5.0950391e+04
+-4.9853351e+06 -6.0587818e+04 4.7355726e+04
+-5.1852111e+06 -5.7767299e+04 3.6752270e+04
+-5.1231235e+06 -5.6042290e+04 2.6475016e+04
+-4.8698360e+06 -5.5983043e+04 2.1438661e+04
+-4.4153136e+06 -5.5428520e+04 2.2349953e+04
+-3.7090874e+06 -5.0937971e+04 2.4717105e+04
+-2.7404049e+06 -4.0128084e+04 2.0660526e+04
+-1.6285533e+06 -2.4554528e+04 8.0080914e+03
+-6.5329789e+05 -1.0060112e+04 -2.0363488e+03
+-4.7788645e+04 -1.5718612e+03 -6.9813687e+01
+-2.5570550e+03 -8.6439789e+01 4.9762781e+00
+-1.4101426e+02 -5.4718094e+00 1.4295277e+00
+-7.2929484e+00 -3.6987661e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.7757604e+01 -5.7273977e-01 3.9514038e-01
+-3.5507579e+02 -1.1942998e+01 8.4852794e+00
+-6.4372790e+03 -2.2900994e+02 1.5984723e+02
+-1.1640756e+05 -4.4301607e+03 3.0192170e+03
+-1.7259448e+06 -3.4730841e+04 2.6769866e+04
+-4.1728061e+06 -8.2125841e+04 7.3770529e+04
+-6.8558435e+06 -1.2429499e+05 1.2797995e+05
+-8.9687156e+06 -1.4632880e+05 1.6676305e+05
+-1.0201729e+07 -1.5036598e+05 1.8055489e+05
+-1.0659327e+07 -1.4691427e+05 1.7488435e+05
+-1.0563148e+07 -1.4417423e+05 1.6028968e+05
+-1.0041968e+07 -1.4361107e+05 1.4443262e+05
+-9.0877520e+06 -1.4085349e+05 1.2932648e+05
+-7.6258679e+06 -1.2885790e+05 1.0971790e+05
+-5.6569655e+06 -1.0272106e+05 7.6037735e+04
+-3.4193369e+06 -6.5190980e+04 3.0003772e+04
+-1.4465172e+06 -2.8344131e+04 -3.0625988e+03
+-1.0265690e+05 -4.1942099e+03 -9.5412256e+01
+-5.6016751e+03 -2.1895804e+02 1.2623178e+01
+-3.0682604e+02 -1.1976646e+01 3.0284625e+00
+-1.5568130e+01 -6.4797006e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.8404863e+01 -7.8836032e-01 4.2501179e-01
+-5.6654095e+02 -1.6385980e+01 8.3673160e+00
+-1.0207708e+04 -3.0997599e+02 1.4159327e+02
+-1.8280072e+05 -5.8475276e+03 2.3794283e+03
+-2.7509667e+06 -4.4656479e+04 4.6548774e+04
+-6.5202217e+06 -1.0773358e+05 1.3066675e+05
+-1.0633645e+07 -1.6332496e+05 2.2835318e+05
+-1.3872581e+07 -1.9111179e+05 3.0263771e+05
+-1.5769442e+07 -1.9454679e+05 3.3632558e+05
+-1.6477432e+07 -1.8863704e+05 3.3538287e+05
+-1.6326414e+07 -1.8505299e+05 3.1416814e+05
+-1.5511553e+07 -1.8584178e+05 2.8397971e+05
+-1.4027586e+07 -1.8463722e+05 2.4906265e+05
+-1.1770645e+07 -1.7118127e+05 2.0401099e+05
+-8.7469911e+06 -1.3804799e+05 1.3763597e+05
+-5.3161503e+06 -8.8241578e+04 5.5580416e+04
+-2.2828874e+06 -3.8116356e+04 -2.0714788e+03
+-1.6005406e+05 -5.7509278e+03 -2.2240687e+01
+-8.8143937e+03 -3.0566424e+02 2.5201478e+01
+-4.8529302e+02 -1.6448883e+01 4.8929621e+00
+-2.4625614e+01 -8.3337004e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.8076555e+01 -7.6072401e-01 2.8928167e-01
+-7.5690554e+02 -1.5578307e+01 4.8291513e+00
+-1.3579894e+04 -2.8864296e+02 6.4607640e+01
+-2.4211738e+05 -5.3084472e+03 8.1910345e+02
+-3.6226878e+06 -4.0542699e+04 6.2537260e+04
+-8.5546993e+06 -1.0124454e+05 1.7847627e+05
+-1.3914679e+07 -1.5375934e+05 3.1187493e+05
+-1.8109063e+07 -1.7775909e+05 4.1250835e+05
+-2.0539234e+07 -1.7763494e+05 4.5718638e+05
+-2.1419300e+07 -1.6953420e+05 4.5394266e+05
+-2.1190109e+07 -1.6582083e+05 4.2237142e+05
+-2.0112829e+07 -1.6855198e+05 3.7845899e+05
+-1.8183131e+07 -1.7077906e+05 3.2908114e+05
+-1.5262225e+07 -1.6131850e+05 2.6810493e+05
+-1.1348407e+07 -1.3176339e+05 1.8094852e+05
+-6.8988201e+06 -8.4426656e+04 7.4234552e+04
+-2.9589272e+06 -3.5753128e+04 -4.3785181e+02
+-2.1025012e+05 -5.4827328e+03 8.4682620e+01
+-1.1621159e+04 -2.9794179e+02 3.7243448e+01
+-6.4156792e+02 -1.6182808e+01 6.3902963e+00
+-3.2555380e+01 -8.0926216e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.5480781e+01 -5.2867427e-01 1.1996846e-01
+-9.0212541e+02 -1.0694480e+01 1.0018518e+00
+-1.6147029e+04 -1.9520147e+02 -8.3124443e+00
+-2.8726739e+05 -3.5318209e+03 -4.8865627e+02
+-4.2427814e+06 -2.7259255e+04 7.2547157e+04
+-1.0043874e+07 -7.0255751e+04 2.0926189e+05
+-1.6327686e+07 -1.0686761e+05 3.6428987e+05
+-2.1208829e+07 -1.2224032e+05 4.7740001e+05
+-2.3996673e+07 -1.2013018e+05 5.2209215e+05
+-2.4965968e+07 -1.1298709e+05 5.0990429e+05
+-2.4653867e+07 -1.1022202e+05 4.6629597e+05
+-2.3377165e+07 -1.1332656e+05 4.1212461e+05
+-2.1130743e+07 -1.1688911e+05 3.5661499e+05
+-1.7741887e+07 -1.1221477e+05 2.9213679e+05
+-1.3192380e+07 -9.2612025e+04 1.9926481e+05
+-8.0055199e+06 -5.9414926e+04 8.2606582e+04
+-3.4094923e+06 -2.4724786e+04 7.2445028e+02
+-2.4760922e+05 -3.8262167e+03 1.6163681e+02
+-1.3705038e+04 -2.1089830e+02 4.4600961e+01
+-7.5715360e+02 -1.1569850e+01 7.1987906e+00
+-3.8361120e+01 -5.7937190e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0043130e+01 -1.8702305e-01 -2.0273810e-03
+-9.9152810e+02 -3.7603092e+00 -1.6058067e+00
+-1.7727340e+04 -6.8157518e+01 -5.5327608e+01
+-3.1508630e+05 -1.2245170e+03 -1.2910830e+03
+-4.6029472e+06 -9.5306703e+03 7.7236470e+04
+-1.0932422e+07 -2.5003124e+04 2.2428153e+05
+-1.7774279e+07 -3.8067480e+04 3.8890057e+05
+-2.3059831e+07 -4.3292618e+04 5.0488957e+05
+-2.6045398e+07 -4.2154620e+04 5.4452620e+05
+-2.7049991e+07 -3.9325657e+04 5.2264689e+05
+-2.6675772e+07 -3.8313791e+04 4.6938226e+05
+-2.5276332e+07 -3.9659634e+04 4.0928290e+05
+-2.2845295e+07 -4.1321401e+04 3.5315085e+05
+-1.9185515e+07 -4.0022723e+04 2.9183310e+05
+-1.4263654e+07 -3.3215548e+04 2.0158728e+05
+-8.6400267e+06 -2.1324283e+04 8.4162013e+04
+-3.6555097e+06 -8.7936566e+03 1.3306065e+03
+-2.7022245e+05 -1.3661330e+03 2.0052442e+02
+-1.4962019e+04 -7.5752993e+01 4.7612205e+01
+-8.2646399e+02 -4.1768240e+00 7.4681311e+00
+-4.1796126e+01 -2.0968926e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1576538e+01 1.8702305e-01 -4.5828203e-02
+-1.0215792e+03 3.7603093e+00 -2.5263036e+00
+-1.8258801e+04 6.8157523e+01 -7.1702683e+01
+-3.2445103e+05 1.2245171e+03 -1.5688070e+03
+-4.7202603e+06 9.5306723e+03 7.8481480e+04
+-1.1226436e+07 2.5003128e+04 2.2846252e+05
+-1.8254279e+07 3.8067483e+04 3.9551096e+05
+-2.3672746e+07 4.3292621e+04 5.1146565e+05
+-2.6720945e+07 4.2154622e+04 5.4836585e+05
+-2.7734010e+07 3.9325659e+04 5.2238792e+05
+-2.7336981e+07 3.8313795e+04 4.6544270e+05
+-2.5896263e+07 3.9659638e+04 4.0345619e+05
+-2.3404914e+07 4.1321410e+04 3.4778109e+05
+-1.9656938e+07 4.0022729e+04 2.8862751e+05
+-1.4613038e+07 3.3215547e+04 2.0053123e+05
+-8.8453440e+06 2.1324283e+04 8.3951803e+04
+-3.7327290e+06 8.7936568e+03 1.5210678e+03
+-2.7776421e+05 1.3661330e+03 2.1201890e+02
+-1.5380124e+04 7.5752992e+01 4.8304016e+01
+-8.4941924e+02 4.1768241e+00 7.5102773e+00
+-4.2923254e+01 2.0968927e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0043130e+01 5.2867428e-01 -2.0273587e-03
+-9.9152810e+02 1.0694480e+01 -1.6058062e+00
+-1.7727340e+04 1.9520147e+02 -5.5327602e+01
+-3.1508630e+05 3.5318208e+03 -1.2910830e+03
+-4.6029472e+06 2.7259255e+04 7.7236470e+04
+-1.0932422e+07 7.0255750e+04 2.2428152e+05
+-1.7774279e+07 1.0686761e+05 3.8890057e+05
+-2.3059831e+07 1.2224032e+05 5.0488957e+05
+-2.6045398e+07 1.2013018e+05 5.4452620e+05
+-2.7049991e+07 1.1298709e+05 5.2264689e+05
+-2.6675772e+07 1.1022202e+05 4.6938226e+05
+-2.5276332e+07 1.1332656e+05 4.0928291e+05
+-2.2845295e+07 1.1688911e+05 3.5315085e+05
+-1.9185515e+07 1.1221477e+05 2.9183309e+05
+-1.4263654e+07 9.2612029e+04 2.0158728e+05
+-8.6400267e+06 5.9414928e+04 8.4162014e+04
+-3.6555097e+06 2.4724787e+04 1.3306064e+03
+-2.7022245e+05 3.8262167e+03 2.0052441e+02
+-1.4962019e+04 2.1089831e+02 4.7612206e+01
+-8.2646399e+02 1.1569851e+01 7.4681311e+00
+-4.1796126e+01 5.7937191e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.5480781e+01 7.6072401e-01 1.1996847e-01
+-9.0212541e+02 1.5578307e+01 1.0018520e+00
+-1.6147029e+04 2.8864296e+02 -8.3124590e+00
+-2.8726739e+05 5.3084473e+03 -4.8865582e+02
+-4.2427814e+06 4.0542700e+04 7.2547156e+04
+-1.0043874e+07 1.0124454e+05 2.0926189e+05
+-1.6327686e+07 1.5375934e+05 3.6428987e+05
+-2.1208829e+07 1.7775909e+05 4.7740001e+05
+-2.3996673e+07 1.7763494e+05 5.2209215e+05
+-2.4965968e+07 1.6953420e+05 5.0990429e+05
+-2.4653867e+07 1.6582083e+05 4.6629597e+05
+-2.3377165e+07 1.6855199e+05 4.1212461e+05
+-2.1130743e+07 1.7077906e+05 3.5661499e+05
+-1.7741887e+07 1.6131850e+05 2.9213679e+05
+-1.3192380e+07 1.3176339e+05 1.9926481e+05
+-8.0055199e+06 8.4426657e+04 8.2606581e+04
+-3.4094923e+06 3.5753129e+04 7.2445013e+02
+-2.4760922e+05 5.4827328e+03 1.6163681e+02
+-1.3705038e+04 2.9794180e+02 4.4600961e+01
+-7.5715360e+02 1.6182808e+01 7.1987907e+00
+-3.8361120e+01 8.0926217e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.8076555e+01 7.8836032e-01 2.8928167e-01
+-7.5690554e+02 1.6385980e+01 4.8291515e+00
+-1.3579894e+04 3.0997599e+02 6.4607641e+01
+-2.4211738e+05 5.8475276e+03 8.1910366e+02
+-3.6226878e+06 4.4656478e+04 6.2537259e+04
+-8.5546993e+06 1.0773357e+05 1.7847627e+05
+-1.3914679e+07 1.6332496e+05 3.1187493e+05
+-1.8109063e+07 1.9111179e+05 4.1250835e+05
+-2.0539234e+07 1.9454679e+05 4.5718638e+05
+-2.1419300e+07 1.8863705e+05 4.5394266e+05
+-2.1190109e+07 1.8505299e+05 4.2237142e+05
+-2.0112829e+07 1.8584178e+05 3.7845899e+05
+-1.8183131e+07 1.8463723e+05 3.2908114e+05
+-1.5262225e+07 1.7118127e+05 2.6810493e+05
+-1.1348407e+07 1.3804799e+05 1.8094852e+05
+-6.8988201e+06 8.8241578e+04 7.4234551e+04
+-2.9589272e+06 3.8116357e+04 -4.3785184e+02
+-2.1025012e+05 5.7509278e+03 8.4682622e+01
+-1.1621159e+04 3.0566425e+02 3.7243449e+01
+-6.4156792e+02 1.6448883e+01 6.3902964e+00
+-3.2555380e+01 8.3337003e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.8404863e+01 5.7273977e-01 4.2501179e-01
+-5.6654095e+02 1.1942998e+01 8.3673160e+00
+-1.0207708e+04 2.2900994e+02 1.4159327e+02
+-1.8280072e+05 4.4301607e+03 2.3794283e+03
+-2.7509667e+06 3.4730840e+04 4.6548773e+04
+-6.5202217e+06 8.2125841e+04 1.3066675e+05
+-1.0633645e+07 1.2429499e+05 2.2835318e+05
+-1.3872581e+07 1.4632880e+05 3.0263771e+05
+-1.5769442e+07 1.5036597e+05 3.3632558e+05
+-1.6477432e+07 1.4691427e+05 3.3538287e+05
+-1.6326414e+07 1.4417423e+05 3.1416814e+05
+-1.5511553e+07 1.4361107e+05 2.8397971e+05
+-1.4027586e+07 1.4085349e+05 2.4906265e+05
+-1.1770645e+07 1.2885790e+05 2.0401100e+05
+-8.7469911e+06 1.0272106e+05 1.3763597e+05
+-5.3161503e+06 6.5190979e+04 5.5580416e+04
+-2.2828874e+06 2.8344131e+04 -2.0714788e+03
+-1.6005406e+05 4.1942099e+03 -2.2240687e+01
+-8.8143937e+03 2.1895804e+02 2.5201478e+01
+-4.8529302e+02 1.1976646e+01 4.8929621e+00
+-2.4625614e+01 6.4797006e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.7757604e+01 2.5286162e-01 3.9514038e-01
+-3.5507579e+02 4.9634554e+00 8.4852793e+00
+-6.4372790e+03 9.0676811e+01 1.5984723e+02
+-1.1640756e+05 1.7118751e+03 3.0192170e+03
+-1.7259448e+06 1.4379662e+04 2.6769865e+04
+-4.1728061e+06 3.4877178e+04 7.3770530e+04
+-6.8558435e+06 5.2540516e+04 1.2797995e+05
+-8.9687156e+06 6.0613555e+04 1.6676304e+05
+-1.0201729e+07 6.0587817e+04 1.8055489e+05
+-1.0659327e+07 5.7767299e+04 1.7488435e+05
+-1.0563148e+07 5.6042287e+04 1.6028968e+05
+-1.0041968e+07 5.5983040e+04 1.4443261e+05
+-9.0877520e+06 5.5428519e+04 1.2932648e+05
+-7.6258679e+06 5.0937971e+04 1.0971790e+05
+-5.6569655e+06 4.0128084e+04 7.6037735e+04
+-3.4193369e+06 2.4554528e+04 3.0003772e+04
+-1.4465172e+06 1.0060112e+04 -3.0625989e+03
+-1.0265690e+05 1.5718612e+03 -9.5412258e+01
+-5.6016751e+03 8.6439789e+01 1.2623178e+01
+-3.0682604e+02 5.4718094e+00 3.0284625e+00
+-1.5568130e+01 3.6987661e-01 0.0000000e+00
+0 0 0
+0 0 0
+-8.2553386e+00 6.0747079e-02 1.8602022e-01
+-1.6240689e+02 8.3654152e-01 4.1371813e+00
+-2.9265265e+03 9.0556813e+00 8.0853202e+01
+-5.3959221e+04 7.8666791e+01 1.5954072e+03
+-7.8175813e+05 8.6630233e+02 8.7528821e+03
+-2.0027603e+06 2.4188580e+03 2.4902476e+04
+-3.3493841e+06 3.0602593e+03 4.2450039e+04
+-4.3959036e+06 2.0820824e+03 5.0950392e+04
+-4.9853351e+06 3.7681623e+02 4.7355726e+04
+-5.1852111e+06 -8.7897343e+02 3.6752269e+04
+-5.1231235e+06 -1.2559466e+03 2.6475017e+04
+-4.8698360e+06 -9.8413689e+02 2.1438662e+04
+-4.4153136e+06 -5.6432133e+02 2.2349954e+04
+-3.7090874e+06 -6.2798271e+02 2.4717105e+04
+-2.7404049e+06 -1.5115633e+03 2.0660526e+04
+-1.6285533e+06 -2.3522965e+03 8.0080914e+03
+-6.5329789e+05 -1.6680878e+03 -2.0363488e+03
+-4.7788645e+04 -5.9642133e+00 -6.9813687e+01
+-2.5570550e+03 7.4544496e+00 4.9762781e+00
+-1.4101426e+02 1.3846362e+00 1.4295277e+00
+-7.2929484e+00 1.6359497e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.2719053e+00 2.0146328e-02 1.7937554e-02
+-3.8009067e+01 2.2426570e-01 3.6266616e-01
+-5.2917598e+02 1.8639700e+00 5.0064253e+00
+-6.4178782e+03 1.3151690e+01 4.9265112e+01
+-5.8025348e+04 8.3496440e+01 7.1486553e+02
+-1.3262613e+05 2.0559370e+02 2.5674716e+03
+-2.1291091e+05 2.8023286e+02 4.5857901e+03
+-2.8023621e+05 2.5242332e+02 5.2478978e+03
+-3.2491620e+05 1.6474747e+02 4.1684186e+03
+-3.4641415e+05 8.9447190e+01 2.2401651e+03
+-3.4784553e+05 6.1241911e+01 6.8283785e+02
+-3.3161247e+05 7.1305257e+01 2.6743861e+02
+-2.9833274e+05 8.7385952e+01 1.0191180e+03
+-2.4824853e+05 6.9712302e+01 2.0950181e+03
+-1.8407409e+05 2.7415387e+00 2.1799262e+03
+-1.1382346e+05 -6.2222482e+01 9.6885374e+02
+-5.0372154e+04 -5.2389591e+01 -4.0055919e+01
+-5.5838271e+03 2.5992114e+00 3.7606016e-01
+-4.5749558e+02 1.9335600e+00 2.2673376e+00
+-3.2911579e+01 4.6251972e-01 4.9189525e-01
+-2.0244753e+00 6.4696140e-02 0.0000000e+00
+0 0 0
+0 0 0
+-4.2533414e-01 7.5577650e-03 -5.2742816e-03
+-5.9188160e+00 7.7165876e-02 -4.1075504e-02
+-6.3649936e+01 5.6394855e-01 -8.2090066e-02
+-5.4953383e+02 3.2907371e+00 2.0513489e+00
+-3.2003401e+03 1.4324501e+01 3.9607664e+01
+-7.3783150e+03 3.2723099e+01 1.3798045e+02
+-1.1920643e+04 4.8725612e+01 2.4549614e+02
+-1.5746374e+04 5.4908968e+01 2.8211701e+02
+-1.8290434e+04 5.2548981e+01 2.2516034e+02
+-1.9508900e+04 4.7644586e+01 1.2111187e+02
+-1.9578252e+04 4.4621075e+01 3.6566037e+01
+-1.8641527e+04 4.3936888e+01 1.3946786e+01
+-1.6738785e+04 4.2914680e+01 5.2874381e+01
+-1.3887343e+04 3.7789429e+01 1.0647666e+02
+-1.0247453e+04 2.7051197e+01 1.0932993e+02
+-6.2804098e+03 1.4418020e+01 5.1942507e+01
+-2.7392774e+03 5.8556976e+00 3.9950429e+00
+-4.7070219e+02 2.4167533e+00 1.6324087e+00
+-5.4449718e+01 6.7817085e-01 6.5349625e-01
+-5.1315950e+00 1.4674161e-01 1.2967170e-01
+-3.8699578e-01 2.0636484e-02 0.0000000e+00
+0 0 0
+0 0 0
+-6.0995592e-02 1.6228502e-03 -2.6388746e-03
+-7.1594779e-01 1.5759312e-02 -2.3778277e-02
+-6.1542446e+00 1.0675777e-01 -1.1921025e-01
+-4.0860547e+01 5.5786450e-01 -2.1759741e-01
+-1.8162403e+02 2.0750085e+00 1.7999822e+00
+-4.1240841e+02 4.6058088e+00 7.0987966e+00
+-6.6761689e+02 7.0654873e+00 1.2891064e+01
+-8.8384016e+02 8.4694659e+00 1.4961671e+01
+-1.0276840e+03 8.7357752e+00 1.2028180e+01
+-1.0960677e+03 8.4285544e+00 6.5066612e+00
+-1.0991746e+03 8.0957741e+00 1.9949909e+00
+-1.0454948e+03 7.8868004e+00 8.0199457e-01
+-9.3741622e+02 7.5540077e+00 2.8572100e+00
+-7.7591013e+02 6.6921597e+00 5.6662874e+00
+-5.7039485e+02 5.1172212e+00 6.0083953e+00
+-3.4800469e+02 3.1601577e+00 3.4796655e+00
+-1.5344448e+02 1.4819937e+00 1.0929776e+00
+-3.4573249e+01 5.0261554e-01 4.2918859e-01
+-5.2449302e+00 1.3160590e-01 1.4337775e-01
+-6.3103679e-01 2.7775965e-02 2.7484073e-02
+-5.8097626e-02 3.9011120e-03 0.0000000e+00
+0 0 0
+0 0 0
+-6.2755240e-03 0.0000000e+00 -4.4938413e-04
+-6.4466662e-02 0.0000000e+00 -3.8893262e-03
+-4.6668437e-01 0.0000000e+00 -1.9077078e-02
+-2.5636578e+00 0.0000000e+00 -4.7468306e-02
+-9.6039367e+00 0.0000000e+00 4.1820122e-02
+-2.1287660e+01 0.0000000e+00 3.0445261e-01
+-3.4367335e+01 0.0000000e+00 5.9543867e-01
+-4.5463734e+01 0.0000000e+00 7.0834981e-01
+-5.2792159e+01 0.0000000e+00 5.7775489e-01
+-5.6214166e+01 0.0000000e+00 3.1809422e-01
+-5.6308828e+01 0.0000000e+00 1.0491294e-01
+-5.3541906e+01 0.0000000e+00 5.1957729e-02
+-4.8016019e+01 0.0000000e+00 1.5724083e-01
+-3.9738854e+01 0.0000000e+00 3.0645931e-01
+-2.9186513e+01 0.0000000e+00 3.5376288e-01
+-1.7819232e+01 0.0000000e+00 2.6625241e-01
+-8.0340341e+00 0.0000000e+00 1.4435883e-01
+-2.1582000e+00 0.0000000e+00 6.2005834e-02
+-4.0162937e-01 0.0000000e+00 2.0315529e-02
+-5.8988895e-02 0.0000000e+00 3.8704284e-03
+-6.4048984e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-5.9446834e-03 -2.9465751e-04 -3.6183071e-05
+-6.1647430e-02 -2.7126451e-03 -1.4277037e-04
+-4.5061375e-01 -1.7505834e-02 1.2924425e-03
+-2.4948970e+00 -9.0455716e-02 2.2987310e-02
+-9.3931280e+00 -3.5605062e-01 1.6822928e-01
+-2.0840398e+01 -7.8226768e-01 5.0323552e-01
+-3.3684857e+01 -1.0432249e+00 8.6398239e-01
+-4.4659321e+01 -9.2326942e-01 9.8283847e-01
+-5.2012874e+01 -5.4992657e-01 7.5348028e-01
+-5.5555983e+01 -2.0797920e-01 3.0327689e-01
+-5.5788949e+01 -8.0778774e-02 -1.3582355e-01
+-5.3127171e+01 -1.7161473e-01 -3.7894349e-01
+-4.7669150e+01 -3.5541310e-01 -3.7039950e-01
+-3.9447246e+01 -4.6154041e-01 -2.0046755e-01
+-2.8961137e+01 -3.8828350e-01 -3.7559985e-02
+-1.7672135e+01 -2.0448833e-01 1.9830748e-02
+-7.9525410e+00 -7.3293192e-02 1.1630839e-02
+-2.1109952e+00 -4.2858453e-02 7.2844669e-03
+-3.8105483e-01 -1.6301780e-02 3.0117083e-03
+-5.2397364e-02 -4.2033887e-03 6.2356628e-04
+-5.1333899e-03 -6.4794218e-04 0.0000000e+00
+0 0 0
+0 0 0
+-6.0022252e-02 -1.3780873e-03 1.1008972e-04
+-7.0838265e-01 -1.3193755e-02 3.0260515e-03
+-6.1200348e+00 -9.1970870e-02 4.3281362e-02
+-4.0784829e+01 -5.6468764e-01 4.4179581e-01
+-1.8169133e+02 -3.2028619e+00 3.3559064e+00
+-4.1256282e+02 -7.5886191e+00 1.0316670e+01
+-6.6754416e+02 -8.6215428e+00 1.7822258e+01
+-8.8348446e+02 -3.7112463e+00 2.0254537e+01
+-1.0276266e+03 4.1259871e+00 1.5521220e+01
+-1.0972628e+03 1.0171862e+01 6.3364982e+00
+-1.1023682e+03 1.2029366e+01 -2.5800498e+00
+-1.0508432e+03 1.0116089e+01 -7.5192947e+00
+-9.4439067e+02 6.4397672e+00 -7.3400255e+00
+-7.8335775e+02 3.5254903e+00 -3.8794342e+00
+-5.7686108e+02 2.8850260e+00 -6.8651723e-01
+-3.5240919e+02 3.2988464e+00 2.1464374e-01
+-1.5554229e+02 2.3106430e+00 -7.1484784e-02
+-3.4913838e+01 2.1279353e-01 1.3451806e-02
+-5.2211474e+00 -4.2961728e-02 1.6328895e-02
+-6.0344722e-01 -1.9437015e-02 3.9729434e-03
+-5.1465781e-02 -3.3068436e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.2642959e-01 -4.1341522e-03 3.8515160e-03
+-5.9424494e+00 -4.3252761e-02 5.7543898e-02
+-6.3969637e+01 -3.4761756e-01 6.3289146e-01
+-5.5264348e+02 -2.8829665e+00 6.0608293e+00
+-3.2200604e+03 -3.5666309e+01 5.8244523e+01
+-7.4214650e+03 -9.6047343e+01 1.8985324e+02
+-1.1976560e+04 -9.4486188e+01 3.3163549e+02
+-1.5800057e+04 4.9288735e+00 3.7667833e+02
+-1.8340964e+04 1.4276134e+02 2.8857330e+02
+-1.9571293e+04 2.4126303e+02 1.1987578e+02
+-1.9671400e+04 2.6803198e+02 -4.2978333e+01
+-1.8775731e+04 2.3450902e+02 -1.3316721e+02
+-1.6908554e+04 1.7228762e+02 -1.2924558e+02
+-1.4069249e+04 1.2046252e+02 -6.4276913e+01
+-1.0406947e+04 1.0440066e+02 -6.2984481e+00
+-6.3903061e+03 1.0160180e+02 5.2949602e+00
+-2.7934773e+03 6.5536766e+01 -3.7313238e+00
+-4.8009531e+02 6.4009676e+00 -5.2638028e-01
+-5.5265311e+01 2.2720027e-01 1.9050302e-02
+-5.1007566e+00 -4.5962195e-02 1.4737002e-02
+-3.6562820e-01 -9.9374216e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.2892311e+00 -1.8974283e-02 3.2165886e-02
+-3.8271682e+01 -2.6603304e-01 5.1756076e-01
+-5.3239897e+02 -2.9330570e+00 6.3259904e+00
+-6.4534411e+03 -2.6377362e+01 6.5383311e+01
+-5.8365437e+04 -6.2323101e+02 9.9303659e+02
+-1.3336045e+05 -1.8439346e+03 3.4752369e+03
+-2.1378567e+05 -1.8726622e+03 6.1281773e+03
+-2.8093483e+05 -1.1358318e+02 6.9453051e+03
+-3.2542526e+05 2.2828017e+03 5.3143255e+03
+-3.4704679e+05 3.9436301e+03 2.2446008e+03
+-3.4899886e+05 4.3657210e+03 -6.9975592e+02
+-3.3352979e+05 3.7827900e+03 -2.3307083e+03
+-3.0096839e+05 2.7218239e+03 -2.2445943e+03
+-2.5121515e+05 1.8615877e+03 -1.0190978e+03
+-1.8675012e+05 1.7123594e+03 4.8975448e+01
+-1.1570746e+05 1.8668149e+03 1.6776616e+02
+-5.1356673e+04 1.2986796e+03 -8.0858211e+01
+-5.6973499e+03 4.7866601e+01 -8.8010893e+00
+-4.6606447e+02 3.7100391e-01 -3.7601058e-01
+-3.3149923e+01 -2.1707894e-01 3.3450539e-02
+-1.9698091e+00 -3.1153098e-02 0.0000000e+00
+0 0 0
+0 0 0
+-8.3248189e+00 -1.0523098e-01 1.5573700e-01
+-1.6350291e+02 -2.1563203e+00 3.1420490e+00
+-2.9413336e+03 -4.1043708e+01 5.6059839e+01
+-5.4159309e+04 -8.0066076e+02 1.0304306e+03
+-7.8457647e+05 -5.1461719e+03 8.3717196e+03
+-2.0104213e+06 -1.1683178e+04 2.5871881e+04
+-3.3544176e+06 -1.4694399e+04 4.3727134e+04
+-4.3893430e+06 -1.2047678e+04 4.9100638e+04
+-4.9657185e+06 -6.5353218e+03 3.8302185e+04
+-5.1585657e+06 -2.2143019e+03 1.7814711e+04
+-5.0972980e+06 -1.2641684e+03 -2.3808522e+03
+-4.8504226e+06 -3.5441775e+03 -1.4467251e+04
+-4.4043149e+06 -7.3982585e+03 -1.5345907e+04
+-3.7040330e+06 -1.0375401e+04 -8.1633106e+03
+-2.7353260e+06 -1.0300200e+04 -1.2296862e+03
+-1.6204924e+06 -7.0300442e+03 -3.9372690e+02
+-6.4769129e+05 -2.9820031e+03 -1.7196410e+03
+-4.8616554e+04 -7.5683276e+02 -8.7032384e+01
+-2.6006104e+03 -3.9709510e+01 -3.3964635e+00
+-1.4240612e+02 -2.2447009e+00 2.3016929e-02
+-7.1731954e+00 -1.2788919e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.7922690e+01 -2.4299829e-01 3.0285254e-01
+-3.5775391e+02 -5.2314516e+00 6.0561011e+00
+-6.4748324e+03 -1.0359163e+02 1.0615741e+02
+-1.1692986e+05 -2.0645604e+03 1.8923592e+03
+-1.7383886e+06 -1.2395852e+04 2.1585828e+04
+-4.1993600e+06 -2.7115095e+04 6.3571687e+04
+-6.8799235e+06 -3.5294363e+04 1.0825166e+05
+-8.9698047e+06 -3.2635286e+04 1.2992839e+05
+-1.0174053e+07 -2.4046616e+04 1.1976379e+05
+-1.0612616e+07 -1.7052535e+04 8.7891834e+04
+-1.0512028e+07 -1.5941820e+04 5.1450029e+04
+-9.9979634e+06 -2.0594628e+04 2.4496178e+04
+-9.0563617e+06 -2.7793534e+04 1.3501134e+04
+-7.6045225e+06 -3.2726568e+04 1.4506877e+04
+-5.6364283e+06 -3.1062416e+04 1.4731923e+04
+-3.3954734e+06 -2.2085277e+04 5.9236164e+03
+-1.4303268e+06 -1.0380460e+04 -2.8683215e+03
+-1.0403399e+05 -2.0962168e+03 -1.5184427e+02
+-5.6804905e+03 -1.0695123e+02 -5.7871393e+00
+-3.0935995e+02 -5.5871129e+00 8.9183212e-02
+-1.5329257e+01 -2.7757857e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.8677309e+01 -3.1709140e-01 3.4653827e-01
+-5.7102497e+02 -6.7726430e+00 6.3717544e+00
+-1.0272343e+04 -1.3181857e+02 9.9233503e+01
+-1.8374514e+05 -2.5558555e+03 1.5349466e+03
+-2.7833564e+06 -1.4138574e+04 3.5667421e+04
+-6.5854094e+06 -3.1918407e+04 1.0565846e+05
+-1.0703092e+07 -4.0565528e+04 1.8037628e+05
+-1.3909672e+07 -3.4692140e+04 2.1952467e+05
+-1.5761312e+07 -2.1371287e+04 2.0871894e+05
+-1.6437174e+07 -1.1118049e+04 1.6252694e+05
+-1.6276343e+07 -9.9419296e+03 1.0645635e+05
+-1.5469983e+07 -1.7655801e+04 6.1947728e+04
+-1.4003451e+07 -2.9622887e+04 3.9641328e+04
+-1.1759732e+07 -3.8899096e+04 3.4900482e+04
+-8.7338154e+06 -3.9098026e+04 2.9760390e+04
+-5.2924067e+06 -2.8628129e+04 1.2559706e+04
+-2.2644054e+06 -1.3415029e+04 -2.8877387e+03
+-1.6204555e+05 -2.8294372e+03 -1.6303091e+02
+-8.9303716e+03 -1.4820579e+02 -5.7984351e+00
+-4.8912715e+02 -7.7955439e+00 2.4412140e-01
+-2.4279587e+01 -3.7948493e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.8409328e+01 -2.8122575e-01 2.9690736e-01
+-7.6226030e+02 -5.8922460e+00 4.7712678e+00
+-1.3654778e+04 -1.1184395e+02 5.9679969e+01
+-2.4318156e+05 -2.1056269e+03 6.7362773e+02
+-3.6723684e+06 -1.0555751e+04 4.6771480e+04
+-8.6545178e+06 -2.5558155e+04 1.4022977e+05
+-1.4022818e+07 -3.0838535e+04 2.3864091e+05
+-1.8171970e+07 -2.1456980e+04 2.8831196e+05
+-2.0537804e+07 -5.2738525e+03 2.7078477e+05
+-2.1372338e+07 6.5098309e+03 2.0619496e+05
+-2.1130513e+07 7.5618096e+03 1.2909524e+05
+-2.0068146e+07 -1.8478542e+03 6.8603412e+04
+-1.8166908e+07 -1.6678455e+04 3.9436415e+04
+-1.5268019e+07 -2.9385813e+04 3.5717439e+04
+-1.1352033e+07 -3.2897975e+04 3.3144036e+04
+-6.8841408e+06 -2.5010105e+04 1.4846773e+04
+-2.9435364e+06 -1.1458329e+04 -2.5007370e+03
+-2.1280827e+05 -2.6231988e+03 -1.4883071e+02
+-1.1772001e+04 -1.4135557e+02 -4.8389694e+00
+-6.4699057e+02 -7.5886616e+00 3.7678916e-01
+-3.2185826e+01 -3.7224914e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.5807968e+01 -1.8000509e-01 2.2596680e-01
+-9.0708410e+02 -3.7123500e+00 3.0047611e+00
+-1.6210095e+04 -6.9175507e+01 2.3402893e+01
+-2.8806478e+05 -1.2773294e+03 -7.5034052e+00
+-4.3010836e+06 -5.7814931e+03 5.3520389e+04
+-1.0162796e+07 -1.5276746e+04 1.6216107e+05
+-1.6453342e+07 -1.7323206e+04 2.7430157e+05
+-2.1273493e+07 -8.5413584e+03 3.2605045e+05
+-2.3977673e+07 4.8655551e+03 2.9691111e+05
+-2.4889726e+07 1.4311204e+04 2.1286714e+05
+-2.4565240e+07 1.4994394e+04 1.1680816e+05
+-2.3313967e+07 7.1738852e+03 4.4588553e+04
+-2.1111766e+07 -5.2337122e+03 1.4166333e+04
+-1.7758650e+07 -1.6378159e+04 1.7921852e+04
+-1.3211619e+07 -2.0713247e+04 2.4975923e+04
+-8.0016348e+06 -1.6314905e+04 1.2395676e+04
+-3.3989684e+06 -7.3068239e+03 -2.2797697e+03
+-2.5057538e+05 -1.7973572e+03 -1.3945282e+02
+-1.3882837e+04 -9.8577169e+01 -4.4324961e+00
+-7.6421440e+02 -5.3731504e+00 4.1279421e-01
+-3.8054348e+01 -2.6622754e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0334664e+01 -6.0623868e-02 1.7215365e-01
+-9.9559756e+02 -1.2407986e+00 1.7700656e+00
+-1.7771546e+04 -2.2932047e+01 -2.6708946e-01
+-3.1551558e+05 -4.2019930e+02 -4.2811577e+02
+-4.6639362e+06 -1.7765506e+03 5.6555930e+04
+-1.1058912e+07 -4.9952323e+03 1.7276532e+05
+-1.7904068e+07 -5.4274096e+03 2.9065939e+05
+-2.3115997e+07 -1.8775446e+03 3.4016167e+05
+-2.6003837e+07 3.3014364e+03 3.0016474e+05
+-2.6943563e+07 6.8966847e+03 2.0115094e+05
+-2.6558668e+07 7.1229234e+03 9.1918873e+04
+-2.5194247e+07 4.0883052e+03 1.2919448e+04
+-2.2821013e+07 -7.3131806e+02 -1.5865353e+04
+-1.9209018e+07 -5.1350608e+03 -3.6057669e+03
+-1.4294732e+07 -7.0265363e+03 1.3785260e+04
+-8.6453851e+06 -5.6478594e+03 8.4765580e+03
+-3.6496488e+06 -2.4992893e+03 -2.1918000e+03
+-2.7343704e+05 -6.3825651e+02 -1.3630939e+02
+-1.5157138e+04 -3.5247705e+01 -4.5200022e+00
+-8.3481138e+02 -1.9340299e+00 3.8827676e-01
+-4.1577751e+01 -9.6326325e-02 0.0000000e+00
+0 0 0
+0 0 0
+-5.1849611e+01 6.0623898e-02 1.5182539e-01
+-1.0252227e+03 1.2407991e+00 1.3137871e+00
+-1.8294449e+04 2.2932051e+01 -8.9029438e+00
+-3.2471873e+05 4.2019938e+02 -5.8160728e+02
+-4.7817230e+06 1.7765516e+03 5.7327998e+04
+-1.1354805e+07 4.9952340e+03 1.7570653e+05
+-1.8384404e+07 5.4274113e+03 2.9497708e+05
+-2.3724535e+07 1.8775469e+03 3.4301123e+05
+-2.6669959e+07 -3.3014355e+03 2.9862799e+05
+-2.7615588e+07 -6.8966839e+03 1.9399876e+05
+-2.7208794e+07 -7.1229208e+03 8.0058005e+04
+-2.5806914e+07 -4.0883014e+03 -1.1142728e+03
+-2.3378636e+07 7.3132454e+02 -2.8854127e+04
+-1.9683113e+07 5.1350660e+03 -1.2949451e+04
+-1.4648841e+07 7.0265438e+03 8.8002315e+03
+-8.8545269e+06 5.6478637e+03 6.6874494e+03
+-3.7288801e+06 2.4992911e+03 -2.1600200e+03
+-2.8106538e+05 6.3825657e+02 -1.3536469e+02
+-1.5581379e+04 3.5247709e+01 -4.6052825e+00
+-8.5826339e+02 1.9340301e+00 3.7080529e-01
+-4.2745102e+01 9.6326337e-02 0.0000000e+00
+0 0 0
+0 0 0
+-5.0334664e+01 1.8000508e-01 1.7215364e-01
+-9.9559756e+02 3.7123500e+00 1.7700646e+00
+-1.7771546e+04 6.9175509e+01 -2.6709172e-01
+-3.1551558e+05 1.2773295e+03 -4.2811579e+02
+-4.6639362e+06 5.7814936e+03 5.6555930e+04
+-1.1058912e+07 1.5276746e+04 1.7276532e+05
+-1.7904068e+07 1.7323207e+04 2.9065939e+05
+-2.3115997e+07 8.5413598e+03 3.4016167e+05
+-2.6003837e+07 -4.8655532e+03 3.0016474e+05
+-2.6943563e+07 -1.4311203e+04 2.0115094e+05
+-2.6558668e+07 -1.4994391e+04 9.1918875e+04
+-2.5194247e+07 -7.1738808e+03 1.2919450e+04
+-2.2821013e+07 5.2337152e+03 -1.5865353e+04
+-1.9209018e+07 1.6378163e+04 -3.6057622e+03
+-1.4294732e+07 2.0713251e+04 1.3785259e+04
+-8.6453851e+06 1.6314907e+04 8.4765574e+03
+-3.6496488e+06 7.3068248e+03 -2.1918001e+03
+-2.7343704e+05 1.7973572e+03 -1.3630939e+02
+-1.5157138e+04 9.8577173e+01 -4.5200022e+00
+-8.3481138e+02 5.3731506e+00 3.8827676e-01
+-4.1577751e+01 2.6622755e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.5807968e+01 2.8122573e-01 2.2596681e-01
+-9.0708410e+02 5.8922458e+00 3.0047604e+00
+-1.6210095e+04 1.1184396e+02 2.3402891e+01
+-2.8806478e+05 2.1056270e+03 -7.5033875e+00
+-4.3010836e+06 1.0555751e+04 5.3520389e+04
+-1.0162796e+07 2.5558155e+04 1.6216107e+05
+-1.6453342e+07 3.0838536e+04 2.7430157e+05
+-2.1273493e+07 2.1456982e+04 3.2605045e+05
+-2.3977673e+07 5.2738552e+03 2.9691111e+05
+-2.4889726e+07 -6.5098262e+03 2.1286714e+05
+-2.4565240e+07 -7.5618072e+03 1.1680816e+05
+-2.3313967e+07 1.8478564e+03 4.4588552e+04
+-2.1111766e+07 1.6678458e+04 1.4166337e+04
+-1.7758650e+07 2.9385817e+04 1.7921857e+04
+-1.3211619e+07 3.2897975e+04 2.4975923e+04
+-8.0016348e+06 2.5010105e+04 1.2395676e+04
+-3.3989684e+06 1.1458330e+04 -2.2797697e+03
+-2.5057538e+05 2.6231989e+03 -1.3945282e+02
+-1.3882837e+04 1.4135558e+02 -4.4324961e+00
+-7.6421440e+02 7.5886617e+00 4.1279420e-01
+-3.8054348e+01 3.7224915e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.8409328e+01 3.1709140e-01 2.9690737e-01
+-7.6226030e+02 6.7726431e+00 4.7712693e+00
+-1.3654778e+04 1.3181856e+02 5.9679970e+01
+-2.4318156e+05 2.5558555e+03 6.7362748e+02
+-3.6723684e+06 1.4138574e+04 4.6771480e+04
+-8.6545178e+06 3.1918408e+04 1.4022977e+05
+-1.4022818e+07 4.0565529e+04 2.3864091e+05
+-1.8171970e+07 3.4692140e+04 2.8831196e+05
+-2.0537804e+07 2.1371289e+04 2.7078477e+05
+-2.1372338e+07 1.1118051e+04 2.0619497e+05
+-2.1130513e+07 9.9419312e+03 1.2909524e+05
+-2.0068145e+07 1.7655801e+04 6.8603414e+04
+-1.8166908e+07 2.9622890e+04 3.9436421e+04
+-1.5268019e+07 3.8899096e+04 3.5717438e+04
+-1.1352033e+07 3.9098026e+04 3.3144035e+04
+-6.8841408e+06 2.8628129e+04 1.4846773e+04
+-2.9435364e+06 1.3415030e+04 -2.5007370e+03
+-2.1280827e+05 2.8294372e+03 -1.4883071e+02
+-1.1772001e+04 1.4820579e+02 -4.8389694e+00
+-6.4699057e+02 7.7955440e+00 3.7678916e-01
+-3.2185826e+01 3.7948493e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.8677309e+01 2.4299829e-01 3.4653828e-01
+-5.7102497e+02 5.2314517e+00 6.3717546e+00
+-1.0272343e+04 1.0359163e+02 9.9233510e+01
+-1.8374514e+05 2.0645603e+03 1.5349466e+03
+-2.7833564e+06 1.2395852e+04 3.5667421e+04
+-6.5854094e+06 2.7115096e+04 1.0565846e+05
+-1.0703092e+07 3.5294363e+04 1.8037628e+05
+-1.3909672e+07 3.2635287e+04 2.1952467e+05
+-1.5761312e+07 2.4046616e+04 2.0871894e+05
+-1.6437174e+07 1.7052535e+04 1.6252694e+05
+-1.6276343e+07 1.5941821e+04 1.0645635e+05
+-1.5469983e+07 2.0594631e+04 6.1947729e+04
+-1.4003451e+07 2.7793534e+04 3.9641329e+04
+-1.1759732e+07 3.2726568e+04 3.4900483e+04
+-8.7338154e+06 3.1062416e+04 2.9760391e+04
+-5.2924067e+06 2.2085277e+04 1.2559707e+04
+-2.2644054e+06 1.0380460e+04 -2.8877387e+03
+-1.6204555e+05 2.0962168e+03 -1.6303091e+02
+-8.9303716e+03 1.0695123e+02 -5.7984352e+00
+-4.8912715e+02 5.5871129e+00 2.4412140e-01
+-2.4279587e+01 2.7757857e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.7922690e+01 1.0523098e-01 3.0285256e-01
+-3.5775391e+02 2.1563203e+00 6.0561009e+00
+-6.4748324e+03 4.1043709e+01 1.0615741e+02
+-1.1692986e+05 8.0066076e+02 1.8923593e+03
+-1.7383886e+06 5.1461715e+03 2.1585828e+04
+-4.1993600e+06 1.1683176e+04 6.3571685e+04
+-6.8799235e+06 1.4694398e+04 1.0825166e+05
+-8.9698047e+06 1.2047677e+04 1.2992839e+05
+-1.0174053e+07 6.5353213e+03 1.1976379e+05
+-1.0612616e+07 2.2143018e+03 8.7891835e+04
+-1.0512028e+07 1.2641680e+03 5.1450030e+04
+-9.9979634e+06 3.5441776e+03 2.4496178e+04
+-9.0563617e+06 7.3982577e+03 1.3501135e+04
+-7.6045225e+06 1.0375400e+04 1.4506877e+04
+-5.6364283e+06 1.0300200e+04 1.4731923e+04
+-3.3954734e+06 7.0300441e+03 5.9236167e+03
+-1.4303268e+06 2.9820030e+03 -2.8683215e+03
+-1.0403399e+05 7.5683276e+02 -1.5184427e+02
+-5.6804905e+03 3.9709510e+01 -5.7871393e+00
+-3.0935995e+02 2.2447008e+00 8.9183211e-02
+-1.5329257e+01 1.2788919e-01 0.0000000e+00
+0 0 0
+0 0 0
+-8.3248189e+00 1.8974282e-02 1.5573700e-01
+-1.6350291e+02 2.6603304e-01 3.1420491e+00
+-2.9413336e+03 2.9330571e+00 5.6059839e+01
+-5.4159309e+04 2.6377362e+01 1.0304306e+03
+-7.8457647e+05 6.2323100e+02 8.3717195e+03
+-2.0104213e+06 1.8439346e+03 2.5871881e+04
+-3.3544176e+06 1.8726621e+03 4.3727134e+04
+-4.3893430e+06 1.1358313e+02 4.9100638e+04
+-4.9657185e+06 -2.2828017e+03 3.8302185e+04
+-5.1585657e+06 -3.9436300e+03 1.7814711e+04
+-5.0972980e+06 -4.3657204e+03 -2.3808517e+03
+-4.8504226e+06 -3.7827893e+03 -1.4467250e+04
+-4.4043149e+06 -2.7218238e+03 -1.5345907e+04
+-3.7040330e+06 -1.8615877e+03 -8.1633104e+03
+-2.7353260e+06 -1.7123594e+03 -1.2296861e+03
+-1.6204924e+06 -1.8668149e+03 -3.9372684e+02
+-6.4769129e+05 -1.2986796e+03 -1.7196410e+03
+-4.8616554e+04 -4.7866601e+01 -8.7032384e+01
+-2.6006104e+03 -3.7100391e-01 -3.3964635e+00
+-1.4240612e+02 2.1707894e-01 2.3016929e-02
+-7.1731954e+00 3.1153098e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.2892311e+00 4.1341522e-03 3.2165887e-02
+-3.8271682e+01 4.3252761e-02 5.1756078e-01
+-5.3239897e+02 3.4761757e-01 6.3259904e+00
+-6.4534411e+03 2.8829665e+00 6.5383310e+01
+-5.8365437e+04 3.5666308e+01 9.9303658e+02
+-1.3336045e+05 9.6047343e+01 3.4752369e+03
+-2.1378567e+05 9.4486186e+01 6.1281773e+03
+-2.8093483e+05 -4.9288734e+00 6.9453051e+03
+-3.2542526e+05 -1.4276134e+02 5.3143255e+03
+-3.4704679e+05 -2.4126302e+02 2.2446010e+03
+-3.4899886e+05 -2.6803196e+02 -6.9975583e+02
+-3.3352979e+05 -2.3450902e+02 -2.3307084e+03
+-3.0096839e+05 -1.7228761e+02 -2.2445943e+03
+-2.5121515e+05 -1.2046252e+02 -1.0190978e+03
+-1.8675012e+05 -1.0440066e+02 4.8975449e+01
+-1.1570746e+05 -1.0160180e+02 1.6776616e+02
+-5.1356673e+04 -6.5536766e+01 -8.0858211e+01
+-5.6973499e+03 -6.4009676e+00 -8.8010893e+00
+-4.6606447e+02 -2.2720027e-01 -3.7601059e-01
+-3.3149923e+01 4.5962194e-02 3.3450539e-02
+-1.9698091e+00 9.9374216e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.2642959e-01 1.3780873e-03 3.8515161e-03
+-5.9424494e+00 1.3193755e-02 5.7543902e-02
+-6.3969637e+01 9.1970869e-02 6.3289145e-01
+-5.5264348e+02 5.6468763e-01 6.0608292e+00
+-3.2200604e+03 3.2028619e+00 5.8244523e+01
+-7.4214650e+03 7.5886192e+00 1.8985324e+02
+-1.1976560e+04 8.6215429e+00 3.3163549e+02
+-1.5800057e+04 3.7112466e+00 3.7667834e+02
+-1.8340964e+04 -4.1259851e+00 2.8857331e+02
+-1.9571293e+04 -1.0171862e+01 1.1987579e+02
+-1.9671400e+04 -1.2029366e+01 -4.2978331e+01
+-1.8775731e+04 -1.0116089e+01 -1.3316722e+02
+-1.6908554e+04 -6.4397673e+00 -1.2924558e+02
+-1.4069249e+04 -3.5254904e+00 -6.4276914e+01
+-1.0406947e+04 -2.8850261e+00 -6.2984482e+00
+-6.3903061e+03 -3.2988464e+00 5.2949601e+00
+-2.7934773e+03 -2.3106430e+00 -3.7313237e+00
+-4.8009531e+02 -2.1279353e-01 -5.2638028e-01
+-5.5265311e+01 4.2961727e-02 1.9050302e-02
+-5.1007566e+00 1.9437015e-02 1.4737002e-02
+-3.6562820e-01 3.3068436e-03 0.0000000e+00
+0 0 0
+0 0 0
+-6.0022252e-02 2.9465751e-04 1.1008973e-04
+-7.0838265e-01 2.7126451e-03 3.0260516e-03
+-6.1200348e+00 1.7505834e-02 4.3281362e-02
+-4.0784829e+01 9.0455716e-02 4.4179580e-01
+-1.8169133e+02 3.5605062e-01 3.3559064e+00
+-4.1256282e+02 7.8226768e-01 1.0316670e+01
+-6.6754416e+02 1.0432249e+00 1.7822258e+01
+-8.8348446e+02 9.2326943e-01 2.0254537e+01
+-1.0276266e+03 5.4992657e-01 1.5521219e+01
+-1.0972628e+03 2.0797926e-01 6.3364984e+00
+-1.1023682e+03 8.0778756e-02 -2.5800497e+00
+-1.0508432e+03 1.7161471e-01 -7.5192949e+00
+-9.4439067e+02 3.5541310e-01 -7.3400256e+00
+-7.8335775e+02 4.6154041e-01 -3.8794343e+00
+-5.7686108e+02 3.8828350e-01 -6.8651723e-01
+-3.5240919e+02 2.0448833e-01 2.1464374e-01
+-1.5554229e+02 7.3293192e-02 -7.1484784e-02
+-3.4913838e+01 4.2858453e-02 1.3451806e-02
+-5.2211474e+00 1.6301780e-02 1.6328895e-02
+-6.0344722e-01 4.2033887e-03 3.9729434e-03
+-5.1465781e-02 6.4794218e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.9446834e-03 0.0000000e+00 -3.6183071e-05
+-6.1647430e-02 0.0000000e+00 -1.4277036e-04
+-4.5061375e-01 0.0000000e+00 1.2924425e-03
+-2.4948970e+00 0.0000000e+00 2.2987310e-02
+-9.3931280e+00 0.0000000e+00 1.6822928e-01
+-2.0840398e+01 0.0000000e+00 5.0323552e-01
+-3.3684857e+01 0.0000000e+00 8.6398240e-01
+-4.4659321e+01 0.0000000e+00 9.8283849e-01
+-5.2012874e+01 0.0000000e+00 7.5348028e-01
+-5.5555983e+01 0.0000000e+00 3.0327688e-01
+-5.5788949e+01 0.0000000e+00 -1.3582355e-01
+-5.3127171e+01 0.0000000e+00 -3.7894349e-01
+-4.7669150e+01 0.0000000e+00 -3.7039950e-01
+-3.9447246e+01 0.0000000e+00 -2.0046755e-01
+-2.8961137e+01 0.0000000e+00 -3.7559985e-02
+-1.7672135e+01 0.0000000e+00 1.9830748e-02
+-7.9525410e+00 0.0000000e+00 1.1630838e-02
+-2.1109952e+00 0.0000000e+00 7.2844669e-03
+-3.8105483e-01 0.0000000e+00 3.0117083e-03
+-5.2397364e-02 0.0000000e+00 6.2356628e-04
+-5.1333899e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.0120443e-03 -8.0589837e-06 7.5419866e-05
+-6.2415297e-02 -1.0159807e-05 8.5344758e-04
+-4.5664473e-01 8.8713025e-05 6.7957197e-03
+-2.5296506e+00 -3.1541078e-03 4.4703525e-02
+-9.5251680e+00 -5.4864714e-02 2.3160824e-01
+-2.1121102e+01 -1.3507647e-01 6.4738902e-01
+-3.4097874e+01 -3.4371271e-02 1.0947770e+00
+-4.5149037e+01 3.4626380e-01 1.2382293e+00
+-5.2542379e+01 8.4238839e-01 9.2534612e-01
+-5.6128214e+01 1.2049194e+00 2.9265729e-01
+-5.6425989e+01 1.2988885e+00 -3.6919168e-01
+-5.3838339e+01 1.1371640e+00 -7.9518777e-01
+-4.8427751e+01 8.2496873e-01 -8.6155579e-01
+-4.0182269e+01 5.0668993e-01 -6.3322216e-01
+-2.9574131e+01 2.9713465e-01 -3.1736330e-01
+-1.8083854e+01 1.9835479e-01 -1.0399871e-01
+-8.1512531e+00 1.2112036e-01 -2.6406968e-02
+-2.1641555e+00 3.1448859e-02 -4.6955151e-03
+-3.8941106e-01 4.0781788e-03 -4.1746413e-04
+-5.2980144e-02 1.5368133e-04 1.1634931e-05
+-5.0862065e-03 -3.5548488e-05 0.0000000e+00
+0 0 0
+0 0 0
+-6.1015041e-02 1.4766748e-04 8.3706189e-04
+-7.1997460e-01 2.2243113e-03 1.0194540e-02
+-6.2177806e+00 1.8479905e-02 8.9549127e-02
+-4.1416728e+01 4.5437389e-02 6.7285623e-01
+-1.8442775e+02 -9.7783983e-01 4.3322555e+00
+-4.1847164e+02 -2.8550736e+00 1.2961069e+01
+-6.7597951e+02 -9.2784987e-01 2.2289898e+01
+-8.9289380e+02 6.7621531e+00 2.5283344e+01
+-1.0370729e+03 1.6621543e+01 1.8950508e+01
+-1.1069706e+03 2.3657295e+01 6.2058699e+00
+-1.1131820e+03 2.5407301e+01 -7.0887124e+00
+-1.0633905e+03 2.2266586e+01 -1.5670808e+01
+-9.5845110e+02 1.6252174e+01 -1.7037580e+01
+-7.9758384e+02 1.0122984e+01 -1.2427788e+01
+-5.8910339e+02 6.1669612e+00 -6.0553077e+00
+-3.6079153e+02 4.3829729e+00 -1.8575859e+00
+-1.5959371e+02 2.7827715e+00 -4.6781847e-01
+-3.5885061e+01 6.1677402e-01 -8.1919828e-02
+-5.3666753e+00 7.6477900e-02 -8.7916495e-03
+-6.1737677e-01 5.6748721e-03 -3.8328768e-04
+-5.2007925e-02 1.2330709e-04 0.0000000e+00
+0 0 0
+0 0 0
+-4.3390842e-01 1.4025467e-03 6.2239487e-03
+-6.0394322e+00 2.0446881e-02 8.4984230e-02
+-6.4929619e+01 1.9613939e-01 8.6730734e-01
+-5.6034987e+02 7.5036921e-01 7.8687607e+00
+-3.2632247e+03 -2.2597155e+01 7.2652434e+01
+-7.5163525e+03 -7.0593245e+01 2.3527812e+02
+-1.2106746e+04 -4.6316799e+01 4.1085263e+02
+-1.5934817e+04 8.5919673e+01 4.6645454e+02
+-1.8464792e+04 2.5666352e+02 3.5023972e+02
+-1.9692620e+04 3.7653822e+02 1.1868549e+02
+-1.9810754e+04 4.0533389e+02 -1.2188750e+02
+-1.8949528e+04 3.5193712e+02 -2.7776123e+02
+-1.7117336e+04 2.5055933e+02 -3.0328607e+02
+-1.4291863e+04 1.4871811e+02 -2.1926705e+02
+-1.0605392e+04 8.8363915e+01 -1.0301876e+02
+-6.5293032e+03 6.8946450e+01 -2.8585168e+01
+-2.8611629e+03 4.8701526e+01 -6.8183175e+00
+-4.9287563e+02 7.6013563e+00 -1.0225804e+00
+-5.6833905e+01 7.2417724e-01 -1.0168496e-01
+-5.2410622e+00 5.0037793e-02 -5.7422600e-03
+-3.7331406e-01 2.0669105e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.3259325e+00 4.8007558e-03 3.3303237e-02
+-3.8817799e+01 7.1850767e-02 5.2801675e-01
+-5.3906727e+02 8.1335087e-01 6.5791021e+00
+-6.5261096e+03 5.7247478e+00 7.4273248e+01
+-5.9016547e+04 -5.2178977e+02 1.2245755e+03
+-1.3480107e+05 -1.6814716e+03 4.2760770e+03
+-2.1565932e+05 -1.4350896e+03 7.5385033e+03
+-2.8268715e+05 8.3491644e+02 8.5418215e+03
+-3.2683222e+05 3.7911645e+03 6.4142777e+03
+-3.4833069e+05 5.8347258e+03 2.2399873e+03
+-3.5058711e+05 6.3085201e+03 -2.0749499e+03
+-3.3576725e+05 5.3972497e+03 -4.8828084e+03
+-3.0392044e+05 3.6778063e+03 -5.3580049e+03
+-2.5456043e+05 1.9746576e+03 -3.8386712e+03
+-1.8984589e+05 1.0774777e+03 -1.7320162e+03
+-1.1793239e+05 9.8789763e+02 -4.2604019e+02
+-5.2479134e+04 8.3830532e+02 -9.3182670e+01
+-5.8344708e+03 6.1705591e+01 -1.0166033e+01
+-4.7830040e+02 3.5998158e+00 -8.0573319e-01
+-3.4050029e+01 1.8686942e-01 -4.2458537e-02
+-2.0172105e+00 7.0097948e-03 0.0000000e+00
+0 0 0
+0 0 0
+-8.4421989e+00 5.6682285e-03 1.1651252e-01
+-1.6547193e+02 -3.4744130e-02 2.1921253e+00
+-2.9706481e+03 -3.7310311e+00 3.6050966e+01
+-5.4604688e+04 -1.2684244e+02 6.1399766e+02
+-7.9324527e+05 6.5598468e+02 8.1050202e+03
+-2.0330747e+06 2.0754491e+03 2.7001484e+04
+-3.3818608e+06 7.2775506e+03 4.5732042e+04
+-4.4078902e+06 1.5912242e+04 4.9201970e+04
+-4.9701238e+06 2.4585998e+04 3.2812428e+04
+-5.1538860e+06 2.9954170e+04 4.0132923e+03
+-5.0927907e+06 3.0685169e+04 -2.4870665e+04
+-4.8538913e+06 2.7196039e+04 -4.3200723e+04
+-4.4191640e+06 2.0815398e+04 -4.5489185e+04
+-3.7272777e+06 1.3467056e+04 -3.3736840e+04
+-2.7580192e+06 7.2793818e+03 -1.7245554e+04
+-1.6343410e+06 3.4456208e+03 -5.8547352e+03
+-6.5290406e+05 1.4982765e+03 -1.3019372e+03
+-4.9639872e+04 -1.4313066e+02 -7.3782842e+01
+-2.6614946e+03 -5.1810965e+00 -4.1177745e+00
+-1.4598848e+02 -1.6544154e-01 -1.8310753e-01
+-7.3438955e+00 -5.3976832e-03 0.0000000e+00
+0 0 0
+0 0 0
+-1.8152416e+01 3.3909348e-02 2.0148513e-01
+-3.6163941e+02 3.8528080e-01 3.6669629e+00
+-6.5325535e+03 5.9354933e-01 5.7063457e+01
+-1.1778395e+05 -1.1842677e+02 9.0272969e+02
+-1.7569266e+06 3.2719447e+03 1.6824815e+04
+-4.2438107e+06 8.8363400e+03 5.4514542e+04
+-6.9312703e+06 2.1371938e+04 9.1766998e+04
+-9.0013810e+06 3.9091292e+04 1.0016421e+05
+-1.0176067e+07 5.5727258e+04 7.1036840e+04
+-1.0595242e+07 6.5562946e+04 1.8053236e+04
+-1.0493609e+07 6.6391764e+04 -3.6072743e+04
+-9.9942559e+06 5.9009869e+04 -7.1594011e+04
+-9.0749190e+06 4.5841372e+04 -7.8062634e+04
+-7.6408250e+06 3.0375461e+04 -5.8668566e+04
+-5.6743611e+06 1.6619116e+04 -3.0075493e+04
+-3.4193283e+06 7.4182693e+03 -1.0193162e+04
+-1.4396139e+06 2.8205754e+03 -2.2283934e+03
+-1.0596428e+05 -3.0692636e+02 -1.3430335e+02
+-5.8011060e+03 -1.1121259e+01 -7.7477103e+00
+-3.1657649e+02 -3.4696194e-01 -3.4964889e-01
+-1.5676019e+01 -8.2851078e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.8998210e+01 1.0861048e-01 2.4619997e-01
+-5.7635553e+02 1.8823616e+00 4.0796756e+00
+-1.0349541e+04 2.7850393e+01 5.4020250e+01
+-1.8485952e+05 3.8088791e+02 6.6908174e+02
+-2.8138063e+06 8.7504189e+03 2.5640512e+04
+-6.6546898e+06 2.0433326e+04 8.3323963e+04
+-1.0779462e+07 4.1713787e+04 1.3935168e+05
+-1.3951042e+07 6.9130063e+04 1.5068272e+05
+-1.5753480e+07 9.3799223e+04 1.0477876e+05
+-1.6397699e+07 1.0800325e+05 2.2862945e+04
+-1.6235529e+07 1.0884691e+05 -6.0405891e+04
+-1.5453925e+07 9.7498450e+04 -1.1495236e+05
+-1.4025196e+07 7.7366878e+04 -1.2473239e+05
+-1.1813082e+07 5.3337330e+04 -9.4343897e+04
+-8.7935998e+06 3.1122718e+04 -4.9063117e+04
+-5.3326185e+06 1.5189288e+04 -1.6622345e+04
+-2.2817846e+06 6.3377930e+03 -2.7603853e+03
+-1.6484042e+05 -9.4795954e+01 -1.7763657e+02
+-9.1083082e+03 -6.1428613e-02 -1.0759777e+01
+-4.9997690e+02 2.4632484e-01 -5.0330922e-01
+-2.4812647e+01 2.1465597e-02 0.0000000e+00
+0 0 0
+0 0 0
+-3.8753895e+01 1.7599178e-01 2.7718514e-01
+-7.6770763e+02 3.3251798e+00 4.2816953e+00
+-1.3728045e+04 5.6013163e+01 4.9386241e+01
+-2.4414917e+05 9.3002056e+02 4.6787050e+02
+-3.7085515e+06 1.2878627e+04 3.2522753e+04
+-8.7364816e+06 2.8370082e+04 1.0654982e+05
+-1.4104943e+07 5.3911474e+04 1.7647793e+05
+-1.8197443e+07 8.5162974e+04 1.8591852e+05
+-2.0490381e+07 1.1255973e+05 1.1973496e+05
+-2.1279985e+07 1.2806297e+05 7.3215080e+03
+-2.1038344e+07 1.2874341e+05 -1.0474375e+05
+-2.0014905e+07 1.1590833e+05 -1.7639441e+05
+-1.8172761e+07 9.3205384e+04 -1.8638009e+05
+-1.5325843e+07 6.5833423e+04 -1.4105256e+05
+-1.1427173e+07 3.9936813e+04 -7.4727016e+04
+-6.9385140e+06 2.0564071e+04 -2.5728663e+04
+-2.9686681e+06 9.0495869e+03 -3.3087405e+03
+-2.1623922e+05 2.4621955e+02 -2.1880606e+02
+-1.1993717e+04 1.6495568e+01 -1.3646950e+01
+-6.6078172e+02 1.0524636e+00 -6.6193163e-01
+-3.2884126e+01 5.7833283e-02 0.0000000e+00
+0 0 0
+0 0 0
+-4.6112564e+01 1.6508588e-01 3.1550206e-01
+-9.1145664e+02 3.1909148e+00 4.8223003e+00
+-1.6259392e+04 5.5294384e+01 5.4837364e+01
+-2.8854795e+05 9.4842666e+02 5.1960535e+02
+-4.3358324e+06 1.1405075e+04 3.6741984e+04
+-1.0243649e+07 2.4563725e+04 1.2140095e+05
+-1.6522283e+07 4.5328392e+04 1.9892488e+05
+-2.1262151e+07 7.0096789e+04 2.0264914e+05
+-2.3870241e+07 9.1498303e+04 1.1627870e+05
+-2.4725524e+07 1.0346601e+05 -2.3325981e+04
+-2.4404198e+07 1.0384475e+05 -1.5947009e+05
+-2.3207312e+07 9.3679462e+04 -2.4389606e+05
+-2.1086926e+07 7.5773064e+04 -2.5130330e+05
+-1.7808327e+07 5.4096266e+04 -1.8988932e+05
+-1.3292881e+07 3.3366887e+04 -1.0205762e+05
+-8.0649253e+06 1.7558637e+04 -3.5761676e+04
+-3.4296025e+06 7.8826831e+03 -3.9606922e+03
+-2.5436358e+05 3.3524462e+02 -2.6151218e+02
+-1.4131349e+04 1.9974727e+01 -1.6479107e+01
+-7.7998880e+02 1.1696355e+00 -8.2187647e-01
+-3.8879131e+01 6.0739921e-02 0.0000000e+00
+0 0 0
+0 0 0
+-5.0582952e+01 6.6908830e-02 3.4646479e-01
+-9.9868550e+02 1.2998303e+00 5.3254856e+00
+-1.7795131e+04 2.2647854e+01 6.1556208e+01
+-3.1551128e+05 3.9048878e+02 6.1519861e+02
+-4.6950832e+06 4.4960644e+03 3.8671259e+04
+-1.1134086e+07 9.6110229e+03 1.2879767e+05
+-1.7956798e+07 1.7553572e+04 2.0930211e+05
+-2.3070706e+07 2.6932306e+04 2.0717579e+05
+-2.5846013e+07 3.4984535e+04 1.0586524e+05
+-2.6721170e+07 3.9458820e+04 -5.2520099e+04
+-2.6342381e+07 3.9567331e+04 -2.0452994e+05
+-2.5044224e+07 3.5710572e+04 -2.9658407e+05
+-2.2769895e+07 2.8938503e+04 -3.0086738e+05
+-1.9249526e+07 2.0732557e+04 -2.2699591e+05
+-1.4378229e+07 1.2856409e+04 -1.2298844e+05
+-8.7140827e+06 6.8104100e+03 -4.3542624e+04
+-3.6839448e+06 3.0745754e+03 -4.4385329e+03
+-2.7739291e+05 1.4481074e+02 -2.9223003e+02
+-1.5419381e+04 8.5000788e+00 -1.8512731e+01
+-8.5170493e+02 4.9086227e-01 -9.4040965e-01
+-4.2482636e+01 2.5215093e-02 0.0000000e+00
+0 0 0
+0 0 0
+-5.2072997e+01 -6.6908816e-02 3.5720366e-01
+-1.0277638e+03 -1.2998301e+00 5.4979736e+00
+-1.8307418e+04 -2.2647851e+01 6.3762960e+01
+-3.2451752e+05 -3.9048872e+02 6.4353128e+02
+-4.8112571e+06 -4.4960636e+03 3.9169718e+04
+-1.1427333e+07 -9.6110220e+03 1.3091900e+05
+-1.8430470e+07 -1.7553571e+04 2.1209260e+05
+-2.3666127e+07 -2.6932304e+04 2.0754939e+05
+-2.6493178e+07 -3.4984535e+04 1.0073795e+05
+-2.7371588e+07 -3.9458820e+04 -6.4343709e+04
+-2.6972127e+07 -3.9567331e+04 -2.2187599e+05
+-2.5640930e+07 -3.5710569e+04 -3.1643861e+05
+-2.3317829e+07 -2.8938498e+04 -3.1936892e+05
+-1.9720203e+07 -2.0732555e+04 -2.4081427e+05
+-1.4733140e+07 -1.2856405e+04 -1.3080209e+05
+-8.9252553e+06 -6.8104066e+03 -4.6452907e+04
+-3.7645856e+06 -3.0745703e+03 -4.5982750e+03
+-2.8507131e+05 -1.4481055e+02 -3.0272670e+02
+-1.5847882e+04 -8.5000705e+00 -1.9223373e+01
+-8.7552197e+02 -4.9086188e-01 -9.8306824e-01
+-4.3677740e+01 -2.5215078e-02 0.0000000e+00
+0 0 0
+0 0 0
+-5.0582952e+01 -1.6508588e-01 3.4646478e-01
+-9.9868550e+02 -3.1909147e+00 5.3254853e+00
+-1.7795131e+04 -5.5294382e+01 6.1556206e+01
+-3.1551128e+05 -9.4842660e+02 6.1519862e+02
+-4.6950832e+06 -1.1405075e+04 3.8671259e+04
+-1.1134086e+07 -2.4563724e+04 1.2879767e+05
+-1.7956798e+07 -4.5328391e+04 2.0930211e+05
+-2.3070706e+07 -7.0096788e+04 2.0717579e+05
+-2.5846013e+07 -9.1498303e+04 1.0586524e+05
+-2.6721170e+07 -1.0346601e+05 -5.2520101e+04
+-2.6342381e+07 -1.0384475e+05 -2.0452994e+05
+-2.5044224e+07 -9.3679459e+04 -2.9658407e+05
+-2.2769895e+07 -7.5773061e+04 -3.0086738e+05
+-1.9249526e+07 -5.4096261e+04 -2.2699590e+05
+-1.4378229e+07 -3.3366885e+04 -1.2298844e+05
+-8.7140827e+06 -1.7558635e+04 -4.3542620e+04
+-3.6839448e+06 -7.8826825e+03 -4.4385329e+03
+-2.7739291e+05 -3.3524455e+02 -2.9223004e+02
+-1.5419381e+04 -1.9974724e+01 -1.8512732e+01
+-8.5170493e+02 -1.1696353e+00 -9.4040967e-01
+-4.2482636e+01 -6.0739911e-02 0.0000000e+00
+0 0 0
+0 0 0
+-4.6112564e+01 -1.7599178e-01 3.1550206e-01
+-9.1145664e+02 -3.3251798e+00 4.8223003e+00
+-1.6259392e+04 -5.6013160e+01 5.4837368e+01
+-2.8854795e+05 -9.3002051e+02 5.1960536e+02
+-4.3358324e+06 -1.2878627e+04 3.6741983e+04
+-1.0243649e+07 -2.8370081e+04 1.2140095e+05
+-1.6522283e+07 -5.3911473e+04 1.9892488e+05
+-2.1262151e+07 -8.5162973e+04 2.0264914e+05
+-2.3870241e+07 -1.1255973e+05 1.1627870e+05
+-2.4725524e+07 -1.2806296e+05 -2.3325981e+04
+-2.4404198e+07 -1.2874341e+05 -1.5947009e+05
+-2.3207312e+07 -1.1590833e+05 -2.4389606e+05
+-2.1086926e+07 -9.3205381e+04 -2.5130330e+05
+-1.7808327e+07 -6.5833417e+04 -1.8988931e+05
+-1.3292881e+07 -3.9936812e+04 -1.0205761e+05
+-8.0649253e+06 -2.0564071e+04 -3.5761672e+04
+-3.4296025e+06 -9.0495885e+03 -3.9606922e+03
+-2.5436358e+05 -2.4621960e+02 -2.6151219e+02
+-1.4131349e+04 -1.6495568e+01 -1.6479108e+01
+-7.7998880e+02 -1.0524636e+00 -8.2187648e-01
+-3.8879131e+01 -5.7833279e-02 0.0000000e+00
+0 0 0
+0 0 0
+-3.8753895e+01 -1.0861049e-01 2.7718515e-01
+-7.6770763e+02 -1.8823620e+00 4.2816958e+00
+-1.3728045e+04 -2.7850392e+01 4.9386243e+01
+-2.4414917e+05 -3.8088789e+02 4.6787042e+02
+-3.7085515e+06 -8.7504187e+03 3.2522753e+04
+-8.7364816e+06 -2.0433325e+04 1.0654982e+05
+-1.4104943e+07 -4.1713786e+04 1.7647793e+05
+-1.8197443e+07 -6.9130061e+04 1.8591852e+05
+-2.0490381e+07 -9.3799221e+04 1.1973496e+05
+-2.1279985e+07 -1.0800324e+05 7.3215082e+03
+-2.1038344e+07 -1.0884690e+05 -1.0474374e+05
+-2.0014905e+07 -9.7498451e+04 -1.7639441e+05
+-1.8172761e+07 -7.7366877e+04 -1.8638009e+05
+-1.5325843e+07 -5.3337332e+04 -1.4105256e+05
+-1.1427173e+07 -3.1122718e+04 -7.4727015e+04
+-6.9385140e+06 -1.5189289e+04 -2.5728662e+04
+-2.9686681e+06 -6.3377933e+03 -3.3087405e+03
+-2.1623922e+05 9.4795953e+01 -2.1880606e+02
+-1.1993717e+04 6.1428638e-02 -1.3646950e+01
+-6.6078172e+02 -2.4632486e-01 -6.6193163e-01
+-3.2884126e+01 -2.1465598e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.8998210e+01 -3.3909345e-02 2.4619994e-01
+-5.7635553e+02 -3.8528062e-01 4.0796777e+00
+-1.0349541e+04 -5.9354493e-01 5.4020251e+01
+-1.8485952e+05 1.1842685e+02 6.6908171e+02
+-2.8138063e+06 -3.2719446e+03 2.5640511e+04
+-6.6546898e+06 -8.8363401e+03 8.3323963e+04
+-1.0779462e+07 -2.1371937e+04 1.3935168e+05
+-1.3951042e+07 -3.9091291e+04 1.5068272e+05
+-1.5753480e+07 -5.5727257e+04 1.0477876e+05
+-1.6397699e+07 -6.5562946e+04 2.2862945e+04
+-1.6235529e+07 -6.6391764e+04 -6.0405890e+04
+-1.5453925e+07 -5.9009869e+04 -1.1495236e+05
+-1.4025196e+07 -4.5841373e+04 -1.2473238e+05
+-1.1813082e+07 -3.0375461e+04 -9.4343897e+04
+-8.7935998e+06 -1.6619116e+04 -4.9063116e+04
+-5.3326185e+06 -7.4182696e+03 -1.6622344e+04
+-2.2817846e+06 -2.8205756e+03 -2.7603853e+03
+-1.6484042e+05 3.0692635e+02 -1.7763657e+02
+-9.1083082e+03 1.1121259e+01 -1.0759777e+01
+-4.9997690e+02 3.4696193e-01 -5.0330922e-01
+-2.4812647e+01 8.2851081e-03 0.0000000e+00
+0 0 0
+0 0 0
+-1.8152416e+01 -5.6682252e-03 2.0148514e-01
+-3.6163941e+02 3.4744208e-02 3.6669644e+00
+-6.5325535e+03 3.7310291e+00 5.7063458e+01
+-1.1778395e+05 1.2684239e+02 9.0272937e+02
+-1.7569266e+06 -6.5598472e+02 1.6824815e+04
+-4.2438107e+06 -2.0754492e+03 5.4514542e+04
+-6.9312703e+06 -7.2775507e+03 9.1766998e+04
+-9.0013810e+06 -1.5912243e+04 1.0016421e+05
+-1.0176067e+07 -2.4585999e+04 7.1036840e+04
+-1.0595242e+07 -2.9954170e+04 1.8053237e+04
+-1.0493609e+07 -3.0685169e+04 -3.6072742e+04
+-9.9942559e+06 -2.7196038e+04 -7.1594011e+04
+-9.0749190e+06 -2.0815398e+04 -7.8062634e+04
+-7.6408250e+06 -1.3467056e+04 -5.8668566e+04
+-5.6743611e+06 -7.2793820e+03 -3.0075493e+04
+-3.4193283e+06 -3.4456207e+03 -1.0193161e+04
+-1.4396139e+06 -1.4982765e+03 -2.2283934e+03
+-1.0596428e+05 1.4313066e+02 -1.3430335e+02
+-5.8011060e+03 5.1810964e+00 -7.7477104e+00
+-3.1657649e+02 1.6544154e-01 -3.4964889e-01
+-1.5676019e+01 5.3976838e-03 0.0000000e+00
+0 0 0
+0 0 0
+-8.4421989e+00 -4.8007590e-03 1.1651253e-01
+-1.6547193e+02 -7.1850837e-02 2.1921255e+00
+-2.9706481e+03 -8.1335103e-01 3.6050966e+01
+-5.4604688e+04 -5.7247494e+00 6.1399763e+02
+-7.9324527e+05 5.2178976e+02 8.1050201e+03
+-2.0330747e+06 1.6814716e+03 2.7001484e+04
+-3.3818608e+06 1.4350896e+03 4.5732042e+04
+-4.4078902e+06 -8.3491649e+02 4.9201971e+04
+-4.9701238e+06 -3.7911645e+03 3.2812428e+04
+-5.1538860e+06 -5.8347258e+03 4.0132923e+03
+-5.0927907e+06 -6.3085200e+03 -2.4870665e+04
+-4.8538913e+06 -5.3972496e+03 -4.3200723e+04
+-4.4191640e+06 -3.6778062e+03 -4.5489185e+04
+-3.7272777e+06 -1.9746576e+03 -3.3736840e+04
+-2.7580192e+06 -1.0774777e+03 -1.7245554e+04
+-1.6343410e+06 -9.8789760e+02 -5.8547351e+03
+-6.5290406e+05 -8.3830533e+02 -1.3019372e+03
+-4.9639872e+04 -6.1705592e+01 -7.3782843e+01
+-2.6614946e+03 -3.5998159e+00 -4.1177745e+00
+-1.4598848e+02 -1.8686942e-01 -1.8310753e-01
+-7.3438955e+00 -7.0097949e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.3259325e+00 -1.4025462e-03 3.3303237e-02
+-3.8817799e+01 -2.0446872e-02 5.2801689e-01
+-5.3906727e+02 -1.9613940e-01 6.5791021e+00
+-6.5261096e+03 -7.5036928e-01 7.4273247e+01
+-5.9016547e+04 2.2597155e+01 1.2245755e+03
+-1.3480107e+05 7.0593245e+01 4.2760770e+03
+-2.1565932e+05 4.6316798e+01 7.5385033e+03
+-2.8268715e+05 -8.5919671e+01 8.5418215e+03
+-3.2683222e+05 -2.5666352e+02 6.4142777e+03
+-3.4833069e+05 -3.7653822e+02 2.2399873e+03
+-3.5058711e+05 -4.0533389e+02 -2.0749499e+03
+-3.3576725e+05 -3.5193711e+02 -4.8828084e+03
+-3.0392044e+05 -2.5055932e+02 -5.3580049e+03
+-2.5456043e+05 -1.4871811e+02 -3.8386712e+03
+-1.8984589e+05 -8.8363915e+01 -1.7320162e+03
+-1.1793239e+05 -6.8946450e+01 -4.2604019e+02
+-5.2479134e+04 -4.8701526e+01 -9.3182670e+01
+-5.8344708e+03 -7.6013563e+00 -1.0166033e+01
+-4.7830040e+02 -7.2417725e-01 -8.0573319e-01
+-3.4050029e+01 -5.0037794e-02 -4.2458537e-02
+-2.0172105e+00 -2.0669105e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.3390842e-01 -1.4766745e-04 6.2239489e-03
+-6.0394322e+00 -2.2243109e-03 8.4984237e-02
+-6.4929619e+01 -1.8479905e-02 8.6730735e-01
+-5.6034987e+02 -4.5437391e-02 7.8687607e+00
+-3.2632247e+03 9.7783982e-01 7.2652434e+01
+-7.5163525e+03 2.8550736e+00 2.3527812e+02
+-1.2106746e+04 9.2784987e-01 4.1085262e+02
+-1.5934817e+04 -6.7621531e+00 4.6645454e+02
+-1.8464792e+04 -1.6621542e+01 3.5023972e+02
+-1.9692620e+04 -2.3657295e+01 1.1868549e+02
+-1.9810754e+04 -2.5407301e+01 -1.2188750e+02
+-1.8949528e+04 -2.2266586e+01 -2.7776123e+02
+-1.7117336e+04 -1.6252174e+01 -3.0328607e+02
+-1.4291863e+04 -1.0122984e+01 -2.1926705e+02
+-1.0605392e+04 -6.1669613e+00 -1.0301876e+02
+-6.5293032e+03 -4.3829729e+00 -2.8585168e+01
+-2.8611629e+03 -2.7827714e+00 -6.8183175e+00
+-4.9287563e+02 -6.1677402e-01 -1.0225804e+00
+-5.6833905e+01 -7.6477900e-02 -1.0168496e-01
+-5.2410622e+00 -5.6748721e-03 -5.7422600e-03
+-3.7331406e-01 -1.2330710e-04 0.0000000e+00
+0 0 0
+0 0 0
+-6.1015041e-02 8.0589858e-06 8.3706192e-04
+-7.1997460e-01 1.0159820e-05 1.0194540e-02
+-6.2177806e+00 -8.8713061e-05 8.9549127e-02
+-4.1416728e+01 3.1541074e-03 6.7285623e-01
+-1.8442775e+02 5.4864713e-02 4.3322555e+00
+-4.1847164e+02 1.3507647e-01 1.2961069e+01
+-6.7597951e+02 3.4371271e-02 2.2289898e+01
+-8.9289380e+02 -3.4626379e-01 2.5283344e+01
+-1.0370729e+03 -8.4238838e-01 1.8950508e+01
+-1.1069706e+03 -1.2049194e+00 6.2058700e+00
+-1.1131820e+03 -1.2988885e+00 -7.0887124e+00
+-1.0633905e+03 -1.1371640e+00 -1.5670808e+01
+-9.5845110e+02 -8.2496874e-01 -1.7037580e+01
+-7.9758384e+02 -5.0668992e-01 -1.2427788e+01
+-5.8910339e+02 -2.9713465e-01 -6.0553077e+00
+-3.6079153e+02 -1.9835479e-01 -1.8575859e+00
+-1.5959371e+02 -1.2112036e-01 -4.6781847e-01
+-3.5885061e+01 -3.1448859e-02 -8.1919829e-02
+-5.3666753e+00 -4.0781787e-03 -8.7916495e-03
+-6.1737677e-01 -1.5368132e-04 -3.8328768e-04
+-5.2007925e-02 3.5548488e-05 0.0000000e+00
+0 0 0
+0 0 0
+-6.0120443e-03 0.0000000e+00 7.5419868e-05
+-6.2415297e-02 0.0000000e+00 8.5344759e-04
+-4.5664473e-01 0.0000000e+00 6.7957197e-03
+-2.5296506e+00 0.0000000e+00 4.4703525e-02
+-9.5251680e+00 0.0000000e+00 2.3160824e-01
+-2.1121102e+01 0.0000000e+00 6.4738902e-01
+-3.4097874e+01 0.0000000e+00 1.0947770e+00
+-4.5149037e+01 0.0000000e+00 1.2382293e+00
+-5.2542379e+01 0.0000000e+00 9.2534612e-01
+-5.6128214e+01 0.0000000e+00 2.9265730e-01
+-5.6425989e+01 0.0000000e+00 -3.6919168e-01
+-5.3838339e+01 0.0000000e+00 -7.9518777e-01
+-4.8427751e+01 0.0000000e+00 -8.6155579e-01
+-4.0182269e+01 0.0000000e+00 -6.3322216e-01
+-2.9574131e+01 0.0000000e+00 -3.1736330e-01
+-1.8083854e+01 0.0000000e+00 -1.0399871e-01
+-8.1512531e+00 0.0000000e+00 -2.6406968e-02
+-2.1641555e+00 0.0000000e+00 -4.6955151e-03
+-3.8941106e-01 0.0000000e+00 -4.1746413e-04
+-5.2980144e-02 0.0000000e+00 1.1634931e-05
+-5.0862065e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.1788433e-03 6.1448644e-05 1.0535035e-04
+-6.4069597e-02 6.2452713e-04 1.1351228e-03
+-4.6809476e-01 4.0243183e-03 8.5608357e-03
+-2.5896414e+00 1.4751959e-02 5.3799638e-02
+-9.7394757e+00 -3.7939205e-03 2.7190120e-01
+-2.1567299e+01 -3.9168910e-02 7.5726652e-01
+-3.4740679e+01 1.1735715e-01 1.2827139e+00
+-4.5880294e+01 5.6340408e-01 1.4505666e+00
+-5.3277701e+01 1.1230041e+00 1.0628850e+00
+-5.6854661e+01 1.5283307e+00 2.6100082e-01
+-5.7181255e+01 1.6252085e+00 -6.0894162e-01
+-5.4661546e+01 1.4155265e+00 -1.2012608e+00
+-4.9315427e+01 1.0100991e+00 -1.3236837e+00
+-4.1064850e+01 5.7989808e-01 -1.0210010e+00
+-3.0330147e+01 2.8361129e-01 -5.4859571e-01
+-1.8601772e+01 1.5987475e-01 -1.9055281e-01
+-8.4051818e+00 1.0685408e-01 -4.3478200e-02
+-2.2372657e+00 3.7652414e-02 -8.0203556e-03
+-4.0350067e-01 7.2135156e-03 -1.1442531e-03
+-5.4961312e-02 9.4184991e-04 -1.0493560e-04
+-5.2717339e-03 8.0591752e-05 0.0000000e+00
+0 0 0
+0 0 0
+-6.2606429e-02 6.2592374e-04 1.0269127e-03
+-7.3759569e-01 7.0105554e-03 1.2261979e-02
+-6.3590937e+00 5.1973328e-02 1.0562606e-01
+-4.2294352e+01 2.1567704e-01 7.8232501e-01
+-1.8811713e+02 -5.5052544e-01 5.0184340e+00
+-4.2633552e+02 -2.1990532e+00 1.5042195e+01
+-6.8706485e+02 2.9644877e-01 2.5948447e+01
+-9.0495406e+02 9.1226938e+00 2.9449422e+01
+-1.0485685e+03 2.0396205e+01 2.1671743e+01
+-1.1179186e+03 2.8517241e+01 5.6308570e+00
+-1.1246230e+03 3.0440353e+01 -1.1743281e+01
+-1.0763690e+03 2.6281625e+01 -2.3630935e+01
+-9.7314578e+02 1.8245050e+01 -2.6171209e+01
+-8.1281438e+02 9.7704024e+00 -2.0131169e+01
+-6.0254189e+02 4.1872523e+00 -1.0596306e+01
+-3.7014487e+02 2.3420853e+00 -3.4251722e+00
+-1.6412345e+02 1.8830826e+00 -6.7165898e-01
+-3.7007398e+01 5.9807809e-01 -1.0974849e-01
+-5.5508293e+00 9.5603069e-02 -1.3984041e-02
+-6.4006893e-01 1.0832915e-02 -1.1829501e-03
+-5.3961844e-02 8.5156123e-04 0.0000000e+00
+0 0 0
+0 0 0
+-4.4402380e-01 4.0729526e-03 6.6683522e-03
+-6.1689602e+00 5.1511816e-02 9.1695102e-02
+-6.6197249e+01 4.6062755e-01 9.5067051e-01
+-5.7041337e+02 2.4084223e+00 8.8214234e+00
+-3.3187993e+03 -1.9553209e+01 8.3398711e+01
+-7.6375752e+03 -6.8877294e+01 2.7129971e+02
+-1.2272227e+04 -3.8279564e+01 4.7535668e+02
+-1.6103727e+04 1.1324466e+02 5.4014547e+02
+-1.8613002e+04 3.1011694e+02 3.9863517e+02
+-1.9825414e+04 4.5071946e+02 1.0922690e+02
+-1.9951228e+04 4.8350552e+02 -2.0336459e+02
+-1.9120238e+04 4.1215144e+02 -4.1852411e+02
+-1.7325453e+04 2.7434480e+02 -4.6650720e+02
+-1.4520160e+04 1.2989325e+02 -3.5833370e+02
+-1.0814639e+04 3.9926394e+01 -1.8482618e+02
+-6.6781951e+03 2.1301369e+01 -5.4893576e+01
+-2.9329604e+03 2.7280486e+01 -8.4934176e+00
+-5.0669433e+02 7.0720554e+00 -1.1486907e+00
+-5.8616650e+01 8.5200685e-01 -1.2234951e-01
+-5.4221887e+00 7.8684001e-02 -9.0741022e-03
+-3.8698918e-01 5.4525754e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.3728832e+00 2.0959248e-02 3.0064343e-02
+-3.9523414e+01 3.0172040e-01 4.8546990e-01
+-5.4777954e+02 3.3267535e+00 6.3316184e+00
+-6.6214912e+03 2.6136018e+01 7.7985597e+01
+-5.9858431e+04 -4.9863803e+02 1.3989546e+03
+-1.3666052e+05 -1.7164859e+03 4.9060109e+03
+-2.1809558e+05 -1.3707144e+03 8.6746993e+03
+-2.8497774e+05 1.2402563e+03 9.8382815e+03
+-3.2861005e+05 4.6581196e+03 7.2681120e+03
+-3.4976399e+05 7.0677184e+03 2.0844140e+03
+-3.5214311e+05 7.6170993e+03 -3.4931827e+03
+-3.3789209e+05 6.4013121e+03 -7.3574966e+03
+-3.0679415e+05 4.0521701e+03 -8.2616135e+03
+-2.5793753e+05 1.5938225e+03 -6.3484353e+03
+-1.9307490e+05 1.4166944e+02 -3.2211682e+03
+-1.2029056e+05 3.9747579e+01 -8.8144194e+02
+-5.3637853e+04 4.0067592e+02 -9.6118305e+01
+-5.9798632e+03 6.6123066e+01 -9.7768716e+00
+-4.9183560e+02 5.4229670e+00 -8.1263627e-01
+-3.5133658e+01 4.0043657e-01 -5.0759895e-02
+-2.0870063e+00 2.4488433e-02 0.0000000e+00
+0 0 0
+0 0 0
+-8.5876182e+00 9.2151462e-02 7.4227079e-02
+-1.6797562e+02 1.6036735e+00 1.2759629e+00
+-3.0091633e+03 2.4633539e+01 1.8484415e+01
+-5.5208677e+04 3.7498693e+02 2.7362174e+02
+-8.0546794e+05 4.2889228e+03 7.7087352e+03
+-2.0646767e+06 1.0037265e+04 2.7557083e+04
+-3.4222367e+06 1.9558253e+04 4.7004007e+04
+-4.4400654e+06 3.1309555e+04 4.9109878e+04
+-4.9863958e+06 4.1716734e+04 2.8323243e+04
+-5.1590124e+06 4.7826370e+04 -7.3089929e+03
+-5.0976255e+06 4.8641149e+04 -4.3498273e+04
+-4.8685723e+06 4.4601177e+04 -6.7017164e+04
+-4.4488050e+06 3.6827245e+04 -7.0151257e+04
+-3.7688323e+06 2.7013561e+04 -5.4016438e+04
+-2.7999855e+06 1.7342817e+04 -2.9251258e+04
+-1.6636325e+06 9.6229792e+03 -9.5430253e+03
+-6.6553101e+05 4.3838645e+03 -8.9926575e+02
+-5.0749584e+04 3.3196991e+02 -5.5400919e+01
+-2.7299636e+03 2.1938915e+01 -3.4478944e+00
+-1.5028278e+02 1.4290174e+00 -1.8217159e-01
+-7.5830388e+00 8.1460202e-02 0.0000000e+00
+0 0 0
+0 0 0
+-1.8418874e+01 2.6506229e-01 9.3547334e-02
+-3.6625052e+02 5.0305773e+00 1.2777465e+00
+-6.6030370e+03 8.5787542e+01 1.0607277e+01
+-1.1885723e+05 1.4542361e+03 4.6452300e+00
+-1.7792786e+06 1.4229836e+04 1.2415726e+04
+-4.2995215e+06 3.2038165e+04 4.6125704e+04
+-6.9995971e+06 5.6706870e+04 7.7303832e+04
+-9.0514661e+06 8.3235134e+04 7.5463399e+04
+-1.0195513e+07 1.0486882e+05 3.1757035e+04
+-1.0594918e+07 1.1694823e+05 -3.7688653e+04
+-1.0495149e+07 1.1822332e+05 -1.0573098e+05
+-1.0017270e+07 1.0963196e+05 -1.4774721e+05
+-9.1291062e+06 9.3059618e+04 -1.4979242e+05
+-7.7202567e+06 7.1270070e+04 -1.1461714e+05
+-5.7568685e+06 4.8110299e+04 -6.2877194e+04
+-3.4791258e+06 2.7648476e+04 -2.1105213e+04
+-1.4674898e+06 1.2626196e+04 -1.4716956e+03
+-1.0821336e+05 1.2086131e+03 -9.9262344e+01
+-5.9430778e+03 7.1155036e+01 -6.5066419e+00
+-3.2546280e+02 4.1613116e+00 -3.5263130e-01
+-1.6165582e+01 2.1839210e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.9338463e+01 4.8306381e-01 1.2225188e-01
+-5.8206602e+02 9.4441336e+00 1.4191864e+00
+-1.0433060e+04 1.6632302e+02 4.4032812e+00
+-1.8606933e+05 2.9106066e+03 -2.4215250e+02
+-2.8422499e+06 2.5833123e+04 1.6598104e+04
+-6.7258593e+06 5.6259347e+04 6.3546359e+04
+-1.0859705e+07 9.6032592e+04 1.0446409e+05
+-1.3994606e+07 1.3683450e+05 9.4428682e+04
+-1.5745238e+07 1.6910391e+05 2.1951747e+04
+-1.6358488e+07 1.8678131e+05 -8.7091464e+04
+-1.6201848e+07 1.8846117e+05 -1.9101064e+05
+-1.5458236e+07 1.7553697e+05 -2.5260504e+05
+-1.4084089e+07 1.5056141e+05 -2.5121440e+05
+-1.1918583e+07 1.1721843e+05 -1.9166263e+05
+-8.9117697e+06 8.0811737e+04 -1.0619412e+05
+-5.4222256e+06 4.7489001e+04 -3.6427610e+04
+-2.3255266e+06 2.2175635e+04 -2.2350511e+03
+-1.6809999e+05 2.3882144e+03 -1.5508755e+02
+-9.3176769e+03 1.3579675e+02 -1.0360540e+01
+-5.1327592e+02 7.6687864e+00 -5.6899865e-01
+-2.5553379e+01 3.9012619e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.9082373e+01 5.9514490e-01 2.1639690e-01
+-7.7284177e+02 1.1735135e+01 3.0595360e+00
+-1.3795285e+04 2.0841950e+02 2.8203587e+01
+-2.4499062e+05 3.6752739e+03 1.0498647e+02
+-3.7336661e+06 3.1107847e+04 1.9944795e+04
+-8.8042191e+06 6.6560115e+04 7.7381477e+04
+-1.4167766e+07 1.1167920e+05 1.2455731e+05
+-1.8196414e+07 1.5694281e+05 1.0341994e+05
+-2.0410934e+07 1.9217753e+05 8.9969653e+02
+-2.1156311e+07 2.1124892e+05 -1.4724180e+05
+-2.0924620e+07 2.1289839e+05 -2.8540270e+05
+-1.9958796e+07 1.9867545e+05 -3.6465011e+05
+-1.8199914e+07 1.7123753e+05 -3.5817293e+05
+-1.5428239e+07 1.3436320e+05 -2.7292152e+05
+-1.1560433e+07 9.3593293e+04 -1.5244304e+05
+-7.0457839e+06 5.5651861e+04 -5.3336009e+04
+-3.0226432e+06 2.6327241e+04 -3.5125348e+03
+-2.2011779e+05 2.9910032e+03 -2.3674835e+02
+-1.2247768e+04 1.6862656e+02 -1.5526578e+01
+-6.7722845e+02 9.4348242e+00 -8.4588812e-01
+-3.3815501e+01 4.7561341e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6366272e+01 4.9083676e-01 3.5801527e-01
+-9.1485400e+02 9.6844207e+00 5.8060930e+00
+-1.6291284e+04 1.7196928e+02 7.4148608e+01
+-2.8870858e+05 3.0293988e+03 8.8064934e+02
+-4.3511968e+06 2.5115243e+04 2.2237633e+04
+-1.0294867e+07 5.3328628e+04 8.6687007e+04
+-1.6549567e+07 8.8783504e+04 1.3686689e+05
+-2.1196787e+07 1.2394838e+05 1.0449713e+05
+-2.3700512e+07 1.5107026e+05 -2.4125299e+04
+-2.4499201e+07 1.6561923e+05 -2.0481850e+05
+-2.4192178e+07 1.6676153e+05 -3.7070090e+05
+-2.3071523e+07 1.5572558e+05 -4.6354045e+05
+-2.1062020e+07 1.3451273e+05 -4.5172189e+05
+-1.7887611e+07 1.0592908e+05 -3.4400286e+05
+-1.3424178e+07 7.4135170e+04 -1.9324777e+05
+-8.1782241e+06 4.4311148e+04 -6.8608250e+04
+-3.4879702e+06 2.1075240e+04 -4.9885519e+03
+-2.5848168e+05 2.4473418e+03 -3.2679574e+02
+-1.4406626e+04 1.3811582e+02 -2.1007709e+01
+-7.9815746e+02 7.7285551e+00 -1.1327814e+00
+-3.9925639e+01 3.8934032e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0757871e+01 1.8914643e-01 4.7660940e-01
+-1.0003811e+03 3.7278312e+00 8.1287929e+00
+-1.7794343e+04 6.6082692e+01 1.1322795e+02
+-3.1506736e+05 1.1614737e+03 1.5372285e+03
+-4.7014476e+06 9.5606368e+03 2.3456275e+04
+-1.1169327e+07 2.0250513e+04 9.1775518e+04
+-1.7952843e+07 3.3617465e+04 1.4298625e+05
+-2.2952968e+07 4.6809981e+04 1.0238680e+05
+-2.5605656e+07 5.6939789e+04 -4.3839410e+04
+-2.6415843e+07 6.2346063e+04 -2.4589361e+05
+-2.6054633e+07 6.2743270e+04 -4.2962300e+05
+-2.4845822e+07 5.8599889e+04 -5.3089953e+05
+-2.2701850e+07 5.0657519e+04 -5.1508945e+05
+-1.9306490e+07 3.9946944e+04 -3.9214338e+05
+-1.4503243e+07 2.8004788e+04 -2.2099858e+05
+-8.8284423e+06 1.6767355e+04 -7.9095192e+04
+-3.7438813e+06 7.9867949e+03 -6.0702674e+03
+-2.8155692e+05 9.3392625e+02 -3.9283810e+02
+-1.5701917e+04 5.2835846e+01 -2.5021746e+01
+-8.7061729e+02 2.9620352e+00 -1.3428652e+00
+-4.3585559e+01 1.4939806e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.2215580e+01 -1.8914642e-01 5.2087595e-01
+-1.0287767e+03 -3.7278310e+00 8.9894274e+00
+-1.8293784e+04 -6.6082688e+01 1.2752107e+02
+-3.2383973e+05 -1.1614737e+03 1.7726764e+03
+-4.8141790e+06 -9.5606360e+03 2.3815924e+04
+-1.1456377e+07 -2.0250512e+04 9.3361545e+04
+-1.8414652e+07 -3.3617465e+04 1.4477784e+05
+-2.3528909e+07 -4.6809980e+04 1.0117946e+05
+-2.6226881e+07 -5.6939790e+04 -5.1238286e+04
+-2.7037425e+07 -6.2346061e+04 -2.6070972e+05
+-2.6656771e+07 -6.2743270e+04 -4.5057885e+05
+-2.5419605e+07 -5.8599887e+04 -5.5470479e+05
+-2.3233792e+07 -5.0657518e+04 -5.3742701e+05
+-1.9768626e+07 -3.9946943e+04 -4.0910973e+05
+-1.4855449e+07 -2.8004784e+04 -2.3079153e+05
+-9.0397104e+06 -1.6767354e+04 -8.2801730e+04
+-3.8249656e+06 -7.9867937e+03 -6.4481125e+03
+-2.8923539e+05 -9.3392617e+02 -4.1618103e+02
+-1.6131939e+04 -5.2835842e+01 -2.6452809e+01
+-8.9463245e+02 -2.9620349e+00 -1.4182585e+00
+-4.4797202e+01 -1.4939804e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0757871e+01 -4.9083676e-01 4.7660940e-01
+-1.0003811e+03 -9.6844206e+00 8.1287928e+00
+-1.7794343e+04 -1.7196928e+02 1.1322795e+02
+-3.1506736e+05 -3.0293988e+03 1.5372285e+03
+-4.7014476e+06 -2.5115243e+04 2.3456274e+04
+-1.1169327e+07 -5.3328628e+04 9.1775518e+04
+-1.7952843e+07 -8.8783503e+04 1.4298625e+05
+-2.2952968e+07 -1.2394838e+05 1.0238680e+05
+-2.5605656e+07 -1.5107025e+05 -4.3839410e+04
+-2.6415843e+07 -1.6561923e+05 -2.4589362e+05
+-2.6054633e+07 -1.6676153e+05 -4.2962300e+05
+-2.4845822e+07 -1.5572558e+05 -5.3089953e+05
+-2.2701850e+07 -1.3451273e+05 -5.1508944e+05
+-1.9306490e+07 -1.0592907e+05 -3.9214338e+05
+-1.4503243e+07 -7.4135169e+04 -2.2099858e+05
+-8.8284423e+06 -4.4311147e+04 -7.9095192e+04
+-3.7438813e+06 -2.1075240e+04 -6.0702673e+03
+-2.8155692e+05 -2.4473418e+03 -3.9283810e+02
+-1.5701917e+04 -1.3811582e+02 -2.5021746e+01
+-8.7061729e+02 -7.7285550e+00 -1.3428652e+00
+-4.3585559e+01 -3.8934031e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6366272e+01 -5.9514490e-01 3.5801527e-01
+-9.1485400e+02 -1.1735135e+01 5.8060930e+00
+-1.6291284e+04 -2.0841949e+02 7.4148610e+01
+-2.8870858e+05 -3.6752738e+03 8.8064932e+02
+-4.3511968e+06 -3.1107847e+04 2.2237632e+04
+-1.0294867e+07 -6.6560115e+04 8.6687005e+04
+-1.6549567e+07 -1.1167920e+05 1.3686689e+05
+-2.1196787e+07 -1.5694281e+05 1.0449713e+05
+-2.3700512e+07 -1.9217753e+05 -2.4125301e+04
+-2.4499201e+07 -2.1124891e+05 -2.0481850e+05
+-2.4192178e+07 -2.1289839e+05 -3.7070089e+05
+-2.3071523e+07 -1.9867545e+05 -4.6354044e+05
+-2.1062020e+07 -1.7123753e+05 -4.5172189e+05
+-1.7887611e+07 -1.3436320e+05 -3.4400286e+05
+-1.3424178e+07 -9.3593292e+04 -1.9324777e+05
+-8.1782241e+06 -5.5651860e+04 -6.8608250e+04
+-3.4879702e+06 -2.6327241e+04 -4.9885518e+03
+-2.5848168e+05 -2.9910032e+03 -3.2679574e+02
+-1.4406626e+04 -1.6862656e+02 -2.1007709e+01
+-7.9815746e+02 -9.4348242e+00 -1.1327814e+00
+-3.9925639e+01 -4.7561341e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.9082373e+01 -4.8306380e-01 2.1639692e-01
+-7.7284177e+02 -9.4441336e+00 3.0595360e+00
+-1.3795285e+04 -1.6632301e+02 2.8203587e+01
+-2.4499062e+05 -2.9106066e+03 1.0498644e+02
+-3.7336661e+06 -2.5833123e+04 1.9944794e+04
+-8.8042191e+06 -5.6259347e+04 7.7381481e+04
+-1.4167766e+07 -9.6032592e+04 1.2455731e+05
+-1.8196414e+07 -1.3683450e+05 1.0341994e+05
+-2.0410934e+07 -1.6910391e+05 8.9969698e+02
+-2.1156311e+07 -1.8678131e+05 -1.4724180e+05
+-2.0924620e+07 -1.8846117e+05 -2.8540270e+05
+-1.9958796e+07 -1.7553697e+05 -3.6465011e+05
+-1.8199914e+07 -1.5056141e+05 -3.5817293e+05
+-1.5428239e+07 -1.1721843e+05 -2.7292152e+05
+-1.1560433e+07 -8.0811736e+04 -1.5244304e+05
+-7.0457839e+06 -4.7489000e+04 -5.3336008e+04
+-3.0226432e+06 -2.2175635e+04 -3.5125348e+03
+-2.2011779e+05 -2.3882144e+03 -2.3674835e+02
+-1.2247768e+04 -1.3579674e+02 -1.5526578e+01
+-6.7722845e+02 -7.6687864e+00 -8.4588812e-01
+-3.3815501e+01 -3.9012619e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.9338463e+01 -2.6506229e-01 1.2225189e-01
+-5.8206602e+02 -5.0305773e+00 1.4191867e+00
+-1.0433060e+04 -8.5787541e+01 4.4032815e+00
+-1.8606933e+05 -1.4542361e+03 -2.4215253e+02
+-2.8422499e+06 -1.4229836e+04 1.6598104e+04
+-6.7258593e+06 -3.2038165e+04 6.3546359e+04
+-1.0859705e+07 -5.6706869e+04 1.0446409e+05
+-1.3994606e+07 -8.3235133e+04 9.4428682e+04
+-1.5745238e+07 -1.0486882e+05 2.1951747e+04
+-1.6358488e+07 -1.1694823e+05 -8.7091464e+04
+-1.6201848e+07 -1.1822332e+05 -1.9101064e+05
+-1.5458236e+07 -1.0963196e+05 -2.5260504e+05
+-1.4084089e+07 -9.3059618e+04 -2.5121440e+05
+-1.1918583e+07 -7.1270070e+04 -1.9166263e+05
+-8.9117697e+06 -4.8110299e+04 -1.0619412e+05
+-5.4222256e+06 -2.7648476e+04 -3.6427610e+04
+-2.3255266e+06 -1.2626196e+04 -2.2350511e+03
+-1.6809999e+05 -1.2086131e+03 -1.5508755e+02
+-9.3176769e+03 -7.1155036e+01 -1.0360540e+01
+-5.1327592e+02 -4.1613117e+00 -5.6899866e-01
+-2.5553379e+01 -2.1839210e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.8418874e+01 -9.2151461e-02 9.3547340e-02
+-3.6625052e+02 -1.6036735e+00 1.2777467e+00
+-6.6030370e+03 -2.4633540e+01 1.0607277e+01
+-1.1885723e+05 -3.7498693e+02 4.6451544e+00
+-1.7792786e+06 -4.2889227e+03 1.2415725e+04
+-4.2995215e+06 -1.0037265e+04 4.6125704e+04
+-6.9995971e+06 -1.9558254e+04 7.7303832e+04
+-9.0514661e+06 -3.1309556e+04 7.5463399e+04
+-1.0195513e+07 -4.1716735e+04 3.1757035e+04
+-1.0594918e+07 -4.7826370e+04 -3.7688652e+04
+-1.0495149e+07 -4.8641148e+04 -1.0573098e+05
+-1.0017270e+07 -4.4601177e+04 -1.4774721e+05
+-9.1291062e+06 -3.6827245e+04 -1.4979242e+05
+-7.7202567e+06 -2.7013561e+04 -1.1461714e+05
+-5.7568685e+06 -1.7342817e+04 -6.2877194e+04
+-3.4791258e+06 -9.6229791e+03 -2.1105213e+04
+-1.4674898e+06 -4.3838645e+03 -1.4716957e+03
+-1.0821336e+05 -3.3196991e+02 -9.9262344e+01
+-5.9430778e+03 -2.1938915e+01 -6.5066419e+00
+-3.2546280e+02 -1.4290174e+00 -3.5263131e-01
+-1.6165582e+01 -8.1460201e-02 0.0000000e+00
+0 0 0
+0 0 0
+-8.5876182e+00 -2.0959249e-02 7.4227080e-02
+-1.6797562e+02 -3.0172040e-01 1.2759629e+00
+-3.0091633e+03 -3.3267535e+00 1.8484415e+01
+-5.5208677e+04 -2.6136018e+01 2.7362173e+02
+-8.0546794e+05 4.9863802e+02 7.7087352e+03
+-2.0646767e+06 1.7164859e+03 2.7557083e+04
+-3.4222367e+06 1.3707144e+03 4.7004007e+04
+-4.4400654e+06 -1.2402562e+03 4.9109878e+04
+-4.9863958e+06 -4.6581197e+03 2.8323243e+04
+-5.1590124e+06 -7.0677184e+03 -7.3089928e+03
+-5.0976255e+06 -7.6170993e+03 -4.3498273e+04
+-4.8685723e+06 -6.4013121e+03 -6.7017164e+04
+-4.4488050e+06 -4.0521701e+03 -7.0151257e+04
+-3.7688323e+06 -1.5938225e+03 -5.4016438e+04
+-2.7999855e+06 -1.4166944e+02 -2.9251258e+04
+-1.6636325e+06 -3.9747562e+01 -9.5430253e+03
+-6.6553101e+05 -4.0067591e+02 -8.9926575e+02
+-5.0749584e+04 -6.6123066e+01 -5.5400919e+01
+-2.7299636e+03 -5.4229671e+00 -3.4478943e+00
+-1.5028278e+02 -4.0043657e-01 -1.8217159e-01
+-7.5830388e+00 -2.4488433e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.3728832e+00 -4.0729526e-03 3.0064344e-02
+-3.9523414e+01 -5.1511815e-02 4.8546992e-01
+-5.4777954e+02 -4.6062756e-01 6.3316184e+00
+-6.6214912e+03 -2.4084223e+00 7.7985596e+01
+-5.9858431e+04 1.9553209e+01 1.3989546e+03
+-1.3666052e+05 6.8877294e+01 4.9060109e+03
+-2.1809558e+05 3.8279563e+01 8.6746992e+03
+-2.8497774e+05 -1.1324467e+02 9.8382815e+03
+-3.2861005e+05 -3.1011694e+02 7.2681120e+03
+-3.4976399e+05 -4.5071946e+02 2.0844140e+03
+-3.5214311e+05 -4.8350552e+02 -3.4931827e+03
+-3.3789209e+05 -4.1215143e+02 -7.3574965e+03
+-3.0679415e+05 -2.7434480e+02 -8.2616135e+03
+-2.5793753e+05 -1.2989325e+02 -6.3484353e+03
+-1.9307490e+05 -3.9926393e+01 -3.2211682e+03
+-1.2029056e+05 -2.1301369e+01 -8.8144194e+02
+-5.3637853e+04 -2.7280486e+01 -9.6118305e+01
+-5.9798632e+03 -7.0720554e+00 -9.7768716e+00
+-4.9183560e+02 -8.5200686e-01 -8.1263627e-01
+-3.5133658e+01 -7.8684001e-02 -5.0759895e-02
+-2.0870063e+00 -5.4525754e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.4402380e-01 -6.2592373e-04 6.6683523e-03
+-6.1689602e+00 -7.0105553e-03 9.1695104e-02
+-6.6197249e+01 -5.1973328e-02 9.5067051e-01
+-5.7041337e+02 -2.1567703e-01 8.8214233e+00
+-3.3187993e+03 5.5052543e-01 8.3398711e+01
+-7.6375752e+03 2.1990532e+00 2.7129971e+02
+-1.2272227e+04 -2.9644862e-01 4.7535668e+02
+-1.6103727e+04 -9.1226938e+00 5.4014547e+02
+-1.8613002e+04 -2.0396204e+01 3.9863517e+02
+-1.9825414e+04 -2.8517241e+01 1.0922690e+02
+-1.9951228e+04 -3.0440353e+01 -2.0336459e+02
+-1.9120238e+04 -2.6281625e+01 -4.1852411e+02
+-1.7325453e+04 -1.8245050e+01 -4.6650720e+02
+-1.4520160e+04 -9.7704026e+00 -3.5833370e+02
+-1.0814639e+04 -4.1872525e+00 -1.8482618e+02
+-6.6781951e+03 -2.3420853e+00 -5.4893576e+01
+-2.9329604e+03 -1.8830826e+00 -8.4934176e+00
+-5.0669433e+02 -5.9807808e-01 -1.1486907e+00
+-5.8616650e+01 -9.5603068e-02 -1.2234951e-01
+-5.4221887e+00 -1.0832915e-02 -9.0741022e-03
+-3.8698918e-01 -8.5156123e-04 0.0000000e+00
+0 0 0
+0 0 0
+-6.2606429e-02 -6.1448643e-05 1.0269127e-03
+-7.3759569e-01 -6.2452712e-04 1.2261979e-02
+-6.3590937e+00 -4.0243183e-03 1.0562606e-01
+-4.2294352e+01 -1.4751959e-02 7.8232501e-01
+-1.8811713e+02 3.7939217e-03 5.0184340e+00
+-4.2633552e+02 3.9168912e-02 1.5042195e+01
+-6.8706485e+02 -1.1735715e-01 2.5948447e+01
+-9.0495406e+02 -5.6340409e-01 2.9449422e+01
+-1.0485685e+03 -1.1230041e+00 2.1671743e+01
+-1.1179186e+03 -1.5283307e+00 5.6308571e+00
+-1.1246230e+03 -1.6252085e+00 -1.1743281e+01
+-1.0763690e+03 -1.4155265e+00 -2.3630935e+01
+-9.7314578e+02 -1.0100991e+00 -2.6171209e+01
+-8.1281438e+02 -5.7989808e-01 -2.0131169e+01
+-6.0254189e+02 -2.8361128e-01 -1.0596306e+01
+-3.7014487e+02 -1.5987475e-01 -3.4251722e+00
+-1.6412345e+02 -1.0685408e-01 -6.7165898e-01
+-3.7007398e+01 -3.7652414e-02 -1.0974849e-01
+-5.5508293e+00 -7.2135156e-03 -1.3984041e-02
+-6.4006893e-01 -9.4184991e-04 -1.1829501e-03
+-5.3961844e-02 -8.0591752e-05 0.0000000e+00
+0 0 0
+0 0 0
+-6.1788433e-03 0.0000000e+00 1.0535035e-04
+-6.4069597e-02 0.0000000e+00 1.1351228e-03
+-4.6809476e-01 0.0000000e+00 8.5608356e-03
+-2.5896414e+00 0.0000000e+00 5.3799638e-02
+-9.7394757e+00 0.0000000e+00 2.7190120e-01
+-2.1567299e+01 0.0000000e+00 7.5726652e-01
+-3.4740679e+01 0.0000000e+00 1.2827139e+00
+-4.5880294e+01 0.0000000e+00 1.4505667e+00
+-5.3277701e+01 0.0000000e+00 1.0628850e+00
+-5.6854661e+01 0.0000000e+00 2.6100083e-01
+-5.7181255e+01 0.0000000e+00 -6.0894162e-01
+-5.4661546e+01 0.0000000e+00 -1.2012608e+00
+-4.9315427e+01 0.0000000e+00 -1.3236837e+00
+-4.1064850e+01 0.0000000e+00 -1.0210010e+00
+-3.0330147e+01 0.0000000e+00 -5.4859571e-01
+-1.8601772e+01 0.0000000e+00 -1.9055281e-01
+-8.4051818e+00 0.0000000e+00 -4.3478200e-02
+-2.2372657e+00 0.0000000e+00 -8.0203556e-03
+-4.0350067e-01 0.0000000e+00 -1.1442531e-03
+-5.4961312e-02 0.0000000e+00 -1.0493560e-04
+-5.2717339e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.3717679e-03 8.1973910e-05 1.1095072e-04
+-6.5958830e-02 7.9956501e-04 1.2006186e-03
+-4.8099455e-01 4.9762335e-03 9.1241726e-03
+-2.6563913e+00 1.7860217e-02 5.8013845e-02
+-9.9752371e+00 -3.4065989e-03 2.9718184e-01
+-2.2052524e+01 -5.0218467e-02 8.3262521e-01
+-3.5427295e+01 1.0381590e-01 1.4154255e+00
+-4.6638551e+01 5.7486101e-01 1.5988213e+00
+-5.4007199e+01 1.1834222e+00 1.1448967e+00
+-5.7541199e+01 1.6357637e+00 1.9567109e-01
+-5.7875999e+01 1.7453407e+00 -8.5492578e-01
+-5.5425168e+01 1.4958696e+00 -1.5871738e+00
+-5.0164460e+01 1.0080773e+00 -1.7462181e+00
+-4.1938724e+01 4.9064430e-01 -1.3629884e+00
+-3.1100344e+01 1.5084873e-01 -7.4364072e-01
+-1.9138913e+01 5.2090371e-02 -2.5858964e-01
+-8.6704116e+00 6.1149843e-02 -5.4509731e-02
+-2.3147000e+00 3.2370771e-02 -9.4461922e-03
+-4.1886269e-01 7.2569874e-03 -1.3411695e-03
+-5.7246700e-02 1.0737121e-03 -1.2949348e-04
+-5.5059466e-03 1.0471922e-04 0.0000000e+00
+0 0 0
+0 0 0
+-6.4382420e-02 8.1913003e-04 1.0388353e-03
+-7.5714115e-01 8.8399152e-03 1.2543940e-02
+-6.5148171e+00 6.3397978e-02 1.0984556e-01
+-4.3255164e+01 2.5736564e-01 8.3115229e-01
+-1.9212774e+02 -6.1616206e-01 5.4545218e+00
+-4.3481154e+02 -2.5804116e+00 1.6460736e+01
+-6.9884005e+02 -1.6158557e-01 2.8501338e+01
+-9.1742415e+02 9.2261763e+00 3.2320107e+01
+-1.0599207e+03 2.1584162e+01 2.3271606e+01
+-1.1281288e+03 3.0736365e+01 4.3811864e+00
+-1.1349343e+03 3.2949647e+01 -1.6511843e+01
+-1.0881809e+03 2.7959435e+01 -3.1163467e+01
+-9.8699367e+02 1.8168630e+01 -3.4476131e+01
+-8.2770988e+02 7.7935250e+00 -2.6883515e+01
+-6.1607241e+02 1.2086029e+00 -1.4410747e+01
+-3.7971512e+02 -1.2049042e-01 -4.6679176e+00
+-1.6876268e+02 8.4074452e-01 -8.0827991e-01
+-3.8167274e+01 5.0559473e-01 -1.2162734e-01
+-5.7450032e+00 9.5017919e-02 -1.5214325e-02
+-6.6491833e-01 1.2035821e-02 -1.3270276e-03
+-5.6235662e-02 1.0515093e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.5509646e-01 5.5944759e-03 6.2973134e-03
+-6.3108118e+00 6.8458144e-02 8.8530689e-02
+-6.7585439e+01 5.9248366e-01 9.4763531e-01
+-5.8141533e+02 3.0561720e+00 9.1507872e+00
+-3.3792924e+03 -2.1171338e+01 9.0199040e+01
+-7.7688618e+03 -7.6585067e+01 2.9549026e+02
+-1.2449586e+04 -4.6939084e+01 5.1962724e+02
+-1.6280501e+04 1.1551957e+02 5.9010773e+02
+-1.8760405e+04 3.3248288e+02 4.2661191e+02
+-1.9947644e+04 4.9192625e+02 8.7652416e+01
+-2.0074248e+04 5.3021030e+02 -2.8658788e+02
+-1.9272150e+04 4.4425346e+02 -5.5097042e+02
+-1.7519317e+04 2.7490399e+02 -6.1384240e+02
+-1.4742252e+04 9.5168311e+01 -4.7912448e+02
+-1.1024707e+04 -1.5044124e+01 -2.5280335e+02
+-6.8298912e+03 -2.5647884e+01 -7.5579859e+01
+-3.0055566e+03 7.4380167e+00 -9.5810022e+00
+-5.2078796e+02 6.1998715e+00 -1.1816527e+00
+-6.0466804e+01 8.8665784e-01 -1.2313887e-01
+-5.6153563e+00 9.1373925e-02 -9.3093383e-03
+-4.0219717e-01 6.9501689e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.4238316e+00 3.2284558e-02 2.4258350e-02
+-4.0293948e+01 4.5835893e-01 4.0489159e-01
+-5.5734812e+02 4.9471295e+00 5.6188247e+00
+-6.7264492e+03 3.7488742e+01 7.6144211e+01
+-6.0779511e+04 -5.3132584e+02 1.5073785e+03
+-1.3869418e+05 -1.8567494e+03 5.3212049e+03
+-2.2074749e+05 -1.5147431e+03 9.4409265e+03
+-2.8742590e+05 1.3014600e+03 1.0703149e+04
+-3.3040482e+05 5.0768098e+03 7.7535943e+03
+-3.5104951e+05 7.8177742e+03 1.7132721e+03
+-3.5342944e+05 8.4673819e+03 -4.9375681e+03
+-3.3971553e+05 7.0036696e+03 -9.6735470e+03
+-3.0943410e+05 4.1056042e+03 -1.0864294e+04
+-2.6121136e+05 1.0124479e+03 -8.5077483e+03
+-1.9631798e+05 -8.3774176e+02 -4.4419659e+03
+-1.2269174e+05 -8.3364492e+02 -1.2327936e+03
+-5.4793259e+04 2.5836098e+01 -9.5786077e+01
+-6.1273938e+03 6.6965423e+01 -9.0210602e+00
+-5.0586519e+02 6.6373184e+00 -7.4213597e-01
+-3.6283328e+01 5.4630261e-01 -4.7395439e-02
+-2.1634457e+00 3.5994167e-02 0.0000000e+00
+0 0 0
+0 0 0
+-8.7434723e+00 1.5879211e-01 2.9346555e-02
+-1.7069318e+02 2.8495003e+00 3.5576905e-01
+-3.0515635e+03 4.5843196e+01 1.8598775e+00
+-5.5881434e+04 7.4312136e+02 -3.1015254e+01
+-8.1959764e+05 6.4810384e+03 7.0863128e+03
+-2.1010080e+06 1.4351423e+04 2.7209386e+04
+-3.4692000e+06 2.5826792e+04 4.6831159e+04
+-4.4786161e+06 3.8932155e+04 4.7751140e+04
+-5.0073088e+06 5.0164204e+04 2.3576723e+04
+-5.1670223e+06 5.6780341e+04 -1.7375983e+04
+-5.1050494e+06 5.7827164e+04 -5.9311879e+04
+-4.8877155e+06 5.3629042e+04 -8.6794056e+04
+-4.4864909e+06 4.5175454e+04 -9.0178039e+04
+-3.8221440e+06 3.4107890e+04 -6.9961763e+04
+-2.8552606e+06 2.2708798e+04 -3.8233204e+04
+-1.7037382e+06 1.3103294e+04 -1.2064345e+04
+-6.8324469e+05 6.2268478e+03 -5.5167896e+02
+-5.1896121e+04 6.9980589e+02 -3.7982531e+01
+-2.8020957e+03 4.3382530e+01 -2.5956163e+00
+-1.5488724e+02 2.7032815e+00 -1.4813921e-01
+-7.8456441e+00 1.5046022e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.8693823e+01 4.5215156e-01 -1.8410031e-02
+-3.7107268e+02 8.7514087e+00 -1.0981536e+00
+-6.6779334e+03 1.5322537e+02 -3.3583954e+01
+-1.2001609e+05 2.6845586e+03 -8.1616526e+02
+-1.8037441e+06 2.1702073e+04 8.4282331e+03
+-4.3615950e+06 4.6504570e+04 3.8348533e+04
+-7.0775974e+06 7.7750142e+04 6.4425533e+04
+-9.1120395e+06 1.0900193e+05 5.4929127e+04
+-1.0224618e+07 1.3354375e+05 6.5476593e+02
+-1.0603950e+07 1.4731704e+05 -8.0849365e+04
+-1.0508307e+07 1.4937162e+05 -1.5923582e+05
+-1.0057439e+07 1.4049544e+05 -2.0593366e+05
+-9.2080403e+06 1.2220818e+05 -2.0403225e+05
+-7.8310681e+06 9.6916823e+04 -1.5602980e+05
+-5.8723500e+06 6.8394214e+04 -8.6233763e+04
+-3.5652589e+06 4.1314994e+04 -2.8312439e+04
+-1.5086700e+06 1.9836445e+04 -7.4177758e+02
+-1.1065494e+05 2.4617106e+03 -6.2108263e+01
+-6.0973192e+03 1.4020965e+02 -4.6939384e+00
+-3.3516562e+02 7.9928880e+00 -2.8072824e-01
+-1.6708049e+01 4.1219867e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.9665807e+01 7.9867255e-01 -1.9176631e-02
+-5.8759816e+02 1.5768856e+01 -1.5044861e+00
+-1.0514542e+04 2.8119807e+02 -4.7995031e+01
+-1.8725515e+05 4.9936502e+03 -1.1712693e+03
+-2.8687879e+06 3.8261359e+04 8.8075084e+03
+-6.7972761e+06 8.0135408e+04 4.6593469e+04
+-1.0941681e+07 1.3071631e+05 7.5603268e+04
+-1.4039404e+07 1.7936780e+05 5.0035335e+04
+-1.5737021e+07 2.1653526e+05 -4.1172523e+04
+-1.6320013e+07 2.3709636e+05 -1.6942752e+05
+-1.6173917e+07 2.4016279e+05 -2.8814994e+05
+-1.5478269e+07 2.2693577e+05 -3.5455716e+05
+-1.4171701e+07 1.9937244e+05 -3.4410925e+05
+-1.2064429e+07 1.6050132e+05 -2.6184691e+05
+-9.0745894e+06 1.1537335e+05 -1.4600632e+05
+-5.5485575e+06 7.0997690e+04 -4.9357114e+04
+-2.3881256e+06 3.4650125e+04 -1.5717526e+03
+-1.7164085e+05 4.5515244e+03 -1.2070221e+02
+-9.5449162e+03 2.5544148e+02 -8.6948233e+00
+-5.2774613e+02 1.4274891e+01 -5.0661736e-01
+-2.6368567e+01 7.2076874e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.9362464e+01 9.6038880e-01 1.1837514e-01
+-7.7713684e+02 1.9021864e+01 1.1604391e+00
+-1.3849365e+04 3.3970165e+02 -3.2637284e+00
+-2.4561886e+05 6.0283655e+03 -4.0974265e+02
+-3.7501215e+06 4.4938835e+04 9.3681834e+03
+-8.8608309e+06 9.3033330e+04 5.3082076e+04
+-1.4216762e+07 1.5004447e+05 8.2749700e+04
+-1.8178011e+07 2.0390988e+05 3.9804299e+04
+-2.0311290e+07 2.4450006e+05 -8.7804733e+04
+-2.1013079e+07 2.6675754e+05 -2.6069814e+05
+-2.0797998e+07 2.7003288e+05 -4.1719013e+05
+-1.9903197e+07 2.5567359e+05 -5.0152709e+05
+-1.8245497e+07 2.2564025e+05 -4.8221266e+05
+-1.5566253e+07 1.8290048e+05 -3.6659806e+05
+-1.1738322e+07 1.3260510e+05 -2.0594094e+05
+-7.1917829e+06 8.2349406e+04 -7.1293642e+04
+-3.0964296e+06 4.0556994e+04 -3.4141123e+03
+-2.2422714e+05 5.4798749e+03 -2.3311891e+02
+-1.2517635e+04 3.0770290e+02 -1.5513790e+01
+-6.9477067e+02 1.7164488e+01 -8.6116793e-01
+-3.4819511e+01 8.6361105e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6536490e+01 7.8159767e-01 3.4900994e-01
+-9.1676586e+02 1.5454752e+01 5.8279786e+00
+-1.6299315e+04 2.7518986e+02 7.8370493e+01
+-2.8847777e+05 4.8638755e+03 1.0120523e+03
+-4.3513144e+06 3.5798092e+04 1.0270347e+04
+-1.0323532e+07 7.3741090e+04 5.8228466e+04
+-1.6547250e+07 1.1830479e+05 8.7650479e+04
+-2.1095160e+07 1.6001072e+05 2.9922373e+04
+-2.3489860e+07 1.9118004e+05 -1.2740959e+05
+-2.4231845e+07 2.0815567e+05 -3.3616427e+05
+-2.3946159e+07 2.1059959e+05 -5.2275033e+05
+-2.2916863e+07 1.9958435e+05 -6.2132148e+05
+-2.1039346e+07 1.7654387e+05 -5.9489916e+05
+-1.7990720e+07 1.4360361e+05 -4.5249381e+05
+-1.3593039e+07 1.0455806e+05 -2.5558559e+05
+-8.3266955e+06 6.5215870e+04 -8.9980708e+04
+-3.5639998e+06 3.2249086e+04 -5.6431285e+03
+-2.6269388e+05 4.4149154e+03 -3.6596044e+02
+-1.4690433e+04 2.4891641e+02 -2.3367100e+01
+-8.1702526e+02 1.3925642e+01 -1.2604607e+00
+-4.1024269e+01 7.0177997e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0825454e+01 2.9964504e-01 5.4953546e-01
+-1.0001583e+03 5.9142462e+00 9.8672072e+00
+-1.7762655e+04 1.0504728e+02 1.4832162e+02
+-3.1411687e+05 1.8510865e+03 2.2106251e+03
+-4.6880714e+06 1.3559207e+04 1.1073283e+04
+-1.1174099e+07 2.7885685e+04 6.1700044e+04
+-1.7908326e+07 4.4647287e+04 9.0840326e+04
+-2.2785867e+07 6.0266120e+04 2.3483194e+04
+-2.5309939e+07 7.1891006e+04 -1.5294471e+05
+-2.6054242e+07 7.8197452e+04 -3.8458704e+05
+-2.5717367e+07 7.9090887e+04 -5.9034467e+05
+-2.4613510e+07 7.4981010e+04 -6.9805256e+05
+-2.2622505e+07 6.6390581e+04 -6.6724346e+05
+-1.9376355e+07 5.4084356e+04 -5.0785872e+05
+-1.4658215e+07 3.9448886e+04 -2.8777806e+05
+-8.9733817e+06 2.4647223e+04 -1.0226994e+05
+-3.8187769e+06 1.2204471e+04 -7.3296837e+03
+-2.8568373e+05 1.6791035e+03 -4.6706686e+02
+-1.5985668e+04 9.4959955e+01 -2.9359247e+01
+-8.8981165e+02 5.3259732e+00 -1.5652181e+00
+-4.4717886e+01 2.6888946e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.2242595e+01 -2.9964503e-01 6.2630507e-01
+-1.0277231e+03 -5.9142460e+00 1.1401127e+01
+-1.8246866e+04 -1.0504728e+02 1.7457739e+02
+-3.2261676e+05 -1.8510864e+03 2.6537796e+03
+-4.7957911e+06 -1.3559207e+04 1.1384253e+04
+-1.1452165e+07 -2.7885685e+04 6.2943280e+04
+-1.8354409e+07 -4.4647287e+04 9.1994696e+04
+-2.3337714e+07 -6.0266118e+04 2.1331977e+04
+-2.5900127e+07 -7.1891008e+04 -1.6163969e+05
+-2.6641557e+07 -7.8197451e+04 -4.0111254e+05
+-2.6286269e+07 -7.9090886e+04 -6.1343287e+05
+-2.5158784e+07 -7.4981006e+04 -7.2429179e+05
+-2.3133277e+07 -6.6390580e+04 -6.9202524e+05
+-1.9825617e+07 -5.4084360e+04 -5.2686557e+05
+-1.5004559e+07 -3.9448884e+04 -2.9885785e+05
+-9.1827557e+06 -2.4647223e+04 -1.0651813e+05
+-3.8991388e+06 -1.2204470e+04 -7.9359572e+03
+-2.9330938e+05 -1.6791035e+03 -5.0375290e+02
+-1.6414223e+04 -9.4959954e+01 -3.1548571e+01
+-9.1385200e+02 -5.3259731e+00 -1.6770784e+00
+-4.5936502e+01 -2.6888945e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0825454e+01 -7.8159767e-01 5.4953545e-01
+-1.0001583e+03 -1.5454752e+01 9.8672073e+00
+-1.7762655e+04 -2.7518986e+02 1.4832163e+02
+-3.1411687e+05 -4.8638754e+03 2.2106251e+03
+-4.6880714e+06 -3.5798092e+04 1.1073282e+04
+-1.1174099e+07 -7.3741091e+04 6.1700047e+04
+-1.7908326e+07 -1.1830479e+05 9.0840323e+04
+-2.2785867e+07 -1.6001072e+05 2.3483191e+04
+-2.5309939e+07 -1.9118004e+05 -1.5294471e+05
+-2.6054242e+07 -2.0815567e+05 -3.8458704e+05
+-2.5717367e+07 -2.1059959e+05 -5.9034467e+05
+-2.4613510e+07 -1.9958436e+05 -6.9805256e+05
+-2.2622505e+07 -1.7654387e+05 -6.6724346e+05
+-1.9376355e+07 -1.4360360e+05 -5.0785872e+05
+-1.4658215e+07 -1.0455806e+05 -2.8777806e+05
+-8.9733817e+06 -6.5215870e+04 -1.0226994e+05
+-3.8187769e+06 -3.2249086e+04 -7.3296837e+03
+-2.8568373e+05 -4.4149154e+03 -4.6706686e+02
+-1.5985668e+04 -2.4891641e+02 -2.9359247e+01
+-8.8981165e+02 -1.3925642e+01 -1.5652181e+00
+-4.4717886e+01 -7.0177996e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6536490e+01 -9.6038880e-01 3.4900993e-01
+-9.1676586e+02 -1.9021864e+01 5.8279788e+00
+-1.6299315e+04 -3.3970165e+02 7.8370494e+01
+-2.8847777e+05 -6.0283655e+03 1.0120522e+03
+-4.3513144e+06 -4.4938835e+04 1.0270347e+04
+-1.0323532e+07 -9.3033330e+04 5.8228465e+04
+-1.6547250e+07 -1.5004447e+05 8.7650479e+04
+-2.1095160e+07 -2.0390988e+05 2.9922371e+04
+-2.3489860e+07 -2.4450006e+05 -1.2740959e+05
+-2.4231845e+07 -2.6675754e+05 -3.3616427e+05
+-2.3946159e+07 -2.7003287e+05 -5.2275032e+05
+-2.2916863e+07 -2.5567359e+05 -6.2132148e+05
+-2.1039346e+07 -2.2564025e+05 -5.9489917e+05
+-1.7990720e+07 -1.8290047e+05 -4.5249381e+05
+-1.3593039e+07 -1.3260510e+05 -2.5558559e+05
+-8.3266955e+06 -8.2349406e+04 -8.9980708e+04
+-3.5639998e+06 -4.0556994e+04 -5.6431285e+03
+-2.6269388e+05 -5.4798749e+03 -3.6596045e+02
+-1.4690433e+04 -3.0770290e+02 -2.3367099e+01
+-8.1702526e+02 -1.7164488e+01 -1.2604607e+00
+-4.1024269e+01 -8.6361104e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.9362464e+01 -7.9867254e-01 1.1837513e-01
+-7.7713684e+02 -1.5768856e+01 1.1604392e+00
+-1.3849365e+04 -2.8119807e+02 -3.2637310e+00
+-2.4561886e+05 -4.9936502e+03 -4.0974259e+02
+-3.7501215e+06 -3.8261359e+04 9.3681824e+03
+-8.8608309e+06 -8.0135407e+04 5.3082078e+04
+-1.4216762e+07 -1.3071630e+05 8.2749700e+04
+-1.8178011e+07 -1.7936780e+05 3.9804299e+04
+-2.0311290e+07 -2.1653526e+05 -8.7804733e+04
+-2.1013079e+07 -2.3709637e+05 -2.6069814e+05
+-2.0797998e+07 -2.4016278e+05 -4.1719013e+05
+-1.9903197e+07 -2.2693577e+05 -5.0152709e+05
+-1.8245497e+07 -1.9937244e+05 -4.8221266e+05
+-1.5566253e+07 -1.6050132e+05 -3.6659806e+05
+-1.1738322e+07 -1.1537334e+05 -2.0594094e+05
+-7.1917829e+06 -7.0997689e+04 -7.1293642e+04
+-3.0964296e+06 -3.4650125e+04 -3.4141122e+03
+-2.2422714e+05 -4.5515244e+03 -2.3311891e+02
+-1.2517635e+04 -2.5544148e+02 -1.5513790e+01
+-6.9477067e+02 -1.4274891e+01 -8.6116793e-01
+-3.4819511e+01 -7.2076874e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.9665807e+01 -4.5215156e-01 -1.9176626e-02
+-5.8759816e+02 -8.7514087e+00 -1.5044862e+00
+-1.0514542e+04 -1.5322537e+02 -4.7995030e+01
+-1.8725515e+05 -2.6845586e+03 -1.1712693e+03
+-2.8687879e+06 -2.1702072e+04 8.8075085e+03
+-6.7972761e+06 -4.6504570e+04 4.6593468e+04
+-1.0941681e+07 -7.7750142e+04 7.5603267e+04
+-1.4039404e+07 -1.0900193e+05 5.0035335e+04
+-1.5737021e+07 -1.3354375e+05 -4.1172524e+04
+-1.6320013e+07 -1.4731704e+05 -1.6942752e+05
+-1.6173917e+07 -1.4937162e+05 -2.8814994e+05
+-1.5478269e+07 -1.4049545e+05 -3.5455716e+05
+-1.4171701e+07 -1.2220818e+05 -3.4410924e+05
+-1.2064429e+07 -9.6916823e+04 -2.6184691e+05
+-9.0745894e+06 -6.8394213e+04 -1.4600632e+05
+-5.5485575e+06 -4.1314994e+04 -4.9357114e+04
+-2.3881256e+06 -1.9836445e+04 -1.5717526e+03
+-1.7164085e+05 -2.4617105e+03 -1.2070221e+02
+-9.5449162e+03 -1.4020965e+02 -8.6948233e+00
+-5.2774613e+02 -7.9928880e+00 -5.0661736e-01
+-2.6368567e+01 -4.1219867e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.8693823e+01 -1.5879211e-01 -1.8410028e-02
+-3.7107268e+02 -2.8495003e+00 -1.0981536e+00
+-6.6779334e+03 -4.5843196e+01 -3.3583954e+01
+-1.2001609e+05 -7.4312136e+02 -8.1616528e+02
+-1.8037441e+06 -6.4810383e+03 8.4282331e+03
+-4.3615950e+06 -1.4351422e+04 3.8348533e+04
+-7.0775974e+06 -2.5826792e+04 6.4425533e+04
+-9.1120395e+06 -3.8932156e+04 5.4929127e+04
+-1.0224618e+07 -5.0164204e+04 6.5476607e+02
+-1.0603950e+07 -5.6780341e+04 -8.0849365e+04
+-1.0508307e+07 -5.7827164e+04 -1.5923582e+05
+-1.0057439e+07 -5.3629041e+04 -2.0593366e+05
+-9.2080403e+06 -4.5175454e+04 -2.0403225e+05
+-7.8310681e+06 -3.4107890e+04 -1.5602980e+05
+-5.8723500e+06 -2.2708798e+04 -8.6233764e+04
+-3.5652589e+06 -1.3103294e+04 -2.8312439e+04
+-1.5086700e+06 -6.2268478e+03 -7.4177756e+02
+-1.1065494e+05 -6.9980589e+02 -6.2108264e+01
+-6.0973192e+03 -4.3382530e+01 -4.6939384e+00
+-3.3516562e+02 -2.7032815e+00 -2.8072825e-01
+-1.6708049e+01 -1.5046022e-01 0.0000000e+00
+0 0 0
+0 0 0
+-8.7434723e+00 -3.2284558e-02 2.9346555e-02
+-1.7069318e+02 -4.5835893e-01 3.5576903e-01
+-3.0515635e+03 -4.9471295e+00 1.8598772e+00
+-5.5881434e+04 -3.7488741e+01 -3.1015223e+01
+-8.1959764e+05 5.3132584e+02 7.0863127e+03
+-2.1010080e+06 1.8567494e+03 2.7209386e+04
+-3.4692000e+06 1.5147432e+03 4.6831158e+04
+-4.4786161e+06 -1.3014600e+03 4.7751140e+04
+-5.0073088e+06 -5.0768098e+03 2.3576723e+04
+-5.1670223e+06 -7.8177743e+03 -1.7375984e+04
+-5.1050494e+06 -8.4673819e+03 -5.9311879e+04
+-4.8877155e+06 -7.0036696e+03 -8.6794056e+04
+-4.4864909e+06 -4.1056042e+03 -9.0178038e+04
+-3.8221440e+06 -1.0124478e+03 -6.9961763e+04
+-2.8552606e+06 8.3774177e+02 -3.8233204e+04
+-1.7037382e+06 8.3364494e+02 -1.2064345e+04
+-6.8324469e+05 -2.5836087e+01 -5.5167895e+02
+-5.1896121e+04 -6.6965423e+01 -3.7982531e+01
+-2.8020957e+03 -6.6373183e+00 -2.5956163e+00
+-1.5488724e+02 -5.4630261e-01 -1.4813921e-01
+-7.8456441e+00 -3.5994167e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.4238316e+00 -5.5944759e-03 2.4258350e-02
+-4.0293948e+01 -6.8458143e-02 4.0489159e-01
+-5.5734812e+02 -5.9248365e-01 5.6188249e+00
+-6.7264492e+03 -3.0561720e+00 7.6144212e+01
+-6.0779511e+04 2.1171337e+01 1.5073785e+03
+-1.3869418e+05 7.6585067e+01 5.3212049e+03
+-2.2074749e+05 4.6939084e+01 9.4409265e+03
+-2.8742590e+05 -1.1551957e+02 1.0703149e+04
+-3.3040482e+05 -3.3248288e+02 7.7535943e+03
+-3.5104951e+05 -4.9192626e+02 1.7132721e+03
+-3.5342944e+05 -5.3021030e+02 -4.9375681e+03
+-3.3971553e+05 -4.4425345e+02 -9.6735469e+03
+-3.0943410e+05 -2.7490399e+02 -1.0864294e+04
+-2.6121136e+05 -9.5168310e+01 -8.5077483e+03
+-1.9631798e+05 1.5044122e+01 -4.4419659e+03
+-1.2269174e+05 2.5647884e+01 -1.2327936e+03
+-5.4793259e+04 -7.4380169e+00 -9.5786076e+01
+-6.1273938e+03 -6.1998715e+00 -9.0210603e+00
+-5.0586519e+02 -8.8665784e-01 -7.4213597e-01
+-3.6283328e+01 -9.1373925e-02 -4.7395438e-02
+-2.1634457e+00 -6.9501690e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.5509646e-01 -8.1913003e-04 6.2973135e-03
+-6.3108118e+00 -8.8399152e-03 8.8530689e-02
+-6.7585439e+01 -6.3397977e-02 9.4763531e-01
+-5.8141533e+02 -2.5736564e-01 9.1507872e+00
+-3.3792924e+03 6.1616204e-01 9.0199040e+01
+-7.7688618e+03 2.5804116e+00 2.9549026e+02
+-1.2449586e+04 1.6158556e-01 5.1962723e+02
+-1.6280501e+04 -9.2261762e+00 5.9010773e+02
+-1.8760405e+04 -2.1584162e+01 4.2661191e+02
+-1.9947644e+04 -3.0736365e+01 8.7652417e+01
+-2.0074248e+04 -3.2949647e+01 -2.8658788e+02
+-1.9272150e+04 -2.7959435e+01 -5.5097042e+02
+-1.7519317e+04 -1.8168629e+01 -6.1384240e+02
+-1.4742252e+04 -7.7935250e+00 -4.7912448e+02
+-1.1024707e+04 -1.2086028e+00 -2.5280335e+02
+-6.8298912e+03 1.2049040e-01 -7.5579859e+01
+-3.0055566e+03 -8.4074451e-01 -9.5810021e+00
+-5.2078796e+02 -5.0559473e-01 -1.1816527e+00
+-6.0466804e+01 -9.5017918e-02 -1.2313887e-01
+-5.6153563e+00 -1.2035821e-02 -9.3093384e-03
+-4.0219717e-01 -1.0515093e-03 0.0000000e+00
+0 0 0
+0 0 0
+-6.4382420e-02 -8.1973910e-05 1.0388353e-03
+-7.5714115e-01 -7.9956500e-04 1.2543940e-02
+-6.5148171e+00 -4.9762336e-03 1.0984556e-01
+-4.3255164e+01 -1.7860217e-02 8.3115228e-01
+-1.9212774e+02 3.4065995e-03 5.4545219e+00
+-4.3481154e+02 5.0218471e-02 1.6460736e+01
+-6.9884005e+02 -1.0381589e-01 2.8501338e+01
+-9.1742415e+02 -5.7486101e-01 3.2320107e+01
+-1.0599207e+03 -1.1834222e+00 2.3271606e+01
+-1.1281288e+03 -1.6357637e+00 4.3811865e+00
+-1.1349343e+03 -1.7453407e+00 -1.6511843e+01
+-1.0881809e+03 -1.4958696e+00 -3.1163467e+01
+-9.8699367e+02 -1.0080773e+00 -3.4476131e+01
+-8.2770988e+02 -4.9064432e-01 -2.6883515e+01
+-6.1607241e+02 -1.5084873e-01 -1.4410747e+01
+-3.7971512e+02 -5.2090371e-02 -4.6679176e+00
+-1.6876268e+02 -6.1149843e-02 -8.0827991e-01
+-3.8167274e+01 -3.2370771e-02 -1.2162734e-01
+-5.7450032e+00 -7.2569874e-03 -1.5214325e-02
+-6.6491833e-01 -1.0737121e-03 -1.3270276e-03
+-5.6235662e-02 -1.0471922e-04 0.0000000e+00
+0 0 0
+0 0 0
+-6.3717679e-03 0.0000000e+00 1.1095072e-04
+-6.5958830e-02 0.0000000e+00 1.2006186e-03
+-4.8099455e-01 0.0000000e+00 9.1241726e-03
+-2.6563913e+00 0.0000000e+00 5.8013845e-02
+-9.9752371e+00 0.0000000e+00 2.9718184e-01
+-2.2052524e+01 0.0000000e+00 8.3262522e-01
+-3.5427295e+01 0.0000000e+00 1.4154255e+00
+-4.6638551e+01 0.0000000e+00 1.5988213e+00
+-5.4007199e+01 0.0000000e+00 1.1448967e+00
+-5.7541199e+01 0.0000000e+00 1.9567109e-01
+-5.7875999e+01 0.0000000e+00 -8.5492578e-01
+-5.5425168e+01 0.0000000e+00 -1.5871738e+00
+-5.0164460e+01 0.0000000e+00 -1.7462181e+00
+-4.1938724e+01 0.0000000e+00 -1.3629884e+00
+-3.1100344e+01 0.0000000e+00 -7.4364072e-01
+-1.9138913e+01 0.0000000e+00 -2.5858964e-01
+-8.6704116e+00 0.0000000e+00 -5.4509731e-02
+-2.3147000e+00 0.0000000e+00 -9.4461922e-03
+-4.1886269e-01 0.0000000e+00 -1.3411695e-03
+-5.7246700e-02 0.0000000e+00 -1.2949348e-04
+-5.5059466e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.5648560e-03 8.6903507e-05 1.0618452e-04
+-6.7843614e-02 8.2453868e-04 1.1664302e-03
+-4.9381475e-01 4.9352267e-03 9.0513993e-03
+-2.7224613e+00 1.6142766e-02 5.8978666e-02
+-1.0207532e+01 -1.7422310e-02 3.0869613e-01
+-2.2527126e+01 -8.7724949e-02 8.7102324e-01
+-3.6088780e+01 4.7603242e-02 1.4849051e+00
+-4.7349399e+01 5.2425216e-01 1.6715014e+00
+-5.4663385e+01 1.1655713e+00 1.1621161e+00
+-5.8132418e+01 1.6575693e+00 9.5766632e-02
+-5.8465373e+01 1.7823360e+00 -1.0971949e+00
+-5.6090384e+01 1.5035858e+00 -1.9355645e+00
+-5.0938086e+01 9.5035530e-01 -2.1122940e+00
+-4.2768245e+01 3.6729326e-01 -1.6500663e+00
+-3.1853126e+01 4.9851005e-03 -9.0226976e-01
+-1.9672633e+01 -5.6710752e-02 -3.1183884e-01
+-8.9353807e+00 1.5573552e-02 -6.2443214e-02
+-2.3924854e+00 2.5604427e-02 -1.0262288e-02
+-4.3443542e-01 6.7225281e-03 -1.4120762e-03
+-5.9596056e-02 1.0723202e-03 -1.3504031e-04
+-5.7510201e-03 1.1003319e-04 0.0000000e+00
+0 0 0
+0 0 0
+-6.6148681e-02 8.9074929e-04 9.6241535e-04
+-7.7654701e-01 9.3431328e-03 1.1849685e-02
+-6.6690846e+00 6.4443600e-02 1.0660886e-01
+-4.4204547e+01 2.3848969e-01 8.3364484e-01
+-1.9607927e+02 -8.7477690e-01 5.6425248e+00
+-4.4312212e+02 -3.2884996e+00 1.7153884e+01
+-7.1022980e+02 -1.1968915e+00 2.9788129e+01
+-9.2915357e+02 8.3667809e+00 3.3675027e+01
+-1.0700987e+03 2.1441958e+01 2.3576674e+01
+-1.1367765e+03 3.1435081e+01 2.4468546e+00
+-1.1434860e+03 3.3974502e+01 -2.1193620e+01
+-1.0983289e+03 2.8381787e+01 -3.7923827e+01
+-9.9956088e+02 1.7211949e+01 -4.1618212e+01
+-8.4185988e+02 5.4004223e+00 -3.2501344e+01
+-6.2932228e+02 -1.7650148e+00 -1.7481477e+01
+-3.8922959e+02 -2.3923150e+00 -5.6314027e+00
+-1.7337993e+02 -9.3511854e-02 -9.0507128e-01
+-3.9326396e+01 4.0744298e-01 -1.2778812e-01
+-5.9406361e+00 9.0030028e-02 -1.5462730e-02
+-6.9024912e-01 1.2275098e-02 -1.3347215e-03
+-5.8586862e-02 1.1265116e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.6605809e-01 6.4133199e-03 5.4390608e-03
+-6.4512552e+00 7.6401751e-02 7.8823805e-02
+-6.8959016e+01 6.3680603e-01 8.8003838e-01
+-5.9228573e+02 3.0394577e+00 8.9494780e+00
+-3.4389658e+03 -2.5180163e+01 9.2928295e+01
+-7.8982126e+03 -8.7716049e+01 3.0670667e+02
+-1.2622375e+04 -6.2635799e+01 5.4093369e+02
+-1.6447845e+04 1.0401433e+02 6.1262968e+02
+-1.8891910e+04 3.3429523e+02 4.3128185e+02
+-2.0047767e+04 5.0895072e+02 5.3888853e+01
+-2.0171652e+04 5.5326365e+02 -3.6799626e+02
+-1.9399485e+04 4.5678718e+02 -6.6906690e+02
+-1.7694303e+04 2.6263506e+02 -7.3950335e+02
+-1.4953731e+04 5.5967600e+01 -5.7859179e+02
+-1.1231290e+04 -6.6941368e+01 -3.0683292e+02
+-6.9810850e+03 -6.6650707e+01 -9.1380701e+01
+-3.0775026e+03 -9.2269938e+00 -1.0301157e+01
+-5.3482007e+02 5.3189824e+00 -1.1805889e+00
+-6.2325898e+01 8.8766717e-01 -1.1913221e-01
+-5.8115746e+00 9.8282673e-02 -8.9215537e-03
+-4.1782902e-01 7.8368014e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.4740540e+00 3.9840152e-02 1.6795542e-02
+-4.1055243e+01 5.5770427e-01 2.9678841e-01
+-5.6681400e+02 5.8731249e+00 4.5263519e+00
+-6.8301925e+03 4.1934020e+01 6.9375162e+01
+-6.1687962e+04 -5.9491955e+02 1.5475661e+03
+-1.4070867e+05 -2.0288410e+03 5.5031850e+03
+-2.2335321e+05 -1.7459070e+03 9.7921666e+03
+-2.8976273e+05 1.1582735e+03 1.1074734e+04
+-3.3199070e+05 5.1719816e+03 7.8229272e+03
+-3.5202524e+05 8.1809291e+03 1.1266717e+03
+-3.5434349e+05 8.9398483e+03 -6.3458597e+03
+-3.4117599e+05 7.2978790e+03 -1.1726492e+04
+-3.1179670e+05 3.9658649e+03 -1.3067116e+04
+-2.6433696e+05 3.8274991e+02 -1.0268297e+04
+-1.9952352e+05 -1.7301636e+03 -5.3995342e+03
+-1.2509277e+05 -1.5687182e+03 -1.4964337e+03
+-5.5929889e+04 -2.7493389e+02 -9.4096441e+01
+-6.2740992e+03 6.6147758e+01 -8.2198399e+00
+-5.1999669e+02 7.4592793e+00 -6.5994370e-01
+-3.7454117e+01 6.5120114e-01 -4.2073175e-02
+-2.2420791e+00 4.4396962e-02 0.0000000e+00
+0 0 0
+0 0 0
+-8.8957015e+00 2.0796869e-01 -1.5899359e-02
+-1.7336335e+02 3.7567515e+00 -5.4478144e-01
+-3.0934586e+03 6.1050392e+01 -1.3826886e+01
+-5.6548223e+04 1.0026144e+03 -3.0771846e+02
+-8.3446879e+05 7.6923001e+03 6.2762143e+03
+-2.1391056e+06 1.6359192e+04 2.5985744e+04
+-3.5184882e+06 2.8375310e+04 4.5152779e+04
+-4.5190327e+06 4.1755730e+04 4.4971888e+04
+-5.0287877e+06 5.3214657e+04 1.8408134e+04
+-5.1743094e+06 6.0133333e+04 -2.6257141e+04
+-5.1115783e+06 6.1458369e+04 -7.2246705e+04
+-4.9075827e+06 5.7334413e+04 -1.0241600e+05
+-4.5280265e+06 4.8665135e+04 -1.0557960e+05
+-3.8826293e+06 3.7129492e+04 -8.1841013e+04
+-2.9193202e+06 2.5111976e+04 -4.4623547e+04
+-1.7510838e+06 1.4853761e+04 -1.3700441e+04
+-7.0430118e+05 7.3491783e+03 -2.6806117e+02
+-5.3052281e+04 9.7719848e+02 -2.2951459e+01
+-2.8756715e+03 5.9879325e+01 -1.7957272e+00
+-1.5962118e+02 3.7005614e+00 -1.1114335e-01
+-8.1174882e+00 2.0509771e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.8954751e+01 5.9604367e-01 -1.2714765e-01
+-3.7568787e+02 1.1583335e+01 -3.3385446e+00
+-6.7503352e+03 2.0395742e+02 -7.3843778e+01
+-1.2114811e+05 3.5995982e+03 -1.5388021e+03
+-1.8291504e+06 2.6516728e+04 5.0431238e+03
+-4.4265148e+06 5.4873428e+04 3.1448699e+04
+-7.1601905e+06 8.9105736e+04 5.3311390e+04
+-9.1779101e+06 1.2239901e+05 3.8538742e+04
+-1.0258746e+07 1.4837656e+05 -2.2494507e+04
+-1.0617841e+07 1.6332295e+05 -1.1179303e+05
+-1.0527810e+07 1.6623868e+05 -1.9706944e+05
+-1.0107962e+07 1.5762596e+05 -2.4683772e+05
+-9.3031513e+06 1.3875181e+05 -2.4181341e+05
+-7.9633233e+06 1.1187470e+05 -1.8430346e+05
+-6.0107037e+06 8.0720706e+04 -1.0155849e+05
+-3.6695069e+06 5.0161013e+04 -3.2617693e+04
+-1.5587937e+06 2.4952265e+04 -9.7083493e+01
+-1.1320282e+05 3.4556471e+03 -2.7645583e+01
+-6.2579807e+03 1.9577320e+02 -2.8779730e+00
+-3.4526434e+02 1.1119487e+01 -1.9817678e-01
+-1.7273319e+01 5.7219125e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.9955805e+01 1.0498541e+00 -1.6381299e-01
+-5.9251887e+02 2.0762030e+01 -4.4217964e+00
+-1.0587310e+04 3.7111145e+02 -9.8808071e+01
+-1.8831797e+05 6.6112647e+03 -2.0476523e+03
+-2.8937661e+06 4.6841837e+04 2.6053961e+03
+-6.8679077e+06 9.5149325e+04 3.2961124e+04
+-1.1024087e+07 1.5134909e+05 5.3123608e+04
+-1.4085363e+07 2.0404406e+05 1.7437282e+04
+-1.5730086e+07 2.4408141e+05 -8.5202852e+04
+-1.6283462e+07 2.6684921e+05 -2.2528015e+05
+-1.6150970e+07 2.7144454e+05 -3.5343251e+05
+-1.5509863e+07 2.5867997e+05 -4.2289291e+05
+-1.4279933e+07 2.3009343e+05 -4.0600222e+05
+-1.2239112e+07 1.8837922e+05 -3.0782461e+05
+-9.2689596e+06 1.3840777e+05 -1.7114153e+05
+-5.7001932e+06 8.7496036e+04 -5.6840852e+04
+-2.4632105e+06 4.4089939e+04 -8.9362065e+02
+-1.7533474e+05 6.3392216e+03 -8.3309258e+01
+-9.7811503e+03 3.5537994e+02 -6.6818391e+00
+-5.4274957e+02 1.9855218e+01 -4.1412277e-01
+-2.7213364e+01 1.0028659e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9572418e+01 1.2595828e+00 2.2532382e-04
+-7.8023314e+02 2.4953798e+01 -1.0952485e+00
+-1.3885311e+04 4.4588607e+02 -3.9923729e+01
+-2.4597167e+05 7.9209221e+03 -9.9676801e+02
+-3.7603900e+06 5.4922418e+04 1.1911596e+03
+-8.9092024e+06 1.1050441e+05 3.4207531e+04
+-1.4256645e+07 1.7410864e+05 5.1331760e+04
+-1.8150042e+07 2.3277382e+05 -5.3671833e+03
+-2.0201605e+07 2.7678318e+05 -1.4775384e+05
+-2.0860298e+07 3.0164991e+05 -3.3533524e+05
+-2.0665475e+07 3.0674036e+05 -5.0315502e+05
+-1.9849965e+07 2.9298956e+05 -5.9069615e+05
+-1.8305289e+07 2.6186529e+05 -5.6267552e+05
+-1.5729988e+07 2.1589589e+05 -4.2645663e+05
+-1.1947373e+07 1.5996072e+05 -2.3895803e+05
+-7.3636711e+06 1.0198124e+05 -8.1555061e+04
+-3.1825244e+06 5.1781764e+04 -3.1520817e+03
+-2.2842598e+05 7.6040244e+03 -2.1804281e+02
+-1.2793019e+04 4.2740006e+02 -1.4678841e+01
+-7.1264964e+02 2.3878203e+01 -8.2285653e-01
+-3.5842952e+01 1.2034500e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6604338e+01 1.0248843e+00 3.0254579e-01
+-9.1690043e+02 2.0258817e+01 5.1320981e+00
+-1.6279931e+04 3.6068871e+02 7.0945481e+01
+-2.8782163e+05 6.3769502e+03 9.5878187e+02
+-4.3403735e+06 4.3736004e+04 1.2043071e+03
+-1.0335929e+07 8.7617984e+04 3.6487018e+04
+-1.6525354e+07 1.3741261e+05 5.1287310e+04
+-2.0971968e+07 1.8293089e+05 -2.2061665e+04
+-2.3256131e+07 2.1681783e+05 -1.9582488e+05
+-2.3941093e+07 2.3587283e+05 -4.2079909e+05
+-2.3680042e+07 2.3978505e+05 -6.1996079e+05
+-2.2750936e+07 2.2930984e+05 -7.2220809e+05
+-2.1018961e+07 2.0547996e+05 -6.8620827e+05
+-1.8110319e+07 1.7004314e+05 -5.2075669e+05
+-1.3786833e+07 1.2654417e+05 -2.9354616e+05
+-8.4971348e+06 8.1030206e+04 -1.0215582e+05
+-3.6496457e+06 4.1299990e+04 -6.0281668e+03
+-2.6686264e+05 6.1320288e+03 -3.8741033e+02
+-1.4972185e+04 3.4629322e+02 -2.4551182e+01
+-8.3579477e+02 1.9414725e+01 -1.3181845e+00
+-4.2119549e+01 9.8054613e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0768002e+01 3.9315013e-01 5.7428206e-01
+-9.9775317e+02 7.7563027e+00 1.0671706e+01
+-1.7697094e+04 1.3773000e+02 1.6806940e+02
+-3.1263744e+05 2.4274490e+03 2.6381377e+03
+-4.6600954e+06 1.6574143e+04 1.8239511e+03
+-1.1156714e+07 3.3152561e+04 3.8904798e+04
+-1.7836519e+07 5.1895895e+04 5.2615346e+04
+-2.2588305e+07 6.8958004e+04 -3.0972974e+04
+-2.4981356e+07 8.1611694e+04 -2.2435054e+05
+-2.5658604e+07 8.8707436e+04 -4.7282299e+05
+-2.5348708e+07 9.0163593e+04 -6.9186078e+05
+-2.4358554e+07 8.6270719e+04 -8.0377793e+05
+-2.2534842e+07 7.7397071e+04 -7.6335868e+05
+-1.9453763e+07 6.4158413e+04 -5.8006589e+05
+-1.4831405e+07 4.7839850e+04 -3.2817200e+05
+-9.1357242e+06 3.0690695e+04 -1.1549003e+05
+-3.9003577e+06 1.5665829e+04 -8.2751537e+03
+-2.8964293e+05 2.3368698e+03 -5.2078614e+02
+-1.6260179e+04 1.3238056e+02 -3.2362753e+01
+-9.0848990e+02 7.4411244e+00 -1.7109080e+00
+-4.5824775e+01 3.7652698e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.2136515e+01 -3.9315012e-01 6.8022084e-01
+-1.0243435e+03 -7.7563026e+00 1.2813293e+01
+-1.8163793e+04 -1.3773000e+02 2.0519979e+02
+-3.2082833e+05 -2.4274490e+03 3.2716691e+03
+-4.7615190e+06 -1.6574143e+04 2.1478367e+03
+-1.1423654e+07 -3.3152560e+04 3.9942205e+04
+-1.8264065e+07 -5.1895892e+04 5.3390020e+04
+-2.3112807e+07 -6.8958004e+04 -3.3600601e+04
+-2.5536905e+07 -8.1611694e+04 -2.3359905e+05
+-2.6207695e+07 -8.8707438e+04 -4.9004584e+05
+-2.5880112e+07 -9.0163594e+04 -7.1587561e+05
+-2.4870943e+07 -8.6270718e+04 -8.3117488e+05
+-2.3020269e+07 -7.7397068e+04 -7.8938860e+05
+-1.9886531e+07 -6.4158415e+04 -6.0015783e+05
+-1.5169086e+07 -4.7839851e+04 -3.3995027e+05
+-9.3412616e+06 -3.0690695e+04 -1.2006291e+05
+-3.9787695e+06 -1.5665829e+04 -9.1005873e+03
+-2.9716605e+05 -2.3368697e+03 -5.7018266e+02
+-1.6684370e+04 -1.3238056e+02 -3.5274275e+01
+-9.3238610e+02 -7.4411243e+00 -1.8579236e+00
+-4.7041371e+01 -3.7652698e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0768002e+01 -1.0248843e+00 5.7428206e-01
+-9.9775317e+02 -2.0258817e+01 1.0671706e+01
+-1.7697094e+04 -3.6068870e+02 1.6806940e+02
+-3.1263744e+05 -6.3769502e+03 2.6381377e+03
+-4.6600954e+06 -4.3736004e+04 1.8239528e+03
+-1.1156714e+07 -8.7617984e+04 3.8904803e+04
+-1.7836519e+07 -1.3741261e+05 5.2615339e+04
+-2.2588305e+07 -1.8293089e+05 -3.0972976e+04
+-2.4981356e+07 -2.1681782e+05 -2.2435055e+05
+-2.5658604e+07 -2.3587283e+05 -4.7282298e+05
+-2.5348708e+07 -2.3978506e+05 -6.9186078e+05
+-2.4358554e+07 -2.2930983e+05 -8.0377793e+05
+-2.2534842e+07 -2.0547996e+05 -7.6335868e+05
+-1.9453763e+07 -1.7004314e+05 -5.8006589e+05
+-1.4831405e+07 -1.2654417e+05 -3.2817200e+05
+-9.1357242e+06 -8.1030206e+04 -1.1549003e+05
+-3.9003577e+06 -4.1299990e+04 -8.2751537e+03
+-2.8964293e+05 -6.1320287e+03 -5.2078615e+02
+-1.6260179e+04 -3.4629322e+02 -3.2362753e+01
+-9.0848990e+02 -1.9414724e+01 -1.7109080e+00
+-4.5824775e+01 -9.8054613e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6604338e+01 -1.2595828e+00 3.0254579e-01
+-9.1690043e+02 -2.4953798e+01 5.1320980e+00
+-1.6279931e+04 -4.4588607e+02 7.0945480e+01
+-2.8782163e+05 -7.9209221e+03 9.5878190e+02
+-4.3403735e+06 -5.4922418e+04 1.2043075e+03
+-1.0335929e+07 -1.1050441e+05 3.6487018e+04
+-1.6525354e+07 -1.7410864e+05 5.1287309e+04
+-2.0971968e+07 -2.3277382e+05 -2.2061666e+04
+-2.3256131e+07 -2.7678317e+05 -1.9582488e+05
+-2.3941093e+07 -3.0164991e+05 -4.2079910e+05
+-2.3680042e+07 -3.0674035e+05 -6.1996079e+05
+-2.2750936e+07 -2.9298956e+05 -7.2220809e+05
+-2.1018961e+07 -2.6186529e+05 -6.8620827e+05
+-1.8110319e+07 -2.1589589e+05 -5.2075670e+05
+-1.3786833e+07 -1.5996073e+05 -2.9354616e+05
+-8.4971348e+06 -1.0198124e+05 -1.0215582e+05
+-3.6496457e+06 -5.1781764e+04 -6.0281666e+03
+-2.6686264e+05 -7.6040244e+03 -3.8741033e+02
+-1.4972185e+04 -4.2740006e+02 -2.4551183e+01
+-8.3579477e+02 -2.3878203e+01 -1.3181845e+00
+-4.2119549e+01 -1.2034500e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9572418e+01 -1.0498541e+00 2.2532319e-04
+-7.8023314e+02 -2.0762030e+01 -1.0952487e+00
+-1.3885311e+04 -3.7111145e+02 -3.9923731e+01
+-2.4597167e+05 -6.6112647e+03 -9.9676794e+02
+-3.7603900e+06 -4.6841837e+04 1.1911591e+03
+-8.9092024e+06 -9.5149324e+04 3.4207532e+04
+-1.4256645e+07 -1.5134909e+05 5.1331759e+04
+-1.8150042e+07 -2.0404406e+05 -5.3671829e+03
+-2.0201605e+07 -2.4408141e+05 -1.4775384e+05
+-2.0860298e+07 -2.6684921e+05 -3.3533524e+05
+-2.0665475e+07 -2.7144453e+05 -5.0315502e+05
+-1.9849965e+07 -2.5867997e+05 -5.9069615e+05
+-1.8305289e+07 -2.3009343e+05 -5.6267552e+05
+-1.5729988e+07 -1.8837922e+05 -4.2645663e+05
+-1.1947373e+07 -1.3840777e+05 -2.3895803e+05
+-7.3636711e+06 -8.7496035e+04 -8.1555061e+04
+-3.1825244e+06 -4.4089938e+04 -3.1520817e+03
+-2.2842598e+05 -6.3392216e+03 -2.1804281e+02
+-1.2793019e+04 -3.5537994e+02 -1.4678841e+01
+-7.1264964e+02 -1.9855218e+01 -8.2285653e-01
+-3.5842952e+01 -1.0028659e+00 0.0000000e+00
+0 0 0
+0 0 0
+-2.9955805e+01 -5.9604366e-01 -1.6381299e-01
+-5.9251887e+02 -1.1583335e+01 -4.4217964e+00
+-1.0587310e+04 -2.0395742e+02 -9.8808073e+01
+-1.8831797e+05 -3.5995982e+03 -2.0476522e+03
+-2.8937661e+06 -2.6516728e+04 2.6053966e+03
+-6.8679077e+06 -5.4873428e+04 3.2961124e+04
+-1.1024087e+07 -8.9105736e+04 5.3123608e+04
+-1.4085363e+07 -1.2239901e+05 1.7437281e+04
+-1.5730086e+07 -1.4837656e+05 -8.5202852e+04
+-1.6283462e+07 -1.6332295e+05 -2.2528015e+05
+-1.6150970e+07 -1.6623868e+05 -3.5343251e+05
+-1.5509863e+07 -1.5762596e+05 -4.2289291e+05
+-1.4279933e+07 -1.3875181e+05 -4.0600222e+05
+-1.2239112e+07 -1.1187470e+05 -3.0782461e+05
+-9.2689596e+06 -8.0720706e+04 -1.7114153e+05
+-5.7001932e+06 -5.0161013e+04 -5.6840852e+04
+-2.4632105e+06 -2.4952264e+04 -8.9362069e+02
+-1.7533474e+05 -3.4556471e+03 -8.3309257e+01
+-9.7811503e+03 -1.9577320e+02 -6.6818390e+00
+-5.4274957e+02 -1.1119487e+01 -4.1412278e-01
+-2.7213364e+01 -5.7219125e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.8954751e+01 -2.0796869e-01 -1.2714765e-01
+-3.7568787e+02 -3.7567515e+00 -3.3385446e+00
+-6.7503352e+03 -6.1050392e+01 -7.3843777e+01
+-1.2114811e+05 -1.0026144e+03 -1.5388021e+03
+-1.8291504e+06 -7.6923002e+03 5.0431241e+03
+-4.4265148e+06 -1.6359193e+04 3.1448698e+04
+-7.1601905e+06 -2.8375310e+04 5.3311391e+04
+-9.1779101e+06 -4.1755730e+04 3.8538742e+04
+-1.0258746e+07 -5.3214657e+04 -2.2494506e+04
+-1.0617841e+07 -6.0133333e+04 -1.1179303e+05
+-1.0527810e+07 -6.1458369e+04 -1.9706944e+05
+-1.0107962e+07 -5.7334413e+04 -2.4683772e+05
+-9.3031513e+06 -4.8665135e+04 -2.4181341e+05
+-7.9633233e+06 -3.7129493e+04 -1.8430346e+05
+-6.0107037e+06 -2.5111976e+04 -1.0155849e+05
+-3.6695069e+06 -1.4853761e+04 -3.2617693e+04
+-1.5587937e+06 -7.3491782e+03 -9.7083491e+01
+-1.1320282e+05 -9.7719848e+02 -2.7645583e+01
+-6.2579807e+03 -5.9879325e+01 -2.8779730e+00
+-3.4526434e+02 -3.7005613e+00 -1.9817678e-01
+-1.7273319e+01 -2.0509771e-01 0.0000000e+00
+0 0 0
+0 0 0
+-8.8957015e+00 -3.9840152e-02 -1.5899359e-02
+-1.7336335e+02 -5.5770427e-01 -5.4478144e-01
+-3.0934586e+03 -5.8731250e+00 -1.3826886e+01
+-5.6548223e+04 -4.1934021e+01 -3.0771846e+02
+-8.3446879e+05 5.9491955e+02 6.2762143e+03
+-2.1391056e+06 2.0288410e+03 2.5985744e+04
+-3.5184882e+06 1.7459070e+03 4.5152779e+04
+-4.5190327e+06 -1.1582735e+03 4.4971888e+04
+-5.0287877e+06 -5.1719816e+03 1.8408134e+04
+-5.1743094e+06 -8.1809291e+03 -2.6257141e+04
+-5.1115783e+06 -8.9398484e+03 -7.2246706e+04
+-4.9075827e+06 -7.2978790e+03 -1.0241600e+05
+-4.5280265e+06 -3.9658650e+03 -1.0557960e+05
+-3.8826293e+06 -3.8274992e+02 -8.1841013e+04
+-2.9193202e+06 1.7301636e+03 -4.4623547e+04
+-1.7510838e+06 1.5687181e+03 -1.3700441e+04
+-7.0430118e+05 2.7493389e+02 -2.6806117e+02
+-5.3052281e+04 -6.6147758e+01 -2.2951459e+01
+-2.8756715e+03 -7.4592792e+00 -1.7957272e+00
+-1.5962118e+02 -6.5120114e-01 -1.1114335e-01
+-8.1174882e+00 -4.4396962e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.4740540e+00 -6.4133200e-03 1.6795542e-02
+-4.1055243e+01 -7.6401750e-02 2.9678841e-01
+-5.6681400e+02 -6.3680602e-01 4.5263518e+00
+-6.8301925e+03 -3.0394577e+00 6.9375163e+01
+-6.1687962e+04 2.5180163e+01 1.5475661e+03
+-1.4070867e+05 8.7716049e+01 5.5031850e+03
+-2.2335321e+05 6.2635801e+01 9.7921666e+03
+-2.8976273e+05 -1.0401433e+02 1.1074734e+04
+-3.3199070e+05 -3.3429522e+02 7.8229272e+03
+-3.5202524e+05 -5.0895071e+02 1.1266716e+03
+-3.5434349e+05 -5.5326364e+02 -6.3458597e+03
+-3.4117599e+05 -4.5678718e+02 -1.1726492e+04
+-3.1179670e+05 -2.6263506e+02 -1.3067116e+04
+-2.6433696e+05 -5.5967601e+01 -1.0268297e+04
+-1.9952352e+05 6.6941368e+01 -5.3995342e+03
+-1.2509277e+05 6.6650707e+01 -1.4964337e+03
+-5.5929889e+04 9.2269929e+00 -9.4096441e+01
+-6.2740992e+03 -5.3189825e+00 -8.2198399e+00
+-5.1999669e+02 -8.8766717e-01 -6.5994370e-01
+-3.7454117e+01 -9.8282674e-02 -4.2073175e-02
+-2.2420791e+00 -7.8368015e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.6605809e-01 -8.9074929e-04 5.4390609e-03
+-6.4512552e+00 -9.3431328e-03 7.8823805e-02
+-6.8959016e+01 -6.4443599e-02 8.8003838e-01
+-5.9228573e+02 -2.3848968e-01 8.9494780e+00
+-3.4389658e+03 8.7477690e-01 9.2928295e+01
+-7.8982126e+03 3.2884996e+00 3.0670667e+02
+-1.2622375e+04 1.1968914e+00 5.4093369e+02
+-1.6447845e+04 -8.3667810e+00 6.1262968e+02
+-1.8891910e+04 -2.1441959e+01 4.3128184e+02
+-2.0047767e+04 -3.1435081e+01 5.3888852e+01
+-2.0171652e+04 -3.3974502e+01 -3.6799626e+02
+-1.9399485e+04 -2.8381787e+01 -6.6906690e+02
+-1.7694303e+04 -1.7211949e+01 -7.3950335e+02
+-1.4953731e+04 -5.4004223e+00 -5.7859179e+02
+-1.1231290e+04 1.7650149e+00 -3.0683292e+02
+-6.9810850e+03 2.3923151e+00 -9.1380701e+01
+-3.0775026e+03 9.3511886e-02 -1.0301157e+01
+-5.3482007e+02 -4.0744297e-01 -1.1805889e+00
+-6.2325898e+01 -9.0030027e-02 -1.1913221e-01
+-5.8115746e+00 -1.2275098e-02 -8.9215537e-03
+-4.1782902e-01 -1.1265115e-03 0.0000000e+00
+0 0 0
+0 0 0
+-6.6148681e-02 -8.6903505e-05 9.6241535e-04
+-7.7654701e-01 -8.2453868e-04 1.1849685e-02
+-6.6690846e+00 -4.9352267e-03 1.0660886e-01
+-4.4204547e+01 -1.6142766e-02 8.3364484e-01
+-1.9607927e+02 1.7422310e-02 5.6425248e+00
+-4.4312212e+02 8.7724952e-02 1.7153884e+01
+-7.1022980e+02 -4.7603250e-02 2.9788129e+01
+-9.2915357e+02 -5.2425217e-01 3.3675027e+01
+-1.0700987e+03 -1.1655713e+00 2.3576674e+01
+-1.1367765e+03 -1.6575693e+00 2.4468545e+00
+-1.1434860e+03 -1.7823360e+00 -2.1193620e+01
+-1.0983289e+03 -1.5035858e+00 -3.7923827e+01
+-9.9956088e+02 -9.5035532e-01 -4.1618212e+01
+-8.4185988e+02 -3.6729325e-01 -3.2501344e+01
+-6.2932228e+02 -4.9851030e-03 -1.7481477e+01
+-3.8922959e+02 5.6710754e-02 -5.6314027e+00
+-1.7337993e+02 -1.5573551e-02 -9.0507128e-01
+-3.9326396e+01 -2.5604428e-02 -1.2778812e-01
+-5.9406361e+00 -6.7225281e-03 -1.5462730e-02
+-6.9024912e-01 -1.0723202e-03 -1.3347215e-03
+-5.8586862e-02 -1.1003319e-04 0.0000000e+00
+0 0 0
+0 0 0
+-6.5648560e-03 0.0000000e+00 1.0618452e-04
+-6.7843614e-02 0.0000000e+00 1.1664302e-03
+-4.9381475e-01 0.0000000e+00 9.0513992e-03
+-2.7224613e+00 0.0000000e+00 5.8978666e-02
+-1.0207532e+01 0.0000000e+00 3.0869613e-01
+-2.2527126e+01 0.0000000e+00 8.7102324e-01
+-3.6088780e+01 0.0000000e+00 1.4849051e+00
+-4.7349399e+01 0.0000000e+00 1.6715014e+00
+-5.4663385e+01 0.0000000e+00 1.1621161e+00
+-5.8132418e+01 0.0000000e+00 9.5766633e-02
+-5.8465373e+01 0.0000000e+00 -1.0971949e+00
+-5.6090384e+01 0.0000000e+00 -1.9355645e+00
+-5.0938086e+01 0.0000000e+00 -2.1122940e+00
+-4.2768245e+01 0.0000000e+00 -1.6500663e+00
+-3.1853126e+01 0.0000000e+00 -9.0226976e-01
+-1.9672633e+01 0.0000000e+00 -3.1183884e-01
+-8.9353807e+00 0.0000000e+00 -6.2443213e-02
+-2.3924854e+00 0.0000000e+00 -1.0262288e-02
+-4.3443542e-01 0.0000000e+00 -1.4120761e-03
+-5.9596056e-02 0.0000000e+00 -1.3504031e-04
+-5.7510201e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.7451470e-03 8.4495786e-05 9.5795218e-05
+-6.9599485e-02 7.7859096e-04 1.0730745e-03
+-5.0572528e-01 4.4352358e-03 8.5483697e-03
+-2.7836772e+00 1.2423868e-02 5.7340407e-02
+-1.0422191e+01 -3.5185369e-02 3.0718489e-01
+-2.2963587e+01 -1.2869950e-01 8.7234567e-01
+-3.6688725e+01 -1.7100517e-02 1.4893915e+00
+-4.7976373e+01 4.5019383e-01 1.6661713e+00
+-5.5216804e+01 1.1049200e+00 1.1146706e+00
+-5.8608042e+01 1.6225980e+00 -3.2303594e-02
+-5.8936202e+01 1.7604192e+00 -1.3218936e+00
+-5.6647068e+01 1.4631037e+00 -2.2283135e+00
+-5.1625419e+01 8.6467736e-01 -2.4056579e+00
+-4.3540080e+01 2.3891384e-01 -1.8727370e+00
+-3.2574279e+01 -1.2979017e-01 -1.0217933e+00
+-2.0191671e+01 -1.5207952e-01 -3.5067631e-01
+-9.1942114e+00 -2.4053554e-02 -6.7792133e-02
+-2.4686879e+00 1.9109847e-02 -1.0699425e-02
+-4.4975575e-01 6.0498648e-03 -1.4289696e-03
+-6.1920479e-02 1.0298812e-03 -1.3442821e-04
+-5.9949800e-03 1.0953168e-04 0.0000000e+00
+0 0 0
+0 0 0
+-6.7793057e-02 8.9205746e-04 8.3681395e-04
+-7.9457732e-01 9.0833355e-03 1.0562381e-02
+-6.8120552e+00 5.9693301e-02 9.8274929e-02
+-4.5082307e+01 1.8935316e-01 7.9910544e-01
+-1.9972699e+02 -1.1825495e+00 5.5941953e+00
+-4.5077659e+02 -4.0019718e+00 1.7121939e+01
+-7.2058513e+02 -2.3221546e+00 2.9782323e+01
+-9.3949987e+02 7.1023121e+00 3.3476498e+01
+-1.0785957e+03 2.0481283e+01 2.2597070e+01
+-1.1435300e+03 3.1017749e+01 -4.4600948e-02
+-1.1500850e+03 3.3836513e+01 -2.5521665e+01
+-1.1066848e+03 2.7864183e+01 -4.3566895e+01
+-1.0107104e+03 1.5739990e+01 -4.7292727e+01
+-8.5507854e+02 2.9788605e+00 -3.6814008e+01
+-6.4207668e+02 -4.4219596e+00 -1.9767434e+01
+-3.9851365e+02 -4.3109573e+00 -6.3244972e+00
+-1.7788967e+02 -8.7157462e-01 -9.6723994e-01
+-4.0460492e+01 3.1603379e-01 -1.3006736e-01
+-6.1328239e+00 8.3423534e-02 -1.5253250e-02
+-7.1526911e-01 1.2092363e-02 -1.2957397e-03
+-6.0922348e-02 1.1492777e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.7623082e-01 6.7404415e-03 4.3243475e-03
+-6.5813789e+00 7.8210061e-02 6.5321293e-02
+-7.0228602e+01 6.2439408e-01 7.7020673e-01
+-6.0230795e+02 2.6393969e+00 8.3423829e+00
+-3.4939438e+03 -2.9649207e+01 9.1787020e+01
+-8.0176221e+03 -9.7856679e+01 3.0505124e+02
+-1.2780057e+04 -7.8581806e+01 5.3899348e+02
+-1.6595539e+04 8.6536517e+01 6.0725324e+02
+-1.8999777e+04 3.2263069e+02 4.1297043e+02
+-2.0121146e+04 5.0715389e+02 1.0213461e+01
+-2.0241263e+04 5.5664704e+02 -4.4298561e+02
+-1.9501242e+04 4.5357433e+02 -7.6693803e+02
+-1.7849257e+04 2.4216524e+02 -8.3840981e+02
+-1.5152465e+04 1.7384129e+01 -6.5408082e+02
+-1.1431492e+04 -1.1179351e+02 -3.4650630e+02
+-7.1293154e+03 -1.0002284e+02 -1.0256399e+02
+-3.1477184e+03 -2.2522233e+01 -1.0697588e+01
+-5.4853516e+02 4.4890487e+00 -1.1555134e+00
+-6.4151856e+01 8.6674356e-01 -1.1287505e-01
+-6.0053807e+00 1.0134784e-01 -8.3243988e-03
+-4.3335082e-01 8.3466826e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.5204867e+00 4.4358891e-02 8.8142801e-03
+-4.1758588e+01 6.1244877e-01 1.7792030e-01
+-5.7554110e+02 6.2885481e+00 3.2408676e+00
+-6.9255054e+03 4.1848911e+01 5.9344243e+01
+-6.2521436e+04 -6.6025947e+02 1.5234287e+03
+-1.4257311e+05 -2.1657720e+03 5.4557763e+03
+-2.2574205e+05 -1.9606222e+03 9.7266629e+03
+-2.9182703e+05 9.2915066e+02 1.0948354e+04
+-3.3325232e+05 5.0485016e+03 7.4840970e+03
+-3.5263121e+05 8.2323482e+03 3.6487962e+02
+-3.5486878e+05 9.0858784e+03 -7.6390607e+03
+-3.4227761e+05 7.3328187e+03 -1.3416684e+04
+-3.1388253e+05 3.6971082e+03 -1.4785801e+04
+-2.6729517e+05 -2.2031567e+02 -1.1589888e+04
+-2.0265429e+05 -2.4777195e+03 -6.0932007e+03
+-1.2745948e+05 -2.1465854e+03 -1.6799291e+03
+-5.7035910e+04 -5.0517353e+02 -9.1257201e+01
+-6.4175247e+03 6.4068608e+01 -7.4112287e+00
+-5.3391075e+02 7.9457482e+00 -5.7618010e-01
+-3.8613696e+01 7.2110313e-01 -3.6355881e-02
+-2.3203309e+00 5.0242602e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.0354467e+00 2.4150758e-01 -5.7403452e-02
+-1.7581957e+02 4.3671123e+00 -1.3558415e+00
+-3.1320291e+03 7.1123825e+01 -2.7620681e+01
+-5.7160918e+04 1.1716805e+03 -5.4475723e+02
+-8.4929614e+05 8.2305465e+03 5.3917881e+03
+-2.1769250e+06 1.6922240e+04 2.4123190e+04
+-3.5672851e+06 2.8661197e+04 4.2298298e+04
+-4.5586280e+06 4.1662525e+04 4.1160265e+04
+-5.0487850e+06 5.2937547e+04 1.3268515e+04
+-5.1793581e+06 5.9965709e+04 -3.3416231e+04
+-5.1157505e+06 6.1545513e+04 -8.1703656e+04
+-4.9262503e+06 5.7626880e+04 -1.1333015e+05
+-4.5707015e+06 4.9051561e+04 -1.1600962e+05
+-3.9468198e+06 3.7566143e+04 -8.9605653e+04
+-2.9884623e+06 2.5630020e+04 -4.8571357e+04
+-1.8027060e+06 1.5467413e+04 -1.4563170e+04
+-7.2727371e+05 7.9458142e+03 -4.1628406e+01
+-5.4193877e+04 1.1743286e+03 -1.0292557e+01
+-2.9487564e+03 7.1819889e+01 -1.0817764e+00
+-1.6434113e+02 4.4353251e+00 -7.6052603e-02
+-8.3892680e+00 2.4596986e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.9188780e+01 6.9823677e-01 -2.2269975e-01
+-3.7985277e+02 1.3572029e+01 -5.2627187e+00
+-6.8161597e+03 2.3914233e+02 -1.0745667e+02
+-1.2218605e+05 4.2266286e+03 -2.1244722e+03
+-1.8547704e+06 2.9266310e+04 2.4597886e+03
+-4.4918374e+06 5.8913996e+04 2.5790607e+04
+-7.2439236e+06 9.3816016e+04 4.4368866e+04
+-9.2458503e+06 1.2737527e+05 2.6596291e+04
+-1.0295373e+07 1.5371504e+05 -3.7554930e+04
+-1.0634236e+07 1.6933564e+05 -1.3052983e+05
+-1.0550466e+07 1.7303639e+05 -2.1936507e+05
+-1.0163926e+07 1.6499498e+05 -2.7076964e+05
+-9.4074410e+06 1.4629691e+05 -2.6372526e+05
+-8.1083349e+06 1.1915264e+05 -2.0030016e+05
+-6.1628926e+06 8.7230435e+04 -1.0971165e+05
+-3.7846103e+06 5.5332142e+04 -3.4472967e+04
+-1.6140798e+06 2.8309838e+04 4.4912966e+02
+-1.1577616e+05 4.1939187e+03 2.8784444e+00
+-6.4197321e+03 2.3763660e+02 -1.1868781e+00
+-3.5540823e+02 1.3509413e+01 -1.1707145e-01
+-1.7840489e+01 6.9606847e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.0197747e+01 1.2342015e+00 -2.9402290e-01
+-5.9663621e+02 2.4393495e+01 -6.9981424e+00
+-1.0648399e+04 4.3587064e+02 -1.4263719e+02
+-1.8921437e+05 7.7659100e+03 -2.7855230e+03
+-2.9177425e+06 5.2189326e+04 -1.7321245e+03
+-6.9372303e+06 1.0342828e+05 2.3076196e+04
+-1.1106246e+07 1.6170124e+05 3.7350213e+04
+-1.4132959e+07 2.1576568e+05 -3.4438187e+03
+-1.5726124e+07 2.5708443e+05 -1.1077506e+05
+-1.6250430e+07 2.8132922e+05 -2.5580011e+05
+-1.6132677e+07 2.8733654e+05 -3.8839387e+05
+-1.5549287e+07 2.7547154e+05 -4.5944578e+05
+-1.4401065e+07 2.4696890e+05 -4.3898552e+05
+-1.2431517e+07 2.0435816e+05 -3.3178594e+05
+-9.4824387e+06 1.5234472e+05 -1.8342115e+05
+-5.8666938e+06 9.8186760e+04 -5.9775068e+04
+-2.5451565e+06 5.0729401e+04 -2.4860923e+02
+-1.7905834e+05 7.7149820e+03 -4.6067596e+01
+-1.0018178e+04 4.3316433e+02 -4.5677157e+00
+-5.5774702e+02 2.4250314e+01 -3.1116772e-01
+-2.8055927e+01 1.2274635e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9708156e+01 1.4854619e+00 -1.1552234e-01
+-7.8207555e+02 2.9399867e+01 -3.2794828e+00
+-1.3902722e+04 5.2486910e+02 -7.4866656e+01
+-2.4605320e+05 9.3191144e+03 -1.5465448e+03
+-3.7669470e+06 6.1489853e+04 -4.2900375e+03
+-8.9520507e+06 1.2084114e+05 2.1145469e+04
+-1.4291505e+07 1.8730716e+05 3.0398767e+04
+-1.8119146e+07 2.4800919e+05 -3.2739871e+04
+-2.0090542e+07 2.9383926e+05 -1.8055760e+05
+-2.0706492e+07 3.2060070e+05 -3.7363531e+05
+-2.0532783e+07 3.2739138e+05 -5.4638154e+05
+-1.9799955e+07 3.1466980e+05 -6.3558989e+05
+-1.8374305e+07 2.8354886e+05 -6.0315432e+05
+-1.5909156e+07 2.3632436e+05 -4.5595322e+05
+-1.2174442e+07 1.7765446e+05 -2.5419422e+05
+-7.5497020e+06 1.1542229e+05 -8.5398844e+04
+-3.2744397e+06 6.0024575e+04 -2.7787256e+03
+-2.3258124e+05 9.2864888e+03 -1.9497108e+02
+-1.3064615e+04 5.2307780e+02 -1.3288589e+01
+-7.3023351e+02 2.9297766e+01 -7.5216882e-01
+-3.6847953e+01 1.4802964e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6572425e+01 1.2124643e+00 2.4108538e-01
+-9.1533502e+02 2.3941015e+01 4.1345317e+00
+-1.6235096e+04 4.2582103e+02 5.8348202e+01
+-2.8678628e+05 7.5235042e+03 8.1860546e+02
+-4.3225141e+06 4.9145564e+04 -4.6964242e+03
+-1.0337722e+07 9.6187123e+04 2.1750633e+04
+-1.6492346e+07 1.4844274e+05 2.7607150e+04
+-2.0839473e+07 1.9575631e+05 -5.2635043e+04
+-2.3014330e+07 2.3122429e+05 -2.3182070e+05
+-2.3641891e+07 2.5186556e+05 -4.6228810e+05
+-2.3405489e+07 2.5716709e+05 -6.6661654e+05
+-2.2579582e+07 2.4751761e+05 -7.7081780e+05
+-2.0999581e+07 2.2366315e+05 -7.3031126e+05
+-1.8238331e+07 1.8714786e+05 -5.5312233e+05
+-1.3993208e+07 1.4132595e+05 -3.1041839e+05
+-8.6777084e+06 9.2222367e+04 -1.0664482e+05
+-3.7382366e+06 4.8132970e+04 -6.1623382e+03
+-2.7086594e+05 7.5202231e+03 -3.9277492e+02
+-1.5242786e+04 4.2562599e+02 -2.4722758e+01
+-8.5382299e+02 2.3924749e+01 -1.3215253e+00
+-4.3172197e+01 1.2114185e+00 0.0000000e+00
+0 0 0
+0 0 0
+-5.0592250e+01 4.6606103e-01 5.7065100e-01
+-9.9332225e+02 9.1851580e+00 1.0895584e+01
+-1.7600991e+04 1.6294589e+02 1.7766796e+02
+-3.1069866e+05 2.8701234e+03 2.8922690e+03
+-4.6226522e+06 1.8665980e+04 -4.0712961e+03
+-1.1124661e+07 3.6474240e+04 2.3588168e+04
+-1.7748624e+07 5.6184566e+04 2.7950963e+04
+-2.2376049e+07 7.3958313e+04 -6.2506889e+04
+-2.4638856e+07 8.7235245e+04 -2.6101714e+05
+-2.5247909e+07 9.4947725e+04 -5.1479509e+05
+-2.4964153e+07 9.6938985e+04 -7.3912121e+05
+-2.4090197e+07 9.3361987e+04 -8.5332211e+05
+-2.2440331e+07 8.4475023e+04 -8.0864481e+05
+-1.9532539e+07 7.0813264e+04 -6.1353443e+05
+-1.5011442e+07 5.3586696e+04 -3.4575798e+05
+-9.3039316e+06 3.5037157e+04 -1.2036539e+05
+-3.9820223e+06 1.8315250e+04 -8.8829955e+03
+-2.9332677e+05 2.8743134e+03 -5.5325475e+02
+-1.6516923e+04 1.6317082e+02 -3.4056065e+01
+-9.2602858e+02 9.1951280e+00 -1.7877652e+00
+-4.6867567e+01 4.6644490e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1905362e+01 -4.6606103e-01 7.0096892e-01
+-1.0188187e+03 -9.1851578e+00 1.3546478e+01
+-1.8048303e+04 -1.6294589e+02 2.2394884e+02
+-3.1855091e+05 -2.8701234e+03 3.6867777e+03
+-4.7168085e+06 -1.8665980e+04 -3.6917749e+03
+-1.1378920e+07 -3.6474239e+04 2.4522551e+04
+-1.8155710e+07 -5.6184566e+04 2.8537429e+04
+-2.2871096e+07 -7.3958313e+04 -6.5257389e+04
+-2.5157453e+07 -8.7235241e+04 -2.7023967e+05
+-2.5756142e+07 -9.4947727e+04 -5.3189787e+05
+-2.5455076e+07 -9.6938984e+04 -7.6305635e+05
+-2.4566493e+07 -9.3361988e+04 -8.8078266e+05
+-2.2897221e+07 -8.4475020e+04 -8.3488116e+05
+-1.9945908e+07 -7.0813265e+04 -6.3387817e+05
+-1.5338066e+07 -5.3586696e+04 -3.5772560e+05
+-9.5038438e+06 -3.5037157e+04 -1.2506913e+05
+-4.0573083e+06 -1.8315250e+04 -9.8998094e+03
+-3.0070355e+05 -2.8743134e+03 -6.1367988e+02
+-1.6934117e+04 -1.6317082e+02 -3.7591609e+01
+-9.4962232e+02 -9.1951279e+00 -1.9651406e+00
+-4.8073622e+01 -4.6644490e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0592250e+01 -1.2124643e+00 5.7065100e-01
+-9.9332225e+02 -2.3941015e+01 1.0895584e+01
+-1.7600991e+04 -4.2582103e+02 1.7766796e+02
+-3.1069866e+05 -7.5235041e+03 2.8922689e+03
+-4.6226522e+06 -4.9145564e+04 -4.0712954e+03
+-1.1124661e+07 -9.6187123e+04 2.3588167e+04
+-1.7748624e+07 -1.4844274e+05 2.7950963e+04
+-2.2376049e+07 -1.9575630e+05 -6.2506888e+04
+-2.4638856e+07 -2.3122429e+05 -2.6101714e+05
+-2.5247909e+07 -2.5186556e+05 -5.1479509e+05
+-2.4964153e+07 -2.5716709e+05 -7.3912121e+05
+-2.4090197e+07 -2.4751761e+05 -8.5332211e+05
+-2.2440331e+07 -2.2366315e+05 -8.0864481e+05
+-1.9532539e+07 -1.8714785e+05 -6.1353443e+05
+-1.5011442e+07 -1.4132595e+05 -3.4575798e+05
+-9.3039316e+06 -9.2222367e+04 -1.2036539e+05
+-3.9820223e+06 -4.8132970e+04 -8.8829954e+03
+-2.9332677e+05 -7.5202231e+03 -5.5325476e+02
+-1.6516923e+04 -4.2562599e+02 -3.4056065e+01
+-9.2602858e+02 -2.3924749e+01 -1.7877652e+00
+-4.6867567e+01 -1.2114185e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6572425e+01 -1.4854619e+00 2.4108538e-01
+-9.1533502e+02 -2.9399867e+01 4.1345321e+00
+-1.6235096e+04 -5.2486910e+02 5.8348208e+01
+-2.8678628e+05 -9.3191145e+03 8.1860522e+02
+-4.3225141e+06 -6.1489853e+04 -4.6964239e+03
+-1.0337722e+07 -1.2084114e+05 2.1750632e+04
+-1.6492346e+07 -1.8730716e+05 2.7607150e+04
+-2.0839473e+07 -2.4800919e+05 -5.2635043e+04
+-2.3014330e+07 -2.9383926e+05 -2.3182070e+05
+-2.3641891e+07 -3.2060069e+05 -4.6228810e+05
+-2.3405489e+07 -3.2739138e+05 -6.6661654e+05
+-2.2579582e+07 -3.1466979e+05 -7.7081780e+05
+-2.0999581e+07 -2.8354886e+05 -7.3031126e+05
+-1.8238331e+07 -2.3632436e+05 -5.5312233e+05
+-1.3993208e+07 -1.7765446e+05 -3.1041839e+05
+-8.6777084e+06 -1.1542229e+05 -1.0664482e+05
+-3.7382366e+06 -6.0024575e+04 -6.1623382e+03
+-2.7086594e+05 -9.2864888e+03 -3.9277492e+02
+-1.5242786e+04 -5.2307780e+02 -2.4722758e+01
+-8.5382299e+02 -2.9297766e+01 -1.3215253e+00
+-4.3172197e+01 -1.4802964e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9708156e+01 -1.2342015e+00 -1.1552235e-01
+-7.8207555e+02 -2.4393495e+01 -3.2794829e+00
+-1.3902722e+04 -4.3587064e+02 -7.4866651e+01
+-2.4605320e+05 -7.7659100e+03 -1.5465447e+03
+-3.7669470e+06 -5.2189326e+04 -4.2900378e+03
+-8.9520507e+06 -1.0342828e+05 2.1145469e+04
+-1.4291505e+07 -1.6170124e+05 3.0398767e+04
+-1.8119146e+07 -2.1576567e+05 -3.2739869e+04
+-2.0090542e+07 -2.5708442e+05 -1.8055760e+05
+-2.0706492e+07 -2.8132922e+05 -3.7363532e+05
+-2.0532783e+07 -2.8733654e+05 -5.4638154e+05
+-1.9799955e+07 -2.7547154e+05 -6.3558989e+05
+-1.8374305e+07 -2.4696890e+05 -6.0315432e+05
+-1.5909156e+07 -2.0435816e+05 -4.5595322e+05
+-1.2174442e+07 -1.5234472e+05 -2.5419422e+05
+-7.5497020e+06 -9.8186760e+04 -8.5398845e+04
+-3.2744397e+06 -5.0729401e+04 -2.7787256e+03
+-2.3258124e+05 -7.7149820e+03 -1.9497108e+02
+-1.3064615e+04 -4.3316433e+02 -1.3288589e+01
+-7.3023351e+02 -2.4250314e+01 -7.5216882e-01
+-3.6847953e+01 -1.2274635e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.0197747e+01 -6.9823677e-01 -2.9402291e-01
+-5.9663621e+02 -1.3572029e+01 -6.9981423e+00
+-1.0648399e+04 -2.3914233e+02 -1.4263719e+02
+-1.8921437e+05 -4.2266286e+03 -2.7855230e+03
+-2.9177425e+06 -2.9266310e+04 -1.7321244e+03
+-6.9372303e+06 -5.8913996e+04 2.3076195e+04
+-1.1106246e+07 -9.3816016e+04 3.7350214e+04
+-1.4132959e+07 -1.2737527e+05 -3.4438191e+03
+-1.5726124e+07 -1.5371504e+05 -1.1077506e+05
+-1.6250430e+07 -1.6933564e+05 -2.5580011e+05
+-1.6132677e+07 -1.7303639e+05 -3.8839387e+05
+-1.5549287e+07 -1.6499498e+05 -4.5944578e+05
+-1.4401065e+07 -1.4629691e+05 -4.3898552e+05
+-1.2431517e+07 -1.1915264e+05 -3.3178594e+05
+-9.4824387e+06 -8.7230435e+04 -1.8342115e+05
+-5.8666938e+06 -5.5332142e+04 -5.9775068e+04
+-2.5451565e+06 -2.8309838e+04 -2.4860925e+02
+-1.7905834e+05 -4.1939187e+03 -4.6067603e+01
+-1.0018178e+04 -2.3763659e+02 -4.5677155e+00
+-5.5774702e+02 -1.3509413e+01 -3.1116772e-01
+-2.8055927e+01 -6.9606847e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.9188780e+01 -2.4150758e-01 -2.2269976e-01
+-3.7985277e+02 -4.3671123e+00 -5.2627187e+00
+-6.8161597e+03 -7.1123825e+01 -1.0745667e+02
+-1.2218605e+05 -1.1716805e+03 -2.1244721e+03
+-1.8547704e+06 -8.2305465e+03 2.4597885e+03
+-4.4918374e+06 -1.6922240e+04 2.5790606e+04
+-7.2439236e+06 -2.8661197e+04 4.4368866e+04
+-9.2458503e+06 -4.1662525e+04 2.6596291e+04
+-1.0295373e+07 -5.2937547e+04 -3.7554929e+04
+-1.0634236e+07 -5.9965709e+04 -1.3052983e+05
+-1.0550466e+07 -6.1545513e+04 -2.1936507e+05
+-1.0163926e+07 -5.7626880e+04 -2.7076964e+05
+-9.4074410e+06 -4.9051561e+04 -2.6372526e+05
+-8.1083349e+06 -3.7566144e+04 -2.0030016e+05
+-6.1628926e+06 -2.5630020e+04 -1.0971165e+05
+-3.7846103e+06 -1.5467412e+04 -3.4472967e+04
+-1.6140798e+06 -7.9458142e+03 4.4912965e+02
+-1.1577616e+05 -1.1743286e+03 2.8784435e+00
+-6.4197321e+03 -7.1819889e+01 -1.1868781e+00
+-3.5540823e+02 -4.4353251e+00 -1.1707144e-01
+-1.7840489e+01 -2.4596986e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.0354467e+00 -4.4358892e-02 -5.7403453e-02
+-1.7581957e+02 -6.1244877e-01 -1.3558415e+00
+-3.1320291e+03 -6.2885482e+00 -2.7620681e+01
+-5.7160918e+04 -4.1848911e+01 -5.4475723e+02
+-8.4929614e+05 6.6025946e+02 5.3917881e+03
+-2.1769250e+06 2.1657720e+03 2.4123190e+04
+-3.5672851e+06 1.9606222e+03 4.2298298e+04
+-4.5586280e+06 -9.2915070e+02 4.1160265e+04
+-5.0487850e+06 -5.0485015e+03 1.3268515e+04
+-5.1793581e+06 -8.2323482e+03 -3.3416231e+04
+-5.1157505e+06 -9.0858784e+03 -8.1703656e+04
+-4.9262503e+06 -7.3328189e+03 -1.1333015e+05
+-4.5707015e+06 -3.6971083e+03 -1.1600962e+05
+-3.9468198e+06 2.2031565e+02 -8.9605653e+04
+-2.9884623e+06 2.4777195e+03 -4.8571357e+04
+-1.8027060e+06 2.1465854e+03 -1.4563170e+04
+-7.2727371e+05 5.0517353e+02 -4.1628409e+01
+-5.4193877e+04 -6.4068608e+01 -1.0292557e+01
+-2.9487564e+03 -7.9457482e+00 -1.0817764e+00
+-1.6434113e+02 -7.2110313e-01 -7.6052601e-02
+-8.3892680e+00 -5.0242601e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.5204867e+00 -6.7404415e-03 8.8142801e-03
+-4.1758588e+01 -7.8210060e-02 1.7792031e-01
+-5.7554110e+02 -6.2439408e-01 3.2408676e+00
+-6.9255054e+03 -2.6393969e+00 5.9344244e+01
+-6.2521436e+04 2.9649207e+01 1.5234287e+03
+-1.4257311e+05 9.7856679e+01 5.4557763e+03
+-2.2574205e+05 7.8581806e+01 9.7266630e+03
+-2.9182703e+05 -8.6536520e+01 1.0948354e+04
+-3.3325232e+05 -3.2263069e+02 7.4840969e+03
+-3.5263121e+05 -5.0715389e+02 3.6487963e+02
+-3.5486878e+05 -5.5664704e+02 -7.6390608e+03
+-3.4227761e+05 -4.5357432e+02 -1.3416684e+04
+-3.1388253e+05 -2.4216524e+02 -1.4785801e+04
+-2.6729517e+05 -1.7384127e+01 -1.1589888e+04
+-2.0265429e+05 1.1179351e+02 -6.0932007e+03
+-1.2745948e+05 1.0002284e+02 -1.6799291e+03
+-5.7035909e+04 2.2522233e+01 -9.1257201e+01
+-6.4175247e+03 -4.4890487e+00 -7.4112287e+00
+-5.3391075e+02 -8.6674356e-01 -5.7618010e-01
+-3.8613696e+01 -1.0134784e-01 -3.6355881e-02
+-2.3203309e+00 -8.3466827e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.7623082e-01 -8.9205746e-04 4.3243475e-03
+-6.5813789e+00 -9.0833355e-03 6.5321292e-02
+-7.0228602e+01 -5.9693300e-02 7.7020673e-01
+-6.0230795e+02 -1.8935316e-01 8.3423830e+00
+-3.4939438e+03 1.1825495e+00 9.1787020e+01
+-8.0176221e+03 4.0019718e+00 3.0505123e+02
+-1.2780057e+04 2.3221547e+00 5.3899349e+02
+-1.6595539e+04 -7.1023122e+00 6.0725324e+02
+-1.8999777e+04 -2.0481283e+01 4.1297043e+02
+-2.0121146e+04 -3.1017749e+01 1.0213461e+01
+-2.0241263e+04 -3.3836513e+01 -4.4298561e+02
+-1.9501242e+04 -2.7864184e+01 -7.6693803e+02
+-1.7849257e+04 -1.5739990e+01 -8.3840981e+02
+-1.5152465e+04 -2.9788606e+00 -6.5408082e+02
+-1.1431492e+04 4.4219596e+00 -3.4650630e+02
+-7.1293155e+03 4.3109573e+00 -1.0256399e+02
+-3.1477184e+03 8.7157467e-01 -1.0697588e+01
+-5.4853516e+02 -3.1603379e-01 -1.1555134e+00
+-6.4151856e+01 -8.3423533e-02 -1.1287505e-01
+-6.0053807e+00 -1.2092363e-02 -8.3243988e-03
+-4.3335082e-01 -1.1492777e-03 0.0000000e+00
+0 0 0
+0 0 0
+-6.7793057e-02 -8.4495785e-05 8.3681396e-04
+-7.9457732e-01 -7.7859095e-04 1.0562381e-02
+-6.8120552e+00 -4.4352359e-03 9.8274928e-02
+-4.5082307e+01 -1.2423868e-02 7.9910544e-01
+-1.9972699e+02 3.5185369e-02 5.5941953e+00
+-4.5077659e+02 1.2869950e-01 1.7121939e+01
+-7.2058513e+02 1.7100514e-02 2.9782323e+01
+-9.3949987e+02 -4.5019384e-01 3.3476498e+01
+-1.0785957e+03 -1.1049200e+00 2.2597070e+01
+-1.1435300e+03 -1.6225980e+00 -4.4600991e-02
+-1.1500850e+03 -1.7604192e+00 -2.5521665e+01
+-1.1066848e+03 -1.4631037e+00 -4.3566895e+01
+-1.0107104e+03 -8.6467739e-01 -4.7292727e+01
+-8.5507854e+02 -2.3891384e-01 -3.6814008e+01
+-6.4207668e+02 1.2979019e-01 -1.9767434e+01
+-3.9851365e+02 1.5207952e-01 -6.3244972e+00
+-1.7788967e+02 2.4053554e-02 -9.6723994e-01
+-4.0460492e+01 -1.9109847e-02 -1.3006736e-01
+-6.1328239e+00 -6.0498648e-03 -1.5253250e-02
+-7.1526911e-01 -1.0298812e-03 -1.2957397e-03
+-6.0922348e-02 -1.0953168e-04 0.0000000e+00
+0 0 0
+0 0 0
+-6.7451470e-03 0.0000000e+00 9.5795219e-05
+-6.9599485e-02 0.0000000e+00 1.0730744e-03
+-5.0572528e-01 0.0000000e+00 8.5483697e-03
+-2.7836772e+00 0.0000000e+00 5.7340407e-02
+-1.0422191e+01 0.0000000e+00 3.0718489e-01
+-2.2963587e+01 0.0000000e+00 8.7234567e-01
+-3.6688725e+01 0.0000000e+00 1.4893915e+00
+-4.7976373e+01 0.0000000e+00 1.6661713e+00
+-5.5216804e+01 0.0000000e+00 1.1146706e+00
+-5.8608042e+01 0.0000000e+00 -3.2303594e-02
+-5.8936202e+01 0.0000000e+00 -1.3218936e+00
+-5.6647068e+01 0.0000000e+00 -2.2283135e+00
+-5.1625419e+01 0.0000000e+00 -2.4056579e+00
+-4.3540080e+01 0.0000000e+00 -1.8727370e+00
+-3.2574279e+01 0.0000000e+00 -1.0217933e+00
+-2.0191671e+01 0.0000000e+00 -3.5067631e-01
+-9.1942114e+00 0.0000000e+00 -6.7792133e-02
+-2.4686879e+00 0.0000000e+00 -1.0699425e-02
+-4.4975575e-01 0.0000000e+00 -1.4289696e-03
+-6.1920479e-02 0.0000000e+00 -1.3442821e-04
+-5.9949800e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-6.9063405e-03 7.8449283e-05 8.2744257e-05
+-7.1164676e-02 7.0042528e-04 9.4751007e-04
+-5.1630580e-01 3.7620391e-03 7.7659977e-03
+-2.8378902e+00 8.3135213e-03 5.3665393e-02
+-1.0611851e+01 -5.0602082e-02 2.9392681e-01
+-2.3347842e+01 -1.6076047e-01 8.3894224e-01
+-3.7209809e+01 -7.2057405e-02 1.4320838e+00
+-4.8504831e+01 3.7376060e-01 1.5867811e+00
+-5.5659516e+01 1.0212248e+00 1.0082678e+00
+-5.8966845e+01 1.5465496e+00 -1.7947937e-01
+-5.9290775e+01 1.6914129e+00 -1.5163197e+00
+-5.7096620e+01 1.3846271e+00 -2.4513941e+00
+-5.2223420e+01 7.6146262e-01 -2.6148556e+00
+-4.4245780e+01 1.1555057e-01 -2.0247057e+00
+-3.3252412e+01 -2.4620580e-01 -1.1003674e+00
+-2.0686231e+01 -2.3076462e-01 -3.7504304e-01
+-9.4416307e+00 -5.7010731e-02 -7.0612950e-02
+-2.5416098e+00 1.3097545e-02 -1.0788641e-02
+-4.6444402e-01 5.3026283e-03 -1.4029993e-03
+-6.4155195e-02 9.6149235e-04 -1.2977520e-04
+-6.2302152e-03 1.0545999e-04 0.0000000e+00
+0 0 0
+0 0 0
+-6.9259982e-02 8.5321538e-04 6.9215908e-04
+-8.1060961e-01 8.4267054e-03 8.9981641e-03
+-6.9386937e+00 5.2421336e-02 8.6977350e-02
+-4.5857175e+01 1.3286380e-01 7.3729588e-01
+-2.0294176e+02 -1.4328979e+00 5.3343565e+00
+-4.5751688e+02 -4.5018870e+00 1.6415774e+01
+-7.2958661e+02 -3.2107999e+00 2.8555993e+01
+-9.4819739e+02 5.8152228e+00 3.1812059e+01
+-1.0852765e+03 1.9063034e+01 2.0451097e+01
+-1.1483852e+03 2.9768677e+01 -2.9158318e+00
+-1.1547979e+03 3.2743031e+01 -2.9254618e+01
+-1.1133018e+03 2.6578516e+01 -4.7831479e+01
+-1.0204126e+03 1.3924990e+01 -5.1292761e+01
+-8.6723083e+02 6.9127694e-01 -3.9716204e+01
+-6.5413858e+02 -6.6547405e+00 -2.1245771e+01
+-4.0739611e+02 -5.8433781e+00 -6.7506994e+00
+-1.8220489e+02 -1.4972847e+00 -9.9519714e-01
+-4.1545369e+01 2.3138136e-01 -1.2860431e-01
+-6.3169594e+00 7.5484832e-02 -1.4651032e-02
+-7.3930546e-01 1.1570265e-02 -1.2234574e-03
+-6.3172472e-02 1.1321266e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.8528485e-01 6.7370622e-03 3.1701783e-03
+-6.6967888e+00 7.6245657e-02 5.0761128e-02
+-7.1349556e+01 5.8227264e-01 6.4186336e-01
+-6.1111822e+02 2.1108720e+00 7.4741188e+00
+-3.5422008e+03 -3.2916389e+01 8.7214616e+01
+-8.1228326e+03 -1.0360146e+02 2.9152462e+02
+-1.2917350e+04 -8.9656813e+01 5.1526299e+02
+-1.6719295e+04 6.9119027e+01 5.7571582e+02
+-1.9082037e+04 3.0315403e+02 3.7388536e+02
+-2.0168129e+04 4.9088747e+02 -4.0250061e+01
+-2.0284707e+04 5.4337616e+02 -5.0743999e+02
+-1.9578880e+04 4.3700864e+02 -8.4023257e+02
+-1.7984227e+04 2.1590876e+02 -9.0724609e+02
+-1.5336626e+04 -1.8301863e+01 -7.0409203e+02
+-1.1622293e+04 -1.4824904e+02 -3.7169748e+02
+-7.2719112e+03 -1.2565414e+02 -1.0929101e+02
+-3.2149582e+03 -3.2784060e+01 -1.0764438e+01
+-5.6165105e+02 3.6878117e+00 -1.1049742e+00
+-6.5901150e+01 8.2427137e-01 -1.0446712e-01
+-6.1915691e+00 1.0085717e-01 -7.5656124e-03
+-4.4830427e-01 8.5199603e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.5617328e+00 4.6479183e-02 1.5039642e-03
+-4.2381405e+01 6.3391876e-01 6.6648611e-02
+-5.8323038e+02 6.3614017e+00 1.9767998e+00
+-7.0089302e+03 3.9482733e+01 4.8029677e+01
+-6.3248290e+04 -7.0090422e+02 1.4428709e+03
+-1.4421761e+05 -2.2146265e+03 5.1984004e+03
+-2.2782735e+05 -2.0789669e+03 9.2730100e+03
+-2.9355078e+05 7.0834189e+02 1.0357533e+04
+-3.3416293e+05 4.7936375e+03 6.7776618e+03
+-3.5288159e+05 8.0363672e+03 -5.1743791e+02
+-3.5504238e+05 8.9467151e+03 -8.7471757e+03
+-3.4305543e+05 7.1394030e+03 -1.4671753e+04
+-3.1570259e+05 3.3317245e+03 -1.5967510e+04
+-2.7006349e+05 -7.6517050e+02 -1.2452328e+04
+-2.0566477e+05 -3.0642045e+03 -6.5258843e+03
+-1.2975060e+05 -2.5724430e+03 -1.7879754e+03
+-5.8094577e+04 -6.7521621e+02 -8.6875236e+01
+-6.5547263e+03 6.0568646e+01 -6.5544983e+00
+-5.4726051e+02 8.1088660e+00 -4.8933073e-01
+-3.9729447e+01 7.5762259e-01 -3.0345275e-02
+-2.3958088e+00 5.3652610e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.1592253e+00 2.6112608e-01 -9.0868323e-02
+-1.7799427e+02 4.7176649e+00 -1.9999119e+00
+-3.1661059e+03 7.6792334e+01 -3.8354040e+01
+-5.7699459e+04 1.2647928e+03 -7.2512285e+02
+-8.6358429e+05 8.3074553e+03 4.5546636e+03
+-2.2130912e+06 1.6598231e+04 2.1907987e+04
+-3.6137737e+06 2.7611904e+04 3.8705677e+04
+-4.5959015e+06 3.9842770e+04 3.6844723e+04
+-5.0665107e+06 5.0637127e+04 8.7269942e+03
+-5.1819135e+06 5.7585647e+04 -3.8266801e+04
+-5.1173075e+06 5.9351240e+04 -8.7114353e+04
+-4.9428629e+06 5.5705005e+04 -1.1906739e+05
+-4.6126759e+06 4.7436055e+04 -1.2119739e+05
+-4.0119180e+06 3.6349270e+04 -9.3213593e+04
+-3.0595135e+06 2.4934050e+04 -5.0160585e+04
+-1.8560469e+06 1.5312081e+04 -1.4704196e+04
+-7.5093360e+05 8.1402589e+03 1.4022112e+02
+-5.5292359e+04 1.2988085e+03 4.6270627e-01
+-3.0192544e+03 7.9511141e+01 -4.4154058e-01
+-1.6890022e+02 4.9182715e+00 -4.3094290e-02
+-8.6520472e+00 2.7333745e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.9392954e+01 7.6117753e-01 -2.9587729e-01
+-3.8350587e+02 1.4778132e+01 -6.7032405e+00
+-6.8742949e+03 2.6012171e+02 -1.3189746e+02
+-1.2311059e+05 4.5944937e+03 -2.5370575e+03
+-1.8801964e+06 3.0392358e+04 8.0400247e+02
+-4.5558853e+06 5.9832511e+04 2.1617622e+04
+-7.3264513e+06 9.3905714e+04 3.7851530e+04
+-9.3138855e+06 1.2653763e+05 1.9191893e+04
+-1.0333268e+07 1.5242608e+05 -4.4702044e+04
+-1.0652114e+07 1.6824397e+05 -1.3748307e+05
+-1.0574434e+07 1.7255974e+05 -2.2672378e+05
+-1.0221719e+07 1.6524554e+05 -2.7847075e+05
+-9.5150831e+06 1.4724756e+05 -2.7064021e+05
+-8.2584449e+06 1.2075941e+05 -2.0494032e+05
+-6.3208251e+06 8.9357557e+04 -1.1143138e+05
+-3.9041306e+06 5.7607261e+04 -3.4206275e+04
+-1.6712064e+06 3.0156728e+04 9.0384721e+02
+-1.1828760e+05 4.6845711e+03 2.9526666e+01
+-6.5769880e+03 2.6593251e+02 3.6122692e-01
+-3.6524179e+02 1.5152697e+01 -3.9634646e-02
+-1.8389350e+01 7.8256405e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.0394707e+01 1.3524494e+00 -3.9431171e-01
+-6.0000402e+02 2.6693579e+01 -8.9419527e+00
+-1.0698705e+04 4.7632966e+02 -1.7484417e+02
+-1.8996016e+05 8.4781213e+03 -3.3126825e+03
+-2.9413631e+06 5.4803876e+04 -4.1036206e+03
+-7.0050107e+06 1.0647691e+05 1.7032428e+04
+-1.1187789e+07 1.6435233e+05 2.8128688e+04
+-1.4182817e+07 2.1785097e+05 -1.3327074e+04
+-1.5726851e+07 2.5915691e+05 -1.1933079e+05
+-1.6222588e+07 2.8413015e+05 -2.6305890e+05
+-1.6118959e+07 2.9127799e+05 -3.9549511e+05
+-1.5593247e+07 2.8054025e+05 -4.6683024e+05
+-1.4527935e+07 2.5292275e+05 -4.4563527e+05
+-1.2631232e+07 2.1086207e+05 -3.3602230e+05
+-9.7035037e+06 1.5887955e+05 -1.8447928e+05
+-6.0386381e+06 1.0393607e+05 -5.8863806e+04
+-2.6289923e+06 5.4778005e+04 3.5069081e+02
+-1.8267773e+05 8.6646134e+03 -9.9702370e+00
+-1.0247402e+04 4.8761520e+02 -2.4288415e+00
+-5.7219223e+02 2.7371960e+01 -2.0289983e-01
+-2.8865358e+01 1.3890948e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9782654e+01 1.6355084e+00 -2.0856099e-01
+-7.8290734e+02 3.2323383e+01 -5.0065707e+00
+-1.3905767e+04 5.7624203e+02 -1.0187411e+02
+-2.4593580e+05 1.0219501e+04 -1.9606539e+03
+-3.7721033e+06 6.5019631e+04 -7.0201067e+03
+-8.9917767e+06 1.2537685e+05 1.3805916e+04
+-1.4324691e+07 1.9199495e+05 1.9349450e+04
+-1.8090713e+07 2.5264073e+05 -4.3873321e+04
+-1.9985236e+07 2.9891220e+05 -1.8893433e+05
+-2.0558771e+07 3.2677421e+05 -3.7929942e+05
+-2.0404630e+07 3.3496563e+05 -5.5114062e+05
+-1.9753427e+07 3.2349005e+05 -6.4061813e+05
+-1.8447364e+07 2.9319690e+05 -6.0783345e+05
+-1.6093722e+07 2.4624866e+05 -4.5865325e+05
+-1.2407203e+07 1.8708803e+05 -2.5410126e+05
+-7.7393249e+06 1.2331763e+05 -8.3859851e+04
+-3.3665622e+06 6.5350732e+04 -2.3100595e+03
+-2.3654639e+05 1.0484789e+04 -1.6508260e+02
+-1.3322670e+04 5.9201512e+02 -1.1427923e+01
+-7.4688550e+02 3.3250536e+01 -6.5450787e-01
+-3.7797848e+01 1.6844814e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6463410e+01 1.3403547e+00 1.8613856e-01
+-9.1249554e+02 2.6430683e+01 3.2393570e+00
+-1.6172080e+04 4.6947394e+02 4.6991098e+01
+-2.8549661e+05 8.2859271e+03 6.9089386e+02
+-4.3016016e+06 5.2228508e+04 -7.4304858e+03
+-1.0333868e+07 1.0031525e+05 1.3777593e+04
+-1.6455219e+07 1.5297369e+05 1.5671812e+04
+-2.0707702e+07 2.0051203e+05 -6.3970614e+04
+-2.2776898e+07 2.3653932e+05 -2.3902989e+05
+-2.3346846e+07 2.5817996e+05 -4.6548087e+05
+-2.3132400e+07 2.6464043e+05 -6.6824453e+05
+-2.2407505e+07 2.5595903e+05 -7.7279031e+05
+-2.0979362e+07 2.3267201e+05 -7.3248502e+05
+-1.8366759e+07 1.9620881e+05 -5.5401722e+05
+-1.4200692e+07 1.4975314e+05 -3.0919889e+05
+-8.8580366e+06 9.9132897e+04 -1.0468596e+05
+-3.8242447e+06 5.2710884e+04 -6.0380531e+03
+-2.7456890e+05 8.5316272e+03 -3.8193573e+02
+-1.5492807e+04 4.8399353e+02 -2.3893154e+01
+-8.7047146e+02 2.7277916e+01 -1.2720622e+00
+-4.4144523e+01 1.3847454e+00 0.0000000e+00
+0 0 0
+0 0 0
+-5.0327293e+01 5.1646492e-01 5.5893322e-01
+-9.8741101e+02 1.0165704e+01 1.0912677e+01
+-1.7483609e+04 1.8011786e+02 1.8288662e+02
+-3.0845861e+05 3.1695621e+03 3.0592055e+03
+-4.5806051e+06 1.9893189e+04 -6.6526213e+03
+-1.1084564e+07 3.8145382e+04 1.5420151e+04
+-1.7654020e+07 5.8060863e+04 1.5729013e+04
+-2.2162166e+07 7.5969093e+04 -7.3611884e+04
+-2.4298376e+07 8.9496623e+04 -2.6704963e+05
+-2.4838453e+07 9.7611998e+04 -5.1593768e+05
+-2.4577221e+07 1.0005234e+05 -7.3828216e+05
+-2.3816426e+07 9.6839043e+04 -8.5293324e+05
+-2.2339826e+07 8.8150635e+04 -8.0891714e+05
+-1.9606609e+07 7.4477496e+04 -6.1311631e+05
+-1.5187972e+07 5.6965159e+04 -3.4379847e+05
+-9.4681615e+06 3.7785007e+04 -1.1822069e+05
+-4.0585408e+06 2.0122289e+04 -9.1136393e+03
+-2.9661677e+05 3.2705641e+03 -5.6256788e+02
+-1.6747222e+04 1.8607385e+02 -3.4349349e+01
+-9.4182023e+02 1.0512430e+01 -1.7922100e+00
+-4.7809614e+01 5.3458308e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1580410e+01 -5.1646491e-01 7.0797803e-01
+-1.0117342e+03 -1.0165704e+01 1.3954898e+01
+-1.7910320e+04 -1.8011786e+02 2.3620764e+02
+-3.1595344e+05 -3.1695621e+03 3.9778594e+03
+-4.6668542e+06 -1.9893189e+04 -6.1899944e+03
+-1.1325146e+07 -3.8145381e+04 1.6327104e+04
+-1.8039528e+07 -5.8060863e+04 1.6266714e+04
+-2.2626667e+07 -7.5969093e+04 -7.6223315e+04
+-2.4778882e+07 -8.9496619e+04 -2.7580091e+05
+-2.5304451e+07 -9.7611998e+04 -5.3226752e+05
+-2.5025933e+07 -1.0005234e+05 -7.6130610e+05
+-2.4254590e+07 -9.6839044e+04 -8.7953063e+05
+-2.2765984e+07 -8.8150632e+04 -8.3446621e+05
+-1.9998422e+07 -7.4477496e+04 -6.3299629e+05
+-1.5501612e+07 -5.6965159e+04 -3.5551919e+05
+-9.6609113e+06 -3.7785006e+04 -1.2288165e+05
+-4.1296658e+06 -2.0122289e+04 -1.0279618e+04
+-3.0381051e+05 -3.2705641e+03 -6.3152682e+02
+-1.7155131e+04 -1.8607385e+02 -3.8364555e+01
+-9.6496921e+02 -1.0512430e+01 -1.9928013e+00
+-4.8997257e+01 -5.3458308e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0327293e+01 -1.3403547e+00 5.5893322e-01
+-9.8741101e+02 -2.6430682e+01 1.0912677e+01
+-1.7483609e+04 -4.6947394e+02 1.8288662e+02
+-3.0845861e+05 -8.2859272e+03 3.0592054e+03
+-4.5806051e+06 -5.2228508e+04 -6.6526211e+03
+-1.1084564e+07 -1.0031525e+05 1.5420151e+04
+-1.7654020e+07 -1.5297369e+05 1.5729013e+04
+-2.2162166e+07 -2.0051203e+05 -7.3611884e+04
+-2.4298376e+07 -2.3653932e+05 -2.6704962e+05
+-2.4838453e+07 -2.5817995e+05 -5.1593768e+05
+-2.4577221e+07 -2.6464043e+05 -7.3828216e+05
+-2.3816426e+07 -2.5595903e+05 -8.5293324e+05
+-2.2339826e+07 -2.3267201e+05 -8.0891714e+05
+-1.9606609e+07 -1.9620880e+05 -6.1311631e+05
+-1.5187972e+07 -1.4975314e+05 -3.4379847e+05
+-9.4681615e+06 -9.9132898e+04 -1.1822069e+05
+-4.0585408e+06 -5.2710884e+04 -9.1136393e+03
+-2.9661677e+05 -8.5316272e+03 -5.6256787e+02
+-1.6747222e+04 -4.8399353e+02 -3.4349349e+01
+-9.4182023e+02 -2.7277916e+01 -1.7922100e+00
+-4.7809614e+01 -1.3847454e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6463410e+01 -1.6355084e+00 1.8613855e-01
+-9.1249554e+02 -3.2323383e+01 3.2393569e+00
+-1.6172080e+04 -5.7624203e+02 4.6991096e+01
+-2.8549661e+05 -1.0219501e+04 6.9089385e+02
+-4.3016016e+06 -6.5019631e+04 -7.4304856e+03
+-1.0333868e+07 -1.2537684e+05 1.3777593e+04
+-1.6455219e+07 -1.9199495e+05 1.5671812e+04
+-2.0707702e+07 -2.5264073e+05 -6.3970611e+04
+-2.2776898e+07 -2.9891220e+05 -2.3902989e+05
+-2.3346846e+07 -3.2677421e+05 -4.6548088e+05
+-2.3132400e+07 -3.3496562e+05 -6.6824453e+05
+-2.2407505e+07 -3.2349004e+05 -7.7279031e+05
+-2.0979362e+07 -2.9319690e+05 -7.3248502e+05
+-1.8366759e+07 -2.4624866e+05 -5.5401722e+05
+-1.4200692e+07 -1.8708803e+05 -3.0919889e+05
+-8.8580366e+06 -1.2331763e+05 -1.0468596e+05
+-3.8242447e+06 -6.5350732e+04 -6.0380532e+03
+-2.7456890e+05 -1.0484789e+04 -3.8193573e+02
+-1.5492807e+04 -5.9201512e+02 -2.3893154e+01
+-8.7047146e+02 -3.3250536e+01 -1.2720622e+00
+-4.4144523e+01 -1.6844814e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9782654e+01 -1.3524494e+00 -2.0856099e-01
+-7.8290734e+02 -2.6693579e+01 -5.0065711e+00
+-1.3905767e+04 -4.7632966e+02 -1.0187411e+02
+-2.4593580e+05 -8.4781213e+03 -1.9606538e+03
+-3.7721033e+06 -5.4803876e+04 -7.0201065e+03
+-8.9917767e+06 -1.0647691e+05 1.3805916e+04
+-1.4324691e+07 -1.6435233e+05 1.9349450e+04
+-1.8090713e+07 -2.1785097e+05 -4.3873320e+04
+-1.9985236e+07 -2.5915690e+05 -1.8893434e+05
+-2.0558771e+07 -2.8413015e+05 -3.7929942e+05
+-2.0404630e+07 -2.9127799e+05 -5.5114062e+05
+-1.9753427e+07 -2.8054025e+05 -6.4061813e+05
+-1.8447364e+07 -2.5292275e+05 -6.0783344e+05
+-1.6093722e+07 -2.1086207e+05 -4.5865325e+05
+-1.2407203e+07 -1.5887955e+05 -2.5410126e+05
+-7.7393249e+06 -1.0393607e+05 -8.3859851e+04
+-3.3665622e+06 -5.4778005e+04 -2.3100595e+03
+-2.3654639e+05 -8.6646133e+03 -1.6508260e+02
+-1.3322670e+04 -4.8761520e+02 -1.1427923e+01
+-7.4688550e+02 -2.7371960e+01 -6.5450786e-01
+-3.7797848e+01 -1.3890948e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.0394707e+01 -7.6117753e-01 -3.9431171e-01
+-6.0000402e+02 -1.4778132e+01 -8.9419527e+00
+-1.0698705e+04 -2.6012171e+02 -1.7484418e+02
+-1.8996016e+05 -4.5944937e+03 -3.3126825e+03
+-2.9413631e+06 -3.0392358e+04 -4.1036205e+03
+-7.0050107e+06 -5.9832511e+04 1.7032428e+04
+-1.1187789e+07 -9.3905715e+04 2.8128688e+04
+-1.4182817e+07 -1.2653763e+05 -1.3327073e+04
+-1.5726851e+07 -1.5242608e+05 -1.1933079e+05
+-1.6222588e+07 -1.6824397e+05 -2.6305890e+05
+-1.6118959e+07 -1.7255974e+05 -3.9549511e+05
+-1.5593247e+07 -1.6524554e+05 -4.6683024e+05
+-1.4527935e+07 -1.4724756e+05 -4.4563527e+05
+-1.2631232e+07 -1.2075941e+05 -3.3602230e+05
+-9.7035037e+06 -8.9357556e+04 -1.8447928e+05
+-6.0386381e+06 -5.7607261e+04 -5.8863805e+04
+-2.6289923e+06 -3.0156727e+04 3.5069075e+02
+-1.8267773e+05 -4.6845711e+03 -9.9702382e+00
+-1.0247402e+04 -2.6593251e+02 -2.4288414e+00
+-5.7219223e+02 -1.5152697e+01 -2.0289983e-01
+-2.8865358e+01 -7.8256404e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.9392954e+01 -2.6112609e-01 -2.9587729e-01
+-3.8350587e+02 -4.7176649e+00 -6.7032406e+00
+-6.8742949e+03 -7.6792334e+01 -1.3189746e+02
+-1.2311059e+05 -1.2647928e+03 -2.5370575e+03
+-1.8801964e+06 -8.3074553e+03 8.0400234e+02
+-4.5558853e+06 -1.6598231e+04 2.1617622e+04
+-7.3264513e+06 -2.7611905e+04 3.7851530e+04
+-9.3138855e+06 -3.9842771e+04 1.9191892e+04
+-1.0333268e+07 -5.0637128e+04 -4.4702044e+04
+-1.0652114e+07 -5.7585648e+04 -1.3748307e+05
+-1.0574434e+07 -5.9351240e+04 -2.2672378e+05
+-1.0221719e+07 -5.5705005e+04 -2.7847075e+05
+-9.5150831e+06 -4.7436056e+04 -2.7064021e+05
+-8.2584449e+06 -3.6349270e+04 -2.0494032e+05
+-6.3208251e+06 -2.4934050e+04 -1.1143138e+05
+-3.9041306e+06 -1.5312081e+04 -3.4206275e+04
+-1.6712064e+06 -8.1402589e+03 9.0384721e+02
+-1.1828760e+05 -1.2988085e+03 2.9526664e+01
+-6.5769880e+03 -7.9511141e+01 3.6122712e-01
+-3.6524179e+02 -4.9182715e+00 -3.9634649e-02
+-1.8389350e+01 -2.7333745e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.1592253e+00 -4.6479183e-02 -9.0868326e-02
+-1.7799427e+02 -6.3391875e-01 -1.9999119e+00
+-3.1661059e+03 -6.3614017e+00 -3.8354040e+01
+-5.7699459e+04 -3.9482734e+01 -7.2512285e+02
+-8.6358429e+05 7.0090421e+02 4.5546635e+03
+-2.2130912e+06 2.2146266e+03 2.1907987e+04
+-3.6137737e+06 2.0789670e+03 3.8705677e+04
+-4.5959015e+06 -7.0834182e+02 3.6844722e+04
+-5.0665107e+06 -4.7936375e+03 8.7269940e+03
+-5.1819135e+06 -8.0363672e+03 -3.8266801e+04
+-5.1173075e+06 -8.9467152e+03 -8.7114353e+04
+-4.9428629e+06 -7.1394031e+03 -1.1906739e+05
+-4.6126759e+06 -3.3317245e+03 -1.2119739e+05
+-4.0119180e+06 7.6517047e+02 -9.3213593e+04
+-3.0595135e+06 3.0642045e+03 -5.0160585e+04
+-1.8560469e+06 2.5724430e+03 -1.4704196e+04
+-7.5093360e+05 6.7521623e+02 1.4022112e+02
+-5.5292359e+04 -6.0568645e+01 4.6270645e-01
+-3.0192544e+03 -8.1088660e+00 -4.4154055e-01
+-1.6890022e+02 -7.5762260e-01 -4.3094292e-02
+-8.6520472e+00 -5.3652610e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.5617328e+00 -6.7370622e-03 1.5039640e-03
+-4.2381405e+01 -7.6245657e-02 6.6648604e-02
+-5.8323038e+02 -5.8227264e-01 1.9767998e+00
+-7.0089302e+03 -2.1108720e+00 4.8029678e+01
+-6.3248290e+04 3.2916388e+01 1.4428709e+03
+-1.4421761e+05 1.0360146e+02 5.1984004e+03
+-2.2782735e+05 8.9656814e+01 9.2730100e+03
+-2.9355078e+05 -6.9119029e+01 1.0357533e+04
+-3.3416293e+05 -3.0315403e+02 6.7776617e+03
+-3.5288159e+05 -4.9088747e+02 -5.1743790e+02
+-3.5504238e+05 -5.4337616e+02 -8.7471757e+03
+-3.4305543e+05 -4.3700864e+02 -1.4671753e+04
+-3.1570259e+05 -2.1590876e+02 -1.5967510e+04
+-2.7006349e+05 1.8301863e+01 -1.2452328e+04
+-2.0566477e+05 1.4824904e+02 -6.5258843e+03
+-1.2975060e+05 1.2565414e+02 -1.7879754e+03
+-5.8094577e+04 3.2784060e+01 -8.6875238e+01
+-6.5547263e+03 -3.6878116e+00 -6.5544983e+00
+-5.4726051e+02 -8.2427136e-01 -4.8933073e-01
+-3.9729447e+01 -1.0085717e-01 -3.0345274e-02
+-2.3958088e+00 -8.5199603e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.8528485e-01 -8.5321539e-04 3.1701783e-03
+-6.6967888e+00 -8.4267055e-03 5.0761128e-02
+-7.1349556e+01 -5.2421336e-02 6.4186336e-01
+-6.1111822e+02 -1.3286380e-01 7.4741188e+00
+-3.5422008e+03 1.4328979e+00 8.7214617e+01
+-8.1228326e+03 4.5018870e+00 2.9152462e+02
+-1.2917350e+04 3.2108000e+00 5.1526299e+02
+-1.6719295e+04 -5.8152228e+00 5.7571582e+02
+-1.9082037e+04 -1.9063034e+01 3.7388536e+02
+-2.0168129e+04 -2.9768677e+01 -4.0250062e+01
+-2.0284707e+04 -3.2743031e+01 -5.0743999e+02
+-1.9578880e+04 -2.6578516e+01 -8.4023257e+02
+-1.7984227e+04 -1.3924991e+01 -9.0724609e+02
+-1.5336626e+04 -6.9127695e-01 -7.0409203e+02
+-1.1622293e+04 6.6547403e+00 -3.7169748e+02
+-7.2719112e+03 5.8433781e+00 -1.0929101e+02
+-3.2149582e+03 1.4972847e+00 -1.0764438e+01
+-5.6165105e+02 -2.3138136e-01 -1.1049742e+00
+-6.5901150e+01 -7.5484833e-02 -1.0446712e-01
+-6.1915691e+00 -1.1570265e-02 -7.5656124e-03
+-4.4830427e-01 -1.1321266e-03 0.0000000e+00
+0 0 0
+0 0 0
+-6.9259982e-02 -7.8449284e-05 6.9215909e-04
+-8.1060961e-01 -7.0042528e-04 8.9981642e-03
+-6.9386937e+00 -3.7620390e-03 8.6977350e-02
+-4.5857175e+01 -8.3135217e-03 7.3729588e-01
+-2.0294176e+02 5.0602080e-02 5.3343565e+00
+-4.5751688e+02 1.6076047e-01 1.6415774e+01
+-7.2958661e+02 7.2057411e-02 2.8555993e+01
+-9.4819739e+02 -3.7376061e-01 3.1812059e+01
+-1.0852765e+03 -1.0212249e+00 2.0451097e+01
+-1.1483852e+03 -1.5465496e+00 -2.9158317e+00
+-1.1547979e+03 -1.6914129e+00 -2.9254618e+01
+-1.1133018e+03 -1.3846271e+00 -4.7831479e+01
+-1.0204126e+03 -7.6146261e-01 -5.1292761e+01
+-8.6723083e+02 -1.1555056e-01 -3.9716204e+01
+-6.5413858e+02 2.4620580e-01 -2.1245771e+01
+-4.0739611e+02 2.3076461e-01 -6.7506994e+00
+-1.8220489e+02 5.7010730e-02 -9.9519714e-01
+-4.1545369e+01 -1.3097545e-02 -1.2860432e-01
+-6.3169594e+00 -5.3026282e-03 -1.4651032e-02
+-7.3930546e-01 -9.6149236e-04 -1.2234574e-03
+-6.3172472e-02 -1.0545999e-04 0.0000000e+00
+0 0 0
+0 0 0
+-6.9063405e-03 0.0000000e+00 8.2744258e-05
+-7.1164676e-02 0.0000000e+00 9.4751009e-04
+-5.1630580e-01 0.0000000e+00 7.7659976e-03
+-2.8378902e+00 0.0000000e+00 5.3665393e-02
+-1.0611851e+01 0.0000000e+00 2.9392681e-01
+-2.3347842e+01 0.0000000e+00 8.3894224e-01
+-3.7209809e+01 0.0000000e+00 1.4320838e+00
+-4.8504831e+01 0.0000000e+00 1.5867811e+00
+-5.5659516e+01 0.0000000e+00 1.0082678e+00
+-5.8966845e+01 0.0000000e+00 -1.7947937e-01
+-5.9290775e+01 0.0000000e+00 -1.5163197e+00
+-5.7096620e+01 0.0000000e+00 -2.4513941e+00
+-5.2223420e+01 0.0000000e+00 -2.6148556e+00
+-4.4245780e+01 0.0000000e+00 -2.0247057e+00
+-3.3252412e+01 0.0000000e+00 -1.1003674e+00
+-2.0686231e+01 0.0000000e+00 -3.7504304e-01
+-9.4416307e+00 0.0000000e+00 -7.0612950e-02
+-2.5416098e+00 0.0000000e+00 -1.0788641e-02
+-4.6444402e-01 0.0000000e+00 -1.4029993e-03
+-6.4155195e-02 0.0000000e+00 -1.2977520e-04
+-6.2302152e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.0467291e-03 7.1159919e-05 6.9228629e-05
+-7.2521991e-02 6.1599854e-04 8.1054593e-04
+-5.2543560e-01 3.1117425e-03 6.8285954e-03
+-2.8844594e+00 4.9117789e-03 4.8486035e-02
+-1.0774228e+01 -5.9721961e-02 2.7058572e-01
+-2.3675662e+01 -1.7633302e-01 7.7473874e-01
+-3.7648313e+01 -1.0598072e-01 1.3192235e+00
+-4.8935297e+01 3.0884165e-01 1.4408478e+00
+-5.5998151e+01 9.2864026e-01 8.5084230e-01
+-5.9220096e+01 1.4416274e+00 -3.3753403e-01
+-5.9540996e+01 1.5848551e+00 -1.6721675e+00
+-5.7446950e+01 1.2757323e+00 -2.5975698e+00
+-5.2732769e+01 6.4705821e-01 -2.7352791e+00
+-4.4878611e+01 1.9865948e-03 -2.1044348e+00
+-3.3876738e+01 -3.4186936e-01 -1.1382386e+00
+-2.1146640e+01 -2.9249472e-01 -3.8533451e-01
+-9.6723251e+00 -8.3665455e-02 -7.0974682e-02
+-2.6095568e+00 7.5123354e-03 -1.0540028e-02
+-4.7813205e-01 4.4845019e-03 -1.3364921e-03
+-6.6240026e-02 8.6983609e-04 -1.2149723e-04
+-6.4499989e-03 9.8286522e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.0536518e-02 7.9596381e-04 5.5173189e-04
+-8.2449330e-01 7.6425121e-03 7.4089090e-03
+-7.0477264e+00 4.5056065e-02 7.4497219e-02
+-4.6520736e+01 8.5747044e-02 6.5722296e-01
+-2.0568557e+02 -1.5535356e+00 4.8948429e+00
+-4.6326437e+02 -4.6502849e+00 1.5116284e+01
+-7.3716122e+02 -3.6549509e+00 2.6239864e+01
+-9.5525209e+02 4.7652585e+00 2.8838140e+01
+-1.0902634e+03 1.7453658e+01 1.7300026e+01
+-1.1515538e+03 2.7916016e+01 -6.0057023e+00
+-1.1578510e+03 3.0868594e+01 -3.2236303e+01
+-1.1183338e+03 2.4659415e+01 -5.0587975e+01
+-1.0286863e+03 1.1876433e+01 -5.3543659e+01
+-8.7819442e+02 -1.3849381e+00 -4.1193136e+01
+-6.6530746e+02 -8.4346001e+00 -2.1931524e+01
+-4.1569848e+02 -7.0008644e+00 -6.9207819e+00
+-1.8623274e+02 -1.9868630e+00 -9.8973995e-01
+-4.2555680e+01 1.5150171e-01 -1.2341814e-01
+-6.4883768e+00 6.6147236e-02 -1.3663488e-02
+-7.6170351e-01 1.0724449e-02 -1.1200446e-03
+-6.5272311e-02 1.0780816e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.9316504e-01 6.5294875e-03 2.1466689e-03
+-6.7966917e+00 7.2354860e-02 3.7337219e-02
+-7.2313141e+01 5.3136426e-01 5.1461410e-01
+-6.1863680e+02 1.6464801e+00 6.4724611e+00
+-3.5831979e+03 -3.3844180e+01 7.9760140e+01
+-8.2125315e+03 -1.0282923e+02 2.6763803e+02
+-1.3032956e+04 -9.2624224e+01 4.7221346e+02
+-1.6819141e+04 5.5874570e+01 5.2094967e+02
+-1.9140711e+04 2.8009830e+02 3.1697860e+02
+-2.0192295e+04 4.6372100e+02 -9.4660328e+01
+-2.0305862e+04 5.1608780e+02 -5.5872389e+02
+-1.9635097e+04 4.0904054e+02 -8.8688810e+02
+-1.8099647e+04 1.8539758e+02 -9.4498938e+02
+-1.5504234e+04 -5.0103402e+01 -7.2866364e+02
+-1.1800342e+04 -1.7617169e+02 -3.8287693e+02
+-7.4059132e+03 -1.4406680e+02 -1.1180893e+02
+-3.2777863e+03 -4.0466952e+01 -1.0500721e+01
+-5.7385674e+02 2.8838014e+00 -1.0273301e+00
+-6.7528164e+01 7.5961533e-01 -9.3784372e-02
+-6.3649111e+00 9.6928445e-02 -6.6463587e-03
+-4.6224586e-01 8.3733122e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.5977153e+00 4.6740109e-02 -4.2281219e-03
+-4.2921912e+01 6.3139877e-01 -2.2765342e-02
+-5.8985169e+02 6.2249518e+00 9.0495266e-01
+-7.0800150e+03 3.6559663e+01 3.7076638e+01
+-6.3861565e+04 -6.9896071e+02 1.3154683e+03
+-1.4562038e+05 -2.1437547e+03 4.7591647e+03
+-2.2958631e+05 -2.0518666e+03 8.4773661e+03
+-2.9493348e+05 5.5944928e+02 9.3564949e+03
+-3.3475633e+05 4.4729203e+03 5.7570719e+03
+-3.5283732e+05 7.6469638e+03 -1.4704475e+03
+-3.5493124e+05 8.5602613e+03 -9.6257646e+03
+-3.4355725e+05 6.7440339e+03 -1.5458939e+04
+-3.1726670e+05 2.8895751e+03 -1.6599000e+04
+-2.7261041e+05 -1.2407773e+03 -1.2861400e+04
+-2.0849943e+05 -3.4933277e+03 -6.7095889e+03
+-1.3191720e+05 -2.8611431e+03 -1.8259129e+03
+-5.9084099e+04 -7.9624859e+02 -8.0609723e+01
+-6.6823101e+03 5.5469884e+01 -5.6119863e+00
+-5.5967622e+02 7.9606071e+00 -3.9726632e-01
+-4.0768204e+01 7.6240591e-01 -2.3986762e-02
+-2.4661617e+00 5.4739496e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.2677225e+00 2.6852354e-01 -1.1328624e-01
+-1.7989678e+02 4.8432030e+00 -2.4225865e+00
+-3.1958041e+03 7.8704385e+01 -4.5203796e+01
+-5.8165606e+04 1.2942066e+03 -8.3670418e+02
+-8.7703657e+05 8.0692778e+03 3.8473439e+03
+-2.2466919e+06 1.5745066e+04 1.9559292e+04
+-3.6567935e+06 2.5810201e+04 3.4717060e+04
+-4.6300718e+06 3.7040746e+04 3.2406094e+04
+-5.0818833e+06 4.7130163e+04 5.1213952e+03
+-5.1824083e+06 5.3815566e+04 -4.0552405e+04
+-5.1166544e+06 5.5672483e+04 -8.8317710e+04
+-4.9571824e+06 5.2327020e+04 -1.1958117e+05
+-4.6526583e+06 4.4515282e+04 -1.2122442e+05
+-4.0756134e+06 3.4066848e+04 -9.2836637e+04
+-3.1297399e+06 2.3447338e+04 -4.9550950e+04
+-1.9088973e+06 1.4622757e+04 -1.4184442e+04
+-7.7422050e+05 8.0174554e+03 2.8875337e+02
+-5.6315676e+04 1.3577868e+03 9.7535888e+00
+-3.0849662e+03 8.3286442e+01 1.3952023e-01
+-1.7315040e+02 5.1641119e+00 -1.2003242e-02
+-8.8970613e+00 2.8775044e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.9571685e+01 7.8817073e-01 -3.4091622e-01
+-3.8672103e+02 1.5275703e+01 -7.5582605e+00
+-6.9258413e+03 2.6840268e+02 -1.4571016e+02
+-1.2393815e+05 4.7335791e+03 -2.7575213e+03
+-1.9051935e+06 3.0234958e+04 7.3888178e+01
+-4.6174539e+06 5.8467437e+04 1.8920183e+04
+-7.4060856e+06 9.0737852e+04 3.3626761e+04
+-9.3807168e+06 1.2162404e+05 1.5874768e+04
+-1.0371862e+07 1.4642296e+05 -4.4823216e+04
+-1.0671171e+07 1.6198900e+05 -1.3393893e+05
+-1.0598716e+07 1.6670160e+05 -2.2068588e+05
+-1.0278684e+07 1.6017787e+05 -2.7157180e+05
+-9.6212627e+06 1.4324736e+05 -2.6412426e+05
+-8.4070347e+06 1.1807529e+05 -1.9954287e+05
+-6.4774353e+06 8.8100225e+04 -1.0758554e+05
+-4.0224889e+06 5.7549116e+04 -3.2153576e+04
+-1.7273176e+06 3.0697745e+04 1.2773350e+03
+-1.2064702e+05 4.9419633e+03 5.2571807e+01
+-6.7241271e+03 2.8123265e+02 1.7646245e+00
+-3.7441460e+02 1.6068241e+01 3.3297882e-02
+-1.8900336e+01 8.3203348e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.0559398e+01 1.4079633e+00 -4.5510177e-01
+-6.0284792e+02 2.7741831e+01 -1.0077330e+01
+-1.0741815e+04 4.9416648e+02 -1.9273156e+02
+-1.9061239e+05 8.7821983e+03 -3.5891226e+03
+-2.9651943e+06 5.5112730e+04 -4.6357323e+03
+-7.0710409e+06 1.0539970e+05 1.4462168e+04
+-1.1268304e+07 1.6111496e+05 2.4599584e+04
+-1.4235306e+07 2.1260181e+05 -1.3888693e+04
+-1.5733618e+07 2.5281012e+05 -1.1350932e+05
+-1.6201379e+07 2.7777578e+05 -2.5050594e+05
+-1.6109844e+07 2.8571256e+05 -3.7863144e+05
+-1.5638930e+07 2.7620039e+05 -4.4897145e+05
+-1.4654202e+07 2.5006231e+05 -4.2952016e+05
+-1.2828955e+07 2.0965400e+05 -3.2337649e+05
+-9.9219391e+06 1.5927394e+05 -1.7611472e+05
+-6.2078260e+06 1.0543252e+05 -5.4810286e+04
+-2.7104628e+06 5.6457984e+04 8.9995182e+02
+-1.8605549e+05 9.1952542e+03 2.4428471e+01
+-1.0460239e+04 5.1881228e+02 -3.1420497e-01
+-5.8555144e+02 2.9205753e+01 -9.2505438e-02
+-2.9611983e+01 1.4861537e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9820078e+01 1.7112389e+00 -2.6585142e-01
+-7.8316650e+02 3.3766073e+01 -6.0309358e+00
+-1.3901569e+04 6.0097086e+02 -1.1703338e+02
+-2.4573542e+05 1.0642761e+04 -2.1779789e+03
+-3.7777957e+06 6.5869503e+04 -7.2423032e+03
+-9.0302275e+06 1.2511885e+05 1.1489321e+04
+-1.4358598e+07 1.8985429e+05 1.6657137e+04
+-1.8068688e+07 2.4879397e+05 -4.1560042e+04
+-1.9891164e+07 2.9428676e+05 -1.7710881e+05
+-2.0422808e+07 3.2242843e+05 -3.5772425e+05
+-2.0284825e+07 3.3162276e+05 -5.2343948e+05
+-1.9710392e+07 3.2148577e+05 -6.1176016e+05
+-1.8519650e+07 2.9266287e+05 -5.8207448e+05
+-1.6274594e+07 2.4721561e+05 -4.3876450e+05
+-1.2634733e+07 1.8934974e+05 -2.4131030e+05
+-7.9234624e+06 1.2622555e+05 -7.7965844e+04
+-3.4542072e+06 6.7896402e+04 -1.7592555e+03
+-2.4016990e+05 1.1188938e+04 -1.2943056e+02
+-1.3557465e+04 6.3335054e+02 -9.1731633e+00
+-7.6198842e+02 3.5669837e+01 -5.3432706e-01
+-3.8657779e+01 1.8117576e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6312547e+01 1.4082781e+00 1.5209797e-01
+-9.0902511e+02 2.7729876e+01 2.7178670e+00
+-1.6101411e+04 4.9182187e+02 4.1197886e+01
+-2.8412510e+05 8.6693705e+03 6.4308183e+02
+-4.2809579e+06 5.3195291e+04 -7.3264420e+03
+-1.0328385e+07 1.0066262e+05 1.1646958e+04
+-1.6419367e+07 1.5213076e+05 1.3518724e+04
+-2.0584412e+07 1.9861316e+05 -5.9589999e+04
+-2.2553747e+07 2.3426008e+05 -2.2271424e+05
+-2.3066352e+07 2.5626815e+05 -4.3704725e+05
+-2.2869168e+07 2.6357496e+05 -6.3223231e+05
+-2.2238720e+07 2.5591917e+05 -7.3545081e+05
+-2.0956554e+07 2.3367828e+05 -6.9927380e+05
+-1.8488463e+07 1.9820217e+05 -5.2855659e+05
+-1.4399326e+07 1.5249885e+05 -2.9307106e+05
+-9.0294499e+06 1.0207976e+05 -9.7511936e+04
+-3.9032766e+06 5.5075549e+04 -5.6591658e+03
+-2.7783131e+05 9.1476297e+03 -3.5544552e+02
+-1.5712930e+04 5.2013988e+02 -2.2111020e+01
+-8.8513048e+02 2.9390691e+01 -1.1728586e+00
+-4.5001294e+01 1.4956697e+00 0.0000000e+00
+0 0 0
+0 0 0
+-5.0016039e+01 5.4394571e-01 5.5307834e-01
+-9.8080326e+02 1.0692266e+01 1.0982937e+01
+-1.7357794e+04 1.8919062e+02 1.8779915e+02
+-3.0612795e+05 3.3254467e+03 3.2010543e+03
+-4.5382328e+06 2.0321432e+04 -6.2973151e+03
+-1.1041961e+07 3.8390182e+04 1.3372237e+04
+-1.7560212e+07 5.7912453e+04 1.3782590e+04
+-2.1957093e+07 7.5476422e+04 -6.8153481e+04
+-2.3972971e+07 8.8904618e+04 -2.4820337e+05
+-2.4444046e+07 9.7187343e+04 -4.8352909e+05
+-2.4199741e+07 9.9958693e+04 -6.9739289e+05
+-2.3544441e+07 9.7127400e+04 -8.1058614e+05
+-2.2234248e+07 8.8812407e+04 -7.7129822e+05
+-1.9670802e+07 7.5474418e+04 -5.8437668e+05
+-1.5352295e+07 5.8194833e+04 -3.2574969e+05
+-9.6204818e+06 3.9031145e+04 -1.1038076e+05
+-4.1259832e+06 2.1089989e+04 -8.9527508e+03
+-2.9939005e+05 3.5164232e+03 -5.4827166e+02
+-1.6942615e+04 2.0049686e+02 -3.3235339e+01
+-9.5529535e+02 1.1355034e+01 -1.7245637e+00
+-4.8617298e+01 5.7878945e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1207246e+01 -5.4394570e-01 7.1472730e-01
+-1.0039229e+03 -1.0692266e+01 1.4287916e+01
+-1.7763493e+04 -1.8919061e+02 2.4584240e+02
+-3.1325971e+05 -3.3254467e+03 4.2030123e+03
+-4.6162688e+06 -2.0321432e+04 -5.7395244e+03
+-1.1268404e+07 -3.8390182e+04 1.4298121e+04
+-1.7923763e+07 -5.7912450e+04 1.4357506e+04
+-2.2390902e+07 -7.5476421e+04 -7.0454757e+04
+-2.4415357e+07 -8.8904611e+04 -2.5617020e+05
+-2.4867650e+07 -9.7187343e+04 -4.9859704e+05
+-2.4605759e+07 -9.9958692e+04 -7.1885322e+05
+-2.3943618e+07 -9.7127399e+04 -8.3557089e+05
+-2.2628504e+07 -8.8812406e+04 -7.9542634e+05
+-2.0039696e+07 -7.5474418e+04 -6.0320360e+05
+-1.5651563e+07 -5.8194834e+04 -3.3686352e+05
+-9.8048640e+06 -3.9031145e+04 -1.1484849e+05
+-4.1921175e+06 -2.1089990e+04 -1.0216749e+04
+-3.0637165e+05 -3.5164232e+03 -6.2277079e+02
+-1.7339350e+04 -2.0049686e+02 -3.7558018e+01
+-9.7787730e+02 -1.1355034e+01 -1.9398644e+00
+-4.9779543e+01 -5.7878945e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0016039e+01 -1.4082781e+00 5.5307832e-01
+-9.8080326e+02 -2.7729876e+01 1.0982937e+01
+-1.7357794e+04 -4.9182187e+02 1.8779915e+02
+-3.0612795e+05 -8.6693705e+03 3.2010543e+03
+-4.5382328e+06 -5.3195291e+04 -6.2973147e+03
+-1.1041961e+07 -1.0066262e+05 1.3372240e+04
+-1.7560212e+07 -1.5213076e+05 1.3782586e+04
+-2.1957093e+07 -1.9861316e+05 -6.8153481e+04
+-2.3972971e+07 -2.3426009e+05 -2.4820337e+05
+-2.4444046e+07 -2.5626815e+05 -4.8352909e+05
+-2.4199741e+07 -2.6357496e+05 -6.9739289e+05
+-2.3544441e+07 -2.5591917e+05 -8.1058614e+05
+-2.2234248e+07 -2.3367828e+05 -7.7129822e+05
+-1.9670802e+07 -1.9820217e+05 -5.8437668e+05
+-1.5352295e+07 -1.5249885e+05 -3.2574969e+05
+-9.6204818e+06 -1.0207976e+05 -1.1038076e+05
+-4.1259832e+06 -5.5075549e+04 -8.9527508e+03
+-2.9939005e+05 -9.1476297e+03 -5.4827166e+02
+-1.6942615e+04 -5.2013988e+02 -3.3235339e+01
+-9.5529535e+02 -2.9390691e+01 -1.7245637e+00
+-4.8617298e+01 -1.4956697e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6312547e+01 -1.7112389e+00 1.5209797e-01
+-9.0902511e+02 -3.3766073e+01 2.7178667e+00
+-1.6101411e+04 -6.0097086e+02 4.1197885e+01
+-2.8412510e+05 -1.0642761e+04 6.4308183e+02
+-4.2809579e+06 -6.5869503e+04 -7.3264416e+03
+-1.0328385e+07 -1.2511885e+05 1.1646958e+04
+-1.6419367e+07 -1.8985428e+05 1.3518724e+04
+-2.0584412e+07 -2.4879397e+05 -5.9589998e+04
+-2.2553747e+07 -2.9428676e+05 -2.2271424e+05
+-2.3066352e+07 -3.2242843e+05 -4.3704725e+05
+-2.2869168e+07 -3.3162276e+05 -6.3223232e+05
+-2.2238720e+07 -3.2148577e+05 -7.3545081e+05
+-2.0956554e+07 -2.9266287e+05 -6.9927380e+05
+-1.8488463e+07 -2.4721561e+05 -5.2855659e+05
+-1.4399326e+07 -1.8934974e+05 -2.9307106e+05
+-9.0294499e+06 -1.2622555e+05 -9.7511935e+04
+-3.9032766e+06 -6.7896403e+04 -5.6591659e+03
+-2.7783131e+05 -1.1188938e+04 -3.5544553e+02
+-1.5712930e+04 -6.3335054e+02 -2.2111020e+01
+-8.8513048e+02 -3.5669837e+01 -1.1728586e+00
+-4.5001294e+01 -1.8117576e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9820078e+01 -1.4079633e+00 -2.6585142e-01
+-7.8316650e+02 -2.7741831e+01 -6.0309359e+00
+-1.3901569e+04 -4.9416648e+02 -1.1703338e+02
+-2.4573542e+05 -8.7821983e+03 -2.1779788e+03
+-3.7777957e+06 -5.5112730e+04 -7.2423031e+03
+-9.0302275e+06 -1.0539970e+05 1.1489321e+04
+-1.4358598e+07 -1.6111496e+05 1.6657133e+04
+-1.8068688e+07 -2.1260181e+05 -4.1560041e+04
+-1.9891164e+07 -2.5281012e+05 -1.7710881e+05
+-2.0422808e+07 -2.7777579e+05 -3.5772425e+05
+-2.0284825e+07 -2.8571256e+05 -5.2343948e+05
+-1.9710392e+07 -2.7620039e+05 -6.1176016e+05
+-1.8519650e+07 -2.5006231e+05 -5.8207448e+05
+-1.6274594e+07 -2.0965400e+05 -4.3876450e+05
+-1.2634733e+07 -1.5927393e+05 -2.4131030e+05
+-7.9234624e+06 -1.0543253e+05 -7.7965844e+04
+-3.4542072e+06 -5.6457984e+04 -1.7592555e+03
+-2.4016990e+05 -9.1952542e+03 -1.2943056e+02
+-1.3557465e+04 -5.1881228e+02 -9.1731634e+00
+-7.6198842e+02 -2.9205753e+01 -5.3432706e-01
+-3.8657779e+01 -1.4861537e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.0559398e+01 -7.8817073e-01 -4.5510177e-01
+-6.0284792e+02 -1.5275703e+01 -1.0077331e+01
+-1.0741815e+04 -2.6840268e+02 -1.9273156e+02
+-1.9061239e+05 -4.7335791e+03 -3.5891225e+03
+-2.9651943e+06 -3.0234958e+04 -4.6357322e+03
+-7.0710409e+06 -5.8467436e+04 1.4462168e+04
+-1.1268304e+07 -9.0737852e+04 2.4599584e+04
+-1.4235306e+07 -1.2162404e+05 -1.3888693e+04
+-1.5733618e+07 -1.4642296e+05 -1.1350932e+05
+-1.6201379e+07 -1.6198899e+05 -2.5050594e+05
+-1.6109844e+07 -1.6670160e+05 -3.7863144e+05
+-1.5638930e+07 -1.6017786e+05 -4.4897145e+05
+-1.4654202e+07 -1.4324736e+05 -4.2952016e+05
+-1.2828955e+07 -1.1807529e+05 -3.2337649e+05
+-9.9219391e+06 -8.8100226e+04 -1.7611472e+05
+-6.2078260e+06 -5.7549115e+04 -5.4810285e+04
+-2.7104628e+06 -3.0697744e+04 8.9995185e+02
+-1.8605549e+05 -4.9419633e+03 2.4428469e+01
+-1.0460239e+04 -2.8123265e+02 -3.1420497e-01
+-5.8555144e+02 -1.6068241e+01 -9.2505439e-02
+-2.9611983e+01 -8.3203348e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.9571685e+01 -2.6852354e-01 -3.4091622e-01
+-3.8672103e+02 -4.8432030e+00 -7.5582604e+00
+-6.9258413e+03 -7.8704386e+01 -1.4571017e+02
+-1.2393815e+05 -1.2942066e+03 -2.7575213e+03
+-1.9051935e+06 -8.0692778e+03 7.3888197e+01
+-4.6174539e+06 -1.5745066e+04 1.8920183e+04
+-7.4060856e+06 -2.5810201e+04 3.3626761e+04
+-9.3807168e+06 -3.7040747e+04 1.5874768e+04
+-1.0371862e+07 -4.7130165e+04 -4.4823216e+04
+-1.0671171e+07 -5.3815566e+04 -1.3393893e+05
+-1.0598716e+07 -5.5672483e+04 -2.2068588e+05
+-1.0278684e+07 -5.2327021e+04 -2.7157180e+05
+-9.6212627e+06 -4.4515283e+04 -2.6412426e+05
+-8.4070347e+06 -3.4066848e+04 -1.9954287e+05
+-6.4774353e+06 -2.3447339e+04 -1.0758554e+05
+-4.0224889e+06 -1.4622756e+04 -3.2153576e+04
+-1.7273176e+06 -8.0174554e+03 1.2773350e+03
+-1.2064702e+05 -1.3577868e+03 5.2571806e+01
+-6.7241271e+03 -8.3286442e+01 1.7646243e+00
+-3.7441460e+02 -5.1641119e+00 3.3297886e-02
+-1.8900336e+01 -2.8775043e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.2677225e+00 -4.6740109e-02 -1.1328624e-01
+-1.7989678e+02 -6.3139877e-01 -2.4225865e+00
+-3.1958041e+03 -6.2249518e+00 -4.5203797e+01
+-5.8165606e+04 -3.6559663e+01 -8.3670419e+02
+-8.7703657e+05 6.9896072e+02 3.8473438e+03
+-2.2466919e+06 2.1437547e+03 1.9559292e+04
+-3.6567935e+06 2.0518665e+03 3.4717060e+04
+-4.6300718e+06 -5.5944927e+02 3.2406094e+04
+-5.0818833e+06 -4.4729203e+03 5.1213951e+03
+-5.1824083e+06 -7.6469637e+03 -4.0552405e+04
+-5.1166544e+06 -8.5602613e+03 -8.8317710e+04
+-4.9571824e+06 -6.7440341e+03 -1.1958117e+05
+-4.6526583e+06 -2.8895750e+03 -1.2122442e+05
+-4.0756134e+06 1.2407772e+03 -9.2836638e+04
+-3.1297399e+06 3.4933277e+03 -4.9550950e+04
+-1.9088973e+06 2.8611431e+03 -1.4184442e+04
+-7.7422050e+05 7.9624860e+02 2.8875338e+02
+-5.6315676e+04 -5.5469884e+01 9.7535892e+00
+-3.0849662e+03 -7.9606071e+00 1.3952021e-01
+-1.7315040e+02 -7.6240592e-01 -1.2003240e-02
+-8.8970613e+00 -5.4739495e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.5977153e+00 -6.5294875e-03 -4.2281213e-03
+-4.2921912e+01 -7.2354860e-02 -2.2765338e-02
+-5.8985169e+02 -5.3136427e-01 9.0495253e-01
+-7.0800150e+03 -1.6464801e+00 3.7076638e+01
+-6.3861565e+04 3.3844180e+01 1.3154683e+03
+-1.4562038e+05 1.0282923e+02 4.7591647e+03
+-2.2958631e+05 9.2624226e+01 8.4773661e+03
+-2.9493348e+05 -5.5874568e+01 9.3564950e+03
+-3.3475633e+05 -2.8009831e+02 5.7570719e+03
+-3.5283732e+05 -4.6372100e+02 -1.4704475e+03
+-3.5493124e+05 -5.1608780e+02 -9.6257645e+03
+-3.4355725e+05 -4.0904054e+02 -1.5458939e+04
+-3.1726670e+05 -1.8539758e+02 -1.6599000e+04
+-2.7261041e+05 5.0103405e+01 -1.2861400e+04
+-2.0849943e+05 1.7617169e+02 -6.7095889e+03
+-1.3191720e+05 1.4406680e+02 -1.8259129e+03
+-5.9084099e+04 4.0466952e+01 -8.0609723e+01
+-6.6823101e+03 -2.8838013e+00 -5.6119862e+00
+-5.5967622e+02 -7.5961532e-01 -3.9726632e-01
+-4.0768204e+01 -9.6928445e-02 -2.3986760e-02
+-2.4661617e+00 -8.3733123e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.9316504e-01 -7.9596383e-04 2.1466689e-03
+-6.7966917e+00 -7.6425123e-03 3.7337220e-02
+-7.2313141e+01 -4.5056067e-02 5.1461409e-01
+-6.1863680e+02 -8.5747058e-02 6.4724611e+00
+-3.5831979e+03 1.5535356e+00 7.9760140e+01
+-8.2125315e+03 4.6502849e+00 2.6763803e+02
+-1.3032956e+04 3.6549508e+00 4.7221346e+02
+-1.6819141e+04 -4.7652586e+00 5.2094967e+02
+-1.9140711e+04 -1.7453659e+01 3.1697860e+02
+-2.0192295e+04 -2.7916016e+01 -9.4660328e+01
+-2.0305862e+04 -3.0868594e+01 -5.5872389e+02
+-1.9635097e+04 -2.4659415e+01 -8.8688810e+02
+-1.8099647e+04 -1.1876433e+01 -9.4498938e+02
+-1.5504234e+04 1.3849383e+00 -7.2866364e+02
+-1.1800342e+04 8.4345999e+00 -3.8287693e+02
+-7.4059132e+03 7.0008644e+00 -1.1180893e+02
+-3.2777863e+03 1.9868630e+00 -1.0500721e+01
+-5.7385674e+02 -1.5150172e-01 -1.0273301e+00
+-6.7528164e+01 -6.6147236e-02 -9.3784373e-02
+-6.3649111e+00 -1.0724449e-02 -6.6463586e-03
+-4.6224586e-01 -1.0780816e-03 0.0000000e+00
+0 0 0
+0 0 0
+-7.0536518e-02 -7.1159920e-05 5.5173190e-04
+-8.2449330e-01 -6.1599854e-04 7.4089091e-03
+-7.0477264e+00 -3.1117426e-03 7.4497219e-02
+-4.6520737e+01 -4.9117789e-03 6.5722296e-01
+-2.0568557e+02 5.9721960e-02 4.8948429e+00
+-4.6326437e+02 1.7633302e-01 1.5116284e+01
+-7.3716122e+02 1.0598071e-01 2.6239864e+01
+-9.5525209e+02 -3.0884167e-01 2.8838139e+01
+-1.0902634e+03 -9.2864026e-01 1.7300027e+01
+-1.1515538e+03 -1.4416274e+00 -6.0057023e+00
+-1.1578510e+03 -1.5848551e+00 -3.2236303e+01
+-1.1183338e+03 -1.2757323e+00 -5.0587975e+01
+-1.0286863e+03 -6.4705821e-01 -5.3543659e+01
+-8.7819442e+02 -1.9865925e-03 -4.1193136e+01
+-6.6530746e+02 3.4186937e-01 -2.1931524e+01
+-4.1569848e+02 2.9249472e-01 -6.9207819e+00
+-1.8623274e+02 8.3665455e-02 -9.8973995e-01
+-4.2555680e+01 -7.5123359e-03 -1.2341814e-01
+-6.4883768e+00 -4.4845020e-03 -1.3663488e-02
+-7.6170351e-01 -8.6983609e-04 -1.1200446e-03
+-6.5272311e-02 -9.8286522e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.0467291e-03 0.0000000e+00 6.9228630e-05
+-7.2521991e-02 0.0000000e+00 8.1054593e-04
+-5.2543560e-01 0.0000000e+00 6.8285955e-03
+-2.8844594e+00 0.0000000e+00 4.8486035e-02
+-1.0774228e+01 0.0000000e+00 2.7058572e-01
+-2.3675662e+01 0.0000000e+00 7.7473874e-01
+-3.7648313e+01 0.0000000e+00 1.3192235e+00
+-4.8935297e+01 0.0000000e+00 1.4408478e+00
+-5.5998151e+01 0.0000000e+00 8.5084230e-01
+-5.9220096e+01 0.0000000e+00 -3.3753403e-01
+-5.9540996e+01 0.0000000e+00 -1.6721675e+00
+-5.7446950e+01 0.0000000e+00 -2.5975698e+00
+-5.2732769e+01 0.0000000e+00 -2.7352791e+00
+-4.4878611e+01 0.0000000e+00 -2.1044348e+00
+-3.3876738e+01 0.0000000e+00 -1.1382386e+00
+-2.1146640e+01 0.0000000e+00 -3.8533451e-01
+-9.6723251e+00 0.0000000e+00 -7.0974682e-02
+-2.6095568e+00 0.0000000e+00 -1.0540028e-02
+-4.7813205e-01 0.0000000e+00 -1.3364921e-03
+-6.6240026e-02 0.0000000e+00 -1.2149723e-04
+-6.4499989e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.1674513e-03 6.4094916e-05 5.6627335e-05
+-7.3682153e-02 5.4098782e-04 6.7580127e-04
+-5.3318340e-01 2.5995619e-03 5.8240387e-03
+-2.9237042e+00 2.8283432e-03 4.2240525e-02
+-1.0910285e+01 -6.0635166e-02 2.3893204e-01
+-2.3949031e+01 -1.7209253e-01 6.8439383e-01
+-3.8008888e+01 -1.1356726e-01 1.1585354e+00
+-4.9277278e+01 2.6311693e-01 1.2373994e+00
+-5.6247646e+01 8.3645508e-01 6.5043958e-01
+-5.9386025e+01 1.3172093e+00 -5.0084073e-01
+-5.9704186e+01 1.4490540e+00 -1.7867050e+00
+-5.7709912e+01 1.1432287e+00 -2.6669722e+00
+-5.3156916e+01 5.2654357e-01 -2.7693686e+00
+-4.5433845e+01 -9.8839398e-02 -2.1152955e+00
+-3.4438001e+01 -4.1602887e-01 -1.1380036e+00
+-2.1564269e+01 -3.3772490e-01 -3.8264951e-01
+-9.8814917e+00 -1.0439621e-01 -6.9086678e-02
+-2.6710072e+00 2.3495406e-03 -9.9857594e-03
+-4.9049343e-01 3.6096734e-03 -1.2340519e-03
+-6.8122417e-02 7.5842841e-04 -1.1008923e-04
+-6.6485423e-03 8.8454107e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.1636215e-02 7.3417960e-04 4.2961236e-04
+-8.3637329e-01 6.8982103e-03 5.9523861e-03
+-7.1402499e+00 3.9051654e-02 6.2023850e-02
+-4.7079052e+01 5.7364642e-02 5.6580257e-01
+-2.0797844e+02 -1.5108216e+00 4.3088601e+00
+-4.6805381e+02 -4.3912980e+00 1.3317501e+01
+-7.4338723e+02 -3.5624439e+00 2.2992386e+01
+-9.6082911e+02 4.0928127e+00 2.4739716e+01
+-1.0938218e+03 1.5827439e+01 1.3307129e+01
+-1.1533634e+03 2.5636620e+01 -9.2027124e+00
+-1.1595563e+03 2.8368595e+01 -3.4416935e+01
+-1.1219921e+03 2.2231953e+01 -5.1847360e+01
+-1.0355865e+03 9.6841111e+00 -5.4104688e+01
+-8.8787171e+02 -3.2043075e+00 -4.1321930e+01
+-6.7540223e+02 -9.7611762e+00 -2.1882021e+01
+-4.2325612e+02 -7.8050405e+00 -6.8570640e+00
+-1.8988662e+02 -2.3537578e+00 -9.5382256e-01
+-4.3468150e+01 7.5859578e-02 -1.1486292e-01
+-6.6428745e+00 5.5579456e-02 -1.2334981e-02
+-7.8188422e-01 9.5940640e-03 -9.8990956e-04
+-6.7165279e-02 9.9151228e-04 0.0000000e+00
+0 0 0
+0 0 0
+-4.9998413e-01 6.2035678e-03 1.3496966e-03
+-6.8825065e+00 6.7736783e-02 2.6325952e-02
+-7.3132791e+01 4.8451952e-01 4.0050785e-01
+-6.2496045e+02 1.3553397e+00 5.4261855e+00
+-3.6173299e+03 -3.1937619e+01 6.9984978e+01
+-8.2872542e+03 -9.4797270e+01 2.3511362e+02
+-1.3128008e+04 -8.6179441e+01 4.1278310e+02
+-1.6897591e+04 4.8953287e+01 4.4637240e+02
+-1.9179972e+04 2.5622605e+02 2.4523464e+02
+-2.0198868e+04 4.2847070e+02 -1.5102701e+02
+-2.0309721e+04 4.7722564e+02 -5.9602577e+02
+-1.9673228e+04 3.7158942e+02 -9.0725179e+02
+-1.8196251e+04 1.5193869e+02 -9.5290221e+02
+-1.5653464e+04 -7.7500665e+01 -7.2937566e+02
+-1.1962438e+04 -1.9585170e+02 -3.8118955e+02
+-7.5284832e+03 -1.5589720e+02 -1.1052738e+02
+-3.3348061e+03 -4.5927375e+01 -9.9339330e+00
+-5.8485907e+02 2.0691413e+00 -9.2488989e-01
+-6.8991213e+01 6.7483372e-01 -8.1095201e-02
+-6.5207369e+00 8.9917096e-02 -5.5924852e-03
+-4.7478576e-01 7.9389300e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.6291339e+00 4.5559291e-02 -7.9371581e-03
+-4.3390619e+01 6.1162702e-01 -8.3120693e-02
+-5.9553468e+02 5.9679673e+00 1.1642509e-01
+-7.1401109e+03 3.4097782e+01 2.7469865e+01
+-6.4369518e+04 -6.4734112e+02 1.1508269e+03
+-1.4678948e+05 -1.9444871e+03 4.1696191e+03
+-2.3103466e+05 -1.8620571e+03 7.3938449e+03
+-2.9601295e+05 5.1446726e+02 8.0077920e+03
+-3.3509789e+05 4.1291965e+03 4.4763830e+03
+-3.5258161e+05 7.1079474e+03 -2.4588019e+03
+-3.5461519e+05 7.9638931e+03 -1.0261522e+04
+-3.4383574e+05 6.1752050e+03 -1.5786650e+04
+-3.1858430e+05 2.3888137e+03 -1.6705927e+04
+-2.7490251e+05 -1.6426740e+03 -1.2848654e+04
+-2.1110186e+05 -3.7751359e+03 -6.6669364e+03
+-1.3391034e+05 -3.0284282e+03 -1.8012673e+03
+-5.9981966e+04 -8.7682965e+02 -7.2498226e+01
+-6.7970023e+03 4.8848151e+01 -4.5850208e+00
+-5.7081715e+02 7.5315780e+00 -3.0083787e-01
+-4.1700251e+01 7.3851440e-01 -1.7388065e-02
+-2.5293194e+00 5.3708545e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.3639176e+00 2.6537576e-01 -1.2362142e-01
+-1.8157896e+02 4.7767566e+00 -2.6065661e+00
+-3.2219513e+03 7.7452397e+01 -4.7943795e+01
+-5.8573226e+04 1.2707075e+03 -8.7693355e+02
+-8.8947120e+05 7.6163625e+03 3.2939875e+03
+-2.2771088e+06 1.4588058e+04 1.7178370e+04
+-3.6955797e+06 2.3614213e+04 3.0488223e+04
+-4.6607374e+06 3.3714115e+04 2.7954197e+04
+-5.0951423e+06 4.2924975e+04 2.4174595e+03
+-5.1815700e+06 4.9175767e+04 -4.0488672e+04
+-5.1145100e+06 5.1020828e+04 -8.5690023e+04
+-4.9693239e+06 4.7983706e+04 -1.1535696e+05
+-4.6897555e+06 4.0740959e+04 -1.1661197e+05
+-4.1360365e+06 3.1099994e+04 -8.8931556e+04
+-3.1968586e+06 2.1446244e+04 -4.7034222e+04
+-1.9594138e+06 1.3558752e+04 -1.3104917e+04
+-7.9625538e+05 7.6430000e+03 4.1012954e+02
+-5.7233327e+04 1.3588692e+03 1.7759655e+01
+-3.1438830e+03 8.3545452e+01 6.6255238e-01
+-1.7695990e+02 5.1936697e+00 1.6896702e-02
+-9.1166365e+00 2.9018043e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.9732959e+01 7.8315646e-01 -3.5650705e-01
+-3.8963774e+02 1.5148436e+01 -7.8114715e+00
+-6.9729682e+03 2.6560495e+02 -1.4883710e+02
+-1.2470223e+05 4.6751808e+03 -2.7892285e+03
+-1.9295649e+06 2.9064061e+04 1.3443878e+02
+-4.6755646e+06 5.5417291e+04 1.7415852e+04
+-7.4814405e+06 8.5249599e+04 3.1135374e+04
+-9.4452865e+06 1.1381829e+05 1.5600822e+04
+-1.0410782e+07 1.3701665e+05 -3.9571369e+04
+-1.0691388e+07 1.5191884e+05 -1.2209792e+05
+-1.0622806e+07 1.5679515e+05 -2.0378239e+05
+-1.0332908e+07 1.5107250e+05 -2.5264799e+05
+-9.7221425e+06 1.3547348e+05 -2.4650071e+05
+-8.5486315e+06 1.1209874e+05 -1.8590271e+05
+-6.6268363e+06 8.4197506e+04 -9.9252914e+04
+-4.1350721e+06 5.5599210e+04 -2.8710214e+04
+-1.7800799e+06 3.0120838e+04 1.5742223e+03
+-1.2277262e+05 4.9867266e+03 7.1969443e+01
+-6.8561500e+03 2.8453398e+02 3.0038340e+00
+-3.8262010e+02 1.6302943e+01 1.0006013e-01
+-1.9356535e+01 8.4644009e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.0708323e+01 1.4060866e+00 -4.7400520e-01
+-6.0545971e+02 2.7653862e+01 -1.0367640e+01
+-1.0782314e+04 4.9164392e+02 -1.9590691e+02
+-1.9124258e+05 8.7218838e+03 -3.6124180e+03
+-2.9895692e+06 5.3494030e+04 -3.6674383e+03
+-7.1349021e+06 1.0104599e+05 1.4565099e+04
+-1.1347044e+07 1.5331744e+05 2.5237924e+04
+-1.4290230e+07 2.0168438e+05 -7.7039568e+03
+-1.5747110e+07 2.3987485e+05 -9.7070038e+04
+-1.6187782e+07 2.6413767e+05 -2.2288572e+05
+-1.6105354e+07 2.7248467e+05 -3.4306591e+05
+-1.5684070e+07 2.6422091e+05 -4.1107356e+05
+-1.4774599e+07 2.4001377e+05 -3.9521686e+05
+-1.3016877e+07 2.0211484e+05 -2.9731028e+05
+-1.0129214e+07 1.5455070e+05 -1.6038869e+05
+-6.3675127e+06 1.0328347e+05 -4.8386218e+04
+-2.7861374e+06 5.6020298e+04 1.3889006e+03
+-1.8906841e+05 9.3323495e+03 5.6190943e+01
+-1.0649154e+04 5.2793730e+02 1.7030261e+00
+-5.9736440e+02 2.9803359e+01 1.5571625e-02
+-3.0270547e+01 1.5205756e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9847967e+01 1.7172963e+00 -2.8332113e-01
+-7.8334580e+02 3.3829276e+01 -6.2794345e+00
+-1.3897990e+04 6.0104470e+02 -1.1925923e+02
+-2.4557697e+05 1.0627175e+04 -2.1829972e+03
+-3.7854063e+06 6.4390072e+04 -5.4685001e+03
+-9.0684814e+06 1.2088119e+05 1.2950218e+04
+-1.4394461e+07 1.8216434e+05 1.9966666e+04
+-1.8055409e+07 2.3806113e+05 -2.9689314e+04
+-1.9812026e+07 2.8169090e+05 -1.5064387e+05
+-2.0302795e+07 3.0930975e+05 -3.1582846e+05
+-2.0176365e+07 3.1907255e+05 -4.7087617e+05
+-1.9670869e+07 3.1029542e+05 -5.5647330e+05
+-1.8587171e+07 2.8345744e+05 -5.3239609e+05
+-1.6444191e+07 2.4051171e+05 -4.0119556e+05
+-1.2848026e+07 1.8538937e+05 -2.1874082e+05
+-8.0947990e+06 1.2469837e+05 -6.8819163e+04
+-3.5337273e+06 6.7874303e+04 -1.1530492e+03
+-2.4331727e+05 1.1416569e+04 -8.9904730e+01
+-1.3760616e+04 6.4783533e+02 -6.6520776e+00
+-7.7502133e+02 3.6582961e+01 -3.9877437e-01
+-3.9398774e+01 1.8627962e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6158173e+01 1.4189088e+00 1.4401280e-01
+-9.0561430e+02 2.7897712e+01 2.6647681e+00
+-1.6034198e+04 4.9403335e+02 4.2462795e+01
+-2.8285001e+05 8.6963209e+03 6.9822344e+02
+-4.2631339e+06 5.2273057e+04 -5.0087594e+03
+-1.0324127e+07 9.7779764e+04 1.3833914e+04
+-1.6388431e+07 1.4678550e+05 1.8276432e+04
+-2.0475008e+07 1.9113660e+05 -4.4203366e+04
+-2.2352229e+07 2.2553960e+05 -1.8957011e+05
+-2.2808614e+07 2.4728033e+05 -3.8527941e+05
+-2.2622801e+07 2.5508830e+05 -5.6766211e+05
+-2.2076854e+07 2.4846869e+05 -6.6770222e+05
+-2.0930014e+07 2.2767346e+05 -6.3845828e+05
+-1.8597783e+07 1.9397537e+05 -4.8260163e+05
+-1.4581202e+07 1.5018570e+05 -2.6552254e+05
+-9.1852497e+06 1.0141508e+05 -8.6439429e+04
+-3.9721337e+06 5.5349591e+04 -5.0575775e+03
+-2.8053159e+05 9.3747923e+03 -3.1551903e+02
+-1.5895358e+04 5.3426742e+02 -1.9523724e+01
+-8.9730298e+02 3.0263795e+01 -1.0320582e+00
+-4.5714265e+01 1.5437094e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.9704518e+01 5.4929867e-01 5.5808874e-01
+-9.7433049e+02 1.0782674e+01 1.1200359e+01
+-1.7236967e+04 1.9051996e+02 1.9388664e+02
+-3.0392289e+05 3.3446477e+03 3.3405001e+03
+-4.4989588e+06 2.0026529e+04 -3.6870124e+03
+-1.1001057e+07 3.7398491e+04 1.5790622e+04
+-1.7472684e+07 5.6041616e+04 1.9006884e+04
+-2.1768585e+07 7.2852037e+04 -5.1216835e+04
+-2.3672801e+07 8.5853581e+04 -2.1170028e+05
+-2.4076023e+07 9.4063512e+04 -4.2650634e+05
+-2.3841953e+07 9.7034731e+04 -6.2624110e+05
+-2.3280920e+07 9.4587906e+04 -7.3588176e+05
+-2.2125061e+07 8.6795624e+04 -7.0419016e+05
+-1.9721454e+07 7.4091350e+04 -5.3365430e+05
+-1.5497864e+07 5.7486025e+04 -2.9538503e+05
+-9.7550788e+06 3.8891951e+04 -9.8264872e+04
+-4.1817262e+06 2.1255510e+04 -8.4278295e+03
+-3.0154355e+05 3.6128311e+03 -5.1236101e+02
+-1.7096292e+04 2.0643351e+02 -3.0850376e+01
+-9.6600821e+02 1.1718753e+01 -1.5924775e+00
+-4.9264729e+01 5.9866366e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0834662e+01 -5.4929866e-01 7.2601262e-01
+-9.9626672e+02 -1.0782674e+01 1.4635201e+01
+-1.7622072e+04 -1.9051995e+02 2.5425369e+02
+-3.1069956e+05 -3.3446477e+03 4.3833933e+03
+-4.5687937e+06 -2.0026529e+04 -3.0386916e+03
+-1.1213393e+07 -3.7398491e+04 1.6747889e+04
+-1.7814577e+07 -5.6041615e+04 1.9645241e+04
+-2.2172419e+07 -7.2852038e+04 -5.3134188e+04
+-2.4078076e+07 -8.5853579e+04 -2.1870835e+05
+-2.4458235e+07 -9.4063512e+04 -4.3999636e+05
+-2.4206009e+07 -9.7034730e+04 -6.4567719e+05
+-2.3641422e+07 -9.4587906e+04 -7.5869727e+05
+-2.2487271e+07 -8.6795622e+04 -7.2633858e+05
+-2.0066877e+07 -7.4091350e+04 -5.5097545e+05
+-1.5781952e+07 -5.7486025e+04 -3.0561383e+05
+-9.9302772e+06 -3.8891951e+04 -1.0241678e+05
+-4.2422880e+06 -2.1255510e+04 -9.7353381e+03
+-3.0829210e+05 -3.6128311e+03 -5.8922710e+02
+-1.7480412e+04 -2.0643351e+02 -3.5298767e+01
+-9.8792502e+02 -1.1718753e+01 -1.8135335e+00
+-5.0395749e+01 -5.9866366e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9704518e+01 -1.4189088e+00 5.5808874e-01
+-9.7433049e+02 -2.7897712e+01 1.1200359e+01
+-1.7236967e+04 -4.9403335e+02 1.9388664e+02
+-3.0392289e+05 -8.6963209e+03 3.3405000e+03
+-4.4989588e+06 -5.2273056e+04 -3.6870127e+03
+-1.1001057e+07 -9.7779763e+04 1.5790622e+04
+-1.7472684e+07 -1.4678550e+05 1.9006882e+04
+-2.1768585e+07 -1.9113659e+05 -5.1216830e+04
+-2.3672801e+07 -2.2553960e+05 -2.1170028e+05
+-2.4076023e+07 -2.4728033e+05 -4.2650634e+05
+-2.3841953e+07 -2.5508830e+05 -6.2624110e+05
+-2.3280920e+07 -2.4846869e+05 -7.3588176e+05
+-2.2125061e+07 -2.2767346e+05 -7.0419016e+05
+-1.9721454e+07 -1.9397537e+05 -5.3365430e+05
+-1.5497864e+07 -1.5018570e+05 -2.9538503e+05
+-9.7550788e+06 -1.0141508e+05 -9.8264872e+04
+-4.1817262e+06 -5.5349591e+04 -8.4278295e+03
+-3.0154355e+05 -9.3747923e+03 -5.1236102e+02
+-1.7096292e+04 -5.3426742e+02 -3.0850376e+01
+-9.6600821e+02 -3.0263795e+01 -1.5924775e+00
+-4.9264729e+01 -1.5437094e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6158173e+01 -1.7172963e+00 1.4401281e-01
+-9.0561430e+02 -3.3829276e+01 2.6647681e+00
+-1.6034198e+04 -6.0104470e+02 4.2462793e+01
+-2.8285001e+05 -1.0627175e+04 6.9822343e+02
+-4.2631339e+06 -6.4390072e+04 -5.0087590e+03
+-1.0324127e+07 -1.2088119e+05 1.3833915e+04
+-1.6388431e+07 -1.8216433e+05 1.8276431e+04
+-2.0475008e+07 -2.3806113e+05 -4.4203367e+04
+-2.2352229e+07 -2.8169090e+05 -1.8957010e+05
+-2.2808614e+07 -3.0930975e+05 -3.8527940e+05
+-2.2622801e+07 -3.1907256e+05 -5.6766212e+05
+-2.2076854e+07 -3.1029542e+05 -6.6770222e+05
+-2.0930014e+07 -2.8345744e+05 -6.3845828e+05
+-1.8597783e+07 -2.4051171e+05 -4.8260164e+05
+-1.4581202e+07 -1.8538937e+05 -2.6552254e+05
+-9.1852497e+06 -1.2469837e+05 -8.6439429e+04
+-3.9721337e+06 -6.7874303e+04 -5.0575776e+03
+-2.8053159e+05 -1.1416569e+04 -3.1551903e+02
+-1.5895358e+04 -6.4783533e+02 -1.9523725e+01
+-8.9730298e+02 -3.6582961e+01 -1.0320582e+00
+-4.5714265e+01 -1.8627962e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9847967e+01 -1.4060866e+00 -2.8332114e-01
+-7.8334580e+02 -2.7653862e+01 -6.2794345e+00
+-1.3897990e+04 -4.9164392e+02 -1.1925923e+02
+-2.4557697e+05 -8.7218838e+03 -2.1829972e+03
+-3.7854063e+06 -5.3494031e+04 -5.4685007e+03
+-9.0684814e+06 -1.0104598e+05 1.2950220e+04
+-1.4394461e+07 -1.5331744e+05 1.9966667e+04
+-1.8055409e+07 -2.0168438e+05 -2.9689317e+04
+-1.9812026e+07 -2.3987485e+05 -1.5064387e+05
+-2.0302795e+07 -2.6413767e+05 -3.1582846e+05
+-2.0176365e+07 -2.7248467e+05 -4.7087617e+05
+-1.9670869e+07 -2.6422091e+05 -5.5647330e+05
+-1.8587171e+07 -2.4001377e+05 -5.3239609e+05
+-1.6444191e+07 -2.0211483e+05 -4.0119556e+05
+-1.2848026e+07 -1.5455070e+05 -2.1874082e+05
+-8.0947990e+06 -1.0328347e+05 -6.8819164e+04
+-3.5337273e+06 -5.6020298e+04 -1.1530491e+03
+-2.4331727e+05 -9.3323495e+03 -8.9904732e+01
+-1.3760616e+04 -5.2793730e+02 -6.6520777e+00
+-7.7502133e+02 -2.9803360e+01 -3.9877436e-01
+-3.9398774e+01 -1.5205756e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.0708323e+01 -7.8315646e-01 -4.7400522e-01
+-6.0545971e+02 -1.5148436e+01 -1.0367641e+01
+-1.0782314e+04 -2.6560494e+02 -1.9590691e+02
+-1.9124258e+05 -4.6751807e+03 -3.6124180e+03
+-2.9895692e+06 -2.9064061e+04 -3.6674375e+03
+-7.1349021e+06 -5.5417292e+04 1.4565100e+04
+-1.1347044e+07 -8.5249599e+04 2.5237923e+04
+-1.4290230e+07 -1.1381829e+05 -7.7039594e+03
+-1.5747110e+07 -1.3701664e+05 -9.7070037e+04
+-1.6187782e+07 -1.5191884e+05 -2.2288572e+05
+-1.6105354e+07 -1.5679515e+05 -3.4306591e+05
+-1.5684070e+07 -1.5107249e+05 -4.1107356e+05
+-1.4774599e+07 -1.3547348e+05 -3.9521686e+05
+-1.3016877e+07 -1.1209875e+05 -2.9731028e+05
+-1.0129214e+07 -8.4197505e+04 -1.6038869e+05
+-6.3675127e+06 -5.5599209e+04 -4.8386218e+04
+-2.7861374e+06 -3.0120838e+04 1.3889006e+03
+-1.8906841e+05 -4.9867266e+03 5.6190941e+01
+-1.0649154e+04 -2.8453398e+02 1.7030258e+00
+-5.9736440e+02 -1.6302943e+01 1.5571626e-02
+-3.0270547e+01 -8.4644009e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.9732959e+01 -2.6537576e-01 -3.5650705e-01
+-3.8963774e+02 -4.7767566e+00 -7.8114715e+00
+-6.9729682e+03 -7.7452396e+01 -1.4883710e+02
+-1.2470223e+05 -1.2707075e+03 -2.7892285e+03
+-1.9295649e+06 -7.6163625e+03 1.3443882e+02
+-4.6755646e+06 -1.4588058e+04 1.7415852e+04
+-7.4814405e+06 -2.3614213e+04 3.1135374e+04
+-9.4452865e+06 -3.3714115e+04 1.5600822e+04
+-1.0410782e+07 -4.2924977e+04 -3.9571366e+04
+-1.0691388e+07 -4.9175768e+04 -1.2209793e+05
+-1.0622806e+07 -5.1020828e+04 -2.0378239e+05
+-1.0332908e+07 -4.7983706e+04 -2.5264799e+05
+-9.7221425e+06 -4.0740959e+04 -2.4650071e+05
+-8.5486315e+06 -3.1099994e+04 -1.8590271e+05
+-6.6268363e+06 -2.1446244e+04 -9.9252914e+04
+-4.1350721e+06 -1.3558752e+04 -2.8710214e+04
+-1.7800799e+06 -7.6429999e+03 1.5742223e+03
+-1.2277262e+05 -1.3588692e+03 7.1969442e+01
+-6.8561500e+03 -8.3545452e+01 3.0038340e+00
+-3.8262010e+02 -5.1936697e+00 1.0006013e-01
+-1.9356535e+01 -2.9018043e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.3639176e+00 -4.5559291e-02 -1.2362142e-01
+-1.8157896e+02 -6.1162703e-01 -2.6065661e+00
+-3.2219513e+03 -5.9679673e+00 -4.7943796e+01
+-5.8573226e+04 -3.4097783e+01 -8.7693354e+02
+-8.8947120e+05 6.4734112e+02 3.2939875e+03
+-2.2771088e+06 1.9444872e+03 1.7178369e+04
+-3.6955797e+06 1.8620571e+03 3.0488223e+04
+-4.6607374e+06 -5.1446731e+02 2.7954197e+04
+-5.0951423e+06 -4.1291965e+03 2.4174599e+03
+-5.1815700e+06 -7.1079473e+03 -4.0488672e+04
+-5.1145100e+06 -7.9638931e+03 -8.5690023e+04
+-4.9693239e+06 -6.1752050e+03 -1.1535696e+05
+-4.6897555e+06 -2.3888136e+03 -1.1661197e+05
+-4.1360365e+06 1.6426740e+03 -8.8931556e+04
+-3.1968586e+06 3.7751358e+03 -4.7034222e+04
+-1.9594138e+06 3.0284282e+03 -1.3104917e+04
+-7.9625538e+05 8.7682964e+02 4.1012952e+02
+-5.7233327e+04 -4.8848151e+01 1.7759655e+01
+-3.1438830e+03 -7.5315780e+00 6.6255240e-01
+-1.7695990e+02 -7.3851441e-01 1.6896698e-02
+-9.1166365e+00 -5.3708545e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.6291339e+00 -6.2035676e-03 -7.9371588e-03
+-4.3390619e+01 -6.7736782e-02 -8.3120683e-02
+-5.9553468e+02 -4.8451951e-01 1.1642501e-01
+-7.1401109e+03 -1.3553398e+00 2.7469866e+01
+-6.4369518e+04 3.1937619e+01 1.1508269e+03
+-1.4678948e+05 9.4797269e+01 4.1696191e+03
+-2.3103466e+05 8.6179446e+01 7.3938449e+03
+-2.9601295e+05 -4.8953293e+01 8.0077921e+03
+-3.3509789e+05 -2.5622605e+02 4.4763830e+03
+-3.5258161e+05 -4.2847070e+02 -2.4588020e+03
+-3.5461519e+05 -4.7722563e+02 -1.0261522e+04
+-3.4383574e+05 -3.7158942e+02 -1.5786650e+04
+-3.1858430e+05 -1.5193870e+02 -1.6705927e+04
+-2.7490251e+05 7.7500663e+01 -1.2848654e+04
+-2.1110186e+05 1.9585170e+02 -6.6669364e+03
+-1.3391034e+05 1.5589720e+02 -1.8012673e+03
+-5.9981966e+04 4.5927375e+01 -7.2498227e+01
+-6.7970023e+03 -2.0691414e+00 -4.5850209e+00
+-5.7081715e+02 -6.7483372e-01 -3.0083787e-01
+-4.1700251e+01 -8.9917097e-02 -1.7388065e-02
+-2.5293194e+00 -7.9389301e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.9998413e-01 -7.3417964e-04 1.3496965e-03
+-6.8825065e+00 -6.8982105e-03 2.6325954e-02
+-7.3132791e+01 -3.9051660e-02 4.0050783e-01
+-6.2496045e+02 -5.7364655e-02 5.4261855e+00
+-3.6173299e+03 1.5108216e+00 6.9984978e+01
+-8.2872542e+03 4.3912980e+00 2.3511362e+02
+-1.3128008e+04 3.5624437e+00 4.1278309e+02
+-1.6897591e+04 -4.0928123e+00 4.4637240e+02
+-1.9179972e+04 -1.5827439e+01 2.4523464e+02
+-2.0198868e+04 -2.5636620e+01 -1.5102701e+02
+-2.0309721e+04 -2.8368595e+01 -5.9602577e+02
+-1.9673228e+04 -2.2231953e+01 -9.0725179e+02
+-1.8196251e+04 -9.6841114e+00 -9.5290222e+02
+-1.5653464e+04 3.2043076e+00 -7.2937566e+02
+-1.1962438e+04 9.7611761e+00 -3.8118955e+02
+-7.5284832e+03 7.8050404e+00 -1.1052738e+02
+-3.3348061e+03 2.3537577e+00 -9.9339330e+00
+-5.8485907e+02 -7.5859584e-02 -9.2488989e-01
+-6.8991213e+01 -5.5579457e-02 -8.1095202e-02
+-6.5207369e+00 -9.5940641e-03 -5.5924852e-03
+-4.7478576e-01 -9.9151229e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.1636215e-02 -6.4094916e-05 4.2961238e-04
+-8.3637329e-01 -5.4098784e-04 5.9523858e-03
+-7.1402499e+00 -2.5995618e-03 6.2023852e-02
+-4.7079052e+01 -2.8283433e-03 5.6580257e-01
+-2.0797844e+02 6.0635165e-02 4.3088601e+00
+-4.6805381e+02 1.7209253e-01 1.3317501e+01
+-7.4338723e+02 1.1356726e-01 2.2992386e+01
+-9.6082911e+02 -2.6311694e-01 2.4739716e+01
+-1.0938218e+03 -8.3645506e-01 1.3307129e+01
+-1.1533634e+03 -1.3172093e+00 -9.2027124e+00
+-1.1595563e+03 -1.4490540e+00 -3.4416935e+01
+-1.1219921e+03 -1.1432287e+00 -5.1847360e+01
+-1.0355865e+03 -5.2654357e-01 -5.4104688e+01
+-8.8787171e+02 9.8839399e-02 -4.1321930e+01
+-6.7540223e+02 4.1602887e-01 -2.1882021e+01
+-4.2325612e+02 3.3772490e-01 -6.8570640e+00
+-1.8988662e+02 1.0439621e-01 -9.5382256e-01
+-4.3468150e+01 -2.3495413e-03 -1.1486292e-01
+-6.6428745e+00 -3.6096734e-03 -1.2334981e-02
+-7.8188422e-01 -7.5842841e-04 -9.8990957e-04
+-6.7165279e-02 -8.8454108e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.1674513e-03 0.0000000e+00 5.6627334e-05
+-7.3682153e-02 0.0000000e+00 6.7580127e-04
+-5.3318340e-01 0.0000000e+00 5.8240388e-03
+-2.9237042e+00 0.0000000e+00 4.2240526e-02
+-1.0910285e+01 0.0000000e+00 2.3893204e-01
+-2.3949031e+01 0.0000000e+00 6.8439383e-01
+-3.8008888e+01 0.0000000e+00 1.1585354e+00
+-4.9277278e+01 0.0000000e+00 1.2373994e+00
+-5.6247646e+01 0.0000000e+00 6.5043958e-01
+-5.9386025e+01 0.0000000e+00 -5.0084073e-01
+-5.9704186e+01 0.0000000e+00 -1.7867050e+00
+-5.7709912e+01 0.0000000e+00 -2.6669722e+00
+-5.3156916e+01 0.0000000e+00 -2.7693686e+00
+-4.5433845e+01 0.0000000e+00 -2.1152955e+00
+-3.4438001e+01 0.0000000e+00 -1.1380036e+00
+-2.1564269e+01 0.0000000e+00 -3.8264951e-01
+-9.8814917e+00 0.0000000e+00 -6.9086678e-02
+-2.6710072e+00 0.0000000e+00 -9.9857594e-03
+-4.9049343e-01 0.0000000e+00 -1.2340519e-03
+-6.8122417e-02 0.0000000e+00 -1.1008923e-04
+-6.6485423e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.2708663e-03 5.7902554e-05 4.5512395e-05
+-7.4668033e-02 4.8175999e-04 5.4963234e-04
+-5.3970177e-01 2.2663399e-03 4.8016688e-03
+-2.9563761e+00 2.2238980e-03 3.5249715e-02
+-1.1022465e+01 -5.3245865e-02 2.0067614e-01
+-2.4172777e+01 -1.4835307e-01 5.7277482e-01
+-3.8299822e+01 -9.4583748e-02 9.5829328e-01
+-4.9543820e+01 2.3895153e-01 9.8588441e-01
+-5.6425871e+01 7.4971314e-01 4.1439634e-01
+-5.9485247e+01 1.1801864e+00 -6.6656804e-01
+-5.9799859e+01 1.2913469e+00 -1.8622422e+00
+-5.7899722e+01 9.9361030e-01 -2.6660423e+00
+-5.3502060e+01 4.0455735e-01 -2.7254554e+00
+-4.5909860e+01 -1.8469717e-01 -2.0647429e+00
+-3.4930015e+01 -4.6846998e-01 -1.1042595e+00
+-2.1932872e+01 -3.6692627e-01 -3.6873038e-01
+-1.0065606e+01 -1.1931036e-01 -6.5305683e-02
+-2.7248497e+00 -2.2774094e-03 -9.1858077e-03
+-5.0129106e-01 2.7161422e-03 -1.1043281e-03
+-6.9764318e-02 6.3399826e-04 -9.6425816e-05
+-6.8216596e-03 7.6691503e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.2583351e-02 6.7442359e-04 3.3061533e-04
+-8.4651611e-01 6.2650565e-03 4.6901320e-03
+-7.2183549e+00 3.4936771e-02 5.0124642e-02
+-4.7544391e+01 5.0154441e-02 4.6753347e-01
+-2.0986604e+02 -1.3060587e+00 3.6079537e+00
+-4.7197066e+02 -3.7399886e+00 1.1116442e+01
+-7.4840707e+02 -2.9397254e+00 1.8981425e+01
+-9.6515358e+02 3.8358987e+00 1.9708948e+01
+-1.0962635e+03 1.4278593e+01 8.6217081e+00
+-1.1541759e+03 2.3063012e+01 -1.2448655e+01
+-1.1602558e+03 2.5384630e+01 -3.5842421e+01
+-1.1245212e+03 1.9420317e+01 -5.1740052e+01
+-1.0412097e+03 7.4336792e+00 -5.3146002e+01
+-8.9621508e+02 -4.7318609e+00 -4.0255472e+01
+-6.8429383e+02 -1.0641886e+01 -2.1190450e+01
+-4.2994571e+02 -8.2752256e+00 -6.5925614e+00
+-1.9310156e+02 -2.6042468e+00 -8.9268404e-01
+-4.4265560e+01 6.1351900e-03 -1.0368661e-01
+-6.7773796e+00 4.4295700e-02 -1.0761066e-02
+-7.9942675e-01 8.2573093e-03 -8.4184901e-04
+-6.8810364e-02 8.7992783e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.0591634e-01 5.8064545e-03 8.0018045e-04
+-6.9564796e+00 6.2969702e-02 1.8068651e-02
+-7.3830425e+01 4.4685729e-01 3.0378276e-01
+-6.3025576e+02 1.2673736e+00 4.3818737e+00
+-3.6453831e+03 -2.7284855e+01 5.8413951e+01
+-8.3483391e+03 -7.9948899e+01 1.9570776e+02
+-1.3204638e+04 -7.0655924e+01 3.4005388e+02
+-1.6958042e+04 4.8830383e+01 3.5551062e+02
+-1.9204604e+04 2.3303091e+02 1.6139086e+02
+-2.0193453e+04 3.8731180e+02 -2.0827255e+02
+-2.0301565e+04 4.2912189e+02 -6.2016554e+02
+-1.9696951e+04 3.2667896e+02 -9.0370148e+02
+-1.8275267e+04 1.1686876e+02 -9.3412052e+02
+-1.5783171e+04 -1.0007852e+02 -7.0906659e+02
+-1.2106141e+04 -2.0765303e+02 -3.6835242e+02
+-7.6374111e+03 -1.6168787e+02 -1.0601193e+02
+-3.3849390e+03 -4.9360721e+01 -9.1226280e+00
+-5.9443768e+02 1.2665688e+00 -8.0444970e-01
+-7.0259542e+01 5.7532063e-01 -6.7145439e-02
+-6.6556369e+00 8.0476868e-02 -4.4649084e-03
+-4.8564079e-01 7.2700512e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.6569272e+00 4.3237283e-02 -9.6375230e-03
+-4.3801936e+01 5.7893118e-01 -1.1428218e-01
+-6.0046133e+02 5.6374921e+00 -3.7827273e-01
+-7.1911879e+03 3.2452291e+01 1.9513828e+01
+-6.4786332e+04 -5.4874857e+02 9.5779107e+02
+-1.4774558e+05 -1.6277247e+03 3.4616667e+03
+-2.3220347e+05 -1.5189946e+03 6.0788159e+03
+-2.9683958e+05 5.7858730e+02 6.3756927e+03
+-3.3526034e+05 3.7858098e+03 2.9853663e+03
+-3.5220075e+05 6.4545222e+03 -3.4627031e+03
+-3.5417534e+05 7.1954414e+03 -1.0668871e+04
+-3.4394558e+05 5.4653944e+03 -1.5697747e+04
+-3.1966958e+05 1.8499379e+03 -1.6345540e+04
+-2.7691482e+05 -1.9668298e+03 -1.2466481e+04
+-2.1342652e+05 -3.9198686e+03 -6.4296085e+03
+-1.3569040e+05 -3.0874158e+03 -1.7238214e+03
+-6.0770177e+04 -9.2196843e+02 -6.3002795e+01
+-6.8963032e+03 4.1083210e+01 -3.5185592e+00
+-5.8042971e+02 6.8736529e+00 -2.0432985e-01
+-4.2503795e+01 6.9055141e-01 -1.0860934e-02
+-2.5837752e+00 5.0864938e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.4512657e+00 2.5331266e-01 -1.2272722e-01
+-1.8310200e+02 4.5496208e+00 -2.5703838e+00
+-3.2455357e+03 7.3583027e+01 -4.6931477e+01
+-5.8938947e+04 1.2039877e+03 -8.5274507e+02
+-9.0075549e+05 7.0170877e+03 2.8657143e+03
+-2.3038919e+06 1.3265568e+04 1.4755496e+04
+-3.7295791e+06 2.1237852e+04 2.5998098e+04
+-4.6876480e+06 3.0139415e+04 2.3347867e+04
+-5.1065948e+06 3.8338358e+04 2.4777618e+02
+-5.1801673e+06 4.4002494e+04 -3.8702957e+04
+-5.1116858e+06 4.5736756e+04 -8.0068427e+04
+-4.9796021e+06 4.3006729e+04 -1.0733158e+05
+-4.7234035e+06 3.6419277e+04 -1.0825286e+05
+-4.1917644e+06 2.7707282e+04 -8.2199016e+04
+-3.2590773e+06 1.9121317e+04 -4.3021500e+04
+-2.0061526e+06 1.2236816e+04 -1.1606936e+04
+-8.1636231e+05 7.0730433e+03 5.0498909e+02
+-5.8021938e+04 1.3103095e+03 2.4373224e+01
+-3.1945034e+03 8.0753929e+01 1.1133952e+00
+-1.8023190e+02 5.0333802e+00 4.2558486e-02
+-9.3051928e+00 2.8197965e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.9884750e+01 7.5047017e-01 -3.4536627e-01
+-3.9239545e+02 1.4485556e+01 -7.5235929e+00
+-7.0178366e+03 2.5340114e+02 -1.4247328e+02
+-1.2543592e+05 4.4507100e+03 -2.6555015e+03
+-1.9530543e+06 2.7100279e+04 7.5074248e+02
+-4.7292920e+06 5.1124529e+04 1.6619199e+04
+-7.5511964e+06 7.8107138e+04 2.9505826e+04
+-9.5064988e+06 1.0395648e+05 1.6901071e+04
+-1.0449546e+07 1.2514494e+05 -3.1140952e+04
+-1.0712736e+07 1.3901866e+05 -1.0480943e+05
+-1.0646457e+07 1.4383420e+05 -1.7925556e+05
+-1.0383093e+07 1.3889676e+05 -2.2496016e+05
+-9.8148593e+06 1.2482318e+05 -2.2064731e+05
+-8.6790041e+06 1.0360081e+05 -1.6616817e+05
+-6.7644439e+06 7.8237203e+04 -8.7676546e+04
+-4.2383203e+06 5.2132160e+04 -2.4323686e+04
+-1.8277310e+06 2.8608732e+04 1.7917455e+03
+-1.2460241e+05 4.8445819e+03 8.7264514e+01
+-6.9693467e+03 2.7717873e+02 4.0364021e+00
+-3.8963479e+02 1.5926611e+01 1.5786012e-01
+-1.9745775e+01 8.2907929e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.0856415e+01 1.3535092e+00 -4.5494650e-01
+-6.0810051e+02 2.6569083e+01 -9.8976743e+00
+-1.0824237e+04 4.7139512e+02 -1.8596891e+02
+-1.9191219e+05 8.3466160e+03 -3.4122584e+03
+-3.0144888e+06 5.0290505e+04 -1.6829366e+03
+-7.1958174e+06 9.4102218e+04 1.6254670e+04
+-1.1422762e+07 1.4198609e+05 2.8093293e+04
+-1.4346651e+07 1.8637513e+05 2.0957234e+03
+-1.5767185e+07 2.2177189e+05 -7.4456440e+04
+-1.6182177e+07 2.4470120e+05 -1.8574328e+05
+-1.6105425e+07 2.5308955e+05 -2.9492746e+05
+-1.5726991e+07 2.4605701e+05 -3.5916747e+05
+-1.4885112e+07 2.2412964e+05 -3.4796074e+05
+-1.3188958e+07 1.8941259e+05 -2.6169226e+05
+-1.0318736e+07 1.4560702e+05 -1.3953959e+05
+-6.5125694e+06 9.8064523e+04 -4.0415272e+04
+-2.8534877e+06 5.3745453e+04 1.7983544e+03
+-1.9162475e+05 9.1154259e+03 8.3852040e+01
+-1.0808677e+04 5.1703551e+02 3.5183655e+00
+-6.0730389e+02 2.9269191e+01 1.1527364e-01
+-3.0823367e+01 1.4971728e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9890253e+01 1.6605618e+00 -2.6476651e-01
+-7.8386797e+02 3.2656190e+01 -5.8297013e+00
+-1.3901652e+04 5.7915493e+02 -1.0992758e+02
+-2.4556341e+05 1.0222829e+04 -1.9997042e+03
+-3.7956578e+06 6.0928784e+04 -2.3864976e+03
+-9.1067327e+06 1.1336458e+05 1.6602434e+04
+-1.4432272e+07 1.6996928e+05 2.6430232e+04
+-1.8051560e+07 2.2172999e+05 -1.2773898e+04
+-1.9749724e+07 2.6254514e+05 -1.1584904e+05
+-2.0201445e+07 2.8889385e+05 -2.6139205e+05
+-2.0081488e+07 2.9879711e+05 -4.0197646e+05
+-1.9635054e+07 2.9136385e+05 -4.8309886e+05
+-1.8647055e+07 2.6692976e+05 -4.6601505e+05
+-1.6596828e+07 2.2730908e+05 -3.5127467e+05
+-1.3040321e+07 1.7611177e+05 -1.8948448e+05
+-8.2479641e+06 1.1931658e+05 -5.7571445e+04
+-3.6025839e+06 6.5564155e+04 -5.3356447e+02
+-2.4589279e+05 1.1206694e+04 -4.9309578e+01
+-1.3926334e+04 6.3749100e+02 -4.0468687e+00
+-7.8563376e+02 3.6092558e+01 -2.5780876e-01
+-4.0001688e+01 1.8422786e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6033359e+01 1.3771072e+00 1.5864125e-01
+-9.0285228e+02 2.7034961e+01 3.0178506e+00
+-1.5979776e+04 4.7799123e+02 4.9759462e+01
+-2.8181862e+05 8.4015412e+03 8.3965350e+02
+-4.2497789e+06 4.9705304e+04 -1.2918746e+03
+-1.0322663e+07 9.2163024e+04 1.8446241e+04
+-1.6364242e+07 1.3767647e+05 2.6550545e+04
+-2.0382544e+07 1.7898615e+05 -2.3169106e+04
+-2.2177161e+07 2.1136572e+05 -1.4705822e+05
+-2.2579667e+07 2.3223581e+05 -3.1934723e+05
+-2.2398988e+07 2.4020205e+05 -4.8456449e+05
+-2.1925306e+07 2.3460593e+05 -5.7935451e+05
+-2.0899500e+07 2.1559489e+05 -5.5853407e+05
+-1.8690919e+07 1.8434789e+05 -4.2243714e+05
+-1.4740766e+07 1.4344880e+05 -2.3020979e+05
+-9.3208509e+06 9.7545139e+04 -7.2837244e+04
+-4.0288402e+06 5.3725724e+04 -4.2923755e+03
+-2.8259077e+05 9.2394580e+03 -2.6596419e+02
+-1.6035201e+04 5.2774171e+02 -1.6371982e+01
+-9.0668608e+02 2.9966240e+01 -8.6255601e-01
+-4.6266526e+01 1.5319834e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.9432590e+01 5.3423175e-01 5.7094814e-01
+-9.6870620e+02 1.0472258e+01 1.1509357e+01
+-1.7132503e+04 1.8476369e+02 2.0027329e+02
+-3.0202426e+05 3.2392561e+03 3.4639349e+03
+-4.4651865e+06 1.9093978e+04 3.0290711e+02
+-1.0964581e+07 3.5346006e+04 2.0643899e+04
+-1.7394836e+07 5.2709683e+04 2.7762653e+04
+-2.1601706e+07 6.8414201e+04 -2.8543629e+04
+-2.3405136e+07 8.0689254e+04 -1.6553218e+05
+-2.3743224e+07 8.8595648e+04 -3.5469145e+05
+-2.3512502e+07 9.1635900e+04 -5.3557578e+05
+-2.3032113e+07 8.9568546e+04 -6.3934533e+05
+-2.2014515e+07 8.2428269e+04 -6.1672497e+05
+-1.9756728e+07 7.0616226e+04 -4.6771914e+05
+-1.5620547e+07 5.5062384e+04 -2.5664985e+05
+-9.8683427e+06 3.7510143e+04 -8.3350996e+04
+-4.2244321e+06 2.0685735e+04 -7.6050651e+03
+-3.0301885e+05 3.5687741e+03 -4.5908450e+02
+-1.7204522e+04 2.0434917e+02 -2.7461811e+01
+-9.7372056e+02 1.1627004e+01 -1.4102176e+00
+-4.9738220e+01 5.9525634e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0505018e+01 -5.3423174e-01 7.3881989e-01
+-9.8952512e+02 -1.0472257e+01 1.4941727e+01
+-1.7498186e+04 -1.8476369e+02 2.6058308e+02
+-3.0846623e+05 -3.2392561e+03 4.5057656e+03
+-4.5271200e+06 -1.9093978e+04 1.0200620e+03
+-1.1163290e+07 -3.5346006e+04 2.1608648e+04
+-1.7715977e+07 -5.2709682e+04 2.8427866e+04
+-2.1977059e+07 -6.8414201e+04 -3.0103014e+04
+-2.3775252e+07 -8.0689254e+04 -1.7154822e+05
+-2.4086127e+07 -8.8595650e+04 -3.6646399e+05
+-2.3836476e+07 -9.1635901e+04 -5.5272499e+05
+-2.3355374e+07 -8.9568545e+04 -6.5963586e+05
+-2.2345533e+07 -8.2428268e+04 -6.3651716e+05
+-2.0078939e+07 -7.0616226e+04 -4.8322296e+05
+-1.5889251e+07 -5.5062383e+04 -2.6579996e+05
+-1.0033961e+07 -3.7510143e+04 -8.7095694e+04
+-4.2791092e+06 -2.0685735e+04 -8.9029508e+03
+-3.0952226e+05 -3.5687741e+03 -5.3523721e+02
+-1.7575090e+04 -2.0434917e+02 -3.1860124e+01
+-9.9490274e+02 -1.1627004e+01 -1.6283957e+00
+-5.0833632e+01 -5.9525634e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9432590e+01 -1.3771072e+00 5.7094814e-01
+-9.6870620e+02 -2.7034961e+01 1.1509357e+01
+-1.7132503e+04 -4.7799123e+02 2.0027328e+02
+-3.0202426e+05 -8.4015412e+03 3.4639348e+03
+-4.4651865e+06 -4.9705304e+04 3.0290767e+02
+-1.0964581e+07 -9.2163024e+04 2.0643898e+04
+-1.7394836e+07 -1.3767647e+05 2.7762654e+04
+-2.1601706e+07 -1.7898615e+05 -2.8543626e+04
+-2.3405136e+07 -2.1136572e+05 -1.6553218e+05
+-2.3743224e+07 -2.3223581e+05 -3.5469145e+05
+-2.3512502e+07 -2.4020205e+05 -5.3557578e+05
+-2.3032113e+07 -2.3460593e+05 -6.3934533e+05
+-2.2014515e+07 -2.1559489e+05 -6.1672496e+05
+-1.9756728e+07 -1.8434789e+05 -4.6771915e+05
+-1.5620547e+07 -1.4344880e+05 -2.5664985e+05
+-9.8683427e+06 -9.7545140e+04 -8.3350997e+04
+-4.2244321e+06 -5.3725724e+04 -7.6050652e+03
+-3.0301885e+05 -9.2394580e+03 -4.5908450e+02
+-1.7204522e+04 -5.2774171e+02 -2.7461811e+01
+-9.7372056e+02 -2.9966240e+01 -1.4102176e+00
+-4.9738220e+01 -1.5319834e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6033359e+01 -1.6605618e+00 1.5864125e-01
+-9.0285228e+02 -3.2656190e+01 3.0178509e+00
+-1.5979776e+04 -5.7915493e+02 4.9759467e+01
+-2.8181862e+05 -1.0222829e+04 8.3965318e+02
+-4.2497789e+06 -6.0928784e+04 -1.2918744e+03
+-1.0322663e+07 -1.1336458e+05 1.8446241e+04
+-1.6364242e+07 -1.6996928e+05 2.6550548e+04
+-2.0382544e+07 -2.2172999e+05 -2.3169106e+04
+-2.2177161e+07 -2.6254514e+05 -1.4705822e+05
+-2.2579667e+07 -2.8889385e+05 -3.1934723e+05
+-2.2398988e+07 -2.9879712e+05 -4.8456449e+05
+-2.1925306e+07 -2.9136385e+05 -5.7935451e+05
+-2.0899500e+07 -2.6692975e+05 -5.5853407e+05
+-1.8690919e+07 -2.2730908e+05 -4.2243714e+05
+-1.4740766e+07 -1.7611177e+05 -2.3020979e+05
+-9.3208509e+06 -1.1931658e+05 -7.2837244e+04
+-4.0288402e+06 -6.5564155e+04 -4.2923754e+03
+-2.8259077e+05 -1.1206694e+04 -2.6596420e+02
+-1.6035201e+04 -6.3749100e+02 -1.6371982e+01
+-9.0668608e+02 -3.6092558e+01 -8.6255602e-01
+-4.6266526e+01 -1.8422786e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9890253e+01 -1.3535092e+00 -2.6476649e-01
+-7.8386797e+02 -2.6569083e+01 -5.8297013e+00
+-1.3901652e+04 -4.7139513e+02 -1.0992758e+02
+-2.4556341e+05 -8.3466160e+03 -1.9997041e+03
+-3.7956578e+06 -5.0290505e+04 -2.3864979e+03
+-9.1067327e+06 -9.4102218e+04 1.6602433e+04
+-1.4432272e+07 -1.4198608e+05 2.6430233e+04
+-1.8051560e+07 -1.8637513e+05 -1.2773900e+04
+-1.9749724e+07 -2.2177189e+05 -1.1584904e+05
+-2.0201445e+07 -2.4470120e+05 -2.6139205e+05
+-2.0081488e+07 -2.5308955e+05 -4.0197646e+05
+-1.9635054e+07 -2.4605701e+05 -4.8309886e+05
+-1.8647055e+07 -2.2412965e+05 -4.6601506e+05
+-1.6596828e+07 -1.8941259e+05 -3.5127467e+05
+-1.3040321e+07 -1.4560702e+05 -1.8948448e+05
+-8.2479641e+06 -9.8064522e+04 -5.7571445e+04
+-3.6025839e+06 -5.3745453e+04 -5.3356427e+02
+-2.4589279e+05 -9.1154259e+03 -4.9309583e+01
+-1.3926334e+04 -5.1703551e+02 -4.0468693e+00
+-7.8563376e+02 -2.9269191e+01 -2.5780875e-01
+-4.0001688e+01 -1.4971728e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.0856415e+01 -7.5047017e-01 -4.5494650e-01
+-6.0810051e+02 -1.4485556e+01 -9.8976744e+00
+-1.0824237e+04 -2.5340114e+02 -1.8596891e+02
+-1.9191219e+05 -4.4507100e+03 -3.4122583e+03
+-3.0144888e+06 -2.7100279e+04 -1.6829359e+03
+-7.1958174e+06 -5.1124529e+04 1.6254669e+04
+-1.1422762e+07 -7.8107137e+04 2.8093293e+04
+-1.4346651e+07 -1.0395648e+05 2.0957229e+03
+-1.5767185e+07 -1.2514494e+05 -7.4456439e+04
+-1.6182177e+07 -1.3901865e+05 -1.8574328e+05
+-1.6105425e+07 -1.4383420e+05 -2.9492746e+05
+-1.5726991e+07 -1.3889675e+05 -3.5916747e+05
+-1.4885112e+07 -1.2482319e+05 -3.4796074e+05
+-1.3188958e+07 -1.0360081e+05 -2.6169226e+05
+-1.0318736e+07 -7.8237201e+04 -1.3953959e+05
+-6.5125694e+06 -5.2132159e+04 -4.0415272e+04
+-2.8534877e+06 -2.8608732e+04 1.7983544e+03
+-1.9162475e+05 -4.8445819e+03 8.3852035e+01
+-1.0808677e+04 -2.7717872e+02 3.5183655e+00
+-6.0730389e+02 -1.5926611e+01 1.1527363e-01
+-3.0823367e+01 -8.2907929e-01 0.0000000e+00
+0 0 0
+0 0 0
+-1.9884750e+01 -2.5331266e-01 -3.4536627e-01
+-3.9239545e+02 -4.5496208e+00 -7.5235929e+00
+-7.0178366e+03 -7.3583027e+01 -1.4247328e+02
+-1.2543592e+05 -1.2039877e+03 -2.6555015e+03
+-1.9530543e+06 -7.0170877e+03 7.5074252e+02
+-4.7292920e+06 -1.3265568e+04 1.6619198e+04
+-7.5511964e+06 -2.1237852e+04 2.9505827e+04
+-9.5064988e+06 -3.0139415e+04 1.6901070e+04
+-1.0449546e+07 -3.8338359e+04 -3.1140952e+04
+-1.0712736e+07 -4.4002495e+04 -1.0480943e+05
+-1.0646457e+07 -4.5736754e+04 -1.7925555e+05
+-1.0383093e+07 -4.3006731e+04 -2.2496017e+05
+-9.8148593e+06 -3.6419275e+04 -2.2064731e+05
+-8.6790041e+06 -2.7707282e+04 -1.6616817e+05
+-6.7644439e+06 -1.9121317e+04 -8.7676545e+04
+-4.2383203e+06 -1.2236815e+04 -2.4323686e+04
+-1.8277310e+06 -7.0730433e+03 1.7917455e+03
+-1.2460241e+05 -1.3103095e+03 8.7264514e+01
+-6.9693467e+03 -8.0753929e+01 4.0364020e+00
+-3.8963479e+02 -5.0333802e+00 1.5786012e-01
+-1.9745775e+01 -2.8197965e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.4512657e+00 -4.3237283e-02 -1.2272722e-01
+-1.8310200e+02 -5.7893118e-01 -2.5703839e+00
+-3.2455357e+03 -5.6374920e+00 -4.6931477e+01
+-5.8938947e+04 -3.2452291e+01 -8.5274506e+02
+-9.0075549e+05 5.4874857e+02 2.8657143e+03
+-2.3038919e+06 1.6277247e+03 1.4755496e+04
+-3.7295791e+06 1.5189947e+03 2.5998098e+04
+-4.6876480e+06 -5.7858723e+02 2.3347866e+04
+-5.1065948e+06 -3.7858098e+03 2.4777560e+02
+-5.1801673e+06 -6.4545221e+03 -3.8702957e+04
+-5.1116858e+06 -7.1954414e+03 -8.0068426e+04
+-4.9796021e+06 -5.4653944e+03 -1.0733158e+05
+-4.7234035e+06 -1.8499381e+03 -1.0825286e+05
+-4.1917644e+06 1.9668298e+03 -8.2199016e+04
+-3.2590773e+06 3.9198686e+03 -4.3021500e+04
+-2.0061526e+06 3.0874158e+03 -1.1606936e+04
+-8.1636231e+05 9.2196842e+02 5.0498910e+02
+-5.8021938e+04 -4.1083210e+01 2.4373224e+01
+-3.1945034e+03 -6.8736530e+00 1.1133952e+00
+-1.8023190e+02 -6.9055141e-01 4.2558485e-02
+-9.3051928e+00 -5.0864938e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.6569272e+00 -5.8064543e-03 -9.6375230e-03
+-4.3801936e+01 -6.2969698e-02 -1.1428218e-01
+-6.0046133e+02 -4.4685724e-01 -3.7827294e-01
+-7.1911879e+03 -1.2673734e+00 1.9513830e+01
+-6.4786332e+04 2.7284855e+01 9.5779107e+02
+-1.4774558e+05 7.9948900e+01 3.4616667e+03
+-2.3220347e+05 7.0655925e+01 6.0788159e+03
+-2.9683958e+05 -4.8830381e+01 6.3756927e+03
+-3.3526034e+05 -2.3303088e+02 2.9853663e+03
+-3.5220075e+05 -3.8731177e+02 -3.4627032e+03
+-3.5417534e+05 -4.2912188e+02 -1.0668871e+04
+-3.4394558e+05 -3.2667896e+02 -1.5697747e+04
+-3.1966958e+05 -1.1686877e+02 -1.6345540e+04
+-2.7691482e+05 1.0007852e+02 -1.2466481e+04
+-2.1342652e+05 2.0765304e+02 -6.4296085e+03
+-1.3569040e+05 1.6168787e+02 -1.7238214e+03
+-6.0770177e+04 4.9360721e+01 -6.3002794e+01
+-6.8963032e+03 -1.2665687e+00 -3.5185592e+00
+-5.8042971e+02 -5.7532062e-01 -2.0432985e-01
+-4.2503795e+01 -8.0476869e-02 -1.0860934e-02
+-2.5837752e+00 -7.2700513e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.0591634e-01 -6.7442361e-04 8.0018055e-04
+-6.9564796e+00 -6.2650566e-03 1.8068653e-02
+-7.3830425e+01 -3.4936774e-02 3.0378272e-01
+-6.3025576e+02 -5.0154436e-02 4.3818738e+00
+-3.6453831e+03 1.3060587e+00 5.8413951e+01
+-8.3483391e+03 3.7399888e+00 1.9570776e+02
+-1.3204638e+04 2.9397260e+00 3.4005388e+02
+-1.6958042e+04 -3.8358979e+00 3.5551062e+02
+-1.9204604e+04 -1.4278593e+01 1.6139086e+02
+-2.0193453e+04 -2.3063012e+01 -2.0827256e+02
+-2.0301565e+04 -2.5384629e+01 -6.2016554e+02
+-1.9696951e+04 -1.9420317e+01 -9.0370149e+02
+-1.8275267e+04 -7.4336791e+00 -9.3412052e+02
+-1.5783171e+04 4.7318609e+00 -7.0906659e+02
+-1.2106141e+04 1.0641886e+01 -3.6835242e+02
+-7.6374111e+03 8.2752257e+00 -1.0601193e+02
+-3.3849390e+03 2.6042468e+00 -9.1226280e+00
+-5.9443768e+02 -6.1351724e-03 -8.0444970e-01
+-7.0259542e+01 -4.4295700e-02 -6.7145442e-02
+-6.6556369e+00 -8.2573092e-03 -4.4649083e-03
+-4.8564079e-01 -8.7992785e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.2583351e-02 -5.7902553e-05 3.3061536e-04
+-8.4651611e-01 -4.8175999e-04 4.6901320e-03
+-7.2183549e+00 -2.2663399e-03 5.0124641e-02
+-4.7544391e+01 -2.2238979e-03 4.6753347e-01
+-2.0986604e+02 5.3245865e-02 3.6079537e+00
+-4.7197066e+02 1.4835307e-01 1.1116442e+01
+-7.4840707e+02 9.4583740e-02 1.8981425e+01
+-9.6515358e+02 -2.3895153e-01 1.9708948e+01
+-1.0962635e+03 -7.4971313e-01 8.6217081e+00
+-1.1541759e+03 -1.1801864e+00 -1.2448655e+01
+-1.1602558e+03 -1.2913469e+00 -3.5842421e+01
+-1.1245212e+03 -9.9361029e-01 -5.1740052e+01
+-1.0412097e+03 -4.0455736e-01 -5.3146002e+01
+-8.9621508e+02 1.8469717e-01 -4.0255472e+01
+-6.8429383e+02 4.6846998e-01 -2.1190450e+01
+-4.2994571e+02 3.6692627e-01 -6.5925614e+00
+-1.9310156e+02 1.1931036e-01 -8.9268404e-01
+-4.4265560e+01 2.2774091e-03 -1.0368661e-01
+-6.7773796e+00 -2.7161422e-03 -1.0761066e-02
+-7.9942675e-01 -6.3399825e-04 -8.4184903e-04
+-6.8810364e-02 -7.6691500e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.2708663e-03 0.0000000e+00 4.5512396e-05
+-7.4668033e-02 0.0000000e+00 5.4963234e-04
+-5.3970177e-01 0.0000000e+00 4.8016688e-03
+-2.9563761e+00 0.0000000e+00 3.5249715e-02
+-1.1022465e+01 0.0000000e+00 2.0067614e-01
+-2.4172777e+01 0.0000000e+00 5.7277482e-01
+-3.8299822e+01 0.0000000e+00 9.5829328e-01
+-4.9543820e+01 0.0000000e+00 9.8588441e-01
+-5.6425871e+01 0.0000000e+00 4.1439634e-01
+-5.9485247e+01 0.0000000e+00 -6.6656804e-01
+-5.9799859e+01 0.0000000e+00 -1.8622422e+00
+-5.7899722e+01 0.0000000e+00 -2.6660423e+00
+-5.3502060e+01 0.0000000e+00 -2.7254554e+00
+-4.5909860e+01 0.0000000e+00 -2.0647429e+00
+-3.4930015e+01 0.0000000e+00 -1.1042595e+00
+-2.1932872e+01 0.0000000e+00 -3.6873038e-01
+-1.0065606e+01 0.0000000e+00 -6.5305682e-02
+-2.7248497e+00 0.0000000e+00 -9.1858077e-03
+-5.0129106e-01 0.0000000e+00 -1.1043281e-03
+-6.9764318e-02 0.0000000e+00 -9.6425816e-05
+-6.8216596e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.3593298e-03 5.2621188e-05 3.5842379e-05
+-7.5502765e-02 4.3774173e-04 4.3283245e-04
+-5.4514742e-01 2.0976704e-03 3.7808137e-03
+-2.9832616e+00 2.9290218e-03 2.7737249e-02
+-1.1113386e+01 -3.8763458e-02 1.5742170e-01
+-2.4352079e+01 -1.0800606e-01 4.4472966e-01
+-3.8529610e+01 -5.2400302e-02 7.2691779e-01
+-4.9747613e+01 2.3487371e-01 6.9583659e-01
+-5.6549810e+01 6.7033344e-01 1.4944205e-01
+-5.9537515e+01 1.0355746e+00 -8.3386439e-01
+-5.9847424e+01 1.1182915e+00 -1.9045907e+00
+-5.8031808e+01 8.3306535e-01 -2.6055698e+00
+-5.3777097e+01 2.8535380e-01 -2.6158870e+00
+-4.6308877e+01 -2.5389129e-01 -1.9629788e+00
+-3.5350710e+01 -4.9934921e-01 -1.0429346e+00
+-2.2249492e+01 -3.8056770e-01 -3.4574631e-01
+-1.0222940e+01 -1.2832680e-01 -6.0085940e-02
+-2.7705419e+00 -6.1751512e-03 -8.2185544e-03
+-5.1040891e-01 1.8579927e-03 -9.5869225e-04
+-7.1146864e-02 5.0550081e-04 -8.1646526e-05
+-6.9672425e-03 6.3936362e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.3401081e-02 6.1777906e-04 2.5257190e-04
+-8.5517910e-01 5.7424889e-03 3.6108201e-03
+-7.2840911e+00 3.2553280e-02 3.8891478e-02
+-4.7929040e+01 6.1476888e-02 3.6499245e-01
+-2.1139559e+02 -9.6550150e-01 2.8212768e+00
+-4.7510509e+02 -2.7610824e+00 8.6087776e+00
+-7.5236451e+02 -1.8625242e+00 1.4376341e+01
+-9.6844025e+02 3.9594398e+00 1.3938440e+01
+-1.0978786e+03 1.2843184e+01 3.3807547e+00
+-1.1543313e+03 2.0294991e+01 -1.5723211e+01
+-1.1602834e+03 2.2047632e+01 -3.6624959e+01
+-1.1261820e+03 1.6347251e+01 -5.0478298e+01
+-1.0456972e+03 5.2071747e+00 -5.0912674e+01
+-9.0324467e+02 -5.9399898e+00 -3.8196987e+01
+-6.9192783e+02 -1.1088793e+01 -1.9973543e+01
+-4.3570406e+02 -8.4284465e+00 -6.1673090e+00
+-1.9584462e+02 -2.7395143e+00 -8.1306424e-01
+-4.4939413e+01 -5.4492002e-02 -9.0894092e-02
+-6.8903843e+00 3.3039203e-02 -9.0706196e-03
+-8.1412268e-01 6.8183642e-03 -6.8755127e-04
+-7.0186964e-02 7.5298483e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.1111823e-01 5.3562714e-03 4.6340350e-04
+-7.0206545e+00 5.8170047e-02 1.2210750e-02
+-7.4426292e+01 4.1779725e-01 2.2283317e-01
+-6.3468012e+02 1.3548169e+00 3.3538504e+00
+-3.6681345e+03 -2.0385451e+01 4.5525192e+01
+-8.3971665e+03 -5.9544256e+01 1.5113583e+02
+-1.3264954e+04 -4.7520919e+01 2.5711010e+02
+-1.7003650e+04 5.4800373e+01 2.5187726e+02
+-1.9218941e+04 2.1109702e+02 6.7960191e+01
+-2.0181183e+04 3.4195645e+02 -2.6597149e+02
+-2.0286426e+04 3.7402775e+02 -6.3309067e+02
+-1.9710102e+04 2.7640534e+02 -8.7999785e+02
+-1.8338571e+04 8.1546754e+01 -8.9303356e+02
+-1.5893265e+04 -1.1747930e+02 -6.7139981e+02
+-1.2230216e+04 -2.1196120e+02 -3.4645248e+02
+-7.7314691e+03 -1.6189322e+02 -9.8929667e+01
+-3.4276173e+03 -5.0845013e+01 -8.1458541e+00
+-6.0248200e+02 5.1969474e-01 -6.7571599e-01
+-7.1317903e+01 4.6866870e-01 -5.2984368e-02
+-6.7679126e+00 6.9456316e-02 -3.3466302e-03
+-4.9466830e-01 6.4338680e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.6818796e+00 3.9985311e-02 -9.6766036e-03
+-4.4168035e+01 5.3584098e-01 -1.2124786e-01
+-6.0478743e+02 5.2500602e+00 -6.2740606e-01
+-7.2349723e+03 3.1501084e+01 1.3010707e+01
+-6.5125308e+04 -4.1270413e+02 7.4430577e+02
+-1.4850946e+05 -1.2175988e+03 2.6662345e+03
+-2.3312275e+05 -1.0503492e+03 4.5883460e+03
+-2.9745868e+05 7.3831882e+02 4.5239247e+03
+-3.3530736e+05 3.4522686e+03 1.3297664e+03
+-3.5177129e+05 5.7157937e+03 -4.4735334e+03
+-3.5368664e+05 6.2931722e+03 -1.0881380e+04
+-3.4394215e+05 4.6500294e+03 -1.5258431e+04
+-3.2054574e+05 1.2953056e+03 -1.5596029e+04
+-2.7863860e+05 -2.2089871e+03 -1.1780745e+04
+-2.1544708e+05 -3.9370914e+03 -6.0350538e+03
+-1.3723372e+05 -3.0487957e+03 -1.6048262e+03
+-6.1438934e+04 -9.3404308e+02 -5.2871112e+01
+-6.9789295e+03 3.2760732e+01 -2.4858057e+00
+-5.8838534e+02 6.0526551e+00 -1.1416490e-01
+-4.3167792e+01 6.2412960e-01 -4.8404836e-03
+-2.6287624e+00 4.6580570e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.5324015e+00 2.3390259e-01 -1.1278152e-01
+-1.8451264e+02 4.1913461e+00 -2.3576432e+00
+-3.2673143e+03 6.7602636e+01 -4.2931608e+01
+-5.9275533e+04 1.1028513e+03 -7.7769621e+02
+-9.1076476e+05 6.3183810e+03 2.5004837e+03
+-2.3266815e+06 1.1860740e+04 1.2211733e+04
+-3.7583417e+06 1.8805213e+04 2.1118718e+04
+-4.7105736e+06 2.6481961e+04 1.8300649e+04
+-5.1164696e+06 3.3571322e+04 -1.9435671e+03
+-5.1788609e+06 3.8522493e+04 -3.6056663e+04
+-5.1089532e+06 4.0059965e+04 -7.2556114e+04
+-4.9884372e+06 3.7633907e+04 -9.6704888e+04
+-4.7533276e+06 3.1769754e+04 -9.7255300e+04
+-4.2418241e+06 2.4073712e+04 -7.3478340e+04
+-3.3151142e+06 1.6611582e+04 -3.7990127e+04
+-2.0480857e+06 1.0748323e+04 -9.8541843e+03
+-8.3407902e+05 6.3581649e+03 5.7031518e+02
+-5.8668970e+04 1.2208030e+03 2.9305820e+01
+-3.2360363e+03 7.5422556e+01 1.4688016e+00
+-1.8291604e+02 4.7135469e+00 6.3527981e-02
+-9.4598514e+00 2.6476716e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0032554e+01 6.9463537e-01 -3.1292847e-01
+-3.9508839e+02 1.3378255e+01 -6.8068961e+00
+-7.0618634e+03 2.3346438e+02 -1.2864186e+02
+-1.2616003e+05 4.0909688e+03 -2.3926558e+03
+-1.9752985e+06 2.4529053e+04 1.6408829e+03
+-4.7776784e+06 4.5930092e+04 1.5957915e+04
+-7.6139870e+06 6.9805423e+04 2.7748308e+04
+-9.5630909e+06 9.2658804e+04 1.8163577e+04
+-1.0487427e+07 1.1151732e+05 -2.1902256e+04
+-1.0735024e+07 1.2405404e+05 -8.5145407e+04
+-1.0669539e+07 1.2860847e+05 -1.5061196e+05
+-1.0428463e+07 1.2442961e+05 -1.9203743e+05
+-9.8974938e+06 1.1202467e+05 -1.8965784e+05
+-8.7951881e+06 9.3214662e+04 -1.4261488e+05
+-6.8870141e+06 7.0715540e+04 -7.4148621e+04
+-4.3297488e+06 4.7482487e+04 -1.9454296e+04
+-1.8690911e+06 2.6341270e+04 1.9226686e+03
+-1.2610133e+05 4.5446169e+03 9.7774606e+01
+-7.0617021e+03 2.6074425e+02 4.8083070e+00
+-3.9534136e+02 1.5025049e+01 2.0338303e-01
+-2.0061819e+01 7.8419507e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1013481e+01 1.2577355e+00 -4.0603432e-01
+-6.1093682e+02 2.4640576e+01 -8.8320490e+00
+-1.0870045e+04 4.3625066e+02 -1.6581050e+02
+-1.9265667e+05 7.7085722e+03 -3.0389395e+03
+-3.0395944e+06 4.5817476e+04 7.7825869e+02
+-7.2526154e+06 8.5149125e+04 1.8357200e+04
+-1.1493679e+07 1.2795876e+05 3.1120688e+04
+-1.4402880e+07 1.6771308e+05 1.2294894e+04
+-1.5792853e+07 1.9967761e+05 -5.0197453e+04
+-1.6184306e+07 2.2072599e+05 -1.4474106e+05
+-1.6109871e+07 2.2882108e+05 -2.4050749e+05
+-1.5766590e+07 2.2298408e+05 -2.9946228e+05
+-1.4983031e+07 2.0360583e+05 -2.9312405e+05
+-1.3341011e+07 1.7259408e+05 -2.2044955e+05
+-1.0485936e+07 1.3327062e+05 -1.1580479e+05
+-6.6395176e+06 9.0337451e+04 -3.1711560e+04
+-2.9108976e+06 4.9935145e+04 2.1044881e+03
+-1.9367490e+05 8.5935594e+03 1.0569979e+02
+-1.0936000e+04 4.8875203e+02 5.0141179e+00
+-6.1520975e+02 2.7745117e+01 1.9991283e-01
+-3.1262098e+01 1.4228386e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9962764e+01 1.5493936e+00 -2.1914769e-01
+-7.8500569e+02 3.0416968e+01 -4.8578245e+00
+-1.3916680e+04 5.3843198e+02 -9.2011236e+01
+-2.4575624e+05 9.4869637e+03 -1.6775725e+03
+-3.8086059e+06 5.5829398e+04 1.2585926e+03
+-9.1443096e+06 1.0320174e+05 2.0782924e+04
+-1.4470851e+07 1.5417727e+05 3.3143508e+04
+-1.8056288e+07 2.0091844e+05 4.6660268e+03
+-1.9704479e+07 2.3810658e+05 -7.9008217e+04
+-2.0120064e+07 2.6252113e+05 -2.0218410e+05
+-2.0001721e+07 2.7217196e+05 -3.2530214e+05
+-1.9603379e+07 2.6604970e+05 -4.0004297e+05
+-1.8697664e+07 2.4435961e+05 -3.9018737e+05
+-1.6728848e+07 2.0873513e+05 -2.9430881e+05
+-1.3207195e+07 1.6241449e+05 -1.5657815e+05
+-8.3795534e+06 1.1069234e+05 -4.5343687e+04
+-3.6593363e+06 6.1294901e+04 4.8973217e+01
+-2.4785264e+05 1.0613289e+04 -1.0901297e+01
+-1.4052163e+04 6.0524437e+02 -1.5650270e+00
+-7.9368698e+02 3.4355948e+01 -1.2263531e-01
+-4.0459326e+01 1.7578411e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.5960607e+01 1.2892444e+00 1.8739695e-01
+-9.0113271e+02 2.5270737e+01 3.6140618e+00
+-1.5944233e+04 4.4605585e+02 6.0447752e+01
+-2.8112441e+05 7.8278549e+03 1.0253511e+03
+-4.2416271e+06 4.5747847e+04 2.9550737e+03
+-1.0324316e+07 8.4283141e+04 2.3526338e+04
+-1.6346937e+07 1.2547638e+05 3.4921485e+04
+-2.0307894e+07 1.6298474e+05 -1.7947443e+03
+-2.2030975e+07 1.9265865e+05 -1.0253225e+05
+-2.2383472e+07 2.1211273e+05 -2.4831813e+05
+-2.2202136e+07 2.1991994e+05 -3.9291795e+05
+-2.1787294e+07 2.1532504e+05 -4.8020503e+05
+-2.0865759e+07 1.9838356e+05 -4.6796991e+05
+-1.8766034e+07 1.7015361e+05 -3.5427299e+05
+-1.4874881e+07 1.3295582e+05 -1.9069975e+05
+-9.4337521e+06 9.0927044e+04 -5.8033205e+04
+-4.0725895e+06 5.0449547e+04 -3.4384834e+03
+-2.8398664e+05 8.7821646e+03 -2.1148457e+02
+-1.6131269e+04 5.0277500e+02 -1.2947109e+01
+-9.1321499e+02 2.8617484e+01 -6.7974428e-01
+-4.6654734e+01 1.4663052e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.9228051e+01 5.0109726e-01 5.8360810e-01
+-9.6442124e+02 9.8085423e+00 1.1760841e+01
+-1.7052091e+04 1.7278731e+02 2.0461744e+02
+-3.0055198e+05 3.0249046e+03 3.5352828e+03
+-4.4382662e+06 1.7616909e+04 4.7459901e+03
+-1.0933798e+07 3.2404123e+04 2.5842465e+04
+-1.7328080e+07 4.8160974e+04 3.6401711e+04
+-2.1458985e+07 6.2460643e+04 -5.7958078e+03
+-2.3174472e+07 7.3743438e+04 -1.1754493e+05
+-2.3452029e+07 8.1135817e+04 -2.7776237e+05
+-2.3218412e+07 8.4123549e+04 -4.3605634e+05
+-2.2803814e+07 8.2427895e+04 -5.3145810e+05
+-2.1905659e+07 7.6050800e+04 -5.1798123e+05
+-1.9776664e+07 6.5351872e+04 -3.9324419e+05
+-1.5718616e+07 5.1167203e+04 -2.1338626e+05
+-9.9587796e+06 3.5052617e+04 -6.7074917e+04
+-4.2539531e+06 1.9470312e+04 -6.5746829e+03
+-3.0381640e+05 3.3990897e+03 -3.9405610e+02
+-1.7267445e+04 1.9505652e+02 -2.3414299e+01
+-9.7844532e+02 1.1123797e+01 -1.1958604e+00
+-5.0038489e+01 5.7071368e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0248129e+01 -5.0109726e-01 7.4530544e-01
+-9.8422617e+02 -9.8085423e+00 1.5063443e+01
+-1.7400140e+04 -1.7278731e+02 2.6259183e+02
+-3.0668985e+05 -3.0249046e+03 4.5360245e+03
+-4.4928450e+06 -1.7616909e+04 5.4947985e+03
+-1.1119743e+07 -3.2404122e+04 2.6756624e+04
+-1.7629897e+07 -4.8160973e+04 3.6998750e+04
+-2.1808024e+07 -6.2460647e+04 -7.1153529e+03
+-2.3512214e+07 -7.3743434e+04 -1.2266688e+05
+-2.3758678e+07 -8.1135822e+04 -2.8784450e+05
+-2.3505227e+07 -8.4123549e+04 -4.5084587e+05
+-2.3092301e+07 -8.2427893e+04 -5.4906266e+05
+-2.2207277e+07 -7.6050800e+04 -5.3521773e+05
+-2.0076697e+07 -6.5351872e+04 -4.0675566e+05
+-1.5972326e+07 -5.1167203e+04 -2.2134580e+05
+-1.0114849e+07 -3.5052617e+04 -7.0353076e+04
+-4.3027070e+06 -1.9470312e+04 -7.8146843e+03
+-3.1007206e+05 -3.3990897e+03 -4.6670890e+02
+-1.7624082e+04 -1.9505652e+02 -2.7604143e+01
+-9.9885588e+02 -1.1123797e+01 -1.4034100e+00
+-5.1095615e+01 -5.7071367e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9228051e+01 -1.2892444e+00 5.8360809e-01
+-9.6442124e+02 -2.5270737e+01 1.1760842e+01
+-1.7052091e+04 -4.4605585e+02 2.0461743e+02
+-3.0055198e+05 -7.8278549e+03 3.5352827e+03
+-4.4382662e+06 -4.5747846e+04 4.7459903e+03
+-1.0933798e+07 -8.4283140e+04 2.5842464e+04
+-1.7328080e+07 -1.2547638e+05 3.6401711e+04
+-2.1458985e+07 -1.6298473e+05 -5.7958024e+03
+-2.3174472e+07 -1.9265864e+05 -1.1754494e+05
+-2.3452029e+07 -2.1211272e+05 -2.7776236e+05
+-2.3218412e+07 -2.1991994e+05 -4.3605634e+05
+-2.2803814e+07 -2.1532504e+05 -5.3145811e+05
+-2.1905659e+07 -1.9838355e+05 -5.1798123e+05
+-1.9776664e+07 -1.7015361e+05 -3.9324419e+05
+-1.5718616e+07 -1.3295582e+05 -2.1338626e+05
+-9.9587796e+06 -9.0927044e+04 -6.7074916e+04
+-4.2539531e+06 -5.0449547e+04 -6.5746829e+03
+-3.0381640e+05 -8.7821646e+03 -3.9405610e+02
+-1.7267445e+04 -5.0277500e+02 -2.3414299e+01
+-9.7844532e+02 -2.8617484e+01 -1.1958604e+00
+-5.0038489e+01 -1.4663052e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.5960607e+01 -1.5493936e+00 1.8739695e-01
+-9.0113271e+02 -3.0416968e+01 3.6140619e+00
+-1.5944233e+04 -5.3843198e+02 6.0447753e+01
+-2.8112441e+05 -9.4869637e+03 1.0253510e+03
+-4.2416271e+06 -5.5829398e+04 2.9550743e+03
+-1.0324316e+07 -1.0320174e+05 2.3526336e+04
+-1.6346937e+07 -1.5417727e+05 3.4921486e+04
+-2.0307894e+07 -2.0091843e+05 -1.7947427e+03
+-2.2030975e+07 -2.3810658e+05 -1.0253225e+05
+-2.2383472e+07 -2.6252113e+05 -2.4831813e+05
+-2.2202136e+07 -2.7217197e+05 -3.9291795e+05
+-2.1787294e+07 -2.6604971e+05 -4.8020503e+05
+-2.0865759e+07 -2.4435961e+05 -4.6796991e+05
+-1.8766034e+07 -2.0873513e+05 -3.5427299e+05
+-1.4874881e+07 -1.6241448e+05 -1.9069975e+05
+-9.4337521e+06 -1.1069234e+05 -5.8033206e+04
+-4.0725895e+06 -6.1294901e+04 -3.4384835e+03
+-2.8398664e+05 -1.0613289e+04 -2.1148457e+02
+-1.6131269e+04 -6.0524437e+02 -1.2947109e+01
+-9.1321499e+02 -3.4355948e+01 -6.7974428e-01
+-4.6654734e+01 -1.7578411e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.9962764e+01 -1.2577355e+00 -2.1914768e-01
+-7.8500569e+02 -2.4640576e+01 -4.8578245e+00
+-1.3916680e+04 -4.3625066e+02 -9.2011235e+01
+-2.4575624e+05 -7.7085722e+03 -1.6775725e+03
+-3.8086059e+06 -4.5817476e+04 1.2585932e+03
+-9.1443096e+06 -8.5149125e+04 2.0782922e+04
+-1.4470851e+07 -1.2795877e+05 3.3143507e+04
+-1.8056288e+07 -1.6771308e+05 4.6660268e+03
+-1.9704479e+07 -1.9967761e+05 -7.9008218e+04
+-2.0120064e+07 -2.2072599e+05 -2.0218410e+05
+-2.0001721e+07 -2.2882108e+05 -3.2530215e+05
+-1.9603379e+07 -2.2298408e+05 -4.0004297e+05
+-1.8697664e+07 -2.0360584e+05 -3.9018737e+05
+-1.6728848e+07 -1.7259408e+05 -2.9430881e+05
+-1.3207195e+07 -1.3327062e+05 -1.5657815e+05
+-8.3795534e+06 -9.0337450e+04 -4.5343687e+04
+-3.6593363e+06 -4.9935145e+04 4.8973245e+01
+-2.4785264e+05 -8.5935594e+03 -1.0901293e+01
+-1.4052163e+04 -4.8875203e+02 -1.5650271e+00
+-7.9368698e+02 -2.7745117e+01 -1.2263529e-01
+-4.0459326e+01 -1.4228386e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.1013481e+01 -6.9463537e-01 -4.0603432e-01
+-6.1093682e+02 -1.3378255e+01 -8.8320490e+00
+-1.0870045e+04 -2.3346438e+02 -1.6581050e+02
+-1.9265667e+05 -4.0909688e+03 -3.0389395e+03
+-3.0395944e+06 -2.4529053e+04 7.7825878e+02
+-7.2526154e+06 -4.5930092e+04 1.8357199e+04
+-1.1493679e+07 -6.9805422e+04 3.1120690e+04
+-1.4402880e+07 -9.2658804e+04 1.2294894e+04
+-1.5792853e+07 -1.1151732e+05 -5.0197453e+04
+-1.6184306e+07 -1.2405404e+05 -1.4474106e+05
+-1.6109871e+07 -1.2860847e+05 -2.4050749e+05
+-1.5766590e+07 -1.2442961e+05 -2.9946228e+05
+-1.4983031e+07 -1.1202467e+05 -2.9312405e+05
+-1.3341011e+07 -9.3214662e+04 -2.2044955e+05
+-1.0485936e+07 -7.0715540e+04 -1.1580479e+05
+-6.6395176e+06 -4.7482487e+04 -3.1711560e+04
+-2.9108976e+06 -2.6341270e+04 2.1044881e+03
+-1.9367490e+05 -4.5446169e+03 1.0569979e+02
+-1.0936000e+04 -2.6074425e+02 5.0141177e+00
+-6.1520975e+02 -1.5025049e+01 1.9991284e-01
+-3.1262098e+01 -7.8419507e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0032554e+01 -2.3390259e-01 -3.1292846e-01
+-3.9508839e+02 -4.1913461e+00 -6.8068962e+00
+-7.0618634e+03 -6.7602636e+01 -1.2864186e+02
+-1.2616003e+05 -1.1028513e+03 -2.3926558e+03
+-1.9752985e+06 -6.3183806e+03 1.6408828e+03
+-4.7776784e+06 -1.1860740e+04 1.5957916e+04
+-7.6139870e+06 -1.8805213e+04 2.7748308e+04
+-9.5630909e+06 -2.6481961e+04 1.8163577e+04
+-1.0487427e+07 -3.3571322e+04 -2.1902257e+04
+-1.0735024e+07 -3.8522492e+04 -8.5145408e+04
+-1.0669539e+07 -4.0059963e+04 -1.5061196e+05
+-1.0428463e+07 -3.7633907e+04 -1.9203743e+05
+-9.8974938e+06 -3.1769753e+04 -1.8965783e+05
+-8.7951881e+06 -2.4073712e+04 -1.4261488e+05
+-6.8870141e+06 -1.6611582e+04 -7.4148621e+04
+-4.3297488e+06 -1.0748322e+04 -1.9454296e+04
+-1.8690911e+06 -6.3581649e+03 1.9226685e+03
+-1.2610133e+05 -1.2208030e+03 9.7774606e+01
+-7.0617021e+03 -7.5422556e+01 4.8083069e+00
+-3.9534136e+02 -4.7135469e+00 2.0338303e-01
+-2.0061819e+01 -2.6476716e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.5324015e+00 -3.9985311e-02 -1.1278152e-01
+-1.8451264e+02 -5.3584098e-01 -2.3576433e+00
+-3.2673143e+03 -5.2500601e+00 -4.2931607e+01
+-5.9275533e+04 -3.1501084e+01 -7.7769619e+02
+-9.1076476e+05 4.1270412e+02 2.5004835e+03
+-2.3266815e+06 1.2175988e+03 1.2211733e+04
+-3.7583417e+06 1.0503492e+03 2.1118718e+04
+-4.7105736e+06 -7.3831882e+02 1.8300649e+04
+-5.1164696e+06 -3.4522686e+03 -1.9435678e+03
+-5.1788609e+06 -5.7157933e+03 -3.6056664e+04
+-5.1089532e+06 -6.2931721e+03 -7.2556113e+04
+-4.9884372e+06 -4.6500295e+03 -9.6704888e+04
+-4.7533276e+06 -1.2953058e+03 -9.7255299e+04
+-4.2418241e+06 2.2089871e+03 -7.3478340e+04
+-3.3151142e+06 3.9370916e+03 -3.7990127e+04
+-2.0480857e+06 3.0487956e+03 -9.8541842e+03
+-8.3407902e+05 9.3404309e+02 5.7031518e+02
+-5.8668970e+04 -3.2760732e+01 2.9305820e+01
+-3.2360363e+03 -6.0526552e+00 1.4688016e+00
+-1.8291604e+02 -6.2412959e-01 6.3527983e-02
+-9.4598514e+00 -4.6580570e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.6818796e+00 -5.3562712e-03 -9.6766036e-03
+-4.4168035e+01 -5.8170042e-02 -1.2124787e-01
+-6.0478743e+02 -4.1779719e-01 -6.2740603e-01
+-7.2349723e+03 -1.3548165e+00 1.3010707e+01
+-6.5125308e+04 2.0385454e+01 7.4430576e+02
+-1.4850946e+05 5.9544266e+01 2.6662345e+03
+-2.3312275e+05 4.7520932e+01 4.5883460e+03
+-2.9745868e+05 -5.4800360e+01 4.5239247e+03
+-3.3530736e+05 -2.1109699e+02 1.3297664e+03
+-3.5177129e+05 -3.4195643e+02 -4.4735335e+03
+-3.5368664e+05 -3.7402773e+02 -1.0881380e+04
+-3.4394215e+05 -2.7640532e+02 -1.5258431e+04
+-3.2054574e+05 -8.1546747e+01 -1.5596029e+04
+-2.7863860e+05 1.1747930e+02 -1.1780745e+04
+-2.1544708e+05 2.1196120e+02 -6.0350539e+03
+-1.3723372e+05 1.6189322e+02 -1.6048262e+03
+-6.1438934e+04 5.0845016e+01 -5.2871112e+01
+-6.9789295e+03 -5.1969424e-01 -2.4858057e+00
+-5.8838534e+02 -4.6866867e-01 -1.1416490e-01
+-4.3167792e+01 -6.9456315e-02 -4.8404833e-03
+-2.6287624e+00 -6.4338677e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.1111823e-01 -6.1777906e-04 4.6340367e-04
+-7.0206545e+00 -5.7424889e-03 1.2210750e-02
+-7.4426292e+01 -3.2553281e-02 2.2283315e-01
+-6.3468012e+02 -6.1476891e-02 3.3538505e+00
+-3.6681345e+03 9.6550145e-01 4.5525192e+01
+-8.3971665e+03 2.7610823e+00 1.5113583e+02
+-1.3264954e+04 1.8625243e+00 2.5711011e+02
+-1.7003650e+04 -3.9594396e+00 2.5187726e+02
+-1.9218941e+04 -1.2843184e+01 6.7960189e+01
+-2.0181183e+04 -2.0294991e+01 -2.6597150e+02
+-2.0286426e+04 -2.2047631e+01 -6.3309067e+02
+-1.9710102e+04 -1.6347251e+01 -8.7999786e+02
+-1.8338571e+04 -5.2071737e+00 -8.9303356e+02
+-1.5893265e+04 5.9399908e+00 -6.7139981e+02
+-1.2230216e+04 1.1088793e+01 -3.4645248e+02
+-7.7314691e+03 8.4284467e+00 -9.8929666e+01
+-3.4276173e+03 2.7395143e+00 -8.1458541e+00
+-6.0248200e+02 5.4492003e-02 -6.7571603e-01
+-7.1317903e+01 -3.3039198e-02 -5.2984369e-02
+-6.7679126e+00 -6.8183638e-03 -3.3466298e-03
+-4.9466830e-01 -7.5298483e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.3401081e-02 -5.2621187e-05 2.5257193e-04
+-8.5517910e-01 -4.3774173e-04 3.6108200e-03
+-7.2840911e+00 -2.0976705e-03 3.8891477e-02
+-4.7929040e+01 -2.9290221e-03 3.6499246e-01
+-2.1139559e+02 3.8763457e-02 2.8212768e+00
+-4.7510509e+02 1.0800606e-01 8.6087776e+00
+-7.5236451e+02 5.2400304e-02 1.4376341e+01
+-9.6844025e+02 -2.3487370e-01 1.3938440e+01
+-1.0978786e+03 -6.7033347e-01 3.3807546e+00
+-1.1543313e+03 -1.0355746e+00 -1.5723211e+01
+-1.1602834e+03 -1.1182915e+00 -3.6624959e+01
+-1.1261820e+03 -8.3306535e-01 -5.0478298e+01
+-1.0456972e+03 -2.8535384e-01 -5.0912674e+01
+-9.0324467e+02 2.5389129e-01 -3.8196987e+01
+-6.9192783e+02 4.9934918e-01 -1.9973543e+01
+-4.3570406e+02 3.8056770e-01 -6.1673090e+00
+-1.9584462e+02 1.2832680e-01 -8.1306424e-01
+-4.4939413e+01 6.1751513e-03 -9.0894091e-02
+-6.8903843e+00 -1.8579928e-03 -9.0706198e-03
+-8.1412268e-01 -5.0550081e-04 -6.8755128e-04
+-7.0186964e-02 -6.3936362e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.3593298e-03 0.0000000e+00 3.5842380e-05
+-7.5502765e-02 0.0000000e+00 4.3283245e-04
+-5.4514742e-01 0.0000000e+00 3.7808136e-03
+-2.9832616e+00 0.0000000e+00 2.7737249e-02
+-1.1113386e+01 0.0000000e+00 1.5742170e-01
+-2.4352079e+01 0.0000000e+00 4.4472966e-01
+-3.8529610e+01 0.0000000e+00 7.2691779e-01
+-4.9747613e+01 0.0000000e+00 6.9583660e-01
+-5.6549810e+01 0.0000000e+00 1.4944205e-01
+-5.9537515e+01 0.0000000e+00 -8.3386440e-01
+-5.9847424e+01 0.0000000e+00 -1.9045907e+00
+-5.8031808e+01 0.0000000e+00 -2.6055699e+00
+-5.3777097e+01 0.0000000e+00 -2.6158870e+00
+-4.6308877e+01 0.0000000e+00 -1.9629788e+00
+-3.5350710e+01 0.0000000e+00 -1.0429346e+00
+-2.2249492e+01 0.0000000e+00 -3.4574631e-01
+-1.0222940e+01 0.0000000e+00 -6.0085940e-02
+-2.7705419e+00 0.0000000e+00 -8.2185544e-03
+-5.1040891e-01 0.0000000e+00 -9.5869225e-04
+-7.1146864e-02 0.0000000e+00 -8.1646526e-05
+-6.9672425e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.4345211e-03 4.7948345e-05 2.7242879e-05
+-7.6203183e-02 4.0450256e-04 3.2315836e-04
+-5.4963715e-01 2.0486681e-03 2.7642203e-03
+-3.0049624e+00 4.5943065e-03 1.9870672e-02
+-1.1185109e+01 -1.9094652e-02 1.1068802e-01
+-2.4491104e+01 -5.5322460e-02 3.0503562e-01
+-3.8705082e+01 7.6275632e-03 4.7287927e-01
+-4.9898878e+01 2.4721154e-01 3.7693330e-01
+-5.6633457e+01 5.9836893e-01 -1.3778813e-01
+-5.9559821e+01 8.8719332e-01 -1.0026750e+00
+-5.9864667e+01 9.3580740e-01 -1.9212393e+00
+-5.8121796e+01 6.6728893e-01 -2.4985409e+00
+-5.3993127e+01 1.7252247e-01 -2.4550338e+00
+-4.6636869e+01 -3.0551345e-01 -1.8215289e+00
+-3.5702252e+01 -5.0943952e-01 -9.6054736e-01
+-2.2514616e+01 -3.7939209e-01 -3.1603133e-01
+-1.0353654e+01 -1.3140620e-01 -5.3910430e-02
+-2.8081375e+00 -9.1485138e-03 -7.1663695e-03
+-5.1785665e-01 1.0903145e-03 -8.0894208e-04
+-7.2270947e-02 3.8206148e-04 -6.6920523e-05
+-7.0853086e-03 5.1145638e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.4105026e-02 5.6228494e-04 1.8960853e-04
+-8.6253969e-01 5.2903996e-03 2.6643055e-03
+-7.3389078e+00 3.1368944e-02 2.8160685e-02
+-4.8241940e+01 8.5967977e-02 2.5968716e-01
+-2.1260272e+02 -5.2839311e-01 1.9761179e+00
+-4.7752708e+02 -1.5451116e+00 5.8879013e+00
+-7.5537123e+02 -4.4378706e-01 9.3460364e+00
+-9.7085643e+02 4.3872962e+00 7.6221336e+00
+-1.0988998e+03 1.1523241e+01 -2.2815252e+00
+-1.1541160e+03 1.7412009e+01 -1.9021652e+01
+-1.1599403e+03 1.8479470e+01 -3.6908475e+01
+-1.1272371e+03 1.3129221e+01 -4.8315333e+01
+-1.0492297e+03 3.0765854e+00 -4.7686882e+01
+-9.0904984e+02 -6.8139716e+00 -3.5373256e+01
+-6.9832882e+02 -1.1123777e+01 -1.8357929e+01
+-4.4053233e+02 -8.2852330e+00 -5.6238207e+00
+-1.9811724e+02 -2.7605022e+00 -7.2209646e-01
+-4.5490463e+01 -1.0265474e-01 -7.7540220e-02
+-6.9820178e+00 2.2580628e-02 -7.3970791e-03
+-8.2598321e-01 5.3844740e-03 -5.3896312e-04
+-7.1295408e-02 6.2062665e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.1568708e-01 4.8549927e-03 2.7614279e-04
+-7.0763297e+00 5.3201746e-02 8.0400137e-03
+-7.4933612e+01 3.9369957e-01 1.5302974e-01
+-6.3834001e+02 1.5595667e+00 2.3393195e+00
+-3.6861385e+03 -1.1945811e+01 3.1760688e+01
+-8.4347562e+03 -3.5251321e+01 1.0305652e+02
+-1.3310511e+04 -1.8831326e+01 1.6700127e+02
+-1.7036754e+04 6.5510672e+01 1.3898180e+02
+-1.9226314e+04 1.9048918e+02 -3.2610895e+01
+-2.0166247e+04 2.9383883e+02 -3.2397355e+02
+-2.0268744e+04 3.1411328e+02 -6.3728884e+02
+-1.9716502e+04 2.2282908e+02 -8.4058824e+02
+-1.8388667e+04 4.7224315e+01 -8.3463954e+02
+-1.5984800e+04 -1.2950882e+02 -6.2041029e+02
+-1.2334751e+04 -2.0927820e+02 -3.1772113e+02
+-7.8105108e+03 -1.5698553e+02 -8.9979159e+01
+-3.4628382e+03 -5.0431004e+01 -7.0876965e+00
+-6.0899985e+02 -1.2356901e-01 -5.4893797e-01
+-7.2167404e+01 3.6284213e-01 -3.9698194e-02
+-6.8576405e+00 5.7736112e-02 -2.3220111e-03
+-5.0186997e-01 5.5002781e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7044228e+00 3.5962303e-02 -8.5641324e-03
+-4.4495752e+01 4.8387292e-01 -1.1151886e-01
+-6.0860294e+02 4.8057296e+00 -7.0803535e-01
+-7.2725074e+03 3.0876038e+01 7.5106315e+00
+-6.5395344e+04 -2.5202121e+02 5.1762162e+02
+-1.4909552e+05 -7.4454074e+02 1.8129754e+03
+-2.3381314e+05 -4.9293181e+02 2.9774591e+03
+-2.9790161e+05 9.7018657e+02 2.5157200e+03
+-3.3528540e+05 3.1303764e+03 -4.4612007e+02
+-3.5135341e+05 4.9173664e+03 -5.4875289e+03
+-3.5321347e+05 5.2952474e+03 -1.0941827e+04
+-3.4387989e+05 3.7651642e+03 -1.4546420e+04
+-3.2124593e+05 7.4656446e+02 -1.4545571e+04
+-2.8008387e+05 -2.3666747e+03 -1.0863129e+04
+-2.1715929e+05 -3.8374255e+03 -5.5227692e+03
+-1.3853480e+05 -2.9227685e+03 -1.4559127e+03
+-6.1987843e+04 -9.1450827e+02 -4.2926495e+01
+-7.0449297e+03 2.4515355e+01 -1.5652543e+00
+-5.9468802e+02 5.1372423e+00 -3.6971641e-02
+-4.3692368e+01 5.4510341e-01 2.3719632e-04
+-2.6642727e+00 4.1247773e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.6085223e+00 2.0864619e-01 -9.6563067e-02
+-1.8583199e+02 3.7297920e+00 -2.0231322e+00
+-3.2876267e+03 5.9981212e+01 -3.6886269e+01
+-5.9588743e+04 9.7534219e+02 -6.6814296e+02
+-9.1936553e+05 5.5536134e+03 2.1269962e+03
+-2.3451735e+06 1.0423423e+04 9.4509836e+03
+-3.7814736e+06 1.6386999e+04 1.5703029e+04
+-4.7292525e+06 2.2841473e+04 1.2510647e+04
+-5.1248573e+06 2.8757159e+04 -4.7284206e+03
+-5.1781322e+06 3.2898791e+04 -3.3438492e+04
+-5.1069677e+06 3.4171100e+04 -6.4299805e+04
+-4.9962915e+06 3.2046759e+04 -8.4727079e+04
+-4.7794995e+06 2.6958304e+04 -8.4766923e+04
+-4.2856685e+06 2.0337451e+04 -6.3626678e+04
+-3.3641814e+06 1.4022300e+04 -3.2419180e+04
+-2.0845857e+06 9.1670621e+03 -8.0089686e+03
+-8.4914864e+05 5.5439823e+03 6.0215801e+02
+-5.9173667e+04 1.0991252e+03 3.2244523e+01
+-3.2684387e+03 6.8078589e+01 1.7055989e+00
+-1.8500998e+02 4.2662309e+00 7.8413544e-02
+-9.5804863e+00 2.4029625e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0178321e+01 6.2020384e-01 -2.6579148e-01
+-3.9774627e+02 1.1916961e+01 -5.7950809e+00
+-7.1054102e+03 2.0742799e+02 -1.0969503e+02
+-1.2687811e+05 3.6255866e+03 -2.0418596e+03
+-1.9958270e+06 2.1510361e+04 2.5298699e+03
+-4.8197256e+06 4.0108422e+04 1.4892081e+04
+-7.6683937e+06 6.0731067e+04 2.4954677e+04
+-9.6136286e+06 8.0411435e+04 1.7922485e+04
+-1.0523422e+07 9.6703280e+04 -1.4028415e+04
+-1.0757844e+07 1.0765661e+05 -6.5966208e+04
+-1.0691950e+07 1.1178260e+05 -1.2116665e+05
+-1.0468666e+07 1.0833275e+05 -1.5724946e+05
+-9.9689913e+06 9.7698584e+04 -1.5649226e+05
+-8.8954200e+06 8.1483387e+04 -1.1740624e+05
+-6.9925824e+06 6.2066590e+04 -5.9882159e+04
+-4.4078911e+06 4.1954912e+04 -1.4527689e+04
+-1.9035277e+06 2.3492903e+04 1.9599757e+03
+-1.2726260e+05 4.1174940e+03 1.0287563e+02
+-7.1329495e+03 2.3693040e+02 5.2712646e+00
+-3.9973056e+02 1.3693002e+01 2.3369285e-01
+-2.0304417e+01 7.1658654e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1182820e+01 1.1266699e+00 -3.3712726e-01
+-6.1401630e+02 2.2027363e+01 -7.3680474e+00
+-1.0920256e+04 3.8910887e+02 -1.3883782e+02
+-1.9347979e+05 6.8604915e+03 -2.5506189e+03
+-3.0642097e+06 4.0367582e+04 3.2074531e+03
+-7.3037984e+06 7.4696061e+04 1.9802798e+04
+-1.1557596e+07 1.1195296e+05 3.2498245e+04
+-1.4456607e+07 1.4659023e+05 2.0047045e+04
+-1.5822391e+07 1.7462023e+05 -2.8332196e+04
+-1.6193318e+07 1.9333647e+05 -1.0499947e+05
+-1.6118364e+07 2.0085244e+05 -1.8557577e+05
+-1.5802292e+07 1.9616810e+05 -2.3770891e+05
+-1.5066884e+07 1.7954040e+05 -2.3569757e+05
+-1.3470640e+07 1.5262746e+05 -1.7721322e+05
+-1.0628174e+07 1.1832090e+05 -9.1230011e+04
+-6.7464341e+06 8.0650075e+04 -2.3008668e+04
+-2.9575993e+06 4.4900068e+04 2.2858125e+03
+-1.9521299e+05 7.8211818e+03 1.2020991e+02
+-1.1031029e+04 4.4608397e+02 6.0861574e+00
+-6.2109000e+02 2.5395825e+01 2.6358443e-01
+-3.1587697e+01 1.3057699e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.0071616e+01 1.3930216e+00 -1.5749969e-01
+-7.8685399e+02 2.7297083e+01 -3.5789172e+00
+-1.3944289e+04 4.8224349e+02 -6.9104050e+01
+-2.4616952e+05 8.4804523e+03 -1.2757842e+03
+-3.8237193e+06 4.9429646e+04 4.7756072e+03
+-9.1798179e+06 9.0981345e+04 2.3998616e+04
+-1.4508069e+07 1.3561502e+05 3.7554193e+04
+-1.8067472e+07 1.7664813e+05 1.8680187e+04
+-1.9675070e+07 2.0954532e+05 -4.5653428e+04
+-2.0058709e+07 2.3146506e+05 -1.4513686e+05
+-1.9937929e+07 2.4052327e+05 -2.4859898e+05
+-1.9576496e+07 2.3567252e+05 -3.1498629e+05
+-1.8738539e+07 2.1699435e+05 -3.1156485e+05
+-1.6838538e+07 1.8589559e+05 -2.3514295e+05
+-1.3346444e+07 1.4519256e+05 -1.2276589e+05
+-8.4879899e+06 9.9456956e+04 -3.3136297e+04
+-3.7035437e+06 5.5424489e+04 5.4666458e+02
+-2.4920655e+05 9.6994924e+03 2.2255961e+01
+-1.4139013e+04 5.5459067e+02 6.0007105e-01
+-7.9925303e+02 3.1565584e+01 -3.6372377e-03
+-4.0776248e+01 1.6190551e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.5950005e+01 1.1626534e+00 2.1976598e-01
+-9.0062229e+02 2.2751841e+01 4.2545807e+00
+-1.5929942e+04 4.0087833e+02 7.1328471e+01
+-2.8080023e+05 7.0228656e+03 1.2047369e+03
+-4.2385910e+06 4.0663600e+04 6.9347255e+03
+-1.0328330e+07 7.4597816e+04 2.7332487e+04
+-1.6335223e+07 1.1082580e+05 4.0408494e+04
+-2.0250074e+07 1.4392037e+05 1.5315631e+04
+-2.1914010e+07 1.7031728e+05 -6.2421939e+04
+-2.2222085e+07 1.8788716e+05 -1.8023146e+05
+-2.2035407e+07 1.9525826e+05 -3.0169586e+05
+-2.1665802e+07 1.9163909e+05 -3.7915452e+05
+-2.0830432e+07 1.7700042e+05 -3.7448699e+05
+-1.8823125e+07 1.5224825e+05 -2.8374926e+05
+-1.4982639e+07 1.1940265e+05 -1.5020118e+05
+-9.5233389e+06 8.2053347e+04 -4.3210755e+04
+-4.1036044e+06 4.5800738e+04 -2.5720876e+03
+-2.8475501e+05 8.0525704e+03 -1.5679194e+02
+-1.6186066e+04 4.6213286e+02 -9.5373718e+00
+-9.1705855e+02 2.6370497e+01 -4.9872257e-01
+-4.6888707e+01 1.3543048e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.9104571e+01 4.5267059e-01 5.8650286e-01
+-9.6170843e+02 8.8469486e+00 1.1778584e+01
+-1.6999198e+04 1.5558834e+02 2.0417549e+02
+-2.9955711e+05 2.7194374e+03 3.5127336e+03
+-4.4185819e+06 1.5693562e+04 8.7984441e+03
+-1.0908683e+07 2.8743669e+04 2.9536678e+04
+-1.7272110e+07 4.2634038e+04 4.1758258e+04
+-2.1340724e+07 5.5284086e+04 1.2133950e+04
+-2.2982793e+07 6.5349357e+04 -7.4577028e+04
+-2.3206487e+07 7.2045475e+04 -2.0427808e+05
+-2.2965057e+07 7.4874096e+04 -3.3724874e+05
+-2.2601240e+07 7.3541641e+04 -4.2172560e+05
+-2.1802182e+07 6.8020336e+04 -4.1622327e+05
+-1.9782974e+07 5.8617129e+04 -3.1628175e+05
+-1.5792508e+07 4.6060466e+04 -1.6904774e+05
+-1.0026759e+07 3.1703784e+04 -5.0718773e+04
+-4.2711522e+06 1.7714062e+04 -5.4330150e+03
+-3.0399614e+05 3.1224595e+03 -3.2317189e+02
+-1.7289019e+04 1.7959960e+02 -1.9064760e+01
+-9.8043870e+02 1.0267049e+01 -9.6793051e-01
+-5.0180045e+01 5.2793053e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0079111e+01 -4.5267059e-01 7.3632286e-01
+-9.8062960e+02 -8.8469485e+00 1.4833647e+01
+-1.7331850e+04 -1.5558834e+02 2.5772051e+02
+-3.0542904e+05 -2.7194373e+03 4.4357821e+03
+-4.4665520e+06 -1.5693561e+04 9.5298657e+03
+-1.1083041e+07 -2.8743668e+04 3.0315099e+04
+-1.7556460e+07 -4.2634039e+04 4.2145982e+04
+-2.1666172e+07 -5.5284083e+04 1.0862261e+04
+-2.3291642e+07 -6.5349348e+04 -7.9011203e+04
+-2.3480759e+07 -7.2045474e+04 -2.1283907e+05
+-2.3218546e+07 -7.4874090e+04 -3.4977245e+05
+-2.2858333e+07 -7.3541637e+04 -4.3665725e+05
+-2.2077029e+07 -6.8020333e+04 -4.3086416e+05
+-2.0062578e+07 -5.8617128e+04 -3.2774890e+05
+-1.6032175e+07 -4.6060465e+04 -1.7577865e+05
+-1.0173718e+07 -3.1703784e+04 -5.3501236e+04
+-4.3142061e+06 -1.7714061e+04 -6.5739669e+03
+-3.1001115e+05 -3.1224595e+03 -3.8995826e+02
+-1.7631929e+04 -1.7959960e+02 -2.2912236e+01
+-1.0000757e+03 -1.0267049e+01 -1.1583279e+00
+-5.1198081e+01 -5.2793053e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9104571e+01 -1.1626534e+00 5.8650286e-01
+-9.6170843e+02 -2.2751840e+01 1.1778584e+01
+-1.6999198e+04 -4.0087833e+02 2.0417549e+02
+-2.9955711e+05 -7.0228656e+03 3.5127336e+03
+-4.4185819e+06 -4.0663599e+04 8.7984433e+03
+-1.0908683e+07 -7.4597814e+04 2.9536676e+04
+-1.7272110e+07 -1.1082580e+05 4.1758262e+04
+-2.1340724e+07 -1.4392037e+05 1.2133957e+04
+-2.2982793e+07 -1.7031728e+05 -7.4577033e+04
+-2.3206487e+07 -1.8788715e+05 -2.0427807e+05
+-2.2965057e+07 -1.9525826e+05 -3.3724874e+05
+-2.2601240e+07 -1.9163908e+05 -4.2172560e+05
+-2.1802182e+07 -1.7700042e+05 -4.1622327e+05
+-1.9782974e+07 -1.5224825e+05 -3.1628175e+05
+-1.5792508e+07 -1.1940265e+05 -1.6904774e+05
+-1.0026759e+07 -8.2053346e+04 -5.0718772e+04
+-4.2711522e+06 -4.5800737e+04 -5.4330151e+03
+-3.0399614e+05 -8.0525704e+03 -3.2317189e+02
+-1.7289019e+04 -4.6213286e+02 -1.9064760e+01
+-9.8043870e+02 -2.6370497e+01 -9.6793050e-01
+-5.0180045e+01 -1.3543048e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.5950005e+01 -1.3930216e+00 2.1976597e-01
+-9.0062229e+02 -2.7297083e+01 4.2545807e+00
+-1.5929942e+04 -4.8224349e+02 7.1328475e+01
+-2.8080023e+05 -8.4804523e+03 1.2047368e+03
+-4.2385910e+06 -4.9429646e+04 6.9347255e+03
+-1.0328330e+07 -9.0981344e+04 2.7332486e+04
+-1.6335223e+07 -1.3561502e+05 4.0408494e+04
+-2.0250074e+07 -1.7664813e+05 1.5315633e+04
+-2.1914010e+07 -2.0954532e+05 -6.2421942e+04
+-2.2222085e+07 -2.3146505e+05 -1.8023146e+05
+-2.2035407e+07 -2.4052327e+05 -3.0169586e+05
+-2.1665802e+07 -2.3567253e+05 -3.7915453e+05
+-2.0830432e+07 -2.1699434e+05 -3.7448699e+05
+-1.8823125e+07 -1.8589559e+05 -2.8374926e+05
+-1.4982639e+07 -1.4519256e+05 -1.5020118e+05
+-9.5233389e+06 -9.9456956e+04 -4.3210754e+04
+-4.1036044e+06 -5.5424489e+04 -2.5720877e+03
+-2.8475501e+05 -9.6994924e+03 -1.5679196e+02
+-1.6186066e+04 -5.5459067e+02 -9.5373714e+00
+-9.1705855e+02 -3.1565584e+01 -4.9872253e-01
+-4.6888707e+01 -1.6190551e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.0071616e+01 -1.1266699e+00 -1.5749970e-01
+-7.8685399e+02 -2.2027363e+01 -3.5789174e+00
+-1.3944289e+04 -3.8910887e+02 -6.9104047e+01
+-2.4616952e+05 -6.8604915e+03 -1.2757842e+03
+-3.8237193e+06 -4.0367582e+04 4.7756069e+03
+-9.1798179e+06 -7.4696060e+04 2.3998615e+04
+-1.4508069e+07 -1.1195296e+05 3.7554194e+04
+-1.8067472e+07 -1.4659023e+05 1.8680188e+04
+-1.9675070e+07 -1.7462022e+05 -4.5653431e+04
+-2.0058709e+07 -1.9333646e+05 -1.4513686e+05
+-1.9937929e+07 -2.0085244e+05 -2.4859898e+05
+-1.9576496e+07 -1.9616810e+05 -3.1498629e+05
+-1.8738539e+07 -1.7954040e+05 -3.1156484e+05
+-1.6838538e+07 -1.5262746e+05 -2.3514295e+05
+-1.3346444e+07 -1.1832091e+05 -1.2276589e+05
+-8.4879899e+06 -8.0650075e+04 -3.3136296e+04
+-3.7035437e+06 -4.4900068e+04 5.4666455e+02
+-2.4920655e+05 -7.8211818e+03 2.2255958e+01
+-1.4139013e+04 -4.4608397e+02 6.0007105e-01
+-7.9925303e+02 -2.5395824e+01 -3.6372245e-03
+-4.0776248e+01 -1.3057699e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.1182820e+01 -6.2020384e-01 -3.3712726e-01
+-6.1401630e+02 -1.1916961e+01 -7.3680478e+00
+-1.0920256e+04 -2.0742799e+02 -1.3883782e+02
+-1.9347979e+05 -3.6255866e+03 -2.5506189e+03
+-3.0642097e+06 -2.1510361e+04 3.2074531e+03
+-7.3037984e+06 -4.0108422e+04 1.9802798e+04
+-1.1557596e+07 -6.0731066e+04 3.2498247e+04
+-1.4456607e+07 -8.0411435e+04 2.0047044e+04
+-1.5822391e+07 -9.6703277e+04 -2.8332196e+04
+-1.6193318e+07 -1.0765661e+05 -1.0499947e+05
+-1.6118364e+07 -1.1178261e+05 -1.8557577e+05
+-1.5802292e+07 -1.0833275e+05 -2.3770891e+05
+-1.5066884e+07 -9.7698586e+04 -2.3569758e+05
+-1.3470640e+07 -8.1483387e+04 -1.7721322e+05
+-1.0628174e+07 -6.2066590e+04 -9.1230011e+04
+-6.7464341e+06 -4.1954912e+04 -2.3008668e+04
+-2.9575993e+06 -2.3492903e+04 2.2858125e+03
+-1.9521299e+05 -4.1174939e+03 1.2020992e+02
+-1.1031029e+04 -2.3693040e+02 6.0861575e+00
+-6.2109000e+02 -1.3693002e+01 2.6358443e-01
+-3.1587697e+01 -7.1658653e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0178321e+01 -2.0864619e-01 -2.6579146e-01
+-3.9774627e+02 -3.7297920e+00 -5.7950815e+00
+-7.1054102e+03 -5.9981211e+01 -1.0969503e+02
+-1.2687811e+05 -9.7534217e+02 -2.0418596e+03
+-1.9958270e+06 -5.5536129e+03 2.5298698e+03
+-4.8197256e+06 -1.0423423e+04 1.4892081e+04
+-7.6683937e+06 -1.6386999e+04 2.4954678e+04
+-9.6136287e+06 -2.2841472e+04 1.7922486e+04
+-1.0523422e+07 -2.8757155e+04 -1.4028416e+04
+-1.0757844e+07 -3.2898789e+04 -6.5966211e+04
+-1.0691950e+07 -3.4171096e+04 -1.2116664e+05
+-1.0468666e+07 -3.2046759e+04 -1.5724946e+05
+-9.9689913e+06 -2.6958304e+04 -1.5649226e+05
+-8.8954200e+06 -2.0337451e+04 -1.1740624e+05
+-6.9925824e+06 -1.4022298e+04 -5.9882159e+04
+-4.4078911e+06 -9.1670615e+03 -1.4527689e+04
+-1.9035277e+06 -5.5439822e+03 1.9599757e+03
+-1.2726260e+05 -1.0991252e+03 1.0287563e+02
+-7.1329495e+03 -6.8078589e+01 5.2712647e+00
+-3.9973056e+02 -4.2662309e+00 2.3369286e-01
+-2.0304417e+01 -2.4029625e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.6085223e+00 -3.5962303e-02 -9.6563064e-02
+-1.8583199e+02 -4.8387292e-01 -2.0231323e+00
+-3.2876267e+03 -4.8057294e+00 -3.6886267e+01
+-5.9588743e+04 -3.0876039e+01 -6.6814297e+02
+-9.1936553e+05 2.5202120e+02 2.1269961e+03
+-2.3451735e+06 7.4454074e+02 9.4509832e+03
+-3.7814736e+06 4.9293175e+02 1.5703029e+04
+-4.7292525e+06 -9.7018666e+02 1.2510648e+04
+-5.1248573e+06 -3.1303766e+03 -4.7284217e+03
+-5.1781322e+06 -4.9173663e+03 -3.3438494e+04
+-5.1069677e+06 -5.2952472e+03 -6.4299805e+04
+-4.9962915e+06 -3.7651643e+03 -8.4727079e+04
+-4.7794995e+06 -7.4656441e+02 -8.4766923e+04
+-4.2856685e+06 2.3666748e+03 -6.3626677e+04
+-3.3641814e+06 3.8374255e+03 -3.2419180e+04
+-2.0845857e+06 2.9227685e+03 -8.0089686e+03
+-8.4914864e+05 9.1450837e+02 6.0215801e+02
+-5.9173667e+04 -2.4515350e+01 3.2244522e+01
+-3.2684387e+03 -5.1372421e+00 1.7055989e+00
+-1.8500998e+02 -5.4510340e-01 7.8413560e-02
+-9.5804863e+00 -4.1247774e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7044228e+00 -4.8549927e-03 -8.5641320e-03
+-4.4495752e+01 -5.3201746e-02 -1.1151886e-01
+-6.0860294e+02 -3.9369958e-01 -7.0803542e-01
+-7.2725074e+03 -1.5595668e+00 7.5106308e+00
+-6.5395344e+04 1.1945811e+01 5.1762162e+02
+-1.4909552e+05 3.5251321e+01 1.8129754e+03
+-2.3381314e+05 1.8831334e+01 2.9774591e+03
+-2.9790161e+05 -6.5510657e+01 2.5157200e+03
+-3.3528540e+05 -1.9048919e+02 -4.4612010e+02
+-3.5135341e+05 -2.9383881e+02 -5.4875289e+03
+-3.5321347e+05 -3.1411326e+02 -1.0941827e+04
+-3.4387989e+05 -2.2282907e+02 -1.4546420e+04
+-3.2124593e+05 -4.7224281e+01 -1.4545571e+04
+-2.8008387e+05 1.2950883e+02 -1.0863129e+04
+-2.1715929e+05 2.0927821e+02 -5.5227692e+03
+-1.3853480e+05 1.5698554e+02 -1.4559127e+03
+-6.1987843e+04 5.0431003e+01 -4.2926496e+01
+-7.0449297e+03 1.2356902e-01 -1.5652546e+00
+-5.9468802e+02 -3.6284209e-01 -3.6971648e-02
+-4.3692368e+01 -5.7736110e-02 2.3719810e-04
+-2.6642727e+00 -5.5002781e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.1568708e-01 -5.6228494e-04 2.7614280e-04
+-7.0763297e+00 -5.2903996e-03 8.0400136e-03
+-7.4933612e+01 -3.1368944e-02 1.5302973e-01
+-6.3834001e+02 -8.5967972e-02 2.3393196e+00
+-3.6861385e+03 5.2839313e-01 3.1760688e+01
+-8.4347562e+03 1.5451116e+00 1.0305652e+02
+-1.3310511e+04 4.4378721e-01 1.6700127e+02
+-1.7036754e+04 -4.3872962e+00 1.3898180e+02
+-1.9226314e+04 -1.1523241e+01 -3.2610892e+01
+-2.0166247e+04 -1.7412009e+01 -3.2397355e+02
+-2.0268744e+04 -1.8479470e+01 -6.3728884e+02
+-1.9716502e+04 -1.3129220e+01 -8.4058824e+02
+-1.8388667e+04 -3.0765859e+00 -8.3463954e+02
+-1.5984800e+04 6.8139715e+00 -6.2041029e+02
+-1.2334751e+04 1.1123777e+01 -3.1772113e+02
+-7.8105108e+03 8.2852330e+00 -8.9979159e+01
+-3.4628382e+03 2.7605021e+00 -7.0876964e+00
+-6.0899985e+02 1.0265474e-01 -5.4893796e-01
+-7.2167404e+01 -2.2580629e-02 -3.9698196e-02
+-6.8576405e+00 -5.3844739e-03 -2.3220110e-03
+-5.0186997e-01 -6.2062665e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.4105026e-02 -4.7948344e-05 1.8960854e-04
+-8.6253969e-01 -4.0450256e-04 2.6643055e-03
+-7.3389078e+00 -2.0486679e-03 2.8160685e-02
+-4.8241940e+01 -4.5943064e-03 2.5968716e-01
+-2.1260272e+02 1.9094652e-02 1.9761179e+00
+-4.7752708e+02 5.5322458e-02 5.8879012e+00
+-7.5537123e+02 -7.6275654e-03 9.3460364e+00
+-9.7085643e+02 -2.4721154e-01 7.6221336e+00
+-1.0988998e+03 -5.9836895e-01 -2.2815251e+00
+-1.1541160e+03 -8.8719333e-01 -1.9021652e+01
+-1.1599403e+03 -9.3580740e-01 -3.6908475e+01
+-1.1272371e+03 -6.6728892e-01 -4.8315333e+01
+-1.0492297e+03 -1.7252248e-01 -4.7686882e+01
+-9.0904984e+02 3.0551346e-01 -3.5373256e+01
+-6.9832882e+02 5.0943950e-01 -1.8357929e+01
+-4.4053233e+02 3.7939208e-01 -5.6238207e+00
+-1.9811725e+02 1.3140620e-01 -7.2209646e-01
+-4.5490463e+01 9.1485136e-03 -7.7540220e-02
+-6.9820178e+00 -1.0903145e-03 -7.3970792e-03
+-8.2598321e-01 -3.8206147e-04 -5.3896313e-04
+-7.1295408e-02 -5.1145638e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.4345211e-03 0.0000000e+00 2.7242879e-05
+-7.6203183e-02 0.0000000e+00 3.2315837e-04
+-5.4963715e-01 0.0000000e+00 2.7642203e-03
+-3.0049624e+00 0.0000000e+00 1.9870672e-02
+-1.1185109e+01 0.0000000e+00 1.1068802e-01
+-2.4491104e+01 0.0000000e+00 3.0503562e-01
+-3.8705082e+01 0.0000000e+00 4.7287928e-01
+-4.9898878e+01 0.0000000e+00 3.7693330e-01
+-5.6633457e+01 0.0000000e+00 -1.3778813e-01
+-5.9559821e+01 0.0000000e+00 -1.0026750e+00
+-5.9864667e+01 0.0000000e+00 -1.9212393e+00
+-5.8121796e+01 0.0000000e+00 -2.4985409e+00
+-5.3993127e+01 0.0000000e+00 -2.4550338e+00
+-4.6636869e+01 0.0000000e+00 -1.8215289e+00
+-3.5702252e+01 0.0000000e+00 -9.6054736e-01
+-2.2514616e+01 0.0000000e+00 -3.1603133e-01
+-1.0353654e+01 0.0000000e+00 -5.3910430e-02
+-2.8081375e+00 0.0000000e+00 -7.1663694e-03
+-5.1785665e-01 0.0000000e+00 -8.0894208e-04
+-7.2270947e-02 0.0000000e+00 -6.6920524e-05
+-7.0853086e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.4972755e-03 4.3486564e-05 1.9267904e-05
+-7.6778171e-02 3.7656423e-04 2.1769122e-04
+-5.5323658e-01 2.0664052e-03 1.7507163e-03
+-3.0218383e+00 6.8248698e-03 1.1801775e-02
+-1.1238947e+01 3.6909250e-03 6.1948448e-02
+-2.4592641e+01 5.0813876e-03 1.5840452e-01
+-3.8830914e+01 7.9546215e-02 2.0469115e-01
+-5.0004808e+01 2.7149544e-01 3.9125317e-02
+-5.6687162e+01 5.3308150e-01 -4.4025165e-01
+-5.9565614e+01 7.3823189e-01 -1.1726907e+00
+-5.9866848e+01 7.4926429e-01 -1.9197742e+00
+-5.8184546e+01 5.0127404e-01 -2.3582976e+00
+-5.4162512e+01 6.8682267e-02 -2.2575950e+00
+-4.6902691e+01 -3.3973852e-01 -1.6520343e+00
+-3.5990299e+01 -5.0041680e-01 -8.6357019e-01
+-2.2731629e+01 -3.6470348e-01 -2.8185445e-01
+-1.0459509e+01 -1.2877017e-01 -4.7229538e-02
+-2.8381914e+00 -1.1073026e-02 -6.1026245e-03
+-5.2374936e-01 4.5529666e-04 -6.6521448e-04
+-7.3154002e-02 2.7107037e-04 -5.3229866e-05
+-7.1776560e-03 3.9117496e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.4701871e-02 5.0515566e-04 1.3517614e-04
+-8.6867951e-01 4.8584530e-03 1.7931034e-03
+-7.3835250e+00 3.0759616e-02 1.7717152e-02
+-4.8487904e+01 1.1764022e-01 1.5286617e-01
+-2.1350837e+02 -3.6504516e-02 1.0987067e+00
+-4.7928042e+02 -1.8798146e-01 3.0451105e+00
+-7.5749895e+02 1.1935817e+00 4.0587995e+00
+-9.7251329e+02 5.0294698e+00 9.5768323e-01
+-1.0994919e+03 1.0307136e+01 -8.2243049e+00
+-1.1537503e+03 1.4483247e+01 -2.2335012e+01
+-1.1594807e+03 1.4793490e+01 -3.6838790e+01
+-1.1279352e+03 9.8711135e+00 -4.5510577e+01
+-1.0520125e+03 1.0968397e+00 -4.3755918e+01
+-9.1377509e+02 -7.3584914e+00 -3.2011910e+01
+-7.0358809e+02 -1.0784649e+01 -1.6468409e+01
+-4.4448671e+02 -7.8756566e+00 -5.0030819e+00
+-1.9995028e+02 -2.6724982e+00 -6.2631657e-01
+-4.5927303e+01 -1.3600589e-01 -6.4544063e-02
+-7.0537880e+00 1.3534108e-02 -5.8525934e-03
+-8.3520387e-01 4.0450480e-03 -4.0590845e-04
+-7.2153574e-02 4.9137434e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.1965348e-01 4.3001259e-03 1.7143118e-04
+-7.1239599e+00 4.7864852e-02 4.7952377e-03
+-7.5357581e+01 3.7022706e-01 8.9296127e-02
+-6.4128286e+02 1.8174507e+00 1.3323412e+00
+-3.6996823e+03 -2.7014934e+00 1.7541119e+01
+-8.4616799e+03 -8.7987866e+00 5.3075696e+01
+-1.3342205e+04 1.3224878e+01 7.2738124e+01
+-1.7058765e+04 7.9411036e+01 2.0367969e+01
+-1.9228934e+04 1.7107908e+02 -1.3778475e+02
+-2.0151742e+04 2.4426183e+02 -3.8206829e+02
+-2.0252188e+04 2.5145042e+02 -6.3528177e+02
+-1.9719757e+04 1.6786019e+02 -7.9001561e+02
+-1.8428490e+04 1.4906204e+01 -7.6400271e+02
+-1.6059778e+04 -1.3626169e+02 -5.6012187e+02
+-1.2420981e+04 -2.0033643e+02 -2.8434010e+02
+-7.8753327e+03 -1.4756593e+02 -7.9827913e+01
+-3.4910884e+03 -4.8226899e+01 -6.0233720e+00
+-6.1410023e+02 -6.2620642e-01 -4.3278964e-01
+-7.2823007e+01 2.6451971e-01 -2.8172680e-02
+-6.9263919e+00 4.6082154e-02 -1.4583214e-03
+-5.0736863e-01 4.5317151e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7246122e+00 3.1308372e-02 -6.8187932e-03
+-4.4786200e+01 4.2422869e-01 -9.2734506e-02
+-6.1192687e+02 4.3004496e+00 -6.9903562e-01
+-7.3040930e+03 3.0166046e+01 2.5379289e+00
+-6.5600316e+04 -7.9760033e+01 2.8456867e+02
+-1.4951063e+05 -2.3944863e+02 9.3032820e+02
+-2.3428449e+05 1.1489768e+02 1.3000064e+03
+-2.9818459e+05 1.2480133e+03 4.1437830e+02
+-3.3522243e+05 2.8193232e+03 -2.2968357e+03
+-3.5098920e+05 4.0833573e+03 -6.5001362e+03
+-3.5280749e+05 4.2389682e+03 -1.0893639e+04
+-3.4380985e+05 2.8451065e+03 -1.3640933e+04
+-3.2181076e+05 2.2193976e+02 -1.3283135e+04
+-2.8127700e+05 -2.4415711e+03 -9.7846948e+03
+-2.1857860e+05 -3.6346427e+03 -4.9310830e+03
+-1.3960427e+05 -2.7210777e+03 -1.2881021e+03
+-6.2424803e+04 -8.6549056e+02 -3.3878215e+01
+-7.0955013e+03 1.6887427e+01 -8.2023343e-01
+-5.9945470e+02 4.1888442e+00 2.2121530e-02
+-4.4087086e+01 4.5887860e-01 4.0425912e-03
+-2.6909362e+00 3.5237755e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.6793746e+00 1.7897496e-01 -7.6814286e-02
+-1.8705519e+02 3.1912041e+00 -1.6205885e+00
+-3.3063903e+03 5.1155361e+01 -2.9711894e+01
+-5.9877263e+04 8.2882744e+02 -5.3985260e+02
+-9.2641822e+05 4.7482189e+03 1.6848625e+03
+-2.3591170e+06 8.9848405e+03 6.4040714e+03
+-3.7986378e+06 1.4024199e+04 9.6589221e+03
+-4.7433956e+06 1.9280995e+04 5.7690349e+03
+-5.1317088e+06 2.3990971e+04 -8.5511803e+03
+-5.1782651e+06 2.7257820e+04 -3.1592812e+04
+-5.1062324e+06 2.8215568e+04 -5.6304785e+04
+-5.0036208e+06 2.6391371e+04 -7.2521761e+04
+-4.8020864e+06 2.2115215e+04 -7.1828110e+04
+-4.3231245e+06 1.6604020e+04 -5.3417662e+04
+-3.4059330e+06 1.1433859e+04 -2.6734572e+04
+-2.1153822e+06 7.5524155e+03 -6.2116223e+03
+-8.6149435e+05 4.6705465e+03 5.9804890e+02
+-5.9545490e+04 9.5377033e+02 3.2989510e+01
+-3.2923084e+03 5.9239349e+01 1.8086797e+00
+-1.8655205e+02 3.7233355e+00 8.6292912e-02
+-9.6692909e+00 2.1033529e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0320601e+01 5.3163978e-01 -2.1038481e-01
+-4.0033727e+02 1.0189371e+01 -4.6175566e+00
+-7.1478398e+03 1.7685690e+02 -8.7889491e+01
+-1.2757756e+05 3.0826226e+03 -1.6422304e+03
+-2.0140979e+06 1.8185230e+04 3.1916947e+03
+-4.8544451e+06 3.3889470e+04 1.3006527e+04
+-7.7130164e+06 5.1201025e+04 2.0452433e+04
+-9.6565908e+06 6.7615851e+04 1.5079757e+04
+-1.0556326e+07 8.1184130e+04 -9.2088114e+03
+-1.0780583e+07 9.0372806e+04 -4.9584862e+04
+-1.0713572e+07 9.3939696e+04 -9.3687541e+04
+-1.0503681e+07 9.1188818e+04 -1.2347058e+05
+-1.0029036e+07 8.2390017e+04 -1.2370025e+05
+-8.9789970e+06 6.8883671e+04 -9.2402929e+04
+-7.0803192e+06 5.2675174e+04 -4.5907461e+04
+-4.4721768e+06 3.5826595e+04 -9.8958763e+03
+-1.9308827e+06 2.0228669e+04 1.9010479e+03
+-1.2810392e+05 3.5938863e+03 1.0225229e+02
+-7.1843173e+03 2.0746170e+02 5.3976869e+00
+-4.0288456e+02 1.2028020e+01 2.4700335e-01
+-2.0478343e+01 6.3126433e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1361706e+01 9.6831009e-01 -2.5778371e-01
+-6.1727739e+02 1.8888740e+01 -5.6960587e+00
+-1.0973620e+04 3.3284270e+02 -1.0831821e+02
+-1.9435689e+05 5.8541359e+03 -2.0027316e+03
+-3.0874321e+06 3.4213438e+04 5.1915231e+03
+-7.3476857e+06 6.3200994e+04 1.9767340e+04
+-1.1612095e+07 9.4605056e+04 3.0862033e+04
+-1.4505141e+07 1.2380244e+05 2.3208569e+04
+-1.5853546e+07 1.4753215e+05 -1.1984258e+04
+-1.6207894e+07 1.6356884e+05 -7.0604315e+04
+-1.6130441e+07 1.7027578e+05 -1.3486387e+05
+-1.5833950e+07 1.6669806e+05 -1.7871517e+05
+-1.5136275e+07 1.5295832e+05 -1.7989285e+05
+-1.3577022e+07 1.3041728e+05 -1.3504426e+05
+-1.0744515e+07 1.0149206e+05 -6.7520135e+04
+-6.8327530e+06 6.9528489e+04 -1.4903124e+04
+-2.9935509e+06 3.8947776e+04 2.3293646e+03
+-1.9627076e+05 6.8545950e+03 1.2642367e+02
+-1.1095983e+04 3.9217217e+02 6.6668143e+00
+-6.2509388e+02 2.2396354e+01 3.0235770e-01
+-3.1808872e+01 1.1547978e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.0214047e+01 1.2010869e+00 -9.0345133e-02
+-7.8934673e+02 2.3488584e+01 -2.1974506e+00
+-1.3983081e+04 4.1404481e+02 -4.4607498e+01
+-2.4677511e+05 7.2652321e+03 -8.5010959e+02
+-3.8400239e+06 4.2058265e+04 7.6096547e+03
+-9.2113733e+06 7.7259296e+04 2.5106784e+04
+-1.4541171e+07 1.1505541e+05 3.7758487e+04
+-1.8082098e+07 1.4988086e+05 2.6306401e+04
+-1.9659175e+07 1.7797970e+05 -2.0036191e+04
+-2.0016399e+07 1.9696021e+05 -9.5738303e+04
+-1.9890377e+07 2.0514763e+05 -1.7816273e+05
+-1.9555195e+07 2.0152549e+05 -2.3429043e+05
+-1.8770218e+07 1.8605507e+05 -2.3570866e+05
+-1.6925878e+07 1.5987293e+05 -1.7782470e+05
+-1.3457789e+07 1.2532773e+05 -9.0315684e+04
+-8.5732610e+06 8.6242606e+04 -2.1758676e+04
+-3.7355988e+06 4.8321166e+04 9.2298196e+02
+-2.5000962e+05 8.5328054e+03 4.7840207e+01
+-1.4190615e+04 4.8931136e+02 2.3023659e+00
+-8.0257810e+02 2.7932439e+01 9.1347361e-02
+-4.0966652e+01 1.4365484e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6000282e+01 1.0052012e+00 2.4616319e-01
+-9.0128130e+02 1.9634544e+01 4.7592125e+00
+-1.5935922e+04 3.4525841e+02 7.9525413e+01
+-2.8082471e+05 6.0364863e+03 1.3327452e+03
+-4.2399319e+06 3.4717320e+04 1.0014567e+04
+-1.0333155e+07 6.3555173e+04 2.8543191e+04
+-1.6326776e+07 9.4346859e+04 4.0804451e+04
+-2.0206685e+07 1.2256477e+05 2.4731479e+04
+-2.1824893e+07 1.4523559e+05 -3.1641354e+04
+-2.2095888e+07 1.6054313e+05 -1.2142073e+05
+-2.1900769e+07 1.6724932e+05 -2.1816037e+05
+-2.1563469e+07 1.6457853e+05 -2.8354642e+05
+-2.0795827e+07 1.5242086e+05 -2.8451726e+05
+-1.8863706e+07 1.3149921e+05 -2.1556228e+05
+-1.5065012e+07 1.0349795e+05 -1.1135945e+05
+-9.5905602e+06 7.1433070e+04 -2.9328596e+04
+-4.1229295e+06 4.0075801e+04 -1.7581874e+03
+-2.8497977e+05 7.1052326e+03 -1.0585549e+02
+-1.6205114e+04 4.0888687e+02 -6.3830159e+00
+-9.1857442e+02 2.3397280e+01 -3.3197990e-01
+-4.6988803e+01 1.2046653e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.9062825e+01 3.9197530e-01 5.7147954e-01
+-9.6056444e+02 7.6474188e+00 1.1414616e+01
+-1.6973455e+04 1.3423786e+02 1.9669200e+02
+-2.9902862e+05 2.3418896e+03 3.3628011e+03
+-4.4057240e+06 1.3424760e+04 1.1797433e+04
+-1.0888199e+07 2.4535260e+04 3.0333379e+04
+-1.7225299e+07 3.6365469e+04 4.1503383e+04
+-2.1245453e+07 4.7177482e+04 2.1619043e+04
+-2.2829949e+07 5.5845776e+04 -4.1835341e+04
+-2.3008512e+07 6.1697079e+04 -1.4096433e+05
+-2.2756168e+07 6.4278169e+04 -2.4688176e+05
+-2.2428862e+07 6.3299951e+04 -3.1798133e+05
+-2.1708119e+07 5.8706674e+04 -3.1832998e+05
+-1.9778678e+07 5.0741441e+04 -2.4186868e+05
+-1.5844409e+07 4.0011800e+04 -1.2648168e+05
+-1.0074141e+07 2.7657555e+04 -3.5324606e+04
+-4.2776638e+06 1.5529991e+04 -4.2672404e+03
+-3.0366618e+05 2.7597287e+03 -2.5169411e+02
+-1.7276254e+04 1.5915539e+02 -1.4727807e+01
+-9.8014945e+02 9.1228293e+00 -7.4260044e-01
+-5.0188228e+01 4.7024819e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9999518e+01 -3.9197529e-01 7.0435816e-01
+-9.7874871e+02 -7.6474187e+00 1.4118313e+01
+-1.7293230e+04 -1.3423786e+02 2.4397457e+02
+-3.0467758e+05 -2.3418895e+03 4.1762984e+03
+-4.4479818e+06 -1.3424759e+04 1.2455688e+04
+-1.1052390e+07 -2.4535257e+04 3.0874574e+04
+-1.7494367e+07 -3.6365467e+04 4.1512795e+04
+-2.1550460e+07 -4.7177475e+04 2.0155820e+04
+-2.3113931e+07 -5.5845757e+04 -4.5863557e+04
+-2.3254949e+07 -6.1697073e+04 -1.4827993e+05
+-2.2980904e+07 -6.4278162e+04 -2.5736510e+05
+-2.2658703e+07 -6.3299945e+04 -3.3039549e+05
+-2.1959543e+07 -5.8706667e+04 -3.3046806e+05
+-2.0040221e+07 -5.0741437e+04 -2.5134241e+05
+-1.6071486e+07 -4.0011798e+04 -1.3200775e+05
+-1.0212803e+07 -2.7657554e+04 -3.7608423e+04
+-4.3154784e+06 -1.5529991e+04 -5.2762117e+03
+-3.0945717e+05 -2.7597287e+03 -3.1073009e+02
+-1.7606221e+04 -1.5915539e+02 -1.8126891e+01
+-9.9904622e+02 -9.1228293e+00 -9.1070714e-01
+-5.1168292e+01 -4.7024819e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9062825e+01 -1.0052012e+00 5.7147953e-01
+-9.6056444e+02 -1.9634544e+01 1.1414616e+01
+-1.6973455e+04 -3.4525841e+02 1.9669201e+02
+-2.9902862e+05 -6.0364863e+03 3.3628011e+03
+-4.4057240e+06 -3.4717318e+04 1.1797433e+04
+-1.0888199e+07 -6.3555168e+04 3.0333377e+04
+-1.7225299e+07 -9.4346857e+04 4.1503385e+04
+-2.1245453e+07 -1.2256477e+05 2.1619054e+04
+-2.2829949e+07 -1.4523560e+05 -4.1835345e+04
+-2.3008512e+07 -1.6054312e+05 -1.4096434e+05
+-2.2756168e+07 -1.6724932e+05 -2.4688176e+05
+-2.2428862e+07 -1.6457852e+05 -3.1798134e+05
+-2.1708119e+07 -1.5242085e+05 -3.1832998e+05
+-1.9778678e+07 -1.3149921e+05 -2.4186868e+05
+-1.5844409e+07 -1.0349795e+05 -1.2648168e+05
+-1.0074141e+07 -7.1433069e+04 -3.5324607e+04
+-4.2776638e+06 -4.0075800e+04 -4.2672404e+03
+-3.0366618e+05 -7.1052326e+03 -2.5169411e+02
+-1.7276254e+04 -4.0888686e+02 -1.4727807e+01
+-9.8014945e+02 -2.3397280e+01 -7.4260046e-01
+-5.0188228e+01 -1.2046653e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6000282e+01 -1.2010869e+00 2.4616320e-01
+-9.0128130e+02 -2.3488585e+01 4.7592108e+00
+-1.5935922e+04 -4.1404481e+02 7.9525430e+01
+-2.8082471e+05 -7.2652321e+03 1.3327453e+03
+-4.2399319e+06 -4.2058265e+04 1.0014567e+04
+-1.0333155e+07 -7.7259298e+04 2.8543187e+04
+-1.6326776e+07 -1.1505541e+05 4.0804453e+04
+-2.0206685e+07 -1.4988086e+05 2.4731486e+04
+-2.1824893e+07 -1.7797970e+05 -3.1641356e+04
+-2.2095888e+07 -1.9696021e+05 -1.2142073e+05
+-2.1900769e+07 -2.0514763e+05 -2.1816037e+05
+-2.1563469e+07 -2.0152549e+05 -2.8354643e+05
+-2.0795827e+07 -1.8605506e+05 -2.8451727e+05
+-1.8863706e+07 -1.5987293e+05 -2.1556229e+05
+-1.5065012e+07 -1.2532773e+05 -1.1135945e+05
+-9.5905602e+06 -8.6242606e+04 -2.9328595e+04
+-4.1229295e+06 -4.8321165e+04 -1.7581875e+03
+-2.8497977e+05 -8.5328053e+03 -1.0585549e+02
+-1.6205114e+04 -4.8931136e+02 -6.3830159e+00
+-9.1857442e+02 -2.7932439e+01 -3.3197989e-01
+-4.6988803e+01 -1.4365484e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.0214047e+01 -9.6831010e-01 -9.0345139e-02
+-7.8934673e+02 -1.8888740e+01 -2.1974512e+00
+-1.3983081e+04 -3.3284269e+02 -4.4607497e+01
+-2.4677511e+05 -5.8541359e+03 -8.5010955e+02
+-3.8400239e+06 -3.4213437e+04 7.6096541e+03
+-9.2113733e+06 -6.3200993e+04 2.5106783e+04
+-1.4541171e+07 -9.4605055e+04 3.7758489e+04
+-1.8082098e+07 -1.2380244e+05 2.6306403e+04
+-1.9659175e+07 -1.4753215e+05 -2.0036192e+04
+-2.0016399e+07 -1.6356884e+05 -9.5738301e+04
+-1.9890377e+07 -1.7027577e+05 -1.7816273e+05
+-1.9555195e+07 -1.6669806e+05 -2.3429042e+05
+-1.8770218e+07 -1.5295833e+05 -2.3570866e+05
+-1.6925878e+07 -1.3041729e+05 -1.7782470e+05
+-1.3457789e+07 -1.0149206e+05 -9.0315685e+04
+-8.5732610e+06 -6.9528490e+04 -2.1758676e+04
+-3.7355988e+06 -3.8947776e+04 9.2298190e+02
+-2.5000962e+05 -6.8545950e+03 4.7840205e+01
+-1.4190615e+04 -3.9217216e+02 2.3023657e+00
+-8.0257810e+02 -2.2396354e+01 9.1347367e-02
+-4.0966652e+01 -1.1547978e+00 0.0000000e+00
+0 0 0
+0 0 0
+-3.1361706e+01 -5.3163978e-01 -2.5778372e-01
+-6.1727739e+02 -1.0189371e+01 -5.6960583e+00
+-1.0973620e+04 -1.7685690e+02 -1.0831821e+02
+-1.9435689e+05 -3.0826226e+03 -2.0027316e+03
+-3.0874321e+06 -1.8185230e+04 5.1915225e+03
+-7.3476857e+06 -3.3889470e+04 1.9767339e+04
+-1.1612095e+07 -5.1201024e+04 3.0862033e+04
+-1.4505141e+07 -6.7615851e+04 2.3208572e+04
+-1.5853546e+07 -8.1184130e+04 -1.1984259e+04
+-1.6207894e+07 -9.0372806e+04 -7.0604314e+04
+-1.6130441e+07 -9.3939700e+04 -1.3486388e+05
+-1.5833950e+07 -9.1188818e+04 -1.7871517e+05
+-1.5136275e+07 -8.2390017e+04 -1.7989285e+05
+-1.3577022e+07 -6.8883671e+04 -1.3504426e+05
+-1.0744515e+07 -5.2675173e+04 -6.7520136e+04
+-6.8327530e+06 -3.5826594e+04 -1.4903124e+04
+-2.9935509e+06 -2.0228669e+04 2.3293646e+03
+-1.9627076e+05 -3.5938863e+03 1.2642368e+02
+-1.1095983e+04 -2.0746170e+02 6.6668143e+00
+-6.2509388e+02 -1.2028020e+01 3.0235773e-01
+-3.1808872e+01 -6.3126433e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0320601e+01 -1.7897496e-01 -2.1038481e-01
+-4.0033727e+02 -3.1912041e+00 -4.6175566e+00
+-7.1478398e+03 -5.1155361e+01 -8.7889493e+01
+-1.2757756e+05 -8.2882744e+02 -1.6422304e+03
+-2.0140979e+06 -4.7482189e+03 3.1916948e+03
+-4.8544451e+06 -8.9848403e+03 1.3006526e+04
+-7.7130164e+06 -1.4024198e+04 2.0452433e+04
+-9.6565908e+06 -1.9280995e+04 1.5079758e+04
+-1.0556326e+07 -2.3990971e+04 -9.2088114e+03
+-1.0780583e+07 -2.7257820e+04 -4.9584863e+04
+-1.0713572e+07 -2.8215567e+04 -9.3687541e+04
+-1.0503681e+07 -2.6391371e+04 -1.2347058e+05
+-1.0029036e+07 -2.2115216e+04 -1.2370025e+05
+-8.9789970e+06 -1.6604020e+04 -9.2402929e+04
+-7.0803192e+06 -1.1433857e+04 -4.5907461e+04
+-4.4721768e+06 -7.5524147e+03 -9.8958762e+03
+-1.9308827e+06 -4.6705460e+03 1.9010479e+03
+-1.2810392e+05 -9.5377032e+02 1.0225229e+02
+-7.1843173e+03 -5.9239348e+01 5.3976869e+00
+-4.0288456e+02 -3.7233355e+00 2.4700338e-01
+-2.0478343e+01 -2.1033529e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.6793746e+00 -3.1308371e-02 -7.6814287e-02
+-1.8705519e+02 -4.2422868e-01 -1.6205885e+00
+-3.3063903e+03 -4.3004495e+00 -2.9711894e+01
+-5.9877263e+04 -3.0166046e+01 -5.3985260e+02
+-9.2641822e+05 7.9760032e+01 1.6848625e+03
+-2.3591170e+06 2.3944862e+02 6.4040715e+03
+-3.7986378e+06 -1.1489791e+02 9.6589221e+03
+-4.7433956e+06 -1.2480136e+03 5.7690350e+03
+-5.1317088e+06 -2.8193232e+03 -8.5511805e+03
+-5.1782651e+06 -4.0833573e+03 -3.1592813e+04
+-5.1062324e+06 -4.2389680e+03 -5.6304786e+04
+-5.0036208e+06 -2.8451065e+03 -7.2521761e+04
+-4.8020864e+06 -2.2193973e+02 -7.1828110e+04
+-4.3231245e+06 2.4415711e+03 -5.3417662e+04
+-3.4059330e+06 3.6346426e+03 -2.6734572e+04
+-2.1153822e+06 2.7210777e+03 -6.2116222e+03
+-8.6149435e+05 8.6549056e+02 5.9804887e+02
+-5.9545490e+04 -1.6887426e+01 3.2989511e+01
+-3.2923084e+03 -4.1888442e+00 1.8086797e+00
+-1.8655205e+02 -4.5887860e-01 8.6292914e-02
+-9.6692909e+00 -3.5237755e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7246122e+00 -4.3001259e-03 -6.8187928e-03
+-4.4786200e+01 -4.7864852e-02 -9.2734511e-02
+-6.1192687e+02 -3.7022706e-01 -6.9903565e-01
+-7.3040930e+03 -1.8174507e+00 2.5379288e+00
+-6.5600316e+04 2.7014931e+00 2.8456867e+02
+-1.4951063e+05 8.7987863e+00 9.3032818e+02
+-2.3428449e+05 -1.3224882e+01 1.3000064e+03
+-2.9818459e+05 -7.9411037e+01 4.1437837e+02
+-3.3522243e+05 -1.7107908e+02 -2.2968357e+03
+-3.5098920e+05 -2.4426183e+02 -6.5001362e+03
+-3.5280749e+05 -2.5145043e+02 -1.0893639e+04
+-3.4380985e+05 -1.6786019e+02 -1.3640933e+04
+-3.2181076e+05 -1.4906197e+01 -1.3283135e+04
+-2.8127700e+05 1.3626169e+02 -9.7846948e+03
+-2.1857860e+05 2.0033643e+02 -4.9310830e+03
+-1.3960427e+05 1.4756593e+02 -1.2881021e+03
+-6.2424803e+04 4.8226899e+01 -3.3878215e+01
+-7.0955013e+03 6.2620650e-01 -8.2023343e-01
+-5.9945470e+02 -2.6451970e-01 2.2121534e-02
+-4.4087086e+01 -4.6082154e-02 4.0425914e-03
+-2.6909362e+00 -4.5317151e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.1965348e-01 -5.0515566e-04 1.7143118e-04
+-7.1239599e+00 -4.8584530e-03 4.7952374e-03
+-7.5357581e+01 -3.0759616e-02 8.9296125e-02
+-6.4128286e+02 -1.1764022e-01 1.3323412e+00
+-3.6996823e+03 3.6504515e-02 1.7541119e+01
+-8.4616799e+03 1.8798146e-01 5.3075694e+01
+-1.3342205e+04 -1.1935814e+00 7.2738126e+01
+-1.7058765e+04 -5.0294695e+00 2.0367973e+01
+-1.9228934e+04 -1.0307136e+01 -1.3778475e+02
+-2.0151742e+04 -1.4483247e+01 -3.8206829e+02
+-2.0252188e+04 -1.4793489e+01 -6.3528177e+02
+-1.9719757e+04 -9.8711134e+00 -7.9001561e+02
+-1.8428490e+04 -1.0968397e+00 -7.6400271e+02
+-1.6059778e+04 7.3584915e+00 -5.6012187e+02
+-1.2420981e+04 1.0784649e+01 -2.8434010e+02
+-7.8753327e+03 7.8756566e+00 -7.9827913e+01
+-3.4910884e+03 2.6724982e+00 -6.0233720e+00
+-6.1410023e+02 1.3600589e-01 -4.3278964e-01
+-7.2823007e+01 -1.3534109e-02 -2.8172680e-02
+-6.9263919e+00 -4.0450480e-03 -1.4583214e-03
+-5.0736863e-01 -4.9137434e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.4701871e-02 -4.3486563e-05 1.3517613e-04
+-8.6867951e-01 -3.7656421e-04 1.7931033e-03
+-7.3835250e+00 -2.0664048e-03 1.7717152e-02
+-4.8487904e+01 -6.8248696e-03 1.5286616e-01
+-2.1350837e+02 -3.6909237e-03 1.0987067e+00
+-4.7928042e+02 -5.0813852e-03 3.0451104e+00
+-7.5749895e+02 -7.9546206e-02 4.0587996e+00
+-9.7251329e+02 -2.7149543e-01 9.5768338e-01
+-1.0994919e+03 -5.3308148e-01 -8.2243049e+00
+-1.1537503e+03 -7.3823188e-01 -2.2335012e+01
+-1.1594807e+03 -7.4926430e-01 -3.6838790e+01
+-1.1279352e+03 -5.0127404e-01 -4.5510577e+01
+-1.0520125e+03 -6.8682271e-02 -4.3755918e+01
+-9.1377509e+02 3.3973850e-01 -3.2011910e+01
+-7.0358809e+02 5.0041679e-01 -1.6468409e+01
+-4.4448671e+02 3.6470348e-01 -5.0030819e+00
+-1.9995028e+02 1.2877017e-01 -6.2631658e-01
+-4.5927303e+01 1.1073026e-02 -6.4544063e-02
+-7.0537880e+00 -4.5529660e-04 -5.8525933e-03
+-8.3520387e-01 -2.7107037e-04 -4.0590845e-04
+-7.2153574e-02 -3.9117496e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.4972755e-03 0.0000000e+00 1.9267905e-05
+-7.6778171e-02 0.0000000e+00 2.1769124e-04
+-5.5323658e-01 0.0000000e+00 1.7507160e-03
+-3.0218383e+00 0.0000000e+00 1.1801774e-02
+-1.1238947e+01 0.0000000e+00 6.1948448e-02
+-2.4592641e+01 0.0000000e+00 1.5840452e-01
+-3.8830914e+01 0.0000000e+00 2.0469116e-01
+-5.0004808e+01 0.0000000e+00 3.9125325e-02
+-5.6687162e+01 0.0000000e+00 -4.4025165e-01
+-5.9565614e+01 0.0000000e+00 -1.1726907e+00
+-5.9866848e+01 0.0000000e+00 -1.9197742e+00
+-5.8184546e+01 0.0000000e+00 -2.3582976e+00
+-5.4162512e+01 0.0000000e+00 -2.2575950e+00
+-4.6902691e+01 0.0000000e+00 -1.6520343e+00
+-3.5990299e+01 0.0000000e+00 -8.6357019e-01
+-2.2731629e+01 0.0000000e+00 -2.8185445e-01
+-1.0459509e+01 0.0000000e+00 -4.7229538e-02
+-2.8381914e+00 0.0000000e+00 -6.1026244e-03
+-5.2374936e-01 0.0000000e+00 -6.6521448e-04
+-7.3154002e-02 0.0000000e+00 -5.3229865e-05
+-7.1776560e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.5477673e-03 3.8913235e-05 1.1578563e-05
+-7.7230376e-02 3.4933925e-04 1.1444468e-04
+-5.5597127e-01 2.1053739e-03 7.4375462e-04
+-3.0340606e+00 9.2729287e-03 3.6931815e-03
+-1.1275633e+01 2.7728148e-02 1.2651038e-02
+-2.4658412e+01 6.8956064e-02 9.4656050e-03
+-3.8910066e+01 1.5776339e-01 -6.9145928e-02
+-5.0070022e+01 3.0342788e-01 -3.0735945e-01
+-5.6717945e+01 4.7367500e-01 -7.5025162e-01
+-5.9564789e+01 5.9161994e-01 -1.3426968e+00
+-5.9866258e+01 5.6353001e-01 -1.9068170e+00
+-5.8233297e+01 3.3918736e-01 -2.1972540e+00
+-5.4297697e+01 -2.4667439e-02 -2.0374009e+00
+-4.7116756e+01 -3.5794025e-01 -1.4653953e+00
+-3.6222742e+01 -4.7497116e-01 -7.5798168e-01
+-2.2905848e+01 -3.3850179e-01 -2.4526081e-01
+-1.0543329e+01 -1.2101959e-01 -4.0420980e-02
+-2.8615923e+00 -1.1936483e-02 -5.0835533e-03
+-5.2827228e-01 -2.5920900e-05 -5.3470800e-04
+-7.3824522e-02 1.7704985e-04 -4.1238389e-05
+-7.2472784e-03 2.8384037e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5191376e-02 4.4430615e-04 8.4111851e-05
+-8.7360601e-01 4.4061969e-03 9.5375390e-04
+-7.4181003e+00 3.0202472e-02 7.4319617e-03
+-4.8668576e+01 1.5131936e-01 4.6056795e-02
+-2.1412227e+02 4.7300688e-01 2.1467747e-01
+-4.8038918e+02 1.2230053e+00 1.6938861e-01
+-7.5878855e+02 2.9354441e+00 -1.3186922e+00
+-9.7347583e+02 5.8007599e+00 -5.8534770e+00
+-1.0997595e+03 9.1832791e+00 -1.4295477e+01
+-1.1533903e+03 1.1573939e+01 -2.5637780e+01
+-1.1591058e+03 1.1094369e+01 -3.6543497e+01
+-1.1284969e+03 6.6627371e+00 -4.2305342e+01
+-1.0542549e+03 -6.9803415e-01 -3.9389582e+01
+-9.1759659e+02 -7.6006141e+00 -2.8325410e+01
+-7.0784090e+02 -1.0127840e+01 -1.4419730e+01
+-4.4766079e+02 -7.2423576e+00 -4.3417879e+00
+-2.0139436e+02 -2.4877066e+00 -5.3102507e-01
+-4.6263763e+01 -1.5392746e-01 -5.2574055e-02
+-7.1081234e+00 6.2477918e-03 -4.5123845e-03
+-8.4210363e-01 2.8590930e-03 -2.9466655e-04
+-7.2791142e-02 3.7128640e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.2299715e-01 3.6926728e-03 9.5298484e-05
+-7.1633568e+00 4.2023826e-02 1.8745141e-03
+-7.5697292e+01 3.4394834e-01 2.7840423e-02
+-6.4351152e+02 2.0746801e+00 3.3314047e-01
+-3.7088541e+03 6.7030894e+00 3.2748645e+00
+-8.4781856e+03 1.8259256e+01 2.7442694e+00
+-1.3360442e+04 4.6641129e+01 -2.2724101e+01
+-1.7070362e+04 9.5059244e+01 -1.0038551e+02
+-1.9228043e+04 1.5276112e+02 -2.4485384e+02
+-2.0139730e+04 1.9448413e+02 -4.3977596e+02
+-2.0239575e+04 1.8798855e+02 -6.2928296e+02
+-1.9723049e+04 1.1317710e+02 -7.3250536e+02
+-1.8461089e+04 -1.4733570e+01 -6.8587004e+02
+-1.6120785e+04 -1.3818612e+02 -4.9427729e+02
+-1.2490925e+04 -1.8615506e+02 -2.4830537e+02
+-7.9273872e+03 -1.3442392e+02 -6.9069298e+01
+-3.5131873e+03 -4.4447709e+01 -5.0104090e+00
+-6.1796023e+02 -9.7126017e-01 -3.3307433e-01
+-7.3308970e+01 1.7808819e-01 -1.8951217e-02
+-6.9767446e+00 3.5055379e-02 -7.9487569e-04
+-5.1136902e-01 3.5768032e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7422215e+00 2.6167330e-02 -4.8654352e-03
+-4.5036216e+01 3.5826432e-01 -7.1089910e-02
+-6.1472529e+02 3.7343539e+00 -6.6307170e-01
+-7.3294764e+03 2.9053064e+01 -2.2580784e+00
+-6.5740418e+04 9.2817538e+01 5.1729620e+01
+-1.4975637e+05 2.7023404e+02 4.5494317e+01
+-2.3453908e+05 7.3836750e+02 -3.9163427e+02
+-2.9831225e+05 1.5478393e+03 -1.7167505e+03
+-3.3513098e+05 2.5190102e+03 -4.1744479e+03
+-3.5070419e+05 3.2374967e+03 -7.5024718e+03
+-3.5250687e+05 3.1599790e+03 -1.0775078e+04
+-3.4377676e+05 1.9206808e+03 -1.2615669e+04
+-3.2228369e+05 -2.6549589e+02 -1.1891983e+04
+-2.8225500e+05 -2.4408433e+03 -8.6113319e+03
+-2.1973438e+05 -3.3468087e+03 -4.2948969e+03
+-1.4046429e+05 -2.4581716e+03 -1.1111214e+03
+-6.2763417e+04 -7.9075232e+02 -2.6202644e+01
+-7.1326227e+03 1.0234036e+01 -2.8652630e-01
+-6.0287895e+02 3.2553197e+00 6.0492721e-02
+-4.4367920e+01 3.6996682e-01 6.4149983e-03
+-2.7098175e+00 2.8873088e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.7436376e+00 1.4624939e-01 -5.5819037e-02
+-1.8815840e+02 2.6002545e+00 -1.1946033e+00
+-3.3232156e+03 4.1530166e+01 -2.2165137e+01
+-6.0134660e+04 6.7005125e+02 -4.0576692e+02
+-9.3179160e+05 3.9233406e+03 1.1370879e+03
+-2.3683319e+06 7.5668194e+03 3.0554333e+03
+-3.8095799e+06 1.1742752e+04 2.9931577e+03
+-4.7527230e+06 1.5844403e+04 -1.9760342e+03
+-5.1368693e+06 1.9346993e+04 -1.3643483e+04
+-5.1793604e+06 2.1704729e+04 -3.1015368e+04
+-5.1070844e+06 2.2316622e+04 -4.9319929e+04
+-5.0108357e+06 2.0789767e+04 -6.0974113e+04
+-4.8213925e+06 1.7345133e+04 -5.9278622e+04
+-4.3543213e+06 1.2954314e+04 -4.3476999e+04
+-3.4403892e+06 8.9067651e+03 -2.1274394e+04
+-2.1404980e+06 5.9509697e+03 -4.5677016e+03
+-8.7118302e+05 3.7717617e+03 5.5845928e+02
+-5.9801003e+04 7.9267066e+02 3.1534855e+01
+-3.3086859e+03 4.9392082e+01 1.7755736e+00
+-1.8760862e+02 3.1151662e+00 8.6941106e-02
+-9.7300550e+00 1.7657829e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0455489e+01 4.3323673e-01 -1.5209879e-01
+-4.0278550e+02 8.2790645e+00 -3.3826702e+00
+-7.1878094e+03 1.4322774e+02 -6.5110658e+01
+-1.2823455e+05 2.4882966e+03 -1.2263682e+03
+-2.0295545e+06 1.4679866e+04 3.4736458e+03
+-4.8809392e+06 2.7472115e+04 1.0062527e+04
+-7.7465856e+06 4.1485682e+04 1.3888797e+04
+-9.6905005e+06 5.4617485e+04 9.0253451e+03
+-1.0584844e+07 6.5382134e+04 -8.4918594e+03
+-1.0802482e+07 7.2690165e+04 -3.7578251e+04
+-1.0734247e+07 7.5604089e+04 -7.0190178e+04
+-1.0533720e+07 7.3520778e+04 -9.2881887e+04
+-1.0077901e+07 6.6584536e+04 -9.3256860e+04
+-9.0460870e+06 5.5837239e+04 -6.9049748e+04
+-7.1503332e+06 4.2882283e+04 -3.3011326e+04
+-4.5227691e+06 2.9346685e+04 -5.8147649e+03
+-1.9513765e+06 1.6700664e+04 1.7500744e+03
+-1.2866049e+05 3.0032790e+03 9.6038592e+01
+-7.2180876e+03 1.7401218e+02 5.1888566e+00
+-4.0494937e+02 1.0125734e+01 2.4309106e-01
+-2.0591857e+01 5.3318423e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1543056e+01 7.9052095e-01 -1.7593494e-01
+-6.2058040e+02 1.5380178e+01 -3.9740375e+00
+-1.1027639e+04 2.7023308e+02 -7.6960457e+01
+-1.9524357e+05 4.7392086e+03 -1.4411944e+03
+-3.1082513e+06 2.7608852e+04 6.4489501e+03
+-7.3825946e+06 5.1081503e+04 1.7748431e+04
+-1.1654781e+07 7.6491800e+04 2.5428187e+04
+-1.4545682e+07 1.0007626e+05 2.0510884e+04
+-1.5883789e+07 1.1927578e+05 -3.1395576e+03
+-1.6226393e+07 1.3239223e+05 -4.4342910e+04
+-1.6145517e+07 1.3811789e+05 -9.1780428e+04
+-1.5861735e+07 1.3559724e+05 -1.2607267e+05
+-1.5191666e+07 1.2481866e+05 -1.2891617e+05
+-1.3660629e+07 1.0680656e+05 -9.6278437e+04
+-1.0835424e+07 8.3469000e+04 -4.5955898e+04
+-6.8990067e+06 5.7467971e+04 -7.8234975e+03
+-3.0192807e+06 3.2372740e+04 2.2342229e+03
+-1.9690672e+05 5.7493068e+03 1.2415656e+02
+-1.1134692e+04 3.3014060e+02 6.7372043e+00
+-6.2746827e+02 1.8922418e+01 3.1490617e-01
+-3.1939645e+01 9.7886306e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0380779e+01 9.8329289e-01 -2.6040034e-02
+-7.9230060e+02 1.9183538e+01 -8.7553664e-01
+-1.4029780e+04 3.3726819e+02 -2.1211801e+01
+-2.4751500e+05 5.9024241e+03 -4.4453954e+02
+-3.8562783e+06 3.4031785e+04 9.3869220e+03
+-9.2368764e+06 6.2562492e+04 2.3409028e+04
+-1.4567150e+07 9.3228938e+04 3.2650910e+04
+-1.8096683e+07 1.2153282e+05 2.5779742e+04
+-1.9653747e+07 1.4448741e+05 -4.8596388e+03
+-1.9991358e+07 1.6020722e+05 -5.7715639e+04
+-1.9858787e+07 1.6731106e+05 -1.1849871e+05
+-1.9540295e+07 1.6487005e+05 -1.6267211e+05
+-1.8793979e+07 1.5272799e+05 -1.6682014e+05
+-1.6992186e+07 1.3171429e+05 -1.2541973e+05
+-1.3542492e+07 1.0367263e+05 -6.0920360e+04
+-8.6365861e+06 7.1664534e+04 -1.1791867e+04
+-3.7565241e+06 4.0348219e+04 1.1580388e+03
+-2.5034825e+05 7.1813934e+03 6.4584700e+01
+-1.4212605e+04 4.1325428e+02 3.4616028e+00
+-8.0402499e+02 2.3672945e+01 1.5796885e-01
+-4.1051128e+01 1.2213080e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6101669e+01 8.2495651e-01 2.5972293e-01
+-9.0291677e+02 1.6078269e+01 5.0004654e+00
+-1.5958727e+04 2.8203595e+02 8.3037695e+01
+-2.8113696e+05 4.9190716e+03 1.3786422e+03
+-4.2444689e+06 2.8170604e+04 1.1776854e+04
+-1.0336770e+07 5.1592230e+04 2.6362140e+04
+-1.6318673e+07 7.6645740e+04 3.4842599e+04
+-2.0174413e+07 9.9676227e+04 2.4427465e+04
+-2.1760986e+07 1.1830182e+05 -1.3293247e+04
+-2.2003876e+07 1.3106649e+05 -7.6164977e+04
+-2.1799066e+07 1.3693061e+05 -1.4748760e+05
+-2.1482455e+07 1.3517729e+05 -1.9880820e+05
+-2.0764619e+07 1.2561894e+05 -2.0290730e+05
+-1.8890406e+07 1.0876849e+05 -1.5326164e+05
+-1.5124399e+07 8.5944872e+04 -7.6147199e+04
+-9.6375381e+06 5.9573676e+04 -1.7078480e+04
+-4.1321906e+06 3.3573852e+04 -1.0430156e+03
+-2.8477625e+05 5.9963031e+03 -6.1453443e+01
+-1.6195882e+04 3.4621949e+02 -3.6499456e+00
+-9.1824071e+02 1.9877345e+01 -1.8805924e-01
+-4.6982067e+01 1.0265128e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.9093608e+01 3.2214561e-01 5.3359386e-01
+-9.6080748e+02 6.2717872e+00 1.0583120e+01
+-1.6971615e+04 1.0983508e+02 1.8094365e+02
+-2.9890922e+05 1.9117036e+03 3.0689111e+03
+-4.3987094e+06 1.0911548e+04 1.3313351e+04
+-1.0870647e+07 1.9947858e+04 2.7406457e+04
+-1.7185157e+07 2.9589576e+04 3.4320551e+04
+-2.1170432e+07 3.8433567e+04 2.0542470e+04
+-2.2714095e+07 4.5574987e+04 -2.2584552e+04
+-2.2858152e+07 5.0469948e+04 -9.2347487e+04
+-2.2593867e+07 5.2734613e+04 -1.7045325e+05
+-2.2290228e+07 5.2100374e+04 -2.2601005e+05
+-2.1627511e+07 4.8484696e+04 -2.2948355e+05
+-1.9767637e+07 4.2056963e+04 -1.7381301e+05
+-1.5877756e+07 3.3292424e+04 -8.7813996e+04
+-1.0103842e+07 2.3109760e+04 -2.1648861e+04
+-4.2756265e+06 1.3033489e+04 -3.1457701e+03
+-3.0296454e+05 2.3325795e+03 -1.8368436e+02
+-1.7238032e+04 1.3495569e+02 -1.0642566e+01
+-9.7814341e+02 7.7607524e+00 -5.3201356e-01
+-5.0094940e+01 4.0121032e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0000537e+01 -3.2214561e-01 6.4530969e-01
+-9.7840940e+02 -6.2717873e+00 1.2849570e+01
+-1.7281170e+04 -1.0983507e+02 2.2045920e+02
+-3.0438060e+05 -1.9117035e+03 3.7468811e+03
+-4.4362535e+06 -1.0911546e+04 1.3841688e+04
+-1.1026257e+07 -1.9947856e+04 2.7605032e+04
+-1.7441359e+07 -2.9589574e+04 3.3775831e+04
+-2.1458448e+07 -3.8433563e+04 1.8631130e+04
+-2.2977623e+07 -4.5574980e+04 -2.6526542e+04
+-2.3081777e+07 -5.0469943e+04 -9.8758559e+04
+-2.2794982e+07 -5.2734607e+04 -1.7921216e+05
+-2.2497547e+07 -5.2100367e+04 -2.3616678e+05
+-2.1859428e+07 -4.8484691e+04 -2.3931263e+05
+-2.0013996e+07 -4.2056961e+04 -1.8142351e+05
+-1.6094118e+07 -3.3292425e+04 -9.2206926e+04
+-1.0235338e+07 -2.3109760e+04 -2.3452132e+04
+-4.3088651e+06 -1.3033490e+04 -3.9983889e+03
+-3.0855682e+05 -2.3325796e+03 -2.3358369e+02
+-1.7556378e+04 -1.3495570e+02 -1.3515758e+01
+-9.9636637e+02 -7.7607525e+00 -6.7409821e-01
+-5.1039970e+01 -4.0121032e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9093608e+01 -8.2495652e-01 5.3359385e-01
+-9.6080748e+02 -1.6078269e+01 1.0583120e+01
+-1.6971615e+04 -2.8203595e+02 1.8094365e+02
+-2.9890922e+05 -4.9190716e+03 3.0689112e+03
+-4.3987094e+06 -2.8170604e+04 1.3313351e+04
+-1.0870647e+07 -5.1592228e+04 2.7406456e+04
+-1.7185157e+07 -7.6645738e+04 3.4320549e+04
+-2.1170432e+07 -9.9676220e+04 2.0542476e+04
+-2.2714095e+07 -1.1830182e+05 -2.2584554e+04
+-2.2858152e+07 -1.3106648e+05 -9.2347495e+04
+-2.2593867e+07 -1.3693061e+05 -1.7045324e+05
+-2.2290228e+07 -1.3517729e+05 -2.2601005e+05
+-2.1627511e+07 -1.2561893e+05 -2.2948354e+05
+-1.9767637e+07 -1.0876849e+05 -1.7381301e+05
+-1.5877756e+07 -8.5944877e+04 -8.7813997e+04
+-1.0103842e+07 -5.9573679e+04 -2.1648864e+04
+-4.2756265e+06 -3.3573851e+04 -3.1457701e+03
+-3.0296454e+05 -5.9963030e+03 -1.8368436e+02
+-1.7238032e+04 -3.4621949e+02 -1.0642566e+01
+-9.7814341e+02 -1.9877345e+01 -5.3201354e-01
+-5.0094940e+01 -1.0265128e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.6101669e+01 -9.8329287e-01 2.5972295e-01
+-9.0291677e+02 -1.9183538e+01 5.0004669e+00
+-1.5958727e+04 -3.3726819e+02 8.3037699e+01
+-2.8113696e+05 -5.9024241e+03 1.3786420e+03
+-4.2444689e+06 -3.4031785e+04 1.1776854e+04
+-1.0336770e+07 -6.2562492e+04 2.6362138e+04
+-1.6318673e+07 -9.3228938e+04 3.4842603e+04
+-2.0174413e+07 -1.2153282e+05 2.4427466e+04
+-2.1760986e+07 -1.4448741e+05 -1.3293245e+04
+-2.2003876e+07 -1.6020722e+05 -7.6164976e+04
+-2.1799066e+07 -1.6731105e+05 -1.4748760e+05
+-2.1482455e+07 -1.6487004e+05 -1.9880820e+05
+-2.0764619e+07 -1.5272798e+05 -2.0290731e+05
+-1.8890406e+07 -1.3171429e+05 -1.5326165e+05
+-1.5124399e+07 -1.0367262e+05 -7.6147200e+04
+-9.6375381e+06 -7.1664532e+04 -1.7078477e+04
+-4.1321906e+06 -4.0348218e+04 -1.0430158e+03
+-2.8477625e+05 -7.1813934e+03 -6.1453437e+01
+-1.6195882e+04 -4.1325428e+02 -3.6499453e+00
+-9.1824071e+02 -2.3672945e+01 -1.8805921e-01
+-4.6982067e+01 -1.2213080e+00 0.0000000e+00
+0 0 0
+0 0 0
+-4.0380779e+01 -7.9052095e-01 -2.6040037e-02
+-7.9230060e+02 -1.5380178e+01 -8.7553638e-01
+-1.4029780e+04 -2.7023308e+02 -2.1211804e+01
+-2.4751500e+05 -4.7392086e+03 -4.4453950e+02
+-3.8562783e+06 -2.7608852e+04 9.3869200e+03
+-9.2368764e+06 -5.1081503e+04 2.3409028e+04
+-1.4567150e+07 -7.6491800e+04 3.2650913e+04
+-1.8096683e+07 -1.0007626e+05 2.5779744e+04
+-1.9653747e+07 -1.1927577e+05 -4.8596414e+03
+-1.9991358e+07 -1.3239222e+05 -5.7715641e+04
+-1.9858787e+07 -1.3811789e+05 -1.1849871e+05
+-1.9540295e+07 -1.3559723e+05 -1.6267211e+05
+-1.8793979e+07 -1.2481866e+05 -1.6682014e+05
+-1.6992186e+07 -1.0680657e+05 -1.2541973e+05
+-1.3542492e+07 -8.3468998e+04 -6.0920360e+04
+-8.6365861e+06 -5.7467970e+04 -1.1791867e+04
+-3.7565241e+06 -3.2372739e+04 1.1580387e+03
+-2.5034825e+05 -5.7493068e+03 6.4584698e+01
+-1.4212605e+04 -3.3014060e+02 3.4616028e+00
+-8.0402499e+02 -1.8922418e+01 1.5796887e-01
+-4.1051128e+01 -9.7886306e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1543056e+01 -4.3323673e-01 -1.7593494e-01
+-6.2058040e+02 -8.2790645e+00 -3.9740374e+00
+-1.1027639e+04 -1.4322774e+02 -7.6960455e+01
+-1.9524357e+05 -2.4882966e+03 -1.4411944e+03
+-3.1082513e+06 -1.4679866e+04 6.4489495e+03
+-7.3825946e+06 -2.7472114e+04 1.7748431e+04
+-1.1654781e+07 -4.1485680e+04 2.5428188e+04
+-1.4545682e+07 -5.4617485e+04 2.0510884e+04
+-1.5883789e+07 -6.5382132e+04 -3.1395566e+03
+-1.6226393e+07 -7.2690164e+04 -4.4342911e+04
+-1.6145517e+07 -7.5604088e+04 -9.1780430e+04
+-1.5861735e+07 -7.3520777e+04 -1.2607268e+05
+-1.5191666e+07 -6.6584535e+04 -1.2891617e+05
+-1.3660629e+07 -5.5837239e+04 -9.6278437e+04
+-1.0835424e+07 -4.2882283e+04 -4.5955898e+04
+-6.8990067e+06 -2.9346684e+04 -7.8234980e+03
+-3.0192807e+06 -1.6700664e+04 2.2342230e+03
+-1.9690672e+05 -3.0032790e+03 1.2415657e+02
+-1.1134692e+04 -1.7401218e+02 6.7372039e+00
+-6.2746827e+02 -1.0125734e+01 3.1490617e-01
+-3.1939645e+01 -5.3318423e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0455489e+01 -1.4624939e-01 -1.5209879e-01
+-4.0278550e+02 -2.6002545e+00 -3.3826702e+00
+-7.1878094e+03 -4.1530166e+01 -6.5110659e+01
+-1.2823455e+05 -6.7005125e+02 -1.2263682e+03
+-2.0295545e+06 -3.9233406e+03 3.4736458e+03
+-4.8809392e+06 -7.5668192e+03 1.0062526e+04
+-7.7465856e+06 -1.1742751e+04 1.3888797e+04
+-9.6905005e+06 -1.5844405e+04 9.0253455e+03
+-1.0584844e+07 -1.9346993e+04 -8.4918589e+03
+-1.0802482e+07 -2.1704729e+04 -3.7578251e+04
+-1.0734247e+07 -2.2316622e+04 -7.0190179e+04
+-1.0533720e+07 -2.0789766e+04 -9.2881888e+04
+-1.0077901e+07 -1.7345133e+04 -9.3256860e+04
+-9.0460870e+06 -1.2954314e+04 -6.9049748e+04
+-7.1503332e+06 -8.9067649e+03 -3.3011326e+04
+-4.5227691e+06 -5.9509697e+03 -5.8147648e+03
+-1.9513765e+06 -3.7717616e+03 1.7500744e+03
+-1.2866049e+05 -7.9267065e+02 9.6038591e+01
+-7.2180876e+03 -4.9392082e+01 5.1888566e+00
+-4.0494937e+02 -3.1151662e+00 2.4309107e-01
+-2.0591857e+01 -1.7657829e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.7436376e+00 -2.6167330e-02 -5.5819040e-02
+-1.8815840e+02 -3.5826431e-01 -1.1946033e+00
+-3.3232156e+03 -3.7343539e+00 -2.2165138e+01
+-6.0134660e+04 -2.9053063e+01 -4.0576693e+02
+-9.3179160e+05 -9.2817527e+01 1.1370879e+03
+-2.3683319e+06 -2.7023400e+02 3.0554334e+03
+-3.8095799e+06 -7.3836768e+02 2.9931572e+03
+-4.7527230e+06 -1.5478392e+03 -1.9760336e+03
+-5.1368693e+06 -2.5190101e+03 -1.3643483e+04
+-5.1793604e+06 -3.2374967e+03 -3.1015368e+04
+-5.1070844e+06 -3.1599789e+03 -4.9319929e+04
+-5.0108357e+06 -1.9206808e+03 -6.0974113e+04
+-4.8213925e+06 2.6549591e+02 -5.9278622e+04
+-4.3543213e+06 2.4408436e+03 -4.3476999e+04
+-3.4403892e+06 3.3468088e+03 -2.1274394e+04
+-2.1404980e+06 2.4581716e+03 -4.5677016e+03
+-8.7118302e+05 7.9075233e+02 5.5845929e+02
+-5.9801003e+04 -1.0234036e+01 3.1534855e+01
+-3.3086859e+03 -3.2553197e+00 1.7755736e+00
+-1.8760862e+02 -3.6996682e-01 8.6941106e-02
+-9.7300550e+00 -2.8873088e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7422215e+00 -3.6926729e-03 -4.8654352e-03
+-4.5036216e+01 -4.2023825e-02 -7.1089913e-02
+-6.1472529e+02 -3.4394834e-01 -6.6307167e-01
+-7.3294764e+03 -2.0746801e+00 -2.2580794e+00
+-6.5740418e+04 -6.7030885e+00 5.1729624e+01
+-1.4975637e+05 -1.8259255e+01 4.5494290e+01
+-2.3453908e+05 -4.6641124e+01 -3.9163425e+02
+-2.9831225e+05 -9.5059239e+01 -1.7167504e+03
+-3.3513098e+05 -1.5276112e+02 -4.1744479e+03
+-3.5070419e+05 -1.9448413e+02 -7.5024718e+03
+-3.5250687e+05 -1.8798854e+02 -1.0775078e+04
+-3.4377676e+05 -1.1317710e+02 -1.2615669e+04
+-3.2228369e+05 1.4733574e+01 -1.1891983e+04
+-2.8225500e+05 1.3818612e+02 -8.6113319e+03
+-2.1973438e+05 1.8615506e+02 -4.2948969e+03
+-1.4046429e+05 1.3442392e+02 -1.1111214e+03
+-6.2763417e+04 4.4447709e+01 -2.6202643e+01
+-7.1326227e+03 9.7126020e-01 -2.8652628e-01
+-6.0287895e+02 -1.7808819e-01 6.0492722e-02
+-4.4367920e+01 -3.5055379e-02 6.4149986e-03
+-2.7098175e+00 -3.5768032e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.2299715e-01 -4.4430615e-04 9.5298519e-05
+-7.1633568e+00 -4.4061968e-03 1.8745137e-03
+-7.5697292e+01 -3.0202472e-02 2.7840420e-02
+-6.4351152e+02 -1.5131936e-01 3.3314047e-01
+-3.7088541e+03 -4.7300692e-01 3.2748646e+00
+-8.4781856e+03 -1.2230054e+00 2.7442684e+00
+-1.3360442e+04 -2.9354441e+00 -2.2724100e+01
+-1.7070362e+04 -5.8007600e+00 -1.0038551e+02
+-1.9228043e+04 -9.1832794e+00 -2.4485384e+02
+-2.0139730e+04 -1.1573939e+01 -4.3977596e+02
+-2.0239575e+04 -1.1094370e+01 -6.2928297e+02
+-1.9723049e+04 -6.6627377e+00 -7.3250536e+02
+-1.8461089e+04 6.9803417e-01 -6.8587004e+02
+-1.6120785e+04 7.6006142e+00 -4.9427730e+02
+-1.2490925e+04 1.0127840e+01 -2.4830537e+02
+-7.9273872e+03 7.2423577e+00 -6.9069298e+01
+-3.5131873e+03 2.4877066e+00 -5.0104090e+00
+-6.1796023e+02 1.5392746e-01 -3.3307433e-01
+-7.3308970e+01 -6.2477917e-03 -1.8951217e-02
+-6.9767446e+00 -2.8590931e-03 -7.9487566e-04
+-5.1136902e-01 -3.7128640e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.5191376e-02 -3.8913235e-05 8.4111855e-05
+-8.7360601e-01 -3.4933924e-04 9.5375382e-04
+-7.4181003e+00 -2.1053738e-03 7.4319615e-03
+-4.8668576e+01 -9.2729292e-03 4.6056793e-02
+-2.1412227e+02 -2.7728146e-02 2.1467749e-01
+-4.8038918e+02 -6.8956064e-02 1.6938855e-01
+-7.5878855e+02 -1.5776339e-01 -1.3186922e+00
+-9.7347583e+02 -3.0342788e-01 -5.8534770e+00
+-1.0997595e+03 -4.7367500e-01 -1.4295477e+01
+-1.1533903e+03 -5.9161993e-01 -2.5637780e+01
+-1.1591058e+03 -5.6353000e-01 -3.6543497e+01
+-1.1284969e+03 -3.3918734e-01 -4.2305342e+01
+-1.0542549e+03 2.4667440e-02 -3.9389582e+01
+-9.1759659e+02 3.5794025e-01 -2.8325410e+01
+-7.0784090e+02 4.7497117e-01 -1.4419730e+01
+-4.4766079e+02 3.3850179e-01 -4.3417879e+00
+-2.0139436e+02 1.2101959e-01 -5.3102507e-01
+-4.6263763e+01 1.1936483e-02 -5.2574056e-02
+-7.1081234e+00 2.5920986e-05 -4.5123845e-03
+-8.4210363e-01 -1.7704983e-04 -2.9466654e-04
+-7.2791142e-02 -2.8384036e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5477673e-03 0.0000000e+00 1.1578563e-05
+-7.7230376e-02 0.0000000e+00 1.1444467e-04
+-5.5597127e-01 0.0000000e+00 7.4375451e-04
+-3.0340606e+00 0.0000000e+00 3.6931819e-03
+-1.1275633e+01 0.0000000e+00 1.2651038e-02
+-2.4658412e+01 0.0000000e+00 9.4656038e-03
+-3.8910066e+01 0.0000000e+00 -6.9145927e-02
+-5.0070022e+01 0.0000000e+00 -3.0735944e-01
+-5.6717945e+01 0.0000000e+00 -7.5025162e-01
+-5.9564789e+01 0.0000000e+00 -1.3426968e+00
+-5.9866258e+01 0.0000000e+00 -1.9068170e+00
+-5.8233297e+01 0.0000000e+00 -2.1972540e+00
+-5.4297697e+01 0.0000000e+00 -2.0374009e+00
+-4.7116756e+01 0.0000000e+00 -1.4653953e+00
+-3.6222742e+01 0.0000000e+00 -7.5798168e-01
+-2.2905848e+01 0.0000000e+00 -2.4526081e-01
+-1.0543329e+01 0.0000000e+00 -4.0420980e-02
+-2.8615923e+00 0.0000000e+00 -5.0835533e-03
+-5.2827228e-01 0.0000000e+00 -5.3470799e-04
+-7.3824522e-02 0.0000000e+00 -4.1238390e-05
+-7.2472784e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.5858510e-03 3.4061108e-05 4.0225461e-06
+-7.7559475e-02 3.2005419e-04 1.3066976e-05
+-5.5784808e-01 2.1349094e-03 -2.4502642e-04
+-3.0417160e+00 1.1682844e-02 -4.2725329e-03
+-1.1295654e+01 5.1539922e-02 -3.5790976e-02
+-2.4689685e+01 1.3278742e-01 -1.3730515e-01
+-3.8944626e+01 2.3755653e-01 -3.4030236e-01
+-5.0097517e+01 3.3939767e-01 -6.5220593e-01
+-5.6730307e+01 4.1966854e-01 -1.0595119e+00
+-5.9564115e+01 4.5019562e-01 -1.5103808e+00
+-5.9872110e+01 3.8298936e-01 -1.8875183e+00
+-5.8278984e+01 1.8436217e-01 -2.0261926e+00
+-5.4410079e+01 -1.0708534e-01 -1.8067258e+00
+-4.7289640e+01 -3.6256060e-01 -1.2712811e+00
+-3.6408325e+01 -4.3667919e-01 -6.4901840e-01
+-2.3043455e+01 -3.0342013e-01 -2.0799055e-01
+-1.0608417e+01 -1.0912939e-01 -3.3773774e-02
+-2.8793768e+00 -1.1843601e-02 -4.1456759e-03
+-5.3164202e-01 -3.5459630e-04 -4.2134164e-04
+-7.4316036e-02 1.0143325e-04 -3.1260311e-05
+-7.2977267e-03 1.9187927e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5569937e-02 3.7906510e-04 3.3557086e-05
+-8.7729112e-01 3.9125058e-03 1.2621812e-04
+-7.4425277e+00 2.9367337e-02 -2.6788903e-03
+-4.8784173e+01 1.8333127e-01 -5.8730285e-02
+-2.1444953e+02 9.7110444e-01 -6.5103438e-01
+-4.8086988e+02 2.6162688e+00 -2.6538180e+00
+-7.5926676e+02 4.6862178e+00 -6.6242736e+00
+-9.7378154e+02 6.6305013e+00 -1.2609672e+01
+-1.0997633e+03 8.1468694e+00 -2.0333038e+01
+-1.1531369e+03 8.7479019e+00 -2.8884200e+01
+-1.1589623e+03 7.4776156e+00 -3.6122330e+01
+-1.1291032e+03 3.5778031e+00 -3.8909465e+01
+-1.0561498e+03 -2.2944553e+00 -3.4827203e+01
+-9.2069669e+02 -7.5878038e+00 -2.4501859e+01
+-7.1124105e+02 -9.2263384e+00 -1.2312050e+01
+-4.5016566e+02 -6.4396409e+00 -3.6709561e+00
+-2.0250904e+02 -2.2253494e+00 -4.4005173e-01
+-4.6515997e+01 -1.5764653e-01 -4.2014524e-02
+-7.1478636e+00 7.8189649e-04 -3.4108724e-03
+-8.4705780e-01 1.8523881e-03 -2.0765548e-04
+-7.3243310e-02 2.6369983e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.2567304e-01 3.0407692e-03 1.4189366e-05
+-7.1940234e+00 3.5666562e-02 -1.0732280e-03
+-7.5948981e+01 3.1308033e-01 -3.3097511e-02
+-6.4500873e+02 2.2955469e+00 -6.4810381e-01
+-3.7136611e+03 1.5772563e+01 -1.0642526e+01
+-8.4844124e+03 4.4661197e+01 -4.6460610e+01
+-1.3365436e+04 7.9753165e+01 -1.1653346e+02
+-1.7071819e+04 1.1127762e+02 -2.1972437e+02
+-1.9224212e+04 1.3555438e+02 -3.5096356e+02
+-2.0131409e+04 1.4574696e+02 -4.9628340e+02
+-2.0232876e+04 1.2552789e+02 -6.2103218e+02
+-1.9728959e+04 6.0191882e+01 -6.7173669e+02
+-1.8489311e+04 -4.1359668e+01 -6.0445026e+02
+-1.6170576e+04 -1.3606300e+02 -4.2618372e+02
+-1.2546968e+04 -1.6801483e+02 -2.1135271e+02
+-7.9684489e+03 -1.1852941e+02 -5.8201258e+01
+-3.5301067e+03 -3.9421516e+01 -4.0856906e+00
+-6.2078734e+02 -1.1638541e+00 -2.5237499e-01
+-7.3653756e+01 1.0539498e-01 -1.2202141e-02
+-7.0117407e+00 2.4987198e-02 -3.4081918e-04
+-5.1411456e-01 2.6684213e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7568872e+00 2.0696431e-02 -2.9899353e-03
+-4.5240593e+01 2.8769875e-01 -5.0645164e-02
+-6.1693954e+02 3.1154990e+00 -6.3880860e-01
+-7.3481542e+03 2.7373804e+01 -7.0392219e+00
+-6.5814346e+04 2.5721033e+02 -1.7454886e+02
+-1.4983285e+05 7.6245000e+02 -8.1585351e+02
+-2.3457674e+05 1.3489073e+03 -2.0473515e+03
+-2.9828346e+05 1.8504035e+03 -3.8152647e+03
+-3.3501332e+05 2.2315473e+03 -6.0289248e+03
+-3.5051047e+05 2.4033082e+03 -8.4802094e+03
+-3.5233667e+05 2.0915172e+03 -1.0616398e+04
+-3.4381641e+05 1.0183432e+03 -1.1534895e+04
+-3.2270581e+05 -7.0822461e+02 -1.0445909e+04
+-2.8305879e+05 -2.3770158e+03 -7.4011573e+03
+-2.2066306e+05 -2.9960355e+03 -3.6444557e+03
+-1.4114300e+05 -2.1512050e+03 -9.3307070e+02
+-6.3019913e+04 -6.9588952e+02 -2.0106898e+01
+-7.1586282e+03 4.7040383e+00 3.0730731e-02
+-6.0519000e+02 2.3689433e+00 7.8236044e-02
+-4.4553892e+01 2.8182190e-01 7.3734960e-03
+-2.7221917e+00 2.2416183e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.7994756e+00 1.1175334e-01 -3.5218899e-02
+-1.8910879e+02 1.9800035e+00 -7.7712478e-01
+-3.3375713e+03 3.1479646e+01 -1.4785539e+01
+-6.0352176e+04 5.0516157e+02 -2.7505681e+02
+-9.3538159e+05 3.0978914e+03 4.7425087e+02
+-2.3727331e+06 6.1871046e+03 -5.4923163e+02
+-3.8141645e+06 9.5619771e+03 -4.1776899e+03
+-4.7570126e+06 1.2566313e+04 -1.0603991e+04
+-5.1401284e+06 1.4888062e+04 -2.0001430e+04
+-5.1813691e+06 1.6331465e+04 -3.1920906e+04
+-5.1096990e+06 1.6582216e+04 -4.3797088e+04
+-5.0182727e+06 1.5346245e+04 -5.0687988e+04
+-4.8378013e+06 1.2733194e+04 -4.7720623e+04
+-4.3796116e+06 9.4500310e+03 -3.4257379e+04
+-3.4678517e+06 6.4853941e+03 -1.6276302e+04
+-2.1601797e+06 4.3980894e+03 -3.1438664e+03
+-8.7838531e+05 2.8753697e+03 4.8716197e+02
+-5.9960242e+04 6.2302075e+02 2.8084647e+01
+-3.3188307e+03 3.8981296e+01 1.6171547e+00
+-1.8826002e+02 2.4695217e+00 8.0857515e-02
+-9.7673693e+00 1.4058802e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0577883e+01 3.2905504e-01 -9.4908156e-02
+-4.0499438e+02 6.2644798e+00 -2.1705099e+00
+-7.2236593e+03 1.0791455e+02 -4.2755575e+01
+-1.2882046e+05 1.8667990e+03 -8.1848395e+02
+-2.0416860e+06 1.1108039e+04 3.3029082e+03
+-4.8984898e+06 2.1031957e+04 6.0086240e+03
+-7.7680815e+06 3.1822074e+04 5.2444817e+03
+-9.7140665e+06 4.1721587e+04 -3.4472830e+02
+-1.0607719e+07 4.9675756e+04 -1.2257671e+04
+-1.0822713e+07 5.5050367e+04 -3.0745810e+04
+-1.0753780e+07 5.7252087e+04 -5.1883276e+04
+-1.0559146e+07 5.5801240e+04 -6.6912242e+04
+-1.0116285e+07 5.0716242e+04 -6.6511415e+04
+-9.0975237e+06 4.2716944e+04 -4.8341597e+04
+-7.2034567e+06 3.2988032e+04 -2.1720710e+04
+-4.5603884e+06 2.2735909e+04 -2.4392735e+03
+-1.9655046e+06 1.3045837e+04 1.5184198e+03
+-1.2897703e+05 2.3731437e+03 8.4832754e+01
+-7.2371022e+03 1.3815322e+02 4.6754634e+00
+-4.0610423e+02 8.0765437e+00 2.2330979e-01
+-2.0655019e+01 4.2705981e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1717546e+01 6.0086336e-01 -9.7318291e-02
+-6.2374684e+02 1.1650228e+01 -2.3166295e+00
+-1.1079223e+04 2.0391944e+02 -4.6737183e+01
+-1.9608652e+05 3.5625640e+03 -8.9954829e+02
+-3.1256699e+06 2.0788955e+04 6.8381451e+03
+-7.4070220e+06 3.8720105e+04 1.3577392e+04
+-1.1683528e+07 5.8140828e+04 1.6005575e+04
+-1.4575611e+07 7.6081153e+04 1.1575004e+04
+-1.5910569e+07 9.0653508e+04 -2.6226988e+03
+-1.6247016e+07 1.0071468e+05 -2.7663711e+04
+-1.6162918e+07 1.0534287e+05 -5.8353493e+04
+-1.5886018e+07 1.0382351e+05 -8.2091963e+04
+-1.5234143e+07 9.6013420e+04 -8.4912056e+04
+-1.3722909e+07 8.2573953e+04 -6.2489628e+04
+-1.0902430e+07 6.4882065e+04 -2.7377563e+04
+-6.9465478e+06 4.4925599e+04 -2.0261397e+03
+-3.0357222e+06 2.5449288e+04 2.0119239e+03
+-1.9719380e+05 4.5581317e+03 1.1401485e+02
+-1.1151833e+04 2.6298104e+02 6.3277853e+00
+-6.2850984e+02 1.5143380e+01 3.0252076e-01
+-3.1996698e+01 7.8663344e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0558952e+01 7.4913333e-01 2.9902738e-02
+-7.9546943e+02 1.4568943e+01 2.8002265e-01
+-1.4080134e+04 2.5523744e+02 -6.8459721e-01
+-2.4831613e+05 4.4508987e+03 -8.7886537e+01
+-3.8711520e+06 2.5651096e+04 9.9236536e+03
+-9.2542836e+06 4.7388202e+04 1.8662675e+04
+-1.4583106e+07 7.0825846e+04 2.1933413e+04
+-1.8107685e+07 9.2475990e+04 1.6540478e+04
+-1.9655394e+07 1.1010277e+05 -1.2625885e+03
+-1.9981269e+07 1.2236482e+05 -3.3000846e+04
+-1.9842415e+07 1.2823691e+05 -7.2266832e+04
+-1.9532522e+07 1.2692169e+05 -1.0313839e+05
+-1.8811570e+07 1.1814957e+05 -1.0768398e+05
+-1.7039736e+07 1.0241642e+05 -7.9976152e+04
+-1.3602938e+07 8.1035444e+04 -3.5682945e+04
+-8.6800647e+06 5.6306416e+04 -3.5851389e+03
+-3.7677622e+06 3.1852567e+04 1.2496024e+03
+-2.5032420e+05 5.7113627e+03 7.2327687e+01
+-1.4211534e+04 3.3017114e+02 4.0657205e+00
+-8.0401064e+02 1.8999289e+01 1.9546673e-01
+-4.1053187e+01 9.8415962e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6239430e+01 6.2992585e-01 2.5696814e-01
+-9.0524765e+02 1.2240566e+01 4.9162193e+00
+-1.5993522e+04 2.1400524e+02 8.0943427e+01
+-2.8165432e+05 3.7199517e+03 1.3292542e+03
+-4.2507931e+06 2.1277097e+04 1.2027400e+04
+-1.0337013e+07 3.9130587e+04 2.0528376e+04
+-1.6307830e+07 5.8308722e+04 2.2202147e+04
+-2.0149514e+07 7.5993683e+04 1.3785663e+04
+-2.1718827e+07 9.0388352e+04 -8.6594480e+03
+-2.1943942e+07 1.0043011e+05 -4.6659061e+04
+-2.1730100e+07 1.0532663e+05 -9.2714962e+04
+-2.1424315e+07 1.0445324e+05 -1.2838691e+05
+-2.0739543e+07 9.7548072e+04 -1.3286152e+05
+-1.8906530e+07 8.4894172e+04 -9.9215395e+04
+-1.5164152e+07 6.7423739e+04 -4.5850779e+04
+-9.6671666e+06 4.6965983e+04 -6.8818851e+03
+-4.1333537e+06 2.6585648e+04 -4.5180307e+02
+-2.8427268e+05 4.7810442e+03 -2.5054040e+01
+-1.6166619e+04 2.7727686e+02 -1.4234361e+00
+-9.1658257e+02 1.5988984e+01 -7.1267628e-02
+-4.6898126e+01 8.2895036e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9181705e+01 2.4631568e-01 4.7170744e-01
+-9.6214842e+02 4.7816660e+00 9.2715435e+00
+-1.6988723e+04 8.3471064e+01 1.5691366e+02
+-2.9911455e+05 1.4481035e+03 2.6340914e+03
+-4.3962092e+06 8.2529507e+03 1.3158130e+04
+-1.0854011e+07 1.5146382e+04 2.0506061e+04
+-1.7148787e+07 2.2535803e+04 1.9909215e+04
+-2.1112166e+07 2.9341191e+04 8.2960489e+03
+-2.2632147e+07 3.4877292e+04 -1.8140568e+04
+-2.2753879e+07 3.8742879e+04 -6.0726592e+04
+-2.2478731e+07 4.0641924e+04 -1.1117750e+05
+-2.2187809e+07 4.0338813e+04 -1.4948229e+05
+-2.1564059e+07 3.7725514e+04 -1.5311186e+05
+-1.9754086e+07 3.2890241e+04 -1.1465885e+05
+-1.5896723e+07 2.6167584e+04 -5.4435666e+04
+-1.0119405e+07 1.8251729e+04 -1.0158563e+04
+-4.2674225e+06 1.0337787e+04 -2.1147392e+03
+-3.0203895e+05 1.8625222e+03 -1.2181163e+02
+-1.7183832e+04 1.0822742e+02 -6.9622821e+00
+-9.7502337e+02 6.2504517e+00 -3.4379341e-01
+-4.9934158e+01 3.2437563e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0066951e+01 -2.4631567e-01 5.5904564e-01
+-9.7932299e+02 -4.7816660e+00 1.1035964e+01
+-1.7290730e+04 -8.3471063e+01 1.8753827e+02
+-3.0445415e+05 -1.4481035e+03 3.1572961e+03
+-4.4300947e+06 -8.2529505e+03 1.3504358e+04
+-1.1002725e+07 -1.5146381e+04 2.0264827e+04
+-1.7394670e+07 -2.2535805e+04 1.8648135e+04
+-2.1386810e+07 -2.9341190e+04 5.6922163e+03
+-2.2879859e+07 -3.4877297e+04 -2.2317045e+04
+-2.2960010e+07 -3.8742873e+04 -6.6597995e+04
+-2.2661719e+07 -4.0641920e+04 -1.1857692e+05
+-2.2377739e+07 -4.0338803e+04 -1.5770792e+05
+-2.1780790e+07 -3.7725515e+04 -1.6089442e+05
+-1.9988518e+07 -3.2890240e+04 -1.2059170e+05
+-1.6104574e+07 -2.6167586e+04 -5.7800832e+04
+-1.0245120e+07 -1.8251728e+04 -1.1514965e+04
+-4.2969095e+06 -1.0337787e+04 -2.7949780e+03
+-3.0746508e+05 -1.8625222e+03 -1.6166990e+02
+-1.7492334e+04 -1.0822742e+02 -9.2594892e+00
+-9.9266749e+02 -6.2504517e+00 -4.5746741e-01
+-5.0848686e+01 -3.2437563e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9181705e+01 -6.2992586e-01 4.7170742e-01
+-9.6214842e+02 -1.2240566e+01 9.2715439e+00
+-1.6988723e+04 -2.1400524e+02 1.5691365e+02
+-2.9911455e+05 -3.7199517e+03 2.6340914e+03
+-4.3962092e+06 -2.1277096e+04 1.3158130e+04
+-1.0854011e+07 -3.9130585e+04 2.0506059e+04
+-1.7148787e+07 -5.8308720e+04 1.9909215e+04
+-2.1112166e+07 -7.5993680e+04 8.2960493e+03
+-2.2632147e+07 -9.0388344e+04 -1.8140567e+04
+-2.2753879e+07 -1.0043011e+05 -6.0726593e+04
+-2.2478731e+07 -1.0532662e+05 -1.1117749e+05
+-2.2187809e+07 -1.0445325e+05 -1.4948230e+05
+-2.1564059e+07 -9.7548069e+04 -1.5311186e+05
+-1.9754086e+07 -8.4894174e+04 -1.1465886e+05
+-1.5896723e+07 -6.7423740e+04 -5.4435667e+04
+-1.0119405e+07 -4.6965983e+04 -1.0158563e+04
+-4.2674225e+06 -2.6585648e+04 -2.1147392e+03
+-3.0203895e+05 -4.7810442e+03 -1.2181163e+02
+-1.7183832e+04 -2.7727686e+02 -6.9622815e+00
+-9.7502337e+02 -1.5988984e+01 -3.4379340e-01
+-4.9934158e+01 -8.2895036e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6239430e+01 -7.4913333e-01 2.5696814e-01
+-9.0524765e+02 -1.4568943e+01 4.9162200e+00
+-1.5993522e+04 -2.5523744e+02 8.0943415e+01
+-2.8165432e+05 -4.4508987e+03 1.3292541e+03
+-4.2507931e+06 -2.5651096e+04 1.2027401e+04
+-1.0337013e+07 -4.7388202e+04 2.0528375e+04
+-1.6307830e+07 -7.0825846e+04 2.2202148e+04
+-2.0149514e+07 -9.2475990e+04 1.3785663e+04
+-2.1718827e+07 -1.1010277e+05 -8.6594463e+03
+-2.1943942e+07 -1.2236482e+05 -4.6659060e+04
+-2.1730100e+07 -1.2823690e+05 -9.2714961e+04
+-2.1424315e+07 -1.2692169e+05 -1.2838690e+05
+-2.0739543e+07 -1.1814957e+05 -1.3286153e+05
+-1.8906530e+07 -1.0241642e+05 -9.9215396e+04
+-1.5164152e+07 -8.1035442e+04 -4.5850779e+04
+-9.6671666e+06 -5.6306416e+04 -6.8818838e+03
+-4.1333537e+06 -3.1852567e+04 -4.5180313e+02
+-2.8427268e+05 -5.7113627e+03 -2.5054044e+01
+-1.6166619e+04 -3.3017114e+02 -1.4234359e+00
+-9.1658257e+02 -1.8999289e+01 -7.1267619e-02
+-4.6898126e+01 -9.8415962e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0558952e+01 -6.0086336e-01 2.9902691e-02
+-7.9546943e+02 -1.1650228e+01 2.8002337e-01
+-1.4080134e+04 -2.0391944e+02 -6.8459656e-01
+-2.4831613e+05 -3.5625640e+03 -8.7886550e+01
+-3.8711520e+06 -2.0788955e+04 9.9236529e+03
+-9.2542836e+06 -3.8720105e+04 1.8662675e+04
+-1.4583106e+07 -5.8140826e+04 2.1933415e+04
+-1.8107685e+07 -7.6081151e+04 1.6540476e+04
+-1.9655394e+07 -9.0653505e+04 -1.2625872e+03
+-1.9981269e+07 -1.0071468e+05 -3.3000848e+04
+-1.9842415e+07 -1.0534286e+05 -7.2266836e+04
+-1.9532522e+07 -1.0382351e+05 -1.0313839e+05
+-1.8811570e+07 -9.6013418e+04 -1.0768398e+05
+-1.7039736e+07 -8.2573952e+04 -7.9976150e+04
+-1.3602938e+07 -6.4882064e+04 -3.5682947e+04
+-8.6800647e+06 -4.4925598e+04 -3.5851376e+03
+-3.7677622e+06 -2.5449288e+04 1.2496023e+03
+-2.5032420e+05 -4.5581317e+03 7.2327677e+01
+-1.4211534e+04 -2.6298104e+02 4.0657206e+00
+-8.0401064e+02 -1.5143380e+01 1.9546673e-01
+-4.1053187e+01 -7.8663344e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1717546e+01 -3.2905504e-01 -9.7318301e-02
+-6.2374684e+02 -6.2644798e+00 -2.3166294e+00
+-1.1079223e+04 -1.0791455e+02 -4.6737183e+01
+-1.9608652e+05 -1.8667990e+03 -8.9954835e+02
+-3.1256699e+06 -1.1108038e+04 6.8381448e+03
+-7.4070220e+06 -2.1031956e+04 1.3577392e+04
+-1.1683528e+07 -3.1822072e+04 1.6005576e+04
+-1.4575611e+07 -4.1721586e+04 1.1575004e+04
+-1.5910569e+07 -4.9675755e+04 -2.6226992e+03
+-1.6247016e+07 -5.5050367e+04 -2.7663712e+04
+-1.6162918e+07 -5.7252090e+04 -5.8353497e+04
+-1.5886018e+07 -5.5801238e+04 -8.2091965e+04
+-1.5234143e+07 -5.0716241e+04 -8.4912056e+04
+-1.3722909e+07 -4.2716944e+04 -6.2489628e+04
+-1.0902430e+07 -3.2988032e+04 -2.7377563e+04
+-6.9465478e+06 -2.2735908e+04 -2.0261404e+03
+-3.0357222e+06 -1.3045837e+04 2.0119239e+03
+-1.9719380e+05 -2.3731436e+03 1.1401485e+02
+-1.1151833e+04 -1.3815322e+02 6.3277854e+00
+-6.2850984e+02 -8.0765436e+00 3.0252076e-01
+-3.1996698e+01 -4.2705981e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0577883e+01 -1.1175334e-01 -9.4908161e-02
+-4.0499438e+02 -1.9800035e+00 -2.1705099e+00
+-7.2236593e+03 -3.1479646e+01 -4.2755574e+01
+-1.2882046e+05 -5.0516157e+02 -8.1848396e+02
+-2.0416860e+06 -3.0978914e+03 3.3029081e+03
+-4.8984898e+06 -6.1871046e+03 6.0086240e+03
+-7.7680815e+06 -9.5619771e+03 5.2444812e+03
+-9.7140665e+06 -1.2566313e+04 -3.4472843e+02
+-1.0607719e+07 -1.4888060e+04 -1.2257670e+04
+-1.0822713e+07 -1.6331464e+04 -3.0745810e+04
+-1.0753780e+07 -1.6582217e+04 -5.1883276e+04
+-1.0559146e+07 -1.5346244e+04 -6.6912243e+04
+-1.0116285e+07 -1.2733193e+04 -6.6511416e+04
+-9.0975237e+06 -9.4500307e+03 -4.8341596e+04
+-7.2034567e+06 -6.4853939e+03 -2.1720710e+04
+-4.5603884e+06 -4.3980899e+03 -2.4392739e+03
+-1.9655046e+06 -2.8753697e+03 1.5184198e+03
+-1.2897703e+05 -6.2302076e+02 8.4832754e+01
+-7.2371022e+03 -3.8981296e+01 4.6754635e+00
+-4.0610423e+02 -2.4695217e+00 2.2330979e-01
+-2.0655019e+01 -1.4058802e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.7994756e+00 -2.0696431e-02 -3.5218900e-02
+-1.8910879e+02 -2.8769875e-01 -7.7712477e-01
+-3.3375713e+03 -3.1154990e+00 -1.4785539e+01
+-6.0352176e+04 -2.7373803e+01 -2.7505681e+02
+-9.3538159e+05 -2.5721032e+02 4.7425087e+02
+-2.3727331e+06 -7.6244995e+02 -5.4923152e+02
+-3.8141645e+06 -1.3489073e+03 -4.1776899e+03
+-4.7570126e+06 -1.8504033e+03 -1.0603990e+04
+-5.1401284e+06 -2.2315474e+03 -2.0001431e+04
+-5.1813691e+06 -2.4033082e+03 -3.1920906e+04
+-5.1096990e+06 -2.0915171e+03 -4.3797087e+04
+-5.0182727e+06 -1.0183432e+03 -5.0687988e+04
+-4.8378013e+06 7.0822458e+02 -4.7720623e+04
+-4.3796116e+06 2.3770159e+03 -3.4257379e+04
+-3.4678517e+06 2.9960355e+03 -1.6276303e+04
+-2.1601797e+06 2.1512051e+03 -3.1438664e+03
+-8.7838531e+05 6.9588954e+02 4.8716198e+02
+-5.9960242e+04 -4.7040371e+00 2.8084648e+01
+-3.3188307e+03 -2.3689432e+00 1.6171547e+00
+-1.8826002e+02 -2.8182190e-01 8.0857517e-02
+-9.7673693e+00 -2.2416183e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7568872e+00 -3.0407691e-03 -2.9899359e-03
+-4.5240593e+01 -3.5666561e-02 -5.0645160e-02
+-6.1693954e+02 -3.1308033e-01 -6.3880862e-01
+-7.3481542e+03 -2.2955469e+00 -7.0392222e+00
+-6.5814346e+04 -1.5772563e+01 -1.7454886e+02
+-1.4983285e+05 -4.4661198e+01 -8.1585352e+02
+-2.3457674e+05 -7.9753169e+01 -2.0473515e+03
+-2.9828346e+05 -1.1127762e+02 -3.8152647e+03
+-3.3501332e+05 -1.3555439e+02 -6.0289248e+03
+-3.5051047e+05 -1.4574694e+02 -8.4802094e+03
+-3.5233667e+05 -1.2552789e+02 -1.0616398e+04
+-3.4381641e+05 -6.0191889e+01 -1.1534895e+04
+-3.2270581e+05 4.1359671e+01 -1.0445909e+04
+-2.8305879e+05 1.3606300e+02 -7.4011573e+03
+-2.2066306e+05 1.6801483e+02 -3.6444557e+03
+-1.4114300e+05 1.1852940e+02 -9.3307069e+02
+-6.3019913e+04 3.9421516e+01 -2.0106898e+01
+-7.1586282e+03 1.1638541e+00 3.0730770e-02
+-6.0519000e+02 -1.0539498e-01 7.8236048e-02
+-4.4553892e+01 -2.4987198e-02 7.3734963e-03
+-2.7221917e+00 -2.6684213e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.2567304e-01 -3.7906509e-04 1.4189312e-05
+-7.1940234e+00 -3.9125057e-03 -1.0732282e-03
+-7.5948981e+01 -2.9367336e-02 -3.3097517e-02
+-6.4500873e+02 -1.8333126e-01 -6.4810383e-01
+-3.7136611e+03 -9.7110445e-01 -1.0642526e+01
+-8.4844124e+03 -2.6162689e+00 -4.6460611e+01
+-1.3365436e+04 -4.6862176e+00 -1.1653346e+02
+-1.7071819e+04 -6.6305015e+00 -2.1972437e+02
+-1.9224212e+04 -8.1468693e+00 -3.5096356e+02
+-2.0131410e+04 -8.7479026e+00 -4.9628340e+02
+-2.0232876e+04 -7.4776156e+00 -6.2103218e+02
+-1.9728959e+04 -3.5778032e+00 -6.7173669e+02
+-1.8489311e+04 2.2944557e+00 -6.0445026e+02
+-1.6170576e+04 7.5878040e+00 -4.2618372e+02
+-1.2546968e+04 9.2263383e+00 -2.1135271e+02
+-7.9684489e+03 6.4396410e+00 -5.8201258e+01
+-3.5301067e+03 2.2253494e+00 -4.0856905e+00
+-6.2078734e+02 1.5764654e-01 -2.5237499e-01
+-7.3653756e+01 -7.8189597e-04 -1.2202141e-02
+-7.0117407e+00 -1.8523880e-03 -3.4081919e-04
+-5.1411456e-01 -2.6369982e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.5569937e-02 -3.4061107e-05 3.3557085e-05
+-8.7729112e-01 -3.2005419e-04 1.2621810e-04
+-7.4425277e+00 -2.1349094e-03 -2.6788902e-03
+-4.8784173e+01 -1.1682844e-02 -5.8730291e-02
+-2.1444953e+02 -5.1539918e-02 -6.5103440e-01
+-4.8086988e+02 -1.3278741e-01 -2.6538179e+00
+-7.5926676e+02 -2.3755653e-01 -6.6242736e+00
+-9.7378154e+02 -3.3939769e-01 -1.2609672e+01
+-1.0997633e+03 -4.1966856e-01 -2.0333038e+01
+-1.1531369e+03 -4.5019561e-01 -2.8884200e+01
+-1.1589623e+03 -3.8298936e-01 -3.6122330e+01
+-1.1291032e+03 -1.8436212e-01 -3.8909465e+01
+-1.0561498e+03 1.0708534e-01 -3.4827203e+01
+-9.2069669e+02 3.6256060e-01 -2.4501859e+01
+-7.1124105e+02 4.3667920e-01 -1.2312050e+01
+-4.5016566e+02 3.0342013e-01 -3.6709561e+00
+-2.0250904e+02 1.0912939e-01 -4.4005173e-01
+-4.6515997e+01 1.1843601e-02 -4.2014524e-02
+-7.1478636e+00 3.5459637e-04 -3.4108724e-03
+-8.4705780e-01 -1.0143325e-04 -2.0765548e-04
+-7.3243310e-02 -1.9187926e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5858510e-03 0.0000000e+00 4.0225458e-06
+-7.7559475e-02 0.0000000e+00 1.3066978e-05
+-5.5784808e-01 0.0000000e+00 -2.4502644e-04
+-3.0417160e+00 0.0000000e+00 -4.2725327e-03
+-1.1295654e+01 0.0000000e+00 -3.5790977e-02
+-2.4689685e+01 0.0000000e+00 -1.3730515e-01
+-3.8944626e+01 0.0000000e+00 -3.4030236e-01
+-5.0097517e+01 0.0000000e+00 -6.5220593e-01
+-5.6730307e+01 0.0000000e+00 -1.0595119e+00
+-5.9564115e+01 0.0000000e+00 -1.5103808e+00
+-5.9872110e+01 0.0000000e+00 -1.8875183e+00
+-5.8278984e+01 0.0000000e+00 -2.0261926e+00
+-5.4410079e+01 0.0000000e+00 -1.8067258e+00
+-4.7289640e+01 0.0000000e+00 -1.2712811e+00
+-3.6408325e+01 0.0000000e+00 -6.4901840e-01
+-2.3043455e+01 0.0000000e+00 -2.0799055e-01
+-1.0608417e+01 0.0000000e+00 -3.3773774e-02
+-2.8793768e+00 0.0000000e+00 -4.1456759e-03
+-5.3164202e-01 0.0000000e+00 -4.2134164e-04
+-7.4316036e-02 0.0000000e+00 -3.1260310e-05
+-7.2977267e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.6114066e-03 2.8924477e-05 -3.3688566e-06
+-7.7765463e-02 2.8782925e-04 -8.5209983e-05
+-5.5887682e-01 2.1399489e-03 -1.1964172e-03
+-3.0449110e+00 1.3897017e-02 -1.1898440e-02
+-1.1299588e+01 7.4070416e-02 -8.2035291e-02
+-2.4687902e+01 1.9388566e-01 -2.7770479e-01
+-3.8936678e+01 3.1521654e-01 -6.0086858e-01
+-5.0089646e+01 3.7662683e-01 -9.8536573e-01
+-5.6727134e+01 3.7098044e-01 -1.3595190e+00
+-5.9567833e+01 3.1671329e-01 -1.6725144e+00
+-5.9890660e+01 2.1154276e-01 -1.8655067e+00
+-5.8329846e+01 3.9388426e-02 -1.8540334e+00
+-5.4509141e+01 -1.7895502e-01 -1.5760156e+00
+-4.7430943e+01 -3.5677833e-01 -1.0779346e+00
+-3.6555488e+01 -3.8968278e-01 -5.4108920e-01
+-2.3150580e+01 -2.6250311e-01 -1.7146147e-01
+-1.0658042e+01 -9.4344214e-02 -2.7491745e-02
+-2.8925698e+00 -1.0991114e-02 -3.3077027e-03
+-5.3407326e-01 -5.5029820e-04 -3.2616332e-04
+-7.4661963e-02 4.3071950e-05 -2.3308434e-05
+-7.3325612e-03 1.1526073e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5834154e-02 3.1021339e-04 -1.7072134e-05
+-8.7970990e-01 3.3761831e-03 -6.8664863e-04
+-7.4567368e+00 2.8123815e-02 -1.2461399e-02
+-4.8835234e+01 2.1157285e-01 -1.5907526e-01
+-2.1449715e+02 1.4374182e+00 -1.4747970e+00
+-4.8074358e+02 3.9375344e+00 -5.3447497e+00
+-7.5896287e+02 6.3714793e+00 -1.1704900e+01
+-9.7345934e+02 7.4651428e+00 -1.9115619e+01
+-1.0995376e+03 7.2010888e+00 -2.6171511e+01
+-1.1530471e+03 6.0670850e+00 -3.2011648e+01
+-1.1591452e+03 4.0288335e+00 -3.5646074e+01
+-1.1298880e+03 6.7502936e-01 -3.5496839e+01
+-1.0578579e+03 -3.6952710e+00 -3.0272444e+01
+-9.2324268e+02 -7.3818447e+00 -2.0701389e+01
+-7.1393899e+02 -8.1637022e+00 -1.0229430e+01
+-4.5211256e+02 -5.5293647e+00 -3.0156723e+00
+-2.0335344e+02 -1.9097754e+00 -3.5584820e-01
+-4.6699965e+01 -1.4987314e-01 -3.2997815e-02
+-7.1758215e+00 -3.0429882e-03 -2.5472039e-03
+-8.5044039e-01 1.0224555e-03 -1.4399668e-04
+-7.3545377e-02 1.6959680e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.2763726e-01 2.3597364e-03 -8.5303638e-05
+-7.2154857e+00 2.8906179e-02 -4.1530092e-03
+-7.6109219e+01 2.7752115e-01 -9.3312054e-02
+-6.4576133e+02 2.4629196e+00 -1.5920597e+00
+-3.7141461e+03 2.4167640e+01 -2.3837314e+01
+-8.4806033e+03 6.9461136e+01 -9.3170057e+01
+-1.3357496e+04 1.1127851e+02 -2.0601769e+02
+-1.7063331e+04 1.2719042e+02 -3.3423021e+02
+-1.9217634e+04 1.1961383e+02 -4.5322040e+02
+-2.0127318e+04 9.9254534e+01 -5.5049973e+02
+-2.0233266e+04 6.5693665e+01 -6.1177458e+02
+-1.9739350e+04 1.0055330e+01 -6.1076427e+02
+-1.8515526e+04 -6.4919068e+01 -5.2332471e+02
+-1.6211718e+04 -1.3091227e+02 -3.5865215e+02
+-1.2591486e+04 -1.4736398e+02 -1.7493380e+02
+-8.0003204e+03 -1.0096848e+02 -4.7623164e+01
+-3.5428118e+03 -3.3560561e+01 -3.2672817e+00
+-6.2278661e+02 -1.2274170e+00 -1.9046806e-01
+-7.3885608e+01 4.6113908e-02 -7.7735102e-03
+-7.0344197e+00 1.6007777e-02 -7.9799878e-05
+-5.1585008e-01 1.8253186e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7682516e+00 1.5065405e-02 -1.3412604e-03
+-4.5394268e+01 2.1460632e-01 -3.3366586e-02
+-6.1851369e+02 2.4598542e+00 -6.4154984e-01
+-7.3596668e+03 2.5120423e+01 -1.1786521e+01
+-6.5821434e+04 4.0775800e+02 -3.8828944e+02
+-1.4974242e+05 1.2208549e+03 -1.6301213e+03
+-2.3439975e+05 1.9247284e+03 -3.6205592e+03
+-2.9809693e+05 2.1416673e+03 -5.8215744e+03
+-3.3486663e+05 1.9612959e+03 -7.8099439e+03
+-3.5041025e+05 1.6035824e+03 -9.4144876e+03
+-3.5230978e+05 1.0637516e+03 -1.0439440e+04
+-3.4395377e+05 1.6003793e+02 -1.0452067e+04
+-3.2311155e+05 -1.1035418e+03 -9.0077027e+03
+-2.8372734e+05 -2.2665705e+03 -6.2034957e+03
+-2.2140191e+05 -2.6070429e+03 -3.0049688e+03
+-1.4166949e+05 -1.8190684e+03 -7.6038643e+02
+-6.3210401e+04 -5.8789843e+02 -1.5560011e+01
+-7.1758337e+03 2.6541749e-01 1.5264861e-01
+-6.0661689e+02 1.5479190e+00 7.7733620e-02
+-4.4664143e+01 1.9690528e-01 7.0872248e-03
+-2.7293500e+00 1.6070802e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.8450714e+00 7.6684266e-02 -1.6023125e-02
+-1.8987429e+02 1.3517797e+00 -3.8770507e-01
+-3.3489441e+03 2.1345905e+01 -7.9009329e+00
+-6.0521434e+04 3.3971472e+02 -1.5323744e+02
+-9.3712844e+05 2.2894507e+03 -2.8807909e+02
+-2.3723514e+06 4.8619666e+03 -4.3108530e+03
+-3.8124063e+06 7.4988790e+03 -1.1643181e+04
+-4.7561453e+06 9.4770664e+03 -1.9845858e+04
+-5.1412695e+06 1.0670183e+04 -2.7413640e+04
+-5.1841304e+06 1.1220503e+04 -3.4269259e+04
+-5.1141019e+06 1.1108353e+04 -3.9910911e+04
+-5.0261756e+06 1.0151064e+04 -4.1999032e+04
+-4.8517257e+06 8.3493485e+03 -3.7527541e+04
+-4.3994983e+06 6.1381259e+03 -2.6045466e+04
+-3.4888228e+06 4.2015593e+03 -1.1882957e+04
+-2.1748308e+06 2.9198991e+03 -1.9708981e+03
+-8.8333833e+05 2.0035266e+03 3.9069637e+02
+-6.0043491e+04 4.5119359e+02 2.3016966e+01
+-3.3240236e+03 2.8402512e+01 1.3552657e+00
+-1.8858822e+02 1.8112356e+00 6.9134243e-02
+-9.7859308e+00 1.0376654e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0682677e+01 2.2287080e-01 -4.1391969e-02
+-4.0686868e+02 4.2180801e+00 -1.0333931e+00
+-7.2537804e+03 7.2177187e+01 -2.1743516e+01
+-1.2930801e+05 1.2401411e+03 -4.3462263e+02
+-2.0500825e+06 7.5722031e+03 2.6791522e+03
+-4.9066333e+06 1.4725468e+04 9.5911771e+02
+-7.7768362e+06 2.2420907e+04 -5.2082650e+03
+-9.7263078e+06 2.9201251e+04 -1.2691182e+04
+-1.0623853e+07 3.4406713e+04 -2.0293801e+04
+-1.0840455e+07 3.7854499e+04 -2.9185579e+04
+-1.0771938e+07 3.9316110e+04 -3.9234639e+04
+-1.0580396e+07 3.8456386e+04 -4.6290074e+04
+-1.0145171e+07 3.5172028e+04 -4.4226774e+04
+-9.1346105e+06 2.9850783e+04 -3.0852663e+04
+-7.2410399e+06 2.3254271e+04 -1.2322166e+04
+-4.5861451e+06 1.6187138e+04 1.6734112e+02
+-1.9739422e+06 9.3851336e+03 1.2233207e+03
+-1.2910056e+05 1.7284299e+03 6.9611018e+01
+-7.2443214e+03 1.0132066e+02 3.9120673e+00
+-4.0653473e+02 5.9635061e+00 1.9029190e-01
+-2.0678203e+01 3.1724189e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1875616e+01 4.0645655e-01 -2.5515204e-02
+-6.2659634e+02 7.8380546e+00 -7.9598983e-01
+-1.1125301e+04 1.3636020e+02 -1.8900422e+01
+-1.9683362e+05 2.3675825e+03 -3.9924971e+02
+-3.1388105e+06 1.3969466e+04 6.3441621e+03
+-7.4197997e+06 2.6465987e+04 7.3813264e+03
+-1.1696683e+07 4.0034506e+04 2.9228584e+03
+-1.4592723e+07 5.2432952e+04 -3.1972468e+03
+-1.5931539e+07 6.2408528e+04 -1.0229339e+04
+-1.6267960e+07 6.9380656e+04 -2.0812241e+04
+-1.6181909e+07 7.2847272e+04 -3.5352715e+04
+-1.5907276e+07 7.2264196e+04 -4.7902532e+04
+-1.5265195e+07 6.7363024e+04 -4.9041029e+04
+-1.3765981e+07 5.8429703e+04 -3.4547284e+04
+-1.0947804e+07 4.6302739e+04 -1.2221974e+04
+-6.9772858e+06 3.2315385e+04 2.3877344e+03
+-3.0440608e+06 1.8427150e+04 1.6843439e+03
+-1.9720819e+05 3.3299089e+03 9.7257383e+01
+-1.1152239e+04 1.9347444e+02 5.5095717e+00
+-6.2852285e+02 1.1217448e+01 2.6863888e-01
+-3.1997058e+01 5.8624062e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0734878e+01 5.0766955e-01 7.4713556e-02
+-7.9859497e+02 9.8225649e+00 1.2157456e+00
+-1.4129750e+04 1.7109809e+02 1.6094545e+01
+-2.4910419e+05 2.9661091e+03 2.0562928e+02
+-3.8833820e+06 1.7197780e+04 9.2073717e+03
+-9.2618390e+06 3.2200722e+04 1.1028029e+04
+-1.4586551e+07 4.8492561e+04 6.0149597e+03
+-1.8111854e+07 6.3532071e+04 -9.1501876e+02
+-1.9660705e+07 7.5806151e+04 -9.0009714e+03
+-1.9983506e+07 8.4534770e+04 -2.1918120e+04
+-1.9840122e+07 8.9088100e+04 -4.0451855e+04
+-1.9532413e+07 8.8831841e+04 -5.7128024e+04
+-1.8824945e+07 8.3389792e+04 -5.9779269e+04
+-1.7071390e+07 7.2910925e+04 -4.2606446e+04
+-1.3642240e+07 5.8167061e+04 -1.5169047e+04
+-8.7063481e+06 4.0709345e+04 2.7203743e+03
+-3.7709820e+06 2.3156713e+04 1.2106413e+03
+-2.5004033e+05 4.1848211e+03 7.1850928e+01
+-1.4193970e+04 2.4360124e+02 4.1604787e+00
+-8.0295128e+02 1.4112452e+01 2.0610950e-01
+-4.0996231e+01 7.3539403e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6397181e+01 4.2783316e-01 2.3758821e-01
+-9.0796571e+02 8.2729330e+00 4.5052883e+00
+-1.6035086e+04 1.4384358e+02 7.3323652e+01
+-2.8228879e+05 2.4862147e+03 1.1876812e+03
+-4.2574579e+06 1.4277806e+04 1.0772477e+04
+-1.0331863e+07 2.6570536e+04 1.1252827e+04
+-1.6291368e+07 3.9894630e+04 3.3885220e+03
+-2.0128238e+07 5.2225859e+04 -6.5813538e+03
+-2.1694523e+07 6.2336368e+04 -1.7415533e+04
+-2.1913162e+07 6.9574575e+04 -3.3235282e+04
+-2.1692732e+07 7.3427345e+04 -5.4942615e+04
+-2.1389895e+07 7.3386515e+04 -7.3917132e+04
+-2.0723117e+07 6.9120884e+04 -7.6074585e+04
+-1.8915658e+07 6.0672773e+04 -5.4707857e+04
+-1.5188137e+07 4.8577110e+04 -2.1132504e+04
+-9.6827444e+06 3.4072201e+04 1.0824167e+03
+-4.1285092e+06 1.9385453e+04 9.1268627e+00
+-2.8359377e+05 3.5119980e+03 3.0402976e+00
+-1.6125320e+04 2.0506020e+02 2.8227982e-01
+-9.1410847e+02 1.1902838e+01 1.7793259e-02
+-4.6765655e+01 6.2071688e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9309531e+01 1.6752683e-01 3.8813260e-01
+-9.6425750e+02 3.2366716e+00 7.5334786e+00
+-1.7019213e+04 5.6198201e+01 1.2566889e+02
+-2.9955111e+05 9.6957141e+02 2.0788777e+03
+-4.3967558e+06 5.5438328e+03 1.1359418e+04
+-1.0836259e+07 1.0288816e+04 9.8890166e+03
+-1.7113282e+07 1.5424878e+04 -1.1456179e+03
+-2.1066854e+07 2.0179991e+04 -1.4411504e+04
+-2.2580203e+07 2.4083878e+04 -2.8102601e+04
+-2.2692880e+07 2.6885347e+04 -4.6412385e+04
+-2.2409902e+07 2.8388491e+04 -7.0202240e+04
+-2.2122889e+07 2.8399752e+04 -9.0135123e+04
+-2.1520830e+07 2.6787439e+04 -9.1031021e+04
+-1.9742206e+07 2.3554320e+04 -6.5791901e+04
+-1.5905758e+07 1.8889943e+04 -2.7069611e+04
+-1.0124607e+07 1.3265107e+04 -1.0604702e+03
+-4.2554485e+06 7.5504956e+03 -1.1994418e+03
+-3.0102907e+05 1.3701387e+03 -6.7460606e+01
+-1.7122618e+04 8.0147972e+01 -3.7619783e+00
+-9.7135997e+02 4.6589438e+00 -1.8148606e-01
+-4.9738106e+01 2.4317822e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0180888e+01 -1.6752683e-01 4.4899073e-01
+-9.8115481e+02 -3.2366717e+00 8.7541522e+00
+-1.7316270e+04 -5.6198202e+01 1.4669065e+02
+-3.0480363e+05 -9.6957143e+02 2.4353152e+03
+-4.4280522e+06 -5.5438329e+03 1.1480518e+04
+-1.0979796e+07 -1.0288816e+04 9.1291525e+03
+-1.7351437e+07 -1.5424881e+04 -3.2545763e+03
+-2.1331790e+07 -2.0179990e+04 -1.7915141e+04
+-2.2816803e+07 -2.4083879e+04 -3.2803576e+04
+-2.2886946e+07 -2.6885343e+04 -5.2096894e+04
+-2.2580420e+07 -2.8388493e+04 -7.6618923e+04
+-2.2300771e+07 -2.8399753e+04 -9.6787328e+04
+-2.1726934e+07 -2.6787440e+04 -9.7068598e+04
+-1.9968212e+07 -2.3554320e+04 -7.0266211e+04
+-1.6107527e+07 -1.8889945e+04 -2.9533218e+04
+-1.0246109e+07 -1.3265106e+04 -2.0141609e+03
+-4.2821236e+06 -7.5504954e+03 -1.6990797e+03
+-3.0632706e+05 -1.3701387e+03 -9.6821407e+01
+-1.7423401e+04 -8.0147974e+01 -5.4584320e+00
+-9.8854244e+02 -4.6589439e+00 -2.6559372e-01
+-5.0627923e+01 -2.4317822e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9309531e+01 -4.2783316e-01 3.8813259e-01
+-9.6425750e+02 -8.2729331e+00 7.5334784e+00
+-1.7019213e+04 -1.4384358e+02 1.2566889e+02
+-2.9955111e+05 -2.4862147e+03 2.0788776e+03
+-4.3967558e+06 -1.4277806e+04 1.1359419e+04
+-1.0836259e+07 -2.6570536e+04 9.8890151e+03
+-1.7113282e+07 -3.9894632e+04 -1.1456197e+03
+-2.1066854e+07 -5.2225858e+04 -1.4411500e+04
+-2.2580203e+07 -6.2336366e+04 -2.8102599e+04
+-2.2692880e+07 -6.9574572e+04 -4.6412385e+04
+-2.2409902e+07 -7.3427341e+04 -7.0202243e+04
+-2.2122889e+07 -7.3386517e+04 -9.0135123e+04
+-2.1520830e+07 -6.9120881e+04 -9.1031021e+04
+-1.9742206e+07 -6.0672772e+04 -6.5791905e+04
+-1.5905758e+07 -4.8577108e+04 -2.7069605e+04
+-1.0124607e+07 -3.4072202e+04 -1.0604704e+03
+-4.2554485e+06 -1.9385453e+04 -1.1994418e+03
+-3.0102907e+05 -3.5119979e+03 -6.7460617e+01
+-1.7122618e+04 -2.0506020e+02 -3.7619780e+00
+-9.7135997e+02 -1.1902838e+01 -1.8148606e-01
+-4.9738106e+01 -6.2071687e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6397181e+01 -5.0766955e-01 2.3758820e-01
+-9.0796571e+02 -9.8225650e+00 4.5052882e+00
+-1.6035086e+04 -1.7109809e+02 7.3323651e+01
+-2.8228879e+05 -2.9661091e+03 1.1876811e+03
+-4.2574579e+06 -1.7197780e+04 1.0772477e+04
+-1.0331863e+07 -3.2200723e+04 1.1252826e+04
+-1.6291368e+07 -4.8492559e+04 3.3885209e+03
+-2.0128238e+07 -6.3532070e+04 -6.5813535e+03
+-2.1694523e+07 -7.5806150e+04 -1.7415529e+04
+-2.1913162e+07 -8.4534767e+04 -3.3235278e+04
+-2.1692732e+07 -8.9088097e+04 -5.4942618e+04
+-2.1389895e+07 -8.8831835e+04 -7.3917128e+04
+-2.0723117e+07 -8.3389797e+04 -7.6074588e+04
+-1.8915658e+07 -7.2910925e+04 -5.4707858e+04
+-1.5188137e+07 -5.8167061e+04 -2.1132503e+04
+-9.6827444e+06 -4.0709346e+04 1.0824171e+03
+-4.1285092e+06 -2.3156713e+04 9.1269190e+00
+-2.8359377e+05 -4.1848211e+03 3.0402905e+00
+-1.6125320e+04 -2.4360124e+02 2.8227985e-01
+-9.1410847e+02 -1.4112453e+01 1.7793286e-02
+-4.6765655e+01 -7.3539404e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0734878e+01 -4.0645655e-01 7.4713548e-02
+-7.9859497e+02 -7.8380547e+00 1.2157459e+00
+-1.4129750e+04 -1.3636020e+02 1.6094540e+01
+-2.4910419e+05 -2.3675825e+03 2.0562926e+02
+-3.8833820e+06 -1.3969466e+04 9.2073714e+03
+-9.2618390e+06 -2.6465987e+04 1.1028029e+04
+-1.4586551e+07 -4.0034505e+04 6.0149593e+03
+-1.8111854e+07 -5.2432953e+04 -9.1501992e+02
+-1.9660705e+07 -6.2408527e+04 -9.0009705e+03
+-1.9983506e+07 -6.9380657e+04 -2.1918119e+04
+-1.9840122e+07 -7.2847273e+04 -4.0451857e+04
+-1.9532413e+07 -7.2264191e+04 -5.7128027e+04
+-1.8824945e+07 -6.7363020e+04 -5.9779265e+04
+-1.7071390e+07 -5.8429703e+04 -4.2606446e+04
+-1.3642240e+07 -4.6302740e+04 -1.5169048e+04
+-8.7063481e+06 -3.2315386e+04 2.7203748e+03
+-3.7709820e+06 -1.8427151e+04 1.2106413e+03
+-2.5004033e+05 -3.3299089e+03 7.1850929e+01
+-1.4193970e+04 -1.9347444e+02 4.1604784e+00
+-8.0295128e+02 -1.1217448e+01 2.0610951e-01
+-4.0996231e+01 -5.8624062e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1875616e+01 -2.2287080e-01 -2.5515212e-02
+-6.2659634e+02 -4.2180801e+00 -7.9598956e-01
+-1.1125301e+04 -7.2177187e+01 -1.8900425e+01
+-1.9683362e+05 -1.2401411e+03 -3.9924971e+02
+-3.1388105e+06 -7.5722031e+03 6.3441621e+03
+-7.4197997e+06 -1.4725468e+04 7.3813269e+03
+-1.1696683e+07 -2.2420906e+04 2.9228578e+03
+-1.4592723e+07 -2.9201251e+04 -3.1972477e+03
+-1.5931539e+07 -3.4406711e+04 -1.0229340e+04
+-1.6267960e+07 -3.7854498e+04 -2.0812242e+04
+-1.6181909e+07 -3.9316114e+04 -3.5352718e+04
+-1.5907276e+07 -3.8456385e+04 -4.7902530e+04
+-1.5265195e+07 -3.5172025e+04 -4.9041030e+04
+-1.3765981e+07 -2.9850783e+04 -3.4547284e+04
+-1.0947804e+07 -2.3254270e+04 -1.2221976e+04
+-6.9772858e+06 -1.6187138e+04 2.3877346e+03
+-3.0440608e+06 -9.3851334e+03 1.6843439e+03
+-1.9720819e+05 -1.7284298e+03 9.7257386e+01
+-1.1152239e+04 -1.0132066e+02 5.5095717e+00
+-6.2852285e+02 -5.9635060e+00 2.6863889e-01
+-3.1997058e+01 -3.1724189e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0682677e+01 -7.6684265e-02 -4.1391970e-02
+-4.0686868e+02 -1.3517797e+00 -1.0333930e+00
+-7.2537804e+03 -2.1345905e+01 -2.1743517e+01
+-1.2930801e+05 -3.3971472e+02 -4.3462264e+02
+-2.0500825e+06 -2.2894507e+03 2.6791521e+03
+-4.9066333e+06 -4.8619665e+03 9.5911732e+02
+-7.7768362e+06 -7.4988790e+03 -5.2082651e+03
+-9.7263078e+06 -9.4770660e+03 -1.2691181e+04
+-1.0623853e+07 -1.0670183e+04 -2.0293802e+04
+-1.0840455e+07 -1.1220503e+04 -2.9185581e+04
+-1.0771938e+07 -1.1108350e+04 -3.9234637e+04
+-1.0580396e+07 -1.0151064e+04 -4.6290075e+04
+-1.0145171e+07 -8.3493484e+03 -4.4226775e+04
+-9.1346105e+06 -6.1381255e+03 -3.0852663e+04
+-7.2410399e+06 -4.2015587e+03 -1.2322166e+04
+-4.5861451e+06 -2.9198990e+03 1.6734105e+02
+-1.9739422e+06 -2.0035266e+03 1.2233207e+03
+-1.2910056e+05 -4.5119358e+02 6.9611019e+01
+-7.2443214e+03 -2.8402512e+01 3.9120673e+00
+-4.0653473e+02 -1.8112356e+00 1.9029190e-01
+-2.0678203e+01 -1.0376654e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.8450714e+00 -1.5065405e-02 -1.6023126e-02
+-1.8987429e+02 -2.1460632e-01 -3.8770507e-01
+-3.3489441e+03 -2.4598541e+00 -7.9009331e+00
+-6.0521434e+04 -2.5120422e+01 -1.5323744e+02
+-9.3712844e+05 -4.0775799e+02 -2.8807911e+02
+-2.3723514e+06 -1.2208549e+03 -4.3108530e+03
+-3.8124063e+06 -1.9247283e+03 -1.1643181e+04
+-4.7561453e+06 -2.1416672e+03 -1.9845858e+04
+-5.1412695e+06 -1.9612960e+03 -2.7413641e+04
+-5.1841304e+06 -1.6035823e+03 -3.4269259e+04
+-5.1141019e+06 -1.0637513e+03 -3.9910911e+04
+-5.0261756e+06 -1.6003803e+02 -4.1999032e+04
+-4.8517257e+06 1.1035418e+03 -3.7527541e+04
+-4.3994983e+06 2.2665705e+03 -2.6045466e+04
+-3.4888228e+06 2.6070430e+03 -1.1882957e+04
+-2.1748308e+06 1.8190684e+03 -1.9708980e+03
+-8.8333833e+05 5.8789845e+02 3.9069637e+02
+-6.0043491e+04 -2.6541711e-01 2.3016966e+01
+-3.3240236e+03 -1.5479190e+00 1.3552657e+00
+-1.8858822e+02 -1.9690528e-01 6.9134243e-02
+-9.7859308e+00 -1.6070802e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7682516e+00 -2.3597363e-03 -1.3412610e-03
+-4.5394268e+01 -2.8906178e-02 -3.3366582e-02
+-6.1851369e+02 -2.7752115e-01 -6.4154982e-01
+-7.3596668e+03 -2.4629196e+00 -1.1786522e+01
+-6.5821434e+04 -2.4167639e+01 -3.8828944e+02
+-1.4974242e+05 -6.9461135e+01 -1.6301213e+03
+-2.3439975e+05 -1.1127851e+02 -3.6205592e+03
+-2.9809693e+05 -1.2719042e+02 -5.8215744e+03
+-3.3486663e+05 -1.1961383e+02 -7.8099439e+03
+-3.5041025e+05 -9.9254538e+01 -9.4144876e+03
+-3.5230978e+05 -6.5693661e+01 -1.0439440e+04
+-3.4395377e+05 -1.0055328e+01 -1.0452067e+04
+-3.2311155e+05 6.4919079e+01 -9.0077027e+03
+-2.8372734e+05 1.3091227e+02 -6.2034957e+03
+-2.2140191e+05 1.4736398e+02 -3.0049688e+03
+-1.4166949e+05 1.0096848e+02 -7.6038642e+02
+-6.3210401e+04 3.3560561e+01 -1.5560011e+01
+-7.1758337e+03 1.2274170e+00 1.5264855e-01
+-6.0661689e+02 -4.6113909e-02 7.7733627e-02
+-4.4664143e+01 -1.6007777e-02 7.0872248e-03
+-2.7293500e+00 -1.8253185e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.2763726e-01 -3.1021339e-04 -8.5303713e-05
+-7.2154857e+00 -3.3761831e-03 -4.1530093e-03
+-7.6109219e+01 -2.8123815e-02 -9.3312061e-02
+-6.4576133e+02 -2.1157284e-01 -1.5920598e+00
+-3.7141461e+03 -1.4374181e+00 -2.3837314e+01
+-8.4806033e+03 -3.9375343e+00 -9.3170057e+01
+-1.3357496e+04 -6.3714790e+00 -2.0601769e+02
+-1.7063331e+04 -7.4651428e+00 -3.3423021e+02
+-1.9217634e+04 -7.2010888e+00 -4.5322040e+02
+-2.0127318e+04 -6.0670847e+00 -5.5049973e+02
+-2.0233266e+04 -4.0288333e+00 -6.1177458e+02
+-1.9739350e+04 -6.7503015e-01 -6.1076427e+02
+-1.8515526e+04 3.6952709e+00 -5.2332471e+02
+-1.6211718e+04 7.3818445e+00 -3.5865215e+02
+-1.2591486e+04 8.1637022e+00 -1.7493380e+02
+-8.0003204e+03 5.5293647e+00 -4.7623164e+01
+-3.5428118e+03 1.9097753e+00 -3.2672817e+00
+-6.2278661e+02 1.4987314e-01 -1.9046806e-01
+-7.3885608e+01 3.0429894e-03 -7.7735090e-03
+-7.0344197e+00 -1.0224555e-03 -7.9799805e-05
+-5.1585008e-01 -1.6959681e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.5834154e-02 -2.8924476e-05 -1.7072142e-05
+-8.7970990e-01 -2.8782924e-04 -6.8664871e-04
+-7.4567368e+00 -2.1399488e-03 -1.2461399e-02
+-4.8835234e+01 -1.3897017e-02 -1.5907526e-01
+-2.1449715e+02 -7.4070415e-02 -1.4747970e+00
+-4.8074358e+02 -1.9388567e-01 -5.3447497e+00
+-7.5896287e+02 -3.1521655e-01 -1.1704900e+01
+-9.7345934e+02 -3.7662683e-01 -1.9115619e+01
+-1.0995376e+03 -3.7098044e-01 -2.6171511e+01
+-1.1530471e+03 -3.1671327e-01 -3.2011647e+01
+-1.1591452e+03 -2.1154273e-01 -3.5646074e+01
+-1.1298880e+03 -3.9388389e-02 -3.5496839e+01
+-1.0578579e+03 1.7895502e-01 -3.0272444e+01
+-9.2324268e+02 3.5677834e-01 -2.0701389e+01
+-7.1393899e+02 3.8968279e-01 -1.0229430e+01
+-4.5211256e+02 2.6250311e-01 -3.0156723e+00
+-2.0335344e+02 9.4344215e-02 -3.5584819e-01
+-4.6699965e+01 1.0991114e-02 -3.2997814e-02
+-7.1758215e+00 5.5029824e-04 -2.5472039e-03
+-8.5044039e-01 -4.3071945e-05 -1.4399668e-04
+-7.3545377e-02 -1.1526073e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.6114066e-03 0.0000000e+00 -3.3688568e-06
+-7.7765463e-02 0.0000000e+00 -8.5209983e-05
+-5.5887682e-01 0.0000000e+00 -1.1964172e-03
+-3.0449110e+00 0.0000000e+00 -1.1898440e-02
+-1.1299588e+01 0.0000000e+00 -8.2035292e-02
+-2.4687902e+01 0.0000000e+00 -2.7770478e-01
+-3.8936678e+01 0.0000000e+00 -6.0086858e-01
+-5.0089646e+01 0.0000000e+00 -9.8536573e-01
+-5.6727134e+01 0.0000000e+00 -1.3595190e+00
+-5.9567833e+01 0.0000000e+00 -1.6725144e+00
+-5.9890660e+01 0.0000000e+00 -1.8655067e+00
+-5.8329846e+01 0.0000000e+00 -1.8540334e+00
+-5.4509141e+01 0.0000000e+00 -1.5760156e+00
+-4.7430943e+01 0.0000000e+00 -1.0779346e+00
+-3.6555488e+01 0.0000000e+00 -5.4108920e-01
+-2.3150580e+01 0.0000000e+00 -1.7146147e-01
+-1.0658042e+01 0.0000000e+00 -2.7491745e-02
+-2.8925698e+00 0.0000000e+00 -3.3077026e-03
+-5.3407326e-01 0.0000000e+00 -3.2616332e-04
+-7.4661963e-02 0.0000000e+00 -2.3308434e-05
+-7.3325612e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.6245914e-03 2.3619094e-05 -1.0434326e-05
+-7.7851046e-02 2.5323234e-04 -1.7808338e-04
+-5.5908576e-01 2.1176346e-03 -2.0867869e-03
+-3.0438474e+00 1.5837246e-02 -1.8987656e-02
+-1.1288338e+01 9.4623656e-02 -1.2486128e-01
+-2.4655113e+01 2.5029769e-01 -4.0794718e-01
+-3.8888938e+01 3.8795995e-01 -8.4364770e-01
+-5.0048883e+01 4.1308456e-01 -1.2974955e+00
+-5.6710448e+01 3.2783094e-01 -1.6420133e+00
+-5.9578238e+01 1.9375240e-01 -1.8253613e+00
+-5.9925487e+01 5.2590553e-02 -1.8431246e+00
+-5.8391315e+01 -9.3745523e-02 -1.6879099e+00
+-5.4602000e+01 -2.4116349e-01 -1.3538877e+00
+-4.7548580e+01 -3.4407748e-01 -8.9217374e-01
+-3.6671594e+01 -3.3827139e-01 -4.3779630e-01
+-2.3232680e+01 -2.1890373e-01 -1.3679255e-01
+-1.0695104e+01 -7.8021484e-02 -2.1708854e-02
+-2.9020768e+00 -9.6267333e-03 -2.5750427e-03
+-5.3575630e-01 -6.4382408e-04 -2.4818459e-04
+-7.4892106e-02 -8.5478030e-07 -1.7186975e-05
+-7.3549787e-03 5.2305242e-06 0.0000000e+00
+0 0 0
+0 0 0
+-7.5983440e-02 2.3960219e-04 -6.6697337e-05
+-8.8086869e-01 2.8110473e-03 -1.4657223e-03
+-7.4609099e+00 2.6495783e-02 -2.1670721e-02
+-4.8823872e+01 2.3519645e-01 -2.5239241e-01
+-2.1427868e+02 1.8589222e+00 -2.2351690e+00
+-4.8004440e+02 5.1479050e+00 -7.8319558e+00
+-7.5792077e+02 7.9359947e+00 -1.6422091e+01
+-9.7254395e+02 8.2662836e+00 -2.5190674e+01
+-1.0991040e+03 6.3548432e+00 -3.1651219e+01
+-1.1531456e+03 3.5893166e+00 -3.4948294e+01
+-1.1597029e+03 8.2292380e-01 -3.5160932e+01
+-1.1309364e+03 -1.9995368e+00 -3.2206748e+01
+-1.0594987e+03 -4.9137942e+00 -2.5893277e+01
+-9.2537320e+02 -7.0506068e+00 -1.7056230e+01
+-7.1606715e+02 -7.0260354e+00 -8.2403103e+00
+-4.5360108e+02 -4.5751336e+00 -2.3955656e+00
+-2.0397977e+02 -1.5674798e+00 -2.7977721e-01
+-4.6829723e+01 -1.3417192e-01 -2.5474400e-02
+-7.1944853e+00 -5.5583024e-03 -1.8961227e-03
+-8.5258471e-01 3.4791059e-04 -1.0057301e-04
+-7.3729043e-02 8.8323800e-05 0.0000000e+00
+0 0 0
+0 0 0
+-5.2886611e-01 1.6698914e-03 -2.0143936e-04
+-7.2275351e+00 2.1946990e-02 -7.2879947e-03
+-7.6177250e+01 2.3843887e-01 -1.5120014e-01
+-6.4577770e+02 2.5742291e+00 -2.4738616e+00
+-3.7104697e+03 3.1680124e+01 -3.5971432e+01
+-8.4672527e+03 9.1992051e+01 -1.3616614e+02
+-1.3337229e+04 1.4027838e+02 -2.8877479e+02
+-1.7045266e+04 1.4218556e+02 -4.4075960e+02
+-1.9208375e+04 1.0518536e+02 -5.4884888e+02
+-2.0127519e+04 5.6127143e+01 -6.0118553e+02
+-2.0241209e+04 9.9122431e+00 -6.0233277e+02
+-1.9755330e+04 -3.6313261e+01 -5.5203875e+02
+-1.8541485e+04 -8.5547848e+01 -4.4544598e+02
+-1.6246356e+04 -1.2385940e+02 -2.9399949e+02
+-1.2626598e+04 -1.2568707e+02 -1.4022589e+02
+-8.0246284e+03 -8.2848649e+01 -3.7644400e+01
+-3.5521520e+03 -2.7312553e+01 -2.5591145e+00
+-6.2413813e+02 -1.1965882e+00 -1.4517935e-01
+-7.4029510e+01 -1.5377298e-03 -5.2975094e-03
+-7.0474955e+00 8.1046463e-03 2.1500864e-05
+-5.1679604e-01 1.0557799e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7760678e+00 9.4487444e-03 3.7372075e-05
+-4.5493936e+01 1.4127315e-01 -1.9620145e-02
+-6.1941472e+02 1.7889330e+00 -6.6909267e-01
+-7.3638117e+03 2.2402874e+01 -1.6352798e+01
+-6.5763167e+04 5.4116357e+02 -5.8410275e+02
+-1.4949217e+05 1.6341244e+03 -2.3764832e+03
+-2.3401638e+05 2.4501126e+03 -5.0696907e+03
+-2.9775530e+05 2.4120972e+03 -7.6812278e+03
+-3.3468715e+05 1.7140087e+03 -9.4695308e+03
+-3.5039903e+05 8.5944676e+02 -1.0284067e+04
+-3.5242834e+05 1.0321406e+02 -1.0258804e+04
+-3.4420229e+05 -6.3646587e+02 -9.4101322e+03
+-3.2352600e+05 -1.4521296e+03 -7.6291020e+03
+-2.8429356e+05 -2.1278169e+03 -5.0589236e+03
+-2.2198467e+05 -2.2050487e+03 -2.3967985e+03
+-1.4207027e+05 -1.4808629e+03 -5.9799778e+02
+-6.3348971e+04 -4.7437645e+02 -1.2364313e+01
+-7.1862760e+03 -3.2364714e+00 1.1783131e-01
+-6.0736344e+02 7.9997889e-01 6.2864846e-02
+-4.4715884e+01 1.1688809e-01 5.8228453e-03
+-2.7324628e+00 9.9914595e-03 0.0000000e+00
+0 0 0
+0 0 0
+-9.8790248e+00 4.2139979e-02 1.2621851e-03
+-1.9043069e+02 7.3499625e-01 -3.6060906e-02
+-3.3569568e+03 1.1437254e+01 -1.6717580e+00
+-6.0636421e+04 1.7866303e+02 -4.2944528e+01
+-9.3702850e+05 1.5144124e+03 -1.1161348e+03
+-2.3673460e+06 3.6071078e+03 -8.0945111e+03
+-3.8044890e+06 5.5698566e+03 -1.9131553e+04
+-4.7501369e+06 6.6047477e+03 -2.9332592e+04
+-5.1401114e+06 6.7441974e+03 -3.5520826e+04
+-5.1874098e+06 6.4460684e+03 -3.7828035e+04
+-5.1201903e+06 5.9804100e+03 -3.7616853e+04
+-5.0346882e+06 5.2826360e+03 -3.5023426e+04
+-4.8635708e+06 4.2516865e+03 -2.8882154e+04
+-4.4145738e+06 3.0547377e+03 -1.8989280e+04
+-3.5039362e+06 2.0780113e+03 -8.1588918e+03
+-2.1849549e+06 1.5355443e+03 -1.0511860e+03
+-8.8631495e+05 1.1737592e+03 2.7730377e+02
+-6.0068963e+04 2.8272228e+02 1.6817594e+01
+-3.3254251e+03 1.8000513e+01 1.0185920e+00
+-1.8866801e+02 1.1620309e+00 5.3235845e-02
+-9.7900484e+00 6.7344874e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.0765671e+01 1.1813072e-01 7.0032856e-03
+-4.0833121e+02 2.2056174e+00 -1.0897534e-03
+-7.2768898e+03 3.7151083e+01 -2.6055595e+00
+-1.2967578e+05 6.2801938e+02 -8.4187117e+01
+-2.0544745e+06 4.1637682e+03 1.6584087e+03
+-4.9052120e+06 8.6917807e+03 -4.8475047e+03
+-7.7726015e+06 1.3469705e+04 -1.6982015e+04
+-9.7266414e+06 1.7300656e+04 -2.7344333e+04
+-1.0632400e+07 1.9882073e+04 -3.1935136e+04
+-1.0854964e+07 2.1463848e+04 -3.2443879e+04
+-1.0788474e+07 2.2185004e+04 -3.2113140e+04
+-1.0597928e+07 2.1867023e+04 -3.1165695e+04
+-1.0165702e+07 2.0293879e+04 -2.6676227e+04
+-9.1589512e+06 1.7525015e+04 -1.6805855e+04
+-7.2647712e+06 1.3907312e+04 -4.9038976e+03
+-4.6013955e+06 9.8667729e+03 2.0152850e+03
+-1.9774624e+06 5.8235983e+03 8.8559655e+02
+-1.2907510e+05 1.0912837e+03 5.1583111e+01
+-7.2425019e+03 6.4795914e+01 2.9681366e+00
+-4.0641313e+02 3.8610939e+00 1.4747559e-01
+-2.0671029e+01 2.0764653e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2008986e+01 2.1385999e-01 3.7640293e-02
+-6.2897459e+02 4.0713008e+00 5.5020645e-01
+-1.1163282e+04 6.9798707e+01 5.8833549e+00
+-1.9744143e+05 1.1936339e+03 4.8081295e+01
+-3.1469960e+06 7.3453441e+03 5.0519911e+03
+-7.4202046e+06 1.4634427e+04 -4.8571623e+02
+-1.1693211e+07 2.2609645e+04 -1.3097286e+04
+-1.4595403e+07 2.9692157e+04 -2.2808381e+04
+-1.5944730e+07 3.5220197e+04 -2.4955623e+04
+-1.6287537e+07 3.9163675e+04 -2.3077680e+04
+-1.6201728e+07 4.1451652e+04 -2.2525015e+04
+-1.5926005e+07 4.1728102e+04 -2.3657625e+04
+-1.5286526e+07 3.9610283e+04 -2.1642848e+04
+-1.3792377e+07 3.5011683e+04 -1.2733497e+04
+-1.0974278e+07 2.8240686e+04 -5.9323602e+02
+-6.9934594e+06 2.0005467e+04 5.4416886e+03
+-3.0456045e+06 1.1528905e+04 1.2800781e+03
+-1.9702106e+05 2.1086688e+03 7.5567790e+01
+-1.1140394e+04 1.2413918e+02 4.3800522e+00
+-6.2778829e+02 7.2884870e+00 2.1810406e-01
+-3.1956412e+01 3.8510476e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0896150e+01 2.6733856e-01 1.0779272e-01
+-8.0144552e+02 5.1093407e+00 1.9202986e+00
+-1.4174736e+04 8.7757025e+01 2.8947669e+01
+-2.4981401e+05 1.4990832e+03 4.3331311e+02
+-3.8918945e+06 8.9302346e+03 7.3608708e+03
+-9.2582460e+06 1.7426380e+04 9.7600638e+02
+-1.4575634e+07 2.6824891e+04 -1.4156447e+04
+-1.8106500e+07 3.5462192e+04 -2.5280522e+04
+-1.9666523e+07 4.2509159e+04 -2.6752197e+04
+-1.9995327e+07 4.7743145e+04 -2.3510656e+04
+-1.9850452e+07 5.0946655e+04 -2.2676063e+04
+-1.9540245e+07 5.1668125e+04 -2.4783755e+04
+-1.8836057e+07 4.9435166e+04 -2.3497010e+04
+-1.7090282e+07 4.4050739e+04 -1.3643859e+04
+-1.3663893e+07 3.5750505e+04 4.9876045e+02
+-8.7183589e+06 2.5363763e+04 7.1512972e+03
+-3.7679198e+06 1.4553170e+04 1.0647922e+03
+-2.4958997e+05 2.6585111e+03 6.4593923e+01
+-1.4165858e+04 1.5678952e+02 3.8317592e+00
+-8.0122260e+02 9.1973081e+00 1.9426185e-01
+-4.0901369e+01 4.8450445e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6559448e+01 2.2592964e-01 2.0367588e-01
+-9.1078245e+02 4.3171898e+00 3.8125628e+00
+-1.6078579e+04 7.4049086e+01 6.1014014e+01
+-2.8295954e+05 1.2616474e+03 9.6920273e+02
+-4.2631309e+06 7.3965128e+03 8.1759748e+03
+-1.0319655e+07 1.4284314e+04 -8.9060607e+02
+-1.6266895e+07 2.1925313e+04 -2.0463741e+04
+-2.0107159e+07 2.9037841e+04 -3.5118299e+04
+-2.1684085e+07 3.4938076e+04 -3.7985256e+04
+-2.1908048e+07 3.9386778e+04 -3.4742831e+04
+-2.1684997e+07 4.2165251e+04 -3.3695952e+04
+-2.1379284e+07 4.2897271e+04 -3.5536313e+04
+-2.0717424e+07 4.1189611e+04 -3.2983424e+04
+-1.8921313e+07 3.6843169e+04 -2.0121075e+04
+-1.5200365e+07 2.9997278e+04 -2.1402441e+03
+-9.6876693e+06 2.1316686e+04 6.8317344e+03
+-4.1196969e+06 1.2225016e+04 3.4762264e+02
+-2.8284866e+05 2.2376401e+03 2.3391490e+01
+-1.6078990e+04 1.3234618e+02 1.5051481e+00
+-9.1126444e+02 7.7772001e+00 8.1224842e-02
+-4.6609864e+01 4.0993771e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9459951e+01 8.8646799e-02 2.8770218e-01
+-9.6681596e+02 1.6928753e+00 5.4704715e+00
+-1.7057751e+04 2.9003499e+01 8.9054679e+01
+-3.0013006e+05 4.9338943e+02 1.4362583e+03
+-4.3989095e+06 2.8728251e+03 8.1136280e+03
+-1.0815585e+07 5.5230425e+03 -3.7993941e+03
+-1.7076034e+07 8.4643427e+03 -2.7586511e+04
+-2.1030752e+07 1.1214163e+04 -4.5864812e+04
+-2.2553905e+07 1.3508681e+04 -5.0734231e+04
+-2.2671341e+07 1.5248031e+04 -4.8134140e+04
+-2.2385217e+07 1.6342549e+04 -4.6996302e+04
+-2.2095526e+07 1.6646559e+04 -4.8108855e+04
+-2.1500042e+07 1.6007277e+04 -4.3714503e+04
+-1.9735786e+07 1.4341543e+04 -2.7633243e+04
+-1.5909200e+07 1.1693955e+04 -5.8878326e+03
+-1.0123145e+07 8.3177557e+03 5.6493441e+03
+-4.2419364e+06 4.7710036e+03 -4.0881257e+02
+-3.0005373e+05 8.7451628e+02 -2.1021438e+01
+-1.7062048e+04 5.1811879e+01 -1.0568373e+00
+-9.6764273e+02 3.0486741e+00 -4.5546409e-02
+-4.9534539e+01 1.6082455e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0324722e+01 -8.8646802e-02 3.2112748e-01
+-9.8357729e+02 -1.6928753e+00 6.1293573e+00
+-1.7352315e+04 -2.9003499e+01 1.0018152e+02
+-3.0533793e+05 -4.9338947e+02 1.6212552e+03
+-4.4286643e+06 -2.8728256e+03 7.9789918e+03
+-1.0955640e+07 -5.5230428e+03 -5.1311332e+03
+-1.7309007e+07 -8.4643454e+03 -3.0632013e+04
+-2.1289573e+07 -1.1214163e+04 -5.0420588e+04
+-2.2784011e+07 -1.3508680e+04 -5.6195348e+04
+-2.2858701e+07 -1.5248030e+04 -5.3944505e+04
+-2.2548890e+07 -1.6342547e+04 -5.2789083e+04
+-2.2266719e+07 -1.6646558e+04 -5.3548058e+04
+-2.1700145e+07 -1.6007281e+04 -4.8323018e+04
+-1.9956968e+07 -1.4341543e+04 -3.0883443e+04
+-1.6107436e+07 -1.1693957e+04 -7.5861511e+03
+-1.0242108e+07 -8.3177556e+03 5.0480558e+03
+-4.2668068e+06 -4.7710034e+03 -7.2672435e+02
+-3.0526492e+05 -8.7451628e+02 -3.9833775e+01
+-1.7357460e+04 -5.1811879e+01 -2.1505577e+00
+-9.8449561e+02 -3.0486740e+00 -1.0003562e-01
+-5.0406310e+01 -1.6082454e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9459951e+01 -2.2592964e-01 2.8770219e-01
+-9.6681596e+02 -4.3171899e+00 5.4704717e+00
+-1.7057751e+04 -7.4049089e+01 8.9054670e+01
+-3.0013006e+05 -1.2616474e+03 1.4362582e+03
+-4.3989095e+06 -7.3965129e+03 8.1136289e+03
+-1.0815585e+07 -1.4284314e+04 -3.7993944e+03
+-1.7076034e+07 -2.1925316e+04 -2.7586511e+04
+-2.1030752e+07 -2.9037840e+04 -4.5864809e+04
+-2.2553905e+07 -3.4938078e+04 -5.0734231e+04
+-2.2671341e+07 -3.9386775e+04 -4.8134140e+04
+-2.2385217e+07 -4.2165252e+04 -4.6996303e+04
+-2.2095526e+07 -4.2897272e+04 -4.8108856e+04
+-2.1500042e+07 -4.1189604e+04 -4.3714502e+04
+-1.9735786e+07 -3.6843169e+04 -2.7633246e+04
+-1.5909200e+07 -2.9997275e+04 -5.8878297e+03
+-1.0123145e+07 -2.1316686e+04 5.6493441e+03
+-4.2419364e+06 -1.2225016e+04 -4.0881260e+02
+-3.0005373e+05 -2.2376401e+03 -2.1021440e+01
+-1.7062048e+04 -1.3234618e+02 -1.0568369e+00
+-9.6764273e+02 -7.7772002e+00 -4.5546418e-02
+-4.9534539e+01 -4.0993771e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6559448e+01 -2.6733856e-01 2.0367588e-01
+-9.1078245e+02 -5.1093407e+00 3.8125625e+00
+-1.6078579e+04 -8.7757025e+01 6.1014013e+01
+-2.8295954e+05 -1.4990832e+03 9.6920268e+02
+-4.2631309e+06 -8.9302344e+03 8.1759742e+03
+-1.0319655e+07 -1.7426380e+04 -8.9060784e+02
+-1.6266895e+07 -2.6824889e+04 -2.0463743e+04
+-2.0107159e+07 -3.5462192e+04 -3.5118298e+04
+-2.1684085e+07 -4.2509159e+04 -3.7985250e+04
+-2.1908048e+07 -4.7743134e+04 -3.4742830e+04
+-2.1684997e+07 -5.0946657e+04 -3.3695950e+04
+-2.1379284e+07 -5.1668125e+04 -3.5536308e+04
+-2.0717424e+07 -4.9435171e+04 -3.2983429e+04
+-1.8921313e+07 -4.4050740e+04 -2.0121075e+04
+-1.5200365e+07 -3.5750505e+04 -2.1402447e+03
+-9.6876693e+06 -2.5363764e+04 6.8317348e+03
+-4.1196969e+06 -1.4553170e+04 3.4762258e+02
+-2.8284866e+05 -2.6585112e+03 2.3391488e+01
+-1.6078990e+04 -1.5678952e+02 1.5051483e+00
+-9.1126444e+02 -9.1973081e+00 8.1224852e-02
+-4.6609864e+01 -4.8450446e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0896150e+01 -2.1385999e-01 1.0779271e-01
+-8.0144552e+02 -4.0713008e+00 1.9202986e+00
+-1.4174736e+04 -6.9798706e+01 2.8947668e+01
+-2.4981401e+05 -1.1936339e+03 4.3331309e+02
+-3.8918945e+06 -7.3453443e+03 7.3608712e+03
+-9.2582460e+06 -1.4634427e+04 9.7600737e+02
+-1.4575634e+07 -2.2609644e+04 -1.4156448e+04
+-1.8106500e+07 -2.9692157e+04 -2.5280524e+04
+-1.9666523e+07 -3.5220196e+04 -2.6752191e+04
+-1.9995327e+07 -3.9163682e+04 -2.3510663e+04
+-1.9850452e+07 -4.1451649e+04 -2.2676060e+04
+-1.9540245e+07 -4.1728095e+04 -2.4783756e+04
+-1.8836057e+07 -3.9610282e+04 -2.3497009e+04
+-1.7090282e+07 -3.5011682e+04 -1.3643858e+04
+-1.3663893e+07 -2.8240686e+04 4.9875877e+02
+-8.7183589e+06 -2.0005467e+04 7.1512973e+03
+-3.7679198e+06 -1.1528906e+04 1.0647921e+03
+-2.4958997e+05 -2.1086688e+03 6.4593924e+01
+-1.4165858e+04 -1.2413918e+02 3.8317593e+00
+-8.0122260e+02 -7.2884871e+00 1.9426185e-01
+-4.0901369e+01 -3.8510476e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2008986e+01 -1.1813072e-01 3.7640294e-02
+-6.2897459e+02 -2.2056175e+00 5.5020666e-01
+-1.1163282e+04 -3.7151084e+01 5.8833432e+00
+-1.9744143e+05 -6.2801937e+02 4.8081398e+01
+-3.1469960e+06 -4.1637683e+03 5.0519910e+03
+-7.4202046e+06 -8.6917805e+03 -4.8571584e+02
+-1.1693211e+07 -1.3469704e+04 -1.3097286e+04
+-1.4595403e+07 -1.7300655e+04 -2.2808382e+04
+-1.5944730e+07 -1.9882072e+04 -2.4955623e+04
+-1.6287537e+07 -2.1463848e+04 -2.3077683e+04
+-1.6201728e+07 -2.2185002e+04 -2.2525014e+04
+-1.5926005e+07 -2.1867017e+04 -2.3657623e+04
+-1.5286526e+07 -2.0293877e+04 -2.1642850e+04
+-1.3792377e+07 -1.7525015e+04 -1.2733498e+04
+-1.0974278e+07 -1.3907312e+04 -5.9323626e+02
+-6.9934594e+06 -9.8667728e+03 5.4416883e+03
+-3.0456045e+06 -5.8235980e+03 1.2800782e+03
+-1.9702106e+05 -1.0912837e+03 7.5567789e+01
+-1.1140394e+04 -6.4795913e+01 4.3800521e+00
+-6.2778829e+02 -3.8610938e+00 2.1810407e-01
+-3.1956412e+01 -2.0764653e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0765671e+01 -4.2139978e-02 7.0032657e-03
+-4.0833121e+02 -7.3499618e-01 -1.0892826e-03
+-7.2768898e+03 -1.1437254e+01 -2.6055591e+00
+-1.2967578e+05 -1.7866303e+02 -8.4187128e+01
+-2.0544745e+06 -1.5144124e+03 1.6584089e+03
+-4.9052120e+06 -3.6071075e+03 -4.8475050e+03
+-7.7726015e+06 -5.5698564e+03 -1.6982015e+04
+-9.7266414e+06 -6.6047477e+03 -2.7344333e+04
+-1.0632400e+07 -6.7441974e+03 -3.1935136e+04
+-1.0854964e+07 -6.4460687e+03 -3.2443880e+04
+-1.0788474e+07 -5.9804082e+03 -3.2113138e+04
+-1.0597928e+07 -5.2826380e+03 -3.1165697e+04
+-1.0165702e+07 -4.2516856e+03 -2.6676227e+04
+-9.1589512e+06 -3.0547375e+03 -1.6805855e+04
+-7.2647712e+06 -2.0780115e+03 -4.9038973e+03
+-4.6013955e+06 -1.5355443e+03 2.0152849e+03
+-1.9774624e+06 -1.1737593e+03 8.8559656e+02
+-1.2907510e+05 -2.8272228e+02 5.1583110e+01
+-7.2425019e+03 -1.8000513e+01 2.9681367e+00
+-4.0641313e+02 -1.1620309e+00 1.4747559e-01
+-2.0671029e+01 -6.7344874e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.8790248e+00 -9.4487441e-03 1.2621856e-03
+-1.9043069e+02 -1.4127315e-01 -3.6060896e-02
+-3.3569568e+03 -1.7889328e+00 -1.6717576e+00
+-6.0636421e+04 -2.2402873e+01 -4.2944548e+01
+-9.3702850e+05 -5.4116355e+02 -1.1161347e+03
+-2.3673460e+06 -1.6341244e+03 -8.0945111e+03
+-3.8044890e+06 -2.4501126e+03 -1.9131553e+04
+-4.7501369e+06 -2.4120972e+03 -2.9332592e+04
+-5.1401114e+06 -1.7140087e+03 -3.5520826e+04
+-5.1874098e+06 -8.5944657e+02 -3.7828036e+04
+-5.1201903e+06 -1.0321399e+02 -3.7616853e+04
+-5.0346882e+06 6.3646588e+02 -3.5023427e+04
+-4.8635708e+06 1.4521297e+03 -2.8882155e+04
+-4.4145738e+06 2.1278168e+03 -1.8989281e+04
+-3.5039362e+06 2.2050487e+03 -8.1588919e+03
+-2.1849549e+06 1.4808629e+03 -1.0511860e+03
+-8.8631495e+05 4.7437646e+02 2.7730377e+02
+-6.0068963e+04 3.2364714e+00 1.6817594e+01
+-3.3254251e+03 -7.9997887e-01 1.0185921e+00
+-1.8866801e+02 -1.1688809e-01 5.3235845e-02
+-9.7900484e+00 -9.9914594e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7760678e+00 -1.6698913e-03 3.7372429e-05
+-4.5493936e+01 -2.1946990e-02 -1.9620143e-02
+-6.1941472e+02 -2.3843888e-01 -6.6909277e-01
+-7.3638117e+03 -2.5742292e+00 -1.6352800e+01
+-6.5763167e+04 -3.1680125e+01 -5.8410275e+02
+-1.4949217e+05 -9.1992052e+01 -2.3764832e+03
+-2.3401638e+05 -1.4027838e+02 -5.0696907e+03
+-2.9775530e+05 -1.4218555e+02 -7.6812278e+03
+-3.3468715e+05 -1.0518534e+02 -9.4695308e+03
+-3.5039903e+05 -5.6127152e+01 -1.0284067e+04
+-3.5242834e+05 -9.9122432e+00 -1.0258804e+04
+-3.4420229e+05 3.6313255e+01 -9.4101322e+03
+-3.2352600e+05 8.5547862e+01 -7.6291020e+03
+-2.8429356e+05 1.2385940e+02 -5.0589236e+03
+-2.2198467e+05 1.2568708e+02 -2.3967985e+03
+-1.4207027e+05 8.2848648e+01 -5.9799778e+02
+-6.3348971e+04 2.7312553e+01 -1.2364313e+01
+-7.1862760e+03 1.1965882e+00 1.1783132e-01
+-6.0736344e+02 1.5377275e-03 6.2864857e-02
+-4.4715884e+01 -8.1046470e-03 5.8228452e-03
+-2.7324628e+00 -1.0557799e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.2886611e-01 -2.3960218e-04 -2.0143934e-04
+-7.2275351e+00 -2.8110474e-03 -7.2879953e-03
+-7.6177250e+01 -2.6495784e-02 -1.5120015e-01
+-6.4577770e+02 -2.3519645e-01 -2.4738616e+00
+-3.7104697e+03 -1.8589222e+00 -3.5971431e+01
+-8.4672527e+03 -5.1479050e+00 -1.3616614e+02
+-1.3337229e+04 -7.9359947e+00 -2.8877479e+02
+-1.7045266e+04 -8.2662837e+00 -4.4075960e+02
+-1.9208375e+04 -6.3548437e+00 -5.4884889e+02
+-2.0127519e+04 -3.5893166e+00 -6.0118553e+02
+-2.0241209e+04 -8.2292397e-01 -6.0233278e+02
+-1.9755330e+04 1.9995367e+00 -5.5203875e+02
+-1.8541485e+04 4.9137939e+00 -4.4544598e+02
+-1.6246356e+04 7.0506068e+00 -2.9399950e+02
+-1.2626598e+04 7.0260354e+00 -1.4022589e+02
+-8.0246284e+03 4.5751337e+00 -3.7644400e+01
+-3.5521520e+03 1.5674799e+00 -2.5591145e+00
+-6.2413813e+02 1.3417193e-01 -1.4517935e-01
+-7.4029510e+01 5.5583034e-03 -5.2975085e-03
+-7.0474955e+00 -3.4791056e-04 2.1500896e-05
+-5.1679604e-01 -8.8323796e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5983440e-02 -2.3619094e-05 -6.6697351e-05
+-8.8086869e-01 -2.5323234e-04 -1.4657224e-03
+-7.4609099e+00 -2.1176346e-03 -2.1670721e-02
+-4.8823872e+01 -1.5837245e-02 -2.5239241e-01
+-2.1427868e+02 -9.4623656e-02 -2.2351689e+00
+-4.8004440e+02 -2.5029769e-01 -7.8319558e+00
+-7.5792077e+02 -3.8795995e-01 -1.6422091e+01
+-9.7254395e+02 -4.1308456e-01 -2.5190674e+01
+-1.0991040e+03 -3.2783096e-01 -3.1651219e+01
+-1.1531456e+03 -1.9375239e-01 -3.4948294e+01
+-1.1597029e+03 -5.2590558e-02 -3.5160932e+01
+-1.1309364e+03 9.3745526e-02 -3.2206748e+01
+-1.0594987e+03 2.4116347e-01 -2.5893277e+01
+-9.2537320e+02 3.4407749e-01 -1.7056230e+01
+-7.1606715e+02 3.3827139e-01 -8.2403103e+00
+-4.5360108e+02 2.1890373e-01 -2.3955656e+00
+-2.0397977e+02 7.8021484e-02 -2.7977720e-01
+-4.6829723e+01 9.6267328e-03 -2.5474400e-02
+-7.1944853e+00 6.4382421e-04 -1.8961227e-03
+-8.5258471e-01 8.5478859e-07 -1.0057301e-04
+-7.3729043e-02 -5.2305236e-06 0.0000000e+00
+0 0 0
+0 0 0
+-7.6245914e-03 0.0000000e+00 -1.0434328e-05
+-7.7851046e-02 0.0000000e+00 -1.7808339e-04
+-5.5908576e-01 0.0000000e+00 -2.0867869e-03
+-3.0438474e+00 0.0000000e+00 -1.8987656e-02
+-1.1288338e+01 0.0000000e+00 -1.2486128e-01
+-2.4655113e+01 0.0000000e+00 -4.0794719e-01
+-3.8888938e+01 0.0000000e+00 -8.4364770e-01
+-5.0048883e+01 0.0000000e+00 -1.2974955e+00
+-5.6710448e+01 0.0000000e+00 -1.6420133e+00
+-5.9578238e+01 0.0000000e+00 -1.8253613e+00
+-5.9925487e+01 0.0000000e+00 -1.8431246e+00
+-5.8391315e+01 0.0000000e+00 -1.6879099e+00
+-5.4602000e+01 0.0000000e+00 -1.3538877e+00
+-4.7548580e+01 0.0000000e+00 -8.9217374e-01
+-3.6671594e+01 0.0000000e+00 -4.3779630e-01
+-2.3232680e+01 0.0000000e+00 -1.3679255e-01
+-1.0695104e+01 0.0000000e+00 -2.1708854e-02
+-2.9020768e+00 0.0000000e+00 -2.5750426e-03
+-5.3575630e-01 0.0000000e+00 -2.4818460e-04
+-7.4892106e-02 0.0000000e+00 -1.7186975e-05
+-7.3549787e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.6259617e-03 1.8324384e-05 -1.6954000e-05
+-7.7822777e-02 2.1763084e-04 -2.6285375e-04
+-5.5852883e-01 2.0723000e-03 -2.8920842e-03
+-3.0388555e+00 1.7476314e-02 -2.5360276e-02
+-1.1263239e+01 1.1276279e-01 -1.6322155e-01
+-2.4594176e+01 3.0064285e-01 -5.2480122e-01
+-3.8805042e+01 4.5373846e-01 -1.0624356e+00
+-4.9978230e+01 4.4729958e-01 -1.5803886e+00
+-5.6681903e+01 2.9056930e-01 -1.8995029e+00
+-5.9596172e+01 8.3587167e-02 -1.9651559e+00
+-5.9977868e+01 -9.0992116e-02 -1.8217828e+00
+-5.8466198e+01 -2.1350890e-01 -1.5333909e+00
+-5.4693342e+01 -2.9477979e-01 -1.1472692e+00
+-4.7648535e+01 -3.2782201e-01 -7.1949169e-01
+-3.6762606e+01 -2.8647049e-01 -3.4200870e-01
+-2.3294263e+01 -1.7558020e-01 -1.0484583e-01
+-1.0721972e+01 -6.1469383e-02 -1.6508614e-02
+-2.9086348e+00 -8.0056362e-03 -1.9450435e-03
+-5.3684643e-01 -6.6958945e-04 -1.8531911e-04
+-7.5030978e-02 -3.3853032e-05 -1.2594375e-05
+-7.3676300e-03 5.6914148e-08 0.0000000e+00
+0 0 0
+0 0 0
+-7.6021326e-02 1.6960976e-04 -1.1339937e-04
+-8.8081893e-01 2.2388932e-03 -2.1844190e-03
+-7.4555850e+00 2.4595399e-02 -3.0032416e-02
+-4.8754341e+01 2.5414090e-01 -3.3622777e-01
+-2.1381617e+02 2.2278414e+00 -2.9138149e+00
+-4.7882316e+02 6.2204180e+00 -1.0054826e+01
+-7.5620444e+02 9.3397364e+00 -2.0657158e+01
+-9.7108358e+02 9.0067469e+00 -3.0676981e+01
+-1.0984815e+03 5.6190904e+00 -3.6628025e+01
+-1.1534333e+03 1.3654220e+00 -3.7622161e+01
+-1.1606441e+03 -2.0767542e+00 -3.4695191e+01
+-1.1322872e+03 -4.4099652e+00 -2.9148008e+01
+-1.0611492e+03 -5.9676602e+00 -2.1824580e+01
+-9.2719315e+02 -6.6597827e+00 -1.3672666e+01
+-7.1773335e+02 -5.8939691e+00 -6.3989691e+00
+-4.5471361e+02 -3.6364015e+00 -1.8256095e+00
+-2.0443040e+02 -1.2239758e+00 -2.1246661e-01
+-4.6916618e+01 -1.1428392e-01 -1.9293238e-02
+-7.2058761e+00 -7.1518628e-03 -1.4201108e-03
+-8.5376423e-01 -2.0124370e-04 -7.3194998e-05
+-7.3820572e-02 1.8390669e-05 0.0000000e+00
+0 0 0
+0 0 0
+-5.2936594e-01 9.9348828e-04 -3.2405411e-04
+-7.2303514e+00 1.5036546e-02 -1.0305363e-02
+-7.6156135e+01 1.9768647e-01 -2.0451133e-01
+-6.4509603e+02 2.6356642e+00 -3.2677094e+00
+-3.7029472e+03 3.8194696e+01 -4.6757032e+01
+-8.4451690e+03 1.1180302e+02 -1.7442336e+02
+-1.3305638e+04 1.6608554e+02 -3.6276024e+02
+-1.7018281e+04 1.5584365e+02 -5.3658175e+02
+-1.9196519e+04 9.2538584e+01 -6.3535710e+02
+-2.0131750e+04 1.7345954e+01 -6.4710623e+02
+-2.0256563e+04 -4.0609720e+01 -5.9321893e+02
+-1.9777294e+04 -7.8188593e+01 -4.9747588e+02
+-1.8568276e+04 -1.0347112e+02 -3.7318177e+02
+-1.6276117e+04 -1.1599800e+02 -2.3408290e+02
+-1.2654046e+04 -1.0437114e+02 -1.0815809e+02
+-8.0427241e+03 -6.5200629e+01 -2.8498189e+01
+-3.5588092e+03 -2.1108352e+01 -1.9565662e+00
+-6.2498626e+02 -1.1093645e+00 -1.1335659e-01
+-7.4105714e+01 -3.9997755e-02 -4.3065912e-03
+-7.0531962e+00 1.1889391e-03 3.9980096e-06
+-5.1713549e-01 3.6183886e-04 0.0000000e+00
+0 0 0
+0 0 0
+-2.7802562e+00 4.0153143e-03 1.1665778e-03
+-4.5538900e+01 6.9999536e-02 -8.8322631e-03
+-6.1964283e+02 1.1264874e+00 -7.0952062e-01
+-7.3607498e+03 1.9395981e+01 -2.0531703e+01
+-6.5643869e+04 6.5578639e+02 -7.5742156e+02
+-1.4909505e+05 1.9948184e+03 -3.0375535e+03
+-2.3344234e+05 2.9141254e+03 -6.3596348e+03
+-2.9726729e+05 2.6554124e+03 -9.3472187e+03
+-3.3447261e+05 1.4956317e+03 -1.0964851e+04
+-3.5046797e+05 1.8934235e+02 -1.1067915e+04
+-3.5268548e+05 -7.6765913e+02 -1.0083726e+04
+-3.4456448e+05 -1.3570449e+03 -8.4426723e+03
+-3.2396416e+05 -1.7564512e+03 -6.3515306e+03
+-2.8478258e+05 -1.9786398e+03 -3.9998699e+03
+-2.2243941e+05 -1.8135664e+03 -1.8359330e+03
+-1.4236755e+05 -1.1542862e+03 -4.4956960e+02
+-6.3446771e+04 -3.6263915e+02 -1.0238843e+01
+-7.1915846e+03 -6.0121056e+00 -2.7520210e-02
+-6.0759569e+02 1.2659937e-01 3.8130104e-02
+-4.4723350e+01 4.2897398e-02 3.8870773e-03
+-2.7325095e+00 4.2956163e-03 0.0000000e+00
+0 0 0
+0 0 0
+-9.9005739e+00 9.1041152e-03 1.6460262e-02
+-1.9076566e+02 1.4693706e-01 2.7449659e-01
+-3.3614314e+03 2.0257736e+00 3.8498958e+00
+-6.0694545e+04 2.6332166e+01 5.5036985e+01
+-9.3513908e+05 7.8773362e+02 -1.9663329e+03
+-2.3580047e+06 2.4376140e+03 -1.1750419e+04
+-3.7907682e+06 3.7909664e+03 -2.6348044e+04
+-4.7391531e+06 3.9754744e+03 -3.8651974e+04
+-5.1365367e+06 3.1557907e+03 -4.3886882e+04
+-5.1909319e+06 2.0739454e+03 -4.2249336e+04
+-5.1277561e+06 1.2733201e+03 -3.6724518e+04
+-5.0438570e+06 8.0873149e+02 -2.9721424e+04
+-4.8737106e+06 4.8891328e+02 -2.1826982e+04
+-4.4254737e+06 2.2846591e+02 -1.3134134e+04
+-3.5139035e+06 1.3156933e+02 -5.1120315e+03
+-2.1911127e+06 2.5937984e+02 -3.6791366e+02
+-8.8760124e+05 4.0001630e+02 1.5571286e+02
+-6.0051587e+04 1.2231847e+02 1.0006083e+01
+-3.3240007e+03 8.0700849e+00 6.3813734e-01
+-1.8856228e+02 5.4054685e-01 3.4760694e-02
+-9.7833753e+00 3.2383205e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.0824086e+01 1.7910548e-02 4.9608044e-02
+-4.0933226e+02 2.8544728e-01 9.1214698e-01
+-7.2921848e+03 3.8374860e+00 1.4395434e+01
+-1.2991077e+05 4.7685044e+01 2.2803289e+02
+-2.0547550e+06 9.6284032e+02 3.3348409e+02
+-4.8943961e+06 3.0530412e+03 -1.1097826e+04
+-7.7555785e+06 5.1335890e+03 -2.9463444e+04
+-9.7149290e+06 6.2354235e+03 -4.3435822e+04
+-1.0632825e+07 6.3735069e+03 -4.6228592e+04
+-1.0865622e+07 6.1981396e+03 -3.9694557e+04
+-1.0803135e+07 6.2021917e+03 -2.9962386e+04
+-1.0612186e+07 6.3677886e+03 -2.1263692e+04
+-1.0179092e+07 6.3798369e+03 -1.3765182e+04
+-9.1723150e+06 5.9864766e+03 -6.1593770e+03
+-7.2765323e+06 5.1404993e+03 5.9283934e+02
+-4.6076263e+06 3.9164564e+03 3.1665794e+03
+-1.9768738e+06 2.4509612e+03 5.2709437e+02
+-1.2893864e+05 4.8091139e+02 3.2033480e+01
+-7.2340126e+03 2.9695977e+01 1.9183358e+00
+-4.0588736e+02 1.8345087e+00 9.8597784e-02
+-2.0641763e+01 1.0171461e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2111556e+01 2.8968911e-02 9.1511594e-02
+-6.3076981e+02 4.6419931e-01 1.7079836e+00
+-1.1191321e+04 6.2328374e+00 2.7351645e+01
+-1.9787963e+05 7.5596972e+01 4.3764110e+02
+-3.1497990e+06 1.0890548e+03 3.1144406e+03
+-7.4080182e+06 3.5047969e+03 -9.5236990e+03
+-1.1672772e+07 6.2547175e+03 -3.1084257e+04
+-1.4582731e+07 8.3591296e+03 -4.5879826e+04
+-1.5948666e+07 9.6965076e+03 -4.5265978e+04
+-1.6304277e+07 1.0756504e+04 -3.3084586e+04
+-1.6221622e+07 1.1889980e+04 -1.8878170e+04
+-1.5942667e+07 1.2936342e+04 -8.7840880e+03
+-1.5299908e+07 1.3413848e+04 -2.4365745e+03
+-1.3804823e+07 1.2881501e+04 3.1145185e+03
+-1.0984817e+07 1.1141635e+04 7.6527626e+03
+-6.9974553e+06 8.3165688e+03 7.2485607e+03
+-3.0416840e+06 4.9485893e+03 8.3039784e+02
+-1.9669366e+05 9.3309899e+02 5.0803886e+01
+-1.1120140e+04 5.7197480e+01 3.0479020e+00
+-6.2654618e+02 3.4839282e+00 1.5636967e-01
+-3.1888147e+01 1.8981960e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1032923e+01 3.5784469e-02 1.2995739e-01
+-8.0383940e+02 5.7820308e-01 2.4098324e+00
+-1.4212076e+04 7.8289965e+00 3.8153441e+01
+-2.5039574e+05 9.5533033e+01 5.9995456e+02
+-3.8958845e+06 1.0797697e+03 4.5992606e+03
+-9.2427698e+06 3.4476694e+03 -1.0819828e+04
+-1.4549270e+07 6.3594882e+03 -3.7287820e+04
+-1.8089660e+07 8.9544984e+03 -5.4723795e+04
+-1.9670120e+07 1.1037898e+04 -5.2468179e+04
+-2.0014035e+07 1.2920307e+04 -3.5924447e+04
+-1.9871707e+07 1.4792586e+04 -1.7571991e+04
+-1.9555995e+07 1.6394778e+04 -5.2807416e+03
+-1.8846693e+07 1.7172494e+04 1.5965363e+03
+-1.7099572e+07 1.6597984e+04 7.1698427e+03
+-1.3671503e+07 1.4392413e+04 1.1529368e+04
+-8.7190717e+06 1.0703514e+04 9.8551844e+03
+-3.7602577e+06 6.3005771e+03 8.4118588e+02
+-2.4905086e+05 1.1828450e+03 5.2333271e+01
+-1.4132142e+04 7.2628590e+01 3.1859835e+00
+-7.9913722e+02 4.4191644e+00 1.6536357e-01
+-4.0786188e+01 2.4000167e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6713257e+01 3.0826288e-02 1.5876662e-01
+-9.1345804e+02 5.0227323e-01 2.9102850e+00
+-1.6120017e+04 6.8858305e+00 4.5291825e+01
+-2.8360063e+05 8.5800127e+01 6.9611990e+02
+-4.2666991e+06 8.3536120e+02 4.5086324e+03
+-1.0299216e+07 2.6090642e+03 -1.5091746e+04
+-1.6232685e+07 4.8753571e+03 -4.7817813e+04
+-2.0083401e+07 7.0367134e+03 -6.9657723e+04
+-2.1683673e+07 8.9181498e+03 -6.7950235e+04
+-2.1924764e+07 1.0678377e+04 -4.8991735e+04
+-2.1704234e+07 1.2392742e+04 -2.7355585e+04
+-2.1391806e+07 1.3824357e+04 -1.2263124e+04
+-2.0723972e+07 1.4527788e+04 -3.0706061e+03
+-1.8926707e+07 1.4072261e+04 4.8486766e+03
+-1.5204703e+07 1.2215743e+04 1.1363812e+04
+-9.6852061e+06 9.0786603e+03 1.0525523e+04
+-4.1087800e+06 5.3290848e+03 5.8007091e+02
+-2.8212421e+05 1.0013845e+03 3.7074432e+01
+-1.6033229e+04 6.1628308e+01 2.3137079e+00
+-9.0840885e+02 3.7545809e+00 1.2270039e-01
+-4.6451106e+01 2.0394390e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9618061e+01 1.2298939e-02 1.7663783e-01
+-9.6954841e+02 2.0144158e-01 3.2099213e+00
+-1.7099765e+04 2.7850320e+00 4.9324170e+01
+-3.0077571e+05 3.5235029e+01 7.4553983e+02
+-4.4013796e+06 3.2037252e+02 3.7305858e+03
+-1.0790566e+07 9.8366998e+02 -1.9662606e+04
+-1.7034937e+07 1.8438874e+03 -5.7728363e+04
+-2.1000433e+07 2.6860772e+03 -8.3697622e+04
+-2.2548721e+07 3.4403104e+03 -8.3403116e+04
+-2.2684705e+07 4.1534239e+03 -6.3514838e+04
+-2.2401373e+07 4.8423089e+03 -3.9808811e+04
+-2.2104572e+07 5.4120655e+03 -2.2350545e+04
+-2.1502940e+07 5.6922915e+03 -1.0616324e+04
+-1.9737977e+07 5.5171259e+03 1.2983784e+02
+-1.5910997e+07 4.7911123e+03 9.3513204e+03
+-1.0118404e+07 3.5604516e+03 1.0128191e+04
+-4.2288265e+06 2.0884727e+03 2.5897429e+02
+-2.9920395e+05 3.9282076e+02 1.7758052e+01
+-1.7008044e+04 2.4205861e+01 1.1759903e+00
+-9.6425374e+02 1.4760625e+00 6.5511369e-02
+-4.9345301e+01 8.0217261e-02 0.0000000e+00
+0 0 0
+0 0 0
+-5.0482921e+01 -1.2298942e-02 1.8279690e-01
+-9.8630350e+02 -2.0144161e-01 3.3118982e+00
+-1.7394102e+04 -2.7850319e+00 5.0668417e+01
+-3.0597824e+05 -3.5235020e+01 7.6144998e+02
+-4.4305859e+06 -3.2037262e+02 3.3237480e+03
+-1.0928759e+07 -9.8367059e+02 -2.1589981e+04
+-1.7265160e+07 -1.8438877e+03 -6.1749693e+04
+-2.1256558e+07 -2.6860775e+03 -8.9392718e+04
+-2.2776732e+07 -3.4403111e+03 -8.9791149e+04
+-2.2870480e+07 -4.1534204e+03 -6.9705244e+04
+-2.2563613e+07 -4.8423084e+03 -4.5297453e+04
+-2.2274274e+07 -5.4120608e+03 -2.6918449e+04
+-2.1701571e+07 -5.6922921e+03 -1.4107130e+04
+-1.9957909e+07 -5.5171237e+03 -2.1317929e+03
+-1.6108266e+07 -4.7911116e+03 8.2802729e+03
+-1.0236533e+07 -3.5604506e+03 9.8262443e+03
+-4.2529213e+06 -2.0884725e+03 1.1761458e+02
+-3.0437085e+05 -3.9282074e+02 9.1864912e+00
+-1.7300529e+04 -2.4205860e+01 6.6689308e-01
+-9.8091632e+02 -1.4760624e+00 3.9723178e-02
+-5.0206152e+01 -8.0217259e-02 0.0000000e+00
+0 0 0
+0 0 0
+-4.9618061e+01 -3.0826293e-02 1.7663784e-01
+-9.6954841e+02 -5.0227337e-01 3.2099214e+00
+-1.7099765e+04 -6.8858337e+00 4.9324175e+01
+-3.0077571e+05 -8.5800186e+01 7.4553961e+02
+-4.4013796e+06 -8.3536127e+02 3.7305859e+03
+-1.0790566e+07 -2.6090643e+03 -1.9662606e+04
+-1.7034937e+07 -4.8753581e+03 -5.7728363e+04
+-2.1000433e+07 -7.0367155e+03 -8.3697624e+04
+-2.2548721e+07 -8.9181534e+03 -8.3403115e+04
+-2.2684705e+07 -1.0678378e+04 -6.3514835e+04
+-2.2401373e+07 -1.2392742e+04 -3.9808809e+04
+-2.2104572e+07 -1.3824360e+04 -2.2350548e+04
+-2.1502940e+07 -1.4527787e+04 -1.0616324e+04
+-1.9737977e+07 -1.4072261e+04 1.2983767e+02
+-1.5910997e+07 -1.2215742e+04 9.3513223e+03
+-1.0118404e+07 -9.0786614e+03 1.0128191e+04
+-4.2288265e+06 -5.3290848e+03 2.5897425e+02
+-2.9920395e+05 -1.0013846e+03 1.7758050e+01
+-1.7008044e+04 -6.1628309e+01 1.1759904e+00
+-9.6425374e+02 -3.7545808e+00 6.5511368e-02
+-4.9345301e+01 -2.0394390e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6713257e+01 -3.5784470e-02 1.5876661e-01
+-9.1345804e+02 -5.7820307e-01 2.9102849e+00
+-1.6120017e+04 -7.8289968e+00 4.5291827e+01
+-2.8360063e+05 -9.5533039e+01 6.9611988e+02
+-4.2666991e+06 -1.0797697e+03 4.5086323e+03
+-1.0299216e+07 -3.4476699e+03 -1.5091746e+04
+-1.6232685e+07 -6.3594890e+03 -4.7817817e+04
+-2.0083401e+07 -8.9544984e+03 -6.9657731e+04
+-2.1683673e+07 -1.1037896e+04 -6.7950222e+04
+-2.1924764e+07 -1.2920307e+04 -4.8991730e+04
+-2.1704234e+07 -1.4792586e+04 -2.7355583e+04
+-2.1391806e+07 -1.6394778e+04 -1.2263125e+04
+-2.0723972e+07 -1.7172496e+04 -3.0706077e+03
+-1.8926707e+07 -1.6597984e+04 4.8486763e+03
+-1.5204703e+07 -1.4392417e+04 1.1363812e+04
+-9.6852061e+06 -1.0703514e+04 1.0525524e+04
+-4.1087800e+06 -6.3005772e+03 5.8007078e+02
+-2.8212421e+05 -1.1828450e+03 3.7074434e+01
+-1.6033229e+04 -7.2628588e+01 2.3137088e+00
+-9.0840885e+02 -4.4191645e+00 1.2270037e-01
+-4.6451106e+01 -2.4000167e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1032923e+01 -2.8968911e-02 1.2995739e-01
+-8.0383940e+02 -4.6419935e-01 2.4098324e+00
+-1.4212076e+04 -6.2328379e+00 3.8153439e+01
+-2.5039574e+05 -7.5596975e+01 5.9995455e+02
+-3.8958845e+06 -1.0890549e+03 4.5992604e+03
+-9.2427698e+06 -3.5047966e+03 -1.0819828e+04
+-1.4549270e+07 -6.2547153e+03 -3.7287819e+04
+-1.8089660e+07 -8.3591289e+03 -5.4723797e+04
+-1.9670120e+07 -9.6965065e+03 -5.2468176e+04
+-2.0014035e+07 -1.0756502e+04 -3.5924447e+04
+-1.9871707e+07 -1.1889978e+04 -1.7571989e+04
+-1.9555995e+07 -1.2936339e+04 -5.2807416e+03
+-1.8846693e+07 -1.3413848e+04 1.5965363e+03
+-1.7099572e+07 -1.2881501e+04 7.1698452e+03
+-1.3671503e+07 -1.1141633e+04 1.1529366e+04
+-8.7190717e+06 -8.3165690e+03 9.8551837e+03
+-3.7602577e+06 -4.9485895e+03 8.4118586e+02
+-2.4905086e+05 -9.3309901e+02 5.2333275e+01
+-1.4132142e+04 -5.7197482e+01 3.1859834e+00
+-7.9913722e+02 -3.4839283e+00 1.6536356e-01
+-4.0786188e+01 -1.8981960e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2111556e+01 -1.7910551e-02 9.1511588e-02
+-6.3076981e+02 -2.8544736e-01 1.7079836e+00
+-1.1191321e+04 -3.8374872e+00 2.7351644e+01
+-1.9787963e+05 -4.7685047e+01 4.3764114e+02
+-3.1497990e+06 -9.6284038e+02 3.1144401e+03
+-7.4080182e+06 -3.0530415e+03 -9.5236986e+03
+-1.1672772e+07 -5.1335893e+03 -3.1084258e+04
+-1.4582731e+07 -6.2354234e+03 -4.5879829e+04
+-1.5948666e+07 -6.3735057e+03 -4.5265972e+04
+-1.6304277e+07 -6.1981399e+03 -3.3084590e+04
+-1.6221622e+07 -6.2021901e+03 -1.8878173e+04
+-1.5942667e+07 -6.3677858e+03 -8.7840868e+03
+-1.5299908e+07 -6.3798370e+03 -2.4365733e+03
+-1.3804823e+07 -5.9864760e+03 3.1145181e+03
+-1.0984817e+07 -5.1404976e+03 7.6527622e+03
+-6.9974553e+06 -3.9164554e+03 7.2485606e+03
+-3.0416840e+06 -2.4509611e+03 8.3039782e+02
+-1.9669366e+05 -4.8091139e+02 5.0803888e+01
+-1.1120140e+04 -2.9695977e+01 3.0479020e+00
+-6.2654618e+02 -1.8345087e+00 1.5636967e-01
+-3.1888147e+01 -1.0171461e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0824086e+01 -9.1041161e-03 4.9608037e-02
+-4.0933226e+02 -1.4693702e-01 9.1214702e-01
+-7.2921848e+03 -2.0257735e+00 1.4395437e+01
+-1.2991077e+05 -2.6332166e+01 2.2803288e+02
+-2.0547550e+06 -7.8773359e+02 3.3348428e+02
+-4.8943961e+06 -2.4376139e+03 -1.1097826e+04
+-7.7555785e+06 -3.7909665e+03 -2.9463445e+04
+-9.7149290e+06 -3.9754739e+03 -4.3435822e+04
+-1.0632825e+07 -3.1557906e+03 -4.6228591e+04
+-1.0865622e+07 -2.0739461e+03 -3.9694558e+04
+-1.0803135e+07 -1.2733195e+03 -2.9962386e+04
+-1.0612186e+07 -8.0873224e+02 -2.1263695e+04
+-1.0179092e+07 -4.8891202e+02 -1.3765181e+04
+-9.1723150e+06 -2.2846544e+02 -6.1593770e+03
+-7.2765323e+06 -1.3157035e+02 5.9283966e+02
+-4.6076263e+06 -2.5938043e+02 3.1665791e+03
+-1.9768738e+06 -4.0001630e+02 5.2709437e+02
+-1.2893864e+05 -1.2231847e+02 3.2033482e+01
+-7.2340126e+03 -8.0700851e+00 1.9183358e+00
+-4.0588736e+02 -5.4054686e-01 9.8597781e-02
+-2.0641763e+01 -3.2383204e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.9005739e+00 -4.0153138e-03 1.6460268e-02
+-1.9076566e+02 -6.9999538e-02 2.7449654e-01
+-3.3614314e+03 -1.1264874e+00 3.8498958e+00
+-6.0694545e+04 -1.9395982e+01 5.5037000e+01
+-9.3513908e+05 -6.5578639e+02 -1.9663329e+03
+-2.3580047e+06 -1.9948184e+03 -1.1750419e+04
+-3.7907682e+06 -2.9141255e+03 -2.6348044e+04
+-4.7391531e+06 -2.6554124e+03 -3.8651974e+04
+-5.1365367e+06 -1.4956318e+03 -4.3886882e+04
+-5.1909319e+06 -1.8934226e+02 -4.2249336e+04
+-5.1277561e+06 7.6765960e+02 -3.6724518e+04
+-5.0438570e+06 1.3570450e+03 -2.9721424e+04
+-4.8737106e+06 1.7564512e+03 -2.1826983e+04
+-4.4254737e+06 1.9786398e+03 -1.3134134e+04
+-3.5139035e+06 1.8135664e+03 -5.1120316e+03
+-2.1911127e+06 1.1542862e+03 -3.6791368e+02
+-8.8760124e+05 3.6263915e+02 1.5571284e+02
+-6.0051587e+04 6.0121062e+00 1.0006084e+01
+-3.3240007e+03 -1.2659935e-01 6.3813739e-01
+-1.8856228e+02 -4.2897400e-02 3.4760696e-02
+-9.7833753e+00 -4.2956165e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7802562e+00 -9.9348823e-04 1.1665780e-03
+-4.5538900e+01 -1.5036546e-02 -8.8322670e-03
+-6.1964283e+02 -1.9768645e-01 -7.0952071e-01
+-7.3607498e+03 -2.6356642e+00 -2.0531702e+01
+-6.5643869e+04 -3.8194696e+01 -7.5742156e+02
+-1.4909505e+05 -1.1180303e+02 -3.0375535e+03
+-2.3344234e+05 -1.6608554e+02 -6.3596348e+03
+-2.9726729e+05 -1.5584365e+02 -9.3472187e+03
+-3.3447261e+05 -9.2538579e+01 -1.0964851e+04
+-3.5046797e+05 -1.7345961e+01 -1.1067915e+04
+-3.5268548e+05 4.0609707e+01 -1.0083726e+04
+-3.4456448e+05 7.8188591e+01 -8.4426723e+03
+-3.2396416e+05 1.0347112e+02 -6.3515306e+03
+-2.8478258e+05 1.1599799e+02 -3.9998699e+03
+-2.2243941e+05 1.0437114e+02 -1.8359330e+03
+-1.4236755e+05 6.5200626e+01 -4.4956960e+02
+-6.3446771e+04 2.1108352e+01 -1.0238843e+01
+-7.1915846e+03 1.1093645e+00 -2.7520178e-02
+-6.0759569e+02 3.9997752e-02 3.8130108e-02
+-4.4723350e+01 -1.1889387e-03 3.8870777e-03
+-2.7325095e+00 -3.6183892e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.2936594e-01 -1.6960976e-04 -3.2405417e-04
+-7.2303514e+00 -2.2388932e-03 -1.0305362e-02
+-7.6156135e+01 -2.4595400e-02 -2.0451136e-01
+-6.4509603e+02 -2.5414090e-01 -3.2677094e+00
+-3.7029472e+03 -2.2278414e+00 -4.6757033e+01
+-8.4451690e+03 -6.2204179e+00 -1.7442336e+02
+-1.3305638e+04 -9.3397362e+00 -3.6276023e+02
+-1.7018281e+04 -9.0067476e+00 -5.3658175e+02
+-1.9196519e+04 -5.6190908e+00 -6.3535710e+02
+-2.0131750e+04 -1.3654223e+00 -6.4710623e+02
+-2.0256563e+04 2.0767534e+00 -5.9321893e+02
+-1.9777294e+04 4.4099646e+00 -4.9747588e+02
+-1.8568276e+04 5.9676604e+00 -3.7318178e+02
+-1.6276117e+04 6.6597829e+00 -2.3408289e+02
+-1.2654046e+04 5.8939690e+00 -1.0815809e+02
+-8.0427241e+03 3.6364016e+00 -2.8498189e+01
+-3.5588092e+03 1.2239758e+00 -1.9565662e+00
+-6.2498626e+02 1.1428391e-01 -1.1335659e-01
+-7.4105714e+01 7.1518629e-03 -4.3065902e-03
+-7.0531962e+00 2.0124373e-04 3.9979523e-06
+-5.1713549e-01 -1.8390659e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.6021326e-02 -1.8324383e-05 -1.1339937e-04
+-8.8081893e-01 -2.1763084e-04 -2.1844189e-03
+-7.4555850e+00 -2.0723001e-03 -3.0032418e-02
+-4.8754341e+01 -1.7476313e-02 -3.3622776e-01
+-2.1381617e+02 -1.1276279e-01 -2.9138149e+00
+-4.7882316e+02 -3.0064284e-01 -1.0054826e+01
+-7.5620444e+02 -4.5373845e-01 -2.0657158e+01
+-9.7108358e+02 -4.4729959e-01 -3.0676981e+01
+-1.0984815e+03 -2.9056929e-01 -3.6628025e+01
+-1.1534333e+03 -8.3587161e-02 -3.7622160e+01
+-1.1606441e+03 9.0992121e-02 -3.4695191e+01
+-1.1322872e+03 2.1350891e-01 -2.9148008e+01
+-1.0611492e+03 2.9477978e-01 -2.1824580e+01
+-9.2719315e+02 3.2782202e-01 -1.3672665e+01
+-7.1773335e+02 2.8647049e-01 -6.3989691e+00
+-4.5471361e+02 1.7558020e-01 -1.8256095e+00
+-2.0443040e+02 6.1469384e-02 -2.1246660e-01
+-4.6916618e+01 8.0056363e-03 -1.9293237e-02
+-7.2058761e+00 6.6958947e-04 -1.4201106e-03
+-8.5376423e-01 3.3853028e-05 -7.3194994e-05
+-7.3820572e-02 -5.6914759e-08 0.0000000e+00
+0 0 0
+0 0 0
+-7.6259617e-03 0.0000000e+00 -1.6954001e-05
+-7.7822777e-02 0.0000000e+00 -2.6285376e-04
+-5.5852883e-01 0.0000000e+00 -2.8920842e-03
+-3.0388555e+00 0.0000000e+00 -2.5360276e-02
+-1.1263239e+01 0.0000000e+00 -1.6322155e-01
+-2.4594176e+01 0.0000000e+00 -5.2480122e-01
+-3.8805042e+01 0.0000000e+00 -1.0624356e+00
+-4.9978230e+01 0.0000000e+00 -1.5803885e+00
+-5.6681903e+01 0.0000000e+00 -1.8995029e+00
+-5.9596172e+01 0.0000000e+00 -1.9651558e+00
+-5.9977868e+01 0.0000000e+00 -1.8217828e+00
+-5.8466198e+01 0.0000000e+00 -1.5333909e+00
+-5.4693342e+01 0.0000000e+00 -1.1472693e+00
+-4.7648535e+01 0.0000000e+00 -7.1949169e-01
+-3.6762606e+01 0.0000000e+00 -3.4200870e-01
+-2.3294263e+01 0.0000000e+00 -1.0484583e-01
+-1.0721972e+01 0.0000000e+00 -1.6508614e-02
+-2.9086348e+00 0.0000000e+00 -1.9450435e-03
+-5.3684643e-01 0.0000000e+00 -1.8531911e-04
+-7.5030978e-02 0.0000000e+00 -1.2594375e-05
+-7.3676300e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.6164775e-03 1.3229747e-05 -2.2713970e-05
+-7.7691048e-02 1.8258769e-04 -3.3703057e-04
+-5.5728523e-01 2.0107696e-03 -3.5913950e-03
+-3.0303900e+00 1.8811106e-02 -3.0867954e-02
+-1.1226037e+01 1.2821250e-01 -1.9628309e-01
+-2.4508710e+01 3.4394846e-01 -6.2569817e-01
+-3.8689542e+01 5.1104386e-01 -1.2522419e+00
+-4.9881315e+01 4.7816882e-01 -1.8273257e+00
+-5.6643035e+01 2.5950429e-01 -2.1256974e+00
+-5.9621403e+01 -1.1936475e-02 -2.0885297e+00
+-6.0047208e+01 -2.1688447e-01 -1.8023055e+00
+-5.8555061e+01 -3.1871653e-01 -1.3947262e+00
+-5.4785699e+01 -3.4079975e-01 -9.6156908e-01
+-4.7735003e+01 -3.1091842e-01 -5.6418269e-01
+-3.6833127e+01 -2.3771559e-01 -2.5594646e-01
+-2.3338886e+01 -1.3505406e-01 -7.6269411e-02
+-1.0740484e+01 -4.5815776e-02 -1.1941758e-02
+-2.9128102e+00 -6.3547248e-03 -1.4115580e-03
+-5.3746348e-01 -6.5931963e-04 -1.3518567e-04
+-7.5097661e-02 -5.9291848e-05 -9.2105249e-06
+-7.3725990e-03 -4.2415081e-06 0.0000000e+00
+0 0 0
+0 0 0
+-7.5955565e-02 1.0263469e-04 -1.5516552e-04
+-8.7965774e-01 1.6829136e-03 -2.8166851e-03
+-7.4416546e+00 2.2561234e-02 -3.7297611e-02
+-4.8632996e+01 2.6868838e-01 -4.0852050e-01
+-2.1313986e+02 2.5396265e+00 -3.4962409e+00
+-4.7714650e+02 7.1366034e+00 -1.1965560e+01
+-7.5389745e+02 1.0553819e+01 -2.4315323e+01
+-9.6914126e+02 9.6666216e+00 -3.5446088e+01
+-1.0976898e+03 5.0033198e+00 -4.0981571e+01
+-1.1538942e+03 -5.6340328e-01 -3.9969220e+01
+-1.1619453e+03 -4.6191505e+00 -3.4265750e+01
+-1.1339397e+03 -6.5283725e+00 -2.6403607e+01
+-1.0628484e+03 -6.8738446e+00 -1.8171430e+01
+-9.2877578e+02 -6.2662283e+00 -1.0633494e+01
+-7.1902114e+02 -4.8362294e+00 -4.7471858e+00
+-4.5551519e+02 -2.7637238e+00 -1.3169382e+00
+-2.0473779e+02 -9.0123405e-01 -1.5412722e-01
+-4.6969266e+01 -9.3562300e-02 -1.4271465e-02
+-7.2115395e+00 -8.1876849e-03 -1.0797625e-03
+-8.5419075e-01 -6.5494609e-04 -5.7590584e-05
+-7.3840552e-02 -4.1852784e-05 0.0000000e+00
+0 0 0
+0 0 0
+-5.2917443e-01 3.5185180e-04 -4.4072006e-04
+-7.2245151e+00 8.4206784e-03 -1.3014842e-02
+-7.6052810e+01 1.5725212e-01 -2.5103133e-01
+-6.4378407e+02 2.6566927e+00 -3.9509972e+00
+-3.6920424e+03 4.3652030e+01 -5.5968274e+01
+-8.4154565e+03 1.2859664e+02 -2.0714081e+02
+-1.3264101e+04 1.8823111e+02 -4.2635539e+02
+-1.6983347e+04 1.6786753e+02 -6.1949040e+02
+-1.9182233e+04 8.1903956e+01 -7.1067702e+02
+-2.0139525e+04 -1.6295257e+01 -6.8717026e+02
+-2.0278705e+04 -8.4902096e+01 -5.8474560e+02
+-1.9805026e+04 -1.1500702e+02 -4.4853511e+02
+-1.8596393e+04 -1.1891976e+02 -3.0837151e+02
+-1.6302134e+04 -1.0827711e+02 -1.8034313e+02
+-1.2675188e+04 -8.4596823e+01 -7.9441065e+01
+-8.0556750e+03 -4.8898277e+01 -2.0355607e+01
+-3.5632961e+03 -1.5318586e+01 -1.4514101e+00
+-6.2543906e+02 -1.0004613e+00 -9.1711282e-02
+-7.4129604e+01 -7.1676544e-02 -4.3328559e-03
+-7.0532444e+00 -4.8478280e-03 -9.1762051e-05
+-5.1701202e-01 -2.5708182e-04 0.0000000e+00
+0 0 0
+0 0 0
+-2.7809151e+00 -1.0814692e-03 2.0921874e-03
+-4.5531201e+01 2.9127963e-03 -9.9196713e-05
+-6.1923268e+02 4.9537889e-01 -7.4837730e-01
+-7.3510101e+03 1.6289414e+01 -2.4120855e+01
+-6.5470608e+04 7.5096190e+02 -9.0469184e+02
+-1.4856949e+05 2.2982525e+03 -3.5999052e+03
+-2.3270047e+05 3.3093165e+03 -7.4628602e+03
+-2.9664777e+05 2.8673495e+03 -1.0781860e+04
+-3.3422318e+05 1.3111988e+03 -1.2260583e+04
+-3.5060545e+05 -3.9184683e+02 -1.1747545e+04
+-3.5306711e+05 -1.5308770e+03 -9.9199465e+03
+-3.4503348e+05 -1.9907254e+03 -7.5752320e+03
+-3.2443187e+05 -2.0193765e+03 -5.2070677e+03
+-2.8521193e+05 -1.8346163e+03 -3.0513796e+03
+-2.2278828e+05 -1.4525879e+03 -1.3345193e+03
+-1.4257892e+05 -8.5429674e+02 -3.1774758e+02
+-6.3511968e+04 -2.5897619e+02 -8.8927472e+00
+-7.1929697e+03 -8.2698710e+00 -2.3818161e-01
+-6.0744014e+02 -4.7330527e-01 7.8988017e-03
+-4.4697612e+01 -2.4264831e-02 1.5777190e-03
+-2.7302636e+00 -9.2524512e-04 0.0000000e+00
+0 0 0
+0 0 0
+-9.9096498e+00 -2.1567864e-02 2.9562311e-02
+-1.9087960e+02 -3.9745442e-01 5.4387270e-01
+-3.3624023e+03 -6.6552135e+00 8.6653380e+00
+-6.0696800e+04 -1.1360474e+02 1.4081499e+02
+-9.3157672e+05 1.2254958e+02 -2.7931346e+03
+-2.3447337e+06 1.3674849e+03 -1.5133367e+04
+-3.7717595e+06 2.1774654e+03 -3.3010237e+04
+-4.7235076e+06 1.6128639e+03 -4.7401218e+04
+-5.1305062e+06 -5.5268397e+01 -5.2065185e+04
+-5.1944074e+06 -1.8394102e+03 -4.7142210e+04
+-5.1365123e+06 -2.9489609e+03 -3.6967923e+04
+-5.0536436e+06 -3.2131224e+03 -2.5958971e+04
+-4.8824773e+06 -2.8980838e+03 -1.6313479e+04
+-4.4328470e+06 -2.3172656e+03 -8.4576087e+03
+-3.5194748e+06 -1.6244764e+03 -2.7144006e+03
+-2.1938904e+06 -8.9727019e+02 1.0627190e+02
+-8.8748158e+05 -3.0643620e+02 3.4074754e+01
+-6.0002758e+04 -2.6095908e+01 3.0715808e+00
+-3.3205035e+03 -1.1422831e+00 2.4332999e-01
+-1.8832089e+02 -3.7565256e-02 1.5236992e-02
+-9.7688389e+00 -2.2463223e-04 0.0000000e+00
+0 0 0
+0 0 0
+-2.0856728e+01 -7.5122687e-02 8.6196904e-02
+-4.0985239e+02 -1.4921009e+00 1.7009782e+00
+-7.2993855e+03 -2.6905552e+01 2.9152041e+01
+-1.3000899e+05 -4.8617948e+02 4.9994841e+02
+-2.0509854e+06 -1.9622870e+03 -1.1848907e+03
+-4.8746770e+06 -2.0860724e+03 -1.7450520e+04
+-7.7264080e+06 -2.4453622e+03 -4.1998186e+04
+-9.6914817e+06 -3.8086761e+03 -6.0023911e+04
+-1.0624928e+07 -5.8850540e+03 -6.2090760e+04
+-1.0871973e+07 -7.6675982e+03 -4.9912151e+04
+-1.0815688e+07 -8.3373594e+03 -3.1970212e+04
+-1.0623581e+07 -7.7547102e+03 -1.6032912e+04
+-1.0186555e+07 -6.3161563e+03 -5.1513482e+03
+-9.1765356e+06 -4.5560480e+03 1.3080412e+03
+-7.2782885e+06 -2.8838587e+03 4.3236347e+03
+-4.6063689e+06 -1.5454091e+03 3.7143134e+03
+-1.9729767e+06 -6.5769486e+02 1.6843319e+02
+-1.2872201e+05 -8.6475144e+01 1.2182722e+01
+-7.2207749e+03 -3.0313894e+00 8.3412195e-01
+-4.0507738e+02 -6.0675590e-02 4.7258279e-02
+-2.0597119e+01 2.3897930e-03 0.0000000e+00
+0 0 0
+0 0 0
+-3.2179743e+01 -1.4307735e-01 1.3614230e-01
+-6.3191858e+02 -2.8840918e+00 2.6769001e+00
+-1.1208412e+04 -5.2611811e+01 4.5474319e+01
+-1.9813235e+05 -9.5656399e+02 7.6857646e+02
+-3.1470624e+06 -4.6512804e+03 7.2096314e+02
+-7.3835366e+06 -6.6821717e+03 -1.9164589e+04
+-1.1635728e+07 -8.6942532e+03 -4.9959693e+04
+-1.4554509e+07 -1.1132172e+04 -7.0857901e+04
+-1.5942423e+07 -1.3634684e+04 -6.9351447e+04
+-1.6316980e+07 -1.5239507e+04 -4.9076584e+04
+-1.6240876e+07 -1.5201264e+04 -2.2958952e+04
+-1.5957665e+07 -1.3487164e+04 -2.2290271e+03
+-1.5307076e+07 -1.0658588e+04 9.2814757e+03
+-1.3806083e+07 -7.4793474e+03 1.3464002e+04
+-1.0982448e+07 -4.6144191e+03 1.2825821e+04
+-6.9916723e+06 -2.4789395e+03 7.9763340e+03
+-3.0335819e+06 -1.1490702e+03 3.6565383e+02
+-1.9627546e+05 -1.6379234e+02 2.4777208e+01
+-1.1094567e+04 -5.4462703e+00 1.6196506e+00
+-6.2498942e+02 -8.6589684e-02 8.8809439e-02
+-3.1803025e+01 6.0769241e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.1138449e+01 -1.8028759e-01 1.4273638e-01
+-8.0565428e+02 -3.6406679e+00 2.7141915e+00
+-1.4239780e+04 -6.6409663e+01 4.4215852e+01
+-2.5081718e+05 -1.2049169e+03 7.1400310e+02
+-3.8948569e+06 -6.1530885e+03 1.1882402e+03
+-9.2152735e+06 -9.4027765e+03 -2.3587437e+04
+-1.4507189e+07 -1.2435203e+04 -6.1927689e+04
+-1.8060171e+07 -1.5388677e+04 -8.7159546e+04
+-1.9669314e+07 -1.7883704e+04 -8.3716505e+04
+-2.0037091e+07 -1.9118470e+04 -5.6781852e+04
+-1.9902025e+07 -1.8516228e+04 -2.3148165e+04
+-1.9579334e+07 -1.6145851e+04 2.8492453e+03
+-1.8858376e+07 -1.2626094e+04 1.6499647e+04
+-1.7102264e+07 -8.7868192e+03 2.0499581e+04
+-1.3668588e+07 -5.3840832e+03 1.8354418e+04
+-8.7113530e+06 -2.8986913e+03 1.1055539e+04
+-3.7495420e+06 -1.3790849e+03 5.6979017e+02
+-2.4848299e+05 -1.9877520e+02 3.6897196e+01
+-1.4096642e+04 -6.3822291e+00 2.3328440e+00
+-7.9693733e+02 -7.8673881e-02 1.2503653e-01
+-4.0664358e+01 9.2842791e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.6848840e+01 -1.5165019e-01 1.0694551e-01
+-9.1581384e+02 -3.0585179e+00 1.8805991e+00
+-1.6156467e+04 -5.5663540e+01 2.7583626e+01
+-2.8416407e+05 -1.0068181e+03 3.9291635e+02
+-4.2673289e+06 -5.2291619e+03 9.8824034e+01
+-1.0269933e+07 -8.1599186e+03 -3.0426281e+04
+-1.6187756e+07 -1.0838031e+04 -7.6952415e+04
+-2.0054762e+07 -1.3242377e+04 -1.0773773e+05
+-2.1689765e+07 -1.5083873e+04 -1.0444559e+05
+-2.1959309e+07 -1.5834389e+04 -7.3184696e+04
+-2.1747217e+07 -1.5138744e+04 -3.3578967e+04
+-2.1426066e+07 -1.3094175e+04 -2.3705428e+03
+-2.0743619e+07 -1.0186107e+04 1.4836447e+04
+-1.8934578e+07 -7.0575540e+03 2.0978270e+04
+-1.5204681e+07 -4.3055381e+03 1.9877945e+04
+-9.6783270e+06 -2.3135094e+03 1.2413627e+04
+-4.0973637e+06 -1.1079876e+03 7.2624870e+02
+-2.8148295e+05 -1.5914839e+02 4.5360007e+01
+-1.5992113e+04 -4.9261213e+00 2.7878353e+00
+-9.0580535e+02 -4.0807895e-02 1.4646509e-01
+-4.6304497e+01 9.1405760e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.9772018e+01 -5.9198732e-02 6.1505629e-02
+-9.7223750e+02 -1.1925453e+00 8.8462663e-01
+-1.7141670e+04 -2.1668307e+01 8.7948681e+00
+-3.0142922e+05 -3.9116586e+02 4.6647977e+01
+-4.4030990e+06 -2.0430319e+03 -1.4200277e+03
+-1.0760250e+07 -3.2109603e+03 -3.6684838e+04
+-1.6988498e+07 -4.2691102e+03 -8.9693229e+04
+-2.0972944e+07 -5.1898288e+03 -1.2523438e+05
+-2.2560169e+07 -5.8655958e+03 -1.2300526e+05
+-2.2727898e+07 -6.1128615e+03 -8.9533066e+04
+-2.2454113e+07 -5.8129726e+03 -4.6119017e+04
+-2.2147764e+07 -5.0098119e+03 -1.1011234e+04
+-2.1529761e+07 -3.8870425e+03 9.5105083e+03
+-1.9751155e+07 -2.6864124e+03 1.8317609e+04
+-1.5914520e+07 -1.6340320e+03 1.9169851e+04
+-1.0113303e+07 -8.7572777e+02 1.2631782e+04
+-4.2176944e+06 -4.1969611e+02 8.1131661e+02
+-2.9854121e+05 -6.0022811e+01 4.9450760e+01
+-1.6964687e+04 -1.8098112e+00 2.9777189e+00
+-9.6146134e+02 -9.5761856e-03 1.5408692e-01
+-4.9185973e+01 3.8990461e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.0642913e+01 5.9198730e-02 4.1594332e-02
+-9.8910256e+02 1.1925452e+00 4.5556259e-01
+-1.7437820e+04 2.1668307e+01 8.3727975e-01
+-3.0666193e+05 3.9116583e+02 -9.7798727e+01
+-4.4326687e+06 2.0430319e+03 -2.1010645e+03
+-1.0898080e+07 3.2109601e+03 -3.9201332e+04
+-1.7218220e+07 4.2691120e+03 -9.4678984e+04
+-2.1229528e+07 5.1898273e+03 -1.3208796e+05
+-2.2790139e+07 5.8655939e+03 -1.3041227e+05
+-2.2916829e+07 6.1128643e+03 -9.6289506e+04
+-2.2619957e+07 5.8129755e+03 -5.1571338e+04
+-2.2320848e+07 5.0098116e+03 -1.5016420e+04
+-2.1731206e+07 3.8870408e+03 6.8441327e+03
+-1.9973256e+07 2.6864128e+03 1.6818157e+04
+-1.6113308e+07 1.6340319e+03 1.8592335e+04
+-1.0232268e+07 8.7572749e+02 1.2575876e+04
+-4.2420207e+06 4.1969609e+02 8.3588317e+02
+-3.0370551e+05 6.0022841e+01 5.0502262e+01
+-1.7256664e+04 1.8098123e+00 3.0177997e+00
+-9.7807292e+02 9.5762915e-03 1.5524743e-01
+-5.0043106e+01 -3.8990428e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.9772018e+01 1.5165018e-01 6.1505623e-02
+-9.7223750e+02 3.0585178e+00 8.8462684e-01
+-1.7141670e+04 5.5663537e+01 8.7948624e+00
+-3.0142922e+05 1.0068180e+03 4.6647931e+01
+-4.4030990e+06 5.2291618e+03 -1.4200271e+03
+-1.0760250e+07 8.1599183e+03 -3.6684838e+04
+-1.6988498e+07 1.0838028e+04 -8.9693231e+04
+-2.0972944e+07 1.3242373e+04 -1.2523438e+05
+-2.2560169e+07 1.5083870e+04 -1.2300525e+05
+-2.2727898e+07 1.5834384e+04 -8.9533062e+04
+-2.2454113e+07 1.5138742e+04 -4.6119022e+04
+-2.2147764e+07 1.3094173e+04 -1.1011233e+04
+-2.1529761e+07 1.0186107e+04 9.5105083e+03
+-1.9751155e+07 7.0575533e+03 1.8317608e+04
+-1.5914520e+07 4.3055395e+03 1.9169851e+04
+-1.0113303e+07 2.3135095e+03 1.2631782e+04
+-4.2176944e+06 1.1079877e+03 8.1131676e+02
+-2.9854121e+05 1.5914838e+02 4.9450759e+01
+-1.6964687e+04 4.9261211e+00 2.9777191e+00
+-9.6146134e+02 4.0807875e-02 1.5408691e-01
+-4.9185973e+01 -9.1405708e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.6848840e+01 1.8028759e-01 1.0694551e-01
+-9.1581384e+02 3.6406679e+00 1.8805990e+00
+-1.6156467e+04 6.6409664e+01 2.7583626e+01
+-2.8416407e+05 1.2049169e+03 3.9291633e+02
+-4.2673289e+06 6.1530885e+03 9.8823691e+01
+-1.0269933e+07 9.4027759e+03 -3.0426281e+04
+-1.6187756e+07 1.2435202e+04 -7.6952417e+04
+-2.0054762e+07 1.5388679e+04 -1.0773774e+05
+-2.1689765e+07 1.7883701e+04 -1.0444559e+05
+-2.1959309e+07 1.9118472e+04 -7.3184694e+04
+-2.1747217e+07 1.8516230e+04 -3.3578966e+04
+-2.1426066e+07 1.6145856e+04 -2.3705449e+03
+-2.0743619e+07 1.2626093e+04 1.4836446e+04
+-1.8934578e+07 8.7868195e+03 2.0978272e+04
+-1.5204681e+07 5.3840811e+03 1.9877945e+04
+-9.6783270e+06 2.8986910e+03 1.2413628e+04
+-4.0973637e+06 1.3790845e+03 7.2624866e+02
+-2.8148295e+05 1.9877517e+02 4.5360005e+01
+-1.5992113e+04 6.3822279e+00 2.7878355e+00
+-9.0580535e+02 7.8673756e-02 1.4646511e-01
+-4.6304497e+01 -9.2842870e-03 0.0000000e+00
+0 0 0
+0 0 0
+-4.1138449e+01 1.4307736e-01 1.4273637e-01
+-8.0565428e+02 2.8840918e+00 2.7141920e+00
+-1.4239780e+04 5.2611811e+01 4.4215845e+01
+-2.5081718e+05 9.5656398e+02 7.1400308e+02
+-3.8948569e+06 4.6512804e+03 1.1882407e+03
+-9.2152735e+06 6.6821719e+03 -2.3587439e+04
+-1.4507189e+07 8.6942541e+03 -6.1927690e+04
+-1.8060171e+07 1.1132175e+04 -8.7159552e+04
+-1.9669314e+07 1.3634690e+04 -8.3716496e+04
+-2.0037091e+07 1.5239509e+04 -5.6781850e+04
+-1.9902025e+07 1.5201266e+04 -2.3148164e+04
+-1.9579334e+07 1.3487164e+04 2.8492424e+03
+-1.8858376e+07 1.0658591e+04 1.6499646e+04
+-1.7102264e+07 7.4793466e+03 2.0499583e+04
+-1.3668588e+07 4.6144206e+03 1.8354418e+04
+-8.7113530e+06 2.4789393e+03 1.1055538e+04
+-3.7495420e+06 1.1490703e+03 5.6979018e+02
+-2.4848299e+05 1.6379236e+02 3.6897198e+01
+-1.4096642e+04 5.4462723e+00 2.3328439e+00
+-7.9693733e+02 8.6589737e-02 1.2503654e-01
+-4.0664358e+01 -6.0769252e-03 0.0000000e+00
+0 0 0
+0 0 0
+-3.2179743e+01 7.5122688e-02 1.3614230e-01
+-6.3191858e+02 1.4921009e+00 2.6769003e+00
+-1.1208412e+04 2.6905550e+01 4.5474315e+01
+-1.9813235e+05 4.8617946e+02 7.6857650e+02
+-3.1470624e+06 1.9622866e+03 7.2096294e+02
+-7.3835366e+06 2.0860717e+03 -1.9164590e+04
+-1.1635728e+07 2.4453614e+03 -4.9959690e+04
+-1.4554509e+07 3.8086753e+03 -7.0857906e+04
+-1.5942423e+07 5.8850546e+03 -6.9351448e+04
+-1.6316980e+07 7.6675977e+03 -4.9076582e+04
+-1.6240876e+07 8.3373629e+03 -2.2958952e+04
+-1.5957665e+07 7.7547098e+03 -2.2290267e+03
+-1.5307076e+07 6.3161563e+03 9.2814755e+03
+-1.3806083e+07 4.5560487e+03 1.3464002e+04
+-1.0982448e+07 2.8838582e+03 1.2825820e+04
+-6.9916723e+06 1.5454091e+03 7.9763345e+03
+-3.0335819e+06 6.5769484e+02 3.6565382e+02
+-1.9627546e+05 8.6475137e+01 2.4777214e+01
+-1.1094567e+04 3.0313882e+00 1.6196504e+00
+-6.2498942e+02 6.0675555e-02 8.8809430e-02
+-3.1803025e+01 -2.3897933e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.0856728e+01 2.1567862e-02 8.6196889e-02
+-4.0985239e+02 3.9745443e-01 1.7009782e+00
+-7.2993855e+03 6.6552136e+00 2.9152040e+01
+-1.3000899e+05 1.1360474e+02 4.9994839e+02
+-2.0509854e+06 -1.2254949e+02 -1.1848903e+03
+-4.8746770e+06 -1.3674847e+03 -1.7450520e+04
+-7.7264080e+06 -2.1774648e+03 -4.1998185e+04
+-9.6914817e+06 -1.6128640e+03 -6.0023912e+04
+-1.0624928e+07 5.5269181e+01 -6.2090760e+04
+-1.0871973e+07 1.8394096e+03 -4.9912150e+04
+-1.0815688e+07 2.9489601e+03 -3.1970214e+04
+-1.0623581e+07 3.2131229e+03 -1.6032913e+04
+-1.0186555e+07 2.8980844e+03 -5.1513482e+03
+-9.1765356e+06 2.3172659e+03 1.3080410e+03
+-7.2782885e+06 1.6244762e+03 4.3236346e+03
+-4.6063689e+06 8.9727024e+02 3.7143133e+03
+-1.9729767e+06 3.0643633e+02 1.6843320e+02
+-1.2872201e+05 2.6095906e+01 1.2182723e+01
+-7.2207749e+03 1.1422835e+00 8.3412190e-01
+-4.0507738e+02 3.7565266e-02 4.7258279e-02
+-2.0597119e+01 2.2463250e-04 0.0000000e+00
+0 0 0
+0 0 0
+-9.9096498e+00 1.0814692e-03 2.9562310e-02
+-1.9087960e+02 -2.9127978e-03 5.4387270e-01
+-3.3624023e+03 -4.9537892e-01 8.6653374e+00
+-6.0696800e+04 -1.6289413e+01 1.4081500e+02
+-9.3157672e+05 -7.5096188e+02 -2.7931345e+03
+-2.3447337e+06 -2.2982524e+03 -1.5133367e+04
+-3.7717595e+06 -3.3093165e+03 -3.3010237e+04
+-4.7235076e+06 -2.8673495e+03 -4.7401218e+04
+-5.1305062e+06 -1.3111988e+03 -5.2065185e+04
+-5.1944074e+06 3.9184684e+02 -4.7142209e+04
+-5.1365123e+06 1.5308769e+03 -3.6967923e+04
+-5.0536436e+06 1.9907255e+03 -2.5958971e+04
+-4.8824773e+06 2.0193765e+03 -1.6313479e+04
+-4.4328470e+06 1.8346163e+03 -8.4576088e+03
+-3.5194748e+06 1.4525879e+03 -2.7144007e+03
+-2.1938904e+06 8.5429672e+02 1.0627201e+02
+-8.8748158e+05 2.5897618e+02 3.4074747e+01
+-6.0002758e+04 8.2698719e+00 3.0715825e+00
+-3.3205035e+03 4.7330518e-01 2.4332993e-01
+-1.8832089e+02 2.4264832e-02 1.5236991e-02
+-9.7688389e+00 9.2524539e-04 0.0000000e+00
+0 0 0
+0 0 0
+-2.7809151e+00 -3.5185175e-04 2.0921870e-03
+-4.5531201e+01 -8.4206781e-03 -9.9196852e-05
+-6.1923268e+02 -1.5725211e-01 -7.4837731e-01
+-7.3510101e+03 -2.6566928e+00 -2.4120854e+01
+-6.5470608e+04 -4.3652030e+01 -9.0469184e+02
+-1.4856949e+05 -1.2859665e+02 -3.5999052e+03
+-2.3270047e+05 -1.8823110e+02 -7.4628602e+03
+-2.9664777e+05 -1.6786753e+02 -1.0781860e+04
+-3.3422318e+05 -8.1903962e+01 -1.2260583e+04
+-3.5060545e+05 1.6295256e+01 -1.1747545e+04
+-3.5306711e+05 8.4902074e+01 -9.9199466e+03
+-3.4503348e+05 1.1500702e+02 -7.5752320e+03
+-3.2443187e+05 1.1891976e+02 -5.2070677e+03
+-2.8521193e+05 1.0827711e+02 -3.0513796e+03
+-2.2278828e+05 8.4596820e+01 -1.3345193e+03
+-1.4257892e+05 4.8898276e+01 -3.1774758e+02
+-6.3511968e+04 1.5318586e+01 -8.8927452e+00
+-7.1929697e+03 1.0004612e+00 -2.3818162e-01
+-6.0744014e+02 7.1676535e-02 7.8988013e-03
+-4.4697612e+01 4.8478276e-03 1.5777193e-03
+-2.7302636e+00 2.5708181e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.2917443e-01 -1.0263471e-04 -4.4072019e-04
+-7.2245151e+00 -1.6829136e-03 -1.3014842e-02
+-7.6052810e+01 -2.2561234e-02 -2.5103135e-01
+-6.4378407e+02 -2.6868838e-01 -3.9509972e+00
+-3.6920424e+03 -2.5396265e+00 -5.5968274e+01
+-8.4154565e+03 -7.1366034e+00 -2.0714081e+02
+-1.3264101e+04 -1.0553819e+01 -4.2635539e+02
+-1.6983347e+04 -9.6666216e+00 -6.1949040e+02
+-1.9182233e+04 -5.0033195e+00 -7.1067702e+02
+-2.0139525e+04 5.6340410e-01 -6.8717026e+02
+-2.0278705e+04 4.6191509e+00 -5.8474560e+02
+-1.9805026e+04 6.5283724e+00 -4.4853511e+02
+-1.8596393e+04 6.8738446e+00 -3.0837151e+02
+-1.6302134e+04 6.2662283e+00 -1.8034313e+02
+-1.2675188e+04 4.8362295e+00 -7.9441065e+01
+-8.0556750e+03 2.7637238e+00 -2.0355607e+01
+-3.5632961e+03 9.0123407e-01 -1.4514101e+00
+-6.2543906e+02 9.3562293e-02 -9.1711283e-02
+-7.4129604e+01 8.1876847e-03 -4.3328559e-03
+-7.0532444e+00 6.5494603e-04 -9.1761989e-05
+-5.1701202e-01 4.1852784e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5955565e-02 -1.3229747e-05 -1.5516551e-04
+-8.7965774e-01 -1.8258769e-04 -2.8166851e-03
+-7.4416546e+00 -2.0107696e-03 -3.7297612e-02
+-4.8632996e+01 -1.8811106e-02 -4.0852050e-01
+-2.1313986e+02 -1.2821250e-01 -3.4962409e+00
+-4.7714650e+02 -3.4394846e-01 -1.1965560e+01
+-7.5389745e+02 -5.1104386e-01 -2.4315323e+01
+-9.6914126e+02 -4.7816879e-01 -3.5446088e+01
+-1.0976898e+03 -2.5950425e-01 -4.0981570e+01
+-1.1538942e+03 1.1936458e-02 -3.9969220e+01
+-1.1619453e+03 2.1688447e-01 -3.4265750e+01
+-1.1339397e+03 3.1871653e-01 -2.6403607e+01
+-1.0628484e+03 3.4079974e-01 -1.8171430e+01
+-9.2877578e+02 3.1091841e-01 -1.0633494e+01
+-7.1902114e+02 2.3771558e-01 -4.7471858e+00
+-4.5551519e+02 1.3505406e-01 -1.3169382e+00
+-2.0473779e+02 4.5815775e-02 -1.5412722e-01
+-4.6969266e+01 6.3547246e-03 -1.4271465e-02
+-7.2115395e+00 6.5931965e-04 -1.0797625e-03
+-8.5419075e-01 5.9291847e-05 -5.7590572e-05
+-7.3840552e-02 4.2415082e-06 0.0000000e+00
+0 0 0
+0 0 0
+-7.6164775e-03 0.0000000e+00 -2.2713970e-05
+-7.7691048e-02 0.0000000e+00 -3.3703058e-04
+-5.5728523e-01 0.0000000e+00 -3.5913950e-03
+-3.0303900e+00 0.0000000e+00 -3.0867954e-02
+-1.1226037e+01 0.0000000e+00 -1.9628309e-01
+-2.4508710e+01 0.0000000e+00 -6.2569817e-01
+-3.8689542e+01 0.0000000e+00 -1.2522418e+00
+-4.9881315e+01 0.0000000e+00 -1.8273257e+00
+-5.6643035e+01 0.0000000e+00 -2.1256974e+00
+-5.9621403e+01 0.0000000e+00 -2.0885297e+00
+-6.0047208e+01 0.0000000e+00 -1.8023055e+00
+-5.8555061e+01 0.0000000e+00 -1.3947262e+00
+-5.4785699e+01 0.0000000e+00 -9.6156908e-01
+-4.7735003e+01 0.0000000e+00 -5.6418269e-01
+-3.6833127e+01 0.0000000e+00 -2.5594646e-01
+-2.3338886e+01 0.0000000e+00 -7.6269411e-02
+-1.0740484e+01 0.0000000e+00 -1.1941758e-02
+-2.9128102e+00 0.0000000e+00 -1.4115579e-03
+-5.3746348e-01 0.0000000e+00 -1.3518567e-04
+-7.5097661e-02 0.0000000e+00 -9.2105235e-06
+-7.3725990e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.5974247e-03 8.4971358e-06 -2.7549986e-05
+-7.7469298e-02 1.4944052e-04 -3.9874079e-04
+-5.5545374e-01 1.9390765e-03 -4.1693121e-03
+-3.0189997e+00 1.9843638e-02 -3.5403319e-02
+-1.1178777e+01 1.4078855e-01 -2.2345143e-01
+-2.4402896e+01 3.7952854e-01 -7.0879378e-01
+-3.8547677e+01 5.5876405e-01 -1.4094227e+00
+-4.9762258e+01 5.0481921e-01 -2.0332991e+00
+-5.6595320e+01 2.3478580e-01 -2.3158001e+00
+-5.9652902e+01 -9.1487379e-02 -2.1928140e+00
+-6.0131486e+01 -3.2334724e-01 -1.7851892e+00
+-5.8656740e+01 -4.0846645e-01 -1.2750441e+00
+-5.4879926e+01 -3.7999160e-01 -8.0082600e-01
+-4.7810768e+01 -2.9560904e-01 -4.2945230e-01
+-3.6886674e+01 -1.9465284e-01 -1.8125197e-01
+-2.3369344e+01 -9.9262483e-02 -5.1531588e-02
+-1.0752050e+01 -3.1927126e-02 -8.0388982e-03
+-2.9150310e+00 -4.8500315e-03 -9.6807204e-04
+-5.3769790e-01 -6.3800919e-04 -9.5648385e-05
+-7.5106683e-02 -7.9871073e-05 -6.7549854e-06
+-7.3714883e-03 -7.8656139e-06 0.0000000e+00
+0 0 0
+0 0 0
+-7.5797403e-02 4.0738220e-05 -1.9040273e-04
+-8.7751930e-01 1.1630639e-03 -3.3424685e-03
+-7.4202921e+00 2.0514622e-02 -4.3280474e-02
+-4.8467806e+01 2.7914975e-01 -4.6777617e-01
+-2.1228610e+02 2.7914818e+00 -3.9722268e+00
+-4.7509283e+02 7.8839225e+00 -1.3530287e+01
+-7.5109828e+02 1.1557479e+01 -2.7328170e+01
+-9.6679185e+02 1.0230403e+01 -3.9403164e+01
+-1.0967505e+03 4.5131120e+00 -4.4620823e+01
+-1.1544999e+03 -2.1673990e+00 -4.1939158e+01
+-1.1635586e+03 -6.7661363e+00 -3.3883050e+01
+-1.1358630e+03 -8.3337032e+00 -2.4034480e+01
+-1.0646053e+03 -7.6455741e+00 -1.5011971e+01
+-9.3016934e+02 -5.9138221e+00 -8.0001970e+00
+-7.1999468e+02 -3.9056603e+00 -3.3156520e+00
+-4.5605678e+02 -1.9958286e+00 -8.7749567e-01
+-2.0492636e+02 -6.1608385e-01 -1.0477785e-01
+-4.6994041e+01 -7.4611070e-02 -1.0241919e-02
+-7.2126247e+00 -8.9539118e-03 -8.4076473e-04
+-8.5402393e-01 -1.0373895e-03 -5.0066937e-05
+-7.3804714e-02 -9.3769963e-05 0.0000000e+00
+0 0 0
+0 0 0
+-5.2835596e-01 -2.3669241e-04 -5.4104153e-04
+-7.2109409e+00 2.3111792e-03 -1.5263396e-02
+-7.5877369e+01 1.1886576e-01 -2.8905564e-01
+-6.4193299e+02 2.6461395e+00 -4.5071263e+00
+-3.6783316e+03 4.8021807e+01 -6.3448235e+01
+-8.3794426e+03 1.4218200e+02 -2.3376018e+02
+-1.3214286e+04 2.0638970e+02 -4.7840788e+02
+-1.6941681e+04 1.7803119e+02 -6.8787469e+02
+-1.9165765e+04 7.3429367e+01 -7.7325908e+02
+-2.0150201e+04 -4.4222504e+01 -7.2052764e+02
+-2.0306645e+04 -1.2224296e+02 -5.7711017e+02
+-1.9837839e+04 -1.4634620e+02 -4.0628459e+02
+-1.8625870e+04 -1.3207717e+02 -2.5237639e+02
+-1.6325151e+04 -1.0142964e+02 -1.3384336e+02
+-1.2691074e+04 -6.7270079e+01 -5.4592485e+01
+-8.0643178e+03 -3.4608692e+01 -1.3336771e+01
+-3.5659874e+03 -1.0226185e+01 -1.0352769e+00
+-6.2557458e+02 -8.9697150e-01 -7.7392001e-02
+-7.4112470e+01 -9.8504463e-02 -4.9751452e-03
+-7.0489303e+00 -1.0095720e-02 -2.3095877e-04
+-5.1653504e-01 -8.0171228e-04 0.0000000e+00
+0 0 0
+0 0 0
+-2.7782986e+00 -5.7110073e-03 2.8578575e-03
+-4.5475242e+01 -5.8171428e-02 7.3816976e-03
+-6.1824798e+02 -8.4717088e-02 -7.7373132e-01
+-7.3354229e+03 1.3251274e+01 -2.6965992e+01
+-6.5252567e+04 8.2649987e+02 -1.0234848e+03
+-1.4793809e+05 2.5416391e+03 -4.0543509e+03
+-2.3181910e+05 3.6307359e+03 -8.3600628e+03
+-2.9591660e+05 3.0447655e+03 -1.1957962e+04
+-3.3394127e+05 1.1640736e+03 -1.3330520e+04
+-3.5079813e+05 -8.7336579e+02 -1.2308697e+04
+-3.5355379e+05 -2.1731068e+03 -9.7711532e+03
+-3.4559520e+05 -2.5293472e+03 -6.8264356e+03
+-3.2492778e+05 -2.2432745e+03 -4.2193233e+03
+-2.8559308e+05 -1.7077936e+03 -2.2318062e+03
+-2.2304861e+05 -1.1374235e+03 -9.0132409e+02
+-1.4271823e+05 -5.9227138e+02 -2.0435478e+02
+-6.3550299e+04 -1.6817398e+02 -8.0759309e+00
+-7.1912899e+03 -1.0176940e+01 -4.7576501e-01
+-6.0698946e+02 -1.0008490e+00 -2.4102157e-02
+-4.4646991e+01 -8.3969418e-02 -8.4960526e-04
+-2.7263171e+00 -5.5978051e-03 0.0000000e+00
+0 0 0
+0 0 0
+-9.9068114e+00 -4.9160392e-02 4.0611061e-02
+-1.9078430e+02 -8.8575374e-01 7.7288725e-01
+-3.3600903e+03 -1.4413308e+01 1.2789514e+01
+-6.0647304e+04 -2.3814982e+02 2.1469463e+02
+-9.2651026e+05 -4.7018419e+02 -3.5550800e+03
+-2.3280387e+06 4.0906367e+02 -1.8117519e+04
+-3.7481145e+06 7.4308878e+02 -3.8874920e+04
+-4.7036477e+06 -4.6283791e+02 -5.5227224e+04
+-5.1220633e+06 -2.8562054e+03 -5.9649875e+04
+-5.1975532e+06 -5.2480403e+03 -5.2129385e+04
+-5.1461193e+06 -6.6343575e+03 -3.8061166e+04
+-5.0639413e+06 -6.7358379e+03 -2.3557015e+04
+-4.8901604e+06 -5.8755557e+03 -1.2241630e+04
+-4.4373358e+06 -4.5628623e+03 -4.8977127e+03
+-3.5214124e+06 -3.1788879e+03 -9.1865342e+02
+-2.1938788e+06 -1.9249786e+03 4.0247698e+02
+-8.8623009e+05 -9.3640675e+02 -8.0775901e+01
+-5.9930782e+04 -1.5935710e+02 -3.5715598e+00
+-3.3154985e+03 -9.4366770e+00 -1.4066128e-01
+-1.8798196e+02 -5.5954433e-01 -4.0175842e-03
+-9.7487080e+00 -2.9746302e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.0863889e+01 -1.5874256e-01 1.1674382e-01
+-4.0990027e+02 -3.0852553e+00 2.3641204e+00
+-7.2986926e+03 -5.4370830e+01 4.1628705e+01
+-1.2997470e+05 -9.6156477e+02 7.3074690e+02
+-2.0433856e+06 -4.5557090e+03 -2.7835240e+03
+-4.8468374e+06 -6.6392421e+03 -2.3574802e+04
+-7.6861302e+06 -9.1494861e+03 -5.3960047e+04
+-9.6570306e+06 -1.2677864e+04 -7.6196058e+04
+-1.0608842e+07 -1.6700449e+04 -7.8437852e+04
+-1.0873736e+07 -1.9906681e+04 -6.2015901e+04
+-1.0825937e+07 -2.1190684e+04 -3.7210921e+04
+-1.0632490e+07 -2.0264489e+04 -1.4773235e+04
+-1.0189272e+07 -1.7585303e+04 -3.4665656e+02
+-9.1734387e+06 -1.3931453e+04 5.9250256e+03
+-7.2720079e+06 -1.0033362e+04 6.4988843e+03
+-4.5991379e+06 -6.4226202e+03 3.7655543e+03
+-1.9665335e+06 -3.4414075e+03 -1.7261030e+02
+-1.2844939e+05 -5.9766816e+02 -6.9109585e+00
+-7.2042908e+03 -3.2609542e+01 -2.2218855e-01
+-4.0407704e+02 -1.7786844e+00 -3.3864358e-03
+-2.0542359e+01 -8.7892808e-02 0.0000000e+00
+0 0 0
+0 0 0
+-3.2212386e+01 -2.9797135e-01 1.7187172e-01
+-6.3240356e+02 -5.8908655e+00 3.4624643e+00
+-1.1214342e+04 -1.0530398e+02 6.0324757e+01
+-1.9819727e+05 -1.8781441e+03 1.0418251e+03
+-3.1388942e+06 -9.7536072e+03 -1.9284816e+03
+-7.3475394e+06 -1.5727293e+04 -2.8837639e+04
+-1.1583102e+07 -2.1958218e+04 -6.8654507e+04
+-1.4511235e+07 -2.8420789e+04 -9.6186261e+04
+-1.5925628e+07 -3.4334348e+04 -9.5347298e+04
+-1.6324752e+07 -3.8324474e+04 -6.9157083e+04
+-1.6258840e+07 -3.9293339e+04 -3.3090955e+04
+-1.5971324e+07 -3.7024571e+04 -2.6720058e+03
+-1.5309664e+07 -3.2136724e+04 1.4467066e+04
+-1.3798840e+07 -2.5673246e+04 1.8965941e+04
+-1.0970132e+07 -1.8714956e+04 1.5331106e+04
+-6.9784255e+06 -1.2157792e+04 7.8195559e+03
+-3.0224873e+06 -6.6291370e+03 -8.7354622e+01
+-1.9580470e+05 -1.1548787e+03 -9.0693234e-01
+-1.1066055e+04 -6.2219057e+01 1.9009241e-01
+-6.2326615e+02 -3.3320871e+00 2.0224748e-02
+-3.1709311e+01 -1.6138184e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1209031e+01 -3.7523065e-01 1.4784165e-01
+-8.0682578e+02 -7.4380834e+00 2.8665607e+00
+-1.4256849e+04 -1.3305859e+02 4.7690027e+01
+-2.5106296e+05 -2.3693503e+03 7.8467261e+02
+-3.8886329e+06 -1.2601799e+04 -2.5911231e+03
+-9.1762001e+06 -2.0847743e+04 -3.6544126e+04
+-1.4449901e+07 -2.9167471e+04 -8.6622989e+04
+-1.8017673e+07 -3.7062714e+04 -1.2047957e+05
+-1.9662509e+07 -4.3648910e+04 -1.1796960e+05
+-2.0062194e+07 -4.7690178e+04 -8.3500699e+04
+-1.9939454e+07 -4.8261507e+04 -3.7103693e+04
+-1.9609650e+07 -4.5249211e+04 1.4374467e+03
+-1.8872309e+07 -3.9315962e+04 2.2549724e+04
+-1.7101092e+07 -3.1553863e+04 2.7257470e+04
+-1.3658436e+07 -2.3145148e+04 2.1535262e+04
+-8.6978548e+06 -1.5134719e+04 1.1013955e+04
+-3.7371327e+06 -8.3024706e+03 2.7795881e+02
+-2.4792945e+05 -1.4504146e+03 1.9956198e+01
+-1.4062113e+04 -7.8164667e+01 1.3727660e+00
+-7.9479852e+02 -4.1765691e+00 7.8440413e-02
+-4.0545850e+01 -2.0145001e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6959671e+01 -3.1657421e-01 5.2175363e-02
+-9.1773239e+02 -6.2697510e+00 8.0239231e-01
+-1.6186031e+04 -1.1193585e+02 9.2440403e+00
+-2.8461938e+05 -1.9873832e+03 8.2589786e+01
+-4.2644895e+06 -1.0649613e+04 -4.7089958e+03
+-1.0231756e+07 -1.7775133e+04 -4.5958781e+04
+-1.6131873e+07 -2.4864035e+04 -1.0614518e+05
+-2.0019752e+07 -3.1348593e+04 -1.4686997e+05
+-2.1699259e+07 -3.6528948e+04 -1.4449563e+05
+-2.2007661e+07 -3.9548012e+04 -1.0428622e+05
+-2.1810305e+07 -3.9796473e+04 -4.9663337e+04
+-2.1480032e+07 -3.7237523e+04 -3.7086064e+03
+-2.0776567e+07 -3.2382431e+04 2.2306123e+04
+-1.8947101e+07 -2.6058665e+04 2.9334191e+04
+-1.5203365e+07 -1.9181157e+04 2.4053750e+04
+-9.6696140e+06 -1.2586697e+04 1.2792706e+04
+-4.0867542e+06 -6.9247236e+03 8.0549188e+02
+-2.8096471e+05 -1.2126452e+03 4.9481791e+01
+-1.5958294e+04 -6.5506346e+01 3.0047057e+00
+-9.0362900e+02 -3.5048207e+00 1.5661238e-01
+-4.6180249e+01 -1.6908555e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.9913138e+01 -1.2388278e-01 -5.1571719e-02
+-9.7472513e+02 -2.4510265e+00 -1.3826680e+00
+-1.7180884e+04 -4.3693101e+01 -3.0411731e+01
+-3.0204849e+05 -7.7431626e+02 -6.2420241e+02
+-4.4032607e+06 -4.1583155e+03 -6.9538171e+03
+-1.0724175e+07 -6.9613627e+03 -5.3842313e+04
+-1.6935863e+07 -9.7334926e+03 -1.2160776e+05
+-2.0945890e+07 -1.2232370e+04 -1.6777808e+05
+-2.2583958e+07 -1.4192933e+04 -1.6632461e+05
+-2.2795544e+07 -1.5309460e+04 -1.2291742e+05
+-2.2538433e+07 -1.5370593e+04 -6.3023218e+04
+-2.2221864e+07 -1.4371110e+04 -1.1789402e+04
+-2.1579768e+07 -1.2502942e+04 1.8338348e+04
+-1.9776865e+07 -1.0073819e+04 2.8062773e+04
+-1.5922468e+07 -7.4270306e+03 2.4256196e+04
+-1.0110220e+07 -4.8814124e+03 1.3467986e+04
+-4.2097194e+06 -2.6889987e+03 1.2573231e+03
+-2.9809969e+05 -4.7155758e+02 7.4713631e+01
+-1.6934359e+04 -2.5514628e+01 4.3936051e+00
+-9.5942850e+02 -1.3668026e+00 2.2275164e-01
+-4.9066319e+01 -6.5987339e-02 0.0000000e+00
+0 0 0
+0 0 0
+-5.0795214e+01 1.2388278e-01 -9.5463824e-02
+-9.9180131e+02 2.4510261e+00 -2.2987650e+00
+-1.7480632e+04 4.3693099e+01 -4.6873427e+01
+-3.0734262e+05 7.7431622e+02 -9.1481709e+02
+-4.4340027e+06 4.1583150e+03 -7.8974057e+03
+-1.0862988e+07 6.9613628e+03 -5.6912878e+04
+-1.7167101e+07 9.7334926e+03 -1.2749884e+05
+-2.1205747e+07 1.2232368e+04 -1.7574442e+05
+-2.2819500e+07 1.4192932e+04 -1.7476922e+05
+-2.2991861e+07 1.5309465e+04 -1.3035552e+05
+-2.2712405e+07 1.5370592e+04 -6.8649091e+04
+-2.2402741e+07 1.4371108e+04 -1.5498799e+04
+-2.1787941e+07 1.2502941e+04 1.6230065e+04
+-2.0004289e+07 1.0073819e+04 2.7115313e+04
+-1.6125094e+07 7.4270302e+03 2.4046891e+04
+-1.0231590e+07 4.8814126e+03 1.3606376e+04
+-4.2352249e+06 2.6889988e+03 1.4326234e+03
+-3.0330052e+05 4.7155758e+02 8.4510723e+01
+-1.7228115e+04 2.5514628e+01 4.9328981e+00
+-9.7612203e+02 1.3668026e+00 2.4840967e-01
+-4.9926671e+01 6.5987340e-02 0.0000000e+00
+0 0 0
+0 0 0
+-4.9913138e+01 3.1657420e-01 -5.1571785e-02
+-9.7472513e+02 6.2697512e+00 -1.3826667e+00
+-1.7180884e+04 1.1193585e+02 -3.0411731e+01
+-3.0204849e+05 1.9873832e+03 -6.2420247e+02
+-4.4032607e+06 1.0649612e+04 -6.9538169e+03
+-1.0724175e+07 1.7775133e+04 -5.3842313e+04
+-1.6935863e+07 2.4864034e+04 -1.2160776e+05
+-2.0945890e+07 3.1348592e+04 -1.6777808e+05
+-2.2583958e+07 3.6528947e+04 -1.6632461e+05
+-2.2795544e+07 3.9548009e+04 -1.2291742e+05
+-2.2538433e+07 3.9796471e+04 -6.3023220e+04
+-2.2221864e+07 3.7237521e+04 -1.1789402e+04
+-2.1579768e+07 3.2382429e+04 1.8338348e+04
+-1.9776865e+07 2.6058666e+04 2.8062773e+04
+-1.5922468e+07 1.9181159e+04 2.4256197e+04
+-1.0110220e+07 1.2586696e+04 1.3467986e+04
+-4.2097194e+06 6.9247234e+03 1.2573231e+03
+-2.9809969e+05 1.2126452e+03 7.4713633e+01
+-1.6934359e+04 6.5506347e+01 4.3936050e+00
+-9.5942850e+02 3.5048208e+00 2.2275164e-01
+-4.9066319e+01 1.6908556e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6959671e+01 3.7523065e-01 5.2175356e-02
+-9.1773239e+02 7.4380834e+00 8.0239224e-01
+-1.6186031e+04 1.3305860e+02 9.2440428e+00
+-2.8461938e+05 2.3693503e+03 8.2589761e+01
+-4.2644895e+06 1.2601799e+04 -4.7089951e+03
+-1.0231756e+07 2.0847743e+04 -4.5958783e+04
+-1.6131873e+07 2.9167471e+04 -1.0614519e+05
+-2.0019752e+07 3.7062713e+04 -1.4686997e+05
+-2.1699259e+07 4.3648909e+04 -1.4449563e+05
+-2.2007661e+07 4.7690177e+04 -1.0428622e+05
+-2.1810305e+07 4.8261511e+04 -4.9663333e+04
+-2.1480032e+07 4.5249214e+04 -3.7086051e+03
+-2.0776567e+07 3.9315966e+04 2.2306124e+04
+-1.8947101e+07 3.1553863e+04 2.9334191e+04
+-1.5203365e+07 2.3145146e+04 2.4053749e+04
+-9.6696140e+06 1.5134718e+04 1.2792707e+04
+-4.0867542e+06 8.3024705e+03 8.0549192e+02
+-2.8096471e+05 1.4504146e+03 4.9481792e+01
+-1.5958294e+04 7.8164665e+01 3.0047056e+00
+-9.0362900e+02 4.1765690e+00 1.5661239e-01
+-4.6180249e+01 2.0145001e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1209031e+01 2.9797135e-01 1.4784164e-01
+-8.0682578e+02 5.8908654e+00 2.8665608e+00
+-1.4256849e+04 1.0530398e+02 4.7690023e+01
+-2.5106296e+05 1.8781441e+03 7.8467261e+02
+-3.8886329e+06 9.7536076e+03 -2.5911231e+03
+-9.1762001e+06 1.5727294e+04 -3.6544127e+04
+-1.4449901e+07 2.1958218e+04 -8.6622990e+04
+-1.8017673e+07 2.8420790e+04 -1.2047957e+05
+-1.9662509e+07 3.4334350e+04 -1.1796960e+05
+-2.0062194e+07 3.8324474e+04 -8.3500697e+04
+-1.9939454e+07 3.9293339e+04 -3.7103694e+04
+-1.9609650e+07 3.7024570e+04 1.4374484e+03
+-1.8872309e+07 3.2136724e+04 2.2549722e+04
+-1.7101092e+07 2.5673246e+04 2.7257470e+04
+-1.3658436e+07 1.8714956e+04 2.1535262e+04
+-8.6978548e+06 1.2157792e+04 1.1013954e+04
+-3.7371327e+06 6.6291373e+03 2.7795887e+02
+-2.4792945e+05 1.1548787e+03 1.9956195e+01
+-1.4062113e+04 6.2219057e+01 1.3727661e+00
+-7.9479852e+02 3.3320870e+00 7.8440425e-02
+-4.0545850e+01 1.6138183e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2212386e+01 1.5874256e-01 1.7187171e-01
+-6.3240356e+02 3.0852553e+00 3.4624646e+00
+-1.1214342e+04 5.4370830e+01 6.0324757e+01
+-1.9819727e+05 9.6156475e+02 1.0418251e+03
+-3.1388942e+06 4.5557089e+03 -1.9284817e+03
+-7.3475394e+06 6.6392423e+03 -2.8837639e+04
+-1.1583102e+07 9.1494869e+03 -6.8654507e+04
+-1.4511235e+07 1.2677865e+04 -9.6186260e+04
+-1.5925628e+07 1.6700449e+04 -9.5347299e+04
+-1.6324752e+07 1.9906681e+04 -6.9157084e+04
+-1.6258840e+07 2.1190687e+04 -3.3090956e+04
+-1.5971324e+07 2.0264491e+04 -2.6720040e+03
+-1.5309664e+07 1.7585303e+04 1.4467066e+04
+-1.3798840e+07 1.3931454e+04 1.8965940e+04
+-1.0970132e+07 1.0033363e+04 1.5331105e+04
+-6.9784255e+06 6.4226200e+03 7.8195568e+03
+-3.0224873e+06 3.4414073e+03 -8.7354565e+01
+-1.9580470e+05 5.9766815e+02 -9.0693304e-01
+-1.1066055e+04 3.2609541e+01 1.9009205e-01
+-6.2326615e+02 1.7786845e+00 2.0224757e-02
+-3.1709311e+01 8.7892809e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.0863889e+01 4.9160393e-02 1.1674382e-01
+-4.0990027e+02 8.8575371e-01 2.3641205e+00
+-7.2986926e+03 1.4413307e+01 4.1628700e+01
+-1.2997470e+05 2.3814982e+02 7.3074697e+02
+-2.0433856e+06 4.7018409e+02 -2.7835238e+03
+-4.8468374e+06 -4.0906384e+02 -2.3574801e+04
+-7.6861302e+06 -7.4308854e+02 -5.3960048e+04
+-9.6570307e+06 4.6283788e+02 -7.6196058e+04
+-1.0608842e+07 2.8562069e+03 -7.8437851e+04
+-1.0873736e+07 5.2480395e+03 -6.2015901e+04
+-1.0825937e+07 6.6343571e+03 -3.7210922e+04
+-1.0632490e+07 6.7358383e+03 -1.4773235e+04
+-1.0189272e+07 5.8755562e+03 -3.4665709e+02
+-9.1734387e+06 4.5628626e+03 5.9250255e+03
+-7.2720079e+06 3.1788878e+03 6.4988842e+03
+-4.5991379e+06 1.9249784e+03 3.7655543e+03
+-1.9665335e+06 9.3640659e+02 -1.7261029e+02
+-1.2844939e+05 1.5935710e+02 -6.9109610e+00
+-7.2042908e+03 9.4366776e+00 -2.2218854e-01
+-4.0407704e+02 5.5954434e-01 -3.3864334e-03
+-2.0542359e+01 2.9746301e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.9068114e+00 5.7110072e-03 4.0611053e-02
+-1.9078430e+02 5.8171439e-02 7.7288726e-01
+-3.3600903e+03 8.4717164e-02 1.2789515e+01
+-6.0647304e+04 -1.3251273e+01 2.1469462e+02
+-9.2651026e+05 -8.2649986e+02 -3.5550798e+03
+-2.3280387e+06 -2.5416391e+03 -1.8117519e+04
+-3.7481145e+06 -3.6307360e+03 -3.8874920e+04
+-4.7036477e+06 -3.0447655e+03 -5.5227223e+04
+-5.1220633e+06 -1.1640737e+03 -5.9649875e+04
+-5.1975532e+06 8.7336585e+02 -5.2129386e+04
+-5.1461193e+06 2.1731068e+03 -3.8061166e+04
+-5.0639413e+06 2.5293472e+03 -2.3557015e+04
+-4.8901604e+06 2.2432745e+03 -1.2241630e+04
+-4.4373358e+06 1.7077937e+03 -4.8977126e+03
+-3.5214124e+06 1.1374235e+03 -9.1865344e+02
+-2.1938788e+06 5.9227144e+02 4.0247687e+02
+-8.8623009e+05 1.6817397e+02 -8.0775870e+01
+-5.9930782e+04 1.0176940e+01 -3.5715600e+00
+-3.3154985e+03 1.0008490e+00 -1.4066130e-01
+-1.8798196e+02 8.3969425e-02 -4.0175871e-03
+-9.7487080e+00 5.5978054e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7782986e+00 2.3669237e-04 2.8578575e-03
+-4.5475242e+01 -2.3111802e-03 7.3816887e-03
+-6.1824798e+02 -1.1886575e-01 -7.7373122e-01
+-7.3354229e+03 -2.6461394e+00 -2.6965993e+01
+-6.5252567e+04 -4.8021806e+01 -1.0234848e+03
+-1.4793809e+05 -1.4218200e+02 -4.0543509e+03
+-2.3181910e+05 -2.0638970e+02 -8.3600628e+03
+-2.9591660e+05 -1.7803119e+02 -1.1957962e+04
+-3.3394127e+05 -7.3429369e+01 -1.3330520e+04
+-3.5079813e+05 4.4222511e+01 -1.2308696e+04
+-3.5355379e+05 1.2224295e+02 -9.7711533e+03
+-3.4559520e+05 1.4634619e+02 -6.8264356e+03
+-3.2492778e+05 1.3207717e+02 -4.2193233e+03
+-2.8559308e+05 1.0142964e+02 -2.2318063e+03
+-2.2304861e+05 6.7270082e+01 -9.0132409e+02
+-1.4271823e+05 3.4608691e+01 -2.0435478e+02
+-6.3550299e+04 1.0226185e+01 -8.0759293e+00
+-7.1912899e+03 8.9697147e-01 -4.7576497e-01
+-6.0698946e+02 9.8504450e-02 -2.4102147e-02
+-4.4646991e+01 1.0095719e-02 -8.4960622e-04
+-2.7263171e+00 8.0171229e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.2835596e-01 -4.0738220e-05 -5.4104156e-04
+-7.2109409e+00 -1.1630639e-03 -1.5263396e-02
+-7.5877369e+01 -2.0514622e-02 -2.8905563e-01
+-6.4193299e+02 -2.7914976e-01 -4.5071263e+00
+-3.6783316e+03 -2.7914818e+00 -6.3448235e+01
+-8.3794426e+03 -7.8839226e+00 -2.3376018e+02
+-1.3214286e+04 -1.1557479e+01 -4.7840788e+02
+-1.6941681e+04 -1.0230402e+01 -6.8787469e+02
+-1.9165765e+04 -4.5131120e+00 -7.7325908e+02
+-2.0150201e+04 2.1673990e+00 -7.2052764e+02
+-2.0306645e+04 6.7661367e+00 -5.7711017e+02
+-1.9837839e+04 8.3337036e+00 -4.0628459e+02
+-1.8625870e+04 7.6455742e+00 -2.5237639e+02
+-1.6325151e+04 5.9138220e+00 -1.3384336e+02
+-1.2691074e+04 3.9056604e+00 -5.4592487e+01
+-8.0643178e+03 1.9958287e+00 -1.3336771e+01
+-3.5659874e+03 6.1608387e-01 -1.0352769e+00
+-6.2557458e+02 7.4611069e-02 -7.7392008e-02
+-7.4112470e+01 8.9539120e-03 -4.9751443e-03
+-7.0489303e+00 1.0373895e-03 -2.3095872e-04
+-5.1653504e-01 9.3769959e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5797403e-02 -8.4971357e-06 -1.9040274e-04
+-8.7751930e-01 -1.4944052e-04 -3.3424685e-03
+-7.4202921e+00 -1.9390765e-03 -4.3280474e-02
+-4.8467806e+01 -1.9843638e-02 -4.6777617e-01
+-2.1228610e+02 -1.4078855e-01 -3.9722268e+00
+-4.7509283e+02 -3.7952854e-01 -1.3530287e+01
+-7.5109828e+02 -5.5876406e-01 -2.7328170e+01
+-9.6679185e+02 -5.0481921e-01 -3.9403164e+01
+-1.0967505e+03 -2.3478578e-01 -4.4620823e+01
+-1.1544999e+03 9.1487346e-02 -4.1939158e+01
+-1.1635586e+03 3.2334721e-01 -3.3883050e+01
+-1.1358630e+03 4.0846647e-01 -2.4034480e+01
+-1.0646053e+03 3.7999159e-01 -1.5011971e+01
+-9.3016934e+02 2.9560903e-01 -8.0001970e+00
+-7.1999468e+02 1.9465284e-01 -3.3156520e+00
+-4.5605678e+02 9.9262480e-02 -8.7749567e-01
+-2.0492636e+02 3.1927126e-02 -1.0477784e-01
+-4.6994041e+01 4.8500315e-03 -1.0241920e-02
+-7.2126247e+00 6.3800925e-04 -8.4076467e-04
+-8.5402393e-01 7.9871068e-05 -5.0066938e-05
+-7.3804714e-02 7.8656137e-06 0.0000000e+00
+0 0 0
+0 0 0
+-7.5974247e-03 0.0000000e+00 -2.7549987e-05
+-7.7469298e-02 0.0000000e+00 -3.9874079e-04
+-5.5545374e-01 0.0000000e+00 -4.1693121e-03
+-3.0189997e+00 0.0000000e+00 -3.5403319e-02
+-1.1178777e+01 0.0000000e+00 -2.2345143e-01
+-2.4402896e+01 0.0000000e+00 -7.0879378e-01
+-3.8547677e+01 0.0000000e+00 -1.4094227e+00
+-4.9762258e+01 0.0000000e+00 -2.0332991e+00
+-5.6595320e+01 0.0000000e+00 -2.3158001e+00
+-5.9652902e+01 0.0000000e+00 -2.1928140e+00
+-6.0131486e+01 0.0000000e+00 -1.7851892e+00
+-5.8656740e+01 0.0000000e+00 -1.2750441e+00
+-5.4879926e+01 0.0000000e+00 -8.0082600e-01
+-4.7810768e+01 0.0000000e+00 -4.2945230e-01
+-3.6886674e+01 0.0000000e+00 -1.8125197e-01
+-2.3369344e+01 0.0000000e+00 -5.1531588e-02
+-1.0752050e+01 0.0000000e+00 -8.0388983e-03
+-2.9150310e+00 0.0000000e+00 -9.6807201e-04
+-5.3769790e-01 0.0000000e+00 -9.5648391e-05
+-7.5106683e-02 0.0000000e+00 -6.7549854e-06
+-7.3714883e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.5703006e-03 4.2430138e-06 -3.1367083e-05
+-7.7172856e-02 1.1910037e-04 -4.4690909e-04
+-5.5314460e-01 1.8608913e-03 -4.6169403e-03
+-3.0052849e+00 2.0571816e-02 -3.8903521e-02
+-1.1123666e+01 1.5036157e-01 -2.4437638e-01
+-2.4281209e+01 4.0691835e-01 -7.7298140e-01
+-3.8385044e+01 5.9610628e-01 -1.5317203e+00
+-4.9625421e+01 5.2654004e-01 -2.1950974e+00
+-5.6540128e+01 2.1635098e-01 -2.4666402e+00
+-5.9689058e+01 -1.5429030e-01 -2.2761939e+00
+-6.0227686e+01 -4.0924305e-01 -1.7707506e+00
+-5.8768886e+01 -4.8212616e-01 -1.1764778e+00
+-5.4975745e+01 -4.1284559e-01 -6.6781274e-01
+-4.7877682e+01 -2.8340138e-01 -3.1749747e-01
+-3.6926059e+01 -1.5907185e-01 -1.1904052e-01
+-2.3387932e+01 -6.9509023e-02 -3.0943169e-02
+-1.0757795e+01 -2.0380133e-02 -4.8173958e-03
+-2.9156311e+00 -3.6081152e-03 -6.0924306e-04
+-5.3761978e-01 -6.2228971e-04 -6.5071771e-05
+-7.5069343e-02 -9.7397707e-05 -5.0141239e-06
+-7.3655529e-03 -1.0949557e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5560449e-02 -1.4534393e-05 -2.1817717e-04
+-8.7456191e-01 6.9377306e-04 -3.7502406e-03
+-7.3928447e+00 1.8538238e-02 -4.7874999e-02
+-4.8267680e+01 2.8570861e-01 -5.1313763e-01
+-2.1129455e+02 2.9815931e+00 -4.3359247e+00
+-4.7274692e+02 8.4543534e+00 -1.4729269e+01
+-7.4791357e+02 1.2336434e+01 -2.9654310e+01
+-9.6411665e+02 1.0685573e+01 -4.2488547e+01
+-1.0956852e+03 4.1490467e+00 -4.7486570e+01
+-1.1552134e+03 -3.4290366e+00 -4.3498326e+01
+-1.1654194e+03 -8.4928603e+00 -3.3553923e+01
+-1.1380057e+03 -9.8113868e+00 -2.2081980e+01
+-1.0664094e+03 -8.2912318e+00 -1.2399471e+01
+-9.3140569e+02 -5.6319703e+00 -5.8145526e+00
+-7.2070548e+02 -3.1378388e+00 -2.1249860e+00
+-4.5638019e+02 -1.3586214e+00 -5.1246228e-01
+-2.0501519e+02 -3.7964181e-01 -6.4363528e-02
+-4.6995794e+01 -5.9142591e-02 -7.0761025e-03
+-7.2100049e+00 -9.6410539e-03 -6.7717917e-04
+-8.5338614e-01 -1.3645489e-03 -4.7820034e-05
+-7.3725246e-02 -1.3823785e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.2699384e-01 -7.5790672e-04 -6.1874776e-04
+-7.1907733e+00 -3.1308941e-03 -1.6961625e-02
+-7.5641977e+01 8.3798712e-02 -3.1761358e-01
+-6.3964832e+02 2.6101933e+00 -4.9267590e+00
+-3.6624546e+03 5.1288236e+01 -6.9110408e+01
+-8.3385786e+03 1.5244795e+02 -2.5396807e+02
+-1.3158025e+04 2.2034886e+02 -5.1824100e+02
+-1.6894646e+04 1.8615409e+02 -7.4074419e+02
+-1.9147407e+04 6.7161158e+01 -8.2211416e+02
+-2.0163029e+04 -6.6094938e+01 -7.4662073e+02
+-2.0339150e+04 -1.5216406e+02 -5.7044443e+02
+-1.9874733e+04 -1.7191771e+02 -3.7144466e+02
+-1.8656431e+04 -1.4305858e+02 -2.0611640e+02
+-1.6345656e+04 -9.5945077e+01 -9.5298504e+01
+-1.2702557e+04 -5.2997537e+01 -3.3955568e+01
+-8.0693389e+03 -2.2774856e+01 -7.5182471e+00
+-3.5671676e+03 -6.0163342e+00 -7.0141096e-01
+-6.2545031e+02 -8.1656377e-01 -6.8258828e-02
+-7.4062707e+01 -1.2173237e-01 -5.9307629e-03
+-7.0412296e+00 -1.4608975e-02 -3.8703475e-04
+-5.1578853e-01 -1.2717801e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7727779e+00 -9.7697569e-03 3.4911204e-03
+-4.5377149e+01 -1.1182666e-01 1.4093503e-02
+-6.1677282e+02 -5.9855849e-01 -7.7870646e-01
+-7.3150181e+03 1.0408755e+01 -2.8982162e+01
+-6.5000152e+04 8.8240997e+02 -1.1125196e+03
+-1.4722578e+05 2.7235877e+03 -4.3959612e+03
+-2.3082980e+05 3.8753736e+03 -9.0402899e+03
+-2.9509669e+05 3.1851821e+03 -1.2859226e+04
+-3.3363069e+05 1.0556273e+03 -1.4158269e+04
+-3.5103149e+05 -1.2488082e+03 -1.2742200e+04
+-3.5412256e+05 -2.6857546e+03 -9.6398395e+03
+-3.4623079e+05 -2.9674119e+03 -6.2087526e+03
+-3.2544586e+05 -2.4296281e+03 -3.4041042e+03
+-2.8593359e+05 -1.6061979e+03 -1.5533499e+03
+-2.2323461e+05 -8.7826978e+02 -5.4207478e+02
+-1.4279685e+05 -3.7570803e+02 -1.1052275e+02
+-6.3565899e+04 -9.3335765e+01 -7.6037518e+00
+-7.1871573e+03 -1.1841367e+01 -7.1153170e-01
+-6.0631173e+02 -1.4559554e+00 -5.5034770e-02
+-4.4577753e+01 -1.3568405e-01 -3.1975794e-03
+-2.7211236e+00 -9.6629012e-03 0.0000000e+00
+0 0 0
+0 0 0
+-9.8931135e+00 -7.3106140e-02 4.9638420e-02
+-1.9050034e+02 -1.3081813e+00 9.6204032e-01
+-3.3548580e+03 -2.1098540e+01 1.6229694e+01
+-6.0552476e+04 -3.4499526e+02 2.7680528e+02
+-9.2015058e+05 -9.8194903e+02 -4.2185179e+03
+-2.3085008e+06 -4.2748008e+02 -2.0605391e+04
+-3.7205894e+06 -5.0069398e+02 -4.3754402e+04
+-4.6801298e+06 -2.2356867e+03 -6.1851421e+04
+-5.1113286e+06 -5.2223193e+03 -6.6308221e+04
+-5.2001087e+06 -8.1176439e+03 -5.6883886e+04
+-5.1562101e+06 -9.7437252e+03 -3.9735095e+04
+-5.0745958e+06 -9.7234395e+03 -2.2324555e+04
+-4.8970108e+06 -8.4170099e+03 -9.4867852e+03
+-4.4395646e+06 -6.4922241e+03 -2.3720052e+03
+-3.5204715e+06 -4.5219337e+03 3.3080754e+02
+-2.1916591e+06 -2.8157288e+03 5.5115117e+02
+-8.8410610e+05 -1.4824902e+03 -1.8368576e+02
+-5.9841670e+04 -2.7503339e+02 -9.6058484e+00
+-3.3094077e+03 -1.6658344e+01 -4.9427113e-01
+-1.8757450e+02 -1.0154414e+00 -2.1966671e-02
+-9.7247304e+00 -5.5607201e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.0847093e+01 -2.3118680e-01 1.4128449e-01
+-4.0950756e+02 -4.4611892e+00 2.9015902e+00
+-7.2906962e+03 -7.8007410e+01 5.1814142e+01
+-1.2981875e+05 -1.3692039e+03 9.2007357e+02
+-2.0323153e+06 -6.7743910e+03 -4.3577475e+03
+-4.8119055e+06 -1.0539477e+04 -2.9177593e+04
+-7.6361215e+06 -1.4887156e+04 -6.4799865e+04
+-9.6126717e+06 -2.0252725e+04 -9.1141748e+04
+-1.0585004e+07 -2.5923334e+04 -9.4279066e+04
+-1.0870814e+07 -3.0344209e+04 -7.4974700e+04
+-1.0833735e+07 -3.2170155e+04 -4.4750349e+04
+-1.0639255e+07 -3.0978845e+04 -1.6730238e+04
+-1.0188360e+07 -2.7265505e+04 1.2062044e+03
+-9.1647914e+06 -2.2006746e+04 8.0734765e+03
+-7.2596037e+06 -1.6205227e+04 7.3525955e+03
+-4.5873894e+06 -1.0640669e+04 3.4290137e+03
+-1.9582520e+06 -5.8530152e+03 -4.8197684e+02
+-1.2813955e+05 -1.0424449e+03 -2.4404832e+01
+-7.1857205e+03 -5.8432906e+01 -1.2006060e+00
+-4.0295872e+02 -3.2835874e+00 -5.0787333e-02
+-2.0481542e+01 -1.6721099e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2210392e+01 -4.3229279e-01 1.9911159e-01
+-6.3224650e+02 -8.4908513e+00 4.0717152e+00
+-1.1209560e+04 -1.5072224e+02 7.2004537e+01
+-1.9808338e+05 -2.6699344e+03 1.2588413e+03
+-3.1256437e+06 -1.4123273e+04 -4.6427909e+03
+-7.3012286e+06 -2.3475467e+04 -3.8017605e+04
+-1.1516492e+07 -3.3319227e+04 -8.6195232e+04
+-1.4454025e+07 -4.3224621e+04 -1.2043356e+05
+-1.5898430e+07 -5.2059677e+04 -1.2149557e+05
+-1.6327013e+07 -5.8108356e+04 -9.1471313e+04
+-1.6274951e+07 -5.9973578e+04 -4.7556507e+04
+-1.5983899e+07 -5.7271407e+04 -8.6887239e+03
+-1.5309161e+07 -5.0653067e+04 1.4195885e+04
+-1.3785623e+07 -4.1389760e+04 2.0361830e+04
+-1.0950674e+07 -3.0916483e+04 1.5615393e+04
+-6.9598825e+06 -2.0546403e+04 6.9780283e+03
+-3.0094687e+06 -1.1386724e+04 -5.0688544e+02
+-1.9531009e+05 -2.0190048e+03 -2.4939929e+01
+-1.1036379e+04 -1.1188597e+02 -1.1630944e+00
+-6.2148670e+02 -6.1807055e+00 -4.5430151e-02
+-3.1613160e+01 -3.0879257e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1243637e+01 -5.4454252e-01 1.4685586e-01
+-8.0733964e+02 -1.0727453e+01 2.8973221e+00
+-1.4263132e+04 -1.9061995e+02 4.9078601e+01
+-2.5113204e+05 -3.3719899e+03 8.2021467e+02
+-3.8773310e+06 -1.8136195e+04 -6.4688219e+03
+-9.1265122e+06 -3.0669883e+04 -4.8962300e+04
+-1.4378617e+07 -4.3529327e+04 -1.1003632e+05
+-1.7962538e+07 -5.5670377e+04 -1.5272535e+05
+-1.9648690e+07 -6.5780181e+04 -1.5282361e+05
+-2.0087330e+07 -7.2257427e+04 -1.1353834e+05
+-1.9982017e+07 -7.3878106e+04 -5.7071574e+04
+-1.9646092e+07 -7.0360798e+04 -7.5404379e+03
+-1.8889359e+07 -6.2389860e+04 2.1246937e+04
+-1.7098442e+07 -5.1271013e+04 2.8478394e+04
+-1.3644014e+07 -3.8550521e+04 2.1691153e+04
+-8.6809483e+06 -2.5763378e+04 1.0001590e+04
+-3.7241801e+06 -1.4326111e+04 -1.1588883e+01
+-2.4741908e+05 -2.5438643e+03 2.9019797e+00
+-1.4030408e+04 -1.4107776e+02 3.8973298e-01
+-7.9283985e+02 -7.7795448e+00 2.9907140e-02
+-4.0437477e+01 -3.8725824e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7042101e+01 -4.6000596e-01 -2.1069097e-03
+-9.1914988e+02 -9.0554603e+00 -2.5661399e-01
+-1.6207716e+04 -1.6061441e+02 -8.5771680e+00
+-2.8495118e+05 -2.8332066e+03 -2.1555672e+02
+-4.2579456e+06 -1.5310094e+04 -9.5855085e+03
+-1.0185150e+07 -2.6041484e+04 -6.0819989e+04
+-1.6065487e+07 -3.6925374e+04 -1.3381000e+05
+-1.9977566e+07 -4.6925127e+04 -1.8474112e+05
+-2.1709522e+07 -5.4990434e+04 -1.8526829e+05
+-2.2065896e+07 -5.9984981e+04 -1.3930554e+05
+-2.1889582e+07 -6.1079825e+04 -7.2826971e+04
+-2.1551149e+07 -5.8114470e+04 -1.3956637e+04
+-2.0822402e+07 -5.1610608e+04 2.1099371e+04
+-1.8965856e+07 -4.2545877e+04 3.1129102e+04
+-1.5203292e+07 -3.2107281e+04 2.4613305e+04
+-9.6612114e+06 -2.1526001e+04 1.1973339e+04
+-4.0779473e+06 -1.1994123e+04 8.3444826e+02
+-2.8059021e+05 -2.1344097e+03 5.0501019e+01
+-1.5933225e+04 -1.1867675e+02 3.0307685e+00
+-9.0197997e+02 -6.5544800e+00 1.5667392e-01
+-4.6084409e+01 -3.2642430e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0035571e+01 -1.8018003e-01 -1.5739341e-01
+-9.7690569e+02 -3.5436445e+00 -3.4886490e+00
+-1.7215696e+04 -6.2762919e+01 -6.6528063e+01
+-3.0260595e+05 -1.1051424e+03 -1.2371354e+03
+-4.4013235e+06 -5.9789089e+03 -1.2505516e+04
+-1.0682347e+07 -1.0188898e+04 -7.0186571e+04
+-1.6876787e+07 -1.4437382e+04 -1.5175079e+05
+-2.0917442e+07 -1.8297748e+04 -2.0882629e+05
+-2.2616099e+07 -2.1370176e+04 -2.1030534e+05
+-2.2882141e+07 -2.3244846e+04 -1.6044850e+05
+-2.2648797e+07 -2.3630022e+04 -8.7534275e+04
+-2.2322839e+07 -2.2475102e+04 -2.2199166e+04
+-2.1651352e+07 -1.9974762e+04 1.7748970e+04
+-1.9815829e+07 -1.6490437e+04 3.0658130e+04
+-1.5936829e+07 -1.2465803e+04 2.5377240e+04
+-1.0110961e+07 -8.3703186e+03 1.2961956e+04
+-4.2056886e+06 -4.6685723e+03 1.6055692e+03
+-2.9789075e+05 -8.3193548e+02 9.4152099e+01
+-1.6918012e+04 -4.6336137e+01 5.4648433e+00
+-9.5822943e+02 -2.5625376e+00 2.7383258e-01
+-4.8991186e+01 -1.2772449e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0933127e+01 1.8018003e-01 -2.2244791e-01
+-9.9427798e+02 3.5436446e+00 -4.8330743e+00
+-1.7520550e+04 6.2762921e+01 -9.0440910e+01
+-3.0798799e+05 1.1051425e+03 -1.6553586e+03
+-4.4339279e+06 5.9789086e+03 -1.3688020e+04
+-1.0823302e+07 1.0188897e+04 -7.3751179e+04
+-1.7111281e+07 1.4437383e+04 -1.5844642e+05
+-2.1182987e+07 1.8297750e+04 -2.1780213e+05
+-2.2860303e+07 2.1370175e+04 -2.1973911e+05
+-2.3089473e+07 2.3244846e+04 -1.6861673e+05
+-2.2834797e+07 2.3630018e+04 -9.3484826e+04
+-2.2515342e+07 2.2475099e+04 -2.5833918e+04
+-2.1869689e+07 1.9974763e+04 1.5964809e+04
+-2.0051379e+07 1.6490439e+04 3.0073265e+04
+-1.6145374e+07 1.2465803e+04 2.5421983e+04
+-1.0236155e+07 8.3703187e+03 1.3245731e+04
+-4.2332291e+06 4.6685724e+03 1.9127676e+03
+-3.0316323e+05 8.3193548e+02 1.1160970e+02
+-1.7215620e+04 4.6336137e+01 6.4417611e+00
+-9.7512633e+02 2.5625376e+00 3.2097683e-01
+-4.9861144e+01 1.2772449e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0035571e+01 4.6000595e-01 -1.5739341e-01
+-9.7690569e+02 9.0554601e+00 -3.4886488e+00
+-1.7215696e+04 1.6061440e+02 -6.6528063e+01
+-3.0260595e+05 2.8332065e+03 -1.2371356e+03
+-4.4013235e+06 1.5310095e+04 -1.2505516e+04
+-1.0682347e+07 2.6041485e+04 -7.0186571e+04
+-1.6876787e+07 3.6925375e+04 -1.5175079e+05
+-2.0917442e+07 4.6925126e+04 -2.0882629e+05
+-2.2616099e+07 5.4990435e+04 -2.1030534e+05
+-2.2882141e+07 5.9984981e+04 -1.6044851e+05
+-2.2648797e+07 6.1079830e+04 -8.7534279e+04
+-2.2322839e+07 5.8114473e+04 -2.2199163e+04
+-2.1651352e+07 5.1610606e+04 1.7748972e+04
+-1.9815829e+07 4.2545877e+04 3.0658129e+04
+-1.5936829e+07 3.2107282e+04 2.5377240e+04
+-1.0110961e+07 2.1526001e+04 1.2961956e+04
+-4.2056886e+06 1.1994123e+04 1.6055692e+03
+-2.9789075e+05 2.1344097e+03 9.4152098e+01
+-1.6918012e+04 1.1867675e+02 5.4648432e+00
+-9.5822943e+02 6.5544800e+00 2.7383258e-01
+-4.8991186e+01 3.2642430e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7042101e+01 5.4454251e-01 -2.1069162e-03
+-9.1914988e+02 1.0727453e+01 -2.5661417e-01
+-1.6207716e+04 1.9061995e+02 -8.5771635e+00
+-2.8495118e+05 3.3719899e+03 -2.1555652e+02
+-4.2579456e+06 1.8136195e+04 -9.5855084e+03
+-1.0185150e+07 3.0669882e+04 -6.0819989e+04
+-1.6065487e+07 4.3529325e+04 -1.3381001e+05
+-1.9977566e+07 5.5670376e+04 -1.8474112e+05
+-2.1709522e+07 6.5780180e+04 -1.8526829e+05
+-2.2065896e+07 7.2257427e+04 -1.3930554e+05
+-2.1889582e+07 7.3878112e+04 -7.2826969e+04
+-2.1551149e+07 7.0360801e+04 -1.3956637e+04
+-2.0822402e+07 6.2389859e+04 2.1099370e+04
+-1.8965856e+07 5.1271011e+04 3.1129102e+04
+-1.5203292e+07 3.8550520e+04 2.4613306e+04
+-9.6612114e+06 2.5763378e+04 1.1973340e+04
+-4.0779473e+06 1.4326111e+04 8.3444833e+02
+-2.8059021e+05 2.5438643e+03 5.0501016e+01
+-1.5933225e+04 1.4107776e+02 3.0307682e+00
+-9.0197997e+02 7.7795448e+00 1.5667392e-01
+-4.6084409e+01 3.8725824e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1243637e+01 4.3229279e-01 1.4685586e-01
+-8.0733964e+02 8.4908514e+00 2.8973220e+00
+-1.4263132e+04 1.5072224e+02 4.9078600e+01
+-2.5113204e+05 2.6699344e+03 8.2021469e+02
+-3.8773310e+06 1.4123273e+04 -6.4688216e+03
+-9.1265122e+06 2.3475467e+04 -4.8962301e+04
+-1.4378617e+07 3.3319228e+04 -1.1003632e+05
+-1.7962538e+07 4.3224622e+04 -1.5272535e+05
+-1.9648690e+07 5.2059679e+04 -1.5282361e+05
+-2.0087330e+07 5.8108354e+04 -1.1353834e+05
+-1.9982017e+07 5.9973574e+04 -5.7071578e+04
+-1.9646092e+07 5.7271407e+04 -7.5404423e+03
+-1.8889359e+07 5.0653068e+04 2.1246937e+04
+-1.7098442e+07 4.1389761e+04 2.8478394e+04
+-1.3644014e+07 3.0916482e+04 2.1691153e+04
+-8.6809483e+06 2.0546403e+04 1.0001589e+04
+-3.7241801e+06 1.1386724e+04 -1.1588872e+01
+-2.4741908e+05 2.0190047e+03 2.9019808e+00
+-1.4030408e+04 1.1188597e+02 3.8973299e-01
+-7.9283986e+02 6.1807056e+00 2.9907173e-02
+-4.0437477e+01 3.0879256e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2210392e+01 2.3118680e-01 1.9911159e-01
+-6.3224650e+02 4.4611892e+00 4.0717150e+00
+-1.1209560e+04 7.8007409e+01 7.2004535e+01
+-1.9808338e+05 1.3692039e+03 1.2588414e+03
+-3.1256437e+06 6.7743910e+03 -4.6427911e+03
+-7.3012286e+06 1.0539477e+04 -3.8017605e+04
+-1.1516492e+07 1.4887156e+04 -8.6195233e+04
+-1.4454025e+07 2.0252724e+04 -1.2043356e+05
+-1.5898430e+07 2.5923334e+04 -1.2149557e+05
+-1.6327013e+07 3.0344213e+04 -9.1471313e+04
+-1.6274951e+07 3.2170157e+04 -4.7556508e+04
+-1.5983899e+07 3.0978846e+04 -8.6887225e+03
+-1.5309161e+07 2.7265506e+04 1.4195885e+04
+-1.3785623e+07 2.2006746e+04 2.0361828e+04
+-1.0950674e+07 1.6205228e+04 1.5615392e+04
+-6.9598825e+06 1.0640670e+04 6.9780286e+03
+-3.0094687e+06 5.8530153e+03 -5.0688544e+02
+-1.9531009e+05 1.0424449e+03 -2.4939929e+01
+-1.1036379e+04 5.8432905e+01 -1.1630941e+00
+-6.2148670e+02 3.2835873e+00 -4.5430163e-02
+-3.1613160e+01 1.6721099e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0847093e+01 7.3106139e-02 1.4128450e-01
+-4.0950756e+02 1.3081813e+00 2.9015901e+00
+-7.2906962e+03 2.1098540e+01 5.1814140e+01
+-1.2981875e+05 3.4499527e+02 9.2007359e+02
+-2.0323153e+06 9.8194907e+02 -4.3577472e+03
+-4.8119055e+06 4.2748008e+02 -2.9177593e+04
+-7.6361215e+06 5.0069453e+02 -6.4799865e+04
+-9.6126717e+06 2.2356858e+03 -9.1141748e+04
+-1.0585004e+07 5.2223209e+03 -9.4279064e+04
+-1.0870814e+07 8.1176434e+03 -7.4974700e+04
+-1.0833735e+07 9.7437251e+03 -4.4750351e+04
+-1.0639255e+07 9.7234394e+03 -1.6730238e+04
+-1.0188360e+07 8.4170098e+03 1.2062044e+03
+-9.1647914e+06 6.4922236e+03 8.0734762e+03
+-7.2596037e+06 4.5219336e+03 7.3525957e+03
+-4.5873894e+06 2.8157287e+03 3.4290137e+03
+-1.9582520e+06 1.4824902e+03 -4.8197687e+02
+-1.2813955e+05 2.7503340e+02 -2.4404834e+01
+-7.1857205e+03 1.6658344e+01 -1.2006060e+00
+-4.0295872e+02 1.0154415e+00 -5.0787331e-02
+-2.0481542e+01 5.5607201e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.8931135e+00 9.7697571e-03 4.9638418e-02
+-1.9050034e+02 1.1182666e-01 9.6204030e-01
+-3.3548580e+03 5.9855858e-01 1.6229695e+01
+-6.0552476e+04 -1.0408755e+01 2.7680528e+02
+-9.2015058e+05 -8.8241000e+02 -4.2185179e+03
+-2.3085008e+06 -2.7235877e+03 -2.0605391e+04
+-3.7205894e+06 -3.8753737e+03 -4.3754402e+04
+-4.6801298e+06 -3.1851819e+03 -6.1851421e+04
+-5.1113286e+06 -1.0556273e+03 -6.6308221e+04
+-5.2001087e+06 1.2488082e+03 -5.6883886e+04
+-5.1562101e+06 2.6857548e+03 -3.9735095e+04
+-5.0745958e+06 2.9674121e+03 -2.2324555e+04
+-4.8970108e+06 2.4296282e+03 -9.4867854e+03
+-4.4395646e+06 1.6061979e+03 -2.3720051e+03
+-3.5204715e+06 8.7826973e+02 3.3080753e+02
+-2.1916591e+06 3.7570803e+02 5.5115115e+02
+-8.8410610e+05 9.3335742e+01 -1.8368576e+02
+-5.9841670e+04 1.1841368e+01 -9.6058481e+00
+-3.3094077e+03 1.4559554e+00 -4.9427112e-01
+-1.8757450e+02 1.3568404e-01 -2.1966674e-02
+-9.7247304e+00 9.6629013e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7727779e+00 7.5790669e-04 3.4911196e-03
+-4.5377149e+01 3.1308947e-03 1.4093506e-02
+-6.1677282e+02 -8.3798694e-02 -7.7870638e-01
+-7.3150181e+03 -2.6101932e+00 -2.8982163e+01
+-6.5000152e+04 -5.1288235e+01 -1.1125196e+03
+-1.4722578e+05 -1.5244795e+02 -4.3959612e+03
+-2.3082980e+05 -2.2034886e+02 -9.0402899e+03
+-2.9509669e+05 -1.8615409e+02 -1.2859226e+04
+-3.3363069e+05 -6.7161159e+01 -1.4158269e+04
+-3.5103149e+05 6.6094945e+01 -1.2742200e+04
+-3.5412256e+05 1.5216406e+02 -9.6398395e+03
+-3.4623079e+05 1.7191770e+02 -6.2087526e+03
+-3.2544586e+05 1.4305859e+02 -3.4041042e+03
+-2.8593359e+05 9.5945082e+01 -1.5533499e+03
+-2.2323461e+05 5.2997538e+01 -5.4207478e+02
+-1.4279685e+05 2.2774854e+01 -1.1052276e+02
+-6.3565899e+04 6.0163354e+00 -7.6037503e+00
+-7.1871573e+03 8.1656377e-01 -7.1153172e-01
+-6.0631173e+02 1.2173237e-01 -5.5034772e-02
+-4.4577753e+01 1.4608975e-02 -3.1975796e-03
+-2.7211236e+00 1.2717801e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.2699384e-01 1.4534402e-05 -6.1874777e-04
+-7.1907733e+00 -6.9377312e-04 -1.6961624e-02
+-7.5641977e+01 -1.8538239e-02 -3.1761358e-01
+-6.3964832e+02 -2.8570861e-01 -4.9267591e+00
+-3.6624546e+03 -2.9815931e+00 -6.9110408e+01
+-8.3385786e+03 -8.4543534e+00 -2.5396807e+02
+-1.3158025e+04 -1.2336433e+01 -5.1824099e+02
+-1.6894646e+04 -1.0685573e+01 -7.4074419e+02
+-1.9147407e+04 -4.1490470e+00 -8.2211416e+02
+-2.0163029e+04 3.4290365e+00 -7.4662073e+02
+-2.0339150e+04 8.4928604e+00 -5.7044443e+02
+-1.9874733e+04 9.8113873e+00 -3.7144466e+02
+-1.8656431e+04 8.2912313e+00 -2.0611640e+02
+-1.6345656e+04 5.6319702e+00 -9.5298506e+01
+-1.2702557e+04 3.1378391e+00 -3.3955568e+01
+-8.0693389e+03 1.3586214e+00 -7.5182468e+00
+-3.5671676e+03 3.7964183e-01 -7.0141091e-01
+-6.2545031e+02 5.9142585e-02 -6.8258830e-02
+-7.4062707e+01 9.6410533e-03 -5.9307628e-03
+-7.0412296e+00 1.3645488e-03 -3.8703483e-04
+-5.1578853e-01 1.3823785e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.5560449e-02 -4.2430137e-06 -2.1817718e-04
+-8.7456191e-01 -1.1910036e-04 -3.7502405e-03
+-7.3928447e+00 -1.8608913e-03 -4.7874999e-02
+-4.8267680e+01 -2.0571816e-02 -5.1313764e-01
+-2.1129455e+02 -1.5036157e-01 -4.3359247e+00
+-4.7274692e+02 -4.0691836e-01 -1.4729269e+01
+-7.4791357e+02 -5.9610629e-01 -2.9654310e+01
+-9.6411665e+02 -5.2654004e-01 -4.2488547e+01
+-1.0956852e+03 -2.1635097e-01 -4.7486569e+01
+-1.1552134e+03 1.5429028e-01 -4.3498326e+01
+-1.1654194e+03 4.0924301e-01 -3.3553924e+01
+-1.1380057e+03 4.8212615e-01 -2.2081980e+01
+-1.0664094e+03 4.1284558e-01 -1.2399471e+01
+-9.3140569e+02 2.8340138e-01 -5.8145526e+00
+-7.2070548e+02 1.5907184e-01 -2.1249861e+00
+-4.5638019e+02 6.9509030e-02 -5.1246226e-01
+-2.0501519e+02 2.0380136e-02 -6.4363531e-02
+-4.6995794e+01 3.6081155e-03 -7.0761029e-03
+-7.2100049e+00 6.2229013e-04 -6.7717926e-04
+-8.5338614e-01 9.7397709e-05 -4.7820030e-05
+-7.3725246e-02 1.0949557e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5703006e-03 0.0000000e+00 -3.1367084e-05
+-7.7172856e-02 0.0000000e+00 -4.4690909e-04
+-5.5314460e-01 0.0000000e+00 -4.6169403e-03
+-3.0052849e+00 0.0000000e+00 -3.8903521e-02
+-1.1123666e+01 0.0000000e+00 -2.4437638e-01
+-2.4281209e+01 0.0000000e+00 -7.7298139e-01
+-3.8385044e+01 0.0000000e+00 -1.5317203e+00
+-4.9625421e+01 0.0000000e+00 -2.1950974e+00
+-5.6540128e+01 0.0000000e+00 -2.4666402e+00
+-5.9689058e+01 0.0000000e+00 -2.2761939e+00
+-6.0227686e+01 0.0000000e+00 -1.7707506e+00
+-5.8768886e+01 0.0000000e+00 -1.1764778e+00
+-5.4975745e+01 0.0000000e+00 -6.6781274e-01
+-4.7877682e+01 0.0000000e+00 -3.1749747e-01
+-3.6926059e+01 0.0000000e+00 -1.1904052e-01
+-2.3387932e+01 0.0000000e+00 -3.0943167e-02
+-1.0757795e+01 0.0000000e+00 -4.8173960e-03
+-2.9156311e+00 0.0000000e+00 -6.0924285e-04
+-5.3761978e-01 0.0000000e+00 -6.5071816e-05
+-7.5069343e-02 0.0000000e+00 -5.0141240e-06
+-7.3655529e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.5366977e-03 5.3645474e-07 -3.4139331e-05
+-7.6817781e-02 9.2033139e-05 -4.8124798e-04
+-5.5047147e-01 1.7773805e-03 -4.9317529e-03
+-2.9898562e+00 2.0988346e-02 -4.1348762e-02
+-1.1062922e+01 1.5684927e-01 -2.5894159e-01
+-2.4148144e+01 4.2585547e-01 -8.1786208e-01
+-3.8207266e+01 6.2257610e-01 -1.6182165e+00
+-4.9475143e+01 5.4277260e-01 -2.3112664e+00
+-5.6478659e+01 2.0392540e-01 -2.5766613e+00
+-5.9727862e+01 -2.0012398e-01 -2.3377331e+00
+-6.0332196e+01 -4.7404414e-01 -1.7591793e+00
+-5.8888478e+01 -5.3935293e-01 -1.1002342e+00
+-5.5072268e+01 -4.3960595e-01 -5.6410609e-01
+-4.7937116e+01 -2.7510833e-01 -2.2956363e-01
+-3.6953742e+01 -1.3194714e-01 -6.9934266e-02
+-2.3396701e+01 -4.6494953e-02 -1.4670048e-02
+-1.0758705e+01 -1.1476533e-02 -2.2834331e-03
+-2.9148945e+00 -2.6888831e-03 -3.3113765e-04
+-5.3728781e-01 -6.2076407e-04 -4.2344601e-05
+-7.4995032e-02 -1.1281263e-04 -3.8430761e-06
+-7.3558339e-03 -1.3562094e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5259504e-02 -6.2181813e-05 -2.3822665e-04
+-8.7095469e-01 2.8363062e-04 -4.0370445e-03
+-7.3607235e+00 1.6673404e-02 -5.1054289e-02
+-4.8041777e+01 2.8839927e-01 -5.4436829e-01
+-2.1020535e+02 3.1089443e+00 -4.5856651e+00
+-4.7019438e+02 8.8439374e+00 -1.5556287e+01
+-7.4445124e+02 1.2882381e+01 -3.1278414e+01
+-9.6119777e+02 1.1022377e+01 -4.4676896e+01
+-1.0945138e+03 3.9067711e+00 -4.9551132e+01
+-1.1559916e+03 -4.3428962e+00 -4.4630191e+01
+-1.1674532e+03 -9.7877909e+00 -3.3282642e+01
+-1.1403048e+03 -1.0953615e+01 -2.0569254e+01
+-1.0682397e+03 -8.8148669e+00 -1.0363759e+01
+-9.3250843e+02 -5.4363170e+00 -4.0998036e+00
+-7.2119895e+02 -2.5518565e+00 -1.1864215e+00
+-4.5652282e+02 -8.6579638e-01 -2.2449580e-01
+-2.0502079e+02 -1.9759257e-01 -3.2785140e-02
+-4.6978566e+01 -4.8015344e-02 -4.6869444e-03
+-7.2043958e+00 -1.0345069e-02 -5.7170094e-04
+-8.5237736e-01 -1.6443328e-03 -4.8956565e-05
+-7.3612116e-02 -1.7564860e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.2518219e-01 -1.2018889e-03 -6.7194550e-04
+-7.1652768e+00 -7.7985480e-03 -1.8086250e-02
+-7.5359738e+01 5.2828283e-02 -3.3647979e-01
+-6.3704074e+02 2.5520697e+00 -5.2077319e+00
+-3.6450642e+03 5.3446268e+01 -7.2935421e+01
+-8.2943392e+03 1.5935371e+02 -2.6768455e+02
+-1.3097191e+04 2.2999900e+02 -5.4563531e+02
+-1.6843644e+04 1.9209690e+02 -7.7771233e+02
+-1.9127452e+04 6.3046268e+01 -8.5680760e+02
+-2.0177187e+04 -8.1800830e+01 -7.6519176e+02
+-2.0374848e+04 -1.7444891e+02 -5.6483324e+02
+-1.9914537e+04 -1.9156918e+02 -3.4441313e+02
+-1.8687645e+04 -1.5191726e+02 -1.7009696e+02
+-1.6364012e+04 -9.2079691e+01 -6.5097155e+01
+-1.2710396e+04 -4.2098886e+01 -1.7711838e+01
+-8.0713535e+03 -1.3625842e+01 -2.9372516e+00
+-3.5670764e+03 -2.7810312e+00 -4.4499341e-01
+-6.2511262e+02 -7.6779117e-01 -6.2909304e-02
+-7.3987021e+01 -1.4194199e-01 -6.9980018e-03
+-7.0309244e+00 -1.8405627e-02 -5.4191066e-04
+-5.1484016e-01 -1.6659254e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7647979e+00 -1.3182618e-02 4.0007266e-03
+-4.5244071e+01 -1.5703788e-01 2.0162448e-02
+-6.1490235e+02 -1.0356508e+00 -7.6183240e-01
+-7.2909165e+03 7.8437823e+00 -3.0155099e+01
+-6.4724078e+04 9.1882465e+02 -1.1716069e+03
+-1.4645810e+05 2.8439126e+03 -4.6238484e+03
+-2.2976502e+05 4.0419590e+03 -9.5005890e+03
+-2.9421196e+05 3.2867057e+03 -1.3479927e+04
+-3.3329573e+05 9.8528761e+02 -1.4737127e+04
+-3.5129030e+05 -1.5160153e+03 -1.3044105e+04
+-3.5474858e+05 -3.0648903e+03 -9.5276413e+03
+-3.4691897e+05 -3.3020707e+03 -5.7289624e+03
+-3.2597774e+05 -2.5790908e+03 -2.7699084e+03
+-2.8623914e+05 -1.5339677e+03 -1.0224683e+03
+-2.2335908e+05 -6.8040077e+02 -2.5969842e+02
+-1.4282502e+05 -2.0839226e+02 -3.6765739e+01
+-6.3562131e+04 -3.5955049e+01 -7.3595868e+00
+-7.1810458e+03 -1.3312250e+01 -9.2664611e-01
+-6.0546010e+02 -1.8372448e+00 -8.2975268e-02
+-4.4494844e+01 -1.7896100e-01 -5.3290743e-03
+-2.7150439e+00 -1.3074692e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.8699548e+00 -9.2990238e-02 5.6648905e-02
+-1.9005426e+02 -1.6576622e+00 1.1111926e+00
+-3.3471586e+03 -2.6603978e+01 1.8980068e+01
+-6.0420133e+04 -4.3252606e+02 3.2700749e+02
+-9.1273874e+05 -1.4067917e+03 -4.7592134e+03
+-2.2867501e+06 -1.1345422e+03 -2.2531449e+04
+-3.6900105e+06 -1.5453381e+03 -4.7523012e+04
+-4.6535910e+06 -3.6948562e+03 -6.7080250e+04
+-5.0984903e+06 -7.1378956e+03 -7.1795299e+04
+-5.2018466e+06 -1.0426549e+04 -6.1146856e+04
+-5.1664137e+06 -1.2251810e+04 -4.1756298e+04
+-5.0854256e+06 -1.2151927e+04 -2.2076591e+04
+-4.9032479e+06 -1.0503891e+04 -7.9147065e+03
+-4.4401316e+06 -8.0931799e+03 -7.8840255e+02
+-3.5173864e+06 -5.6456112e+03 1.0917084e+03
+-2.1877927e+06 -3.5629816e+03 5.7984693e+02
+-8.8135194e+05 -1.9390481e+03 -2.7122441e+02
+-5.9739990e+04 -3.7140307e+02 -1.4813621e+01
+-3.3025583e+03 -2.2696512e+01 -8.0374809e-01
+-1.8712129e+02 -1.3980566e+00 -3.7867520e-02
+-9.6982851e+00 -7.7387473e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.0808783e+01 -2.9117012e-01 1.5986949e-01
+-4.0872291e+02 -5.5962157e+00 3.3137654e+00
+-7.2762684e+03 -9.7422925e+01 5.9704888e+01
+-1.2955672e+05 -1.7025931e+03 1.0677412e+03
+-2.0182478e+06 -8.5884355e+03 -5.8180783e+03
+-4.7710985e+06 -1.3739890e+04 -3.4019763e+04
+-7.5780179e+06 -1.9594227e+04 -7.4074486e+04
+-9.5597945e+06 -2.6450246e+04 -1.0419629e+05
+-1.0554113e+07 -3.3450656e+04 -1.0877413e+05
+-1.0863281e+07 -3.8859738e+04 -8.7873687e+04
+-1.0839000e+07 -4.1146090e+04 -5.3714479e+04
+-1.0644192e+07 -3.9770570e+04 -2.1158414e+04
+-1.0184861e+07 -3.5242955e+04 8.2031361e+01
+-9.1522667e+06 -2.8687890e+04 8.1520221e+03
+-7.2428925e+06 -2.1326490e+04 7.1216907e+03
+-4.5724913e+06 -1.4146611e+04 2.8072544e+03
+-1.9487753e+06 -7.8589759e+03 -7.4954824e+02
+-1.2780730e+05 -1.4135187e+03 -3.9685218e+01
+-7.1659729e+03 -8.0064973e+01 -2.0642928e+00
+-4.0177880e+02 -4.5492213e+00 -9.3045971e-02
+-2.0417823e+01 -2.3415303e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2176284e+01 -5.4353914e-01 2.1826137e-01
+-6.3149926e+02 -1.0636734e+01 4.5115401e+00
+-1.1195023e+04 -1.8806248e+02 8.0614576e+01
+-1.9780814e+05 -3.3183224e+03 1.4211035e+03
+-3.1078649e+06 -1.7693781e+04 -7.2524018e+03
+-7.2461474e+06 -2.9817430e+04 -4.6256075e+04
+-1.1437959e+07 -4.2623482e+04 -1.0175970e+05
+-1.4384513e+07 -5.5344749e+04 -1.4237652e+05
+-1.5861435e+07 -6.6569320e+04 -1.4625266e+05
+-1.6323479e+07 -7.4316598e+04 -1.1432942e+05
+-1.6288753e+07 -7.6950927e+04 -6.4722399e+04
+-1.5995584e+07 -7.3941407e+04 -1.8866167e+04
+-1.5306893e+07 -6.5946608e+04 9.5697519e+03
+-1.3768751e+07 -5.4407905e+04 1.8417659e+04
+-1.0926667e+07 -4.1045557e+04 1.4129627e+04
+-6.9380209e+06 -2.7521097e+04 5.6425633e+03
+-2.9954614e+06 -1.5346956e+04 -8.7675597e+02
+-1.9481306e+05 -2.7409656e+03 -4.6339520e+01
+-1.1006852e+04 -1.5355036e+02 -2.3810833e+00
+-6.1973209e+02 -8.5797826e+00 -1.0513628e-01
+-3.1519074e+01 -4.3337495e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1243369e+01 -6.8491423e-01 1.4110668e-01
+-8.0722123e+02 -1.3445649e+01 2.8316108e+00
+-1.4259142e+04 -2.3801200e+02 4.8790709e+01
+-2.5103440e+05 -4.1944051e+03 8.2723617e+02
+-3.8613301e+06 -2.2663849e+04 -1.0203603e+04
+-9.0676054e+06 -3.8714574e+04 -6.0213212e+04
+-1.4295129e+07 -5.5301232e+04 -1.3102345e+05
+-1.7895775e+07 -7.0928341e+04 -1.8220292e+05
+-1.9627379e+07 -8.3937024e+04 -1.8614627e+05
+-2.0110796e+07 -9.2436996e+04 -1.4456005e+05
+-2.0027775e+07 -9.4962443e+04 -8.0789973e+04
+-1.9687619e+07 -9.1083754e+04 -2.2120684e+04
+-1.8910070e+07 -8.1483953e+04 1.4127064e+04
+-1.7096325e+07 -6.7627968e+04 2.5230540e+04
+-1.3627922e+07 -5.1355893e+04 1.9448443e+04
+-8.6626892e+06 -3.4611521e+04 8.2797501e+03
+-3.7116189e+06 -1.9346848e+04 -2.8151287e+02
+-2.4696966e+05 -3.4587025e+03 -1.3196027e+01
+-1.4002681e+04 -1.9392273e+02 -5.5123809e-01
+-7.9113606e+02 -1.0817629e+01 -1.7185586e-02
+-4.0343565e+01 -5.4447251e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7094818e+01 -5.7903934e-01 -5.3158463e-02
+-9.2004555e+02 -1.1360023e+01 -1.2431155e+00
+-1.6221239e+04 -2.0074327e+02 -2.4989196e+01
+-2.8515581e+05 -3.5279623e+03 -4.8680247e+02
+-4.2477311e+06 -1.9127693e+04 -1.4237491e+04
+-1.0131025e+07 -3.2819159e+04 -7.4258398e+04
+-1.5989635e+07 -4.6822941e+04 -1.5858810e+05
+-1.9928019e+07 -5.9715523e+04 -2.1934736e+05
+-2.1718396e+07 -7.0161669e+04 -2.2424782e+05
+-2.2130286e+07 -7.6801984e+04 -1.7549256e+05
+-2.1981000e+07 -7.8628497e+04 -1.0040805e+05
+-2.1636466e+07 -7.5370880e+04 -3.0804496e+04
+-2.0880168e+07 -6.7545274e+04 1.3022415e+04
+-1.8991839e+07 -5.6240836e+04 2.7618238e+04
+-1.5206456e+07 -4.2864425e+04 2.2290297e+04
+-9.6548139e+06 -2.8976233e+04 1.0257519e+04
+-4.0716385e+06 -1.6224355e+04 8.2623556e+02
+-2.8036547e+05 -2.9064712e+03 4.9257493e+01
+-1.5917425e+04 -1.6338401e+02 2.9189065e+00
+-9.0089974e+02 -9.1284265e+00 1.4947697e-01
+-4.6019737e+01 -4.5966697e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0135798e+01 -2.2692780e-01 -2.5188425e-01
+-9.7871609e+02 -4.4481232e+00 -5.3533903e+00
+-1.7245092e+04 -7.8494547e+01 -9.8206107e+01
+-3.0308533e+05 -1.3770944e+03 -1.7696896e+03
+-4.3969979e+06 -7.4713701e+03 -1.7751615e+04
+-1.0635181e+07 -1.2837000e+04 -8.4899900e+04
+-1.6811558e+07 -1.8300148e+04 -1.7865095e+05
+-2.0886311e+07 -2.3282231e+04 -2.4621503e+05
+-2.2652966e+07 -2.7273553e+04 -2.5223611e+05
+-2.2982231e+07 -2.9780774e+04 -1.9916775e+05
+-2.2779353e+07 -3.0446402e+04 -1.1679326e+05
+-2.2446060e+07 -2.9179438e+04 -3.9762938e+04
+-2.1742166e+07 -2.6171621e+04 9.6770926e+03
+-1.9868015e+07 -2.1824155e+04 2.7446473e+04
+-1.5958900e+07 -1.6661878e+04 2.3315745e+04
+-1.0116774e+07 -1.1279946e+04 1.1432251e+04
+-4.2060224e+06 -6.3215293e+03 1.8632809e+03
+-2.9790824e+05 -1.1339717e+03 1.0827228e+02
+-1.6915496e+04 -6.3853379e+01 6.2257879e+00
+-9.5786907e+02 -3.5722741e+00 3.0927217e-01
+-4.8961549e+01 -1.8003175e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1052248e+01 2.2692780e-01 -3.3473435e-01
+-9.9645250e+02 4.4481232e+00 -7.0564561e+00
+-1.7556267e+04 7.8494546e+01 -1.2832830e+02
+-3.0857675e+05 1.3770945e+03 -2.2937585e+03
+-4.4320248e+06 7.4713695e+03 -1.9139554e+04
+-1.0779238e+07 1.2836998e+04 -8.8878190e+04
+-1.7050743e+07 1.8300148e+04 -1.8601653e+05
+-2.1159519e+07 2.3282230e+04 -2.5604956e+05
+-2.2908347e+07 2.7273552e+04 -2.6255321e+05
+-2.3203534e+07 2.9780771e+04 -2.0805420e+05
+-2.2980580e+07 3.0446404e+04 -1.2316346e+05
+-2.2653367e+07 2.9179438e+04 -4.3497365e+04
+-2.1973548e+07 2.6171623e+04 8.0183821e+03
+-2.0114067e+07 2.1824154e+04 2.7058482e+04
+-1.6175153e+07 1.6661879e+04 2.3513288e+04
+-1.0247018e+07 1.1279945e+04 1.1816268e+04
+-4.2363367e+06 6.3215293e+03 2.2808489e+03
+-3.0328248e+05 1.1339717e+03 1.3215145e+02
+-1.7218745e+04 6.3853380e+01 7.5701006e+00
+-9.7507525e+02 3.5722740e+00 3.7447444e-01
+-4.9846733e+01 1.8003175e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0135798e+01 5.7903934e-01 -2.5188424e-01
+-9.7871609e+02 1.1360022e+01 -5.3533906e+00
+-1.7245092e+04 2.0074327e+02 -9.8206098e+01
+-3.0308533e+05 3.5279624e+03 -1.7696897e+03
+-4.3969979e+06 1.9127693e+04 -1.7751616e+04
+-1.0635181e+07 3.2819162e+04 -8.4899896e+04
+-1.6811558e+07 4.6822941e+04 -1.7865095e+05
+-2.0886311e+07 5.9715524e+04 -2.4621503e+05
+-2.2652966e+07 7.0161671e+04 -2.5223611e+05
+-2.2982231e+07 7.6801987e+04 -1.9916775e+05
+-2.2779353e+07 7.8628501e+04 -1.1679327e+05
+-2.2446060e+07 7.5370882e+04 -3.9762936e+04
+-2.1742166e+07 6.7545273e+04 9.6770903e+03
+-1.9868015e+07 5.6240839e+04 2.7446473e+04
+-1.5958900e+07 4.2864427e+04 2.3315743e+04
+-1.0116774e+07 2.8976234e+04 1.1432251e+04
+-4.2060224e+06 1.6224356e+04 1.8632811e+03
+-2.9790824e+05 2.9064712e+03 1.0827228e+02
+-1.6915496e+04 1.6338401e+02 6.2257874e+00
+-9.5786907e+02 9.1284265e+00 3.0927218e-01
+-4.8961549e+01 4.5966697e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7094818e+01 6.8491422e-01 -5.3158482e-02
+-9.2004555e+02 1.3445649e+01 -1.2431156e+00
+-1.6221239e+04 2.3801199e+02 -2.4989189e+01
+-2.8515581e+05 4.1944050e+03 -4.8680247e+02
+-4.2477311e+06 2.2663849e+04 -1.4237491e+04
+-1.0131025e+07 3.8714572e+04 -7.4258399e+04
+-1.5989635e+07 5.5301231e+04 -1.5858810e+05
+-1.9928019e+07 7.0928340e+04 -2.1934736e+05
+-2.1718396e+07 8.3937023e+04 -2.2424782e+05
+-2.2130286e+07 9.2436998e+04 -1.7549257e+05
+-2.1981000e+07 9.4962442e+04 -1.0040804e+05
+-2.1636466e+07 9.1083752e+04 -3.0804496e+04
+-2.0880168e+07 8.1483952e+04 1.3022413e+04
+-1.8991839e+07 6.7627968e+04 2.7618237e+04
+-1.5206456e+07 5.1355893e+04 2.2290298e+04
+-9.6548139e+06 3.4611521e+04 1.0257520e+04
+-4.0716385e+06 1.9346848e+04 8.2623554e+02
+-2.8036547e+05 3.4587025e+03 4.9257488e+01
+-1.5917425e+04 1.9392273e+02 2.9189064e+00
+-9.0089974e+02 1.0817629e+01 1.4947698e-01
+-4.6019737e+01 5.4447250e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1243369e+01 5.4353914e-01 1.4110668e-01
+-8.0722123e+02 1.0636734e+01 2.8316109e+00
+-1.4259142e+04 1.8806248e+02 4.8790703e+01
+-2.5103440e+05 3.3183225e+03 8.2723629e+02
+-3.8613301e+06 1.7693781e+04 -1.0203603e+04
+-9.0676054e+06 2.9817429e+04 -6.0213212e+04
+-1.4295129e+07 4.2623482e+04 -1.3102345e+05
+-1.7895775e+07 5.5344750e+04 -1.8220292e+05
+-1.9627379e+07 6.6569321e+04 -1.8614627e+05
+-2.0110796e+07 7.4316598e+04 -1.4456004e+05
+-2.0027775e+07 7.6950926e+04 -8.0789974e+04
+-1.9687619e+07 7.3941407e+04 -2.2120684e+04
+-1.8910070e+07 6.5946609e+04 1.4127064e+04
+-1.7096325e+07 5.4407905e+04 2.5230541e+04
+-1.3627922e+07 4.1045556e+04 1.9448442e+04
+-8.6626892e+06 2.7521097e+04 8.2797500e+03
+-3.7116189e+06 1.5346956e+04 -2.8151281e+02
+-2.4696966e+05 2.7409656e+03 -1.3196033e+01
+-1.4002681e+04 1.5355036e+02 -5.5123835e-01
+-7.9113606e+02 8.5797826e+00 -1.7185574e-02
+-4.0343565e+01 4.3337495e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2176284e+01 2.9117012e-01 2.1826137e-01
+-6.3149926e+02 5.5962157e+00 4.5115400e+00
+-1.1195023e+04 9.7422925e+01 8.0614579e+01
+-1.9780814e+05 1.7025931e+03 1.4211034e+03
+-3.1078649e+06 8.5884355e+03 -7.2524021e+03
+-7.2461474e+06 1.3739890e+04 -4.6256074e+04
+-1.1437959e+07 1.9594228e+04 -1.0175970e+05
+-1.4384513e+07 2.6450246e+04 -1.4237652e+05
+-1.5861435e+07 3.3450656e+04 -1.4625266e+05
+-1.6323479e+07 3.8859737e+04 -1.1432942e+05
+-1.6288753e+07 4.1146090e+04 -6.4722400e+04
+-1.5995584e+07 3.9770571e+04 -1.8866167e+04
+-1.5306893e+07 3.5242955e+04 9.5697526e+03
+-1.3768751e+07 2.8687890e+04 1.8417658e+04
+-1.0926667e+07 2.1326491e+04 1.4129627e+04
+-6.9380209e+06 1.4146611e+04 5.6425637e+03
+-2.9954614e+06 7.8589759e+03 -8.7675604e+02
+-1.9481306e+05 1.4135187e+03 -4.6339522e+01
+-1.1006852e+04 8.0064973e+01 -2.3810832e+00
+-6.1973209e+02 4.5492213e+00 -1.0513629e-01
+-3.1519074e+01 2.3415303e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0808783e+01 9.2990238e-02 1.5986949e-01
+-4.0872291e+02 1.6576622e+00 3.3137654e+00
+-7.2762684e+03 2.6603978e+01 5.9704888e+01
+-1.2955672e+05 4.3252607e+02 1.0677412e+03
+-2.0182478e+06 1.4067917e+03 -5.8180783e+03
+-4.7710985e+06 1.1345422e+03 -3.4019763e+04
+-7.5780179e+06 1.5453376e+03 -7.4074486e+04
+-9.5597945e+06 3.6948550e+03 -1.0419629e+05
+-1.0554113e+07 7.1378960e+03 -1.0877413e+05
+-1.0863281e+07 1.0426549e+04 -8.7873687e+04
+-1.0839000e+07 1.2251811e+04 -5.3714479e+04
+-1.0644192e+07 1.2151927e+04 -2.1158414e+04
+-1.0184861e+07 1.0503891e+04 8.2031772e+01
+-9.1522667e+06 8.0931798e+03 8.1520218e+03
+-7.2428925e+06 5.6456113e+03 7.1216913e+03
+-4.5724913e+06 3.5629814e+03 2.8072540e+03
+-1.9487753e+06 1.9390480e+03 -7.4954830e+02
+-1.2780730e+05 3.7140307e+02 -3.9685217e+01
+-7.1659729e+03 2.2696512e+01 -2.0642926e+00
+-4.0177880e+02 1.3980566e+00 -9.3045975e-02
+-2.0417823e+01 7.7387473e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.8699548e+00 1.3182618e-02 5.6648905e-02
+-1.9005426e+02 1.5703787e-01 1.1111927e+00
+-3.3471586e+03 1.0356507e+00 1.8980068e+01
+-6.0420133e+04 -7.8437826e+00 3.2700749e+02
+-9.1273874e+05 -9.1882467e+02 -4.7592135e+03
+-2.2867501e+06 -2.8439126e+03 -2.2531449e+04
+-3.6900105e+06 -4.0419591e+03 -4.7523012e+04
+-4.6535910e+06 -3.2867055e+03 -6.7080249e+04
+-5.0984903e+06 -9.8528763e+02 -7.1795299e+04
+-5.2018466e+06 1.5160154e+03 -6.1146855e+04
+-5.1664137e+06 3.0648903e+03 -4.1756298e+04
+-5.0854256e+06 3.3020707e+03 -2.2076591e+04
+-4.9032479e+06 2.5790908e+03 -7.9147064e+03
+-4.4401316e+06 1.5339678e+03 -7.8840237e+02
+-3.5173864e+06 6.8040075e+02 1.0917084e+03
+-2.1877927e+06 2.0839230e+02 5.7984692e+02
+-8.8135194e+05 3.5955048e+01 -2.7122441e+02
+-5.9739990e+04 1.3312250e+01 -1.4813621e+01
+-3.3025583e+03 1.8372448e+00 -8.0374803e-01
+-1.8712129e+02 1.7896099e-01 -3.7867522e-02
+-9.6982851e+00 1.3074692e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7647979e+00 1.2018890e-03 4.0007265e-03
+-4.5244071e+01 7.7985486e-03 2.0162453e-02
+-6.1490235e+02 -5.2828276e-02 -7.6183237e-01
+-7.2909165e+03 -2.5520697e+00 -3.0155100e+01
+-6.4724078e+04 -5.3446268e+01 -1.1716069e+03
+-1.4645810e+05 -1.5935371e+02 -4.6238485e+03
+-2.2976502e+05 -2.2999899e+02 -9.5005890e+03
+-2.9421196e+05 -1.9209689e+02 -1.3479927e+04
+-3.3329573e+05 -6.3046258e+01 -1.4737127e+04
+-3.5129030e+05 8.1800832e+01 -1.3044105e+04
+-3.5474858e+05 1.7444891e+02 -9.5276414e+03
+-3.4691897e+05 1.9156918e+02 -5.7289624e+03
+-3.2597774e+05 1.5191725e+02 -2.7699084e+03
+-2.8623914e+05 9.2079689e+01 -1.0224684e+03
+-2.2335908e+05 4.2098888e+01 -2.5969842e+02
+-1.4282502e+05 1.3625842e+01 -3.6765742e+01
+-6.3562131e+04 2.7810326e+00 -7.3595868e+00
+-7.1810458e+03 7.6779125e-01 -9.2664605e-01
+-6.0546010e+02 1.4194198e-01 -8.2975266e-02
+-4.4494844e+01 1.8405626e-02 -5.3290743e-03
+-2.7150439e+00 1.6659254e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.2518219e-01 6.2181806e-05 -6.7194558e-04
+-7.1652768e+00 -2.8363069e-04 -1.8086249e-02
+-7.5359738e+01 -1.6673405e-02 -3.3647979e-01
+-6.3704074e+02 -2.8839927e-01 -5.2077319e+00
+-3.6450642e+03 -3.1089443e+00 -7.2935421e+01
+-8.2943392e+03 -8.8439375e+00 -2.6768455e+02
+-1.3097191e+04 -1.2882381e+01 -5.4563531e+02
+-1.6843644e+04 -1.1022377e+01 -7.7771233e+02
+-1.9127452e+04 -3.9067716e+00 -8.5680760e+02
+-2.0177187e+04 4.3428959e+00 -7.6519176e+02
+-2.0374848e+04 9.7877905e+00 -5.6483325e+02
+-1.9914537e+04 1.0953615e+01 -3.4441313e+02
+-1.8687645e+04 8.8148662e+00 -1.7009696e+02
+-1.6364012e+04 5.4363167e+00 -6.5097154e+01
+-1.2710396e+04 2.5518564e+00 -1.7711838e+01
+-8.0713535e+03 8.6579627e-01 -2.9372513e+00
+-3.5670764e+03 1.9759252e-01 -4.4499349e-01
+-6.2511262e+02 4.8015340e-02 -6.2909310e-02
+-7.3987021e+01 1.0345070e-02 -6.9980018e-03
+-7.0309244e+00 1.6443328e-03 -5.4191056e-04
+-5.1484016e-01 1.7564860e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.5259504e-02 -5.3645309e-07 -2.3822666e-04
+-8.7095469e-01 -9.2033120e-05 -4.0370445e-03
+-7.3607235e+00 -1.7773804e-03 -5.1054289e-02
+-4.8041777e+01 -2.0988345e-02 -5.4436829e-01
+-2.1020535e+02 -1.5684927e-01 -4.5856651e+00
+-4.7019438e+02 -4.2585547e-01 -1.5556287e+01
+-7.4445124e+02 -6.2257610e-01 -3.1278414e+01
+-9.6119777e+02 -5.4277261e-01 -4.4676896e+01
+-1.0945138e+03 -2.0392541e-01 -4.9551132e+01
+-1.1559916e+03 2.0012399e-01 -4.4630191e+01
+-1.1674532e+03 4.7404413e-01 -3.3282642e+01
+-1.1403048e+03 5.3935298e-01 -2.0569254e+01
+-1.0682397e+03 4.3960594e-01 -1.0363759e+01
+-9.3250843e+02 2.7510834e-01 -4.0998035e+00
+-7.2119895e+02 1.3194712e-01 -1.1864215e+00
+-4.5652282e+02 4.6494965e-02 -2.2449578e-01
+-2.0502079e+02 1.1476536e-02 -3.2785143e-02
+-4.6978566e+01 2.6888836e-03 -4.6869446e-03
+-7.2043958e+00 6.2076414e-04 -5.7170100e-04
+-8.5237736e-01 1.1281264e-04 -4.8956562e-05
+-7.3612116e-02 1.3562094e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.5366977e-03 0.0000000e+00 -3.4139332e-05
+-7.6817781e-02 0.0000000e+00 -4.8124798e-04
+-5.5047147e-01 0.0000000e+00 -4.9317529e-03
+-2.9898562e+00 0.0000000e+00 -4.1348762e-02
+-1.1062922e+01 0.0000000e+00 -2.5894159e-01
+-2.4148144e+01 0.0000000e+00 -8.1786208e-01
+-3.8207266e+01 0.0000000e+00 -1.6182165e+00
+-4.9475143e+01 0.0000000e+00 -2.3112664e+00
+-5.6478659e+01 0.0000000e+00 -2.5766613e+00
+-5.9727862e+01 0.0000000e+00 -2.3377331e+00
+-6.0332196e+01 0.0000000e+00 -1.7591793e+00
+-5.8888478e+01 0.0000000e+00 -1.1002342e+00
+-5.5072268e+01 0.0000000e+00 -5.6410608e-01
+-4.7937116e+01 0.0000000e+00 -2.2956363e-01
+-3.6953742e+01 0.0000000e+00 -6.9934262e-02
+-2.3396701e+01 0.0000000e+00 -1.4670048e-02
+-1.0758705e+01 0.0000000e+00 -2.2834334e-03
+-2.9148945e+00 0.0000000e+00 -3.3113766e-04
+-5.3728781e-01 0.0000000e+00 -4.2344606e-05
+-7.4995032e-02 0.0000000e+00 -3.8430762e-06
+-7.3558339e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.4982072e-03 -2.5930421e-06 -3.5897497e-05
+-7.6419899e-02 6.8351219e-05 -5.0213083e-04
+-5.4754481e-01 1.6879233e-03 -5.1167180e-03
+-2.9732999e+00 2.1084455e-02 -4.2757531e-02
+-1.0998662e+01 1.6022537e-01 -2.6724275e-01
+-2.4007991e+01 4.3628658e-01 -8.4368261e-01
+-3.8019711e+01 6.3798576e-01 -1.6692239e+00
+-4.9315524e+01 5.5313169e-01 -2.3819745e+00
+-5.6411889e+01 1.9705900e-01 -2.6458031e+00
+-5.9767073e+01 -2.2928658e-01 -2.3773052e+00
+-6.0441147e+01 -5.1782376e-01 -1.7505304e+00
+-5.9012245e+01 -5.8012948e-01 -1.0466343e+00
+-5.5168403e+01 -4.6035242e-01 -4.9014661e-01
+-4.7990307e+01 -2.7095988e-01 -1.6599522e-01
+-3.6972097e+01 -1.1355097e-01 -3.4089370e-02
+-2.3397646e+01 -3.0403587e-02 -2.7406358e-03
+-1.0755729e+01 -5.2855807e-03 -4.3123586e-04
+-2.9130895e+00 -2.1055806e-03 -1.3067084e-04
+-5.3675616e-01 -6.3555660e-04 -2.6759908e-05
+-7.4892268e-02 -1.2637226e-04 -3.1521599e-06
+-7.3432645e-03 -1.5721573e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.4909583e-02 -1.0168061e-04 -2.5083366e-04
+-8.6686646e-01 -6.3701573e-05 -4.2070105e-03
+-7.3253128e+00 1.4928967e-02 -5.2858710e-02
+-4.7798940e+01 2.8716661e-01 -5.6177780e-01
+-2.0905683e+02 3.1734870e+00 -4.7235537e+00
+-4.6751711e+02 9.0528747e+00 -1.6017417e+01
+-7.4081479e+02 1.3193138e+01 -3.2209023e+01
+-9.5811343e+02 1.1234267e+01 -4.5974499e+01
+-1.0932530e+03 3.7778058e+00 -5.0816015e+01
+-1.1567881e+03 -4.9148308e+00 -4.5333997e+01
+-1.1695818e+03 -1.0652366e+01 -3.3070808e+01
+-1.1426938e+03 -1.1759871e+01 -1.9502107e+01
+-1.0700720e+03 -9.2176786e+00 -8.9124611e+00
+-9.3349927e+02 -5.3308885e+00 -2.8617011e+00
+-7.2151931e+02 -2.1525368e+00 -5.0235638e-01
+-4.5652120e+02 -5.2050778e-01 -1.3869361e-02
+-2.0495905e+02 -7.1019370e-02 -9.8741416e-03
+-4.6946141e+01 -4.1386039e-02 -3.0188889e-03
+-7.1964502e+00 -1.1086085e-02 -5.1401975e-04
+-8.5108704e-01 -1.8783792e-03 -5.2336235e-05
+-7.3474137e-02 -2.0603632e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.2301887e-01 -1.5627695e-03 -7.0222930e-04
+-7.1357415e+00 -1.1633558e-02 -1.8667661e-02
+-7.5043735e+01 2.6308003e-02 -3.4605013e-01
+-6.3421825e+02 2.4727137e+00 -5.3540913e+00
+-3.6267849e+03 5.4504402e+01 -7.4964330e+01
+-8.2481390e+03 1.6292965e+02 -2.7504132e+02
+-1.3033585e+04 2.3533487e+02 -5.6078898e+02
+-1.6790020e+04 1.9576955e+02 -7.9894775e+02
+-1.9106153e+04 6.0947767e+01 -8.7741687e+02
+-2.0191819e+04 -9.1440357e+01 -7.7625927e+02
+-2.0412322e+04 -1.8912336e+02 -5.6031356e+02
+-1.9956039e+04 -2.0528975e+02 -3.2528177e+02
+-1.8719045e+04 -1.5866687e+02 -1.4443225e+02
+-1.6380563e+04 -8.9891470e+01 -4.3321182e+01
+-1.2715334e+04 -3.4644293e+01 -5.8912873e+00
+-8.0709659e+03 -7.2053753e+00 4.0600673e-01
+-3.5659457e+03 -5.3315971e-01 -2.6255490e-01
+-6.2460426e+02 -7.5175549e-01 -6.0545868e-02
+-7.3891404e+01 -1.5918956e-01 -8.0600707e-03
+-7.0187003e+00 -2.1477793e-02 -6.8472587e-04
+-5.1374864e-01 -1.9822822e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7548395e+00 -1.5902279e-02 4.3810605e-03
+-4.5083573e+01 -1.9318566e-01 2.5435043e-02
+-6.1273467e+02 -1.3899360e+00 -7.2600278e-01
+-7.2642386e+03 5.5984933e+00 -3.0529666e+01
+-6.4434615e+04 9.3604683e+02 -1.2015356e+03
+-1.4565956e+05 2.9036299e+03 -4.7407743e+03
+-2.2865614e+05 4.1309726e+03 -9.7452890e+03
+-2.9328562e+05 3.3481695e+03 -1.3824034e+04
+-3.3294033e+05 9.5083675e+02 -1.5069328e+04
+-3.5155906e+05 -1.6767325e+03 -1.3215272e+04
+-3.5540661e+05 -3.3110236e+03 -9.4353359e+03
+-3.4763797e+05 -3.5331540e+03 -5.3884699e+03
+-3.2651469e+05 -2.6918152e+03 -2.3183674e+03
+-2.8651524e+05 -1.4919138e+03 -6.4024670e+02
+-2.2343467e+05 -5.4478865e+02 -5.4511139e+01
+-1.4281283e+05 -9.0880928e+01 1.6979295e+01
+-6.3542245e+04 3.8434436e+00 -7.2830449e+00
+-7.1733783e+03 -1.4591574e+01 -1.1107623e+00
+-6.0448063e+02 -2.1426283e+00 -1.0679525e-01
+-4.4402492e+01 -2.1346474e-01 -7.1598394e-03
+-2.7083843e+00 -1.5801730e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.8389386e+00 -1.0855026e-01 6.1631801e-02
+-1.8947583e+02 -1.9298149e+00 1.2198268e+00
+-3.3374900e+03 -3.0865314e+01 2.1026599e+01
+-6.0258683e+04 -4.9980850e+02 3.6498320e+02
+-9.0453397e+05 -1.7413454e+03 -5.1623902e+03
+-2.2634398e+06 -1.7073615e+03 -2.3861672e+04
+-3.6572393e+06 -2.3857694e+03 -5.0116181e+04
+-4.6247190e+06 -4.8353258e+03 -7.0804708e+04
+-5.0837920e+06 -8.5968904e+03 -7.5955304e+04
+-5.2025809e+06 -1.2166361e+04 -6.4731317e+04
+-5.1763751e+06 -1.4147950e+04 -4.3933041e+04
+-5.0962406e+06 -1.4010088e+04 -2.2641138e+04
+-4.9090662e+06 -1.2126481e+04 -7.3881465e+03
+-4.4396033e+06 -9.3583625e+03 -5.0012737e+01
+-3.5128583e+06 -6.5443387e+03 1.4213730e+03
+-2.1828126e+06 -4.1620767e+03 5.1255143e+02
+-8.7819169e+05 -2.3023468e+03 -3.4150600e+02
+-5.9629589e+04 -4.4743179e+02 -1.9067209e+01
+-3.2952244e+03 -2.7483138e+01 -1.0606058e+00
+-1.8664124e+02 -1.7028708e+00 -5.1244437e-02
+-9.6705126e+00 -9.4818674e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.0752024e+01 -3.3788445e-01 1.7257503e-01
+-4.0760600e+02 -6.4757526e+00 3.6016062e+00
+-7.2564590e+03 -1.1238217e+02 6.5309016e+01
+-1.2920705e+05 -1.9579509e+03 1.1737890e+03
+-2.0017409e+06 -9.9810797e+03 -7.0934595e+03
+-4.7257617e+06 -1.6214119e+04 -3.7923498e+04
+-7.5136326e+06 -2.3235009e+04 -8.1459576e+04
+-9.5000034e+06 -3.1225190e+04 -1.1486084e+05
+-1.0517082e+07 -3.9227119e+04 -1.2126164e+05
+-1.0851371e+07 -4.5388690e+04 -9.9949767e+04
+-1.0841721e+07 -4.8048062e+04 -6.3328701e+04
+-1.0647603e+07 -4.6569163e+04 -2.7359336e+04
+-1.0179735e+07 -4.1453162e+04 -3.1590653e+03
+-9.1374169e+06 -3.3920520e+04 6.5533009e+03
+-7.2235628e+06 -2.5354312e+04 6.0335738e+03
+-4.5557033e+06 -1.6909021e+04 1.9924580e+03
+-1.9386771e+06 -9.4391799e+03 -9.6891257e+02
+-1.2746484e+05 -1.7064522e+03 -5.2353674e+01
+-7.1457871e+03 -9.7233916e+01 -2.7887628e+00
+-4.0058259e+02 -5.5589679e+00 -1.2887517e-01
+-2.0353709e+01 -2.8780746e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2113752e+01 -6.3012838e-01 2.2971211e-01
+-6.3023494e+02 -1.2299138e+01 4.7887698e+00
+-1.1172037e+04 -2.1683628e+02 8.6256826e+01
+-1.9739473e+05 -3.8152388e+03 1.5301393e+03
+-3.0862725e+06 -2.0426808e+04 -9.6165050e+03
+-7.1840890e+06 -3.4690373e+04 -5.3198659e+04
+-1.1349903e+07 -4.9782765e+04 -1.1470704e+05
+-1.4304733e+07 -6.4667481e+04 -1.6104534e+05
+-1.5815631e+07 -7.7725665e+04 -1.6835069e+05
+-1.6314146e+07 -8.6792334e+04 -1.3628029e+05
+-1.6299905e+07 -9.0057923e+04 -8.3118942e+04
+-1.6006527e+07 -8.6868178e+04 -3.1877662e+04
+-1.5304014e+07 -7.7864027e+04 1.6542951e+03
+-1.3750300e+07 -6.4596734e+04 1.3880129e+04
+-1.0900447e+07 -4.8998753e+04 1.1304757e+04
+-6.9146039e+06 -3.3007679e+04 3.9864509e+03
+-2.9812635e+06 -1.8464510e+04 -1.1861289e+03
+-1.9432983e+05 -3.3113651e+03 -6.4436488e+01
+-1.0978452e+04 -1.8664691e+02 -3.4230989e+00
+-6.1806187e+02 -1.0495513e+01 -1.5676917e-01
+-3.1430333e+01 -5.3331750e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1210924e+01 -7.9423744e-01 1.3166445e-01
+-8.0652495e+02 -1.5553079e+01 2.6893223e+00
+-1.4245863e+04 -2.7456879e+02 4.7142999e+01
+-2.5078775e+05 -4.8254774e+03 8.1073003e+02
+-3.8412225e+06 -2.6130226e+04 -1.3593428e+04
+-9.0012063e+06 -4.4890797e+04 -6.9792106e+04
+-1.4201673e+07 -6.4353955e+04 -1.4867718e+05
+-1.7818901e+07 -8.2669851e+04 -2.0754866e+05
+-1.9598570e+07 -9.7918995e+04 -2.1616458e+05
+-2.0131207e+07 -1.0800278e+05 -1.7454332e+05
+-2.0074888e+07 -1.1127520e+05 -1.0621300e+05
+-1.9733063e+07 -1.0718109e+05 -4.0456026e+04
+-1.8934685e+07 -9.6379455e+04 2.6750108e+03
+-1.7096365e+07 -8.0437108e+04 1.8554692e+04
+-1.3612360e+07 -6.1412968e+04 1.5406944e+04
+-8.6448041e+06 -4.1573610e+04 6.0878623e+03
+-3.7001745e+06 -2.3301344e+04 -5.1968928e+02
+-2.4659098e+05 -4.1821537e+03 -2.7579670e+01
+-1.3979568e+04 -2.3593620e+02 -1.4033890e+00
+-7.8972905e+02 -1.3245536e+01 -6.0377371e-02
+-4.0266573e+01 -6.7068638e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7118306e+01 -6.7181109e-01 -9.8937865e-02
+-9.2043101e+02 -1.3148279e+01 -2.1182719e+00
+-1.6226838e+04 -2.3172822e+02 -3.9359074e+01
+-2.8523800e+05 -4.0616827e+03 -7.2096207e+02
+-4.2341093e+06 -2.2052714e+04 -1.8420229e+04
+-1.0070641e+07 -3.8024522e+04 -8.5670108e+04
+-1.5905822e+07 -5.4437526e+04 -1.7939994e+05
+-1.9871451e+07 -6.9566106e+04 -2.4907202e+05
+-2.1724191e+07 -8.1858749e+04 -2.5933785e+05
+-2.2197374e+07 -8.9792711e+04 -2.1046021e+05
+-2.2080516e+07 -9.2225074e+04 -1.2999419e+05
+-2.1732774e+07 -8.8791863e+04 -5.2074675e+04
+-2.0948460e+07 -7.9987906e+04 -1.7421347e+02
+-1.9025506e+07 -6.6972986e+04 2.0028472e+04
+-1.5214313e+07 -5.1317705e+04 1.7790664e+04
+-9.6516796e+06 -3.4841711e+04 7.9245260e+03
+-4.0682475e+06 -1.9558455e+04 7.9057890e+02
+-2.8028593e+05 -3.5174912e+03 4.6379696e+01
+-1.5910738e+04 -1.9895271e+02 2.7091116e+00
+-9.0038663e+02 -1.1186722e+01 1.3718117e-01
+-4.5986544e+01 -5.6669834e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0212124e+01 -2.6337817e-01 -3.3210678e-01
+-9.8012570e+02 -5.1503242e+00 -6.9204475e+00
+-1.7268576e+04 -9.0648576e+01 -1.2451644e+02
+-3.0347862e+05 -1.5861486e+03 -2.2067611e+03
+-4.3902182e+06 -8.6155004e+03 -2.2423683e+04
+-1.0583430e+07 -1.4871552e+04 -9.7327227e+04
+-1.6740908e+07 -2.1273110e+04 -2.0114205e+05
+-2.0851695e+07 -2.7123107e+04 -2.7820142e+05
+-2.2691339e+07 -3.1828184e+04 -2.8985989e+05
+-2.3090542e+07 -3.4833455e+04 -2.3650766e+05
+-2.2924147e+07 -3.5731618e+04 -1.4820741e+05
+-2.2586521e+07 -3.4397093e+04 -6.2141485e+04
+-2.1849285e+07 -3.1013094e+04 -3.9972298e+03
+-1.9932725e+07 -2.6005819e+04 1.9744976e+04
+-1.5989341e+07 -1.9960559e+04 1.8828397e+04
+-1.0128391e+07 -1.3571532e+04 9.1757791e+03
+-4.2108167e+06 -7.6248669e+03 2.0364782e+03
+-2.9813363e+05 -1.3731133e+03 1.1749180e+02
+-1.6925866e+04 -7.7795475e+01 6.7046851e+00
+-9.5830176e+02 -4.3800130e+00 3.3066889e-01
+-4.8975516e+01 -2.2206282e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1149986e+01 2.6337817e-01 -4.2901865e-01
+-9.9827693e+02 5.1503242e+00 -8.9052342e+00
+-1.7586985e+04 9.0648575e+01 -1.5948394e+02
+-3.0909565e+05 1.5861486e+03 -2.8128772e+03
+-4.4280926e+06 8.6155002e+03 -2.3976112e+04
+-1.0731333e+07 1.4871553e+04 -1.0162369e+05
+-1.6985895e+07 2.1273108e+04 -2.0901786e+05
+-2.1134075e+07 2.7123107e+04 -2.8870752e+05
+-2.2959802e+07 3.1828184e+04 -3.0090836e+05
+-2.3328060e+07 3.4833455e+04 -2.4604884e+05
+-2.3143052e+07 3.5731620e+04 -1.5504088e+05
+-2.2811098e+07 3.4397092e+04 -6.6104117e+04
+-2.2095986e+07 3.1013098e+04 -5.6926577e+03
+-2.0191185e+07 2.6005820e+04 1.9413432e+04
+-1.6214752e+07 1.9960556e+04 1.9091487e+04
+-1.0264689e+07 1.3571532e+04 9.6193501e+03
+-4.2445083e+06 7.6248673e+03 2.5411553e+03
+-3.0363400e+05 1.3731133e+03 1.4645398e+02
+-1.7236223e+04 7.7795477e+01 8.3405518e+00
+-9.7590495e+02 4.3800130e+00 4.1022921e-01
+-4.9880629e+01 2.2206282e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0212124e+01 6.7181108e-01 -3.3210679e-01
+-9.8012570e+02 1.3148279e+01 -6.9204476e+00
+-1.7268576e+04 2.3172822e+02 -1.2451643e+02
+-3.0347862e+05 4.0616827e+03 -2.2067612e+03
+-4.3902182e+06 2.2052715e+04 -2.2423684e+04
+-1.0583430e+07 3.8024523e+04 -9.7327228e+04
+-1.6740908e+07 5.4437527e+04 -2.0114205e+05
+-2.0851695e+07 6.9566104e+04 -2.7820142e+05
+-2.2691339e+07 8.1858750e+04 -2.8985989e+05
+-2.3090542e+07 8.9792710e+04 -2.3650766e+05
+-2.2924147e+07 9.2225073e+04 -1.4820742e+05
+-2.2586521e+07 8.8791864e+04 -6.2141479e+04
+-2.1849285e+07 7.9987902e+04 -3.9972335e+03
+-1.9932725e+07 6.6972985e+04 1.9744974e+04
+-1.5989341e+07 5.1317707e+04 1.8828397e+04
+-1.0128391e+07 3.4841711e+04 9.1757794e+03
+-4.2108167e+06 1.9558455e+04 2.0364782e+03
+-2.9813363e+05 3.5174912e+03 1.1749181e+02
+-1.6925866e+04 1.9895270e+02 6.7046849e+00
+-9.5830176e+02 1.1186722e+01 3.3066891e-01
+-4.8975516e+01 5.6669833e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7118306e+01 7.9423744e-01 -9.8937878e-02
+-9.2043101e+02 1.5553079e+01 -2.1182722e+00
+-1.6226838e+04 2.7456879e+02 -3.9359052e+01
+-2.8523800e+05 4.8254774e+03 -7.2096203e+02
+-4.2341093e+06 2.6130226e+04 -1.8420229e+04
+-1.0070641e+07 4.4890796e+04 -8.5670108e+04
+-1.5905822e+07 6.4353954e+04 -1.7939994e+05
+-1.9871451e+07 8.2669850e+04 -2.4907202e+05
+-2.1724191e+07 9.7918994e+04 -2.5933785e+05
+-2.2197374e+07 1.0800278e+05 -2.1046021e+05
+-2.2080516e+07 1.1127520e+05 -1.2999419e+05
+-2.1732774e+07 1.0718109e+05 -5.2074677e+04
+-2.0948460e+07 9.6379454e+04 -1.7421662e+02
+-1.9025506e+07 8.0437109e+04 2.0028472e+04
+-1.5214313e+07 6.1412969e+04 1.7790667e+04
+-9.6516796e+06 4.1573610e+04 7.9245257e+03
+-4.0682475e+06 2.3301344e+04 7.9057886e+02
+-2.8028593e+05 4.1821537e+03 4.6379694e+01
+-1.5910738e+04 2.3593620e+02 2.7091112e+00
+-9.0038663e+02 1.3245536e+01 1.3718118e-01
+-4.5986544e+01 6.7068639e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1210924e+01 6.3012838e-01 1.3166444e-01
+-8.0652495e+02 1.2299138e+01 2.6893226e+00
+-1.4245863e+04 2.1683628e+02 4.7143001e+01
+-2.5078775e+05 3.8152388e+03 8.1073003e+02
+-3.8412225e+06 2.0426808e+04 -1.3593430e+04
+-9.0012063e+06 3.4690373e+04 -6.9792107e+04
+-1.4201673e+07 4.9782764e+04 -1.4867718e+05
+-1.7818901e+07 6.4667482e+04 -2.0754866e+05
+-1.9598570e+07 7.7725668e+04 -2.1616458e+05
+-2.0131207e+07 8.6792335e+04 -1.7454332e+05
+-2.0074888e+07 9.0057922e+04 -1.0621300e+05
+-1.9733063e+07 8.6868178e+04 -4.0456024e+04
+-1.8934685e+07 7.7864028e+04 2.6750082e+03
+-1.7096365e+07 6.4596733e+04 1.8554691e+04
+-1.3612360e+07 4.8998754e+04 1.5406944e+04
+-8.6448041e+06 3.3007680e+04 6.0878622e+03
+-3.7001745e+06 1.8464510e+04 -5.1968917e+02
+-2.4659098e+05 3.3113651e+03 -2.7579680e+01
+-1.3979568e+04 1.8664691e+02 -1.4033890e+00
+-7.8972905e+02 1.0495513e+01 -6.0377372e-02
+-4.0266573e+01 5.3331750e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2113752e+01 3.3788445e-01 2.2971211e-01
+-6.3023494e+02 6.4757525e+00 4.7887699e+00
+-1.1172037e+04 1.1238217e+02 8.6256827e+01
+-1.9739473e+05 1.9579508e+03 1.5301392e+03
+-3.0862725e+06 9.9810796e+03 -9.6165051e+03
+-7.1840890e+06 1.6214119e+04 -5.3198659e+04
+-1.1349903e+07 2.3235010e+04 -1.1470704e+05
+-1.4304733e+07 3.1225191e+04 -1.6104534e+05
+-1.5815631e+07 3.9227118e+04 -1.6835069e+05
+-1.6314146e+07 4.5388690e+04 -1.3628029e+05
+-1.6299905e+07 4.8048063e+04 -8.3118940e+04
+-1.6006527e+07 4.6569162e+04 -3.1877662e+04
+-1.5304014e+07 4.1453163e+04 1.6542943e+03
+-1.3750300e+07 3.3920521e+04 1.3880129e+04
+-1.0900447e+07 2.5354312e+04 1.1304758e+04
+-6.9146039e+06 1.6909021e+04 3.9864509e+03
+-2.9812635e+06 9.4391799e+03 -1.1861289e+03
+-1.9432983e+05 1.7064522e+03 -6.4436489e+01
+-1.0978452e+04 9.7233915e+01 -3.4230987e+00
+-6.1806187e+02 5.5589679e+00 -1.5676918e-01
+-3.1430333e+01 2.8780746e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0752024e+01 1.0855026e-01 1.7257503e-01
+-4.0760600e+02 1.9298149e+00 3.6016063e+00
+-7.2564590e+03 3.0865314e+01 6.5309015e+01
+-1.2920705e+05 4.9980850e+02 1.1737890e+03
+-2.0017409e+06 1.7413453e+03 -7.0934595e+03
+-4.7257617e+06 1.7073615e+03 -3.7923499e+04
+-7.5136326e+06 2.3857693e+03 -8.1459576e+04
+-9.5000034e+06 4.8353251e+03 -1.1486083e+05
+-1.0517082e+07 8.5968907e+03 -1.2126164e+05
+-1.0851371e+07 1.2166361e+04 -9.9949767e+04
+-1.0841721e+07 1.4147950e+04 -6.3328701e+04
+-1.0647603e+07 1.4010088e+04 -2.7359335e+04
+-1.0179735e+07 1.2126480e+04 -3.1590660e+03
+-9.1374169e+06 9.3583625e+03 6.5533006e+03
+-7.2235628e+06 6.5443384e+03 6.0335738e+03
+-4.5557033e+06 4.1620760e+03 1.9924578e+03
+-1.9386771e+06 2.3023468e+03 -9.6891254e+02
+-1.2746484e+05 4.4743179e+02 -5.2353674e+01
+-7.1457871e+03 2.7483138e+01 -2.7887627e+00
+-4.0058259e+02 1.7028708e+00 -1.2887517e-01
+-2.0353709e+01 9.4818674e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.8389386e+00 1.5902279e-02 6.1631801e-02
+-1.8947583e+02 1.9318566e-01 1.2198269e+00
+-3.3374900e+03 1.3899360e+00 2.1026599e+01
+-6.0258683e+04 -5.5984932e+00 3.6498319e+02
+-9.0453397e+05 -9.3604682e+02 -5.1623901e+03
+-2.2634398e+06 -2.9036299e+03 -2.3861672e+04
+-3.6572393e+06 -4.1309726e+03 -5.0116181e+04
+-4.6247190e+06 -3.3481695e+03 -7.0804707e+04
+-5.0837920e+06 -9.5083683e+02 -7.5955304e+04
+-5.2025809e+06 1.6767325e+03 -6.4731317e+04
+-5.1763751e+06 3.3110236e+03 -4.3933041e+04
+-5.0962406e+06 3.5331540e+03 -2.2641138e+04
+-4.9090662e+06 2.6918152e+03 -7.3881463e+03
+-4.4396033e+06 1.4919138e+03 -5.0012799e+01
+-3.5128583e+06 5.4478865e+02 1.4213727e+03
+-2.1828126e+06 9.0880958e+01 5.1255156e+02
+-8.7819169e+05 -3.8434574e+00 -3.4150600e+02
+-5.9629589e+04 1.4591574e+01 -1.9067209e+01
+-3.2952244e+03 2.1426284e+00 -1.0606058e+00
+-1.8664124e+02 2.1346474e-01 -5.1244436e-02
+-9.6705126e+00 1.5801730e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7548395e+00 1.5627696e-03 4.3810606e-03
+-4.5083573e+01 1.1633559e-02 2.5435047e-02
+-6.1273467e+02 -2.6308005e-02 -7.2600283e-01
+-7.2642386e+03 -2.4727136e+00 -3.0529667e+01
+-6.4434615e+04 -5.4504401e+01 -1.2015356e+03
+-1.4565956e+05 -1.6292965e+02 -4.7407743e+03
+-2.2865614e+05 -2.3533487e+02 -9.7452890e+03
+-2.9328562e+05 -1.9576954e+02 -1.3824034e+04
+-3.3294033e+05 -6.0947764e+01 -1.5069328e+04
+-3.5155906e+05 9.1440357e+01 -1.3215272e+04
+-3.5540661e+05 1.8912336e+02 -9.4353359e+03
+-3.4763797e+05 2.0528975e+02 -5.3884700e+03
+-3.2651469e+05 1.5866687e+02 -2.3183674e+03
+-2.8651524e+05 8.9891463e+01 -6.4024670e+02
+-2.2343467e+05 3.4644291e+01 -5.4511163e+01
+-1.4281283e+05 7.2053764e+00 1.6979299e+01
+-6.3542245e+04 5.3315985e-01 -7.2830443e+00
+-7.1733783e+03 7.5175546e-01 -1.1107622e+00
+-6.0448063e+02 1.5918955e-01 -1.0679526e-01
+-4.4402492e+01 2.1477792e-02 -7.1598394e-03
+-2.7083843e+00 1.9822822e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.2301887e-01 1.0168061e-04 -7.0222928e-04
+-7.1357415e+00 6.3701549e-05 -1.8667661e-02
+-7.5043735e+01 -1.4928967e-02 -3.4605013e-01
+-6.3421825e+02 -2.8716661e-01 -5.3540913e+00
+-3.6267849e+03 -3.1734870e+00 -7.4964330e+01
+-8.2481390e+03 -9.0528748e+00 -2.7504132e+02
+-1.3033585e+04 -1.3193138e+01 -5.6078898e+02
+-1.6790020e+04 -1.1234268e+01 -7.9894775e+02
+-1.9106153e+04 -3.7778062e+00 -8.7741687e+02
+-2.0191819e+04 4.9148308e+00 -7.7625927e+02
+-2.0412322e+04 1.0652366e+01 -5.6031356e+02
+-1.9956039e+04 1.1759871e+01 -3.2528177e+02
+-1.8719045e+04 9.2176789e+00 -1.4443225e+02
+-1.6380563e+04 5.3308887e+00 -4.3321181e+01
+-1.2715334e+04 2.1525368e+00 -5.8912880e+00
+-8.0709659e+03 5.2050790e-01 4.0600692e-01
+-3.5659457e+03 7.1019424e-02 -2.6255488e-01
+-6.2460426e+02 4.1386040e-02 -6.0545863e-02
+-7.3891404e+01 1.1086086e-02 -8.0600702e-03
+-7.0187003e+00 1.8783791e-03 -6.8472585e-04
+-5.1374864e-01 2.0603632e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.4909583e-02 2.5930424e-06 -2.5083366e-04
+-8.6686646e-01 -6.8351215e-05 -4.2070105e-03
+-7.3253128e+00 -1.6879231e-03 -5.2858710e-02
+-4.7798940e+01 -2.1084454e-02 -5.6177781e-01
+-2.0905683e+02 -1.6022537e-01 -4.7235537e+00
+-4.6751711e+02 -4.3628658e-01 -1.6017417e+01
+-7.4081479e+02 -6.3798577e-01 -3.2209023e+01
+-9.5811343e+02 -5.5313170e-01 -4.5974500e+01
+-1.0932530e+03 -1.9705900e-01 -5.0816015e+01
+-1.1567881e+03 2.2928657e-01 -4.5333997e+01
+-1.1695818e+03 5.1782375e-01 -3.3070808e+01
+-1.1426938e+03 5.8012948e-01 -1.9502107e+01
+-1.0700720e+03 4.6035240e-01 -8.9124612e+00
+-9.3349927e+02 2.7095994e-01 -2.8617011e+00
+-7.2151931e+02 1.1355098e-01 -5.0235639e-01
+-4.5652120e+02 3.0403593e-02 -1.3869351e-02
+-2.0495905e+02 5.2855809e-03 -9.8741439e-03
+-4.6946141e+01 2.1055809e-03 -3.0188881e-03
+-7.1964502e+00 6.3555656e-04 -5.1401984e-04
+-8.5108704e-01 1.2637227e-04 -5.2336223e-05
+-7.3474137e-02 1.5721572e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.4982072e-03 0.0000000e+00 -3.5897497e-05
+-7.6419899e-02 0.0000000e+00 -5.0213081e-04
+-5.4754481e-01 0.0000000e+00 -5.1167180e-03
+-2.9732999e+00 0.0000000e+00 -4.2757532e-02
+-1.0998662e+01 0.0000000e+00 -2.6724275e-01
+-2.4007991e+01 0.0000000e+00 -8.4368261e-01
+-3.8019711e+01 0.0000000e+00 -1.6692239e+00
+-4.9315524e+01 0.0000000e+00 -2.3819745e+00
+-5.6411889e+01 0.0000000e+00 -2.6458031e+00
+-5.9767073e+01 0.0000000e+00 -2.3773052e+00
+-6.0441147e+01 0.0000000e+00 -1.7505305e+00
+-5.9012245e+01 0.0000000e+00 -1.0466344e+00
+-5.5168403e+01 0.0000000e+00 -4.9014660e-01
+-4.7990307e+01 0.0000000e+00 -1.6599523e-01
+-3.6972097e+01 0.0000000e+00 -3.4089368e-02
+-2.3397646e+01 0.0000000e+00 -2.7406358e-03
+-1.0755729e+01 0.0000000e+00 -4.3123580e-04
+-2.9130895e+00 0.0000000e+00 -1.3067085e-04
+-5.3675616e-01 0.0000000e+00 -2.6759912e-05
+-7.4892268e-02 0.0000000e+00 -3.1521594e-06
+-7.3432645e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.4563502e-03 -5.1444552e-06 -3.6712542e-05
+-7.5994131e-02 4.7941446e-05 -5.1042150e-04
+-5.4446720e-01 1.5911003e-03 -5.1791312e-03
+-2.9561538e+00 2.0855092e-02 -4.3180250e-02
+-1.0932816e+01 1.6053273e-01 -2.6955904e-01
+-2.3864675e+01 4.3837889e-01 -8.5125354e-01
+-3.7827295e+01 6.4246569e-01 -1.6861347e+00
+-4.9150273e+01 5.5743168e-01 -2.4088175e+00
+-5.6340563e+01 1.9517387e-01 -2.6753172e+00
+-5.9804373e+01 -2.4254156e-01 -2.3954758e+00
+-6.0550697e+01 -5.4122872e-01 -1.7446968e+00
+-5.9136990e+01 -6.0479429e-01 -1.0151571e+00
+-5.5263150e+01 -4.7509791e-01 -4.4531182e-01
+-4.8038575e+01 -2.7074675e-01 -1.2629677e-01
+-3.6983567e+01 -1.0359949e-01 -1.1226694e-02
+-2.3392812e+01 -2.1008440e-02 4.9471050e-03
+-1.0749842e+01 -1.6982916e-03 7.5863283e-04
+-2.9104884e+00 -1.8376726e-03 -4.7474837e-06
+-5.3607872e-01 -6.6434745e-04 -1.7841024e-05
+-7.4769331e-02 -1.3789001e-04 -2.8872539e-06
+-7.3287356e-03 -1.7416144e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.4525194e-02 -1.3288403e-04 -2.5664903e-04
+-8.6245774e-01 -3.4812918e-04 -4.2693000e-03
+-7.2879057e+00 1.3294233e-02 -5.3379586e-02
+-4.7547297e+01 2.8195336e-01 -5.6612099e-01
+-2.0788388e+02 3.1764141e+00 -4.7549489e+00
+-4.6478999e+02 9.0857440e+00 -1.6129431e+01
+-7.3709906e+02 1.3272858e+01 -3.2475556e+01
+-9.5493464e+02 1.1318473e+01 -4.6415392e+01
+-1.0919156e+03 3.7506239e+00 -5.1308248e+01
+-1.1575557e+03 -5.1607031e+00 -4.5622443e+01
+-1.1717284e+03 -1.1100246e+01 -3.2916829e+01
+-1.1451081e+03 -1.2237359e+01 -1.8869910e+01
+-1.0718846e+03 -9.4998395e+00 -8.0324977e+00
+-9.3440188e+02 -5.3108915e+00 -2.0897380e+00
+-7.2171235e+02 -1.9333426e+00 -6.6956441e-02
+-4.5641304e+02 -3.1753339e-01 1.2140548e-01
+-2.0484652e+02 2.5263539e-03 4.6524965e-03
+-4.6902384e+01 -3.8908705e-02 -2.0330212e-03
+-7.1868157e+00 -1.1833364e-02 -4.9842734e-04
+-8.4960153e-01 -2.0644905e-03 -5.7341730e-05
+-7.3319643e-02 -2.2925207e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.2060021e-01 -1.8381660e-03 -7.1337425e-04
+-7.1034137e+00 -1.4617540e-02 -1.8771798e-02
+-7.4706330e+01 4.2803298e-03 -3.4716308e-01
+-6.3128063e+02 2.3719020e+00 -5.3747338e+00
+-3.6081829e+03 5.4489702e+01 -7.5289970e+01
+-8.2012707e+03 1.6328081e+02 -2.7635332e+02
+-1.2968861e+04 2.3645940e+02 -5.6426413e+02
+-1.6735003e+04 1.9714205e+02 -8.0510477e+02
+-1.9083706e+04 6.0666101e+01 -8.8446641e+02
+-2.0206069e+04 -9.5300037e+01 -7.8007711e+02
+-2.0450196e+04 -1.9643838e+02 -5.5686572e+02
+-1.9998075e+04 -2.1321357e+02 -3.1385365e+02
+-1.8750215e+04 -1.6331007e+02 -1.2887301e+02
+-1.6395692e+04 -8.9286669e+01 -2.9768408e+01
+-1.2718148e+04 -3.0504005e+01 1.6168136e+00
+-8.0688039e+03 -3.4091070e+00 2.5463851e+00
+-3.5640209e+03 7.7516169e-01 -1.5102453e-01
+-6.2396907e+02 -7.6434366e-01 -6.0777144e-02
+-7.3781749e+01 -1.7320408e-01 -9.0612134e-03
+-7.0052098e+00 -2.3806240e-02 -8.0996242e-04
+-5.1256854e-01 -2.2193147e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7433895e+00 -1.7907364e-02 4.6192214e-03
+-4.4903161e+01 -2.2001005e-01 2.9599768e-02
+-6.1036475e+02 -1.6591772e+00 -6.7686415e-01
+-7.2360360e+03 3.6851013e+00 -3.0192679e+01
+-6.4141034e+04 9.3464386e+02 -1.2039278e+03
+-1.4485257e+05 2.9050117e+03 -4.7526474e+03
+-2.2753199e+05 4.1447070e+03 -9.7850452e+03
+-2.9233888e+05 3.3693359e+03 -1.3903976e+04
+-3.3256756e+05 9.4881413e+02 -1.5164888e+04
+-3.5182249e+05 -1.7361118e+03 -1.3260650e+04
+-3.5607226e+05 -3.4287417e+03 -9.3627040e+03
+-3.4836709e+05 -3.6631637e+03 -5.1836350e+03
+-3.2704900e+05 -2.7678836e+03 -2.0447597e+03
+-2.8676819e+05 -1.4782798e+03 -4.0281637e+02
+-2.2347464e+05 -4.6893819e+02 7.5585799e+01
+-1.4277084e+05 -2.1139075e+01 5.1321968e+01
+-6.3509783e+04 2.6987403e+01 -7.3519811e+00
+-7.1645836e+03 -1.5651103e+01 -1.2598684e+00
+-6.0341754e+02 -2.3701885e+00 -1.2597915e-01
+-4.4304616e+01 -2.3901410e-01 -8.6470880e-03
+-2.7014221e+00 -1.7828653e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.8017583e+00 -1.1967200e-01 6.4584377e-02
+-1.8879592e+02 -2.1228688e+00 1.2875379e+00
+-3.3263583e+03 -3.3859411e+01 2.2356094e+01
+-6.0076482e+04 -5.4656356e+02 3.9040372e+02
+-8.9580229e+05 -1.9847750e+03 -5.4218593e+03
+-2.2392218e+06 -2.1441981e+03 -2.4590649e+04
+-3.6231395e+06 -3.0208172e+03 -5.1524907e+04
+-4.5942231e+06 -5.6583714e+03 -7.2993087e+04
+-5.0675184e+06 -9.6032915e+03 -7.8714554e+04
+-5.2021720e+06 -1.3342205e+04 -6.7517421e+04
+-5.1857713e+06 -1.5436354e+04 -4.6113598e+04
+-5.1068572e+06 -1.5300011e+04 -2.3860089e+04
+-4.9146407e+06 -1.3284705e+04 -7.7687977e+03
+-4.4385075e+06 -1.0286182e+04 -5.6717168e+01
+-3.5075443e+06 -7.2158237e+03 1.3761836e+03
+-2.1772167e+06 -4.6107711e+03 3.6990285e+02
+-8.7483015e+05 -2.5707506e+03 -3.9390440e+02
+-5.9514088e+04 -5.0274364e+02 -2.2312851e+01
+-3.2876555e+03 -3.0991233e+01 -1.2607100e+00
+-1.8615117e+02 -1.9279494e+00 -6.1843718e-02
+-9.6424063e+00 -1.0777872e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0680247e+01 -3.7098557e-01 1.7953635e-01
+-4.0622264e+02 -7.0940379e+00 3.7673454e+00
+-7.2324078e+03 -1.2280154e+02 6.8658348e+01
+-1.2878954e+05 -2.1341111e+03 1.2386916e+03
+-1.9834064e+06 -1.0948369e+04 -8.1321628e+03
+-4.6773083e+06 -1.7956247e+04 -4.0773487e+04
+-7.4448734e+06 -2.5802520e+04 -8.6750972e+04
+-9.4350367e+06 -3.4570432e+04 -1.2280561e+05
+-1.0474979e+07 -4.3245322e+04 -1.3126665e+05
+-1.0835452e+07 -4.9922168e+04 -1.1060531e+05
+-1.0841961e+07 -5.2864566e+04 -7.2936848e+04
+-1.0649776e+07 -5.1360596e+04 -3.4702827e+04
+-1.0173851e+07 -4.5880925e+04 -7.9907102e+03
+-9.1216542e+06 -3.7690017e+04 3.6504561e+03
+-7.2031514e+06 -2.8275960e+04 4.2992034e+03
+-4.5381616e+06 -1.8917765e+04 1.0645568e+03
+-1.9284598e+06 -1.0586626e+04 -1.1368815e+03
+-1.2712274e+05 -1.9195231e+03 -6.2198560e+01
+-7.1257913e+03 -1.0982528e+02 -3.3602382e+00
+-3.9940790e+02 -6.3053560e+00 -1.5751738e-01
+-2.0291262e+01 -3.2774334e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2027252e+01 -6.9137285e-01 2.3388689e-01
+-6.2854004e+02 -1.3466064e+01 4.9110201e+00
+-1.1142117e+04 -2.3685992e+02 8.9049208e+01
+-1.9686963e+05 -4.1579428e+03 1.5877841e+03
+-3.0616953e+06 -2.2311428e+04 -1.1626330e+04
+-7.1170025e+06 -3.8077214e+04 -5.8591779e+04
+-1.1254935e+07 -5.4773900e+04 -1.2458857e+05
+-1.4216987e+07 -7.1163751e+04 -1.7574111e+05
+-1.5762300e+07 -8.5493801e+04 -1.8682441e+05
+-1.6299249e+07 -9.5494801e+04 -1.5614886e+05
+-1.6308185e+07 -9.9248740e+04 -1.0148486e+05
+-1.6016840e+07 -9.6003231e+04 -4.6528997e+04
+-1.5301505e+07 -8.6357912e+04 -8.5609419e+03
+-1.3732086e+07 -7.1913749e+04 7.4486054e+03
+-1.0874070e+07 -5.4741163e+04 7.5369406e+03
+-6.8911656e+06 -3.6980054e+04 2.1609051e+03
+-2.9675377e+06 -2.0722566e+04 -1.4288937e+03
+-1.9387307e+05 -3.7263475e+03 -7.8837617e+01
+-1.0951924e+04 -2.1092721e+02 -4.2642448e+00
+-6.1652030e+02 -1.1912177e+01 -1.9899022e-01
+-3.1349327e+01 -6.0774007e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1150122e+01 -8.7157058e-01 1.1939581e-01
+-8.0532492e+02 -1.7032950e+01 2.4862558e+00
+-1.4224591e+04 -3.0002597e+02 4.4380687e+01
+-2.5041463e+05 -5.2611275e+03 7.7445012e+02
+-3.8177612e+06 -2.8517608e+04 -1.6480636e+04
+-8.9292648e+06 -4.9169897e+04 -7.7329443e+04
+-1.4100783e+07 -7.0647313e+04 -1.6234568e+05
+-1.7733810e+07 -9.0843197e+04 -2.2775782e+05
+-1.9562651e+07 -1.0766360e+05 -2.4150704e+05
+-2.0147491e+07 -1.1888299e+05 -2.0183416e+05
+-2.0121657e+07 -1.2273806e+05 -1.3157644e+05
+-1.9781188e+07 -1.1857239e+05 -6.0882049e+04
+-1.8963194e+07 -1.0699950e+05 -1.1732096e+04
+-1.7099804e+07 -8.9630626e+04 9.4242327e+03
+-1.3599129e+07 -6.8666887e+04 1.0118637e+04
+-8.6286927e+06 -4.6609547e+04 3.6366676e+03
+-3.6903773e+06 -2.6164597e+04 -7.1854758e+02
+-2.4628737e+05 -4.7087447e+03 -3.9761575e+01
+-1.3961349e+04 -2.6677181e+02 -2.1358111e+00
+-7.8863735e+02 -1.5041681e+01 -9.8002713e-02
+-4.0207609e+01 -7.6470734e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7114373e+01 -7.3747173e-01 -1.3803208e-01
+-9.2034097e+02 -1.4404911e+01 -2.8561129e+00
+-1.6225114e+04 -2.5332457e+02 -5.1281766e+01
+-2.8520805e+05 -4.4305240e+03 -9.1183688e+02
+-4.2175274e+06 -2.4067728e+04 -2.1943664e+04
+-1.0005513e+07 -4.1628909e+04 -9.4612345e+04
+-1.5815886e+07 -5.9728522e+04 -1.9546743e+05
+-1.9808617e+07 -7.6424406e+04 -2.7271995e+05
+-2.1725644e+07 -9.0018424e+04 -2.8891193e+05
+-2.2264032e+07 -9.8885178e+04 -2.4225134e+05
+-2.2184213e+07 -1.0179197e+05 -1.5950051e+05
+-2.1836748e+07 -9.8298656e+04 -7.5800910e+04
+-2.1025533e+07 -8.8863855e+04 -1.6863064e+04
+-1.9066833e+07 -7.4676837e+04 9.5109003e+03
+-1.5227822e+07 -5.7414438e+04 1.1767246e+04
+-9.6526603e+06 -3.9084290e+04 5.2227027e+03
+-4.0679508e+06 -2.1973005e+04 7.3445141e+02
+-2.8034007e+05 -3.9624730e+03 4.2324668e+01
+-1.5912546e+04 -2.2506971e+02 2.4309065e+00
+-9.0040879e+02 -1.2710012e+01 1.2140300e-01
+-4.5983392e+01 -6.4645624e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0264239e+01 -2.8918647e-01 -3.9616976e-01
+-9.8112793e+02 -5.6440015e+00 -8.1548468e+00
+-1.7286020e+04 -9.9124631e+01 -1.4491028e+02
+-3.0378344e+05 -1.7307161e+03 -2.5399052e+03
+-4.3811070e+06 -9.4039649e+03 -2.6314828e+04
+-1.0528103e+07 -1.6280417e+04 -1.0699042e+05
+-1.6665901e+07 -2.3339004e+04 -2.1838646e+05
+-2.0813207e+07 -2.9798060e+04 -3.0350004e+05
+-2.2728422e+07 -3.5007227e+04 -3.2142753e+05
+-2.3202119e+07 -3.8372458e+04 -2.7036312e+05
+-2.3077316e+07 -3.9453019e+04 -1.7953344e+05
+-2.2739040e+07 -3.8095082e+04 -8.7218098e+04
+-2.1969378e+07 -3.4468014e+04 -2.1520900e+04
+-2.0008708e+07 -2.9008145e+04 8.7942241e+03
+-1.6028240e+07 -2.2339928e+04 1.2618504e+04
+-1.0146087e+07 -1.5229276e+04 6.4588918e+03
+-4.2198925e+06 -8.5689446e+03 2.1305724e+03
+-2.9854038e+05 -1.5473259e+03 1.2217776e+02
+-1.6947649e+04 -8.8035509e+01 6.9260216e+00
+-9.5944721e+02 -4.9779380e+00 3.3939868e-01
+-4.9029184e+01 -2.5338992e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1225142e+01 2.8918647e-01 -5.0321665e-01
+-9.9972737e+02 5.6440016e+00 -1.0340782e+01
+-1.7612275e+04 9.9124632e+01 -1.8330025e+02
+-3.0953705e+05 1.7307161e+03 -3.2033399e+03
+-4.4221181e+06 9.4039652e+03 -2.7985787e+04
+-1.0680380e+07 1.6280418e+04 -1.1149965e+05
+-1.6917476e+07 2.3339004e+04 -2.2659653e+05
+-2.1105802e+07 2.9798060e+04 -3.1446578e+05
+-2.3011261e+07 3.5007227e+04 -3.3302123e+05
+-2.3457373e+07 3.8372458e+04 -2.8045374e+05
+-2.3315583e+07 3.9453021e+04 -1.8682861e+05
+-2.2982622e+07 3.8095083e+04 -9.1494183e+04
+-2.2233037e+07 3.4468015e+04 -2.3378876e+04
+-2.0280984e+07 2.9008145e+04 8.4046278e+03
+-1.6263902e+07 2.2339927e+04 1.2874405e+04
+-1.0289199e+07 1.5229275e+04 6.9262864e+03
+-4.2574182e+06 8.5689446e+03 2.6983061e+03
+-3.0418519e+05 1.5473259e+03 1.5483819e+02
+-1.7266230e+04 8.8035511e+01 8.7749682e+00
+-9.7751535e+02 4.9779381e+00 4.2948888e-01
+-4.9957920e+01 2.5338993e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0264239e+01 7.3747173e-01 -3.9616975e-01
+-9.8112793e+02 1.4404911e+01 -8.1548467e+00
+-1.7286020e+04 2.5332457e+02 -1.4491027e+02
+-3.0378344e+05 4.4305240e+03 -2.5399053e+03
+-4.3811070e+06 2.4067729e+04 -2.6314828e+04
+-1.0528103e+07 4.1628909e+04 -1.0699042e+05
+-1.6665901e+07 5.9728523e+04 -2.1838646e+05
+-2.0813207e+07 7.6424406e+04 -3.0350005e+05
+-2.2728422e+07 9.0018426e+04 -3.2142753e+05
+-2.3202119e+07 9.8885175e+04 -2.7036312e+05
+-2.3077316e+07 1.0179197e+05 -1.7953344e+05
+-2.2739040e+07 9.8298657e+04 -8.7218097e+04
+-2.1969378e+07 8.8863854e+04 -2.1520900e+04
+-2.0008708e+07 7.4676837e+04 8.7942223e+03
+-1.6028240e+07 5.7414439e+04 1.2618504e+04
+-1.0146087e+07 3.9084291e+04 6.4588922e+03
+-4.2198925e+06 2.1973005e+04 2.1305724e+03
+-2.9854038e+05 3.9624730e+03 1.2217777e+02
+-1.6947649e+04 2.2506971e+02 6.9260217e+00
+-9.5944721e+02 1.2710012e+01 3.3939867e-01
+-4.9029184e+01 6.4645624e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7114373e+01 8.7157058e-01 -1.3803207e-01
+-9.2034097e+02 1.7032950e+01 -2.8561125e+00
+-1.6225114e+04 3.0002597e+02 -5.1281762e+01
+-2.8520805e+05 5.2611274e+03 -9.1183677e+02
+-4.2175274e+06 2.8517607e+04 -2.1943666e+04
+-1.0005513e+07 4.9169896e+04 -9.4612345e+04
+-1.5815886e+07 7.0647312e+04 -1.9546743e+05
+-1.9808617e+07 9.0843196e+04 -2.7271995e+05
+-2.1725644e+07 1.0766360e+05 -2.8891193e+05
+-2.2264032e+07 1.1888300e+05 -2.4225134e+05
+-2.2184213e+07 1.2273806e+05 -1.5950051e+05
+-2.1836748e+07 1.1857239e+05 -7.5800910e+04
+-2.1025533e+07 1.0699950e+05 -1.6863064e+04
+-1.9066833e+07 8.9630628e+04 9.5109009e+03
+-1.5227822e+07 6.8666888e+04 1.1767246e+04
+-9.6526603e+06 4.6609547e+04 5.2227017e+03
+-4.0679508e+06 2.6164598e+04 7.3445150e+02
+-2.8034007e+05 4.7087447e+03 4.2324665e+01
+-1.5912546e+04 2.6677181e+02 2.4309067e+00
+-9.0040879e+02 1.5041681e+01 1.2140301e-01
+-4.5983392e+01 7.6470734e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1150122e+01 6.9137285e-01 1.1939580e-01
+-8.0532492e+02 1.3466064e+01 2.4862559e+00
+-1.4224591e+04 2.3685992e+02 4.4380692e+01
+-2.5041463e+05 4.1579428e+03 7.7444992e+02
+-3.8177612e+06 2.2311428e+04 -1.6480637e+04
+-8.9292649e+06 3.8077214e+04 -7.7329442e+04
+-1.4100783e+07 5.4773900e+04 -1.6234567e+05
+-1.7733810e+07 7.1163751e+04 -2.2775782e+05
+-1.9562651e+07 8.5493799e+04 -2.4150704e+05
+-2.0147491e+07 9.5494802e+04 -2.0183416e+05
+-2.0121657e+07 9.9248741e+04 -1.3157644e+05
+-1.9781188e+07 9.6003231e+04 -6.0882048e+04
+-1.8963194e+07 8.6357912e+04 -1.1732098e+04
+-1.7099804e+07 7.1913749e+04 9.4242327e+03
+-1.3599129e+07 5.4741164e+04 1.0118637e+04
+-8.6286927e+06 3.6980054e+04 3.6366680e+03
+-3.6903773e+06 2.0722565e+04 -7.1854768e+02
+-2.4628737e+05 3.7263475e+03 -3.9761578e+01
+-1.3961349e+04 2.1092721e+02 -2.1358110e+00
+-7.8863735e+02 1.1912177e+01 -9.8002719e-02
+-4.0207609e+01 6.0774006e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.2027252e+01 3.7098557e-01 2.3388690e-01
+-6.2854004e+02 7.0940379e+00 4.9110200e+00
+-1.1142117e+04 1.2280154e+02 8.9049206e+01
+-1.9686963e+05 2.1341111e+03 1.5877840e+03
+-3.0616953e+06 1.0948369e+04 -1.1626330e+04
+-7.1170025e+06 1.7956248e+04 -5.8591778e+04
+-1.1254935e+07 2.5802519e+04 -1.2458857e+05
+-1.4216987e+07 3.4570433e+04 -1.7574111e+05
+-1.5762300e+07 4.3245323e+04 -1.8682441e+05
+-1.6299249e+07 4.9922169e+04 -1.5614886e+05
+-1.6308185e+07 5.2864565e+04 -1.0148486e+05
+-1.6016840e+07 5.1360594e+04 -4.6528996e+04
+-1.5301505e+07 4.5880925e+04 -8.5609422e+03
+-1.3732086e+07 3.7690018e+04 7.4486045e+03
+-1.0874070e+07 2.8275959e+04 7.5369407e+03
+-6.8911656e+06 1.8917764e+04 2.1609054e+03
+-2.9675377e+06 1.0586626e+04 -1.4288937e+03
+-1.9387307e+05 1.9195231e+03 -7.8837618e+01
+-1.0951924e+04 1.0982528e+02 -4.2642448e+00
+-6.1652030e+02 6.3053560e+00 -1.9899023e-01
+-3.1349327e+01 3.2774334e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0680247e+01 1.1967200e-01 1.7953634e-01
+-4.0622264e+02 2.1228688e+00 3.7673454e+00
+-7.2324078e+03 3.3859411e+01 6.8658348e+01
+-1.2878954e+05 5.4656355e+02 1.2386915e+03
+-1.9834064e+06 1.9847750e+03 -8.1321627e+03
+-4.6773083e+06 2.1441982e+03 -4.0773487e+04
+-7.4448734e+06 3.0208176e+03 -8.6750971e+04
+-9.4350367e+06 5.6583711e+03 -1.2280561e+05
+-1.0474979e+07 9.6032923e+03 -1.3126665e+05
+-1.0835452e+07 1.3342205e+04 -1.1060531e+05
+-1.0841961e+07 1.5436355e+04 -7.2936849e+04
+-1.0649776e+07 1.5300012e+04 -3.4702826e+04
+-1.0173851e+07 1.3284703e+04 -7.9907100e+03
+-9.1216543e+06 1.0286182e+04 3.6504557e+03
+-7.2031514e+06 7.2158223e+03 4.2992027e+03
+-4.5381616e+06 4.6107710e+03 1.0645571e+03
+-1.9284598e+06 2.5707506e+03 -1.1368814e+03
+-1.2712274e+05 5.0274364e+02 -6.2198560e+01
+-7.1257913e+03 3.0991232e+01 -3.3602382e+00
+-3.9940790e+02 1.9279494e+00 -1.5751738e-01
+-2.0291262e+01 1.0777872e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.8017583e+00 1.7907364e-02 6.4584377e-02
+-1.8879592e+02 2.2001005e-01 1.2875379e+00
+-3.3263583e+03 1.6591773e+00 2.2356093e+01
+-6.0076482e+04 -3.6851005e+00 3.9040371e+02
+-8.9580229e+05 -9.3464386e+02 -5.4218593e+03
+-2.2392218e+06 -2.9050117e+03 -2.4590649e+04
+-3.6231395e+06 -4.1447070e+03 -5.1524907e+04
+-4.5942231e+06 -3.3693359e+03 -7.2993087e+04
+-5.0675184e+06 -9.4881414e+02 -7.8714554e+04
+-5.2021720e+06 1.7361119e+03 -6.7517421e+04
+-5.1857713e+06 3.4287418e+03 -4.6113598e+04
+-5.1068572e+06 3.6631638e+03 -2.3860088e+04
+-4.9146407e+06 2.7678837e+03 -7.7687976e+03
+-4.4385075e+06 1.4782797e+03 -5.6717452e+01
+-3.5075443e+06 4.6893822e+02 1.3761837e+03
+-2.1772167e+06 2.1139002e+01 3.6990291e+02
+-8.7483015e+05 -2.6987414e+01 -3.9390440e+02
+-5.9514088e+04 1.5651104e+01 -2.2312850e+01
+-3.2876555e+03 2.3701885e+00 -1.2607100e+00
+-1.8615117e+02 2.3901410e-01 -6.1843717e-02
+-9.6424063e+00 1.7828653e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7433895e+00 1.8381660e-03 4.6192214e-03
+-4.4903161e+01 1.4617541e-02 2.9599776e-02
+-6.1036475e+02 -4.2803432e-03 -6.7686428e-01
+-7.2360360e+03 -2.3719019e+00 -3.0192680e+01
+-6.4141034e+04 -5.4489701e+01 -1.2039278e+03
+-1.4485257e+05 -1.6328080e+02 -4.7526474e+03
+-2.2753199e+05 -2.3645940e+02 -9.7850452e+03
+-2.9233888e+05 -1.9714205e+02 -1.3903976e+04
+-3.3256756e+05 -6.0666101e+01 -1.5164888e+04
+-3.5182249e+05 9.5300033e+01 -1.3260650e+04
+-3.5607226e+05 1.9643837e+02 -9.3627040e+03
+-3.4836709e+05 2.1321357e+02 -5.1836350e+03
+-3.2704900e+05 1.6331007e+02 -2.0447597e+03
+-2.8676819e+05 8.9286669e+01 -4.0281638e+02
+-2.2347464e+05 3.0504007e+01 7.5585782e+01
+-1.4277084e+05 3.4091089e+00 5.1321982e+01
+-6.3509783e+04 -7.7516219e-01 -7.3519802e+00
+-7.1645836e+03 7.6434356e-01 -1.2598684e+00
+-6.0341754e+02 1.7320408e-01 -1.2597915e-01
+-4.4304616e+01 2.3806240e-02 -8.6470877e-03
+-2.7014221e+00 2.2193147e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.2060021e-01 1.3288403e-04 -7.1337425e-04
+-7.1034137e+00 3.4812917e-04 -1.8771799e-02
+-7.4706330e+01 -1.3294232e-02 -3.4716307e-01
+-6.3128063e+02 -2.8195336e-01 -5.3747336e+00
+-3.6081829e+03 -3.1764141e+00 -7.5289970e+01
+-8.2012707e+03 -9.0857441e+00 -2.7635332e+02
+-1.2968861e+04 -1.3272858e+01 -5.6426413e+02
+-1.6735003e+04 -1.1318474e+01 -8.0510477e+02
+-1.9083706e+04 -3.7506241e+00 -8.8446641e+02
+-2.0206069e+04 5.1607032e+00 -7.8007711e+02
+-2.0450196e+04 1.1100246e+01 -5.5686572e+02
+-1.9998075e+04 1.2237359e+01 -3.1385365e+02
+-1.8750215e+04 9.4998394e+00 -1.2887301e+02
+-1.6395692e+04 5.3108915e+00 -2.9768408e+01
+-1.2718148e+04 1.9333427e+00 1.6168130e+00
+-8.0688039e+03 3.1753381e-01 2.5463854e+00
+-3.5640209e+03 -2.5263073e-03 -1.5102445e-01
+-6.2396907e+02 3.8908703e-02 -6.0777135e-02
+-7.3781749e+01 1.1833364e-02 -9.0612134e-03
+-7.0052098e+00 2.0644906e-03 -8.0996239e-04
+-5.1256854e-01 2.2925206e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.4525194e-02 5.1444548e-06 -2.5664903e-04
+-8.6245774e-01 -4.7941434e-05 -4.2692999e-03
+-7.2879057e+00 -1.5911002e-03 -5.3379585e-02
+-4.7547297e+01 -2.0855091e-02 -5.6612099e-01
+-2.0788388e+02 -1.6053273e-01 -4.7549489e+00
+-4.6478999e+02 -4.3837889e-01 -1.6129431e+01
+-7.3709906e+02 -6.4246569e-01 -3.2475556e+01
+-9.5493464e+02 -5.5743167e-01 -4.6415392e+01
+-1.0919156e+03 -1.9517388e-01 -5.1308248e+01
+-1.1575557e+03 2.4254155e-01 -4.5622443e+01
+-1.1717284e+03 5.4122874e-01 -3.2916829e+01
+-1.1451081e+03 6.0479431e-01 -1.8869910e+01
+-1.0718846e+03 4.7509792e-01 -8.0324977e+00
+-9.3440188e+02 2.7074677e-01 -2.0897380e+00
+-7.2171235e+02 1.0359949e-01 -6.6956372e-02
+-4.5641304e+02 2.1008436e-02 1.2140545e-01
+-2.0484652e+02 1.6982891e-03 4.6524940e-03
+-4.6902384e+01 1.8376728e-03 -2.0330207e-03
+-7.1868157e+00 6.6434742e-04 -4.9842731e-04
+-8.4960153e-01 1.3789001e-04 -5.7341737e-05
+-7.3319643e-02 1.7416145e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.4563502e-03 0.0000000e+00 -3.6712540e-05
+-7.5994131e-02 0.0000000e+00 -5.1042149e-04
+-5.4446720e-01 0.0000000e+00 -5.1791312e-03
+-2.9561538e+00 0.0000000e+00 -4.3180250e-02
+-1.0932816e+01 0.0000000e+00 -2.6955904e-01
+-2.3864675e+01 0.0000000e+00 -8.5125354e-01
+-3.7827295e+01 0.0000000e+00 -1.6861347e+00
+-4.9150273e+01 0.0000000e+00 -2.4088175e+00
+-5.6340563e+01 0.0000000e+00 -2.6753172e+00
+-5.9804373e+01 0.0000000e+00 -2.3954758e+00
+-6.0550697e+01 0.0000000e+00 -1.7446968e+00
+-5.9136990e+01 0.0000000e+00 -1.0151571e+00
+-5.5263150e+01 0.0000000e+00 -4.4531182e-01
+-4.8038575e+01 0.0000000e+00 -1.2629677e-01
+-3.6983567e+01 0.0000000e+00 -1.1226693e-02
+-2.3392812e+01 0.0000000e+00 4.9471034e-03
+-1.0749842e+01 0.0000000e+00 7.5863307e-04
+-2.9104884e+00 0.0000000e+00 -4.7474797e-06
+-5.3607872e-01 0.0000000e+00 -1.7841021e-05
+-7.4769331e-02 0.0000000e+00 -2.8872541e-06
+-7.3287356e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.4125345e-03 -7.1352803e-06 -3.6680417e-05
+-7.5554076e-02 3.0578458e-05 -5.0731348e-04
+-5.4133060e-01 1.4855569e-03 -5.1294637e-03
+-2.9388939e+00 2.0303237e-02 -4.2692638e-02
+-1.0867079e+01 1.5789233e-01 -2.6632192e-01
+-2.3721662e+01 4.3252188e-01 -8.4185730e-01
+-3.7634366e+01 6.3646158e-01 -1.6712483e+00
+-4.8982630e+01 5.5569980e-01 -2.3945911e+00
+-5.6265212e+01 1.9760931e-01 -2.6675512e+00
+-5.9837504e+01 -2.4105305e-01 -2.3933674e+00
+-6.0657246e+01 -5.4543330e-01 -1.7413855e+00
+-5.9259814e+01 -6.1405527e-01 -1.0045069e+00
+-5.5355761e+01 -4.8387797e-01 -4.2801771e-01
+-4.8083415e+01 -2.7396356e-01 -1.0921476e-01
+-3.6990707e+01 -1.0140227e-01 -6.7239863e-04
+-2.3384317e+01 -1.7783335e-02 8.6157300e-03
+-1.0742066e+01 -4.8171422e-04 1.3204865e-03
+-2.9073750e+00 -1.8434937e-03 5.0518504e-05
+-5.3531068e-01 -7.0234294e-04 -1.5177261e-05
+-7.4634529e-02 -1.4696843e-04 -3.0111691e-06
+-7.3131237e-03 -1.8623035e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.4119874e-02 -1.5592618e-04 -2.5652925e-04
+-8.5787566e-01 -5.7186279e-04 -4.2361609e-03
+-7.2496638e+00 1.1750755e-02 -5.2743239e-02
+-4.7294020e+01 2.7277652e-01 -5.5849358e-01
+-2.0671696e+02 3.1203613e+00 -4.6878895e+00
+-4.6207889e+02 8.9515418e+00 -1.5918010e+01
+-7.3338770e+02 1.3131991e+01 -3.2124899e+01
+-9.5172333e+02 1.1276336e+01 -4.6056845e+01
+-1.0905104e+03 3.8116906e+00 -5.1076113e+01
+-1.1582490e+03 -5.1048907e+00 -4.5519014e+01
+-1.1738212e+03 -1.1156164e+01 -3.2815478e+01
+-1.1474896e+03 -1.2401086e+01 -1.8646962e+01
+-1.0736612e+03 -9.6621626e+00 -7.6921074e+00
+-9.3524364e+02 -5.3655436e+00 -1.7587708e+00
+-7.2182621e+02 -1.8793800e+00 1.3306400e-01
+-4.5623767e+02 -2.4549589e-01 1.8540850e-01
+-2.0470077e+02 2.7948796e-02 1.1231405e-02
+-4.6851372e+01 -3.9930930e-02 -1.6929356e-03
+-7.1761599e+00 -1.2529645e-02 -5.2150486e-04
+-8.4800735e-01 -2.1989882e-03 -6.3655586e-05
+-7.3156791e-02 -2.4513083e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.1801741e-01 -2.0286097e-03 -7.1012331e-04
+-7.0694498e+00 -1.6762964e-02 -1.8482928e-02
+-7.4358722e+01 -1.3414328e-02 -3.4092557e-01
+-6.2831602e+02 2.2492687e+00 -5.2820231e+00
+-3.5897489e+03 5.3451829e+01 -7.4047507e+01
+-8.1548671e+03 1.6058770e+02 -2.7208727e+02
+-1.2904473e+04 2.3358319e+02 -5.5692596e+02
+-1.6679662e+04 1.9625171e+02 -7.9724267e+02
+-1.9060246e+04 6.1959805e+01 -8.7885127e+02
+-2.0219115e+04 -9.3823049e+01 -7.7708701e+02
+-2.0487187e+04 -1.9684613e+02 -5.5440612e+02
+-2.0039597e+04 -2.1561750e+02 -3.0966794e+02
+-1.8780838e+04 -1.6586466e+02 -1.2284313e+02
+-1.6409851e+04 -9.0067582e+01 -2.3981755e+01
+-1.2719659e+04 -2.9400194e+01 5.0502633e+00
+-8.0655270e+03 -2.0232746e+00 3.5512028e+00
+-3.5615690e+03 1.2340478e+00 -1.0682497e-01
+-6.2325397e+02 -7.9843845e-01 -6.3422756e-02
+-7.3664137e+01 -1.8358119e-01 -9.9830394e-03
+-6.9911019e+00 -2.5374382e-02 -9.1557419e-04
+-5.1135265e-01 -2.3766030e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7309197e+00 -1.9200042e-02 4.7016120e-03
+-4.4709958e+01 -2.3756741e-01 3.2302881e-02
+-6.0788033e+02 -1.8442832e+00 -6.2124619e-01
+-7.2072481e+03 2.0959051e+00 -2.9255738e+01
+-6.3851287e+04 9.1552944e+02 -1.1810806e+03
+-1.4405670e+05 2.8516022e+03 -4.6679672e+03
+-2.2641789e+05 4.0872649e+03 -9.6357541e+03
+-2.9139022e+05 3.3510405e+03 -1.3739206e+04
+-3.3217948e+05 9.7491713e+02 -1.5040250e+04
+-3.5206598e+05 -1.7021386e+03 -1.3188444e+04
+-3.5672291e+05 -3.4262261e+03 -9.3084080e+03
+-3.4908772e+05 -3.6971666e+03 -5.1062223e+03
+-3.2757470e+05 -2.8077086e+03 -1.9386724e+03
+-2.8700551e+05 -1.4895335e+03 -3.0187947e+02
+-2.2349302e+05 -4.4776940e+02 1.3486511e+02
+-1.4271017e+05 4.7946853e+00 6.7379274e+01
+-6.3468740e+04 3.5134432e+01 -7.5645379e+00
+-7.1551233e+03 -1.6449223e+01 -1.3741032e+00
+-6.0231576e+02 -2.5190254e+00 -1.4043737e-01
+-4.4205030e+01 -2.5562014e-01 -9.7777728e-03
+-2.6944189e+00 -1.9157520e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.7601104e+00 -1.2638125e-01 6.5533307e-02
+-1.8804494e+02 -2.2375139e+00 1.3144964e+00
+-3.3142512e+03 -3.5601808e+01 2.2964946e+01
+-5.9881393e+04 -5.7312474e+02 4.0309629e+02
+-8.8680626e+05 -2.1386574e+03 -5.5387437e+03
+-2.2147250e+06 -2.4464170e+03 -2.4737502e+04
+-3.5885483e+06 -3.4535022e+03 -5.1787920e+04
+-4.5628078e+06 -6.1718413e+03 -7.3680290e+04
+-5.0499822e+06 -1.0171145e+04 -8.0070442e+04
+-5.2005284e+06 -1.3972488e+04 -6.9443709e+04
+-5.1943241e+06 -1.6135858e+04 -4.8181296e+04
+-5.1171108e+06 -1.6037148e+04 -2.5587712e+04
+-4.9201299e+06 -1.3988638e+04 -8.9176262e+03
+-4.4373274e+06 -1.0881633e+04 -7.0563993e+02
+-3.5020476e+06 -7.6618462e+03 1.0117698e+03
+-2.1714602e+06 -4.9097304e+03 1.6974488e+02
+-8.7145165e+05 -2.7448714e+03 -4.2874792e+02
+-5.9397150e+04 -5.3758117e+02 -2.4553435e+01
+-3.2800922e+03 -3.3232456e+01 -1.4032979e+00
+-1.8566671e+02 -2.0737985e+00 -6.9585171e-02
+-9.6148648e+00 -1.1628412e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0597040e+01 -3.9056661e-01 1.8097836e-01
+-4.0464072e+02 -7.4536009e+00 3.8151416e+00
+-7.2052754e+03 -1.2873949e+02 6.9820347e+01
+-1.2832407e+05 -2.2323478e+03 1.2635717e+03
+-1.9638817e+06 -1.1498488e+04 -8.9012724e+03
+-4.6271618e+06 -1.8980133e+04 -4.2514130e+04
+-7.3736645e+06 -2.7317850e+04 -8.9858602e+04
+-9.3666889e+06 -3.6516104e+04 -1.2786213e+05
+-1.0428973e+07 -4.5544347e+04 -1.3849502e+05
+-1.0816006e+07 -5.2504995e+04 -1.1940803e+05
+-1.0839856e+07 -5.5640832e+04 -8.2007604e+04
+-1.0650998e+07 -5.4185367e+04 -4.2637782e+04
+-1.0167987e+07 -4.8558915e+04 -1.3931498e+04
+-9.1062358e+06 -4.0020575e+04 -2.1097249e+02
+-7.1830255e+06 -3.0108095e+04 2.1094010e+03
+-4.5208694e+06 -2.0183324e+04 9.0733394e+01
+-1.9185541e+06 -1.1306833e+04 -1.2529234e+03
+-1.2679055e+05 -2.0535366e+03 -6.9162013e+01
+-7.1065406e+03 -1.1787149e+02 -3.7737537e+00
+-3.9828733e+02 -6.7894706e+00 -1.7865122e-01
+-2.0232217e+01 -3.5398032e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1921674e+01 -7.2742551e-01 2.3128061e-01
+-6.2650811e+02 -1.4141797e+01 4.8875396e+00
+-1.1106876e+04 -2.4823421e+02 8.9141143e+01
+-1.9626064e+05 -4.3486546e+03 1.5964586e+03
+-3.0350290e+06 -2.3362506e+04 -1.3205809e+04
+-7.0469018e+06 -4.0004422e+04 -6.2282242e+04
+-1.1155754e+07 -5.7636082e+04 -1.3114537e+05
+-1.4123729e+07 -7.4885674e+04 -1.8603371e+05
+-1.5702926e+07 -8.9937002e+04 -2.0101426e+05
+-1.6279226e+07 -1.0049383e+05 -1.7304844e+05
+-1.6313492e+07 -1.0459324e+05 -1.1878890e+05
+-1.6026619e+07 -1.0141026e+05 -6.1785085e+04
+-1.5300180e+07 -9.1481781e+04 -2.0187485e+04
+-1.3715651e+07 -7.6400828e+04 -2.4259505e+02
+-1.0849297e+07 -5.8303101e+04 3.1788553e+03
+-6.8690055e+06 -3.9457663e+04 2.9306587e+02
+-2.9548175e+06 -2.2131094e+04 -1.6028958e+03
+-1.9345292e+05 -3.9871989e+03 -8.9380212e+01
+-1.0927845e+04 -2.2643790e+02 -4.8928746e+00
+-6.1514060e+02 -1.2830935e+01 -2.3111631e-01
+-3.1277790e+01 -6.5663364e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1065505e+01 -9.1706670e-01 1.0502407e-01
+-8.0370732e+02 -1.7889801e+01 2.2354304e+00
+-1.4196798e+04 -3.1449364e+02 4.0702032e+01
+-2.4994013e+05 -5.5038176e+03 7.2135843e+02
+-3.7918061e+06 -2.9842792e+04 -1.8753453e+04
+-8.8538483e+06 -5.1582202e+04 -8.2592206e+04
+-1.3995153e+07 -7.4225759e+04 -1.7163264e+05
+-1.7642635e+07 -9.5506083e+04 -2.4218662e+05
+-1.9520322e+07 -1.1323921e+05 -2.6121345e+05
+-2.0158878e+07 -1.2515189e+05 -2.2516922e+05
+-2.0166562e+07 -1.2942484e+05 -1.5543188e+05
+-1.9830748e+07 -1.2532514e+05 -8.1957136e+04
+-1.8995370e+07 -1.1340137e+05 -2.7861578e+04
+-1.7107532e+07 -9.5253985e+04 -1.2808051e+03
+-1.3589636e+07 -7.3150957e+04 4.0746383e+03
+-8.6154398e+06 -4.9740734e+04 1.1048521e+03
+-3.6825819e+06 -2.7947430e+04 -8.7422961e+02
+-2.4605955e+05 -5.0397707e+03 -4.9474995e+01
+-1.3948061e+04 -2.8647076e+02 -2.7305057e+00
+-7.8786318e+02 -1.6206567e+01 -1.2904423e-01
+-4.0166810e+01 -8.2647678e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7085756e+01 -7.7612176e-01 -1.6956159e-01
+-9.1982573e+02 -1.5133133e+01 -3.4414703e+00
+-1.6216895e+04 -2.6561323e+02 -6.0541405e+01
+-2.8507958e+05 -4.6363296e+03 -1.0565046e+03
+-4.1985670e+06 -2.5185499e+04 -2.4674205e+04
+-9.9373088e+06 -4.3655484e+04 -1.0080536e+05
+-1.5721872e+07 -6.2729698e+04 -2.0631482e+05
+-1.9740583e+07 -8.0333756e+04 -2.8952109e+05
+-2.1721886e+07 -9.4691451e+04 -3.1182644e+05
+-2.2327510e+07 -1.0413402e+05 -2.6936640e+05
+-2.2288410e+07 -1.0738325e+05 -1.8721118e+05
+-2.1945067e+07 -1.0394062e+05 -1.0027655e+05
+-2.1109412e+07 -9.4215098e+04 -3.5584076e+04
+-1.9115395e+07 -7.9385817e+04 -2.8906353e+03
+-1.5247488e+07 -6.1179173e+04 4.8037930e+03
+-9.6582427e+06 -4.1719707e+04 2.3650942e+03
+-4.0707201e+06 -2.3475858e+04 6.6285019e+02
+-2.8051213e+05 -4.2422914e+03 3.7425194e+01
+-1.5921940e+04 -2.4175834e+02 2.1061567e+00
+-9.0091445e+02 -1.3698111e+01 1.0335814e-01
+-4.6007649e+01 -6.9886147e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0292876e+01 -3.0438574e-01 -4.4309977e-01
+-9.8173359e+02 -5.9302801e+00 -9.0402943e+00
+-1.7297555e+04 -1.0395179e+02 -1.5916711e+02
+-3.0400109e+05 -1.8114681e+03 -2.7663738e+03
+-4.3699360e+06 -9.8414529e+03 -2.9281445e+04
+-1.0470378e+07 -1.7072124e+04 -1.1359000e+05
+-1.6587835e+07 -2.4510236e+04 -2.2987563e+05
+-2.0770807e+07 -3.1322928e+04 -3.2128625e+05
+-2.2761860e+07 -3.6829131e+04 -3.4571133e+05
+-2.3312426e+07 -4.0417567e+04 -2.9912101e+05
+-2.3233267e+07 -4.1630124e+04 -2.0892256e+05
+-2.2898461e+07 -4.0291195e+04 -1.1315107e+05
+-2.2098877e+07 -3.6551505e+04 -4.1316005e+04
+-2.0094291e+07 -3.0843179e+04 -4.2761534e+03
+-1.6075205e+07 -2.3808837e+04 5.3184172e+03
+-1.0169741e+07 -1.6258829e+04 3.5124565e+03
+-4.2328503e+06 -9.1565585e+03 2.1510273e+03
+-2.9909743e+05 -1.6569056e+03 1.2268787e+02
+-1.6979052e+04 -9.4580172e+01 6.9130213e+00
+-9.6120320e+02 -5.3658474e+00 3.3674365e-01
+-4.9117326e+01 -2.7397576e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1277591e+01 3.0438574e-01 -5.5632222e-01
+-1.0007978e+03 5.9302801e+00 -1.1346432e+01
+-1.7631970e+04 1.0395179e+02 -1.9955561e+02
+-3.0989707e+05 1.8114681e+03 -3.4624716e+03
+-4.4142411e+06 9.8414527e+03 -3.1022309e+04
+-1.0627345e+07 1.7072124e+04 -1.1820185e+05
+-1.6846462e+07 2.4510235e+04 -2.3823629e+05
+-2.1074198e+07 3.1322927e+04 -3.3248616e+05
+-2.3059764e+07 3.6829131e+04 -3.5764179e+05
+-2.3586225e+07 4.0417567e+04 -3.0962416e+05
+-2.3491828e+07 4.1630125e+04 -2.1663964e+05
+-2.3162058e+07 4.0291196e+04 -1.1778627e+05
+-2.2380499e+07 3.6551504e+04 -4.3427334e+04
+-2.0381286e+07 3.0843176e+04 -4.8126003e+03
+-1.6321841e+07 2.3808838e+04 5.5089579e+03
+-1.0320181e+07 1.6258830e+04 3.9732204e+03
+-4.2745159e+06 9.1565592e+03 2.7578580e+03
+-3.0489881e+05 1.6569057e+03 1.5766603e+02
+-1.7306622e+04 9.4580171e+01 8.8967675e+00
+-9.7978382e+02 5.3658474e+00 4.3354401e-01
+-5.0072328e+01 2.7397576e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0292876e+01 7.7612176e-01 -4.4309976e-01
+-9.8173359e+02 1.5133134e+01 -9.0402942e+00
+-1.7297555e+04 2.6561323e+02 -1.5916711e+02
+-3.0400109e+05 4.6363296e+03 -2.7663739e+03
+-4.3699360e+06 2.5185499e+04 -2.9281445e+04
+-1.0470378e+07 4.3655483e+04 -1.1359000e+05
+-1.6587835e+07 6.2729696e+04 -2.2987563e+05
+-2.0770807e+07 8.0333756e+04 -3.2128625e+05
+-2.2761860e+07 9.4691452e+04 -3.4571132e+05
+-2.3312426e+07 1.0413402e+05 -2.9912101e+05
+-2.3233267e+07 1.0738325e+05 -2.0892256e+05
+-2.2898461e+07 1.0394062e+05 -1.1315107e+05
+-2.2098877e+07 9.4215096e+04 -4.1316004e+04
+-2.0094291e+07 7.9385815e+04 -4.2761517e+03
+-1.6075205e+07 6.1179174e+04 5.3184172e+03
+-1.0169741e+07 4.1719708e+04 3.5124568e+03
+-4.2328503e+06 2.3475858e+04 2.1510274e+03
+-2.9909743e+05 4.2422914e+03 1.2268785e+02
+-1.6979052e+04 2.4175834e+02 6.9130216e+00
+-9.6120320e+02 1.3698111e+01 3.3674365e-01
+-4.9117326e+01 6.9886147e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7085756e+01 9.1706670e-01 -1.6956159e-01
+-9.1982573e+02 1.7889801e+01 -3.4414701e+00
+-1.6216895e+04 3.1449363e+02 -6.0541397e+01
+-2.8507958e+05 5.5038176e+03 -1.0565049e+03
+-4.1985670e+06 2.9842792e+04 -2.4674206e+04
+-9.9373088e+06 5.1582199e+04 -1.0080536e+05
+-1.5721872e+07 7.4225756e+04 -2.0631482e+05
+-1.9740583e+07 9.5506083e+04 -2.8952109e+05
+-2.1721886e+07 1.1323921e+05 -3.1182645e+05
+-2.2327510e+07 1.2515190e+05 -2.6936640e+05
+-2.2288410e+07 1.2942484e+05 -1.8721118e+05
+-2.1945067e+07 1.2532514e+05 -1.0027654e+05
+-2.1109412e+07 1.1340138e+05 -3.5584076e+04
+-1.9115395e+07 9.5253990e+04 -2.8906350e+03
+-1.5247488e+07 7.3150959e+04 4.8037947e+03
+-9.6582427e+06 4.9740733e+04 2.3650942e+03
+-4.0707201e+06 2.7947431e+04 6.6285009e+02
+-2.8051213e+05 5.0397707e+03 3.7425190e+01
+-1.5921940e+04 2.8647076e+02 2.1061567e+00
+-9.0091445e+02 1.6206567e+01 1.0335816e-01
+-4.6007649e+01 8.2647677e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.1065505e+01 7.2742551e-01 1.0502405e-01
+-8.0370732e+02 1.4141797e+01 2.2354303e+00
+-1.4196798e+04 2.4823422e+02 4.0702033e+01
+-2.4994013e+05 4.3486546e+03 7.2135833e+02
+-3.7918061e+06 2.3362506e+04 -1.8753454e+04
+-8.8538483e+06 4.0004423e+04 -8.2592205e+04
+-1.3995153e+07 5.7636081e+04 -1.7163264e+05
+-1.7642635e+07 7.4885673e+04 -2.4218662e+05
+-1.9520322e+07 8.9937000e+04 -2.6121345e+05
+-2.0158878e+07 1.0049383e+05 -2.2516921e+05
+-2.0166562e+07 1.0459324e+05 -1.5543188e+05
+-1.9830748e+07 1.0141026e+05 -8.1957132e+04
+-1.8995370e+07 9.1481781e+04 -2.7861583e+04
+-1.7107532e+07 7.6400829e+04 -1.2808043e+03
+-1.3589636e+07 5.8303100e+04 4.0746387e+03
+-8.6154398e+06 3.9457662e+04 1.1048532e+03
+-3.6825819e+06 2.2131094e+04 -8.7422971e+02
+-2.4605955e+05 3.9871988e+03 -4.9475001e+01
+-1.3948061e+04 2.2643790e+02 -2.7305057e+00
+-7.8786318e+02 1.2830935e+01 -1.2904426e-01
+-4.0166810e+01 6.5663364e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1921674e+01 3.9056661e-01 2.3128061e-01
+-6.2650811e+02 7.4536010e+00 4.8875395e+00
+-1.1106876e+04 1.2873949e+02 8.9141144e+01
+-1.9626064e+05 2.2323478e+03 1.5964585e+03
+-3.0350290e+06 1.1498488e+04 -1.3205809e+04
+-7.0469018e+06 1.8980135e+04 -6.2282243e+04
+-1.1155754e+07 2.7317852e+04 -1.3114537e+05
+-1.4123729e+07 3.6516106e+04 -1.8603371e+05
+-1.5702926e+07 4.5544347e+04 -2.0101426e+05
+-1.6279226e+07 5.2504994e+04 -1.7304844e+05
+-1.6313492e+07 5.5640831e+04 -1.1878890e+05
+-1.6026619e+07 5.4185368e+04 -6.1785084e+04
+-1.5300180e+07 4.8558915e+04 -2.0187486e+04
+-1.3715651e+07 4.0020574e+04 -2.4259527e+02
+-1.0849297e+07 3.0108095e+04 3.1788552e+03
+-6.8690055e+06 2.0183324e+04 2.9306618e+02
+-2.9548175e+06 1.1306833e+04 -1.6028958e+03
+-1.9345292e+05 2.0535366e+03 -8.9380213e+01
+-1.0927845e+04 1.1787149e+02 -4.8928744e+00
+-6.1514060e+02 6.7894706e+00 -2.3111631e-01
+-3.1277790e+01 3.5398031e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0597040e+01 1.2638125e-01 1.8097835e-01
+-4.0464072e+02 2.2375139e+00 3.8151416e+00
+-7.2052754e+03 3.5601809e+01 6.9820347e+01
+-1.2832407e+05 5.7312474e+02 1.2635716e+03
+-1.9638817e+06 2.1386576e+03 -8.9012723e+03
+-4.6271618e+06 2.4464170e+03 -4.2514130e+04
+-7.3736645e+06 3.4535026e+03 -8.9858601e+04
+-9.3666889e+06 6.1718419e+03 -1.2786213e+05
+-1.0428973e+07 1.0171146e+04 -1.3849502e+05
+-1.0816006e+07 1.3972489e+04 -1.1940803e+05
+-1.0839856e+07 1.6135858e+04 -8.2007604e+04
+-1.0650998e+07 1.6037149e+04 -4.2637782e+04
+-1.0167987e+07 1.3988637e+04 -1.3931498e+04
+-9.1062358e+06 1.0881632e+04 -2.1097171e+02
+-7.1830255e+06 7.6618458e+03 2.1094004e+03
+-4.5208694e+06 4.9097303e+03 9.0733476e+01
+-1.9185541e+06 2.7448714e+03 -1.2529234e+03
+-1.2679055e+05 5.3758117e+02 -6.9162014e+01
+-7.1065406e+03 3.3232456e+01 -3.7737537e+00
+-3.9828733e+02 2.0737985e+00 -1.7865122e-01
+-2.0232217e+01 1.1628412e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.7601104e+00 1.9200042e-02 6.5533306e-02
+-1.8804494e+02 2.3756741e-01 1.3144965e+00
+-3.3142512e+03 1.8442832e+00 2.2964946e+01
+-5.9881393e+04 -2.0959053e+00 4.0309629e+02
+-8.8680626e+05 -9.1552944e+02 -5.5387438e+03
+-2.2147250e+06 -2.8516022e+03 -2.4737503e+04
+-3.5885483e+06 -4.0872648e+03 -5.1787920e+04
+-4.5628078e+06 -3.3510405e+03 -7.3680290e+04
+-5.0499822e+06 -9.7491714e+02 -8.0070442e+04
+-5.2005284e+06 1.7021387e+03 -6.9443709e+04
+-5.1943241e+06 3.4262261e+03 -4.8181296e+04
+-5.1171108e+06 3.6971667e+03 -2.5587712e+04
+-4.9201299e+06 2.8077087e+03 -8.9176263e+03
+-4.4373274e+06 1.4895336e+03 -7.0563982e+02
+-3.5020476e+06 4.4776937e+02 1.0117699e+03
+-2.1714602e+06 -4.7947013e+00 1.6974486e+02
+-8.7145165e+05 -3.5134431e+01 -4.2874791e+02
+-5.9397150e+04 1.6449223e+01 -2.4553435e+01
+-3.2800922e+03 2.5190254e+00 -1.4032979e+00
+-1.8566671e+02 2.5562014e-01 -6.9585171e-02
+-9.6148648e+00 1.9157520e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7309197e+00 2.0286097e-03 4.7016126e-03
+-4.4709958e+01 1.6762964e-02 3.2302884e-02
+-6.0788033e+02 1.3414312e-02 -6.2124623e-01
+-7.2072481e+03 -2.2492689e+00 -2.9255739e+01
+-6.3851287e+04 -5.3451829e+01 -1.1810806e+03
+-1.4405670e+05 -1.6058770e+02 -4.6679672e+03
+-2.2641789e+05 -2.3358319e+02 -9.6357541e+03
+-2.9139022e+05 -1.9625171e+02 -1.3739206e+04
+-3.3217948e+05 -6.1959804e+01 -1.5040250e+04
+-3.5206598e+05 9.3823043e+01 -1.3188444e+04
+-3.5672291e+05 1.9684613e+02 -9.3084080e+03
+-3.4908772e+05 2.1561750e+02 -5.1062223e+03
+-3.2757470e+05 1.6586466e+02 -1.9386725e+03
+-2.8700551e+05 9.0067583e+01 -3.0187948e+02
+-2.2349302e+05 2.9400194e+01 1.3486512e+02
+-1.4271017e+05 2.0232761e+00 6.7379278e+01
+-6.3468740e+04 -1.2340479e+00 -7.5645380e+00
+-7.1551233e+03 7.9843848e-01 -1.3741032e+00
+-6.0231576e+02 1.8358119e-01 -1.4043738e-01
+-4.4205030e+01 2.5374383e-02 -9.7777726e-03
+-2.6944189e+00 2.3766030e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.1801741e-01 1.5592618e-04 -7.1012322e-04
+-7.0694498e+00 5.7186279e-04 -1.8482928e-02
+-7.4358722e+01 -1.1750753e-02 -3.4092558e-01
+-6.2831602e+02 -2.7277652e-01 -5.2820230e+00
+-3.5897489e+03 -3.1203613e+00 -7.4047507e+01
+-8.1548671e+03 -8.9515418e+00 -2.7208727e+02
+-1.2904473e+04 -1.3131992e+01 -5.5692595e+02
+-1.6679662e+04 -1.1276337e+01 -7.9724267e+02
+-1.9060246e+04 -3.8116906e+00 -8.7885127e+02
+-2.0219115e+04 5.1048907e+00 -7.7708701e+02
+-2.0487187e+04 1.1156164e+01 -5.5440612e+02
+-2.0039597e+04 1.2401086e+01 -3.0966794e+02
+-1.8780838e+04 9.6621626e+00 -1.2284313e+02
+-1.6409851e+04 5.3655436e+00 -2.3981756e+01
+-1.2719659e+04 1.8793800e+00 5.0502641e+00
+-8.0655270e+03 2.4549588e-01 3.5512028e+00
+-3.5615690e+03 -2.7948776e-02 -1.0682494e-01
+-6.2325397e+02 3.9930930e-02 -6.3422744e-02
+-7.3664137e+01 1.2529644e-02 -9.9830398e-03
+-6.9911019e+00 2.1989882e-03 -9.1557430e-04
+-5.1135265e-01 2.4513083e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.4119874e-02 7.1352802e-06 -2.5652924e-04
+-8.5787566e-01 -3.0578472e-05 -4.2361608e-03
+-7.2496638e+00 -1.4855571e-03 -5.2743241e-02
+-4.7294020e+01 -2.0303237e-02 -5.5849358e-01
+-2.0671696e+02 -1.5789233e-01 -4.6878895e+00
+-4.6207889e+02 -4.3252188e-01 -1.5918010e+01
+-7.3338770e+02 -6.3646156e-01 -3.2124898e+01
+-9.5172333e+02 -5.5569979e-01 -4.6056845e+01
+-1.0905104e+03 -1.9760931e-01 -5.1076113e+01
+-1.1582490e+03 2.4105305e-01 -4.5519014e+01
+-1.1738212e+03 5.4543331e-01 -3.2815478e+01
+-1.1474896e+03 6.1405528e-01 -1.8646962e+01
+-1.0736612e+03 4.8387797e-01 -7.6921074e+00
+-9.3524364e+02 2.7396357e-01 -1.7587708e+00
+-7.2182621e+02 1.0140228e-01 1.3306402e-01
+-4.5623767e+02 1.7783336e-02 1.8540851e-01
+-2.0470077e+02 4.8171300e-04 1.1231404e-02
+-4.6851372e+01 1.8434940e-03 -1.6929357e-03
+-7.1761599e+00 7.0234296e-04 -5.2150480e-04
+-8.4800735e-01 1.4696843e-04 -6.3655597e-05
+-7.3156791e-02 1.8623035e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.4125345e-03 0.0000000e+00 -3.6680418e-05
+-7.5554076e-02 0.0000000e+00 -5.0731348e-04
+-5.4133060e-01 0.0000000e+00 -5.1294638e-03
+-2.9388939e+00 0.0000000e+00 -4.2692637e-02
+-1.0867079e+01 0.0000000e+00 -2.6632192e-01
+-2.3721662e+01 0.0000000e+00 -8.4185730e-01
+-3.7634366e+01 0.0000000e+00 -1.6712483e+00
+-4.8982630e+01 0.0000000e+00 -2.3945912e+00
+-5.6265212e+01 0.0000000e+00 -2.6675512e+00
+-5.9837504e+01 0.0000000e+00 -2.3933674e+00
+-6.0657246e+01 0.0000000e+00 -1.7413855e+00
+-5.9259814e+01 0.0000000e+00 -1.0045069e+00
+-5.5355761e+01 0.0000000e+00 -4.2801771e-01
+-4.8083415e+01 0.0000000e+00 -1.0921476e-01
+-3.6990707e+01 0.0000000e+00 -6.7239869e-04
+-2.3384317e+01 0.0000000e+00 8.6157301e-03
+-1.0742066e+01 0.0000000e+00 1.3204867e-03
+-2.9073750e+00 0.0000000e+00 5.0518472e-05
+-5.3531068e-01 0.0000000e+00 -1.5177260e-05
+-7.4634529e-02 0.0000000e+00 -3.0111691e-06
+-7.3131237e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.3680296e-03 -8.5944694e-06 -3.5910434e-05
+-7.5111789e-02 1.6002547e-05 -4.9420021e-04
+-5.3821500e-01 1.3705598e-03 -4.9803670e-03
+-2.9219271e+00 1.9442307e-02 -4.1389496e-02
+-1.0802890e+01 1.5250449e-01 -2.5808330e-01
+-2.3581906e+01 4.1931381e-01 -8.1715262e-01
+-3.7444640e+01 6.2071115e-01 -1.6275898e+00
+-4.8815339e+01 5.4817036e-01 -2.3430510e+00
+-5.6186197e+01 2.0365713e-01 -2.6257233e+00
+-5.9864384e+01 -2.2631618e-01 -2.3725270e+00
+-6.0757584e+01 -5.3207501e-01 -1.7401138e+00
+-5.9378237e+01 -6.0897979e-01 -1.0127110e+00
+-5.5445803e+01 -4.8681848e-01 -4.3585083e-01
+-4.8126488e+01 -2.7993585e-01 -1.1284215e-01
+-3.6996140e+01 -1.0599895e-01 -1.4103369e-03
+-2.3374319e+01 -2.0002536e-02 8.5942514e-03
+-1.0733448e+01 -1.3266667e-03 1.3035864e-03
+-2.9040408e+00 -2.0709267e-03 4.0332218e-05
+-5.3450816e-01 -7.4389315e-04 -1.8301662e-05
+-7.4496156e-02 -1.5318533e-04 -3.4893641e-06
+-7.2972894e-03 -1.9323685e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.3705906e-02 -1.7114803e-04 -2.5141407e-04
+-8.5325120e-01 -7.3848002e-04 -4.1213976e-03
+-7.2115977e+00 1.0280642e-02 -5.1097561e-02
+-4.7045214e+01 2.5977585e-01 -5.4023672e-01
+-2.0558164e+02 3.0094639e+00 -4.5325155e+00
+-4.5943964e+02 8.6634334e+00 -1.5415883e+01
+-7.2975190e+02 1.2786845e+01 -3.1217820e+01
+-9.4853164e+02 1.1113265e+01 -4.4974604e+01
+-1.0890430e+03 3.9463130e+00 -5.0184664e+01
+-1.1588259e+03 -4.7786975e+00 -4.5055344e+01
+-1.1757964e+03 -1.0854451e+01 -3.2757796e+01
+-1.1497885e+03 -1.2273501e+01 -1.8794402e+01
+-1.0753916e+03 -9.7073613e+00 -7.8434509e+00
+-9.3605537e+02 -5.4805868e+00 -1.8310632e+00
+-7.2191055e+02 -1.9701582e+00 1.1744370e-01
+-4.5603541e+02 -2.8889015e-01 1.8407062e-01
+-2.0454016e+02 1.1656120e-02 1.0473725e-02
+-4.6797356e+01 -4.3659673e-02 -1.9541577e-03
+-7.1651665e+00 -1.3111095e-02 -5.8031481e-04
+-8.4639119e-01 -2.2785867e-03 -7.1083150e-05
+-7.2993577e-02 -2.5362062e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.1535422e-01 -2.1370426e-03 -6.9729221e-04
+-7.0348895e+00 -1.8105707e-02 -1.7890397e-02
+-7.4010709e+01 -2.7052385e-02 -3.2857081e-01
+-6.2539928e+02 2.1050365e+00 -5.0905681e+00
+-3.5718898e+03 5.1464685e+01 -7.1404937e+01
+-8.1098819e+03 1.5510241e+02 -2.6282908e+02
+-1.2841654e+04 2.2701752e+02 -5.3987884e+02
+-1.6624891e+04 1.9320382e+02 -7.7674061e+02
+-1.9035846e+04 6.4563068e+01 -8.6175706e+02
+-2.0230202e+04 -8.7577869e+01 -7.6787137e+02
+-2.0522157e+04 -1.9097027e+02 -5.5278524e+02
+-2.0079710e+04 -2.1291141e+02 -3.1203386e+02
+-1.8810710e+04 -1.6638324e+02 -1.2548600e+02
+-1.6423557e+04 -9.1975332e+01 -2.5285442e+01
+-1.2720717e+04 -3.0955052e+01 4.7567150e+00
+-8.0618155e+03 -2.7602630e+00 3.5165715e+00
+-3.5588749e+03 9.5935467e-01 -1.2521387e-01
+-6.2250870e+02 -8.4578747e-01 -6.8356561e-02
+-7.3544839e+01 -1.8994095e-01 -1.0825170e-02
+-6.9770251e+00 -2.6179156e-02 -1.0014493e-03
+-5.1015230e-01 -2.4554168e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7178720e+00 -1.9803369e-02 4.6186465e-03
+-4.4510494e+01 -2.4618673e-01 3.3234964e-02
+-6.0535953e+02 -1.9486879e+00 -5.6592686e-01
+-7.1786798e+03 8.1156353e-01 -2.7840794e+01
+-6.3571860e+04 8.8000629e+02 -1.1358085e+03
+-1.4328831e+05 2.7481579e+03 -4.4972512e+03
+-2.2533515e+05 3.9644495e+03 -9.3174204e+03
+-2.9045499e+05 3.2952335e+03 -1.3354684e+04
+-3.3177709e+05 1.0243519e+03 -1.4716861e+04
+-3.5227612e+05 -1.5850277e+03 -1.3009273e+04
+-3.5733852e+05 -3.3146748e+03 -9.2699562e+03
+-3.4978402e+05 -3.6425714e+03 -5.1440046e+03
+-3.2808793e+05 -2.8123312e+03 -1.9848246e+03
+-2.8723588e+05 -1.5210849e+03 -3.2535005e+02
+-2.2350435e+05 -4.7444421e+02 1.2947493e+02
+-1.4264236e+05 -7.8102427e+00 6.6719838e+01
+-6.3423520e+04 3.0383831e+01 -7.9243888e+00
+-7.1454926e+03 -1.6944962e+01 -1.4559007e+00
+-6.0122135e+02 -2.5899006e+00 -1.5034659e-01
+-4.4107488e+01 -2.6350964e-01 -1.0558536e-02
+-2.6876246e+00 -1.9808252e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.7156304e+00 -1.2883190e-01 6.4548512e-02
+-1.8725166e+02 -2.2766863e+00 1.3017650e+00
+-3.3016203e+03 -3.6143257e+01 2.2865427e+01
+-5.9680503e+04 -5.8038110e+02 4.0316846e+02
+-8.7779619e+05 -2.2068043e+03 -5.5200981e+03
+-2.1905371e+06 -2.6184641e+03 -2.4341384e+04
+-3.5542511e+06 -3.6911484e+03 -5.0982969e+04
+-4.5311496e+06 -6.3901501e+03 -7.2955813e+04
+-5.0315106e+06 -1.0324181e+04 -8.0078870e+04
+-5.1976070e+06 -1.4088164e+04 -7.0497099e+04
+-5.2018079e+06 -1.6279110e+04 -5.0048786e+04
+-5.1268635e+06 -1.6249812e+04 -2.7688854e+04
+-4.9256773e+06 -1.4258534e+04 -1.0695188e+04
+-4.4364953e+06 -1.1156731e+04 -1.8916388e+03
+-3.4969081e+06 -7.8887917e+03 3.8321718e+02
+-2.1659496e+06 -5.0628501e+03 -7.2289779e+01
+-8.6821889e+05 -2.8276232e+03 -4.4704026e+02
+-5.9282550e+04 -5.5275242e+02 -2.5832790e+01
+-3.2727709e+03 -3.4253884e+01 -1.4900876e+00
+-1.8520262e+02 -2.1431664e+00 -7.4518209e-02
+-9.5887124e+00 -1.2047893e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0505985e+01 -3.9711922e-01 1.7723255e-01
+-4.0292713e+02 -7.5645049e+00 3.7514646e+00
+-7.1761897e+03 -1.3038305e+02 6.8905634e+01
+-1.2782975e+05 -2.2561372e+03 1.2503406e+03
+-1.9438021e+06 -1.1650744e+04 -9.3853100e+03
+-4.5767032e+06 -1.9318088e+04 -4.3144226e+04
+-7.3018757e+06 -2.7828557e+04 -9.0795667e+04
+-9.2967388e+06 -3.7127408e+04 -1.3000851e+05
+-1.0380280e+07 -4.6206737e+04 -1.4281925e+05
+-1.0793600e+07 -5.3231912e+04 -1.2608206e+05
+-1.0835610e+07 -5.6474740e+04 -9.0133028e+04
+-1.0651549e+07 -5.5134763e+04 -5.0696658e+04
+-1.0162826e+07 -4.9564691e+04 -2.0551572e+04
+-9.0922531e+06 -4.0973018e+04 -4.7179782e+03
+-7.1643702e+06 -3.0895166e+04 -3.6698500e+02
+-4.5046893e+06 -2.0735537e+04 -8.7431939e+02
+-1.9093206e+06 -1.1616922e+04 -1.3186071e+03
+-1.2647702e+05 -2.1115820e+03 -7.3307822e+01
+-7.0885329e+03 -1.2153805e+02 -4.0313322e+00
+-3.9724936e+02 -7.0201705e+00 -1.9230230e-01
+-2.0178050e+01 -3.6694827e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1802073e+01 -7.3920193e-01 2.2248189e-01
+-6.2423450e+02 -1.4345351e+01 4.7297204e+00
+-1.1067936e+04 -2.5131660e+02 8.6723638e+01
+-1.9559536e+05 -4.3940523e+03 1.5593578e+03
+-3.0071916e+06 -2.3618337e+04 -1.4310436e+04
+-6.9757801e+06 -4.0538457e+04 -6.4211739e+04
+-1.1055032e+07 -5.8466097e+04 -1.3429639e+05
+-1.4027446e+07 -7.5960329e+04 -1.9174599e+05
+-1.5639117e+07 -9.1208919e+04 -2.1055265e+05
+-1.6254674e+07 -1.0196070e+05 -1.8637522e+05
+-1.6315839e+07 -1.0626725e+05 -1.3423513e+05
+-1.6035950e+07 -1.0325582e+05 -7.6783043e+04
+-1.5300693e+07 -9.3381956e+04 -3.2452655e+04
+-1.3702264e+07 -7.8177582e+04 -8.6349066e+03
+-1.0827587e+07 -5.9774950e+04 -1.4649271e+03
+-6.8491899e+06 -4.0501705e+04 -1.5143651e+03
+-2.9435152e+06 -2.2724463e+04 -1.7091549e+03
+-1.9307774e+05 -4.0998306e+03 -9.6086754e+01
+-1.0906670e+04 -2.3349166e+02 -5.3079990e+00
+-6.1394756e+02 -1.3268214e+01 -2.5299279e-01
+-3.1216952e+01 -6.8077911e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0962013e+01 -9.3186843e-01 8.9174678e-02
+-8.0176421e+02 -1.8147400e+01 1.9481130e+00
+-1.4164027e+04 -3.1841830e+02 3.6278377e+01
+-2.4939003e+05 -5.5618686e+03 6.5400174e+02
+-3.7642718e+06 -3.0153757e+04 -2.0344919e+04
+-8.7770419e+06 -5.2211715e+04 -8.5478030e+04
+-1.3887502e+07 -7.5211091e+04 -1.7638432e+05
+-1.7547629e+07 -9.6816201e+04 -2.5053518e+05
+-1.9472511e+07 -1.1483356e+05 -2.7472138e+05
+-2.0164870e+07 -1.2701653e+05 -2.4367343e+05
+-2.0208297e+07 -1.3154754e+05 -1.7665798e+05
+-1.9880537e+07 -1.2764127e+05 -1.0248326e+05
+-1.9030823e+07 -1.1576452e+05 -4.4647343e+04
+-1.7120111e+07 -9.7455895e+04 -1.2789792e+04
+-1.3584920e+07 -7.4978792e+04 -2.3021103e+03
+-8.6058372e+06 -5.1044401e+04 -1.3620425e+03
+-3.6769896e+06 -2.8693027e+04 -9.8575413e+02
+-2.4590592e+05 -5.1825919e+03 -5.6624756e+01
+-1.3939575e+04 -2.9542266e+02 -3.1795602e+00
+-7.8739735e+02 -1.6760617e+01 -1.5299317e-01
+-4.0143621e+01 -8.5696125e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7035814e+01 -7.8871850e-01 -1.9309244e-01
+-9.1894536e+02 -1.5352834e+01 -3.8680253e+00
+-1.6203140e+04 -2.6896695e+02 -6.7073889e+01
+-2.8486787e+05 -4.6860229e+03 -1.1546242e+03
+-4.1778960e+06 -2.5445949e+04 -2.6533390e+04
+-9.8677539e+06 -4.4174326e+04 -1.0412573e+05
+-1.5625913e+07 -6.3542393e+04 -2.1175412e+05
+-1.9668618e+07 -8.1424537e+04 -2.9911149e+05
+-2.1712393e+07 -9.6031961e+04 -3.2740630e+05
+-2.2385462e+07 -1.0570846e+05 -2.9076238e+05
+-2.2389753e+07 -1.0917196e+05 -2.1179459e+05
+-2.2054539e+07 -1.0588299e+05 -1.2408070e+05
+-2.1197996e+07 -9.6189205e+04 -5.5072113e+04
+-1.9170440e+07 -8.1222983e+04 -1.6259588e+04
+-1.5273426e+07 -6.2706409e+04 -2.5944307e+03
+-9.6685968e+06 -4.2812353e+04 -4.7230812e+02
+-4.0763620e+06 -2.4102996e+04 5.7950325e+02
+-2.8078408e+05 -4.3630710e+03 3.1932194e+01
+-1.5937838e+04 -2.4934364e+02 1.7515546e+00
+-9.0183942e+02 -1.4168080e+01 8.3985603e-02
+-4.6055904e+01 -7.2472147e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0299535e+01 -3.0934924e-01 -4.7271004e-01
+-9.8196594e+02 -6.0169059e+00 -9.5762962e+00
+-1.7303483e+04 -1.0527501e+02 -1.6734017e+02
+-3.0413525e+05 -1.8310917e+03 -2.8881070e+03
+-4.3570851e+06 -9.9434491e+03 -3.1241528e+04
+-1.0411522e+07 -1.7273870e+04 -1.1699763e+05
+-1.6508135e+07 -2.4826085e+04 -2.3541401e+05
+-2.0724722e+07 -3.1748111e+04 -3.3117546e+05
+-2.2789724e+07 -3.7353310e+04 -3.6198949e+05
+-2.3417431e+07 -4.1033878e+04 -3.2165938e+05
+-2.3386832e+07 -4.2329485e+04 -2.3493736e+05
+-2.3059829e+07 -4.1049035e+04 -1.3840284e+05
+-2.2234138e+07 -3.7320493e+04 -6.2010481e+04
+-2.0187496e+07 -3.1558512e+04 -1.8469927e+04
+-1.6129456e+07 -2.4403915e+04 -2.5211826e+03
+-1.0198919e+07 -1.6685183e+04 5.2959849e+02
+-4.2491259e+06 -9.4016747e+03 2.1038807e+03
+-2.9977179e+05 -1.7042300e+03 1.1940265e+02
+-1.7018127e+04 -9.7555844e+01 6.6895846e+00
+-9.6345530e+02 -5.5503819e+00 3.2399105e-01
+-4.9233921e+01 -2.8413487e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1308032e+01 3.0934924e-01 -5.8825792e-01
+-1.0014957e+03 6.0169059e+00 -1.1924199e+01
+-1.7646091e+04 1.0527501e+02 -2.0835276e+02
+-3.1017444e+05 1.8310917e+03 -3.5931580e+03
+-4.4047180e+06 9.9434491e+03 -3.3003219e+04
+-1.0573294e+07 1.7273870e+04 -1.2160199e+05
+-1.6773974e+07 2.4826084e+04 -2.4374191e+05
+-2.1039055e+07 3.1748112e+04 -3.4238101e+05
+-2.3102814e+07 3.7353311e+04 -3.7403723e+05
+-2.3709914e+07 4.1033882e+04 -3.3241665e+05
+-2.3665897e+07 4.2329487e+04 -2.4300592e+05
+-2.3343754e+07 4.1049035e+04 -1.4340780e+05
+-2.2534115e+07 3.7320493e+04 -6.4433253e+04
+-2.0489618e+07 3.1558509e+04 -1.9217362e+04
+-1.6387426e+07 2.4403915e+04 -2.4400138e+03
+-1.0356950e+07 1.6685185e+04 9.5868725e+02
+-4.2950873e+06 9.4016750e+03 2.7267402e+03
+-3.0573589e+05 1.7042300e+03 1.5536797e+02
+-1.7355098e+04 9.7555843e+01 8.7326155e+00
+-9.8257578e+02 5.5503820e+00 4.2381466e-01
+-5.0216783e+01 2.8413487e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0299535e+01 7.8871850e-01 -4.7271003e-01
+-9.8196594e+02 1.5352834e+01 -9.5762961e+00
+-1.7303483e+04 2.6896695e+02 -1.6734017e+02
+-3.0413525e+05 4.6860229e+03 -2.8881071e+03
+-4.3570851e+06 2.5445948e+04 -3.1241528e+04
+-1.0411522e+07 4.4174326e+04 -1.1699763e+05
+-1.6508135e+07 6.3542392e+04 -2.3541402e+05
+-2.0724722e+07 8.1424536e+04 -3.3117546e+05
+-2.2789724e+07 9.6031964e+04 -3.6198949e+05
+-2.3417431e+07 1.0570845e+05 -3.2165938e+05
+-2.3386832e+07 1.0917196e+05 -2.3493736e+05
+-2.3059829e+07 1.0588299e+05 -1.3840284e+05
+-2.2234138e+07 9.6189203e+04 -6.2010480e+04
+-2.0187496e+07 8.1222983e+04 -1.8469927e+04
+-1.6129456e+07 6.2706409e+04 -2.5211807e+03
+-1.0198919e+07 4.2812353e+04 5.2959774e+02
+-4.2491260e+06 2.4102997e+04 2.1038806e+03
+-2.9977179e+05 4.3630710e+03 1.1940264e+02
+-1.7018127e+04 2.4934364e+02 6.6895851e+00
+-9.6345530e+02 1.4168079e+01 3.2399104e-01
+-4.9233921e+01 7.2472147e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.7035814e+01 9.3186843e-01 -1.9309245e-01
+-9.1894536e+02 1.8147400e+01 -3.8680257e+00
+-1.6203140e+04 3.1841830e+02 -6.7073878e+01
+-2.8486787e+05 5.5618686e+03 -1.1546243e+03
+-4.1778960e+06 3.0153757e+04 -2.6533389e+04
+-9.8677539e+06 5.2211715e+04 -1.0412573e+05
+-1.5625913e+07 7.5211090e+04 -2.1175412e+05
+-1.9668618e+07 9.6816201e+04 -2.9911148e+05
+-2.1712393e+07 1.1483355e+05 -3.2740630e+05
+-2.2385462e+07 1.2701654e+05 -2.9076238e+05
+-2.2389753e+07 1.3154755e+05 -2.1179459e+05
+-2.2054539e+07 1.2764127e+05 -1.2408070e+05
+-2.1197996e+07 1.1576452e+05 -5.5072113e+04
+-1.9170440e+07 9.7455897e+04 -1.6259587e+04
+-1.5273426e+07 7.4978793e+04 -2.5944292e+03
+-9.6685968e+06 5.1044402e+04 -4.7230717e+02
+-4.0763620e+06 2.8693027e+04 5.7950296e+02
+-2.8078408e+05 5.1825919e+03 3.1932190e+01
+-1.5937838e+04 2.9542266e+02 1.7515549e+00
+-9.0183942e+02 1.6760617e+01 8.3985621e-02
+-4.6055904e+01 8.5696125e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0962013e+01 7.3920193e-01 8.9174677e-02
+-8.0176421e+02 1.4345352e+01 1.9481130e+00
+-1.4164027e+04 2.5131660e+02 3.6278378e+01
+-2.4939003e+05 4.3940523e+03 6.5400171e+02
+-3.7642718e+06 2.3618336e+04 -2.0344919e+04
+-8.7770419e+06 4.0538457e+04 -8.5478030e+04
+-1.3887502e+07 5.8466097e+04 -1.7638432e+05
+-1.7547629e+07 7.5960329e+04 -2.5053518e+05
+-1.9472511e+07 9.1208918e+04 -2.7472138e+05
+-2.0164870e+07 1.0196070e+05 -2.4367343e+05
+-2.0208297e+07 1.0626725e+05 -1.7665798e+05
+-1.9880537e+07 1.0325582e+05 -1.0248326e+05
+-1.9030823e+07 9.3381959e+04 -4.4647343e+04
+-1.7120111e+07 7.8177584e+04 -1.2789792e+04
+-1.3584920e+07 5.9774950e+04 -2.3021079e+03
+-8.6058372e+06 4.0501704e+04 -1.3620429e+03
+-3.6769896e+06 2.2724462e+04 -9.8575417e+02
+-2.4590592e+05 4.0998306e+03 -5.6624756e+01
+-1.3939575e+04 2.3349166e+02 -3.1795603e+00
+-7.8739735e+02 1.3268214e+01 -1.5299317e-01
+-4.0143621e+01 6.8077911e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1802073e+01 3.9711922e-01 2.2248189e-01
+-6.2423450e+02 7.5645049e+00 4.7297203e+00
+-1.1067936e+04 1.3038305e+02 8.6723636e+01
+-1.9559536e+05 2.2561373e+03 1.5593579e+03
+-3.0071916e+06 1.1650744e+04 -1.4310435e+04
+-6.9757801e+06 1.9318089e+04 -6.4211740e+04
+-1.1055032e+07 2.7828558e+04 -1.3429638e+05
+-1.4027446e+07 3.7127410e+04 -1.9174599e+05
+-1.5639117e+07 4.6206738e+04 -2.1055265e+05
+-1.6254674e+07 5.3231910e+04 -1.8637522e+05
+-1.6315839e+07 5.6474740e+04 -1.3423513e+05
+-1.6035950e+07 5.5134762e+04 -7.6783040e+04
+-1.5300693e+07 4.9564689e+04 -3.2452656e+04
+-1.3702264e+07 4.0973017e+04 -8.6349076e+03
+-1.0827587e+07 3.0895166e+04 -1.4649266e+03
+-6.8491899e+06 2.0735537e+04 -1.5143653e+03
+-2.9435152e+06 1.1616922e+04 -1.7091549e+03
+-1.9307774e+05 2.1115820e+03 -9.6086755e+01
+-1.0906670e+04 1.2153805e+02 -5.3079991e+00
+-6.1394756e+02 7.0201705e+00 -2.5299279e-01
+-3.1216952e+01 3.6694827e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0505985e+01 1.2883190e-01 1.7723255e-01
+-4.0292713e+02 2.2766863e+00 3.7514646e+00
+-7.1761897e+03 3.6143257e+01 6.8905635e+01
+-1.2782975e+05 5.8038110e+02 1.2503406e+03
+-1.9438021e+06 2.2068043e+03 -9.3853099e+03
+-4.5767032e+06 2.6184640e+03 -4.3144227e+04
+-7.3018757e+06 3.6911482e+03 -9.0795667e+04
+-9.2967388e+06 6.3901490e+03 -1.3000851e+05
+-1.0380280e+07 1.0324180e+04 -1.4281925e+05
+-1.0793600e+07 1.4088166e+04 -1.2608206e+05
+-1.0835610e+07 1.6279112e+04 -9.0133028e+04
+-1.0651549e+07 1.6249813e+04 -5.0696658e+04
+-1.0162826e+07 1.4258533e+04 -2.0551573e+04
+-9.0922531e+06 1.1156731e+04 -4.7179767e+03
+-7.1643702e+06 7.8887914e+03 -3.6698505e+02
+-4.5046893e+06 5.0628502e+03 -8.7431940e+02
+-1.9093206e+06 2.8276232e+03 -1.3186071e+03
+-1.2647702e+05 5.5275242e+02 -7.3307824e+01
+-7.0885329e+03 3.4253884e+01 -4.0313320e+00
+-3.9724936e+02 2.1431664e+00 -1.9230230e-01
+-2.0178050e+01 1.2047893e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.7156304e+00 1.9803370e-02 6.4548512e-02
+-1.8725166e+02 2.4618674e-01 1.3017650e+00
+-3.3016203e+03 1.9486880e+00 2.2865427e+01
+-5.9680503e+04 -8.1156209e-01 4.0316848e+02
+-8.7779619e+05 -8.8000630e+02 -5.5200983e+03
+-2.1905371e+06 -2.7481579e+03 -2.4341384e+04
+-3.5542511e+06 -3.9644495e+03 -5.0982969e+04
+-4.5311496e+06 -3.2952336e+03 -7.2955813e+04
+-5.0315106e+06 -1.0243519e+03 -8.0078871e+04
+-5.1976070e+06 1.5850279e+03 -7.0497098e+04
+-5.2018079e+06 3.3146746e+03 -5.0048786e+04
+-5.1268635e+06 3.6425714e+03 -2.7688854e+04
+-4.9256773e+06 2.8123312e+03 -1.0695189e+04
+-4.4364953e+06 1.5210850e+03 -1.8916385e+03
+-3.4969081e+06 4.7444421e+02 3.8321712e+02
+-2.1659496e+06 7.8102191e+00 -7.2289811e+01
+-8.6821889e+05 -3.0383832e+01 -4.4704025e+02
+-5.9282550e+04 1.6944961e+01 -2.5832791e+01
+-3.2727709e+03 2.5899006e+00 -1.4900875e+00
+-1.8520262e+02 2.6350964e-01 -7.4518210e-02
+-9.5887124e+00 1.9808252e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7178720e+00 2.1370425e-03 4.6186467e-03
+-4.4510494e+01 1.8105706e-02 3.3234967e-02
+-6.0535953e+02 2.7052371e-02 -5.6592689e-01
+-7.1786798e+03 -2.1050365e+00 -2.7840793e+01
+-6.3571861e+04 -5.1464685e+01 -1.1358085e+03
+-1.4328831e+05 -1.5510241e+02 -4.4972512e+03
+-2.2533515e+05 -2.2701751e+02 -9.3174204e+03
+-2.9045499e+05 -1.9320382e+02 -1.3354684e+04
+-3.3177709e+05 -6.4563071e+01 -1.4716861e+04
+-3.5227612e+05 8.7577866e+01 -1.3009273e+04
+-3.5733852e+05 1.9097026e+02 -9.2699562e+03
+-3.4978402e+05 2.1291141e+02 -5.1440046e+03
+-3.2808793e+05 1.6638324e+02 -1.9848246e+03
+-2.8723588e+05 9.1975333e+01 -3.2535005e+02
+-2.2350435e+05 3.0955053e+01 1.2947494e+02
+-1.4264236e+05 2.7602637e+00 6.6719842e+01
+-6.3423520e+04 -9.5935413e-01 -7.9243887e+00
+-7.1454926e+03 8.4578747e-01 -1.4559007e+00
+-6.0122135e+02 1.8994097e-01 -1.5034659e-01
+-4.4107488e+01 2.6179156e-02 -1.0558536e-02
+-2.6876246e+00 2.4554168e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.1535422e-01 1.7114803e-04 -6.9729219e-04
+-7.0348895e+00 7.3848009e-04 -1.7890398e-02
+-7.4010709e+01 -1.0280642e-02 -3.2857080e-01
+-6.2539928e+02 -2.5977585e-01 -5.0905681e+00
+-3.5718898e+03 -3.0094639e+00 -7.1404937e+01
+-8.1098819e+03 -8.6634334e+00 -2.6282908e+02
+-1.2841654e+04 -1.2786845e+01 -5.3987884e+02
+-1.6624891e+04 -1.1113265e+01 -7.7674061e+02
+-1.9035846e+04 -3.9463129e+00 -8.6175706e+02
+-2.0230202e+04 4.7786974e+00 -7.6787137e+02
+-2.0522157e+04 1.0854452e+01 -5.5278524e+02
+-2.0079710e+04 1.2273501e+01 -3.1203386e+02
+-1.8810710e+04 9.7073613e+00 -1.2548600e+02
+-1.6423557e+04 5.4805870e+00 -2.5285442e+01
+-1.2720717e+04 1.9701581e+00 4.7567151e+00
+-8.0618155e+03 2.8889010e-01 3.5165719e+00
+-3.5588749e+03 -1.1656153e-02 -1.2521391e-01
+-6.2250870e+02 4.3659663e-02 -6.8356533e-02
+-7.3544839e+01 1.3111093e-02 -1.0825174e-02
+-6.9770251e+00 2.2785868e-03 -1.0014492e-03
+-5.1015230e-01 2.5362063e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.3705906e-02 8.5944698e-06 -2.5141406e-04
+-8.5325120e-01 -1.6002555e-05 -4.1213976e-03
+-7.2115977e+00 -1.3705599e-03 -5.1097561e-02
+-4.7045214e+01 -1.9442307e-02 -5.4023672e-01
+-2.0558164e+02 -1.5250449e-01 -4.5325155e+00
+-4.5943964e+02 -4.1931381e-01 -1.5415883e+01
+-7.2975190e+02 -6.2071115e-01 -3.1217820e+01
+-9.4853164e+02 -5.4817036e-01 -4.4974604e+01
+-1.0890430e+03 -2.0365713e-01 -5.0184664e+01
+-1.1588259e+03 2.2631618e-01 -4.5055344e+01
+-1.1757964e+03 5.3207503e-01 -3.2757796e+01
+-1.1497885e+03 6.0897979e-01 -1.8794402e+01
+-1.0753916e+03 4.8681850e-01 -7.8434508e+00
+-9.3605537e+02 2.7993585e-01 -1.8310632e+00
+-7.2191055e+02 1.0599895e-01 1.1744370e-01
+-4.5603541e+02 2.0002537e-02 1.8407063e-01
+-2.0454016e+02 1.3266644e-03 1.0473721e-02
+-4.6797356e+01 2.0709267e-03 -1.9541563e-03
+-7.1651665e+00 7.4389308e-04 -5.8031492e-04
+-8.4639119e-01 1.5318533e-04 -7.1083153e-05
+-7.2993577e-02 1.9323684e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.3680296e-03 0.0000000e+00 -3.5910434e-05
+-7.5111789e-02 0.0000000e+00 -4.9420021e-04
+-5.3821500e-01 0.0000000e+00 -4.9803669e-03
+-2.9219271e+00 0.0000000e+00 -4.1389496e-02
+-1.0802890e+01 0.0000000e+00 -2.5808330e-01
+-2.3581906e+01 0.0000000e+00 -8.1715262e-01
+-3.7444640e+01 0.0000000e+00 -1.6275898e+00
+-4.8815339e+01 0.0000000e+00 -2.3430510e+00
+-5.6186197e+01 0.0000000e+00 -2.6257233e+00
+-5.9864384e+01 0.0000000e+00 -2.3725270e+00
+-6.0757584e+01 0.0000000e+00 -1.7401138e+00
+-5.9378237e+01 0.0000000e+00 -1.0127110e+00
+-5.5445803e+01 0.0000000e+00 -4.3585084e-01
+-4.8126488e+01 0.0000000e+00 -1.1284215e-01
+-3.6996140e+01 0.0000000e+00 -1.4103364e-03
+-2.3374319e+01 0.0000000e+00 8.5942512e-03
+-1.0733448e+01 0.0000000e+00 1.3035864e-03
+-2.9040408e+00 0.0000000e+00 4.0332273e-05
+-5.3450816e-01 0.0000000e+00 -1.8301667e-05
+-7.4496156e-02 0.0000000e+00 -3.4893643e-06
+-7.2972894e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.3239551e-03 -9.5577238e-06 -3.4516744e-05
+-7.4677699e-02 3.9672134e-06 -4.7257419e-04
+-5.3518803e-01 1.2462904e-03 -4.7458356e-03
+-2.9055908e+00 1.8296872e-02 -3.9378969e-02
+-1.0741428e+01 1.4464335e-01 -2.4548434e-01
+-2.3447848e+01 3.9953590e-01 -7.7907908e-01
+-3.7261196e+01 5.9620473e-01 -1.5587272e+00
+-4.8650659e+01 5.3526401e-01 -2.2586711e+00
+-5.6103759e+01 2.1258969e-01 -2.5536986e+00
+-5.9883197e+01 -2.0008308e-01 -2.3348022e+00
+-6.0848988e+01 -5.0317562e-01 -1.7402222e+00
+-5.9490257e+01 -5.9096231e-01 -1.0372400e+00
+-5.5533141e+01 -4.8417812e-01 -4.6572378e-01
+-4.8169549e+01 -2.8792234e-01 -1.3474021e-01
+-3.7002461e+01 -1.1627512e-01 -1.2144051e-02
+-2.3364938e+01 -2.6825287e-02 5.3004320e-03
+-1.0725032e+01 -3.8867211e-03 7.7100773e-04
+-2.9007756e+00 -2.4656174e-03 -2.8543340e-05
+-5.3372640e-01 -7.8367812e-04 -2.6617083e-05
+-7.4362268e-02 -1.5622438e-04 -4.2807480e-06
+-7.2820563e-03 -1.9513895e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.3294182e-02 -1.7904174e-04 -2.4224052e-04
+-8.4869796e-01 -8.5227900e-04 -3.9392278e-03
+-7.1745611e+00 8.8716421e-03 -4.8601195e-02
+-4.6805903e+01 2.4323581e-01 -5.1285178e-01
+-2.0449862e+02 2.8492762e+00 -4.3005016e+00
+-4.5691787e+02 8.2382516e+00 -1.4660988e+01
+-7.2625012e+02 1.2258813e+01 -2.9825376e+01
+-9.4540202e+02 1.0838384e+01 -4.3258109e+01
+-1.0875166e+03 4.1393264e+00 -4.8711292e+01
+-1.1592498e+03 -4.2187060e+00 -4.4268747e+01
+-1.1775998e+03 -1.0237270e+01 -3.2731323e+01
+-1.1519645e+03 -1.1883709e+01 -1.9262565e+01
+-1.0770719e+03 -9.6408336e+00 -8.4256500e+00
+-9.3686994e+02 -5.6403517e+00 -2.2586550e+00
+-7.2201472e+02 -2.1819671e+00 -8.8799770e-02
+-4.5584608e+02 -4.2982440e-01 1.2486865e-01
+-2.0438312e+02 -3.9221523e-02 3.1657280e-03
+-4.6744609e+01 -4.9288709e-02 -2.7577941e-03
+-7.1545149e+00 -1.3521847e-02 -6.7119081e-04
+-8.4483748e-01 -2.3016857e-03 -7.9430277e-05
+-7.2837655e-02 -2.5486615e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.1268572e-01 -2.1683705e-03 -6.7917424e-04
+-7.0006426e+00 -1.8699026e-02 -1.7079241e-02
+-7.3670601e+01 -3.6965542e-02 -3.1134962e-01
+-6.2259167e+02 1.9404598e+00 -4.8161854e+00
+-3.5549286e+03 4.8625712e+01 -6.7553820e+01
+-8.0670863e+03 1.4714032e+02 -2.4925148e+02
+-1.2781406e+04 2.1716160e+02 -5.1440243e+02
+-1.6571410e+04 1.8816711e+02 -7.4521228e+02
+-1.9010539e+04 6.8200196e+01 -8.3458061e+02
+-2.0238666e+04 -7.7226381e+01 -7.5310889e+02
+-2.0554140e+04 -1.7957190e+02 -5.5179128e+02
+-2.0117691e+04 -2.0562177e+02 -3.2007213e+02
+-1.8839739e+04 -1.6496529e+02 -1.3571817e+02
+-1.6437363e+04 -9.4725442e+01 -3.2826586e+01
+-1.2722166e+04 -3.4732735e+01 1.1735427e+00
+-8.0583451e+03 -5.2894618e+00 2.5627224e+00
+-3.5562305e+03 7.8991928e-02 -1.9992157e-01
+-6.2178408e+02 -8.9842762e-01 -7.5397712e-02
+-7.3430127e+01 -1.9203992e-01 -1.1591199e-02
+-6.9636116e+00 -2.6238054e-02 -1.0682802e-03
+-5.0901642e-01 -2.4590300e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.7046495e+00 -1.9758432e-02 4.3676099e-03
+-4.4310587e+01 -2.4642584e-01 3.2187826e-02
+-6.0286976e+02 -1.9777955e+00 -5.1675143e-01
+-7.1509945e+03 -1.9264369e-01 -2.6068918e+01
+-6.3307782e+04 8.2976824e+02 -1.0712895e+03
+-1.4256051e+05 2.6005128e+03 -4.2524670e+03
+-2.2430099e+05 3.7835582e+03 -8.8530243e+03
+-2.8954540e+05 3.2049284e+03 -1.2779370e+04
+-3.3136062e+05 1.0921271e+03 -1.4219765e+04
+-3.5244110e+05 -1.3966220e+03 -1.2735382e+04
+-3.5790206e+05 -3.1076627e+03 -9.2437600e+03
+-3.5044311e+05 -3.5087988e+03 -5.2814884e+03
+-3.2858678e+05 -2.7835987e+03 -2.1640106e+03
+-2.8746864e+05 -1.5678890e+03 -4.5808479e+02
+-2.2352317e+05 -5.4109484e+02 6.7092257e+01
+-1.4257894e+05 -5.2917775e+01 5.1292295e+01
+-6.3378755e+04 1.5035878e+01 -8.4300597e+00
+-7.1362042e+03 -1.7108358e+01 -1.5085723e+00
+-6.0018031e+02 -2.5856248e+00 -1.5602561e-01
+-4.4015612e+01 -2.6313128e-01 -1.1007842e-02
+-2.6812734e+00 -1.9818063e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.6698476e+00 -1.2729083e-01 6.1749642e-02
+-1.8644250e+02 -2.2452977e+00 1.2514626e+00
+-3.2888705e+03 -3.5565393e+01 2.2089270e+01
+-5.9479983e+04 -5.6970715e+02 3.9108415e+02
+-8.6900278e+05 -2.1950255e+03 -5.3775325e+03
+-2.1671895e+06 -2.6677067e+03 -2.3456890e+04
+-3.5209613e+06 -3.7452585e+03 -4.9217881e+04
+-4.4998772e+06 -6.3339254e+03 -7.0951383e+04
+-5.0124336e+06 -1.0095001e+04 -7.8841334e+04
+-5.1934108e+06 -1.3731471e+04 -7.0702655e+04
+-5.2080547e+06 -1.5911193e+04 -5.1652363e+04
+-5.1360092e+06 -1.5978089e+04 -3.0037439e+04
+-4.9314117e+06 -1.4124298e+04 -1.2962331e+04
+-4.4363869e+06 -1.1130514e+04 -3.5081124e+03
+-3.4925946e+06 -7.9078519e+03 -4.5490561e+02
+-2.1610378e+06 -5.0773631e+03 -3.4227151e+02
+-8.6527174e+05 -2.8241604e+03 -4.5022316e+02
+-5.9174094e+04 -5.4956487e+02 -2.6222342e+01
+-3.2659205e+03 -3.4133924e+01 -1.5245254e+00
+-1.8477270e+02 -2.1407901e+00 -7.6784941e-02
+-9.5646948e+00 -1.2062062e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0410532e+01 -3.9148445e-01 1.6874040e-01
+-4.0114549e+02 -7.4433992e+00 3.5852059e+00
+-7.1462093e+03 -1.2803135e+02 6.6070697e+01
+-1.2732427e+05 -2.2108673e+03 1.2017564e+03
+-1.9237769e+06 -1.1434242e+04 -9.5842407e+03
+-4.5272264e+06 -1.9018941e+04 -4.2709869e+04
+-7.2312603e+06 -2.7406060e+04 -8.9664513e+04
+-9.2268862e+06 -3.6501124e+04 -1.2934995e+05
+-1.0330113e+07 -4.5353915e+04 -1.4425844e+05
+-1.0768855e+07 -5.2242078e+04 -1.3049291e+05
+-1.0829482e+07 -5.5510957e+04 -9.7021415e+04
+-1.0651708e+07 -5.4345345e+04 -5.8495299e+04
+-1.0158954e+07 -4.9016133e+04 -2.7475736e+04
+-9.0806253e+06 -4.0641331e+04 -9.5927357e+03
+-7.1481803e+06 -3.0706846e+04 -2.9836324e+03
+-4.4903410e+06 -2.0621730e+04 -1.7876496e+03
+-1.9010509e+06 -1.1544378e+04 -1.3370889e+03
+-1.2619014e+05 -2.0987415e+03 -7.4792199e+01
+-7.0722118e+03 -1.2110685e+02 -4.1403421e+00
+-3.9631860e+02 -7.0131319e+00 -1.9876381e-01
+-2.0129996e+01 -3.6743783e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1673453e+01 -7.2828238e-01 2.0817851e-01
+-6.2181244e+02 -1.4108541e+01 4.4512645e+00
+-1.1026863e+04 -2.4668664e+02 8.2033251e+01
+-1.9490007e+05 -4.3046605e+03 1.4805383e+03
+-2.9790830e+06 -2.3137630e+04 -1.4924722e+04
+-6.9055355e+06 -3.9780943e+04 -6.4407407e+04
+-1.0955314e+07 -5.7411612e+04 -1.3411949e+05
+-1.3930558e+07 -7.4581011e+04 -1.9292761e+05
+-1.5572519e+07 -8.9542776e+04 -2.1533764e+05
+-1.6226309e+07 -1.0015577e+05 -1.9578947e+05
+-1.6315345e+07 -1.0453956e+05 -1.4725538e+05
+-1.6044919e+07 -1.0179688e+05 -9.0834462e+04
+-1.5303551e+07 -9.2286568e+04 -4.4706059e+04
+-1.3692928e+07 -7.7432354e+04 -1.7250691e+04
+-1.0810105e+07 -5.9300232e+04 -6.1394643e+03
+-6.8325586e+06 -4.0210204e+04 -3.1823022e+03
+-2.9339323e+06 -2.2558419e+04 -1.7511295e+03
+-1.9275433e+05 -4.0741619e+03 -9.9122716e+01
+-1.0888750e+04 -2.3263254e+02 -5.5169147e+00
+-6.1295897e+02 -1.3253756e+01 -2.6487869e-01
+-3.1167620e+01 -6.8164819e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0844724e+01 -9.1797715e-01 7.2405072e-02
+-7.9958873e+02 -1.7846143e+01 1.6345260e+00
+-1.4127811e+04 -3.1253644e+02 3.1268505e+01
+-2.4878959e+05 -5.4486312e+03 5.7479222e+02
+-3.7360795e+06 -2.9525441e+04 -2.1229716e+04
+-8.7008598e+06 -5.1189182e+04 -8.6003603e+04
+-1.3780458e+07 -7.3792695e+04 -1.7666621e+05
+-1.7451042e+07 -9.5018613e+04 -2.5281558e+05
+-1.9420296e+07 -1.1273838e+05 -2.8183455e+05
+-2.0165222e+07 -1.2479953e+05 -2.5683816e+05
+-2.0245784e+07 -1.2943834e+05 -1.9445325e+05
+-1.9929437e+07 -1.2583972e+05 -1.2151110e+05
+-1.9069046e+07 -1.1437490e+05 -6.1200035e+04
+-1.7137819e+07 -9.6475276e+04 -2.4449463e+04
+-1.3585676e+07 -7.4334176e+04 -8.6596192e+03
+-8.6004096e+06 -5.0646450e+04 -3.6509807e+03
+-3.6736721e+06 -2.8472664e+04 -1.0542581e+03
+-2.4582330e+05 -5.1497974e+03 -6.1243274e+01
+-1.3935649e+04 -2.9431859e+02 -3.4826482e+00
+-7.8722248e+02 -1.6741543e+01 -1.6972781e-01
+-4.0136977e+01 -8.5802004e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6968272e+01 -7.7696051e-01 -2.0855823e-01
+-9.1776523e+02 -1.5098272e+01 -4.1365648e+00
+-1.6184871e+04 -2.6400914e+02 -7.0933291e+01
+-2.8458876e+05 -4.5908735e+03 -1.2078013e+03
+-4.1562229e+06 -2.4912376e+04 -2.7494025e+04
+-9.7985480e+06 -4.3296123e+04 -1.0459294e+05
+-1.5530113e+07 -6.2326606e+04 -2.1185823e+05
+-1.9594095e+07 -7.9902692e+04 -3.0149686e+05
+-2.1696936e+07 -9.4283679e+04 -3.3540916e+05
+-2.2435965e+07 -1.0387682e+05 -3.0582890e+05
+-2.2485290e+07 -1.0743403e+05 -2.3229662e+05
+-2.2162198e+07 -1.0439123e+05 -1.4608599e+05
+-2.1289161e+07 -9.5025265e+04 -7.4270382e+04
+-1.9230980e+07 -8.0389185e+04 -2.9817258e+04
+-1.5305421e+07 -6.2151345e+04 -1.0004760e+04
+-9.6836289e+06 -4.2468769e+04 -3.1503377e+03
+-4.0845577e+06 -2.3914683e+04 4.8744570e+02
+-2.8113703e+05 -4.3354451e+03 2.6048775e+01
+-1.5959078e+04 -2.4841079e+02 1.3805858e+00
+-9.0311252e+02 -1.4151899e+01 6.4044718e-02
+-4.6124265e+01 -7.2561360e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0286279e+01 -3.0474408e-01 -4.8547278e-01
+-9.8185700e+02 -5.9173219e+00 -9.7753561e+00
+-1.7304226e+04 -1.0333857e+02 -1.6970337e+02
+-3.0419109e+05 -1.7939955e+03 -2.9107512e+03
+-4.3430033e+06 -9.7347094e+03 -3.2170237e+04
+-1.0352818e+07 -1.6928969e+04 -1.1724136e+05
+-1.6428264e+07 -2.4349093e+04 -2.3508990e+05
+-2.0675377e+07 -3.1153933e+04 -3.3318373e+05
+-2.2810509e+07 -3.6674585e+04 -3.7000781e+05
+-2.3513667e+07 -4.0325608e+04 -3.3732227e+05
+-2.3533384e+07 -4.1658194e+04 -2.5654564e+05
+-2.3218545e+07 -4.0471722e+04 -1.6174949e+05
+-2.2371591e+07 -3.6868023e+04 -8.2453808e+04
+-2.0286170e+07 -3.1232491e+04 -3.2936684e+04
+-1.6189922e+07 -2.4185825e+04 -1.0436427e+04
+-1.0232940e+07 -1.6550031e+04 -2.3344856e+03
+-4.2680433e+06 -9.3278723e+03 1.9960757e+03
+-3.0053045e+05 -1.6934604e+03 1.1274599e+02
+-1.7062881e+04 -9.7191920e+01 6.2815146e+00
+-9.6608409e+02 -5.5440941e+00 3.0249467e-01
+-4.9372553e+01 -2.8448680e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1317794e+01 3.0474407e-01 -5.9972595e-01
+-1.0018385e+03 5.9173219e+00 -1.2091539e+01
+-1.7654802e+04 1.0333857e+02 -2.1005749e+02
+-3.1036978e+05 1.7939956e+03 -3.6027167e+03
+-4.3938849e+06 9.7347097e+03 -3.3905192e+04
+-1.0519325e+07 1.6928969e+04 -1.2173240e+05
+-1.6701196e+07 2.4349092e+04 -2.4320904e+05
+-2.1000399e+07 3.1153932e+04 -3.4417285e+05
+-2.3138383e+07 3.6674584e+04 -3.8195275e+05
+-2.3824354e+07 4.0325611e+04 -3.4816343e+05
+-2.3832505e+07 4.1658194e+04 -2.6487222e+05
+-2.3522465e+07 4.0471724e+04 -1.6710512e+05
+-2.2689739e+07 3.6868022e+04 -8.5216546e+04
+-2.0603364e+07 3.1232489e+04 -3.3936284e+04
+-1.6459239e+07 2.4185825e+04 -1.0495287e+04
+-1.0398589e+07 1.6550032e+04 -1.9567452e+03
+-4.3183133e+06 9.3278725e+03 2.6134770e+03
+-3.0665779e+05 1.6934604e+03 1.4845732e+02
+-1.7409338e+04 9.7191920e+01 8.3133107e+00
+-9.8575256e+02 5.5440941e+00 4.0189568e-01
+-5.0383861e+01 2.8448680e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0286279e+01 7.7696051e-01 -4.8547277e-01
+-9.8185700e+02 1.5098272e+01 -9.7753563e+00
+-1.7304226e+04 2.6400914e+02 -1.6970336e+02
+-3.0419109e+05 4.5908735e+03 -2.9107511e+03
+-4.3430033e+06 2.4912376e+04 -3.2170239e+04
+-1.0352818e+07 4.3296123e+04 -1.1724136e+05
+-1.6428264e+07 6.2326606e+04 -2.3508990e+05
+-2.0675377e+07 7.9902692e+04 -3.3318373e+05
+-2.2810509e+07 9.4283681e+04 -3.7000781e+05
+-2.3513667e+07 1.0387682e+05 -3.3732227e+05
+-2.3533384e+07 1.0743403e+05 -2.5654564e+05
+-2.3218545e+07 1.0439122e+05 -1.6174949e+05
+-2.2371591e+07 9.5025258e+04 -8.2453808e+04
+-2.0286170e+07 8.0389184e+04 -3.2936685e+04
+-1.6189922e+07 6.2151346e+04 -1.0436425e+04
+-1.0232940e+07 4.2468770e+04 -2.3344854e+03
+-4.2680433e+06 2.3914684e+04 1.9960757e+03
+-3.0053045e+05 4.3354452e+03 1.1274598e+02
+-1.7062881e+04 2.4841079e+02 6.2815148e+00
+-9.6608409e+02 1.4151899e+01 3.0249467e-01
+-4.9372553e+01 7.2561361e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6968272e+01 9.1797716e-01 -2.0855824e-01
+-9.1776523e+02 1.7846143e+01 -4.1365644e+00
+-1.6184871e+04 3.1253643e+02 -7.0933285e+01
+-2.8458876e+05 5.4486312e+03 -1.2078014e+03
+-4.1562229e+06 2.9525441e+04 -2.7494026e+04
+-9.7985480e+06 5.1189182e+04 -1.0459294e+05
+-1.5530113e+07 7.3792695e+04 -2.1185823e+05
+-1.9594095e+07 9.5018615e+04 -3.0149686e+05
+-2.1696936e+07 1.1273838e+05 -3.3540916e+05
+-2.2435965e+07 1.2479953e+05 -3.0582891e+05
+-2.2485290e+07 1.2943834e+05 -2.3229662e+05
+-2.2162198e+07 1.2583972e+05 -1.4608600e+05
+-2.1289161e+07 1.1437490e+05 -7.4270378e+04
+-1.9230980e+07 9.6475275e+04 -2.9817255e+04
+-1.5305421e+07 7.4334176e+04 -1.0004759e+04
+-9.6836289e+06 5.0646450e+04 -3.1503371e+03
+-4.0845577e+06 2.8472664e+04 4.8744565e+02
+-2.8113703e+05 5.1497974e+03 2.6048769e+01
+-1.5959078e+04 2.9431859e+02 1.3805858e+00
+-9.0311252e+02 1.6741543e+01 6.4044728e-02
+-4.6124265e+01 8.5802004e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0844724e+01 7.2828238e-01 7.2405066e-02
+-7.9958873e+02 1.4108541e+01 1.6345259e+00
+-1.4127811e+04 2.4668664e+02 3.1268514e+01
+-2.4878959e+05 4.3046605e+03 5.7479221e+02
+-3.7360795e+06 2.3137629e+04 -2.1229716e+04
+-8.7008598e+06 3.9780943e+04 -8.6003604e+04
+-1.3780458e+07 5.7411613e+04 -1.7666621e+05
+-1.7451042e+07 7.4581012e+04 -2.5281557e+05
+-1.9420296e+07 8.9542775e+04 -2.8183455e+05
+-2.0165222e+07 1.0015577e+05 -2.5683816e+05
+-2.0245784e+07 1.0453956e+05 -1.9445325e+05
+-1.9929437e+07 1.0179687e+05 -1.2151110e+05
+-1.9069046e+07 9.2286571e+04 -6.1200035e+04
+-1.7137819e+07 7.7432356e+04 -2.4449461e+04
+-1.3585676e+07 5.9300233e+04 -8.6596184e+03
+-8.6004096e+06 4.0210204e+04 -3.6509808e+03
+-3.6736721e+06 2.2558419e+04 -1.0542580e+03
+-2.4582330e+05 4.0741619e+03 -6.1243277e+01
+-1.3935649e+04 2.3263254e+02 -3.4826484e+00
+-7.8722248e+02 1.3253756e+01 -1.6972780e-01
+-4.0136977e+01 6.8164819e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1673453e+01 3.9148445e-01 2.0817852e-01
+-6.2181244e+02 7.4433992e+00 4.4512643e+00
+-1.1026863e+04 1.2803135e+02 8.2033253e+01
+-1.9490007e+05 2.2108673e+03 1.4805383e+03
+-2.9790830e+06 1.1434242e+04 -1.4924721e+04
+-6.9055355e+06 1.9018941e+04 -6.4407407e+04
+-1.0955314e+07 2.7406060e+04 -1.3411948e+05
+-1.3930558e+07 3.6501124e+04 -1.9292761e+05
+-1.5572519e+07 4.5353915e+04 -2.1533764e+05
+-1.6226309e+07 5.2242077e+04 -1.9578947e+05
+-1.6315345e+07 5.5510957e+04 -1.4725538e+05
+-1.6044919e+07 5.4345345e+04 -9.0834461e+04
+-1.5303551e+07 4.9016135e+04 -4.4706060e+04
+-1.3692928e+07 4.0641331e+04 -1.7250691e+04
+-1.0810105e+07 3.0706845e+04 -6.1394640e+03
+-6.8325586e+06 2.0621730e+04 -3.1823023e+03
+-2.9339323e+06 1.1544378e+04 -1.7511296e+03
+-1.9275433e+05 2.0987415e+03 -9.9122717e+01
+-1.0888750e+04 1.2110685e+02 -5.5169148e+00
+-6.1295897e+02 7.0131321e+00 -2.6487869e-01
+-3.1167620e+01 3.6743783e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0410532e+01 1.2729083e-01 1.6874040e-01
+-4.0114549e+02 2.2452977e+00 3.5852059e+00
+-7.1462093e+03 3.5565394e+01 6.6070698e+01
+-1.2732427e+05 5.6970716e+02 1.2017564e+03
+-1.9237769e+06 2.1950256e+03 -9.5842403e+03
+-4.5272264e+06 2.6677066e+03 -4.2709870e+04
+-7.2312603e+06 3.7452589e+03 -8.9664513e+04
+-9.2268862e+06 6.3339236e+03 -1.2934995e+05
+-1.0330113e+07 1.0095001e+04 -1.4425844e+05
+-1.0768855e+07 1.3731472e+04 -1.3049291e+05
+-1.0829482e+07 1.5911195e+04 -9.7021414e+04
+-1.0651708e+07 1.5978091e+04 -5.8495298e+04
+-1.0158954e+07 1.4124296e+04 -2.7475736e+04
+-9.0806253e+06 1.1130514e+04 -9.5927351e+03
+-7.1481803e+06 7.9078517e+03 -2.9836324e+03
+-4.4903410e+06 5.0773631e+03 -1.7876497e+03
+-1.9010509e+06 2.8241604e+03 -1.3370889e+03
+-1.2619014e+05 5.4956487e+02 -7.4792203e+01
+-7.0722118e+03 3.4133925e+01 -4.1403415e+00
+-3.9631860e+02 2.1407900e+00 -1.9876382e-01
+-2.0129996e+01 1.2062062e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.6698476e+00 1.9758432e-02 6.1749642e-02
+-1.8644250e+02 2.4642583e-01 1.2514626e+00
+-3.2888705e+03 1.9777955e+00 2.2089271e+01
+-5.9479983e+04 1.9264330e-01 3.9108413e+02
+-8.6900278e+05 -8.2976824e+02 -5.3775325e+03
+-2.1671895e+06 -2.6005128e+03 -2.3456890e+04
+-3.5209613e+06 -3.7835582e+03 -4.9217881e+04
+-4.4998772e+06 -3.2049283e+03 -7.0951383e+04
+-5.0124336e+06 -1.0921270e+03 -7.8841334e+04
+-5.1934108e+06 1.3966220e+03 -7.0702654e+04
+-5.2080547e+06 3.1076625e+03 -5.1652363e+04
+-5.1360092e+06 3.5087989e+03 -3.0037439e+04
+-4.9314117e+06 2.7835988e+03 -1.2962331e+04
+-4.4363869e+06 1.5678890e+03 -3.5081122e+03
+-3.4925946e+06 5.4109486e+02 -4.5490556e+02
+-2.1610378e+06 5.2917746e+01 -3.4227153e+02
+-8.6527174e+05 -1.5035881e+01 -4.5022316e+02
+-5.9174094e+04 1.7108357e+01 -2.6222342e+01
+-3.2659205e+03 2.5856249e+00 -1.5245254e+00
+-1.8477270e+02 2.6313127e-01 -7.6784941e-02
+-9.5646948e+00 1.9818064e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.7046495e+00 2.1683705e-03 4.3676091e-03
+-4.4310587e+01 1.8699026e-02 3.2187839e-02
+-6.0286976e+02 3.6965539e-02 -5.1675143e-01
+-7.1509945e+03 -1.9404598e+00 -2.6068919e+01
+-6.3307782e+04 -4.8625711e+01 -1.0712895e+03
+-1.4256051e+05 -1.4714032e+02 -4.2524670e+03
+-2.2430099e+05 -2.1716159e+02 -8.8530243e+03
+-2.8954540e+05 -1.8816710e+02 -1.2779370e+04
+-3.3136062e+05 -6.8200201e+01 -1.4219766e+04
+-3.5244110e+05 7.7226381e+01 -1.2735382e+04
+-3.5790206e+05 1.7957191e+02 -9.2437599e+03
+-3.5044311e+05 2.0562175e+02 -5.2814884e+03
+-3.2858678e+05 1.6496529e+02 -2.1640106e+03
+-2.8746864e+05 9.4725442e+01 -4.5808479e+02
+-2.2352317e+05 3.4732735e+01 6.7092266e+01
+-1.4257894e+05 5.2894605e+00 5.1292296e+01
+-6.3378755e+04 -7.8991999e-02 -8.4300593e+00
+-7.1362042e+03 8.9842754e-01 -1.5085722e+00
+-6.0018031e+02 1.9203992e-01 -1.5602561e-01
+-4.4015612e+01 2.6238053e-02 -1.1007841e-02
+-2.6812734e+00 2.4590299e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.1268572e-01 1.7904176e-04 -6.7917432e-04
+-7.0006426e+00 8.5227907e-04 -1.7079240e-02
+-7.3670601e+01 -8.8716417e-03 -3.1134961e-01
+-6.2259167e+02 -2.4323582e-01 -4.8161854e+00
+-3.5549286e+03 -2.8492762e+00 -6.7553820e+01
+-8.0670863e+03 -8.2382517e+00 -2.4925148e+02
+-1.2781406e+04 -1.2258813e+01 -5.1440243e+02
+-1.6571410e+04 -1.0838384e+01 -7.4521227e+02
+-1.9010539e+04 -4.1393268e+00 -8.3458061e+02
+-2.0238666e+04 4.2187059e+00 -7.5310889e+02
+-2.0554140e+04 1.0237270e+01 -5.5179129e+02
+-2.0117691e+04 1.1883709e+01 -3.2007213e+02
+-1.8839739e+04 9.6408333e+00 -1.3571817e+02
+-1.6437363e+04 5.6403517e+00 -3.2826586e+01
+-1.2722166e+04 2.1819671e+00 1.1735426e+00
+-8.0583451e+03 4.2982438e-01 2.5627225e+00
+-3.5562305e+03 3.9221499e-02 -1.9992162e-01
+-6.2178408e+02 4.9288708e-02 -7.5397702e-02
+-7.3430127e+01 1.3521846e-02 -1.1591199e-02
+-6.9636116e+00 2.3016856e-03 -1.0682801e-03
+-5.0901642e-01 2.5486615e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.3294182e-02 9.5577237e-06 -2.4224053e-04
+-8.4869796e-01 -3.9672103e-06 -3.9392277e-03
+-7.1745611e+00 -1.2462904e-03 -4.8601195e-02
+-4.6805903e+01 -1.8296872e-02 -5.1285178e-01
+-2.0449862e+02 -1.4464335e-01 -4.3005017e+00
+-4.5691787e+02 -3.9953590e-01 -1.4660988e+01
+-7.2625012e+02 -5.9620473e-01 -2.9825376e+01
+-9.4540202e+02 -5.3526404e-01 -4.3258109e+01
+-1.0875166e+03 -2.1258969e-01 -4.8711292e+01
+-1.1592498e+03 2.0008308e-01 -4.4268747e+01
+-1.1775998e+03 5.0317563e-01 -3.2731323e+01
+-1.1519645e+03 5.9096233e-01 -1.9262565e+01
+-1.0770719e+03 4.8417813e-01 -8.4256499e+00
+-9.3686994e+02 2.8792234e-01 -2.2586550e+00
+-7.2201472e+02 1.1627510e-01 -8.8799773e-02
+-4.5584608e+02 2.6825284e-02 1.2486865e-01
+-2.0438312e+02 3.8867170e-03 3.1657272e-03
+-4.6744609e+01 2.4656172e-03 -2.7577947e-03
+-7.1545149e+00 7.8367815e-04 -6.7119079e-04
+-8.4483748e-01 1.5622439e-04 -7.9430259e-05
+-7.2837655e-02 1.9513894e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.3239551e-03 0.0000000e+00 -3.4516745e-05
+-7.4677699e-02 0.0000000e+00 -4.7257420e-04
+-5.3518803e-01 0.0000000e+00 -4.7458356e-03
+-2.9055908e+00 0.0000000e+00 -3.9378969e-02
+-1.0741428e+01 0.0000000e+00 -2.4548434e-01
+-2.3447848e+01 0.0000000e+00 -7.7907908e-01
+-3.7261196e+01 0.0000000e+00 -1.5587272e+00
+-4.8650659e+01 0.0000000e+00 -2.2586710e+00
+-5.6103759e+01 0.0000000e+00 -2.5536986e+00
+-5.9883197e+01 0.0000000e+00 -2.3348022e+00
+-6.0848988e+01 0.0000000e+00 -1.7402222e+00
+-5.9490257e+01 0.0000000e+00 -1.0372400e+00
+-5.5533141e+01 0.0000000e+00 -4.6572378e-01
+-4.8169549e+01 0.0000000e+00 -1.3474021e-01
+-3.7002461e+01 0.0000000e+00 -1.2144050e-02
+-2.3364938e+01 0.0000000e+00 5.3004311e-03
+-1.0725032e+01 0.0000000e+00 7.7100804e-04
+-2.9007756e+00 0.0000000e+00 -2.8543317e-05
+-5.3372640e-01 0.0000000e+00 -2.6617070e-05
+-7.4362268e-02 0.0000000e+00 -4.2807492e-06
+-7.2820563e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.2812805e-03 -1.0063416e-05 -3.2611231e-05
+-7.4260646e-02 -5.7239102e-06 -4.4394064e-04
+-5.3230553e-01 1.1140243e-03 -4.4404564e-03
+-2.8901567e+00 1.6902553e-02 -3.6777144e-02
+-1.0683628e+01 1.3464783e-01 -2.2922498e-01
+-2.3321429e+01 3.7412047e-01 -7.2976358e-01
+-3.7086506e+01 5.6413903e-01 -1.4685930e+00
+-4.8490406e+01 5.1756177e-01 -2.1464077e+00
+-5.6018081e+01 2.2368677e-01 -2.4557730e+00
+-5.9892460e+01 -1.6428350e-01 -2.2822272e+00
+-6.0929268e+01 -4.6104777e-01 -1.7408991e+00
+-5.9594344e+01 -5.6166996e-01 -1.0751414e+00
+-5.5617876e+01 -4.7636416e-01 -5.1404267e-01
+-4.8214331e+01 -2.9719058e-01 -1.7206982e-01
+-3.7012112e+01 -1.3105502e-01 -3.1364230e-02
+-2.3358159e+01 -3.7363559e-02 -7.7937392e-04
+-1.0717801e+01 -7.8078672e-03 -2.0247311e-04
+-2.8978536e+00 -2.9766889e-03 -1.4780590e-04
+-5.3301738e-01 -8.1746053e-04 -3.9367876e-05
+-7.4240353e-02 -1.5594963e-04 -5.3333634e-06
+-7.2681806e-03 -1.9208968e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.2894172e-02 -1.8019906e-04 -2.2987411e-04
+-8.4431248e-01 -9.1773608e-04 -3.7033481e-03
+-7.1392569e+00 7.5207423e-03 -4.5414274e-02
+-4.6580086e+01 2.2359358e-01 -4.7792234e-01
+-2.0348400e+02 2.6466163e+00 -4.0045083e+00
+-4.5454946e+02 7.6958621e+00 -1.3694662e+01
+-7.2292869e+02 1.1573449e+01 -2.8025402e+01
+-9.4236808e+02 1.0464053e+01 -4.1005840e+01
+-1.0859330e+03 4.3757222e+00 -4.6741446e+01
+-1.1594905e+03 -3.4650631e+00 -4.3199944e+01
+-1.1791876e+03 -9.3526216e+00 -3.2720550e+01
+-1.1539868e+03 -1.1266292e+01 -1.9993571e+01
+-1.0787028e+03 -9.4709641e+00 -9.3680528e+00
+-9.3771996e+02 -5.8293152e+00 -2.9859064e+00
+-7.2218522e+02 -2.4898080e+00 -4.5664597e-01
+-4.5570713e+02 -6.4943017e-01 1.6477156e-02
+-2.0424727e+02 -1.1743676e-01 -9.7479181e-03
+-4.6697218e+01 -5.6087486e-02 -4.0280061e-03
+-7.1448482e+00 -1.3723164e-02 -7.8909411e-04
+-8.4342501e-01 -2.2690870e-03 -8.8434446e-05
+-7.2696052e-02 -2.4924671e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.1007781e-01 -2.1290111e-03 -6.5909484e-04
+-6.9674885e+00 -1.8607970e-02 -1.6122971e-02
+-7.3345269e+01 -4.3490871e-02 -2.9044351e-01
+-6.1994162e+02 1.7580927e+00 -4.4749976e+00
+-3.5391103e+03 4.5053735e+01 -6.2700360e+01
+-8.0270775e+03 1.3706925e+02 -2.3208263e+02
+-1.2724513e+04 2.0448676e+02 -4.8188944e+02
+-1.6519778e+04 1.8136624e+02 -7.0442313e+02
+-1.8984331e+04 7.2598319e+01 -7.9885372e+02
+-2.0243959e+04 -6.3491749e+01 -7.3353376e+02
+-2.0582356e+04 -1.6351272e+02 -5.5115764e+02
+-2.0152985e+04 -1.9436957e+02 -3.3276037e+02
+-1.8867922e+04 -1.6176174e+02 -1.5228667e+02
+-1.6451824e+04 -9.8035361e+01 -4.5619729e+01
+-1.2724808e+04 -4.0274003e+01 -5.1939571e+00
+-8.0557543e+03 -9.2627477e+00 8.2862730e-01
+-3.5539185e+03 -1.2777662e+00 -3.2305348e-01
+-6.2112931e+02 -9.4966590e-01 -8.4246049e-02
+-7.3325978e+01 -1.8983866e-01 -1.2279780e-02
+-6.9514513e+00 -2.5592339e-02 -1.1168299e-03
+-5.0798971e-01 -2.3927820e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.6916119e+00 -1.9121143e-02 3.9545372e-03
+-4.4115309e+01 -2.3902514e-01 2.9093460e-02
+-6.0046771e+02 -1.9384489e+00 -4.7799804e-01
+-7.1247212e+03 -9.4179818e-01 -2.4051422e+01
+-6.3062735e+04 7.6687403e+02 -9.9091882e+02
+-1.4188327e+05 2.4153972e+03 -3.9464840e+03
+-2.2332868e+05 3.5531178e+03 -8.2674229e+03
+-2.8867080e+05 3.0840919e+03 -1.2044752e+04
+-3.3092982e+05 1.1733036e+03 -1.3576254e+04
+-3.5255114e+05 -1.1497966e+03 -1.2379913e+04
+-3.5839976e+05 -2.8204661e+03 -9.2252551e+03
+-3.5105516e+05 -3.3068727e+03 -5.5007053e+03
+-3.2907091e+05 -2.7242295e+03 -2.4541038e+03
+-2.8771320e+05 -1.6249236e+03 -6.8266085e+02
+-2.2356321e+05 -6.3943711e+02 -4.3451219e+01
+-1.4253081e+05 -1.2418087e+02 2.3342254e+01
+-6.3339023e+04 -8.5989095e+00 -9.0681449e+00
+-7.1277595e+03 -1.6927121e+01 -1.5353091e+00
+-5.9923642e+02 -2.5111939e+00 -1.5784571e-01
+-4.3932755e+01 -2.5514510e-01 -1.1150261e-02
+-2.6755766e+00 -1.9239909e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.6241571e+00 -1.2211997e-01 5.7308314e-02
+-1.8564113e+02 -2.1499176e+00 1.1668321e+00
+-3.2763558e+03 -3.3975671e+01 2.0689351e+01
+-5.9285058e+04 -5.4288145e+02 3.6770325e+02
+-8.6063154e+05 -2.1108185e+03 -5.1258457e+03
+-2.1451464e+06 -2.6041126e+03 -2.2149469e+04
+-3.4893049e+06 -3.6311214e+03 -4.6621640e+04
+-4.4695569e+06 -6.0292982e+03 -6.7828645e+04
+-4.9930730e+06 -9.5238219e+03 -7.6492080e+04
+-5.1879850e+06 -1.2954167e+04 -7.0113500e+04
+-5.2129545e+06 -1.5087674e+04 -5.2946469e+04
+-5.1444751e+06 -1.5272187e+04 -3.2515211e+04
+-4.9374456e+06 -1.3624414e+04 -1.5581156e+04
+-4.4373164e+06 -1.0828535e+04 -5.4480492e+03
+-3.4894985e+06 -7.7348408e+03 -1.4486797e+03
+-2.1570194e+06 -4.9636954e+03 -6.2755285e+02
+-8.6272622e+05 -2.7416885e+03 -4.3998142e+02
+-5.9075445e+04 -5.2974740e+02 -2.5810216e+01
+-3.2597532e+03 -3.2977495e+01 -1.5111751e+00
+-1.8438934e+02 -2.0730939e+00 -7.6590373e-02
+-9.5434619e+00 -1.1706312e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0313906e+01 -3.7479554e-01 1.5604972e-01
+-3.9935456e+02 -7.1124211e+00 3.3276243e+00
+-7.1162982e+03 -1.2207648e+02 6.1517331e+01
+-1.2682355e+05 -2.1035057e+03 1.1214223e+03
+-1.9043691e+06 -1.0886266e+04 -9.5109737e+03
+-4.4799000e+06 -1.8145500e+04 -4.1295946e+04
+-7.1634051e+06 -2.6142114e+04 -8.6640055e+04
+-9.1586990e+06 -3.4760876e+04 -1.2609568e+05
+-1.0279638e+07 -4.3140152e+04 -1.4295399e+05
+-1.0742423e+07 -4.9711990e+04 -1.3262769e+05
+-1.0821778e+07 -5.2933457e+04 -1.0248554e+05
+-1.0651745e+07 -5.1991907e+04 -6.5728787e+04
+-1.0156858e+07 -4.7065419e+04 -3.4383566e+04
+-9.0720962e+06 -3.9147911e+04 -1.4593267e+04
+-7.1352576e+06 -2.9634509e+04 -5.6162359e+03
+-4.4783997e+06 -1.9904230e+04 -2.6169312e+03
+-1.8939714e+06 -1.1125492e+04 -1.3126505e+03
+-1.2593694e+05 -2.0217583e+03 -7.3837854e+01
+-7.0579580e+03 -1.1695715e+02 -4.1120627e+00
+-3.9551547e+02 -6.7897512e+00 -1.9852787e-01
+-2.0089044e+01 -3.5654317e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1540604e+01 -6.9679950e-01 1.8915490e-01
+-6.1933009e+02 -1.3473775e+01 4.0681611e+00
+-1.0985116e+04 -2.3510708e+02 7.5352359e+01
+-1.9419900e+05 -4.0941605e+03 1.3649339e+03
+-2.9515499e+06 -2.1995955e+04 -1.5058463e+04
+-6.8379074e+06 -3.7862781e+04 -6.2969230e+04
+-1.0858936e+07 -5.4662842e+04 -1.3082694e+05
+-1.3835329e+07 -7.0996367e+04 -1.8982099e+05
+-1.5504745e+07 -8.5238139e+04 -2.1549677e+05
+-1.6194918e+07 -9.5413444e+04 -2.0118578e+05
+-1.6312217e+07 -9.9756216e+04 -1.5749123e+05
+-1.6053618e+07 -9.7365672e+04 -1.0341837e+05
+-1.5309124e+07 -8.8492137e+04 -5.6418907e+04
+-1.3688390e+07 -7.4411138e+04 -2.5693605e+04
+-1.0797727e+07 -5.7067085e+04 -1.0638355e+04
+-6.8197356e+06 -3.8712037e+04 -4.6534983e+03
+-2.9262707e+06 -2.1706545e+04 -1.7340447e+03
+-1.9248794e+05 -3.9234266e+03 -9.8758515e+01
+-1.0874336e+04 -2.2459670e+02 -5.5330886e+00
+-6.1218606e+02 -1.2828404e+01 -2.6734578e-01
+-3.1130218e+01 -6.6129046e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0718648e+01 -8.7810403e-01 5.5228972e-02
+-7.9727157e+02 -1.7040121e+01 1.3044083e+00
+-1.4089621e+04 -2.9782214e+02 2.5829788e+01
+-2.4816258e+05 -5.1815600e+03 4.8622426e+02
+-3.7081151e+06 -2.8054876e+04 -2.1419230e+04
+-8.6271695e+06 -4.8683863e+04 -8.4288421e+04
+-1.3676462e+07 -7.0215820e+04 -1.7273162e+05
+-1.7355031e+07 -9.0430616e+04 -2.4930840e+05
+-1.9364835e+07 -1.0733133e+05 -2.8267680e+05
+-2.0159910e+07 -1.1891871e+05 -2.6448364e+05
+-2.0278182e+07 -1.2352836e+05 -2.0831331e+05
+-1.9976448e+07 -1.2033597e+05 -1.3833143e+05
+-1.9109456e+07 -1.0960657e+05 -7.6806542e+04
+-1.7160686e+07 -9.2625833e+04 -3.5724751e+04
+-1.3592293e+07 -7.1459106e+04 -1.4715740e+04
+-8.5994449e+06 -4.8713100e+04 -5.6793713e+03
+-3.6725949e+06 -2.7380822e+04 -1.0823256e+03
+-2.4580733e+05 -4.9582742e+03 -6.3452358e+01
+-1.3935955e+04 -2.8409851e+02 -3.6448921e+00
+-7.8731497e+02 -1.6201398e+01 -1.7941093e-01
+-4.0145423e+01 -8.3225553e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6887036e+01 -7.4315668e-01 -2.1618296e-01
+-9.1635274e+02 -1.4415491e+01 -4.2532972e+00
+-1.6163118e+04 -2.5156778e+02 -7.2260209e+01
+-2.8425790e+05 -4.3656818e+03 -1.2190045e+03
+-4.1342554e+06 -2.3667133e+04 -2.7574183e+04
+-9.7312910e+06 -4.1164809e+04 -1.0235024e+05
+-1.5436465e+07 -5.9290487e+04 -2.0692437e+05
+-1.9518412e+07 -7.6036197e+04 -2.9700230e+05
+-2.1675533e+07 -8.9763763e+04 -3.3597258e+05
+-2.2477523e+07 -9.8988596e+04 -3.1434544e+05
+-2.2572519e+07 -1.0252960e+05 -2.4811542e+05
+-2.2265387e+07 -9.9812956e+04 -1.6544986e+05
+-2.1380849e+07 -9.1037519e+04 -9.2331126e+04
+-1.9295863e+07 -7.7149288e+04 -4.2924799e+04
+-1.5342999e+07 -5.9719180e+04 -1.7086571e+04
+-9.7030337e+06 -4.0830174e+04 -5.5647392e+03
+-4.0949017e+06 -2.2991111e+04 3.8946935e+02
+-2.8155206e+05 -4.1737368e+03 1.9956087e+01
+-1.5984466e+04 -2.3975890e+02 1.0049927e+00
+-9.0465924e+02 -1.3693879e+01 4.4185654e-02
+-4.6208582e+01 -7.0375366e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0255568e+01 -2.9147890e-01 -4.8238841e-01
+-9.8144508e+02 -5.6496352e+00 -9.6601654e+00
+-1.7300287e+04 -9.8467689e+01 -1.6669910e+02
+-3.0417478e+05 -1.7059839e+03 -2.8427045e+03
+-4.3281725e+06 -9.2475243e+03 -3.2093112e+04
+-1.0295498e+07 -1.6093886e+04 -1.1448466e+05
+-1.6349643e+07 -2.3160832e+04 -2.2923560e+05
+-2.0623331e+07 -2.9645180e+04 -3.2767339e+05
+-2.2823107e+07 -3.4916682e+04 -3.6992286e+05
+-2.3598276e+07 -3.8428849e+04 -3.4587422e+05
+-2.3668938e+07 -3.9756423e+04 -2.7309420e+05
+-2.3370485e+07 -3.8694656e+04 -1.8227272e+05
+-2.2507865e+07 -3.5316704e+04 -1.0171905e+05
+-2.0388094e+07 -2.9968680e+04 -4.6975061e+04
+-1.6255331e+07 -2.3234952e+04 -1.8050404e+04
+-1.0270951e+07 -1.5908748e+04 -4.9609076e+03
+-4.2888644e+06 -8.9665967e+03 1.8356299e+03
+-3.0134154e+05 -1.6302148e+03 1.0319526e+02
+-1.7111360e+04 -9.3802311e+01 5.7171117e+00
+-9.6897015e+02 -5.3644101e+00 2.7370417e-01
+-4.9526699e+01 -2.7590355e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1308697e+01 2.9147890e-01 -5.9205462e-01
+-1.0018518e+03 5.6496352e+00 -1.1878057e+01
+-1.7658378e+04 9.8467689e+01 -2.0523781e+02
+-3.1048519e+05 1.7059839e+03 -3.5017898e+03
+-4.3821248e+06 9.2475243e+03 -3.3756968e+04
+-1.0466505e+07 1.6093886e+04 -1.1876453e+05
+-1.6629299e+07 2.3160831e+04 -2.3698351e+05
+-2.0958434e+07 2.9645180e+04 -3.3823855e+05
+-2.3164902e+07 3.4916680e+04 -3.8155352e+05
+-2.3926139e+07 3.8428852e+04 -3.5662612e+05
+-2.3987074e+07 3.9756421e+04 -2.8156990e+05
+-2.3693488e+07 3.8694656e+04 -1.8793578e+05
+-2.2843484e+07 3.5316703e+04 -1.0482442e+05
+-2.0719878e+07 2.9968682e+04 -4.8247269e+04
+-1.6535688e+07 2.3234953e+04 -1.8267698e+04
+-1.0444025e+07 1.5908748e+04 -4.6490131e+03
+-4.3433237e+06 8.9665968e+03 2.4282289e+03
+-3.0762753e+05 1.6302148e+03 1.3753336e+02
+-1.7467083e+04 9.3802312e+01 7.6739862e+00
+-9.8917696e+02 5.3644101e+00 3.6956728e-01
+-5.0566100e+01 2.7590355e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0255568e+01 7.4315669e-01 -4.8238840e-01
+-9.8144508e+02 1.4415491e+01 -9.6601655e+00
+-1.7300287e+04 2.5156778e+02 -1.6669910e+02
+-3.0417478e+05 4.3656818e+03 -2.8427045e+03
+-4.3281725e+06 2.3667133e+04 -3.2093113e+04
+-1.0295498e+07 4.1164809e+04 -1.1448466e+05
+-1.6349643e+07 5.9290486e+04 -2.2923560e+05
+-2.0623331e+07 7.6036198e+04 -3.2767339e+05
+-2.2823107e+07 8.9763765e+04 -3.6992286e+05
+-2.3598276e+07 9.8988596e+04 -3.4587421e+05
+-2.3668938e+07 1.0252960e+05 -2.7309420e+05
+-2.3370485e+07 9.9812953e+04 -1.8227272e+05
+-2.2507865e+07 9.1037517e+04 -1.0171905e+05
+-2.0388094e+07 7.7149287e+04 -4.6975061e+04
+-1.6255331e+07 5.9719181e+04 -1.8050404e+04
+-1.0270951e+07 4.0830174e+04 -4.9609072e+03
+-4.2888644e+06 2.2991112e+04 1.8356299e+03
+-3.0134154e+05 4.1737368e+03 1.0319526e+02
+-1.7111360e+04 2.3975890e+02 5.7171117e+00
+-9.6897015e+02 1.3693879e+01 2.7370416e-01
+-4.9526699e+01 7.0375366e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6887036e+01 8.7810402e-01 -2.1618297e-01
+-9.1635274e+02 1.7040121e+01 -4.2532972e+00
+-1.6163118e+04 2.9782214e+02 -7.2260208e+01
+-2.8425790e+05 5.1815600e+03 -1.2190045e+03
+-4.1342554e+06 2.8054876e+04 -2.7574183e+04
+-9.7312910e+06 4.8683864e+04 -1.0235024e+05
+-1.5436465e+07 7.0215822e+04 -2.0692437e+05
+-1.9518412e+07 9.0430616e+04 -2.9700230e+05
+-2.1675533e+07 1.0733133e+05 -3.3597258e+05
+-2.2477523e+07 1.1891871e+05 -3.1434544e+05
+-2.2572519e+07 1.2352836e+05 -2.4811542e+05
+-2.2265387e+07 1.2033597e+05 -1.6544986e+05
+-2.1380849e+07 1.0960657e+05 -9.2331121e+04
+-1.9295863e+07 9.2625833e+04 -4.2924796e+04
+-1.5342999e+07 7.1459106e+04 -1.7086571e+04
+-9.7030337e+06 4.8713100e+04 -5.5647388e+03
+-4.0949017e+06 2.7380822e+04 3.8946928e+02
+-2.8155206e+05 4.9582742e+03 1.9956090e+01
+-1.5984466e+04 2.8409851e+02 1.0049925e+00
+-9.0465924e+02 1.6201398e+01 4.4185665e-02
+-4.6208582e+01 8.3225553e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0718648e+01 6.9679950e-01 5.5228966e-02
+-7.9727157e+02 1.3473775e+01 1.3044087e+00
+-1.4089621e+04 2.3510708e+02 2.5829793e+01
+-2.4816258e+05 4.0941605e+03 4.8622409e+02
+-3.7081151e+06 2.1995955e+04 -2.1419230e+04
+-8.6271695e+06 3.7862780e+04 -8.4288421e+04
+-1.3676462e+07 5.4662843e+04 -1.7273162e+05
+-1.7355031e+07 7.0996368e+04 -2.4930840e+05
+-1.9364835e+07 8.5238139e+04 -2.8267680e+05
+-2.0159910e+07 9.5413442e+04 -2.6448364e+05
+-2.0278182e+07 9.9756214e+04 -2.0831331e+05
+-1.9976448e+07 9.7365670e+04 -1.3833143e+05
+-1.9109456e+07 8.8492137e+04 -7.6806544e+04
+-1.7160686e+07 7.4411138e+04 -3.5724750e+04
+-1.3592293e+07 5.7067085e+04 -1.4715739e+04
+-8.5994449e+06 3.8712037e+04 -5.6793713e+03
+-3.6725949e+06 2.1706545e+04 -1.0823255e+03
+-2.4580733e+05 3.9234266e+03 -6.3452358e+01
+-1.3935955e+04 2.2459670e+02 -3.6448921e+00
+-7.8731497e+02 1.2828404e+01 -1.7941093e-01
+-4.0145423e+01 6.6129046e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1540604e+01 3.7479554e-01 1.8915490e-01
+-6.1933009e+02 7.1124211e+00 4.0681609e+00
+-1.0985116e+04 1.2207648e+02 7.5352360e+01
+-1.9419900e+05 2.1035057e+03 1.3649339e+03
+-2.9515499e+06 1.0886266e+04 -1.5058463e+04
+-6.8379074e+06 1.8145500e+04 -6.2969230e+04
+-1.0858936e+07 2.6142114e+04 -1.3082694e+05
+-1.3835329e+07 3.4760877e+04 -1.8982099e+05
+-1.5504745e+07 4.3140152e+04 -2.1549677e+05
+-1.6194918e+07 4.9711988e+04 -2.0118578e+05
+-1.6312217e+07 5.2933457e+04 -1.5749122e+05
+-1.6053618e+07 5.1991908e+04 -1.0341837e+05
+-1.5309124e+07 4.7065418e+04 -5.6418908e+04
+-1.3688390e+07 3.9147911e+04 -2.5693604e+04
+-1.0797727e+07 2.9634508e+04 -1.0638355e+04
+-6.8197356e+06 1.9904229e+04 -4.6534986e+03
+-2.9262707e+06 1.1125493e+04 -1.7340448e+03
+-1.9248794e+05 2.0217583e+03 -9.8758514e+01
+-1.0874336e+04 1.1695715e+02 -5.5330886e+00
+-6.1218606e+02 6.7897512e+00 -2.6734578e-01
+-3.1130218e+01 3.5654317e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0313906e+01 1.2211997e-01 1.5604972e-01
+-3.9935456e+02 2.1499176e+00 3.3276242e+00
+-7.1162982e+03 3.3975671e+01 6.1517331e+01
+-1.2682355e+05 5.4288145e+02 1.1214223e+03
+-1.9043691e+06 2.1108182e+03 -9.5109736e+03
+-4.4799000e+06 2.6041122e+03 -4.1295946e+04
+-7.1634052e+06 3.6311216e+03 -8.6640056e+04
+-9.1586990e+06 6.0292973e+03 -1.2609568e+05
+-1.0279638e+07 9.5238209e+03 -1.4295399e+05
+-1.0742423e+07 1.2954168e+04 -1.3262769e+05
+-1.0821778e+07 1.5087676e+04 -1.0248554e+05
+-1.0651745e+07 1.5272187e+04 -6.5728786e+04
+-1.0156858e+07 1.3624413e+04 -3.4383566e+04
+-9.0720962e+06 1.0828534e+04 -1.4593267e+04
+-7.1352576e+06 7.7348407e+03 -5.6162362e+03
+-4.4783997e+06 4.9636956e+03 -2.6169311e+03
+-1.8939714e+06 2.7416885e+03 -1.3126505e+03
+-1.2593694e+05 5.2974740e+02 -7.3837854e+01
+-7.0579580e+03 3.2977496e+01 -4.1120626e+00
+-3.9551547e+02 2.0730940e+00 -1.9852787e-01
+-2.0089044e+01 1.1706312e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.6241571e+00 1.9121143e-02 5.7308313e-02
+-1.8564113e+02 2.3902514e-01 1.1668321e+00
+-3.2763558e+03 1.9384488e+00 2.0689350e+01
+-5.9285058e+04 9.4179798e-01 3.6770323e+02
+-8.6063154e+05 -7.6687402e+02 -5.1258457e+03
+-2.1451464e+06 -2.4153971e+03 -2.2149469e+04
+-3.4893049e+06 -3.5531179e+03 -4.6621640e+04
+-4.4695569e+06 -3.0840918e+03 -6.7828645e+04
+-4.9930730e+06 -1.1733032e+03 -7.6492080e+04
+-5.1879850e+06 1.1497967e+03 -7.0113500e+04
+-5.2129545e+06 2.8204660e+03 -5.2946469e+04
+-5.1444751e+06 3.3068726e+03 -3.2515211e+04
+-4.9374456e+06 2.7242296e+03 -1.5581156e+04
+-4.4373164e+06 1.6249235e+03 -5.4480496e+03
+-3.4894985e+06 6.3943712e+02 -1.4486798e+03
+-2.1570194e+06 1.2418083e+02 -6.2755279e+02
+-8.6272622e+05 8.5988827e+00 -4.3998142e+02
+-5.9075445e+04 1.6927120e+01 -2.5810215e+01
+-3.2597532e+03 2.5111939e+00 -1.5111750e+00
+-1.8438934e+02 2.5514508e-01 -7.6590378e-02
+-9.5434619e+00 1.9239909e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.6916119e+00 2.1290111e-03 3.9545370e-03
+-4.4115309e+01 1.8607971e-02 2.9093454e-02
+-6.0046771e+02 4.3490879e-02 -4.7799796e-01
+-7.1247212e+03 -1.7580926e+00 -2.4051422e+01
+-6.3062735e+04 -4.5053734e+01 -9.9091882e+02
+-1.4188327e+05 -1.3706925e+02 -3.9464840e+03
+-2.2332868e+05 -2.0448676e+02 -8.2674228e+03
+-2.8867080e+05 -1.8136624e+02 -1.2044752e+04
+-3.3092982e+05 -7.2598323e+01 -1.3576254e+04
+-3.5255114e+05 6.3491748e+01 -1.2379913e+04
+-3.5839976e+05 1.6351272e+02 -9.2252551e+03
+-3.5105516e+05 1.9436956e+02 -5.5007053e+03
+-3.2907091e+05 1.6176173e+02 -2.4541038e+03
+-2.8771320e+05 9.8035363e+01 -6.8266082e+02
+-2.2356321e+05 4.0274000e+01 -4.3451214e+01
+-1.4253081e+05 9.2627450e+00 2.3342247e+01
+-6.3339023e+04 1.2777665e+00 -9.0681432e+00
+-7.1277595e+03 9.4966587e-01 -1.5353091e+00
+-5.9923642e+02 1.8983865e-01 -1.5784570e-01
+-4.3932755e+01 2.5592338e-02 -1.1150260e-02
+-2.6755766e+00 2.3927820e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.1007781e-01 1.8019907e-04 -6.5909479e-04
+-6.9674885e+00 9.1773609e-04 -1.6122972e-02
+-7.3345269e+01 -7.5207416e-03 -2.9044350e-01
+-6.1994162e+02 -2.2359358e-01 -4.4749975e+00
+-3.5391103e+03 -2.6466163e+00 -6.2700360e+01
+-8.0270775e+03 -7.6958620e+00 -2.3208263e+02
+-1.2724513e+04 -1.1573449e+01 -4.8188944e+02
+-1.6519778e+04 -1.0464053e+01 -7.0442313e+02
+-1.8984331e+04 -4.3757223e+00 -7.9885372e+02
+-2.0243959e+04 3.4650631e+00 -7.3353377e+02
+-2.0582356e+04 9.3526217e+00 -5.5115764e+02
+-2.0152985e+04 1.1266292e+01 -3.3276037e+02
+-1.8867922e+04 9.4709642e+00 -1.5228668e+02
+-1.6451824e+04 5.8293153e+00 -4.5619729e+01
+-1.2724808e+04 2.4898080e+00 -5.1939570e+00
+-8.0557543e+03 6.4943010e-01 8.2862740e-01
+-3.5539185e+03 1.1743667e-01 -3.2305341e-01
+-6.2112931e+02 5.6087480e-02 -8.4246047e-02
+-7.3325978e+01 1.3723164e-02 -1.2279780e-02
+-6.9514513e+00 2.2690870e-03 -1.1168299e-03
+-5.0798971e-01 2.4924670e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.2894172e-02 1.0063417e-05 -2.2987411e-04
+-8.4431248e-01 5.7239122e-06 -3.7033482e-03
+-7.1392569e+00 -1.1140242e-03 -4.5414274e-02
+-4.6580086e+01 -1.6902552e-02 -4.7792234e-01
+-2.0348400e+02 -1.3464783e-01 -4.0045083e+00
+-4.5454946e+02 -3.7412047e-01 -1.3694662e+01
+-7.2292869e+02 -5.6413903e-01 -2.8025402e+01
+-9.4236808e+02 -5.1756177e-01 -4.1005840e+01
+-1.0859330e+03 -2.2368678e-01 -4.6741446e+01
+-1.1594905e+03 1.6428351e-01 -4.3199944e+01
+-1.1791876e+03 4.6104778e-01 -3.2720550e+01
+-1.1539868e+03 5.6166997e-01 -1.9993572e+01
+-1.0787028e+03 4.7636417e-01 -9.3680528e+00
+-9.3771996e+02 2.9719058e-01 -2.9859064e+00
+-7.2218522e+02 1.3105502e-01 -4.5664598e-01
+-4.5570713e+02 3.7363561e-02 1.6477144e-02
+-2.0424727e+02 7.8078678e-03 -9.7479036e-03
+-4.6697218e+01 2.9766883e-03 -4.0280058e-03
+-7.1448482e+00 8.1746053e-04 -7.8909405e-04
+-8.4342501e-01 1.5594964e-04 -8.8434447e-05
+-7.2696052e-02 1.9208969e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.2812805e-03 0.0000000e+00 -3.2611232e-05
+-7.4260646e-02 0.0000000e+00 -4.4394063e-04
+-5.3230553e-01 0.0000000e+00 -4.4404564e-03
+-2.8901567e+00 0.0000000e+00 -3.6777144e-02
+-1.0683628e+01 0.0000000e+00 -2.2922498e-01
+-2.3321429e+01 0.0000000e+00 -7.2976358e-01
+-3.7086506e+01 0.0000000e+00 -1.4685930e+00
+-4.8490406e+01 0.0000000e+00 -2.1464077e+00
+-5.6018081e+01 0.0000000e+00 -2.4557730e+00
+-5.9892460e+01 0.0000000e+00 -2.2822272e+00
+-6.0929268e+01 0.0000000e+00 -1.7408991e+00
+-5.9594344e+01 0.0000000e+00 -1.0751414e+00
+-5.5617876e+01 0.0000000e+00 -5.1404268e-01
+-4.8214331e+01 0.0000000e+00 -1.7206982e-01
+-3.7012112e+01 0.0000000e+00 -3.1364230e-02
+-2.3358159e+01 0.0000000e+00 -7.7937467e-04
+-1.0717801e+01 0.0000000e+00 -2.0247260e-04
+-2.8978536e+00 0.0000000e+00 -1.4780585e-04
+-5.3301738e-01 0.0000000e+00 -3.9367866e-05
+-7.4240353e-02 0.0000000e+00 -5.3333631e-06
+-7.2681807e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.2408373e-03 -1.0147349e-05 -3.0295872e-05
+-7.3868041e-02 -1.3171340e-05 -4.0972866e-04
+-5.2961294e-01 9.7634740e-04 -4.0786673e-03
+-2.8758385e+00 1.5306025e-02 -3.3702828e-02
+-1.0630209e+01 1.2291324e-01 -2.1003464e-01
+-2.3204154e+01 3.4412118e-01 -6.7143086e-01
+-3.6922498e+01 5.2587512e-01 -1.3613135e+00
+-4.8336029e+01 4.9578503e-01 -2.0114765e+00
+-5.5929358e+01 2.3627038e-01 -2.3364702e+00
+-5.9891077e+01 -1.2093422e-01 -2.2169190e+00
+-6.0996790e+01 -4.0818475e-01 -1.7412123e+00
+-5.9689416e+01 -5.2296409e-01 -1.1231764e+00
+-5.5700257e+01 -4.6391865e-01 -5.7687695e-01
+-4.8262422e+01 -3.0706086e-01 -2.2172494e-01
+-3.7027252e+01 -1.4916611e-01 -5.7418244e-02
+-2.3355736e+01 -5.0729679e-02 -9.1117934e-03
+-1.0712632e+01 -1.2747670e-02 -1.5333706e-03
+-2.8955194e+00 -3.5596929e-03 -3.0788489e-04
+-5.3242724e-01 -8.4237005e-04 -5.5656408e-05
+-7.4137003e-02 -1.5242150e-04 -6.5849138e-06
+-7.2563219e-03 -1.8443670e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.2514034e-02 -1.7524871e-04 -2.1503663e-04
+-8.4017581e-01 -9.3887320e-04 -3.4259995e-03
+-7.1062552e+00 6.2381111e-03 -4.1689465e-02
+-4.6370876e+01 2.0144658e-01 -4.3704024e-01
+-2.0254988e+02 2.4094061e+00 -3.6576572e+00
+-4.5236160e+02 7.0585434e+00 -1.2559934e+01
+-7.1982315e+02 1.0759588e+01 -2.5899181e+01
+-9.3945598e+02 1.0005436e+01 -3.8320926e+01
+-1.0842944e+03 4.6413509e+00 -4.4364631e+01
+-1.1595255e+03 -2.5596249e+00 -4.1891004e+01
+-1.1805271e+03 -8.2521081e+00 -3.2707509e+01
+-1.1558336e+03 -1.0459742e+01 -2.0923990e+01
+-1.0802883e+03 -9.2088825e+00 -1.0593536e+01
+-9.3863541e+02 -6.0330652e+00 -3.9520807e+00
+-7.2246329e+02 -2.8687902e+00 -9.5438626e-01
+-4.5565175e+02 -9.2889097e-01 -1.3160587e-01
+-2.0414840e+02 -2.1602710e-01 -2.7197026e-02
+-4.6658854e+01 -6.3447226e-02 -5.6733618e-03
+-7.1367396e+00 -1.3696786e-02 -9.2755031e-04
+-8.4222313e-01 -2.1840958e-03 -9.7750036e-05
+-7.2574879e-02 -2.3736659e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.0758774e-01 -2.0263666e-03 -6.3895728e-04
+-6.9360866e+00 -1.7903123e-02 -1.5076691e-02
+-7.3040305e+01 -4.6918749e-02 -2.6688420e-01
+-6.1748647e+02 1.5620242e+00 -4.0826081e+00
+-3.5246130e+03 4.0886423e+01 -5.7056977e+01
+-7.9902978e+03 1.2529835e+02 -2.1207639e+02
+-1.2671563e+04 1.8952054e+02 -4.4378697e+02
+-1.6470421e+04 1.7307435e+02 -6.5621264e+02
+-1.8957230e+04 7.7500092e+01 -7.5617220e+02
+-2.0245666e+04 -4.7125415e+01 -7.0989898e+02
+-2.0606219e+04 -1.4371540e+02 -5.5057277e+02
+-2.0185195e+04 -1.7984290e+02 -3.4897959e+02
+-1.8895312e+04 -1.5697136e+02 -1.7382696e+02
+-1.6467450e+04 -1.0164263e+02 -6.2591935e+01
+-1.2729351e+04 -4.7122285e+01 -1.3795031e+01
+-8.0546108e+03 -1.4333682e+01 -1.5337951e+00
+-3.5521954e+03 -2.9876591e+00 -4.8524969e-01
+-6.2058896e+02 -9.9458331e-01 -9.4464089e-02
+-7.3237737e+01 -1.8352097e-01 -1.2881092e-02
+-6.9410626e+00 -2.4306265e-02 -1.1476172e-03
+-5.0711082e-01 -2.2638756e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.6790757e+00 -1.7958590e-02 3.3960333e-03
+-4.3929018e+01 -2.2485608e-01 2.4058536e-02
+-5.9820037e+02 -1.8383632e+00 -4.5183842e-01
+-7.1002720e+03 -1.4566279e+00 -2.1882378e+01
+-6.2839268e+04 6.9370891e+02 -8.9817191e+02
+-1.4126383e+05 2.2002412e+03 -3.5925560e+03
+-2.2242800e+05 3.2826062e+03 -7.5863178e+03
+-2.8783808e+05 2.9375183e+03 -1.1183480e+04
+-3.3048442e+05 1.2632265e+03 -1.2814610e+04
+-3.5259875e+05 -8.5787635e+02 -1.1956253e+04
+-3.5882129e+05 -2.4693670e+03 -9.2090685e+03
+-3.5161311e+05 -3.0489400e+03 -5.7820202e+03
+-3.2954108e+05 -2.6377583e+03 -2.8310674e+03
+-2.8797822e+05 -1.6875208e+03 -9.8016186e+02
+-2.2363670e+05 -7.6124437e+02 -1.9255418e+02
+-1.4250773e+05 -2.1529335e+02 -1.4677942e+01
+-6.3308544e+04 -3.8334484e+01 -9.8104642e+00
+-7.1206166e+03 -1.6409390e+01 -1.5386320e+00
+-5.9842873e+02 -2.3736634e+00 -1.5617875e-01
+-4.3861832e+01 -2.4039493e-01 -1.1013122e-02
+-2.6707136e+00 -1.8139965e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.5798093e+00 -1.1375625e-01 5.1449807e-02
+-1.8486840e+02 -1.9984181e+00 1.0522797e+00
+-3.2643806e+03 -3.1501735e+01 1.8740476e+01
+-5.9100075e+04 -5.0199673e+02 3.3429849e+02
+-8.5285886e+05 -1.9629736e+03 -4.7816946e+03
+-2.1247972e+06 -2.4397374e+03 -2.0490964e+04
+-3.4598104e+06 -3.3671040e+03 -4.3335748e+04
+-4.4406810e+06 -5.5067724e+03 -6.3767308e+04
+-4.9737345e+06 -8.6567360e+03 -7.3185804e+04
+-5.1814123e+06 -1.1815252e+04 -6.8801187e+04
+-5.2164544e+06 -1.3872134e+04 -5.3898564e+04
+-5.1522217e+06 -1.4190210e+04 -3.5010742e+04
+-4.9438736e+06 -1.2804304e+04 -1.8416232e+04
+-4.4395330e+06 -1.0281842e+04 -7.6053099e+03
+-3.4879303e+06 -7.3895956e+03 -2.5451716e+03
+-2.1541284e+06 -4.7350530e+03 -9.1647130e+02
+-8.6067379e+05 -2.5891388e+03 -4.1809625e+02
+-5.8989895e+04 -4.9536276e+02 -2.4693126e+01
+-3.2544541e+03 -3.0910570e+01 -1.4552690e+00
+-1.8406297e+02 -1.9478473e+00 -7.4180858e-02
+-9.5255453e+00 -1.1023744e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0219058e+01 -3.4841518e-01 1.3981107e-01
+-3.9760743e+02 -6.5979983e+00 2.9922593e+00
+-7.0873156e+03 -1.1298286e+02 5.5490817e+01
+-1.2634157e+05 -1.9422414e+03 1.0137505e+03
+-1.8860794e+06 -1.0050402e+04 -9.1884880e+03
+-4.4357400e+06 -1.6771493e+04 -3.9016741e+04
+-7.0996928e+06 -2.4144427e+04 -8.1951753e+04
+-9.0935722e+06 -3.2051301e+04 -1.2053401e+05
+-1.0229941e+07 -3.9745268e+04 -1.3914263e+05
+-1.0714962e+07 -4.5847049e+04 -1.3257229e+05
+-1.0812838e+07 -4.8956650e+04 -1.0642769e+05
+-1.0651920e+07 -4.8278994e+04 -7.2164296e+04
+-1.0156928e+07 -4.3891668e+04 -4.1007163e+04
+-9.0672349e+06 -3.6637697e+04 -1.9512634e+04
+-7.1262117e+06 -2.7786820e+04 -8.1613033e+03
+-4.4692996e+06 -1.8657291e+04 -3.3391598e+03
+-1.8882458e+06 -1.0403515e+04 -1.2503087e+03
+-1.2572322e+05 -1.8886763e+03 -7.0712378e+01
+-7.0460756e+03 -1.0954477e+02 -3.9605107e+00
+-3.9485566e+02 -6.3759436e+00 -1.9223055e-01
+-2.0055913e+01 -3.3559927e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1407995e+01 -6.4731669e-01 1.6629204e-01
+-6.1686878e+02 -1.2491687e+01 3.5986633e+00
+-1.0944027e+04 -2.1748197e+02 6.7008293e+01
+-1.9351391e+05 -3.7786563e+03 1.2183361e+03
+-2.9253581e+06 -2.0281792e+04 -1.4742100e+04
+-6.7744284e+06 -3.4937437e+04 -6.0055178e+04
+-1.0767955e+07 -5.0442897e+04 -1.2473710e+05
+-1.3743797e+07 -6.5497812e+04 -1.8282191e+05
+-1.5437322e+07 -7.8645694e+04 -2.1134419e+05
+-1.6161329e+07 -8.8125082e+04 -2.0265574e+05
+-1.6306738e+07 -9.2322680e+04 -1.6476789e+05
+-1.6062146e+07 -9.0352521e+04 -1.1416698e+05
+-1.5317657e+07 -8.2348167e+04 -6.7177645e+04
+-1.3689156e+07 -6.9404802e+04 -3.3645255e+04
+-1.0791060e+07 -5.3298451e+04 -1.4800736e+04
+-6.8111434e+06 -3.6160131e+04 -5.8901594e+03
+-2.9206438e+06 -2.0256280e+04 -1.6643102e+03
+-1.9228216e+05 -3.6634334e+03 -9.5337147e+01
+-1.0863573e+04 -2.1027031e+02 -5.3743982e+00
+-6.1163350e+02 -1.2041711e+01 -2.6119604e-01
+-3.1104803e+01 -6.2221116e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0588601e+01 -8.1551050e-01 3.8146729e-02
+-7.9489874e+02 -1.5793984e+01 9.6762009e-01
+-1.4050833e+04 -2.7543173e+02 2.0128697e+01
+-2.4753093e+05 -4.7812365e+03 3.9105688e+02
+-3.6811947e+06 -2.5855879e+04 -2.0955222e+04
+-8.5576327e+06 -4.4894416e+04 -8.0535083e+04
+-1.3577687e+07 -6.4768473e+04 -1.6498445e+05
+-1.7261577e+07 -8.3424763e+04 -2.4051116e+05
+-1.9307300e+07 -9.9055615e+04 -2.7763592e+05
+-2.0149097e+07 -1.0986451e+05 -2.6670969e+05
+-2.0304894e+07 -1.1432425e+05 -2.1799628e+05
+-2.0020722e+07 -1.1161928e+05 -1.5245578e+05
+-1.9151438e+07 -1.0190120e+05 -9.0921017e+04
+-1.7188539e+07 -8.6278813e+04 -4.6193979e+04
+-1.3604891e+07 -6.6640447e+04 -2.0254104e+04
+-8.6030255e+06 -4.5441629e+04 -7.3920381e+03
+-3.6736399e+06 -2.5529824e+04 -1.0734342e+03
+-2.4585254e+05 -4.6282231e+03 -6.3432107e+01
+-1.3940087e+04 -2.6589546e+02 -3.6751704e+00
+-7.8764602e+02 -1.5203421e+01 -1.8241066e-01
+-4.0167192e+01 -7.8285279e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6796065e+01 -6.9008704e-01 -2.1639482e-01
+-9.1477544e+02 -1.3359585e+01 -4.2280941e+00
+-1.6138901e+04 -2.3262696e+02 -7.1250334e+01
+-2.8389045e+05 -4.0279240e+03 -1.1920093e+03
+-4.1126669e+06 -2.1806958e+04 -2.6829475e+04
+-9.6674240e+06 -3.7949524e+04 -9.7641368e+04
+-1.5346765e+07 -5.4678756e+04 -1.9743049e+05
+-1.9442915e+07 -7.0140153e+04 -2.8621203e+05
+-2.1648407e+07 -8.2845089e+04 -3.2954876e+05
+-2.2509057e+07 -9.1454745e+04 -3.1642452e+05
+-2.2649423e+07 -9.4882611e+04 -2.5896181e+05
+-2.2361817e+07 -9.2558198e+04 -1.8159284e+05
+-2.1471140e+07 -8.4597476e+04 -1.0860596e+05
+-1.9363852e+07 -7.1817052e+04 -5.5078348e+04
+-1.5385488e+07 -5.5653340e+04 -2.3577104e+04
+-9.7263451e+06 -3.8064291e+04 -7.6430361e+03
+-4.1069353e+06 -2.1427693e+04 2.8842705e+02
+-2.8201059e+05 -3.8950982e+03 1.3830534e+01
+-1.6012815e+04 -2.2435216e+02 6.3570049e-01
+-9.0640405e+02 -1.2847901e+01 2.4991795e-02
+-4.6304587e+01 -6.6185592e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0210164e+01 -2.7064829e-01 -4.6484314e-01
+-9.8077331e+02 -5.2355235e+00 -9.2606777e+00
+-1.7292239e+04 -9.1049152e+01 -1.5888611e+02
+-3.0409348e+05 -1.5739155e+03 -2.6941965e+03
+-4.3130763e+06 -8.5198546e+03 -3.1077429e+04
+-1.0240689e+07 -1.4835019e+04 -1.0900101e+05
+-1.6273585e+07 -2.1357270e+04 -2.1838016e+05
+-2.0569218e+07 -2.7345173e+04 -3.1528799e+05
+-2.2826783e+07 -3.2225199e+04 -3.6223184e+05
+-2.3669019e+07 -3.5503812e+04 -3.4743962e+05
+-2.3790203e+07 -3.6789334e+04 -2.8426710e+05
+-2.3512095e+07 -3.5877667e+04 -1.9933755e+05
+-2.2639895e+07 -3.2811588e+04 -1.1909359e+05
+-2.0491087e+07 -2.7889841e+04 -6.0028453e+04
+-1.6324296e+07 -2.1646709e+04 -2.5069349e+04
+-1.0311993e+07 -1.4827143e+04 -7.2641656e+03
+-4.3108326e+06 -8.3552808e+03 1.6316445e+03
+-3.0217505e+05 -1.5212246e+03 9.1281778e+01
+-1.7161691e+04 -8.7765967e+01 5.0271641e+00
+-9.7199752e+02 -5.0325303e+00 2.3916197e-01
+-4.9689939e+01 -2.5945378e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1282961e+01 2.7064829e-01 -5.6703265e-01
+-1.0015678e+03 5.2355235e+00 -1.1322093e+01
+-1.7657195e+04 9.1049152e+01 -1.9460312e+02
+-3.1052436e+05 1.5739156e+03 -3.3032679e+03
+-4.3698374e+06 8.5198548e+03 -3.2630393e+04
+-1.0415822e+07 1.4835018e+04 -1.1298277e+05
+-1.6559383e+07 2.1357270e+04 -2.2561267e+05
+-2.0913495e+07 2.7345173e+04 -3.2524281e+05
+-2.3181242e+07 3.2225198e+04 -3.7335295e+05
+-2.4012566e+07 3.5503809e+04 -3.5793395e+05
+-2.4125812e+07 3.6789337e+04 -2.9277447e+05
+-2.3852772e+07 3.5877668e+04 -2.0524621e+05
+-2.2991831e+07 3.2811588e+04 -1.2252241e+05
+-2.0836605e+07 2.7889841e+04 -6.1575534e+04
+-1.6615105e+07 2.1646710e+04 -2.5452544e+04
+-1.0492104e+07 1.4827144e+04 -7.0277474e+03
+-4.3692447e+06 8.3552807e+03 2.1826743e+03
+-3.0861058e+05 1.5212246e+03 1.2327438e+02
+-1.7526194e+04 8.7765970e+01 6.8536864e+00
+-9.9271710e+02 5.0325304e+00 3.2877186e-01
+-5.0756236e+01 2.5945378e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0210164e+01 6.9008704e-01 -4.6484314e-01
+-9.8077331e+02 1.3359585e+01 -9.2606777e+00
+-1.7292239e+04 2.3262696e+02 -1.5888611e+02
+-3.0409348e+05 4.0279240e+03 -2.6941966e+03
+-4.3130763e+06 2.1806958e+04 -3.1077428e+04
+-1.0240689e+07 3.7949524e+04 -1.0900102e+05
+-1.6273585e+07 5.4678755e+04 -2.1838016e+05
+-2.0569218e+07 7.0140154e+04 -3.1528799e+05
+-2.2826783e+07 8.2845091e+04 -3.6223184e+05
+-2.3669019e+07 9.1454747e+04 -3.4743962e+05
+-2.3790203e+07 9.4882615e+04 -2.8426710e+05
+-2.3512095e+07 9.2558201e+04 -1.9933755e+05
+-2.2639895e+07 8.4597476e+04 -1.1909359e+05
+-2.0491087e+07 7.1817052e+04 -6.0028453e+04
+-1.6324296e+07 5.5653340e+04 -2.5069349e+04
+-1.0311993e+07 3.8064292e+04 -7.2641663e+03
+-4.3108326e+06 2.1427693e+04 1.6316446e+03
+-3.0217505e+05 3.8950982e+03 9.1281791e+01
+-1.7161691e+04 2.2435216e+02 5.0271640e+00
+-9.7199752e+02 1.2847901e+01 2.3916196e-01
+-4.9689939e+01 6.6185592e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6796065e+01 8.1551050e-01 -2.1639483e-01
+-9.1477544e+02 1.5793984e+01 -4.2280939e+00
+-1.6138901e+04 2.7543173e+02 -7.1250335e+01
+-2.8389045e+05 4.7812365e+03 -1.1920093e+03
+-4.1126669e+06 2.5855880e+04 -2.6829475e+04
+-9.6674240e+06 4.4894417e+04 -9.7641367e+04
+-1.5346765e+07 6.4768474e+04 -1.9743048e+05
+-1.9442915e+07 8.3424763e+04 -2.8621203e+05
+-2.1648407e+07 9.9055616e+04 -3.2954876e+05
+-2.2509057e+07 1.0986451e+05 -3.1642452e+05
+-2.2649423e+07 1.1432425e+05 -2.5896181e+05
+-2.2361817e+07 1.1161928e+05 -1.8159284e+05
+-2.1471140e+07 1.0190120e+05 -1.0860596e+05
+-1.9363852e+07 8.6278814e+04 -5.5078349e+04
+-1.5385488e+07 6.6640447e+04 -2.3577104e+04
+-9.7263451e+06 4.5441629e+04 -7.6430364e+03
+-4.1069353e+06 2.5529824e+04 2.8842706e+02
+-2.8201059e+05 4.6282231e+03 1.3830539e+01
+-1.6012815e+04 2.6589546e+02 6.3570063e-01
+-9.0640405e+02 1.5203421e+01 2.4991796e-02
+-4.6304587e+01 7.8285278e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0588601e+01 6.4731669e-01 3.8146733e-02
+-7.9489874e+02 1.2491687e+01 9.6762002e-01
+-1.4050833e+04 2.1748197e+02 2.0128696e+01
+-2.4753093e+05 3.7786562e+03 3.9105688e+02
+-3.6811947e+06 2.0281791e+04 -2.0955223e+04
+-8.5576327e+06 3.4937436e+04 -8.0535083e+04
+-1.3577687e+07 5.0442897e+04 -1.6498445e+05
+-1.7261577e+07 6.5497812e+04 -2.4051115e+05
+-1.9307300e+07 7.8645695e+04 -2.7763592e+05
+-2.0149097e+07 8.8125086e+04 -2.6670968e+05
+-2.0304894e+07 9.2322678e+04 -2.1799629e+05
+-2.0020722e+07 9.0352520e+04 -1.5245578e+05
+-1.9151438e+07 8.2348167e+04 -9.0921017e+04
+-1.7188539e+07 6.9404801e+04 -4.6193981e+04
+-1.3604891e+07 5.3298452e+04 -2.0254105e+04
+-8.6030255e+06 3.6160131e+04 -7.3920380e+03
+-3.6736399e+06 2.0256280e+04 -1.0734341e+03
+-2.4585254e+05 3.6634334e+03 -6.3432108e+01
+-1.3940087e+04 2.1027031e+02 -3.6751704e+00
+-7.8764602e+02 1.2041711e+01 -1.8241067e-01
+-4.0167192e+01 6.2221116e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1407995e+01 3.4841518e-01 1.6629204e-01
+-6.1686878e+02 6.5979983e+00 3.5986633e+00
+-1.0944027e+04 1.1298286e+02 6.7008285e+01
+-1.9351391e+05 1.9422414e+03 1.2183362e+03
+-2.9253581e+06 1.0050402e+04 -1.4742101e+04
+-6.7744284e+06 1.6771493e+04 -6.0055177e+04
+-1.0767955e+07 2.4144428e+04 -1.2473710e+05
+-1.3743797e+07 3.2051302e+04 -1.8282190e+05
+-1.5437322e+07 3.9745268e+04 -2.1134419e+05
+-1.6161329e+07 4.5847047e+04 -2.0265574e+05
+-1.6306738e+07 4.8956651e+04 -1.6476789e+05
+-1.6062146e+07 4.8278994e+04 -1.1416698e+05
+-1.5317657e+07 4.3891667e+04 -6.7177645e+04
+-1.3689156e+07 3.6637696e+04 -3.3645255e+04
+-1.0791060e+07 2.7786819e+04 -1.4800736e+04
+-6.8111434e+06 1.8657291e+04 -5.8901595e+03
+-2.9206438e+06 1.0403515e+04 -1.6643102e+03
+-1.9228216e+05 1.8886763e+03 -9.5337149e+01
+-1.0863573e+04 1.0954477e+02 -5.3743981e+00
+-6.1163350e+02 6.3759436e+00 -2.6119603e-01
+-3.1104803e+01 3.3559927e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0219058e+01 1.1375625e-01 1.3981107e-01
+-3.9760743e+02 1.9984181e+00 2.9922594e+00
+-7.0873156e+03 3.1501735e+01 5.5490817e+01
+-1.2634157e+05 5.0199674e+02 1.0137505e+03
+-1.8860794e+06 1.9629735e+03 -9.1884883e+03
+-4.4357400e+06 2.4397374e+03 -3.9016741e+04
+-7.0996928e+06 3.3671039e+03 -8.1951754e+04
+-9.0935722e+06 5.5067732e+03 -1.2053401e+05
+-1.0229941e+07 8.6567356e+03 -1.3914263e+05
+-1.0714962e+07 1.1815251e+04 -1.3257229e+05
+-1.0812838e+07 1.3872135e+04 -1.0642769e+05
+-1.0651920e+07 1.4190210e+04 -7.2164296e+04
+-1.0156928e+07 1.2804304e+04 -4.1007163e+04
+-9.0672349e+06 1.0281842e+04 -1.9512634e+04
+-7.1262117e+06 7.3895953e+03 -8.1613037e+03
+-4.4692996e+06 4.7350530e+03 -3.3391597e+03
+-1.8882458e+06 2.5891387e+03 -1.2503087e+03
+-1.2572322e+05 4.9536276e+02 -7.0712380e+01
+-7.0460756e+03 3.0910570e+01 -3.9605108e+00
+-3.9485566e+02 1.9478473e+00 -1.9223055e-01
+-2.0055913e+01 1.1023744e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.5798093e+00 1.7958590e-02 5.1449807e-02
+-1.8486840e+02 2.2485608e-01 1.0522798e+00
+-3.2643806e+03 1.8383632e+00 1.8740476e+01
+-5.9100075e+04 1.4566271e+00 3.3429849e+02
+-8.5285886e+05 -6.9370893e+02 -4.7816946e+03
+-2.1247972e+06 -2.2002412e+03 -2.0490964e+04
+-3.4598104e+06 -3.2826063e+03 -4.3335748e+04
+-4.4406810e+06 -2.9375184e+03 -6.3767308e+04
+-4.9737345e+06 -1.2632264e+03 -7.3185804e+04
+-5.1814123e+06 8.5787638e+02 -6.8801186e+04
+-5.2164544e+06 2.4693667e+03 -5.3898564e+04
+-5.1522217e+06 3.0489399e+03 -3.5010742e+04
+-4.9438736e+06 2.6377583e+03 -1.8416231e+04
+-4.4395330e+06 1.6875208e+03 -7.6053101e+03
+-3.4879303e+06 7.6124440e+02 -2.5451716e+03
+-2.1541284e+06 2.1529336e+02 -9.1647133e+02
+-8.6067379e+05 3.8334485e+01 -4.1809624e+02
+-5.8989895e+04 1.6409390e+01 -2.4693126e+01
+-3.2544541e+03 2.3736634e+00 -1.4552689e+00
+-1.8406297e+02 2.4039492e-01 -7.4180859e-02
+-9.5255453e+00 1.8139965e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.6790757e+00 2.0263666e-03 3.3960332e-03
+-4.3929018e+01 1.7903122e-02 2.4058539e-02
+-5.9820037e+02 4.6918733e-02 -4.5183845e-01
+-7.1002720e+03 -1.5620242e+00 -2.1882378e+01
+-6.2839268e+04 -4.0886423e+01 -8.9817190e+02
+-1.4126383e+05 -1.2529835e+02 -3.5925560e+03
+-2.2242800e+05 -1.8952054e+02 -7.5863178e+03
+-2.8783808e+05 -1.7307435e+02 -1.1183480e+04
+-3.3048442e+05 -7.7500088e+01 -1.2814610e+04
+-3.5259875e+05 4.7125413e+01 -1.1956253e+04
+-3.5882129e+05 1.4371541e+02 -9.2090685e+03
+-3.5161311e+05 1.7984290e+02 -5.7820202e+03
+-3.2954108e+05 1.5697137e+02 -2.8310674e+03
+-2.8797822e+05 1.0164263e+02 -9.8016185e+02
+-2.2363670e+05 4.7122284e+01 -1.9255418e+02
+-1.4250773e+05 1.4333682e+01 -1.4677942e+01
+-6.3308544e+04 2.9876588e+00 -9.8104646e+00
+-7.1206166e+03 9.9458333e-01 -1.5386320e+00
+-5.9842873e+02 1.8352097e-01 -1.5617875e-01
+-4.3861832e+01 2.4306265e-02 -1.1013122e-02
+-2.6707136e+00 2.2638755e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.0758774e-01 1.7524871e-04 -6.3895733e-04
+-6.9360866e+00 9.3887335e-04 -1.5076692e-02
+-7.3040305e+01 -6.2381120e-03 -2.6688419e-01
+-6.1748647e+02 -2.0144658e-01 -4.0826080e+00
+-3.5246130e+03 -2.4094061e+00 -5.7056977e+01
+-7.9902978e+03 -7.0585434e+00 -2.1207639e+02
+-1.2671563e+04 -1.0759588e+01 -4.4378697e+02
+-1.6470421e+04 -1.0005436e+01 -6.5621264e+02
+-1.8957230e+04 -4.6413517e+00 -7.5617220e+02
+-2.0245666e+04 2.5596252e+00 -7.0989898e+02
+-2.0606219e+04 8.2521087e+00 -5.5057277e+02
+-2.0185195e+04 1.0459743e+01 -3.4897959e+02
+-1.8895312e+04 9.2088825e+00 -1.7382696e+02
+-1.6467450e+04 6.0330652e+00 -6.2591935e+01
+-1.2729351e+04 2.8687899e+00 -1.3795031e+01
+-8.0546108e+03 9.2889073e-01 -1.5337951e+00
+-3.5521954e+03 2.1602704e-01 -4.8524969e-01
+-6.2058896e+02 6.3447223e-02 -9.4464089e-02
+-7.3237737e+01 1.3696786e-02 -1.2881092e-02
+-6.9410626e+00 2.1840958e-03 -1.1476172e-03
+-5.0711082e-01 2.3736659e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.2514034e-02 1.0147348e-05 -2.1503662e-04
+-8.4017581e-01 1.3171326e-05 -3.4259997e-03
+-7.1062552e+00 -9.7634733e-04 -4.1689464e-02
+-4.6370876e+01 -1.5306025e-02 -4.3704024e-01
+-2.0254988e+02 -1.2291325e-01 -3.6576572e+00
+-4.5236160e+02 -3.4412118e-01 -1.2559934e+01
+-7.1982315e+02 -5.2587512e-01 -2.5899181e+01
+-9.3945598e+02 -4.9578502e-01 -3.8320926e+01
+-1.0842944e+03 -2.3627038e-01 -4.4364631e+01
+-1.1595255e+03 1.2093424e-01 -4.1891004e+01
+-1.1805271e+03 4.0818475e-01 -3.2707509e+01
+-1.1558336e+03 5.2296411e-01 -2.0923990e+01
+-1.0802883e+03 4.6391864e-01 -1.0593536e+01
+-9.3863541e+02 3.0706086e-01 -3.9520807e+00
+-7.2246329e+02 1.4916611e-01 -9.5438628e-01
+-4.5565175e+02 5.0729681e-02 -1.3160586e-01
+-2.0414840e+02 1.2747669e-02 -2.7197022e-02
+-4.6658854e+01 3.5596922e-03 -5.6733614e-03
+-7.1367396e+00 8.4237000e-04 -9.2755027e-04
+-8.4222313e-01 1.5242150e-04 -9.7750031e-05
+-7.2574879e-02 1.8443670e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.2408373e-03 0.0000000e+00 -3.0295872e-05
+-7.3868041e-02 0.0000000e+00 -4.0972866e-04
+-5.2961294e-01 0.0000000e+00 -4.0786673e-03
+-2.8758385e+00 0.0000000e+00 -3.3702828e-02
+-1.0630209e+01 0.0000000e+00 -2.1003464e-01
+-2.3204154e+01 0.0000000e+00 -6.7143086e-01
+-3.6922498e+01 0.0000000e+00 -1.3613135e+00
+-4.8336029e+01 0.0000000e+00 -2.0114765e+00
+-5.5929357e+01 0.0000000e+00 -2.3364702e+00
+-5.9891077e+01 0.0000000e+00 -2.2169190e+00
+-6.0996790e+01 0.0000000e+00 -1.7412123e+00
+-5.9689416e+01 0.0000000e+00 -1.1231764e+00
+-5.5700257e+01 0.0000000e+00 -5.7687695e-01
+-4.8262422e+01 0.0000000e+00 -2.2172494e-01
+-3.7027252e+01 0.0000000e+00 -5.7418245e-02
+-2.3355736e+01 0.0000000e+00 -9.1117933e-03
+-1.0712632e+01 0.0000000e+00 -1.5333707e-03
+-2.8955194e+00 0.0000000e+00 -3.0788482e-04
+-5.3242724e-01 0.0000000e+00 -5.5656402e-05
+-7.4137003e-02 0.0000000e+00 -6.5849136e-06
+-7.2563219e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+-7.2033460e-03 -9.8364746e-06 -2.7654767e-05
+-7.3506173e-02 -1.8322942e-05 -3.7120070e-04
+-5.2714757e-01 8.3745624e-04 -3.6740278e-03
+-2.8628055e+00 1.3565527e-02 -3.0272587e-02
+-1.0581722e+01 1.0988518e-01 -1.8864508e-01
+-2.3097168e+01 3.1068980e-01 -6.0632116e-01
+-3.6770674e+01 4.8290771e-01 -1.2410527e+00
+-4.8188723e+01 4.7079023e-01 -1.8591482e+00
+-5.5837902e+01 2.4975532e-01 -2.2003590e+00
+-5.9878416e+01 -7.2031071e-02 -2.1409888e+00
+-6.1050505e+01 -3.4712867e-01 -1.7401456e+00
+-5.9774813e+01 -4.7679320e-01 -1.1779551e+00
+-5.5780619e+01 -4.4746816e-01 -6.5012503e-01
+-4.8315173e+01 -3.1691136e-01 -2.8046343e-01
+-3.7049667e+01 -1.6946937e-01 -8.8579360e-02
+-2.3359117e+01 -6.6059867e-02 -1.9138713e-02
+-1.0710255e+01 -1.8382249e-02 -3.1332828e-03
+-2.8939776e+00 -4.1765682e-03 -4.9846014e-04
+-5.3199449e-01 -8.5670928e-04 -7.4503334e-05
+-7.4057683e-02 -1.4585531e-04 -7.9677859e-06
+-7.2470223e-03 -1.7267371e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.2160858e-02 -1.6478298e-04 -1.9822936e-04
+-8.3635686e-01 -9.1850637e-04 -3.1170024e-03
+-7.0760235e+00 5.0519699e-03 -3.7563176e-02
+-4.6180703e+01 1.7756597e-01 -3.9173568e-01
+-2.0170523e+02 2.1465464e+00 -3.2730492e+00
+-4.5037449e+02 6.3504729e+00 -1.1299948e+01
+-7.1696042e+02 9.8486379e+00 -2.3528410e+01
+-9.3668675e+02 9.4803084e+00 -3.5307167e+01
+-1.0826048e+03 4.9238636e+00 -4.1670843e+01
+-1.1593409e+03 -1.5438598e+00 -4.0383603e+01
+-1.1815970e+03 -6.9883540e+00 -3.2672481e+01
+-1.1574910e+03 -9.5043916e+00 -2.1987467e+01
+-1.0818339e+03 -8.8675686e+00 -1.2021731e+01
+-9.3964164e+02 -6.2385364e+00 -5.0938753e+00
+-7.2288284e+02 -3.2948624e+00 -1.5489341e+00
+-4.5570731e+02 -1.2499933e+00 -3.0944841e-01
+-2.0409972e+02 -3.2847619e-01 -4.8035344e-02
+-4.6632595e+01 -7.0879392e-02 -7.5923161e-03
+-7.1306674e+00 -1.3442010e-02 -1.0791841e-03
+-8.4128919e-01 -2.0519953e-03 -1.0698698e-04
+-7.2479134e-02 -2.1999988e-04 0.0000000e+00
+0 0 0
+0 0 0
+-5.0526554e-01 -1.8682233e-03 -6.1875367e-04
+-6.9070004e+00 -1.6653448e-02 -1.3969969e-02
+-7.2760313e+01 -4.7433620e-02 -2.4147569e-01
+-6.1525520e+02 1.3581539e+00 -3.6533369e+00
+-3.5115632e+03 3.6278054e+01 -5.0834619e+01
+-7.9570649e+03 1.1226817e+02 -1.8998525e+02
+-1.2622989e+04 1.7283294e+02 -4.0154328e+02
+-1.6423668e+04 1.6360784e+02 -6.0242425e+02
+-1.8929276e+04 8.2678453e+01 -7.0813296e+02
+-2.0243526e+04 -2.8872150e+01 -6.8294545e+02
+-2.0625340e+04 -1.2112046e+02 -5.4969254e+02
+-2.0214069e+04 -1.6276284e+02 -3.6756023e+02
+-1.8921993e+04 -1.5082760e+02 -1.9891937e+02
+-1.6484669e+04 -1.0531152e+02 -8.2626947e+01
+-1.2736378e+04 -5.4838831e+01 -2.4055861e+01
+-8.0553821e+03 -2.0168741e+01 -4.3657576e+00
+-3.5512768e+03 -4.9367053e+00 -6.7613749e-01
+-6.2020049e+02 -1.0299733e+00 -1.0551122e-01
+-7.3169851e+01 -1.7345918e-01 -1.3379240e-02
+-6.9328708e+00 -2.2462036e-02 -1.1610472e-03
+-5.0641096e-01 -2.0809103e-03 0.0000000e+00
+0 0 0
+0 0 0
+-2.6673202e+00 -1.6345015e-02 2.7212855e-03
+-4.3755486e+01 -2.0486434e-01 1.7399693e-02
+-5.9610705e+02 -1.6855107e+00 -4.3784117e-01
+-7.0779710e+03 -1.7486172e+00 -1.9632111e+01
+-6.2639087e+04 6.1294516e+02 -7.9648033e+02
+-1.4070718e+05 1.9629893e+03 -3.2038545e+03
+-2.2160589e+05 2.9821931e+03 -6.8353257e+03
+-2.8705237e+05 2.7707176e+03 -1.0228141e+04
+-3.3002463e+05 1.3577556e+03 -1.1963007e+04
+-3.5257907e+05 -5.3405701e+02 -1.1477493e+04
+-3.5915974e+05 -2.0709372e+03 -9.1892279e+03
+-3.5211245e+05 -2.7477163e+03 -6.1049320e+03
+-3.2999856e+05 -2.5283421e+03 -3.2699394e+03
+-2.8827101e+05 -1.7515193e+03 -1.3309462e+03
+-2.2375361e+05 -8.9864736e+02 -3.7022931e+02
+-1.4251771e+05 -3.2021197e+02 -6.0204596e+01
+-6.3290894e+04 -7.2174966e+01 -1.0615957e+01
+-7.1151603e+03 -1.5581835e+01 -1.5203811e+00
+-5.9778946e+02 -2.1817271e+00 -1.5138998e-01
+-4.3805195e+01 -2.1986289e-01 -1.0625851e-02
+-2.6668262e+00 -1.6594159e-02 0.0000000e+00
+0 0 0
+0 0 0
+-9.5379198e+00 -1.0269011e-01 4.4455614e-02
+-1.8414263e+02 -1.7995939e+00 9.1341265e-01
+-3.2532071e+03 -2.8285427e+01 1.6339782e+01
+-5.8928678e+04 -4.4936458e+02 2.9255804e+02
+-8.4582991e+05 -1.7610888e+03 -4.3623569e+03
+-2.1064530e+06 -2.1880071e+03 -1.8555482e+04
+-3.4329038e+06 -2.9736071e+03 -3.9506334e+04
+-4.4136625e+06 -4.7996589e+03 -5.8954410e+04
+-4.9547011e+06 -7.5434796e+03 -6.9086656e+04
+-5.1738075e+06 -1.0378157e+04 -6.6847336e+04
+-5.2185545e+06 -1.2333137e+04 -5.4485008e+04
+-5.1592398e+06 -1.2795353e+04 -3.7419202e+04
+-4.9507707e+06 -1.1714089e+04 -2.1336371e+04
+-4.4432191e+06 -9.5254009e+03 -9.8763656e+03
+-3.4881173e+06 -6.8949305e+03 -3.6931171e+03
+-2.1525367e+06 -4.4067093e+03 -1.1982546e+03
+-8.5918117e+05 -2.3766919e+03 -3.8636257e+02
+-5.8920155e+04 -4.4871268e+02 -2.2971955e+01
+-3.2501711e+03 -2.8074262e+01 -1.3624714e+00
+-1.8380168e+02 -1.7737917e+00 -6.9832904e-02
+-9.5113417e+00 -1.0063070e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0128655e+01 -3.1386989e-01 1.2077710e-01
+-3.9595152e+02 -5.9295983e+00 2.5948667e+00
+-7.0600182e+03 -1.0126570e+02 4.8277762e+01
+-1.2589045e+05 -1.7361136e+03 8.8390691e+02
+-1.8693353e+06 -8.9744542e+03 -8.6468068e+03
+-4.3955905e+06 -1.4978040e+04 -3.6006311e+04
+-7.0412758e+06 -2.1531548e+04 -7.5865412e+04
+-9.0326990e+06 -2.8531216e+04 -1.1300708e+05
+-1.0181996e+07 -3.5366182e+04 -1.3312927e+05
+-1.0687110e+07 -4.0871910e+04 -1.3048787e+05
+-1.0803020e+07 -4.3815263e+04 -1.0882357e+05
+-1.0652475e+07 -4.3431199e+04 -7.7632758e+04
+-1.0159454e+07 -3.9692399e+04 -4.7127932e+04
+-9.0664395e+06 -3.3271209e+04 -2.4177562e+04
+-7.1214649e+06 -2.5284511e+04 -1.0534792e+04
+-4.4633382e+06 -1.6963511e+04 -3.9394190e+03
+-1.8839799e+06 -9.4265384e+03 -1.1555301e+03
+-1.2555329e+05 -1.7084646e+03 -6.5713155e+01
+-7.0367810e+03 -9.9380363e+01 -3.7016529e+00
+-3.9434960e+02 -5.8008835e+00 -1.8061598e-01
+-2.0031044e+01 -3.0611588e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1279736e+01 -5.8270292e-01 1.4057389e-01
+-6.1450244e+02 -1.1218695e+01 3.0633326e+00
+-1.0904788e+04 -1.9481394e+02 5.7372460e+01
+-1.9286408e+05 -3.3759250e+03 1.0473525e+03
+-2.9011713e+06 -1.8092280e+04 -1.4021565e+04
+-6.7163891e+06 -3.1173619e+04 -5.5865293e+04
+-1.0684110e+07 -4.4997143e+04 -1.1624458e+05
+-1.3657729e+07 -5.8405643e+04 -1.7243818e+05
+-1.5371641e+07 -7.0150518e+04 -2.0333519e+05
+-1.6126368e+07 -7.8720273e+04 -2.0044719e+05
+-1.6299252e+07 -8.2684350e+04 -1.6906435e+05
+-1.6070607e+07 -8.1186957e+04 -1.2284762e+05
+-1.5329282e+07 -7.4240226e+04 -7.6674454e+04
+-1.3695506e+07 -6.2734953e+04 -4.0859869e+04
+-1.0790456e+07 -4.8241232e+04 -1.8507420e+04
+-6.8070189e+06 -3.2723989e+04 -6.8714136e+03
+-2.9170880e+06 -1.8304609e+04 -1.5490836e+03
+-1.9213865e+05 -3.3118063e+03 -8.9250884e+01
+-1.0856496e+04 -1.9064623e+02 -5.0619145e+00
+-6.1129941e+02 -1.0949482e+01 -2.4740653e-01
+-3.1091080e+01 -5.6724465e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0459143e+01 -7.3384576e-01 2.1685320e-02
+-7.9255085e+02 -1.4179758e+01 6.3485729e-01
+-1.4012716e+04 -2.4664753e+02 1.4351454e+01
+-2.4691459e+05 -4.2703841e+03 2.9247148e+02
+-3.6560384e+06 -2.3053469e+04 -1.9902682e+04
+-8.4936620e+06 -4.0039207e+04 -7.5007837e+04
+-1.3485985e+07 -5.7767360e+04 -1.5393936e+05
+-1.7172428e+07 -7.4410681e+04 -2.2708306e+05
+-1.9248833e+07 -8.8398362e+04 -2.6730284e+05
+-2.0133103e+07 -9.8175900e+04 -2.6384087e+05
+-2.0325554e+07 -1.0238316e+05 -2.2348172e+05
+-2.0061571e+07 -1.0022849e+05 -1.6359086e+05
+-1.9194372e+07 -9.1746095e+04 -1.0315084e+05
+-1.7221039e+07 -7.7844539e+04 -5.5540836e+04
+-1.3623359e+07 -6.0195630e+04 -2.5118578e+04
+-8.6110597e+06 -4.1050514e+04 -8.7578524e+03
+-3.6766266e+06 -2.3044172e+04 -1.0315770e+03
+-2.4595236e+05 -4.1821612e+03 -6.1401121e+01
+-1.3947570e+04 -2.4097871e+02 -3.5851057e+00
+-7.8818253e+02 -1.3818818e+01 -1.7925589e-01
+-4.0200277e+01 -7.1341521e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6699321e+01 -6.2086181e-01 -2.0972854e-01
+-9.1310041e+02 -1.1991929e+01 -4.0725935e+00
+-1.6113220e+04 -2.0827804e+02 -6.8123193e+01
+-2.8350117e+05 -3.5968962e+03 -1.1308852e+03
+-4.0920688e+06 -1.9438137e+04 -2.5344331e+04
+-9.6081863e+06 -3.3836187e+04 -9.0785038e+04
+-1.5262569e+07 -4.8760534e+04 -1.8398820e+05
+-1.9368848e+07 -6.2561066e+04 -2.6990475e+05
+-2.1615939e+07 -7.3937611e+04 -3.1683346e+05
+-2.2529891e+07 -8.1727119e+04 -3.1244768e+05
+-2.2714483e+07 -8.4959509e+04 -2.6481156e+05
+-2.2449609e+07 -8.3078642e+04 -1.9416901e+05
+-2.1558310e+07 -7.6115041e+04 -1.2262997e+05
+-1.9433687e+07 -6.4739192e+04 -6.5900097e+04
+-1.5432075e+07 -5.0223105e+04 -2.9285393e+04
+-9.7529833e+06 -3.4356808e+04 -9.3409413e+03
+-4.1201776e+06 -1.9330156e+04 1.8734607e+02
+-2.8249461e+05 -3.5186445e+03 7.8484990e+00
+-1.6042957e+04 -2.0327050e+02 2.8297381e-01
+-9.0827225e+02 -1.1674627e+01 6.9822586e-03
+-4.6408029e+01 -6.0299077e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0153093e+01 -2.4347682e-01 -4.3445510e-01
+-9.7988949e+02 -4.6991364e+00 -8.6110687e+00
+-1.7280728e+04 -8.1511908e+01 -1.4688803e+02
+-3.0395547e+05 -1.4053637e+03 -2.4764239e+03
+-4.2981750e+06 -7.5934123e+03 -2.9222460e+04
+-1.0189376e+07 -1.3225353e+04 -1.0114596e+05
+-1.6201249e+07 -1.9043945e+04 -2.0319825e+05
+-2.0513705e+07 -2.4389519e+04 -2.9688222e+05
+-2.2821147e+07 -2.8760223e+04 -3.4769593e+05
+-2.3724281e+07 -3.1726646e+04 -3.4243410e+05
+-2.3894623e+07 -3.2938669e+04 -2.9003496e+05
+-2.3640450e+07 -3.2196841e+04 -2.1256144e+05
+-2.2764996e+07 -2.9512710e+04 -1.3406299e+05
+-2.0593081e+07 -2.5131598e+04 -7.1676266e+04
+-1.6395392e+07 -1.9526626e+04 -3.1276709e+04
+-1.0355060e+07 -1.3378060e+04 -9.1886770e+03
+-4.3332101e+06 -7.5353990e+03 1.3941163e+03
+-3.0300316e+05 -1.3739910e+03 7.7578233e+01
+-1.7212121e+04 -7.9507301e+01 4.2441223e+00
+-9.7505616e+02 -4.5723204e+00 2.0045822e-01
+-4.9856126e+01 -2.3634623e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.1243183e+01 2.4347682e-01 -5.2673156e-01
+-1.0010256e+03 4.6991365e+00 -1.0467210e+01
+-1.7651742e+04 8.1511908e+01 -1.7894438e+02
+-3.1049275e+05 1.4053637e+03 -3.0212821e+03
+-4.3574152e+06 7.5934122e+03 -3.0630320e+04
+-1.0368148e+07 1.3225353e+04 -1.0475571e+05
+-1.6492434e+07 1.9043946e+04 -2.0979305e+05
+-2.0866000e+07 2.4389520e+04 -3.0606640e+05
+-2.3186694e+07 2.8760223e+04 -3.5813441e+05
+-2.4081640e+07 3.1726642e+04 -3.5251377e+05
+-2.4245749e+07 3.2938673e+04 -2.9845424e+05
+-2.3996979e+07 3.2196844e+04 -2.1864068e+05
+-2.3131719e+07 2.9512712e+04 -1.3777838e+05
+-2.0951161e+07 2.5131599e+04 -7.3485069e+04
+-1.6695819e+07 1.9526626e+04 -3.1823808e+04
+-1.0541651e+07 1.3378060e+04 -9.0329092e+03
+-4.3952381e+06 7.5353987e+03 1.8896880e+03
+-3.0957529e+05 1.3739910e+03 1.0641750e+02
+-1.7584685e+04 7.9507301e+01 5.8941155e+00
+-9.9624918e+02 4.5723204e+00 2.8154799e-01
+-5.0947381e+01 2.3634623e-01 0.0000000e+00
+0 0 0
+0 0 0
+-5.0153093e+01 6.2086181e-01 -4.3445509e-01
+-9.7988949e+02 1.1991929e+01 -8.6110688e+00
+-1.7280728e+04 2.0827804e+02 -1.4688803e+02
+-3.0395547e+05 3.5968962e+03 -2.4764239e+03
+-4.2981750e+06 1.9438137e+04 -2.9222460e+04
+-1.0189376e+07 3.3836188e+04 -1.0114596e+05
+-1.6201249e+07 4.8760534e+04 -2.0319825e+05
+-2.0513705e+07 6.2561066e+04 -2.9688222e+05
+-2.2821147e+07 7.3937609e+04 -3.4769593e+05
+-2.3724281e+07 8.1727119e+04 -3.4243409e+05
+-2.3894623e+07 8.4959510e+04 -2.9003496e+05
+-2.3640450e+07 8.3078639e+04 -2.1256144e+05
+-2.2764996e+07 7.6115041e+04 -1.3406299e+05
+-2.0593081e+07 6.4739190e+04 -7.1676267e+04
+-1.6395392e+07 5.0223104e+04 -3.1276709e+04
+-1.0355060e+07 3.4356808e+04 -9.1886773e+03
+-4.3332101e+06 1.9330156e+04 1.3941163e+03
+-3.0300316e+05 3.5186445e+03 7.7578237e+01
+-1.7212121e+04 2.0327050e+02 4.2441225e+00
+-9.7505616e+02 1.1674627e+01 2.0045822e-01
+-4.9856126e+01 6.0299077e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.6699321e+01 7.3384576e-01 -2.0972852e-01
+-9.1310041e+02 1.4179758e+01 -4.0725935e+00
+-1.6113220e+04 2.4664753e+02 -6.8123191e+01
+-2.8350117e+05 4.2703841e+03 -1.1308853e+03
+-4.0920688e+06 2.3053469e+04 -2.5344331e+04
+-9.6081863e+06 4.0039206e+04 -9.0785038e+04
+-1.5262569e+07 5.7767357e+04 -1.8398820e+05
+-1.9368848e+07 7.4410680e+04 -2.6990475e+05
+-2.1615939e+07 8.8398362e+04 -3.1683346e+05
+-2.2529891e+07 9.8175901e+04 -3.1244768e+05
+-2.2714483e+07 1.0238316e+05 -2.6481157e+05
+-2.2449609e+07 1.0022849e+05 -1.9416901e+05
+-2.1558310e+07 9.1746094e+04 -1.2262998e+05
+-1.9433687e+07 7.7844539e+04 -6.5900099e+04
+-1.5432075e+07 6.0195631e+04 -2.9285393e+04
+-9.7529833e+06 4.1050513e+04 -9.3409421e+03
+-4.1201776e+06 2.3044172e+04 1.8734622e+02
+-2.8249461e+05 4.1821612e+03 7.8485037e+00
+-1.6042957e+04 2.4097871e+02 2.8297398e-01
+-9.0827225e+02 1.3818818e+01 6.9822626e-03
+-4.6408029e+01 7.1341521e-01 0.0000000e+00
+0 0 0
+0 0 0
+-4.0459143e+01 5.8270292e-01 2.1685328e-02
+-7.9255085e+02 1.1218695e+01 6.3485728e-01
+-1.4012716e+04 1.9481394e+02 1.4351455e+01
+-2.4691459e+05 3.3759250e+03 2.9247140e+02
+-3.6560384e+06 1.8092280e+04 -1.9902683e+04
+-8.4936620e+06 3.1173619e+04 -7.5007838e+04
+-1.3485985e+07 4.4997145e+04 -1.5393936e+05
+-1.7172428e+07 5.8405643e+04 -2.2708306e+05
+-1.9248833e+07 7.0150518e+04 -2.6730284e+05
+-2.0133103e+07 7.8720277e+04 -2.6384087e+05
+-2.0325554e+07 8.2684347e+04 -2.2348172e+05
+-2.0061571e+07 8.1186957e+04 -1.6359086e+05
+-1.9194372e+07 7.4240225e+04 -1.0315084e+05
+-1.7221039e+07 6.2734953e+04 -5.5540837e+04
+-1.3623359e+07 4.8241232e+04 -2.5118582e+04
+-8.6110597e+06 3.2723990e+04 -8.7578516e+03
+-3.6766266e+06 1.8304609e+04 -1.0315769e+03
+-2.4595236e+05 3.3118064e+03 -6.1401115e+01
+-1.3947570e+04 1.9064623e+02 -3.5851058e+00
+-7.8818253e+02 1.0949482e+01 -1.7925589e-01
+-4.0200277e+01 5.6724464e-01 0.0000000e+00
+0 0 0
+0 0 0
+-3.1279736e+01 3.1386989e-01 1.4057389e-01
+-6.1450244e+02 5.9295983e+00 3.0633325e+00
+-1.0904788e+04 1.0126570e+02 5.7372463e+01
+-1.9286408e+05 1.7361136e+03 1.0473525e+03
+-2.9011713e+06 8.9744543e+03 -1.4021565e+04
+-6.7163891e+06 1.4978040e+04 -5.5865293e+04
+-1.0684110e+07 2.1531547e+04 -1.1624458e+05
+-1.3657729e+07 2.8531216e+04 -1.7243818e+05
+-1.5371641e+07 3.5366183e+04 -2.0333519e+05
+-1.6126368e+07 4.0871909e+04 -2.0044719e+05
+-1.6299252e+07 4.3815263e+04 -1.6906435e+05
+-1.6070607e+07 4.3431198e+04 -1.2284762e+05
+-1.5329282e+07 3.9692399e+04 -7.6674455e+04
+-1.3695506e+07 3.3271209e+04 -4.0859868e+04
+-1.0790456e+07 2.5284511e+04 -1.8507421e+04
+-6.8070189e+06 1.6963510e+04 -6.8714137e+03
+-2.9170880e+06 9.4265384e+03 -1.5490836e+03
+-1.9213865e+05 1.7084647e+03 -8.9250882e+01
+-1.0856496e+04 9.9380364e+01 -5.0619147e+00
+-6.1129941e+02 5.8008836e+00 -2.4740653e-01
+-3.1091080e+01 3.0611588e-01 0.0000000e+00
+0 0 0
+0 0 0
+-2.0128655e+01 1.0269011e-01 1.2077710e-01
+-3.9595152e+02 1.7995939e+00 2.5948666e+00
+-7.0600182e+03 2.8285427e+01 4.8277762e+01
+-1.2589045e+05 4.4936458e+02 8.8390695e+02
+-1.8693353e+06 1.7610889e+03 -8.6468067e+03
+-4.3955905e+06 2.1880071e+03 -3.6006311e+04
+-7.0412758e+06 2.9736074e+03 -7.5865412e+04
+-9.0326990e+06 4.7996598e+03 -1.1300708e+05
+-1.0181996e+07 7.5434790e+03 -1.3312927e+05
+-1.0687110e+07 1.0378157e+04 -1.3048787e+05
+-1.0803020e+07 1.2333137e+04 -1.0882357e+05
+-1.0652475e+07 1.2795354e+04 -7.7632758e+04
+-1.0159454e+07 1.1714089e+04 -4.7127931e+04
+-9.0664395e+06 9.5254009e+03 -2.4177562e+04
+-7.1214649e+06 6.8949306e+03 -1.0534792e+04
+-4.4633382e+06 4.4067097e+03 -3.9394190e+03
+-1.8839799e+06 2.3766919e+03 -1.1555301e+03
+-1.2555329e+05 4.4871268e+02 -6.5713154e+01
+-7.0367810e+03 2.8074263e+01 -3.7016531e+00
+-3.9434960e+02 1.7737918e+00 -1.8061598e-01
+-2.0031044e+01 1.0063070e-01 0.0000000e+00
+0 0 0
+0 0 0
+-9.5379198e+00 1.6345015e-02 4.4455616e-02
+-1.8414263e+02 2.0486433e-01 9.1341265e-01
+-3.2532071e+03 1.6855107e+00 1.6339782e+01
+-5.8928678e+04 1.7486175e+00 2.9255804e+02
+-8.4582991e+05 -6.1294516e+02 -4.3623571e+03
+-2.1064530e+06 -1.9629893e+03 -1.8555482e+04
+-3.4329038e+06 -2.9821931e+03 -3.9506334e+04
+-4.4136625e+06 -2.7707176e+03 -5.8954410e+04
+-4.9547011e+06 -1.3577556e+03 -6.9086656e+04
+-5.1738075e+06 5.3405717e+02 -6.6847336e+04
+-5.2185545e+06 2.0709372e+03 -5.4485008e+04
+-5.1592398e+06 2.7477163e+03 -3.7419202e+04
+-4.9507707e+06 2.5283422e+03 -2.1336371e+04
+-4.4432191e+06 1.7515194e+03 -9.8763659e+03
+-3.4881173e+06 8.9864737e+02 -3.6931171e+03
+-2.1525367e+06 3.2021201e+02 -1.1982546e+03
+-8.5918117e+05 7.2174970e+01 -3.8636254e+02
+-5.8920155e+04 1.5581834e+01 -2.2971955e+01
+-3.2501711e+03 2.1817270e+00 -1.3624715e+00
+-1.8380168e+02 2.1986289e-01 -6.9832901e-02
+-9.5113417e+00 1.6594158e-02 0.0000000e+00
+0 0 0
+0 0 0
+-2.6673202e+00 1.8682233e-03 2.7212855e-03
+-4.3755486e+01 1.6653447e-02 1.7399697e-02
+-5.9610705e+02 4.7433603e-02 -4.3784113e-01
+-7.0779710e+03 -1.3581539e+00 -1.9632111e+01
+-6.2639087e+04 -3.6278054e+01 -7.9648033e+02
+-1.4070718e+05 -1.1226818e+02 -3.2038545e+03
+-2.2160589e+05 -1.7283294e+02 -6.8353257e+03
+-2.8705237e+05 -1.6360784e+02 -1.0228141e+04
+-3.3002463e+05 -8.2678448e+01 -1.1963007e+04
+-3.5257907e+05 2.8872151e+01 -1.1477493e+04
+-3.5915974e+05 1.2112048e+02 -9.1892279e+03
+-3.5211245e+05 1.6276284e+02 -6.1049321e+03
+-3.2999856e+05 1.5082760e+02 -3.2699394e+03
+-2.8827101e+05 1.0531151e+02 -1.3309462e+03
+-2.2375361e+05 5.4838836e+01 -3.7022931e+02
+-1.4251771e+05 2.0168741e+01 -6.0204599e+01
+-6.3290894e+04 4.9367051e+00 -1.0615956e+01
+-7.1151603e+03 1.0299732e+00 -1.5203811e+00
+-5.9778946e+02 1.7345918e-01 -1.5138998e-01
+-4.3805195e+01 2.2462036e-02 -1.0625851e-02
+-2.6668262e+00 2.0809103e-03 0.0000000e+00
+0 0 0
+0 0 0
+-5.0526554e-01 1.6478298e-04 -6.1875368e-04
+-6.9070004e+00 9.1850632e-04 -1.3969969e-02
+-7.2760313e+01 -5.0519699e-03 -2.4147568e-01
+-6.1525520e+02 -1.7756598e-01 -3.6533369e+00
+-3.5115632e+03 -2.1465465e+00 -5.0834619e+01
+-7.9570649e+03 -6.3504729e+00 -1.8998525e+02
+-1.2622989e+04 -9.8486382e+00 -4.0154328e+02
+-1.6423668e+04 -9.4803089e+00 -6.0242425e+02
+-1.8929276e+04 -4.9238639e+00 -7.0813296e+02
+-2.0243526e+04 1.5438600e+00 -6.8294545e+02
+-2.0625340e+04 6.9883537e+00 -5.4969254e+02
+-2.0214069e+04 9.5043918e+00 -3.6756023e+02
+-1.8921993e+04 8.8675686e+00 -1.9891937e+02
+-1.6484669e+04 6.2385354e+00 -8.2626946e+01
+-1.2736378e+04 3.2948621e+00 -2.4055862e+01
+-8.0553821e+03 1.2499933e+00 -4.3657577e+00
+-3.5512768e+03 3.2847616e-01 -6.7613747e-01
+-6.2020049e+02 7.0879385e-02 -1.0551121e-01
+-7.3169851e+01 1.3442009e-02 -1.3379240e-02
+-6.9328708e+00 2.0519952e-03 -1.1610472e-03
+-5.0641096e-01 2.1999988e-04 0.0000000e+00
+0 0 0
+0 0 0
+-7.2160858e-02 9.8364744e-06 -1.9822937e-04
+-8.3635686e-01 1.8322946e-05 -3.1170023e-03
+-7.0760235e+00 -8.3745624e-04 -3.7563176e-02
+-4.6180703e+01 -1.3565527e-02 -3.9173569e-01
+-2.0170523e+02 -1.0988518e-01 -3.2730491e+00
+-4.5037449e+02 -3.1068981e-01 -1.1299948e+01
+-7.1696042e+02 -4.8290770e-01 -2.3528410e+01
+-9.3668675e+02 -4.7079022e-01 -3.5307167e+01
+-1.0826048e+03 -2.4975529e-01 -4.1670843e+01
+-1.1593409e+03 7.2031076e-02 -4.0383603e+01
+-1.1815970e+03 3.4712866e-01 -3.2672481e+01
+-1.1574910e+03 4.7679319e-01 -2.1987467e+01
+-1.0818339e+03 4.4746815e-01 -1.2021732e+01
+-9.3964164e+02 3.1691138e-01 -5.0938752e+00
+-7.2288284e+02 1.6946935e-01 -1.5489341e+00
+-4.5570731e+02 6.6059864e-02 -3.0944842e-01
+-2.0409972e+02 1.8382249e-02 -4.8035344e-02
+-4.6632595e+01 4.1765682e-03 -7.5923154e-03
+-7.1306674e+00 8.5670921e-04 -1.0791841e-03
+-8.4128919e-01 1.4585531e-04 -1.0698697e-04
+-7.2479134e-02 1.7267370e-05 0.0000000e+00
+0 0 0
+0 0 0
+-7.2033460e-03 0.0000000e+00 -2.7654768e-05
+-7.3506173e-02 0.0000000e+00 -3.7120069e-04
+-5.2714757e-01 0.0000000e+00 -3.6740278e-03
+-2.8628055e+00 0.0000000e+00 -3.0272587e-02
+-1.0581722e+01 0.0000000e+00 -1.8864508e-01
+-2.3097168e+01 0.0000000e+00 -6.0632116e-01
+-3.6770674e+01 0.0000000e+00 -1.2410527e+00
+-4.8188723e+01 0.0000000e+00 -1.8591482e+00
+-5.5837902e+01 0.0000000e+00 -2.2003590e+00
+-5.9878416e+01 0.0000000e+00 -2.1409888e+00
+-6.1050505e+01 0.0000000e+00 -1.7401456e+00
+-5.9774813e+01 0.0000000e+00 -1.1779551e+00
+-5.5780619e+01 0.0000000e+00 -6.5012503e-01
+-4.8315173e+01 0.0000000e+00 -2.8046343e-01
+-3.7049667e+01 0.0000000e+00 -8.8579359e-02
+-2.3359117e+01 0.0000000e+00 -1.9138713e-02
+-1.0710255e+01 0.0000000e+00 -3.1332829e-03
+-2.8939776e+00 0.0000000e+00 -4.9846013e-04
+-5.3199449e-01 0.0000000e+00 -7.4503328e-05
+-7.4057683e-02 0.0000000e+00 -7.9677856e-06
+-7.2470223e-03 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0.0000000e+00 -9.1460604e-06 -2.4750402e-05
+0.0000000e+00 -2.0952478e-05 -3.2940017e-04
+0.0000000e+00 7.0322095e-04 -3.2387056e-03
+0.0000000e+00 1.1750257e-02 -2.6596771e-02
+0.0000000e+00 9.6050910e-02 -1.6576730e-01
+0.0000000e+00 2.7505149e-01 -5.3661979e-01
+0.0000000e+00 4.3683546e-01 -1.1118793e+00
+0.0000000e+00 4.4356586e-01 -1.6945771e+00
+0.0000000e+00 2.6370240e-01 -2.0519021e+00
+0.0000000e+00 -1.9436996e-02 -2.0564745e+00
+0.0000000e+00 -2.8033056e-01 -1.7366433e+00
+0.0000000e+00 -4.2506922e-01 -1.2360677e+00
+0.0000000e+00 -4.2764887e-01 -7.2967080e-01
+0.0000000e+00 -3.2615436e-01 -3.4503032e-01
+0.0000000e+00 -1.9086368e-01 -1.2311253e-01
+0.0000000e+00 -8.2520353e-02 -3.0299041e-02
+0.0000000e+00 -2.4405149e-02 -4.9129743e-03
+0.0000000e+00 -4.7939101e-03 -7.0906752e-04
+0.0000000e+00 -8.5954269e-04 -9.4919360e-05
+0.0000000e+00 -1.3656140e-04 -9.4148120e-06
+0.0000000e+00 -1.5738254e-05 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 -1.4931209e-04 -1.7969933e-04
+0.0000000e+00 -8.5781559e-04 -2.7832248e-03
+0.0000000e+00 4.0108980e-03 -3.3149608e-02
+0.0000000e+00 1.5289582e-01 -3.4342232e-01
+0.0000000e+00 1.8677580e+00 -2.8633545e+00
+0.0000000e+00 5.5972131e+00 -9.9566277e+00
+0.0000000e+00 8.8739512e+00 -2.0992620e+01
+0.0000000e+00 8.9089543e+00 -3.2065680e+01
+0.0000000e+00 5.2137454e+00 -3.8747608e+01
+0.0000000e+00 -4.5663244e-01 -3.8717711e+01
+0.0000000e+00 -5.6122199e+00 -3.2594868e+01
+0.0000000e+00 -8.4399605e+00 -2.3117285e+01
+0.0000000e+00 -8.4603968e+00 -1.3572077e+01
+0.0000000e+00 -6.4335899e+00 -6.3478187e+00
+0.0000000e+00 -3.7449557e+00 -2.2070796e+00
+0.0000000e+00 -1.5952746e+00 -5.0707066e-01
+0.0000000e+00 -4.4868455e-01 -7.1099604e-02
+0.0000000e+00 -7.7981537e-02 -9.6807796e-03
+0.0000000e+00 -1.2969337e-02 -1.2365004e-03
+0.0000000e+00 -1.8792589e-03 -1.1576619e-04
+0.0000000e+00 -1.9802132e-04 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 -1.6622786e-03 -5.9637260e-04
+0.0000000e+00 -1.4920871e-02 -1.2803215e-02
+0.0000000e+00 -4.5072225e-02 -2.1474486e-01
+0.0000000e+00 1.1543283e+00 -3.1996442e+00
+0.0000000e+00 3.1396803e+01 -4.4236261e+01
+0.0000000e+00 9.8441106e+01 -1.6653735e+02
+0.0000000e+00 1.5502399e+02 -3.5656261e+02
+0.0000000e+00 1.5332297e+02 -5.4484650e+02
+0.0000000e+00 8.7952589e+01 -6.5628214e+02
+0.0000000e+00 -9.4337810e+00 -6.5337902e+02
+0.0000000e+00 -9.6640146e+01 -5.4815539e+02
+0.0000000e+00 -1.4384323e+02 -3.8732706e+02
+0.0000000e+00 -1.4357535e+02 -2.2614280e+02
+0.0000000e+00 -1.0882780e+02 -1.0460716e+02
+0.0000000e+00 -6.3006887e+01 -3.5401148e+01
+0.0000000e+00 -2.6450803e+01 -7.5077355e+00
+0.0000000e+00 -7.0197267e+00 -8.8500654e-01
+0.0000000e+00 -1.0538372e+00 -1.1681335e-01
+0.0000000e+00 -1.6014389e-01 -1.3757958e-02
+0.0000000e+00 -2.0152561e-02 -1.1577381e-03
+0.0000000e+00 -1.8533165e-03 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 -1.4358122e-02 1.9725679e-03
+0.0000000e+00 -1.8001826e-01 9.6571326e-03
+0.0000000e+00 -1.4875805e+00 -4.3271430e-01
+0.0000000e+00 -1.8161911e+00 -1.7342983e+01
+0.0000000e+00 5.2749409e+02 -6.8912836e+02
+0.0000000e+00 1.7119169e+03 -2.7930730e+03
+0.0000000e+00 2.6624943e+03 -6.0391909e+03
+0.0000000e+00 2.5898151e+03 -9.2102249e+03
+0.0000000e+00 1.4534940e+03 -1.1048608e+04
+0.0000000e+00 -1.9083422e+02 -1.0956025e+04
+0.0000000e+00 -1.6413033e+03 -9.1594271e+03
+0.0000000e+00 -2.4158501e+03 -6.4488572e+03
+0.0000000e+00 -2.4004167e+03 -3.7457681e+03
+0.0000000e+00 -1.8132232e+03 -1.7153782e+03
+0.0000000e+00 -1.0442443e+03 -5.6647470e+02
+0.0000000e+00 -4.3323930e+02 -1.1066057e+02
+0.0000000e+00 -1.0830903e+02 -1.1436938e+01
+0.0000000e+00 -1.4483580e+01 -1.4821486e+00
+0.0000000e+00 -1.9450778e+00 -1.4386149e-01
+0.0000000e+00 -1.9461389e-01 -1.0020852e-02
+0.0000000e+00 -1.4684342e-02 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 -8.9444403e-02 3.6661058e-02
+0.0000000e+00 -1.5627858e+00 7.5699023e-01
+0.0000000e+00 -2.4476785e+01 1.3605725e+01
+0.0000000e+00 -3.8741944e+02 2.4456291e+02
+0.0000000e+00 -1.5150261e+03 -3.8847174e+03
+0.0000000e+00 -1.8628736e+03 -1.6415967e+04
+0.0000000e+00 -2.4718090e+03 -3.5277610e+04
+0.0000000e+00 -3.9422096e+03 -5.3575574e+04
+0.0000000e+00 -6.2348586e+03 -6.4359577e+04
+0.0000000e+00 -8.7075718e+03 -6.4337509e+04
+0.0000000e+00 -1.0540780e+04 -5.4688794e+04
+0.0000000e+00 -1.1152638e+04 -3.9643494e+04
+0.0000000e+00 -1.0405873e+04 -2.4217395e+04
+0.0000000e+00 -8.5960709e+03 -1.2162750e+04
+0.0000000e+00 -6.2752295e+03 -4.8440943e+03
+0.0000000e+00 -3.9950563e+03 -1.4631941e+03
+0.0000000e+00 -2.1151838e+03 -3.4657583e+02
+0.0000000e+00 -3.9224050e+02 -2.0750911e+01
+0.0000000e+00 -2.4618784e+01 -1.2388184e+00
+0.0000000e+00 -1.5602638e+00 -6.3849243e-02
+0.0000000e+00 -8.8764892e-02 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 -2.7278583e-01 9.9794660e-02
+0.0000000e+00 -5.1385006e+00 2.1532291e+00
+0.0000000e+00 -8.7469785e+01 4.0201897e+01
+0.0000000e+00 -1.4946457e+03 7.3771787e+02
+0.0000000e+00 -7.7082672e+03 -7.9201617e+03
+0.0000000e+00 -1.2849918e+04 -3.2409552e+04
+0.0000000e+00 -1.8427375e+04 -6.8666463e+04
+0.0000000e+00 -2.4366300e+04 -1.0388800e+05
+0.0000000e+00 -3.0207867e+04 -1.2526221e+05
+0.0000000e+00 -3.5020159e+04 -1.2658947e+05
+0.0000000e+00 -3.7753500e+04 -1.0970777e+05
+0.0000000e+00 -3.7682713e+04 -8.2021299e+04
+0.0000000e+00 -3.4674258e+04 -5.2573782e+04
+0.0000000e+00 -2.9216976e+04 -2.8447429e+04
+0.0000000e+00 -2.2254680e+04 -1.2671131e+04
+0.0000000e+00 -1.4909943e+04 -4.4099477e+03
+0.0000000e+00 -8.2452413e+03 -1.0340739e+03
+0.0000000e+00 -1.4906434e+03 -5.9159238e+01
+0.0000000e+00 -8.7007827e+01 -3.3529761e+00
+0.0000000e+00 -5.0957565e+00 -1.6451558e-01
+0.0000000e+00 -2.6971242e-01 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 -5.0601135e-01 1.1308575e-01
+0.0000000e+00 -9.7146363e+00 2.4849498e+00
+0.0000000e+00 -1.6816251e+02 4.6857238e+01
+0.0000000e+00 -2.9046883e+03 8.5931762e+02
+0.0000000e+00 -1.5528914e+04 -1.2953203e+04
+0.0000000e+00 -2.6747782e+04 -5.0626293e+04
+0.0000000e+00 -3.8582274e+04 -1.0579177e+05
+0.0000000e+00 -5.0054713e+04 -1.5925032e+05
+0.0000000e+00 -6.0154807e+04 -1.9202284e+05
+0.0000000e+00 -6.7647494e+04 -1.9492490e+05
+0.0000000e+00 -7.1306433e+04 -1.7048381e+05
+0.0000000e+00 -7.0318247e+04 -1.2934423e+05
+0.0000000e+00 -6.4572369e+04 -8.4697260e+04
+0.0000000e+00 -5.4739284e+04 -4.7158754e+04
+0.0000000e+00 -4.2155053e+04 -2.1677194e+04
+0.0000000e+00 -2.8582000e+04 -7.5910698e+03
+0.0000000e+00 -1.5953639e+04 -1.3960194e+03
+0.0000000e+00 -2.8872410e+03 -8.0928409e+01
+0.0000000e+00 -1.6678153e+02 -4.6192391e+00
+0.0000000e+00 -9.6113513e+00 -2.2709830e-01
+0.0000000e+00 -4.9943077e-01 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 -6.3699029e-01 6.4305659e-03
+0.0000000e+00 -1.2273781e+01 3.1823451e-01
+0.0000000e+00 -2.1282382e+02 8.7121462e+00
+0.0000000e+00 -3.6729180e+03 1.9416367e+02
+0.0000000e+00 -1.9778310e+04 -1.8342652e+04
+0.0000000e+00 -3.4346611e+04 -6.8011425e+04
+0.0000000e+00 -4.9543780e+04 -1.4018297e+05
+0.0000000e+00 -6.3816734e+04 -2.0979171e+05
+0.0000000e+00 -7.5868713e+04 -2.5241252e+05
+0.0000000e+00 -8.4416115e+04 -2.5637234e+05
+0.0000000e+00 -8.8287599e+04 -2.2492911e+05
+0.0000000e+00 -8.6727582e+04 -1.7161158e+05
+0.0000000e+00 -7.9652025e+04 -1.1324126e+05
+0.0000000e+00 -6.7753727e+04 -6.3545593e+04
+0.0000000e+00 -5.2458248e+04 -2.9207662e+04
+0.0000000e+00 -3.5769516e+04 -9.7666342e+03
+0.0000000e+00 -2.0054870e+04 -9.6111468e+02
+0.0000000e+00 -3.6439538e+03 -5.7609926e+01
+0.0000000e+00 -2.1069862e+02 -3.3887766e+00
+0.0000000e+00 -1.2123639e+01 -1.7062361e-01
+0.0000000e+00 -6.2780520e-01 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 -5.3878641e-01 -1.9673623e-01
+0.0000000e+00 -1.0377536e+01 -3.7984736e+00
+0.0000000e+00 -1.7967294e+02 -6.3094343e+01
+0.0000000e+00 -3.0928951e+03 -1.0395714e+03
+0.0000000e+00 -1.6671740e+04 -2.3223166e+04
+0.0000000e+00 -2.9019183e+04 -8.2149631e+04
+0.0000000e+00 -4.1817253e+04 -1.6729682e+05
+0.0000000e+00 -5.3661229e+04 -2.4899048e+05
+0.0000000e+00 -6.3469802e+04 -2.9869636e+05
+0.0000000e+00 -7.0277938e+04 -3.0300183e+05
+0.0000000e+00 -7.3247963e+04 -2.6585671e+05
+0.0000000e+00 -7.1847001e+04 -2.0303454e+05
+0.0000000e+00 -6.6019776e+04 -1.3410382e+05
+0.0000000e+00 -5.6279499e+04 -7.5128256e+04
+0.0000000e+00 -4.3711299e+04 -3.4085997e+04
+0.0000000e+00 -2.9902883e+04 -1.0639047e+04
+0.0000000e+00 -1.6809692e+04 8.9288980e+01
+0.0000000e+00 -3.0646210e+03 2.1758792e+00
+0.0000000e+00 -1.7766207e+02 -4.4266279e-02
+0.0000000e+00 -1.0238801e+01 -9.4223226e-03
+0.0000000e+00 -5.3044733e-01 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 -2.1126550e-01 -3.9293074e-01
+0.0000000e+00 -4.0660469e+00 -7.7469028e+00
+0.0000000e+00 -7.0308563e+01 -1.3134647e+02
+0.0000000e+00 -1.2082913e+03 -2.2008031e+03
+0.0000000e+00 -6.5117797e+03 -2.6649615e+04
+0.0000000e+00 -1.1341182e+04 -9.1329400e+04
+0.0000000e+00 -1.6331197e+04 -1.8446004e+05
+0.0000000e+00 -2.0919987e+04 -2.7345359e+05
+0.0000000e+00 -2.4689062e+04 -3.2726517e+05
+0.0000000e+00 -2.7281435e+04 -3.3149609e+05
+0.0000000e+00 -2.8394421e+04 -2.9060305e+05
+0.0000000e+00 -2.7836438e+04 -2.2178118e+05
+0.0000000e+00 -2.5587747e+04 -1.4629256e+05
+0.0000000e+00 -2.1836228e+04 -8.1623868e+04
+0.0000000e+00 -1.6985497e+04 -3.6526969e+04
+0.0000000e+00 -1.1638029e+04 -1.0705600e+04
+0.0000000e+00 -6.5505525e+03 1.1334899e+03
+0.0000000e+00 -1.1964551e+03 6.2670250e+01
+0.0000000e+00 -6.9477332e+01 3.4003906e+00
+0.0000000e+00 -4.0092428e+00 1.5914631e-01
+0.0000000e+00 -2.0787526e-01 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 2.1126551e-01 -4.7333981e-01
+0.0000000e+00 4.0660471e+00 -9.3589006e+00
+0.0000000e+00 7.0308562e+01 -1.5907930e+02
+0.0000000e+00 1.2082913e+03 -2.6703237e+03
+0.0000000e+00 6.5117796e+03 -2.7884390e+04
+0.0000000e+00 1.1341182e+04 -9.4507671e+04
+0.0000000e+00 1.6331198e+04 -1.9031895e+05
+0.0000000e+00 2.0919987e+04 -2.8173615e+05
+0.0000000e+00 2.4689063e+04 -3.3687438e+05
+0.0000000e+00 2.7281441e+04 -3.4102029e+05
+0.0000000e+00 2.8394423e+04 -2.9881747e+05
+0.0000000e+00 2.7836443e+04 -2.2794778e+05
+0.0000000e+00 2.5587747e+04 -1.5024412e+05
+0.0000000e+00 2.1836227e+04 -8.3668735e+04
+0.0000000e+00 1.6985497e+04 -3.7228109e+04
+0.0000000e+00 1.1638030e+04 -1.0631710e+04
+0.0000000e+00 6.5505527e+03 1.5627638e+03
+0.0000000e+00 1.1964551e+03 8.7722747e+01
+0.0000000e+00 6.9477330e+01 4.8374894e+00
+0.0000000e+00 4.0092429e+00 2.2992462e-01
+0.0000000e+00 2.0787527e-01 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 5.3878641e-01 -3.9293071e-01
+0.0000000e+00 1.0377536e+01 -7.7469036e+00
+0.0000000e+00 1.7967295e+02 -1.3134647e+02
+0.0000000e+00 3.0928952e+03 -2.2008032e+03
+0.0000000e+00 1.6671740e+04 -2.6649613e+04
+0.0000000e+00 2.9019185e+04 -9.1329402e+04
+0.0000000e+00 4.1817251e+04 -1.8446004e+05
+0.0000000e+00 5.3661229e+04 -2.7345359e+05
+0.0000000e+00 6.3469801e+04 -3.2726517e+05
+0.0000000e+00 7.0277940e+04 -3.3149610e+05
+0.0000000e+00 7.3247970e+04 -2.9060305e+05
+0.0000000e+00 7.1846997e+04 -2.2178118e+05
+0.0000000e+00 6.6019777e+04 -1.4629256e+05
+0.0000000e+00 5.6279498e+04 -8.1623866e+04
+0.0000000e+00 4.3711299e+04 -3.6526966e+04
+0.0000000e+00 2.9902883e+04 -1.0705601e+04
+0.0000000e+00 1.6809692e+04 1.1334897e+03
+0.0000000e+00 3.0646210e+03 6.2670248e+01
+0.0000000e+00 1.7766208e+02 3.4003913e+00
+0.0000000e+00 1.0238801e+01 1.5914632e-01
+0.0000000e+00 5.3044734e-01 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 6.3699029e-01 -1.9673621e-01
+0.0000000e+00 1.2273781e+01 -3.7984736e+00
+0.0000000e+00 2.1282382e+02 -6.3094326e+01
+0.0000000e+00 3.6729180e+03 -1.0395719e+03
+0.0000000e+00 1.9778310e+04 -2.3223165e+04
+0.0000000e+00 3.4346609e+04 -8.2149629e+04
+0.0000000e+00 4.9543776e+04 -1.6729682e+05
+0.0000000e+00 6.3816735e+04 -2.4899049e+05
+0.0000000e+00 7.5868716e+04 -2.9869636e+05
+0.0000000e+00 8.4416109e+04 -3.0300184e+05
+0.0000000e+00 8.8287597e+04 -2.6585672e+05
+0.0000000e+00 8.6727582e+04 -2.0303454e+05
+0.0000000e+00 7.9652024e+04 -1.3410382e+05
+0.0000000e+00 6.7753729e+04 -7.5128257e+04
+0.0000000e+00 5.2458247e+04 -3.4085996e+04
+0.0000000e+00 3.5769515e+04 -1.0639047e+04
+0.0000000e+00 2.0054870e+04 8.9289041e+01
+0.0000000e+00 3.6439538e+03 2.1758824e+00
+0.0000000e+00 2.1069862e+02 -4.4265771e-02
+0.0000000e+00 1.2123639e+01 -9.4223233e-03
+0.0000000e+00 6.2780520e-01 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 5.0601135e-01 6.4305872e-03
+0.0000000e+00 9.7146363e+00 3.1823457e-01
+0.0000000e+00 1.6816251e+02 8.7121413e+00
+0.0000000e+00 2.9046884e+03 1.9416365e+02
+0.0000000e+00 1.5528914e+04 -1.8342652e+04
+0.0000000e+00 2.6747783e+04 -6.8011429e+04
+0.0000000e+00 3.8582276e+04 -1.4018296e+05
+0.0000000e+00 5.0054712e+04 -2.0979171e+05
+0.0000000e+00 6.0154807e+04 -2.5241252e+05
+0.0000000e+00 6.7647498e+04 -2.5637234e+05
+0.0000000e+00 7.1306431e+04 -2.2492911e+05
+0.0000000e+00 7.0318247e+04 -1.7161159e+05
+0.0000000e+00 6.4572370e+04 -1.1324126e+05
+0.0000000e+00 5.4739282e+04 -6.3545595e+04
+0.0000000e+00 4.2155053e+04 -2.9207664e+04
+0.0000000e+00 2.8582000e+04 -9.7666346e+03
+0.0000000e+00 1.5953639e+04 -9.6111464e+02
+0.0000000e+00 2.8872410e+03 -5.7609924e+01
+0.0000000e+00 1.6678153e+02 -3.3887764e+00
+0.0000000e+00 9.6113512e+00 -1.7062359e-01
+0.0000000e+00 4.9943077e-01 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 2.7278583e-01 1.1308576e-01
+0.0000000e+00 5.1385007e+00 2.4849497e+00
+0.0000000e+00 8.7469785e+01 4.6857239e+01
+0.0000000e+00 1.4946457e+03 8.5931746e+02
+0.0000000e+00 7.7082671e+03 -1.2953201e+04
+0.0000000e+00 1.2849918e+04 -5.0626294e+04
+0.0000000e+00 1.8427376e+04 -1.0579177e+05
+0.0000000e+00 2.4366301e+04 -1.5925031e+05
+0.0000000e+00 3.0207869e+04 -1.9202284e+05
+0.0000000e+00 3.5020159e+04 -1.9492490e+05
+0.0000000e+00 3.7753500e+04 -1.7048381e+05
+0.0000000e+00 3.7682710e+04 -1.2934423e+05
+0.0000000e+00 3.4674257e+04 -8.4697261e+04
+0.0000000e+00 2.9216978e+04 -4.7158755e+04
+0.0000000e+00 2.2254679e+04 -2.1677194e+04
+0.0000000e+00 1.4909943e+04 -7.5910692e+03
+0.0000000e+00 8.2452412e+03 -1.3960195e+03
+0.0000000e+00 1.4906435e+03 -8.0928407e+01
+0.0000000e+00 8.7007826e+01 -4.6192390e+00
+0.0000000e+00 5.0957565e+00 -2.2709828e-01
+0.0000000e+00 2.6971242e-01 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 8.9444403e-02 9.9794670e-02
+0.0000000e+00 1.5627857e+00 2.1532287e+00
+0.0000000e+00 2.4476785e+01 4.0201899e+01
+0.0000000e+00 3.8741944e+02 7.3771783e+02
+0.0000000e+00 1.5150261e+03 -7.9201614e+03
+0.0000000e+00 1.8628740e+03 -3.2409552e+04
+0.0000000e+00 2.4718089e+03 -6.8666464e+04
+0.0000000e+00 3.9422104e+03 -1.0388800e+05
+0.0000000e+00 6.2348561e+03 -1.2526221e+05
+0.0000000e+00 8.7075712e+03 -1.2658947e+05
+0.0000000e+00 1.0540778e+04 -1.0970777e+05
+0.0000000e+00 1.1152641e+04 -8.2021300e+04
+0.0000000e+00 1.0405875e+04 -5.2573782e+04
+0.0000000e+00 8.5960724e+03 -2.8447429e+04
+0.0000000e+00 6.2752297e+03 -1.2671131e+04
+0.0000000e+00 3.9950572e+03 -4.4099480e+03
+0.0000000e+00 2.1151841e+03 -1.0340739e+03
+0.0000000e+00 3.9224051e+02 -5.9159242e+01
+0.0000000e+00 2.4618785e+01 -3.3529758e+00
+0.0000000e+00 1.5602638e+00 -1.6451557e-01
+0.0000000e+00 8.8764891e-02 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 1.4358121e-02 3.6661055e-02
+0.0000000e+00 1.8001826e-01 7.5699024e-01
+0.0000000e+00 1.4875805e+00 1.3605726e+01
+0.0000000e+00 1.8161898e+00 2.4456291e+02
+0.0000000e+00 -5.2749407e+02 -3.8847174e+03
+0.0000000e+00 -1.7119170e+03 -1.6415967e+04
+0.0000000e+00 -2.6624943e+03 -3.5277610e+04
+0.0000000e+00 -2.5898151e+03 -5.3575574e+04
+0.0000000e+00 -1.4534937e+03 -6.4359577e+04
+0.0000000e+00 1.9083430e+02 -6.4337509e+04
+0.0000000e+00 1.6413033e+03 -5.4688793e+04
+0.0000000e+00 2.4158502e+03 -3.9643494e+04
+0.0000000e+00 2.4004169e+03 -2.4217395e+04
+0.0000000e+00 1.8132233e+03 -1.2162750e+04
+0.0000000e+00 1.0442444e+03 -4.8440940e+03
+0.0000000e+00 4.3323932e+02 -1.4631941e+03
+0.0000000e+00 1.0830902e+02 -3.4657582e+02
+0.0000000e+00 1.4483578e+01 -2.0750912e+01
+0.0000000e+00 1.9450779e+00 -1.2388183e+00
+0.0000000e+00 1.9461389e-01 -6.3849243e-02
+0.0000000e+00 1.4684342e-02 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 1.6622786e-03 1.9725675e-03
+0.0000000e+00 1.4920872e-02 9.6571336e-03
+0.0000000e+00 4.5072226e-02 -4.3271437e-01
+0.0000000e+00 -1.1543283e+00 -1.7342981e+01
+0.0000000e+00 -3.1396804e+01 -6.8912837e+02
+0.0000000e+00 -9.8441110e+01 -2.7930730e+03
+0.0000000e+00 -1.5502399e+02 -6.0391909e+03
+0.0000000e+00 -1.5332297e+02 -9.2102248e+03
+0.0000000e+00 -8.7952599e+01 -1.1048608e+04
+0.0000000e+00 9.4337735e+00 -1.0956025e+04
+0.0000000e+00 9.6640170e+01 -9.1594271e+03
+0.0000000e+00 1.4384324e+02 -6.4488572e+03
+0.0000000e+00 1.4357535e+02 -3.7457681e+03
+0.0000000e+00 1.0882780e+02 -1.7153783e+03
+0.0000000e+00 6.3006880e+01 -5.6647469e+02
+0.0000000e+00 2.6450796e+01 -1.1066058e+02
+0.0000000e+00 7.0197257e+00 -1.1436938e+01
+0.0000000e+00 1.0538371e+00 -1.4821486e+00
+0.0000000e+00 1.6014387e-01 -1.4386150e-01
+0.0000000e+00 2.0152562e-02 -1.0020851e-02
+0.0000000e+00 1.8533165e-03 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 1.4931208e-04 -5.9637254e-04
+0.0000000e+00 8.5781545e-04 -1.2803216e-02
+0.0000000e+00 -4.0108984e-03 -2.1474487e-01
+0.0000000e+00 -1.5289583e-01 -3.1996442e+00
+0.0000000e+00 -1.8677580e+00 -4.4236262e+01
+0.0000000e+00 -5.5972129e+00 -1.6653735e+02
+0.0000000e+00 -8.8739506e+00 -3.5656261e+02
+0.0000000e+00 -8.9089546e+00 -5.4484650e+02
+0.0000000e+00 -5.2137448e+00 -6.5628214e+02
+0.0000000e+00 4.5663267e-01 -6.5337902e+02
+0.0000000e+00 5.6122189e+00 -5.4815539e+02
+0.0000000e+00 8.4399600e+00 -3.8732706e+02
+0.0000000e+00 8.4603968e+00 -2.2614280e+02
+0.0000000e+00 6.4335890e+00 -1.0460716e+02
+0.0000000e+00 3.7449558e+00 -3.5401148e+01
+0.0000000e+00 1.5952746e+00 -7.5077351e+00
+0.0000000e+00 4.4868453e-01 -8.8500659e-01
+0.0000000e+00 7.7981539e-02 -1.1681336e-01
+0.0000000e+00 1.2969337e-02 -1.3757957e-02
+0.0000000e+00 1.8792587e-03 -1.1577382e-03
+0.0000000e+00 1.9802131e-04 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 9.1460599e-06 -1.7969933e-04
+0.0000000e+00 2.0952481e-05 -2.7832249e-03
+0.0000000e+00 -7.0322098e-04 -3.3149609e-02
+0.0000000e+00 -1.1750256e-02 -3.4342231e-01
+0.0000000e+00 -9.6050911e-02 -2.8633545e+00
+0.0000000e+00 -2.7505149e-01 -9.9566277e+00
+0.0000000e+00 -4.3683553e-01 -2.0992621e+01
+0.0000000e+00 -4.4356586e-01 -3.2065680e+01
+0.0000000e+00 -2.6370244e-01 -3.8747608e+01
+0.0000000e+00 1.9437004e-02 -3.8717711e+01
+0.0000000e+00 2.8033058e-01 -3.2594868e+01
+0.0000000e+00 4.2506921e-01 -2.3117285e+01
+0.0000000e+00 4.2764882e-01 -1.3572077e+01
+0.0000000e+00 3.2615438e-01 -6.3478186e+00
+0.0000000e+00 1.9086366e-01 -2.2070796e+00
+0.0000000e+00 8.2520343e-02 -5.0707065e-01
+0.0000000e+00 2.4405149e-02 -7.1099604e-02
+0.0000000e+00 4.7939091e-03 -9.6807801e-03
+0.0000000e+00 8.5954262e-04 -1.2365003e-03
+0.0000000e+00 1.3656139e-04 -1.1576619e-04
+0.0000000e+00 1.5738254e-05 0.0000000e+00
+0 0 0
+0 0 0
+0.0000000e+00 0.0000000e+00 -2.4750401e-05
+0.0000000e+00 0.0000000e+00 -3.2940018e-04
+0.0000000e+00 0.0000000e+00 -3.2387055e-03
+0.0000000e+00 0.0000000e+00 -2.6596771e-02
+0.0000000e+00 0.0000000e+00 -1.6576730e-01
+0.0000000e+00 0.0000000e+00 -5.3661979e-01
+0.0000000e+00 0.0000000e+00 -1.1118793e+00
+0.0000000e+00 0.0000000e+00 -1.6945771e+00
+0.0000000e+00 0.0000000e+00 -2.0519021e+00
+0.0000000e+00 0.0000000e+00 -2.0564745e+00
+0.0000000e+00 0.0000000e+00 -1.7366433e+00
+0.0000000e+00 0.0000000e+00 -1.2360677e+00
+0.0000000e+00 0.0000000e+00 -7.2967079e-01
+0.0000000e+00 0.0000000e+00 -3.4503032e-01
+0.0000000e+00 0.0000000e+00 -1.2311253e-01
+0.0000000e+00 0.0000000e+00 -3.0299039e-02
+0.0000000e+00 0.0000000e+00 -4.9129749e-03
+0.0000000e+00 0.0000000e+00 -7.0906748e-04
+0.0000000e+00 0.0000000e+00 -9.4919350e-05
+0.0000000e+00 0.0000000e+00 -9.4148115e-06
+0.0000000e+00 0.0000000e+00 0.0000000e+00
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+attribute "dep" string "positions"
+object "regular positions regular connections" class field
+component "positions" value 1
+component "connections" value 2
+component "data" value 3
+}
Index: /tags/1.6.0/examples/flow/demo3/data-values.tcl
===================================================================
--- /tags/1.6.0/examples/flow/demo3/data-values.tcl	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo3/data-values.tcl	(revision 6168)
@@ -0,0 +1,69577 @@
+set values {
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0.00464304 4.73547e-07 -8.27585e-06
+0.00465252 -9.70511e-09 -9.4697e-06
+0.00466368 -4.49086e-07 -1.07135e-05
+0.00467651 -8.33195e-07 -1.19957e-05
+0.00469095 -1.14246e-06 -1.32911e-05
+0.00470686 -1.34965e-06 -1.45612e-05
+0.00472403 -1.42184e-06 -1.57549e-05
+0.00474217 -1.32191e-06 -1.681e-05
+0.00476083 -1.00966e-06 -1.76547e-05
+0.00477948 -4.43222e-07 -1.82093e-05
+0.00479745 4.18778e-07 -1.83897e-05
+0.00481395 1.61387e-06 -1.81123e-05
+0.00482808 3.17161e-06 -1.73003e-05
+0.00483886 5.1094e-06 -1.58903e-05
+0.00484527 7.42972e-06 -1.38369e-05
+0.00484626 1.01202e-05 -1.11144e-05
+0.00484082 1.31584e-05 -7.71247e-06
+0.00482792 1.65198e-05 -3.6266e-06
+0.00480658 2.01896e-05 1.1551e-06
+0.00477575 2.41704e-05 6.66341e-06
+0.00473432 2.84811e-05 1.29494e-05
+0.00468112 3.3135e-05 2.00653e-05
+0.00461501 3.80925e-05 2.80171e-05
+0.00453514 4.31835e-05 3.66869e-05
+0.00444139 4.80103e-05 4.57372e-05
+0.00433502 5.18443e-05 5.45236e-05
+0.00421952 5.3477e-05 6.20196e-05
+0.00410233 5.06095e-05 6.6581e-05
+0.00400149 3.63267e-05 6.45186e-05
+0.00397807 -1.96779e-05 4.30957e-05
+0.00428708 -0.000261758 -4.72542e-05
+0.00601688 -0.00134904 -0.000380753
+0.0135336 -0.00607781 -0.00143891
+0.0427922 -0.0253574 -0.00390118
+0.145769 -0.0979727 -0.00500441
+0.468866 -0.347827 0.0247302
+1.34745 -1.12185 0.243267
+3.30898 -3.22987 1.26835
+6.47653 -8.05893 4.89137
+8.69583 -16.5166 14.2973
+5.13192 -24.9834 28.5473
+1.60435 -22.3145 25.8421
+0.30067 -14.2526 15.5563
+0.0707393 -7.78621 8.01614
+0.015278 -4.11664 4.1721
+-0.00293374 -2.15135 2.16956
+0.00229292 -1.10978 1.10455
+0.00203328 -0.581245 0.581504
+-0.000550356 -0.305904 0.308487
+0.000111881 -0.15784 0.157178
+0.000414856 -0.0822103 0.0819073
+-7.6594e-05 -0.0434777 0.0439692
+-4.43406e-05 -0.0224578 0.0224256
+7.42813e-05 -0.0116493 0.0115307
+-3.59541e-06 -0.00626712 0.006345
+-1.72702e-05 -0.003321 0.00333468
+1.15927e-05 -0.0017699 0.00174103
+1.03498e-06 -0.00102249 0.00103305
+-4.22203e-06 -0.000623582 0.00062884
+3.47382e-08 -0.000436918 0.000432661
+-5.304e-07 -0.000406953 0.000407519
+5.60252e-06 -0.000498017 0.000491884
+-2.72901e-06 -0.000779514 0.000787845
+-1.35504e-05 -0.00133365 0.00134447
+2.36891e-05 -0.0023723 0.00233506
+-3.36834e-06 -0.00452027 0.00454733
+-9.61554e-05 -0.0085863 0.00867909
+7.29737e-05 -0.0161062 0.0159371
+6.82108e-05 -0.0313062 0.031311
+-0.000594035 -0.0608433 0.0615056
+-8.74849e-05 -0.115667 0.115161
+0.00065196 -0.22364 0.2229
+-0.00316071 -0.435707 0.439519
+-0.00314489 -0.832851 0.832835
+0.00370789 -1.6042 1.59735
+-0.0251923 -3.14007 3.16897
+-0.108358 -6.07188 6.15505
+-0.46039 -11.6243 11.9763
+-2.45176 -21.5119 23.5033
+-7.8066 -33.9089 39.2637
+-13.1655 -38.0629 43.4218
+-9.73369 -25.1451 21.7133
+-4.91077 -12.2056 7.38272
+-1.9621 -4.83993 1.89126
+-0.665192 -1.65252 0.355612
+-0.200213 -0.499892 0.0349128
+-0.0569141 -0.13623 -0.00706817
+-0.017885 -0.0338142 -0.005215
+-0.00834776 -0.00771307 -0.00182415
+-0.00627552 -0.00162285 -0.000449384
+-0.00594468 -0.000294658 -3.61831e-05
+-0.00601204 -8.05898e-06 7.54199e-05
+-0.00617884 6.14486e-05 0.00010535
+-0.00637177 8.19739e-05 0.000110951
+-0.00656486 8.69035e-05 0.000106185
+-0.00674515 8.44958e-05 9.57952e-05
+-0.00690634 7.84493e-05 8.27443e-05
+-0.00704673 7.11599e-05 6.92286e-05
+-0.00716745 6.40949e-05 5.66273e-05
+-0.00727087 5.79026e-05 4.55124e-05
+-0.00735933 5.26212e-05 3.58424e-05
+-0.00743452 4.79483e-05 2.72429e-05
+-0.00749728 4.34866e-05 1.92679e-05
+-0.00754777 3.89132e-05 1.15786e-05
+-0.00758585 3.40611e-05 4.02255e-06
+-0.00761141 2.89245e-05 -3.36886e-06
+-0.00762459 2.36191e-05 -1.04343e-05
+-0.00762596 1.83244e-05 -1.6954e-05
+-0.00761648 1.32297e-05 -2.2714e-05
+-0.00759742 8.49714e-06 -2.755e-05
+-0.0075703 4.24301e-06 -3.13671e-05
+-0.0075367 5.36455e-07 -3.41393e-05
+-0.00749821 -2.59304e-06 -3.58975e-05
+-0.00745635 -5.14446e-06 -3.67125e-05
+-0.00741253 -7.13528e-06 -3.66804e-05
+-0.00736803 -8.59447e-06 -3.59104e-05
+-0.00732396 -9.55772e-06 -3.45167e-05
+-0.00728128 -1.00634e-05 -3.26112e-05
+-0.00724084 -1.01473e-05 -3.02959e-05
+-0.00720335 -9.83647e-06 -2.76548e-05
+0 -9.14606e-06 -2.47504e-05
+0.0464083 -4.9266e-06 -6.59827e-05
+0.0464956 -1.37837e-05 -7.34476e-05
+0.0465986 -2.23267e-05 -8.1184e-05
+0.0467173 -3.02844e-05 -8.9224e-05
+0.0468509 -3.72868e-05 -9.74815e-05
+0.0469982 -4.28777e-05 -0.000105749
+0.047157 -4.65389e-05 -0.000113709
+0.0473244 -4.77126e-05 -0.000120942
+0.0474961 -4.5821e-05 -0.00012693
+0.047667 -4.02905e-05 -0.000131077
+0.0478307 -3.05844e-05 -0.000132727
+0.0479798 -1.62454e-05 -0.000131218
+0.0481059 3.0539e-06 -0.00012593
+0.0481999 2.74625e-05 -0.000116351
+0.0482525 5.69155e-05 -0.000102109
+0.0482545 9.11287e-05 -8.29691e-05
+0.0481967 0.000129634 -5.87665e-05
+0.0480707 0.000171855 -2.92747e-05
+0.0478677 0.000217207 5.96614e-06
+0.0475789 0.000265179 4.77998e-05
+0.0471946 0.000315318 9.74854e-05
+0.0467042 0.000367055 0.000156493
+0.046097 0.000419279 0.000225958
+0.0453648 0.000469656 0.000305789
+0.0445055 0.000513775 0.000393538
+0.0435296 0.000544292 0.000483394
+0.0424674 0.000550064 0.000565576
+0.0413792 0.000513451 0.0006254
+0.0403853 0.000394398 0.000635805
+0.0398055 4.4941e-05 0.000515175
+0.0407925 -0.00119493 -5.38356e-05
+0.0479224 -0.00621595 -0.00226294
+0.0785697 -0.0267414 -0.00998375
+0.192461 -0.106036 -0.033212
+0.56978 -0.387557 -0.0877349
+1.66894 -1.29084 -0.156146
+4.39613 -3.86345 0.0144078
+9.81988 -10.1932 1.53962
+17.3094 -23.0136 7.46513
+21.0299 -42.3007 22.0637
+12.8025 -57.9336 41.1776
+4.44878 -51.2455 37.2847
+1.00316 -33.4701 22.6631
+0.225035 -18.699 11.6909
+0.0443277 -9.95046 6.01453
+-0.00327472 -5.20477 3.10102
+0.00397951 -2.69234 1.57531
+0.00371423 -1.40574 0.824756
+-0.000912117 -0.736768 0.435491
+0.000208059 -0.381222 0.222262
+0.00076901 -0.198364 0.115593
+-0.000116656 -0.104306 0.0617141
+-7.69381e-05 -0.0540555 0.031558
+0.000134906 -0.0281108 0.0162496
+-3.36734e-06 -0.0150075 0.00887861
+-3.03762e-05 -0.00797012 0.00467612
+2.03358e-05 -0.00427699 0.00245638
+1.49613e-06 -0.00245083 0.00144718
+-8.13884e-06 -0.0014957 0.000881756
+-4.59264e-07 -0.00105506 0.000610463
+-1.10974e-06 -0.000979802 0.000573499
+9.90846e-06 -0.00120309 0.000694054
+-5.24687e-06 -0.00186754 0.00110318
+-2.45298e-05 -0.00319771 0.00188335
+4.07206e-05 -0.00572928 0.00329173
+-1.11274e-05 -0.0108386 0.00637016
+-0.000175686 -0.0205683 0.0121466
+0.000125369 -0.0388638 0.0224565
+9.05051e-05 -0.0753082 0.0440368
+-0.00110417 -0.14599 0.0863413
+-0.000177845 -0.279181 0.162587
+0.00103403 -0.540091 0.31524
+-0.00583407 -1.04966 0.620821
+-0.00566688 -2.01559 1.18257
+0.00302553 -3.89404 2.28115
+-0.0722576 -7.60223 4.53744
+-0.346218 -14.693 8.89505
+-1.53594 -27.9481 17.5135
+-6.79859 -50.5763 34.3271
+-19.4993 -78.0024 56.7943
+-31.8932 -88.4676 62.7986
+-26.0575 -64.5664 33.5856
+-14.5952 -34.949 11.2811
+-6.40989 -15.3141 2.28888
+-2.37162 -5.70396 0.0131677
+-0.78623 -1.85839 -0.226889
+-0.260516 -0.539438 -0.122507
+-0.108511 -0.141482 -0.0443367
+-0.0695694 -0.0340151 -0.0126394
+-0.0609956 -0.00755777 -0.00263887
+-0.0600223 -0.00137809 0.00011009
+-0.061015 0.000147667 0.000837062
+-0.0626064 0.000625924 0.00102691
+-0.0643824 0.00081913 0.00103884
+-0.0661487 0.000890749 0.000962415
+-0.0677931 0.000892057 0.000836814
+-0.06926 0.000853215 0.000692159
+-0.0705365 0.000795964 0.000551732
+-0.0716362 0.00073418 0.000429612
+-0.0725834 0.000674424 0.000330615
+-0.0734011 0.000617779 0.000252572
+-0.074105 0.000562285 0.000189609
+-0.0747019 0.000505156 0.000135176
+-0.0751914 0.000444306 8.41119e-05
+-0.0755699 0.000379065 3.35571e-05
+-0.0758342 0.000310213 -1.70721e-05
+-0.0759834 0.000239602 -6.66973e-05
+-0.0760213 0.00016961 -0.000113399
+-0.0759556 0.000102635 -0.000155166
+-0.0757974 4.07382e-05 -0.000190403
+-0.0755604 -1.45344e-05 -0.000218177
+-0.0752595 -6.21818e-05 -0.000238227
+-0.0749096 -0.000101681 -0.000250834
+-0.0745252 -0.000132884 -0.000256649
+-0.0741199 -0.000155926 -0.000256529
+-0.0737059 -0.000171148 -0.000251414
+-0.0732942 -0.000179042 -0.000242241
+-0.0728942 -0.000180199 -0.000229874
+-0.072514 -0.000175249 -0.000215037
+-0.0721609 -0.000164783 -0.000198229
+0 -0.000149312 -0.000179699
+0.323989 -0.000132745 -0.00032176
+0.324542 -0.00024 -0.00032757
+0.3252 -0.000346707 -0.000332939
+0.325958 -0.000449151 -0.000339641
+0.326813 -0.000542771 -0.00034882
+0.327753 -0.0006223 -0.000360957
+0.328764 -0.000681995 -0.000375928
+0.329826 -0.000715863 -0.000392988
+0.330908 -0.000717895 -0.000410761
+0.331978 -0.000682343 -0.000427255
+0.332991 -0.000604053 -0.000439992
+0.3339 -0.000478855 -0.00044625
+0.33465 -0.000303996 -0.00044339
+0.335186 -7.85472e-05 -0.000429167
+0.335448 0.000196269 -0.000401865
+0.335382 0.000516932 -0.000360069
+0.334936 0.000877711 -0.000301925
+0.334061 0.001271 -0.000223867
+0.332709 0.00168782 -0.000119028
+0.330832 0.00211817 2.41756e-05
+0.328374 0.00255106 0.000222478
+0.325271 0.00297356 0.000496254
+0.321457 0.0033687 0.000865203
+0.316873 0.00371201 0.00134103
+0.311502 0.00396717 0.00191813
+0.305399 0.00408192 0.0025651
+0.298743 0.00398505 0.00322078
+0.29188 0.00358135 0.00379563
+0.285395 0.00271875 0.00415999
+0.280414 0.00100249 0.00402423
+0.279936 -0.00306951 0.002352
+0.294169 -0.0156213 -0.00482776
+0.358645 -0.0600977 -0.0311189
+0.586428 -0.217726 -0.116094
+1.28954 -0.738468 -0.352201
+3.17616 -2.2899 -0.887559
+7.42972 -6.3576 -1.75942
+14.9679 -15.4596 -2.27184
+23.8984 -31.9645 0.020422
+26.7482 -53.7026 8.55214
+16.6998 -68.2077 20.3225
+6.35853 -59.6927 18.7885
+1.66017 -39.6644 10.8927
+0.385248 -22.5924 5.16839
+0.075562 -12.117 2.47619
+0.00199115 -6.35043 1.21923
+0.003676 -3.29103 0.597006
+0.00335324 -1.71405 0.30864
+-0.000796841 -0.895194 0.162576
+0.000185226 -0.46369 0.0814861
+0.000725366 -0.241006 0.0421016
+-8.04617e-05 -0.126184 0.0226837
+-6.45252e-05 -0.0655015 0.0114301
+0.000125378 -0.0341139 0.0058132
+4.19135e-07 -0.0181179 0.0032354
+-2.75088e-05 -0.00963347 0.00169128
+1.66512e-05 -0.00519377 0.000872621
+-8.45571e-07 -0.00296139 0.000528052
+-1.00491e-05 -0.00180845 0.00032195
+-3.22772e-06 -0.00128193 0.000220044
+-3.66738e-06 -0.00118852 0.000209155
+6.14786e-06 -0.00146171 0.000248805
+-8.11878e-06 -0.00225545 0.000402178
+-2.61329e-05 -0.00386328 0.000683577
+3.05486e-05 -0.00695223 0.00116626
+-2.08944e-05 -0.0130892 0.00230205
+-0.000169501 -0.0248312 0.00441155
+9.95784e-05 -0.0471516 0.00801877
+3.98188e-05 -0.0912028 0.0159543
+-0.00104706 -0.176607 0.0317041
+-0.000169208 -0.339238 0.0591787
+0.000861832 -0.656865 0.115743
+-0.00536163 -1.27563 0.23219
+-0.00557738 -2.45902 0.443642
+-0.0056932 -4.76263 0.868703
+-0.121328 -9.28251 1.79591
+-0.59383 -17.9113 3.69081
+-2.54434 -33.806 7.80841
+-9.7285 -60.0116 16.6194
+-25.487 -91.0174 28.7734
+-40.6626 -104.398 31.1064
+-36.0657 -82.1879 13.0246
+-22.3062 -48.6788 -0.0296884
+-10.8715 -23.2912 -3.45756
+-4.54617 -9.41072 -2.6186
+-1.81529 -3.30441 -1.28487
+-0.832311 -1.03054 -0.491879
+-0.526498 -0.292202 -0.155094
+-0.443197 -0.077951 -0.0393648
+-0.425334 -0.0201463 -0.00527428
+-0.42643 -0.00413415 0.00385152
+-0.433908 0.00140255 0.00622395
+-0.444024 0.00407295 0.00666835
+-0.455096 0.00559448 0.00629731
+-0.466058 0.00641332 0.00543906
+-0.476231 0.00674044 0.00432435
+-0.485285 0.00673706 0.00317018
+-0.493165 0.00652949 0.00214667
+-0.499984 0.00620357 0.0013497
+-0.505916 0.00580645 0.00080018
+-0.511118 0.00535627 0.000463403
+-0.515687 0.00485499 0.000276143
+-0.519653 0.00430013 0.000171431
+-0.522997 0.00369267 9.52985e-05
+-0.525673 0.00304077 1.41894e-05
+-0.527637 0.00235974 -8.53036e-05
+-0.528866 0.00166989 -0.000201439
+-0.529366 0.000993488 -0.000324054
+-0.529174 0.000351852 -0.00044072
+-0.528356 -0.000236692 -0.000541042
+-0.526994 -0.000757907 -0.000618748
+-0.525182 -0.00120189 -0.000671946
+-0.523019 -0.00156277 -0.000702229
+-0.5206 -0.00183817 -0.000713374
+-0.518017 -0.00202861 -0.000710123
+-0.515354 -0.00213704 -0.000697292
+-0.512686 -0.00216837 -0.000679174
+-0.510078 -0.00212901 -0.000659095
+-0.507588 -0.00202637 -0.000638957
+-0.505266 -0.00186822 -0.000618754
+0 -0.00166228 -0.000596373
+1.70591 -0.00146668 -0.000824873
+1.7086 -0.00245156 -0.000472771
+1.7118 -0.00344833 -9.94011e-05
+1.7155 -0.00442093 0.000272935
+1.71966 -0.00532715 0.000623371
+1.72422 -0.00611986 0.000932721
+1.72911 -0.00674864 0.00118357
+1.73419 -0.0071617 0.00136076
+1.73933 -0.00730795 0.00145217
+1.74434 -0.00713945 0.00144912
+1.749 -0.00661405 0.00134649
+1.75308 -0.00569839 0.00114209
+1.75631 -0.00437092 0.000835687
+1.75843 -0.00262489 0.000428293
+1.75917 -0.0004709 -7.7384e-05
+1.7583 0.0020611 -0.000674145
+1.7556 0.00492082 -0.00134429
+1.75089 0.00803748 -0.00205033
+1.74398 0.0113203 -0.00272376
+1.73469 0.0146592 -0.00325491
+1.72281 0.0179242 -0.00348898
+1.70805 0.0209627 -0.00323418
+1.69012 0.0235945 -0.00228758
+1.66871 0.0256022 -0.000480325
+1.64369 0.026721 0.00226349
+1.61527 0.0266294 0.00587098
+1.58422 0.0249443 0.0100943
+1.55204 0.0212177 0.0145376
+1.52115 0.0148954 0.0187137
+1.49517 0.00506051 0.0219226
+1.48066 -0.0107225 0.0221617
+1.4942 -0.0408203 0.0116664
+1.58533 -0.114292 -0.0369426
+1.89673 -0.323937 -0.205186
+2.78408 -0.932294 -0.693522
+4.9581 -2.57655 -1.88738
+9.38986 -6.51619 -4.27317
+16.3727 -14.5448 -7.89764
+23.4144 -27.6785 -11.3278
+24.2943 -43.0049 -11.5777
+15.4585 -51.4152 -7.95663
+6.39807 -44.5171 -6.11513
+1.91398 -30.0042 -5.17604
+0.493595 -17.4 -3.77202
+0.111725 -9.42311 -2.31199
+0.0171788 -4.95753 -1.29835
+0.00650334 -2.57481 -0.705541
+0.0036871 -1.33898 -0.372252
+0.00029252 -0.697373 -0.194426
+0.000491686 -0.361285 -0.102604
+0.000654642 -0.187565 -0.0536039
+6.61258e-05 -0.0978799 -0.0277157
+1.27547e-05 -0.050845 -0.0146031
+9.93959e-05 -0.0265038 -0.00769679
+8.63891e-06 -0.0140268 -0.00400039
+-1.86723e-05 -0.0074638 -0.00214235
+2.05595e-06 -0.00403779 -0.0011767
+-1.19575e-05 -0.00229598 -0.000651395
+-1.96885e-05 -0.00140361 -0.000397107
+-1.70263e-05 -0.000998977 -0.000285612
+-1.86135e-05 -0.000925404 -0.000261526
+-1.43037e-05 -0.0011385 -0.00032752
+-2.55695e-05 -0.00174811 -0.000496066
+-4.08701e-05 -0.00299307 -0.00085491
+-1.44737e-05 -0.00539909 -0.00157953
+-5.9441e-05 -0.0101301 -0.00291411
+-0.000169895 -0.019215 -0.00550575
+-4.62694e-05 -0.0366106 -0.0106647
+-0.000169636 -0.0707395 -0.0203399
+-0.000967787 -0.136939 -0.0388697
+-0.000672615 -0.263945 -0.0755879
+-0.000634238 -0.511606 -0.145297
+-0.00575863 -0.9936 -0.276902
+-0.0100444 -1.92116 -0.533574
+-0.0284495 -3.72665 -1.01757
+-0.176031 -7.24826 -1.88666
+-0.762081 -13.9352 -3.39005
+-2.94253 -26.0476 -5.5779
+-9.82207 -45.4189 -7.71311
+-23.684 -67.9389 -9.21655
+-37.0897 -78.8071 -12.1856
+-35.5118 -65.9325 -17.8333
+-24.5675 -42.2359 -17.3872
+-13.9042 -21.9598 -11.9947
+-7.27302 -9.66868 -6.37323
+-4.10478 -3.73196 -2.74068
+-2.8507 -1.31333 -0.971293
+-2.42145 -0.44722 -0.274234
+-2.29457 -0.159507 -0.0453218
+-2.27191 -0.0607471 0.0179376
+-2.28923 -0.0189743 0.0321659
+-2.32593 0.00480076 0.0333032
+-2.37288 0.0209592 0.0300643
+-2.42383 0.0322846 0.0242584
+-2.47405 0.0398402 0.0167955
+-2.52049 0.0443589 0.00881428
+-2.56173 0.0464792 0.00150396
+-2.59772 0.0467401 -0.00422812
+-2.62913 0.0455593 -0.00793716
+-2.65693 0.0432373 -0.00963752
+-2.68188 0.0399853 -0.0096766
+-2.70442 0.0359623 -0.00856413
+-2.72461 0.0313084 -0.00681879
+-2.74222 0.0261673 -0.00486544
+-2.75689 0.0206964 -0.00298994
+-2.76825 0.0150654 -0.00134126
+-2.77607 0.00944874 3.73721e-05
+-2.78026 0.00401531 0.00116658
+-2.78092 -0.00108147 0.00209219
+-2.7783 -0.00571101 0.00285786
+-2.77278 -0.00976976 0.00349112
+-2.7648 -0.0131826 0.00400073
+-2.75484 -0.0159023 0.00438106
+-2.74339 -0.0179074 0.00461922
+-2.73092 -0.0192 0.00470161
+-2.71787 -0.0198034 0.00461865
+-2.70465 -0.0197584 0.00436761
+-2.69161 -0.0191211 0.00395454
+-2.67908 -0.0179586 0.00339603
+-2.66732 -0.016345 0.00272129
+0 -0.0143581 0.00197257
+6.09836 -0.00994183 0.00113793
+6.10754 -0.0163341 0.00469621
+6.11852 -0.0228668 0.00844148
+6.13118 -0.0293021 0.0122159
+6.14537 -0.0353668 0.0158536
+6.16083 -0.0407588 0.0191829
+6.17721 -0.0451569 0.0220286
+6.19406 -0.048232 0.024217
+6.21083 -0.049661 0.0255827
+6.22686 -0.0491413 0.0259743
+6.24139 -0.0464075 0.0252597
+6.25361 -0.0412488 0.0233294
+6.26267 -0.0335259 0.0200986
+6.26772 -0.0231893 0.0155111
+6.268 -0.0102948 0.00954892
+6.26283 0.00498117 0.00225089
+6.25167 0.0223281 -0.00625467
+6.23412 0.0412903 -0.0157044
+6.20983 0.061258 -0.0256463
+6.17842 0.0814605 -0.0353917
+6.13938 0.100962 -0.0439923
+6.09195 0.11866 -0.0502695
+6.03517 0.133289 -0.0529179
+5.96804 0.143434 -0.0506946
+5.88989 0.147546 -0.0426733
+5.80104 0.143973 -0.0284988
+5.70352 0.131 -0.00853147
+5.60162 0.106867 0.0162453
+5.5022 0.0697209 0.0445966
+5.41458 0.0172752 0.0754007
+5.35146 -0.0544276 0.106827
+5.33463 -0.155042 0.131052
+5.41474 -0.311665 0.117262
+5.71864 -0.599021 -0.0288086
+6.52642 -1.20413 -0.535955
+8.31557 -2.52911 -1.83658
+11.5616 -5.26382 -4.49836
+15.9902 -10.1926 -8.78084
+19.4764 -17.3671 -13.7976
+18.3901 -24.7219 -17.1967
+11.8228 -27.8493 -16.9986
+5.35528 -23.8055 -14.244
+1.88471 -16.2702 -10.2634
+0.592929 -9.63984 -6.46843
+0.180171 -5.30825 -3.7021
+0.055411 -2.82386 -2.0089
+0.0220464 -1.47829 -1.06316
+0.0101834 -0.771402 -0.55572
+0.00422919 -0.402176 -0.289243
+0.00223312 -0.208816 -0.150473
+0.00130003 -0.10849 -0.078142
+0.00053765 -0.0565436 -0.0405739
+0.00024779 -0.0294149 -0.0211403
+0.000147093 -0.015357 -0.0110461
+3.55456e-05 -0.00811355 -0.00580165
+-1.64717e-05 -0.00432307 -0.00308872
+-3.04945e-05 -0.00234652 -0.00167725
+-4.99039e-05 -0.00133305 -0.000943521
+-6.17553e-05 -0.000816749 -0.000575012
+-6.70139e-05 -0.000583753 -0.000409966
+-7.37377e-05 -0.000540619 -0.000378061
+-7.91249e-05 -0.000664828 -0.000468285
+-9.45064e-05 -0.00101567 -0.000717061
+-0.000118503 -0.00173587 -0.0012332
+-0.000137727 -0.0031332 -0.00224667
+-0.000211527 -0.00585851 -0.0041978
+-0.000358471 -0.0111019 -0.00796618
+-0.00049614 -0.0211856 -0.0152873
+-0.000920766 -0.0408643 -0.0294506
+-0.00198053 -0.0790109 -0.0568687
+-0.00328343 -0.152488 -0.110154
+-0.00627908 -0.295304 -0.213307
+-0.0151194 -0.572288 -0.412471
+-0.0330386 -1.10545 -0.797787
+-0.0851221 -2.13665 -1.53792
+-0.27909 -4.12252 -2.93177
+-0.91893 -7.8378 -5.45753
+-2.92262 -14.4066 -9.63731
+-8.3021 -24.5888 -15.4506
+-18.3031 -36.2817 -21.6563
+-28.3936 -42.6426 -26.074
+-29.9415 -37.865 -26.5196
+-24.4438 -26.4718 -21.2618
+-17.6067 -15.3738 -13.4231
+-12.6936 -7.81704 -6.76474
+-10.0432 -3.69324 -2.68911
+-8.86257 -1.7432 -0.750726
+-8.40624 -0.87751 -0.0260406
+-8.26143 -0.474339 0.170022
+-8.25534 -0.252862 0.18602
+-8.32482 -0.105231 0.155737
+-8.4422 0.00566823 0.116513
+-8.58762 0.0921515 0.0742271
+-8.74347 0.158792 0.0293466
+-8.8957 0.207969 -0.0158994
+-9.03545 0.241508 -0.0574035
+-9.15923 0.261126 -0.0908683
+-9.26772 0.268524 -0.113286
+-9.36392 0.265376 -0.123621
+-9.45127 0.253313 -0.122727
+-9.5324 0.233903 -0.112782
+-9.60852 0.208646 -0.0965631
+-9.67937 0.178975 -0.0768143
+-9.74364 0.146249 -0.055819
+-9.79948 0.111753 -0.0352189
+-9.84507 0.0766843 -0.0160231
+-9.87902 0.04214 0.00126219
+-9.90057 0.00910412 0.0164603
+-9.90965 -0.0215679 0.0295623
+-9.90681 -0.0491604 0.0406111
+-9.89311 -0.0731061 0.0496384
+-9.86995 -0.0929902 0.0566489
+-9.83894 -0.10855 0.0616318
+-9.80176 -0.119672 0.0645844
+-9.76011 -0.126381 0.0655333
+-9.71563 -0.128832 0.0645485
+-9.66985 -0.127291 0.0617496
+-9.62416 -0.12212 0.0573083
+-9.57981 -0.113756 0.0514498
+-9.53792 -0.10269 0.0444556
+0 -0.0894444 0.0366611
+12.9366 -0.0306948 0.00481527
+12.9564 -0.0503918 0.0142773
+12.9798 -0.0705666 0.0242752
+13.0066 -0.0904863 0.0344224
+13.0362 -0.109309 0.0442986
+13.0681 -0.126107 0.0534537
+13.1014 -0.139892 0.0614149
+13.1351 -0.149653 0.0676996
+13.168 -0.154399 0.0718325
+13.1987 -0.153203 0.0733628
+13.2257 -0.145257 0.0718809
+13.2473 -0.129921 0.0670323
+13.2621 -0.106784 0.0585311
+13.2684 -0.0757102 0.0461778
+13.2651 -0.0368921 0.0298884
+13.2513 0.00910315 0.0097436
+13.2262 0.0612955 -0.0139348
+13.1897 0.118258 -0.0404813
+13.1417 0.178092 -0.0687684
+13.0818 0.238409 -0.097101
+13.0096 0.296333 -0.123163
+12.9238 0.348512 -0.144075
+12.8226 0.39116 -0.156605
+12.7034 0.420142 -0.157579
+12.5643 0.431099 -0.144435
+12.4045 0.419638 -0.115831
+12.226 0.381567 -0.0720856
+12.0349 0.313158 -0.015186
+11.8415 0.21134 0.0517815
+11.6596 0.0736078 0.125563
+11.5052 -0.102906 0.202876
+11.3977 -0.32452 0.27696
+11.3697 -0.609139 0.325527
+11.4903 -1.00426 0.284633
+11.894 -1.61862 0.0108045
+12.7615 -2.65752 -0.739118
+14.1459 -4.41184 -2.23634
+15.5835 -7.09456 -4.53567
+15.7941 -10.4424 -7.13528
+13.3328 -13.2957 -8.96487
+8.54851 -13.9101 -9.15495
+4.23363 -11.5882 -7.90244
+1.7577 -7.96623 -5.82804
+0.680375 -4.8128 -3.74971
+0.264054 -2.70588 -2.18605
+0.107507 -1.4664 -1.20091
+0.048125 -0.78022 -0.638683
+0.0229478 -0.412113 -0.334112
+0.011097 -0.216817 -0.173509
+0.00561427 -0.113555 -0.0897783
+0.0028911 -0.0593893 -0.0463776
+0.00140822 -0.0310845 -0.0239761
+0.000670323 -0.0162596 -0.0124174
+0.000299461 -0.00853238 -0.00645374
+8.42447e-05 -0.00451829 -0.00338005
+-3.01435e-05 -0.0024173 -0.00179138
+-8.93884e-05 -0.00131913 -0.000968154
+-0.000127569 -0.000751153 -0.000543718
+-0.000151899 -0.000462483 -0.000329936
+-0.000169055 -0.000332566 -0.000234031
+-0.000185811 -0.000308361 -0.000215502
+-0.000205203 -0.000378664 -0.000266772
+-0.000235803 -0.000574676 -0.000410396
+-0.000285492 -0.000977472 -0.000708707
+-0.000365318 -0.00175915 -0.00129422
+-0.000522082 -0.00327024 -0.0024315
+-0.000815924 -0.00617155 -0.00463654
+-0.00132896 -0.011746 -0.00892658
+-0.00236453 -0.0225346 -0.0172941
+-0.00444664 -0.0433351 -0.0335937
+-0.0083104 -0.0832767 -0.0653474
+-0.0162445 -0.160186 -0.127183
+-0.0336388 -0.307785 -0.247108
+-0.0713211 -0.58926 -0.478507
+-0.162329 -1.12541 -0.920233
+-0.405931 -2.13741 -1.74151
+-1.05975 -3.99194 -3.19204
+-2.76042 -7.19269 -5.51325
+-6.67379 -12.0502 -8.62526
+-13.4849 -17.6916 -11.779
+-21.0085 -21.3423 -13.7767
+-24.8372 -20.3973 -13.639
+-24.4501 -15.9293 -10.9296
+-22.1687 -10.7071 -6.94821
+-20.0077 -6.57434 -3.4037
+-18.6549 -3.92995 -1.11607
+-17.9922 -2.40965 0.00381243
+-17.7321 -1.536 0.398349
+-17.6823 -0.980099 0.455994
+-17.7576 -0.57274 0.39514
+-17.9227 -0.242998 0.302853
+-18.1524 0.0339093 0.201485
+-18.4189 0.265062 0.0935473
+-18.6938 0.452152 -0.01841
+-18.9548 0.596044 -0.127148
+-19.1888 0.698237 -0.2227
+-19.393 0.761178 -0.295877
+-19.5717 0.788171 -0.340916
+-19.733 0.783156 -0.356507
+-19.8848 0.75047 -0.345366
+-20.0326 0.694635 -0.312928
+-20.1783 0.620204 -0.265791
+-20.3206 0.53164 -0.210385
+-20.4555 0.433237 -0.152099
+-20.5779 0.329055 -0.0949082
+-20.6827 0.222871 -0.041392
+-20.7657 0.118131 0.00700329
+-20.8241 0.0179105 0.049608
+-20.8567 -0.0751227 0.0861969
+-20.8639 -0.158743 0.116744
+-20.8471 -0.231187 0.141284
+-20.8088 -0.29117 0.159869
+-20.752 -0.337884 0.172575
+-20.6802 -0.370986 0.179536
+-20.597 -0.390567 0.180978
+-20.506 -0.397119 0.177233
+-20.4105 -0.391484 0.16874
+-20.3139 -0.374796 0.15605
+-20.2191 -0.348415 0.139811
+-20.1287 -0.31387 0.120777
+0 -0.272786 0.0997947
+20.2352 -0.0571936 0.00215831
+20.2645 -0.0938537 0.0142024
+20.2982 -0.131425 0.0271082
+20.3359 -0.16854 0.0403913
+20.3767 -0.203631 0.0535217
+20.4196 -0.234969 0.0659261
+20.4635 -0.260717 0.076994
+20.5067 -0.279 0.086093
+20.5477 -0.287983 0.0925885
+20.5846 -0.28596 0.0958653
+20.6154 -0.271452 0.0953465
+20.6383 -0.243308 0.0905104
+20.6514 -0.200808 0.0809067
+20.6533 -0.14376 0.0661801
+20.6429 -0.072588 0.046112
+20.6197 0.0115833 0.0206944
+20.5839 0.106866 -0.0097545
+20.536 0.210559 -0.0444336
+20.4769 0.319111 -0.0818775
+20.407 0.428114 -0.119792
+20.326 0.532322 -0.154969
+20.2321 0.625705 -0.183367
+20.1221 0.701575 -0.200433
+19.9912 0.752777 -0.201723
+19.8341 0.772011 -0.183772
+19.6465 0.752262 -0.14507
+19.4275 0.687388 -0.0868229
+19.181 0.572792 -0.0131044
+18.9164 0.406071 0.0699239
+18.6469 0.187396 0.155643
+18.3864 -0.0809473 0.238563
+18.145 -0.396893 0.313801
+17.9288 -0.76454 0.371577
+17.7447 -1.20544 0.385325
+17.601 -1.77378 0.298842
+17.4761 -2.56309 0.030446
+17.2197 -3.67408 -0.481326
+16.4246 -5.10607 -1.19346
+14.4831 -6.58926 -1.91156
+11.1009 -7.52165 -2.3919
+7.01143 -7.27641 -2.54416
+3.68832 -5.83801 -2.4271
+1.71495 -3.98687 -2.006
+0.758197 -2.43554 -1.42051
+0.336066 -1.39483 -0.888918
+0.153925 -0.77204 -0.512222
+0.0738513 -0.419782 -0.280365
+0.0366935 -0.226144 -0.148811
+0.0185644 -0.12106 -0.0776274
+0.00952502 -0.064437 -0.0400781
+0.00488864 -0.0341749 -0.020578
+0.0024497 -0.0180952 -0.0105504
+0.00117379 -0.00957299 -0.00541066
+0.000500518 -0.00507596 -0.00278315
+0.000134545 -0.00270978 -0.00144253
+-6.46638e-05 -0.0014621 -0.000755991
+-0.000175157 -0.000804984 -0.000403649
+-0.000241002 -0.000461682 -0.000223625
+-0.000283364 -0.000286762 -0.000133359
+-0.000315036 -0.000208083 -9.28111e-05
+-0.000345212 -0.000193626 -8.45596e-05
+-0.000381501 -0.000237147 -0.000105228
+-0.000434901 -0.000356721 -0.000164556
+-0.000521824 -0.000601281 -0.000289268
+-0.000671183 -0.00107322 -0.000536568
+-0.000943517 -0.00197539 -0.00102252
+-0.0014464 -0.00369386 -0.00197481
+-0.00237805 -0.00696896 -0.0038454
+-0.00415706 -0.0132253 -0.00753024
+-0.00758044 -0.0251423 -0.0147694
+-0.0141524 -0.0477543 -0.0289504
+-0.0271434 -0.0905777 -0.0566177
+-0.0536306 -0.171286 -0.110012
+-0.109071 -0.322448 -0.211371
+-0.231527 -0.604327 -0.398622
+-0.516603 -1.12476 -0.727573
+-1.18946 -2.06093 -1.25815
+-2.73263 -3.65381 -1.99571
+-5.93258 -6.06654 -2.78368
+-11.3228 -8.97817 -3.3232
+-17.9313 -11.2487 -3.48509
+-23.3473 -11.6155 -3.36579
+-26.3859 -10.104 -2.78673
+-27.5492 -7.74385 -1.79992
+-27.8339 -5.51807 -0.771589
+-27.8886 -3.84941 -0.0259197
+-27.9456 -2.71255 0.359978
+-28.0459 -1.92138 0.485646
+-28.1955 -1.31105 0.480542
+-28.4049 -0.78836 0.425012
+-28.6773 -0.317091 0.346538
+-28.9982 0.10861 0.2462
+-29.3385 0.483064 0.122252
+-29.6658 0.798673 -0.0191766
+-29.9558 1.04985 -0.163813
+-30.1977 1.2342 -0.294023
+-30.3947 1.35245 -0.394312
+-30.5594 1.40796 -0.455102
+-30.7083 1.40609 -0.474005
+-30.8564 1.35351 -0.454946
+-31.0135 1.25774 -0.406034
+-31.1828 1.12667 -0.337127
+-31.3617 0.96831 -0.257784
+-31.5431 0.790521 -0.175935
+-31.7175 0.600863 -0.0973183
+-31.8756 0.406457 -0.0255152
+-32.009 0.21386 0.0376403
+-32.1116 0.0289689 0.0915116
+-32.1797 -0.143077 0.136142
+-32.2124 -0.297971 0.171872
+-32.2104 -0.432293 0.199112
+-32.1763 -0.543539 0.218261
+-32.1138 -0.630128 0.229712
+-32.0273 -0.691373 0.233887
+-31.9217 -0.727426 0.231281
+-31.8021 -0.739202 0.222482
+-31.6735 -0.728282 0.208179
+-31.5406 -0.6968 0.189155
+-31.408 -0.647317 0.166292
+-31.2797 -0.582703 0.140574
+0 -0.506011 0.113086
+26.3042 -0.0722211 -0.013841
+26.3369 -0.118428 -0.00808193
+26.3726 -0.16579 -0.00137979
+26.4106 -0.212576 0.00601556
+26.45 -0.256808 0.0138429
+26.4895 -0.296304 0.0218201
+26.5279 -0.328753 0.0296379
+26.5637 -0.351796 0.0369613
+26.5954 -0.363135 0.0434335
+26.6214 -0.360643 0.0486788
+26.6402 -0.342491 0.0523017
+26.6503 -0.307278 0.0538809
+26.6506 -0.254158 0.052964
+26.6408 -0.182963 0.0490726
+26.6208 -0.0943132 0.0417342
+26.5915 0.0102911 0.0305597
+26.5546 0.128395 0.0153788
+26.5122 0.256541 -0.00356382
+26.4664 0.390245 -0.0253753
+26.4188 0.524009 -0.0482942
+26.3693 0.651366 -0.0695642
+26.3156 0.764991 -0.0855081
+26.2521 0.856884 -0.0919036
+26.171 0.918663 -0.0847212
+26.0622 0.942015 -0.0611792
+25.916 0.919304 -0.0209087
+25.7259 0.844381 0.0331723
+25.4903 0.713513 0.0948037
+25.2145 0.526307 0.155619
+24.9078 0.286324 0.207754
+24.5789 0.000833414 0.247156
+24.2271 -0.321177 0.276034
+23.8339 -0.673854 0.302505
+23.3542 -1.06259 0.336864
+22.7053 -1.51236 0.38746
+21.746 -2.06585 0.462114
+20.2505 -2.75341 0.574831
+17.9322 -3.52601 0.738263
+14.6143 -4.18755 0.916134
+10.5481 -4.427 0.971533
+6.55492 -4.02732 0.74412
+3.54419 -3.1129 0.285614
+1.74199 -2.0929 -0.0917673
+0.821073 -1.27797 -0.236647
+0.387035 -0.738482 -0.222309
+0.186946 -0.414898 -0.157053
+0.093227 -0.229776 -0.0962869
+0.0476782 -0.126178 -0.0544181
+0.0247375 -0.0688125 -0.029307
+0.0129059 -0.0372869 -0.0153185
+0.00669309 -0.0201019 -0.0078602
+0.00339103 -0.0108008 -0.00399234
+0.0016283 -0.00579366 -0.00201659
+0.000681174 -0.0031116 -0.00101723
+0.000166297 -0.00167992 -0.000514984
+-0.00011697 -0.000916356 -0.000262472
+-0.000276583 -0.000509989 -0.000135382
+-0.000371211 -0.000295478 -7.15752e-05
+-0.000432471 -0.000185571 -3.99322e-05
+-0.000478875 -0.000136099 -2.55791e-05
+-0.000523102 -0.000127286 -2.21137e-05
+-0.000576561 -0.0001554 -2.82876e-05
+-0.000654219 -0.000231467 -4.75958e-05
+-0.000779993 -0.000385703 -8.98037e-05
+-0.000996537 -0.000680554 -0.000176122
+-0.00138426 -0.00123741 -0.000350261
+-0.00209249 -0.00228617 -0.000699452
+-0.00340184 -0.00426096 -0.00139865
+-0.00585311 -0.00797828 -0.0027958
+-0.0104776 -0.0149538 -0.00556398
+-0.0192619 -0.0279851 -0.0109849
+-0.0362104 -0.052221 -0.0214081
+-0.0696522 -0.0970429 -0.0408008
+-0.137583 -0.179475 -0.0750418
+-0.281231 -0.330481 -0.130198
+-0.596657 -0.605284 -0.204055
+-1.29752 -1.09596 -0.264102
+-2.80974 -1.93188 -0.209719
+-5.79463 -3.21738 0.135732
+-10.7873 -4.84317 0.857716
+-17.3755 -6.29798 1.63745
+-24.0044 -6.90747 1.92089
+-29.2958 -6.47941 1.66679
+-32.8548 -5.39611 1.21129
+-35.0066 -4.18517 0.818938
+-36.2486 -3.16229 0.554808
+-36.9696 -2.38522 0.393716
+-37.421 -1.77907 0.309122
+-37.7596 -1.25506 0.282603
+-38.0766 -0.760724 0.289282
+-38.4093 -0.281226 0.296907
+-38.7539 0.175992 0.277185
+-39.0824 0.595145 0.216397
+-39.3625 0.960389 0.118375
+-39.5724 1.25958 0.000225324
+-39.7082 1.48546 -0.115522
+-39.7827 1.63551 -0.208561
+-39.8201 1.71124 -0.265851
+-39.848 1.7173 -0.283321
+-39.8903 1.66056 -0.264767
+-39.9628 1.54939 -0.219148
+-40.0716 1.39302 -0.1575
+-40.214 1.20109 -0.0903451
+-40.3808 0.983293 -0.02604
+-40.559 0.749133 0.0299027
+-40.7349 0.50767 0.0747136
+-40.8961 0.267339 0.107793
+-41.0329 0.0357845 0.129957
+-41.1384 -0.180288 0.142736
+-41.209 -0.375231 0.147842
+-41.2436 -0.544543 0.146856
+-41.2434 -0.684914 0.141107
+-41.2109 -0.794237 0.131664
+-41.1501 -0.871571 0.119396
+-41.0655 -0.917067 0.105024
+-40.962 -0.931868 0.0891747
+-40.8447 -0.917977 0.0724051
+-40.7186 -0.878104 0.055229
+-40.5886 -0.815511 0.0381467
+-40.4591 -0.733846 0.0216853
+0 -0.63699 0.00643057
+30.4186 -0.0612225 -0.0399879
+30.4485 -0.100324 -0.047938
+30.4782 -0.140402 -0.0551167
+30.5069 -0.179988 -0.0612605
+30.5335 -0.217406 -0.0660444
+30.5571 -0.250807 -0.0691104
+30.5767 -0.278236 -0.0700968
+30.5913 -0.297704 -0.0686644
+30.5999 -0.307273 -0.0645252
+30.6019 -0.30516 -0.0574774
+30.5967 -0.289841 -0.0474474
+30.5842 -0.260164 -0.0345395
+30.5645 -0.215453 -0.0190836
+30.5389 -0.155618 -0.00166821
+30.5089 -0.0812362 0.0168637
+30.4774 0.00636527 0.0354792
+30.4476 0.105061 0.0530976
+30.4234 0.211891 0.0688143
+30.4084 0.323058 0.0821804
+30.405 0.433948 0.0934821
+30.4133 0.539188 0.103926
+30.4299 0.632758 0.115614
+30.4474 0.708166 0.13119
+30.4543 0.75872 0.1531
+30.4358 0.777927 0.182526
+30.3769 0.760037 0.218232
+30.2647 0.700737 0.255803
+30.0924 0.597946 0.287882
+29.8601 0.452591 0.305978
+29.5734 0.269098 0.304005
+29.236 0.0551877 0.283012
+28.8387 -0.179665 0.255746
+28.3433 -0.427734 0.249282
+27.6649 -0.688442 0.304293
+26.6556 -0.97303 0.469962
+25.0995 -1.30151 0.79173
+22.7444 -1.68239 1.2841
+19.4118 -2.07533 1.8819
+15.1948 -2.36482 2.39429
+10.6209 -2.39826 2.54512
+6.52658 -2.10334 2.17036
+3.56484 -1.58369 1.43253
+1.79327 -1.04829 0.726968
+0.868462 -0.635741 0.282575
+0.420341 -0.367429 0.0770667
+0.207952 -0.207672 0.00516351
+0.105811 -0.116202 -0.0114329
+0.0550523 -0.0646183 -0.0108007
+0.0289982 -0.0357167 -0.00704171
+0.0153098 -0.0196173 -0.00398121
+0.00800951 -0.0107143 -0.00208737
+0.00408239 -0.00582727 -0.00104646
+0.0019598 -0.00316212 -0.000508937
+0.000806759 -0.00171682 -0.000241745
+0.000175453 -0.000936205 -0.00011241
+-0.000174595 -0.000515596 -5.07121e-05
+-0.000373418 -0.000289665 -2.1501e-05
+-0.000491819 -0.000169401 -7.67674e-06
+-0.000568926 -0.000107448 -1.01544e-06
+-0.000627728 -7.95423e-05 2.24579e-06
+-0.000683943 -7.47397e-05 3.66798e-06
+-0.000751912 -9.0998e-05 3.56759e-06
+-0.000850117 -0.000134416 1.15356e-06
+-0.00100821 -0.000221708 -5.90064e-06
+-0.00127876 -0.000387097 -2.29096e-05
+-0.00175854 -0.000696302 -6.13259e-05
+-0.00262711 -0.00127274 -0.000144854
+-0.0042196 -0.00234649 -0.000321984
+-0.00716596 -0.00434356 -0.00068836
+-0.0126545 -0.00804501 -0.00142031
+-0.0229539 -0.014872 -0.00281374
+-0.0425231 -0.0273967 -0.00525506
+-0.0804637 -0.0502513 -0.00885106
+-0.156217 -0.0917862 -0.011936
+-0.313264 -0.167171 -0.00626215
+-0.650157 -0.303769 0.0353786
+-1.3805 -0.548346 0.182729
+-2.91697 -0.969186 0.573778
+-5.89015 -1.62849 1.38429
+-10.869 -2.49189 2.62763
+-17.7126 -3.32556 3.8711
+-25.2583 -3.78021 4.41849
+-32.0625 -3.69425 4.01905
+-37.2522 -3.20847 3.00203
+-40.719 -2.59109 1.87276
+-42.8155 -2.03216 0.96637
+-44.0077 -1.58375 0.390686
+-44.6889 -1.21304 0.115193
+-45.1288 -0.871161 0.055937
+-45.4808 -0.528674 0.119968
+-45.808 -0.180005 0.225967
+-46.1126 0.165086 0.315502
+-46.3663 0.490837 0.358015
+-46.5365 0.781598 0.34901
+-46.6043 1.02488 0.302546
+-46.5724 1.21246 0.241085
+-46.4634 1.34035 0.186139
+-46.3125 1.40828 0.152098
+-46.1582 1.41891 0.144013
+-46.0334 1.37711 0.158641
+-45.9606 1.28924 0.187397
+-45.95 1.16265 0.219766
+-46.0003 1.0052 0.246163
+-46.1017 0.824957 0.259723
+-46.2394 0.629926 0.256968
+-46.3972 0.427833 0.237588
+-46.5594 0.22593 0.203676
+-46.7133 0.0308263 0.158767
+-46.8488 -0.15165 0.106946
+-46.9597 -0.316574 0.0521754
+-47.0421 -0.460006 -0.00210691
+-47.0948 -0.579039 -0.0531585
+-47.1183 -0.671811 -0.0989379
+-47.1144 -0.737472 -0.138032
+-47.0858 -0.776122 -0.169562
+-47.0358 -0.788718 -0.193092
+-46.9683 -0.776961 -0.208558
+-46.887 -0.743157 -0.216183
+-46.7961 -0.690087 -0.216395
+-46.6993 -0.620862 -0.209729
+0 -0.538786 -0.196736
+32.6535 -0.0240345 -0.0642532
+32.6784 -0.039369 -0.0858609
+32.7001 -0.0550857 -0.10694
+32.7174 -0.0706085 -0.126715
+32.7295 -0.0852786 -0.144274
+32.7357 -0.0983714 -0.158621
+32.7353 -0.10912 -0.168722
+32.7279 -0.116745 -0.173562
+32.7134 -0.120489 -0.172207
+32.6917 -0.119656 -0.163873
+32.6636 -0.113653 -0.148016
+32.6298 -0.102035 -0.124416
+32.5922 -0.0845477 -0.0932738
+32.553 -0.0611645 -0.0552773
+32.5156 -0.0321246 -0.0116249
+32.4839 0.00203999 0.036023
+32.4627 0.0404851 0.0856891
+32.4573 0.0820435 0.135323
+32.472 0.125225 0.18312
+32.5098 0.168228 0.227852
+32.571 0.208967 0.269112
+32.6512 0.245118 0.307352
+32.7416 0.274195 0.343589
+32.828 0.293656 0.378721
+32.8923 0.301064 0.412522
+32.9154 0.294308 0.442591
+32.8806 0.271866 0.463752
+32.7768 0.233125 0.468567
+32.6012 0.178666 0.449559
+32.3565 0.11045 0.403335
+32.0438 0.0317172 0.336119
+31.6484 -0.0536045 0.269424
+31.1188 -0.142213 0.244014
+30.344 -0.233363 0.319767
+29.1341 -0.330413 0.567287
+27.2285 -0.439518 1.0436
+24.3649 -0.562482 1.74371
+20.4367 -0.684591 2.53746
+15.6918 -0.767736 3.14777
+10.7992 -0.765425 3.25976
+6.59616 -0.660644 2.76035
+3.61594 -0.491161 1.88769
+1.83585 -0.322208 1.05401
+0.898683 -0.194311 0.495737
+0.439567 -0.112041 0.203729
+0.219637 -0.0633874 0.0756456
+0.11279 -0.0356017 0.0262472
+0.059189 -0.0199085 0.00889088
+0.0314226 -0.0110761 0.00312579
+0.0166993 -0.00612567 0.00123175
+0.00878023 -0.00336869 0.000573476
+0.00448832 -0.00184433 0.000308972
+0.00215213 -0.00100721 0.000181272
+0.00087501 -0.000550173 0.000110469
+0.000172084 -0.000301734 6.84543e-05
+-0.000219622 -0.000167089 4.31986e-05
+-0.000443164 -9.43811e-05 2.82587e-05
+-0.00057683 -5.54988e-05 1.97638e-05
+-0.000664255 -3.54061e-05 1.53831e-05
+-0.000731209 -2.63525e-05 1.37644e-05
+-0.000795369 -2.48294e-05 1.42492e-05
+-0.000872916 -3.01838e-05 1.67329e-05
+-0.000984597 -4.43745e-05 2.16395e-05
+-0.00116359 -7.27599e-05 3.00477e-05
+-0.00146839 -0.000126258 4.39583e-05
+-0.0020058 -0.000225705 6.68087e-05
+-0.00297303 -0.000410014 0.000104503
+-0.00473584 -0.000751219 0.000167547
+-0.00797516 -0.00138167 0.000277426
+-0.0139656 -0.00254234 0.000487753
+-0.0251232 -0.00466849 0.000954174
+-0.04615 -0.0085423 0.00217231
+-0.0865701 -0.0155659 0.00573471
+-0.166633 -0.0282654 0.0165424
+-0.331312 -0.0512485 0.0487558
+-0.681572 -0.0929153 0.139407
+-1.43389 -0.167858 0.371824
+-3.00081 -0.297842 0.895579
+-6.00904 -0.503764 1.8835
+-11.0551 -0.778025 3.33223
+-18.1309 -1.05135 4.80156
+-26.2593 -1.21397 5.56216
+-33.9696 -1.2067 5.22273
+-40.1346 -1.0656 4.0222
+-44.3915 -0.874024 2.53981
+-46.994 -0.695438 1.26577
+-48.4483 -0.549247 0.419769
+-49.2369 -0.42559 0.0011526
+-49.7035 -0.30817 -0.096373
+-50.0431 -0.187023 -0.00202738
+-50.3347 -0.0606239 0.172154
+-50.583 0.0669088 0.346465
+-50.7579 0.189146 0.476609
+-50.8255 0.299645 0.549535
+-50.768 0.39315 0.574282
+-50.5922 0.466061 0.570651
+-50.3273 0.516465 0.558933
+-50.016 0.543946 0.553078
+-49.7045 0.549299 0.558089
+-49.4326 0.534232 0.570948
+-49.2281 0.501097 0.583608
+-49.1046 0.452671 0.586503
+-49.0628 0.391975 0.57148
+-49.0936 0.322146 0.533594
+-49.1817 0.246316 0.471707
+-49.3095 0.167527 0.388133
+-49.46 0.0886468 0.287702
+-49.6181 0.0122989 0.176638
+-49.772 -0.0591987 0.0615056
+-49.9131 -0.123883 -0.0515717
+-50.0356 -0.18018 -0.157393
+-50.1358 -0.226928 -0.251884
+-50.2121 -0.263378 -0.332107
+-50.2642 -0.289186 -0.39617
+-50.2929 -0.304386 -0.4431
+-50.2995 -0.309349 -0.47271
+-50.2863 -0.304744 -0.485473
+-50.2556 -0.291479 -0.482388
+-50.2102 -0.270648 -0.464843
+-50.1531 -0.243477 -0.434455
+0 -0.211265 -0.392931
+33.3446 0.0240345 -0.074076
+33.3672 0.0393691 -0.101336
+33.3852 0.0550857 -0.128177
+33.3976 0.0706085 -0.153611
+33.4036 0.0852786 -0.176483
+33.4023 0.0983714 -0.195532
+33.3935 0.10912 -0.209446
+33.377 0.116745 -0.216929
+33.3528 0.120489 -0.21678
+33.3215 0.119656 -0.207976
+33.2839 0.113653 -0.189775
+33.2417 0.102035 -0.161829
+33.1969 0.0845477 -0.124285
+33.1524 0.0611645 -0.0778728
+33.1121 0.0321246 -0.0239412
+33.0806 -0.00204 0.0355881
+33.0632 -0.0404851 0.0983651
+33.0654 -0.0820435 0.161863
+33.0922 -0.125225 0.223713
+33.1466 -0.168228 0.282057
+33.2287 -0.208967 0.335817
+33.3341 -0.245118 0.384765
+33.4533 -0.274195 0.429253
+33.571 -0.293656 0.469561
+33.6682 -0.301064 0.504934
+33.7243 -0.294308 0.532571
+33.7209 -0.271866 0.547105
+33.6459 -0.233125 0.541215
+33.4953 -0.178666 0.507993
+33.2709 -0.11045 0.445255
+32.973 -0.0317172 0.361319
+32.5848 0.0536045 0.280995
+32.0505 0.142213 0.249924
+31.2493 0.233363 0.334437
+29.9768 0.330413 0.611695
+27.9569 0.439518 1.14081
+24.9246 0.562482 1.90733
+20.7985 0.684591 2.75696
+15.8778 0.767736 3.38519
+10.8763 0.765425 3.47069
+6.63077 0.660644 2.92425
+3.63834 0.491161 2.01011
+1.85188 0.322208 1.14205
+0.909141 0.194311 0.554115
+0.445923 0.112041 0.239136
+0.22341 0.0633874 0.0957376
+0.115026 0.0356017 0.0371804
+0.0605165 0.0199085 0.014693
+0.0322042 0.0110761 0.00616001
+0.0171498 0.00612567 0.00280303
+0.00903127 0.00336869 0.00138118
+0.00462052 0.00184433 0.000722088
+0.00221417 0.00100721 0.00039194
+0.000895965 0.000550173 0.000217857
+0.000169101 0.000301734 0.000123396
+-0.000236634 0.000167089 7.15574e-05
+-0.000468558 9.43811e-05 4.31614e-05
+-0.000607445 5.54988e-05 2.78902e-05
+-0.000698429 3.54061e-05 2.01713e-05
+-0.000768212 2.63525e-05 1.7078e-05
+-0.000835139 2.48294e-05 1.72689e-05
+-0.000916018 3.01838e-05 2.05108e-05
+-0.00103236 4.43745e-05 2.7598e-05
+-0.00121854 7.27599e-05 4.06559e-05
+-0.00153499 0.000126258 6.3936e-05
+-0.00209185 0.000225705 0.000105449
+-0.00309208 0.000410014 0.000180199
+-0.00491126 0.000751219 0.00031674
+-0.00824667 0.00138167 0.000572073
+-0.0144003 0.00254234 0.00106893
+-0.0258341 0.00466849 0.00209683
+-0.0473269 0.0085423 0.00440819
+-0.0885395 0.0155659 0.0100809
+-0.169991 0.0282654 0.0249205
+-0.337185 0.0512485 0.0646977
+-0.692049 0.0929153 0.169033
+-1.45242 0.167858 0.42466
+-3.03182 0.297842 0.983714
+-6.05735 0.503764 2.018
+-11.1356 0.778025 3.52219
+-18.2995 1.05135 5.06117
+-26.6283 1.21397 5.9009
+-34.6435 1.2067 5.60177
+-41.1361 1.0656 4.3614
+-45.6577 0.874024 2.77351
+-48.4271 0.695438 1.37853
+-49.9635 0.549247 0.437922
+-50.7806 0.42559 -0.0341206
+-51.2483 0.30817 -0.148573
+-51.5765 0.187023 -0.0458282
+-51.8496 0.0606239 0.151825
+-52.073 -0.0669088 0.357204
+-52.2156 -0.189146 0.520876
+-52.2426 -0.299645 0.626305
+-52.1365 -0.39315 0.680221
+-51.9054 -0.466061 0.700969
+-51.5804 -0.516465 0.707978
+-51.2072 -0.543946 0.714727
+-50.8347 -0.549299 0.726013
+-50.505 -0.534232 0.73882
+-50.2481 -0.501097 0.745305
+-50.0791 -0.452671 0.736323
+-49.9995 -0.391975 0.704358
+-50.0005 -0.322146 0.64531
+-50.067 -0.246316 0.559046
+-50.1809 -0.167527 0.448991
+-50.3247 -0.0886468 0.321127
+-50.4829 -0.0122989 0.182797
+-50.6429 0.0591987 0.0415943
+-50.7952 0.123883 -0.0954638
+-50.9331 0.18018 -0.222448
+-51.0522 0.226928 -0.334734
+-51.15 0.263378 -0.429019
+-51.2251 0.289186 -0.503217
+-51.2776 0.304386 -0.556322
+-51.308 0.309349 -0.588258
+-51.3178 0.304744 -0.599726
+-51.3087 0.291479 -0.592055
+-51.283 0.270648 -0.567033
+-51.2432 0.243477 -0.526732
+0 0.211266 -0.47334
+32.6535 0.0612225 -0.0642532
+32.6784 0.100324 -0.0858609
+32.7001 0.140402 -0.10694
+32.7174 0.179988 -0.126715
+32.7295 0.217406 -0.144274
+32.7357 0.250807 -0.158621
+32.7353 0.278236 -0.168722
+32.7279 0.297704 -0.173562
+32.7134 0.307273 -0.172207
+32.6917 0.30516 -0.163873
+32.6636 0.289841 -0.148016
+32.6298 0.260164 -0.124416
+32.5922 0.215453 -0.0932738
+32.553 0.155618 -0.0552772
+32.5156 0.0812362 -0.0116249
+32.4839 -0.00636527 0.036023
+32.4627 -0.105061 0.0856891
+32.4573 -0.211891 0.135323
+32.472 -0.323058 0.18312
+32.5098 -0.433948 0.227852
+32.571 -0.539188 0.269112
+32.6512 -0.632758 0.307352
+32.7416 -0.708166 0.343589
+32.828 -0.75872 0.378721
+32.8923 -0.777927 0.412522
+32.9154 -0.760037 0.442591
+32.8806 -0.700737 0.463752
+32.7768 -0.597946 0.468567
+32.6012 -0.452591 0.449559
+32.3565 -0.269098 0.403335
+32.0438 -0.0551877 0.336119
+31.6484 0.179665 0.269424
+31.1188 0.427734 0.244014
+30.344 0.688442 0.319767
+29.1341 0.97303 0.567287
+27.2285 1.30151 1.0436
+24.3649 1.68239 1.74371
+20.4367 2.07533 2.53746
+15.6918 2.36482 3.14777
+10.7992 2.39826 3.25976
+6.59616 2.10334 2.76035
+3.61594 1.58369 1.88769
+1.83585 1.04829 1.05401
+0.898683 0.635741 0.495737
+0.439567 0.367429 0.203729
+0.219637 0.207672 0.0756456
+0.11279 0.116202 0.0262472
+0.059189 0.0646183 0.00889088
+0.0314226 0.0357167 0.00312579
+0.0166993 0.0196173 0.00123175
+0.00878023 0.0107143 0.000573476
+0.00448832 0.00582727 0.000308972
+0.00215213 0.00316212 0.000181272
+0.00087501 0.00171682 0.000110469
+0.000172084 0.000936205 6.84543e-05
+-0.000219622 0.000515596 4.31986e-05
+-0.000443164 0.000289665 2.82587e-05
+-0.00057683 0.000169401 1.97638e-05
+-0.000664255 0.000107448 1.53831e-05
+-0.000731209 7.95423e-05 1.37644e-05
+-0.000795369 7.47397e-05 1.42492e-05
+-0.000872916 9.0998e-05 1.67329e-05
+-0.000984597 0.000134416 2.16395e-05
+-0.00116359 0.000221708 3.00477e-05
+-0.00146839 0.000387097 4.39583e-05
+-0.0020058 0.000696302 6.68087e-05
+-0.00297303 0.00127274 0.000104503
+-0.00473584 0.00234649 0.000167547
+-0.00797516 0.00434356 0.000277426
+-0.0139656 0.00804501 0.000487753
+-0.0251232 0.014872 0.000954174
+-0.04615 0.0273967 0.00217231
+-0.0865701 0.0502513 0.00573471
+-0.166633 0.0917862 0.0165424
+-0.331312 0.167171 0.0487558
+-0.681572 0.303769 0.139407
+-1.43389 0.548346 0.371824
+-3.00081 0.969186 0.895579
+-6.00904 1.62849 1.8835
+-11.0551 2.49189 3.33223
+-18.1309 3.32556 4.80156
+-26.2593 3.78021 5.56216
+-33.9696 3.69425 5.22273
+-40.1346 3.20847 4.0222
+-44.3915 2.59109 2.53981
+-46.994 2.03216 1.26577
+-48.4483 1.58375 0.419769
+-49.2369 1.21304 0.0011526
+-49.7035 0.871161 -0.096373
+-50.0431 0.528674 -0.00202736
+-50.3347 0.180005 0.172154
+-50.583 -0.165086 0.346465
+-50.7579 -0.490837 0.476609
+-50.8255 -0.781598 0.549535
+-50.768 -1.02488 0.574282
+-50.5922 -1.21246 0.570651
+-50.3273 -1.34035 0.558933
+-50.016 -1.40828 0.553078
+-49.7045 -1.41891 0.558089
+-49.4326 -1.37711 0.570948
+-49.2281 -1.28924 0.583608
+-49.1046 -1.16265 0.586503
+-49.0628 -1.0052 0.57148
+-49.0936 -0.824957 0.533594
+-49.1817 -0.629926 0.471707
+-49.3095 -0.427833 0.388133
+-49.46 -0.22593 0.287702
+-49.6181 -0.0308263 0.176638
+-49.772 0.15165 0.0615056
+-49.9131 0.316574 -0.0515718
+-50.0356 0.460006 -0.157393
+-50.1358 0.579039 -0.251884
+-50.2121 0.671811 -0.332107
+-50.2642 0.737472 -0.39617
+-50.2929 0.776122 -0.4431
+-50.2995 0.788718 -0.47271
+-50.2863 0.776961 -0.485473
+-50.2556 0.743157 -0.482388
+-50.2102 0.690087 -0.464843
+-50.1531 0.620862 -0.434455
+0 0.538786 -0.392931
+30.4186 0.0722211 -0.0399878
+30.4485 0.118428 -0.047938
+30.4782 0.16579 -0.0551167
+30.5069 0.212576 -0.0612604
+30.5335 0.256808 -0.0660444
+30.5571 0.296304 -0.0691104
+30.5767 0.328753 -0.0700968
+30.5913 0.351796 -0.0686644
+30.5999 0.363135 -0.0645252
+30.6019 0.360643 -0.0574774
+30.5967 0.342491 -0.0474474
+30.5842 0.307278 -0.0345395
+30.5645 0.254158 -0.0190836
+30.5389 0.182963 -0.00166819
+30.5089 0.0943132 0.0168637
+30.4774 -0.0102911 0.0354792
+30.4476 -0.128395 0.0530976
+30.4234 -0.256541 0.0688143
+30.4084 -0.390245 0.0821804
+30.405 -0.524009 0.0934821
+30.4133 -0.651366 0.103926
+30.4299 -0.764991 0.115614
+30.4474 -0.856883 0.13119
+30.4543 -0.918663 0.1531
+30.4358 -0.942015 0.182526
+30.3769 -0.919304 0.218232
+30.2647 -0.844381 0.255803
+30.0924 -0.713513 0.287882
+29.8601 -0.526307 0.305978
+29.5734 -0.286324 0.304005
+29.236 -0.00083342 0.283012
+28.8387 0.321177 0.255746
+28.3433 0.673854 0.249282
+27.6649 1.06259 0.304293
+26.6556 1.51236 0.469962
+25.0995 2.06585 0.79173
+22.7444 2.75341 1.2841
+19.4118 3.52601 1.8819
+15.1948 4.18755 2.39429
+10.6209 4.427 2.54512
+6.52658 4.02732 2.17036
+3.56484 3.1129 1.43253
+1.79327 2.0929 0.726968
+0.868462 1.27797 0.282575
+0.420341 0.738482 0.0770667
+0.207952 0.414898 0.00516351
+0.105811 0.229776 -0.0114329
+0.0550523 0.126178 -0.0108007
+0.0289982 0.0688125 -0.00704171
+0.0153098 0.0372869 -0.00398121
+0.00800951 0.0201019 -0.00208737
+0.00408239 0.0108008 -0.00104646
+0.0019598 0.00579366 -0.000508937
+0.000806759 0.0031116 -0.000241745
+0.000175453 0.00167992 -0.00011241
+-0.000174595 0.000916356 -5.07121e-05
+-0.000373418 0.000509989 -2.1501e-05
+-0.000491819 0.000295478 -7.67674e-06
+-0.000568926 0.000185571 -1.01544e-06
+-0.000627728 0.000136099 2.24579e-06
+-0.000683943 0.000127286 3.66798e-06
+-0.000751912 0.0001554 3.56759e-06
+-0.000850117 0.000231467 1.15356e-06
+-0.00100821 0.000385703 -5.90064e-06
+-0.00127876 0.000680554 -2.29096e-05
+-0.00175854 0.00123741 -6.13259e-05
+-0.00262711 0.00228617 -0.000144854
+-0.0042196 0.00426096 -0.000321984
+-0.00716596 0.00797828 -0.00068836
+-0.0126545 0.0149538 -0.00142031
+-0.0229539 0.0279851 -0.00281374
+-0.0425231 0.052221 -0.00525506
+-0.0804637 0.0970429 -0.00885106
+-0.156217 0.179475 -0.011936
+-0.313264 0.330481 -0.00626215
+-0.650157 0.605284 0.0353786
+-1.3805 1.09596 0.182729
+-2.91697 1.93188 0.573778
+-5.89015 3.21738 1.38429
+-10.869 4.84317 2.62763
+-17.7126 6.29798 3.8711
+-25.2583 6.90747 4.41849
+-32.0625 6.47941 4.01905
+-37.2522 5.39611 3.00203
+-40.719 4.18517 1.87276
+-42.8155 3.16229 0.96637
+-44.0077 2.38522 0.390686
+-44.6889 1.77907 0.115193
+-45.1288 1.25506 0.0559371
+-45.4808 0.760724 0.119968
+-45.808 0.281226 0.225967
+-46.1126 -0.175992 0.315502
+-46.3663 -0.595145 0.358015
+-46.5365 -0.960389 0.34901
+-46.6043 -1.25958 0.302546
+-46.5724 -1.48546 0.241085
+-46.4634 -1.63551 0.186139
+-46.3125 -1.71124 0.152098
+-46.1582 -1.7173 0.144013
+-46.0334 -1.66056 0.158641
+-45.9606 -1.54939 0.187397
+-45.95 -1.39302 0.219766
+-46.0003 -1.20109 0.246163
+-46.1017 -0.983293 0.259723
+-46.2394 -0.749133 0.256968
+-46.3972 -0.50767 0.237588
+-46.5594 -0.267339 0.203676
+-46.7133 -0.0357845 0.158767
+-46.8488 0.180288 0.106946
+-46.9597 0.375231 0.0521754
+-47.0421 0.544543 -0.00210692
+-47.0948 0.684914 -0.0531585
+-47.1183 0.794237 -0.0989379
+-47.1144 0.871571 -0.138032
+-47.0858 0.917067 -0.169562
+-47.0358 0.931868 -0.193092
+-46.9683 0.917977 -0.208558
+-46.887 0.878104 -0.216183
+-46.7961 0.815511 -0.216395
+-46.6993 0.733846 -0.209729
+0 0.63699 -0.196736
+26.3042 0.0571936 -0.013841
+26.3369 0.0938537 -0.00808194
+26.3726 0.131425 -0.00137979
+26.4106 0.16854 0.00601557
+26.45 0.203631 0.0138429
+26.4895 0.234969 0.0218201
+26.5279 0.260717 0.029638
+26.5637 0.279 0.0369613
+26.5954 0.287983 0.0434334
+26.6214 0.28596 0.0486788
+26.6402 0.271452 0.0523017
+26.6503 0.243308 0.0538809
+26.6506 0.200808 0.052964
+26.6408 0.14376 0.0490726
+26.6208 0.072588 0.0417342
+26.5915 -0.0115833 0.0305597
+26.5546 -0.106866 0.0153788
+26.5122 -0.210559 -0.00356382
+26.4664 -0.319111 -0.0253754
+26.4188 -0.428114 -0.0482942
+26.3693 -0.532322 -0.0695642
+26.3156 -0.625705 -0.0855081
+26.2521 -0.701575 -0.0919036
+26.171 -0.752777 -0.0847212
+26.0622 -0.772011 -0.0611792
+25.916 -0.752262 -0.0209087
+25.7259 -0.687388 0.0331723
+25.4903 -0.572792 0.0948037
+25.2145 -0.406071 0.155619
+24.9078 -0.187396 0.207754
+24.5789 0.0809473 0.247156
+24.2271 0.396893 0.276034
+23.8339 0.76454 0.302505
+23.3542 1.20544 0.336864
+22.7053 1.77378 0.38746
+21.746 2.56309 0.462114
+20.2505 3.67408 0.574831
+17.9322 5.10607 0.738263
+14.6143 6.58926 0.916134
+10.5481 7.52165 0.971533
+6.55492 7.27641 0.74412
+3.54419 5.83801 0.285614
+1.74199 3.98687 -0.0917673
+0.821073 2.43554 -0.236647
+0.387035 1.39483 -0.222309
+0.186946 0.77204 -0.157053
+0.093227 0.419782 -0.0962869
+0.0476782 0.226144 -0.0544181
+0.0247375 0.12106 -0.029307
+0.0129059 0.064437 -0.0153185
+0.00669309 0.0341749 -0.0078602
+0.00339103 0.0180952 -0.00399234
+0.0016283 0.00957299 -0.00201659
+0.000681174 0.00507596 -0.00101723
+0.000166297 0.00270978 -0.000514984
+-0.00011697 0.0014621 -0.000262472
+-0.000276583 0.000804984 -0.000135382
+-0.000371211 0.000461682 -7.15752e-05
+-0.000432471 0.000286762 -3.99322e-05
+-0.000478875 0.000208083 -2.55791e-05
+-0.000523102 0.000193626 -2.21137e-05
+-0.000576561 0.000237147 -2.82876e-05
+-0.000654219 0.000356721 -4.75958e-05
+-0.000779993 0.000601281 -8.98037e-05
+-0.000996537 0.00107322 -0.000176122
+-0.00138426 0.00197539 -0.000350261
+-0.00209249 0.00369386 -0.000699452
+-0.00340184 0.00696896 -0.00139865
+-0.00585311 0.0132253 -0.0027958
+-0.0104776 0.0251423 -0.00556398
+-0.0192619 0.0477543 -0.0109849
+-0.0362104 0.0905777 -0.0214081
+-0.0696522 0.171286 -0.0408008
+-0.137583 0.322448 -0.0750418
+-0.281231 0.604327 -0.130198
+-0.596657 1.12476 -0.204055
+-1.29752 2.06093 -0.264102
+-2.80974 3.65381 -0.209719
+-5.79463 6.06654 0.135732
+-10.7873 8.97817 0.857716
+-17.3755 11.2487 1.63745
+-24.0044 11.6155 1.92089
+-29.2958 10.104 1.66679
+-32.8548 7.74385 1.21129
+-35.0066 5.51807 0.818938
+-36.2486 3.84941 0.554808
+-36.9696 2.71255 0.393716
+-37.421 1.92138 0.309122
+-37.7596 1.31105 0.282603
+-38.0766 0.78836 0.289282
+-38.4093 0.317091 0.296907
+-38.7539 -0.10861 0.277185
+-39.0824 -0.483064 0.216397
+-39.3625 -0.798673 0.118375
+-39.5724 -1.04985 0.000225323
+-39.7082 -1.2342 -0.115522
+-39.7827 -1.35245 -0.208561
+-39.8201 -1.40796 -0.265851
+-39.848 -1.40609 -0.283321
+-39.8903 -1.35351 -0.264766
+-39.9628 -1.25774 -0.219148
+-40.0716 -1.12667 -0.1575
+-40.214 -0.96831 -0.0903451
+-40.3808 -0.790521 -0.02604
+-40.559 -0.600863 0.0299027
+-40.7349 -0.406457 0.0747135
+-40.8961 -0.21386 0.107793
+-41.0329 -0.0289689 0.129957
+-41.1384 0.143077 0.142736
+-41.209 0.297971 0.147842
+-41.2436 0.432293 0.146856
+-41.2434 0.543539 0.141107
+-41.2109 0.630128 0.131664
+-41.1501 0.691373 0.119396
+-41.0655 0.727426 0.105024
+-40.962 0.739202 0.0891747
+-40.8447 0.728282 0.0724051
+-40.7186 0.6968 0.055229
+-40.5886 0.647317 0.0381467
+-40.4591 0.582703 0.0216853
+0 0.506011 0.00643059
+20.2352 0.0306948 0.00215828
+20.2645 0.0503918 0.0142024
+20.2982 0.0705666 0.0271082
+20.3359 0.0904863 0.0403913
+20.3767 0.109309 0.0535217
+20.4196 0.126107 0.0659261
+20.4635 0.139892 0.076994
+20.5067 0.149653 0.086093
+20.5477 0.154399 0.0925885
+20.5846 0.153203 0.0958653
+20.6154 0.145257 0.0953465
+20.6383 0.129921 0.0905104
+20.6514 0.106784 0.0809067
+20.6533 0.0757102 0.0661801
+20.6429 0.0368921 0.046112
+20.6197 -0.00910315 0.0206944
+20.5839 -0.0612955 -0.0097545
+20.536 -0.118258 -0.0444336
+20.4769 -0.178091 -0.0818775
+20.407 -0.238409 -0.119792
+20.326 -0.296333 -0.154969
+20.2321 -0.348512 -0.183367
+20.1221 -0.39116 -0.200433
+19.9912 -0.420142 -0.201723
+19.8341 -0.431099 -0.183772
+19.6465 -0.419638 -0.14507
+19.4275 -0.381567 -0.0868229
+19.181 -0.313158 -0.0131044
+18.9164 -0.21134 0.0699239
+18.6469 -0.0736078 0.155643
+18.3864 0.102906 0.238563
+18.145 0.32452 0.313801
+17.9288 0.609139 0.371577
+17.7447 1.00426 0.385325
+17.601 1.61862 0.298842
+17.4761 2.65752 0.030446
+17.2197 4.41184 -0.481326
+16.4246 7.09456 -1.19346
+14.4831 10.4424 -1.91156
+11.1009 13.2957 -2.3919
+7.01143 13.9101 -2.54416
+3.68832 11.5882 -2.4271
+1.71495 7.96623 -2.006
+0.758197 4.8128 -1.42051
+0.336066 2.70588 -0.888918
+0.153925 1.4664 -0.512222
+0.0738513 0.78022 -0.280365
+0.0366935 0.412113 -0.148811
+0.0185644 0.216817 -0.0776274
+0.00952502 0.113555 -0.0400781
+0.00488864 0.0593893 -0.020578
+0.0024497 0.0310845 -0.0105504
+0.00117379 0.0162596 -0.00541066
+0.000500518 0.00853238 -0.00278315
+0.000134545 0.00451829 -0.00144253
+-6.46638e-05 0.0024173 -0.000755991
+-0.000175157 0.00131913 -0.000403649
+-0.000241002 0.000751153 -0.000223625
+-0.000283364 0.000462483 -0.000133359
+-0.000315036 0.000332566 -9.28111e-05
+-0.000345212 0.000308361 -8.45596e-05
+-0.000381501 0.000378664 -0.000105228
+-0.000434901 0.000574676 -0.000164556
+-0.000521824 0.000977472 -0.000289268
+-0.000671183 0.00175915 -0.000536568
+-0.000943517 0.00327024 -0.00102252
+-0.0014464 0.00617155 -0.00197481
+-0.00237805 0.011746 -0.0038454
+-0.00415706 0.0225346 -0.00753024
+-0.00758044 0.0433351 -0.0147694
+-0.0141524 0.0832767 -0.0289504
+-0.0271434 0.160186 -0.0566177
+-0.0536306 0.307785 -0.110012
+-0.109071 0.58926 -0.211371
+-0.231527 1.12541 -0.398622
+-0.516603 2.13741 -0.727573
+-1.18946 3.99194 -1.25815
+-2.73263 7.19269 -1.99571
+-5.93258 12.0502 -2.78368
+-11.3228 17.6916 -3.3232
+-17.9313 21.3423 -3.48509
+-23.3473 20.3973 -3.36579
+-26.3859 15.9293 -2.78673
+-27.5492 10.7071 -1.79992
+-27.8339 6.57434 -0.771589
+-27.8886 3.92995 -0.0259197
+-27.9456 2.40965 0.359978
+-28.0459 1.536 0.485646
+-28.1955 0.980099 0.480542
+-28.4049 0.57274 0.425012
+-28.6773 0.242998 0.346538
+-28.9982 -0.0339093 0.2462
+-29.3385 -0.265062 0.122252
+-29.6658 -0.452152 -0.0191766
+-29.9558 -0.596044 -0.163813
+-30.1977 -0.698237 -0.294023
+-30.3947 -0.761178 -0.394312
+-30.5594 -0.788171 -0.455102
+-30.7083 -0.783156 -0.474005
+-30.8564 -0.75047 -0.454946
+-31.0135 -0.694635 -0.406034
+-31.1828 -0.620204 -0.337127
+-31.3617 -0.53164 -0.257784
+-31.5431 -0.433237 -0.175935
+-31.7175 -0.329055 -0.0973183
+-31.8756 -0.222871 -0.0255152
+-32.009 -0.118131 0.0376403
+-32.1116 -0.0179106 0.0915116
+-32.1797 0.0751227 0.136142
+-32.2124 0.158743 0.171872
+-32.2104 0.231187 0.199112
+-32.1763 0.29117 0.218261
+-32.1138 0.337884 0.229712
+-32.0273 0.370986 0.233887
+-31.9217 0.390567 0.231281
+-31.8021 0.397119 0.222482
+-31.6735 0.391484 0.208179
+-31.5406 0.374796 0.189155
+-31.408 0.348415 0.166292
+-31.2797 0.31387 0.140574
+0 0.272786 0.113086
+12.9366 0.00994183 0.00481527
+12.9564 0.0163341 0.0142773
+12.9798 0.0228667 0.0242752
+13.0066 0.0293021 0.0344224
+13.0362 0.0353668 0.0442986
+13.0681 0.0407588 0.0534537
+13.1014 0.0451569 0.0614149
+13.1351 0.048232 0.0676996
+13.168 0.049661 0.0718325
+13.1987 0.0491413 0.0733628
+13.2257 0.0464075 0.0718809
+13.2473 0.0412488 0.0670323
+13.2621 0.0335259 0.0585311
+13.2684 0.0231893 0.0461778
+13.2651 0.0102948 0.0298884
+13.2513 -0.00498117 0.00974362
+13.2262 -0.0223281 -0.0139348
+13.1897 -0.0412903 -0.0404813
+13.1417 -0.061258 -0.0687685
+13.0818 -0.0814605 -0.097101
+13.0096 -0.100962 -0.123163
+12.9238 -0.11866 -0.144074
+12.8226 -0.133289 -0.156605
+12.7034 -0.143434 -0.157579
+12.5643 -0.147546 -0.144435
+12.4045 -0.143973 -0.115831
+12.226 -0.131 -0.0720856
+12.0349 -0.106867 -0.015186
+11.8415 -0.0697209 0.0517815
+11.6596 -0.0172752 0.125563
+11.5052 0.0544276 0.202876
+11.3977 0.155042 0.27696
+11.3697 0.311665 0.325527
+11.4903 0.599021 0.284633
+11.894 1.20413 0.0108045
+12.7615 2.52911 -0.739118
+14.1459 5.26382 -2.23634
+15.5835 10.1926 -4.53567
+15.7941 17.3671 -7.13528
+13.3328 24.7219 -8.96487
+8.54851 27.8493 -9.15495
+4.23363 23.8055 -7.90244
+1.7577 16.2702 -5.82804
+0.680375 9.63984 -3.74971
+0.264054 5.30825 -2.18605
+0.107507 2.82386 -1.20091
+0.048125 1.47829 -0.638683
+0.0229478 0.771402 -0.334112
+0.011097 0.402176 -0.173509
+0.00561427 0.208816 -0.0897783
+0.0028911 0.10849 -0.0463776
+0.00140822 0.0565436 -0.0239761
+0.000670323 0.0294149 -0.0124174
+0.000299461 0.015357 -0.00645374
+8.42447e-05 0.00811355 -0.00338005
+-3.01435e-05 0.00432307 -0.00179138
+-8.93884e-05 0.00234652 -0.000968154
+-0.000127569 0.00133305 -0.000543718
+-0.000151899 0.000816749 -0.000329936
+-0.000169055 0.000583753 -0.000234031
+-0.000185811 0.000540619 -0.000215502
+-0.000205203 0.000664828 -0.000266772
+-0.000235803 0.00101567 -0.000410396
+-0.000285492 0.00173587 -0.000708707
+-0.000365318 0.0031332 -0.00129422
+-0.000522082 0.00585851 -0.0024315
+-0.000815924 0.0111019 -0.00463654
+-0.00132896 0.0211856 -0.00892658
+-0.00236453 0.0408643 -0.0172941
+-0.00444664 0.0790109 -0.0335937
+-0.0083104 0.152488 -0.0653474
+-0.0162445 0.295304 -0.127183
+-0.0336388 0.572288 -0.247108
+-0.0713211 1.10545 -0.478507
+-0.162329 2.13665 -0.920233
+-0.405931 4.12252 -1.74151
+-1.05975 7.8378 -3.19204
+-2.76042 14.4066 -5.51325
+-6.67379 24.5888 -8.62526
+-13.4849 36.2817 -11.779
+-21.0085 42.6426 -13.7767
+-24.8372 37.865 -13.639
+-24.4501 26.4718 -10.9296
+-22.1687 15.3738 -6.94821
+-20.0077 7.81704 -3.4037
+-18.6549 3.69324 -1.11607
+-17.9922 1.7432 0.00381243
+-17.7321 0.87751 0.398349
+-17.6823 0.474339 0.455994
+-17.7576 0.252862 0.39514
+-17.9227 0.105231 0.302853
+-18.1524 -0.00566823 0.201485
+-18.4189 -0.0921515 0.0935473
+-18.6938 -0.158792 -0.01841
+-18.9548 -0.207969 -0.127148
+-19.1888 -0.241508 -0.2227
+-19.393 -0.261126 -0.295877
+-19.5717 -0.268524 -0.340916
+-19.733 -0.265376 -0.356507
+-19.8848 -0.253313 -0.345366
+-20.0326 -0.233903 -0.312928
+-20.1783 -0.208646 -0.265791
+-20.3206 -0.178975 -0.210385
+-20.4555 -0.146249 -0.152099
+-20.5779 -0.111753 -0.0949082
+-20.6827 -0.0766843 -0.041392
+-20.7657 -0.04214 0.00700327
+-20.8241 -0.00910412 0.049608
+-20.8567 0.0215679 0.0861969
+-20.8639 0.0491604 0.116744
+-20.8471 0.0731061 0.141285
+-20.8088 0.0929902 0.159869
+-20.752 0.10855 0.172575
+-20.6802 0.119672 0.179536
+-20.597 0.126381 0.180978
+-20.506 0.128832 0.177233
+-20.4105 0.127291 0.16874
+-20.3139 0.12212 0.15605
+-20.2191 0.113756 0.139811
+-20.1287 0.10269 0.120777
+0 0.0894444 0.0997947
+6.09836 0.00146668 0.00113792
+6.10754 0.00245156 0.00469621
+6.11852 0.00344833 0.00844148
+6.13118 0.00442093 0.0122159
+6.14537 0.00532715 0.0158536
+6.16083 0.00611986 0.0191829
+6.17721 0.00674864 0.0220286
+6.19406 0.0071617 0.024217
+6.21083 0.00730795 0.0255827
+6.22686 0.00713945 0.0259743
+6.24139 0.00661405 0.0252597
+6.25361 0.00569839 0.0233294
+6.26267 0.00437092 0.0200986
+6.26772 0.00262489 0.0155111
+6.268 0.0004709 0.00954892
+6.26283 -0.0020611 0.00225089
+6.25167 -0.00492082 -0.00625467
+6.23412 -0.00803748 -0.0157044
+6.20983 -0.0113203 -0.0256463
+6.17842 -0.0146592 -0.0353917
+6.13938 -0.0179242 -0.0439923
+6.09195 -0.0209627 -0.0502695
+6.03517 -0.0235945 -0.0529179
+5.96804 -0.0256022 -0.0506946
+5.88989 -0.026721 -0.0426733
+5.80104 -0.0266294 -0.0284988
+5.70352 -0.0249443 -0.00853147
+5.60162 -0.0212177 0.0162453
+5.5022 -0.0148954 0.0445966
+5.41458 -0.00506051 0.0754007
+5.35146 0.0107225 0.106827
+5.33463 0.0408203 0.131052
+5.41474 0.114292 0.117262
+5.71864 0.323937 -0.0288086
+6.52642 0.932294 -0.535955
+8.31557 2.57655 -1.83658
+11.5616 6.51619 -4.49836
+15.9902 14.5448 -8.78084
+19.4764 27.6785 -13.7976
+18.3901 43.0049 -17.1967
+11.8228 51.4152 -16.9986
+5.35528 44.5171 -14.244
+1.88471 30.0042 -10.2634
+0.592929 17.4 -6.46843
+0.180171 9.42311 -3.7021
+0.055411 4.95753 -2.0089
+0.0220464 2.57481 -1.06316
+0.0101834 1.33898 -0.55572
+0.00422919 0.697373 -0.289243
+0.00223312 0.361285 -0.150473
+0.00130003 0.187565 -0.078142
+0.00053765 0.0978799 -0.0405739
+0.00024779 0.050845 -0.0211403
+0.000147093 0.0265038 -0.0110461
+3.55456e-05 0.0140268 -0.00580165
+-1.64717e-05 0.0074638 -0.00308872
+-3.04945e-05 0.00403779 -0.00167725
+-4.99039e-05 0.00229598 -0.000943521
+-6.17553e-05 0.00140361 -0.000575012
+-6.70139e-05 0.000998977 -0.000409966
+-7.37377e-05 0.000925404 -0.000378061
+-7.91249e-05 0.0011385 -0.000468285
+-9.45064e-05 0.00174811 -0.000717061
+-0.000118503 0.00299307 -0.0012332
+-0.000137727 0.00539909 -0.00224667
+-0.000211527 0.0101301 -0.0041978
+-0.000358471 0.019215 -0.00796618
+-0.00049614 0.0366106 -0.0152873
+-0.000920766 0.0707395 -0.0294506
+-0.00198053 0.136939 -0.0568687
+-0.00328343 0.263945 -0.110154
+-0.00627908 0.511606 -0.213307
+-0.0151194 0.9936 -0.412471
+-0.0330386 1.92116 -0.797787
+-0.0851221 3.72665 -1.53792
+-0.27909 7.24826 -2.93177
+-0.91893 13.9352 -5.45753
+-2.92262 26.0476 -9.63731
+-8.3021 45.4189 -15.4506
+-18.3031 67.9389 -21.6563
+-28.3936 78.8071 -26.074
+-29.9415 65.9325 -26.5196
+-24.4438 42.2359 -21.2618
+-17.6067 21.9598 -13.4231
+-12.6936 9.66868 -6.76474
+-10.0432 3.73196 -2.68911
+-8.86257 1.31333 -0.750726
+-8.40624 0.44722 -0.0260406
+-8.26143 0.159507 0.170022
+-8.25534 0.0607471 0.18602
+-8.32482 0.0189743 0.155737
+-8.4422 -0.00480076 0.116513
+-8.58762 -0.0209592 0.0742271
+-8.74347 -0.0322846 0.0293466
+-8.8957 -0.0398402 -0.0158994
+-9.03545 -0.0443589 -0.0574035
+-9.15923 -0.0464792 -0.0908683
+-9.26772 -0.0467401 -0.113286
+-9.36392 -0.0455593 -0.123621
+-9.45127 -0.0432373 -0.122727
+-9.5324 -0.0399853 -0.112782
+-9.60852 -0.0359623 -0.0965631
+-9.67937 -0.0313084 -0.0768143
+-9.74364 -0.0261673 -0.055819
+-9.79948 -0.0206964 -0.0352189
+-9.84507 -0.0150654 -0.0160231
+-9.87902 -0.00944874 0.00126219
+-9.90057 -0.00401531 0.0164603
+-9.90965 0.00108147 0.0295623
+-9.90681 0.00571101 0.0406111
+-9.89311 0.00976976 0.0496384
+-9.86995 0.0131826 0.0566489
+-9.83894 0.0159023 0.0616318
+-9.80176 0.0179074 0.0645844
+-9.76011 0.0192 0.0655333
+-9.71563 0.0198034 0.0645485
+-9.66985 0.0197584 0.0617496
+-9.62416 0.0191211 0.0573083
+-9.57981 0.0179586 0.0514498
+-9.53792 0.016345 0.0444556
+0 0.0143581 0.0366611
+1.70591 0.000132746 -0.000824872
+1.7086 0.00024 -0.000472771
+1.7118 0.000346706 -9.94014e-05
+1.7155 0.000449151 0.000272935
+1.71966 0.000542771 0.00062337
+1.72422 0.0006223 0.000932721
+1.72911 0.000681995 0.00118357
+1.73419 0.000715863 0.00136076
+1.73933 0.000717895 0.00145217
+1.74434 0.000682343 0.00144912
+1.749 0.000604053 0.00134649
+1.75308 0.000478855 0.00114209
+1.75631 0.000303996 0.000835687
+1.75843 7.85471e-05 0.000428293
+1.75917 -0.000196269 -7.73844e-05
+1.7583 -0.000516932 -0.000674145
+1.7556 -0.000877711 -0.00134429
+1.75089 -0.001271 -0.00205033
+1.74398 -0.00168782 -0.00272376
+1.73469 -0.00211817 -0.00325491
+1.72281 -0.00255106 -0.00348898
+1.70805 -0.00297356 -0.00323418
+1.69012 -0.0033687 -0.00228758
+1.66871 -0.00371201 -0.000480326
+1.64369 -0.00396717 0.00226348
+1.61527 -0.00408192 0.00587098
+1.58422 -0.00398505 0.0100943
+1.55204 -0.00358135 0.0145376
+1.52115 -0.00271875 0.0187137
+1.49517 -0.00100249 0.0219226
+1.48066 0.00306951 0.0221617
+1.4942 0.0156213 0.0116664
+1.58533 0.0600977 -0.0369426
+1.89673 0.217726 -0.205186
+2.78408 0.738468 -0.693522
+4.9581 2.2899 -1.88738
+9.38986 6.3576 -4.27317
+16.3727 15.4596 -7.89764
+23.4144 31.9645 -11.3278
+24.2943 53.7026 -11.5777
+15.4585 68.2077 -7.95663
+6.39807 59.6927 -6.11513
+1.91398 39.6644 -5.17604
+0.493595 22.5924 -3.77202
+0.111725 12.117 -2.31199
+0.0171788 6.35043 -1.29835
+0.00650334 3.29103 -0.705541
+0.0036871 1.71405 -0.372252
+0.00029252 0.895194 -0.194426
+0.000491686 0.46369 -0.102604
+0.000654642 0.241006 -0.0536039
+6.61258e-05 0.126184 -0.0277157
+1.27547e-05 0.0655015 -0.0146031
+9.93959e-05 0.0341139 -0.00769679
+8.63892e-06 0.0181179 -0.00400039
+-1.86723e-05 0.00963347 -0.00214235
+2.05595e-06 0.00519377 -0.0011767
+-1.19575e-05 0.00296139 -0.000651395
+-1.96885e-05 0.00180845 -0.000397107
+-1.70263e-05 0.00128193 -0.000285612
+-1.86135e-05 0.00118852 -0.000261526
+-1.43037e-05 0.00146171 -0.00032752
+-2.55695e-05 0.00225545 -0.000496066
+-4.08701e-05 0.00386328 -0.00085491
+-1.44737e-05 0.00695223 -0.00157953
+-5.9441e-05 0.0130892 -0.00291411
+-0.000169895 0.0248312 -0.00550575
+-4.62693e-05 0.0471516 -0.0106647
+-0.000169635 0.0912028 -0.0203399
+-0.000967787 0.176607 -0.0388697
+-0.000672615 0.339238 -0.0755879
+-0.000634238 0.656865 -0.145297
+-0.00575863 1.27563 -0.276902
+-0.0100444 2.45902 -0.533574
+-0.0284495 4.76263 -1.01757
+-0.176031 9.28251 -1.88666
+-0.762081 17.9113 -3.39005
+-2.94253 33.806 -5.5779
+-9.82207 60.0116 -7.71311
+-23.684 91.0174 -9.21655
+-37.0897 104.398 -12.1856
+-35.5118 82.1879 -17.8333
+-24.5675 48.6788 -17.3872
+-13.9042 23.2912 -11.9947
+-7.27302 9.41072 -6.37323
+-4.10478 3.30441 -2.74068
+-2.8507 1.03054 -0.971293
+-2.42145 0.292202 -0.274234
+-2.29457 0.077951 -0.0453218
+-2.27191 0.0201463 0.0179376
+-2.28923 0.00413415 0.0321659
+-2.32593 -0.00140255 0.0333032
+-2.37288 -0.00407295 0.0300643
+-2.42383 -0.00559448 0.0242584
+-2.47405 -0.00641332 0.0167955
+-2.52049 -0.00674044 0.00881428
+-2.56173 -0.00673706 0.00150396
+-2.59772 -0.00652949 -0.00422812
+-2.62913 -0.00620357 -0.00793716
+-2.65693 -0.00580645 -0.00963752
+-2.68188 -0.00535627 -0.0096766
+-2.70442 -0.00485499 -0.00856413
+-2.72461 -0.00430013 -0.00681879
+-2.74222 -0.00369267 -0.00486544
+-2.75689 -0.00304077 -0.00298994
+-2.76825 -0.00235974 -0.00134126
+-2.77607 -0.00166989 3.73724e-05
+-2.78026 -0.000993488 0.00116658
+-2.78092 -0.000351852 0.00209219
+-2.7783 0.000236692 0.00285786
+-2.77278 0.000757907 0.00349112
+-2.7648 0.00120189 0.00400073
+-2.75484 0.00156277 0.00438106
+-2.74339 0.00183817 0.00461922
+-2.73092 0.00202861 0.00470161
+-2.71787 0.00213704 0.00461865
+-2.70465 0.00216837 0.00436761
+-2.69161 0.00212901 0.00395454
+-2.67908 0.00202637 0.00339603
+-2.66732 0.00186822 0.00272129
+0 0.00166228 0.00197257
+0.323989 4.92661e-06 -0.000321761
+0.324542 1.37837e-05 -0.00032757
+0.3252 2.23267e-05 -0.000332939
+0.325958 3.02844e-05 -0.000339641
+0.326813 3.72868e-05 -0.00034882
+0.327753 4.28777e-05 -0.000360957
+0.328764 4.65389e-05 -0.000375928
+0.329826 4.77126e-05 -0.000392988
+0.330908 4.5821e-05 -0.000410761
+0.331978 4.02905e-05 -0.000427255
+0.332991 3.05844e-05 -0.000439992
+0.3339 1.62454e-05 -0.00044625
+0.33465 -3.05391e-06 -0.00044339
+0.335186 -2.74625e-05 -0.000429167
+0.335448 -5.69155e-05 -0.000401865
+0.335382 -9.11286e-05 -0.000360069
+0.334936 -0.000129634 -0.000301925
+0.334061 -0.000171855 -0.000223867
+0.332709 -0.000217207 -0.000119028
+0.330832 -0.000265179 2.41757e-05
+0.328374 -0.000315318 0.000222478
+0.325271 -0.000367055 0.000496254
+0.321457 -0.000419279 0.000865203
+0.316873 -0.000469656 0.00134103
+0.311502 -0.000513775 0.00191813
+0.305399 -0.000544292 0.0025651
+0.298743 -0.000550064 0.00322078
+0.29188 -0.000513451 0.00379563
+0.285395 -0.000394398 0.00415999
+0.280414 -4.4941e-05 0.00402423
+0.279936 0.00119493 0.002352
+0.294169 0.00621595 -0.00482776
+0.358645 0.0267414 -0.0311189
+0.586428 0.106036 -0.116094
+1.28954 0.387557 -0.352201
+3.17616 1.29084 -0.887559
+7.42972 3.86345 -1.75942
+14.9679 10.1932 -2.27184
+23.8984 23.0136 0.020422
+26.7482 42.3007 8.55214
+16.6998 57.9336 20.3225
+6.35853 51.2455 18.7885
+1.66017 33.4701 10.8927
+0.385248 18.699 5.16839
+0.075562 9.95046 2.47619
+0.00199115 5.20477 1.21923
+0.003676 2.69234 0.597006
+0.00335324 1.40574 0.30864
+-0.000796841 0.736768 0.162576
+0.000185226 0.381222 0.0814861
+0.000725366 0.198364 0.0421016
+-8.04616e-05 0.104306 0.0226837
+-6.45252e-05 0.0540555 0.0114301
+0.000125378 0.0281108 0.0058132
+4.19164e-07 0.0150075 0.0032354
+-2.75087e-05 0.00797012 0.00169128
+1.66512e-05 0.00427699 0.000872621
+-8.45569e-07 0.00245083 0.000528052
+-1.00491e-05 0.0014957 0.00032195
+-3.22775e-06 0.00105506 0.000220044
+-3.66739e-06 0.000979802 0.000209155
+6.14788e-06 0.00120309 0.000248805
+-8.11877e-06 0.00186754 0.000402178
+-2.61329e-05 0.00319771 0.000683577
+3.05486e-05 0.00572928 0.00116626
+-2.08944e-05 0.0108386 0.00230205
+-0.000169501 0.0205683 0.00441155
+9.95787e-05 0.0388638 0.00801877
+3.98192e-05 0.0753082 0.0159543
+-0.00104706 0.14599 0.0317041
+-0.000169209 0.279181 0.0591787
+0.000861832 0.540091 0.115743
+-0.00536163 1.04966 0.23219
+-0.00557738 2.01559 0.443642
+-0.0056932 3.89404 0.868703
+-0.121328 7.60223 1.79591
+-0.59383 14.693 3.69081
+-2.54434 27.9481 7.80841
+-9.7285 50.5763 16.6194
+-25.487 78.0024 28.7734
+-40.6626 88.4676 31.1064
+-36.0657 64.5664 13.0246
+-22.3062 34.949 -0.0296884
+-10.8715 15.3141 -3.45756
+-4.54617 5.70396 -2.6186
+-1.81529 1.85839 -1.28487
+-0.832311 0.539438 -0.491879
+-0.526498 0.141482 -0.155094
+-0.443197 0.0340151 -0.0393648
+-0.425334 0.00755777 -0.00527428
+-0.42643 0.00137809 0.00385152
+-0.433908 -0.000147667 0.00622395
+-0.444024 -0.000625924 0.00666835
+-0.455096 -0.00081913 0.00629731
+-0.466058 -0.000890749 0.00543906
+-0.476231 -0.000892057 0.00432435
+-0.485285 -0.000853215 0.00317018
+-0.493165 -0.000795964 0.00214667
+-0.499984 -0.00073418 0.0013497
+-0.505916 -0.000674424 0.000800181
+-0.511118 -0.000617779 0.000463404
+-0.515687 -0.000562285 0.000276143
+-0.519653 -0.000505156 0.000171431
+-0.522997 -0.000444306 9.52985e-05
+-0.525673 -0.000379065 1.41893e-05
+-0.527637 -0.000310213 -8.53037e-05
+-0.528866 -0.000239602 -0.000201439
+-0.529366 -0.00016961 -0.000324054
+-0.529174 -0.000102635 -0.00044072
+-0.528356 -4.07382e-05 -0.000541042
+-0.526994 1.45344e-05 -0.000618748
+-0.525182 6.21818e-05 -0.000671946
+-0.523019 0.000101681 -0.000702229
+-0.5206 0.000132884 -0.000713374
+-0.518017 0.000155926 -0.000710123
+-0.515354 0.000171148 -0.000697292
+-0.512686 0.000179042 -0.000679174
+-0.510078 0.000180199 -0.000659095
+-0.507588 0.000175249 -0.000638957
+-0.505266 0.000164783 -0.000618754
+0 0.000149312 -0.000596373
+0.0464083 -4.73549e-07 -6.59827e-05
+0.0464956 9.70428e-09 -7.34476e-05
+0.0465986 4.49086e-07 -8.1184e-05
+0.0467173 8.33195e-07 -8.9224e-05
+0.0468509 1.14246e-06 -9.74815e-05
+0.0469982 1.34965e-06 -0.000105749
+0.047157 1.42184e-06 -0.000113709
+0.0473244 1.32191e-06 -0.000120942
+0.0474961 1.00966e-06 -0.00012693
+0.047667 4.43223e-07 -0.000131077
+0.0478307 -4.18777e-07 -0.000132727
+0.0479798 -1.61387e-06 -0.000131218
+0.0481059 -3.17161e-06 -0.00012593
+0.0481999 -5.10941e-06 -0.000116351
+0.0482525 -7.42972e-06 -0.000102109
+0.0482545 -1.01203e-05 -8.29692e-05
+0.0481967 -1.31584e-05 -5.87665e-05
+0.0480707 -1.65198e-05 -2.92747e-05
+0.0478677 -2.01896e-05 5.96614e-06
+0.0475789 -2.41704e-05 4.77998e-05
+0.0471946 -2.84811e-05 9.74854e-05
+0.0467042 -3.3135e-05 0.000156493
+0.046097 -3.80925e-05 0.000225958
+0.0453648 -4.31835e-05 0.000305788
+0.0445055 -4.80103e-05 0.000393538
+0.0435296 -5.18443e-05 0.000483394
+0.0424674 -5.3477e-05 0.000565576
+0.0413792 -5.06095e-05 0.0006254
+0.0403853 -3.63267e-05 0.000635805
+0.0398055 1.96779e-05 0.000515175
+0.0407925 0.000261758 -5.38356e-05
+0.0479224 0.00134904 -0.00226294
+0.0785697 0.00607781 -0.00998375
+0.192461 0.0253574 -0.033212
+0.56978 0.0979727 -0.0877349
+1.66894 0.347827 -0.156146
+4.39613 1.12185 0.0144078
+9.81988 3.22987 1.53962
+17.3094 8.05893 7.46513
+21.0299 16.5166 22.0637
+12.8025 24.9834 41.1776
+4.44878 22.3145 37.2847
+1.00316 14.2526 22.6631
+0.225035 7.78621 11.6909
+0.0443277 4.11664 6.01453
+-0.00327472 2.15135 3.10102
+0.00397951 1.10978 1.57531
+0.00371423 0.581245 0.824756
+-0.000912117 0.305904 0.435491
+0.00020806 0.15784 0.222262
+0.00076901 0.0822103 0.115593
+-0.000116656 0.0434777 0.0617141
+-7.69378e-05 0.0224578 0.031558
+0.000134906 0.0116493 0.0162496
+-3.36725e-06 0.00626712 0.00887861
+-3.03761e-05 0.003321 0.00467612
+2.03358e-05 0.0017699 0.00245638
+1.49616e-06 0.00102249 0.00144718
+-8.13893e-06 0.000623583 0.000881756
+-4.59422e-07 0.000436918 0.000610463
+-1.10982e-06 0.000406953 0.000573499
+9.90852e-06 0.000498017 0.000694054
+-5.24684e-06 0.000779514 0.00110318
+-2.45299e-05 0.00133365 0.00188335
+4.07207e-05 0.0023723 0.00329173
+-1.11271e-05 0.00452027 0.00637016
+-0.000175686 0.0085863 0.0121466
+0.00012537 0.0161062 0.0224565
+9.0507e-05 0.0313062 0.0440368
+-0.00110417 0.0608433 0.0863413
+-0.000177848 0.115667 0.162587
+0.00103403 0.22364 0.31524
+-0.00583407 0.435707 0.620821
+-0.00566688 0.832851 1.18257
+0.00302553 1.6042 2.28115
+-0.0722576 3.14007 4.53744
+-0.346218 6.07188 8.89505
+-1.53594 11.6243 17.5135
+-6.79859 21.5119 34.3271
+-19.4993 33.9089 56.7943
+-31.8932 38.0629 62.7986
+-26.0575 25.1451 33.5856
+-14.5952 12.2056 11.2811
+-6.40989 4.83993 2.28888
+-2.37162 1.65252 0.0131677
+-0.78623 0.499892 -0.226889
+-0.260516 0.13623 -0.122507
+-0.108511 0.0338142 -0.0443367
+-0.0695694 0.00771307 -0.0126394
+-0.0609956 0.00162285 -0.00263887
+-0.0600223 0.000294658 0.00011009
+-0.061015 8.05899e-06 0.000837062
+-0.0626064 -6.14486e-05 0.00102691
+-0.0643824 -8.19739e-05 0.00103884
+-0.0661487 -8.69035e-05 0.000962415
+-0.0677931 -8.44958e-05 0.000836814
+-0.06926 -7.84493e-05 0.000692159
+-0.0705365 -7.11599e-05 0.000551732
+-0.0716362 -6.40949e-05 0.000429612
+-0.0725834 -5.79026e-05 0.000330615
+-0.0734011 -5.26212e-05 0.000252572
+-0.074105 -4.79483e-05 0.000189609
+-0.0747019 -4.34866e-05 0.000135176
+-0.0751914 -3.89132e-05 8.41119e-05
+-0.0755699 -3.40611e-05 3.35571e-05
+-0.0758342 -2.89245e-05 -1.70721e-05
+-0.0759834 -2.36191e-05 -6.66974e-05
+-0.0760213 -1.83244e-05 -0.000113399
+-0.0759556 -1.32297e-05 -0.000155166
+-0.0757974 -8.49714e-06 -0.000190403
+-0.0755604 -4.24301e-06 -0.000218177
+-0.0752595 -5.36453e-07 -0.000238227
+-0.0749096 2.59304e-06 -0.000250834
+-0.0745252 5.14445e-06 -0.000256649
+-0.0741199 7.13528e-06 -0.000256529
+-0.0737059 8.59447e-06 -0.000251414
+-0.0732942 9.55772e-06 -0.000242241
+-0.0728942 1.00634e-05 -0.000229874
+-0.072514 1.01473e-05 -0.000215037
+-0.0721609 9.83647e-06 -0.000198229
+0 9.14606e-06 -0.000179699
+0.00464304 0 -8.27585e-06
+0.00465252 0 -9.4697e-06
+0.00466368 0 -1.07135e-05
+0.00467651 0 -1.19957e-05
+0.00469095 0 -1.32911e-05
+0.00470686 0 -1.45612e-05
+0.00472403 0 -1.57549e-05
+0.00474217 0 -1.681e-05
+0.00476083 0 -1.76547e-05
+0.00477948 0 -1.82093e-05
+0.00479745 0 -1.83897e-05
+0.00481395 0 -1.81123e-05
+0.00482808 0 -1.73003e-05
+0.00483886 0 -1.58903e-05
+0.00484527 0 -1.38369e-05
+0.00484626 0 -1.11144e-05
+0.00484082 0 -7.71247e-06
+0.00482792 0 -3.6266e-06
+0.00480658 0 1.1551e-06
+0.00477575 0 6.66341e-06
+0.00473432 0 1.29494e-05
+0.00468112 0 2.00653e-05
+0.00461501 0 2.80171e-05
+0.00453514 0 3.66869e-05
+0.00444139 0 4.57372e-05
+0.00433502 0 5.45236e-05
+0.00421952 0 6.20196e-05
+0.00410233 0 6.65811e-05
+0.00400149 0 6.45186e-05
+0.00397807 0 4.30957e-05
+0.00428708 0 -4.72542e-05
+0.00601688 0 -0.000380753
+0.0135336 0 -0.00143891
+0.0427922 0 -0.00390118
+0.145769 0 -0.00500441
+0.468866 0 0.0247302
+1.34745 0 0.243267
+3.30898 0 1.26835
+6.47653 0 4.89137
+8.69583 0 14.2973
+5.13192 0 28.5473
+1.60435 0 25.8421
+0.30067 0 15.5563
+0.0707393 0 8.01614
+0.015278 0 4.1721
+-0.00293374 0 2.16956
+0.00229292 0 1.10455
+0.00203328 0 0.581504
+-0.000550356 0 0.308487
+0.000111881 0 0.157178
+0.000414856 0 0.0819073
+-7.65933e-05 0 0.0439692
+-4.43403e-05 0 0.0224256
+7.42815e-05 0 0.0115307
+-3.59527e-06 0 0.006345
+-1.727e-05 0 0.00333468
+1.15929e-05 0 0.00174103
+1.03507e-06 0 0.00103305
+-4.22219e-06 0 0.00062884
+3.44182e-08 0 0.000432661
+-5.3057e-07 0 0.000407518
+5.60253e-06 0 0.000491884
+-2.72889e-06 0 0.000787846
+-1.35505e-05 0 0.00134447
+2.36893e-05 0 0.00233506
+-3.36791e-06 0 0.00454733
+-9.61543e-05 0 0.00867909
+7.29756e-05 0 0.0159371
+6.8214e-05 0 0.031311
+-0.000594034 0 0.0615056
+-8.74904e-05 0 0.115161
+0.000651951 0 0.2229
+-0.00316071 0 0.439519
+-0.0031449 0 0.832835
+0.00370787 0 1.59735
+-0.0251923 0 3.16897
+-0.108358 0 6.15505
+-0.46039 0 11.9763
+-2.45176 0 23.5033
+-7.8066 0 39.2637
+-13.1655 0 43.4218
+-9.73369 0 21.7133
+-4.91077 0 7.38272
+-1.9621 0 1.89126
+-0.665192 0 0.355612
+-0.200213 0 0.0349128
+-0.0569141 0 -0.00706817
+-0.017885 0 -0.005215
+-0.00834776 0 -0.00182415
+-0.00627552 0 -0.000449384
+-0.00594468 0 -3.61831e-05
+-0.00601204 0 7.54199e-05
+-0.00617884 0 0.00010535
+-0.00637177 0 0.000110951
+-0.00656486 0 0.000106185
+-0.00674515 0 9.57952e-05
+-0.00690634 0 8.27443e-05
+-0.00704673 0 6.92286e-05
+-0.00716745 0 5.66273e-05
+-0.00727087 0 4.55124e-05
+-0.00735933 0 3.58424e-05
+-0.00743452 0 2.72429e-05
+-0.00749728 0 1.92679e-05
+-0.00754777 0 1.15786e-05
+-0.00758585 0 4.02255e-06
+-0.00761141 0 -3.36886e-06
+-0.00762459 0 -1.04343e-05
+-0.00762596 0 -1.6954e-05
+-0.00761648 0 -2.2714e-05
+-0.00759742 0 -2.755e-05
+-0.0075703 0 -3.13671e-05
+-0.0075367 0 -3.41393e-05
+-0.00749821 0 -3.58975e-05
+-0.00745635 0 -3.67125e-05
+-0.00741253 0 -3.66804e-05
+-0.00736803 0 -3.59104e-05
+-0.00732396 0 -3.45167e-05
+-0.00728128 0 -3.26112e-05
+-0.00724084 0 -3.02959e-05
+-0.00720335 0 -2.76548e-05
+0 0 -2.47504e-05
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0.0473403 2.21991e-05 -0.000109007
+0.0474353 2.17416e-05 -0.000126275
+0.0475472 2.18488e-05 -0.000144407
+0.0476758 2.24766e-05 -0.000163144
+0.047821 2.36517e-05 -0.000182061
+0.0479815 2.54683e-05 -0.000200571
+0.0481556 2.8072e-05 -0.000217939
+0.0483404 3.16518e-05 -0.000233301
+0.048532 3.64366e-05 -0.000245685
+0.0487252 4.26887e-05 -0.000254038
+0.0489134 5.06887e-05 -0.000257275
+0.0490889 6.07085e-05 -0.000254339
+0.0492429 7.29743e-05 -0.000244278
+0.0493657 8.76306e-05 -0.000226321
+0.0494471 0.00010472 -0.000199941
+0.0494767 0.000124194 -0.000164885
+0.0494441 0.000145979 -0.000121149
+0.0493393 0.00017008 -6.89022e-05
+0.0491521 0.000196718 -8.36927e-06
+0.0488721 0.000226431 6.02676e-05
+0.0484881 0.000260059 0.000136885
+0.0479884 0.000298506 0.000221254
+0.0473616 0.000342186 0.000312615
+0.0465992 0.000390137 0.000408992
+0.0456997 0.000438892 0.000506359
+0.044675 0.000481303 0.00059789
+0.0435585 0.000505107 0.000673423
+0.0424196 0.000487626 0.000717797
+0.0414206 0.00036407 0.0006995
+0.0411017 -0.000149213 0.000511238
+0.0437838 -0.00244862 -0.000280808
+0.0599116 -0.0132091 -0.00329949
+0.134309 -0.0623553 -0.0134812
+0.444841 -0.274628 -0.0398047
+1.63295 -1.13055 -0.0625587
+5.75427 -4.32413 0.227539
+18.4145 -15.2227 2.80579
+51.2995 -48.5651 16.9484
+116.113 -136.534 76.6114
+181.18 -320.173 269.403
+102.006 -553.46 661.181
+27.105 -499.275 600.018
+3.42533 -311.32 350.556
+0.996301 -166.69 177.135
+0.231559 -88.2792 93.2161
+-0.134179 -46.4039 48.9392
+0.0540385 -23.949 24.8654
+0.0506929 -12.6412 13.226
+-0.0212418 -6.70647 7.0869
+0.00155903 -3.45058 3.58496
+0.0112464 -1.80174 1.87396
+-0.00292338 -0.961526 1.01966
+-0.00150073 -0.494278 0.515281
+0.00214221 -0.255432 0.26332
+-0.000182533 -0.138967 0.147637
+-0.000541374 -0.0733207 0.0770142
+0.000349449 -0.0386141 0.0394643
+3.28224e-05 -0.0225495 0.0238992
+-0.000122715 -0.0137023 0.0144867
+4.34137e-06 -0.00947696 0.00978256
+-1.7998e-05 -0.0088634 0.00929326
+0.00016601 -0.0108072 0.0111151
+-8.19596e-05 -0.017182 0.0182178
+-0.000405427 -0.0294255 0.0310934
+0.00074807 -0.0518379 0.0530195
+6.99479e-06 -0.0999704 0.105259
+-0.0027539 -0.190325 0.201765
+0.00245795 -0.353185 0.36391
+0.00298413 -0.689561 0.720346
+-0.0160094 -1.34491 1.4254
+0.000165392 -2.53275 2.63173
+0.026866 -4.88692 5.08312
+-0.0786535 -9.54096 10.086
+-0.0701135 -18.0756 18.8999
+0.186345 -34.5404 35.8813
+-0.398322 -67.5381 71.2917
+-1.51764 -129.724 136.999
+-5.27263 -247.907 263.639
+-41.447 -468.224 527.902
+-154.827 -755.964 908.607
+-273.566 -840.088 1002.25
+-174.091 -485.737 407.975
+-75.9678 -206.116 115.375
+-26.7589 -72.5509 25.2333
+-8.14597 -22.3558 4.09847
+-2.23715 -6.19502 0.321109
+-0.590095 -1.56642 -0.087701
+-0.177594 -0.364602 -0.0531141
+-0.0836659 -0.0786689 -0.0170833
+-0.0644667 -0.0157593 -0.00388933
+-0.0616474 -0.00271265 -0.00014277
+-0.0624153 -1.01598e-05 0.000853448
+-0.0640696 0.000624527 0.00113512
+-0.0659588 0.000799565 0.00120062
+-0.0678436 0.000824539 0.00116643
+-0.0695995 0.000778591 0.00107307
+-0.0711647 0.000700425 0.00094751
+-0.072522 0.000615999 0.000810546
+-0.0736822 0.000540988 0.000675801
+-0.074668 0.00048176 0.000549632
+-0.0755028 0.000437742 0.000432832
+-0.0762032 0.000404503 0.000323158
+-0.0767782 0.000376564 0.000217691
+-0.0772304 0.000349339 0.000114445
+-0.0775595 0.000320054 1.3067e-05
+-0.0777655 0.000287829 -8.521e-05
+-0.077851 0.000253232 -0.000178083
+-0.0778228 0.000217631 -0.000262854
+-0.077691 0.000182588 -0.000337031
+-0.0774693 0.000149441 -0.000398741
+-0.0771729 0.0001191 -0.000446909
+-0.0768178 9.20331e-05 -0.000481248
+-0.0764199 6.83512e-05 -0.000502131
+-0.0759941 4.79414e-05 -0.000510422
+-0.0755541 3.05785e-05 -0.000507313
+-0.0751118 1.60025e-05 -0.0004942
+-0.0746777 3.96721e-06 -0.000472574
+-0.0742606 -5.72391e-06 -0.000443941
+-0.073868 -1.31713e-05 -0.000409729
+-0.0735062 -1.83229e-05 -0.000371201
+0 -2.09525e-05 -0.0003294
+0.536895 0.000128822 -0.000977134
+0.537875 8.16454e-05 -0.00111328
+0.539032 3.93857e-05 -0.0012563
+0.540367 3.14584e-06 -0.00140515
+0.541876 -2.49921e-05 -0.00155713
+0.543545 -4.20822e-05 -0.00170792
+0.545356 -4.45424e-05 -0.00185169
+0.547276 -2.83166e-05 -0.00198128
+0.549263 1.09935e-05 -0.00208831
+0.55126 7.7948e-05 -0.00216345
+0.553198 0.000176981 -0.00219686
+0.554994 0.000311986 -0.00217881
+0.556556 0.000485805 -0.00210046
+0.557782 0.000699739 -0.00195466
+0.558568 0.000953239 -0.00173648
+0.558809 0.00124399 -0.00144335
+0.558402 0.0015685 -0.00107448
+0.557249 0.0019233 -0.00062956
+0.555252 0.00230631 -0.00010702
+0.552311 0.00271804 0.000497524
+0.548315 0.00316154 0.00119164
+0.543146 0.00364004 0.001984
+0.536684 0.00415138 0.00287889
+0.528834 0.00467891 0.00386693
+0.519573 0.00517995 0.00491376
+0.509014 0.00557436 0.00594982
+0.497484 0.00573452 0.00686529
+0.485631 0.00546142 0.00750493
+0.474687 0.00433662 0.00760787
+0.467746 0.000877851 0.00642844
+0.475895 -0.0116491 0.000998076
+0.544818 -0.0639452 -0.0204503
+0.858373 -0.286824 -0.0990693
+2.09617 -1.19217 -0.353474
+6.5006 -4.60054 -1.02217
+20.4675 -16.3124 -2.13486
+58.8319 -52.4657 -1.107
+145.269 -150.314 16.8515
+285.988 -372.441 102.653
+385.525 -756.917 359.271
+226.74 -1136.23 782.737
+69.9519 -1016.1 710.893
+12.5741 -652.354 421.074
+2.82846 -358.691 213.438
+0.540507 -190.752 110.775
+-0.203025 -100.215 57.6553
+0.0763615 -51.9429 29.2898
+0.0804395 -27.2969 15.4764
+-0.0323014 -14.4026 8.24439
+0.00227441 -7.44918 4.18629
+0.0180911 -3.88532 2.18336
+-0.00424982 -2.05613 1.17866
+-0.0023573 -1.06304 0.598427
+0.00338808 -0.551598 0.30667
+-0.000232863 -0.296537 0.17007
+-0.00084353 -0.157053 0.089019
+0.000541185 -0.0836079 0.0460654
+4.58153e-05 -0.0481768 0.0275699
+-0.000202456 -0.0292992 0.0167269
+-7.94886e-07 -0.0204718 0.0114037
+-2.81691e-05 -0.0190498 0.0107872
+0.000262828 -0.0233675 0.0129633
+-0.000130882 -0.0366844 0.0209994
+-0.000635576 -0.0629203 0.0358828
+0.00115441 -0.112164 0.0618283
+-7.45867e-05 -0.21388 0.121509
+-0.00436714 -0.406415 0.23253
+0.00383789 -0.762738 0.423805
+0.00416012 -1.48175 0.835905
+-0.0258004 -2.87673 1.64812
+0.000370865 -5.46433 3.068
+0.0402217 -10.5475 5.93598
+-0.125808 -20.4946 11.7405
+-0.101137 -39.0632 22.1455
+0.26983 -74.9563 42.3261
+-0.920745 -145.958 84.1482
+-4.35661 -280.662 163.269
+-19.2923 -534.137 318.679
+-106.847 -982.346 636.003
+-344.582 -1541.34 1079.91
+-583.215 -1729.2 1190.55
+-429.572 -1151.71 545.911
+-215.481 -563.97 155.045
+-85.6171 -225.22 25.0936
+-29.0276 -77.2532 -1.679
+-8.95457 -23.4169 -3.07798
+-2.84055 -6.38144 -1.42151
+-1.1952 -1.58361 -0.47068
+-0.798494 -0.362707 -0.125308
+-0.715948 -0.0771659 -0.0237783
+-0.708383 -0.0131938 0.00302605
+-0.719975 0.00222431 0.0101945
+-0.737596 0.00701056 0.012262
+-0.757141 0.00883992 0.0125439
+-0.776547 0.00934313 0.0118497
+-0.794577 0.00908334 0.0105624
+-0.81061 0.00842671 0.00899816
+-0.824493 0.00764251 0.00740891
+-0.836373 0.00689821 0.00595239
+-0.846516 0.00626506 0.00469013
+-0.855179 0.00574249 0.00361082
+-0.86254 0.0052904 0.00266431
+-0.86868 0.00485845 0.0017931
+-0.873606 0.0044062 0.000953754
+-0.877291 0.00391251 0.000126218
+-0.87971 0.00337618 -0.000686649
+-0.880869 0.00281105 -0.00146572
+-0.880819 0.00223889 -0.00218442
+-0.879658 0.00168291 -0.00281669
+-0.877519 0.00116306 -0.00334247
+-0.874562 0.000693773 -0.00375024
+-0.870955 0.000283631 -0.00403704
+-0.866866 -6.37016e-05 -0.00420701
+-0.862458 -0.000348129 -0.0042693
+-0.857876 -0.000571863 -0.00423616
+-0.853251 -0.00073848 -0.0041214
+-0.848698 -0.000852279 -0.00393923
+-0.844312 -0.000917736 -0.00370335
+-0.840176 -0.000938873 -0.003426
+-0.836357 -0.000918506 -0.003117
+0 -0.000857816 -0.00278322
+4.41469 -0.000411504 -0.00562533
+4.42187 -0.00136525 -0.00606509
+4.43041 -0.00230107 -0.00652745
+4.44028 -0.00318735 -0.00702575
+4.45146 -0.00398264 -0.00756273
+4.46382 -0.00463732 -0.00813038
+4.47721 -0.00509607 -0.00871075
+4.49136 -0.00530003 -0.00927618
+4.50594 -0.00518917 -0.00978956
+4.5205 -0.00470504 -0.0102055
+4.53451 -0.00379449 -0.0104729
+4.54732 -0.00241417 -0.0105392
+4.55826 -0.000535627 -0.010356
+4.56656 0.00184981 -0.00988404
+4.57148 0.00472761 -0.00909614
+4.57228 0.00805937 -0.00797552
+4.56827 0.0117859 -0.00650727
+4.5588 0.0158339 -0.0046629
+4.54324 0.0201256 -0.00238065
+4.52095 0.0245858 0.000452295
+4.49118 0.0291422 0.00400568
+4.45312 0.0337118 0.0084881
+4.40587 0.0381662 0.0140942
+4.34871 0.0422744 0.0209149
+4.28135 0.0456308 0.0288228
+4.20454 0.0475844 0.0373691
+4.12056 0.0471921 0.0457406
+4.03384 0.0431761 0.0528024
+3.95165 0.0336258 0.0570554
+3.88694 0.0140829 0.0555319
+3.87186 -0.0319512 0.0377354
+4.01521 -0.17354 -0.0385891
+4.71156 -0.686569 -0.327722
+7.2962 -2.57717 -1.31574
+15.7553 -9.1372 -4.27465
+40.1153 -29.8435 -11.7164
+99.9051 -87.9169 -26.098
+217.501 -228.536 -41.6452
+377.809 -508.539 -24.1895
+454.958 -922.176 96.6628
+277.128 -1250.22 312.135
+96.6576 -1105.63 288.792
+21.796 -725.605 159.006
+4.75926 -408.011 71.5252
+0.851151 -218.368 34.0004
+-0.138226 -114.789 16.7833
+0.0512649 -59.6398 8.10442
+0.0646011 -31.233 4.23143
+-0.0275771 -16.4047 2.25678
+0.0010651 -8.50599 1.10966
+0.0154452 -4.43144 0.573846
+-0.00320518 -2.33109 0.316288
+-0.00198593 -1.20896 0.156135
+0.00286414 -0.628904 0.07827
+-0.000132718 -0.335445 0.0451404
+-0.000710319 -0.178032 0.0232479
+0.000425437 -0.0954583 0.0115872
+8.87655e-06 -0.0545573 0.00732507
+-0.000208258 -0.0331981 0.00443797
+-4.10246e-05 -0.0233615 0.00294247
+-5.87415e-05 -0.0216775 0.00285457
+0.000182805 -0.0266727 0.00331246
+-0.000157178 -0.0415097 0.00556742
+-0.000581309 -0.0712657 0.00945317
+0.000884115 -0.127959 0.0154956
+-0.000230183 -0.242191 0.0317276
+-0.00377091 -0.459847 0.0613841
+0.0031381 -0.869479 0.10785
+0.00289616 -1.68392 0.218369
+-0.0220767 -3.26163 0.441584
+0.00136674 -6.23392 0.80533
+0.034002 -12.042 1.57763
+-0.102573 -23.3491 3.22322
+-0.0710371 -44.7275 6.07647
+0.161977 -86.1201 11.7995
+-1.41315 -167.334 24.747
+-7.35725 -321.74 50.713
+-33.4283 -608.488 108.231
+-147.736 -1094.4 242.984
+-422.078 -1680.83 442.602
+-690.116 -1908.2 478.139
+-569.084 -1407.78 148.066
+-323.608 -772.734 -36.7422
+-145.992 -343.605 -62.688
+-57.3974 -129.868 -38.5982
+-22.2526 -42.9628 -16.8838
+-10.4645 -12.7125 -5.94891
+-7.00302 -3.44611 -1.75406
+-6.10172 -0.888093 -0.41528
+-5.91882 -0.224266 -0.0410755
+-5.94245 -0.0432528 0.0575439
+-6.03943 0.0204469 0.0849842
+-6.16896 0.0515118 0.0916951
+-6.31081 0.0684581 0.0885307
+-6.45126 0.0764018 0.0788238
+-6.58138 0.0782101 0.0653213
+-6.69679 0.0762457 0.0507611
+-6.79669 0.0723549 0.0373372
+-6.88251 0.0677368 0.026326
+-6.95648 0.0629697 0.0180687
+-7.02065 0.05817 0.0122107
+-7.07633 0.0532017 0.00804001
+-7.12396 0.0478649 0.00479524
+-7.16336 0.0420238 0.00187451
+-7.19402 0.0356666 -0.00107323
+-7.21549 0.0289062 -0.00415301
+-7.22754 0.021947 -0.00728799
+-7.23035 0.0150365 -0.0103054
+-7.22452 0.00842068 -0.0130148
+-7.21094 0.00231118 -0.0152634
+-7.19077 -0.00313089 -0.0169616
+-7.16528 -0.00779855 -0.0180863
+-7.13574 -0.0116336 -0.0186677
+-7.10341 -0.0146175 -0.0187718
+-7.06945 -0.016763 -0.0184829
+-7.03489 -0.0181057 -0.0178904
+-7.00064 -0.018699 -0.0170792
+-6.96749 -0.018608 -0.016123
+-6.93609 -0.0179031 -0.0150767
+-6.907 -0.0166534 -0.01397
+0 -0.0149209 -0.0128032
+27.8472 -0.015604 -0.0182345
+27.8878 -0.0280542 -0.0143738
+27.9363 -0.0406333 -0.0103225
+27.9927 -0.0528881 -0.00638674
+28.0564 -0.0642796 -0.00283746
+28.1268 -0.0742003 9.22546e-05
+28.2027 -0.0819961 0.00220812
+28.2824 -0.0869909 0.00336174
+28.3637 -0.0885139 0.00345871
+28.4439 -0.0859321 0.00246182
+28.5198 -0.0786867 0.000385256
+28.5876 -0.0663341 -0.00272137
+28.6433 -0.0485895 -0.00679547
+28.6827 -0.025368 -0.0117803
+28.7018 0.00318029 -0.0176241
+28.6968 0.0366485 -0.0242421
+28.6643 0.0743669 -0.031426
+28.6013 0.115414 -0.0387015
+28.5052 0.158641 -0.0451527
+28.3732 0.202687 -0.0492625
+28.2017 0.245983 -0.0488454
+27.9866 0.286693 -0.0411657
+27.7232 0.322599 -0.023326
+27.4071 0.350897 0.00704731
+27.0361 0.36795 0.0509109
+26.6136 0.369045 0.106962
+26.1513 0.348242 0.171273
+25.6729 0.298341 0.237818
+25.2149 0.210546 0.299771
+24.83 0.0717467 0.349164
+24.6039 -0.148901 0.365225
+24.7353 -0.553626 0.260326
+25.8164 -1.50348 -0.301076
+29.6249 -4.19475 -2.39617
+40.8932 -12.1837 -8.91532
+69.981 -34.6707 -26.1479
+133.39 -91.4696 -64.1294
+242.19 -214.856 -130.378
+366.1 -432.752 -211.025
+398.568 -712.39 -253.832
+249.216 -892.656 -216.166
+96.9646 -779.893 -179.599
+26.4949 -520.779 -139.532
+6.50063 -298.794 -92.9953
+1.4076 -161.302 -54.2846
+0.139492 -84.9964 -29.8231
+0.0901134 -44.2494 -16.0466
+0.0634475 -23.1146 -8.46399
+-0.00318788 -12.0951 -4.43738
+0.00676904 -6.27683 -2.34173
+0.0125317 -3.26597 -1.22483
+0.00010962 -1.71024 -0.636144
+-0.000283131 -0.888315 -0.334859
+0.00205562 -0.462805 -0.176135
+8.22729e-05 -0.245549 -0.0919232
+-0.000432013 -0.130478 -0.0491815
+0.000120558 -0.0703165 -0.026871
+-0.000177182 -0.0399988 -0.0149122
+-0.000339605 -0.0243609 -0.00907192
+-0.000268357 -0.0172375 -0.00648086
+-0.00030119 -0.0159714 -0.00593475
+-0.000189731 -0.0196729 -0.00743877
+-0.000430871 -0.030411 -0.0113536
+-0.000749147 -0.0522177 -0.0195847
+-3.83839e-05 -0.0941441 -0.0361054
+-0.000919616 -0.177272 -0.0669524
+-0.00329134 -0.336488 -0.126493
+6.09404e-05 -0.639449 -0.244047
+-0.00158129 -1.23617 -0.466455
+-0.0182735 -2.39215 -0.89166
+-0.00835125 -4.59363 -1.7258
+0.000889342 -8.88294 -3.31364
+-0.0983488 -17.2147 -6.31204
+-0.134978 -33.1132 -12.1113
+-0.250655 -63.9214 -23.1006
+-2.24476 -123.979 -43.2475
+-10.0592 -237.891 -79.4245
+-40.7582 -446.079 -137.288
+-148.767 -786.401 -207.706
+-381.336 -1187.62 -269.85
+-607.716 -1365.62 -328.383
+-554.839 -1090.51 -387.978
+-363.461 -659.552 -321.947
+-197.937 -324.053 -197.071
+-103.329 -135.576 -95.2728
+-61.0346 -50.1583 -37.8399
+-45.1169 -17.1528 -12.4488
+-39.8307 -5.80739 -3.19911
+-38.2766 -2.11962 -0.367898
+-38.0091 -0.836542 0.362666
+-38.2717 -0.266033 0.517561
+-38.8178 0.0718508 0.528017
+-39.5234 0.30172 0.48547
+-40.2939 0.458359 0.404892
+-41.0552 0.557704 0.296788
+-41.7586 0.612449 0.17792
+-42.3814 0.633919 0.0666486
+-42.9219 0.631399 -0.0227653
+-43.3906 0.611627 -0.0831207
+-43.8019 0.578931 -0.114282
+-44.168 0.535841 -0.121248
+-44.4958 0.483873 -0.111519
+-44.7862 0.424229 -0.0927345
+-45.0362 0.358264 -0.0710899
+-45.2406 0.287699 -0.0506452
+-45.3943 0.214606 -0.0333666
+-45.4939 0.141273 -0.0196201
+-45.5389 0.0699995 -0.00883226
+-45.5312 0.0029128 -9.91967e-05
+-45.4752 -0.0581714 0.0073817
+-45.3771 -0.111827 0.0140935
+-45.2441 -0.157038 0.0201624
+-45.0836 -0.193186 0.025435
+-44.9032 -0.22001 0.0295998
+-44.71 -0.237567 0.0323029
+-44.5105 -0.246187 0.033235
+-44.3106 -0.246426 0.0321878
+-44.1153 -0.239025 0.0290935
+-43.929 -0.224856 0.0240585
+-43.7555 -0.204864 0.0173997
+0 -0.180018 0.00965713
+116.977 -0.167836 0.027063
+117.136 -0.281697 0.098925
+117.328 -0.398368 0.174296
+117.551 -0.513619 0.249991
+117.803 -0.622568 0.322664
+118.078 -0.719809 0.388846
+118.373 -0.799573 0.445007
+118.679 -0.855937 0.487661
+118.985 -0.883058 0.513494
+119.281 -0.875443 0.519479
+119.553 -0.82824 0.502966
+119.786 -0.737549 0.461737
+119.964 -0.600743 0.394043
+120.072 -0.416774 0.298673
+120.096 -0.186484 0.175137
+120.024 0.0871259 0.0240448
+119.846 0.398634 -0.152247
+119.554 0.739988 -0.348722
+119.144 1.10031 -0.556627
+118.608 1.46576 -0.762491
+117.938 1.81942 -0.947632
+117.122 2.14123 -1.08865
+116.143 2.40799 -1.15933
+114.984 2.59349 -1.13424
+113.634 2.6687 -0.993497
+112.1 2.60216 -0.72755
+110.419 2.36028 -0.339799
+108.67 1.9074 0.15566
+106.979 1.20441 0.742556
+105.509 0.203339 1.41374
+104.469 -1.1705 2.16826
+104.173 -3.07271 2.94554
+105.299 -5.8952 3.38351
+109.553 -10.6719 2.19452
+120.885 -19.9916 -4.06077
+146.545 -39.5995 -22.5676
+194.968 -79.9932 -64.398
+264.865 -154.735 -138.799
+325.025 -268.811 -237.898
+311.521 -394.153 -321.929
+197.65 -456.139 -339.645
+86.8353 -392.359 -290.963
+29.7596 -266.911 -207.056
+9.46953 -157.391 -127.581
+3.00856 -86.7285 -71.8147
+0.978779 -46.336 -38.6395
+0.42027 -24.3789 -20.3751
+0.200918 -12.7941 -10.6569
+0.0828527 -6.70486 -5.56139
+0.0442721 -3.49219 -2.89653
+0.0260199 -1.81941 -1.50645
+0.0105149 -0.950963 -0.784342
+0.00489614 -0.495113 -0.408724
+0.003032 -0.258553 -0.213434
+0.000753075 -0.136771 -0.112301
+-0.000272241 -0.0728052 -0.0597367
+-0.000511879 -0.0394178 -0.0323364
+-0.000903286 -0.0223648 -0.0181861
+-0.00114001 -0.0136509 -0.0110483
+-0.0012391 -0.00971141 -0.00783698
+-0.00137375 -0.00899023 -0.00722458
+-0.00147278 -0.0110777 -0.00896443
+-0.00178113 -0.0170129 -0.0138069
+-0.00226145 -0.0291676 -0.023803
+-0.00258919 -0.0526934 -0.0433696
+-0.00404826 -0.0987429 -0.0812676
+-0.00703467 -0.187205 -0.154262
+-0.0095583 -0.356734 -0.295479
+-0.0178095 -0.687832 -0.569535
+-0.0392775 -1.3284 -1.09915
+-0.0645079 -2.55583 -2.12273
+-0.122149 -4.93481 -4.10379
+-0.296111 -9.52987 -7.92334
+-0.623847 -18.3046 -15.2786
+-1.49392 -35.1628 -29.4264
+-4.65212 -67.4721 -56.2807
+-14.6887 -127.682 -105.63
+-46.2562 -234.521 -189.627
+-134.962 -402.288 -310.858
+-306.752 -596.584 -440.905
+-482.326 -696.991 -519.129
+-501.582 -602.53 -495.245
+-407.196 -408.93 -366.27
+-299.462 -232.927 -212.284
+-226.217 -118.632 -96.9545
+-188.159 -57.8857 -33.02
+-171.447 -29.0906 -5.52498
+-164.84 -15.7455 3.30539
+-162.583 -8.99584 4.78883
+-162.407 -4.96346 4.13718
+-163.503 -2.15632 3.14205
+-165.472 -0.0347441 2.19213
+-167.976 1.60367 1.27596
+-170.693 2.8495 0.355769
+-173.363 3.75675 -0.544781
+-175.82 4.36711 -1.35584
+-177.994 4.71766 -1.99991
+-179.897 4.8432 -2.42259
+-181.579 4.77676 -2.60657
+-183.102 4.54962 -2.57038
+-184.513 4.19135 -2.35764
+-185.832 3.72979 -2.02313
+-187.055 3.1912 -1.62059
+-188.158 2.60025 -1.1946
+-189.109 1.98 -0.777125
+-189.874 1.35178 -0.387705
+-190.431 0.734996 -0.0360609
+-190.766 0.146937 0.274497
+-190.88 -0.397454 0.543873
+-190.784 -0.885754 0.772887
+-190.5 -1.30818 0.96204
+-190.054 -1.65766 1.11119
+-189.476 -1.92981 1.21983
+-188.796 -2.12287 1.28754
+-188.045 -2.23751 1.3145
+-187.252 -2.27669 1.30177
+-186.442 -2.2453 1.25146
+-185.641 -2.14992 1.16683
+-184.868 -1.99842 1.05228
+-184.143 -1.79959 0.913413
+0 -1.56279 0.75699
+253.046 -0.562079 0.112477
+253.406 -0.939993 0.312746
+253.836 -1.32808 0.523794
+254.331 -1.7123 0.737507
+254.885 -2.07647 0.945021
+255.484 -2.4027 1.13681
+256.115 -2.67191 1.30286
+256.758 -2.86451 1.43295
+257.391 -2.9612 1.51701
+257.988 -2.94387 1.54547
+258.518 -2.79662 1.5096
+258.953 -2.50676 1.4018
+259.261 -2.06587 1.21587
+259.413 -1.47087 0.947426
+259.387 -0.725005 0.594459
+259.165 0.161291 0.158391
+258.734 1.16953 -0.35438
+258.091 2.27252 -0.930384
+257.236 3.43378 -1.54668
+256.166 4.6072 -2.16868
+254.874 5.73686 -2.74899
+253.343 6.75726 -3.22836
+251.54 7.59399 -3.53969
+249.426 8.16506 -3.61573
+246.967 8.38318 -3.39987
+244.153 8.15897 -2.85787
+241.022 7.4052 -1.98658
+237.687 6.04139 -0.814428
+234.336 3.99747 0.609935
+231.214 1.2131 2.23784
+228.59 -2.37506 4.03178
+226.748 -6.87632 5.92267
+226.104 -12.5588 7.63289
+227.547 -20.1008 8.27021
+232.912 -31.0457 5.69981
+244.846 -48.3572 -3.9149
+264.334 -76.4086 -25.3088
+284.483 -118.803 -60.6166
+284.541 -172.327 -103.678
+238.815 -219.346 -138.045
+151.42 -230.558 -147.341
+74.2318 -191.847 -131.226
+30.9617 -131.431 -98.0372
+12.3276 -79.4135 -63.0932
+4.98997 -44.9079 -36.669
+2.11767 -24.5632 -20.1014
+0.977554 -13.2002 -10.6772
+0.47359 -7.03878 -5.58545
+0.230825 -3.73318 -2.90243
+0.117226 -1.96739 -1.50098
+0.0604333 -1.03408 -0.774909
+0.0295438 -0.543415 -0.400634
+0.0141821 -0.285006 -0.207162
+0.00644248 -0.149831 -0.107437
+0.00196432 -0.0794472 -0.0562253
+-0.000405292 -0.0425057 -0.0297212
+-0.0016299 -0.0231679 -0.0159935
+-0.00241548 -0.0131681 -0.0089549
+-0.00291301 -0.00808045 -0.0054028
+-0.0032623 -0.00579006 -0.00380609
+-0.0036029 -0.00536541 -0.00349972
+-0.00399686 -0.00660509 -0.00434541
+-0.00462078 -0.0100645 -0.00673487
+-0.00563986 -0.0171669 -0.0116903
+-0.00728421 -0.0309343 -0.021409
+-0.0105237 -0.0575469 -0.040388
+-0.0166281 -0.108553 -0.0771849
+-0.0273151 -0.206272 -0.148701
+-0.0488338 -0.394927 -0.28868
+-0.0921309 -0.757252 -0.561449
+-0.172489 -1.44903 -1.09178
+-0.336199 -2.77271 -2.12557
+-0.690696 -5.29269 -4.1298
+-1.4401 -10.0472 -7.9865
+-3.17737 -18.9996 -15.3462
+-7.63494 -35.7141 -29.0419
+-19.1684 -66.0807 -53.2596
+-48.6978 -118.415 -92.0902
+-117.463 -198.498 -143.651
+-240.055 -292.627 -193.145
+-378.405 -353.52 -218.897
+-450.169 -336.18 -208.225
+-449.282 -262.446 -158.3
+-417.173 -178.94 -93.0442
+-386.609 -113.734 -38.8665
+-367.769 -71.5946 -6.24687
+-358.558 -46.3506 8.05292
+-354.799 -30.7848 11.679
+-353.965 -20.1212 10.7474
+-355.076 -11.943 8.48528
+-357.754 -5.23145 6.0561
+-361.639 0.385281 3.66696
+-366.251 5.03058 1.27775
+-371.073 8.75141 -1.09815
+-375.688 11.5833 -3.33854
+-379.853 13.572 -5.26272
+-383.506 14.7781 -6.70324
+-386.721 15.2757 -7.55826
+-389.638 15.1484 -7.81147
+-392.395 14.4856 -7.52359
+-395.088 13.3783 -6.8069
+-397.746 11.917 -5.79508
+-400.337 10.1894 -4.61756
+-402.786 8.27906 -3.38267
+-404.994 6.26448 -2.17051
+-406.869 4.21808 -1.03339
+-408.331 2.20562 -0.00108975
+-409.332 0.285447 0.912147
+-409.852 -1.4921 1.70098
+-409.9 -3.08526 2.36412
+-409.508 -4.46119 2.90159
+-408.723 -5.59622 3.31377
+-407.606 -6.47575 3.60161
+-406.223 -7.09404 3.76735
+-404.641 -7.4536 3.81514
+-402.927 -7.5645 3.75146
+-401.145 -7.4434 3.58521
+-399.355 -7.11242 3.32762
+-397.607 -6.598 2.99226
+-395.952 -5.9296 2.59487
+0 -5.1385 2.15323
+395.489 -1.06864 0.0678563
+396.025 -1.78516 0.323397
+396.649 -2.52133 0.596094
+397.352 -3.25044 0.875763
+398.119 -3.94181 1.15121
+398.934 -4.56148 1.41029
+399.772 -5.07334 1.64007
+400.607 -5.44036 1.82718
+401.406 -5.62618 1.95823
+402.135 -5.5969 2.02023
+402.756 -5.3229 2.00099
+403.231 -4.78096 1.88946
+403.526 -3.95616 1.67609
+403.612 -2.84395 1.3533
+403.469 -1.45185 0.916329
+403.087 0.198839 0.364798
+402.47 2.07175 -0.295009
+401.631 4.11433 -1.04697
+400.587 6.25714 -1.86148
+399.353 8.41354 -2.69217
+397.929 10.48 -3.47405
+396.291 12.3369 -4.12496
+394.385 13.8509 -4.5516
+392.131 14.8785 -4.66137
+389.438 15.272 -4.37921
+386.231 14.8875 -3.66673
+382.49 13.5966 -2.53746
+378.28 11.2992 -1.06089
+373.759 7.93749 0.651578
+369.144 3.50497 2.47824
+364.643 -1.95639 4.32138
+360.36 -8.38899 6.10901
+356.267 -15.809 7.71444
+352.264 -24.4816 8.76927
+348.224 -35.1668 8.46069
+343.541 -49.2558 5.61164
+335.54 -68.3177 -0.570762
+317.171 -92.3992 -9.22815
+277.626 -117.184 -17.5098
+211.387 -132.579 -22.9206
+132.246 -127.568 -26.3931
+69.071 -101.666 -29.4329
+32.2249 -69.0763 -27.5148
+14.4843 -42.2317 -20.8618
+6.57463 -24.3692 -13.518
+3.0838 -13.6477 -7.93689
+1.50773 -7.51746 -4.38706
+0.75861 -4.09976 -2.33871
+0.387035 -2.21803 -1.2212
+0.19968 -1.19093 -0.629183
+0.102902 -0.636109 -0.321776
+0.0518474 -0.338715 -0.164196
+0.025073 -0.179976 -0.0836657
+0.0109183 -0.0957441 -0.0427151
+0.00323452 -0.051226 -0.0219799
+-0.000942163 -0.0276693 -0.0114157
+-0.00325479 -0.0152315 -0.0060274
+-0.00462512 -0.00872257 -0.00329879
+-0.00550101 -0.00540293 -0.00193498
+-0.0061517 -0.00390958 -0.0013226
+-0.00676893 -0.00363638 -0.00119636
+-0.00751275 -0.0044651 -0.00150139
+-0.00861234 -0.00673879 -0.00239065
+-0.0104135 -0.0113843 -0.00427064
+-0.0135273 -0.0203363 -0.00802085
+-0.0192196 -0.0374152 -0.0154619
+-0.0297553 -0.0698585 -0.0301334
+-0.049306 -0.131461 -0.0591062
+-0.0865704 -0.248593 -0.1166
+-0.1581 -0.470415 -0.230077
+-0.294936 -0.888237 -0.452912
+-0.563226 -1.67239 -0.888648
+-1.10357 -3.13404 -1.72831
+-2.21483 -5.8355 -3.31184
+-4.61099 -10.7996 -6.20245
+-10.0526 -19.8382 -11.1619
+-22.6483 -35.9356 -18.8075
+-51.3307 -63.285 -28.4431
+-111.367 -105.118 -36.1273
+-214.437 -156.515 -36.3647
+-343.042 -197.447 -30.9535
+-449.604 -204.826 -28.1579
+-511.798 -179.567 -23.4715
+-539.208 -139.956 -13.3734
+-549.658 -102.548 -1.50768
+-554.388 -74.0515 7.16114
+-557.545 -53.8732 11.0388
+-560.232 -39.023 11.4116
+-563.042 -26.9789 10.1474
+-566.541 -16.386 8.36732
+-571.025 -6.77264 6.37175
+-576.356 1.88236 4.07968
+-582.066 9.44413 1.41919
+-587.598 15.7689 -1.50449
+-592.519 20.762 -4.4218
+-596.636 24.3935 -6.99814
+-600.004 26.6936 -8.94195
+-602.848 27.7418 -10.0773
+-605.46 27.6539 -10.3676
+-608.101 26.5691 -9.89767
+-610.937 24.6406 -8.83205
+-614.016 22.0274 -7.36805
+-617.277 18.8887 -5.69606
+-620.58 15.3802 -3.97404
+-623.747 11.6502 -2.31663
+-626.596 7.83805 -0.79599
+-628.975 4.0713 0.550206
+-630.77 0.464199 1.70798
+-631.919 -2.88409 2.6769
+-632.404 -5.89087 3.46246
+-632.246 -8.49085 4.07172
+-631.499 -10.6367 4.51154
+-630.235 -12.2991 4.78877
+-628.54 -13.4661 4.91102
+-626.508 -14.1418 4.88754
+-624.235 -14.3454 4.72972
+-621.812 -14.1085 4.45126
+-619.33 -13.4738 4.06816
+-616.869 -12.4917 3.59866
+-614.502 -11.2187 3.06333
+0 -9.71464 2.48495
+512.579 -1.35507 -0.246829
+513.171 -2.2613 -0.123979
+513.824 -3.19245 0.0167403
+514.524 -4.11464 0.170109
+515.255 -4.98896 0.330628
+515.995 -5.77246 0.492347
+516.722 -6.41949 0.648804
+517.409 -6.88338 0.793074
+518.027 -7.11845 0.917853
+518.545 -7.08232 1.0155
+518.935 -6.7383 1.07799
+519.169 -6.05804 1.09677
+519.228 -5.02403 1.06263
+519.099 -3.63208 0.965785
+518.786 -1.89349 0.79651
+518.306 0.163035 0.546651
+517.69 2.48989 0.212311
+516.984 5.01954 -0.202283
+516.232 7.66401 -0.680179
+515.47 10.315 -1.18732
+514.705 12.8447 -1.66996
+513.905 15.1078 -2.05595
+512.981 16.9449 -2.26172
+511.792 18.1884 -2.20629
+510.164 18.6706 -1.83141
+507.919 18.2358 -1.12409
+504.926 16.7565 -0.133767
+501.142 14.1515 1.02594
+496.629 10.4055 2.20035
+491.514 5.58366 3.24412
+485.887 -0.168874 4.08738
+479.642 -6.65681 4.78862
+472.313 -13.7158 5.53794
+462.925 -21.3546 6.5985
+449.819 -29.9166 8.24286
+430.314 -40.0868 10.7983
+400.212 -52.4232 14.7821
+354.079 -66.1818 20.6541
+288.296 -77.9798 27.4939
+207.447 -82.131 31.373
+127.949 -74.4263 27.1002
+68.6219 -57.1374 15.0847
+33.6524 -38.1773 3.97871
+15.9692 -23.2919 -1.49331
+7.62999 -13.5395 -2.71278
+3.74481 -7.6883 -2.23128
+1.89517 -4.31117 -1.45294
+0.980506 -2.3962 -0.843316
+0.513148 -1.3208 -0.459176
+0.269473 -0.722163 -0.240408
+0.140526 -0.392241 -0.122781
+0.071654 -0.212031 -0.0618043
+0.0347635 -0.114287 -0.0308155
+0.0148993 -0.0616102 -0.015287
+0.00409533 -0.03335 -0.007587
+-0.00184589 -0.0182188 -0.00377175
+-0.00518784 -0.0101419 -0.001883
+-0.00716078 -0.00586901 -0.000952199
+-0.00843001 -0.00367695 -0.000496683
+-0.0093846 -0.00268996 -0.000290608
+-0.0102903 -0.00251492 -0.000237884
+-0.0113867 -0.00307786 -0.000319116
+-0.0129875 -0.00459842 -0.000587166
+-0.0155955 -0.0076777 -0.00118848
+-0.0201075 -0.0135541 -0.0024462
+-0.0282088 -0.0246247 -0.00503952
+-0.0430282 -0.0454082 -0.0103303
+-0.0704266 -0.0843815 -0.0210796
+-0.121619 -0.157363 -0.0428333
+-0.21786 -0.29345 -0.086288
+-0.399667 -0.545717 -0.171698
+-0.747418 -1.01046 -0.335591
+-1.4254 -1.86025 -0.636614
+-2.78147 -3.40253 -1.15195
+-5.59927 -6.18782 -1.92417
+-11.6947 -11.1922 -2.75458
+-25.129 -20.06 -2.70544
+-54.1759 -35.1902 0.742386
+-112.232 -58.74 11.8138
+-210.943 -89.062 32.1156
+-342.546 -116.613 52.4067
+-474.765 -128.293 57.6069
+-580.058 -120.671 48.0632
+-651.328 -101.25 33.7755
+-695.206 -79.7186 21.8673
+-721.088 -61.4886 13.8743
+-736.196 -47.3261 8.95407
+-745.304 -35.8299 6.22469
+-751.558 -25.511 5.06842
+-756.906 -15.5783 4.82915
+-762.26 -5.89225 4.77127
+-767.708 3.32518 4.2817
+-772.842 11.7351 3.05954
+-777.137 19.0219 1.16044
+-780.233 24.9538 -1.09525
+-782.076 29.3999 -3.27948
+-782.907 32.3234 -5.00657
+-783.167 33.7661 -6.03094
+-783.346 33.8293 -6.27943
+-783.868 32.6562 -5.8297
+-785.006 30.417 -4.85782
+-786.854 27.2971 -3.57892
+-789.347 23.4886 -2.19745
+-792.301 19.1835 -0.875537
+-795.469 14.5689 0.280023
+-798.595 9.82256 1.21575
+-801.446 5.10934 1.9203
+-803.839 0.578203 2.40983
+-805.654 -3.64067 2.71419
+-806.826 -7.43808 2.86656
+-807.34 -10.7275 2.89732
+-807.221 -13.4456 2.83161
+-806.525 -15.5531 2.68932
+-805.325 -17.0329 2.48626
+-803.707 -17.8898 2.23543
+-801.764 -18.1474 1.94811
+-799.589 -17.8461 1.63453
+-797.272 -17.0401 1.30441
+-794.899 -15.794 0.96762
+-792.551 -14.1798 0.634857
+0 -12.2738 0.318235
+591.357 -1.14862 -0.761475
+591.886 -1.91515 -0.92349
+592.414 -2.70271 -1.07238
+592.923 -3.48258 -1.2027
+593.398 -4.22181 -1.30774
+593.82 -4.88401 -1.38007
+594.173 -5.43061 -1.41205
+594.44 -5.82223 -1.3964
+594.604 -6.02043 -1.32673
+594.652 -5.98969 -1.19832
+594.575 -5.69951 -1.00906
+594.37 -5.12659 -0.760464
+594.042 -4.25702 -0.458766
+593.612 -3.08828 -0.115594
+593.115 -1.6311 0.252013
+592.602 0.0890477 0.622819
+592.14 2.03089 0.974152
+591.805 4.13661 1.28626
+591.672 6.33173 1.5478
+591.793 8.52549 1.76132
+592.183 10.6119 1.94706
+592.792 12.472 2.14262
+593.494 13.9768 2.39661
+594.088 14.9931 2.75486
+594.31 15.3907 3.2404
+593.879 15.0534 3.83184
+592.55 13.8921 4.44906
+590.17 11.8617 4.95804
+586.699 8.97625 5.20589
+582.176 5.32073 5.08979
+576.591 1.04977 4.64978
+569.668 -3.63751 4.15876
+560.586 -8.55976 4.17524
+547.659 -13.6546 5.53165
+528.047 -19.0789 9.24421
+497.64 -25.1868 16.2988
+451.553 -32.1943 27.1428
+386.077 -39.4769 40.6526
+302.555 -44.9626 52.8986
+211.134 -45.6862 57.5221
+128.945 -40.0584 49.9915
+69.8704 -30.0166 33.3859
+34.9911 -19.7506 17.1796
+16.9895 -11.9532 6.94555
+8.29878 -6.93649 2.16476
+4.15829 -3.95505 0.412399
+2.14341 -2.2371 -0.0706232
+1.12753 -1.25752 -0.13359
+0.599075 -0.70183 -0.0975633
+0.318468 -0.388681 -0.0568573
+0.167627 -0.213763 -0.0297231
+0.0860325 -0.11693 -0.0145535
+0.041763 -0.0637471 -0.00677937
+0.0176552 -0.034737 -0.00300718
+0.00443987 -0.0189923 -0.00125479
+-0.00288818 -0.0104757 -0.000465702
+-0.00704466 -0.00588723 -0.000119714
+-0.00951118 -0.00343926 2.90987e-05
+-0.011108 -0.00217645 9.53153e-05
+-0.0123171 -0.00160736 0.000128759
+-0.0134677 -0.00150983 0.000149197
+-0.0148604 -0.00184247 0.0001608
+-0.0168821 -0.00272946 0.0001539
+-0.0201544 -0.00451044 9.92022e-05
+-0.0257786 -0.00787876 -7.40933e-05
+-0.0357781 -0.0141602 -0.000526299
+-0.053899 -0.0258329 -0.00159922
+-0.0871046 -0.0474872 -0.00401062
+-0.148404 -0.0875603 -0.00919191
+-0.262146 -0.161384 -0.0197444
+-0.474294 -0.296552 -0.0398303
+-0.873837 -0.542351 -0.0738179
+-1.63939 -0.986209 -0.117333
+-3.14611 -1.78321 -0.124534
+-6.22428 -3.21161 0.0956873
+-12.7574 -5.7724 1.14864
+-26.8763 -10.3339 4.57557
+-56.7551 -18.2112 13.4736
+-115.333 -30.7048 31.9269
+-214.804 -47.31 60.3463
+-352.471 -63.4511 88.3761
+-503.688 -72.1044 99.4475
+-638.938 -70.2848 88.8831
+-741.474 -61.069 65.3565
+-809.947 -49.6704 40.2976
+-851.533 -39.4783 20.5422
+-875.193 -31.2293 7.95396
+-888.405 -24.2045 1.70169
+-896.36 -17.5164 0.0157909
+-902.125 -10.6945 1.00185
+-907.084 -3.71235 3.00476
+-911.457 3.19091 4.8223
+-914.854 9.68442 5.80609
+-916.766 15.4548 5.82798
+-916.9 20.2588 5.1321
+-915.335 23.941 4.13453
+-912.496 26.4307 3.23936
+-909.025 27.7299 2.71787
+-905.614 27.8977 2.66477
+-902.852 27.035 3.01785
+-901.133 25.2707 3.61406
+-900.622 22.7518 4.25458
+-901.281 19.6345 4.75921
+-902.917 16.0783 5.00047
+-905.248 12.2406 4.91622
+-907.966 8.27293 4.50529
+-910.782 4.31719 3.81256
+-913.458 0.502273 2.91029
+-915.814 -3.05852 1.8806
+-917.732 -6.26975 0.802392
+-919.15 -9.05546 -0.256614
+-920.046 -11.36 -1.24312
+-920.431 -13.1483 -2.11827
+-920.341 -14.4049 -2.85611
+-919.826 -15.1331 -3.44147
+-918.945 -15.3528 -3.86803
+-917.765 -15.0983 -4.13656
+-916.353 -14.4155 -4.2533
+-914.775 -13.3596 -4.22809
+-913.1 -11.9919 -4.07259
+0 -10.3775 -3.79847
+633.961 -0.45064 -1.23672
+634.39 -0.751013 -1.67971
+634.756 -1.05961 -2.11554
+635.04 -1.36517 -2.5282
+635.227 -1.65475 -2.89892
+635.306 -1.91411 -3.20703
+635.266 -2.12811 -3.43097
+635.101 -2.28136 -3.54936
+634.809 -2.35883 -3.54226
+634.395 -2.34668 -3.39276
+633.869 -2.23307 -3.0887
+633.252 -2.009 -2.62467
+632.575 -1.66923 -2.0039
+631.884 -1.21298 -1.23977
+631.242 -0.644721 -0.356396
+630.73 0.0253304 0.612248
+630.44 0.780773 1.62511
+630.475 1.59881 2.6388
+630.926 2.45024 3.61381
+631.858 3.29969 4.52105
+633.286 4.10607 5.34683
+635.148 4.82354 6.09389
+637.289 5.40287 6.77623
+639.461 5.79356 7.40671
+641.339 5.94699 7.9786
+642.568 5.82059 8.44636
+642.825 5.3832 8.71503
+641.883 4.62134 8.65107
+639.638 3.54516 8.1259
+636.073 2.1926 7.09638
+631.118 0.628436 5.71209
+624.392 -1.06584 4.42443
+614.83 -2.81577 4.06156
+600.261 -4.59108 5.8257
+577.048 -6.44028 11.1418
+540.172 -8.47851 21.2114
+484.412 -10.7664 36.0752
+407.291 -13.0738 53.2555
+313.17 -14.7044 67.0111
+215.201 -14.7278 70.2696
+130.717 -12.7331 59.9192
+71.1264 -9.43319 40.8951
+35.9372 -6.15426 22.6469
+17.6136 -3.70233 10.5684
+8.6808 -2.14153 4.34159
+4.38764 -1.22095 1.6347
+2.28079 -0.692514 0.588505
+1.20973 -0.391114 0.213548
+0.647751 -0.219554 0.0828268
+0.346632 -0.122364 0.0360331
+0.183394 -0.0677311 0.0177795
+0.0944234 -0.0372841 0.00963434
+0.0458039 -0.020452 0.00550565
+0.0191556 -0.011211 0.0032328
+0.00446704 -0.00616428 0.00192906
+-0.00372054 -0.00341876 0.0011738
+-0.00838769 -0.00193176 0.000739955
+-0.0111695 -0.00113478 0.000497071
+-0.0129787 -0.000722341 0.000370446
+-0.0143545 -0.000536398 0.000318657
+-0.0156669 -0.000505237 0.000322006
+-0.0172542 -0.000615542 0.0003771
+-0.0195504 -0.000907469 0.000495843
+-0.0232495 -0.00149065 0.000709423
+-0.0295742 -0.00258779 0.00107764
+-0.0407528 -0.0046222 0.00170736
+-0.0608889 -0.00838072 0.00278851
+-0.0975612 -0.0153113 0.00466385
+-0.164794 -0.0280553 0.00800551
+-0.288628 -0.0513819 0.0143188
+-0.517858 -0.093818 0.027451
+-0.946063 -0.170499 0.0585252
+-1.75971 -0.308179 0.141352
+-3.34925 -0.554355 0.377226
+-6.57491 -0.99474 1.05755
+-13.3743 -1.78558 2.95196
+-27.9591 -3.20233 7.82512
+-58.5474 -5.67033 18.943
+-118.012 -9.62672 40.27
+-219.005 -14.9638 71.979
+-361.465 -20.2968 104.107
+-524.621 -23.3893 120.003
+-678.121 -23.1342 111.572
+-799.829 -20.3752 85.0369
+-883.434 -16.775 53.2497
+-934.468 -13.4862 26.3073
+-962.881 -10.7889 8.39221
+-977.927 -8.44988 -0.707666
+-986.198 -6.16204 -3.17972
+-991.528 -3.76031 -1.60581
+-995.598 -1.2408 1.77007
+-998.686 1.29983 5.32549
+-1000.38 3.72783 8.12879
+-1000.16 5.91425 9.86721
+-997.753 7.7563 10.6717
+-993.322 9.18516 10.8956
+-987.411 10.1657 10.9127
+-980.803 10.6923 10.9829
+-974.33 10.7827 11.2004
+-968.706 10.4723 11.5094
+-964.421 9.80854 11.7608
+-961.708 8.84695 11.7786
+-960.564 7.64742 11.4146
+-960.807 6.27179 10.5831
+-962.148 4.78167 9.27154
+-964.258 3.23667 7.53348
+-966.816 1.69288 5.47047
+-969.548 0.201442 3.20992
+-972.237 -1.19255 0.884627
+-974.725 -2.45103 -1.38267
+-976.906 -3.54364 -3.48865
+-978.716 -4.44812 -5.35339
+-980.126 -5.15032 -6.92045
+-981.128 -5.644 -8.15485
+-981.734 -5.93028 -9.04029
+-981.966 -6.01691 -9.5763
+-981.857 -5.91732 -9.77536
+-981.445 -5.64964 -9.66017
+-980.773 -5.23552 -9.26068
+-979.889 -4.69914 -8.61107
+0 -4.06605 -7.7469
+647.113 0.45064 -1.4285
+647.497 0.751013 -1.98722
+647.791 1.05961 -2.54138
+647.978 1.36517 -3.07063
+648.043 1.65475 -3.55121
+647.976 1.91411 -3.95701
+647.771 2.12811 -4.2607
+647.427 2.28136 -4.43511
+646.947 2.35883 -4.45473
+646.343 2.34668 -4.29762
+645.635 2.23307 -3.94755
+644.852 2.009 -3.39629
+644.035 1.66923 -2.64588
+643.241 1.21298 -1.7105
+642.545 0.644721 -0.617231
+642.037 -0.0253305 0.594638
+641.82 -0.780773 1.87643
+642.005 -1.59881 3.17497
+642.69 -2.45024 4.43912
+643.945 -3.29969 5.62674
+645.782 -4.10607 6.71021
+648.136 -4.82354 7.67802
+650.841 -5.40287 8.53028
+653.631 -5.79356 9.26697
+656.159 -5.94699 9.87032
+658.046 -5.82059 10.2867
+658.942 -5.3832 10.4176
+658.593 -4.62134 10.1328
+656.875 -3.54516 9.31656
+653.753 -2.1926 7.95189
+649.14 -0.628435 6.23208
+642.614 1.06584 4.67525
+633.027 2.81577 4.20539
+618.029 4.59108 6.15003
+593.698 6.44028 12.0619
+554.696 8.47851 23.1858
+495.698 10.7664 39.3722
+414.669 13.0738 57.6389
+316.995 14.7044 71.6506
+216.803 14.7278 74.2068
+131.465 12.7331 62.7964
+71.6172 9.43319 42.9911
+36.2767 6.15426 24.174
+17.8262 3.70233 11.5999
+8.80668 2.14153 4.97564
+4.46175 1.22095 1.99878
+2.32487 0.692514 0.789032
+1.23611 0.391114 0.32122
+0.66343 0.219554 0.139732
+0.35575 0.122364 0.0657557
+0.188519 0.0677311 0.0331498
+0.0971499 0.0372841 0.017523
+0.0471051 0.020452 0.00953273
+0.0196179 0.011211 0.005283
+0.00443836 0.00616428 0.00297433
+-0.00403784 0.00341876 0.00171023
+-0.00887768 0.00193176 0.00101948
+-0.011767 0.00113478 0.00064768
+-0.0136493 0.000722341 0.000457726
+-0.0150829 0.000536398 0.000377901
+-0.0164515 0.000505237 0.000375381
+-0.0181063 0.000615542 0.000444292
+-0.0204973 0.000907469 0.00060363
+-0.0243426 0.00149065 0.000904687
+-0.0309048 0.00258779 0.00145056
+-0.04248 0.0046222 0.00243618
+-0.0632876 0.00838072 0.00422642
+-0.101103 0.0153113 0.00750987
+-0.170277 0.0280553 0.0136351
+-0.297382 0.0513819 0.0254108
+-0.532102 0.093818 0.0491801
+-0.969468 0.170499 0.100777
+-1.7985 0.308179 0.222753
+-3.41475 0.554355 0.53246
+-6.68903 0.99474 1.3495
+-13.5793 1.78558 3.48815
+-28.33 3.20233 8.7707
+-59.1868 5.67033 20.4999
+-119.024 9.62672 42.6021
+-220.664 14.9638 75.234
+-364.881 20.2968 108.685
+-532.124 23.3893 126.365
+-691.801 23.1342 119.01
+-820.01 20.3752 91.8203
+-908.736 16.775 57.949
+-962.908 13.4862 28.5785
+-992.808 10.7889 8.7601
+-1008.32 8.44988 -1.42297
+-1016.54 6.16204 -4.25245
+-1021.58 3.76031 -2.5263
+-1025.22 1.2408 1.31379
+-1027.76 -1.29983 5.49797
+-1028.78 -3.72783 8.98943
+-1027.72 -5.91425 11.4011
+-1024.34 -7.7563 12.8133
+-1018.82 -9.18516 13.5465
+-1011.73 -10.1657 13.9549
+-1003.92 -10.6923 14.2879
+-996.267 -10.7827 14.6352
+-989.525 -10.4723 14.9417
+-984.226 -9.80854 15.0634
+-980.63 -8.84695 14.8336
+-978.749 -7.64742 14.1183
+-978.409 -6.27179 12.8496
+-979.323 -4.78167 11.036
+-981.155 -3.23667 8.75415
+-983.577 -1.69288 6.12936
+-986.303 -0.201442 3.3119
+-989.103 1.19255 0.455563
+-991.801 2.45103 -2.29876
+-994.278 3.54364 -4.83307
+-996.452 4.44812 -7.05646
+-998.277 5.15032 -8.90523
+-999.727 5.644 -10.3408
+-1000.8 5.93028 -11.3464
+-1001.5 6.01691 -11.9242
+-1001.84 5.91732 -12.0915
+-1001.85 5.64964 -11.8781
+-1001.57 5.23552 -11.3221
+-1001.03 4.69914 -10.4672
+0 4.06605 -9.3589
+633.961 1.14862 -1.23672
+634.39 1.91515 -1.67971
+634.756 2.70271 -2.11554
+635.04 3.48258 -2.5282
+635.227 4.22181 -2.89892
+635.306 4.88401 -3.20703
+635.266 5.43061 -3.43097
+635.101 5.82223 -3.54936
+634.809 6.02043 -3.54226
+634.395 5.98969 -3.39276
+633.869 5.69951 -3.08869
+633.252 5.12659 -2.62466
+632.575 4.25702 -2.0039
+631.884 3.08828 -1.23977
+631.242 1.6311 -0.356396
+630.73 -0.0890477 0.612249
+630.44 -2.03089 1.62511
+630.475 -4.13661 2.6388
+630.926 -6.33173 3.61381
+631.858 -8.52549 4.52105
+633.286 -10.6119 5.34683
+635.148 -12.472 6.09389
+637.289 -13.9768 6.77623
+639.461 -14.9931 7.40671
+641.339 -15.3907 7.9786
+642.568 -15.0534 8.44636
+642.825 -13.8921 8.71503
+641.883 -11.8617 8.65107
+639.638 -8.97625 8.12591
+636.073 -5.32073 7.09638
+631.118 -1.04977 5.71209
+624.392 3.63751 4.42443
+614.83 8.55976 4.06156
+600.261 13.6546 5.8257
+577.048 19.0789 11.1418
+540.172 25.1868 21.2114
+484.412 32.1943 36.0752
+407.291 39.4769 53.2555
+313.17 44.9626 67.0111
+215.201 45.6862 70.2696
+130.717 40.0584 59.9192
+71.1264 30.0166 40.8951
+35.9372 19.7506 22.6469
+17.6136 11.9532 10.5684
+8.6808 6.93649 4.34159
+4.38764 3.95505 1.6347
+2.28079 2.2371 0.588505
+1.20973 1.25752 0.213548
+0.647751 0.70183 0.0828268
+0.346632 0.388681 0.0360331
+0.183394 0.213763 0.0177795
+0.0944234 0.11693 0.00963434
+0.0458039 0.0637471 0.00550565
+0.0191556 0.034737 0.0032328
+0.00446704 0.0189923 0.00192906
+-0.00372054 0.0104757 0.0011738
+-0.00838769 0.00588723 0.000739955
+-0.0111695 0.00343926 0.000497071
+-0.0129787 0.00217645 0.000370446
+-0.0143545 0.00160736 0.000318657
+-0.0156669 0.00150983 0.000322006
+-0.0172542 0.00184247 0.0003771
+-0.0195504 0.00272946 0.000495843
+-0.0232495 0.00451044 0.000709423
+-0.0295742 0.00787876 0.00107764
+-0.0407528 0.0141602 0.00170736
+-0.0608889 0.0258329 0.00278851
+-0.0975612 0.0474872 0.00466385
+-0.164794 0.0875603 0.00800551
+-0.288628 0.161384 0.0143188
+-0.517858 0.296552 0.027451
+-0.946063 0.542351 0.0585252
+-1.75971 0.986209 0.141352
+-3.34925 1.78321 0.377226
+-6.57491 3.21161 1.05755
+-13.3743 5.7724 2.95196
+-27.9591 10.3339 7.82512
+-58.5474 18.2112 18.943
+-118.012 30.7048 40.27
+-219.005 47.31 71.979
+-361.465 63.4511 104.107
+-524.621 72.1044 120.003
+-678.121 70.2848 111.572
+-799.829 61.069 85.0369
+-883.434 49.6704 53.2497
+-934.468 39.4783 26.3073
+-962.881 31.2293 8.39221
+-977.927 24.2045 -0.707666
+-986.198 17.5164 -3.17972
+-991.528 10.6945 -1.60581
+-995.598 3.71235 1.77006
+-998.686 -3.19091 5.32549
+-1000.38 -9.68442 8.12879
+-1000.16 -15.4548 9.86721
+-997.753 -20.2588 10.6717
+-993.322 -23.941 10.8956
+-987.411 -26.4307 10.9127
+-980.803 -27.7299 10.9829
+-974.33 -27.8977 11.2004
+-968.706 -27.035 11.5094
+-964.421 -25.2707 11.7608
+-961.708 -22.7518 11.7786
+-960.564 -19.6345 11.4146
+-960.807 -16.0783 10.5831
+-962.148 -12.2406 9.27154
+-964.258 -8.27293 7.53348
+-966.816 -4.31719 5.47047
+-969.548 -0.502273 3.20992
+-972.237 3.05852 0.884627
+-974.725 6.26975 -1.38267
+-976.906 9.05546 -3.48865
+-978.716 11.36 -5.35339
+-980.126 13.1483 -6.92045
+-981.128 14.4049 -8.15485
+-981.734 15.1331 -9.04029
+-981.966 15.3528 -9.5763
+-981.857 15.0983 -9.77536
+-981.445 14.4155 -9.66017
+-980.773 13.3596 -9.26068
+-979.889 11.9919 -8.61107
+0 10.3775 -7.7469
+591.357 1.35507 -0.761476
+591.886 2.2613 -0.92349
+592.414 3.19245 -1.07238
+592.923 4.11464 -1.2027
+593.398 4.98896 -1.30774
+593.82 5.77246 -1.38007
+594.173 6.41949 -1.41205
+594.44 6.88338 -1.3964
+594.604 7.11845 -1.32673
+594.652 7.08232 -1.19832
+594.575 6.7383 -1.00905
+594.37 6.05804 -0.760464
+594.042 5.02403 -0.458766
+593.612 3.63208 -0.115594
+593.115 1.89349 0.252013
+592.602 -0.163035 0.622819
+592.14 -2.48989 0.974152
+591.805 -5.01954 1.28626
+591.672 -7.66401 1.5478
+591.793 -10.315 1.76132
+592.183 -12.8447 1.94706
+592.792 -15.1078 2.14262
+593.494 -16.9449 2.39661
+594.088 -18.1884 2.75486
+594.31 -18.6706 3.2404
+593.879 -18.2358 3.83184
+592.55 -16.7565 4.44906
+590.17 -14.1515 4.95804
+586.699 -10.4055 5.20589
+582.176 -5.58366 5.08979
+576.591 0.168874 4.64978
+569.668 6.65681 4.15876
+560.586 13.7158 4.17524
+547.659 21.3546 5.53165
+528.047 29.9166 9.24421
+497.64 40.0868 16.2988
+451.553 52.4232 27.1428
+386.077 66.1818 40.6526
+302.555 77.9798 52.8986
+211.134 82.131 57.5221
+128.945 74.4263 49.9915
+69.8704 57.1374 33.3859
+34.9911 38.1773 17.1796
+16.9895 23.2919 6.94555
+8.29878 13.5395 2.16476
+4.15829 7.6883 0.412399
+2.14341 4.31117 -0.0706232
+1.12753 2.3962 -0.13359
+0.599075 1.3208 -0.0975633
+0.318468 0.722163 -0.0568573
+0.167627 0.392241 -0.0297231
+0.0860325 0.212031 -0.0145535
+0.041763 0.114287 -0.00677937
+0.0176552 0.0616102 -0.00300718
+0.00443987 0.03335 -0.00125479
+-0.00288818 0.0182188 -0.000465702
+-0.00704466 0.0101419 -0.000119714
+-0.00951118 0.00586901 2.90987e-05
+-0.011108 0.00367695 9.53153e-05
+-0.0123171 0.00268996 0.000128759
+-0.0134677 0.00251492 0.000149197
+-0.0148604 0.00307786 0.0001608
+-0.0168821 0.00459842 0.0001539
+-0.0201544 0.0076777 9.92022e-05
+-0.0257786 0.0135541 -7.40933e-05
+-0.0357781 0.0246247 -0.000526299
+-0.053899 0.0454082 -0.00159922
+-0.0871046 0.0843815 -0.00401062
+-0.148404 0.157363 -0.00919191
+-0.262146 0.29345 -0.0197444
+-0.474294 0.545717 -0.0398303
+-0.873837 1.01046 -0.0738179
+-1.63939 1.86025 -0.117333
+-3.14611 3.40253 -0.124534
+-6.22428 6.18782 0.0956873
+-12.7574 11.1922 1.14864
+-26.8763 20.06 4.57557
+-56.7551 35.1902 13.4736
+-115.333 58.74 31.9269
+-214.804 89.062 60.3463
+-352.471 116.613 88.3761
+-503.688 128.293 99.4475
+-638.938 120.671 88.8831
+-741.474 101.25 65.3565
+-809.947 79.7186 40.2976
+-851.533 61.4886 20.5422
+-875.193 47.3261 7.95396
+-888.405 35.8299 1.70169
+-896.36 25.511 0.0157909
+-902.125 15.5783 1.00185
+-907.084 5.89225 3.00476
+-911.457 -3.32518 4.8223
+-914.854 -11.7351 5.80609
+-916.766 -19.0219 5.82798
+-916.9 -24.9538 5.1321
+-915.335 -29.3999 4.13453
+-912.496 -32.3234 3.23936
+-909.025 -33.7661 2.71787
+-905.614 -33.8293 2.66477
+-902.852 -32.6562 3.01785
+-901.133 -30.417 3.61406
+-900.622 -27.2971 4.25458
+-901.281 -23.4886 4.75921
+-902.917 -19.1835 5.00047
+-905.248 -14.5689 4.91622
+-907.966 -9.82257 4.50529
+-910.782 -5.10934 3.81256
+-913.458 -0.578203 2.91028
+-915.814 3.64067 1.8806
+-917.732 7.43808 0.802392
+-919.15 10.7275 -0.256614
+-920.046 13.4456 -1.24312
+-920.431 15.5531 -2.11827
+-920.341 17.0329 -2.85611
+-919.826 17.8898 -3.44147
+-918.945 18.1474 -3.86803
+-917.765 17.8461 -4.13656
+-916.353 17.0401 -4.2533
+-914.775 15.794 -4.22809
+-913.1 14.1798 -4.07259
+0 12.2738 -3.79847
+512.579 1.06864 -0.24683
+513.171 1.78516 -0.123979
+513.824 2.52133 0.0167403
+514.524 3.25044 0.170109
+515.255 3.94181 0.330628
+515.995 4.56148 0.492347
+516.722 5.07334 0.648804
+517.409 5.44036 0.793074
+518.027 5.62618 0.917853
+518.545 5.5969 1.0155
+518.935 5.3229 1.07799
+519.169 4.78096 1.09677
+519.228 3.95616 1.06263
+519.099 2.84395 0.965784
+518.786 1.45185 0.79651
+518.306 -0.198839 0.546651
+517.69 -2.07175 0.212312
+516.984 -4.11433 -0.202283
+516.232 -6.25714 -0.680179
+515.47 -8.41355 -1.18732
+514.705 -10.48 -1.66996
+513.905 -12.3369 -2.05595
+512.981 -13.8509 -2.26172
+511.792 -14.8785 -2.20629
+510.164 -15.272 -1.83141
+507.919 -14.8875 -1.12409
+504.926 -13.5966 -0.133767
+501.142 -11.2992 1.02594
+496.629 -7.93749 2.20035
+491.514 -3.50497 3.24412
+485.887 1.95639 4.08738
+479.642 8.38899 4.78861
+472.313 15.809 5.53794
+462.925 24.4816 6.5985
+449.819 35.1668 8.24286
+430.314 49.2558 10.7983
+400.212 68.3177 14.7821
+354.079 92.3992 20.6541
+288.296 117.184 27.4939
+207.447 132.579 31.373
+127.949 127.568 27.1002
+68.6219 101.666 15.0847
+33.6524 69.0763 3.97871
+15.9692 42.2317 -1.49331
+7.62999 24.3692 -2.71278
+3.74481 13.6477 -2.23128
+1.89517 7.51746 -1.45294
+0.980506 4.09976 -0.843316
+0.513148 2.21803 -0.459176
+0.269473 1.19093 -0.240408
+0.140526 0.636109 -0.122781
+0.071654 0.338715 -0.0618043
+0.0347635 0.179976 -0.0308155
+0.0148993 0.0957441 -0.015287
+0.00409533 0.051226 -0.007587
+-0.00184589 0.0276693 -0.00377175
+-0.00518784 0.0152315 -0.001883
+-0.00716078 0.00872257 -0.000952199
+-0.00843001 0.00540293 -0.000496683
+-0.0093846 0.00390958 -0.000290608
+-0.0102903 0.00363638 -0.000237884
+-0.0113867 0.0044651 -0.000319116
+-0.0129875 0.00673879 -0.000587166
+-0.0155955 0.0113843 -0.00118848
+-0.0201075 0.0203363 -0.0024462
+-0.0282088 0.0374152 -0.00503952
+-0.0430282 0.0698585 -0.0103303
+-0.0704266 0.131461 -0.0210796
+-0.121619 0.248593 -0.0428333
+-0.21786 0.470415 -0.086288
+-0.399667 0.888237 -0.171698
+-0.747418 1.67239 -0.335591
+-1.4254 3.13404 -0.636614
+-2.78147 5.8355 -1.15195
+-5.59927 10.7996 -1.92417
+-11.6947 19.8382 -2.75458
+-25.129 35.9356 -2.70544
+-54.1759 63.285 0.742386
+-112.232 105.118 11.8138
+-210.943 156.515 32.1156
+-342.546 197.447 52.4067
+-474.765 204.826 57.6069
+-580.058 179.567 48.0632
+-651.328 139.956 33.7755
+-695.206 102.548 21.8673
+-721.088 74.0515 13.8743
+-736.196 53.8732 8.95407
+-745.304 39.023 6.22469
+-751.558 26.9789 5.06842
+-756.906 16.386 4.82915
+-762.26 6.77264 4.77127
+-767.708 -1.88236 4.2817
+-772.842 -9.44413 3.05954
+-777.137 -15.7689 1.16044
+-780.233 -20.762 -1.09525
+-782.076 -24.3935 -3.27948
+-782.907 -26.6936 -5.00657
+-783.167 -27.7418 -6.03094
+-783.346 -27.6539 -6.27943
+-783.868 -26.5691 -5.8297
+-785.006 -24.6406 -4.85782
+-786.854 -22.0274 -3.57892
+-789.347 -18.8887 -2.19745
+-792.301 -15.3802 -0.875536
+-795.469 -11.6502 0.280023
+-798.595 -7.83805 1.21575
+-801.446 -4.0713 1.9203
+-803.839 -0.464199 2.40983
+-805.654 2.88409 2.71419
+-806.826 5.89087 2.86656
+-807.34 8.49085 2.89732
+-807.221 10.6367 2.83161
+-806.525 12.2991 2.68932
+-805.325 13.4661 2.48626
+-803.707 14.1418 2.23543
+-801.764 14.3454 1.94811
+-799.589 14.1085 1.63453
+-797.272 13.4738 1.30441
+-794.899 12.4917 0.96762
+-792.551 11.2187 0.634857
+0 9.71464 0.318235
+395.489 0.562079 0.0678565
+396.025 0.939993 0.323397
+396.649 1.32808 0.596094
+397.352 1.7123 0.875763
+398.119 2.07647 1.15121
+398.934 2.4027 1.41029
+399.772 2.67191 1.64007
+400.607 2.86451 1.82718
+401.406 2.9612 1.95823
+402.135 2.94387 2.02023
+402.756 2.79662 2.00099
+403.231 2.50676 1.88946
+403.526 2.06587 1.67609
+403.612 1.47087 1.3533
+403.469 0.725005 0.916329
+403.087 -0.161291 0.364798
+402.47 -1.16953 -0.295009
+401.631 -2.27252 -1.04697
+400.587 -3.43378 -1.86149
+399.353 -4.6072 -2.69217
+397.929 -5.73686 -3.47405
+396.291 -6.75726 -4.12496
+394.385 -7.59399 -4.5516
+392.131 -8.16506 -4.66137
+389.438 -8.38318 -4.37921
+386.231 -8.15897 -3.66673
+382.49 -7.4052 -2.53746
+378.28 -6.04139 -1.06089
+373.759 -3.99747 0.651578
+369.144 -1.2131 2.47824
+364.643 2.37506 4.32138
+360.36 6.87632 6.10901
+356.267 12.5588 7.71444
+352.264 20.1008 8.76927
+348.224 31.0457 8.46069
+343.541 48.3572 5.61164
+335.54 76.4086 -0.570762
+317.171 118.803 -9.22815
+277.626 172.327 -17.5098
+211.387 219.346 -22.9206
+132.246 230.558 -26.3931
+69.071 191.847 -29.4329
+32.2249 131.431 -27.5148
+14.4843 79.4135 -20.8618
+6.57463 44.9079 -13.518
+3.0838 24.5632 -7.93689
+1.50773 13.2002 -4.38706
+0.75861 7.03878 -2.33871
+0.387035 3.73318 -1.2212
+0.19968 1.96739 -0.629183
+0.102902 1.03408 -0.321776
+0.0518474 0.543415 -0.164196
+0.025073 0.285006 -0.0836657
+0.0109183 0.149831 -0.0427151
+0.00323452 0.0794472 -0.0219799
+-0.000942163 0.0425057 -0.0114157
+-0.00325479 0.0231679 -0.0060274
+-0.00462512 0.0131681 -0.00329879
+-0.00550101 0.00808045 -0.00193498
+-0.0061517 0.00579006 -0.0013226
+-0.00676893 0.00536541 -0.00119636
+-0.00751275 0.00660509 -0.00150139
+-0.00861234 0.0100645 -0.00239065
+-0.0104135 0.0171669 -0.00427064
+-0.0135273 0.0309343 -0.00802085
+-0.0192196 0.0575469 -0.0154619
+-0.0297553 0.108553 -0.0301334
+-0.049306 0.206272 -0.0591062
+-0.0865704 0.394927 -0.1166
+-0.1581 0.757252 -0.230077
+-0.294936 1.44903 -0.452912
+-0.563226 2.77271 -0.888648
+-1.10357 5.29269 -1.72831
+-2.21483 10.0472 -3.31184
+-4.61099 18.9996 -6.20245
+-10.0526 35.7141 -11.1619
+-22.6483 66.0807 -18.8075
+-51.3307 118.415 -28.4431
+-111.367 198.498 -36.1273
+-214.437 292.627 -36.3647
+-343.042 353.52 -30.9535
+-449.604 336.18 -28.1579
+-511.798 262.446 -23.4715
+-539.208 178.94 -13.3734
+-549.658 113.734 -1.50768
+-554.388 71.5946 7.16114
+-557.545 46.3506 11.0388
+-560.232 30.7848 11.4116
+-563.042 20.1212 10.1474
+-566.541 11.943 8.36732
+-571.025 5.23145 6.37175
+-576.356 -0.385281 4.07968
+-582.066 -5.03058 1.41919
+-587.598 -8.75141 -1.50449
+-592.519 -11.5833 -4.4218
+-596.636 -13.572 -6.99814
+-600.004 -14.7781 -8.94195
+-602.848 -15.2757 -10.0773
+-605.46 -15.1484 -10.3676
+-608.101 -14.4856 -9.89767
+-610.937 -13.3783 -8.83205
+-614.016 -11.917 -7.36805
+-617.277 -10.1894 -5.69606
+-620.58 -8.27906 -3.97404
+-623.747 -6.26448 -2.31663
+-626.596 -4.21808 -0.79599
+-628.975 -2.20562 0.550207
+-630.77 -0.285447 1.70798
+-631.919 1.4921 2.6769
+-632.404 3.08526 3.46246
+-632.246 4.46119 4.07172
+-631.499 5.59622 4.51154
+-630.235 6.47575 4.78877
+-628.54 7.09404 4.91102
+-626.508 7.4536 4.88754
+-624.235 7.5645 4.72972
+-621.812 7.4434 4.45126
+-619.33 7.11242 4.06816
+-616.869 6.598 3.59866
+-614.502 5.9296 3.06333
+0 5.1385 2.48495
+253.046 0.167836 0.112477
+253.406 0.281697 0.312746
+253.836 0.398368 0.523794
+254.331 0.513619 0.737507
+254.885 0.622568 0.945021
+255.484 0.719809 1.13681
+256.115 0.799573 1.30286
+256.758 0.855937 1.43295
+257.391 0.883058 1.51701
+257.988 0.875443 1.54547
+258.518 0.82824 1.5096
+258.953 0.737549 1.4018
+259.261 0.600743 1.21587
+259.413 0.416774 0.947426
+259.387 0.186483 0.594459
+259.165 -0.0871259 0.158391
+258.734 -0.398634 -0.35438
+258.091 -0.739988 -0.930384
+257.236 -1.10031 -1.54668
+256.166 -1.46576 -2.16868
+254.874 -1.81942 -2.74899
+253.343 -2.14123 -3.22836
+251.54 -2.40799 -3.53969
+249.426 -2.59349 -3.61573
+246.967 -2.6687 -3.39987
+244.153 -2.60216 -2.85787
+241.022 -2.36028 -1.98658
+237.687 -1.9074 -0.814428
+234.336 -1.20441 0.609935
+231.214 -0.203339 2.23784
+228.59 1.1705 4.03178
+226.748 3.07271 5.92267
+226.104 5.8952 7.63289
+227.547 10.6719 8.27021
+232.912 19.9916 5.69981
+244.846 39.5995 -3.9149
+264.334 79.9932 -25.3088
+284.483 154.735 -60.6166
+284.541 268.811 -103.678
+238.815 394.153 -138.045
+151.42 456.139 -147.341
+74.2318 392.359 -131.226
+30.9617 266.911 -98.0372
+12.3276 157.391 -63.0932
+4.98997 86.7285 -36.669
+2.11767 46.336 -20.1014
+0.977554 24.3789 -10.6772
+0.47359 12.7941 -5.58545
+0.230825 6.70486 -2.90243
+0.117226 3.49219 -1.50098
+0.0604333 1.81941 -0.774909
+0.0295438 0.950963 -0.400634
+0.0141821 0.495113 -0.207162
+0.00644248 0.258553 -0.107437
+0.00196432 0.136771 -0.0562253
+-0.000405292 0.0728052 -0.0297212
+-0.0016299 0.0394178 -0.0159935
+-0.00241548 0.0223648 -0.0089549
+-0.00291301 0.0136509 -0.0054028
+-0.0032623 0.00971141 -0.00380609
+-0.0036029 0.00899023 -0.00349972
+-0.00399686 0.0110777 -0.00434541
+-0.00462078 0.0170129 -0.00673487
+-0.00563986 0.0291676 -0.0116903
+-0.00728421 0.0526934 -0.021409
+-0.0105237 0.0987429 -0.040388
+-0.0166281 0.187205 -0.0771849
+-0.0273151 0.356734 -0.148701
+-0.0488338 0.687832 -0.28868
+-0.0921309 1.3284 -0.561449
+-0.172489 2.55583 -1.09178
+-0.336199 4.93481 -2.12557
+-0.690696 9.52987 -4.1298
+-1.4401 18.3046 -7.9865
+-3.17737 35.1628 -15.3462
+-7.63494 67.4721 -29.0419
+-19.1684 127.682 -53.2596
+-48.6978 234.521 -92.0902
+-117.463 402.288 -143.651
+-240.055 596.584 -193.145
+-378.405 696.991 -218.897
+-450.169 602.53 -208.225
+-449.282 408.93 -158.3
+-417.173 232.927 -93.0442
+-386.609 118.632 -38.8665
+-367.769 57.8857 -6.24687
+-358.558 29.0906 8.05292
+-354.799 15.7455 11.679
+-353.965 8.99584 10.7474
+-355.076 4.96346 8.48528
+-357.754 2.15632 6.0561
+-361.639 0.0347442 3.66696
+-366.251 -1.60367 1.27775
+-371.073 -2.8495 -1.09815
+-375.688 -3.75675 -3.33854
+-379.853 -4.36711 -5.26272
+-383.506 -4.71766 -6.70324
+-386.721 -4.8432 -7.55826
+-389.638 -4.77676 -7.81147
+-392.395 -4.54962 -7.52359
+-395.088 -4.19135 -6.8069
+-397.746 -3.72979 -5.79508
+-400.337 -3.1912 -4.61756
+-402.786 -2.60025 -3.38267
+-404.994 -1.98 -2.17051
+-406.869 -1.35178 -1.03339
+-408.331 -0.734996 -0.00108928
+-409.332 -0.146937 0.912147
+-409.852 0.397454 1.70098
+-409.9 0.885754 2.36412
+-409.508 1.30818 2.90159
+-408.723 1.65766 3.31377
+-407.606 1.92981 3.60161
+-406.223 2.12287 3.76735
+-404.641 2.23751 3.81514
+-402.927 2.27669 3.75146
+-401.145 2.2453 3.58521
+-399.355 2.14992 3.32762
+-397.607 1.99842 2.99226
+-395.952 1.79959 2.59487
+0 1.56279 2.15323
+116.977 0.015604 0.0270631
+117.136 0.0280542 0.0989251
+117.328 0.0406333 0.174296
+117.551 0.0528881 0.249991
+117.803 0.0642796 0.322664
+118.078 0.0742003 0.388846
+118.373 0.0819961 0.445007
+118.679 0.0869909 0.487661
+118.985 0.0885139 0.513494
+119.281 0.0859321 0.519479
+119.553 0.0786867 0.502966
+119.786 0.0663341 0.461737
+119.964 0.0485895 0.394043
+120.072 0.025368 0.298673
+120.096 -0.0031803 0.175137
+120.024 -0.0366485 0.0240448
+119.846 -0.0743669 -0.152248
+119.554 -0.115414 -0.348722
+119.144 -0.158641 -0.556627
+118.608 -0.202687 -0.762491
+117.938 -0.245983 -0.947632
+117.122 -0.286693 -1.08865
+116.143 -0.322599 -1.15933
+114.984 -0.350897 -1.13424
+113.634 -0.36795 -0.993498
+112.1 -0.369045 -0.72755
+110.419 -0.348242 -0.339799
+108.67 -0.298341 0.15566
+106.979 -0.210546 0.742556
+105.509 -0.0717467 1.41374
+104.469 0.148901 2.16826
+104.173 0.553626 2.94554
+105.299 1.50348 3.38351
+109.553 4.19475 2.19452
+120.885 12.1837 -4.06077
+146.545 34.6707 -22.5676
+194.968 91.4696 -64.398
+264.865 214.856 -138.799
+325.025 432.752 -237.898
+311.521 712.39 -321.929
+197.65 892.656 -339.645
+86.8353 779.893 -290.963
+29.7596 520.779 -207.056
+9.46953 298.794 -127.581
+3.00856 161.302 -71.8147
+0.978779 84.9964 -38.6395
+0.42027 44.2494 -20.3751
+0.200918 23.1146 -10.6569
+0.0828527 12.0951 -5.56139
+0.0442721 6.27683 -2.89653
+0.0260199 3.26597 -1.50645
+0.0105149 1.71024 -0.784342
+0.00489614 0.888315 -0.408724
+0.003032 0.462805 -0.213434
+0.000753075 0.245549 -0.112301
+-0.000272241 0.130478 -0.0597367
+-0.000511879 0.0703165 -0.0323364
+-0.000903286 0.0399988 -0.0181861
+-0.00114001 0.0243609 -0.0110483
+-0.0012391 0.0172375 -0.00783698
+-0.00137375 0.0159714 -0.00722458
+-0.00147278 0.0196729 -0.00896443
+-0.00178113 0.030411 -0.0138069
+-0.00226145 0.0522177 -0.023803
+-0.00258919 0.0941441 -0.0433696
+-0.00404826 0.177272 -0.0812676
+-0.00703467 0.336488 -0.154262
+-0.0095583 0.639449 -0.295479
+-0.0178095 1.23617 -0.569535
+-0.0392775 2.39215 -1.09915
+-0.0645079 4.59363 -2.12273
+-0.122149 8.88294 -4.10379
+-0.296111 17.2147 -7.92334
+-0.623847 33.1132 -15.2786
+-1.49392 63.9214 -29.4264
+-4.65212 123.979 -56.2807
+-14.6887 237.891 -105.63
+-46.2562 446.079 -189.627
+-134.962 786.401 -310.858
+-306.752 1187.62 -440.905
+-482.326 1365.62 -519.129
+-501.582 1090.51 -495.245
+-407.196 659.552 -366.27
+-299.462 324.053 -212.284
+-226.217 135.576 -96.9545
+-188.159 50.1583 -33.02
+-171.447 17.1528 -5.52498
+-164.84 5.80739 3.30539
+-162.583 2.11962 4.78883
+-162.407 0.836542 4.13718
+-163.503 0.266033 3.14205
+-165.472 -0.0718508 2.19213
+-167.976 -0.30172 1.27596
+-170.693 -0.458359 0.355769
+-173.363 -0.557704 -0.544781
+-175.82 -0.612449 -1.35584
+-177.994 -0.633919 -1.99991
+-179.897 -0.631399 -2.42259
+-181.579 -0.611627 -2.60657
+-183.102 -0.578931 -2.57038
+-184.513 -0.535841 -2.35764
+-185.832 -0.483873 -2.02313
+-187.055 -0.424229 -1.62059
+-188.158 -0.358264 -1.1946
+-189.109 -0.287699 -0.777125
+-189.874 -0.214606 -0.387705
+-190.431 -0.141273 -0.0360609
+-190.766 -0.0699995 0.274497
+-190.88 -0.0029128 0.543873
+-190.784 0.0581714 0.772887
+-190.5 0.111827 0.96204
+-190.054 0.157038 1.11119
+-189.476 0.193186 1.21983
+-188.796 0.22001 1.28754
+-188.045 0.237567 1.3145
+-187.252 0.246187 1.30177
+-186.442 0.246426 1.25146
+-185.641 0.239025 1.16683
+-184.868 0.224856 1.05228
+-184.143 0.204864 0.913413
+0 0.180018 0.75699
+27.8472 0.000411504 -0.0182345
+27.8878 0.00136525 -0.0143738
+27.9363 0.00230107 -0.0103225
+27.9927 0.00318735 -0.00638675
+28.0564 0.00398264 -0.00283746
+28.1268 0.00463732 9.22499e-05
+28.2027 0.00509607 0.00220811
+28.2824 0.00530003 0.00336174
+28.3637 0.00518917 0.0034587
+28.4439 0.00470504 0.00246181
+28.5198 0.00379449 0.000385252
+28.5876 0.00241417 -0.00272137
+28.6433 0.000535626 -0.00679547
+28.6827 -0.00184981 -0.0117803
+28.7018 -0.00472761 -0.0176241
+28.6968 -0.00805937 -0.0242421
+28.6643 -0.0117859 -0.031426
+28.6013 -0.0158339 -0.0387015
+28.5052 -0.0201256 -0.0451526
+28.3732 -0.0245858 -0.0492625
+28.2017 -0.0291422 -0.0488454
+27.9866 -0.0337118 -0.0411657
+27.7232 -0.0381662 -0.023326
+27.4071 -0.0422744 0.0070473
+27.0361 -0.0456308 0.0509109
+26.6136 -0.0475844 0.106962
+26.1513 -0.0471921 0.171273
+25.6729 -0.0431761 0.237818
+25.2149 -0.0336258 0.299771
+24.83 -0.0140829 0.349164
+24.6039 0.0319512 0.365225
+24.7353 0.17354 0.260326
+25.8164 0.686569 -0.301076
+29.6249 2.57717 -2.39617
+40.8932 9.1372 -8.91532
+69.981 29.8435 -26.1479
+133.39 87.9169 -64.1294
+242.19 228.536 -130.378
+366.1 508.539 -211.025
+398.568 922.176 -253.832
+249.216 1250.22 -216.166
+96.9646 1105.63 -179.599
+26.4949 725.605 -139.532
+6.50063 408.011 -92.9953
+1.4076 218.368 -54.2846
+0.139492 114.789 -29.8231
+0.0901134 59.6398 -16.0466
+0.0634475 31.233 -8.46399
+-0.00318788 16.4047 -4.43738
+0.00676904 8.50599 -2.34173
+0.0125317 4.43144 -1.22483
+0.00010962 2.33109 -0.636144
+-0.000283131 1.20896 -0.334859
+0.00205562 0.628904 -0.176135
+8.22729e-05 0.335445 -0.0919232
+-0.000432013 0.178032 -0.0491815
+0.000120558 0.0954583 -0.026871
+-0.000177182 0.0545573 -0.0149122
+-0.000339605 0.0331981 -0.00907192
+-0.000268357 0.0233615 -0.00648086
+-0.00030119 0.0216775 -0.00593475
+-0.000189731 0.0266727 -0.00743877
+-0.000430871 0.0415097 -0.0113536
+-0.000749147 0.0712657 -0.0195847
+-3.83838e-05 0.127959 -0.0361054
+-0.000919616 0.242191 -0.0669524
+-0.00329134 0.459847 -0.126493
+6.09411e-05 0.869479 -0.244047
+-0.00158129 1.68392 -0.466455
+-0.0182735 3.26163 -0.89166
+-0.00835125 6.23392 -1.7258
+0.000889341 12.042 -3.31364
+-0.0983488 23.3491 -6.31204
+-0.134978 44.7275 -12.1113
+-0.250655 86.1201 -23.1006
+-2.24476 167.334 -43.2475
+-10.0592 321.74 -79.4245
+-40.7582 608.488 -137.288
+-148.767 1094.4 -207.706
+-381.336 1680.83 -269.85
+-607.716 1908.2 -328.383
+-554.839 1407.78 -387.978
+-363.461 772.734 -321.947
+-197.937 343.605 -197.071
+-103.329 129.868 -95.2728
+-61.0346 42.9628 -37.8399
+-45.1169 12.7125 -12.4488
+-39.8307 3.44611 -3.19911
+-38.2766 0.888093 -0.367898
+-38.0091 0.224266 0.362666
+-38.2717 0.0432528 0.517561
+-38.8178 -0.0204469 0.528017
+-39.5234 -0.0515118 0.48547
+-40.2939 -0.0684581 0.404892
+-41.0552 -0.0764018 0.296788
+-41.7586 -0.0782101 0.17792
+-42.3814 -0.0762457 0.0666486
+-42.9219 -0.0723549 -0.0227653
+-43.3906 -0.0677368 -0.0831207
+-43.8019 -0.0629697 -0.114282
+-44.168 -0.05817 -0.121248
+-44.4958 -0.0532017 -0.111519
+-44.7862 -0.0478649 -0.0927345
+-45.0362 -0.0420238 -0.0710899
+-45.2406 -0.0356666 -0.0506452
+-45.3943 -0.0289062 -0.0333666
+-45.4939 -0.021947 -0.0196201
+-45.5389 -0.0150365 -0.00883227
+-45.5312 -0.00842068 -9.91969e-05
+-45.4752 -0.00231118 0.00738169
+-45.3771 0.00313089 0.0140935
+-45.2441 0.00779855 0.0201625
+-45.0836 0.0116336 0.025435
+-44.9032 0.0146175 0.0295998
+-44.71 0.016763 0.0323029
+-44.5105 0.0181057 0.033235
+-44.3106 0.018699 0.0321878
+-44.1153 0.018608 0.0290935
+-43.929 0.0179031 0.0240585
+-43.7555 0.0166534 0.0173997
+0 0.0149209 0.00965713
+4.41469 -0.000128822 -0.00562533
+4.42187 -8.16457e-05 -0.00606509
+4.43041 -3.93857e-05 -0.00652744
+4.44028 -3.14576e-06 -0.00702575
+4.45146 2.4992e-05 -0.00756273
+4.46382 4.20822e-05 -0.00813038
+4.47721 4.45424e-05 -0.00871075
+4.49136 2.83166e-05 -0.00927618
+4.50594 -1.09936e-05 -0.00978956
+4.5205 -7.7948e-05 -0.0102055
+4.53451 -0.000176981 -0.0104729
+4.54732 -0.000311986 -0.0105392
+4.55826 -0.000485805 -0.010356
+4.56656 -0.000699739 -0.00988404
+4.57148 -0.000953239 -0.00909614
+4.57228 -0.00124399 -0.00797552
+4.56827 -0.0015685 -0.00650727
+4.5588 -0.0019233 -0.0046629
+4.54324 -0.00230631 -0.00238064
+4.52095 -0.00271804 0.000452296
+4.49118 -0.00316154 0.00400568
+4.45312 -0.00364004 0.0084881
+4.40587 -0.00415138 0.0140942
+4.34871 -0.00467891 0.0209149
+4.28135 -0.00517995 0.0288228
+4.20454 -0.00557436 0.0373691
+4.12056 -0.00573452 0.0457406
+4.03384 -0.00546142 0.0528024
+3.95165 -0.00433662 0.0570554
+3.88694 -0.00087785 0.0555319
+3.87186 0.0116491 0.0377354
+4.01521 0.0639452 -0.0385891
+4.71156 0.286824 -0.327722
+7.2962 1.19217 -1.31574
+15.7553 4.60054 -4.27465
+40.1153 16.3124 -11.7164
+99.9051 52.4657 -26.098
+217.501 150.314 -41.6452
+377.809 372.441 -24.1895
+454.958 756.917 96.6628
+277.128 1136.23 312.135
+96.6576 1016.1 288.792
+21.796 652.354 159.006
+4.75926 358.691 71.5252
+0.851151 190.752 34.0004
+-0.138226 100.215 16.7833
+0.0512649 51.9429 8.10442
+0.0646011 27.2969 4.23143
+-0.0275771 14.4026 2.25678
+0.0010651 7.44918 1.10966
+0.0154452 3.88532 0.573846
+-0.00320518 2.05613 0.316288
+-0.00198593 1.06304 0.156135
+0.00286414 0.551598 0.07827
+-0.000132718 0.296537 0.0451404
+-0.000710319 0.157053 0.0232479
+0.000425437 0.0836079 0.0115872
+8.87655e-06 0.0481768 0.00732507
+-0.000208258 0.0292992 0.00443797
+-4.10253e-05 0.0204718 0.00294247
+-5.87419e-05 0.0190498 0.00285457
+0.000182805 0.0233675 0.00331246
+-0.000157178 0.0366844 0.00556742
+-0.000581309 0.0629203 0.00945317
+0.000884115 0.112164 0.0154956
+-0.000230182 0.21388 0.0317276
+-0.0037709 0.406415 0.0613841
+0.00313811 0.762738 0.10785
+0.00289617 1.48175 0.218369
+-0.0220767 2.87673 0.441584
+0.00136673 5.46433 0.80533
+0.0340019 10.5475 1.57763
+-0.102573 20.4946 3.22322
+-0.0710371 39.0632 6.07647
+0.161977 74.9563 11.7995
+-1.41315 145.958 24.747
+-7.35725 280.662 50.713
+-33.4283 534.137 108.231
+-147.736 982.346 242.984
+-422.078 1541.34 442.602
+-690.116 1729.2 478.139
+-569.084 1151.71 148.066
+-323.608 563.97 -36.7422
+-145.992 225.22 -62.688
+-57.3974 77.2532 -38.5982
+-22.2526 23.4169 -16.8838
+-10.4645 6.38144 -5.94891
+-7.00302 1.58361 -1.75406
+-6.10172 0.362707 -0.41528
+-5.91882 0.0771659 -0.0410755
+-5.94245 0.0131938 0.0575439
+-6.03943 -0.00222431 0.0849842
+-6.16896 -0.00701056 0.0916951
+-6.31081 -0.00883992 0.0885307
+-6.45126 -0.00934313 0.0788238
+-6.58138 -0.00908334 0.0653213
+-6.69679 -0.00842671 0.0507611
+-6.79669 -0.00764251 0.0373372
+-6.88251 -0.00689821 0.026326
+-6.95648 -0.00626506 0.0180687
+-7.02065 -0.00574249 0.0122107
+-7.07633 -0.0052904 0.00804001
+-7.12396 -0.00485845 0.00479524
+-7.16336 -0.0044062 0.00187451
+-7.19402 -0.00391251 -0.00107323
+-7.21549 -0.00337618 -0.00415301
+-7.22754 -0.00281105 -0.007288
+-7.23035 -0.00223889 -0.0103054
+-7.22452 -0.00168291 -0.0130148
+-7.21094 -0.00116306 -0.0152634
+-7.19077 -0.000693773 -0.0169616
+-7.16528 -0.000283631 -0.0180862
+-7.13574 6.37015e-05 -0.0186677
+-7.10341 0.000348129 -0.0187718
+-7.06945 0.000571863 -0.0184829
+-7.03489 0.00073848 -0.0178904
+-7.00064 0.000852279 -0.0170792
+-6.96749 0.000917736 -0.016123
+-6.93609 0.000938873 -0.0150767
+-6.907 0.000918506 -0.01397
+0 0.000857815 -0.0128032
+0.536895 -2.21991e-05 -0.000977134
+0.537875 -2.17415e-05 -0.00111328
+0.539032 -2.18488e-05 -0.0012563
+0.540367 -2.24766e-05 -0.00140515
+0.541876 -2.36517e-05 -0.00155713
+0.543545 -2.54683e-05 -0.00170792
+0.545356 -2.8072e-05 -0.00185169
+0.547276 -3.16518e-05 -0.00198128
+0.549263 -3.64366e-05 -0.00208831
+0.55126 -4.26887e-05 -0.00216345
+0.553198 -5.06887e-05 -0.00219686
+0.554994 -6.07085e-05 -0.00217881
+0.556556 -7.29743e-05 -0.00210046
+0.557782 -8.76306e-05 -0.00195466
+0.558568 -0.00010472 -0.00173648
+0.558809 -0.000124194 -0.00144335
+0.558402 -0.000145979 -0.00107448
+0.557249 -0.00017008 -0.00062956
+0.555252 -0.000196718 -0.00010702
+0.552311 -0.000226431 0.000497524
+0.548315 -0.000260059 0.00119164
+0.543146 -0.000298506 0.001984
+0.536684 -0.000342186 0.00287889
+0.528834 -0.000390137 0.00386693
+0.519573 -0.000438892 0.00491376
+0.509014 -0.000481303 0.00594982
+0.497484 -0.000505107 0.00686529
+0.485631 -0.000487626 0.00750493
+0.474687 -0.00036407 0.00760787
+0.467746 0.000149213 0.00642844
+0.475895 0.00244862 0.000998076
+0.544818 0.0132091 -0.0204503
+0.858373 0.0623553 -0.0990693
+2.09617 0.274628 -0.353474
+6.5006 1.13055 -1.02217
+20.4675 4.32413 -2.13486
+58.8319 15.2227 -1.107
+145.269 48.5651 16.8515
+285.988 136.534 102.653
+385.525 320.173 359.271
+226.74 553.46 782.737
+69.9519 499.275 710.893
+12.5741 311.32 421.074
+2.82846 166.69 213.438
+0.540507 88.2792 110.775
+-0.203025 46.4039 57.6553
+0.0763615 23.949 29.2898
+0.0804395 12.6412 15.4764
+-0.0323014 6.70647 8.24439
+0.00227441 3.45058 4.18629
+0.0180911 1.80174 2.18336
+-0.00424981 0.961526 1.17866
+-0.00235729 0.494278 0.598427
+0.00338808 0.255432 0.30667
+-0.000232861 0.138967 0.17007
+-0.000843527 0.0733207 0.089019
+0.000541187 0.0386141 0.0460654
+4.58156e-05 0.0225495 0.0275699
+-0.000202459 0.0137023 0.0167269
+-7.99892e-07 0.00947696 0.0114037
+-2.8172e-05 0.0088634 0.0107872
+0.00026283 0.0108072 0.0129633
+-0.000130882 0.017182 0.0209994
+-0.000635576 0.0294255 0.0358828
+0.00115441 0.0518379 0.0618283
+-7.45803e-05 0.0999704 0.121509
+-0.00436712 0.190325 0.23253
+0.00383792 0.353185 0.423805
+0.00416017 0.689561 0.835905
+-0.0258004 1.34491 1.64812
+0.000370769 2.53275 3.068
+0.0402216 4.88692 5.93598
+-0.125808 9.54096 11.7405
+-0.101138 18.0756 22.1455
+0.269829 34.5404 42.3261
+-0.920745 67.5381 84.1482
+-4.35661 129.724 163.269
+-19.2923 247.907 318.679
+-106.847 468.224 636.003
+-344.582 755.964 1079.91
+-583.215 840.088 1190.55
+-429.572 485.737 545.911
+-215.481 206.116 155.045
+-85.6171 72.5509 25.0936
+-29.0276 22.3558 -1.679
+-8.95457 6.19502 -3.07798
+-2.84055 1.56642 -1.42151
+-1.1952 0.364602 -0.47068
+-0.798494 0.0786689 -0.125308
+-0.715948 0.0157593 -0.0237783
+-0.708383 0.00271265 0.00302605
+-0.719975 1.01598e-05 0.0101945
+-0.737596 -0.000624527 0.012262
+-0.757141 -0.000799565 0.0125439
+-0.776547 -0.000824539 0.0118497
+-0.794577 -0.000778591 0.0105624
+-0.81061 -0.000700425 0.00899816
+-0.824493 -0.000615999 0.00740891
+-0.836373 -0.000540988 0.00595239
+-0.846516 -0.00048176 0.00469013
+-0.855179 -0.000437742 0.00361082
+-0.86254 -0.000404503 0.00266431
+-0.86868 -0.000376564 0.0017931
+-0.873606 -0.000349339 0.000953754
+-0.877291 -0.000320054 0.000126218
+-0.87971 -0.000287829 -0.000686649
+-0.880869 -0.000253232 -0.00146572
+-0.880819 -0.000217631 -0.00218442
+-0.879658 -0.000182588 -0.00281669
+-0.877519 -0.000149441 -0.00334247
+-0.874562 -0.0001191 -0.00375024
+-0.870955 -9.20331e-05 -0.00403704
+-0.866866 -6.83512e-05 -0.00420701
+-0.862458 -4.79414e-05 -0.0042693
+-0.857876 -3.05785e-05 -0.00423616
+-0.853251 -1.60026e-05 -0.0041214
+-0.848698 -3.96721e-06 -0.00393923
+-0.844312 5.72391e-06 -0.00370335
+-0.840176 1.31713e-05 -0.003426
+-0.836357 1.83229e-05 -0.003117
+0 2.09525e-05 -0.00278322
+0.0473403 0 -0.000109007
+0.0474353 0 -0.000126275
+0.0475472 0 -0.000144407
+0.0476758 0 -0.000163144
+0.047821 0 -0.000182061
+0.0479815 0 -0.000200571
+0.0481556 0 -0.000217939
+0.0483404 0 -0.000233301
+0.048532 0 -0.000245685
+0.0487252 0 -0.000254038
+0.0489134 0 -0.000257275
+0.0490889 0 -0.000254339
+0.0492429 0 -0.000244278
+0.0493657 0 -0.000226321
+0.0494471 0 -0.000199941
+0.0494767 0 -0.000164885
+0.0494441 0 -0.000121149
+0.0493393 0 -6.89022e-05
+0.0491521 0 -8.36927e-06
+0.0488721 0 6.02676e-05
+0.0484881 0 0.000136885
+0.0479884 0 0.000221254
+0.0473616 0 0.000312615
+0.0465992 0 0.000408992
+0.0456997 0 0.000506359
+0.044675 0 0.00059789
+0.0435585 0 0.000673423
+0.0424196 0 0.000717797
+0.0414206 0 0.0006995
+0.0411017 0 0.000511238
+0.0437838 0 -0.000280808
+0.0599116 0 -0.00329949
+0.134309 0 -0.0134812
+0.444841 0 -0.0398047
+1.63295 0 -0.0625587
+5.75427 0 0.227539
+18.4145 0 2.80579
+51.2995 0 16.9484
+116.113 0 76.6114
+181.18 0 269.403
+102.006 0 661.181
+27.105 0 600.018
+3.42533 0 350.556
+0.996301 0 177.135
+0.231559 0 93.2161
+-0.134179 0 48.9392
+0.0540385 0 24.8654
+0.0506929 0 13.226
+-0.0212418 0 7.0869
+0.00155904 0 3.58496
+0.0112464 0 1.87396
+-0.00292337 0 1.01966
+-0.00150072 0 0.515281
+0.00214221 0 0.26332
+-0.000182528 0 0.147637
+-0.000541366 0 0.0770142
+0.000349456 0 0.0394643
+3.28251e-05 0 0.0238992
+-0.000122721 0 0.0144867
+4.32818e-06 0 0.00978257
+-1.80056e-05 0 0.00929325
+0.000166011 0 0.0111151
+-8.19571e-05 0 0.0182178
+-0.000405433 0 0.0310934
+0.000748076 0 0.0530195
+7.00815e-06 0 0.105259
+-0.00275386 0 0.201765
+0.002458 0 0.36391
+0.00298425 0 0.720346
+-0.0160094 0 1.4254
+0.000165169 0 2.63173
+0.0268657 0 5.08312
+-0.0786536 0 10.086
+-0.0701138 0 18.8999
+0.186344 0 35.8813
+-0.398322 0 71.2917
+-1.51764 0 136.999
+-5.27263 0 263.639
+-41.447 0 527.902
+-154.827 0 908.607
+-273.566 0 1002.25
+-174.091 0 407.975
+-75.9678 0 115.375
+-26.7589 0 25.2333
+-8.14597 0 4.09847
+-2.23715 0 0.321109
+-0.590095 0 -0.087701
+-0.177594 0 -0.0531141
+-0.0836659 0 -0.0170833
+-0.0644667 0 -0.00388933
+-0.0616474 0 -0.00014277
+-0.0624153 0 0.000853448
+-0.0640696 0 0.00113512
+-0.0659588 0 0.00120062
+-0.0678436 0 0.00116643
+-0.0695995 0 0.00107307
+-0.0711647 0 0.00094751
+-0.072522 0 0.000810546
+-0.0736822 0 0.000675801
+-0.074668 0 0.000549632
+-0.0755028 0 0.000432832
+-0.0762032 0 0.000323158
+-0.0767782 0 0.000217691
+-0.0772304 0 0.000114445
+-0.0775595 0 1.3067e-05
+-0.0777655 0 -8.521e-05
+-0.077851 0 -0.000178083
+-0.0778228 0 -0.000262854
+-0.077691 0 -0.000337031
+-0.0774693 0 -0.000398741
+-0.0771729 0 -0.000446909
+-0.0768178 0 -0.000481248
+-0.0764199 0 -0.000502131
+-0.0759941 0 -0.000510421
+-0.0755541 0 -0.000507313
+-0.0751118 0 -0.0004942
+-0.0746777 0 -0.000472574
+-0.0742606 0 -0.000443941
+-0.073868 0 -0.000409729
+-0.0735062 0 -0.000371201
+0 0 -0.0003294
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0.339232 0.000394061 -0.00107124
+0.339915 0.000442714 -0.00125247
+0.340718 0.000497275 -0.00144373
+0.34164 0.000555765 -0.00164148
+0.342682 0.000616513 -0.00184077
+0.343839 0.000678151 -0.00203521
+0.345098 0.000739543 -0.00221717
+0.346443 0.000799801 -0.00237794
+0.347847 0.000858343 -0.00250797
+0.349275 0.000914942 -0.00259717
+0.350684 0.000969705 -0.00263538
+0.352019 0.00102297 -0.0026129
+0.353221 0.00107513 -0.00252115
+0.354222 0.00112648 -0.00235335
+0.35495 0.00117714 -0.00210507
+0.355332 0.00122733 -0.00177465
+0.355296 0.00127794 -0.00136319
+0.35477 0.0013315 -0.000874322
+0.353682 0.00139332 -0.000313662
+0.351958 0.0014724 0.000311733
+0.34952 0.00158127 0.000993444
+0.346287 0.00173418 0.00172086
+0.342178 0.00194261 0.00247903
+0.337133 0.00220811 0.00324516
+0.331142 0.00251301 0.00398443
+0.324283 0.00281094 0.00464658
+0.316775 0.00301659 0.00516437
+0.309071 0.00297397 0.00544787
+0.302177 0.00226046 0.00533344
+0.299361 -0.000963428 0.00429036
+0.315071 -0.0160839 9.32396e-05
+0.418297 -0.0903488 -0.0161767
+0.928671 -0.449251 -0.0746044
+3.2386 -2.10594 -0.243799
+12.9794 -9.33342 -0.46998
+50.991 -38.961 1.17704
+185.9 -152.203 20.0998
+606.056 -549.861 146.654
+1659.26 -1793.96 817.361
+3225.02 -5020.61 3724.26
+1706.27 -10544.3 12724.2
+360.072 -9586.93 11533.1
+12.3871 -5799.46 6497.7
+12.8878 -3036.76 3213.4
+3.40533 -1620.01 1722.7
+-3.93194 -858.806 915.083
+1.15654 -442.666 462.443
+1.11299 -236.015 249.284
+-0.618483 -126.49 135.308
+0.0095477 -64.6869 67.6438
+0.266682 -33.8776 35.4944
+-0.0845465 -18.3161 19.687
+-0.0412136 -9.33842 9.81037
+0.0534105 -4.79748 4.96618
+-0.00574309 -2.65627 2.86306
+-0.0143066 -1.39211 1.47769
+0.00896756 -0.720085 0.736275
+0.000963522 -0.42837 0.460273
+-0.00306468 -0.259325 0.27784
+0.000135112 -0.176065 0.182648
+-0.000492132 -0.165845 0.175766
+0.00416155 -0.200745 0.207207
+-0.00225049 -0.326416 0.351046
+-0.0103776 -0.558911 0.598131
+0.0197924 -0.968476 0.991325
+0.00171933 -1.90243 2.02576
+-0.0682926 -3.63492 3.9067
+0.0671646 -6.63324 6.8617
+0.0909355 -13.0435 13.74
+-0.37747 -25.6018 27.4956
+0.0505825 -47.5674 49.7711
+0.802131 -91.588 95.9195
+-1.72356 -179.725 192.337
+-1.42441 -336.662 355.263
+5.59777 -636.864 665.724
+-6.11735 -1246.04 1329.05
+-19.244 -2370.13 2520.26
+-20.1558 -4495.58 4760.13
+-551.996 -8684.71 9744.45
+-2581.98 -14450.5 17389.1
+-4851.43 -15930.1 19201.8
+-2479.58 -7583.09 5619.21
+-894.81 -2696.95 1227.56
+-269.377 -818.189 217.99
+-71.9766 -222.661 29.3591
+-17.7246 -55.5975 1.6666
+-4.28242 -12.8756 -0.654302
+-1.22921 -2.78128 -0.325041
+-0.58863 -0.562916 -0.0947448
+-0.466684 -0.106758 -0.0190771
+-0.450614 -0.0175058 0.00129244
+-0.456645 8.8713e-05 0.00679572
+-0.468095 0.00402432 0.00856084
+-0.480995 0.00497623 0.00912417
+-0.493815 0.00493523 0.0090514
+-0.505725 0.00443524 0.00854837
+-0.516306 0.00376204 0.007766
+-0.525436 0.00311174 0.0068286
+-0.533183 0.00259956 0.00582404
+-0.539702 0.00226634 0.00480167
+-0.545147 0.00209767 0.00378081
+-0.549637 0.00204867 0.00276422
+-0.553237 0.00206641 0.00175072
+-0.555971 0.00210537 0.000743755
+-0.557848 0.00213491 -0.000245026
+-0.558877 0.00213995 -0.00119642
+-0.559086 0.00211763 -0.00208679
+-0.558529 0.0020723 -0.00289208
+-0.557285 0.00201077 -0.00359139
+-0.555454 0.00193908 -0.00416931
+-0.553145 0.00186089 -0.00461694
+-0.550471 0.00177738 -0.00493175
+-0.547545 0.00168792 -0.00511672
+-0.544467 0.0015911 -0.00517913
+-0.541331 0.00148556 -0.00512946
+-0.538215 0.00137056 -0.00498037
+-0.535188 0.00124629 -0.00474584
+-0.532306 0.00111402 -0.00444046
+-0.529613 0.000976347 -0.00407867
+-0.527148 0.000837456 -0.00367403
+0 0.000703221 -0.00323871
+4.53335 0.00391524 -0.0112766
+4.54155 0.00422332 -0.0130999
+4.55123 0.00459612 -0.0150289
+4.56239 0.00501933 -0.0170344
+4.57504 0.0054843 -0.01907
+4.58909 0.00598729 -0.0210735
+4.60442 0.00652831 -0.0229673
+4.62079 0.00711075 -0.0246612
+4.63787 0.00774153 -0.0260537
+4.65523 0.00843072 -0.0270361
+4.67231 0.00919031 -0.0274974
+4.68845 0.0100319 -0.0273304
+4.7029 0.0109633 -0.02644
+4.71484 0.011986 -0.0247508
+4.7234 0.0130933 -0.0222133
+4.72772 0.0142733 -0.0188075
+4.72695 0.0155164 -0.0145406
+4.72026 0.0168273 -0.00944014
+4.70685 0.0182408 -0.00354371
+4.68588 0.0198333 0.0031112
+4.65644 0.0217233 0.0104897
+4.61756 0.0240496 0.018547
+4.56827 0.0269173 0.0271936
+4.5078 0.0303088 0.036238
+4.43594 0.0339707 0.0453156
+4.35357 0.037299 0.0538289
+4.26327 0.0392501 0.060927
+4.17005 0.0381908 0.0655079
+4.08303 0.0309416 0.065954
+4.02349 0.00689168 0.0581115
+4.06602 -0.0828732 0.0252544
+4.52959 -0.471419 -0.102944
+6.78305 -2.20855 -0.593237
+16.3144 -9.68169 -2.3091
+53.1292 -39.7711 -7.39924
+181.91 -151.645 -18.2317
+580.127 -530.738 -20.7891
+1618.77 -1677.67 106.02
+3668.32 -4658.07 917.215
+5719.91 -10763.4 4050.44
+3208 -18349.2 11099.5
+839.222 -16586.3 10079.1
+97.9348 -10419.6 5782.48
+27.3516 -5627.82 2875.08
+5.30711 -3001.82 1514.63
+-5.37441 -1587.82 797.351
+1.35914 -824.177 404.067
+1.46891 -436.661 216.013
+-0.805959 -232.317 116.347
+0.0102334 -119.884 58.5675
+0.355981 -62.695 30.655
+-0.108376 -33.4783 16.8052
+-0.0541432 -17.2327 8.43847
+0.0705853 -8.9095 4.29396
+-0.0072569 -4.84236 2.434
+-0.0187234 -2.5541 1.26247
+0.0117502 -1.34358 0.639088
+0.00108492 -0.78214 0.392006
+-0.00417921 -0.474033 0.236699
+0.000126583 -0.326896 0.157929
+-0.000629435 -0.305308 0.151006
+0.00561242 -0.373402 0.179378
+-0.00278426 -0.595475 0.298455
+-0.0136226 -1.02218 0.50999
+0.0258876 -1.80564 0.859477
+0.00170155 -3.48458 1.72785
+-0.090413 -6.63482 3.32455
+0.0883264 -12.3218 5.93358
+0.115047 -24.0394 11.8052
+-0.505019 -46.8163 23.4827
+0.0692356 -88.0958 43.0221
+1.03939 -169.664 83.0421
+-2.29038 -330.158 165.502
+-1.67793 -623.489 308.36
+7.51966 -1186.34 582.604
+-9.71975 -2305.15 1160.49
+-41.9832 -4397.97 2223.37
+-151.552 -8342.82 4275.49
+-1281.99 -15622.5 8704.23
+-4860.46 -25050.4 15258.3
+-8622.66 -27802.4 16825
+-5492.8 -16309.9 6142.83
+-2394.36 -7026.6 1386.25
+-841.981 -2504.7 159.222
+-257.302 -778.744 -30.2758
+-73.0306 -216.889 -26.0578
+-22.1531 -54.9332 -10.2413
+-9.54406 -12.7924 -3.06853
+-6.70687 -2.77374 -0.751684
+-6.15424 -0.563949 -0.11921
+-6.12003 -0.0919709 0.0432814
+-6.21778 0.0184799 0.0895491
+-6.35909 0.0519733 0.105626
+-6.51482 0.063398 0.109846
+-6.66908 0.0644436 0.106609
+-6.81206 0.0596933 0.0982749
+-6.93869 0.0524213 0.0869773
+-7.04773 0.0450561 0.0744972
+-7.14025 0.0390517 0.0620238
+-7.21835 0.0349368 0.0501246
+-7.28409 0.0325533 0.0388915
+-7.33891 0.0313689 0.0281607
+-7.38352 0.0307596 0.0177172
+-7.4181 0.0302025 0.00743196
+-7.44253 0.0293673 -0.00267889
+-7.45674 0.0281238 -0.0124614
+-7.46091 0.0264958 -0.0216707
+-7.45559 0.0245954 -0.0300324
+-7.44165 0.0225612 -0.0372976
+-7.42029 0.0205146 -0.0432805
+-7.39284 0.0185382 -0.047875
+-7.36072 0.0166734 -0.0510543
+-7.32531 0.014929 -0.0528587
+-7.28791 0.0132942 -0.0533796
+-7.24966 0.0117508 -0.0527432
+-7.2116 0.0102806 -0.0510976
+-7.17456 0.00887164 -0.0486012
+-7.13926 0.00752074 -0.0454143
+-7.10626 0.00623811 -0.0416895
+-7.07602 0.00505197 -0.0375632
+0 0.0040109 -0.0331496
+46.3325 0.0194082 -0.0809614
+46.4057 0.0167084 -0.091718
+46.4925 0.0144073 -0.103163
+46.5931 0.0125789 -0.115237
+46.7074 0.0113727 -0.127743
+46.8346 0.0110004 -0.140351
+46.9733 0.0117189 -0.152604
+47.1213 0.0138188 -0.163929
+47.2753 0.0176128 -0.173649
+47.4311 0.0234189 -0.181005
+47.5835 0.0315342 -0.185199
+47.7262 0.0421986 -0.18545
+47.8523 0.0555523 -0.181056
+47.9543 0.0715958 -0.17147
+48.0245 0.0901684 -0.156337
+48.0553 0.11096 -0.135504
+48.0397 0.133571 -0.108961
+47.971 0.157612 -0.0767259
+47.8427 0.182841 -0.0386794
+47.6481 0.209266 0.00557805
+47.3799 0.237164 0.0567818
+47.0297 0.266911 0.115859
+46.5886 0.298552 0.183504
+46.0493 0.331081 0.259442
+45.4091 0.3615 0.341508
+44.6751 0.383896 0.424816
+43.8697 0.388839 0.501492
+43.0363 0.363159 0.561256
+42.2441 0.288247 0.591943
+41.6069 0.125989 0.573606
+41.38 -0.257642 0.439483
+42.4019 -1.43834 -0.093596
+47.8305 -5.82811 -2.13682
+69.0887 -22.7435 -9.51206
+143.346 -84.8209 -33.4819
+375.078 -294.148 -100.945
+1002.21 -928.488 -255.485
+2393.71 -2611.44 -499.368
+4619.95 -6349.79 -558.706
+6145.95 -12669.8 477.126
+3619.47 -18740.2 3229.61
+1122.18 -16758.7 2958.5
+201.105 -10826.9 1487.37
+42.9383 -6000.33 602.195
+6.86184 -3211.85 280.105
+-4.29203 -1696.86 136.974
+0.715784 -883.992 62.9113
+1.07163 -466.1 33.3142
+-0.63439 -246.517 18.1622
+-0.0144625 -127.833 8.43795
+0.275167 -66.7697 4.35894
+-0.0787965 -35.3479 2.53987
+-0.043174 -18.2952 1.18304
+0.0541628 -9.49786 0.569294
+-0.00458421 -5.1001 0.361629
+-0.014509 -2.6997 0.178776
+0.00864746 -1.43609 0.0809433
+0.000566045 -0.82493 0.0581964
+-0.00363962 -0.500184 0.0347954
+-0.000364531 -0.348616 0.021388
+-0.000822064 -0.324063 0.0220672
+0.00392591 -0.398519 0.0236822
+-0.00269996 -0.627281 0.0439992
+-0.0108641 -1.07887 0.0743114
+0.0191025 -1.92823 0.108129
+-0.000907459 -3.67821 0.245364
+-0.0700869 -6.99225 0.487993
+0.0690717 -13.1346 0.781498
+0.0811814 -25.4966 1.66345
+-0.390389 -49.441 3.53784
+0.0840353 -93.8618 6.09689
+0.815958 -180.865 12.0463
+-1.68848 -350.43 26.0005
+-0.862264 -666.124 47.8846
+5.81647 -1273.37 92.1547
+-12.2002 -2465.92 203.533
+-66.6024 -4713.84 420.987
+-309.223 -8911.89 919.922
+-1713.24 -16265.7 2290.18
+-5496.42 -25380 4555.45
+-9293.06 -28497.4 4969.78
+-6939.47 -19276.7 761.262
+-3552.82 -9619.49 -830.499
+-1461.72 -3915.35 -743.145
+-536.499 -1367.72 -374.835
+-203.532 -422.148 -144.591
+-100.45 -117.565 -46.3986
+-72.0494 -30.2775 -12.6696
+-64.991 -7.51607 -2.73139
+-63.6499 -1.86397 -0.0820901
+-63.9696 -0.347618 0.632891
+-64.9296 0.196139 0.867307
+-66.1972 0.460628 0.950671
+-67.5854 0.592484 0.947635
+-68.959 0.636806 0.880038
+-70.2286 0.624394 0.770207
+-71.3496 0.582273 0.641863
+-72.3131 0.531364 0.514614
+-73.1328 0.48452 0.400508
+-73.8304 0.446857 0.303783
+-74.4263 0.417797 0.222833
+-74.9336 0.3937 0.15303
+-75.3576 0.370227 0.0892961
+-75.6973 0.343948 0.0278404
+-75.949 0.31308 -0.0330975
+-76.1092 0.277521 -0.0933121
+-76.1773 0.238439 -0.1512
+-76.1561 0.197686 -0.204511
+-76.0528 0.157252 -0.251031
+-75.8774 0.118866 -0.289056
+-75.642 0.0837987 -0.317614
+-75.3597 0.0528283 -0.33648
+-75.0437 0.026308 -0.34605
+-74.7063 0.00428033 -0.347163
+-74.3587 -0.0134143 -0.340926
+-74.0107 -0.0270524 -0.328571
+-73.6706 -0.0369655 -0.31135
+-73.3453 -0.0434909 -0.290444
+-73.0403 -0.0469187 -0.266884
+-72.7603 -0.0474336 -0.241476
+0 -0.0450722 -0.214745
+377.082 -0.0531122 -0.358129
+377.594 -0.156633 -0.353214
+378.208 -0.260236 -0.349149
+378.923 -0.360164 -0.348443
+379.736 -0.451774 -0.352915
+380.64 -0.529716 -0.363685
+381.624 -0.58815 -0.381172
+382.667 -0.620969 -0.405036
+383.744 -0.622054 -0.434163
+384.822 -0.585581 -0.466718
+385.861 -0.506402 -0.500336
+386.813 -0.380481 -0.532447
+387.628 -0.205366 -0.560689
+388.252 0.0193677 -0.583277
+388.632 0.291789 -0.599135
+388.719 0.607484 -0.607576
+388.468 0.959709 -0.607359
+387.843 1.33981 -0.595098
+386.806 1.73783 -0.563268
+385.321 2.14301 -0.498352
+383.345 2.54389 -0.380017
+380.826 2.92743 -0.182361
+377.703 3.27692 0.121783
+373.919 3.56824 0.553218
+369.45 3.76518 1.11643
+364.336 3.81453 1.79028
+358.729 3.64297 2.52442
+352.927 3.15678 3.24662
+347.391 2.2418 3.88203
+342.756 0.744422 4.36537
+339.945 -1.64566 4.5639
+340.831 -5.8995 3.83629
+350.781 -15.4967 -0.582633
+386.485 -42.4272 -18.4166
+495.424 -124.28 -78.3958
+791.866 -365.21 -251.527
+1487.07 -1010.93 -676.894
+2799.63 -2519.38 -1535
+4509.77 -5428.08 -2842.88
+5225.82 -9591.93 -4047.8
+3192.3 -12768.4 -4154.4
+1147.9 -11260.1 -3633.82
+278.132 -7425.75 -2670.88
+65.9763 -4205.73 -1675.44
+13.9657 -2264.52 -949.606
+0.135157 -1196.31 -516.542
+1.15474 -624.307 -276.751
+0.96899 -327.831 -146.547
+-0.165635 -172.477 -77.3428
+0.0796052 -89.6136 -40.8059
+0.205713 -46.7381 -21.3826
+-0.0146523 -24.583 -11.1807
+-0.0114923 -12.7588 -5.87443
+0.0360855 -6.6405 -3.08107
+0.00010357 -3.53688 -1.61916
+-0.00812019 -1.87578 -0.864873
+0.00324576 -1.00565 -0.468678
+-0.00203452 -0.573146 -0.261416
+-0.00491497 -0.347666 -0.15871
+-0.00347365 -0.244248 -0.11229
+-0.00405711 -0.226517 -0.102898
+-0.00183767 -0.279142 -0.129035
+-0.0061734 -0.435157 -0.199143
+-0.011725 -0.749292 -0.343615
+0.00296017 -1.34833 -0.630693
+-0.011694 -2.55155 -1.17896
+-0.0546125 -4.84811 -2.22771
+0.0137588 -9.1774 -4.26958
+-0.00211413 -17.7608 -8.18645
+-0.296357 -34.3759 -15.6625
+-0.0816388 -65.7012 -30.1012
+0.182835 -126.745 -57.6977
+-1.48646 -245.219 -109.854
+-1.63753 -468.867 -209.216
+-0.708456 -900.051 -397.352
+-22.6402 -1740.67 -746.56
+-102.331 -3329.97 -1383.6
+-428.371 -6260.49 -2462.65
+-1759.8 -11183.9 -3958.04
+-4875.53 -17107.3 -5426.83
+-7952.91 -19494.5 -6253.91
+-6827.03 -14660.1 -6130.43
+-4202.73 -8263.07 -4302.67
+-2214.45 -3796.08 -2304.61
+-1180.76 -1496.82 -999.867
+-750.868 -527.679 -362.205
+-596.933 -174.856 -109.094
+-546.76 -58.9491 -24.6998
+-531.724 -22.1111 -0.809247
+-529.176 -9.05568 5.00643
+-532.399 -2.93306 6.32599
+-539.067 0.813351 6.5791
+-547.78 3.32675 6.33162
+-557.348 4.94713 5.61882
+-566.814 5.87312 4.52635
+-575.541 6.28855 3.24087
+-583.23 6.3614 1.9768
+-589.852 6.22495 0.904953
+-595.535 5.96797 0.116425
+-600.461 5.63749 -0.378273
+-604.787 5.25006 -0.627406
+-608.603 4.80573 -0.708035
+-611.927 4.30045 -0.699036
+-614.725 3.73435 -0.663072
+-616.94 3.1155 -0.638809
+-618.514 2.45985 -0.64155
+-619.415 1.78893 -0.669093
+-619.643 1.12649 -0.709521
+-619.233 0.495379 -0.748377
+-618.248 -0.0847171 -0.773731
+-616.773 -0.598558 -0.778706
+-614.902 -1.03565 -0.761832
+-612.735 -1.38994 -0.726003
+-610.365 -1.65918 -0.676864
+-607.88 -1.84428 -0.621246
+-605.36 -1.94869 -0.565927
+-602.87 -1.9778 -0.516751
+-600.468 -1.93845 -0.477998
+-598.2 -1.83836 -0.451838
+-596.107 -1.68551 -0.437841
+0 -1.48758 -0.432714
+2048.67 -2.52206 0.560371
+2051.13 -4.34537 1.8235
+2054.12 -6.21948 3.14371
+2057.62 -8.07669 4.46522
+2061.6 -9.83866 5.72931
+2066 -11.4183 6.87506
+2070.74 -12.7225 7.8406
+2075.7 -13.6551 8.56509
+2080.72 -14.1211 8.9908
+2085.62 -14.0304 9.06502
+2090.18 -13.3029 8.74136
+2094.15 -11.8735 7.98053
+2097.29 -9.69703 6.75073
+2099.33 -6.75369 5.02875
+2100.05 -3.05381 2.80306
+2099.24 1.35731 0.080377
+2096.76 6.39502 -3.10304
+2092.48 11.9315 -6.66534
+2086.33 17.792 -10.4603
+2078.22 23.7525 -14.2596
+2068.02 29.5363 -17.7435
+2055.56 34.8131 -20.5076
+2040.57 39.1977 -22.0929
+2022.8 42.2497 -22.0434
+2002.08 43.4753 -19.9835
+1978.53 42.3282 -15.695
+1952.78 38.2088 -9.15534
+1926.13 30.4536 -0.490319
+1900.62 18.301 10.1935
+1878.91 0.794597 23.0681
+1864.16 -23.4688 38.7416
+1860.47 -57.0032 57.7435
+1875.55 -105.188 77.9905
+1928.47 -180.735 87.5836
+2064.87 -313.94 49.2002
+2373.89 -572.061 -124.73
+2972.56 -1083.35 -590.654
+3878.29 -2031.33 -1532.58
+4716.6 -3529.21 -2975.07
+4559.46 -5282.98 -4473.73
+2844.59 -6269.41 -5123.76
+1216.12 -5415.7 -4506.93
+413.063 -3665.78 -3163.97
+137.513 -2156.31 -1901.45
+47.1202 -1193.79 -1052.14
+16.5637 -642.948 -561.443
+7.55161 -340.904 -294.766
+3.66409 -180.284 -154.317
+1.51913 -95.0886 -80.8046
+0.811665 -49.7158 -42.0868
+0.472146 -25.9876 -21.9175
+0.190708 -13.6274 -11.4586
+0.0901825 -7.1015 -5.96551
+0.0560866 -3.7098 -3.11005
+0.0147538 -1.96521 -1.64263
+-0.00344479 -1.04493 -0.872389
+-0.00759702 -0.564149 -0.469689
+-0.0145995 -0.319671 -0.264659
+-0.0188083 -0.194305 -0.160201
+-0.0205787 -0.137531 -0.112784
+-0.0230235 -0.127278 -0.104019
+-0.0247815 -0.157154 -0.129195
+-0.0302628 -0.242747 -0.200736
+-0.0388392 -0.417596 -0.346922
+-0.0444788 -0.755073 -0.630988
+-0.0703581 -1.41839 -1.18855
+-0.124498 -2.69071 -2.25753
+-0.170435 -5.11908 -4.30786
+-0.317681 -9.86555 -8.3175
+-0.706854 -19.0296 -16.0562
+-1.17428 -36.4847 -30.8718
+-2.22282 -70.1982 -59.6023
+-5.36264 -134.994 -115.009
+-11.1094 -257.5 -220.899
+-25.0431 -490.625 -424.919
+-72.518 -933.662 -815.815
+-213.251 -1751.89 -1542.98
+-644.1 -3202.66 -2816.61
+-1898.87 -5509.54 -4730.47
+-4437 -8215.65 -6794.45
+-7098.06 -9560.34 -7792.18
+-7327.11 -8057.81 -6868.47
+-6014.5 -5353.96 -4587.99
+-4618.59 -3048.43 -2355.85
+-3713.14 -1603.32 -895.904
+-3254.04 -837.221 -182.576
+-3050.4 -459.05 75.0307
+-2964.67 -267.819 126.439
+-2931.43 -160.137 109.578
+-2926.53 -90.6768 80.8532
+-2941.33 -41.0437 56.0598
+-2970.65 -3.73103 36.051
+-3009.16 24.6335 18.4844
+-3051.56 45.8432 1.85988
+-3093.46 61.0504 -13.8269
+-3132.03 71.1238 -27.6207
+-3166.11 76.7923 -38.354
+-3195.8 78.7044 -45.2038
+-3221.95 77.4524 -47.9438
+-3245.54 73.583 -46.9315
+-3267.31 67.6026 -42.9316
+-3287.63 59.9812 -36.8863
+-3306.39 51.1554 -29.7119
+-3323.22 41.5302 -22.1651
+-3337.57 31.4796 -14.7855
+-3348.94 21.3459 -7.90093
+-3356.96 11.4373 -1.67176
+-3361.43 2.02577 3.8499
+-3362.4 -6.65521 8.66534
+-3360.09 -14.4133 12.7895
+-3354.86 -21.0985 16.2297
+-3347.16 -26.604 18.9801
+-3337.49 -30.8653 21.0266
+-3326.36 -33.8594 22.3561
+-3314.25 -35.6018 22.9649
+-3301.62 -36.1433 22.8654
+-3288.87 -35.5654 22.0893
+-3276.36 -33.9757 20.6894
+-3264.38 -31.5017 18.7405
+-3253.21 -28.2854 16.3398
+0 -24.4768 13.6057
+4479.84 -9.25764 2.22955
+4485.72 -15.8225 5.90911
+4492.83 -22.5834 9.7782
+4501.09 -29.2967 13.6893
+4510.4 -35.681 17.4803
+4520.57 -41.4239 20.9759
+4531.35 -46.1914 23.9919
+4542.42 -49.6391 26.3401
+4553.41 -51.4266 27.8345
+4563.86 -51.2328 28.2982
+4573.27 -48.7736 27.5685
+4581.12 -43.8198 25.503
+4586.87 -36.2157 21.9842
+4590.03 -25.8982 16.9267
+4590.2 -12.9138 10.2885
+4587.06 2.56412 2.0892
+4580.44 20.2208 -7.56217
+4570.29 39.5869 -18.4302
+4556.62 60.0274 -30.1109
+4539.46 80.7339 -41.9925
+4518.76 100.72 -53.2335
+4494.3 118.824 -62.7754
+4465.65 133.714 -69.4059
+4432.25 143.911 -71.8829
+4393.62 147.824 -69.112
+4349.63 143.795 -60.3417
+4301 130.167 -45.3105
+4249.55 105.352 -24.2621
+4198.33 67.8926 2.24058
+4151.23 16.4555 33.6722
+4112.28 -50.324 69.833
+4085.11 -134.368 110.464
+4073.92 -239.5 153.134
+4087.69 -374.41 188.174
+4146.78 -558.051 190.719
+4282.9 -826.55 114.459
+4508.33 -1234.12 -99.9658
+4729.35 -1827.92 -485.049
+4647.47 -2570.6 -980.407
+3863.26 -3228.34 -1408.47
+2416.93 -3380.52 -1589.89
+1176.51 -2795.88 -1510.63
+497.908 -1907.67 -1177.54
+206.106 -1156.74 -770.857
+87.3881 -661.516 -450.228
+38.6063 -367.149 -247.119
+18.2729 -200.171 -131.077
+8.95478 -108.106 -68.4454
+4.39974 -57.9315 -35.5045
+2.23928 -30.7752 -18.2811
+1.15282 -16.2776 -9.39847
+0.567043 -8.59493 -4.84729
+0.274556 -4.5233 -2.49288
+0.126222 -2.38372 -1.28518
+0.0415587 -1.26581 -0.670963
+-0.00315986 -0.677376 -0.35256
+-0.0264067 -0.368828 -0.188068
+-0.0410651 -0.209163 -0.104804
+-0.0502957 -0.127884 -0.0625937
+-0.0567858 -0.0912978 -0.0435493
+-0.0630708 -0.0845409 -0.0399514
+-0.0703867 -0.104378 -0.0498052
+-0.0819231 -0.159713 -0.0782318
+-0.100904 -0.273261 -0.137045
+-0.132024 -0.493178 -0.252184
+-0.192995 -0.917884 -0.479922
+-0.308353 -1.73033 -0.922208
+-0.512934 -3.28214 -1.78105
+-0.921808 -6.26721 -3.47815
+-1.74205 -11.9731 -6.79772
+-3.27635 -22.7962 -13.246
+-6.37717 -43.336 -25.887
+-12.997 -82.0346 -50.4693
+-26.764 -154.061 -97.6584
+-57.5243 -287.511 -187.699
+-132.889 -532.515 -354.825
+-319.409 -970.974 -647.66
+-783.674 -1721.47 -1109.01
+-1869.96 -2878.68 -1688.23
+-3857.07 -4265.39 -2156.29
+-6166.41 -5185.38 -2284.52
+-7406.56 -4944.62 -2081.26
+-7523.23 -3906.57 -1489.02
+-7167.08 -2745.33 -752.281
+-6811.58 -1833.59 -164.101
+-6593.72 -1224.09 162.759
+-6485.74 -834.076 275.1
+-6437.95 -572.685 268.754
+-6424.25 -380.991 217.905
+-6437.28 -229.01 159.847
+-6474.83 -103.592 106.157
+-6532.55 0.593549 57.0635
+-6603.04 85.7875 10.6073
+-6677.93 153.225 -33.584
+-6750.34 203.957 -73.8438
+-6816.16 239.142 -107.457
+-6874.29 260.122 -131.897
+-6925.84 268.403 -145.71
+-6972.97 265.605 -148.837
+-7017.84 253.401 -142.473
+-7061.86 233.464 -128.642
+-7105.41 207.428 -109.695
+-7147.84 176.857 -87.8895
+-7187.81 143.228 -65.1107
+-7223.66 107.915 -42.7556
+-7253.78 72.1772 -21.7435
+-7276.89 37.1511 -2.60556
+-7292.18 3.83749 14.3954
+-7299.39 -26.9056 29.152
+-7298.69 -54.3708 41.6287
+-7290.7 -78.0074 51.8141
+-7276.27 -97.4229 59.7049
+-7256.46 -112.382 65.309
+-7232.41 -122.802 68.6583
+-7205.28 -128.739 69.8203
+-7176.19 -130.383 68.9056
+-7146.21 -128.031 66.0707
+-7116.3 -122.076 61.5173
+-7087.32 -112.983 55.4908
+-7060.02 -101.266 48.2778
+0 -87.4698 40.2019
+6973.14 -17.9215 1.58481
+6981.95 -30.5717 6.26439
+6992.32 -43.6042 11.2405
+7004.12 -56.5485 16.329
+7017.13 -68.8615 21.3256
+7031.05 -79.9411 26.0081
+7045.5 -89.1446 30.1398
+7060.02 -95.8113 33.4765
+7074.07 -99.2901 35.7733
+7087.04 -98.9704 36.793
+7098.27 -94.3162 36.312
+7107.11 -84.9021 34.1272
+7112.96 -70.4491 30.062
+7115.3 -50.8602 23.9748
+7113.78 -26.2533 15.7754
+7108.25 3.00905 5.45075
+7098.78 36.2944 -6.89374
+7085.62 72.6798 -20.9799
+7069.14 110.937 -36.2938
+7049.68 149.527 -52.0274
+7027.38 186.597 -67.0466
+7001.98 220.001 -79.9096
+6972.78 247.331 -88.9651
+6938.6 265.978 -92.5432
+6898.05 273.229 -89.2353
+6849.97 266.414 -78.2129
+6794 243.094 -59.4948
+6731.03 201.302 -34.0358
+6663.3 139.794 -3.52394
+6593.85 58.2583 30.1233
+6525.15 -42.654 65.3535
+6457.44 -161.694 101.145
+6387.82 -298.178 136.013
+6311.05 -454.385 165.522
+6220.8 -639.096 179.751
+6104.52 -870.01 165.348
+5920.26 -1168.34 117.914
+5558.01 -1535.2 60.3002
+4840.38 -1908.37 37.8773
+3666.03 -2134.64 57.7311
+2268.79 -2038.19 28.5073
+1174.83 -1609.08 -122.267
+550.389 -1086.41 -224.33
+252.001 -665.71 -213.503
+117.252 -388.31 -151.975
+56.3125 -220.805 -93.3405
+28.0374 -123.574 -52.7088
+14.2784 -68.3725 -28.313
+7.34681 -37.4409 -14.7802
+3.81135 -20.3031 -7.56581
+1.97188 -10.9311 -3.82879
+0.999357 -5.85687 -1.92974
+0.487792 -3.12729 -0.96811
+0.216733 -1.66978 -0.485602
+0.0699662 -0.895481 -0.245541
+-0.00971502 -0.484251 -0.124859
+-0.0537826 -0.266534 -0.0642532
+-0.0797005 -0.15236 -0.0341839
+-0.0961519 -0.0940814 -0.0192857
+-0.108295 -0.0678651 -0.0126119
+-0.119754 -0.0630866 -0.0111922
+-0.133608 -0.0776902 -0.0143353
+-0.15418 -0.117683 -0.0238485
+-0.188115 -0.199328 -0.0442695
+-0.247233 -0.356454 -0.0856278
+-0.355518 -0.655516 -0.169544
+-0.556398 -1.22197 -0.337615
+-0.930198 -2.29334 -0.674113
+-1.64102 -4.31964 -1.35335
+-3.00136 -8.13233 -2.71049
+-5.59626 -15.2564 -5.39778
+-10.6413 -28.4891 -10.6904
+-20.6749 -52.844 -20.8854
+-40.9622 -97.1691 -39.9165
+-83.6616 -177.176 -73.8386
+-178.154 -320.261 -128.923
+-392.252 -571.537 -204.147
+-875.458 -996.762 -269.949
+-1897.89 -1654.58 -237.792
+-3693.97 -2482.3 -23.3859
+-5977.87 -3161.2 228.774
+-7874.94 -3300.18 224.466
+-9008.13 -2921.37 124.522
+-9556.71 -2321.17 111.042
+-9814.45 -1751.84 174.483
+-9955.96 -1308.47 233.06
+-10045.8 -979.728 246.515
+-10106.6 -723.272 222.845
+-10155.4 -505.571 183.541
+-10207.7 -309.976 141.593
+-10272.3 -131.819 99.2335
+-10349.5 27.8504 54.0202
+-10433.1 166.323 4.40328
+-10514.5 281.198 -47.995
+-10587.3 371.111 -98.8081
+-10648.4 435.871 -142.637
+-10698.7 476.33 -174.844
+-10741.8 494.166 -192.732
+-10782.3 491.644 -195.907
+-10824.2 471.395 -185.969
+-10870 436.251 -165.81
+-10920.3 389.109 -138.838
+-10973.6 332.843 -108.318
+-11027.6 270.233 -76.9605
+-11079.2 203.919 -46.7372
+-11125.3 136.36 -18.9004
+-11163.3 69.7987 5.88335
+-11191.3 6.23284 27.3516
+-11208.4 -52.6118 45.4743
+-11214.3 -105.304 60.3248
+-11209.6 -150.722 72.0045
+-11195 -188.062 80.6146
+-11172 -216.836 86.2568
+-11142.1 -236.86 89.0492
+-11106.9 -248.234 89.1411
+-11067.9 -251.317 86.7236
+-11026.9 -246.687 82.0333
+-10985.1 -235.107 75.3524
+-10944 -217.482 67.0083
+-10904.8 -194.814 57.3725
+0 -168.163 46.8572
+9003.26 -22.7771 -3.73834
+9012.86 -38.8012 -1.49692
+9023.55 -55.3101 1.03465
+9035.12 -71.7054 3.7636
+9047.29 -87.298 6.59073
+9059.76 -101.325 9.40864
+9072.13 -112.972 12.1016
+9083.98 -121.407 14.5471
+9094.8 -125.809 16.6169
+9104.08 -125.417 18.1774
+9111.32 -119.565 19.0886
+9116.05 -107.734 19.2006
+9117.91 -89.5988 18.3514
+9116.71 -65.0654 16.3676
+9112.5 -34.3174 13.0751
+9105.58 2.15149 8.32473
+9096.53 43.5099 2.03773
+9086.17 88.5686 -5.72872
+9075.36 135.77 -14.7034
+9064.84 183.189 -24.3264
+9054.93 228.543 -33.7038
+9045.27 269.231 -41.625
+9034.62 302.386 -46.6734
+9020.88 324.972 -47.4525
+9001.25 333.936 -42.9135
+8972.85 326.415 -32.726
+8933.36 300.015 -17.5672
+8881.7 253.157 0.835194
+8818.2 185.431 20.0679
+8743.94 97.9014 37.8569
+8659.01 -6.81508 53.1819
+8559.81 -124.933 67.2206
+8436.34 -252.693 83.5219
+8269.99 -388.606 107.178
+8031.46 -536.278 143.947
+7676.15 -705.366 201.473
+7135.37 -905.432 292.648
+6316.49 -1127.67 432.009
+5148.56 -1320.56 607.615
+3698.65 -1389.26 735.901
+2261.94 -1256.5 682.128
+1200.94 -957.934 424.94
+587.193 -635.62 166.935
+280.812 -387.593 26.7712
+136.205 -226.994 -19.4219
+68.0146 -130.506 -24.3403
+34.962 -74.2008 -17.7736
+18.3087 -41.7838 -10.7787
+9.66899 -23.2931 -5.96727
+5.11248 -12.8568 -3.13025
+2.68149 -7.03774 -1.58511
+1.37639 -3.82835 -0.785229
+0.674805 -2.07395 -0.382569
+0.296157 -1.12238 -0.18404
+0.0901312 -0.60917 -0.0878713
+-0.0231086 -0.333275 -0.0415075
+-0.0866914 -0.185553 -0.0192822
+-0.124053 -0.107222 -0.0087285
+-0.147928 -0.0669867 -0.00371684
+-0.165747 -0.0488645 -0.00147155
+-0.182573 -0.045663 -0.000835762
+-0.202981 -0.0560358 -0.00156563
+-0.232944 -0.084008 -0.00429961
+-0.282071 -0.14059 -0.0107991
+-0.36752 -0.248391 -0.0250592
+-0.521378 -0.450956 -0.0557407
+-0.803233 -0.830004 -0.120438
+-1.32438 -1.53779 -0.255473
+-2.29603 -2.85599 -0.534832
+-4.11589 -5.29781 -1.10096
+-7.53409 -9.78782 -2.22208
+-14.0124 -17.9771 -4.36923
+-26.4833 -32.772 -8.23761
+-51.0178 -59.2421 -14.5445
+-101.025 -106.29 -22.8031
+-207.385 -189.568 -27.0867
+-439.553 -335.701 -6.37346
+-942.628 -585.212 92.268
+-1963.64 -978.95 357.202
+-3734.66 -1496.43 817.267
+-6121.08 -1973.08 1250.71
+-8499.92 -2172.6 1308.87
+-10377 -2043.33 1047.14
+-11651.5 -1724.29 711.392
+-12451.6 -1377.42 447.516
+-12936.3 -1084.2 274.291
+-13223.3 -850.844 167.033
+-13392.2 -653.215 105.101
+-13498.8 -469.142 75.2275
+-13579.9 -288.643 64.6076
+-13654.8 -111.844 59.68
+-13728 56.0132 49.3862
+-13795.3 208.419 28.2036
+-13849.4 339.702 -3.26373
+-13885.3 445.886 -39.9237
+-13902.7 524.869 -74.8667
+-13905.8 576.242 -101.874
+-13901.6 600.971 -117.033
+-13898 601.045 -119.259
+-13901.7 579.155 -109.928
+-13916.7 538.432 -92.0112
+-13944.3 482.243 -69.1041
+-13983.1 414.045 -44.6075
+-14029.8 337.268 -21.2118
+-14080.1 255.237 -0.684597
+-14129.8 171.098 16.0945
+-14174.7 87.757 28.9477
+-14212.1 7.829 38.1534
+-14239.8 -66.4097 44.2159
+-14256.8 -133.059 47.69
+-14263.1 -190.62 49.0786
+-14259.1 -238.012 48.7907
+-14245.9 -274.569 47.143
+-14224.6 -300.026 44.3807
+-14196.8 -314.494 40.702
+-14164 -318.418 36.2784
+-14127.8 -312.536 31.2685
+-14089.6 -297.822 25.8298
+-14050.8 -275.432 20.1287
+-14012.7 -246.648 14.3515
+0 -212.824 8.71215
+10360.5 -19.2846 -12.4096
+10368.9 -32.8174 -15.278
+10377.3 -46.7586 -17.9643
+10385.3 -60.6016 -20.3698
+10392.8 -73.7632 -22.3741
+10399.6 -85.5986 -23.8431
+10405.3 -95.4212 -24.6369
+10409.6 -102.529 -24.6186
+10412.4 -106.234 -23.6651
+10413.3 -105.898 -21.6813
+10412.3 -100.971 -18.6176
+10409.4 -91.0267 -14.489
+10404.5 -75.8066 -9.39541
+10398.1 -55.2526 -3.53464
+10390.8 -29.542 2.79563
+10383.5 0.886279 9.21734
+10377.3 35.3104 15.3178
+10373.7 72.7132 20.7222
+10374.1 111.779 25.1861
+10379.5 150.897 28.6884
+10390.3 188.184 31.4965
+10406 221.516 34.167
+10424.7 248.588 37.4478
+10443.4 267.004 42.0615
+10457.7 274.411 48.388
+10463.2 268.689 56.1217
+10455.4 248.191 64.0453
+10431.4 212.037 70.1171
+10389.5 160.407 72.0534
+10329.3 94.7741 68.4766
+10248.7 17.9321 60.463
+10141.3 -66.3638 53.0473
+9991.05 -154.381 56.0849
+9768.07 -244.113 84.0228
+9423.76 -337.202 154.47
+8888.79 -439.231 285.133
+8079.2 -555.048 486.355
+6925.63 -677.047 743.594
+5439.72 -772.538 990.787
+3792.1 -789.096 1104.98
+2299.56 -693.597 979.634
+1234.28 -517.555 658.288
+615.09 -338.396 339.142
+299.766 -204.416 139.093
+148.062 -119.229 46.1028
+75.2794 -68.6635 11.353
+39.3601 -39.2966 0.944504
+20.9503 -22.3417 -1.16581
+11.2333 -12.5943 -1.0794
+6.01485 -7.03435 -0.660833
+3.18607 -3.89633 -0.342349
+1.64699 -2.14389 -0.159934
+0.808613 -1.1744 -0.0679494
+0.350869 -0.642361 -0.0252775
+0.0996299 -0.35215 -0.00703607
+-0.0396872 -0.19454 0.000116261
+-0.11859 -0.109358 0.00258823
+-0.165237 -0.0638068 0.00326064
+-0.195246 -0.0402749 0.00339321
+-0.217798 -0.0296643 0.0034801
+-0.239156 -0.0278526 0.0036966
+-0.265038 -0.0340744 0.00408214
+-0.302811 -0.0506408 0.00455959
+-0.36431 -0.0838626 0.00487039
+-0.470493 -0.146581 0.00429842
+-0.659786 -0.263244 0.00105496
+-1.00317 -0.47932 -0.00890363
+-1.632 -0.878495 -0.0344696
+-2.79013 -1.61338 -0.0936772
+-4.93019 -2.95878 -0.218713
+-8.89633 -5.40369 -0.457825
+-16.2962 -9.80948 -0.841628
+-30.2969 -17.6797 -1.20895
+-57.4185 -31.6335 -0.611564
+-111.895 -56.2993 4.58183
+-226.014 -99.9801 25.6792
+-471.462 -177.262 91.5854
+-994.015 -311.14 261.955
+-2034.35 -526.375 619.686
+-3830.92 -817.101 1177.59
+-6336.47 -1100.69 1721.53
+-9069.65 -1247 1907.04
+-11486.1 -1208.39 1670.39
+-13305 -1048.15 1208.15
+-14521.8 -858.246 737.912
+-15267.6 -691.635 373.778
+-15695.2 -555.535 140.243
+-15930.6 -435.694 19.5777
+-16062.9 -317.711 -19.1291
+-16147 -195.201 -8.31244
+-16210.1 -69.1755 23.4029
+-16259.4 55.2944 54.8374
+-16291.3 171.969 74.1486
+-16299.3 275.19 78.3705
+-16279.9 360.689 70.9455
+-16235.1 425.821 58.3482
+-16172.1 469.474 46.9911
+-16101.4 491.822 41.1979
+-16034.2 494.033 42.4628
+-15979.8 477.991 49.7595
+-15944.2 446.056 60.4478
+-15929.9 400.878 71.3285
+-15935.9 345.258 79.5254
+-15958.7 282.036 83.0377
+-15993.5 214.005 80.9434
+-16035.1 143.844 73.3237
+-16078.6 74.0491 61.014
+-16120 6.88583 45.2918
+-16156.5 -55.6635 27.5836
+-16186 -111.936 9.24404
+-16207.7 -160.614 -8.57717
+-16221.2 -200.743 -24.9892
+-16226.8 -231.728 -39.3591
+-16225.1 -253.325 -51.2818
+-16216.9 -265.613 -60.5414
+-16203.1 -268.967 -67.0739
+-16184.9 -264.009 -70.9333
+-16163.1 -251.568 -72.2602
+-16138.9 -232.627 -71.2503
+-16113.2 -208.278 -68.1232
+0 -179.673 -63.0943
+11092.3 -7.55764 -20.3624
+11098.8 -12.8538 -28.2093
+11104.3 -18.3095 -35.9983
+11108.3 -23.7261 -43.4437
+11110.7 -28.8753 -50.2108
+11111.4 -33.5044 -55.9296
+11110.1 -37.3449 -60.2106
+11106.8 -40.1224 -62.6638
+11101.5 -41.5686 -62.9218
+11094.3 -41.4352 -60.6676
+11085.4 -39.5086 -55.6681
+11075.2 -35.6254 -47.8092
+11064.2 -29.6876 -37.1316
+11053.2 -21.677 -23.859
+11043.4 -11.6676 -8.40962
+11036.1 0.163952 8.61574
+11033.1 13.531 26.4797
+11036 28.0329 44.3872
+11046.7 43.1543 61.5896
+11066.3 58.2687 77.4963
+11095.4 72.6477 91.7603
+11133.3 85.4757 104.303
+11177.5 95.8744 115.239
+11224.3 102.94 124.689
+11268.4 105.798 132.491
+11303.9 103.677 137.912
+11325.3 96.002 139.493
+11328.3 82.5108 135.246
+11310.1 63.3621 123.393
+11269 39.2183 103.707
+11202.1 11.246 79.2815
+11100.9 -19.0362 58.3065
+10945.5 -50.1423 55.2311
+10697.8 -81.2564 90.6545
+10295.7 -112.913 188.968
+9653.16 -147.035 371.56
+8677.58 -185.185 641.786
+7317.65 -224.505 960.643
+5638.25 -253.802 1227.67
+3869.23 -256.195 1306.4
+2335.13 -222.441 1122.86
+1259.69 -164.323 763.109
+633.263 -106.587 417.263
+311.153 -63.9777 192.24
+154.841 -37.1595 78.5845
+79.3255 -21.3742 29.8605
+41.7996 -12.2533 11.0712
+22.4265 -6.99287 4.23783
+12.1172 -3.96189 1.75965
+6.53135 -2.22554 0.813078
+3.47804 -1.24013 0.414891
+1.80404 -0.686472 0.226221
+0.885512 -0.378293 0.12792
+0.380701 -0.208123 0.0738055
+0.102032 -0.114738 0.0431857
+-0.0533414 -0.0637348 0.0257418
+-0.141797 -0.0360249 0.0158629
+-0.19434 -0.0211385 0.010372
+-0.228308 -0.0134231 0.00748622
+-0.253948 -0.00994248 0.00623705
+-0.278286 -0.00936137 0.00616906
+-0.307751 -0.0114324 0.0072001
+-0.350586 -0.0169059 0.00959572
+-0.419976 -0.027826 0.0140626
+-0.539125 -0.0483322 0.0219782
+-0.750253 -0.0862594 0.0358506
+-1.13088 -0.1561 0.0601964
+-1.82354 -0.284355 0.103184
+-3.09035 -0.51902 0.180457
+-5.41381 -0.946008 0.325009
+-9.68711 -1.7173 0.614366
+-17.5958 -3.09923 1.25699
+-32.4369 -5.55566 2.85833
+-60.9864 -9.89649 7.1897
+-118.008 -17.564 19.3434
+-236.819 -31.1819 52.9653
+-490.895 -55.4429 140.082
+-1027.48 -97.868 342.255
+-2085.78 -166.768 738.959
+-3910.1 -261.012 1340.21
+-6501.54 -355.162 1950.02
+-9455.83 -407.423 2234.71
+-12206.4 -399.738 2053.52
+-14367.1 -350.441 1548.02
+-15845.8 -289.548 963.259
+-16750.7 -235.404 474.922
+-17255.9 -190.903 149.013
+-17519.4 -151.171 -21.729
+-17654 -111.038 -75.2672
+-17727.3 -68.1575 -55.3276
+-17771.5 -22.932 -0.267089
+-17795.1 22.6479 61.5562
+-17794.3 66.0827 113.228
+-17762.7 105.047 148.322
+-17697.1 137.73 168.069
+-17601 162.946 177.668
+-17483.6 180.118 182.887
+-17357.8 189.191 187.799
+-17237 190.52 193.887
+-17132.5 184.764 200.273
+-17052.1 172.787 204.617
+-16999.2 155.588 204.175
+-16973.5 134.238 196.692
+-16971.6 109.835 180.944
+-16988.7 83.4711 156.914
+-17019.2 56.1982 125.669
+-17057.8 29.0035 89.0547
+-17099.8 2.78503 49.3242
+-17141.7 -21.6683 8.79487
+-17180.9 -43.6931 -30.4117
+-17215.7 -62.7629 -66.5281
+-17245.1 -78.4945 -98.2061
+-17268.6 -90.6486 -124.516
+-17286 -99.1246 -144.91
+-17297.6 -103.952 -159.167
+-17303.5 -105.275 -167.34
+-17304.2 -103.339 -169.703
+-17300.3 -98.4677 -166.699
+-17292.2 -91.0492 -158.886
+-17280.7 -81.5119 -146.888
+0 -70.3086 -131.346
+11318 7.55764 -23.5593
+11323.8 12.8538 -33.4449
+11327.9 18.3095 -43.3257
+11330.3 23.7261 -52.8394
+11330.5 28.8753 -61.5631
+11328.6 33.5044 -69.0302
+11324.4 37.3449 -74.749
+11317.9 40.1224 -78.226
+11309.3 41.5686 -78.9937
+11298.8 41.4352 -76.6451
+11286.7 39.5086 -70.8726
+11273.6 35.6254 -61.5107
+11260.1 29.6876 -48.5772
+11247.4 21.677 -32.3078
+11236.6 11.6676 -13.1721
+11229.4 -0.163952 8.1366
+11227.6 -13.531 30.7466
+11233.1 -28.0329 53.6896
+11247.9 -43.1543 76.0105
+11273.1 -58.2687 96.8858
+11309.4 -72.6477 115.719
+11355.9 -85.4757 132.177
+11410 -95.8744 146.125
+11467.7 -102.94 157.45
+11523.4 -105.798 165.797
+11570.8 -103.677 170.292
+11603.7 -96.0019 169.423
+11617.6 -82.5108 161.279
+11609.3 -63.3621 144.334
+11576.9 -39.2183 118.851
+11516.9 -11.246 88.7116
+11420.2 19.0362 63.2689
+11265.5 50.1423 58.5898
+11011.8 81.2564 97.3589
+10591.9 112.913 206.133
+9913.9 147.035 407.139
+8882.31 185.185 700.6
+7452.51 224.505 1038.43
+5707.9 253.802 1308.65
+3897.83 256.195 1371.88
+2348.79 222.441 1166.96
+1268.97 164.323 794.163
+639.598 106.587 440.372
+315.002 63.9777 208.24
+157.076 37.1595 88.5822
+80.6373 21.3742 35.6894
+42.5845 12.2533 14.3352
+22.901 6.99287 6.01894
+12.402 3.96189 2.71497
+6.69842 2.22554 1.31824
+3.57277 1.24013 0.678535
+1.85497 0.686472 0.362381
+0.910236 0.378293 0.197678
+0.389921 0.208123 0.109353
+0.102139 0.114738 0.0612803
+-0.0586097 0.0637348 0.0349895
+-0.150287 0.0360249 0.0206471
+-0.204837 0.0211385 0.0129204
+-0.240163 0.0134231 0.00893773
+-0.266871 0.00994248 0.00720103
+-0.292244 0.00936137 0.00702524
+-0.322949 0.0114324 0.00828474
+-0.367526 0.0169059 0.0113687
+-0.439608 0.027826 0.0173349
+-0.56314 0.0483322 0.0283177
+-0.781583 0.0862594 0.0483609
+-1.17458 0.1561 0.085022
+-1.88822 0.284355 0.152445
+-3.19047 0.51902 0.277846
+-5.5733 0.946008 0.516218
+-9.94526 1.7173 0.986547
+-18.0168 3.09923 1.97384
+-33.1273 5.55566 4.2219
+-62.1391 9.89649 9.75134
+-120.002 17.564 24.0841
+-240.411 31.1819 61.5336
+-497.505 55.4429 154.979
+-1039.15 97.868 366.406
+-2104.33 166.768 774.245
+-3939.6 261.012 1388.48
+-6561.79 355.162 2020.55
+-9591.45 407.423 2341.19
+-12455.7 399.738 2183.81
+-14733.3 350.441 1668.49
+-16301.4 289.548 1046.96
+-17259.4 235.404 515.77
+-17788.9 190.903 156.427
+-18059.1 151.171 -33.516
+-18191.7 111.038 -93.781
+-18258.8 68.1575 -71.7027
+-18294.4 22.9321 -8.90294
+-18307.4 -22.6479 63.763
+-18293.8 -66.0827 127.521
+-18246.9 -105.047 174.577
+-18163.8 -137.73 205.2
+-18048.3 -162.946 223.949
+-17910.3 -180.118 236.208
+-17763.5 -189.191 245.842
+-17622.1 -190.52 254.254
+-17498.2 -184.764 260.583
+-17400.1 -172.787 262.592
+-17331.8 -155.588 257.721
+-17293.2 -134.238 243.975
+-17281.2 -109.835 220.459
+-17290.7 -83.4711 187.538
+-17316.3 -56.1982 146.691
+-17352.3 -29.0035 100.182
+-17394.1 -2.78503 50.6684
+-17437.8 21.6683 0.83728
+-17480.6 43.6931 -46.8734
+-17520.5 62.7629 -90.4409
+-17556.3 78.4945 -128.328
+-17587 90.6486 -159.484
+-17612.3 99.1246 -183.3
+-17632 103.952 -199.556
+-17646.1 105.275 -208.353
+-17654.8 103.339 -210.057
+-17658.4 98.4677 -205.238
+-17657.2 91.0492 -194.603
+-17651.7 81.5119 -178.944
+0 70.3086 -159.079
+11092.3 19.2846 -20.3624
+11098.8 32.8174 -28.2093
+11104.3 46.7586 -35.9983
+11108.3 60.6016 -43.4437
+11110.7 73.7632 -50.2108
+11111.4 85.5986 -55.9296
+11110.1 95.4212 -60.2106
+11106.8 102.529 -62.6638
+11101.5 106.234 -62.9218
+11094.3 105.898 -60.6676
+11085.4 100.971 -55.6681
+11075.2 91.0267 -47.8092
+11064.2 75.8066 -37.1316
+11053.2 55.2526 -23.859
+11043.4 29.542 -8.40962
+11036.1 -0.886278 8.61575
+11033.1 -35.3104 26.4798
+11036 -72.7132 44.3872
+11046.7 -111.779 61.5896
+11066.3 -150.897 77.4963
+11095.4 -188.184 91.7603
+11133.3 -221.516 104.303
+11177.5 -248.588 115.239
+11224.3 -267.004 124.689
+11268.4 -274.411 132.491
+11303.9 -268.689 137.912
+11325.3 -248.191 139.493
+11328.3 -212.037 135.246
+11310.1 -160.407 123.393
+11269 -94.7741 103.707
+11202.1 -17.9321 79.2815
+11100.9 66.3638 58.3065
+10945.5 154.381 55.2311
+10697.8 244.113 90.6545
+10295.7 337.202 188.968
+9653.16 439.231 371.56
+8677.58 555.048 641.786
+7317.65 677.047 960.643
+5638.25 772.538 1227.67
+3869.23 789.096 1306.4
+2335.13 693.597 1122.86
+1259.69 517.555 763.109
+633.263 338.396 417.263
+311.153 204.416 192.24
+154.841 119.229 78.5845
+79.3255 68.6635 29.8605
+41.7996 39.2966 11.0712
+22.4265 22.3417 4.23783
+12.1172 12.5943 1.75965
+6.53135 7.03435 0.813078
+3.47804 3.89633 0.414891
+1.80404 2.14389 0.226221
+0.885512 1.1744 0.12792
+0.380701 0.642361 0.0738055
+0.102032 0.35215 0.0431857
+-0.0533414 0.19454 0.0257418
+-0.141797 0.109358 0.0158629
+-0.19434 0.0638068 0.010372
+-0.228308 0.0402749 0.00748622
+-0.253948 0.0296643 0.00623705
+-0.278286 0.0278526 0.00616906
+-0.307751 0.0340744 0.0072001
+-0.350586 0.0506408 0.00959572
+-0.419976 0.0838626 0.0140626
+-0.539125 0.146581 0.0219782
+-0.750253 0.263244 0.0358506
+-1.13088 0.47932 0.0601964
+-1.82354 0.878495 0.103184
+-3.09035 1.61338 0.180457
+-5.41381 2.95878 0.325009
+-9.68711 5.40369 0.614366
+-17.5958 9.80948 1.25699
+-32.4369 17.6797 2.85833
+-60.9864 31.6335 7.1897
+-118.008 56.2993 19.3434
+-236.819 99.9801 52.9653
+-490.895 177.262 140.082
+-1027.48 311.14 342.255
+-2085.78 526.375 738.959
+-3910.1 817.101 1340.21
+-6501.54 1100.69 1950.02
+-9455.83 1247 2234.71
+-12206.4 1208.39 2053.52
+-14367.1 1048.15 1548.02
+-15845.8 858.246 963.259
+-16750.7 691.635 474.922
+-17255.9 555.535 149.013
+-17519.4 435.694 -21.729
+-17654 317.711 -75.2672
+-17727.3 195.201 -55.3276
+-17771.5 69.1755 -0.267092
+-17795.1 -55.2944 61.5562
+-17794.3 -171.969 113.228
+-17762.7 -275.19 148.322
+-17697.1 -360.689 168.069
+-17601 -425.821 177.668
+-17483.6 -469.474 182.887
+-17357.8 -491.822 187.799
+-17237 -494.033 193.887
+-17132.5 -477.991 200.273
+-17052.1 -446.056 204.617
+-16999.2 -400.878 204.175
+-16973.5 -345.258 196.692
+-16971.6 -282.036 180.944
+-16988.7 -214.005 156.914
+-17019.2 -143.844 125.669
+-17057.8 -74.0491 89.0547
+-17099.8 -6.88583 49.3242
+-17141.7 55.6635 8.79486
+-17180.9 111.936 -30.4117
+-17215.7 160.614 -66.5281
+-17245.1 200.743 -98.2061
+-17268.6 231.728 -124.516
+-17286 253.325 -144.91
+-17297.6 265.613 -159.167
+-17303.5 268.967 -167.34
+-17304.2 264.009 -169.703
+-17300.3 251.568 -166.699
+-17292.2 232.627 -158.886
+-17280.7 208.278 -146.888
+0 179.673 -131.346
+10360.5 22.7771 -12.4096
+10368.9 38.8012 -15.278
+10377.3 55.3101 -17.9643
+10385.3 71.7054 -20.3698
+10392.8 87.298 -22.3741
+10399.6 101.325 -23.8431
+10405.3 112.972 -24.6369
+10409.6 121.407 -24.6186
+10412.4 125.809 -23.6651
+10413.3 125.417 -21.6813
+10412.3 119.565 -18.6176
+10409.4 107.734 -14.489
+10404.5 89.5988 -9.39541
+10398.1 65.0654 -3.53464
+10390.8 34.3174 2.79563
+10383.5 -2.15149 9.21735
+10377.3 -43.5099 15.3178
+10373.7 -88.5686 20.7222
+10374.1 -135.77 25.1861
+10379.5 -183.189 28.6885
+10390.3 -228.543 31.4965
+10406 -269.231 34.167
+10424.7 -302.386 37.4478
+10443.4 -324.972 42.0615
+10457.7 -333.936 48.388
+10463.2 -326.415 56.1216
+10455.4 -300.015 64.0453
+10431.4 -253.157 70.1171
+10389.5 -185.431 72.0534
+10329.3 -97.9014 68.4766
+10248.7 6.81508 60.463
+10141.3 124.933 53.0472
+9991.05 252.693 56.0849
+9768.07 388.606 84.0228
+9423.76 536.278 154.47
+8888.79 705.366 285.133
+8079.2 905.432 486.355
+6925.63 1127.67 743.594
+5439.72 1320.56 990.787
+3792.1 1389.26 1104.98
+2299.56 1256.5 979.634
+1234.28 957.934 658.288
+615.09 635.62 339.142
+299.766 387.593 139.093
+148.062 226.994 46.1028
+75.2794 130.506 11.353
+39.3601 74.2008 0.944504
+20.9503 41.7838 -1.16581
+11.2333 23.2931 -1.0794
+6.01485 12.8568 -0.660833
+3.18607 7.03774 -0.342349
+1.64699 3.82835 -0.159934
+0.808613 2.07395 -0.0679494
+0.350869 1.12238 -0.0252775
+0.0996299 0.60917 -0.00703607
+-0.0396872 0.333275 0.000116261
+-0.11859 0.185553 0.00258823
+-0.165237 0.107222 0.00326064
+-0.195246 0.0669867 0.00339321
+-0.217798 0.0488645 0.0034801
+-0.239156 0.045663 0.0036966
+-0.265038 0.0560358 0.00408214
+-0.302811 0.084008 0.00455959
+-0.36431 0.14059 0.00487039
+-0.470493 0.248391 0.00429842
+-0.659786 0.450956 0.00105496
+-1.00317 0.830004 -0.00890363
+-1.632 1.53779 -0.0344696
+-2.79013 2.85599 -0.0936772
+-4.93019 5.29781 -0.218713
+-8.89633 9.78782 -0.457825
+-16.2962 17.9771 -0.841628
+-30.2969 32.772 -1.20895
+-57.4185 59.2421 -0.611564
+-111.895 106.29 4.58183
+-226.014 189.568 25.6792
+-471.462 335.701 91.5854
+-994.015 585.212 261.955
+-2034.35 978.95 619.686
+-3830.92 1496.43 1177.59
+-6336.47 1973.08 1721.53
+-9069.65 2172.6 1907.04
+-11486.1 2043.33 1670.39
+-13305 1724.29 1208.15
+-14521.8 1377.42 737.912
+-15267.6 1084.2 373.778
+-15695.2 850.844 140.243
+-15930.6 653.215 19.5777
+-16062.9 469.142 -19.1291
+-16147 288.643 -8.31246
+-16210.1 111.844 23.4029
+-16259.4 -56.0132 54.8374
+-16291.3 -208.419 74.1486
+-16299.3 -339.702 78.3705
+-16279.9 -445.886 70.9455
+-16235.1 -524.869 58.3482
+-16172.1 -576.242 46.9911
+-16101.4 -600.971 41.1979
+-16034.2 -601.045 42.4628
+-15979.8 -579.155 49.7595
+-15944.2 -538.432 60.4478
+-15929.9 -482.243 71.3285
+-15935.9 -414.045 79.5254
+-15958.7 -337.268 83.0377
+-15993.5 -255.237 80.9434
+-16035.1 -171.098 73.3237
+-16078.6 -87.757 61.014
+-16120 -7.829 45.2918
+-16156.5 66.4097 27.5836
+-16186 133.059 9.24404
+-16207.7 190.62 -8.57716
+-16221.2 238.012 -24.9892
+-16226.8 274.569 -39.3591
+-16225.1 300.026 -51.2818
+-16216.9 314.494 -60.5414
+-16203.1 318.418 -67.0739
+-16184.9 312.536 -70.9333
+-16163.1 297.822 -72.2602
+-16138.9 275.432 -71.2503
+-16113.2 246.648 -68.1232
+0 212.824 -63.0943
+9003.26 17.9215 -3.73834
+9012.86 30.5717 -1.49692
+9023.55 43.6042 1.03465
+9035.12 56.5485 3.76361
+9047.29 68.8615 6.59074
+9059.76 79.9411 9.40864
+9072.13 89.1446 12.1016
+9083.98 95.8113 14.5471
+9094.8 99.2901 16.6169
+9104.08 98.9704 18.1774
+9111.32 94.3162 19.0886
+9116.05 84.9021 19.2006
+9117.91 70.4491 18.3514
+9116.71 50.8602 16.3676
+9112.5 26.2533 13.0751
+9105.58 -3.00905 8.32472
+9096.53 -36.2944 2.03772
+9086.17 -72.6798 -5.72872
+9075.36 -110.937 -14.7034
+9064.84 -149.527 -24.3263
+9054.93 -186.597 -33.7038
+9045.27 -220.001 -41.625
+9034.62 -247.331 -46.6734
+9020.88 -265.978 -47.4525
+9001.25 -273.229 -42.9135
+8972.85 -266.414 -32.726
+8933.36 -243.094 -17.5672
+8881.7 -201.302 0.83519
+8818.2 -139.794 20.0679
+8743.94 -58.2583 37.8569
+8659.01 42.654 53.1819
+8559.81 161.694 67.2206
+8436.34 298.178 83.5219
+8269.99 454.385 107.178
+8031.46 639.096 143.947
+7676.15 870.01 201.473
+7135.37 1168.34 292.648
+6316.49 1535.2 432.009
+5148.56 1908.37 607.615
+3698.65 2134.64 735.901
+2261.94 2038.19 682.128
+1200.94 1609.08 424.94
+587.193 1086.41 166.935
+280.812 665.71 26.7712
+136.205 388.31 -19.4219
+68.0146 220.805 -24.3403
+34.962 123.574 -17.7736
+18.3087 68.3725 -10.7787
+9.66899 37.4409 -5.96727
+5.11248 20.3031 -3.13025
+2.68149 10.9311 -1.58511
+1.37639 5.85687 -0.785229
+0.674805 3.12729 -0.382569
+0.296157 1.66978 -0.18404
+0.0901312 0.895481 -0.0878713
+-0.0231086 0.484251 -0.0415075
+-0.0866914 0.266534 -0.0192822
+-0.124053 0.15236 -0.0087285
+-0.147928 0.0940814 -0.00371684
+-0.165747 0.0678651 -0.00147155
+-0.182573 0.0630866 -0.000835762
+-0.202981 0.0776902 -0.00156563
+-0.232944 0.117683 -0.00429961
+-0.282071 0.199328 -0.0107991
+-0.36752 0.356454 -0.0250592
+-0.521378 0.655516 -0.0557407
+-0.803233 1.22197 -0.120438
+-1.32438 2.29334 -0.255473
+-2.29603 4.31964 -0.534832
+-4.11589 8.13233 -1.10096
+-7.53409 15.2564 -2.22208
+-14.0124 28.4891 -4.36923
+-26.4833 52.844 -8.23761
+-51.0178 97.1691 -14.5445
+-101.025 177.176 -22.8031
+-207.385 320.261 -27.0867
+-439.553 571.537 -6.37346
+-942.628 996.762 92.268
+-1963.64 1654.58 357.202
+-3734.66 2482.3 817.267
+-6121.08 3161.2 1250.71
+-8499.92 3300.18 1308.87
+-10377 2921.37 1047.14
+-11651.5 2321.17 711.392
+-12451.6 1751.84 447.516
+-12936.3 1308.47 274.291
+-13223.3 979.728 167.033
+-13392.2 723.272 105.101
+-13498.8 505.571 75.2275
+-13579.9 309.976 64.6076
+-13654.8 131.819 59.68
+-13728 -27.8504 49.3862
+-13795.3 -166.323 28.2036
+-13849.4 -281.198 -3.26373
+-13885.3 -371.111 -39.9237
+-13902.7 -435.871 -74.8667
+-13905.8 -476.33 -101.874
+-13901.6 -494.166 -117.033
+-13898 -491.644 -119.259
+-13901.7 -471.395 -109.928
+-13916.7 -436.251 -92.0112
+-13944.3 -389.109 -69.104
+-13983.1 -332.843 -44.6075
+-14029.8 -270.233 -21.2118
+-14080.1 -203.919 -0.684597
+-14129.8 -136.36 16.0945
+-14174.7 -69.7987 28.9477
+-14212.1 -6.23284 38.1534
+-14239.8 52.6118 44.2158
+-14256.8 105.304 47.69
+-14263.1 150.722 49.0786
+-14259.1 188.062 48.7907
+-14245.9 216.836 47.143
+-14224.6 236.86 44.3807
+-14196.8 248.234 40.702
+-14164 251.317 36.2784
+-14127.8 246.687 31.2685
+-14089.6 235.107 25.8298
+-14050.8 217.482 20.1287
+-14012.7 194.814 14.3515
+0 168.163 8.71214
+6973.14 9.25764 1.58482
+6981.95 15.8225 6.26439
+6992.32 22.5834 11.2405
+7004.12 29.2967 16.329
+7017.13 35.681 21.3256
+7031.05 41.4239 26.0081
+7045.5 46.1914 30.1398
+7060.02 49.6391 33.4765
+7074.07 51.4266 35.7733
+7087.04 51.2328 36.793
+7098.27 48.7736 36.312
+7107.11 43.8198 34.1272
+7112.96 36.2157 30.062
+7115.3 25.8982 23.9748
+7113.78 12.9138 15.7754
+7108.25 -2.56412 5.45075
+7098.78 -20.2208 -6.89374
+7085.62 -39.5869 -20.9799
+7069.14 -60.0274 -36.2938
+7049.68 -80.7339 -52.0274
+7027.38 -100.72 -67.0466
+7001.98 -118.824 -79.9096
+6972.78 -133.714 -88.9651
+6938.6 -143.911 -92.5432
+6898.05 -147.824 -89.2354
+6849.97 -143.795 -78.2129
+6794 -130.167 -59.4948
+6731.03 -105.352 -34.0358
+6663.3 -67.8926 -3.52394
+6593.85 -16.4555 30.1233
+6525.15 50.324 65.3535
+6457.44 134.368 101.145
+6387.82 239.5 136.013
+6311.05 374.41 165.522
+6220.8 558.051 179.751
+6104.52 826.55 165.348
+5920.26 1234.12 117.914
+5558.01 1827.92 60.3002
+4840.38 2570.6 37.8773
+3666.03 3228.34 57.7311
+2268.79 3380.52 28.5073
+1174.83 2795.88 -122.267
+550.389 1907.67 -224.33
+252.001 1156.74 -213.503
+117.252 661.516 -151.975
+56.3125 367.149 -93.3405
+28.0374 200.171 -52.7088
+14.2784 108.106 -28.313
+7.34681 57.9315 -14.7802
+3.81135 30.7752 -7.56581
+1.97188 16.2776 -3.82879
+0.999357 8.59493 -1.92974
+0.487792 4.5233 -0.96811
+0.216733 2.38372 -0.485602
+0.0699662 1.26581 -0.245541
+-0.00971502 0.677376 -0.124859
+-0.0537826 0.368828 -0.0642532
+-0.0797005 0.209163 -0.0341839
+-0.0961519 0.127884 -0.0192857
+-0.108295 0.0912978 -0.0126119
+-0.119754 0.0845409 -0.0111922
+-0.133608 0.104378 -0.0143353
+-0.15418 0.159713 -0.0238485
+-0.188115 0.273261 -0.0442695
+-0.247233 0.493178 -0.0856278
+-0.355518 0.917884 -0.169544
+-0.556398 1.73033 -0.337615
+-0.930198 3.28214 -0.674113
+-1.64102 6.26721 -1.35335
+-3.00136 11.9731 -2.71049
+-5.59626 22.7962 -5.39778
+-10.6413 43.336 -10.6904
+-20.6749 82.0346 -20.8854
+-40.9622 154.061 -39.9165
+-83.6616 287.511 -73.8386
+-178.154 532.515 -128.923
+-392.252 970.974 -204.147
+-875.458 1721.47 -269.949
+-1897.89 2878.68 -237.792
+-3693.97 4265.39 -23.3859
+-5977.87 5185.38 228.774
+-7874.94 4944.62 224.466
+-9008.13 3906.57 124.522
+-9556.71 2745.33 111.042
+-9814.45 1833.59 174.483
+-9955.96 1224.09 233.06
+-10045.8 834.076 246.515
+-10106.6 572.685 222.845
+-10155.4 380.991 183.541
+-10207.7 229.01 141.593
+-10272.3 103.592 99.2335
+-10349.5 -0.593545 54.0203
+-10433.1 -85.7875 4.40328
+-10514.5 -153.225 -47.995
+-10587.3 -203.957 -98.8081
+-10648.4 -239.142 -142.637
+-10698.7 -260.122 -174.844
+-10741.8 -268.403 -192.732
+-10782.3 -265.605 -195.907
+-10824.2 -253.401 -185.969
+-10870 -233.464 -165.81
+-10920.3 -207.428 -138.838
+-10973.6 -176.857 -108.318
+-11027.6 -143.228 -76.9605
+-11079.2 -107.915 -46.7372
+-11125.3 -72.1772 -18.9004
+-11163.3 -37.1511 5.88334
+-11191.3 -3.83749 27.3516
+-11208.4 26.9056 45.4743
+-11214.3 54.3708 60.3248
+-11209.6 78.0074 72.0045
+-11195 97.4229 80.6146
+-11172 112.382 86.2568
+-11142.1 122.802 89.0492
+-11106.9 128.739 89.1411
+-11067.9 130.383 86.7236
+-11026.9 128.031 82.0333
+-10985.1 122.076 75.3524
+-10944 112.983 67.0083
+-10904.8 101.266 57.3725
+0 87.4698 46.8572
+4479.84 2.52206 2.22955
+4485.72 4.34537 5.90911
+4492.83 6.21948 9.7782
+4501.09 8.07669 13.6893
+4510.4 9.83866 17.4803
+4520.57 11.4183 20.9759
+4531.35 12.7225 23.9919
+4542.42 13.6551 26.3401
+4553.41 14.1211 27.8345
+4563.86 14.0304 28.2982
+4573.27 13.3029 27.5685
+4581.12 11.8735 25.503
+4586.87 9.69703 21.9842
+4590.03 6.75369 16.9267
+4590.2 3.05381 10.2885
+4587.06 -1.35731 2.0892
+4580.44 -6.39502 -7.56217
+4570.29 -11.9315 -18.4302
+4556.62 -17.792 -30.1109
+4539.46 -23.7525 -41.9925
+4518.76 -29.5363 -53.2335
+4494.3 -34.8131 -62.7754
+4465.65 -39.1977 -69.4059
+4432.25 -42.2497 -71.8829
+4393.62 -43.4753 -69.112
+4349.63 -42.3282 -60.3417
+4301 -38.2088 -45.3105
+4249.55 -30.4536 -24.2621
+4198.33 -18.301 2.24058
+4151.23 -0.794597 33.6722
+4112.28 23.4688 69.833
+4085.11 57.0032 110.464
+4073.92 105.188 153.134
+4087.69 180.735 188.174
+4146.78 313.94 190.719
+4282.9 572.061 114.459
+4508.33 1083.35 -99.9658
+4729.35 2031.33 -485.049
+4647.47 3529.21 -980.407
+3863.26 5282.98 -1408.47
+2416.93 6269.41 -1589.89
+1176.51 5415.7 -1510.63
+497.908 3665.78 -1177.54
+206.106 2156.31 -770.857
+87.3881 1193.79 -450.228
+38.6063 642.948 -247.119
+18.2729 340.904 -131.077
+8.95478 180.284 -68.4454
+4.39974 95.0886 -35.5045
+2.23928 49.7158 -18.2811
+1.15282 25.9876 -9.39847
+0.567043 13.6274 -4.84729
+0.274556 7.1015 -2.49288
+0.126222 3.7098 -1.28518
+0.0415587 1.96521 -0.670963
+-0.00315986 1.04493 -0.35256
+-0.0264067 0.564149 -0.188068
+-0.0410651 0.319671 -0.104804
+-0.0502957 0.194305 -0.0625937
+-0.0567858 0.137531 -0.0435493
+-0.0630708 0.127278 -0.0399514
+-0.0703867 0.157154 -0.0498052
+-0.0819231 0.242747 -0.0782318
+-0.100904 0.417596 -0.137045
+-0.132024 0.755073 -0.252184
+-0.192995 1.41839 -0.479922
+-0.308353 2.69071 -0.922208
+-0.512934 5.11908 -1.78105
+-0.921808 9.86555 -3.47815
+-1.74205 19.0296 -6.79772
+-3.27635 36.4847 -13.246
+-6.37717 70.1982 -25.887
+-12.997 134.994 -50.4693
+-26.764 257.5 -97.6584
+-57.5243 490.625 -187.699
+-132.889 933.662 -354.825
+-319.409 1751.89 -647.66
+-783.674 3202.66 -1109.01
+-1869.96 5509.54 -1688.23
+-3857.07 8215.65 -2156.29
+-6166.41 9560.34 -2284.52
+-7406.56 8057.81 -2081.26
+-7523.23 5353.96 -1489.02
+-7167.08 3048.43 -752.281
+-6811.58 1603.32 -164.101
+-6593.72 837.221 162.759
+-6485.74 459.05 275.1
+-6437.95 267.819 268.754
+-6424.25 160.137 217.905
+-6437.28 90.6768 159.847
+-6474.83 41.0437 106.157
+-6532.55 3.73103 57.0635
+-6603.04 -24.6335 10.6073
+-6677.93 -45.8432 -33.584
+-6750.34 -61.0504 -73.8438
+-6816.16 -71.1238 -107.457
+-6874.29 -76.7923 -131.897
+-6925.84 -78.7044 -145.71
+-6972.97 -77.4524 -148.837
+-7017.84 -73.583 -142.473
+-7061.86 -67.6026 -128.642
+-7105.41 -59.9812 -109.695
+-7147.84 -51.1554 -87.8895
+-7187.81 -41.5302 -65.1107
+-7223.66 -31.4796 -42.7556
+-7253.78 -21.3459 -21.7435
+-7276.89 -11.4373 -2.60556
+-7292.18 -2.02577 14.3954
+-7299.39 6.65521 29.152
+-7298.69 14.4133 41.6287
+-7290.7 21.0985 51.8141
+-7276.27 26.604 59.7049
+-7256.46 30.8653 65.309
+-7232.41 33.8594 68.6583
+-7205.28 35.6018 69.8203
+-7176.19 36.1433 68.9056
+-7146.21 35.5654 66.0707
+-7116.3 33.9757 61.5173
+-7087.32 31.5017 55.4908
+-7060.02 28.2854 48.2778
+0 24.4768 40.2019
+2048.67 0.0531122 0.560372
+2051.13 0.156633 1.8235
+2054.12 0.260236 3.14371
+2057.62 0.360164 4.46522
+2061.6 0.451774 5.72931
+2066 0.529716 6.87505
+2070.74 0.58815 7.8406
+2075.7 0.620969 8.56509
+2080.72 0.622054 8.9908
+2085.62 0.585581 9.06502
+2090.18 0.506402 8.74136
+2094.15 0.380481 7.98053
+2097.29 0.205366 6.75073
+2099.33 -0.0193677 5.02875
+2100.05 -0.291789 2.80306
+2099.24 -0.607484 0.0803764
+2096.76 -0.959709 -3.10304
+2092.48 -1.33981 -6.66534
+2086.33 -1.73783 -10.4603
+2078.22 -2.14301 -14.2596
+2068.02 -2.54389 -17.7435
+2055.56 -2.92743 -20.5076
+2040.57 -3.27692 -22.0929
+2022.8 -3.56824 -22.0434
+2002.08 -3.76518 -19.9835
+1978.53 -3.81453 -15.695
+1952.78 -3.64297 -9.15534
+1926.13 -3.15678 -0.490319
+1900.62 -2.2418 10.1935
+1878.91 -0.744422 23.0681
+1864.16 1.64566 38.7416
+1860.47 5.8995 57.7435
+1875.55 15.4967 77.9905
+1928.47 42.4272 87.5836
+2064.87 124.28 49.2002
+2373.89 365.21 -124.73
+2972.56 1010.93 -590.654
+3878.29 2519.38 -1532.58
+4716.6 5428.08 -2975.07
+4559.46 9591.93 -4473.73
+2844.59 12768.4 -5123.76
+1216.12 11260.1 -4506.93
+413.063 7425.75 -3163.97
+137.513 4205.73 -1901.45
+47.1202 2264.52 -1052.14
+16.5637 1196.31 -561.443
+7.55161 624.307 -294.766
+3.66409 327.831 -154.317
+1.51913 172.477 -80.8046
+0.811665 89.6136 -42.0868
+0.472146 46.7381 -21.9175
+0.190708 24.583 -11.4586
+0.0901825 12.7588 -5.96551
+0.0560866 6.6405 -3.11005
+0.0147538 3.53688 -1.64263
+-0.00344479 1.87578 -0.872389
+-0.00759702 1.00565 -0.469689
+-0.0145995 0.573146 -0.264659
+-0.0188083 0.347666 -0.160201
+-0.0205787 0.244248 -0.112784
+-0.0230235 0.226517 -0.104019
+-0.0247815 0.279142 -0.129195
+-0.0302628 0.435157 -0.200736
+-0.0388392 0.749292 -0.346922
+-0.0444788 1.34833 -0.630988
+-0.0703581 2.55155 -1.18855
+-0.124498 4.84811 -2.25753
+-0.170435 9.1774 -4.30786
+-0.317681 17.7608 -8.3175
+-0.706854 34.3759 -16.0562
+-1.17428 65.7012 -30.8718
+-2.22282 126.745 -59.6023
+-5.36264 245.219 -115.009
+-11.1094 468.867 -220.899
+-25.0431 900.051 -424.919
+-72.518 1740.67 -815.815
+-213.251 3329.97 -1542.98
+-644.1 6260.49 -2816.61
+-1898.87 11183.9 -4730.47
+-4437 17107.3 -6794.45
+-7098.06 19494.5 -7792.18
+-7327.11 14660.1 -6868.47
+-6014.5 8263.07 -4587.99
+-4618.59 3796.08 -2355.85
+-3713.14 1496.82 -895.904
+-3254.04 527.679 -182.576
+-3050.4 174.856 75.0307
+-2964.67 58.9491 126.439
+-2931.43 22.1111 109.578
+-2926.53 9.05568 80.8532
+-2941.33 2.93306 56.0598
+-2970.65 -0.813351 36.051
+-3009.16 -3.32675 18.4844
+-3051.56 -4.94713 1.85988
+-3093.46 -5.87312 -13.8269
+-3132.03 -6.28855 -27.6207
+-3166.11 -6.3614 -38.354
+-3195.8 -6.22495 -45.2038
+-3221.95 -5.96797 -47.9438
+-3245.54 -5.63749 -46.9315
+-3267.31 -5.25006 -42.9316
+-3287.63 -4.80573 -36.8863
+-3306.39 -4.30045 -29.7119
+-3323.22 -3.73435 -22.1651
+-3337.57 -3.1155 -14.7855
+-3348.94 -2.45985 -7.90093
+-3356.96 -1.78893 -1.67176
+-3361.43 -1.12649 3.8499
+-3362.4 -0.495379 8.66534
+-3360.09 0.0847172 12.7895
+-3354.86 0.598559 16.2297
+-3347.16 1.03565 18.9801
+-3337.49 1.38994 21.0266
+-3326.36 1.65918 22.3561
+-3314.25 1.84428 22.9649
+-3301.62 1.94869 22.8654
+-3288.87 1.9778 22.0893
+-3276.36 1.93845 20.6894
+-3264.38 1.83836 18.7405
+-3253.21 1.68551 16.3398
+0 1.48758 13.6057
+377.082 -0.0194082 -0.358128
+377.594 -0.0167084 -0.353214
+378.208 -0.0144073 -0.349149
+378.923 -0.0125789 -0.348443
+379.736 -0.0113727 -0.352915
+380.64 -0.0110004 -0.363685
+381.624 -0.0117189 -0.381172
+382.667 -0.0138188 -0.405036
+383.744 -0.0176128 -0.434163
+384.822 -0.0234189 -0.466718
+385.861 -0.0315342 -0.500335
+386.813 -0.0421986 -0.532447
+387.628 -0.0555523 -0.560689
+388.252 -0.0715958 -0.583277
+388.632 -0.0901684 -0.599135
+388.719 -0.11096 -0.607576
+388.468 -0.133571 -0.607359
+387.843 -0.157612 -0.595098
+386.806 -0.182841 -0.563268
+385.321 -0.209266 -0.498352
+383.345 -0.237164 -0.380016
+380.826 -0.266911 -0.182361
+377.703 -0.298552 0.121783
+373.919 -0.331081 0.553218
+369.45 -0.3615 1.11643
+364.336 -0.383896 1.79028
+358.729 -0.388839 2.52442
+352.927 -0.363159 3.24662
+347.391 -0.288247 3.88203
+342.756 -0.125989 4.36537
+339.945 0.257642 4.5639
+340.831 1.43834 3.83629
+350.781 5.82811 -0.582633
+386.485 22.7435 -18.4166
+495.424 84.8209 -78.3958
+791.866 294.148 -251.527
+1487.07 928.488 -676.894
+2799.63 2611.44 -1535
+4509.77 6349.79 -2842.88
+5225.82 12669.8 -4047.8
+3192.3 18740.2 -4154.4
+1147.9 16758.7 -3633.82
+278.132 10826.9 -2670.88
+65.9763 6000.33 -1675.44
+13.9657 3211.85 -949.606
+0.135157 1696.86 -516.542
+1.15474 883.992 -276.751
+0.96899 466.1 -146.547
+-0.165635 246.517 -77.3428
+0.0796052 127.833 -40.8059
+0.205713 66.7697 -21.3826
+-0.0146523 35.3479 -11.1807
+-0.0114923 18.2952 -5.87443
+0.0360855 9.49786 -3.08107
+0.00010357 5.1001 -1.61916
+-0.00812019 2.6997 -0.864873
+0.00324576 1.43609 -0.468678
+-0.00203452 0.82493 -0.261416
+-0.00491497 0.500184 -0.15871
+-0.00347365 0.348616 -0.11229
+-0.00405711 0.324063 -0.102898
+-0.00183767 0.398519 -0.129035
+-0.0061734 0.627281 -0.199143
+-0.011725 1.07887 -0.343615
+0.00296017 1.92823 -0.630693
+-0.011694 3.67821 -1.17896
+-0.0546125 6.99225 -2.22771
+0.0137588 13.1346 -4.26958
+-0.00211412 25.4966 -8.18645
+-0.296357 49.441 -15.6625
+-0.0816388 93.8618 -30.1012
+0.182835 180.865 -57.6977
+-1.48646 350.43 -109.854
+-1.63753 666.124 -209.216
+-0.708456 1273.37 -397.352
+-22.6402 2465.92 -746.56
+-102.331 4713.84 -1383.6
+-428.371 8911.89 -2462.65
+-1759.8 16265.7 -3958.04
+-4875.53 25380 -5426.83
+-7952.91 28497.4 -6253.91
+-6827.03 19276.7 -6130.43
+-4202.73 9619.49 -4302.67
+-2214.45 3915.35 -2304.61
+-1180.76 1367.72 -999.867
+-750.868 422.148 -362.205
+-596.933 117.565 -109.094
+-546.76 30.2775 -24.6998
+-531.724 7.51607 -0.809247
+-529.176 1.86397 5.00643
+-532.399 0.347618 6.32599
+-539.067 -0.196139 6.5791
+-547.78 -0.460628 6.33162
+-557.348 -0.592484 5.61882
+-566.814 -0.636806 4.52635
+-575.541 -0.624394 3.24087
+-583.23 -0.582273 1.9768
+-589.852 -0.531364 0.904953
+-595.535 -0.48452 0.116425
+-600.461 -0.446857 -0.378273
+-604.787 -0.417797 -0.627406
+-608.603 -0.3937 -0.708035
+-611.927 -0.370227 -0.699036
+-614.725 -0.343948 -0.663072
+-616.94 -0.31308 -0.638809
+-618.514 -0.277521 -0.64155
+-619.415 -0.238439 -0.669093
+-619.643 -0.197686 -0.709521
+-619.233 -0.157252 -0.748377
+-618.248 -0.118866 -0.773731
+-616.773 -0.0837987 -0.778706
+-614.902 -0.0528283 -0.761832
+-612.735 -0.026308 -0.726003
+-610.365 -0.00428034 -0.676864
+-607.88 0.0134143 -0.621246
+-605.36 0.0270524 -0.565927
+-602.87 0.0369655 -0.516751
+-600.468 0.0434909 -0.477998
+-598.2 0.0469187 -0.451838
+-596.107 0.0474336 -0.437841
+0 0.0450722 -0.432714
+46.3325 -0.00391525 -0.0809614
+46.4057 -0.00422332 -0.091718
+46.4925 -0.00459612 -0.103163
+46.5931 -0.00501933 -0.115237
+46.7074 -0.0054843 -0.127743
+46.8346 -0.00598729 -0.140351
+46.9733 -0.00652831 -0.152604
+47.1213 -0.00711075 -0.163929
+47.2753 -0.00774153 -0.173649
+47.4311 -0.00843072 -0.181005
+47.5835 -0.00919031 -0.185199
+47.7262 -0.0100319 -0.18545
+47.8523 -0.0109633 -0.181056
+47.9543 -0.011986 -0.17147
+48.0245 -0.0130933 -0.156337
+48.0553 -0.0142733 -0.135504
+48.0397 -0.0155164 -0.108961
+47.971 -0.0168273 -0.076726
+47.8427 -0.0182408 -0.0386794
+47.6481 -0.0198333 0.00557806
+47.3799 -0.0217233 0.0567818
+47.0297 -0.0240496 0.115859
+46.5886 -0.0269173 0.183504
+46.0493 -0.0303088 0.259442
+45.4091 -0.0339707 0.341508
+44.6751 -0.037299 0.424816
+43.8697 -0.0392501 0.501492
+43.0363 -0.0381908 0.561256
+42.2441 -0.0309416 0.591943
+41.6069 -0.00689168 0.573606
+41.38 0.0828732 0.439483
+42.4019 0.471419 -0.093596
+47.8305 2.20855 -2.13682
+69.0887 9.68169 -9.51206
+143.346 39.7711 -33.4819
+375.078 151.645 -100.945
+1002.21 530.738 -255.485
+2393.71 1677.67 -499.368
+4619.95 4658.07 -558.706
+6145.95 10763.4 477.126
+3619.47 18349.2 3229.61
+1122.18 16586.3 2958.5
+201.105 10419.6 1487.37
+42.9383 5627.82 602.195
+6.86184 3001.82 280.105
+-4.29203 1587.82 136.974
+0.715784 824.177 62.9113
+1.07163 436.661 33.3142
+-0.63439 232.317 18.1622
+-0.0144625 119.884 8.43795
+0.275167 62.695 4.35894
+-0.0787965 33.4783 2.53987
+-0.043174 17.2327 1.18304
+0.0541628 8.9095 0.569294
+-0.00458421 4.84236 0.361629
+-0.014509 2.5541 0.178776
+0.00864746 1.34358 0.0809433
+0.000566046 0.78214 0.0581964
+-0.00363963 0.474033 0.0347954
+-0.000364542 0.326896 0.0213879
+-0.000822071 0.305308 0.0220672
+0.00392591 0.373401 0.0236821
+-0.00269996 0.595475 0.0439992
+-0.0108641 1.02218 0.0743114
+0.0191025 1.80563 0.108129
+-0.000907444 3.48458 0.245364
+-0.0700868 6.63482 0.487993
+0.0690718 12.3218 0.781498
+0.0811816 24.0394 1.66345
+-0.390389 46.8163 3.53784
+0.0840351 88.0958 6.09689
+0.815958 169.664 12.0463
+-1.68848 330.158 26.0005
+-0.862265 623.489 47.8846
+5.81647 1186.34 92.1547
+-12.2002 2305.15 203.533
+-66.6024 4397.97 420.987
+-309.223 8342.82 919.922
+-1713.24 15622.5 2290.18
+-5496.42 25050.4 4555.45
+-9293.06 27802.4 4969.78
+-6939.47 16309.9 761.262
+-3552.82 7026.6 -830.499
+-1461.72 2504.7 -743.145
+-536.499 778.744 -374.835
+-203.532 216.889 -144.591
+-100.45 54.9332 -46.3986
+-72.0494 12.7924 -12.6696
+-64.991 2.77374 -2.73139
+-63.6499 0.563949 -0.0820901
+-63.9696 0.0919709 0.632891
+-64.9296 -0.0184799 0.867307
+-66.1972 -0.0519733 0.950671
+-67.5854 -0.063398 0.947635
+-68.959 -0.0644436 0.880038
+-70.2286 -0.0596933 0.770207
+-71.3496 -0.0524213 0.641863
+-72.3131 -0.0450561 0.514614
+-73.1328 -0.0390517 0.400508
+-73.8304 -0.0349368 0.303783
+-74.4263 -0.0325533 0.222833
+-74.9336 -0.0313689 0.15303
+-75.3576 -0.0307596 0.0892961
+-75.6973 -0.0302025 0.0278404
+-75.949 -0.0293673 -0.0330975
+-76.1092 -0.0281238 -0.0933121
+-76.1773 -0.0264958 -0.1512
+-76.1561 -0.0245954 -0.204511
+-76.0528 -0.0225612 -0.251031
+-75.8774 -0.0205146 -0.289056
+-75.642 -0.0185382 -0.317614
+-75.3597 -0.0166734 -0.33648
+-75.0437 -0.014929 -0.34605
+-74.7063 -0.0132942 -0.347163
+-74.3587 -0.0117508 -0.340926
+-74.0107 -0.0102806 -0.328571
+-73.6706 -0.00887164 -0.31135
+-73.3453 -0.00752074 -0.290444
+-73.0403 -0.00623811 -0.266884
+-72.7603 -0.00505197 -0.241476
+0 -0.0040109 -0.214745
+4.53335 -0.000394061 -0.0112766
+4.54155 -0.000442714 -0.0130999
+4.55123 -0.000497275 -0.0150289
+4.56239 -0.000555765 -0.0170344
+4.57504 -0.000616513 -0.01907
+4.58909 -0.000678151 -0.0210735
+4.60442 -0.000739543 -0.0229673
+4.62079 -0.000799801 -0.0246612
+4.63787 -0.000858343 -0.0260537
+4.65523 -0.000914942 -0.0270361
+4.67231 -0.000969705 -0.0274974
+4.68845 -0.00102297 -0.0273304
+4.7029 -0.00107513 -0.02644
+4.71484 -0.00112648 -0.0247508
+4.7234 -0.00117714 -0.0222133
+4.72772 -0.00122733 -0.0188075
+4.72695 -0.00127794 -0.0145406
+4.72026 -0.0013315 -0.00944014
+4.70685 -0.00139332 -0.00354371
+4.68588 -0.0014724 0.0031112
+4.65644 -0.00158127 0.0104897
+4.61756 -0.00173418 0.018547
+4.56827 -0.00194261 0.0271936
+4.5078 -0.00220811 0.036238
+4.43594 -0.00251301 0.0453156
+4.35357 -0.00281094 0.0538289
+4.26327 -0.00301659 0.060927
+4.17005 -0.00297397 0.0655079
+4.08303 -0.00226046 0.065954
+4.02349 0.000963428 0.0581115
+4.06602 0.0160839 0.0252544
+4.52959 0.0903488 -0.102944
+6.78305 0.449251 -0.593237
+16.3144 2.10594 -2.3091
+53.1292 9.33342 -7.39924
+181.91 38.961 -18.2317
+580.127 152.203 -20.7891
+1618.77 549.861 106.02
+3668.32 1793.96 917.215
+5719.91 5020.61 4050.44
+3208 10544.3 11099.5
+839.222 9586.93 10079.1
+97.9348 5799.46 5782.48
+27.3516 3036.76 2875.08
+5.30711 1620.01 1514.63
+-5.37441 858.806 797.351
+1.35914 442.666 404.067
+1.46891 236.015 216.013
+-0.805959 126.49 116.347
+0.0102336 64.6869 58.5675
+0.355981 33.8776 30.655
+-0.108376 18.3161 16.8052
+-0.0541431 9.33842 8.43847
+0.0705853 4.79748 4.29396
+-0.00725686 2.65627 2.434
+-0.0187233 1.39211 1.26247
+0.0117503 0.720085 0.639088
+0.00108493 0.42837 0.392006
+-0.00417927 0.259325 0.236699
+0.000126447 0.176065 0.157929
+-0.000629521 0.165845 0.151006
+0.00561246 0.200745 0.179378
+-0.00278429 0.326416 0.298455
+-0.0136226 0.558911 0.50999
+0.0258876 0.968476 0.859477
+0.00170167 1.90243 1.72785
+-0.0904126 3.63492 3.32455
+0.0883268 6.63324 5.93358
+0.115048 13.0435 11.8052
+-0.505019 25.6018 23.4827
+0.0692329 47.5674 43.0222
+1.03939 91.588 83.0421
+-2.29038 179.725 165.502
+-1.67794 336.662 308.36
+7.51966 636.864 582.604
+-9.71975 1246.04 1160.49
+-41.9832 2370.13 2223.37
+-151.552 4495.58 4275.49
+-1281.99 8684.71 8704.23
+-4860.46 14450.5 15258.3
+-8622.66 15930.1 16825
+-5492.8 7583.09 6142.83
+-2394.36 2696.95 1386.25
+-841.981 818.189 159.222
+-257.302 222.661 -30.2758
+-73.0306 55.5975 -26.0578
+-22.1531 12.8756 -10.2413
+-9.54406 2.78128 -3.06853
+-6.70687 0.562916 -0.751684
+-6.15424 0.106758 -0.11921
+-6.12003 0.0175058 0.0432814
+-6.21778 -8.87131e-05 0.0895491
+-6.35909 -0.00402432 0.105626
+-6.51482 -0.00497623 0.109846
+-6.66908 -0.00493523 0.106609
+-6.81206 -0.00443524 0.0982749
+-6.93869 -0.00376204 0.0869773
+-7.04773 -0.00311174 0.0744972
+-7.14025 -0.00259956 0.0620239
+-7.21835 -0.00226634 0.0501246
+-7.28409 -0.00209767 0.0388915
+-7.33891 -0.00204867 0.0281607
+-7.38352 -0.0020664 0.0177172
+-7.4181 -0.00210537 0.00743196
+-7.44253 -0.00213491 -0.00267889
+-7.45674 -0.00213995 -0.0124614
+-7.46091 -0.00211763 -0.0216707
+-7.45559 -0.0020723 -0.0300324
+-7.44165 -0.00201077 -0.0372976
+-7.42029 -0.00193908 -0.0432805
+-7.39284 -0.00186089 -0.047875
+-7.36072 -0.00177738 -0.0510543
+-7.32531 -0.00168792 -0.0528587
+-7.28791 -0.0015911 -0.0533796
+-7.24966 -0.00148556 -0.0527432
+-7.2116 -0.00137056 -0.0510976
+-7.17456 -0.00124629 -0.0486012
+-7.13926 -0.00111402 -0.0454143
+-7.10626 -0.000976347 -0.0416895
+-7.07602 -0.000837456 -0.0375632
+0 -0.000703221 -0.0331496
+0.339232 0 -0.00107124
+0.339915 0 -0.00125247
+0.340718 0 -0.00144373
+0.34164 0 -0.00164148
+0.342682 0 -0.00184077
+0.343839 0 -0.00203521
+0.345098 0 -0.00221717
+0.346443 0 -0.00237794
+0.347847 0 -0.00250797
+0.349275 0 -0.00259717
+0.350684 0 -0.00263538
+0.352019 0 -0.0026129
+0.353221 0 -0.00252115
+0.354222 0 -0.00235335
+0.35495 0 -0.00210507
+0.355332 0 -0.00177465
+0.355296 0 -0.00136319
+0.35477 0 -0.000874322
+0.353682 0 -0.000313662
+0.351958 0 0.000311733
+0.34952 0 0.000993444
+0.346287 0 0.00172086
+0.342178 0 0.00247903
+0.337133 0 0.00324516
+0.331142 0 0.00398443
+0.324283 0 0.00464658
+0.316775 0 0.00516437
+0.309071 0 0.00544787
+0.302177 0 0.00533344
+0.299361 0 0.00429036
+0.315071 0 9.32396e-05
+0.418297 0 -0.0161767
+0.928671 0 -0.0746044
+3.2386 0 -0.243799
+12.9794 0 -0.46998
+50.991 0 1.17704
+185.9 0 20.0998
+606.056 0 146.654
+1659.26 0 817.361
+3225.02 0 3724.26
+1706.27 0 12724.2
+360.072 0 11533.1
+12.3871 0 6497.7
+12.8877 0 3213.4
+3.40533 0 1722.7
+-3.93194 0 915.083
+1.15654 0 462.443
+1.11299 0 249.284
+-0.618483 0 135.308
+0.0095486 0 67.6438
+0.266682 0 35.4944
+-0.0845464 0 19.687
+-0.0412133 0 9.81037
+0.0534107 0 4.96618
+-0.0057429 0 2.86306
+-0.0143063 0 1.47769
+0.00896786 0 0.736275
+0.000963604 0 0.460273
+-0.00306494 0 0.27784
+0.000134482 0 0.182649
+-0.000492451 0 0.175766
+0.0041616 0 0.207207
+-0.00225053 0 0.351047
+-0.0103778 0 0.598131
+0.0197926 0 0.991325
+0.00171972 0 2.02576
+-0.0682909 0 3.9067
+0.0671657 0 6.8617
+0.0909398 0 13.74
+-0.377472 0 27.4956
+0.0505788 0 49.7712
+0.802119 0 95.9196
+-1.72356 0 192.337
+-1.42442 0 355.263
+5.59776 0 665.724
+-6.11735 0 1329.05
+-19.244 0 2520.26
+-20.1558 0 4760.13
+-551.996 0 9744.45
+-2581.98 0 17389.1
+-4851.43 0 19201.8
+-2479.58 0 5619.21
+-894.81 0 1227.56
+-269.377 0 217.99
+-71.9766 0 29.3591
+-17.7246 0 1.6666
+-4.28242 0 -0.654302
+-1.22921 0 -0.325041
+-0.58863 0 -0.0947448
+-0.466684 0 -0.0190771
+-0.450614 0 0.00129244
+-0.456645 0 0.00679572
+-0.468095 0 0.00856084
+-0.480995 0 0.00912417
+-0.493815 0 0.0090514
+-0.505725 0 0.00854837
+-0.516306 0 0.007766
+-0.525436 0 0.0068286
+-0.533183 0 0.00582404
+-0.539702 0 0.00480167
+-0.545147 0 0.00378081
+-0.549637 0 0.00276422
+-0.553237 0 0.00175072
+-0.555971 0 0.000743755
+-0.557848 0 -0.000245026
+-0.558877 0 -0.00119642
+-0.559086 0 -0.00208679
+-0.558529 0 -0.00289208
+-0.557285 0 -0.00359139
+-0.555454 0 -0.00416931
+-0.553145 0 -0.00461694
+-0.550471 0 -0.00493175
+-0.547545 0 -0.00511672
+-0.544467 0 -0.00517913
+-0.541331 0 -0.00512946
+-0.538215 0 -0.00498037
+-0.535188 0 -0.00474584
+-0.532306 0 -0.00444046
+-0.529613 0 -0.00407867
+-0.527148 0 -0.00367403
+0 0 -0.00323871
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.84271 0.00459804 -0.00890726
+1.84657 0.00534025 -0.0104523
+1.85107 0.00613659 -0.0120864
+1.85624 0.00696271 -0.0137748
+1.86208 0.00779366 -0.0154727
+1.86857 0.00860397 -0.0171246
+1.87565 0.00936762 -0.0186663
+1.88324 0.0100587 -0.020026
+1.8912 0.0106527 -0.0211264
+1.89937 0.011127 -0.0218874
+1.9075 0.0114624 -0.0222299
+1.91532 0.0116431 -0.0220794
+1.92251 0.0116568 -0.0213711
+1.92872 0.0114951 -0.0200544
+1.93356 0.0111542 -0.0180978
+1.93664 0.0106373 -0.015492
+1.93757 0.0099595 -0.0122525
+1.93596 0.00915414 -0.00841978
+1.93142 0.00828024 -0.00405885
+1.92357 0.00742815 0.000742335
+1.91197 0.00671915 0.00587313
+1.8962 0.0062942 0.0111981
+1.87584 0.00628691 0.0165513
+1.85058 0.00677944 0.0217266
+1.82035 0.00774485 0.0264685
+1.78554 0.00898655 0.0304675
+1.74726 0.0100776 0.0333661
+1.70774 0.0102057 0.0347601
+1.67178 0.00722786 0.0340698
+1.65451 -0.00810672 0.0296702
+1.72425 -0.0843536 0.0147058
+2.22492 -0.477105 -0.0397455
+4.86586 -2.47629 -0.23926
+17.7764 -12.2889 -0.865483
+77.6735 -58.4144 -1.95266
+341.18 -265.749 3.4192
+1431.7 -1155.22 84.7981
+5593.26 -4774.22 759.324
+19466.8 -18502.8 5446.64
+52484.1 -64851.1 35558
+25929.2 -182790 222069
+3999.52 -166812 200275
+-468.824 -97311.8 108278
+201.654 -49777.3 52320.2
+60.4933 -26946.8 28810.6
+-93.3434 -14432.9 15501.8
+22.8655 -7402.91 7749.14
+23.2964 -3996.38 4245.23
+-14.8762 -2168.03 2341.51
+-0.35158 -1096.62 1149.74
+5.85832 -576.315 605.6
+-1.98899 -317.24 344.774
+-1.00965 -159.627 168.458
+1.20642 -81.2866 84.0367
+-0.124895 -46.2005 50.3949
+-0.337904 -23.9704 25.661
+0.204426 -12.0766 12.2705
+0.0303811 -7.40163 8.03594
+-0.06847 -4.46452 4.84121
+0.00130353 -2.95404 3.06691
+-0.011102 -2.81513 3.00331
+0.0908905 -3.36364 3.46885
+-0.0636989 -5.64453 6.15016
+-0.237344 -9.64547 10.4173
+0.46355 -16.2761 16.5665
+0.0307136 -32.8524 35.311
+-1.53399 -63.1247 68.5961
+1.62279 -112.36 116.065
+2.16171 -223.344 236.546
+-8.23285 -443.019 480.909
+1.98099 -807.979 847.536
+19.4154 -1552.66 1631.15
+-35.8746 -3076.67 3324.3
+-26.8737 -5685.24 6031.5
+133.725 -10624.6 11129.7
+-109.251 -20875 22447
+-290.597 -39234.8 41936.4
+684.589 -73308.2 77093.1
+-6175.09 -145008 161613
+-39080.7 -250093 300388
+-78573.5 -274582 333276
+-28964.5 -97410.6 53420.9
+-8224.95 -27669.6 8157.62
+-2066.68 -7068.21 1127.93
+-479.767 -1681.76 124.204
+-105.642 -377.386 4.92771
+-23.4139 -80.1739 -2.70817
+-6.44327 -16.1358 -1.15986
+-3.14991 -3.07996 -0.30814
+-2.56366 -0.557864 -0.0474683
+-2.4949 -0.0904557 0.0229873
+-2.52965 -0.00315411 0.0447035
+-2.58964 0.014752 0.0537996
+-2.65639 0.0178602 0.0580138
+-2.72246 0.0161428 0.0589787
+-2.78368 0.0124239 0.0573404
+-2.83789 0.00831352 0.0536654
+-2.88446 0.00491178 0.048486
+-2.9237 0.00282834 0.0422405
+-2.95638 0.0022239 0.0352497
+-2.98326 0.00292902 0.0277372
+-3.00496 0.00459431 0.0198707
+-3.02184 0.00682487 0.0118018
+-3.03406 0.00927293 0.00369318
+-3.04172 0.0116828 -0.00427253
+-3.04491 0.013897 -0.0118984
+-3.04385 0.0158372 -0.0189877
+-3.03886 0.0174763 -0.0253603
+-3.03039 0.0188111 -0.030868
+-3.019 0.0198436 -0.0354033
+-3.00528 0.0205718 -0.0389035
+-2.98986 0.0209883 -0.0413488
+-2.9733 0.0210845 -0.0427575
+-2.95615 0.0208551 -0.0431803
+-2.93889 0.0203032 -0.0426926
+-2.92193 0.0194423 -0.0413895
+-2.90559 0.0182969 -0.039379
+-2.89016 0.0169026 -0.0367771
+-2.87584 0.015306 -0.0337028
+-2.86281 0.0135655 -0.0302726
+0 0.0117503 -0.0265968
+29.5601 0.062674 -0.115631
+29.6156 0.0725742 -0.135833
+29.6808 0.0832546 -0.157262
+29.7558 0.0943887 -0.179491
+29.8408 0.10565 -0.201943
+29.9355 0.116711 -0.223902
+30.0392 0.127239 -0.244521
+30.1505 0.136909 -0.262845
+30.2676 0.14541 -0.277836
+30.3876 0.152463 -0.288411
+30.5072 0.157825 -0.293487
+30.6223 0.161284 -0.292043
+30.728 0.16266 -0.283186
+30.8192 0.161799 -0.266214
+30.8903 0.158582 -0.240684
+30.9356 0.152962 -0.20645
+30.9496 0.145039 -0.163691
+30.9271 0.135164 -0.112894
+30.8626 0.124065 -0.0548338
+30.7507 0.112942 0.00946616
+30.5857 0.103478 0.0787432
+30.3614 0.0976763 0.151452
+30.0718 0.0974556 0.225643
+29.7121 0.103978 0.298755
+29.281 0.116769 0.367383
+28.7839 0.132812 0.427122
+28.2364 0.145844 0.472628
+27.6687 0.145525 0.497883
+27.1337 0.112477 0.495691
+26.7467 -0.0141597 0.451219
+26.8962 -0.515568 0.306892
+29.2862 -2.77996 -0.190071
+41.6488 -13.3693 -2.06274
+97.3637 -61.3686 -8.94434
+329.982 -267.011 -31.4213
+1225.99 -1091.06 -88.9268
+4352.28 -4151.55 -150.746
+13879.4 -14530 334.7
+37130.4 -45710 4873.42
+70488.5 -123015 28856.4
+37199.6 -249084 110683
+7780.41 -227245 99931.9
+212.647 -139195 55233.3
+247.14 -73844.7 26908
+51.2266 -39716.3 14480.1
+-97.9426 -21197.8 7711.42
+22.3345 -11000.7 3881.61
+22.7758 -5884.85 2104.05
+-15.1331 -3161.5 1147.73
+-0.0743868 -1623.12 570.016
+5.86328 -851.208 299.61
+-2.07889 -460.042 167.549
+-0.960732 -235.097 82.79
+1.21534 -120.884 41.715
+-0.1543 -66.7679 24.3711
+-0.333163 -35.0098 12.4808
+0.208114 -18.1062 6.12741
+0.020275 -10.7178 3.89597
+-0.0711497 -6.47781 2.34142
+0.00368773 -4.39002 1.51907
+-0.0118086 -4.12446 1.47583
+0.0970782 -5.01515 1.722
+-0.049382 -8.16731 2.9677
+-0.240237 -14.0072 5.06257
+0.462858 -24.3796 8.25995
+0.068623 -47.8696 17.1392
+-1.55206 -91.4161 33.2366
+1.57329 -167.185 57.6331
+2.28648 -328.323 116.07
+-8.28853 -642.897 233.935
+1.62507 -1194.73 419.861
+19.7977 -2296.29 808.494
+-35.4471 -4486.99 1631.06
+-26.4719 -8381.89 2996.03
+139.416 -15793.1 5585.18
+-100.859 -30668.5 11194.3
+-371.934 -57907.4 21167
+-361.932 -108888 39845.6
+-11906.1 -207605 82845.1
+-56132.8 -341320 150712
+-105755 -375267 167133
+-55355.9 -185389 43721.5
+-20446.8 -68596.9 7404.43
+-6292.82 -21587 523.972
+-1727.79 -6062.96 -214.114
+-452.315 -1553.16 -125.76
+-132.486 -366.937 -43.3069
+-59.1735 -80.5986 -11.9186
+-43.6918 -16.6597 -2.65364
+-40.8605 -3.29074 -0.217597
+-40.7848 -0.564688 0.441796
+-41.4167 0.0454374 0.672856
+-42.2944 0.215677 0.782325
+-43.2552 0.257366 0.831152
+-44.2045 0.23849 0.833645
+-45.0823 0.189353 0.799105
+-45.8572 0.132864 0.737296
+-46.5207 0.085747 0.657223
+-47.0791 0.0573646 0.565803
+-47.5444 0.0501544 0.467533
+-47.929 0.0614769 0.364992
+-48.2419 0.085968 0.259687
+-48.4879 0.11764 0.152866
+-48.6686 0.151319 0.0460568
+-48.7842 0.183331 -0.0587303
+-48.8352 0.211573 -0.159075
+-48.8239 0.235196 -0.252392
+-48.7543 0.254141 -0.336228
+-48.633 0.268688 -0.408521
+-48.4678 0.27915 -0.467776
+-48.2677 0.285709 -0.513138
+-48.0418 0.288399 -0.544368
+-47.7989 0.287167 -0.561778
+-47.5473 0.281953 -0.566121
+-47.294 0.272777 -0.558494
+-47.0452 0.259776 -0.540237
+-46.8059 0.243236 -0.512852
+-46.5801 0.223594 -0.477922
+-46.3709 0.201447 -0.43704
+-46.1807 0.177566 -0.391736
+0 0.152896 -0.343422
+390.749 0.565845 -1.10694
+391.382 0.642895 -1.29471
+392.129 0.727523 -1.4948
+392.995 0.817191 -1.70377
+393.98 0.909558 -1.91662
+395.081 1.00241 -2.12684
+396.288 1.09363 -2.32649
+397.587 1.18121 -2.50641
+398.951 1.26336 -2.65644
+400.35 1.33849 -2.76579
+401.741 1.40518 -2.82357
+403.074 1.46202 -2.81939
+404.293 1.50743 -2.74413
+405.334 1.53954 -2.59065
+406.135 1.55614 -2.35445
+406.631 1.55511 -2.03396
+406.762 1.53521 -1.63061
+406.472 1.49741 -1.14829
+405.704 1.44633 -0.592724
+404.401 1.39157 0.0293598
+402.503 1.34794 0.710473
+399.941 1.33381 1.44168
+396.645 1.36673 2.21041
+392.556 1.45585 2.99676
+387.653 1.59201 3.7689
+381.994 1.73763 4.47935
+375.756 1.81991 5.06473
+369.282 1.72963 5.4512
+363.109 1.31519 5.56215
+358.068 0.299802 5.30108
+355.822 -2.22316 4.39259
+361.52 -10.2059 1.63462
+394.893 -40.8939 -7.9851
+531.381 -164.344 -43.0248
+1036.2 -641.4 -163.914
+2734.93 -2352.06 -538.674
+7794.99 -7934.2 -1532.89
+20491.7 -24145.7 -3580.45
+44508.4 -64449.7 -5835.61
+67160.1 -143206 -1983.22
+37922.6 -236166 19549.3
+10139.9 -213568 17064.3
+1234.7 -135640 6838.08
+308.244 -74162.8 1846.74
+44.681 -39873.6 700.92
+-73.5878 -21224.2 281.693
+10.5813 -11084.6 62.6051
+15.1125 -5891.47 35.3994
+-10.6161 -3141.17 23.5632
+-0.415381 -1626.67 1.78238
+4.05403 -851.906 0.587064
+-1.37729 -454.736 2.66473
+-0.696917 -234.538 -0.0562432
+0.834351 -121.379 -0.467012
+-0.0919363 -65.8154 0.335344
+-0.232976 -34.719 0.0290144
+0.138876 -18.2669 -0.130199
+0.013029 -10.5842 0.0504887
+-0.0529308 -6.40009 0.0230331
+-0.00207929 -4.40732 -0.0121582
+-0.010346 -4.10842 0.0142936
+0.0636062 -5.04319 -0.022225
+-0.0405589 -8.05253 0.0333859
+-0.166986 -13.8547 0.0482216
+0.314853 -24.5721 -0.181229
+0.0199013 -47.388 0.0586908
+-1.06961 -90.2208 0.382174
+1.12444 -167.893 -0.704743
+1.48803 -327.101 0.0781855
+-5.72416 -635.743 3.59615
+1.63976 -1196.55 0.547645
+13.8707 -2300.21 3.73936
+-23.6604 -4459.18 35.7232
+-11.6538 -8400.34 54.3339
+103.156 -15924 108.278
+-89.2007 -30734.5 461.891
+-477.385 -58245.9 1147.74
+-1913.57 -109581 3048.97
+-15459.4 -202728 10958.5
+-57342.3 -321743 26861.4
+-101079 -357258 30697.2
+-66572.1 -216816 -2317.66
+-30299.7 -97195.4 -8504.3
+-11334.2 -36049.6 -5246.09
+-3909.1 -11640.2 -2222.63
+-1480.42 -3361.31 -765.118
+-782.82 -884.663 -226.276
+-600.921 -217.491 -57.6767
+-557.261 -52.4216 -10.6293
+-549.534 -13.1517 2.05135
+-552.643 -2.88297 6.06083
+-560.35 0.750369 7.86876
+-570.413 2.40842 8.82142
+-581.415 3.05617 9.15079
+-592.286 3.03946 8.94948
+-602.308 2.6394 8.34238
+-611.118 2.11087 7.47412
+-618.637 1.64648 6.47246
+-624.96 1.35534 5.42619
+-630.256 1.26737 4.38187
+-634.68 1.35482 3.35385
+-638.34 1.55957 2.33932
+-641.283 1.81745 1.33234
+-643.512 2.07468 0.33314
+-645.009 2.29555 -0.648104
+-645.761 2.46292 -1.59206
+-645.778 2.57423 -2.47386
+-645.096 2.63566 -3.26771
+-643.784 2.65669 -3.951
+-641.933 2.64614 -4.50713
+-639.648 2.61019 -4.92676
+-637.041 2.55207 -5.20773
+-634.218 2.47271 -5.35409
+-631.281 2.3719 -5.37473
+-628.316 2.24927 -5.28202
+-625.399 2.10504 -5.09057
+-622.592 1.94046 -4.81619
+-619.942 1.75809 -4.475
+-617.486 1.56202 -4.08261
+-615.255 1.35815 -3.65334
+0 1.15433 -3.19964
+4452.25 2.46303 -7.08383
+4458.19 2.34111 -7.98597
+4465.27 2.25779 -8.96241
+4473.53 2.2188 -10.0107
+4482.97 2.23554 -11.1162
+4493.54 2.32378 -12.2525
+4505.13 2.50246 -13.3812
+4517.56 2.79269 -14.4528
+4530.58 3.21667 -15.4079
+4543.84 3.79589 -16.1793
+4556.89 4.54853 -16.6961
+4569.22 5.48608 -16.8895
+4580.26 6.60944 -16.6988
+4589.39 7.90562 -16.0778
+4596 9.34612 -14.9993
+4599.51 10.8888 -13.4546
+4599.4 12.4837 -11.4485
+4595.21 14.0837 -8.98709
+4586.5 15.6576 -6.06263
+4572.83 17.2008 -2.63846
+4553.7 18.7396 1.35788
+4528.51 20.319 6.02451
+4496.58 21.9675 11.4504
+4457.3 23.6374 17.6536
+4410.38 25.1234 24.5007
+4356.29 25.9798 31.6349
+4296.72 25.4646 38.4528
+4234.97 22.5453 44.1804
+4176.15 15.959 48.0626
+4127.09 4.17262 49.5536
+4096.89 -15.4456 47.9863
+4101.32 -50.7584 39.9552
+4181.67 -130.799 8.96745
+4466.6 -359.778 -107.907
+5339.73 -1079.99 -512.944
+7798.94 -3297.53 -1765.27
+13933.8 -9582.89 -5163.11
+26607 -25321.4 -13032.5
+45449.5 -58420.6 -27714.5
+56578.1 -111386 -46997.2
+33636.3 -159076 -58302.9
+11075.3 -141447 -53194.3
+2332.79 -91927.3 -37641.5
+570.623 -51366.2 -22709.8
+126.459 -27631 -12748
+-11.8334 -14649.4 -6953.11
+15.4568 -7660.47 -3728.17
+13.5213 -4044.97 -1991.11
+-3.14509 -2140.33 -1061.52
+0.975997 -1112.26 -559.341
+2.94722 -581.408 -293.852
+-0.34319 -307.405 -155.221
+-0.208904 -159.275 -81.272
+0.541317 -82.768 -42.442
+-0.00814376 -44.3207 -22.5643
+-0.12378 -23.4458 -12.0225
+0.0597944 -12.4884 -6.43076
+-0.0182882 -7.1457 -3.62184
+-0.06197 -4.31776 -2.19736
+-0.0395395 -3.00891 -1.53314
+-0.0481821 -2.79593 -1.40674
+-0.0137957 -3.44259 -1.76403
+-0.079856 -5.41897 -2.76665
+-0.160921 -9.35282 -4.7644
+0.0764089 -16.7668 -8.67337
+-0.135097 -31.9323 -16.4231
+-0.788101 -60.7594 -31.0361
+0.291565 -114.409 -58.8331
+0.167971 -221.801 -113.363
+-4.20822 -429.724 -217.305
+-0.838487 -816.799 -413.219
+3.79068 -1572.27 -790.271
+-20.4983 -3039.84 -1504.9
+-20.7695 -5775.68 -2833.61
+12.8149 -11022.6 -5332.36
+-207.104 -21264.2 -9996.98
+-883.524 -40512.2 -18440.9
+-3595.48 -76235.7 -33096.2
+-16949.4 -138088 -55243.5
+-51206.7 -214400 -78513.3
+-85820.8 -242390 -86507.4
+-68652.4 -169988 -70127.3
+-39939.9 -88844.8 -41365.8
+-20843.9 -38126.6 -19323.6
+-11762.9 -14177.3 -7543.84
+-8209.03 -4757.34 -2520
+-6974.39 -1516.24 -712.152
+-6567.47 -499.986 -149.128
+-6439.13 -188.1 6.53576
+-6417.88 -78.6668 49.2651
+-6453.44 -26.3774 65.3833
+-6526.11 5.72475 74.2732
+-6621.49 26.136 77.9856
+-6726.45 37.4887 76.1442
+-6830.19 41.934 69.3752
+-6925.51 41.8489 59.3442
+-7008.93 39.4827 48.0297
+-7080.02 36.5597 37.0766
+-7140.11 34.0978 27.4699
+-7191.19 32.4523 19.5138
+-7234.97 31.5011 13.0107
+-7272.51 30.876 7.51063
+-7304.09 30.166 2.53793
+-7329.48 29.0531 -2.25808
+-7348.15 27.3738 -7.03922
+-7359.67 25.1204 -11.7865
+-7363.81 22.4029 -16.3528
+-7360.75 19.396 -20.5317
+-7351.01 16.2894 -24.1209
+-7335.42 13.2513 -26.966
+-7315.02 10.4088 -28.9822
+-7290.92 7.84378 -30.1551
+-7264.24 5.59849 -30.5297
+-7236.04 3.6851 -30.1927
+-7207.25 2.09591 -29.2557
+-7178.68 0.811564 -27.8408
+-7150.99 -0.192644 -26.0689
+-7124.72 -0.941798 -24.0514
+-7100.27 -1.45663 -21.8824
+-7077.97 -1.74862 -19.6321
+0 -1.81619 -17.343
+36718.2 -38.2598 11.6022
+36756.3 -67.7776 33.8627
+36802.9 -98.216 57.0625
+36857.8 -128.482 80.2244
+36920.8 -157.304 102.316
+36991 -183.265 122.267
+37067.2 -204.845 138.991
+37147.6 -220.467 151.427
+37229.8 -228.564 158.568
+37310.8 -227.642 159.497
+37387 -216.363 153.398
+37454.5 -193.622 139.574
+37509.1 -158.634 117.441
+37546.5 -111.022 86.5525
+37562.9 -50.8967 46.6456
+37555 21.0584 -2.24057
+37520.5 103.511 -59.5661
+37457.5 194.408 -124.007
+37364.9 290.913 -193.12
+37241.5 389.342 -263.026
+37085.6 485.114 -328.228
+36894.4 572.709 -381.69
+36664 645.625 -415.324
+36390.2 696.356 -420.904
+36070.3 716.356 -391.319
+35706.4 695.979 -321.794
+35308.8 624.318 -210.416
+34899.1 488.805 -57.1244
+34511.4 274.279 139.57
+34189.7 -39.0445 388.033
+33984 -479.953 708.985
+33952.2 -1095.83 1134.56
+34187.4 -1974.39 1686.37
+34904.1 -3293.09 2304.23
+36617 -5426.58 2682.91
+40355.9 -9148.57 1987.39
+47540 -15900 -1457.66
+58529.8 -27798.7 -10045.1
+68854.7 -46388 -25332.5
+66009.8 -68676.6 -44337.9
+40446.7 -82035.6 -56600.8
+17129.9 -70725.5 -51911.6
+5989.75 -47795.1 -36156
+2151.02 -28288 -21141
+799.376 -15870.6 -11460.9
+302.66 -8670.39 -6043.71
+140.613 -4652.97 -3140.21
+67.6575 -2485.04 -1641.3
+28.8558 -1320.25 -862.081
+15.1561 -693.626 -447.017
+8.5027 -363.925 -232.747
+3.57123 -191.362 -122.57
+1.71735 -99.855 -63.5316
+1.0111 -52.2056 -32.9662
+0.294206 -27.6699 -17.5766
+-0.0264168 -14.6967 -9.30091
+-0.116143 -7.91732 -4.95099
+-0.236569 -4.47566 -2.81426
+-0.309325 -2.7089 -1.69631
+-0.343629 -1.90899 -1.1784
+-0.38768 -1.76552 -1.09038
+-0.422729 -2.18546 -1.35127
+-0.516641 -3.39224 -2.13355
+-0.66516 -5.85679 -3.69443
+-0.785684 -10.6089 -6.66829
+-1.23757 -19.9634 -12.7055
+-2.18265 -37.8971 -24.1747
+-3.13831 -72.0439 -45.7176
+-5.82193 -138.711 -88.7243
+-12.6556 -267.152 -171.795
+-21.8584 -510.689 -327.779
+-41.9173 -978.741 -633.069
+-98.48 -1872.5 -1225.79
+-205.689 -3544.36 -2345.01
+-453.177 -6683.38 -4516.63
+-1221.51 -12558.8 -8752.85
+-3327.84 -23219.6 -16729.3
+-9365.26 -41886.7 -31128.2
+-26930.2 -71664 -53589.7
+-63649.9 -107129 -77345.4
+-103754 -124931 -85147.3
+-108039 -104480 -68091.2
+-91778.4 -70081.3 -39612.3
+-74793.6 -41519.8 -15947.5
+-63933.6 -23457.5 -2475.78
+-58383.3 -13391.6 2901.46
+-55804.2 -7951.12 3930.77
+-54608.8 -4877.9 3308.94
+-54077.9 -2984.87 2375.43
+-53959.2 -1711.88 1595.41
+-54159.3 -800.661 1030.43
+-54604.7 -126.842 613.998
+-55208.7 374.987 273.622
+-55881.4 743.121 -31.0153
+-56548.2 1002.61 -307.718
+-57160.9 1171.68 -544.757
+-57699.5 1264.79 -725.123
+-58165.6 1294.21 -836.704
+-58573.2 1270.71 -876.934
+-58938.9 1203.99 -852.745
+-59275.5 1102.85 -777.696
+-59588.7 975.342 -668.143
+-59877.3 828.827 -539.853
+-60134.7 670.051 -405.767
+-60352.2 505.162 -275.057
+-60521.4 339.715 -153.237
+-60636.4 178.663 -42.9445
+-60694.5 26.3322 55.037
+-60696.8 -113.605 140.815
+-60647.3 -238.15 214.695
+-60552.5 -344.995 276.805
+-60420.1 -432.526 327.007
+-60258.7 -499.808 364.983
+-60076.5 -546.564 390.404
+-59881.4 -573.125 403.096
+-59680.5 -580.381 403.168
+-59480 -569.707 391.084
+-59285.1 -542.881 367.703
+-59100.1 -501.997 334.298
+-58928.7 -449.365 292.558
+0 -387.419 244.563
+79241.5 -152.761 42.3546
+79337.7 -267.233 109.184
+79455.3 -385.459 179.359
+79593.5 -503.197 250.234
+79750.3 -615.531 318.872
+79923 -716.988 382.09
+80107.3 -801.695 436.532
+80298 -863.58 478.765
+80488.4 -896.611 505.392
+80671 -895.073 513.164
+80837 -853.871 499.079
+80977.3 -768.848 460.482
+81082.6 -637.124 395.161
+81144.4 -457.418 301.472
+81155.6 -230.379 178.551
+81111 41.1194 26.6363
+81007.7 351.693 -152.436
+80845.1 693.2 -354.586
+80624.1 1054.53 -572.744
+80346.2 1421.43 -796.164
+80011.7 1776.4 -1010
+79618.4 2098.68 -1195.47
+79161.1 2364.34 -1330.8
+78632.2 2546.56 -1393.23
+78025.2 2616.13 -1361.83
+77339.4 2542.2 -1220.75
+76586.8 2293.18 -961.609
+75797.4 1837.84 -583.942
+75020.2 1146.07 -92.2834
+74316.3 188.822 509.62
+73746.1 -1063.96 1224.12
+73354.7 -2650 2055.97
+73179.1 -4630.87 2985.28
+73297.9 -7126.36 3902.59
+73926.3 -10376.1 4511.85
+75436.8 -14817.6 4273.04
+77968 -21094.5 2563.27
+80186.3 -29745.5 -756.499
+77651.6 -40210.1 -4623.69
+63985.5 -49260.3 -7158.72
+39480.6 -50889.6 -8230.98
+19139.2 -41612.7 -10281.9
+8268.48 -28298.1 -9803.89
+3561.16 -17309.7 -7041.76
+1570.81 -10070.8 -4259.73
+716.289 -5697.77 -2365.22
+344.749 -3161.79 -1250.72
+170.141 -1732.54 -646.335
+84.2841 -938.883 -331.015
+42.9233 -503.206 -167.341
+22.023 -267.945 -84.4775
+10.9235 -142.15 -42.9592
+5.32941 -75.0937 -21.6601
+2.46523 -39.6808 -10.9459
+0.868732 -21.0936 -5.65075
+0.0233447 -11.2912 -2.91265
+-0.422261 -6.14351 -1.51628
+-0.694938 -3.47401 -0.833781
+-0.865994 -2.11609 -0.484345
+-0.987184 -1.50544 -0.325914
+-1.10296 -1.39262 -0.297073
+-1.23977 -1.72515 -0.373305
+-1.45277 -2.65008 -0.607384
+-1.80579 -4.54905 -1.09176
+-2.40101 -8.22778 -2.03812
+-3.55043 -15.316 -3.97797
+-5.72731 -28.8545 -7.78794
+-9.67592 -54.6576 -15.2187
+-17.479 -104.06 -30.3255
+-33.0173 -198.02 -60.392
+-62.5021 -375.17 -119.28
+-121.649 -708.254 -237.227
+-245.942 -1328.52 -470.152
+-502.491 -2466.23 -919.24
+-1060.32 -4534.05 -1779.21
+-2372.82 -8247.8 -3353.32
+-5491.93 -14752.6 -5995.5
+-12998.8 -25728.1 -9760.71
+-30530.8 -42715.5 -13104.8
+-63443.3 -63598.2 -12774.5
+-102931 -78195.6 -9532.15
+-124620 -75417.5 -9454.71
+-128365 -60938.7 -6886.48
+-124719 -44510.2 -1407.92
+-120736 -31258.1 3653.04
+-118316 -21921.4 6272.54
+-117095 -15492.2 6595.19
+-116491 -10861.1 5648.46
+-116266 -7301.55 4309.73
+-116408 -4430.16 3019.22
+-116930 -2064.56 1892.36
+-117784 -118.427 902.73
+-118857 1454.24 4.64523
+-120016 2684.56 -816.165
+-121148 3599.6 -1538.8
+-122186 4226.63 -2124.47
+-123111 4594.49 -2537.06
+-123938 4733.58 -2757.52
+-124702 4675.18 -2789.23
+-125436 4450.71 -2655.5
+-126160 4090.97 -2392.66
+-126878 3625.59 -2041.86
+-127578 3082.62 -1642.23
+-128235 2488.3 -1226.37
+-128820 1866.8 -818.484
+-129308 1240.14 -434.623
+-129676 628.019 -84.1871
+-129911 47.685 228.033
+-130009 -486.179 499.948
+-129975 -961.565 730.747
+-129819 -1369.2 920.074
+-129557 -1702.59 1067.74
+-129207 -1957.95 1173.79
+-128790 -2134.11 1238.69
+-128324 -2232.35 1263.57
+-127830 -2256.14 1250.34
+-127324 -2210.87 1201.76
+-126824 -2103.51 1121.42
+-126342 -1942.24 1013.75
+-125890 -1736.11 883.907
+0 -1494.65 737.718
+122438 -299.236 32.6912
+122582 -522.115 116.815
+122755 -752.359 206.057
+122952 -981.683 297.144
+123172 -1200.5 386.418
+123409 -1398.16 469.884
+123658 -1563.24 543.289
+123909 -1683.98 602.242
+124155 -1748.74 642.344
+124384 -1746.54 659.32
+124585 -1667.71 649.135
+124747 -1504.48 608.103
+124858 -1251.65 532.999
+124911 -907.209 421.22
+124898 -472.969 271.065
+124818 44.9202 82.1943
+124670 635.48 -143.666
+124462 1282.52 -401.786
+124199 1964.34 -683.356
+123890 2653.56 -974.487
+123537 3317.13 -1255.62
+123141 3916.51 -1501.79
+122693 4408.23 -1684.13
+122175 4744.9 -1773
+121567 4876.87 -1742.45
+120852 4754.68 -1575.57
+120023 4332.42 -1269.08
+119090 3571.96 -835.216
+118084 2447.65 -299.09
+117043 950.563 308.847
+115992 -909.453 962.183
+114908 -3107.24 1642
+113707 -5616.93 2323.37
+112251 -8444.63 2939.89
+110385 -11680.3 3349.73
+107893 -15542 3382.2
+104163 -20319.5 3072.28
+97511.9 -26051.1 3017.23
+84929.6 -31850.8 4260.92
+64275.5 -35344.2 6795.77
+39339.8 -33576.2 7650.8
+20152.8 -26261.8 3713.82
+9469.15 -17619.1 -219.617
+4413.01 -10834.8 -1632.31
+2100.59 -6399.97 -1510.34
+1030.61 -3699.18 -1021.95
+521.629 -2104.17 -601.338
+268.595 -1180.93 -326.893
+139.325 -654.273 -170.12
+72.6586 -358.187 -85.9191
+37.7293 -194.311 -42.5338
+19.2296 -104.72 -20.8607
+9.46619 -56.1739 -10.1244
+4.28102 -30.0962 -4.88496
+1.48239 -16.173 -2.36754
+-0.0356496 -8.75434 -1.14368
+-0.874528 -4.81707 -0.551816
+-1.36385 -2.74784 -0.271032
+-1.67235 -1.69114 -0.135731
+-1.89868 -1.21586 -0.0758503
+-2.11104 -1.12941 -0.0620447
+-2.3689 -1.39512 -0.0865001
+-2.75342 -2.12143 -0.167987
+-3.39214 -3.60352 -0.351079
+-4.51426 -6.45338 -0.737911
+-6.57246 -11.865 -1.56235
+-10.398 -22.0887 -3.27792
+-17.5402 -41.3592 -6.83033
+-31.0884 -77.618 -14.2474
+-56.9338 -145.427 -29.4576
+-106.116 -271.182 -60.2037
+-200.958 -502.438 -121.663
+-387.312 -922.847 -240.205
+-758.312 -1676.53 -458.619
+-1521.74 -3012.27 -832.184
+-3170.94 -5355.5 -1372.02
+-6831.94 -9404.04 -1891.72
+-15021.2 -16212 -1596.77
+-32582.5 -26863.7 1471.72
+-64261.7 -40617.6 8675.11
+-105234 -52202.7 15208.1
+-138704 -54672.4 12949.8
+-158637 -48687.4 7805.79
+-168835 -39299.9 5098.52
+-174275 -30422.1 4779.02
+-177602 -23368 5006.33
+-179736 -17900.2 4788.72
+-181073 -13409 4107.35
+-181980 -9455.18 3244.67
+-182801 -5847.53 2379.43
+-183745 -2555.86 1534.95
+-184860 380.888 669.082
+-186069 2910.61 -242.153
+-187255 4993.65 -1171.27
+-188318 6611.26 -2047.65
+-189214 7765.91 -2785.52
+-189960 8478.12 -3312.68
+-190612 8782.2 -3589.12
+-191243 8721.88 -3612.42
+-191912 8346.62 -3412.26
+-192657 7708.57 -3038.94
+-193480 6860.49 -2550.62
+-194357 5854.14 -2002.73
+-195244 4739.21 -1441.19
+-196087 3562.56 -899.548
+-196834 2367.58 -399.25
+-197441 1193.63 48.0813
+-197880 75.597 437.641
+-198132 -956.564 768.576
+-198197 -1878.14 1041.83
+-198083 -2669.93 1258.84
+-197808 -3318.32 1421.1
+-197395 -3815.24 1530.14
+-196870 -4157.94 1587.78
+-196261 -4348.65 1596.46
+-195595 -4394.05 1559.36
+-194900 -4304.66 1480.54
+-194199 -4094.16 1364.93
+-193514 -3778.66 1218.34
+-192864 -3375.93 1047.35
+0 -2904.69 859.318
+157468 -380.188 -56.1582
+157623 -662.239 -16.3549
+157797 -953.604 28.1228
+157987 -1243.76 75.668
+158189 -1520.56 124.535
+158398 -1770.5 172.834
+158608 -1979.16 218.546
+158811 -2131.71 259.552
+158998 -2213.53 293.654
+159162 -2210.94 318.566
+159294 -2111.97 331.887
+159385 -1907.19 331.039
+159429 -1590.5 313.215
+159422 -1159.97 275.388
+159367 -618.52 214.484
+159267 25.4033 127.814
+159133 757.339 13.8294
+158980 1556.42 -126.778
+158824 2395.18 -289.777
+158680 3239.48 -466.136
+158556 4048.74 -641.249
+158450 4776.49 -795.151
+158344 5371.33 -904.25
+158208 5778.59 -944.917
+157998 5942.96 -898.736
+157666 5812.11 -758.491
+157172 5341.78 -532.965
+156491 4501.88 -247.847
+155615 3283.23 59.8875
+154545 1703.53 355.174
+153256 -189.971 623.093
+151656 -2324.97 884.9
+149542 -4621.63 1201.77
+146571 -7028.02 1661.5
+142241 -9569.48 2363.39
+135837 -12379 3442.62
+126282 -15626.5 5154.29
+112034 -19242.8 7872.23
+91664.3 -22476.2 11602.4
+65914.8 -23738.2 14879.4
+39958.5 -21532.1 14594.4
+20969.5 -16333.6 9485.76
+10217.1 -10766.9 4067.04
+4927.74 -6565.49 1046.88
+2427.76 -3876.37 -43.0412
+1233.45 -2256.69 -272.52
+643.845 -1300.31 -232.034
+341.146 -741.275 -147.731
+181.744 -417.584 -83.2545
+96.7381 -232.509 -43.8018
+51.0212 -128.193 -21.9863
+26.354 -70.1398 -10.698
+13.0468 -38.1743 -5.075
+5.8489 -20.7327 -2.34965
+1.93098 -11.2797 -1.06322
+-0.221396 -6.17894 -0.464531
+-1.42776 -3.44011 -0.189876
+-2.13338 -1.98472 -0.0662275
+-2.58132 -1.23632 -0.0106003
+-2.91317 -0.899122 0.0136367
+-3.22506 -0.839727 0.0213708
+-3.60418 -1.03331 0.0157439
+-4.16399 -1.55466 -0.0112671
+-5.08765 -2.6083 -0.0823607
+-6.70259 -4.61287 -0.25062
+-9.61824 -8.3709 -0.634131
+-14.9665 -15.3823 -1.4786
+-24.8559 -28.4238 -3.30143
+-43.2549 -52.59 -7.16382
+-77.5898 -97.0824 -15.111
+-141.719 -178.285 -30.9895
+-262.172 -325.02 -61.3347
+-491.206 -587.154 -114.897
+-934.457 -1049.86 -197.956
+-1820.24 -1859.65 -289.639
+-3671.21 -3271.44 -260.185
+-7667.9 -5721.93 308.198
+-16342 -9903.76 2458.07
+-34253.4 -16594.1 7999.15
+-66034.5 -25565.6 17546.3
+-109278 -33880 26171.2
+-151655 -37155.2 26169.3
+-184538 -34765.4 20007.5
+-206898 -29404.7 13176.8
+-221264 -23782.9 8174
+-230256 -19067.4 4966.05
+-235712 -15225 2947.9
+-238915 -11833 1731.74
+-240824 -8565.19 1094.36
+-242117 -5308.45 819.103
+-243182 -2105.63 673.628
+-244149 930.021 467.87
+-244991 3675.27 104.986
+-245619 6028.37 -409.743
+-245972 7920.92 -996.768
+-246053 9319.11 -1546.54
+-245936 10219.5 -1960.65
+-245735 10642.8 -2177.98
+-245577 10627.2 -2183
+-245563 10222.8 -1999.7
+-245756 9486.96 -1677.57
+-246170 8480.45 -1275.78
+-246775 7265.23 -850.11
+-247515 5902.42 -444.54
+-248316 4450.9 -87.8865
+-249104 2966.11 205.629
+-249814 1499.08 433.313
+-250396 95.533 599.955
+-250817 -1204.92 714.003
+-251063 -2369.35 784.673
+-251132 -3371.99 820.215
+-251034 -4194.41 827.236
+-250788 -4825.48 810.73
+-250415 -5261.13 774.45
+-249940 -5503.82 721.358
+-249390 -5561.87 654.002
+-248790 -5448.63 574.792
+-248163 -5181.56 486.224
+-247531 -4781.24 391.057
+-246915 -4270.38 292.471
+0 -3672.92 194.164
+180806 -321.187 -199.728
+180937 -558.775 -250.183
+181068 -804.188 -298.256
+181195 -1048.54 -342.177
+181313 -1281.57 -379.803
+181419 -1491.9 -408.731
+181509 -1667.4 -426.414
+181579 -1795.6 -430.31
+181624 -1864.27 -418.082
+181641 -1862.01 -387.856
+181628 -1778.93 -338.54
+181584 -1607.33 -270.187
+181511 -1342.41 -184.346
+181415 -982.91 -84.3301
+181306 -531.731 24.7402
+181201 3.5961 136.235
+181120 610.519 242.762
+181089 1271.23 337.358
+181131 1962.57 415.023
+181269 2656.12 474.265
+181513 3318.53 518.215
+181857 3912.08 554.729
+182275 4395.73 594.909
+182719 4726.65 649.772
+183122 4862.63 725.329
+183408 4765.36 817.263
+183501 4404.79 907.51
+183343 3764.32 965.85
+182893 2846.31 959.531
+182116 1676.5 872.086
+180953 305.282 728.651
+179258 -1197.41 620.349
+176732 -2757.58 717.405
+172851 -4325.55 1263.27
+166797 -5911.6 2549.89
+157431 -7602.25 4874.46
+143350 -9500.81 8441.97
+123288 -11538.8 13101.7
+97187.5 -13222.8 17837.8
+67764.7 -13632.1 20421.6
+40791.1 -12059.8 18480.9
+21671.8 -8977.11 12421.1
+10750.2 -5835.41 6329.19
+5266.42 -3520.51 2577.91
+2634.13 -2065.4 867.424
+1359.96 -1201.67 230.495
+721.354 -695.584 34.8281
+388.401 -399.715 -9.77342
+210.094 -227.421 -12.9353
+113.275 -128.02 -8.33012
+60.3655 -71.3797 -4.24668
+31.417 -39.4909 -1.86023
+15.5876 -21.7297 -0.683177
+6.92347 -11.9273 -0.16649
+2.16237 -6.5551 0.0294616
+-0.477705 -3.62645 0.0877012
+-1.97069 -2.03895 0.0944149
+-2.85011 -1.18816 0.0861127
+-3.41243 -0.748027 0.0774222
+-3.8319 -0.549463 0.0732913
+-4.22735 -0.51567 0.0750963
+-4.7073 -0.632438 0.083154
+-5.41147 -0.942965 0.0970325
+-6.56456 -1.56499 0.114646
+-8.56423 -2.73735 0.128452
+-12.1382 -4.91288 0.116971
+-18.6273 -8.92982 0.0277623
+-30.5032 -16.3216 -0.260764
+-52.3246 -29.864 -0.998294
+-92.4878 -54.5135 -2.6244
+-166.463 -98.9956 -5.77177
+-303.238 -178.482 -10.6048
+-558.849 -319.054 -13.6982
+-1046.14 -565.322 2.13653
+-2007.48 -994.828 101.097
+-3991.63 -1745.87 484.267
+-8230.18 -3063.98 1672.18
+-17298.4 -5351.41 4777.79
+-35649.1 -9078.33 11454.7
+-67936 -14191.9 22090.8
+-113311 -19169.3 32385.5
+-162263 -21566.6 35270.8
+-204904 -20694.7 30240.7
+-236781 -17880.1 21560.7
+-258223 -14730.3 13127.2
+-271571 -12033.6 6688.16
+-279359 -9808.13 2510.7
+-283658 -7777.81 263.565
+-285971 -5712.43 -558.725
+-287267 -3531.82 -488.656
+-288065 -1277.33 -7.50341
+-288548 948.427 519.605
+-288709 3029.4 880.649
+-288478 4863.88 1012.05
+-287822 6376.95 958.782
+-286786 7523.5 818.605
+-285497 8285.93 690.894
+-284125 8669.37 643.082
+-282850 8696.32 698.223
+-281819 8401.54 839.654
+-281124 7827.85 1025.35
+-280800 7022.87 1204.74
+-280825 6036.49 1332.75
+-281137 4919.07 1378.64
+-281654 3719.95 1329.25
+-282289 2486.21 1187.68
+-282960 1261.65 969.203
+-283601 85.8001 696.12
+-284164 -1006.82 392.916
+-284619 -1987.38 82.5898
+-284951 -2833.21 -215.557
+-285156 -3527.96 -486.802
+-285238 -4061.68 -720.962
+-285208 -4430.52 -911.837
+-285080 -4636.33 -1056.5
+-284868 -4686.02 -1154.62
+-284589 -4590.87 -1207.8
+-284258 -4365.68 -1219
+-283890 -4027.92 -1192.01
+-283501 -3596.9 -1130.89
+0 -3092.9 -1039.57
+193378 -125.687 -330.419
+193477 -218.516 -467.697
+193557 -314.395 -605.079
+193612 -409.848 -737.529
+193640 -500.861 -859.159
+193639 -582.988 -963.427
+193606 -651.486 -1043.39
+193541 -701.497 -1092.03
+193445 -728.256 -1102.67
+193319 -727.337 -1069.48
+193168 -694.913 -988.063
+192997 -628.031 -856.114
+192816 -524.884 -674.055
+192640 -385.063 -445.554
+192487 -209.789 -177.765
+192383 -2.09627 118.85
+192355 233.033 431.252
+192437 488.59 745.12
+192659 755.525 1046.58
+193046 1022.81 1324.07
+193609 1277.57 1569.81
+194340 1505.38 1780.31
+195205 1690.66 1955.34
+196144 1817.33 2095.15
+197073 1869.77 2196.18
+197895 1834.13 2246.72
+198515 1700 2224.93
+198849 1462.46 2102.46
+198838 1124.07 1856.78
+198429 696.446 1493.18
+197539 200.526 1073.46
+195992 -335.751 743.851
+193421 -883.611 751.805
+189169 -1424.23 1441.71
+182191 -1961.55 3217.41
+171044 -2526.96 6442.58
+154127 -3156.05 11214.4
+130414 -3821.41 16955.8
+100778 -4350.65 21991.8
+69111.3 -4441.01 23782
+41431.2 -3885.13 20628.4
+22150.6 -2866.07 13932.7
+11086.4 -1849.19 7495.19
+5470.07 -1108.21 3396.28
+2753.31 -646.912 1376.86
+1431.13 -375.582 525.948
+764.623 -217.584 199.58
+414.88 -125.408 79.6741
+226.112 -71.6648 34.7721
+122.718 -40.5518 16.7379
+65.7509 -22.737 8.73935
+34.3428 -12.6519 4.79526
+17.0426 -7.00222 2.70061
+7.51024 -3.86566 1.54455
+2.24081 -2.13653 0.894045
+-0.697759 -1.18858 0.526434
+-2.36859 -0.672027 0.319776
+-3.35778 -0.393897 0.205299
+-3.99355 -0.249531 0.144755
+-4.47001 -0.184364 0.117598
+-4.9202 -0.173522 0.114209
+-5.46583 -0.212412 0.132802
+-6.26299 -0.31506 0.178855
+-7.56139 -0.519601 0.267078
+-9.80014 -0.90302 0.426394
+-13.7767 -1.61046 0.709974
+-20.9513 -2.9091 1.21409
+-33.9973 -5.28471 2.11231
+-57.8017 -9.61092 3.73175
+-101.287 -17.4391 6.73607
+-180.774 -31.4865 12.5922
+-326.573 -56.4582 25.033
+-596.851 -100.433 54.515
+-1108.69 -177.279 130.988
+-2113.59 -311.327 340.736
+-4178.98 -546.641 919.128
+-8572.45 -962.92 2432.49
+-17904.4 -1692.61 6015.44
+-36587.1 -2892.87 13236.2
+-69319.9 -4557.31 24438.4
+-116160 -6212.47 35832.9
+-169194 -7071.53 40774.2
+-217957 -6860.13 36981.2
+-255913 -5976.61 27601.1
+-281873 -4955.62 17148.3
+-297894 -4076.01 8538.48
+-306957 -3350.41 2754.38
+-311698 -2681.21 -377.799
+-314015 -1983.07 -1487.55
+-315086 -1224.52 -1291.08
+-315516 -420.199 -428.116
+-315511 390.489 615.199
+-315067 1161.47 1537.23
+-314117 1851.09 2210.63
+-312637 2427.45 2638.14
+-310699 2870.12 2892.27
+-308459 3169.56 3059.21
+-306128 3325.45 3201.05
+-303923 3344.65 3340.5
+-302024 3239.26 3463.93
+-300552 3024.9 3535.28
+-299557 2719.44 3512.73
+-299029 2341.89 3362.8
+-298909 1911.7 3068.91
+-299115 1448.1 2634.09
+-299551 969.571 2078.88
+-300130 493.389 1436.26
+-300776 35.235 745.54
+-301429 -391.166 46.648
+-302048 -774.316 -624.202
+-302606 -1105.14 -1237.14
+-303085 -1377.09 -1769.69
+-303479 -1586.15 -2206.76
+-303783 -1730.72 -2539.91
+-304001 -1811.47 -2766.37
+-304135 -1831.09 -2888.11
+-304191 -1794 -2910.75
+-304175 -1705.98 -2842.7
+-304093 -1573.92 -2694.2
+-303955 -1405.36 -2476.42
+0 -1208.29 -2200.8
+197261 125.687 -382.743
+197346 218.516 -555.368
+197403 314.395 -729.14
+197428 409.848 -897.693
+197419 500.861 -1053.61
+197372 582.988 -1188.66
+197289 651.486 -1294.11
+197169 701.497 -1361.13
+197014 728.256 -1381.27
+196830 727.337 -1347.11
+196622 694.913 -1252.92
+196400 628.031 -1095.49
+196177 524.884 -874.786
+195969 385.063 -594.673
+195799 209.789 -263.17
+195696 2.09628 107.666
+195690 -233.033 502.466
+195817 -488.59 903.895
+196110 -755.525 1294.47
+196594 -1022.81 1658.55
+197280 -1277.57 1983.98
+198161 -1505.38 2262.78
+199198 -1690.66 2490.32
+200327 -1817.33 2662.82
+201459 -1869.77 2773.31
+202490 -1834.13 2807.76
+203316 -1700 2743.62
+203848 -1462.46 2554.18
+204018 -1124.07 2221.79
+203769 -696.446 1760.7
+203012 -200.525 1246.73
+201558 335.751 845.97
+199017 883.611 832.626
+194681 1424.23 1585.02
+187421 1961.55 3543.13
+175686 2526.96 7087.85
+157806 3156.05 12269
+132849 3821.41 18352.1
+102017 4350.65 23439.4
+69595 4441.01 24911.9
+41665.2 3885.13 21326.5
+22319.3 2866.07 14408
+11201.8 1849.19 7859.44
+5538.75 1108.21 3654.92
+2792.74 646.912 1540.77
+1454.31 375.582 622.955
+778.6 217.584 254.876
+423.414 125.408 110.388
+231.279 71.6648 51.5199
+125.773 40.5518 25.7211
+67.4968 22.737 13.4805
+35.2905 12.6519 7.26489
+17.51 7.00222 3.97377
+7.69216 3.86566 2.19587
+2.25426 2.13653 1.22613
+-0.783979 1.18858 0.696069
+-2.51465 0.672027 0.40726
+-3.5411 0.393897 0.251576
+-4.20201 0.249531 0.170794
+-4.69814 0.184364 0.134596
+-5.16728 0.173522 0.12912
+-5.73559 0.212412 0.151776
+-6.56466 0.31506 0.210321
+-7.91249 0.519601 0.325954
+-10.2318 0.90302 0.541543
+-14.3427 1.61046 0.938419
+-21.7442 2.9091 1.6683
+-35.174 5.28471 3.01286
+-59.6239 9.61092 5.50584
+-104.184 17.4391 10.1977
+-185.442 31.4865 19.2719
+-334.136 56.4582 37.7511
+-609.135 100.433 78.3543
+-1128.97 177.279 175.024
+-2148.33 311.327 420.795
+-4241.41 546.641 1061.33
+-8688.61 962.92 2676.34
+-18113.2 1692.61 6405.74
+-36916.6 2892.87 13792
+-69819.4 4557.31 25176.6
+-117177 6212.47 36953.4
+-171598 7071.53 42619.2
+-222449 6860.13 39314.5
+-262497 5976.61 29763.6
+-290009 4955.62 18647.7
+-306928 4076.01 9282.11
+-316388 3350.41 2915.62
+-321230 2681.21 -554.113
+-323499 1983.07 -1790.44
+-324451 1224.52 -1568.81
+-324719 420.199 -581.607
+-324518 -390.489 643.531
+-323840 -1161.47 1772.68
+-322617 -1851.09 2653.78
+-320828 -2427.45 3271.67
+-318551 -2870.12 3686.78
+-315953 -3169.56 3977.86
+-313260 -3325.45 4203.01
+-310700 -3344.65 4383.39
+-308466 -3239.26 4505.77
+-306690 -3024.9 4536.02
+-305429 -2719.44 4435.78
+-304678 -2341.89 4176.3
+-304381 -1911.7 3746.88
+-304454 -1448.1 3157.3
+-304804 -969.571 2435.32
+-305338 -493.389 1621.26
+-305978 -35.235 761.45
+-306662 391.166 -97.7987
+-307343 774.316 -914.817
+-307988 1105.14 -1655.36
+-308577 1377.09 -2293.76
+-309096 1586.15 -2812.88
+-309537 1730.72 -3203.34
+-309897 1811.47 -3462.47
+-310174 1831.09 -3593.16
+-310370 1794 -3602.72
+-310485 1705.98 -3501.79
+-310524 1573.92 -3303.27
+-310493 1405.36 -3021.28
+0 1208.29 -2670.32
+193378 321.187 -330.419
+193477 558.775 -467.697
+193557 804.188 -605.079
+193612 1048.54 -737.529
+193640 1281.57 -859.159
+193639 1491.9 -963.427
+193606 1667.4 -1043.39
+193541 1795.6 -1092.03
+193445 1864.27 -1102.67
+193319 1862.01 -1069.48
+193168 1778.93 -988.063
+192997 1607.33 -856.114
+192816 1342.41 -674.055
+192640 982.91 -445.554
+192487 531.731 -177.765
+192383 -3.5961 118.85
+192355 -610.519 431.252
+192437 -1271.23 745.12
+192659 -1962.57 1046.58
+193046 -2656.12 1324.07
+193609 -3318.53 1569.81
+194340 -3912.08 1780.31
+195205 -4395.73 1955.34
+196144 -4726.65 2095.15
+197073 -4862.63 2196.18
+197895 -4765.36 2246.72
+198515 -4404.79 2224.93
+198849 -3764.32 2102.46
+198838 -2846.31 1856.77
+198429 -1676.5 1493.18
+197539 -305.282 1073.46
+195992 1197.41 743.851
+193421 2757.58 751.805
+189169 4325.55 1441.71
+182191 5911.6 3217.41
+171044 7602.25 6442.58
+154127 9500.81 11214.4
+130414 11538.8 16955.8
+100778 13222.8 21991.8
+69111.3 13632.1 23782
+41431.2 12059.8 20628.4
+22150.6 8977.11 13932.7
+11086.4 5835.41 7495.19
+5470.07 3520.51 3396.28
+2753.31 2065.4 1376.86
+1431.13 1201.67 525.948
+764.623 695.584 199.58
+414.88 399.715 79.6741
+226.112 227.421 34.7721
+122.718 128.02 16.7379
+65.7509 71.3797 8.73935
+34.3428 39.4909 4.79526
+17.0426 21.7297 2.70061
+7.51024 11.9273 1.54455
+2.24081 6.5551 0.894045
+-0.697759 3.62645 0.526434
+-2.36859 2.03895 0.319776
+-3.35778 1.18816 0.205299
+-3.99355 0.748027 0.144755
+-4.47001 0.549463 0.117598
+-4.9202 0.51567 0.114209
+-5.46583 0.632438 0.132802
+-6.26299 0.942965 0.178855
+-7.56139 1.56499 0.267078
+-9.80014 2.73735 0.426394
+-13.7767 4.91288 0.709974
+-20.9513 8.92982 1.21409
+-33.9973 16.3216 2.11231
+-57.8017 29.864 3.73175
+-101.287 54.5135 6.73607
+-180.774 98.9956 12.5922
+-326.573 178.482 25.033
+-596.851 319.054 54.515
+-1108.69 565.322 130.988
+-2113.59 994.828 340.736
+-4178.98 1745.87 919.128
+-8572.45 3063.98 2432.49
+-17904.4 5351.41 6015.44
+-36587.1 9078.33 13236.2
+-69319.9 14191.9 24438.4
+-116160 19169.3 35832.9
+-169194 21566.6 40774.2
+-217957 20694.7 36981.2
+-255913 17880.1 27601.1
+-281873 14730.3 17148.3
+-297894 12033.6 8538.48
+-306957 9808.13 2754.38
+-311698 7777.81 -377.799
+-314015 5712.43 -1487.55
+-315086 3531.82 -1291.08
+-315516 1277.33 -428.116
+-315511 -948.427 615.199
+-315067 -3029.4 1537.23
+-314117 -4863.88 2210.63
+-312637 -6376.95 2638.14
+-310699 -7523.5 2892.27
+-308459 -8285.93 3059.21
+-306128 -8669.37 3201.05
+-303923 -8696.32 3340.5
+-302024 -8401.54 3463.93
+-300552 -7827.85 3535.28
+-299557 -7022.87 3512.73
+-299029 -6036.49 3362.8
+-298909 -4919.07 3068.91
+-299115 -3719.95 2634.09
+-299551 -2486.21 2078.88
+-300130 -1261.65 1436.26
+-300776 -85.8002 745.54
+-301429 1006.82 46.6479
+-302048 1987.38 -624.202
+-302606 2833.21 -1237.14
+-303085 3527.96 -1769.69
+-303479 4061.68 -2206.76
+-303783 4430.52 -2539.91
+-304001 4636.33 -2766.37
+-304135 4686.02 -2888.11
+-304191 4590.87 -2910.75
+-304175 4365.68 -2842.7
+-304093 4027.92 -2694.2
+-303955 3596.9 -2476.42
+0 3092.9 -2200.8
+180806 380.188 -199.728
+180937 662.239 -250.183
+181068 953.604 -298.257
+181195 1243.76 -342.177
+181313 1520.56 -379.803
+181419 1770.5 -408.731
+181509 1979.16 -426.414
+181579 2131.71 -430.31
+181624 2213.53 -418.082
+181641 2210.94 -387.856
+181628 2111.97 -338.54
+181584 1907.19 -270.187
+181511 1590.5 -184.346
+181415 1159.97 -84.33
+181306 618.52 24.7402
+181201 -25.4033 136.235
+181120 -757.339 242.762
+181089 -1556.42 337.358
+181131 -2395.18 415.023
+181269 -3239.48 474.265
+181513 -4048.74 518.216
+181857 -4776.49 554.729
+182275 -5371.33 594.909
+182719 -5778.59 649.772
+183122 -5942.96 725.329
+183408 -5812.11 817.263
+183501 -5341.78 907.51
+183343 -4501.88 965.85
+182893 -3283.23 959.531
+182116 -1703.53 872.086
+180953 189.971 728.651
+179258 2324.97 620.349
+176732 4621.63 717.405
+172851 7028.02 1263.27
+166797 9569.48 2549.89
+157431 12379 4874.46
+143350 15626.5 8441.97
+123288 19242.8 13101.7
+97187.5 22476.2 17837.8
+67764.7 23738.2 20421.6
+40791.1 21532.1 18480.9
+21671.8 16333.6 12421.1
+10750.2 10766.9 6329.19
+5266.42 6565.49 2577.91
+2634.13 3876.37 867.424
+1359.96 2256.69 230.495
+721.354 1300.31 34.8281
+388.401 741.275 -9.77342
+210.094 417.584 -12.9353
+113.275 232.509 -8.33012
+60.3655 128.193 -4.24668
+31.417 70.1398 -1.86023
+15.5876 38.1743 -0.683177
+6.92347 20.7327 -0.16649
+2.16237 11.2797 0.0294616
+-0.477705 6.17894 0.0877012
+-1.97069 3.44011 0.0944149
+-2.85011 1.98472 0.0861127
+-3.41243 1.23632 0.0774222
+-3.8319 0.899122 0.0732913
+-4.22735 0.839727 0.0750963
+-4.7073 1.03331 0.083154
+-5.41147 1.55466 0.0970325
+-6.56456 2.6083 0.114646
+-8.56423 4.61287 0.128452
+-12.1382 8.3709 0.116971
+-18.6273 15.3823 0.0277623
+-30.5032 28.4238 -0.260764
+-52.3246 52.59 -0.998294
+-92.4878 97.0824 -2.6244
+-166.463 178.285 -5.77177
+-303.238 325.02 -10.6048
+-558.849 587.154 -13.6982
+-1046.14 1049.86 2.13653
+-2007.48 1859.65 101.097
+-3991.63 3271.44 484.267
+-8230.18 5721.93 1672.18
+-17298.4 9903.76 4777.79
+-35649.1 16594.1 11454.7
+-67936 25565.6 22090.8
+-113311 33880 32385.5
+-162263 37155.2 35270.8
+-204904 34765.4 30240.7
+-236781 29404.7 21560.7
+-258223 23782.9 13127.2
+-271571 19067.4 6688.16
+-279359 15225 2510.7
+-283658 11833 263.565
+-285971 8565.19 -558.725
+-287267 5308.45 -488.656
+-288065 2105.63 -7.50339
+-288548 -930.021 519.605
+-288709 -3675.27 880.649
+-288478 -6028.37 1012.05
+-287822 -7920.92 958.782
+-286786 -9319.11 818.605
+-285497 -10219.5 690.894
+-284125 -10642.8 643.082
+-282850 -10627.2 698.223
+-281819 -10222.8 839.653
+-281124 -9486.96 1025.35
+-280800 -8480.45 1204.74
+-280825 -7265.23 1332.75
+-281137 -5902.42 1378.64
+-281654 -4450.9 1329.25
+-282289 -2966.11 1187.68
+-282960 -1499.08 969.203
+-283601 -95.533 696.12
+-284164 1204.92 392.916
+-284619 2369.35 82.5898
+-284951 3371.99 -215.557
+-285156 4194.4 -486.802
+-285238 4825.48 -720.962
+-285208 5261.13 -911.837
+-285080 5503.82 -1056.5
+-284868 5561.87 -1154.62
+-284589 5448.63 -1207.8
+-284258 5181.56 -1219
+-283890 4781.24 -1192.01
+-283501 4270.38 -1130.89
+0 3672.92 -1039.57
+157468 299.236 -56.1582
+157623 522.115 -16.3548
+157797 752.359 28.1228
+157987 981.683 75.668
+158189 1200.5 124.535
+158398 1398.16 172.834
+158608 1563.24 218.546
+158811 1683.98 259.552
+158998 1748.74 293.654
+159162 1746.54 318.566
+159294 1667.71 331.887
+159385 1504.48 331.039
+159429 1251.65 313.215
+159422 907.209 275.388
+159367 472.969 214.484
+159267 -44.9202 127.814
+159133 -635.48 13.8294
+158980 -1282.52 -126.779
+158824 -1964.34 -289.777
+158680 -2653.56 -466.136
+158556 -3317.13 -641.249
+158450 -3916.51 -795.151
+158344 -4408.23 -904.25
+158208 -4744.9 -944.917
+157998 -4876.87 -898.736
+157666 -4754.68 -758.491
+157172 -4332.42 -532.965
+156491 -3571.96 -247.847
+155615 -2447.65 59.8875
+154545 -950.563 355.174
+153256 909.453 623.093
+151656 3107.24 884.9
+149542 5616.93 1201.77
+146571 8444.63 1661.5
+142241 11680.3 2363.39
+135837 15542 3442.62
+126282 20319.5 5154.29
+112034 26051.1 7872.23
+91664.3 31850.8 11602.4
+65914.8 35344.2 14879.4
+39958.5 33576.2 14594.4
+20969.5 26261.8 9485.76
+10217.1 17619.1 4067.04
+4927.74 10834.8 1046.88
+2427.76 6399.97 -43.0412
+1233.45 3699.18 -272.52
+643.845 2104.17 -232.034
+341.146 1180.93 -147.731
+181.744 654.273 -83.2545
+96.7381 358.187 -43.8018
+51.0212 194.311 -21.9863
+26.354 104.72 -10.698
+13.0468 56.1739 -5.075
+5.8489 30.0962 -2.34965
+1.93098 16.173 -1.06322
+-0.221396 8.75434 -0.464531
+-1.42776 4.81707 -0.189876
+-2.13338 2.74784 -0.0662275
+-2.58132 1.69114 -0.0106003
+-2.91317 1.21586 0.0136367
+-3.22506 1.12941 0.0213708
+-3.60418 1.39512 0.0157439
+-4.16399 2.12143 -0.0112671
+-5.08765 3.60352 -0.0823607
+-6.70259 6.45338 -0.25062
+-9.61824 11.865 -0.634131
+-14.9665 22.0887 -1.4786
+-24.8559 41.3592 -3.30143
+-43.2549 77.618 -7.16382
+-77.5898 145.427 -15.111
+-141.719 271.182 -30.9895
+-262.172 502.438 -61.3347
+-491.206 922.847 -114.897
+-934.457 1676.53 -197.956
+-1820.24 3012.27 -289.639
+-3671.21 5355.5 -260.185
+-7667.9 9404.04 308.198
+-16342 16212 2458.07
+-34253.4 26863.7 7999.15
+-66034.5 40617.6 17546.3
+-109278 52202.7 26171.2
+-151655 54672.4 26169.3
+-184538 48687.4 20007.5
+-206898 39299.9 13176.8
+-221264 30422.1 8174
+-230256 23368 4966.05
+-235712 17900.2 2947.9
+-238915 13409 1731.74
+-240824 9455.18 1094.36
+-242117 5847.53 819.104
+-243182 2555.86 673.627
+-244149 -380.888 467.87
+-244991 -2910.61 104.986
+-245619 -4993.65 -409.743
+-245972 -6611.26 -996.768
+-246053 -7765.91 -1546.54
+-245936 -8478.12 -1960.65
+-245735 -8782.2 -2177.98
+-245577 -8721.88 -2183
+-245563 -8346.62 -1999.7
+-245756 -7708.57 -1677.57
+-246170 -6860.49 -1275.78
+-246775 -5854.14 -850.11
+-247515 -4739.21 -444.539
+-248316 -3562.56 -87.8865
+-249104 -2367.58 205.629
+-249814 -1193.63 433.313
+-250396 -75.597 599.955
+-250817 956.564 714.003
+-251063 1878.14 784.673
+-251132 2669.93 820.215
+-251034 3318.32 827.236
+-250788 3815.24 810.73
+-250415 4157.94 774.45
+-249940 4348.65 721.358
+-249390 4394.05 654.002
+-248790 4304.66 574.792
+-248163 4094.16 486.224
+-247531 3778.66 391.057
+-246915 3375.93 292.471
+0 2904.69 194.164
+122438 152.761 32.6911
+122582 267.233 116.815
+122755 385.459 206.057
+122952 503.197 297.144
+123172 615.531 386.419
+123409 716.988 469.884
+123658 801.695 543.289
+123909 863.58 602.242
+124155 896.611 642.344
+124384 895.073 659.32
+124585 853.871 649.135
+124747 768.848 608.103
+124858 637.124 532.999
+124911 457.418 421.22
+124898 230.379 271.065
+124818 -41.1194 82.1943
+124670 -351.693 -143.666
+124462 -693.2 -401.786
+124199 -1054.53 -683.356
+123890 -1421.43 -974.486
+123537 -1776.4 -1255.62
+123141 -2098.68 -1501.79
+122693 -2364.34 -1684.13
+122175 -2546.56 -1773
+121567 -2616.13 -1742.45
+120852 -2542.2 -1575.57
+120023 -2293.18 -1269.08
+119090 -1837.84 -835.216
+118084 -1146.07 -299.09
+117043 -188.822 308.847
+115992 1063.96 962.183
+114908 2650 1642
+113707 4630.87 2323.37
+112251 7126.36 2939.89
+110385 10376.1 3349.73
+107893 14817.6 3382.2
+104163 21094.5 3072.28
+97511.9 29745.5 3017.23
+84929.6 40210.1 4260.92
+64275.5 49260.3 6795.77
+39339.8 50889.6 7650.8
+20152.8 41612.7 3713.82
+9469.15 28298.1 -219.617
+4413.01 17309.7 -1632.31
+2100.59 10070.8 -1510.34
+1030.61 5697.77 -1021.95
+521.629 3161.79 -601.338
+268.595 1732.54 -326.893
+139.325 938.883 -170.12
+72.6586 503.206 -85.9191
+37.7293 267.945 -42.5338
+19.2296 142.15 -20.8607
+9.46619 75.0937 -10.1244
+4.28102 39.6808 -4.88496
+1.48239 21.0936 -2.36754
+-0.0356496 11.2912 -1.14368
+-0.874528 6.14351 -0.551816
+-1.36385 3.47401 -0.271032
+-1.67235 2.11609 -0.135731
+-1.89868 1.50544 -0.0758503
+-2.11104 1.39262 -0.0620447
+-2.3689 1.72515 -0.0865001
+-2.75342 2.65008 -0.167987
+-3.39214 4.54905 -0.351079
+-4.51426 8.22778 -0.737911
+-6.57246 15.316 -1.56235
+-10.398 28.8545 -3.27792
+-17.5402 54.6576 -6.83033
+-31.0884 104.06 -14.2474
+-56.9338 198.02 -29.4576
+-106.116 375.17 -60.2037
+-200.958 708.254 -121.663
+-387.312 1328.52 -240.205
+-758.312 2466.23 -458.619
+-1521.74 4534.05 -832.184
+-3170.94 8247.8 -1372.02
+-6831.94 14752.6 -1891.72
+-15021.2 25728.1 -1596.77
+-32582.5 42715.5 1471.72
+-64261.7 63598.2 8675.11
+-105234 78195.6 15208.1
+-138704 75417.5 12949.8
+-158637 60938.7 7805.79
+-168835 44510.2 5098.52
+-174275 31258.1 4779.02
+-177602 21921.4 5006.33
+-179736 15492.2 4788.72
+-181073 10861.1 4107.35
+-181980 7301.55 3244.67
+-182801 4430.16 2379.43
+-183745 2064.56 1534.95
+-184860 118.427 669.082
+-186069 -1454.24 -242.153
+-187255 -2684.56 -1171.27
+-188318 -3599.6 -2047.65
+-189214 -4226.63 -2785.52
+-189960 -4594.49 -3312.68
+-190612 -4733.58 -3589.12
+-191243 -4675.18 -3612.42
+-191912 -4450.71 -3412.26
+-192657 -4090.97 -3038.94
+-193480 -3625.59 -2550.62
+-194357 -3082.62 -2002.73
+-195244 -2488.3 -1441.19
+-196087 -1866.8 -899.548
+-196834 -1240.14 -399.25
+-197441 -628.019 48.0814
+-197880 -47.685 437.641
+-198132 486.179 768.577
+-198197 961.565 1041.83
+-198083 1369.2 1258.84
+-197808 1702.59 1421.1
+-197395 1957.95 1530.14
+-196870 2134.11 1587.78
+-196261 2232.35 1596.46
+-195595 2256.14 1559.36
+-194900 2210.87 1480.54
+-194199 2103.51 1364.93
+-193514 1942.24 1218.34
+-192864 1736.11 1047.35
+0 1494.65 859.317
+79241.5 38.2598 42.3546
+79337.7 67.7776 109.184
+79455.3 98.216 179.359
+79593.5 128.482 250.234
+79750.3 157.304 318.872
+79923 183.265 382.09
+80107.3 204.845 436.532
+80298 220.467 478.765
+80488.4 228.564 505.392
+80671 227.642 513.164
+80837 216.363 499.079
+80977.3 193.622 460.482
+81082.6 158.634 395.161
+81144.4 111.022 301.472
+81155.6 50.8967 178.551
+81111 -21.0584 26.6363
+81007.7 -103.511 -152.436
+80845.1 -194.408 -354.586
+80624.1 -290.913 -572.744
+80346.2 -389.342 -796.164
+80011.7 -485.114 -1010
+79618.4 -572.709 -1195.47
+79161.1 -645.625 -1330.8
+78632.2 -696.356 -1393.23
+78025.2 -716.356 -1361.83
+77339.4 -695.979 -1220.75
+76586.8 -624.318 -961.609
+75797.4 -488.805 -583.942
+75020.2 -274.279 -92.2834
+74316.3 39.0445 509.62
+73746.1 479.953 1224.12
+73354.7 1095.83 2055.97
+73179.1 1974.39 2985.28
+73297.9 3293.09 3902.59
+73926.3 5426.58 4511.85
+75436.8 9148.57 4273.04
+77968 15900 2563.27
+80186.3 27798.7 -756.499
+77651.6 46388 -4623.69
+63985.5 68676.6 -7158.72
+39480.6 82035.6 -8230.98
+19139.2 70725.5 -10281.9
+8268.48 47795.1 -9803.89
+3561.16 28288 -7041.76
+1570.81 15870.6 -4259.73
+716.289 8670.39 -2365.22
+344.749 4652.97 -1250.72
+170.141 2485.04 -646.335
+84.2841 1320.25 -331.015
+42.9233 693.626 -167.341
+22.023 363.925 -84.4775
+10.9235 191.362 -42.9592
+5.32941 99.855 -21.6601
+2.46523 52.2056 -10.9459
+0.868732 27.6699 -5.65075
+0.0233447 14.6967 -2.91265
+-0.422261 7.91732 -1.51628
+-0.694938 4.47566 -0.833781
+-0.865994 2.7089 -0.484345
+-0.987184 1.90899 -0.325914
+-1.10296 1.76552 -0.297073
+-1.23977 2.18546 -0.373305
+-1.45277 3.39224 -0.607384
+-1.80579 5.85679 -1.09176
+-2.40101 10.6089 -2.03812
+-3.55043 19.9634 -3.97797
+-5.72731 37.8971 -7.78794
+-9.67592 72.0439 -15.2187
+-17.479 138.711 -30.3255
+-33.0173 267.152 -60.392
+-62.5021 510.689 -119.28
+-121.649 978.741 -237.227
+-245.942 1872.5 -470.152
+-502.491 3544.36 -919.24
+-1060.32 6683.38 -1779.21
+-2372.82 12558.8 -3353.32
+-5491.93 23219.6 -5995.5
+-12998.8 41886.7 -9760.71
+-30530.8 71664 -13104.8
+-63443.3 107129 -12774.5
+-102931 124931 -9532.15
+-124620 104480 -9454.71
+-128365 70081.3 -6886.48
+-124719 41519.8 -1407.92
+-120736 23457.5 3653.04
+-118316 13391.6 6272.54
+-117095 7951.12 6595.19
+-116491 4877.9 5648.46
+-116266 2984.87 4309.73
+-116408 1711.88 3019.22
+-116930 800.661 1892.36
+-117784 126.842 902.729
+-118857 -374.987 4.64515
+-120016 -743.121 -816.165
+-121148 -1002.61 -1538.8
+-122186 -1171.68 -2124.47
+-123111 -1264.79 -2537.06
+-123938 -1294.21 -2757.52
+-124702 -1270.71 -2789.23
+-125436 -1203.99 -2655.5
+-126160 -1102.85 -2392.66
+-126878 -975.342 -2041.86
+-127578 -828.827 -1642.23
+-128235 -670.051 -1226.37
+-128820 -505.162 -818.484
+-129308 -339.715 -434.623
+-129676 -178.663 -84.1871
+-129911 -26.3322 228.033
+-130009 113.605 499.948
+-129975 238.15 730.747
+-129819 344.995 920.074
+-129557 432.526 1067.74
+-129207 499.808 1173.79
+-128790 546.564 1238.69
+-128324 573.125 1263.57
+-127830 580.381 1250.34
+-127324 569.707 1201.76
+-126824 542.881 1121.42
+-126342 501.997 1013.75
+-125890 449.365 883.907
+0 387.419 737.718
+36718.2 -2.46303 11.6022
+36756.3 -2.34111 33.8627
+36802.9 -2.25779 57.0625
+36857.8 -2.2188 80.2244
+36920.8 -2.23554 102.316
+36991 -2.32378 122.267
+37067.2 -2.50246 138.991
+37147.6 -2.79269 151.427
+37229.8 -3.21667 158.568
+37310.8 -3.79589 159.497
+37387 -4.54853 153.398
+37454.5 -5.48608 139.574
+37509.1 -6.60944 117.441
+37546.5 -7.90562 86.5525
+37562.9 -9.34612 46.6456
+37555 -10.8888 -2.24057
+37520.5 -12.4837 -59.566
+37457.5 -14.0837 -124.007
+37364.9 -15.6576 -193.12
+37241.5 -17.2008 -263.026
+37085.6 -18.7396 -328.228
+36894.4 -20.319 -381.69
+36664 -21.9675 -415.324
+36390.2 -23.6374 -420.904
+36070.3 -25.1234 -391.319
+35706.4 -25.9798 -321.794
+35308.8 -25.4646 -210.416
+34899.1 -22.5453 -57.1244
+34511.4 -15.959 139.57
+34189.7 -4.17262 388.033
+33984 15.4456 708.985
+33952.2 50.7584 1134.56
+34187.4 130.799 1686.37
+34904.1 359.778 2304.23
+36617 1079.99 2682.91
+40355.9 3297.53 1987.39
+47540 9582.89 -1457.66
+58529.8 25321.4 -10045.1
+68854.7 58420.6 -25332.5
+66009.8 111386 -44337.9
+40446.7 159076 -56600.8
+17129.9 141447 -51911.6
+5989.75 91927.3 -36156
+2151.02 51366.2 -21141
+799.376 27631 -11460.9
+302.66 14649.4 -6043.71
+140.613 7660.47 -3140.21
+67.6575 4044.97 -1641.3
+28.8558 2140.33 -862.081
+15.1561 1112.26 -447.017
+8.5027 581.408 -232.747
+3.57123 307.405 -122.57
+1.71735 159.275 -63.5316
+1.0111 82.768 -32.9662
+0.294206 44.3207 -17.5766
+-0.0264168 23.4458 -9.30091
+-0.116143 12.4884 -4.95099
+-0.236569 7.1457 -2.81426
+-0.309325 4.31776 -1.69631
+-0.343629 3.00891 -1.1784
+-0.38768 2.79593 -1.09038
+-0.422729 3.44259 -1.35127
+-0.516641 5.41897 -2.13355
+-0.66516 9.35282 -3.69443
+-0.785684 16.7668 -6.66829
+-1.23757 31.9323 -12.7055
+-2.18265 60.7594 -24.1747
+-3.13831 114.409 -45.7176
+-5.82193 221.801 -88.7243
+-12.6556 429.724 -171.795
+-21.8584 816.799 -327.779
+-41.9173 1572.27 -633.069
+-98.48 3039.84 -1225.79
+-205.689 5775.68 -2345.01
+-453.177 11022.6 -4516.63
+-1221.51 21264.2 -8752.85
+-3327.84 40512.2 -16729.3
+-9365.26 76235.7 -31128.2
+-26930.2 138088 -53589.7
+-63649.9 214400 -77345.4
+-103754 242390 -85147.3
+-108039 169988 -68091.2
+-91778.4 88844.8 -39612.3
+-74793.6 38126.6 -15947.5
+-63933.6 14177.3 -2475.78
+-58383.3 4757.34 2901.46
+-55804.2 1516.24 3930.77
+-54608.8 499.986 3308.94
+-54077.9 188.1 2375.43
+-53959.2 78.6668 1595.41
+-54159.3 26.3774 1030.43
+-54604.7 -5.72475 613.998
+-55208.7 -26.136 273.622
+-55881.4 -37.4887 -31.0152
+-56548.2 -41.934 -307.718
+-57160.9 -41.8489 -544.757
+-57699.5 -39.4827 -725.123
+-58165.6 -36.5597 -836.704
+-58573.2 -34.0978 -876.934
+-58938.9 -32.4523 -852.745
+-59275.5 -31.5011 -777.696
+-59588.7 -30.876 -668.143
+-59877.3 -30.166 -539.853
+-60134.7 -29.0531 -405.767
+-60352.2 -27.3738 -275.057
+-60521.4 -25.1204 -153.237
+-60636.4 -22.4029 -42.9445
+-60694.5 -19.396 55.037
+-60696.8 -16.2894 140.815
+-60647.3 -13.2513 214.695
+-60552.5 -10.4088 276.805
+-60420.1 -7.84378 327.007
+-60258.7 -5.59849 364.983
+-60076.5 -3.6851 390.404
+-59881.4 -2.09591 403.096
+-59680.5 -0.811562 403.168
+-59480 0.192643 391.084
+-59285.1 0.941798 367.703
+-59100.1 1.45663 334.298
+-58928.7 1.74862 292.558
+0 1.81619 244.563
+4452.25 -0.565845 -7.08383
+4458.19 -0.642895 -7.98597
+4465.27 -0.727523 -8.96241
+4473.53 -0.817191 -10.0107
+4482.97 -0.909558 -11.1162
+4493.54 -1.00241 -12.2525
+4505.13 -1.09363 -13.3812
+4517.56 -1.18121 -14.4528
+4530.58 -1.26336 -15.4079
+4543.84 -1.33849 -16.1793
+4556.89 -1.40518 -16.6961
+4569.22 -1.46202 -16.8895
+4580.26 -1.50743 -16.6988
+4589.39 -1.53954 -16.0778
+4596 -1.55614 -14.9993
+4599.51 -1.55511 -13.4546
+4599.4 -1.53521 -11.4485
+4595.21 -1.49741 -8.98709
+4586.5 -1.44633 -6.06263
+4572.83 -1.39157 -2.63846
+4553.7 -1.34794 1.35788
+4528.51 -1.33381 6.02451
+4496.58 -1.36673 11.4504
+4457.3 -1.45585 17.6536
+4410.38 -1.59201 24.5007
+4356.29 -1.73763 31.6349
+4296.72 -1.81991 38.4528
+4234.97 -1.72963 44.1804
+4176.15 -1.31519 48.0626
+4127.09 -0.299802 49.5536
+4096.89 2.22316 47.9863
+4101.32 10.2059 39.9552
+4181.67 40.8939 8.96745
+4466.6 164.344 -107.907
+5339.73 641.4 -512.944
+7798.94 2352.06 -1765.27
+13933.8 7934.2 -5163.11
+26607 24145.7 -13032.5
+45449.5 64449.7 -27714.5
+56578.1 143206 -46997.2
+33636.3 236166 -58302.9
+11075.3 213568 -53194.3
+2332.79 135640 -37641.5
+570.623 74162.8 -22709.8
+126.459 39873.6 -12748
+-11.8334 21224.2 -6953.11
+15.4568 11084.6 -3728.17
+13.5213 5891.47 -1991.11
+-3.14509 3141.17 -1061.52
+0.975997 1626.67 -559.341
+2.94722 851.906 -293.852
+-0.34319 454.736 -155.221
+-0.208904 234.538 -81.272
+0.541317 121.379 -42.442
+-0.00814375 65.8154 -22.5643
+-0.12378 34.719 -12.0225
+0.0597944 18.2669 -6.43076
+-0.0182882 10.5842 -3.62184
+-0.0619701 6.40009 -2.19736
+-0.0395395 4.40732 -1.53314
+-0.0481821 4.10842 -1.40674
+-0.0137957 5.04319 -1.76403
+-0.079856 8.05253 -2.76665
+-0.160921 13.8547 -4.7644
+0.0764089 24.5721 -8.67337
+-0.135097 47.388 -16.4231
+-0.788101 90.2208 -31.0361
+0.291565 167.893 -58.8331
+0.167971 327.101 -113.363
+-4.20822 635.743 -217.305
+-0.838487 1196.55 -413.219
+3.79068 2300.21 -790.271
+-20.4983 4459.18 -1504.9
+-20.7695 8400.34 -2833.61
+12.8149 15924 -5332.36
+-207.104 30734.5 -9996.98
+-883.524 58245.9 -18440.9
+-3595.48 109581 -33096.2
+-16949.4 202728 -55243.5
+-51206.7 321743 -78513.3
+-85820.8 357258 -86507.4
+-68652.4 216816 -70127.3
+-39939.9 97195.4 -41365.8
+-20843.9 36049.6 -19323.6
+-11762.9 11640.2 -7543.84
+-8209.03 3361.31 -2520
+-6974.39 884.663 -712.152
+-6567.47 217.491 -149.128
+-6439.13 52.4216 6.53576
+-6417.88 13.1517 49.2651
+-6453.44 2.88297 65.3833
+-6526.11 -0.750369 74.2732
+-6621.49 -2.40842 77.9856
+-6726.45 -3.05617 76.1442
+-6830.19 -3.03946 69.3752
+-6925.51 -2.6394 59.3442
+-7008.93 -2.11087 48.0297
+-7080.02 -1.64648 37.0766
+-7140.11 -1.35534 27.4699
+-7191.19 -1.26737 19.5138
+-7234.97 -1.35482 13.0107
+-7272.51 -1.55957 7.51063
+-7304.09 -1.81745 2.53793
+-7329.48 -2.07468 -2.25808
+-7348.15 -2.29555 -7.03922
+-7359.67 -2.46292 -11.7865
+-7363.81 -2.57423 -16.3528
+-7360.75 -2.63566 -20.5317
+-7351.01 -2.65669 -24.1209
+-7335.42 -2.64614 -26.966
+-7315.02 -2.61019 -28.9822
+-7290.92 -2.55207 -30.1551
+-7264.24 -2.47271 -30.5297
+-7236.04 -2.3719 -30.1927
+-7207.25 -2.24927 -29.2557
+-7178.68 -2.10504 -27.8408
+-7150.99 -1.94046 -26.0689
+-7124.72 -1.75809 -24.0514
+-7100.27 -1.56202 -21.8824
+-7077.97 -1.35815 -19.6321
+0 -1.15433 -17.343
+390.749 -0.062674 -1.10694
+391.382 -0.0725742 -1.29471
+392.129 -0.0832546 -1.4948
+392.995 -0.0943887 -1.70377
+393.98 -0.10565 -1.91662
+395.081 -0.116711 -2.12684
+396.288 -0.127239 -2.32649
+397.587 -0.136909 -2.50641
+398.951 -0.14541 -2.65644
+400.35 -0.152463 -2.76579
+401.741 -0.157825 -2.82357
+403.074 -0.161284 -2.81939
+404.293 -0.16266 -2.74413
+405.334 -0.161799 -2.59066
+406.135 -0.158582 -2.35445
+406.631 -0.152962 -2.03396
+406.762 -0.145039 -1.63061
+406.472 -0.135164 -1.14829
+405.704 -0.124065 -0.592723
+404.401 -0.112942 0.0293598
+402.503 -0.103478 0.710473
+399.941 -0.0976763 1.44168
+396.645 -0.0974556 2.21041
+392.556 -0.103978 2.99676
+387.653 -0.116769 3.7689
+381.994 -0.132812 4.47935
+375.756 -0.145844 5.06473
+369.282 -0.145525 5.4512
+363.109 -0.112477 5.56215
+358.068 0.0141597 5.30108
+355.822 0.515568 4.39259
+361.52 2.77996 1.63462
+394.893 13.3693 -7.9851
+531.381 61.3686 -43.0248
+1036.2 267.011 -163.914
+2734.93 1091.06 -538.674
+7794.99 4151.55 -1532.89
+20491.7 14530 -3580.45
+44508.4 45710 -5835.61
+67160.1 123015 -1983.22
+37922.6 249084 19549.3
+10139.9 227245 17064.3
+1234.7 139195 6838.08
+308.244 73844.7 1846.74
+44.681 39716.3 700.92
+-73.5878 21197.8 281.693
+10.5813 11000.7 62.6051
+15.1125 5884.85 35.3994
+-10.6161 3161.5 23.5632
+-0.415381 1623.12 1.78238
+4.05403 851.208 0.587064
+-1.37729 460.042 2.66473
+-0.696917 235.097 -0.0562432
+0.834351 120.884 -0.467012
+-0.0919362 66.7679 0.335344
+-0.232975 35.0098 0.0290143
+0.138876 18.1062 -0.130199
+0.013029 10.7178 0.0504887
+-0.0529308 6.47781 0.0230331
+-0.00207946 4.39002 -0.0121583
+-0.0103461 4.12446 0.0142934
+0.0636063 5.01515 -0.022225
+-0.0405589 8.16731 0.0333858
+-0.166986 14.0072 0.0482215
+0.314853 24.3796 -0.181229
+0.0199015 47.8696 0.0586908
+-1.06961 91.4161 0.382174
+1.12444 167.185 -0.704743
+1.48803 328.323 0.0781856
+-5.72416 642.897 3.59615
+1.63976 1194.73 0.547643
+13.8707 2296.29 3.73937
+-23.6604 4486.99 35.7232
+-11.6538 8381.89 54.3339
+103.156 15793.1 108.278
+-89.2007 30668.5 461.891
+-477.385 57907.4 1147.74
+-1913.57 108888 3048.97
+-15459.4 207605 10958.5
+-57342.3 341320 26861.4
+-101079 375267 30697.2
+-66572.1 185389 -2317.66
+-30299.7 68596.9 -8504.3
+-11334.2 21587 -5246.09
+-3909.1 6062.96 -2222.63
+-1480.42 1553.16 -765.118
+-782.82 366.937 -226.276
+-600.921 80.5986 -57.6767
+-557.261 16.6597 -10.6293
+-549.534 3.29074 2.05135
+-552.643 0.564688 6.06083
+-560.35 -0.0454374 7.86876
+-570.413 -0.215677 8.82142
+-581.415 -0.257366 9.15079
+-592.286 -0.23849 8.94948
+-602.308 -0.189353 8.34238
+-611.118 -0.132864 7.47412
+-618.637 -0.0857471 6.47246
+-624.96 -0.0573647 5.42619
+-630.256 -0.0501544 4.38187
+-634.68 -0.0614769 3.35385
+-638.34 -0.085968 2.33932
+-641.283 -0.11764 1.33234
+-643.512 -0.151319 0.33314
+-645.009 -0.183331 -0.648104
+-645.761 -0.211573 -1.59206
+-645.778 -0.235196 -2.47386
+-645.096 -0.254141 -3.26771
+-643.784 -0.268688 -3.951
+-641.933 -0.27915 -4.50713
+-639.648 -0.285709 -4.92676
+-637.041 -0.288399 -5.20773
+-634.218 -0.287167 -5.35409
+-631.281 -0.281953 -5.37473
+-628.316 -0.272777 -5.28202
+-625.399 -0.259776 -5.09057
+-622.592 -0.243236 -4.81619
+-619.942 -0.223594 -4.475
+-617.486 -0.201447 -4.08261
+-615.255 -0.177566 -3.65334
+0 -0.152896 -3.19964
+29.5601 -0.00459804 -0.115631
+29.6156 -0.00534025 -0.135833
+29.6808 -0.00613659 -0.157262
+29.7558 -0.00696271 -0.179491
+29.8408 -0.00779366 -0.201943
+29.9355 -0.00860397 -0.223902
+30.0392 -0.00936762 -0.244521
+30.1505 -0.0100587 -0.262845
+30.2676 -0.0106527 -0.277836
+30.3876 -0.011127 -0.288411
+30.5072 -0.0114624 -0.293487
+30.6223 -0.0116431 -0.292043
+30.728 -0.0116568 -0.283186
+30.8192 -0.0114951 -0.266214
+30.8903 -0.0111542 -0.240684
+30.9356 -0.0106373 -0.20645
+30.9496 -0.0099595 -0.163691
+30.9271 -0.00915414 -0.112894
+30.8626 -0.00828024 -0.0548338
+30.7507 -0.00742815 0.00946616
+30.5857 -0.00671915 0.0787432
+30.3614 -0.0062942 0.151453
+30.0718 -0.00628691 0.225643
+29.7121 -0.00677944 0.298755
+29.281 -0.00774485 0.367383
+28.7839 -0.00898655 0.427122
+28.2364 -0.0100776 0.472628
+27.6687 -0.0102057 0.497883
+27.1337 -0.00722786 0.495691
+26.7467 0.00810672 0.451219
+26.8962 0.0843536 0.306892
+29.2862 0.477105 -0.190071
+41.6488 2.47629 -2.06274
+97.3637 12.2889 -8.94434
+329.982 58.4144 -31.4213
+1225.99 265.749 -88.9268
+4352.28 1155.22 -150.746
+13879.4 4774.22 334.7
+37130.4 18502.8 4873.42
+70488.5 64851.1 28856.4
+37199.6 182790 110683
+7780.41 166812 99931.9
+212.647 97311.8 55233.3
+247.14 49777.3 26908
+51.2266 26946.8 14480.1
+-97.9426 14432.9 7711.42
+22.3345 7402.91 3881.61
+22.7758 3996.38 2104.05
+-15.1331 2168.03 1147.73
+-0.074383 1096.62 570.016
+5.86329 576.315 299.61
+-2.07889 317.24 167.549
+-0.96073 159.627 82.79
+1.21534 81.2866 41.715
+-0.154299 46.2005 24.3711
+-0.333161 23.9704 12.4808
+0.208115 12.0766 6.12741
+0.0202754 7.40163 3.89597
+-0.0711508 4.46452 2.34142
+0.0036847 2.95404 1.51907
+-0.0118094 2.81514 1.47583
+0.0970783 3.36364 1.722
+-0.0493822 5.64453 2.9677
+-0.240238 9.64547 5.06256
+0.462859 16.2761 8.25995
+0.0686246 32.8524 17.1392
+-1.55205 63.1247 33.2366
+1.5733 112.36 57.6331
+2.2865 223.344 116.07
+-8.28852 443.019 233.935
+1.62504 807.979 419.861
+19.7976 1552.66 808.494
+-35.4471 3076.67 1631.06
+-26.4719 5685.24 2996.03
+139.416 10624.6 5585.18
+-100.859 20875 11194.3
+-371.934 39234.8 21167
+-361.932 73308.2 39845.6
+-11906.1 145008 82845.1
+-56132.8 250093 150712
+-105755 274582 167133
+-55355.9 97410.6 43721.5
+-20446.8 27669.6 7404.43
+-6292.82 7068.21 523.972
+-1727.79 1681.76 -214.114
+-452.315 377.386 -125.76
+-132.486 80.1739 -43.3069
+-59.1735 16.1358 -11.9186
+-43.6918 3.07996 -2.65364
+-40.8605 0.557864 -0.217597
+-40.7848 0.0904557 0.441796
+-41.4167 0.00315411 0.672856
+-42.2944 -0.014752 0.782325
+-43.2552 -0.0178602 0.831152
+-44.2045 -0.0161428 0.833645
+-45.0823 -0.0124239 0.799105
+-45.8572 -0.00831352 0.737296
+-46.5207 -0.00491178 0.657223
+-47.0791 -0.00282834 0.565803
+-47.5444 -0.0022239 0.467533
+-47.929 -0.00292902 0.364992
+-48.2419 -0.00459431 0.259687
+-48.4879 -0.00682487 0.152866
+-48.6686 -0.00927293 0.0460568
+-48.7842 -0.0116828 -0.0587303
+-48.8352 -0.013897 -0.159075
+-48.8239 -0.0158372 -0.252392
+-48.7543 -0.0174763 -0.336228
+-48.633 -0.0188111 -0.408521
+-48.4678 -0.0198436 -0.467776
+-48.2677 -0.0205718 -0.513138
+-48.0418 -0.0209883 -0.544368
+-47.7989 -0.0210845 -0.561778
+-47.5473 -0.0208551 -0.566121
+-47.294 -0.0203032 -0.558494
+-47.0452 -0.0194423 -0.540237
+-46.8059 -0.0182969 -0.512852
+-46.5801 -0.0169026 -0.477922
+-46.3709 -0.015306 -0.43704
+-46.1807 -0.0135655 -0.391736
+0 -0.0117503 -0.343422
+1.84271 0 -0.00890726
+1.84657 0 -0.0104523
+1.85107 0 -0.0120864
+1.85624 0 -0.0137748
+1.86208 0 -0.0154727
+1.86857 0 -0.0171246
+1.87565 0 -0.0186663
+1.88324 0 -0.020026
+1.8912 0 -0.0211264
+1.89937 0 -0.0218874
+1.9075 0 -0.0222299
+1.91532 0 -0.0220794
+1.92251 0 -0.0213711
+1.92872 0 -0.0200544
+1.93356 0 -0.0180978
+1.93664 0 -0.015492
+1.93757 0 -0.0122525
+1.93596 0 -0.00841978
+1.93142 0 -0.00405885
+1.92357 0 0.000742335
+1.91197 0 0.00587313
+1.8962 0 0.0111981
+1.87584 0 0.0165513
+1.85058 0 0.0217266
+1.82035 0 0.0264685
+1.78554 0 0.0304675
+1.74726 0 0.0333661
+1.70774 0 0.0347601
+1.67178 0 0.0340698
+1.65451 0 0.0296702
+1.72425 0 0.0147058
+2.22492 0 -0.0397455
+4.86586 0 -0.23926
+17.7764 0 -0.865483
+77.6735 0 -1.95266
+341.18 0 3.4192
+1431.7 0 84.7981
+5593.26 0 759.324
+19466.8 0 5446.64
+52484.1 0 35558
+25929.2 0 222069
+3999.52 0 200275
+-468.824 0 108278
+201.653 0 52320.2
+60.4932 0 28810.6
+-93.3442 0 15501.8
+22.8655 0 7749.14
+23.2963 0 4245.23
+-14.8762 0 2341.51
+-0.351567 0 1149.74
+5.85832 0 605.6
+-1.98899 0 344.775
+-1.00963 0 168.458
+1.20643 0 84.0367
+-0.124891 0 50.3949
+-0.337886 0 25.661
+0.204437 0 12.2705
+0.0303862 0 8.03595
+-0.06848 0 4.84123
+0.00127301 0 3.06694
+-0.0111171 0 3.00329
+0.0908948 0 3.46884
+-0.0637039 0 6.15017
+-0.237352 0 10.4173
+0.463541 0 16.5665
+0.0307224 0 35.311
+-1.53392 0 68.5961
+1.62279 0 116.065
+2.16187 0 236.545
+-8.23214 0 480.913
+1.98039 0 847.538
+19.4149 0 1631.15
+-35.8746 0 3324.3
+-26.8738 0 6031.5
+133.725 0 11129.7
+-109.251 0 22447
+-290.596 0 41936.4
+684.589 0 77093.1
+-6175.09 0 161613
+-39080.7 0 300388
+-78573.5 0 333276
+-28964.5 0 53420.9
+-8224.95 0 8157.62
+-2066.68 0 1127.93
+-479.767 0 124.204
+-105.642 0 4.92771
+-23.4139 0 -2.70817
+-6.44327 0 -1.15986
+-3.14991 0 -0.30814
+-2.56366 0 -0.0474683
+-2.4949 0 0.0229873
+-2.52965 0 0.0447035
+-2.58964 0 0.0537996
+-2.65639 0 0.0580138
+-2.72246 0 0.0589787
+-2.78368 0 0.0573404
+-2.83789 0 0.0536654
+-2.88446 0 0.048486
+-2.9237 0 0.0422405
+-2.95638 0 0.0352497
+-2.98326 0 0.0277372
+-3.00496 0 0.0198707
+-3.02184 0 0.0118018
+-3.03406 0 0.00369318
+-3.04172 0 -0.00427253
+-3.04491 0 -0.0118984
+-3.04385 0 -0.0189877
+-3.03886 0 -0.0253603
+-3.03039 0 -0.030868
+-3.019 0 -0.0354033
+-3.00528 0 -0.0389035
+-2.98986 0 -0.0413488
+-2.9733 0 -0.0427575
+-2.95615 0 -0.0431803
+-2.93889 0 -0.0426926
+-2.92193 0 -0.0413895
+-2.90559 0 -0.039379
+-2.89016 0 -0.0367771
+-2.87584 0 -0.0337028
+-2.86281 0 -0.0302726
+0 0 -0.0265968
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+757681 -1.74382e+06 200224
+1.02943e+06 -2.82645e+06 397541
+369003 -1.71363e+06 288334
+-62377.1 -587164 111104
+-19642.5 -278262 41595.8
+32302.6 -202506 27247.1
+-728.233 -94357.2 14317
+-6176.37 -40358.5 5919.65
+4958.5 -29675.4 3814.99
+1735.24 -15698.7 2226.44
+-1300.95 -5503.63 841.105
+669.486 -3983.37 510.925
+719.015 -2596.06 363.683
+-124.002 -776.038 119.27
+118.275 -484.79 61.4552
+231.408 -440.81 74.6454
+24.4928 -135.561 29.5213
+28.5703 -57.9345 -12.5852
+70.887 -89.6789 -6.70024
+12.0972 -47.7562 24.7817
+-73.5111 -15.5679 41.2506
+-152.753 -56.854 36.002
+-103.085 -108.908 0.401522
+-112.064 -74.4774 -16.0582
+-363.578 -198.145 32.8188
+-177.652 -590.23 94.0768
+64.6055 -637.265 85.0838
+-1101.03 -1138.43 181.204
+-852.216 -3635.24 512.176
+1649.86 -5406.74 706.358
+-2893.24 -7869.56 1196.71
+-6657.09 -22470.2 3147.66
+9002.74 -41464.6 5317.92
+-733.697 -57247.5 8449.8
+-46672.1 -136724 20791.6
+30873.1 -290744 39341.1
+86127.9 -400174 60825.7
+-551643 -864898 167300
+-1.51937e+06 -2.53676e+06 436726
+-1.12055e+06 -4.19001e+06 602683
+0 -2.59665e+06 304090
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.03698e+06 -3.16034e+06 379549
+538162 -2.85276e+06 525131
+-5481.92 -1.47837e+06 308386
+-26487.7 -695386 129228
+25194.3 -397065 67121.2
+654.643 -217092 39125.5
+-6033.55 -106500 18831.1
+3281.69 -59417.7 9743.97
+1285.81 -33515.5 5835.97
+-1247.54 -16041.2 2875.86
+316.74 -8454.92 1387
+467.812 -4997.28 862.875
+-190.74 -2383.43 445.896
+3.40863 -1158.16 187.972
+133.506 -734.428 119.54
+-10.6792 -369.653 73.0793
+-9.59693 -165.829 29.1875
+35.5114 -115.993 13.0584
+7.02099 -70.4527 9.2605
+-10.6812 -42.163 12.2641
+-0.117028 -41.8808 15.7394
+-24.5338 -47.4494 15.0133
+-56.7773 -89.9579 13.3555
+1.90258 -149.658 16.5016
+-9.02853 -224.81 37.5956
+-186.637 -510.792 98.2005
+10.0397 -995.535 161.594
+207.791 -1598.71 262.259
+-692.648 -3357.79 622.981
+-333.068 -6955.17 1190.84
+1660.92 -11801.8 1938.3
+-2105.78 -22778.9 4075.43
+-4289.03 -47501.1 8219.75
+8798.02 -84093.3 13758.7
+-2345.18 -152591 27010.3
+-36268.3 -313269 56448.7
+40683 -574409 97280.4
+2921.15 -1.01797e+06 190833
+-803204 -2.19284e+06 462206
+-1.53644e+06 -4.24747e+06 790698
+0 -4.70554e+06 572445
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.82996 0.0349962 -0.057086
+6.84546 0.0408515 -0.066812
+6.86341 0.0470708 -0.0771003
+6.88387 0.0534846 -0.0877206
+6.90687 0.0599038 -0.0983822
+6.93237 0.0661207 -0.108736
+6.96017 0.0719114 -0.118383
+6.98998 0.0770411 -0.126879
+7.02134 0.0812731 -0.133755
+7.0536 0.084378 -0.138527
+7.08595 0.0861431 -0.140722
+7.11739 0.086381 -0.1399
+7.14676 0.084938 -0.135679
+7.17277 0.0817025 -0.127766
+7.19403 0.0766172 -0.115981
+7.20912 0.0696962 -0.10028
+7.2166 0.0610496 -0.0807787
+7.21503 0.0509144 -0.057761
+7.20297 0.0396873 -0.0316888
+7.17897 0.0279483 -0.00320304
+7.1415 0.0164598 0.0268767
+7.08903 0.00612077 0.0575539
+7.02006 -0.00214378 0.0876581
+6.9335 -0.00756515 0.115852
+6.8291 -0.00977545 0.140651
+6.70816 -0.00907693 0.160483
+6.57446 -0.00672059 0.173781
+6.43562 -0.00550972 0.179118
+6.30767 -0.0131858 0.175196
+6.24072 -0.0632933 0.159914
+6.46445 -0.334675 0.125651
+8.1795 -1.79641 0.0416214
+17.6683 -9.53313 -0.194978
+66.8596 -49.2576 -0.799148
+313.082 -246.83 -1.34561
+1511.74 -1202.33 7.09029
+7221.88 -5722.71 97.374
+34030.2 -26789.9 740.839
+159105 -124284 4655.62
+744653 -576588 26598.8
+360411 -2.70819e+06 154155
+40999.8 -2.46593e+06 132854
+-14379.4 -1.37797e+06 63256.7
+3438.59 -687891 27007.8
+1423.78 -381390 15150
+-1842.55 -206514 8190.73
+334.822 -104806 3877.57
+478.665 -57473.4 2157.1
+-283.586 -31632.6 1220.81
+-29.8661 -15715.4 570.126
+117.435 -8296.11 299.49
+-33.633 -4680.2 178.761
+-23.3937 -2307.72 82.5056
+23.7749 -1160.52 39.2343
+-0.631445 -685.294 25.6703
+-7.0337 -350.203 12.6134
+3.91381 -169.86 5.3542
+1.17831 -109.073 3.8513
+-1.27694 -65.5192 2.36283
+-0.154218 -41.8327 1.61383
+-0.189802 -40.6268 1.78495
+1.4797 -47.4756 1.8255
+-2.14656 -83.2639 3.08232
+-4.65563 -141.741 5.00543
+9.2875 -229.426 7.23862
+-1.94123 -481.678 17.4257
+-29.9016 -933.872 34.8714
+35.9405 -1602.85 54.3639
+34.3182 -3236.16 116.539
+-162.528 -6526.4 248.986
+70.0536 -11605.3 418.67
+364.686 -22254.9 812.548
+-722.862 -44826.2 1737.68
+-355.856 -81495.1 3067.07
+2620.15 -150028 5591.1
+-2420.71 -297709 11927.9
+-4772.23 -552289 22167.5
+21249.9 -1.00702e+06 40124.9
+-64029.7 -2.04153e+06 95584.6
+-540169 -3.67275e+06 201815
+-1.10783e+06 -4.0389e+06 234298
+-235298 -859675 40563.5
+-49746.7 -184492 7098.39
+-10365.1 -39378.3 1124.59
+-2113.78 -8273.55 146.442
+-423.344 -1696.01 10.4998
+-87.5506 -336.531 -1.97123
+-23.3302 -64.2242 -1.1561
+-11.5897 -11.7563 -0.292379
+-9.60394 -2.07501 0.0418201
+-9.39313 -0.356051 0.168229
+-9.52517 -0.0548647 0.231608
+-9.73948 -0.00379392 0.271901
+-9.97524 -0.0034066 0.297182
+-10.2075 -0.0174223 0.308696
+-10.4222 -0.0351854 0.307185
+-10.6119 -0.0506021 0.293927
+-10.7742 -0.059722 0.270586
+-10.9103 -0.0606352 0.238932
+-11.0225 -0.0532459 0.200676
+-11.1134 -0.0387635 0.157422
+-11.1851 -0.0190947 0.110688
+-11.2389 0.00369092 0.0619484
+-11.2756 0.0277281 0.012651
+-11.2957 0.0515399 -0.035791
+-11.2996 0.0740704 -0.0820353
+-11.2883 0.0946237 -0.124861
+-11.2632 0.112763 -0.163222
+-11.226 0.128213 -0.196283
+-11.1788 0.140789 -0.223451
+-11.1237 0.150362 -0.244376
+-11.0629 0.156849 -0.258942
+-10.9987 0.160225 -0.267243
+-10.9328 0.160533 -0.269559
+-10.8671 0.157892 -0.266322
+-10.8029 0.152504 -0.258083
+-10.7414 0.144643 -0.245484
+-10.6836 0.134648 -0.229225
+-10.6302 0.122913 -0.210035
+-10.5817 0.109885 -0.188645
+0 0.0960509 -0.165767
+129.422 0.668185 -0.97585
+129.691 0.785467 -1.14908
+130.003 0.910283 -1.33293
+130.361 1.03928 -1.52333
+130.766 1.1687 -1.71512
+131.216 1.29436 -1.90206
+131.708 1.41175 -2.07698
+132.238 1.5161 -2.23193
+132.798 1.60259 -2.3584
+133.375 1.66647 -2.44764
+133.955 1.70329 -2.49105
+134.521 1.70903 -2.48055
+135.052 1.68025 -2.40913
+135.524 1.61428 -2.27131
+135.914 1.50944 -2.06363
+136.197 1.36542 -1.7851
+136.348 1.1838 -1.43751
+136.343 0.96867 -1.02572
+136.159 0.727369 -0.557788
+135.77 0.471024 -0.0449847
+135.152 0.214608 0.498172
+134.28 -0.0238631 1.05394
+133.127 -0.225387 1.60137
+131.676 -0.37347 2.11639
+129.92 -0.458844 2.57212
+127.883 -0.484588 2.93984
+125.628 -0.470574 3.19077
+123.28 -0.458193 3.29888
+121.05 -0.531058 3.24331
+119.382 -0.947721 3.00373
+119.72 -2.88995 2.52414
+128.46 -12.2881 1.56223
+175.724 -58.0444 -0.816045
+398.689 -273.588 -7.57887
+1386.1 -1240.01 -25.6498
+5493.49 -5339.74 -58.9121
+21375.5 -21727.2 -28.2657
+77241.4 -83004.5 683.396
+246465 -293759 5125.42
+605462 -930901 24171.5
+297264 -2.36684e+06 77526.7
+45704.7 -2.1749e+06 60460.9
+-5205.2 -1.29758e+06 25757.4
+2133.6 -677814 9492.16
+438.632 -370103 4888.12
+-1137.08 -199693 2466.08
+264.596 -103396 1070.01
+245.436 -55944.2 594.003
+-183.623 -30389.9 334.101
+-0.798744 -15473 144.852
+66.2557 -8140.15 76.5888
+-25.8315 -4467.74 47.1718
+-11.1117 -2259.42 19.7733
+14.2164 -1153.25 9.11133
+-2.06967 -651.242 6.60522
+-3.94332 -338.783 2.93464
+2.49227 -171.251 1.0821
+0.245137 -103.907 0.977111
+-0.820356 -62.703 0.590719
+0.0581117 -41.5713 0.379215
+-0.154921 -39.3953 0.457333
+1.12839 -47.4537 0.416809
+-0.587905 -79.362 0.782089
+-2.88153 -135.665 1.2807
+5.49138 -231.023 1.48444
+1.16452 -464.322 4.10963
+-18.1407 -890.315 8.98499
+18.2761 -1594.32 12.693
+28.9532 -3159.08 28.3104
+-93.4031 -6236.15 66.0446
+19.1653 -11405.6 107.573
+241.542 -21878.1 209.354
+-381.281 -43054.8 482.482
+-309.703 -79429.5 858.841
+1627.63 -147964 1583.62
+-889.095 -287707 3708.24
+-3098.54 -536355 7442.13
+7490.43 -992574 14807.6
+-70291.5 -1.92147e+06 40569
+-445886 -3.24132e+06 94873.7
+-902170 -3.53674e+06 121256
+-365019 -1.39139e+06 38281.3
+-113072 -437312 8277.71
+-30719.7 -122374 1167.32
+-7697.48 -31499.8 -10.0621
+-1890.69 -7548.37 -80.1865
+-542.068 -1692.27 -36.1929
+-250.625 -356.56 -11.026
+-191.856 -71.5793 -1.59993
+-181.624 -14.3245 1.79998
+-181.691 -3.20286 3.35591
+-184.428 -0.97784 4.33226
+-188.117 -0.550525 5.01843
+-192.128 -0.616162 5.45452
+-196.079 -0.874777 5.64252
+-199.727 -1.18255 5.5942
+-202.942 -1.4329 5.33436
+-205.686 -1.55354 4.89484
+-207.978 -1.51082 4.30886
+-209.866 -1.30606 3.60795
+-211.396 -0.965502 2.82128
+-212.603 -0.528393 1.97612
+-213.508 -0.0365045 1.09871
+-214.122 0.473007 0.214677
+-214.45 0.971104 -0.651034
+-214.497 1.43742 -1.4748
+-214.279 1.85892 -2.23517
+-213.816 2.22784 -2.91381
+-213.14 2.53963 -3.49624
+-212.286 2.79148 -3.97223
+-211.295 2.98159 -4.33592
+-210.205 3.10894 -4.58567
+-209.057 3.17349 -4.72355
+-207.884 3.17641 -4.75495
+-206.717 3.12036 -4.68789
+-205.582 3.00946 -4.53252
+-204.499 2.84928 -4.3005
+-203.484 2.64662 -4.00451
+-202.55 2.40941 -3.65766
+-201.705 2.14655 -3.27305
+0 1.86776 -2.86335
+2234.1 10.9801 -14.8713
+2238.22 13.0197 -17.6439
+2243.04 15.1953 -20.5973
+2248.59 17.4495 -23.6672
+2254.9 19.7171 -26.771
+2261.95 21.9254 -29.8088
+2269.7 23.9952 -32.665
+2278.08 25.8427 -35.2105
+2286.95 27.3821 -37.3072
+2296.14 28.5284 -38.8121
+2305.4 29.2003 -39.584
+2314.46 29.3225 -39.4899
+2322.98 28.8285 -38.413
+2330.6 27.6629 -36.2613
+2336.94 25.7864 -32.9746
+2341.62 23.1816 -28.5326
+2344.27 19.863 -22.96
+2344.54 15.8891 -16.331
+2342.07 11.3759 -8.77128
+2336.52 6.50725 -0.459384
+2327.53 1.53841 8.37323
+2314.72 -3.21612 17.4419
+2297.72 -7.41548 26.4087
+2276.21 -10.7501 34.8829
+2250.11 -13.0203 42.4258
+2219.76 -14.2223 48.5644
+2186.15 -14.6162 52.8212
+2151.14 -14.756 54.7631
+2117.63 -15.5238 54.0631
+2089.99 -18.5362 50.5335
+2076.25 -28.7554 43.9976
+2099.42 -67.4209 33.594
+2246.76 -228.732 15.3637
+2862.34 -907.428 -24.761
+5222.97 -3636.7 -127.86
+13619.1 -13884.2 -390.402
+40624.9 -49302.1 -963.713
+115939 -160083 -1816.24
+282131 -464078 -1708.59
+491098 -1.14554e+06 3691.72
+264676 -2.13846e+06 17593.2
+59489.8 -1.95921e+06 6565.08
+3104.86 -1.22898e+06 -5381.81
+1682.45 -667485 -7059.8
+232.819 -363269 -4683.32
+-738.411 -195615 -2825.37
+115.063 -102514 -1672.38
+143.685 -55028.3 -909.101
+-110.122 -29625 -487.537
+-4.10113 -15307.6 -269.693
+39.661 -8041.02 -142.298
+-14.8014 -4336.92 -73.6869
+-7.03257 -2226.79 -40.4574
+8.43892 -1147.64 -21.5419
+-1.07316 -630.44 -10.955
+-2.40406 -331.353 -6.07014
+1.4411 -171.825 -3.40135
+0.163002 -100.777 -1.80066
+-0.513257 -60.9166 -1.08709
+-0.00234893 -41.3466 -0.747744
+-0.0949677 -38.6492 -0.639132
+0.650575 -47.3538 -0.867722
+-0.417943 -76.9076 -1.35244
+-1.6985 -131.98 -2.35676
+3.28612 -231.62 -4.56912
+0.420508 -453.158 -8.2399
+-10.7693 -863.721 -15.0218
+11.4143 -1587.51 -29.6975
+16.3191 -3107.96 -55.9415
+-55.802 -6057.91 -102.522
+16.6967 -11278.8 -198.73
+144.572 -21626 -376.276
+-223.748 -41971 -679.741
+-124.518 -78206.6 -1267.84
+1047.2 -146709 -2319.01
+-524.383 -281819 -3854.3
+-2555.42 -526931 -6244.82
+-4987.43 -978145 -8947.49
+-90412.6 -1.82051e+06 -4573.9
+-397339 -2.92362e+06 16085.4
+-733499 -3.20347e+06 33589.1
+-418933 -1.71772e+06 9450.09
+-170275 -693430 -1044.51
+-58723.4 -236937 -2234.6
+-19401.6 -71742.8 -1301.47
+-7483.01 -19685.1 -546.989
+-4241.72 -4972.79 -187.043
+-3424.92 -1186.49 -44.5445
+-3231.96 -286.981 11.8118
+-3200.34 -83.4964 39.6077
+-3220.06 -35.6663 58.2445
+-3263.22 -22.5972 72.6524
+-3318.8 -19.5532 83.3987
+-3379.29 -21.1713 90.199
+-3438.97 -25.1802 92.9283
+-3493.94 -29.6492 91.787
+-3542.2 -32.9164 87.2146
+-3583.2 -33.8442 79.7601
+-3617.33 -31.9376 69.985
+-3645.38 -27.2849 58.414
+-3668.13 -20.3855 45.5252
+-3686.14 -11.9458 31.7607
+-3699.68 -2.70149 17.5411
+-3708.85 6.70309 3.27486
+-3713.66 15.7726 -10.6425
+-3714.15 24.1676 -23.8373
+-3710.47 31.6801 -35.9714
+-3702.95 38.1947 -46.757
+-3692.04 43.652 -55.9683
+-3678.33 48.0218 -63.4482
+-3662.45 51.2882 -69.1104
+-3645.06 53.4463 -72.9354
+-3626.78 54.5044 -74.9643
+-3608.18 54.4897 -75.29
+-3589.75 53.4518 -74.0475
+-3571.89 51.4647 -71.4049
+-3554.93 48.6257 -67.5538
+-3539.11 45.0537 -62.7004
+-3524.61 40.8864 -57.057
+-3511.56 36.2781 -50.8346
+0 31.3968 -44.2363
+39418.5 179.863 -227.86
+39480.9 215.341 -272.672
+39554.4 253.271 -320.59
+39639.8 292.667 -370.584
+39737.3 332.402 -421.321
+39846.9 371.21 -471.183
+39968.1 407.704 -518.281
+40099.6 440.409 -560.508
+40239.4 467.809 -595.587
+40384.5 488.388 -621.161
+40531.2 500.671 -634.882
+40674.9 503.262 -634.535
+40810.3 494.887 -618.157
+40931.6 474.435 -584.179
+41032.9 441.039 -531.554
+41108.3 394.191 -459.875
+41152.3 333.923 -369.476
+41159.7 261.03 -261.496
+41125.6 177.332 -137.926
+41045.2 85.8833 -1.62397
+40913.4 -8.94201 143.669
+40724.5 -101.616 293.323
+40472.7 -185.99 441.809
+40153.1 -256.244 582.697
+39764.1 -308.214 708.723
+39310.3 -340.836 812.004
+38807 -357.276 884.504
+38282.7 -365.194 918.858
+37781.7 -375.911 909.486
+37362.7 -403.681 853.691
+37101.3 -471.181 751.795
+37113.1 -643.597 604.329
+37658.2 -1167.02 402.134
+39493.5 -2951.86 101.22
+44868.4 -9093.04 -431.43
+59855.6 -29122.1 -1514.59
+98251.1 -89091.9 -3768.79
+182681 -249457 -8088.89
+322658 -616716 -15053.6
+429868 -1.27626e+06 -23495.1
+249375 -1.98592e+06 -30347
+75960 -1.80222e+06 -36770.2
+14239.2 -1.17161e+06 -33295.1
+4090.53 -656736 -23310.9
+1066.43 -358834 -14159
+-104.226 -193272 -8125.5
+190.108 -102024 -4513.49
+151.886 -54528.6 -2452.58
+-27.4672 -29186.6 -1320.53
+13.4851 -15205.2 -702.638
+32.1716 -7982.98 -370.579
+-3.12932 -4260.81 -196.032
+-1.80468 -2206.08 -103.305
+5.98987 -1143.77 -54.1125
+0.0165425 -618.331 -28.6999
+-1.26893 -326.725 -15.3649
+0.713861 -171.978 -8.26003
+-0.0991995 -98.96 -4.62614
+-0.592064 -59.8293 -2.79181
+-0.369212 -41.1749 -1.92771
+-0.456486 -38.2181 -1.75062
+-0.111843 -47.2429 -2.21956
+-0.849435 -75.43 -3.5067
+-1.68438 -129.841 -6.06824
+0.868411 -231.732 -11.1137
+-1.46612 -446.313 -20.9335
+-8.55599 -848.31 -39.3576
+2.66477 -1582.81 -74.7557
+1.17932 -3076.29 -143.552
+-45.6156 -5955.08 -273.344
+-12.8753 -11206.1 -518.688
+32.5304 -21474.9 -986.729
+-226.306 -41359.8 -1857.22
+-249.331 -77563.7 -3453.44
+129.528 -146063 -6357.38
+-1705.64 -278568 -11412.3
+-6217.29 -521085 -19775.6
+-21775.4 -963466 -32217.7
+-115408 -1.73728e+06 -44839.9
+-376524 -2.6941e+06 -46919.9
+-646787 -2.98357e+06 -36150
+-484113 -1.92136e+06 -29164.6
+-273113 -926097 -19698.5
+-147089 -371275 -11009.7
+-90743.9 -130330 -5301.6
+-69246 -41453.9 -2249.04
+-61668.5 -12485.4 -777.082
+-59027.3 -3928.43 -48.4154
+-58142.6 -1551.58 386.428
+-58025.3 -866.302 714.866
+-58365.4 -623.231 993.037
+-59016.5 -521.79 1224.58
+-59858.4 -498.638 1398.95
+-60779.5 -531.326 1507.38
+-61688 -594.92 1547.57
+-62521.4 -660.259 1523.43
+-63248.3 -700.904 1442.87
+-63861.6 -698.961 1315.47
+-64369.5 -647.341 1150.83
+-64786.3 -548.749 957.791
+-65125.3 -412.704 744.306
+-65395.3 -252.021 517.622
+-65600.3 -79.76 284.569
+-65740.4 92.8175 51.7296
+-65814.3 257.21 -174.549
+-65821.4 407.758 -388.289
+-65763.2 541.164 -584.103
+-65643.9 655.786 -757.422
+-65470.6 750.962 -904.692
+-65252.6 826.5 -1023.48
+-65000.2 882.41 -1112.52
+-64724.1 918.825 -1171.61
+-64434.6 936.047 -1201.54
+-64141 934.644 -1203.93
+-63851.3 915.529 -1181.08
+-63571.9 880.006 -1135.81
+-63307.8 829.768 -1071.29
+-63062.7 766.874 -990.919
+-62839.3 693.709 -898.172
+-62639.1 612.945 -796.48
+0 527.494 -689.128
+557910 -24.507 -1278.24
+559796 -145.12 -1491.63
+562087 -268.395 -1712.29
+564784 -389.7 -1934.85
+567875 -503.502 -2152.54
+571330 -603.557 -2357.37
+575100 -683.127 -2540.41
+579119 -735.196 -2692.06
+583301 -752.707 -2802.64
+587540 -728.83 -2862.88
+591716 -657.246 -2864.69
+595693 -532.452 -2801.97
+599327 -350.085 -2671.31
+602468 -107.242 -2472.7
+604968 197.199 -2209.74
+606687 562.273 -1889.37
+607498 984.623 -1520.89
+607291 1458.19 -1114.19
+605979 1973.83 -677.484
+603498 2518.82 -214.958
+599810 3076.06 275.037
+594903 3622.85 800.308
+588800 4128.99 1372.9
+581564 4553.82 2004.56
+573323 4841.85 2699.96
+564295 4916.27 3449.63
+554832 4669.46 4225.82
+545475 3948.43 4985.43
+537024 2531.14 5683.53
+530628 83.598 6296.85
+527943 -3926.12 6848.93
+531433 -10416.7 7418.4
+544977 -21127.6 8102.39
+575030 -39611.1 8910.91
+632384 -73375.4 9610.44
+733511 -137921 9660.03
+896701 -262334 8594.3
+1.12072e+06 -490754 7230.22
+1.33016e+06 -860449 8964.35
+1.3159e+06 -1.32349e+06 17157.6
+876246 -1.6265e+06 23634.6
+424062 -1.40748e+06 5534.68
+175754 -949113 -10341
+73832 -563093 -12862
+31384.8 -318370 -9477.05
+13417.8 -175386 -5962.43
+6515.65 -94792.8 -3468.7
+3242.39 -50989.6 -1907.1
+1488.63 -27270.2 -1024.71
+774.302 -14393.8 -544.123
+424.666 -7581.77 -284.322
+193.27 -4003.91 -148.071
+95.1043 -2094.15 -77.2974
+53.9666 -1095.55 -40.043
+20.6925 -581.822 -20.811
+4.73082 -309.04 -11.0246
+-0.57886 -165.728 -5.89179
+-5.73408 -93.4023 -3.21673
+-8.97356 -56.3926 -1.89352
+-10.5685 -39.4729 -1.28538
+-12.3161 -36.4089 -1.15197
+-14.052 -45.3787 -1.47954
+-18.2495 -70.9927 -2.37343
+-24.7372 -122.829 -4.21878
+-32.0293 -223.183 -7.92605
+-54.4075 -421.601 -15.0385
+-98.6419 -799.596 -28.6541
+-154.912 -1516.69 -55.5666
+-294.969 -2917.13 -107.827
+-613.957 -5600.62 -207.269
+-1095.12 -10653.4 -399.294
+-2113.01 -20324.6 -765.52
+-4590.25 -38667.6 -1440.75
+-9188.67 -72633.7 -2676.58
+-19069.2 -135857 -4841.71
+-44955.2 -253236 -8199.25
+-106176 -463928 -12665.2
+-254420 -830304 -16046.3
+-618221 -1.41834e+06 -8734.2
+-1.28273e+06 -2.12734e+06 20405.3
+-1.92934e+06 -2.47242e+06 50316.2
+-1.94903e+06 -2.00595e+06 36186
+-1.64157e+06 -1.29205e+06 18887.6
+-1.31561e+06 -726389 13203.4
+-1.08025e+06 -381605 13438.6
+-935253 -197262 13713
+-852814 -103610 12617.3
+-808855 -55520.5 10941.5
+-788114 -29473.2 9556.51
+-781758 -14379.7 8752.88
+-784576 -5146.17 8371.72
+-793245 655.985 8105.02
+-805468 4288.92 7708.74
+-819598 6481.04 7086.31
+-834469 7692.3 6276.21
+-849296 8230.55 5391.79
+-863584 8307.46 4554.66
+-877037 8069.28 3847.34
+-889471 7616.36 3293.99
+-900755 7017.09 2865.71
+-910765 6318.38 2500.48
+-919366 5553.61 2127
+-926418 4748.22 1684.86
+-931792 3923.34 1137.09
+-935382 3097.89 474.251
+-937128 2289.45 -288.079
+-937028 1514.41 -1116.13
+-935139 787.734 -1966.33
+-931577 122.55 -2793.13
+-926510 -470.184 -3555.08
+-920151 -981.949 -4218.52
+-912739 -1406.79 -4759.21
+-904534 -1741.35 -5162.39
+-895802 -1984.78 -5421.86
+-886806 -2138.66 -5538.74
+-877796 -2206.8 -5520.1
+-869003 -2195.03 -5377.53
+-860632 -2110.82 -5125.85
+-852859 -1962.97 -4781.69
+-845830 -1761.09 -4362.36
+0 -1515.03 -3884.72
+1.24852e+06 -643.877 -2567.94
+1.25266e+06 -1244.9 -2928.44
+1.25771e+06 -1865.33 -3280.19
+1.26367e+06 -2482.94 -3611.03
+1.27046e+06 -3071.61 -3907.49
+1.278e+06 -3602.02 -4155.44
+1.28614e+06 -4042.6 -4340.97
+1.29469e+06 -4360.5 -4451.43
+1.30344e+06 -4522.86 -4476.47
+1.31214e+06 -4498.11 -4409.3
+1.32048e+06 -4257.48 -4247.85
+1.32818e+06 -3776.58 -3995.89
+1.33493e+06 -3036.96 -3663.83
+1.34042e+06 -2027.82 -3268.88
+1.34438e+06 -747.526 -2834.22
+1.34656e+06 794.739 -2386.86
+1.34677e+06 2577.47 -1953.82
+1.34486e+06 4565.29 -1556.67
+1.34076e+06 6707.41 -1204.92
+1.33444e+06 8935.93 -889.197
+1.32591e+06 11164 -575.629
+1.31526e+06 13283.5 -203.355
+1.30258e+06 15162.3 312.841
+1.28803e+06 16640.2 1073.43
+1.27181e+06 17523.6 2178.53
+1.25422e+06 17577.6 3708.15
+1.23571e+06 16512.7 5703.35
+1.21695e+06 13965.9 8155.85
+1.19891e+06 9466.32 11012.9
+1.18293e+06 2376.52 14199.2
+1.1708e+06 -8221.86 17646.4
+1.1649e+06 -23761.5 21303.6
+1.16835e+06 -46678.5 25091.3
+1.18526e+06 -81393.1 28767.6
+1.22071e+06 -136046 31734.3
+1.2789e+06 -224799 32960.2
+1.35643e+06 -368672 31371.8
+1.42648e+06 -588515 26952
+1.41866e+06 -878973 21724.4
+1.2308e+06 -1.16074e+06 17955.3
+843769 -1.26016e+06 12453.7
+475620 -1.04792e+06 -1693.94
+241832 -714263 -10865
+119478 -436600 -11180.7
+58515.2 -253740 -7927.26
+28723.5 -143153 -4806.99
+14426.5 -79086.5 -2659.94
+7318.38 -43144.4 -1383.43
+3694.28 -23282.8 -694.311
+1895.41 -12423.1 -339.103
+979.06 -6587.99 -161.917
+491.828 -3483.25 -76.391
+244.387 -1832.81 -35.5583
+118.385 -964.19 -16.3078
+48.9723 -510.61 -7.45012
+12.3653 -271.978 -3.36751
+-6.48021 -146.914 -1.48452
+-17.6142 -82.4641 -0.637985
+-24.4392 -49.8002 -0.251759
+-29.0736 -35.0851 -0.0793053
+-33.3962 -32.3546 -0.0288847
+-38.704 -40.3632 -0.0810125
+-47.3167 -62.6968 -0.290505
+-61.876 -108.559 -0.801761
+-87.2715 -197.846 -1.97938
+-137.273 -370.936 -4.64252
+-232.106 -702.101 -10.4501
+-406.048 -1334.86 -23.1116
+-750.851 -2552.02 -50.6294
+-1429.94 -4873.03 -108.881
+-2713.01 -9258.8 -230.854
+-5251.81 -17540 -483.045
+-10382.5 -33020.9 -986.147
+-20481.9 -61496.6 -1956.92
+-40941.7 -113441 -3735.83
+-83851.3 -207027 -6652.63
+-172187 -370908 -10679.8
+-350987 -647062 -14203.3
+-696038 -1.07532e+06 -11070.9
+-1.24387e+06 -1.59884e+06 6550.37
+-1.82193e+06 -1.93402e+06 30131.3
+-2.10045e+06 -1.77318e+06 36295.6
+-2.11118e+06 -1.32675e+06 38534.5
+-2.00872e+06 -873738 43481.4
+-1.89665e+06 -537720 47706.5
+-1.81247e+06 -323105 47927.7
+-1.75974e+06 -194015 44274.8
+-1.73206e+06 -116137 38582.1
+-1.72255e+06 -67160.7 32483.2
+-1.72594e+06 -34730.8 26769.9
+-1.73839e+06 -12395.9 21585.8
+-1.75693e+06 3271.94 16824.8
+-1.77928e+06 14229.8 12415.7
+-1.80374e+06 21702.1 8428.23
+-1.82915e+06 26516.7 5043.12
+-1.85477e+06 29266.3 2459.79
+-1.8802e+06 30392.4 804.002
+-1.90519e+06 30235 73.8882
+-1.92956e+06 29064.1 134.439
+-1.95305e+06 27100.3 750.742
+-1.9753e+06 24529.1 1640.88
+-1.99583e+06 21510.4 2529.87
+-2.0141e+06 18185.2 3191.69
+-2.02955e+06 14679.9 3473.65
+-2.04169e+06 11108 3302.91
+-2.05008e+06 7572.2 2679.15
+-2.05447e+06 4163.77 1658.41
+-2.05476e+06 962.84 333.484
+-2.05099e+06 -1962.29 -1184.89
+-2.04339e+06 -4555.71 -2783.52
+-2.03232e+06 -6774.39 -4357.75
+-2.01825e+06 -8588.44 -5818.08
+-2.00174e+06 -9981.08 -7093.46
+-1.98341e+06 -10948.4 -8132.16
+-1.96388e+06 -11498.5 -8901.27
+-1.9438e+06 -11650.7 -9385.31
+-1.92378e+06 -11434.2 -9584.24
+-1.90437e+06 -10886.3 -9510.97
+-1.88608e+06 -10050.4 -9188.49
+-1.86934e+06 -8974.45 -8646.81
+0 -7708.27 -7920.16
+1.9633e+06 -1437 -4056.01
+1.96943e+06 -2647.18 -4611.66
+1.97681e+06 -3898.27 -5138.02
+1.98538e+06 -5145.53 -5613.75
+1.99505e+06 -6336.61 -6016.3
+2.00565e+06 -7412.98 -6323.28
+2.01698e+06 -8311.68 -6514.13
+2.02876e+06 -8967.52 -6571.9
+2.04068e+06 -9315.52 -6485.21
+2.05239e+06 -9293.83 -6250.15
+2.0635e+06 -8846.81 -5872.09
+2.07362e+06 -7928.25 -5367.17
+2.08239e+06 -6504.77 -4763.09
+2.08944e+06 -4559.04 -4098.69
+2.09448e+06 -2092.92 -3421.93
+2.09727e+06 869.532 -2785.47
+2.09766e+06 4279.4 -2239.61
+2.09559e+06 8060.37 -1822.6
+2.09106e+06 12106.5 -1549.02
+2.08414e+06 16280.1 -1397.68
+2.07493e+06 20409.9 -1301.32
+2.06357e+06 24289 -1141.22
+2.05012e+06 27673.5 -749.773
+2.03463e+06 30280.6 76.1801
+2.01708e+06 31787.1 1550.66
+1.99739e+06 31825.7 3864.87
+1.9755e+06 29980.8 7151.27
+1.9514e+06 25776.3 11455.9
+1.92518e+06 18653.9 16730.2
+1.89709e+06 7924.48 22848
+1.86753e+06 -7332.31 29639.9
+1.83697e+06 -28482.9 36917.2
+1.80595e+06 -57779.8 44444.1
+1.77485e+06 -99173.1 51820.7
+1.74335e+06 -159507 58310.5
+1.70859e+06 -249430 62774
+1.66064e+06 -381647 63996.2
+1.57539e+06 -561737 61493.4
+1.41222e+06 -767578 56037.4
+1.13682e+06 -926895 48345
+781657 -933932 36590.4
+471207 -753361 19600.5
+263539 -513544 6728.59
+142593 -318469 1183.4
+75888.9 -188394 -153.006
+40092.6 -108233 -145.576
+21178 -60840.9 67.584
+11167.5 -33648 187.253
+5863.37 -18351.2 202.473
+3073.53 -9887.49 168.264
+1602.75 -5282.29 122.554
+822.763 -2806.3 82.1727
+412.138 -1484.6 52.2925
+195.699 -784.791 32.1558
+79.8168 -416.416 19.3201
+17.6952 -222.494 11.494
+-15.9333 -120.711 6.87341
+-35.0618 -67.8323 4.22563
+-46.7428 -41.0512 2.79637
+-55.0098 -29.0385 2.14449
+-62.6684 -26.8115 2.05353
+-72.1781 -33.4248 2.48468
+-86.8919 -51.7127 3.56181
+-112.048 -89.3699 5.615
+-157.282 -162.605 9.25543
+-241.834 -303.454 15.508
+-400.605 -572.642 26.0342
+-699.203 -1086.33 43.2377
+-1269.12 -2066.51 70.1602
+-2356.27 -3925.36 110.014
+-4415.95 -7422.89 163.56
+-8343.15 -13958 223.573
+-15843.6 -26028.9 268.219
+-30068.2 -47981.4 250.769
+-57113.4 -87345.7 118.235
+-108678 -156799 -35.1538
+-205612 -276272 405.545
+-383354 -474385 3468.62
+-692643 -778482 13924.1
+-1.16049e+06 -1.15872e+06 36402.9
+-1.69845e+06 -1.44516e+06 64310.6
+-2.11305e+06 -1.42707e+06 81445.3
+-2.35617e+06 -1.16647e+06 90646.9
+-2.48203e+06 -838639 95862.9
+-2.55195e+06 -559450 96424.4
+-2.60078e+06 -360699 91435.7
+-2.64229e+06 -229737 82021.9
+-2.68059e+06 -144077 70347
+-2.71672e+06 -85994 58209.5
+-2.75097e+06 -44656.5 46548.8
+-2.78336e+06 -14138.6 35667.4
+-2.81381e+06 8750.42 25640.5
+-2.84225e+06 25833.1 16598.1
+-2.86879e+06 38261.4 8807.51
+-2.89377e+06 46841.8 2605.4
+-2.91774e+06 52189.3 -1732.12
+-2.94136e+06 54803.9 -4103.62
+-2.96519e+06 55112.7 -4635.73
+-2.98957e+06 53494 -3667.44
+-3.01449e+06 50290.5 -1682.94
+-3.03959e+06 45817.5 778.259
+-3.06421e+06 40367.6 3207.45
+-3.08743e+06 34213.4 5191.52
+-3.10825e+06 27608.9 6448.95
+-3.12567e+06 20789 6838.15
+-3.13881e+06 13969.5 6344.16
+-3.147e+06 7345.34 5051.99
+-3.1498e+06 1089.05 3114.44
+-3.14706e+06 -4651.28 720.963
+-3.13889e+06 -9753.61 -1928.48
+-3.12564e+06 -14123.3 -4642.79
+-3.10786e+06 -17693.8 -7252.4
+-3.08627e+06 -20426.8 -9616.5
+-3.0617e+06 -22311.4 -11626.3
+-3.03503e+06 -23362.5 -13205.8
+-3.00719e+06 -23618.3 -14310.4
+-2.97908e+06 -23137.6 -14924.7
+-2.95155e+06 -21996 -15058.5
+-2.92536e+06 -20281.8 -14742.1
+-2.90117e+06 -18092.3 -14021.6
+0 -15528.9 -12953.2
+2.4986e+06 -1888.91 -5484.56
+2.50566e+06 -3430.9 -6290.92
+2.51387e+06 -5025.63 -7053.1
+2.52316e+06 -6615.9 -7739.26
+2.5334e+06 -8135.01 -8315.99
+2.54441e+06 -9508.53 -8750.38
+2.55599e+06 -10656.6 -9012.48
+2.56786e+06 -11496.6 -9077.88
+2.57971e+06 -11946.9 -8930.48
+2.59123e+06 -11930.2 -8565.27
+2.60209e+06 -11377.6 -7990.82
+2.61195e+06 -10233.2 -7231.35
+2.62055e+06 -8458.04 -6327.74
+2.62764e+06 -6034.49 -5336.98
+2.63306e+06 -2969.9 -4329.24
+2.63674e+06 699.844 -3381.83
+2.63869e+06 4907.41 -2569.55
+2.63902e+06 9551.56 -1951.52
+2.6379e+06 14495.3 -1555.19
+2.63551e+06 19564.3 -1359.68
+2.63201e+06 24546.4 -1281.2
+2.62748e+06 29191.4 -1164.54
+2.62182e+06 33211.6 -784.805
+2.61474e+06 36283.9 137.012
+2.60567e+06 38052.1 1903.24
+2.59381e+06 38130.8 4796.13
+2.57812e+06 36108 9029.89
+2.5574e+06 31543.4 14711.1
+2.53033e+06 23957.6 21822.7
+2.49557e+06 12797.3 30240
+2.45173e+06 -2645.27 39774.5
+2.39733e+06 -23408.9 50214.1
+2.33065e+06 -51212.2 61312.7
+2.24951e+06 -89048.5 72681.2
+2.15068e+06 -141913 83591.7
+2.02878e+06 -216904 92817.4
+1.87426e+06 -320707 98738.9
+1.67213e+06 -451554 99819.4
+1.40674e+06 -585651 95062.8
+1.08033e+06 -669431 83823.9
+738819 -643584 65761.5
+459290 -507936 43589.2
+269663 -345139 25288.8
+153600 -215429 14070.4
+85876.1 -128786 8072.71
+47415.6 -74906.8 4861.92
+25950.4 -42635.6 3027.83
+14086.1 -23834 1902.47
+7583.08 -13114.5 1183.07
+4049.73 -7120.49 722.56
+2140.25 -3827.67 432.878
+1111.77 -2043.22 254.702
+560.157 -1085.75 147.681
+264.514 -576.227 84.7295
+105.336 -306.624 48.3227
+19.1205 -164.321 27.5781
+-28.255 -89.4459 15.9209
+-55.2593 -50.3859 9.49172
+-71.8418 -30.579 6.09977
+-83.7221 -21.7037 4.55923
+-94.7578 -20.07 4.31556
+-108.437 -24.9957 5.26607
+-129.336 -38.5515 7.72678
+-164.896 -66.4378 12.5451
+-228.591 -120.544 21.383
+-345.782 -224.151 37.2539
+-563.68 -421.674 65.451
+-970.795 -797.518 115.004
+-1734.41 -1510.97 200.921
+-3164.88 -2857.5 347.506
+-5833.16 -5378.21 592.601
+-10794.3 -10051.6 993.426
+-19970.2 -18604.5 1636.58
+-36802.4 -34003.9 2656.83
+-67462.7 -61270.3 4295.2
+-122880 -108716 7073.89
+-221564 -189440 12160
+-393112 -322374 21994.8
+-677999 -526274 40678.5
+-1.10383e+06 -786373 71033.2
+-1.62718e+06 -1.00259e+06 106953
+-2.12486e+06 -1.03781e+06 134584
+-2.52509e+06 -895956 149725
+-2.82575e+06 -678385 153578
+-3.05177e+06 -473088 147836
+-3.22614e+06 -316101 134733
+-3.3633e+06 -206895 117268
+-3.47172e+06 -132239 98314.8
+-3.55686e+06 -79552.2 79786.6
+-3.62269e+06 -40542.7 62537.3
+-3.67237e+06 -10555.8 46771.5
+-3.70855e+06 12878.6 32522.8
+-3.73367e+06 31107.8 19944.8
+-3.75012e+06 44938.8 9368.18
+-3.76039e+06 54922.4 1191.16
+-3.76695e+06 61489.9 -4290.04
+-3.7721e+06 65019.6 -7020.11
+-3.7778e+06 65869.5 -7242.3
+-3.78541e+06 64390.1 -5468.5
+-3.79566e+06 60928.8 -2386.5
+-3.80861e+06 55829.4 1258.59
+-3.82372e+06 49429.6 4775.61
+-3.84002e+06 42058.3 7609.65
+-3.85628e+06 34031.8 9386.92
+-3.87115e+06 25651.1 9923.65
+-3.88338e+06 17197.8 9207.37
+-3.89189e+06 8930.23 7360.87
+-3.89588e+06 1079.77 4599.26
+-3.89486e+06 -6153.09 1188.24
+-3.88863e+06 -12601.8 -2591.12
+-3.87733e+06 -18136.2 -6468.82
+-3.86133e+06 -22663.8 -10203.6
+-3.84122e+06 -26130.2 -13593.4
+-3.81776e+06 -28517.6 -16480.6
+-3.79181e+06 -29842.8 -18753.5
+-3.76427e+06 -30153.8 -20344.9
+-3.73608e+06 -29525.4 -21229.7
+-3.70812e+06 -28054.9 -21419.2
+-3.68119e+06 -25855.9 -20955.2
+-3.65604e+06 -23053.5 -19902.7
+0 -19778.3 -18342.7
+2.80589e+06 -1614.12 -6647.64
+2.81284e+06 -2914.28 -7719.11
+2.82052e+06 -4259.02 -8740.21
+2.82883e+06 -5599.96 -9669.05
+2.83766e+06 -6880.8 -10461.4
+2.84685e+06 -8038.79 -11073.4
+2.85624e+06 -9006.71 -11464.4
+2.86563e+06 -9715.31 -11600.4
+2.87482e+06 -10096.2 -11457.8
+2.88361e+06 -10085.1 -11026.4
+2.89183e+06 -9625.19 -10313
+2.89935e+06 -8671.11 -9344.37
+2.90606e+06 -7192.23 -8168.13
+2.91197e+06 -5176.27 -6852.96
+2.91715e+06 -2632.44 -5485.15
+2.92174e+06 405.943 -4161.75
+2.92599e+06 3879.25 -2979.3
+2.9302e+06 7699.95 -2018.35
+2.93468e+06 11751.7 -1324.5
+2.93972e+06 15888.8 -888.424
+2.94547e+06 19936.6 -627.956
+2.9519e+06 23692.5 -376.954
+2.95867e+06 26928 114.402
+2.96505e+06 29391.6 1163.67
+2.96989e+06 30813.5 3122.87
+2.97159e+06 30910.4 6330.77
+2.96816e+06 29390.8 11059.4
+2.95724e+06 25956.8 17470
+2.93626e+06 20298.5 25595.2
+2.90251e+06 12071.2 35358.2
+2.85312e+06 840.081 46624.7
+2.78512e+06 -14036.4 59253
+2.69517e+06 -33629.8 73088.3
+2.57934e+06 -59796.5 87838.6
+2.4327e+06 -95546.6 102818
+2.24889e+06 -144864 116647
+2.0202e+06 -210699 127122
+1.73995e+06 -289684 131483
+1.40974e+06 -364723 127119
+1.05178e+06 -403654 112602
+714838 -377307 89148.8
+450738 -293616 62202.6
+271396 -198861 39393.6
+159094 -124454 23904.1
+91542.6 -74827.3 14460
+51892.1 -43851.6 8825.85
+29039.1 -25160.3 5412.58
+16057.6 -14167 3304.72
+8779.7 -7843.3 1993.8
+4746.78 -4280.76 1184.85
+2532.34 -2310.95 693.469
+1324.75 -1237.82 400.328
+669.54 -659.771 228.546
+314.78 -351.104 129.47
+122.357 -187.252 73.0811
+17.3453 -100.572 41.35
+-40.8262 -54.8725 23.6925
+-74.1773 -30.9771 14.0284
+-94.7879 -18.8455 8.95451
+-109.66 -13.4105 6.65181
+-123.514 -12.4174 6.27664
+-140.646 -15.4522 7.6721
+-166.641 -23.7768 11.3165
+-210.586 -40.8754 18.4977
+-288.783 -73.9848 31.7669
+-431.404 -137.222 55.8096
+-694.496 -257.531 98.9767
+-1182.19 -485.917 175.836
+-2087.38 -918.081 311.299
+-3763.56 -1731.02 547.063
+-6851.63 -3247.08 951.165
+-12502.6 -6043.52 1632.27
+-22753.3 -11129.7 2762.1
+-41145.8 -20222.9 4613.69
+-73767.4 -36191 7643.25
+-130932 -63743.2 12677
+-229618 -110341 21258.8
+-396437 -186893 36116
+-667781 -304541 61065.4
+-1.07347e+06 -456714 98117.3
+-1.59448e+06 -590654 141456
+-2.14581e+06 -629030 177831
+-2.64877e+06 -560955 198199
+-3.06907e+06 -437572 201047
+-3.40586e+06 -312653 189484
+-3.67111e+06 -212736 168572
+-3.87791e+06 -140996 143414
+-4.03696e+06 -90771.1 117845
+-4.15646e+06 -54594.8 93982.7
+-4.24278e+06 -27259.3 72547.2
+-4.30108e+06 -5781.49 53520.4
+-4.33583e+06 11405.1 36742
+-4.3512e+06 25115.2 22237.6
+-4.35131e+06 35798.1 10270.3
+-4.34037e+06 43736 1204.31
+-4.32251e+06 49145.6 -4696.42
+-4.3016e+06 52228.5 -7430.49
+-4.28096e+06 53195.3 -7326.44
+-4.26313e+06 52273.1 -5008.76
+-4.24978e+06 49705.3 -1291.87
+-4.24163e+06 45747.8 2955.07
+-4.23859e+06 40663.6 6934.73
+-4.23993e+06 34717.3 10014.6
+-4.24447e+06 28170.6 11776.9
+-4.25079e+06 21277.1 12027.4
+-4.25746e+06 14277.8 10772.5
+-4.26313e+06 7396.51 8175.97
+-4.2667e+06 835.361 4508.63
+-4.26733e+06 -5229.16 98.824
+-4.26449e+06 -10649.6 -4709
+-4.25795e+06 -15310.1 -9585.51
+-4.24773e+06 -19127.7 -14237.5
+-4.23411e+06 -22052.7 -18420.2
+-4.21753e+06 -24067.7 -21943.7
+-4.19857e+06 -25185.5 -24674.2
+-4.1779e+06 -25445.9 -26533.4
+-4.15622e+06 -24912.4 -27494
+-4.13426e+06 -23667.1 -27574.2
+-4.11267e+06 -21807 -26829.5
+-4.09207e+06 -19438.1 -25344.3
+0 -16671.7 -23223.2
+2.942e+06 -634.005 -7401.99
+2.94844e+06 -1141.89 -8678.45
+2.95514e+06 -1667.19 -9903.94
+2.96203e+06 -2190.97 -11029.2
+2.96898e+06 -2691.23 -12002.1
+2.97589e+06 -3143.44 -12770.1
+2.98265e+06 -3521.37 -13284.1
+2.98914e+06 -3798.02 -13502.1
+2.99528e+06 -3946.8 -13393.3
+3.00101e+06 -3942.76 -12941.8
+3.00631e+06 -3764 -12151.2
+3.01123e+06 -3393.12 -11047.2
+3.01586e+06 -2818.62 -9680.07
+3.0204e+06 -2036.26 -8124.27
+3.02511e+06 -1050.22 -6475.55
+3.03035e+06 125.834 -4843.65
+3.03654e+06 1468.05 -3340.27
+3.0441e+06 2941.81 -2062.33
+3.05347e+06 4501.51 -1071.36
+3.06496e+06 6090.55 -371.558
+3.07872e+06 7641.62 110.146
+3.09458e+06 9077.33 537.035
+3.11199e+06 10311.2 1163.58
+3.1299e+06 11249.2 2319.98
+3.14674e+06 11791.7 4378.52
+3.16036e+06 11835.9 7704.76
+3.1681e+06 11277.7 12602.9
+3.16687e+06 10013.2 19271
+3.1533e+06 7936.4 27784.7
+3.12382e+06 4931 38119.8
+3.07467e+06 850.521 50209.4
+3.0019e+06 -4522.74 63998.5
+2.90114e+06 -11553.6 79435.4
+2.76733e+06 -20871.3 96327.4
+2.59445e+06 -33478.4 114029
+2.37565e+06 -50649.8 131028
+2.1047e+06 -73181.9 144646
+1.78033e+06 -99566.3 151212
+1.41422e+06 -123666 147044
+1.03882e+06 -134820 130351
+703044 -124359 103456
+446063 -96108.5 73405.6
+271866 -64968.8 47800.3
+161718 -40695.7 29785.7
+94472.2 -24529.1 18324.6
+54315.1 -14426.2 11257.6
+30768.1 -8309.67 6895.93
+17188.6 -4695.94 4188.09
+9477.86 -2607.93 2510.13
+5158.95 -1427.1 1481.99
+2766.52 -772.06 862.281
+1452.48 -414.258 495.279
+734.98 -221.139 281.566
+344.313 -117.84 158.947
+131.415 -62.9205 89.4611
+14.7057 -33.833 50.4963
+-50.2382 -18.4814 28.8727
+-87.6269 -10.4458 17.0627
+-110.834 -6.36354 10.8703
+-127.652 -4.53477 8.05981
+-143.35 -4.20206 7.59677
+-162.731 -5.2267 9.28842
+-192.017 -8.03241 13.7198
+-241.304 -13.7898 22.4686
+-328.605 -24.9262 38.6686
+-487.042 -46.17 68.0951
+-777.9 -86.5417 121.084
+-1314.39 -163.088 215.769
+-2304.41 -307.715 383.384
+-4125.99 -579.319 676.625
+-7458 -1084.86 1182.38
+-13502.4 -2014.99 2040.91
+-24351.4 -3701.42 3475.27
+-43577.7 -6705.64 5840.02
+-77183.3 -11959.7 9715.04
+-135116 -20989.3 16098.2
+-233547 -36221.3 26743.2
+-397737 -61230.5 44543
+-662536 -99725.1 73220
+-1.05942e+06 -149866 114475
+-1.58172e+06 -195182 162665
+-2.16387e+06 -210685 204578
+-2.72542e+06 -190770 228347
+-3.21509e+06 -150873 230566
+-3.61665e+06 -108986 215040
+-3.93482e+06 -74739.9 188720
+-4.18154e+06 -49786.8 158265
+-4.36884e+06 -32132.3 128283
+-4.50669e+06 -19305.8 101071
+-4.60295e+06 -9530.67 77236.5
+-4.66394e+06 -1776.55 56555.9
+-4.69508e+06 4496.06 38671.3
+-4.70145e+06 9560.64 23456.3
+-4.68807e+06 13559.2 11073.3
+-4.6601e+06 16574.1 1823.95
+-4.62265e+06 18666 -4071.3
+-4.58061e+06 19893.2 -6652.62
+-4.53823e+06 20321.4 -6297.32
+-4.49896e+06 20026.5 -3687.01
+-4.46519e+06 19094 302.907
+-4.43827e+06 17616.9 4745.99
+-4.41858e+06 15693.6 8798.44
+-4.40572e+06 13424.8 11797.4
+-4.39871e+06 10911.5 13313.4
+-4.39621e+06 8252.95 13158.1
+-4.39676e+06 5543.83 11359.4
+-4.39891e+06 2872.83 8113.63
+-4.40138e+06 320.373 3730.59
+-4.4031e+06 -2043.03 -1420.03
+-4.40326e+06 -4158.32 -6953.82
+-4.40132e+06 -5978.91 -12505.5
+-4.397e+06 -7471.37 -17751.6
+-4.39022e+06 -8615.5 -22423.7
+-4.38111e+06 -9403.96 -26314.8
+-4.36994e+06 -9841.45 -29281.4
+-4.35709e+06 -9943.45 -31241.5
+-4.343e+06 -9734.71 -32170.2
+-4.32817e+06 -9247.52 -32093.1
+-4.31308e+06 -8519.85 -31077.4
+-4.29818e+06 -7593.41 -29222.5
+0 -6511.78 -26649.6
+2.97779e+06 634.005 -7662.86
+2.98396e+06 1141.89 -9016.56
+2.99022e+06 1667.19 -10319.7
+2.99646e+06 2190.97 -11520.5
+3.00259e+06 2691.23 -12563.6
+3.00851e+06 3143.44 -13393.4
+3.01413e+06 3521.37 -13957.6
+3.01938e+06 3798.02 -14211
+3.02422e+06 3946.8 -14119.7
+3.02866e+06 3942.76 -13665.8
+3.03273e+06 3764 -12851
+3.03655e+06 3393.12 -11700.4
+3.0403e+06 2818.62 -10264.6
+3.04425e+06 2036.26 -8619.95
+3.04875e+06 1050.22 -6865.21
+3.05423e+06 -125.834 -5114.51
+3.06115e+06 -1468.05 -3485.01
+3.07002e+06 -2941.81 -2079.78
+3.08128e+06 -4501.51 -966.668
+3.09528e+06 -6090.55 -155.686
+3.11212e+06 -7641.62 421.571
+3.13162e+06 -9077.33 925.535
+3.15312e+06 -10311.2 1610.12
+3.17547e+06 -11249.2 2807.57
+3.19693e+06 -11791.7 4894.91
+3.21517e+06 -11835.9 8245.04
+3.2273e+06 -11277.7 13172.1
+3.22999e+06 -10013.2 19887
+3.2196e+06 -7936.4 28481.9
+3.19227e+06 -4931 38954.4
+3.14395e+06 -850.52 51266.4
+3.07035e+06 4522.74 65399.8
+2.96673e+06 11553.6 81346.2
+2.82762e+06 20871.3 98954.4
+2.64661e+06 33478.4 117596
+2.41669e+06 50649.8 135708
+2.13216e+06 73181.9 150436
+1.7936e+06 99566.3 157777
+1.41603e+06 123666 153679
+1.03506e+06 134820 136245
+699474 124359 108191
+444577 96108.5 77088.6
+271945 64968.8 50553.1
+162494 40695.7 31715.1
+95376.5 24529.1 19599.8
+55081.2 14426.2 12065.8
+31324.1 8309.67 7392.63
+17556.6 4695.94 4486.03
+9706.83 2607.93 2685.41
+5294.9 1427.1 1583.44
+2844.06 772.06 920.2
+1494.81 414.258 527.996
+756.605 221.139 299.902
+353.947 117.84 169.175
+134.171 62.9205 95.1606
+13.5142 33.833 53.6869
+-53.7256 18.4814 30.6841
+-92.4919 10.4458 18.1262
+-116.591 6.36354 11.5432
+-134.081 4.53477 8.55516
+-150.418 4.20206 8.06134
+-170.576 5.2267 9.85652
+-200.993 8.03241 14.5627
+-252.105 13.7898 23.8582
+-342.494 24.9262 41.078
+-506.269 46.17 72.3732
+-806.444 86.5417 128.761
+-1359.2 163.088 229.595
+-2377.38 307.715 408.255
+-4246.97 579.319 721.153
+-7658.92 1084.86 1261.49
+-13831.1 2014.99 2180
+-24872.2 3701.42 3716.61
+-44360.8 6705.64 6252.31
+-78265.9 11959.7 10406.6
+-136415 20989.3 17231.9
+-234730 36221.3 28548.6
+-398089 61230.5 47303.7
+-660947 99725.1 77200.1
+-1.05537e+06 149866 119862
+-1.57848e+06 195182 169702
+-2.17071e+06 210685 213478
+-2.75133e+06 190770 238397
+-3.2637e+06 150873 240386
+-3.68648e+06 108986 223458
+-4.0219e+06 74739.9 195222
+-4.28146e+06 49786.8 162903
+-4.47768e+06 32132.3 131398
+-4.62115e+06 19305.8 103070
+-4.72026e+06 9530.67 78481.5
+-4.78172e+06 1776.55 57328
+-4.81126e+06 -4496.06 39169.7
+-4.81418e+06 -9560.64 23815.9
+-4.79579e+06 -13559.2 11384.3
+-4.76152e+06 -16574.1 2147.84
+-4.71681e+06 -18666 -3691.77
+-4.66685e+06 -19893.2 -6189.99
+-4.61627e+06 -20321.4 -5739.52
+-4.56879e+06 -20026.5 -3038.69
+-4.52712e+06 -19094 1020.06
+-4.49284e+06 -17616.9 5494.8
+-4.46655e+06 -15693.6 9529.87
+-4.44798e+06 -13424.8 12455.7
+-4.43625e+06 -10911.5 13841.7
+-4.43009e+06 -8252.95 13504.4
+-4.42805e+06 -5543.83 11480.5
+-4.42866e+06 -2872.83 7978.99
+-4.43059e+06 -320.373 3323.75
+-4.43267e+06 2043.03 -2101.06
+-4.434e+06 4158.31 -7897.41
+-4.43393e+06 5978.91 -13688
+-4.43202e+06 7471.37 -19139.6
+-4.42809e+06 8615.5 -23976.1
+-4.42212e+06 9403.97 -27985.8
+-4.41424e+06 9841.45 -31022.3
+-4.40472e+06 9943.45 -33003.2
+-4.39388e+06 9734.71 -33905.2
+-4.38212e+06 9247.52 -33757
+-4.36984e+06 8519.85 -32630.4
+-4.35742e+06 7593.41 -30630.3
+0 6511.78 -27884.4
+2.942e+06 1614.12 -7401.99
+2.94844e+06 2914.28 -8678.45
+2.95514e+06 4259.02 -9903.94
+2.96203e+06 5599.96 -11029.3
+2.96898e+06 6880.8 -12002.1
+2.97589e+06 8038.79 -12770.1
+2.98265e+06 9006.71 -13284.1
+2.98914e+06 9715.31 -13502.1
+2.99528e+06 10096.2 -13393.3
+3.00101e+06 10085.1 -12941.8
+3.00631e+06 9625.19 -12151.2
+3.01123e+06 8671.11 -11047.2
+3.01586e+06 7192.23 -9680.08
+3.0204e+06 5176.27 -8124.27
+3.02511e+06 2632.44 -6475.55
+3.03035e+06 -405.943 -4843.65
+3.03654e+06 -3879.25 -3340.27
+3.0441e+06 -7699.95 -2062.33
+3.05347e+06 -11751.7 -1071.36
+3.06496e+06 -15888.8 -371.558
+3.07872e+06 -19936.6 110.146
+3.09458e+06 -23692.5 537.034
+3.11199e+06 -26928 1163.58
+3.1299e+06 -29391.6 2319.98
+3.14674e+06 -30813.5 4378.52
+3.16036e+06 -30910.4 7704.76
+3.1681e+06 -29390.8 12602.9
+3.16687e+06 -25956.8 19271
+3.1533e+06 -20298.5 27784.7
+3.12382e+06 -12071.2 38119.8
+3.07467e+06 -840.08 50209.4
+3.0019e+06 14036.4 63998.5
+2.90114e+06 33629.8 79435.4
+2.76733e+06 59796.5 96327.4
+2.59445e+06 95546.6 114029
+2.37565e+06 144864 131028
+2.1047e+06 210699 144646
+1.78033e+06 289684 151212
+1.41422e+06 364723 147044
+1.03882e+06 403654 130351
+703044 377307 103456
+446063 293616 73405.6
+271866 198861 47800.3
+161718 124454 29785.7
+94472.2 74827.3 18324.6
+54315.1 43851.6 11257.6
+30768.1 25160.3 6895.93
+17188.6 14167 4188.09
+9477.86 7843.3 2510.13
+5158.95 4280.76 1481.99
+2766.52 2310.95 862.281
+1452.48 1237.82 495.279
+734.98 659.771 281.566
+344.313 351.104 158.947
+131.415 187.252 89.4611
+14.7057 100.572 50.4963
+-50.2382 54.8725 28.8727
+-87.6269 30.9771 17.0627
+-110.834 18.8455 10.8703
+-127.652 13.4105 8.05981
+-143.35 12.4174 7.59677
+-162.731 15.4522 9.28842
+-192.017 23.7768 13.7198
+-241.304 40.8754 22.4686
+-328.605 73.9848 38.6686
+-487.042 137.222 68.0951
+-777.9 257.531 121.084
+-1314.39 485.917 215.769
+-2304.41 918.081 383.384
+-4125.99 1731.02 676.625
+-7458 3247.08 1182.38
+-13502.4 6043.52 2040.91
+-24351.4 11129.7 3475.27
+-43577.7 20222.9 5840.02
+-77183.3 36191 9715.04
+-135116 63743.2 16098.2
+-233547 110341 26743.2
+-397737 186893 44543
+-662536 304541 73220
+-1.05942e+06 456714 114475
+-1.58172e+06 590654 162665
+-2.16387e+06 629030 204578
+-2.72542e+06 560955 228347
+-3.21509e+06 437572 230566
+-3.61665e+06 312653 215040
+-3.93482e+06 212736 188720
+-4.18154e+06 140996 158265
+-4.36884e+06 90771.1 128283
+-4.50669e+06 54594.8 101071
+-4.60295e+06 27259.3 77236.5
+-4.66394e+06 5781.49 56555.9
+-4.69508e+06 -11405.1 38671.3
+-4.70145e+06 -25115.2 23456.3
+-4.68807e+06 -35798.1 11073.3
+-4.6601e+06 -43736 1823.95
+-4.62265e+06 -49145.6 -4071.3
+-4.58061e+06 -52228.5 -6652.62
+-4.53823e+06 -53195.3 -6297.31
+-4.49896e+06 -52273.1 -3687.01
+-4.46519e+06 -49705.3 302.908
+-4.43827e+06 -45747.8 4745.99
+-4.41858e+06 -40663.6 8798.44
+-4.40572e+06 -34717.3 11797.4
+-4.39871e+06 -28170.6 13313.4
+-4.39621e+06 -21277.1 13158.1
+-4.39676e+06 -14277.8 11359.4
+-4.39891e+06 -7396.51 8113.63
+-4.40138e+06 -835.361 3730.59
+-4.4031e+06 5229.16 -1420.03
+-4.40326e+06 10649.6 -6953.82
+-4.40132e+06 15310.1 -12505.5
+-4.397e+06 19127.7 -17751.6
+-4.39022e+06 22052.7 -22423.7
+-4.38111e+06 24067.7 -26314.8
+-4.36994e+06 25185.5 -29281.4
+-4.35709e+06 25445.9 -31241.5
+-4.343e+06 24912.4 -32170.2
+-4.32817e+06 23667.1 -32093.1
+-4.31308e+06 21807 -31077.4
+-4.29818e+06 19438.1 -29222.5
+0 16671.7 -26649.6
+2.80589e+06 1888.91 -6647.65
+2.81284e+06 3430.9 -7719.11
+2.82052e+06 5025.63 -8740.21
+2.82883e+06 6615.9 -9669.05
+2.83766e+06 8135.01 -10461.4
+2.84685e+06 9508.53 -11073.4
+2.85624e+06 10656.6 -11464.4
+2.86563e+06 11496.6 -11600.4
+2.87482e+06 11946.9 -11457.8
+2.88361e+06 11930.2 -11026.4
+2.89183e+06 11377.6 -10313
+2.89935e+06 10233.2 -9344.37
+2.90606e+06 8458.04 -8168.13
+2.91197e+06 6034.49 -6852.96
+2.91715e+06 2969.9 -5485.15
+2.92174e+06 -699.844 -4161.75
+2.92599e+06 -4907.41 -2979.3
+2.9302e+06 -9551.56 -2018.35
+2.93468e+06 -14495.3 -1324.5
+2.93972e+06 -19564.3 -888.422
+2.94547e+06 -24546.4 -627.955
+2.9519e+06 -29191.4 -376.953
+2.95867e+06 -33211.6 114.402
+2.96505e+06 -36283.9 1163.67
+2.96989e+06 -38052.1 3122.87
+2.97159e+06 -38130.8 6330.77
+2.96816e+06 -36108 11059.4
+2.95724e+06 -31543.4 17470
+2.93626e+06 -23957.6 25595.2
+2.90251e+06 -12797.3 35358.2
+2.85312e+06 2645.27 46624.7
+2.78512e+06 23408.9 59253
+2.69517e+06 51212.2 73088.3
+2.57934e+06 89048.5 87838.6
+2.4327e+06 141913 102818
+2.24889e+06 216904 116647
+2.0202e+06 320707 127122
+1.73995e+06 451554 131483
+1.40974e+06 585651 127119
+1.05178e+06 669431 112602
+714838 643584 89148.8
+450738 507936 62202.6
+271396 345139 39393.6
+159094 215429 23904.1
+91542.6 128786 14460
+51892.1 74906.8 8825.85
+29039.1 42635.6 5412.58
+16057.6 23834 3304.72
+8779.7 13114.5 1993.8
+4746.78 7120.49 1184.85
+2532.34 3827.67 693.469
+1324.75 2043.22 400.328
+669.54 1085.75 228.546
+314.78 576.227 129.47
+122.357 306.624 73.0811
+17.3453 164.321 41.35
+-40.8262 89.4459 23.6925
+-74.1773 50.3859 14.0284
+-94.7879 30.579 8.95451
+-109.66 21.7037 6.65181
+-123.514 20.07 6.27664
+-140.646 24.9957 7.6721
+-166.641 38.5515 11.3165
+-210.586 66.4378 18.4977
+-288.783 120.544 31.7669
+-431.404 224.151 55.8096
+-694.496 421.674 98.9767
+-1182.19 797.518 175.836
+-2087.38 1510.97 311.299
+-3763.56 2857.5 547.063
+-6851.63 5378.21 951.165
+-12502.6 10051.6 1632.27
+-22753.3 18604.5 2762.1
+-41145.8 34003.9 4613.69
+-73767.4 61270.3 7643.25
+-130932 108716 12677
+-229618 189440 21258.8
+-396437 322374 36116
+-667781 526274 61065.4
+-1.07347e+06 786373 98117.3
+-1.59448e+06 1.00259e+06 141456
+-2.14581e+06 1.03781e+06 177831
+-2.64877e+06 895956 198199
+-3.06907e+06 678385 201047
+-3.40586e+06 473088 189484
+-3.67111e+06 316101 168572
+-3.87791e+06 206895 143414
+-4.03696e+06 132239 117845
+-4.15646e+06 79552.2 93982.7
+-4.24278e+06 40542.7 72547.2
+-4.30108e+06 10555.8 53520.4
+-4.33583e+06 -12878.6 36742
+-4.3512e+06 -31107.8 22237.6
+-4.35131e+06 -44938.8 10270.3
+-4.34037e+06 -54922.4 1204.31
+-4.32251e+06 -61489.9 -4696.42
+-4.3016e+06 -65019.6 -7430.49
+-4.28096e+06 -65869.5 -7326.44
+-4.26313e+06 -64390.1 -5008.76
+-4.24978e+06 -60928.8 -1291.87
+-4.24163e+06 -55829.4 2955.07
+-4.23859e+06 -49429.6 6934.73
+-4.23993e+06 -42058.3 10014.6
+-4.24447e+06 -34031.8 11776.9
+-4.25079e+06 -25651.1 12027.4
+-4.25746e+06 -17197.8 10772.5
+-4.26313e+06 -8930.23 8175.97
+-4.2667e+06 -1079.77 4508.63
+-4.26733e+06 6153.09 98.8237
+-4.26449e+06 12601.8 -4709
+-4.25795e+06 18136.2 -9585.51
+-4.24773e+06 22663.8 -14237.5
+-4.23411e+06 26130.2 -18420.2
+-4.21753e+06 28517.6 -21943.7
+-4.19857e+06 29842.8 -24674.2
+-4.1779e+06 30153.8 -26533.4
+-4.15622e+06 29525.4 -27494
+-4.13426e+06 28054.9 -27574.2
+-4.11267e+06 25855.9 -26829.5
+-4.09207e+06 23053.5 -25344.3
+0 19778.3 -23223.2
+2.4986e+06 1436.99 -5484.56
+2.50566e+06 2647.18 -6290.92
+2.51387e+06 3898.27 -7053.1
+2.52316e+06 5145.53 -7739.26
+2.5334e+06 6336.61 -8315.99
+2.54441e+06 7412.98 -8750.38
+2.55599e+06 8311.68 -9012.48
+2.56786e+06 8967.52 -9077.88
+2.57971e+06 9315.52 -8930.48
+2.59123e+06 9293.83 -8565.27
+2.60209e+06 8846.81 -7990.82
+2.61195e+06 7928.25 -7231.35
+2.62055e+06 6504.77 -6327.74
+2.62764e+06 4559.04 -5336.98
+2.63306e+06 2092.92 -4329.24
+2.63674e+06 -869.532 -3381.83
+2.63869e+06 -4279.4 -2569.55
+2.63902e+06 -8060.37 -1951.52
+2.6379e+06 -12106.5 -1555.19
+2.63551e+06 -16280.1 -1359.68
+2.63201e+06 -20409.9 -1281.2
+2.62748e+06 -24289 -1164.54
+2.62182e+06 -27673.5 -784.805
+2.61474e+06 -30280.6 137.012
+2.60567e+06 -31787.1 1903.24
+2.59381e+06 -31825.7 4796.13
+2.57812e+06 -29980.8 9029.89
+2.5574e+06 -25776.3 14711.1
+2.53033e+06 -18653.9 21822.7
+2.49557e+06 -7924.48 30240
+2.45173e+06 7332.31 39774.5
+2.39733e+06 28482.9 50214.1
+2.33065e+06 57779.8 61312.7
+2.24951e+06 99173.1 72681.2
+2.15068e+06 159507 83591.7
+2.02878e+06 249430 92817.4
+1.87426e+06 381647 98738.9
+1.67213e+06 561737 99819.4
+1.40674e+06 767578 95062.8
+1.08033e+06 926895 83823.9
+738819 933932 65761.5
+459290 753361 43589.2
+269663 513544 25288.8
+153600 318469 14070.4
+85876.1 188394 8072.71
+47415.6 108233 4861.92
+25950.4 60840.9 3027.83
+14086.1 33648 1902.47
+7583.08 18351.2 1183.07
+4049.73 9887.49 722.56
+2140.25 5282.29 432.878
+1111.77 2806.3 254.702
+560.157 1484.6 147.681
+264.514 784.791 84.7295
+105.336 416.416 48.3227
+19.1205 222.494 27.5781
+-28.255 120.711 15.9209
+-55.2593 67.8323 9.49172
+-71.8418 41.0512 6.09977
+-83.7221 29.0385 4.55923
+-94.7578 26.8115 4.31556
+-108.437 33.4248 5.26607
+-129.336 51.7127 7.72678
+-164.896 89.3699 12.5451
+-228.591 162.605 21.383
+-345.782 303.454 37.2539
+-563.68 572.642 65.451
+-970.795 1086.33 115.004
+-1734.41 2066.51 200.921
+-3164.88 3925.36 347.506
+-5833.16 7422.89 592.601
+-10794.3 13958 993.426
+-19970.2 26028.9 1636.58
+-36802.4 47981.4 2656.83
+-67462.7 87345.7 4295.2
+-122880 156799 7073.89
+-221564 276272 12160
+-393112 474385 21994.8
+-677999 778482 40678.5
+-1.10383e+06 1.15872e+06 71033.2
+-1.62718e+06 1.44516e+06 106953
+-2.12486e+06 1.42707e+06 134584
+-2.52509e+06 1.16647e+06 149725
+-2.82575e+06 838639 153578
+-3.05177e+06 559450 147836
+-3.22614e+06 360699 134733
+-3.3633e+06 229737 117268
+-3.47172e+06 144077 98314.8
+-3.55686e+06 85994 79786.6
+-3.62269e+06 44656.5 62537.3
+-3.67237e+06 14138.6 46771.5
+-3.70855e+06 -8750.42 32522.8
+-3.73367e+06 -25833.1 19944.8
+-3.75012e+06 -38261.4 9368.18
+-3.76039e+06 -46841.8 1191.16
+-3.76695e+06 -52189.3 -4290.04
+-3.7721e+06 -54803.9 -7020.11
+-3.7778e+06 -55112.7 -7242.3
+-3.78541e+06 -53494 -5468.5
+-3.79566e+06 -50290.5 -2386.5
+-3.80861e+06 -45817.5 1258.59
+-3.82372e+06 -40367.6 4775.61
+-3.84002e+06 -34213.4 7609.65
+-3.85628e+06 -27608.9 9386.92
+-3.87115e+06 -20789 9923.65
+-3.88338e+06 -13969.5 9207.37
+-3.89189e+06 -7345.34 7360.87
+-3.89588e+06 -1089.05 4599.26
+-3.89486e+06 4651.28 1188.24
+-3.88863e+06 9753.61 -2591.12
+-3.87733e+06 14123.3 -6468.82
+-3.86133e+06 17693.8 -10203.6
+-3.84122e+06 20426.8 -13593.4
+-3.81776e+06 22311.4 -16480.6
+-3.79181e+06 23362.5 -18753.5
+-3.76427e+06 23618.3 -20344.9
+-3.73608e+06 23137.6 -21229.7
+-3.70812e+06 21996 -21419.2
+-3.68119e+06 20281.8 -20955.2
+-3.65604e+06 18092.3 -19902.7
+0 15528.9 -18342.7
+1.9633e+06 643.877 -4056.01
+1.96943e+06 1244.9 -4611.66
+1.97681e+06 1865.33 -5138.02
+1.98538e+06 2482.94 -5613.75
+1.99505e+06 3071.61 -6016.3
+2.00565e+06 3602.02 -6323.28
+2.01698e+06 4042.6 -6514.13
+2.02876e+06 4360.5 -6571.9
+2.04068e+06 4522.86 -6485.21
+2.05239e+06 4498.11 -6250.15
+2.0635e+06 4257.48 -5872.09
+2.07362e+06 3776.58 -5367.17
+2.08239e+06 3036.96 -4763.09
+2.08944e+06 2027.82 -4098.69
+2.09448e+06 747.526 -3421.93
+2.09727e+06 -794.739 -2785.47
+2.09766e+06 -2577.47 -2239.61
+2.09559e+06 -4565.29 -1822.59
+2.09106e+06 -6707.41 -1549.02
+2.08414e+06 -8935.93 -1397.68
+2.07493e+06 -11164 -1301.32
+2.06357e+06 -13283.5 -1141.22
+2.05012e+06 -15162.3 -749.773
+2.03463e+06 -16640.2 76.1798
+2.01708e+06 -17523.6 1550.66
+1.99739e+06 -17577.6 3864.87
+1.9755e+06 -16512.7 7151.27
+1.9514e+06 -13965.9 11455.9
+1.92518e+06 -9466.32 16730.2
+1.89709e+06 -2376.52 22848
+1.86753e+06 8221.86 29639.9
+1.83697e+06 23761.5 36917.2
+1.80595e+06 46678.5 44444.1
+1.77485e+06 81393.1 51820.7
+1.74335e+06 136046 58310.5
+1.70859e+06 224799 62774
+1.66064e+06 368672 63996.2
+1.57539e+06 588515 61493.4
+1.41222e+06 878973 56037.4
+1.13682e+06 1.16074e+06 48345
+781657 1.26016e+06 36590.4
+471207 1.04792e+06 19600.5
+263539 714263 6728.59
+142593 436600 1183.4
+75888.9 253740 -153.006
+40092.6 143153 -145.576
+21178 79086.5 67.584
+11167.5 43144.4 187.253
+5863.37 23282.8 202.473
+3073.53 12423.1 168.264
+1602.75 6587.99 122.554
+822.763 3483.25 82.1727
+412.138 1832.81 52.2925
+195.699 964.19 32.1558
+79.8168 510.61 19.3201
+17.6952 271.978 11.494
+-15.9333 146.914 6.87341
+-35.0618 82.4641 4.22563
+-46.7428 49.8002 2.79637
+-55.0098 35.0851 2.14449
+-62.6684 32.3546 2.05353
+-72.1781 40.3632 2.48468
+-86.8919 62.6968 3.56181
+-112.048 108.559 5.615
+-157.282 197.846 9.25543
+-241.834 370.936 15.508
+-400.605 702.101 26.0342
+-699.203 1334.86 43.2377
+-1269.12 2552.02 70.1602
+-2356.27 4873.03 110.014
+-4415.95 9258.8 163.56
+-8343.15 17540 223.573
+-15843.6 33020.9 268.219
+-30068.2 61496.6 250.769
+-57113.4 113441 118.235
+-108678 207027 -35.1538
+-205612 370908 405.545
+-383354 647062 3468.62
+-692643 1.07532e+06 13924.1
+-1.16049e+06 1.59884e+06 36402.9
+-1.69845e+06 1.93402e+06 64310.6
+-2.11305e+06 1.77318e+06 81445.3
+-2.35617e+06 1.32675e+06 90646.9
+-2.48203e+06 873738 95862.9
+-2.55195e+06 537720 96424.4
+-2.60078e+06 323105 91435.7
+-2.64229e+06 194015 82021.9
+-2.68059e+06 116137 70347
+-2.71672e+06 67160.7 58209.5
+-2.75097e+06 34730.8 46548.8
+-2.78336e+06 12395.9 35667.4
+-2.81381e+06 -3271.94 25640.5
+-2.84225e+06 -14229.8 16598.1
+-2.86879e+06 -21702.1 8807.51
+-2.89377e+06 -26516.7 2605.4
+-2.91774e+06 -29266.3 -1732.12
+-2.94136e+06 -30392.4 -4103.62
+-2.96519e+06 -30235 -4635.73
+-2.98957e+06 -29064.1 -3667.44
+-3.01449e+06 -27100.3 -1682.94
+-3.03959e+06 -24529.1 778.259
+-3.06421e+06 -21510.4 3207.45
+-3.08743e+06 -18185.2 5191.52
+-3.10825e+06 -14679.9 6448.95
+-3.12567e+06 -11108 6838.14
+-3.13881e+06 -7572.2 6344.16
+-3.147e+06 -4163.77 5051.99
+-3.1498e+06 -962.84 3114.44
+-3.14706e+06 1962.29 720.963
+-3.13889e+06 4555.71 -1928.48
+-3.12564e+06 6774.39 -4642.79
+-3.10786e+06 8588.44 -7252.4
+-3.08627e+06 9981.08 -9616.51
+-3.0617e+06 10948.4 -11626.3
+-3.03503e+06 11498.5 -13205.8
+-3.00719e+06 11650.7 -14310.4
+-2.97908e+06 11434.2 -14924.7
+-2.95155e+06 10886.3 -15058.5
+-2.92536e+06 10050.4 -14742.1
+-2.90117e+06 8974.45 -14021.6
+0 7708.27 -12953.2
+1.24852e+06 24.5069 -2567.94
+1.25266e+06 145.12 -2928.44
+1.25771e+06 268.395 -3280.19
+1.26367e+06 389.7 -3611.03
+1.27046e+06 503.502 -3907.49
+1.278e+06 603.557 -4155.44
+1.28614e+06 683.127 -4340.97
+1.29469e+06 735.196 -4451.43
+1.30344e+06 752.707 -4476.47
+1.31214e+06 728.83 -4409.3
+1.32048e+06 657.246 -4247.85
+1.32818e+06 532.452 -3995.89
+1.33493e+06 350.085 -3663.83
+1.34042e+06 107.242 -3268.88
+1.34438e+06 -197.199 -2834.22
+1.34656e+06 -562.273 -2386.86
+1.34677e+06 -984.623 -1953.82
+1.34486e+06 -1458.19 -1556.66
+1.34076e+06 -1973.83 -1204.92
+1.33444e+06 -2518.82 -889.197
+1.32591e+06 -3076.06 -575.629
+1.31526e+06 -3622.85 -203.355
+1.30258e+06 -4128.99 312.841
+1.28803e+06 -4553.82 1073.43
+1.27181e+06 -4841.85 2178.53
+1.25422e+06 -4916.27 3708.15
+1.23571e+06 -4669.46 5703.35
+1.21695e+06 -3948.43 8155.85
+1.19891e+06 -2531.14 11012.9
+1.18293e+06 -83.598 14199.2
+1.1708e+06 3926.12 17646.4
+1.1649e+06 10416.7 21303.6
+1.16835e+06 21127.6 25091.3
+1.18526e+06 39611.1 28767.6
+1.22071e+06 73375.4 31734.3
+1.2789e+06 137921 32960.2
+1.35643e+06 262334 31371.8
+1.42648e+06 490754 26952
+1.41866e+06 860449 21724.4
+1.2308e+06 1.32349e+06 17955.3
+843769 1.6265e+06 12453.7
+475620 1.40748e+06 -1693.94
+241832 949113 -10865
+119478 563093 -11180.7
+58515.2 318370 -7927.26
+28723.5 175386 -4806.99
+14426.5 94792.8 -2659.94
+7318.38 50989.6 -1383.43
+3694.28 27270.2 -694.311
+1895.41 14393.8 -339.103
+979.06 7581.77 -161.917
+491.828 4003.91 -76.391
+244.387 2094.15 -35.5583
+118.385 1095.55 -16.3078
+48.9723 581.822 -7.45012
+12.3653 309.04 -3.36751
+-6.48021 165.728 -1.48452
+-17.6142 93.4023 -0.637985
+-24.4392 56.3926 -0.251759
+-29.0736 39.4729 -0.0793053
+-33.3962 36.4089 -0.0288847
+-38.704 45.3787 -0.0810125
+-47.3167 70.9927 -0.290505
+-61.876 122.829 -0.801761
+-87.2715 223.183 -1.97938
+-137.273 421.601 -4.64252
+-232.106 799.596 -10.4501
+-406.048 1516.69 -23.1116
+-750.851 2917.13 -50.6294
+-1429.94 5600.62 -108.881
+-2713.01 10653.4 -230.854
+-5251.81 20324.6 -483.045
+-10382.5 38667.6 -986.147
+-20481.9 72633.7 -1956.92
+-40941.7 135857 -3735.83
+-83851.3 253236 -6652.63
+-172187 463928 -10679.8
+-350987 830304 -14203.3
+-696038 1.41834e+06 -11070.9
+-1.24387e+06 2.12734e+06 6550.37
+-1.82193e+06 2.47242e+06 30131.3
+-2.10045e+06 2.00595e+06 36295.6
+-2.11118e+06 1.29205e+06 38534.5
+-2.00872e+06 726389 43481.4
+-1.89665e+06 381605 47706.5
+-1.81247e+06 197262 47927.7
+-1.75974e+06 103610 44274.8
+-1.73206e+06 55520.5 38582.1
+-1.72255e+06 29473.2 32483.2
+-1.72594e+06 14379.7 26769.9
+-1.73839e+06 5146.17 21585.8
+-1.75693e+06 -655.985 16824.8
+-1.77928e+06 -4288.92 12415.7
+-1.80374e+06 -6481.04 8428.23
+-1.82915e+06 -7692.3 5043.12
+-1.85477e+06 -8230.55 2459.79
+-1.8802e+06 -8307.46 804.002
+-1.90519e+06 -8069.28 73.8882
+-1.92956e+06 -7616.36 134.439
+-1.95305e+06 -7017.09 750.743
+-1.9753e+06 -6318.38 1640.88
+-1.99583e+06 -5553.61 2529.87
+-2.0141e+06 -4748.22 3191.69
+-2.02955e+06 -3923.34 3473.65
+-2.04169e+06 -3097.89 3302.91
+-2.05008e+06 -2289.45 2679.15
+-2.05447e+06 -1514.41 1658.41
+-2.05476e+06 -787.734 333.484
+-2.05099e+06 -122.549 -1184.89
+-2.04339e+06 470.184 -2783.52
+-2.03232e+06 981.949 -4357.75
+-2.01825e+06 1406.79 -5818.08
+-2.00174e+06 1741.35 -7093.46
+-1.98341e+06 1984.78 -8132.16
+-1.96388e+06 2138.66 -8901.27
+-1.9438e+06 2206.8 -9385.31
+-1.92378e+06 2195.03 -9584.24
+-1.90437e+06 2110.82 -9510.97
+-1.88608e+06 1962.97 -9188.49
+-1.86934e+06 1761.09 -8646.81
+0 1515.03 -7920.16
+557910 -179.863 -1278.24
+559796 -215.341 -1491.63
+562087 -253.271 -1712.29
+564784 -292.667 -1934.85
+567875 -332.402 -2152.54
+571330 -371.21 -2357.37
+575100 -407.704 -2540.41
+579119 -440.409 -2692.06
+583301 -467.809 -2802.64
+587540 -488.388 -2862.88
+591716 -500.671 -2864.69
+595693 -503.262 -2801.97
+599327 -494.887 -2671.31
+602468 -474.435 -2472.7
+604968 -441.039 -2209.74
+606687 -394.191 -1889.37
+607498 -333.923 -1520.89
+607291 -261.03 -1114.19
+605979 -177.332 -677.484
+603498 -85.8833 -214.958
+599810 8.94202 275.037
+594903 101.616 800.308
+588800 185.99 1372.9
+581564 256.244 2004.56
+573323 308.214 2699.96
+564295 340.836 3449.63
+554832 357.276 4225.82
+545475 365.194 4985.43
+537024 375.911 5683.53
+530628 403.681 6296.85
+527943 471.181 6848.93
+531433 643.597 7418.4
+544977 1167.02 8102.39
+575030 2951.86 8910.91
+632384 9093.04 9610.44
+733511 29122.1 9660.03
+896701 89091.9 8594.3
+1.12072e+06 249457 7230.22
+1.33016e+06 616716 8964.35
+1.3159e+06 1.27626e+06 17157.6
+876246 1.98592e+06 23634.6
+424062 1.80222e+06 5534.68
+175754 1.17161e+06 -10341
+73832 656736 -12862
+31384.8 358834 -9477.05
+13417.8 193272 -5962.43
+6515.65 102024 -3468.7
+3242.39 54528.6 -1907.1
+1488.63 29186.6 -1024.71
+774.302 15205.2 -544.123
+424.666 7982.98 -284.322
+193.27 4260.81 -148.071
+95.1043 2206.08 -77.2974
+53.9666 1143.77 -40.043
+20.6925 618.331 -20.811
+4.73082 326.725 -11.0246
+-0.57886 171.978 -5.89179
+-5.73408 98.96 -3.21673
+-8.97356 59.8293 -1.89352
+-10.5685 41.1749 -1.28538
+-12.3161 38.2181 -1.15197
+-14.052 47.2429 -1.47954
+-18.2495 75.43 -2.37343
+-24.7372 129.841 -4.21878
+-32.0293 231.732 -7.92605
+-54.4075 446.313 -15.0385
+-98.6419 848.31 -28.6541
+-154.912 1582.81 -55.5666
+-294.969 3076.29 -107.827
+-613.957 5955.08 -207.269
+-1095.12 11206.1 -399.294
+-2113.01 21474.9 -765.52
+-4590.25 41359.8 -1440.75
+-9188.67 77563.7 -2676.58
+-19069.2 146063 -4841.71
+-44955.2 278568 -8199.25
+-106176 521085 -12665.2
+-254420 963466 -16046.3
+-618221 1.73728e+06 -8734.2
+-1.28273e+06 2.6941e+06 20405.3
+-1.92934e+06 2.98357e+06 50316.2
+-1.94903e+06 1.92136e+06 36186
+-1.64157e+06 926097 18887.6
+-1.31561e+06 371275 13203.4
+-1.08025e+06 130330 13438.6
+-935253 41453.9 13713
+-852814 12485.4 12617.3
+-808855 3928.43 10941.5
+-788114 1551.58 9556.51
+-781758 866.302 8752.88
+-784576 623.231 8371.72
+-793245 521.79 8105.02
+-805468 498.638 7708.74
+-819598 531.326 7086.31
+-834469 594.92 6276.21
+-849296 660.259 5391.79
+-863584 700.904 4554.66
+-877037 698.961 3847.34
+-889471 647.341 3293.99
+-900755 548.749 2865.71
+-910765 412.704 2500.48
+-919366 252.021 2127
+-926418 79.76 1684.86
+-931792 -92.8175 1137.09
+-935382 -257.21 474.251
+-937128 -407.758 -288.079
+-937028 -541.164 -1116.13
+-935139 -655.786 -1966.33
+-931577 -750.962 -2793.13
+-926510 -826.5 -3555.08
+-920151 -882.41 -4218.52
+-912739 -918.825 -4759.21
+-904534 -936.047 -5162.39
+-895802 -934.644 -5421.86
+-886806 -915.529 -5538.74
+-877796 -880.006 -5520.1
+-869003 -829.768 -5377.53
+-860632 -766.874 -5125.85
+-852859 -693.709 -4781.69
+-845830 -612.945 -4362.36
+0 -527.494 -3884.72
+39418.5 -10.9801 -227.86
+39480.9 -13.0197 -272.672
+39554.4 -15.1953 -320.59
+39639.8 -17.4495 -370.584
+39737.3 -19.7171 -421.321
+39846.9 -21.9254 -471.183
+39968.1 -23.9952 -518.281
+40099.6 -25.8427 -560.508
+40239.4 -27.3821 -595.587
+40384.5 -28.5284 -621.161
+40531.2 -29.2003 -634.882
+40674.9 -29.3225 -634.535
+40810.3 -28.8285 -618.157
+40931.6 -27.6629 -584.179
+41032.9 -25.7864 -531.554
+41108.3 -23.1816 -459.875
+41152.3 -19.863 -369.476
+41159.7 -15.8891 -261.496
+41125.6 -11.3759 -137.926
+41045.2 -6.50725 -1.62397
+40913.4 -1.53841 143.669
+40724.5 3.21612 293.323
+40472.7 7.41548 441.809
+40153.1 10.7501 582.697
+39764.1 13.0203 708.723
+39310.3 14.2223 812.004
+38807 14.6162 884.504
+38282.7 14.756 918.858
+37781.7 15.5238 909.486
+37362.7 18.5362 853.691
+37101.3 28.7554 751.795
+37113.1 67.4209 604.329
+37658.2 228.732 402.134
+39493.5 907.428 101.22
+44868.4 3636.7 -431.43
+59855.6 13884.2 -1514.59
+98251.1 49302.1 -3768.79
+182681 160083 -8088.89
+322658 464078 -15053.6
+429868 1.14554e+06 -23495.1
+249375 2.13846e+06 -30347
+75960 1.95921e+06 -36770.2
+14239.2 1.22898e+06 -33295.1
+4090.53 667485 -23310.9
+1066.43 363269 -14159
+-104.226 195615 -8125.5
+190.108 102514 -4513.49
+151.886 55028.3 -2452.58
+-27.4672 29625 -1320.53
+13.4851 15307.6 -702.638
+32.1716 8041.02 -370.579
+-3.12932 4336.92 -196.032
+-1.80468 2226.79 -103.305
+5.98987 1147.64 -54.1125
+0.0165425 630.44 -28.6999
+-1.26893 331.353 -15.3649
+0.713861 171.825 -8.26003
+-0.0991995 100.777 -4.62614
+-0.592064 60.9166 -2.79181
+-0.369212 41.3466 -1.92771
+-0.456486 38.6492 -1.75062
+-0.111843 47.3538 -2.21956
+-0.849435 76.9076 -3.5067
+-1.68438 131.98 -6.06824
+0.868411 231.62 -11.1137
+-1.46612 453.158 -20.9335
+-8.55599 863.721 -39.3576
+2.66477 1587.51 -74.7557
+1.17932 3107.96 -143.552
+-45.6156 6057.91 -273.344
+-12.8753 11278.8 -518.688
+32.5304 21626 -986.729
+-226.306 41971 -1857.22
+-249.331 78206.6 -3453.44
+129.528 146709 -6357.38
+-1705.64 281819 -11412.3
+-6217.29 526931 -19775.6
+-21775.4 978145 -32217.7
+-115408 1.82051e+06 -44839.9
+-376524 2.92362e+06 -46919.9
+-646787 3.20347e+06 -36150
+-484113 1.71772e+06 -29164.6
+-273113 693430 -19698.5
+-147089 236937 -11009.7
+-90743.9 71742.8 -5301.6
+-69246 19685.1 -2249.04
+-61668.5 4972.79 -777.082
+-59027.3 1186.49 -48.4154
+-58142.6 286.981 386.428
+-58025.3 83.4964 714.866
+-58365.4 35.6663 993.037
+-59016.5 22.5972 1224.58
+-59858.4 19.5532 1398.95
+-60779.5 21.1713 1507.38
+-61688 25.1802 1547.57
+-62521.4 29.6492 1523.43
+-63248.3 32.9164 1442.87
+-63861.6 33.8442 1315.47
+-64369.5 31.9376 1150.83
+-64786.3 27.2849 957.791
+-65125.3 20.3855 744.306
+-65395.3 11.9458 517.622
+-65600.3 2.70149 284.569
+-65740.4 -6.70309 51.7296
+-65814.3 -15.7726 -174.549
+-65821.4 -24.1676 -388.289
+-65763.2 -31.6801 -584.103
+-65643.9 -38.1947 -757.422
+-65470.6 -43.652 -904.692
+-65252.6 -48.0218 -1023.48
+-65000.2 -51.2882 -1112.52
+-64724.1 -53.4463 -1171.61
+-64434.6 -54.5044 -1201.54
+-64141 -54.4897 -1203.93
+-63851.3 -53.4518 -1181.08
+-63571.9 -51.4647 -1135.81
+-63307.8 -48.6257 -1071.29
+-63062.7 -45.0537 -990.919
+-62839.3 -40.8864 -898.172
+-62639.1 -36.2781 -796.48
+0 -31.3968 -689.128
+2234.1 -0.668185 -14.8713
+2238.22 -0.785467 -17.6439
+2243.04 -0.910283 -20.5973
+2248.59 -1.03928 -23.6672
+2254.9 -1.1687 -26.771
+2261.95 -1.29436 -29.8088
+2269.7 -1.41175 -32.665
+2278.08 -1.5161 -35.2105
+2286.95 -1.60259 -37.3072
+2296.14 -1.66647 -38.8121
+2305.4 -1.70329 -39.584
+2314.46 -1.70903 -39.4899
+2322.98 -1.68025 -38.413
+2330.6 -1.61428 -36.2613
+2336.94 -1.50944 -32.9746
+2341.62 -1.36542 -28.5326
+2344.27 -1.1838 -22.96
+2344.54 -0.96867 -16.331
+2342.07 -0.727369 -8.77128
+2336.52 -0.471024 -0.459384
+2327.53 -0.214608 8.37323
+2314.72 0.0238631 17.4419
+2297.72 0.225387 26.4087
+2276.21 0.37347 34.8829
+2250.11 0.458844 42.4258
+2219.76 0.484588 48.5644
+2186.15 0.470574 52.8212
+2151.14 0.458193 54.7631
+2117.63 0.531058 54.0631
+2089.99 0.947721 50.5335
+2076.25 2.88995 43.9976
+2099.42 12.2881 33.594
+2246.76 58.0444 15.3637
+2862.34 273.588 -24.761
+5222.97 1240.01 -127.86
+13619.1 5339.74 -390.402
+40624.9 21727.2 -963.713
+115939 83004.5 -1816.24
+282131 293759 -1708.59
+491098 930901 3691.72
+264676 2.36684e+06 17593.2
+59489.8 2.1749e+06 6565.08
+3104.86 1.29758e+06 -5381.81
+1682.45 677814 -7059.8
+232.819 370103 -4683.32
+-738.411 199693 -2825.37
+115.063 103396 -1672.38
+143.685 55944.2 -909.101
+-110.122 30389.9 -487.537
+-4.10113 15473 -269.693
+39.661 8140.15 -142.298
+-14.8014 4467.74 -73.6869
+-7.03257 2259.42 -40.4574
+8.43892 1153.25 -21.5419
+-1.07316 651.242 -10.955
+-2.40406 338.783 -6.07014
+1.4411 171.251 -3.40135
+0.163002 103.907 -1.80066
+-0.513258 62.703 -1.08709
+-0.00234997 41.5713 -0.747746
+-0.094968 39.3953 -0.639134
+0.650575 47.4537 -0.867723
+-0.417944 79.362 -1.35244
+-1.6985 135.665 -2.35676
+3.28612 231.023 -4.56912
+0.420509 464.322 -8.2399
+-10.7693 890.315 -15.0218
+11.4143 1594.32 -29.6975
+16.3191 3159.08 -55.9415
+-55.802 6236.15 -102.522
+16.6967 11405.6 -198.73
+144.572 21878.1 -376.276
+-223.748 43054.8 -679.741
+-124.518 79429.5 -1267.84
+1047.2 147964 -2319.01
+-524.383 287707 -3854.3
+-2555.42 536355 -6244.82
+-4987.43 992574 -8947.49
+-90412.6 1.92147e+06 -4573.9
+-397339 3.24132e+06 16085.4
+-733499 3.53674e+06 33589.1
+-418933 1.39139e+06 9450.09
+-170275 437312 -1044.51
+-58723.4 122374 -2234.6
+-19401.6 31499.8 -1301.47
+-7483.01 7548.37 -546.989
+-4241.72 1692.27 -187.043
+-3424.92 356.56 -44.5445
+-3231.96 71.5793 11.8118
+-3200.34 14.3245 39.6077
+-3220.06 3.20286 58.2445
+-3263.22 0.97784 72.6524
+-3318.8 0.550525 83.3987
+-3379.29 0.616162 90.199
+-3438.97 0.874777 92.9283
+-3493.94 1.18255 91.787
+-3542.2 1.4329 87.2146
+-3583.2 1.55354 79.7601
+-3617.33 1.51082 69.985
+-3645.38 1.30606 58.414
+-3668.13 0.965501 45.5252
+-3686.14 0.528393 31.7607
+-3699.68 0.0365045 17.5411
+-3708.85 -0.473007 3.27486
+-3713.66 -0.971104 -10.6425
+-3714.15 -1.43742 -23.8373
+-3710.47 -1.85892 -35.9714
+-3702.95 -2.22784 -46.757
+-3692.04 -2.53963 -55.9683
+-3678.33 -2.79148 -63.4482
+-3662.45 -2.98159 -69.1104
+-3645.06 -3.10894 -72.9354
+-3626.78 -3.17349 -74.9643
+-3608.18 -3.17641 -75.29
+-3589.75 -3.12036 -74.0475
+-3571.89 -3.00946 -71.4049
+-3554.93 -2.84928 -67.5538
+-3539.11 -2.64662 -62.7004
+-3524.61 -2.40941 -57.057
+-3511.56 -2.14655 -50.8346
+0 -1.86776 -44.2363
+129.422 -0.0349962 -0.97585
+129.691 -0.0408515 -1.14908
+130.003 -0.0470708 -1.33293
+130.361 -0.0534846 -1.52333
+130.766 -0.0599038 -1.71512
+131.216 -0.0661207 -1.90206
+131.708 -0.0719114 -2.07698
+132.238 -0.0770411 -2.23193
+132.798 -0.0812731 -2.3584
+133.375 -0.084378 -2.44764
+133.955 -0.0861431 -2.49105
+134.521 -0.086381 -2.48055
+135.052 -0.084938 -2.40913
+135.524 -0.0817025 -2.27131
+135.914 -0.0766172 -2.06363
+136.197 -0.0696962 -1.7851
+136.348 -0.0610496 -1.43751
+136.343 -0.0509144 -1.02572
+136.159 -0.0396873 -0.557788
+135.77 -0.0279483 -0.0449846
+135.152 -0.0164598 0.498172
+134.28 -0.00612077 1.05394
+133.127 0.00214378 1.60137
+131.676 0.00756516 2.11639
+129.92 0.00977545 2.57212
+127.883 0.00907693 2.93984
+125.628 0.00672059 3.19077
+123.28 0.00550972 3.29888
+121.05 0.0131858 3.24331
+119.382 0.0632933 3.00373
+119.72 0.334675 2.52414
+128.46 1.79641 1.56223
+175.724 9.53313 -0.816045
+398.689 49.2576 -7.57887
+1386.1 246.83 -25.6498
+5493.49 1202.33 -58.9121
+21375.5 5722.71 -28.2657
+77241.4 26789.9 683.396
+246465 124284 5125.42
+605462 576588 24171.5
+297264 2.70819e+06 77526.7
+45704.7 2.46593e+06 60460.9
+-5205.2 1.37797e+06 25757.4
+2133.59 687891 9492.16
+438.632 381390 4888.12
+-1137.08 206514 2466.07
+264.596 104806 1070.01
+245.436 57473.4 594.003
+-183.623 31632.6 334.101
+-0.798732 15715.4 144.852
+66.2557 8296.11 76.5888
+-25.8315 4680.2 47.1719
+-11.1117 2307.72 19.7734
+14.2164 1160.52 9.11133
+-2.06966 685.294 6.60519
+-3.9433 350.203 2.9346
+2.49228 169.86 1.08207
+0.245141 109.073 0.977096
+-0.820368 65.5192 0.590685
+0.0580732 41.8328 0.379146
+-0.154933 40.6268 0.457292
+1.1284 47.4756 0.416782
+-0.58792 83.264 0.78204
+-2.88154 141.741 1.28068
+5.49138 229.426 1.48444
+1.16454 481.678 4.10964
+-18.1406 933.872 8.98503
+18.2761 1602.85 12.6931
+28.9533 3236.16 28.3106
+-93.4022 6526.4 66.0462
+19.1641 11605.3 107.573
+241.541 22254.9 209.351
+-381.281 44826.2 482.48
+-309.704 81495.1 858.842
+1627.63 150028 1583.62
+-889.095 297709 3708.24
+-3098.54 552289 7442.13
+7490.43 1.00702e+06 14807.6
+-70291.5 2.04153e+06 40569
+-445886 3.67275e+06 94873.7
+-902170 4.0389e+06 121256
+-365019 859675 38281.3
+-113072 184492 8277.71
+-30719.7 39378.3 1167.32
+-7697.48 8273.55 -10.0621
+-1890.69 1696.01 -80.1865
+-542.068 336.531 -36.1929
+-250.625 64.2242 -11.026
+-191.856 11.7563 -1.59993
+-181.624 2.07501 1.79998
+-181.691 0.356051 3.35591
+-184.428 0.0548647 4.33226
+-188.117 0.00379392 5.01843
+-192.128 0.0034066 5.45452
+-196.079 0.0174223 5.64252
+-199.727 0.0351854 5.5942
+-202.942 0.0506021 5.33436
+-205.686 0.059722 4.89484
+-207.978 0.0606352 4.30886
+-209.866 0.0532459 3.60795
+-211.396 0.0387635 2.82128
+-212.603 0.0190947 1.97612
+-213.508 -0.00369092 1.09871
+-214.122 -0.0277281 0.214677
+-214.45 -0.0515399 -0.651034
+-214.497 -0.0740704 -1.4748
+-214.279 -0.0946237 -2.23517
+-213.816 -0.112763 -2.91381
+-213.14 -0.128213 -3.49624
+-212.286 -0.140789 -3.97223
+-211.295 -0.150362 -4.33592
+-210.205 -0.156849 -4.58567
+-209.057 -0.160225 -4.72355
+-207.884 -0.160533 -4.75495
+-206.717 -0.157892 -4.68789
+-205.582 -0.152504 -4.53252
+-204.499 -0.144643 -4.3005
+-203.484 -0.134648 -4.00451
+-202.55 -0.122913 -3.65766
+-201.705 -0.109885 -3.27305
+0 -0.0960509 -2.86335
+6.82996 0 -0.057086
+6.84546 0 -0.066812
+6.86341 0 -0.0771003
+6.88387 0 -0.0877206
+6.90687 0 -0.0983822
+6.93237 0 -0.108736
+6.96017 0 -0.118383
+6.98998 0 -0.126879
+7.02134 0 -0.133755
+7.0536 0 -0.138527
+7.08595 0 -0.140722
+7.11739 0 -0.1399
+7.14676 0 -0.135679
+7.17277 0 -0.127766
+7.19403 0 -0.115981
+7.20912 0 -0.10028
+7.2166 0 -0.0807786
+7.21503 0 -0.057761
+7.20297 0 -0.0316888
+7.17897 0 -0.00320304
+7.1415 0 0.0268767
+7.08903 0 0.0575539
+7.02006 0 0.0876581
+6.9335 0 0.115852
+6.8291 0 0.140651
+6.70816 0 0.160483
+6.57446 0 0.173781
+6.43562 0 0.179118
+6.30767 0 0.175196
+6.24072 0 0.159914
+6.46445 0 0.125651
+8.1795 0 0.0416214
+17.6683 0 -0.194978
+66.8596 0 -0.799148
+313.082 0 -1.34561
+1511.74 0 7.09029
+7221.88 0 97.374
+34030.2 0 740.839
+159105 0 4655.62
+744653 0 26598.8
+360411 3.16034e+06 154155
+40999.8 2.85276e+06 132854
+-14379.4 1.47837e+06 63256.7
+3438.58 695386 27007.7
+1423.74 397065 15149.9
+-1842.57 217092 8190.7
+334.801 106500 3877.56
+478.648 59417.7 2157.1
+-283.585 33515.5 1220.81
+-29.8659 16041.2 570.127
+117.436 8454.92 299.489
+-33.6328 4997.28 178.761
+-23.3929 2383.43 82.5066
+23.7753 1158.16 39.234
+-0.631403 734.427 25.6689
+-7.03288 369.653 12.6122
+3.91427 165.83 5.35337
+1.17859 115.992 3.85111
+-1.27732 70.4544 2.36198
+-0.155887 42.1676 1.61159
+-0.190452 41.8791 1.7841
+1.47997 47.4488 1.82531
+-2.14711 89.9604 3.08071
+-4.65605 149.662 5.00523
+9.28718 224.811 7.23872
+-1.94154 510.793 17.4253
+-29.8984 995.551 34.8743
+35.9376 1598.71 54.368
+34.3629 3357.83 116.558
+-162.508 6955.15 249.036
+69.9849 11801.8 418.648
+364.736 22778.9 812.436
+-722.856 47500.6 1737.49
+-355.859 84092.7 3066.93
+2620.13 152591 5591.1
+-2420.71 313269 11927.9
+-4772.2 574409 22167.5
+21249.9 1.01797e+06 40124.8
+-64029.7 2.19284e+06 95584.6
+-540169 4.24747e+06 201815
+-1.10783e+06 4.70554e+06 234298
+-235298 0 40563.5
+-49746.7 0 7098.39
+-10365.1 0 1124.59
+-2113.78 0 146.442
+-423.344 0 10.4998
+-87.5506 0 -1.97123
+-23.3302 0 -1.1561
+-11.5897 0 -0.292379
+-9.60394 0 0.0418201
+-9.39313 0 0.168229
+-9.52517 0 0.231608
+-9.73948 0 0.271901
+-9.97524 0 0.297182
+-10.2075 0 0.308696
+-10.4222 0 0.307185
+-10.6119 0 0.293927
+-10.7742 0 0.270586
+-10.9103 0 0.238932
+-11.0225 0 0.200676
+-11.1134 0 0.157422
+-11.1851 0 0.110688
+-11.2389 0 0.0619484
+-11.2756 0 0.012651
+-11.2957 0 -0.035791
+-11.2996 0 -0.0820353
+-11.2883 0 -0.124861
+-11.2632 0 -0.163222
+-11.226 0 -0.196283
+-11.1788 0 -0.223451
+-11.1237 0 -0.244376
+-11.0629 0 -0.258942
+-10.9987 0 -0.267243
+-10.9328 0 -0.269559
+-10.8671 0 -0.266322
+-10.8029 0 -0.258083
+-10.7414 0 -0.245484
+-10.6836 0 -0.229225
+-10.6302 0 -0.210035
+-10.5817 0 -0.188645
+0 0 -0.165767
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.03698e+06 1.74382e+06 379549
+538162 2.82645e+06 525130
+-5482.02 1.71363e+06 308386
+-26488.6 587164 129227
+25193.8 278262 67120.4
+654.203 202507 39124.7
+-6034.24 94357.8 18830.7
+3281.17 40358.3 9744.03
+1285.7 29675.2 5835.79
+-1247.56 15698.7 2875.84
+316.747 5503.65 1386.97
+467.815 3983.38 862.894
+-190.717 2596.09 445.942
+3.419 776.05 187.974
+133.508 484.844 119.494
+-10.6414 440.888 73.0356
+-9.58218 135.616 29.1578
+35.5304 57.969 13.0661
+7.01955 89.6971 9.23911
+-10.7701 47.7831 12.1739
+-0.140039 15.6683 15.7454
+-24.5169 56.9265 15.0401
+-56.7937 108.951 13.2859
+1.88013 74.5137 16.4753
+-9.04889 198.178 37.5952
+-186.65 590.226 98.1682
+9.92778 637.344 161.628
+207.951 1138.62 262.473
+-691.402 3634.32 622.86
+-333.905 5405.88 1191.78
+1659.33 7871.04 1937.48
+-2104.93 22471 4072.13
+-4287.85 41467.2 8216.29
+8796.64 57250.1 13758.1
+-2347.28 136722 27012.6
+-36268.8 290740 56450.4
+40683.9 400176 97280.4
+2920.43 864900 190831
+-803205 2.53676e+06 462205
+-1.53644e+06 4.19001e+06 790698
+0 2.59665e+06 572446
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+757681 0 200224
+1.02943e+06 0 397541
+369003 0 288334
+-62377.1 0 111104
+-19642.7 0 41595.9
+32302.5 0 27247.2
+-728.365 0 14317
+-6176.44 0 5919.6
+4958.45 0 3814.97
+1735.24 0 2226.42
+-1300.96 0 841.1
+669.467 0 510.984
+718.956 0 363.725
+-124.051 0 119.293
+118.226 0 61.428
+231.448 0 74.5582
+24.5219 0 29.5357
+28.5622 0 -12.524
+70.8296 0 -6.62109
+12.0593 0 24.7591
+-73.5427 0 41.2898
+-152.825 0 36.0515
+-103.164 0 0.442942
+-112.084 0 -16.0566
+-363.681 0 32.8544
+-177.702 0 94.121
+64.4356 0 85.1569
+-1101.53 0 181.432
+-852.353 0 512.975
+1650.59 0 706.105
+-2892.77 0 1196.97
+-6656.49 0 3148.17
+9002.65 0 5318.34
+-733.242 0 8449.59
+-46672.5 0 20792.4
+30873.4 0 39342
+86128 0 60824.9
+-551643 0 167299
+-1.51937e+06 0 436726
+-1.12055e+06 0 602683
+0 0 304089
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.60026e+06 -5.54028e+06 302910
+3.70177e+06 -9.32247e+06 739830
+1.40922e+06 -5.82854e+06 648753
+-205713 -2.0318e+06 276728
+-84264.1 -943950 78994
+116673 -692526 47086.9
+485.737 -329810 31762
+-23566.2 -140371 12601
+17449.1 -102428 6501.12
+6750.99 -55241.5 4786.07
+-4799.7 -19601.4 2020.54
+2357.45 -13899.2 816.024
+2733.91 -9160.17 703.416
+-496.786 -2799.56 338.127
+336.007 -1699.82 93.4175
+869.198 -1552.11 82.4287
+135.425 -485.819 47.8284
+42.7864 -198.322 16.3116
+117.415 -313.328 37.5709
+-34.5908 -173.855 52.7363
+-201.921 -61.1823 51.1365
+-385.536 -204.117 63.9755
+-259.805 -378.414 46.8829
+-424.892 -254.475 19.7133
+-1347.84 -702.115 60.7933
+-545.007 -2070.32 106.083
+290.824 -2237.68 134.121
+-4097.27 -4071.07 490.032
+-2947.65 -12736 972.486
+6085.2 -18812.1 1137.93
+-10939.6 -27893.3 2873.37
+-23208.7 -78475.3 6671.59
+33817.5 -142276 9022.16
+-6956.19 -197978 18090.9
+-166726 -473691 45710.3
+129435 -985270 67215.4
+278328 -1.34521e+06 115567
+-2.09001e+06 -2.96234e+06 414821
+-5.41963e+06 -8.53835e+06 978241
+-3.81137e+06 -1.36757e+07 1.12058e+06
+0 -8.161e+06 461239
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.21168e+06 -8.61086e+06 238455
+1.77011e+06 -7.74558e+06 389810
+-675.524 -3.97106e+06 221686
+-101252 -1.8634e+06 61401.8
+81190.3 -1.08431e+06 25034.8
+5864.37 -598881 20806.1
+-20977.6 -293702 9565.78
+10190.7 -165463 3667.36
+4886.16 -94087.2 2799.68
+-4131.54 -44838.1 1490.14
+905.611 -23749.8 498.238
+1658.17 -14174.6 385.698
+-601.885 -6705.78 251.564
+-24.5276 -3254.78 65.9022
+450.66 -2098.75 43.2894
+-23.1941 -1046.18 41.0234
+-29.0919 -462.529 11.7942
+112.216 -332.213 5.68457
+-0.986195 -201.376 10.5103
+-53.8432 -120.088 11.3531
+11.2547 -121.52 11.027
+-56.584 -134.588 13.3236
+-177.843 -257.546 13.7497
+5.78605 -428.211 6.60695
+-47.4024 -625.981 14.649
+-631.259 -1443.26 54.986
+69.8381 -2836.84 59.6536
+642.533 -4479.22 97.7253
+-2403.43 -9417.72 349.39
+-905.4 -19644.1 524.813
+5423.2 -32997.5 713.879
+-7737.56 -63369.9 2130.79
+-13127.3 -132581 3914.54
+30076.8 -232626 5202.47
+-12853.3 -417698 13947.2
+-115269 -856642 30237.2
+152627 -1.55235e+06 36519
+-16387.8 -2.69547e+06 92971.9
+-2.6144e+06 -5.81664e+06 338514
+-4.7086e+06 -1.13879e+07 597068
+0 -1.26643e+07 367169
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+15.0079 0.107454 -0.197107
+15.0455 0.123058 -0.227396
+15.0882 0.13952 -0.259322
+15.1362 0.156418 -0.29217
+15.1896 0.173266 -0.325043
+15.2482 0.189523 -0.35687
+15.3116 0.204595 -0.386428
+15.3793 0.217855 -0.412369
+15.4501 0.228661 -0.433265
+15.5229 0.236387 -0.447658
+15.5958 0.240447 -0.454123
+15.6669 0.240324 -0.451344
+15.7339 0.2356 -0.438192
+15.7939 0.225979 -0.413809
+15.8443 0.21133 -0.377687
+15.882 0.191722 -0.329739
+15.9041 0.167479 -0.27036
+15.9076 0.139247 -0.200469
+15.8894 0.108049 -0.121531
+15.8464 0.0753335 -0.0355642
+15.7755 0.042958 0.0548661
+15.6733 0.0130962 0.146665
+15.5367 -0.0119883 0.236239
+15.3633 -0.0303135 0.31955
+15.1524 -0.0406848 0.392228
+14.9064 -0.0432817 0.449772
+14.6326 -0.0403237 0.4879
+14.3462 -0.0375404 0.503041
+14.0804 -0.0518658 0.492828
+13.9424 -0.158005 0.455922
+14.4359 -0.756816 0.389034
+18.2472 -4.04477 0.275109
+39.7327 -21.7318 0.0512468
+153.574 -114.209 -0.431416
+737.286 -583.891 -1.16558
+3653.61 -2909.8 0.566978
+17927.7 -14202.4 25.7155
+86767.6 -68287.9 188.858
+415919 -325505 1008.33
+1.98746e+06 -1.54946e+06 4523.69
+949599 -7.4412e+06 22354.6
+93953.5 -6.76336e+06 6285.64
+-44845.6 -3.75838e+06 -10619.4
+9721.39 -1.88187e+06 -9088.37
+4123.91 -1.06015e+06 -3411.51
+-5403.34 -579431 -1731.95
+947.489 -294881 -1294.42
+1393.24 -163126 -625.866
+-837.124 -90352.9 -283.175
+-88.1392 -44822.3 -194.626
+344.27 -23782.7 -100.081
+-102.589 -13509.1 -39.8069
+-68.5378 -6629.06 -28.2702
+71.3115 -3338.52 -16.876
+-2.82904 -1993.25 -5.68741
+-21.0089 -1011.68 -3.7118
+12.3079 -487.523 -2.96788
+3.5493 -318.33 -1.27344
+-4.07513 -190.63 -0.758524
+-0.621768 -121.454 -0.473463
+-0.649549 -119.488 -0.219155
+4.66971 -137.495 -0.586578
+-6.43811 -242.478 -0.875
+-14.8292 -413.181 -1.63429
+27.6268 -657.194 -4.0042
+-4.28932 -1388.91 -5.00412
+-89.9131 -2708.55 -7.79221
+104.293 -4596.22 -22.8615
+106.757 -9265.41 -38.2256
+-473.022 -18759.6 -55.7271
+202.011 -33113.9 -139.934
+1073.11 -63161.5 -266.933
+-2080.68 -127299 -390.463
+-999.419 -229759 -881.635
+7616.58 -418913 -1810.25
+-6880.04 -827852 -2366.05
+-13298 -1.519e+06 -4763.91
+65775.2 -2.72147e+06 -12945.6
+-145628 -5.49552e+06 -14136.7
+-1.40573e+06 -9.93925e+06 13274.2
+-2.92173e+06 -1.09519e+07 37898.1
+-608165 -2.28066e+06 7659.65
+-125489 -477265 1687.01
+-25471 -99207.3 313.637
+-5059.25 -20307.9 42.6673
+-987.407 -4062.45 1.10955
+-199.074 -788.449 -1.85563
+-51.918 -147.547 -0.764803
+-25.6308 -26.5385 -0.0410971
+-21.2877 -4.60581 0.304453
+-20.8404 -0.782268 0.503236
+-21.1211 -0.135076 0.647389
+-21.5673 -0.0391689 0.757267
+-22.0525 -0.0502185 0.832625
+-22.5271 -0.0877249 0.871023
+-22.9636 -0.128699 0.872346
+-23.3478 -0.16076 0.838942
+-23.6757 -0.176333 0.774739
+-23.949 -0.172093 0.684394
+-24.1728 -0.148353 0.572775
+-24.3521 -0.108006 0.44473
+-24.4911 -0.0553225 0.305036
+-24.5926 0.00508139 0.158405
+-24.6584 0.0689561 0.00946561
+-24.6897 0.132787 -0.137305
+-24.6879 0.193886 -0.277705
+-24.6551 0.250298 -0.407947
+-24.5942 0.300643 -0.524801
+-24.5087 0.343948 -0.625698
+-24.4029 0.379529 -0.708794
+-24.2812 0.406918 -0.772981
+-24.1481 0.425855 -0.817862
+-24.008 0.436287 -0.843683
+-23.8647 0.438379 -0.851254
+-23.7217 0.432522 -0.841857
+-23.5819 0.419314 -0.817153
+-23.4478 0.399536 -0.779079
+-23.3214 0.37412 -0.729764
+-23.2042 0.344121 -0.671431
+-23.0972 0.31069 -0.606321
+0 0.275051 -0.53662
+291.418 2.15179 -3.62062
+292.114 2.4792 -4.20085
+292.909 2.82548 -4.81448
+293.808 3.18189 -5.44791
+294.812 3.53833 -6.08398
+295.918 3.88338 -6.70213
+297.12 4.20448 -7.27877
+298.406 4.48823 -7.78783
+299.757 4.72085 -8.20155
+301.148 4.88876 -8.49151
+302.548 4.97905 -8.62984
+303.919 4.9801 -8.59063
+305.214 4.88217 -8.35148
+306.386 4.67796 -7.89512
+307.382 4.36336 -7.21094
+308.146 3.93841 -6.29643
+308.626 3.40839 -5.15834
+308.768 2.78523 -3.81356
+308.519 2.08886 -2.28959
+307.826 1.34818 -0.624735
+306.634 0.60107 1.13191
+304.888 -0.107384 2.92079
+302.534 -0.72911 4.67234
+299.532 -1.22027 6.30807
+295.872 -1.55121 7.74254
+291.599 -1.71784 8.88726
+286.845 -1.75304 9.65733
+281.866 -1.74102 9.98142
+277.115 -1.8707 9.81362
+273.565 -2.74508 9.14099
+274.459 -7.09497 7.96759
+294.35 -28.5954 6.2225
+402.821 -134.483 3.4633
+922.9 -640.014 -1.85267
+3272.97 -2946.09 -13.5199
+13276.8 -12935.8 -36.7712
+52953.8 -53844.6 -63.075
+196349 -210995 -3.93279
+642919 -767402 453.264
+1.61669e+06 -2.50071e+06 1641.14
+777449 -6.52518e+06 745.709
+104393 -6.01611e+06 -13736
+-19924.2 -3.58921e+06 -19091.8
+6073.13 -1.88571e+06 -12659.9
+1168.96 -1.04407e+06 -6281.13
+-3401.06 -568894 -3500.74
+816.02 -295964 -2064.71
+717.147 -161370 -1063.32
+-559.913 -88186.7 -555.023
+4.58701 -44927.5 -314.424
+196.945 -23737.6 -160.803
+-82.353 -13102.1 -80.5539
+-32.0814 -6613.16 -46.3925
+43.6074 -3380.67 -24.4276
+-7.44405 -1924.02 -11.5755
+-11.9439 -997.507 -6.734
+7.95407 -502.372 -3.96685
+0.683936 -308.013 -2.0694
+-2.39214 -185.633 -1.32933
+0.323077 -122.875 -0.915131
+-0.661887 -117.316 -0.73012
+3.36191 -140.029 -1.07351
+-1.70458 -234.999 -1.63007
+-9.33611 -401.604 -2.66503
+16.6523 -676.381 -5.31694
+5.28739 -1364.31 -9.12256
+-55.7622 -2622.74 -15.7727
+52.6994 -4658.56 -33.4329
+93.8763 -9214.53 -63.753
+-276.14 -18211.7 -111.792
+46.0153 -33104.3 -224.236
+735.305 -63204.1 -437.372
+-1103.72 -124204 -773.478
+-960.157 -227551 -1492.43
+4834.46 -420224 -2899.6
+-2364.21 -812062 -4883
+-8654.5 -1.49649e+06 -8778.19
+28858.3 -2.72637e+06 -17806.8
+-158854 -5.24109e+06 -26152.8
+-1.15082e+06 -8.83647e+06 -15938.8
+-2.37847e+06 -9.60952e+06 6490.12
+-940715 -3.68474e+06 4608.06
+-284174 -1.12685e+06 1325.85
+-75294.8 -307074 154.165
+-18417 -77134 -61.7905
+-4420.45 -18088.7 -50.4769
+-1241.88 -3981.97 -21.2451
+-568.582 -826.882 -4.98938
+-435.227 -164.226 2.73223
+-412.408 -32.7231 7.0988
+-412.563 -7.58862 10.3167
+-418.472 -2.85507 12.9611
+-426.336 -2.19905 15.0422
+-434.812 -2.58041 16.4607
+-443.122 -3.2885 17.1539
+-450.777 -4.00197 17.1219
+-457.517 -4.50189 16.4158
+-463.264 -4.65028 15.1163
+-468.054 -4.3913 13.3175
+-471.971 -3.73999 11.1164
+-475.105 -2.76108 8.60878
+-477.527 -1.54511 5.8879
+-479.28 -0.187981 3.04511
+-480.389 1.22301 0.169389
+-480.87 2.61627 -2.65382
+-480.744 3.93753 -5.34475
+-480.044 5.1479 -7.83196
+-478.823 6.22042 -10.0548
+-477.147 7.1366 -11.9656
+-475.093 7.88392 -13.5303
+-472.747 8.45435 -14.7293
+-470.194 8.84394 -15.5563
+-467.517 9.05287 -16.0174
+-464.79 9.08574 -16.1294
+-462.079 8.95154 -15.918
+-459.44 8.66343 -15.4159
+-456.918 8.23825 -14.661
+-454.549 7.69586 -13.6947
+-452.362 7.05854 -12.5599
+-450.374 6.35047 -11.2999
+0 5.59721 -9.95663
+5119.83 37.1448 -59.8076
+5131.42 43.1067 -69.8673
+5144.76 49.4307 -80.5456
+5159.93 55.9606 -91.6086
+5176.94 62.5137 -102.759
+5195.77 68.8816 -113.64
+5216.32 74.8329 -123.838
+5238.37 80.1193 -132.897
+5261.63 84.484 -140.329
+5285.67 87.6701 -145.63
+5309.94 89.4307 -148.305
+5333.78 89.5389 -147.893
+5356.44 87.7978 -143.988
+5377.08 84.0519 -136.276
+5394.82 78.2007 -124.554
+5408.78 70.216 -108.762
+5418.06 60.1638 -89.0018
+5421.84 48.2299 -65.5511
+5419.29 34.7461 -38.8761
+5409.6 20.2105 -9.63514
+5391.96 5.29069 21.3207
+5365.55 -9.20175 52.9512
+5329.57 -22.3802 84.0348
+5283.45 -33.4024 113.185
+5227.08 -41.6378 138.886
+5161.23 -46.8622 159.558
+5088.07 -49.4411 173.67
+5011.64 -50.4739 179.923
+4938.38 -52.014 177.467
+4878.25 -58.2063 166.127
+4850.2 -81.5241 146.476
+4908.66 -172.902 119.437
+5259.39 -554.651 84.8058
+6720.5 -2163.32 37.4343
+12383.3 -8695.93 -40.8618
+32895.6 -33642.8 -195.697
+100427 -121818 -522.002
+293923 -405102 -1205.53
+734052 -1.20656e+06 -2681.05
+1.30828e+06 -3.06501e+06 -6236.35
+694614 -5.87914e+06 -14783.3
+145167 -5.43461e+06 -25486.4
+2830.67 -3.42719e+06 -25069
+4274.6 -1.87767e+06 -16543.1
+570.725 -1.03589e+06 -9160.75
+-2223.84 -563786 -5138.91
+381.697 -297358 -2883.21
+434.733 -160800 -1531.64
+-338.148 -87087.5 -813.884
+-6.6451 -45089.3 -439.373
+120.752 -23778.8 -228.517
+-47.834 -12888.4 -118.826
+-20.6127 -6616.58 -64.2596
+26.4184 -3415.65 -33.5963
+-3.98564 -1887.35 -17.2201
+-7.41148 -990.689 -9.46278
+4.69292 -512.639 -5.23889
+0.484285 -302.708 -2.89684
+-1.51363 -182.92 -1.8026
+0.0892607 -123.982 -1.24342
+-0.40109 -116.381 -1.08351
+1.97281 -141.832 -1.43829
+-1.24981 -230.891 -2.23808
+-5.59655 -395.855 -3.75826
+10.1591 -689.686 -7.02026
+2.3299 -1351.89 -12.8351
+-33.7878 -2578.18 -23.4689
+33.4218 -4709.37 -46.0974
+53.6599 -9202.01 -88.6977
+-169.013 -17926.7 -164.88
+41.5707 -33195.2 -318.386
+442.781 -63368.3 -613.245
+-669.448 -122633 -1138.02
+-422.73 -226917 -2148.65
+3137.73 -422056 -4048.23
+-1313.51 -804275 -7189.53
+-6328.55 -1.48493e+06 -12788.2
+-4849.46 -2.71375e+06 -23044
+-217445 -4.99889e+06 -34177.4
+-1.02765e+06 -7.97781e+06 -32368.1
+-1.92668e+06 -8.66141e+06 -15492
+-1.07543e+06 -4.5208e+06 -5730.78
+-426236 -1.77449e+06 -2608.97
+-143438 -590735 -1371.84
+-46309.8 -174881 -682.691
+-17516.3 -47134 -295.241
+-9820.8 -11769.5 -94.9635
+-7903.46 -2800.12 11.3472
+-7452.81 -683.743 80.6855
+-7378.31 -205.594 137.98
+-7421.47 -96.0473 189.853
+-7516.35 -70.5932 235.278
+-7637.58 -68.8773 271.3
+-7768.86 -76.5851 295.49
+-7898.21 -87.716 306.707
+-8017.62 -97.8567 305.051
+-8122.83 -103.601 291.525
+-8212.53 -102.829 267.638
+-8287.25 -94.7973 235.114
+-8348.34 -79.9489 195.708
+-8397.17 -59.5443 151.136
+-8434.76 -35.2513 103.057
+-8461.68 -8.79879 53.0757
+-8478.19 18.2593 2.74427
+-8484.41 44.6612 -46.4606
+-8480.6 69.4611 -93.1701
+-8467.25 91.9921 -136.166
+-8445.17 111.803 -174.423
+-8415.46 128.597 -207.141
+-8379.44 142.182 -233.76
+-8338.58 152.448 -253.968
+-8294.34 159.354 -267.685
+-8248.14 162.93 -275.041
+-8201.27 163.281 -276.353
+-8154.87 160.588 -272.087
+-8109.88 155.102 -262.829
+-8067.09 147.14 -249.251
+-8027.08 137.069 -232.083
+-7990.3 125.298 -212.076
+-7957.06 112.268 -189.985
+0 98.4411 -166.537
+89942 633.609 -988.903
+90135.4 741.02 -1163.92
+90359.3 855.306 -1350.41
+90615.3 973.711 -1544.31
+90904 1092.97 -1740.48
+91225 1209.3 -1932.66
+91576.7 1318.51 -2113.63
+91955.6 1416.05 -2275.35
+92356.5 1497.18 -2409.17
+92772.1 1557.13 -2506.19
+93193 1591.23 -2557.57
+93607.9 1595.12 -2555.02
+94003.8 1564.94 -2491.22
+94366.6 1497.48 -2360.38
+94681.4 1390.49 -2158.67
+94933.5 1242.99 -1884.74
+95108.6 1055.63 -1540.04
+95193.2 831.244 -1129.16
+95174.8 575.294 -660.044
+95041.1 296.291 -144.047
+94780.2 5.91517 403.981
+94379.9 -281.354 965.755
+93829 -549.328 1519.67
+93119.3 -782.069 2041.09
+92250.1 -966.682 2502.95
+91234.9 -1096.6 2876.91
+90109.4 -1174.69 3135.33
+88938.8 -1215.39 3254.39
+87823.8 -1245.59 3218.05
+86904.1 -1307.15 3022.33
+86370.6 -1474.37 2678.14
+86528 -1936.01 2209.96
+88044 -3315.23 1646.73
+92777.7 -7796.94 1001.21
+106183 -22768.5 235.685
+143204 -71395.1 -782.968
+238966 -219017 -2332.18
+454559 -623885 -4898.87
+824602 -1.58233e+06 -9328.06
+1.12642e+06 -3.37336e+06 -16964.1
+648952 -5.40379e+06 -28222.7
+190685 -4.97738e+06 -35736.5
+33347 -3.27156e+06 -31588.6
+10576.7 -1.857e+06 -21212.1
+2946.38 -1.02997e+06 -12446.6
+-315.802 -561568 -7081.09
+630.975 -298879 -3939.53
+487.811 -160986 -2123.77
+-75.4217 -86708.4 -1136.34
+51.0959 -45312.7 -605.828
+102.902 -23883.6 -317.616
+-9.61393 -12805.2 -166.71
+-4.31315 -6636.84 -88.346
+19.4536 -3447.32 -46.2079
+-0.0897208 -1872.3 -24.2051
+-3.84768 -989.26 -13.0359
+2.49583 -520.159 -7.0836
+-0.212766 -300.662 -3.96371
+-1.72733 -181.776 -2.42168
+-1.01902 -124.939 -1.67927
+-1.40535 -116.237 -1.50847
+-0.290186 -143.238 -1.92855
+-2.58818 -229.086 -3.0135
+-5.44285 -393.917 -5.15227
+2.75719 -699.53 -9.46992
+-4.149 -1348.26 -17.6564
+-27.5726 -2561.11 -33.0008
+6.53395 -4754.76 -63.4704
+3.8183 -9220.74 -122.108
+-145.015 -17819.7 -231.44
+-53.0719 -33363.1 -442.727
+87.5933 -63648.7 -847.05
+-716.865 -122094 -1592.19
+-819.684 -227285 -2982.35
+420.846 -424116 -5537
+-4584.63 -800751 -9931.22
+-15645.1 -1.47624e+06 -17399.7
+-49846.6 -2.68228e+06 -29491
+-284335 -4.76609e+06 -43148.2
+-962621 -7.29962e+06 -46828.7
+-1.66605e+06 -7.95951e+06 -34613.6
+-1.21654e+06 -4.97911e+06 -20373
+-668129 -2.33098e+06 -11612.4
+-351386 -911911 -6577.12
+-212891 -315138 -3538.61
+-160505 -100127 -1642.66
+-141887 -30801.5 -362.827
+-135261 -10134.7 659.692
+-132987 -4189.54 1618.42
+-132626 -2418.86 2567.47
+-133360 -1843.93 3475.24
+-134801 -1681.47 4276.08
+-136661 -1716.49 4906.01
+-138694 -1856.75 5321.2
+-140709 -2028.84 5503.19
+-142573 -2165.77 5455.78
+-144218 -2214.63 5198.4
+-145620 -2143.75 4759.16
+-146789 -1944.49 4169.62
+-147746 -1627.72 3461.67
+-148509 -1217.6 2666.23
+-149096 -744.541 1812.98
+-149511 -239.449 930.328
+-149756 270.234 45.4943
+-149833 762.45 -815.854
+-149742 1220.85 -1630.12
+-149492 1634.12 -2376.48
+-149095 1994.82 -3037.55
+-148569 2298.25 -3599.91
+-147938 2541.64 -4054.35
+-147226 2723.59 -4395.96
+-146458 2843.91 -4623.85
+-145660 2903.63 -4740.77
+-144853 2905.01 -4752.65
+-144057 2851.6 -4667.97
+-143288 2748.16 -4497.25
+-142561 2600.51 -4252.47
+-141883 2415.4 -3946.48
+-141264 2200.24 -3592.56
+-140707 1962.99 -3203.85
+0 1711.92 -2793.07
+1.42055e+06 290.561 -5638.48
+1.42627e+06 126.635 -6589.14
+1.43303e+06 -38.8542 -7582.74
+1.44086e+06 -198.925 -8595.45
+1.44975e+06 -345.244 -9597.58
+1.45962e+06 -468.447 -10554.1
+1.47038e+06 -558.468 -11425.5
+1.48188e+06 -604.852 -12169.3
+1.49391e+06 -597.062 -12741.4
+1.50623e+06 -524.796 -13098.7
+1.51854e+06 -378.314 -13201.7
+1.5305e+06 -148.771 -13017.3
+1.54174e+06 171.452 -12521.8
+1.55188e+06 588.402 -11703.4
+1.56052e+06 1106.21 -10564.2
+1.56727e+06 1726.69 -9120.46
+1.57175e+06 2448.98 -7401.02
+1.57365e+06 3268.88 -5443.94
+1.57266e+06 4178.12 -3291.59
+1.56856e+06 5163.03 -985.195
+1.5612e+06 6202.47 1439.55
+1.5505e+06 7264.37 3953.89
+1.53649e+06 8300.24 6532.66
+1.51933e+06 9236.39 9145.49
+1.49936e+06 9960.36 11743.8
+1.47717e+06 10300.2 14247.6
+1.45368e+06 9992.73 16541
+1.43033e+06 8635.38 18484.1
+1.40921e+06 5608.87 19951.1
+1.39336e+06 -52.909 20892
+1.38724e+06 -9903.66 21400.4
+1.39755e+06 -26573.8 21751.4
+1.43481e+06 -54835 22360.3
+1.51626e+06 -103970 23628.7
+1.67024e+06 -192856 25723.2
+1.93972e+06 -359703 28488.7
+2.37371e+06 -676270 31850.1
+2.97458e+06 -1.25429e+06 36769.3
+3.55357e+06 -2.19768e+06 45319
+3.55153e+06 -3.41039e+06 56231.3
+2.38069e+06 -4.26537e+06 56052.9
+1.15963e+06 -3.7786e+06 27817.4
+487965 -2.61348e+06 3239.31
+210885 -1.58788e+06 -4908.74
+92269.5 -915820 -5015.59
+40488.6 -512138 -3611.08
+20135.8 -279760 -2234.49
+10171.6 -151701 -1227.66
+4722.66 -81636.4 -647.87
+2480.76 -43276.8 -338.073
+1365.79 -22883.6 -169.329
+624.94 -12128.8 -83.6575
+311.272 -6358.17 -42.2992
+178.175 -3333.45 -20.8146
+70.1956 -1775.16 -9.98
+18.9328 -943.928 -5.09292
+1.92475 -506.41 -2.63218
+-14.8035 -285.853 -1.29772
+-25.246 -172.533 -0.69407
+-30.4134 -120.644 -0.412744
+-36.1604 -111.324 -0.318207
+-41.7674 -138.659 -0.451374
+-55.3197 -217.107 -0.800518
+-76.4036 -375.457 -1.59437
+-99.7052 -680.754 -3.3998
+-171.401 -1284.83 -6.7686
+-314.792 -2432.82 -13.5549
+-496.408 -4600.02 -28.6895
+-941.969 -8824.27 -58.7361
+-1958.95 -16893.3 -116.749
+-3485.98 -31998.2 -237.135
+-6659.3 -60767.6 -473.304
+-14295.2 -114995 -903.282
+-28156.7 -214399 -1701.28
+-56951.2 -397111 -3052.83
+-130549 -730608 -4744.52
+-298946 -1.31449e+06 -6019.79
+-695089 -2.29811e+06 -4071.89
+-1.66132e+06 -3.82054e+06 11941.6
+-3.42075e+06 -5.57462e+06 54844.3
+-5.10644e+06 -6.32471e+06 101199
+-5.10254e+06 -5.04493e+06 98114.6
+-4.26566e+06 -3.22516e+06 76181
+-3.40479e+06 -1.81815e+06 58572.4
+-2.78795e+06 -965818 47277.8
+-2.40715e+06 -506096 38882.6
+-2.18962e+06 -267810 32099.5
+-2.0735e+06 -142688 27373.7
+-2.01907e+06 -74159.5 25096.8
+-2.00276e+06 -34877.2 24902.5
+-2.01042e+06 -11683.2 25871.9
+-2.03307e+06 2075.45 27001.5
+-2.06468e+06 10037.3 27557.1
+-2.10101e+06 14351.4 27209.4
+-2.13911e+06 16359.2 25985.7
+-2.17692e+06 16922.2 24123.2
+-2.21309e+06 16598.2 21908
+-2.24669e+06 15745.1 19559.3
+-2.27711e+06 14588.1 17178.4
+-2.30389e+06 13265.6 14755.5
+-2.32668e+06 11860.7 12211.7
+-2.34517e+06 10423.4 9450.98
+-2.35912e+06 8984.84 6404.07
+-2.36833e+06 7566.82 3055.43
+-2.37273e+06 6187.1 -549.232
+-2.37235e+06 4861.97 -4310.85
+-2.36735e+06 3607.11 -8094.51
+-2.358e+06 2437.61 -11750.4
+-2.34473e+06 1367.48 -15133.4
+-2.32804e+06 409.064 -18117.5
+-2.3085e+06 -427.48 -20605.4
+-2.28675e+06 -1134.54 -22531.4
+-2.26344e+06 -1707.36 -23861.7
+-2.23922e+06 -2144.2 -24590.6
+-2.21472e+06 -2446.42 -24737.5
+-2.19054e+06 -2618.46 -24341.4
+-2.16719e+06 -2667.71 -23456.9
+-2.14515e+06 -2604.11 -22149.5
+-2.1248e+06 -2439.74 -20491
+-2.10645e+06 -2188.01 -18555.5
+0 -1862.87 -16416
+2.98517e+06 -794.605 -10847
+2.99671e+06 -1808.36 -12538.8
+3.0105e+06 -2852.84 -14253.3
+3.02652e+06 -3889.97 -15939.4
+3.04468e+06 -4874.93 -17538.6
+3.0648e+06 -5757.45 -18986.3
+3.0866e+06 -6483.3 -20215
+3.1097e+06 -6995.99 -21157.7
+3.13361e+06 -7238.79 -21751.5
+3.15778e+06 -7156.86 -21942.3
+3.18154e+06 -6699.57 -21689.4
+3.20419e+06 -5822.99 -20970.2
+3.22497e+06 -4492.34 -19783.9
+3.24313e+06 -2684.52 -18153.8
+3.25792e+06 -390.677 -16127.4
+3.26865e+06 2381.3 -13773
+3.27471e+06 5604.1 -11171.3
+3.2756e+06 9228.15 -8404.1
+3.27094e+06 13178.4 -5538.66
+3.26047e+06 17350.5 -2611.24
+3.2441e+06 21605.6 386.954
+3.22188e+06 25763.9 3517.4
+3.19401e+06 29594.2 6890.93
+3.16087e+06 32799.3 10650.4
+3.12308e+06 34993.3 14939.5
+3.08156e+06 35665.9 19863.4
+3.03767e+06 34127.5 25452.8
+2.99339e+06 29423.6 31648.8
+2.95149e+06 20201.3 38324.1
+2.9158e+06 4495.11 45344
+2.89152e+06 -20632.5 52648.3
+2.88569e+06 -59736.5 60301.4
+2.90771e+06 -120200 68435.6
+2.96996e+06 -214482 77029.5
+3.08718e+06 -363901 85558.6
+3.27111e+06 -603429 92756
+3.5122e+06 -982913 96922.1
+3.73837e+06 -1.55049e+06 96986.1
+3.76159e+06 -2.29242e+06 93254.9
+3.30418e+06 -3.02036e+06 85323.5
+2.29691e+06 -3.31357e+06 67924.7
+1.31179e+06 -2.83263e+06 37457.1
+674400 -2.00069e+06 13739.2
+336342 -1.26446e+06 3464.89
+165929 -753940 605.692
+81875.1 -433016 124.113
+41329.9 -242082 206.764
+21047.3 -133097 295.213
+10643.7 -72211.3 284.258
+5478.26 -38676.4 225.849
+2840.93 -20569.9 161.744
+1430.82 -10902.4 107.348
+716.597 -5747.17 67.6638
+353.544 -3028.11 41.4064
+152.054 -1605.93 24.8184
+46.1339 -856.073 14.6969
+-7.97771 -462.539 8.75581
+-40.2219 -259.628 5.3809
+-59.9573 -156.614 3.56523
+-73.2672 -110.162 2.74877
+-85.7324 -101.538 2.65022
+-100.959 -126.725 3.21171
+-125.881 -197.08 4.60486
+-167.998 -341.4 7.25777
+-240.844 -621.84 11.952
+-385.345 -1165.05 20.0723
+-659.949 -2202.48 33.8189
+-1159.8 -4179.55 56.2718
+-2152.06 -7974.42 91.7805
+-4109.03 -15190.7 145.5
+-7782.92 -28774.3 219.091
+-15030.4 -54309.3 306.224
+-29651.3 -101750 389.315
+-58213.2 -188215 420.802
+-115624 -343804 367.306
+-235141 -618253 510.042
+-478297 -1.08396e+06 1942.86
+-963457 -1.83503e+06 7879.49
+-1.8847e+06 -2.93708e+06 26718.5
+-3.31685e+06 -4.20354e+06 67615.4
+-4.78476e+06 -4.94407e+06 117402
+-5.44569e+06 -4.48994e+06 142226
+-5.40816e+06 -3.37384e+06 149689
+-5.08182e+06 -2.25081e+06 149802
+-4.73771e+06 -1.40607e+06 143847
+-4.47561e+06 -852140 131870
+-4.30625e+06 -509133 116243
+-4.21213e+06 -298406 100180
+-4.17305e+06 -166583 85826.6
+-4.17281e+06 -82125.8 73770.5
+-4.19936e+06 -27115.1 63571.7
+-4.24381e+06 8836.34 54514.5
+-4.29952e+06 32038.2 46125.7
+-4.3616e+06 46504.6 38348.5
+-4.42651e+06 54873.4 31448.7
+-4.49184e+06 58914 25790.6
+-4.55589e+06 59832.5 21617.6
+-4.61745e+06 58467.4 18920.2
+-4.67556e+06 55417.3 17415.9
+-4.72929e+06 51124.5 16619.2
+-4.77768e+06 45930.1 15957.9
+-4.81973e+06 40108.4 14892.1
+-4.85445e+06 33889.5 13006.5
+-4.88094e+06 27472.1 10062.5
+-4.89849e+06 21032 6008.62
+-4.90663e+06 14725.5 959.118
+-4.90521e+06 8691.78 -4847.5
+-4.8944e+06 3053.04 -11097.8
+-4.87468e+06 -2086.07 -17450.5
+-4.84684e+06 -6639.24 -23574.8
+-4.81191e+06 -10539.5 -29177.6
+-4.7711e+06 -13739.9 -34019.8
+-4.72576e+06 -16214.1 -37923.5
+-4.67731e+06 -17956.2 -40773.5
+-4.62716e+06 -18980.1 -42514.1
+-4.5767e+06 -19318.1 -43144.2
+-4.52723e+06 -19018.9 -42709.9
+-4.4799e+06 -18145.5 -41295.9
+-4.43574e+06 -16771.5 -39016.7
+-4.39559e+06 -14978 -36006.3
+0 -12849.9 -32409.6
+4.60639e+06 -2207.24 -16591.1
+4.62339e+06 -4301.01 -19120.2
+4.6435e+06 -6463.44 -21639.7
+4.66668e+06 -8616.53 -24066.9
+4.69277e+06 -10669 -26309.3
+4.72148e+06 -12518.7 -28269.1
+4.75238e+06 -14055.6 -29848
+4.78493e+06 -15165.5 -30952.7
+4.81845e+06 -15734.4 -31502
+4.85213e+06 -15653.1 -31433.3
+4.88509e+06 -14822.1 -30709.6
+4.91638e+06 -13157.7 -29325.8
+4.94503e+06 -10596.6 -27313.5
+4.9701e+06 -7101.66 -24742.4
+4.99067e+06 -2667.09 -21718.4
+5.00596e+06 2676.78 -18374.6
+5.01532e+06 8858.66 -14856.5
+5.01827e+06 15761.7 -11299.6
+5.01448e+06 23218.9 -7802.18
+5.00382e+06 31007.8 -4395.3
+4.9863e+06 38845 -1017.03
+4.96204e+06 46378.7 2503.87
+4.93126e+06 53178.4 6446.51
+4.89424e+06 58720.6 11173.3
+4.85134e+06 62366 17080.4
+4.80301e+06 63323.8 24529.7
+4.74992e+06 60594.6 33776.1
+4.693e+06 52880.4 44915.7
+4.63362e+06 38442.3 57877.8
+4.57361e+06 14878 72473.3
+4.51537e+06 -21234.5 88481.8
+4.46176e+06 -74926.3 105716
+4.41586e+06 -153826 123971
+4.38015e+06 -269724 142767
+4.35419e+06 -440545 160918
+4.32849e+06 -691104 176149
+4.27193e+06 -1.04761e+06 185259
+4.11405e+06 -1.51627e+06 185152
+3.7418e+06 -2.03825e+06 174113
+3.06008e+06 -2.442e+06 151698
+2.14608e+06 -2.48077e+06 117786
+1.31875e+06 -2.06251e+06 76821
+747488 -1.46672e+06 44016.5
+407095 -947452 24566.2
+216971 -578249 14280.6
+114417 -339302 8693.97
+60242.4 -193288 5448.3
+31650.2 -107749 3431.36
+16555.3 -59045.1 2131.14
+8654.92 -31905.5 1297.76
+4508.39 -17075.8 774.895
+2316.26 -9082.37 454.284
+1167.29 -4808.35 262.429
+564.15 -2542.87 150.052
+241.74 -1349.51 85.3037
+69.512 -720.883 48.5322
+-23.2792 -390.812 27.9375
+-75.9871 -219.309 16.6149
+-108.059 -132.406 10.6604
+-130.645 -93.4004 7.96834
+-151.552 -86.1315 7.55448
+-177.528 -107.501 9.23641
+-217.924 -166.699 13.5768
+-287.19 -288.601 22.0828
+-411.91 -525.577 37.7131
+-646.108 -981.199 65.8566
+-1087.21 -1851.36 116.016
+-1917.86 -3510.12 204.45
+-3509.03 -6671.44 358.355
+-6555.27 -12656.5 622.067
+-12340.1 -23890.5 1064.6
+-23409.1 -44807 1790.33
+-44626.6 -83221.3 2957.12
+-84948.7 -152444 4802.51
+-161673 -274693 7732.74
+-307600 -484989 12626.6
+-579612 -832960 21418
+-1.07021e+06 -1.37912e+06 38167.2
+-1.90135e+06 -2.16238e+06 70355.5
+-3.11595e+06 -3.07695e+06 124416
+-4.46375e+06 -3.72223e+06 190279
+-5.46392e+06 -3.64998e+06 241656
+-6.00518e+06 -3.01375e+06 271811
+-6.23267e+06 -2.20949e+06 282034
+-6.31269e+06 -1.50377e+06 274145
+-6.34557e+06 -979926 252101
+-6.37438e+06 -620281 221986
+-6.4125e+06 -379548 189606
+-6.46171e+06 -217840 158677
+-6.52022e+06 -107734 130667
+-6.58541e+06 -31918.4 105658
+-6.65469e+06 20433.3 83324
+-6.72586e+06 56259.3 63546.4
+-6.79728e+06 80135.4 46593.5
+-6.86791e+06 95149.3 32961.1
+-6.93723e+06 103428 23076.2
+-7.00501e+06 106477 17032.4
+-7.07104e+06 105400 14462.2
+-7.1349e+06 101046 14565.1
+-7.19582e+06 94102.2 16254.7
+-7.25262e+06 85149.1 18357.2
+-7.3038e+06 74696.1 19802.8
+-7.34769e+06 63201 19767.3
+-7.38259e+06 51081.5 17748.4
+-7.40702e+06 38720.1 13577.4
+-7.4198e+06 26466 7381.33
+-7.4202e+06 14634.4 -485.716
+-7.40802e+06 3504.8 -9523.7
+-7.38354e+06 -6682.17 -19164.6
+-7.34754e+06 -15727.3 -28837.6
+-7.30123e+06 -23475.5 -38017.6
+-7.24615e+06 -29817.4 -46256.1
+-7.18409e+06 -34690.4 -53198.7
+-7.117e+06 -38077.2 -58591.8
+-7.0469e+06 -40004.4 -62282.2
+-6.97578e+06 -40538.5 -64211.7
+-6.90554e+06 -39780.9 -64407.4
+-6.83791e+06 -37862.8 -62969.2
+-6.77443e+06 -34937.4 -60055.2
+-6.71639e+06 -31173.6 -55865.3
+0 -26747.8 -50626.3
+5.87253e+06 -3049.56 -21868.7
+5.89292e+06 -5734.21 -25251.7
+5.91651e+06 -8508.77 -28602.8
+5.94324e+06 -11273.2 -31808.3
+5.97291e+06 -13910.6 -34742.5
+6.0052e+06 -16290.7 -37274.1
+6.03968e+06 -18273.3 -39273
+6.07577e+06 -19713.3 -40618
+6.11278e+06 -20466.7 -41206.1
+6.14992e+06 -20396.6 -40961.8
+6.18633e+06 -19380 -39846.3
+6.22112e+06 -17315.1 -37865
+6.2534e+06 -14128.5 -35074.1
+6.28233e+06 -9781.71 -31582
+6.30715e+06 -4277.8 -27545
+6.32727e+06 2332.81 -23155.6
+6.34223e+06 9947.27 -18621.2
+6.35177e+06 18405.8 -14133.2
+6.35578e+06 27487.5 -9829.41
+6.35427e+06 36906.9 -5752.79
+6.34734e+06 46309.5 -1814.56
+6.33506e+06 55267.4 2230.46
+6.31739e+06 63273.1 6786.06
+6.29413e+06 69729.7 12386.5
+6.26483e+06 73935.3 19634.9
+6.22878e+06 75055.8 29114.5
+6.18504e+06 72079 41289.9
+6.13246e+06 63738.2 56427.3
+6.06977e+06 48388.4 74565.9
+5.99552e+06 23814.8 95558.7
+5.90795e+06 -13058.6 119166
+5.80471e+06 -66609.8 145133
+5.68223e+06 -143167 173134
+5.53458e+06 -251856 202470
+5.35134e+06 -405220 231501
+5.11401e+06 -617983 257032
+4.79108e+06 -900157 274203
+4.33663e+06 -1.23943e+06 277439
+3.70508e+06 -1.57407e+06 262442
+2.89873e+06 -1.78006e+06 228233
+2.02994e+06 -1.7249e+06 178677
+1.29228e+06 -1.40557e+06 124305
+771999 -1.00051e+06 79359.7
+443564 -653936 48989
+248390 -405191 30189.1
+136712 -241445 18682.9
+74389.9 -139489 11551
+40106.5 -78640.6 7077.56
+21444.8 -43471.9 4271.62
+11385.9 -23659.1 2535.05
+5993.31 -12730.8 1480.5
+3110.36 -6797.18 852.465
+1575.28 -3610.95 485.358
+758.074 -1915.16 274.224
+320.624 -1018.13 154.391
+85.062 -544.883 87.14
+-43.6054 -296.035 49.8118
+-116.547 -166.306 29.4305
+-161.061 -100.547 18.7547
+-192.757 -71.0679 13.9231
+-222.129 -65.5917 13.1474
+-258.625 -81.8344 16.0957
+-314.714 -126.665 23.7822
+-410.715 -218.995 38.9402
+-583.624 -398.278 66.9929
+-903.681 -741.815 117.927
+-1502.17 -1397.01 209.593
+-2626.66 -2643.85 373.221
+-4749.33 -5010.22 662.38
+-8752.33 -9472.98 1166.97
+-16269.7 -17814.2 2033.73
+-30346.9 -33232.7 3496.28
+-56559.5 -61292.7 5920.48
+-104900 -111322 9874.26
+-193172 -198395 16269.2
+-352238 -345539 26690.1
+-632227 -584802 43991.1
+-1.10788e+06 -954606 73129.3
+-1.87028e+06 -1.48065e+06 121346
+-2.96339e+06 -2.10621e+06 193408
+-4.25813e+06 -2.60035e+06 279811
+-5.45552e+06 -2.67391e+06 355909
+-6.38514e+06 -2.33866e+06 404264
+-7.04631e+06 -1.81411e+06 419356
+-7.5088e+06 -1.29764e+06 404203
+-7.84088e+06 -880595 367476
+-8.08882e+06 -574708 319638
+-8.28043e+06 -358927 269299
+-8.43227e+06 -207784 221576
+-8.5547e+06 -101245 178476
+-8.65452e+06 -25558.2 140230
+-8.73648e+06 28370.1 106550
+-8.80422e+06 66560.1 77381.5
+-8.86083e+06 93033.3 53082.1
+-8.9092e+06 110504 34207.5
+-8.95205e+06 120841 21145.5
+-8.99178e+06 125377 13805.9
+-9.03023e+06 125119 11489.3
+-9.06848e+06 120881 12950.2
+-9.10673e+06 113365 16602.4
+-9.14431e+06 103202 20782.9
+-9.17982e+06 90981.3 23998.6
+-9.21137e+06 77259.3 25106.8
+-9.23688e+06 62562.5 23409
+-9.25428e+06 47388.2 18662.7
+-9.26184e+06 32200.7 11028
+-9.25825e+06 17426.4 976.006
+-9.24277e+06 3447.67 -10819.8
+-9.21527e+06 -9402.78 -23587.4
+-9.1762e+06 -20847.7 -36544.1
+-9.12651e+06 -30669.9 -48962.3
+-9.06761e+06 -38714.6 -60213.2
+-9.00121e+06 -44890.8 -69792.1
+-8.92926e+06 -49169.9 -77329.4
+-8.85385e+06 -51582.2 -82592.2
+-8.77704e+06 -52211.7 -85478
+-8.70086e+06 -51189.2 -86003.6
+-8.62717e+06 -48683.9 -84288.4
+-8.55763e+06 -44894.4 -80535.1
+-8.49366e+06 -40039.2 -75007.8
+0 -34346.6 -68011.4
+6.6641e+06 -2651.65 -25988.9
+6.6857e+06 -4919.05 -30127.9
+6.70994e+06 -7262.84 -34228.9
+6.73675e+06 -9598.36 -38152.5
+6.76595e+06 -11826.9 -41745.1
+6.79727e+06 -13838.5 -44846.4
+6.83034e+06 -15515.1 -47297.2
+6.86471e+06 -16735 -48949.7
+6.89985e+06 -17377.5 -49678.1
+6.93514e+06 -17328.7 -49389.9
+6.96997e+06 -16487.3 -48037
+7.00371e+06 -14770.7 -45625.6
+7.03576e+06 -12121.2 -42223.3
+7.0656e+06 -8511.49 -37961.6
+7.09281e+06 -3950.18 -33031.3
+7.11714e+06 1513.83 -27668.4
+7.13845e+06 7787.61 -22129.6
+7.15676e+06 14731.2 -16655.7
+7.1722e+06 22155.5 -11426.9
+7.18491e+06 29820.4 -6513.87
+7.19499e+06 37433.3 -1832.57
+7.20234e+06 44647.8 2887.07
+7.20656e+06 51061.1 8107.16
+7.20679e+06 56209.8 14453.5
+7.20164e+06 59561.6 22649.1
+7.18911e+06 60498.9 33415.2
+7.1666e+06 58288.7 47360.3
+7.13089e+06 52029.5 64888.3
+7.07815e+06 40565.3 86163.3
+7.00382e+06 22353.2 111152
+6.90238e+06 -4726.53 139727
+6.76691e+06 -43630 171747
+6.58832e+06 -98482.6 206990
+6.35445e+06 -174917 244771
+6.04891e+06 -280065 283206
+5.65033e+06 -421097 318340
+5.13368e+06 -600119 343729
+4.47764e+06 -803285 351383
+3.68339e+06 -987273 334569
+2.80363e+06 -1.07949e+06 291795
+1.95523e+06 -1.01732e+06 229969
+1.26612e+06 -818289 164033
+778313 -581955 108650
+461648 -382636 69269.4
+266608 -239211 43520
+150801 -143947 27133.8
+83906.4 -83940.4 16759.1
+46053.6 -47696.2 10213
+24984 -26531.9 6123.37
+13411.7 -14512.5 3610.63
+7117.13 -7839.27 2096.47
+3716.54 -4197.58 1201.32
+1888.13 -2235.29 681.3
+906.629 -1187.89 383.704
+378.518 -632.419 215.485
+92.5298 -338.924 121.379
+-64.6849 -184.396 69.2682
+-154.122 -103.705 40.8639
+-208.936 -62.7762 25.9978
+-248.182 -44.4348 19.2644
+-284.622 -41.0407 18.1657
+-329.835 -51.1853 22.2367
+-398.946 -79.1261 32.8888
+-516.743 -136.633 53.9325
+-728.029 -248.174 92.9482
+-1116.45 -461.525 163.937
+-1838.6 -867.904 292.019
+-3187.98 -1640.02 521.388
+-5713.55 -3101.71 928.358
+-10430.8 -5850.68 1641.98
+-19197.7 -10971.3 2875.17
+-35379 -20389.7 4970.63
+-64956.6 -37421.4 8468.35
+-118320 -67552.1 14207.6
+-213102 -119476 23506.2
+-378249 -206228 38512.3
+-658793 -345797 62798.2
+-1.11949e+06 -559827 102029
+-1.83888e+06 -863702 163514
+-2.86798e+06 -1.23019e+06 251190
+-4.1432e+06 -1.53903e+06 355354
+-5.46219e+06 -1.62778e+06 450678
+-6.64212e+06 -1.47259e+06 512060
+-7.60373e+06 -1.18027e+06 528820
+-8.34841e+06 -868555 505076
+-8.91138e+06 -602916 453860
+-9.33249e+06 -400013 389829
+-9.64546e+06 -252333 324219
+-9.87617e+06 -146375 263289
+-1.00439e+07 -70255.8 209262
+-1.01628e+07 -15276.7 162161
+-1.02436e+07 24563.7 121401
+-1.02949e+07 53328.6 86687
+-1.03235e+07 73741.1 58228.5
+-1.03359e+07 87618 36487
+-1.03377e+07 96187.1 21750.6
+-1.03339e+07 100315 13777.6
+-1.03284e+07 100663 11647
+-1.03241e+07 97779.8 13833.9
+-1.03227e+07 92163 18446.2
+-1.03243e+07 84283.1 23526.3
+-1.03283e+07 74597.8 27332.5
+-1.03332e+07 63555.2 28543.2
+-1.03368e+07 51592.2 26362.1
+-1.0337e+07 39130.6 20528.4
+-1.03319e+07 26570.5 11252.8
+-1.03197e+07 14284.3 -890.606
+-1.02992e+07 2609.06 -15091.7
+-1.02699e+07 -8159.92 -30426.3
+-1.02318e+07 -17775.1 -45958.8
+-1.01852e+07 -26041.5 -60820
+-1.0131e+07 -32819.2 -74258.4
+-1.00706e+07 -38024.5 -85670.1
+-1.00055e+07 -41628.9 -94612.3
+-9.93731e+06 -43655.5 -100805
+-9.86775e+06 -44174.3 -104126
+-9.79855e+06 -43296.1 -104593
+-9.73129e+06 -41164.8 -102350
+-9.66742e+06 -37949.5 -97641.4
+-9.60819e+06 -33836.2 -90785
+0 -29019.2 -82149.6
+7.06126e+06 -1047.9 -28572.5
+7.08283e+06 -1933.94 -33237
+7.10638e+06 -2849.87 -37866.6
+7.13182e+06 -3762.57 -42305
+7.15901e+06 -4633.45 -46380.2
+7.18773e+06 -5419.53 -49911.6
+7.21772e+06 -6074.75 -52719.7
+7.24867e+06 -6551.64 -54637
+7.28023e+06 -6803.31 -55519.7
+7.312e+06 -6785.56 -55260.5
+7.34362e+06 -6459.32 -53801.2
+7.37474e+06 -5792.98 -51143.5
+7.40506e+06 -4764.84 -47357.7
+7.43438e+06 -3365.31 -42585.5
+7.46259e+06 -1598.95 -37036
+7.48972e+06 513.899 -30971.2
+7.51591e+06 2935.73 -24678.9
+7.5414e+06 5610.94 -18434.1
+7.56647e+06 8465.17 -12450.3
+7.59134e+06 11404.9 -6826.05
+7.61606e+06 14317.4 -1495.14
+7.64036e+06 17070.3 3808.77
+7.66352e+06 19511.4 9561.05
+7.68416e+06 21467.5 16418.8
+7.7002e+06 22742 25153.4
+7.70875e+06 23109.3 36548.7
+7.70605e+06 22303.9 51286.5
+7.6875e+06 20001.9 69853.4
+7.64755e+06 15788.4 92506.7
+7.57959e+06 9111.14 119323
+7.47555e+06 -786.091 150311
+7.32537e+06 -14947 185493
+7.1163e+06 -34800 224821
+6.83223e+06 -62235.7 267723
+6.45348e+06 -99533.9 312241
+5.95824e+06 -148764 353932
+5.32747e+06 -209944 385243
+4.55635e+06 -277417 396467
+3.6728e+06 -335844 379169
+2.75368e+06 -361516 331496
+1.91388e+06 -336290 262226
+1.24882e+06 -268778 188955
+778686 -190992 126967
+469732 -125887 81989.8
+275925 -79023.3 51944.2
+158494 -47779.5 32521
+89332.7 -27991.5 20108.5
+49547.3 -15969 12246.4
+27104.4 -8912.06 7333.09
+14643.5 -4887.42 4317.85
+7808.05 -2645.34 2503.83
+4091.15 -1418.61 1433.21
+2081.65 -756.361 812.141
+997.94 -402.352 457.118
+412.744 -214.374 256.613
+94.7716 -114.968 144.513
+-80.6196 -62.5939 82.4613
+-180.681 -35.2249 48.6444
+-242.193 -21.3378 30.9438
+-286.374 -15.1151 22.9216
+-327.456 -13.9663 21.6036
+-378.372 -17.415 26.4348
+-455.968 -26.9038 39.0928
+-587.816 -46.4238 64.1081
+-823.558 -84.2623 110.498
+-1255.34 -156.579 194.929
+-2055.25 -294.227 347.318
+-3544.34 -555.532 620.371
+-6318.3 -1049.6 1105.23
+-11471.2 -1977.45 1956.29
+-20986.4 -3702.67 3428.9
+-38402.3 -6867.82 5934.94
+-69899.3 -12572.6 10123.5
+-125989 -22624.1 17001.3
+-224023 -39859 28132.8
+-391663 -68495 46005.8
+-671003 -114338 74623.2
+-1.12196e+06 -184412 120087
+-1.81838e+06 -283898 189837
+-2.81678e+06 -404773 287460
+-4.08638e+06 -509702 402944
+-5.47324e+06 -546273 509929
+-6.79415e+06 -502036 578711
+-7.93079e+06 -408523 595452
+-8.84475e+06 -304583 565030
+-9.54883e+06 -213630 503512
+-1.00763e+07 -142792 428522
+-1.0463e+07 -90467.5 353130
+-1.07401e+07 -52506 284307
+-1.09324e+07 -25003.1 224282
+-1.10589e+07 -4995.23 172765
+-1.11341e+07 9611.02 128798
+-1.11693e+07 20250.5 91775.5
+-1.11741e+07 27885.7 61700
+-1.11567e+07 33152.6 38904.8
+-1.11247e+07 36474.2 23588.2
+-1.10846e+07 38145.4 15420.2
+-1.1042e+07 38390.2 13372.2
+-1.10011e+07 37398.5 15790.6
+-1.09646e+07 35346 20643.9
+-1.09338e+07 32404.1 25842.5
+-1.09087e+07 28743.7 29536.7
+-1.08882e+07 24535.3 30333.4
+-1.08706e+07 19947.9 27406.5
+-1.0854e+07 15146.4 20506.1
+-1.08363e+07 10288.8 9889.02
+-1.08156e+07 5523.04 -3799.39
+-1.07906e+07 983.67 -19662.6
+-1.07602e+07 -3210.96 -36684.8
+-1.07242e+07 -6961.36 -53842.3
+-1.06823e+07 -10188.9 -70186.6
+-1.06352e+07 -12837 -84899.9
+-1.05834e+07 -14871.6 -97327.2
+-1.05281e+07 -16280.4 -106990
+-1.04704e+07 -17072.1 -113590
+-1.04115e+07 -17273.9 -116998
+-1.03528e+07 -16929 -117241
+-1.02955e+07 -16093.9 -114485
+-1.02407e+07 -14835 -109001
+-1.01894e+07 -13225.4 -101146
+0 -11341.2 -91329.4
+7.17794e+06 1047.9 -29449.4
+7.19936e+06 1933.94 -34302.5
+7.22246e+06 2849.87 -39123.1
+7.24717e+06 3762.57 -43749.3
+7.27334e+06 4633.45 -48002.2
+7.3008e+06 5419.53 -51694.3
+7.32933e+06 6074.75 -54638.5
+7.35868e+06 6551.64 -56660.2
+7.38856e+06 6803.31 -57608.6
+7.41869e+06 6785.56 -57370.8
+7.44881e+06 6459.32 -55884
+7.47867e+06 5792.98 -53147.5
+7.50811e+06 4764.84 -49231.4
+7.53704e+06 3365.31 -44280.4
+7.56548e+06 1598.95 -38509.1
+7.59358e+06 -513.898 -32187.8
+7.62159e+06 -2935.73 -25615
+7.64981e+06 -5610.94 -19078
+7.67857e+06 -8465.17 -12803
+7.70813e+06 -11404.9 -6900
+7.73849e+06 -14317.4 -1311.8
+7.76934e+06 -17070.3 4222.75
+7.79979e+06 -19511.4 10178.8
+7.82832e+06 -21467.5 17218.9
+7.85257e+06 -22742 26125
+7.86934e+06 -23109.3 37697.2
+7.87448e+06 -22303.9 52638.3
+7.86291e+06 -20001.8 71461.2
+7.82851e+06 -15788.4 94456.7
+7.76394e+06 -9111.14 121746
+7.66024e+06 786.093 153395
+7.50624e+06 14947 189502
+7.28789e+06 34800 230096
+6.98771e+06 62235.7 274669
+6.58498e+06 99533.9 321252
+6.05792e+06 148764 365242
+5.38978e+06 209944 398691
+4.58145e+06 277417 411274
+3.66949e+06 335844 393949
+2.73797e+06 361516 344730
+1.90057e+06 336290 273018
+1.24281e+06 268778 197289
+778292 190992 133088
+471985 125887 86248.9
+278761 79023.3 54776.9
+160926 47779.5 34341.8
+91089 27991.5 21246.8
+50695.9 15969 12941.1
+27808.8 8912.06 7748.37
+15055.7 4887.42 4561.68
+8040.39 2645.34 2644.83
+4217.41 1418.61 1513.76
+2146.86 756.361 857.732
+1028.56 402.352 482.772
+423.947 214.374 271.023
+95.0604 114.968 152.638
+-86.5494 62.5939 87.1062
+-190.263 35.2249 51.39
+-254.089 21.3378 32.6931
+-299.981 15.1151 24.2173
+-342.674 13.9663 22.822
+-395.569 17.415 27.9209
+-476.098 26.9038 41.2841
+-612.781 46.4238 67.6936
+-856.895 84.2623 116.667
+-1303.47 156.579 205.795
+-2129.82 294.227 366.655
+-3666.18 555.532 654.885
+-6523.84 1049.6 1166.71
+-11822.8 1977.45 2065.18
+-21586.6 3702.67 3620.02
+-39408.7 6867.82 6266.39
+-71527.2 12572.6 10689.9
+-128476 22624.1 17952.5
+-227487 39859 29699.8
+-395775 68495 48530.3
+-674490 114338 78588.5
+-1.12213e+06 184412 126122
+-1.81135e+06 283898 198626
+-2.80064e+06 404773 299598
+-4.06923e+06 509702 418893
+-5.47802e+06 546273 529715
+-6.84452e+06 502036 600830
+-8.03853e+06 408523 617347
+-9.00866e+06 304583 584423
+-9.7599e+06 213630 519208
+-1.0323e+07 142792 440389
+-1.07342e+07 90467.5 361688
+-1.10264e+07 52506 290312
+-1.12264e+07 25003.1 228463
+-1.13548e+07 4995.23 175707
+-1.14273e+07 -9611.02 130919
+-1.14564e+07 -20250.5 93361.5
+-1.14522e+07 -27885.7 62943.3
+-1.14237e+07 -33152.6 39942.2
+-1.13789e+07 -36474.2 24522.6
+-1.13251e+07 -38145.4 16327.1
+-1.12684e+07 -38390.2 14298.1
+-1.12134e+07 -37398.5 16747.9
+-1.11633e+07 -35346 21608.6
+-1.11197e+07 -32404.1 26756.6
+-1.1083e+07 -28743.7 30315.1
+-1.10524e+07 -24535.3 30874.6
+-1.10263e+07 -19947.9 27605
+-1.10027e+07 -15146.4 20264.8
+-1.09798e+07 -10288.8 9129.15
+-1.09556e+07 -5523.04 -5131.13
+-1.09288e+07 -983.671 -21590
+-1.08981e+07 3210.96 -39201.3
+-1.0863e+07 6961.36 -56912.9
+-1.08233e+07 10188.9 -73751.2
+-1.07792e+07 12837 -88878.2
+-1.07313e+07 14871.6 -101624
+-1.06804e+07 16280.4 -111500
+-1.06273e+07 17072.1 -118202
+-1.05733e+07 17273.9 -121602
+-1.05193e+07 16929 -121732
+-1.04665e+07 16093.9 -118765
+-1.04158e+07 14835 -112983
+-1.03681e+07 13225.4 -104756
+0 11341.2 -94507.7
+7.06126e+06 2651.65 -28572.5
+7.08283e+06 4919.05 -33237
+7.10638e+06 7262.84 -37866.6
+7.13182e+06 9598.36 -42305
+7.15901e+06 11826.9 -46380.2
+7.18773e+06 13838.5 -49911.6
+7.21772e+06 15515.1 -52719.7
+7.24867e+06 16735 -54637
+7.28023e+06 17377.5 -55519.7
+7.312e+06 17328.7 -55260.5
+7.34362e+06 16487.3 -53801.2
+7.37474e+06 14770.7 -51143.5
+7.40506e+06 12121.2 -47357.7
+7.43438e+06 8511.49 -42585.5
+7.46259e+06 3950.18 -37036
+7.48972e+06 -1513.83 -30971.2
+7.51591e+06 -7787.61 -24678.9
+7.5414e+06 -14731.2 -18434.1
+7.56647e+06 -22155.5 -12450.3
+7.59134e+06 -29820.4 -6826.05
+7.61606e+06 -37433.3 -1495.14
+7.64036e+06 -44647.8 3808.77
+7.66352e+06 -51061.1 9561.04
+7.68416e+06 -56209.8 16418.8
+7.7002e+06 -59561.6 25153.4
+7.70875e+06 -60498.9 36548.7
+7.70605e+06 -58288.7 51286.5
+7.6875e+06 -52029.5 69853.4
+7.64755e+06 -40565.3 92506.7
+7.57959e+06 -22353.2 119323
+7.47555e+06 4726.53 150311
+7.32537e+06 43630 185493
+7.1163e+06 98482.6 224821
+6.83223e+06 174917 267723
+6.45348e+06 280065 312241
+5.95824e+06 421097 353932
+5.32747e+06 600119 385243
+4.55635e+06 803285 396467
+3.6728e+06 987273 379169
+2.75368e+06 1.07949e+06 331496
+1.91388e+06 1.01732e+06 262226
+1.24882e+06 818289 188955
+778686 581955 126967
+469732 382636 81989.8
+275925 239211 51944.2
+158494 143947 32521
+89332.7 83940.4 20108.5
+49547.3 47696.2 12246.4
+27104.4 26531.9 7333.09
+14643.5 14512.5 4317.85
+7808.05 7839.27 2503.83
+4091.15 4197.58 1433.21
+2081.65 2235.29 812.141
+997.94 1187.89 457.118
+412.744 632.419 256.613
+94.7716 338.924 144.513
+-80.6196 184.396 82.4613
+-180.681 103.705 48.6444
+-242.193 62.7762 30.9438
+-286.374 44.4348 22.9216
+-327.456 41.0407 21.6036
+-378.372 51.1853 26.4348
+-455.968 79.1261 39.0928
+-587.816 136.633 64.1081
+-823.558 248.174 110.498
+-1255.34 461.525 194.929
+-2055.25 867.904 347.318
+-3544.34 1640.02 620.371
+-6318.3 3101.71 1105.23
+-11471.2 5850.68 1956.29
+-20986.4 10971.3 3428.9
+-38402.3 20389.7 5934.94
+-69899.3 37421.4 10123.5
+-125989 67552.1 17001.3
+-224023 119476 28132.8
+-391663 206228 46005.8
+-671003 345797 74623.2
+-1.12196e+06 559827 120087
+-1.81838e+06 863702 189837
+-2.81678e+06 1.23019e+06 287460
+-4.08638e+06 1.53903e+06 402944
+-5.47324e+06 1.62778e+06 509929
+-6.79415e+06 1.47259e+06 578711
+-7.93079e+06 1.18027e+06 595452
+-8.84475e+06 868555 565030
+-9.54883e+06 602916 503512
+-1.00763e+07 400013 428522
+-1.0463e+07 252333 353130
+-1.07401e+07 146375 284307
+-1.09324e+07 70255.8 224282
+-1.10589e+07 15276.7 172765
+-1.11341e+07 -24563.7 128798
+-1.11693e+07 -53328.6 91775.5
+-1.11741e+07 -73741.1 61700
+-1.11567e+07 -87618 38904.8
+-1.11247e+07 -96187.1 23588.2
+-1.10846e+07 -100315 15420.2
+-1.1042e+07 -100663 13372.2
+-1.10011e+07 -97779.8 15790.6
+-1.09646e+07 -92163 20643.9
+-1.09338e+07 -84283.1 25842.5
+-1.09087e+07 -74597.8 29536.7
+-1.08882e+07 -63555.2 30333.4
+-1.08706e+07 -51592.2 27406.5
+-1.0854e+07 -39130.6 20506.1
+-1.08363e+07 -26570.5 9889.02
+-1.08156e+07 -14284.3 -3799.39
+-1.07906e+07 -2609.06 -19662.6
+-1.07602e+07 8159.92 -36684.8
+-1.07242e+07 17775.1 -53842.3
+-1.06823e+07 26041.5 -70186.6
+-1.06352e+07 32819.2 -84899.9
+-1.05834e+07 38024.5 -97327.2
+-1.05281e+07 41628.9 -106990
+-1.04704e+07 43655.5 -113590
+-1.04115e+07 44174.3 -116998
+-1.03528e+07 43296.1 -117241
+-1.02955e+07 41164.8 -114485
+-1.02407e+07 37949.5 -109001
+-1.01894e+07 33836.2 -101146
+0 29019.2 -91329.4
+6.6641e+06 3049.56 -25988.9
+6.6857e+06 5734.21 -30127.9
+6.70994e+06 8508.77 -34228.9
+6.73675e+06 11273.2 -38152.5
+6.76595e+06 13910.6 -41745.1
+6.79727e+06 16290.7 -44846.4
+6.83034e+06 18273.2 -47297.2
+6.86471e+06 19713.3 -48949.7
+6.89985e+06 20466.7 -49678.1
+6.93514e+06 20396.6 -49389.9
+6.96997e+06 19380 -48037
+7.00371e+06 17315.1 -45625.6
+7.03576e+06 14128.5 -42223.3
+7.0656e+06 9781.71 -37961.6
+7.09281e+06 4277.8 -33031.3
+7.11714e+06 -2332.81 -27668.4
+7.13845e+06 -9947.27 -22129.6
+7.15676e+06 -18405.8 -16655.7
+7.1722e+06 -27487.5 -11426.9
+7.18491e+06 -36906.9 -6513.87
+7.19499e+06 -46309.5 -1832.57
+7.20234e+06 -55267.4 2887.07
+7.20656e+06 -63273.1 8107.16
+7.20679e+06 -69729.7 14453.5
+7.20164e+06 -73935.3 22649.1
+7.18911e+06 -75055.8 33415.2
+7.1666e+06 -72079 47360.3
+7.13089e+06 -63738.2 64888.3
+7.07815e+06 -48388.4 86163.3
+7.00382e+06 -23814.8 111152
+6.90238e+06 13058.6 139727
+6.76691e+06 66609.8 171747
+6.58832e+06 143167 206990
+6.35445e+06 251856 244771
+6.04891e+06 405220 283206
+5.65033e+06 617983 318340
+5.13368e+06 900157 343729
+4.47764e+06 1.23943e+06 351383
+3.68339e+06 1.57407e+06 334569
+2.80363e+06 1.78006e+06 291795
+1.95523e+06 1.7249e+06 229969
+1.26612e+06 1.40557e+06 164033
+778313 1.00051e+06 108650
+461648 653936 69269.4
+266608 405191 43520
+150801 241445 27133.8
+83906.4 139489 16759.1
+46053.6 78640.6 10213
+24984 43471.9 6123.37
+13411.7 23659.1 3610.63
+7117.13 12730.8 2096.47
+3716.54 6797.18 1201.32
+1888.13 3610.95 681.3
+906.629 1915.16 383.704
+378.518 1018.13 215.485
+92.5298 544.883 121.379
+-64.6849 296.035 69.2682
+-154.122 166.306 40.8639
+-208.936 100.547 25.9978
+-248.182 71.0679 19.2644
+-284.622 65.5917 18.1657
+-329.835 81.8344 22.2367
+-398.946 126.665 32.8888
+-516.743 218.995 53.9325
+-728.029 398.278 92.9482
+-1116.45 741.815 163.937
+-1838.6 1397.01 292.019
+-3187.98 2643.85 521.388
+-5713.55 5010.22 928.358
+-10430.8 9472.98 1641.98
+-19197.7 17814.2 2875.17
+-35379 33232.7 4970.63
+-64956.6 61292.7 8468.35
+-118320 111322 14207.6
+-213102 198395 23506.2
+-378249 345539 38512.3
+-658793 584802 62798.2
+-1.11949e+06 954606 102029
+-1.83888e+06 1.48065e+06 163514
+-2.86798e+06 2.10621e+06 251190
+-4.1432e+06 2.60035e+06 355354
+-5.46219e+06 2.67391e+06 450678
+-6.64212e+06 2.33866e+06 512060
+-7.60373e+06 1.81411e+06 528820
+-8.34841e+06 1.29764e+06 505076
+-8.91138e+06 880595 453860
+-9.33249e+06 574708 389829
+-9.64546e+06 358927 324219
+-9.87617e+06 207784 263289
+-1.00439e+07 101245 209262
+-1.01628e+07 25558.2 162161
+-1.02436e+07 -28370.1 121401
+-1.02949e+07 -66560.1 86687
+-1.03235e+07 -93033.3 58228.5
+-1.03359e+07 -110504 36487
+-1.03377e+07 -120841 21750.6
+-1.03339e+07 -125377 13777.6
+-1.03284e+07 -125119 11647
+-1.03241e+07 -120881 13833.9
+-1.03227e+07 -113365 18446.2
+-1.03243e+07 -103202 23526.3
+-1.03283e+07 -90981.3 27332.5
+-1.03332e+07 -77259.3 28543.2
+-1.03368e+07 -62562.5 26362.1
+-1.0337e+07 -47388.2 20528.4
+-1.03319e+07 -32200.7 11252.8
+-1.03197e+07 -17426.4 -890.608
+-1.02992e+07 -3447.67 -15091.7
+-1.02699e+07 9402.78 -30426.3
+-1.02318e+07 20847.7 -45958.8
+-1.01852e+07 30669.9 -60820
+-1.0131e+07 38714.6 -74258.4
+-1.00706e+07 44890.8 -85670.1
+-1.00055e+07 49169.9 -94612.3
+-9.93731e+06 51582.2 -100805
+-9.86775e+06 52211.7 -104126
+-9.79855e+06 51189.2 -104593
+-9.73129e+06 48683.9 -102350
+-9.66742e+06 44894.4 -97641.4
+-9.60819e+06 40039.2 -90785
+0 34346.6 -82149.6
+5.87253e+06 2207.24 -21868.7
+5.89292e+06 4301.01 -25251.7
+5.91651e+06 6463.44 -28602.8
+5.94324e+06 8616.53 -31808.3
+5.97291e+06 10669 -34742.5
+6.0052e+06 12518.7 -37274.1
+6.03968e+06 14055.6 -39273
+6.07577e+06 15165.5 -40618
+6.11278e+06 15734.4 -41206.1
+6.14992e+06 15653.1 -40961.8
+6.18633e+06 14822.1 -39846.3
+6.22112e+06 13157.7 -37865
+6.2534e+06 10596.6 -35074.1
+6.28233e+06 7101.66 -31582
+6.30715e+06 2667.09 -27545
+6.32727e+06 -2676.78 -23155.6
+6.34223e+06 -8858.66 -18621.2
+6.35177e+06 -15761.7 -14133.2
+6.35578e+06 -23218.9 -9829.41
+6.35427e+06 -31007.8 -5752.79
+6.34734e+06 -38845 -1814.56
+6.33506e+06 -46378.7 2230.47
+6.31739e+06 -53178.4 6786.06
+6.29413e+06 -58720.6 12386.5
+6.26483e+06 -62366 19634.9
+6.22878e+06 -63323.8 29114.5
+6.18504e+06 -60594.6 41289.9
+6.13246e+06 -52880.4 56427.3
+6.06977e+06 -38442.3 74565.9
+5.99552e+06 -14878 95558.7
+5.90795e+06 21234.5 119166
+5.80471e+06 74926.3 145133
+5.68223e+06 153826 173134
+5.53458e+06 269724 202470
+5.35134e+06 440545 231501
+5.11401e+06 691104 257032
+4.79108e+06 1.04761e+06 274203
+4.33663e+06 1.51627e+06 277439
+3.70508e+06 2.03825e+06 262442
+2.89873e+06 2.442e+06 228233
+2.02994e+06 2.48077e+06 178677
+1.29228e+06 2.06251e+06 124305
+771999 1.46672e+06 79359.7
+443564 947452 48989
+248390 578249 30189.1
+136712 339302 18682.9
+74389.9 193288 11551
+40106.5 107749 7077.56
+21444.8 59045.1 4271.62
+11385.9 31905.5 2535.05
+5993.31 17075.8 1480.5
+3110.36 9082.37 852.465
+1575.28 4808.35 485.358
+758.074 2542.87 274.224
+320.624 1349.51 154.391
+85.062 720.883 87.14
+-43.6054 390.812 49.8118
+-116.547 219.309 29.4305
+-161.061 132.406 18.7547
+-192.757 93.4004 13.9231
+-222.129 86.1315 13.1474
+-258.625 107.501 16.0957
+-314.714 166.699 23.7822
+-410.715 288.601 38.9402
+-583.624 525.577 66.9929
+-903.681 981.199 117.927
+-1502.17 1851.36 209.593
+-2626.66 3510.12 373.221
+-4749.33 6671.44 662.38
+-8752.33 12656.5 1166.97
+-16269.7 23890.5 2033.73
+-30346.9 44807 3496.28
+-56559.5 83221.3 5920.48
+-104900 152444 9874.26
+-193172 274693 16269.2
+-352238 484989 26690.1
+-632227 832960 43991.1
+-1.10788e+06 1.37912e+06 73129.3
+-1.87028e+06 2.16238e+06 121346
+-2.96339e+06 3.07695e+06 193408
+-4.25813e+06 3.72223e+06 279811
+-5.45552e+06 3.64998e+06 355909
+-6.38514e+06 3.01375e+06 404264
+-7.04631e+06 2.20949e+06 419356
+-7.5088e+06 1.50377e+06 404203
+-7.84088e+06 979926 367476
+-8.08882e+06 620281 319638
+-8.28043e+06 379548 269299
+-8.43227e+06 217840 221576
+-8.5547e+06 107734 178476
+-8.65452e+06 31918.4 140230
+-8.73648e+06 -20433.3 106550
+-8.80422e+06 -56259.3 77381.5
+-8.86083e+06 -80135.4 53082.1
+-8.9092e+06 -95149.3 34207.5
+-8.95205e+06 -103428 21145.5
+-8.99178e+06 -106477 13805.9
+-9.03023e+06 -105400 11489.3
+-9.06848e+06 -101046 12950.2
+-9.10673e+06 -94102.2 16602.4
+-9.14431e+06 -85149.1 20782.9
+-9.17982e+06 -74696.1 23998.6
+-9.21137e+06 -63201 25106.8
+-9.23688e+06 -51081.5 23409
+-9.25428e+06 -38720.1 18662.7
+-9.26184e+06 -26466 11028
+-9.25825e+06 -14634.4 976.007
+-9.24277e+06 -3504.8 -10819.8
+-9.21527e+06 6682.17 -23587.4
+-9.1762e+06 15727.3 -36544.1
+-9.12651e+06 23475.5 -48962.3
+-9.06761e+06 29817.4 -60213.2
+-9.00121e+06 34690.4 -69792.1
+-8.92926e+06 38077.2 -77329.4
+-8.85385e+06 40004.4 -82592.2
+-8.77704e+06 40538.5 -85478
+-8.70086e+06 39780.9 -86003.6
+-8.62717e+06 37862.8 -84288.4
+-8.55763e+06 34937.4 -80535.1
+-8.49366e+06 31173.6 -75007.8
+0 26747.8 -68011.4
+4.60639e+06 794.604 -16591.1
+4.62339e+06 1808.36 -19120.2
+4.6435e+06 2852.84 -21639.7
+4.66668e+06 3889.97 -24066.9
+4.69277e+06 4874.93 -26309.3
+4.72148e+06 5757.45 -28269.1
+4.75238e+06 6483.3 -29848
+4.78493e+06 6995.99 -30952.7
+4.81845e+06 7238.79 -31502
+4.85213e+06 7156.86 -31433.3
+4.88509e+06 6699.57 -30709.6
+4.91638e+06 5822.99 -29325.8
+4.94503e+06 4492.34 -27313.5
+4.9701e+06 2684.52 -24742.4
+4.99067e+06 390.677 -21718.4
+5.00596e+06 -2381.3 -18374.6
+5.01532e+06 -5604.1 -14856.5
+5.01827e+06 -9228.15 -11299.6
+5.01448e+06 -13178.4 -7802.18
+5.00382e+06 -17350.5 -4395.3
+4.9863e+06 -21605.6 -1017.03
+4.96204e+06 -25763.9 2503.87
+4.93126e+06 -29594.2 6446.51
+4.89424e+06 -32799.3 11173.3
+4.85134e+06 -34993.3 17080.4
+4.80301e+06 -35665.9 24529.7
+4.74992e+06 -34127.5 33776.1
+4.693e+06 -29423.6 44915.7
+4.63362e+06 -20201.3 57877.8
+4.57361e+06 -4495.11 72473.3
+4.51537e+06 20632.5 88481.8
+4.46176e+06 59736.5 105716
+4.41586e+06 120200 123971
+4.38015e+06 214482 142767
+4.35419e+06 363901 160918
+4.32849e+06 603429 176149
+4.27193e+06 982913 185259
+4.11405e+06 1.55049e+06 185152
+3.7418e+06 2.29242e+06 174113
+3.06008e+06 3.02036e+06 151698
+2.14608e+06 3.31357e+06 117786
+1.31875e+06 2.83263e+06 76821
+747488 2.00069e+06 44016.5
+407095 1.26446e+06 24566.2
+216971 753940 14280.6
+114417 433016 8693.97
+60242.4 242082 5448.3
+31650.2 133097 3431.36
+16555.3 72211.3 2131.14
+8654.92 38676.4 1297.76
+4508.39 20569.9 774.895
+2316.26 10902.4 454.284
+1167.29 5747.17 262.429
+564.15 3028.11 150.052
+241.74 1605.93 85.3037
+69.512 856.073 48.5322
+-23.2792 462.539 27.9375
+-75.9871 259.628 16.6149
+-108.059 156.614 10.6604
+-130.645 110.162 7.96834
+-151.552 101.538 7.55448
+-177.528 126.725 9.23641
+-217.924 197.08 13.5768
+-287.19 341.4 22.0828
+-411.91 621.84 37.7131
+-646.108 1165.05 65.8566
+-1087.21 2202.48 116.016
+-1917.86 4179.55 204.45
+-3509.03 7974.42 358.355
+-6555.27 15190.7 622.067
+-12340.1 28774.3 1064.6
+-23409.1 54309.3 1790.33
+-44626.6 101750 2957.12
+-84948.7 188215 4802.51
+-161673 343804 7732.74
+-307600 618253 12626.6
+-579612 1.08396e+06 21418
+-1.07021e+06 1.83503e+06 38167.2
+-1.90135e+06 2.93708e+06 70355.5
+-3.11595e+06 4.20354e+06 124416
+-4.46375e+06 4.94407e+06 190279
+-5.46392e+06 4.48994e+06 241656
+-6.00518e+06 3.37384e+06 271811
+-6.23267e+06 2.25081e+06 282034
+-6.31269e+06 1.40607e+06 274145
+-6.34557e+06 852140 252101
+-6.37438e+06 509133 221986
+-6.4125e+06 298406 189606
+-6.46171e+06 166583 158677
+-6.52022e+06 82125.8 130667
+-6.58541e+06 27115.1 105658
+-6.65469e+06 -8836.34 83324
+-6.72586e+06 -32038.2 63546.4
+-6.79728e+06 -46504.6 46593.5
+-6.86791e+06 -54873.4 32961.1
+-6.93723e+06 -58914 23076.2
+-7.00501e+06 -59832.5 17032.4
+-7.07104e+06 -58467.4 14462.2
+-7.1349e+06 -55417.3 14565.1
+-7.19582e+06 -51124.5 16254.7
+-7.25262e+06 -45930.1 18357.2
+-7.3038e+06 -40108.4 19802.8
+-7.34769e+06 -33889.5 19767.3
+-7.38259e+06 -27472.1 17748.4
+-7.40702e+06 -21032 13577.4
+-7.4198e+06 -14725.5 7381.33
+-7.4202e+06 -8691.78 -485.716
+-7.40802e+06 -3053.04 -9523.7
+-7.38354e+06 2086.07 -19164.6
+-7.34754e+06 6639.24 -28837.6
+-7.30123e+06 10539.5 -38017.6
+-7.24615e+06 13739.9 -46256.1
+-7.18409e+06 16214.1 -53198.7
+-7.117e+06 17956.2 -58591.8
+-7.0469e+06 18980.1 -62282.2
+-6.97578e+06 19318.1 -64211.7
+-6.90554e+06 19018.9 -64407.4
+-6.83791e+06 18145.5 -62969.2
+-6.77443e+06 16771.5 -60055.2
+-6.71639e+06 14978 -55865.3
+0 12849.9 -50626.3
+2.98517e+06 -290.56 -10847
+2.99671e+06 -126.635 -12538.8
+3.0105e+06 38.8542 -14253.3
+3.02652e+06 198.925 -15939.4
+3.04468e+06 345.244 -17538.6
+3.0648e+06 468.446 -18986.3
+3.0866e+06 558.468 -20215
+3.1097e+06 604.852 -21157.7
+3.13361e+06 597.062 -21751.5
+3.15778e+06 524.796 -21942.3
+3.18154e+06 378.314 -21689.4
+3.20419e+06 148.771 -20970.2
+3.22497e+06 -171.452 -19783.9
+3.24313e+06 -588.402 -18153.8
+3.25792e+06 -1106.21 -16127.4
+3.26865e+06 -1726.69 -13773
+3.27471e+06 -2448.98 -11171.3
+3.2756e+06 -3268.88 -8404.1
+3.27094e+06 -4178.12 -5538.66
+3.26047e+06 -5163.03 -2611.24
+3.2441e+06 -6202.47 386.955
+3.22188e+06 -7264.37 3517.4
+3.19401e+06 -8300.24 6890.93
+3.16087e+06 -9236.39 10650.4
+3.12308e+06 -9960.36 14939.5
+3.08156e+06 -10300.2 19863.4
+3.03767e+06 -9992.73 25452.8
+2.99339e+06 -8635.38 31648.8
+2.95149e+06 -5608.87 38324.1
+2.9158e+06 52.9091 45344
+2.89152e+06 9903.66 52648.3
+2.88569e+06 26573.8 60301.4
+2.90771e+06 54835 68435.6
+2.96996e+06 103970 77029.5
+3.08718e+06 192856 85558.6
+3.27111e+06 359703 92756
+3.5122e+06 676270 96922.1
+3.73837e+06 1.25429e+06 96986.1
+3.76159e+06 2.19768e+06 93254.9
+3.30418e+06 3.41039e+06 85323.5
+2.29691e+06 4.26537e+06 67924.7
+1.31179e+06 3.7786e+06 37457.1
+674400 2.61348e+06 13739.2
+336342 1.58788e+06 3464.89
+165929 915820 605.692
+81875.1 512138 124.113
+41329.9 279760 206.764
+21047.3 151701 295.213
+10643.7 81636.4 284.258
+5478.26 43276.8 225.849
+2840.93 22883.6 161.744
+1430.82 12128.8 107.348
+716.597 6358.17 67.6638
+353.544 3333.45 41.4064
+152.054 1775.16 24.8184
+46.1339 943.928 14.6969
+-7.97771 506.41 8.75581
+-40.2219 285.853 5.3809
+-59.9573 172.533 3.56523
+-73.2672 120.644 2.74877
+-85.7324 111.324 2.65022
+-100.959 138.659 3.21171
+-125.881 217.107 4.60486
+-167.998 375.457 7.25777
+-240.844 680.754 11.952
+-385.345 1284.83 20.0723
+-659.949 2432.82 33.8189
+-1159.8 4600.02 56.2718
+-2152.06 8824.27 91.7805
+-4109.03 16893.3 145.5
+-7782.92 31998.2 219.091
+-15030.4 60767.6 306.224
+-29651.3 114995 389.315
+-58213.2 214399 420.802
+-115624 397111 367.306
+-235141 730608 510.042
+-478297 1.31449e+06 1942.86
+-963457 2.29811e+06 7879.49
+-1.8847e+06 3.82054e+06 26718.5
+-3.31685e+06 5.57462e+06 67615.4
+-4.78476e+06 6.32471e+06 117402
+-5.44569e+06 5.04493e+06 142226
+-5.40816e+06 3.22516e+06 149689
+-5.08182e+06 1.81815e+06 149802
+-4.73771e+06 965818 143847
+-4.47561e+06 506096 131870
+-4.30625e+06 267810 116243
+-4.21213e+06 142688 100180
+-4.17305e+06 74159.5 85826.6
+-4.17281e+06 34877.2 73770.5
+-4.19936e+06 11683.2 63571.7
+-4.24381e+06 -2075.45 54514.5
+-4.29952e+06 -10037.3 46125.7
+-4.3616e+06 -14351.4 38348.5
+-4.42651e+06 -16359.2 31448.7
+-4.49184e+06 -16922.2 25790.6
+-4.55589e+06 -16598.2 21617.6
+-4.61745e+06 -15745.1 18920.2
+-4.67556e+06 -14588.1 17415.9
+-4.72929e+06 -13265.6 16619.2
+-4.77768e+06 -11860.7 15957.9
+-4.81973e+06 -10423.4 14892.1
+-4.85445e+06 -8984.84 13006.5
+-4.88094e+06 -7566.82 10062.5
+-4.89849e+06 -6187.1 6008.62
+-4.90663e+06 -4861.97 959.117
+-4.90521e+06 -3607.11 -4847.51
+-4.8944e+06 -2437.61 -11097.8
+-4.87468e+06 -1367.48 -17450.5
+-4.84684e+06 -409.064 -23574.8
+-4.81191e+06 427.48 -29177.6
+-4.7711e+06 1134.54 -34019.8
+-4.72576e+06 1707.36 -37923.5
+-4.67731e+06 2144.2 -40773.5
+-4.62716e+06 2446.42 -42514.1
+-4.5767e+06 2618.46 -43144.2
+-4.52723e+06 2667.71 -42709.9
+-4.4799e+06 2604.11 -41295.9
+-4.43574e+06 2439.74 -39016.7
+-4.39559e+06 2188.01 -36006.3
+0 1862.87 -32409.6
+1.42055e+06 -633.609 -5638.48
+1.42627e+06 -741.02 -6589.14
+1.43303e+06 -855.306 -7582.74
+1.44086e+06 -973.711 -8595.45
+1.44975e+06 -1092.97 -9597.58
+1.45962e+06 -1209.3 -10554.1
+1.47038e+06 -1318.51 -11425.5
+1.48188e+06 -1416.05 -12169.3
+1.49391e+06 -1497.18 -12741.4
+1.50623e+06 -1557.13 -13098.7
+1.51854e+06 -1591.23 -13201.7
+1.5305e+06 -1595.12 -13017.3
+1.54174e+06 -1564.94 -12521.8
+1.55188e+06 -1497.48 -11703.4
+1.56052e+06 -1390.49 -10564.2
+1.56727e+06 -1242.99 -9120.46
+1.57175e+06 -1055.63 -7401.02
+1.57365e+06 -831.244 -5443.94
+1.57266e+06 -575.294 -3291.59
+1.56856e+06 -296.291 -985.194
+1.5612e+06 -5.91516 1439.55
+1.5505e+06 281.354 3953.89
+1.53649e+06 549.328 6532.66
+1.51933e+06 782.069 9145.49
+1.49936e+06 966.682 11743.8
+1.47717e+06 1096.6 14247.6
+1.45368e+06 1174.69 16541
+1.43033e+06 1215.39 18484.1
+1.40921e+06 1245.59 19951.1
+1.39336e+06 1307.15 20892
+1.38724e+06 1474.37 21400.4
+1.39755e+06 1936.01 21751.4
+1.43481e+06 3315.23 22360.3
+1.51626e+06 7796.94 23628.7
+1.67024e+06 22768.5 25723.2
+1.93972e+06 71395.1 28488.7
+2.37371e+06 219017 31850.1
+2.97458e+06 623885 36769.3
+3.55357e+06 1.58233e+06 45319
+3.55153e+06 3.37336e+06 56231.3
+2.38069e+06 5.40379e+06 56052.9
+1.15963e+06 4.97738e+06 27817.4
+487965 3.27156e+06 3239.31
+210885 1.857e+06 -4908.74
+92269.5 1.02997e+06 -5015.59
+40488.6 561568 -3611.08
+20135.8 298879 -2234.49
+10171.6 160986 -1227.66
+4722.66 86708.4 -647.87
+2480.76 45312.7 -338.073
+1365.79 23883.6 -169.329
+624.94 12805.2 -83.6575
+311.272 6636.84 -42.2992
+178.175 3447.32 -20.8146
+70.1956 1872.3 -9.98
+18.9328 989.26 -5.09292
+1.92475 520.159 -2.63218
+-14.8035 300.662 -1.29772
+-25.246 181.776 -0.69407
+-30.4134 124.939 -0.412744
+-36.1604 116.237 -0.318207
+-41.7674 143.238 -0.451374
+-55.3197 229.086 -0.800518
+-76.4036 393.917 -1.59437
+-99.7052 699.53 -3.3998
+-171.401 1348.26 -6.7686
+-314.792 2561.11 -13.5549
+-496.408 4754.76 -28.6895
+-941.969 9220.74 -58.7361
+-1958.95 17819.7 -116.749
+-3485.98 33363.1 -237.135
+-6659.3 63648.7 -473.304
+-14295.2 122094 -903.282
+-28156.7 227285 -1701.28
+-56951.2 424116 -3052.83
+-130549 800751 -4744.52
+-298946 1.47624e+06 -6019.79
+-695089 2.68228e+06 -4071.89
+-1.66132e+06 4.76609e+06 11941.6
+-3.42075e+06 7.29962e+06 54844.3
+-5.10644e+06 7.95951e+06 101199
+-5.10254e+06 4.97911e+06 98114.6
+-4.26566e+06 2.33098e+06 76181
+-3.40479e+06 911911 58572.4
+-2.78795e+06 315138 47277.8
+-2.40715e+06 100127 38882.6
+-2.18962e+06 30801.5 32099.5
+-2.0735e+06 10134.7 27373.7
+-2.01907e+06 4189.54 25096.8
+-2.00276e+06 2418.86 24902.5
+-2.01042e+06 1843.93 25871.9
+-2.03307e+06 1681.47 27001.5
+-2.06468e+06 1716.49 27557.1
+-2.10101e+06 1856.75 27209.4
+-2.13911e+06 2028.84 25985.7
+-2.17692e+06 2165.77 24123.2
+-2.21309e+06 2214.63 21908
+-2.24669e+06 2143.75 19559.3
+-2.27711e+06 1944.49 17178.4
+-2.30389e+06 1627.72 14755.5
+-2.32668e+06 1217.6 12211.7
+-2.34517e+06 744.541 9450.98
+-2.35912e+06 239.449 6404.07
+-2.36833e+06 -270.234 3055.43
+-2.37273e+06 -762.45 -549.232
+-2.37235e+06 -1220.85 -4310.85
+-2.36735e+06 -1634.12 -8094.51
+-2.358e+06 -1994.82 -11750.4
+-2.34473e+06 -2298.25 -15133.4
+-2.32804e+06 -2541.64 -18117.5
+-2.3085e+06 -2723.59 -20605.4
+-2.28675e+06 -2843.91 -22531.4
+-2.26344e+06 -2903.63 -23861.7
+-2.23922e+06 -2905.01 -24590.6
+-2.21472e+06 -2851.6 -24737.5
+-2.19054e+06 -2748.16 -24341.4
+-2.16719e+06 -2600.51 -23456.9
+-2.14515e+06 -2415.4 -22149.5
+-2.1248e+06 -2200.24 -20491
+-2.10645e+06 -1962.99 -18555.5
+0 -1711.92 -16416
+89942 -37.1448 -988.903
+90135.4 -43.1067 -1163.92
+90359.3 -49.4307 -1350.41
+90615.3 -55.9606 -1544.31
+90904 -62.5137 -1740.48
+91225 -68.8816 -1932.66
+91576.7 -74.8328 -2113.63
+91955.6 -80.1193 -2275.35
+92356.5 -84.484 -2409.17
+92772.1 -87.6701 -2506.19
+93193 -89.4307 -2557.57
+93607.9 -89.5389 -2555.02
+94003.8 -87.7978 -2491.22
+94366.6 -84.0519 -2360.38
+94681.4 -78.2007 -2158.67
+94933.5 -70.216 -1884.74
+95108.6 -60.1638 -1540.04
+95193.2 -48.2299 -1129.16
+95174.8 -34.7461 -660.044
+95041.1 -20.2105 -144.047
+94780.2 -5.29069 403.981
+94379.9 9.20175 965.755
+93829 22.3802 1519.67
+93119.3 33.4024 2041.09
+92250.1 41.6378 2502.95
+91234.9 46.8622 2876.91
+90109.4 49.4411 3135.33
+88938.7 50.4739 3254.39
+87823.8 52.014 3218.05
+86904.1 58.2063 3022.33
+86370.6 81.5241 2678.14
+86528 172.902 2209.96
+88044 554.651 1646.73
+92777.7 2163.32 1001.21
+106183 8695.93 235.685
+143204 33642.8 -782.968
+238966 121818 -2332.18
+454559 405102 -4898.87
+824602 1.20656e+06 -9328.06
+1.12642e+06 3.06501e+06 -16964.1
+648952 5.87914e+06 -28222.7
+190685 5.43461e+06 -35736.5
+33347 3.42719e+06 -31588.6
+10576.7 1.87767e+06 -21212.1
+2946.38 1.03589e+06 -12446.6
+-315.802 563786 -7081.09
+630.975 297358 -3939.53
+487.811 160800 -2123.77
+-75.4217 87087.5 -1136.34
+51.0959 45089.3 -605.828
+102.902 23778.8 -317.616
+-9.61393 12888.4 -166.71
+-4.31315 6616.58 -88.346
+19.4536 3415.65 -46.2079
+-0.0897208 1887.35 -24.2051
+-3.84768 990.689 -13.0359
+2.49583 512.639 -7.0836
+-0.212766 302.708 -3.96371
+-1.72733 182.92 -2.42168
+-1.01902 123.982 -1.67927
+-1.40535 116.381 -1.50847
+-0.290186 141.832 -1.92855
+-2.58818 230.891 -3.0135
+-5.44285 395.855 -5.15227
+2.75719 689.686 -9.46992
+-4.149 1351.89 -17.6564
+-27.5726 2578.18 -33.0008
+6.53395 4709.37 -63.4704
+3.8183 9202.01 -122.108
+-145.015 17926.7 -231.44
+-53.0719 33195.2 -442.727
+87.5933 63368.3 -847.05
+-716.865 122633 -1592.19
+-819.684 226917 -2982.35
+420.846 422056 -5537
+-4584.63 804275 -9931.22
+-15645.1 1.48493e+06 -17399.7
+-49846.6 2.71375e+06 -29491
+-284335 4.99889e+06 -43148.2
+-962621 7.97781e+06 -46828.7
+-1.66605e+06 8.66141e+06 -34613.6
+-1.21654e+06 4.5208e+06 -20373
+-668129 1.77449e+06 -11612.4
+-351386 590735 -6577.12
+-212891 174881 -3538.61
+-160505 47134 -1642.66
+-141887 11769.5 -362.827
+-135261 2800.12 659.692
+-132987 683.743 1618.42
+-132626 205.594 2567.47
+-133360 96.0473 3475.24
+-134801 70.5932 4276.08
+-136661 68.8773 4906.01
+-138694 76.5851 5321.2
+-140709 87.716 5503.19
+-142573 97.8567 5455.78
+-144218 103.601 5198.4
+-145620 102.829 4759.16
+-146789 94.7973 4169.62
+-147746 79.9489 3461.67
+-148509 59.5443 2666.23
+-149096 35.2513 1812.98
+-149511 8.79879 930.328
+-149756 -18.2593 45.4943
+-149833 -44.6612 -815.854
+-149742 -69.4611 -1630.12
+-149492 -91.9921 -2376.48
+-149095 -111.803 -3037.55
+-148569 -128.597 -3599.91
+-147938 -142.182 -4054.35
+-147226 -152.448 -4395.96
+-146458 -159.354 -4623.85
+-145660 -162.93 -4740.77
+-144853 -163.281 -4752.65
+-144057 -160.588 -4667.97
+-143288 -155.102 -4497.25
+-142561 -147.14 -4252.47
+-141883 -137.069 -3946.48
+-141264 -125.298 -3592.56
+-140707 -112.268 -3203.85
+0 -98.4411 -2793.07
+5119.83 -2.15179 -59.8076
+5131.42 -2.4792 -69.8673
+5144.76 -2.82548 -80.5456
+5159.93 -3.18189 -91.6086
+5176.94 -3.53833 -102.759
+5195.77 -3.88338 -113.64
+5216.32 -4.20448 -123.838
+5238.37 -4.48823 -132.897
+5261.63 -4.72085 -140.329
+5285.67 -4.88876 -145.63
+5309.94 -4.97905 -148.305
+5333.78 -4.9801 -147.893
+5356.44 -4.88217 -143.988
+5377.08 -4.67796 -136.276
+5394.82 -4.36336 -124.554
+5408.78 -3.93841 -108.762
+5418.06 -3.40839 -89.0018
+5421.84 -2.78523 -65.5511
+5419.29 -2.08886 -38.8761
+5409.6 -1.34818 -9.63514
+5391.96 -0.60107 21.3207
+5365.55 0.107384 52.9512
+5329.57 0.72911 84.0348
+5283.45 1.22027 113.185
+5227.08 1.55121 138.886
+5161.23 1.71784 159.558
+5088.07 1.75304 173.67
+5011.64 1.74102 179.923
+4938.38 1.8707 177.467
+4878.25 2.74508 166.127
+4850.2 7.09497 146.476
+4908.66 28.5954 119.437
+5259.39 134.483 84.8058
+6720.5 640.014 37.4343
+12383.3 2946.09 -40.8618
+32895.6 12935.8 -195.697
+100427 53844.6 -522.002
+293923 210995 -1205.53
+734052 767402 -2681.05
+1.30828e+06 2.50071e+06 -6236.35
+694614 6.52518e+06 -14783.3
+145167 6.01611e+06 -25486.4
+2830.67 3.58921e+06 -25069
+4274.6 1.88571e+06 -16543.1
+570.725 1.04407e+06 -9160.75
+-2223.84 568894 -5138.91
+381.697 295964 -2883.21
+434.733 161370 -1531.64
+-338.148 88186.7 -813.884
+-6.6451 44927.5 -439.373
+120.752 23737.6 -228.517
+-47.834 13102.1 -118.826
+-20.6127 6613.16 -64.2596
+26.4184 3380.67 -33.5963
+-3.98564 1924.02 -17.2201
+-7.41148 997.507 -9.46278
+4.69292 502.372 -5.23889
+0.484285 308.013 -2.89684
+-1.51363 185.633 -1.8026
+0.08926 122.875 -1.24342
+-0.40109 117.316 -1.08352
+1.97281 140.029 -1.4383
+-1.24981 234.999 -2.23809
+-5.59655 401.604 -3.75827
+10.1591 676.381 -7.02026
+2.3299 1364.31 -12.8351
+-33.7878 2622.74 -23.4689
+33.4218 4658.56 -46.0974
+53.6599 9214.53 -88.6977
+-169.013 18211.7 -164.88
+41.5705 33104.3 -318.386
+442.78 63204.1 -613.245
+-669.448 124204 -1138.02
+-422.73 227551 -2148.65
+3137.73 420224 -4048.23
+-1313.51 812062 -7189.53
+-6328.55 1.49649e+06 -12788.2
+-4849.46 2.72637e+06 -23044
+-217445 5.24109e+06 -34177.4
+-1.02765e+06 8.83647e+06 -32368.1
+-1.92668e+06 9.60952e+06 -15492
+-1.07543e+06 3.68474e+06 -5730.78
+-426236 1.12685e+06 -2608.97
+-143438 307074 -1371.84
+-46309.8 77134 -682.691
+-17516.3 18088.7 -295.241
+-9820.8 3981.97 -94.9635
+-7903.46 826.882 11.3472
+-7452.81 164.226 80.6855
+-7378.31 32.7231 137.98
+-7421.47 7.58862 189.853
+-7516.35 2.85507 235.278
+-7637.58 2.19905 271.3
+-7768.86 2.58041 295.49
+-7898.21 3.2885 306.707
+-8017.62 4.00197 305.051
+-8122.83 4.50189 291.525
+-8212.53 4.65028 267.638
+-8287.25 4.3913 235.114
+-8348.34 3.73999 195.708
+-8397.17 2.76108 151.136
+-8434.76 1.54511 103.057
+-8461.68 0.187981 53.0757
+-8478.19 -1.22301 2.74427
+-8484.41 -2.61627 -46.4606
+-8480.6 -3.93753 -93.1701
+-8467.25 -5.1479 -136.166
+-8445.17 -6.22042 -174.423
+-8415.46 -7.1366 -207.141
+-8379.44 -7.88392 -233.76
+-8338.58 -8.45435 -253.968
+-8294.34 -8.84394 -267.685
+-8248.14 -9.05287 -275.041
+-8201.27 -9.08574 -276.353
+-8154.87 -8.95154 -272.087
+-8109.88 -8.66343 -262.829
+-8067.09 -8.23825 -249.251
+-8027.08 -7.69586 -232.083
+-7990.3 -7.05854 -212.076
+-7957.06 -6.35047 -189.985
+0 -5.59721 -166.537
+291.418 -0.107454 -3.62062
+292.114 -0.123058 -4.20085
+292.909 -0.13952 -4.81448
+293.808 -0.156418 -5.44791
+294.812 -0.173266 -6.08398
+295.918 -0.189523 -6.70213
+297.12 -0.204595 -7.27877
+298.406 -0.217855 -7.78783
+299.757 -0.228661 -8.20155
+301.148 -0.236387 -8.49151
+302.548 -0.240447 -8.62984
+303.919 -0.240324 -8.59063
+305.214 -0.2356 -8.35148
+306.386 -0.225979 -7.89512
+307.382 -0.21133 -7.21094
+308.146 -0.191722 -6.29643
+308.626 -0.167479 -5.15834
+308.768 -0.139247 -3.81356
+308.519 -0.108049 -2.28959
+307.826 -0.0753335 -0.624735
+306.634 -0.042958 1.13191
+304.888 -0.0130962 2.92079
+302.534 0.0119883 4.67234
+299.532 0.0303135 6.30807
+295.872 0.0406848 7.74254
+291.599 0.0432817 8.88726
+286.845 0.0403237 9.65733
+281.866 0.0375404 9.98142
+277.115 0.0518658 9.81362
+273.565 0.158005 9.14099
+274.459 0.756816 7.96759
+294.35 4.04477 6.2225
+402.821 21.7318 3.4633
+922.9 114.209 -1.85267
+3272.97 583.891 -13.5199
+13276.8 2909.8 -36.7712
+52953.8 14202.4 -63.075
+196349 68287.9 -3.93279
+642919 325505 453.264
+1.61669e+06 1.54946e+06 1641.14
+777449 7.4412e+06 745.709
+104393 6.76336e+06 -13736
+-19924.2 3.75838e+06 -19091.8
+6073.13 1.88187e+06 -12659.9
+1168.96 1.06015e+06 -6281.14
+-3401.06 579431 -3500.74
+816.019 294881 -2064.71
+717.146 163126 -1063.32
+-559.913 90352.9 -555.023
+4.58701 44822.3 -314.424
+196.945 23782.7 -160.803
+-82.353 13509.1 -80.5539
+-32.0814 6629.06 -46.3925
+43.6074 3338.52 -24.4276
+-7.44405 1993.25 -11.5756
+-11.9439 1011.68 -6.73405
+7.95409 487.523 -3.96689
+0.68393 318.33 -2.06944
+-2.39217 190.63 -1.32939
+0.323058 121.454 -0.915227
+-0.661879 119.488 -0.730216
+3.3619 137.495 -1.07357
+-1.70459 242.478 -1.63015
+-9.33613 413.181 -2.66507
+16.6523 657.194 -5.31695
+5.28736 1388.91 -9.12257
+-55.7623 2708.55 -15.7726
+52.6992 4596.22 -33.4329
+93.8782 9265.42 -63.7516
+-276.141 18759.6 -111.789
+46.0103 33113.9 -224.235
+735.306 63161.5 -437.375
+-1103.72 127299 -773.485
+-960.159 229759 -1492.43
+4834.45 418913 -2899.6
+-2364.21 827852 -4882.99
+-8654.5 1.519e+06 -8778.19
+28858.3 2.72147e+06 -17806.8
+-158854 5.49552e+06 -26152.8
+-1.15082e+06 9.93925e+06 -15938.8
+-2.37847e+06 1.09519e+07 6490.12
+-940715 2.28066e+06 4608.06
+-284174 477265 1325.85
+-75294.8 99207.3 154.165
+-18417 20307.9 -61.7905
+-4420.45 4062.45 -50.4769
+-1241.88 788.449 -21.2451
+-568.582 147.547 -4.98938
+-435.227 26.5385 2.73223
+-412.408 4.60581 7.0988
+-412.563 0.782268 10.3167
+-418.472 0.135076 12.9611
+-426.336 0.0391689 15.0422
+-434.812 0.0502185 16.4607
+-443.122 0.087725 17.1539
+-450.777 0.128699 17.1219
+-457.517 0.16076 16.4158
+-463.264 0.176333 15.1163
+-468.054 0.172093 13.3175
+-471.971 0.148353 11.1164
+-475.105 0.108006 8.60878
+-477.527 0.0553225 5.8879
+-479.28 -0.00508139 3.04511
+-480.389 -0.0689561 0.169389
+-480.87 -0.132787 -2.65382
+-480.744 -0.193886 -5.34475
+-480.044 -0.250298 -7.83196
+-478.823 -0.300643 -10.0548
+-477.147 -0.343948 -11.9656
+-475.093 -0.379529 -13.5303
+-472.747 -0.406918 -14.7293
+-470.194 -0.425855 -15.5563
+-467.517 -0.436287 -16.0174
+-464.79 -0.438379 -16.1294
+-462.079 -0.432522 -15.918
+-459.44 -0.419314 -15.4159
+-456.918 -0.399536 -14.661
+-454.549 -0.37412 -13.6947
+-452.362 -0.344121 -12.5599
+-450.374 -0.31069 -11.2999
+0 -0.275051 -9.95663
+15.0079 0 -0.197107
+15.0455 0 -0.227396
+15.0882 0 -0.259322
+15.1362 0 -0.29217
+15.1896 0 -0.325043
+15.2482 0 -0.35687
+15.3116 0 -0.386428
+15.3793 0 -0.412369
+15.4501 0 -0.433265
+15.5229 0 -0.447658
+15.5958 0 -0.454123
+15.6669 0 -0.451344
+15.7339 0 -0.438192
+15.7939 0 -0.413809
+15.8443 0 -0.377687
+15.882 0 -0.329739
+15.9041 0 -0.27036
+15.9076 0 -0.200469
+15.8894 0 -0.121531
+15.8464 0 -0.0355642
+15.7755 0 0.0548661
+15.6733 0 0.146665
+15.5367 0 0.236239
+15.3633 0 0.31955
+15.1524 0 0.392228
+14.9064 0 0.449772
+14.6326 0 0.4879
+14.3462 0 0.503041
+14.0804 0 0.492828
+13.9424 0 0.455922
+14.4359 0 0.389034
+18.2472 0 0.275109
+39.7327 0 0.0512468
+153.574 0 -0.431416
+737.286 0 -1.16558
+3653.61 0 0.566978
+17927.7 0 25.7155
+86767.6 0 188.858
+415919 0 1008.33
+1.98746e+06 0 4523.69
+949599 8.61086e+06 22354.6
+93953.5 7.74558e+06 6285.63
+-44845.6 3.97106e+06 -10619.4
+9721.37 1.8634e+06 -9088.41
+4123.9 1.08431e+06 -3411.58
+-5403.35 598881 -1732.03
+947.442 293702 -1294.46
+1393.2 165463 -625.87
+-837.128 94087.2 -283.167
+-88.1395 44838.1 -194.625
+344.271 23749.8 -100.081
+-102.589 14174.6 -39.8066
+-68.5368 6705.78 -28.27
+71.3119 3254.78 -16.8768
+-2.82876 2098.75 -5.68932
+-21.0091 1046.18 -3.71343
+12.3083 462.528 -2.9691
+3.54913 332.215 -1.27468
+-4.07608 201.377 -0.760325
+-0.622451 120.088 -0.476516
+-0.649161 121.521 -0.222049
+4.6696 134.59 -0.58816
+-6.43777 257.543 -0.877593
+-14.83 428.214 -1.63556
+27.6257 625.982 -4.00475
+-4.29037 1443.26 -5.00453
+-89.9198 2836.84 -7.78901
+104.292 4479.25 -22.847
+106.819 9417.63 -38.1859
+-473.076 19644.1 -55.6262
+201.884 32997.5 -139.914
+1073.19 63369.8 -267.037
+-2080.54 132581 -390.63
+-999.521 232626 -881.676
+7616.34 417698 -1810.13
+-6880.11 856642 -2365.96
+-13297.9 1.55235e+06 -4763.94
+65775.2 2.69547e+06 -12945.7
+-145629 5.81664e+06 -14136.7
+-1.40573e+06 1.13879e+07 13274.2
+-2.92173e+06 1.26643e+07 37898.1
+-608165 0 7659.65
+-125489 0 1687.01
+-25471 0 313.637
+-5059.25 0 42.6673
+-987.407 0 1.10955
+-199.074 0 -1.85563
+-51.918 0 -0.764803
+-25.6308 0 -0.0410971
+-21.2877 0 0.304453
+-20.8404 0 0.503236
+-21.1211 0 0.647389
+-21.5673 0 0.757267
+-22.0525 0 0.832625
+-22.5271 0 0.871023
+-22.9636 0 0.872346
+-23.3478 0 0.838942
+-23.6757 0 0.774739
+-23.949 0 0.684394
+-24.1728 0 0.572775
+-24.3521 0 0.44473
+-24.4911 0 0.305036
+-24.5926 0 0.158405
+-24.6584 0 0.0094656
+-24.6897 0 -0.137305
+-24.6879 0 -0.277705
+-24.6551 0 -0.407947
+-24.5942 0 -0.524801
+-24.5087 0 -0.625698
+-24.4029 0 -0.708794
+-24.2812 0 -0.772981
+-24.1481 0 -0.817862
+-24.008 0 -0.843683
+-23.8647 0 -0.851254
+-23.7217 0 -0.841857
+-23.5819 0 -0.817153
+-23.4478 0 -0.779079
+-23.3214 0 -0.729764
+-23.2042 0 -0.671431
+-23.0972 0 -0.606321
+0 0 -0.53662
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.21168e+06 5.54028e+06 238455
+1.77011e+06 9.32247e+06 389809
+-676.291 5.82854e+06 221685
+-101252 2.0318e+06 61400.7
+81190.2 943950 25032.8
+5864.09 692528 20803.8
+-20979 329812 9564.45
+10189.6 140371 3667.34
+4886.2 102428 2800.03
+-4131.56 55241.6 1490.09
+905.639 19601.5 498.222
+1658.18 13899.2 385.714
+-601.851 9160.19 251.564
+-24.5175 2799.56 65.8665
+450.674 1699.84 43.2216
+-23.2067 1552.14 40.96
+-29.0783 485.867 11.754
+112.213 198.384 5.66277
+-1.02019 313.383 10.4657
+-53.8617 173.874 11.25
+11.2677 61.1954 10.9359
+-56.6087 204.122 13.3025
+-177.817 378.491 13.6864
+5.75384 254.55 6.56523
+-47.4486 702.199 14.6324
+-631.307 2070.41 55.0114
+69.6093 2237.83 59.7907
+641.81 4071.42 98.1027
+-2402.02 12736.3 351.042
+-907.378 18813 528.275
+5419.33 27894.2 714.203
+-7734.47 78468.8 2126.92
+-13122 142275 3909.3
+30073.4 197987 5201.76
+-12861.3 473694 13951.8
+-115271 985262 30240.3
+152629 1.34521e+06 36517.6
+-16389.1 2.96235e+06 92968.6
+-2.6144e+06 8.53835e+06 338513
+-4.7086e+06 1.36757e+07 597070
+0 8.161e+06 367171
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.60026e+06 0 302910
+3.70177e+06 0 739830
+1.40922e+06 0 648754
+-205714 0 276728
+-84264.3 0 78994
+116673 0 47086.9
+485.716 0 31761.8
+-23566.3 0 12601
+17449.1 0 6501.07
+6751.02 0 4786.04
+-4799.7 0 2020.53
+2357.43 0 816.017
+2733.89 0 703.359
+-496.763 0 338.065
+335.994 0 93.3343
+869.178 0 82.3788
+135.409 0 47.8333
+42.7931 0 16.3568
+117.396 0 37.6326
+-34.599 0 52.6945
+-201.969 0 51.1385
+-385.585 0 64.0353
+-259.906 0 46.9185
+-424.951 0 19.7091
+-1347.95 0 60.8653
+-545.276 0 106.15
+290.252 0 134.353
+-4098.29 0 490.546
+-2949.13 0 973.305
+6084.91 0 1138.5
+-10940 0 2873.02
+-23208.1 0 6671.5
+33817.8 0 9022.99
+-6955.82 0 18090.8
+-166725 0 45711
+129435 0 67215.3
+278328 0 115567
+-2.09001e+06 0 414821
+-5.41963e+06 0 978240
+-3.81137e+06 0 1.12058e+06
+0 0 461239
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.46654e+06 -9.20658e+06 84277.2
+6.52572e+06 -1.56422e+07 297079
+2.56062e+06 -9.74923e+06 316510
+-354961 -3.31768e+06 121459
+-162658 -1.54994e+06 -2466.49
+211450 -1.17574e+06 -645.37
+4832.64 -558846 11220.7
+-43164.5 -235715 2826.14
+31245.5 -176101 -454.295
+12599.9 -95029.2 1394.96
+-8652.08 -33201.5 746.123
+4414.08 -24265.5 -129.032
+5107.59 -16030.1 151.31
+-912.551 -4730.89 192.863
+632.478 -2990.5 -35.0884
+1606.61 -2776.53 -54.3001
+194.844 -833.133 20.3373
+-2.46986 -342.062 67.7126
+135.304 -561.646 87.6149
+-104.948 -306.491 34.9694
+-342.499 -102.023 -10.689
+-623.858 -356.257 20.0325
+-368.255 -679.288 77.887
+-694.601 -436.123 82.7412
+-2493.89 -1195.61 45.6709
+-1063.03 -3692.09 -54.263
+535.814 -3927.32 -42.2498
+-7536.38 -6844.17 259.837
+-5521.66 -22140.3 200.873
+10896.7 -32664.1 -148.072
+-19949.9 -46946.9 1091.93
+-41250 -133887 1922.15
+60894.3 -242617 -566.61
+-17645.6 -329538 4486.81
+-298535 -794329 16456.9
+244779 -1.65399e+06 -990.541
+471936 -2.18036e+06 -1355.01
+-3.75478e+06 -4.77146e+06 188840
+-9.44594e+06 -1.40921e+07 489627
+-6.46931e+06 -2.26467e+07 465050
+0 -1.33825e+07 135417
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.34671e+06 -1.4287e+07 -27808.4
+2.91789e+06 -1.27803e+07 -43252.1
+-48225.8 -6.49508e+06 -66345.6
+-178177 -3.0664e+06 -59931.8
+145127 -1.82188e+06 -26330.3
+9991.33 -1.01261e+06 -7181.19
+-36981.8 -497088 -5219.32
+18274 -283250 -4053.94
+8444.55 -161904 -1566.92
+-7342.44 -77013.9 -738.252
+1796.51 -41226.3 -616.057
+2951.65 -24759.4 -275.532
+-1108.47 -11625.2 -93.2013
+2.66079 -5695.87 -80.2171
+826.608 -3722.02 -49.142
+-54.8001 -1831.97 -22.1244
+-57.5774 -810.072 -8.46466
+190.561 -594.802 10.2856
+-22.0925 -354.859 16.4003
+-108.544 -212.068 3.40487
+26.8104 -220.436 -5.91262
+-79.9506 -236.025 -0.0941672
+-307.47 -453.522 15.5058
+16.3415 -765.155 11.8277
+-65.5369 -1090.12 -8.966
+-1162.23 -2515.56 -24.869
+45.2672 -5010.51 -64.6572
+1205.1 -7795.46 -110.749
+-4231.28 -16224.7 -129.867
+-1897.4 -34095 -377.822
+9583.3 -56877.4 -836.328
+-13187.2 -107974 -1011.65
+-23501 -226183 -2205.64
+52346.3 -394521 -5661.75
+-21489.1 -699473 -7073.72
+-203915 -1.43158e+06 -9745.45
+264895 -2.57495e+06 -37703.1
+42899.3 -4.37085e+06 -85641.2
+-4.25183e+06 -9.36929e+06 -89598.3
+-7.73605e+06 -1.85153e+07 -50074.5
+0 -2.07184e+07 -32974.1
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+24.0437 0.195786 -0.446931
+24.1041 0.217454 -0.505245
+24.171 0.24001 -0.566265
+24.2446 0.262887 -0.628641
+24.3248 0.285447 -0.690691
+24.4114 0.306981 -0.750416
+24.5038 0.32672 -0.80554
+24.6011 0.343856 -0.853568
+24.7022 0.357573 -0.891863
+24.8052 0.367085 -0.917747
+24.908 0.371675 -0.928625
+25.008 0.37073 -0.922118
+25.1023 0.363785 -0.896213
+25.1873 0.350558 -0.849414
+25.2595 0.330995 -0.780892
+25.3151 0.305324 -0.690605
+25.35 0.274118 -0.579407
+25.3603 0.238369 -0.449106
+25.3417 0.199556 -0.3025
+25.2898 0.159685 -0.143372
+25.1999 0.121259 0.0235362
+25.0668 0.0871307 0.192574
+24.8856 0.060183 0.357249
+24.652 0.0428137 0.510336
+24.364 0.03623 0.644084
+24.0235 0.0396171 0.750585
+23.6399 0.0491483 0.822415
+23.2336 0.0556877 0.853593
+22.853 0.0326765 0.840749
+22.6626 -0.137692 0.78403
+23.46 -1.09456 0.686248
+29.5674 -6.37861 0.546263
+64.3365 -35.0524 0.334595
+250.266 -186.27 -0.0913478
+1210.6 -960.168 -1.32802
+6034.6 -4817.35 -6.09388
+29729.5 -23640.8 -28.3348
+144193 -114131 -143.586
+691429 -545466 -762.754
+3.30013e+06 -2.60003e+06 -4143.93
+1.54972e+06 -1.249e+07 -24228.7
+130014 -1.13245e+07 -29861.6
+-79298.2 -6.27614e+06 -20251
+19325.6 -3.1665e+06 -7608.29
+6923.63 -1.81068e+06 -2208.57
+-9716.8 -996065 -1639.49
+1869.95 -508781 -1187.89
+2420.76 -283923 -503.559
+-1537.98 -157983 -246.338
+-107.586 -78469 -169.867
+615.561 -41972.7 -76.8404
+-203.768 -23948.6 -31.2865
+-114.247 -11720.3 -22.6804
+133.321 -5949.25 -11.0671
+-9.98622 -3580.91 -3.48504
+-37.71 -1805.3 -2.66633
+23.5873 -873.008 -1.32975
+5.08847 -577.385 -0.194039
+-7.63873 -342.475 -0.415229
+-0.651592 -218.994 -0.534722
+-1.91266 -218.939 -0.457041
+8.98986 -246.786 -0.727953
+-9.97563 -434.88 -0.554528
+-28.9707 -747.562 -0.23221
+49.7315 -1170.92 -1.90597
+-0.421404 -2466.74 -3.67019
+-169.289 -4844.82 -4.61772
+173.495 -8145.88 -15.2255
+221.486 -16279.5 -31.5011
+-841.528 -33043.9 -43.8041
+280.999 -58032.2 -107.659
+1973.54 -109697 -236.492
+-3576.41 -220678 -345.949
+-2063.08 -396193 -723.256
+13577.4 -715224 -1699.66
+-11401.5 -1.40667e+06 -2303.63
+-26474.2 -2.5615e+06 -3143.66
+115147 -4.51416e+06 -11256.2
+-198947 -9.03948e+06 -29853.2
+-2.26093e+06 -1.63968e+07 -43254.2
+-4.78587e+06 -1.81211e+07 -34488.6
+-997915 -3.77445e+06 -5850.28
+-205931 -789233 -1063.91
+-41718.8 -163699 -199.39
+-8252.04 -33384.1 -40.0003
+-1599.86 -6642.02 -9.05158
+-319.731 -1279.75 -2.22975
+-82.9055 -237.189 -0.400926
+-41.1418 -42.0518 0.246987
+-34.3673 -7.06549 0.595439
+-33.6849 -1.04322 0.863982
+-34.0979 -0.0343713 1.09478
+-34.7407 0.117357 1.28271
+-35.4273 0.103816 1.41543
+-36.0888 0.0476032 1.48491
+-36.6887 -0.0171005 1.48939
+-37.2098 -0.0720574 1.43208
+-37.6483 -0.105981 1.31922
+-38.0089 -0.113567 1.15854
+-38.2998 -0.0945837 0.958293
+-38.5296 -0.0524003 0.726918
+-38.7051 0.00762756 0.472879
+-38.8309 0.0795462 0.204691
+-38.9101 0.157763 -0.0691459
+-38.9446 0.237557 -0.340302
+-38.9367 0.315217 -0.600869
+-38.8889 0.38796 -0.843648
+-38.805 0.453738 -1.06244
+-38.6895 0.511044 -1.25224
+-38.5477 0.558764 -1.40942
+-38.385 0.596106 -1.53172
+-38.2073 0.622576 -1.61822
+-38.0197 0.637986 -1.66922
+-37.8273 0.642466 -1.68613
+-37.6344 0.636462 -1.67125
+-37.4446 0.620711 -1.62759
+-37.2612 0.596205 -1.55873
+-37.0865 0.564139 -1.46859
+-36.9225 0.525875 -1.36131
+-36.7707 0.482908 -1.24105
+0 0.436835 -1.11188
+467.222 3.93198 -8.37349
+468.363 4.3863 -9.51063
+469.632 4.86048 -10.7046
+471.034 5.34283 -11.9292
+472.567 5.82004 -13.1517
+474.228 6.27718 -14.3329
+476.006 6.69793 -15.4283
+477.885 7.06502 -16.3885
+479.842 7.3609 -17.1614
+481.843 7.56845 -17.6941
+483.848 7.67179 -17.9346
+485.806 7.65703 -17.8354
+487.661 7.51305 -17.3557
+489.349 7.23239 -16.465
+490.803 6.81207 -15.1455
+491.951 6.25481 -13.3948
+492.725 5.5704 -11.2281
+493.052 4.77724 -8.67937
+492.86 3.90394 -5.80229
+492.075 2.99023 -2.67001
+490.616 2.08666 0.62506
+488.4 1.25188 3.97216
+485.343 0.546681 7.2434
+481.374 0.0240271 10.2959
+476.462 -0.284716 12.9755
+470.65 -0.385942 15.1243
+464.105 -0.340741 16.5927
+457.172 -0.288441 17.2586
+450.5 -0.534076 17.0517
+445.571 -2.0451 15.9774
+447.525 -9.20619 14.1258
+479.842 -44.1033 11.6297
+655.948 -216.182 8.48746
+1506.56 -1042.73 3.99902
+5377.76 -4839.73 -5.15764
+21955.7 -21399.6 -32.5034
+88017.4 -89631.6 -133.967
+327580 -353157 -540.2
+1.07513e+06 -1.29043e+06 -2136.52
+2.70542e+06 -4.22087e+06 -7807.39
+1.28355e+06 -1.10441e+07 -23343
+157870 -1.01851e+07 -27455.4
+-36533.7 -6.08198e+06 -18852.3
+11971.6 -3.21929e+06 -8378.64
+1875.72 -1.80328e+06 -3580.61
+-6116.3 -989268 -2305.61
+1583.06 -517149 -1396.18
+1252.15 -284000 -654.802
+-1025.31 -155915 -344.623
+39.9864 -79644.8 -203.894
+352.469 -42349.5 -96.4627
+-159.959 -23470.1 -46.6531
+-51.9043 -11846.2 -28.5291
+81.3872 -6093.11 -13.8646
+-16.6515 -3488.41 -6.03792
+-21.3337 -1803.57 -3.77934
+15.3312 -911.68 -1.96021
+0.54951 -563.709 -0.964194
+-4.28628 -338.087 -0.881979
+1.00377 -224.527 -0.672101
+-1.7325 -216.427 -0.505762
+6.18833 -254.986 -0.794368
+-2.21145 -427.04 -1.07038
+-18.3592 -732.864 -1.2155
+29.8091 -1221.7 -2.70369
+14.3391 -2455.21 -5.18029
+-104.496 -4733.65 -8.10224
+85.6867 -8350.57 -18.9363
+186.153 -16404.4 -39.315
+-491.195 -32413.8 -64.5444
+32.6264 -58646.1 -134.157
+1343.25 -111161 -283.443
+-1904.85 -217722 -480.84
+-1899.13 -396766 -925.24
+8609.38 -726654 -1978.38
+-3792.82 -1.39591e+06 -3238.4
+-16951.3 -2.55208e+06 -5037.21
+52529.2 -4.58938e+06 -12070.9
+-236386 -8.74945e+06 -27273.5
+-1.87213e+06 -1.47378e+07 -39167.3
+-3.92551e+06 -1.60286e+07 -32638
+-1.55241e+06 -6.13218e+06 -10754.1
+-468085 -1.86932e+06 -2909.85
+-123594 -507299 -736.168
+-30074.2 -126779 -187.644
+-7168.45 -29548.4 -49.8326
+-2000.69 -6456.73 -12.0251
+-915.777 -1327.99 0.892651
+-703.485 -259.201 7.58923
+-667.617 -48.7256 12.8911
+-667.544 -8.62154 17.8223
+-675.98 -0.92785 22.2899
+-687.065 0.296449 25.9484
+-698.84 -0.161586 28.5013
+-710.23 -1.19689 29.7881
+-720.585 -2.32215 29.7823
+-729.587 -3.2108 28.556
+-737.161 -3.65495 26.2399
+-743.387 -3.56244 22.9924
+-748.407 -2.93973 18.9814
+-752.365 -1.86252 14.3763
+-755.371 -0.443787 9.34604
+-757.499 1.19358 4.0588
+-758.789 2.93544 -1.31869
+-759.267 4.68622 -6.62427
+-758.963 6.37148 -11.7049
+-757.921 7.93599 -16.4221
+-756.204 9.33974 -20.6572
+-753.897 10.5538 -24.3153
+-751.098 11.5575 -27.3282
+-747.914 12.3364 -29.6543
+-744.451 12.8824 -31.2784
+-740.815 13.1931 -32.209
+-737.099 13.2729 -32.4756
+-733.388 13.132 -32.1249
+-729.752 12.7868 -31.2178
+-726.25 12.2588 -29.8254
+-722.929 11.5734 -28.0254
+-719.823 10.7596 -25.8992
+-716.96 9.84864 -23.5284
+0 8.87395 -20.9926
+8188.77 67.8285 -140.891
+8208.15 76.0512 -160.914
+8229.82 84.6591 -182.017
+8253.85 93.4454 -203.742
+8280.26 102.17 -225.511
+8308.97 110.562 -246.635
+8339.82 118.322 -266.318
+8372.54 125.131 -283.686
+8406.72 130.664 -297.806
+8441.78 134.598 -307.726
+8477.03 136.629 -312.511
+8511.61 136.487 -311.298
+8544.53 133.943 -303.343
+8574.73 128.833 -288.076
+8601.08 121.066 -265.152
+8622.42 110.653 -234.5
+8637.62 97.7268 -196.358
+8645.57 82.5755 -151.301
+8645.18 65.6699 -100.252
+8635.34 47.6844 -44.4904
+8614.9 29.496 14.3562
+8582.63 12.1437 74.324
+8537.35 -3.2675 133.133
+8478.06 -15.7301 188.225
+8404.4 -24.5636 236.828
+8317.17 -29.6868 276.085
+8219.12 -31.8895 303.27
+8115.71 -33.0815 316.123
+8016.08 -36.716 313.285
+7935.11 -49.7326 294.785
+7902.71 -92.7112 262.375
+8007.28 -248.682 219.444
+8585.66 -879.787 170.038
+10983.9 -3519.7 116.145
+20318.9 -14266.5 50.9823
+54326.1 -55542.4 -60.137
+166914 -202399 -342.457
+491121 -677359 -1210.64
+1.23164e+06 -2.02975e+06 -3870.19
+2.2004e+06 -5.18496e+06 -10918.7
+1.15787e+06 -9.9924e+06 -23921.3
+233085 -9.25843e+06 -27365.5
+1951.92 -5.856e+06 -19908
+8028 -3.23137e+06 -10532.2
+929.063 -1.80003e+06 -5309.05
+-3981.86 -986384 -3111.68
+782.581 -523028 -1768.28
+774.936 -284633 -891.54
+-617.351 -154867 -469.701
+9.76141 -80452.3 -258.977
+218.618 -42657.5 -129.369
+-93.1705 -23211.6 -65.4745
+-33.5639 -11933.6 -36.5017
+49.6941 -6191.53 -18.4283
+-9.13399 -3437.8 -9.00911
+-13.3 -1803.74 -5.12154
+9.12373 -936.637 -2.70554
+0.471096 -556.502 -1.45154
+-2.72752 -335.625 -1.06578
+0.415611 -228.132 -0.781022
+-1.05717 -215.388 -0.649925
+3.65202 -260.229 -0.904568
+-1.75878 -422.565 -1.30234
+-11.1047 -725.423 -1.8537
+18.2684 -1254.45 -3.64475
+7.08097 -2449.93 -6.92661
+-63.8671 -4674.05 -12.1171
+54.5915 -8490.02 -25.1002
+106.885 -16495.3 -50.1104
+-304.259 -32077.4 -90.2081
+40.6641 -59130.3 -179.14
+805.838 -112180 -359.546
+-1178.51 -216221 -654.424
+-904.513 -397937 -1251.08
+5563.2 -734681 -2488.59
+-2135.12 -1.39104e+06 -4363.25
+-11723.8 -2.54783e+06 -7448.22
+-3747.33 -4.60547e+06 -14929.3
+-343536 -8.41556e+06 -28270
+-1.6877e+06 -1.33876e+07 -38374.2
+-3.19504e+06 -1.45039e+07 -32892.5
+-1.78015e+06 -7.53803e+06 -14776
+-702963 -2.94393e+06 -5188.39
+-235368 -974622 -1643.84
+-75503.2 -286819 -507.111
+-28373.7 -76828.4 -144.746
+-15860.5 -19059.8 -5.04151
+-12767 -4490.52 80.3509
+-12044.6 -1061.34 160.477
+-11920.6 -280.233 245.496
+-11976.6 -94.4862 331.635
+-12106.7 -46.3168 410.853
+-12272.2 -38.2796 475.357
+-12449.6 -46.9391 519.627
+-12622.4 -62.6358 540.934
+-12780.1 -78.5818 538.993
+-12917.4 -89.6568 515.263
+-13033 -92.6242 472.213
+-13128 -86.1794 412.783
+-13204.6 -70.6559 340.054
+-13265 -47.5209 257.11
+-13310.5 -18.8313 167.001
+-13342.2 13.2249 72.7381
+-13360.4 46.6411 -22.7241
+-13365.4 79.7532 -116.533
+-13357.5 111.279 -206.018
+-13337.2 140.278 -288.775
+-13305.6 166.086 -362.76
+-13264.1 188.231 -426.355
+-13214.3 206.39 -478.408
+-13158 220.349 -518.241
+-13097.2 229.999 -545.635
+-13033.6 235.335 -560.789
+-12968.9 236.459 -564.264
+-12904.5 233.583 -556.926
+-12841.7 227.018 -539.879
+-12781.4 217.162 -514.402
+-12724.5 204.487 -481.889
+-12671.6 189.521 -443.787
+-12623 172.833 -401.543
+0 155.024 -356.563
+142992 1150.77 -2361.24
+143320 1297.09 -2713.05
+143688 1450.74 -3085.22
+144099 1608.12 -3469.76
+144552 1764.99 -3856.55
+145047 1916.49 -4233.39
+145581 2057.25 -4586.23
+146149 2181.5 -4899.5
+146743 2283.3 -5156.57
+147355 2356.72 -5340.38
+147973 2396.11 -5434.13
+148580 2396.28 -5422.18
+149161 2352.77 -5290.94
+149697 2262.14 -5029.87
+150169 2122.22 -4632.34
+150559 1932.53 -4096.53
+150848 1694.76 -3426.11
+151019 1413.27 -2630.71
+151055 1095.71 -1726.27
+150941 753.357 -735.085
+150659 401.212 314.173
+150193 57.3948 1386.68
+149526 -258.369 2441.81
+148645 -527.386 3433.74
+147546 -735.76 4312.67
+146245 -878.915 5027.05
+144787 -966.119 5527.4
+143261 -1024.13 5772.11
+141807 -1100.06 5735.22
+140632 -1267.89 5415.03
+140036 -1659.62 4841.11
+140522 -2599.63 4075.6
+143206 -5122.3 3204.43
+151182 -12809 2314.62
+173484 -37789.3 1456.99
+234950 -118386 593.931
+394436 -363734 -481.858
+755470 -1.04098e+06 -2315.35
+1.37925e+06 -2.65677e+06 -6091.1
+1.8926e+06 -5.70172e+06 -13554.5
+1.08518e+06 -9.18913e+06 -24073.6
+313904 -8.49581e+06 -27078.8
+54199.4 -5.60693e+06 -20956
+18399 -3.20421e+06 -12574.9
+5157.64 -1.79223e+06 -7008.54
+-528.573 -983733 -4046.05
+1230.96 -526461 -2265.7
+901.274 -285238 -1189.01
+-126.707 -154346 -629.723
+112.866 -80959.7 -338.081
+190.938 -42879.8 -173.397
+-19.1554 -23079 -89.2534
+-4.57038 -11988.7 -47.8297
+36.9932 -6254.71 -24.5899
+-0.98889 -3411.5 -12.5164
+-6.80273 -1804.14 -6.82555
+4.9422 -951.826 -3.63956
+-0.617254 -552.915 -1.99072
+-3.15851 -334.202 -1.30391
+-1.75096 -230.291 -0.928431
+-2.80243 -215.039 -0.805992
+-0.557075 -263.347 -1.05574
+-4.52841 -420.026 -1.5809
+-10.6248 -721.954 -2.52491
+4.67848 -1274.42 -4.80393
+-6.34649 -2447.45 -9.11631
+-52.5267 -4644.07 -16.8009
+6.90356 -8579.52 -33.3966
+9.8135 -16554.8 -65.4823
+-267.741 -31908.4 -122.812
+-126.32 -59474.6 -239.899
+145.008 -112829 -469.59
+-1309.24 -215481 -878.03
+-1604.47 -398958 -1665.92
+702.384 -739343 -3182.05
+-7884.28 -1.38671e+06 -5674.2
+-26789.7 -2.5365e+06 -9822
+-79657 -4.56443e+06 -17665.3
+-460687 -8.04833e+06 -29355.9
+-1.58564e+06 -1.22721e+07 -37410.4
+-2.75914e+06 -1.33324e+07 -32558.1
+-2.00656e+06 -8.29295e+06 -18032.9
+-1.09527e+06 -3.85866e+06 -8176.47
+-572035 -1.50096e+06 -3468.69
+-344451 -516558 -1383.5
+-258699 -163954 -269.256
+-228282 -50501.5 661.613
+-217449 -16411 1747.33
+-213673 -6295.95 3076.94
+-212911 -3060.26 4585.79
+-213786 -1872.66 6128.18
+-215659 -1435.09 7538.5
+-218096 -1370.71 8674.7
+-220747 -1514.74 9440.93
+-223353 -1745.91 9792.17
+-225742 -1960.62 9726.66
+-227827 -2078.97 9273.01
+-229586 -2051.87 8477.37
+-231035 -1862.06 7393.84
+-232203 -1518.99 6078.82
+-233123 -1050.35 4588.35
+-233813 -492.932 2977.46
+-234284 114.898 1300.01
+-234539 738.367 -391.634
+-234577 1348.91 -2047.35
+-234400 1924.73 -3620.56
+-234016 2450.11 -5069.69
+-233442 2914.13 -6359.63
+-232700 3309.32 -7462.86
+-231819 3630.74 -8360.06
+-230830 3875.37 -9040.29
+-229765 4041.96 -9500.59
+-228656 4130.97 -9745.29
+-227532 4144.71 -9785.05
+-226418 4087.26 -9635.75
+-225335 3964.45 -9317.42
+-224301 3783.56 -8853.02
+-223329 3553.12 -8267.42
+-222428 3282.61 -7586.32
+-221606 2982.19 -6835.33
+0 2662.49 -6039.19
+2.34389e+06 682.318 -13332.1
+2.35344e+06 440.447 -15273.9
+2.3644e+06 194.322 -17294.1
+2.37681e+06 -45.7404 -19344.8
+2.39061e+06 -267.342 -21366.9
+2.40572e+06 -456.477 -23290.9
+2.42199e+06 -597.998 -25038.7
+2.4392e+06 -676.049 -26526.2
+2.45708e+06 -674.486 -27667
+2.4753e+06 -577.283 -28376.5
+2.49344e+06 -368.945 -28577.5
+2.51106e+06 -34.9149 -28205.5
+2.52766e+06 438.021 -27215
+2.54275e+06 1061.31 -25584.2
+2.55578e+06 1844.2 -23318.6
+2.56625e+06 2793.21 -20452
+2.57368e+06 3911.48 -17044.1
+2.57762e+06 5197.88 -13173.9
+2.57771e+06 6645.68 -8931.37
+2.57364e+06 8240.31 -4406.57
+2.56521e+06 9955.89 318.359
+2.5523e+06 11749.5 5173.03
+2.53493e+06 13551.5 10094.3
+2.51328e+06 15251.2 15012.7
+2.48779e+06 16672.3 19831.2
+2.45921e+06 17537 24405.4
+2.42884e+06 17409.3 28537.3
+2.39869e+06 15608.6 31999.9
+2.37187e+06 11072.6 34606.7
+2.35303e+06 2131.59 36323.1
+2.34928e+06 -13900.6 37392
+2.37156e+06 -41538.8 38411.6
+2.43739e+06 -88874.7 40282
+2.57572e+06 -171465 43956.9
+2.83437e+06 -320724 50014.5
+3.28641e+06 -600175 58233.5
+4.0167e+06 -1.12969e+06 67514.6
+5.03406e+06 -2.09787e+06 76305.4
+6.02475e+06 -3.6849e+06 82762.9
+6.03697e+06 -5.74075e+06 83042.9
+4.05117e+06 -7.21676e+06 69485.5
+1.97653e+06 -6.43333e+06 39979.7
+837943 -4.48186e+06 16757.4
+367173 -2.7448e+06 6449.19
+162717 -1.59534e+06 2552.78
+72388.8 -897946 929.569
+36509.4 -493243 426.777
+18583.5 -268850 310.154
+8703.95 -145333 218.565
+4615.89 -77353.1 143.389
+2541.32 -41072.7 98.1105
+1166.29 -21851.2 63.6079
+588.375 -11490.9 37.7786
+336.379 -6046.36 22.8308
+132.231 -3231.27 13.9387
+37.371 -1722.41 8.0388
+5.10936 -926.915 4.71898
+-27.0157 -525.056 2.96781
+-46.3773 -317.472 1.93795
+-56.0911 -222.473 1.48359
+-67.3757 -205.536 1.46422
+-77.8031 -255.141 1.77005
+-102.933 -398.298 2.60079
+-143.488 -687.149 4.15566
+-187.24 -1240.74 6.66978
+-319.14 -2333.66 11.3433
+-589.915 -4406.4 19.5448
+-932.184 -8297.81 31.8628
+-1747.03 -15851.4 52.6798
+-3625.07 -30235.9 88.7167
+-6451.76 -57022 137.007
+-12190.5 -107766 202.106
+-25921.5 -202969 315.549
+-50647.1 -376402 467.701
+-100872 -692879 707.776
+-227738 -1.26627e+06 1684.01
+-514274 -2.2607e+06 4715.34
+-1.1778e+06 -3.91689e+06 11918.3
+-2.79117e+06 -6.45327e+06 30253.3
+-5.73449e+06 -9.34374e+06 69805
+-8.54863e+06 -1.0535e+07 117943
+-8.51881e+06 -8.36201e+06 137346
+-7.10825e+06 -5.32592e+06 132889
+-5.67289e+06 -2.99557e+06 117828
+-4.65136e+06 -1.5895e+06 98689.4
+-4.02359e+06 -831822 78976.4
+-3.66561e+06 -438341 61957
+-3.47363e+06 -231069 50053.5
+-3.38132e+06 -117413 43904
+-3.34938e+06 -52540.5 42450
+-3.35442e+06 -14694.4 43727.1
+-3.38186e+06 7277.55 45732
+-3.42224e+06 19558.3 47004
+-3.4692e+06 25826.8 46831.2
+-3.51849e+06 28375.3 45152.8
+-3.56729e+06 28661.2 42298.3
+-3.61377e+06 27611.9 38705.7
+-3.65679e+06 25810.2 34717.1
+-3.69558e+06 23614.2 30488.2
+-3.72958e+06 21237.9 25998.1
+-3.75834e+06 18805.2 21118.7
+-3.78147e+06 16387 15703
+-3.79864e+06 14024.2 9658.92
+-3.80958e+06 11742.8 2993.16
+-3.81416e+06 9561.98 -4177.69
+-3.81241e+06 7498.88 -11643.2
+-3.80449e+06 5569.86 -19131.6
+-3.79077e+06 3790.97 -26348
+-3.77176e+06 2177.47 -33010.2
+-3.74811e+06 743.089 -38874.9
+-3.72059e+06 -500.694 -43754.4
+-3.69001e+06 -1545.34 -47523
+-3.65724e+06 -2385.77 -50116.2
+-3.62314e+06 -3020.82 -51524.9
+-3.58855e+06 -3453.5 -51787.9
+-3.55425e+06 -3691.15 -50983
+-3.52096e+06 -3745.26 -49217.9
+-3.4893e+06 -3631.12 -46621.6
+-3.45981e+06 -3367.1 -43335.7
+-3.4329e+06 -2973.61 -39506.3
+0 -2471.81 -35277.6
+4.83308e+06 -871.111 -25159.3
+4.85196e+06 -2343.72 -28637.4
+4.87392e+06 -3862.14 -32160.8
+4.89894e+06 -5370.95 -35628.1
+4.92686e+06 -6804.8 -38922.8
+4.95742e+06 -8090.28 -41916.1
+4.99023e+06 -9148.06 -44472.9
+5.02475e+06 -9895.36 -46457.7
+5.06032e+06 -10248.8 -47743.1
+5.09614e+06 -10127.2 -48217.7
+5.13133e+06 -9455.2 -47796.2
+5.16492e+06 -8166.34 -46428
+5.19589e+06 -6206.53 -44105.5
+5.2232e+06 -3537.55 -40868.9
+5.24587e+06 -140.532 -36807.1
+5.26296e+06 3980.55 -32052.1
+5.27367e+06 8795.09 -26765.1
+5.27734e+06 14241.8 -21115.2
+5.27347e+06 20223.7 -15252
+5.26177e+06 26602.3 -9275.15
+5.24214e+06 33189.2 -3207.77
+5.21465e+06 39734.3 3019.42
+5.17962e+06 45908.3 9565.67
+5.13759e+06 51275 16654.1
+5.08943e+06 55248.9 24522.8
+5.03644e+06 57027.8 33361.9
+4.98056e+06 55488 43258.8
+4.92461e+06 49024 54178.2
+4.8727e+06 35300.4 66006.2
+4.83065e+06 10866.8 78662.2
+4.80662e+06 -29469.6 92246.3
+4.81198e+06 -93731.8 107134
+4.86241e+06 -194763 123894
+4.97893e+06 -353869 142909
+5.18695e+06 -606910 163723
+5.50722e+06 -1.01203e+06 184341
+5.92508e+06 -1.65167e+06 201044
+6.32061e+06 -2.60564e+06 209224
+6.37677e+06 -3.85262e+06 204810
+5.61965e+06 -5.0831e+06 184792
+3.922e+06 -5.59853e+06 147347
+2.25073e+06 -4.8227e+06 98091.7
+1.16443e+06 -3.4395e+06 57665
+585052 -2.19504e+06 33087.7
+290725 -1.31979e+06 19375.1
+144472 -763136 11567.2
+73427.4 -429020 7027.94
+37597.3 -237012 4287.03
+19102.5 -129134 2580.08
+9878.51 -69430.7 1527.47
+5140.07 -37064 891.531
+2596.46 -19712.9 512.66
+1307.13 -10425 291.112
+648.689 -5510.69 164.173
+281.7 -2931.75 92.2888
+89.1741 -1567.14 51.9551
+-9.45805 -849.168 29.641
+-68.5927 -478.039 17.499
+-104.624 -289.022 11.1465
+-128.961 -203.682 8.29397
+-151.91 -187.803 7.86558
+-179.662 -233.828 9.65058
+-225.058 -362.576 14.2796
+-302.073 -626.278 23.4026
+-434.279 -1136.84 40.2565
+-695.837 -2122.96 70.9325
+-1194.02 -4000.69 126.299
+-2096.3 -7564.38 225.123
+-3877.94 -14378.2 400.186
+-7388.17 -27287.1 706.986
+-13948 -51477.1 1233.98
+-26797.9 -96733.1 2123.61
+-52585.4 -180401 3608.9
+-102601 -332012 6046.63
+-202199 -602950 10036.1
+-407828 -1.07698e+06 16847.5
+-822553 -1.87302e+06 28988.2
+-1.64254e+06 -3.14002e+06 50990.1
+-3.18901e+06 -4.9713e+06 91214.4
+-5.58052e+06 -7.04206e+06 157447
+-8.01527e+06 -8.21938e+06 236508
+-9.09209e+06 -7.43613e+06 293162
+-9.00628e+06 -5.58092e+06 318880
+-8.44569e+06 -3.72404e+06 317677
+-7.86021e+06 -2.32664e+06 295515
+-7.41337e+06 -1.40708e+06 260281
+-7.12103e+06 -835158 220725
+-6.9526e+06 -483035 183713
+-6.87339e+06 -263477 152679
+-6.85584e+06 -124295 127980
+-6.87992e+06 -35294.4 108252
+-6.93127e+06 21371.9 91767
+-6.9996e+06 56706.9 77303.8
+-7.0776e+06 77750.1 64425.5
+-7.16019e+06 89105.7 53311.4
+-7.24392e+06 93816 44368.9
+-7.32645e+06 93905.7 37851.5
+-7.40609e+06 90737.9 33626.8
+-7.48144e+06 85249.6 31135.4
+-7.5512e+06 78107.1 29505.8
+-7.61399e+06 69805.4 27748.3
+-7.66839e+06 60731.1 24954.7
+-7.71302e+06 51201 20452.4
+-7.74659e+06 41485.7 13888.8
+-7.76808e+06 31822.1 5244.48
+-7.77684e+06 22420.9 -5208.27
+-7.7726e+06 13469.7 -16982
+-7.75558e+06 5133.59 -29463.4
+-7.72641e+06 -2445.36 -41998.2
+-7.68613e+06 -9149.49 -53960
+-7.63612e+06 -14887.2 -64799.9
+-7.57802e+06 -19594.2 -74074.5
+-7.51363e+06 -23235 -81459.6
+-7.44487e+06 -25802.5 -86751
+-7.37366e+06 -27317.8 -89858.6
+-7.30188e+06 -27828.6 -90795.7
+-7.23126e+06 -27406.1 -89664.5
+-7.16341e+06 -26142.1 -86640.1
+-7.09969e+06 -24144.4 -81951.8
+-7.04128e+06 -21531.5 -75865.4
+0 -18427.4 -68666.5
+7.39927e+06 -2916.67 -37980.8
+7.42691e+06 -5951.01 -43146.5
+7.45879e+06 -9085.35 -48302.6
+7.49485e+06 -12206.5 -53286.8
+7.53483e+06 -15181.6 -57917.5
+7.57834e+06 -17862.2 -62000.9
+7.62477e+06 -20088.1 -65340.6
+7.67336e+06 -21692.7 -67748.3
+7.72318e+06 -22509.4 -69056.9
+7.77313e+06 -22378.1 -69133.8
+7.82201e+06 -21152.3 -67894.7
+7.86854e+06 -18706.9 -65316.3
+7.91141e+06 -14945.6 -61446.2
+7.94935e+06 -9808.55 -56407.1
+7.98116e+06 -3279.14 -50394.2
+8.00582e+06 4608.74 -43660.7
+8.02249e+06 13764.2 -36491.2
+8.03056e+06 24032.8 -29162.5
+8.02969e+06 35189.7 -21893.8
+8.01975e+06 46931.7 -14793.2
+8.00087e+06 58867.8 -7808.29
+7.97329e+06 70505.4 -693.898
+7.93742e+06 81231.9 6991.28
+7.89374e+06 90283.9 15849.3
+7.8428e+06 96700.4 26566.4
+7.78531e+06 99247.6 39805.2
+7.72218e+06 96299.8 56091.8
+7.65473e+06 85655.6 75737.1
+7.58481e+06 64257.8 98832.7
+7.51504e+06 27772.8 125338
+7.44888e+06 -30048 155226
+7.39064e+06 -118362 188579
+7.3452e+06 -250817 225470
+7.31656e+06 -447938 265479
+7.30375e+06 -739981 306801
+7.29023e+06 -1.16763e+06 345258
+7.22241e+06 -1.77251e+06 373925
+6.97995e+06 -2.5623e+06 384273
+6.37071e+06 -3.43827e+06 369005
+5.23241e+06 -4.11846e+06 325358
+3.69173e+06 -4.19787e+06 257809
+2.28446e+06 -3.51979e+06 181180
+1.30379e+06 -2.53174e+06 116938
+714364 -1.65399e+06 72937.5
+382662 -1.01894e+06 45143.1
+202639 -602262 27842.2
+107062 -345062 17067.7
+56403.4 -193262 10340.2
+29570.7 -106333 6162.47
+15492.7 -57666.6 3611.72
+8086.51 -30967.9 2084.91
+4164.13 -16524 1187.73
+2106.3 -8774.44 669.725
+1024.48 -4653.98 375.155
+445.309 -2476.88 209.604
+135.83 -1326.62 117.484
+-31.0554 -721.081 66.736
+-126.006 -405.675 39.2011
+-183.755 -245.461 24.848
+-224.42 -173.424 18.3757
+-262.081 -159.927 17.3387
+-308.751 -199.203 21.2826
+-381.286 -308.061 31.5953
+-505.655 -531.848 52.0225
+-729.142 -965.671 90.0331
+-1148.38 -1797.39 159.515
+-1937.61 -3381 285.555
+-3420.92 -6389.14 512.528
+-6256.83 -12101.6 917.699
+-11678.2 -22876.6 1632.94
+-21948.8 -43018.8 2876.98
+-41540.8 -80355.2 5004.42
+-78973 -148593 8581.21
+-149811 -270862 14489.8
+-283871 -485283 24125.8
+-537234 -850846 39859.3
+-1.00596e+06 -1.44865e+06 65775.3
+-1.84377e+06 -2.37262e+06 108583
+-3.24904e+06 -3.67364e+06 177976
+-5.2824e+06 -5.16471e+06 280432
+-7.51839e+06 -6.19486e+06 401738
+-9.16281e+06 -6.05515e+06 505107
+-1.00363e+07 -5.0018e+06 566172
+-1.03825e+07 -3.67452e+06 578671
+-1.04795e+07 -2.50431e+06 548901
+-1.04964e+07 -1.62898e+06 490856
+-1.05061e+07 -1.02364e+06 420201
+-1.05314e+07 -617301 349143
+-1.0575e+07 -345686 284467
+-1.06336e+07 -163325 228353
+-1.07031e+07 -40565.5 180376
+-1.07795e+07 41713.8 139352
+-1.08597e+07 96032.6 104464
+-1.09417e+07 130716 75603.3
+-1.10241e+07 151349 53123.6
+-1.11062e+07 161701 37350.2
+-1.11878e+07 164352 28128.7
+-1.12683e+07 161115 24599.6
+-1.1347e+07 153317 25237.9
+-1.14228e+07 141986 28093.3
+-1.14937e+07 127959 31120.7
+-1.15576e+07 111953 32498.2
+-1.16121e+07 94605.1 30862
+-1.16548e+07 76491.8 25428.2
+-1.16835e+07 58140.8 16005.6
+-1.16967e+07 40034.5 2922.86
+-1.16932e+07 22609.6 -13097.3
+-1.16728e+07 6254.72 -31084.3
+-1.16357e+07 -8694.25 -49959.7
+-1.15831e+07 -21958.2 -68654.5
+-1.15165e+07 -33319.2 -86195.2
+-1.1438e+07 -42623.5 -101760
+-1.13499e+07 -49782.8 -114707
+-1.12549e+07 -54773.9 -124589
+-1.11558e+07 -57636.1 -131145
+-1.1055e+07 -58466.1 -134296
+-1.09553e+07 -57411.6 -134119
+-1.08589e+07 -54662.8 -130827
+-1.0768e+07 -50442.9 -124737
+-1.06841e+07 -44997.1 -116245
+0 -38582.3 -105792
+9.41234e+06 -4164.19 -49605.9
+9.4456e+06 -8046.35 -56411.7
+9.48314e+06 -12058.5 -63168.9
+9.52484e+06 -16055.8 -69658
+9.57042e+06 -19868.8 -75636.2
+9.61944e+06 -23308.2 -80847.9
+9.67128e+06 -26170.6 -85036.7
+9.72518e+06 -28245.2 -87961.6
+9.7802e+06 -29322.3 -89413.8
+9.8353e+06 -29201.9 -89234.3
+9.88934e+06 -27703.6 -87332.5
+9.94114e+06 -24676.7 -83701.8
+9.98956e+06 -20010.3 -78432.1
+1.00335e+07 -13642.5 -71714.7
+1.00721e+07 -5569.61 -63836
+1.01046e+07 4145.77 -55157.5
+1.01304e+07 15367.7 -46078.8
+1.01494e+07 27880.7 -36982.6
+1.01616e+07 41383.7 -28167.5
+1.0167e+07 55483.9 -19772.5
+1.01661e+07 69690.6 -11709.1
+1.01591e+07 83404.9 -3611.87
+1.0146e+07 95906.1 5172.65
+1.01268e+07 106328 15547.3
+1.01009e+07 113621 28570.4
+1.00675e+07 116487 45316.7
+1.00251e+07 113272 66722.9
+9.9719e+06 101805 93465.5
+9.90568e+06 79131.2 125921
+9.82363e+06 41149.4 164231
+9.72222e+06 -17924 208448
+9.59666e+06 -106281 258615
+9.43986e+06 -235494 314606
+9.24054e+06 -421629 375486
+8.97946e+06 -685744 438347
+8.62313e+06 -1.05119e+06 496921
+8.11587e+06 -1.53192e+06 540884
+7.378e+06 -2.10424e+06 557243
+6.33187e+06 -2.66442e+06 534722
+4.9814e+06 -3.00992e+06 470162
+3.51456e+06 -2.9261e+06 373754
+2.25608e+06 -2.406e+06 268990
+1.35792e+06 -1.73415e+06 179920
+784807 -1.14762e+06 115736
+441355 -718388 73084.4
+243633 -431427 45569.4
+132826 -250738 28033.2
+71701.6 -142029 16969.7
+38371.9 -78823.2 10092
+20388.7 -43048.4 5900.04
+10742.3 -23238.1 3397.17
+5583.74 -12444.2 1931.21
+2836.96 -6629.48 1087.18
+1374.63 -3525.6 608.183
+591.779 -1879.1 339.46
+170.29 -1008.13 190.14
+-59.9144 -549.012 107.947
+-190.413 -309.116 63.3706
+-270.001 -187.251 40.1328
+-326.617 -132.519 29.6339
+-379.032 -122.28 27.9163
+-444.099 -152.284 34.2438
+-544.094 -235.134 50.8498
+-715.283 -405.498 83.7797
+-1023.57 -735.512 145.119
+-1594.18 -1366.19 257.339
+-2661.16 -2565.52 461.084
+-4665.03 -4840.55 828.5
+-8445.89 -9143.8 1485.45
+-15572.2 -17230.5 2647.22
+-28943.4 -32286.9 4672.96
+-53949.9 -59999.4 8147
+-100429 -110191 13997.7
+-185915 -199169 23667.7
+-341406 -352912 39390
+-620042 -610229 64709.2
+-1.10679e+06 -1.02322e+06 105305
+-1.92548e+06 -1.65064e+06 169842
+-3.22187e+06 -2.52518e+06 269276
+-5.05749e+06 -3.54496e+06 409267
+-7.20926e+06 -4.33702e+06 573753
+-9.18418e+06 -4.44596e+06 721628
+-1.0702e+07 -3.89348e+06 813750
+-1.17617e+07 -3.02994e+06 834489
+-1.24805e+07 -2.17269e+06 791422
+-1.29751e+07 -1.47275e+06 705800
+-1.33258e+07 -954307 601018
+-1.35816e+07 -587102 494871
+-1.37717e+07 -331255 397294
+-1.39147e+07 -153759 311875
+-1.40228e+07 -30838.5 238641
+-1.41049e+07 53911.5 176478
+-1.41678e+07 111679 124557
+-1.42168e+07 150044 82749.7
+-1.42566e+07 174109 51331.8
+-1.42915e+07 187307 30398.8
+-1.43247e+07 191995 19349.5
+-1.43586e+07 189854 16657.1
+-1.43945e+07 182164 19966.7
+-1.44323e+07 169969 26430.2
+-1.44709e+07 154177 33143.5
+-1.45081e+07 135615 37554.2
+-1.45412e+07 115055 37758.5
+-1.45672e+07 93228.9 32650.9
+-1.45831e+07 70825.8 21933.4
+-1.45866e+07 48492.6 6014.96
+-1.45756e+07 26824.9 -14156.4
+-1.45493e+07 6359.49 -37287.8
+-1.45072e+07 -12435.2 -61927.7
+-1.44499e+07 -29167.5 -86623
+-1.43786e+07 -43529.3 -110036
+-1.42951e+07 -55301.2 -131023
+-1.42017e+07 -64354 -148677
+-1.41008e+07 -70647.3 -162346
+-1.39952e+07 -74225.8 -171633
+-1.38875e+07 -75211.1 -176384
+-1.37805e+07 -73792.7 -176666
+-1.36765e+07 -70215.8 -172732
+-1.35777e+07 -64768.5 -164984
+-1.3486e+07 -57767.4 -153939
+0 -49543.8 -140183
+1.06877e+07 -3658.68 -58579
+1.07232e+07 -6931.58 -66769
+1.07622e+07 -10314.6 -74897.9
+1.08043e+07 -13685.3 -82701.5
+1.08495e+07 -16900.9 -89887.9
+1.08973e+07 -19802 -96150
+1.09472e+07 -22217.6 -101181
+1.09987e+07 -23971.2 -104692
+1.1051e+07 -24887.5 -106434
+1.11035e+07 -24800.7 -106217
+1.11552e+07 -23562.6 -103934
+1.12055e+07 -21051.4 -99579.1
+1.12538e+07 -17180.1 -93262.5
+1.12993e+07 -11904.8 -85215.6
+1.13417e+07 -5232.05 -75785.8
+1.13808e+07 2775.37 -65412.2
+1.14166e+07 11992.9 -54582
+1.14494e+07 22230.1 -43766.8
+1.14795e+07 33228 -33342
+1.15073e+07 44655.7 -23498.3
+1.15332e+07 56107.8 -14158.2
+1.15573e+07 67100.1 -4915.2
+1.15793e+07 77062.1 4985.28
+1.15981e+07 85323.9 16608.7
+1.16121e+07 91091.7 31230.6
+1.16184e+07 93404.5 50183.1
+1.16133e+07 91060 74681.7
+1.15918e+07 82495.1 105684
+1.15476e+07 65601.8 143838
+1.14729e+07 37467.3 189547
+1.13576e+07 -5970.95 243114
+1.11886e+07 -70343.3 304818
+1.09487e+07 -163296 374685
+1.06149e+07 -294800 451689
+1.01568e+07 -476700 532283
+9.53521e+06 -719832 608575
+8.70519e+06 -1.02546e+06 667279
+7.62917e+06 -1.36813e+06 691298
+6.30906e+06 -1.6753e+06 665559
+4.83392e+06 -1.82918e+06 586192
+3.39962e+06 -1.72957e+06 467735
+2.22149e+06 -1.40431e+06 340474
+1.37655e+06 -1.01192e+06 231368
+821391 -674140 150947
+476281 -426030 96271.9
+270061 -258472 60399.1
+150460 -151653 37276.4
+82629.7 -86583.8 22598
+44834.2 -48353.4 13449.1
+24069.6 -26539 7865.85
+12777.6 -14380 4530.37
+6680.34 -7721.88 2576.31
+3404.25 -4123.07 1450.99
+1646.92 -2196.69 812.117
+702.049 -1172.31 453.566
+190.765 -629.699 254.233
+-90.0798 -343.341 144.442
+-249.705 -193.485 84.859
+-347.407 -117.325 53.773
+-417.243 -83.1283 39.7098
+-481.994 -76.7504 37.3873
+-562.302 -95.5594 45.8201
+-685.131 -147.397 67.9801
+-894.678 -253.935 111.916
+-1270.83 -460.129 193.717
+-1962.82 -853.533 343.278
+-3250.16 -1600.79 614.628
+-5656.68 -3016.29 1103.64
+-10162.3 -5687.31 1977.51
+-18579.5 -10693.3 3521.94
+-34221.7 -19983.1 6213.62
+-63079.2 -36998.5 10827.2
+-115771 -67620.6 18589.2
+-210646 -121481 31395.1
+-378588 -213609 52144.7
+-669639 -365979 85313.1
+-1.16016e+06 -607728 137825
+-1.95693e+06 -971684 219835
+-3.1845e+06 -1.47744e+06 343350
+-4.91653e+06 -2.07535e+06 513614
+-7.03895e+06 -2.57187e+06 712629
+-9.2171e+06 -2.71157e+06 894441
+-1.11498e+07 -2.45709e+06 1.00837e+06
+-1.27055e+07 -1.97704e+06 1.03165e+06
+-1.38871e+07 -1.45958e+06 973529
+-1.47554e+07 -1.01266e+06 862058
+-1.53803e+07 -667282 727685
+-1.58216e+07 -414613 593047
+-1.61258e+07 -234266 470485
+-1.63277e+07 -106868 364290
+-1.64533e+07 -17323.2 274302
+-1.65223e+07 45328.4 198925
+-1.65496e+07 88783.5 136867
+-1.65472e+07 118305 87650.5
+-1.65254e+07 137413 51287.3
+-1.64923e+07 148443 27607.2
+-1.64552e+07 152974 15671.8
+-1.64194e+07 152131 13518.7
+-1.63884e+07 146786 18276.4
+-1.63642e+07 137676 26550.5
+-1.63469e+07 125476 34921.5
+-1.63352e+07 110826 40408.5
+-1.63268e+07 94346.9 40804.5
+-1.63187e+07 76645.7 34842.6
+-1.63078e+07 58308.7 22202.1
+-1.62914e+07 39894.6 3388.52
+-1.62669e+07 21925.3 -20463.7
+-1.62327e+07 4875.36 -47817.8
+-1.61878e+07 -10838 -76952.4
+-1.61319e+07 -24864 -106145
+-1.60655e+07 -36925.4 -133810
+-1.59896e+07 -46822.9 -158588
+-1.59058e+07 -54437.5 -179400
+-1.58159e+07 -59728.5 -195467
+-1.57219e+07 -62729.7 -206315
+-1.56259e+07 -63542.4 -211754
+-1.55301e+07 -62326.6 -211858
+-1.54365e+07 -59290.5 -206924
+-1.53468e+07 -54678.8 -197430
+-1.52626e+07 -48760.5 -183988
+0 -41817.3 -167297
+1.13401e+07 -1450.79 -64155.8
+1.13759e+07 -2728.48 -73274.6
+1.14141e+07 -4049.19 -82335.9
+1.14545e+07 -5365.07 -91047.1
+1.14969e+07 -6620.34 -99084.8
+1.15411e+07 -7752.8 -106108
+1.15866e+07 -8695.8 -111775
+1.16332e+07 -9380.58 -115764
+1.16803e+07 -9739.09 -117795
+1.17276e+07 -9707.08 -117654
+1.17747e+07 -9227.47 -115215
+1.18212e+07 -8253.74 -110466
+1.18669e+07 -6753.3 -103521
+1.19118e+07 -4710.64 -94629
+1.19558e+07 -2130.11 -84169.3
+1.19993e+07 961.772 -72624.9
+1.20426e+07 4514.46 -60537
+1.20864e+07 8452.11 -48435.7
+1.21312e+07 12672.7 -36753.5
+1.21778e+07 17047.3 -25728.7
+1.22263e+07 21419.7 -15314
+1.22767e+07 25605 -5108.53
+1.23282e+07 29388.2 5666.75
+1.23793e+07 32519.3 18134
+1.24272e+07 34705.4 33656.7
+1.24679e+07 35595.5 53682.9
+1.24959e+07 34753 79566.8
+1.25042e+07 31612.4 112426
+1.24838e+07 25411.3 153091
+1.24234e+07 15097 202182
+1.23082e+07 -792.713 260261
+1.21197e+07 -24262 327901
+1.18338e+07 -57974.7 405414
+1.14201e+07 -105283 491917
+1.0842e+07 -169943 583621
+1.00593e+07 -254950 671680
+9.03777e+06 -359480 740842
+7.76818e+06 -473247 771165
+6.2978e+06 -570622 744866
+4.75601e+06 -613285 657399
+3.33521e+06 -572441 525900
+2.1969e+06 -461922 384869
+1.38122e+06 -332674 263408
+838326 -222249 172990
+494418 -141072 110894
+284654 -86012.6 69825.3
+160615 -50705.7 43199.8
+89110.4 -29066.6 26233.5
+48742.1 -16285.4 15633.3
+26328.8 -8961.35 9153.47
+14040.6 -4865.18 5277.18
+7364.47 -2616.36 3003.82
+3758.85 -1398.63 1693.32
+1816.52 -745.848 948.606
+768.864 -398.317 530.273
+200.264 -214.087 297.5
+-112.996 -116.8 169.18
+-291.466 -65.8548 99.4838
+-400.984 -39.9552 63.0927
+-479.479 -28.3271 46.6149
+-552.345 -26.1624 43.8817
+-642.64 -32.5693 53.74
+-780.389 -50.2104 79.6551
+-1014.77 -86.4527 131.012
+-1434.4 -156.561 226.559
+-2203.88 -290.225 401.098
+-3630.86 -543.953 717.458
+-6289.59 -1024.2 1287.02
+-11246 -1929.37 2303.75
+-20458.2 -3623.46 4098.65
+-37474 -6761.69 7223.21
+-68614.3 -12495.3 12572
+-124888 -22779.8 21556.8
+-224924 -40795 36351.2
+-399207 -71452.2 60258.4
+-695632 -121863 98314.4
+-1.18552e+06 -201411 158194
+-1.96735e+06 -320718 250956
+-3.15784e+06 -486420 389295
+-4.84027e+06 -683751 578290
+-6.95503e+06 -852702 798537
+-9.24625e+06 -910912 1.00049e+06
+-1.14123e+07 -838629 1.12631e+06
+-1.32575e+07 -685291 1.14894e+06
+-1.47184e+07 -512771 1.07904e+06
+-1.58174e+07 -359587 949503
+-1.66131e+07 -238763 795645
+-1.71689e+07 -149003 643311
+-1.75409e+07 -84210.9 506246
+-1.77743e+07 -38067.5 388901
+-1.79041e+07 -5427.41 290659
+-1.79568e+07 17553.6 209302
+-1.79528e+07 33617.5 142986
+-1.79083e+07 44647.3 90840.3
+-1.78365e+07 51895.9 52615.3
+-1.77486e+07 56184.6 27951
+-1.7654e+07 58060.9 15729
+-1.75602e+07 57912.5 13782.6
+-1.74727e+07 56041.6 19006.9
+-1.73948e+07 52709.7 27762.7
+-1.73281e+07 48161 36401.7
+-1.72721e+07 42634 41758.3
+-1.72253e+07 36365.5 41503.4
+-1.71852e+07 29589.6 34320.6
+-1.71488e+07 22535.8 19909.2
+-1.71133e+07 15424.9 -1145.62
+-1.7076e+07 8464.34 -27586.5
+-1.70349e+07 1843.89 -57728.4
+-1.69885e+07 -4269.11 -89693.2
+-1.69359e+07 -9733.49 -121608
+-1.68768e+07 -14437.4 -151751
+-1.68116e+07 -18300.1 -178651
+-1.67409e+07 -21273.1 -201142
+-1.66659e+07 -23339 -218386
+-1.65878e+07 -24510.2 -229876
+-1.65081e+07 -24826.1 -235414
+-1.64283e+07 -24349.1 -235090
+-1.63496e+07 -23160.8 -229236
+-1.62736e+07 -21357.3 -218380
+-1.62012e+07 -19043.9 -203198
+0 -16331.2 -184460
+1.15347e+07 1450.79 -66039
+1.15705e+07 2728.48 -75485.3
+1.16081e+07 4049.19 -84877.6
+1.16476e+07 5365.07 -93913.7
+1.16886e+07 6620.34 -102259
+1.17309e+07 7752.8 -109561
+1.17744e+07 8695.8 -115466
+1.18186e+07 9380.58 -119640
+1.18633e+07 9739.09 -121791
+1.19082e+07 9707.09 -121695
+1.19531e+07 9227.48 -119221
+1.19978e+07 8253.74 -114350
+1.20422e+07 6753.3 -107197
+1.20866e+07 4710.64 -98015.5
+1.2131e+07 2130.11 -87194.6
+1.21759e+07 -961.771 -75231.1
+1.2222e+07 -4514.46 -62683.9
+1.227e+07 -8452.11 -50103.9
+1.23205e+07 -12672.7 -37944.5
+1.23741e+07 -17047.3 -26463.3
+1.24313e+07 -21419.7 -15627.8
+1.24918e+07 -25605 -5045.46
+1.25546e+07 -29388.2 6063.22
+1.26181e+07 -32519.3 18830.3
+1.2679e+07 -34705.4 34639
+1.27329e+07 -35595.4 54966.4
+1.27738e+07 -34753 81205.7
+1.2794e+07 -31612.4 114523
+1.27835e+07 -25411.3 155813
+1.27296e+07 -15097 205778
+1.26163e+07 792.715 265084
+1.24229e+07 24262 334438
+1.21227e+07 57974.7 414282
+1.1683e+07 105283 503828
+1.10651e+07 169943 599244
+1.02291e+07 254950 691375
+9.14455e+06 359480 764292
+7.81229e+06 473247 797041
+6.29413e+06 570622 770860
+4.73137e+06 613285 680922
+3.3143e+06 572441 545209
+2.1881e+06 461922 399639
+1.38176e+06 332674 274086
+843148 222249 180359
+499979 141072 115803
+289289 86012.6 73006
+163916 50705.7 45209.2
+91250.2 29066.6 27473.2
+50045.9 16285.4 16381.8
+27088.2 8961.35 9596.72
+14467.3 4865.18 5535.32
+7596.23 2616.36 3152.15
+3879.02 1398.63 1777.69
+1873.83 745.848 996.273
+791.073 398.317 557.14
+202.842 214.087 312.696
+-121.543 116.8 177.891
+-306.509 65.8548 104.647
+-420.117 39.9552 66.3908
+-501.617 28.3271 49.0631
+-577.305 26.1624 46.1853
+-671.068 32.5693 56.5454
+-813.986 50.2104 83.781
+-1056.94 86.4527 137.743
+-1491.5 156.561 238.103
+-2287.52 290.225 421.365
+-3762.17 543.953 753.397
+-6506.59 1024.2 1350.9
+-11615.6 1929.37 2417.02
+-21095.5 3623.46 4298.15
+-38569.9 6761.69 7571.04
+-70464.5 12495.3 13170.4
+-127904 22779.8 22569.8
+-229576 40795 38034.5
+-405780 71452.2 62999.4
+-703658 121863 102684
+-1.1929e+06 201411 165008
+-1.96954e+06 320718 261329
+-3.14834e+06 486420 404584
+-4.81605e+06 683751 599806
+-6.92965e+06 852702 827087
+-9.25734e+06 910912 1.03558e+06
+-1.14988e+07 838629 1.16503e+06
+-1.3439e+07 685291 1.18697e+06
+-1.49928e+07 512771 1.11264e+06
+-1.61694e+07 359587 976661
+-1.70226e+07 238763 816084
+-1.76168e+07 149003 657864
+-1.80111e+07 84210.9 516192
+-1.82543e+07 38067.5 395511
+-1.83844e+07 5427.41 294977
+-1.84305e+07 -17553.6 212093
+-1.84147e+07 -33617.5 144778
+-1.83544e+07 -44647.3 91994.7
+-1.82641e+07 -51895.9 53390
+-1.81557e+07 -56184.6 28537.4
+-1.80395e+07 -58060.9 16266.7
+-1.79238e+07 -57912.4 14357.5
+-1.78146e+07 -56041.6 19645.2
+-1.7716e+07 -52709.7 28427.9
+-1.76299e+07 -48161 36998.8
+-1.75565e+07 -42634 42146
+-1.74944e+07 -36365.5 41512.8
+-1.74414e+07 -29589.6 33775.8
+-1.73947e+07 -22535.8 18648.1
+-1.73514e+07 -15424.9 -3254.58
+-1.7309e+07 -8464.35 -30632
+-1.72652e+07 -1843.89 -61749.7
+-1.72182e+07 4269.11 -94679
+-1.71671e+07 9733.49 -127499
+-1.71113e+07 14437.4 -158446
+-1.70507e+07 18300.1 -186017
+-1.69859e+07 21273.1 -209018
+-1.69175e+07 23339 -226597
+-1.68465e+07 24510.2 -238236
+-1.6774e+07 24826.1 -243742
+-1.67012e+07 24349.1 -243209
+-1.66293e+07 23160.8 -236984
+-1.65594e+07 21357.3 -225613
+-1.64924e+07 19043.9 -209793
+0 16331.2 -190319
+1.13401e+07 3658.68 -64155.8
+1.13759e+07 6931.58 -73274.6
+1.14141e+07 10314.6 -82335.9
+1.14545e+07 13685.3 -91047.1
+1.14969e+07 16900.9 -99084.8
+1.15411e+07 19802 -106108
+1.15866e+07 22217.6 -111775
+1.16332e+07 23971.2 -115764
+1.16803e+07 24887.5 -117795
+1.17276e+07 24800.7 -117654
+1.17747e+07 23562.6 -115215
+1.18212e+07 21051.4 -110466
+1.18669e+07 17180.1 -103521
+1.19118e+07 11904.8 -94629
+1.19558e+07 5232.05 -84169.3
+1.19993e+07 -2775.37 -72624.9
+1.20426e+07 -11992.9 -60537
+1.20864e+07 -22230.1 -48435.7
+1.21312e+07 -33228 -36753.5
+1.21778e+07 -44655.7 -25728.7
+1.22263e+07 -56107.8 -15314
+1.22767e+07 -67100.1 -5108.53
+1.23282e+07 -77062.1 5666.75
+1.23793e+07 -85323.9 18134
+1.24272e+07 -91091.7 33656.7
+1.24679e+07 -93404.5 53682.9
+1.24959e+07 -91060 79566.8
+1.25042e+07 -82495.1 112426
+1.24838e+07 -65601.8 153091
+1.24234e+07 -37467.3 202182
+1.23082e+07 5970.96 260261
+1.21197e+07 70343.3 327901
+1.18338e+07 163296 405414
+1.14201e+07 294800 491917
+1.0842e+07 476700 583621
+1.00593e+07 719832 671680
+9.03777e+06 1.02546e+06 740842
+7.76818e+06 1.36813e+06 771165
+6.2978e+06 1.6753e+06 744866
+4.75601e+06 1.82918e+06 657399
+3.33521e+06 1.72957e+06 525900
+2.1969e+06 1.40431e+06 384869
+1.38122e+06 1.01192e+06 263408
+838326 674140 172990
+494418 426030 110894
+284654 258472 69825.3
+160615 151653 43199.8
+89110.4 86583.8 26233.5
+48742.1 48353.4 15633.3
+26328.8 26539 9153.47
+14040.6 14380 5277.18
+7364.47 7721.88 3003.82
+3758.85 4123.07 1693.32
+1816.52 2196.69 948.606
+768.864 1172.31 530.273
+200.264 629.699 297.5
+-112.996 343.341 169.18
+-291.466 193.485 99.4838
+-400.984 117.325 63.0927
+-479.479 83.1283 46.6149
+-552.345 76.7504 43.8817
+-642.64 95.5594 53.74
+-780.389 147.397 79.6551
+-1014.77 253.935 131.012
+-1434.4 460.129 226.559
+-2203.88 853.533 401.098
+-3630.86 1600.79 717.458
+-6289.59 3016.29 1287.02
+-11246 5687.31 2303.75
+-20458.2 10693.3 4098.65
+-37474 19983.1 7223.21
+-68614.3 36998.5 12572
+-124888 67620.6 21556.8
+-224924 121481 36351.2
+-399207 213609 60258.4
+-695632 365979 98314.4
+-1.18552e+06 607728 158194
+-1.96735e+06 971684 250956
+-3.15784e+06 1.47744e+06 389295
+-4.84027e+06 2.07535e+06 578290
+-6.95503e+06 2.57187e+06 798537
+-9.24625e+06 2.71157e+06 1.00049e+06
+-1.14123e+07 2.45709e+06 1.12631e+06
+-1.32575e+07 1.97704e+06 1.14894e+06
+-1.47184e+07 1.45958e+06 1.07904e+06
+-1.58174e+07 1.01266e+06 949503
+-1.66131e+07 667282 795645
+-1.71689e+07 414613 643311
+-1.75409e+07 234266 506246
+-1.77743e+07 106868 388901
+-1.79041e+07 17323.2 290659
+-1.79568e+07 -45328.4 209302
+-1.79528e+07 -88783.5 142986
+-1.79083e+07 -118305 90840.3
+-1.78365e+07 -137413 52615.3
+-1.77486e+07 -148443 27951
+-1.7654e+07 -152974 15729
+-1.75602e+07 -152131 13782.6
+-1.74727e+07 -146786 19006.9
+-1.73948e+07 -137676 27762.7
+-1.73281e+07 -125476 36401.7
+-1.72721e+07 -110826 41758.3
+-1.72253e+07 -94346.9 41503.4
+-1.71852e+07 -76645.7 34320.5
+-1.71488e+07 -58308.7 19909.2
+-1.71133e+07 -39894.6 -1145.62
+-1.7076e+07 -21925.3 -27586.5
+-1.70349e+07 -4875.36 -57728.4
+-1.69885e+07 10838 -89693.2
+-1.69359e+07 24864 -121608
+-1.68768e+07 36925.4 -151751
+-1.68116e+07 46822.9 -178651
+-1.67409e+07 54437.5 -201142
+-1.66659e+07 59728.5 -218386
+-1.65878e+07 62729.7 -229876
+-1.65081e+07 63542.4 -235414
+-1.64283e+07 62326.6 -235090
+-1.63496e+07 59290.5 -229236
+-1.62736e+07 54678.8 -218380
+-1.62012e+07 48760.5 -203198
+0 41817.3 -184460
+1.06877e+07 4164.19 -58579
+1.07232e+07 8046.35 -66769
+1.07622e+07 12058.5 -74897.9
+1.08043e+07 16055.8 -82701.5
+1.08495e+07 19868.8 -89887.9
+1.08973e+07 23308.2 -96150
+1.09472e+07 26170.6 -101181
+1.09987e+07 28245.2 -104692
+1.1051e+07 29322.3 -106434
+1.11035e+07 29201.9 -106217
+1.11552e+07 27703.6 -103934
+1.12055e+07 24676.7 -99579.2
+1.12538e+07 20010.3 -93262.5
+1.12993e+07 13642.5 -85215.6
+1.13417e+07 5569.61 -75785.8
+1.13808e+07 -4145.77 -65412.2
+1.14166e+07 -15367.7 -54582
+1.14494e+07 -27880.7 -43766.8
+1.14795e+07 -41383.7 -33342
+1.15073e+07 -55483.9 -23498.3
+1.15332e+07 -69690.6 -14158.2
+1.15573e+07 -83404.9 -4915.2
+1.15793e+07 -95906.1 4985.27
+1.15981e+07 -106328 16608.7
+1.16121e+07 -113621 31230.6
+1.16184e+07 -116487 50183.1
+1.16133e+07 -113272 74681.7
+1.15918e+07 -101805 105684
+1.15476e+07 -79131.2 143838
+1.14729e+07 -41149.4 189547
+1.13576e+07 17924 243114
+1.11886e+07 106281 304818
+1.09487e+07 235494 374685
+1.06149e+07 421629 451689
+1.01568e+07 685744 532283
+9.53521e+06 1.05119e+06 608575
+8.70519e+06 1.53192e+06 667279
+7.62917e+06 2.10424e+06 691298
+6.30906e+06 2.66442e+06 665559
+4.83392e+06 3.00992e+06 586192
+3.39962e+06 2.9261e+06 467735
+2.22149e+06 2.406e+06 340474
+1.37655e+06 1.73415e+06 231368
+821391 1.14762e+06 150947
+476281 718388 96271.9
+270061 431427 60399.1
+150460 250738 37276.4
+82629.7 142029 22598
+44834.2 78823.2 13449.1
+24069.6 43048.4 7865.85
+12777.6 23238.1 4530.37
+6680.34 12444.2 2576.31
+3404.25 6629.48 1450.99
+1646.92 3525.6 812.117
+702.049 1879.1 453.566
+190.765 1008.13 254.233
+-90.0798 549.012 144.442
+-249.705 309.116 84.859
+-347.407 187.251 53.773
+-417.243 132.519 39.7098
+-481.994 122.28 37.3873
+-562.302 152.284 45.8201
+-685.131 235.134 67.9801
+-894.678 405.498 111.916
+-1270.83 735.512 193.717
+-1962.82 1366.19 343.278
+-3250.16 2565.52 614.628
+-5656.68 4840.55 1103.64
+-10162.3 9143.8 1977.51
+-18579.5 17230.5 3521.94
+-34221.7 32286.9 6213.62
+-63079.2 59999.4 10827.2
+-115771 110191 18589.2
+-210646 199169 31395.1
+-378588 352912 52144.7
+-669639 610229 85313.1
+-1.16016e+06 1.02322e+06 137825
+-1.95693e+06 1.65064e+06 219835
+-3.1845e+06 2.52518e+06 343350
+-4.91653e+06 3.54496e+06 513614
+-7.03895e+06 4.33702e+06 712629
+-9.2171e+06 4.44596e+06 894441
+-1.11498e+07 3.89348e+06 1.00837e+06
+-1.27055e+07 3.02994e+06 1.03165e+06
+-1.38871e+07 2.17269e+06 973529
+-1.47554e+07 1.47275e+06 862058
+-1.53803e+07 954307 727685
+-1.58216e+07 587102 593047
+-1.61258e+07 331255 470485
+-1.63277e+07 153759 364290
+-1.64533e+07 30838.5 274302
+-1.65223e+07 -53911.5 198925
+-1.65496e+07 -111679 136867
+-1.65472e+07 -150044 87650.5
+-1.65254e+07 -174109 51287.3
+-1.64923e+07 -187307 27607.2
+-1.64552e+07 -191995 15671.8
+-1.64194e+07 -189854 13518.7
+-1.63884e+07 -182164 18276.4
+-1.63642e+07 -169969 26550.5
+-1.63469e+07 -154177 34921.5
+-1.63352e+07 -135615 40408.5
+-1.63268e+07 -115055 40804.5
+-1.63187e+07 -93228.9 34842.6
+-1.63078e+07 -70825.8 22202.1
+-1.62914e+07 -48492.6 3388.52
+-1.62669e+07 -26824.9 -20463.7
+-1.62327e+07 -6359.49 -47817.8
+-1.61878e+07 12435.2 -76952.4
+-1.61319e+07 29167.5 -106145
+-1.60655e+07 43529.3 -133810
+-1.59896e+07 55301.2 -158588
+-1.59058e+07 64354 -179400
+-1.58159e+07 70647.3 -195467
+-1.57219e+07 74225.8 -206315
+-1.56259e+07 75211.1 -211754
+-1.55301e+07 73792.7 -211858
+-1.54365e+07 70215.8 -206924
+-1.53468e+07 64768.5 -197430
+-1.52626e+07 57767.4 -183988
+0 49543.8 -167297
+9.41234e+06 2916.67 -49605.9
+9.4456e+06 5951.01 -56411.7
+9.48314e+06 9085.35 -63168.9
+9.52484e+06 12206.5 -69658
+9.57042e+06 15181.6 -75636.2
+9.61944e+06 17862.2 -80847.9
+9.67128e+06 20088.1 -85036.7
+9.72518e+06 21692.7 -87961.6
+9.7802e+06 22509.4 -89413.8
+9.8353e+06 22378.1 -89234.3
+9.88934e+06 21152.3 -87332.5
+9.94114e+06 18706.9 -83701.8
+9.98956e+06 14945.6 -78432.1
+1.00335e+07 9808.55 -71714.7
+1.00721e+07 3279.13 -63836
+1.01046e+07 -4608.74 -55157.5
+1.01304e+07 -13764.2 -46078.8
+1.01494e+07 -24032.8 -36982.6
+1.01616e+07 -35189.7 -28167.5
+1.0167e+07 -46931.7 -19772.5
+1.01661e+07 -58867.8 -11709.1
+1.01591e+07 -70505.4 -3611.87
+1.0146e+07 -81231.9 5172.65
+1.01268e+07 -90283.9 15547.3
+1.01009e+07 -96700.4 28570.4
+1.00675e+07 -99247.6 45316.7
+1.00251e+07 -96299.8 66722.9
+9.9719e+06 -85655.6 93465.5
+9.90568e+06 -64257.8 125921
+9.82363e+06 -27772.8 164231
+9.72222e+06 30048 208448
+9.59666e+06 118362 258615
+9.43986e+06 250817 314606
+9.24054e+06 447938 375486
+8.97946e+06 739981 438347
+8.62313e+06 1.16763e+06 496921
+8.11587e+06 1.77251e+06 540884
+7.378e+06 2.5623e+06 557243
+6.33187e+06 3.43827e+06 534722
+4.9814e+06 4.11846e+06 470162
+3.51456e+06 4.19787e+06 373754
+2.25608e+06 3.51979e+06 268990
+1.35792e+06 2.53174e+06 179920
+784807 1.65399e+06 115736
+441355 1.01894e+06 73084.4
+243633 602262 45569.4
+132826 345062 28033.2
+71701.6 193262 16969.7
+38371.9 106333 10092
+20388.7 57666.6 5900.04
+10742.3 30967.9 3397.17
+5583.74 16524 1931.21
+2836.96 8774.44 1087.18
+1374.63 4653.98 608.183
+591.779 2476.88 339.46
+170.29 1326.62 190.14
+-59.9144 721.081 107.947
+-190.413 405.675 63.3706
+-270.001 245.461 40.1328
+-326.617 173.424 29.6339
+-379.032 159.927 27.9163
+-444.099 199.203 34.2438
+-544.094 308.061 50.8498
+-715.283 531.848 83.7797
+-1023.57 965.671 145.119
+-1594.18 1797.39 257.339
+-2661.16 3381 461.084
+-4665.03 6389.14 828.5
+-8445.89 12101.6 1485.45
+-15572.2 22876.6 2647.22
+-28943.4 43018.8 4672.96
+-53949.9 80355.2 8147
+-100429 148593 13997.7
+-185915 270862 23667.7
+-341406 485283 39390
+-620042 850846 64709.2
+-1.10679e+06 1.44865e+06 105305
+-1.92548e+06 2.37262e+06 169842
+-3.22187e+06 3.67364e+06 269276
+-5.05749e+06 5.16471e+06 409267
+-7.20926e+06 6.19486e+06 573753
+-9.18418e+06 6.05515e+06 721628
+-1.0702e+07 5.0018e+06 813750
+-1.17617e+07 3.67452e+06 834489
+-1.24805e+07 2.50431e+06 791422
+-1.29751e+07 1.62898e+06 705800
+-1.33258e+07 1.02364e+06 601018
+-1.35816e+07 617301 494871
+-1.37717e+07 345686 397294
+-1.39147e+07 163325 311875
+-1.40228e+07 40565.5 238641
+-1.41049e+07 -41713.8 176478
+-1.41678e+07 -96032.6 124557
+-1.42168e+07 -130716 82749.7
+-1.42566e+07 -151349 51331.8
+-1.42915e+07 -161701 30398.8
+-1.43247e+07 -164352 19349.5
+-1.43586e+07 -161115 16657.1
+-1.43945e+07 -153317 19966.7
+-1.44323e+07 -141986 26430.2
+-1.44709e+07 -127959 33143.5
+-1.45081e+07 -111953 37554.2
+-1.45412e+07 -94605.1 37758.5
+-1.45672e+07 -76491.8 32650.9
+-1.45831e+07 -58140.8 21933.4
+-1.45866e+07 -40034.5 6014.96
+-1.45756e+07 -22609.6 -14156.4
+-1.45493e+07 -6254.72 -37287.8
+-1.45072e+07 8694.25 -61927.7
+-1.44499e+07 21958.2 -86623
+-1.43786e+07 33319.2 -110036
+-1.42951e+07 42623.5 -131023
+-1.42017e+07 49782.8 -148677
+-1.41008e+07 54773.9 -162346
+-1.39952e+07 57636.1 -171633
+-1.38875e+07 58466.1 -176384
+-1.37805e+07 57411.6 -176666
+-1.36765e+07 54662.8 -172732
+-1.35777e+07 50442.9 -164984
+-1.3486e+07 44997.1 -153939
+0 38582.3 -140183
+7.39927e+06 871.111 -37980.8
+7.42691e+06 2343.72 -43146.5
+7.45879e+06 3862.14 -48302.6
+7.49485e+06 5370.95 -53286.8
+7.53483e+06 6804.8 -57917.5
+7.57834e+06 8090.28 -62000.9
+7.62477e+06 9148.06 -65340.6
+7.67336e+06 9895.36 -67748.3
+7.72318e+06 10248.8 -69056.9
+7.77313e+06 10127.2 -69133.8
+7.82201e+06 9455.2 -67894.7
+7.86854e+06 8166.34 -65316.3
+7.91141e+06 6206.53 -61446.2
+7.94935e+06 3537.55 -56407.1
+7.98116e+06 140.532 -50394.2
+8.00582e+06 -3980.55 -43660.7
+8.02249e+06 -8795.09 -36491.2
+8.03056e+06 -14241.8 -29162.5
+8.02969e+06 -20223.7 -21893.8
+8.01975e+06 -26602.3 -14793.2
+8.00087e+06 -33189.2 -7808.29
+7.97329e+06 -39734.3 -693.898
+7.93742e+06 -45908.3 6991.28
+7.89374e+06 -51275 15849.3
+7.8428e+06 -55248.9 26566.4
+7.78531e+06 -57027.8 39805.2
+7.72218e+06 -55488 56091.8
+7.65473e+06 -49024 75737.1
+7.58481e+06 -35300.4 98832.7
+7.51504e+06 -10866.8 125338
+7.44888e+06 29469.6 155226
+7.39064e+06 93731.8 188579
+7.3452e+06 194763 225470
+7.31656e+06 353869 265479
+7.30375e+06 606910 306801
+7.29023e+06 1.01203e+06 345258
+7.22241e+06 1.65167e+06 373925
+6.97995e+06 2.60564e+06 384273
+6.37071e+06 3.85262e+06 369005
+5.23241e+06 5.0831e+06 325358
+3.69173e+06 5.59853e+06 257809
+2.28446e+06 4.8227e+06 181180
+1.30379e+06 3.4395e+06 116938
+714364 2.19504e+06 72937.5
+382662 1.31979e+06 45143.1
+202639 763136 27842.2
+107062 429020 17067.7
+56403.4 237012 10340.2
+29570.7 129134 6162.47
+15492.7 69430.7 3611.72
+8086.51 37064 2084.91
+4164.13 19712.9 1187.73
+2106.3 10425 669.725
+1024.48 5510.69 375.155
+445.309 2931.75 209.604
+135.83 1567.14 117.484
+-31.0554 849.168 66.736
+-126.006 478.039 39.2011
+-183.755 289.022 24.848
+-224.42 203.682 18.3757
+-262.081 187.803 17.3387
+-308.751 233.828 21.2826
+-381.286 362.576 31.5953
+-505.655 626.278 52.0225
+-729.142 1136.84 90.0331
+-1148.38 2122.96 159.515
+-1937.61 4000.69 285.555
+-3420.92 7564.38 512.528
+-6256.83 14378.2 917.699
+-11678.2 27287.1 1632.94
+-21948.8 51477.1 2876.98
+-41540.8 96733.1 5004.42
+-78973 180401 8581.21
+-149811 332012 14489.8
+-283871 602950 24125.8
+-537234 1.07698e+06 39859.3
+-1.00596e+06 1.87302e+06 65775.3
+-1.84377e+06 3.14002e+06 108583
+-3.24904e+06 4.9713e+06 177976
+-5.2824e+06 7.04206e+06 280432
+-7.51839e+06 8.21938e+06 401738
+-9.16281e+06 7.43613e+06 505107
+-1.00363e+07 5.58092e+06 566172
+-1.03825e+07 3.72404e+06 578671
+-1.04795e+07 2.32664e+06 548901
+-1.04964e+07 1.40708e+06 490856
+-1.05061e+07 835158 420201
+-1.05314e+07 483035 349143
+-1.0575e+07 263477 284467
+-1.06336e+07 124295 228353
+-1.07031e+07 35294.4 180376
+-1.07795e+07 -21371.9 139352
+-1.08597e+07 -56706.9 104464
+-1.09417e+07 -77750.1 75603.3
+-1.10241e+07 -89105.7 53123.6
+-1.11062e+07 -93816 37350.2
+-1.11878e+07 -93905.7 28128.7
+-1.12683e+07 -90737.9 24599.6
+-1.1347e+07 -85249.6 25237.9
+-1.14228e+07 -78107.1 28093.3
+-1.14937e+07 -69805.4 31120.7
+-1.15576e+07 -60731.1 32498.2
+-1.16121e+07 -51201 30862
+-1.16548e+07 -41485.7 25428.2
+-1.16835e+07 -31822.1 16005.6
+-1.16967e+07 -22420.9 2922.86
+-1.16932e+07 -13469.7 -13097.3
+-1.16728e+07 -5133.59 -31084.3
+-1.16357e+07 2445.36 -49959.7
+-1.15831e+07 9149.49 -68654.5
+-1.15165e+07 14887.2 -86195.2
+-1.1438e+07 19594.2 -101760
+-1.13499e+07 23235 -114707
+-1.12549e+07 25802.5 -124589
+-1.11558e+07 27317.9 -131145
+-1.1055e+07 27828.6 -134296
+-1.09553e+07 27406.1 -134119
+-1.08589e+07 26142.1 -130827
+-1.0768e+07 24144.4 -124737
+-1.06841e+07 21531.5 -116245
+0 18427.4 -105792
+4.83308e+06 -682.319 -25159.3
+4.85196e+06 -440.447 -28637.4
+4.87392e+06 -194.322 -32160.8
+4.89894e+06 45.7402 -35628.1
+4.92686e+06 267.342 -38922.8
+4.95742e+06 456.477 -41916.1
+4.99023e+06 597.998 -44472.9
+5.02475e+06 676.05 -46457.7
+5.06032e+06 674.487 -47743.1
+5.09614e+06 577.284 -48217.7
+5.13133e+06 368.945 -47796.2
+5.16492e+06 34.9147 -46428
+5.19589e+06 -438.021 -44105.5
+5.2232e+06 -1061.31 -40868.9
+5.24587e+06 -1844.2 -36807.1
+5.26296e+06 -2793.21 -32052.1
+5.27367e+06 -3911.48 -26765.1
+5.27734e+06 -5197.88 -21115.2
+5.27347e+06 -6645.68 -15252
+5.26177e+06 -8240.31 -9275.15
+5.24214e+06 -9955.89 -3207.77
+5.21465e+06 -11749.5 3019.42
+5.17962e+06 -13551.5 9565.67
+5.13759e+06 -15251.2 16654.1
+5.08943e+06 -16672.3 24522.8
+5.03644e+06 -17537 33361.9
+4.98056e+06 -17409.3 43258.8
+4.92461e+06 -15608.6 54178.2
+4.8727e+06 -11072.6 66006.2
+4.83065e+06 -2131.59 78662.2
+4.80662e+06 13900.6 92246.3
+4.81198e+06 41538.8 107134
+4.86241e+06 88874.7 123894
+4.97893e+06 171465 142909
+5.18695e+06 320724 163723
+5.50722e+06 600175 184341
+5.92508e+06 1.12969e+06 201044
+6.32061e+06 2.09787e+06 209224
+6.37677e+06 3.6849e+06 204810
+5.61965e+06 5.74075e+06 184792
+3.922e+06 7.21676e+06 147347
+2.25073e+06 6.43333e+06 98091.7
+1.16443e+06 4.48186e+06 57665
+585052 2.7448e+06 33087.7
+290725 1.59534e+06 19375.1
+144472 897946 11567.2
+73427.4 493243 7027.94
+37597.3 268850 4287.03
+19102.5 145333 2580.08
+9878.51 77353.1 1527.47
+5140.07 41072.7 891.531
+2596.46 21851.2 512.66
+1307.13 11490.9 291.112
+648.689 6046.36 164.173
+281.7 3231.27 92.2888
+89.1741 1722.41 51.9551
+-9.45805 926.915 29.641
+-68.5927 525.056 17.499
+-104.624 317.472 11.1465
+-128.961 222.473 8.29397
+-151.91 205.536 7.86558
+-179.662 255.141 9.65058
+-225.058 398.298 14.2796
+-302.073 687.149 23.4026
+-434.279 1240.74 40.2565
+-695.837 2333.66 70.9325
+-1194.02 4406.4 126.299
+-2096.3 8297.81 225.123
+-3877.94 15851.4 400.186
+-7388.17 30235.9 706.986
+-13948 57022 1233.98
+-26797.9 107766 2123.61
+-52585.4 202969 3608.9
+-102601 376402 6046.63
+-202199 692879 10036.1
+-407828 1.26627e+06 16847.5
+-822553 2.2607e+06 28988.2
+-1.64254e+06 3.91689e+06 50990.1
+-3.18901e+06 6.45327e+06 91214.4
+-5.58052e+06 9.34374e+06 157447
+-8.01527e+06 1.0535e+07 236508
+-9.09209e+06 8.36201e+06 293162
+-9.00628e+06 5.32592e+06 318880
+-8.44569e+06 2.99557e+06 317677
+-7.86021e+06 1.5895e+06 295515
+-7.41337e+06 831822 260281
+-7.12103e+06 438341 220725
+-6.9526e+06 231069 183713
+-6.87339e+06 117413 152679
+-6.85584e+06 52540.5 127980
+-6.87992e+06 14694.4 108252
+-6.93127e+06 -7277.55 91767
+-6.9996e+06 -19558.3 77303.8
+-7.0776e+06 -25826.8 64425.5
+-7.16019e+06 -28375.3 53311.4
+-7.24392e+06 -28661.2 44368.9
+-7.32645e+06 -27611.9 37851.5
+-7.40609e+06 -25810.2 33626.8
+-7.48144e+06 -23614.2 31135.4
+-7.5512e+06 -21237.9 29505.8
+-7.61399e+06 -18805.2 27748.3
+-7.66839e+06 -16387 24954.7
+-7.71302e+06 -14024.2 20452.4
+-7.74659e+06 -11742.8 13888.8
+-7.76808e+06 -9561.98 5244.48
+-7.77684e+06 -7498.88 -5208.27
+-7.7726e+06 -5569.86 -16982
+-7.75558e+06 -3790.97 -29463.4
+-7.72641e+06 -2177.46 -41998.2
+-7.68613e+06 -743.089 -53960
+-7.63612e+06 500.695 -64799.9
+-7.57802e+06 1545.34 -74074.5
+-7.51363e+06 2385.77 -81459.6
+-7.44487e+06 3020.82 -86751
+-7.37366e+06 3453.5 -89858.6
+-7.30188e+06 3691.15 -90795.7
+-7.23126e+06 3745.26 -89664.5
+-7.16341e+06 3631.12 -86640.1
+-7.09969e+06 3367.1 -81951.8
+-7.04128e+06 2973.61 -75865.4
+0 2471.81 -68666.5
+2.34389e+06 -1150.77 -13332.1
+2.35344e+06 -1297.09 -15273.9
+2.3644e+06 -1450.74 -17294.1
+2.37681e+06 -1608.12 -19344.8
+2.39061e+06 -1764.99 -21366.9
+2.40572e+06 -1916.49 -23290.9
+2.42199e+06 -2057.25 -25038.7
+2.4392e+06 -2181.5 -26526.2
+2.45708e+06 -2283.3 -27667
+2.4753e+06 -2356.72 -28376.5
+2.49344e+06 -2396.11 -28577.5
+2.51106e+06 -2396.28 -28205.5
+2.52766e+06 -2352.77 -27215
+2.54275e+06 -2262.14 -25584.2
+2.55578e+06 -2122.22 -23318.6
+2.56625e+06 -1932.53 -20452
+2.57368e+06 -1694.76 -17044.1
+2.57762e+06 -1413.27 -13173.9
+2.57771e+06 -1095.71 -8931.37
+2.57364e+06 -753.357 -4406.57
+2.56521e+06 -401.212 318.359
+2.5523e+06 -57.3949 5173.03
+2.53493e+06 258.369 10094.3
+2.51328e+06 527.386 15012.7
+2.48779e+06 735.76 19831.2
+2.45921e+06 878.915 24405.4
+2.42884e+06 966.119 28537.3
+2.39869e+06 1024.13 31999.9
+2.37187e+06 1100.06 34606.7
+2.35303e+06 1267.89 36323.1
+2.34928e+06 1659.62 37392
+2.37156e+06 2599.63 38411.6
+2.43739e+06 5122.3 40282
+2.57572e+06 12809 43956.9
+2.83437e+06 37789.3 50014.5
+3.28641e+06 118386 58233.5
+4.0167e+06 363734 67514.6
+5.03406e+06 1.04098e+06 76305.4
+6.02475e+06 2.65677e+06 82762.9
+6.03697e+06 5.70172e+06 83042.9
+4.05117e+06 9.18913e+06 69485.5
+1.97653e+06 8.49581e+06 39979.7
+837943 5.60693e+06 16757.4
+367173 3.20421e+06 6449.19
+162717 1.79223e+06 2552.78
+72388.8 983733 929.569
+36509.4 526461 426.777
+18583.5 285238 310.154
+8703.95 154346 218.565
+4615.89 80959.7 143.389
+2541.32 42879.8 98.1105
+1166.29 23079 63.6079
+588.375 11988.7 37.7786
+336.379 6254.71 22.8308
+132.231 3411.5 13.9387
+37.371 1804.14 8.0388
+5.10936 951.826 4.71898
+-27.0157 552.915 2.96781
+-46.3773 334.202 1.93795
+-56.0911 230.291 1.48359
+-67.3757 215.039 1.46422
+-77.8031 263.347 1.77005
+-102.933 420.026 2.60079
+-143.488 721.954 4.15566
+-187.24 1274.42 6.66978
+-319.14 2447.45 11.3433
+-589.915 4644.07 19.5448
+-932.184 8579.52 31.8628
+-1747.03 16554.8 52.6798
+-3625.07 31908.4 88.7167
+-6451.76 59474.6 137.007
+-12190.5 112829 202.106
+-25921.5 215481 315.549
+-50647.1 398958 467.701
+-100872 739343 707.776
+-227738 1.38671e+06 1684.01
+-514274 2.5365e+06 4715.34
+-1.1778e+06 4.56443e+06 11918.3
+-2.79117e+06 8.04833e+06 30253.3
+-5.73449e+06 1.22721e+07 69805
+-8.54863e+06 1.33324e+07 117943
+-8.51881e+06 8.29295e+06 137346
+-7.10825e+06 3.85866e+06 132889
+-5.67289e+06 1.50096e+06 117828
+-4.65136e+06 516558 98689.4
+-4.02359e+06 163954 78976.4
+-3.66561e+06 50501.5 61957
+-3.47363e+06 16411 50053.5
+-3.38132e+06 6295.95 43904
+-3.34938e+06 3060.26 42450
+-3.35442e+06 1872.66 43727.1
+-3.38186e+06 1435.09 45732
+-3.42224e+06 1370.71 47004
+-3.4692e+06 1514.74 46831.2
+-3.51849e+06 1745.91 45152.8
+-3.56729e+06 1960.62 42298.3
+-3.61377e+06 2078.97 38705.7
+-3.65679e+06 2051.87 34717.1
+-3.69558e+06 1862.06 30488.2
+-3.72958e+06 1518.99 25998.1
+-3.75834e+06 1050.35 21118.7
+-3.78147e+06 492.932 15703
+-3.79864e+06 -114.898 9658.92
+-3.80958e+06 -738.368 2993.16
+-3.81416e+06 -1348.91 -4177.69
+-3.81241e+06 -1924.73 -11643.2
+-3.80449e+06 -2450.11 -19131.6
+-3.79077e+06 -2914.13 -26348
+-3.77176e+06 -3309.32 -33010.2
+-3.74811e+06 -3630.74 -38874.9
+-3.72059e+06 -3875.37 -43754.4
+-3.69001e+06 -4041.96 -47523
+-3.65724e+06 -4130.97 -50116.2
+-3.62314e+06 -4144.71 -51524.9
+-3.58855e+06 -4087.26 -51787.9
+-3.55425e+06 -3964.45 -50983
+-3.52096e+06 -3783.56 -49217.9
+-3.4893e+06 -3553.12 -46621.6
+-3.45981e+06 -3282.61 -43335.7
+-3.4329e+06 -2982.19 -39506.3
+0 -2662.49 -35277.6
+142992 -67.8285 -2361.24
+143320 -76.0512 -2713.05
+143688 -84.6591 -3085.22
+144099 -93.4454 -3469.76
+144552 -102.17 -3856.55
+145047 -110.562 -4233.39
+145581 -118.322 -4586.23
+146149 -125.131 -4899.5
+146743 -130.664 -5156.57
+147355 -134.598 -5340.38
+147973 -136.629 -5434.13
+148580 -136.487 -5422.18
+149161 -133.943 -5290.94
+149697 -128.833 -5029.87
+150169 -121.066 -4632.34
+150559 -110.653 -4096.53
+150848 -97.7268 -3426.11
+151019 -82.5755 -2630.71
+151055 -65.6699 -1726.27
+150941 -47.6844 -735.085
+150659 -29.496 314.173
+150193 -12.1437 1386.68
+149526 3.2675 2441.81
+148645 15.7301 3433.74
+147546 24.5636 4312.67
+146245 29.6868 5027.05
+144787 31.8895 5527.4
+143261 33.0815 5772.11
+141807 36.716 5735.22
+140632 49.7326 5415.03
+140036 92.7112 4841.11
+140522 248.682 4075.6
+143206 879.787 3204.43
+151182 3519.7 2314.62
+173484 14266.5 1456.99
+234950 55542.4 593.931
+394436 202399 -481.858
+755470 677359 -2315.35
+1.37925e+06 2.02975e+06 -6091.1
+1.8926e+06 5.18496e+06 -13554.5
+1.08518e+06 9.9924e+06 -24073.6
+313904 9.25843e+06 -27078.8
+54199.4 5.856e+06 -20956
+18399 3.23137e+06 -12574.9
+5157.64 1.80003e+06 -7008.54
+-528.573 986384 -4046.05
+1230.96 523028 -2265.7
+901.274 284633 -1189.01
+-126.707 154867 -629.723
+112.866 80452.3 -338.081
+190.938 42657.5 -173.397
+-19.1554 23211.6 -89.2534
+-4.57038 11933.6 -47.8297
+36.9932 6191.53 -24.5899
+-0.98889 3437.8 -12.5164
+-6.80273 1803.74 -6.82555
+4.9422 936.637 -3.63956
+-0.617254 556.502 -1.99072
+-3.15851 335.625 -1.30391
+-1.75096 228.132 -0.928431
+-2.80243 215.388 -0.805992
+-0.557075 260.229 -1.05574
+-4.52841 422.565 -1.5809
+-10.6248 725.423 -2.52491
+4.67848 1254.45 -4.80393
+-6.34649 2449.93 -9.11631
+-52.5267 4674.05 -16.8009
+6.90356 8490.02 -33.3966
+9.8135 16495.3 -65.4823
+-267.741 32077.4 -122.812
+-126.32 59130.3 -239.899
+145.008 112180 -469.59
+-1309.24 216221 -878.03
+-1604.47 397937 -1665.92
+702.384 734681 -3182.05
+-7884.28 1.39104e+06 -5674.2
+-26789.7 2.54783e+06 -9822
+-79657 4.60547e+06 -17665.3
+-460687 8.41556e+06 -29355.9
+-1.58564e+06 1.33876e+07 -37410.4
+-2.75914e+06 1.45039e+07 -32558.1
+-2.00656e+06 7.53803e+06 -18032.9
+-1.09527e+06 2.94393e+06 -8176.47
+-572035 974622 -3468.69
+-344451 286819 -1383.5
+-258699 76828.4 -269.256
+-228282 19059.8 661.613
+-217449 4490.52 1747.33
+-213673 1061.34 3076.94
+-212911 280.233 4585.79
+-213786 94.4862 6128.18
+-215659 46.3168 7538.5
+-218096 38.2796 8674.7
+-220747 46.9391 9440.93
+-223353 62.6358 9792.17
+-225742 78.5818 9726.66
+-227827 89.6568 9273.01
+-229586 92.6242 8477.37
+-231035 86.1794 7393.84
+-232203 70.6559 6078.82
+-233123 47.5209 4588.35
+-233813 18.8313 2977.46
+-234284 -13.2249 1300.01
+-234539 -46.6411 -391.634
+-234577 -79.7532 -2047.35
+-234400 -111.279 -3620.56
+-234016 -140.278 -5069.69
+-233442 -166.086 -6359.63
+-232700 -188.231 -7462.86
+-231819 -206.39 -8360.06
+-230830 -220.349 -9040.29
+-229765 -229.999 -9500.59
+-228656 -235.335 -9745.29
+-227532 -236.459 -9785.05
+-226418 -233.583 -9635.75
+-225335 -227.018 -9317.42
+-224301 -217.162 -8853.02
+-223329 -204.487 -8267.42
+-222428 -189.521 -7586.32
+-221606 -172.833 -6835.33
+0 -155.024 -6039.19
+8188.77 -3.93198 -140.891
+8208.15 -4.3863 -160.914
+8229.82 -4.86048 -182.017
+8253.85 -5.34283 -203.742
+8280.26 -5.82004 -225.511
+8308.97 -6.27718 -246.635
+8339.82 -6.69793 -266.318
+8372.54 -7.06502 -283.686
+8406.72 -7.3609 -297.806
+8441.78 -7.56845 -307.726
+8477.03 -7.67179 -312.511
+8511.61 -7.65703 -311.298
+8544.53 -7.51305 -303.343
+8574.73 -7.23239 -288.076
+8601.08 -6.81207 -265.152
+8622.42 -6.25481 -234.5
+8637.62 -5.5704 -196.358
+8645.57 -4.77724 -151.301
+8645.18 -3.90394 -100.252
+8635.34 -2.99023 -44.4904
+8614.9 -2.08666 14.3562
+8582.63 -1.25188 74.324
+8537.35 -0.546681 133.133
+8478.06 -0.0240271 188.225
+8404.4 0.284716 236.828
+8317.17 0.385942 276.085
+8219.12 0.340741 303.27
+8115.71 0.288441 316.123
+8016.08 0.534076 313.285
+7935.11 2.0451 294.785
+7902.71 9.20619 262.375
+8007.28 44.1033 219.444
+8585.66 216.182 170.038
+10983.9 1042.73 116.145
+20318.9 4839.73 50.9823
+54326.1 21399.6 -60.137
+166914 89631.6 -342.457
+491121 353157 -1210.64
+1.23164e+06 1.29043e+06 -3870.19
+2.2004e+06 4.22087e+06 -10918.7
+1.15787e+06 1.10441e+07 -23921.3
+233085 1.01851e+07 -27365.5
+1951.92 6.08198e+06 -19908
+8028 3.21929e+06 -10532.2
+929.063 1.80328e+06 -5309.05
+-3981.86 989268 -3111.68
+782.581 517149 -1768.28
+774.936 284000 -891.541
+-617.351 155915 -469.701
+9.76141 79644.8 -258.977
+218.618 42349.5 -129.369
+-93.1705 23470.1 -65.4745
+-33.5639 11846.2 -36.5017
+49.6941 6093.11 -18.4283
+-9.13399 3488.41 -9.00911
+-13.3 1803.57 -5.12154
+9.12373 911.68 -2.70554
+0.471096 563.709 -1.45154
+-2.72752 338.087 -1.06578
+0.415611 224.527 -0.781022
+-1.05717 216.427 -0.649925
+3.65202 254.986 -0.904568
+-1.75878 427.04 -1.30234
+-11.1047 732.864 -1.8537
+18.2684 1221.7 -3.64475
+7.08097 2455.21 -6.92661
+-63.8671 4733.65 -12.1171
+54.5915 8350.57 -25.1002
+106.885 16404.4 -50.1103
+-304.259 32413.8 -90.208
+40.6639 58646.1 -179.14
+805.838 111161 -359.546
+-1178.51 217722 -654.425
+-904.513 396766 -1251.08
+5563.2 726654 -2488.59
+-2135.12 1.39591e+06 -4363.25
+-11723.8 2.55208e+06 -7448.22
+-3747.33 4.58938e+06 -14929.3
+-343536 8.74945e+06 -28270
+-1.6877e+06 1.47378e+07 -38374.2
+-3.19504e+06 1.60286e+07 -32892.5
+-1.78015e+06 6.13218e+06 -14776
+-702963 1.86932e+06 -5188.39
+-235368 507299 -1643.84
+-75503.2 126779 -507.111
+-28373.7 29548.4 -144.746
+-15860.5 6456.73 -5.04151
+-12767 1327.99 80.3509
+-12044.6 259.201 160.477
+-11920.6 48.7256 245.496
+-11976.6 8.62154 331.635
+-12106.7 0.92785 410.853
+-12272.2 -0.296449 475.357
+-12449.6 0.161586 519.627
+-12622.4 1.19689 540.934
+-12780.1 2.32215 538.993
+-12917.4 3.2108 515.263
+-13033 3.65495 472.213
+-13128 3.56244 412.783
+-13204.6 2.93973 340.054
+-13265 1.86252 257.11
+-13310.5 0.443787 167.001
+-13342.2 -1.19358 72.7381
+-13360.4 -2.93544 -22.7241
+-13365.4 -4.68622 -116.533
+-13357.5 -6.37148 -206.018
+-13337.2 -7.93599 -288.775
+-13305.6 -9.33974 -362.76
+-13264.1 -10.5538 -426.355
+-13214.3 -11.5575 -478.408
+-13158 -12.3364 -518.241
+-13097.2 -12.8824 -545.635
+-13033.6 -13.1931 -560.789
+-12968.9 -13.2729 -564.264
+-12904.5 -13.132 -556.926
+-12841.7 -12.7868 -539.879
+-12781.4 -12.2588 -514.402
+-12724.5 -11.5734 -481.889
+-12671.6 -10.7596 -443.787
+-12623 -9.84864 -401.543
+0 -8.87395 -356.563
+467.222 -0.195786 -8.37349
+468.363 -0.217454 -9.51063
+469.632 -0.24001 -10.7046
+471.034 -0.262887 -11.9292
+472.567 -0.285447 -13.1517
+474.228 -0.306981 -14.3329
+476.006 -0.32672 -15.4283
+477.885 -0.343856 -16.3885
+479.842 -0.357573 -17.1614
+481.843 -0.367085 -17.6941
+483.848 -0.371675 -17.9346
+485.806 -0.37073 -17.8354
+487.661 -0.363785 -17.3557
+489.349 -0.350558 -16.465
+490.803 -0.330995 -15.1455
+491.951 -0.305324 -13.3948
+492.725 -0.274118 -11.2281
+493.052 -0.238369 -8.67937
+492.86 -0.199556 -5.80229
+492.075 -0.159685 -2.67001
+490.616 -0.121259 0.62506
+488.4 -0.0871307 3.97216
+485.343 -0.060183 7.2434
+481.374 -0.0428137 10.2959
+476.462 -0.03623 12.9755
+470.65 -0.0396171 15.1243
+464.105 -0.0491483 16.5927
+457.172 -0.0556877 17.2586
+450.5 -0.0326765 17.0517
+445.571 0.137692 15.9774
+447.525 1.09456 14.1258
+479.842 6.37861 11.6297
+655.948 35.0524 8.48746
+1506.56 186.27 3.99902
+5377.76 960.168 -5.15764
+21955.7 4817.35 -32.5034
+88017.4 23640.8 -133.967
+327580 114131 -540.2
+1.07513e+06 545466 -2136.52
+2.70542e+06 2.60003e+06 -7807.39
+1.28355e+06 1.249e+07 -23343
+157870 1.13245e+07 -27455.4
+-36533.7 6.27614e+06 -18852.3
+11971.6 3.1665e+06 -8378.64
+1875.72 1.81068e+06 -3580.61
+-6116.3 996065 -2305.61
+1583.05 508781 -1396.18
+1252.15 283923 -654.803
+-1025.31 157983 -344.623
+39.9864 78469 -203.894
+352.469 41972.7 -96.4627
+-159.959 23948.6 -46.6532
+-51.9042 11720.3 -28.5291
+81.3872 5949.25 -13.8646
+-16.6515 3580.91 -6.03793
+-21.3337 1805.3 -3.77937
+15.3313 873.008 -1.96024
+0.54951 577.385 -0.964209
+-4.28629 342.475 -0.881983
+1.00376 218.994 -0.672097
+-1.73249 218.939 -0.505744
+6.18831 246.786 -0.794343
+-2.21148 434.88 -1.07036
+-18.3592 747.562 -1.21551
+29.809 1170.92 -2.70371
+14.3391 2466.74 -5.18028
+-104.497 4844.82 -8.10217
+85.6871 8145.89 -18.936
+186.154 16279.5 -39.3146
+-491.198 33043.9 -64.5439
+32.6202 58032.2 -134.156
+1343.25 109697 -283.441
+-1904.84 220678 -480.841
+-1899.14 396193 -925.242
+8609.37 715224 -1978.38
+-3792.83 1.40667e+06 -3238.4
+-16951.3 2.5615e+06 -5037.21
+52529.2 4.51416e+06 -12070.9
+-236386 9.03948e+06 -27273.5
+-1.87213e+06 1.63968e+07 -39167.3
+-3.92551e+06 1.81211e+07 -32638
+-1.55241e+06 3.77445e+06 -10754.1
+-468085 789233 -2909.85
+-123594 163699 -736.168
+-30074.2 33384.1 -187.644
+-7168.45 6642.02 -49.8326
+-2000.69 1279.75 -12.0251
+-915.777 237.189 0.892651
+-703.485 42.0518 7.58923
+-667.617 7.06549 12.8911
+-667.544 1.04322 17.8223
+-675.98 0.0343713 22.2899
+-687.065 -0.117357 25.9484
+-698.84 -0.103816 28.5013
+-710.23 -0.0476032 29.7881
+-720.585 0.0171005 29.7823
+-729.587 0.0720574 28.556
+-737.161 0.105981 26.2399
+-743.387 0.113567 22.9924
+-748.407 0.0945837 18.9814
+-752.365 0.0524003 14.3763
+-755.371 -0.00762757 9.34604
+-757.499 -0.0795462 4.0588
+-758.789 -0.157763 -1.31869
+-759.267 -0.237557 -6.62427
+-758.963 -0.315217 -11.7049
+-757.921 -0.38796 -16.4221
+-756.204 -0.453738 -20.6572
+-753.897 -0.511044 -24.3153
+-751.098 -0.558764 -27.3282
+-747.914 -0.596106 -29.6543
+-744.451 -0.622576 -31.2784
+-740.815 -0.637986 -32.209
+-737.099 -0.642466 -32.4756
+-733.388 -0.636462 -32.1249
+-729.752 -0.620711 -31.2178
+-726.25 -0.596205 -29.8254
+-722.929 -0.564139 -28.0254
+-719.823 -0.525875 -25.8992
+-716.96 -0.482908 -23.5284
+0 -0.436836 -20.9926
+24.0437 0 -0.446931
+24.1041 0 -0.505245
+24.171 0 -0.566265
+24.2446 0 -0.628641
+24.3248 0 -0.690691
+24.4114 0 -0.750416
+24.5038 0 -0.80554
+24.6011 0 -0.853568
+24.7022 0 -0.891863
+24.8052 0 -0.917747
+24.908 0 -0.928625
+25.008 0 -0.922118
+25.1023 0 -0.896213
+25.1873 0 -0.849414
+25.2595 0 -0.780892
+25.3151 0 -0.690605
+25.35 0 -0.579407
+25.3603 0 -0.449106
+25.3417 0 -0.3025
+25.2898 0 -0.143372
+25.1999 0 0.0235362
+25.0668 0 0.192574
+24.8856 0 0.357249
+24.652 0 0.510336
+24.364 0 0.644084
+24.0235 0 0.750585
+23.6399 0 0.822415
+23.2336 0 0.853593
+22.853 0 0.840749
+22.6626 0 0.78403
+23.46 0 0.686248
+29.5674 0 0.546263
+64.3365 0 0.334595
+250.266 0 -0.0913478
+1210.6 0 -1.32802
+6034.6 0 -6.09388
+29729.5 0 -28.3348
+144193 0 -143.586
+691429 0 -762.754
+3.30013e+06 0 -4143.93
+1.54972e+06 1.4287e+07 -24228.7
+130014 1.27803e+07 -29861.6
+-79298.1 6.49508e+06 -20251
+19325.6 3.0664e+06 -7608.3
+6923.68 1.82188e+06 -2208.63
+-9716.78 1.01261e+06 -1639.59
+1869.9 497088 -1187.96
+2420.7 283250 -503.566
+-1538 161904 -246.34
+-107.585 77013.8 -169.869
+615.562 41226.3 -76.8402
+-203.768 24759.4 -31.2874
+-114.246 11625.2 -22.6804
+133.322 5695.87 -11.0678
+-9.98646 3722.02 -3.48563
+-37.7111 1831.98 -2.66734
+23.5876 810.07 -1.33032
+5.08868 594.802 -0.194316
+-7.63918 354.858 -0.415279
+-0.652071 212.064 -0.534496
+-1.91231 220.433 -0.456279
+8.9892 236.024 -0.727109
+-9.97629 453.521 -0.554113
+-28.9719 765.155 -0.232823
+49.7287 1090.12 -1.90662
+-0.42324 2515.57 -3.66986
+-169.297 5010.52 -4.61463
+173.495 7795.47 -15.222
+221.522 16224.7 -31.4936
+-841.619 34095.3 -43.8038
+280.809 56877.5 -107.634
+1973.61 107973 -236.459
+-3576.17 226183 -345.969
+-2063.18 394521 -723.277
+13577 699473 -1699.59
+-11401.7 1.43158e+06 -2303.54
+-26474.2 2.57495e+06 -3143.63
+115147 4.37085e+06 -11256.2
+-198947 9.36929e+06 -29853.2
+-2.26093e+06 1.85153e+07 -43254.1
+-4.78587e+06 2.07184e+07 -34488.5
+-997915 0 -5850.28
+-205931 0 -1063.91
+-41718.8 0 -199.39
+-8252.04 0 -40.0003
+-1599.86 0 -9.05158
+-319.731 0 -2.22975
+-82.9055 0 -0.400926
+-41.1418 0 0.246987
+-34.3673 0 0.595439
+-33.6849 0 0.863982
+-34.0979 0 1.09478
+-34.7407 0 1.28271
+-35.4273 0 1.41543
+-36.0888 0 1.48491
+-36.6887 0 1.48939
+-37.2098 0 1.43208
+-37.6483 0 1.31922
+-38.0089 0 1.15854
+-38.2998 0 0.958293
+-38.5296 0 0.726918
+-38.7051 0 0.472879
+-38.8309 0 0.204691
+-38.9101 0 -0.0691459
+-38.9446 0 -0.340302
+-38.9367 0 -0.600869
+-38.8889 0 -0.843648
+-38.805 0 -1.06244
+-38.6895 0 -1.25224
+-38.5477 0 -1.40942
+-38.385 0 -1.53172
+-38.2073 0 -1.61822
+-38.0197 0 -1.66922
+-37.8273 0 -1.68613
+-37.6344 0 -1.67125
+-37.4446 0 -1.62759
+-37.2612 0 -1.55873
+-37.0865 0 -1.46859
+-36.9225 0 -1.36131
+-36.7707 0 -1.24105
+0 0 -1.11188
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.34671e+06 9.20658e+06 -27808.2
+2.91789e+06 1.56422e+07 -43251.9
+-48225.4 9.74923e+06 -66345.7
+-178176 3.31768e+06 -59932.3
+145129 1.54994e+06 -26332.2
+9992.28 1.17574e+06 -7184.21
+-36983.4 558849 -5221.54
+18272.2 235715 -4054.01
+8444.08 176100 -1567.31
+-7342.46 95029.3 -738.261
+1796.54 33201.6 -616.062
+2951.65 24265.5 -275.524
+-1108.44 16030.1 -93.1365
+2.68169 4730.88 -80.2552
+826.61 2990.47 -49.1606
+-54.8463 2776.54 -22.1521
+-57.5706 833.152 -8.49991
+190.56 342.06 10.2735
+-22.1057 561.595 16.3987
+-108.561 306.37 3.39929
+26.8108 101.888 -5.88966
+-79.9721 356.165 -0.0566569
+-307.506 679.19 15.5264
+16.2933 436.103 11.8185
+-65.6237 1195.64 -8.98442
+-1162.35 3692.15 -24.8415
+44.9778 3927.5 -64.5226
+1205.19 6844.54 -110.53
+-4230.63 22141.2 -129.624
+-1900.5 32671.1 -377.761
+9577.21 46950.1 -836.093
+-13184.3 133873 -1010.67
+-23492.5 242606 -2206.29
+52343.3 329550 -5662.37
+-21502.1 794342 -7071.64
+-203922 1.65398e+06 -9742.22
+264896 2.18035e+06 -37701.9
+42898.8 4.77146e+06 -85642.8
+-4.25183e+06 1.40921e+07 -89599.2
+-7.73605e+06 2.26467e+07 -50072.9
+0 1.33825e+07 -32972.8
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.46654e+06 0 84277.5
+6.52572e+06 0 297080
+2.56062e+06 0 316511
+-354961 0 121460
+-162658 0 -2466.44
+211450 0 -645.145
+4833.02 0 11220.7
+-43164.4 0 2826.14
+31245.5 0 -454.329
+12599.9 0 1394.92
+-8652.08 0 746.092
+4414.07 0 -129.087
+5107.59 0 151.246
+-912.558 0 192.764
+632.502 0 -35.1082
+1606.56 0 -54.2952
+194.812 0 20.295
+-2.48613 0 67.7213
+135.312 0 87.6165
+-104.918 0 34.8893
+-342.557 0 -10.7403
+-623.912 0 20.0507
+-368.327 0 77.9074
+-694.719 0 82.7366
+-2494.05 0 45.6753
+-1063.39 0 -54.1386
+535.11 0 -41.9072
+-7537.08 0 260.303
+-5522.02 0 201.295
+10896.2 0 -147.604
+-19950.5 0 1092.45
+-41249.8 0 1922.67
+60894.9 0 -566.272
+-17646.2 0 4487.02
+-298536 0 16457
+244779 0 -990.202
+471936 0 -1354.29
+-3.75478e+06 0 188840
+-9.44594e+06 0 489627
+-6.46931e+06 0 465050
+0 0 135417
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.70929e+06 -1.17975e+07 -71604.1
+8.30922e+06 -1.99899e+07 -162684
+3.18267e+06 -1.23179e+07 -162414
+-508870 -4.12972e+06 -111419
+-192367 -2.00196e+06 -52924.2
+288069 -1.54851e+06 -12706.2
+2743.81 -726026 -2468.22
+-55729.7 -308210 -4731.25
+43630 -235478 -3471.93
+16066.7 -125477 -851.756
+-11516 -43640.2 -400.088
+6612.42 -33126.1 -406.813
+6864.85 -21552 -113.102
+-1195.41 -6170.5 -24.7042
+1088.12 -4168.29 -4.17163
+2114.76 -3826.26 82.1699
+86.3712 -1100.39 90.1238
+7.74741 -494.384 38.7657
+302.205 -789.529 37.3712
+-73.4007 -416.061 40.7071
+-498.147 -137.461 39.5311
+-995.306 -478.864 37.3599
+-561.146 -960.963 28.6029
+-750.696 -626.701 47.3399
+-3309.9 -1561.41 127.057
+-1742.85 -5072.26 117
+726.037 -5460.39 -17.8259
+-10052.1 -8852.46 -49.9211
+-8411.6 -29555 -156.459
+14397.7 -44343.1 -548.034
+-25187 -61146.9 -508.161
+-57478.6 -175059 -1111.55
+77571.6 -321491 -4709.44
+-17492.7 -426256 -6251.38
+-402976 -1.01971e+06 -2841.98
+285851 -2.15309e+06 -17942.7
+676282 -2.77823e+06 -75895.4
+-4.60625e+06 -5.84657e+06 -157511
+-1.18758e+07 -1.75498e+07 -227328
+-8.16571e+06 -2.85522e+07 -230106
+0 -1.69232e+07 -103448
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.9128e+06 -1.86985e+07 -39577.3
+3.67395e+06 -1.67092e+07 -85066.3
+-125600 -8.51488e+06 -69854.2
+-212507 -4.08443e+06 -18313.6
+205340 -2.45625e+06 10111.1
+7906.06 -1.36448e+06 6215.46
+-49351.2 -672851 -1136.38
+26523.3 -387482 -655.595
+10502.8 -221644 619.819
+-10167.5 -105678 132.703
+2975.43 -57317.9 -81.3711
+3931.5 -34434.5 76.7963
+-1641.49 -16110.8 38.5984
+141.202 -8031.41 -2.00319
+1169.09 -5269.72 24.4724
+-129.848 -2566.72 17.269
+-90.7876 -1156.56 8.63794
+269.695 -857.543 12.961
+-15.1759 -499.528 11.2793
+-136.002 -300.935 9.10435
+30.6603 -320.835 10.7808
+-122.985 -332.944 7.63161
+-443.245 -636.559 11.402
+27.0967 -1100.47 15.2488
+-10.8735 -1544.25 11.8458
+-1635.97 -3500.61 28.5698
+-130.851 -7061.45 31.3289
+1836.67 -10918.5 -12.2744
+-5601.97 -22301.6 55.4268
+-3361.3 -47076.2 114.599
+13227.7 -78463.5 -108.249
+-16298.2 -146750 205.585
+-34227.4 -306646 878.435
+69119.1 -534319 -946.012
+-20291 -935927 -1443.01
+-286674 -1.90571e+06 9256.94
+312212 -3.429e+06 14177.4
+150864 -5.74234e+06 -28521.6
+-5.27784e+06 -1.21064e+07 -104305
+-9.87459e+06 -2.38791e+07 -126463
+0 -2.67712e+07 -59583.5
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+31.6527 0.249375 -0.762199
+31.7234 0.265541 -0.841474
+31.7988 0.281734 -0.923405
+31.8788 0.297564 -1.00624
+31.9633 0.31263 -1.08783
+32.052 0.32652 -1.16561
+32.1444 0.33881 -1.2367
+32.2396 0.349078 -1.29792
+32.3368 0.356929 -1.34597
+32.4345 0.362019 -1.3775
+32.5311 0.364078 -1.38927
+32.6244 0.362933 -1.37836
+32.712 0.358529 -1.34236
+32.7912 0.350947 -1.2795
+32.8588 0.340427 -1.18892
+32.9115 0.327393 -1.07073
+32.9458 0.312503 -0.926194
+32.9577 0.296689 -0.757737
+32.943 0.281212 -0.568974
+32.8966 0.267668 -0.364672
+32.8129 0.257944 -0.150685
+32.6853 0.254045 0.0661127
+32.5069 0.257755 0.27791
+32.2711 0.270103 0.476055
+31.9733 0.290633 0.651255
+31.6133 0.316558 0.793969
+31.1989 0.341721 0.895159
+30.751 0.353964 0.94752
+30.3243 0.320308 0.947139
+30.119 0.0940989 0.895256
+31.1414 -1.13523 0.799021
+38.9431 -7.92368 0.668228
+83.8235 -45.0424 0.496594
+325.723 -242.166 0.174719
+1581.22 -1255.91 -0.917746
+7903.97 -6323.08 -5.75944
+38986.9 -31084 -27.2829
+189100 -150142 -114.86
+906168 -717407 -423.275
+4.32118e+06 -3.41786e+06 -1300.19
+2.01404e+06 -1.64119e+07 -3699.54
+160122 -1.4884e+07 -1234.2
+-99747.9 -8.27915e+06 3883.33
+29283.5 -4.2267e+06 5632.66
+8060.57 -2.44011e+06 2868.63
+-13432.2 -1.34496e+06 340.549
+2943.91 -690482 66.8316
+3183.01 -388529 304.057
+-2185.76 -216669 147.394
+-55.5043 -107997 18.974
+843.07 -58324.5 31.2566
+-312.845 -33333.1 23.2102
+-141.08 -16308.5 3.2834
+191.842 -8379.3 3.89879
+-21.4796 -5062.88 2.9963
+-50.9433 -2539.61 -0.321594
+34.6774 -1244.48 0.973124
+4.70193 -829.18 1.41976
+-10.2865 -485.156 0.20079
+0.51867 -312.455 0.182421
+-4.18013 -317.204 0.610102
+12.5604 -350.541 0.128366
+-10.9869 -613.852 0.286534
+-43.5337 -1070.03 1.88061
+67.3746 -1658.15 1.08913
+11.1507 -3447.79 -0.267999
+-244.913 -6814.63 4.62518
+214.118 -11397.8 5.09207
+353.188 -22476.5 4.32821
+-1146.37 -45653.7 33.2821
+241.634 -80003.4 44.2625
+2806.9 -149581 28.6563
+-4652.74 -299744 211.504
+-3401.7 -536716 423.062
+18613.3 -959725 83.1243
+-13274.5 -1.87665e+06 528.643
+-40306.3 -3.40934e+06 4229.25
+142904 -5.94491e+06 8103.36
+-240697 -1.17579e+07 5196.29
+-2.89934e+06 -2.12611e+07 -2575.14
+-6.19018e+06 -2.35087e+07 -6198.89
+-1.29246e+06 -4.90148e+06 -2083.48
+-266948 -1.02592e+06 -664.663
+-54068.5 -212900 -178.852
+-10673.6 -43392.4 -42.418
+-2060.5 -8613.06 -9.13782
+-409.598 -1651.41 -1.72391
+-106.541 -303.378 -0.0792967
+-53.8203 -52.8847 0.410533
+-45.4637 -8.46947 0.70835
+-44.6593 -0.923269 0.982838
+-45.149 0.346264 1.23823
+-45.8803 0.563404 1.45057
+-46.6386 0.574861 1.59882
+-47.3494 0.524252 1.6715
+-47.9764 0.450194 1.66617
+-48.5048 0.373761 1.58678
+-48.9353 0.308842 1.44085
+-49.2773 0.263117 1.2374
+-49.5438 0.238952 0.985884
+-49.7476 0.234874 0.695837
+-49.8989 0.247212 0.376933
+-50.0048 0.271495 0.0391253
+-50.07 0.303428 -0.307359
+-50.0975 0.339398 -0.652206
+-50.0896 0.376627 -0.985366
+-50.0489 0.413085 -1.2975
+-49.9782 0.4473 -1.58039
+-49.8813 0.478169 -1.82733
+-49.7623 0.504819 -2.0333
+-49.6254 0.52654 -2.1951
+-49.4751 0.542773 -2.31127
+-49.3155 0.553132 -2.38197
+-49.1503 0.557432 -2.40882
+-48.9826 0.5557 -2.39459
+-48.8153 0.54817 -2.34305
+-48.6507 0.535264 -2.25867
+-48.4904 0.517562 -2.14641
+-48.336 0.495785 -2.01148
+-48.1887 0.47079 -1.85915
+0 0.443566 -1.69458
+613.152 4.9878 -14.3594
+614.494 5.32271 -15.9092
+615.928 5.65891 -17.5165
+617.455 5.98854 -19.1473
+619.072 6.30339 -20.7594
+620.774 6.59483 -22.3027
+622.551 6.85389 -23.7201
+624.389 7.0716 -24.9493
+626.269 7.23939 -25.9243
+628.166 7.34959 -26.5785
+630.047 7.39592 -26.8474
+631.873 7.37385 -26.6724
+633.599 7.28103 -26.0042
+635.174 7.11759 -24.8068
+636.544 6.88664 -23.0612
+637.65 6.59487 -20.768
+638.431 6.2534 -17.9501
+638.823 5.87889 -14.6534
+638.755 5.49454 -10.9476
+638.147 5.13063 -6.92526
+636.907 4.8237 -2.70086
+634.929 4.61358 1.59051
+632.099 4.53703 5.79459
+628.307 4.61766 9.73995
+623.48 4.85189 13.2417
+617.618 5.19271 16.1093
+610.86 5.53223 18.161
+603.549 5.67525 19.2477
+596.403 5.23162 19.2862
+591.189 2.98872 18.2967
+594.367 -6.61687 16.4298
+636.111 -51.9938 13.9563
+863.719 -275.311 11.1481
+1970.78 -1353.03 7.80691
+7035.04 -6326.79 1.4594
+28788.1 -28089.1 -19.5153
+115594 -117925 -99.472
+430468 -465175 -380.585
+1.41257e+06 -1.70043e+06 -1214.31
+3.5522e+06 -5.56222e+06 -3083.95
+1.6766e+06 -1.45544e+07 -5256.43
+202417 -1.34343e+07 -2911.85
+-44971.3 -8.05172e+06 1107.27
+17810.5 -4.30039e+06 2526.98
+1692.43 -2.42862e+06 1054.36
+-8361.29 -1.33705e+06 -161.745
+2397.62 -702541 -96.3108
+1622.95 -388525 115.931
+-1435.58 -213998 43.5795
+113.834 -109742 -8.42287
+476.777 -58794.9 10.977
+-237.794 -32673.6 8.39021
+-59.8103 -16514.2 -0.844192
+115.405 -8569.64 1.2577
+-27.9902 -4926.43 0.904773
+-28.0704 -2542.6 -0.705727
+22.5293 -1297.4 0.353923
+-0.760549 -807.467 0.613398
+-5.89438 -480.829 -0.0753906
+2.11778 -321.1 -0.0386403
+-3.27803 -312.518 0.203969
+8.72504 -363.281 -0.0573764
+-1.10744 -605.053 -0.0367236
+-27.4931 -1045.72 0.853758
+39.3334 -1728.05 0.36949
+27.319 -3440.09 -0.864551
+-148.674 -6648.42 1.68655
+100.192 -11667.5 1.85795
+282.289 -22697 -0.993055
+-659.97 -44788.8 12.817
+-46.5057 -80767.8 16.7565
+1875.57 -151778 -8.83497
+-2443.34 -295973 67.0989
+-2939.36 -537311 165.423
+11655.1 -976160 -137.215
+-3784.77 -1.86426e+06 -195.636
+-25213.8 -3.39455e+06 1606.57
+63632.3 -6.04951e+06 3688.08
+-298306 -1.14246e+07 1418.87
+-2.4134e+06 -1.91806e+07 -4651.03
+-5.09146e+06 -2.08551e+07 -8177.91
+-2.01579e+06 -7.98315e+06 -4759.55
+-608040 -2.4347e+06 -1874.23
+-160429 -660657 -590.032
+-38948.2 -164904 -157.462
+-9253.4 -38322.4 -35.2969
+-2584.4 -8328.32 -4.10664
+-1196.04 -1695.75 4.90288
+-928.209 -323.068 9.94271
+-883.84 -54.909 14.9617
+-883.484 -3.71125 20.2545
+-892.894 6.76215 25.2833
+-904.954 9.12269 29.4494
+-917.424 9.22618 32.3201
+-929.154 8.36678 33.675
+-939.5 7.10231 33.4765
+-948.197 5.81522 31.8121
+-955.252 4.76526 28.8381
+-960.829 4.09281 24.7397
+-965.154 3.8359 19.7089
+-968.44 3.95944 13.9384
+-970.856 4.3873 7.62213
+-972.513 5.02947 0.957683
+-973.476 5.80076 -5.85348
+-973.782 6.6305 -12.6097
+-973.459 7.46514 -19.1156
+-972.544 8.26628 -25.1907
+-971.084 9.00675 -30.677
+-969.141 9.66662 -35.4461
+-966.792 10.2304 -39.4032
+-964.117 10.6856 -42.4885
+-961.198 11.0224 -44.6769
+-958.113 11.2343 -45.9745
+-954.935 11.3185 -46.4154
+-951.723 11.2763 -46.0568
+-948.532 11.1133 -44.9746
+-945.402 10.8384 -43.2581
+-942.368 10.4641 -41.0058
+-939.456 10.0054 -38.3209
+-936.687 9.48031 -35.3072
+0 8.90895 -32.0657
+10701.2 85.556 -242.667
+10724.1 91.5122 -269.972
+10748.6 97.5059 -298.398
+10774.8 103.402 -327.351
+10802.7 109.055 -356.086
+10832 114.311 -383.716
+10862.8 119.007 -409.227
+10894.7 122.98 -431.507
+10927.4 126.071 -449.376
+10960.6 128.136 -461.637
+10993.5 129.049 -467.127
+11025.7 128.714 -464.779
+11056.2 127.066 -453.694
+11084.4 124.08 -433.199
+11109.3 119.777 -402.924
+11130 114.237 -362.843
+11145.6 107.61 -313.324
+11155.2 100.142 -255.152
+11157.8 92.1926 -189.531
+11152.2 84.2442 -118.082
+11137.3 76.8982 -42.8239
+11111.6 70.8271 33.8482
+11073.4 66.6771 109.185
+11021.2 64.9045 180.119
+10954 65.5488 243.33
+10872 67.9635 295.383
+10777.2 70.5448 332.978
+10675.2 70.4647 353.37
+10575.6 63.1407 354.953
+10495.7 39.7267 337.944
+10472.5 -25.984 304.958
+10619.6 -240.81 261.157
+11375.7 -1074.85 213.498
+14502.8 -4532.3 168.297
+26721.2 -18619.3 125.121
+71372.8 -72861.7 60.8043
+219473 -266255 -112.193
+646270 -892549 -633.671
+1.62108e+06 -2.67714e+06 -1978.61
+2.89514e+06 -6.84264e+06 -4551.81
+1.51816e+06 -1.31942e+07 -7140.54
+303438 -1.22413e+07 -5646.41
+4159.13 -7.77025e+06 -2098.68
+11824 -4.31853e+06 -49.373
+812.608 -2.42275e+06 -166.473
+-5415.46 -1.33342e+06 -512.927
+1233.1 -710678 -279.662
+1017.68 -389160 -41.0105
+-860.348 -212564 -25.7488
+51.9274 -110882 -30.4418
+297.359 -59163.7 -5.98974
+-138.624 -32302.1 -0.931867
+-38.8993 -16647 -3.4503
+70.6616 -8696.9 -0.722201
+-15.6426 -4848.96 -0.177316
+-17.5164 -2545.03 -0.823126
+13.4641 -1331.07 -0.0144362
+-0.276163 -795.432 0.252794
+-3.76748 -478.283 -0.120043
+1.00976 -326.578 -0.0806499
+-2.01098 -310.221 0.0736351
+5.1595 -371.262 -0.0947223
+-1.25976 -599.838 -0.0984957
+-16.7152 -1032.5 0.386561
+24.0984 -1772.47 -0.0392822
+14.3386 -3436.28 -0.973183
+-91.2014 -6555.18 0.176502
+63.9628 -11847.1 -0.671235
+162.605 -22841.5 -4.20683
+-411.24 -44305.4 0.227802
+-4.17088 -81347.9 -6.09251
+1119.45 -153222 -38.4484
+-1531.03 -293948 -28.7947
+-1481.59 -538560 -50.799
+7486.8 -987230 -386.901
+-2178.41 -1.85826e+06 -693.764
+-17208.2 -3.38681e+06 -158.613
+-7289.54 -6.07435e+06 -14.6275
+-440970 -1.10161e+07 -3119.12
+-2.18441e+06 -1.7467e+07 -8452.9
+-4.15286e+06 -1.89087e+07 -10779.7
+-2.31579e+06 -9.82807e+06 -6916.14
+-914528 -3.83811e+06 -3037.47
+-305967 -1.26985e+06 -1008.01
+-98063.5 -373079 -235.051
+-36925.2 -99608.1 2.65797
+-20776.1 -24559.5 77.0581
+-16820.1 -5699.65 128.253
+-15907.3 -1271.23 195.85
+-15746.4 -252.423 282.117
+-15800.1 4.92887 376.678
+-15934.8 85.9197 466.455
+-16103.7 113.245 540.145
+-16280.5 115.52 590.108
+-16447.8 104.014 612.63
+-16595.5 86.5365 607.253
+-16719.3 69.119 575.716
+-16819.1 55.8746 520.95
+-16897.6 48.9533 446.372
+-16958 48.8304 355.511
+-17003.7 54.8004 251.877
+-17036.8 65.5107 138.982
+-17058.8 79.411 20.368
+-17070.4 95.0592 -100.386
+-17071.8 111.278 -219.724
+-17063.3 127.19 -334.23
+-17045.3 142.186 -440.76
+-17018.3 155.844 -536.582
+-16983.3 167.868 -619.49
+-16941.7 178.031 -687.875
+-16894.6 186.154 -740.744
+-16843.6 192.097 -777.712
+-16790 195.77 -798.948
+-16735 197.142 -805.105
+-16679.7 196.252 -797.243
+-16624.9 193.204 -776.741
+-16571.4 188.167 -745.212
+-16519.8 181.366 -704.423
+-16470.4 173.074 -656.213
+-16423.7 163.608 -602.424
+0 153.323 -544.846
+186003 1442.75 -4077.07
+186390 1546.54 -4555.88
+186808 1651.24 -5056.28
+187255 1754.56 -5567.88
+187731 1853.99 -6077.62
+188235 1946.82 -6569.88
+188764 2030.21 -7026.74
+189315 2101.25 -7428.42
+189881 2157.09 -7753.92
+190456 2195.1 -7981.83
+191029 2212.91 -8091.25
+191590 2208.61 -8062.95
+192126 2180.73 -7880.5
+192623 2128.41 -7531.51
+193068 2051.51 -7008.76
+193446 1950.78 -6311.21
+193744 1828.15 -5444.71
+193949 1687.1 -4422.51
+194047 1533.03 -3265.39
+194024 1373.49 -2001.61
+193864 1218.15 -666.636
+193546 1078.13 697.146
+193049 964.48 2040.9
+192352 885.616 3309.92
+191442 843.72 4444.84
+190322 830.394 5384.01
+189030 822.29 6067.94
+187649 777.404 6446.53
+186326 631.543 6489.34
+185295 288.937 6197.56
+184915 -419.546 5614.69
+185831 -1911.98 4830.71
+189516 -5530.09 3973.85
+200059 -15944.7 3184.67
+229378 -49052.3 2570.62
+310234 -155266 2143.13
+520268 -478515 1743.15
+996079 -1.37165e+06 974.992
+1.81828e+06 -3.50468e+06 -750.279
+2.49419e+06 -7.52838e+06 -3724.02
+1.42729e+06 -1.21447e+07 -6652.37
+412092 -1.12468e+07 -6421.93
+72652.2 -7.44784e+06 -3923.69
+25283.4 -4.2819e+06 -1844.2
+6787.83 -2.41011e+06 -1161.79
+-665.745 -1.32912e+06 -897.622
+1817.62 -714936 -491.706
+1234.69 -389572 -193.695
+-167.984 -211693 -98.399
+185.495 -111515 -58.7779
+265.276 -59393.5 -23.4329
+-30.1897 -32086 -9.87898
+-0.852708 -16717.7 -6.46079
+52.9251 -8772.72 -2.54826
+-2.86777 -4804.62 -1.06487
+-8.83081 -2544.95 -0.942249
+7.32745 -1350.63 -0.239371
+-1.46314 -788.687 0.0550159
+-4.48211 -476.466 -0.10192
+-2.30798 -329.628 -0.0526243
+-4.35483 -309.034 0.0546922
+-0.885134 -375.748 -0.0389107
+-5.81846 -596.443 -0.0426336
+-15.8116 -1025.23 0.194045
+5.4024 -1798.29 -0.192978
+-6.74059 -3432.28 -0.979636
+-75.4509 -6502.37 -0.899232
+1.18409 -11954.2 -2.84881
+19.5947 -22917.5 -7.85191
+-370.075 -44026.9 -11.6488
+-218.82 -81709.6 -29.5159
+191.058 -154025 -76.9073
+-1774.63 -292731 -129.394
+-2381.09 -539358 -262.109
+866.133 -992980 -679.213
+-10257.7 -1.85158e+06 -1234.37
+-36483.7 -3.36883e+06 -1573.74
+-105582 -6.02038e+06 -2536.79
+-597082 -1.05484e+07 -5566.94
+-2.05991e+06 -1.60324e+07 -9235.81
+-3.59367e+06 -1.73979e+07 -9647.05
+-2.61595e+06 -1.08184e+07 -5418.54
+-1.42884e+06 -5.03217e+06 -1227.33
+-746982 -1.95614e+06 951.129
+-450679 -672347 1581.66
+-339356 -212841 1641.16
+-300110 -64982.1 1837.62
+-286255 -20313.6 2506.61
+-281404 -6736.99 3691.14
+-280236 -2082.08 5247.9
+-280935 -113.583 6945.31
+-282687 834.916 8541.82
+-284978 1240.26 9838.28
+-287426 1301.46 10703.1
+-289763 1158.27 11074.7
+-291827 929.151 10948.4
+-293551 708.342 10357.5
+-294933 559.449 9356.49
+-296013 514.467 8007.79
+-296840 578.587 6375.69
+-297459 738.319 4523.92
+-297902 970.187 2515.72
+-298185 1248.01 414.378
+-298312 1547.84 -1716.75
+-298283 1850.4 -3815.26
+-298097 2141.67 -5821.57
+-297755 2412.1 -7681.23
+-297267 2655.41 -9347.22
+-296648 2867.35 -10781.9
+-295917 3044.77 -11958
+-295097 3185.18 -12859.2
+-294212 3286.71 -13479.9
+-293286 3348.17 -13824
+-292339 3369.34 -13904
+-291390 3351.04 -13739.2
+-290455 3295.23 -13354.7
+-289545 3204.93 -12779.4
+-288671 3084.09 -12044.8
+-287838 2937.52 -11183.5
+-287052 2770.72 -10228.1
+0 2589.82 -9210.22
+3.03626e+06 870.793 -22860.2
+3.04756e+06 481.477 -25506.4
+3.06006e+06 78.6152 -28221.9
+3.07373e+06 -322.376 -30943.4
+3.08852e+06 -702.819 -33593.8
+3.1043e+06 -1041.41 -36083.3
+3.12091e+06 -1314.89 -38311.9
+3.13816e+06 -1498.66 -40173.5
+3.15578e+06 -1567.46 -41560
+3.17346e+06 -1495.97 -42367.8
+3.19086e+06 -1259.55 -42504.9
+3.2076e+06 -834.871 -41898.2
+3.22326e+06 -200.647 -40501.4
+3.23745e+06 661.674 -38301.5
+3.24974e+06 1767.14 -35322.7
+3.25974e+06 3126.46 -31626.5
+3.26708e+06 4745.04 -27306.2
+3.27145e+06 6621.65 -22477.3
+3.27257e+06 8746.66 -17262
+3.27021e+06 11099.2 -11773.3
+3.2642e+06 13642.7 -6101.1
+3.25444e+06 16317.6 -306.019
+3.2409e+06 19029.9 5574.9
+3.22366e+06 21631.2 11508
+3.20301e+06 23888.8 17431.5
+3.17958e+06 25437.5 23224.1
+3.15455e+06 25704.3 28691.9
+3.12993e+06 23793.4 33599.8
+3.1091e+06 18303.6 37764.9
+3.09747e+06 7027.4 41213.7
+3.10367e+06 -13586.3 44359.8
+3.14155e+06 -49496.8 48119.4
+3.23382e+06 -111361 53844.5
+3.41851e+06 -219644 62965.7
+3.75886e+06 -415702 76315
+4.35193e+06 -783377 93274.6
+5.31118e+06 -1.4814e+06 111151
+6.6509e+06 -2.76039e+06 125329
+7.95976e+06 -4.86127e+06 130482
+7.98072e+06 -7.58863e+06 122331
+5.36181e+06 -9.55584e+06 99538.7
+2.62421e+06 -8.53653e+06 67344
+1.12061e+06 -5.96769e+06 40209.4
+495045 -3.67288e+06 22996.7
+220731 -2.14603e+06 12795.2
+99192.4 -1.21371e+06 7062.85
+50544.6 -669945 4083.59
+25825.9 -366978 2434.5
+12193.2 -199258 1416.59
+6528.53 -106518 811.172
+3587.55 -56822.8 468.413
+1651.35 -30352.8 266.593
+844.824 -16021.5 148.195
+480.637 -8468.58 82.8723
+187.331 -4543.87 46.4955
+54.4336 -2429.83 25.826
+7.28133 -1313.48 14.7277
+-39.982 -747.263 8.80732
+-67.1398 -452.961 5.59069
+-81.0006 -318.458 4.17414
+-97.9539 -294.63 4.01325
+-112.668 -364.167 4.9026
+-147.854 -565.938 7.28189
+-207.56 -973.337 11.9704
+-270.733 -1748.75 20.2958
+-454.138 -3273.28 35.7496
+-842.347 -6159 64.3828
+-1334.1 -11545.4 114.746
+-2461.14 -21943.4 205.566
+-5090.13 -41679.9 370.742
+-9074.15 -78241.7 653.136
+-16952.4 -147080 1135.89
+-35732.1 -275633 1997.07
+-69535.1 -508549 3461.95
+-136909 -930780 5881.49
+-305644 -1.69155e+06 10394.9
+-685521 -3.0036e+06 19361.2
+-1.55575e+06 -5.17398e+06 35747.4
+-3.65709e+06 -8.48072e+06 63949.7
+-7.48778e+06 -1.22405e+07 108599
+-1.11498e+07 -1.37788e+07 160833
+-1.11062e+07 -1.09208e+07 196167
+-9.27012e+06 -6.94125e+06 205875
+-7.40817e+06 -3.89258e+06 192327
+-6.08776e+06 -2.05726e+06 163184
+-5.27904e+06 -1.07083e+06 128249
+-4.81842e+06 -559850 96204.1
+-4.56968e+06 -291254 72253
+-4.44593e+06 -144270 57693.8
+-4.3959e+06 -60613.6 50950.4
+-4.38934e+06 -12047.7 49100.6
+-4.40789e+06 15912.2 49202
+-4.44007e+06 31309.6 49109.9
+-4.47862e+06 38932.2 47751.1
+-4.51903e+06 41755.7 44971.9
+-4.55863e+06 41662.5 41160.3
+-4.5959e+06 39842.8 36844.7
+-4.63007e+06 37040.7 32406.1
+-4.66074e+06 33714.1 27954.2
+-4.68765e+06 30139.4 23347.9
+-4.71057e+06 26482 18300.6
+-4.72925e+06 22841.5 12510.6
+-4.7434e+06 19281 5769.03
+-4.75272e+06 15844.4 -1976.03
+-4.75701e+06 12566.3 -10604
+-4.75615e+06 9477.07 -19845.9
+-4.75014e+06 6604.75 -29332.6
+-4.73915e+06 3975.47 -38652
+-4.72351e+06 1612.86 -47401.2
+-4.70365e+06 -462.838 -55227.2
+-4.68013e+06 -2235.69 -61851.4
+-4.65359e+06 -3694.86 -67080.2
+-4.62472e+06 -4835.33 -70804.7
+-4.59422e+06 -5658.37 -72993.1
+-4.56281e+06 -6171.84 -73680.3
+-4.53115e+06 -6390.15 -72955.8
+-4.49988e+06 -6333.93 -70951.4
+-4.46956e+06 -6029.3 -67828.6
+-4.44068e+06 -5506.77 -63767.3
+-4.41366e+06 -4799.66 -58954.4
+0 -3942.21 -53575.6
+6.2431e+06 -1095.44 -42692.9
+6.26544e+06 -3056.46 -47444.8
+6.29063e+06 -5083.46 -52184
+6.31855e+06 -7103.25 -56774.1
+6.34902e+06 -9029.34 -61060.4
+6.3817e+06 -10764.3 -64875.7
+6.41616e+06 -12202.8 -68046.9
+6.45185e+06 -13234.5 -70405
+6.48808e+06 -13748.1 -71795.4
+6.52409e+06 -13635 -72090.4
+6.55903e+06 -12793.8 -71201.6
+6.592e+06 -11134.8 -69092.2
+6.62206e+06 -8584.21 -65787.4
+6.64832e+06 -5088.98 -61380.2
+6.66993e+06 -621.227 -56030.2
+6.68614e+06 4817.23 -49953.6
+6.69634e+06 11190.1 -43400.5
+6.70004e+06 18421.6 -36621.7
+6.69697e+06 26390.5 -29825.1
+6.687e+06 34922.5 -23129.7
+6.67018e+06 43780.4 -16523.3
+6.64671e+06 52649.2 -9837.39
+6.61694e+06 61113.2 -2748.24
+6.58141e+06 68620.3 5187.13
+6.54094e+06 74424.6 14460.8
+6.49672e+06 77495.1 25523.3
+6.45061e+06 76374.7 38702.3
+6.40545e+06 68960.7 54170.6
+6.36558e+06 52171.5 72002.6
+6.33751e+06 21430.7 92326.9
+6.33081e+06 -30164.2 115526
+6.35936e+06 -113273 142361
+6.44298e+06 -244925 173835
+6.60894e+06 -453324 210637
+6.89078e+06 -785920 252095
+7.31665e+06 -1.31979e+06 294889
+7.86875e+06 -2.16463e+06 332174
+8.39099e+06 -3.4276e+06 354188
+8.46623e+06 -5.08276e+06 351059
+7.46718e+06 -6.72205e+06 317259
+5.222e+06 -7.41933e+06 256018
+3.00822e+06 -6.4072e+06 182542
+1.56523e+06 -4.5861e+06 119064
+791401 -2.94043e+06 74464.7
+395692 -1.77667e+06 45722.6
+197942 -1.03219e+06 27792.2
+101239 -582991 16778.2
+52094 -323559 10012.4
+26599.5 -177058 5874.46
+13821.2 -95605.1 3392.72
+7212.01 -51256.1 1934.03
+3654.28 -27371.7 1089.28
+1847.92 -14531.8 607.751
+919.085 -7712.98 337.414
+399.864 -4119.41 187.052
+127.915 -2210.01 104.08
+-12.3881 -1202.33 58.7854
+-96.9451 -679.581 34.3742
+-148.154 -412.291 21.6862
+-182.877 -291.432 15.9907
+-215.864 -268.867 15.0897
+-255.306 -333.63 18.5564
+-319.573 -515.05 27.6578
+-429.247 -886.024 45.7627
+-616.221 -1601.08 79.563
+-983.61 -2976.75 141.793
+-1684.97 -5587.05 255.715
+-2950.4 -10517.4 462.59
+-5430.14 -19899.3 835.809
+-10308.1 -37598.3 1503.28
+-19394.3 -70600.6 2679.15
+-37055.6 -132015 4719.56
+-72304.6 -244988 8213.41
+-140293 -448602 14087.9
+-274513 -810332 23807.8
+-549527 -1.43961e+06 39923.1
+-1.10063e+06 -2.49031e+06 66803.5
+-2.18214e+06 -4.15251e+06 111033
+-4.20964e+06 -6.54327e+06 181265
+-7.33647e+06 -9.23871e+06 282504
+-1.05167e+07 -1.07613e+07 399193
+-1.19222e+07 -9.71565e+06 493581
+-1.18129e+07 -7.27214e+06 540448
+-1.10873e+07 -4.83571e+06 535221
+-1.03296e+07 -3.00794e+06 488475
+-9.74951e+06 -1.80887e+06 418238
+-9.36536e+06 -1.06533e+06 342057
+-9.13596e+06 -608900 271958
+-9.01565e+06 -325287 213383
+-8.96872e+06 -146329 166763
+-8.9698e+06 -32635.3 129928
+-9.00138e+06 39091.3 100164
+-9.05147e+06 83235.1 75463.4
+-9.11204e+06 109002 54929.1
+-9.17791e+06 122399 38538.7
+-9.24585e+06 127375 26596.3
+-9.31389e+06 126538 19191.9
+-9.38072e+06 121624 15874.8
+-9.44529e+06 113818 15600.8
+-9.5065e+06 103956 16901.1
+-9.56309e+06 92658.8 18163.6
+-9.61363e+06 80411.4 17922.5
+-9.65659e+06 67615.9 15079.8
+-9.6905e+06 54617.5 9025.35
+-9.71407e+06 41721.6 -344.728
+-9.72631e+06 29201.3 -12691.2
+-9.72664e+06 17300.7 -27344.3
+-9.71493e+06 6235.42 -43435.8
+-9.69148e+06 -3808.68 -60023.9
+-9.65703e+06 -12677.9 -76196.1
+-9.61267e+06 -20252.7 -91141.7
+-9.55979e+06 -26450.2 -104196
+-9.5e+06 -31225.2 -114861
+-9.43504e+06 -34570.4 -122806
+-9.36669e+06 -36516.1 -127862
+-9.29674e+06 -37127.4 -130009
+-9.22689e+06 -36501.1 -129350
+-9.1587e+06 -34760.9 -126096
+-9.09357e+06 -32051.3 -120534
+-9.0327e+06 -28531.2 -113007
+0 -24366.3 -103888
+9.52443e+06 -3693.18 -63969.3
+9.55688e+06 -7639.15 -71013.5
+9.59315e+06 -11719 -77929.6
+9.63304e+06 -15785.8 -84497.8
+9.67624e+06 -19667.2 -90476.8
+9.72226e+06 -23169.9 -95614
+9.77046e+06 -26085.4 -99659
+9.82005e+06 -28196.7 -102379
+9.87011e+06 -29286.5 -103578
+9.9196e+06 -29145.6 -103111
+9.9674e+06 -27582.2 -100911
+1.00124e+07 -24432.2 -96997
+1.00534e+07 -19568 -91491.9
+1.00894e+07 -12909.2 -84625.5
+1.01196e+07 -4430.95 -76726.8
+1.01431e+07 5827.03 -68201.1
+1.01596e+07 17752.3 -59487.5
+1.01687e+07 31151.9 -50997.8
+1.01705e+07 45744 -43041.2
+1.01652e+07 61148.9 -35741.4
+1.01532e+07 76877.1 -28961.4
+1.01351e+07 92313.2 -22251.9
+1.01114e+07 106691 -14842.2
+1.00825e+07 119052 -5686.28
+1.00489e+07 128183 6430.99
+1.00109e+07 132512 22742.9
+9.96909e+06 129940 44341.3
+9.92414e+06 117591 72063.1
+9.87724e+06 91423.6 106478
+9.83034e+06 45664.3 148000
+9.7864e+06 -28050.5 197060
+9.74949e+06 -141992 254205
+9.72459e+06 -314424 319865
+9.71594e+06 -572752 393563
+9.72164e+06 -957307 472488
+9.71974e+06 -1.52233e+06 549702
+9.63968e+06 -2.32361e+06 612956
+9.32294e+06 -3.37234e+06 645761
+8.51581e+06 -4.53892e+06 632288
+7.00365e+06 -5.45023e+06 565699
+4.95423e+06 -5.56821e+06 456115
+3.07826e+06 -4.68192e+06 331861
+1.76601e+06 -3.38058e+06 223673
+972963 -2.21882e+06 144370
+523969 -1.37354e+06 91006.8
+278885 -815668 56405.1
+148023 -469465 34403.9
+78287.4 -264102 20618.2
+41189.1 -145928 12130.8
+21648.7 -79470.1 7017.07
+11329.7 -42852.3 4000.1
+5849.27 -22956.4 2252.83
+2967.28 -12237.5 1257.41
+1447.53 -6516.08 697.993
+631.962 -3481.1 386.866
+195.515 -1871.39 215.312
+-40.5115 -1021.1 121.533
+-175.155 -576.697 70.9606
+-257.079 -350.224 44.7051
+-314.846 -248.161 32.8718
+-368.381 -228.916 30.9228
+-434.482 -284.258 38.0113
+-536.95 -437.683 56.6964
+-712.49 -752.379 93.9175
+-1026.96 -1360.18 163.61
+-1615.13 -2520.99 291.924
+-2720.66 -4722.57 526.6
+-4792.61 -8886.12 953.185
+-8739.95 -16757 1722.75
+-16265.5 -31537.1 3097.29
+-30475.1 -59033.9 5519.82
+-57459.8 -109748 9721.63
+-108782 -201968 16882.9
+-205415 -366333 28853.6
+-387155 -652957 48492.1
+-728386 -1.13882e+06 80300.3
+-1.35556e+06 -1.92872e+06 131348
+-2.46908e+06 -3.14238e+06 211970
+-4.32606e+06 -4.84287e+06 334551
+-7.00358e+06 -6.78505e+06 504298
+-9.94349e+06 -8.11896e+06 699343
+-1.21044e+07 -7.91735e+06 867700
+-1.32516e+07 -6.52124e+06 962445
+-1.37038e+07 -4.77306e+06 968245
+-1.38242e+07 -3.2375e+06 898848
+-1.38324e+07 -2.0927e+06 782907
+-1.38231e+07 -1.30374e+06 649323
+-1.38254e+07 -776218 518782
+-1.38431e+07 -425289 402118
+-1.38726e+07 -191112 302638
+-1.39097e+07 -34692.1 219525
+-1.3951e+07 69130.1 150683
+-1.39946e+07 136834 94428.7
+-1.40394e+07 179368 50035.3
+-1.40854e+07 204044 17437.3
+-1.4133e+07 215766 -3443.82
+-1.41828e+07 217851 -13327.1
+-1.42353e+07 212602 -13888.7
+-1.42902e+07 201684 -7703.96
+-1.43467e+07 186375 2095.72
+-1.44029e+07 167713 12294.9
+-1.44566e+07 146590 20047
+-1.45051e+07 123802 23208.6
+-1.45457e+07 100076 20510.9
+-1.45756e+07 76081.2 11575
+-1.45927e+07 52433 -3197.25
+-1.45954e+07 29692.2 -22808.4
+-1.45827e+07 8359.13 -45879.8
+-1.45545e+07 -11132.2 -70857.9
+-1.45112e+07 -28420.8 -96186.3
+-1.4454e+07 -43224.6 -120434
+-1.43845e+07 -55344.7 -142377
+-1.43047e+07 -64667.5 -161045
+-1.4217e+07 -71163.8 -175741
+-1.41237e+07 -74885.7 -186034
+-1.40274e+07 -75960.3 -191746
+-1.39306e+07 -74581 -192928
+-1.38353e+07 -70996.4 -189821
+-1.37438e+07 -65497.8 -182822
+-1.36577e+07 -58405.6 -172438
+0 -50054.7 -159250
+1.20718e+07 -5272.65 -83101.2
+1.21104e+07 -10277.9 -92336.5
+1.21523e+07 -15453.5 -101353
+1.21973e+07 -20612.7 -109855
+1.22451e+07 -25537 -117521
+1.2295e+07 -29982.1 -124018
+1.23466e+07 -33685.1 -129022
+1.23991e+07 -36374 -132238
+1.24516e+07 -37777.2 -133423
+1.25032e+07 -37636 -132412
+1.25532e+07 -35716.5 -129145
+1.26006e+07 -31822.8 -123681
+1.26446e+07 -25810 -116223
+1.26847e+07 -17595.9 -107112
+1.27204e+07 -7172.85 -96825.3
+1.27516e+07 5382.45 -85933.7
+1.27785e+07 19900.2 -75050
+1.28013e+07 36110.1 -64742.4
+1.28206e+07 53634.6 -55432
+1.28373e+07 71982.7 -47279.3
+1.2852e+07 90541.6 -40079.2
+1.28653e+07 108566 -33184.7
+1.28775e+07 125157 -25483.7
+1.28883e+07 139236 -15447.7
+1.28969e+07 149485 -1258.41
+1.29014e+07 154258 19000.4
+1.28995e+07 151431 47129.3
+1.28878e+07 138165 84640.7
+1.28619e+07 110554 132695
+1.28165e+07 63103.6 192174
+1.2745e+07 -11980.4 263830
+1.26391e+07 -125772 348331
+1.24873e+07 -293909 445907
+1.22728e+07 -538048 555297
+1.19685e+07 -886495 671857
+1.15285e+07 -1.37061e+06 785180
+1.08776e+07 -2.00929e+06 877454
+9.90912e+06 -2.77156e+06 924935
+8.52008e+06 -3.52023e+06 905084
+6.71743e+06 -3.98664e+06 809205
+4.75395e+06 -3.88512e+06 654144
+3.06427e+06 -3.20431e+06 481065
+1.85315e+06 -2.31888e+06 329338
+1.07616e+06 -1.54185e+06 215759
+607919 -969861 137646
+336936 -585177 86061.4
+184341 -341622 52786.2
+99809.4 -194347 31746.7
+53555 -108309 18727.6
+28523.3 -59393.4 10855
+15060.5 -32189.9 6197.66
+7845.19 -17305.4 3495.55
+3995.72 -9254.61 1953.74
+1942.27 -4940.34 1085.9
+840.975 -2642.96 602.615
+247.073 -1423.16 335.807
+-77.9003 -777.927 189.752
+-262.451 -439.67 110.894
+-375.133 -267.318 69.9088
+-455.344 -189.715 51.3992
+-529.56 -175.091 48.3071
+-621.485 -217.405 59.3156
+-762.458 -334.245 88.3852
+-1003.41 -573.927 146.277
+-1436.45 -1036.63 254.611
+-2236.4 -1917.55 453.843
+-3729.47 -3586.11 817.692
+-6527.54 -6737.73 1478.17
+-11794.2 -12672.8 2667.89
+-21697 -23776 4788.92
+-40226.6 -44351.4 8520.11
+-74766.9 -82037.9 14977.7
+-138732 -149953 25947.7
+-255882 -269722 44206.2
+-467904 -475527 73982.8
+-845722 -818007 121711
+-1.50181e+06 -1.36443e+06 197099
+-2.59859e+06 -2.18965e+06 313893
+-4.32583e+06 -3.334e+06 487645
+-6.76184e+06 -4.66332e+06 723548
+-9.61044e+06 -5.6901e+06 993488
+-1.22187e+07 -5.81861e+06 1.23117e+06
+-1.4214e+07 -5.08059e+06 1.36841e+06
+-1.55933e+07 -3.93863e+06 1.37932e+06
+-1.65112e+07 -2.80986e+06 1.28167e+06
+-1.71225e+07 -1.89151e+06 1.1159e+06
+-1.75343e+07 -1.21394e+06 923063
+-1.7812e+07 -736304 732657
+-1.79951e+07 -405521 560595
+-1.81091e+07 -177759 412508
+-1.8172e+07 -21457 288312
+-1.81974e+07 85163 185919
+-1.81964e+07 156943 103420
+-1.8178e+07 203910 39804.3
+-1.815e+07 232774 -5367.18
+-1.81191e+07 248009 -32739.9
+-1.80907e+07 252641 -43873.3
+-1.80687e+07 248794 -41560
+-1.80554e+07 238061 -29689.3
+-1.80516e+07 221730 -12773.9
+-1.80563e+07 200918 4666.03
+-1.80675e+07 176648 18680.2
+-1.80821e+07 149881 26306.4
+-1.80967e+07 121533 25779.7
+-1.81077e+07 92476 16540.5
+-1.81119e+07 63532.1 -915.019
+-1.81065e+07 35462.2 -25280.5
+-1.80897e+07 8954.5 -54723.8
+-1.80602e+07 -15388.7 -87159.5
+-1.80177e+07 -37062.7 -120480
+-1.79625e+07 -55670.4 -152725
+-1.78958e+07 -70928.3 -182203
+-1.78189e+07 -82669.9 -207549
+-1.77338e+07 -90843.2 -227758
+-1.76426e+07 -95506.1 -242187
+-1.75476e+07 -96816.2 -250535
+-1.7451e+07 -95018.6 -252816
+-1.7355e+07 -90430.6 -249308
+-1.72616e+07 -83424.8 -240511
+-1.71724e+07 -74410.7 -227083
+0 -63816.7 -209792
+1.36653e+07 -4628.15 -97764.1
+1.37059e+07 -8829.79 -108815
+1.37484e+07 -13174.4 -119602
+1.37923e+07 -17504.7 -129769
+1.38375e+07 -21637.3 -138933
+1.38834e+07 -25367.2 -146697
+1.39297e+07 -28474.6 -152674
+1.39759e+07 -30732 -156514
+1.40215e+07 -31914.1 -157928
+1.40662e+07 -31807 -156724
+1.41096e+07 -30219.5 -152828
+1.41515e+07 -26994.1 -146318
+1.41919e+07 -22017.8 -137436
+1.42309e+07 -15232.9 -126595
+1.42689e+07 -6645.48 -114367
+1.43067e+07 3666.38 -101444
+1.4345e+07 15546.5 -88565.9
+1.4385e+07 28756.1 -76429.6
+1.44279e+07 42970.4 -65561.7
+1.44748e+07 57776.1 -56187.2
+1.45266e+07 72668 -48102.1
+1.45838e+07 87044.8 -40579.5
+1.46461e+07 100199 -32333.9
+1.47122e+07 111298 -21566.4
+1.47797e+07 119351 -6098.87
+1.48445e+07 123144 16417.6
+1.49013e+07 121136 48264.6
+1.49424e+07 111287 91460.5
+1.49583e+07 90804.2 147679
+1.49368e+07 55772.7 218314
+1.48627e+07 688.147 304622
+1.47161e+07 -82112.1 407725
+1.44718e+07 -203042 528137
+1.40966e+07 -375652 664442
+1.35475e+07 -615991 810940
+1.27695e+07 -938713 954644
+1.17e+07 -1.34568e+06 1.07312e+06
+1.02867e+07 -1.80319e+06 1.13623e+06
+8.53179e+06 -2.21497e+06 1.11523e+06
+6.55661e+06 -2.42452e+06 999256
+4.62735e+06 -2.29833e+06 810210
+3.03615e+06 -1.87213e+06 599486
+1.88955e+06 -1.35468e+06 413775
+1.13223e+06 -906837 273254
+659002 -575884 175521
+374900 -351022 110347
+209456 -206871 67968.4
+115305 -118612 41014.2
+62694.6 -66512.8 24263.1
+33721.8 -36652.8 14098.1
+17933.9 -19938.6 8066.9
+9393.97 -10748.2 4559.01
+4798.14 -5760.75 2552.96
+2329.13 -3080.69 1421.47
+999.681 -1650.14 790.189
+279.285 -889.592 441.063
+-116.996 -486.831 249.627
+-342.544 -275.374 146.111
+-480.736 -167.589 92.237
+-579.544 -119.069 67.8707
+-671.073 -109.947 63.7729
+-784.381 -136.492 78.2149
+-957.372 -209.642 116.368
+-1252.05 -359.622 192.285
+-1780.19 -648.933 334.161
+-2750.26 -1198.86 594.66
+-4551.99 -2239.28 1069.52
+-7914.09 -4201.82 1929.84
+-14196.6 -7888.98 3476.24
+-25908.9 -14768.4 6226.75
+-47624.1 -27475.7 11053.1
+-87578.8 -50638.8 19382.9
+-160311 -92118.2 33486.5
+-290807 -164700 56869.1
+-520840 -288172 94822
+-917586 -491215 155268
+-1.58269e+06 -811437 249941
+-2.65704e+06 -1.29065e+06 395185
+-4.30357e+06 -1.95307e+06 608949
+-6.61667e+06 -2.73298e+06 896373
+-9.44099e+06 -3.37719e+06 1.22405e+06
+-1.23272e+07 -3.55154e+06 1.51355e+06
+-1.48704e+07 -3.20867e+06 1.6797e+06
+-1.68943e+07 -2.57169e+06 1.68864e+06
+-1.84047e+07 -1.88846e+06 1.56245e+06
+-1.9486e+07 -1.30058e+06 1.35242e+06
+-2.02343e+07 -848178 1.11024e+06
+-2.07313e+07 -518996 872743
+-2.10402e+07 -285660 659530
+-2.12088e+07 -122240 477400
+-2.12735e+07 -8541.36 326050
+-2.12622e+07 70096.8 202649
+-2.11968e+07 123948 104497
+-2.10952e+07 160011 29922.4
+-2.0972e+07 182931 -22061.7
+-2.08395e+07 195756 -52635
+-2.07077e+07 200512 -63970.6
+-2.05844e+07 198613 -59590
+-2.0475e+07 191137 -44203.4
+-2.03825e+07 178986 -23169.1
+-2.03079e+07 162985 -1794.74
+-2.02501e+07 143920 15315.6
+-2.02067e+07 122565 24731.5
+-2.01744e+07 99676.2 24427.5
+-2.01495e+07 75993.7 13785.7
+-2.01282e+07 52225.9 -6581.35
+-2.01072e+07 29037.8 -35118.3
+-2.00834e+07 7036.71 -69657.7
+-2.00548e+07 -13242.4 -107738
+-2.00198e+07 -31348.6 -146870
+-1.99776e+07 -46925.1 -184741
+-1.9928e+07 -59715.5 -219347
+-1.98715e+07 -69566.1 -249072
+-1.98086e+07 -76424.4 -272720
+-1.97406e+07 -80333.8 -289521
+-1.96686e+07 -81424.5 -299111
+-1.95941e+07 -79902.7 -301497
+-1.95184e+07 -76036.2 -297002
+-1.94429e+07 -70140.2 -286212
+-1.93688e+07 -62561.1 -269905
+0 -53661.2 -248990
+1.44698e+07 -1833.96 -106826
+1.45103e+07 -3471.04 -119078
+1.4551e+07 -5163.78 -131052
+1.45916e+07 -6850.81 -142358
+1.4632e+07 -8460.58 -152571
+1.46716e+07 -9913.29 -161253
+1.47105e+07 -11123.3 -167977
+1.47484e+07 -12002.4 -172352
+1.47852e+07 -12463.1 -174057
+1.4821e+07 -12422.7 -172870
+1.48561e+07 -11807.7 -168706
+1.48908e+07 -10558.2 -161638
+1.49258e+07 -8631.93 -151924
+1.4962e+07 -6008.45 -140010
+1.50004e+07 -2692.65 -126518
+1.50423e+07 1282.42 -112205
+1.50894e+07 5853.35 -97890.9
+1.51431e+07 10924.9 -84353.1
+1.52052e+07 16369.4 -72195.4
+1.52769e+07 22025.7 -61702.8
+1.53593e+07 27699.4 -52703.6
+1.54525e+07 33161.5 -44464.6
+1.55559e+07 38145.4 -35647.7
+1.56673e+07 42341.6 -24350.6
+1.57832e+07 45385 -8241.95
+1.58979e+07 46833.5 15226.7
+1.60039e+07 46128.3 48578.1
+1.6091e+07 42531.9 94111.6
+1.6146e+07 35032.7 153826
+1.61523e+07 22213.8 229497
+1.60883e+07 2088.4 322825
+1.59268e+07 -28080.7 435419
+1.56328e+07 -71937.1 568244
+1.51631e+07 -134059 720094
+1.44654e+07 -219560 884891
+1.34827e+07 -332514 1.0482e+06
+1.21651e+07 -471872 1.18464e+06
+1.04973e+07 -623968 1.25974e+06
+8.54148e+06 -754737 1.2404e+06
+6.47366e+06 -813229 1.11394e+06
+4.55707e+06 -761044 905192
+3.01402e+06 -616146 671937
+1.90272e+06 -445644 465672
+1.15924e+06 -299169 308801
+685963 -190827 199112
+396057 -116892 125601
+224011 -69214.1 77589
+124539 -39844.1 46938.1
+68243.8 -22415 27830.4
+36924.1 -12383.6 16204
+19723 -6749.51 9289.19
+10363.4 -3643.67 5258.85
+5301.57 -1955.15 2949.6
+2571.19 -1046.5 1644.8
+1096.61 -560.927 915.649
+295.299 -302.58 511.798
+-146.72 -165.683 290.05
+-398.844 -93.7627 169.996
+-553.693 -57.0935 107.446
+-664.688 -40.5872 79.1283
+-767.615 -37.4895 74.351
+-894.941 -46.5346 91.1092
+-1088.87 -71.4386 135.379
+-1418.39 -122.48 223.394
+-2007.57 -220.891 387.692
+-3086.46 -407.821 688.949
+-5084.3 -761.255 1237.28
+-8800.72 -1427.43 2229.05
+-15716.9 -2677.59 4008.57
+-28547.4 -5006.92 7167.56
+-52196.9 -9301.95 12699
+-95375.8 -17111.6 22223.7
+-173195 -31051.1 38308.6
+-311098 -55343.5 64898.3
+-550469 -96459.1 107916
+-955856 -163680 176166
+-1.62257e+06 -269120 282593
+-2.68107e+06 -426304 445106
+-4.28453e+06 -643445 683137
+-6.54008e+06 -900944 1.00181e+06
+-9.3627e+06 -1.12026e+06 1.36422e+06
+-1.24041e+07 -1.19362e+06 1.68393e+06
+-1.52559e+07 -1.09562e+06 1.86511e+06
+-1.76561e+07 -891759 1.86922e+06
+-1.95237e+07 -663621 1.7218e+06
+-2.08947e+07 -461842 1.48171e+06
+-2.18517e+07 -303387 1.20789e+06
+-2.24828e+07 -186342 941801
+-2.28649e+07 -102475 705118
+-2.30598e+07 -43292.6 504890
+-2.3116e+07 -1877.54 340162
+-2.30707e+07 26932.3 207176
+-2.2953e+07 46810 102387
+-2.27859e+07 60266.1 23483.2
+-2.25883e+07 68958 -30973
+-2.2376e+07 73958.3 -62506.9
+-2.21622e+07 75969.1 -73611.9
+-2.19571e+07 75476.4 -68153.5
+-2.17686e+07 72852 -51216.8
+-2.16017e+07 68414.2 -28543.6
+-2.1459e+07 62460.6 -5795.81
+-2.13407e+07 55284.1 12134
+-2.12455e+07 47177.5 21619
+-2.11704e+07 38433.6 20542.5
+-2.11122e+07 29341.2 8296.05
+-2.10669e+07 20180 -14411.5
+-2.10308e+07 11214.2 -45864.8
+-2.10004e+07 2686.08 -83697.6
+-2.09729e+07 -5189.83 -125234
+-2.09459e+07 -12232.4 -167778
+-2.09174e+07 -18297.7 -208826
+-2.08863e+07 -23282.2 -246215
+-2.08517e+07 -27123.1 -278201
+-2.08132e+07 -29798.1 -303500
+-2.07708e+07 -31322.9 -321286
+-2.07247e+07 -31748.1 -331175
+-2.06754e+07 -31153.9 -333184
+-2.06233e+07 -29645.2 -327673
+-2.05692e+07 -27345.2 -315288
+-2.05137e+07 -24389.5 -296882
+0 -20920 -273454
+1.47078e+07 1833.96 -109877
+1.47479e+07 3471.05 -122549
+1.47876e+07 5163.78 -134942
+1.48267e+07 6850.81 -146652
+1.48647e+07 8460.58 -157244
+1.49016e+07 9913.29 -166263
+1.49372e+07 11123.3 -173268
+1.49714e+07 12002.4 -177854
+1.50043e+07 12463.1 -179686
+1.50363e+07 12422.7 -178534
+1.50678e+07 11807.7 -174303
+1.50994e+07 10558.2 -167066
+1.5132e+07 8631.93 -157082
+1.51668e+07 6008.45 -144806
+1.52051e+07 2692.65 -130875
+1.52485e+07 -1282.42 -116067
+1.52987e+07 -5853.34 -101228
+1.53576e+07 -10924.9 -87162.8
+1.54269e+07 -16369.4 -74503.3
+1.55081e+07 -22025.7 -63559.1
+1.5602e+07 -27699.4 -54175.7
+1.57089e+07 -33161.5 -45626.3
+1.58279e+07 -38145.4 -36566.3
+1.59564e+07 -42341.5 -25072.2
+1.60906e+07 -45385 -8775.74
+1.62243e+07 -46833.4 14923.5
+1.63492e+07 -46128.3 48616.1
+1.64541e+07 -42531.9 94686.9
+1.65247e+07 -35032.7 155243
+1.65427e+07 -22213.8 232198
+1.64846e+07 -2088.39 327425
+1.63201e+07 28080.7 442740
+1.60112e+07 71937.1 579316
+1.55108e+07 134059 736085
+1.4764e+07 219560 906907
+1.37135e+07 332514 1.0769e+06
+1.23144e+07 471872 1.21968e+06
+1.05642e+07 623968 1.29928e+06
+8.54456e+06 754737 1.281e+06
+6.44756e+06 813229 1.15147e+06
+4.53424e+06 761044 936436
+3.00575e+06 616146 695840
+1.90571e+06 445644 482838
+1.16713e+06 299169 320599
+694302 190827 206978
+402809 116892 130715
+228757 69214.1 80833.5
+127594 39844.1 48947.5
+70098.6 22415 29047.2
+38002.3 12383.6 16925.9
+20328.5 6749.51 9710.12
+10692.4 3643.67 5500.87
+5472.52 1955.15 3087.29
+2653.19 1046.5 1722.6
+1128.98 560.927 959.494
+299.923 302.58 536.592
+-157.812 165.683 304.26
+-419.106 93.7627 178.415
+-579.724 57.0935 112.822
+-694.951 40.5872 83.1156
+-801.844 37.4895 78.0994
+-934.04 46.5346 95.6717
+-1135.22 71.4386 142.089
+-1476.78 122.48 234.342
+-2086.94 220.891 406.475
+-3203.15 407.821 721.931
+-5268.02 761.255 1295.76
+-9104.99 1427.43 2333.01
+-16236 2677.59 4192.83
+-29443.5 5006.92 7491.86
+-53740.2 9301.95 13263.8
+-97986.5 17111.6 23193.6
+-177465 31051.1 39946.1
+-317727 55343.5 67609.4
+-559956 96459.1 112311
+-967773 163680 183140
+-1.63444e+06 269120 293434
+-2.68734e+06 426304 461620
+-4.27727e+06 643445 707630
+-6.51594e+06 900944 1.03658e+06
+-9.33975e+06 1.12026e+06 1.41038e+06
+-1.24312e+07 1.19362e+06 1.73979e+06
+-1.53828e+07 1.09562e+06 1.92537e+06
+-1.79064e+07 891759 1.92712e+06
+-1.98929e+07 663621 1.77185e+06
+-2.13611e+07 461842 1.52119e+06
+-2.23884e+07 303387 1.23661e+06
+-2.30644e+07 186342 961137
+-2.34702e+07 102475 717080
+-2.36727e+07 43292.6 511466
+-2.37245e+07 1877.55 343011
+-2.36661e+07 -26932.3 207549
+-2.35289e+07 -46810 101179
+-2.33377e+07 -60266.1 21332
+-2.31128e+07 -68958 -33600.6
+-2.28711e+07 -73958.3 -65257.4
+-2.26267e+07 -75969.1 -76223.3
+-2.23909e+07 -75476.4 -70454.8
+-2.21724e+07 -72852 -53134.2
+-2.19771e+07 -68414.2 -30103
+-2.1808e+07 -62460.6 -7115.35
+-2.16662e+07 -55284.1 10862.3
+-2.15505e+07 -47177.5 20155.8
+-2.14584e+07 -38433.6 18631.1
+-2.13868e+07 -29341.2 5692.22
+-2.13318e+07 -20180 -17915.1
+-2.12896e+07 -11214.2 -50420.6
+-2.12566e+07 -2686.08 -89392.7
+-2.12295e+07 5189.83 -132088
+-2.12057e+07 12232.4 -175744
+-2.1183e+07 18297.8 -217802
+-2.11595e+07 23282.2 -256050
+-2.11341e+07 27123.1 -288708
+-2.11058e+07 29798.1 -314466
+-2.10742e+07 31322.9 -332486
+-2.10391e+07 31748.1 -342381
+-2.10004e+07 31153.9 -344173
+-2.09584e+07 29645.2 -338239
+-2.09135e+07 27345.2 -325243
+-2.0866e+07 24389.5 -306066
+0 20920 -281736
+1.44698e+07 4628.15 -106826
+1.45103e+07 8829.79 -119078
+1.4551e+07 13174.4 -131052
+1.45916e+07 17504.7 -142358
+1.4632e+07 21637.3 -152571
+1.46716e+07 25367.2 -161253
+1.47105e+07 28474.6 -167977
+1.47484e+07 30732 -172352
+1.47852e+07 31914.1 -174057
+1.4821e+07 31807 -172870
+1.48561e+07 30219.5 -168706
+1.48908e+07 26994.1 -161638
+1.49258e+07 22017.8 -151924
+1.4962e+07 15232.9 -140010
+1.50004e+07 6645.48 -126518
+1.50423e+07 -3666.38 -112205
+1.50894e+07 -15546.5 -97890.9
+1.51431e+07 -28756.1 -84353.1
+1.52052e+07 -42970.4 -72195.4
+1.52769e+07 -57776.1 -61702.8
+1.53593e+07 -72668 -52703.6
+1.54525e+07 -87044.8 -44464.6
+1.55559e+07 -100199 -35647.7
+1.56673e+07 -111298 -24350.6
+1.57832e+07 -119351 -8241.95
+1.58979e+07 -123144 15226.7
+1.60039e+07 -121136 48578.1
+1.6091e+07 -111287 94111.6
+1.6146e+07 -90804.2 153826
+1.61523e+07 -55772.7 229497
+1.60883e+07 -688.144 322825
+1.59268e+07 82112.1 435419
+1.56328e+07 203042 568244
+1.51631e+07 375652 720094
+1.44654e+07 615991 884891
+1.34827e+07 938713 1.0482e+06
+1.21651e+07 1.34568e+06 1.18464e+06
+1.04973e+07 1.80319e+06 1.25974e+06
+8.54148e+06 2.21497e+06 1.2404e+06
+6.47366e+06 2.42452e+06 1.11394e+06
+4.55707e+06 2.29833e+06 905192
+3.01402e+06 1.87213e+06 671937
+1.90272e+06 1.35468e+06 465672
+1.15924e+06 906837 308801
+685963 575884 199112
+396057 351022 125601
+224011 206871 77589
+124539 118612 46938.1
+68243.8 66512.8 27830.4
+36924.1 36652.8 16204
+19723 19938.6 9289.19
+10363.4 10748.2 5258.85
+5301.57 5760.75 2949.6
+2571.19 3080.69 1644.8
+1096.61 1650.14 915.649
+295.299 889.592 511.798
+-146.72 486.831 290.05
+-398.844 275.374 169.996
+-553.693 167.589 107.446
+-664.688 119.069 79.1283
+-767.615 109.947 74.351
+-894.941 136.492 91.1092
+-1088.87 209.642 135.379
+-1418.39 359.622 223.394
+-2007.57 648.933 387.692
+-3086.46 1198.86 688.949
+-5084.3 2239.28 1237.28
+-8800.72 4201.82 2229.05
+-15716.9 7888.98 4008.57
+-28547.4 14768.4 7167.56
+-52196.9 27475.7 12699
+-95375.8 50638.8 22223.7
+-173195 92118.2 38308.6
+-311098 164700 64898.3
+-550469 288172 107916
+-955856 491215 176166
+-1.62257e+06 811437 282593
+-2.68107e+06 1.29065e+06 445106
+-4.28453e+06 1.95307e+06 683137
+-6.54008e+06 2.73298e+06 1.00181e+06
+-9.3627e+06 3.37719e+06 1.36422e+06
+-1.24041e+07 3.55154e+06 1.68393e+06
+-1.52559e+07 3.20867e+06 1.86511e+06
+-1.76561e+07 2.57169e+06 1.86922e+06
+-1.95237e+07 1.88846e+06 1.7218e+06
+-2.08947e+07 1.30058e+06 1.48171e+06
+-2.18517e+07 848178 1.20789e+06
+-2.24828e+07 518996 941801
+-2.28649e+07 285660 705118
+-2.30598e+07 122240 504890
+-2.3116e+07 8541.36 340162
+-2.30707e+07 -70096.8 207176
+-2.2953e+07 -123948 102387
+-2.27859e+07 -160011 23483.2
+-2.25883e+07 -182931 -30973
+-2.2376e+07 -195756 -62506.9
+-2.21622e+07 -200512 -73611.9
+-2.19571e+07 -198613 -68153.5
+-2.17686e+07 -191137 -51216.8
+-2.16017e+07 -178986 -28543.6
+-2.1459e+07 -162985 -5795.8
+-2.13407e+07 -143920 12134
+-2.12455e+07 -122565 21619.1
+-2.11704e+07 -99676.2 20542.5
+-2.11122e+07 -75993.7 8296.05
+-2.10669e+07 -52225.9 -14411.5
+-2.10308e+07 -29037.8 -45864.8
+-2.10004e+07 -7036.72 -83697.6
+-2.09729e+07 13242.4 -125234
+-2.09459e+07 31348.6 -167778
+-2.09174e+07 46925.1 -208826
+-2.08863e+07 59715.5 -246215
+-2.08517e+07 69566.1 -278201
+-2.08132e+07 76424.4 -303500
+-2.07708e+07 80333.8 -321286
+-2.07247e+07 81424.5 -331175
+-2.06754e+07 79902.7 -333184
+-2.06233e+07 76036.2 -327673
+-2.05692e+07 70140.2 -315288
+-2.05137e+07 62561.1 -296882
+0 53661.2 -273454
+1.36653e+07 5272.65 -97764.1
+1.37059e+07 10277.9 -108815
+1.37484e+07 15453.5 -119602
+1.37923e+07 20612.7 -129769
+1.38375e+07 25537 -138933
+1.38834e+07 29982.1 -146697
+1.39297e+07 33685.1 -152674
+1.39759e+07 36374 -156514
+1.40215e+07 37777.2 -157928
+1.40662e+07 37636 -156724
+1.41096e+07 35716.5 -152828
+1.41515e+07 31822.8 -146318
+1.41919e+07 25810 -137436
+1.42309e+07 17595.9 -126595
+1.42689e+07 7172.85 -114367
+1.43067e+07 -5382.45 -101444
+1.4345e+07 -19900.2 -88565.9
+1.4385e+07 -36110.1 -76429.6
+1.44279e+07 -53634.6 -65561.7
+1.44748e+07 -71982.7 -56187.2
+1.45266e+07 -90541.6 -48102.1
+1.45838e+07 -108566 -40579.5
+1.46461e+07 -125157 -32333.9
+1.47122e+07 -139236 -21566.4
+1.47797e+07 -149485 -6098.87
+1.48445e+07 -154258 16417.6
+1.49013e+07 -151431 48264.6
+1.49424e+07 -138165 91460.4
+1.49583e+07 -110554 147679
+1.49368e+07 -63103.6 218314
+1.48627e+07 11980.4 304622
+1.47161e+07 125772 407725
+1.44718e+07 293909 528137
+1.40966e+07 538048 664442
+1.35475e+07 886495 810940
+1.27695e+07 1.37061e+06 954644
+1.17e+07 2.00929e+06 1.07312e+06
+1.02867e+07 2.77156e+06 1.13623e+06
+8.53179e+06 3.52023e+06 1.11523e+06
+6.55661e+06 3.98664e+06 999256
+4.62735e+06 3.88512e+06 810210
+3.03615e+06 3.20431e+06 599486
+1.88955e+06 2.31888e+06 413775
+1.13223e+06 1.54185e+06 273254
+659002 969861 175521
+374900 585177 110347
+209456 341622 67968.4
+115305 194347 41014.2
+62694.6 108309 24263.1
+33721.8 59393.4 14098.1
+17933.9 32189.9 8066.9
+9393.97 17305.4 4559.01
+4798.14 9254.61 2552.96
+2329.13 4940.34 1421.47
+999.681 2642.96 790.189
+279.285 1423.16 441.063
+-116.996 777.927 249.627
+-342.544 439.67 146.111
+-480.736 267.318 92.237
+-579.544 189.715 67.8707
+-671.073 175.091 63.7729
+-784.381 217.405 78.2149
+-957.372 334.245 116.368
+-1252.05 573.927 192.285
+-1780.19 1036.63 334.161
+-2750.26 1917.55 594.66
+-4551.99 3586.11 1069.52
+-7914.09 6737.73 1929.84
+-14196.6 12672.8 3476.24
+-25908.9 23776 6226.75
+-47624.1 44351.4 11053.1
+-87578.8 82037.9 19382.9
+-160311 149953 33486.5
+-290807 269722 56869.1
+-520840 475527 94822
+-917586 818007 155268
+-1.58269e+06 1.36443e+06 249941
+-2.65704e+06 2.18965e+06 395185
+-4.30357e+06 3.334e+06 608949
+-6.61667e+06 4.66332e+06 896373
+-9.44099e+06 5.6901e+06 1.22405e+06
+-1.23272e+07 5.81861e+06 1.51355e+06
+-1.48704e+07 5.08059e+06 1.6797e+06
+-1.68943e+07 3.93863e+06 1.68864e+06
+-1.84047e+07 2.80986e+06 1.56245e+06
+-1.9486e+07 1.89151e+06 1.35242e+06
+-2.02343e+07 1.21394e+06 1.11024e+06
+-2.07313e+07 736304 872743
+-2.10402e+07 405521 659530
+-2.12088e+07 177759 477400
+-2.12735e+07 21457 326050
+-2.12622e+07 -85163 202649
+-2.11968e+07 -156943 104497
+-2.10952e+07 -203910 29922.4
+-2.0972e+07 -232774 -22061.7
+-2.08395e+07 -248009 -52635
+-2.07077e+07 -252641 -63970.6
+-2.05844e+07 -248794 -59590
+-2.0475e+07 -238061 -44203.4
+-2.03825e+07 -221730 -23169.1
+-2.03079e+07 -200918 -1794.74
+-2.02501e+07 -176648 15315.6
+-2.02067e+07 -149881 24731.5
+-2.01744e+07 -121533 24427.5
+-2.01495e+07 -92476 13785.7
+-2.01282e+07 -63532.1 -6581.35
+-2.01072e+07 -35462.2 -35118.3
+-2.00834e+07 -8954.5 -69657.7
+-2.00548e+07 15388.7 -107738
+-2.00198e+07 37062.7 -146870
+-1.99776e+07 55670.4 -184741
+-1.9928e+07 70928.3 -219347
+-1.98715e+07 82669.9 -249072
+-1.98086e+07 90843.2 -272720
+-1.97406e+07 95506.1 -289521
+-1.96686e+07 96816.2 -299111
+-1.95941e+07 95018.6 -301497
+-1.95184e+07 90430.6 -297002
+-1.94429e+07 83424.8 -286212
+-1.93688e+07 74410.7 -269905
+0 63816.7 -248990
+1.20718e+07 3693.18 -83101.2
+1.21104e+07 7639.14 -92336.5
+1.21523e+07 11719 -101353
+1.21973e+07 15785.8 -109855
+1.22451e+07 19667.2 -117521
+1.2295e+07 23169.9 -124018
+1.23466e+07 26085.4 -129022
+1.23991e+07 28196.7 -132238
+1.24516e+07 29286.5 -133423
+1.25032e+07 29145.6 -132412
+1.25532e+07 27582.2 -129145
+1.26006e+07 24432.2 -123681
+1.26446e+07 19568 -116223
+1.26847e+07 12909.2 -107112
+1.27204e+07 4430.95 -96825.3
+1.27516e+07 -5827.03 -85933.7
+1.27785e+07 -17752.3 -75050
+1.28013e+07 -31151.9 -64742.4
+1.28206e+07 -45744 -55432
+1.28373e+07 -61148.9 -47279.3
+1.2852e+07 -76877.1 -40079.2
+1.28653e+07 -92313.2 -33184.7
+1.28775e+07 -106691 -25483.7
+1.28883e+07 -119052 -15447.7
+1.28969e+07 -128183 -1258.41
+1.29014e+07 -132512 19000.4
+1.28995e+07 -129940 47129.3
+1.28878e+07 -117591 84640.7
+1.28619e+07 -91423.6 132695
+1.28165e+07 -45664.3 192174
+1.2745e+07 28050.5 263830
+1.26391e+07 141992 348331
+1.24873e+07 314424 445907
+1.22728e+07 572752 555297
+1.19685e+07 957307 671857
+1.15285e+07 1.52233e+06 785180
+1.08776e+07 2.32361e+06 877454
+9.90912e+06 3.37234e+06 924935
+8.52008e+06 4.53892e+06 905084
+6.71743e+06 5.45023e+06 809205
+4.75395e+06 5.56821e+06 654144
+3.06427e+06 4.68192e+06 481065
+1.85315e+06 3.38058e+06 329338
+1.07616e+06 2.21882e+06 215759
+607919 1.37354e+06 137646
+336936 815668 86061.4
+184341 469465 52786.2
+99809.4 264102 31746.7
+53555 145928 18727.6
+28523.3 79470.1 10855
+15060.5 42852.3 6197.66
+7845.19 22956.4 3495.55
+3995.72 12237.5 1953.74
+1942.27 6516.08 1085.9
+840.975 3481.1 602.615
+247.073 1871.39 335.807
+-77.9003 1021.1 189.752
+-262.451 576.697 110.894
+-375.133 350.224 69.9088
+-455.344 248.161 51.3992
+-529.56 228.916 48.3071
+-621.485 284.258 59.3156
+-762.458 437.683 88.3852
+-1003.41 752.379 146.277
+-1436.45 1360.18 254.611
+-2236.4 2520.99 453.843
+-3729.47 4722.57 817.692
+-6527.54 8886.12 1478.17
+-11794.2 16757 2667.89
+-21697 31537.1 4788.92
+-40226.6 59033.9 8520.11
+-74766.9 109748 14977.7
+-138732 201968 25947.7
+-255882 366333 44206.2
+-467904 652957 73982.8
+-845722 1.13882e+06 121711
+-1.50181e+06 1.92872e+06 197099
+-2.59859e+06 3.14238e+06 313893
+-4.32583e+06 4.84287e+06 487645
+-6.76184e+06 6.78505e+06 723548
+-9.61044e+06 8.11896e+06 993488
+-1.22187e+07 7.91735e+06 1.23117e+06
+-1.4214e+07 6.52124e+06 1.36841e+06
+-1.55933e+07 4.77306e+06 1.37932e+06
+-1.65112e+07 3.2375e+06 1.28167e+06
+-1.71225e+07 2.0927e+06 1.1159e+06
+-1.75343e+07 1.30374e+06 923063
+-1.7812e+07 776218 732657
+-1.79951e+07 425289 560595
+-1.81091e+07 191112 412508
+-1.8172e+07 34692.1 288312
+-1.81974e+07 -69130.1 185919
+-1.81964e+07 -136834 103420
+-1.8178e+07 -179368 39804.3
+-1.815e+07 -204044 -5367.18
+-1.81191e+07 -215766 -32739.9
+-1.80907e+07 -217851 -43873.3
+-1.80687e+07 -212602 -41560
+-1.80554e+07 -201684 -29689.3
+-1.80516e+07 -186375 -12773.9
+-1.80563e+07 -167713 4666.03
+-1.80675e+07 -146590 18680.2
+-1.80821e+07 -123802 26306.4
+-1.80967e+07 -100076 25779.7
+-1.81077e+07 -76081.2 16540.5
+-1.81119e+07 -52433 -915.02
+-1.81065e+07 -29692.2 -25280.5
+-1.80897e+07 -8359.13 -54723.8
+-1.80602e+07 11132.2 -87159.6
+-1.80177e+07 28420.8 -120480
+-1.79625e+07 43224.6 -152725
+-1.78958e+07 55344.8 -182203
+-1.78189e+07 64667.5 -207549
+-1.77338e+07 71163.8 -227758
+-1.76426e+07 74885.7 -242187
+-1.75476e+07 75960.3 -250535
+-1.7451e+07 74581 -252816
+-1.7355e+07 70996.4 -249308
+-1.72616e+07 65497.8 -240511
+-1.71724e+07 58405.6 -227083
+0 50054.7 -209792
+9.52443e+06 1095.44 -63969.3
+9.55688e+06 3056.46 -71013.5
+9.59315e+06 5083.46 -77929.6
+9.63304e+06 7103.25 -84497.8
+9.67624e+06 9029.34 -90476.8
+9.72226e+06 10764.3 -95614
+9.77046e+06 12202.8 -99659
+9.82005e+06 13234.5 -102379
+9.87011e+06 13748.1 -103578
+9.9196e+06 13635 -103111
+9.9674e+06 12793.8 -100911
+1.00124e+07 11134.8 -96997
+1.00534e+07 8584.21 -91491.9
+1.00894e+07 5088.98 -84625.5
+1.01196e+07 621.229 -76726.8
+1.01431e+07 -4817.23 -68201.1
+1.01596e+07 -11190.1 -59487.5
+1.01687e+07 -18421.6 -50997.8
+1.01705e+07 -26390.5 -43041.2
+1.01652e+07 -34922.5 -35741.4
+1.01532e+07 -43780.4 -28961.4
+1.01351e+07 -52649.2 -22251.9
+1.01114e+07 -61113.2 -14842.2
+1.00825e+07 -68620.3 -5686.28
+1.00489e+07 -74424.6 6430.98
+1.00109e+07 -77495.1 22742.9
+9.96909e+06 -76374.7 44341.3
+9.92414e+06 -68960.7 72063.1
+9.87724e+06 -52171.5 106478
+9.83034e+06 -21430.7 148000
+9.7864e+06 30164.2 197060
+9.74949e+06 113273 254205
+9.72459e+06 244925 319865
+9.71594e+06 453324 393563
+9.72164e+06 785920 472488
+9.71974e+06 1.31979e+06 549702
+9.63968e+06 2.16463e+06 612956
+9.32294e+06 3.4276e+06 645761
+8.51581e+06 5.08276e+06 632288
+7.00365e+06 6.72205e+06 565699
+4.95423e+06 7.41933e+06 456115
+3.07826e+06 6.4072e+06 331861
+1.76601e+06 4.5861e+06 223673
+972963 2.94043e+06 144370
+523969 1.77667e+06 91006.8
+278885 1.03219e+06 56405.1
+148023 582991 34403.9
+78287.4 323559 20618.2
+41189.1 177058 12130.8
+21648.7 95605.1 7017.07
+11329.7 51256.1 4000.1
+5849.27 27371.7 2252.83
+2967.28 14531.8 1257.41
+1447.53 7712.98 697.993
+631.962 4119.41 386.866
+195.515 2210.01 215.312
+-40.5115 1202.33 121.533
+-175.155 679.581 70.9606
+-257.079 412.291 44.7051
+-314.846 291.432 32.8718
+-368.381 268.867 30.9228
+-434.482 333.63 38.0113
+-536.95 515.05 56.6964
+-712.49 886.024 93.9175
+-1026.96 1601.08 163.61
+-1615.13 2976.75 291.924
+-2720.66 5587.05 526.6
+-4792.61 10517.4 953.185
+-8739.95 19899.3 1722.75
+-16265.5 37598.3 3097.29
+-30475.1 70600.6 5519.82
+-57459.8 132015 9721.63
+-108782 244988 16882.9
+-205415 448602 28853.6
+-387155 810332 48492.1
+-728386 1.43961e+06 80300.3
+-1.35556e+06 2.49031e+06 131348
+-2.46908e+06 4.15251e+06 211970
+-4.32606e+06 6.54327e+06 334551
+-7.00358e+06 9.23871e+06 504298
+-9.94349e+06 1.07613e+07 699343
+-1.21044e+07 9.71565e+06 867700
+-1.32516e+07 7.27214e+06 962445
+-1.37038e+07 4.83571e+06 968245
+-1.38242e+07 3.00794e+06 898848
+-1.38324e+07 1.80887e+06 782907
+-1.38231e+07 1.06533e+06 649323
+-1.38254e+07 608900 518782
+-1.38431e+07 325287 402118
+-1.38726e+07 146329 302638
+-1.39097e+07 32635.3 219525
+-1.3951e+07 -39091.3 150683
+-1.39946e+07 -83235.1 94428.7
+-1.40394e+07 -109002 50035.3
+-1.40854e+07 -122399 17437.3
+-1.4133e+07 -127375 -3443.82
+-1.41828e+07 -126538 -13327.1
+-1.42353e+07 -121624 -13888.7
+-1.42902e+07 -113818 -7703.96
+-1.43467e+07 -103956 2095.72
+-1.44029e+07 -92658.8 12294.9
+-1.44566e+07 -80411.4 20047
+-1.45051e+07 -67615.9 23208.6
+-1.45457e+07 -54617.5 20510.9
+-1.45756e+07 -41721.6 11575
+-1.45927e+07 -29201.3 -3197.25
+-1.45954e+07 -17300.7 -22808.4
+-1.45827e+07 -6235.42 -45879.8
+-1.45545e+07 3808.68 -70857.9
+-1.45112e+07 12677.9 -96186.3
+-1.4454e+07 20252.7 -120434
+-1.43845e+07 26450.2 -142377
+-1.43047e+07 31225.2 -161045
+-1.4217e+07 34570.4 -175741
+-1.41237e+07 36516.1 -186034
+-1.40274e+07 37127.4 -191746
+-1.39306e+07 36501.1 -192928
+-1.38353e+07 34760.9 -189821
+-1.37438e+07 32051.3 -182822
+-1.36577e+07 28531.2 -172438
+0 24366.3 -159250
+6.2431e+06 -870.795 -42692.9
+6.26544e+06 -481.477 -47444.8
+6.29063e+06 -78.616 -52184
+6.31855e+06 322.376 -56774.1
+6.34902e+06 702.819 -61060.4
+6.3817e+06 1041.41 -64875.7
+6.41616e+06 1314.89 -68046.9
+6.45185e+06 1498.66 -70405
+6.48808e+06 1567.46 -71795.4
+6.52409e+06 1495.97 -72090.4
+6.55903e+06 1259.55 -71201.6
+6.592e+06 834.872 -69092.2
+6.62206e+06 200.647 -65787.4
+6.64832e+06 -661.673 -61380.2
+6.66993e+06 -1767.14 -56030.2
+6.68614e+06 -3126.46 -49953.6
+6.69634e+06 -4745.04 -43400.5
+6.70004e+06 -6621.65 -36621.7
+6.69697e+06 -8746.66 -29825.1
+6.687e+06 -11099.2 -23129.7
+6.67018e+06 -13642.7 -16523.3
+6.64671e+06 -16317.6 -9837.39
+6.61694e+06 -19029.9 -2748.24
+6.58141e+06 -21631.2 5187.13
+6.54094e+06 -23888.8 14460.8
+6.49672e+06 -25437.5 25523.3
+6.45061e+06 -25704.3 38702.3
+6.40545e+06 -23793.4 54170.6
+6.36558e+06 -18303.6 72002.6
+6.33751e+06 -7027.4 92326.9
+6.33081e+06 13586.3 115526
+6.35936e+06 49496.8 142361
+6.44298e+06 111361 173835
+6.60894e+06 219644 210637
+6.89078e+06 415702 252095
+7.31665e+06 783377 294889
+7.86875e+06 1.4814e+06 332174
+8.39099e+06 2.76039e+06 354188
+8.46623e+06 4.86127e+06 351059
+7.46718e+06 7.58863e+06 317259
+5.222e+06 9.55584e+06 256018
+3.00822e+06 8.53653e+06 182542
+1.56523e+06 5.96769e+06 119064
+791401 3.67288e+06 74464.7
+395692 2.14603e+06 45722.6
+197942 1.21371e+06 27792.2
+101239 669945 16778.2
+52094 366978 10012.4
+26599.5 199258 5874.46
+13821.2 106518 3392.72
+7212.01 56822.8 1934.03
+3654.28 30352.8 1089.28
+1847.92 16021.5 607.751
+919.085 8468.58 337.414
+399.864 4543.87 187.052
+127.915 2429.83 104.08
+-12.3881 1313.48 58.7854
+-96.9451 747.263 34.3742
+-148.154 452.961 21.6862
+-182.877 318.458 15.9907
+-215.864 294.63 15.0897
+-255.306 364.167 18.5564
+-319.573 565.938 27.6578
+-429.247 973.337 45.7627
+-616.221 1748.75 79.563
+-983.61 3273.28 141.793
+-1684.97 6159 255.715
+-2950.4 11545.4 462.59
+-5430.14 21943.4 835.809
+-10308.1 41679.9 1503.28
+-19394.3 78241.7 2679.15
+-37055.6 147080 4719.56
+-72304.6 275633 8213.41
+-140293 508549 14087.9
+-274513 930780 23807.8
+-549527 1.69155e+06 39923.1
+-1.10063e+06 3.0036e+06 66803.5
+-2.18214e+06 5.17398e+06 111033
+-4.20964e+06 8.48072e+06 181265
+-7.33647e+06 1.22405e+07 282504
+-1.05167e+07 1.37788e+07 399193
+-1.19222e+07 1.09208e+07 493581
+-1.18129e+07 6.94125e+06 540448
+-1.10873e+07 3.89258e+06 535221
+-1.03296e+07 2.05726e+06 488475
+-9.74951e+06 1.07083e+06 418238
+-9.36536e+06 559850 342057
+-9.13596e+06 291254 271958
+-9.01565e+06 144270 213383
+-8.96872e+06 60613.6 166763
+-8.9698e+06 12047.7 129928
+-9.00138e+06 -15912.2 100164
+-9.05147e+06 -31309.6 75463.4
+-9.11204e+06 -38932.2 54929.1
+-9.17791e+06 -41755.7 38538.7
+-9.24585e+06 -41662.5 26596.3
+-9.31389e+06 -39842.8 19191.9
+-9.38072e+06 -37040.7 15874.8
+-9.44529e+06 -33714.1 15600.8
+-9.5065e+06 -30139.4 16901.1
+-9.56309e+06 -26482 18163.6
+-9.61363e+06 -22841.5 17922.5
+-9.65659e+06 -19281 15079.8
+-9.6905e+06 -15844.4 9025.35
+-9.71407e+06 -12566.3 -344.728
+-9.72631e+06 -9477.07 -12691.2
+-9.72664e+06 -6604.75 -27344.3
+-9.71493e+06 -3975.47 -43435.8
+-9.69148e+06 -1612.86 -60023.9
+-9.65703e+06 462.838 -76196.1
+-9.61267e+06 2235.69 -91141.7
+-9.55979e+06 3694.86 -104196
+-9.5e+06 4835.33 -114861
+-9.43504e+06 5658.37 -122806
+-9.36669e+06 6171.84 -127862
+-9.29674e+06 6390.15 -130009
+-9.22689e+06 6333.92 -129350
+-9.1587e+06 6029.3 -126096
+-9.09357e+06 5506.77 -120534
+-9.0327e+06 4799.66 -113007
+0 3942.21 -103888
+3.03626e+06 -1442.75 -22860.2
+3.04756e+06 -1546.54 -25506.4
+3.06006e+06 -1651.24 -28221.9
+3.07373e+06 -1754.56 -30943.4
+3.08852e+06 -1853.99 -33593.8
+3.1043e+06 -1946.82 -36083.3
+3.12091e+06 -2030.21 -38311.9
+3.13816e+06 -2101.25 -40173.5
+3.15578e+06 -2157.09 -41560
+3.17346e+06 -2195.1 -42367.8
+3.19086e+06 -2212.91 -42504.9
+3.2076e+06 -2208.61 -41898.2
+3.22326e+06 -2180.73 -40501.4
+3.23745e+06 -2128.41 -38301.5
+3.24974e+06 -2051.51 -35322.7
+3.25974e+06 -1950.78 -31626.5
+3.26708e+06 -1828.15 -27306.2
+3.27145e+06 -1687.1 -22477.3
+3.27257e+06 -1533.03 -17262
+3.27021e+06 -1373.49 -11773.3
+3.2642e+06 -1218.15 -6101.1
+3.25444e+06 -1078.13 -306.019
+3.2409e+06 -964.48 5574.9
+3.22366e+06 -885.616 11508
+3.20301e+06 -843.72 17431.5
+3.17958e+06 -830.395 23224.1
+3.15455e+06 -822.29 28691.9
+3.12993e+06 -777.404 33599.8
+3.1091e+06 -631.543 37764.9
+3.09747e+06 -288.937 41213.7
+3.10367e+06 419.546 44359.8
+3.14155e+06 1911.98 48119.4
+3.23382e+06 5530.09 53844.5
+3.41851e+06 15944.7 62965.7
+3.75886e+06 49052.3 76315
+4.35193e+06 155266 93274.6
+5.31118e+06 478515 111151
+6.6509e+06 1.37165e+06 125329
+7.95976e+06 3.50468e+06 130482
+7.98072e+06 7.52838e+06 122331
+5.36181e+06 1.21447e+07 99538.7
+2.62421e+06 1.12468e+07 67344
+1.12061e+06 7.44784e+06 40209.4
+495045 4.2819e+06 22996.7
+220731 2.41011e+06 12795.2
+99192.4 1.32912e+06 7062.85
+50544.6 714936 4083.59
+25825.9 389572 2434.5
+12193.2 211693 1416.59
+6528.53 111515 811.172
+3587.55 59393.5 468.413
+1651.35 32086 266.593
+844.824 16717.7 148.195
+480.637 8772.72 82.8723
+187.331 4804.62 46.4955
+54.4336 2544.95 25.826
+7.28133 1350.63 14.7277
+-39.982 788.687 8.80732
+-67.1398 476.466 5.59069
+-81.0006 329.628 4.17414
+-97.9539 309.034 4.01325
+-112.668 375.748 4.9026
+-147.854 596.443 7.28189
+-207.56 1025.23 11.9704
+-270.733 1798.29 20.2958
+-454.138 3432.28 35.7496
+-842.347 6502.37 64.3828
+-1334.1 11954.2 114.746
+-2461.14 22917.5 205.566
+-5090.13 44026.9 370.742
+-9074.15 81709.6 653.136
+-16952.4 154025 1135.89
+-35732.1 292731 1997.07
+-69535.1 539358 3461.95
+-136909 992980 5881.49
+-305644 1.85158e+06 10394.9
+-685521 3.36883e+06 19361.2
+-1.55575e+06 6.02038e+06 35747.4
+-3.65709e+06 1.05484e+07 63949.7
+-7.48778e+06 1.60324e+07 108599
+-1.11498e+07 1.73979e+07 160833
+-1.11062e+07 1.08184e+07 196167
+-9.27012e+06 5.03217e+06 205875
+-7.40817e+06 1.95614e+06 192327
+-6.08776e+06 672347 163184
+-5.27904e+06 212841 128249
+-4.81842e+06 64982.1 96204.1
+-4.56968e+06 20313.6 72253
+-4.44593e+06 6736.99 57693.8
+-4.3959e+06 2082.08 50950.4
+-4.38934e+06 113.583 49100.6
+-4.40789e+06 -834.916 49202
+-4.44007e+06 -1240.26 49109.9
+-4.47862e+06 -1301.46 47751.1
+-4.51903e+06 -1158.27 44971.9
+-4.55863e+06 -929.151 41160.3
+-4.5959e+06 -708.342 36844.7
+-4.63007e+06 -559.449 32406.1
+-4.66074e+06 -514.467 27954.2
+-4.68765e+06 -578.587 23347.9
+-4.71057e+06 -738.319 18300.6
+-4.72925e+06 -970.187 12510.6
+-4.7434e+06 -1248.01 5769.03
+-4.75272e+06 -1547.84 -1976.03
+-4.75701e+06 -1850.4 -10604
+-4.75615e+06 -2141.67 -19845.9
+-4.75014e+06 -2412.1 -29332.6
+-4.73915e+06 -2655.41 -38652
+-4.72351e+06 -2867.35 -47401.2
+-4.70365e+06 -3044.77 -55227.2
+-4.68013e+06 -3185.18 -61851.4
+-4.65359e+06 -3286.71 -67080.2
+-4.62472e+06 -3348.17 -70804.7
+-4.59422e+06 -3369.34 -72993.1
+-4.56281e+06 -3351.04 -73680.3
+-4.53115e+06 -3295.23 -72955.8
+-4.49988e+06 -3204.93 -70951.4
+-4.46956e+06 -3084.09 -67828.6
+-4.44068e+06 -2937.52 -63767.3
+-4.41366e+06 -2770.72 -58954.4
+0 -2589.82 -53575.6
+186003 -85.556 -4077.07
+186390 -91.5122 -4555.88
+186808 -97.5059 -5056.28
+187255 -103.402 -5567.88
+187731 -109.055 -6077.62
+188235 -114.311 -6569.88
+188764 -119.007 -7026.74
+189315 -122.98 -7428.42
+189881 -126.071 -7753.92
+190456 -128.136 -7981.83
+191029 -129.049 -8091.25
+191590 -128.714 -8062.95
+192126 -127.066 -7880.5
+192623 -124.08 -7531.51
+193068 -119.777 -7008.76
+193446 -114.237 -6311.21
+193744 -107.61 -5444.71
+193949 -100.142 -4422.51
+194047 -92.1926 -3265.39
+194024 -84.2442 -2001.61
+193864 -76.8982 -666.636
+193546 -70.8271 697.146
+193049 -66.6771 2040.9
+192352 -64.9045 3309.92
+191442 -65.5488 4444.84
+190322 -67.9635 5384.01
+189030 -70.5448 6067.94
+187649 -70.4647 6446.53
+186326 -63.1407 6489.34
+185295 -39.7267 6197.56
+184915 25.984 5614.69
+185831 240.81 4830.71
+189516 1074.85 3973.85
+200059 4532.3 3184.67
+229378 18619.3 2570.62
+310234 72861.7 2143.13
+520268 266255 1743.15
+996079 892549 974.992
+1.81828e+06 2.67714e+06 -750.279
+2.49419e+06 6.84264e+06 -3724.02
+1.42729e+06 1.31942e+07 -6652.37
+412092 1.22413e+07 -6421.93
+72652.2 7.77025e+06 -3923.69
+25283.4 4.31853e+06 -1844.2
+6787.83 2.42275e+06 -1161.79
+-665.745 1.33342e+06 -897.622
+1817.62 710678 -491.706
+1234.69 389160 -193.695
+-167.984 212564 -98.399
+185.495 110882 -58.7778
+265.276 59163.7 -23.4329
+-30.1897 32302.1 -9.87898
+-0.852708 16647 -6.46079
+52.9251 8696.9 -2.54826
+-2.86777 4848.96 -1.06487
+-8.83081 2545.03 -0.942249
+7.32745 1331.07 -0.239371
+-1.46314 795.432 0.0550159
+-4.48211 478.283 -0.10192
+-2.30798 326.578 -0.0526243
+-4.35483 310.221 0.0546923
+-0.885134 371.262 -0.0389106
+-5.81846 599.838 -0.0426335
+-15.8116 1032.5 0.194045
+5.4024 1772.47 -0.192978
+-6.74059 3436.28 -0.979636
+-75.4509 6555.18 -0.899232
+1.18409 11847.1 -2.84881
+19.5947 22841.5 -7.85191
+-370.075 44305.4 -11.6488
+-218.82 81347.9 -29.5159
+191.058 153222 -76.9073
+-1774.63 293948 -129.394
+-2381.09 538560 -262.109
+866.133 987230 -679.213
+-10257.7 1.85826e+06 -1234.37
+-36483.7 3.38681e+06 -1573.74
+-105582 6.07435e+06 -2536.79
+-597082 1.10161e+07 -5566.94
+-2.05991e+06 1.7467e+07 -9235.81
+-3.59367e+06 1.89087e+07 -9647.05
+-2.61595e+06 9.82807e+06 -5418.54
+-1.42884e+06 3.83811e+06 -1227.33
+-746982 1.26985e+06 951.129
+-450679 373079 1581.66
+-339356 99608.1 1641.16
+-300110 24559.5 1837.62
+-286255 5699.65 2506.61
+-281404 1271.23 3691.14
+-280236 252.423 5247.9
+-280935 -4.92887 6945.31
+-282687 -85.9197 8541.82
+-284978 -113.245 9838.28
+-287426 -115.52 10703.1
+-289763 -104.014 11074.7
+-291827 -86.5365 10948.4
+-293551 -69.119 10357.5
+-294933 -55.8746 9356.5
+-296013 -48.9533 8007.79
+-296840 -48.8304 6375.69
+-297459 -54.8004 4523.92
+-297902 -65.5107 2515.72
+-298185 -79.411 414.378
+-298312 -95.0592 -1716.75
+-298283 -111.278 -3815.26
+-298097 -127.19 -5821.57
+-297755 -142.186 -7681.23
+-297267 -155.844 -9347.22
+-296648 -167.868 -10781.9
+-295917 -178.031 -11958
+-295097 -186.154 -12859.2
+-294212 -192.097 -13479.9
+-293286 -195.77 -13824
+-292339 -197.142 -13904
+-291390 -196.252 -13739.2
+-290455 -193.204 -13354.7
+-289545 -188.167 -12779.4
+-288671 -181.366 -12044.8
+-287838 -173.074 -11183.5
+-287052 -163.608 -10228.1
+0 -153.323 -9210.22
+10701.2 -4.9878 -242.667
+10724.1 -5.32271 -269.972
+10748.6 -5.65891 -298.398
+10774.8 -5.98854 -327.351
+10802.7 -6.30339 -356.086
+10832 -6.59483 -383.716
+10862.8 -6.85389 -409.227
+10894.7 -7.0716 -431.507
+10927.4 -7.23939 -449.376
+10960.6 -7.34959 -461.637
+10993.5 -7.39592 -467.127
+11025.7 -7.37385 -464.779
+11056.2 -7.28103 -453.694
+11084.4 -7.11759 -433.199
+11109.3 -6.88664 -402.924
+11130 -6.59487 -362.843
+11145.6 -6.2534 -313.324
+11155.2 -5.87889 -255.152
+11157.8 -5.49454 -189.531
+11152.2 -5.13063 -118.082
+11137.3 -4.8237 -42.8239
+11111.6 -4.61358 33.8482
+11073.4 -4.53703 109.185
+11021.2 -4.61766 180.119
+10954 -4.85189 243.33
+10872 -5.19271 295.383
+10777.2 -5.53223 332.978
+10675.2 -5.67525 353.37
+10575.6 -5.23162 354.953
+10495.7 -2.98872 337.944
+10472.5 6.61687 304.958
+10619.6 51.9938 261.157
+11375.7 275.311 213.498
+14502.8 1353.03 168.297
+26721.2 6326.79 125.121
+71372.8 28089.1 60.8043
+219473 117925 -112.193
+646270 465175 -633.671
+1.62108e+06 1.70043e+06 -1978.61
+2.89514e+06 5.56222e+06 -4551.81
+1.51816e+06 1.45544e+07 -7140.54
+303438 1.34343e+07 -5646.41
+4159.13 8.05172e+06 -2098.68
+11824 4.30039e+06 -49.373
+812.608 2.42862e+06 -166.473
+-5415.46 1.33705e+06 -512.927
+1233.1 702541 -279.662
+1017.68 388525 -41.0105
+-860.348 213998 -25.7487
+51.9274 109742 -30.4418
+297.359 58794.9 -5.98974
+-138.624 32673.6 -0.931868
+-38.8993 16514.2 -3.4503
+70.6616 8569.64 -0.722201
+-15.6426 4926.43 -0.177316
+-17.5164 2542.6 -0.823125
+13.4641 1297.4 -0.0144362
+-0.276163 807.467 0.252795
+-3.76748 480.829 -0.120042
+1.00976 321.1 -0.0806486
+-2.01098 312.518 0.0736375
+5.1595 363.281 -0.0947197
+-1.25976 605.053 -0.0984939
+-16.7152 1045.72 0.386562
+24.0984 1728.05 -0.0392824
+14.3386 3440.09 -0.973184
+-91.2015 6648.42 0.176502
+63.9628 11667.5 -0.671228
+162.605 22697 -4.20684
+-411.24 44788.8 0.227748
+-4.17111 80767.8 -6.09253
+1119.45 151778 -38.4484
+-1531.03 295973 -28.7947
+-1481.59 537311 -50.799
+7486.8 976160 -386.901
+-2178.41 1.86426e+06 -693.764
+-17208.2 3.39455e+06 -158.613
+-7289.54 6.04951e+06 -14.6276
+-440970 1.14246e+07 -3119.12
+-2.18441e+06 1.91806e+07 -8452.9
+-4.15286e+06 2.08551e+07 -10779.7
+-2.31579e+06 7.98315e+06 -6916.14
+-914528 2.4347e+06 -3037.47
+-305967 660657 -1008.01
+-98063.5 164904 -235.051
+-36925.2 38322.4 2.65797
+-20776.1 8328.32 77.0581
+-16820.1 1695.75 128.253
+-15907.3 323.068 195.85
+-15746.4 54.909 282.117
+-15800.1 3.71125 376.678
+-15934.8 -6.76215 466.455
+-16103.7 -9.12269 540.145
+-16280.5 -9.22618 590.108
+-16447.8 -8.36678 612.63
+-16595.5 -7.10231 607.253
+-16719.3 -5.81522 575.716
+-16819.1 -4.76526 520.95
+-16897.6 -4.09281 446.372
+-16958 -3.8359 355.511
+-17003.7 -3.95944 251.877
+-17036.8 -4.3873 138.982
+-17058.8 -5.02947 20.368
+-17070.4 -5.80076 -100.386
+-17071.8 -6.6305 -219.724
+-17063.3 -7.46514 -334.23
+-17045.3 -8.26628 -440.76
+-17018.3 -9.00675 -536.582
+-16983.3 -9.66662 -619.49
+-16941.7 -10.2304 -687.875
+-16894.6 -10.6856 -740.744
+-16843.6 -11.0224 -777.712
+-16790 -11.2343 -798.948
+-16735 -11.3185 -805.105
+-16679.7 -11.2763 -797.243
+-16624.9 -11.1133 -776.741
+-16571.4 -10.8384 -745.212
+-16519.8 -10.4641 -704.423
+-16470.4 -10.0054 -656.213
+-16423.7 -9.48031 -602.424
+0 -8.90895 -544.846
+613.152 -0.249375 -14.3594
+614.494 -0.265541 -15.9092
+615.928 -0.281734 -17.5165
+617.455 -0.297564 -19.1473
+619.072 -0.31263 -20.7594
+620.774 -0.32652 -22.3027
+622.551 -0.33881 -23.7201
+624.389 -0.349078 -24.9493
+626.269 -0.356929 -25.9243
+628.166 -0.362019 -26.5785
+630.047 -0.364078 -26.8474
+631.873 -0.362933 -26.6724
+633.599 -0.358529 -26.0042
+635.174 -0.350947 -24.8068
+636.544 -0.340427 -23.0612
+637.65 -0.327393 -20.768
+638.431 -0.312503 -17.9501
+638.823 -0.296689 -14.6534
+638.755 -0.281212 -10.9476
+638.147 -0.267668 -6.92526
+636.907 -0.257944 -2.70086
+634.929 -0.254045 1.59051
+632.099 -0.257755 5.79459
+628.307 -0.270103 9.73995
+623.48 -0.290633 13.2417
+617.618 -0.316558 16.1093
+610.86 -0.341721 18.161
+603.549 -0.353964 19.2477
+596.403 -0.320308 19.2862
+591.189 -0.0940989 18.2967
+594.367 1.13523 16.4298
+636.111 7.92368 13.9563
+863.719 45.0424 11.1481
+1970.78 242.166 7.80691
+7035.04 1255.91 1.4594
+28788.1 6323.08 -19.5153
+115594 31084 -99.472
+430468 150142 -380.585
+1.41257e+06 717407 -1214.31
+3.5522e+06 3.41786e+06 -3083.95
+1.6766e+06 1.64119e+07 -5256.43
+202417 1.4884e+07 -2911.85
+-44971.3 8.27915e+06 1107.27
+17810.5 4.2267e+06 2526.98
+1692.43 2.44011e+06 1054.36
+-8361.29 1.34496e+06 -161.744
+2397.62 690482 -96.311
+1622.95 388529 115.931
+-1435.59 216669 43.5802
+113.834 107997 -8.42268
+476.777 58324.5 10.977
+-237.794 33333.1 8.39019
+-59.8102 16308.5 -0.844233
+115.405 8379.3 1.25769
+-27.9902 5062.88 0.904762
+-28.0704 2539.61 -0.705708
+22.5293 1244.48 0.353916
+-0.760553 829.18 0.613392
+-5.89439 485.156 -0.0753695
+2.11777 312.455 -0.0385966
+-3.27803 317.204 0.204042
+8.72503 350.541 -0.0573116
+-1.10748 613.852 -0.0366742
+-27.4931 1070.03 0.853778
+39.3333 1658.15 0.369473
+27.319 3447.79 -0.864573
+-148.674 6814.63 1.68655
+100.192 11397.8 1.85801
+282.29 22476.5 -0.993563
+-659.972 45653.7 12.8149
+-46.5122 80003.4 16.7555
+1875.57 149581 -8.83307
+-2443.33 299744 67.101
+-2939.36 536716 165.423
+11655.1 959725 -137.216
+-3784.78 1.87665e+06 -195.636
+-25213.8 3.40934e+06 1606.57
+63632.3 5.94491e+06 3688.09
+-298306 1.17579e+07 1418.87
+-2.4134e+06 2.12611e+07 -4651.03
+-5.09146e+06 2.35087e+07 -8177.91
+-2.01579e+06 4.90148e+06 -4759.55
+-608040 1.02592e+06 -1874.23
+-160429 212900 -590.032
+-38948.2 43392.4 -157.462
+-9253.4 8613.06 -35.2969
+-2584.4 1651.41 -4.10664
+-1196.04 303.378 4.90288
+-928.209 52.8847 9.94271
+-883.84 8.46947 14.9617
+-883.484 0.923269 20.2545
+-892.894 -0.346264 25.2833
+-904.954 -0.563404 29.4494
+-917.424 -0.574861 32.3201
+-929.154 -0.524252 33.675
+-939.5 -0.450194 33.4765
+-948.197 -0.373761 31.8121
+-955.252 -0.308842 28.8381
+-960.829 -0.263117 24.7397
+-965.154 -0.238952 19.7089
+-968.44 -0.234874 13.9384
+-970.856 -0.247212 7.62213
+-972.513 -0.271495 0.957683
+-973.476 -0.303428 -5.85348
+-973.782 -0.339398 -12.6097
+-973.459 -0.376627 -19.1156
+-972.544 -0.413085 -25.1907
+-971.084 -0.4473 -30.677
+-969.141 -0.478169 -35.4461
+-966.792 -0.504819 -39.4032
+-964.117 -0.52654 -42.4885
+-961.198 -0.542773 -44.6769
+-958.113 -0.553132 -45.9745
+-954.935 -0.557432 -46.4154
+-951.723 -0.5557 -46.0568
+-948.532 -0.54817 -44.9746
+-945.402 -0.535264 -43.2581
+-942.368 -0.517562 -41.0058
+-939.456 -0.495785 -38.3209
+-936.687 -0.47079 -35.3072
+0 -0.443566 -32.0657
+31.6527 0 -0.762199
+31.7234 0 -0.841474
+31.7988 0 -0.923405
+31.8788 0 -1.00624
+31.9633 0 -1.08783
+32.052 0 -1.16561
+32.1444 0 -1.2367
+32.2396 0 -1.29792
+32.3368 0 -1.34597
+32.4345 0 -1.3775
+32.5311 0 -1.38927
+32.6244 0 -1.37836
+32.712 0 -1.34236
+32.7912 0 -1.2795
+32.8588 0 -1.18892
+32.9115 0 -1.07073
+32.9458 0 -0.926194
+32.9577 0 -0.757737
+32.943 0 -0.568974
+32.8966 0 -0.364672
+32.8129 0 -0.150685
+32.6853 0 0.0661127
+32.5069 0 0.27791
+32.2711 0 0.476055
+31.9733 0 0.651255
+31.6133 0 0.793969
+31.1989 0 0.895159
+30.751 0 0.94752
+30.3243 0 0.947139
+30.119 0 0.895256
+31.1414 0 0.799021
+38.9431 0 0.668228
+83.8235 0 0.496594
+325.723 0 0.174719
+1581.22 0 -0.917746
+7903.97 0 -5.75944
+38986.9 0 -27.2829
+189100 0 -114.86
+906168 0 -423.275
+4.32118e+06 0 -1300.19
+2.01404e+06 1.86985e+07 -3699.55
+160122 1.67092e+07 -1234.19
+-99747.8 8.51488e+06 3883.33
+29283.6 4.08443e+06 5632.65
+8060.66 2.45625e+06 2868.59
+-13432.1 1.36448e+06 340.52
+2943.89 672851 66.8046
+3182.96 387482 304.064
+-2185.77 221644 147.407
+-55.5031 105678 18.9786
+843.07 57317.9 31.2569
+-312.845 34434.5 23.2133
+-141.079 16110.8 3.28181
+191.843 8031.41 3.89829
+-21.4802 5269.73 2.99566
+-50.9442 2566.72 -0.320981
+34.6778 1156.56 0.972644
+4.70191 857.542 1.41965
+-10.2868 499.528 0.201114
+0.518199 300.932 0.183697
+-4.17998 320.833 0.612315
+12.5599 332.944 0.130167
+-10.9883 636.558 0.288098
+-43.5342 1100.47 1.88114
+67.3726 1544.25 1.08902
+11.1494 3500.61 -0.267667
+-244.917 7061.45 4.62593
+214.119 10918.5 5.09597
+353.211 22301.6 4.31983
+-1146.43 47076.4 33.1976
+241.435 78463.7 44.2051
+2806.9 146750 28.7039
+-4652.53 306646 211.564
+-3401.74 534319 423.053
+18612.9 935927 83.0732
+-13274.8 1.90571e+06 528.645
+-40306.4 3.429e+06 4229.32
+142904 5.74234e+06 8103.35
+-240697 1.21064e+07 5196.37
+-2.89934e+06 2.38791e+07 -2575.12
+-6.19018e+06 2.67712e+07 -6198.91
+-1.29246e+06 0 -2083.48
+-266948 0 -664.663
+-54068.5 0 -178.852
+-10673.6 0 -42.418
+-2060.5 0 -9.13782
+-409.598 0 -1.72391
+-106.541 0 -0.0792967
+-53.8203 0 0.410533
+-45.4637 0 0.70835
+-44.6593 0 0.982838
+-45.149 0 1.23823
+-45.8803 0 1.45057
+-46.6386 0 1.59882
+-47.3494 0 1.6715
+-47.9764 0 1.66617
+-48.5048 0 1.58678
+-48.9353 0 1.44085
+-49.2773 0 1.2374
+-49.5438 0 0.985884
+-49.7476 0 0.695837
+-49.8989 0 0.376933
+-50.0048 0 0.0391253
+-50.07 0 -0.307359
+-50.0975 0 -0.652206
+-50.0896 0 -0.985366
+-50.0489 0 -1.2975
+-49.9782 0 -1.58039
+-49.8813 0 -1.82733
+-49.7623 0 -2.0333
+-49.6254 0 -2.1951
+-49.4751 0 -2.31127
+-49.3155 0 -2.38197
+-49.1503 0 -2.40882
+-48.9826 0 -2.39459
+-48.8153 0 -2.34305
+-48.6507 0 -2.25867
+-48.4904 0 -2.14641
+-48.336 0 -2.01148
+-48.1887 0 -1.85915
+0 0 -1.69458
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.9128e+06 1.17975e+07 -39577
+3.67395e+06 1.99899e+07 -85065.8
+-125598 1.23179e+07 -69854.3
+-212506 4.12972e+06 -18313.9
+205343 2.00196e+06 10110.6
+7908.31 1.54851e+06 6214.4
+-49352 726028 -1137.39
+26521.8 308210 -655.469
+10502.9 235478 620.526
+-10167.5 125477 132.742
+2975.48 43640.2 -81.323
+3931.56 33126 76.8771
+-1641.46 21552 38.6605
+141.263 6170.55 -2.00004
+1169.08 4168.31 24.4327
+-129.871 3826.28 17.2789
+-90.76 1100.41 8.61797
+269.701 494.4 12.9533
+-15.2001 789.494 11.2876
+-136.023 416.009 9.14458
+30.6666 137.402 10.8528
+-123.001 478.873 7.68466
+-443.298 960.932 11.447
+27.0577 626.674 15.2527
+-10.9466 1561.44 11.8406
+-1636.06 5072.31 28.5682
+-131.023 5460.54 31.3634
+1836.32 8852.71 -12.1094
+-5602.09 29555.3 55.9289
+-3363.62 44348.8 111.369
+13221.7 61153.3 -110.985
+-16297.8 175053 206.327
+-34219.9 321481 880.294
+69118.2 426265 -946.644
+-20302.2 1.01972e+06 -1445.26
+-286683 2.15309e+06 9257.15
+312209 2.77822e+06 14178.8
+150862 5.84657e+06 -28522.6
+-5.27784e+06 1.75498e+07 -104305
+-9.87458e+06 2.85522e+07 -126463
+0 1.69232e+07 -59583.2
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.70929e+06 0 -71604
+8.30922e+06 0 -162684
+3.18267e+06 0 -162414
+-508870 0 -111419
+-192367 0 -52923.9
+288069 0 -12705.8
+2743.96 0 -2468.48
+-55729.7 0 -4731.42
+43630 0 -3471.93
+16066.8 0 -851.728
+-11516 0 -400.079
+6612.45 0 -406.822
+6864.92 0 -113.184
+-1195.42 0 -24.7731
+1088.12 0 -4.22484
+2114.76 0 82.1998
+86.383 0 90.1132
+7.72335 0 38.7852
+302.22 0 37.3665
+-73.3911 0 40.6358
+-498.172 0 39.4963
+-995.356 0 37.368
+-561.236 0 28.6116
+-750.8 0 47.3318
+-3310.11 0 127.061
+-1743.21 0 117.061
+725.629 0 -17.6563
+-10052.4 0 -49.5608
+-8411.8 0 -156.077
+14397.8 0 -547.786
+-25187.3 0 -507.747
+-57478.4 0 -1111.22
+77572.5 0 -4710.04
+-17493.2 0 -6250.61
+-402976 0 -2841.71
+285851 0 -17942.5
+676282 0 -75895.1
+-4.60625e+06 0 -157511
+-1.18758e+07 0 -227328
+-8.16571e+06 0 -230107
+0 0 -103448
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.39619e+06 -1.33362e+07 -1953.27
+9.19524e+06 -2.25633e+07 -33531
+3.39422e+06 -1.38958e+07 -66732.8
+-621281 -4.73631e+06 -40265.7
+-176517 -2.37189e+06 15654.4
+336071 -1.80477e+06 31773.1
+-7854.14 -834204 12473.8
+-61163 -362914 474.742
+53895.2 -279504 1676.56
+17117.1 -146497 2026.35
+-13362.8 -51730.6 457.011
+8623.95 -40099.9 284.189
+7855.1 -25466.2 381.632
+-1513.39 -7304.91 110.905
+1457.45 -5181.9 174.109
+2476.58 -4558.32 303.956
+112.444 -1270.92 168.145
+126.194 -642.452 31.4306
+391.225 -963.653 42.3619
+-97.2515 -499.279 93.9515
+-540.126 -183.215 121.665
+-1210.35 -564.995 130.386
+-815.204 -1177.23 69.8076
+-889.428 -812.673 36.9089
+-3860.83 -1783.8 188.508
+-2254.72 -6026.22 362.849
+1073.22 -6777 213.426
+-11469.8 -10360.3 180.96
+-11168.2 -34680.9 543.672
+16561.1 -53438.5 369.879
+-26829.2 -71809.8 706.685
+-71055.4 -202511 2970.13
+84266.3 -378693 2338.8
+-4030.44 -497143 850.466
+-467208 -1.15923e+06 18383.2
+260727 -2.48624e+06 45343.3
+828099 -3.2615e+06 20057.6
+-4.85597e+06 -6.62739e+06 -63973
+-1.30112e+07 -1.95867e+07 -106084
+-9.06426e+06 -3.19178e+07 -58456.7
+0 -1.89577e+07 -6961
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.84725e+06 -2.12595e+07 36469.9
+4.14609e+06 -1.90106e+07 63335.8
+-135984 -9.73823e+06 54677.4
+-211953 -4.72218e+06 43525.2
+237993 -2.84132e+06 29594.3
+317.754 -1.57142e+06 10540.6
+-55649.5 -780474 1100.73
+33053.9 -454140 1866.79
+11169.6 -259233 2234.83
+-11992.9 -123904 701.447
+4016.78 -68066.2 244.575
+4476.89 -40815.4 332.152
+-2023.49 -19051.1 123.794
+286.553 -9662.39 45.4297
+1356.5 -6331.03 103.556
+-197.897 -3051.87 65.2189
+-67.1127 -1410.74 17.6745
+343.416 -1053.79 13.7685
+-19.6625 -600.14 10.8469
+-160.495 -366.746 17.4092
+40.1316 -400.471 27.4093
+-135.85 -404.175 22.791
+-557.837 -761.822 17.9775
+-22.7332 -1348.52 15.8817
+58.7284 -1869.91 16.495
+-1889.26 -4134.77 85.0775
+-323.175 -8444.87 133.106
+2298.08 -13050.8 57.0416
+-6351.58 -26162.6 186.787
+-4725.67 -55415.7 465.832
+15524.2 -92500.3 332.349
+-17274.1 -170545 1035.67
+-42772.8 -355515 3199.57
+77266.5 -620732 2604.09
+-10310 -1.07478e+06 1680.89
+-330471 -2.17236e+06 15541.5
+307620 -3.92827e+06 42852.1
+162979 -6.57314e+06 61866.3
+-5.89786e+06 -1.37063e+07 76130.8
+-1.11132e+07 -2.69166e+07 87782.3
+0 -3.01813e+07 50750.7
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+36.7796 0.231252 -1.05367
+36.8407 0.231763 -1.13432
+36.9022 0.230965 -1.21588
+36.9638 0.228925 -1.29677
+37.0252 0.225819 -1.37507
+37.0862 0.221916 -1.44853
+37.1466 0.217563 -1.5146
+37.206 0.213181 -1.57053
+37.2642 0.209256 -1.61344
+37.3208 0.206338 -1.64044
+37.3753 0.205021 -1.64877
+37.427 0.205932 -1.63598
+37.475 0.209706 -1.60006
+37.5181 0.216958 -1.53963
+37.555 0.228267 -1.45407
+37.5838 0.244154 -1.34367
+37.6022 0.265082 -1.20965
+37.6072 0.291464 -1.05421
+37.595 0.32366 -0.880458
+37.5607 0.361976 -0.692348
+37.498 0.406591 -0.494595
+37.3993 0.457414 -0.292612
+37.256 0.513802 -0.0925043
+37.059 0.574135 0.098913
+36.8009 0.635246 0.274115
+36.478 0.691774 0.425038
+36.0942 0.735341 0.543615
+35.6668 0.752085 0.622869
+35.2481 0.707206 0.658652
+35.0471 0.444419 0.651788
+36.1584 -0.922032 0.609793
+44.7375 -8.45649 0.545539
+94.7581 -49.9868 0.462854
+366.772 -272.126 0.286893
+1786.23 -1419.95 -0.419132
+8956.51 -7172.66 -3.38542
+44259.2 -35316.6 -13.4
+214849 -170672 -32.8945
+1.02983e+06 -815431 21.5984
+4.91148e+06 -3.88385e+06 912.068
+2.28694e+06 -1.8647e+07 8317.47
+185577 -1.69201e+07 9729.59
+-107247 -9.44786e+06 6343.33
+33499.8 -4.85974e+06 2446.67
+6787.55 -2.81147e+06 -265.089
+-15388.4 -1.54805e+06 -849.251
+3992.33 -799675 -112.665
+3479.97 -453557 234.171
+-2636.69 -253012 43.7565
+46.5371 -126534 -33.3417
+970.096 -68975.5 16.9488
+-400.287 -39430.9 9.05044
+-144.671 -19297.9 -5.55479
+228.057 -10034.9 3.72118
+-35.5264 -6066.5 2.05034
+-56.1569 -3028.68 -2.87726
+44.1266 -1510 -0.0541429
+3.06661 -1012.32 1.01715
+-11.6794 -584.849 -0.348
+2.18555 -380.706 0.27759
+-6.69271 -392.194 1.21222
+14.663 -425.694 0.291687
+-9.74534 -736.833 -0.291935
+-56.1237 -1301.6 1.3381
+74.4465 -1998.99 -0.402712
+28.3966 -4085.47 -3.52589
+-292.008 -8123.38 3.53955
+219.722 -13561.8 4.31724
+463.771 -26394.7 -7.68466
+-1312 -53622.1 15.3969
+112.511 -93904.7 24.0689
+3387.22 -173745 -45.4918
+-5045.57 -346945 74.0304
+-4783.4 -620914 342.229
+21184.9 -1.1005e+06 -159.927
+-11448.4 -2.13803e+06 -1174.02
+-46048.9 -3.88922e+06 -223.773
+151585 -6.76648e+06 3810.37
+-275854 -1.32831e+07 9435.51
+-3.26373e+06 -2.39454e+07 14090.3
+-6.97944e+06 -2.64835e+07 11755
+-1.45747e+06 -5.52525e+06 1195.82
+-300942 -1.15717e+06 -13.1595
+-60878.9 -240182 -59.924
+-11984.4 -48914.8 -22.12
+-2302.3 -9685.73 -5.46007
+-455.352 -1847.82 -0.852519
+-119.238 -336.357 0.164054
+-61.6585 -57.5843 0.415551
+-52.7922 -8.73578 0.577755
+-52.0129 -0.549927 0.75348
+-52.5424 0.842388 0.925346
+-53.2777 1.123 1.06289
+-54.0072 1.18342 1.1449
+-54.6634 1.16557 1.16212
+-55.2168 1.10492 1.11467
+-55.6595 1.02122 1.00827
+-55.9982 0.92864 0.850842
+-56.2476 0.836455 0.65044
+-56.4259 0.749713 0.414396
+-56.5498 0.670333 0.149442
+-56.6335 0.598369 -0.137788
+-56.6872 0.533081 -0.440252
+-56.7179 0.473675 -0.750252
+-56.7303 0.419669 -1.05951
+-56.7271 0.37098 -1.35952
+-56.7104 0.327831 -1.64201
+-56.6819 0.290569 -1.8995
+-56.643 0.259504 -2.1257
+-56.5953 0.234786 -2.3158
+-56.5401 0.216351 -2.46664
+-56.4787 0.203925 -2.57666
+-56.4119 0.197059 -2.6458
+-56.3406 0.195174 -2.67532
+-56.2652 0.197609 -2.66755
+-56.1862 0.203657 -2.62572
+-56.1038 0.21259 -2.5537
+-56.0181 0.223687 -2.45577
+-55.9294 0.23627 -2.33647
+-55.8379 0.249755 -2.20036
+0 0.263702 -2.0519
+710.269 4.61475 -19.8866
+711.429 4.62254 -21.4604
+712.599 4.6029 -23.0577
+713.771 4.55748 -24.6481
+714.941 4.49005 -26.1937
+716.104 4.40621 -27.6505
+717.257 4.31314 -28.9684
+718.394 4.21949 -30.0929
+719.511 4.13525 -30.967
+720.601 4.07156 -31.5331
+721.654 4.0404 -31.7363
+722.66 4.05413 -31.5269
+723.605 4.12499 -30.8643
+724.471 4.26449 -29.72
+725.235 4.48291 -28.0804
+725.872 4.78894 -25.9494
+726.347 5.18964 -23.3496
+726.617 5.69053 -20.3226
+726.626 6.29584 -16.9284
+726.297 7.00846 -13.2436
+725.535 7.82896 -9.36057
+724.215 8.75304 -5.38569
+722.197 9.76657 -1.4395
+719.33 10.8377 2.34297
+715.488 11.9064 5.8124
+710.609 12.872 8.8085
+704.755 13.58 11.1703
+698.199 13.7988 12.7572
+691.602 13.1072 13.4826
+686.775 10.2123 13.3566
+690.713 -0.955416 12.5247
+736.894 -51.9581 11.2768
+990.601 -302.505 9.95964
+2235.26 -1517.58 8.59868
+7960.91 -7149.77 5.63157
+32633 -31858.8 -5.48645
+131237 -133979 -41.0285
+489067 -528772 -109.694
+1.60499e+06 -1.93252e+06 -45.8462
+4.03515e+06 -6.31826e+06 1164.99
+1.90229e+06 -1.65257e+07 6251.73
+231840 -1.52599e+07 7281.95
+-47528.5 -9.17222e+06 4831.85
+20006.4 -4.92675e+06 1993.15
+430.018 -2.79095e+06 106.147
+-9446.16 -1.53806e+06 -278.681
+3116.78 -812459 124.297
+1725.91 -452288 237.457
+-1707.71 -249602 66.937
+203.429 -128463 8.53007
+540.139 -69328.7 27.4972
+-296.664 -38598 12.3864
+-55.7878 -19540.6 1.00456
+135.397 -10229.7 4.81381
+-38.8663 -5893.01 1.6708
+-30.0274 -3036.66 -1.56251
+27.9946 -1567.96 0.294072
+-2.70556 -981.734 0.723928
+-6.61637 -580.837 -0.175841
+3.46254 -390.92 0.0960437
+-4.97954 -384.091 0.542397
+10.0336 -440.836 0.0724203
+1.07143 -727.738 -0.169595
+-34.6034 -1266.07 0.996215
+42.2625 -2075.78 0.298333
+40.9602 -4083.22 -1.80627
+-174.722 -7908.95 2.94634
+95.8578 -13836.9 6.40984
+357.412 -26658.8 1.55632
+-742.815 -52528.6 19.5188
+-160.653 -94509.9 39.8547
+2226.16 -176155 13.9289
+-2582.24 -342173 103.968
+-3891.35 -619786 346.668
+13065.2 -1.11778e+06 179.589
+-2055.7 -2.12273e+06 -377.862
+-28279.5 -3.86162e+06 234.796
+66051.6 -6.86014e+06 3016.93
+-338492 -1.28842e+07 7066.88
+-2.71484e+06 -2.15841e+07 10338.4
+-5.73752e+06 -2.34775e+07 8528.86
+-2.27279e+06 -8.99609e+06 1343.85
+-685527 -2.7461e+06 -216.285
+-180678 -745413 -208.984
+-43757 -185919 -73.916
+-10366.8 -43097.6 -13.6869
+-2905.15 -9316.78 3.23498
+-1366.23 -1877.48 7.10072
+-1074.43 -348.615 9.17739
+-1027.68 -52.549 12.0282
+-1027.63 4.12599 15.5212
+-1037.07 16.6215 18.9505
+-1048.57 20.3962 21.6717
+-1059.92 21.5842 23.2716
+-1070.1 21.442 23.5767
+-1078.6 20.4813 22.5971
+-1085.28 19.063 20.4511
+-1090.26 17.4537 17.3
+-1093.82 15.8274 13.3071
+-1096.26 14.2786 8.62171
+-1097.88 12.8432 3.38075
+-1098.9 11.5232 -2.28153
+-1099.49 10.3071 -8.2243
+-1099.76 9.18328 -14.2955
+-1099.76 8.14687 -20.333
+-1099.54 7.20109 -26.1715
+-1099.1 6.35484 -31.6512
+-1098.48 5.61909 -36.628
+-1097.69 5.00332 -40.9816
+-1096.75 4.51311 -44.6208
+-1095.69 4.14905 -47.4866
+-1094.51 3.90677 -49.5511
+-1093.25 3.77781 -50.816
+-1091.92 3.75062 -51.3082
+-1090.51 3.81169 -51.0761
+-1089.04 3.94631 -50.1847
+-1087.52 4.13933 -48.7113
+-1085.93 4.37572 -46.7414
+-1084.29 4.64135 -44.3646
+-1082.6 4.92386 -41.6708
+0 5.21375 -38.7476
+12353.2 78.9637 -336.521
+12373 79.0174 -364.165
+12393 78.5739 -392.335
+12413 77.6685 -420.497
+12433 76.3719 -447.987
+12453 74.7856 -474.027
+12472.7 73.0391 -497.727
+12492.3 71.2881 -518.117
+12511.5 69.7115 -534.178
+12530.3 68.5065 -544.877
+12548.6 67.8826 -549.224
+12566.1 68.0517 -546.318
+12582.7 69.2172 -535.416
+12598.2 71.5629 -515.985
+12612.3 75.2422 -487.755
+12624.6 80.3715 -450.765
+12634.9 87.0282 -405.384
+12642.5 95.2542 -352.32
+12646.8 105.061 -292.61
+12646.9 116.433 -227.596
+12641.5 129.314 -158.901
+12628.9 143.577 -88.412
+12607.2 158.943 -18.2741
+12574.2 174.867 49.1017
+12528 190.369 111.044
+12467.7 203.843 164.681
+12394.3 212.854 207.118
+12311.7 213.928 235.801
+12228.7 202.005 249.105
+12162.1 167.654 247.076
+12151.5 82.4671 232.159
+12323.1 -171.975 209.552
+13171 -1123.55 186.677
+16689.5 -5038.8 171.015
+30506.9 -21007.1 164.997
+81159.2 -82606.9 156.651
+249402 -302446 111.444
+734381 -1.01439e+06 8.1366
+1.84157e+06 -3.04175e+06 62.723
+3.28705e+06 -7.76958e+06 1281.34
+1.72178e+06 -1.49727e+07 5120.81
+345374 -1.38954e+07 6285.28
+6958.16 -8.8405e+06 4593.96
+13411 -4.93563e+06 2383.37
+50.9037 -2.77856e+06 801.502
+-6111.76 -1.53266e+06 253.505
+1651.66 -820815 313.144
+1094.14 -452058 286.784
+-1020.06 -247639 125.602
+105.715 -129671 51.9863
+337.929 -69609.3 42.4373
+-173.129 -38109.9 22.0008
+-36.5934 -19688.9 8.33837
+83.0079 -10357.1 7.05825
+-22.0408 -5791.47 3.3358
+-18.7731 -3041.01 0.263743
+16.7616 -1604.31 0.803442
+-1.44068 -964.091 0.812828
+-4.24786 -578.267 0.116434
+1.77315 -397.227 0.205429
+-3.0679 -379.644 0.467832
+5.92442 -450.141 0.217531
+-0.0391654 -722.069 0.195615
+-21.0921 -1245.75 1.12304
+25.8791 -2123.87 1.07261
+22.276 -4081.25 0.653648
+-107.392 -7784.24 5.12575
+61.3657 -14016.2 9.85642
+206.512 -26820.3 12.1731
+-464.451 -51890.3 32.8931
+-73.3352 -94968.7 61.6088
+1324.08 -177667 76.6185
+-1635.43 -339429 186.638
+-2042.28 -619847 417.034
+8374.64 -1.12903e+06 452.363
+-1180.82 -2.11424e+06 378.099
+-19528.3 -3.84462e+06 1190.46
+-11807.5 -6.87134e+06 3469.49
+-497584 -1.24081e+07 6536.34
+-2.45654e+06 -1.96422e+07 8652.2
+-4.67775e+06 -2.12738e+07 6643.58
+-2.61093e+06 -1.10711e+07 1286.67
+-1.03149e+06 -4.32839e+06 -191.619
+-345051 -1.43275e+06 -103.66
+-110654 -420648 97.932
+-41886.6 -112021 158.606
+-23821.9 -27456.6 152.123
+-19447 -6273.23 149.154
+-18459.6 -1314.57 174.362
+-18290.4 -164.747 225.16
+-18341 142.761 288.573
+-18464.8 256.664 350.24
+-18613 310.117 398.635
+-18760.4 332.483 426.612
+-18891.9 334.295 431.282
+-18999.8 322.631 412.97
+-19082 303.154 373.885
+-19140.7 280.098 316.979
+-19180 256.226 245.235
+-19204.6 233.031 161.391
+-19218.9 211.097 67.9602
+-19226.3 190.489 -32.6109
+-19228.9 171.079 -137.785
+-19228 152.761 -244.854
+-19224.2 135.554 -350.964
+-19217.6 119.614 -453.22
+-19208.4 105.185 -548.849
+-19196.5 92.5386 -635.357
+-19182.2 81.904 -710.677
+-19165.8 73.4294 -773.259
+-19147.4 67.1612 -822.114
+-19127.5 63.0463 -856.808
+-19106.2 60.9478 -877.417
+-19083.7 60.6661 -884.466
+-19060.2 61.9598 -878.851
+-19035.8 64.5631 -861.757
+-19010.5 68.2002 -834.581
+-18984.3 72.5983 -798.854
+-18957.2 77.5001 -756.172
+-18929.3 82.6785 -708.133
+0 87.9526 -656.282
+214013 1329.27 -5658.16
+214349 1328.26 -6141
+214687 1318.36 -6634.97
+215028 1300.31 -7130.8
+215368 1275.41 -7616.91
+215707 1245.49 -8079.58
+216044 1212.88 -8503.14
+216376 1180.4 -8870.42
+216704 1151.22 -9163.28
+217025 1128.85 -9363.32
+217338 1116.95 -9452.77
+217639 1119.16 -9415.44
+217927 1138.88 -9237.78
+218198 1179.02 -8909.93
+218449 1241.87 -8426.64
+218677 1328.88 -7788.03
+218879 1440.68 -7000.09
+219050 1577.1 -6074.79
+219182 1737.33 -5029.94
+219266 1919.98 -3888.9
+219285 2122.96 -2680.12
+219220 2343.05 -1436.87
+219042 2574.83 -197.196
+218722 2808.89 996.064
+218233 3029.3 2095.36
+217560 3210.72 3049.51
+216719 3315.29 3806.83
+215768 3290.02 4321.39
+214833 3063.31 4563.08
+214134 2533.81 4530.6
+214045 1521.91 4264.3
+215280 -429.991 3853.35
+219522 -4822.12 3430.31
+231452 -16930 3146.33
+264685 -54792.8 3123.27
+356567 -175733 3387.82
+595468 -543421 3817.15
+1.13648e+06 -1.55862e+06 4183.34
+2.07013e+06 -3.9806e+06 4446
+2.83512e+06 -8.54352e+06 5228.27
+1.62082e+06 -1.37722e+07 7189.9
+469001 -1.27572e+07 7210.38
+84233 -8.4649e+06 5253.37
+28998.8 -4.88529e+06 3052.36
+7353.3 -2.75954e+06 1467.66
+-651.301 -1.52628e+06 725.569
+2267.61 -824743 517.6
+1402.43 -451755 368.503
+-196.638 -246332 193.382
+248.684 -130274 99.2176
+307.844 -69756.1 64.1261
+-40.1138 -37807.3 35.4327
+5.12326 -19758.1 17.4422
+62.652 -10428.2 11.1043
+-5.36178 -5730.44 5.92235
+-9.31381 -3040.36 2.35866
+9.12204 -1624.68 1.69441
+-2.47266 -953.662 1.22008
+-5.3088 -576.09 0.557144
+-2.53898 -400.542 0.492445
+-5.72002 -377.049 0.640869
+-1.32838 -455.155 0.583114
+-6.25751 -717.98 0.797486
+-19.7681 -1233.79 1.74805
+4.5577 -2150.83 2.4466
+-5.26387 -4076.05 3.6412
+-89.7326 -7709.48 8.80848
+-7.9133 -14116.8 15.9315
+30.4096 -26891.9 25.4109
+-427.335 -51496.2 52.0048
+-302.394 -95216.3 93.0675
+224.571 -178416 144.759
+-1998.69 -337619 283.305
+-2982.49 -619660 535.363
+820.441 -1.13427e+06 750.853
+-11044.5 -2.10467e+06 1062.69
+-41646.8 -3.81775e+06 2155.59
+-121720 -6.79826e+06 4455.47
+-674132 -1.18689e+07 7576.9
+-2.32082e+06 -1.8015e+07 10228.1
+-4.05467e+06 -1.95596e+07 10055.5
+-2.95798e+06 -1.21807e+07 7434.71
+-1.62002e+06 -5.67403e+06 6455.19
+-850177 -2.20755e+06 5904.07
+-515646 -758525 4927.02
+-390333 -239466 3772.2
+-346551 -72353.9 2953.36
+-331389 -21697.5 2768.79
+-326208 -6037.7 3233.16
+-324916 -376.816 4168.42
+-325425 2282.8 5314.33
+-326832 3791.16 6414.28
+-328610 4658.12 7268.11
+-330405 5076.81 7753.59
+-331991 5171.98 7822.93
+-333252 5048.5 7484.1
+-334163 4793.64 6777.66
+-334756 4472.92 5757.07
+-335098 4129.2 4476.38
+-335260 3785.81 2985.37
+-335307 3452.27 1329.77
+-335285 3130.38 -446.12
+-335222 2819.32 -2296.84
+-335131 2519.01 -4174.45
+-335013 2231.55 -6028.92
+-334867 1961.3 -7809.94
+-334687 1714.01 -9469.53
+-334473 1495.63 -10964.9
+-334223 1311.2 -12260.6
+-333941 1164.07 -13330.5
+-333631 1055.63 -14158.3
+-333296 985.288 -14737.1
+-332940 950.837 -15069.3
+-332568 948.814 -15164.9
+-332179 974.917 -15040.2
+-331777 1024.35 -14716.9
+-331361 1092.13 -14219.8
+-330930 1173.3 -13576.3
+-330484 1263.23 -12814.6
+-330025 1357.76 -11963
+0 1453.49 -11048.6
+3.42111e+06 654.803 -31616.7
+3.43114e+06 74.7729 -34282.5
+3.44172e+06 -531.136 -36945.1
+3.45276e+06 -1141.41 -39545.2
+3.46418e+06 -1729.84 -42012.4
+3.47588e+06 -2266.41 -44266.4
+3.48772e+06 -2718.12 -46220.1
+3.49956e+06 -3049.92 -47782.8
+3.51124e+06 -3225.68 -48865
+3.52259e+06 -3209.2 -49385
+3.53345e+06 -2965.34 -49275.5
+3.54362e+06 -2461.14 -48491.2
+3.55294e+06 -1666.98 -47015.9
+3.56124e+06 -557.779 -44868.3
+3.56838e+06 885.792 -42104
+3.57422e+06 2676.05 -38812.9
+3.57865e+06 4816.91 -35110.4
+3.58157e+06 7302.28 -31121
+3.58289e+06 10114 -26958.8
+3.58252e+06 13218.7 -22704.1
+3.58036e+06 16563.5 -18386
+3.57631e+06 20067.9 -13973.5
+3.57023e+06 23611.9 -9384.72
+3.56205e+06 27015.3 -4514.85
+3.55178e+06 30004.7 719.639
+3.53972e+06 32160.2 6333.48
+3.52665e+06 32832.6 12246.6
+3.51422e+06 31012 18310.7
+3.50551e+06 25122.6 24413.8
+3.50591e+06 12682 30664.2
+3.52449e+06 -10305.6 37605.9
+3.57637e+06 -50551.1 46366.3
+3.68687e+06 -120071 58588.9
+3.89889e+06 -241993 76009.9
+4.28402e+06 -463206 99596.8
+4.95231e+06 -879083 128331
+6.03264e+06 -1.67065e+06 158057
+7.54216e+06 -3.12415e+06 181341
+9.0173e+06 -5.51477e+06 189508
+9.03859e+06 -8.61952e+06 177040
+6.07851e+06 -1.08583e+07 145673
+2.98437e+06 -9.70025e+06 104506
+1.28167e+06 -6.78903e+06 67040.6
+568734 -4.18961e+06 40248.6
+254557 -2.45598e+06 23411.9
+115503 -1.39378e+06 13615
+59333.9 -772536 8045.41
+30345.4 -425063 4731.15
+14424.1 -231709 2715.09
+7789.74 -124370 1541.19
+4267.96 -66640.2 874.324
+1969.98 -35731.5 488.838
+1020.47 -18930.1 269.748
+576.239 -10050.6 149.5
+222.46 -5412.82 82.6527
+66.264 -2903.86 45.5145
+7.94521 -1577.39 25.7542
+-50.6236 -901.475 15.1892
+-82.6773 -548.026 9.58087
+-99.4306 -386.76 7.14574
+-120.954 -358.351 6.83812
+-138.599 -440.941 8.33388
+-179.972 -681.667 12.3425
+-253.895 -1168.34 20.435
+-331.166 -2088.45 35.1885
+-545.097 -3888.93 62.5622
+-1011.97 -7292.04 113.822
+-1608.12 -13612 206.099
+-2923.32 -25744 372.872
+-6024.92 -48701.8 677.952
+-10767.9 -91036.5 1216.37
+-19915.1 -170286 2152.97
+-41670.6 -317681 3815.28
+-81011.4 -583556 6697.87
+-158090 -1.06281e+06 11502.3
+-349305 -1.92283e+06 19761.3
+-780318 -3.40209e+06 34710.6
+-1.76225e+06 -5.84168e+06 61100.6
+-4.11744e+06 -9.55371e+06 103997
+-8.40423e+06 -1.37843e+07 164724
+-1.25059e+07 -1.55286e+07 231465
+-1.24651e+07 -1.23065e+07 281284
+-1.04199e+07 -7.81157e+06 298248
+-8.34612e+06 -4.36853e+06 279505
+-6.87753e+06 -2.2991e+06 235168
+-5.97967e+06 -1.19001e+06 180928
+-5.46854e+06 -617484 130206
+-5.19097e+06 -317511 90492.8
+-5.04914e+06 -153716 63546
+-4.98534e+06 -60587.8 47355.7
+-4.96572e+06 -6535.32 38302.2
+-4.97012e+06 24586 32812.4
+-4.9864e+06 41716.7 28323.2
+-5.00731e+06 50164.2 23576.7
+-5.02879e+06 53214.7 18408.1
+-5.04878e+06 52937.5 13268.5
+-5.06651e+06 50637.1 8726.99
+-5.08188e+06 47130.2 5121.4
+-5.09514e+06 42925 2417.46
+-5.10659e+06 38338.4 247.776
+-5.11647e+06 33571.3 -1943.57
+-5.12486e+06 28757.2 -4728.42
+-5.13171e+06 23991 -8551.18
+-5.13687e+06 19347 -13643.5
+-5.14013e+06 14888.1 -20001.4
+-5.14127e+06 10670.2 -27413.6
+-5.14011e+06 6744.2 -35520.8
+-5.13654e+06 3155.79 -43886.9
+-5.13051e+06 -55.2684 -52065.2
+-5.12206e+06 -2856.21 -59649.9
+-5.11133e+06 -5222.32 -66308.2
+-5.09849e+06 -7137.9 -71795.3
+-5.08379e+06 -8596.89 -75955.3
+-5.06752e+06 -9603.29 -78714.6
+-5.04998e+06 -10171.1 -80070.4
+-5.03151e+06 -10324.2 -80078.9
+-5.01243e+06 -10095 -78841.3
+-4.99307e+06 -9523.82 -76492.1
+-4.97373e+06 -8656.74 -73185.8
+-4.9547e+06 -7543.48 -69086.7
+0 -6234.86 -64359.6
+7.06369e+06 -1657.68 -58708.7
+7.08391e+06 -4077.01 -63517
+7.10593e+06 -6583.11 -68149.8
+7.12957e+06 -9086.61 -72471
+7.1546e+06 -11481.8 -76333.1
+7.18069e+06 -13649.2 -79583.2
+7.20745e+06 -15459.5 -82071.2
+7.23443e+06 -16777.3 -83660.4
+7.26112e+06 -17465.6 -84238.6
+7.28694e+06 -17390.7 -83731
+7.31131e+06 -16428 -82112.9
+7.33365e+06 -14467.2 -79421.1
+7.35337e+06 -11418 -75763.1
+7.36997e+06 -7216.08 -71319.6
+7.383e+06 -1828.54 -66339.2
+7.3921e+06 4740.56 -61119.6
+7.39704e+06 12444.7 -55975.7
+7.39773e+06 21189.1 -51192.7
+7.39416e+06 30824.3 -46967.7
+7.38646e+06 41138.7 -43348.4
+7.37483e+06 51847.8 -40178.1
+7.35954e+06 62579.1 -37062.5
+7.34093e+06 72847.7 -33371.4
+7.3194e+06 82017.9 -28287
+7.29552e+06 89239.6 -20895.5
+7.27017e+06 93347.5 -10308.9
+7.24478e+06 92701.1 4223.35
+7.22176e+06 84938.4 23261.6
+7.20506e+06 66599.3 47231
+7.20093e+06 32545.1 76595.5
+7.21903e+06 -24976.4 112088
+7.27394e+06 -117944 154850
+7.38698e+06 -265530 206249
+7.58807e+06 -499603 267163
+7.91444e+06 -874083 336600
+8.39756e+06 -1.47712e+06 409805
+9.01755e+06 -2.43504e+06 476563
+9.59884e+06 -3.8725e+06 521253
+9.67087e+06 -5.7625e+06 526766
+8.52485e+06 -7.63921e+06 482967
+5.96762e+06 -8.44107e+06 396059
+3.44874e+06 -7.28961e+06 290793
+1.8036e+06 -5.22086e+06 196039
+916894 -3.35404e+06 125590
+460952 -2.03253e+06 78217.8
+232016 -1.1849e+06 47852.3
+119305 -671880 28833.5
+61625 -374445 17074.2
+31597.2 -205733 9925.72
+16481.7 -111540 5678.83
+8616.87 -60047.8 3206.55
+4377.18 -32192.7 1790.13
+2221 -17157.4 991.209
+1104.78 -9143.57 546.561
+480.156 -4902.24 301.091
+153.533 -2639.75 166.6
+-16.437 -1442.26 93.6194
+-119.296 -818.707 54.4655
+-181.216 -498.605 34.1859
+-223.416 -353.654 25.0848
+-263.789 -326.485 23.5963
+-311.543 -403.657 29.0275
+-388.876 -620.085 43.4083
+-521.65 -1061.98 72.186
+-746.772 -1909.99 126.226
+-1185.4 -3534.79 226.277
+-2024.72 -6607.63 410.626
+-3536.41 -12385.6 747.878
+-6476.94 -23328.6 1360.94
+-12253 -43889.3 2466.82
+-22993.6 -82052.2 4435.52
+-43731.5 -152716 7887.74
+-84932.3 -282120 13852.4
+-164100 -514268 23967.7
+-319207 -924671 40778.4
+-634742 -1.63575e+06 68382.1
+-1.26388e+06 -2.81953e+06 113382
+-2.49133e+06 -4.68849e+06 185300
+-4.78089e+06 -7.37761e+06 294722
+-8.30698e+06 -1.04199e+07 444179
+-1.19007e+07 -1.21463e+07 610597
+-1.35039e+07 -1.09552e+07 745457
+-1.34052e+07 -8.17735e+06 807536
+-1.2611e+07 -5.41507e+06 787531
+-1.17745e+07 -3.35119e+06 704080
+-1.11297e+07 -2.00389e+06 587315
+-1.06967e+07 -1.17255e+06 464139
+-1.04296e+07 -664240 351587
+-1.02777e+07 -349097 256892
+-1.02017e+07 -150366 180555
+-1.01741e+07 -24046.6 119764
+-1.01761e+07 55727.3 71036.8
+-1.01955e+07 104869 31757
+-1.02246e+07 133544 654.766
+-1.02587e+07 148377 -22494.5
+-1.02954e+07 153715 -37554.9
+-1.03333e+07 152426 -44702
+-1.03719e+07 146423 -44823.2
+-1.04108e+07 137017 -39571.4
+-1.04495e+07 125145 -31141
+-1.04874e+07 111517 -21902.3
+-1.05234e+07 96703.3 -14028.4
+-1.05563e+07 81184.1 -9208.81
+-1.05848e+07 65382.1 -8491.86
+-1.06077e+07 49675.8 -12257.7
+-1.06239e+07 34406.7 -20293.8
+-1.06324e+07 19882.1 -31935.1
+-1.06328e+07 6373.51 -46228.6
+-1.06249e+07 -5885.05 -62090.8
+-1.06088e+07 -16700.4 -78437.9
+-1.0585e+07 -25923.3 -94279.1
+-1.05541e+07 -33450.7 -108774
+-1.05171e+07 -39227.1 -121262
+-1.0475e+07 -43245.3 -131267
+-1.0429e+07 -45544.3 -138495
+-1.03803e+07 -46206.7 -142819
+-1.03301e+07 -45353.9 -144258
+-1.02796e+07 -43140.2 -142954
+-1.02299e+07 -39745.3 -139143
+-1.0182e+07 -35366.2 -133129
+0 -30207.9 -125262
+1.07638e+07 -4683.37 -87578.7
+1.07929e+07 -9409.93 -94722.2
+1.08241e+07 -14301.2 -101473
+1.08574e+07 -19181.9 -107606
+1.08921e+07 -23845.7 -112887
+1.0928e+07 -28061.6 -117082
+1.09644e+07 -31579.9 -119975
+1.10008e+07 -34140.9 -121384
+1.10364e+07 -35484 -121182
+1.10706e+07 -35358.8 -119314
+1.11026e+07 -33535.6 -115819
+1.11318e+07 -29818.1 -110845
+1.11576e+07 -24054.5 -104656
+1.11796e+07 -16149.9 -97636.3
+1.11974e+07 -6076.65 -90270.6
+1.12109e+07 6115 -83108.8
+1.12203e+07 20287.8 -76706.8
+1.12258e+07 36208.6 -71543.7
+1.1228e+07 53540.1 -67920.7
+1.12274e+07 71831.8 -65853.4
+1.12247e+07 90508.3 -64973
+1.12207e+07 108853 -64459.8
+1.12157e+07 125983 -63029.9
+1.12102e+07 140804 -58994.2
+1.12044e+07 151946 -50392.8
+1.1198e+07 157639 -35188.3
+1.1191e+07 155537 -11471.4
+1.11832e+07 142426 22388.3
+1.11747e+07 113797 67712.6
+1.11664e+07 63197.6 125629
+1.116e+07 -18729.4 197259
+1.11582e+07 -145749 283776
+1.11649e+07 -338440 386063
+1.11832e+07 -627904 503635
+1.12092e+07 -1.06035e+06 632682
+1.12171e+07 -1.69865e+06 763420
+1.11258e+07 -2.60862e+06 877761
+1.07555e+07 -3.80609e+06 949665
+9.81875e+06 -5.145e+06 951553
+8.07391e+06 -6.19697e+06 868291
+5.71665e+06 -6.34065e+06 712954
+3.56152e+06 -5.33195e+06 529321
+2.05191e+06 -3.85121e+06 363637
+1.13597e+06 -2.5316e+06 237870
+614766 -1.57128e+06 150955
+328783 -936166 93650.4
+175240 -540843 56909.8
+93002.1 -305470 33881.2
+49083 -169463 19780.4
+25868.1 -92659.2 11350.9
+13566.9 -50166.8 6420.3
+7018.61 -26981.5 3589.84
+3567.52 -14439.5 1990.66
+1742.33 -7718.99 1098.6
+760.94 -4139.74 605.755
+234.981 -2234.05 335.574
+-50.3788 -1223.97 188.606
+-213.585 -694.203 109.663
+-312.948 -423.319 68.7818
+-383.131 -300.952 50.3527
+-448.206 -277.725 47.238
+-528.248 -343.704 58.0997
+-651.923 -526.649 86.9352
+-863.58 -901.037 144.627
+-1241.66 -1621.43 253.124
+-1946.49 -2991.86 453.833
+-3269.37 -5581.02 822.861
+-5743.1 -10456.4 1497.66
+-10440.4 -19631.6 2723.08
+-19374.1 -36786.3 4927.95
+-36197.4 -68554.7 8845.63
+-68022.1 -126869 15699.1
+-128312 -232423 27475.4
+-241342 -419686 47302.1
+-452738 -744754 79971.9
+-847307 -1.29366e+06 132776
+-1.56857e+06 -2.18356e+06 216643
+-2.84261e+06 -3.5492e+06 346714
+-4.95966e+06 -5.46522e+06 539219
+-8.01056e+06 -7.66176e+06 797035
+-1.13677e+07 -9.1738e+06 1.08396e+06
+-1.3845e+07 -8.93305e+06 1.32288e+06
+-1.517e+07 -7.33176e+06 1.4418e+06
+-1.56995e+07 -5.33861e+06 1.42129e+06
+-1.58425e+07 -3.59872e+06 1.28938e+06
+-1.58469e+07 -2.31049e+06 1.09393e+06
+-1.58201e+07 -1.42869e+06 878691
+-1.5796e+07 -842344 672761
+-1.57799e+07 -453631 490585
+-1.57694e+07 -194547 336326
+-1.57613e+07 -21371.3 208719
+-1.57535e+07 93799.2 104779
+-1.57452e+07 169104 21951.7
+-1.5737e+07 216535 -41172.5
+-1.57301e+07 244081 -85202.9
+-1.57261e+07 257084 -110775
+-1.57269e+07 259157 -119331
+-1.57336e+07 252810 -113509
+-1.57471e+07 239875 -97070
+-1.57672e+07 221772 -74456.4
+-1.57929e+07 199678 -50197.5
+-1.58224e+07 174620 -28332.2
+-1.58535e+07 147532 -11984.3
+-1.58838e+07 119276 -3139.56
+-1.59106e+07 90653.5 -2622.7
+-1.59315e+07 62408.5 -10229.3
+-1.59447e+07 35220.2 -24955.6
+-1.59487e+07 9696.51 -45266
+-1.59424e+07 -13634.7 -69351.4
+-1.59256e+07 -34334.3 -95347.3
+-1.58984e+07 -52059.7 -121496
+-1.58614e+07 -66569.3 -146253
+-1.58156e+07 -77725.7 -168351
+-1.57623e+07 -85493.8 -186824
+-1.57029e+07 -89937 -201014
+-1.56391e+07 -91208.9 -210553
+-1.55725e+07 -89542.8 -215338
+-1.55047e+07 -85238.1 -215497
+-1.54373e+07 -78645.7 -211344
+-1.53716e+07 -70150.5 -203335
+0 -60154.8 -192023
+1.35936e+07 -6467.48 -113390
+1.3627e+07 -12400.3 -122758
+1.36615e+07 -18538.2 -131554
+1.36966e+07 -24659.9 -139472
+1.37319e+07 -30506.5 -146198
+1.3767e+07 -35788.4 -151424
+1.38015e+07 -40193.9 -154869
+1.38348e+07 -43400 -156307
+1.38666e+07 -45084.6 -155587
+1.38964e+07 -44940.6 -152665
+1.3924e+07 -42691 -147626
+1.39494e+07 -38103.9 -140703
+1.39724e+07 -31008.4 -132293
+1.39934e+07 -21309 -122948
+1.40128e+07 -8999.29 -113356
+1.40315e+07 5826.55 -104290
+1.40503e+07 22963.8 -96523.5
+1.40704e+07 42089.6 -90723.8
+1.4093e+07 62755.9 -87311.1
+1.41195e+07 84384.4 -86313
+1.41509e+07 106260 -87227.3
+1.4188e+07 127518 -88924.1
+1.4231e+07 147131 -89613.7
+1.42794e+07 163873 -86906
+1.43318e+07 176260 -77968.3
+1.43857e+07 182456 -59764
+1.44376e+07 180099 -29321.1
+1.44826e+07 166041 16048.3
+1.45145e+07 135945 78655.9
+1.45256e+07 83701.5 160502
+1.45067e+07 606.565 263408
+1.44461e+07 -125773 388992
+1.43286e+07 -313133 538110
+1.41328e+07 -586248 709399
+1.38256e+07 -977971 896678
+1.33522e+07 -1.52547e+06 1.08545e+06
+1.26238e+07 -2.25258e+06 1.24979e+06
+1.15161e+07 -3.12635e+06 1.3529e+06
+9.91066e+06 -3.9906e+06 1.3561e+06
+7.81918e+06 -4.53494e+06 1.23866e+06
+5.53956e+06 -4.42699e+06 1.0201e+06
+3.57819e+06 -3.65203e+06 762520
+2.17087e+06 -2.64351e+06 528951
+1.26541e+06 -1.75996e+06 349582
+717566 -1.1097e+06 223912
+399148 -671642 139955
+219076 -393513 85528.1
+118940 -224730 51142.4
+63973.3 -125736 29967
+34144.6 -69224.3 17248.8
+18062.1 -37668.3 9781.61
+9424.98 -20330.9 5482.12
+4808.02 -10915.3 3046.5
+2340.14 -5849.75 1684.55
+1014.13 -3141.67 930.549
+297.767 -1698.3 516.42
+-95.0691 -932.086 290.706
+-318.623 -529.015 169.26
+-455.325 -322.988 106.28
+-552.728 -229.979 77.8293
+-642.793 -212.319 72.966
+-754.061 -262.761 89.6399
+-924.251 -402.026 133.953
+-1214.55 -686.996 222.54
+-1735.14 -1235.17 388.947
+-2694.66 -2274.77 696.264
+-4482.15 -4235.95 1260.11
+-7824.92 -7924.4 2288.99
+-14102 -14839.8 4153.09
+-25877.6 -27719.5 7497.87
+-47856.9 -51478.5 13423.1
+-88708 -94793.7 23753.5
+-164116 -172495 41428
+-301722 -308902 71027.9
+-549699 -542284 119490
+-989547 -929231 197133
+-1.74995e+06 -1.54505e+06 318984
+-3.01623e+06 -2.47442e+06 505401
+-5.00585e+06 -3.76557e+06 777621
+-7.8116e+06 -5.2708e+06 1.13834e+06
+-1.10958e+07 -6.43447e+06 1.53833e+06
+-1.41016e+07 -6.56897e+06 1.87295e+06
+-1.63925e+07 -5.71306e+06 2.04056e+06
+-1.79609e+07 -4.40308e+06 2.0122e+06
+-1.89854e+07 -3.11878e+06 1.82624e+06
+-1.96465e+07 -2.08275e+06 1.54926e+06
+-2.00696e+07 -1.32477e+06 1.24225e+06
+-2.03312e+07 -794300 946206
+-2.04776e+07 -428752 682162
+-2.05392e+07 -177635 457186
+-2.05378e+07 -5273.85 270785
+-2.04904e+07 112560 119735
+-2.04109e+07 192178 899.697
+-2.03113e+07 244500 -87804.7
+-2.02016e+07 276783 -147754
+-2.00905e+07 293839 -180558
+-1.99852e+07 298912 -188934
+-1.98912e+07 294287 -177109
+-1.9812e+07 281691 -150644
+-1.97497e+07 262545 -115849
+-1.97045e+07 238107 -79008.2
+-1.96751e+07 209545 -45653.4
+-1.96592e+07 177980 -20036.2
+-1.96537e+07 144487 -4859.64
+-1.96554e+07 110103 -1262.59
+-1.96607e+07 75806.2 -9000.97
+-1.96665e+07 42509.2 -26752.2
+-1.96701e+07 11037.9 -52468.2
+-1.96693e+07 -17883.7 -83716.5
+-1.96625e+07 -43648.9 -117970
+-1.96487e+07 -65780.2 -152824
+-1.96274e+07 -83937 -186146
+-1.95986e+07 -97919 -216165
+-1.95627e+07 -107664 -241507
+-1.95203e+07 -113239 -261213
+-1.94725e+07 -114834 -274721
+-1.94203e+07 -112738 -281835
+-1.93648e+07 -107331 -282677
+-1.93073e+07 -99055.6 -277636
+-1.92488e+07 -88398.4 -267303
+0 -75868.7 -252413
+1.53256e+07 -5606.94 -133068
+1.53592e+07 -10562.5 -144270
+1.53915e+07 -15688.6 -154789
+1.54222e+07 -20799.7 -164260
+1.54507e+07 -25679.3 -172307
+1.54769e+07 -30085.5 -178563
+1.55005e+07 -33758.6 -182695
+1.55214e+07 -36430.1 -184431
+1.55398e+07 -37833.6 -183595
+1.5556e+07 -37716.7 -180134
+1.55705e+07 -35853.9 -174152
+1.55841e+07 -32059.6 -165928
+1.55978e+07 -26201.5 -155935
+1.56129e+07 -18213 -144835
+1.56311e+07 -8103.46 -133450
+1.56542e+07 4032.14 -122710
+1.56841e+07 18006.7 -113550
+1.5723e+07 33536.2 -106787
+1.57729e+07 50236.8 -102955
+1.58356e+07 67623.6 -102134
+1.59125e+07 85108.6 -103785
+1.6004e+07 101998 -106630
+1.611e+07 117483 -108605
+1.62286e+07 130623 -106913
+1.63566e+07 140307 -98187.2
+1.6489e+07 145187 -78751.1
+1.66187e+07 143561 -44910.2
+1.67363e+07 133180 6801.17
+1.68294e+07 110954 79509.2
+1.68828e+07 72542.8 176052
+1.68772e+07 11800.4 299094
+1.6788e+07 -79895.6 451029
+1.65841e+07 -214389 633250
+1.62253e+07 -407313 844329
+1.5659e+07 -677553 1.0768e+06
+1.48184e+07 -1.04298e+06 1.31282e+06
+1.3626e+07 -1.50734e+06 1.52024e+06
+1.20163e+07 -2.03354e+06 1.65314e+06
+9.98931e+06 -2.5113e+06 1.66294e+06
+7.68921e+06 -2.75895e+06 1.52337e+06
+5.43402e+06 -2.62008e+06 1.25849e+06
+3.57156e+06 -2.13489e+06 944804
+2.22796e+06 -1.54516e+06 659018
+1.33867e+06 -1.03554e+06 438121
+781355 -659083 282224
+445691 -402940 177309
+249604 -238296 108838
+137698 -137143 65333.6
+75012.9 -77202.6 38415.1
+40417.8 -42711.3 22180.1
+21529.7 -23326.5 12613.2
+11294.8 -12624.2 7087.26
+5777.42 -6792.87 3947.85
+2808.25 -3646.87 2187.75
+1206.77 -1961.03 1211.04
+337.452 -1061.34 673.419
+-141.645 -583.17 379.807
+-414.838 -331.254 221.544
+-582.485 -202.447 139.342
+-702.438 -144.306 102.151
+-813.454 -133.29 95.7593
+-950.568 -164.928 117.496
+-1159.4 -252.097 175.269
+-1514.38 -430.36 290.631
+-2149.35 -773.025 506.984
+-3313.37 -1421.84 905.751
+-5471.23 -2644.33 1635.76
+-9489.97 -4940.44 2964.63
+-16984.1 -9235.33 5365.93
+-30926 -17213 9662.06
+-56717.8 -31881.9 17248.4
+-104059 -58498.2 30428.3
+-190010 -105945 52887.8
+-343772 -188600 90330.2
+-613929 -328624 151319
+-1.07826e+06 -558079 248451
+-1.8541e+06 -919126 399848
+-3.10396e+06 -1.45922e+06 629843
+-5.01678e+06 -2.2073e+06 963499
+-7.70339e+06 -3.09102e+06 1.4032e+06
+-1.09817e+07 -3.82108e+06 1.88899e+06
+-1.43196e+07 -4.01139e+06 2.29381e+06
+-1.72364e+07 -3.60906e+06 2.49252e+06
+-1.95258e+07 -2.87453e+06 2.44947e+06
+-2.12007e+07 -2.09441e+06 2.21305e+06
+-2.23679e+07 -1.42963e+06 1.86646e+06
+-2.31448e+07 -922949 1.48532e+06
+-2.3629e+07 -557385 1.12002e+06
+-2.38945e+07 -299873 796152
+-2.39967e+07 -120130 522092
+-2.39777e+07 4865.56 296911
+-2.38702e+07 91498.3 116279
+-2.37005e+07 151070 -24125.3
+-2.34899e+07 191180 -127410
+-2.32561e+07 216818 -195825
+-2.30143e+07 231224 -231821
+-2.27769e+07 236539 -239030
+-2.25537e+07 234260 -222714
+-2.23522e+07 225540 -189570
+-2.21772e+07 211366 -147058
+-2.2031e+07 192659 -102532
+-2.1914e+07 170317 -62421.9
+-2.18249e+07 145236 -31641.4
+-2.1761e+07 118302 -13293.2
+-2.17188e+07 90388.4 -8659.45
+-2.16945e+07 62336.4 -17415.5
+-2.16841e+07 34938.1 -37985.3
+-2.16837e+07 8918.15 -67950.2
+-2.16898e+07 -15083.9 -104446
+-2.16993e+07 -36528.9 -144496
+-2.17095e+07 -54990.4 -185268
+-2.17184e+07 -70161.7 -224248
+-2.17242e+07 -81858.7 -259338
+-2.17256e+07 -90018.4 -288912
+-2.17219e+07 -94691.5 -311826
+-2.17124e+07 -96032 -327406
+-2.16969e+07 -94283.7 -335409
+-2.16755e+07 -89763.8 -335973
+-2.16484e+07 -82845.1 -329549
+-2.16159e+07 -73937.6 -316833
+0 -63469.8 -298696
+1.61781e+07 -2211.22 -145180
+1.62102e+07 -4137.92 -157587
+1.62388e+07 -6130.74 -169261
+1.62636e+07 -8117.43 -179801
+1.62841e+07 -10013.7 -188792
+1.63003e+07 -11725.6 -195830
+1.63123e+07 -13152.1 -200546
+1.63203e+07 -14189.1 -202636
+1.63251e+07 -14733.7 -201902
+1.63275e+07 -14688.4 -198276
+1.63287e+07 -13966.6 -191861
+1.63305e+07 -12498 -182954
+1.63347e+07 -10233 -172061
+1.63435e+07 -7148.33 -159897
+1.63595e+07 -3250.59 -147356
+1.63853e+07 1420.25 -135452
+1.64239e+07 6788.39 -125218
+1.64779e+07 12740.8 -117564
+1.65499e+07 19126.8 -113106
+1.6642e+07 25757.7 -111980
+1.67557e+07 32407.6 -113664
+1.68913e+07 38812.4 -116840
+1.70478e+07 44668.3 -119344
+1.72226e+07 49625.9 -118208
+1.74112e+07 53277.6 -109828
+1.76067e+07 55133.5 -90223.5
+1.77996e+07 54578.6 -55334.2
+1.79774e+07 50801.6 -1267.37
+1.81239e+07 42687.4 75598.8
+1.82186e+07 28665.5 178680
+1.82354e+07 6517.25 311307
+1.81412e+07 -26842.4 476601
+1.78939e+07 -75570.9 676631
+1.74414e+07 -144978 910337
+1.672e+07 -241138 1.16988e+06
+1.56587e+07 -369139 1.43563e+06
+1.41927e+07 -528360 1.67164e+06
+1.22966e+07 -703623 1.82598e+06
+1.00382e+07 -855800 1.84328e+06
+7.62564e+06 -925584 1.6931e+06
+5.37668e+06 -867786 1.40186e+06
+3.56152e+06 -702824 1.05504e+06
+2.25244e+06 -508452 738046
+1.37517e+06 -341711 492237
+815491 -218433 318144
+471814 -134194 200532
+267367 -79731.1 123472
+148901 -46068.3 74329.6
+81725.3 -26016.2 43819.4
+44286.1 -14429.4 25361.3
+23690.2 -7895.61 14454.1
+12465.9 -4279.2 8138.15
+6386.07 -2305.2 4541.76
+3101.42 -1238.7 2521.28
+1324.61 -666.538 1397.97
+357.442 -360.963 778.586
+-177.015 -198.449 439.787
+-482.407 -112.778 256.912
+-670.257 -68.9621 161.811
+-804.99 -49.1848 118.74
+-929.804 -45.4439 111.319
+-1083.86 -56.2236 136.462
+-1317.95 -85.8968 203.272
+-1714.91 -146.555 336.549
+-2423.31 -263.101 586.171
+-3718.13 -483.618 1045.54
+-6111.37 -898.841 1885.03
+-10554.9 -1678.13 3410.29
+-18808.3 -3134.15 6160.76
+-34089.2 -5834.93 11070.4
+-62198.3 -10792.4 19718.6
+-113410 -19765.4 34702.4
+-205496 -35709.3 60159.3
+-368285 -63373 102460
+-650109 -110003 171118
+-1.1261e+06 -185980 280058
+-1.90696e+06 -304895 449223
+-3.14429e+06 -482121 705338
+-5.01683e+06 -727460 1.07584e+06
+-7.64964e+06 -1.01932e+06 1.56292e+06
+-1.09383e+07 -1.26786e+06 2.0997e+06
+-1.4462e+07 -1.34851e+06 2.54475e+06
+-1.77317e+07 -1.23255e+06 2.75822e+06
+-2.04412e+07 -996764 2.70097e+06
+-2.25068e+07 -735753 2.42877e+06
+-2.39837e+07 -507267 2.03622e+06
+-2.49777e+07 -329666 1.6086e+06
+-2.55957e+07 -199673 1.20206e+06
+-2.59278e+07 -107171 844535
+-2.60454e+07 -42154.6 544526
+-2.60038e+07 3301.44 300165
+-2.5846e+07 34984.5 105865
+-2.56057e+07 56939.8 -43839.4
+-2.53099e+07 71891 -152945
+-2.49814e+07 81611.7 -224351
+-2.46389e+07 87235.2 -261017
+-2.42984e+07 89496.6 -267050
+-2.3973e+07 88904.6 -248203
+-2.36728e+07 85853.6 -211700
+-2.34051e+07 80689.3 -165532
+-2.31745e+07 73743.4 -117545
+-2.29828e+07 65349.4 -74577
+-2.28299e+07 55845.8 -41835.3
+-2.27141e+07 45575 -22584.6
+-2.26321e+07 34877.3 -18140.6
+-2.25802e+07 24083.9 -28102.6
+-2.25539e+07 13508.7 -50734.2
+-2.25487e+07 3440.31 -83403.1
+-2.25602e+07 -5865.6 -123005
+-2.2584e+07 -14192.9 -166325
+-2.26161e+07 -21370.2 -210305
+-2.2653e+07 -27273.6 -252236
+-2.26913e+07 -31828.2 -289860
+-2.27284e+07 -35007.2 -321428
+-2.27619e+07 -36829.1 -345711
+-2.27897e+07 -37353.3 -361989
+-2.28105e+07 -36674.6 -370008
+-2.28231e+07 -34916.7 -369923
+-2.28268e+07 -32225.2 -362232
+-2.28211e+07 -28760.2 -347696
+0 -24689.1 -327265
+1.64254e+07 2211.22 -149248
+1.64567e+07 4137.92 -162075
+1.64837e+07 6130.75 -174156
+1.65058e+07 8117.44 -185077
+1.6523e+07 10013.7 -194412
+1.6535e+07 11725.6 -201743
+1.65421e+07 13152.1 -206688
+1.65448e+07 14189.1 -208932
+1.65439e+07 14733.7 -208267
+1.65407e+07 14688.4 -204620
+1.65365e+07 13966.6 -198091
+1.65334e+07 12498 -188979
+1.65337e+07 10233 -177799
+1.65399e+07 7148.33 -165281
+1.65548e+07 3250.58 -152341
+1.65816e+07 -1420.25 -140020
+1.66233e+07 -6788.38 -129380
+1.6683e+07 -12740.8 -121366
+1.67634e+07 -19126.8 -116622
+1.68667e+07 -25757.7 -115308
+1.69942e+07 -32407.6 -116913
+1.71463e+07 -38812.4 -120121
+1.73218e+07 -44668.3 -122744
+1.75178e+07 -49625.9 -121775
+1.77291e+07 -53277.6 -113551
+1.79483e+07 -55133.5 -94007.4
+1.81651e+07 -54578.6 -58980.9
+1.83658e+07 -50801.6 -4449.75
+1.85331e+07 -42687.4 73368.9
+1.86445e+07 -28665.5 178092
+1.86717e+07 -6517.25 313301
+1.85783e+07 26842.4 482410
+1.83187e+07 75570.9 687784
+1.78363e+07 144978 928580
+1.7064e+07 241138 1.19692e+06
+1.59299e+07 369139 1.47267e+06
+1.43743e+07 528360 1.7186e+06
+1.23856e+07 703623 1.88074e+06
+1.00537e+07 855800 1.90127e+06
+7.6058e+06 925584 1.74821e+06
+5.35798e+06 867786 1.44868e+06
+3.55701e+06 702824 1.09115e+06
+2.25895e+06 508452 764000
+1.38605e+06 341711 510073
+826122 218433 330043
+480176 134194 208272
+273166 79731.1 128381
+152610 46068.3 77367.2
+83969.7 26016.2 45655.3
+45588.8 14429.4 26448
+24421.6 7895.61 15086.2
+12863.4 4279.2 8500.63
+6592.81 2305.2 4747.47
+3200.77 1238.7 2637.24
+1364 666.538 1463.18
+363.275 360.963 815.394
+-190.208 198.449 460.844
+-506.714 112.778 269.365
+-701.562 68.9621 169.746
+-841.427 49.1848 124.611
+-971.044 45.4439 116.828
+-1130.99 56.2236 143.167
+-1373.84 85.8968 213.144
+-1785.29 146.555 352.689
+-2518.94 263.101 613.918
+-3858.6 483.618 1094.36
+-6332.31 898.841 1971.79
+-10920.4 1678.13 3564.81
+-19431.1 3134.15 6435.21
+-35163.6 5834.93 11554.5
+-64048 10792.4 20563.4
+-116541 19765.4 36156.3
+-210632 35709.3 62618.1
+-376303 63373 106535
+-661725 110003 177726
+-1.14108e+06 185980 290537
+-1.92294e+06 304895 465501
+-3.15569e+06 482121 730132
+-5.01565e+06 727460 1.11266e+06
+-7.63294e+06 1.01932e+06 1.61523e+06
+-1.09269e+07 1.26786e+06 2.16861e+06
+-1.45105e+07 1.34851e+06 2.62643e+06
+-1.78942e+07 1.23255e+06 2.84389e+06
+-2.07414e+07 996764 2.78082e+06
+-2.29368e+07 735753 2.49572e+06
+-2.45173e+07 507267 2.08725e+06
+-2.55841e+07 329666 1.64402e+06
+-2.62464e+07 199673 1.22409e+06
+-2.65997e+07 107171 856077
+-2.67209e+07 42154.6 548366
+-2.667e+07 -3301.44 298628
+-2.64932e+07 -34984.5 100738
+-2.62269e+07 -56939.8 -51238.3
+-2.59001e+07 -71891 -161640
+-2.55369e+07 -81611.7 -233599
+-2.51575e+07 -87235.2 -270240
+-2.47789e+07 -89496.6 -275801
+-2.44154e+07 -88904.6 -256170
+-2.40781e+07 -85853.6 -218708
+-2.37753e+07 -80689.3 -171548
+-2.35122e+07 -73743.4 -122667
+-2.32916e+07 -65349.3 -79011.2
+-2.31139e+07 -55845.8 -45863.6
+-2.29776e+07 -45575 -26526.5
+-2.28799e+07 -34877.3 -22317
+-2.28168e+07 -24083.9 -32803.6
+-2.2784e+07 -13508.7 -56195.3
+-2.27767e+07 -3440.31 -89791.1
+-2.27901e+07 5865.59 -130412
+-2.28195e+07 14192.9 -174769
+-2.28603e+07 21370.2 -219739
+-2.29083e+07 27273.6 -262553
+-2.29598e+07 31828.2 -300908
+-2.30113e+07 35007.2 -333021
+-2.30598e+07 36829.1 -357642
+-2.31028e+07 37353.3 -374037
+-2.31384e+07 36674.6 -381953
+-2.31649e+07 34916.7 -381554
+-2.31812e+07 32225.2 -373353
+-2.31867e+07 28760.2 -358134
+0 24689.1 -336874
+1.61781e+07 5606.94 -145180
+1.62102e+07 10562.5 -157587
+1.62388e+07 15688.6 -169261
+1.62636e+07 20799.7 -179801
+1.62841e+07 25679.3 -188792
+1.63003e+07 30085.5 -195830
+1.63123e+07 33758.6 -200546
+1.63203e+07 36430.1 -202636
+1.63251e+07 37833.6 -201902
+1.63275e+07 37716.7 -198276
+1.63287e+07 35853.9 -191861
+1.63305e+07 32059.6 -182954
+1.63347e+07 26201.5 -172061
+1.63435e+07 18213 -159897
+1.63595e+07 8103.45 -147356
+1.63853e+07 -4032.14 -135452
+1.64239e+07 -18006.7 -125218
+1.64779e+07 -33536.2 -117564
+1.65499e+07 -50236.8 -113106
+1.6642e+07 -67623.6 -111980
+1.67557e+07 -85108.6 -113664
+1.68913e+07 -101998 -116840
+1.70478e+07 -117483 -119344
+1.72226e+07 -130623 -118208
+1.74112e+07 -140307 -109828
+1.76067e+07 -145187 -90223.5
+1.77996e+07 -143561 -55334.2
+1.79774e+07 -133180 -1267.37
+1.81239e+07 -110954 75598.8
+1.82186e+07 -72542.8 178680
+1.82354e+07 -11800.4 311307
+1.81412e+07 79895.6 476601
+1.78939e+07 214389 676631
+1.74414e+07 407313 910337
+1.672e+07 677553 1.16988e+06
+1.56587e+07 1.04298e+06 1.43563e+06
+1.41927e+07 1.50734e+06 1.67164e+06
+1.22966e+07 2.03354e+06 1.82598e+06
+1.00382e+07 2.5113e+06 1.84328e+06
+7.62564e+06 2.75895e+06 1.6931e+06
+5.37668e+06 2.62008e+06 1.40186e+06
+3.56152e+06 2.13489e+06 1.05504e+06
+2.25244e+06 1.54516e+06 738046
+1.37517e+06 1.03554e+06 492237
+815491 659083 318144
+471814 402940 200532
+267367 238296 123472
+148901 137143 74329.6
+81725.3 77202.6 43819.4
+44286.1 42711.3 25361.3
+23690.2 23326.5 14454.1
+12465.9 12624.2 8138.15
+6386.07 6792.87 4541.76
+3101.42 3646.87 2521.28
+1324.61 1961.03 1397.97
+357.442 1061.34 778.586
+-177.015 583.17 439.787
+-482.407 331.254 256.912
+-670.257 202.447 161.811
+-804.99 144.306 118.74
+-929.804 133.29 111.319
+-1083.86 164.928 136.462
+-1317.95 252.097 203.272
+-1714.91 430.36 336.549
+-2423.31 773.025 586.171
+-3718.13 1421.84 1045.54
+-6111.37 2644.33 1885.03
+-10554.9 4940.44 3410.29
+-18808.3 9235.33 6160.76
+-34089.2 17213 11070.4
+-62198.3 31881.9 19718.6
+-113410 58498.2 34702.4
+-205496 105945 60159.3
+-368285 188600 102460
+-650109 328624 171118
+-1.1261e+06 558079 280058
+-1.90696e+06 919126 449223
+-3.14429e+06 1.45922e+06 705338
+-5.01683e+06 2.2073e+06 1.07584e+06
+-7.64964e+06 3.09102e+06 1.56292e+06
+-1.09383e+07 3.82108e+06 2.0997e+06
+-1.4462e+07 4.01139e+06 2.54475e+06
+-1.77317e+07 3.60906e+06 2.75822e+06
+-2.04412e+07 2.87453e+06 2.70097e+06
+-2.25068e+07 2.09441e+06 2.42877e+06
+-2.39837e+07 1.42963e+06 2.03622e+06
+-2.49777e+07 922949 1.6086e+06
+-2.55957e+07 557385 1.20206e+06
+-2.59278e+07 299873 844535
+-2.60454e+07 120130 544526
+-2.60038e+07 -4865.55 300165
+-2.5846e+07 -91498.3 105865
+-2.56057e+07 -151070 -43839.4
+-2.53099e+07 -191180 -152945
+-2.49814e+07 -216818 -224351
+-2.46389e+07 -231224 -261017
+-2.42984e+07 -236539 -267050
+-2.3973e+07 -234260 -248203
+-2.36728e+07 -225540 -211700
+-2.34051e+07 -211366 -165532
+-2.31745e+07 -192659 -117545
+-2.29828e+07 -170317 -74577
+-2.28299e+07 -145236 -41835.3
+-2.27141e+07 -118302 -22584.6
+-2.26321e+07 -90388.3 -18140.6
+-2.25802e+07 -62336.4 -28102.6
+-2.25539e+07 -34938.1 -50734.2
+-2.25487e+07 -8918.15 -83403.1
+-2.25602e+07 15083.9 -123005
+-2.2584e+07 36528.9 -166325
+-2.26161e+07 54990.4 -210305
+-2.2653e+07 70161.7 -252236
+-2.26913e+07 81858.8 -289860
+-2.27284e+07 90018.4 -321428
+-2.27619e+07 94691.5 -345711
+-2.27897e+07 96032 -361989
+-2.28105e+07 94283.7 -370008
+-2.28231e+07 89763.8 -369923
+-2.28268e+07 82845.1 -362232
+-2.28211e+07 73937.6 -347696
+0 63469.8 -327265
+1.53256e+07 6467.48 -133068
+1.53592e+07 12400.3 -144270
+1.53915e+07 18538.2 -154789
+1.54222e+07 24659.9 -164260
+1.54507e+07 30506.5 -172307
+1.54769e+07 35788.4 -178563
+1.55005e+07 40193.9 -182695
+1.55214e+07 43400 -184431
+1.55398e+07 45084.6 -183595
+1.5556e+07 44940.6 -180134
+1.55705e+07 42691 -174152
+1.55841e+07 38103.9 -165928
+1.55978e+07 31008.4 -155935
+1.56129e+07 21309 -144835
+1.56311e+07 8999.29 -133450
+1.56542e+07 -5826.55 -122710
+1.56841e+07 -22963.8 -113550
+1.5723e+07 -42089.5 -106787
+1.57729e+07 -62755.9 -102955
+1.58356e+07 -84384.4 -102134
+1.59125e+07 -106260 -103785
+1.6004e+07 -127518 -106630
+1.611e+07 -147131 -108605
+1.62286e+07 -163873 -106913
+1.63566e+07 -176260 -98187.2
+1.6489e+07 -182456 -78751.1
+1.66187e+07 -180099 -44910.2
+1.67363e+07 -166041 6801.17
+1.68294e+07 -135945 79509.2
+1.68828e+07 -83701.5 176052
+1.68772e+07 -606.562 299094
+1.6788e+07 125773 451029
+1.65841e+07 313133 633250
+1.62253e+07 586248 844329
+1.5659e+07 977971 1.0768e+06
+1.48184e+07 1.52547e+06 1.31282e+06
+1.3626e+07 2.25258e+06 1.52024e+06
+1.20163e+07 3.12635e+06 1.65314e+06
+9.98931e+06 3.9906e+06 1.66294e+06
+7.68921e+06 4.53494e+06 1.52337e+06
+5.43402e+06 4.42699e+06 1.25849e+06
+3.57156e+06 3.65203e+06 944804
+2.22796e+06 2.64351e+06 659018
+1.33867e+06 1.75996e+06 438121
+781355 1.1097e+06 282224
+445691 671642 177309
+249604 393513 108838
+137698 224730 65333.6
+75012.9 125736 38415.1
+40417.8 69224.3 22180.1
+21529.7 37668.3 12613.2
+11294.8 20330.9 7087.26
+5777.42 10915.3 3947.85
+2808.25 5849.75 2187.75
+1206.77 3141.67 1211.04
+337.452 1698.3 673.419
+-141.645 932.086 379.807
+-414.838 529.015 221.544
+-582.485 322.988 139.342
+-702.438 229.979 102.151
+-813.454 212.319 95.7593
+-950.568 262.761 117.496
+-1159.4 402.026 175.269
+-1514.38 686.996 290.631
+-2149.35 1235.17 506.984
+-3313.37 2274.77 905.751
+-5471.23 4235.95 1635.76
+-9489.97 7924.4 2964.63
+-16984.1 14839.8 5365.93
+-30926 27719.5 9662.06
+-56717.8 51478.5 17248.4
+-104059 94793.7 30428.3
+-190010 172495 52887.8
+-343772 308902 90330.2
+-613929 542284 151319
+-1.07826e+06 929231 248451
+-1.8541e+06 1.54505e+06 399848
+-3.10396e+06 2.47442e+06 629843
+-5.01678e+06 3.76557e+06 963499
+-7.70339e+06 5.2708e+06 1.4032e+06
+-1.09817e+07 6.43447e+06 1.88899e+06
+-1.43196e+07 6.56897e+06 2.29381e+06
+-1.72364e+07 5.71306e+06 2.49252e+06
+-1.95258e+07 4.40308e+06 2.44947e+06
+-2.12007e+07 3.11878e+06 2.21305e+06
+-2.23679e+07 2.08275e+06 1.86646e+06
+-2.31448e+07 1.32477e+06 1.48532e+06
+-2.3629e+07 794300 1.12002e+06
+-2.38945e+07 428752 796152
+-2.39967e+07 177635 522092
+-2.39777e+07 5273.86 296911
+-2.38702e+07 -112560 116279
+-2.37005e+07 -192178 -24125.3
+-2.34899e+07 -244500 -127410
+-2.32561e+07 -276783 -195825
+-2.30143e+07 -293839 -231821
+-2.27769e+07 -298912 -239030
+-2.25537e+07 -294287 -222714
+-2.23522e+07 -281691 -189570
+-2.21772e+07 -262545 -147058
+-2.2031e+07 -238107 -102532
+-2.1914e+07 -209545 -62421.9
+-2.18249e+07 -177980 -31641.4
+-2.1761e+07 -144487 -13293.2
+-2.17188e+07 -110103 -8659.45
+-2.16945e+07 -75806.1 -17415.5
+-2.16841e+07 -42509.2 -37985.2
+-2.16837e+07 -11037.9 -67950.2
+-2.16898e+07 17883.7 -104446
+-2.16993e+07 43648.9 -144496
+-2.17095e+07 65780.2 -185268
+-2.17184e+07 83937 -224248
+-2.17242e+07 97919 -259338
+-2.17256e+07 107664 -288912
+-2.17219e+07 113239 -311826
+-2.17124e+07 114834 -327406
+-2.16969e+07 112738 -335409
+-2.16755e+07 107331 -335973
+-2.16484e+07 99055.6 -329549
+-2.16159e+07 88398.4 -316833
+0 75868.7 -298696
+1.35936e+07 4683.37 -113390
+1.3627e+07 9409.93 -122758
+1.36615e+07 14301.2 -131554
+1.36966e+07 19181.9 -139472
+1.37319e+07 23845.7 -146198
+1.3767e+07 28061.6 -151424
+1.38015e+07 31579.9 -154869
+1.38348e+07 34140.9 -156307
+1.38666e+07 35484 -155587
+1.38964e+07 35358.8 -152665
+1.3924e+07 33535.6 -147626
+1.39494e+07 29818.1 -140703
+1.39724e+07 24054.5 -132293
+1.39934e+07 16149.9 -122948
+1.40128e+07 6076.65 -113356
+1.40315e+07 -6115 -104290
+1.40503e+07 -20287.8 -96523.5
+1.40704e+07 -36208.6 -90723.8
+1.4093e+07 -53540.1 -87311.1
+1.41195e+07 -71831.8 -86313
+1.41509e+07 -90508.3 -87227.3
+1.4188e+07 -108853 -88924.1
+1.4231e+07 -125983 -89613.7
+1.42794e+07 -140804 -86906
+1.43318e+07 -151946 -77968.3
+1.43857e+07 -157639 -59764
+1.44376e+07 -155537 -29321.1
+1.44826e+07 -142426 16048.3
+1.45145e+07 -113797 78655.9
+1.45256e+07 -63197.6 160502
+1.45067e+07 18729.4 263408
+1.44461e+07 145749 388992
+1.43286e+07 338440 538110
+1.41328e+07 627904 709399
+1.38256e+07 1.06035e+06 896678
+1.33522e+07 1.69865e+06 1.08545e+06
+1.26238e+07 2.60862e+06 1.24979e+06
+1.15161e+07 3.80609e+06 1.3529e+06
+9.91066e+06 5.145e+06 1.3561e+06
+7.81918e+06 6.19697e+06 1.23866e+06
+5.53956e+06 6.34065e+06 1.0201e+06
+3.57819e+06 5.33195e+06 762520
+2.17087e+06 3.85121e+06 528951
+1.26541e+06 2.5316e+06 349582
+717566 1.57128e+06 223912
+399148 936166 139955
+219076 540843 85528.1
+118940 305470 51142.4
+63973.3 169463 29967
+34144.6 92659.2 17248.8
+18062.1 50166.8 9781.61
+9424.98 26981.5 5482.12
+4808.02 14439.5 3046.5
+2340.14 7718.99 1684.55
+1014.13 4139.74 930.549
+297.767 2234.05 516.42
+-95.0691 1223.97 290.706
+-318.623 694.203 169.26
+-455.325 423.319 106.28
+-552.728 300.952 77.8293
+-642.793 277.725 72.966
+-754.061 343.704 89.6399
+-924.251 526.649 133.953
+-1214.55 901.037 222.54
+-1735.14 1621.43 388.947
+-2694.66 2991.86 696.264
+-4482.15 5581.02 1260.11
+-7824.92 10456.4 2288.99
+-14102 19631.6 4153.09
+-25877.6 36786.3 7497.87
+-47856.9 68554.7 13423.1
+-88708 126869 23753.5
+-164116 232423 41428
+-301722 419686 71027.9
+-549699 744754 119490
+-989547 1.29366e+06 197133
+-1.74995e+06 2.18356e+06 318984
+-3.01623e+06 3.5492e+06 505401
+-5.00585e+06 5.46522e+06 777621
+-7.8116e+06 7.66176e+06 1.13834e+06
+-1.10958e+07 9.1738e+06 1.53833e+06
+-1.41016e+07 8.93305e+06 1.87295e+06
+-1.63925e+07 7.33176e+06 2.04056e+06
+-1.79609e+07 5.33861e+06 2.0122e+06
+-1.89854e+07 3.59872e+06 1.82624e+06
+-1.96465e+07 2.31049e+06 1.54926e+06
+-2.00696e+07 1.42869e+06 1.24225e+06
+-2.03312e+07 842344 946206
+-2.04776e+07 453631 682162
+-2.05392e+07 194547 457186
+-2.05378e+07 21371.3 270785
+-2.04904e+07 -93799.2 119735
+-2.04109e+07 -169104 899.697
+-2.03113e+07 -216535 -87804.7
+-2.02016e+07 -244081 -147754
+-2.00905e+07 -257084 -180558
+-1.99852e+07 -259157 -188934
+-1.98912e+07 -252810 -177109
+-1.9812e+07 -239875 -150644
+-1.97497e+07 -221772 -115849
+-1.97045e+07 -199678 -79008.2
+-1.96751e+07 -174620 -45653.4
+-1.96592e+07 -147532 -20036.2
+-1.96537e+07 -119276 -4859.64
+-1.96554e+07 -90653.5 -1262.59
+-1.96607e+07 -62408.5 -9000.97
+-1.96665e+07 -35220.2 -26752.2
+-1.96701e+07 -9696.51 -52468.2
+-1.96693e+07 13634.7 -83716.5
+-1.96625e+07 34334.3 -117970
+-1.96487e+07 52059.7 -152824
+-1.96274e+07 66569.3 -186146
+-1.95986e+07 77725.7 -216165
+-1.95627e+07 85493.8 -241507
+-1.95203e+07 89937 -261213
+-1.94725e+07 91208.9 -274721
+-1.94203e+07 89542.8 -281835
+-1.93648e+07 85238.1 -282677
+-1.93073e+07 78645.7 -277636
+-1.92488e+07 70150.5 -267303
+0 60154.8 -252413
+1.07638e+07 1657.68 -87578.7
+1.07929e+07 4077.01 -94722.2
+1.08241e+07 6583.1 -101473
+1.08574e+07 9086.61 -107606
+1.08921e+07 11481.8 -112887
+1.0928e+07 13649.2 -117082
+1.09644e+07 15459.5 -119975
+1.10008e+07 16777.3 -121384
+1.10364e+07 17465.6 -121182
+1.10706e+07 17390.7 -119314
+1.11026e+07 16428 -115819
+1.11318e+07 14467.2 -110845
+1.11576e+07 11418 -104656
+1.11796e+07 7216.08 -97636.3
+1.11974e+07 1828.54 -90270.6
+1.12109e+07 -4740.56 -83108.8
+1.12203e+07 -12444.7 -76706.8
+1.12258e+07 -21189.1 -71543.7
+1.1228e+07 -30824.3 -67920.7
+1.12274e+07 -41138.7 -65853.4
+1.12247e+07 -51847.8 -64973
+1.12207e+07 -62579.1 -64459.8
+1.12157e+07 -72847.7 -63029.9
+1.12102e+07 -82017.9 -58994.2
+1.12044e+07 -89239.6 -50392.8
+1.1198e+07 -93347.5 -35188.3
+1.1191e+07 -92701.1 -11471.4
+1.11832e+07 -84938.4 22388.3
+1.11747e+07 -66599.3 67712.6
+1.11664e+07 -32545.1 125629
+1.116e+07 24976.4 197259
+1.11582e+07 117944 283776
+1.11649e+07 265530 386063
+1.11832e+07 499603 503635
+1.12092e+07 874083 632682
+1.12171e+07 1.47712e+06 763420
+1.11258e+07 2.43504e+06 877761
+1.07555e+07 3.8725e+06 949665
+9.81875e+06 5.7625e+06 951553
+8.07391e+06 7.63921e+06 868291
+5.71665e+06 8.44107e+06 712954
+3.56152e+06 7.28961e+06 529321
+2.05191e+06 5.22086e+06 363637
+1.13597e+06 3.35404e+06 237870
+614766 2.03253e+06 150955
+328783 1.1849e+06 93650.4
+175240 671880 56909.8
+93002.1 374445 33881.2
+49083 205733 19780.4
+25868.1 111540 11350.9
+13566.9 60047.8 6420.3
+7018.61 32192.7 3589.84
+3567.52 17157.4 1990.66
+1742.33 9143.57 1098.6
+760.94 4902.24 605.755
+234.981 2639.75 335.574
+-50.3788 1442.26 188.606
+-213.585 818.707 109.663
+-312.948 498.605 68.7818
+-383.131 353.654 50.3527
+-448.206 326.485 47.238
+-528.248 403.657 58.0997
+-651.923 620.085 86.9352
+-863.58 1061.98 144.627
+-1241.66 1909.99 253.124
+-1946.49 3534.79 453.833
+-3269.37 6607.63 822.861
+-5743.1 12385.6 1497.66
+-10440.4 23328.6 2723.08
+-19374.1 43889.3 4927.95
+-36197.4 82052.2 8845.63
+-68022.1 152716 15699.1
+-128312 282120 27475.4
+-241342 514268 47302.1
+-452738 924671 79971.9
+-847307 1.63575e+06 132776
+-1.56857e+06 2.81953e+06 216643
+-2.84261e+06 4.68849e+06 346714
+-4.95966e+06 7.37761e+06 539219
+-8.01056e+06 1.04199e+07 797035
+-1.13677e+07 1.21463e+07 1.08396e+06
+-1.3845e+07 1.09552e+07 1.32288e+06
+-1.517e+07 8.17735e+06 1.4418e+06
+-1.56995e+07 5.41507e+06 1.42129e+06
+-1.58425e+07 3.35119e+06 1.28938e+06
+-1.58469e+07 2.00389e+06 1.09393e+06
+-1.58201e+07 1.17255e+06 878691
+-1.5796e+07 664240 672761
+-1.57799e+07 349097 490585
+-1.57694e+07 150366 336326
+-1.57613e+07 24046.6 208719
+-1.57535e+07 -55727.3 104779
+-1.57452e+07 -104869 21951.7
+-1.5737e+07 -133544 -41172.5
+-1.57301e+07 -148377 -85202.9
+-1.57261e+07 -153715 -110775
+-1.57269e+07 -152426 -119331
+-1.57336e+07 -146423 -113509
+-1.57471e+07 -137017 -97070
+-1.57672e+07 -125145 -74456.4
+-1.57929e+07 -111517 -50197.5
+-1.58224e+07 -96703.3 -28332.2
+-1.58535e+07 -81184.1 -11984.3
+-1.58838e+07 -65382.1 -3139.56
+-1.59106e+07 -49675.8 -2622.7
+-1.59315e+07 -34406.7 -10229.3
+-1.59447e+07 -19882.1 -24955.6
+-1.59487e+07 -6373.51 -45266
+-1.59424e+07 5885.05 -69351.4
+-1.59256e+07 16700.4 -95347.3
+-1.58984e+07 25923.3 -121496
+-1.58614e+07 33450.7 -146253
+-1.58156e+07 39227.1 -168351
+-1.57623e+07 43245.3 -186824
+-1.57029e+07 45544.3 -201014
+-1.56391e+07 46206.7 -210553
+-1.55725e+07 45353.9 -215338
+-1.55047e+07 43140.2 -215497
+-1.54373e+07 39745.3 -211344
+-1.53716e+07 35366.2 -203335
+0 30207.9 -192023
+7.06369e+06 -654.803 -58708.7
+7.08391e+06 -74.7732 -63517
+7.10593e+06 531.137 -68149.8
+7.12957e+06 1141.41 -72471
+7.1546e+06 1729.84 -76333.1
+7.18069e+06 2266.41 -79583.2
+7.20745e+06 2718.12 -82071.2
+7.23443e+06 3049.92 -83660.4
+7.26112e+06 3225.68 -84238.6
+7.28694e+06 3209.2 -83731
+7.31131e+06 2965.34 -82112.9
+7.33365e+06 2461.14 -79421.1
+7.35337e+06 1666.98 -75763.1
+7.36997e+06 557.78 -71319.6
+7.383e+06 -885.792 -66339.2
+7.3921e+06 -2676.05 -61119.6
+7.39704e+06 -4816.91 -55975.7
+7.39773e+06 -7302.29 -51192.7
+7.39416e+06 -10114 -46967.7
+7.38646e+06 -13218.7 -43348.4
+7.37483e+06 -16563.5 -40178.1
+7.35954e+06 -20067.9 -37062.5
+7.34093e+06 -23611.9 -33371.4
+7.3194e+06 -27015.3 -28287
+7.29552e+06 -30004.7 -20895.5
+7.27017e+06 -32160.2 -10308.9
+7.24478e+06 -32832.6 4223.35
+7.22176e+06 -31012 23261.6
+7.20506e+06 -25122.6 47231
+7.20093e+06 -12682 76595.5
+7.21903e+06 10305.6 112088
+7.27394e+06 50551.1 154850
+7.38698e+06 120071 206249
+7.58807e+06 241993 267163
+7.91444e+06 463206 336600
+8.39756e+06 879083 409805
+9.01755e+06 1.67065e+06 476563
+9.59884e+06 3.12415e+06 521253
+9.67087e+06 5.51477e+06 526766
+8.52485e+06 8.61952e+06 482967
+5.96762e+06 1.08583e+07 396059
+3.44874e+06 9.70025e+06 290793
+1.8036e+06 6.78903e+06 196039
+916894 4.18961e+06 125590
+460952 2.45598e+06 78217.8
+232016 1.39378e+06 47852.3
+119305 772536 28833.5
+61625 425063 17074.2
+31597.2 231709 9925.72
+16481.7 124370 5678.83
+8616.87 66640.2 3206.55
+4377.18 35731.5 1790.13
+2221 18930.1 991.209
+1104.78 10050.6 546.561
+480.156 5412.82 301.091
+153.533 2903.86 166.6
+-16.437 1577.39 93.6194
+-119.296 901.475 54.4655
+-181.216 548.026 34.1859
+-223.416 386.76 25.0848
+-263.789 358.351 23.5963
+-311.543 440.941 29.0275
+-388.876 681.667 43.4083
+-521.65 1168.34 72.186
+-746.772 2088.45 126.226
+-1185.4 3888.93 226.277
+-2024.72 7292.04 410.626
+-3536.41 13612 747.878
+-6476.94 25744 1360.94
+-12253 48701.8 2466.82
+-22993.6 91036.5 4435.52
+-43731.5 170286 7887.74
+-84932.3 317681 13852.4
+-164100 583556 23967.7
+-319207 1.06281e+06 40778.4
+-634742 1.92283e+06 68382.1
+-1.26388e+06 3.40209e+06 113382
+-2.49133e+06 5.84168e+06 185300
+-4.78089e+06 9.55371e+06 294722
+-8.30698e+06 1.37843e+07 444179
+-1.19007e+07 1.55286e+07 610597
+-1.35039e+07 1.23065e+07 745457
+-1.34052e+07 7.81157e+06 807536
+-1.2611e+07 4.36853e+06 787531
+-1.17745e+07 2.2991e+06 704080
+-1.11297e+07 1.19001e+06 587315
+-1.06967e+07 617484 464139
+-1.04296e+07 317511 351587
+-1.02777e+07 153716 256892
+-1.02017e+07 60587.8 180555
+-1.01741e+07 6535.32 119764
+-1.01761e+07 -24586 71036.8
+-1.01955e+07 -41716.7 31757
+-1.02246e+07 -50164.2 654.766
+-1.02587e+07 -53214.7 -22494.5
+-1.02954e+07 -52937.5 -37554.9
+-1.03333e+07 -50637.1 -44702
+-1.03719e+07 -47130.2 -44823.2
+-1.04108e+07 -42925 -39571.4
+-1.04495e+07 -38338.4 -31141
+-1.04874e+07 -33571.3 -21902.3
+-1.05234e+07 -28757.2 -14028.4
+-1.05563e+07 -23991 -9208.81
+-1.05848e+07 -19347 -8491.86
+-1.06077e+07 -14888.1 -12257.7
+-1.06239e+07 -10670.2 -20293.8
+-1.06324e+07 -6744.2 -31935.1
+-1.06328e+07 -3155.79 -46228.6
+-1.06249e+07 55.2692 -62090.8
+-1.06088e+07 2856.21 -78437.9
+-1.0585e+07 5222.32 -94279.1
+-1.05541e+07 7137.9 -108774
+-1.05171e+07 8596.89 -121262
+-1.0475e+07 9603.29 -131267
+-1.0429e+07 10171.1 -138495
+-1.03803e+07 10324.2 -142819
+-1.03301e+07 10095 -144258
+-1.02796e+07 9523.82 -142954
+-1.02299e+07 8656.74 -139143
+-1.0182e+07 7543.48 -133129
+0 6234.86 -125262
+3.42111e+06 -1329.27 -31616.7
+3.43114e+06 -1328.26 -34282.5
+3.44172e+06 -1318.36 -36945.1
+3.45276e+06 -1300.31 -39545.2
+3.46418e+06 -1275.41 -42012.4
+3.47588e+06 -1245.49 -44266.4
+3.48772e+06 -1212.88 -46220.2
+3.49956e+06 -1180.4 -47782.8
+3.51124e+06 -1151.22 -48865
+3.52259e+06 -1128.85 -49385
+3.53345e+06 -1116.95 -49275.5
+3.54362e+06 -1119.16 -48491.2
+3.55294e+06 -1138.88 -47015.9
+3.56124e+06 -1179.02 -44868.3
+3.56838e+06 -1241.87 -42104
+3.57422e+06 -1328.88 -38812.9
+3.57865e+06 -1440.68 -35110.4
+3.58157e+06 -1577.1 -31121
+3.58289e+06 -1737.33 -26958.8
+3.58252e+06 -1919.98 -22704.1
+3.58036e+06 -2122.96 -18386
+3.57631e+06 -2343.05 -13973.5
+3.57023e+06 -2574.83 -9384.73
+3.56205e+06 -2808.89 -4514.85
+3.55178e+06 -3029.3 719.638
+3.53972e+06 -3210.72 6333.48
+3.52665e+06 -3315.29 12246.6
+3.51422e+06 -3290.02 18310.7
+3.50551e+06 -3063.31 24413.8
+3.50591e+06 -2533.81 30664.2
+3.52449e+06 -1521.91 37605.9
+3.57637e+06 429.991 46366.3
+3.68687e+06 4822.12 58588.9
+3.89889e+06 16930 76009.9
+4.28402e+06 54792.8 99596.8
+4.95231e+06 175733 128331
+6.03264e+06 543421 158057
+7.54216e+06 1.55862e+06 181341
+9.0173e+06 3.9806e+06 189508
+9.03859e+06 8.54352e+06 177040
+6.07851e+06 1.37722e+07 145673
+2.98437e+06 1.27572e+07 104506
+1.28167e+06 8.4649e+06 67040.6
+568734 4.88529e+06 40248.6
+254557 2.75954e+06 23411.9
+115503 1.52628e+06 13615
+59333.9 824743 8045.41
+30345.4 451755 4731.15
+14424.1 246332 2715.09
+7789.74 130274 1541.19
+4267.96 69756.1 874.324
+1969.98 37807.3 488.838
+1020.47 19758.1 269.748
+576.239 10428.2 149.5
+222.46 5730.44 82.6527
+66.264 3040.36 45.5145
+7.94521 1624.68 25.7542
+-50.6236 953.662 15.1892
+-82.6773 576.09 9.58087
+-99.4306 400.542 7.14574
+-120.954 377.049 6.83812
+-138.599 455.155 8.33388
+-179.972 717.98 12.3425
+-253.895 1233.79 20.435
+-331.166 2150.83 35.1885
+-545.097 4076.05 62.5622
+-1011.97 7709.48 113.822
+-1608.12 14116.8 206.099
+-2923.32 26891.9 372.872
+-6024.92 51496.2 677.952
+-10767.9 95216.3 1216.37
+-19915.1 178416 2152.97
+-41670.6 337619 3815.28
+-81011.4 619660 6697.87
+-158090 1.13427e+06 11502.3
+-349305 2.10467e+06 19761.3
+-780318 3.81775e+06 34710.6
+-1.76225e+06 6.79826e+06 61100.6
+-4.11744e+06 1.18689e+07 103997
+-8.40423e+06 1.8015e+07 164724
+-1.25059e+07 1.95596e+07 231465
+-1.24651e+07 1.21807e+07 281284
+-1.04199e+07 5.67403e+06 298248
+-8.34612e+06 2.20755e+06 279505
+-6.87753e+06 758525 235168
+-5.97967e+06 239466 180928
+-5.46854e+06 72353.9 130206
+-5.19097e+06 21697.5 90492.8
+-5.04914e+06 6037.7 63546
+-4.98534e+06 376.816 47355.7
+-4.96572e+06 -2282.8 38302.2
+-4.97012e+06 -3791.16 32812.4
+-4.9864e+06 -4658.12 28323.2
+-5.00731e+06 -5076.81 23576.7
+-5.02879e+06 -5171.98 18408.1
+-5.04878e+06 -5048.5 13268.5
+-5.06651e+06 -4793.64 8726.99
+-5.08188e+06 -4472.92 5121.4
+-5.09514e+06 -4129.2 2417.46
+-5.10659e+06 -3785.81 247.776
+-5.11647e+06 -3452.27 -1943.57
+-5.12486e+06 -3130.38 -4728.42
+-5.13171e+06 -2819.32 -8551.18
+-5.13687e+06 -2519.01 -13643.5
+-5.14013e+06 -2231.55 -20001.4
+-5.14127e+06 -1961.3 -27413.6
+-5.14011e+06 -1714.01 -35520.8
+-5.13654e+06 -1495.63 -43886.9
+-5.13051e+06 -1311.2 -52065.2
+-5.12206e+06 -1164.07 -59649.9
+-5.11133e+06 -1055.63 -66308.2
+-5.09849e+06 -985.288 -71795.3
+-5.08379e+06 -950.837 -75955.3
+-5.06752e+06 -948.814 -78714.6
+-5.04998e+06 -974.917 -80070.4
+-5.03151e+06 -1024.35 -80078.9
+-5.01243e+06 -1092.13 -78841.3
+-4.99307e+06 -1173.3 -76492.1
+-4.97373e+06 -1263.23 -73185.8
+-4.9547e+06 -1357.76 -69086.7
+0 -1453.49 -64359.6
+214013 -78.9637 -5658.16
+214349 -79.0174 -6141
+214687 -78.5739 -6634.97
+215028 -77.6685 -7130.8
+215368 -76.3719 -7616.91
+215707 -74.7856 -8079.58
+216044 -73.0391 -8503.14
+216376 -71.2881 -8870.42
+216704 -69.7115 -9163.28
+217025 -68.5065 -9363.32
+217338 -67.8826 -9452.77
+217639 -68.0517 -9415.44
+217927 -69.2172 -9237.78
+218198 -71.5629 -8909.93
+218449 -75.2422 -8426.64
+218677 -80.3715 -7788.03
+218879 -87.0282 -7000.09
+219050 -95.2542 -6074.79
+219182 -105.061 -5029.94
+219266 -116.433 -3888.9
+219285 -129.314 -2680.12
+219220 -143.577 -1436.87
+219042 -158.943 -197.196
+218722 -174.867 996.064
+218233 -190.369 2095.36
+217560 -203.843 3049.51
+216719 -212.854 3806.83
+215768 -213.928 4321.39
+214833 -202.005 4563.08
+214134 -167.654 4530.6
+214045 -82.4671 4264.3
+215280 171.975 3853.35
+219522 1123.55 3430.31
+231452 5038.8 3146.33
+264685 21007.1 3123.27
+356567 82606.9 3387.82
+595468 302446 3817.15
+1.13648e+06 1.01439e+06 4183.34
+2.07013e+06 3.04175e+06 4446
+2.83512e+06 7.76958e+06 5228.27
+1.62082e+06 1.49727e+07 7189.9
+469001 1.38954e+07 7210.38
+84233 8.8405e+06 5253.37
+28998.8 4.93563e+06 3052.36
+7353.3 2.77856e+06 1467.66
+-651.301 1.53266e+06 725.569
+2267.61 820815 517.6
+1402.43 452058 368.503
+-196.638 247639 193.382
+248.684 129671 99.2176
+307.844 69609.3 64.1261
+-40.1138 38109.9 35.4327
+5.12326 19688.9 17.4422
+62.652 10357.1 11.1043
+-5.36178 5791.47 5.92235
+-9.31381 3041.01 2.35866
+9.12204 1604.31 1.69441
+-2.47266 964.091 1.22008
+-5.3088 578.267 0.557144
+-2.53898 397.227 0.492445
+-5.72002 379.644 0.640869
+-1.32838 450.141 0.583114
+-6.25751 722.069 0.797486
+-19.7681 1245.75 1.74805
+4.5577 2123.87 2.4466
+-5.26387 4081.25 3.6412
+-89.7326 7784.24 8.80848
+-7.9133 14016.2 15.9315
+30.4096 26820.3 25.4109
+-427.335 51890.3 52.0048
+-302.394 94968.7 93.0675
+224.571 177667 144.759
+-1998.69 339429 283.305
+-2982.49 619847 535.363
+820.441 1.12903e+06 750.853
+-11044.5 2.11424e+06 1062.69
+-41646.8 3.84462e+06 2155.59
+-121720 6.87134e+06 4455.47
+-674132 1.24081e+07 7576.9
+-2.32082e+06 1.96422e+07 10228.1
+-4.05467e+06 2.12738e+07 10055.5
+-2.95798e+06 1.10711e+07 7434.71
+-1.62002e+06 4.32839e+06 6455.19
+-850177 1.43275e+06 5904.07
+-515646 420648 4927.02
+-390333 112021 3772.2
+-346551 27456.6 2953.36
+-331389 6273.23 2768.79
+-326208 1314.57 3233.16
+-324916 164.747 4168.42
+-325425 -142.761 5314.33
+-326832 -256.664 6414.28
+-328610 -310.117 7268.11
+-330405 -332.483 7753.59
+-331991 -334.295 7822.93
+-333252 -322.631 7484.1
+-334163 -303.154 6777.66
+-334756 -280.098 5757.07
+-335098 -256.226 4476.38
+-335260 -233.031 2985.37
+-335307 -211.097 1329.77
+-335285 -190.489 -446.12
+-335222 -171.079 -2296.84
+-335131 -152.761 -4174.45
+-335013 -135.554 -6028.92
+-334867 -119.614 -7809.94
+-334687 -105.185 -9469.53
+-334473 -92.5386 -10964.9
+-334223 -81.904 -12260.6
+-333941 -73.4294 -13330.5
+-333631 -67.1612 -14158.3
+-333296 -63.0463 -14737.1
+-332940 -60.9478 -15069.3
+-332568 -60.6661 -15164.9
+-332179 -61.9598 -15040.2
+-331777 -64.5631 -14716.9
+-331361 -68.2002 -14219.8
+-330930 -72.5983 -13576.3
+-330484 -77.5001 -12814.6
+-330025 -82.6784 -11963
+0 -87.9526 -11048.6
+12353.2 -4.61475 -336.521
+12373 -4.62254 -364.165
+12393 -4.6029 -392.335
+12413 -4.55748 -420.497
+12433 -4.49005 -447.987
+12453 -4.40621 -474.027
+12472.7 -4.31314 -497.727
+12492.3 -4.21949 -518.117
+12511.5 -4.13525 -534.178
+12530.3 -4.07156 -544.877
+12548.6 -4.0404 -549.224
+12566.1 -4.05413 -546.318
+12582.7 -4.12499 -535.416
+12598.2 -4.26449 -515.985
+12612.3 -4.48291 -487.755
+12624.6 -4.78894 -450.765
+12634.9 -5.18964 -405.384
+12642.5 -5.69053 -352.32
+12646.8 -6.29584 -292.61
+12646.9 -7.00846 -227.596
+12641.5 -7.82896 -158.901
+12628.9 -8.75304 -88.412
+12607.2 -9.76657 -18.2741
+12574.2 -10.8377 49.1017
+12528 -11.9064 111.044
+12467.7 -12.872 164.681
+12394.3 -13.58 207.118
+12311.7 -13.7988 235.801
+12228.7 -13.1072 249.105
+12162.1 -10.2123 247.076
+12151.5 0.955416 232.159
+12323.1 51.9581 209.552
+13171 302.505 186.677
+16689.5 1517.58 171.015
+30506.9 7149.77 164.997
+81159.2 31858.8 156.651
+249402 133979 111.444
+734381 528772 8.1366
+1.84157e+06 1.93252e+06 62.723
+3.28705e+06 6.31826e+06 1281.34
+1.72178e+06 1.65257e+07 5120.81
+345374 1.52599e+07 6285.28
+6958.16 9.17222e+06 4593.96
+13411 4.92675e+06 2383.37
+50.9037 2.79095e+06 801.502
+-6111.76 1.53806e+06 253.505
+1651.66 812459 313.144
+1094.14 452288 286.784
+-1020.06 249602 125.602
+105.715 128463 51.9863
+337.929 69328.7 42.4373
+-173.129 38598 22.0008
+-36.5934 19540.6 8.33837
+83.0079 10229.7 7.05825
+-22.0408 5893.01 3.3358
+-18.7731 3036.66 0.263743
+16.7616 1567.96 0.803441
+-1.44068 981.734 0.812827
+-4.24786 580.837 0.116435
+1.77315 390.92 0.205431
+-3.0679 384.091 0.467835
+5.92442 440.836 0.217533
+-0.0391656 727.738 0.195616
+-21.0921 1266.07 1.12304
+25.8791 2075.78 1.07261
+22.276 4083.22 0.653649
+-107.392 7908.95 5.12574
+61.3657 13836.9 9.85643
+206.512 26658.8 12.1731
+-464.451 52528.6 32.8931
+-73.3353 94509.9 61.6088
+1324.08 176155 76.6185
+-1635.43 342173 186.638
+-2042.28 619786 417.034
+8374.64 1.11778e+06 452.363
+-1180.82 2.12273e+06 378.099
+-19528.3 3.86162e+06 1190.46
+-11807.5 6.86014e+06 3469.49
+-497584 1.28842e+07 6536.34
+-2.45654e+06 2.15841e+07 8652.2
+-4.67775e+06 2.34775e+07 6643.58
+-2.61093e+06 8.99609e+06 1286.67
+-1.03149e+06 2.7461e+06 -191.619
+-345051 745413 -103.66
+-110654 185919 97.932
+-41886.6 43097.6 158.606
+-23821.9 9316.78 152.123
+-19447 1877.48 149.154
+-18459.6 348.615 174.362
+-18290.4 52.549 225.16
+-18341 -4.12599 288.573
+-18464.8 -16.6215 350.24
+-18613 -20.3962 398.635
+-18760.4 -21.5842 426.612
+-18891.9 -21.442 431.282
+-18999.8 -20.4813 412.97
+-19082 -19.063 373.885
+-19140.7 -17.4537 316.979
+-19180 -15.8274 245.235
+-19204.6 -14.2786 161.391
+-19218.9 -12.8432 67.9602
+-19226.3 -11.5232 -32.6109
+-19228.9 -10.3071 -137.785
+-19228 -9.18328 -244.854
+-19224.2 -8.14687 -350.964
+-19217.6 -7.20109 -453.22
+-19208.4 -6.35484 -548.849
+-19196.5 -5.61909 -635.357
+-19182.2 -5.00332 -710.677
+-19165.8 -4.51311 -773.259
+-19147.4 -4.14905 -822.114
+-19127.5 -3.90677 -856.808
+-19106.2 -3.77781 -877.417
+-19083.7 -3.75062 -884.466
+-19060.2 -3.81169 -878.851
+-19035.8 -3.94631 -861.757
+-19010.5 -4.13933 -834.581
+-18984.3 -4.37572 -798.854
+-18957.2 -4.64135 -756.172
+-18929.3 -4.92386 -708.133
+0 -5.21374 -656.282
+710.269 -0.231252 -19.8866
+711.429 -0.231763 -21.4604
+712.599 -0.230965 -23.0577
+713.771 -0.228925 -24.6481
+714.941 -0.225819 -26.1937
+716.104 -0.221916 -27.6505
+717.257 -0.217563 -28.9684
+718.394 -0.213181 -30.0929
+719.511 -0.209256 -30.967
+720.601 -0.206338 -31.5331
+721.654 -0.205021 -31.7363
+722.66 -0.205932 -31.5269
+723.605 -0.209706 -30.8643
+724.471 -0.216958 -29.72
+725.235 -0.228267 -28.0804
+725.872 -0.244154 -25.9494
+726.347 -0.265082 -23.3496
+726.617 -0.291464 -20.3226
+726.626 -0.32366 -16.9284
+726.297 -0.361976 -13.2436
+725.535 -0.406591 -9.36057
+724.215 -0.457414 -5.38569
+722.197 -0.513802 -1.4395
+719.33 -0.574135 2.34297
+715.488 -0.635246 5.8124
+710.609 -0.691774 8.8085
+704.755 -0.735341 11.1703
+698.199 -0.752085 12.7572
+691.602 -0.707206 13.4826
+686.775 -0.444419 13.3566
+690.713 0.922032 12.5247
+736.894 8.45649 11.2768
+990.601 49.9868 9.95964
+2235.26 272.126 8.59868
+7960.91 1419.95 5.63157
+32633 7172.66 -5.48645
+131237 35316.6 -41.0285
+489067 170672 -109.694
+1.60499e+06 815431 -45.8462
+4.03515e+06 3.88385e+06 1164.99
+1.90229e+06 1.8647e+07 6251.73
+231840 1.69201e+07 7281.95
+-47528.5 9.44786e+06 4831.85
+20006.4 4.85974e+06 1993.15
+430.019 2.81147e+06 106.147
+-9446.16 1.54805e+06 -278.682
+3116.78 799675 124.299
+1725.91 453557 237.459
+-1707.71 253012 66.9373
+203.429 126534 8.5303
+540.139 68975.5 27.4972
+-296.664 39430.9 12.3865
+-55.7878 19297.9 1.00452
+135.397 10034.9 4.81377
+-38.8663 6066.5 1.67079
+-30.0275 3028.68 -1.56252
+27.9946 1510 0.294052
+-2.70557 1012.32 0.723918
+-6.61639 584.849 -0.175832
+3.46252 380.706 0.0960915
+-4.97954 392.194 0.542448
+10.0336 425.694 0.072463
+1.07142 736.833 -0.16955
+-34.6034 1301.6 0.996263
+42.2625 1998.99 0.298336
+40.9602 4085.47 -1.80628
+-174.722 8123.38 2.9461
+95.8579 13561.8 6.40958
+357.414 26394.7 1.55629
+-742.815 53622.1 19.5179
+-160.656 93904.7 39.8541
+2226.16 173745 13.9288
+-2582.23 346945 103.969
+-3891.35 620914 346.67
+13065.2 1.1005e+06 179.59
+-2055.71 2.13803e+06 -377.862
+-28279.5 3.88922e+06 234.797
+66051.6 6.76648e+06 3016.93
+-338492 1.32831e+07 7066.88
+-2.71484e+06 2.39454e+07 10338.4
+-5.73752e+06 2.64835e+07 8528.86
+-2.27279e+06 5.52525e+06 1343.85
+-685527 1.15717e+06 -216.285
+-180678 240182 -208.984
+-43757 48914.8 -73.916
+-10366.8 9685.73 -13.6869
+-2905.15 1847.82 3.23498
+-1366.23 336.357 7.10072
+-1074.43 57.5843 9.1774
+-1027.68 8.73578 12.0282
+-1027.63 0.549927 15.5212
+-1037.07 -0.842388 18.9505
+-1048.57 -1.123 21.6717
+-1059.92 -1.18342 23.2716
+-1070.1 -1.16557 23.5767
+-1078.6 -1.10492 22.5971
+-1085.28 -1.02122 20.4511
+-1090.26 -0.92864 17.3
+-1093.82 -0.836455 13.3071
+-1096.26 -0.749713 8.62171
+-1097.88 -0.670333 3.38075
+-1098.9 -0.598369 -2.28153
+-1099.49 -0.533081 -8.2243
+-1099.76 -0.473675 -14.2955
+-1099.76 -0.419669 -20.333
+-1099.54 -0.37098 -26.1715
+-1099.1 -0.327831 -31.6512
+-1098.48 -0.290569 -36.628
+-1097.69 -0.259504 -40.9816
+-1096.75 -0.234786 -44.6208
+-1095.69 -0.216351 -47.4866
+-1094.51 -0.203925 -49.5511
+-1093.25 -0.197059 -50.816
+-1091.92 -0.195174 -51.3082
+-1090.51 -0.197609 -51.0761
+-1089.04 -0.203657 -50.1847
+-1087.52 -0.21259 -48.7113
+-1085.93 -0.223687 -46.7414
+-1084.29 -0.23627 -44.3646
+-1082.6 -0.249755 -41.6708
+0 -0.263702 -38.7476
+36.7796 0 -1.05367
+36.8407 0 -1.13432
+36.9022 0 -1.21588
+36.9638 0 -1.29677
+37.0252 0 -1.37507
+37.0862 0 -1.44853
+37.1466 0 -1.5146
+37.206 0 -1.57053
+37.2642 0 -1.61344
+37.3208 0 -1.64044
+37.3753 0 -1.64877
+37.427 0 -1.63598
+37.475 0 -1.60006
+37.5181 0 -1.53963
+37.555 0 -1.45407
+37.5838 0 -1.34367
+37.6022 0 -1.20965
+37.6072 0 -1.05421
+37.595 0 -0.880458
+37.5607 0 -0.692348
+37.498 0 -0.494595
+37.3993 0 -0.292612
+37.256 0 -0.0925044
+37.059 0 0.098913
+36.8009 0 0.274115
+36.478 0 0.425038
+36.0942 0 0.543615
+35.6668 0 0.622869
+35.2481 0 0.658652
+35.0471 0 0.651788
+36.1584 0 0.609793
+44.7375 0 0.545539
+94.7581 0 0.462854
+366.772 0 0.286893
+1786.23 0 -0.419132
+8956.51 0 -3.38542
+44259.2 0 -13.4
+214849 0 -32.8945
+1.02983e+06 0 21.5984
+4.91148e+06 0 912.068
+2.28694e+06 2.12595e+07 8317.47
+185577 1.90106e+07 9729.58
+-107247 9.73823e+06 6343.33
+33499.8 4.72218e+06 2446.67
+6787.64 2.84132e+06 -265.028
+-15388.3 1.57142e+06 -849.163
+3992.34 780474 -112.577
+3479.96 454140 234.228
+-2636.7 259233 43.7598
+46.5368 123904 -33.3464
+970.098 68066.2 16.9492
+-400.289 40815.4 9.05207
+-144.67 19051.1 -5.5514
+228.057 9662.4 3.72515
+-35.5263 6331.03 2.04988
+-56.1581 3051.87 -2.87777
+44.1266 1410.74 -0.0551808
+3.06639 1053.79 1.0165
+-11.6797 600.144 -0.347625
+2.18454 366.747 0.278747
+-6.69273 400.47 1.21364
+14.6636 404.175 0.293003
+-9.74587 761.822 -0.2905
+-56.124 1348.52 1.33987
+74.4453 1869.91 -0.402117
+28.3956 4134.77 -3.52571
+-292.012 8444.87 3.53398
+219.718 13050.8 4.31141
+463.843 26162.8 -7.67244
+-1311.97 55415.7 15.3659
+112.46 92500.4 24.0583
+3387.22 170545 -45.5029
+-5045.45 355515 74.0484
+-4783.39 620732 342.273
+21184.7 1.07478e+06 -159.935
+-11448.5 2.17236e+06 -1174.05
+-46049.1 3.92827e+06 -223.801
+151585 6.57314e+06 3810.33
+-275854 1.37063e+07 9435.5
+-3.26373e+06 2.69166e+07 14090.3
+-6.97944e+06 3.01813e+07 11754.9
+-1.45747e+06 0 1195.82
+-300942 0 -13.1596
+-60878.9 0 -59.924
+-11984.4 0 -22.12
+-2302.3 0 -5.46007
+-455.352 0 -0.852519
+-119.238 0 0.164054
+-61.6585 0 0.415551
+-52.7922 0 0.577755
+-52.0129 0 0.75348
+-52.5424 0 0.925346
+-53.2777 0 1.06289
+-54.0072 0 1.1449
+-54.6634 0 1.16212
+-55.2168 0 1.11467
+-55.6595 0 1.00827
+-55.9982 0 0.850842
+-56.2476 0 0.65044
+-56.4259 0 0.414396
+-56.5498 0 0.149442
+-56.6335 0 -0.137788
+-56.6872 0 -0.440252
+-56.7179 0 -0.750252
+-56.7303 0 -1.05951
+-56.7271 0 -1.35952
+-56.7104 0 -1.64201
+-56.6819 0 -1.8995
+-56.643 0 -2.1257
+-56.5953 0 -2.3158
+-56.5401 0 -2.46664
+-56.4787 0 -2.57666
+-56.4119 0 -2.6458
+-56.3406 0 -2.67532
+-56.2652 0 -2.66755
+-56.1862 0 -2.62572
+-56.1038 0 -2.5537
+-56.0181 0 -2.45577
+-55.9294 0 -2.33647
+-55.8379 0 -2.20036
+0 0 -2.0519
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.84725e+06 1.33362e+07 36470
+4.14609e+06 2.25633e+07 63335.6
+-135983 1.38958e+07 54677.4
+-211951 4.73631e+06 43525.9
+237996 2.37189e+06 29596.8
+321.038 1.80476e+06 10543.7
+-55649.4 834203 1103.41
+33053.3 362913 1868.45
+11169.1 279503 2234.5
+-11992.9 146497 701.475
+4016.87 51730.6 244.572
+4476.99 40100 332.195
+-2023.43 25466.4 123.803
+286.515 7305.11 45.35
+1356.49 5181.97 103.569
+-197.908 4558.33 65.2111
+-67.0957 1270.91 17.6158
+343.427 642.485 13.7323
+-19.6881 963.629 10.8434
+-160.53 499.273 17.4443
+40.1305 183.204 27.4771
+-135.827 565.076 22.8267
+-557.866 1177.27 18.033
+-22.745 812.691 15.9272
+58.6679 1783.86 16.4751
+-1889.34 6026.29 85.0661
+-323.307 6777.15 133.046
+2298.51 10360.3 56.8684
+-6349.11 34680.1 186.273
+-4724.47 53437.3 465.137
+15522.6 71810.6 331.783
+-17273.4 202512 1035.47
+-42768.3 378691 3199.52
+77267.2 497146 2605.19
+-10315.4 1.15924e+06 1679.69
+-330476 2.48624e+06 15540.7
+307616 3.26151e+06 42850.7
+162975 6.6274e+06 61863.5
+-5.89786e+06 1.95867e+07 76128
+-1.11132e+07 3.19178e+07 87780.1
+0 1.89577e+07 50749.4
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.39619e+06 0 -1953.55
+9.19524e+06 0 -33531.2
+3.39422e+06 0 -66733
+-621281 0 -40265.6
+-176517 0 15654.7
+336071 0 31773.3
+-7854.02 0 12473.9
+-61163 0 474.698
+53895.2 0 1676.45
+17117.2 0 2026.35
+-13362.7 0 457.058
+8623.93 0 284.246
+7855.07 0 381.609
+-1513.47 0 110.864
+1457.45 0 174.046
+2476.59 0 303.937
+112.516 0 168.13
+126.242 0 31.4052
+391.244 0 42.3637
+-97.2594 0 93.9441
+-540.127 0 121.713
+-1210.37 0 130.458
+-815.276 0 69.9083
+-889.521 0 36.9565
+-3861.05 0 188.526
+-2254.99 0 362.907
+1073 0 213.43
+-11469.9 0 181.107
+-11168.3 0 543.976
+16560.9 0 370.191
+-26829.2 0 707.317
+-71055.5 0 2970.17
+84266.3 0 2339.14
+-4030 0 850.894
+-467207 0 18382.8
+260727 0 45343.7
+828099 0 20057.6
+-4.85597e+06 0 -63973
+-1.30112e+07 0 -106083
+-9.06426e+06 0 -58456.4
+0 0 -6961.15
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.65437e+06 -1.38411e+07 55568.2
+9.56095e+06 -2.34393e+07 154427
+3.52938e+06 -1.4476e+07 158728
+-623642 -4.99099e+06 89518.1
+-166885 -2.50119e+06 43887.9
+340030 -1.86468e+06 24915.8
+-17861.4 -855000 7980.55
+-60708.6 -381616 1457.78
+58894.1 -295268 4040.7
+16865.4 -152382 3237.7
+-13806.5 -54458.6 582.35
+9699.42 -42877.5 483.593
+7965.55 -26704.5 813.536
+-1789.33 -7736.44 324.207
+1705.19 -5705.23 132.725
+2749.17 -4805.88 226.821
+265.456 -1298.29 166.122
+241.615 -722.945 148.246
+332.771 -1028.16 189.12
+-204.414 -526.831 143.615
+-505.844 -215.197 90.4384
+-1185.8 -585.571 162.579
+-929.964 -1257.19 216.226
+-1043.27 -914.084 170.741
+-4224.73 -1811.35 188.981
+-2632.45 -6337.98 257.805
+1377.45 -7442.31 167.44
+-11638.3 -10868.1 501.156
+-12663.7 -36163.5 1145.66
+16940.9 -56900.5 638.652
+-26531.6 -75046.8 925.917
+-77707.8 -209239 4708.6
+82993.2 -397816 5545.65
+9719.18 -519153 2147.32
+-470262 -1.17921e+06 12266.6
+245125 -2.55242e+06 36580.2
+825978 -3.42131e+06 62469.8
+-5.02358e+06 -6.9471e+06 125687
+-1.34715e+07 -2.03084e+07 224456
+-9.39572e+06 -3.30214e+07 220712
+0 -1.96049e+07 80315
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+8.15014e+06 -2.1991e+07 36243.7
+4.32639e+06 -1.96218e+07 69550.4
+-110113 -1.00331e+07 48305.4
+-210779 -4.8628e+06 16001.7
+233731 -2.91756e+06 1447.89
+-7738.87 -1.61033e+06 -2346.08
+-54843.9 -806007 -787.589
+36204.1 -472724 1926.9
+10584.4 -268868 1454.8
+-12482.4 -128628 15.4012
+4633.79 -71417.4 87.2408
+4538.58 -42746 295.803
+-2163.12 -19916.7 37.6783
+393.075 -10253 5.66456
+1386.78 -6693.18 97.8079
+-213.309 -3190.23 49.6752
+-2.63842 -1508.98 17.7492
+377.549 -1134.41 45.0462
+-46.5013 -633.703 40.4416
+-185.619 -394.08 23.7842
+47.0348 -439.902 19.4606
+-108.286 -432.995 25.4997
+-595.29 -800.898 48.7304
+-98.8031 -1447.02 52.3337
+78.585 -1988.48 16.1014
+-1938.12 -4299.32 63.1205
+-479.699 -8890.26 122.638
+2469.77 -13769.6 9.06627
+-6421.28 -27173.1 87.5148
+-5570.76 -57702.1 416.952
+16080.9 -96460.7 94.7202
+-16415.2 -175815 107.723
+-46943.6 -366259 2167.65
+75718 -641862 2651.21
+1254.17 -1.10189e+06 -1179.22
+-322539 -2.21017e+06 -2910.95
+303095 -4.00722e+06 3136.27
+121881 -6.72852e+06 24504.5
+-6.1327e+06 -1.4049e+07 71341.4
+-1.15029e+07 -2.76655e+07 102087
+0 -3.11104e+07 53365.5
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+39.5335 0.137768 -1.22822
+39.5671 0.121387 -1.28931
+39.5968 0.102781 -1.34839
+39.6222 0.082499 -1.40467
+39.643 0.0613081 -1.45716
+39.6591 0.0401624 -1.50476
+39.6705 0.0201706 -1.54625
+39.6777 0.00256583 -1.58031
+39.6812 -0.0113281 -1.60556
+39.6816 -0.0201377 -1.62067
+39.6796 -0.0224882 -1.62436
+39.6762 -0.0170602 -1.6155
+39.672 -0.00265016 -1.59323
+39.6676 0.0217652 -1.55697
+39.6631 0.056968 -1.50655
+39.6582 0.103443 -1.44218
+39.6517 0.161332 -1.36446
+39.6414 0.230395 -1.27434
+39.6239 0.309975 -1.17297
+39.5943 0.39896 -1.06164
+39.5457 0.495714 -0.941711
+39.4697 0.597968 -0.814568
+39.3563 0.702643 -0.681803
+39.1951 0.805588 -0.545451
+38.9763 0.901258 -0.408334
+38.6933 0.982339 -0.27434
+38.3461 1.03922 -0.148402
+37.947 1.05786 -0.0359027
+37.5422 1.00475 0.0587026
+37.3336 0.726471 0.133986
+38.4174 -0.667752 0.193713
+47.061 -8.34459 0.246515
+98.1654 -50.9344 0.292889
+378.209 -280.018 0.260991
+1845.91 -1467.9 -0.224429
+9276.77 -7431.84 -2.40427
+45894.7 -36623 -8.33117
+222827 -176956 -9.90934
+1.06751e+06 -844750 91.6142
+5.08606e+06 -4.01852e+06 882.116
+2.36279e+06 -1.92651e+07 5722.1
+190559 -1.7444e+07 4140.89
+-110660 -9.72541e+06 -124.643
+32319.3 -5.00192e+06 -1414.94
+5318.96 -2.89e+06 -820.745
+-15257.8 -1.59055e+06 -54.7597
+4692.38 -826474 404.526
+3355 -471425 272.422
+-2817.9 -262636 -15.3886
+152.799 -131616 -15.8174
+991.706 -72286 46.5932
+-442.471 -41310.6 7.78773
+-129.32 -20226.9 -8.46395
+236.406 -10625.8 10.8643
+-47.765 -6413.82 6.85968
+-53.72 -3185.21 -1.93417
+49.4208 -1613.32 1.14974
+0.67705 -1086.7 2.054
+-11.9372 -621.236 -0.203685
+3.57982 -409.464 0.143772
+-8.73253 -427.425 1.04808
+15.1507 -456.649 0.0624612
+-6.65183 -779.186 -0.201454
+-62.9263 -1392.01 2.5951
+71.3568 -2124.26 1.09204
+44.4406 -4273.7 -2.23478
+-303.307 -8548.71 9.74071
+197.996 -14279.5 12.964
+519.718 -27491.2 -11.3835
+-1336.32 -55846.4 15.7074
+-34.5358 -97801.3 62.8441
+3621.34 -179489 -26.9703
+-4847.27 -357710 -5.97117
+-5746.34 -641023 401.737
+20899.8 -1.12924e+06 547.577
+-9221.55 -2.18109e+06 -130.652
+-44099.4 -3.97138e+06 -1189.5
+155368 -6.92223e+06 -1947.97
+-282705 -1.36015e+07 25.246
+-3.36046e+06 -2.45799e+07 6221.56
+-7.20448e+06 -2.7263e+07 8448.82
+-1.50617e+06 -5.69842e+06 1301.37
+-311140 -1.19518e+06 134.988
+-62907.8 -248278 -13.3016
+-12360 -50558.9 -11.037
+-2366.02 -9996.5 -2.90603
+-466.346 -1900.38 -0.144249
+-122.974 -343.573 0.3643
+-64.9024 -58.0154 0.359726
+-56.2142 -8.42855 0.318094
+-55.556 -0.207979 0.303277
+-56.1282 1.20492 0.292657
+-56.8547 1.52833 0.261001
+-57.5412 1.63576 0.195671
+-58.1324 1.65757 0.0957666
+-58.608 1.6226 -0.0323036
+-58.9668 1.54655 -0.179479
+-59.2201 1.44163 -0.337534
+-59.386 1.31721 -0.500841
+-59.4852 1.18019 -0.666568
+-59.5375 1.03557 -0.833864
+-59.5598 0.887193 -1.00267
+-59.5656 0.738232 -1.17269
+-59.5648 0.59162 -1.3427
+-59.5641 0.450196 -1.51038
+-59.5678 0.316713 -1.67251
+-59.5782 0.193752 -1.82536
+-59.5962 0.0835872 -1.96516
+-59.6214 -0.0119365 -2.08853
+-59.6529 -0.0914874 -2.19281
+-59.6891 -0.15429 -2.27619
+-59.7279 -0.200124 -2.33773
+-59.7671 -0.229287 -2.37731
+-59.8044 -0.242542 -2.39548
+-59.8375 -0.241053 -2.39337
+-59.8644 -0.226316 -2.37253
+-59.8832 -0.200083 -2.3348
+-59.8925 -0.164283 -2.28223
+-59.8911 -0.120934 -2.21692
+-59.8784 -0.0720311 -2.14099
+0 -0.019437 -2.05647
+761.927 2.76009 -23.211
+762.567 2.42066 -24.3995
+763.132 2.03399 -25.5536
+763.612 1.61162 -26.6577
+764.003 1.1695 -27.6928
+764.303 0.727345 -28.6373
+764.513 0.308051 -29.467
+764.642 -0.0628834 -30.1558
+764.698 -0.358102 -30.6767
+764.697 -0.549281 -31.0026
+764.654 -0.608203 -31.1079
+764.588 -0.508004 -30.97
+764.517 -0.224523 -30.5709
+764.455 0.262293 -29.8988
+764.413 0.967051 -28.9489
+764.394 1.89771 -27.7246
+764.388 3.05461 -26.2369
+764.37 4.42975 -24.5032
+764.291 6.00617 -22.5458
+764.078 7.75742 -20.3896
+763.628 9.6465 -18.061
+762.804 11.6242 -15.588
+761.443 13.6262 -13.0024
+759.368 15.5688 -10.3449
+756.41 17.3427 -7.67149
+752.453 18.8072 -5.05872
+747.484 19.7815 -2.60319
+741.684 20.0255 -0.410608
+735.611 19.1302 1.43009
+730.977 15.8307 2.88642
+734.776 4.03149 4.02646
+781.133 -48.4658 5.04144
+1039.99 -306.008 6.17929
+2320.83 -1559.67 7.40233
+8239.89 -7388.68 7.36095
+33803.5 -33002.5 1.63136
+136051 -138897 -14.1932
+507005 -548018 -1.49298
+1.66267e+06 -2.00079e+06 330.452
+4.17497e+06 -6.53175e+06 2097.65
+1.96334e+06 -1.70545e+07 7222.17
+237904 -1.57176e+07 6398.57
+-49306.4 -9.43606e+06 2694
+19155.9 -5.06931e+06 925.868
+-448.167 -2.87092e+06 628.501
+-9248.4 -1.58268e+06 651.261
+3532.47 -839752 621.992
+1609.41 -469612 347.181
+-1803.88 -259243 87.2294
+275.748 -133740 52.0191
+544.221 -72587.1 60.1031
+-322.141 -40450.6 18.7989
+-44.1261 -20507.9 3.96955
+138.71 -10815.4 11.5549
+-46.5874 -6232.44 5.58381
+-28.0787 -3204.94 -0.347278
+30.4142 -1672.79 1.27001
+-4.57277 -1052.13 1.14278
+-6.43245 -619.237 -0.315241
+4.59193 -420.408 0.0156224
+-6.29902 -416.575 0.582658
+9.95138 -472.808 -0.0184202
+3.41885 -772.49 -0.333734
+-37.7856 -1351.34 1.53557
+39.7668 -2203.06 1.54547
+51.1992 -4286.81 -0.130739
+-179.104 -8323.59 8.12489
+79.6574 -14546.8 14.9107
+391.087 -27806.7 5.65244
+-745.247 -54720.4 29.813
+-259.482 -98331.5 84.2968
+2348.64 -182155 71.2877
+-2407.78 -352984 134.789
+-4460.2 -639131 507.782
+12715.7 -1.14711e+06 875.711
+-765.869 -2.16889e+06 901.342
+-26945 -3.94585e+06 885.934
+67954.6 -7.01547e+06 1357.33
+-346401 -1.3184e+07 3938.67
+-2.79236e+06 -2.21328e+07 9243.08
+-5.91749e+06 -2.41397e+07 10350.4
+-2.34742e+06 -9.2701e+06 2955.83
+-708509 -2.83474e+06 441.364
+-186673 -770312 -10.4441
+-45142.9 -192144 -19.4295
+-10678.2 -44478.5 3.60603
+-3004.51 -9580.94 10.1236
+-1433.75 -1916.35 9.11833
+-1140.81 -349.125 7.34652
+-1096.07 -47.6446 6.50666
+-1097.26 10.1719 6.3365
+-1106.97 23.6573 6.20587
+-1117.92 28.5172 5.63086
+-1128.13 30.7364 4.38119
+-1136.78 31.4351 2.44685
+-1143.53 31.0177 -0.0446009
+-1148.39 29.7687 -2.91583
+-1151.55 27.916 -6.0057
+-1153.36 25.6366 -9.20271
+-1154.18 23.063 -12.4487
+-1154.33 20.295 -15.7232
+-1154.12 17.412 -19.0217
+-1153.75 14.4832 -22.335
+-1153.39 11.5739 -25.6378
+-1153.14 8.7479 -28.8842
+-1153.05 6.06708 -32.0116
+-1153.15 3.58932 -34.9483
+-1153.43 1.36542 -37.6222
+-1153.89 -0.563403 -39.9692
+-1154.5 -2.1674 -41.9392
+-1155.21 -3.42904 -43.4983
+-1155.99 -4.3429 -44.6302
+-1156.79 -4.91483 -45.334
+-1157.56 -5.1607 -45.6224
+-1158.25 -5.10489 -45.519
+-1158.83 -4.7787 -45.0553
+-1159.25 -4.21871 -44.2687
+-1159.49 -3.46506 -43.1999
+-1159.53 -2.55962 -41.891
+-1159.34 -1.54386 -40.3836
+0 -0.456632 -38.7177
+13223.7 47.4677 -393.273
+13234.7 41.3785 -414.073
+13244.3 34.4216 -434.359
+13252.5 26.8078 -453.857
+13259.1 18.8231 -472.237
+13264.1 10.8197 -489.117
+13267.5 3.20724 -504.067
+13269.5 -3.55807 -516.623
+13270.3 -8.9866 -526.301
+13270 -12.5725 -532.614
+13269.1 -13.8142 -535.099
+13267.9 -12.2385 -533.343
+13266.7 -7.42586 -527.013
+13265.9 0.962119 -515.883
+13265.8 13.1578 -499.853
+13266.6 29.2651 -478.962
+13268.4 49.2413 -453.387
+13271.1 72.8857 -423.419
+13274.1 99.8306 -389.437
+13276.6 129.536 -351.877
+13277.2 161.277 -311.203
+13274.3 194.128 -267.918
+13265.3 226.921 -222.597
+13247.7 258.192 -175.976
+13219.1 286.096 -129.056
+13177.5 308.312 -83.1932
+13122.5 321.936 -40.092
+13056.6 323.324 -1.62098
+12986.7 307.535 30.6263
+12928.2 265.447 56.0083
+12920 168.708 75.6126
+13091.7 -103.42 92.8185
+13953.6 -1094.39 113.12
+17571.4 -5148.76 142.385
+31855.5 -21690.4 182.513
+84337 -85552.9 225.581
+258751 -313462 261.708
+761234 -1.05086e+06 364.64
+1.90674e+06 -3.14723e+06 995.22
+3.39815e+06 -8.02534e+06 3453.78
+1.77618e+06 -1.5436e+07 8630.8
+355473 -1.42994e+07 8792.8
+7191.15 -9.08865e+06 5469.75
+13003.1 -5.07574e+06 2998.08
+-489.321 -2.85845e+06 1821.26
+-5994.44 -1.57814e+06 1223.85
+1909.62 -848195 851.676
+1031.02 -468931 484.743
+-1075.61 -257217 206.403
+150.16 -135027 113.808
+341.159 -72817.1 81.4238
+-188.126 -39935.5 36.1755
+-29.4113 -20673.6 15.3348
+85.1043 -10936.7 13.8499
+-26.6945 -6124.5 7.19911
+-17.6188 -3215.54 1.79233
+18.217 -1709.64 1.81525
+-2.58284 -1031.83 1.30539
+-4.15322 -617.719 0.169024
+2.44089 -427.048 0.251669
+-3.88755 -410.363 0.584765
+5.85759 -482.609 0.273064
+1.35586 -768.065 0.272554
+-23.0548 -1327.57 1.76622
+24.3596 -2251.79 2.39541
+28.4264 -4292.97 2.75241
+-110.218 -8190.14 10.3168
+51.3115 -14717.2 18.7649
+226.374 -27991.5 21.9421
+-466.961 -54047.7 53.6006
+-134.527 -98718 115.671
+1394.36 -183769 161.794
+-1540.43 -350166 303.313
+-2400.43 -638557 703.231
+8155.17 -1.15843e+06 1214.99
+-412.768 -2.16169e+06 1741.99
+-18934.1 -3.92875e+06 2610.99
+-12431.8 -7.02282e+06 4317.82
+-510495 -1.26873e+07 7855
+-2.52552e+06 -2.01217e+07 12537.1
+-4.82078e+06 -2.185e+07 12184.1
+-2.69552e+06 -1.13989e+07 4792.05
+-1.06615e+06 -4.46566e+06 1364.43
+-356906 -1.48019e+06 525.427
+-114631 -434710 388.677
+-43640.7 -115629 319.392
+-25070.8 -28236.9 238.159
+-20625.2 -6384.65 171.796
+-19654.8 -1279.53 134.356
+-19508.9 -89.4472 121.112
+-19571.3 241.263 119.876
+-19692.6 376.538 118.685
+-19825.4 450.719 109.227
+-19947.6 491.926 87.6524
+-20047.8 508.951 53.8889
+-20121.1 507.154 10.2135
+-20168.1 490.887 -40.2501
+-20192.3 463.721 -94.6603
+-20198.9 428.471 -151.027
+-20193.5 387.312 -208.273
+-20181.2 341.956 -265.971
+-20166.2 293.839 -323.974
+-20151.7 244.262 -382.068
+-20139.7 194.484 -439.776
+-20131.4 145.747 -496.283
+-20127.3 99.2545 -550.5
+-20127.5 56.1271 -601.186
+-20131.8 17.346 -647.106
+-20139.5 -16.2953 -687.17
+-20150.2 -44.2225 -720.528
+-20163 -66.0949 -746.621
+-20177.2 -81.8008 -765.192
+-20191.8 -91.4404 -776.259
+-20206.1 -95.3 -780.077
+-20219.1 -93.823 -777.087
+-20230.2 -87.5779 -767.871
+-20238.7 -77.2264 -753.109
+-20244 -63.4917 -733.534
+-20245.7 -47.1254 -709.899
+-20243.5 -28.8722 -682.945
+0 -9.43378 -653.379
+228669 803.948 -6620.18
+228856 696.033 -6982
+229019 572.438 -7336.41
+229157 436.947 -7678.64
+229267 294.618 -8002.95
+229349 151.669 -8302.64
+229404 15.3392 -8570.15
+229434 -106.292 -8797.25
+229441 -204.555 -8975.31
+229431 -270.502 -9095.66
+229410 -295.301 -9149.97
+229384 -270.674 -9130.76
+229360 -189.383 -9031.94
+229346 -45.7342 -8849.21
+229349 163.956 -8580.55
+229376 440.945 -8226.3
+229430 783.746 -7789.23
+229515 1187.92 -7274.17
+229626 1645.98 -6687.55
+229756 2147.3 -6036.86
+229890 2678.1 -5330.3
+230002 3221.23 -4576.79
+230063 3755.75 -3786.71
+230034 4256.23 -2973.27
+229878 4691.75 -2154.33
+229566 5024.58 -1353.82
+229087 5208.76 -601.721
+228474 5188.44 69.1271
+227820 4894.14 630.414
+227317 4229.79 1069.89
+227325 3019.98 1404.76
+228582 801.104 1692.14
+232860 -3971.75 2029.56
+245078 -16758.5 2537.81
+279453 -56261.6 3319.47
+374815 -181922 4395.25
+622771 -563255 5653.99
+1.18346e+06 -1.61429e+06 6928.84
+2.14856e+06 -4.11625e+06 8352.61
+2.93459e+06 -8.81685e+06 10719.9
+1.67447e+06 -1.41828e+07 14060.7
+484217 -1.31151e+07 13149.3
+87296.8 -8.69557e+06 9091.85
+29608.8 -5.02053e+06 5530.75
+7339.42 -2.83804e+06 3330.37
+-446.034 -1.57167e+06 2042.95
+2495.13 -851889 1270.83
+1410.46 -468210 732.11
+-206.192 -255784 376.616
+286.777 -135630 209.432
+317.001 -72910.7 127.499
+-45.0954 -39603.8 65.7914
+11.1409 -20745.8 33.35
+64.8942 -11000.8 21.4361
+-7.6574 -6057.69 11.6642
+-8.59443 -3217.41 5.16016
+9.88911 -1729.77 3.3419
+-3.32058 -1019.52 2.11863
+-5.52679 -615.921 0.965142
+-2.47387 -430.4 0.791608
+-6.55886 -406.603 0.965161
+-1.77771 -487.738 0.930836
+-5.96191 -764.406 1.32296
+-21.5513 -1313.17 2.93513
+2.89044 -2278.44 4.64851
+-2.90874 -4291 7.47177
+-93.3739 -8107.49 16.6236
+-16.7408 -14807.9 29.9233
+36.715 -28067.1 47.5328
+-438.5 -53615.4 94.909
+-353.847 -98891.2 181.607
+237.028 -184514 299.155
+-1999.68 -348191 544.82
+-3289.81 -637789 1057.22
+518.579 -1.16332e+06 1828.16
+-10988.4 -2.15207e+06 2950.5
+-42430.6 -3.9e+06 4848.75
+-125932 -6.94297e+06 8107.62
+-693886 -1.21251e+07 13370
+-2.39031e+06 -1.84344e+07 19363.4
+-4.18547e+06 -2.00657e+07 20856.3
+-3.06294e+06 -1.25303e+07 16320
+-1.68371e+06 -5.85145e+06 13009.8
+-887826 -2.28091e+06 10748.4
+-541541 -784548 8478.84
+-412037 -247562 6200.84
+-367225 -74411.7 4315.98
+-352162 -21744.8 3066.84
+-347374 -5270.72 2435.83
+-346414 878.974 2240.17
+-347047 3943.63 2244.6
+-348331 5834.73 2239.99
+-349764 7067.72 2084.41
+-351050 7817.77 1713.27
+-352025 8180.93 1126.67
+-352631 8232.35 364.88
+-352882 8036.37 -517.438
+-352837 7646.96 -1470.45
+-352582 7107.95 -2458.8
+-352201 6454.52 -3462.7
+-351771 5715.79 -4473.53
+-351353 4917.37 -5487.53
+-350989 4083.36 -6500.14
+-350704 3237.5 -7502.47
+-350510 2403.31 -8480.21
+-350410 1603.58 -9414.49
+-350399 859.447 -10284.1
+-350468 189.342 -11067.9
+-350605 -391.847 -11747.5
+-350798 -873.366 -12308.7
+-351031 -1248.81 -12742.2
+-351290 -1516.02 -13044.1
+-351559 -1676.73 -13215.3
+-351822 -1736.11 -13260.6
+-352066 -1702.14 -13188.4
+-352276 -1585.03 -13009.3
+-352441 -1396.62 -12735.4
+-352551 -1149.8 -12379.9
+-352599 -857.876 -11956.3
+-352579 -534.057 -11477.5
+0 -190.834 -10956
+3.58186e+06 17.6976 -36974.9
+3.58798e+06 -727.634 -38973.5
+3.59397e+06 -1507.38 -40856.4
+3.59974e+06 -2294.89 -42587.7
+3.60521e+06 -3057.71 -44128.1
+3.61029e+06 -3758.59 -45435.8
+3.61491e+06 -4356.57 -46468.3
+3.61902e+06 -4808.1 -47185.4
+3.62257e+06 -5068.32 -47552.5
+3.62555e+06 -5092.49 -47544.9
+3.62797e+06 -4837.38 -47152.9
+3.62986e+06 -4262.95 -46386.9
+3.63127e+06 -3333.83 -45281.6
+3.63227e+06 -2021.04 -43898.9
+3.63296e+06 -303.553 -42326.5
+3.63343e+06 1830.06 -40671.3
+3.63377e+06 4379.91 -39046.2
+3.63405e+06 7332.96 -37549.7
+3.63432e+06 10660.8 -36241.3
+3.63456e+06 14316.6 -35114.7
+3.6347e+06 18230.9 -34077.7
+3.63459e+06 22303.9 -32944
+3.63401e+06 26394.6 -31445.9
+3.63272e+06 30300.2 -29270.8
+3.63053e+06 33724.5 -26118.7
+3.62743e+06 36224.3 -21765.4
+3.62387e+06 37125.9 -16106
+3.62111e+06 35391.2 -9140.54
+3.62189e+06 29406.8 -873.352
+3.63127e+06 16633.9 8878.5
+3.65819e+06 -7015.69 20721.6
+3.71791e+06 -48414.7 35861.1
+3.83636e+06 -119891 56063.2
+4.0576e+06 -245233 83243.3
+4.4552e+06 -472811 118549
+5.14196e+06 -901260 160907
+6.24948e+06 -1.71807e+06 205353
+7.79396e+06 -3.21962e+06 242187
+9.29805e+06 -5.68977e+06 258947
+9.30588e+06 -8.89411e+06 246465
+6.25686e+06 -1.11941e+07 206080
+3.07666e+06 -9.98131e+06 150902
+1.32569e+06 -6.97643e+06 98868.7
+589866 -4.3051e+06 60646.1
+264957 -2.52592e+06 36204.3
+121192 -1.43575e+06 21457.3
+62514 -797807 12640.7
+31925.1 -440217 7327.47
+15251.3 -240568 4173.4
+8284.52 -129483 2360.75
+4522.25 -69600.6 1326.57
+2093.19 -37419.7 733.859
+1094.1 -19880.1 403.208
+611.91 -10591.9 222.749
+234.217 -5719.84 122.491
+71.3086 -3076.24 67.26
+7.34663 -1677.96 37.9072
+-56.5728 -962.542 22.1351
+-90.0787 -586.667 13.8328
+-108.066 -415.503 10.236
+-132.096 -385.469 9.73485
+-150.965 -472.416 11.8813
+-193.987 -726.716 17.6739
+-274.466 -1241.79 29.5273
+-358.473 -2210.64 51.3971
+-580.192 -4098.57 91.8479
+-1076.98 -7664.67 167.795
+-1720.39 -14264.1 305.793
+-3094.32 -26875.8 555.463
+-6356.4 -50690.3 1014.92
+-11397.8 -94474.5 1841.12
+-20939.2 -176110 3290.4
+-43588.1 -327578 5850.59
+-84877 -600150 10347.8
+-164903 -1.08981e+06 18023.1
+-361401 -1.96682e+06 31014.2
+-804664 -3.47536e+06 53328.7
+-1.81261e+06 -5.96529e+06 91366.5
+-4.22181e+06 -9.76421e+06 152263
+-8.60716e+06 -1.41208e+07 236405
+-1.28165e+07 -1.59509e+07 326020
+-1.27995e+07 -1.26566e+07 390664
+-1.07276e+07 -8.03281e+06 407658
+-8.618e+06 -4.48611e+06 375144
+-7.1218e+06 -2.3552e+06 309626
+-6.20644e+06 -1.21505e+06 233057
+-5.68508e+06 -627833 162265
+-5.40123e+06 -320748 105648
+-5.25446e+06 -153167 64669.3
+-5.18521e+06 -57767.3 36752.3
+-5.15857e+06 -2214.3 17814.7
+-5.15389e+06 29954.2 4013.29
+-5.15901e+06 47826.4 -7308.99
+-5.16702e+06 56780.3 -17376
+-5.17431e+06 60133.3 -26257.1
+-5.17936e+06 59965.7 -33416.2
+-5.18191e+06 57585.6 -38266.8
+-5.18241e+06 53815.6 -40552.4
+-5.18157e+06 49175.8 -40488.7
+-5.18017e+06 44002.5 -38703
+-5.17886e+06 38522.5 -36056.7
+-5.17813e+06 32898.8 -33438.5
+-5.17827e+06 27257.8 -31592.8
+-5.17936e+06 21704.7 -31015.4
+-5.18137e+06 16331.5 -31920.9
+-5.18413e+06 11220.5 -34269.3
+-5.18741e+06 6446.07 -37828
+-5.19093e+06 2073.95 -42249.3
+-5.19441e+06 -1839.41 -47142.2
+-5.19755e+06 -5248.04 -52129.4
+-5.20011e+06 -8117.64 -56883.9
+-5.20185e+06 -10426.5 -61146.9
+-5.20258e+06 -12166.4 -64731.3
+-5.20217e+06 -13342.2 -67517.4
+-5.20053e+06 -13972.5 -69443.7
+-5.19761e+06 -14088.2 -70497.1
+-5.19341e+06 -13731.5 -70702.7
+-5.18798e+06 -12954.2 -70113.5
+-5.18141e+06 -11815.3 -68801.2
+-5.17381e+06 -10378.2 -66847.3
+0 -8707.57 -64337.5
+7.43462e+06 -2566.96 -68487.5
+7.44783e+06 -5321.72 -72133.8
+7.46173e+06 -8176.87 -75385.9
+7.47614e+06 -11031.4 -78145.5
+7.49084e+06 -13765.5 -80316.7
+7.50555e+06 -16244.3 -81812.8
+7.52001e+06 -18321.1 -82563.2
+7.5339e+06 -19842.4 -82522.8
+7.54693e+06 -20653.1 -81681.5
+7.55878e+06 -20602.1 -80073.9
+7.56917e+06 -19548.5 -77788.8
+7.57783e+06 -17368.4 -74976.2
+7.58455e+06 -13961.3 -71851
+7.58915e+06 -9257.14 -68690.3
+7.59155e+06 -3222.21 -65819.8
+7.59172e+06 4134.05 -63587.8
+7.58969e+06 12753.1 -62323.1
+7.58559e+06 22521.4 -62278.5
+7.57958e+06 33263.7 -63561.4
+7.57188e+06 44735.6 -66062.9
+7.56271e+06 56613.8 -69395.7
+7.55233e+06 68481.8 -72858.1
+7.54098e+06 79806.6 -75439.1
+7.52897e+06 89901.3 -75878
+7.51672e+06 97863 -72776.6
+7.50491e+06 102472 -64745.7
+7.49477e+06 102029 -50544.8
+7.48847e+06 94110 -29155.5
+7.48966e+06 75178.6 265.467
+7.50432e+06 40000.3 38569
+7.54184e+06 -19309.7 86866.5
+7.61652e+06 -114936 146687
+7.74951e+06 -266425 219797
+7.97044e+06 -506421 307416
+8.31609e+06 -890494 408635
+8.81672e+06 -1.51009e+06 517999
+9.44948e+06 -2.49704e+06 622774
+1.00317e+07 -3.9823e+06 701689
+1.00794e+07 -5.93927e+06 728616
+8.86726e+06 -7.88334e+06 684291
+6.20539e+06 -8.70897e+06 572766
+3.59307e+06 -7.50641e+06 428215
+1.88619e+06 -5.36637e+06 292870
+962922 -3.44566e+06 189411
+486198 -2.08953e+06 118547
+245852 -1.22007e+06 72518.6
+126831 -693424 43471.5
+65631 -387484 25540.9
+33729.9 -213469 14727.8
+17628.5 -116063 8360.28
+9220.61 -62670.4 4684.26
+4690.46 -33696 2596.53
+2384.12 -18011.5 1428.97
+1184.2 -9629.19 783.825
+513.613 -5177.96 429.799
+163.632 -2796.5 236.838
+-19.9144 -1533.35 132.557
+-131.186 -873.587 76.7819
+-197.803 -533.822 47.9575
+-243.424 -379.806 35.0098
+-287.298 -350.819 32.8196
+-338.751 -432.327 40.3926
+-421.521 -661.15 60.6116
+-564.45 -1127.94 101.269
+-806.177 -2020.64 177.958
+-1273.62 -3725.37 320.519
+-2170.37 -6941.69 584.4
+-3786.89 -12969.5 1069.79
+-6914.71 -24344.5 1957.51
+-13053.9 -45654.6 3570.29
+-24474.2 -85084.2 6465.68
+-46438.3 -157845 11586.8
+-89960.6 -290709 20505.7
+-173485 -528416 35757.5
+-336328 -947484 61291.7
+-665681 -1.67232e+06 103233
+-1.31984e+06 -2.8788e+06 170985
+-2.59114e+06 -4.78646e+06 277762
+-4.9552e+06 -7.54273e+06 437315
+-8.59754e+06 -1.06838e+07 649596
+-1.23272e+07 -1.2488e+07 877436
+-1.4021e+07 -1.12681e+07 1.05064e+06
+-1.39602e+07 -8.39895e+06 1.11297e+06
+-1.31711e+07 -5.54708e+06 1.05936e+06
+-1.23241e+07 -3.42187e+06 923708
+-1.16626e+07 -2.03969e+06 750429
+-1.12109e+07 -1.18996e+06 574633
+-1.09249e+07 -671584 416369
+-1.07541e+07 -350165 283172
+-1.06593e+07 -146914 174884
+-1.06126e+07 -17052.5 87891.8
+-1.05952e+07 65562.9 18053.2
+-1.05949e+07 116948 -37688.7
+-1.0604e+07 147317 -80849.4
+-1.06178e+07 163323 -111793
+-1.06342e+07 169336 -130530
+-1.06521e+07 168244 -137483
+-1.06712e+07 161989 -133939
+-1.06914e+07 151919 -122098
+-1.07127e+07 139019 -104809
+-1.0735e+07 124054 -85145.4
+-1.07578e+07 107657 -65966.2
+-1.07806e+07 90372.8 -49584.9
+-1.08025e+07 72690.2 -37578.3
+-1.08227e+07 55050.4 -30745.8
+-1.08405e+07 37854.5 -29185.6
+-1.0855e+07 21463.8 -32443.9
+-1.08656e+07 6198.14 -39694.6
+-1.0872e+07 -7667.6 -49912.2
+-1.08737e+07 -19906.7 -62015.9
+-1.08708e+07 -30344.2 -74974.7
+-1.08633e+07 -38859.7 -87873.7
+-1.08514e+07 -45388.7 -99949.8
+-1.08355e+07 -49922.2 -110605
+-1.0816e+07 -52505 -119408
+-1.07936e+07 -53231.9 -126082
+-1.07689e+07 -52242.1 -130493
+-1.07424e+07 -49712 -132628
+-1.0715e+07 -45847 -132572
+-1.06871e+07 -40871.9 -130488
+0 -35020.2 -126589
+1.13282e+07 -5877.11 -101954
+1.13467e+07 -11137 -107422
+1.13658e+07 -16580.9 -112164
+1.13852e+07 -22014.1 -116007
+1.14045e+07 -27207.4 -118789
+1.14235e+07 -31903.7 -120370
+1.14416e+07 -35825.4 -120650
+1.14587e+07 -38683.8 -119583
+1.14742e+07 -40189.3 -117193
+1.1488e+07 -40063.6 -113592
+1.14996e+07 -38052.2 -108992
+1.15091e+07 -33938.2 -103716
+1.15162e+07 -27555.6 -98201.5
+1.15211e+07 -18802.6 -92985.2
+1.1524e+07 -7653.76 -88681.6
+1.15251e+07 5828.24 -85930.9
+1.1525e+07 21482.8 -85325.6
+1.15242e+07 39042 -87311
+1.15235e+07 58122.8 -92067.8
+1.15236e+07 78218.1 -99387.4
+1.15251e+07 98687.1 -108561
+1.15287e+07 118741 -118307
+1.15348e+07 137418 -126755
+1.15437e+07 153546 -131523
+1.15553e+07 165673 -129869
+1.15696e+07 171958 -118920
+1.15861e+07 169981 -95908.9
+1.16045e+07 156465 -58353.6
+1.16246e+07 126840 -4095.35
+1.16468e+07 74594 68821.3
+1.16721e+07 -9705.45 162350
+1.17024e+07 -139958 278504
+1.17402e+07 -337058 418946
+1.17865e+07 -632865 583751
+1.18349e+07 -1.07526e+06 769057
+1.18549e+07 -1.73024e+06 963553
+1.17591e+07 -2.66806e+06 1.14456e+06
+1.13581e+07 -3.90791e+06 1.27631e+06
+1.03541e+07 -5.29967e+06 1.31596e+06
+8.50244e+06 -6.39588e+06 1.23248e+06
+6.01738e+06 -6.54513e+06 1.03418e+06
+3.75348e+06 -5.49359e+06 780392
+2.16843e+06 -3.95963e+06 541938
+1.20452e+06 -2.60041e+06 356537
+654058 -1.61466e+06 226543
+350870 -963396 140165
+187444 -557774 84685.8
+99637.1 -315840 50043.8
+52656.3 -175694 28985.8
+27781.3 -96341.3 16503.9
+14580.5 -52315.7 9266.42
+7548.82 -28221.1 5146.62
+3839.57 -15148.7 2837.02
+1874.74 -8123.3 1557.54
+817.683 -4370.04 854.897
+250.845 -2365.76 471.673
+-57.4143 -1300.59 264.096
+-233.972 -740.333 152.967
+-341.464 -453.083 95.5349
+-417.472 -323.071 69.6257
+-487.945 -298.237 65.1283
+-574.346 -367.963 80.1374
+-707.479 -561.358 120.277
+-935.251 -956.45 200.91
+-1341.49 -1714.42 353.143
+-2097.13 -3151.83 635.927
+-3514.74 -5859.47 1158.24
+-6163.79 -10941.2 2118.34
+-11185.3 -20472.3 3872.32
+-20726 -38235.6 7049.62
+-38678.1 -71024.7 12738.1
+-72579.6 -131016 22771.5
+-136688 -239280 40156
+-256642 -430819 69659.5
+-480264 -762485 118595
+-896015 -1.3217e+06 197907
+-1.65327e+06 -2.2284e+06 323496
+-2.98671e+06 -3.62291e+06 516615
+-5.19907e+06 -5.58953e+06 798372
+-8.39196e+06 -7.8611e+06 1.16719e+06
+-1.19207e+07 -9.43744e+06 1.56206e+06
+-1.45422e+07 -9.19008e+06 1.86641e+06
+-1.59575e+07 -7.52597e+06 1.98409e+06
+-1.65282e+07 -5.45977e+06 1.90474e+06
+-1.66788e+07 -3.66449e+06 1.68255e+06
+-1.66707e+07 -2.34293e+06 1.3891e+06
+-1.66205e+07 -1.44334e+06 1.0819e+06
+-1.65675e+07 -847404 795564
+-1.65201e+07 -452574 545575
+-1.64774e+07 -188637 335383
+-1.64372e+07 -11118 162527
+-1.63977e+07 108003 22862.9
+-1.63585e+07 186781 -87091.5
+-1.632e+07 237096 -169428
+-1.62835e+07 266849 -225280
+-1.62504e+07 281329 -255800
+-1.62226e+07 284130 -263059
+-1.62014e+07 277776 -250506
+-1.61878e+07 264138 -222886
+-1.61822e+07 244701 -185743
+-1.61843e+07 220726 -144741
+-1.61933e+07 193336 -104999
+-1.62079e+07 163569 -70604.3
+-1.62264e+07 132392 -44342.9
+-1.6247e+07 100715 -27663.7
+-1.6268e+07 69380.7 -20812.2
+-1.62875e+07 39163.7 -23077.7
+-1.63043e+07 10756.5 -33084.6
+-1.6317e+07 -15239.5 -49076.6
+-1.63248e+07 -38324.5 -69157.1
+-1.6327e+07 -58108.4 -91471.3
+-1.63235e+07 -74316.6 -114329
+-1.63141e+07 -86792.3 -136280
+-1.62992e+07 -95494.8 -156149
+-1.62792e+07 -100494 -173048
+-1.62547e+07 -101961 -186375
+-1.62263e+07 -100156 -195789
+-1.61949e+07 -95413.4 -201186
+-1.61613e+07 -88125.1 -202656
+-1.61264e+07 -78720.3 -200447
+0 -67647.5 -194925
+1.42694e+07 -7724.92 -131775
+1.42888e+07 -14272.3 -138996
+1.43069e+07 -21046 -145210
+1.43234e+07 -27801.8 -150175
+1.43379e+07 -34253.9 -153669
+1.43502e+07 -40082.3 -155506
+1.436e+07 -44942.9 -155554
+1.43672e+07 -48478.8 -153760
+1.4372e+07 -50334.7 -150172
+1.43744e+07 -50171.9 -144961
+1.43748e+07 -47685.3 -138439
+1.43739e+07 -42620.7 -131071
+1.43723e+07 -34792.2 -123478
+1.43711e+07 -24098.7 -116419
+1.43713e+07 -10538.8 -110755
+1.43745e+07 5775.92 -107382
+1.4382e+07 24610.7 -107132
+1.43953e+07 45599.4 -110636
+1.44161e+07 68238.6 -118170
+1.44456e+07 91883 -129484
+1.44849e+07 115741 -143647
+1.45348e+07 138866 -158941
+1.45953e+07 160145 -172826
+1.46657e+07 178266 -182012
+1.47444e+07 191666 -182638
+1.48287e+07 198440 -170545
+1.49147e+07 196170 -141581
+1.49974e+07 181672 -91845.9
+1.50701e+07 150591 -17796.6
+1.51246e+07 96809.3 83825.6
+1.51506e+07 11612.5 216137
+1.5135e+07 -117508 382057
+1.5061e+07 -308515 583652
+1.4904e+07 -586903 820424
+1.46263e+07 -987074 1.08616e+06
+1.41661e+07 -1.54885e+06 1.36427e+06
+1.34245e+07 -2.29928e+06 1.62255e+06
+1.22653e+07 -3.20662e+06 1.81083e+06
+1.05619e+07 -4.10919e+06 1.8691e+06
+8.33176e+06 -4.68098e+06 1.75385e+06
+5.90103e+06 -4.57102e+06 1.47672e+06
+3.81326e+06 -3.76409e+06 1.12079e+06
+2.31661e+06 -2.71856e+06 784531
+1.35286e+06 -1.80773e+06 520647
+768607 -1.14001e+06 333518
+428243 -690855 207778
+235335 -405582 126244
+127879 -232192 74951.2
+68828.2 -130262 43585.1
+36756.8 -71921.2 24900.2
+19453.2 -39252.1 14021.6
+10155.7 -21249.8 7808.33
+5182.69 -11443.7 4314.54
+2522.29 -6152.11 2373.75
+1091.77 -3314.49 1305.51
+318.265 -1797.52 721.682
+-106.477 -989.926 404.789
+-348.491 -563.893 234.834
+-496.601 -345.562 146.87
+-602.169 -246.78 107.107
+-699.686 -227.894 100.141
+-819.889 -281.191 123.071
+-1003.37 -428.352 184.43
+-1315.97 -728.877 307.56
+-1875.82 -1305.32 539.706
+-2906.41 -2395.1 970.128
+-4824.64 -4444.45 1763.33
+-8408.86 -8285.93 3217.96
+-15132.6 -15463.9 5868.48
+-27736.3 -28788.9 10655
+-51244.3 -53288.7 19195.1
+-94896.2 -97810.7 34200.3
+-175391 -177437 60079.2
+-322094 -316841 103751
+-585982 -554810 175703
+-1.05303e+06 -948876 291359
+-1.85878e+06 -1.57629e+06 472626
+-3.19866e+06 -2.52581e+06 748170
+-5.30396e+06 -3.85242e+06 1.14581e+06
+-8.27837e+06 -5.41034e+06 1.66199e+06
+-1.17679e+07 -6.6217e+06 2.21213e+06
+-1.49608e+07 -6.75926e+06 2.63497e+06
+-1.73798e+07 -5.86293e+06 2.79657e+06
+-1.90116e+07 -4.49854e+06 2.68278e+06
+-2.00496e+07 -3.16949e+06 2.36925e+06
+-2.06932e+07 -2.10534e+06 1.95523e+06
+-2.10822e+07 -1.33245e+06 1.52036e+06
+-2.13019e+07 -794434 1.11297e+06
+-2.14034e+07 -424365 755475
+-2.14193e+07 -169534 453943
+-2.13723e+07 6509.83 206195
+-2.128e+07 128063 7321.51
+-2.11563e+07 211249 -147242
+-2.10131e+07 266758 -260698
+-2.08603e+07 301650 -335335
+-2.07065e+07 320601 -373635
+-2.05588e+07 326774 -379299
+-2.04228e+07 322428 -357724
+-2.03028e+07 309310 -315828
+-2.02014e+07 288894 -261392
+-2.01201e+07 262521 -202184
+-2.00587e+07 231465 -145137
+-2.00164e+07 196960 -95738.3
+-1.99914e+07 160207 -57715.6
+-1.99813e+07 122365 -33000.8
+-1.99835e+07 84534.8 -21918.1
+-1.99953e+07 47743.1 -23510.7
+-2.0014e+07 12920.3 -35924.4
+-2.00371e+07 -19118.5 -56781.9
+-2.00622e+07 -47690.2 -83500.7
+-2.00873e+07 -72257.4 -113538
+-2.01108e+07 -92437 -144560
+-2.01312e+07 -108003 -174543
+-2.01475e+07 -118883 -201834
+-2.01589e+07 -125152 -225169
+-2.01649e+07 -127017 -243673
+-2.01652e+07 -124800 -256838
+-2.01599e+07 -118919 -264484
+-2.01491e+07 -109865 -266710
+-2.01331e+07 -98175.9 -263841
+0 -84416.1 -256372
+1.60356e+07 -6572.39 -154438
+1.60522e+07 -12020 -163110
+1.60646e+07 -17654.8 -170587
+1.60724e+07 -23272.6 -176580
+1.60753e+07 -28635.2 -180823
+1.60732e+07 -33476.2 -183090
+1.60663e+07 -37509.8 -183222
+1.6055e+07 -40440.5 -181155
+1.604e+07 -41975.3 -176944
+1.60223e+07 -41836.7 -170790
+1.60033e+07 -39777.1 -163064
+1.59846e+07 -35593.8 -154317
+1.59683e+07 -29143.5 -145286
+1.59566e+07 -20356.1 -136874
+1.5952e+07 -9246.67 -130109
+1.59571e+07 4074.57 -126066
+1.59745e+07 19394.8 -125749
+1.60068e+07 36393.9 -129937
+1.60565e+07 54642.7 -139001
+1.61253e+07 73602.1 -152704
+1.62147e+07 92623.6 -170022
+1.6325e+07 110949 -189003
+1.64555e+07 127703 -206723
+1.66043e+07 141884 -219348
+1.67678e+07 152324 -222319
+1.69405e+07 157631 -210648
+1.7115e+07 156072 -179240
+1.72812e+07 145388 -123167
+1.74266e+07 122497 -37791
+1.75351e+07 83076.2 81304.3
+1.75864e+07 20993.2 238430
+1.75546e+07 -72419.9 437667
+1.74066e+07 -209211 682008
+1.70983e+07 -405560 971239
+1.65714e+07 -681476 1.29809e+06
+1.57495e+07 -1.05662e+06 1.64248e+06
+1.45421e+07 -1.5366e+06 1.96497e+06
+1.28695e+07 -2.08448e+06 2.20364e+06
+1.0725e+07 -2.58551e+06 2.28378e+06
+8.26488e+06 -2.84798e+06 2.15046e+06
+5.84133e+06 -2.70569e+06 1.81671e+06
+3.83876e+06 -2.20084e+06 1.38413e+06
+2.39515e+06 -1.58928e+06 973349
+1.43988e+06 -1.06366e+06 649312
+840930 -676977 418148
+479910 -414342 261816
+268860 -245503 159809
+148354 -141627 95274.6
+80833.6 -79938.7 55612.2
+43563.9 -44350.6 31879.1
+23211.8 -24293.6 18006.8
+12181 -13187.5 10055.9
+6232.26 -7117.93 5570.79
+3029.09 -3833.41 3072.22
+1300.14 -2067.93 1693.43
+360.793 -1122.87 938.122
+-157.482 -619.108 527.265
+-453.364 -352.961 306.494
+-635.099 -216.525 192.04
+-765.154 -154.799 140.224
+-885.374 -143.021 131.106
+-1033.55 -176.44 160.918
+-1258.8 -268.515 240.685
+-1641.17 -456.418 400.545
+-2324.34 -816.582 701.411
+-3575.37 -1496.38 1258.06
+-5892.4 -2773.09 2281.43
+-10204 -5163 4153.26
+-18237.9 -9618.26 7554.18
+-33174.7 -17866.3 13676.2
+-60793.3 -32982.6 24560.8
+-111464 -60323 43611.4
+-203421 -108916 76324
+-367848 -193342 131259
+-656554 -336062 221277
+-1.1524e+06 -569693 365118
+-1.98043e+06 -937564 589146
+-3.31444e+06 -1.48959e+06 927637
+-5.35825e+06 -2.25871e+06 1.41361e+06
+-8.23355e+06 -3.1737e+06 2.04186e+06
+-1.17419e+07 -3.93303e+06 2.70864e+06
+-1.52958e+07 -4.12817e+06 3.21665e+06
+-1.83652e+07 -3.70348e+06 3.40243e+06
+-2.07295e+07 -2.93536e+06 3.25068e+06
+-2.24165e+07 -2.12595e+06 2.85651e+06
+-2.35562e+07 -1.44217e+06 2.34293e+06
+-2.42855e+07 -925419 1.8076e+06
+-2.4714e+07 -555035 1.30913e+06
+-2.49216e+07 -294882 874276
+-2.4966e+07 -112987 509904
+-2.48897e+07 14311.2 212867
+-2.47255e+07 103466 -23326
+-2.44992e+07 165619 -204818
+-2.42318e+07 208156 -336164
+-2.39411e+07 235873 -420799
+-2.36419e+07 251866 -462288
+-2.33468e+07 258180 -465481
+-2.30664e+07 256268 -437047
+-2.28086e+07 247280 -385279
+-2.25797e+07 232236 -319347
+-2.23835e+07 212113 -248318
+-2.22221e+07 187887 -180231
+-2.20959e+07 160543 -121421
+-2.20039e+07 131066 -76165
+-2.19439e+07 100430 -46659.1
+-2.19132e+07 69574.6 -33235.3
+-2.1908e+07 39386.8 -34742.8
+-2.19248e+07 10678.4 -48991.7
+-2.19593e+07 -15834.4 -73184.7
+-2.20077e+07 -39548 -104286
+-2.20659e+07 -59985 -139306
+-2.21303e+07 -76802 -175493
+-2.21974e+07 -89792.7 -210460
+-2.2264e+07 -98885.2 -242251
+-2.23275e+07 -104134 -269366
+-2.23855e+07 -105708 -290762
+-2.2436e+07 -103877 -305829
+-2.24775e+07 -98988.6 -314345
+-2.25091e+07 -91454.7 -316425
+-2.25299e+07 -81727.1 -312448
+0 -70277.9 -303002
+1.68846e+07 -2573.5 -168347
+1.68977e+07 -4687.98 -177974
+1.6904e+07 -6874.88 -186308
+1.6903e+07 -9054.79 -193035
+1.68945e+07 -11135.1 -197858
+1.68788e+07 -13012.5 -200530
+1.68562e+07 -14575.9 -200874
+1.68276e+07 -15711.2 -198811
+1.67944e+07 -16304.8 -194397
+1.67584e+07 -16250.2 -187843
+1.67218e+07 -15452.3 -179542
+1.66872e+07 -13834.2 -170086
+1.66576e+07 -11342.6 -160268
+1.66363e+07 -7952.97 -151066
+1.6627e+07 -3674.33 -143594
+1.66332e+07 1447.13 -139025
+1.66585e+07 7325.55 -138462
+1.67063e+07 13833.9 -142778
+1.67794e+07 20803.9 -152413
+1.68802e+07 28026.3 -167163
+1.70099e+07 35252.1 -185985
+1.71686e+07 42193.1 -206844
+1.73551e+07 48521.1 -226656
+1.75663e+07 53864 -241345
+1.7797e+07 57794.3 -246030
+1.80399e+07 59807.2 -235317
+1.8285e+07 59279.4 -203633
+1.85192e+07 55398.6 -145493
+1.87259e+07 47056.2 -55609.9
+1.88838e+07 32692.3 71183.7
+1.89659e+07 10095.1 240071
+1.89378e+07 -23837.1 456097
+1.87554e+07 -73340.8 723196
+1.83623e+07 -143932 1.04181e+06
+1.76882e+07 -242097 1.40455e+06
+1.66511e+07 -373552 1.78967e+06
+1.51709e+07 -538286 2.15352e+06
+1.32068e+07 -721051 2.42669e+06
+1.08209e+07 -881030 2.52468e+06
+8.23705e+06 -955479 2.38448e+06
+5.81018e+06 -896192 2.01924e+06
+3.84713e+06 -724605 1.54185e+06
+2.43197e+06 -523015 1.08695e+06
+1.48434e+06 -350996 727201
+880034 -224348 469819
+509047 -137972 295148
+288404 -82126.2 180738
+160587 -47562.9 108082
+88131.6 -26930.9 63267.3
+47759 -14978.9 36362.1
+25551.8 -8220.52 20588.2
+13448.5 -4468.84 11522.8
+6890.8 -2414.82 6396.39
+3346.22 -1301.71 3534.15
+1427.47 -702.693 1951.48
+382.109 -381.799 1082.87
+-196.18 -210.633 609.601
+-526.999 -120.144 354.913
+-730.677 -73.7443 222.709
+-876.778 -52.7522 162.795
+-1011.95 -48.7529 152.227
+-1178.46 -60.1375 186.664
+-1431 -91.4741 278.772
+-1858.65 -155.396 463.172
+-2620.93 -277.863 809.733
+-4012.79 -508.846 1449.87
+-6583.02 -942.349 2624.53
+-11351.2 -1753.21 4768.7
+-20201.4 -3263.1 8655.76
+-36578.5 -6054.45 15635.7
+-66693.3 -11161.3 28012.1
+-121548 -20375.5 49609.4
+-220179 -36699.6 86574.8
+-394544 -64948.7 148431
+-696432 -112469 249413
+-1.2064e+06 -189823 410155
+-2.04335e+06 -310993 659606
+-3.37083e+06 -492179 1.0354e+06
+-5.38303e+06 -744492 1.57382e+06
+-8.2158e+06 -1.04672e+06 2.26871e+06
+-1.17482e+07 -1.30512e+06 3.00418e+06
+-1.55038e+07 -1.38787e+06 3.56003e+06
+-1.89388e+07 -1.2648e+06 3.75457e+06
+-2.17285e+07 -1.01766e+06 3.57293e+06
+-2.38031e+07 -746444 3.1239e+06
+-2.52442e+07 -511220 2.54638e+06
+-2.61805e+07 -330045 1.94949e+06
+-2.67329e+07 -198388 1.39781e+06
+-2.69982e+07 -105028 920032
+-2.705e+07 -39325.7 522647
+-2.69436e+07 6896.68 201151
+-2.67212e+07 39458.8 -52520.1
+-2.64158e+07 62346.1 -245894
+-2.60542e+07 78197.5 -384587
+-2.56586e+07 88707.4 -472823
+-2.52479e+07 94947.7 -514795
+-2.48385e+07 97612 -515938
+-2.4444e+07 97187.3 -483529
+-2.4076e+07 94063.5 -426506
+-2.37432e+07 88595.6 -354691
+-2.3452e+07 81135.8 -277762
+-2.32065e+07 72045.5 -204278
+-2.30085e+07 61697.1 -140964
+-2.28582e+07 50469.9 -92347.5
+-2.27539e+07 38742.9 -60726.6
+-2.26929e+07 26885.3 -46412.4
+-2.26713e+07 15248 -48134.1
+-2.26847e+07 4153.42 -63514.8
+-2.27279e+07 -6112.86 -89533.1
+-2.27955e+07 -15309.5 -122917
+-2.28821e+07 -23244.8 -160448
+-2.29822e+07 -29780.8 -199168
+-2.30905e+07 -34833.5 -236508
+-2.32021e+07 -38372.5 -270363
+-2.33124e+07 -40417.6 -299121
+-2.34174e+07 -41033.9 -321659
+-2.35137e+07 -40325.6 -337322
+-2.35983e+07 -38428.8 -345874
+-2.3669e+07 -35503.8 -347440
+-2.37243e+07 -31726.6 -342434
+0 -27281.4 -331496
+1.71265e+07 2573.51 -173010
+1.7138e+07 4687.99 -182970
+1.71418e+07 6874.88 -191609
+1.71372e+07 9054.79 -198601
+1.71241e+07 11135.1 -203644
+1.71028e+07 13012.5 -206481
+1.70739e+07 14575.9 -206927
+1.70385e+07 15711.2 -204902
+1.69981e+07 16304.8 -200457
+1.69547e+07 16250.2 -193805
+1.69111e+07 15452.3 -185345
+1.68701e+07 13834.2 -175680
+1.68353e+07 11342.6 -165619
+1.68102e+07 7952.97 -156161
+1.6799e+07 3674.33 -148446
+1.68055e+07 -1447.13 -143678
+1.68338e+07 -7325.54 -142992
+1.68874e+07 -13833.9 -147291
+1.69694e+07 -20803.9 -157041
+1.70822e+07 -28026.3 -172055
+1.72271e+07 -35252.1 -191290
+1.74041e+07 -42193.1 -212695
+1.76115e+07 -48521.1 -233149
+1.7846e+07 -53864 -248513
+1.81018e+07 -57794.2 -253820
+1.8371e+07 -59807.2 -243565
+1.86426e+07 -59279.4 -212039
+1.89026e+07 -55398.6 -153587
+1.91328e+07 -47056.2 -62718.2
+1.93102e+07 -32692.2 65991.2
+1.94057e+07 -10095.1 238038
+1.93816e+07 23837.1 458838
+1.919e+07 73340.8 732719
+1.87702e+07 143932 1.06045e+06
+1.80483e+07 242097 1.43471e+06
+1.69405e+07 373552 1.83332e+06
+1.53713e+07 538286 2.21127e+06
+1.33133e+07 721051 2.49664e+06
+1.0851e+07 881030 2.60151e+06
+8.22829e+06 955479 2.45993e+06
+5.79965e+06 896192 2.08494e+06
+3.84842e+06 724605 1.59318e+06
+2.44238e+06 523015 1.12401e+06
+1.49775e+06 350996 752707
+892261 224348 486836
+518387 137972 306201
+294786 82126.2 187730
+164637 47562.9 112391
+90570.4 26930.9 65860
+49170.9 14978.9 37889.7
+26343.4 8220.52 21472.7
+13878.5 4468.84 12027.9
+7114.35 2414.82 6681.94
+3453.62 1301.71 3694.56
+1470 702.693 2041.41
+388.297 381.799 1133.5
+-210.611 210.633 638.487
+-553.487 120.144 371.953
+-764.763 73.7443 233.534
+-916.436 52.7522 170.779
+-1056.82 48.7529 159.703
+-1229.69 60.1375 195.762
+-1491.69 91.4741 292.194
+-1934.96 155.396 485.172
+-2724.43 277.863 847.66
+-4164.55 508.846 1516.79
+-6821.27 942.349 2743.81
+-11744.7 1753.21 4981.82
+-20871.2 3263.1 9035.54
+-37733.6 6054.45 16308
+-68682.6 11161.3 29189.8
+-124921 20375.5 51644.2
+-225732 36699.6 90029.6
+-403273 64948.7 154178
+-709242 112469 258758
+-1.22336e+06 189823 425005
+-2.06253e+06 310993 682690
+-3.38731e+06 492179 1.07055e+06
+-5.38961e+06 744492 1.62598e+06
+-8.21035e+06 1.04672e+06 2.34254e+06
+-1.17522e+07 1.30512e+06 3.10024e+06
+-1.55726e+07 1.38787e+06 3.67107e+06
+-1.91255e+07 1.2648e+06 3.86723e+06
+-2.20543e+07 1.01766e+06 3.67428e+06
+-2.42574e+07 746444 3.20592e+06
+-2.57992e+07 511220 2.60658e+06
+-2.68046e+07 330045 1.98931e+06
+-2.73978e+07 198388 1.42057e+06
+-2.76813e+07 105028 929538
+-2.7734e+07 39325.7 522388
+-2.76156e+07 -6896.68 193999
+-2.73716e+07 -39458.8 -64343.7
+-2.70374e+07 -62346.1 -260710
+-2.66416e+07 -78197.5 -401113
+-2.62077e+07 -88707.4 -490046
+-2.57561e+07 -94947.7 -531898
+-2.53045e+07 -97612 -532268
+-2.48676e+07 -97187.3 -498597
+-2.44582e+07 -94063.5 -439996
+-2.40861e+07 -88595.6 -366464
+-2.37587e+07 -81135.8 -287844
+-2.34808e+07 -72045.5 -212839
+-2.32549e+07 -61697.1 -148280
+-2.30818e+07 -50469.9 -98758.6
+-2.296e+07 -38742.9 -66598
+-2.28869e+07 -26885.3 -52096.9
+-2.28587e+07 -15248 -53944.5
+-2.28705e+07 -4153.42 -69705.2
+-2.29168e+07 6112.86 -96289.5
+-2.29919e+07 15309.5 -130356
+-2.30895e+07 23244.8 -168617
+-2.32035e+07 29780.8 -208054
+-2.33281e+07 34833.5 -246049
+-2.34574e+07 38372.5 -280454
+-2.35862e+07 40417.6 -309624
+-2.37099e+07 41033.9 -332417
+-2.38244e+07 40325.6 -348163
+-2.39261e+07 38428.9 -356626
+-2.40126e+07 35503.8 -357934
+-2.40816e+07 31726.6 -352514
+0 27281.4 -341020
+1.68846e+07 6572.38 -168347
+1.68977e+07 12020 -177974
+1.6904e+07 17654.8 -186308
+1.6903e+07 23272.6 -193035
+1.68945e+07 28635.2 -197858
+1.68788e+07 33476.2 -200530
+1.68562e+07 37509.8 -200874
+1.68276e+07 40440.5 -198811
+1.67944e+07 41975.3 -194397
+1.67584e+07 41836.7 -187843
+1.67218e+07 39777.1 -179542
+1.66872e+07 35593.8 -170086
+1.66576e+07 29143.6 -160268
+1.66363e+07 20356.1 -151066
+1.6627e+07 9246.67 -143594
+1.66332e+07 -4074.57 -139025
+1.66585e+07 -19394.8 -138462
+1.67063e+07 -36393.9 -142778
+1.67794e+07 -54642.7 -152413
+1.68802e+07 -73602.1 -167163
+1.70099e+07 -92623.6 -185985
+1.71686e+07 -110949 -206844
+1.73551e+07 -127703 -226656
+1.75663e+07 -141884 -241345
+1.7797e+07 -152324 -246030
+1.80399e+07 -157631 -235317
+1.8285e+07 -156072 -203633
+1.85192e+07 -145388 -145493
+1.87259e+07 -122497 -55609.9
+1.88838e+07 -83076.2 71183.7
+1.89659e+07 -20993.2 240071
+1.89378e+07 72419.9 456097
+1.87554e+07 209211 723196
+1.83623e+07 405560 1.04181e+06
+1.76882e+07 681476 1.40455e+06
+1.66511e+07 1.05662e+06 1.78967e+06
+1.51709e+07 1.5366e+06 2.15352e+06
+1.32068e+07 2.08448e+06 2.42669e+06
+1.08209e+07 2.58551e+06 2.52468e+06
+8.23705e+06 2.84798e+06 2.38448e+06
+5.81018e+06 2.70569e+06 2.01924e+06
+3.84713e+06 2.20084e+06 1.54185e+06
+2.43197e+06 1.58928e+06 1.08695e+06
+1.48434e+06 1.06366e+06 727201
+880034 676977 469819
+509047 414342 295148
+288404 245503 180738
+160587 141627 108082
+88131.6 79938.7 63267.3
+47759 44350.6 36362.1
+25551.8 24293.6 20588.2
+13448.5 13187.5 11522.8
+6890.8 7117.93 6396.39
+3346.22 3833.41 3534.15
+1427.47 2067.93 1951.48
+382.109 1122.87 1082.87
+-196.18 619.108 609.601
+-526.999 352.961 354.913
+-730.677 216.525 222.709
+-876.778 154.799 162.795
+-1011.95 143.021 152.227
+-1178.46 176.44 186.664
+-1431 268.515 278.772
+-1858.65 456.418 463.172
+-2620.93 816.582 809.733
+-4012.79 1496.38 1449.87
+-6583.02 2773.09 2624.53
+-11351.2 5163 4768.7
+-20201.4 9618.26 8655.76
+-36578.5 17866.3 15635.7
+-66693.3 32982.6 28012.1
+-121548 60323 49609.4
+-220179 108916 86574.8
+-394544 193342 148431
+-696432 336062 249413
+-1.2064e+06 569693 410155
+-2.04335e+06 937564 659606
+-3.37083e+06 1.48959e+06 1.0354e+06
+-5.38303e+06 2.25871e+06 1.57382e+06
+-8.2158e+06 3.1737e+06 2.26871e+06
+-1.17482e+07 3.93303e+06 3.00418e+06
+-1.55038e+07 4.12817e+06 3.56003e+06
+-1.89388e+07 3.70348e+06 3.75457e+06
+-2.17285e+07 2.93536e+06 3.57293e+06
+-2.38031e+07 2.12595e+06 3.1239e+06
+-2.52442e+07 1.44217e+06 2.54638e+06
+-2.61805e+07 925419 1.94949e+06
+-2.67329e+07 555035 1.39781e+06
+-2.69982e+07 294882 920032
+-2.705e+07 112987 522647
+-2.69436e+07 -14311.2 201151
+-2.67212e+07 -103466 -52520.1
+-2.64158e+07 -165619 -245894
+-2.60542e+07 -208156 -384587
+-2.56586e+07 -235873 -472823
+-2.52479e+07 -251866 -514795
+-2.48385e+07 -258180 -515938
+-2.4444e+07 -256268 -483529
+-2.4076e+07 -247280 -426506
+-2.37432e+07 -232236 -354691
+-2.3452e+07 -212113 -277762
+-2.32065e+07 -187887 -204278
+-2.30085e+07 -160543 -140964
+-2.28582e+07 -131066 -92347.5
+-2.27539e+07 -100430 -60726.6
+-2.26929e+07 -69574.6 -46412.4
+-2.26713e+07 -39386.8 -48134.1
+-2.26847e+07 -10678.4 -63514.8
+-2.27279e+07 15834.4 -89533.1
+-2.27955e+07 39548 -122917
+-2.28821e+07 59985 -160449
+-2.29822e+07 76802 -199168
+-2.30905e+07 89792.7 -236508
+-2.32021e+07 98885.2 -270363
+-2.33124e+07 104134 -299121
+-2.34174e+07 105708 -321659
+-2.35137e+07 103877 -337322
+-2.35983e+07 98988.6 -345874
+-2.3669e+07 91454.7 -347440
+-2.37243e+07 81727.1 -342434
+0 70277.9 -331496
+1.60356e+07 7724.91 -154438
+1.60522e+07 14272.3 -163110
+1.60646e+07 21046 -170587
+1.60724e+07 27801.8 -176580
+1.60753e+07 34253.9 -180823
+1.60732e+07 40082.3 -183090
+1.60663e+07 44942.9 -183222
+1.6055e+07 48478.8 -181155
+1.604e+07 50334.7 -176944
+1.60223e+07 50171.9 -170790
+1.60033e+07 47685.3 -163064
+1.59846e+07 42620.7 -154317
+1.59683e+07 34792.2 -145286
+1.59566e+07 24098.7 -136874
+1.5952e+07 10538.8 -130109
+1.59571e+07 -5775.92 -126066
+1.59745e+07 -24610.7 -125749
+1.60068e+07 -45599.4 -129937
+1.60565e+07 -68238.6 -139001
+1.61253e+07 -91883 -152704
+1.62147e+07 -115741 -170022
+1.6325e+07 -138866 -189003
+1.64555e+07 -160145 -206723
+1.66043e+07 -178266 -219348
+1.67678e+07 -191666 -222319
+1.69405e+07 -198440 -210648
+1.7115e+07 -196170 -179240
+1.72812e+07 -181672 -123167
+1.74266e+07 -150591 -37791
+1.75351e+07 -96809.3 81304.3
+1.75864e+07 -11612.5 238430
+1.75546e+07 117508 437667
+1.74066e+07 308515 682008
+1.70983e+07 586903 971239
+1.65714e+07 987074 1.29809e+06
+1.57495e+07 1.54885e+06 1.64248e+06
+1.45421e+07 2.29928e+06 1.96497e+06
+1.28695e+07 3.20662e+06 2.20364e+06
+1.0725e+07 4.10919e+06 2.28378e+06
+8.26488e+06 4.68098e+06 2.15046e+06
+5.84133e+06 4.57102e+06 1.81671e+06
+3.83876e+06 3.76409e+06 1.38413e+06
+2.39515e+06 2.71856e+06 973349
+1.43988e+06 1.80773e+06 649312
+840930 1.14001e+06 418148
+479910 690855 261816
+268860 405582 159809
+148354 232192 95274.6
+80833.6 130262 55612.2
+43563.9 71921.2 31879.1
+23211.8 39252.1 18006.8
+12181 21249.8 10055.9
+6232.26 11443.7 5570.79
+3029.09 6152.11 3072.22
+1300.14 3314.49 1693.43
+360.793 1797.52 938.122
+-157.482 989.926 527.265
+-453.364 563.893 306.494
+-635.099 345.562 192.04
+-765.154 246.78 140.224
+-885.374 227.894 131.106
+-1033.55 281.191 160.918
+-1258.8 428.352 240.685
+-1641.17 728.877 400.545
+-2324.34 1305.32 701.411
+-3575.37 2395.1 1258.06
+-5892.4 4444.45 2281.43
+-10204 8285.93 4153.26
+-18237.9 15463.9 7554.18
+-33174.7 28788.9 13676.2
+-60793.3 53288.7 24560.8
+-111464 97810.7 43611.4
+-203421 177437 76324
+-367848 316841 131259
+-656554 554810 221277
+-1.1524e+06 948876 365118
+-1.98043e+06 1.57629e+06 589146
+-3.31444e+06 2.52581e+06 927637
+-5.35825e+06 3.85242e+06 1.41361e+06
+-8.23355e+06 5.41034e+06 2.04186e+06
+-1.17419e+07 6.6217e+06 2.70864e+06
+-1.52958e+07 6.75926e+06 3.21665e+06
+-1.83652e+07 5.86293e+06 3.40243e+06
+-2.07295e+07 4.49854e+06 3.25068e+06
+-2.24165e+07 3.16949e+06 2.85651e+06
+-2.35562e+07 2.10534e+06 2.34293e+06
+-2.42855e+07 1.33245e+06 1.8076e+06
+-2.4714e+07 794434 1.30913e+06
+-2.49216e+07 424365 874276
+-2.4966e+07 169534 509904
+-2.48897e+07 -6509.83 212867
+-2.47255e+07 -128063 -23326
+-2.44992e+07 -211249 -204818
+-2.42318e+07 -266758 -336164
+-2.39411e+07 -301650 -420799
+-2.36419e+07 -320601 -462288
+-2.33468e+07 -326774 -465481
+-2.30664e+07 -322428 -437047
+-2.28086e+07 -309310 -385279
+-2.25797e+07 -288894 -319347
+-2.23835e+07 -262521 -248318
+-2.22221e+07 -231465 -180231
+-2.20959e+07 -196960 -121421
+-2.20039e+07 -160207 -76165
+-2.19439e+07 -122365 -46659.1
+-2.19132e+07 -84534.8 -33235.3
+-2.1908e+07 -47743.1 -34742.8
+-2.19248e+07 -12920.3 -48991.7
+-2.19593e+07 19118.5 -73184.7
+-2.20077e+07 47690.2 -104286
+-2.20659e+07 72257.4 -139306
+-2.21303e+07 92437 -175493
+-2.21974e+07 108003 -210460
+-2.2264e+07 118883 -242251
+-2.23275e+07 125152 -269366
+-2.23855e+07 127017 -290762
+-2.2436e+07 124800 -305829
+-2.24775e+07 118919 -314345
+-2.25091e+07 109865 -316425
+-2.25299e+07 98175.9 -312448
+0 84416.1 -303002
+1.42694e+07 5877.11 -131775
+1.42888e+07 11137 -138996
+1.43069e+07 16580.9 -145210
+1.43234e+07 22014.1 -150175
+1.43379e+07 27207.4 -153669
+1.43502e+07 31903.7 -155506
+1.436e+07 35825.4 -155554
+1.43672e+07 38683.8 -153760
+1.4372e+07 40189.3 -150172
+1.43744e+07 40063.6 -144961
+1.43748e+07 38052.2 -138439
+1.43739e+07 33938.2 -131071
+1.43723e+07 27555.6 -123478
+1.43711e+07 18802.6 -116419
+1.43713e+07 7653.76 -110755
+1.43745e+07 -5828.24 -107382
+1.4382e+07 -21482.8 -107132
+1.43953e+07 -39042 -110636
+1.44161e+07 -58122.7 -118170
+1.44456e+07 -78218.1 -129484
+1.44849e+07 -98687.1 -143647
+1.45348e+07 -118741 -158941
+1.45953e+07 -137418 -172826
+1.46657e+07 -153546 -182012
+1.47444e+07 -165673 -182638
+1.48287e+07 -171958 -170545
+1.49147e+07 -169981 -141581
+1.49974e+07 -156465 -91845.9
+1.50701e+07 -126840 -17796.6
+1.51246e+07 -74594 83825.6
+1.51506e+07 9705.45 216137
+1.5135e+07 139958 382057
+1.5061e+07 337058 583652
+1.4904e+07 632865 820424
+1.46263e+07 1.07526e+06 1.08616e+06
+1.41661e+07 1.73024e+06 1.36427e+06
+1.34245e+07 2.66806e+06 1.62255e+06
+1.22653e+07 3.90791e+06 1.81083e+06
+1.05619e+07 5.29967e+06 1.8691e+06
+8.33176e+06 6.39588e+06 1.75385e+06
+5.90103e+06 6.54513e+06 1.47672e+06
+3.81326e+06 5.49359e+06 1.12079e+06
+2.31661e+06 3.95963e+06 784531
+1.35286e+06 2.60041e+06 520647
+768607 1.61466e+06 333518
+428243 963396 207778
+235335 557774 126244
+127879 315840 74951.2
+68828.2 175694 43585.1
+36756.8 96341.3 24900.2
+19453.2 52315.7 14021.6
+10155.7 28221.1 7808.33
+5182.69 15148.7 4314.54
+2522.29 8123.3 2373.75
+1091.77 4370.04 1305.51
+318.265 2365.76 721.682
+-106.477 1300.59 404.789
+-348.491 740.333 234.834
+-496.601 453.083 146.87
+-602.169 323.071 107.107
+-699.686 298.237 100.141
+-819.889 367.963 123.071
+-1003.37 561.358 184.43
+-1315.97 956.45 307.56
+-1875.82 1714.42 539.706
+-2906.41 3151.83 970.128
+-4824.64 5859.47 1763.33
+-8408.86 10941.2 3217.96
+-15132.6 20472.3 5868.48
+-27736.3 38235.6 10655
+-51244.3 71024.7 19195.1
+-94896.2 131016 34200.3
+-175391 239280 60079.2
+-322094 430819 103751
+-585982 762485 175703
+-1.05303e+06 1.3217e+06 291359
+-1.85878e+06 2.2284e+06 472626
+-3.19866e+06 3.62291e+06 748170
+-5.30396e+06 5.58953e+06 1.14581e+06
+-8.27837e+06 7.8611e+06 1.66199e+06
+-1.17679e+07 9.43744e+06 2.21213e+06
+-1.49608e+07 9.19008e+06 2.63497e+06
+-1.73798e+07 7.52597e+06 2.79657e+06
+-1.90116e+07 5.45977e+06 2.68278e+06
+-2.00496e+07 3.66449e+06 2.36925e+06
+-2.06932e+07 2.34293e+06 1.95523e+06
+-2.10822e+07 1.44334e+06 1.52036e+06
+-2.13019e+07 847404 1.11297e+06
+-2.14034e+07 452574 755475
+-2.14193e+07 188637 453943
+-2.13723e+07 11118.1 206195
+-2.128e+07 -108003 7321.51
+-2.11563e+07 -186781 -147242
+-2.10131e+07 -237096 -260698
+-2.08603e+07 -266849 -335335
+-2.07065e+07 -281329 -373635
+-2.05588e+07 -284130 -379299
+-2.04228e+07 -277776 -357724
+-2.03028e+07 -264138 -315828
+-2.02014e+07 -244701 -261392
+-2.01201e+07 -220726 -202184
+-2.00587e+07 -193336 -145137
+-2.00164e+07 -163569 -95738.3
+-1.99914e+07 -132392 -57715.6
+-1.99813e+07 -100715 -33000.8
+-1.99835e+07 -69380.7 -21918.1
+-1.99953e+07 -39163.7 -23510.7
+-2.0014e+07 -10756.5 -35924.4
+-2.00371e+07 15239.5 -56781.8
+-2.00622e+07 38324.5 -83500.7
+-2.00873e+07 58108.4 -113538
+-2.01108e+07 74316.6 -144560
+-2.01312e+07 86792.3 -174543
+-2.01475e+07 95494.8 -201834
+-2.01589e+07 100494 -225169
+-2.01649e+07 101961 -243673
+-2.01652e+07 100156 -256838
+-2.01599e+07 95413.4 -264484
+-2.01491e+07 88125.1 -266710
+-2.01331e+07 78720.3 -263841
+0 67647.5 -256372
+1.13282e+07 2566.96 -101954
+1.13467e+07 5321.72 -107422
+1.13658e+07 8176.87 -112164
+1.13852e+07 11031.4 -116007
+1.14045e+07 13765.5 -118789
+1.14235e+07 16244.3 -120370
+1.14416e+07 18321.1 -120650
+1.14587e+07 19842.4 -119583
+1.14742e+07 20653.1 -117193
+1.1488e+07 20602.1 -113592
+1.14996e+07 19548.5 -108992
+1.15091e+07 17368.4 -103716
+1.15162e+07 13961.3 -98201.5
+1.15211e+07 9257.14 -92985.2
+1.1524e+07 3222.21 -88681.6
+1.15251e+07 -4134.05 -85930.9
+1.1525e+07 -12753.1 -85325.6
+1.15242e+07 -22521.4 -87311
+1.15235e+07 -33263.7 -92067.8
+1.15236e+07 -44735.6 -99387.4
+1.15251e+07 -56613.8 -108561
+1.15287e+07 -68481.8 -118307
+1.15348e+07 -79806.6 -126755
+1.15437e+07 -89901.3 -131523
+1.15553e+07 -97863 -129869
+1.15696e+07 -102472 -118920
+1.15861e+07 -102029 -95908.9
+1.16045e+07 -94110 -58353.6
+1.16246e+07 -75178.6 -4095.35
+1.16468e+07 -40000.3 68821.3
+1.16721e+07 19309.7 162350
+1.17024e+07 114936 278504
+1.17402e+07 266425 418946
+1.17865e+07 506421 583751
+1.18349e+07 890494 769057
+1.18549e+07 1.51009e+06 963553
+1.17591e+07 2.49704e+06 1.14456e+06
+1.13581e+07 3.9823e+06 1.27631e+06
+1.03541e+07 5.93927e+06 1.31596e+06
+8.50244e+06 7.88334e+06 1.23248e+06
+6.01738e+06 8.70897e+06 1.03418e+06
+3.75348e+06 7.50641e+06 780392
+2.16843e+06 5.36637e+06 541938
+1.20452e+06 3.44566e+06 356537
+654058 2.08953e+06 226543
+350870 1.22007e+06 140165
+187444 693424 84685.8
+99637.1 387484 50043.8
+52656.3 213469 28985.8
+27781.3 116063 16503.9
+14580.5 62670.4 9266.42
+7548.82 33696 5146.62
+3839.57 18011.5 2837.02
+1874.74 9629.19 1557.54
+817.683 5177.96 854.897
+250.845 2796.5 471.673
+-57.4143 1533.35 264.096
+-233.972 873.587 152.967
+-341.464 533.822 95.5349
+-417.472 379.806 69.6257
+-487.945 350.819 65.1283
+-574.346 432.327 80.1374
+-707.479 661.15 120.277
+-935.251 1127.94 200.91
+-1341.49 2020.64 353.143
+-2097.13 3725.37 635.927
+-3514.74 6941.69 1158.24
+-6163.79 12969.5 2118.34
+-11185.3 24344.5 3872.32
+-20726 45654.6 7049.62
+-38678.1 85084.2 12738.1
+-72579.6 157845 22771.5
+-136688 290709 40156
+-256642 528416 69659.5
+-480264 947484 118595
+-896015 1.67232e+06 197907
+-1.65327e+06 2.8788e+06 323496
+-2.98671e+06 4.78646e+06 516615
+-5.19907e+06 7.54273e+06 798372
+-8.39196e+06 1.06838e+07 1.16719e+06
+-1.19207e+07 1.2488e+07 1.56206e+06
+-1.45422e+07 1.12681e+07 1.86641e+06
+-1.59575e+07 8.39895e+06 1.98409e+06
+-1.65282e+07 5.54708e+06 1.90474e+06
+-1.66788e+07 3.42187e+06 1.68255e+06
+-1.66707e+07 2.03969e+06 1.3891e+06
+-1.66205e+07 1.18996e+06 1.0819e+06
+-1.65675e+07 671584 795564
+-1.65201e+07 350165 545575
+-1.64774e+07 146914 335383
+-1.64372e+07 17052.5 162527
+-1.63977e+07 -65562.9 22862.9
+-1.63585e+07 -116948 -87091.5
+-1.632e+07 -147317 -169428
+-1.62835e+07 -163323 -225280
+-1.62504e+07 -169336 -255800
+-1.62226e+07 -168244 -263059
+-1.62014e+07 -161989 -250506
+-1.61878e+07 -151919 -222886
+-1.61822e+07 -139019 -185743
+-1.61843e+07 -124054 -144741
+-1.61933e+07 -107657 -104999
+-1.62079e+07 -90372.8 -70604.3
+-1.62264e+07 -72690.2 -44342.9
+-1.6247e+07 -55050.4 -27663.7
+-1.6268e+07 -37854.5 -20812.2
+-1.62875e+07 -21463.8 -23077.7
+-1.63043e+07 -6198.14 -33084.6
+-1.6317e+07 7667.6 -49076.6
+-1.63248e+07 19906.7 -69157.1
+-1.6327e+07 30344.2 -91471.3
+-1.63235e+07 38859.7 -114329
+-1.63141e+07 45388.7 -136280
+-1.62992e+07 49922.2 -156149
+-1.62792e+07 52505 -173048
+-1.62547e+07 53231.9 -186375
+-1.62263e+07 52242.1 -195789
+-1.61949e+07 49712 -201186
+-1.61613e+07 45847 -202656
+-1.61264e+07 40871.9 -200447
+0 35020.2 -194925
+7.43462e+06 -17.6966 -68487.5
+7.44783e+06 727.635 -72133.8
+7.46173e+06 1507.38 -75385.9
+7.47614e+06 2294.89 -78145.5
+7.49084e+06 3057.71 -80316.7
+7.50555e+06 3758.59 -81812.8
+7.52001e+06 4356.57 -82563.2
+7.5339e+06 4808.1 -82522.8
+7.54693e+06 5068.32 -81681.5
+7.55878e+06 5092.49 -80073.9
+7.56917e+06 4837.38 -77788.8
+7.57783e+06 4262.95 -74976.2
+7.58455e+06 3333.83 -71851
+7.58915e+06 2021.04 -68690.3
+7.59155e+06 303.554 -65819.8
+7.59172e+06 -1830.06 -63587.8
+7.58969e+06 -4379.91 -62323.1
+7.58559e+06 -7332.96 -62278.5
+7.57958e+06 -10660.8 -63561.4
+7.57188e+06 -14316.6 -66062.9
+7.56271e+06 -18230.9 -69395.7
+7.55233e+06 -22303.9 -72858.1
+7.54098e+06 -26394.6 -75439.1
+7.52897e+06 -30300.2 -75878
+7.51672e+06 -33724.5 -72776.6
+7.50491e+06 -36224.3 -64745.7
+7.49477e+06 -37125.9 -50544.8
+7.48847e+06 -35391.2 -29155.5
+7.48966e+06 -29406.8 265.469
+7.50432e+06 -16633.9 38569
+7.54184e+06 7015.69 86866.5
+7.61652e+06 48414.7 146687
+7.74951e+06 119891 219797
+7.97044e+06 245233 307416
+8.31609e+06 472811 408635
+8.81672e+06 901260 517999
+9.44948e+06 1.71807e+06 622774
+1.00317e+07 3.21962e+06 701689
+1.00794e+07 5.68977e+06 728616
+8.86726e+06 8.89411e+06 684291
+6.20539e+06 1.11941e+07 572766
+3.59307e+06 9.98131e+06 428215
+1.88619e+06 6.97643e+06 292870
+962922 4.3051e+06 189411
+486198 2.52592e+06 118547
+245852 1.43575e+06 72518.6
+126831 797807 43471.5
+65631 440217 25540.9
+33729.9 240568 14727.8
+17628.5 129483 8360.28
+9220.61 69600.6 4684.26
+4690.46 37419.7 2596.53
+2384.12 19880.1 1428.97
+1184.2 10591.9 783.825
+513.613 5719.84 429.799
+163.632 3076.24 236.838
+-19.9144 1677.96 132.557
+-131.186 962.542 76.7819
+-197.803 586.667 47.9575
+-243.424 415.503 35.0098
+-287.298 385.469 32.8196
+-338.751 472.416 40.3926
+-421.521 726.716 60.6116
+-564.45 1241.79 101.269
+-806.177 2210.64 177.958
+-1273.62 4098.57 320.519
+-2170.37 7664.67 584.4
+-3786.89 14264.1 1069.79
+-6914.71 26875.8 1957.51
+-13053.9 50690.3 3570.29
+-24474.2 94474.5 6465.68
+-46438.3 176110 11586.8
+-89960.6 327578 20505.7
+-173485 600150 35757.5
+-336328 1.08981e+06 61291.7
+-665681 1.96682e+06 103233
+-1.31984e+06 3.47536e+06 170985
+-2.59114e+06 5.96529e+06 277762
+-4.9552e+06 9.76421e+06 437315
+-8.59754e+06 1.41208e+07 649596
+-1.23272e+07 1.59509e+07 877436
+-1.4021e+07 1.26566e+07 1.05064e+06
+-1.39602e+07 8.03281e+06 1.11297e+06
+-1.31711e+07 4.48611e+06 1.05936e+06
+-1.23241e+07 2.3552e+06 923708
+-1.16626e+07 1.21505e+06 750429
+-1.12109e+07 627833 574633
+-1.09249e+07 320748 416369
+-1.07541e+07 153167 283172
+-1.06593e+07 57767.3 174884
+-1.06126e+07 2214.3 87891.8
+-1.05952e+07 -29954.2 18053.2
+-1.05949e+07 -47826.4 -37688.7
+-1.0604e+07 -56780.3 -80849.4
+-1.06178e+07 -60133.3 -111793
+-1.06342e+07 -59965.7 -130530
+-1.06521e+07 -57585.6 -137483
+-1.06712e+07 -53815.6 -133939
+-1.06914e+07 -49175.8 -122098
+-1.07127e+07 -44002.5 -104809
+-1.0735e+07 -38522.5 -85145.4
+-1.07578e+07 -32898.8 -65966.2
+-1.07806e+07 -27257.8 -49584.9
+-1.08025e+07 -21704.7 -37578.3
+-1.08227e+07 -16331.5 -30745.8
+-1.08405e+07 -11220.5 -29185.6
+-1.0855e+07 -6446.07 -32443.9
+-1.08656e+07 -2073.95 -39694.6
+-1.0872e+07 1839.41 -49912.2
+-1.08737e+07 5248.04 -62015.9
+-1.08708e+07 8117.64 -74974.7
+-1.08633e+07 10426.5 -87873.7
+-1.08514e+07 12166.4 -99949.8
+-1.08355e+07 13342.2 -110605
+-1.0816e+07 13972.5 -119408
+-1.07936e+07 14088.2 -126082
+-1.07689e+07 13731.5 -130493
+-1.07424e+07 12954.2 -132628
+-1.0715e+07 11815.3 -132572
+-1.06871e+07 10378.2 -130488
+0 8707.57 -126589
+3.58186e+06 -803.948 -36974.9
+3.58798e+06 -696.033 -38973.5
+3.59397e+06 -572.438 -40856.4
+3.59974e+06 -436.947 -42587.7
+3.60521e+06 -294.618 -44128.1
+3.61029e+06 -151.669 -45435.8
+3.61491e+06 -15.3392 -46468.3
+3.61902e+06 106.292 -47185.4
+3.62257e+06 204.554 -47552.5
+3.62555e+06 270.502 -47544.9
+3.62797e+06 295.301 -47152.9
+3.62986e+06 270.674 -46386.9
+3.63127e+06 189.383 -45281.6
+3.63227e+06 45.7342 -43898.9
+3.63296e+06 -163.956 -42326.5
+3.63343e+06 -440.945 -40671.3
+3.63377e+06 -783.746 -39046.1
+3.63405e+06 -1187.92 -37549.7
+3.63432e+06 -1645.98 -36241.3
+3.63456e+06 -2147.3 -35114.7
+3.6347e+06 -2678.1 -34077.7
+3.63459e+06 -3221.23 -32944
+3.63401e+06 -3755.75 -31445.9
+3.63272e+06 -4256.23 -29270.8
+3.63053e+06 -4691.75 -26118.7
+3.62743e+06 -5024.58 -21765.4
+3.62387e+06 -5208.76 -16106
+3.62111e+06 -5188.44 -9140.54
+3.62189e+06 -4894.14 -873.352
+3.63127e+06 -4229.78 8878.5
+3.65819e+06 -3019.98 20721.6
+3.71791e+06 -801.104 35861.1
+3.83636e+06 3971.75 56063.2
+4.0576e+06 16758.5 83243.3
+4.4552e+06 56261.6 118549
+5.14196e+06 181922 160907
+6.24948e+06 563255 205353
+7.79396e+06 1.61429e+06 242187
+9.29805e+06 4.11625e+06 258947
+9.30588e+06 8.81685e+06 246465
+6.25686e+06 1.41828e+07 206080
+3.07666e+06 1.31151e+07 150902
+1.32569e+06 8.69557e+06 98868.7
+589866 5.02053e+06 60646.1
+264957 2.83804e+06 36204.3
+121192 1.57167e+06 21457.3
+62514 851889 12640.7
+31925.1 468210 7327.47
+15251.3 255784 4173.4
+8284.52 135630 2360.75
+4522.25 72910.7 1326.57
+2093.19 39603.8 733.859
+1094.1 20745.8 403.208
+611.91 11000.8 222.749
+234.217 6057.69 122.491
+71.3086 3217.41 67.26
+7.34663 1729.77 37.9072
+-56.5728 1019.52 22.1351
+-90.0787 615.921 13.8328
+-108.066 430.4 10.236
+-132.096 406.603 9.73485
+-150.965 487.738 11.8813
+-193.987 764.406 17.6739
+-274.466 1313.17 29.5273
+-358.473 2278.44 51.3971
+-580.192 4291 91.8479
+-1076.98 8107.49 167.795
+-1720.39 14807.9 305.793
+-3094.32 28067.1 555.463
+-6356.4 53615.4 1014.92
+-11397.8 98891.2 1841.12
+-20939.2 184514 3290.4
+-43588.1 348191 5850.59
+-84877 637789 10347.8
+-164903 1.16332e+06 18023.1
+-361401 2.15207e+06 31014.2
+-804664 3.9e+06 53328.7
+-1.81261e+06 6.94297e+06 91366.5
+-4.22181e+06 1.21251e+07 152263
+-8.60716e+06 1.84344e+07 236405
+-1.28165e+07 2.00657e+07 326020
+-1.27995e+07 1.25303e+07 390664
+-1.07276e+07 5.85145e+06 407658
+-8.618e+06 2.28091e+06 375144
+-7.1218e+06 784548 309626
+-6.20644e+06 247562 233057
+-5.68508e+06 74411.7 162265
+-5.40123e+06 21744.8 105648
+-5.25446e+06 5270.72 64669.3
+-5.18521e+06 -878.973 36752.3
+-5.15857e+06 -3943.63 17814.7
+-5.15389e+06 -5834.73 4013.29
+-5.15901e+06 -7067.72 -7308.99
+-5.16702e+06 -7817.77 -17376
+-5.17431e+06 -8180.93 -26257.1
+-5.17936e+06 -8232.35 -33416.2
+-5.18191e+06 -8036.37 -38266.8
+-5.18241e+06 -7646.96 -40552.4
+-5.18157e+06 -7107.95 -40488.7
+-5.18017e+06 -6454.52 -38703
+-5.17886e+06 -5715.79 -36056.7
+-5.17813e+06 -4917.37 -33438.5
+-5.17827e+06 -4083.36 -31592.8
+-5.17936e+06 -3237.5 -31015.4
+-5.18137e+06 -2403.31 -31920.9
+-5.18413e+06 -1603.58 -34269.3
+-5.18741e+06 -859.447 -37828
+-5.19093e+06 -189.342 -42249.3
+-5.19441e+06 391.847 -47142.2
+-5.19755e+06 873.366 -52129.4
+-5.20011e+06 1248.81 -56883.9
+-5.20185e+06 1516.02 -61146.9
+-5.20258e+06 1676.73 -64731.3
+-5.20217e+06 1736.11 -67517.4
+-5.20053e+06 1702.14 -69443.7
+-5.19761e+06 1585.03 -70497.1
+-5.19341e+06 1396.62 -70702.7
+-5.18798e+06 1149.8 -70113.5
+-5.18141e+06 857.876 -68801.2
+-5.17381e+06 534.057 -66847.3
+0 190.834 -64337.5
+228669 -47.4677 -6620.18
+228856 -41.3785 -6982
+229019 -34.4216 -7336.41
+229157 -26.8078 -7678.64
+229267 -18.8231 -8002.95
+229349 -10.8197 -8302.64
+229404 -3.20724 -8570.15
+229434 3.55807 -8797.25
+229441 8.9866 -8975.31
+229431 12.5725 -9095.66
+229410 13.8142 -9149.97
+229384 12.2385 -9130.76
+229360 7.42586 -9031.94
+229346 -0.962122 -8849.21
+229349 -13.1578 -8580.55
+229376 -29.2651 -8226.3
+229430 -49.2414 -7789.23
+229515 -72.8857 -7274.17
+229626 -99.8306 -6687.55
+229756 -129.536 -6036.86
+229890 -161.277 -5330.3
+230002 -194.128 -4576.79
+230063 -226.921 -3786.71
+230034 -258.192 -2973.27
+229878 -286.096 -2154.33
+229566 -308.312 -1353.82
+229087 -321.936 -601.721
+228474 -323.324 69.1272
+227820 -307.535 630.414
+227317 -265.447 1069.89
+227325 -168.708 1404.76
+228582 103.42 1692.14
+232860 1094.39 2029.56
+245078 5148.76 2537.81
+279453 21690.4 3319.47
+374815 85552.9 4395.25
+622771 313462 5653.99
+1.18346e+06 1.05086e+06 6928.84
+2.14856e+06 3.14723e+06 8352.61
+2.93459e+06 8.02534e+06 10719.9
+1.67447e+06 1.5436e+07 14060.7
+484217 1.42994e+07 13149.3
+87296.8 9.08865e+06 9091.85
+29608.8 5.07574e+06 5530.75
+7339.42 2.85845e+06 3330.37
+-446.034 1.57814e+06 2042.95
+2495.13 848195 1270.83
+1410.46 468931 732.11
+-206.192 257217 376.616
+286.777 135027 209.432
+317.001 72817.1 127.499
+-45.0954 39935.5 65.7914
+11.1409 20673.6 33.35
+64.8942 10936.7 21.4361
+-7.6574 6124.5 11.6642
+-8.59443 3215.54 5.16016
+9.88911 1709.64 3.3419
+-3.32058 1031.83 2.11863
+-5.52679 617.719 0.965142
+-2.47387 427.048 0.791608
+-6.55886 410.363 0.965161
+-1.77771 482.609 0.930836
+-5.96191 768.065 1.32296
+-21.5513 1327.57 2.93513
+2.89044 2251.79 4.64851
+-2.90874 4292.97 7.47177
+-93.3739 8190.14 16.6236
+-16.7408 14717.2 29.9233
+36.715 27991.5 47.5328
+-438.5 54047.7 94.909
+-353.847 98718 181.607
+237.028 183769 299.155
+-1999.68 350166 544.82
+-3289.81 638557 1057.22
+518.579 1.15843e+06 1828.16
+-10988.4 2.16169e+06 2950.5
+-42430.6 3.92875e+06 4848.75
+-125932 7.02282e+06 8107.62
+-693886 1.26873e+07 13370
+-2.39031e+06 2.01217e+07 19363.4
+-4.18547e+06 2.185e+07 20856.3
+-3.06294e+06 1.13989e+07 16320
+-1.68371e+06 4.46566e+06 13009.8
+-887826 1.48019e+06 10748.4
+-541541 434710 8478.84
+-412037 115629 6200.84
+-367225 28236.9 4315.98
+-352162 6384.65 3066.84
+-347374 1279.53 2435.83
+-346414 89.4472 2240.17
+-347047 -241.263 2244.6
+-348331 -376.538 2239.99
+-349764 -450.719 2084.41
+-351050 -491.926 1713.27
+-352025 -508.951 1126.67
+-352631 -507.154 364.88
+-352882 -490.887 -517.438
+-352837 -463.721 -1470.45
+-352582 -428.471 -2458.8
+-352201 -387.312 -3462.7
+-351771 -341.956 -4473.53
+-351353 -293.839 -5487.53
+-350989 -244.262 -6500.14
+-350704 -194.484 -7502.47
+-350510 -145.747 -8480.21
+-350410 -99.2545 -9414.49
+-350399 -56.1272 -10284.1
+-350468 -17.346 -11067.9
+-350605 16.2953 -11747.5
+-350798 44.2225 -12308.7
+-351031 66.0949 -12742.2
+-351290 81.8008 -13044.1
+-351559 91.4404 -13215.3
+-351822 95.3 -13260.6
+-352066 93.823 -13188.4
+-352276 87.5779 -13009.3
+-352441 77.2264 -12735.4
+-352551 63.4917 -12379.9
+-352599 47.1254 -11956.3
+-352579 28.8722 -11477.5
+0 9.43377 -10956
+13223.7 -2.76009 -393.273
+13234.7 -2.42066 -414.073
+13244.3 -2.03399 -434.359
+13252.5 -1.61162 -453.857
+13259.1 -1.1695 -472.237
+13264.1 -0.727345 -489.117
+13267.5 -0.308052 -504.067
+13269.5 0.0628822 -516.623
+13270.3 0.358102 -526.301
+13270 0.549281 -532.614
+13269.1 0.608203 -535.099
+13267.9 0.508004 -533.343
+13266.7 0.224523 -527.013
+13265.9 -0.262293 -515.883
+13265.8 -0.967051 -499.853
+13266.6 -1.89771 -478.962
+13268.4 -3.05461 -453.387
+13271.1 -4.42975 -423.419
+13274.1 -6.00617 -389.437
+13276.6 -7.75742 -351.877
+13277.2 -9.6465 -311.203
+13274.3 -11.6242 -267.918
+13265.3 -13.6262 -222.597
+13247.7 -15.5688 -175.976
+13219.1 -17.3427 -129.056
+13177.5 -18.8072 -83.1932
+13122.5 -19.7815 -40.092
+13056.6 -20.0255 -1.62098
+12986.7 -19.1302 30.6263
+12928.2 -15.8307 56.0083
+12920 -4.03149 75.6126
+13091.7 48.4658 92.8185
+13953.6 306.008 113.12
+17571.4 1559.67 142.385
+31855.5 7388.68 182.513
+84337 33002.5 225.581
+258751 138897 261.708
+761234 548018 364.64
+1.90674e+06 2.00079e+06 995.22
+3.39815e+06 6.53175e+06 3453.78
+1.77618e+06 1.70545e+07 8630.8
+355473 1.57176e+07 8792.8
+7191.15 9.43606e+06 5469.75
+13003.1 5.06931e+06 2998.08
+-489.321 2.87092e+06 1821.26
+-5994.44 1.58268e+06 1223.85
+1909.62 839752 851.676
+1031.02 469612 484.743
+-1075.61 259243 206.403
+150.16 133740 113.808
+341.159 72587.1 81.4238
+-188.126 40450.6 36.1755
+-29.4113 20507.9 15.3348
+85.1043 10815.4 13.8499
+-26.6945 6232.44 7.19911
+-17.6188 3204.94 1.79233
+18.217 1672.79 1.81525
+-2.58284 1052.13 1.30539
+-4.15322 619.237 0.169025
+2.44089 420.408 0.25167
+-3.88755 416.575 0.584767
+5.85759 472.808 0.273065
+1.35586 772.49 0.272554
+-23.0548 1351.34 1.76622
+24.3596 2203.06 2.39541
+28.4264 4286.81 2.75241
+-110.218 8323.59 10.3167
+51.3115 14546.8 18.7649
+226.374 27806.7 21.9421
+-466.961 54720.4 53.6006
+-134.527 98331.5 115.671
+1394.36 182155 161.794
+-1540.43 352984 303.313
+-2400.43 639131 703.231
+8155.17 1.14711e+06 1215
+-412.768 2.16889e+06 1741.99
+-18934.1 3.94585e+06 2610.99
+-12431.8 7.01547e+06 4317.82
+-510495 1.3184e+07 7855
+-2.52552e+06 2.21328e+07 12537.1
+-4.82078e+06 2.41397e+07 12184.1
+-2.69552e+06 9.2701e+06 4792.05
+-1.06615e+06 2.83474e+06 1364.43
+-356906 770312 525.427
+-114631 192144 388.677
+-43640.7 44478.5 319.392
+-25070.8 9580.94 238.159
+-20625.2 1916.35 171.796
+-19654.8 349.125 134.356
+-19508.9 47.6446 121.112
+-19571.3 -10.1719 119.876
+-19692.6 -23.6573 118.685
+-19825.4 -28.5172 109.227
+-19947.6 -30.7364 87.6524
+-20047.8 -31.4351 53.8889
+-20121.1 -31.0177 10.2135
+-20168.1 -29.7687 -40.2501
+-20192.3 -27.916 -94.6603
+-20198.9 -25.6366 -151.027
+-20193.5 -23.063 -208.273
+-20181.2 -20.295 -265.971
+-20166.2 -17.412 -323.974
+-20151.7 -14.4832 -382.068
+-20139.7 -11.5739 -439.776
+-20131.4 -8.7479 -496.283
+-20127.3 -6.06708 -550.5
+-20127.5 -3.58932 -601.186
+-20131.8 -1.36542 -647.106
+-20139.5 0.563404 -687.17
+-20150.2 2.1674 -720.528
+-20163 3.42904 -746.621
+-20177.2 4.3429 -765.192
+-20191.8 4.91483 -776.259
+-20206.1 5.1607 -780.077
+-20219.1 5.10489 -777.087
+-20230.2 4.7787 -767.871
+-20238.7 4.21871 -753.109
+-20244 3.46506 -733.534
+-20245.7 2.55963 -709.899
+-20243.5 1.54386 -682.945
+0 0.456633 -653.379
+761.927 -0.137768 -23.211
+762.567 -0.121387 -24.3995
+763.132 -0.102781 -25.5536
+763.612 -0.082499 -26.6577
+764.003 -0.0613081 -27.6928
+764.303 -0.0401623 -28.6373
+764.513 -0.0201705 -29.467
+764.642 -0.0025658 -30.1558
+764.698 0.0113281 -30.6767
+764.697 0.0201377 -31.0026
+764.654 0.0224882 -31.1079
+764.588 0.0170602 -30.97
+764.517 0.00265016 -30.5709
+764.455 -0.0217652 -29.8988
+764.413 -0.056968 -28.9489
+764.394 -0.103443 -27.7246
+764.388 -0.161332 -26.2369
+764.37 -0.230395 -24.5032
+764.291 -0.309975 -22.5458
+764.078 -0.39896 -20.3896
+763.628 -0.495714 -18.061
+762.804 -0.597968 -15.588
+761.443 -0.702643 -13.0024
+759.368 -0.805588 -10.3449
+756.41 -0.901258 -7.67149
+752.453 -0.982339 -5.05872
+747.484 -1.03922 -2.60319
+741.684 -1.05786 -0.410608
+735.611 -1.00475 1.43009
+730.977 -0.726471 2.88642
+734.776 0.667752 4.02646
+781.133 8.34459 5.04144
+1039.99 50.9344 6.17929
+2320.83 280.018 7.40233
+8239.89 1467.9 7.36095
+33803.5 7431.84 1.63136
+136051 36623 -14.1932
+507005 176956 -1.49298
+1.66267e+06 844750 330.452
+4.17497e+06 4.01852e+06 2097.65
+1.96334e+06 1.92651e+07 7222.17
+237904 1.7444e+07 6398.57
+-49306.4 9.72541e+06 2694
+19155.9 5.00192e+06 925.868
+-448.168 2.89e+06 628.5
+-9248.4 1.59055e+06 651.263
+3532.47 826474 621.995
+1609.41 471425 347.182
+-1803.88 262636 87.2292
+275.748 131616 52.0186
+544.221 72286 60.103
+-322.141 41310.6 18.7988
+-44.126 20226.9 3.96973
+138.71 10625.8 11.5553
+-46.5874 6413.82 5.58387
+-28.0787 3185.21 -0.347194
+30.4142 1613.32 1.27
+-4.57281 1086.7 1.14279
+-6.43244 621.236 -0.315212
+4.59192 409.464 0.0156519
+-6.29902 427.425 0.582716
+9.95138 456.649 -0.0184019
+3.41886 779.186 -0.33372
+-37.7856 1392.01 1.53559
+39.7668 2124.26 1.54556
+51.1992 4273.7 -0.130774
+-179.104 8548.71 8.12425
+79.6574 14279.5 14.9097
+391.087 27491.2 5.65234
+-745.246 55846.4 29.8136
+-259.482 97801.3 84.2966
+2348.64 179489 71.2853
+-2407.77 357710 134.787
+-4460.2 641023 507.785
+12715.7 1.12924e+06 875.716
+-765.872 2.18109e+06 901.346
+-26945 3.97138e+06 885.934
+67954.6 6.92223e+06 1357.32
+-346401 1.36015e+07 3938.67
+-2.79236e+06 2.45799e+07 9243.08
+-5.91749e+06 2.7263e+07 10350.4
+-2.34742e+06 5.69842e+06 2955.83
+-708509 1.19518e+06 441.364
+-186673 248278 -10.4441
+-45142.9 50558.9 -19.4295
+-10678.2 9996.5 3.60603
+-3004.51 1900.38 10.1236
+-1433.75 343.573 9.11833
+-1140.81 58.0154 7.34652
+-1096.07 8.42855 6.50666
+-1097.26 0.207979 6.3365
+-1106.97 -1.20492 6.20587
+-1117.92 -1.52833 5.63086
+-1128.13 -1.63576 4.38119
+-1136.78 -1.65757 2.44685
+-1143.53 -1.6226 -0.044601
+-1148.39 -1.54655 -2.91583
+-1151.55 -1.44163 -6.0057
+-1153.36 -1.31721 -9.20271
+-1154.18 -1.18019 -12.4487
+-1154.33 -1.03557 -15.7232
+-1154.12 -0.887193 -19.0217
+-1153.75 -0.738232 -22.335
+-1153.39 -0.59162 -25.6378
+-1153.14 -0.450196 -28.8842
+-1153.05 -0.316713 -32.0116
+-1153.15 -0.193752 -34.9483
+-1153.43 -0.0835872 -37.6222
+-1153.89 0.0119365 -39.9692
+-1154.5 0.0914873 -41.9392
+-1155.21 0.15429 -43.4983
+-1155.99 0.200124 -44.6302
+-1156.79 0.229287 -45.334
+-1157.56 0.242542 -45.6224
+-1158.25 0.241053 -45.519
+-1158.83 0.226316 -45.0553
+-1159.25 0.200083 -44.2687
+-1159.49 0.164284 -43.1999
+-1159.53 0.120934 -41.891
+-1159.34 0.0720311 -40.3836
+0 0.019437 -38.7177
+39.5335 0 -1.22822
+39.5671 0 -1.28931
+39.5968 0 -1.34839
+39.6222 0 -1.40467
+39.643 0 -1.45716
+39.6591 0 -1.50476
+39.6705 0 -1.54625
+39.6777 0 -1.58031
+39.6812 0 -1.60556
+39.6816 0 -1.62067
+39.6796 0 -1.62436
+39.6762 0 -1.6155
+39.672 0 -1.59323
+39.6676 0 -1.55697
+39.6631 0 -1.50655
+39.6582 0 -1.44218
+39.6517 0 -1.36446
+39.6414 0 -1.27434
+39.6239 0 -1.17297
+39.5943 0 -1.06164
+39.5457 0 -0.941711
+39.4697 0 -0.814568
+39.3563 0 -0.681803
+39.1951 0 -0.545451
+38.9763 0 -0.408334
+38.6933 0 -0.27434
+38.3461 0 -0.148402
+37.947 0 -0.0359027
+37.5422 0 0.0587026
+37.3336 0 0.133986
+38.4174 0 0.193713
+47.061 0 0.246515
+98.1654 0 0.292889
+378.209 0 0.260991
+1845.91 0 -0.224429
+9276.77 0 -2.40427
+45894.7 0 -8.33117
+222827 0 -9.90934
+1.06751e+06 0 91.6143
+5.08606e+06 0 882.116
+2.36279e+06 2.1991e+07 5722.1
+190559 1.96218e+07 4140.89
+-110660 1.00331e+07 -124.647
+32319.3 4.8628e+06 -1414.94
+5319.05 2.91756e+06 -820.657
+-15257.6 1.61033e+06 -54.6383
+4692.42 806007 404.641
+3355.05 472724 272.461
+-2817.88 268868 -15.4061
+152.803 128628 -15.8288
+991.707 71417.4 46.5927
+-442.469 42746 7.78713
+-129.323 19916.7 -8.46429
+236.394 10253 10.8677
+-47.7642 6693.23 6.87784
+-53.72 3190.22 -1.9305
+49.4205 1508.98 1.14938
+0.675713 1134.41 2.05457
+-11.937 633.704 -0.20308
+3.57937 394.082 0.144369
+-8.73241 439.905 1.04977
+15.1505 432.996 0.0630066
+-6.65137 800.901 -0.201078
+-62.9269 1447.02 2.5959
+71.3566 1988.48 1.09479
+44.4384 4299.32 -2.23489
+-303.315 8890.28 9.72263
+197.99 13769.6 12.9346
+519.698 27173.2 -11.3844
+-1336.28 57702.2 15.7285
+-34.5483 96460.8 62.8481
+3621.34 175815 -27.0447
+-4847.25 366259 -6.02773
+-5746.36 641862 401.816
+20899.7 1.10189e+06 547.721
+-9221.67 2.21017e+06 -130.549
+-44099.6 4.00722e+06 -1189.5
+155368 6.72852e+06 -1948.09
+-282705 1.4049e+07 25.1962
+-3.36046e+06 2.76655e+07 6221.57
+-7.20448e+06 3.11104e+07 8448.83
+-1.50617e+06 0 1301.37
+-311140 0 134.988
+-62907.8 0 -13.3016
+-12360 0 -11.037
+-2366.02 0 -2.90603
+-466.346 0 -0.144249
+-122.974 0 0.3643
+-64.9024 0 0.359726
+-56.2142 0 0.318094
+-55.556 0 0.303277
+-56.1282 0 0.292657
+-56.8547 0 0.261001
+-57.5412 0 0.195671
+-58.1324 0 0.0957666
+-58.608 0 -0.0323036
+-58.9668 0 -0.179479
+-59.2201 0 -0.337534
+-59.386 0 -0.500841
+-59.4852 0 -0.666568
+-59.5375 0 -0.833864
+-59.5598 0 -1.00267
+-59.5656 0 -1.17269
+-59.5648 0 -1.3427
+-59.5641 0 -1.51038
+-59.5678 0 -1.67251
+-59.5782 0 -1.82536
+-59.5962 0 -1.96516
+-59.6214 0 -2.08853
+-59.6529 0 -2.19281
+-59.6891 0 -2.27619
+-59.7279 0 -2.33773
+-59.7671 0 -2.37731
+-59.8044 0 -2.39548
+-59.8375 0 -2.39337
+-59.8644 0 -2.37253
+-59.8832 0 -2.3348
+-59.8925 0 -2.28223
+-59.8911 0 -2.21692
+-59.8784 0 -2.14099
+0 0 -2.05647
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+8.15014e+06 1.38411e+07 36243.6
+4.32639e+06 2.34393e+07 69550.4
+-110113 1.4476e+07 48305
+-210779 4.99099e+06 16002.5
+233734 2.50119e+06 1450.83
+-7735.5 1.86468e+06 -2341.51
+-54842.7 855001 -783.93
+36205.8 381616 1927.93
+10584.9 295268 1453.83
+-12482.4 152382 15.1337
+4633.83 54458.6 87.2438
+4538.62 42877.7 295.766
+-2163.24 26704.7 37.6189
+392.948 7736.46 5.66067
+1386.62 5705.12 98.0122
+-213.284 4805.82 49.8798
+-2.66893 1298.24 17.7462
+377.528 722.894 45.0471
+-46.4898 1028.09 40.4713
+-185.641 526.816 23.8022
+47.0323 215.206 19.5014
+-108.277 585.615 25.5277
+-595.312 1257.25 48.7152
+-98.8473 914.123 52.3617
+78.5778 1811.39 16.1778
+-1938.21 6338.05 63.1191
+-480.106 7442.43 122.087
+2469.66 10868.6 8.14367
+-6419.88 36163.9 87.4359
+-5569.52 56899 418.007
+16080.5 75046.9 95.5646
+-16415.3 209241 105.68
+-46942.5 397819 2166.21
+75717.7 519154 2653.37
+1251.31 1.17921e+06 -1175.24
+-322542 2.55241e+06 -2908.11
+303089 3.42131e+06 3134.69
+121874 6.9471e+06 24501
+-6.13271e+06 2.03084e+07 71339.6
+-1.15029e+07 3.30214e+07 102088
+0 1.96049e+07 53365.6
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.65437e+06 0 55568.1
+9.56095e+06 0 154427
+3.52938e+06 0 158728
+-623642 0 89518
+-166885 0 43888.2
+340030 0 24915.9
+-17861.5 0 7980.94
+-60708.6 0 1457.71
+58894 0 4040.59
+16865.4 0 3237.63
+-13806.6 0 582.354
+9699.47 0 483.658
+7965.47 0 813.565
+-1789.38 0 324.181
+1705.19 0 132.659
+2749.17 0 226.813
+265.435 0 166.003
+241.645 0 148.194
+332.757 0 189.12
+-204.458 0 143.612
+-505.828 0 90.4782
+-1185.76 0 162.641
+-930.003 0 216.275
+-1043.34 0 170.774
+-4224.81 0 189.004
+-2632.66 0 257.866
+1377.13 0 167.454
+-11638.3 0 501.041
+-12663.8 0 1145.67
+16940.6 0 638.851
+-26531.7 0 926.273
+-77708.2 0 4708.65
+82992.8 0 5546
+9720.07 0 2147.54
+-470262 0 12266.7
+245125 0 36580.2
+825978 0 62470.3
+-5.02358e+06 0 125687
+-1.34715e+07 0 224456
+-9.39572e+06 0 220712
+0 0 80315.3
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.5036e+06 -1.34619e+07 37616.5
+9.37352e+06 -2.27649e+07 120677
+3.50462e+06 -1.4002e+07 133136
+-575233 -4.7732e+06 63194.1
+-172773 -2.3636e+06 8009.95
+311970 -1.76439e+06 -4819.08
+-20639.5 -811472 -4157.22
+-55599.6 -366805 215.325
+56861.6 -282700 4149.54
+15311.4 -144130 2252.99
+-12806.7 -51941.7 -141.099
+9551.7 -41295.8 548.797
+7285.93 -25246.2 1032.56
+-1667.73 -7336.33 342.858
+1878.94 -5635.67 81.5461
+2604.04 -4603.21 240.783
+182.187 -1221.73 210.491
+303.288 -738.318 205.443
+406.68 -989.803 265.703
+-171.228 -497.276 215.494
+-529.006 -220.446 154.111
+-1237.91 -548.162 200.286
+-953.202 -1212.63 254.847
+-880.729 -931.013 230.914
+-4018.53 -1695.26 285.918
+-2904.15 -6054.76 320.443
+1184.63 -7323.28 112.298
+-10722 -10250.7 499.121
+-12479.7 -34085 1404.44
+15656.9 -54611.7 713.637
+-24244.8 -71208.3 -13.8746
+-75040.9 -197166 3404.38
+75849.3 -379605 5600.98
+14790.4 -496930 145.688
+-429471 -1.11459e+06 -5216.86
+252375 -2.40641e+06 -5715.41
+754443 -3.2229e+06 13102.6
+-4.99108e+06 -6.63439e+06 94438.2
+-1.32074e+07 -1.963e+07 198645
+-9.18272e+06 -3.20587e+07 181827
+0 -1.90649e+07 57714.8
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.93735e+06 -2.13906e+07 27668.1
+4.20251e+06 -1.90034e+07 42900.7
+-112270 -9.65671e+06 17749.9
+-211378 -4.6572e+06 -889.357
+218929 -2.79231e+06 -147.404
+-8184.37 -1.54222e+06 2605.59
+-50163.5 -773920 3639.17
+34981 -453693 3670.97
+9162.2 -256854 1427.41
+-11780.1 -123026 -145.953
+4729.31 -68708.6 344.858
+4126.09 -40955.1 558.313
+-2108.49 -19066.1 92.1746
+503.534 -9944.16 1.44978
+1325.21 -6461.96 102.415
+-225.948 -3052.6 50.253
+15.669 -1470.86 25.2775
+365.318 -1105.38 62.504
+-34.3193 -606.448 56.7369
+-166.218 -381.816 40.2233
+26.9188 -432.895 38.7748
+-111.693 -419.057 35.0362
+-570.167 -763.639 58.2088
+-114.655 -1405.76 71.611
+102.854 -1929.94 33.2724
+-1864.32 -4098.47 73.9378
+-642.281 -8553.62 130.945
+2410.62 -13294.6 0.0491902
+-5851.41 -25900.3 164.827
+-5733.41 -55078.9 766.046
+15152.5 -92421.8 422.276
+-14361.4 -167432 -113.163
+-45381.9 -348554 2136.6
+69117.4 -613785 5010.47
+2654.8 -1.05415e+06 4843.95
+-300688 -2.10958e+06 3602.3
+303577 -3.8238e+06 -225.72
+123649 -6.429e+06 -960.057
+-5.95742e+06 -1.35046e+07 27036.7
+-1.12007e+07 -2.67778e+07 64565.7
+0 -3.02542e+07 41935.2
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+40.4432 -0.00249357 -1.22815
+40.4404 -0.02802 -1.25847
+40.4317 -0.0556422 -1.28404
+40.4167 -0.0845795 -1.30506
+40.3951 -0.113798 -1.32184
+40.3672 -0.142052 -1.33478
+40.3332 -0.167921 -1.34434
+40.2939 -0.189861 -1.35107
+40.2501 -0.206243 -1.35554
+40.2032 -0.215409 -1.35834
+40.1546 -0.215734 -1.36002
+40.1059 -0.205687 -1.36113
+40.0586 -0.183902 -1.36209
+40.0142 -0.149249 -1.36326
+39.9733 -0.100903 -1.36481
+39.9363 -0.0384143 -1.36668
+39.902 0.0382206 -1.36847
+39.8685 0.128491 -1.36929
+39.8319 0.231297 -1.36769
+39.7869 0.344877 -1.36146
+39.7261 0.466725 -1.34762
+39.6405 0.593499 -1.32255
+39.52 0.720916 -1.28222
+39.3537 0.843641 -1.22276
+39.1314 0.955148 -1.14117
+38.8456 1.04756 -1.03607
+38.4942 1.11128 -0.908329
+38.0865 1.13296 -0.761131
+37.6635 1.08086 -0.599213
+37.4178 0.806836 -0.427117
+38.4156 -0.557177 -0.246911
+46.7867 -8.06668 -0.0579152
+96.7431 -49.7941 0.130611
+371.259 -274.489 0.234207
+1811.11 -1439.95 -0.125826
+9099.41 -7288.68 -2.02025
+44982.5 -35885.4 -6.04455
+218114 -173146 4.32033
+1.04309e+06 -825053 168.349
+4.95904e+06 -3.91632e+06 1253.97
+2.29543e+06 -1.87287e+07 7406.57
+180684 -1.68904e+07 5890.93
+-108721 -9.36959e+06 2162.84
+31051.1 -4.80017e+06 1788.59
+5481.39 -2.76961e+06 2044.38
+-14120.1 -1.52411e+06 1428.21
+4570.05 -792992 786.324
+2993.37 -452113 268.405
+-2702.99 -251161 -11.8033
+217.004 -126011 49.1593
+921.192 -69462.6 96.4509
+-437.162 -39603.3 14.3417
+-102.482 -19397.2 -12.0603
+224.933 -10274.2 13.5133
+-52.8546 -6185.87 8.5605
+-47.3499 -3058.26 -1.78237
+48.2748 -1567.76 2.42025
+-1.88864 -1056.27 3.11019
+-10.7028 -597.872 0.0332309
+4.79692 -397.594 0.422018
+-9.88694 -418.727 1.56456
+13.6284 -442.81 0.300984
+-3.07089 -747.133 -0.00563062
+-61.4355 -1348.68 3.88559
+62.9668 -2055.99 2.7431
+51.7571 -4087.69 -1.80109
+-289.035 -8215.26 12.1736
+161.151 -13748.1 16.2197
+516.664 -26252.1 -15.173
+-1241.01 -53332.8 27.3602
+-131.191 -93599.4 130.539
+3474.29 -171124 59.8938
+-4329.96 -340760 4.22142
+-5620.89 -612500 407.384
+19269.3 -1.07959e+06 1099.15
+-9334.71 -2.08311e+06 1999
+-42154.2 -3.79506e+06 2889.25
+152684 -6.62828e+06 2492.82
+-268429 -1.30865e+07 3071.41
+-3.26428e+06 -2.37845e+07 8727.67
+-7.0239e+06 -2.64974e+07 11267
+-1.47164e+06 -5.55298e+06 2013.58
+-304531 -1.16728e+06 305.267
+-61644.4 -242925 24.9498
+-12118.5 -49534.2 -2.71675
+-2319.64 -9800.85 -0.877905
+-457.312 -1863 0.531248
+-121.191 -336.383 0.625494
+-64.6178 -56.5852 0.372124
+-56.3088 -8.09577 0.104913
+-55.7889 -0.0807788 -0.135824
+-56.426 1.29889 -0.369192
+-57.1813 1.62521 -0.608942
+-57.876 1.74534 -0.854926
+-58.4654 1.78234 -1.09719
+-58.9362 1.76042 -1.32189
+-59.2908 1.69141 -1.51632
+-59.541 1.58486 -1.67217
+-59.7042 1.44905 -1.7867
+-59.7999 1.29135 -1.86224
+-59.8474 1.11829 -1.90459
+-59.8647 0.935807 -1.92124
+-59.8668 0.749264 -1.91977
+-59.8663 0.56353 -1.90682
+-59.8721 0.382989 -1.88752
+-59.8907 0.211543 -1.86551
+-59.9255 0.0525906 -1.84312
+-59.9779 -0.0909921 -1.82178
+-60.0472 -0.216884 -1.80231
+-60.1315 -0.323347 -1.78519
+-60.2277 -0.409243 -1.77075
+-60.3322 -0.474044 -1.75918
+-60.4411 -0.517824 -1.75053
+-60.5507 -0.541229 -1.7447
+-60.6572 -0.545433 -1.74139
+-60.7576 -0.532075 -1.74011
+-60.849 -0.503176 -1.74022
+-60.9293 -0.461048 -1.7409
+-60.9968 -0.408185 -1.74121
+-61.0505 -0.347129 -1.74015
+0 -0.280331 -1.73664
+778.947 -0.0156139 -23.2495
+778.896 -0.540482 -23.8365
+778.731 -1.11043 -24.3337
+778.443 -1.70916 -24.7452
+778.029 -2.31532 -25.0769
+777.49 -2.90319 -25.3368
+776.832 -3.44354 -25.534
+776.07 -3.90445 -25.6791
+775.223 -4.2523 -25.7832
+774.315 -4.45291 -25.8576
+773.378 -4.47286 -25.9135
+772.444 -4.2809 -25.9609
+771.547 -3.8495 -26.0084
+770.718 -3.15639 -26.0626
+769.981 -2.18607 -26.1265
+769.348 -0.931381 -26.1988
+768.815 0.605126 -26.2712
+768.357 2.40976 -26.3266
+767.922 4.4564 -26.3358
+767.428 6.70518 -26.2559
+766.762 9.10128 -26.0292
+765.779 11.5736 -25.5848
+764.309 14.0334 -24.8448
+762.168 16.3727 -23.7334
+759.18 18.4625 -22.1911
+755.208 20.1503 -20.1891
+750.202 21.2551 -17.7412
+744.282 21.5487 -14.9061
+737.921 20.6457 -11.774
+732.723 17.3266 -8.43546
+735.486 5.64397 -4.93758
+779.644 -45.9327 -1.25019
+1031.93 -298.589 2.68784
+2286.84 -1528.64 6.64681
+8092.82 -7247.73 9.1605
+33162.7 -32363.4 6.49172
+133338 -136075 -0.0207322
+496212 -536077 56.5547
+1.62434e+06 -1.95342e+06 570.655
+4.06967e+06 -6.3625e+06 2940.88
+1.90754e+06 -1.65689e+07 9496.2
+228477 -1.52138e+07 8915.47
+-48466.3 -9.09516e+06 5202.73
+18489.7 -4.86971e+06 3506.75
+-143.057 -2.75298e+06 2630.67
+-8539.04 -1.51668e+06 1623.38
+3395.77 -805175 870.243
+1402.17 -450133 361.42
+-1715.34 -248066 109.462
+304.155 -128082 103.233
+499.337 -69689.8 92.0932
+-313.259 -38794 22.1089
+-28.8772 -19680.1 2.50703
+130.034 -10435.5 13.9169
+-48.7309 -6008.41 6.88835
+-24.0746 -3083.19 -0.0734051
+29.3657 -1621.99 2.06101
+-5.93464 -1021.46 1.63451
+-5.79115 -598.013 -0.316935
+5.08583 -408.479 0.0239142
+-6.73595 -407.012 0.689829
+9.02312 -458.628 0.0406337
+5.2539 -743.413 -0.284766
+-36.4978 -1307.56 2.1635
+34.3927 -2127.83 2.50087
+54.4931 -4108.2 0.273463
+-167.961 -7994.65 9.96794
+58.4702 -13977.6 17.973
+381.526 -26573.8 4.36818
+-683.919 -52273.9 36.3488
+-304.125 -94023.5 128.607
+2232.55 -173731 141.219
+-2108.06 -336455 171.006
+-4295.33 -610345 540.37
+11691.8 -1.09595e+06 1245.49
+-1133.01 -2.0717e+06 2319.79
+-25904.3 -3.77319e+06 3785.05
+66827.3 -6.7247e+06 5052.24
+-332795 -1.26905e+07 7556.7
+-2.71269e+06 -2.14085e+07 13139.4
+-5.76792e+06 -2.34461e+07 14239.4
+-2.29329e+06 -9.0292e+06 4560.89
+-693406 -2.76768e+06 957.246
+-182927 -753551 135.806
+-44272.4 -188231 23.2753
+-10481.9 -43607.5 19.8226
+-2959.88 -9393.19 18.2858
+-1423.78 -1876.21 12.8529
+-1140.21 -339.867 7.05697
+-1099.17 -44.6211 1.99499
+-1102.37 12.0294 -2.58005
+-1113.18 25.4073 -7.08871
+-1124.62 30.4404 -11.7433
+-1134.93 32.9496 -16.5118
+-1143.49 33.9745 -21.1936
+-1150.09 33.8365 -25.5217
+-1154.8 32.743 -29.2546
+-1157.85 30.8686 -32.2363
+-1159.56 28.3686 -34.4169
+-1160.26 25.3846 -35.8424
+-1160.28 22.0476 -36.625
+-1159.94 18.4795 -36.9085
+-1159.48 14.7935 -36.8388
+-1159.11 11.0944 -36.5435
+-1158.96 7.47762 -36.1223
+-1159.15 4.02883 -35.6461
+-1159.7 0.822924 -35.1609
+-1160.64 -2.07675 -34.6952
+-1161.95 -4.61915 -34.2657
+-1163.56 -6.76614 -33.883
+-1165.42 -8.49286 -33.5539
+-1167.45 -9.78779 -33.2826
+-1169.58 -10.6524 -33.0708
+-1171.73 -11.1002 -32.9168
+-1173.82 -11.1562 -32.8155
+-1175.8 -10.8545 -32.7578
+-1177.6 -10.2373 -32.7313
+-1179.19 -9.35262 -32.7206
+-1180.53 -8.25211 -32.7075
+-1181.6 -6.98835 -32.6725
+0 -5.61222 -32.5949
+13509.9 0.435771 -394.722
+13509.1 -8.88186 -404.941
+13506.4 -19.0377 -413.636
+13501.4 -29.7382 -420.882
+13494.2 -40.6018 -426.786
+13484.9 -51.171 -431.485
+13473.4 -60.9248 -435.145
+13460.1 -69.2936 -437.948
+13445.4 -75.6767 -440.092
+13429.5 -79.4646 -441.774
+13413.2 -80.0628 -443.187
+13397 -76.92 -444.508
+13381.6 -69.5565 -445.887
+13367.6 -57.5942 -447.433
+13355.5 -40.7855 -449.199
+13345.8 -19.0416 -451.152
+13338.7 7.54182 -453.145
+13333.9 38.6612 -454.867
+13330.9 73.7843 -455.804
+13328.8 112.133 -455.198
+13326 152.669 -452.037
+13320.7 194.08 -445.084
+13310.3 234.772 -432.972
+13292.3 272.86 -414.372
+13263.7 306.149 -388.22
+13222.6 332.114 -353.979
+13167.7 347.845 -311.837
+13100.5 349.888 -262.759
+13026.4 333.637 -208.276
+12959.4 290.353 -149.982
+12937.2 192.244 -88.7853
+13087.6 -79.4134 -24.1685
+13914.6 -1058.45 46.0823
+17449.9 -5046.42 124.804
+31460.3 -21287.6 211.982
+82931.8 -83910.1 300.85
+253783 -307058 393.837
+745112 -1.02766e+06 616.41
+1.86247e+06 -3.07136e+06 1583.08
+3.31144e+06 -7.8129e+06 4880.07
+1.72592e+06 -1.49861e+07 11427.2
+343727 -1.38346e+07 11756.8
+6706.46 -8.76069e+06 8019.38
+12584.3 -4.87778e+06 5192.48
+-284.794 -2.74171e+06 3420.77
+-5529.61 -1.51226e+06 2048.75
+1845.39 -812834 1136.11
+904.795 -449271 562.922
+-1021.93 -246187 254.153
+168.654 -129321 162.471
+313.566 -69863.8 110.588
+-183.029 -38304.6 43.3741
+-20.004 -19844.8 16.9542
+79.8064 -10538 16.5425
+-28.0823 -5902 8.6748
+-15.1735 -3096.61 2.30427
+17.5892 -1655.4 2.47025
+-3.429 -1000.84 1.704
+-3.76619 -597.731 0.224015
+2.748 -415.037 0.29561
+-4.1544 -400.214 0.689023
+5.30473 -468.169 0.354402
+2.50062 -740.712 0.375374
+-22.282 -1283.29 2.27907
+21.0883 -2172.02 3.20811
+30.565 -4118.39 3.46893
+-103.405 -7862.74 12.379
+38.2584 -14122.8 22.3831
+221.046 -26759.4 24.7099
+-429.25 -51635 64.9492
+-163.403 -94330.2 156.531
+1324.21 -175286 229.808
+-1358.01 -333846 375.842
+-2327.64 -609498 826.385
+7486.27 -1.10618e+06 1639.59
+-661.208 -2.06477e+06 2958.24
+-18286.5 -3.75792e+06 4962.34
+-11698.7 -6.73453e+06 7551.64
+-493625 -1.22125e+07 11720.4
+-2.45382e+06 -1.94531e+07 17319.3
+-4.69777e+06 -2.1207e+07 17038.5
+-2.63313e+06 -1.10965e+07 7464.21
+-1.04366e+06 -4.35833e+06 2547.15
+-350062 -1.44768e+06 1055.75
+-112716 -425864 675.655
+-43102 -113406 504.186
+-24906.8 -27707.7 357.419
+-20585.4 -6254.95 229.141
+-19679.4 -1235.57 124.119
+-19578.3 -61.2419 36.566
+-19671.4 268.032 -42.9783
+-19810.8 405.334 -121.888
+-19951.2 483.506 -203.365
+-20074.2 530.21 -286.588
+-20171.7 553.264 -367.996
+-20241.3 556.647 -442.986
+-20284.7 543.376 -507.44
+-20305.9 516.088 -558.724
+-20309.7 477.226 -596.026
+-20301.6 429.122 -620.166
+-20286.4 374.028 -633.091
+-20268.7 314.113 -637.289
+-20252.2 251.45 -635.282
+-20239.6 187.989 -629.283
+-20232.9 125.528 -621.032
+-20233.3 65.6937 -611.775
+-20241.2 9.91224 -602.333
+-20256.6 -40.6097 -593.219
+-20278.7 -84.9021 -584.746
+-20306.6 -122.243 -577.11
+-20339.2 -152.164 -570.444
+-20374.8 -174.449 -564.833
+-20412.3 -189.123 -560.314
+-20450.2 -196.438 -556.866
+-20487.2 -196.846 -554.406
+-20522.2 -190.97 -552.785
+-20554.1 -179.572 -551.791
+-20582.4 -163.513 -551.158
+-20606.2 -143.715 -550.573
+-20625.3 -121.12 -549.693
+0 -96.6401 -548.155
+233483 20.2405 -6659.09
+233471 -142.929 -6835.88
+233424 -321.41 -6987.01
+233339 -509.99 -7113.78
+233216 -701.96 -7218.1
+233053 -889.283 -7302.4
+232855 -1062.79 -7369.56
+232623 -1212.42 -7422.81
+232365 -1327.6 -7465.55
+232089 -1397.54 -7501.26
+231804 -1411.81 -7533.28
+231522 -1360.74 -7564.69
+231255 -1236.06 -7598.06
+231014 -1031.36 -7635.26
+230813 -742.721 -7677.13
+230660 -369.162 -7723.01
+230561 86.8701 -7770.19
+230520 619.106 -7813.14
+230532 1217.14 -7842.75
+230587 1866.21 -7845.73
+230666 2547.04 -7804.4
+230745 3235.82 -7697.21
+230789 3904.26 -7500.36
+230760 4519.7 -7190.62
+230615 5045.22 -6749.27
+230321 5439.59 -6166.45
+229855 5656.74 -5444.69
+229229 5644.17 -4599.9
+228514 5337.99 -3658.07
+227873 4647.42 -2646.94
+227654 3399.43 -1583.53
+228597 1130.79 -460.923
+232498 -3689.94 760.015
+244279 -16435.8 2146.25
+277991 -55446 3766.19
+371728 -178888 5636.58
+614945 -552293 7670.98
+1.16323e+06 -1.57876e+06 9746.12
+2.10355e+06 -4.01538e+06 12056.6
+2.86356e+06 -8.57764e+06 15441.9
+1.62967e+06 -1.37578e+07 19640.9
+470175 -1.26802e+07 18252.4
+84814 -8.37923e+06 12999.2
+28784.4 -4.82458e+06 8365.2
+7258.17 -2.72207e+06 5221.26
+-244.961 -1.50582e+06 3100.06
+2428.95 -816007 1769.53
+1315.44 -448388 962.916
+-186.817 -244814 506.052
+292.802 -129885 293.741
+297.859 -69916.8 175.371
+-44.1039 -37983.6 86.8025
+15.872 -19914.7 43.2944
+61.4386 -10590 27.8322
+-8.74915 -5835.29 15.1463
+-7.2671 -3099.82 6.88844
+9.51716 -1673.36 4.51722
+-3.81436 -988.2 2.80984
+-5.26919 -596.59 1.2788
+-2.23607 -418.299 1.0199
+-6.6516 -396.049 1.21582
+-2.00024 -473.098 1.20855
+-5.15184 -737.969 1.73196
+-20.9431 -1268.39 3.82689
+1.28481 -2195.77 6.16967
+-1.08608 -4118.35 9.80311
+-88.6767 -7779.89 21.3703
+-23.013 -14197.2 38.6162
+36.7672 -26833.2 61.5241
+-411.724 -51216.4 124.826
+-363.187 -94445.7 248.565
+214.282 -175982 417.744
+-1861.35 -331957 732.038
+-3204.39 -608494 1396.31
+232.233 -1.11035e+06 2562
+-10843.6 -2.05526e+06 4513.66
+-41230 -3.73035e+06 7667.24
+-122383 -6.65766e+06 12399.6
+-673837 -1.16671e+07 19474.4
+-2.32658e+06 -1.78086e+07 27669.3
+-4.08502e+06 -1.9458e+07 30298.6
+-2.9999e+06 -1.21898e+07 24496.1
+-1.65578e+06 -5.70895e+06 19509.2
+-877131 -2.23142e+06 15837.6
+-537255 -769691 12429.9
+-409961 -243665 9165.58
+-366212 -73455.8 6315.73
+-352033 -21383.7 4016.07
+-348086 -4942.91 2196.09
+-347846 1255.95 682.838
+-348999 4365.72 -699.756
+-350587 6308.52 -2074.95
+-352143 7617.1 -3493.18
+-353429 8467.38 -4937.57
+-354343 8939.85 -6345.86
+-354869 9085.88 -7639.06
+-355042 8946.72 -8747.18
+-354931 8560.26 -9625.76
+-354615 7963.89 -10261.5
+-354175 7195.44 -10668.9
+-353687 6293.17 -10881.4
+-353213 5295.25 -10941.8
+-352807 4238.97 -10893.6
+-352507 3159.98 -10775.1
+-352337 2091.52 -10616.4
+-352310 1063.75 -10439.4
+-352428 103.214 -10258.8
+-352685 -767.659 -10083.7
+-353067 -1530.88 -9919.95
+-353554 -2173.11 -9771.15
+-354123 -2685.75 -9639.84
+-354749 -3064.89 -9527.64
+-355407 -3311.02 -9435.34
+-356072 -3428.74 -9362.7
+-356723 -3426.23 -9308.41
+-357339 -3314.67 -9269.96
+-357902 -3107.66 -9243.76
+-358400 -2820.47 -9225.26
+-358821 -2469.37 -9209.07
+-359160 -2070.94 -9189.23
+0 -1641.3 -9159.43
+3.63159e+06 -866.973 -37275.6
+3.63242e+06 -1689.14 -38259.2
+3.63281e+06 -2545.7 -39023.8
+3.63269e+06 -3407.79 -39566.4
+3.63199e+06 -4240.39 -39889.5
+3.63067e+06 -5003.36 -40001.7
+3.62871e+06 -5652.63 -39918.4
+3.62612e+06 -6141.49 -39662.7
+3.62292e+06 -6421.91 -39267.4
+3.6192e+06 -6446.17 -38776.2
+3.61505e+06 -6168.43 -38245.5
+3.6106e+06 -5546.48 -37746
+3.60599e+06 -4543.47 -37363.8
+3.60139e+06 -3129.75 -37198.1
+3.59696e+06 -1284.58 -37357.3
+3.59286e+06 1001.98 -37948
+3.58924e+06 3727.24 -39058.7
+3.58617e+06 6873.82 -40737.5
+3.5837e+06 10407.3 -42964.2
+3.5818e+06 14273 -45624.1
+3.58037e+06 18392 -48487.1
+3.57921e+06 22654.3 -51201.6
+3.57807e+06 26907.5 -53311.1
+3.57668e+06 30939.4 -54296.5
+3.5748e+06 34446.6 -53642.3
+3.5724e+06 36985 -50912.8
+3.56987e+06 37888.3 -45808.7
+3.56841e+06 36139.2 -38169.3
+3.57059e+06 30162.8 -27885.5
+3.58135e+06 17486.3 -14716.8
+3.60939e+06 -5868.99 1949.26
+3.66967e+06 -46589.7 23298.7
+3.7876e+06 -116670 51117
+4.00619e+06 -239265 87481.7
+4.39682e+06 -461479 133950
+5.06816e+06 -879383 190059
+6.14555e+06 -1.67547e+06 251144
+7.64022e+06 -3.13756e+06 306307
+9.0839e+06 -5.5391e+06 338988
+9.06492e+06 -8.64558e+06 333391
+6.08444e+06 -1.08573e+07 286016
+2.99087e+06 -9.6487e+06 212968
+1.29015e+06 -6.72084e+06 141187
+574829 -4.13606e+06 87440.4
+258705 -2.42224e+06 52493.3
+118637 -1.37529e+06 30993.3
+61098.6 -763858 18030.4
+31123 -421413 10328.2
+14915.7 -230281 5847.36
+8108.52 -124006 3289.11
+4403.23 -66715.4 1830.48
+2043.84 -35893.6 1003.24
+1074.41 -19090 547.989
+594.979 -10188.7 300.959
+226.523 -5508.84 164.5
+70.2731 -2966.4 90.0891
+6.26153 -1622.12 50.6728
+-56.8039 -932.43 29.4307
+-88.7237 -569.106 18.2686
+-106.226 -403.972 13.411
+-130.206 -375.014 12.6794
+-148.568 -458.357 15.5027
+-189.34 -702.691 23.1679
+-268.473 -1198.67 38.9421
+-351.981 -2129.07 68.2069
+-563.674 -3937.1 122.288
+-1046.82 -7353.25 224.295
+-1683.44 -13666.4 411.632
+-3010.3 -25703.3 752.498
+-6168.92 -48426.3 1383.47
+-11116.9 -90190.5 2533.86
+-20401.3 -167980 4573.09
+-42348.7 -312335 8176.37
+-82704.5 -572337 14546.2
+-160966 -1.03971e+06 25637.3
+-351977 -1.87789e+06 44654
+-782524 -3.32345e+06 76979.6
+-1.7612e+06 -5.71863e+06 131000
+-4.09939e+06 -9.39283e+06 216182
+-8.36388e+06 -1.36396e+07 331868
+-1.24799e+07 -1.54662e+07 450255
+-1.25034e+07 -1.23016e+07 525929
+-1.05165e+07 -7.8199e+06 531663
+-8.47509e+06 -4.37186e+06 474203
+-7.0192e+06 -2.29707e+06 381118
+-6.12446e+06 -1.186e+06 280656
+-5.61321e+06 -613368 190922
+-5.33456e+06 -313583 119193
+-5.1907e+06 -149660 65530
+-5.12312e+06 -56042.3 26475
+-5.0973e+06 -1264.17 -2380.85
+-5.09279e+06 30685.2 -24870.7
+-5.09763e+06 48641.1 -43498.3
+-5.10505e+06 57827.2 -59311.9
+-5.11158e+06 61458.4 -72246.7
+-5.11575e+06 61545.5 -81703.7
+-5.11731e+06 59351.2 -87114.4
+-5.11665e+06 55672.5 -88317.7
+-5.11451e+06 51020.8 -85690
+-5.11169e+06 45736.8 -80068.4
+-5.10895e+06 40060 -72556.1
+-5.10697e+06 34171.1 -64299.8
+-5.10623e+06 28215.6 -56304.8
+-5.10708e+06 22316.6 -49319.9
+-5.1097e+06 16582.2 -43797.1
+-5.1141e+06 11108.4 -39910.9
+-5.12019e+06 5980.41 -37616.9
+-5.12776e+06 1273.32 -36724.5
+-5.13651e+06 -2948.96 -36967.9
+-5.14612e+06 -6634.36 -38061.2
+-5.15621e+06 -9743.73 -39735.1
+-5.16641e+06 -12251.8 -41756.3
+-5.17638e+06 -14148 -43933
+-5.18577e+06 -15436.4 -46113.6
+-5.19432e+06 -16135.9 -48181.3
+-5.20181e+06 -16279.1 -50048.8
+-5.20805e+06 -15911.2 -51652.4
+-5.21295e+06 -15087.7 -52946.5
+-5.21645e+06 -13872.1 -53898.6
+-5.21855e+06 -12333.1 -54485
+0 -10540.8 -54688.8
+7.55148e+06 -3616.56 -69062.3
+7.55509e+06 -6503.59 -70925
+7.55886e+06 -9491.82 -72210.8
+7.56266e+06 -12475.7 -72878.6
+7.56634e+06 -15330.3 -72906.2
+7.56973e+06 -17914.5 -72295
+7.57267e+06 -20075.4 -71076.6
+7.57498e+06 -21653 -69317.9
+7.57649e+06 -22485.7 -67127.9
+7.57705e+06 -22416.3 -64662.2
+7.57651e+06 -21298.7 -62127.6
+7.57478e+06 -19005 -59782.3
+7.57175e+06 -15432.2 -57933.8
+7.56737e+06 -10509.6 -56928.6
+7.5616e+06 -4205.83 -57132.5
+7.55445e+06 3465.06 -58898
+7.54593e+06 12436.6 -62517
+7.5361e+06 22583.7 -68158.4
+7.52503e+06 33716.5 -75796.8
+7.51281e+06 45572.4 -85138.2
+7.49955e+06 57807.5 -95558.3
+7.48544e+06 69982.5 -106068
+7.47069e+06 81542.1 -115324
+7.45566e+06 91780 -121696
+7.44094e+06 99780.5 -123389
+7.42746e+06 104323 -118605
+7.41677e+06 103728 -105695
+7.41139e+06 95620.1 -83249.9
+7.41531e+06 76557 -50052.8
+7.43479e+06 41467 -4892.3
+7.47934e+06 -17266.6 53718.2
+7.56308e+06 -111398 127750
+7.70644e+06 -259790 219559
+7.9374e+06 -494008 331199
+8.28966e+06 -867948 462846
+8.78878e+06 -1.47052e+06 610020
+9.40658e+06 -2.43011e+06 759619
+9.95859e+06 -3.87407e+06 886187
+9.97036e+06 -5.77524e+06 952993
+8.74266e+06 -7.6586e+06 925007
+6.10797e+06 -8.44489e+06 795062
+3.53763e+06 -7.25452e+06 604370
+1.86027e+06 -5.16745e+06 416850
+951540 -3.30825e+06 270331
+481273 -2.00231e+06 168885
+243636 -1.16783e+06 102699
+125641 -663412 61021
+64950 -370686 35504.7
+33368 -204254 20282.6
+17423.1 -111113 11412.2
+9097.72 -60047.4 6341.62
+4626.83 -32315.5 3489.35
+2351.64 -17293.9 1908.04
+1165.24 -9259.3 1040.78
+504.484 -4986.24 567.951
+160.427 -2697.17 311.669
+-20.9235 -1481.98 173.767
+-130.689 -846.124 100.241
+-196.049 -518.101 62.3135
+-240.924 -369.339 45.2519
+-284.169 -341.22 42.2707
+-334.65 -419.534 52.0508
+-415.476 -639.631 78.3771
+-555.833 -1088.59 131.544
+-793.537 -1945.65 232.244
+-1251.06 -3579.28 420.223
+-2131.26 -6658.49 769.844
+-3723.16 -12421.4 1416.65
+-6796.61 -23279.6 2607.28
+-12833.7 -43605.2 4786.32
+-24101.7 -81188.8 8731.97
+-45775 -150497 15776.5
+-88721.7 -277046 28163.3
+-171304 -503555 49557.4
+-332294 -903167 85741.6
+-657156 -1.5954e+06 145610
+-1.30123e+06 -2.75079e+06 242402
+-2.55082e+06 -4.58542e+06 394139
+-4.87228e+06 -7.25255e+06 618498
+-8.45562e+06 -1.03175e+07 910835
+-1.21484e+07 -1.21058e+07 1.20993e+06
+-1.38645e+07 -1.09456e+07 1.41077e+06
+-1.38517e+07 -8.16653e+06 1.44681e+06
+-1.31003e+07 -5.39616e+06 1.33223e+06
+-1.22695e+07 -3.33048e+06 1.12633e+06
+-1.16072e+07 -1.98724e+06 889307
+-1.11458e+07 -1.16144e+06 661315
+-1.08475e+07 -657099 461617
+-1.06659e+07 -343476 295355
+-1.05631e+07 -144174 160290
+-1.0512e+07 -15941.8 51450
+-1.04936e+07 66391.8 -36072.7
+-1.04951e+07 118223 -105731
+-1.05083e+07 149372 -159236
+-1.05278e+07 166239 -197069
+-1.05505e+07 173036 -219365
+-1.05744e+07 172560 -226724
+-1.05987e+07 166702 -220686
+-1.06228e+07 156795 -203782
+-1.06465e+07 143834 -179256
+-1.06695e+07 128608 -150612
+-1.0692e+07 111783 -121167
+-1.07136e+07 93939.7 -93687.5
+-1.07342e+07 75604.1 -70190.2
+-1.07538e+07 57252.1 -51883.3
+-1.07719e+07 39316.1 -39234.6
+-1.07885e+07 22185 -32113.1
+-1.08031e+07 6202.19 -29962.4
+-1.08157e+07 -8337.36 -31970.2
+-1.08259e+07 -21190.7 -37210.9
+-1.08337e+07 -32170.2 -44750.3
+-1.0839e+07 -41146.1 -53714.5
+-1.08417e+07 -48048.1 -63328.7
+-1.0842e+07 -52864.6 -72936.8
+-1.08399e+07 -55640.8 -82007.6
+-1.08356e+07 -56474.7 -90133
+-1.08295e+07 -55511 -97021.4
+-1.08218e+07 -52933.5 -102486
+-1.08128e+07 -48956.7 -106428
+-1.0803e+07 -43815.3 -108824
+0 -37753.5 -109708
+1.15058e+07 -7045.92 -102812
+1.15101e+07 -12498.7 -105694
+1.15142e+07 -18137.4 -107585
+1.15178e+07 -23759.8 -108393
+1.15209e+07 -29128.5 -108063
+1.15232e+07 -33976.8 -106584
+1.15245e+07 -38017.1 -104003
+1.15246e+07 -40950.2 -100437
+1.15235e+07 -42476.4 -96083
+1.1521e+07 -42308 -91228.6
+1.15172e+07 -40182.5 -86258.3
+1.1512e+07 -35876.9 -81653.8
+1.15056e+07 -29222.1 -77986.7
+1.14981e+07 -20116.3 -75898.7
+1.14898e+07 -8538.51 -76065.1
+1.1481e+07 5439.63 -79136.5
+1.14722e+07 21643.3 -85656.5
+1.14636e+07 39785.1 -95955.9
+1.14558e+07 59456.9 -110030
+1.14493e+07 80122 -127411
+1.14445e+07 101106 -147058
+1.14419e+07 121584 -167279
+1.14418e+07 140560 -185733
+1.14448e+07 156833 -199501
+1.1451e+07 168934 -205260
+1.14609e+07 175021 -199515
+1.14749e+07 172712 -178855
+1.14934e+07 158810 -140130
+1.15175e+07 128901 -80485.1
+1.15482e+07 76733.4 2791.81
+1.15875e+07 -6716.78 112520
+1.16376e+07 -134735 251766
+1.17006e+07 -327339 423531
+1.17759e+07 -615205 629586
+1.18538e+07 -1.04474e+06 868013
+1.18981e+07 -1.68031e+06 1.12898e+06
+1.18147e+07 -2.59088e+06 1.38873e+06
+1.14088e+07 -3.7957e+06 1.60389e+06
+1.03843e+07 -5.14813e+06 1.71327e+06
+8.50912e+06 -6.20991e+06 1.65901e+06
+6.01245e+06 -6.34407e+06 1.43002e+06
+3.74863e+06 -5.30724e+06 1.09693e+06
+2.16651e+06 -3.81087e+06 767471
+1.20409e+06 -2.49489e+06 505604
+653936 -1.54589e+06 320272
+350656 -921251 196868
+187113 -533098 117914
+99308 -301856 69019.3
+52404.2 -167966 39601.6
+27606 -92160.1 22349.1
+14466.5 -50089 12447.6
+7481.71 -27048.3 6864.2
+3801.93 -14537.3 3760.18
+1853.9 -7806.9 2053.16
+807.309 -4206.39 1121.64
+246.602 -2281.07 616.285
+-58.4691 -1256.56 343.749
+-233.106 -716.856 198.335
+-339.285 -439.722 123.334
+-414.327 -314.142 89.4698
+-483.831 -290.021 83.4335
+-568.888 -357.044 102.704
+-699.804 -543.069 154.632
+-924.039 -922.813 259.369
+-1324.23 -1650.19 457.878
+-2068.48 -3027.29 828.182
+-3466.34 -5617.76 1515.37
+-6082.21 -10472.5 2785.34
+-11044.1 -19565.4 5119.98
+-20484.6 -36494.6 9379.45
+-38284.5 -67718.5 17067.7
+-71952.6 -124810 30752.6
+-135720 -227822 54699
+-255250 -410117 95751.1
+-478291 -726026 164495
+-892933 -1.25958e+06 276724
+-1.64787e+06 -2.12728e+06 454921
+-2.97671e+06 -3.4681e+06 728139
+-5.18227e+06 -5.3717e+06 1.12308e+06
+-8.37299e+06 -7.58882e+06 1.62923e+06
+-1.19162e+07 -9.14504e+06 2.14448e+06
+-1.45669e+07 -8.92217e+06 2.49367e+06
+-1.60033e+07 -7.31063e+06 2.56457e+06
+-1.65713e+07 -5.30311e+06 2.3797e+06
+-1.66959e+07 -3.55918e+06 2.03585e+06
+-1.66485e+07 -2.27701e+06 1.63142e+06
+-1.6556e+07 -1.40511e+06 1.2331e+06
+-1.64652e+07 -827224 874894
+-1.63885e+07 -443228 568619
+-1.63264e+07 -185053 314168
+-1.62763e+07 -9941.93 106456
+-1.62355e+07 108847 -60405.9
+-1.62018e+07 188461 -191011
+-1.61739e+07 240163 -288150
+-1.6151e+07 271445 -353433
+-1.61327e+07 287337 -388394
+-1.6119e+07 291278 -395495
+-1.61098e+07 285713 -378631
+-1.61054e+07 272485 -343066
+-1.61054e+07 253090 -294927
+-1.61099e+07 228821 -240507
+-1.61184e+07 200852 -185576
+-1.61304e+07 170276 -134864
+-1.61455e+07 138118 -91780.4
+-1.61629e+07 105343 -58353.5
+-1.61819e+07 72847.3 -35352.7
+-1.62017e+07 41451.7 -22525
+-1.62216e+07 11890 -18878.2
+-1.62409e+07 -15201.3 -22959
+-1.62588e+07 -39293.3 -33091
+-1.6275e+07 -59973.6 -47556.5
+-1.62888e+07 -76950.9 -64722.4
+-1.62999e+07 -90057.9 -83118.9
+-1.63082e+07 -99248.7 -101485
+-1.63135e+07 -104593 -118789
+-1.63158e+07 -106267 -134235
+-1.63153e+07 -104540 -147255
+-1.63122e+07 -99756.2 -157491
+-1.63067e+07 -92322.7 -164768
+-1.62993e+07 -82684.4 -169064
+0 -71306.4 -170484
+1.44803e+07 -8832.25 -132863
+1.44811e+07 -15592.8 -136761
+1.44797e+07 -22582 -139309
+1.44757e+07 -29547.3 -140373
+1.44689e+07 -36192.9 -139869
+1.44594e+07 -42188.2 -137773
+1.44472e+07 -47177.2 -134143
+1.44324e+07 -50791.5 -129135
+1.44154e+07 -52663.8 -123020
+1.43968e+07 -52445.1 -116194
+1.43772e+07 -49821.2 -109190
+1.43574e+07 -44531.4 -102677
+1.43386e+07 -36386.6 -97449
+1.43217e+07 -25286.7 -94399.3
+1.43081e+07 -11235.9 -94468.7
+1.42991e+07 5642.78 -98568.4
+1.4296e+07 25097.5 -107469
+1.43001e+07 46738.6 -121661
+1.43125e+07 70033.6 -141188
+1.43343e+07 94302.6 -165476
+1.43662e+07 118716 -193178
+1.44087e+07 142287 -222068
+1.44615e+07 163863 -249011
+1.45243e+07 182102 -270045
+1.45957e+07 195425 -280567
+1.46739e+07 201930 -275619
+1.4756e+07 199246 -250199
+1.48382e+07 184285 -199502
+1.49154e+07 152874 -119002
+1.49811e+07 99189.8 -4339.94
+1.50267e+07 14961.7 148899
+1.50404e+07 -111688 345235
+1.50059e+07 -297896 588762
+1.48978e+07 -568178 881521
+1.4675e+07 -955960 1.2202e+06
+1.42688e+07 -1.50039e+06 1.59046e+06
+1.35703e+07 -2.22865e+06 1.95881e+06
+1.24314e+07 -3.1106e+06 2.26468e+06
+1.07181e+07 -3.9884e+06 2.42264e+06
+8.453e+06 -4.54228e+06 2.35133e+06
+5.97976e+06 -4.42839e+06 2.03428e+06
+3.85875e+06 -3.63473e+06 1.56929e+06
+2.3412e+06 -2.61503e+06 1.10624e+06
+1.36532e+06 -1.73319e+06 734824
+774366 -1.09055e+06 469130
+430568 -660023 290348
+236063 -387261 174912
+127968 -221695 102885
+68722.8 -124415 59280
+36626.9 -68738.4 33574.3
+19350.8 -37549.5 18758.2
+10088.1 -20350.8 10373.6
+5142.13 -10974 5697.15
+2499.55 -5908.44 3117.88
+1080.19 -3188.43 1706.91
+313.306 -1732.28 939.77
+-107.671 -955.951 525.157
+-347.445 -545.784 303.535
+-494.08 -335.273 189.055
+-598.489 -239.896 137.27
+-694.786 -221.554 127.972
+-813.317 -272.775 157.332
+-994.154 -414.274 236.471
+-1302.36 -702.945 395.901
+-1854.67 -1255.79 697.613
+-2871.91 -2299.23 1259.31
+-4767.11 -4258.38 2299.15
+-8312.44 -7925.27 4216.04
+-14971.7 -14767.6 7729.96
+-27475.9 -27455.1 14119.7
+-50848 -50761.5 25610.3
+-94348.8 -93087.9 45979.1
+-174770 -168769 81447.8
+-321734 -301298 141896
+-586741 -527728 242413
+-1.05672e+06 -903383 405148
+-1.86893e+06 -1.50345e+06 661003
+-3.22174e+06 -2.41619e+06 1.04907e+06
+-5.35157e+06 -3.70035e+06 1.60429e+06
+-8.36781e+06 -5.22066e+06 2.31007e+06
+-1.19115e+07 -6.41356e+06 3.0243e+06
+-1.51443e+07 -6.55884e+06 3.50447e+06
+-1.75635e+07 -5.69092e+06 3.59611e+06
+-1.91519e+07 -4.3644e+06 3.33243e+06
+-2.01172e+07 -3.07326e+06 2.84865e+06
+-2.06782e+07 -2.04164e+06 2.28085e+06
+-2.099e+07 -1.29382e+06 1.72084e+06
+-2.11466e+07 -773384 1.21572e+06
+-2.12024e+07 -414469 782582
+-2.11901e+07 -165821 422371
+-2.11305e+07 7561.81 129095
+-2.10383e+07 128743 -104744
+-2.09246e+07 212898 -285403
+-2.0798e+07 270033 -417190
+-2.06655e+07 306740 -503155
+-2.05328e+07 327391 -546382
+-2.04046e+07 334966 -551141
+-2.02848e+07 331623 -523439
+-2.01764e+07 319073 -470876
+-2.00815e+07 298797 -401976
+-2.00017e+07 272172 -325302
+-1.99379e+07 240523 -248599
+-1.98904e+07 205148 -178163
+-1.98588e+07 167311 -118499
+-1.98424e+07 128237 -72266.8
+-1.98401e+07 89088.1 -40451.9
+-1.98505e+07 50946.7 -22676.1
+-1.98717e+07 14792.6 -17572
+-1.9902e+07 -18516.2 -23148.2
+-1.99395e+07 -48261.5 -37103.7
+-1.9982e+07 -73878.1 -57071.6
+-2.00278e+07 -94962.4 -80790
+-2.00749e+07 -111275 -106213
+-2.01217e+07 -122738 -131576
+-2.01666e+07 -129425 -155432
+-2.02083e+07 -131548 -176658
+-2.02458e+07 -129438 -194453
+-2.02782e+07 -123528 -208313
+-2.03049e+07 -114324 -217996
+-2.03256e+07 -102383 -223482
+0 -88287.6 -224929
+1.62544e+07 -7373.5 -155672
+1.62491e+07 -12988.3 -160426
+1.62384e+07 -18792.1 -163584
+1.62218e+07 -24574.2 -164983
+1.61994e+07 -30088.4 -164515
+1.61713e+07 -35059.7 -162151
+1.61381e+07 -39193 -157954
+1.61004e+07 -42183.3 -152105
+1.60594e+07 -43728.4 -144920
+1.60166e+07 -43542.5 -136867
+1.59737e+07 -41371 -128574
+1.59327e+07 -37006.1 -120831
+1.58959e+07 -30302.4 -114580
+1.58658e+07 -21190.7 -110878
+1.5845e+07 -9691.23 -110848
+1.5836e+07 4076.33 -115579
+1.58415e+07 19885 -126005
+1.58637e+07 37395.7 -142740
+1.59044e+07 56155.5 -165887
+1.59653e+07 75597.8 -194833
+1.6047e+07 95043.8 -228074
+1.61496e+07 113704 -263075
+1.62723e+07 130674 -296229
+1.64131e+07 144928 -322931
+1.65687e+07 155286 -337768
+1.67344e+07 160362 -334828
+1.6904e+07 158463 -308026
+1.70691e+07 147409 -251370
+1.7219e+07 124264 -159054
+1.73398e+07 84936.1 -25339.9
+1.74139e+07 23632.6 155659
+1.74178e+07 -67849.6 389985
+1.73197e+07 -200984 683146
+1.7076e+07 -391335 1.03814e+06
+1.66251e+07 -658416 1.45144e+06
+1.58828e+07 -1.02176e+06 1.90615e+06
+1.47448e+07 -1.48755e+06 2.36187e+06
+1.31136e+07 -2.02036e+06 2.74461e+06
+1.09681e+07 -2.50807e+06 2.94895e+06
+8.4655e+06 -2.76237e+06 2.87314e+06
+5.97942e+06 -2.62015e+06 2.49455e+06
+3.92161e+06 -2.12435e+06 1.93156e+06
+2.4404e+06 -1.5281e+06 1.36763e+06
+1.46275e+06 -1.01927e+06 913045
+851546 -647205 586008
+484352 -395577 364564
+270458 -234242 220684
+148776 -135123 130384
+80842.3 -76294.6 75425.8
+43466.9 -42357.4 42873.6
+23115.3 -23223.7 24032.5
+12111.4 -12621.3 13330.2
+6188.74 -6821.54 7341.03
+3004.28 -3679.42 4027.66
+1287.32 -1988.21 2210.18
+355.186 -1081.6 1219.57
+-158.88 -597.594 682.974
+-452.254 -341.492 395.577
+-632.347 -210.01 246.87
+-761.08 -150.438 179.5
+-879.882 -139.004 167.358
+-1026.11 -171.111 205.481
+-1248.3 -259.608 308.21
+-1625.57 -440.006 514.872
+-2299.94 -785.238 905.238
+-3535.71 -1435.76 1630.36
+-5826.53 -2655.48 2969.36
+-10094.2 -4935.2 5430.89
+-18058 -9179.09 9929.45
+-32892.1 -17026.5 18081.8
+-60384.9 -31395.1 32687.2
+-110965 -57366.2 58470
+-203054 -103514 103158
+-368304 -183711 178922
+-659531 -319409 304186
+-1.16155e+06 -541986 505742
+-2.00283e+06 -893667 820640
+-3.36266e+06 -1.42421e+06 1.29548e+06
+-5.45238e+06 -2.16866e+06 1.97165e+06
+-8.3978e+06 -3.06129e+06 2.82791e+06
+-1.1985e+07 -3.80792e+06 3.69016e+06
+-1.55849e+07 -4.00424e+06 4.26197e+06
+-1.8637e+07 -3.59309e+06 4.3567e+06
+-2.09239e+07 -2.84579e+06 4.01897e+06
+-2.24987e+07 -2.05921e+06 3.41729e+06
+-2.35197e+07 -1.39651e+06 2.71882e+06
+-2.41438e+07 -896985 2.0349e+06
+-2.44905e+07 -539239 1.4216e+06
+-2.46419e+07 -287389 898609
+-2.46539e+07 -110222 466296
+-2.45652e+07 14994.4 116808
+-2.44042e+07 103845 -159470
+-2.41922e+07 166762 -370701
+-2.39462e+07 210600 -522750
+-2.368e+07 239785 -619961
+-2.34055e+07 257167 -666617
+-2.31324e+07 264640 -668245
+-2.28692e+07 263575 -632232
+-2.26228e+07 255088 -567662
+-2.2399e+07 240202 -484564
+-2.22021e+07 219920 -392918
+-2.20354e+07 195258 -301696
+-2.19008e+07 167249 -218160
+-2.17991e+07 136931 -147488
+-2.17301e+07 105327 -92715
+-2.16927e+07 73427.3 -54942.6
+-2.1685e+07 42165.3 -33696
+-2.17042e+07 12392.7 -27355.6
+-2.17472e+07 -15138.7 -33579
+-2.18103e+07 -39796.5 -49663.3
+-2.18896e+07 -61079.8 -72827
+-2.1981e+07 -78628.5 -100408
+-2.20805e+07 -92225.1 -129994
+-2.21842e+07 -101792 -159501
+-2.22884e+07 -107383 -187211
+-2.23898e+07 -109172 -211795
+-2.24853e+07 -107434 -232297
+-2.25725e+07 -102530 -248115
+-2.26494e+07 -94882.6 -258962
+-2.27145e+07 -84959.5 -264812
+0 -73248 -265857
+1.71002e+07 -2866.27 -169652
+1.70892e+07 -5043.97 -174974
+1.707e+07 -7294.84 -178566
+1.70422e+07 -9536.89 -180248
+1.70058e+07 -11674.5 -179902
+1.69613e+07 -13601.1 -177494
+1.69095e+07 -15202 -173088
+1.68518e+07 -16359.5 -166880
+1.67898e+07 -16956.7 -159207
+1.67259e+07 -16883.5 -150573
+1.66626e+07 -16042.6 -141654
+1.66032e+07 -14355.1 -133303
+1.65509e+07 -11766.8 -126535
+1.65094e+07 -8253.72 -122496
+1.64824e+07 -3826.91 -122401
+1.64734e+07 1463.79 -127438
+1.64859e+07 7527 -138634
+1.6523e+07 14228.4 -156676
+1.65871e+07 21390.7 -181712
+1.66798e+07 28794 -213133
+1.68021e+07 36178 -249372
+1.69535e+07 43242.7 -287766
+1.71323e+07 49648.8 -324494
+1.73356e+07 55015.5 -354651
+1.75583e+07 58910.9 -372437
+1.7794e+07 60833.7 -371467
+1.80338e+07 60174.7 -345103
+1.82662e+07 56153.5 -286714
+1.84769e+07 47716.4 -189760
+1.86473e+07 33391 -47646.3
+1.87534e+07 11092.5 146512
+1.87639e+07 -22111.3 399893
+1.86371e+07 -70252.6 719206
+1.83178e+07 -138641 1.1085e+06
+1.77328e+07 -233619 1.56473e+06
+1.67916e+07 -360914 2.07005e+06
+1.5398e+07 -520788 2.58033e+06
+1.34894e+07 -698587 3.01348e+06
+1.11093e+07 -854401 3.25117e+06
+8.47999e+06 -926543 3.17792e+06
+5.9806e+06 -867657 2.76614e+06
+3.95086e+06 -699264 2.14649e+06
+2.48908e+06 -502762 1.5234e+06
+1.5133e+06 -336255 1.01996e+06
+893532 -214412 656799
+514748 -131676 410031
+290511 -78329 249063
+161198 -45360.9 147632
+88200.1 -25693.1 85663.5
+47676 -14300.2 48828.8
+25455.4 -7855.48 27440.6
+13376 -4275.41 15256.3
+6844.54 -2313.46 8419.75
+3319.63 -1249 4628.65
+1413.63 -675.396 2544.65
+375.992 -367.661 1406.58
+-197.765 -203.261 789.024
+-525.884 -116.213 457.754
+-727.794 -71.5117 286.12
+-872.463 -51.2576 208.282
+-1006.09 -47.3761 194.225
+-1170.46 -58.3115 238.233
+-1419.64 -88.4226 356.771
+-1841.67 -149.774 594.972
+-2594.3 -267.126 1044.25
+-3969.44 -488.088 1877.34
+-6511.04 -902.095 3412.74
+-11231.5 -1675.28 6229.24
+-20006.2 -3112.96 11364.4
+-36275.4 -5767.64 20646
+-66265.2 -10619.8 37226.6
+-121057 -19368.8 66403.9
+-219930 -34864.7 116799
+-395438 -61687.6 201916
+-700661 -106852 342079
+-1.21866e+06 -180523 566696
+-2.07271e+06 -296335 916317
+-3.43306e+06 -470449 1.44199e+06
+-5.50246e+06 -714652 2.1892e+06
+-8.41978e+06 -1.00943e+06 3.13417e+06
+-1.2043e+07 -1.26334e+06 4.08277e+06
+-1.58458e+07 -1.34594e+06 4.70462e+06
+-1.92512e+07 -1.22682e+06 4.79362e+06
+-2.1941e+07 -986278 4.40326e+06
+-2.38781e+07 -722660 3.72447e+06
+-2.51781e+07 -494702 2.94452e+06
+-2.59925e+07 -319631 2.18654e+06
+-2.64527e+07 -192552 1.51138e+06
+-2.66571e+07 -102252 939297
+-2.66758e+07 -38313.8 469382
+-2.65587e+07 7122.92 91918.9
+-2.63424e+07 39567.3 -204530
+-2.60546e+07 62743.3 -429623
+-2.57174e+07 79090.9 -590345
+-2.53487e+07 90163.6 -691861
+-2.49642e+07 96939 -739121
+-2.45772e+07 100052 -738282
+-2.41997e+07 99958.7 -697393
+-2.3842e+07 97034.7 -626241
+-2.35125e+07 91635.9 -535576
+-2.32184e+07 84123.5 -436056
+-2.29651e+07 74874.1 -337249
+-2.27562e+07 64278.2 -246882
+-2.25939e+07 52734.6 -170453
+-2.24787e+07 40641.9 -111178
+-2.24099e+07 28388.5 -70202.2
+-2.23852e+07 16342.5 -46996.3
+-2.24014e+07 4842.31 -39808.8
+-2.24541e+07 -5812.97 -46119
+-2.25384e+07 -15370.6 -63023.2
+-2.26488e+07 -23630 -87534.3
+-2.27794e+07 -30446.4 -116793
+-2.29241e+07 -35731.6 -148207
+-2.30773e+07 -39453 -179533
+-2.32333e+07 -41630.1 -208923
+-2.33868e+07 -42329.5 -234937
+-2.35334e+07 -41658.2 -256546
+-2.36689e+07 -39756.4 -273094
+-2.37902e+07 -36789.3 -284267
+-2.38946e+07 -32938.7 -290035
+0 -28394.4 -290603
+1.73395e+07 2866.28 -174335
+1.73263e+07 5043.97 -179856
+1.73037e+07 7294.83 -183605
+1.72714e+07 9536.89 -185397
+1.72295e+07 11674.5 -185112
+1.71785e+07 13601.1 -182712
+1.71195e+07 15202 -178266
+1.70538e+07 16359.5 -171969
+1.69836e+07 16956.7 -164168
+1.69114e+07 16883.5 -155374
+1.68403e+07 16042.6 -146280
+1.67736e+07 14355.1 -137756
+1.67153e+07 11766.8 -130839
+1.66694e+07 8253.72 -126701
+1.66398e+07 3826.91 -126585
+1.66308e+07 -1463.79 -131710
+1.6646e+07 -7527 -143130
+1.66887e+07 -14228.4 -161559
+1.67616e+07 -21390.6 -187161
+1.68665e+07 -28794 -219330
+1.7004e+07 -36178 -256490
+1.71738e+07 -43242.7 -295943
+1.73737e+07 -49648.8 -333813
+1.76004e+07 -55015.5 -365114
+1.78483e+07 -58910.9 -383941
+1.81102e+07 -60833.7 -383774
+1.83763e+07 -60174.7 -357816
+1.86343e+07 -56153.4 -299246
+1.88683e+07 -47716.4 -201294
+1.90581e+07 -33391 -57084.3
+1.91777e+07 -11092.5 140615
+1.9193e+07 22111.3 399398
+1.90587e+07 70252.6 726442
+1.87157e+07 138641 1.12625e+06
+1.80871e+07 233619 1.59606e+06
+1.70807e+07 360914 2.11786e+06
+1.5604e+07 520788 2.64641e+06
+1.36065e+07 698587 3.09694e+06
+1.11525e+07 854401 3.34671e+06
+8.48388e+06 926543 3.27546e+06
+5.97987e+06 867657 2.85365e+06
+3.95856e+06 699264 2.21595e+06
+2.50319e+06 502762 1.57386e+06
+1.52864e+06 336255 1.05475e+06
+906671 214412 679979
+524485 131676 425035
+297051 78329 258505
+165304 45360.9 153417
+90655.5 25693.1 89122.1
+49090.8 14300.2 50854.1
+26246 7855.48 28606.5
+13804.4 4275.41 15918.7
+7066.94 2313.46 8792.49
+3426.31 1249 4837.19
+1455.76 675.396 2661.16
+381.982 367.661 1471.95
+-212.272 203.261 826.219
+-552.377 116.213 479.631
+-761.839 71.5117 299.973
+-912.039 51.2576 218.464
+-1050.82 47.3761 203.734
+-1221.49 58.3115 249.806
+-1480.02 88.4226 373.881
+-1917.5 149.774 623.103
+-2696.99 267.126 1092.9
+-4119.86 488.088 1963.48
+-6747.02 902.095 3566.78
+-11621.2 1675.28 6505.46
+-20670.1 3112.96 11858.5
+-37421.9 5767.64 21524.5
+-68244.8 10619.8 38773
+-124427 19368.8 69089.3
+-225511 34864.7 121384
+-404292 61687.6 209584
+-713849 106852 354610
+-1.23658e+06 180523 586687
+-2.09402e+06 296335 947468
+-3.45382e+06 470449 1.48945e+06
+-5.51669e+06 714652 2.25954e+06
+-8.42619e+06 1.00943e+06 3.23318e+06
+-1.20622e+07 1.26334e+06 4.20955e+06
+-1.59297e+07 1.34594e+06 4.84674e+06
+-1.94484e+07 1.22682e+06 4.93226e+06
+-2.22696e+07 986278 4.52293e+06
+-2.43266e+07 722660 3.81756e+06
+-2.57197e+07 494702 3.01031e+06
+-2.65979e+07 319631 2.22822e+06
+-2.70959e+07 192552 1.53351e+06
+-2.73173e+07 102252 946428
+-2.7337e+07 38313.8 465443
+-2.72088e+07 -7122.92 80058
+-2.69721e+07 -39567.3 -221876
+-2.66568e+07 -62743.3 -450579
+-2.62863e+07 -79090.9 -613433
+-2.58801e+07 -90163.6 -715876
+-2.54551e+07 -96939 -763056
+-2.50259e+07 -100052 -761306
+-2.46058e+07 -99958.7 -718853
+-2.4206e+07 -97034.7 -645677
+-2.38365e+07 -91635.9 -552725
+-2.35052e+07 -84123.5 -450846
+-2.32185e+07 -74874.1 -349772
+-2.29809e+07 -64278.2 -257365
+-2.2795e+07 -52734.6 -179212
+-2.26617e+07 -40641.9 -118577
+-2.25804e+07 -28388.5 -76618.9
+-2.25489e+07 -16342.5 -52789.1
+-2.25636e+07 -4842.31 -45297.5
+-2.262e+07 5812.98 -51571.3
+-2.27124e+07 15370.6 -68649.1
+-2.28348e+07 23630 -93484.8
+-2.29806e+07 30446.4 -123163
+-2.31431e+07 35731.6 -155041
+-2.33156e+07 39453 -186829
+-2.34918e+07 41630.1 -216640
+-2.36659e+07 42329.5 -243006
+-2.38325e+07 41658.2 -264872
+-2.39871e+07 39756.4 -281570
+-2.41258e+07 36789.3 -292774
+-2.42457e+07 32938.7 -298454
+0 28394.4 -298817
+1.71002e+07 7373.49 -169652
+1.70892e+07 12988.3 -174974
+1.707e+07 18792.1 -178566
+1.70422e+07 24574.2 -180248
+1.70058e+07 30088.4 -179902
+1.69613e+07 35059.7 -177494
+1.69095e+07 39193 -173088
+1.68518e+07 42183.3 -166880
+1.67898e+07 43728.4 -159207
+1.67259e+07 43542.5 -150573
+1.66626e+07 41371 -141654
+1.66032e+07 37006.1 -133303
+1.65509e+07 30302.4 -126535
+1.65094e+07 21190.7 -122496
+1.64824e+07 9691.23 -122401
+1.64734e+07 -4076.33 -127438
+1.64859e+07 -19885 -138634
+1.6523e+07 -37395.7 -156676
+1.65871e+07 -56155.5 -181712
+1.66798e+07 -75597.8 -213133
+1.68021e+07 -95043.8 -249372
+1.69535e+07 -113704 -287766
+1.71323e+07 -130674 -324494
+1.73356e+07 -144928 -354651
+1.75583e+07 -155286 -372437
+1.7794e+07 -160362 -371467
+1.80338e+07 -158463 -345103
+1.82662e+07 -147409 -286714
+1.84769e+07 -124264 -189760
+1.86473e+07 -84936.1 -47646.3
+1.87534e+07 -23632.6 146512
+1.87639e+07 67849.6 399893
+1.86371e+07 200984 719206
+1.83178e+07 391335 1.1085e+06
+1.77328e+07 658416 1.56473e+06
+1.67916e+07 1.02176e+06 2.07005e+06
+1.5398e+07 1.48755e+06 2.58033e+06
+1.34894e+07 2.02036e+06 3.01348e+06
+1.11093e+07 2.50807e+06 3.25117e+06
+8.47999e+06 2.76237e+06 3.17792e+06
+5.9806e+06 2.62015e+06 2.76614e+06
+3.95086e+06 2.12435e+06 2.14649e+06
+2.48908e+06 1.5281e+06 1.5234e+06
+1.5133e+06 1.01927e+06 1.01996e+06
+893532 647205 656799
+514748 395577 410031
+290511 234242 249063
+161198 135123 147632
+88200.1 76294.6 85663.5
+47676 42357.4 48828.8
+25455.4 23223.7 27440.6
+13376 12621.3 15256.3
+6844.54 6821.54 8419.75
+3319.63 3679.42 4628.65
+1413.63 1988.21 2544.65
+375.992 1081.6 1406.58
+-197.765 597.594 789.024
+-525.884 341.492 457.754
+-727.794 210.01 286.12
+-872.463 150.438 208.282
+-1006.09 139.004 194.225
+-1170.46 171.111 238.233
+-1419.64 259.608 356.771
+-1841.67 440.006 594.972
+-2594.3 785.238 1044.25
+-3969.44 1435.76 1877.34
+-6511.04 2655.48 3412.74
+-11231.5 4935.2 6229.24
+-20006.2 9179.09 11364.4
+-36275.4 17026.5 20646
+-66265.2 31395.1 37226.6
+-121057 57366.2 66403.9
+-219930 103514 116799
+-395438 183711 201916
+-700661 319409 342079
+-1.21866e+06 541986 566696
+-2.07271e+06 893667 916317
+-3.43306e+06 1.42421e+06 1.44199e+06
+-5.50246e+06 2.16866e+06 2.1892e+06
+-8.41978e+06 3.06129e+06 3.13417e+06
+-1.2043e+07 3.80792e+06 4.08277e+06
+-1.58458e+07 4.00424e+06 4.70462e+06
+-1.92512e+07 3.59309e+06 4.79362e+06
+-2.1941e+07 2.84579e+06 4.40326e+06
+-2.38781e+07 2.05921e+06 3.72447e+06
+-2.51781e+07 1.39651e+06 2.94452e+06
+-2.59925e+07 896985 2.18654e+06
+-2.64527e+07 539239 1.51138e+06
+-2.66571e+07 287389 939297
+-2.66758e+07 110222 469382
+-2.65587e+07 -14994.4 91918.9
+-2.63424e+07 -103845 -204530
+-2.60546e+07 -166762 -429623
+-2.57174e+07 -210600 -590345
+-2.53487e+07 -239785 -691861
+-2.49642e+07 -257167 -739121
+-2.45772e+07 -264640 -738282
+-2.41997e+07 -263575 -697393
+-2.3842e+07 -255088 -626241
+-2.35125e+07 -240202 -535576
+-2.32184e+07 -219920 -436056
+-2.29651e+07 -195258 -337249
+-2.27562e+07 -167249 -246882
+-2.25939e+07 -136931 -170453
+-2.24787e+07 -105327 -111177
+-2.24099e+07 -73427.3 -70202.2
+-2.23852e+07 -42165.3 -46996.3
+-2.24014e+07 -12392.7 -39808.8
+-2.24541e+07 15138.7 -46119
+-2.25384e+07 39796.5 -63023.2
+-2.26488e+07 61079.8 -87534.3
+-2.27794e+07 78628.5 -116793
+-2.29241e+07 92225.1 -148207
+-2.30773e+07 101792 -179533
+-2.32333e+07 107383 -208923
+-2.33868e+07 109172 -234937
+-2.35334e+07 107434 -256546
+-2.36689e+07 102530 -273094
+-2.37902e+07 94882.6 -284267
+-2.38946e+07 84959.5 -290035
+0 73248 -290603
+1.62544e+07 8832.25 -155672
+1.62491e+07 15592.8 -160426
+1.62384e+07 22582 -163584
+1.62218e+07 29547.3 -164983
+1.61994e+07 36192.9 -164515
+1.61713e+07 42188.2 -162151
+1.61381e+07 47177.2 -157954
+1.61004e+07 50791.5 -152105
+1.60594e+07 52663.8 -144920
+1.60166e+07 52445.1 -136867
+1.59737e+07 49821.2 -128574
+1.59327e+07 44531.4 -120831
+1.58959e+07 36386.6 -114580
+1.58658e+07 25286.7 -110878
+1.5845e+07 11235.9 -110848
+1.5836e+07 -5642.78 -115579
+1.58415e+07 -25097.5 -126005
+1.58637e+07 -46738.6 -142740
+1.59044e+07 -70033.6 -165887
+1.59653e+07 -94302.6 -194833
+1.6047e+07 -118716 -228074
+1.61496e+07 -142287 -263075
+1.62723e+07 -163863 -296229
+1.64131e+07 -182102 -322931
+1.65687e+07 -195425 -337768
+1.67344e+07 -201930 -334828
+1.6904e+07 -199246 -308026
+1.70691e+07 -184285 -251370
+1.7219e+07 -152874 -159054
+1.73398e+07 -99189.8 -25339.9
+1.74139e+07 -14961.7 155659
+1.74178e+07 111688 389985
+1.73197e+07 297896 683146
+1.7076e+07 568178 1.03814e+06
+1.66251e+07 955960 1.45144e+06
+1.58828e+07 1.50039e+06 1.90615e+06
+1.47448e+07 2.22865e+06 2.36187e+06
+1.31136e+07 3.1106e+06 2.74461e+06
+1.09681e+07 3.9884e+06 2.94895e+06
+8.4655e+06 4.54228e+06 2.87314e+06
+5.97942e+06 4.42839e+06 2.49455e+06
+3.92161e+06 3.63473e+06 1.93156e+06
+2.4404e+06 2.61503e+06 1.36763e+06
+1.46275e+06 1.73319e+06 913045
+851546 1.09055e+06 586008
+484352 660023 364564
+270458 387261 220684
+148776 221695 130384
+80842.3 124415 75425.8
+43466.9 68738.4 42873.6
+23115.3 37549.5 24032.5
+12111.4 20350.8 13330.2
+6188.74 10974 7341.03
+3004.28 5908.44 4027.66
+1287.32 3188.43 2210.18
+355.186 1732.28 1219.57
+-158.88 955.951 682.974
+-452.254 545.784 395.577
+-632.347 335.273 246.87
+-761.08 239.896 179.5
+-879.882 221.554 167.358
+-1026.11 272.775 205.481
+-1248.3 414.274 308.21
+-1625.57 702.945 514.872
+-2299.94 1255.79 905.238
+-3535.71 2299.23 1630.36
+-5826.53 4258.38 2969.36
+-10094.2 7925.27 5430.89
+-18058 14767.6 9929.45
+-32892.1 27455.1 18081.8
+-60384.9 50761.5 32687.2
+-110965 93087.9 58470
+-203054 168769 103158
+-368304 301298 178922
+-659531 527728 304186
+-1.16155e+06 903383 505742
+-2.00283e+06 1.50345e+06 820640
+-3.36266e+06 2.41619e+06 1.29548e+06
+-5.45238e+06 3.70035e+06 1.97165e+06
+-8.3978e+06 5.22066e+06 2.82791e+06
+-1.1985e+07 6.41356e+06 3.69016e+06
+-1.55849e+07 6.55884e+06 4.26197e+06
+-1.8637e+07 5.69092e+06 4.3567e+06
+-2.09239e+07 4.3644e+06 4.01897e+06
+-2.24987e+07 3.07326e+06 3.41729e+06
+-2.35197e+07 2.04164e+06 2.71882e+06
+-2.41438e+07 1.29382e+06 2.0349e+06
+-2.44905e+07 773384 1.4216e+06
+-2.46419e+07 414469 898609
+-2.46539e+07 165821 466296
+-2.45652e+07 -7561.81 116808
+-2.44042e+07 -128743 -159470
+-2.41922e+07 -212898 -370701
+-2.39462e+07 -270033 -522750
+-2.368e+07 -306740 -619961
+-2.34055e+07 -327391 -666617
+-2.31324e+07 -334966 -668245
+-2.28692e+07 -331623 -632232
+-2.26228e+07 -319073 -567662
+-2.2399e+07 -298797 -484564
+-2.22021e+07 -272172 -392918
+-2.20354e+07 -240523 -301696
+-2.19008e+07 -205148 -218160
+-2.17991e+07 -167311 -147488
+-2.17301e+07 -128237 -92715
+-2.16927e+07 -89088.1 -54942.6
+-2.1685e+07 -50946.7 -33695.9
+-2.17042e+07 -14792.6 -27355.6
+-2.17472e+07 18516.2 -33579
+-2.18103e+07 48261.5 -49663.3
+-2.18896e+07 73878.1 -72827
+-2.1981e+07 94962.4 -100408
+-2.20805e+07 111275 -129994
+-2.21842e+07 122738 -159501
+-2.22884e+07 129425 -187211
+-2.23898e+07 131548 -211795
+-2.24853e+07 129438 -232297
+-2.25725e+07 123528 -248115
+-2.26494e+07 114324 -258962
+-2.27145e+07 102383 -264812
+0 88287.6 -265857
+1.44803e+07 7045.92 -132863
+1.44811e+07 12498.7 -136761
+1.44797e+07 18137.4 -139309
+1.44757e+07 23759.8 -140373
+1.44689e+07 29128.5 -139869
+1.44594e+07 33976.8 -137773
+1.44472e+07 38017.1 -134143
+1.44324e+07 40950.2 -129135
+1.44154e+07 42476.4 -123020
+1.43968e+07 42308 -116194
+1.43772e+07 40182.5 -109190
+1.43574e+07 35876.9 -102677
+1.43386e+07 29222.1 -97449
+1.43217e+07 20116.3 -94399.3
+1.43081e+07 8538.51 -94468.7
+1.42991e+07 -5439.63 -98568.4
+1.4296e+07 -21643.3 -107469
+1.43001e+07 -39785.1 -121661
+1.43125e+07 -59456.9 -141188
+1.43343e+07 -80122 -165476
+1.43662e+07 -101106 -193178
+1.44087e+07 -121584 -222068
+1.44615e+07 -140560 -249011
+1.45243e+07 -156833 -270045
+1.45957e+07 -168934 -280567
+1.46739e+07 -175021 -275619
+1.4756e+07 -172712 -250199
+1.48382e+07 -158810 -199502
+1.49154e+07 -128901 -119002
+1.49811e+07 -76733.3 -4339.93
+1.50267e+07 6716.78 148899
+1.50404e+07 134735 345235
+1.50059e+07 327339 588762
+1.48978e+07 615205 881521
+1.4675e+07 1.04474e+06 1.2202e+06
+1.42688e+07 1.68031e+06 1.59046e+06
+1.35703e+07 2.59088e+06 1.95881e+06
+1.24314e+07 3.7957e+06 2.26468e+06
+1.07181e+07 5.14813e+06 2.42264e+06
+8.453e+06 6.20991e+06 2.35133e+06
+5.97976e+06 6.34407e+06 2.03428e+06
+3.85875e+06 5.30724e+06 1.56929e+06
+2.3412e+06 3.81087e+06 1.10624e+06
+1.36532e+06 2.49489e+06 734824
+774366 1.54589e+06 469130
+430568 921251 290348
+236063 533098 174912
+127968 301856 102885
+68722.8 167966 59280
+36626.9 92160.1 33574.3
+19350.8 50089 18758.2
+10088.1 27048.3 10373.6
+5142.13 14537.3 5697.15
+2499.55 7806.9 3117.88
+1080.19 4206.39 1706.91
+313.306 2281.07 939.77
+-107.671 1256.56 525.157
+-347.445 716.856 303.535
+-494.08 439.722 189.055
+-598.489 314.142 137.27
+-694.786 290.021 127.972
+-813.317 357.044 157.332
+-994.154 543.069 236.471
+-1302.36 922.813 395.901
+-1854.67 1650.19 697.613
+-2871.91 3027.29 1259.31
+-4767.11 5617.76 2299.15
+-8312.44 10472.5 4216.04
+-14971.7 19565.4 7729.96
+-27475.9 36494.6 14119.7
+-50848 67718.5 25610.3
+-94348.8 124810 45979.1
+-174770 227822 81447.8
+-321734 410117 141896
+-586741 726026 242413
+-1.05672e+06 1.25958e+06 405148
+-1.86893e+06 2.12728e+06 661003
+-3.22174e+06 3.4681e+06 1.04907e+06
+-5.35157e+06 5.3717e+06 1.60429e+06
+-8.36781e+06 7.58882e+06 2.31007e+06
+-1.19115e+07 9.14504e+06 3.0243e+06
+-1.51443e+07 8.92217e+06 3.50447e+06
+-1.75635e+07 7.31063e+06 3.59611e+06
+-1.91519e+07 5.30311e+06 3.33243e+06
+-2.01172e+07 3.55918e+06 2.84865e+06
+-2.06782e+07 2.27701e+06 2.28085e+06
+-2.099e+07 1.40511e+06 1.72084e+06
+-2.11466e+07 827224 1.21572e+06
+-2.12024e+07 443228 782582
+-2.11901e+07 185053 422371
+-2.11305e+07 9941.93 129095
+-2.10383e+07 -108847 -104744
+-2.09246e+07 -188461 -285403
+-2.0798e+07 -240163 -417190
+-2.06655e+07 -271445 -503155
+-2.05328e+07 -287337 -546382
+-2.04046e+07 -291278 -551141
+-2.02848e+07 -285713 -523439
+-2.01764e+07 -272485 -470876
+-2.00815e+07 -253090 -401976
+-2.00017e+07 -228821 -325302
+-1.99379e+07 -200852 -248599
+-1.98904e+07 -170276 -178163
+-1.98588e+07 -138118 -118499
+-1.98424e+07 -105343 -72266.8
+-1.98401e+07 -72847.3 -40451.9
+-1.98505e+07 -41451.6 -22676.1
+-1.98717e+07 -11890 -17572
+-1.9902e+07 15201.3 -23148.2
+-1.99395e+07 39293.3 -37103.7
+-1.9982e+07 59973.6 -57071.6
+-2.00278e+07 76950.9 -80790
+-2.00749e+07 90057.9 -106213
+-2.01217e+07 99248.7 -131576
+-2.01666e+07 104593 -155432
+-2.02083e+07 106267 -176658
+-2.02458e+07 104540 -194453
+-2.02782e+07 99756.2 -208313
+-2.03049e+07 92322.7 -217996
+-2.03256e+07 82684.3 -223482
+0 71306.4 -224929
+1.15058e+07 3616.56 -102812
+1.15101e+07 6503.59 -105694
+1.15142e+07 9491.82 -107585
+1.15178e+07 12475.7 -108393
+1.15209e+07 15330.3 -108063
+1.15232e+07 17914.5 -106584
+1.15245e+07 20075.4 -104003
+1.15246e+07 21653 -100437
+1.15235e+07 22485.7 -96083
+1.1521e+07 22416.3 -91228.6
+1.15172e+07 21298.7 -86258.3
+1.1512e+07 19005 -81653.8
+1.15056e+07 15432.2 -77986.7
+1.14981e+07 10509.6 -75898.7
+1.14898e+07 4205.83 -76065.1
+1.1481e+07 -3465.06 -79136.5
+1.14722e+07 -12436.6 -85656.5
+1.14636e+07 -22583.7 -95955.9
+1.14558e+07 -33716.5 -110030
+1.14493e+07 -45572.4 -127411
+1.14445e+07 -57807.5 -147058
+1.14419e+07 -69982.5 -167279
+1.14418e+07 -81542.1 -185733
+1.14448e+07 -91780 -199501
+1.1451e+07 -99780.5 -205260
+1.14609e+07 -104323 -199515
+1.14749e+07 -103728 -178855
+1.14934e+07 -95620.1 -140130
+1.15175e+07 -76557 -80485
+1.15482e+07 -41467 2791.81
+1.15875e+07 17266.6 112520
+1.16376e+07 111398 251766
+1.17006e+07 259790 423531
+1.17759e+07 494008 629586
+1.18538e+07 867948 868013
+1.18981e+07 1.47052e+06 1.12898e+06
+1.18147e+07 2.43011e+06 1.38873e+06
+1.14088e+07 3.87407e+06 1.60389e+06
+1.03843e+07 5.77524e+06 1.71327e+06
+8.50912e+06 7.6586e+06 1.65901e+06
+6.01245e+06 8.44489e+06 1.43002e+06
+3.74863e+06 7.25452e+06 1.09693e+06
+2.16651e+06 5.16745e+06 767471
+1.20409e+06 3.30825e+06 505604
+653936 2.00231e+06 320272
+350656 1.16783e+06 196868
+187113 663412 117914
+99308 370686 69019.3
+52404.2 204254 39601.6
+27606 111113 22349.1
+14466.5 60047.4 12447.6
+7481.71 32315.5 6864.2
+3801.93 17293.9 3760.18
+1853.9 9259.3 2053.16
+807.309 4986.24 1121.64
+246.602 2697.17 616.285
+-58.4691 1481.98 343.749
+-233.106 846.124 198.335
+-339.285 518.101 123.334
+-414.327 369.339 89.4698
+-483.831 341.22 83.4335
+-568.888 419.534 102.704
+-699.804 639.631 154.632
+-924.039 1088.59 259.369
+-1324.23 1945.65 457.878
+-2068.48 3579.28 828.182
+-3466.34 6658.49 1515.37
+-6082.21 12421.4 2785.34
+-11044.1 23279.6 5119.98
+-20484.6 43605.2 9379.45
+-38284.5 81188.8 17067.7
+-71952.6 150497 30752.6
+-135720 277046 54699
+-255250 503555 95751.1
+-478291 903167 164495
+-892933 1.5954e+06 276724
+-1.64787e+06 2.75079e+06 454921
+-2.97671e+06 4.58542e+06 728139
+-5.18227e+06 7.25255e+06 1.12308e+06
+-8.37299e+06 1.03175e+07 1.62923e+06
+-1.19162e+07 1.21058e+07 2.14448e+06
+-1.45669e+07 1.09456e+07 2.49367e+06
+-1.60033e+07 8.16653e+06 2.56457e+06
+-1.65713e+07 5.39616e+06 2.3797e+06
+-1.66959e+07 3.33048e+06 2.03585e+06
+-1.66485e+07 1.98724e+06 1.63142e+06
+-1.6556e+07 1.16144e+06 1.2331e+06
+-1.64652e+07 657099 874894
+-1.63885e+07 343476 568619
+-1.63264e+07 144174 314168
+-1.62763e+07 15941.8 106456
+-1.62355e+07 -66391.8 -60405.9
+-1.62018e+07 -118223 -191011
+-1.61739e+07 -149372 -288150
+-1.6151e+07 -166239 -353433
+-1.61327e+07 -173036 -388394
+-1.6119e+07 -172560 -395495
+-1.61098e+07 -166702 -378631
+-1.61054e+07 -156795 -343066
+-1.61054e+07 -143834 -294927
+-1.61099e+07 -128608 -240507
+-1.61184e+07 -111783 -185576
+-1.61304e+07 -93939.7 -134864
+-1.61455e+07 -75604.1 -91780.4
+-1.61629e+07 -57252.1 -58353.5
+-1.61819e+07 -39316.1 -35352.7
+-1.62017e+07 -22185 -22525
+-1.62216e+07 -6202.19 -18878.2
+-1.62409e+07 8337.36 -22959
+-1.62588e+07 21190.7 -33091
+-1.6275e+07 32170.2 -47556.5
+-1.62888e+07 41146.1 -64722.4
+-1.62999e+07 48048.1 -83118.9
+-1.63082e+07 52864.6 -101485
+-1.63135e+07 55640.8 -118789
+-1.63158e+07 56474.7 -134235
+-1.63153e+07 55511 -147255
+-1.63122e+07 52933.5 -157491
+-1.63067e+07 48956.7 -164768
+-1.62993e+07 43815.3 -169064
+0 37753.5 -170484
+7.55148e+06 866.972 -69062.3
+7.55509e+06 1689.14 -70925
+7.55886e+06 2545.7 -72210.8
+7.56266e+06 3407.79 -72878.6
+7.56634e+06 4240.39 -72906.2
+7.56973e+06 5003.36 -72295
+7.57267e+06 5652.63 -71076.6
+7.57498e+06 6141.49 -69317.9
+7.57649e+06 6421.91 -67127.9
+7.57705e+06 6446.17 -64662.2
+7.57651e+06 6168.43 -62127.5
+7.57478e+06 5546.48 -59782.3
+7.57175e+06 4543.47 -57933.8
+7.56737e+06 3129.75 -56928.6
+7.5616e+06 1284.58 -57132.5
+7.55445e+06 -1001.98 -58898
+7.54593e+06 -3727.24 -62517
+7.5361e+06 -6873.82 -68158.4
+7.52503e+06 -10407.3 -75796.8
+7.51281e+06 -14273 -85138.2
+7.49955e+06 -18392 -95558.3
+7.48544e+06 -22654.3 -106068
+7.47069e+06 -26907.5 -115324
+7.45566e+06 -30939.4 -121696
+7.44094e+06 -34446.6 -123389
+7.42746e+06 -36985 -118605
+7.41677e+06 -37888.3 -105695
+7.41139e+06 -36139.2 -83249.9
+7.41531e+06 -30162.8 -50052.8
+7.43479e+06 -17486.3 -4892.3
+7.47934e+06 5868.99 53718.2
+7.56308e+06 46589.7 127750
+7.70644e+06 116670 219559
+7.9374e+06 239265 331199
+8.28966e+06 461479 462846
+8.78878e+06 879383 610020
+9.40658e+06 1.67547e+06 759619
+9.95859e+06 3.13756e+06 886187
+9.97036e+06 5.5391e+06 952993
+8.74266e+06 8.64558e+06 925007
+6.10797e+06 1.08573e+07 795062
+3.53763e+06 9.6487e+06 604370
+1.86027e+06 6.72084e+06 416850
+951540 4.13606e+06 270331
+481273 2.42224e+06 168885
+243636 1.37529e+06 102699
+125641 763858 61021
+64950 421413 35504.7
+33368 230281 20282.6
+17423.1 124006 11412.2
+9097.72 66715.4 6341.62
+4626.83 35893.6 3489.35
+2351.64 19090 1908.04
+1165.24 10188.7 1040.78
+504.484 5508.84 567.951
+160.427 2966.4 311.669
+-20.9235 1622.12 173.767
+-130.689 932.43 100.241
+-196.049 569.106 62.3135
+-240.924 403.972 45.2519
+-284.169 375.014 42.2707
+-334.65 458.357 52.0508
+-415.476 702.691 78.3771
+-555.833 1198.67 131.544
+-793.537 2129.07 232.244
+-1251.06 3937.1 420.223
+-2131.26 7353.25 769.844
+-3723.16 13666.4 1416.65
+-6796.61 25703.3 2607.28
+-12833.7 48426.3 4786.32
+-24101.7 90190.5 8731.97
+-45775 167980 15776.5
+-88721.7 312335 28163.3
+-171304 572337 49557.4
+-332294 1.03971e+06 85741.6
+-657156 1.87789e+06 145610
+-1.30123e+06 3.32345e+06 242402
+-2.55082e+06 5.71863e+06 394139
+-4.87228e+06 9.39283e+06 618498
+-8.45562e+06 1.36396e+07 910835
+-1.21484e+07 1.54662e+07 1.20993e+06
+-1.38645e+07 1.23016e+07 1.41077e+06
+-1.38517e+07 7.8199e+06 1.44681e+06
+-1.31003e+07 4.37186e+06 1.33223e+06
+-1.22695e+07 2.29707e+06 1.12633e+06
+-1.16072e+07 1.186e+06 889307
+-1.11458e+07 613368 661315
+-1.08475e+07 313583 461617
+-1.06659e+07 149660 295355
+-1.05631e+07 56042.3 160290
+-1.0512e+07 1264.17 51450
+-1.04936e+07 -30685.2 -36072.7
+-1.04951e+07 -48641.1 -105731
+-1.05083e+07 -57827.2 -159236
+-1.05278e+07 -61458.4 -197069
+-1.05505e+07 -61545.5 -219365
+-1.05744e+07 -59351.2 -226724
+-1.05987e+07 -55672.5 -220686
+-1.06228e+07 -51020.8 -203782
+-1.06465e+07 -45736.8 -179256
+-1.06695e+07 -40060 -150612
+-1.0692e+07 -34171.1 -121167
+-1.07136e+07 -28215.6 -93687.5
+-1.07342e+07 -22316.6 -70190.2
+-1.07538e+07 -16582.2 -51883.3
+-1.07719e+07 -11108.4 -39234.6
+-1.07885e+07 -5980.41 -32113.1
+-1.08031e+07 -1273.32 -29962.4
+-1.08157e+07 2948.96 -31970.2
+-1.08259e+07 6634.36 -37210.9
+-1.08337e+07 9743.73 -44750.4
+-1.0839e+07 12251.8 -53714.5
+-1.08417e+07 14148 -63328.7
+-1.0842e+07 15436.4 -72936.8
+-1.08399e+07 16135.9 -82007.6
+-1.08356e+07 16279.1 -90133
+-1.08295e+07 15911.2 -97021.4
+-1.08218e+07 15087.7 -102486
+-1.08128e+07 13872.1 -106428
+-1.0803e+07 12333.1 -108824
+0 10540.8 -109708
+3.63159e+06 -20.2406 -37275.6
+3.63242e+06 142.929 -38259.2
+3.63281e+06 321.41 -39023.8
+3.63269e+06 509.99 -39566.4
+3.63199e+06 701.96 -39889.5
+3.63067e+06 889.283 -40001.7
+3.62871e+06 1062.79 -39918.4
+3.62612e+06 1212.42 -39662.7
+3.62292e+06 1327.6 -39267.4
+3.6192e+06 1397.54 -38776.2
+3.61505e+06 1411.81 -38245.5
+3.6106e+06 1360.74 -37746
+3.60599e+06 1236.06 -37363.8
+3.60139e+06 1031.36 -37198.1
+3.59696e+06 742.721 -37357.3
+3.59286e+06 369.162 -37948
+3.58924e+06 -86.8701 -39058.7
+3.58617e+06 -619.106 -40737.5
+3.5837e+06 -1217.14 -42964.2
+3.5818e+06 -1866.21 -45624.1
+3.58037e+06 -2547.04 -48487.1
+3.57921e+06 -3235.82 -51201.6
+3.57807e+06 -3904.26 -53311.1
+3.57668e+06 -4519.7 -54296.5
+3.5748e+06 -5045.22 -53642.3
+3.5724e+06 -5439.59 -50912.8
+3.56987e+06 -5656.74 -45808.7
+3.56841e+06 -5644.17 -38169.3
+3.57059e+06 -5337.99 -27885.5
+3.58135e+06 -4647.42 -14716.8
+3.60939e+06 -3399.43 1949.26
+3.66967e+06 -1130.79 23298.7
+3.7876e+06 3689.94 51117
+4.00619e+06 16435.8 87481.7
+4.39682e+06 55446 133950
+5.06816e+06 178888 190059
+6.14555e+06 552293 251144
+7.64022e+06 1.57876e+06 306307
+9.0839e+06 4.01538e+06 338988
+9.06492e+06 8.57764e+06 333391
+6.08444e+06 1.37578e+07 286016
+2.99087e+06 1.26802e+07 212968
+1.29015e+06 8.37923e+06 141187
+574829 4.82458e+06 87440.4
+258705 2.72207e+06 52493.3
+118637 1.50582e+06 30993.3
+61098.6 816007 18030.4
+31123 448388 10328.2
+14915.7 244814 5847.36
+8108.52 129885 3289.11
+4403.23 69916.8 1830.48
+2043.84 37983.6 1003.24
+1074.41 19914.7 547.989
+594.979 10590 300.959
+226.523 5835.29 164.5
+70.2731 3099.82 90.0891
+6.26153 1673.36 50.6728
+-56.8039 988.2 29.4307
+-88.7237 596.59 18.2686
+-106.226 418.299 13.411
+-130.206 396.049 12.6794
+-148.568 473.098 15.5027
+-189.34 737.969 23.1679
+-268.473 1268.39 38.9421
+-351.981 2195.77 68.2069
+-563.674 4118.35 122.288
+-1046.82 7779.89 224.295
+-1683.44 14197.2 411.632
+-3010.3 26833.2 752.498
+-6168.92 51216.4 1383.47
+-11116.9 94445.7 2533.86
+-20401.3 175982 4573.09
+-42348.7 331957 8176.37
+-82704.5 608494 14546.2
+-160966 1.11035e+06 25637.3
+-351977 2.05526e+06 44654
+-782524 3.73035e+06 76979.6
+-1.7612e+06 6.65766e+06 131000
+-4.09939e+06 1.16671e+07 216182
+-8.36388e+06 1.78086e+07 331868
+-1.24799e+07 1.9458e+07 450255
+-1.25034e+07 1.21898e+07 525929
+-1.05165e+07 5.70895e+06 531663
+-8.47509e+06 2.23142e+06 474203
+-7.0192e+06 769691 381118
+-6.12446e+06 243665 280656
+-5.61321e+06 73455.8 190922
+-5.33456e+06 21383.7 119193
+-5.1907e+06 4942.91 65530
+-5.12312e+06 -1255.95 26475
+-5.0973e+06 -4365.72 -2380.85
+-5.09279e+06 -6308.52 -24870.7
+-5.09763e+06 -7617.1 -43498.3
+-5.10505e+06 -8467.38 -59311.9
+-5.11158e+06 -8939.85 -72246.7
+-5.11575e+06 -9085.88 -81703.7
+-5.11731e+06 -8946.72 -87114.4
+-5.11665e+06 -8560.26 -88317.7
+-5.11451e+06 -7963.89 -85690
+-5.11169e+06 -7195.44 -80068.4
+-5.10895e+06 -6293.17 -72556.1
+-5.10697e+06 -5295.25 -64299.8
+-5.10623e+06 -4238.97 -56304.8
+-5.10708e+06 -3159.98 -49319.9
+-5.1097e+06 -2091.52 -43797.1
+-5.1141e+06 -1063.75 -39910.9
+-5.12019e+06 -103.214 -37616.9
+-5.12776e+06 767.66 -36724.5
+-5.13651e+06 1530.88 -36967.9
+-5.14612e+06 2173.11 -38061.2
+-5.15621e+06 2685.75 -39735.1
+-5.16641e+06 3064.89 -41756.3
+-5.17638e+06 3311.02 -43933
+-5.18577e+06 3428.74 -46113.6
+-5.19432e+06 3426.23 -48181.3
+-5.20181e+06 3314.67 -50048.8
+-5.20805e+06 3107.66 -51652.4
+-5.21295e+06 2820.47 -52946.5
+-5.21645e+06 2469.37 -53898.6
+-5.21855e+06 2070.94 -54485
+0 1641.3 -54688.8
+233483 -0.435757 -6659.09
+233471 8.88184 -6835.88
+233424 19.0377 -6987.01
+233339 29.7382 -7113.78
+233216 40.6018 -7218.1
+233053 51.171 -7302.4
+232855 60.9248 -7369.56
+232623 69.2936 -7422.81
+232365 75.6767 -7465.55
+232089 79.4646 -7501.26
+231804 80.0628 -7533.28
+231522 76.92 -7564.69
+231255 69.5565 -7598.06
+231014 57.5942 -7635.26
+230813 40.7855 -7677.13
+230660 19.0416 -7723.01
+230561 -7.54182 -7770.19
+230520 -38.6612 -7813.14
+230532 -73.7843 -7842.75
+230587 -112.133 -7845.73
+230666 -152.669 -7804.4
+230745 -194.08 -7697.21
+230789 -234.772 -7500.36
+230760 -272.86 -7190.62
+230615 -306.149 -6749.27
+230321 -332.114 -6166.45
+229855 -347.845 -5444.69
+229229 -349.888 -4599.9
+228514 -333.637 -3658.07
+227873 -290.353 -2646.94
+227654 -192.244 -1583.53
+228597 79.4134 -460.923
+232498 1058.45 760.015
+244279 5046.42 2146.25
+277991 21287.6 3766.19
+371728 83910.1 5636.58
+614945 307058 7670.98
+1.16323e+06 1.02766e+06 9746.12
+2.10355e+06 3.07136e+06 12056.6
+2.86356e+06 7.8129e+06 15441.9
+1.62967e+06 1.49861e+07 19640.9
+470175 1.38346e+07 18252.4
+84814 8.76069e+06 12999.2
+28784.4 4.87778e+06 8365.2
+7258.17 2.74171e+06 5221.26
+-244.961 1.51226e+06 3100.06
+2428.95 812834 1769.53
+1315.44 449271 962.916
+-186.817 246187 506.052
+292.802 129321 293.741
+297.859 69863.8 175.371
+-44.1039 38304.6 86.8025
+15.872 19844.8 43.2944
+61.4386 10538 27.8322
+-8.74915 5902 15.1463
+-7.2671 3096.61 6.88844
+9.51716 1655.4 4.51722
+-3.81436 1000.84 2.80984
+-5.26919 597.731 1.2788
+-2.23607 415.037 1.0199
+-6.6516 400.214 1.21582
+-2.00024 468.169 1.20855
+-5.15184 740.712 1.73196
+-20.9431 1283.29 3.82689
+1.28481 2172.02 6.16967
+-1.08608 4118.39 9.80311
+-88.6767 7862.74 21.3703
+-23.013 14122.8 38.6162
+36.7672 26759.4 61.5241
+-411.724 51635 124.826
+-363.187 94330.2 248.565
+214.282 175286 417.744
+-1861.35 333846 732.038
+-3204.39 609498 1396.31
+232.233 1.10618e+06 2562
+-10843.6 2.06477e+06 4513.66
+-41230 3.75792e+06 7667.24
+-122383 6.73453e+06 12399.6
+-673837 1.22125e+07 19474.4
+-2.32658e+06 1.94531e+07 27669.3
+-4.08502e+06 2.1207e+07 30298.6
+-2.9999e+06 1.10965e+07 24496.1
+-1.65578e+06 4.35833e+06 19509.2
+-877131 1.44768e+06 15837.6
+-537255 425864 12429.9
+-409961 113406 9165.58
+-366212 27707.7 6315.73
+-352033 6254.95 4016.07
+-348086 1235.57 2196.09
+-347846 61.2419 682.838
+-348999 -268.032 -699.756
+-350587 -405.334 -2074.95
+-352143 -483.506 -3493.18
+-353429 -530.21 -4937.57
+-354343 -553.264 -6345.86
+-354869 -556.647 -7639.06
+-355042 -543.376 -8747.18
+-354931 -516.088 -9625.76
+-354615 -477.226 -10261.5
+-354175 -429.122 -10668.9
+-353687 -374.028 -10881.4
+-353213 -314.113 -10941.8
+-352807 -251.45 -10893.6
+-352507 -187.989 -10775.1
+-352337 -125.528 -10616.4
+-352310 -65.6937 -10439.4
+-352428 -9.91224 -10258.8
+-352685 40.6097 -10083.7
+-353067 84.9021 -9919.95
+-353554 122.243 -9771.15
+-354123 152.164 -9639.84
+-354749 174.449 -9527.64
+-355407 189.123 -9435.34
+-356072 196.438 -9362.7
+-356723 196.846 -9308.41
+-357339 190.97 -9269.96
+-357902 179.572 -9243.76
+-358400 163.513 -9225.26
+-358821 143.715 -9209.07
+-359160 121.12 -9189.23
+0 96.6402 -9159.43
+13509.9 0.0156129 -394.722
+13509.1 0.540483 -404.941
+13506.4 1.11042 -413.636
+13501.4 1.70916 -420.882
+13494.2 2.31532 -426.786
+13484.9 2.90319 -431.485
+13473.4 3.44354 -435.145
+13460.1 3.90445 -437.948
+13445.4 4.2523 -440.092
+13429.5 4.45291 -441.774
+13413.2 4.47286 -443.187
+13397 4.2809 -444.508
+13381.6 3.8495 -445.887
+13367.6 3.15639 -447.433
+13355.5 2.18607 -449.199
+13345.8 0.931381 -451.152
+13338.7 -0.605126 -453.145
+13333.9 -2.40976 -454.867
+13330.9 -4.4564 -455.804
+13328.8 -6.70518 -455.198
+13326 -9.10128 -452.037
+13320.7 -11.5736 -445.084
+13310.3 -14.0334 -432.972
+13292.3 -16.3727 -414.372
+13263.7 -18.4625 -388.22
+13222.6 -20.1503 -353.979
+13167.7 -21.2551 -311.837
+13100.5 -21.5487 -262.759
+13026.4 -20.6457 -208.276
+12959.4 -17.3266 -149.982
+12937.2 -5.64397 -88.7853
+13087.6 45.9327 -24.1685
+13914.6 298.589 46.0823
+17449.9 1528.64 124.804
+31460.3 7247.73 211.982
+82931.8 32363.4 300.85
+253783 136075 393.837
+745112 536077 616.41
+1.86247e+06 1.95342e+06 1583.08
+3.31144e+06 6.3625e+06 4880.07
+1.72592e+06 1.65689e+07 11427.2
+343727 1.52138e+07 11756.8
+6706.46 9.09516e+06 8019.38
+12584.3 4.86971e+06 5192.48
+-284.794 2.75298e+06 3420.77
+-5529.61 1.51668e+06 2048.75
+1845.39 805175 1136.11
+904.795 450133 562.922
+-1021.93 248066 254.153
+168.654 128082 162.471
+313.566 69689.8 110.588
+-183.029 38794 43.3741
+-20.004 19680.1 16.9542
+79.8064 10435.5 16.5425
+-28.0823 6008.41 8.67479
+-15.1735 3083.19 2.30427
+17.5892 1621.99 2.47026
+-3.429 1021.46 1.704
+-3.76619 598.013 0.224016
+2.748 408.479 0.295611
+-4.1544 407.012 0.689023
+5.30473 458.628 0.354402
+2.50062 743.413 0.375374
+-22.282 1307.56 2.27907
+21.0883 2127.83 3.20811
+30.565 4108.2 3.46892
+-103.405 7994.65 12.379
+38.2584 13977.6 22.3831
+221.046 26573.8 24.7099
+-429.25 52273.9 64.9492
+-163.403 94023.5 156.531
+1324.21 173731 229.808
+-1358.01 336455 375.842
+-2327.64 610345 826.385
+7486.27 1.09595e+06 1639.59
+-661.208 2.0717e+06 2958.24
+-18286.5 3.77319e+06 4962.34
+-11698.7 6.7247e+06 7551.64
+-493625 1.26905e+07 11720.4
+-2.45382e+06 2.14085e+07 17319.3
+-4.69777e+06 2.34461e+07 17038.5
+-2.63313e+06 9.0292e+06 7464.21
+-1.04366e+06 2.76768e+06 2547.15
+-350062 753551 1055.75
+-112716 188231 675.655
+-43102 43607.5 504.186
+-24906.8 9393.19 357.419
+-20585.4 1876.21 229.141
+-19679.4 339.867 124.119
+-19578.3 44.6211 36.566
+-19671.4 -12.0294 -42.9783
+-19810.8 -25.4073 -121.888
+-19951.2 -30.4404 -203.365
+-20074.2 -32.9496 -286.588
+-20171.7 -33.9745 -367.996
+-20241.3 -33.8365 -442.986
+-20284.7 -32.743 -507.44
+-20305.9 -30.8686 -558.724
+-20309.7 -28.3686 -596.026
+-20301.6 -25.3846 -620.166
+-20286.4 -22.0476 -633.091
+-20268.7 -18.4795 -637.289
+-20252.2 -14.7935 -635.282
+-20239.6 -11.0944 -629.283
+-20232.9 -7.47762 -621.032
+-20233.3 -4.02883 -611.775
+-20241.2 -0.822924 -602.333
+-20256.6 2.07675 -593.219
+-20278.7 4.61915 -584.746
+-20306.6 6.76614 -577.11
+-20339.2 8.49286 -570.444
+-20374.8 9.78779 -564.833
+-20412.3 10.6524 -560.314
+-20450.2 11.1002 -556.866
+-20487.2 11.1562 -554.406
+-20522.2 10.8545 -552.785
+-20554.1 10.2373 -551.791
+-20582.4 9.35262 -551.158
+-20606.2 8.25211 -550.573
+-20625.3 6.98835 -549.693
+0 5.61222 -548.155
+778.947 0.00249358 -23.2495
+778.896 0.02802 -23.8365
+778.731 0.0556422 -24.3337
+778.443 0.0845795 -24.7452
+778.029 0.113798 -25.0769
+777.49 0.142052 -25.3368
+776.832 0.167921 -25.534
+776.07 0.189861 -25.6791
+775.223 0.206243 -25.7832
+774.315 0.215409 -25.8576
+773.378 0.215734 -25.9135
+772.444 0.205687 -25.9609
+771.547 0.183902 -26.0084
+770.718 0.149249 -26.0626
+769.981 0.100903 -26.1265
+769.348 0.0384143 -26.1988
+768.815 -0.0382206 -26.2712
+768.357 -0.128491 -26.3266
+767.922 -0.231297 -26.3358
+767.428 -0.344877 -26.2559
+766.762 -0.466725 -26.0292
+765.779 -0.593499 -25.5848
+764.309 -0.720916 -24.8448
+762.168 -0.843641 -23.7334
+759.18 -0.955148 -22.1911
+755.208 -1.04756 -20.1891
+750.202 -1.11128 -17.7412
+744.282 -1.13296 -14.9061
+737.921 -1.08086 -11.774
+732.723 -0.806836 -8.43546
+735.486 0.557177 -4.93758
+779.644 8.06668 -1.25019
+1031.93 49.7941 2.68784
+2286.84 274.489 6.64681
+8092.82 1439.95 9.1605
+33162.7 7288.68 6.49172
+133338 35885.4 -0.0207322
+496212 173146 56.5547
+1.62434e+06 825053 570.655
+4.06967e+06 3.91632e+06 2940.88
+1.90754e+06 1.87287e+07 9496.2
+228477 1.68904e+07 8915.47
+-48466.3 9.36959e+06 5202.73
+18489.7 4.80017e+06 3506.75
+-143.057 2.76961e+06 2630.67
+-8539.04 1.52411e+06 1623.38
+3395.77 792992 870.244
+1402.18 452113 361.419
+-1715.34 251161 109.462
+304.156 126011 103.233
+499.337 69462.6 92.0931
+-313.259 39603.3 22.1088
+-28.8772 19397.2 2.50674
+130.034 10274.2 13.9162
+-48.7309 6185.87 6.88887
+-24.0746 3058.26 -0.0733303
+29.3656 1567.76 2.06106
+-5.9347 1056.27 1.63451
+-5.79116 597.871 -0.316922
+5.08584 397.594 0.0239387
+-6.73598 418.727 0.689829
+9.02312 442.81 0.040643
+5.2539 747.133 -0.284795
+-36.4978 1348.68 2.16348
+34.3927 2055.99 2.501
+54.4932 4087.69 0.273401
+-167.961 8215.26 9.96707
+58.47 13748.1 17.9716
+381.525 26252.1 4.3678
+-683.92 53332.8 36.3496
+-304.125 93599.4 128.607
+2232.55 171124 141.216
+-2108.06 340760 171.003
+-4295.33 612500 540.37
+11691.8 1.07959e+06 1245.49
+-1133.01 2.08311e+06 2319.79
+-25904.3 3.79506e+06 3785.05
+66827.3 6.62828e+06 5052.24
+-332795 1.30865e+07 7556.7
+-2.71269e+06 2.37845e+07 13139.4
+-5.76792e+06 2.64974e+07 14239.4
+-2.29329e+06 5.55298e+06 4560.89
+-693406 1.16728e+06 957.246
+-182927 242925 135.806
+-44272.4 49534.2 23.2753
+-10481.9 9800.85 19.8226
+-2959.88 1863 18.2858
+-1423.78 336.383 12.8529
+-1140.21 56.5852 7.05697
+-1099.17 8.09577 1.99499
+-1102.37 0.0807788 -2.58005
+-1113.18 -1.29889 -7.08871
+-1124.62 -1.62521 -11.7433
+-1134.93 -1.74534 -16.5118
+-1143.49 -1.78234 -21.1936
+-1150.09 -1.76042 -25.5217
+-1154.8 -1.69141 -29.2546
+-1157.85 -1.58486 -32.2363
+-1159.56 -1.44905 -34.4169
+-1160.26 -1.29135 -35.8424
+-1160.28 -1.11829 -36.625
+-1159.94 -0.935807 -36.9085
+-1159.48 -0.749264 -36.8388
+-1159.11 -0.56353 -36.5435
+-1158.96 -0.382989 -36.1223
+-1159.15 -0.211543 -35.6461
+-1159.7 -0.0525906 -35.1609
+-1160.64 0.0909921 -34.6952
+-1161.95 0.216884 -34.2657
+-1163.56 0.323347 -33.883
+-1165.42 0.409243 -33.5539
+-1167.45 0.474044 -33.2826
+-1169.58 0.517824 -33.0708
+-1171.73 0.541229 -32.9168
+-1173.82 0.545433 -32.8155
+-1175.8 0.532075 -32.7578
+-1177.6 0.503176 -32.7313
+-1179.19 0.461048 -32.7206
+-1180.53 0.408185 -32.7075
+-1181.6 0.347129 -32.6725
+0 0.280331 -32.5949
+40.4432 0 -1.22815
+40.4404 0 -1.25847
+40.4317 0 -1.28404
+40.4167 0 -1.30506
+40.3951 0 -1.32184
+40.3672 0 -1.33478
+40.3332 0 -1.34434
+40.2939 0 -1.35107
+40.2501 0 -1.35554
+40.2032 0 -1.35834
+40.1546 0 -1.36002
+40.1059 0 -1.36113
+40.0586 0 -1.36209
+40.0142 0 -1.36326
+39.9733 0 -1.36481
+39.9363 0 -1.36668
+39.902 0 -1.36847
+39.8685 0 -1.36929
+39.8319 0 -1.36769
+39.7869 0 -1.36146
+39.7261 0 -1.34762
+39.6405 0 -1.32255
+39.52 0 -1.28222
+39.3537 0 -1.22276
+39.1314 0 -1.14117
+38.8456 0 -1.03607
+38.4942 0 -0.908329
+38.0865 0 -0.761131
+37.6635 0 -0.599213
+37.4178 0 -0.427117
+38.4156 0 -0.246911
+46.7867 0 -0.0579152
+96.7431 0 0.130611
+371.259 0 0.234207
+1811.11 0 -0.125826
+9099.41 0 -2.02025
+44982.5 0 -6.04455
+218114 0 4.32033
+1.04309e+06 0 168.349
+4.95904e+06 0 1253.97
+2.29543e+06 2.13906e+07 7406.56
+180684 1.90034e+07 5890.93
+-108721 9.65671e+06 2162.83
+31051.1 4.6572e+06 1788.59
+5481.45 2.79231e+06 2044.41
+-14120 1.54222e+06 1428.26
+4570.07 773920 786.344
+2993.42 453693 268.379
+-2702.95 256854 -11.8255
+217.014 123026 49.1513
+921.191 68708.6 96.45
+-437.163 40955.1 14.3414
+-102.485 19066.1 -12.0631
+224.934 9944.16 13.515
+-52.8627 6461.97 8.57881
+-47.3487 3052.63 -1.76634
+48.2736 1470.86 2.42504
+-1.89083 1105.37 3.11021
+-10.7033 606.447 0.0334042
+4.79694 381.818 0.422869
+-9.88764 432.896 1.565
+13.6285 419.059 0.301461
+-3.07063 763.638 -0.00665806
+-61.4342 1405.76 3.88527
+62.968 1929.93 2.74638
+51.759 4098.47 -1.80234
+-289.032 8553.62 12.1489
+161.144 13294.6 16.18
+516.643 25900.4 -15.1823
+-1241.04 55078.9 27.3817
+-131.198 92421.9 130.543
+3474.25 167432 59.7762
+-4329.99 348554 4.13571
+-5620.99 613785 407.382
+19269.2 1.05415e+06 1099.27
+-9334.69 2.10958e+06 1999.1
+-42154.4 3.8238e+06 2889.16
+152684 6.429e+06 2492.75
+-268429 1.35046e+07 3071.46
+-3.26428e+06 2.67778e+07 8727.81
+-7.0239e+06 3.02542e+07 11267.1
+-1.47164e+06 0 2013.59
+-304531 0 305.267
+-61644.4 0 24.9498
+-12118.5 0 -2.71675
+-2319.64 0 -0.877905
+-457.312 0 0.531248
+-121.191 0 0.625494
+-64.6178 0 0.372124
+-56.3088 0 0.104913
+-55.7889 0 -0.135824
+-56.426 0 -0.369192
+-57.1813 0 -0.608942
+-57.876 0 -0.854926
+-58.4654 0 -1.09719
+-58.9362 0 -1.32189
+-59.2908 0 -1.51632
+-59.541 0 -1.67217
+-59.7042 0 -1.7867
+-59.7999 0 -1.86224
+-59.8474 0 -1.90459
+-59.8647 0 -1.92124
+-59.8668 0 -1.91977
+-59.8663 0 -1.90682
+-59.8721 0 -1.88752
+-59.8907 0 -1.86551
+-59.9255 0 -1.84312
+-59.9779 0 -1.82178
+-60.0472 0 -1.80231
+-60.1315 0 -1.78519
+-60.2277 0 -1.77075
+-60.3322 0 -1.75918
+-60.4411 0 -1.75053
+-60.5507 0 -1.7447
+-60.6572 0 -1.74139
+-60.7576 0 -1.74011
+-60.849 0 -1.74022
+-60.9293 0 -1.7409
+-60.9968 0 -1.74121
+-61.0505 0 -1.74015
+0 0 -1.73664
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.93735e+06 1.34619e+07 27668.1
+4.20251e+06 2.27649e+07 42900.6
+-112271 1.4002e+07 17750.5
+-211379 4.7732e+06 -889.17
+218931 2.3636e+06 -146.495
+-8182.22 1.76439e+06 2607.4
+-50163.2 811477 3639.86
+34982.2 366806 3670.08
+9163.47 282700 1426.66
+-11780 144130 -146.271
+4729.29 51941.6 344.912
+4126.05 41295.8 558.322
+-2108.63 25246.3 92.1228
+503.695 7335.91 1.58569
+1325.5 5635.21 102.967
+-225.942 4603.15 50.797
+15.577 1221.6 25.4823
+365.283 738.237 62.4794
+-34.3231 989.758 56.7002
+-166.227 497.286 40.2383
+26.9102 220.466 38.7928
+-111.718 548.162 35.0507
+-570.168 1212.65 58.1941
+-114.645 931.034 71.5599
+102.841 1695.27 33.3619
+-1864.35 6054.78 73.9512
+-642.181 7323.28 130.263
+2410.4 10251.4 -1.15725
+-5852.11 34085.8 164.543
+-5734.61 54611.9 766.75
+15150.8 71209.7 422.296
+-14362.7 197167 -116.104
+-45382.6 379606 2133.82
+69114.7 496931 5009.89
+2652.45 1.11459e+06 4847.83
+-300691 2.40641e+06 3605.82
+303571 3.2229e+06 -225.616
+123642 6.63439e+06 -961.986
+-5.95742e+06 1.96299e+07 27038.3
+-1.12007e+07 3.20587e+07 64570.5
+0 1.90649e+07 41937.5
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.5036e+06 0 37616.4
+9.37352e+06 0 120677
+3.50462e+06 0 133136
+-575233 0 63194.1
+-172773 0 8010.02
+311970 0 -4818.95
+-20639.7 0 -4156.94
+-55599.5 0 215.024
+56861.7 0 4149.35
+15311.4 0 2252.99
+-12806.7 0 -141.055
+9551.67 0 548.862
+7286 0 1032.55
+-1667.67 0 342.921
+1879.02 0 81.569
+2604.01 0 240.911
+182.184 0 210.357
+303.296 0 205.366
+406.71 0 265.668
+-171.253 0 215.484
+-529.029 0 154.112
+-1237.89 0 200.343
+-953.164 0 254.851
+-880.729 0 230.909
+-4018.58 0 285.909
+-2904.28 0 320.516
+1184.34 0 112.428
+-10722.4 0 499.083
+-12480.2 0 1404.66
+15656.5 0 713.755
+-24245 0 -13.6357
+-75041.4 0 3404.81
+75849.1 0 5601.29
+14790.1 0 146.071
+-429472 0 -5216
+252374 0 -5715
+754443 0 13102.4
+-4.99108e+06 0 94438.3
+-1.32074e+07 0 198645
+-9.18272e+06 0 181827
+0 0 57714.9
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.04113e+06 -1.25026e+07 36327
+8.68916e+06 -2.10689e+07 96486.4
+3.24304e+06 -1.28748e+07 81389.2
+-535430 -4.32299e+06 24007.6
+-169423 -2.12486e+06 6575.84
+282593 -1.60369e+06 11888.3
+-15246.1 -742208 6697.41
+-49605.3 -332413 2903.86
+48903.8 -251975 4415.18
+12289.1 -127932 2261.88
+-11182.7 -46865.7 -133.795
+8773.11 -37140.6 668.953
+6369.1 -22196.3 1032.83
+-1347.77 -6432.52 304.73
+1785.46 -5097.87 234.145
+2157.38 -4063.33 444.53
+22.496 -1070.84 277.724
+287.003 -694.497 157.463
+420.527 -876.138 244.816
+-112.67 -434.249 288.423
+-455.694 -212.538 289.74
+-1167.82 -477.076 306.738
+-935.685 -1075.39 257.52
+-692.61 -870.754 180.116
+-3409.44 -1480.72 362.237
+-2719.44 -5338.71 582.899
+880.645 -6601.22 316.604
+-9445.15 -8974.19 446.991
+-11468 -29970.8 1381.91
+13765.8 -49031.5 842.828
+-19748.4 -64036.7 13.3868
+-64439.5 -174868 3408.75
+67980.3 -338107 5892.53
+9079.71 -449966 3769.85
+-388732 -1.01934e+06 9494.34
+247489 -2.18736e+06 16358.6
+702268 -2.89629e+06 9081.45
+-4.62762e+06 -6.01366e+06 37266.3
+-1.2261e+07 -1.80743e+07 124056
+-8.54059e+06 -2.97105e+07 147125
+0 -1.77288e+07 56129.5
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.38175e+06 -1.99006e+07 43953
+3.89088e+06 -1.7606e+07 70843.3
+-115716 -8.89206e+06 41608.6
+-199012 -4.26146e+06 20876.3
+206372 -2.54919e+06 18801.4
+-2161.79 -1.40462e+06 12063.8
+-45485 -700177 4930.54
+29820.1 -407116 3068.88
+7593.3 -229690 1368.78
+-10225.8 -110226 -31.859
+4332.01 -61548.7 470.112
+3460.57 -36395 684.124
+-1881.57 -16896.6 134.66
+554.749 -8893.68 26.2643
+1159.56 -5754.06 153.797
+-236.421 -2699.42 82.325
+9.74405 -1319.38 27.6468
+316.058 -988.101 50.6342
+-18.6597 -533.797 49.1132
+-128.899 -338.431 54.0404
+14.5198 -387.444 69.3895
+-110.318 -372.097 54.8925
+-510.577 -670.994 53.8742
+-113.964 -1253.67 57.9131
+129.815 -1726.06 34.8412
+-1634.81 -3618.2 118.05
+-703.403 -7601.84 200.114
+2149.91 -11857.8 30.3591
+-4954.93 -22917.1 215.675
+-5252.69 -48890.9 923.159
+13199.9 -82658.1 591.081
+-12030.7 -149809 58.1241
+-38588.6 -311473 2059.99
+62718.1 -550504 4241.27
+-5061.17 -953693 6980.26
+-283714 -1.92239e+06 17284.7
+286973 -3.49352e+06 26324.6
+132277 -5.88891e+06 28991.9
+-5.52233e+06 -1.24531e+07 60400.3
+-1.04293e+07 -2.48443e+07 105369
+0 -2.81828e+07 66644.5
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+39.7669 -0.142372 -1.05368
+39.7302 -0.165907 -1.05588
+39.6886 -0.190423 -1.05196
+39.6418 -0.215275 -1.04295
+39.5897 -0.239626 -1.03016
+39.5326 -0.262478 -1.01517
+39.4707 -0.282715 -0.999785
+39.4048 -0.299141 -0.985988
+39.3356 -0.31051 -0.975846
+39.2642 -0.315561 -0.971432
+39.192 -0.313058 -0.974718
+39.1202 -0.301821 -0.987466
+39.0499 -0.280762 -1.01111
+38.9822 -0.248928 -1.04661
+38.9173 -0.205536 -1.09436
+38.8546 -0.15003 -1.15399
+38.7925 -0.0821491 -1.22421
+38.7279 -0.00201211 -1.30267
+38.6562 0.0897755 -1.38576
+38.5712 0.192004 -1.46849
+38.4654 0.302738 -1.54452
+38.3299 0.419205 -1.60627
+38.1553 0.537705 -1.64532
+37.9321 0.653543 -1.65313
+37.652 0.760965 -1.62196
+37.3088 0.853034 -1.54598
+36.9017 0.921217 -1.4224
+36.4395 0.953092 -1.25202
+35.9619 0.917529 -1.03912
+35.6556 0.669268 -0.790149
+36.5501 -0.629829 -0.511501
+44.5111 -7.81075 -0.208225
+92.0633 -47.528 0.106487
+352.335 -260.393 0.355658
+1712.26 -1360.27 0.219385
+8573.77 -6862.48 -1.05055
+42261.4 -33691.4 -2.28916
+204391 -162148 22.4225
+975115 -770816 260.654
+4.62505e+06 -3.65041e+06 1727.35
+2.13702e+06 -1.74154e+07 10241.2
+168107 -1.56402e+07 9021.47
+-100181 -8.62601e+06 4393.32
+29728.5 -4.39238e+06 2806.79
+5930.32 -2.52508e+06 1736.49
+-12971.6 -1.3848e+06 508.517
+3755.24 -716292 175.397
+2612.59 -405802 97.3844
+-2334.92 -224715 -39.2737
+224.765 -112771 33.9685
+781.314 -62098.3 89.4867
+-398.557 -35209.3 8.53931
+-74.4962 -17215.2 -17.587
+199.021 -9164.34 10.6516
+-51.0125 -5500.96 5.49545
+-39.0154 -2708.76 -4.4424
+42.6492 -1400.28 1.66169
+-3.61188 -941.402 2.67222
+-8.70871 -528.162 -0.47407
+5.39287 -352.939 0.828622
+-9.62453 -373.549 2.6871
+11.0543 -393.301 0.825983
+-0.693779 -658.756 -0.496154
+-54.5397 -1199.28 3.36409
+52.0909 -1831.57 1.62167
+50.9329 -3613.71 -5.12901
+-256.036 -7291.23 8.53046
+123.12 -12233.2 12.4565
+472.493 -23259.2 -22.5043
+-1057.33 -47353.3 19.5736
+-156.812 -83547.8 119.764
+3002.4 -152947 38.9599
+-3788.44 -304647 -30.8044
+-4563.79 -549493 171.737
+17698.6 -975130 273.63
+-9906.79 -1.89361e+06 823.022
+-40454.6 -3.46274e+06 2652.05
+141054 -6.07206e+06 4134.66
+-249962 -1.20655e+07 6486.76
+-3.04291e+06 -2.20563e+07 13688.3
+-6.55846e+06 -2.4672e+07 16026.6
+-1.37722e+06 -5.18211e+06 2884.87
+-285681 -1.09173e+06 491.312
+-57986.6 -227734 65.4104
+-11436.7 -46559.2 6.5545
+-2198.03 -9241.12 1.605
+-435.341 -1763.57 1.40949
+-115.604 -320.127 1.01591
+-61.4817 -54.2675 0.517078
+-53.5419 -7.8868 0.0519577
+-53.1272 -0.171615 -0.378943
+-53.8383 1.13716 -0.795188
+-54.6615 1.41553 -1.20126
+-55.4252 1.49587 -1.58717
+-56.0904 1.50359 -1.93556
+-56.6471 1.4631 -2.22831
+-57.0966 1.38463 -2.45139
+-57.447 1.27573 -2.59757
+-57.7099 1.14323 -2.66697
+-57.8997 0.99361 -2.66604
+-58.0318 0.833065 -2.60557
+-58.1218 0.667289 -2.49854
+-58.1845 0.501274 -2.3583
+-58.2333 0.339187 -2.19725
+-58.279 0.184362 -2.02619
+-58.3298 0.0393884 -1.85403
+-58.3913 -0.0937455 -1.68791
+-58.4662 -0.213509 -1.53339
+-58.5551 -0.318717 -1.39473
+-58.6567 -0.408466 -1.27504
+-58.7689 -0.482126 -1.17648
+-58.8885 -0.539353 -1.10023
+-59.0122 -0.580129 -1.04663
+-59.137 -0.604794 -1.01516
+-59.2598 -0.614055 -1.00451
+-59.3782 -0.60898 -1.01271
+-59.4903 -0.590962 -1.03724
+-59.5943 -0.56167 -1.07514
+-59.6894 -0.522964 -1.12318
+-59.7748 -0.476793 -1.17796
+0 -0.425069 -1.23607
+766.468 -2.79764 -19.9891
+765.773 -3.2801 -20.028
+764.983 -3.78465 -19.9487
+764.091 -4.29786 -19.7712
+763.098 -4.80235 -19.5212
+762.006 -5.27758 -19.2299
+760.823 -5.70057 -18.9326
+759.56 -6.04662 -18.6685
+758.234 -6.29004 -18.4781
+756.868 -6.40488 -18.4024
+755.488 -6.36576 -18.4803
+754.121 -6.14873 -18.7468
+752.794 -5.73203 -19.2303
+751.53 -5.09705 -19.9502
+750.341 -4.22925 -20.9143
+749.227 -3.11933 -22.1157
+748.168 -1.76461 -23.5296
+747.12 -0.170784 -25.1099
+746.014 1.64613 -26.7861
+744.753 3.65765 -28.4609
+743.217 5.82077 -30.0102
+741.26 8.07623 -31.2858
+738.729 10.3474 -32.1227
+735.462 12.5396 -32.3525
+731.313 14.5396 -31.8211
+726.174 16.214 -30.4105
+720.01 17.4033 -28.0594
+712.934 17.8992 -24.7763
+705.388 17.3275 -20.6386
+698.912 14.4828 -15.7724
+700.069 3.58804 -10.3132
+740.916 -45.5456 -4.36187
+980.08 -286.008 2.00326
+2169.3 -1451.46 8.49056
+7652.81 -6848.51 13.8862
+31252.7 -30471.8 15.9232
+125282 -127744 22.5102
+465000 -501937 127.642
+1.51845e+06 -1.82452e+06 824.088
+3.79541e+06 -5.92822e+06 3796.9
+1.77562e+06 -1.5398e+07 11819.9
+212650 -1.40795e+07 11184.4
+-44324.9 -8.37052e+06 6694.55
+17773.7 -4.45507e+06 4093.37
+354.007 -2.50737e+06 2341.4
+-7908.54 -1.37593e+06 1016.02
+2837.6 -726685 516.163
+1232.35 -404116 280.484
+-1476.48 -221996 100.197
+284.84 -114524 95.4366
+418.963 -62227.9 87.6017
+-281.417 -34504.4 17.5391
+-15.6886 -17477.1 -1.26437
+113.513 -9291.49 11.8617
+-45.4009 -5339.59 4.43224
+-19.1572 -2733.07 -2.00423
+25.8683 -1444.85 1.60393
+-6.30547 -909.091 1.49784
+-4.77744 -529.462 -0.544829
+4.96511 -362.774 0.115682
+-6.34637 -362.569 1.02181
+7.47611 -407.23 0.146935
+5.89082 -656.919 -0.536147
+-32.1194 -1161.1 1.98905
+27.8085 -1890.83 1.83705
+50.9916 -3634.43 -2.19314
+-146.87 -7090.36 6.9582
+39.9129 -12417.3 15.3074
+343.498 -23557.8 -0.549459
+-577.406 -46426.5 30.4575
+-288.85 -83829.7 121.941
+1923.13 -155149 130.712
+-1857.92 -300856 161.153
+-3563.61 -547678 431.467
+10830.9 -989050 771.015
+-1761.3 -1.88024e+06 1547.85
+-24935.1 -3.43931e+06 3529.84
+61288.7 -6.15931e+06 6074.53
+-310092 -1.16965e+07 9953.54
+-2.52841e+06 -1.98418e+07 16887.3
+-5.3856e+06 -2.18189e+07 18268.7
+-2.14616e+06 -8.42314e+06 6146.97
+-650501 -2.58789e+06 1461.99
+-172085 -706302 287.125
+-41786.7 -176906 72.4262
+-9931.15 -41116.8 40.0271
+-2812.16 -8893.33 29.0541
+-1352.19 -1786.25 19.0037
+-1082.74 -326.199 9.53352
+-1045.49 -43.9369 0.801994
+-1050.84 10.1161 -7.51929
+-1063.39 22.2666 -15.6708
+-1076.37 26.2816 -23.6309
+-1088.18 27.9594 -31.1635
+-1098.33 28.3818 -37.9238
+-1106.68 27.8642 -43.5669
+-1113.3 26.5785 -47.8315
+-1118.33 24.6594 -50.588
+-1121.99 22.232 -51.8474
+-1124.52 19.4203 -51.7401
+-1126.18 16.3473 -50.4783
+-1127.24 13.1292 -48.3153
+-1127.94 9.87111 -45.5106
+-1128.5 6.66274 -42.3053
+-1129.1 3.5778 -38.9095
+-1129.89 0.675029 -35.4968
+-1130.94 -1.99954 -32.2067
+-1132.29 -4.40997 -29.148
+-1133.94 -6.52837 -26.4036
+-1135.86 -8.3337 -24.0345
+-1138.01 -9.81139 -22.082
+-1140.3 -10.9536 -20.5693
+-1142.69 -11.7599 -19.5021
+-1145.11 -12.2374 -18.8699
+-1147.49 -12.4011 -18.647
+-1149.79 -12.2735 -18.7944
+-1151.96 -11.8837 -19.2626
+-1153.99 -11.2663 -19.9936
+-1155.83 -10.4597 -20.924
+-1157.49 -9.50439 -21.9875
+0 -8.43996 -23.1173
+13303.1 -46.991 -340.309
+13291.3 -55.5265 -340.916
+13277.9 -64.4921 -339.466
+13262.7 -73.6447 -336.313
+13245.7 -82.6735 -331.912
+13226.9 -91.2127 -326.812
+13206.6 -98.8529 -321.642
+13184.8 -105.153 -317.091
+13162 -109.655 -313.884
+13138.4 -111.895 -312.747
+13114.7 -111.423 -314.376
+13091.2 -107.817 -319.394
+13068.6 -100.703 -328.31
+13047.3 -89.7676 -341.476
+13027.7 -74.7813 -359.035
+13010 -55.6191 -380.872
+12993.9 -32.2858 -406.552
+12979.1 -4.94487 -435.267
+12964.6 26.0495 -465.773
+12949.3 60.1198 -496.36
+12931.5 96.4373 -524.839
+12909.2 133.902 -548.599
+12880.2 171.136 -564.726
+12842.1 206.488 -570.229
+12792.7 238.041 -562.348
+12730.3 263.6 -538.925
+12654 280.626 -498.761
+12565 286.007 -441.872
+12468.2 275.32 -369.494
+12376.7 239.753 -283.794
+12327.1 151.635 -187.237
+12443.1 -103.955 -81.7669
+13206.9 -1035.57 31.8945
+16545 -4818.86 154.085
+29778 -20153.8 284.298
+78241.5 -79054.4 420.07
+238597 -288285 579.621
+698417 -962075 934.985
+1.74114e+06 -2.86788e+06 2222.24
+3.08811e+06 -7.27657e+06 6251.71
+1.6061e+06 -1.39185e+07 13948
+319469 -1.27953e+07 14206.4
+6649.45 -8.05939e+06 9704.23
+12094.5 -4.46137e+06 6043.52
+70.5581 -2.49547e+06 3536.86
+-5092.9 -1.37055e+06 1832.15
+1529.37 -733163 992.495
+794.798 -403366 548.027
+-878.865 -220335 266.117
+158.933 -115566 166.772
+263.759 -62334.7 112.475
+-164.642 -34075.5 42.8861
+-11.8846 -17628.7 15.7319
+69.6683 -9372.31 15.8184
+-26.2374 -5242.46 7.44574
+-12.1549 -2746.09 1.23891
+15.4893 -1472.26 2.23681
+-3.67498 -889.871 1.64827
+-3.13041 -529.881 0.0978898
+2.70811 -368.671 0.354605
+-3.91185 -356.152 0.8918
+4.39073 -415.598 0.419964
+2.96508 -655.354 0.235441
+-19.6032 -1138.46 2.20548
+17.1054 -1927.19 2.8596
+28.7309 -3644.7 2.11001
+-90.4086 -6969.73 10.8971
+26.9249 -12533.7 21.4634
+199.336 -23728.7 23.1832
+-363.181 -45863.6 64.5625
+-156.625 -84038.8 159.018
+1139.71 -156452 236.452
+-1196.14 -298540 395.782
+-1912.97 -546947 811.992
+6898.08 -997682 1461.03
+-1092.67 -1.87202e+06 2723.77
+-17563.1 -3.42313e+06 5258.16
+-11388.9 -6.16688e+06 8949.79
+-459372 -1.12512e+07 14435.8
+-2.2865e+06 -1.80187e+07 21389.8
+-4.38625e+06 -1.97235e+07 21414.5
+-2.46433e+06 -1.03475e+07 9946.71
+-979320 -4.07408e+06 3728.22
+-329493 -1.35671e+06 1637.29
+-106460 -400274 1009.8
+-40814.1 -106986 727.998
+-23596.4 -26269.4 515.762
+-19514.7 -5969.94 331.139
+-18691.5 -1191.72 166.473
+-18641.5 -71.3053 13.9468
+-18775.7 234.509 -133.167
+-18949.5 351.937 -277.761
+-19120.2 412.151 -418.524
+-19272.2 444.253 -550.97
+-19399.5 456.787 -669.067
+-19501.2 453.574 -766.938
+-19578.9 437.009 -840.233
+-19635.1 409.041 -886.888
+-19673.2 371.589 -907.252
+-19697 326.679 -903.701
+-19710.1 276.405 -879.998
+-19716.5 222.829 -840.588
+-19719.8 167.86 -790.016
+-19723 113.177 -732.505
+-19729 60.1919 -671.737
+-19739.3 10.0553 -610.764
+-19755.3 -36.3133 -552.039
+-19777.3 -78.1886 -497.476
+-19805 -115.007 -448.535
+-19837.8 -146.346 -406.285
+-19874.7 -171.918 -371.445
+-19914.5 -191.569 -344.413
+-19956 -205.29 -325.282
+-19998.1 -213.214 -313.854
+-20039.6 -215.618 -309.668
+-20079.7 -212.911 -312.034
+-20117.7 -205.622 -320.072
+-20153 -194.37 -332.76
+-20185.2 -179.843 -348.98
+-20214.1 -162.763 -367.56
+0 -143.843 -387.327
+230047 -775.29 -5759.39
+229849 -924.253 -5768.63
+229621 -1081.38 -5742.28
+229362 -1242.34 -5686.53
+229073 -1401.66 -5609.37
+228752 -1552.91 -5520.47
+228404 -1688.86 -5430.9
+228030 -1801.74 -5352.83
+227638 -1883.43 -5299.05
+227233 -1925.77 -5282.42
+226824 -1920.83 -5315.26
+226421 -1861.26 -5408.66
+226035 -1740.59 -5571.71
+225674 -1553.61 -5810.71
+225347 -1296.74 -6128.3
+225060 -968.387 -6522.54
+224812 -569.453 -6985.88
+224602 -103.797 -7504.13
+224420 421.244 -8055.5
+224250 994.374 -8609.96
+224071 1599.97 -9129.12
+223857 2217.92 -9567.12
+223577 2823.68 -9872.74
+223197 3388.68 -9993.18
+222685 3880.71 -9879.33
+222010 4264.15 -9492.17
+221156 4499.17 -8809.01
+220131 4538.91 -7828.05
+218995 4322.35 -6569.09
+217901 3755.91 -5069.07
+217184 2657.24 -3372.1
+217578 556.415 -1515.54
+220853 -4035.28 484.494
+231760 -16221.4 2642.29
+263623 -53247.5 4996.73
+352188 -169562 7579.02
+580874 -519665 10365.3
+1.09398e+06 -1.47875e+06 13309.4
+1.97022e+06 -3.74869e+06 16623.6
+2.67319e+06 -7.98511e+06 21013.3
+1.51775e+06 -1.27691e+07 25759.1
+437242 -1.172e+07 23469.3
+79037.9 -7.7048e+06 16618.1
+26964.4 -4.41145e+06 10526.6
+6930.72 -2.4765e+06 6285.93
+-207.833 -1.36385e+06 3544.08
+2137.22 -735740 2001.38
+1182.17 -402577 1128.52
+-140.022 -219116 609.872
+269.902 -116032 349.341
+257.978 -62352.4 205.079
+-39.7239 -33792.9 101.863
+17.8224 -17693.7 50.7867
+54.06 -9412.5 31.7768
+-8.48502 -5181.52 16.7521
+-5.69527 -2749.5 7.50368
+8.37009 -1486.86 5.05143
+-3.78288 -878.065 3.15656
+-4.58947 -529.228 1.4331
+-1.86226 -371.592 1.21384
+-6.07732 -352.201 1.47961
+-1.99627 -419.892 1.42197
+-4.17937 -653.359 1.91992
+-18.5491 -1124.51 4.25286
+0.157682 -1946.55 6.8188
+-0.126053 -3645.22 10.6149
+-78.1788 -6893.87 23.5634
+-24.89 -12592.3 43.8939
+33.6461 -23797.4 71.667
+-357.592 -45492.9 145.431
+-334.865 -84102.2 289.22
+157.456 -157021 495.066
+-1672.22 -296857 879.033
+-2815.39 -546042 1634.6
+189.438 -1.00104e+06 2910.91
+-10350.7 -1.86217e+06 5207.35
+-38660.7 -3.39647e+06 9314.56
+-114177 -6.09469e+06 15727.6
+-627557 -1.07435e+07 25128
+-2.16981e+06 -1.64848e+07 36014.1
+-3.81822e+06 -1.8085e+07 40270.6
+-2.81302e+06 -1.13618e+07 33576.4
+-1.55883e+06 -5.33566e+06 26894.2
+-829039 -2.09229e+06 21622.3
+-508825 -725027 16969.1
+-388254 -231140 12747.4
+-346878 -70368.2 9039.55
+-333934 -20718.5 5820.02
+-330972 -4905.45 2948.33
+-331612 984.136 267.438
+-333530 3782.79 -2330.71
+-335767 5397.25 -4882.81
+-337892 6401.31 -7357.5
+-339716 7003.67 -9673.55
+-341176 7297.88 -11726.5
+-342278 7332.82 -13416.7
+-343055 7139.4 -14671.8
+-343557 6744.03 -15458.9
+-343836 6175.2 -15786.6
+-343946 5465.39 -15697.7
+-343942 4650.03 -15258.4
+-343880 3765.16 -14546.4
+-343810 2845.11 -13640.9
+-343777 1920.68 -12615.7
+-343816 1018.34 -11534.9
+-343954 160.038 -10452.1
+-344202 -636.466 -9410.13
+-344564 -1357.04 -8442.67
+-345033 -1990.73 -7575.23
+-345595 -2529.35 -6826.44
+-346231 -2967.41 -6208.75
+-346919 -3302.07 -5728.96
+-347638 -3533.15 -5388.47
+-348367 -3663.16 -5183.64
+-349088 -3697.17 -5106.22
+-349784 -3642.57 -5144
+-350443 -3508.8 -5281.49
+-351055 -3306.87 -5500.71
+-351613 -3048.94 -5782.02
+-352112 -2747.72 -6104.93
+0 -2415.85 -6448.86
+3.61827e+06 -1710.3 -32401
+3.61405e+06 -2498.01 -32467.2
+3.60952e+06 -3311.75 -32265.4
+3.60466e+06 -4124.21 -31820.2
+3.59944e+06 -4902.43 -31168.1
+3.59385e+06 -5608.78 -30358.1
+3.5879e+06 -6202.11 -29450.9
+3.58159e+06 -6638.95 -28519.2
+3.57496e+06 -6874.79 -27646.6
+3.56805e+06 -6865.47 -26927.2
+3.56092e+06 -6568.67 -26464.6
+3.55363e+06 -5945.39 -26370.5
+3.54624e+06 -4961.56 -26762
+3.53884e+06 -3589.59 -27757.2
+3.53146e+06 -1810.05 -29467.9
+3.52415e+06 386.56 -31987
+3.51689e+06 2997.95 -35371
+3.50966e+06 6007.79 -39617.4
+3.50237e+06 9383.15 -44638.4
+3.49491e+06 13071.2 -50235.8
+3.48711e+06 16994.6 -56082.2
+3.4788e+06 21045.4 -61717.1
+3.4698e+06 25074 -66563.9
+3.45999e+06 28872.5 -69973.5
+3.44938e+06 32146.7 -71291.7
+3.4382e+06 34468.4 -69936.4
+3.42715e+06 35200 -65461.4
+3.41771e+06 33372.7 -57570.1
+3.41271e+06 27491.7 -46047.3
+3.41713e+06 15216 -30596.7
+3.43956e+06 -7212.27 -10611.5
+3.49445e+06 -46091.7 15049.4
+3.60605e+06 -112689 48177.1
+3.8149e+06 -228689 91095.5
+4.18755e+06 -438073 146124
+4.82404e+06 -830262 214272
+5.83738e+06 -1.57454e+06 292686
+7.23065e+06 -2.93668e+06 370969
+8.55844e+06 -5.16622e+06 428728
+8.50423e+06 -8.03762e+06 440111
+5.69136e+06 -1.00605e+07 390239
+2.79246e+06 -8.90344e+06 295274
+1.20326e+06 -6.17114e+06 196730
+535554 -3.77799e+06 121682
+240721 -2.20174e+06 72573.8
+110022 -1.24456e+06 42405
+56321.8 -688421 24410.9
+28610.7 -378407 13869.9
+13721.4 -206170 7790.79
+7419.3 -110778 4337.1
+3997.76 -59488.8 2388.39
+1858.13 -31949.5 1299.48
+979.162 -16972.4 705.623
+537.418 -9054.35 384.554
+204.357 -4892.57 208.619
+64.7012 -2633.45 113.703
+5.64336 -1440.82 63.6865
+-51.3926 -828.395 36.7964
+-79.4961 -505.581 22.7246
+-95.164 -359.118 16.604
+-116.934 -333.39 15.6391
+-133.435 -406.99 19.1013
+-169.203 -623.03 28.6077
+-240.508 -1062.59 48.3244
+-317.13 -1886.88 85.1629
+-505.896 -3487.68 153.514
+-941.755 -6516.95 283.234
+-1526.18 -12120.3 524.078
+-2726.74 -22810 965.715
+-5588.7 -43033.7 1786.19
+-10150.6 -80302.5 3296.07
+-18731.7 -149880 6012.33
+-38886.6 -279386 10859.3
+-76195 -513652 19464.1
+-149258 -936904 34567.7
+-327648 -1.69993e+06 60802.8
+-729746 -3.02319e+06 105799
+-1.64494e+06 -5.2295e+06 181002
+-3.83457e+06 -8.63654e+06 298855
+-7.83986e+06 -1.2604e+07 456344
+-1.17333e+07 -1.43503e+07 608968
+-1.18053e+07 -1.14515e+07 687649
+-9.97143e+06 -7.3038e+06 665919
+-8.0604e+06 -4.09883e+06 569714
+-6.68376e+06 -2.16321e+06 442663
+-5.8299e+06 -1.12266e+06 318308
+-5.33829e+06 -584058 212999
+-5.06949e+06 -300802 130480
+-4.93184e+06 -145219 68191.4
+-4.86984e+06 -55983 21438.7
+-4.85042e+06 -3544.18 -14467.3
+-4.85389e+06 27196 -43200.7
+-4.86857e+06 44601.2 -67017.2
+-4.88772e+06 53629 -86794.1
+-4.90758e+06 57334.4 -102416
+-4.92625e+06 57626.9 -113330
+-4.94286e+06 55705 -119067
+-4.95718e+06 52327 -119581
+-4.96932e+06 47983.7 -115357
+-4.9796e+06 43006.7 -107332
+-4.98844e+06 37633.9 -96704.9
+-4.99629e+06 32046.8 -84727.1
+-5.00362e+06 26391.4 -72521.8
+-5.01084e+06 20789.8 -60974.1
+-5.01827e+06 15346.2 -50688
+-5.02618e+06 10151.1 -41999
+-5.03469e+06 5282.64 -35023.4
+-5.04386e+06 808.731 -29721.4
+-5.05364e+06 -3213.12 -25959
+-5.06394e+06 -6735.84 -23557
+-5.0746e+06 -9723.44 -22324.6
+-5.08543e+06 -12151.9 -22076.6
+-5.09624e+06 -14010.1 -22641.1
+-5.10686e+06 -15300 -23860.1
+-5.11711e+06 -16037.1 -25587.7
+-5.12686e+06 -16249.8 -27688.9
+-5.13601e+06 -15978.1 -30037.4
+-5.14448e+06 -15272.2 -32515.2
+-5.15222e+06 -14190.2 -35010.7
+-5.15924e+06 -12795.4 -37419.2
+0 -11152.6 -39643.5
+7.4977e+06 -4465.21 -60213
+7.49198e+06 -7251.48 -60452.8
+7.48663e+06 -10127.1 -60047.9
+7.48163e+06 -12990.3 -59009
+7.47692e+06 -15720.6 -57376.4
+7.47242e+06 -18182.2 -55223.9
+7.46803e+06 -20228.2 -52662.7
+7.46362e+06 -21705 -49844
+7.45904e+06 -22457.7 -46961.9
+7.4541e+06 -22335.8 -44253.7
+7.44861e+06 -21199.8 -41999.5
+7.44232e+06 -18927.7 -40517.7
+7.43501e+06 -15421.5 -40157.2
+7.42639e+06 -10614.8 -41283
+7.41618e+06 -4478.94 -44252.9
+7.40408e+06 2970.39 -49382.7
+7.38979e+06 11666.3 -56898.8
+7.37303e+06 21484.5 -66878.1
+7.35356e+06 32236.4 -79180.1
+7.33121e+06 43661.9 -93378.2
+7.30593e+06 55419.8 -108703
+7.27785e+06 67075.6 -124013
+7.24732e+06 78081.3 -137808
+7.21505e+06 87743.9 -148292
+7.18213e+06 95171.7 -153499
+7.15025e+06 99185.9 -151444
+7.12186e+06 98178.9 -140277
+7.10045e+06 89891.4 -118361
+7.09105e+06 71071.4 -84230.5
+7.10082e+06 36948.4 -36392.4
+7.13995e+06 -19614.4 26988.3
+7.22281e+06 -109595 108390
+7.36922e+06 -250565 211026
+7.60513e+06 -471859 338458
+7.95998e+06 -823436 493358
+8.45248e+06 -1.38746e+06 674716
+9.04689e+06 -2.28197e+06 872631
+9.55825e+06 -3.62272e+06 1.06087e+06
+9.53357e+06 -5.38049e+06 1.19194e+06
+8.3247e+06 -7.11063e+06 1.2069e+06
+5.79982e+06 -7.81322e+06 1.07266e+06
+3.35452e+06 -6.68372e+06 829963
+1.76254e+06 -4.73782e+06 575501
+900424 -3.01794e+06 372400
+454494 -1.81795e+06 231018
+229349 -1.05576e+06 139040
+117757 -597455 81647.3
+60621.6 -332721 46954.3
+31034.7 -182829 26528.4
+16135.8 -99240.8 14774.2
+8389.22 -53536.4 8135.77
+4256.13 -28768.9 4441.89
+2158.91 -15379.6 2412.5
+1066.5 -8229.23 1308.07
+461.342 -4429.55 710.089
+147.237 -2395.56 387.883
+-18.5761 -1316.58 215.347
+-118.475 -751.953 123.698
+-177.638 -460.628 76.5236
+-218.256 -328.534 55.2871
+-257.379 -303.467 51.47
+-302.998 -372.721 63.4004
+-375.884 -567.566 95.7996
+-503.145 -965.325 161.539
+-719.697 -1724.68 286.593
+-1136.16 -3172.14 521.137
+-1940.27 -5902.65 959.648
+-3402.38 -11017.4 1775.8
+-6229.46 -20664.2 3288.48
+-11800.9 -38753.9 6078
+-22268 -72277.6 11174.2
+-42490.2 -134251 20370
+-82684.1 -247758 36729.2
+-160381 -451723 65325.6
+-312600 -813236 114293
+-620477 -1.4427e+06 196256
+-1.23175e+06 -2.49931e+06 329793
+-2.41893e+06 -4.18766e+06 539473
+-4.62625e+06 -6.65847e+06 847753
+-8.04187e+06 -9.51876e+06 1.24122e+06
+-1.15862e+07 -1.1215e+07 1.61899e+06
+-1.32749e+07 -1.01763e+07 1.82412e+06
+-1.33043e+07 -7.62024e+06 1.79268e+06
+-1.25964e+07 -5.05586e+06 1.58133e+06
+-1.17844e+07 -3.13518e+06 1.28635e+06
+-1.11197e+07 -1.88085e+06 982771
+-1.06461e+07 -1.10619e+06 709856
+-1.0335e+07 -630767 480552
+-1.01455e+07 -333565 294106
+-1.0042e+07 -143611 144433
+-9.99796e+06 -20594.6 24496.2
+-9.99426e+06 59009.9 -71594
+-1.00173e+07 109632 -147747
+-1.00574e+07 140495 -205934
+-1.0108e+07 157626 -246838
+-1.01639e+07 164995 -270770
+-1.02217e+07 165246 -278471
+-1.02787e+07 160178 -271572
+-1.03329e+07 151072 -252648
+-1.03831e+07 138897 -224960
+-1.04285e+07 124430 -192037
+-1.04687e+07 108333 -157249
+-1.05037e+07 91188.8 -123471
+-1.05337e+07 73520.8 -92881.9
+-1.05591e+07 55801.2 -66912.2
+-1.05804e+07 38456.4 -46290.1
+-1.05979e+07 21867 -31165.7
+-1.06122e+07 6367.79 -21263.7
+-1.06236e+07 -7754.71 -16032.9
+-1.06325e+07 -20264.5 -14773.2
+-1.06393e+07 -30978.8 -16730.2
+-1.06442e+07 -39770.6 -21158.4
+-1.06476e+07 -46569.2 -27359.3
+-1.06498e+07 -51360.6 -34702.8
+-1.0651e+07 -54185.4 -42637.8
+-1.06515e+07 -55134.8 -50696.7
+-1.06517e+07 -54345.3 -58495.3
+-1.06517e+07 -51991.9 -65728.8
+-1.06519e+07 -48279 -72164.3
+-1.06525e+07 -43431.2 -77632.8
+0 -37682.7 -82021.3
+1.14191e+07 -7821.53 -89826.7
+1.14096e+07 -13092.8 -90338.7
+1.14002e+07 -18534.4 -89774.7
+1.13909e+07 -23950.4 -88122.2
+1.13816e+07 -29110.8 -85418.4
+1.13724e+07 -33757.6 -81759.1
+1.13631e+07 -37612.9 -77306.7
+1.13536e+07 -40387.4 -72298.1
+1.13439e+07 -41792.1 -67050.7
+1.13339e+07 -41549.3 -61965.2
+1.13233e+07 -39406.6 -57525.1
+1.13122e+07 -35149.9 -54290
+1.13003e+07 -28617.4 -52880.9
+1.12874e+07 -19713.2 -53955
+1.12735e+07 -8420.28 -58164.5
+1.12582e+07 5187.7 -66096.6
+1.12415e+07 20935.8 -78192.8
+1.12231e+07 38538.1 -94647.2
+1.1203e+07 57589.4 -115292
+1.11812e+07 77557.2 -139477
+1.11578e+07 97772.8 -165971
+1.1133e+07 117420 -192895
+1.11076e+07 135515 -217719
+1.10823e+07 150879 -237342
+1.10584e+07 162079 -248252
+1.10375e+07 167337 -246747
+1.10216e+07 164372 -229171
+1.10133e+07 150155 -192070
+1.10155e+07 120534 -132194
+1.10319e+07 69667.9 -46302.1
+1.10664e+07 -10829.7 69190.7
+1.11233e+07 -133259 218524
+1.12058e+07 -316098 406592
+1.13129e+07 -587612 638222
+1.14318e+07 -990465 916130
+1.15205e+07 -1.58364e+06 1.23647e+06
+1.14764e+07 -2.42973e+06 1.58059e+06
+1.10989e+07 -3.54443e+06 1.90317e+06
+1.00966e+07 -4.78928e+06 2.12438e+06
+8.25578e+06 -5.75689e+06 2.14604e+06
+5.81943e+06 -5.86012e+06 1.91327e+06
+3.61975e+06 -4.88163e+06 1.49452e+06
+2.08643e+06 -3.48837e+06 1.05134e+06
+1.15559e+06 -2.27244e+06 690941
+624914 -1.40149e+06 434492
+333416 -831706 264312
+176945 -479519 156449
+93412.5 -270668 90498.7
+49052.4 -150219 51351.6
+25722 -82250.3 28689.2
+13423.8 -44628.4 15837.8
+6919.73 -24067.9 8667.19
+3507.03 -12923.1 4716.42
+1706.28 -6935.89 2560.58
+742.207 -3735.8 1391.97
+227.161 -2025.71 761.478
+-52.5522 -1116.15 423.028
+-212.238 -637.039 243.107
+-309.034 -390.999 150.502
+-377.281 -279.481 108.663
+-440.366 -257.968 101.021
+-517.543 -317.249 124.409
+-636.449 -481.956 187.927
+-840.698 -818.284 316.578
+-1206.33 -1462.55 561.38
+-1887.85 -2682.51 1020.08
+-3171.95 -4978.67 1875.5
+-5583.93 -9285.22 3465.18
+-10175 -17359.9 6406.83
+-18947.1 -32417 11814.5
+-35574 -60243.8 21660.9
+-67192.2 -111248 39367.4
+-127409 -203553 70711.4
+-240980 -367516 125115
+-454186 -652916 217381
+-852534 -1.13741e+06 369780
+-1.58075e+06 -1.92988e+06 613711
+-2.86656e+06 -3.16225e+06 988539
+-5.00569e+06 -4.92354e+06 1.52728e+06
+-8.10805e+06 -6.98968e+06 2.20251e+06
+-1.15653e+07 -8.45854e+06 2.84525e+06
+-1.41609e+07 -8.28293e+06 3.19602e+06
+-1.55532e+07 -6.81249e+06 3.14906e+06
+-1.60644e+07 -4.96272e+06 2.79779e+06
+-1.6117e+07 -3.34721e+06 2.3005e+06
+-1.59935e+07 -2.15392e+06 1.78094e+06
+-1.58333e+07 -1.33851e+06 1.30524e+06
+-1.56915e+07 -795131 897428
+-1.5584e+07 -431827 559376
+-1.55116e+07 -185842 283980
+-1.547e+07 -17655.8 61947.7
+-1.54539e+07 97498.4 -114952
+-1.54582e+07 175537 -252605
+-1.54783e+07 226936 -354557
+-1.55099e+07 258680 -422893
+-1.55493e+07 275472 -459446
+-1.55932e+07 280540 -466830
+-1.56389e+07 276200 -448971
+-1.56841e+07 264221 -411074
+-1.5727e+07 246057 -359167
+-1.57666e+07 222984 -299462
+-1.58023e+07 196168 -237709
+-1.5834e+07 166698 -178715
+-1.58617e+07 135597 -126073
+-1.5886e+07 103824 -82092
+-1.59073e+07 72264.2 -47902.5
+-1.5926e+07 41728.1 -23657.6
+-1.59427e+07 12936.3 -8784.09
+-1.59577e+07 -13487.2 -2229.03
+-1.59713e+07 -37024.6 -2672.01
+-1.59839e+07 -57271.4 -8688.72
+-1.59956e+07 -73941.4 -18866.2
+-1.60065e+07 -86868.2 -31877.7
+-1.60168e+07 -96003.2 -46529
+-1.60266e+07 -101410 -61785.1
+-1.6036e+07 -103256 -76783
+-1.60449e+07 -101797 -90834.5
+-1.60536e+07 -97365.7 -103418
+-1.60621e+07 -90352.5 -114167
+-1.60706e+07 -81187 -122848
+0 -70318.2 -129344
+1.43861e+07 -9452.41 -116236
+1.43693e+07 -15993.3 -117065
+1.43507e+07 -22746.4 -116443
+1.43301e+07 -29466.5 -114338
+1.43078e+07 -35866.7 -110785
+1.42838e+07 -41626.4 -105899
+1.42583e+07 -46400.7 -99886.4
+1.42317e+07 -49832.8 -93058.3
+1.42043e+07 -51567.5 -85837.4
+1.41766e+07 -51267.2 -78763.8
+1.41491e+07 -48628.7 -72494.1
+1.41225e+07 -43401.1 -67793
+1.40973e+07 -35403.3 -65513.2
+1.40743e+07 -24541 -66561.7
+1.40541e+07 -10822.4 -71843.9
+1.40373e+07 5628.08 -82184.2
+1.40244e+07 24559.3 -98217.9
+1.4016e+07 45584.2 -120257
+1.40123e+07 68174.3 -148134
+1.40138e+07 91655.1 -181047
+1.40206e+07 115203 -217415
+1.40329e+07 137843 -254781
+1.40507e+07 158434 -289792
+1.40742e+07 175656 -318277
+1.41032e+07 187968 -335425
+1.41374e+07 193530 -336051
+1.41764e+07 190073 -314876
+1.42191e+07 174679 -266737
+1.42638e+07 143440 -186619
+1.43076e+07 90947.8 -69456
+1.43459e+07 9572.17 90226.3
+1.43709e+07 -111596 298630
+1.43692e+07 -288246 562592
+1.43173e+07 -542782 888577
+1.41728e+07 -905687 1.27995e+06
+1.38611e+07 -1.41248e+06 1.73099e+06
+1.32617e+07 -2.08724e+06 2.21568e+06
+1.22113e+07 -2.90061e+06 2.67127e+06
+1.05629e+07 -3.70511e+06 2.98685e+06
+8.33712e+06 -4.20483e+06 3.02509e+06
+5.88799e+06 -4.08438e+06 2.70767e+06
+3.78617e+06 -3.33805e+06 2.12754e+06
+2.28594e+06 -2.39001e+06 1.50811e+06
+1.32519e+06 -1.57625e+06 999383
+746609 -987215 633437
+412246 -595028 388033
+224469 -347885 231055
+120904 -198554 134335
+64556 -111150 76559
+34232.3 -61286 42933.7
+18007.3 -33425.4 23780.2
+9354.1 -18093.7 13052.7
+4754.41 -9748.43 7122.15
+2306.09 -5245.77 3876.07
+995.395 -2830.08 2111.88
+289.213 -1537.59 1157.83
+-97.5279 -848.752 644.502
+-317.283 -484.841 371.093
+-451.327 -298.052 230.153
+-546.509 -213.391 166.362
+-634.107 -197.039 154.641
+-741.895 -242.331 190.201
+-906.576 -367.569 286.766
+-1187.93 -623.1 482.071
+-1693.46 -1112.49 853.091
+-2627.13 -2036.32 1546.79
+-4372.08 -3771.66 2837.08
+-7647.81 -7021.9 5228.46
+-13825 -13093 9640.24
+-25477.6 -24366.8 17722.1
+-47375.7 -45115.7 32380.2
+-88381.9 -82886.6 58624.4
+-164709 -150622 104844
+-305241 -269669 184581
+-560640 -473947 318842
+-1.01704e+06 -814579 538722
+-1.81123e+06 -1.36187e+06 887186
+-3.14162e+06 -2.19969e+06 1.4169e+06
+-5.24491e+06 -3.38632e+06 2.17037e+06
+-8.2299e+06 -4.80107e+06 3.10644e+06
+-1.17312e+07 -5.92337e+06 3.99044e+06
+-1.48943e+07 -6.08054e+06 4.46517e+06
+-1.72025e+07 -5.2962e+06 4.38806e+06
+-1.86453e+07 -4.07928e+06 3.89172e+06
+-1.94526e+07 -2.88726e+06 3.19607e+06
+-1.98668e+07 -1.9301e+06 2.47123e+06
+-2.00592e+07 -1.23269e+06 1.80742e+06
+-2.01316e+07 -744462 1.23737e+06
+-2.01395e+07 -405388 764044
+-2.01128e+07 -168552 378459
+-2.00681e+07 -1847.85 68603.4
+-2.00149e+07 115908 -176394
+-1.99588e+07 198675 -364650
+-1.99032e+07 255674 -501527
+-1.985e+07 292990 -590696
+-1.98e+07 314670 -635590
+-1.97534e+07 323490 -640618
+-1.97104e+07 321486 -611760
+-1.96709e+07 310295 -556473
+-1.96351e+07 291364 -483099
+-1.96034e+07 266050 -400043
+-1.95765e+07 235673 -314986
+-1.95552e+07 201525 -234290
+-1.95403e+07 164870 -162672
+-1.95325e+07 126922 -103138
+-1.95324e+07 88831.8 -57128
+-1.95402e+07 51668.1 -24783.8
+-1.9556e+07 16394.8 -5280.74
+-1.95793e+07 -16145.9 2849.25
+-1.96096e+07 -45249.2 1437.45
+-1.96461e+07 -70360.8 -7540.44
+-1.96876e+07 -91083.8 -22120.7
+-1.97331e+07 -107181 -40456
+-1.97812e+07 -118572 -60882
+-1.98307e+07 -125325 -81957.1
+-1.98805e+07 -127641 -102483
+-1.99294e+07 -125840 -121511
+-1.99764e+07 -120336 -138331
+-2.00207e+07 -111619 -152456
+-2.00616e+07 -100228 -163591
+0 -86727.6 -171612
+1.6173e+07 -7772.63 -136289
+1.61471e+07 -13207.7 -137407
+1.61164e+07 -18819.2 -136808
+1.60808e+07 -24402.3 -134451
+1.60406e+07 -29718 -130373
+1.5996e+07 -34499.5 -124703
+1.59478e+07 -38460.3 -117684
+1.58968e+07 -41305.1 -109678
+1.58443e+07 -42740.9 -101182
+1.57914e+07 -42491 -92832.6
+1.574e+07 -40309.5 -85403.1
+1.56915e+07 -35996.2 -79796.9
+1.5648e+07 -29411.5 -77022.7
+1.56112e+07 -20490.8 -78155.1
+1.5583e+07 -9256.58 -84271
+1.55653e+07 4170.65 -96357
+1.55595e+07 19565 -115185
+1.55669e+07 36590 -141156
+1.55885e+07 54796.2 -174123
+1.56249e+07 73621.7 -213204
+1.56762e+07 92392.9 -256615
+1.57422e+07 110327 -301551
+1.58221e+07 126529 -344150
+1.59144e+07 139989 -379566
+1.60172e+07 149551 -402153
+1.61277e+07 153876 -405743
+1.62424e+07 151342 -383953
+1.63562e+07 139891 -330405
+1.64626e+07 116783 -238761
+1.65525e+07 78234.9 -102512
+1.66133e+07 18928.7 85418.5
+1.66274e+07 -68627.5 333003
+1.65682e+07 -194876 648981
+1.63958e+07 -373950 1.04168e+06
+1.60493e+07 -623519 1.51579e+06
+1.54388e+07 -961132 2.06526e+06
+1.44457e+07 -1.39182e+06 2.65951e+06
+1.29487e+07 -1.88202e+06 3.22303e+06
+1.08997e+07 -2.32746e+06 3.62035e+06
+8.44068e+06 -2.55436e+06 3.68169e+06
+5.95696e+06 -2.41383e+06 3.30772e+06
+3.89012e+06 -1.94864e+06 2.609e+06
+2.405e+06 -1.39493e+06 1.85767e+06
+1.43026e+06 -925873 1.23741e+06
+825632 -585203 788629
+465667 -356229 485730
+257964 -210205 290707
+140886 -120902 169810
+76072.9 -68098.9 97188.1
+40682.1 -37733.4 54711.8
+21536.6 -20656.7 30409.3
+11242.3 -11213.3 16744.1
+5727.73 -6055.64 9162.8
+2774.42 -3264.7 4999.9
+1187.32 -1763.74 2730.95
+328.102 -959.543 1500.74
+-144.601 -530.335 837.26
+-413.766 -303.24 483.142
+-578.59 -186.636 300.278
+-696.085 -133.783 217.387
+-804.278 -123.595 202.107
+-937.396 -151.975 248.243
+-1139.95 -230.268 373.467
+-1484.66 -389.873 626.354
+-2102.42 -695.311 1105.81
+-3237.62 -1270.92 2000.15
+-5348.57 -2350.58 3659.23
+-9294.9 -4369.83 6725.15
+-16689.1 -8132.54 12363.2
+-30528.5 -15099.9 22654.4
+-56322.2 -27880.5 41245.6
+-104089 -51035.1 74385.4
+-191717 -92297.7 132462
+-350306 -164262 232104
+-632384 -286552 398869
+-1.12328e+06 -488154 670215
+-1.95338e+06 -808562 1.09743e+06
+-3.30549e+06 -1.29505e+06 1.74295e+06
+-5.39467e+06 -1.98226e+06 2.65678e+06
+-8.34349e+06 -2.81199e+06 3.78765e+06
+-1.19129e+07 -3.51303e+06 4.8492e+06
+-1.54298e+07 -3.70844e+06 5.40684e+06
+-1.832e+07 -3.34066e+06 5.29135e+06
+-2.0393e+07 -2.65751e+06 4.67019e+06
+-2.17442e+07 -1.93318e+06 3.8144e+06
+-2.25665e+07 -1.31969e+06 2.93072e+06
+-2.30362e+07 -854780 2.12668e+06
+-2.32792e+07 -519729 1.43981e+06
+-2.33761e+07 -282050 872205
+-2.33772e+07 -113327 412125
+-2.3314e+07 7173.89 44588.6
+-2.32073e+07 93679.5 -243896
+-2.30715e+07 155726 -463540
+-2.29169e+07 199584 -621321
+-2.27509e+07 229310 -722208
+-2.25796e+07 247518 -770818
+-2.24075e+07 255959 -772790
+-2.22387e+07 255919 -735451
+-2.20769e+07 248469 -667702
+-2.19253e+07 234606 -579355
+-2.17873e+07 215325 -480205
+-2.16658e+07 191639 -379155
+-2.15635e+07 164579 -283546
+-2.14825e+07 135177 -198808
+-2.14243e+07 104453 -128387
+-2.13899e+07 73386.5 -73917.1
+-2.13793e+07 42897.3 -35536.3
+-2.13918e+07 13824.4 -12263.1
+-2.14261e+07 -13094.2 -2370.54
+-2.148e+07 -37237.5 -3708.61
+-2.15511e+07 -58114.5 -13956.6
+-2.16365e+07 -75370.9 -30804.5
+-2.17328e+07 -88791.9 -52074.7
+-2.18367e+07 -98298.7 -75800.9
+-2.19451e+07 -103941 -100277
+-2.20545e+07 -105883 -124081
+-2.21622e+07 -104391 -146086
+-2.22654e+07 -99813 -165450
+-2.23618e+07 -92558.2 -181593
+-2.24496e+07 -83078.6 -194169
+0 -71847 -203035
+1.70354e+07 -3003.84 -148578
+1.70022e+07 -5112.36 -149892
+1.69614e+07 -7289.31 -149341
+1.69131e+07 -9455.01 -146878
+1.68576e+07 -11516.6 -142545
+1.67954e+07 -13370.5 -136484
+1.67277e+07 -14905.6 -128955
+1.66559e+07 -16007.6 -120353
+1.65817e+07 -16563.1 -111217
+1.65074e+07 -16465.8 -102235
+1.64353e+07 -15621.3 -94245
+1.63682e+07 -13953.7 -88223.6
+1.63089e+07 -11411 -85262.5
+1.62604e+07 -7970.71 -86525
+1.62256e+07 -3644.78 -93178.7
+1.62071e+07 1516.8 -106297
+1.62073e+07 7423.17 -126727
+1.62282e+07 13941.1 -154923
+1.62711e+07 20894.6 -190755
+1.63369e+07 28065.8 -233312
+1.64254e+07 35196.1 -280719
+1.6536e+07 41988 -330009
+1.6667e+07 48105.6 -377078
+1.68159e+07 53173.1 -416750
+1.69792e+07 56767.9 -442967
+1.71523e+07 58403.9 -449070
+1.73292e+07 57498.5 -428102
+1.75021e+07 53315.2 -373039
+1.7661e+07 44872.3 -276800
+1.77928e+07 30811 -132019
+1.78796e+07 9222.24 69392
+1.78969e+07 -22564.6 336601
+1.78097e+07 -68208 679730
+1.75681e+07 -132513 1.1086e+06
+1.71013e+07 -221196 1.62924e+06
+1.63135e+07 -339369 2.23609e+06
+1.50924e+07 -487039 2.89661e+06
+1.33463e+07 -650412 3.52801e+06
+1.10827e+07 -792442 3.97973e+06
+8.50152e+06 -856283 4.06105e+06
+5.99447e+06 -798847 3.6582e+06
+3.94161e+06 -641018 2.89173e+06
+2.46484e+06 -458655 2.0639e+06
+1.48529e+06 -305249 1.37889e+06
+868744 -193750 881888
+495859 -118507 545194
+277468 -70251.9 327500
+152793 -40565.3 191971
+83051.5 -22921.8 110228
+44643.5 -12733.1 62236.7
+23726.3 -6984.15 34685.2
+12420.4 -3796.89 19145.8
+6336.65 -2052.93 10500.7
+3066.54 -1107.82 5741.88
+1304.12 -598.945 3142.27
+347.322 -326.072 1729.91
+-180.457 -180.334 966.802
+-481.625 -103.171 558.852
+-666.507 -63.5396 347.905
+-798.612 -45.5753 252.18
+-920.367 -42.1181 234.503
+-1070.07 -51.7819 287.741
+-1297.33 -78.4139 432.175
+-1683.06 -132.677 723.511
+-2372.67 -236.469 1275.01
+-3636.2 -431.917 2301.87
+-5978.71 -798.244 4202.9
+-10344.5 -1482.81 7708.04
+-18493.5 -2756.94 14137.7
+-33676.2 -5112.85 25841.7
+-61824.2 -9426.72 46920.8
+-113602 -17223 84369.5
+-207784 -31071.4 149754
+-376485 -55127.2 261483
+-672826 -95805.5 447673
+-1.1811e+06 -162494 749312
+-2.02772e+06 -267946 1.22232e+06
+-3.38811e+06 -427512 1.93484e+06
+-5.47008e+06 -652813 2.94173e+06
+-8.40749e+06 -926663 4.18625e+06
+-1.20232e+07 -1.16483e+06 5.35033e+06
+-1.57322e+07 -1.24586e+06 5.95102e+06
+-1.8943e+07 -1.14007e+06 5.80377e+06
+-2.13764e+07 -920616 5.09983e+06
+-2.30503e+07 -678189 4.14338e+06
+-2.41219e+07 -467408 3.16379e+06
+-2.47638e+07 -304639 2.27832e+06
+-2.51126e+07 -185723 1.52621e+06
+-2.52628e+07 -100547 907934
+-2.52763e+07 -39659.6 409283
+-2.51942e+07 4088.31 12919.4
+-2.50442e+07 35710.6 -296584
+-2.48458e+07 58599.9 -530900
+-2.46135e+07 74981 -698053
+-2.43586e+07 86270.7 -803778
+-2.40902e+07 93362 -853322
+-2.38164e+07 96839 -852933
+-2.35444e+07 97127.4 -810586
+-2.32809e+07 94587.9 -735882
+-2.30321e+07 89568.5 -639345
+-2.28038e+07 82427.9 -531458
+-2.26012e+07 73541.6 -421726
+-2.24289e+07 63300 -317981
+-2.22902e+07 52100.4 -226010
+-2.21878e+07 40338.8 -149482
+-2.21229e+07 28399.8 -90135.1
+-2.20955e+07 16646.6 -48108.9
+-2.21046e+07 5412.07 -22350.5
+-2.21478e+07 -5009.81 -11011.2
+-2.22219e+07 -14371.1 -11789.4
+-2.23228e+07 -22475.1 -22199.2
+-2.24461e+07 -29179.4 -39762.9
+-2.25865e+07 -34397.1 -62141.5
+-2.2739e+07 -38095.1 -87218.1
+-2.28985e+07 -40291.2 -113151
+-2.30598e+07 -41049 -138403
+-2.32185e+07 -40471.7 -161749
+-2.33705e+07 -38694.7 -182273
+-2.35121e+07 -35877.7 -199338
+-2.36404e+07 -32196.8 -212561
+0 -27836.4 -221781
+1.72819e+07 3003.84 -152693
+1.72458e+07 5112.36 -154076
+1.72012e+07 7289.31 -153547
+1.7148e+07 9455.01 -151059
+1.70865e+07 11516.6 -146654
+1.70175e+07 13370.5 -140478
+1.69422e+07 14905.6 -132801
+1.68623e+07 16007.6 -124026
+1.67797e+07 16563.1 -114704
+1.66969e+07 16465.8 -105542
+1.66168e+07 15621.4 -97395.7
+1.65424e+07 13953.7 -91265.1
+1.6477e+07 11411 -88266.6
+1.64239e+07 7970.7 -89590.3
+1.63865e+07 3644.78 -96431.3
+1.63677e+07 -1516.8 -109890
+1.63703e+07 -7423.17 -130835
+1.63963e+07 -13941.1 -159739
+1.64474e+07 -20894.6 -196478
+1.65244e+07 -28065.8 -240135
+1.66271e+07 -35196.1 -288812
+1.67546e+07 -41988 -339497
+1.6905e+07 -48105.6 -388018
+1.70754e+07 -53173.1 -429108
+1.72616e+07 -56767.9 -456592
+1.74583e+07 -58403.9 -463668
+1.76587e+07 -57498.5 -443217
+1.78541e+07 -53315.2 -388018
+1.80333e+07 -44872.3 -290765
+1.81816e+07 -30811 -143817
+1.82794e+07 -9222.23 61250.1
+1.82997e+07 22564.6 334021
+1.82046e+07 68208 685116
+1.79409e+07 132513 1.12492e+06
+1.74345e+07 221196 1.66004e+06
+1.65884e+07 339369 2.28523e+06
+1.52933e+07 487039 2.96744e+06
+1.34678e+07 650412 3.62166e+06
+1.11373e+07 792442 4.09229e+06
+8.51876e+06 856283 4.18144e+06
+6.00446e+06 798847 3.77025e+06
+3.95597e+06 641018 2.9824e+06
+2.48233e+06 458655 2.1302e+06
+1.50198e+06 305249 1.4246e+06
+882212 193750 912244
+505509 118507 564724
+283816 70251.9 339695
+156721 40565.3 199381
+85376.1 22921.8 114623
+45972.8 12733.1 64791.1
+24465 6984.15 36146
+12819 3796.89 19970.9
+6542.91 2052.93 10962.7
+3165.24 1107.82 5999.21
+1343.02 598.945 3285.49
+352.828 326.072 1810
+-193.853 180.334 1012.23
+-506.055 103.171 585.491
+-697.876 63.5396 364.714
+-835.052 45.5753 264.489
+-961.524 42.1181 245.97
+-1116.98 51.7819 301.699
+-1352.79 78.4139 452.86
+-1752.67 132.677 757.63
+-2466.93 236.469 1334.22
+-3774.35 431.917 2407.07
+-6195.76 798.244 4391.71
+-10703.8 1482.81 8047.9
+-19107.5 2756.94 14748.3
+-34741.1 5112.85 26932.5
+-63672.8 9426.72 48851.2
+-116772 17223 87742.3
+-213082 31071.4 155551
+-385000 55127.2 271247
+-685745 95805.5 463744
+-1.19916e+06 162494 775116
+-2.05031e+06 267946 1.26272e+06
+-3.41242e+06 427512 1.99654e+06
+-5.49163e+06 652813 3.03312e+06
+-8.4259e+06 926663 4.31412e+06
+-1.2057e+07 1.16483e+06 5.51093e+06
+-1.58263e+07 1.24586e+06 6.12434e+06
+-1.9139e+07 1.14007e+06 5.96487e+06
+-2.16895e+07 920616 5.2322e+06
+-2.34702e+07 678189 4.24188e+06
+-2.46255e+07 467408 3.23083e+06
+-2.53259e+07 304639 2.31934e+06
+-2.57109e+07 185723 1.54697e+06
+-2.58789e+07 100547 913408
+-2.58963e+07 39659.6 403456
+-2.58069e+07 -4088.3 -1114.27
+-2.56409e+07 -35710.6 -316439
+-2.54196e+07 -58599.9 -554705
+-2.51588e+07 -74981 -724292
+-2.48709e+07 -86270.7 -831175
+-2.45665e+07 -93362 -880783
+-2.42546e+07 -96839 -879531
+-2.39436e+07 -97127.4 -835571
+-2.36414e+07 -94587.9 -758697
+-2.33554e+07 -89568.5 -659636
+-2.30923e+07 -82427.9 -549063
+-2.28583e+07 -73541.6 -436657
+-2.26587e+07 -63299.9 -330395
+-2.24975e+07 -52100.4 -236167
+-2.23777e+07 -40338.8 -157708
+-2.23008e+07 -28399.8 -96787.3
+-2.22667e+07 -16646.6 -53548.1
+-2.22743e+07 -5412.06 -26918.4
+-2.23208e+07 5009.81 -15016.4
+-2.24027e+07 14371.1 -15498.8
+-2.25153e+07 22475.1 -25833.9
+-2.26534e+07 29179.4 -43497.4
+-2.28111e+07 34397.1 -66104.1
+-2.29826e+07 38095.1 -91494.2
+-2.31621e+07 40291.2 -117786
+-2.33438e+07 41049 -143408
+-2.35225e+07 40471.7 -167105
+-2.36935e+07 38694.7 -187936
+-2.38528e+07 35877.7 -205246
+-2.3997e+07 32196.8 -218641
+0 27836.4 -227948
+1.70354e+07 7772.63 -148578
+1.70022e+07 13207.7 -149892
+1.69614e+07 18819.2 -149341
+1.69131e+07 24402.3 -146878
+1.68576e+07 29718 -142545
+1.67954e+07 34499.5 -136484
+1.67277e+07 38460.3 -128955
+1.66559e+07 41305.1 -120353
+1.65817e+07 42740.9 -111217
+1.65074e+07 42491 -102235
+1.64353e+07 40309.5 -94245
+1.63682e+07 35996.2 -88223.6
+1.63089e+07 29411.5 -85262.5
+1.62604e+07 20490.8 -86525
+1.62256e+07 9256.58 -93178.7
+1.62071e+07 -4170.64 -106297
+1.62073e+07 -19565 -126727
+1.62282e+07 -36590 -154923
+1.62711e+07 -54796.2 -190755
+1.63369e+07 -73621.7 -233312
+1.64254e+07 -92392.9 -280719
+1.6536e+07 -110327 -330009
+1.6667e+07 -126529 -377078
+1.68159e+07 -139989 -416750
+1.69792e+07 -149551 -442967
+1.71523e+07 -153876 -449070
+1.73292e+07 -151342 -428102
+1.75021e+07 -139891 -373039
+1.7661e+07 -116783 -276800
+1.77928e+07 -78234.9 -132019
+1.78796e+07 -18928.7 69392
+1.78969e+07 68627.5 336601
+1.78097e+07 194876 679730
+1.75681e+07 373950 1.1086e+06
+1.71013e+07 623519 1.62924e+06
+1.63135e+07 961132 2.23609e+06
+1.50924e+07 1.39182e+06 2.89661e+06
+1.33463e+07 1.88202e+06 3.52801e+06
+1.10827e+07 2.32746e+06 3.97973e+06
+8.50152e+06 2.55436e+06 4.06105e+06
+5.99447e+06 2.41383e+06 3.6582e+06
+3.94161e+06 1.94864e+06 2.89173e+06
+2.46484e+06 1.39493e+06 2.0639e+06
+1.48529e+06 925873 1.37889e+06
+868744 585203 881888
+495859 356229 545194
+277468 210205 327500
+152793 120902 191971
+83051.5 68098.9 110228
+44643.5 37733.4 62236.7
+23726.3 20656.7 34685.2
+12420.4 11213.3 19145.8
+6336.65 6055.64 10500.7
+3066.54 3264.7 5741.88
+1304.12 1763.74 3142.27
+347.322 959.543 1729.91
+-180.457 530.335 966.802
+-481.625 303.24 558.852
+-666.507 186.636 347.905
+-798.612 133.783 252.18
+-920.367 123.595 234.503
+-1070.07 151.975 287.741
+-1297.33 230.268 432.175
+-1683.06 389.873 723.511
+-2372.67 695.311 1275.01
+-3636.2 1270.92 2301.87
+-5978.71 2350.58 4202.9
+-10344.5 4369.83 7708.04
+-18493.5 8132.54 14137.7
+-33676.2 15099.9 25841.7
+-61824.2 27880.5 46920.8
+-113602 51035.1 84369.5
+-207784 92297.7 149754
+-376485 164262 261483
+-672826 286552 447673
+-1.1811e+06 488154 749312
+-2.02772e+06 808562 1.22232e+06
+-3.38811e+06 1.29505e+06 1.93484e+06
+-5.47008e+06 1.98226e+06 2.94173e+06
+-8.40749e+06 2.81199e+06 4.18625e+06
+-1.20232e+07 3.51303e+06 5.35033e+06
+-1.57322e+07 3.70844e+06 5.95102e+06
+-1.8943e+07 3.34066e+06 5.80377e+06
+-2.13764e+07 2.65751e+06 5.09983e+06
+-2.30503e+07 1.93318e+06 4.14338e+06
+-2.41219e+07 1.31969e+06 3.16379e+06
+-2.47638e+07 854780 2.27832e+06
+-2.51126e+07 519729 1.52621e+06
+-2.52628e+07 282050 907934
+-2.52763e+07 113327 409283
+-2.51942e+07 -7173.88 12919.5
+-2.50442e+07 -93679.5 -296584
+-2.48458e+07 -155726 -530900
+-2.46135e+07 -199584 -698053
+-2.43586e+07 -229310 -803778
+-2.40902e+07 -247518 -853322
+-2.38164e+07 -255959 -852933
+-2.35444e+07 -255919 -810586
+-2.32809e+07 -248469 -735882
+-2.30321e+07 -234606 -639345
+-2.28038e+07 -215325 -531458
+-2.26012e+07 -191639 -421726
+-2.24289e+07 -164579 -317981
+-2.22902e+07 -135177 -226010
+-2.21878e+07 -104453 -149482
+-2.21229e+07 -73386.5 -90135.1
+-2.20955e+07 -42897.3 -48108.9
+-2.21046e+07 -13824.4 -22350.5
+-2.21478e+07 13094.2 -11011.2
+-2.22219e+07 37237.5 -11789.4
+-2.23228e+07 58114.5 -22199.2
+-2.24461e+07 75370.9 -39762.9
+-2.25865e+07 88791.9 -62141.5
+-2.2739e+07 98298.7 -87218.1
+-2.28985e+07 103941 -113151
+-2.30598e+07 105883 -138403
+-2.32185e+07 104391 -161749
+-2.33705e+07 99813 -182273
+-2.35121e+07 92558.2 -199338
+-2.36404e+07 83078.6 -212561
+0 71847 -221781
+1.6173e+07 9452.41 -136289
+1.61471e+07 15993.3 -137407
+1.61164e+07 22746.4 -136808
+1.60808e+07 29466.5 -134451
+1.60406e+07 35866.7 -130373
+1.5996e+07 41626.4 -124703
+1.59478e+07 46400.7 -117684
+1.58968e+07 49832.8 -109678
+1.58443e+07 51567.5 -101182
+1.57914e+07 51267.2 -92832.6
+1.574e+07 48628.7 -85403.1
+1.56915e+07 43401.1 -79796.9
+1.5648e+07 35403.2 -77022.7
+1.56112e+07 24541 -78155.1
+1.5583e+07 10822.4 -84271
+1.55653e+07 -5628.08 -96357
+1.55595e+07 -24559.3 -115185
+1.55669e+07 -45584.2 -141156
+1.55885e+07 -68174.3 -174123
+1.56249e+07 -91655.1 -213204
+1.56762e+07 -115203 -256615
+1.57422e+07 -137843 -301551
+1.58221e+07 -158434 -344150
+1.59144e+07 -175656 -379566
+1.60172e+07 -187968 -402153
+1.61277e+07 -193530 -405743
+1.62424e+07 -190073 -383953
+1.63562e+07 -174679 -330405
+1.64626e+07 -143440 -238761
+1.65525e+07 -90947.8 -102512
+1.66133e+07 -9572.17 85418.5
+1.66274e+07 111596 333003
+1.65682e+07 288246 648981
+1.63958e+07 542782 1.04168e+06
+1.60493e+07 905687 1.51579e+06
+1.54388e+07 1.41248e+06 2.06526e+06
+1.44457e+07 2.08724e+06 2.65951e+06
+1.29487e+07 2.90061e+06 3.22303e+06
+1.08997e+07 3.70511e+06 3.62035e+06
+8.44068e+06 4.20483e+06 3.68169e+06
+5.95696e+06 4.08438e+06 3.30772e+06
+3.89012e+06 3.33805e+06 2.609e+06
+2.405e+06 2.39001e+06 1.85767e+06
+1.43026e+06 1.57625e+06 1.23741e+06
+825632 987215 788629
+465667 595028 485730
+257964 347885 290707
+140886 198554 169810
+76072.9 111150 97188.1
+40682.1 61286 54711.8
+21536.6 33425.4 30409.3
+11242.3 18093.7 16744.1
+5727.73 9748.43 9162.8
+2774.42 5245.77 4999.9
+1187.32 2830.08 2730.95
+328.102 1537.59 1500.74
+-144.601 848.752 837.26
+-413.766 484.841 483.142
+-578.59 298.052 300.278
+-696.085 213.391 217.387
+-804.278 197.039 202.107
+-937.396 242.331 248.243
+-1139.95 367.569 373.467
+-1484.66 623.1 626.354
+-2102.42 1112.49 1105.81
+-3237.62 2036.32 2000.15
+-5348.57 3771.66 3659.23
+-9294.9 7021.9 6725.15
+-16689.1 13093 12363.2
+-30528.5 24366.8 22654.4
+-56322.2 45115.7 41245.6
+-104089 82886.6 74385.4
+-191717 150622 132462
+-350306 269669 232104
+-632384 473947 398869
+-1.12328e+06 814579 670215
+-1.95338e+06 1.36187e+06 1.09743e+06
+-3.30549e+06 2.19969e+06 1.74295e+06
+-5.39467e+06 3.38632e+06 2.65678e+06
+-8.34349e+06 4.80107e+06 3.78765e+06
+-1.19129e+07 5.92337e+06 4.8492e+06
+-1.54298e+07 6.08054e+06 5.40684e+06
+-1.832e+07 5.2962e+06 5.29135e+06
+-2.0393e+07 4.07928e+06 4.67019e+06
+-2.17442e+07 2.88726e+06 3.8144e+06
+-2.25665e+07 1.9301e+06 2.93072e+06
+-2.30362e+07 1.23269e+06 2.12668e+06
+-2.32792e+07 744462 1.43981e+06
+-2.33761e+07 405388 872205
+-2.33772e+07 168552 412125
+-2.3314e+07 1847.86 44588.6
+-2.32073e+07 -115908 -243896
+-2.30715e+07 -198675 -463540
+-2.29169e+07 -255674 -621321
+-2.27509e+07 -292990 -722208
+-2.25796e+07 -314670 -770818
+-2.24075e+07 -323490 -772790
+-2.22387e+07 -321486 -735451
+-2.20769e+07 -310295 -667702
+-2.19253e+07 -291364 -579355
+-2.17873e+07 -266050 -480205
+-2.16658e+07 -235673 -379155
+-2.15635e+07 -201525 -283546
+-2.14825e+07 -164870 -198808
+-2.14243e+07 -126922 -128387
+-2.13899e+07 -88831.8 -73917.1
+-2.13793e+07 -51668.1 -35536.3
+-2.13918e+07 -16394.8 -12263.1
+-2.14261e+07 16145.9 -2370.54
+-2.148e+07 45249.2 -3708.61
+-2.15511e+07 70360.8 -13956.6
+-2.16365e+07 91083.8 -30804.5
+-2.17328e+07 107181 -52074.7
+-2.18367e+07 118572 -75800.9
+-2.19451e+07 125325 -100277
+-2.20545e+07 127641 -124081
+-2.21622e+07 125840 -146086
+-2.22654e+07 120336 -165450
+-2.23618e+07 111619 -181593
+-2.24496e+07 100228 -194169
+0 86727.6 -203035
+1.43861e+07 7821.53 -116236
+1.43693e+07 13092.8 -117065
+1.43507e+07 18534.4 -116443
+1.43301e+07 23950.4 -114338
+1.43078e+07 29110.8 -110785
+1.42838e+07 33757.6 -105899
+1.42583e+07 37612.9 -99886.4
+1.42317e+07 40387.4 -93058.3
+1.42043e+07 41792.1 -85837.4
+1.41766e+07 41549.3 -78763.8
+1.41491e+07 39406.6 -72494.1
+1.41225e+07 35149.9 -67793
+1.40973e+07 28617.4 -65513.2
+1.40743e+07 19713.2 -66561.7
+1.40541e+07 8420.28 -71843.9
+1.40373e+07 -5187.7 -82184.2
+1.40244e+07 -20935.8 -98217.9
+1.4016e+07 -38538.1 -120257
+1.40123e+07 -57589.4 -148134
+1.40138e+07 -77557.2 -181047
+1.40206e+07 -97772.8 -217415
+1.40329e+07 -117420 -254781
+1.40507e+07 -135515 -289792
+1.40742e+07 -150879 -318277
+1.41032e+07 -162079 -335425
+1.41374e+07 -167337 -336051
+1.41764e+07 -164372 -314876
+1.42191e+07 -150155 -266737
+1.42638e+07 -120534 -186619
+1.43076e+07 -69667.9 -69456
+1.43459e+07 10829.7 90226.3
+1.43709e+07 133259 298630
+1.43692e+07 316098 562592
+1.43173e+07 587612 888577
+1.41728e+07 990465 1.27995e+06
+1.38611e+07 1.58364e+06 1.73099e+06
+1.32617e+07 2.42973e+06 2.21568e+06
+1.22113e+07 3.54443e+06 2.67127e+06
+1.05629e+07 4.78928e+06 2.98685e+06
+8.33712e+06 5.75689e+06 3.02509e+06
+5.88799e+06 5.86012e+06 2.70767e+06
+3.78617e+06 4.88163e+06 2.12754e+06
+2.28594e+06 3.48837e+06 1.50811e+06
+1.32519e+06 2.27244e+06 999383
+746609 1.40149e+06 633437
+412246 831706 388033
+224469 479519 231055
+120904 270668 134335
+64556 150219 76559
+34232.3 82250.3 42933.7
+18007.3 44628.4 23780.2
+9354.1 24067.9 13052.7
+4754.41 12923.1 7122.15
+2306.09 6935.89 3876.07
+995.395 3735.8 2111.88
+289.213 2025.71 1157.83
+-97.5279 1116.15 644.502
+-317.283 637.039 371.093
+-451.327 390.999 230.153
+-546.509 279.481 166.362
+-634.107 257.968 154.641
+-741.895 317.249 190.201
+-906.576 481.956 286.766
+-1187.93 818.284 482.071
+-1693.46 1462.55 853.091
+-2627.13 2682.51 1546.79
+-4372.08 4978.67 2837.08
+-7647.81 9285.22 5228.46
+-13825 17359.9 9640.24
+-25477.6 32417 17722.1
+-47375.7 60243.8 32380.2
+-88381.9 111248 58624.4
+-164709 203553 104844
+-305241 367516 184581
+-560640 652916 318842
+-1.01704e+06 1.13741e+06 538722
+-1.81123e+06 1.92988e+06 887186
+-3.14162e+06 3.16225e+06 1.4169e+06
+-5.24491e+06 4.92354e+06 2.17037e+06
+-8.2299e+06 6.98968e+06 3.10644e+06
+-1.17312e+07 8.45854e+06 3.99044e+06
+-1.48943e+07 8.28293e+06 4.46517e+06
+-1.72025e+07 6.81249e+06 4.38806e+06
+-1.86453e+07 4.96272e+06 3.89172e+06
+-1.94526e+07 3.34721e+06 3.19607e+06
+-1.98668e+07 2.15392e+06 2.47123e+06
+-2.00592e+07 1.33851e+06 1.80742e+06
+-2.01316e+07 795131 1.23737e+06
+-2.01395e+07 431827 764044
+-2.01128e+07 185842 378459
+-2.00681e+07 17655.8 68603.4
+-2.00149e+07 -97498.5 -176394
+-1.99588e+07 -175537 -364650
+-1.99032e+07 -226936 -501527
+-1.985e+07 -258680 -590696
+-1.98e+07 -275472 -635590
+-1.97534e+07 -280540 -640618
+-1.97104e+07 -276200 -611760
+-1.96709e+07 -264221 -556473
+-1.96351e+07 -246057 -483099
+-1.96034e+07 -222984 -400043
+-1.95765e+07 -196168 -314986
+-1.95552e+07 -166698 -234290
+-1.95403e+07 -135597 -162672
+-1.95325e+07 -103824 -103138
+-1.95324e+07 -72264.2 -57128
+-1.95402e+07 -41728.1 -24783.8
+-1.9556e+07 -12936.3 -5280.74
+-1.95793e+07 13487.2 2849.24
+-1.96096e+07 37024.6 1437.45
+-1.96461e+07 57271.4 -7540.44
+-1.96876e+07 73941.4 -22120.7
+-1.97331e+07 86868.2 -40456
+-1.97812e+07 96003.2 -60882
+-1.98307e+07 101410 -81957.1
+-1.98805e+07 103256 -102483
+-1.99294e+07 101797 -121511
+-1.99764e+07 97365.7 -138331
+-2.00207e+07 90352.5 -152456
+-2.00616e+07 81187 -163591
+0 70318.2 -171612
+1.14191e+07 4465.21 -89826.7
+1.14096e+07 7251.48 -90338.7
+1.14002e+07 10127.1 -89774.7
+1.13909e+07 12990.3 -88122.2
+1.13816e+07 15720.6 -85418.4
+1.13724e+07 18182.2 -81759.1
+1.13631e+07 20228.2 -77306.7
+1.13536e+07 21705 -72298.1
+1.13439e+07 22457.7 -67050.7
+1.13339e+07 22335.8 -61965.2
+1.13233e+07 21199.8 -57525.1
+1.13122e+07 18927.7 -54290
+1.13003e+07 15421.5 -52880.9
+1.12874e+07 10614.8 -53955
+1.12735e+07 4478.94 -58164.5
+1.12582e+07 -2970.4 -66096.6
+1.12415e+07 -11666.3 -78192.8
+1.12231e+07 -21484.5 -94647.2
+1.1203e+07 -32236.4 -115292
+1.11812e+07 -43661.9 -139477
+1.11578e+07 -55419.8 -165971
+1.1133e+07 -67075.6 -192895
+1.11076e+07 -78081.3 -217719
+1.10823e+07 -87743.9 -237342
+1.10584e+07 -95171.7 -248252
+1.10375e+07 -99185.9 -246747
+1.10216e+07 -98178.9 -229171
+1.10133e+07 -89891.4 -192070
+1.10155e+07 -71071.4 -132194
+1.10319e+07 -36948.4 -46302.1
+1.10664e+07 19614.4 69190.7
+1.11233e+07 109595 218524
+1.12058e+07 250565 406592
+1.13129e+07 471859 638222
+1.14318e+07 823436 916130
+1.15205e+07 1.38746e+06 1.23647e+06
+1.14764e+07 2.28197e+06 1.58059e+06
+1.10989e+07 3.62272e+06 1.90317e+06
+1.00966e+07 5.38049e+06 2.12438e+06
+8.25578e+06 7.11063e+06 2.14604e+06
+5.81943e+06 7.81322e+06 1.91327e+06
+3.61975e+06 6.68372e+06 1.49452e+06
+2.08643e+06 4.73782e+06 1.05134e+06
+1.15559e+06 3.01794e+06 690941
+624914 1.81795e+06 434492
+333416 1.05576e+06 264312
+176945 597455 156449
+93412.5 332721 90498.7
+49052.4 182829 51351.6
+25722 99240.8 28689.2
+13423.8 53536.4 15837.8
+6919.73 28768.9 8667.19
+3507.03 15379.6 4716.42
+1706.28 8229.23 2560.58
+742.207 4429.55 1391.97
+227.161 2395.56 761.478
+-52.5522 1316.58 423.028
+-212.238 751.953 243.107
+-309.034 460.628 150.502
+-377.281 328.534 108.663
+-440.366 303.467 101.021
+-517.543 372.721 124.409
+-636.449 567.566 187.927
+-840.698 965.325 316.578
+-1206.33 1724.68 561.38
+-1887.85 3172.14 1020.08
+-3171.95 5902.65 1875.5
+-5583.93 11017.4 3465.18
+-10175 20664.2 6406.83
+-18947.1 38753.9 11814.5
+-35574 72277.6 21660.9
+-67192.2 134251 39367.4
+-127409 247758 70711.4
+-240980 451723 125115
+-454186 813236 217381
+-852534 1.4427e+06 369780
+-1.58075e+06 2.49931e+06 613711
+-2.86656e+06 4.18766e+06 988539
+-5.00569e+06 6.65847e+06 1.52728e+06
+-8.10805e+06 9.51876e+06 2.20251e+06
+-1.15653e+07 1.1215e+07 2.84525e+06
+-1.41609e+07 1.01763e+07 3.19602e+06
+-1.55532e+07 7.62024e+06 3.14906e+06
+-1.60644e+07 5.05586e+06 2.79779e+06
+-1.6117e+07 3.13518e+06 2.3005e+06
+-1.59935e+07 1.88085e+06 1.78094e+06
+-1.58333e+07 1.10619e+06 1.30524e+06
+-1.56915e+07 630767 897428
+-1.5584e+07 333565 559376
+-1.55116e+07 143611 283980
+-1.547e+07 20594.6 61947.7
+-1.54539e+07 -59009.9 -114952
+-1.54582e+07 -109632 -252605
+-1.54783e+07 -140495 -354557
+-1.55099e+07 -157626 -422893
+-1.55493e+07 -164995 -459446
+-1.55932e+07 -165246 -466830
+-1.56389e+07 -160178 -448971
+-1.56841e+07 -151072 -411074
+-1.5727e+07 -138897 -359167
+-1.57666e+07 -124430 -299462
+-1.58023e+07 -108333 -237709
+-1.5834e+07 -91188.8 -178715
+-1.58617e+07 -73520.8 -126073
+-1.5886e+07 -55801.2 -82092
+-1.59073e+07 -38456.4 -47902.5
+-1.5926e+07 -21867 -23657.6
+-1.59427e+07 -6367.79 -8784.09
+-1.59577e+07 7754.71 -2229.03
+-1.59713e+07 20264.5 -2672
+-1.59839e+07 30978.8 -8688.72
+-1.59956e+07 39770.6 -18866.2
+-1.60065e+07 46569.2 -31877.7
+-1.60168e+07 51360.6 -46529
+-1.60266e+07 54185.4 -61785.1
+-1.6036e+07 55134.8 -76783
+-1.60449e+07 54345.3 -90834.5
+-1.60536e+07 51991.9 -103418
+-1.60621e+07 48279 -114167
+-1.60706e+07 43431.2 -122848
+0 37682.7 -129344
+7.4977e+06 1710.3 -60213
+7.49198e+06 2498.01 -60452.8
+7.48663e+06 3311.75 -60047.9
+7.48163e+06 4124.21 -59009
+7.47692e+06 4902.44 -57376.4
+7.47242e+06 5608.78 -55223.9
+7.46803e+06 6202.11 -52662.7
+7.46362e+06 6638.95 -49844
+7.45904e+06 6874.79 -46961.9
+7.4541e+06 6865.47 -44253.7
+7.44861e+06 6568.67 -41999.5
+7.44232e+06 5945.39 -40517.7
+7.43501e+06 4961.56 -40157.2
+7.42639e+06 3589.59 -41283
+7.41618e+06 1810.05 -44252.9
+7.40408e+06 -386.558 -49382.7
+7.38979e+06 -2997.95 -56898.8
+7.37303e+06 -6007.79 -66878.1
+7.35356e+06 -9383.15 -79180.1
+7.33121e+06 -13071.2 -93378.2
+7.30593e+06 -16994.6 -108703
+7.27785e+06 -21045.4 -124013
+7.24732e+06 -25074 -137808
+7.21505e+06 -28872.5 -148292
+7.18213e+06 -32146.7 -153499
+7.15025e+06 -34468.4 -151444
+7.12186e+06 -35200 -140277
+7.10045e+06 -33372.7 -118361
+7.09105e+06 -27491.7 -84230.5
+7.10082e+06 -15216 -36392.4
+7.13995e+06 7212.27 26988.3
+7.22281e+06 46091.7 108390
+7.36922e+06 112689 211026
+7.60513e+06 228689 338458
+7.95998e+06 438073 493358
+8.45248e+06 830262 674716
+9.04689e+06 1.57454e+06 872631
+9.55825e+06 2.93668e+06 1.06087e+06
+9.53357e+06 5.16622e+06 1.19194e+06
+8.3247e+06 8.03762e+06 1.2069e+06
+5.79982e+06 1.00605e+07 1.07266e+06
+3.35452e+06 8.90344e+06 829963
+1.76254e+06 6.17114e+06 575501
+900424 3.77799e+06 372400
+454494 2.20174e+06 231018
+229349 1.24456e+06 139040
+117757 688421 81647.3
+60621.6 378407 46954.3
+31034.7 206170 26528.4
+16135.8 110778 14774.2
+8389.22 59488.8 8135.77
+4256.13 31949.5 4441.89
+2158.91 16972.4 2412.5
+1066.5 9054.35 1308.07
+461.342 4892.57 710.089
+147.237 2633.45 387.883
+-18.5761 1440.82 215.347
+-118.475 828.395 123.698
+-177.638 505.581 76.5236
+-218.256 359.118 55.2871
+-257.379 333.39 51.47
+-302.998 406.99 63.4004
+-375.884 623.03 95.7996
+-503.145 1062.59 161.539
+-719.697 1886.88 286.593
+-1136.16 3487.68 521.137
+-1940.27 6516.95 959.648
+-3402.38 12120.3 1775.8
+-6229.46 22810 3288.48
+-11800.9 43033.7 6078
+-22268 80302.5 11174.2
+-42490.2 149880 20370
+-82684.1 279386 36729.2
+-160381 513652 65325.6
+-312600 936904 114293
+-620477 1.69993e+06 196256
+-1.23175e+06 3.02319e+06 329793
+-2.41893e+06 5.2295e+06 539473
+-4.62625e+06 8.63654e+06 847753
+-8.04187e+06 1.2604e+07 1.24122e+06
+-1.15862e+07 1.43503e+07 1.61899e+06
+-1.32749e+07 1.14515e+07 1.82412e+06
+-1.33043e+07 7.3038e+06 1.79268e+06
+-1.25964e+07 4.09883e+06 1.58133e+06
+-1.17844e+07 2.16321e+06 1.28635e+06
+-1.11197e+07 1.12266e+06 982771
+-1.06461e+07 584058 709856
+-1.0335e+07 300802 480552
+-1.01455e+07 145219 294106
+-1.0042e+07 55983 144433
+-9.99796e+06 3544.18 24496.2
+-9.99426e+06 -27196 -71594
+-1.00173e+07 -44601.2 -147747
+-1.00574e+07 -53629 -205934
+-1.0108e+07 -57334.4 -246838
+-1.01639e+07 -57626.9 -270770
+-1.02217e+07 -55705 -278471
+-1.02787e+07 -52327 -271572
+-1.03329e+07 -47983.7 -252648
+-1.03831e+07 -43006.7 -224960
+-1.04285e+07 -37633.9 -192037
+-1.04687e+07 -32046.8 -157249
+-1.05037e+07 -26391.4 -123471
+-1.05337e+07 -20789.8 -92881.9
+-1.05591e+07 -15346.2 -66912.2
+-1.05804e+07 -10151.1 -46290.1
+-1.05979e+07 -5282.64 -31165.7
+-1.06122e+07 -808.732 -21263.7
+-1.06236e+07 3213.12 -16032.9
+-1.06325e+07 6735.84 -14773.2
+-1.06393e+07 9723.44 -16730.2
+-1.06442e+07 12151.9 -21158.4
+-1.06476e+07 14010.1 -27359.3
+-1.06498e+07 15300 -34702.8
+-1.0651e+07 16037.1 -42637.8
+-1.06515e+07 16249.8 -50696.7
+-1.06517e+07 15978.1 -58495.3
+-1.06517e+07 15272.2 -65728.8
+-1.06519e+07 14190.2 -72164.3
+-1.06525e+07 12795.4 -77632.8
+0 11152.6 -82021.3
+3.61827e+06 775.29 -32401
+3.61405e+06 924.253 -32467.2
+3.60952e+06 1081.38 -32265.4
+3.60466e+06 1242.34 -31820.2
+3.59944e+06 1401.66 -31168.1
+3.59385e+06 1552.91 -30358.1
+3.5879e+06 1688.86 -29450.9
+3.58159e+06 1801.74 -28519.2
+3.57496e+06 1883.43 -27646.6
+3.56805e+06 1925.77 -26927.2
+3.56092e+06 1920.83 -26464.6
+3.55363e+06 1861.26 -26370.5
+3.54624e+06 1740.59 -26762
+3.53884e+06 1553.61 -27757.2
+3.53146e+06 1296.74 -29467.9
+3.52415e+06 968.387 -31987
+3.51689e+06 569.452 -35371
+3.50966e+06 103.797 -39617.4
+3.50237e+06 -421.243 -44638.4
+3.49491e+06 -994.374 -50235.8
+3.48711e+06 -1599.97 -56082.2
+3.4788e+06 -2217.92 -61717.1
+3.4698e+06 -2823.68 -66563.9
+3.45999e+06 -3388.68 -69973.5
+3.44938e+06 -3880.71 -71291.7
+3.4382e+06 -4264.15 -69936.4
+3.42715e+06 -4499.17 -65461.4
+3.41771e+06 -4538.91 -57570.1
+3.41271e+06 -4322.35 -46047.3
+3.41713e+06 -3755.91 -30596.7
+3.43956e+06 -2657.24 -10611.5
+3.49445e+06 -556.415 15049.4
+3.60605e+06 4035.28 48177.1
+3.8149e+06 16221.4 91095.5
+4.18755e+06 53247.5 146124
+4.82404e+06 169562 214272
+5.83738e+06 519665 292686
+7.23065e+06 1.47875e+06 370969
+8.55844e+06 3.74869e+06 428728
+8.50423e+06 7.98511e+06 440111
+5.69136e+06 1.27691e+07 390239
+2.79246e+06 1.172e+07 295274
+1.20326e+06 7.7048e+06 196730
+535554 4.41145e+06 121682
+240721 2.4765e+06 72573.8
+110022 1.36385e+06 42405
+56321.8 735740 24410.9
+28610.7 402577 13869.9
+13721.4 219116 7790.79
+7419.3 116032 4337.1
+3997.76 62352.4 2388.39
+1858.13 33792.9 1299.48
+979.162 17693.7 705.623
+537.418 9412.5 384.554
+204.357 5181.52 208.619
+64.7012 2749.5 113.703
+5.64336 1486.86 63.6865
+-51.3926 878.065 36.7964
+-79.4961 529.228 22.7246
+-95.164 371.592 16.604
+-116.934 352.201 15.6391
+-133.435 419.892 19.1013
+-169.203 653.359 28.6077
+-240.508 1124.51 48.3244
+-317.13 1946.55 85.1629
+-505.896 3645.22 153.514
+-941.755 6893.87 283.234
+-1526.18 12592.3 524.078
+-2726.74 23797.4 965.715
+-5588.7 45492.9 1786.19
+-10150.6 84102.2 3296.07
+-18731.7 157021 6012.33
+-38886.6 296857 10859.3
+-76195 546042 19464.1
+-149258 1.00104e+06 34567.7
+-327648 1.86217e+06 60802.8
+-729746 3.39647e+06 105799
+-1.64494e+06 6.09469e+06 181002
+-3.83457e+06 1.07435e+07 298855
+-7.83986e+06 1.64848e+07 456344
+-1.17333e+07 1.8085e+07 608968
+-1.18053e+07 1.13618e+07 687649
+-9.97143e+06 5.33566e+06 665919
+-8.0604e+06 2.09229e+06 569714
+-6.68376e+06 725027 442663
+-5.8299e+06 231140 318308
+-5.33829e+06 70368.2 212999
+-5.06949e+06 20718.5 130480
+-4.93184e+06 4905.45 68191.4
+-4.86984e+06 -984.137 21438.7
+-4.85042e+06 -3782.79 -14467.2
+-4.85389e+06 -5397.25 -43200.7
+-4.86857e+06 -6401.31 -67017.2
+-4.88772e+06 -7003.67 -86794.1
+-4.90758e+06 -7297.88 -102416
+-4.92625e+06 -7332.82 -113330
+-4.94286e+06 -7139.4 -119067
+-4.95718e+06 -6744.03 -119581
+-4.96932e+06 -6175.2 -115357
+-4.9796e+06 -5465.39 -107332
+-4.98844e+06 -4650.03 -96704.9
+-4.99629e+06 -3765.16 -84727.1
+-5.00362e+06 -2845.11 -72521.8
+-5.01084e+06 -1920.68 -60974.1
+-5.01827e+06 -1018.34 -50688
+-5.02618e+06 -160.038 -41999
+-5.03469e+06 636.466 -35023.4
+-5.04386e+06 1357.05 -29721.4
+-5.05364e+06 1990.73 -25959
+-5.06394e+06 2529.35 -23557
+-5.0746e+06 2967.41 -22324.6
+-5.08543e+06 3302.07 -22076.6
+-5.09624e+06 3533.15 -22641.1
+-5.10686e+06 3663.16 -23860.1
+-5.11711e+06 3697.17 -25587.7
+-5.12686e+06 3642.57 -27688.9
+-5.13601e+06 3508.8 -30037.4
+-5.14448e+06 3306.87 -32515.2
+-5.15222e+06 3048.94 -35010.7
+-5.15924e+06 2747.72 -37419.2
+0 2415.85 -39643.5
+230047 46.991 -5759.39
+229849 55.5265 -5768.63
+229621 64.4922 -5742.28
+229362 73.6447 -5686.53
+229073 82.6735 -5609.37
+228752 91.2127 -5520.47
+228404 98.8529 -5430.9
+228030 105.153 -5352.83
+227638 109.655 -5299.05
+227233 111.895 -5282.42
+226824 111.423 -5315.26
+226421 107.817 -5408.66
+226035 100.703 -5571.71
+225674 89.7676 -5810.71
+225347 74.7813 -6128.3
+225060 55.6191 -6522.54
+224812 32.2858 -6985.88
+224602 4.94487 -7504.13
+224420 -26.0495 -8055.5
+224250 -60.1198 -8609.96
+224071 -96.4373 -9129.12
+223857 -133.902 -9567.12
+223577 -171.136 -9872.74
+223197 -206.488 -9993.18
+222685 -238.041 -9879.33
+222010 -263.6 -9492.17
+221156 -280.625 -8809.01
+220131 -286.007 -7828.05
+218995 -275.32 -6569.09
+217901 -239.753 -5069.07
+217184 -151.635 -3372.1
+217578 103.955 -1515.54
+220853 1035.57 484.494
+231760 4818.86 2642.29
+263623 20153.8 4996.73
+352188 79054.4 7579.02
+580874 288285 10365.3
+1.09398e+06 962075 13309.4
+1.97022e+06 2.86788e+06 16623.6
+2.67319e+06 7.27657e+06 21013.3
+1.51775e+06 1.39185e+07 25759.1
+437242 1.27953e+07 23469.3
+79037.9 8.05939e+06 16618.1
+26964.4 4.46137e+06 10526.6
+6930.72 2.49547e+06 6285.93
+-207.833 1.37055e+06 3544.08
+2137.22 733163 2001.38
+1182.17 403366 1128.52
+-140.022 220335 609.872
+269.902 115566 349.341
+257.978 62334.7 205.079
+-39.7239 34075.5 101.863
+17.8224 17628.7 50.7867
+54.06 9372.31 31.7768
+-8.48502 5242.46 16.7521
+-5.69527 2746.09 7.50368
+8.37009 1472.26 5.05143
+-3.78288 889.871 3.15656
+-4.58947 529.881 1.4331
+-1.86226 368.671 1.21384
+-6.07732 356.152 1.47961
+-1.99627 415.598 1.42197
+-4.17937 655.354 1.91992
+-18.5491 1138.46 4.25286
+0.157682 1927.19 6.8188
+-0.126053 3644.7 10.6149
+-78.1788 6969.73 23.5634
+-24.89 12533.7 43.8939
+33.6461 23728.7 71.667
+-357.592 45863.6 145.431
+-334.865 84038.8 289.22
+157.456 156452 495.066
+-1672.22 298540 879.033
+-2815.39 546947 1634.6
+189.438 997682 2910.91
+-10350.7 1.87202e+06 5207.35
+-38660.7 3.42313e+06 9314.56
+-114177 6.16688e+06 15727.6
+-627557 1.12512e+07 25128
+-2.16981e+06 1.80187e+07 36014.1
+-3.81822e+06 1.97235e+07 40270.6
+-2.81302e+06 1.03475e+07 33576.4
+-1.55883e+06 4.07408e+06 26894.2
+-829039 1.35671e+06 21622.3
+-508825 400274 16969.1
+-388254 106986 12747.4
+-346878 26269.4 9039.55
+-333934 5969.94 5820.02
+-330972 1191.72 2948.33
+-331612 71.3053 267.439
+-333530 -234.509 -2330.71
+-335767 -351.937 -4882.81
+-337892 -412.151 -7357.5
+-339716 -444.253 -9673.55
+-341176 -456.787 -11726.5
+-342278 -453.574 -13416.7
+-343055 -437.009 -14671.8
+-343557 -409.041 -15458.9
+-343836 -371.589 -15786.6
+-343946 -326.679 -15697.7
+-343942 -276.405 -15258.4
+-343880 -222.829 -14546.4
+-343810 -167.86 -13640.9
+-343777 -113.177 -12615.7
+-343816 -60.1919 -11534.9
+-343954 -10.0553 -10452.1
+-344202 36.3133 -9410.13
+-344564 78.1886 -8442.67
+-345033 115.007 -7575.23
+-345595 146.346 -6826.44
+-346231 171.918 -6208.75
+-346919 191.569 -5728.96
+-347638 205.29 -5388.47
+-348367 213.214 -5183.64
+-349088 215.618 -5106.22
+-349784 212.911 -5144
+-350443 205.622 -5281.49
+-351055 194.37 -5500.71
+-351613 179.843 -5782.02
+-352112 162.763 -6104.93
+0 143.843 -6448.86
+13303.1 2.79764 -340.309
+13291.3 3.2801 -340.916
+13277.9 3.78465 -339.466
+13262.7 4.29786 -336.313
+13245.7 4.80235 -331.912
+13226.9 5.27758 -326.812
+13206.6 5.70057 -321.641
+13184.8 6.04662 -317.091
+13162 6.29004 -313.884
+13138.4 6.40488 -312.747
+13114.7 6.36577 -314.376
+13091.2 6.14873 -319.394
+13068.6 5.73203 -328.31
+13047.3 5.09705 -341.476
+13027.7 4.22925 -359.035
+13010 3.11933 -380.872
+12993.9 1.76461 -406.552
+12979.1 0.170785 -435.267
+12964.6 -1.64613 -465.773
+12949.3 -3.65765 -496.36
+12931.5 -5.82077 -524.839
+12909.2 -8.07623 -548.599
+12880.2 -10.3474 -564.726
+12842.1 -12.5396 -570.229
+12792.7 -14.5396 -562.348
+12730.3 -16.214 -538.925
+12654 -17.4033 -498.761
+12565 -17.8992 -441.872
+12468.2 -17.3275 -369.494
+12376.7 -14.4828 -283.794
+12327.1 -3.58804 -187.237
+12443.1 45.5456 -81.7669
+13206.9 286.008 31.8945
+16545 1451.46 154.085
+29778 6848.51 284.298
+78241.5 30471.8 420.07
+238597 127744 579.621
+698417 501937 934.985
+1.74114e+06 1.82452e+06 2222.24
+3.08811e+06 5.92822e+06 6251.71
+1.6061e+06 1.5398e+07 13948
+319469 1.40795e+07 14206.4
+6649.45 8.37052e+06 9704.23
+12094.5 4.45507e+06 6043.52
+70.5581 2.50737e+06 3536.86
+-5092.9 1.37593e+06 1832.15
+1529.37 726685 992.495
+794.799 404116 548.027
+-878.865 221996 266.117
+158.933 114524 166.772
+263.759 62227.9 112.475
+-164.642 34504.4 42.8861
+-11.8846 17477.1 15.7319
+69.6683 9291.49 15.8184
+-26.2374 5339.59 7.44574
+-12.1549 2733.07 1.23891
+15.4893 1444.85 2.23681
+-3.67498 909.091 1.64827
+-3.13041 529.462 0.0978887
+2.70811 362.774 0.354605
+-3.91185 362.569 0.891799
+4.39073 407.23 0.419964
+2.96508 656.919 0.235441
+-19.6032 1161.1 2.20548
+17.1054 1890.83 2.85961
+28.7309 3634.43 2.11
+-90.4086 7090.36 10.8971
+26.9249 12417.3 21.4633
+199.336 23557.8 23.1832
+-363.181 46426.5 64.5625
+-156.625 83829.7 159.018
+1139.71 155149 236.452
+-1196.14 300856 395.782
+-1912.97 547678 811.992
+6898.08 989050 1461.03
+-1092.67 1.88024e+06 2723.77
+-17563.1 3.43931e+06 5258.16
+-11388.9 6.15931e+06 8949.79
+-459372 1.16965e+07 14435.8
+-2.2865e+06 1.98418e+07 21389.8
+-4.38625e+06 2.18189e+07 21414.5
+-2.46433e+06 8.42314e+06 9946.71
+-979320 2.58789e+06 3728.22
+-329493 706302 1637.29
+-106460 176906 1009.8
+-40814.1 41116.8 727.998
+-23596.4 8893.33 515.762
+-19514.7 1786.25 331.139
+-18691.5 326.199 166.473
+-18641.5 43.9369 13.9468
+-18775.7 -10.1161 -133.167
+-18949.5 -22.2666 -277.761
+-19120.2 -26.2816 -418.524
+-19272.2 -27.9594 -550.97
+-19399.5 -28.3818 -669.067
+-19501.2 -27.8642 -766.938
+-19578.9 -26.5785 -840.233
+-19635.1 -24.6594 -886.888
+-19673.2 -22.232 -907.252
+-19697 -19.4203 -903.701
+-19710.1 -16.3473 -879.998
+-19716.5 -13.1292 -840.588
+-19719.8 -9.87111 -790.016
+-19723 -6.66274 -732.505
+-19729 -3.5778 -671.737
+-19739.3 -0.67503 -610.764
+-19755.3 1.99954 -552.039
+-19777.3 4.40996 -497.476
+-19805 6.52837 -448.535
+-19837.8 8.3337 -406.285
+-19874.7 9.81139 -371.445
+-19914.5 10.9536 -344.413
+-19956 11.7599 -325.282
+-19998.1 12.2374 -313.854
+-20039.6 12.4011 -309.668
+-20079.7 12.2735 -312.034
+-20117.7 11.8837 -320.072
+-20153 11.2663 -332.76
+-20185.2 10.4597 -348.98
+-20214.1 9.50439 -367.56
+0 8.43996 -387.327
+766.468 0.142372 -19.9891
+765.773 0.165907 -20.028
+764.983 0.190423 -19.9487
+764.091 0.215275 -19.7712
+763.098 0.239626 -19.5212
+762.006 0.262478 -19.2299
+760.823 0.282715 -18.9326
+759.56 0.299141 -18.6685
+758.234 0.31051 -18.4781
+756.868 0.315561 -18.4024
+755.488 0.313058 -18.4803
+754.121 0.301821 -18.7468
+752.794 0.280762 -19.2303
+751.53 0.248928 -19.9502
+750.341 0.205536 -20.9143
+749.227 0.15003 -22.1157
+748.168 0.0821491 -23.5296
+747.12 0.00201211 -25.1099
+746.014 -0.0897755 -26.7861
+744.753 -0.192004 -28.4609
+743.217 -0.302738 -30.0102
+741.26 -0.419205 -31.2858
+738.729 -0.537705 -32.1227
+735.462 -0.653543 -32.3525
+731.313 -0.760964 -31.8211
+726.174 -0.853034 -30.4105
+720.01 -0.921217 -28.0594
+712.934 -0.953092 -24.7763
+705.388 -0.917529 -20.6386
+698.912 -0.669268 -15.7724
+700.069 0.629829 -10.3132
+740.916 7.81075 -4.36187
+980.08 47.528 2.00326
+2169.3 260.393 8.49056
+7652.81 1360.27 13.8862
+31252.7 6862.48 15.9232
+125282 33691.4 22.5102
+465000 162148 127.642
+1.51845e+06 770816 824.088
+3.79541e+06 3.65041e+06 3796.9
+1.77562e+06 1.74154e+07 11819.9
+212650 1.56402e+07 11184.4
+-44324.9 8.62601e+06 6694.55
+17773.7 4.39238e+06 4093.37
+354.007 2.52508e+06 2341.4
+-7908.53 1.3848e+06 1016.02
+2837.6 716292 516.161
+1232.35 405802 280.482
+-1476.48 224715 100.197
+284.841 112771 95.4368
+418.964 62098.3 87.6017
+-281.417 35209.3 17.5391
+-15.6886 17215.2 -1.26432
+113.513 9164.34 11.8616
+-45.4007 5500.96 4.43197
+-19.1573 2708.76 -2.00449
+25.8681 1400.28 1.6038
+-6.30545 941.402 1.4978
+-4.77745 528.162 -0.544875
+4.96508 352.939 0.115702
+-6.34639 373.549 1.02178
+7.4761 393.301 0.146896
+5.89083 658.756 -0.536135
+-32.1194 1199.28 1.9891
+27.8083 1831.57 1.83715
+50.9918 3613.71 -2.19339
+-146.869 7291.23 6.95737
+39.913 12233.2 15.3066
+343.498 23259.2 -0.549517
+-577.407 47353.3 30.4581
+-288.85 83547.8 121.941
+1923.13 152947 130.712
+-1857.93 304647 161.152
+-3563.61 549493 431.466
+10830.9 975130 771.015
+-1761.3 1.89361e+06 1547.85
+-24935.1 3.46274e+06 3529.84
+61288.7 6.07206e+06 6074.53
+-310092 1.20655e+07 9953.54
+-2.52841e+06 2.20563e+07 16887.3
+-5.3856e+06 2.4672e+07 18268.7
+-2.14616e+06 5.18211e+06 6146.97
+-650501 1.09173e+06 1461.99
+-172085 227734 287.125
+-41786.7 46559.2 72.4262
+-9931.15 9241.12 40.0271
+-2812.16 1763.57 29.0541
+-1352.19 320.127 19.0037
+-1082.74 54.2675 9.53352
+-1045.49 7.8868 0.801995
+-1050.84 0.171615 -7.51929
+-1063.39 -1.13716 -15.6708
+-1076.37 -1.41553 -23.6309
+-1088.18 -1.49587 -31.1635
+-1098.33 -1.50359 -37.9238
+-1106.68 -1.4631 -43.5669
+-1113.3 -1.38463 -47.8315
+-1118.33 -1.27573 -50.588
+-1121.99 -1.14323 -51.8474
+-1124.52 -0.99361 -51.7401
+-1126.18 -0.833065 -50.4783
+-1127.24 -0.667289 -48.3153
+-1127.94 -0.501274 -45.5106
+-1128.5 -0.339187 -42.3053
+-1129.1 -0.184362 -38.9095
+-1129.89 -0.0393884 -35.4968
+-1130.94 0.0937455 -32.2067
+-1132.29 0.213509 -29.148
+-1133.94 0.318717 -26.4036
+-1135.86 0.408466 -24.0345
+-1138.01 0.482126 -22.082
+-1140.3 0.539353 -20.5693
+-1142.69 0.580129 -19.5021
+-1145.11 0.604794 -18.8699
+-1147.49 0.614055 -18.647
+-1149.79 0.60898 -18.7944
+-1151.96 0.590962 -19.2626
+-1153.99 0.56167 -19.9936
+-1155.83 0.522964 -20.924
+-1157.49 0.476793 -21.9875
+0 0.425069 -23.1173
+39.7669 0 -1.05368
+39.7302 0 -1.05588
+39.6886 0 -1.05196
+39.6418 0 -1.04295
+39.5897 0 -1.03016
+39.5326 0 -1.01517
+39.4707 0 -0.999785
+39.4048 0 -0.985988
+39.3356 0 -0.975846
+39.2642 0 -0.971432
+39.192 0 -0.974718
+39.1202 0 -0.987466
+39.0499 0 -1.01111
+38.9822 0 -1.04661
+38.9173 0 -1.09436
+38.8546 0 -1.15399
+38.7925 0 -1.22421
+38.7279 0 -1.30267
+38.6562 0 -1.38576
+38.5712 0 -1.46849
+38.4654 0 -1.54452
+38.3299 0 -1.60627
+38.1553 0 -1.64532
+37.9321 0 -1.65313
+37.652 0 -1.62196
+37.3088 0 -1.54598
+36.9017 0 -1.4224
+36.4395 0 -1.25202
+35.9619 0 -1.03912
+35.6556 0 -0.790149
+36.5501 0 -0.511501
+44.5111 0 -0.208225
+92.0633 0 0.106487
+352.335 0 0.355658
+1712.26 0 0.219385
+8573.77 0 -1.05055
+42261.4 0 -2.28916
+204391 0 22.4225
+975115 0 260.654
+4.62505e+06 0 1727.35
+2.13702e+06 1.99006e+07 10241.2
+168107 1.7606e+07 9021.47
+-100181 8.89206e+06 4393.31
+29728.5 4.26146e+06 2806.77
+5930.36 2.54919e+06 1736.44
+-12971.6 1.40462e+06 508.469
+3755.22 700177 175.333
+2612.62 407116 97.3286
+-2334.86 229690 -39.2897
+224.788 110226 33.9682
+781.316 61548.8 89.4831
+-398.556 36395 8.53974
+-74.4948 16896.6 -17.5955
+199.042 8893.7 10.6266
+-50.9903 5754.07 5.50253
+-39.0091 2699.44 -4.42976
+42.6505 1319.38 1.66434
+-3.61055 988.105 2.66837
+-8.70982 533.776 -0.487592
+5.39225 338.43 0.830453
+-9.62575 387.444 2.68664
+11.054 372.098 0.824912
+-0.693899 670.996 -0.496592
+-54.5423 1253.66 3.35885
+52.082 1726.07 1.6272
+50.9367 3618.19 -5.1361
+-256.01 7601.82 8.50629
+123.122 11857.8 12.4352
+472.468 22917.1 -22.5063
+-1057.35 48890.9 19.5888
+-156.822 82658.1 119.77
+3002.44 149809 38.9814
+-3788.49 311473 -30.8212
+-4563.86 550504 171.726
+17698.6 953693 273.626
+-9906.76 1.92239e+06 823.004
+-40454.6 3.49352e+06 2652.03
+141054 5.88891e+06 4134.65
+-249962 1.24531e+07 6486.84
+-3.04291e+06 2.48443e+07 13688.4
+-6.55846e+06 2.81828e+07 16026.7
+-1.37722e+06 0 2884.87
+-285681 0 491.312
+-57986.6 0 65.4104
+-11436.7 0 6.5545
+-2198.03 0 1.605
+-435.341 0 1.40949
+-115.604 0 1.01591
+-61.4817 0 0.517078
+-53.5419 0 0.0519577
+-53.1272 0 -0.378943
+-53.8383 0 -0.795188
+-54.6615 0 -1.20126
+-55.4252 0 -1.58717
+-56.0904 0 -1.93556
+-56.6471 0 -2.22831
+-57.0966 0 -2.45139
+-57.447 0 -2.59757
+-57.7099 0 -2.66697
+-57.8997 0 -2.66604
+-58.0318 0 -2.60557
+-58.1218 0 -2.49854
+-58.1845 0 -2.3583
+-58.2333 0 -2.19725
+-58.279 0 -2.02619
+-58.3298 0 -1.85403
+-58.3913 0 -1.68791
+-58.4662 0 -1.53339
+-58.5551 0 -1.39473
+-58.6567 0 -1.27504
+-58.7689 0 -1.17648
+-58.8885 0 -1.10023
+-59.0122 0 -1.04663
+-59.137 0 -1.01516
+-59.2598 0 -1.00451
+-59.3782 0 -1.01271
+-59.4903 0 -1.03724
+-59.5943 0 -1.07514
+-59.6894 0 -1.12318
+-59.7748 0 -1.17796
+0 0 -1.23607
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+7.38175e+06 1.25026e+07 43953
+3.89088e+06 2.10689e+07 70843.3
+-115718 1.28748e+07 41608.2
+-199012 4.32299e+06 20875.6
+206374 2.12486e+06 18799.9
+-2161.71 1.6037e+06 12062.6
+-45486.1 742212 4928.62
+29820.6 332412 3066.97
+7594.83 251974 1368.17
+-10225.2 127932 -31.8238
+4331.98 46865.6 469.935
+3460.47 37140.7 684.163
+-1881.6 22196.3 134.544
+555.369 6432.15 26.1624
+1160.34 5097.95 154.124
+-236.249 4064.04 82.7765
+9.76777 1071.14 27.7062
+315.769 694.547 50.0137
+-18.7628 876.417 48.5917
+-128.913 434.309 54.5083
+14.482 212.545 70.299
+-110.314 477.115 54.832
+-510.551 1075.43 53.9971
+-114.025 870.923 57.7536
+129.467 1480.89 35.0407
+-1634.75 5338.53 117.831
+-702.55 6600.47 199.406
+2149.88 8974.39 29.8363
+-4955.92 29971.6 215.913
+-5253.44 49031.6 923.535
+13199.5 64036.2 591.226
+-12031.4 174867 57.1339
+-38589.8 338106 2059.1
+62715.8 449968 4240.75
+-5062.84 1.01934e+06 6980.2
+-283713 2.18736e+06 17285.1
+286972 2.89629e+06 26323.9
+132275 6.01366e+06 28991.5
+-5.52233e+06 1.80743e+07 60402.6
+-1.04293e+07 2.97105e+07 105374
+0 1.77288e+07 66647.2
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.04113e+06 0 36326.9
+8.68916e+06 0 96486.3
+3.24304e+06 0 81389.1
+-535430 0 24007.7
+-169423 0 6575.73
+282593 0 11888.4
+-15246.1 0 6697.48
+-49605.7 0 2903.86
+48903.7 0 4415.05
+12289.1 0 2261.9
+-11182.7 0 -133.717
+8773.1 0 668.984
+6369.11 0 1032.82
+-1347.71 0 304.748
+1785.48 0 234.065
+2157.3 0 444.709
+22.5566 0 277.65
+286.996 0 157.463
+420.528 0 244.8
+-112.666 0 288.517
+-455.671 0 289.746
+-1167.81 0 306.685
+-935.668 0 257.493
+-692.627 0 180.135
+-3409.48 0 362.303
+-2719.53 0 582.997
+880.611 0 316.712
+-9445.42 0 447.311
+-11468.2 0 1382.06
+13765.8 0 842.968
+-19748.6 0 13.535
+-64439.7 0 3409.19
+67980 0 5892.88
+9079.29 0 3770.42
+-388733 0 9495.02
+247489 0 16358.9
+702268 0 9081.52
+-4.62762e+06 0 37266.4
+-1.2261e+07 0 124055
+-8.54059e+06 0 147125
+0 0 56129.8
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.32102e+06 -1.10138e+07 47391.9
+7.63363e+06 -1.84997e+07 128130
+2.8455e+06 -1.12615e+07 108435
+-466324 -3.74992e+06 34974.6
+-148753 -1.82185e+06 20415.1
+249031 -1.37354e+06 31224.6
+-7835.01 -632331 16354.5
+-43009.8 -277256 1898.12
+38355.9 -207986 2545.82
+8805.29 -105626 2603.42
+-9287.64 -39212.2 211.392
+7519.4 -30959.4 473.369
+5106.34 -18118.1 917.678
+-1221.5 -5219.29 331.196
+1515.69 -4237.11 266.582
+1799.03 -3286.43 464.387
+24.7843 -845.206 317.14
+172.677 -584.547 201.025
+172.848 -702.509 277.795
+-205.478 -348.793 274.771
+-278.388 -196.035 243.297
+-799.596 -379.067 325.092
+-745.512 -862.055 339.321
+-640.351 -727.669 248.378
+-2882.1 -1172.59 382.751
+-2278.14 -4326.97 566.855
+918.77 -5470.55 339.466
+-7620.97 -7280.43 506.543
+-9816.9 -24521.7 1256.25
+11559.3 -40856.4 571.572
+-14565.1 -53511.4 409.287
+-50451.9 -144691 3724.72
+59358.8 -279590 3348.42
+210.371 -376122 2856.52
+-344460 -871791 23584.1
+218721 -1.88061e+06 43557.5
+615953 -2.49168e+06 27708.9
+-4.07153e+06 -5.23641e+06 50038.1
+-1.08035e+07 -1.58672e+07 157881
+-7.54337e+06 -2.61723e+07 188691
+0 -1.56629e+07 71170.1
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.50545e+06 -1.75258e+07 50491.4
+3.4332e+06 -1.54391e+07 82508.4
+-92078.4 -7.74354e+06 48908.7
+-174514 -3.67183e+06 25215.2
+180249 -2.17905e+06 21236.5
+822.918 -1.19208e+06 10031.3
+-39742 -587830 995.13
+23663.1 -339105 1512.5
+6104.02 -190862 1804.3
+-8290.38 -91504.3 240.433
+3640.34 -50911 238.323
+2731.38 -29843 476.653
+-1562.06 -13772.1 81.879
+489.183 -7282.87 37.77
+919.326 -4686.93 173.475
+-195.738 -2175.89 86.6127
+28.0042 -1075.7 34.5926
+234.087 -805.029 65.0314
+-48.9301 -427.82 57.445
+-116.987 -274.393 47.6973
+19.9579 -318.554 54.9624
+-58.6489 -302.516 52.4938
+-401.51 -537.995 72.6768
+-129.872 -1019.85 78.4569
+100.253 -1404.74 36.8698
+-1305.42 -2919.05 115.796
+-604.341 -6192.01 220.498
+1798 -9700.45 47.6826
+-3961.07 -18694.6 147.589
+-4405.74 -40133 644.453
+10787.7 -68401.9 288.125
+-9759.84 -124512 426.987
+-30544.8 -259340 2594.92
+55026.2 -459519 2067.16
+-8523.65 -803009 1748.22
+-249181 -1.63756e+06 14889.4
+253017 -2.9978e+06 30248.3
+104342 -5.09458e+06 35844.8
+-4.88684e+06 -1.08872e+07 71636.3
+-9.21657e+06 -2.18598e+07 122531
+0 -2.4889e+07 76226.5
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+37.2187 -0.235044 -0.762637
+37.1606 -0.248623 -0.749187
+37.1005 -0.261719 -0.730082
+37.0383 -0.274093 -0.706635
+36.974 -0.285424 -0.680507
+36.9079 -0.295337 -0.653679
+36.8399 -0.303434 -0.628403
+36.7704 -0.309305 -0.607127
+36.6995 -0.312534 -0.592411
+36.6275 -0.312697 -0.586809
+36.5549 -0.309348 -0.592747
+36.4818 -0.302005 -0.612383
+36.4083 -0.290126 -0.647456
+36.3339 -0.273089 -0.699132
+36.2576 -0.250188 -0.76784
+36.1773 -0.220639 -0.853096
+36.0901 -0.18363 -0.953322
+35.9915 -0.138405 -1.06567
+35.876 -0.0843862 -1.18584
+35.7368 -0.0213305 -1.308
+35.5665 0.0505071 -1.42475
+35.3573 0.130216 -1.52728
+35.1016 0.216105 -1.60575
+34.7929 0.305597 -1.64998
+34.4261 0.395122 -1.65032
+33.9991 0.479894 -1.59889
+33.5141 0.55325 -1.49062
+32.9823 0.603952 -1.32417
+32.444 0.601158 -1.102
+32.0797 0.403551 -0.829434
+32.8571 -0.776886 -0.51199
+40.1856 -7.38596 -0.150741
+83.6636 -43.6345 0.26292
+319.405 -236.133 0.74697
+1541.94 -1223.66 1.34334
+7675.35 -6137.03 2.57229
+37657.8 -29994.5 9.74546
+181463 -143844 61.2547
+863159 -681813 377.016
+4.08363e+06 -3.22077e+06 2027.77
+1.88582e+06 -1.53286e+07 10881.2
+150299 -1.37034e+07 8822.6
+-87798.7 -7.50482e+06 3773.95
+25516.3 -3.78458e+06 2245.27
+5275.65 -2.15799e+06 921.408
+-11346 -1.17472e+06 -234.986
+2961.43 -602004 41.2125
+2246.27 -338603 310.843
+-1868.48 -186845 58.1233
+197.481 -93533.1 -3.24795
+616.73 -51301.6 60.8611
+-336.176 -28892.1 10.5779
+-51.2879 -14063 -11.5918
+160.78 -7498.38 14.0926
+-45.6368 -4481.52 6.50463
+-29.0302 -2192.2 -4.73668
+35.1825 -1140.31 2.06537
+-4.64295 -765.554 3.05422
+-6.82246 -425.309 -0.805965
+5.06331 -286.157 0.573149
+-8.52256 -305.196 2.66873
+8.49062 -319.304 0.600562
+1.11262 -530.429 -0.737376
+-45.1873 -974.118 3.93307
+39.2855 -1489.52 1.97026
+46.1528 -2925.4 -5.64647
+-207.604 -5939.53 9.81261
+90.7588 -10003.1 16.7621
+399.491 -19010.7 -15.1943
+-842.301 -38892.5 20.882
+-139.297 -69065.5 80.4284
+2408.95 -127014 -7.76159
+-3269.53 -253797 104.375
+-3549.94 -459516 448.952
+15561.4 -821909 62.4678
+-8872.83 -1.61209e+06 -217.032
+-34881.3 -2.97066e+06 1522.54
+124108 -5.25282e+06 3380.95
+-223997 -1.05383e+07 5723.69
+-2.69276e+06 -1.93909e+07 13550.7
+-5.80504e+06 -2.17777e+07 17028.2
+-1.22188e+06 -4.5836e+06 3324.59
+-254216 -967836 658.886
+-51805.8 -202466 121.099
+-10273.2 -41549.7 23.758
+-1988.97 -8289.42 6.76001
+-397.182 -1593.39 3.01355
+-105.526 -292.235 1.59452
+-55.4647 -50.3128 0.768429
+-48.016 -7.55401 0.157241
+-47.6692 -0.355413 -0.370399
+-48.4278 0.824969 -0.861556
+-49.3154 1.0101 -1.32368
+-50.1645 1.00808 -1.74622
+-50.9381 0.950355 -2.11229
+-51.6254 0.864677 -2.40566
+-52.2234 0.761463 -2.61486
+-52.7328 0.647058 -2.73528
+-53.1569 0.526544 -2.76937
+-53.5021 0.404557 -2.72546
+-53.7771 0.285354 -2.61589
+-53.9931 0.172522 -2.45503
+-54.1625 0.0686823 -2.25759
+-54.2977 -0.0246674 -2.0374
+-54.4101 -0.107085 -1.80673
+-54.5091 -0.178955 -1.57602
+-54.602 -0.241163 -1.35389
+-54.6933 -0.29478 -1.14727
+-54.7857 -0.3408 -0.961569
+-54.8799 -0.379992 -0.800826
+-54.9757 -0.412846 -0.667813
+-55.0723 -0.439606 -0.564106
+-55.1684 -0.460352 -0.490147
+-55.2632 -0.475098 -0.445312
+-55.3558 -0.483878 -0.428018
+-55.4458 -0.486818 -0.435851
+-55.5331 -0.484178 -0.465724
+-55.6179 -0.476364 -0.514043
+-55.7003 -0.463919 -0.576877
+-55.7806 -0.447468 -0.650125
+0 -0.427649 -0.729671
+718.849 -4.67035 -14.4899
+717.745 -4.94791 -14.2248
+716.601 -5.21693 -13.8494
+715.417 -5.47228 -13.3893
+714.195 -5.70727 -12.8772
+712.936 -5.91421 -12.3519
+711.642 -6.08495 -11.8577
+710.319 -6.21112 -11.4428
+708.97 -6.28427 -11.1578
+707.604 -6.29579 -11.0532
+706.228 -6.23679 -11.1771
+704.849 -6.0978 -11.5723
+703.471 -5.86844 -12.2736
+702.09 -5.53707 -13.3047
+700.69 -5.09073 -14.6745
+699.244 -4.51544 -16.3743
+697.701 -3.79713 -18.3735
+695.993 -2.92332 -20.6166
+694.028 -1.88545 -23.0201
+691.697 -0.68178 -25.4695
+688.877 0.679691 -27.8198
+685.441 2.17851 -29.8981
+681.265 3.77979 -31.5107
+676.241 5.43282 -32.4555
+670.286 7.06942 -32.5399
+663.358 8.60015 -31.6029
+655.484 9.90419 -29.5369
+646.818 10.7989 -26.3053
+637.813 10.9158 -21.9479
+629.954 9.0595 -16.5688
+629.425 -0.26153 -10.3003
+665.846 -44.9258 -3.24232
+883.677 -264.082 4.61939
+1960.74 -1318.2 13.5015
+6891.37 -6164.53 24.1218
+27988.1 -27258.3 40.4379
+111666 -113738 88.3163
+412904 -445262 307.923
+1.34424e+06 -1.61361e+06 1290.63
+3.35132e+06 -5.22891e+06 4848.09
+1.56613e+06 -1.35451e+07 13554.9
+188441 -1.23266e+07 12097
+-38852.7 -7.27774e+06 6901.59
+15284.3 -3.83867e+06 4051.1
+381.223 -2.14275e+06 2002.85
+-6948.87 -1.16705e+06 680.423
+2281.8 -611242 523.488
+1082.59 -337570 446.418
+-1182.36 -184641 161.023
+238.512 -94931.3 72.7877
+327.549 -51377.8 74.7599
+-234.899 -28334.1 21.9605
+-6.99917 -14295.3 3.1963
+91.0001 -7598.37 13.8543
+-39.0451 -4351.86 4.80826
+-13.9093 -2217.1 -2.24097
+21.0404 -1175.43 1.7716
+-5.87732 -738.696 1.55673
+-3.38013 -427.507 -0.843197
+4.54004 -294.008 0.046382
+-5.60408 -295.232 1.20196
+5.44195 -330.219 0.0160149
+5.60724 -530.241 -0.889549
+-26.1207 -942.488 2.08887
+20.8131 -1536.63 2.01057
+43.9258 -2948.19 -2.51655
+-118.409 -5777.7 7.45916
+26.5375 -10150.5 17.7442
+287.503 -19277.1 4.88634
+-456.721 -38153.2 35.3689
+-240.294 -69263.8 103.778
+1545.54 -128771 101.856
+-1634.59 -250702 245.699
+-2844.29 -458524 649.207
+9574.78 -834319 761.899
+-1661.61 -1.60037e+06 1071.61
+-21531.3 -2.95032e+06 3054.63
+53993.7 -5.32829e+06 6017.57
+-275512 -1.02092e+07 10269.4
+-2.2363e+06 -1.74314e+07 18188.3
+-4.7672e+06 -1.92492e+07 20696.5
+-1.9042e+06 -7.44806e+06 7616.6
+-578918 -2.29377e+06 2118.1
+-153771 -627869 542.268
+-37542.5 -157871 165.885
+-8979.36 -36887.5 75.0146
+-2549.92 -8037.78 44.0011
+-1218.62 -1631.25 26.723
+-970.722 -302.55 13.8747
+-937.416 -42.9147 2.85721
+-944.391 6.43977 -7.34003
+-958.451 16.2522 -17.0376
+-973.146 18.245 -26.1712
+-986.994 18.1686 -34.4761
+-999.561 17.2119 -41.6182
+-1010.71 15.74 -47.2927
+-1020.41 13.925 -51.2928
+-1028.69 11.8764 -53.5437
+-1035.59 9.68411 -54.1047
+-1041.21 7.43368 -53.146
+-1045.7 5.20717 -50.9127
+-1049.23 3.07659 -47.6869
+-1052.01 1.09684 -43.7559
+-1054.25 -0.698034 -39.3896
+-1056.15 -2.29446 -34.8272
+-1057.86 -3.69527 -30.2724
+-1059.5 -4.91379 -25.8933
+-1061.15 -5.96766 -21.8246
+-1062.85 -6.87384 -18.1714
+-1064.61 -7.64557 -15.012
+-1066.41 -8.29123 -12.3995
+-1068.24 -8.81487 -10.3638
+-1070.07 -9.21768 -8.91246
+-1071.88 -9.49984 -8.0325
+-1073.66 -9.66216 -7.69211
+-1075.39 -9.70736 -7.84345
+-1077.07 -9.64083 -8.42565
+-1078.7 -9.47096 -9.36805
+-1080.29 -9.20888 -10.5935
+-1081.83 -8.86757 -12.0217
+0 -8.4604 -13.5721
+12504.1 -79.5057 -247.338
+12485.2 -84.4081 -242.624
+12465.7 -89.1868 -235.97
+12445.5 -93.7461 -227.829
+12424.6 -97.9646 -218.777
+12403.1 -101.706 -209.501
+12381 -104.824 -200.789
+12358.3 -107.171 -193.496
+12335.3 -108.596 -188.522
+12312 -108.947 -186.77
+12288.5 -108.07 -189.1
+12265.1 -105.803 -196.282
+12241.9 -101.976 -208.946
+12218.8 -96.4025 -227.521
+12195.7 -88.8818 -252.18
+12172.3 -79.2065 -282.779
+12147.9 -67.1782 -318.789
+12121.6 -52.636 -359.237
+12092.1 -35.4947 -402.648
+12057.8 -15.7899 -447.004
+12017.1 6.27694 -489.74
+11968.2 30.3018 -527.79
+11909.3 55.6545 -557.71
+11838.9 81.4675 -575.886
+11755.9 106.621 -578.841
+11659.5 129.692 -563.612
+11549.9 148.81 -528.138
+11429.1 161.303 -471.578
+11302.2 162.806 -394.451
+11181.8 144.156 -298.494
+11102.7 77.8596 -186.198
+11180.2 -144.203 -59.9966
+11855.9 -986.724 78.8203
+14870.3 -4409.9 231.365
+26778 -18190.8 402.859
+70128.4 -70797.9 609.321
+212851 -256795 914.548
+620499 -853558 1582.96
+1.54181e+06 -2.53619e+06 3492.4
+2.7272e+06 -6.41657e+06 8526.77
+1.41588e+06 -1.2237e+07 17131.9
+281684 -1.11949e+07 16620.5
+5932.45 -7.00332e+06 11041.5
+10492.9 -3.8439e+06 6712.67
+143.096 -2.13257e+06 3709.5
+-4454.39 -1.16244e+06 1813.71
+1220.45 -617005 1081.38
+695.147 -337189 692.055
+-703.348 -183303 327.338
+133.258 -95766.2 165.099
+206.792 -51448.9 110.022
+-137.754 -27994.7 48.0527
+-6.43542 -14430.6 19.6776
+55.8795 -7662.52 17.6536
+-22.6346 -4273.89 7.99242
+-8.93506 -2230.81 1.2484
+12.5892 -1197.13 2.41494
+-3.43859 -722.75 1.73079
+-2.24051 -428.55 -0.0570199
+2.50816 -298.728 0.32618
+-3.45127 -289.392 1.01182
+3.18781 -336.791 0.353148
+2.90259 -529.769 0.048084
+-15.9222 -923.775 2.31692
+12.9048 -1565.65 3.05006
+24.8617 -2960.12 2.09027
+-72.899 -5680.62 11.5771
+18.7003 -10244.3 23.6922
+167.304 -19430.5 27.9984
+-287.865 -37704.1 70.6592
+-130.098 -69417.4 154.868
+915.607 -129815 234.751
+-1047.25 -248822 479.133
+-1510.71 -458250 1001.64
+6073.84 -842012 1569.62
+-1070.12 -1.59319e+06 2689.2
+-15269.6 -2.93635e+06 5492.09
+-10037.5 -5.33444e+06 9873.85
+-406144 -9.8149e+06 16292.8
+-2.02121e+06 -1.58197e+07 24730.6
+-3.88307e+06 -1.73918e+07 25818.6
+-2.18701e+06 -9.1473e+06 13116.7
+-871924 -3.61065e+06 5514.47
+-294607 -1.2061e+06 2554.06
+-95635.9 -357318 1485.92
+-36736.9 -96059.7 1001.23
+-21176.2 -23775.8 692.996
+-17470.4 -5458.34 452.412
+-16744.3 -1106.48 244.359
+-16738.8 -87.3859 52.8744
+-16908.6 172.288 -129.246
+-17117.3 250.559 -303.286
+-17325.5 274.345 -466.507
+-17519.3 274.904 -613.842
+-17694.3 262.635 -739.503
+-17849.3 242.165 -838.41
+-17984.2 215.909 -907.246
+-18099.6 185.398 -944.989
+-18196.3 151.939 -952.902
+-18275.3 116.869 -934.121
+-18338.6 81.5468 -893.034
+-18388.7 47.2243 -834.64
+-18428.5 14.9062 -764.003
+-18461.1 -14.7336 -685.87
+-18489.3 -41.3597 -604.45
+-18515.5 -64.9191 -523.325
+-18541.5 -85.5478 -445.446
+-18568.3 -103.471 -373.182
+-18596.4 -118.92 -308.372
+-18625.9 -132.077 -252.376
+-18656.4 -143.059 -206.116
+-18687.6 -151.917 -170.097
+-18719 -158.667 -144.432
+-18750.2 -163.31 -128.873
+-18780.8 -165.865 -122.843
+-18810.7 -166.383 -125.486
+-18839.7 -164.965 -135.718
+-18867.9 -161.762 -152.287
+-18895.3 -156.971 -173.827
+-18922 -150.828 -198.919
+0 -143.575 -226.143
+216647 -1330.73 -4200.84
+216328 -1416.26 -4117.4
+215996 -1500.1 -3999.98
+215653 -1580.49 -3856.53
+215298 -1655.25 -3697.18
+214932 -1721.98 -3534.07
+214555 -1778.09 -3381.06
+214170 -1820.95 -3253.35
+213777 -1847.88 -3166.86
+213379 -1856.19 -3137.65
+212980 -1843.19 -3181.04
+212583 -1806.13 -3310.84
+212190 -1742.17 -3538.34
+211802 -1648.36 -3871.36
+211420 -1521.64 -4313.18
+211038 -1359 -4861.45
+210650 -1157.79 -5507.02
+210243 -916.195 -6232.85
+209798 -633.82 -7013.04
+209297 -312.441 -7812.03
+208716 43.3646 -8584.61
+208030 425.719 -9276.58
+207216 823.235 -9826.9
+206255 1221.04 -10171.2
+205128 1600.8 -10247.1
+203826 1940.1 -10000.5
+202348 2210.29 -9392.59
+200716 2371.52 -8405.63
+198992 2362.7 -7045.7
+197328 2080.67 -5341.46
+196046 1325.69 -3337.37
+195847 -379.423 -1081.89
+198398 -4441.97 1388.65
+208065 -15503.5 4068.92
+236854 -48983.5 7000.34
+316553 -153189 10271.7
+520743 -464616 13996.2
+975858 -1.31367e+06 18305
+1.74892e+06 -3.31608e+06 23447.6
+2.36404e+06 -7.04036e+06 29685.3
+1.3392e+06 -1.12215e+07 35091.8
+385441 -1.02486e+07 30954.1
+69646.9 -6.69242e+06 21513.9
+23666.6 -3.80083e+06 13430.4
+6144.43 -2.11661e+06 7844.79
+-178.985 -1.15692e+06 4347.15
+1792.3 -619472 2496.89
+1022.38 -336746 1455.08
+-92.2348 -182357 777.897
+228.321 -96156 418.533
+208.349 -51463.9 240.054
+-33.4037 -27775 123.884
+16.7992 -14493.1 63.0856
+43.7644 -7695.79 38.0838
+-7.57934 -4225.61 19.8157
+-4.07262 -2235.77 8.95371
+6.818 -1208.9 5.92528
+-3.34207 -713.065 3.63128
+-3.5635 -428.489 1.59268
+-1.34116 -301.099 1.36265
+-5.11164 -285.836 1.69347
+-1.8497 -340.193 1.56155
+-3.12052 -528.676 2.0983
+-15.0966 -912.376 4.83057
+-0.463212 -1581.35 7.88462
+0.677935 -2963.09 12.4366
+-63.5062 -5620.37 27.502
+-22.6105 -10293.4 52.0378
+28.8906 -19498 87.6721
+-290.401 -37413.7 174.288
+-282.477 -69471.7 335.629
+101.065 -130292 588.798
+-1447.95 -247501 1107.27
+-2357.51 -457782 2076.48
+178.554 -845222 3584.85
+-9189.17 -1.58494e+06 6317.38
+-34013.6 -2.91371e+06 11495.4
+-100834 -5.27172e+06 19826.7
+-554782 -9.36793e+06 32104.1
+-1.91968e+06 -1.44655e+07 46745.5
+-3.38457e+06 -1.59403e+07 53699.9
+-2.50216e+06 -1.00422e+07 46073.1
+-1.39289e+06 -4.7297e+06 36677.1
+-743891 -1.86221e+06 28730.2
+-457011 -649372 22143.1
+-348003 -208977 16657.1
+-310425 -64361 12047.2
+-298980 -19134.5 8050.67
+-296929 -4636.36 4427.73
+-298333 564.321 1019.12
+-300968 2721.82 -2244.59
+-303920 3677.81 -5358
+-306794 4052.17 -8261.61
+-309434 4105.6 -10864.3
+-311797 3965.86 -13067.1
+-313883 3697.11 -14785.8
+-315703 3331.72 -15967.5
+-317267 2889.58 -16599
+-318584 2388.81 -16705.9
+-319670 1849.94 -16345.5
+-320546 1295.31 -15596
+-321246 746.564 -14545.6
+-321811 221.94 -13283.1
+-322284 -265.496 -11892
+-322706 -708.225 -10445.9
+-323112 -1103.54 -9007.7
+-323526 -1452.13 -7629.1
+-323964 -1756.45 -6351.53
+-324432 -2019.38 -5207.07
+-324928 -2243.27 -4219.32
+-325446 -2429.63 -3404.1
+-325978 -2579.09 -2769.91
+-326515 -2691.82 -2318.37
+-327049 -2767.88 -2044.76
+-327575 -2807.71 -1938.67
+-328088 -2812.33 -1984.82
+-328587 -2783.6 -2164.01
+-329071 -2724.23 -2454.1
+-329541 -2637.76 -2831.07
+-329999 -2528.34 -3269.94
+0 -2400.42 -3745.77
+3.49115e+06 -2222.87 -23827.2
+3.48354e+06 -2887.45 -23386.3
+3.47604e+06 -3565.83 -22699.5
+3.46868e+06 -4235.35 -21802.5
+3.46147e+06 -4868.76 -20745.1
+3.45441e+06 -5435.19 -19590.7
+3.4475e+06 -5901.07 -18415.9
+3.4407e+06 -6231.13 -17309
+3.43397e+06 -6389.4 -16369
+3.42723e+06 -6340.24 -15703.6
+3.4204e+06 -6049.38 -15427.2
+3.41336e+06 -5485.05 -15657.8
+3.40599e+06 -4619.07 -16513.2
+3.39812e+06 -3427.98 -18105.8
+3.38956e+06 -1894.37 -20534.3
+3.38009e+06 -8.35888 -23872.1
+3.36948e+06 2230.59 -28151
+3.35748e+06 4811.47 -33341.6
+3.34383e+06 7708.91 -39330.5
+3.3283e+06 10879.7 -45898.7
+3.31071e+06 14258.2 -52706.1
+3.29096e+06 17749.5 -59287.9
+3.26906e+06 21220.4 -65069.4
+3.24523e+06 24482.8 -69403.1
+3.2199e+06 27268.7 -71625.7
+3.19384e+06 29187.7 -71125.4
+3.16833e+06 29657.7 -67398.3
+3.1454e+06 27794.9 -60063.7
+3.12829e+06 22238 -48812.2
+3.12218e+06 10859.3 -33269.4
+3.13543e+06 -9746.01 -12791.5
+3.1816e+06 -45261.3 13770
+3.28285e+06 -105801 48281.3
+3.4757e+06 -210719 93457.3
+3.8191e+06 -399021 152762
+4.4001e+06 -749521 229609
+5.31386e+06 -1.4105e+06 324816
+6.55312e+06 -2.61311e+06 431141
+7.7106e+06 -4.57081e+06 525976
+7.61737e+06 -7.0771e+06 570084
+5.07853e+06 -8.81964e+06 527223
+2.48576e+06 -7.76683e+06 406285
+1.06877e+06 -5.35012e+06 271418
+474239 -3.25166e+06 167051
+212429 -1.88092e+06 98694.5
+96562.5 -1.05563e+06 56985
+49032.2 -579959 32427.9
+24780.2 -316848 18224.3
+11844.9 -171736 10105.6
+6345.01 -91865.3 5546.35
+3385.74 -49137.3 3021.04
+1571 -26293.6 1632.82
+826.794 -13924.1 880.798
+449.587 -7410.31 476.276
+170.953 -3995.12 256.766
+55.5738 -2145.88 139.199
+5.51889 -1172.62 77.4583
+-41.8704 -673.326 44.4464
+-64.5406 -410.339 27.2449
+-77.4401 -291.363 19.767
+-95.6838 -270.493 18.5404
+-109.324 -330.086 22.6342
+-138.151 -505.316 34.0748
+-197.213 -862.98 57.9901
+-261.835 -1534.55 102.989
+-417.834 -2840.61 187.037
+-782.375 -5319.8 347.205
+-1280.25 -9918.3 646.884
+-2296.86 -18717.4 1201.69
+-4727.26 -35434.5 2237.45
+-8673.57 -66385.9 4156.55
+-16165.8 -124452 7665.01
+-33708.8 -233137 14037.7
+-66432 -431065 25470.5
+-131273 -791503 45689.9
+-289964 -1.44664e+06 81196.4
+-648412 -2.59221e+06 142752
+-1.46683e+06 -4.51844e+06 246137
+-3.42816e+06 -7.51564e+06 407903
+-7.02664e+06 -1.10314e+07 620696
+-1.0555e+07 -1.26156e+07 812581
+-1.06788e+07 -1.01094e+07 878636
+-9.06824e+06 -6.47961e+06 805236
+-7.355e+06 -3.65857e+06 652830
+-6.1021e+06 -1.94505e+06 485436
+-5.31364e+06 -1.01784e+06 338716
+-4.85359e+06 -534438 223026
+-4.59977e+06 -278401 135923
+-4.4704e+06 -136926 71109.9
+-4.41531e+06 -55428.5 22350
+-4.40431e+06 -7398.26 -15345.9
+-4.41916e+06 20815.4 -45489.2
+-4.4488e+06 36827.2 -70151.3
+-4.48649e+06 45175.5 -90178
+-4.52803e+06 48665.1 -105580
+-4.5707e+06 49051.6 -116010
+-4.61268e+06 47436.1 -121197
+-4.65266e+06 44515.3 -121224
+-4.68976e+06 40741 -116612
+-4.7234e+06 36419.3 -108253
+-4.75333e+06 31769.8 -97255.3
+-4.7795e+06 26958.3 -84766.9
+-4.80209e+06 22115.2 -71828.1
+-4.82139e+06 17345.1 -59278.6
+-4.8378e+06 12733.2 -47720.6
+-4.85173e+06 8349.35 -37527.5
+-4.86357e+06 4251.69 -28882.2
+-4.87371e+06 488.913 -21827
+-4.88248e+06 -2898.08 -16313.5
+-4.89016e+06 -5875.56 -12241.6
+-4.89701e+06 -8417.01 -9486.79
+-4.90325e+06 -10503.9 -7914.71
+-4.90907e+06 -12126.5 -7388.15
+-4.91464e+06 -13284.7 -7768.8
+-4.92013e+06 -13988.6 -8917.63
+-4.92568e+06 -14258.5 -10695.2
+-4.93141e+06 -14124.3 -12962.3
+-4.93745e+06 -13624.4 -15581.2
+-4.94387e+06 -12804.3 -18416.2
+-4.95077e+06 -11714.1 -21336.4
+0 -10405.9 -24217.4
+7.1855e+06 -4783.39 -44562.6
+7.17331e+06 -7264.61 -43891.3
+7.16216e+06 -9815.92 -42648.3
+7.15213e+06 -12346.5 -40870.3
+7.14326e+06 -14749.1 -38625.3
+7.13552e+06 -16903.2 -36015.3
+7.12882e+06 -18678.4 -33178
+7.12297e+06 -19938.9 -30288.2
+7.11772e+06 -20547.5 -27557.6
+7.11273e+06 -20371.5 -25234.1
+7.10757e+06 -19287.7 -23597.6
+7.10171e+06 -17188.5 -22954.8
+7.09455e+06 -13987.5 -23628.9
+7.08541e+06 -9626.12 -25945.4
+7.07355e+06 -4079.07 -30209.6
+7.0582e+06 2639.03 -36675.7
+7.03857e+06 10467.7 -45505
+7.01392e+06 19293.8 -56714.5
+6.98362e+06 28945.3 -70119.5
+6.94722e+06 39182.9 -85276.1
+6.90452e+06 49691.5 -101433
+6.85569e+06 60067.9 -117509
+6.8014e+06 69803 -132101
+6.74288e+06 78253.3 -143540
+6.68205e+06 84593.8 -149994
+6.62165e+06 87739.9 -149592
+6.56536e+06 86221.3 -140550
+6.51803e+06 77983.7 -121227
+6.48603e+06 60085.2 -90073.2
+6.47769e+06 28228.3 -45421.9
+6.50407e+06 -23990.9 14854
+6.57982e+06 -106382 93755.2
+6.7241e+06 -234574 195522
+6.96056e+06 -434503 325781
+7.31386e+06 -750039 491076
+7.79503e+06 -1.25274e+06 696768
+8.36033e+06 -2.04436e+06 941189
+8.82678e+06 -3.22249e+06 1.20381e+06
+8.77374e+06 -4.75577e+06 1.42993e+06
+7.62501e+06 -6.25034e+06 1.52887e+06
+5.29376e+06 -6.83417e+06 1.41844e+06
+3.05401e+06 -5.81709e+06 1.11998e+06
+1.59992e+06 -4.09938e+06 778849
+813786 -2.59372e+06 500596
+408458 -1.55148e+06 306901
+204706 -894896 182058
+104276 -503201 105319
+53279.7 -278621 59724
+27090.6 -152332 33313.1
+13984.2 -82325.3 18340.5
+7221.57 -44241 10002.1
+3645.95 -23693.1 5417
+1841.95 -12628.9 2921.38
+906.351 -6740.93 1574.29
+391.864 -3620.71 850.166
+126.214 -1954.52 462.167
+-13.8188 -1072.67 255.435
+-97.639 -611.889 146.081
+-146.932 -374.422 89.8995
+-180.736 -266.877 64.6052
+-213.283 -246.431 59.9543
+-251.205 -302.645 73.8828
+-311.774 -461.026 112.078
+-418.254 -784.914 189.952
+-600.685 -1404.2 338.675
+-952.398 -2586.79 619.025
+-1635.3 -4823.21 1145.95
+-2886.25 -9023.83 2132.28
+-5317.01 -16971.6 3973.47
+-10136.9 -31932.7 7396.05
+-19274.6 -59779.9 13705.9
+-37069.5 -111512 25224.5
+-72678.5 -206794 45995.8
+-142115 -379132 82829
+-279346 -686858 146879
+-558630 -1.22692e+06 255815
+-1.11589e+06 -2.14083e+06 435674
+-2.20222e+06 -3.61288e+06 720242
+-4.22602e+06 -5.78237e+06 1.13828e+06
+-7.36575e+06 -8.31092e+06 1.66052e+06
+-1.06467e+07 -9.83632e+06 2.1207e+06
+-1.22492e+07 -8.96886e+06 2.2861e+06
+-1.23064e+07 -6.75549e+06 2.12572e+06
+-1.16438e+07 -4.51337e+06 1.77354e+06
+-1.08546e+07 -2.82091e+06 1.37301e+06
+-1.019e+07 -1.70685e+06 1.0072e+06
+-9.70573e+06 -1.01328e+06 704440
+-9.38349e+06 -584372 464282
+-9.18828e+06 -314426 276394
+-9.08775e+06 -140853 129326
+-9.05636e+06 -27793.5 13501.1
+-9.07492e+06 45841.4 -78062.6
+-9.12911e+06 93059.6 -149792
+-9.20804e+06 122208 -204032
+-9.30315e+06 138752 -241813
+-9.40744e+06 146297 -263725
+-9.51508e+06 147248 -270640
+-9.62126e+06 143247 -264124
+-9.72214e+06 135473 -246501
+-9.81486e+06 124823 -220647
+-9.89749e+06 112025 -189658
+-9.96899e+06 97698.6 -156492
+-1.0029e+07 82390 -123700
+-1.00779e+07 66584.5 -93256.9
+-1.01163e+07 50716.2 -66511.4
+-1.01452e+07 35172 -44226.8
+-1.01657e+07 20293.9 -26676.2
+-1.01791e+07 6379.84 -13765.2
+-1.01866e+07 -6316.16 -5151.35
+-1.01893e+07 -17585.3 -346.657
+-1.01884e+07 -27265.5 1206.2
+-1.01849e+07 -35243 82.0314
+-1.01797e+07 -41453.2 -3159.07
+-1.01739e+07 -45880.9 -7990.71
+-1.0168e+07 -48558.9 -13931.5
+-1.01628e+07 -49564.7 -20551.6
+-1.0159e+07 -49016.1 -27475.7
+-1.01569e+07 -47065.4 -34383.6
+-1.01569e+07 -43891.7 -41007.2
+-1.01595e+07 -39692.4 -47127.9
+0 -34674.3 -52573.8
+1.094e+07 -7859.46 -66766.3
+1.09209e+07 -12608.7 -65921.4
+1.09029e+07 -17501 -64132.8
+1.08862e+07 -22359 -61431.4
+1.0871e+07 -26975 -57899.1
+1.08571e+07 -31116.3 -53674.9
+1.08446e+07 -34532 -48960
+1.08333e+07 -36961.8 -44022.7
+1.08231e+07 -38145.4 -39199.9
+1.08135e+07 -37833.4 -34897.1
+1.0804e+07 -35798.9 -31583.7
+1.07942e+07 -31849.8 -29784.1
+1.07832e+07 -25841.3 -30061.5
+1.07703e+07 -17688.4 -32992.3
+1.07546e+07 -7377.31 -39129.1
+1.07351e+07 5022.84 -48946.9
+1.07108e+07 19350 -62773.8
+1.06808e+07 35339.6 -80704.5
+1.06443e+07 52615.7 -102503
+1.06008e+07 70682.9 -127506
+1.05502e+07 88917.2 -154532
+1.04926e+07 106555 -181835
+1.04291e+07 122678 -207097
+1.03614e+07 136184 -227491
+1.02918e+07 145743 -239818
+1.02237e+07 149713 -240681
+1.01614e+07 146006 -226672
+1.011e+07 131872 -194479
+1.00751e+07 103567 -140840
+1.00635e+07 55859.8 -62297.7
+1.00822e+07 -18718.4 45256.9
+1.01382e+07 -131055 187136
+1.02373e+07 -297404 370345
+1.03797e+07 -542439 603737
+1.05517e+07 -903082 897165
+1.07072e+07 -1.42977e+06 1.25799e+06
+1.07368e+07 -2.17487e+06 1.68156e+06
+1.04338e+07 -3.14835e+06 2.13196e+06
+9.51061e+06 -4.2253e+06 2.51715e+06
+7.76957e+06 -5.04918e+06 2.68592e+06
+5.46102e+06 -5.11317e+06 2.50082e+06
+3.38139e+06 -4.23791e+06 1.99497e+06
+1.93658e+06 -3.01115e+06 1.40793e+06
+1.06388e+06 -1.94897e+06 918890
+569975 -1.19395e+06 570863
+301115 -703924 342201
+158241 -403378 199500
+82775.9 -226438 113781
+43107.7 -125062 63749.7
+22435.9 -68185.5 35221.2
+11631.9 -36860.3 19261.1
+5963.25 -19814.5 10457.2
+3009.03 -10609.7 5651.44
+1459.3 -5680.89 3050.27
+634.22 -3053.69 1650.02
+195.596 -1653.02 898.602
+-41.6409 -909.545 497.139
+-176.467 -518.53 284.573
+-257.796 -317.965 175.374
+-314.909 -227.127 126.026
+-367.585 -209.562 116.828
+-432.056 -257.71 143.945
+-531.681 -391.663 218.188
+-703.637 -665.559 369.18
+-1013 -1191.02 657.555
+-1592.35 -2187.81 1200.46
+-2689.78 -4068.2 2217.92
+-4763.23 -7604.23 4119.03
+-8734.42 -14254.7 7661.09
+-16375.6 -26701.2 14224.2
+-30976.9 -49800.4 26282.7
+-58988.6 -92342.7 48209.8
+-112847 -169762 87537.3
+-215504 -308156 156796
+-410359 -550777 276155
+-778265 -965824 476595
+-1.45718e+06 -1.65013e+06 801917
+-2.66505e+06 -2.72246e+06 1.306e+06
+-4.68465e+06 -4.2653e+06 2.02982e+06
+-7.62186e+06 -6.08694e+06 2.91574e+06
+-1.08979e+07 -7.40035e+06 3.68532e+06
+-1.33451e+07 -7.28435e+06 3.9587e+06
+-1.46114e+07 -6.02905e+06 3.68895e+06
+-1.49997e+07 -4.42522e+06 3.09789e+06
+-1.49309e+07 -3.01057e+06 2.4214e+06
+-1.46976e+07 -1.95592e+06 1.79673e+06
+-1.44494e+07 -1.22854e+06 1.27228e+06
+-1.42466e+07 -739434 849691
+-1.41063e+07 -409658 514270
+-1.40276e+07 -184637 249063
+-1.40035e+07 -29622.9 39641.3
+-1.40252e+07 77366.9 -124732
+-1.40841e+07 150561 -251214
+-1.41717e+07 199372 -344109
+-1.42799e+07 230093 -406002
+-1.44011e+07 246969 -438986
+-1.45279e+07 252923 -445635
+-1.46542e+07 250062 -429520
+-1.47746e+07 240014 -395217
+-1.48851e+07 224130 -347961
+-1.4983e+07 203606 -293124
+-1.50669e+07 179540 -235698
+-1.51363e+07 152958 -179893
+-1.51917e+07 124819 -128916
+-1.52341e+07 96013.4 -84912.1
+-1.52652e+07 67363 -49041
+-1.52865e+07 39610.3 -21642.8
+-1.52999e+07 13413.8 -2436.57
+-1.53071e+07 -10658.6 9281.48
+-1.53097e+07 -32136.7 14467.1
+-1.53092e+07 -50653.1 14195.9
+-1.53069e+07 -65946.6 9569.75
+-1.5304e+07 -77864 1654.3
+-1.53015e+07 -86357.9 -8560.94
+-1.53002e+07 -91481.8 -20187.5
+-1.53007e+07 -93382 -32452.7
+-1.53036e+07 -92286.6 -44706.1
+-1.53091e+07 -88492.1 -56418.9
+-1.53177e+07 -82348.2 -67177.6
+-1.53293e+07 -74240.2 -76674.5
+0 -64572.4 -84697.3
+1.382e+07 -9275.52 -86627
+1.37912e+07 -15196.7 -85664.8
+1.3762e+07 -21300.1 -83432.2
+1.37326e+07 -27362.7 -79956.7
+1.37033e+07 -33124 -75334.1
+1.36743e+07 -38292.7 -69737.4
+1.36459e+07 -42556 -63424.9
+1.36182e+07 -45590.4 -56747.2
+1.35914e+07 -47074.2 -50150.8
+1.35657e+07 -46701.7 -44178.1
+1.35411e+07 -44199 -39462.5
+1.35175e+07 -39339.3 -36715.8
+1.34948e+07 -31959.8 -36707.2
+1.34728e+07 -21976.5 -40229.3
+1.3451e+07 -9399.48 -48047.6
+1.3429e+07 5655.1 -60830.5
+1.34062e+07 22953.6 -79055.9
+1.33821e+07 42136.4 -102897
+1.3356e+07 62711.1 -132094
+1.33274e+07 84048 -165820
+1.32961e+07 105376 -202562
+1.32621e+07 125779 -240043
+1.3226e+07 144188 -275202
+1.31888e+07 159366 -304254
+1.31521e+07 169873 -322841
+1.3118e+07 174006 -326242
+1.3089e+07 169684 -309588
+1.30679e+07 154255 -268009
+1.30572e+07 124203 -196593
+1.3059e+07 74711.2 -90101.7
+1.30739e+07 -966.878 57554.5
+1.30999e+07 -112393 253988
+1.31294e+07 -273200 508947
+1.31436e+07 -502668 834537
+1.3103e+07 -826723 1.24417e+06
+1.29313e+07 -1.27501e+06 1.74799e+06
+1.24985e+07 -1.86632e+06 2.3399e+06
+1.16226e+07 -2.57229e+06 2.97113e+06
+1.01315e+07 -3.26239e+06 3.51507e+06
+8.02542e+06 -3.67989e+06 3.76184e+06
+5.65756e+06 -3.55549e+06 3.51785e+06
+3.61409e+06 -2.89093e+06 2.82402e+06
+2.16043e+06 -2.05823e+06 2.00884e+06
+1.2376e+06 -1.34896e+06 1.3222e+06
+688438 -839379 828032
+375364 -502729 499912
+202000 -292194 293236
+107658 -165882 168121
+56949.9 -92423 94627.8
+29957.5 -50750.1 52490.7
+15651.3 -27580 28806.1
+8083.74 -14883.1 15688.9
+4090.21 -7997.27 8503.22
+1977.76 -4293.72 4601.35
+852.84 -2312.03 2495.14
+249.707 -1254.12 1362.07
+-79.1344 -691.38 755.179
+-265.231 -394.532 433.192
+-378.238 -242.337 267.532
+-458.13 -173.398 192.526
+-531.475 -160.051 178.475
+-621.769 -196.83 219.617
+-760.19 -298.659 332.182
+-997.726 -506.667 560.715
+-1426.47 -905.61 996.423
+-2222.26 -1660.01 1814.78
+-3717.41 -3080.14 3344.16
+-6540.01 -5746.77 6193.59
+-11897.4 -10742.7 11485.6
+-22078.7 -20052.7 21255
+-41372.5 -37257.5 39131.1
+-77852.7 -68725.1 71487
+-146512 -125464 129205
+-274502 -225804 230218
+-510289 -399185 403037
+-937665 -690479 690754
+-1.69152e+06 -1.16216e+06 1.15308e+06
+-2.96917e+06 -1.88963e+06 1.86171e+06
+-5.0058e+06 -2.92668e+06 2.86837e+06
+-7.90363e+06 -4.17097e+06 4.0883e+06
+-1.12793e+07 -5.17052e+06 5.13628e+06
+-1.42559e+07 -5.33621e+06 5.49364e+06
+-1.6322e+07 -4.6785e+06 5.10355e+06
+-1.74995e+07 -3.63235e+06 4.27641e+06
+-1.80562e+07 -2.5951e+06 3.33728e+06
+-1.82602e+07 -1.75341e+06 2.47277e+06
+-1.8295e+07 -1.13368e+06 1.74729e+06
+-1.82638e+07 -695265 1.16206e+06
+-1.82187e+07 -387689 696897
+-1.81831e+07 -170779 329081
+-1.81669e+07 -16678.5 39436.4
+-1.81728e+07 93205.4 -186380
+-1.81999e+07 171238 -358173
+-1.82455e+07 225640 -482213
+-1.83053e+07 261865 -562676
+-1.83743e+07 283549 -603154
+-1.84474e+07 293197 -607833
+-1.85196e+07 292663 -582074
+-1.85872e+07 283457 -532396
+-1.86471e+07 266930 -466015
+-1.86977e+07 244360 -390187
+-1.87385e+07 216994 -311565
+-1.87702e+07 186055 -235709
+-1.8794e+07 152728 -166820
+-1.88116e+07 118150 -107684
+-1.88249e+07 83389.8 -59779.3
+-1.88361e+07 49435.2 -23497
+-1.88467e+07 17172.5 1596.54
+-1.88584e+07 -12626.1 16499.6
+-1.88723e+07 -39316 22549.7
+-1.88894e+07 -62389.9 21246.9
+-1.89101e+07 -81484 14127.1
+-1.89347e+07 -96379.5 2675.01
+-1.89632e+07 -107000 -11732.1
+-1.89954e+07 -113401 -27861.6
+-1.90308e+07 -115765 -44647.3
+-1.9069e+07 -114375 -61200
+-1.91095e+07 -109607 -76806.5
+-1.91514e+07 -101901 -90921
+-1.91944e+07 -91746.1 -103151
+0 -79652 -113241
+1.55925e+07 -7552.71 -101725
+1.5553e+07 -12484.9 -100684
+1.55106e+07 -17570.1 -98137.5
+1.54656e+07 -22621.4 -94116.1
+1.54182e+07 -27421.2 -88729.7
+1.53691e+07 -31726.5 -82179.9
+1.53189e+07 -35276.7 -74769.8
+1.52684e+07 -37803 -66911.7
+1.52183e+07 -39039.4 -59132
+1.51696e+07 -38734.7 -52070.9
+1.51231e+07 -36665.6 -46476.5
+1.50798e+07 -32650.8 -43190.4
+1.50405e+07 -26564.5 -43122.7
+1.50059e+07 -18349.2 -47212.8
+1.49767e+07 -8027.45 -56371.1
+1.49531e+07 4288.25 -71397.1
+1.49353e+07 18387.7 -92872.7
+1.49234e+07 33957.7 -121030
+1.4917e+07 50579 -155600
+1.49158e+07 67725.9 -195662
+1.49193e+07 84766.4 -239497
+1.4927e+07 100964 -284495
+1.49387e+07 115477 -327122
+1.49541e+07 127354 -362973
+1.49733e+07 135516 -386932
+1.49962e+07 138714 -393388
+1.50229e+07 135458 -376472
+1.50531e+07 123877 -330212
+1.50855e+07 101511 -248485
+1.51174e+07 64998.5 -124704
+1.51435e+07 9667.7 48770
+1.51537e+07 -70997 281398
+1.51302e+07 -185979 585197
+1.50415e+07 -347290 975073
+1.48325e+07 -569714 1.46776e+06
+1.44137e+07 -867489 2.0765e+06
+1.36548e+07 -1.2435e+06 2.79561e+06
+1.24045e+07 -1.66692e+06 3.56797e+06
+1.05677e+07 -2.0463e+06 4.24108e+06
+8.24289e+06 -2.2318e+06 4.55839e+06
+5.81303e+06 -2.0976e+06 4.27968e+06
+3.76631e+06 -1.68456e+06 3.44936e+06
+2.29977e+06 -1.19913e+06 2.46511e+06
+1.34793e+06 -791012 1.6313e+06
+766433 -496786 1.02753e+06
+426060 -300541 623915
+232953 -176328 367948
+125770 -100890 212002
+67237.1 -56565.5 119863
+35655.7 -31216.2 66759.3
+18743.3 -17029 36770.6
+9727.01 -9216 20093.3
+4933.09 -4964.1 10923.5
+2382.08 -2670.36 5927.55
+1018.36 -1439.99 3222.63
+283.646 -782.213 1763.54
+-118.759 -431.793 980.078
+-347.004 -246.655 563.509
+-486.17 -151.698 348.806
+-584.941 -108.682 251.442
+-675.662 -100.371 233.148
+-787.331 -123.409 286.491
+-957.823 -187.039 432.339
+-1249.19 -316.895 727.949
+-1773.63 -565.736 1290.38
+-2742.17 -1035.48 2344.16
+-4552.67 -1918.41 4307.99
+-7956.22 -3573.81 7955.75
+-14375.7 -6667.59 14707.5
+-26482.7 -12416.2 27124.9
+-49243.2 -23003.7 49752.2
+-91826.7 -42274.4 90518.2
+-170890 -76800.2 162862
+-315946 -137384 288739
+-577956 -241040 502734
+-1.04161e+06 -413193 856587
+-1.83871e+06 -688902 1.42126e+06
+-3.15608e+06 -1.1106e+06 2.28128e+06
+-5.2127e+06 -1.71012e+06 3.49684e+06
+-8.12112e+06 -2.43858e+06 4.96368e+06
+-1.15953e+07 -3.06137e+06 6.21421e+06
+-1.48964e+07 -3.2494e+06 6.62114e+06
+-1.74601e+07 -2.94692e+06 6.12348e+06
+-1.91638e+07 -2.36378e+06 5.10527e+06
+-2.01703e+07 -1.7366e+06 3.96245e+06
+-2.07122e+07 -1.19923e+06 2.91843e+06
+-2.09791e+07 -787346 2.04729e+06
+-2.10951e+07 -487049 1.34757e+06
+-2.11324e+07 -271564 793343
+-2.11307e+07 -116889 356615
+-2.11118e+07 -5233.71 14166.3
+-2.10869e+07 75773.1 -251303
+-2.1062e+07 134513 -451722
+-2.10393e+07 176544 -594899
+-2.1019e+07 205480 -686208
+-2.09996e+07 223663 -730311
+-2.09794e+07 232672 -732485
+-2.09566e+07 233678 -699274
+-2.093e+07 227673 -638458
+-2.08995e+07 215595 -558534
+-2.08658e+07 198384 -467970
+-2.08304e+07 177000 -374487
+-2.07958e+07 152421 -284517
+-2.07646e+07 125619 -202907
+-2.07395e+07 97548.1 -132862
+-2.07231e+07 69120.9 -76074.6
+-2.07174e+07 41189.6 -32983.4
+-2.0724e+07 14527.8 -3070.61
+-2.07436e+07 -10186.1 14836.4
+-2.07766e+07 -32382.4 22306.1
+-2.08224e+07 -51610.6 21099.4
+-2.08802e+07 -67545.3 13022.4
+-2.09485e+07 -79987.9 -174.213
+-2.10255e+07 -88863.9 -16863.1
+-2.11094e+07 -94215.1 -35584.1
+-2.1198e+07 -96189.2 -55072.1
+-2.12892e+07 -95025.3 -74270.4
+-2.13808e+07 -91037.5 -92331.1
+-2.14711e+07 -84597.5 -108606
+-2.15583e+07 -76115 -122630
+0 -66019.8 -134104
+1.64711e+07 -2908.04 -110978
+1.64234e+07 -4823.59 -109886
+1.63704e+07 -6798.7 -107155
+1.63125e+07 -8760.63 -102819
+1.62502e+07 -10624.7 -96999.4
+1.61842e+07 -12296.4 -89917.7
+1.61155e+07 -13674.6 -81905.4
+1.60454e+07 -14655 -73412.5
+1.59753e+07 -15134.8 -65012.4
+1.59068e+07 -15017 -57401.4
+1.58415e+07 -14215.9 -51391.8
+1.57812e+07 -12662.8 -47896.7
+1.57276e+07 -10310.5 -47902.6
+1.56822e+07 -7139.36 -52427.6
+1.56467e+07 -3160.79 -62458.8
+1.56219e+07 1578.47 -78865.7
+1.56089e+07 6993.86 -102285
+1.56079e+07 12961.3 -132982
+1.56191e+07 19316.5 -170686
+1.56421e+07 25855.6 -214430
+1.56762e+07 32335.5 -262397
+1.57205e+07 38476.1 -311810
+1.57739e+07 43960.7 -358899
+1.5835e+07 48435.4 -398949
+1.59025e+07 51503.2 -426458
+1.59748e+07 52711.6 -435358
+1.60499e+07 51523.5 -419261
+1.6125e+07 47269 -371605
+1.61963e+07 39067 -285602
+1.62575e+07 25713.2 -153898
+1.62989e+07 5534.98 32061.6
+1.63054e+07 -23780.4 282870
+1.62526e+07 -65362.7 611981
+1.6101e+07 -123266 1.03616e+06
+1.57883e+07 -202225 1.57445e+06
+1.52206e+07 -306294 2.2426e+06
+1.42726e+07 -434958 3.03604e+06
+1.28158e+07 -575708 3.89364e+06
+1.07975e+07 -696172 4.64783e+06
+8.36105e+06 -747514 5.01325e+06
+5.89548e+06 -693557 4.71973e+06
+3.84377e+06 -553616 3.8125e+06
+2.37103e+06 -393894 2.7314e+06
+1.40615e+06 -260547 1.81331e+06
+809086 -164337 1.1465e+06
+454707 -99903.8 698935
+250951 -58888.4 413816
+136542 -33829.6 239320
+73458.2 -19028.6 135775
+39148.5 -10528.3 75858.4
+20658 -5754.72 41901.4
+10750.5 -3119.14 22956.5
+5459.53 -1682.15 12509.7
+2633.81 -905.777 6803.02
+1118.88 -488.821 3706.02
+300.396 -265.723 2031.91
+-149.097 -146.781 1131.28
+-404.617 -83.8968 651.615
+-560.818 -51.6339 404.041
+-671.946 -37.0177 291.644
+-774.106 -34.1987 270.49
+-899.764 -42.0415 332.031
+-1091.15 -63.6798 500.199
+-1417.33 -107.814 840.616
+-2002.97 -192.344 1487.26
+-3081.31 -351.786 2696.52
+-5090.91 -651.238 4945.34
+-8857.16 -1212.21 9112.69
+-15933.8 -2259.34 16806.1
+-29220.6 -4202.17 30914.4
+-54070.7 -7773.92 56541.2
+-100265 -14258.8 102549
+-185347 -25839.2 183875
+-339946 -46077.4 324776
+-615996 -80532.3 563215
+-1.0981e+06 -137434 955660
+-1.91579e+06 -228097 1.57921e+06
+-3.25091e+06 -366287 2.52565e+06
+-5.3174e+06 -562655 3.86076e+06
+-8.23679e+06 -802863 5.46992e+06
+-1.17697e+07 -1.01419e+06 6.83608e+06
+-1.52422e+07 -1.09076e+06 7.26485e+06
+-1.80748e+07 -1.00497e+06 6.69446e+06
+-2.00767e+07 -818403 5.55635e+06
+-2.13514e+07 -609054 4.29053e+06
+-2.21039e+07 -424815 3.14188e+06
+-2.25209e+07 -280842 2.18875e+06
+-2.2734e+07 -174369 1.42668e+06
+-2.28259e+07 -97168.9 825367
+-2.28453e+07 -41321.4 353151
+-2.2821e+07 -731.318 -15865.4
+-2.27699e+07 28938.5 -300867
+-2.27018e+07 50657.5 -515089
+-2.26225e+07 66390.6 -667243
+-2.25348e+07 77397.1 -763359
+-2.24403e+07 84475 -808645
+-2.23398e+07 88150.6 -808917
+-2.22342e+07 88812.4 -771298
+-2.21251e+07 86795.6 -704190
+-2.20145e+07 82428.3 -616725
+-2.19057e+07 76050.8 -517981
+-2.18022e+07 68020.3 -416223
+-2.17081e+07 58706.7 -318330
+-2.16275e+07 48484.7 -229484
+-2.15641e+07 37725.5 -153112
+-2.15208e+07 26787.4 -91031
+-2.15e+07 16007.3 -43714.5
+-2.15029e+07 5692.29 -10616.3
+-2.15298e+07 -3887.04 9510.51
+-2.15798e+07 -12502.9 18338.3
+-2.16514e+07 -19974.8 17749
+-2.17422e+07 -26171.6 9677.09
+-2.18493e+07 -31013.1 -3997.23
+-2.19694e+07 -34468 -21520.9
+-2.20989e+07 -36551.5 -41316
+-2.22341e+07 -37320.5 -62010.5
+-2.23716e+07 -36868 -82453.8
+-2.25079e+07 -35316.7 -101719
+-2.26399e+07 -32811.6 -119094
+-2.2765e+07 -29512.7 -134063
+0 -25587.7 -146293
+1.67275e+07 2908.04 -114076
+1.66767e+07 4823.59 -112966
+1.66197e+07 6798.69 -110174
+1.65569e+07 8760.63 -105736
+1.64888e+07 10624.7 -99778.1
+1.64162e+07 12296.4 -92528.6
+1.63404e+07 13674.5 -84329
+1.62627e+07 14655 -75641.8
+1.61848e+07 15134.8 -67055.8
+1.61085e+07 15016.9 -59285.3
+1.60358e+07 14215.9 -53162.9
+1.59689e+07 12662.8 -49623.9
+1.59097e+07 10310.6 -49678.4
+1.58602e+07 7139.37 -54368.3
+1.58221e+07 3160.79 -64704.1
+1.5797e+07 -1578.47 -81576.1
+1.57858e+07 -6993.86 -105638
+1.57891e+07 -12961.3 -137164
+1.58071e+07 -19316.5 -175885
+1.58395e+07 -25855.6 -220820
+1.58855e+07 -32335.5 -270123
+1.59439e+07 -38476.1 -320971
+1.60134e+07 -43960.7 -369523
+1.60921e+07 -48435.3 -410978
+1.61782e+07 -51503.2 -439718
+1.62695e+07 -52711.6 -449545
+1.63633e+07 -51523.5 -433917
+1.64559e+07 -47269 -386097
+1.65424e+07 -39067 -299097
+1.66153e+07 -25713.2 -165323
+1.66636e+07 -5534.97 24070.9
+1.667e+07 23780.4 280048
+1.66078e+07 65362.7 616545
+1.64352e+07 123266 1.05097e+06
+1.60876e+07 202225 1.60319e+06
+1.54704e+07 306294 2.2899e+06
+1.44608e+07 434958 3.1071e+06
+1.29385e+07 575708 3.99256e+06
+1.08645e+07 696172 4.77393e+06
+8.39466e+06 747514 5.15625e+06
+5.91862e+06 693557 4.85918e+06
+3.86586e+06 553616 3.92793e+06
+2.39197e+06 393894 2.8163e+06
+1.4238e+06 260547 1.87168e+06
+822381 164337 1.18499e+06
+463840 99903.8 723457
+256793 58888.4 428964
+140087 33829.6 248429
+75526.3 19028.6 141126
+40318.5 10528.3 78942.3
+21303 5754.72 43652.1
+11096.3 3119.14 23939.3
+5637.63 1682.15 13057.1
+2718.76 905.777 7106.53
+1152.31 488.821 3874.3
+305.184 265.723 2125.69
+-160.456 146.781 1184.31
+-425.376 83.8968 682.617
+-587.467 51.6339 423.538
+-702.882 37.0177 305.869
+-809.019 34.1987 283.71
+-939.529 42.0415 348.126
+-1138.14 63.6798 524.11
+-1476.32 107.814 880.181
+-2082.93 192.344 1556.14
+-3198.77 351.786 2819.34
+-5276.14 651.238 5166.6
+-9165.19 1212.21 9512.54
+-16463.3 2259.34 17527.8
+-30145.3 4202.17 32210.1
+-55689.3 7773.92 58847.4
+-103070 14258.8 106606
+-190100 25839.2 190903
+-347725 46077.4 336717
+-628098 80532.3 583052
+-1.11566e+06 137434 987812
+-1.9391e+06 228097 1.62996e+06
+-3.27872e+06 366287 2.60359e+06
+-5.34735e+06 562655 3.97644e+06
+-8.26984e+06 802863 5.63089e+06
+-1.1821e+07 1.01419e+06 7.03368e+06
+-1.53462e+07 1.09076e+06 7.46802e+06
+-1.82634e+07 1.00497e+06 6.87216e+06
+-2.03618e+07 818403 5.6938e+06
+-2.17257e+07 609054 4.38767e+06
+-2.25501e+07 424815 3.20553e+06
+-2.30192e+07 280842 2.22679e+06
+-2.32667e+07 174369 1.44571e+06
+-2.33779e+07 97168.9 830360
+-2.34049e+07 41321.4 347781
+-2.33786e+07 731.325 -28854.1
+-2.33178e+07 -28938.5 -319369
+-2.32338e+07 -50657.5 -537427
+-2.31333e+07 -66390.6 -692025
+-2.30203e+07 -77397.1 -789389
+-2.28972e+07 -84475 -834881
+-2.2766e+07 -88150.6 -834466
+-2.26285e+07 -88812.4 -795426
+-2.24873e+07 -86795.6 -726339
+-2.23455e+07 -82428.3 -636517
+-2.22073e+07 -76050.8 -535218
+-2.2077e+07 -68020.3 -430864
+-2.19595e+07 -58706.7 -330468
+-2.18594e+07 -48484.7 -239313
+-2.17808e+07 -37725.5 -160894
+-2.17269e+07 -26787.4 -97068.6
+-2.17001e+07 -16007.3 -48323
+-2.17016e+07 -5692.29 -14107.1
+-2.17312e+07 3887.04 6844.13
+-2.17879e+07 12502.9 16230.1
+-2.18697e+07 19974.8 15964.8
+-2.19735e+07 26171.6 8018.38
+-2.2096e+07 31013.1 -5692.66
+-2.2233e+07 34468 -23378.9
+-2.23805e+07 36551.5 -43427.3
+-2.25341e+07 37320.5 -64433.3
+-2.26897e+07 36868 -85216.5
+-2.28435e+07 35316.7 -104824
+-2.29918e+07 32811.6 -122522
+-2.31317e+07 29512.7 -137778
+0 25587.7 -150244
+1.64711e+07 7552.71 -110978
+1.64234e+07 12484.9 -109886
+1.63704e+07 17570.1 -107155
+1.63125e+07 22621.4 -102819
+1.62502e+07 27421.2 -96999.4
+1.61842e+07 31726.5 -89917.7
+1.61155e+07 35276.7 -81905.4
+1.60454e+07 37803 -73412.5
+1.59753e+07 39039.4 -65012.4
+1.59068e+07 38734.7 -57401.4
+1.58415e+07 36665.6 -51391.8
+1.57812e+07 32650.8 -47896.7
+1.57276e+07 26564.5 -47902.6
+1.56822e+07 18349.2 -52427.6
+1.56467e+07 8027.45 -62458.8
+1.56219e+07 -4288.25 -78865.7
+1.56089e+07 -18387.7 -102285
+1.56079e+07 -33957.7 -132982
+1.56191e+07 -50579 -170686
+1.56421e+07 -67725.9 -214430
+1.56762e+07 -84766.4 -262397
+1.57205e+07 -100964 -311810
+1.57739e+07 -115477 -358899
+1.5835e+07 -127354 -398949
+1.59025e+07 -135516 -426458
+1.59748e+07 -138714 -435358
+1.60499e+07 -135458 -419261
+1.6125e+07 -123877 -371605
+1.61963e+07 -101511 -285602
+1.62575e+07 -64998.5 -153898
+1.62989e+07 -9667.7 32061.6
+1.63054e+07 70997 282870
+1.62526e+07 185979 611981
+1.6101e+07 347290 1.03616e+06
+1.57883e+07 569714 1.57445e+06
+1.52206e+07 867489 2.2426e+06
+1.42726e+07 1.2435e+06 3.03604e+06
+1.28158e+07 1.66692e+06 3.89364e+06
+1.07975e+07 2.0463e+06 4.64783e+06
+8.36105e+06 2.2318e+06 5.01325e+06
+5.89548e+06 2.0976e+06 4.71973e+06
+3.84377e+06 1.68456e+06 3.8125e+06
+2.37103e+06 1.19913e+06 2.7314e+06
+1.40615e+06 791012 1.81331e+06
+809086 496786 1.1465e+06
+454707 300541 698935
+250951 176328 413816
+136542 100890 239320
+73458.2 56565.5 135775
+39148.5 31216.2 75858.4
+20658 17029 41901.4
+10750.5 9216 22956.5
+5459.53 4964.1 12509.7
+2633.81 2670.36 6803.02
+1118.88 1439.99 3706.02
+300.396 782.213 2031.91
+-149.097 431.793 1131.28
+-404.617 246.655 651.615
+-560.818 151.698 404.041
+-671.946 108.682 291.644
+-774.106 100.371 270.49
+-899.764 123.409 332.031
+-1091.15 187.039 500.199
+-1417.33 316.895 840.616
+-2002.97 565.736 1487.26
+-3081.31 1035.48 2696.52
+-5090.91 1918.41 4945.34
+-8857.16 3573.81 9112.69
+-15933.8 6667.59 16806.1
+-29220.6 12416.2 30914.4
+-54070.7 23003.7 56541.2
+-100265 42274.4 102549
+-185347 76800.2 183875
+-339946 137384 324776
+-615996 241040 563215
+-1.0981e+06 413193 955660
+-1.91579e+06 688902 1.57921e+06
+-3.25091e+06 1.1106e+06 2.52565e+06
+-5.3174e+06 1.71012e+06 3.86076e+06
+-8.23679e+06 2.43858e+06 5.46992e+06
+-1.17697e+07 3.06137e+06 6.83608e+06
+-1.52422e+07 3.2494e+06 7.26485e+06
+-1.80748e+07 2.94692e+06 6.69446e+06
+-2.00767e+07 2.36378e+06 5.55635e+06
+-2.13514e+07 1.7366e+06 4.29053e+06
+-2.21039e+07 1.19923e+06 3.14188e+06
+-2.25209e+07 787346 2.18875e+06
+-2.2734e+07 487049 1.42668e+06
+-2.28259e+07 271564 825367
+-2.28453e+07 116889 353151
+-2.2821e+07 5233.72 -15865.4
+-2.27699e+07 -75773.1 -300867
+-2.27018e+07 -134513 -515089
+-2.26225e+07 -176544 -667243
+-2.25348e+07 -205480 -763359
+-2.24403e+07 -223663 -808645
+-2.23398e+07 -232672 -808917
+-2.22342e+07 -233678 -771298
+-2.21251e+07 -227673 -704190
+-2.20145e+07 -215595 -616725
+-2.19057e+07 -198384 -517981
+-2.18022e+07 -177000 -416223
+-2.17081e+07 -152421 -318330
+-2.16275e+07 -125619 -229484
+-2.15641e+07 -97548.1 -153112
+-2.15208e+07 -69120.9 -91031
+-2.15e+07 -41189.6 -43714.5
+-2.15029e+07 -14527.8 -10616.3
+-2.15298e+07 10186.1 9510.51
+-2.15798e+07 32382.4 18338.3
+-2.16514e+07 51610.6 17749
+-2.17422e+07 67545.3 9677.09
+-2.18493e+07 79987.9 -3997.23
+-2.19694e+07 88863.9 -21520.9
+-2.20989e+07 94215.1 -41316
+-2.22341e+07 96189.2 -62010.5
+-2.23716e+07 95025.3 -82453.8
+-2.25079e+07 91037.5 -101719
+-2.26399e+07 84597.5 -119094
+-2.2765e+07 76115 -134063
+0 66019.8 -146293
+1.55925e+07 9275.52 -101725
+1.5553e+07 15196.7 -100684
+1.55106e+07 21300.1 -98137.5
+1.54656e+07 27362.7 -94116.1
+1.54182e+07 33124 -88729.7
+1.53691e+07 38292.7 -82179.9
+1.53189e+07 42556 -74769.8
+1.52684e+07 45590.4 -66911.7
+1.52183e+07 47074.2 -59132
+1.51696e+07 46701.7 -52070.9
+1.51231e+07 44199 -46476.5
+1.50798e+07 39339.3 -43190.4
+1.50405e+07 31959.8 -43122.7
+1.50059e+07 21976.5 -47212.8
+1.49767e+07 9399.48 -56371.1
+1.49531e+07 -5655.1 -71397.1
+1.49353e+07 -22953.6 -92872.7
+1.49234e+07 -42136.4 -121030
+1.4917e+07 -62711.1 -155600
+1.49158e+07 -84048 -195662
+1.49193e+07 -105376 -239497
+1.4927e+07 -125779 -284495
+1.49387e+07 -144188 -327122
+1.49541e+07 -159366 -362973
+1.49733e+07 -169873 -386932
+1.49962e+07 -174006 -393388
+1.50229e+07 -169684 -376472
+1.50531e+07 -154255 -330212
+1.50855e+07 -124203 -248485
+1.51174e+07 -74711.2 -124704
+1.51435e+07 966.882 48770
+1.51537e+07 112393 281398
+1.51302e+07 273200 585197
+1.50415e+07 502668 975073
+1.48325e+07 826723 1.46776e+06
+1.44137e+07 1.27501e+06 2.0765e+06
+1.36548e+07 1.86632e+06 2.79561e+06
+1.24045e+07 2.57229e+06 3.56797e+06
+1.05677e+07 3.26239e+06 4.24108e+06
+8.24289e+06 3.67989e+06 4.55839e+06
+5.81303e+06 3.55549e+06 4.27968e+06
+3.76631e+06 2.89093e+06 3.44936e+06
+2.29977e+06 2.05823e+06 2.46511e+06
+1.34793e+06 1.34896e+06 1.6313e+06
+766433 839379 1.02753e+06
+426060 502729 623915
+232953 292194 367948
+125770 165882 212002
+67237.1 92423 119863
+35655.7 50750.1 66759.3
+18743.3 27580 36770.6
+9727.01 14883.1 20093.3
+4933.09 7997.27 10923.5
+2382.08 4293.72 5927.55
+1018.36 2312.03 3222.63
+283.646 1254.12 1763.54
+-118.759 691.38 980.078
+-347.004 394.532 563.509
+-486.17 242.337 348.806
+-584.941 173.398 251.442
+-675.662 160.051 233.148
+-787.331 196.83 286.491
+-957.823 298.659 432.339
+-1249.19 506.667 727.949
+-1773.63 905.61 1290.38
+-2742.17 1660.01 2344.16
+-4552.67 3080.14 4307.99
+-7956.22 5746.77 7955.75
+-14375.7 10742.7 14707.5
+-26482.7 20052.7 27124.9
+-49243.2 37257.5 49752.2
+-91826.7 68725.1 90518.2
+-170890 125464 162862
+-315946 225804 288739
+-577956 399185 502734
+-1.04161e+06 690479 856587
+-1.83871e+06 1.16216e+06 1.42126e+06
+-3.15608e+06 1.88963e+06 2.28128e+06
+-5.2127e+06 2.92668e+06 3.49684e+06
+-8.12112e+06 4.17097e+06 4.96368e+06
+-1.15953e+07 5.17052e+06 6.21421e+06
+-1.48964e+07 5.33621e+06 6.62114e+06
+-1.74601e+07 4.6785e+06 6.12348e+06
+-1.91638e+07 3.63235e+06 5.10527e+06
+-2.01703e+07 2.5951e+06 3.96245e+06
+-2.07122e+07 1.75341e+06 2.91843e+06
+-2.09791e+07 1.13368e+06 2.04729e+06
+-2.10951e+07 695265 1.34757e+06
+-2.11324e+07 387689 793343
+-2.11307e+07 170779 356615
+-2.11118e+07 16678.5 14166.3
+-2.10869e+07 -93205.4 -251303
+-2.1062e+07 -171238 -451722
+-2.10393e+07 -225640 -594899
+-2.1019e+07 -261865 -686208
+-2.09996e+07 -283549 -730311
+-2.09794e+07 -293197 -732485
+-2.09566e+07 -292663 -699274
+-2.093e+07 -283457 -638458
+-2.08995e+07 -266930 -558534
+-2.08658e+07 -244360 -467970
+-2.08304e+07 -216994 -374487
+-2.07958e+07 -186055 -284517
+-2.07646e+07 -152728 -202907
+-2.07395e+07 -118150 -132862
+-2.07231e+07 -83389.8 -76074.6
+-2.07174e+07 -49435.2 -32983.4
+-2.0724e+07 -17172.5 -3070.61
+-2.07436e+07 12626.1 14836.4
+-2.07766e+07 39316 22306.1
+-2.08224e+07 62389.9 21099.4
+-2.08802e+07 81484 13022.4
+-2.09485e+07 96379.5 -174.217
+-2.10255e+07 107000 -16863.1
+-2.11094e+07 113401 -35584.1
+-2.1198e+07 115765 -55072.1
+-2.12892e+07 114375 -74270.4
+-2.13808e+07 109607 -92331.1
+-2.14711e+07 101901 -108606
+-2.15583e+07 91746.1 -122630
+0 79652 -134104
+1.382e+07 7859.46 -86627
+1.37912e+07 12608.7 -85664.8
+1.3762e+07 17501 -83432.2
+1.37326e+07 22359 -79956.7
+1.37033e+07 26975 -75334.1
+1.36743e+07 31116.3 -69737.4
+1.36459e+07 34532 -63424.9
+1.36182e+07 36961.8 -56747.2
+1.35914e+07 38145.4 -50150.8
+1.35657e+07 37833.4 -44178.1
+1.35411e+07 35798.9 -39462.5
+1.35175e+07 31849.8 -36715.8
+1.34948e+07 25841.3 -36707.2
+1.34728e+07 17688.4 -40229.3
+1.3451e+07 7377.31 -48047.6
+1.3429e+07 -5022.84 -60830.5
+1.34062e+07 -19350 -79055.9
+1.33821e+07 -35339.6 -102897
+1.3356e+07 -52615.7 -132094
+1.33274e+07 -70682.9 -165820
+1.32961e+07 -88917.2 -202562
+1.32621e+07 -106555 -240043
+1.3226e+07 -122678 -275202
+1.31888e+07 -136184 -304254
+1.31521e+07 -145743 -322841
+1.3118e+07 -149713 -326242
+1.3089e+07 -146006 -309588
+1.30679e+07 -131872 -268009
+1.30572e+07 -103567 -196593
+1.3059e+07 -55859.8 -90101.7
+1.30739e+07 18718.4 57554.5
+1.30999e+07 131055 253988
+1.31294e+07 297404 508947
+1.31436e+07 542439 834537
+1.3103e+07 903082 1.24417e+06
+1.29313e+07 1.42977e+06 1.74799e+06
+1.24985e+07 2.17487e+06 2.3399e+06
+1.16226e+07 3.14835e+06 2.97113e+06
+1.01315e+07 4.2253e+06 3.51507e+06
+8.02542e+06 5.04918e+06 3.76184e+06
+5.65756e+06 5.11317e+06 3.51785e+06
+3.61409e+06 4.23791e+06 2.82402e+06
+2.16043e+06 3.01115e+06 2.00884e+06
+1.2376e+06 1.94897e+06 1.3222e+06
+688438 1.19395e+06 828032
+375364 703924 499912
+202000 403378 293236
+107658 226438 168121
+56949.9 125062 94627.8
+29957.5 68185.5 52490.7
+15651.3 36860.3 28806.1
+8083.74 19814.5 15688.9
+4090.21 10609.7 8503.22
+1977.76 5680.89 4601.35
+852.84 3053.69 2495.14
+249.707 1653.02 1362.07
+-79.1344 909.545 755.179
+-265.231 518.53 433.192
+-378.238 317.965 267.532
+-458.13 227.127 192.526
+-531.475 209.562 178.475
+-621.769 257.71 219.617
+-760.19 391.663 332.182
+-997.726 665.559 560.715
+-1426.47 1191.02 996.423
+-2222.26 2187.81 1814.78
+-3717.41 4068.2 3344.16
+-6540.01 7604.23 6193.59
+-11897.4 14254.7 11485.6
+-22078.7 26701.2 21255
+-41372.5 49800.4 39131.1
+-77852.7 92342.7 71487
+-146512 169762 129205
+-274502 308156 230218
+-510289 550777 403037
+-937665 965824 690754
+-1.69152e+06 1.65013e+06 1.15308e+06
+-2.96917e+06 2.72246e+06 1.86171e+06
+-5.0058e+06 4.2653e+06 2.86837e+06
+-7.90363e+06 6.08694e+06 4.0883e+06
+-1.12793e+07 7.40035e+06 5.13628e+06
+-1.42559e+07 7.28435e+06 5.49364e+06
+-1.6322e+07 6.02905e+06 5.10355e+06
+-1.74995e+07 4.42522e+06 4.27641e+06
+-1.80562e+07 3.01057e+06 3.33728e+06
+-1.82602e+07 1.95592e+06 2.47277e+06
+-1.8295e+07 1.22854e+06 1.74729e+06
+-1.82638e+07 739434 1.16206e+06
+-1.82187e+07 409658 696897
+-1.81831e+07 184637 329081
+-1.81669e+07 29622.9 39436.4
+-1.81728e+07 -77366.9 -186380
+-1.81999e+07 -150561 -358173
+-1.82455e+07 -199372 -482213
+-1.83053e+07 -230093 -562676
+-1.83743e+07 -246969 -603154
+-1.84474e+07 -252923 -607833
+-1.85196e+07 -250062 -582074
+-1.85872e+07 -240014 -532396
+-1.86471e+07 -224130 -466015
+-1.86977e+07 -203606 -390187
+-1.87385e+07 -179540 -311565
+-1.87702e+07 -152958 -235709
+-1.8794e+07 -124819 -166820
+-1.88116e+07 -96013.4 -107684
+-1.88249e+07 -67363 -59779.3
+-1.88361e+07 -39610.3 -23497
+-1.88467e+07 -13413.8 1596.54
+-1.88584e+07 10658.6 16499.6
+-1.88723e+07 32136.7 22549.7
+-1.88894e+07 50653.1 21246.9
+-1.89101e+07 65946.6 14127.1
+-1.89347e+07 77864 2675.01
+-1.89632e+07 86357.9 -11732.1
+-1.89954e+07 91481.8 -27861.6
+-1.90308e+07 93382 -44647.3
+-1.9069e+07 92286.6 -61200
+-1.91095e+07 88492.1 -76806.5
+-1.91514e+07 82348.2 -90921
+-1.91944e+07 74240.2 -103151
+0 64572.4 -113241
+1.094e+07 4783.39 -66766.3
+1.09209e+07 7264.61 -65921.4
+1.09029e+07 9815.92 -64132.8
+1.08862e+07 12346.5 -61431.4
+1.0871e+07 14749.1 -57899.1
+1.08571e+07 16903.2 -53674.9
+1.08446e+07 18678.4 -48960
+1.08333e+07 19938.9 -44022.7
+1.08231e+07 20547.5 -39199.9
+1.08135e+07 20371.5 -34897.1
+1.0804e+07 19287.7 -31583.7
+1.07942e+07 17188.5 -29784.1
+1.07832e+07 13987.5 -30061.5
+1.07703e+07 9626.12 -32992.3
+1.07546e+07 4079.07 -39129.1
+1.07351e+07 -2639.03 -48946.9
+1.07108e+07 -10467.7 -62773.8
+1.06808e+07 -19293.8 -80704.5
+1.06443e+07 -28945.3 -102503
+1.06008e+07 -39182.9 -127506
+1.05502e+07 -49691.5 -154532
+1.04926e+07 -60067.9 -181835
+1.04291e+07 -69803 -207097
+1.03614e+07 -78253.3 -227491
+1.02918e+07 -84593.7 -239818
+1.02237e+07 -87739.9 -240681
+1.01614e+07 -86221.3 -226672
+1.011e+07 -77983.7 -194479
+1.00751e+07 -60085.2 -140840
+1.00635e+07 -28228.3 -62297.7
+1.00822e+07 23990.9 45256.9
+1.01382e+07 106382 187136
+1.02373e+07 234574 370345
+1.03797e+07 434503 603737
+1.05517e+07 750039 897165
+1.07072e+07 1.25274e+06 1.25799e+06
+1.07368e+07 2.04436e+06 1.68156e+06
+1.04338e+07 3.22249e+06 2.13196e+06
+9.51061e+06 4.75577e+06 2.51715e+06
+7.76957e+06 6.25034e+06 2.68592e+06
+5.46102e+06 6.83417e+06 2.50082e+06
+3.38139e+06 5.81709e+06 1.99497e+06
+1.93658e+06 4.09938e+06 1.40793e+06
+1.06388e+06 2.59372e+06 918890
+569975 1.55148e+06 570863
+301115 894896 342201
+158241 503201 199500
+82775.9 278621 113781
+43107.7 152332 63749.7
+22435.9 82325.3 35221.2
+11631.9 44241 19261.1
+5963.25 23693.1 10457.2
+3009.03 12628.9 5651.44
+1459.3 6740.93 3050.27
+634.22 3620.71 1650.02
+195.596 1954.52 898.602
+-41.6409 1072.67 497.139
+-176.467 611.889 284.573
+-257.796 374.422 175.374
+-314.909 266.877 126.026
+-367.585 246.431 116.828
+-432.056 302.645 143.945
+-531.681 461.026 218.188
+-703.637 784.914 369.18
+-1013 1404.2 657.555
+-1592.35 2586.79 1200.46
+-2689.78 4823.21 2217.92
+-4763.23 9023.83 4119.03
+-8734.42 16971.6 7661.09
+-16375.6 31932.7 14224.2
+-30976.9 59779.9 26282.7
+-58988.6 111512 48209.8
+-112847 206794 87537.3
+-215504 379132 156796
+-410359 686858 276155
+-778265 1.22692e+06 476595
+-1.45718e+06 2.14083e+06 801917
+-2.66505e+06 3.61288e+06 1.306e+06
+-4.68465e+06 5.78237e+06 2.02982e+06
+-7.62186e+06 8.31092e+06 2.91574e+06
+-1.08979e+07 9.83632e+06 3.68532e+06
+-1.33451e+07 8.96886e+06 3.9587e+06
+-1.46114e+07 6.75549e+06 3.68895e+06
+-1.49997e+07 4.51337e+06 3.09789e+06
+-1.49309e+07 2.82091e+06 2.4214e+06
+-1.46976e+07 1.70685e+06 1.79673e+06
+-1.44494e+07 1.01328e+06 1.27228e+06
+-1.42466e+07 584372 849691
+-1.41063e+07 314426 514270
+-1.40276e+07 140853 249063
+-1.40035e+07 27793.5 39641.3
+-1.40252e+07 -45841.4 -124732
+-1.40841e+07 -93059.6 -251214
+-1.41717e+07 -122208 -344109
+-1.42799e+07 -138752 -406002
+-1.44011e+07 -146297 -438986
+-1.45279e+07 -147248 -445635
+-1.46542e+07 -143247 -429520
+-1.47746e+07 -135473 -395217
+-1.48851e+07 -124823 -347961
+-1.4983e+07 -112025 -293124
+-1.50669e+07 -97698.6 -235698
+-1.51363e+07 -82390 -179893
+-1.51917e+07 -66584.5 -128916
+-1.52341e+07 -50716.2 -84912.1
+-1.52652e+07 -35172 -49041
+-1.52865e+07 -20293.9 -21642.8
+-1.52999e+07 -6379.84 -2436.57
+-1.53071e+07 6316.16 9281.48
+-1.53097e+07 17585.3 14467.1
+-1.53092e+07 27265.5 14195.9
+-1.53069e+07 35243 9569.75
+-1.5304e+07 41453.2 1654.29
+-1.53015e+07 45880.9 -8560.94
+-1.53002e+07 48558.9 -20187.5
+-1.53007e+07 49564.7 -32452.7
+-1.53036e+07 49016.1 -44706.1
+-1.53091e+07 47065.4 -56418.9
+-1.53177e+07 43891.7 -67177.6
+-1.53293e+07 39692.4 -76674.5
+0 34674.3 -84697.3
+7.1855e+06 2222.88 -44562.6
+7.17331e+06 2887.45 -43891.3
+7.16216e+06 3565.83 -42648.3
+7.15213e+06 4235.35 -40870.3
+7.14326e+06 4868.76 -38625.3
+7.13552e+06 5435.19 -36015.3
+7.12882e+06 5901.07 -33178
+7.12297e+06 6231.13 -30288.2
+7.11772e+06 6389.4 -27557.6
+7.11273e+06 6340.24 -25234.1
+7.10757e+06 6049.38 -23597.6
+7.10171e+06 5485.05 -22954.8
+7.09455e+06 4619.07 -23628.9
+7.08541e+06 3427.98 -25945.4
+7.07355e+06 1894.37 -30209.6
+7.0582e+06 8.3586 -36675.7
+7.03857e+06 -2230.59 -45505
+7.01392e+06 -4811.47 -56714.5
+6.98362e+06 -7708.91 -70119.5
+6.94722e+06 -10879.7 -85276.1
+6.90452e+06 -14258.2 -101433
+6.85569e+06 -17749.5 -117509
+6.8014e+06 -21220.4 -132101
+6.74288e+06 -24482.8 -143540
+6.68205e+06 -27268.7 -149994
+6.62165e+06 -29187.7 -149592
+6.56536e+06 -29657.7 -140550
+6.51803e+06 -27794.9 -121227
+6.48603e+06 -22238 -90073.2
+6.47769e+06 -10859.3 -45421.9
+6.50407e+06 9746.01 14854
+6.57982e+06 45261.3 93755.2
+6.7241e+06 105801 195522
+6.96056e+06 210719 325781
+7.31386e+06 399021 491076
+7.79503e+06 749521 696768
+8.36033e+06 1.4105e+06 941189
+8.82678e+06 2.61311e+06 1.20381e+06
+8.77374e+06 4.57081e+06 1.42993e+06
+7.62501e+06 7.0771e+06 1.52887e+06
+5.29376e+06 8.81964e+06 1.41844e+06
+3.05401e+06 7.76683e+06 1.11998e+06
+1.59992e+06 5.35012e+06 778849
+813786 3.25166e+06 500596
+408458 1.88092e+06 306901
+204706 1.05563e+06 182058
+104276 579959 105319
+53279.7 316848 59724
+27090.6 171736 33313.1
+13984.2 91865.3 18340.5
+7221.57 49137.3 10002.1
+3645.95 26293.6 5417
+1841.95 13924.1 2921.38
+906.351 7410.31 1574.29
+391.864 3995.12 850.166
+126.214 2145.88 462.167
+-13.8188 1172.62 255.435
+-97.639 673.326 146.081
+-146.932 410.339 89.8995
+-180.736 291.363 64.6052
+-213.283 270.493 59.9543
+-251.205 330.086 73.8828
+-311.774 505.316 112.078
+-418.254 862.98 189.952
+-600.685 1534.55 338.675
+-952.398 2840.61 619.025
+-1635.3 5319.8 1145.95
+-2886.25 9918.3 2132.28
+-5317.01 18717.4 3973.47
+-10136.9 35434.5 7396.05
+-19274.6 66385.9 13705.9
+-37069.5 124452 25224.5
+-72678.5 233137 45995.8
+-142115 431065 82829
+-279346 791503 146879
+-558630 1.44664e+06 255815
+-1.11589e+06 2.59221e+06 435674
+-2.20222e+06 4.51844e+06 720242
+-4.22602e+06 7.51564e+06 1.13828e+06
+-7.36575e+06 1.10314e+07 1.66052e+06
+-1.06467e+07 1.26156e+07 2.1207e+06
+-1.22492e+07 1.01094e+07 2.2861e+06
+-1.23064e+07 6.47961e+06 2.12572e+06
+-1.16438e+07 3.65857e+06 1.77354e+06
+-1.08546e+07 1.94505e+06 1.37301e+06
+-1.019e+07 1.01784e+06 1.0072e+06
+-9.70573e+06 534438 704440
+-9.38349e+06 278401 464282
+-9.18828e+06 136926 276394
+-9.08775e+06 55428.5 129326
+-9.05636e+06 7398.26 13501.1
+-9.07492e+06 -20815.4 -78062.6
+-9.12911e+06 -36827.2 -149792
+-9.20804e+06 -45175.5 -204032
+-9.30315e+06 -48665.1 -241813
+-9.40744e+06 -49051.6 -263725
+-9.51508e+06 -47436.1 -270640
+-9.62126e+06 -44515.3 -264124
+-9.72214e+06 -40741 -246501
+-9.81486e+06 -36419.3 -220647
+-9.89749e+06 -31769.8 -189658
+-9.96899e+06 -26958.3 -156492
+-1.0029e+07 -22115.2 -123700
+-1.00779e+07 -17345.1 -93256.9
+-1.01163e+07 -12733.2 -66511.4
+-1.01452e+07 -8349.35 -44226.8
+-1.01657e+07 -4251.69 -26676.2
+-1.01791e+07 -488.912 -13765.2
+-1.01866e+07 2898.08 -5151.35
+-1.01893e+07 5875.56 -346.657
+-1.01884e+07 8417.01 1206.2
+-1.01849e+07 10503.9 82.0318
+-1.01797e+07 12126.5 -3159.07
+-1.01739e+07 13284.7 -7990.71
+-1.0168e+07 13988.6 -13931.5
+-1.01628e+07 14258.5 -20551.6
+-1.0159e+07 14124.3 -27475.7
+-1.01569e+07 13624.4 -34383.6
+-1.01569e+07 12804.3 -41007.2
+-1.01595e+07 11714.1 -47127.9
+0 10405.9 -52573.8
+3.49115e+06 1330.73 -23827.2
+3.48354e+06 1416.26 -23386.3
+3.47604e+06 1500.1 -22699.5
+3.46868e+06 1580.49 -21802.5
+3.46147e+06 1655.25 -20745.1
+3.45441e+06 1721.98 -19590.7
+3.4475e+06 1778.09 -18415.9
+3.4407e+06 1820.95 -17309
+3.43397e+06 1847.88 -16369
+3.42723e+06 1856.19 -15703.6
+3.4204e+06 1843.19 -15427.2
+3.41336e+06 1806.13 -15657.8
+3.40599e+06 1742.17 -16513.2
+3.39812e+06 1648.36 -18105.8
+3.38956e+06 1521.64 -20534.3
+3.38009e+06 1359 -23872.1
+3.36948e+06 1157.79 -28151
+3.35748e+06 916.195 -33341.6
+3.34383e+06 633.82 -39330.5
+3.3283e+06 312.441 -45898.7
+3.31071e+06 -43.3644 -52706.1
+3.29096e+06 -425.718 -59287.9
+3.26906e+06 -823.235 -65069.4
+3.24523e+06 -1221.04 -69403.1
+3.2199e+06 -1600.8 -71625.7
+3.19384e+06 -1940.1 -71125.4
+3.16833e+06 -2210.29 -67398.3
+3.1454e+06 -2371.52 -60063.7
+3.12829e+06 -2362.69 -48812.2
+3.12218e+06 -2080.67 -33269.4
+3.13543e+06 -1325.69 -12791.5
+3.1816e+06 379.423 13770
+3.28285e+06 4441.97 48281.3
+3.4757e+06 15503.5 93457.3
+3.8191e+06 48983.5 152762
+4.4001e+06 153189 229609
+5.31386e+06 464616 324816
+6.55312e+06 1.31367e+06 431141
+7.7106e+06 3.31608e+06 525976
+7.61737e+06 7.04036e+06 570084
+5.07853e+06 1.12215e+07 527223
+2.48576e+06 1.02486e+07 406285
+1.06877e+06 6.69242e+06 271418
+474239 3.80083e+06 167051
+212429 2.11661e+06 98694.5
+96562.5 1.15692e+06 56985
+49032.2 619472 32427.9
+24780.2 336746 18224.3
+11844.9 182357 10105.6
+6345.01 96156 5546.35
+3385.74 51463.9 3021.04
+1571 27775 1632.82
+826.794 14493.1 880.798
+449.587 7695.79 476.276
+170.953 4225.61 256.766
+55.5738 2235.77 139.199
+5.51889 1208.9 77.4583
+-41.8704 713.065 44.4464
+-64.5406 428.489 27.2449
+-77.4401 301.099 19.767
+-95.6838 285.836 18.5404
+-109.324 340.193 22.6342
+-138.151 528.676 34.0748
+-197.213 912.376 57.9901
+-261.835 1581.35 102.989
+-417.834 2963.09 187.037
+-782.375 5620.37 347.205
+-1280.25 10293.4 646.884
+-2296.86 19498 1201.69
+-4727.26 37413.7 2237.45
+-8673.57 69471.7 4156.55
+-16165.8 130292 7665.01
+-33708.8 247501 14037.7
+-66432 457782 25470.5
+-131273 845222 45689.9
+-289964 1.58494e+06 81196.4
+-648412 2.91371e+06 142752
+-1.46683e+06 5.27172e+06 246137
+-3.42816e+06 9.36793e+06 407903
+-7.02664e+06 1.44655e+07 620696
+-1.0555e+07 1.59403e+07 812581
+-1.06788e+07 1.00422e+07 878636
+-9.06824e+06 4.7297e+06 805236
+-7.355e+06 1.86221e+06 652830
+-6.1021e+06 649372 485436
+-5.31364e+06 208977 338716
+-4.85359e+06 64361 223026
+-4.59977e+06 19134.5 135923
+-4.4704e+06 4636.36 71109.9
+-4.41531e+06 -564.321 22350
+-4.40431e+06 -2721.82 -15345.9
+-4.41916e+06 -3677.81 -45489.2
+-4.4488e+06 -4052.17 -70151.3
+-4.48649e+06 -4105.6 -90178
+-4.52803e+06 -3965.86 -105580
+-4.5707e+06 -3697.11 -116010
+-4.61268e+06 -3331.72 -121197
+-4.65266e+06 -2889.57 -121224
+-4.68976e+06 -2388.81 -116612
+-4.7234e+06 -1849.94 -108253
+-4.75333e+06 -1295.31 -97255.3
+-4.7795e+06 -746.564 -84766.9
+-4.80209e+06 -221.94 -71828.1
+-4.82139e+06 265.496 -59278.6
+-4.8378e+06 708.225 -47720.6
+-4.85173e+06 1103.54 -37527.5
+-4.86357e+06 1452.13 -28882.2
+-4.87371e+06 1756.45 -21827
+-4.88248e+06 2019.38 -16313.5
+-4.89016e+06 2243.27 -12241.6
+-4.89701e+06 2429.63 -9486.79
+-4.90325e+06 2579.09 -7914.71
+-4.90907e+06 2691.82 -7388.15
+-4.91464e+06 2767.88 -7768.8
+-4.92013e+06 2807.71 -8917.63
+-4.92568e+06 2812.33 -10695.2
+-4.93141e+06 2783.6 -12962.3
+-4.93745e+06 2724.23 -15581.2
+-4.94387e+06 2637.76 -18416.2
+-4.95077e+06 2528.34 -21336.4
+0 2400.42 -24217.4
+216647 79.5057 -4200.84
+216328 84.4081 -4117.4
+215996 89.1868 -3999.98
+215653 93.7461 -3856.53
+215298 97.9646 -3697.18
+214932 101.706 -3534.07
+214555 104.824 -3381.06
+214170 107.171 -3253.35
+213777 108.596 -3166.86
+213379 108.947 -3137.65
+212980 108.07 -3181.04
+212583 105.803 -3310.84
+212190 101.976 -3538.34
+211802 96.4025 -3871.36
+211420 88.8818 -4313.18
+211038 79.2065 -4861.45
+210650 67.1782 -5507.02
+210243 52.636 -6232.85
+209798 35.4947 -7013.04
+209297 15.7899 -7812.03
+208716 -6.27694 -8584.61
+208030 -30.3018 -9276.58
+207216 -55.6545 -9826.9
+206255 -81.4675 -10171.2
+205128 -106.621 -10247.1
+203826 -129.692 -10000.5
+202348 -148.81 -9392.59
+200716 -161.303 -8405.63
+198992 -162.806 -7045.7
+197328 -144.156 -5341.46
+196046 -77.8596 -3337.37
+195847 144.203 -1081.89
+198398 986.724 1388.65
+208065 4409.9 4068.92
+236854 18190.8 7000.34
+316553 70797.9 10271.7
+520743 256795 13996.2
+975858 853558 18305
+1.74892e+06 2.53619e+06 23447.6
+2.36404e+06 6.41657e+06 29685.3
+1.3392e+06 1.2237e+07 35091.8
+385441 1.11949e+07 30954.1
+69646.9 7.00332e+06 21513.9
+23666.6 3.8439e+06 13430.4
+6144.43 2.13257e+06 7844.79
+-178.985 1.16244e+06 4347.15
+1792.3 617005 2496.89
+1022.38 337189 1455.08
+-92.2348 183303 777.897
+228.321 95766.2 418.533
+208.349 51448.9 240.054
+-33.4037 27994.7 123.884
+16.7992 14430.6 63.0856
+43.7644 7662.52 38.0838
+-7.57934 4273.89 19.8157
+-4.07262 2230.81 8.95371
+6.818 1197.13 5.92528
+-3.34207 722.75 3.63128
+-3.5635 428.55 1.59268
+-1.34116 298.728 1.36265
+-5.11164 289.392 1.69347
+-1.8497 336.791 1.56155
+-3.12052 529.769 2.0983
+-15.0966 923.775 4.83057
+-0.463212 1565.65 7.88462
+0.677936 2960.12 12.4366
+-63.5062 5680.62 27.502
+-22.6105 10244.3 52.0378
+28.8906 19430.5 87.6721
+-290.401 37704.1 174.288
+-282.477 69417.4 335.629
+101.065 129815 588.798
+-1447.95 248822 1107.27
+-2357.51 458250 2076.48
+178.554 842012 3584.85
+-9189.17 1.59319e+06 6317.38
+-34013.6 2.93635e+06 11495.4
+-100834 5.33444e+06 19826.7
+-554782 9.8149e+06 32104.1
+-1.91968e+06 1.58197e+07 46745.5
+-3.38457e+06 1.73918e+07 53699.9
+-2.50216e+06 9.1473e+06 46073.1
+-1.39289e+06 3.61065e+06 36677.1
+-743891 1.2061e+06 28730.2
+-457011 357318 22143.1
+-348003 96059.7 16657.1
+-310425 23775.8 12047.2
+-298980 5458.34 8050.67
+-296929 1106.48 4427.73
+-298333 87.386 1019.12
+-300968 -172.288 -2244.59
+-303920 -250.559 -5358
+-306794 -274.345 -8261.61
+-309434 -274.904 -10864.3
+-311797 -262.635 -13067.1
+-313883 -242.165 -14785.8
+-315703 -215.909 -15967.5
+-317267 -185.398 -16599
+-318584 -151.939 -16705.9
+-319670 -116.869 -16345.5
+-320546 -81.5467 -15596
+-321246 -47.2243 -14545.6
+-321811 -14.9062 -13283.1
+-322284 14.7336 -11892
+-322706 41.3597 -10445.9
+-323112 64.9191 -9007.7
+-323526 85.5479 -7629.1
+-323964 103.471 -6351.53
+-324432 118.92 -5207.07
+-324928 132.077 -4219.32
+-325446 143.059 -3404.1
+-325978 151.917 -2769.91
+-326515 158.667 -2318.37
+-327049 163.31 -2044.76
+-327575 165.865 -1938.67
+-328088 166.383 -1984.82
+-328587 164.965 -2164.01
+-329071 161.762 -2454.1
+-329541 156.971 -2831.07
+-329999 150.828 -3269.94
+0 143.575 -3745.77
+12504.1 4.67035 -247.338
+12485.2 4.94791 -242.624
+12465.7 5.21693 -235.97
+12445.5 5.47228 -227.829
+12424.6 5.70727 -218.777
+12403.1 5.91421 -209.501
+12381 6.08495 -200.789
+12358.3 6.21112 -193.496
+12335.3 6.28427 -188.522
+12312 6.29579 -186.77
+12288.5 6.23679 -189.1
+12265.1 6.0978 -196.282
+12241.9 5.86844 -208.946
+12218.8 5.53707 -227.521
+12195.7 5.09073 -252.18
+12172.3 4.51544 -282.779
+12147.9 3.79713 -318.789
+12121.6 2.92332 -359.237
+12092.1 1.88545 -402.648
+12057.8 0.68178 -447.004
+12017.1 -0.679692 -489.74
+11968.2 -2.17851 -527.79
+11909.3 -3.77979 -557.71
+11838.9 -5.43282 -575.886
+11755.9 -7.06942 -578.841
+11659.5 -8.60015 -563.612
+11549.9 -9.9042 -528.138
+11429.1 -10.7989 -471.578
+11302.2 -10.9158 -394.451
+11181.8 -9.0595 -298.494
+11102.7 0.26153 -186.198
+11180.2 44.9258 -59.9966
+11855.9 264.082 78.8203
+14870.3 1318.2 231.365
+26778 6164.53 402.859
+70128.4 27258.3 609.321
+212851 113738 914.548
+620499 445262 1582.96
+1.54181e+06 1.61361e+06 3492.4
+2.7272e+06 5.22891e+06 8526.77
+1.41588e+06 1.35451e+07 17131.9
+281684 1.23266e+07 16620.5
+5932.45 7.27774e+06 11041.5
+10492.9 3.83867e+06 6712.67
+143.096 2.14275e+06 3709.5
+-4454.39 1.16705e+06 1813.71
+1220.45 611242 1081.38
+695.147 337570 692.055
+-703.348 184641 327.338
+133.258 94931.3 165.1
+206.792 51377.8 110.022
+-137.754 28334.1 48.0527
+-6.43542 14295.3 19.6776
+55.8795 7598.37 17.6536
+-22.6346 4351.86 7.99243
+-8.93506 2217.1 1.2484
+12.5892 1175.43 2.41494
+-3.43858 738.696 1.73079
+-2.2405 427.507 -0.0570218
+2.50816 294.008 0.32618
+-3.45127 295.232 1.01182
+3.18781 330.219 0.353148
+2.90259 530.241 0.0480842
+-15.9222 942.488 2.31692
+12.9048 1536.63 3.05006
+24.8617 2948.19 2.09026
+-72.899 5777.7 11.577
+18.7003 10150.5 23.6922
+167.304 19277.1 27.9984
+-287.865 38153.2 70.6592
+-130.098 69263.8 154.868
+915.607 128771 234.751
+-1047.25 250702 479.133
+-1510.71 458524 1001.64
+6073.84 834319 1569.62
+-1070.12 1.60037e+06 2689.2
+-15269.6 2.95032e+06 5492.09
+-10037.5 5.32829e+06 9873.85
+-406144 1.02092e+07 16292.8
+-2.02121e+06 1.74314e+07 24730.6
+-3.88307e+06 1.92492e+07 25818.6
+-2.18701e+06 7.44806e+06 13116.7
+-871924 2.29377e+06 5514.47
+-294607 627869 2554.06
+-95635.9 157871 1485.92
+-36736.9 36887.5 1001.23
+-21176.2 8037.78 692.996
+-17470.4 1631.25 452.412
+-16744.3 302.55 244.359
+-16738.8 42.9147 52.8744
+-16908.6 -6.43977 -129.246
+-17117.3 -16.2522 -303.286
+-17325.5 -18.245 -466.507
+-17519.3 -18.1686 -613.842
+-17694.3 -17.2119 -739.503
+-17849.3 -15.74 -838.41
+-17984.2 -13.925 -907.246
+-18099.6 -11.8764 -944.989
+-18196.3 -9.68411 -952.902
+-18275.3 -7.43368 -934.121
+-18338.6 -5.20717 -893.034
+-18388.7 -3.07659 -834.64
+-18428.5 -1.09684 -764.003
+-18461.1 0.698034 -685.87
+-18489.3 2.29446 -604.45
+-18515.5 3.69527 -523.325
+-18541.5 4.91379 -445.446
+-18568.3 5.96766 -373.182
+-18596.4 6.87384 -308.372
+-18625.9 7.64557 -252.376
+-18656.4 8.29123 -206.116
+-18687.6 8.81487 -170.097
+-18719 9.21768 -144.432
+-18750.2 9.49984 -128.873
+-18780.8 9.66216 -122.843
+-18810.7 9.70736 -125.486
+-18839.7 9.64083 -135.718
+-18867.9 9.47096 -152.287
+-18895.3 9.20888 -173.827
+-18922 8.86757 -198.919
+0 8.4604 -226.143
+718.849 0.235044 -14.4899
+717.745 0.248623 -14.2248
+716.601 0.261719 -13.8494
+715.417 0.274093 -13.3893
+714.195 0.285424 -12.8772
+712.936 0.295337 -12.3519
+711.642 0.303434 -11.8577
+710.319 0.309305 -11.4428
+708.97 0.312534 -11.1578
+707.604 0.312697 -11.0532
+706.228 0.309348 -11.1771
+704.849 0.302005 -11.5723
+703.471 0.290126 -12.2736
+702.09 0.273089 -13.3047
+700.69 0.250188 -14.6745
+699.244 0.220639 -16.3743
+697.701 0.18363 -18.3735
+695.993 0.138405 -20.6166
+694.028 0.0843862 -23.0201
+691.697 0.0213305 -25.4695
+688.877 -0.0505071 -27.8198
+685.441 -0.130216 -29.8981
+681.265 -0.216105 -31.5107
+676.241 -0.305597 -32.4555
+670.286 -0.395122 -32.5399
+663.358 -0.479894 -31.6029
+655.484 -0.55325 -29.5369
+646.818 -0.603952 -26.3053
+637.813 -0.601158 -21.9479
+629.954 -0.403551 -16.5688
+629.425 0.776886 -10.3003
+665.846 7.38596 -3.24232
+883.677 43.6345 4.61939
+1960.74 236.133 13.5015
+6891.37 1223.66 24.1218
+27988.1 6137.03 40.4379
+111666 29994.5 88.3163
+412904 143844 307.923
+1.34424e+06 681813 1290.63
+3.35132e+06 3.22077e+06 4848.09
+1.56613e+06 1.53286e+07 13554.9
+188441 1.37034e+07 12097
+-38852.7 7.50482e+06 6901.59
+15284.3 3.78458e+06 4051.1
+381.223 2.15799e+06 2002.85
+-6948.87 1.17472e+06 680.422
+2281.8 602004 523.487
+1082.59 338603 446.418
+-1182.36 186845 161.023
+238.513 93533.1 72.7881
+327.55 51301.6 74.7602
+-234.899 28892.1 21.9606
+-6.99936 14063 3.1964
+91 7498.38 13.8544
+-39.0447 4481.53 4.80849
+-13.9092 2192.2 -2.24058
+21.0404 1140.31 1.77172
+-5.87711 765.554 1.55673
+-3.38001 425.308 -0.843286
+4.54003 286.157 0.0464041
+-5.60408 305.196 1.20191
+5.44196 319.304 0.0160314
+5.60723 530.429 -0.889536
+-26.1208 974.117 2.08847
+20.8127 1489.52 2.01062
+43.9264 2925.4 -2.51696
+-118.407 5939.53 7.45857
+26.538 10003.1 17.7442
+287.502 19010.7 4.88664
+-456.721 38892.5 35.3692
+-240.293 69065.5 103.778
+1545.54 127014 101.855
+-1634.59 253797 245.699
+-2844.29 459516 649.206
+9574.78 821909 761.899
+-1661.61 1.61209e+06 1071.61
+-21531.3 2.97066e+06 3054.63
+53993.7 5.25282e+06 6017.58
+-275512 1.05383e+07 10269.4
+-2.2363e+06 1.93909e+07 18188.3
+-4.7672e+06 2.17777e+07 20696.5
+-1.9042e+06 4.5836e+06 7616.6
+-578918 967836 2118.1
+-153771 202466 542.268
+-37542.5 41549.7 165.885
+-8979.36 8289.42 75.0146
+-2549.92 1593.39 44.0011
+-1218.62 292.235 26.723
+-970.722 50.3128 13.8747
+-937.416 7.55401 2.85721
+-944.391 0.355413 -7.34003
+-958.451 -0.824969 -17.0376
+-973.146 -1.0101 -26.1712
+-986.994 -1.00808 -34.4761
+-999.561 -0.950355 -41.6182
+-1010.71 -0.864677 -47.2927
+-1020.41 -0.761463 -51.2928
+-1028.69 -0.647058 -53.5437
+-1035.59 -0.526544 -54.1047
+-1041.21 -0.404557 -53.146
+-1045.7 -0.285354 -50.9127
+-1049.23 -0.172522 -47.6869
+-1052.01 -0.0686823 -43.7559
+-1054.25 0.0246674 -39.3896
+-1056.15 0.107085 -34.8272
+-1057.86 0.178955 -30.2724
+-1059.5 0.241163 -25.8933
+-1061.15 0.29478 -21.8246
+-1062.85 0.3408 -18.1714
+-1064.61 0.379992 -15.012
+-1066.41 0.412846 -12.3995
+-1068.24 0.439606 -10.3638
+-1070.07 0.460352 -8.91246
+-1071.88 0.475098 -8.0325
+-1073.66 0.483878 -7.69211
+-1075.39 0.486818 -7.84345
+-1077.07 0.484178 -8.42565
+-1078.7 0.476364 -9.36805
+-1080.29 0.463919 -10.5935
+-1081.83 0.447468 -12.0217
+0 0.427649 -13.5721
+37.2187 0 -0.762637
+37.1606 0 -0.749187
+37.1005 0 -0.730082
+37.0383 0 -0.706635
+36.974 0 -0.680507
+36.9079 0 -0.653679
+36.8399 0 -0.628403
+36.7704 0 -0.607127
+36.6995 0 -0.592411
+36.6275 0 -0.586809
+36.5549 0 -0.592747
+36.4818 0 -0.612383
+36.4083 0 -0.647456
+36.3339 0 -0.699132
+36.2576 0 -0.76784
+36.1773 0 -0.853096
+36.0901 0 -0.953322
+35.9915 0 -1.06567
+35.876 0 -1.18584
+35.7368 0 -1.308
+35.5665 0 -1.42475
+35.3573 0 -1.52728
+35.1016 0 -1.60575
+34.7929 0 -1.64998
+34.4261 0 -1.65032
+33.9991 0 -1.59889
+33.5141 0 -1.49062
+32.9823 0 -1.32417
+32.444 0 -1.102
+32.0797 0 -0.829434
+32.8571 0 -0.51199
+40.1856 0 -0.150741
+83.6636 0 0.26292
+319.405 0 0.74697
+1541.94 0 1.34334
+7675.35 0 2.57229
+37657.8 0 9.74546
+181463 0 61.2547
+863159 0 377.016
+4.08363e+06 0 2027.77
+1.88582e+06 1.75258e+07 10881.2
+150299 1.54391e+07 8822.6
+-87798.8 7.74354e+06 3773.95
+25516.3 3.67183e+06 2245.24
+5275.66 2.17905e+06 921.355
+-11346.1 1.19208e+06 -235.029
+2961.41 587830 41.1865
+2246.3 339105 310.816
+-1868.43 190862 58.1118
+197.508 91504.4 -3.23469
+616.735 50911 60.8697
+-336.178 29843 10.582
+-51.2959 13772.1 -11.5897
+160.801 7282.97 14.0963
+-45.6161 4686.95 6.49868
+-29.0222 2175.91 -4.73098
+35.1812 1075.71 2.06705
+-4.64647 804.998 3.05252
+-6.82766 427.813 -0.811382
+5.0626 274.481 0.608959
+-8.52332 318.723 2.74526
+8.49044 302.509 0.600394
+1.11766 538.029 -0.723347
+-45.178 1019.84 3.92037
+39.2733 1404.73 1.96861
+46.171 2919.02 -5.66078
+-207.544 6191.96 9.79631
+90.7702 9700.47 16.7722
+399.459 18694.6 -15.1781
+-842.305 40132.9 20.9027
+-139.275 68401.8 80.4232
+2408.97 124512 -7.79759
+-3269.56 259340 104.365
+-3550 459519 448.958
+15561.3 803009 62.4634
+-8872.77 1.63756e+06 -217.04
+-34881.3 2.9978e+06 1522.55
+124108 5.09458e+06 3380.98
+-223997 1.08872e+07 5723.74
+-2.69276e+06 2.18598e+07 13550.8
+-5.80504e+06 2.4889e+07 17028.3
+-1.22188e+06 0 3324.6
+-254216 0 658.886
+-51805.8 0 121.099
+-10273.2 0 23.758
+-1988.97 0 6.76001
+-397.182 0 3.01355
+-105.526 0 1.59452
+-55.4647 0 0.768429
+-48.016 0 0.157241
+-47.6692 0 -0.370399
+-48.4278 0 -0.861556
+-49.3154 0 -1.32368
+-50.1645 0 -1.74622
+-50.9381 0 -2.11229
+-51.6254 0 -2.40566
+-52.2234 0 -2.61486
+-52.7328 0 -2.73528
+-53.1569 0 -2.76937
+-53.5021 0 -2.72546
+-53.7771 0 -2.61589
+-53.9931 0 -2.45503
+-54.1625 0 -2.25759
+-54.2977 0 -2.0374
+-54.4101 0 -1.80673
+-54.5091 0 -1.57602
+-54.602 0 -1.35389
+-54.6933 0 -1.14727
+-54.7857 0 -0.961569
+-54.8799 0 -0.800826
+-54.9757 0 -0.667813
+-55.0723 0 -0.564106
+-55.1684 0 -0.490147
+-55.2632 0 -0.445312
+-55.3558 0 -0.428018
+-55.4458 0 -0.435851
+-55.5331 0 -0.465724
+-55.6179 0 -0.514043
+-55.7003 0 -0.576877
+-55.7806 0 -0.650125
+0 0 -0.729671
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.50545e+06 1.10138e+07 50491.4
+3.4332e+06 1.84997e+07 82508.4
+-92079 1.12615e+07 48908.8
+-174514 3.74992e+06 25214.3
+180250 1.82185e+06 21234.7
+821.936 1.37354e+06 10030
+-39743.3 632330 994.056
+23663.6 277253 1511.36
+6105.51 207984 1803.89
+-8289.67 105627 240.817
+3640.44 39212.2 238.593
+2731.42 30959.4 476.788
+-1562.04 18118.1 82.004
+489.747 5219.18 38.1576
+920.053 4237.42 173.352
+-195.51 3287.3 86.9473
+27.769 845.488 34.656
+233.927 584.341 64.5173
+-49.1937 702.529 57.2228
+-117.771 348.802 48.7625
+18.7444 195.364 57.1628
+-57.853 379.084 54.8568
+-400.885 861.909 73.1503
+-129.55 728.156 78.1046
+99.907 1172.7 37.0852
+-1304.8 4326.33 115.225
+-602.338 5468.87 220.031
+1798.57 7281.08 48.3204
+-3962.39 24523.5 148.032
+-4405.87 40855.9 644.103
+10788.4 53510.4 288.461
+-9759.53 144690 426.002
+-30545.5 279590 2595.27
+55024.4 376123 2067.1
+-8524.71 871790 1747.96
+-249179 1.88061e+06 14889.4
+253019 2.49168e+06 30248.5
+104343 5.2364e+06 35845.4
+-4.88684e+06 1.58672e+07 71637.4
+-9.21657e+06 2.61723e+07 122534
+0 1.56629e+07 76228.4
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.32102e+06 0 47391.9
+7.63363e+06 0 128130
+2.8455e+06 0 108435
+-466324 0 34974.6
+-148753 0 20415.1
+249031 0 31224.9
+-7835.14 0 16354.5
+-43010.1 0 1898.17
+38355.7 0 2545.83
+8805.1 0 2603.38
+-9287.69 0 211.439
+7519.35 0 473.41
+5106.3 0 917.756
+-1221.4 0 331.184
+1515.77 0 266.518
+1799.13 0 464.594
+24.7316 0 317.225
+172.673 0 201.053
+172.933 0 277.703
+-205.406 0 274.97
+-278.394 0 243.378
+-799.606 0 325.119
+-745.553 0 339.245
+-640.418 0 248.401
+-2882.2 0 382.842
+-2278.24 0 566.966
+918.595 0 339.619
+-7621.14 0 506.729
+-9816.97 0 1255.94
+11559.1 0 571.421
+-14565.2 0 409.143
+-50452.2 0 3724.95
+59358.3 0 3348.73
+209.968 0 2856.9
+-344460 0 23584.5
+218721 0 43557.8
+615953 0 27709.6
+-4.07153e+06 0 50038.3
+-1.08035e+07 0 157881
+-7.54338e+06 0 188691
+0 0 71171
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.28599e+06 -8.86725e+06 69299.4
+6.13268e+06 -1.48335e+07 202520
+2.29156e+06 -8.9848e+06 187613
+-356471 -2.96332e+06 65168.4
+-114743 -1.41495e+06 18676.6
+193462 -1.05402e+06 29058.7
+-7331.67 -476679 16220.8
+-32935.2 -207320 160.248
+29576.3 -156985 1879.82
+6186.9 -78828.3 3438.37
+-7194.02 -28918.9 615.745
+5592.28 -23086.3 344.583
+3452.52 -13274 913.305
+-1053.15 -3778.14 340.004
+1234.85 -3208.53 174.111
+1342.36 -2397.85 419.794
+7.93692 -584.164 348.632
+139.714 -451.788 264.816
+60.6614 -511.493 315.089
+-241.298 -249.111 236.127
+-237.31 -161.812 162.539
+-599.616 -269.353 258.136
+-576.852 -629.646 347.73
+-454.729 -556.714 318.119
+-2189.82 -814.994 439.655
+-1877.53 -3170.64 513.692
+832.863 -4127.7 208.801
+-5288.65 -5269.13 500.469
+-7276.99 -18047.5 1240.49
+9094.67 -30490.6 412.148
+-10561.4 -39509.6 921.339
+-39118.8 -108531 4741.25
+45933.4 -211824 2419.26
+1341.15 -282178 772.87
+-269989 -661385 23790.4
+170840 -1.45238e+06 40781.9
+473956 -1.94733e+06 25710.8
+-3.29847e+06 -4.16789e+06 92024.7
+-8.73029e+06 -1.27449e+07 265782
+-6.11e+06 -2.11144e+07 288117
+0 -1.26825e+07 99509.6
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.24566e+06 -1.41235e+07 61102.7
+2.77066e+06 -1.23699e+07 93966.7
+-61646.8 -6.1482e+06 44616.1
+-138829 -2.87752e+06 16600.5
+137602 -1.68901e+06 18866.7
+-1599.77 -914958 10173.6
+-30558.4 -447544 819
+18810.3 -257471 2295.23
+4535.73 -143978 3072.52
+-6365.97 -68385.7 699.72
+2804.23 -37977.7 126.844
+1929.81 -22150.4 415.224
+-1224.46 -10137.9 99.9864
+404.247 -5391.8 22.7212
+663.744 -3447.96 147.415
+-155.712 -1570.66 78.8805
+42.8296 -789.022 39.504
+164.031 -591.787 83.8285
+-56.2823 -303.664 69.9294
+-97.5572 -198.499 38.3618
+-0.0239696 -238.31 33.9296
+-36.9574 -218.546 38.6202
+-292.995 -383.108 82.1776
+-121.299 -749.582 99.6324
+82.8095 -1028.74 48.2063
+-967.362 -2113.52 108.854
+-502.069 -4562.02 189.223
+1428.16 -7179.83 28.1508
+-2849.17 -13793.4 170.64
+-3387.89 -29869.6 562.25
+8366.22 -51119.8 144.178
+-7423.94 -93353.2 1039.84
+-24427.7 -196463 4237.73
+42793.6 -350324 2991.96
+-3782.99 -614384 1323.85
+-191570 -1.26446e+06 14755
+203015 -2.33818e+06 26521.2
+66788.2 -4.01905e+06 23228.8
+-3.96738e+06 -8.70261e+06 63543.3
+-7.47219e+06 -1.76213e+07 134226
+0 -2.01665e+07 87968.5
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+32.2105 -0.252492 -0.447673
+32.1487 -0.25497 -0.432391
+32.0878 -0.255938 -0.413214
+32.0279 -0.255572 -0.391212
+31.9692 -0.254071 -0.367733
+31.9116 -0.251684 -0.344377
+31.8549 -0.248715 -0.322956
+31.7987 -0.245523 -0.305444
+31.7427 -0.242492 -0.293897
+31.6863 -0.24 -0.290372
+31.6287 -0.23836 -0.296823
+31.5691 -0.237759 -0.314991
+31.5061 -0.23819 -0.346286
+31.438 -0.239375 -0.391658
+31.3623 -0.240713 -0.451469
+31.2758 -0.241251 -0.525347
+31.1742 -0.239698 -0.612044
+31.0524 -0.234489 -0.709285
+30.9041 -0.223909 -0.81364
+30.7227 -0.206247 -0.920424
+30.5017 -0.179983 -1.02368
+30.2346 -0.143972 -1.11628
+29.9166 -0.0975967 -1.19017
+29.5445 -0.0409189 -1.2369
+29.1173 0.0251425 -1.24824
+28.637 0.0984636 -1.21706
+28.1097 0.174856 -1.13818
+27.5493 0.245144 -1.00893
+26.9956 0.280969 -0.829249
+26.6123 0.154235 -0.600431
+27.2452 -0.823911 -0.320957
+33.5128 -6.44513 0.0267426
+70.2901 -37.0343 0.519938
+267.316 -197.729 1.44977
+1279.49 -1014.75 3.91115
+6321.17 -5051.36 12.2518
+30829.3 -24543.2 44.7822
+147849 -117139 180.598
+700480 -553007 753.356
+3.30244e+06 -2.60303e+06 3098.65
+1.5224e+06 -1.23464e+07 13777.7
+122398 -1.09707e+07 9614.88
+-70498.7 -5.95497e+06 3447.23
+19302.8 -2.968e+06 2924.55
+3828.44 -1.67453e+06 1921.79
+-8735.84 -902879 250.881
+2451.76 -459004 313.67
+1722.84 -256981 550.144
+-1452.86 -140878 133.89
+164.17 -69969.9 -36.0927
+458.384 -38257.7 46.7137
+-259.055 -21441.6 19.1802
+-29.854 -10369.9 -8.87848
+117.649 -5539.61 14.0923
+-38.615 -3293.22 8.02425
+-18.6038 -1591.54 -4.06585
+26.7608 -835.11 2.78851
+-5.4883 -560.63 4.10544
+-4.61699 -304.713 -0.628532
+4.65669 -207.289 0.0895622
+-7.63924 -225.459 2.11345
+5.50782 -231.364 -0.115264
+3.00246 -380.761 -0.579318
+-34.4519 -713.415 5.2197
+26.0029 -1090.1 2.87473
+39.6534 -2128.13 -4.6887
+-153.539 -4370.71 11.6943
+59.4861 -7392.96 16.8623
+309.486 -14047.2 -11.3935
+-633.958 -28937.2 31.8667
+-117.574 -51617.4 61.6718
+1887.26 -95318.7 -47.1218
+-2544.42 -192138 211.243
+-2964.28 -350220 765.408
+12100.7 -629799 412.764
+-6609.73 -1.24638e+06 413.061
+-26491.9 -2.31961e+06 2830.58
+100381 -4.14675e+06 4212.99
+-183553 -8.418e+06 5045.02
+-2.18591e+06 -1.56195e+07 14074.7
+-4.71818e+06 -1.76374e+07 20263.5
+-996322 -3.72317e+06 4627.49
+-208110 -788690 1136.43
+-42628.5 -165636 275.81
+-8511.81 -34162.4 69.4771
+-1663.2 -6861.14 19.2877
+-335.609 -1330.82 6.24052
+-89.3071 -247.118 2.41058
+-46.2818 -43.2742 1.01736
+-39.7389 -6.69216 0.306459
+-39.4472 -0.46154 -0.200468
+-40.1823 0.50669 -0.633222
+-41.0648 0.579898 -1.021
+-41.9387 0.490644 -1.36299
+-42.7682 0.367293 -1.65007
+-43.5401 0.238914 -1.87274
+-44.2458 0.115551 -2.02471
+-44.8786 0.00198659 -2.10443
+-45.4338 -0.0988394 -2.1153
+-45.9099 -0.184697 -2.06474
+-46.3089 -0.253891 -1.96298
+-46.6369 -0.305513 -1.82153
+-46.9027 -0.339739 -1.65203
+-47.1168 -0.35794 -1.4654
+-47.2896 -0.362561 -1.27128
+-47.4309 -0.356778 -1.07793
+-47.5486 -0.344077 -0.892174
+-47.6485 -0.327822 -0.719492
+-47.735 -0.310918 -0.564183
+-47.8108 -0.295609 -0.429452
+-47.8777 -0.283401 -0.317497
+-47.9371 -0.275108 -0.229564
+-47.9903 -0.27096 -0.165995
+-48.0386 -0.270747 -0.126297
+-48.0834 -0.273964 -0.109215
+-48.1265 -0.279936 -0.112842
+-48.1695 -0.287922 -0.13474
+-48.2143 -0.297191 -0.17207
+-48.2624 -0.307061 -0.221725
+-48.3152 -0.316911 -0.280463
+0 -0.326154 -0.34503
+624.105 -5.06543 -8.48576
+622.926 -5.11401 -8.18748
+621.766 -5.13203 -7.81315
+620.628 -5.123 -7.38361
+619.513 -5.09108 -6.92519
+618.42 -5.04155 -6.46918
+617.346 -4.98095 -6.05112
+616.284 -4.91698 -5.70975
+615.227 -4.85797 -5.48556
+614.165 -4.81212 -5.41909
+613.085 -4.78649 -5.549
+611.971 -4.78573 -5.9099
+610.8 -4.81062 -6.52993
+609.541 -4.85675 -7.42836
+608.152 -4.91335 -8.61289
+606.576 -4.96276 -10.0769
+604.74 -4.9807 -11.7965
+602.554 -4.9375 -13.7277
+599.914 -4.80032 -15.8037
+596.708 -4.53623 -17.9331
+592.823 -4.11547 -19.9993
+588.158 -3.51477 -21.8621
+582.632 -2.72009 -23.3631
+576.199 -1.72908 -24.334
+568.849 -0.554356 -24.6101
+560.62 0.77007 -24.0456
+551.613 2.17444 -22.53
+542.037 3.51754 -20.001
+532.354 4.46403 -16.448
+523.93 3.90925 -11.9001
+522.201 -3.01044 -6.38494
+552.525 -40.1915 0.180349
+736.46 -224.645 8.29444
+1637.51 -1105.09 19.811
+5723.34 -5117.56 41.1025
+23073.8 -22455.9 94.4859
+91486.8 -93128.1 260.295
+336597 -362764 822.577
+1.09128e+06 -1.30909e+06 2691.12
+2.71088e+06 -4.22594e+06 8148.64
+1.26399e+06 -1.09054e+07 19475.1
+152448 -9.86306e+06 15995.4
+-31255.9 -5.77319e+06 8817.93
+11580.6 -3.01242e+06 5633.02
+154.791 -1.66431e+06 3202.09
+-5327.17 -897984 1267.21
+1855.04 -466501 838.417
+819.639 -256157 657.919
+-918.361 -139210 231.295
+189.395 -71072.7 67.8228
+241.779 -38313.6 78.2054
+-179.043 -21032.2 33.3935
+0.203433 -10553.4 7.43016
+65.8377 -5606.96 15.5653
+-31.5415 -3197.8 6.76634
+-8.42401 -1615.56 -1.33201
+15.6818 -859.799 2.35489
+-5.44924 -540.053 2.11122
+-2.0131 -308.192 -0.80116
+3.98441 -213.154 -0.0886153
+-4.79362 -216.635 1.14766
+3.48659 -239.456 -0.17444
+5.39635 -382.735 -0.826297
+-19.5636 -689.149 2.78303
+13.4459 -1123.82 2.7182
+35.7308 -2151.57 -1.36574
+-86.6673 -4250.8 9.94547
+14.2789 -7496.09 19.9355
+220.39 -14258.9 10.4921
+-342.241 -28389.3 50.0507
+-190.107 -51773.7 107.905
+1210.97 -96715.2 97.2716
+-1259.51 -189764 342.427
+-2326.61 -349433 928.679
+7419.64 -639956 1172
+-1125.34 -1.2386e+06 1840.5
+-16390.5 -2.30592e+06 4632.28
+43830.6 -4.20902e+06 8067.65
+-224180 -8.15236e+06 12639.7
+-1.81478e+06 -1.40337e+07 22978.5
+-3.87556e+06 -1.5584e+07 28081.8
+-1.55317e+06 -6.04977e+06 11829.3
+-474138 -1.86954e+06 3938.66
+-126613 -513837 1218.71
+-31130.5 -129871 391.987
+-7508.36 -30553.2 144.876
+-2141.98 -6718.01 64.808
+-1016.77 -1379.07 33.4677
+-804.198 -259.062 17.0939
+-775.91 -37.7894 5.66629
+-783.358 3.52549 -3.87943
+-797.584 10.123 -12.4278
+-812.814 9.7704 -20.1312
+-827.71 7.79352 -26.8835
+-841.86 5.40042 -32.5013
+-855.079 2.97886 -36.814
+-867.231 0.691277 -39.7162
+-878.194 -1.38494 -41.1931
+-887.872 -3.20431 -41.3219
+-896.215 -4.73186 -40.2555
+-903.245 -5.93999 -38.197
+-909.05 -6.81397 -35.3733
+-913.775 -7.35849 -32.0119
+-917.597 -7.60061 -28.3254
+-920.697 -7.5878 -24.5019
+-923.243 -7.38184 -20.7014
+-925.373 -7.05061 -17.0562
+-927.193 -6.65978 -13.6727
+-928.776 -6.26623 -10.6335
+-930.169 -5.91382 -8.0002
+-931.406 -5.63197 -5.81455
+-932.508 -5.43632 -4.0998
+-933.499 -5.33089 -2.8617
+-934.402 -5.31089 -2.08974
+-935.244 -5.36554 -1.75877
+-936.055 -5.48059 -1.83106
+-936.87 -5.64035 -2.25866
+-937.72 -5.82932 -2.98591
+-938.635 -6.03307 -3.95208
+-939.642 -6.23854 -5.09388
+0 -6.43359 -6.34782
+10895 -87.2272 -144.764
+10874.8 -88.0563 -139.505
+10855 -88.3537 -132.904
+10835.5 -88.1782 -125.329
+10816.5 -87.6041 -117.244
+10797.9 -86.7275 -109.201
+10779.6 -85.6687 -101.831
+10761.6 -84.5691 -95.8215
+10743.7 -83.5826 -91.892
+10725.8 -82.8624 -90.7666
+10707.5 -82.544 -93.1372
+10688.8 -82.7228 -99.6256
+10669.2 -83.4309 -110.742
+10648.3 -84.6135 -126.838
+10625.4 -86.11 -148.065
+10599.6 -87.6447 -174.316
+10569.9 -88.8314 -205.18
+10534.8 -89.1933 -239.888
+10492.8 -88.1992 -277.265
+10442.3 -85.3114 -315.698
+10381.6 -80.0371 -353.119
+10309.3 -71.9772 -387.039
+10224.3 -60.8648 -414.63
+10126.2 -46.5993 -432.869
+10014.8 -29.2938 -438.761
+9890.98 -9.37926 -429.605
+9756.13 12.1706 -403.276
+9613.14 33.3836 -358.459
+9467.6 50.2986 -294.742
+9331.49 54.0352 -212.514
+9235.85 18.9991 -112.563
+9280.65 -149.776 4.78029
+9839.87 -846.445 141.403
+12364.5 -3703.8 305.428
+22260.1 -15131.6 521.385
+57978.7 -58423.7 858.541
+174769 -210518 1513.5
+506530 -695976 3033.4
+1.25276e+06 -2.05858e+06 6755.4
+2.20729e+06 -5.18681e+06 14870.6
+1.14273e+06 -9.85025e+06 26531.9
+227163 -8.9549e+06 24020.3
+4836.27 -5.55522e+06 15407.8
+8090.59 -3.0184e+06 9441.78
+48.591 -1.65795e+06 5396.02
+-3414.51 -895386 2679.31
+1000.02 -471369 1534.38
+528.01 -255951 957.761
+-547.11 -138251 443.165
+105.704 -71759.7 199.288
+152.786 -38381.3 130.638
+-105.359 -20790.6 64.5981
+-1.73567 -10664.6 27.2734
+40.4833 -5652.82 21.2955
+-18.3859 -3141.49 10.5589
+-5.54309 -1629.69 2.529
+9.39029 -875.475 3.15822
+-3.20886 -528.016 2.29273
+-1.37151 -310.195 0.108623
+2.23543 -216.778 0.343135
+-2.93889 -211.519 1.07018
+2.05141 -244.442 0.349549
+2.90284 -383.793 0.254912
+-11.9239 -675.021 3.01564
+8.45769 -1145.12 3.96571
+20.3912 -2165.12 3.71248
+-53.3929 -4180.28 14.8462
+10.9696 -7565.13 28.3686
+128.778 -14386.6 37.8909
+-215.712 -28066.1 92.0106
+-102.39 -51913.6 181.507
+718.958 -97582.5 280.756
+-807.916 -188392 633.985
+-1243.89 -349347 1351.72
+4708.27 -646502 2163.72
+-757.282 -1.23428e+06 3830.16
+-11816.8 -2.29709e+06 7719.89
+-8067.62 -4.21636e+06 13459.4
+-329341 -7.83675e+06 21962.2
+-1.64009e+06 -1.27325e+07 34274.2
+-3.1585e+06 -1.40778e+07 37957.1
+-1.78528e+06 -7.43128e+06 21411.9
+-715014 -2.94413e+06 9829.97
+-243029 -987746 4477.97
+-79433.5 -294250 2269.34
+-30631.8 -79666.5 1312.79
+-17606.1 -19877.9 827.169
+-14471.9 -4585.15 524.296
+-13865.7 -918.521 297.604
+-13887.3 -69.7123 106.477
+-14069.2 120.463 -64.2769
+-14291.9 148.718 -219.267
+-14520.2 129.893 -358.334
+-14742.3 95.1683 -479.124
+-14953.7 55.9676 -578.592
+-15152.5 17.3841 -654.081
+-15336.6 -18.3019 -704.092
+-15504.2 -50.1034 -728.664
+-15653.5 -77.5007 -729.376
+-15783.2 -100.079 -709.067
+-15893.3 -117.479 -671.4
+-15984.8 -129.509 -620.41
+-16059.8 -136.262 -560.122
+-16120.8 -138.186 -494.277
+-16170.6 -136.063 -426.184
+-16211.7 -130.912 -358.652
+-16246.4 -123.859 -293.999
+-16276.1 -115.998 -234.083
+-16302.1 -108.277 -180.343
+-16325.2 -101.43 -133.843
+-16345.7 -95.9451 -95.2985
+-16364 -92.0797 -65.0972
+-16380.6 -89.8915 -43.3212
+-16395.7 -89.2867 -29.7684
+-16409.9 -90.0676 -23.9818
+-16423.6 -91.9753 -25.2854
+-16437.4 -94.7254 -32.8266
+-16451.8 -98.0354 -45.6197
+-16467.5 -101.643 -62.5919
+-16484.7 -105.312 -82.6269
+0 -108.828 -104.607
+189412 -1477.3 -2462.74
+189068 -1491.47 -2370.19
+188730 -1496.52 -2254.01
+188400 -1493.4 -2120.68
+188077 -1483.42 -1978.34
+187761 -1468.28 -1836.76
+187451 -1450.13 -1707.07
+187146 -1431.48 -1601.47
+186844 -1415.1 -1532.73
+186541 -1403.77 -1513.77
+186234 -1399.97 -1556.93
+185919 -1405.57 -1673.39
+185591 -1421.38 -1872.36
+185243 -1446.8 -2160.28
+184863 -1479.5 -2540.02
+184439 -1515.26 -3009.92
+183954 -1548.06 -3562.9
+183388 -1570.37 -4185.51
+182717 -1573.8 -4857.09
+181919 -1549.76 -5549.1
+180970 -1490.31 -6224.97
+179850 -1388.82 -6840.47
+178548 -1240.52 -7345.13
+177058 -1042.89 -7684.7
+175383 -796.329 -7804.87
+173535 -505.815 -7655.82
+171536 -184.562 -7197.14
+169427 138.843 -6401.9
+167282 408.13 -5258.83
+165249 517.321 -3771.29
+163622 260.599 -1952.49
+163028 -821.579 183.861
+164915 -3983.79 2638.93
+172993 -13166.2 5454.04
+197252 -41141.2 8750.5
+263740 -127424 12783.5
+432062 -382836 17992.7
+803514 -1.07413e+06 25003.6
+1.42923e+06 -2.69529e+06 34438.8
+1.92065e+06 -5.69445e+06 45905.2
+1.08471e+06 -9.03367e+06 54456.3
+312093 -8.19824e+06 46912.7
+56625.5 -5.31015e+06 31906.2
+19059.8 -2.98711e+06 19701.5
+4973.65 -1.6475e+06 11478.8
+-30.8951 -892342 6307.47
+1453.64 -473897 3541.03
+798.133 -255864 2023.86
+-70.4012 -137668 1063.04
+178.181 -72140.6 550.9
+156.5 -38429.3 309.762
+-25.8606 -20647.6 163.291
+14.4439 -10724.7 82.8404
+32.0462 -5680.43 48.0954
+-6.53742 -3108.51 25.4178
+-2.39968 -1636.72 11.8511
+5.11823 -884.568 7.49971
+-2.84472 -521.012 4.59065
+-2.45669 -311.051 2.06116
+-0.745885 -218.747 1.62099
+-3.98037 -208.537 1.94578
+-1.50362 -247.189 1.83142
+-1.82775 -384.025 2.65369
+-11.2228 -666.803 6.00732
+-0.895997 -1157.41 9.84864
+1.69968 -2171.41 16.1344
+-46.7969 -4139.02 34.7354
+-18.6391 -7606.36 65.1071
+23.1628 -14454.4 113.7
+-219.728 -27875.3 226.318
+-219.483 -52006.5 428.29
+80.0964 -98060 766.681
+-1138.01 -187558 1491.07
+-1918.13 -349331 2840.74
+8.83455 -649835 4991.15
+-7461.14 -1.22946e+06 8969.71
+-27511.3 -2.28198e+06 16430.8
+-82338.1 -4.17008e+06 28372.8
+-451682 -7.4816e+06 46297
+-1.56314e+06 -1.16428e+07 68549.6
+-2.76324e+06 -1.29041e+07 80173.8
+-2.05393e+06 -8.16281e+06 68294.5
+-1.15144e+06 -3.86155e+06 51616.3
+-618974 -1.52911e+06 37623.8
+-381068 -537248 27234.7
+-289449 -174295 19666.5
+-257492 -53757.1 13969
+-247852 -15585.6 9411.16
+-246475 -3402.76 5534.95
+-248249 627.983 2095.02
+-251215 1861.59 -1019.1
+-254560 1974.66 -3838.67
+-257938 1593.82 -6348.44
+-261211 1012.45 -8507.75
+-264337 382.75 -10268.3
+-267295 -220.316 -11589.9
+-270063 -765.17 -12452.3
+-272610 -1240.78 -12861.4
+-274903 -1642.67 -12848.7
+-276915 -1966.83 -12466.5
+-278639 -2208.99 -11780.7
+-280084 -2366.67 -10863.1
+-281277 -2441.57 -9784.69
+-282255 -2440.84 -8611.33
+-283059 -2377.02 -7401.16
+-283727 -2266.57 -6203.5
+-284294 -2127.82 -5058.92
+-284783 -1978.64 -3999.87
+-285212 -1834.62 -3051.38
+-285593 -1707.79 -2231.81
+-285934 -1606.2 -1553.35
+-286239 -1533.97 -1022.47
+-286515 -1491.91 -640.247
+-286768 -1478.28 -402.816
+-287006 -1489.53 -301.879
+-287236 -1521.08 -325.35
+-287469 -1567.89 -458.085
+-287713 -1624.92 -682.661
+-287978 -1687.52 -980.162
+-288271 -1751.52 -1330.95
+0 -1813.22 -1715.38
+3.1276e+06 -2231.38 -14143.5
+3.11911e+06 -2733.97 -13654.4
+3.11115e+06 -3240.13 -12994.4
+3.10378e+06 -3733.02 -12193
+3.09703e+06 -4192.57 -11290.8
+3.09091e+06 -4596.21 -10339
+3.08536e+06 -4919.62 -9398.92
+3.0803e+06 -5137.46 -8540.86
+3.07558e+06 -5223.98 -7843.14
+3.07102e+06 -5153.74 -7390.47
+3.06637e+06 -4902.2 -7272.05
+3.06133e+06 -4446.36 -7579.21
+3.05556e+06 -3765.38 -8402.34
+3.04868e+06 -2841.29 -9826.51
+3.04025e+06 -1659.85 -11925.2
+3.02983e+06 -211.719 -14751.6
+3.01695e+06 1506.02 -18326.1
+3.00117e+06 3487.8 -22622.2
+2.9821e+06 5716.9 -27549
+2.95942e+06 8162.07 -32935.4
+2.93297e+06 10773.2 -38518.4
+2.90276e+06 13475.3 -43938.9
+2.86904e+06 16160.3 -48751.9
+2.83237e+06 18673.7 -52450.8
+2.79366e+06 20793.4 -54506.3
+2.75425e+06 22194 -54412.2
+2.716e+06 22389.8 -51720.6
+2.68148e+06 20641.9 -46048.7
+2.65429e+06 15811.1 -37032
+2.63964e+06 6116.89 -24213.8
+2.64526e+06 -11286.8 -6868.48
+2.68312e+06 -41138.8 16231.1
+2.77214e+06 -91835.9 47113.4
+2.94276e+06 -179340 89007.9
+3.24314e+06 -335574 146816
+3.74258e+06 -624470 227220
+4.51288e+06 -1.16523e+06 336913
+5.53557e+06 -2.14166e+06 475979
+6.46145e+06 -3.71939e+06 624191
+6.33222e+06 -5.72252e+06 727382
+4.20383e+06 -7.09037e+06 712304
+2.05512e+06 -6.20479e+06 561549
+883232 -4.24211e+06 375264
+390632 -2.55629e+06 228832
+174184 -1.46575e+06 133395
+78767.6 -815706 75765.4
+39597.2 -444684 42385.3
+19788.6 -241281 23449.6
+9379.35 -129960 12807
+4977.56 -69122.6 6930.18
+2627.8 -36795 3736.46
+1212.51 -19603.4 2003.88
+636.28 -10338.8 1071.18
+341.987 -5484.46 574.594
+129.477 -2947.59 308.358
+43.6922 -1577.99 166.258
+5.20741 -860.529 91.9043
+-30.764 -493.085 52.4905
+-46.9719 -299.532 31.9336
+-56.4233 -212.473 22.9442
+-70.4541 -197.386 21.4203
+-80.4325 -240.761 26.1843
+-101.117 -369.01 39.7447
+-145.869 -632.189 68.1289
+-195.268 -1126.68 121.656
+-311.592 -2090.65 222.597
+-590.048 -3929.06 415.701
+-977.801 -7350.18 778.461
+-1766.31 -13922.5 1458.22
+-3667.58 -26476.3 2739.74
+-6806.31 -49840 5128.71
+-12817.1 -93937.6 9553.46
+-26990.6 -177086 17739.4
+-53825.6 -329685 32659.6
+-107498 -609928 59456
+-238915 -1.12418e+06 107333
+-537109 -2.0325e+06 191472
+-1.21983e+06 -3.5751e+06 333885
+-2.85387e+06 -5.99715e+06 557486
+-5.85829e+06 -8.86477e+06 847064
+-8.8368e+06 -1.0196e+07 1.08297e+06
+-9.00939e+06 -8.21604e+06 1.10445e+06
+-7.70604e+06 -5.30015e+06 940484
+-6.27587e+06 -3.0155e+06 709050
+-5.20632e+06 -1.61698e+06 495613
+-4.51845e+06 -853890 330436
+-4.10824e+06 -452679 211740
+-3.87733e+06 -238596 128020
+-3.75829e+06 -119665 68332.6
+-3.70909e+06 -50938 24717.1
+-3.70403e+06 -10375.4 -8163.31
+-3.72728e+06 13467.1 -33736.8
+-3.76883e+06 27013.6 -54016.4
+-3.82214e+06 34107.9 -69961.8
+-3.88263e+06 37129.5 -81841
+-3.94682e+06 37566.1 -89605.7
+-4.01192e+06 36349.3 -93213.6
+-4.07561e+06 34066.8 -92836.6
+-4.13604e+06 31100 -88931.6
+-4.19176e+06 27707.3 -82199
+-4.24182e+06 24073.7 -73478.3
+-4.28567e+06 20337.5 -63626.7
+-4.32312e+06 16604 -53417.7
+-4.35432e+06 12954.3 -43477
+-4.37961e+06 9450.03 -34257.4
+-4.3995e+06 6138.13 -26045.5
+-4.41457e+06 3054.74 -18989.3
+-4.42547e+06 228.466 -13134.1
+-4.43285e+06 -2317.27 -8457.61
+-4.43734e+06 -4562.86 -4897.71
+-4.43956e+06 -6492.22 -2372.01
+-4.44013e+06 -8093.18 -788.403
+-4.4396e+06 -9358.36 -50.0127
+-4.43851e+06 -10286.2 -56.7172
+-4.43733e+06 -10881.6 -705.64
+-4.4365e+06 -11156.7 -1891.64
+-4.43639e+06 -11130.5 -3508.11
+-4.43732e+06 -10828.5 -5448.05
+-4.43953e+06 -10281.8 -7605.31
+-4.44322e+06 -9525.4 -9876.37
+0 -8596.07 -12162.8
+6.40262e+06 -4404.87 -26755.7
+6.38842e+06 -6445.14 -25976.4
+6.37586e+06 -8535.77 -24800.2
+6.36512e+06 -10601.8 -23260.4
+6.35627e+06 -12554.9 -21414.8
+6.34931e+06 -14296.1 -19346.4
+6.34409e+06 -15718.6 -17164.9
+6.34038e+06 -16711.1 -15007.3
+6.3378e+06 -17161.6 -13037.4
+6.33582e+06 -16961.8 -11444.4
+6.33377e+06 -16011.3 -10440.3
+6.33085e+06 -14222.6 -10255
+6.32611e+06 -11525.4 -11128.6
+6.31849e+06 -7872.15 -13300.6
+6.30686e+06 -3242.94 -16993.5
+6.29001e+06 2349.19 -22389.4
+6.26676e+06 8852.53 -29599.8
+6.23599e+06 16170.8 -38628.4
+6.19676e+06 24156.5 -49328.3
+6.1484e+06 32603.9 -61360.3
+6.09066e+06 41240.9 -74157.5
+6.02381e+06 49718.1 -86905.5
+5.94883e+06 57594.9 -98548.4
+5.86747e+06 64316.1 -107825
+5.78243e+06 69175 -113333
+5.6974e+06 71250.7 -113617
+5.61717e+06 69306.2 -107238
+5.54775e+06 61627.2 -92799.5
+5.49659e+06 45772.4 -68869
+5.47287e+06 18190.2 -33774.5
+5.48808e+06 -26396.7 14753.3
+5.55666e+06 -96050.7 80082.8
+5.69658e+06 -203568 167341
+5.92885e+06 -370067 284237
+6.27348e+06 -630995 441867
+6.73495e+06 -1.04359e+06 654416
+7.2645e+06 -1.68812e+06 934528
+7.68768e+06 -2.63929e+06 1.27826e+06
+7.62878e+06 -3.86597e+06 1.63541e+06
+6.60094e+06 -5.04676e+06 1.88095e+06
+4.56482e+06 -5.48433e+06 1.84853e+06
+2.62402e+06 -4.63897e+06 1.49496e+06
+1.36777e+06 -3.24574e+06 1.03873e+06
+690355 -2.03718e+06 658897
+343197 -1.20853e+06 396843
+170182 -691541 230908
+85700.2 -385996 131112
+43293.7 -212311 73160.9
+21787.6 -115384 40243.7
+11141.3 -62023.6 21887.8
+5703.18 -33174.9 11820.2
+2858.39 -17692.3 6350.67
+1435.88 -9394.63 3399.71
+702.862 -4998.16 1821.01
+303.26 -2676.61 978.785
+98.7768 -1440.79 529.452
+-8.74802 -788.898 291.329
+-72.7416 -449.032 166.021
+-109.885 -274.128 101.639
+-135.302 -195.117 72.6664
+-159.883 -180.13 67.279
+-188.36 -221.317 82.916
+-233.94 -337.653 126.301
+-315.08 -576.232 215.136
+-454.926 -1033.28 385.127
+-725.63 -1908.4 707.477
+-1256.12 -3569.27 1316.66
+-2236.27 -6699.84 2462.07
+-4154.67 -12647.1 4616.55
+-7994.58 -23896.6 8656.3
+-15352.4 -44944.4 16168.1
+-29832.3 -84278 30044.7
+-59141.7 -157224 55442.8
+-117037 -290163 101202
+-232845 -529525 182284
+-470932 -953482 323206
+-950427 -1.6779e+06 560563
+-1.89145e+06 -2.85584e+06 942008
+-3.65002e+06 -4.60683e+06 1.50654e+06
+-6.38627e+06 -6.66546e+06 2.19746e+06
+-9.26503e+06 -7.93415e+06 2.73761e+06
+-1.06986e+07 -7.27864e+06 2.78225e+06
+-1.07539e+07 -5.52153e+06 2.40241e+06
+-1.01365e+07 -3.71927e+06 1.85996e+06
+-9.3816e+06 -2.34559e+06 1.34669e+06
+-8.73069e+06 -1.43288e+06 935289
+-8.24695e+06 -859532 627549
+-7.92082e+06 -502060 401621
+-7.7234e+06 -275479 234780
+-7.62587e+06 -128858 109718
+-7.60452e+06 -32726.6 14506.9
+-7.64082e+06 30375.5 -58668.6
+-7.72026e+06 71270.1 -114617
+-7.83107e+06 96916.8 -156030
+-7.96332e+06 111875 -184303
+-8.10833e+06 119153 -200300
+-8.25844e+06 120759 -204940
+-8.40703e+06 118075 -199543
+-8.54863e+06 112099 -185903
+-8.679e+06 103601 -166168
+-8.79519e+06 93214.7 -142615
+-8.89542e+06 81483.4 -117406
+-8.979e+06 68883.7 -92402.9
+-9.04609e+06 55837.2 -69049.7
+-9.09752e+06 42716.9 -48341.6
+-9.13461e+06 29850.8 -30852.7
+-9.15895e+06 17525 -16805.9
+-9.17232e+06 5986.48 -6159.38
+-9.17654e+06 -4556.05 1308.04
+-9.17344e+06 -13931.5 5925.03
+-9.16479e+06 -22006.7 8073.48
+-9.15227e+06 -28687.9 8152.02
+-9.13742e+06 -33920.5 6553.3
+-9.12165e+06 -37690 3650.46
+-9.10624e+06 -40020.6 -210.972
+-9.09225e+06 -40973 -4717.98
+-9.08063e+06 -40641.3 -9592.74
+-9.0721e+06 -39147.9 -14593.3
+-9.06723e+06 -36637.7 -19512.6
+-9.06644e+06 -33271.2 -24177.6
+0 -29217 -28447.4
+9.75592e+06 -7012.98 -40369.1
+9.73386e+06 -10984.2 -39322.9
+9.71388e+06 -15067.3 -37620.1
+9.69625e+06 -19113 -35294.2
+9.68116e+06 -22947 -32417.4
+9.66867e+06 -26374 -29104.4
+9.65869e+06 -29184 -25516
+9.65098e+06 -31158.9 -21861.7
+9.6451e+06 -32081.2 -18400.5
+9.64042e+06 -31742.6 -15439.9
+9.63611e+06 -29953.7 -13332.4
+9.63113e+06 -26554.7 -12467.9
+9.62423e+06 -21425.5 -13261.6
+9.614e+06 -14496.3 -16135.3
+9.59887e+06 -5757.97 -21489.3
+9.57721e+06 4728.24 -29663.7
+9.54735e+06 16821.2 -40887.9
+9.50775e+06 30290.9 -55217.5
+9.45705e+06 44810.2 -72463.5
+9.39433e+06 59946.5 -92120.6
+9.31918e+06 75153.7 -113303
+9.23201e+06 89763.2 -134705
+9.13413e+06 102971 -154593
+9.02798e+06 113819 -170847
+8.91723e+06 121158 -181048
+8.8068e+06 123585 -182591
+8.70289e+06 119340 -172791
+8.61284e+06 106131 -148930
+8.54505e+06 80871.6 -108156
+8.50886e+06 39277.3 -47196.6
+8.51429e+06 -24731.1 38161.6
+8.57152e+06 -119975 153833
+8.68939e+06 -259555 308464
+8.87154e+06 -463227 514750
+9.10729e+06 -760286 790702
+9.35281e+06 -1.19022e+06 1.15911e+06
+9.49919e+06 -1.79292e+06 1.63998e+06
+9.33881e+06 -2.5729e+06 2.22595e+06
+8.58257e+06 -3.42622e+06 2.83364e+06
+7.03209e+06 -4.06616e+06 3.25581e+06
+4.92654e+06 -4.09207e+06 3.2141e+06
+3.02428e+06 -3.37047e+06 2.62873e+06
+1.71042e+06 -2.37808e+06 1.85412e+06
+925728 -1.52731e+06 1.19372e+06
+488151 -928198 728104
+253889 -543047 427969
+131507 -308982 244868
+67893 -172337 137420
+34944.2 -94634.8 75948.8
+18005.3 -51331.7 41468.2
+9253.93 -27623.8 22461.5
+4707.87 -14789.7 12100.7
+2361.39 -7890.8 6494.08
+1140.32 -4211.72 3484.91
+494.513 -2257.53 1876.76
+153.706 -1218.88 1017.49
+-29.5181 -669.141 560.606
+-133.158 -380.677 319.858
+-195.207 -232.967 196.262
+-238.54 -166.175 140.417
+-278.468 -153.263 129.89
+-327.309 -188.596 160.064
+-403.17 -287.066 243.462
+-535.077 -488.825 413.68
+-773.646 -876.709 739.552
+-1223.49 -1614.47 1356.38
+-2082.17 -3010.66 2518
+-3715.85 -5645.28 4698.14
+-6871.44 -10620 8789.55
+-13003.4 -19973 16432.5
+-24840.4 -37419.5 30594.9
+-47820.2 -69737.8 56649.4
+-92621.3 -128942 104056
+-179309 -235560 188881
+-346575 -424015 337911
+-667948 -749315 593800
+-1.27112e+06 -1.29074e+06 1.01793e+06
+-2.36036e+06 -2.14703e+06 1.68642e+06
+-4.20202e+06 -3.38924e+06 2.65389e+06
+-6.89458e+06 -4.86804e+06 3.81088e+06
+-9.88495e+06 -5.95257e+06 4.69411e+06
+-1.20582e+07 -5.89604e+06 4.7494e+06
+-1.30803e+07 -4.9162e+06 4.10567e+06
+-1.32578e+07 -3.63974e+06 3.19589e+06
+-1.30151e+07 -2.50049e+06 2.33353e+06
+-1.26462e+07 -1.64213e+06 1.63714e+06
+-1.22998e+07 -1.04401e+06 1.1103e+06
+-1.20327e+07 -637853 718459
+-1.1858e+07 -361459 425535
+-1.17706e+07 -171181 204011
+-1.17597e+07 -38899.1 34900.5
+-1.18131e+07 53337.3 -94343.9
+-1.19186e+07 117218 -191663
+-1.20644e+07 160501 -261847
+-1.22391e+07 188379 -307825
+-1.24315e+07 204358 -331786
+-1.26312e+07 210862 -336022
+-1.2829e+07 209654 -323376
+-1.30169e+07 202115 -297310
+-1.3189e+07 189413 -261692
+-1.3341e+07 172594 -220450
+-1.34706e+07 152627 -177213
+-1.3577e+07 130417 -135044
+-1.36606e+07 106807 -96278.4
+-1.37229e+07 82574 -62489.6
+-1.3766e+07 58429.7 -34547.3
+-1.37924e+07 35011.7 -12733.5
+-1.38048e+07 12881.5 3114.52
+-1.38061e+07 -7479.35 13464
+-1.37988e+07 -25673.2 18965.9
+-1.37856e+07 -41389.8 20361.8
+-1.37688e+07 -54407.9 18417.7
+-1.37503e+07 -64596.7 13880.1
+-1.37321e+07 -71913.7 7448.61
+-1.37157e+07 -76400.8 -242.595
+-1.37023e+07 -78177.6 -8634.91
+-1.36929e+07 -77432.4 -17250.7
+-1.36884e+07 -74411.1 -25693.6
+-1.36892e+07 -69404.8 -33645.3
+-1.36955e+07 -62735 -40859.9
+0 -54739.3 -47158.8
+1.23703e+07 -8184.71 -52577.5
+1.23381e+07 -13169.8 -51294.5
+1.2307e+07 -18300.9 -49125.1
+1.22774e+07 -23389.2 -46104.5
+1.22497e+07 -28214.3 -42320.1
+1.2224e+07 -32529.9 -37916.9
+1.22006e+07 -36071.9 -33102.9
+1.21794e+07 -38567.2 -28153.2
+1.21603e+07 -39744.5 -23411.9
+1.21431e+07 -39346.3 -19291
+1.2127e+07 -37141.9 -16266.3
+1.21116e+07 -32941.1 -14867.2
+1.20957e+07 -26607.6 -15660.8
+1.20783e+07 -18072.7 -19226.3
+1.2058e+07 -7347.41 -26118.2
+1.20332e+07 5465.65 -36814.9
+1.20025e+07 20162.5 -51650.7
+1.19642e+07 36429.4 -70732.8
+1.19169e+07 53835.9 -93847.3
+1.18595e+07 71829.7 -120362
+1.17915e+07 89733.1 -149137
+1.1713e+07 106739 -178468
+1.16249e+07 121908 -206063
+1.15294e+07 134156 -229083
+1.14297e+07 142233 -244235
+1.13303e+07 144677 -247908
+1.12366e+07 139727 -236298
+1.1155e+07 125177 -205462
+1.10924e+07 98141.3 -151206
+1.10556e+07 54709 -68736.6
+1.1051e+07 -10546.7 47985
+1.1083e+07 -105262 207222
+1.11518e+07 -240242 420839
+1.12476e+07 -430639 706139
+1.13403e+07 -696591 1.08776e+06
+1.13615e+07 -1.06065e+06 1.59725e+06
+1.11813e+07 -1.53593e+06 2.26311e+06
+1.05995e+07 -2.09727e+06 3.07731e+06
+9.39921e+06 -2.63849e+06 3.92762e+06
+7.52105e+06 -2.9553e+06 4.52914e+06
+5.2909e+06 -2.83744e+06 4.49338e+06
+3.33691e+06 -2.29268e+06 3.70022e+06
+1.95727e+06 -1.62103e+06 2.63143e+06
+1.0978e+06 -1.05437e+06 1.70873e+06
+597915 -650985 1.0507e+06
+319666 -386982 622095
+169099 -223368 358188
+88791.5 -126017 202108
+46366.2 -69819.5 112238
+24130 -38147.9 61543.1
+12494 -20640.3 33458.7
+6402.34 -11094.9 18085.8
+3219.77 -5941.17 9736.16
+1550.47 -3180.11 5239.03
+667.039 -1707.74 2828.79
+196.653 -924.079 1537.66
+-58.1402 -508.327 849.158
+-201.707 -289.501 485.583
+-288.342 -177.502 298.702
+-349.225 -126.838 214.072
+-405.012 -117.029 198.027
+-473.707 -144.016 243.731
+-579.592 -218.838 369.839
+-762.419 -371.951 626.669
+-1094.06 -666.222 1117.58
+-1714.09 -1224.11 2044.44
+-2887.5 -2277.46 3784.37
+-5117.4 -4262.07 7040.28
+-9387.26 -7994.57 13130
+-17585 -14981 24460.7
+-33284.2 -27956.6 45367.4
+-63355.9 -51823.8 83644.6
+-120848 -95137.4 152893
+-229898 -172296 276004
+-434892 -306702 490719
+-815117 -534525 856189
+-1.50181e+06 -906870 1.45591e+06
+-2.6918e+06 -1.48634e+06 2.39102e+06
+-4.62306e+06 -2.3191e+06 3.72949e+06
+-7.38873e+06 -3.32624e+06 5.31217e+06
+-1.05582e+07 -4.14739e+06 6.5006e+06
+-1.31978e+07 -4.30759e+06 6.5448e+06
+-1.48413e+07 -3.80545e+06 5.63628e+06
+-1.55982e+07 -2.98144e+06 4.37503e+06
+-1.57972e+07 -2.15265e+06 3.18841e+06
+-1.57283e+07 -1.47208e+06 2.23379e+06
+-1.55722e+07 -965137 1.51236e+06
+-1.54209e+07 -602352 975205
+-1.53133e+07 -344919 572823
+-1.52622e+07 -161318 268105
+-1.5268e+07 -29385.8 35717.4
+-1.53258e+07 65833.4 -141053
+-1.54282e+07 134363 -272922
+-1.55663e+07 182900 -366598
+-1.573e+07 215896 -426457
+-1.59092e+07 236324 -455953
+-1.60937e+07 246249 -458653
+-1.62746e+07 247216 -438764
+-1.64442e+07 240512 -401196
+-1.65968e+07 227309 -351275
+-1.67288e+07 208735 -294309
+-1.68385e+07 185896 -235143
+-1.69259e+07 159873 -177825
+-1.69922e+07 131714 -125420
+-1.70397e+07 102416 -79976.2
+-1.70714e+07 72910.9 -42606.4
+-1.70903e+07 44050.7 -13643.9
+-1.70996e+07 16598 7169.84
+-1.71023e+07 -8786.82 20499.6
+-1.71011e+07 -31553.9 27257.5
+-1.70984e+07 -51271 28478.4
+-1.70963e+07 -67628 25230.5
+-1.70964e+07 -80437.1 18554.7
+-1.70998e+07 -89630.6 9424.23
+-1.71075e+07 -95254 -1280.81
+-1.71201e+07 -97455.9 -12789.8
+-1.71378e+07 -96475.3 -24449.5
+-1.71607e+07 -92625.8 -35724.8
+-1.71885e+07 -86278.8 -46194
+-1.7221e+07 -77844.5 -55540.8
+0 -67753.7 -63545.6
+1.40179e+07 -6637.16 -61851.2
+1.39753e+07 -10804.3 -60368.6
+1.39318e+07 -15095.4 -57832.7
+1.38879e+07 -19351.8 -54284.5
+1.38442e+07 -23388.3 -49826.7
+1.38011e+07 -26998.9 -44630.7
+1.37591e+07 -29962.7 -38942.8
+1.37188e+07 -32051.7 -33088.8
+1.36804e+07 -33040.7 -27476.8
+1.36443e+07 -32717.2 -22595.4
+1.36106e+07 -30892.4 -19008.7
+1.35792e+07 -27413.6 -17344.3
+1.355e+07 -22175 -18274.5
+1.35223e+07 -15129.5 -22486.7
+1.34955e+07 -6298.38 -30640.2
+1.34687e+07 4219.34 -43306.8
+1.34406e+07 16240 -60892
+1.34101e+07 29490.1 -83539.5
+1.33757e+07 43602.3 -111021
+1.33364e+07 58114.5 -142624
+1.32912e+07 72469.7 -177047
+1.32398e+07 86017.4 -212325
+1.31823e+07 98014.6 -245802
+1.31201e+07 107624 -274164
+1.3055e+07 113902 -293535
+1.29901e+07 115775 -299620
+1.29292e+07 111978 -287841
+1.28766e+07 100954 -253392
+1.28367e+07 80690.5 -191113
+1.28134e+07 48477.9 -95102.1
+1.2809e+07 589.879 42022.5
+1.2823e+07 -68117.6 230253
+1.28487e+07 -164668 483842
+1.28679e+07 -298349 823586
+1.28402e+07 -480413 1.27933e+06
+1.26875e+07 -721326 1.8899e+06
+1.22776e+07 -1.02211e+06 2.69163e+06
+1.1427e+07 -1.35679e+06 3.67807e+06
+9.96442e+06 -1.65174e+06 4.71695e+06
+7.89196e+06 -1.78862e+06 5.46417e+06
+5.56056e+06 -1.67036e+06 5.444e+06
+3.54832e+06 -1.33302e+06 4.50194e+06
+2.11748e+06 -942366 3.21729e+06
+1.21027e+06 -616987 2.10112e+06
+671455 -384532 1.29989e+06
+365030 -230926 774285
+195830 -134568 448349
+104040 -76525.6 254301
+54860.8 -42670 141893
+28768.4 -23433.2 78136.9
+14984.1 -12728.2 42642.9
+7714.05 -6862.22 23130.7
+3888.18 -3683.81 12492.1
+1869.8 -1975.77 6741.59
+797.377 -1062.64 3649.96
+223.507 -575.883 1989.21
+-88.7413 -317.233 1101.23
+-265.122 -180.874 631.263
+-372.044 -111.055 389.281
+-447.476 -79.4664 279.502
+-516.614 -73.3635 258.62
+-601.744 -90.2595 317.865
+-732.419 -136.983 481.16
+-957.017 -232.493 813.088
+-1363.21 -415.89 1446.25
+-2118.8 -762.949 2638.6
+-3541.33 -1417.18 4870.24
+-6233 -2647.84 9033.19
+-11355.4 -4956.59 16792
+-21117.2 -9265.19 31170.8
+-39669.7 -17239.8 57587.9
+-74860.3 -31836.1 105721
+-141307 -58154.1 192325
+-265559 -104668 345362
+-495149 -184891 610513
+-912432 -319295 1.05864e+06
+-1.65017e+06 -536530 1.78866e+06
+-2.90272e+06 -871771 2.91926e+06
+-4.90147e+06 -1.35218e+06 4.52868e+06
+-7.74615e+06 -1.94051e+06 6.42263e+06
+-1.10594e+07 -2.45047e+06 7.83052e+06
+-1.39793e+07 -2.6178e+06 7.85124e+06
+-1.59977e+07 -2.39259e+06 6.72911e+06
+-1.7133e+07 -1.93724e+06 5.19634e+06
+-1.76511e+07 -1.43918e+06 3.76709e+06
+-1.7823e+07 -1.00684e+06 2.6251e+06
+-1.7836e+07 -671250 1.76639e+06
+-1.77964e+07 -423412 1.12905e+06
+-1.77573e+07 -243241 652491
+-1.77419e+07 -112215 292137
+-1.77586e+07 -16378.2 17921.9
+-1.78083e+07 54096.3 -189889
+-1.78876e+07 105929 -344003
+-1.79907e+07 143604 -452494
+-1.81103e+07 170043 -520757
+-1.82383e+07 187148 -553122
+-1.83668e+07 196209 -554017
+-1.84885e+07 198202 -528557
+-1.85978e+07 193975 -482602
+-1.86909e+07 184348 -422437
+-1.8766e+07 170154 -354273
+-1.88231e+07 152248 -283749
+-1.88637e+07 131499 -215562
+-1.88904e+07 108768 -153262
+-1.89065e+07 84894.2 -99215.4
+-1.89157e+07 60672.8 -54707.9
+-1.89213e+07 36843.2 -20121.1
+-1.89267e+07 14072.3 4848.68
+-1.89346e+07 -7057.55 20978.3
+-1.89471e+07 -26058.7 29334.2
+-1.89659e+07 -42545.9 31129.1
+-1.89918e+07 -56240.8 27618.2
+-1.90255e+07 -66973 20028.5
+-1.90668e+07 -74676.8 9510.9
+-1.91154e+07 -79385.8 -2890.64
+-1.91704e+07 -81223 -16259.6
+-1.9231e+07 -80389.2 -29817.3
+-1.92959e+07 -77149.3 -42924.8
+-1.93639e+07 -71817.1 -55078.3
+-1.94337e+07 -64739.2 -65900.1
+0 -56279.5 -75128.3
+1.48575e+07 -2552.01 -67522.1
+1.48069e+07 -4173.06 -65900.1
+1.47536e+07 -5842.58 -63128
+1.46982e+07 -7498.64 -59253.2
+1.46413e+07 -9069.18 -54390.3
+1.45835e+07 -10473.9 -48729.3
+1.45258e+07 -11626.8 -42541.5
+1.4469e+07 -12439.5 -36184.7
+1.44139e+07 -12824.6 -30105.7
+1.43613e+07 -12699.9 -24838.3
+1.4312e+07 -11993 -20997.1
+1.42666e+07 -10645.6 -19265
+1.42255e+07 -8618.29 -20372
+1.41889e+07 -5894.69 -25064
+1.41567e+07 -2485.53 -34056
+1.41285e+07 1568.21 -47968.6
+1.41035e+07 6192.64 -67244.5
+1.40807e+07 11279.3 -92045.4
+1.40591e+07 16684.1 -122136
+1.40373e+07 22227.7 -156760
+1.40142e+07 27695.5 -194533
+1.3989e+07 32839.9 -233356
+1.39611e+07 37380.4 -270386
+1.39308e+07 41004.7 -302062
+1.38991e+07 43365.5 -324206
+1.38676e+07 44071.5 -332168
+1.38386e+07 42666.8 -320959
+1.38147e+07 38594 -285314
+1.37982e+07 31133.3 -219551
+1.37906e+07 19316.7 -117156
+1.37914e+07 1816.66 29998.3
+1.37965e+07 -23181.6 232878
+1.37948e+07 -58106.5 507098
+1.37632e+07 -106063 875491
+1.36568e+07 -170608 1.37105e+06
+1.33955e+07 -254640 2.03723e+06
+1.2851e+07 -357305 2.91572e+06
+1.18538e+07 -468195 4.00224e+06
+1.02574e+07 -561375 5.15391e+06
+8.08871e+06 -598426 5.9917e+06
+5.70316e+06 -551665 5.98659e+06
+3.65826e+06 -437573 4.96194e+06
+2.20105e+06 -309192 3.55544e+06
+1.2703e+06 -202997 2.33007e+06
+711883 -127068 1.44745e+06
+390707 -76687.4 865872
+211370 -44901.2 503487
+113096 -25638.2 286706
+59988 -14342.9 160556
+31605.8 -7897.54 88705
+16523 -4298.39 48554.3
+8529.42 -2321 26408.9
+4304.81 -1247.54 14298.1
+2068.16 -669.787 7733.68
+876.301 -360.531 4195.77
+236.673 -195.535 2291.19
+-112.307 -107.79 1270.82
+-309.909 -61.4976 729.84
+-430.03 -37.7876 450.894
+-514.98 -27.0596 324.188
+-592.905 -24.9907 300.042
+-688.781 -30.7408 368.389
+-835.587 -46.623 556.644
+-1087.17 -79.0689 938.779
+-1540.96 -141.337 1666.48
+-2382.52 -259.073 3034.2
+-3961.98 -480.83 5588.46
+-6941.33 -897.611 10341.8
+-12590.1 -1678.54 19176.9
+-23307.7 -3133.74 35500.6
+-43575.7 -5822.14 65391.6
+-81788.8 -10730.4 119656
+-153411 -19550.8 216894
+-286173 -35075.9 387946
+-529005 -61717.7 682874
+-965417 -106100 1.17888e+06
+-1.72839e+06 -177461 1.98311e+06
+-3.01112e+06 -287199 3.2238e+06
+-5.04404e+06 -444380 4.98588e+06
+-7.93319e+06 -638157 7.05672e+06
+-1.1325e+07 -810927 8.58836e+06
+-1.43879e+07 -877841 8.58781e+06
+-1.6604e+07 -815166 7.33312e+06
+-1.79526e+07 -670211 5.63785e+06
+-1.86644e+07 -504514 4.06771e+06
+-1.8993e+07 -356679 2.82028e+06
+-1.91225e+07 -239618 1.88664e+06
+-1.91634e+07 -151867 1.196e+06
+-1.91746e+07 -87352.2 680764
+-1.91855e+07 -40022.7 291833
+-1.9209e+07 -5135.06 -3605.77
+-1.92495e+07 20732.6 -226996
+-1.93065e+07 39946.9 -392143
+-1.93764e+07 54084.4 -507859
+-1.94538e+07 64158.4 -580066
+-1.95325e+07 70813.3 -613534
+-1.96066e+07 74477.5 -613116
+-1.96708e+07 75474.4 -584377
+-1.97215e+07 74091.4 -533654
+-1.97567e+07 70616.2 -467719
+-1.97767e+07 65351.9 -393244
+-1.9783e+07 58617.1 -316282
+-1.97787e+07 50741.4 -241869
+-1.97676e+07 42057 -173813
+-1.97541e+07 32890.2 -114659
+-1.97422e+07 23554.3 -65791.9
+-1.97358e+07 14341.5 -27633.2
+-1.9738e+07 5517.13 129.838
+-1.97512e+07 -2686.41 18317.6
+-1.97769e+07 -10073.8 28062.8
+-1.98158e+07 -16490.4 30658.1
+-1.9868e+07 -21824.2 27446.5
+-1.99327e+07 -26005.8 19745
+-2.00087e+07 -29008.1 8794.22
+-2.00943e+07 -30843.2 -4276.15
+-2.01875e+07 -31558.5 -18469.9
+-2.02862e+07 -31232.5 -32936.7
+-2.03881e+07 -29968.7 -46975.1
+-2.04911e+07 -27889.8 -60028.5
+-2.05931e+07 -25131.6 -71676.3
+0 -21836.2 -81623.9
+1.51075e+07 2552.01 -69417.6
+1.5054e+07 4173.06 -67744.8
+1.4997e+07 5842.58 -64890.8
+1.49372e+07 7498.64 -60905.5
+1.48752e+07 9069.18 -55908.3
+1.48118e+07 10473.9 -50095.6
+1.4748e+07 11626.8 -43747.7
+1.46847e+07 12439.5 -37233.3
+1.4623e+07 12824.6 -31012
+1.45639e+07 12699.9 -25632.3
+1.45085e+07 11993 -21725.2
+1.44576e+07 10645.6 -19990.7
+1.44118e+07 8618.29 -21177.2
+1.43717e+07 5894.69 -26048.1
+1.43374e+07 2485.53 -35335.4
+1.43086e+07 -1568.21 -49674.2
+1.42849e+07 -6192.64 -69518.1
+1.42653e+07 -11279.3 -95033.8
+1.42488e+07 -16684.1 -125983
+1.4234e+07 -22227.7 -161598
+1.42197e+07 -27695.5 -200467
+1.42049e+07 -32839.9 -240453
+1.41888e+07 -37380.4 -278656
+1.41713e+07 -41004.7 -311443
+1.41528e+07 -43365.5 -334547
+1.41346e+07 -44071.5 -343211
+1.41184e+07 -42666.8 -332327
+1.4106e+07 -38594 -296492
+1.4099e+07 -31133.3 -229868
+1.40981e+07 -19316.7 -125755
+1.41016e+07 -1816.66 24203.4
+1.4104e+07 23181.6 231273
+1.40928e+07 58106.5 511494
+1.40433e+07 106063 888347
+1.39094e+07 170608 1.39585e+06
+1.36111e+07 254640 2.07901e+06
+1.30221e+07 357305 2.98141e+06
+1.19785e+07 468195 4.09975e+06
+1.03417e+07 561375 5.28802e+06
+8.14519e+06 598426 6.15592e+06
+5.74416e+06 551665 6.15688e+06
+3.69019e+06 437573 5.10675e+06
+2.22582e+06 309192 3.66229e+06
+1.28855e+06 202997 2.40296e+06
+724477 127068 1.49492e+06
+398880 76687.4 895679
+216404 44901.2 521637
+116071 25638.2 297486
+61689.1 14342.9 166822
+32554.5 7897.54 92281.8
+17040.5 4298.39 50569.3
+8804.56 2321 27533.3
+4445.56 1247.54 14921
+2134.99 669.787 8077.53
+902.489 360.531 4385.73
+240.412 195.535 2396.69
+-121.153 107.79 1330.29
+-326.064 61.4976 764.534
+-450.747 37.7876 472.645
+-538.996 27.0596 339.999
+-619.975 24.9907 314.707
+-719.576 30.7408 386.245
+-871.957 46.623 583.244
+-1132.84 79.0689 982.924
+-1602.91 141.337 1743.55
+-2473.79 259.073 3172.07
+-4106.58 480.83 5837.72
+-7183.18 897.611 10793.9
+-13009 1678.54 19996.5
+-24046.1 3133.74 36979.7
+-44882.5 5822.14 68039.5
+-84086 10730.4 124348
+-157380 19550.8 225095
+-292836 35075.9 402020
+-539743 61717.7 706524
+-981846 106100 1.21771e+06
+-1.75201e+06 177461 2.04521e+06
+-3.043e+06 287199 3.32017e+06
+-5.08518e+06 444380 5.12987e+06
+-7.98698e+06 638157 7.25638e+06
+-1.14021e+07 810927 8.82691e+06
+-1.45078e+07 877841 8.81803e+06
+-1.67852e+07 815166 7.51923e+06
+-1.82029e+07 670211 5.77107e+06
+-1.89802e+07 504514 4.15598e+06
+-1.93637e+07 356679 2.87565e+06
+-1.95352e+07 239618 1.91913e+06
+-1.96058e+07 151867 1.21254e+06
+-1.9636e+07 87352.2 685893
+-1.96569e+07 40022.7 288628
+-1.96831e+07 5135.07 -12949.5
+-1.97202e+07 -20732.6 -240814
+-1.97686e+07 -39946.9 -409110
+-1.98256e+07 -54084.4 -526866
+-1.98865e+07 -64158.4 -600158
+-1.99459e+07 -70813.3 -633878
+-1.99984e+07 -74477.5 -632996
+-2.00397e+07 -75474.4 -603204
+-2.00669e+07 -74091.4 -550975
+-2.00789e+07 -70616.2 -483223
+-2.00767e+07 -65351.9 -406756
+-2.00626e+07 -58617.1 -327749
+-2.00402e+07 -50741.4 -251342
+-2.0014e+07 -42057 -181424
+-1.99885e+07 -32890.2 -120592
+-1.99682e+07 -23554.3 -70266.2
+-1.9957e+07 -14341.5 -30883.4
+-1.99579e+07 -5517.12 -2131.79
+-1.99733e+07 2686.41 16818.2
+-2.00043e+07 10073.8 27115.3
+-2.00514e+07 16490.4 30073.3
+-2.01141e+07 21824.2 27058.5
+-2.01912e+07 26005.8 19413.4
+-2.0281e+07 29008.1 8404.63
+-2.03813e+07 30843.2 -4812.6
+-2.04896e+07 31558.5 -19217.4
+-2.06034e+07 31232.5 -33936.3
+-2.07199e+07 29968.7 -48247.3
+-2.08366e+07 27889.8 -61575.5
+-2.09512e+07 25131.6 -73485.1
+0 21836.2 -83668.7
+1.48575e+07 6637.15 -67522.1
+1.48069e+07 10804.3 -65900.1
+1.47536e+07 15095.4 -63128
+1.46982e+07 19351.8 -59253.2
+1.46413e+07 23388.3 -54390.3
+1.45835e+07 26999 -48729.3
+1.45258e+07 29962.7 -42541.5
+1.4469e+07 32051.7 -36184.7
+1.44139e+07 33040.8 -30105.7
+1.43613e+07 32717.2 -24838.3
+1.4312e+07 30892.4 -20997.1
+1.42666e+07 27413.6 -19265
+1.42255e+07 22175 -20372
+1.41889e+07 15129.5 -25064
+1.41567e+07 6298.37 -34056
+1.41285e+07 -4219.33 -47968.6
+1.41035e+07 -16240 -67244.5
+1.40807e+07 -29490.1 -92045.4
+1.40591e+07 -43602.3 -122136
+1.40373e+07 -58114.5 -156760
+1.40142e+07 -72469.7 -194533
+1.3989e+07 -86017.4 -233356
+1.39611e+07 -98014.6 -270386
+1.39308e+07 -107624 -302062
+1.38991e+07 -113902 -324206
+1.38676e+07 -115775 -332168
+1.38386e+07 -111978 -320959
+1.38147e+07 -100954 -285314
+1.37982e+07 -80690.5 -219551
+1.37906e+07 -48477.9 -117156
+1.37914e+07 -589.874 29998.3
+1.37965e+07 68117.6 232878
+1.37948e+07 164668 507098
+1.37632e+07 298349 875491
+1.36568e+07 480413 1.37105e+06
+1.33955e+07 721326 2.03723e+06
+1.2851e+07 1.02211e+06 2.91572e+06
+1.18538e+07 1.35679e+06 4.00224e+06
+1.02574e+07 1.65174e+06 5.15391e+06
+8.08871e+06 1.78862e+06 5.9917e+06
+5.70316e+06 1.67036e+06 5.98659e+06
+3.65826e+06 1.33302e+06 4.96194e+06
+2.20105e+06 942366 3.55544e+06
+1.2703e+06 616987 2.33007e+06
+711883 384532 1.44745e+06
+390707 230926 865872
+211370 134568 503487
+113096 76525.6 286706
+59988 42670 160556
+31605.8 23433.2 88705
+16523 12728.2 48554.3
+8529.42 6862.22 26408.9
+4304.81 3683.81 14298.1
+2068.16 1975.77 7733.68
+876.301 1062.64 4195.77
+236.673 575.883 2291.19
+-112.307 317.233 1270.82
+-309.909 180.874 729.84
+-430.03 111.055 450.894
+-514.98 79.4664 324.188
+-592.905 73.3635 300.042
+-688.781 90.2595 368.389
+-835.587 136.983 556.644
+-1087.17 232.493 938.779
+-1540.96 415.89 1666.48
+-2382.52 762.949 3034.2
+-3961.98 1417.18 5588.46
+-6941.33 2647.84 10341.8
+-12590.1 4956.59 19176.9
+-23307.7 9265.19 35500.6
+-43575.7 17239.8 65391.6
+-81788.8 31836.1 119656
+-153411 58154.1 216894
+-286173 104668 387946
+-529005 184891 682874
+-965417 319295 1.17888e+06
+-1.72839e+06 536530 1.98311e+06
+-3.01112e+06 871771 3.2238e+06
+-5.04404e+06 1.35218e+06 4.98588e+06
+-7.93319e+06 1.94051e+06 7.05672e+06
+-1.1325e+07 2.45047e+06 8.58836e+06
+-1.43879e+07 2.6178e+06 8.58781e+06
+-1.6604e+07 2.39259e+06 7.33312e+06
+-1.79526e+07 1.93724e+06 5.63785e+06
+-1.86644e+07 1.43918e+06 4.06771e+06
+-1.8993e+07 1.00684e+06 2.82028e+06
+-1.91225e+07 671250 1.88664e+06
+-1.91634e+07 423412 1.196e+06
+-1.91746e+07 243241 680764
+-1.91855e+07 112215 291833
+-1.9209e+07 16378.2 -3605.76
+-1.92495e+07 -54096.3 -226996
+-1.93065e+07 -105929 -392143
+-1.93764e+07 -143604 -507859
+-1.94538e+07 -170043 -580066
+-1.95325e+07 -187148 -613534
+-1.96066e+07 -196209 -613116
+-1.96708e+07 -198202 -584377
+-1.97215e+07 -193975 -533654
+-1.97567e+07 -184348 -467719
+-1.97767e+07 -170154 -393244
+-1.9783e+07 -152248 -316282
+-1.97787e+07 -131499 -241869
+-1.97676e+07 -108768 -173813
+-1.97541e+07 -84894.2 -114659
+-1.97422e+07 -60672.8 -65791.9
+-1.97358e+07 -36843.2 -27633.2
+-1.9738e+07 -14072.3 129.838
+-1.97512e+07 7057.55 18317.6
+-1.97769e+07 26058.7 28062.8
+-1.98158e+07 42545.9 30658.1
+-1.9868e+07 56240.8 27446.5
+-1.99327e+07 66973 19745
+-2.00087e+07 74676.8 8794.22
+-2.00943e+07 79385.8 -4276.15
+-2.01875e+07 81223 -18469.9
+-2.02862e+07 80389.2 -32936.7
+-2.03881e+07 77149.3 -46975.1
+-2.04911e+07 71817.1 -60028.5
+-2.05931e+07 64739.2 -71676.3
+0 56279.5 -81623.9
+1.40179e+07 8184.71 -61851.2
+1.39753e+07 13169.8 -60368.6
+1.39318e+07 18300.9 -57832.7
+1.38879e+07 23389.2 -54284.5
+1.38442e+07 28214.3 -49826.7
+1.38011e+07 32529.9 -44630.7
+1.37591e+07 36071.9 -38942.8
+1.37188e+07 38567.2 -33088.8
+1.36804e+07 39744.5 -27476.8
+1.36443e+07 39346.2 -22595.4
+1.36106e+07 37141.9 -19008.7
+1.35792e+07 32941.1 -17344.3
+1.355e+07 26607.6 -18274.5
+1.35223e+07 18072.7 -22486.7
+1.34955e+07 7347.41 -30640.2
+1.34687e+07 -5465.65 -43306.8
+1.34406e+07 -20162.5 -60892
+1.34101e+07 -36429.4 -83539.5
+1.33757e+07 -53835.9 -111021
+1.33364e+07 -71829.7 -142624
+1.32912e+07 -89733.1 -177047
+1.32398e+07 -106739 -212325
+1.31823e+07 -121908 -245802
+1.31201e+07 -134156 -274164
+1.3055e+07 -142233 -293535
+1.29901e+07 -144677 -299620
+1.29292e+07 -139727 -287841
+1.28766e+07 -125177 -253392
+1.28367e+07 -98141.3 -191113
+1.28134e+07 -54709 -95102.1
+1.2809e+07 10546.7 42022.5
+1.2823e+07 105262 230253
+1.28487e+07 240242 483842
+1.28679e+07 430639 823586
+1.28402e+07 696591 1.27933e+06
+1.26875e+07 1.06065e+06 1.8899e+06
+1.22776e+07 1.53593e+06 2.69163e+06
+1.1427e+07 2.09727e+06 3.67807e+06
+9.96442e+06 2.63849e+06 4.71695e+06
+7.89196e+06 2.9553e+06 5.46417e+06
+5.56056e+06 2.83744e+06 5.444e+06
+3.54832e+06 2.29268e+06 4.50194e+06
+2.11748e+06 1.62103e+06 3.21729e+06
+1.21027e+06 1.05437e+06 2.10112e+06
+671455 650985 1.29989e+06
+365030 386982 774285
+195830 223368 448349
+104040 126017 254301
+54860.8 69819.5 141893
+28768.4 38147.9 78136.9
+14984.1 20640.3 42642.9
+7714.05 11094.9 23130.7
+3888.18 5941.17 12492.1
+1869.8 3180.11 6741.59
+797.377 1707.74 3649.96
+223.507 924.079 1989.21
+-88.7413 508.327 1101.23
+-265.122 289.501 631.263
+-372.044 177.502 389.281
+-447.476 126.838 279.502
+-516.614 117.029 258.62
+-601.744 144.016 317.865
+-732.419 218.838 481.16
+-957.017 371.951 813.088
+-1363.21 666.222 1446.25
+-2118.8 1224.11 2638.6
+-3541.33 2277.46 4870.24
+-6233 4262.07 9033.19
+-11355.4 7994.57 16792
+-21117.2 14981 31170.8
+-39669.7 27956.6 57587.9
+-74860.3 51823.8 105721
+-141307 95137.4 192325
+-265559 172296 345362
+-495149 306702 610513
+-912432 534525 1.05864e+06
+-1.65017e+06 906870 1.78866e+06
+-2.90272e+06 1.48634e+06 2.91926e+06
+-4.90147e+06 2.3191e+06 4.52868e+06
+-7.74615e+06 3.32624e+06 6.42263e+06
+-1.10594e+07 4.14739e+06 7.83052e+06
+-1.39793e+07 4.30759e+06 7.85124e+06
+-1.59977e+07 3.80545e+06 6.72911e+06
+-1.7133e+07 2.98144e+06 5.19634e+06
+-1.76511e+07 2.15265e+06 3.76709e+06
+-1.7823e+07 1.47208e+06 2.6251e+06
+-1.7836e+07 965137 1.76639e+06
+-1.77964e+07 602352 1.12905e+06
+-1.77573e+07 344919 652491
+-1.77419e+07 161318 292137
+-1.77586e+07 29385.8 17921.9
+-1.78083e+07 -65833.4 -189889
+-1.78876e+07 -134363 -344003
+-1.79907e+07 -182900 -452494
+-1.81103e+07 -215896 -520757
+-1.82383e+07 -236324 -553122
+-1.83668e+07 -246249 -554017
+-1.84885e+07 -247216 -528557
+-1.85978e+07 -240512 -482602
+-1.86909e+07 -227309 -422437
+-1.8766e+07 -208735 -354273
+-1.88231e+07 -185896 -283749
+-1.88637e+07 -159873 -215562
+-1.88904e+07 -131714 -153262
+-1.89065e+07 -102416 -99215.4
+-1.89157e+07 -72910.9 -54707.9
+-1.89213e+07 -44050.7 -20121.1
+-1.89267e+07 -16598 4848.68
+-1.89346e+07 8786.82 20978.3
+-1.89471e+07 31553.9 29334.2
+-1.89659e+07 51271 31129.1
+-1.89918e+07 67628 27618.2
+-1.90255e+07 80437.1 20028.5
+-1.90668e+07 89630.6 9510.9
+-1.91154e+07 95254 -2890.64
+-1.91704e+07 97455.9 -16259.6
+-1.9231e+07 96475.3 -29817.3
+-1.92959e+07 92625.8 -42924.8
+-1.93639e+07 86278.8 -55078.3
+-1.94337e+07 77844.5 -65900.1
+0 67753.7 -75128.3
+1.23703e+07 7012.98 -52577.5
+1.23381e+07 10984.2 -51294.5
+1.2307e+07 15067.3 -49125.1
+1.22774e+07 19113 -46104.5
+1.22497e+07 22947 -42320.1
+1.2224e+07 26374 -37916.9
+1.22006e+07 29184 -33102.9
+1.21794e+07 31158.9 -28153.2
+1.21603e+07 32081.2 -23411.9
+1.21431e+07 31742.6 -19291
+1.2127e+07 29953.7 -16266.3
+1.21116e+07 26554.7 -14867.2
+1.20957e+07 21425.5 -15660.8
+1.20783e+07 14496.3 -19226.3
+1.2058e+07 5757.97 -26118.2
+1.20332e+07 -4728.24 -36814.9
+1.20025e+07 -16821.2 -51650.7
+1.19642e+07 -30290.9 -70732.8
+1.19169e+07 -44810.2 -93847.3
+1.18595e+07 -59946.5 -120362
+1.17915e+07 -75153.7 -149137
+1.1713e+07 -89763.2 -178468
+1.16249e+07 -102971 -206063
+1.15294e+07 -113819 -229083
+1.14297e+07 -121158 -244235
+1.13303e+07 -123585 -247908
+1.12366e+07 -119340 -236298
+1.1155e+07 -106131 -205462
+1.10924e+07 -80871.6 -151206
+1.10556e+07 -39277.3 -68736.6
+1.1051e+07 24731.1 47985
+1.1083e+07 119975 207222
+1.11518e+07 259555 420839
+1.12476e+07 463227 706139
+1.13403e+07 760286 1.08776e+06
+1.13615e+07 1.19022e+06 1.59725e+06
+1.11813e+07 1.79292e+06 2.26311e+06
+1.05995e+07 2.5729e+06 3.07731e+06
+9.39921e+06 3.42622e+06 3.92762e+06
+7.52105e+06 4.06616e+06 4.52914e+06
+5.2909e+06 4.09207e+06 4.49338e+06
+3.33691e+06 3.37047e+06 3.70022e+06
+1.95727e+06 2.37808e+06 2.63143e+06
+1.0978e+06 1.52731e+06 1.70873e+06
+597915 928198 1.0507e+06
+319666 543047 622095
+169099 308982 358188
+88791.5 172337 202108
+46366.2 94634.8 112238
+24130 51331.7 61543.1
+12494 27623.8 33458.7
+6402.34 14789.7 18085.8
+3219.77 7890.8 9736.16
+1550.47 4211.72 5239.03
+667.039 2257.53 2828.79
+196.653 1218.88 1537.66
+-58.1402 669.141 849.158
+-201.707 380.677 485.583
+-288.342 232.967 298.702
+-349.225 166.175 214.072
+-405.012 153.263 198.027
+-473.707 188.596 243.731
+-579.592 287.066 369.839
+-762.419 488.825 626.669
+-1094.06 876.709 1117.58
+-1714.09 1614.47 2044.44
+-2887.5 3010.66 3784.37
+-5117.4 5645.28 7040.28
+-9387.26 10620 13130
+-17585 19973 24460.7
+-33284.2 37419.5 45367.4
+-63355.9 69737.8 83644.6
+-120848 128942 152893
+-229898 235560 276004
+-434892 424015 490719
+-815117 749315 856189
+-1.50181e+06 1.29074e+06 1.45591e+06
+-2.6918e+06 2.14703e+06 2.39102e+06
+-4.62306e+06 3.38924e+06 3.72949e+06
+-7.38873e+06 4.86804e+06 5.31217e+06
+-1.05582e+07 5.95257e+06 6.5006e+06
+-1.31978e+07 5.89604e+06 6.5448e+06
+-1.48413e+07 4.9162e+06 5.63628e+06
+-1.55982e+07 3.63974e+06 4.37503e+06
+-1.57972e+07 2.50049e+06 3.18841e+06
+-1.57283e+07 1.64213e+06 2.23379e+06
+-1.55722e+07 1.04401e+06 1.51236e+06
+-1.54209e+07 637853 975205
+-1.53133e+07 361459 572823
+-1.52622e+07 171181 268105
+-1.5268e+07 38899.1 35717.4
+-1.53258e+07 -53337.3 -141053
+-1.54282e+07 -117218 -272922
+-1.55663e+07 -160501 -366598
+-1.573e+07 -188379 -426457
+-1.59092e+07 -204358 -455953
+-1.60937e+07 -210862 -458653
+-1.62746e+07 -209654 -438764
+-1.64442e+07 -202115 -401196
+-1.65968e+07 -189413 -351275
+-1.67288e+07 -172594 -294309
+-1.68385e+07 -152627 -235143
+-1.69259e+07 -130417 -177825
+-1.69922e+07 -106807 -125420
+-1.70397e+07 -82574 -79976.1
+-1.70714e+07 -58429.7 -42606.4
+-1.70903e+07 -35011.7 -13643.9
+-1.70996e+07 -12881.5 7169.85
+-1.71023e+07 7479.35 20499.6
+-1.71011e+07 25673.2 27257.5
+-1.70984e+07 41389.8 28478.4
+-1.70963e+07 54407.9 25230.5
+-1.70964e+07 64596.7 18554.7
+-1.70998e+07 71913.7 9424.23
+-1.71075e+07 76400.8 -1280.8
+-1.71201e+07 78177.6 -12789.8
+-1.71378e+07 77432.4 -24449.5
+-1.71607e+07 74411.1 -35724.8
+-1.71885e+07 69404.8 -46194
+-1.7221e+07 62735 -55540.8
+0 54739.3 -63545.6
+9.75592e+06 4404.87 -40369.1
+9.73386e+06 6445.14 -39322.9
+9.71388e+06 8535.77 -37620.1
+9.69625e+06 10601.8 -35294.2
+9.68116e+06 12554.9 -32417.4
+9.66867e+06 14296.1 -29104.4
+9.65869e+06 15718.6 -25516
+9.65098e+06 16711.1 -21861.7
+9.6451e+06 17161.6 -18400.5
+9.64042e+06 16961.8 -15439.9
+9.63611e+06 16011.3 -13332.4
+9.63113e+06 14222.6 -12467.9
+9.62423e+06 11525.4 -13261.6
+9.614e+06 7872.15 -16135.3
+9.59887e+06 3242.94 -21489.3
+9.57721e+06 -2349.19 -29663.7
+9.54735e+06 -8852.54 -40887.9
+9.50775e+06 -16170.8 -55217.5
+9.45705e+06 -24156.5 -72463.5
+9.39433e+06 -32603.9 -92120.6
+9.31918e+06 -41240.9 -113303
+9.23201e+06 -49718.1 -134705
+9.13413e+06 -57594.9 -154593
+9.02798e+06 -64316.1 -170847
+8.91723e+06 -69175 -181048
+8.8068e+06 -71250.7 -182591
+8.70289e+06 -69306.2 -172791
+8.61284e+06 -61627.2 -148930
+8.54505e+06 -45772.4 -108156
+8.50886e+06 -18190.2 -47196.6
+8.51429e+06 26396.7 38161.6
+8.57152e+06 96050.7 153833
+8.68939e+06 203568 308464
+8.87154e+06 370067 514750
+9.10729e+06 630995 790702
+9.35281e+06 1.04359e+06 1.15911e+06
+9.49919e+06 1.68812e+06 1.63998e+06
+9.33881e+06 2.63929e+06 2.22595e+06
+8.58257e+06 3.86597e+06 2.83364e+06
+7.03209e+06 5.04676e+06 3.25581e+06
+4.92654e+06 5.48433e+06 3.2141e+06
+3.02428e+06 4.63897e+06 2.62873e+06
+1.71042e+06 3.24574e+06 1.85412e+06
+925728 2.03718e+06 1.19372e+06
+488151 1.20853e+06 728104
+253889 691541 427969
+131507 385996 244868
+67893 212311 137420
+34944.2 115384 75948.8
+18005.3 62023.6 41468.2
+9253.93 33174.9 22461.5
+4707.87 17692.3 12100.7
+2361.39 9394.63 6494.08
+1140.32 4998.16 3484.91
+494.513 2676.61 1876.76
+153.706 1440.79 1017.49
+-29.5181 788.898 560.606
+-133.158 449.032 319.858
+-195.207 274.128 196.262
+-238.54 195.117 140.417
+-278.468 180.13 129.89
+-327.309 221.317 160.064
+-403.17 337.653 243.462
+-535.077 576.232 413.68
+-773.646 1033.28 739.552
+-1223.49 1908.4 1356.38
+-2082.17 3569.27 2518
+-3715.85 6699.84 4698.14
+-6871.44 12647.1 8789.55
+-13003.4 23896.6 16432.5
+-24840.4 44944.4 30594.9
+-47820.2 84278 56649.4
+-92621.3 157224 104056
+-179309 290163 188881
+-346575 529525 337911
+-667948 953482 593800
+-1.27112e+06 1.6779e+06 1.01793e+06
+-2.36036e+06 2.85584e+06 1.68642e+06
+-4.20202e+06 4.60683e+06 2.65389e+06
+-6.89458e+06 6.66546e+06 3.81088e+06
+-9.88495e+06 7.93415e+06 4.69411e+06
+-1.20582e+07 7.27864e+06 4.7494e+06
+-1.30803e+07 5.52153e+06 4.10567e+06
+-1.32578e+07 3.71927e+06 3.19589e+06
+-1.30151e+07 2.34559e+06 2.33353e+06
+-1.26462e+07 1.43288e+06 1.63714e+06
+-1.22998e+07 859532 1.1103e+06
+-1.20327e+07 502060 718459
+-1.1858e+07 275479 425535
+-1.17706e+07 128858 204011
+-1.17597e+07 32726.6 34900.5
+-1.18131e+07 -30375.5 -94343.9
+-1.19186e+07 -71270.1 -191663
+-1.20644e+07 -96916.8 -261847
+-1.22391e+07 -111875 -307825
+-1.24315e+07 -119153 -331786
+-1.26312e+07 -120759 -336022
+-1.2829e+07 -118075 -323376
+-1.30169e+07 -112099 -297310
+-1.3189e+07 -103601 -261692
+-1.3341e+07 -93214.7 -220450
+-1.34706e+07 -81483.4 -177213
+-1.3577e+07 -68883.7 -135044
+-1.36606e+07 -55837.2 -96278.4
+-1.37229e+07 -42716.9 -62489.6
+-1.3766e+07 -29850.8 -34547.3
+-1.37924e+07 -17525 -12733.5
+-1.38048e+07 -5986.48 3114.52
+-1.38061e+07 4556.05 13464
+-1.37988e+07 13931.5 18965.9
+-1.37856e+07 22006.7 20361.8
+-1.37688e+07 28687.9 18417.7
+-1.37503e+07 33920.5 13880.1
+-1.37321e+07 37690 7448.6
+-1.37157e+07 40020.6 -242.595
+-1.37023e+07 40973 -8634.91
+-1.36929e+07 40641.3 -17250.7
+-1.36884e+07 39147.9 -25693.6
+-1.36892e+07 36637.7 -33645.3
+-1.36955e+07 33271.2 -40859.9
+0 29217 -47158.8
+6.40262e+06 2231.37 -26755.7
+6.38842e+06 2733.97 -25976.4
+6.37586e+06 3240.13 -24800.2
+6.36512e+06 3733.02 -23260.4
+6.35627e+06 4192.57 -21414.8
+6.34931e+06 4596.21 -19346.4
+6.34409e+06 4919.62 -17164.9
+6.34038e+06 5137.46 -15007.3
+6.3378e+06 5223.98 -13037.4
+6.33582e+06 5153.74 -11444.4
+6.33377e+06 4902.2 -10440.3
+6.33085e+06 4446.36 -10255
+6.32611e+06 3765.38 -11128.6
+6.31849e+06 2841.29 -13300.6
+6.30686e+06 1659.85 -16993.5
+6.29001e+06 211.719 -22389.4
+6.26676e+06 -1506.02 -29599.8
+6.23599e+06 -3487.8 -38628.4
+6.19676e+06 -5716.9 -49328.3
+6.1484e+06 -8162.07 -61360.3
+6.09066e+06 -10773.2 -74157.5
+6.02381e+06 -13475.3 -86905.5
+5.94883e+06 -16160.3 -98548.4
+5.86747e+06 -18673.7 -107825
+5.78243e+06 -20793.4 -113333
+5.6974e+06 -22194 -113617
+5.61717e+06 -22389.8 -107238
+5.54775e+06 -20641.9 -92799.5
+5.49659e+06 -15811.1 -68869
+5.47287e+06 -6116.89 -33774.5
+5.48808e+06 11286.8 14753.3
+5.55666e+06 41138.9 80082.8
+5.69658e+06 91835.9 167341
+5.92885e+06 179340 284237
+6.27348e+06 335574 441867
+6.73495e+06 624470 654416
+7.2645e+06 1.16523e+06 934528
+7.68768e+06 2.14166e+06 1.27826e+06
+7.62878e+06 3.71939e+06 1.63541e+06
+6.60094e+06 5.72252e+06 1.88095e+06
+4.56482e+06 7.09037e+06 1.84853e+06
+2.62402e+06 6.20479e+06 1.49496e+06
+1.36777e+06 4.24211e+06 1.03873e+06
+690355 2.55629e+06 658897
+343197 1.46575e+06 396843
+170182 815706 230908
+85700.2 444684 131112
+43293.7 241281 73160.9
+21787.6 129960 40243.7
+11141.3 69122.6 21887.8
+5703.18 36795 11820.2
+2858.39 19603.4 6350.67
+1435.88 10338.8 3399.71
+702.862 5484.46 1821.01
+303.26 2947.59 978.785
+98.7768 1577.99 529.452
+-8.74802 860.529 291.329
+-72.7416 493.085 166.021
+-109.885 299.532 101.639
+-135.302 212.473 72.6664
+-159.883 197.386 67.279
+-188.36 240.761 82.916
+-233.94 369.01 126.301
+-315.08 632.189 215.136
+-454.926 1126.68 385.127
+-725.63 2090.65 707.477
+-1256.12 3929.06 1316.66
+-2236.27 7350.18 2462.07
+-4154.67 13922.5 4616.55
+-7994.58 26476.3 8656.3
+-15352.4 49840 16168.1
+-29832.3 93937.6 30044.7
+-59141.7 177086 55442.8
+-117037 329685 101202
+-232845 609928 182284
+-470932 1.12418e+06 323206
+-950427 2.0325e+06 560563
+-1.89145e+06 3.5751e+06 942008
+-3.65002e+06 5.99715e+06 1.50654e+06
+-6.38627e+06 8.86477e+06 2.19746e+06
+-9.26503e+06 1.0196e+07 2.73761e+06
+-1.06986e+07 8.21604e+06 2.78225e+06
+-1.07539e+07 5.30015e+06 2.40241e+06
+-1.01365e+07 3.0155e+06 1.85996e+06
+-9.3816e+06 1.61698e+06 1.34669e+06
+-8.73069e+06 853890 935289
+-8.24695e+06 452679 627549
+-7.92082e+06 238596 401621
+-7.7234e+06 119665 234780
+-7.62587e+06 50938 109718
+-7.60452e+06 10375.4 14506.9
+-7.64082e+06 -13467.1 -58668.6
+-7.72026e+06 -27013.6 -114617
+-7.83107e+06 -34107.9 -156030
+-7.96332e+06 -37129.5 -184303
+-8.10833e+06 -37566.1 -200300
+-8.25844e+06 -36349.3 -204940
+-8.40703e+06 -34066.8 -199543
+-8.54863e+06 -31100 -185903
+-8.679e+06 -27707.3 -166168
+-8.79519e+06 -24073.7 -142615
+-8.89542e+06 -20337.5 -117406
+-8.979e+06 -16604 -92402.9
+-9.04609e+06 -12954.3 -69049.7
+-9.09752e+06 -9450.03 -48341.6
+-9.13461e+06 -6138.13 -30852.7
+-9.15895e+06 -3054.74 -16805.9
+-9.17232e+06 -228.465 -6159.38
+-9.17654e+06 2317.27 1308.04
+-9.17344e+06 4562.86 5925.03
+-9.16479e+06 6492.22 8073.48
+-9.15227e+06 8093.18 8152.02
+-9.13742e+06 9358.36 6553.3
+-9.12165e+06 10286.2 3650.46
+-9.10624e+06 10881.6 -210.972
+-9.09225e+06 11156.7 -4717.98
+-9.08063e+06 11130.5 -9592.74
+-9.0721e+06 10828.5 -14593.3
+-9.06723e+06 10281.8 -19512.6
+-9.06644e+06 9525.4 -24177.6
+0 8596.07 -28447.4
+3.1276e+06 1477.3 -14143.5
+3.11911e+06 1491.47 -13654.4
+3.11115e+06 1496.52 -12994.4
+3.10378e+06 1493.4 -12193
+3.09703e+06 1483.42 -11290.8
+3.09091e+06 1468.28 -10339
+3.08536e+06 1450.13 -9398.92
+3.0803e+06 1431.48 -8540.86
+3.07558e+06 1415.1 -7843.14
+3.07102e+06 1403.77 -7390.47
+3.06637e+06 1399.97 -7272.05
+3.06133e+06 1405.57 -7579.21
+3.05556e+06 1421.38 -8402.34
+3.04868e+06 1446.8 -9826.51
+3.04025e+06 1479.5 -11925.2
+3.02983e+06 1515.26 -14751.6
+3.01695e+06 1548.06 -18326.1
+3.00117e+06 1570.37 -22622.2
+2.9821e+06 1573.8 -27549
+2.95942e+06 1549.76 -32935.4
+2.93297e+06 1490.31 -38518.4
+2.90276e+06 1388.82 -43938.9
+2.86904e+06 1240.52 -48751.9
+2.83237e+06 1042.89 -52450.8
+2.79366e+06 796.329 -54506.3
+2.75425e+06 505.815 -54412.2
+2.716e+06 184.562 -51720.6
+2.68148e+06 -138.843 -46048.7
+2.65429e+06 -408.13 -37032
+2.63964e+06 -517.321 -24213.8
+2.64526e+06 -260.599 -6868.48
+2.68312e+06 821.578 16231.1
+2.77214e+06 3983.79 47113.4
+2.94276e+06 13166.2 89007.9
+3.24314e+06 41141.2 146816
+3.74258e+06 127424 227220
+4.51288e+06 382836 336913
+5.53557e+06 1.07413e+06 475979
+6.46145e+06 2.69529e+06 624191
+6.33222e+06 5.69445e+06 727382
+4.20383e+06 9.03367e+06 712304
+2.05512e+06 8.19824e+06 561549
+883232 5.31015e+06 375264
+390632 2.98711e+06 228832
+174184 1.6475e+06 133395
+78767.6 892342 75765.4
+39597.2 473897 42385.3
+19788.6 255864 23449.6
+9379.35 137668 12807
+4977.56 72140.6 6930.18
+2627.8 38429.3 3736.46
+1212.51 20647.6 2003.88
+636.28 10724.7 1071.18
+341.987 5680.43 574.594
+129.477 3108.51 308.358
+43.6922 1636.72 166.258
+5.20741 884.568 91.9043
+-30.764 521.012 52.4905
+-46.9719 311.051 31.9336
+-56.4233 218.747 22.9442
+-70.4541 208.537 21.4203
+-80.4325 247.189 26.1843
+-101.117 384.025 39.7447
+-145.869 666.803 68.1289
+-195.268 1157.41 121.656
+-311.592 2171.41 222.597
+-590.048 4139.02 415.701
+-977.801 7606.36 778.461
+-1766.31 14454.4 1458.22
+-3667.58 27875.3 2739.74
+-6806.31 52006.5 5128.71
+-12817.1 98060 9553.46
+-26990.6 187558 17739.4
+-53825.6 349331 32659.6
+-107498 649835 59456
+-238915 1.22946e+06 107333
+-537109 2.28198e+06 191472
+-1.21983e+06 4.17008e+06 333885
+-2.85387e+06 7.4816e+06 557486
+-5.85829e+06 1.16428e+07 847064
+-8.8368e+06 1.29041e+07 1.08297e+06
+-9.00939e+06 8.16281e+06 1.10445e+06
+-7.70604e+06 3.86155e+06 940484
+-6.27587e+06 1.52911e+06 709050
+-5.20632e+06 537248 495613
+-4.51845e+06 174295 330436
+-4.10824e+06 53757.1 211740
+-3.87733e+06 15585.6 128020
+-3.75829e+06 3402.76 68332.6
+-3.70909e+06 -627.983 24717.1
+-3.70403e+06 -1861.59 -8163.31
+-3.72728e+06 -1974.66 -33736.8
+-3.76883e+06 -1593.82 -54016.4
+-3.82214e+06 -1012.45 -69961.8
+-3.88263e+06 -382.75 -81841
+-3.94682e+06 220.316 -89605.7
+-4.01192e+06 765.17 -93213.6
+-4.07561e+06 1240.78 -92836.6
+-4.13604e+06 1642.67 -88931.6
+-4.19176e+06 1966.83 -82199
+-4.24182e+06 2208.99 -73478.3
+-4.28567e+06 2366.67 -63626.7
+-4.32312e+06 2441.57 -53417.7
+-4.35432e+06 2440.84 -43477
+-4.37961e+06 2377.02 -34257.4
+-4.3995e+06 2266.57 -26045.5
+-4.41457e+06 2127.82 -18989.3
+-4.42547e+06 1978.64 -13134.1
+-4.43285e+06 1834.62 -8457.61
+-4.43734e+06 1707.79 -4897.71
+-4.43956e+06 1606.2 -2372.01
+-4.44013e+06 1533.97 -788.402
+-4.4396e+06 1491.91 -50.0128
+-4.43851e+06 1478.28 -56.7175
+-4.43733e+06 1489.53 -705.64
+-4.4365e+06 1521.09 -1891.64
+-4.43639e+06 1567.89 -3508.11
+-4.43732e+06 1624.92 -5448.05
+-4.43953e+06 1687.52 -7605.31
+-4.44322e+06 1751.52 -9876.37
+0 1813.22 -12162.8
+189412 87.2272 -2462.74
+189068 88.0563 -2370.19
+188730 88.3537 -2254.02
+188400 88.1782 -2120.68
+188077 87.6041 -1978.34
+187761 86.7275 -1836.76
+187451 85.6687 -1707.07
+187146 84.5691 -1601.47
+186844 83.5826 -1532.73
+186541 82.8624 -1513.77
+186234 82.544 -1556.93
+185919 82.7228 -1673.39
+185591 83.4309 -1872.36
+185243 84.6135 -2160.28
+184863 86.11 -2540.02
+184439 87.6447 -3009.92
+183954 88.8314 -3562.9
+183388 89.1933 -4185.51
+182717 88.1992 -4857.09
+181919 85.3114 -5549.1
+180970 80.0371 -6224.97
+179850 71.9772 -6840.47
+178548 60.8648 -7345.13
+177058 46.5993 -7684.7
+175383 29.2938 -7804.87
+173535 9.37926 -7655.82
+171536 -12.1706 -7197.14
+169427 -33.3836 -6401.9
+167282 -50.2986 -5258.83
+165249 -54.0352 -3771.29
+163622 -18.9991 -1952.49
+163028 149.776 183.861
+164915 846.445 2638.93
+172993 3703.8 5454.04
+197252 15131.6 8750.5
+263740 58423.7 12783.5
+432062 210518 17992.7
+803514 695976 25003.6
+1.42923e+06 2.05858e+06 34438.8
+1.92065e+06 5.18681e+06 45905.2
+1.08471e+06 9.85025e+06 54456.3
+312093 8.9549e+06 46912.7
+56625.5 5.55522e+06 31906.2
+19059.8 3.0184e+06 19701.5
+4973.65 1.65795e+06 11478.8
+-30.8951 895386 6307.47
+1453.64 471369 3541.03
+798.133 255951 2023.86
+-70.4012 138251 1063.04
+178.181 71759.7 550.9
+156.5 38381.3 309.762
+-25.8606 20790.6 163.291
+14.4439 10664.6 82.8404
+32.0462 5652.82 48.0954
+-6.53742 3141.49 25.4178
+-2.39968 1629.69 11.8511
+5.11823 875.475 7.49971
+-2.84472 528.016 4.59065
+-2.45669 310.195 2.06116
+-0.745885 216.778 1.621
+-3.98037 211.519 1.94578
+-1.50362 244.442 1.83142
+-1.82775 383.793 2.65369
+-11.2228 675.021 6.00732
+-0.895997 1145.12 9.84864
+1.69968 2165.12 16.1344
+-46.7969 4180.28 34.7354
+-18.6391 7565.13 65.1071
+23.1628 14386.6 113.7
+-219.728 28066.1 226.318
+-219.483 51913.6 428.29
+80.0964 97582.5 766.681
+-1138.01 188392 1491.07
+-1918.13 349347 2840.74
+8.83455 646502 4991.15
+-7461.14 1.23428e+06 8969.71
+-27511.3 2.29709e+06 16430.8
+-82338.1 4.21636e+06 28372.8
+-451682 7.83675e+06 46297
+-1.56314e+06 1.27325e+07 68549.6
+-2.76324e+06 1.40778e+07 80173.8
+-2.05393e+06 7.43128e+06 68294.5
+-1.15144e+06 2.94413e+06 51616.3
+-618974 987746 37623.8
+-381068 294250 27234.7
+-289449 79666.5 19666.5
+-257492 19877.9 13969
+-247852 4585.15 9411.16
+-246475 918.521 5534.95
+-248249 69.7123 2095.02
+-251215 -120.463 -1019.1
+-254560 -148.718 -3838.67
+-257938 -129.893 -6348.44
+-261211 -95.1683 -8507.75
+-264337 -55.9676 -10268.3
+-267295 -17.3841 -11589.9
+-270063 18.3019 -12452.3
+-272610 50.1034 -12861.4
+-274903 77.5007 -12848.7
+-276915 100.079 -12466.5
+-278639 117.479 -11780.7
+-280084 129.509 -10863.1
+-281277 136.262 -9784.69
+-282255 138.186 -8611.33
+-283059 136.063 -7401.16
+-283727 130.912 -6203.5
+-284294 123.859 -5058.92
+-284783 115.998 -3999.87
+-285212 108.277 -3051.38
+-285593 101.43 -2231.81
+-285934 95.9451 -1553.35
+-286239 92.0797 -1022.47
+-286515 89.8915 -640.247
+-286768 89.2867 -402.816
+-287006 90.0676 -301.879
+-287236 91.9753 -325.35
+-287469 94.7254 -458.085
+-287713 98.0354 -682.661
+-287978 101.643 -980.162
+-288271 105.312 -1330.95
+0 108.828 -1715.38
+10895 5.06543 -144.764
+10874.8 5.11401 -139.505
+10855 5.13203 -132.904
+10835.5 5.123 -125.329
+10816.5 5.09108 -117.244
+10797.9 5.04155 -109.201
+10779.6 4.98095 -101.831
+10761.6 4.91698 -95.8215
+10743.7 4.85797 -91.892
+10725.8 4.81212 -90.7666
+10707.5 4.78649 -93.1372
+10688.8 4.78573 -99.6256
+10669.2 4.81062 -110.742
+10648.3 4.85675 -126.838
+10625.4 4.91335 -148.065
+10599.6 4.96276 -174.316
+10569.9 4.9807 -205.18
+10534.8 4.9375 -239.888
+10492.8 4.80032 -277.265
+10442.3 4.53623 -315.698
+10381.6 4.11547 -353.119
+10309.3 3.51477 -387.039
+10224.3 2.72009 -414.63
+10126.2 1.72908 -432.869
+10014.8 0.554356 -438.761
+9890.98 -0.77007 -429.605
+9756.13 -2.17444 -403.276
+9613.14 -3.51754 -358.459
+9467.6 -4.46403 -294.742
+9331.49 -3.90925 -212.514
+9235.85 3.01044 -112.563
+9280.65 40.1915 4.78029
+9839.87 224.645 141.403
+12364.5 1105.09 305.428
+22260.1 5117.56 521.385
+57978.7 22455.9 858.541
+174769 93128.1 1513.5
+506530 362764 3033.4
+1.25276e+06 1.30909e+06 6755.4
+2.20729e+06 4.22594e+06 14870.6
+1.14273e+06 1.09054e+07 26531.9
+227163 9.86306e+06 24020.3
+4836.27 5.77319e+06 15407.8
+8090.59 3.01242e+06 9441.78
+48.591 1.66431e+06 5396.02
+-3414.51 897984 2679.31
+1000.02 466501 1534.38
+528.01 256157 957.761
+-547.11 139210 443.165
+105.704 71072.7 199.288
+152.786 38313.6 130.638
+-105.359 21032.2 64.5981
+-1.73568 10553.4 27.2734
+40.4833 5606.96 21.2955
+-18.3859 3197.8 10.5589
+-5.54309 1615.56 2.529
+9.39028 859.799 3.15822
+-3.20885 540.053 2.29275
+-1.3715 308.192 0.108634
+2.23543 213.154 0.343142
+-2.93888 216.635 1.07018
+2.05141 239.456 0.349552
+2.90284 382.735 0.254913
+-11.9239 689.149 3.01565
+8.45768 1123.82 3.96571
+20.3912 2151.57 3.71247
+-53.3928 4250.8 14.8462
+10.9696 7496.09 28.3686
+128.778 14258.9 37.8909
+-215.712 28389.3 92.0106
+-102.39 51773.7 181.507
+718.958 96715.2 280.756
+-807.916 189764 633.985
+-1243.89 349433 1351.72
+4708.27 639956 2163.72
+-757.282 1.2386e+06 3830.16
+-11816.8 2.30592e+06 7719.89
+-8067.62 4.20902e+06 13459.4
+-329341 8.15236e+06 21962.2
+-1.64009e+06 1.40337e+07 34274.2
+-3.1585e+06 1.5584e+07 37957.1
+-1.78528e+06 6.04977e+06 21411.9
+-715014 1.86954e+06 9829.97
+-243029 513837 4477.97
+-79433.5 129871 2269.34
+-30631.8 30553.2 1312.79
+-17606.1 6718.01 827.169
+-14471.9 1379.07 524.296
+-13865.7 259.062 297.604
+-13887.3 37.7894 106.477
+-14069.2 -3.52549 -64.2769
+-14291.9 -10.123 -219.267
+-14520.2 -9.7704 -358.334
+-14742.3 -7.79352 -479.124
+-14953.7 -5.40042 -578.592
+-15152.5 -2.97886 -654.081
+-15336.6 -0.691277 -704.092
+-15504.2 1.38494 -728.664
+-15653.5 3.20431 -729.376
+-15783.2 4.73186 -709.067
+-15893.3 5.93999 -671.4
+-15984.8 6.81397 -620.41
+-16059.8 7.35849 -560.122
+-16120.8 7.60061 -494.277
+-16170.6 7.5878 -426.184
+-16211.7 7.38184 -358.652
+-16246.4 7.05061 -294
+-16276.1 6.65978 -234.083
+-16302.1 6.26623 -180.343
+-16325.2 5.91382 -133.843
+-16345.7 5.63197 -95.2985
+-16364 5.43632 -65.0972
+-16380.6 5.33089 -43.3212
+-16395.7 5.31089 -29.7684
+-16409.9 5.36554 -23.9818
+-16423.6 5.48059 -25.2854
+-16437.4 5.64035 -32.8266
+-16451.8 5.82932 -45.6197
+-16467.5 6.03307 -62.5919
+-16484.7 6.23854 -82.6269
+0 6.43359 -104.607
+624.105 0.252492 -8.48576
+622.926 0.25497 -8.18748
+621.766 0.255938 -7.81315
+620.628 0.255572 -7.38361
+619.513 0.254071 -6.92519
+618.42 0.251684 -6.46918
+617.346 0.248715 -6.05112
+616.284 0.245523 -5.70975
+615.227 0.242492 -5.48556
+614.165 0.24 -5.41909
+613.085 0.23836 -5.549
+611.971 0.237759 -5.9099
+610.8 0.23819 -6.52993
+609.541 0.239375 -7.42836
+608.152 0.240713 -8.61289
+606.576 0.241251 -10.0769
+604.74 0.239698 -11.7965
+602.554 0.234489 -13.7277
+599.914 0.223909 -15.8037
+596.708 0.206247 -17.9331
+592.823 0.179983 -19.9993
+588.158 0.143972 -21.8621
+582.632 0.0975966 -23.3631
+576.199 0.0409189 -24.334
+568.849 -0.0251425 -24.6101
+560.62 -0.0984636 -24.0456
+551.613 -0.174856 -22.53
+542.037 -0.245144 -20.001
+532.354 -0.280969 -16.448
+523.93 -0.154235 -11.9001
+522.201 0.823911 -6.38494
+552.525 6.44513 0.180349
+736.46 37.0343 8.29444
+1637.51 197.729 19.811
+5723.34 1014.75 41.1025
+23073.8 5051.36 94.4859
+91486.8 24543.2 260.295
+336597 117139 822.577
+1.09128e+06 553007 2691.12
+2.71088e+06 2.60303e+06 8148.64
+1.26399e+06 1.23464e+07 19475.1
+152448 1.09707e+07 15995.4
+-31255.9 5.95497e+06 8817.93
+11580.6 2.968e+06 5633.02
+154.791 1.67453e+06 3202.09
+-5327.17 902879 1267.21
+1855.04 459004 838.417
+819.64 256981 657.919
+-918.36 140878 231.294
+189.395 69969.9 67.8231
+241.779 38257.7 78.206
+-179.043 21441.6 33.3939
+0.203213 10369.9 7.43054
+65.8376 5539.61 15.5656
+-31.5414 3293.22 6.76651
+-8.42416 1591.53 -1.3319
+15.6817 835.109 2.35523
+-5.44912 560.629 2.11154
+-2.01289 304.713 -0.800982
+3.98452 207.291 -0.0880486
+-4.7935 225.465 1.14957
+3.48654 231.364 -0.172175
+5.39631 380.762 -0.825909
+-19.563 713.413 2.78358
+13.4457 1090.1 2.71826
+35.7317 2128.13 -1.36597
+-86.665 4370.71 9.94493
+14.2794 7392.96 19.9353
+220.388 14047.2 10.4923
+-342.241 28937.2 50.0504
+-190.107 51617.4 107.904
+1210.97 95318.7 97.2702
+-1259.51 192138 342.424
+-2326.61 350220 928.68
+7419.64 629799 1172
+-1125.34 1.24638e+06 1840.5
+-16390.5 2.31961e+06 4632.28
+43830.6 4.14675e+06 8067.65
+-224180 8.418e+06 12639.7
+-1.81478e+06 1.56195e+07 22978.5
+-3.87556e+06 1.76374e+07 28081.8
+-1.55317e+06 3.72317e+06 11829.3
+-474138 788690 3938.66
+-126613 165636 1218.71
+-31130.5 34162.4 391.987
+-7508.36 6861.14 144.876
+-2141.98 1330.82 64.808
+-1016.77 247.118 33.4677
+-804.198 43.2742 17.0939
+-775.91 6.69216 5.66629
+-783.358 0.46154 -3.87943
+-797.584 -0.50669 -12.4278
+-812.814 -0.579898 -20.1312
+-827.71 -0.490644 -26.8835
+-841.86 -0.367293 -32.5013
+-855.079 -0.238914 -36.814
+-867.231 -0.115551 -39.7162
+-878.194 -0.00198659 -41.1931
+-887.872 0.0988394 -41.3219
+-896.215 0.184697 -40.2555
+-903.245 0.253891 -38.197
+-909.05 0.305513 -35.3733
+-913.775 0.339738 -32.0119
+-917.597 0.35794 -28.3254
+-920.697 0.362561 -24.5019
+-923.243 0.356778 -20.7014
+-925.373 0.344077 -17.0562
+-927.193 0.327822 -13.6727
+-928.776 0.310918 -10.6335
+-930.169 0.295609 -8.0002
+-931.406 0.283401 -5.81455
+-932.508 0.275108 -4.0998
+-933.499 0.27096 -2.8617
+-934.402 0.270747 -2.08974
+-935.244 0.273964 -1.75877
+-936.055 0.279936 -1.83106
+-936.87 0.287922 -2.25866
+-937.72 0.297191 -2.98591
+-938.635 0.307061 -3.95208
+-939.642 0.316911 -5.09388
+0 0.326154 -6.34782
+32.2105 0 -0.447673
+32.1487 0 -0.432391
+32.0878 0 -0.413214
+32.0279 0 -0.391212
+31.9692 0 -0.367733
+31.9116 0 -0.344377
+31.8549 0 -0.322956
+31.7987 0 -0.305444
+31.7427 0 -0.293897
+31.6863 0 -0.290372
+31.6287 0 -0.296823
+31.5691 0 -0.314991
+31.5061 0 -0.346286
+31.438 0 -0.391658
+31.3623 0 -0.451469
+31.2758 0 -0.525347
+31.1742 0 -0.612044
+31.0524 0 -0.709285
+30.9041 0 -0.81364
+30.7227 0 -0.920424
+30.5017 0 -1.02368
+30.2346 0 -1.11628
+29.9166 0 -1.19017
+29.5445 0 -1.2369
+29.1173 0 -1.24824
+28.637 0 -1.21706
+28.1097 0 -1.13818
+27.5493 0 -1.00893
+26.9956 0 -0.829249
+26.6123 0 -0.600431
+27.2452 0 -0.320957
+33.5128 0 0.0267426
+70.2901 0 0.519938
+267.316 0 1.44977
+1279.49 0 3.91115
+6321.17 0 12.2518
+30829.3 0 44.7822
+147849 0 180.598
+700480 0 753.356
+3.30244e+06 0 3098.65
+1.5224e+06 1.41235e+07 13777.7
+122398 1.23699e+07 9614.88
+-70498.7 6.1482e+06 3447.23
+19302.8 2.87752e+06 2924.52
+3828.43 1.68901e+06 1921.75
+-8735.85 914958 250.855
+2451.76 447544 313.656
+1722.86 257471 550.127
+-1452.83 143978 133.88
+164.176 68385.7 -36.085
+458.377 37977.7 46.7293
+-259.065 22150.4 19.1918
+-29.8621 10137.9 -8.83434
+117.641 5392 14.2047
+-38.6093 3447.99 8.03064
+-18.5964 1570.78 -3.98542
+26.7569 789.033 2.79016
+-5.46244 591.787 4.11367
+-4.60031 303.632 -0.591641
+4.63186 198.506 0.161205
+-7.68798 238.322 2.20821
+5.54155 218.772 -0.0368147
+3.03994 383.099 -0.556448
+-34.4218 749.591 5.2037
+26.0033 1028.77 2.87889
+39.6882 2113.48 -4.69475
+-153.462 4561.98 11.6774
+59.4982 7179.9 16.866
+309.439 13793.4 -11.3673
+-633.974 29869.6 31.8762
+-117.524 51119.7 61.6675
+1887.31 93353.2 -47.1668
+-2544.39 196463 211.192
+-2964.3 350324 765.387
+12100.7 614384 412.775
+-6609.72 1.26446e+06 413.076
+-26491.9 2.33818e+06 2830.59
+100381 4.01905e+06 4213.01
+-183553 8.70261e+06 5045.03
+-2.18591e+06 1.76213e+07 14074.8
+-4.71818e+06 2.01665e+07 20263.5
+-996322 0 4627.49
+-208110 0 1136.43
+-42628.5 0 275.81
+-8511.81 0 69.4771
+-1663.2 0 19.2877
+-335.609 0 6.24052
+-89.3071 0 2.41058
+-46.2818 0 1.01736
+-39.7389 0 0.306459
+-39.4472 0 -0.200468
+-40.1823 0 -0.633222
+-41.0648 0 -1.021
+-41.9387 0 -1.36299
+-42.7682 0 -1.65007
+-43.5401 0 -1.87274
+-44.2458 0 -2.02471
+-44.8786 0 -2.10443
+-45.4338 0 -2.1153
+-45.9099 0 -2.06474
+-46.3089 0 -1.96298
+-46.6369 0 -1.82153
+-46.9027 0 -1.65203
+-47.1168 0 -1.4654
+-47.2896 0 -1.27128
+-47.4309 0 -1.07793
+-47.5486 0 -0.892174
+-47.6485 0 -0.719492
+-47.735 0 -0.564183
+-47.8108 0 -0.429452
+-47.8777 0 -0.317497
+-47.9371 0 -0.229564
+-47.9903 0 -0.165995
+-48.0386 0 -0.126297
+-48.0834 0 -0.109215
+-48.1265 0 -0.112842
+-48.1695 0 -0.13474
+-48.2143 0 -0.17207
+-48.2624 0 -0.221725
+-48.3152 0 -0.280463
+0 0 -0.34503
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.24566e+06 8.86725e+06 61102.6
+2.77066e+06 1.48335e+07 93966.7
+-61646.8 8.9848e+06 44616.2
+-138829 2.96332e+06 16599.5
+137602 1.41495e+06 18865.2
+-1600.37 1.05402e+06 10172.7
+-30558.5 476677 818.469
+18810.8 207318 2294.58
+4536.44 156984 3072.05
+-6365.81 78828.9 699.875
+2803.98 28919.2 127.281
+1929.45 23086.2 415.535
+-1224.84 13273.7 101.243
+403.457 3777.34 25.7534
+665.244 3208.51 151.042
+-155.861 2397.91 80.8996
+42.8219 583.936 41.0712
+164.939 450.779 83.4299
+-55.7077 510.403 71.0998
+-98.4884 249.58 40.6395
+-0.795749 160.904 36.892
+-35.918 267.429 41.4049
+-291.597 628.981 82.95
+-120.322 557.32 99.0989
+82.7461 814.963 47.8223
+-966.101 3170.59 108.843
+-499.458 4126.77 188.595
+1428.26 5271.96 28.5421
+-2851.72 18051.4 170.026
+-3388.23 30488.6 561.614
+8367.9 39507.8 145.1
+-7422.15 108530 1038.88
+-24427.5 211825 4236.27
+42792.8 282179 2991.85
+-3784.01 661384 1324.36
+-191570 1.45238e+06 14755.4
+203015 1.94733e+06 26521
+66788.7 4.16789e+06 23229.5
+-3.96738e+06 1.27449e+07 63543.2
+-7.47219e+06 2.11144e+07 134227
+0 1.26825e+07 87969.8
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.28599e+06 0 69299.3
+6.13268e+06 0 202520
+2.29156e+06 0 187613
+-356471 0 65168.3
+-114743 0 18676.6
+193462 0 29058.7
+-7331.59 0 16220.7
+-32935.2 0 160.238
+29576.1 0 1879.87
+6186.72 0 3438.45
+-7194.1 0 615.694
+5592.16 0 344.579
+3452.45 0 913.385
+-1053.09 0 339.998
+1234.95 0 174.043
+1342.44 0 419.988
+7.72002 0 348.725
+139.58 0 264.815
+60.5089 0 314.862
+-241.386 0 236.096
+-237.184 0 162.295
+-599.584 0 258.153
+-576.909 0 347.737
+-454.823 0 318.24
+-2189.9 0 439.746
+-1877.55 0 513.75
+832.938 0 208.842
+-5288.42 0 500.408
+-7276.96 0 1240.42
+9094.36 0 412.174
+-10561.6 0 921.413
+-39119.1 0 4741.55
+45933 0 2419.54
+1340.68 0 773.053
+-269990 0 23790.7
+170840 0 40782.4
+473955 0 25710.9
+-3.29847e+06 0 92025
+-8.73029e+06 0 265783
+-6.11e+06 0 288118
+0 0 99509.4
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.98449e+06 -6.17528e+06 128306
+4.24077e+06 -1.02602e+07 350345
+1.56521e+06 -6.13866e+06 315368
+-243775 -1.98516e+06 112615
+-71023.1 -942613 25916.6
+127364 -695342 33853.2
+-10891.8 -305444 21651.6
+-20504.3 -134736 3650.09
+22561.4 -104751 4411.19
+4163.52 -50672.3 4982.43
+-4962.75 -17835 1056.77
+3745.77 -14905.9 409.792
+2010.25 -8345.4 972.526
+-797.312 -2272.5 356.619
+827.512 -2137.5 172.045
+730.235 -1511.51 414.017
+-77.0259 -325.679 296.08
+205.99 -323.308 182.118
+154.974 -339.451 264.652
+-151.251 -149.808 253.715
+-252.924 -108.46 215.269
+-619.639 -161.721 260.318
+-594.145 -422.792 261.701
+-267.271 -394.655 205.382
+-1331.92 -455.86 387.693
+-1331.75 -2013.67 532.596
+607.633 -2737.13 220.836
+-3277.5 -3170.58 510.293
+-4941.56 -11431.9 1289.48
+6359.14 -19717.6 503.55
+-7345.04 -24414.7 1593.47
+-30284.6 -70278.1 6910.54
+29150.7 -142004 5825.56
+9044.91 -183788 5371.45
+-179623 -426813 30892.4
+107856 -965586 46841.8
+327062 -1.30704e+06 35591.2
+-2.27323e+06 -2.8183e+06 159638
+-6.08771e+06 -8.78921e+06 447297
+-4.28979e+06 -1.47346e+07 497395
+0 -8.90906e+06 182784
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.6744e+06 -9.90044e+06 111870
+1.92284e+06 -8.58726e+06 172557
+-43813.6 -4.21352e+06 86124.7
+-90535.6 -1.95029e+06 28455.2
+92605.6 -1.1344e+06 27514.2
+-4734.17 -606188 18359.8
+-19550.1 -294686 4876.95
+14351.7 -170100 3756.82
+2732 -93816.5 3759.14
+-4469.08 -43723.2 951.707
+2024.13 -24468.9 267.319
+1166.51 -14247.1 614.037
+-870.582 -6413.39 205.07
+326.573 -3465.9 18.9624
+398.276 -2207.82 146.04
+-150.743 -969.89 86.2761
+44.5437 -504.126 22.6628
+124.475 -384.107 58.1248
+-23.6447 -182.309 60.9022
+-58.7528 -121.385 45.0487
+-23.757 -156.214 46.685
+-56.6324 -133.27 43.0436
+-232.796 -231.768 67.3175
+-111.152 -486.766 70.0999
+104.026 -655.427 32.5926
+-614.768 -1311.41 125.762
+-424.292 -2930.03 191.647
+1021.53 -4612.71 24.4536
+-1787.29 -8755.96 303.512
+-2468.31 -19291.5 816.971
+5941.58 -33018.6 338.146
+-4745.86 -59953.3 1402.49
+-18926.5 -128764 5177.5
+27939.7 -232639 4977.31
+2502.16 -406909 6857.26
+-130110 -844072 25853.5
+134446 -1.58308e+06 38002.5
+48120.1 -2.7478e+06 39057.8
+-2.77784e+06 -6.02051e+06 120802
+-5.27735e+06 -1.23441e+07 243230
+0 -1.42566e+07 158173
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+24.5697 -0.198416 -0.197685
+24.5202 -0.194546 -0.188389
+24.4732 -0.189019 -0.177181
+24.4288 -0.182198 -0.164644
+24.3871 -0.174525 -0.151507
+24.3479 -0.166528 -0.138636
+24.3108 -0.158829 -0.127012
+24.2752 -0.152124 -0.1177
+24.2403 -0.147153 -0.111815
+24.205 -0.144649 -0.110472
+24.1682 -0.14527 -0.114732
+24.1283 -0.149525 -0.125552
+24.0834 -0.157685 -0.143709
+24.0312 -0.169693 -0.169746
+23.9687 -0.185097 -0.203886
+23.8923 -0.202994 -0.245966
+23.7976 -0.222029 -0.295342
+23.6796 -0.240433 -0.350812
+23.5326 -0.256122 -0.410527
+23.3509 -0.266825 -0.471935
+23.1292 -0.270252 -0.531751
+22.8632 -0.264242 -0.586001
+22.5501 -0.246913 -0.630152
+22.1893 -0.216786 -0.659354
+21.7829 -0.172961 -0.668791
+21.3353 -0.115448 -0.654092
+20.8549 -0.0459837 -0.611732
+20.3558 0.0293875 -0.539239
+19.8727 0.08874 -0.434892
+19.5366 0.0316077 -0.295945
+19.9975 -0.670187 -0.111686
+24.7256 -4.865 0.163663
+52.1214 -27.5941 0.718265
+197.049 -145.784 2.30626
+933.996 -740.943 7.90751
+4574.1 -3657.04 29.1959
+22142.9 -17635.6 111.594
+105496 -83602.2 429.839
+496804 -392195 1640.1
+2.32865e+06 -1.8349e+06 6150.08
+1.06672e+06 -8.65025e+06 25516.3
+84821.5 -7.61326e+06 17519.8
+-47840.2 -4.08307e+06 5663.97
+13329.8 -2.0126e+06 4058.18
+2040.69 -1.12436e+06 3173.83
+-5756.76 -598968 828.46
+1959.65 -302448 359.245
+1045.74 -169173 537.194
+-1067.96 -91718.1 149.152
+150.025 -44958.3 -18.9484
+306.647 -24651.9 73.115
+-183.775 -13774.2 36.635
+-8.57411 -6587.29 -10.1819
+77.0144 -3548.11 10.7116
+-31.6398 -2101.07 8.97233
+-9.14515 -992.493 -3.95802
+18.7601 -531.388 1.66663
+-5.82494 -359.473 4.09461
+-2.34909 -186.052 -0.361225
+4.30229 -128.163 0.21586
+-6.71671 -145.362 2.28107
+2.67939 -142.763 -0.0182648
+4.15513 -233.538 -0.284629
+-24.6775 -457.836 5.12258
+13.7931 -692.616 1.69425
+33.5149 -1331.55 -4.27475
+-102.508 -2795.55 13.2339
+26.9009 -4737.9 12.6391
+222.448 -8950.26 -12.6353
+-432.058 -18659.8 54.6609
+-126.232 -33358.4 95.7081
+1407.02 -61509.6 -24.091
+-1599.48 -125777 230.947
+-2435.36 -231784 745.531
+8090.47 -417504 481.869
+-3782.8 -833004 1218.22
+-18446.3 -1.57012e+06 4537.85
+68857.8 -2.83659e+06 5695.75
+-128634 -5.82591e+06 7941.09
+-1.54501e+06 -1.09384e+07 24757.6
+-3.35375e+06 -1.24638e+07 36220.1
+-712060 -2.64585e+06 8787.95
+-149611 -563663 2350.46
+-30853.3 -119099 616.575
+-6210.95 -24732.8 159.935
+-1225.97 -5007.42 41.7289
+-250.218 -980.798 11.2852
+-66.8516 -184.298 3.34179
+-34.2564 -32.6998 1.12202
+-29.1865 -5.11722 0.353763
+-28.9611 -0.388284 -0.03756
+-29.5741 0.297135 -0.317363
+-30.3301 0.283611 -0.548596
+-31.1003 0.150849 -0.743641
+-31.8531 0.0049851 -0.90227
+-32.5743 -0.12979 -1.02179
+-33.2524 -0.246206 -1.10037
+-33.8767 -0.341869 -1.13824
+-34.438 -0.416029 -1.138
+-34.93 -0.46847 -1.10426
+-35.3507 -0.499349 -1.04293
+-35.7023 -0.50944 -0.960547
+-35.9903 -0.500417 -0.86357
+-36.2227 -0.474971 -0.757982
+-36.4083 -0.436679 -0.649018
+-36.5555 -0.389683 -0.541089
+-36.6716 -0.338271 -0.437796
+-36.7626 -0.28647 -0.342009
+-36.8331 -0.237716 -0.255946
+-36.8867 -0.194653 -0.181252
+-36.9261 -0.159072 -0.119041
+-36.9537 -0.131947 -0.0699343
+-36.9721 -0.113551 -0.0340894
+-36.9836 -0.103599 -0.0112267
+-36.9907 -0.101402 -0.000672399
+-36.9961 -0.105999 -0.00141034
+-37.0025 -0.116275 -0.0121441
+-37.0121 -0.131055 -0.0313642
+-37.0273 -0.149166 -0.0574182
+-37.0497 -0.169469 -0.0885794
+0 -0.190864 -0.123113
+477.552 -4.01728 -3.68448
+476.611 -3.93419 -3.50684
+475.718 -3.81677 -3.29247
+474.877 -3.67259 -3.05248
+474.089 -3.51087 -2.80087
+473.351 -3.34288 -2.55425
+472.654 -3.18185 -2.3315
+471.988 -3.0427 -2.15318
+471.338 -2.9413 -2.04079
+470.683 -2.89347 -2.01594
+470.002 -2.91361 -2.0993
+469.265 -3.01315 -2.30948
+468.438 -3.19877 -2.66184
+467.478 -3.47059 -3.16714
+466.331 -3.8207 -3.83014
+464.931 -4.23213 -4.64807
+463.2 -4.67866 -5.60898
+461.048 -5.12553 -6.69005
+458.375 -5.53121 -7.85601
+455.083 -5.84986 -9.05785
+451.08 -6.03426 -10.2323
+446.294 -6.0386 -11.3024
+440.686 -5.82108 -12.1802
+434.251 -5.34611 -12.7704
+427.033 -4.58763 -12.9776
+419.121 -3.53545 -12.7132
+410.657 -2.20916 -11.9032
+401.869 -0.690898 -10.4923
+393.18 0.771439 -8.4416
+385.711 1.31133 -5.71059
+383.685 -2.83029 -2.19874
+406.246 -29.6979 2.45174
+543.537 -166.14 9.54919
+1208.11 -814.365 23.817
+4188.78 -3742.5 61.9938
+16732.3 -16288 181.946
+65813.3 -67033.2 576.806
+240453 -259274 1855.51
+774595 -929390 5744.19
+1.9124e+06 -2.98065e+06 16092
+886146 -7.64032e+06 35797.7
+106194 -6.84548e+06 28166
+-20974.6 -3.96167e+06 14588.5
+7929.98 -2.0446e+06 8726.03
+-238.439 -1.1182e+06 5203.49
+-3472 -596704 2236.43
+1416.24 -307689 1190.81
+458.772 -168389 831.277
+-668.11 -90698.5 338.655
+153.062 -45841.7 130.032
+159.126 -24700.9 121.079
+-124.604 -13513.7 56.6864
+7.44299 -6725.04 13.1315
+42.0411 -3584.88 17.7286
+-23.9611 -2038.07 9.76285
+-3.15594 -1014.48 -0.165378
+10.7549 -545.503 2.55918
+-5.07373 -344.261 2.7279
+-1.01231 -190.589 -0.32036
+3.29773 -132.629 0.0669609
+-3.90225 -138.273 1.25948
+2.01809 -148.857 -0.00131673
+5.27998 -237.4 -0.226058
+-13.6186 -439.683 3.53721
+6.25502 -712.763 2.99185
+27.6804 -1354.57 0.232492
+-56.5188 -2715.26 13.8585
+1.1869 -4798.57 22.9051
+155.438 -9112.49 18.47
+-230.195 -18304.9 80.8624
+-159.563 -33485.4 164.217
+894.412 -62646.6 180.329
+-743.919 -124282 485.801
+-1811.58 -230947 1159.69
+4910.34 -424705 1651.1
+-309.324 -829109 3165.98
+-11322.9 -1.56183e+06 7354.71
+29749.7 -2.88184e+06 12247.5
+-157696 -5.64627e+06 20450.9
+-1.28338e+06 -9.82935e+06 39575.2
+-2.75626e+06 -1.10133e+07 50428.6
+-1.11097e+06 -4.30206e+06 22753.2
+-341259 -1.33759e+06 8147.75
+-91781 -369997 2638.61
+-22760.9 -94182.6 821.687
+-5544.93 -22338.3 259.805
+-1593.21 -4957.2 89.4921
+-753.328 -1026.46 35.7469
+-591.987 -192.848 15.9009
+-570.395 -27.0512 6.0084
+-576.861 2.88503 -0.686517
+-589.103 6.16696 -6.05531
+-602.542 4.18725 -10.5963
+-616.072 1.2086 -14.4107
+-629.322 -1.76501 -17.4815
+-642.077 -4.42196 -19.7674
+-654.139 -6.65474 -21.2458
+-665.307 -8.4346 -21.9315
+-675.402 -9.76118 -21.882
+-684.294 -10.6419 -21.1904
+-691.928 -11.0888 -19.9735
+-698.329 -11.1238 -18.3579
+-703.588 -10.7846 -16.4684
+-707.841 -10.1278 -14.4197
+-711.241 -9.22634 -12.312
+-713.939 -8.1637 -10.2294
+-716.067 -7.02604 -8.24031
+-717.733 -5.89397 -6.39897
+-719.021 -4.83623 -4.74719
+-719.995 -3.90566 -3.31565
+-720.705 -3.13784 -2.12499
+-721.199 -2.55186 -1.18642
+-721.519 -2.15254 -0.502356
+-721.712 -1.93334 -0.0669564
+-721.826 -1.87938 0.133064
+-721.911 -1.97016 0.117444
+-722.015 -2.18197 -0.0887998
+-722.185 -2.48981 -0.456646
+-722.463 -2.86879 -0.954386
+-722.883 -3.29486 -1.54893
+0 -3.74496 -2.20708
+8371.97 -70.0147 -61.9208
+8355.85 -68.4788 -58.8479
+8340.6 -66.3287 -55.1359
+8326.27 -63.6985 -50.9773
+8312.89 -60.7559 -46.6149
+8300.39 -57.7072 -42.3377
+8288.65 -54.7966 -38.4748
+8277.47 -52.2994 -35.385
+8266.59 -50.51 -33.4452
+8255.69 -49.723 -33.0346
+8244.36 -50.2108 -34.5177
+8232.14 -52.1947 -38.2244
+8218.45 -55.8145 -44.4288
+8202.56 -61.0972 -53.3258
+8183.61 -67.9302 -65.0063
+8160.54 -76.0432 -79.4301
+8132.08 -85.0034 -96.3962
+8096.81 -94.2262 -115.513
+8053.18 -103.002 -136.17
+7999.68 -110.535 -157.514
+7934.96 -115.988 -178.439
+7858 -118.523 -197.596
+7768.31 -117.342 -213.426
+7666.05 -111.715 -224.239
+7552.05 -101.038 -228.31
+7427.85 -84.9323 -224.007
+7295.75 -63.4786 -209.911
+7159.14 -37.6502 -184.887
+7023.45 -10.2091 -148.066
+6899.02 11.8754 -98.6516
+6810.79 8.28657 -35.4527
+6835.79 -94.2036 44.2844
+7254.49 -591.457 148.025
+9135.71 -2687.27 297.114
+16409.6 -11048.4 553.38
+42354.1 -42466.9 1092.92
+126366 -151927 2395.02
+363031 -498563 5657.68
+891105 -1.46411e+06 13406.2
+1.55939e+06 -3.66307e+06 29005.4
+802431 -6.90609e+06 49258.1
+158850 -6.22056e+06 42682.5
+4000.18 -3.81756e+06 26142.9
+5638.07 -2.05209e+06 15301.6
+-154.398 -1.11576e+06 8746.38
+-2230.14 -596356 4406.39
+777.681 -311506 2343.35
+301.691 -168329 1374.63
+-399.527 -90225.8 671.672
+85.7842 -46449 321.283
+100.502 -24785.7 200.718
+-73.6831 -13377.1 102.192
+3.11793 -6817.53 42.9613
+25.8991 -3615.37 29.0025
+-14.0815 -2003.34 15.8131
+-2.24881 -1028.85 5.06362
+6.46414 -555.325 4.26687
+-3.00947 -335.729 3.23439
+-0.728881 -193.504 0.742812
+1.87744 -135.572 0.680419
+-2.37663 -134.313 1.36424
+1.21278 -152.823 0.726571
+2.96098 -239.931 1.0374
+-8.31263 -429.583 4.18931
+4.07332 -726.584 5.40088
+16.0007 -1369.85 7.06359
+-34.8518 -2671.29 21.7292
+2.52777 -4846.19 38.6064
+91.3845 -9222.41 58.9537
+-144.866 -18118.6 141.894
+-86.6504 -33636.5 274.44
+533.486 -63430.1 444.091
+-484.336 -123571 940.679
+-988.145 -231004 1912.11
+3122.5 -429912 3260.01
+-266.597 -828072 6181.55
+-8299.78 -1.55836e+06 12282
+-6502.38 -2.89163e+06 21446.2
+-232385 -5.43507e+06 36641.9
+-1.16166e+06 -8.92568e+06 59881
+-2.24965e+06 -9.95656e+06 69220.6
+-1.27976e+06 -5.29148e+06 40940.8
+-516309 -2.11024e+06 19028.7
+-177036 -712871 8078.82
+-58450.9 -213940 3442.13
+-22711.1 -58352.5 1587.24
+-13044.6 -14618.7 822.164
+-10681.1 -3328.44 462.763
+-10220.3 -611.21 255.159
+-10247.5 -2.74154 109.33
+-10406.9 104.401 -6.29845
+-10605.4 88.3639 -103.019
+-10814.6 39.9264 -184.826
+-11024.7 -15.0441 -252.803
+-11231.3 -66.9414 -306.833
+-11431.5 -111.794 -346.506
+-11622.3 -148.249 -371.697
+-11800.3 -176.172 -382.877
+-11962.4 -195.852 -381.19
+-12106.1 -207.653 -368.352
+-12230.2 -211.961 -346.452
+-12334.8 -209.278 -317.721
+-12421 -200.336 -284.34
+-12490.9 -186.155 -248.305
+-12547 -168.015 -211.353
+-12591.5 -147.364 -174.934
+-12626.6 -125.687 -140.226
+-12654 -104.371 -108.158
+-12675.2 -84.5968 -79.4411
+-12691.1 -67.2701 -54.5925
+-12702.6 -52.9975 -33.9556
+-12710.4 -42.0989 -17.7118
+-12715.3 -34.6443 -5.89129
+-12718.1 -30.504 1.61681
+-12719.7 -29.4002 5.05026
+-12720.7 -30.9551 4.75671
+-12722.2 -34.7327 1.17354
+-12724.8 -40.274 -5.19396
+-12729.4 -47.1223 -13.795
+-12736.4 -54.8388 -24.0559
+0 -63.0069 -35.4011
+146231 -1201.59 -1043.17
+145956 -1173.82 -989.791
+145696 -1135.19 -925.26
+145452 -1088.05 -852.92
+145226 -1035.39 -777.002
+145015 -980.927 -702.553
+144817 -929.078 -635.329
+144630 -884.827 -581.625
+144448 -853.519 -548.067
+144267 -840.543 -541.345
+144078 -850.922 -567.912
+143875 -888.832 -633.639
+143647 -957.065 -743.437
+143383 -1056.49 -900.851
+143069 -1185.6 -1107.61
+142686 -1340.17 -1363.14
+142215 -1513.17 -1664.04
+141634 -1694.89 -2003.56
+140918 -1873.4 -2371.05
+140045 -2035.08 -2751.58
+138995 -2165.3 -3125.69
+137755 -2249.07 -3469.54
+136320 -2271.52 -3755.47
+134695 -2218.34 -3953.18
+132897 -2076.65 -4031.43
+130953 -1836.72 -3960.02
+128900 -1495.88 -3711.75
+126790 -1065.67 -3263.53
+124700 -583.776 -2595.93
+122765 -134.053 -1690.45
+121233 111.51 -523.682
+120607 -227.151 943.132
+122015 -2144.57 2783.51
+128275 -8638.53 5145.8
+146794 -29154.2 8337.19
+196490 -92363.4 12983.7
+319847 -277561 20269.9
+587516 -773332 32104
+1.03149e+06 -1.92421e+06 50560
+1.37127e+06 -4.03178e+06 74839.9
+770382 -6.34418e+06 93438.8
+221837 -5.70526e+06 80159.2
+41149.9 -3.65807e+06 53105.4
+13762.2 -2.03677e+06 31769.7
+3514.52 -1.1122e+06 18166.7
+110.325 -596474 9830.35
+1075.8 -314253 5322.67
+519.482 -168695 2945.67
+-63.6696 -90125.1 1545.44
+128.176 -46890.1 800.122
+103.663 -24893.7 442.35
+-19.6537 -13323.1 232.543
+11.8087 -6882.22 116.066
+20.6295 -3641.11 65.0163
+-5.53921 -1986.76 35.0118
+-0.811218 -1038.45 16.7193
+3.56363 -562.156 9.95553
+-2.37077 -331.365 6.161
+-1.48808 -195.355 3.0292
+-0.207591 -137.462 2.23117
+-2.82244 -132.252 2.49958
+-0.988644 -155.336 2.511
+-0.50855 -241.586 3.82896
+-7.5754 -424.477 7.96812
+-1.2752 -736.038 13.0024
+2.84326 -1380.34 22.509
+-30.467 -2650.59 47.346
+-14.6309 -4884.48 87.557
+19.2921 -9300.79 158.154
+-147.238 -18044.7 318.958
+-157.745 -33803.9 606.137
+79.3005 -64003.7 1103.19
+-752.159 -123393 2145.01
+-1433.71 -231576 4094.56
+-162.081 -433620 7427.53
+-5311.17 -827762 13809
+-20024.3 -1.55287e+06 25651.1
+-60300.4 -2.86807e+06 45090.7
+-323962 -5.20094e+06 75823.5
+-1.11995e+06 -8.17618e+06 115040
+-1.98932e+06 -9.1418e+06 134777
+-1.49398e+06 -5.82727e+06 108741
+-847944 -2.77849e+06 73827.2
+-460874 -1.10928e+06 46964.1
+-284922 -392368 29710.7
+-215755 -127034 19181
+-191077 -37893.9 12566.4
+-183498 -9580.45 8083.83
+-182475 -879.18 4779.82
+-184074 1511.56 2179.93
+-186750 1712.36 48.9754
+-189846 1077.48 -1732.02
+-193075 141.669 -3221.17
+-196318 -837.742 -4441.97
+-199524 -1730.16 -5399.53
+-202654 -2477.72 -6093.2
+-205665 -3064.2 -6525.88
+-208499 -3493.33 -6709.59
+-211102 -3775.14 -6666.94
+-213427 -3919.87 -6429.61
+-215447 -3937.09 -6035.05
+-217159 -3837.43 -5522.77
+-218579 -3634.64 -4931.08
+-219734 -3346.81 -4294.9
+-220663 -2996.04 -3644.46
+-221402 -2607.04 -3004.97
+-221985 -2205.05 -2396.8
+-222439 -1813.57 -1835.93
+-222788 -1452.59 -1334.52
+-223049 -1137.42 -901.324
+-223235 -878.27 -542.075
+-223359 -680.401 -259.698
+-223435 -544.789 -54.5111
+-223475 -468.938 75.5858
+-223493 -447.769 134.865
+-223504 -474.444 129.475
+-223523 -541.095 67.0923
+-223563 -639.437 -43.4512
+-223637 -761.244 -192.554
+-223754 -898.647 -370.229
+0 -1044.24 -566.475
+2.43121e+06 -1760.09 -6102.57
+2.42432e+06 -2110.37 -5832.42
+2.41813e+06 -2459.68 -5478.47
+2.4127e+06 -2796.37 -5055.26
+2.40807e+06 -3106.69 -4583.02
+2.40421e+06 -3375.32 -4087.51
+2.40107e+06 -3585.89 -3599.68
+2.39852e+06 -3721.5 -3155.36
+2.39638e+06 -3765.14 -2794.74
+2.39441e+06 -3700.07 -2561.79
+2.3923e+06 -3510.21 -2503.5
+2.38968e+06 -3180.45 -2668.85
+2.38613e+06 -2696.99 -3107.39
+2.38116e+06 -2047.74 -3867.16
+2.37426e+06 -1222.92 -4991.34
+2.3649e+06 -215.831 -6513.43
+2.35254e+06 975.903 -8450.46
+2.33666e+06 2348.71 -10794.4
+2.31685e+06 3890.9 -13502.3
+2.29279e+06 5579.94 -16486.8
+2.26434e+06 7379.08 -19608.3
+2.23159e+06 9233.03 -22672.4
+2.19494e+06 11062 -25433.5
+2.15512e+06 12752.5 -27607.2
+2.11328e+06 14142.8 -28889.5
+2.07102e+06 14998.1 -28978
+2.03041e+06 14969.5 -27584.9
+1.9942e+06 13527.6 -24429.6
+1.96593e+06 9854.77 -19195.3
+1.95035e+06 2667.97 -11438.5
+1.95413e+06 -10094.2 -442.846
+1.98701e+06 -31880.6 15005.2
+2.06382e+06 -68819.7 36981.8
+2.20765e+06 -132548 69079.6
+2.45398e+06 -246204 117539
+2.85178e+06 -455687 192739
+3.4471e+06 -845502 309540
+4.21181e+06 -1.54374e+06 481681
+4.87099e+06 -2.66113e+06 701931
+4.7224e+06 -4.06242e+06 906611
+3.12042e+06 -4.99297e+06 963072
+1.52661e+06 -4.33031e+06 780405
+657655 -2.93199e+06 518137
+289602 -1.74981e+06 309923
+127969 -994055 176887
+57396.2 -548368 98232.2
+28457 -296695 53766.7
+13942.9 -159972 29240.3
+6515.9 -85632.9 15741.8
+3433.86 -45286.1 8408.27
+1787.07 -24004.1 4493.61
+814.026 -12737.1 2391.01
+428.089 -6689.65 1264.54
+226.796 -3539.09 673.865
+84.0778 -1896.45 360.757
+30.018 -1011.18 193.052
+4.302 -550.609 106.073
+-20.1721 -315.009 60.6091
+-29.8431 -190.367 36.6171
+-35.6156 -134.857 26.1108
+-45.2839 -125.538 24.3746
+-51.2843 -152.881 29.7293
+-63.7801 -234.797 45.4509
+-94.2157 -404.3 78.3877
+-126.894 -721.713 140.009
+-200.692 -1341.93 257.985
+-388.343 -2532.7 485.455
+-652.87 -4753 911.512
+-1182.64 -9032.28 1719.49
+-2495.99 -17256.5 3264.91
+-4700.58 -32629.4 6158.79
+-8924.59 -61799.7 11573.5
+-19096 -117249 21767.1
+-38863.1 -219784 40635.4
+-78730.6 -409506 75209
+-176621 -761165 138627
+-401082 -1.38943e+06 252492
+-915638 -2.46836e+06 448734
+-2.1391e+06 -4.18232e+06 762335
+-4.39069e+06 -6.24182e+06 1.16429e+06
+-6.65526e+06 -7.24128e+06 1.44703e+06
+-6.85595e+06 -5.88127e+06 1.35915e+06
+-5.91355e+06 -3.82401e+06 1.04361e+06
+-4.82898e+06 -2.19255e+06 707742
+-3.99067e+06 -1.18402e+06 448951
+-3.43441e+06 -629037 276183
+-3.09192e+06 -335364 166723
+-2.89256e+06 -178101 97180.8
+-2.7861e+06 -90650.8 51641.2
+-2.7404e+06 -40128.1 20660.5
+-2.73533e+06 -10300.2 -1229.69
+-2.75802e+06 7279.38 -17245.6
+-2.79999e+06 17342.8 -29251.3
+-2.85526e+06 22708.8 -38233.2
+-2.91932e+06 25112 -44623.5
+-2.98846e+06 25630 -48571.4
+-3.05951e+06 24934 -50160.6
+-3.12974e+06 23447.3 -49550.9
+-3.19686e+06 21446.2 -47034.2
+-3.25908e+06 19121.3 -43021.5
+-3.31511e+06 16611.6 -37990.1
+-3.36418e+06 14022.3 -32419.2
+-3.40593e+06 11433.9 -26734.6
+-3.44039e+06 8906.77 -21274.4
+-3.46785e+06 6485.39 -16276.3
+-3.48882e+06 4201.56 -11883
+-3.50394e+06 2078.01 -8158.89
+-3.5139e+06 131.569 -5112.03
+-3.51947e+06 -1624.48 -2714.4
+-3.52141e+06 -3178.89 -918.653
+-3.52047e+06 -4521.93 330.808
+-3.51739e+06 -5645.61 1091.71
+-3.51286e+06 -6544.34 1421.37
+-3.50754e+06 -7215.82 1376.18
+-3.50205e+06 -7661.85 1011.77
+-3.49691e+06 -7888.79 383.217
+-3.49259e+06 -7907.85 -454.906
+-3.4895e+06 -7734.84 -1448.68
+-3.48793e+06 -7389.6 -2545.17
+-3.48812e+06 -6894.93 -3693.12
+0 -6275.23 -4844.09
+4.98595e+06 -3421.09 -11800.6
+4.97421e+06 -4961.91 -11385
+4.96426e+06 -6537.7 -10768.2
+4.95626e+06 -8091.43 -9964.83
+4.9503e+06 -9556.12 -9002.14
+4.94635e+06 -10856.7 -7920.73
+4.94429e+06 -11912.5 -6775.46
+4.94383e+06 -12639.6 -5636.04
+4.94457e+06 -12953.6 -4587.21
+4.94593e+06 -12773.3 -3728.49
+4.94718e+06 -12023.7 -3173.18
+4.94743e+06 -10639.6 -3046.26
+4.94565e+06 -8569.48 -3480.95
+4.9407e+06 -5779.13 -4612.95
+4.93131e+06 -2255.99 -6571.71
+4.91618e+06 1986.75 -9467.68
+4.89403e+06 6905.47 -13375.1
+4.86364e+06 12421.2 -18310.7
+4.824e+06 18414.2 -24208.5
+4.77439e+06 24718.4 -30895.6
+4.71457e+06 31114.9 -38070
+4.64486e+06 37325.1 -45288.2
+4.56634e+06 43000.7 -51965.1
+4.48095e+06 47709.8 -57391.2
+4.39161e+06 50912.9 -60764.5
+4.3023e+06 51921.8 -61228.2
+4.21809e+06 49831.6 -57897.1
+4.14526e+06 43408.4 -49844.4
+4.09134e+06 30914.1 -36016.7
+4.06545e+06 9831.86 -15045
+4.07861e+06 -23578.2 15083.3
+4.1443e+06 -75046.5 57551.6
+4.27895e+06 -153700 117578
+4.50138e+06 -274632 203890
+4.82905e+06 -463119 331110
+5.26484e+06 -759702 522638
+5.76359e+06 -1.22048e+06 810751
+6.17013e+06 -1.89587e+06 1.22385e+06
+6.1601e+06 -2.75906e+06 1.74337e+06
+5.32946e+06 -3.57761e+06 2.22676e+06
+3.66743e+06 -3.85952e+06 2.3771e+06
+2.09016e+06 -3.23649e+06 1.97841e+06
+1.07624e+06 -2.24276e+06 1.36343e+06
+534695 -1.3941e+06 844733
+261094 -819536 495925
+127189 -465067 281511
+62992.1 -257716 156330
+31302.6 -140876 85755.1
+15519.8 -76129.8 46523.4
+7847.28 -40715.5 24989.7
+3973.44 -21685.4 13375.3
+1969.72 -11520.4 7137.68
+983.382 -6095.33 3791.74
+478.389 -3233.32 2020.23
+204.61 -1726.6 1082.72
+67.0771 -926.616 582.419
+-5.0971 -506.267 319.161
+-48.2773 -287.56 181.752
+-72.6459 -175.009 110.649
+-89.2398 -124.361 78.7644
+-105.626 -114.838 72.9649
+-124.161 -141.143 89.7136
+-154.083 -215.788 137.214
+-208.741 -369.431 234.925
+-302.441 -663.938 421.052
+-484.734 -1229.31 777.148
+-848.484 -2306.73 1454.45
+-1523.95 -4343.55 2728.08
+-2856.54 -8227.04 5143.91
+-5566.89 -15608.2 9718.4
+-10817.8 -29483.2 18272.9
+-21279.9 -55553.2 34260.4
+-42858 -104232 64003.7
+-86265.9 -193592 118418
+-174609 -355771 216893
+-359744 -645814 392989
+-739662 -1.1469e+06 697950
+-1.49645e+06 -1.97117e+06 1.20161e+06
+-2.92535e+06 -3.21155e+06 1.96467e+06
+-5.16463e+06 -4.69084e+06 2.88576e+06
+-7.52885e+06 -5.63019e+06 3.49073e+06
+-8.68843e+06 -5.20268e+06 3.26325e+06
+-8.67141e+06 -3.97449e+06 2.53586e+06
+-8.07048e+06 -2.69597e+06 1.76245e+06
+-7.35121e+06 -1.71229e+06 1.1557e+06
+-6.72949e+06 -1.0539e+06 738432
+-6.26382e+06 -637840 464350
+-5.9469e+06 -377109 283705
+-5.75324e+06 -210968 161441
+-5.65697e+06 -102721 76037.7
+-5.63643e+06 -31062.4 14731.9
+-5.67436e+06 16619.1 -30075.5
+-5.75687e+06 48110.3 -62877.2
+-5.87235e+06 68394.2 -86233.8
+-6.0107e+06 80720.7 -101558
+-6.16289e+06 87230.4 -109712
+-6.32083e+06 89357.6 -111431
+-6.47744e+06 88100.2 -107586
+-6.62684e+06 84197.5 -99252.9
+-6.76444e+06 78237.2 -87676.5
+-6.88701e+06 70715.5 -74148.6
+-6.99258e+06 62066.6 -59882.2
+-7.08032e+06 52675.2 -45907.5
+-7.15033e+06 42882.3 -33011.3
+-7.20346e+06 32988 -21720.7
+-7.24104e+06 23254.3 -12322.2
+-7.26477e+06 13907.3 -4903.9
+-7.27653e+06 5140.5 592.839
+-7.27829e+06 -2883.86 4323.63
+-7.27201e+06 -10033.4 6498.88
+-7.2596e+06 -16205.2 7352.6
+-7.24289e+06 -21326.5 7121.69
+-7.22356e+06 -25354.3 6033.57
+-7.20315e+06 -28276 4299.2
+-7.18303e+06 -30108.1 2109.4
+-7.16437e+06 -30895.2 -366.985
+-7.14818e+06 -30706.8 -2983.63
+-7.13526e+06 -29634.5 -5616.24
+-7.12621e+06 -27786.8 -8161.3
+-7.12146e+06 -25284.5 -10534.8
+0 -22254.7 -12671.1
+7.62188e+06 -5436.63 -18008.8
+7.60352e+06 -8480.7 -17448.8
+7.58752e+06 -11607.2 -16551
+7.57417e+06 -14701 -15328
+7.56364e+06 -17627.6 -13813.1
+7.55597e+06 -20236.4 -12062.3
+7.55107e+06 -22365.9 -10156.4
+7.54862e+06 -23848.6 -8202.94
+7.54812e+06 -24517.3 -6337.42
+7.54884e+06 -24212.6 -4723.37
+7.54983e+06 -22790 -3551.16
+7.54988e+06 -20127.9 -3034.81
+7.54759e+06 -16136.2 -3406.08
+7.54135e+06 -10764.5 -4904.67
+7.52937e+06 -4009.79 -7763.32
+7.50981e+06 4074.76 -12186.2
+7.48077e+06 13372.5 -18320.1
+7.4405e+06 23695.6 -26218.1
+7.38747e+06 34777.9 -35798.9
+7.3206e+06 46268.7 -46803.4
+7.23945e+06 57726.2 -58756.7
+7.1444e+06 68612.3 -70941.9
+7.03691e+06 78285.8 -82392.8
+6.91969e+06 85991.9 -91911
+6.79682e+06 90843.1 -98105.8
+6.67381e+06 91783.2 -99445.8
+6.55763e+06 87520.4 -94295
+6.45659e+06 76415.2 -80894.6
+6.38028e+06 56300.4 -57239.9
+6.33951e+06 24204.2 -20797.3
+6.34617e+06 -24074.8 32000.4
+6.41301e+06 -94642 106589
+6.55271e+06 -196607 211671
+6.77498e+06 -343779 361630
+7.07878e+06 -556677 580456
+7.43446e+06 -862863 906592
+7.75016e+06 -1.28968e+06 1.39348e+06
+7.82937e+06 -1.83859e+06 2.08946e+06
+7.37018e+06 -2.43366e+06 2.96743e+06
+6.12353e+06 -2.87078e+06 3.79563e+06
+4.26918e+06 -2.86959e+06 4.07852e+06
+2.56796e+06 -2.34393e+06 3.4374e+06
+1.41239e+06 -1.638e+06 2.40493e+06
+742634 -1.04174e+06 1.5111e+06
+380824 -627313 897691
+193126 -364012 514613
+97977.6 -205652 287953
+49676 -114009 158855
+25153.4 -62270.3 86611.8
+12802.6 -33617.4 46721
+6512.28 -18017.7 25084
+3277.08 -9611.69 13427.1
+1631.94 -5111.34 7155.24
+784.394 -2720.45 3819.58
+337.506 -1454.35 2051.39
+104.588 -783.201 1106.99
+-19.5007 -429.029 607.457
+-89.8696 -243.572 346.239
+-131.439 -148.711 211.534
+-160.218 -105.912 150.746
+-186.922 -97.6697 139.425
+-219.286 -120.279 171.566
+-270.069 -183.433 261.89
+-359.446 -313.134 446.76
+-520.833 -562.86 799.86
+-828.366 -1039.04 1473.65
+-1422.52 -1943.14 2748.56
+-2556.83 -3654.39 5143.3
+-4772.03 -6897.1 9674.8
+-9140.74 -13019.9 18212.9
+-17659.1 -24493.8 34123.8
+-34444.7 -45860.8 63742.6
+-67856.5 -85251.6 118487
+-133820 -156695 217948
+-264197 -284003 396520
+-522430 -505886 712104
+-1.02257e+06 -879314 1.25049e+06
+-1.95467e+06 -1.47706e+06 2.12441e+06
+-3.57793e+06 -2.35517e+06 3.42076e+06
+-5.98924e+06 -3.41469e+06 4.94605e+06
+-8.62405e+06 -4.20907e+06 5.9078e+06
+-1.03669e+07 -4.19762e+06 5.48722e+06
+-1.09718e+07 -3.52277e+06 4.25879e+06
+-1.08163e+07 -2.62565e+06 2.97008e+06
+-1.03399e+07 -1.81724e+06 1.96212e+06
+-9.81923e+06 -1.20394e+06 1.2665e+06
+-9.37833e+06 -773965 805525
+-9.05482e+06 -480054 497894
+-8.84869e+06 -278392 286831
+-8.74699e+06 -138048 137636
+-8.73382e+06 -39098 29760.4
+-8.7936e+06 31122.7 -49063.1
+-8.91177e+06 80811.7 -106194
+-9.07459e+06 115373 -146006
+-9.26896e+06 138408 -171142
+-9.48244e+06 152345 -183421
+-9.7035e+06 158880 -184479
+-9.92194e+06 159274 -176115
+-1.01292e+07 154551 -160389
+-1.03187e+07 145607 -139540
+-1.04859e+07 133271 -115805
+-1.06282e+07 118321 -91230
+-1.07445e+07 101492 -67520.1
+-1.08354e+07 83469 -45955.9
+-1.09024e+07 64882.1 -27377.6
+-1.09478e+07 46302.7 -12222
+-1.09743e+07 28240.7 -593.236
+-1.09848e+07 11141.6 7652.76
+-1.09824e+07 -4614.42 12825.8
+-1.09701e+07 -18715 15331.1
+-1.09507e+07 -30916.5 15615.4
+-1.09267e+07 -41045.6 14129.6
+-1.09004e+07 -48998.8 11304.8
+-1.08741e+07 -54741.2 7536.94
+-1.08493e+07 -58303.1 3178.86
+-1.08276e+07 -59774.9 -1464.93
+-1.08101e+07 -59300.2 -6139.46
+-1.07977e+07 -57067.1 -10638.4
+-1.07911e+07 -53298.5 -14800.7
+-1.07905e+07 -48241.2 -18507.4
+0 -42155.1 -21677.2
+9.70042e+06 -6354.68 -23557.4
+9.67369e+06 -10200.2 -22842.3
+9.64878e+06 -14155.4 -21666.9
+9.62609e+06 -18073.3 -20044.4
+9.60594e+06 -21782.8 -18015.9
+9.58853e+06 -25093.1 -15653.4
+9.57393e+06 -27799.4 -13063.3
+9.562e+06 -29690.1 -10389.1
+9.55244e+06 -30555.6 -7813.09
+9.54469e+06 -30197.1 -5557.03
+9.53795e+06 -28436.9 -3880.23
+9.53116e+06 -25129.5 -3075.41
+9.523e+06 -20171.6 -3460.66
+9.51189e+06 -13513.4 -5366.22
+9.49604e+06 -5168.34 -9114.34
+9.47352e+06 4777.53 -14990.5
+9.44229e+06 16156.9 -23204.8
+9.40038e+06 28714.2 -33844.3
+9.34603e+06 42099.4 -46817.4
+9.27787e+06 55864.2 -61796.6
+9.19516e+06 69458.8 -78165.7
+9.09806e+06 82231.3 -94980.6
+8.98781e+06 93426.9 -110955
+8.867e+06 102187 -124472
+8.7397e+06 107539 -133631
+8.61151e+06 108376 -136304
+8.4895e+06 103408 -130175
+8.3821e+06 91066.4 -112722
+8.2989e+06 69357.5 -81060.5
+8.25034e+06 35624 -31589.7
+8.24739e+06 -13793.3 40650.9
+8.30094e+06 -84045.8 143076
+8.4202e+06 -182468 287436
+8.60885e+06 -319427 493135
+8.85597e+06 -508789 792750
+9.11735e+06 -766070 1.23908e+06
+9.28401e+06 -1.09994e+06 1.90671e+06
+9.14895e+06 -1.49176e+06 2.86554e+06
+8.42422e+06 -1.86566e+06 4.08435e+06
+6.91078e+06 -2.07757e+06 5.24937e+06
+4.84217e+06 -1.98165e+06 5.67406e+06
+2.96872e+06 -1.58817e+06 4.8179e+06
+1.67488e+06 -1.11224e+06 3.39951e+06
+903715 -716317 2.15447e+06
+474956 -438188 1.29034e+06
+246172 -258361 745228
+127087 -148085 419705
+65401.8 -83045.7 232830
+33551.6 -45772.2 127590
+17234.2 -24896.2 69139.3
+8830.64 -13418 37262.6
+4475.37 -7187.83 20017.2
+2233.91 -3837.13 10703.4
+1071.14 -2048.38 5729.73
+457.113 -1097.3 3085.78
+133.671 -592.389 1670.29
+-39.6664 -325.204 918.671
+-137.555 -184.855 524.754
+-196.074 -113.118 321.628
+-236.812 -80.7237 229.623
+-274.281 -74.4693 212.296
+-320.146 -91.7188 261.036
+-391.575 -139.609 397.444
+-515.942 -237.792 675.694
+-741.286 -426.805 1206.87
+-1167.56 -785.981 2217.65
+-1982.72 -1466.12 4122.51
+-3536.13 -2751.35 7690.64
+-6545.86 -5176.82 14419.5
+-12410.2 -9735.22 27040.3
+-23756 -18239.4 50458.9
+-45849.7 -33962.7 93840.2
+-89064 -62672.1 173528
+-172928 -114177 317350
+-335279 -204635 573701
+-648275 -359458 1.02276e+06
+-1.2375e+06 -615370 1.78119e+06
+-2.30439e+06 -1.0186e+06 2.99944e+06
+-4.11133e+06 -1.60545e+06 4.7867e+06
+-6.75267e+06 -2.32432e+06 6.86314e+06
+-9.67925e+06 -2.92108e+06 8.13918e+06
+-1.17934e+07 -3.05421e+06 7.51554e+06
+-1.27689e+07 -2.71526e+06 5.80425e+06
+-1.29104e+07 -2.14165e+06 4.03252e+06
+-1.26385e+07 -1.55848e+06 2.65779e+06
+-1.22463e+07 -1.07625e+06 1.71386e+06
+-1.18827e+07 -714718 1.0895e+06
+-1.16058e+07 -453960 672234
+-1.14293e+07 -266979 384891
+-1.13484e+07 -131763 180949
+-1.1352e+07 -32898 33144
+-1.14272e+07 39936.8 -74727
+-1.15604e+07 93593.3 -152443
+-1.17383e+07 132605 -205941
+-1.19474e+07 159961 -238958
+-1.21744e+07 177654 -254194
+-1.24072e+07 187088 -254101
+-1.26347e+07 189350 -241310
+-1.2848e+07 185389 -218741
+-1.30403e+07 176112 -189484
+-1.32072e+07 162414 -156578
+-1.33464e+07 145193 -122766
+-1.34578e+07 125328 -90315.7
+-1.35425e+07 103673 -60920.4
+-1.36029e+07 81035.4 -35682.9
+-1.36422e+07 58167.1 -15169
+-1.36639e+07 35750.5 498.76
+-1.36715e+07 14392.4 11529.4
+-1.36686e+07 -5384.08 18354.4
+-1.36584e+07 -23145.1 21535.3
+-1.3644e+07 -38550.5 21691.2
+-1.36279e+07 -51355.9 19448.4
+-1.36124e+07 -61413 15406.9
+-1.35991e+07 -68666.9 10118.6
+-1.35896e+07 -73151 4074.64
+-1.35849e+07 -74978.8 -2302.11
+-1.35857e+07 -74334.2 -8659.62
+-1.35923e+07 -71459.1 -14715.7
+-1.36049e+07 -66640.4 -20254.1
+-1.36234e+07 -60195.6 -25118.6
+0 -52458.2 -29207.7
+1.10291e+07 -5162.11 -27728.1
+1.09938e+07 -8388.02 -26857.1
+1.09589e+07 -11707.6 -25436.1
+1.0925e+07 -14997.1 -23482.2
+1.08926e+07 -18112.3 -21045.6
+1.0862e+07 -20892.9 -18213.9
+1.08335e+07 -23166.8 -15115.6
+1.08074e+07 -24757.2 -11923.7
+1.07837e+07 -25489.1 -8857.12
+1.07623e+07 -25197.6 -6181.38
+1.07428e+07 -23737.1 -4206.4
+1.07246e+07 -20989.8 -3281.22
+1.07068e+07 -16875.6 -3784.36
+1.06883e+07 -11360.2 -6108.31
+1.06676e+07 -4464.16 -10635.9
+1.0643e+07 3730.51 -17706.8
+1.06128e+07 13073.8 -27573
+1.0575e+07 23342.9 -40342.9
+1.05277e+07 34239.5 -55917.3
+1.04695e+07 45387.7 -73922.3
+1.03992e+07 56334.9 -93646.8
+1.03166e+07 66553.6 -113995
+1.02222e+07 75444.8 -133466
+1.01181e+07 82341.5 -150162
+1.00074e+07 86507.3 -161837
+9.89498e+06 87125.5 -165952
+9.787e+06 83269.5 -159723
+9.69092e+06 73840.9 -140090
+9.61525e+06 57464 -103549
+9.56919e+06 32327.2 -45745.5
+9.5622e+06 -4037.15 39259.4
+9.60318e+06 -55034.8 160263
+9.69875e+06 -125345 331148
+9.84923e+06 -221217 574895
+1.00397e+07 -350289 930375
+1.02219e+07 -519664 1.46128e+06
+1.02845e+07 -729776 2.25886e+06
+1.00218e+07 -961985 3.41103e+06
+9.15124e+06 -1.16417e+06 4.88599e+06
+7.48131e+06 -1.25338e+06 6.30991e+06
+5.25566e+06 -1.16287e+06 6.85087e+06
+3.24703e+06 -920521 5.84292e+06
+1.8524e+06 -644574 4.14425e+06
+1.01258e+06 -417842 2.64247e+06
+539433 -258007 1.59286e+06
+283242 -153685 925800
+147935 -88936.5 524508
+76909.1 -50276.4 292557
+39798.5 -27890.6 161122
+20586.4 -15249.7 87702.5
+10609 -8251.92 47454.2
+5400.89 -4434 25585
+2701.55 -2373.2 13727.5
+1293.68 -1269.56 7370.64
+546.96 -681.245 3980.62
+151.438 -368.398 2160.74
+-61.3863 -202.549 1191.4
+-181.911 -115.28 682.213
+-254.405 -70.6596 419.316
+-305.057 -50.5048 299.935
+-351.606 -46.6224 277.323
+-408.637 -57.4057 340.583
+-497.096 -87.2538 517.264
+-650.18 -148.368 876.749
+-926.651 -265.918 1561.83
+-1447.19 -488.862 2862.01
+-2436.9 -910.255 5304.09
+-4314.19 -1705.21 9864.34
+-7930.17 -3201.58 18432.7
+-14924.7 -6005.24 34435.4
+-28357.7 -11217.4 63998.9
+-54288.6 -20805.6 118495
+-104462 -38197.8 218024
+-200650 -69154.2 396528
+-384322 -122987 712537
+-733134 -214060 1.26205e+06
+-1.38002e+06 -362947 2.18313e+06
+-2.53568e+06 -595617 3.65193e+06
+-4.47297e+06 -933307 5.79382e+06
+-7.29122e+06 -1.352e+06 8.26856e+06
+-1.04289e+07 -1.72078e+06 9.76791e+06
+-1.27616e+07 -1.85058e+06 8.98029e+06
+-1.39464e+07 -1.70209e+06 6.90071e+06
+-1.42729e+07 -1.38759e+06 4.76886e+06
+-1.41522e+07 -1.03932e+06 3.12718e+06
+-1.38758e+07 -734778 2.00723e+06
+-1.35972e+07 -496760 1.26988e+06
+-1.33809e+07 -319451 778216
+-1.32461e+07 -189000 439697
+-1.31924e+07 -92612 199265
+-1.32116e+07 -20713.2 24975.9
+-1.32929e+07 33366.9 -102058
+-1.34242e+07 74135.2 -193248
+-1.3593e+07 104558 -255586
+-1.37868e+07 126544 -293546
+-1.39932e+07 141326 -310418
+-1.42007e+07 149753 -309199
+-1.43993e+07 152499 -293071
+-1.45812e+07 150186 -265523
+-1.47408e+07 143449 -230210
+-1.48749e+07 132956 -190700
+-1.49826e+07 119403 -150201
+-1.5065e+07 103498 -111359
+-1.51244e+07 85944.9 -76147.2
+-1.51642e+07 67423.7 -45850.8
+-1.51881e+07 48577.1 -21132.5
+-1.52004e+07 29997.3 -2140.24
+-1.52047e+07 12215.7 11363.8
+-1.52047e+07 -4305.54 19877.9
+-1.52034e+07 -19181.2 24053.8
+-1.52033e+07 -32107.3 24613.3
+-1.52065e+07 -42864.4 22290.3
+-1.52143e+07 -51317.7 17790.7
+-1.52278e+07 -57414.4 11767.2
+-1.52475e+07 -61179.2 4803.79
+-1.52734e+07 -62706.4 -2594.43
+-1.53054e+07 -62151.3 -10004.8
+-1.5343e+07 -59719.2 -17086.6
+-1.53855e+07 -55653.3 -23577.1
+-1.54321e+07 -50223.1 -29285.4
+0 -43711.3 -34086
+1.17161e+07 -1986.87 -30248.3
+1.16744e+07 -3243.83 -29256.6
+1.16317e+07 -4537.54 -27662.6
+1.15888e+07 -5819.63 -25487.8
+1.15461e+07 -7033.85 -22790.2
+1.15043e+07 -8117.61 -19669.1
+1.14638e+07 -9003.94 -16268.3
+1.14253e+07 -9623.94 -12779.9
+1.1389e+07 -9909.68 -9446.11
+1.13554e+07 -9797.37 -6558.87
+1.13243e+07 -9230.88 -4457.76
+1.12958e+07 -8165.31 -3523.85
+1.12692e+07 -6570.61 -4169.14
+1.12441e+07 -4435.06 -6819.67
+1.12192e+07 -1768.36 -11890.2
+1.11933e+07 1395.58 -19748.1
+1.11648e+07 4996.5 -30666
+1.11319e+07 8946.16 -44761.7
+1.10929e+07 13127.5 -61930.3
+1.10459e+07 17394.4 -81771.4
+1.09896e+07 21572.5 -103522
+1.09234e+07 25460.4 -126007
+1.08472e+07 28831.7 -147610
+1.07623e+07 31436.9 -166287
+1.06712e+07 33004 -179608
+1.05778e+07 33235.2 -184820
+1.04872e+07 31796.4 -178891
+1.04059e+07 28295.7 -158478
+1.03413e+07 22244.4 -119743
+1.03014e+07 13000.4 -57931.2
+1.02942e+07 -307.628 33420.9
+1.03271e+07 -18869.6 163849
+1.04048e+07 -44287.6 348380
+1.05257e+07 -78630.7 611942
+1.06739e+07 -124293 996925
+1.08013e+07 -183223 1.57332e+06
+1.07996e+07 -254737 2.44238e+06
+1.04679e+07 -331434 3.70339e+06
+9.52704e+06 -395026 5.32565e+06
+7.78248e+06 -418658 6.90154e+06
+5.47531e+06 -383412 7.5143e+06
+3.39466e+06 -301661 6.42373e+06
+1.94715e+06 -211131 4.56951e+06
+1.07167e+06 -137242 2.92495e+06
+575215 -85112.7 1.77101e+06
+304319 -50951.2 1.03403e+06
+160073 -29626.6 588424
+83738.2 -16816.9 329581
+43559.8 -9360.45 182204
+22630.9 -5131.82 99516
+11705 -2782.71 54011
+5974.6 -1497.6 29202.8
+2992.1 -802.595 15710
+1431.31 -429.814 8454.73
+601 -230.844 4575.68
+159.853 -124.94 2488.88
+-78.1664 -68.7464 1375.04
+-213.339 -39.1548 788.888
+-294.914 -24.021 485.831
+-352.04 -17.1847 347.994
+-404.564 -15.8706 321.814
+-468.881 -19.537 394.836
+-568.406 -29.6716 598.587
+-740.048 -50.4087 1012.46
+-1049.08 -90.2732 1799.87
+-1629.13 -165.813 3291.21
+-2728.44 -308.46 6085.96
+-4806.95 -577.311 11292.4
+-8796.13 -1082.75 21047.2
+-16479.1 -2028.33 39206.6
+-31162.9 -3782.92 72641
+-59354.5 -7002.28 134044
+-113554 -12822.1 245718
+-216679 -23138.4 445055
+-411955 -40988.4 796152
+-779680 -71016 1.40356e+06
+-1.45625e+06 -119851 2.41658e+06
+-2.657e+06 -195906 4.02484e+06
+-4.66145e+06 -306238 6.36327e+06
+-7.57328e+06 -443928 9.06048e+06
+-1.08213e+07 -568576 1.06842e+07
+-1.3261e+07 -619631 9.79654e+06
+-1.45518e+07 -579061 7.50087e+06
+-1.4984e+07 -479388 5.16184e+06
+-1.49618e+07 -363901 3.37012e+06
+-1.477e+07 -260078 2.15381e+06
+-1.45591e+07 -177283 1.35622e+06
+-1.43936e+07 -114651 825660
+-1.42945e+07 -68013.5 460723
+-1.42637e+07 -33215.5 201587
+-1.42947e+07 -7026.54 13785.3
+-1.43782e+07 12856.4 -122988
+-1.45032e+07 28004.8 -220999
+-1.46582e+07 39448.9 -287778
+-1.48314e+07 47839.8 -328172
+-1.50114e+07 53586.7 -345758
+-1.5188e+07 56965.2 -343798
+-1.53523e+07 58194.8 -325750
+-1.54979e+07 57486 -295385
+-1.56205e+07 55062.4 -256650
+-1.57186e+07 51167.2 -213386
+-1.57925e+07 46060.5 -169048
+-1.58444e+07 40011.8 -126482
+-1.58778e+07 33292.4 -87814
+-1.58967e+07 26167.6 -54435.7
+-1.59058e+07 18889.9 -27069.6
+-1.59092e+07 11694 -5887.83
+-1.5911e+07 4791.11 9351.32
+-1.59145e+07 -1634.03 19169.9
+-1.59225e+07 -7427.03 24256.2
+-1.59368e+07 -12465.8 25377.2
+-1.59589e+07 -16661.9 23315.7
+-1.59893e+07 -19960.6 18828.4
+-1.60282e+07 -22339.9 12618.5
+-1.60752e+07 -23808.8 5318.42
+-1.61295e+07 -24403.9 -2521.18
+-1.61899e+07 -24185.8 -10436.4
+-1.62553e+07 -23235 -18050.4
+-1.63243e+07 -21646.7 -25069.3
+-1.63954e+07 -19526.6 -31276.7
+0 -16985.5 -36527
+1.19229e+07 1986.86 -31084.2
+1.18787e+07 3243.84 -30046.6
+1.18331e+07 4537.55 -28389.9
+1.17867e+07 5819.63 -26137.2
+1.17401e+07 7033.86 -23349.9
+1.16939e+07 8117.61 -20131.4
+1.16487e+07 9003.94 -16631.2
+1.16053e+07 9623.94 -13048.1
+1.15641e+07 9909.67 -9631.96
+1.15256e+07 9797.37 -6683.67
+1.14899e+07 9230.88 -4552.44
+1.14572e+07 8165.31 -3629.52
+1.14273e+07 6570.61 -4337.34
+1.13994e+07 4435.06 -7112.2
+1.1373e+07 1768.36 -12378.3
+1.13466e+07 -1395.58 -20511.3
+1.13188e+07 -4996.5 -31789.4
+1.1288e+07 -8946.16 -46332.9
+1.12523e+07 -13127.5 -64034.3
+1.121e+07 -17394.4 -84484.9
+1.11596e+07 -21572.5 -106906
+1.11002e+07 -25460.4 -130096
+1.10316e+07 -28831.7 -152407
+1.09548e+07 -31436.9 -171749
+1.08719e+07 -33004 -185638
+1.07864e+07 -33235.1 -191258
+1.07031e+07 -31796.4 -185501
+1.06282e+07 -28295.7 -164941
+1.05685e+07 -22244.4 -125644
+1.05314e+07 -13000.4 -62732.4
+1.05246e+07 307.631 30412.3
+1.05546e+07 18869.6 163546
+1.06255e+07 44287.6 352037
+1.07352e+07 78630.7 621400
+1.08673e+07 124293 1.01511e+06
+1.09747e+07 183223 1.60515e+06
+1.09507e+07 254737 2.49601e+06
+1.05968e+07 331434 3.79079e+06
+9.63525e+06 395026 5.45947e+06
+7.8699e+06 418658 7.08395e+06
+5.53955e+06 383412 7.7204e+06
+3.43826e+06 301661 6.60472e+06
+1.97558e+06 211131 4.7027e+06
+1.08976e+06 137242 3.0143e+06
+586386 85112.7 1.82807e+06
+311028 50951.2 1.06914e+06
+164002 29626.6 609410
+85977.1 16816.9 341877
+44804.6 9360.45 189273
+23313 5131.82 103510
+12072.9 2782.71 56244
+6167.86 1497.6 30443.1
+3090.04 802.595 16393.6
+1477.54 429.814 8830.4
+618.851 230.844 4782.73
+162.172 124.94 2603.49
+-84.4716 68.7464 1439.44
+-224.693 39.1548 826.445
+-309.404 24.021 509.315
+-368.771 17.1847 364.997
+-423.37 15.8706 337.564
+-490.207 19.537 414.008
+-593.554 29.6716 627.248
+-771.588 50.4087 1060.14
+-1091.75 90.2732 1883.16
+-1692.05 165.813 3440.74
+-2828.49 308.46 6357.25
+-4974.9 577.311 11785.7
+-9089.42 1082.75 21945.5
+-17002.1 2028.33 40835.7
+-32099 3782.92 75570.6
+-61029.3 7002.28 139274
+-116529 12822.1 254951
+-221851 23138.4 461066
+-420712 40988.4 823408
+-794126 71016 1.4491e+06
+-1.4794e+06 119851 2.49077e+06
+-2.69307e+06 195906 4.14203e+06
+-4.71664e+06 306238 6.54097e+06
+-7.65538e+06 443928 9.30726e+06
+-1.09354e+07 568576 1.09698e+07
+-1.34059e+07 619631 1.00493e+07
+-1.47292e+07 579061 7.68433e+06
+-1.51966e+07 479388 5.27971e+06
+-1.52096e+07 363901 3.44123e+06
+-1.50496e+07 260078 2.19549e+06
+-1.48649e+07 177283 1.37983e+06
+-1.47195e+07 114651 837788
+-1.46347e+07 68013.5 465118
+-1.4613e+07 33215.5 200531
+-1.46488e+07 7026.54 8800.23
+-1.47331e+07 -12856.4 -130802
+-1.48554e+07 -28004.8 -230792
+-1.50046e+07 -39448.9 -298858
+-1.51691e+07 -47839.9 -339950
+-1.53381e+07 -53586.7 -357726
+-1.55016e+07 -56965.2 -355519
+-1.56516e+07 -58194.8 -336864
+-1.5782e+07 -57486 -305614
+-1.58893e+07 -55062.4 -265800
+-1.59723e+07 -51167.2 -221346
+-1.60322e+07 -46060.5 -175779
+-1.60715e+07 -40011.8 -132008
+-1.60941e+07 -33292.4 -92206.9
+-1.61046e+07 -26167.6 -57800.8
+-1.61075e+07 -18889.9 -29533.2
+-1.61074e+07 -11694 -7586.15
+-1.61083e+07 -4791.11 8280.27
+-1.61133e+07 1634.03 18592.3
+-1.61251e+07 7427.03 24046.9
+-1.61454e+07 12465.8 25422
+-1.61752e+07 16661.9 23513.3
+-1.62148e+07 19960.6 19091.5
+-1.62639e+07 22339.9 12874.4
+-1.63218e+07 23808.8 5508.96
+-1.63874e+07 24403.9 -2440.01
+-1.64592e+07 24185.8 -10495.3
+-1.65357e+07 23235 -18267.7
+-1.66151e+07 21646.7 -25452.5
+-1.66958e+07 19526.6 -31823.8
+0 16985.5 -37228.1
+1.17161e+07 5162.11 -30248.3
+1.16744e+07 8388.02 -29256.6
+1.16317e+07 11707.6 -27662.6
+1.15888e+07 14997.1 -25487.8
+1.15461e+07 18112.3 -22790.2
+1.15043e+07 20892.9 -19669.1
+1.14638e+07 23166.8 -16268.3
+1.14253e+07 24757.2 -12779.9
+1.1389e+07 25489.1 -9446.11
+1.13554e+07 25197.6 -6558.87
+1.13243e+07 23737.1 -4457.76
+1.12958e+07 20989.8 -3523.85
+1.12692e+07 16875.6 -4169.14
+1.12441e+07 11360.2 -6819.67
+1.12192e+07 4464.16 -11890.2
+1.11933e+07 -3730.51 -19748.1
+1.11648e+07 -13073.7 -30666
+1.11319e+07 -23342.9 -44761.7
+1.10929e+07 -34239.5 -61930.3
+1.10459e+07 -45387.7 -81771.4
+1.09896e+07 -56334.9 -103522
+1.09234e+07 -66553.6 -126007
+1.08472e+07 -75444.8 -147610
+1.07623e+07 -82341.5 -166287
+1.06712e+07 -86507.3 -179608
+1.05778e+07 -87125.5 -184820
+1.04872e+07 -83269.5 -178891
+1.04059e+07 -73840.8 -158478
+1.03413e+07 -57464 -119743
+1.03014e+07 -32327.2 -57931.2
+1.02942e+07 4037.16 33420.9
+1.03271e+07 55034.8 163849
+1.04048e+07 125345 348380
+1.05257e+07 221217 611942
+1.06739e+07 350289 996925
+1.08013e+07 519664 1.57332e+06
+1.07996e+07 729776 2.44238e+06
+1.04679e+07 961985 3.70339e+06
+9.52704e+06 1.16417e+06 5.32565e+06
+7.78248e+06 1.25338e+06 6.90154e+06
+5.47531e+06 1.16287e+06 7.5143e+06
+3.39466e+06 920521 6.42373e+06
+1.94715e+06 644574 4.56951e+06
+1.07167e+06 417842 2.92495e+06
+575215 258007 1.77101e+06
+304319 153685 1.03403e+06
+160073 88936.5 588424
+83738.2 50276.4 329581
+43559.8 27890.6 182204
+22630.9 15249.7 99516
+11705 8251.92 54011
+5974.6 4434 29202.8
+2992.1 2373.2 15710
+1431.31 1269.56 8454.73
+601 681.245 4575.68
+159.853 368.398 2488.88
+-78.1664 202.549 1375.04
+-213.339 115.28 788.888
+-294.914 70.6596 485.831
+-352.04 50.5048 347.994
+-404.564 46.6224 321.814
+-468.881 57.4057 394.836
+-568.406 87.2538 598.587
+-740.048 148.368 1012.46
+-1049.08 265.918 1799.87
+-1629.13 488.862 3291.21
+-2728.44 910.255 6085.96
+-4806.95 1705.21 11292.4
+-8796.13 3201.58 21047.2
+-16479.1 6005.24 39206.6
+-31162.9 11217.4 72641
+-59354.5 20805.6 134044
+-113554 38197.8 245718
+-216679 69154.2 445055
+-411955 122987 796152
+-779680 214060 1.40356e+06
+-1.45625e+06 362947 2.41658e+06
+-2.657e+06 595617 4.02484e+06
+-4.66145e+06 933307 6.36327e+06
+-7.57328e+06 1.352e+06 9.06048e+06
+-1.08213e+07 1.72078e+06 1.06842e+07
+-1.3261e+07 1.85058e+06 9.79654e+06
+-1.45518e+07 1.70209e+06 7.50087e+06
+-1.4984e+07 1.38759e+06 5.16184e+06
+-1.49618e+07 1.03932e+06 3.37012e+06
+-1.477e+07 734778 2.15381e+06
+-1.45591e+07 496760 1.35622e+06
+-1.43936e+07 319451 825660
+-1.42945e+07 189000 460723
+-1.42637e+07 92612 201587
+-1.42947e+07 20713.3 13785.3
+-1.43782e+07 -33366.9 -122988
+-1.45032e+07 -74135.2 -220999
+-1.46582e+07 -104558 -287778
+-1.48314e+07 -126544 -328172
+-1.50114e+07 -141326 -345758
+-1.5188e+07 -149753 -343798
+-1.53523e+07 -152499 -325750
+-1.54979e+07 -150186 -295385
+-1.56205e+07 -143449 -256650
+-1.57186e+07 -132956 -213386
+-1.57925e+07 -119403 -169048
+-1.58444e+07 -103498 -126482
+-1.58778e+07 -85944.9 -87814
+-1.58967e+07 -67423.7 -54435.7
+-1.59058e+07 -48577.1 -27069.6
+-1.59092e+07 -29997.3 -5887.83
+-1.5911e+07 -12215.7 9351.32
+-1.59145e+07 4305.54 19169.9
+-1.59225e+07 19181.2 24256.2
+-1.59368e+07 32107.3 25377.2
+-1.59589e+07 42864.4 23315.7
+-1.59893e+07 51317.7 18828.4
+-1.60282e+07 57414.4 12618.5
+-1.60752e+07 61179.2 5318.42
+-1.61295e+07 62706.4 -2521.18
+-1.61899e+07 62151.3 -10436.4
+-1.62553e+07 59719.2 -18050.4
+-1.63243e+07 55653.3 -25069.3
+-1.63954e+07 50223.1 -31276.7
+0 43711.3 -36527
+1.10291e+07 6354.68 -27728.1
+1.09938e+07 10200.2 -26857.1
+1.09589e+07 14155.4 -25436.1
+1.0925e+07 18073.3 -23482.2
+1.08926e+07 21782.8 -21045.6
+1.0862e+07 25093.1 -18213.9
+1.08335e+07 27799.4 -15115.6
+1.08074e+07 29690.1 -11923.7
+1.07837e+07 30555.6 -8857.12
+1.07623e+07 30197.1 -6181.38
+1.07428e+07 28436.9 -4206.4
+1.07246e+07 25129.5 -3281.22
+1.07068e+07 20171.6 -3784.36
+1.06883e+07 13513.4 -6108.31
+1.06676e+07 5168.34 -10635.9
+1.0643e+07 -4777.53 -17706.8
+1.06128e+07 -16156.9 -27573
+1.0575e+07 -28714.2 -40342.9
+1.05277e+07 -42099.4 -55917.3
+1.04695e+07 -55864.2 -73922.3
+1.03992e+07 -69458.8 -93646.8
+1.03166e+07 -82231.3 -113995
+1.02222e+07 -93426.9 -133466
+1.01181e+07 -102187 -150162
+1.00074e+07 -107539 -161837
+9.89498e+06 -108376 -165952
+9.787e+06 -103408 -159723
+9.69092e+06 -91066.4 -140090
+9.61525e+06 -69357.5 -103549
+9.56919e+06 -35624 -45745.5
+9.5622e+06 13793.3 39259.4
+9.60318e+06 84045.8 160263
+9.69875e+06 182468 331148
+9.84923e+06 319427 574895
+1.00397e+07 508789 930375
+1.02219e+07 766070 1.46128e+06
+1.02845e+07 1.09994e+06 2.25886e+06
+1.00218e+07 1.49176e+06 3.41103e+06
+9.15124e+06 1.86566e+06 4.88599e+06
+7.48131e+06 2.07757e+06 6.30991e+06
+5.25566e+06 1.98165e+06 6.85087e+06
+3.24703e+06 1.58817e+06 5.84292e+06
+1.8524e+06 1.11224e+06 4.14425e+06
+1.01258e+06 716317 2.64247e+06
+539433 438188 1.59286e+06
+283242 258361 925800
+147935 148085 524508
+76909.1 83045.7 292557
+39798.5 45772.2 161122
+20586.4 24896.2 87702.5
+10609 13418 47454.2
+5400.89 7187.83 25585
+2701.55 3837.13 13727.5
+1293.68 2048.38 7370.64
+546.96 1097.3 3980.62
+151.438 592.389 2160.74
+-61.3863 325.204 1191.4
+-181.911 184.855 682.213
+-254.405 113.118 419.316
+-305.057 80.7237 299.935
+-351.606 74.4693 277.323
+-408.637 91.7188 340.583
+-497.096 139.609 517.264
+-650.18 237.792 876.749
+-926.651 426.805 1561.83
+-1447.19 785.981 2862.01
+-2436.9 1466.12 5304.09
+-4314.19 2751.35 9864.34
+-7930.17 5176.82 18432.7
+-14924.7 9735.22 34435.4
+-28357.7 18239.4 63998.9
+-54288.6 33962.7 118495
+-104462 62672.1 218024
+-200650 114177 396528
+-384322 204635 712537
+-733134 359458 1.26205e+06
+-1.38002e+06 615370 2.18313e+06
+-2.53568e+06 1.0186e+06 3.65193e+06
+-4.47297e+06 1.60545e+06 5.79382e+06
+-7.29122e+06 2.32432e+06 8.26856e+06
+-1.04289e+07 2.92108e+06 9.76791e+06
+-1.27616e+07 3.05421e+06 8.98029e+06
+-1.39464e+07 2.71526e+06 6.90071e+06
+-1.42729e+07 2.14165e+06 4.76886e+06
+-1.41522e+07 1.55848e+06 3.12718e+06
+-1.38758e+07 1.07625e+06 2.00723e+06
+-1.35972e+07 714718 1.26988e+06
+-1.33809e+07 453960 778216
+-1.32461e+07 266979 439697
+-1.31924e+07 131763 199265
+-1.32116e+07 32898 24975.9
+-1.32929e+07 -39936.8 -102058
+-1.34242e+07 -93593.3 -193248
+-1.3593e+07 -132605 -255586
+-1.37868e+07 -159961 -293546
+-1.39932e+07 -177654 -310418
+-1.42007e+07 -187088 -309199
+-1.43993e+07 -189350 -293071
+-1.45812e+07 -185389 -265523
+-1.47408e+07 -176112 -230210
+-1.48749e+07 -162414 -190700
+-1.49826e+07 -145193 -150201
+-1.5065e+07 -125328 -111359
+-1.51244e+07 -103673 -76147.2
+-1.51642e+07 -81035.4 -45850.8
+-1.51881e+07 -58167.1 -21132.5
+-1.52004e+07 -35750.5 -2140.24
+-1.52047e+07 -14392.4 11363.8
+-1.52047e+07 5384.08 19877.9
+-1.52034e+07 23145.1 24053.7
+-1.52033e+07 38550.5 24613.3
+-1.52065e+07 51355.9 22290.3
+-1.52143e+07 61413 17790.7
+-1.52278e+07 68666.9 11767.2
+-1.52475e+07 73151 4803.79
+-1.52734e+07 74978.8 -2594.43
+-1.53054e+07 74334.2 -10004.8
+-1.5343e+07 71459.1 -17086.6
+-1.53855e+07 66640.4 -23577.1
+-1.54321e+07 60195.6 -29285.4
+0 52458.2 -34086
+9.70042e+06 5436.63 -23557.4
+9.67369e+06 8480.7 -22842.3
+9.64878e+06 11607.2 -21666.9
+9.62609e+06 14701 -20044.4
+9.60594e+06 17627.6 -18015.9
+9.58853e+06 20236.4 -15653.4
+9.57393e+06 22365.9 -13063.3
+9.562e+06 23848.6 -10389.1
+9.55244e+06 24517.3 -7813.09
+9.54469e+06 24212.6 -5557.03
+9.53795e+06 22790 -3880.23
+9.53116e+06 20127.9 -3075.41
+9.523e+06 16136.2 -3460.66
+9.51189e+06 10764.5 -5366.22
+9.49604e+06 4009.79 -9114.34
+9.47352e+06 -4074.76 -14990.5
+9.44229e+06 -13372.5 -23204.8
+9.40038e+06 -23695.6 -33844.3
+9.34603e+06 -34777.9 -46817.4
+9.27787e+06 -46268.6 -61796.6
+9.19516e+06 -57726.2 -78165.7
+9.09806e+06 -68612.3 -94980.6
+8.98781e+06 -78285.8 -110955
+8.867e+06 -85991.9 -124472
+8.7397e+06 -90843.1 -133631
+8.61151e+06 -91783.2 -136304
+8.4895e+06 -87520.4 -130175
+8.3821e+06 -76415.2 -112722
+8.2989e+06 -56300.4 -81060.5
+8.25034e+06 -24204.2 -31589.7
+8.24739e+06 24074.8 40650.9
+8.30094e+06 94642 143076
+8.4202e+06 196607 287436
+8.60885e+06 343779 493135
+8.85597e+06 556677 792750
+9.11735e+06 862863 1.23908e+06
+9.28401e+06 1.28968e+06 1.90671e+06
+9.14895e+06 1.83859e+06 2.86554e+06
+8.42422e+06 2.43366e+06 4.08435e+06
+6.91078e+06 2.87078e+06 5.24937e+06
+4.84217e+06 2.86959e+06 5.67406e+06
+2.96872e+06 2.34393e+06 4.8179e+06
+1.67488e+06 1.638e+06 3.39951e+06
+903715 1.04174e+06 2.15447e+06
+474956 627313 1.29034e+06
+246172 364012 745228
+127087 205652 419705
+65401.8 114009 232830
+33551.6 62270.3 127590
+17234.2 33617.4 69139.3
+8830.64 18017.7 37262.6
+4475.37 9611.69 20017.2
+2233.91 5111.34 10703.4
+1071.14 2720.45 5729.73
+457.113 1454.35 3085.78
+133.671 783.201 1670.29
+-39.6664 429.029 918.671
+-137.555 243.572 524.754
+-196.074 148.711 321.628
+-236.812 105.912 229.623
+-274.281 97.6697 212.296
+-320.146 120.279 261.036
+-391.575 183.433 397.444
+-515.942 313.134 675.694
+-741.286 562.86 1206.87
+-1167.56 1039.04 2217.65
+-1982.72 1943.14 4122.51
+-3536.13 3654.39 7690.64
+-6545.86 6897.1 14419.5
+-12410.2 13019.9 27040.3
+-23756 24493.8 50458.9
+-45849.7 45860.8 93840.2
+-89064 85251.6 173528
+-172928 156695 317350
+-335279 284003 573701
+-648275 505886 1.02276e+06
+-1.2375e+06 879314 1.78119e+06
+-2.30439e+06 1.47706e+06 2.99944e+06
+-4.11133e+06 2.35517e+06 4.7867e+06
+-6.75267e+06 3.41469e+06 6.86314e+06
+-9.67925e+06 4.20907e+06 8.13918e+06
+-1.17934e+07 4.19762e+06 7.51554e+06
+-1.27689e+07 3.52277e+06 5.80425e+06
+-1.29104e+07 2.62565e+06 4.03252e+06
+-1.26385e+07 1.81724e+06 2.65779e+06
+-1.22463e+07 1.20394e+06 1.71386e+06
+-1.18827e+07 773965 1.0895e+06
+-1.16058e+07 480054 672234
+-1.14293e+07 278392 384891
+-1.13484e+07 138048 180949
+-1.1352e+07 39098 33144
+-1.14272e+07 -31122.7 -74727
+-1.15604e+07 -80811.7 -152443
+-1.17383e+07 -115373 -205941
+-1.19474e+07 -138408 -238958
+-1.21744e+07 -152345 -254194
+-1.24072e+07 -158880 -254101
+-1.26347e+07 -159274 -241310
+-1.2848e+07 -154551 -218741
+-1.30403e+07 -145607 -189484
+-1.32072e+07 -133271 -156578
+-1.33464e+07 -118321 -122766
+-1.34578e+07 -101492 -90315.7
+-1.35425e+07 -83469 -60920.4
+-1.36029e+07 -64882.1 -35682.9
+-1.36422e+07 -46302.7 -15169
+-1.36639e+07 -28240.7 498.759
+-1.36715e+07 -11141.6 11529.4
+-1.36686e+07 4614.42 18354.4
+-1.36584e+07 18715 21535.3
+-1.3644e+07 30916.5 21691.2
+-1.36279e+07 41045.6 19448.4
+-1.36124e+07 48998.8 15406.9
+-1.35991e+07 54741.2 10118.6
+-1.35896e+07 58303.1 4074.64
+-1.35849e+07 59774.9 -2302.11
+-1.35857e+07 59300.2 -8659.62
+-1.35923e+07 57067.1 -14715.7
+-1.36049e+07 53298.5 -20254.1
+-1.36234e+07 48241.2 -25118.6
+0 42155.1 -29207.7
+7.62188e+06 3421.09 -18008.8
+7.60352e+06 4961.91 -17448.8
+7.58752e+06 6537.7 -16551
+7.57417e+06 8091.43 -15328
+7.56364e+06 9556.12 -13813.1
+7.55597e+06 10856.7 -12062.3
+7.55107e+06 11912.5 -10156.4
+7.54862e+06 12639.6 -8202.95
+7.54812e+06 12953.6 -6337.42
+7.54884e+06 12773.3 -4723.37
+7.54983e+06 12023.7 -3551.16
+7.54988e+06 10639.6 -3034.81
+7.54759e+06 8569.48 -3406.08
+7.54135e+06 5779.13 -4904.67
+7.52937e+06 2255.99 -7763.32
+7.50981e+06 -1986.75 -12186.2
+7.48077e+06 -6905.47 -18320.1
+7.4405e+06 -12421.2 -26218.1
+7.38747e+06 -18414.2 -35798.9
+7.3206e+06 -24718.4 -46803.4
+7.23945e+06 -31114.9 -58756.7
+7.1444e+06 -37325.1 -70941.9
+7.03691e+06 -43000.7 -82392.8
+6.91969e+06 -47709.8 -91911
+6.79682e+06 -50912.9 -98105.8
+6.67381e+06 -51921.8 -99445.8
+6.55763e+06 -49831.6 -94295
+6.45659e+06 -43408.4 -80894.6
+6.38028e+06 -30914.1 -57239.9
+6.33951e+06 -9831.86 -20797.3
+6.34617e+06 23578.2 32000.4
+6.41301e+06 75046.5 106589
+6.55271e+06 153700 211671
+6.77498e+06 274632 361630
+7.07878e+06 463119 580456
+7.43446e+06 759702 906592
+7.75016e+06 1.22048e+06 1.39348e+06
+7.82937e+06 1.89587e+06 2.08946e+06
+7.37018e+06 2.75906e+06 2.96743e+06
+6.12353e+06 3.57761e+06 3.79563e+06
+4.26918e+06 3.85952e+06 4.07852e+06
+2.56796e+06 3.23649e+06 3.4374e+06
+1.41239e+06 2.24276e+06 2.40493e+06
+742634 1.3941e+06 1.5111e+06
+380824 819536 897691
+193126 465067 514613
+97977.6 257716 287953
+49676 140876 158855
+25153.4 76129.8 86611.8
+12802.6 40715.5 46721
+6512.28 21685.4 25084
+3277.08 11520.4 13427.1
+1631.94 6095.33 7155.24
+784.394 3233.32 3819.58
+337.506 1726.6 2051.39
+104.588 926.616 1106.99
+-19.5007 506.267 607.457
+-89.8696 287.56 346.239
+-131.439 175.009 211.534
+-160.218 124.361 150.746
+-186.922 114.838 139.425
+-219.286 141.143 171.566
+-270.069 215.788 261.89
+-359.446 369.431 446.76
+-520.833 663.938 799.86
+-828.366 1229.31 1473.65
+-1422.52 2306.73 2748.56
+-2556.83 4343.55 5143.3
+-4772.03 8227.04 9674.8
+-9140.74 15608.2 18212.9
+-17659.1 29483.2 34123.8
+-34444.7 55553.2 63742.6
+-67856.5 104232 118487
+-133820 193592 217948
+-264197 355771 396520
+-522430 645814 712104
+-1.02257e+06 1.1469e+06 1.25049e+06
+-1.95467e+06 1.97117e+06 2.12441e+06
+-3.57793e+06 3.21155e+06 3.42076e+06
+-5.98924e+06 4.69084e+06 4.94605e+06
+-8.62405e+06 5.63019e+06 5.9078e+06
+-1.03669e+07 5.20268e+06 5.48722e+06
+-1.09718e+07 3.97449e+06 4.25879e+06
+-1.08163e+07 2.69597e+06 2.97008e+06
+-1.03399e+07 1.71229e+06 1.96212e+06
+-9.81923e+06 1.0539e+06 1.2665e+06
+-9.37833e+06 637840 805525
+-9.05482e+06 377109 497894
+-8.84869e+06 210968 286831
+-8.74699e+06 102721 137636
+-8.73382e+06 31062.4 29760.4
+-8.7936e+06 -16619.1 -49063.1
+-8.91177e+06 -48110.3 -106194
+-9.07459e+06 -68394.2 -146006
+-9.26896e+06 -80720.7 -171142
+-9.48244e+06 -87230.4 -183421
+-9.7035e+06 -89357.6 -184479
+-9.92194e+06 -88100.2 -176115
+-1.01292e+07 -84197.5 -160389
+-1.03187e+07 -78237.2 -139540
+-1.04859e+07 -70715.5 -115805
+-1.06282e+07 -62066.6 -91230
+-1.07445e+07 -52675.2 -67520.1
+-1.08354e+07 -42882.3 -45955.9
+-1.09024e+07 -32988 -27377.6
+-1.09478e+07 -23254.3 -12222
+-1.09743e+07 -13907.3 -593.236
+-1.09848e+07 -5140.5 7652.76
+-1.09824e+07 2883.86 12825.8
+-1.09701e+07 10033.4 15331.1
+-1.09507e+07 16205.2 15615.4
+-1.09267e+07 21326.5 14129.6
+-1.09004e+07 25354.3 11304.8
+-1.08741e+07 28276 7536.94
+-1.08493e+07 30108.1 3178.86
+-1.08276e+07 30895.2 -1464.93
+-1.08101e+07 30706.8 -6139.46
+-1.07977e+07 29634.5 -10638.4
+-1.07911e+07 27786.8 -14800.7
+-1.07905e+07 25284.5 -18507.4
+0 22254.7 -21677.2
+4.98595e+06 1760.09 -11800.6
+4.97421e+06 2110.37 -11385
+4.96426e+06 2459.68 -10768.2
+4.95626e+06 2796.37 -9964.83
+4.9503e+06 3106.69 -9002.14
+4.94635e+06 3375.32 -7920.73
+4.94429e+06 3585.89 -6775.46
+4.94383e+06 3721.5 -5636.04
+4.94457e+06 3765.14 -4587.21
+4.94593e+06 3700.07 -3728.49
+4.94718e+06 3510.21 -3173.18
+4.94743e+06 3180.45 -3046.26
+4.94565e+06 2696.99 -3480.95
+4.9407e+06 2047.74 -4612.95
+4.93131e+06 1222.92 -6571.71
+4.91618e+06 215.831 -9467.68
+4.89403e+06 -975.903 -13375.1
+4.86364e+06 -2348.71 -18310.7
+4.824e+06 -3890.9 -24208.5
+4.77439e+06 -5579.94 -30895.6
+4.71457e+06 -7379.08 -38070
+4.64486e+06 -9233.03 -45288.2
+4.56634e+06 -11062 -51965.1
+4.48095e+06 -12752.5 -57391.2
+4.39161e+06 -14142.8 -60764.5
+4.3023e+06 -14998.1 -61228.2
+4.21809e+06 -14969.5 -57897.1
+4.14526e+06 -13527.6 -49844.4
+4.09134e+06 -9854.77 -36016.7
+4.06545e+06 -2667.97 -15045
+4.07861e+06 10094.2 15083.3
+4.1443e+06 31880.6 57551.6
+4.27895e+06 68819.7 117578
+4.50138e+06 132548 203890
+4.82905e+06 246204 331110
+5.26484e+06 455687 522638
+5.76359e+06 845502 810751
+6.17013e+06 1.54374e+06 1.22385e+06
+6.1601e+06 2.66113e+06 1.74337e+06
+5.32946e+06 4.06242e+06 2.22676e+06
+3.66743e+06 4.99297e+06 2.3771e+06
+2.09016e+06 4.33031e+06 1.97841e+06
+1.07624e+06 2.93199e+06 1.36343e+06
+534695 1.74981e+06 844733
+261094 994055 495925
+127189 548368 281511
+62992.1 296695 156330
+31302.6 159972 85755.1
+15519.8 85632.9 46523.4
+7847.28 45286.1 24989.7
+3973.44 24004.1 13375.3
+1969.72 12737.1 7137.68
+983.382 6689.65 3791.74
+478.389 3539.09 2020.23
+204.61 1896.45 1082.72
+67.0771 1011.18 582.419
+-5.0971 550.609 319.161
+-48.2773 315.009 181.752
+-72.6459 190.367 110.649
+-89.2398 134.857 78.7644
+-105.626 125.538 72.9649
+-124.161 152.881 89.7136
+-154.083 234.797 137.214
+-208.741 404.3 234.925
+-302.441 721.713 421.052
+-484.734 1341.93 777.148
+-848.484 2532.7 1454.45
+-1523.95 4753 2728.08
+-2856.54 9032.28 5143.91
+-5566.89 17256.5 9718.4
+-10817.8 32629.4 18272.9
+-21279.9 61799.7 34260.4
+-42858 117249 64003.7
+-86265.9 219784 118418
+-174609 409506 216893
+-359744 761165 392989
+-739662 1.38943e+06 697950
+-1.49645e+06 2.46836e+06 1.20161e+06
+-2.92535e+06 4.18232e+06 1.96467e+06
+-5.16463e+06 6.24182e+06 2.88576e+06
+-7.52885e+06 7.24128e+06 3.49073e+06
+-8.68843e+06 5.88127e+06 3.26325e+06
+-8.67141e+06 3.82401e+06 2.53586e+06
+-8.07048e+06 2.19255e+06 1.76245e+06
+-7.35121e+06 1.18402e+06 1.1557e+06
+-6.72949e+06 629037 738432
+-6.26382e+06 335364 464350
+-5.9469e+06 178101 283705
+-5.75324e+06 90650.8 161441
+-5.65697e+06 40128.1 76037.7
+-5.63643e+06 10300.2 14731.9
+-5.67436e+06 -7279.38 -30075.5
+-5.75687e+06 -17342.8 -62877.2
+-5.87235e+06 -22708.8 -86233.8
+-6.0107e+06 -25112 -101558
+-6.16289e+06 -25630 -109712
+-6.32083e+06 -24934 -111431
+-6.47744e+06 -23447.3 -107586
+-6.62684e+06 -21446.2 -99252.9
+-6.76444e+06 -19121.3 -87676.5
+-6.88701e+06 -16611.6 -74148.6
+-6.99258e+06 -14022.3 -59882.2
+-7.08032e+06 -11433.9 -45907.5
+-7.15033e+06 -8906.76 -33011.3
+-7.20346e+06 -6485.39 -21720.7
+-7.24104e+06 -4201.56 -12322.2
+-7.26477e+06 -2078.01 -4903.9
+-7.27653e+06 -131.57 592.84
+-7.27829e+06 1624.48 4323.63
+-7.27201e+06 3178.89 6498.88
+-7.2596e+06 4521.93 7352.6
+-7.24289e+06 5645.61 7121.69
+-7.22356e+06 6544.34 6033.57
+-7.20315e+06 7215.82 4299.2
+-7.18303e+06 7661.85 2109.4
+-7.16437e+06 7888.79 -366.985
+-7.14818e+06 7907.85 -2983.63
+-7.13526e+06 7734.84 -5616.24
+-7.12621e+06 7389.6 -8161.3
+-7.12146e+06 6894.93 -10534.8
+0 6275.23 -12671.1
+2.43121e+06 1201.6 -6102.57
+2.42432e+06 1173.82 -5832.42
+2.41813e+06 1135.19 -5478.47
+2.4127e+06 1088.05 -5055.26
+2.40807e+06 1035.39 -4583.02
+2.40421e+06 980.928 -4087.51
+2.40107e+06 929.078 -3599.68
+2.39852e+06 884.827 -3155.36
+2.39638e+06 853.519 -2794.74
+2.39441e+06 840.543 -2561.79
+2.3923e+06 850.922 -2503.5
+2.38968e+06 888.832 -2668.85
+2.38613e+06 957.065 -3107.39
+2.38116e+06 1056.49 -3867.16
+2.37426e+06 1185.6 -4991.34
+2.3649e+06 1340.17 -6513.43
+2.35254e+06 1513.17 -8450.46
+2.33666e+06 1694.89 -10794.4
+2.31685e+06 1873.4 -13502.3
+2.29279e+06 2035.08 -16486.8
+2.26434e+06 2165.3 -19608.3
+2.23159e+06 2249.07 -22672.4
+2.19494e+06 2271.52 -25433.5
+2.15512e+06 2218.34 -27607.2
+2.11328e+06 2076.65 -28889.5
+2.07102e+06 1836.72 -28978
+2.03041e+06 1495.88 -27584.9
+1.9942e+06 1065.67 -24429.6
+1.96593e+06 583.776 -19195.3
+1.95035e+06 134.053 -11438.5
+1.95413e+06 -111.509 -442.846
+1.98701e+06 227.151 15005.2
+2.06382e+06 2144.57 36981.8
+2.20765e+06 8638.53 69079.6
+2.45398e+06 29154.2 117539
+2.85178e+06 92363.4 192739
+3.4471e+06 277561 309540
+4.21181e+06 773332 481681
+4.87099e+06 1.92421e+06 701931
+4.7224e+06 4.03178e+06 906611
+3.12042e+06 6.34418e+06 963072
+1.52661e+06 5.70526e+06 780405
+657655 3.65807e+06 518137
+289602 2.03677e+06 309923
+127969 1.1122e+06 176887
+57396.2 596474 98232.2
+28457 314253 53766.7
+13942.9 168695 29240.3
+6515.9 90125.1 15741.8
+3433.86 46890.1 8408.27
+1787.07 24893.7 4493.61
+814.026 13323.1 2391.01
+428.089 6882.22 1264.54
+226.796 3641.11 673.865
+84.0778 1986.76 360.757
+30.018 1038.45 193.052
+4.302 562.156 106.073
+-20.1721 331.365 60.6091
+-29.8431 195.355 36.6171
+-35.6156 137.462 26.1108
+-45.2839 132.252 24.3746
+-51.2843 155.336 29.7293
+-63.7801 241.586 45.4509
+-94.2157 424.477 78.3877
+-126.894 736.038 140.009
+-200.692 1380.34 257.985
+-388.343 2650.59 485.455
+-652.87 4884.48 911.512
+-1182.64 9300.79 1719.49
+-2495.99 18044.7 3264.91
+-4700.58 33803.9 6158.79
+-8924.59 64003.7 11573.5
+-19096 123393 21767.1
+-38863.1 231576 40635.4
+-78730.6 433620 75209
+-176621 827762 138627
+-401082 1.55287e+06 252492
+-915638 2.86807e+06 448734
+-2.1391e+06 5.20094e+06 762335
+-4.39069e+06 8.17618e+06 1.16429e+06
+-6.65526e+06 9.1418e+06 1.44703e+06
+-6.85595e+06 5.82727e+06 1.35915e+06
+-5.91355e+06 2.77849e+06 1.04361e+06
+-4.82898e+06 1.10928e+06 707742
+-3.99067e+06 392368 448951
+-3.43441e+06 127034 276183
+-3.09192e+06 37893.9 166723
+-2.89256e+06 9580.45 97180.8
+-2.7861e+06 879.18 51641.2
+-2.7404e+06 -1511.56 20660.5
+-2.73533e+06 -1712.36 -1229.69
+-2.75802e+06 -1077.48 -17245.6
+-2.79999e+06 -141.669 -29251.3
+-2.85526e+06 837.742 -38233.2
+-2.91932e+06 1730.16 -44623.5
+-2.98846e+06 2477.72 -48571.4
+-3.05951e+06 3064.2 -50160.6
+-3.12974e+06 3493.33 -49550.9
+-3.19686e+06 3775.14 -47034.2
+-3.25908e+06 3919.87 -43021.5
+-3.31511e+06 3937.09 -37990.1
+-3.36418e+06 3837.43 -32419.2
+-3.40593e+06 3634.64 -26734.6
+-3.44039e+06 3346.81 -21274.4
+-3.46785e+06 2996.04 -16276.3
+-3.48882e+06 2607.04 -11883
+-3.50394e+06 2205.05 -8158.89
+-3.5139e+06 1813.57 -5112.03
+-3.51947e+06 1452.59 -2714.4
+-3.52141e+06 1137.42 -918.653
+-3.52047e+06 878.27 330.808
+-3.51739e+06 680.401 1091.71
+-3.51286e+06 544.789 1421.37
+-3.50754e+06 468.938 1376.18
+-3.50205e+06 447.769 1011.77
+-3.49691e+06 474.444 383.217
+-3.49259e+06 541.095 -454.906
+-3.4895e+06 639.437 -1448.68
+-3.48793e+06 761.244 -2545.17
+-3.48812e+06 898.647 -3693.12
+0 1044.24 -4844.09
+146231 70.0147 -1043.17
+145956 68.4788 -989.791
+145696 66.3287 -925.26
+145452 63.6985 -852.92
+145226 60.7559 -777.002
+145015 57.7072 -702.553
+144817 54.7966 -635.329
+144630 52.2994 -581.625
+144448 50.51 -548.067
+144267 49.723 -541.345
+144078 50.2108 -567.912
+143875 52.1947 -633.639
+143647 55.8145 -743.437
+143383 61.0972 -900.851
+143069 67.9302 -1107.61
+142686 76.0432 -1363.14
+142215 85.0034 -1664.04
+141634 94.2262 -2003.56
+140918 103.002 -2371.05
+140045 110.535 -2751.58
+138995 115.988 -3125.69
+137755 118.523 -3469.54
+136320 117.342 -3755.47
+134695 111.715 -3953.18
+132897 101.038 -4031.43
+130953 84.9323 -3960.02
+128900 63.4786 -3711.75
+126790 37.6502 -3263.53
+124700 10.2091 -2595.93
+122765 -11.8754 -1690.45
+121233 -8.28657 -523.682
+120607 94.2036 943.132
+122015 591.457 2783.51
+128275 2687.27 5145.8
+146794 11048.4 8337.19
+196490 42466.9 12983.7
+319847 151927 20269.9
+587516 498563 32104
+1.03149e+06 1.46411e+06 50560
+1.37127e+06 3.66307e+06 74839.9
+770382 6.90609e+06 93438.8
+221837 6.22056e+06 80159.2
+41149.9 3.81756e+06 53105.4
+13762.2 2.05209e+06 31769.7
+3514.52 1.11576e+06 18166.7
+110.325 596356 9830.35
+1075.8 311506 5322.67
+519.482 168329 2945.67
+-63.6696 90225.8 1545.44
+128.176 46449 800.122
+103.663 24785.7 442.35
+-19.6537 13377.1 232.543
+11.8087 6817.53 116.066
+20.6295 3615.37 65.0163
+-5.53921 2003.34 35.0118
+-0.811218 1028.85 16.7193
+3.56363 555.325 9.95553
+-2.37077 335.729 6.161
+-1.48808 193.504 3.0292
+-0.20759 135.572 2.23117
+-2.82244 134.313 2.49958
+-0.988644 152.823 2.511
+-0.50855 239.931 3.82896
+-7.5754 429.583 7.96812
+-1.2752 726.584 13.0024
+2.84326 1369.85 22.509
+-30.467 2671.29 47.346
+-14.6309 4846.19 87.557
+19.2921 9222.41 158.154
+-147.238 18118.6 318.958
+-157.745 33636.5 606.137
+79.3005 63430.1 1103.19
+-752.159 123571 2145.01
+-1433.71 231004 4094.56
+-162.081 429912 7427.53
+-5311.17 828072 13809
+-20024.3 1.55836e+06 25651.1
+-60300.4 2.89163e+06 45090.7
+-323962 5.43507e+06 75823.5
+-1.11995e+06 8.92568e+06 115040
+-1.98932e+06 9.95656e+06 134777
+-1.49398e+06 5.29148e+06 108741
+-847944 2.11024e+06 73827.2
+-460874 712871 46964.1
+-284922 213940 29710.7
+-215755 58352.5 19181
+-191077 14618.7 12566.4
+-183498 3328.44 8083.83
+-182475 611.21 4779.82
+-184074 2.74154 2179.93
+-186750 -104.401 48.9754
+-189846 -88.3639 -1732.02
+-193075 -39.9264 -3221.17
+-196318 15.0441 -4441.97
+-199524 66.9414 -5399.53
+-202654 111.794 -6093.2
+-205665 148.249 -6525.88
+-208499 176.172 -6709.59
+-211102 195.852 -6666.94
+-213427 207.653 -6429.61
+-215447 211.961 -6035.05
+-217159 209.278 -5522.77
+-218579 200.336 -4931.08
+-219734 186.155 -4294.9
+-220663 168.015 -3644.46
+-221402 147.364 -3004.97
+-221985 125.687 -2396.8
+-222439 104.371 -1835.93
+-222788 84.5968 -1334.52
+-223049 67.2701 -901.324
+-223235 52.9975 -542.075
+-223359 42.0989 -259.698
+-223435 34.6443 -54.5112
+-223475 30.504 75.5858
+-223493 29.4002 134.865
+-223504 30.9551 129.475
+-223523 34.7327 67.0923
+-223563 40.274 -43.4512
+-223637 47.1223 -192.554
+-223754 54.8388 -370.229
+0 63.0069 -566.475
+8371.97 4.01728 -61.9208
+8355.85 3.93419 -58.8479
+8340.6 3.81677 -55.1359
+8326.27 3.67259 -50.9773
+8312.89 3.51087 -46.6149
+8300.39 3.34288 -42.3377
+8288.65 3.18185 -38.4748
+8277.47 3.0427 -35.385
+8266.59 2.9413 -33.4452
+8255.69 2.89347 -33.0346
+8244.36 2.91361 -34.5177
+8232.14 3.01315 -38.2244
+8218.45 3.19877 -44.4288
+8202.56 3.47059 -53.3258
+8183.61 3.8207 -65.0063
+8160.54 4.23213 -79.4301
+8132.08 4.67866 -96.3962
+8096.81 5.12553 -115.513
+8053.18 5.53121 -136.17
+7999.68 5.84986 -157.514
+7934.96 6.03426 -178.439
+7858 6.0386 -197.596
+7768.31 5.82108 -213.426
+7666.05 5.34611 -224.239
+7552.05 4.58763 -228.31
+7427.85 3.53545 -224.007
+7295.75 2.20916 -209.911
+7159.14 0.690898 -184.887
+7023.45 -0.771439 -148.066
+6899.02 -1.31133 -98.6516
+6810.79 2.83029 -35.4527
+6835.79 29.6979 44.2844
+7254.49 166.14 148.025
+9135.71 814.365 297.114
+16409.6 3742.5 553.38
+42354.1 16288 1092.92
+126366 67033.2 2395.02
+363031 259274 5657.68
+891105 929390 13406.2
+1.55939e+06 2.98065e+06 29005.4
+802431 7.64032e+06 49258.1
+158850 6.84548e+06 42682.5
+4000.18 3.96167e+06 26142.9
+5638.07 2.0446e+06 15301.6
+-154.398 1.1182e+06 8746.38
+-2230.14 596704 4406.39
+777.681 307689 2343.35
+301.691 168389 1374.63
+-399.527 90698.5 671.672
+85.7842 45841.7 321.283
+100.502 24700.9 200.718
+-73.6831 13513.7 102.192
+3.11793 6725.04 42.9613
+25.8991 3584.88 29.0025
+-14.0815 2038.07 15.8131
+-2.24882 1014.48 5.06362
+6.46414 545.503 4.26687
+-3.00947 344.261 3.2344
+-0.728867 190.589 0.742803
+1.87745 132.628 0.680345
+-2.37663 138.273 1.36419
+1.21278 148.857 0.726573
+2.96098 237.4 1.03739
+-8.31263 439.683 4.1893
+4.07332 712.763 5.40088
+16.0007 1354.57 7.06358
+-34.8518 2715.26 21.7292
+2.52778 4798.57 38.6063
+91.3845 9112.49 58.9536
+-144.866 18304.9 141.894
+-86.6505 33485.4 274.44
+533.486 62646.6 444.091
+-484.336 124282 940.679
+-988.145 230947 1912.11
+3122.5 424705 3260.01
+-266.597 829109 6181.55
+-8299.78 1.56183e+06 12282
+-6502.38 2.88184e+06 21446.2
+-232385 5.64627e+06 36641.9
+-1.16166e+06 9.82935e+06 59881
+-2.24965e+06 1.10133e+07 69220.6
+-1.27976e+06 4.30206e+06 40940.8
+-516309 1.33759e+06 19028.7
+-177036 369997 8078.82
+-58450.9 94182.6 3442.13
+-22711.1 22338.3 1587.24
+-13044.6 4957.2 822.164
+-10681.1 1026.46 462.763
+-10220.3 192.848 255.159
+-10247.5 27.0512 109.33
+-10406.9 -2.88503 -6.29845
+-10605.4 -6.16696 -103.019
+-10814.6 -4.18725 -184.826
+-11024.7 -1.2086 -252.803
+-11231.3 1.76501 -306.833
+-11431.5 4.42196 -346.506
+-11622.3 6.65474 -371.697
+-11800.3 8.4346 -382.877
+-11962.4 9.76118 -381.19
+-12106.1 10.6419 -368.352
+-12230.2 11.0888 -346.452
+-12334.8 11.1238 -317.721
+-12421 10.7846 -284.34
+-12490.9 10.1278 -248.305
+-12547 9.22634 -211.353
+-12591.5 8.1637 -174.934
+-12626.6 7.02604 -140.226
+-12654 5.89397 -108.158
+-12675.2 4.83623 -79.4411
+-12691.1 3.90566 -54.5925
+-12702.6 3.13784 -33.9556
+-12710.4 2.55186 -17.7118
+-12715.3 2.15254 -5.89129
+-12718.1 1.93334 1.61681
+-12719.7 1.87938 5.05026
+-12720.7 1.97016 4.75672
+-12722.2 2.18197 1.17354
+-12724.8 2.48981 -5.19396
+-12729.4 2.86879 -13.795
+-12736.4 3.29486 -24.0559
+0 3.74496 -35.4011
+477.552 0.198416 -3.68448
+476.611 0.194547 -3.50684
+475.718 0.189019 -3.29247
+474.877 0.182198 -3.05248
+474.089 0.174525 -2.80087
+473.351 0.166528 -2.55425
+472.654 0.158829 -2.3315
+471.988 0.152124 -2.15318
+471.338 0.147153 -2.04079
+470.683 0.144649 -2.01594
+470.002 0.14527 -2.0993
+469.265 0.149525 -2.30948
+468.438 0.157685 -2.66184
+467.478 0.169693 -3.16714
+466.331 0.185097 -3.83014
+464.931 0.202994 -4.64807
+463.2 0.222029 -5.60898
+461.048 0.240433 -6.69005
+458.375 0.256122 -7.85601
+455.083 0.266825 -9.05785
+451.08 0.270252 -10.2323
+446.294 0.264242 -11.3024
+440.686 0.246913 -12.1802
+434.251 0.216786 -12.7704
+427.033 0.172961 -12.9776
+419.121 0.115448 -12.7132
+410.657 0.0459836 -11.9032
+401.869 -0.0293875 -10.4923
+393.18 -0.08874 -8.4416
+385.711 -0.0316077 -5.71059
+383.685 0.670187 -2.19874
+406.246 4.865 2.45174
+543.537 27.5941 9.54919
+1208.11 145.784 23.817
+4188.78 740.943 61.9938
+16732.3 3657.04 181.946
+65813.3 17635.6 576.806
+240453 83602.2 1855.51
+774595 392195 5744.19
+1.9124e+06 1.8349e+06 16092
+886146 8.65025e+06 35797.7
+106194 7.61326e+06 28166
+-20974.6 4.08307e+06 14588.5
+7929.98 2.0126e+06 8726.03
+-238.44 1.12436e+06 5203.49
+-3472 598968 2236.43
+1416.24 302448 1190.81
+458.773 169173 831.276
+-668.11 91718.1 338.654
+153.062 44958.3 130.032
+159.126 24651.9 121.079
+-124.604 13774.2 56.6868
+7.44277 6587.3 13.1319
+42.0409 3548.12 17.7288
+-23.9611 2101.07 9.76291
+-3.15597 992.507 -0.1607
+10.7548 531.386 2.55921
+-5.07364 359.473 2.72815
+-1.01298 186.048 -0.320781
+3.29703 128.162 0.0686743
+-3.9032 145.361 1.26155
+2.0185 142.762 0.00055753
+5.28128 233.537 -0.22549
+-13.6187 457.83 3.53629
+6.25502 692.615 2.99185
+27.6809 1331.54 0.232372
+-56.5174 2795.55 13.858
+1.18717 4737.9 22.9039
+155.436 8950.26 18.4694
+-230.195 18659.7 80.8633
+-159.56 33358.4 164.22
+894.414 61509.6 180.328
+-743.916 125777 485.798
+-1811.59 231784 1159.69
+4910.34 417504 1651.1
+-309.324 833004 3165.98
+-11322.9 1.57012e+06 7354.71
+29749.7 2.83659e+06 12247.5
+-157696 5.82591e+06 20450.9
+-1.28338e+06 1.09384e+07 39575.2
+-2.75626e+06 1.24638e+07 50428.6
+-1.11097e+06 2.64585e+06 22753.2
+-341259 563663 8147.75
+-91781 119099 2638.61
+-22760.9 24732.8 821.687
+-5544.93 5007.42 259.805
+-1593.21 980.798 89.4921
+-753.328 184.298 35.7469
+-591.987 32.6998 15.9009
+-570.395 5.11722 6.0084
+-576.861 0.388284 -0.686517
+-589.103 -0.297135 -6.05531
+-602.542 -0.283611 -10.5963
+-616.072 -0.150849 -14.4107
+-629.322 -0.0049851 -17.4815
+-642.077 0.12979 -19.7674
+-654.139 0.246206 -21.2458
+-665.307 0.341869 -21.9315
+-675.402 0.416029 -21.882
+-684.294 0.46847 -21.1904
+-691.928 0.499349 -19.9735
+-698.329 0.50944 -18.3579
+-703.588 0.500417 -16.4684
+-707.841 0.474971 -14.4197
+-711.241 0.436679 -12.312
+-713.939 0.389683 -10.2294
+-716.067 0.338271 -8.24031
+-717.733 0.28647 -6.39897
+-719.021 0.237716 -4.74719
+-719.995 0.194653 -3.31565
+-720.705 0.159072 -2.12499
+-721.199 0.131947 -1.18642
+-721.519 0.113551 -0.502356
+-721.712 0.103599 -0.0669564
+-721.826 0.101402 0.133064
+-721.911 0.105999 0.117444
+-722.015 0.116275 -0.0887998
+-722.185 0.131055 -0.456646
+-722.463 0.149166 -0.954386
+-722.883 0.169469 -1.54893
+0 0.190864 -2.20708
+24.5697 0 -0.197685
+24.5202 0 -0.188389
+24.4732 0 -0.177181
+24.4288 0 -0.164644
+24.3871 0 -0.151507
+24.3479 0 -0.138636
+24.3108 0 -0.127012
+24.2752 0 -0.1177
+24.2403 0 -0.111815
+24.205 0 -0.110472
+24.1682 0 -0.114732
+24.1283 0 -0.125552
+24.0834 0 -0.143709
+24.0312 0 -0.169746
+23.9687 0 -0.203886
+23.8923 0 -0.245966
+23.7976 0 -0.295342
+23.6796 0 -0.350812
+23.5326 0 -0.410527
+23.3509 0 -0.471935
+23.1292 0 -0.531751
+22.8632 0 -0.586001
+22.5501 0 -0.630152
+22.1893 0 -0.659354
+21.7829 0 -0.668791
+21.3353 0 -0.654092
+20.8549 0 -0.611732
+20.3558 0 -0.539239
+19.8727 0 -0.434892
+19.5366 0 -0.295945
+19.9975 0 -0.111686
+24.7256 0 0.163663
+52.1214 0 0.718265
+197.049 0 2.30626
+933.996 0 7.90751
+4574.1 0 29.1959
+22142.9 0 111.594
+105496 0 429.839
+496804 0 1640.1
+2.32865e+06 0 6150.08
+1.06672e+06 9.90044e+06 25516.3
+84821.5 8.58726e+06 17519.8
+-47840.2 4.21352e+06 5663.96
+13329.8 1.95029e+06 4058.13
+2040.66 1.1344e+06 3173.76
+-5756.78 606188 828.402
+1959.67 294686 359.198
+1045.77 170100 537.151
+-1067.96 93816.6 149.116
+150.021 43723.2 -18.953
+306.634 24468.9 73.1294
+-183.791 14247.1 36.648
+-8.57754 6413.42 -10.1774
+76.9284 3465.97 10.8518
+-31.5408 2208.39 9.17881
+-9.21361 969.993 -3.83587
+18.7591 504.407 1.79739
+-5.78677 384.045 4.09256
+-2.30943 182.278 -0.298276
+4.28045 121.445 0.287911
+-6.75269 156.255 2.34779
+2.6926 133.248 0.0411736
+4.19241 231.747 -0.266712
+-24.64 486.759 5.10911
+13.7938 655.372 1.68829
+33.5276 1311.41 -4.27591
+-102.469 2930 13.2238
+26.9171 4612.77 12.6051
+222.385 8755.86 -12.6738
+-432.06 19291.4 54.7023
+-126.108 33018.3 95.8172
+1407.14 59953.3 -24.0841
+-1599.42 128764 230.868
+-2435.35 232639 745.473
+8090.44 406909 481.887
+-3782.81 844072 1218.24
+-18446.3 1.58308e+06 4537.85
+68857.8 2.7478e+06 5695.75
+-128634 6.0205e+06 7941.07
+-1.54501e+06 1.23441e+07 24757.6
+-3.35375e+06 1.42566e+07 36220.1
+-712060 0 8787.95
+-149611 0 2350.46
+-30853.3 0 616.575
+-6210.95 0 159.935
+-1225.97 0 41.7289
+-250.218 0 11.2852
+-66.8516 0 3.34179
+-34.2564 0 1.12202
+-29.1865 0 0.353763
+-28.9611 0 -0.03756
+-29.5741 0 -0.317363
+-30.3301 0 -0.548596
+-31.1003 0 -0.743641
+-31.8531 0 -0.90227
+-32.5743 0 -1.02179
+-33.2524 0 -1.10037
+-33.8767 0 -1.13824
+-34.438 0 -1.138
+-34.93 0 -1.10426
+-35.3507 0 -1.04293
+-35.7023 0 -0.960547
+-35.9903 0 -0.86357
+-36.2227 0 -0.757982
+-36.4083 0 -0.649018
+-36.5555 0 -0.541089
+-36.6716 0 -0.437796
+-36.7626 0 -0.342009
+-36.8331 0 -0.255946
+-36.8867 0 -0.181252
+-36.9261 0 -0.119041
+-36.9537 0 -0.0699343
+-36.9721 0 -0.0340894
+-36.9836 0 -0.0112267
+-36.9907 0 -0.000672399
+-36.9961 0 -0.00141034
+-37.0025 0 -0.012144
+-37.0121 0 -0.0313642
+-37.0273 0 -0.0574182
+-37.0497 0 -0.0885794
+0 0 -0.123113
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.6744e+06 6.17528e+06 111870
+1.92284e+06 1.02602e+07 172557
+-43813.9 6.13866e+06 86124.2
+-90536.1 1.98516e+06 28453.7
+92604.9 942614 27512
+-4734.62 695342 18357.9
+-19549.3 305444 4875.38
+14352.7 134737 3755.3
+2732.09 104752 3757.75
+-4469.23 50672.9 951.526
+2023.6 17835.6 267.785
+1165.5 14906.2 614.554
+-870.862 8344.17 206.857
+327.56 2269.93 23.3741
+399.757 2137.18 150.544
+-151.299 1512.5 89.4527
+42.7618 325.096 26.3211
+125.959 323.132 61.1473
+-22.2006 338.763 62.8112
+-59.4876 152.447 46.9244
+-25.0845 110.117 48.3843
+-56.2367 160.921 44.8857
+-231.705 422.369 67.6561
+-110.367 394.98 69.5381
+104.363 455.774 32.6902
+-614.655 2013.59 125.681
+-423.277 2737.06 191.536
+1019.9 3174 24.1357
+-1791.94 11436.9 300.879
+-2468.9 19712 817.961
+5946.34 24406.2 341.938
+-4741.99 70277.4 1403.06
+-18924.6 142007 5175.28
+27939.4 183789 4975.69
+2501.33 426813 6858.45
+-130111 965585 25854.1
+134446 1.30704e+06 38002.4
+48118.9 2.8183e+06 39057.9
+-2.77784e+06 8.78921e+06 120801
+-5.27735e+06 1.47346e+07 243230
+0 8.90906e+06 158173
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.98449e+06 0 128306
+4.24077e+06 0 350345
+1.56521e+06 0 315368
+-243775 0 112615
+-71022.9 0 25916.5
+127364 0 33853.1
+-10892 0 21651.6
+-20504.3 0 3650.05
+22561.3 0 4411.36
+4163.53 0 4982.7
+-4962.93 0 1056.99
+3745.51 0 409.779
+2010.03 0 972.599
+-797.394 0 356.531
+827.496 0 171.909
+730.456 0 414.05
+-77.0755 0 296.178
+206.193 0 181.93
+154.833 0 264.731
+-151.263 0 253.887
+-253.021 0 214.934
+-619.751 0 260.322
+-594.219 0 261.588
+-267.324 0 205.382
+-1331.91 0 387.697
+-1331.7 0 532.578
+607.628 0 220.771
+-3277.48 0 510.157
+-4941.58 0 1289.41
+6358.9 0 503.592
+-7345.22 0 1593.4
+-30284.8 0 6910.72
+29150.4 0 5825.81
+9044.57 0 5371.56
+-179623 0 30892.6
+107856 0 46842.1
+327062 0 35591.4
+-2.27323e+06 0 159638
+-6.08771e+06 0 447297
+-4.28979e+06 0 497395
+0 0 182785
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.7014e+06 -3.48674e+06 164967
+2.40483e+06 -5.7508e+06 420989
+864116 -3.36503e+06 362459
+-147289 -1.04759e+06 130048
+-31589.8 -506984 32844.4
+73474.2 -374643 37038.4
+-9804.07 -155845 23556.2
+-10325.8 -69846.4 5542.36
+14728.6 -56862.4 5385.56
+2104.95 -25615.8 5055.23
+-2775.9 -8514.34 1036.05
+2554.18 -8099.22 459.091
+1052.66 -4273.33 988.241
+-592.48 -997.183 363.353
+502.216 -1194.32 117.778
+374.064 -785.739 289.891
+-109.93 -116.115 193.076
+120.206 -198.924 87.4329
+66.6322 -197.433 183.158
+-139.131 -74.5984 230.159
+-164.153 -61.6178 207.3
+-441.286 -80.1385 252.514
+-489.239 -251.199 201.555
+-229.018 -237.322 100.258
+-850.793 -164.873 243.168
+-898.647 -1062.87 370.663
+461.848 -1522.51 150.634
+-1871.1 -1393.62 526.939
+-3490.79 -5915.04 1318.25
+3529.13 -10720.1 577.142
+-4057.68 -11639.2 1602.97
+-20119.5 -35871.8 7078.56
+15060.2 -77494.1 7166.85
+10192.5 -95334.7 7771
+-104874 -219443 33281.7
+49679.5 -524690 51220.7
+200769 -708181 45431.1
+-1.26662e+06 -1.50169e+06 186482
+-3.48353e+06 -4.86822e+06 521047
+-2.46865e+06 -8.34362e+06 606618
+0 -5.08274e+06 238810
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.09847e+06 -5.63804e+06 164696
+1.07388e+06 -4.80101e+06 247357
+-33677.8 -2.30048e+06 129136
+-43107.6 -1.05406e+06 44357.6
+54071.4 -610780 34131.9
+-5672.68 -318978 22438.6
+-10262.2 -153465 7086.92
+9163.96 -89793.7 4277.94
+984.512 -48569.1 3645.31
+-2596.59 -22079.9 996.939
+1455.25 -12742.5 443.667
+603.337 -7377.04 744.618
+-548.684 -3177.03 260.793
+238.831 -1789.77 24.0403
+198.792 -1147.37 139.115
+-120.028 -463.266 82.6222
+34.3789 -258.16 10.3016
+69.0007 -207.765 33.2901
+-26.3049 -85.2981 44.075
+-41.9227 -58.1174 44.1835
+-18.8769 -85.5754 47.7265
+-38.2586 -63.0555 45.3418
+-165.593 -110.047 53.5008
+-110.048 -263.729 40.9617
+77.9971 -332.798 12.8104
+-343.384 -631.979 116.253
+-325.084 -1529.56 180.346
+648.399 -2377.04 34.3946
+-984.511 -4356.95 378.385
+-1837.86 -10041.6 991.754
+3505.57 -17223.2 578.771
+-2031.82 -30400.4 1468.52
+-12308.5 -67103.2 5063.34
+15025.3 -123456 5765.14
+5592.2 -213118 9965.59
+-76986.1 -447878 31619.5
+65598.6 -860183 47419.6
+40650.8 -1.49983e+06 62140.7
+-1.56738e+06 -3.32415e+06 184759
+-3.04403e+06 -6.97914e+06 355394
+0 -8.20584e+06 237246
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+15.36 -0.109392 -0.0573335
+15.331 -0.105256 -0.0541549
+15.3042 -0.100032 -0.0503863
+15.2798 -0.0940063 -0.0462166
+15.2577 -0.087526 -0.0418841
+15.2378 -0.0810055 -0.0376716
+15.2196 -0.0749306 -0.0338997
+15.2026 -0.0698457 -0.0309169
+15.1862 -0.0663293 -0.0290877
+15.1695 -0.0649571 -0.0287786
+15.1514 -0.0662536 -0.0303416
+15.1305 -0.0706338 -0.0340966
+15.1055 -0.078338 -0.0403117
+15.0743 -0.0893669 -0.0491821
+15.0346 -0.103424 -0.0608061
+14.9837 -0.119878 -0.0751585
+14.9182 -0.137757 -0.09206
+14.8343 -0.155774 -0.111144
+14.728 -0.17239 -0.131824
+14.5952 -0.185913 -0.153264
+14.4324 -0.1946 -0.174364
+14.237 -0.196757 -0.193769
+14.0075 -0.190824 -0.209906
+13.7447 -0.175427 -0.221065
+13.4508 -0.149452 -0.225513
+13.1306 -0.112228 -0.221621
+12.7909 -0.0640282 -0.207959
+12.4426 -0.00776346 -0.183261
+12.1102 0.0434777 -0.145953
+11.8799 0.0264295 -0.0920595
+12.1659 -0.391473 -0.00618169
+15.1354 -2.98346 0.17756
+32.1132 -17.0015 0.741922
+120.778 -89.2345 2.87595
+566.499 -449.266 11.452
+2745 -2195.25 45.9473
+13152.9 -10478.9 182.548
+62031.1 -49161.7 713.388
+289106 -228171 2736.09
+1.3406e+06 -1.05571e+06 10364.3
+603635 -4.91924e+06 43680.6
+44137.8 -4.25577e+06 31773.4
+-25595.6 -2.23667e+06 11579.5
+8150.28 -1.08996e+06 6204.32
+354.916 -604239 4427.85
+-3208.42 -316148 1562.09
+1345.54 -158292 632.312
+453.802 -89003.3 638.518
+-654.489 -47556.7 245.042
+149.111 -22962.8 60.3083
+165.764 -12803.3 117.233
+-121.327 -7110.1 56.7824
+7.51986 -3312.22 -3.94288
+43.4092 -1828 13.0465
+-24.1423 -1083.39 12.5501
+-2.31066 -486.808 -2.24752
+12.1296 -271.864 0.929709
+-5.37243 -189.83 3.53553
+-1.20045 -89.6093 -0.22198
+3.29297 -62.8658 0.47122
+-5.00396 -77.3901 2.39253
+1.22325 -69.6204 0.352655
+4.24868 -113.473 0.115775
+-16.776 -242.052 4.50899
+4.29261 -352.962 0.790251
+26.7832 -656.619 -2.11165
+-59.9753 -1447.19 17.6242
+0.212736 -2440.45 15.8543
+150.745 -4516.13 -3.97789
+-241.564 -9676.11 81.4996
+-155.613 -17368.3 154.883
+881.427 -31543.4 81.7973
+-741.708 -65607.7 358.569
+-1726.64 -122614 887.978
+4599.3 -219837 874.689
+-1057.59 -443262 2259.09
+-11479 -851536 6312.36
+37327.3 -1.55169e+06 8757.38
+-68145.7 -3.2273e+06 16572.3
+-883926 -6.18443e+06 45836.3
+-1.95046e+06 -7.16622e+06 63143.7
+-418367 -1.53832e+06 15011.9
+-88776.9 -331197 3957.47
+-18489.8 -70697.1 1026.61
+-3760.68 -14829.4 260.226
+-750.65 -3032.87 64.5624
+-154.931 -600.23 15.7964
+-41.5419 -113.95 3.90247
+-21.0669 -20.3672 1.01415
+-17.8192 -3.16016 0.266252
+-17.6721 -0.204488 0.0198307
+-18.0839 0.198355 -0.103999
+-18.6018 0.159875 -0.190553
+-19.1389 0.0520904 -0.25859
+-19.6726 -0.0567108 -0.311839
+-20.1917 -0.15208 -0.350676
+-20.6862 -0.230765 -0.375043
+-21.1466 -0.292495 -0.385335
+-21.5643 -0.337725 -0.38265
+-21.9329 -0.366926 -0.36873
+-22.2495 -0.380568 -0.345746
+-22.5146 -0.379392 -0.316031
+-22.7316 -0.364703 -0.281854
+-22.9058 -0.338502 -0.245261
+-23.0435 -0.30342 -0.207991
+-23.1506 -0.262503 -0.171461
+-23.2327 -0.218904 -0.136793
+-23.2943 -0.17558 -0.104846
+-23.3389 -0.135054 -0.0762694
+-23.3693 -0.0992625 -0.0515316
+-23.3879 -0.069509 -0.0309432
+-23.3967 -0.046495 -0.01467
+-23.3976 -0.0304036 -0.00274064
+-23.3928 -0.0210084 0.00494711
+-23.3843 -0.0177833 0.00861573
+-23.3743 -0.0200025 0.00859425
+-23.3649 -0.0268253 0.00530043
+-23.3582 -0.0373636 -0.000779374
+-23.3557 -0.0507297 -0.00911179
+-23.3591 -0.0660599 -0.0191387
+0 -0.0825204 -0.030299
+298.221 -2.21656 -0.997153
+297.679 -2.12911 -0.940904
+297.179 -2.01908 -0.87407
+296.725 -1.89238 -0.800012
+296.316 -1.75628 -0.72297
+295.948 -1.61958 -0.647991
+295.615 -1.49263 -0.5808
+295.307 -1.38704 -0.527635
+295.01 -1.31522 -0.495038
+294.708 -1.28958 -0.489606
+294.382 -1.32155 -0.5177
+294.008 -1.4204 -0.585135
+293.556 -1.59187 -0.696829
+292.993 -1.8369 -0.856419
+292.276 -2.1504 -1.06584
+291.353 -2.52047 -1.32482
+290.165 -2.92817 -1.63033
+288.643 -3.34801 -1.97598
+286.715 -3.74908 -2.3514
+284.31 -4.09676 -2.74167
+281.364 -4.35468 -3.12707
+277.835 -4.48644 -3.48311
+273.702 -4.45697 -3.78124
+268.98 -4.23349 -3.99014
+263.717 -3.78676 -4.07764
+257.999 -3.09436 -4.01282
+251.948 -2.14884 -3.76763
+245.743 -0.978648 -3.3165
+239.691 0.285035 -2.63105
+234.549 1.11861 -1.6603
+233.042 -0.825585 -0.258025
+247.204 -16.7936 2.09943
+332.699 -100.362 7.41525
+740.804 -496.86 23.3372
+2548.05 -2272.65 78.1352
+10066.4 -9803.15 271.543
+39162.8 -39934.4 935.883
+141554 -152797 3099.92
+451060 -541541 9607.91
+1.10097e+06 -1.71621e+06 26686.7
+502244 -4.34378e+06 59067.9
+57773.1 -3.82973e+06 46603.7
+-10948.4 -2.17713e+06 23771.6
+4709.34 -1.10978e+06 12890.4
+-650.769 -601124 7448.26
+-1892.87 -316109 3439.14
+926.947 -161663 1742.02
+159.926 -88510.9 1105.93
+-398.891 -47173.5 514.213
+125.34 -23593.3 236.303
+80.3417 -12814.1 176.922
+-79.6931 -6977.55 84.1782
+12.403 -3415.95 24.7609
+22.7324 -1844.27 23.6543
+-16.922 -1048.51 14.5103
+0.422608 -506.451 2.13328
+6.75084 -278.581 2.9288
+-4.14079 -179.342 3.13277
+-0.345352 -93.9744 0.249334
+2.45116 -66 0.404678
+-2.86875 -72.2933 1.48252
+0.978708 -73.8498 0.380606
+4.48328 -117.684 0.480892
+-8.77512 -229.31 4.05362
+1.08992 -363.384 3.54959
+20.2028 -678.789 3.28962
+-31.7345 -1401.41 20.0106
+-9.37497 -2470.71 30.811
+101.97 -4643.28 34.266
+-121.41 -9489.58 117.71
+-142.023 -17422.8 239.274
+546.435 -32375.1 323.575
+-297.187 -65001.2 722.891
+-1216.48 -122072 1537.18
+2734.08 -224558 2422.02
+542.263 -442760 4855.72
+-6844.45 -847321 10527
+15708.1 -1.58021e+06 18206.4
+-86991 -3.13797e+06 33814.1
+-735543 -5.56303e+06 66725.7
+-1.60341e+06 -6.33277e+06 84845.4
+-653340 -2.50405e+06 38415.3
+-202783 -787434 13827.4
+-55108.4 -220178 4444.75
+-13815.6 -56631.5 1331.05
+-3403.27 -13566.8 381.392
+-984.72 -3037.55 108.264
+-463.55 -631.642 32.2691
+-361.791 -116.865 10.6402
+-348.005 -14.418 3.47967
+-352.409 3.29885 0.214644
+-360.792 4.38297 -1.85759
+-370.145 2.34209 -3.42517
+-379.715 -0.12049 -4.66792
+-389.23 -2.39231 -5.6314
+-398.514 -4.31096 -6.3245
+-407.396 -5.84338 -6.7507
+-415.698 -7.00086 -6.92078
+-423.256 -7.80504 -6.85706
+-429.946 -8.27523 -6.59256
+-435.704 -8.42845 -6.16731
+-440.532 -8.28523 -5.62382
+-444.487 -7.87566 -5.00308
+-447.661 -7.24236 -4.34179
+-450.166 -6.43964 -3.67096
+-452.113 -5.52936 -3.01567
+-453.601 -4.57513 -2.39557
+-454.714 -3.6364 -1.82561
+-455.515 -2.76372 -1.31694
+-456.057 -1.99583 -0.877496
+-456.38 -1.35862 -0.512462
+-456.523 -0.865796 -0.224496
+-456.521 -0.520508 -0.0138694
+-456.413 -0.317533 0.121405
+-456.238 -0.245496 0.185409
+-456.035 -0.28889 0.184071
+-455.846 -0.429824 0.124869
+-455.707 -0.64943 0.0164772
+-455.652 -0.928891 -0.131606
+-455.707 -1.24999 -0.309448
+0 -1.59527 -0.507071
+5238.65 -38.835 -15.5114
+5229.52 -37.2321 -14.6165
+5221.14 -35.2215 -13.5512
+5213.55 -32.9093 -12.369
+5206.74 -30.4278 -11.1378
+5200.66 -27.9391 -9.93867
+5195.2 -25.6346 -8.86346
+5190.17 -23.7298 -8.01266
+5185.35 -22.4556 -7.49187
+5180.48 -22.0444 -7.40796
+5175.22 -22.7127 -7.86446
+5169.17 -24.6402 -8.95657
+5161.86 -27.9459 -10.7656
+5152.72 -32.6646 -13.3527
+5141.04 -38.7258 -16.752
+5125.99 -45.9392 -20.9624
+5106.59 -53.9891 -25.9383
+5081.75 -62.4409 -31.5794
+5050.31 -70.7582 -37.7204
+5011.15 -78.329 -44.1217
+4963.31 -84.4942 -50.4639
+4906.15 -88.5735 -56.3484
+4839.46 -89.883 -61.3069
+4763.56 -87.7471 -64.8209
+4679.33 -81.5161 -66.35
+4588.2 -70.618 -65.3626
+4492.19 -54.6868 -61.356
+4394 -33.8326 -53.8473
+4297.74 -9.21104 -42.3036
+4210.73 15.422 -25.9508
+4149.84 27.8843 -3.26812
+4165.13 -17.3134 29.5159
+4433.64 -304.179 83.3312
+5615.49 -1573.93 192.327
+10095.8 -6663.26 463.69
+25807.4 -25640.9 1219.13
+75925.1 -91007.1 3349.96
+215109 -295371 9047.01
+521071 -856809 22712.8
+900110 -2.11593e+06 49687.5
+457121 -3.93501e+06 83474.7
+89016.2 -3.48999e+06 71047.3
+2926.37 -2.10716e+06 42266.3
+3379.26 -1.11835e+06 23424.6
+-378.293 -601634 13014
+-1213.94 -317502 6635.17
+517.288 -164500 3448.4
+111.365 -88676.4 1946.04
+-238.981 -47140.5 989.036
+71.2326 -24076.2 494.023
+50.8547 -12885.4 292.306
+-47.2672 -6926.8 149.563
+6.60871 -3492.52 65.658
+14.0053 -1863.59 40.9262
+-10.0014 -1031.94 23.2452
+0.0267713 -520.224 8.80717
+4.06461 -284.143 5.79054
+-2.45419 -173.842 4.25264
+-0.277316 -96.9394 1.53156
+1.41318 -68.2097 1.19955
+-1.73296 -69.5933 1.8104
+0.604316 -76.7698 1.30936
+2.57294 -120.624 2.0086
+-5.34101 -222.693 5.48649
+0.885553 -371.633 7.42364
+11.8149 -694.682 12.0264
+-19.5496 -1379.81 31.5033
+-4.48228 -2501.68 54.5061
+60.2476 -4738.63 89.5794
+-76.405 -9416.72 205.682
+-79.2814 -17543.5 398.05
+326.791 -33015.5 678.424
+-200.626 -64906.3 1373.2
+-676.669 -122382 2697.81
+1734.2 -228505 4795.66
+250.502 -444398 9302.97
+-5060.82 -848038 18309.5
+-4690.93 -1.59219e+06 33060.2
+-131829 -3.0342e+06 60011.4
+-669336 -5.06706e+06 101411
+-1.31265e+06 -5.73981e+06 119574
+-756023 -3.09115e+06 71412.6
+-308901 -1.24821e+06 32681.4
+-107346 -426641 12986.9
+-35918.8 -129395 4778.73
+-14070.7 -35553.3 1725.61
+-8059.64 -8881.87 655.464
+-6559.85 -1945.55 276.878
+-6261.16 -286.919 126.523
+-6280.41 62.2225 51.9425
+-6390.31 101.602 5.29496
+-6529.3 68.9464 -28.5852
+-6678.2 21.3014 -54.8936
+-6829.89 -25.6479 -75.5799
+-6981.09 -66.6507 -91.3807
+-7129.32 -100.023 -102.564
+-7271.91 -125.654 -109.291
+-7405.91 -144.067 -111.809
+-7528.48 -155.897 -110.527
+-7637.41 -161.688 -106.012
+-7731.47 -161.893 -98.9297
+-7810.51 -156.986 -89.9792
+-7875.33 -147.566 -79.8279
+-7927.39 -134.424 -69.0693
+-7968.45 -118.529 -58.2013
+-8000.32 -100.968 -47.6232
+-8024.63 -82.8486 -37.6444
+-8042.72 -65.2006 -28.4982
+-8055.68 -48.8983 -20.3556
+-8064.32 -34.6087 -13.3368
+-8069.34 -22.7749 -7.51825
+-8071.35 -13.6258 -2.93725
+-8070.97 -7.20538 0.406007
+-8068.8 -3.40911 2.54639
+-8065.53 -2.02327 3.5512
+-8061.82 -2.76026 3.51657
+-8058.35 -5.28946 2.56272
+-8055.75 -9.26275 0.828627
+-8054.61 -14.3337 -1.5338
+-8055.38 -20.1687 -4.36576
+0 -26.4508 -7.50774
+92021.3 -673.619 -242.971
+91867.4 -644.589 -228.563
+91726.5 -608.257 -211.386
+91599.5 -566.499 -192.308
+91486.2 -521.705 -172.429
+91385.6 -476.823 -153.06
+91295.7 -435.348 -135.695
+91213.5 -401.232 -121.967
+91135.3 -378.718 -113.6
+91056.4 -372.1 -112.341
+90971.1 -385.421 -119.895
+90872.7 -422.1 -137.835
+90753.4 -484.52 -167.519
+90603.5 -573.61 -209.986
+90411.5 -688.473 -265.841
+90163.6 -826.116 -335.12
+89844.1 -981.334 -417.129
+89435.1 -1146.79 -510.28
+88918.5 -1313.25 -611.903
+88276.6 -1469.98 -718.094
+87495.2 -1605.16 -823.612
+86565.2 -1706.2 -921.873
+85484.9 -1760.02 -1005.09
+84261.6 -1753.07 -1064.56
+82911.4 -1671.62 -1091.08
+81458.7 -1502.54 -1075.39
+79936.1 -1235.47 -1008.35
+78386.4 -867.063 -880.635
+76871.1 -408.473 -681.388
+75489.6 101.771 -395.292
+74420.3 570.351 3.18079
+74014.2 770.372 561.533
+75038.8 78.3174 1376.44
+79353 -3404.36 2662.03
+91697.4 -15590 4919.53
+123789 -54068.4 9319.6
+201028 -166382 18405.3
+363692 -462811 36879.6
+625248 -1.13865e+06 70848.9
+814516 -2.35115e+06 120792
+453112 -3.6429e+06 162730
+130544 -3.22715e+06 139885
+25291.4 -2.0386e+06 89793.2
+8396.91 -1.12101e+06 51321.9
+1950.36 -605396 28375.7
+111.565 -320888 15055.2
+656.934 -167671 7948.22
+255.398 -89631.6 4302.33
+-49.5453 -47544.5 2254.38
+82.6046 -24573.7 1165.46
+53.3844 -13048.5 634.671
+-15.8175 -6957.58 332.517
+8.82193 -3566.58 165.489
+11.0325 -1892 91.2134
+-4.54015 -1031.12 49.7646
+0.211321 -532.377 24.1207
+2.2756 -289.952 13.701
+-1.75514 -172.117 8.46689
+-0.719898 -99.382 4.43655
+0.155643 -70.0568 3.20281
+-1.74908 -68.6251 3.43619
+-0.499274 -79.107 3.59841
+0.362078 -123.219 5.56304
+-4.52544 -220.741 10.9042
+-1.26801 -379.778 17.8899
+3.66167 -709.428 32.3259
+-16.6424 -1379.11 66.9423
+-10.6438 -2542.71 122.587
+17.9435 -4834 224.939
+-77.6875 -9456.55 454.417
+-102.676 -17779.7 867.28
+67.0069 -33684.2 1602.19
+-379.521 -65433.3 3118.56
+-889.076 -123745 5967.7
+-153.744 -232892 11079.9
+-2999.71 -448877 21134.6
+-12391.5 -853076 40081.4
+-37520 -1.59498e+06 73011
+-193075 -2.93162e+06 128798
+-666846 -4.68028e+06 202037
+-1.19554e+06 -5.31253e+06 236185
+-915606 -3.43829e+06 175946
+-530123 -1.66307e+06 103204
+-292034 -671281 53514.3
+-180594 -237678 26553.4
+-135445 -74925.8 13404.9
+-118823 -20052.2 7114.62
+-113534 -3074.93 3924.22
+-112744 1585.2 2117.91
+-113823 2352.3 968.854
+-115707 1866.81 167.766
+-117932 987.898 -426.04
+-120291 39.7476 -881.442
+-122692 -833.645 -1232.79
+-125093 -1568.72 -1496.43
+-127459 -2146.59 -1679.93
+-129751 -2572.44 -1787.98
+-131917 -2861.14 -1825.91
+-133910 -3028.43 -1801.27
+-135690 -3087.42 -1723.82
+-137234 -3048.8 -1604.83
+-138535 -2922.77 -1455.91
+-139604 -2721.08 -1288.1
+-140464 -2458.17 -1111.12
+-141143 -2151.2 -933.071
+-141669 -1819.07 -760.386
+-142070 -1480.86 -597.998
+-142368 -1154.29 -449.57
+-142579 -854.297 -317.748
+-142718 -592.271 -204.355
+-142797 -375.708 -110.523
+-142825 -208.392 -36.7657
+-142813 -90.8809 16.9793
+-142771 -21.1391 51.322
+-142710 4.79469 67.3793
+-142642 -7.81024 66.7198
+-142579 -52.9178 51.2923
+-142531 -124.181 23.3423
+-142508 -215.293 -14.6779
+-142518 -320.212 -60.2046
+0 -433.239 -110.661
+1.47634e+06 -1037.23 -1447.89
+1.47252e+06 -1267.99 -1395.38
+1.46926e+06 -1498.51 -1320.26
+1.46658e+06 -1720.92 -1225.02
+1.46451e+06 -1925.98 -1113.59
+1.46304e+06 -2103.4 -991.339
+1.46212e+06 -2242.3 -864.984
+1.46163e+06 -2331.5 -742.657
+1.46146e+06 -2359.82 -633.931
+1.46139e+06 -2316.44 -549.877
+1.46119e+06 -2191.08 -503.119
+1.46058e+06 -1974.35 -507.85
+1.45923e+06 -1657.91 -579.718
+1.45676e+06 -1234.88 -735.446
+1.45277e+06 -700.192 -991.988
+1.44685e+06 -51.1851 -1365.01
+1.43857e+06 711.521 -1866.56
+1.42755e+06 1582.92 -2501.87
+1.41345e+06 2552.2 -3265.65
+1.39603e+06 3600.99 -4138.16
+1.3752e+06 4701.46 -5082.1
+1.35104e+06 5813.94 -6041.02
+1.32391e+06 6883.98 -6940.35
+1.2944e+06 7838.11 -7691.21
+1.26346e+06 8576.62 -8196.49
+1.23237e+06 8961.22 -8356.72
+1.20283e+06 8793.46 -8071.43
+1.17699e+06 7778.23 -7229.72
+1.1576e+06 5462.82 -5682.72
+1.14832e+06 1133.09 -3189.64
+1.15415e+06 -6375.04 676.879
+1.18227e+06 -19050.6 6702.81
+1.24345e+06 -40509.2 16385.1
+1.35416e+06 -77742.7 32714.4
+1.539e+06 -144772 61875.4
+1.83056e+06 -269345 116464
+2.25579e+06 -501909 219836
+2.78506e+06 -917052 406651
+3.21934e+06 -1.57471e+06 703707
+3.09384e+06 -2.38463e+06 1.06559e+06
+2.02951e+06 -2.89764e+06 1.28215e+06
+987588 -2.4772e+06 1.07238e+06
+422334 -1.6525e+06 697296
+182537 -973550 402257
+78407.9 -547003 222623
+34326.3 -298767 120192
+16676.7 -160430 64175.8
+7915.33 -86041.6 34411.8
+3609.12 -45806.1 18309.6
+1905.49 -24109.9 9648.15
+968.347 -12748.8 5131.08
+425.595 -6742.79 2718.98
+230.123 -3527.18 1420.61
+120.357 -1864.44 756.071
+40.8533 -997.158 406.3
+16.0933 -528.998 214.434
+2.94195 -288.129 117.402
+-11.4199 -164.992 67.846
+-15.5392 -98.9974 40.3518
+-18.0514 -70.0881 28.6544
+-23.8934 -65.5673 27.1588
+-26.3314 -79.4786 32.5388
+-31.8942 -122.298 50.0928
+-49.7632 -212.043 87.5585
+-66.0545 -378.145 154.667
+-100.55 -703.495 286.547
+-205.686 -1334.75 546.233
+-348.704 -2509.65 1021.47
+-618.732 -4775.87 1931.38
+-1355.97 -9165.58 3711.19
+-2610.33 -17392.6 7026.06
+-4952.81 -33041 13272.9
+-10890.7 -63031 25302.7
+-22885.3 -118886 47770.3
+-47326.4 -222897 89655.2
+-108936 -417965 169324
+-254761 -771575 316817
+-593005 -1.38768e+06 579681
+-1.39711e+06 -2.38441e+06 1.01923e+06
+-2.88604e+06 -3.61385e+06 1.58678e+06
+-4.40807e+06 -4.25309e+06 1.90963e+06
+-4.57845e+06 -3.49309e+06 1.58434e+06
+-3.94745e+06 -2.28905e+06 1.0386e+06
+-3.18697e+06 -1.31725e+06 593234
+-2.58119e+06 -710626 316122
+-2.16901e+06 -375804 164879
+-1.90915e+06 -199328 86140.6
+-1.75394e+06 -105696 44591.9
+-1.66811e+06 -54157.5 21554.7
+-1.62855e+06 -24554.5 8008.09
+-1.62049e+06 -7030.04 -393.727
+-1.63434e+06 3445.62 -5854.74
+-1.66363e+06 9622.98 -9543.03
+-1.70374e+06 13103.3 -12064.3
+-1.75108e+06 14853.8 -13700.4
+-1.80271e+06 15467.4 -14563.2
+-1.85605e+06 15312.1 -14704.2
+-1.9089e+06 14622.8 -14184.4
+-1.95941e+06 13558.8 -13104.9
+-2.00615e+06 12236.8 -11606.9
+-2.04809e+06 10748.3 -9854.18
+-2.08459e+06 9167.06 -8008.97
+-2.11538e+06 7552.42 -6211.62
+-2.1405e+06 5950.97 -4567.7
+-2.16018e+06 4398.09 -3143.87
+-2.17483e+06 2919.9 -1970.9
+-2.18495e+06 1535.54 -1051.19
+-2.19111e+06 259.38 -367.914
+-2.19389e+06 -897.27 106.272
+-2.19388e+06 -1924.98 402.477
+-2.19166e+06 -2815.73 551.151
+-2.18779e+06 -3562.98 579.847
+-2.18281e+06 -4162.08 512.551
+-2.17722e+06 -4610.77 369.903
+-2.17146e+06 -4909.73 169.745
+-2.16595e+06 -5062.85 -72.2898
+-2.16104e+06 -5077.36 -342.272
+-2.15702e+06 -4963.7 -627.553
+-2.15413e+06 -4735.05 -916.471
+-2.15254e+06 -4406.71 -1198.25
+0 -3995.06 -1463.19
+3.08253e+06 -2159.23 -2965.98
+3.076e+06 -3203.98 -2915.27
+3.07081e+06 -4273.14 -2804.77
+3.06709e+06 -5327.54 -2633.86
+3.06488e+06 -6321.28 -2405.36
+3.06419e+06 -7203.05 -2125.88
+3.0649e+06 -7917.69 -1806.37
+3.0668e+06 -8408.01 -1462.61
+3.06958e+06 -8616.86 -1115.8
+3.07282e+06 -8489.3 -792.961
+3.07596e+06 -7975.1 -527.302
+3.07833e+06 -7031.25 -358.165
+3.07914e+06 -5624.63 -330.532
+3.07753e+06 -3734.87 -493.68
+3.07251e+06 -1357.16 -898.597
+3.06309e+06 1494.57 -1593.76
+3.04826e+06 4784.42 -2618.99
+3.02708e+06 8451.06 -3997.4
+2.99874e+06 12404.2 -5725.85
+2.96269e+06 16520.8 -7765.03
+2.91871e+06 20642.1 -10030.6
+2.86706e+06 24569.5 -12387.4
+2.80856e+06 28061.5 -14648.3
+2.74476e+06 30827.7 -16579.4
+2.67796e+06 32520 -17909.3
+2.61132e+06 32714.5 -18339.3
+2.54888e+06 30879.5 -17545.4
+2.49566e+06 26318.9 -15158.8
+2.45773e+06 18079.1 -10709.1
+2.44253e+06 4795.51 -3505.96
+2.45923e+06 -15565.3 7575.83
+2.5194e+06 -46168.5 24494.7
+2.63781e+06 -92176.9 50841.3
+2.83275e+06 -162344 93547.5
+3.12422e+06 -271620 166493
+3.52446e+06 -444224 297281
+4.01027e+06 -713622 536651
+4.46543e+06 -1.10924e+06 960877
+4.61335e+06 -1.61301e+06 1.63374e+06
+4.07079e+06 -2.08376e+06 2.46845e+06
+2.77208e+06 -2.23035e+06 3.00852e+06
+1.52808e+06 -1.84571e+06 2.59091e+06
+754024 -1.25941e+06 1.74439e+06
+359580 -771811 1.03744e+06
+168683 -448377 588197
+79309.3 -251977 324094
+38358.4 -138608 175459
+18614.8 -75360.7 94817.7
+9004.33 -40533.9 50861.6
+4512.03 -21593.4 26965.4
+2258.92 -11469.8 14349.4
+1094.01 -6076.75 7636.54
+545.927 -3206.16 4018.8
+265.384 -1698.17 2134.5
+109.086 -905.196 1147.05
+35.3879 -484.38 611.499
+-3.03749 -264.398 333.855
+-27.7728 -150.097 191.593
+-40.5258 -91.0379 115.442
+-49.0584 -64.6318 81.8407
+-58.4295 -59.783 76.5516
+-67.8364 -73.3976 93.0394
+-83.6278 -112.404 143.111
+-114.809 -193.103 247.167
+-164.448 -347.268 439.814
+-262.665 -643.865 815.735
+-470.277 -1211.97 1539.28
+-844.727 -2286.65 2879.53
+-1587.76 -4339.45 5450.53
+-3166.3 -8259.34 10390.7
+-6220.18 -15650.5 19584.6
+-12361.5 -29585.7 36946.4
+-25541.3 -55766.8 69919.3
+-52647.5 -104145 130783
+-109189 -192610 243147
+-233290 -352647 451773
+-499523 -633253 825861
+-1.05328e+06 -1.10283e+06 1.47051e+06
+-2.14944e+06 -1.82446e+06 2.50089e+06
+-3.92372e+06 -2.70758e+06 3.75377e+06
+-5.77878e+06 -3.29293e+06 4.38563e+06
+-6.53532e+06 -3.06658e+06 3.59328e+06
+-6.30012e+06 -2.3512e+06 2.36281e+06
+-5.63492e+06 -1.59591e+06 1.37591e+06
+-4.93656e+06 -1.01284e+06 759555
+-4.36622e+06 -623533 415828
+-3.95238e+06 -378894 230069
+-3.67524e+06 -226342 127219
+-3.50601e+06 -129106 67152.5
+-3.41934e+06 -65191 30003.8
+-3.39547e+06 -22085.3 5923.62
+-3.41933e+06 7418.27 -10193.2
+-3.47913e+06 27648.5 -21105.2
+-3.56526e+06 41315 -28312.4
+-3.66951e+06 50161 -32617.7
+-3.78461e+06 55332.1 -34473
+-3.90413e+06 57607.3 -34206.3
+-4.02249e+06 57549.1 -32153.6
+-4.13507e+06 55599.2 -28710.2
+-4.23832e+06 52132.2 -24323.7
+-4.32975e+06 47482.5 -19454.3
+-4.40789e+06 41954.9 -14527.7
+-4.47218e+06 35826.6 -9895.88
+-4.52277e+06 29346.7 -5814.76
+-4.56039e+06 22735.9 -2439.27
+-4.58615e+06 16187.1 167.341
+-4.6014e+06 9866.77 2015.29
+-4.60763e+06 3916.46 3166.58
+-4.60637e+06 -1545.41 3714.31
+-4.59914e+06 -6422.62 3765.55
+-4.58739e+06 -10640.7 3429.01
+-4.57249e+06 -14146.6 2807.25
+-4.5557e+06 -16909 1992.46
+-4.53816e+06 -18917.8 1064.56
+-4.52087e+06 -20183.3 90.7334
+-4.50469e+06 -20735.5 -874.319
+-4.49034e+06 -20621.7 -1787.65
+-4.4784e+06 -19904.2 -2616.93
+-4.4693e+06 -18657.3 -3339.16
+-4.46334e+06 -16963.5 -3939.42
+0 -14909.9 -4409.95
+4.74834e+06 -3544.87 -4625.72
+4.73787e+06 -5620.93 -4563.37
+4.7292e+06 -7753.78 -4396.32
+4.72253e+06 -9864.16 -4120.56
+4.71799e+06 -11859.5 -3737.95
+4.71562e+06 -13636.6 -3257.18
+4.71533e+06 -15084.5 -2694.85
+4.71688e+06 -16088.6 -2076.65
+4.7199e+06 -16534.7 -1438.46
+4.72383e+06 -16314.4 -827.248
+4.72793e+06 -15329.9 -301.604
+4.7313e+06 -13500.2 68.3818
+4.73283e+06 -10766.6 202.162
+4.73128e+06 -7098.67 11.289
+4.72526e+06 -2500.29 -595.94
+4.71329e+06 2984.76 -1707.11
+4.69388e+06 9267.08 -3395.18
+4.66561e+06 16206.5 -5704.83
+4.62724e+06 23607 -8636.32
+4.57788e+06 31213.3 -12128.5
+4.5171e+06 38707.2 -16043.1
+4.44517e+06 45706.4 -20153.3
+4.36322e+06 51764.2 -24139
+4.27336e+06 56368.4 -27591.7
+4.17886e+06 58939.8 -30025.3
+4.08419e+06 58821.2 -30889.4
+3.99509e+06 55254.3 -29570.9
+3.91855e+06 47330.9 -25364.9
+3.86287e+06 33906.4 -17388
+3.83781e+06 13454.8 -4397.58
+3.85488e+06 -16171.6 15543.6
+3.92775e+06 -58149.3 45698.8
+4.07269e+06 -117382 91934.8
+4.30811e+06 -201611 165478
+4.65093e+06 -322786 288803
+5.1038e+06 -497437 506936
+5.62218e+06 -742383 903861
+6.05251e+06 -1.05915e+06 1.60904e+06
+6.07127e+06 -1.40276e+06 2.73842e+06
+5.27029e+06 -1.65165e+06 4.16452e+06
+3.62912e+06 -1.64051e+06 5.12985e+06
+2.06378e+06 -1.3234e+06 4.48044e+06
+1.05817e+06 -910355 3.06149e+06
+523260 -570183 1.84439e+06
+254261 -338974 1.05729e+06
+123219 -194718 588395
+60764 -109192 320992
+30073.7 -60207.5 174392
+14836.8 -32741.7 94056.6
+7472.92 -17615.5 50106.9
+3770.2 -9418.04 26735
+1855.83 -5012.83 14277.6
+919.586 -2660.12 7545.44
+443.452 -1413.92 4011.47
+184.482 -754.771 2159.94
+54.9305 -405.654 1157.82
+-12.3298 -222.015 632.335
+-52.7638 -125.961 362.537
+-75.5428 -76.745 220.02
+-90.9018 -54.6257 156.099
+-106.091 -50.4251 145.257
+-123.218 -62.0811 177.376
+-151.166 -94.7927 272.226
+-202.257 -162.177 466.925
+-289.527 -291.747 831.608
+-461.139 -539.205 1540.6
+-804.688 -1010.61 2890.74
+-1441.01 -1903.83 5396.81
+-2705.02 -3599.38 10198.7
+-5290.16 -6811.86 19350.6
+-10300.3 -12849.4 36332.9
+-20325.1 -24131.5 68313.2
+-41113.5 -45043.8 128553
+-83052.4 -83221.1 238963
+-168784 -151805 441446
+-349446 -272773 812893
+-721770 -479648 1.46921e+06
+-1.46662e+06 -817319 2.58376e+06
+-2.87804e+06 -1.3248e+06 4.33251e+06
+-5.09042e+06 -1.95226e+06 6.40311e+06
+-7.41454e+06 -2.43656e+06 7.37556e+06
+-8.52859e+06 -2.44541e+06 5.98009e+06
+-8.47257e+06 -2.05613e+06 3.90769e+06
+-7.84099e+06 -1.53162e+06 2.2742e+06
+-7.09603e+06 -1.05937e+06 1.26369e+06
+-6.45103e+06 -703354 701317
+-5.96411e+06 -455631 395349
+-5.62894e+06 -286911 223287
+-5.42126e+06 -170552 120596
+-5.31615e+06 -88241.6 55580.4
+-5.29241e+06 -28628.1 12559.7
+-5.33262e+06 15189.3 -16622.3
+-5.42223e+06 47489 -36427.6
+-5.54856e+06 70997.7 -49357.1
+-5.70019e+06 87496 -56840.9
+-5.86669e+06 98186.8 -59775.1
+-6.03864e+06 103936 -58863.8
+-6.20783e+06 105433 -54810.3
+-6.36751e+06 103283 -48386.2
+-6.51257e+06 98064.5 -40415.3
+-6.63952e+06 90337.5 -31711.6
+-6.74643e+06 80650.1 -23008.7
+-6.83275e+06 69528.5 -14903.1
+-6.89901e+06 57468 -7823.5
+-6.94655e+06 44925.6 -2026.14
+-6.97729e+06 32315.4 2387.73
+-6.99346e+06 20005.5 5441.69
+-6.99746e+06 8316.57 7248.56
+-6.99167e+06 -2478.94 7976.33
+-6.97843e+06 -12157.8 7819.56
+-6.95988e+06 -20546.4 6978.03
+-6.93802e+06 -27521.1 5642.56
+-6.9146e+06 -33007.7 3986.45
+-6.89117e+06 -36980.1 2160.91
+-6.86901e+06 -39457.7 293.066
+-6.84919e+06 -40501.7 -1514.37
+-6.83256e+06 -40210.2 -3182.3
+-6.81974e+06 -38712 -4653.5
+-6.81114e+06 -36160.1 -5890.16
+-6.80702e+06 -32724 -6871.41
+0 -28582 -7591.07
+6.05692e+06 -4207.76 -6050.19
+6.04123e+06 -6839.49 -5932.9
+6.02703e+06 -9546.58 -5669.58
+6.0146e+06 -12227.7 -5255.34
+6.00419e+06 -14764.8 -4693.65
+5.99592e+06 -17026.6 -3997.68
+5.98984e+06 -18872.1 -3191.8
+5.98583e+06 -20156.2 -2313.2
+5.98363e+06 -20735 -1413.37
+5.98279e+06 -20472.8 -559.151
+5.98266e+06 -19249.2 166.62
+5.98239e+06 -16966.1 665.501
+5.98089e+06 -13556 825.074
+5.97689e+06 -8989.24 522.621
+5.96893e+06 -3281.27 -368.422
+5.95539e+06 3500.61 -1968.42
+5.9346e+06 11231.1 -4377.33
+5.90489e+06 19721.9 -7656.41
+5.86477e+06 28717.6 -11806.6
+5.81304e+06 37892.8 -16745.4
+5.74902e+06 46852.4 -22285.4
+5.67273e+06 55132.5 -28117.7
+5.58514e+06 62205.1 -33804.1
+5.48833e+06 67484.1 -38780
+5.38567e+06 70331 -42366.7
+5.28192e+06 70056.2 -43786
+5.18325e+06 65908.2 -42161.6
+5.0973e+06 57041.4 -36482.9
+5.03319e+06 42449.8 -25496
+5.00169e+06 20849.2 -7474.97
+5.01547e+06 -9513.52 20211.3
+5.08963e+06 -51165.9 61926.5
+5.2421e+06 -107884 125470
+5.49316e+06 -185337 225808
+5.86154e+06 -291580 393160
+6.35058e+06 -436180 688777
+6.91169e+06 -625230 1.22845e+06
+7.37335e+06 -848880 2.19362e+06
+7.36487e+06 -1.06296e+06 3.75303e+06
+6.40044e+06 -1.18227e+06 5.74442e+06
+4.42884e+06 -1.121e+06 7.12614e+06
+2.53698e+06 -887591 6.27395e+06
+1.31358e+06 -611725 4.32428e+06
+657844 -387683 2.62771e+06
+324307 -233945 1.51885e+06
+159390 -136495 851923
+79645.4 -77643.5 467901
+39940.8 -43304.4 255631
+19929.9 -23767.8 138627
+10120.6 -12887.8 74221
+5148.34 -6931.17 39748
+2552.35 -3705.85 21306.2
+1266 -1974.97 11304.6
+610.198 -1053.23 6024.84
+251.832 -563.615 3252.99
+69.2767 -303.853 1751.04
+-25.3097 -166.713 957.955
+-81.74 -94.7209 549.944
+-114.455 -57.8843 335.482
+-136.546 -41.3061 238.394
+-157.856 -38.145 221.326
+-182.537 -46.9716 270.608
+-222.584 -71.545 414.243
+-293.883 -122.046 706.862
+-416.625 -219.181 1257.04
+-657.737 -403.95 2323.51
+-1132 -754.688 4340.85
+-2006.88 -1418.1 8079.79
+-3737.54 -2671.94 15222.7
+-7229.4 -5035.31 28755.6
+-13932.8 -9456.26 53769.1
+-27226.5 -17656.1 100659
+-54381.4 -32705.7 188344
+-108330 -59887.1 347965
+-217099 -108040 638704
+-442791 -191488 1.16716e+06
+-900675 -331806 2.09123e+06
+-1.80557e+06 -557669 3.64468e+06
+-3.5057e+06 -894335 6.05637e+06
+-6.15206e+06 -1.31641e+06 8.87365e+06
+-8.91765e+06 -1.67463e+06 1.01428e+07
+-1.02532e+07 -1.76146e+06 8.16713e+06
+-1.02394e+07 -1.568e+06 5.30229e+06
+-9.57228e+06 -1.23536e+06 3.06918e+06
+-8.77565e+06 -898301 1.70009e+06
+-8.08653e+06 -622113 943498
+-7.5689e+06 -416997 533232
+-7.21604e+06 -269592 302058
+-7.00172e+06 -163082 163099
+-6.89882e+06 -84426.7 74234.6
+-6.88414e+06 -25010.1 14846.8
+-6.93851e+06 20564.1 -25728.7
+-7.04578e+06 55651.9 -53336
+-7.19178e+06 82349.4 -71293.6
+-7.36367e+06 101981 -81555.1
+-7.5497e+06 115422 -85398.8
+-7.73932e+06 123318 -83859.9
+-7.92346e+06 126226 -77965.8
+-8.0948e+06 124698 -68819.2
+-8.24796e+06 119317 -57571.4
+-8.37955e+06 110692 -45343.7
+-8.48799e+06 99457 -33136.3
+-8.57326e+06 86242.6 -21758.7
+-8.63659e+06 71664.5 -11791.9
+-8.68006e+06 56306.4 -3585.14
+-8.70635e+06 40709.3 2720.37
+-8.71836e+06 25363.8 7151.3
+-8.71907e+06 10703.5 9855.18
+-8.71135e+06 -2898.69 11055.5
+-8.69785e+06 -15134.7 11014
+-8.68095e+06 -25763.4 10001.6
+-8.66269e+06 -34611.5 8279.75
+-8.6448e+06 -41573.6 6087.86
+-8.62869e+06 -46609.5 3636.67
+-8.61544e+06 -49740.7 1104.85
+-8.60584e+06 -51044.4 -1362.04
+-8.60041e+06 -50646.4 -3650.98
+-8.59944e+06 -48713.1 -5679.37
+-8.60303e+06 -45441.6 -7392.04
+-8.61106e+06 -41050.5 -8757.85
+0 -35769.5 -9766.63
+6.88356e+06 -3444.85 -7051.07
+6.86236e+06 -5657.69 -6844.52
+6.84177e+06 -7934.95 -6460.9
+6.82215e+06 -10191 -5897.28
+6.80383e+06 -12326.4 -5161.12
+6.78709e+06 -14230.3 -4271.84
+6.77215e+06 -15784.4 -3262.51
+6.75912e+06 -16866.7 -2181.58
+6.74798e+06 -17357.1 -1094.44
+6.73855e+06 -17142.7 -84.4633
+6.73047e+06 -16124.4 746.567
+6.72317e+06 -14222.8 1279.12
+6.71584e+06 -11385.1 1378.14
+6.70743e+06 -7591.37 897.531
+6.69669e+06 -2860.47 -312.09
+6.68213e+06 2744.81 -2391.57
+6.66213e+06 9113.17 -5456.64
+6.63501e+06 16081.4 -9576.56
+6.59912e+06 23432.2 -14748.9
+6.55307e+06 30893.3 -20872.9
+6.49586e+06 38139.1 -27723.7
+6.42714e+06 44793.5 -34933
+6.34742e+06 50436.1 -41978.7
+6.25832e+06 54609.8 -48187.2
+6.16273e+06 56829.2 -52746.3
+6.06497e+06 56585.8 -54721.1
+5.97087e+06 53345.4 -53055.5
+5.88782e+06 46529.1 -46531.5
+5.8249e+06 35469.7 -33646.1
+5.79302e+06 19333 -12350.3
+5.80532e+06 -3006.48 20449.8
+5.87771e+06 -33150.3 69856.5
+6.02942e+06 -73434.2 144987
+6.28279e+06 -127225 263412
+6.65969e+06 -198991 460892
+7.16756e+06 -293334 810558
+7.76065e+06 -411362 1.4519e+06
+8.26024e+06 -543052 2.60562e+06
+8.26055e+06 -658222 4.48094e+06
+7.20455e+06 -707924 6.89155e+06
+5.00069e+06 -652898 8.58663e+06
+2.87215e+06 -510633 7.5945e+06
+1.49266e+06 -351795 5.26381e+06
+751963 -224290 3.21977e+06
+373432 -136553 1.874e+06
+185009 -80472.4 1.0582e+06
+93263.6 -46211.6 584821
+47171.5 -25978.7 321324
+23704.6 -14352.1 175173
+12113 -7825.12 94231.4
+6200.13 -4226.39 50662.3
+3087.16 -2266.99 27259.1
+1533.49 -1211.49 14517.6
+738.687 -647.601 7759.82
+301.606 -347.267 4201.35
+77.1295 -187.616 2268.98
+-39.2214 -103.122 1244.16
+-108.867 -58.6755 715.813
+-149.795 -35.9352 438.295
+-177.457 -25.6996 311.99
+-203.938 -23.7536 289.412
+-234.841 -29.2381 353.753
+-284.89 -44.4449 540.213
+-372.847 -75.652 918.312
+-523.729 -135.638 1629.17
+-819.596 -249.475 3003.4
+-1396.82 -465.04 5591.66
+-2454.98 -871.983 10376.4
+-4539.14 -1639.04 19484
+-8712.56 -3080.38 36653.8
+-16658.3 -5766.72 68255.1
+-32308.4 -10722.6 127212
+-64013.1 -19756.7 236780
+-126345 -35949.1 434921
+-250827 -64365 793344
+-507143 -113060 1.43994e+06
+-1.02334e+06 -194097 2.56161e+06
+-2.03803e+06 -323618 4.43258e+06
+-3.9402e+06 -516297 7.31795e+06
+-6.89476e+06 -760634 1.06673e+07
+-9.96564e+06 -979939 1.21441e+07
+-1.14247e+07 -1.0602e+06 9.7381e+06
+-1.14072e+07 -976262 6.29144e+06
+-1.07009e+07 -794778 3.62198e+06
+-9.87297e+06 -594748 1.99572e+06
+-9.16884e+06 -421748 1.10273e+06
+-8.64894e+06 -288009 620999
+-8.30171e+06 -188785 350179
+-8.09717e+06 -115138 187204
+-8.00552e+06 -59414.9 82606.6
+-8.00163e+06 -16314.9 12395.7
+-8.06493e+06 17558.6 -35761.7
+-8.17822e+06 44311.1 -68608.2
+-8.3267e+06 65215.9 -89980.7
+-8.49713e+06 81030.2 -102156
+-8.67771e+06 92222.4 -106645
+-8.85804e+06 99132.9 -104686
+-9.02945e+06 102080 -97511.9
+-9.18525e+06 101415 -86439.4
+-9.32085e+06 97545.1 -72837.2
+-9.43375e+06 90927 -58033.2
+-9.52334e+06 82053.3 -43210.8
+-9.59056e+06 71433.1 -29328.6
+-9.63754e+06 59573.7 -17078.5
+-9.66717e+06 46966 -6881.89
+-9.68274e+06 34072.2 1082.42
+-9.68767e+06 21316.7 6831.73
+-9.68521e+06 9078.66 10525.5
+-9.67833e+06 -2313.51 12413.6
+-9.66961e+06 -12586.7 12792.7
+-9.66121e+06 -21526 11973.3
+-9.65481e+06 -28976.2 10257.5
+-9.65168e+06 -34841.7 7924.53
+-9.65266e+06 -39084.3 5222.7
+-9.65824e+06 -41719.7 2365.09
+-9.6686e+06 -42812.4 -472.308
+-9.68363e+06 -42468.8 -3150.34
+-9.70303e+06 -40830.2 -5564.74
+-9.72635e+06 -38064.3 -7643.04
+-9.75298e+06 -34356.8 -9340.94
+0 -29902.9 -10639
+7.30379e+06 -1330.41 -7613.48
+7.2784e+06 -2193.69 -7324.12
+7.25272e+06 -3082.24 -6839.22
+7.22716e+06 -3962.58 -6158.57
+7.20214e+06 -4795.84 -5293.77
+7.17805e+06 -5538.78 -4269.78
+7.15527e+06 -6145.18 -3126.62
+7.13411e+06 -6567.58 -1921.1
+7.11479e+06 -6759.25 -728.231
+7.09741e+06 -6676.45 357.81
+7.08188e+06 -6280.91 1223.52
+7.06794e+06 -5542.3 1737
+7.05508e+06 -4440.86 1750.58
+7.04253e+06 -2969.83 1105.85
+7.02928e+06 -1137.68 -357.94
+7.01403e+06 1029.86 -2791.08
+6.99531e+06 3488.26 -6315.63
+6.97146e+06 6172.95 -11002.6
+6.94081e+06 8998.77 -16844.9
+6.9018e+06 11860 -23729
+6.85319e+06 14630.9 -31407.3
+6.79429e+06 17167.9 -39477.2
+6.72517e+06 19311.6 -47370.1
+6.64696e+06 20890.8 -54353.4
+6.562e+06 21725.9 -59544.1
+6.47406e+06 21631.6 -61925.7
+6.38844e+06 20416.4 -60350
+6.31211e+06 17876.7 -53494
+6.25379e+06 13780.4 -39729.6
+6.22419e+06 7839.38 -16844.5
+6.23645e+06 -333.916 18492.3
+6.30667e+06 -11287.3 71765.8
+6.45464e+06 -25808.4 152785
+6.70385e+06 -45004.5 280512
+7.07834e+06 -70287.4 493726
+7.58914e+06 -102977 872170
+8.19441e+06 -143007 1.56875e+06
+8.71447e+06 -186379 2.82665e+06
+8.72578e+06 -222520 4.87864e+06
+7.62941e+06 -235590 7.52558e+06
+5.306e+06 -214455 9.39927e+06
+3.05272e+06 -166698 8.33308e+06
+1.59033e+06 -114772 5.79487e+06
+804004 -73357.3 3.56034e+06
+400974 -44848.4 2.08234e+06
+199644 -26559.9 1.18145e+06
+101210 -15324.7 655971
+51452.2 -8649.98 362010
+25961.3 -4795.01 198138
+13320.1 -2621.85 106954
+6845.39 -1419.21 57678.6
+3417.02 -762.474 31126.7
+1698.52 -407.998 16625
+817.337 -218.352 8906.66
+330.979 -117.22 4831.99
+80.2608 -63.3978 2615.38
+-49.914 -34.8769 1436.97
+-128.174 -19.8606 828.333
+-174.437 -12.1783 508.336
+-205.713 -8.72113 362.292
+-235.593 -8.06573 336.006
+-270.519 -9.9244 410.449
+-327.064 -15.0681 625.755
+-425.863 -25.6172 1061.23
+-594.564 -45.8876 1878.82
+-924.606 -84.3146 3456.09
+-1566.06 -156.988 6419.37
+-2737.54 -294.025 11885.9
+-5038.35 -552.016 22261
+-9624.95 -1036.11 41749
+-18307.9 -1936.65 77493.8
+-35335.1 -3593.31 143942
+-69680.4 -6602.49 266909
+-136772 -11974.8 488172
+-269898 -21358 886270
+-542771 -37349.4 1.60072e+06
+-1.09017e+06 -63831 2.83371e+06
+-2.16275e+06 -106032 4.87984e+06
+-4.17046e+06 -168809 8.02349e+06
+-7.28568e+06 -248919 1.1664e+07
+-1.05134e+07 -322728 1.32547e+07
+-1.20286e+07 -353855 1.06054e+07
+-1.20042e+07 -331067 6.83123e+06
+-1.12812e+07 -273676 3.91774e+06
+-1.04478e+07 -207535 2.1495e+06
+-9.74962e+06 -148777 1.1827e+06
+-9.24216e+06 -102468 663217
+-8.90961e+06 -67589 371915
+-8.71936e+06 -41376.7 196714
+-8.64003e+06 -21324.3 84162
+-8.64539e+06 -5647.86 8476.56
+-8.71408e+06 6810.41 -43542.6
+-8.82844e+06 16767.4 -79095.2
+-8.97338e+06 24647.2 -102270
+-9.13572e+06 30690.7 -115490
+-9.30393e+06 35037.2 -120365
+-9.46816e+06 37785 -118221
+-9.62048e+06 39031.1 -110381
+-9.75508e+06 38892 -98264.9
+-9.86834e+06 37510.1 -83351
+-9.95878e+06 35052.6 -67074.9
+-1.00268e+07 31703.8 -50718.8
+-1.00741e+07 27657.6 -35324.6
+-1.01038e+07 23109.8 -21648.9
+-1.01194e+07 18251.7 -10158.6
+-1.01246e+07 13265.1 -1060.47
+-1.01231e+07 8317.76 5649.34
+-1.01184e+07 3560.45 10128.2
+-1.01133e+07 -875.728 12631.8
+-1.01102e+07 -4881.41 13468
+-1.0111e+07 -8370.32 12962
+-1.01168e+07 -11279.9 11432.3
+-1.01284e+07 -13571.5 9175.78
+-1.01461e+07 -15229.3 6458.89
+-1.01697e+07 -16258.8 3512.46
+-1.01989e+07 -16685.2 529.598
+-1.02329e+07 -16550 -2334.49
+-1.0271e+07 -15908.7 -4960.91
+-1.0312e+07 -14827.1 -7264.17
+-1.03551e+07 -13378.1 -9188.68
+0 -11638 -10705.6
+7.42853e+06 1330.4 -7791.18
+7.40156e+06 2193.69 -7468.33
+7.37395e+06 3082.24 -6943.87
+7.34611e+06 3962.58 -6218.84
+7.31847e+06 4795.84 -5306.58
+7.2915e+06 5538.78 -4234.25
+7.26562e+06 6145.18 -3044.54
+7.24124e+06 6567.58 -1797.33
+7.21866e+06 6759.25 -571.101
+7.19808e+06 6676.45 536.241
+7.17956e+06 6280.91 1407.26
+7.16294e+06 5542.3 1906.05
+7.14784e+06 4440.86 1881.03
+7.13362e+06 2969.83 1170.09
+7.11936e+06 1137.68 -390.718
+7.10386e+06 -1029.86 -2954.18
+7.08569e+06 -3488.26 -6643.73
+7.06323e+06 -6172.95 -11530.2
+7.0348e+06 -8998.77 -17604.6
+6.99878e+06 -11860 -24748.5
+6.95385e+06 -14630.9 -32706.8
+6.89915e+06 -17167.9 -41066
+6.83461e+06 -19311.6 -49242.9
+6.76113e+06 -20890.8 -56487.1
+6.68084e+06 -21725.9 -61894.3
+6.59727e+06 -21631.6 -64424.2
+6.5155e+06 -20416.4 -62902.1
+6.44229e+06 -17876.7 -55975.1
+6.38619e+06 -13780.4 -41979.8
+6.35779e+06 -7839.38 -18656.9
+6.37014e+06 333.917 17392.7
+6.43935e+06 11287.3 71766.5
+6.58529e+06 25808.4 154477
+6.83178e+06 45004.5 284901
+7.20359e+06 70287.4 502729
+7.71305e+06 102977 889735
+8.32005e+06 143007 1.603e+06
+8.84532e+06 186379 2.89276e+06
+8.8605e+06 222520 4.99925e+06
+7.75376e+06 235590 7.71952e+06
+5.39622e+06 214455 9.64903e+06
+3.10673e+06 166698 8.56082e+06
+1.62001e+06 114772 5.95988e+06
+820063 73357.3 3.66753e+06
+409592 44848.4 2.14884e+06
+204302 26559.9 1.22131e+06
+103782 15324.7 679281
+52851.3 8649.98 375508
+26703.7 4795.01 205831
+13721 2621.85 111249
+7061.53 1419.21 60065
+3527.86 762.474 32451.9
+1753.87 407.998 17351.6
+843.546 218.352 9304.02
+340.558 117.22 5051.28
+80.9847 63.3978 2736.27
+-53.9173 34.8769 1504.59
+-135.167 19.8606 867.974
+-183.27 12.1783 533.061
+-215.79 8.72113 380.074
+-246.848 8.06573 352.49
+-283.156 9.9244 430.467
+-341.941 15.0681 655.898
+-444.5 25.6172 1111.47
+-619.284 45.8876 1966.17
+-960.842 84.3146 3613.67
+-1623.94 156.988 6706.36
+-2833.57 294.025 12407.3
+-5207.06 552.016 23215
+-9931.19 1036.11 43487.6
+-18855.7 1936.65 80621.8
+-36329.4 3593.31 149561
+-71527.7 6602.49 276944
+-140135 11974.8 505724
+-275939 21358 916496
+-553850 37349.4 1.65231e+06
+-1.11064e+06 63831 2.9199e+06
+-2.20034e+06 106032 5.01967e+06
+-4.23882e+06 168809 8.24182e+06
+-7.40063e+06 248919 1.19712e+07
+-1.06734e+07 322728 1.35971e+07
+-1.22039e+07 353855 1.08721e+07
+-1.21775e+07 331067 6.99581e+06
+-1.14518e+07 273676 4.00662e+06
+-1.06203e+07 207535 2.19473e+06
+-9.92797e+06 148777 1.20556e+06
+-9.42791e+06 102468 674840
+-9.10284e+06 67589 377539
+-8.91927e+06 41376.7 198797
+-8.84534e+06 21324.3 83951.8
+-8.85453e+06 5647.86 6687.45
+-8.92526e+06 -6810.41 -46452.9
+-9.03971e+06 -16767.4 -82801.7
+-9.18276e+06 -24647.2 -106518
+-9.34126e+06 -30690.7 -120063
+-9.50384e+06 -35037.2 -125069
+-9.66091e+06 -37785 -122882
+-9.80486e+06 -39031.1 -114848
+-9.93028e+06 -38892 -102417
+-1.0034e+07 -37510.1 -87095.7
+-1.01148e+07 -35052.6 -70353.1
+-1.01737e+07 -31703.8 -53501.2
+-1.02128e+07 -27657.6 -37608.4
+-1.02353e+07 -23109.8 -23452.1
+-1.02451e+07 -18251.7 -11515
+-1.02461e+07 -13265.1 -2014.16
+-1.02421e+07 -8317.76 5048.06
+-1.02365e+07 -3560.45 9826.24
+-1.02323e+07 875.727 12575.9
+-1.02316e+07 4881.41 13606.4
+-1.02362e+07 8370.32 13245.7
+-1.0247e+07 11279.9 11816.3
+-1.02647e+07 13571.5 9619.35
+-1.02892e+07 15229.3 6926.29
+-1.03202e+07 16258.8 3973.22
+-1.0357e+07 16685.2 958.687
+-1.03986e+07 16550 -1956.75
+-1.0444e+07 15908.7 -4649.01
+-1.04921e+07 14827.1 -7027.75
+-1.05417e+07 13378.1 -9032.91
+0 11638 -10631.7
+7.30379e+06 3444.85 -7613.48
+7.2784e+06 5657.7 -7324.12
+7.25272e+06 7934.95 -6839.22
+7.22716e+06 10191 -6158.57
+7.20214e+06 12326.4 -5293.77
+7.17805e+06 14230.3 -4269.78
+7.15527e+06 15784.4 -3126.62
+7.13411e+06 16866.7 -1921.1
+7.11479e+06 17357.1 -728.233
+7.09741e+06 17142.7 357.812
+7.08188e+06 16124.4 1223.52
+7.06794e+06 14222.8 1737
+7.05508e+06 11385.1 1750.58
+7.04253e+06 7591.37 1105.85
+7.02928e+06 2860.47 -357.938
+7.01403e+06 -2744.81 -2791.08
+6.99531e+06 -9113.17 -6315.63
+6.97146e+06 -16081.4 -11002.6
+6.94081e+06 -23432.2 -16844.9
+6.9018e+06 -30893.3 -23729
+6.85319e+06 -38139.1 -31407.3
+6.79429e+06 -44793.5 -39477.2
+6.72517e+06 -50436.1 -47370.1
+6.64696e+06 -54609.8 -54353.4
+6.562e+06 -56829.2 -59544.1
+6.47406e+06 -56585.8 -61925.7
+6.38844e+06 -53345.4 -60350
+6.31211e+06 -46529.1 -53494
+6.25379e+06 -35469.7 -39729.6
+6.22419e+06 -19333 -16844.5
+6.23645e+06 3006.48 18492.3
+6.30667e+06 33150.3 71765.8
+6.45464e+06 73434.2 152785
+6.70385e+06 127225 280512
+7.07834e+06 198991 493726
+7.58914e+06 293334 872170
+8.19441e+06 411362 1.56875e+06
+8.71447e+06 543052 2.82665e+06
+8.72578e+06 658222 4.87864e+06
+7.62941e+06 707924 7.52558e+06
+5.306e+06 652898 9.39927e+06
+3.05272e+06 510633 8.33308e+06
+1.59033e+06 351795 5.79487e+06
+804004 224290 3.56034e+06
+400974 136553 2.08234e+06
+199644 80472.4 1.18145e+06
+101210 46211.6 655971
+51452.2 25978.7 362010
+25961.3 14352.1 198138
+13320.1 7825.12 106954
+6845.39 4226.39 57678.6
+3417.02 2266.99 31126.7
+1698.52 1211.49 16625
+817.337 647.601 8906.66
+330.979 347.267 4831.99
+80.2608 187.616 2615.38
+-49.914 103.122 1436.97
+-128.174 58.6755 828.333
+-174.437 35.9352 508.336
+-205.713 25.6996 362.292
+-235.593 23.7536 336.006
+-270.519 29.2381 410.449
+-327.064 44.4449 625.755
+-425.863 75.652 1061.23
+-594.564 135.638 1878.82
+-924.606 249.475 3456.09
+-1566.06 465.04 6419.37
+-2737.54 871.983 11885.9
+-5038.35 1639.04 22261
+-9624.95 3080.38 41749
+-18307.9 5766.72 77493.8
+-35335.1 10722.6 143942
+-69680.4 19756.7 266909
+-136772 35949.1 488172
+-269898 64365 886270
+-542771 113060 1.60072e+06
+-1.09017e+06 194097 2.83371e+06
+-2.16275e+06 323618 4.87984e+06
+-4.17046e+06 516297 8.02349e+06
+-7.28568e+06 760634 1.1664e+07
+-1.05134e+07 979939 1.32547e+07
+-1.20286e+07 1.0602e+06 1.06054e+07
+-1.20042e+07 976262 6.83123e+06
+-1.12812e+07 794778 3.91774e+06
+-1.04478e+07 594748 2.1495e+06
+-9.74962e+06 421748 1.1827e+06
+-9.24216e+06 288009 663217
+-8.90961e+06 188785 371915
+-8.71936e+06 115138 196714
+-8.64003e+06 59414.9 84162
+-8.64539e+06 16314.9 8476.56
+-8.71408e+06 -17558.6 -43542.6
+-8.82844e+06 -44311.1 -79095.2
+-8.97338e+06 -65215.9 -102270
+-9.13572e+06 -81030.2 -115490
+-9.30393e+06 -92222.4 -120365
+-9.46816e+06 -99132.9 -118221
+-9.62048e+06 -102080 -110381
+-9.75508e+06 -101415 -98264.9
+-9.86834e+06 -97545.1 -83351
+-9.95878e+06 -90927 -67074.9
+-1.00268e+07 -82053.3 -50718.8
+-1.00741e+07 -71433.1 -35324.6
+-1.01038e+07 -59573.7 -21648.9
+-1.01194e+07 -46966 -10158.6
+-1.01246e+07 -34072.2 -1060.47
+-1.01231e+07 -21316.7 5649.34
+-1.01184e+07 -9078.66 10128.2
+-1.01133e+07 2313.51 12631.8
+-1.01102e+07 12586.7 13468
+-1.0111e+07 21526 12962
+-1.01168e+07 28976.2 11432.3
+-1.01284e+07 34841.7 9175.78
+-1.01461e+07 39084.3 6458.89
+-1.01697e+07 41719.7 3512.46
+-1.01989e+07 42812.4 529.598
+-1.02329e+07 42468.8 -2334.49
+-1.0271e+07 40830.2 -4960.91
+-1.0312e+07 38064.3 -7264.17
+-1.03551e+07 34356.8 -9188.68
+0 29902.9 -10705.6
+6.88356e+06 4207.76 -7051.07
+6.86236e+06 6839.49 -6844.52
+6.84177e+06 9546.58 -6460.9
+6.82215e+06 12227.7 -5897.28
+6.80383e+06 14764.8 -5161.12
+6.78709e+06 17026.6 -4271.84
+6.77215e+06 18872.1 -3262.51
+6.75912e+06 20156.2 -2181.58
+6.74798e+06 20735 -1094.44
+6.73855e+06 20472.8 -84.4642
+6.73047e+06 19249.2 746.565
+6.72317e+06 16966.1 1279.12
+6.71584e+06 13556 1378.14
+6.70743e+06 8989.24 897.532
+6.69669e+06 3281.27 -312.089
+6.68213e+06 -3500.61 -2391.57
+6.66213e+06 -11231.1 -5456.64
+6.63501e+06 -19721.9 -9576.56
+6.59912e+06 -28717.6 -14748.9
+6.55307e+06 -37892.8 -20872.9
+6.49586e+06 -46852.4 -27723.7
+6.42714e+06 -55132.5 -34933
+6.34742e+06 -62205.1 -41978.7
+6.25832e+06 -67484.1 -48187.2
+6.16273e+06 -70331 -52746.3
+6.06497e+06 -70056.2 -54721.1
+5.97087e+06 -65908.2 -53055.5
+5.88782e+06 -57041.4 -46531.5
+5.8249e+06 -42449.7 -33646.1
+5.79302e+06 -20849.2 -12350.3
+5.80532e+06 9513.52 20449.8
+5.87771e+06 51165.9 69856.5
+6.02942e+06 107884 144987
+6.28279e+06 185337 263412
+6.65969e+06 291580 460892
+7.16756e+06 436180 810558
+7.76065e+06 625230 1.4519e+06
+8.26024e+06 848880 2.60562e+06
+8.26055e+06 1.06296e+06 4.48094e+06
+7.20455e+06 1.18227e+06 6.89155e+06
+5.00069e+06 1.121e+06 8.58663e+06
+2.87215e+06 887591 7.5945e+06
+1.49266e+06 611725 5.26381e+06
+751963 387683 3.21977e+06
+373432 233945 1.874e+06
+185009 136495 1.0582e+06
+93263.6 77643.5 584821
+47171.5 43304.4 321324
+23704.6 23767.8 175173
+12113 12887.8 94231.4
+6200.13 6931.17 50662.3
+3087.16 3705.85 27259.1
+1533.49 1974.97 14517.6
+738.687 1053.23 7759.82
+301.606 563.615 4201.35
+77.1295 303.853 2268.98
+-39.2214 166.713 1244.16
+-108.867 94.7209 715.813
+-149.795 57.8843 438.295
+-177.457 41.3061 311.99
+-203.938 38.145 289.412
+-234.841 46.9716 353.753
+-284.89 71.545 540.213
+-372.847 122.046 918.312
+-523.729 219.181 1629.17
+-819.596 403.95 3003.4
+-1396.82 754.688 5591.66
+-2454.98 1418.1 10376.4
+-4539.14 2671.94 19484
+-8712.56 5035.31 36653.8
+-16658.3 9456.26 68255.1
+-32308.4 17656.1 127212
+-64013.1 32705.7 236780
+-126345 59887.1 434921
+-250827 108040 793344
+-507143 191488 1.43994e+06
+-1.02334e+06 331806 2.56161e+06
+-2.03803e+06 557669 4.43258e+06
+-3.9402e+06 894335 7.31795e+06
+-6.89476e+06 1.31641e+06 1.06673e+07
+-9.96564e+06 1.67463e+06 1.21441e+07
+-1.14247e+07 1.76146e+06 9.7381e+06
+-1.14072e+07 1.568e+06 6.29144e+06
+-1.07009e+07 1.23536e+06 3.62198e+06
+-9.87297e+06 898301 1.99572e+06
+-9.16884e+06 622113 1.10273e+06
+-8.64894e+06 416997 620999
+-8.30171e+06 269592 350179
+-8.09717e+06 163082 187204
+-8.00552e+06 84426.7 82606.6
+-8.00163e+06 25010.1 12395.7
+-8.06493e+06 -20564.1 -35761.7
+-8.17822e+06 -55651.9 -68608.2
+-8.3267e+06 -82349.4 -89980.7
+-8.49713e+06 -101981 -102156
+-8.67771e+06 -115422 -106645
+-8.85804e+06 -123318 -104686
+-9.02945e+06 -126226 -97511.9
+-9.18525e+06 -124698 -86439.4
+-9.32085e+06 -119317 -72837.2
+-9.43375e+06 -110692 -58033.2
+-9.52334e+06 -99457 -43210.8
+-9.59056e+06 -86242.6 -29328.6
+-9.63754e+06 -71664.5 -17078.5
+-9.66717e+06 -56306.4 -6881.88
+-9.68274e+06 -40709.3 1082.42
+-9.68767e+06 -25363.8 6831.73
+-9.68521e+06 -10703.5 10525.5
+-9.67833e+06 2898.69 12413.6
+-9.66961e+06 15134.7 12792.7
+-9.66121e+06 25763.4 11973.3
+-9.65481e+06 34611.5 10257.5
+-9.65168e+06 41573.6 7924.53
+-9.65266e+06 46609.5 5222.7
+-9.65824e+06 49740.7 2365.09
+-9.6686e+06 51044.4 -472.307
+-9.68363e+06 50646.4 -3150.34
+-9.70303e+06 48713.1 -5564.74
+-9.72635e+06 45441.6 -7643.04
+-9.75298e+06 41050.5 -9340.94
+0 35769.5 -10639
+6.05692e+06 3544.87 -6050.19
+6.04123e+06 5620.93 -5932.91
+6.02703e+06 7753.78 -5669.58
+6.0146e+06 9864.17 -5255.34
+6.00419e+06 11859.5 -4693.65
+5.99592e+06 13636.6 -3997.68
+5.98984e+06 15084.5 -3191.8
+5.98583e+06 16088.6 -2313.2
+5.98363e+06 16534.7 -1413.37
+5.98279e+06 16314.4 -559.151
+5.98266e+06 15329.9 166.621
+5.98239e+06 13500.2 665.501
+5.98089e+06 10766.6 825.074
+5.97689e+06 7098.67 522.622
+5.96893e+06 2500.29 -368.421
+5.95539e+06 -2984.76 -1968.42
+5.9346e+06 -9267.08 -4377.33
+5.90489e+06 -16206.5 -7656.41
+5.86477e+06 -23607 -11806.6
+5.81304e+06 -31213.3 -16745.4
+5.74902e+06 -38707.2 -22285.4
+5.67273e+06 -45706.4 -28117.7
+5.58514e+06 -51764.2 -33804.1
+5.48833e+06 -56368.4 -38780
+5.38567e+06 -58939.8 -42366.7
+5.28192e+06 -58821.2 -43786
+5.18325e+06 -55254.3 -42161.6
+5.0973e+06 -47330.9 -36482.9
+5.03319e+06 -33906.4 -25496
+5.00169e+06 -13454.8 -7474.97
+5.01547e+06 16171.6 20211.3
+5.08963e+06 58149.3 61926.5
+5.2421e+06 117382 125470
+5.49316e+06 201611 225808
+5.86154e+06 322786 393160
+6.35058e+06 497437 688777
+6.91169e+06 742383 1.22845e+06
+7.37335e+06 1.05915e+06 2.19362e+06
+7.36487e+06 1.40276e+06 3.75303e+06
+6.40044e+06 1.65165e+06 5.74442e+06
+4.42884e+06 1.64051e+06 7.12614e+06
+2.53698e+06 1.3234e+06 6.27395e+06
+1.31358e+06 910355 4.32428e+06
+657844 570183 2.62771e+06
+324307 338974 1.51885e+06
+159390 194718 851923
+79645.4 109192 467901
+39940.8 60207.5 255631
+19929.9 32741.7 138627
+10120.6 17615.5 74221
+5148.34 9418.04 39748
+2552.35 5012.83 21306.2
+1266 2660.12 11304.6
+610.198 1413.92 6024.84
+251.832 754.771 3252.99
+69.2767 405.654 1751.04
+-25.3097 222.015 957.955
+-81.74 125.961 549.944
+-114.455 76.745 335.482
+-136.546 54.6257 238.394
+-157.856 50.4251 221.326
+-182.537 62.0811 270.608
+-222.584 94.7927 414.243
+-293.883 162.177 706.862
+-416.625 291.747 1257.04
+-657.737 539.205 2323.51
+-1132 1010.61 4340.85
+-2006.88 1903.83 8079.79
+-3737.54 3599.38 15222.7
+-7229.4 6811.86 28755.6
+-13932.8 12849.4 53769.1
+-27226.5 24131.5 100659
+-54381.4 45043.8 188344
+-108330 83221.1 347965
+-217099 151805 638704
+-442791 272773 1.16716e+06
+-900675 479648 2.09123e+06
+-1.80557e+06 817319 3.64468e+06
+-3.5057e+06 1.3248e+06 6.05637e+06
+-6.15206e+06 1.95226e+06 8.87365e+06
+-8.91765e+06 2.43656e+06 1.01428e+07
+-1.02532e+07 2.44541e+06 8.16713e+06
+-1.02394e+07 2.05613e+06 5.30229e+06
+-9.57228e+06 1.53162e+06 3.06918e+06
+-8.77565e+06 1.05937e+06 1.70009e+06
+-8.08653e+06 703354 943498
+-7.5689e+06 455631 533232
+-7.21604e+06 286911 302058
+-7.00172e+06 170552 163099
+-6.89882e+06 88241.6 74234.6
+-6.88414e+06 28628.1 14846.8
+-6.93851e+06 -15189.3 -25728.7
+-7.04578e+06 -47489 -53336
+-7.19178e+06 -70997.7 -71293.6
+-7.36367e+06 -87496 -81555.1
+-7.5497e+06 -98186.8 -85398.8
+-7.73932e+06 -103936 -83859.9
+-7.92346e+06 -105433 -77965.8
+-8.0948e+06 -103283 -68819.2
+-8.24796e+06 -98064.5 -57571.4
+-8.37955e+06 -90337.4 -45343.7
+-8.48799e+06 -80650.1 -33136.3
+-8.57326e+06 -69528.5 -21758.7
+-8.63659e+06 -57468 -11791.9
+-8.68006e+06 -44925.6 -3585.14
+-8.70635e+06 -32315.4 2720.37
+-8.71836e+06 -20005.5 7151.3
+-8.71907e+06 -8316.57 9855.18
+-8.71135e+06 2478.94 11055.5
+-8.69785e+06 12157.8 11014
+-8.68095e+06 20546.4 10001.6
+-8.66269e+06 27521.1 8279.75
+-8.6448e+06 33007.7 6087.86
+-8.62869e+06 36980.1 3636.67
+-8.61544e+06 39457.7 1104.85
+-8.60584e+06 40501.7 -1362.04
+-8.60041e+06 40210.2 -3650.98
+-8.59944e+06 38712 -5679.37
+-8.60303e+06 36160.1 -7392.04
+-8.61106e+06 32724 -8757.85
+0 28582 -9766.63
+4.74834e+06 2159.23 -4625.72
+4.73787e+06 3203.98 -4563.37
+4.7292e+06 4273.14 -4396.32
+4.72253e+06 5327.54 -4120.56
+4.71799e+06 6321.28 -3737.95
+4.71562e+06 7203.05 -3257.18
+4.71533e+06 7917.69 -2694.85
+4.71688e+06 8408.01 -2076.65
+4.7199e+06 8616.86 -1438.46
+4.72383e+06 8489.3 -827.248
+4.72793e+06 7975.1 -301.604
+4.7313e+06 7031.25 68.3818
+4.73283e+06 5624.63 202.162
+4.73128e+06 3734.87 11.2894
+4.72526e+06 1357.16 -595.94
+4.71329e+06 -1494.57 -1707.11
+4.69388e+06 -4784.42 -3395.18
+4.66561e+06 -8451.06 -5704.82
+4.62724e+06 -12404.2 -8636.32
+4.57788e+06 -16520.8 -12128.5
+4.5171e+06 -20642.1 -16043.1
+4.44517e+06 -24569.5 -20153.3
+4.36322e+06 -28061.5 -24139
+4.27336e+06 -30827.7 -27591.7
+4.17886e+06 -32520 -30025.3
+4.08419e+06 -32714.5 -30889.4
+3.99509e+06 -30879.5 -29570.9
+3.91855e+06 -26318.9 -25364.9
+3.86287e+06 -18079.1 -17388
+3.83781e+06 -4795.51 -4397.58
+3.85488e+06 15565.3 15543.6
+3.92775e+06 46168.5 45698.8
+4.07269e+06 92176.9 91934.8
+4.30811e+06 162344 165478
+4.65093e+06 271620 288803
+5.1038e+06 444224 506936
+5.62218e+06 713622 903861
+6.05251e+06 1.10924e+06 1.60904e+06
+6.07127e+06 1.61301e+06 2.73842e+06
+5.27029e+06 2.08376e+06 4.16452e+06
+3.62912e+06 2.23035e+06 5.12985e+06
+2.06378e+06 1.84571e+06 4.48044e+06
+1.05817e+06 1.25941e+06 3.06149e+06
+523260 771811 1.84439e+06
+254261 448377 1.05729e+06
+123219 251977 588395
+60764 138608 320992
+30073.7 75360.7 174392
+14836.8 40533.9 94056.6
+7472.92 21593.4 50106.9
+3770.2 11469.8 26735
+1855.83 6076.75 14277.6
+919.586 3206.16 7545.44
+443.452 1698.17 4011.47
+184.482 905.196 2159.94
+54.9305 484.38 1157.82
+-12.3298 264.398 632.335
+-52.7638 150.097 362.537
+-75.5428 91.0379 220.02
+-90.9018 64.6318 156.099
+-106.091 59.783 145.257
+-123.218 73.3976 177.376
+-151.166 112.404 272.226
+-202.257 193.103 466.925
+-289.527 347.268 831.608
+-461.139 643.865 1540.6
+-804.688 1211.97 2890.74
+-1441.01 2286.65 5396.81
+-2705.02 4339.45 10198.7
+-5290.16 8259.34 19350.6
+-10300.3 15650.5 36332.9
+-20325.1 29585.7 68313.2
+-41113.5 55766.8 128553
+-83052.4 104145 238963
+-168784 192610 441446
+-349446 352647 812893
+-721770 633253 1.46921e+06
+-1.46662e+06 1.10283e+06 2.58376e+06
+-2.87804e+06 1.82446e+06 4.33251e+06
+-5.09042e+06 2.70758e+06 6.40311e+06
+-7.41454e+06 3.29293e+06 7.37556e+06
+-8.52859e+06 3.06658e+06 5.98009e+06
+-8.47257e+06 2.3512e+06 3.90769e+06
+-7.84099e+06 1.59591e+06 2.2742e+06
+-7.09603e+06 1.01284e+06 1.26369e+06
+-6.45103e+06 623533 701317
+-5.96411e+06 378894 395349
+-5.62894e+06 226342 223287
+-5.42126e+06 129106 120596
+-5.31615e+06 65191 55580.4
+-5.29241e+06 22085.3 12559.7
+-5.33262e+06 -7418.27 -16622.3
+-5.42223e+06 -27648.5 -36427.6
+-5.54856e+06 -41315 -49357.1
+-5.70019e+06 -50161 -56840.9
+-5.86669e+06 -55332.1 -59775.1
+-6.03864e+06 -57607.3 -58863.8
+-6.20783e+06 -57549.1 -54810.3
+-6.36751e+06 -55599.2 -48386.2
+-6.51257e+06 -52132.2 -40415.3
+-6.63952e+06 -47482.5 -31711.6
+-6.74643e+06 -41954.9 -23008.7
+-6.83275e+06 -35826.6 -14903.1
+-6.89901e+06 -29346.7 -7823.5
+-6.94655e+06 -22735.9 -2026.14
+-6.97729e+06 -16187.1 2387.73
+-6.99346e+06 -9866.77 5441.69
+-6.99746e+06 -3916.46 7248.56
+-6.99167e+06 1545.41 7976.33
+-6.97843e+06 6422.62 7819.56
+-6.95988e+06 10640.7 6978.03
+-6.93802e+06 14146.6 5642.56
+-6.9146e+06 16909 3986.45
+-6.89117e+06 18917.8 2160.91
+-6.86901e+06 20183.3 293.066
+-6.84919e+06 20735.5 -1514.37
+-6.83256e+06 20621.7 -3182.3
+-6.81974e+06 19904.2 -4653.5
+-6.81114e+06 18657.3 -5890.16
+-6.80702e+06 16963.5 -6871.41
+0 14909.9 -7591.07
+3.08253e+06 1037.23 -2965.98
+3.076e+06 1267.99 -2915.27
+3.07081e+06 1498.51 -2804.77
+3.06709e+06 1720.92 -2633.86
+3.06488e+06 1925.98 -2405.36
+3.06419e+06 2103.4 -2125.88
+3.0649e+06 2242.3 -1806.37
+3.0668e+06 2331.5 -1462.61
+3.06958e+06 2359.82 -1115.8
+3.07282e+06 2316.44 -792.961
+3.07596e+06 2191.09 -527.302
+3.07833e+06 1974.35 -358.165
+3.07914e+06 1657.91 -330.532
+3.07753e+06 1234.88 -493.68
+3.07251e+06 700.191 -898.597
+3.06309e+06 51.1848 -1593.76
+3.04826e+06 -711.521 -2618.99
+3.02708e+06 -1582.92 -3997.4
+2.99874e+06 -2552.2 -5725.85
+2.96269e+06 -3600.99 -7765.03
+2.91871e+06 -4701.46 -10030.6
+2.86706e+06 -5813.94 -12387.4
+2.80856e+06 -6883.98 -14648.3
+2.74476e+06 -7838.11 -16579.4
+2.67796e+06 -8576.62 -17909.3
+2.61132e+06 -8961.22 -18339.3
+2.54888e+06 -8793.46 -17545.4
+2.49566e+06 -7778.23 -15158.8
+2.45773e+06 -5462.82 -10709.1
+2.44253e+06 -1133.09 -3505.96
+2.45923e+06 6375.04 7575.83
+2.5194e+06 19050.6 24494.7
+2.63781e+06 40509.2 50841.3
+2.83275e+06 77742.7 93547.5
+3.12422e+06 144772 166493
+3.52446e+06 269345 297281
+4.01027e+06 501909 536651
+4.46543e+06 917052 960877
+4.61335e+06 1.57471e+06 1.63374e+06
+4.07079e+06 2.38463e+06 2.46845e+06
+2.77208e+06 2.89764e+06 3.00852e+06
+1.52808e+06 2.4772e+06 2.59091e+06
+754024 1.6525e+06 1.74439e+06
+359580 973550 1.03744e+06
+168683 547003 588197
+79309.3 298767 324094
+38358.4 160430 175459
+18614.8 86041.6 94817.7
+9004.33 45806.1 50861.6
+4512.03 24109.9 26965.4
+2258.92 12748.8 14349.4
+1094.01 6742.79 7636.54
+545.927 3527.18 4018.8
+265.384 1864.44 2134.5
+109.086 997.158 1147.05
+35.3879 528.998 611.499
+-3.03749 288.129 333.855
+-27.7728 164.992 191.593
+-40.5258 98.9974 115.442
+-49.0584 70.0881 81.8407
+-58.4295 65.5673 76.5516
+-67.8364 79.4786 93.0394
+-83.6278 122.298 143.111
+-114.809 212.043 247.167
+-164.448 378.145 439.814
+-262.665 703.495 815.735
+-470.277 1334.75 1539.28
+-844.727 2509.65 2879.53
+-1587.76 4775.87 5450.53
+-3166.3 9165.58 10390.7
+-6220.18 17392.6 19584.6
+-12361.5 33041 36946.4
+-25541.3 63031 69919.3
+-52647.5 118886 130783
+-109189 222897 243147
+-233290 417965 451773
+-499523 771575 825861
+-1.05328e+06 1.38768e+06 1.47051e+06
+-2.14944e+06 2.38441e+06 2.50089e+06
+-3.92372e+06 3.61385e+06 3.75377e+06
+-5.77878e+06 4.25309e+06 4.38563e+06
+-6.53532e+06 3.49309e+06 3.59328e+06
+-6.30012e+06 2.28905e+06 2.36281e+06
+-5.63492e+06 1.31725e+06 1.37591e+06
+-4.93656e+06 710626 759555
+-4.36622e+06 375804 415828
+-3.95238e+06 199328 230069
+-3.67524e+06 105696 127219
+-3.50601e+06 54157.5 67152.5
+-3.41934e+06 24554.5 30003.8
+-3.39547e+06 7030.04 5923.62
+-3.41933e+06 -3445.62 -10193.2
+-3.47913e+06 -9622.98 -21105.2
+-3.56526e+06 -13103.3 -28312.4
+-3.66951e+06 -14853.8 -32617.7
+-3.78461e+06 -15467.4 -34473
+-3.90413e+06 -15312.1 -34206.3
+-4.02249e+06 -14622.8 -32153.6
+-4.13507e+06 -13558.8 -28710.2
+-4.23832e+06 -12236.8 -24323.7
+-4.32975e+06 -10748.3 -19454.3
+-4.40789e+06 -9167.06 -14527.7
+-4.47218e+06 -7552.41 -9895.88
+-4.52277e+06 -5950.97 -5814.76
+-4.56039e+06 -4398.09 -2439.27
+-4.58615e+06 -2919.9 167.341
+-4.6014e+06 -1535.54 2015.28
+-4.60763e+06 -259.38 3166.58
+-4.60637e+06 897.27 3714.31
+-4.59914e+06 1924.98 3765.55
+-4.58739e+06 2815.73 3429.01
+-4.57249e+06 3562.98 2807.25
+-4.5557e+06 4162.08 1992.46
+-4.53816e+06 4610.77 1064.56
+-4.52087e+06 4909.73 90.7335
+-4.50469e+06 5062.85 -874.319
+-4.49034e+06 5077.36 -1787.65
+-4.4784e+06 4963.7 -2616.93
+-4.4693e+06 4735.05 -3339.16
+-4.46334e+06 4406.71 -3939.42
+0 3995.06 -4409.95
+1.47634e+06 673.619 -1447.89
+1.47252e+06 644.589 -1395.38
+1.46926e+06 608.257 -1320.26
+1.46658e+06 566.499 -1225.02
+1.46451e+06 521.705 -1113.59
+1.46304e+06 476.823 -991.339
+1.46212e+06 435.348 -864.984
+1.46163e+06 401.232 -742.658
+1.46146e+06 378.718 -633.931
+1.46139e+06 372.1 -549.877
+1.46119e+06 385.421 -503.119
+1.46058e+06 422.1 -507.85
+1.45923e+06 484.52 -579.718
+1.45676e+06 573.61 -735.445
+1.45277e+06 688.473 -991.988
+1.44685e+06 826.116 -1365.01
+1.43857e+06 981.334 -1866.56
+1.42755e+06 1146.79 -2501.87
+1.41345e+06 1313.25 -3265.65
+1.39603e+06 1469.98 -4138.16
+1.3752e+06 1605.16 -5082.1
+1.35104e+06 1706.2 -6041.02
+1.32391e+06 1760.02 -6940.35
+1.2944e+06 1753.07 -7691.21
+1.26346e+06 1671.62 -8196.49
+1.23237e+06 1502.54 -8356.72
+1.20283e+06 1235.47 -8071.43
+1.17699e+06 867.063 -7229.72
+1.1576e+06 408.473 -5682.72
+1.14832e+06 -101.771 -3189.64
+1.15415e+06 -570.351 676.879
+1.18227e+06 -770.372 6702.81
+1.24345e+06 -78.3174 16385.1
+1.35416e+06 3404.36 32714.4
+1.539e+06 15590 61875.4
+1.83056e+06 54068.4 116464
+2.25579e+06 166382 219836
+2.78506e+06 462811 406651
+3.21934e+06 1.13865e+06 703707
+3.09384e+06 2.35115e+06 1.06559e+06
+2.02951e+06 3.6429e+06 1.28215e+06
+987588 3.22715e+06 1.07238e+06
+422334 2.0386e+06 697296
+182537 1.12101e+06 402257
+78407.9 605396 222623
+34326.3 320888 120192
+16676.7 167671 64175.8
+7915.33 89631.6 34411.8
+3609.12 47544.5 18309.6
+1905.49 24573.7 9648.15
+968.347 13048.5 5131.08
+425.595 6957.58 2718.98
+230.123 3566.58 1420.61
+120.357 1892 756.071
+40.8533 1031.12 406.3
+16.0933 532.377 214.434
+2.94195 289.952 117.402
+-11.4199 172.117 67.846
+-15.5392 99.382 40.3518
+-18.0514 70.0568 28.6544
+-23.8934 68.6251 27.1588
+-26.3314 79.107 32.5388
+-31.8942 123.219 50.0928
+-49.7632 220.741 87.5585
+-66.0545 379.778 154.667
+-100.55 709.428 286.547
+-205.686 1379.11 546.233
+-348.704 2542.71 1021.47
+-618.732 4834 1931.38
+-1355.97 9456.55 3711.19
+-2610.33 17779.7 7026.06
+-4952.81 33684.2 13272.9
+-10890.7 65433.3 25302.7
+-22885.3 123745 47770.3
+-47326.4 232892 89655.2
+-108936 448877 169324
+-254761 853076 316817
+-593005 1.59498e+06 579681
+-1.39711e+06 2.93162e+06 1.01923e+06
+-2.88604e+06 4.68028e+06 1.58678e+06
+-4.40807e+06 5.31253e+06 1.90963e+06
+-4.57845e+06 3.43829e+06 1.58434e+06
+-3.94745e+06 1.66307e+06 1.0386e+06
+-3.18697e+06 671281 593234
+-2.58119e+06 237678 316122
+-2.16901e+06 74925.8 164879
+-1.90915e+06 20052.2 86140.6
+-1.75394e+06 3074.93 44591.9
+-1.66811e+06 -1585.2 21554.7
+-1.62855e+06 -2352.3 8008.09
+-1.62049e+06 -1866.81 -393.727
+-1.63434e+06 -987.898 -5854.74
+-1.66363e+06 -39.7476 -9543.03
+-1.70374e+06 833.645 -12064.3
+-1.75108e+06 1568.72 -13700.4
+-1.80271e+06 2146.59 -14563.2
+-1.85605e+06 2572.44 -14704.2
+-1.9089e+06 2861.14 -14184.4
+-1.95941e+06 3028.43 -13104.9
+-2.00615e+06 3087.42 -11606.9
+-2.04809e+06 3048.8 -9854.18
+-2.08459e+06 2922.77 -8008.97
+-2.11538e+06 2721.08 -6211.62
+-2.1405e+06 2458.17 -4567.7
+-2.16018e+06 2151.21 -3143.87
+-2.17483e+06 1819.07 -1970.9
+-2.18495e+06 1480.86 -1051.19
+-2.19111e+06 1154.29 -367.914
+-2.19389e+06 854.297 106.272
+-2.19388e+06 592.271 402.477
+-2.19166e+06 375.708 551.151
+-2.18779e+06 208.392 579.847
+-2.18281e+06 90.881 512.552
+-2.17722e+06 21.139 369.903
+-2.17146e+06 -4.7947 169.745
+-2.16595e+06 7.81022 -72.2898
+-2.16104e+06 52.9177 -342.272
+-2.15702e+06 124.181 -627.553
+-2.15413e+06 215.293 -916.471
+-2.15254e+06 320.212 -1198.25
+0 433.239 -1463.19
+92021.3 38.835 -242.971
+91867.4 37.2321 -228.563
+91726.5 35.2215 -211.386
+91599.5 32.9093 -192.308
+91486.2 30.4278 -172.429
+91385.6 27.9391 -153.06
+91295.7 25.6346 -135.695
+91213.5 23.7298 -121.967
+91135.3 22.4556 -113.6
+91056.4 22.0444 -112.341
+90971.1 22.7127 -119.895
+90872.7 24.6402 -137.835
+90753.4 27.9459 -167.519
+90603.5 32.6646 -209.986
+90411.5 38.7258 -265.841
+90163.6 45.9392 -335.12
+89844.1 53.9891 -417.129
+89435.1 62.4409 -510.28
+88918.5 70.7582 -611.903
+88276.6 78.329 -718.094
+87495.2 84.4942 -823.612
+86565.2 88.5735 -921.873
+85484.9 89.883 -1005.09
+84261.6 87.7471 -1064.56
+82911.4 81.5161 -1091.08
+81458.7 70.618 -1075.39
+79936.1 54.6868 -1008.35
+78386.4 33.8326 -880.635
+76871.1 9.21104 -681.388
+75489.6 -15.422 -395.292
+74420.3 -27.8843 3.18078
+74014.2 17.3134 561.533
+75038.8 304.179 1376.44
+79353 1573.93 2662.03
+91697.4 6663.26 4919.53
+123789 25640.9 9319.6
+201028 91007.1 18405.3
+363692 295371 36879.6
+625248 856809 70848.9
+814516 2.11593e+06 120792
+453112 3.93501e+06 162730
+130544 3.48999e+06 139885
+25291.4 2.10716e+06 89793.2
+8396.91 1.11835e+06 51321.9
+1950.36 601634 28375.7
+111.565 317502 15055.2
+656.934 164500 7948.22
+255.398 88676.4 4302.33
+-49.5453 47140.5 2254.38
+82.6046 24076.2 1165.46
+53.3844 12885.4 634.671
+-15.8175 6926.8 332.517
+8.82193 3492.52 165.489
+11.0325 1863.59 91.2134
+-4.54015 1031.94 49.7646
+0.211321 520.224 24.1207
+2.2756 284.143 13.701
+-1.75514 173.842 8.46689
+-0.719897 96.9394 4.43655
+0.155643 68.2096 3.20281
+-1.74908 69.5933 3.43619
+-0.499274 76.7698 3.59841
+0.362078 120.624 5.56304
+-4.52544 222.693 10.9042
+-1.26801 371.633 17.8899
+3.66167 694.682 32.3259
+-16.6424 1379.81 66.9423
+-10.6438 2501.68 122.587
+17.9435 4738.63 224.939
+-77.6875 9416.72 454.417
+-102.676 17543.5 867.28
+67.0069 33015.5 1602.19
+-379.521 64906.3 3118.56
+-889.076 122382 5967.7
+-153.744 228505 11079.9
+-2999.71 444398 21134.6
+-12391.5 848038 40081.4
+-37520 1.59219e+06 73011
+-193075 3.0342e+06 128798
+-666846 5.06706e+06 202037
+-1.19554e+06 5.73981e+06 236185
+-915606 3.09115e+06 175946
+-530123 1.24821e+06 103204
+-292034 426641 53514.3
+-180594 129395 26553.4
+-135445 35553.3 13404.9
+-118823 8881.87 7114.62
+-113534 1945.55 3924.22
+-112744 286.919 2117.91
+-113823 -62.2225 968.854
+-115707 -101.602 167.766
+-117932 -68.9464 -426.04
+-120291 -21.3014 -881.442
+-122692 25.6479 -1232.79
+-125093 66.6507 -1496.43
+-127459 100.023 -1679.93
+-129751 125.654 -1787.98
+-131917 144.067 -1825.91
+-133910 155.897 -1801.27
+-135690 161.688 -1723.82
+-137234 161.893 -1604.83
+-138535 156.986 -1455.91
+-139604 147.566 -1288.1
+-140464 134.424 -1111.12
+-141143 118.529 -933.071
+-141669 100.968 -760.386
+-142070 82.8486 -597.998
+-142368 65.2006 -449.57
+-142579 48.8983 -317.748
+-142718 34.6087 -204.355
+-142797 22.7749 -110.523
+-142825 13.6258 -36.7657
+-142813 7.20538 16.9793
+-142771 3.40911 51.322
+-142710 2.02328 67.3793
+-142642 2.76026 66.7198
+-142579 5.28946 51.2923
+-142531 9.26275 23.3422
+-142508 14.3337 -14.6779
+-142518 20.1687 -60.2046
+0 26.4508 -110.661
+5238.65 2.21656 -15.5114
+5229.52 2.12911 -14.6165
+5221.14 2.01908 -13.5512
+5213.55 1.89238 -12.369
+5206.74 1.75628 -11.1378
+5200.66 1.61958 -9.93867
+5195.2 1.49263 -8.86346
+5190.17 1.38704 -8.01266
+5185.35 1.31522 -7.49187
+5180.48 1.28958 -7.40796
+5175.22 1.32155 -7.86445
+5169.17 1.4204 -8.95657
+5161.86 1.59187 -10.7656
+5152.72 1.8369 -13.3527
+5141.04 2.1504 -16.752
+5125.99 2.52047 -20.9624
+5106.59 2.92817 -25.9383
+5081.75 3.34801 -31.5794
+5050.31 3.74908 -37.7204
+5011.15 4.09676 -44.1217
+4963.31 4.35468 -50.4639
+4906.15 4.48644 -56.3484
+4839.46 4.45697 -61.3069
+4763.56 4.23349 -64.8209
+4679.33 3.78676 -66.35
+4588.2 3.09436 -65.3626
+4492.19 2.14884 -61.356
+4394 0.978648 -53.8473
+4297.74 -0.285035 -42.3036
+4210.73 -1.11861 -25.9508
+4149.84 0.825585 -3.26812
+4165.13 16.7936 29.5159
+4433.64 100.362 83.3312
+5615.49 496.86 192.327
+10095.8 2272.65 463.69
+25807.4 9803.15 1219.13
+75925.1 39934.4 3349.96
+215109 152797 9047.01
+521071 541541 22712.8
+900110 1.71621e+06 49687.5
+457121 4.34378e+06 83474.7
+89016.2 3.82973e+06 71047.3
+2926.37 2.17713e+06 42266.3
+3379.26 1.10978e+06 23424.6
+-378.293 601124 13014
+-1213.94 316109 6635.17
+517.288 161663 3448.4
+111.365 88510.9 1946.04
+-238.981 47173.5 989.036
+71.2326 23593.3 494.023
+50.8547 12814.1 292.306
+-47.2672 6977.55 149.563
+6.60872 3415.95 65.658
+14.0053 1844.27 40.9262
+-10.0014 1048.51 23.2452
+0.0267679 506.452 8.80733
+4.06462 278.581 5.79054
+-2.4542 179.342 4.25264
+-0.277411 93.974 1.53153
+1.41313 65.9998 1.19959
+-1.73302 72.2932 1.81043
+0.604306 73.8497 1.30939
+2.57296 117.684 2.00863
+-5.34101 229.309 5.48648
+0.885554 363.384 7.42364
+11.8149 678.789 12.0264
+-19.5496 1401.4 31.5033
+-4.48228 2470.71 54.5061
+60.2476 4643.28 89.5795
+-76.4049 9489.58 205.683
+-79.2812 17422.8 398.05
+326.791 32375.1 678.424
+-200.626 65001.2 1373.2
+-676.669 122072 2697.81
+1734.2 224558 4795.66
+250.502 442760 9302.97
+-5060.82 847321 18309.5
+-4690.93 1.58021e+06 33060.2
+-131829 3.13797e+06 60011.4
+-669336 5.56303e+06 101411
+-1.31265e+06 6.33277e+06 119574
+-756023 2.50405e+06 71412.6
+-308901 787434 32681.4
+-107346 220178 12986.9
+-35918.8 56631.5 4778.73
+-14070.7 13566.8 1725.61
+-8059.64 3037.55 655.464
+-6559.85 631.642 276.878
+-6261.16 116.865 126.523
+-6280.41 14.418 51.9425
+-6390.31 -3.29885 5.29496
+-6529.3 -4.38297 -28.5852
+-6678.2 -2.34209 -54.8936
+-6829.89 0.12049 -75.5799
+-6981.09 2.39232 -91.3807
+-7129.32 4.31096 -102.564
+-7271.91 5.84338 -109.291
+-7405.91 7.00086 -111.809
+-7528.48 7.80504 -110.527
+-7637.41 8.27523 -106.012
+-7731.47 8.42845 -98.9297
+-7810.51 8.28523 -89.9792
+-7875.33 7.87566 -79.8279
+-7927.39 7.24236 -69.0693
+-7968.45 6.43964 -58.2013
+-8000.32 5.52936 -47.6232
+-8024.63 4.57513 -37.6444
+-8042.72 3.6364 -28.4982
+-8055.68 2.76372 -20.3556
+-8064.32 1.99583 -13.3368
+-8069.34 1.35862 -7.51825
+-8071.35 0.865796 -2.93725
+-8070.97 0.520508 0.406007
+-8068.8 0.317534 2.54639
+-8065.53 0.245496 3.5512
+-8061.82 0.28889 3.51657
+-8058.35 0.429824 2.56272
+-8055.75 0.64943 0.828627
+-8054.61 0.928891 -1.5338
+-8055.38 1.24999 -4.36576
+0 1.59527 -7.50774
+298.221 0.109392 -0.997153
+297.679 0.105256 -0.940904
+297.179 0.100032 -0.87407
+296.725 0.0940063 -0.800012
+296.316 0.087526 -0.72297
+295.948 0.0810055 -0.647991
+295.615 0.0749306 -0.5808
+295.307 0.0698457 -0.527635
+295.01 0.0663293 -0.495038
+294.708 0.0649571 -0.489606
+294.382 0.0662536 -0.5177
+294.008 0.0706338 -0.585135
+293.556 0.078338 -0.696829
+292.993 0.0893669 -0.856419
+292.276 0.103424 -1.06584
+291.353 0.119878 -1.32482
+290.165 0.137757 -1.63033
+288.643 0.155774 -1.97598
+286.715 0.17239 -2.3514
+284.31 0.185913 -2.74167
+281.364 0.1946 -3.12707
+277.835 0.196757 -3.48311
+273.702 0.190824 -3.78124
+268.98 0.175427 -3.99014
+263.717 0.149452 -4.07764
+257.999 0.112228 -4.01282
+251.948 0.0640282 -3.76763
+245.743 0.00776346 -3.3165
+239.691 -0.0434777 -2.63105
+234.549 -0.0264295 -1.6603
+233.042 0.391473 -0.258025
+247.204 2.98346 2.09943
+332.699 17.0015 7.41525
+740.804 89.2345 23.3372
+2548.05 449.266 78.1352
+10066.4 2195.25 271.543
+39162.8 10478.9 935.883
+141554 49161.7 3099.92
+451060 228171 9607.91
+1.10097e+06 1.05571e+06 26686.7
+502244 4.91924e+06 59067.9
+57773.1 4.25577e+06 46603.7
+-10948.4 2.23667e+06 23771.6
+4709.34 1.08996e+06 12890.4
+-650.77 604239 7448.26
+-1892.87 316148 3439.14
+926.95 158292 1742.02
+159.927 89003.3 1105.93
+-398.89 47556.7 514.212
+125.341 22962.8 236.303
+80.3417 12803.3 176.922
+-79.6931 7110.1 84.1785
+12.403 3312.22 24.7612
+22.7324 1828.01 23.6546
+-16.9189 1083.41 14.5149
+0.420329 486.815 2.13668
+6.75107 271.876 2.93309
+-4.14053 189.829 3.13345
+-0.345352 89.6061 0.251889
+2.44952 62.8667 0.406943
+-2.87089 77.3914 1.48367
+0.978122 69.6197 0.382013
+4.48355 113.471 0.481998
+-8.7746 242.05 4.05358
+1.08994 352.962 3.54935
+20.203 656.62 3.28958
+-31.7336 1447.19 20.0103
+-9.37509 2440.45 30.8106
+101.973 4516.15 34.2682
+-121.406 9676.11 117.715
+-142.017 17368.3 239.281
+546.439 31543.4 323.576
+-297.188 65607.7 722.886
+-1216.48 122614 1537.18
+2734.08 219837 2422.02
+542.262 443262 4855.72
+-6844.45 851536 10527
+15708.1 1.55169e+06 18206.4
+-86991 3.2273e+06 33814.1
+-735543 6.18443e+06 66725.7
+-1.60341e+06 7.16622e+06 84845.4
+-653340 1.53832e+06 38415.3
+-202783 331197 13827.4
+-55108.4 70697.1 4444.75
+-13815.6 14829.4 1331.05
+-3403.27 3032.87 381.392
+-984.72 600.23 108.264
+-463.55 113.95 32.2691
+-361.791 20.3672 10.6402
+-348.005 3.16016 3.47967
+-352.409 0.204488 0.214644
+-360.792 -0.198355 -1.85759
+-370.145 -0.159875 -3.42517
+-379.715 -0.0520904 -4.66792
+-389.23 0.0567108 -5.6314
+-398.514 0.15208 -6.3245
+-407.396 0.230765 -6.7507
+-415.698 0.292495 -6.92078
+-423.256 0.337725 -6.85706
+-429.946 0.366926 -6.59256
+-435.704 0.380568 -6.16731
+-440.532 0.379392 -5.62382
+-444.487 0.364703 -5.00308
+-447.661 0.338502 -4.34179
+-450.166 0.30342 -3.67096
+-452.113 0.262503 -3.01567
+-453.601 0.218904 -2.39557
+-454.714 0.17558 -1.82561
+-455.515 0.135054 -1.31694
+-456.057 0.0992625 -0.877496
+-456.38 0.069509 -0.512462
+-456.523 0.046495 -0.224496
+-456.521 0.0304036 -0.0138694
+-456.413 0.0210084 0.121405
+-456.238 0.0177833 0.185409
+-456.035 0.0200025 0.184071
+-455.846 0.0268253 0.124869
+-455.707 0.0373636 0.0164771
+-455.652 0.0507297 -0.131606
+-455.707 0.0660599 -0.309448
+0 0.0825203 -0.507071
+15.36 0 -0.0573335
+15.331 0 -0.0541549
+15.3042 0 -0.0503863
+15.2798 0 -0.0462166
+15.2577 0 -0.0418841
+15.2378 0 -0.0376716
+15.2196 0 -0.0338997
+15.2026 0 -0.0309169
+15.1862 0 -0.0290877
+15.1695 0 -0.0287786
+15.1514 0 -0.0303416
+15.1305 0 -0.0340966
+15.1055 0 -0.0403117
+15.0743 0 -0.0491821
+15.0346 0 -0.0608061
+14.9837 0 -0.0751585
+14.9182 0 -0.09206
+14.8343 0 -0.111144
+14.728 0 -0.131824
+14.5952 0 -0.153264
+14.4324 0 -0.174364
+14.237 0 -0.193769
+14.0075 0 -0.209906
+13.7447 0 -0.221065
+13.4508 0 -0.225513
+13.1306 0 -0.221621
+12.7909 0 -0.207959
+12.4426 0 -0.183261
+12.1102 0 -0.145953
+11.8799 0 -0.0920595
+12.1659 0 -0.00618169
+15.1354 0 0.17756
+32.1132 0 0.741922
+120.778 0 2.87595
+566.499 0 11.452
+2745 0 45.9473
+13152.9 0 182.548
+62031.1 0 713.388
+289106 0 2736.09
+1.3406e+06 0 10364.3
+603635 5.63804e+06 43680.6
+44137.7 4.80101e+06 31773.4
+-25595.6 2.30048e+06 11579.5
+8150.28 1.05406e+06 6204.26
+354.856 610780 4427.82
+-3208.5 318978 1562.08
+1345.54 153465 632.301
+453.842 89793.7 638.496
+-654.464 48569.1 245.02
+149.119 22079.9 60.3045
+165.762 12742.5 117.239
+-121.328 7377.05 56.7877
+7.5513 3177.11 -3.93845
+43.4339 1789.8 13.1794
+-24.1219 1147.47 12.6732
+-2.31656 463.361 -2.18671
+12.1229 258.221 1.0301
+-5.37748 207.864 3.55814
+-1.16978 85.1634 -0.065145
+3.24856 58.198 0.538234
+-5.07162 85.6445 2.41663
+1.19879 63.0056 0.384773
+4.25428 109.987 0.154357
+-16.7661 263.677 4.5034
+4.29955 332.801 0.786788
+26.7832 631.974 -2.1142
+-59.9501 1529.56 17.6318
+0.223909 2377.04 15.8337
+150.703 4356.98 -3.98994
+-241.444 10041.3 81.6899
+-155.35 17222.9 155.139
+881.576 30400.6 81.8136
+-741.732 67103.5 358.421
+-1726.66 123456 887.896
+4599.31 213118 874.698
+-1057.59 447878 2259.09
+-11479.1 860183 6312.36
+37327.2 1.49983e+06 8757.38
+-68145.7 3.32415e+06 16572.3
+-883926 6.97914e+06 45836.3
+-1.95046e+06 8.20584e+06 63143.7
+-418367 0 15011.9
+-88776.9 0 3957.47
+-18489.8 0 1026.61
+-3760.68 0 260.226
+-750.65 0 64.5624
+-154.931 0 15.7964
+-41.5419 0 3.90247
+-21.0669 0 1.01415
+-17.8192 0 0.266252
+-17.6721 0 0.0198307
+-18.0839 0 -0.103999
+-18.6018 0 -0.190553
+-19.1389 0 -0.25859
+-19.6726 0 -0.311839
+-20.1917 0 -0.350676
+-20.6862 0 -0.375043
+-21.1466 0 -0.385335
+-21.5643 0 -0.38265
+-21.9329 0 -0.36873
+-22.2495 0 -0.345746
+-22.5146 0 -0.316031
+-22.7316 0 -0.281854
+-22.9058 0 -0.245261
+-23.0435 0 -0.207991
+-23.1506 0 -0.171461
+-23.2327 0 -0.136793
+-23.2943 0 -0.104846
+-23.3389 0 -0.0762694
+-23.3693 0 -0.0515316
+-23.3879 0 -0.0309432
+-23.3967 0 -0.01467
+-23.3976 0 -0.00274064
+-23.3928 0 0.0049471
+-23.3843 0 0.00861573
+-23.3743 0 0.00859425
+-23.3649 0 0.00530043
+-23.3582 0 -0.000779375
+-23.3557 0 -0.00911179
+-23.3591 0 -0.0191387
+0 0 -0.030299
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.09847e+06 3.48674e+06 164696
+1.07388e+06 5.7508e+06 247357
+-33678.2 3.36503e+06 129135
+-43107.6 1.04759e+06 44355.4
+54069.6 506985 34130.7
+-5675.07 374642 22438.4
+-10262.3 155841 7086.54
+9165.33 69844.2 4277.21
+985.314 56862.3 3644.59
+-2596.34 25616.3 996.796
+1455.14 8514.97 443.811
+602.495 8099.52 744.732
+-548.85 4272.81 262.492
+239.846 996.097 28.3854
+199.2 1196.41 142.248
+-120.114 788.903 83.5546
+36.3029 115.859 12.2661
+72.5126 197.291 35.509
+-23.8198 198.818 45.4892
+-43.2094 79.3162 44.4617
+-21.2159 64.2927 47.7436
+-38.8598 79.4095 46.1239
+-165.509 250.385 53.9071
+-109.878 236.558 40.7506
+78.0474 164.751 12.8136
+-343.349 1062.81 116.241
+-325.051 1522.46 180.33
+648.334 1393.71 34.1811
+-987.01 5915.81 377.632
+-1834.45 10708.8 997.877
+3514.8 11627.7 586.089
+-2026.37 35876.4 1468.41
+-12309.3 77503.2 5058.52
+15024.4 95335.7 5762.6
+5591.9 219443 9966.55
+-76986.2 524690 31619.8
+65598.3 708181 47419.7
+40650.2 1.50169e+06 62140.9
+-1.56738e+06 4.86822e+06 184759
+-3.04403e+06 8.34362e+06 355394
+0 5.08274e+06 237246
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.7014e+06 0 164967
+2.40483e+06 0 420989
+864116 0 362459
+-147289 0 130048
+-31589.5 0 32844.2
+73474.4 0 37038.2
+-9804.03 0 23556.3
+-10325.7 0 5542.5
+14728.5 0 5385.58
+2105.05 0 5055.19
+-2775.85 0 1036.1
+2554.22 0 459.178
+1052.62 0 988.241
+-592.628 0 363.406
+501.973 0 117.815
+374.162 0 289.812
+-109.911 0 193.16
+120.135 0 87.3606
+67.0442 0 183.213
+-138.902 0 230.175
+-164.204 0 207.531
+-441.222 0 252.789
+-489.019 0 201.309
+-228.888 0 100.362
+-850.704 0 243.171
+-898.618 0 370.614
+461.82 0 150.571
+-1871.18 0 526.869
+-3490.79 0 1318.22
+3529.02 0 577.095
+-4057.69 0 1602.85
+-20119.6 0 7078.74
+15060.1 0 7167.01
+10192.5 0 7770.99
+-104874 0 33281.6
+49679.2 0 51220.8
+200769 0 45431.4
+-1.26662e+06 0 186483
+-3.48353e+06 0 521048
+-2.46865e+06 0 606618
+0 0 238809
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+761900 -1.49461e+06 123018
+1.09217e+06 -2.46857e+06 306548
+386140 -1.40383e+06 258823
+-73616.4 -408901 91316.5
+-9290.08 -207227 22768.5
+37629.2 -156196 25354.2
+-5410.28 -58720.6 15484.8
+-4470.13 -26382.5 3046.87
+7620.74 -23451.4 3293.16
+733.892 -9300.5 3285.78
+-1083.79 -2883 647.147
+1845.37 -3665.18 413.34
+647.043 -1710.34 851.569
+-294.456 -226.802 306.784
+393.164 -555.961 20.3429
+255.939 -356.27 152.309
+-104.482 -13.2026 129.866
+-44.5732 -95.1826 70.1422
+-109.417 -99.8618 112.5
+-179.845 -38.0779 113.049
+-114.522 -37.6923 82.6278
+-216.701 -39.7229 133.775
+-263.654 -131.542 134.855
+-192.313 -111.49 87.6107
+-658.078 -17.2624 159.255
+-746.158 -485.777 179.528
+135.643 -703.516 16.6705
+-1218.81 -324.749 446.026
+-2631.16 -2407.67 1153.75
+1266.43 -4850.36 539.741
+-1746.39 -3894.74 1012.1
+-10620.2 -13211.1 4620.52
+6622.12 -32161.6 4378.92
+5833.18 -35960.1 4328.52
+-54333.7 -83411.4 22094.6
+15681.8 -220601 35369.1
+101936 -291081 31816.7
+-570500 -591005 132519
+-1.5952e+06 -2.05065e+06 376953
+-1.11542e+06 -3.61675e+06 448139
+0 -2.20109e+06 180944
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+911735 -2.37746e+06 135803
+454294 -1.95813e+06 194355
+-22227.1 -896165 97988.6
+-13732.2 -405582 32543.7
+25763.9 -236360 23768.5
+-4255.63 -118617 14879.4
+-4308.71 -56102.2 4521.58
+4550.64 -33997.9 3034.02
+-6.02902 -17845.9 2596.49
+-1132.28 -7864.11 686.794
+996.88 -4906.85 338.373
+290.266 -2771.82 559.112
+-284.249 -1066.95 191.923
+180.025 -673.647 6.61089
+118.866 -445.163 89.4776
+-67.9236 -145.942 59.0828
+12.1002 -93.1371 10.2118
+11.415 -85.7315 26.3168
+-46.7482 -27.5417 29.9185
+-42.7822 -19.5654 21.6956
+-15.6681 -37.0608 19.9831
+-12.0962 -20.2956 22.3383
+-90.6943 -35.5404 36.0974
+-83.116 -108.967 30.9271
+21.1505 -117.628 8.90969
+-221.556 -202.913 76.2698
+-258.338 -597.67 111.282
+328.488 -888.453 11.1967
+-513.314 -1471.39 283.91
+-1323.68 -3800.3 752.066
+1553.04 -6628.85 436.16
+-348.118 -10845.3 1003.87
+-6233.56 -24830.1 3617.29
+6442.18 -46969.9 4099.14
+4886.06 -78265.8 6376.01
+-37231.5 -168001 21137.4
+21752.2 -336037 33392.6
+29187 -582741 46441.7
+-669588 -1.31018e+06 143058
+-1.33555e+06 -2.88041e+06 285017
+0 -3.49927e+06 199875
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.97943 -0.0360568 -0.00902675
+6.96822 -0.0344129 -0.00852847
+6.95814 -0.0323703 -0.00793723
+6.94924 -0.030037 -0.00728226
+6.9415 -0.0275422 -0.00660116
+6.93481 -0.0250417 -0.00593883
+6.92898 -0.0227203 -0.00534605
+6.92373 -0.0207883 -0.00487789
+6.9187 -0.019471 -0.00459203
+6.91347 -0.0189941 -0.00454699
+6.90749 -0.0195615 -0.00480031
+6.90013 -0.0213301 -0.00540664
+6.89061 -0.0243804 -0.00641569
+6.87799 -0.028687 -0.00786976
+6.86107 -0.0340941 -0.00980051
+6.83844 -0.0403008 -0.0122243
+6.80838 -0.0468627 -0.0151357
+6.76895 -0.0532107 -0.0184995
+6.71805 -0.0586899 -0.0222411
+6.65364 -0.0626099 -0.0262375
+6.57388 -0.0642991 -0.03031
+6.47748 -0.0631487 -0.0342235
+6.36391 -0.0586355 -0.0376926
+6.23356 -0.0503207 -0.0403986
+6.0879 -0.0378417 -0.0420131
+5.92945 -0.0209427 -0.0422224
+5.76188 0.000342894 -0.0407343
+5.5909 0.0249327 -0.0372148
+5.42879 0.0470973 -0.0309402
+5.31863 0.0372343 -0.0191301
+5.46426 -0.162799 0.0109874
+6.91641 -1.39354 0.118939
+15.0826 -7.99846 0.574219
+57.0861 -41.6762 2.5486
+265.044 -207.439 10.9326
+1265.67 -1000.08 45.3976
+5968.79 -4703.21 182.644
+27676.8 -21709 714.3
+126675 -98989.9 2727.78
+576065 -449319 10293.4
+250283 -2.05084e+06 42849.5
+13986.8 -1.72109e+06 31033.2
+-9989.95 -872246 11637
+3975.67 -419046 5702.8
+-458.592 -231228 3730.5
+-1378.41 -117546 1410.25
+732.054 -58228.6 648.263
+106.15 -33299.9 566.44
+-295.4 -17418.1 218.78
+121.105 -8283.95 63.6486
+61.8521 -4825.62 95.2538
+-69.157 -2627.84 43.8143
+14.0233 -1152.02 -1.78295
+21.1983 -679.552 11.7765
+-15.0063 -407.653 11.2461
+0.538484 -162.922 -0.812604
+6.3672 -98.6059 0.796846
+-4.15616 -74.314 2.64122
+-0.69189 -29.4663 0.142994
+1.77634 -21.6709 0.108304
+-3.14264 -31.2736 1.54345
+0.469137 -23.6572 0.102486
+3.10668 -38.0565 0.160702
+-9.74337 -94.9783 3.37045
+-0.292485 -126.873 0.583809
+17.1809 -221.842 -0.656026
+-30.7174 -547.59 15.4424
+-13.3753 -904.39 14.4493
+88.8142 -1576.14 -1.40545
+-96.7898 -3596.63 63.4299
+-144.648 -6553.13 127.026
+410.24 -11404.1 85.8017
+-206.616 -24171.3 316.656
+-971.945 -46107.6 791.002
+2025.04 -81289.5 901.384
+401.64 -166162 2042.97
+-5733.83 -328973 5383.34
+14799.8 -602756 8239.14
+-22272.6 -1.27374e+06 17212.2
+-370738 -2.53232e+06 46204.3
+-847008 -3.02365e+06 63790
+-185099 -662200 15303.8
+-39962.2 -145211 4031.2
+-8458.41 -31521.6 1044.34
+-1746.76 -6714.1 262.671
+-353.573 -1392.41 63.7877
+-73.6466 -279.026 14.8958
+-19.5587 -53.5292 3.34372
+-9.63792 -9.6298 0.723156
+-8.03403 -1.48199 0.144359
+-7.95254 -0.0732932 0.0116308
+-8.15125 0.12112 -0.026407
+-8.40518 0.106854 -0.0434782
+-8.67041 0.0611498 -0.0545097
+-8.93538 0.0155736 -0.0624432
+-9.19421 -0.0240536 -0.0677921
+-9.44163 -0.0570107 -0.0706129
+-9.67233 -0.0836655 -0.0709747
+-9.88149 -0.104396 -0.0690867
+-10.0656 -0.11931 -0.0653057
+-10.2229 -0.128327 -0.0600859
+-10.3537 -0.131406 -0.0539104
+-10.4595 -0.12877 -0.0472295
+-10.5433 -0.12102 -0.040421
+-10.6084 -0.109129 -0.0337738
+-10.658 -0.0943442 -0.0274917
+-10.6951 -0.0780215 -0.0217089
+-10.722 -0.0614694 -0.0165086
+-10.7405 -0.0458158 -0.0119418
+-10.7521 -0.0319271 -0.0080389
+-10.7578 -0.0203801 -0.0048174
+-10.7587 -0.0114765 -0.00228343
+-10.7557 -0.00528558 -0.000431236
+-10.7498 -0.00169829 0.000758633
+-10.7421 -0.000481714 0.00132049
+-10.7334 -0.00132667 0.00130359
+-10.725 -0.00388672 0.000771008
+-10.7178 -0.00780787 -0.000202473
+-10.7126 -0.0127477 -0.00153337
+-10.7103 -0.0183822 -0.00313328
+0 -0.0244051 -0.00491297
+132.11 -0.69827 -0.12066
+131.915 -0.665364 -0.11448
+131.74 -0.624532 -0.107051
+131.586 -0.577893 -0.0987447
+131.454 -0.528024 -0.0900468
+131.341 -0.478073 -0.0815384
+131.243 -0.431807 -0.073875
+131.156 -0.393529 -0.0677668
+131.073 -0.367879 -0.0639594
+130.987 -0.359529 -0.0632146
+130.889 -0.37276 -0.0662931
+130.767 -0.410949 -0.0739375
+130.609 -0.47599 -0.0868537
+130.397 -0.567706 -0.105687
+130.112 -0.683364 -0.130982
+129.727 -0.817372 -0.163121
+129.213 -0.961286 -0.202226
+128.536 -1.10417 -0.24803
+127.659 -1.23328 -0.299723
+126.546 -1.33504 -0.355795
+125.164 -1.39593 -0.413914
+123.492 -1.40335 -0.470892
+121.521 -1.34579 -0.522766
+119.258 -1.21279 -0.565046
+116.73 -0.994484 -0.593059
+113.981 -0.68196 -0.60231
+111.072 -0.269644 -0.588582
+108.091 0.236418 -0.54726
+105.189 0.788582 -0.470037
+102.735 1.1618 -0.330807
+102.06 0.276585 -0.022798
+108.977 -7.13024 0.918831
+149.983 -46.0711 4.48237
+342.768 -229.891 18.7671
+1182.96 -1044.29 74.7951
+4619.79 -4448.92 283.557
+17685.5 -17846.5 1013.37
+62794.7 -67100.3 3382.09
+196301 -233270 10381.9
+469279 -723899 28287.6
+207271 -1.79101e+06 61241
+21100.4 -1.53566e+06 47348.3
+-4110.99 -846782 23518.9
+2169.89 -424394 11957.1
+-675.597 -227514 6579.45
+-771.521 -117072 3061.15
+477.668 -59299.1 1563.28
+5.15958 -32679.2 957.719
+-169.499 -17173.8 444.534
+86.4779 -8510.09 206.464
+23.1075 -4732.36 147.036
+-43.4066 -2546.42 69.2657
+12.3428 -1204.87 21.8558
+9.92194 -674.017 20.547
+-10.1625 -386.017 12.9589
+1.3848 -174.808 2.4729
+3.52489 -100.227 2.40976
+-2.57801 -67.5813 2.50363
+0.0203614 -32.1425 0.327103
+1.47455 -23.1135 0.393123
+-1.71981 -27.7936 1.19689
+0.305801 -25.6753 0.372177
+2.85931 -40.6572 0.528144
+-4.74477 -86.5689 3.24835
+-0.844653 -130.168 2.94502
+12.5806 -235.577 3.60005
+-14.6378 -518.083 17.722
+-12.8587 -902.158 26.7994
+57.5121 -1642.37 30.1243
+-39.6122 -3478.8 97.0024
+-106.39 -6446.81 199.729
+240.286 -11710.1 282.878
+-43.9819 -23788.5 624.397
+-645.817 -45305.1 1336.56
+1145.45 -82846.2 2187.46
+799.991 -165321 4360.68
+-3233.89 -323851 9439.52
+5970.35 -611039 17284.6
+-32347.3 -1.23612e+06 34513
+-307251 -2.2608e+06 70109
+-691140 -2.64583e+06 90917.3
+-287283 -1.06961e+06 41971.1
+-90802.6 -343197 15333.3
+-25095.3 -97730.3 4946.23
+-6386.73 -25549.8 1458.12
+-1589.11 -6207.06 398.418
+-456.906 -1404.76 101.791
+-209.246 -293.476 24.557
+-160.205 -53.6492 5.61808
+-153.444 -5.8557 1.09298
+-155.542 2.31064 -0.0714848
+-159.594 2.78277 -0.467818
+-164.123 1.88308 -0.671659
+-168.763 0.840745 -0.80828
+-173.38 -0.0935119 -0.905071
+-177.89 -0.871575 -0.96724
+-182.205 -1.49728 -0.995197
+-186.233 -1.98686 -0.98974
+-189.887 -2.35376 -0.953823
+-193.102 -2.60425 -0.892684
+-195.845 -2.73951 -0.813064
+-198.117 -2.7605 -0.722096
+-199.95 -2.6725 -0.626317
+-201.394 -2.48771 -0.531025
+-202.509 -2.22535 -0.440052
+-203.353 -1.90978 -0.355848
+-203.98 -1.56748 -0.279777
+-204.43 -1.22398 -0.212467
+-204.738 -0.901234 -0.154127
+-204.926 -0.616084 -0.104778
+-205.015 -0.379642 -0.0643635
+-205.021 -0.197593 -0.0327851
+-204.959 -0.0710194 -0.00987414
+-204.847 0.00252635 0.0046525
+-204.701 0.0279488 0.0112314
+-204.54 0.0116561 0.0104737
+-204.383 -0.0392215 0.00316573
+-204.247 -0.117437 -0.00974792
+-204.148 -0.216027 -0.027197
+-204.1 -0.328476 -0.0480353
+0 -0.448685 -0.0710996
+2277.04 -11.6743 -1.21979
+2274.03 -11.1017 -1.17098
+2271.36 -10.3922 -1.10984
+2269.03 -9.58166 -1.03961
+2267.05 -8.71467 -0.964621
+2265.37 -7.84659 -0.890069
+2263.94 -7.04418 -0.821781
+2262.68 -6.38413 -0.766029
+2261.5 -5.94964 -0.729417
+2260.28 -5.82507 -0.718802
+2258.87 -6.08873 -0.741277
+2257.11 -6.80404 -0.8042
+2254.79 -8.00945 -0.915227
+2251.66 -9.70842 -1.08227
+2247.4 -11.8609 -1.31322
+2241.61 -14.3779 -1.61529
+2233.83 -17.1214 -1.99391
+2223.51 -19.9098 -2.45092
+2210.07 -22.529 -2.98256
+2192.93 -24.7468 -3.57711
+2171.61 -26.3277 -4.21314
+2145.76 -27.0428 -4.85879
+2115.26 -26.6725 -5.47269
+2080.23 -24.9998 -6.00699
+2041.1 -21.8 -6.41165
+1998.53 -16.8411 -6.63873
+1953.46 -9.91261 -6.64327
+1907.14 -0.916273 -6.37598
+1861.47 9.91265 -5.75603
+1819.93 21.3293 -4.57991
+1790.74 28.374 -2.17221
+1798.53 10.5599 4.03098
+1929.73 -117.977 24.0409
+2500.74 -704.1 95.5289
+4629.01 -3059.36 350.488
+11936.1 -11747.5 1210.58
+34695.4 -41133.5 3877.74
+96273.5 -130932 11300.2
+227712 -371175 29179.9
+383621 -893723 63603.2
+190025 -1.61807e+06 104135
+35580.1 -1.39562e+06 85445.6
+1576.08 -819093 48580.8
+1540.09 -426340 25407.1
+-383.013 -226068 13490.7
+-485.948 -117100 6766.09
+265.65 -60081.2 3478.9
+9.29343 -32403 1926.24
+-99.887 -17050.9 975.346
+49.2953 -8652.8 487.552
+14.7928 -4688.44 282.886
+-25.381 -2501.41 144.729
+6.85134 -1236.54 65.1033
+6.01188 -672.492 40.2404
+-5.91321 -373.945 23.0976
+0.701088 -181.792 9.1763
+2.08665 -101.484 5.66127
+-1.48816 -63.8192 4.06588
+-0.014518 -33.7045 1.62
+0.845223 -24.0148 1.24103
+-1.01024 -25.8673 1.73955
+0.195147 -26.9231 1.35176
+1.62929 -42.1792 2.09646
+-2.81853 -81.881 5.24638
+-0.361635 -132.487 7.28574
+7.28069 -243.647 12.4537
+-8.85258 -501.656 31.21
+-7.00066 -903.155 53.6521
+33.5741 -1682.15 88.7779
+-24.9374 -3413.74 199.135
+-60.2893 -6399.6 386.197
+141.44 -11904 670.584
+-35.1309 -23595.3 1356.51
+-359.884 -44965.2 2682.7
+711.277 -83995.6 4873.91
+421.482 -165321 9592.65
+-2369.71 -322056 19305.8
+-2529.28 -614565 36745.7
+-53474.4 -1.19636e+06 71193.3
+-281944 -2.05731e+06 126400
+-566446 -2.39648e+06 154731
+-334206 -1.32501e+06 94571.2
+-139684 -548258 43219.4
+-49488.2 -191515 16575.9
+-16723.6 -59129.6 5593.88
+-6475.45 -16433 1703.45
+-3601.26 -4100.27 476.781
+-2874.15 -868.142 124.439
+-2728.98 -101.792 29.4933
+-2739.28 52.3896 3.99504
+-2793.48 65.5368 -3.73132
+-2861.16 48.7015 -6.81832
+-2932.96 27.2805 -8.49342
+-3005.56 7.43802 -9.581
+-3077.5 -9.22699 -10.3012
+-3147.72 -22.5222 -10.6976
+-3214.96 -32.7841 -10.7644
+-3277.79 -40.467 -10.5007
+-3334.81 -45.9274 -9.93393
+-3384.94 -49.3607 -9.12263
+-3427.62 -50.845 -8.14585
+-3462.84 -50.431 -7.0877
+-3491.09 -48.2269 -6.02337
+-3513.19 -44.4477 -5.01041
+-3530.11 -39.4215 -4.08569
+-3542.81 -33.5606 -3.26728
+-3552.15 -27.3126 -2.55911
+-3558.81 -21.1084 -1.95657
+-3563.3 -15.3186 -1.45141
+-3565.99 -10.2262 -1.03528
+-3567.17 -6.01633 -0.701411
+-3567.08 -2.78103 -0.444993
+-3565.95 -0.53316 -0.262555
+-3564.02 0.775162 -0.151025
+-3561.57 1.23405 -0.106825
+-3558.87 0.959355 -0.125214
+-3556.23 0.0789919 -0.199922
+-3553.92 -1.27777 -0.323053
+-3552.2 -2.98766 -0.48525
+-3551.28 -4.93671 -0.676137
+0 -7.01973 -0.885007
+40097.7 -194.763 -9.16089
+40052 -184.766 -9.18072
+40011.7 -172.398 -9.12407
+39977.1 -158.264 -8.99991
+39947.9 -143.134 -8.82348
+39923.6 -127.982 -8.61312
+39903.2 -113.992 -8.38813
+39885.6 -102.531 -8.16817
+39869.1 -95.0911 -7.9741
+39852 -93.1954 -7.83025
+39832 -98.2746 -7.76797
+39806.7 -111.512 -7.83052
+39772.9 -133.671 -8.07844
+39726.8 -164.918 -8.59396
+39663.2 -204.674 -9.48229
+39576.1 -251.524 -10.8673
+39457.9 -303.2 -12.8795
+39300.1 -356.674 -15.6356
+39093.2 -408.33 -19.2113
+38828.1 -454.188 -23.6113
+38497.1 -490.124 -28.7447
+38094.5 -511.996 -34.4132
+37618.7 -515.625 -40.3222
+37071.9 -496.609 -46.1163
+36460.5 -450.068 -51.432
+35794.8 -370.535 -55.9453
+35088.2 -252.316 -59.3746
+34358.7 -90.711 -61.3865
+33633 115.584 -61.3279
+32956.6 359.998 -57.5681
+32416.5 617.205 -45.5548
+32192.6 806.95 -10.9099
+32691.7 663.487 95.8322
+34913.2 -709.502 445.96
+41381.2 -6208.44 1600.59
+58149 -24426.8 5231.19
+97681.6 -77971.1 15710.3
+178004 -216928 42554.1
+300627 -523761 100811
+379821 -1.05029e+06 198165
+207382 -1.57291e+06 290004
+59115.6 -1.35067e+06 243204
+11834.2 -828049 146031
+3751.88 -444671 77734.9
+635.911 -235515 40938.7
+2.08841 -122426 21015.6
+281.562 -63242.7 10830.2
+68.379 -33690 5802.5
+-32.0546 -17715.4 3019.31
+42.7814 -9107.78 1545.6
+16.4586 -4868.56 841.116
+-11.9235 -2582.17 441.656
+5.60178 -1307.16 218.58
+4.5731 -701.363 121.114
+-3.22882 -383.259 66.8808
+0.428897 -193.476 32.147
+1.22787 -106.729 18.1467
+-1.02339 -64.4968 11.3957
+-0.214112 -36.029 5.95171
+0.277467 -25.5931 4.28952
+-0.870271 -25.9428 4.65945
+-0.163911 -28.829 4.7979
+0.599455 -44.8419 7.46237
+-2.19674 -82.8447 14.6642
+-0.753681 -139.728 23.6873
+3.41336 -258.601 43.1135
+-7.10774 -514.146 89.9529
+-6.65904 -943.802 162.785
+15.2263 -1776.53 297.44
+-25.6807 -3522.69 604.277
+-54.4693 -6654.25 1150.71
+46.3098 -12531 2128.4
+-108.916 -24508.5 4187.04
+-389.985 -46794.9 8078.47
+-1.30851 -88493.5 15189.1
+-1035.8 -172939 29786.6
+-5677.68 -335974 58640.9
+-17886.4 -642078 112733
+-88897 -1.21117e+06 214622
+-310050 -1.99514e+06 361017
+-565841 -2.33733e+06 432816
+-446106 -1.56492e+06 296116
+-262306 -778938 150085
+-143044 -319994 62731.4
+-85343.3 -113036 22759.6
+-61553.9 -34195.4 7377.86
+-52808.6 -7899.19 2168.25
+-50103.4 -212.06 562.999
+-49765.4 1582.59 95.4565
+-50372.2 1668.09 -40.0559
+-51356.7 1298.68 -80.8582
+-52479.1 838.305 -93.1827
+-53637.9 400.676 -96.1183
+-54793.3 25.8361 -95.7861
+-55929.9 -274.934 -94.0964
+-57035.9 -505.174 -91.2572
+-58094.6 -675.216 -86.8752
+-59084.1 -796.249 -80.6097
+-59982 -876.83 -72.4982
+-60770.2 -921.968 -63.0028
+-61438.9 -934.043 -52.8711
+-61987.8 -914.508 -42.9265
+-62424.8 -865.491 -33.8782
+-62763.4 -790.752 -26.2026
+-63019.9 -695.89 -20.1069
+-63210.4 -587.898 -15.56
+-63349 -474.376 -12.3643
+-63446.8 -362.639 -10.2388
+-63512 -258.976 -8.89275
+-63550.3 -168.174 -8.07593
+-63565.9 -93.3358 -7.60375
+-63562.1 -35.955 -7.35959
+-63542.2 3.84344 -7.28304
+-63509.8 26.9874 -7.35198
+-63468.7 35.1344 -7.56454
+-63423.5 30.3838 -7.92439
+-63378.8 15.0359 -8.43006
+-63339 -8.59891 -9.06814
+-63308.5 -38.3345 -9.81046
+-63290.9 -72.175 -10.616
+0 -108.309 -11.4369
+574255 -396.493 -57.8457
+573289 -534.482 -79.9768
+572574 -674.377 -102.408
+572126 -811.17 -124.273
+571953 -938.962 -144.603
+572047 -1051.2 -162.309
+572385 -1140.91 -176.191
+572926 -1200.94 -184.978
+573608 -1224.17 -187.408
+574351 -1203.8 -182.327
+575052 -1133.53 -168.823
+575587 -1007.86 -146.378
+575811 -822.329 -115.039
+575560 -573.762 -75.5717
+574654 -260.639 -29.5662
+572900 116.518 20.5314
+570104 554.627 71.5066
+566078 1047.42 119.588
+560659 1584.72 160.768
+553724 2151.67 191.175
+545216 2727.98 207.414
+535169 3287.22 206.742
+523730 3796.25 187.003
+511182 4214.43 146.255
+497960 4492.31 82.1941
+484673 4568.74 -8.35566
+472114 4364.97 -129.461
+461305 3773.38 -285.082
+453577 2636.9 -476.587
+450735 711.018 -697.906
+455364 -2410.89 -924.208
+471407 -7457.94 -1075.78
+505190 -15845.9 -888.642
+567171 -30504.6 528.665
+674409 -57637.9 6067.57
+852045 -109949 24349.7
+1.12655e+06 -210824 78188
+1.49222e+06 -394445 218495
+1.82837e+06 -686245 530042
+1.81458e+06 -1.0395e+06 1.06858e+06
+1.16067e+06 -1.24677e+06 1.60992e+06
+527530 -1.03661e+06 1.39146e+06
+206728 -669306 859355
+82655.8 -383428 465087
+32289.1 -210810 248286
+13065.2 -113103 130093
+6374.27 -60048.6 67672.7
+2852.3 -32029 36272.8
+1193.93 -16949.9 19202.5
+693.839 -8886.81 9927.27
+338.53 -4705.42 5323.24
+120.994 -2482.36 2836.71
+81.7862 -1291.92 1444.57
+44.3948 -685.566 777.665
+7.54633 -367.023 426.912
+5.05025 -192.989 216.444
+2.21678 -105.573 119.079
+-5.64673 -60.9149 72.1276
+-5.79388 -36.0967 40.5666
+-5.83485 -25.6257 28.7279
+-9.34001 -24.3049 29.026
+-9.00448 -29.0396 32.4139
+-9.7036 -44.692 50.6421
+-19.4737 -78.4033 92.8872
+-22.2687 -138.691 156.426
+-27.1423 -257.284 290.103
+-76.2199 -492.523 573.688
+-122.259 -924.654 1048.36
+-179.712 -1754 1966.29
+-478.993 -3385.24 3873.03
+-945.845 -6440.09 7278.76
+-1636.41 -12225 13657.4
+-3947.96 -23435.7 26541.4
+-8764.54 -44509.5 50301.4
+-18056.4 -84026.3 94479.8
+-45161.7 -159708 183198
+-116191 -300926 352799
+-292458 -554606 668476
+-752582 -982455 1.25063e+06
+-1.66491e+06 -1.54065e+06 2.04462e+06
+-2.60775e+06 -1.86474e+06 2.37987e+06
+-2.62167e+06 -1.55095e+06 1.58429e+06
+-2.13156e+06 -1.01513e+06 784689
+-1.60367e+06 -575678 321020
+-1.21095e+06 -302627 112997
+-959091 -155206 34029.6
+-808301 -80263 7714.84
+-721803 -42094 -23.5987
+-675071 -21708.8 -1886.79
+-653298 -10060.1 -2036.35
+-647691 -2982 -1719.64
+-652904 1498.28 -1301.94
+-665531 4383.86 -899.266
+-683245 6226.85 -551.679
+-704301 7349.18 -268.061
+-727274 7945.81 -41.6284
+-750934 8140.26 140.221
+-774220 8017.46 288.753
+-796255 7643 410.13
+-816362 7073.04 504.989
+-834079 6358.16 570.315
+-849149 5543.98 602.158
+-861494 4670.55 598.049
+-871183 3771.76 558.459
+-878385 2875.37 487.162
+-883338 2003.53 390.696
+-886315 1173.76 277.304
+-887601 400.016 155.713
+-887482 -306.436 34.0748
+-886230 -936.407 -80.7759
+-884106 -1482.49 -183.686
+-881352 -1939.05 -271.224
+-878192 -2302.35 -341.506
+-874830 -2570.75 -393.904
+-871452 -2744.87 -428.748
+-868219 -2827.62 -447.04
+-865272 -2824.16 -450.223
+-862726 -2741.69 -439.981
+-860674 -2589.14 -418.096
+-859181 -2376.69 -386.363
+0 -2115.18 -346.576
+1.27613e+06 -1029.68 -158.854
+1.27453e+06 -1625.47 -225.345
+1.27358e+06 -2237.15 -292.365
+1.27334e+06 -2842.01 -357.2
+1.27382e+06 -3413.47 -416.829
+1.27504e+06 -3921.87 -467.934
+1.27693e+06 -4335.39 -506.976
+1.27942e+06 -4621.12 -530.338
+1.28236e+06 -4746.33 -534.542
+1.28556e+06 -4679.81 -516.514
+1.28877e+06 -4393.4 -473.91
+1.29167e+06 -3863.56 -405.476
+1.2939e+06 -3073.07 -311.428
+1.29504e+06 -2012.74 -193.788
+1.29462e+06 -683.15 -56.617
+1.29214e+06 903.458 93.9251
+1.28711e+06 2721.37 249.766
+1.27903e+06 4729.52 401.366
+1.26748e+06 6869.72 538.407
+1.25215e+06 9065.11 650.608
+1.2329e+06 11219.1 728.508
+1.20982e+06 13214.6 764.015
+1.1833e+06 14914.9 750.531
+1.15409e+06 16163.5 682.6
+1.12333e+06 16785.5 555.304
+1.09261e+06 16586.4 363.971
+1.06398e+06 15347.3 105.169
+1.04e+06 12812.6 -219.777
+1.02386e+06 8665.58 -597.385
+1.01958e+06 2480.22 -988.338
+1.03241e+06 -6371.07 -1298.88
+1.06965e+06 -18905.3 -1301.73
+1.14194e+06 -36917.6 -375.579
+1.26537e+06 -63749.1 3367.67
+1.46401e+06 -105611 15823.3
+1.76997e+06 -173252 54624.3
+2.21033e+06 -282288 167754
+2.75656e+06 -447266 467469
+3.21041e+06 -661415 1.15506e+06
+3.10188e+06 -861499 2.39897e+06
+2.03766e+06 -916719 3.7427e+06
+989162 -739147 3.34194e+06
+420643 -486733 2.13034e+06
+180763 -288635 1.18252e+06
+77065.8 -163436 644520
+33371.4 -90100.1 344786
+16115.5 -48993 181659
+7594.88 -26491.3 97800.7
+3405.88 -14183.8 52284.5
+1789.05 -7535.75 27231.2
+904.725 -4006.68 14535
+385.369 -2120.61 7794.14
+207.117 -1116.27 4021.4
+108.5 -593.072 2140.62
+32.6796 -316.406 1172.26
+10.4461 -168.446 609.189
+-0.319523 -92.2887 331.336
+-13.7991 -52.6884 196.846
+-17.494 -31.7212 114.762
+-19.5173 -22.5795 80.8179
+-24.9329 -21.0846 78.7469
+-26.7931 -25.6402 91.5002
+-31.8605 -39.2409 142.727
+-48.5415 -67.8898 253.334
+-61.8172 -121.385 435.783
+-93.1299 -224.445 814.209
+-192.929 -424.663 1571.22
+-320.982 -800.297 2883.23
+-568.686 -1514.83 5459.07
+-1272.7 -2891.1 10600.6
+-2452.3 -5484.6 19808.7
+-4675.21 -10363.7 37308
+-10439.5 -19605.2 71853
+-22069.1 -36818.6 134722
+-45912.5 -68576.5 251540
+-106809 -127318 480280
+-251527 -233760 903413
+-588648 -419021 1.67204e+06
+-1.39401e+06 -718370 3.04217e+06
+-2.88529e+06 -1.10625e+06 4.81064e+06
+-4.39976e+06 -1.38107e+06 5.41642e+06
+-4.5457e+06 -1.29334e+06 3.48161e+06
+-3.88998e+06 -982638 1.6746e+06
+-3.10836e+06 -654751 673353
+-2.48283e+06 -406802 238205
+-2.05095e+06 -246660 75403
+-1.77181e+06 -149723 20388.1
+-1.59884e+06 -90928.8 3085.47
+-1.49787e+06 -53579.4 -1950.43
+-1.44652e+06 -28344.1 -3062.6
+-1.43033e+06 -10380.5 -2868.32
+-1.43961e+06 2820.58 -2228.39
+-1.46749e+06 12626.2 -1471.7
+-1.50867e+06 19836.4 -741.778
+-1.55879e+06 24952.3 -97.0835
+-1.61408e+06 28309.8 449.13
+-1.67121e+06 30156.7 903.847
+-1.72732e+06 30697.7 1277.34
+-1.78008e+06 30120.8 1574.22
+-1.82773e+06 28608.7 1791.75
+-1.86909e+06 26341.3 1922.67
+-1.90353e+06 23492.9 1959.98
+-1.93088e+06 20228.7 1901.05
+-1.95138e+06 16700.7 1750.07
+-1.9655e+06 13045.8 1518.42
+-1.97394e+06 9385.13 1223.32
+-1.97746e+06 5823.6 885.597
+-1.97687e+06 2450.96 527.094
+-1.97298e+06 -657.695 168.433
+-1.96653e+06 -3441.41 -172.61
+-1.95825e+06 -5853.02 -481.977
+-1.94878e+06 -7858.98 -749.548
+-1.93868e+06 -9439.18 -968.913
+-1.92846e+06 -10586.6 -1136.88
+-1.91855e+06 -11306.8 -1252.92
+-1.90932e+06 -11616.9 -1318.61
+-1.90105e+06 -11544.4 -1337.09
+-1.89397e+06 -11125.5 -1312.65
+-1.88825e+06 -10403.5 -1250.31
+-1.88398e+06 -9426.54 -1155.53
+0 -8245.24 -1034.07
+2.00317e+06 -1825.97 -227.017
+2.00029e+06 -3001.9 -312.774
+1.99827e+06 -4211.84 -398.245
+1.9972e+06 -5410.42 -479.814
+1.99715e+06 -6544.78 -553.511
+1.99814e+06 -7555.98 -615.036
+2.00015e+06 -8380.9 -659.881
+2.00309e+06 -8954.41 -683.538
+2.0068e+06 -9211.99 -681.81
+2.01103e+06 -9092.63 -651.179
+2.01547e+06 -8542.02 -589.267
+2.01969e+06 -7515.95 -495.321
+2.02317e+06 -5983.81 -370.716
+2.02532e+06 -3932.1 -219.377
+2.02546e+06 -1367.92 -48.0238
+2.02284e+06 1677.68 133.861
+2.01671e+06 5146.55 314.449
+2.0063e+06 8950.58 480.392
+1.99095e+06 12969.4 618.011
+1.97012e+06 17048.7 714.684
+1.94354e+06 20999.9 760.188
+1.91125e+06 24601.5 747.668
+1.87375e+06 27601.8 673.968
+1.83206e+06 29724.7 539.274
+1.78779e+06 30676.8 346.372
+1.74323e+06 30154.5 100.479
+1.70135e+06 27850.2 -188.845
+1.66585e+06 23451.8 -501.718
+1.64129e+06 16630.9 -795.746
+1.63335e+06 7007.93 -984.17
+1.64934e+06 -5926.85 -891.973
+1.69925e+06 -22983.2 -137.357
+1.79762e+06 -45616.2 2262.95
+1.96665e+06 -76548.1 9250.25
+2.24038e+06 -120646 30107
+2.66638e+06 -185495 93179.1
+3.29037e+06 -279860 277446
+4.08641e+06 -406680 772409
+4.78317e+06 -548317 1.92857e+06
+4.67452e+06 -651892 4.06355e+06
+3.09392e+06 -644077 6.43781e+06
+1.50677e+06 -506282 5.83473e+06
+642414 -335236 3.77435e+06
+279698 -202197 2.12066e+06
+121933 -116613 1.16823e+06
+53702.4 -65556.5 632083
+26338.3 -36322 335685
+12765.2 -19918.1 181392
+5832.07 -10790.1 97595.9
+3052.69 -5797.65 51148.2
+1581.83 -3106.3 27305.5
+691.959 -1654.08 14700.9
+357.05 -877.7 7641.78
+189.56 -468.599 4054.49
+61.5384 -250.494 2222.05
+14.8656 -134.196 1170.24
+-4.81737 -73.8489 633.578
+-26.1651 -42.1421 373.339
+-34.4586 -25.5298 222.122
+-38.8932 -18.2538 156.208
+-47.0731 -17.012 149.364
+-51.5481 -20.7517 176.963
+-62.3382 -31.5996 275.375
+-88.6829 -54.3611 479.741
+-113.691 -97.214 832.446
+-177.752 -178.834 1559.05
+-344.948 -336.252 2969.53
+-564.464 -632.39 5448.42
+-1026.21 -1190.83 10336.5
+-2221.78 -2254.73 19909.8
+-4179.87 -4252.13 37058.5
+-7982.96 -7973.58 69726.2
+-17437.3 -14917.7 133320
+-35818.9 -27702.2 248228
+-73336 -50905.9 461293
+-167447 -92843.8 872529
+-385127 -167434 1.62056e+06
+-888816 -295276 2.9637e+06
+-2.09689e+06 -498628 5.32084e+06
+-4.32123e+06 -764517 8.28572e+06
+-6.53703e+06 -979365 9.18965e+06
+-6.68012e+06 -987869 5.81771e+06
+-5.69207e+06 -821816 2.75882e+06
+-4.57042e+06 -600261 1.09806e+06
+-3.69577e+06 -406838 389069
+-3.10135e+06 -267184 127424
+-2.72064e+06 -174230 39140.2
+-2.48611e+06 -112624 10456.3
+-2.35031e+06 -69819.6 1035.85
+-2.28289e+06 -38116.4 -2071.48
+-2.26441e+06 -13415 -2887.74
+-2.28178e+06 6337.79 -2760.39
+-2.32553e+06 22175.6 -2235.05
+-2.38813e+06 34650.1 -1571.75
+-2.46321e+06 44089.9 -893.621
+-2.54516e+06 50729.4 -248.609
+-2.62899e+06 54778 350.691
+-2.71046e+06 56458 899.952
+-2.78614e+06 56020.3 1388.9
+-2.85349e+06 53745.5 1798.35
+-2.9109e+06 49935.1 2104.49
+-2.9576e+06 44900.1 2285.81
+-2.99355e+06 38947.8 2329.36
+-3.01928e+06 32372.7 2234.22
+-3.03572e+06 25449.3 2011.92
+-3.04406e+06 18427.2 1684.34
+-3.0456e+06 11528.9 1280.08
+-3.04168e+06 4948.59 830.398
+-3.03358e+06 -1149.07 365.654
+-3.02249e+06 -6629.14 -87.3546
+-3.00947e+06 -11386.7 -506.885
+-2.99546e+06 -15347 -876.756
+-2.98126e+06 -18464.5 -1186.13
+-2.96754e+06 -20722.6 -1428.89
+-2.95482e+06 -22131.1 -1602.9
+-2.94352e+06 -22724.5 -1709.15
+-2.93393e+06 -22558.4 -1751.13
+-2.92627e+06 -21706.5 -1734.04
+-2.92064e+06 -20256.3 -1664.31
+-2.91709e+06 -18304.6 -1549.08
+0 -15953.6 -1396.02
+2.55068e+06 -2234.57 -204.93
+2.54572e+06 -3724.07 -251.858
+2.54139e+06 -5257.71 -296.106
+2.53784e+06 -6777.67 -335.481
+2.53519e+06 -8216.71 -367.712
+2.53352e+06 -9500.04 -390.441
+2.5329e+06 -10547.7 -401.289
+2.53331e+06 -11277.4 -398.027
+2.53467e+06 -11608 -378.827
+2.53682e+06 -11463.2 -342.585
+2.53951e+06 -10776.1 -289.316
+2.54238e+06 -9493.28 -220.588
+2.54494e+06 -7579.3 -139.942
+2.5466e+06 -5021.47 -53.2171
+2.54667e+06 -1833.86 31.3644
+2.54434e+06 1938.75 103.466
+2.53874e+06 6217.37 151.387
+2.52898e+06 10886.1 163.316
+2.51422e+06 15790.1 129.017
+2.49375e+06 20735.2 41.7093
+2.46708e+06 25488.4 -100.201
+2.43407e+06 29781.6 -292.003
+2.39507e+06 33317.4 -522.547
+2.35102e+06 35778.6 -775.25
+2.30351e+06 36841.1 -1029.86
+2.25496e+06 36187.8 -1263.81
+2.20857e+06 33524 -1451.25
+2.16851e+06 28586.7 -1557.06
+2.14003e+06 21143.8 -1523.08
+2.12983e+06 10971.6 -1242.22
+2.14683e+06 -2209.87 -504.821
+2.2035e+06 -18880.1 1150.39
+2.31841e+06 -39999.7 4947.69
+2.52047e+06 -67475.7 14675.7
+2.85506e+06 -104697 42616
+3.38788e+06 -156531 126997
+4.18796e+06 -227334 375844
+5.23861e+06 -315093 1.05139e+06
+6.2008e+06 -402289 2.64481e+06
+6.12979e+06 -451961 5.61549e+06
+4.07431e+06 -425978 8.96353e+06
+1.97952e+06 -328473 8.19094e+06
+839228 -217369 5.34671e+06
+365440 -132058 3.03136e+06
+159976 -76972.6 1.68467e+06
+70614.9 -43853.7 919582
+34976.6 -24625.3 491843
+17228 -13648.7 267111
+7931.5 -7463.14 144596
+4171.93 -4048.06 76231
+2197.38 -2185.37 40801.6
+968.822 -1170.06 22050.7
+494.323 -624.376 11525.8
+266.22 -335.042 6119.38
+86.9848 -179.78 3361.51
+16.323 -96.8016 1784.31
+-11.2546 -53.5119 965.196
+-40.4633 -30.5867 567.597
+-53.6579 -18.6046 341.752
+-60.5381 -13.3761 240.396
+-71.4366 -12.489 227.701
+-78.5191 -15.2217 272.16
+-95.4015 -23.055 422.581
+-131.399 -39.5089 728.007
+-166.775 -70.5088 1265.71
+-262.707 -129.055 2369.66
+-495.541 -241.392 4478.83
+-795.037 -452.24 8199.13
+-1445.5 -847.26 15529.6
+-3084.22 -1595.26 29734.9
+-5701.87 -2992.37 55127
+-10817.8 -5570.16 103371
+-23389.8 -10327.3 196326
+-47232.5 -19009.8 363115
+-95700.7 -34589.6 670856
+-217768 -62319.1 1.25871e+06
+-498290 -111081 2.3154e+06
+-1.1489e+06 -194211 4.19423e+06
+-2.72339e+06 -326135 7.45837e+06
+-5.62211e+06 -500814 1.15087e+07
+-8.46735e+06 -654254 1.2663e+07
+-8.55617e+06 -692016 7.9601e+06
+-7.21388e+06 -609192 3.74738e+06
+-5.7558e+06 -469888 1.48073e+06
+-4.65063e+06 -334195 522278
+-3.91799e+06 -228728 172399
+-3.46e+06 -154522 55541.5
+-3.1852e+06 -102913 17546.7
+-3.03124e+06 -65226.7 4537.91
+-2.95893e+06 -35753.1 -437.852
+-2.94354e+06 -11458.3 -2500.74
+-2.96867e+06 9049.59 -3308.74
+-3.02264e+06 26327.2 -3512.53
+-3.09643e+06 40557 -3414.11
+-3.18252e+06 51781.8 -3152.08
+-3.27444e+06 60024.6 -2778.73
+-3.36656e+06 65350.7 -2310.06
+-3.45421e+06 67896.4 -1759.26
+-3.53373e+06 67874.3 -1153.05
+-3.60258e+06 65564.2 -533.564
+-3.65934e+06 61294.9 48.9732
+-3.70354e+06 55424.5 546.665
+-3.7356e+06 48321.2 922.982
+-3.75652e+06 40348.2 1158.04
+-3.76776e+06 31852.6 1249.6
+-3.77098e+06 23156.7 1210.64
+-3.76792e+06 14553.2 1064.79
+-3.76026e+06 6300.58 841.186
+-3.74954e+06 -1379.08 569.79
+-3.73713e+06 -8302.47 277.959
+-3.72418e+06 -14326.1 -11.5889
+-3.71162e+06 -19346.8 -281.513
+-3.70017e+06 -23301.3 -519.689
+-3.69038e+06 -26164.6 -718.548
+-3.68258e+06 -27947.4 -874.23
+-3.67699e+06 -28693 -985.754
+-3.67367e+06 -28472.7 -1054.26
+-3.67259e+06 -27380.8 -1082.33
+-3.67364e+06 -25529.8 -1073.43
+-3.67663e+06 -23044.2 -1031.58
+0 -20054.9 -961.115
+2.86855e+06 -1854.68 -108.284
+2.86116e+06 -3107.71 -72.5392
+2.85387e+06 -4398.18 -30.8214
+2.84686e+06 -5677.25 15.8338
+2.8403e+06 -6888.23 65.954
+2.83438e+06 -7968.15 117.742
+2.82925e+06 -8849.73 169.128
+2.82504e+06 -9463.97 217.751
+2.82182e+06 -9742.99 260.89
+2.8196e+06 -9623.45 295.334
+2.8183e+06 -9050.08 317.203
+2.81774e+06 -7979.55 321.733
+2.81762e+06 -6384.23 303.083
+2.8175e+06 -4255.97 254.239
+2.8168e+06 -1609.52 167.182
+2.8148e+06 1514.41 33.422
+2.81067e+06 5046.56 -154.945
+2.80349e+06 8887.35 -403.665
+2.79234e+06 12905.9 -714.341
+2.77635e+06 16940 -1082.32
+2.75481e+06 20798.1 -1494.91
+2.72732e+06 24262.8 -1930.52
+2.69393e+06 27096.9 -2359.21
+2.65521e+06 29052.5 -2744.91
+2.61247e+06 29883 -3048.98
+2.56781e+06 29356.8 -3233.71
+2.52427e+06 27271.6 -3263.61
+2.48597e+06 23464.7 -3100.97
+2.45834e+06 17815.4 -2692.24
+2.44867e+06 10230.1 -1939.77
+2.46695e+06 596.881 -640.771
+2.52756e+06 -11313.2 1684.91
+2.65219e+06 -26032.7 6392.23
+2.87497e+06 -44685.9 17838.2
+3.24999e+06 -69266.7 50446.8
+3.85684e+06 -102466 149638
+4.7829e+06 -146131 444635
+6.02036e+06 -197508 1.25057e+06
+7.18315e+06 -244480 3.16035e+06
+7.15336e+06 -265658 6.73504e+06
+4.7696e+06 -243381 1.07878e+07
+2.31656e+06 -185237 9.90431e+06
+980264 -122274 6.50501e+06
+426915 -74484.6 3.71555e+06
+186977 -43685.5 2.08065e+06
+82582.7 -25107.7 1.14385e+06
+41220.6 -14218.4 615776
+20481.9 -7932.76 336346
+9449.45 -4366.01 183108
+4997.48 -2385.73 97021
+2663 -1295.55 52106.9
+1177.61 -695.821 28270.2
+598.332 -372.288 14844.8
+324.774 -200.474 7898.81
+104.704 -107.986 4349.62
+15.3467 -58.3883 2319.93
+-18.0701 -32.3769 1256.44
+-53.9148 -18.5265 739.598
+-71.2958 -11.3064 448.378
+-80.1676 -8.17558 315.661
+-93.307 -7.65353 297.716
+-102.456 -9.31089 356.991
+-124.538 -14.0275 553.268
+-168.694 -23.9632 946.922
+-211.696 -42.7011 1644.36
+-332.3 -77.8804 3072.83
+-617.24 -145.043 5780.25
+-976.299 -270.7 10553.9
+-1766.47 -505.395 19932.3
+-3736.97 -949.076 37978.2
+-6820.54 -1774.75 70121
+-12850.6 -3284.97 130956
+-27673.5 -6047.94 247323
+-55355.2 -11066.1 454659
+-111242 -20018.5 834661
+-252783 -35802.5 1.55497e+06
+-577777 -63346.8 2.83887e+06
+-1.33126e+06 -110229 5.10207e+06
+-3.1601e+06 -184824 9.00548e+06
+-6.52457e+06 -284714 1.38157e+07
+-9.79651e+06 -376955 1.51387e+07
+-9.82929e+06 -410305 9.48917e+06
+-8.22622e+06 -373509 4.45268e+06
+-6.52865e+06 -297255 1.75178e+06
+-5.26473e+06 -217059 614662
+-4.44129e+06 -151773 202338
+-3.9364e+06 -104360 65949.7
+-3.64062e+06 -70533.6 22019.2
+-3.48035e+06 -45171.7 6874.37
+-3.40949e+06 -24724.8 724.45
+-3.39897e+06 -7306.82 -2279.77
+-3.4296e+06 7882.68 -3960.69
+-3.48797e+06 21075.2 -4988.55
+-3.564e+06 32249.1 -5643.13
+-3.64965e+06 41300 -6028.17
+-3.73824e+06 48133 -6162.34
+-3.82424e+06 52710.9 -6038.05
+-3.90328e+06 55075.5 -5659.17
+-3.97213e+06 55349.6 -5057.58
+-4.02884e+06 53725.7 -4292.38
+-4.07259e+06 50449.5 -3438.48
+-4.1036e+06 45800.7 -2572.09
+-4.12293e+06 40075.8 -1758.19
+-4.13219e+06 33573.9 -1043.02
+-4.13335e+06 26585.6 -451.803
+-4.12851e+06 19385.5 9.12686
+-4.1197e+06 12225 347.623
+-4.10878e+06 5329.08 580.071
+-4.09736e+06 -1107.99 726.249
+-4.08675e+06 -6924.72 805.492
+-4.07795e+06 -11994.1 834.448
+-4.07164e+06 -16224.4 826.236
+-4.06825e+06 -19558.5 790.579
+-4.06795e+06 -21973 734.451
+-4.07072e+06 -23475.9 662.85
+-4.07636e+06 -24103 579.503
+-4.08456e+06 -23914.7 487.446
+-4.0949e+06 -22991.1 389.469
+-4.10694e+06 -21427.7 288.427
+-4.12018e+06 -19330.2 187.346
+0 -16809.7 89.289
+3.01188e+06 -720.285 -4.25086
+3.00255e+06 -1209.34 111.787
+2.99279e+06 -1713.04 236.603
+2.9828e+06 -2212.29 365.97
+2.97281e+06 -2684.94 494.743
+2.96306e+06 -3106.39 617.073
+2.9538e+06 -3450.39 726.589
+2.94529e+06 -3690.05 816.547
+2.93774e+06 -3798.98 879.948
+2.93132e+06 -3752.59 909.627
+2.92612e+06 -3529.57 898.303
+2.92216e+06 -3113.33 838.6
+2.91929e+06 -2493.53 723.084
+2.91726e+06 -1667.5 544.394
+2.91564e+06 -641.598 295.609
+2.91383e+06 567.687 -29.0049
+2.91106e+06 1932.78 -432.776
+2.90644e+06 3414.43 -914.895
+2.89901e+06 4961.42 -1468.33
+2.88779e+06 6510.82 -2077.72
+2.87191e+06 7988.77 -2717.76
+2.85074e+06 9312.08 -3352.73
+2.82401e+06 10390.8 -3937.82
+2.792e+06 11132 -4422.51
+2.75565e+06 11444.5 -4755.76
+2.71673e+06 11244.3 -4891.45
+2.67798e+06 10460.6 -4791.55
+2.64333e+06 9039.74 -4423.18
+2.61822e+06 6946.41 -3745.2
+2.61012e+06 4157.94 -2677.9
+2.6296e+06 647.828 -1036.73
+2.69205e+06 -3649.81 1654.35
+2.8209e+06 -8905.41 6808.63
+3.05313e+06 -15491 19085.3
+3.44757e+06 -24065 54089
+4.09152e+06 -35485.2 161241
+5.08282e+06 -50239 481557
+6.41971e+06 -67157.9 1.35941e+06
+7.69249e+06 -81961 3.44334e+06
+7.691e+06 -87679.2 7.34908e+06
+5.13902e+06 -79246.2 1.17871e+07
+2.49829e+06 -59910.6 1.08485e+07
+1.05789e+06 -39476 7.15248e+06
+461151 -24072.8 4.10666e+06
+201989 -14165.7 2.31198e+06
+89353.6 -8179.2 1.27716e+06
+44875 -4650.67 690881
+22385.4 -2602.61 379170
+10323.7 -1437.39 207271
+5486.9 -788.813 110194
+2948.16 -429.722 59351.5
+1305.28 -231.032 32304.8
+661.17 -123.671 17020.5
+359.698 -66.7014 9074.35
+114.324 -36.0147 5005.39
+13.8012 -19.5202 2677.03
+-23.193 -10.8385 1452.42
+-63.5796 -6.20389 856.397
+-83.7019 -3.79434 520.947
+-93.8035 -2.75465 366.972
+-108.406 -2.58362 345.539
+-118.792 -3.13833 414.662
+-144.281 -4.71079 641.928
+-194.025 -8.03144 1095.04
+-241.661 -14.3038 1898.06
+-376.951 -26.0459 3539.55
+-694.117 -48.3866 6639.88
+-1089.53 -90.0953 12100.7
+-1965.08 -167.949 22799.1
+-4137.15 -315.22 43287.2
+-7482.88 -588.839 79653.7
+-14015.4 -1086.58 148276
+-30157.2 -1992.4 278995
+-60060.4 -3634.09 510644
+-119923 -6557.31 932672
+-271964 -11688 1.72865e+06
+-621378 -20600.8 3.14038e+06
+-1.43004e+06 -35756 5.61403e+06
+-3.39182e+06 -59923.9 9.86037e+06
+-6.99709e+06 -92504.4 1.5077e+07
+-1.04859e+07 -123319 1.64899e+07
+-1.04823e+07 -136082 1.03276e+07
+-8.73949e+06 -125849 4.84075e+06
+-6.91785e+06 -101616 1.90046e+06
+-5.57483e+06 -75087.7 664507
+-4.70876e+06 -52997.5 217860
+-4.18422e+06 -36719.7 71030.3
+-3.882e+06 -24976.8 24138.2
+-3.72241e+06 -16071.4 8026.73
+-3.65551e+06 -8793.66 1330.61
+-3.64965e+06 -2499.29 -2191.8
+-3.68394e+06 3074.58 -4438.53
+-3.74388e+06 7986.79 -6070.27
+-3.81878e+06 12204.5 -7329.68
+-3.90036e+06 15665.8 -8275.15
+-3.98202e+06 18315.2 -8883
+-4.05854e+06 20122.3 -9113.64
+-4.12598e+06 21090 -8952.75
+-4.18173e+06 21255.5 -8427.83
+-4.22443e+06 20685.7 -7605.07
+-4.25395e+06 19470.3 -6574.68
+-4.27115e+06 17714.1 -5433.02
+-4.27766e+06 15530 -4267.24
+-4.27563e+06 13033.5 -3145.77
+-4.26742e+06 10337.8 -2114.74
+-4.25545e+06 7550.5 -1199.44
+-4.24194e+06 4771 -408.813
+-4.22883e+06 2088.47 258.974
+-4.21769e+06 -419.696 811.317
+-4.20972e+06 -2689 1257.32
+-4.20569e+06 -4668.57 1605.57
+-4.20602e+06 -6321.53 1863.28
+-4.21082e+06 -7624.87 2036.48
+-4.21989e+06 -8568.94 2130.57
+-4.23285e+06 -9156.56 2151.03
+-4.24913e+06 -9401.67 2103.88
+-4.26804e+06 -9327.87 1996.08
+-4.28886e+06 -8966.6 1835.63
+-4.31083e+06 -8355.28 1631.64
+-4.33321e+06 -7535.4 1394.12
+0 -6550.55 1133.49
+3.05024e+06 720.285 39.5366
+3.04016e+06 1209.34 188.361
+3.02945e+06 1713.04 347.055
+3.01829e+06 2212.29 510.079
+3.00695e+06 2684.94 670.78
+2.99568e+06 3106.39 821.653
+2.98478e+06 3450.39 954.575
+2.97454e+06 3690.05 1061.02
+2.96524e+06 3798.98 1132.27
+2.95711e+06 3752.59 1159.58
+2.95032e+06 3529.57 1134.34
+2.94495e+06 3113.33 1048.18
+2.94095e+06 2493.53 893.14
+2.93813e+06 1667.5 661.828
+2.93611e+06 641.597 347.925
+2.93434e+06 -567.687 -53.0322
+2.9321e+06 -1932.78 -542.362
+2.92852e+06 -3414.43 -1116.48
+2.9226e+06 -4961.42 -1764.79
+2.91334e+06 -6510.82 -2467.65
+2.89981e+06 -7988.77 -3194.79
+2.88127e+06 -9312.08 -3905.1
+2.85736e+06 -10390.8 -4548.25
+2.8282e+06 -11132 -5068.57
+2.79461e+06 -11444.5 -5410.81
+2.7582e+06 -11244.3 -5526.4
+2.7216e+06 -10460.6 -5377.32
+2.68863e+06 -9039.73 -4933.67
+2.66471e+06 -6946.41 -4160.25
+2.65735e+06 -4157.93 -2985.5
+2.67727e+06 -647.827 -1233.17
+2.74017e+06 3649.81 1568.98
+2.86999e+06 8905.41 6849.93
+3.10455e+06 15491 19359.4
+3.50408e+06 24065 55063.4
+4.15823e+06 35485.2 164615
+5.1681e+06 50239 492656
+6.53403e+06 67157.9 1.39251e+06
+7.83979e+06 81961 3.52957e+06
+7.84807e+06 87679.2 7.53588e+06
+5.24802e+06 79246.2 1.20906e+07
+2.55266e+06 59910.6 1.11364e+07
+1.08155e+06 39476 7.35204e+06
+471694 24072.8 4.22924e+06
+206616 14165.7 2.38559e+06
+91485.4 8179.2 1.32008e+06
+46059.8 4650.67 715405
+23000.4 2602.61 393362
+10602.6 1437.39 215354
+5647.25 788.813 114627
+3044.12 429.722 61808.7
+1348.2 231.032 33685.7
+681.929 123.671 17770.5
+371.052 66.7014 9481.5
+117.274 36.0147 5233.03
+13.1411 19.5202 2801.36
+-25.078 10.8385 1521.13
+-67.1067 6.20389 897.595
+-88.1743 3.79434 546.54
+-98.6787 2.75465 385.069
+-113.786 2.58362 362.43
+-124.568 3.13833 434.972
+-151.234 4.71079 673.142
+-202.998 8.03144 1147.17
+-252.21 14.3038 1986.77
+-392.243 26.0459 3701.61
+-720.102 48.3866 6937.45
+-1127.72 90.0953 12634.7
+-2032.24 167.949 23783.6
+-4271.87 315.22 45096.8
+-7699.86 588.839 82872.1
+-14386.2 1086.58 154074
+-30956.2 1992.4 289529
+-61579.1 3634.09 529079
+-122639 6557.31 964441
+-277830 11688 1.78413e+06
+-634701 20600.8 3.23557e+06
+-1.45993e+06 35756 5.77339e+06
+-3.46066e+06 59923.9 1.01227e+07
+-7.13579e+06 92504.4 1.54614e+07
+-1.06868e+07 123319 1.69014e+07
+-1.06711e+07 136082 1.05842e+07
+-8.88691e+06 125849 4.95997e+06
+-7.02964e+06 101616 1.94611e+06
+-5.66475e+06 75087.7 679665
+-4.78764e+06 52997.5 222462
+-4.25872e+06 36719.7 72476.4
+-3.95586e+06 24976.8 24731.9
+-3.79757e+06 16071.4 8364.48
+-3.73273e+06 8793.66 1521.07
+-3.72888e+06 2499.29 -2160.02
+-3.76459e+06 -3074.57 -4598.27
+-3.82497e+06 -7986.79 -6448.11
+-3.89914e+06 -12204.5 -7935.96
+-3.97877e+06 -15665.8 -9100.59
+-4.05731e+06 -18315.2 -9899.81
+-4.12967e+06 -20122.3 -10279.6
+-4.19212e+06 -21090 -10216.7
+-4.24229e+06 -21255.5 -9735.34
+-4.27911e+06 -20685.7 -8902.95
+-4.30271e+06 -19470.3 -7814.68
+-4.31421e+06 -17714.1 -6573.97
+-4.31548e+06 -15530 -5276.21
+-4.30887e+06 -13033.5 -3998.39
+-4.29691e+06 -10337.8 -2794.98
+-4.28212e+06 -7550.5 -1699.08
+-4.26681e+06 -4771 -726.724
+-4.25292e+06 -2088.47 117.615
+-4.24202e+06 419.696 835.883
+-4.23522e+06 2689 1432.62
+-4.23323e+06 4668.57 1912.77
+-4.23634e+06 6321.53 2280.85
+-4.24451e+06 7624.87 2541.16
+-4.25742e+06 8568.94 2698.31
+-4.27452e+06 9156.56 2757.86
+-4.29509e+06 9401.67 2726.74
+-4.31831e+06 9327.87 2613.48
+-4.34332e+06 8966.6 2428.23
+-4.36924e+06 8355.28 2182.67
+-4.39524e+06 7535.4 1889.69
+0 6550.55 1562.76
+3.01188e+06 1854.68 -4.25089
+3.00255e+06 3107.71 111.787
+2.99279e+06 4398.18 236.603
+2.9828e+06 5677.25 365.971
+2.97281e+06 6888.23 494.743
+2.96306e+06 7968.15 617.072
+2.9538e+06 8849.73 726.589
+2.94529e+06 9463.97 816.547
+2.93774e+06 9742.99 879.948
+2.93132e+06 9623.45 909.627
+2.92612e+06 9050.08 898.303
+2.92216e+06 7979.55 838.6
+2.91929e+06 6384.23 723.084
+2.91726e+06 4255.97 544.394
+2.91564e+06 1609.51 295.609
+2.91383e+06 -1514.41 -29.0051
+2.91106e+06 -5046.56 -432.776
+2.90644e+06 -8887.35 -914.894
+2.89901e+06 -12905.9 -1468.33
+2.88779e+06 -16940 -2077.72
+2.87191e+06 -20798.1 -2717.76
+2.85074e+06 -24262.8 -3352.73
+2.82401e+06 -27096.9 -3937.82
+2.792e+06 -29052.5 -4422.51
+2.75565e+06 -29883 -4755.76
+2.71673e+06 -29356.8 -4891.45
+2.67798e+06 -27271.6 -4791.55
+2.64333e+06 -23464.7 -4423.18
+2.61822e+06 -17815.4 -3745.2
+2.61012e+06 -10230.1 -2677.9
+2.6296e+06 -596.881 -1036.73
+2.69205e+06 11313.2 1654.35
+2.8209e+06 26032.7 6808.63
+3.05313e+06 44685.9 19085.3
+3.44757e+06 69266.7 54089
+4.09152e+06 102466 161241
+5.08282e+06 146131 481557
+6.41971e+06 197508 1.35941e+06
+7.69249e+06 244480 3.44334e+06
+7.691e+06 265658 7.34908e+06
+5.13902e+06 243381 1.17871e+07
+2.49829e+06 185237 1.08485e+07
+1.05789e+06 122274 7.15248e+06
+461151 74484.6 4.10666e+06
+201989 43685.5 2.31198e+06
+89353.6 25107.7 1.27716e+06
+44875 14218.4 690881
+22385.4 7932.76 379170
+10323.7 4366.01 207271
+5486.9 2385.73 110194
+2948.16 1295.55 59351.5
+1305.28 695.821 32304.8
+661.17 372.288 17020.5
+359.698 200.474 9074.35
+114.324 107.986 5005.39
+13.8012 58.3883 2677.03
+-23.193 32.3769 1452.42
+-63.5796 18.5265 856.397
+-83.7019 11.3064 520.947
+-93.8035 8.17558 366.972
+-108.406 7.65353 345.539
+-118.792 9.31089 414.662
+-144.281 14.0275 641.928
+-194.025 23.9632 1095.04
+-241.661 42.7011 1898.06
+-376.951 77.8804 3539.55
+-694.117 145.043 6639.88
+-1089.53 270.7 12100.7
+-1965.08 505.395 22799.1
+-4137.15 949.076 43287.2
+-7482.88 1774.75 79653.7
+-14015.4 3284.97 148276
+-30157.2 6047.94 278995
+-60060.4 11066.1 510644
+-119923 20018.5 932672
+-271964 35802.5 1.72865e+06
+-621378 63346.8 3.14038e+06
+-1.43004e+06 110229 5.61403e+06
+-3.39182e+06 184824 9.86037e+06
+-6.99709e+06 284714 1.5077e+07
+-1.04859e+07 376955 1.64899e+07
+-1.04823e+07 410305 1.03276e+07
+-8.73949e+06 373509 4.84075e+06
+-6.91785e+06 297255 1.90046e+06
+-5.57483e+06 217059 664507
+-4.70876e+06 151773 217860
+-4.18422e+06 104360 71030.3
+-3.882e+06 70533.6 24138.2
+-3.72241e+06 45171.7 8026.73
+-3.65551e+06 24724.8 1330.61
+-3.64965e+06 7306.82 -2191.8
+-3.68394e+06 -7882.68 -4438.53
+-3.74388e+06 -21075.2 -6070.27
+-3.81878e+06 -32249.1 -7329.68
+-3.90036e+06 -41300 -8275.15
+-3.98202e+06 -48133 -8883
+-4.05854e+06 -52710.9 -9113.64
+-4.12598e+06 -55075.5 -8952.75
+-4.18173e+06 -55349.6 -8427.83
+-4.22443e+06 -53725.7 -7605.07
+-4.25395e+06 -50449.5 -6574.68
+-4.27115e+06 -45800.7 -5433.02
+-4.27766e+06 -40075.8 -4267.24
+-4.27563e+06 -33573.9 -3145.77
+-4.26742e+06 -26585.6 -2114.74
+-4.25545e+06 -19385.5 -1199.44
+-4.24194e+06 -12225 -408.813
+-4.22883e+06 -5329.08 258.974
+-4.21769e+06 1107.99 811.317
+-4.20972e+06 6924.72 1257.32
+-4.20569e+06 11994.1 1605.57
+-4.20602e+06 16224.4 1863.28
+-4.21082e+06 19558.5 2036.48
+-4.21989e+06 21973 2130.57
+-4.23285e+06 23475.9 2151.03
+-4.24913e+06 24103 2103.88
+-4.26804e+06 23914.7 1996.08
+-4.28886e+06 22991.1 1835.63
+-4.31083e+06 21427.7 1631.64
+-4.33321e+06 19330.2 1394.12
+0 16809.7 1133.49
+2.86855e+06 2234.57 -108.284
+2.86116e+06 3724.07 -72.5392
+2.85387e+06 5257.71 -30.8216
+2.84686e+06 6777.67 15.8338
+2.8403e+06 8216.71 65.954
+2.83438e+06 9500.04 117.742
+2.82925e+06 10547.7 169.128
+2.82504e+06 11277.4 217.751
+2.82182e+06 11608 260.89
+2.8196e+06 11463.2 295.334
+2.8183e+06 10776.1 317.202
+2.81774e+06 9493.28 321.733
+2.81762e+06 7579.3 303.083
+2.8175e+06 5021.47 254.24
+2.8168e+06 1833.86 167.182
+2.8148e+06 -1938.75 33.4219
+2.81067e+06 -6217.37 -154.945
+2.80349e+06 -10886.1 -403.665
+2.79234e+06 -15790.1 -714.341
+2.77635e+06 -20735.2 -1082.32
+2.75481e+06 -25488.4 -1494.91
+2.72732e+06 -29781.6 -1930.52
+2.69393e+06 -33317.4 -2359.21
+2.65521e+06 -35778.6 -2744.91
+2.61247e+06 -36841.1 -3048.98
+2.56781e+06 -36187.8 -3233.71
+2.52427e+06 -33524 -3263.61
+2.48597e+06 -28586.7 -3100.97
+2.45834e+06 -21143.8 -2692.24
+2.44867e+06 -10971.6 -1939.77
+2.46695e+06 2209.87 -640.771
+2.52756e+06 18880.1 1684.91
+2.65219e+06 39999.7 6392.23
+2.87497e+06 67475.7 17838.2
+3.24999e+06 104697 50446.8
+3.85684e+06 156531 149638
+4.7829e+06 227334 444635
+6.02036e+06 315093 1.25057e+06
+7.18315e+06 402289 3.16035e+06
+7.15336e+06 451961 6.73504e+06
+4.7696e+06 425978 1.07878e+07
+2.31656e+06 328473 9.90431e+06
+980264 217369 6.50501e+06
+426915 132058 3.71555e+06
+186977 76972.6 2.08065e+06
+82582.7 43853.7 1.14385e+06
+41220.6 24625.3 615776
+20481.9 13648.7 336346
+9449.45 7463.14 183108
+4997.48 4048.06 97021
+2663 2185.37 52106.9
+1177.61 1170.06 28270.2
+598.332 624.376 14844.8
+324.774 335.042 7898.81
+104.704 179.78 4349.62
+15.3467 96.8016 2319.93
+-18.0701 53.5119 1256.44
+-53.9148 30.5867 739.598
+-71.2958 18.6046 448.378
+-80.1676 13.3761 315.661
+-93.307 12.489 297.716
+-102.456 15.2217 356.991
+-124.538 23.055 553.268
+-168.694 39.5089 946.922
+-211.696 70.5088 1644.36
+-332.3 129.055 3072.83
+-617.24 241.392 5780.25
+-976.299 452.24 10553.9
+-1766.47 847.26 19932.3
+-3736.97 1595.26 37978.2
+-6820.54 2992.37 70121
+-12850.6 5570.16 130956
+-27673.5 10327.3 247323
+-55355.2 19009.8 454659
+-111242 34589.6 834661
+-252783 62319.1 1.55497e+06
+-577777 111081 2.83887e+06
+-1.33126e+06 194211 5.10207e+06
+-3.1601e+06 326135 9.00548e+06
+-6.52457e+06 500814 1.38157e+07
+-9.79651e+06 654254 1.51387e+07
+-9.82929e+06 692016 9.48917e+06
+-8.22622e+06 609192 4.45268e+06
+-6.52865e+06 469888 1.75178e+06
+-5.26473e+06 334195 614662
+-4.44129e+06 228728 202338
+-3.9364e+06 154522 65949.7
+-3.64062e+06 102913 22019.2
+-3.48035e+06 65226.7 6874.37
+-3.40949e+06 35753.1 724.45
+-3.39897e+06 11458.3 -2279.77
+-3.4296e+06 -9049.59 -3960.69
+-3.48797e+06 -26327.2 -4988.55
+-3.564e+06 -40557 -5643.13
+-3.64965e+06 -51781.8 -6028.17
+-3.73824e+06 -60024.6 -6162.34
+-3.82424e+06 -65350.7 -6038.05
+-3.90328e+06 -67896.4 -5659.17
+-3.97213e+06 -67874.3 -5057.58
+-4.02884e+06 -65564.2 -4292.38
+-4.07259e+06 -61294.9 -3438.48
+-4.1036e+06 -55424.5 -2572.09
+-4.12293e+06 -48321.2 -1758.19
+-4.13219e+06 -40348.2 -1043.02
+-4.13335e+06 -31852.6 -451.803
+-4.12851e+06 -23156.7 9.12692
+-4.1197e+06 -14553.2 347.623
+-4.10878e+06 -6300.58 580.071
+-4.09736e+06 1379.08 726.249
+-4.08675e+06 8302.47 805.492
+-4.07795e+06 14326.1 834.448
+-4.07164e+06 19346.8 826.236
+-4.06825e+06 23301.3 790.579
+-4.06795e+06 26164.6 734.452
+-4.07072e+06 27947.4 662.85
+-4.07636e+06 28693 579.503
+-4.08456e+06 28472.7 487.446
+-4.0949e+06 27380.8 389.469
+-4.10694e+06 25529.8 288.427
+-4.12018e+06 23044.2 187.346
+0 20054.9 89.289
+2.55068e+06 1825.97 -204.931
+2.54572e+06 3001.9 -251.858
+2.54139e+06 4211.84 -296.106
+2.53784e+06 5410.42 -335.48
+2.53519e+06 6544.78 -367.712
+2.53352e+06 7555.98 -390.441
+2.5329e+06 8380.9 -401.289
+2.53331e+06 8954.41 -398.027
+2.53467e+06 9211.99 -378.827
+2.53682e+06 9092.63 -342.585
+2.53951e+06 8542.02 -289.316
+2.54238e+06 7515.95 -220.588
+2.54494e+06 5983.81 -139.942
+2.5466e+06 3932.1 -53.2171
+2.54667e+06 1367.92 31.3645
+2.54434e+06 -1677.68 103.466
+2.53874e+06 -5146.55 151.387
+2.52898e+06 -8950.58 163.316
+2.51422e+06 -12969.4 129.017
+2.49375e+06 -17048.7 41.7093
+2.46708e+06 -20999.9 -100.201
+2.43407e+06 -24601.5 -292.003
+2.39507e+06 -27601.8 -522.547
+2.35102e+06 -29724.7 -775.25
+2.30351e+06 -30676.8 -1029.86
+2.25496e+06 -30154.5 -1263.81
+2.20857e+06 -27850.2 -1451.25
+2.16851e+06 -23451.8 -1557.06
+2.14003e+06 -16630.9 -1523.08
+2.12983e+06 -7007.93 -1242.22
+2.14683e+06 5926.85 -504.821
+2.2035e+06 22983.2 1150.39
+2.31841e+06 45616.2 4947.69
+2.52047e+06 76548.1 14675.7
+2.85506e+06 120646 42616
+3.38788e+06 185495 126997
+4.18796e+06 279860 375844
+5.23861e+06 406680 1.05139e+06
+6.2008e+06 548317 2.64481e+06
+6.12979e+06 651892 5.61549e+06
+4.07431e+06 644077 8.96353e+06
+1.97952e+06 506282 8.19094e+06
+839228 335236 5.34671e+06
+365440 202197 3.03136e+06
+159976 116613 1.68467e+06
+70614.9 65556.5 919582
+34976.6 36322 491843
+17228 19918.1 267111
+7931.5 10790.1 144596
+4171.93 5797.65 76231
+2197.38 3106.3 40801.6
+968.822 1654.08 22050.7
+494.323 877.7 11525.8
+266.22 468.599 6119.38
+86.9848 250.494 3361.51
+16.323 134.196 1784.31
+-11.2546 73.8489 965.196
+-40.4633 42.1421 567.597
+-53.6579 25.5298 341.752
+-60.5381 18.2538 240.396
+-71.4366 17.012 227.701
+-78.5191 20.7517 272.16
+-95.4015 31.5996 422.581
+-131.399 54.3611 728.007
+-166.775 97.214 1265.71
+-262.707 178.834 2369.66
+-495.541 336.252 4478.83
+-795.037 632.39 8199.13
+-1445.5 1190.83 15529.6
+-3084.22 2254.73 29734.9
+-5701.87 4252.13 55127
+-10817.8 7973.58 103371
+-23389.8 14917.7 196326
+-47232.5 27702.2 363115
+-95700.7 50905.9 670856
+-217768 92843.8 1.25871e+06
+-498290 167434 2.3154e+06
+-1.1489e+06 295276 4.19423e+06
+-2.72339e+06 498628 7.45837e+06
+-5.62211e+06 764517 1.15087e+07
+-8.46735e+06 979365 1.2663e+07
+-8.55617e+06 987869 7.9601e+06
+-7.21388e+06 821816 3.74738e+06
+-5.7558e+06 600261 1.48073e+06
+-4.65063e+06 406838 522278
+-3.91799e+06 267184 172399
+-3.46e+06 174230 55541.5
+-3.1852e+06 112624 17546.7
+-3.03124e+06 69819.6 4537.91
+-2.95893e+06 38116.4 -437.852
+-2.94354e+06 13415 -2500.74
+-2.96867e+06 -6337.79 -3308.74
+-3.02264e+06 -22175.6 -3512.53
+-3.09643e+06 -34650.1 -3414.11
+-3.18252e+06 -44089.9 -3152.08
+-3.27444e+06 -50729.4 -2778.73
+-3.36656e+06 -54778 -2310.06
+-3.45421e+06 -56458 -1759.26
+-3.53373e+06 -56020.3 -1153.05
+-3.60258e+06 -53745.5 -533.564
+-3.65934e+06 -49935.1 48.9732
+-3.70354e+06 -44900.1 546.665
+-3.7356e+06 -38947.8 922.982
+-3.75652e+06 -32372.7 1158.04
+-3.76776e+06 -25449.3 1249.6
+-3.77098e+06 -18427.2 1210.64
+-3.76792e+06 -11528.9 1064.79
+-3.76026e+06 -4948.59 841.186
+-3.74954e+06 1149.07 569.79
+-3.73713e+06 6629.14 277.959
+-3.72418e+06 11386.7 -11.5889
+-3.71162e+06 15347 -281.513
+-3.70017e+06 18464.5 -519.689
+-3.69038e+06 20722.6 -718.548
+-3.68258e+06 22131.1 -874.23
+-3.67699e+06 22724.5 -985.754
+-3.67367e+06 22558.4 -1054.26
+-3.67259e+06 21706.5 -1082.33
+-3.67364e+06 20256.3 -1073.43
+-3.67663e+06 18304.6 -1031.58
+0 15953.6 -961.115
+2.00317e+06 1029.68 -227.017
+2.00029e+06 1625.47 -312.774
+1.99827e+06 2237.15 -398.245
+1.9972e+06 2842.01 -479.814
+1.99715e+06 3413.47 -553.511
+1.99814e+06 3921.87 -615.036
+2.00015e+06 4335.39 -659.881
+2.00309e+06 4621.12 -683.538
+2.0068e+06 4746.33 -681.81
+2.01103e+06 4679.81 -651.179
+2.01547e+06 4393.4 -589.267
+2.01969e+06 3863.56 -495.321
+2.02317e+06 3073.07 -370.716
+2.02532e+06 2012.74 -219.377
+2.02546e+06 683.151 -48.0237
+2.02284e+06 -903.458 133.861
+2.01671e+06 -2721.37 314.449
+2.0063e+06 -4729.52 480.392
+1.99095e+06 -6869.72 618.011
+1.97012e+06 -9065.11 714.684
+1.94354e+06 -11219.1 760.188
+1.91125e+06 -13214.6 747.668
+1.87375e+06 -14914.9 673.968
+1.83206e+06 -16163.5 539.274
+1.78779e+06 -16785.5 346.372
+1.74323e+06 -16586.4 100.479
+1.70135e+06 -15347.3 -188.845
+1.66585e+06 -12812.6 -501.718
+1.64129e+06 -8665.58 -795.746
+1.63335e+06 -2480.22 -984.17
+1.64934e+06 6371.07 -891.974
+1.69925e+06 18905.3 -137.357
+1.79762e+06 36917.6 2262.95
+1.96665e+06 63749.1 9250.25
+2.24038e+06 105611 30107
+2.66638e+06 173252 93179.1
+3.29037e+06 282288 277446
+4.08641e+06 447266 772409
+4.78317e+06 661415 1.92857e+06
+4.67452e+06 861499 4.06355e+06
+3.09392e+06 916719 6.43781e+06
+1.50677e+06 739147 5.83473e+06
+642414 486733 3.77435e+06
+279698 288635 2.12066e+06
+121933 163436 1.16823e+06
+53702.4 90100.1 632083
+26338.3 48993 335685
+12765.2 26491.3 181392
+5832.07 14183.8 97595.9
+3052.69 7535.75 51148.2
+1581.83 4006.68 27305.5
+691.959 2120.61 14700.9
+357.05 1116.27 7641.78
+189.56 593.072 4054.49
+61.5384 316.406 2222.05
+14.8656 168.446 1170.24
+-4.81737 92.2887 633.578
+-26.1651 52.6884 373.339
+-34.4586 31.7212 222.122
+-38.8932 22.5795 156.208
+-47.0731 21.0846 149.364
+-51.5481 25.6402 176.963
+-62.3382 39.2409 275.375
+-88.6829 67.8898 479.741
+-113.691 121.385 832.446
+-177.752 224.445 1559.05
+-344.948 424.663 2969.53
+-564.464 800.297 5448.42
+-1026.21 1514.83 10336.5
+-2221.78 2891.1 19909.8
+-4179.87 5484.6 37058.5
+-7982.96 10363.7 69726.2
+-17437.3 19605.2 133320
+-35818.9 36818.6 248228
+-73336 68576.5 461293
+-167447 127318 872529
+-385127 233760 1.62056e+06
+-888816 419021 2.9637e+06
+-2.09689e+06 718370 5.32084e+06
+-4.32123e+06 1.10625e+06 8.28572e+06
+-6.53703e+06 1.38107e+06 9.18965e+06
+-6.68012e+06 1.29334e+06 5.81771e+06
+-5.69207e+06 982638 2.75882e+06
+-4.57042e+06 654751 1.09806e+06
+-3.69577e+06 406802 389069
+-3.10135e+06 246660 127424
+-2.72064e+06 149723 39140.2
+-2.48611e+06 90928.8 10456.3
+-2.35031e+06 53579.4 1035.85
+-2.28289e+06 28344.1 -2071.48
+-2.26441e+06 10380.5 -2887.74
+-2.28178e+06 -2820.58 -2760.39
+-2.32553e+06 -12626.2 -2235.05
+-2.38813e+06 -19836.4 -1571.75
+-2.46321e+06 -24952.3 -893.621
+-2.54516e+06 -28309.8 -248.609
+-2.62899e+06 -30156.7 350.691
+-2.71046e+06 -30697.7 899.952
+-2.78614e+06 -30120.8 1388.9
+-2.85349e+06 -28608.7 1798.35
+-2.9109e+06 -26341.3 2104.49
+-2.9576e+06 -23492.9 2285.81
+-2.99355e+06 -20228.7 2329.36
+-3.01928e+06 -16700.7 2234.22
+-3.03572e+06 -13045.8 2011.92
+-3.04406e+06 -9385.13 1684.34
+-3.0456e+06 -5823.6 1280.08
+-3.04168e+06 -2450.96 830.398
+-3.03358e+06 657.695 365.654
+-3.02249e+06 3441.41 -87.3546
+-3.00947e+06 5853.02 -506.885
+-2.99546e+06 7858.98 -876.756
+-2.98126e+06 9439.18 -1186.13
+-2.96754e+06 10586.6 -1428.89
+-2.95482e+06 11306.8 -1602.9
+-2.94352e+06 11616.9 -1709.15
+-2.93393e+06 11544.4 -1751.13
+-2.92627e+06 11125.5 -1734.04
+-2.92064e+06 10403.5 -1664.31
+-2.91709e+06 9426.54 -1549.08
+0 8245.24 -1396.02
+1.27613e+06 396.493 -158.854
+1.27453e+06 534.482 -225.345
+1.27358e+06 674.377 -292.365
+1.27334e+06 811.17 -357.2
+1.27382e+06 938.963 -416.829
+1.27504e+06 1051.2 -467.934
+1.27693e+06 1140.91 -506.976
+1.27942e+06 1200.94 -530.338
+1.28236e+06 1224.17 -534.542
+1.28556e+06 1203.8 -516.514
+1.28877e+06 1133.53 -473.91
+1.29167e+06 1007.86 -405.476
+1.2939e+06 822.329 -311.428
+1.29504e+06 573.762 -193.788
+1.29462e+06 260.639 -56.617
+1.29214e+06 -116.518 93.9253
+1.28711e+06 -554.627 249.766
+1.27903e+06 -1047.42 401.366
+1.26748e+06 -1584.72 538.407
+1.25215e+06 -2151.67 650.608
+1.2329e+06 -2727.98 728.508
+1.20982e+06 -3287.22 764.016
+1.1833e+06 -3796.25 750.531
+1.15409e+06 -4214.43 682.6
+1.12333e+06 -4492.31 555.304
+1.09261e+06 -4568.74 363.971
+1.06398e+06 -4364.97 105.169
+1.04e+06 -3773.38 -219.777
+1.02386e+06 -2636.9 -597.385
+1.01958e+06 -711.018 -988.338
+1.03241e+06 2410.89 -1298.88
+1.06965e+06 7457.94 -1301.73
+1.14194e+06 15845.9 -375.579
+1.26537e+06 30504.6 3367.67
+1.46401e+06 57637.9 15823.3
+1.76997e+06 109949 54624.3
+2.21033e+06 210824 167754
+2.75656e+06 394445 467469
+3.21041e+06 686245 1.15506e+06
+3.10188e+06 1.0395e+06 2.39897e+06
+2.03766e+06 1.24677e+06 3.7427e+06
+989162 1.03661e+06 3.34194e+06
+420643 669306 2.13034e+06
+180763 383428 1.18252e+06
+77065.8 210810 644520
+33371.4 113103 344786
+16115.5 60048.6 181659
+7594.88 32029 97800.7
+3405.88 16949.9 52284.5
+1789.05 8886.81 27231.2
+904.725 4705.42 14535
+385.369 2482.36 7794.14
+207.117 1291.92 4021.4
+108.5 685.566 2140.62
+32.6796 367.023 1172.26
+10.4461 192.989 609.189
+-0.319523 105.573 331.336
+-13.7991 60.9149 196.846
+-17.494 36.0967 114.762
+-19.5173 25.6257 80.8179
+-24.9329 24.3049 78.7469
+-26.7931 29.0396 91.5002
+-31.8605 44.692 142.727
+-48.5415 78.4033 253.334
+-61.8172 138.691 435.783
+-93.1299 257.284 814.209
+-192.929 492.523 1571.22
+-320.982 924.654 2883.23
+-568.686 1754 5459.07
+-1272.7 3385.24 10600.6
+-2452.3 6440.09 19808.7
+-4675.21 12225 37308
+-10439.5 23435.7 71853
+-22069.1 44509.5 134722
+-45912.5 84026.3 251540
+-106809 159708 480280
+-251527 300926 903413
+-588648 554606 1.67204e+06
+-1.39401e+06 982455 3.04217e+06
+-2.88529e+06 1.54065e+06 4.81064e+06
+-4.39976e+06 1.86474e+06 5.41642e+06
+-4.5457e+06 1.55095e+06 3.48161e+06
+-3.88998e+06 1.01513e+06 1.6746e+06
+-3.10836e+06 575678 673353
+-2.48283e+06 302627 238205
+-2.05095e+06 155206 75403
+-1.77181e+06 80263 20388.1
+-1.59884e+06 42094 3085.47
+-1.49787e+06 21708.8 -1950.43
+-1.44652e+06 10060.1 -3062.6
+-1.43033e+06 2982 -2868.32
+-1.43961e+06 -1498.28 -2228.39
+-1.46749e+06 -4383.86 -1471.7
+-1.50867e+06 -6226.85 -741.778
+-1.55879e+06 -7349.18 -97.0835
+-1.61408e+06 -7945.81 449.13
+-1.67121e+06 -8140.26 903.847
+-1.72732e+06 -8017.46 1277.34
+-1.78008e+06 -7643 1574.22
+-1.82773e+06 -7073.04 1791.75
+-1.86909e+06 -6358.16 1922.67
+-1.90353e+06 -5543.98 1959.98
+-1.93088e+06 -4670.55 1901.05
+-1.95138e+06 -3771.76 1750.07
+-1.9655e+06 -2875.37 1518.42
+-1.97394e+06 -2003.53 1223.32
+-1.97746e+06 -1173.76 885.597
+-1.97687e+06 -400.016 527.094
+-1.97298e+06 306.436 168.433
+-1.96653e+06 936.407 -172.61
+-1.95825e+06 1482.49 -481.977
+-1.94878e+06 1939.05 -749.548
+-1.93868e+06 2302.35 -968.913
+-1.92846e+06 2570.75 -1136.88
+-1.91855e+06 2744.87 -1252.92
+-1.90932e+06 2827.62 -1318.61
+-1.90105e+06 2824.16 -1337.09
+-1.89397e+06 2741.69 -1312.65
+-1.88825e+06 2589.14 -1250.31
+-1.88398e+06 2376.69 -1155.53
+0 2115.18 -1034.07
+574255 194.763 -57.8457
+573289 184.767 -79.9768
+572574 172.398 -102.408
+572126 158.264 -124.273
+571953 143.134 -144.603
+572047 127.982 -162.309
+572385 113.992 -176.191
+572926 102.531 -184.978
+573608 95.0911 -187.408
+574351 93.1954 -182.327
+575052 98.2746 -168.823
+575587 111.512 -146.378
+575811 133.671 -115.039
+575560 164.918 -75.5717
+574654 204.674 -29.5662
+572900 251.524 20.5314
+570104 303.2 71.5066
+566078 356.674 119.588
+560659 408.33 160.768
+553724 454.188 191.175
+545216 490.124 207.414
+535169 511.996 206.742
+523730 515.625 187.003
+511182 496.609 146.255
+497960 450.068 82.194
+484673 370.535 -8.35566
+472114 252.316 -129.461
+461305 90.711 -285.082
+453577 -115.584 -476.587
+450735 -359.998 -697.906
+455364 -617.205 -924.208
+471407 -806.95 -1075.78
+505190 -663.487 -888.642
+567171 709.502 528.665
+674409 6208.44 6067.57
+852045 24426.8 24349.7
+1.12655e+06 77971.1 78188
+1.49222e+06 216928 218495
+1.82837e+06 523761 530042
+1.81458e+06 1.05029e+06 1.06858e+06
+1.16067e+06 1.57291e+06 1.60992e+06
+527530 1.35067e+06 1.39146e+06
+206728 828049 859355
+82655.8 444671 465087
+32289.1 235515 248286
+13065.2 122426 130093
+6374.27 63242.7 67672.7
+2852.3 33690 36272.8
+1193.93 17715.4 19202.5
+693.839 9107.78 9927.27
+338.53 4868.56 5323.24
+120.994 2582.17 2836.71
+81.7862 1307.16 1444.57
+44.3948 701.363 777.665
+7.54633 383.259 426.912
+5.05025 193.476 216.444
+2.21678 106.729 119.079
+-5.64673 64.4968 72.1276
+-5.79388 36.029 40.5666
+-5.83485 25.5931 28.7279
+-9.34001 25.9428 29.026
+-9.00448 28.829 32.4139
+-9.7036 44.8419 50.6421
+-19.4737 82.8447 92.8872
+-22.2687 139.728 156.426
+-27.1423 258.601 290.103
+-76.2199 514.146 573.688
+-122.259 943.802 1048.36
+-179.712 1776.53 1966.29
+-478.993 3522.69 3873.03
+-945.845 6654.25 7278.76
+-1636.41 12531 13657.4
+-3947.96 24508.5 26541.4
+-8764.54 46794.9 50301.4
+-18056.4 88493.5 94479.8
+-45161.7 172939 183198
+-116191 335974 352799
+-292458 642078 668476
+-752582 1.21117e+06 1.25063e+06
+-1.66491e+06 1.99514e+06 2.04462e+06
+-2.60775e+06 2.33733e+06 2.37987e+06
+-2.62167e+06 1.56492e+06 1.58429e+06
+-2.13156e+06 778938 784689
+-1.60367e+06 319994 321020
+-1.21095e+06 113036 112997
+-959091 34195.4 34029.6
+-808301 7899.19 7714.84
+-721803 212.06 -23.5987
+-675071 -1582.59 -1886.79
+-653298 -1668.09 -2036.35
+-647691 -1298.68 -1719.64
+-652904 -838.305 -1301.94
+-665531 -400.676 -899.266
+-683245 -25.8361 -551.679
+-704301 274.934 -268.061
+-727274 505.174 -41.6284
+-750934 675.216 140.221
+-774220 796.249 288.753
+-796255 876.83 410.13
+-816362 921.968 504.989
+-834079 934.043 570.315
+-849149 914.508 602.158
+-861494 865.491 598.049
+-871183 790.752 558.459
+-878385 695.89 487.162
+-883338 587.898 390.696
+-886315 474.376 277.304
+-887601 362.639 155.713
+-887482 258.976 34.0747
+-886230 168.174 -80.7759
+-884106 93.3357 -183.686
+-881352 35.955 -271.224
+-878192 -3.84346 -341.506
+-874830 -26.9874 -393.904
+-871452 -35.1344 -428.748
+-868219 -30.3838 -447.04
+-865272 -15.0359 -450.223
+-862726 8.59888 -439.981
+-860674 38.3345 -418.096
+-859181 72.175 -386.363
+0 108.309 -346.576
+40097.7 11.6743 -9.16089
+40052 11.1017 -9.18071
+40011.7 10.3922 -9.12407
+39977.1 9.58166 -8.99991
+39947.9 8.71467 -8.82348
+39923.6 7.84659 -8.61312
+39903.2 7.04418 -8.38813
+39885.6 6.38413 -8.16816
+39869.1 5.94964 -7.9741
+39852 5.82507 -7.83025
+39832 6.08873 -7.76797
+39806.7 6.80404 -7.83052
+39772.9 8.00945 -8.07844
+39726.8 9.70842 -8.59396
+39663.2 11.8609 -9.48229
+39576.1 14.3779 -10.8673
+39457.9 17.1214 -12.8795
+39300.1 19.9098 -15.6356
+39093.2 22.529 -19.2113
+38828.1 24.7468 -23.6113
+38497.1 26.3277 -28.7447
+38094.5 27.0428 -34.4132
+37618.7 26.6725 -40.3222
+37071.9 24.9998 -46.1163
+36460.5 21.8 -51.432
+35794.8 16.8411 -55.9453
+35088.2 9.91261 -59.3746
+34358.7 0.916273 -61.3865
+33633 -9.91265 -61.3279
+32956.6 -21.3293 -57.5681
+32416.5 -28.374 -45.5548
+32192.6 -10.5599 -10.9099
+32691.7 117.977 95.8322
+34913.2 704.1 445.96
+41381.2 3059.36 1600.59
+58149 11747.5 5231.19
+97681.6 41133.5 15710.3
+178004 130932 42554.1
+300627 371175 100811
+379821 893723 198165
+207382 1.61807e+06 290004
+59115.6 1.39562e+06 243204
+11834.2 819093 146031
+3751.88 426340 77734.9
+635.911 226068 40938.7
+2.08841 117100 21015.6
+281.562 60081.2 10830.2
+68.379 32403 5802.5
+-32.0546 17050.9 3019.31
+42.7814 8652.8 1545.6
+16.4586 4688.44 841.116
+-11.9234 2501.41 441.656
+5.60178 1236.54 218.58
+4.5731 672.492 121.114
+-3.22882 373.945 66.8808
+0.428897 181.792 32.147
+1.22787 101.484 18.1467
+-1.02339 63.8192 11.3957
+-0.214116 33.7045 5.95171
+0.277464 24.0148 4.28953
+-0.870273 25.8673 4.65945
+-0.16391 26.9231 4.79791
+0.599456 42.1792 7.46237
+-2.19674 81.881 14.6642
+-0.753681 132.487 23.6873
+3.41336 243.647 43.1135
+-7.10773 501.656 89.9529
+-6.65903 903.155 162.785
+15.2263 1682.15 297.44
+-25.6807 3413.74 604.277
+-54.4693 6399.6 1150.71
+46.3098 11904 2128.4
+-108.916 23595.3 4187.04
+-389.985 44965.2 8078.47
+-1.30851 83995.6 15189.1
+-1035.8 165321 29786.6
+-5677.68 322056 58640.9
+-17886.4 614565 112733
+-88897 1.19636e+06 214622
+-310050 2.05731e+06 361017
+-565841 2.39648e+06 432816
+-446106 1.32501e+06 296116
+-262306 548258 150085
+-143044 191515 62731.4
+-85343.3 59129.6 22759.6
+-61553.9 16433 7377.86
+-52808.6 4100.27 2168.25
+-50103.4 868.142 562.999
+-49765.4 101.792 95.4565
+-50372.2 -52.3896 -40.0559
+-51356.7 -65.5368 -80.8582
+-52479.1 -48.7015 -93.1827
+-53637.9 -27.2805 -96.1183
+-54793.3 -7.43802 -95.7861
+-55929.9 9.22699 -94.0964
+-57035.9 22.5222 -91.2572
+-58094.6 32.7841 -86.8752
+-59084.1 40.467 -80.6097
+-59982 45.9274 -72.4982
+-60770.2 49.3607 -63.0028
+-61438.9 50.845 -52.8711
+-61987.8 50.431 -42.9265
+-62424.8 48.2269 -33.8782
+-62763.4 44.4477 -26.2026
+-63019.9 39.4215 -20.1069
+-63210.4 33.5606 -15.56
+-63349 27.3126 -12.3643
+-63446.8 21.1084 -10.2388
+-63512 15.3186 -8.89275
+-63550.3 10.2262 -8.07593
+-63565.9 6.01634 -7.60375
+-63562.1 2.78103 -7.35959
+-63542.2 0.53316 -7.28304
+-63509.8 -0.775162 -7.35198
+-63468.7 -1.23405 -7.56454
+-63423.5 -0.959354 -7.92439
+-63378.8 -0.078992 -8.43006
+-63339 1.27777 -9.06814
+-63308.5 2.98766 -9.81046
+-63290.9 4.93671 -10.616
+0 7.01973 -11.4369
+2277.04 0.69827 -1.21979
+2274.03 0.665364 -1.17098
+2271.36 0.624532 -1.10984
+2269.03 0.577893 -1.03961
+2267.05 0.528024 -0.964621
+2265.37 0.478073 -0.890069
+2263.94 0.431807 -0.821781
+2262.68 0.393529 -0.766029
+2261.5 0.367879 -0.729417
+2260.28 0.359529 -0.718802
+2258.87 0.37276 -0.741277
+2257.11 0.410949 -0.8042
+2254.79 0.47599 -0.915227
+2251.66 0.567706 -1.08227
+2247.4 0.683364 -1.31322
+2241.61 0.817372 -1.61529
+2233.83 0.961286 -1.99391
+2223.51 1.10417 -2.45092
+2210.07 1.23328 -2.98256
+2192.93 1.33504 -3.57711
+2171.61 1.39593 -4.21314
+2145.76 1.40335 -4.85879
+2115.26 1.34579 -5.47269
+2080.23 1.21279 -6.00699
+2041.1 0.994484 -6.41165
+1998.53 0.68196 -6.63873
+1953.46 0.269644 -6.64327
+1907.14 -0.236418 -6.37598
+1861.47 -0.788582 -5.75603
+1819.93 -1.1618 -4.57991
+1790.74 -0.276585 -2.17221
+1798.53 7.13024 4.03098
+1929.73 46.0711 24.0409
+2500.74 229.891 95.5289
+4629.01 1044.29 350.488
+11936.1 4448.92 1210.58
+34695.4 17846.5 3877.74
+96273.5 67100.3 11300.2
+227712 233270 29179.9
+383621 723899 63603.2
+190025 1.79101e+06 104135
+35580.1 1.53566e+06 85445.6
+1576.08 846782 48580.8
+1540.09 424394 25407.1
+-383.013 227514 13490.7
+-485.948 117072 6766.09
+265.65 59299.1 3478.9
+9.29346 32679.2 1926.24
+-99.8869 17173.8 975.346
+49.2953 8510.09 487.552
+14.7929 4732.36 282.886
+-25.381 2546.42 144.729
+6.85136 1204.87 65.1033
+6.01189 674.017 40.2404
+-5.91317 386.018 23.0976
+0.701051 174.809 9.17634
+2.08664 100.227 5.66133
+-1.48817 67.581 4.06582
+-0.0145991 32.1424 1.62005
+0.845123 23.1135 1.2411
+-1.01032 27.7936 1.73958
+0.195149 25.6753 1.35182
+1.6293 40.6572 2.09652
+-2.81851 86.5688 5.24641
+-0.361636 130.168 7.28573
+7.2807 235.577 12.4537
+-8.85249 518.083 31.21
+-7.00054 902.158 53.652
+33.5742 1642.37 88.7779
+-24.9372 3478.8 199.135
+-60.2891 6446.81 386.197
+141.44 11710.1 670.584
+-35.131 23788.5 1356.51
+-359.884 45305.1 2682.7
+711.277 82846.2 4873.91
+421.482 165321 9592.65
+-2369.71 323851 19305.8
+-2529.28 611039 36745.7
+-53474.4 1.23612e+06 71193.3
+-281944 2.2608e+06 126400
+-566446 2.64583e+06 154731
+-334206 1.06961e+06 94571.2
+-139684 343197 43219.4
+-49488.2 97730.3 16575.9
+-16723.6 25549.8 5593.88
+-6475.45 6207.06 1703.45
+-3601.26 1404.76 476.781
+-2874.15 293.476 124.439
+-2728.98 53.6492 29.4933
+-2739.28 5.8557 3.99504
+-2793.48 -2.31064 -3.73132
+-2861.16 -2.78277 -6.81832
+-2932.96 -1.88308 -8.49342
+-3005.56 -0.840745 -9.581
+-3077.5 0.0935119 -10.3012
+-3147.72 0.871575 -10.6976
+-3214.96 1.49728 -10.7644
+-3277.79 1.98686 -10.5007
+-3334.81 2.35376 -9.93393
+-3384.94 2.60425 -9.12263
+-3427.62 2.73951 -8.14585
+-3462.84 2.7605 -7.0877
+-3491.09 2.6725 -6.02337
+-3513.19 2.48771 -5.01041
+-3530.11 2.22535 -4.08569
+-3542.81 1.90978 -3.26728
+-3552.15 1.56748 -2.55911
+-3558.81 1.22398 -1.95657
+-3563.3 0.901234 -1.45141
+-3565.99 0.616084 -1.03528
+-3567.17 0.379642 -0.701411
+-3567.08 0.197593 -0.444993
+-3565.95 0.0710194 -0.262555
+-3564.02 -0.00252631 -0.151024
+-3561.57 -0.0279488 -0.106825
+-3558.87 -0.0116562 -0.125214
+-3556.23 0.0392215 -0.199922
+-3553.92 0.117437 -0.323053
+-3552.2 0.216027 -0.48525
+-3551.28 0.328476 -0.676137
+0 0.448685 -0.885007
+132.11 0.0360568 -0.12066
+131.915 0.0344129 -0.11448
+131.74 0.0323703 -0.107051
+131.586 0.030037 -0.0987447
+131.454 0.0275422 -0.0900468
+131.341 0.0250417 -0.0815384
+131.243 0.0227203 -0.073875
+131.156 0.0207883 -0.0677668
+131.073 0.019471 -0.0639593
+130.987 0.0189941 -0.0632146
+130.889 0.0195615 -0.0662931
+130.767 0.0213301 -0.0739375
+130.609 0.0243804 -0.0868537
+130.397 0.028687 -0.105687
+130.112 0.0340941 -0.130982
+129.727 0.0403008 -0.163121
+129.213 0.0468627 -0.202226
+128.536 0.0532108 -0.24803
+127.659 0.0586899 -0.299723
+126.546 0.0626099 -0.355795
+125.164 0.0642991 -0.413914
+123.492 0.0631487 -0.470892
+121.521 0.0586355 -0.522766
+119.258 0.0503207 -0.565046
+116.73 0.0378417 -0.593059
+113.981 0.0209427 -0.60231
+111.072 -0.000342894 -0.588582
+108.091 -0.0249327 -0.54726
+105.189 -0.0470973 -0.470037
+102.735 -0.0372343 -0.330807
+102.06 0.162799 -0.022798
+108.977 1.39354 0.918831
+149.983 7.99846 4.48237
+342.768 41.6762 18.7671
+1182.96 207.439 74.7951
+4619.79 1000.08 283.557
+17685.5 4703.21 1013.37
+62794.7 21709 3382.09
+196301 98989.9 10381.9
+469279 449319 28287.6
+207271 2.05084e+06 61241
+21100.4 1.72109e+06 47348.3
+-4110.99 872246 23518.9
+2169.9 419046 11957.1
+-675.598 231228 6579.45
+-771.526 117546 3061.15
+477.666 58228.6 1563.28
+5.1604 33299.9 957.72
+-169.498 17418.1 444.534
+86.4783 8283.95 206.464
+23.1076 4825.62 147.036
+-43.4063 2627.84 69.2658
+12.3432 1152.02 21.8558
+9.92091 679.547 20.5462
+-10.164 407.657 12.9601
+1.38647 162.922 2.47264
+3.53068 98.6073 2.40975
+-2.57182 74.3138 2.50312
+0.0180714 29.4802 0.324151
+1.4714 21.6715 0.39562
+-1.72207 31.2741 1.19725
+0.3057 23.656 0.37354
+2.85921 38.057 0.529859
+-4.74457 94.9766 3.24961
+-0.844379 126.872 2.94524
+12.5805 221.842 3.59999
+-14.6346 547.592 17.7231
+-12.8556 904.39 26.7995
+57.516 1576.14 30.1261
+-39.6056 3596.63 97.0101
+-106.383 6553.13 199.736
+240.286 11404.2 282.877
+-43.9874 24171.3 624.393
+-645.82 46107.6 1336.56
+1145.45 81289.5 2187.46
+799.992 166162 4360.68
+-3233.89 328973 9439.52
+5970.35 602756 17284.6
+-32347.3 1.27374e+06 34513
+-307251 2.53232e+06 70109
+-691140 3.02365e+06 90917.3
+-287283 662200 41971.1
+-90802.6 145211 15333.3
+-25095.3 31521.6 4946.23
+-6386.73 6714.1 1458.12
+-1589.11 1392.41 398.418
+-456.906 279.026 101.791
+-209.246 53.5292 24.557
+-160.205 9.6298 5.61808
+-153.444 1.48199 1.09298
+-155.542 0.0732932 -0.0714848
+-159.594 -0.12112 -0.467818
+-164.123 -0.106854 -0.671659
+-168.763 -0.0611498 -0.80828
+-173.38 -0.0155736 -0.905071
+-177.89 0.0240536 -0.96724
+-182.205 0.0570107 -0.995197
+-186.233 0.0836655 -0.98974
+-189.887 0.104396 -0.953823
+-193.102 0.11931 -0.892684
+-195.845 0.128327 -0.813064
+-198.117 0.131406 -0.722096
+-199.95 0.12877 -0.626317
+-201.394 0.12102 -0.531025
+-202.509 0.109129 -0.440052
+-203.353 0.0943442 -0.355848
+-203.98 0.0780215 -0.279777
+-204.43 0.0614694 -0.212467
+-204.738 0.0458158 -0.154127
+-204.926 0.0319271 -0.104778
+-205.015 0.0203801 -0.0643635
+-205.021 0.0114765 -0.0327851
+-204.959 0.00528558 -0.00987414
+-204.847 0.00169829 0.00465249
+-204.701 0.000481713 0.0112314
+-204.54 0.00132666 0.0104737
+-204.383 0.00388672 0.00316573
+-204.247 0.00780787 -0.0097479
+-204.148 0.0127477 -0.027197
+-204.1 0.0183822 -0.0480353
+0 0.0244051 -0.0710996
+6.97943 0 -0.00902675
+6.96822 0 -0.00852847
+6.95814 0 -0.00793723
+6.94924 0 -0.00728226
+6.9415 0 -0.00660116
+6.93481 0 -0.00593883
+6.92898 0 -0.00534605
+6.92373 0 -0.00487789
+6.9187 0 -0.00459203
+6.91347 0 -0.00454699
+6.90749 0 -0.00480031
+6.90013 0 -0.00540664
+6.89061 0 -0.00641569
+6.87799 0 -0.00786976
+6.86107 0 -0.00980051
+6.83844 0 -0.0122243
+6.80838 0 -0.0151357
+6.76895 0 -0.0184995
+6.71805 0 -0.0222411
+6.65364 0 -0.0262375
+6.57388 0 -0.03031
+6.47748 0 -0.0342235
+6.36391 0 -0.0376926
+6.23356 0 -0.0403986
+6.0879 0 -0.0420131
+5.92945 0 -0.0422224
+5.76188 0 -0.0407343
+5.5909 0 -0.0372148
+5.42879 0 -0.0309402
+5.31863 0 -0.0191301
+5.46426 0 0.0109874
+6.91641 0 0.118939
+15.0826 0 0.574219
+57.0861 0 2.5486
+265.044 0 10.9326
+1265.67 0 45.3976
+5968.79 0 182.644
+27676.8 0 714.3
+126675 0 2727.78
+576065 0 10293.4
+250283 2.37746e+06 42849.5
+13986.7 1.95813e+06 31033.2
+-9989.93 896165 11636.9
+3975.75 405582 5702.77
+-458.634 236360 3730.53
+-1378.57 118617 1410.33
+731.98 56102.1 648.33
+106.179 33997.8 566.457
+-295.365 17845.9 218.777
+121.115 7864.12 63.6564
+61.8522 4906.86 95.2617
+-69.1489 2771.82 43.8158
+13.975 1066.78 -1.81748
+21.1288 673.729 11.8438
+-15.0776 445.269 11.268
+0.585542 145.937 -0.855491
+6.53518 92.9245 0.763515
+-3.93185 85.6779 2.64054
+-0.857333 26.3673 -0.0268183
+1.68665 19.3578 0.23914
+-3.20821 37.0435 1.54205
+0.469175 20.2262 0.137592
+3.09498 35.3882 0.197734
+-9.74347 108.917 3.40145
+-0.286932 117.613 0.589549
+17.1989 202.914 -0.650715
+-30.6392 597.595 15.467
+-13.2888 888.415 14.4579
+88.9027 1471.3 -1.34005
+-96.5865 3800.09 63.7144
+-144.434 6628.66 127.268
+410.264 10845.5 85.7869
+-206.791 24830.3 316.476
+-972.074 46969.8 790.953
+2025.03 78265.7 901.41
+401.647 168001 2042.98
+-5733.83 336037 5383.35
+14799.8 582741 8239.15
+-22272.6 1.31018e+06 17212.2
+-370738 2.88041e+06 46204.3
+-847008 3.49927e+06 63790
+-185099 0 15303.8
+-39962.2 0 4031.2
+-8458.41 0 1044.34
+-1746.76 0 262.671
+-353.573 0 63.7877
+-73.6466 0 14.8958
+-19.5587 0 3.34372
+-9.63792 0 0.723156
+-8.03403 0 0.144359
+-7.95254 0 0.0116308
+-8.15125 0 -0.026407
+-8.40518 0 -0.0434782
+-8.67041 0 -0.0545097
+-8.93538 0 -0.0624432
+-9.19421 0 -0.0677921
+-9.44163 0 -0.0706129
+-9.67233 0 -0.0709747
+-9.88149 0 -0.0690867
+-10.0656 0 -0.0653057
+-10.2229 0 -0.0600859
+-10.3537 0 -0.0539104
+-10.4595 0 -0.0472295
+-10.5433 0 -0.040421
+-10.6084 0 -0.0337738
+-10.658 0 -0.0274917
+-10.6951 0 -0.0217089
+-10.722 0 -0.0165086
+-10.7405 0 -0.0119418
+-10.7521 0 -0.0080389
+-10.7578 0 -0.0048174
+-10.7587 0 -0.00228343
+-10.7557 0 -0.000431236
+-10.7498 0 0.000758633
+-10.7421 0 0.00132049
+-10.7334 0 0.00130359
+-10.725 0 0.000771008
+-10.7178 0 -0.000202473
+-10.7126 0 -0.00153337
+-10.7103 0 -0.00313328
+0 0 -0.00491297
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+911735 1.49461e+06 135803
+454293 2.46857e+06 194355
+-22226.2 1.40383e+06 97987.7
+-13729.4 408898 32542.6
+25762.7 207229 23769.7
+-4260.47 156197 14882.2
+-4310.94 58715.6 4523.64
+4551.73 26377.8 3034.48
+-4.86503 23450.7 2596.39
+-1132.02 9300.96 687.114
+996.816 2883.25 338.585
+289.489 3665.11 558.842
+-285.225 1711.45 192.53
+177.86 230.094 8.93644
+116.443 559.153 89.5592
+-66.7948 355.889 56.8395
+18.2408 10.5184 9.25809
+17.7238 95.3509 26.3528
+-44.3721 104.293 29.5432
+-44.3636 42.3449 21.465
+-17.4978 38.4203 19.5044
+-12.3713 37.7641 23.4568
+-90.9621 129.997 37.8875
+-83.3073 110.152 31.8588
+21.2275 16.7383 8.9595
+-221.58 485.711 76.2493
+-256.03 703.454 112.117
+330.696 324.268 11.6027
+-511.17 2404.34 286.457
+-1317.47 4842.11 762.157
+1561.28 3890.98 445.027
+-346.632 13220.3 1001.51
+-6239.26 32170.6 3610.82
+6437.5 35958.2 4097.46
+4885.12 83407.8 6376.83
+-37231.5 220601 21137.5
+21752.1 291081 33392.7
+29186.2 591005 46441.9
+-669589 2.05065e+06 143058
+-1.33555e+06 3.61675e+06 285017
+0 2.20109e+06 199875
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+761900 0 123018
+1.09217e+06 0 306548
+386140 0 258823
+-73616.2 0 91316.4
+-9290.16 0 22768.5
+37629.4 0 25354
+-5410.1 0 15484.7
+-4470.14 0 3046.8
+7620.76 0 3293.22
+733.876 0 3285.79
+-1083.73 0 647.171
+1845.34 0 413.413
+646.971 0 851.381
+-294.386 0 306.542
+393.025 0 20.1964
+255.695 0 152.304
+-104.724 0 130.116
+-44.7947 0 70.3259
+-109.137 0 112.578
+-179.467 0 113.015
+-114.246 0 82.8045
+-216.035 0 133.761
+-263.541 0 135.223
+-192.191 0 87.7224
+-658.003 0 159.254
+-746.091 0 179.51
+135.646 0 16.6854
+-1218.87 0 446.076
+-2631.2 0 1153.75
+1266.15 0 539.578
+-1746.53 0 1012.24
+-10620.2 0 4620.65
+6622.09 0 4379.07
+5833.21 0 4328.63
+-54333.8 0 22094.6
+15681.6 0 35369.3
+101935 0 31817
+-570500 0 132519
+-1.5952e+06 0 376953
+-1.11542e+06 0 448140
+0 0 180944
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+261486 -462791 53366.2
+393531 -783646 138199
+141461 -433665 118787
+-29276 -112683 40550.8
+-1703.06 -61792.5 8997.07
+15996.2 -48990.8 11880.7
+-2487.12 -15443.6 7315.37
+-1504.71 -7188.22 859.544
+3704.57 -7694.05 1197.61
+391.409 -2407.55 1554.06
+-262.079 -585.508 320.851
+1265.69 -1384.7 218.647
+616.673 -545.268 497.662
+50.3247 49.7576 202.797
+334.911 -219.778 18.2378
+205.161 -167.734 103.703
+-38.7016 1.34548 90.1203
+-41.4271 -36.9024 47.7699
+-87.052 -49.8849 46.1232
+-141.429 -26.0989 16.5966
+-152.846 -24.4415 3.18724
+-212.327 -25.8648 20.4666
+-223.321 -67.1193 43.8695
+-214.357 -44.0758 54.883
+-536.622 9.57461 115.322
+-664.805 -218.118 117.723
+-312.323 -272.082 19.6029
+-1126.29 53.9829 293.188
+-1898.04 -793.737 683.202
+163.485 -1831.96 294.989
+-974.841 -752.62 496.114
+-5296.32 -3498.22 2186.28
+2202.63 -10611.6 1584.67
+2689.02 -9700.64 1309.45
+-23350.6 -22131.5 10588.5
+3360.28 -69666.3 16688.1
+40821.2 -86960.8 12597
+-210625 -163895 59368.4
+-578993 -638588 174564
+-385743 -1.15725e+06 203935
+0 -687160 79271.5
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+283896 -658890 48004.8
+139610 -515469 70464.3
+-11186.6 -218390 33510.2
+-2774.36 -98240.7 9688.79
+9597.1 -58717 8321.73
+-2178.9 -27526.6 5190.73
+-1308.19 -12884.6 1091.88
+1956.97 -8458.19 1038.66
+-137.385 -4129.77 1126.68
+-386.249 -1707.39 235.553
+557.694 -1270.51 79.1187
+162.753 -671.091 240.441
+-87.6144 -191.439 88.4893
+144.847 -171.191 -4.90137
+96.3852 -122.909 41.073
+-23.728 -23.4284 34.8901
+1.23015 -20.5617 7.11802
+0.642685 -24.9962 15.0003
+-30.7397 -4.03263 15.1535
+-32.8652 -4.39567 2.12021
+-26.6059 -11.9957 1.27724
+-27.7525 -3.47602 1.09537
+-66.2121 -5.97542 13.3751
+-62.4672 -31.878 14.9823
+-26.6505 -24.6007 7.76632
+-177.174 -34.2405 42.9188
+-220.826 -166.481 49.3323
+71.6848 -221.903 -5.42857
+-305.244 -267.157 134.469
+-777.764 -932.598 325.228
+525.143 -1712.08 92.7109
+26.3652 -2346.54 350.976
+-2744.85 -5794.66 1572.66
+2001.36 -11732.9 1385.59
+2680.76 -17991.2 1556.34
+-14029.3 -39278.7 7459.91
+4767.95 -84134.1 11768.6
+15460.5 -142058 13911.9
+-207432 -322141 49503
+-419000 -765146 104478
+0 -977703 71418.3
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.87827 -0.00508383 -0.00111165
+1.87575 -0.00494971 -0.00105716
+1.87356 -0.00475854 -0.000991556
+1.87172 -0.00452223 -0.000918011
+1.87021 -0.00425427 -0.000840819
+1.86901 -0.00397134 -0.000765202
+1.86806 -0.00369443 -0.000697059
+1.86727 -0.00344877 -0.000642766
+1.86655 -0.00326234 -0.000609031
+1.86577 -0.00316311 -0.000602792
+1.86477 -0.00317511 -0.000631173
+1.86338 -0.00331341 -0.000701477
+1.86137 -0.00357835 -0.000821188
+1.85844 -0.00394996 -0.00099791
+1.85427 -0.00438359 -0.00123909
+1.8484 -0.00480846 -0.00155142
+1.84034 -0.00513013 -0.00193971
+1.82948 -0.005238 -0.00240527
+1.8152 -0.0050173 -0.00294387
+1.79687 -0.00436398 -0.00354348
+1.77394 -0.0031994 -0.00418252
+1.74603 -0.00148069 -0.00482903
+1.71298 0.000797043 -0.00544161
+1.67495 0.00360762 -0.00597223
+1.6324 0.00690581 -0.00637055
+1.58613 0.0106309 -0.00658767
+1.5373 0.0146662 -0.00657382
+1.48773 0.0186136 -0.00624969
+1.4415 0.0206439 -0.00535424
+1.41374 0.0113042 -0.00268165
+1.47682 -0.0597321 0.00763977
+1.99864 -0.456304 0.0534222
+4.82954 -2.51666 0.259987
+19.0059 -12.7887 1.16098
+87.3094 -62.2728 4.90193
+406.803 -293.738 19.6412
+1865.3 -1350.66 74.8054
+8397.68 -6089.47 271.392
+37269.9 -27084.8 940.368
+164125 -119709 3146.85
+67321 -530916 11679.9
+1679.01 -426231 7437.8
+-2466.16 -204716 2108.29
+1365.9 -97534.4 1164.39
+-378.725 -54070.7 828.73
+-370.587 -26308.5 183.994
+293.715 -13009.8 109.199
+-13.0936 -7743.28 158.333
+-94.8869 -3863.29 34.0935
+63.0557 -1795.09 -6.58647
+13.6724 -1150.02 24.1407
+-28.4326 -594.659 9.50703
+10.9772 -227.305 -5.32659
+9.36703 -161.131 3.33533
+-6.20476 -100.092 4.00118
+0.654124 -30.2487 -0.852881
+2.41774 -21.6475 0.118961
+-1.98656 -18.9396 1.13829
+-0.578405 -5.12805 -0.169665
+0.601105 -4.34178 -0.116061
+-1.76072 -8.55242 0.461925
+-0.334161 -4.55852 -0.247076
+0.961712 -6.9791 -0.131624
+-4.57032 -24.3321 1.35683
+-1.22394 -27.2905 -0.0727296
+6.937 -42.0148 -1.03353
+-14.1523 -135.451 5.50164
+-12.9986 -212.446 3.84027
+37.2685 -311.998 -6.83121
+-25.2791 -821.425 14.805
+-80.9773 -1561.26 31.9018
+136.359 -2467.82 -10.2569
+-3.28215 -5391.59 53.2252
+-404.315 -10763.5 222.64
+562.7 -18202.7 145.912
+469.7 -37416.6 273.799
+-2012.01 -77483.4 1214.37
+3730.17 -141252 1690.66
+-2930.96 -301432 3164.6
+-100564 -632540 11231.5
+-243097 -788971 17591.3
+-54815.3 -177701 4723.08
+-12195 -39989.2 1400.09
+-2656.71 -8892.99 399.038
+-563.951 -1938.08 107.991
+-116.913 -410.893 27.6425
+-24.5444 -84.1438 6.67094
+-6.20313 -16.5119 1.51435
+-2.74317 -3.05895 0.322144
+-2.1582 -0.502616 0.0620058
+-2.111 -0.0428585 0.00728447
+-2.16416 0.0314489 -0.00469552
+-2.23727 0.0376524 -0.00802036
+-2.3147 0.0323708 -0.00944619
+-2.39249 0.0256044 -0.0102623
+-2.46869 0.0191098 -0.0106994
+-2.54161 0.0130975 -0.0107886
+-2.60956 0.00751234 -0.01054
+-2.67101 0.00234954 -0.00998576
+-2.72485 -0.00227741 -0.00918581
+-2.77054 -0.00617515 -0.00821855
+-2.80814 -0.00914851 -0.00716637
+-2.83819 -0.011073 -0.00610262
+-2.86159 -0.0119365 -0.00508355
+-2.87938 -0.0118436 -0.00414568
+-2.89257 -0.0109911 -0.0033077
+-2.90208 -0.00962673 -0.00257504
+-2.90863 -0.00800564 -0.00194504
+-2.91281 -0.00635472 -0.00141156
+-2.91503 -0.00485003 -0.000968072
+-2.91563 -0.00360812 -0.000609243
+-2.91489 -0.00268888 -0.000331138
+-2.91309 -0.00210558 -0.000130671
+-2.91049 -0.00183767 -4.74748e-06
+-2.90738 -0.00184349 5.05185e-05
+-2.90404 -0.00207093 4.03322e-05
+-2.90078 -0.00246562 -2.85433e-05
+-2.89785 -0.00297669 -0.000147806
+-2.89552 -0.00355969 -0.000307885
+-2.89398 -0.00417657 -0.00049846
+0 -0.00479391 -0.000709068
+30.0754 -0.0730796 -0.0123338
+30.0399 -0.0720176 -0.0118722
+30.0095 -0.0701536 -0.01129
+29.9845 -0.0676222 -0.0106162
+29.9647 -0.0645771 -0.00989195
+29.9496 -0.0612196 -0.00916792
+29.9383 -0.0578179 -0.00850111
+29.9298 -0.0547067 -0.00795287
+29.9224 -0.0522654 -0.00758806
+29.9144 -0.0508792 -0.00747526
+29.9035 -0.0508801 -0.0076879
+29.887 -0.0524724 -0.00830646
+29.8616 -0.0556467 -0.00942082
+29.8232 -0.0600974 -0.0111318
+29.7666 -0.0651595 -0.0135494
+29.6852 -0.0697904 -0.0167863
+29.5714 -0.0726141 -0.0209432
+29.4163 -0.0720403 -0.0260864
+29.2102 -0.0664526 -0.0322184
+28.9437 -0.0544358 -0.0392462
+28.6086 -0.0349951 -0.0469536
+28.1989 -0.00769893 -0.0549883
+27.7125 0.0273111 -0.0628725
+27.1516 0.0694628 -0.0700392
+26.5234 0.117985 -0.0758899
+25.8395 0.172041 -0.079846
+25.1165 0.23038 -0.0813367
+24.378 0.289438 -0.0795481
+23.6656 0.335156 -0.0721852
+23.0918 0.303832 -0.0495658
+23.0889 -0.112963 0.0333712
+25.5794 -2.41164 0.383715
+39.2301 -13.5907 1.90565
+101.613 -64.6947 8.2905
+366.182 -285.557 33.5098
+1416.11 -1186.33 126.221
+5278.34 -4640.13 440.612
+18152.8 -16993.7 1411.81
+54844.1 -57473.5 4079.27
+126490 -173289 10222.1
+52936.6 -415975 19853.5
+4067.92 -344405 14390.7
+-915.377 -183004 6790.58
+656.738 -90647.2 3497.9
+-347.862 -48362.8 1876.16
+-176.905 -24215.5 797.178
+172.912 -12232.5 436.173
+-31.0525 -6868.81 287.209
+-47.6057 -3515.42 113.222
+39.3759 -1723.57 47.9565
+0.434916 -1007.27 43.2267
+-16.687 -526.599 18.3277
+7.42593 -233.125 3.57623
+3.29812 -142.832 6.37585
+-4.35676 -83.6584 4.17976
+0.792347 -33.1111 0.186185
+1.29906 -20.3879 0.643441
+-1.07727 -14.9496 0.889973
+0.0733811 -5.93561 -0.0160296
+0.606796 -4.53229 0.0502176
+-0.719663 -6.44338 0.414286
+0.0327334 -4.95225 0.0135299
+1.207 -7.6586 0.0333836
+-1.82149 -19.2161 1.16083
+-0.665692 -26.2378 0.736497
+5.54466 -44.9921 0.366934
+-5.14157 -112.828 5.78533
+-8.65071 -190.33 8.19185
+22.8997 -318.381 4.95719
+-4.14572 -723.625 26.2475
+-51.2999 -1373.17 58.7927
+70.6457 -2372.07 65.1806
+31.7033 -4889.13 160.875
+-241.673 -9556.56 402.996
+274.447 -17140.3 608.89
+457.304 -34378.8 1140.08
+-1001.21 -69299.9 2714.58
+1354.41 -131417 5094.06
+-6352.61 -269259 10046.5
+-79092.1 -511200 21508
+-187610 -619272 29736.2
+-80767.2 -257858 15284.8
+-26393.5 -85093.6 6063.95
+-7525.15 -24890.2 2075.11
+-1964.94 -6676.28 636.104
+-492.233 -1662.76 177.583
+-134.136 -385.983 45.533
+-53.622 -83.2395 10.7704
+-37.1512 -16.2491 2.33742
+-34.5732 -2.41675 0.429189
+-34.9138 0.212794 0.0134518
+-35.8851 0.616774 -0.0819198
+-37.0074 0.598078 -0.109748
+-38.1673 0.505595 -0.121627
+-39.3264 0.407443 -0.127788
+-40.4605 0.316034 -0.130067
+-41.5454 0.231381 -0.128604
+-42.5557 0.151502 -0.123418
+-43.4682 0.0758596 -0.114863
+-44.2656 0.00613519 -0.103687
+-44.9394 -0.054492 -0.0908941
+-45.4905 -0.102655 -0.0775402
+-45.9273 -0.136006 -0.0645441
+-46.2638 -0.153927 -0.0525741
+-46.516 -0.157647 -0.0420145
+-46.7 -0.149873 -0.0329978
+-46.8297 -0.134172 -0.0254744
+-46.9166 -0.114284 -0.0192932
+-46.9693 -0.0935623 -0.0142715
+-46.994 -0.0746111 -0.0102419
+-46.9958 -0.0591426 -0.0070761
+-46.9786 -0.0480153 -0.00468694
+-46.9461 -0.041386 -0.00301889
+-46.9024 -0.0389087 -0.00203302
+-46.8514 -0.0399309 -0.00169294
+-46.7974 -0.0436597 -0.00195416
+-46.7446 -0.0492887 -0.00275779
+-46.6972 -0.0560875 -0.00402801
+-46.6589 -0.0634472 -0.00567336
+-46.6326 -0.0708794 -0.00759232
+0 -0.0779815 -0.00968078
+396.526 -0.748146 -0.0997438
+396.143 -0.760491 -0.0989985
+395.825 -0.765433 -0.0973589
+395.577 -0.763387 -0.0949294
+395.394 -0.754845 -0.0919031
+395.272 -0.740741 -0.0885294
+395.2 -0.722706 -0.0850858
+395.164 -0.703089 -0.0818682
+395.147 -0.684772 -0.0791974
+395.125 -0.670773 -0.0774419
+395.074 -0.663655 -0.0770561
+394.961 -0.664751 -0.0786319
+394.746 -0.673273 -0.0829566
+394.38 -0.685459 -0.0910595
+393.8 -0.693976 -0.104223
+392.927 -0.687823 -0.123931
+391.665 -0.652968 -0.151722
+389.905 -0.573819 -0.188951
+387.527 -0.435448 -0.23646
+384.416 -0.226207 -0.294209
+380.469 0.0598765 -0.360966
+375.615 0.421694 -0.434138
+369.828 0.851334 -0.509864
+363.138 1.33626 -0.583401
+355.631 1.86268 -0.649722
+347.451 2.41792 -0.704066
+338.792 2.98834 -0.741909
+329.916 3.54616 -0.757215
+321.223 4.00683 -0.734983
+313.493 4.07326 -0.619408
+308.807 2.57158 -0.170216
+314.205 -5.45076 1.67194
+356.008 -40.7615 9.40905
+531.95 -186.057 40.9495
+1181.93 -746.988 161.943
+3371.7 -2756.9 591.369
+9984.52 -9357.53 1982.32
+27150.7 -28879.1 6019.45
+61904.5 -79218 16170.6
+99775.2 -184172 36615.1
+47716.8 -321666 61884.5
+8390.5 -269312 49678.7
+526.102 -153874 27314.8
+424.649 -79156.5 14017.9
+-191.78 -41610.3 7354.65
+-105.477 -21152.4 3616.68
+92.3891 -10821.9 1870.37
+-15.8778 -5885.97 1051.67
+-26.3965 -3048.56 518.997
+21.6564 -1539.68 255.609
+0.620482 -857.62 154.275
+-9.26026 -450.188 78.1979
+3.9884 -214.982 33.7118
+1.8897 -122.696 22.2034
+-2.39858 -69.2247 12.9522
+0.400924 -31.4074 4.67308
+0.729105 -18.1307 3.07594
+-0.581987 -11.9508 2.37816
+0.0370916 -5.76397 0.830366
+0.332197 -4.22932 0.642961
+-0.39088 -4.99322 1.01247
+0.0318333 -4.70587 0.682668
+0.658687 -7.28194 1.09296
+-1.01053 -15.3742 3.07361
+-0.311628 -23.5795 3.92855
+3.04998 -42.2872 6.38721
+-2.93231 -93.2045 17.5686
+-4.62033 -164.522 29.5328
+12.7102 -292.945 46.0113
+-2.81904 -616.948 107.987
+-28.2311 -1172.28 210.721
+39.1309 -2120.35 351.504
+15.5654 -4232.55 723.496
+-129.948 -8195.69 1467.34
+160.027 -15179.1 2622.71
+244.217 -30011.3 5140.93
+-668.586 -59651.7 10570.4
+-828.69 -114887 20375.8
+-12701.9 -226455 40262.7
+-71303.9 -400135 73937.5
+-148308 -479998 92460.7
+-91376.5 -274908 54689.9
+-39572.9 -117710 24031.9
+-14278.3 -42457.4 8848.48
+-4711.6 -13511 2861.84
+-1628.24 -3874.11 831.434
+-747.193 -1009.77 219.524
+-521.486 -237.35 52.843
+-473.247 -46.2772 11.2823
+-470.702 -2.59921 1.63241
+-480.095 6.40097 -0.52638
+-492.876 7.60136 -1.02258
+-506.694 7.07206 -1.14869
+-520.788 6.19987 -1.18165
+-534.82 5.31898 -1.18059
+-548.535 4.48905 -1.15551
+-561.651 3.68781 -1.10497
+-573.857 2.8838 -1.02733
+-584.859 2.06914 -0.92489
+-594.438 1.26657 -0.80445
+-602.482 0.519695 -0.675716
+-609 -0.123569 -0.548938
+-614.1 -0.626206 -0.43279
+-617.96 -0.97126 -0.333074
+-620.787 -1.16385 -0.252375
+-622.787 -1.22742 -0.190468
+-624.138 -1.19659 -0.145179
+-624.986 -1.10936 -0.113357
+-625.439 -1.00046 -0.0917113
+-625.575 -0.896972 -0.077392
+-625.45 -0.816564 -0.0682588
+-625.113 -0.767791 -0.0629093
+-624.604 -0.751755 -0.0605459
+-623.969 -0.764344 -0.0607771
+-623.254 -0.798438 -0.0634228
+-622.509 -0.845787 -0.0683566
+-621.784 -0.898428 -0.0753977
+-621.129 -0.949666 -0.084246
+-620.589 -0.994583 -0.0944641
+-620.2 -1.02997 -0.105511
+0 -1.05384 -0.116813
+4501.25 -5.50625 -0.644679
+4498.2 -6.19422 -0.696408
+4495.91 -6.85544 -0.744064
+4494.4 -7.4693 -0.7859
+4493.66 -8.01179 -0.820441
+4493.61 -8.45921 -0.846201
+4494.15 -8.7909 -0.861517
+4495.14 -8.99031 -0.864608
+4496.37 -9.04469 -0.853829
+4497.65 -8.94336 -0.828122
+4498.68 -8.67449 -0.787654
+4499.14 -8.22072 -0.734612
+4498.61 -7.55395 -0.674074
+4496.58 -6.63077 -0.614779
+4492.36 -5.39013 -0.569534
+4485.12 -3.75539 -0.554968
+4473.82 -1.64251 -0.590374
+4457.28 1.02498 -0.695516
+4434.22 4.29523 -0.887574
+4403.4 8.16498 -1.17766
+4363.72 12.5597 -1.56774
+4314.46 17.3237 -2.04895
+4255.36 22.227 -2.60228
+4186.79 26.9898 -3.20197
+4109.72 31.3193 -3.82085
+4025.69 34.9391 -4.43518
+3936.75 37.5806 -5.02449
+3845.58 38.8931 -5.5592
+3756.01 38.2008 -5.95665
+3674.55 33.8854 -5.92275
+3614.39 21.4641 -4.28809
+3607.56 -13.3999 3.87889
+3743.96 -120.586 39.2504
+4293.33 -473.671 184.209
+6045.4 -1642.17 743.702
+11092.8 -5323.83 2750.73
+24055.7 -15963.9 9353.67
+52057.1 -43252.5 28926
+96680.2 -102563 79533.6
+127164 -201894 185404
+66747.6 -296037 324791
+16869.9 -249057 272827
+2732.27 -150188 156483
+802.503 -80333.8 80841.9
+-60.6779 -42505.3 42696.9
+-79.1078 -21921.6 21803.2
+84.6512 -11345.4 11190
+-4.70848 -6099.05 6104.94
+-21.4587 -3185.18 3172.68
+18.4664 -1636.67 1602.67
+2.12657 -892.99 892.826
+-7.47161 -470.315 471.381
+3.21817 -233.445 226.353
+1.78713 -129.303 129.153
+-1.96627 -71.5342 72.9436
+0.286887 -34.5882 33.0746
+0.637511 -19.4971 19.1625
+-0.498051 -12.2067 12.7873
+-0.00992341 -6.41905 6.11866
+0.248866 -4.62542 4.42685
+-0.354239 -4.99786 5.26722
+0.0209203 -5.18841 4.9053
+0.500832 -8.06058 7.76111
+-0.934543 -15.7326 16.4581
+-0.248883 -25.511 24.9332
+2.42013 -46.4773 44.6346
+-2.77304 -96.3586 98.3001
+-3.73192 -174.07 173.292
+10.135 -318.088 308.717
+-4.57753 -644.086 646.128
+-23.9614 -1222.62 1220.44
+31.5328 -2254.88 2207.43
+0.544885 -4417.26 4402.74
+-119.353 -8488.77 8491.44
+116.409 -15900.6 15674.9
+44.9662 -31034.4 30881.1
+-1249.53 -60788.4 61072
+-4160.51 -116278 117035
+-25405.5 -220261 229673
+-99837.7 -368912 404226
+-189420 -440909 483310
+-143126 -301089 276002
+-76226.2 -152401 117877
+-34734.6 -63641.8 42424.2
+-15878.1 -23083.1 13475.2
+-8738.12 -7493.69 3857.5
+-6361.86 -2221.2 1003.42
+-5670.15 -600.513 234.447
+-5534.83 -130.239 44.0992
+-5583.83 5.96421 0.37606
+-5697.35 47.8666 -8.80109
+-5834.47 61.7056 -10.166
+-5979.86 66.1231 -9.77687
+-6127.39 66.9654 -9.02106
+-6274.1 66.1478 -8.21984
+-6417.52 64.0686 -7.41123
+-6554.73 60.5686 -6.5545
+-6682.31 55.4699 -5.61199
+-6797 48.8482 -4.58502
+-6896.3 41.0832 -3.51856
+-6978.93 32.7607 -2.48581
+-7044.93 24.5154 -1.56525
+-7095.5 16.8874 -0.820233
+-7132.62 10.234 -0.286526
+-7158.63 4.70404 0.0307307
+-7175.83 0.265417 0.152649
+-7186.28 -3.23647 0.117831
+-7191.58 -6.01211 -0.0275202
+-7192.97 -8.26987 -0.238182
+-7191.29 -10.1769 -0.475765
+-7187.16 -11.8414 -0.711532
+-7181.05 -13.3123 -0.926646
+-7173.38 -14.5916 -1.11076
+-7164.58 -15.6511 -1.25987
+-7155.12 -16.4492 -1.3741
+-7145.49 -16.945 -1.4559
+-7136.2 -17.1084 -1.50857
+-7127.76 -16.9271 -1.53531
+-7120.62 -16.4094 -1.53863
+-7115.16 -15.5818 -1.52038
+0 -14.4836 -1.48215
+36887.9 -45.3533 -3.65569
+36880.5 -73.8656 -4.92802
+36880.6 -103.156 -6.20681
+36888.4 -132.121 -7.44043
+36903.9 -159.477 -8.57253
+36926.4 -183.804 -9.54108
+36955.3 -203.576 -10.2789
+36989.3 -217.224 -10.7163
+37026.8 -223.187 -10.7849
+37066 -219.991 -10.4245
+37104.4 -206.32 -9.58969
+37139.1 -181.1 -8.25958
+37166.6 -143.586 -6.44684
+37182 -93.4537 -4.20656
+37179.6 -30.8904 -1.64224
+37152 43.3122 1.09321
+37090.4 127.665 3.80331
+36984.8 219.891 6.26158
+36824.8 316.853 8.23199
+36600.2 414.489 9.49302
+36302.5 507.797 9.86006
+35926.5 590.852 9.19919
+35471.4 656.899 7.42615
+34941.7 698.501 4.48792
+34347.1 707.721 0.331992
+33702.5 676.291 -5.12043
+33027 595.613 -11.9698
+32344.7 456.405 -20.2631
+31688.5 247.609 -29.7676
+31109.8 -46.0772 -39.2743
+30700.5 -449.545 -43.8731
+30643.7 -1009.27 -23.1694
+31348.3 -1822.3 108.468
+33814.5 -3108.95 697.751
+40571.3 -5391.07 3059.65
+57700 -9889.51 11786.7
+97779.5 -19254 41398.6
+179156 -38393 132258
+303833 -73746.6 376548
+385456 -126072 911140
+211125 -170668 1.65888e+06
+60258.3 -147614 1.44088e+06
+11987.5 -95455.8 852893
+3804.17 -55000.1 447937
+633.127 -30674.6 239626
+-22.7007 -16424.3 125251
+284.188 -8741.43 64761.9
+70.9403 -4766.73 35153.7
+-38.26 -2518.07 18644.6
+41.0339 -1308.35 9519.66
+16.7042 -713.569 5168.15
+-12.9554 -376.353 2772.41
+5.66054 -189.197 1381.71
+4.97618 -104.686 753.732
+-3.59452 -57.3862 421.335
+0.240887 -27.9943 206.014
+1.34231 -15.8625 114.343
+-1.07814 -9.82905 72.1704
+-0.27566 -5.17449 38.5196
+0.277482 -3.71386 27.2632
+-0.918413 -3.97857 29.2026
+-0.116084 -4.17805 30.6012
+0.607851 -6.51549 48.373
+-2.37471 -12.6927 92.8298
+-0.527422 -20.795 149.862
+3.76551 -37.665 276.998
+-7.67663 -77.3779 566.15
+-6.61966 -141.036 1014.27
+16.3691 -257.787 1883
+-26.1799 -515.207 3786.7
+-51.6811 -976.385 7058.03
+53.8973 -1799.86 13096.8
+-113.497 -3481.78 25773.3
+-391.107 -6603.69 48694
+32.2826 -12163.4 90319.2
+-1035.89 -22995.3 176228
+-5734.3 -43176.4 339885
+-18046.7 -77913.4 642424
+-90220.9 -136261 1.23881e+06
+-314196 -212081 2.11177e+06
+-571623 -246353 2.44274e+06
+-448972 -182628 1.34318e+06
+-263005 -106814 553136
+-142699 -55360.9 192433
+-84422 -27574.6 59210.8
+-60191.9 -14104.2 16410
+-51059.8 -7721.51 4083.04
+-48017.7 -4522.52 856.272
+-47399.9 -2723.13 88.3459
+-47788.6 -1571.86 -69.8137
+-48616.6 -756.833 -87.0324
+-49639.9 -143.131 -73.7828
+-50749.6 331.97 -55.4009
+-51896.1 699.806 -37.9825
+-53052.3 977.198 -22.9515
+-54193.9 1174.33 -10.2926
+-55292.4 1298.81 0.462706
+-56315.7 1357.79 9.75359
+-57233.3 1358.87 17.7597
+-58021.9 1310.31 24.3732
+-58669 1220.8 29.3058
+-59173.7 1099.13 32.2445
+-59545.5 953.77 32.9895
+-59801 792.671 31.5349
+-59960.2 623.021 28.0846
+-60043.5 451.194 23.017
+-60069 282.722 16.8176
+-60051.6 122.318 10.0061
+-60002.8 -26.0959 3.07158
+-59930.8 -159.357 -3.57156
+-59841.7 -275.033 -9.60585
+-59740 -371.403 -14.8136
+-59629.6 -447.432 -19.0672
+-59514.1 -502.744 -22.3129
+-59397.2 -537.581 -24.5534
+-59282.6 -552.752 -25.8328
+-59174.1 -549.565 -26.2223
+-59075.4 -529.747 -25.8102
+-58989.9 -495.363 -24.6931
+-58920.2 -448.713 -22.972
+0 -392.24 -20.7509
+79505.9 -164.473 -9.51068
+79493.9 -273.98 -13.1861
+79501.8 -386.59 -16.8666
+79530.9 -498.023 -20.3986
+79581.6 -603.335 -23.614
+79653.2 -697.039 -26.3307
+79744.3 -773.271 -28.3563
+79852.2 -825.993 -29.4965
+79973.3 -849.24 -29.5665
+80102.6 -837.397 -28.4071
+80233.8 -785.515 -25.9028
+80358.8 -689.637 -22.0026
+80467.7 -547.149 -16.7417
+80547.9 -357.129 -10.2604
+80583.9 -120.696 -2.81702
+80557.2 158.655 5.21011
+80446.6 474.74 13.3356
+80228.4 818.412 20.9963
+79878.7 1177.36 27.5959
+79375.3 1535.97 32.5581
+78700.8 1875.4 35.3784
+77846.3 2173.77 35.6615
+76813.9 2406.69 33.133
+75619.3 2548.04 27.6207
+74292.3 2571.09 19.0179
+72875.4 2449.82 7.26281
+71423.5 2160.29 -7.6054
+70003.7 1681.68 -25.226
+68701.8 996.444 -44.3498
+67639.7 88.9683 -61.2441
+67013.9 -1058.78 -63.8452
+67187.2 -2477.2 -7.05716
+68928.2 -4230.69 291.717
+74081.4 -6464.27 1569.81
+87353.2 -9498.78 6659.25
+120436 -14004.6 25656.2
+198870 -21252.3 91319.3
+363632 -33279.1 297593
+629688 -52304.6 867561
+825331 -77581 2.15484e+06
+461052 -97202.3 4.03351e+06
+132993 -83733.2 3.60612e+06
+25429.8 -55768.9 2.19822e+06
+8380.7 -33572.1 1.17814e+06
+1894.7 -19343.2 639675
+11.81 -10552 340796
+632.33 -5752.05 178049
+254.947 -3210.44 96621.8
+-64.4124 -1706.24 51792
+76.544 -891.247 26673.1
+53.0748 -492.721 14337.6
+-19.4584 -259.741 7750.06
+7.30513 -130.572 3936.01
+11.6483 -73.7109 2105.3
+-5.1822 -40.119 1171.82
+-0.489804 -19.0766 595.579
+2.34102 -11.165 323.808
+-1.80653 -7.02534 198.19
+-0.886923 -3.51673 112.184
+0.0748029 -2.5633 78.7056
+-1.82405 -2.8693 79.5365
+-0.446815 -2.88351 88.8284
+0.236596 -4.45774 139.986
+-4.73913 -9.08744 254.705
+-0.543952 -14.6371 425.43
+4.13899 -25.7894 797.65
+-17.4795 -54.2545 1569.72
+-8.57093 -99.3005 2832.59
+21.9069 -178.186 5348.99
+-77.4667 -356.416 10541.2
+-93.4582 -674.808 19523.1
+84.943 -1227.29 36557.1
+-379.625 -2362.72 71198.5
+-848.103 -4449.77 133037
+-20.1646 -8000.35 246550
+-2922.94 -14759.9 474947
+-12298.1 -27165.7 896777
+-37496.3 -47351.2 1.66668e+06
+-195356 -79069.3 3.14284e+06
+-673689 -119249 5.19614e+06
+-1.20278e+06 -139060 5.83823e+06
+-915811 -111752 3.12376e+06
+-526631 -75640 1.25425e+06
+-287148 -48127.3 426637
+-174687 -30724.1 128893
+-128362 -20353.6 35326.5
+-110497 -14019 8820.93
+-104060 -9804.6 1931.06
+-102312 -6691.65 269.693
+-102657 -4194.21 -95.4123
+-104034 -2096.22 -151.844
+-105964 -306.926 -134.303
+-108213 1208.61 -99.2623
+-110655 2461.71 -62.1083
+-113203 3455.65 -27.6456
+-115776 4193.92 2.87844
+-118288 4684.57 29.5267
+-120647 4941.96 52.5718
+-122773 4986.73 71.9694
+-124602 4844.58 87.2645
+-126101 4544.62 97.7746
+-127263 4117.49 102.876
+-128104 3593.89 102.252
+-128660 3003.28 96.0386
+-128977 2373.14 84.8328
+-129101 1728.43 69.611
+-129075 1091.28 51.5831
+-128939 480.911 32.0335
+-128722 -86.4751 12.1827
+-128449 -597.668 -6.91096
+-128140 -1042.44 -24.4048
+-127807 -1413.52 -39.6852
+-127465 -1706.45 -52.3537
+-127123 -1919.52 -62.1986
+-126791 -2053.54 -69.162
+-126477 -2111.58 -73.3078
+-126190 -2098.74 -74.7922
+-125937 -2021.76 -73.8379
+-125723 -1888.68 -70.7124
+-125553 -1708.46 -65.7132
+0 -1490.64 -59.1592
+122800 -316.636 -13.72
+122762 -529.55 -18.5144
+122748 -748.553 -23.2572
+122764 -965.291 -27.7409
+122809 -1170.13 -31.7418
+122884 -1352.4 -35.0215
+122989 -1500.7 -37.3324
+123121 -1603.35 -38.4302
+123277 -1648.84 -38.091
+123451 -1626.42 -36.1331
+123635 -1526.68 -32.4432
+123820 -1342.28 -27.0049
+123990 -1068.54 -19.9277
+124129 -704.196 -11.4712
+124215 -251.983 -2.05905
+124219 280.719 7.72438
+124110 881.37 17.161
+123851 1531.85 25.4515
+123406 2208.17 31.7903
+122741 2880.43 35.4545
+121828 3513.07 35.8903
+120651 4065.49 32.7766
+119212 4493.34 26.0493
+117533 4750.38 15.8794
+115657 4791.18 2.62394
+113646 4574.55 -13.1961
+111581 4067.51 -30.7971
+109560 3249.34 -48.7718
+107710 2115.04 -64.1866
+106208 676.967 -70.0879
+105340 -1036.91 -46.4092
+105638 -2990.87 78.78
+108235 -5160.02 595.51
+115901 -7565.94 2685.87
+135895 -10334.5 10948.8
+186831 -13768.9 42007.2
+310849 -18403.8 150580
+578886 -24964.5 496057
+1.02519e+06 -34070.9 1.46403e+06
+1.37208e+06 -45138.6 3.68422e+06
+774124 -53112.3 6.99167e+06
+223106 -45596.3 6.34761e+06
+40660.2 -31091.1 3.93211e+06
+13418.4 -19309.8 2.13364e+06
+3324.41 -11318.6 1.1703e+06
+-105.349 -6246.18 631207
+974.19 -3509.09 332363
+489.059 -2009 180676
+-96.3286 -1064.71 97539.8
+113.012 -560.1 50607.7
+102.01 -318.6 27142.4
+-26.3084 -167.968 14737.5
+6.85522 -84.0477 7562.1
+20.82 -48.9521 4015.76
+-6.04809 -26.4961 2235.29
+-2.13833 -12.177 1159.43
+3.33086 -7.47156 624.415
+-2.38683 -4.77247 376.804
+-1.80871 -2.22428 220.252
+-0.456629 -1.67601 153.969
+-2.83276 -1.99396 150.865
+-0.904157 -1.88975 174.04
+-0.804806 -2.85058 273.669
+-7.52187 -6.19828 483.569
+0.0324694 -9.81569 820.07
+2.96943 -16.6063 1546.93
+-30.6543 -36.0257 2984.92
+-8.34144 -66.0677 5392.87
+26.4682 -115.342 10238.8
+-144.708 -231.998 19956.5
+-135.711 -438.035 36812.7
+119.588 -775.467 69019
+-709.432 -1486.2 133272
+-1283.43 -2804.81 247157
+123.691 -4915.53 456801
+-5030.03 -8815.2 871738
+-19380.7 -16056.1 1.6238e+06
+-59113.2 -27533.3 2.98361e+06
+-322952 -44634.3 5.55025e+06
+-1.11514e+06 -65867.5 9.02453e+06
+-1.9723e+06 -77239.5 9.98499e+06
+-1.47158e+06 -66240.9 5.27148e+06
+-828269 -50233.6 2.0901e+06
+-444130 -36816.6 702612
+-268659 -27199.4 210074
+-198199 -20590 57200.5
+-171585 -15861.2 14367.6
+-162121 -12118.4 3306.29
+-159562 -8827.91 612.87
+-160054 -5750.93 -22.2407
+-162046 -2829.44 -163.031
+-164840 -94.796 -177.637
+-168100 2388.21 -155.088
+-171641 4551.52 -120.702
+-175335 6339.22 -83.3093
+-179058 7714.98 -46.0676
+-182678 8664.61 -9.97024
+-186055 9195.25 24.4285
+-189068 9332.35 56.1909
+-191625 9115.43 83.852
+-193675 8593.56 105.7
+-195213 7821.18 120.21
+-196271 6854.6 126.424
+-196907 5749.31 124.157
+-197194 4558.13 114.015
+-197208 3329.91 97.2574
+-197021 2108.67 75.5678
+-196694 933.099 50.8039
+-196275 -163.792 24.7772
+-195805 -1154.88 -0.906932
+-195310 -2019 -24.9399
+-194813 -2740.97 -46.3395
+-194330 -3311.37 -64.4365
+-193873 -3726.35 -78.8376
+-193453 -3987.2 -89.3802
+-193078 -4099.83 -96.0868
+-192754 -4074.16 -99.1227
+-192488 -3923.43 -98.7585
+-192282 -3663.43 -95.3371
+-192139 -3311.81 -89.2509
+0 -2887.24 -80.9284
+157950 -399.438 -12.673
+157852 -668.767 -15.358
+157772 -945.816 -17.8552
+157711 -1219.98 -20.0325
+157674 -1479.05 -21.7583
+157663 -1709.52 -22.8991
+157682 -1896.99 -23.3239
+157730 -2026.74 -22.9129
+157808 -2084.31 -21.5729
+157915 -2056.31 -19.2558
+158046 -1931.12 -15.9827
+158195 -1699.81 -11.869
+158350 -1356.98 -7.15063
+158497 -901.569 -2.20235
+158611 -337.688 2.45608
+158665 324.706 6.17694
+158620 1069.22 8.23037
+158434 1872.62 7.88222
+158063 2704.62 4.49899
+157459 3527.96 -2.3332
+156586 4298.98 -12.6981
+155417 4968.6 -26.2749
+153946 5484.13 -42.3248
+152189 5791.98 -59.75
+150186 5841.4 -77.2029
+148000 5589.29 -93.1782
+145717 5005.84 -105.964
+143442 4080.47 -113.268
+141318 2827.03 -111.158
+139557 1286.6 -90.9686
+138517 -474.039 -27.6826
+138877 -2371.51 170.683
+142107 -4325.81 883.689
+151827 -6293.73 3684.01
+177655 -8311.01 14764.1
+244687 -10522.5 56719.1
+410749 -13161.9 204540
+775239 -16463.5 678397
+1.39098e+06 -20556.5 2.01556e+06
+1.88116e+06 -25247 5.10542e+06
+1.06634e+06 -28677.3 9.75391e+06
+306787 -24829.7 8.92972e+06
+54500.2 -17273.9 5.58518e+06
+18036.9 -10875.5 3.05939e+06
+4555.26 -6403.21 1.69324e+06
+-346.816 -3591.53 921829
+1257.46 -2086.38 488816
+716.524 -1205.94 266849
+-131.576 -629.939 145010
+143.257 -339.198 75735.2
+150.192 -201.685 40677.8
+-33.7057 -105.362 22172
+5.39358 -51.5859 11454.2
+30.6385 -31.1062 6076.29
+-6.6308 -17.069 3389.35
+-4.29973 -7.73562 1777.54
+4.28449 -4.88677 954.027
+-2.81003 -3.09524 573.014
+-2.8889 -1.3644 340.971
+-1.18024 -1.08536 238.097
+-3.81359 -1.3528 229.693
+-1.35559 -1.23226 269.045
+-2.20466 -1.7729 422.352
+-10.4415 -4.05027 734.096
+1.00764 -6.45143 1250.9
+1.31508 -10.6342 2363.38
+-44.7094 -23.3285 4512.16
+-7.37309 -42.1761 8137.91
+31.6202 -71.5809 15446.8
+-209.762 -147.014 29891.3
+-171.149 -278.933 54929.2
+156.475 -473.935 102742
+-1022.87 -892.152 196911
+-1636.85 -1706.78 362631
+425.416 -2963.24 666842
+-6828.35 -5160.77 1.26231e+06
+-25804 -9281.14 2.3276e+06
+-78501.3 -15888.8 4.23528e+06
+-439339 -25535.8 7.8001e+06
+-1.52001e+06 -37177.4 1.25607e+07
+-2.67697e+06 -43472.4 1.37862e+07
+-1.97749e+06 -38622.6 7.233e+06
+-1.09924e+06 -31453.8 2.85034e+06
+-582278 -25094.7 952049
+-349806 -20115.8 282723
+-258117 -16380.1 76500
+-224186 -13448 19197.4
+-212441 -10840 4523.36
+-209459 -8228.45 956.464
+-210250 -5482.73 84.6826
+-212808 -2623.2 -148.831
+-216239 246.22 -218.806
+-220118 2991 -236.748
+-224227 5479.87 -233.119
+-228426 7604.02 -218.043
+-232581 9286.49 -194.971
+-236546 10484.8 -165.083
+-240170 11188.9 -129.431
+-243317 11416.6 -89.9047
+-245893 11206.7 -49.3096
+-247853 10613.3 -10.9013
+-249207 9699.49 22.256
+-250010 8532.81 47.8402
+-250348 7181.39 64.5847
+-250324 5711.36 72.3277
+-250040 4184.82 71.8509
+-249590 2658.51 64.5939
+-249051 1182.85 52.3333
+-248483 -198.775 36.8972
+-247929 -1450.41 19.9562
+-247419 -2543.86 2.90198
+-246970 -3458.7 -13.196
+-246591 -4182.15 -27.5797
+-246287 -4708.74 -39.7616
+-246060 -5039.77 -49.475
+-245906 -5182.59 -56.6248
+-245823 -5149.8 -61.2433
+-245807 -4958.27 -63.4524
+-245853 -4628.22 -63.4321
+-245952 -4182.16 -61.4011
+0 -3643.95 -57.6099
+181415 -336.132 -7.07774
+181242 -562.965 -5.11089
+181064 -796.296 -2.77607
+180887 -1027.17 -0.122044
+180717 -1245.29 2.77277
+180558 -1439.27 5.80812
+180419 -1596.99 8.86544
+180304 -1706.09 11.8068
+180220 -1754.48 14.4701
+180174 -1730.98 16.6609
+180168 -1626 18.1406
+180203 -1432.27 18.6127
+180277 -1145.53 17.7097
+180380 -765.287 14.9867
+180495 -295.387 9.92922
+180596 255.386 1.98582
+180647 872.892 -9.36894
+180603 1537.36 -24.5375
+180413 2223.33 -43.6756
+180026 2899.81 -66.5588
+179392 3530.85 -92.4669
+178473 4076.53 -120.122
+177251 4494.6 -147.715
+175728 4742.86 -173.03
+173932 4782.49 -193.66
+171913 4582.15 -207.215
+169743 4122.91 -211.402
+167523 3403.26 -203.726
+165395 2443.35 -180.401
+163588 1287 -132.93
+162508 -0.337727 -34.8744
+162945 -1340.02 216.674
+166609 -2657.13 1059.26
+177726 -3905.98 4334.39
+207598 -5097.45 17361.3
+286006 -6308.98 67015.3
+482223 -7650.28 242906
+916418 -9190.73 809107
+1.6548e+06 -10937.8 2.41235e+06
+2.24839e+06 -12881 6.12909e+06
+1.27695e+06 -14416.2 1.1745e+07
+367015 -12585.8 1.0802e+07
+64758.1 -8815.89 6.7988e+06
+21526.1 -5555.32 3.75346e+06
+5324.04 -3302.68 2.09375e+06
+-595.227 -1913.08 1.14809e+06
+1498.11 -1143.09 612740
+894.655 -653.569 336397
+-173.292 -336.414 183883
+163.833 -189.441 96534.1
+190.105 -117.594 51996.6
+-39.8675 -59.7267 28454.6
+3.96886 -27.8868 14777.3
+38.7517 -17.3647 7850.29
+-7.36809 -9.90883 4388.58
+-6.2398 -4.53854 2315.6
+5.19095 -2.83479 1242.96
+-3.16909 -1.73962 746.602
+-3.91648 -0.75685 448.518
+-1.8771 -0.650837 313.188
+-4.66575 -0.828182 299.98
+-1.6931 -0.743136 353.529
+-3.47935 -0.994322 554.276
+-13.1553 -2.29844 954.846
+1.85019 -3.76669 1626.67
+0.191316 -6.26244 3070.12
+-56.4763 -13.58 5827.17
+-6.73215 -23.6893 10485.7
+36.0316 -39.2413 19857.2
+-262.881 -84.1333 38214.2
+-195.756 -163.238 69938.2
+202.47 -266.475 130351
+-1264.9 -483.028 248381
+-1939.67 -936.976 454564
+731.736 -1644.12 830670
+-7959.04 -2800.08 1.5613e+06
+-30649.1 -4907.03 2.85719e+06
+-92810 -8348.95 5.1567e+06
+-522162 -13468.2 9.42277e+06
+-1.8086e+06 -19617.5 1.50846e+07
+-3.18038e+06 -22916 1.649e+07
+-2.3394e+06 -20655.4 8.63023e+06
+-1.29276e+06 -17431.9 3.39202e+06
+-680762 -14517.5 1.1292e+06
+-407933 -12121.6 333840
+-301551 -10250.7 89826.1
+-262760 -8720.32 22431
+-249634 -7258.76 5312.44
+-246516 -5655.64 1182.64
+-247609 -3826.22 161.637
+-250575 -1797.36 -139.453
+-254364 335.245 -261.512
+-258482 2447.34 -326.796
+-262694 4414.92 -365.96
+-266863 6132.03 -387.41
+-270866 7520.22 -392.775
+-274569 8531.63 -381.936
+-277831 9147.63 -355.446
+-280532 9374.79 -315.519
+-282591 9239.46 -265.964
+-283987 8782.16 -211.485
+-284755 8052.57 -156.792
+-284980 7105.23 -105.855
+-284776 5996.3 -61.4534
+-284273 4781.04 -25.054
+-283594 3512 3.0403
+-282849 2237.64 23.3915
+-282124 1001.38 37.0744
+-281483 -159.148 45.36
+-280965 -1212.65 49.4818
+-280590 -2134.41 50.501
+-280365 -2906.47 49.2575
+-280286 -3517.49 46.3797
+-280340 -3962.47 42.3247
+-280512 -4242.29 37.4252
+-280784 -4363.07 31.9322
+-281137 -4335.45 26.0488
+-281552 -4173.74 19.9561
+-282011 -3895.1 13.8305
+-282495 -3518.64 7.8485
+0 -3064.62 2.17588
+194087 -131.291 -0.904185
+193850 -219.911 5.64395
+193588 -311.067 12.7118
+193308 -401.256 20.0687
+193017 -486.45 27.4271
+192722 -562.199 34.456
+192435 -623.773 40.7924
+192166 -666.347 46.0492
+191927 -685.214 49.8214
+191730 -676.032 51.6899
+191586 -635.094 51.223
+191504 -559.609 47.9756
+191488 -447.985 41.4886
+191536 -300.1 31.2955
+191636 -117.545 16.9421
+191769 96.1647 -1.97043
+191899 335.435 -25.711
+191983 592.501 -54.3127
+191968 857.421 -87.4425
+191797 1118.17 -124.266
+191412 1360.87 -163.341
+190768 1570.22 -202.575
+189834 1730.16 -239.296
+188600 1824.78 -270.448
+187080 1839.68 -292.889
+185311 1763.6 -303.721
+183352 1590.26 -300.471
+181293 1320.36 -280.875
+179270 963.119 -241.794
+177518 536.948 -175.628
+176468 68.4418 -56.2725
+176970 -411.12 223.425
+180865 -872.437 1129.55
+192697 -1297.76 4644.92
+224681 -1690.38 18698
+309180 -2076.54 72509.9
+521833 -2490.18 263744
+994349 -2945.56 880651
+1.80018e+06 -3435.87 2.63001e+06
+2.4502e+06 -3970.85 6.69015e+06
+1.39247e+06 -4411.95 1.28348e+07
+400137 -3858.53 1.18321e+07
+70698.4 -2701.99 7.4758e+06
+23510.4 -1706.12 4.15e+06
+5614.06 -1032.51 2.32761e+06
+-762.03 -617.646 1.28224e+06
+1681.32 -374.77 687670
+999.37 -211.304 379409
+-214.529 -108.168 208256
+175.222 -63.2066 109678
+218.008 -40.0593 59231.2
+-43.0905 -19.7819 32525.9
+2.88255 -8.83968 16955.5
+43.6201 -5.61339 9021.87
+-8.10408 -3.31853 5050.53
+-7.41286 -1.54018 2673.34
+5.90492 -0.937148 1437.21
+-3.47009 -0.558461 864.591
+-4.67095 -0.246491 521.637
+-2.36646 -0.226096 364.243
+-5.25747 -0.288843 347.891
+-1.86979 -0.258361 410.79
+-4.292 -0.325168 643.681
+-15.1533 -0.743294 1104.34
+2.21897 -1.2518 1878.17
+-0.252459 -2.12792 3537.88
+-63.7144 -4.55338 6694.31
+-6.32829 -7.69503 12027.4
+37.9755 -12.5665 22728.1
+-299.595 -28.0025 43568.6
+-209.603 -55.6304 79456.1
+250.663 -89.0244 147639
+-1406.29 -156.226 280325
+-2174.9 -304.64 510780
+931.458 -541.866 928463
+-8409 -912.632 1.7361e+06
+-33419.1 -1558.28 3.16204e+06
+-101135 -2613.71 5.67601e+06
+-567687 -4218.61 1.03177e+07
+-1.96683e+06 -6171.03 1.64627e+07
+-3.45743e+06 -7228.21 1.79648e+07
+-2.53953e+06 -6561.04 9.39561e+06
+-1.40017e+06 -5619.24 3.68958e+06
+-735849 -4760.46 1.22638e+06
+-441066 -4039.79 361642
+-326914 -3470.61 96928.7
+-285694 -2999.98 24089.5
+-271975 -2535.76 5696.02
+-268892 -2001.87 1290.7
+-270222 -1366.13 200.524
+-273437 -638.257 -136.309
+-277393 144.811 -292.23
+-281557 933.926 -392.838
+-285684 1679.1 -467.067
+-289643 2336.87 -520.786
+-293327 2874.31 -553.255
+-296617 3270.56 -562.568
+-299390 3516.42 -548.272
+-301544 3612.83 -512.361
+-303019 3568.77 -459.084
+-303816 3399.09 -394.056
+-303996 3122.46 -323.172
+-303666 2759.73 -251.694
+-302965 2332.58 -183.684
+-302039 1862.52 -121.812
+-301029 1370.14 -67.4606
+-300054 874.516 -21.0214
+-299204 392.821 17.7581
+-298541 -60.0228 49.4508
+-298100 -471.558 74.7136
+-297891 -831.935 94.1521
+-297908 -1133.97 108.272
+-298134 -1373.11 117.492
+-298540 -1547.33 122.178
+-299097 -1656.91 122.688
+-299772 -1704.23 119.403
+-300530 -1693.46 112.746
+-301342 -1630.21 103.195
+-302175 -1521.22 91.2818
+-303003 -1373.99 77.5782
+0 -1196.46 62.6703
+198007 131.291 1.71737
+197746 219.911 10.1478
+197451 311.067 19.1568
+197131 401.256 28.4385
+196791 486.45 37.6188
+196442 562.199 46.2719
+196095 623.773 53.9345
+195763 666.347 60.1177
+195461 685.214 64.3181
+195202 676.032 66.0268
+195002 635.094 64.7361
+194871 559.609 59.9442
+194817 447.985 51.1609
+194840 300.1 37.9181
+194933 117.545 19.7948
+195076 -96.1647 -3.5361
+195237 -335.435 -32.2298
+195372 -592.501 -66.1616
+195426 -857.421 -104.795
+195342 -1118.17 -147.049
+195060 -1360.87 -191.196
+194530 -1570.22 -234.829
+193717 -1730.16 -274.955
+192607 -1824.78 -308.21
+191206 -1839.68 -331.204
+189548 -1763.6 -340.884
+187686 -1590.26 -334.762
+185704 -1320.36 -310.731
+183736 -963.119 -265.98
+182018 -536.948 -193.355
+180988 -68.4418 -67.0852
+181514 411.12 220.905
+185475 872.437 1144.69
+197510 1297.76 4728.75
+230107 1690.38 19085.2
+316419 2076.54 74149.8
+534047 2490.18 270048
+1.01825e+06 2945.56 902416
+1.84465e+06 3435.87 2.6963e+06
+2.51176e+06 3970.85 6.86083e+06
+1.42764e+06 4411.95 1.31659e+07
+410252 3858.53 1.2146e+07
+72577.8 2701.99 7.68431e+06
+24110.3 1706.12 4.2743e+06
+5657.47 1032.51 2.40197e+06
+-818.868 617.646 1.32532e+06
+1752.55 374.77 712084
+1032.14 211.304 393660
+-232.737 108.168 216403
+178.911 63.2066 114088
+228.454 40.0593 61679
+-43.8901 19.7819 33918.5
+2.43947 8.83968 17706.5
+45.1544 5.61339 9427.56
+-8.41318 3.31853 5279.96
+-7.76987 1.54018 2797.64
+6.18527 0.937148 1505.3
+-3.59658 0.558461 906.26
+-4.9524 0.246491 547.403
+-2.54144 0.226096 382.206
+-5.46977 0.288843 364.781
+-1.91734 0.258361 430.903
+-4.55841 0.325168 675.133
+-15.9004 0.743294 1157.02
+2.2743 1.2518 1966.1
+-0.342955 2.12792 3699.97
+-66.0481 4.55338 6994.05
+-6.13882 7.69503 12559.4
+38.2676 12.5665 23714.1
+-313.253 28.0025 45392.4
+-214.123 55.6304 82661.7
+272.502 89.0244 153410
+-1450.47 156.226 290940
+-2267.44 304.64 529286
+997.57 541.866 960093
+-8489.22 912.632 1.79179e+06
+-34262.5 1558.28 3.25822e+06
+-103787 2613.71 5.83768e+06
+-581669 4218.61 1.05922e+07
+-2.0153e+06 6171.03 1.68826e+07
+-3.54257e+06 7228.21 1.84143e+07
+-2.6013e+06 6561.04 9.62981e+06
+-1.43346e+06 5619.24 3.78089e+06
+-753062 4760.46 1.25619e+06
+-451599 4039.79 370122
+-335142 3470.61 99063.3
+-293239 2999.98 24573.4
+-279381 2535.76 5803.07
+-276341 2001.87 1320.54
+-277764 1366.13 212.019
+-281065 638.257 -135.365
+-285071 -144.811 -302.727
+-289235 -933.926 -416.181
+-293309 -1679.1 -503.753
+-297166 -2336.87 -570.183
+-300704 -2874.31 -613.68
+-303811 -3270.56 -631.527
+-306372 -3516.42 -622.771
+-308292 -3612.83 -589.227
+-309522 -3568.77 -535.237
+-310072 -3399.09 -466.709
+-310011 -3122.46 -389.958
+-309457 -2759.73 -310.73
+-308557 -2332.58 -233.584
+-307465 -1862.52 -161.67
+-306327 -1370.14 -96.8214
+-305265 -874.516 -39.8338
+-304371 -392.821 9.18649
+-303706 60.0228 50.5023
+-303301 471.558 84.5107
+-303163 831.935 111.61
+-303282 1133.97 132.151
+-303634 1373.11 146.454
+-304185 1547.33 154.838
+-304899 1656.91 157.666
+-305736 1704.23 155.368
+-306658 1693.46 148.457
+-307628 1630.21 137.533
+-308611 1521.22 123.274
+-309575 1373.99 106.418
+0 1196.46 87.7227
+194087 336.132 -0.904185
+193850 562.965 5.64396
+193588 796.296 12.7118
+193308 1027.17 20.0687
+193017 1245.29 27.4271
+192722 1439.27 34.456
+192435 1596.99 40.7924
+192166 1706.09 46.0492
+191927 1754.48 49.8214
+191730 1730.98 51.6899
+191586 1626 51.223
+191504 1432.27 47.9756
+191488 1145.53 41.4886
+191536 765.287 31.2955
+191636 295.386 16.9421
+191769 -255.386 -1.97043
+191899 -872.892 -25.711
+191983 -1537.36 -54.3127
+191968 -2223.33 -87.4425
+191797 -2899.81 -124.266
+191412 -3530.85 -163.341
+190768 -4076.53 -202.575
+189834 -4494.6 -239.296
+188600 -4742.86 -270.448
+187080 -4782.49 -292.889
+185311 -4582.15 -303.721
+183352 -4122.91 -300.471
+181293 -3403.26 -280.875
+179270 -2443.35 -241.794
+177518 -1287 -175.628
+176468 0.337774 -56.2725
+176970 1340.02 223.425
+180865 2657.13 1129.55
+192697 3905.98 4644.92
+224681 5097.45 18698
+309180 6308.98 72509.9
+521833 7650.28 263744
+994349 9190.73 880651
+1.80018e+06 10937.8 2.63001e+06
+2.4502e+06 12881 6.69015e+06
+1.39247e+06 14416.2 1.28348e+07
+400137 12585.8 1.18321e+07
+70698.4 8815.89 7.4758e+06
+23510.4 5555.32 4.15e+06
+5614.06 3302.68 2.32761e+06
+-762.03 1913.08 1.28224e+06
+1681.32 1143.09 687670
+999.37 653.569 379409
+-214.529 336.414 208256
+175.222 189.441 109678
+218.008 117.594 59231.2
+-43.0905 59.7267 32525.9
+2.88255 27.8868 16955.5
+43.6201 17.3647 9021.87
+-8.10408 9.90883 5050.53
+-7.41286 4.53854 2673.34
+5.90492 2.83479 1437.21
+-3.47009 1.73962 864.591
+-4.67095 0.75685 521.637
+-2.36646 0.650837 364.243
+-5.25747 0.828182 347.891
+-1.86979 0.743136 410.79
+-4.292 0.994322 643.681
+-15.1533 2.29844 1104.34
+2.21897 3.76669 1878.17
+-0.252459 6.26244 3537.88
+-63.7144 13.58 6694.31
+-6.32829 23.6893 12027.4
+37.9755 39.2413 22728.1
+-299.595 84.1333 43568.6
+-209.603 163.238 79456.1
+250.663 266.475 147639
+-1406.29 483.028 280325
+-2174.9 936.976 510780
+931.458 1644.12 928463
+-8409 2800.08 1.7361e+06
+-33419.1 4907.03 3.16204e+06
+-101135 8348.95 5.67601e+06
+-567687 13468.2 1.03177e+07
+-1.96683e+06 19617.5 1.64627e+07
+-3.45743e+06 22916 1.79648e+07
+-2.53953e+06 20655.4 9.39561e+06
+-1.40017e+06 17431.9 3.68958e+06
+-735849 14517.5 1.22638e+06
+-441066 12121.6 361642
+-326914 10250.7 96928.7
+-285694 8720.32 24089.5
+-271975 7258.76 5696.02
+-268892 5655.64 1290.7
+-270222 3826.22 200.524
+-273437 1797.36 -136.309
+-277393 -335.245 -292.23
+-281557 -2447.34 -392.838
+-285684 -4414.92 -467.067
+-289643 -6132.03 -520.786
+-293327 -7520.22 -553.255
+-296617 -8531.63 -562.568
+-299390 -9147.63 -548.272
+-301544 -9374.79 -512.361
+-303019 -9239.46 -459.084
+-303816 -8782.16 -394.056
+-303996 -8052.57 -323.172
+-303666 -7105.23 -251.694
+-302965 -5996.3 -183.684
+-302039 -4781.04 -121.812
+-301029 -3512 -67.4606
+-300054 -2237.64 -21.0214
+-299204 -1001.38 17.7581
+-298541 159.148 49.4508
+-298100 1212.65 74.7136
+-297891 2134.41 94.1521
+-297908 2906.47 108.272
+-298134 3517.49 117.492
+-298540 3962.47 122.178
+-299097 4242.29 122.688
+-299772 4363.07 119.403
+-300530 4335.45 112.746
+-301342 4173.74 103.195
+-302175 3895.1 91.2818
+-303003 3518.64 77.5782
+0 3064.62 62.6702
+181415 399.437 -7.07774
+181242 668.767 -5.11089
+181064 945.816 -2.77607
+180887 1219.98 -0.122045
+180717 1479.05 2.77277
+180558 1709.52 5.80813
+180419 1896.99 8.86544
+180304 2026.74 11.8068
+180220 2084.31 14.4701
+180174 2056.31 16.6609
+180168 1931.12 18.1406
+180203 1699.81 18.6127
+180277 1356.98 17.7097
+180380 901.569 14.9867
+180495 337.688 9.92922
+180596 -324.706 1.98582
+180647 -1069.22 -9.36894
+180603 -1872.62 -24.5375
+180413 -2704.62 -43.6756
+180026 -3527.96 -66.5588
+179392 -4298.98 -92.4669
+178473 -4968.6 -120.122
+177251 -5484.13 -147.715
+175728 -5791.98 -173.03
+173932 -5841.4 -193.66
+171913 -5589.29 -207.215
+169743 -5005.84 -211.402
+167523 -4080.47 -203.726
+165395 -2827.03 -180.401
+163588 -1286.6 -132.93
+162508 474.039 -34.8744
+162945 2371.51 216.674
+166609 4325.81 1059.26
+177726 6293.73 4334.39
+207598 8311.01 17361.3
+286006 10522.5 67015.3
+482223 13161.9 242906
+916418 16463.5 809107
+1.6548e+06 20556.5 2.41235e+06
+2.24839e+06 25247 6.12909e+06
+1.27695e+06 28677.3 1.1745e+07
+367015 24829.7 1.0802e+07
+64758.1 17273.9 6.7988e+06
+21526.1 10875.5 3.75346e+06
+5324.04 6403.21 2.09375e+06
+-595.227 3591.53 1.14809e+06
+1498.11 2086.38 612740
+894.655 1205.94 336397
+-173.292 629.939 183883
+163.833 339.198 96534.1
+190.105 201.685 51996.6
+-39.8675 105.362 28454.6
+3.96886 51.5859 14777.3
+38.7517 31.1062 7850.29
+-7.36809 17.069 4388.58
+-6.2398 7.73562 2315.6
+5.19095 4.88677 1242.96
+-3.16909 3.09524 746.602
+-3.91648 1.3644 448.518
+-1.8771 1.08536 313.188
+-4.66575 1.3528 299.98
+-1.6931 1.23226 353.529
+-3.47935 1.7729 554.276
+-13.1553 4.05027 954.846
+1.85019 6.45143 1626.67
+0.191317 10.6342 3070.12
+-56.4763 23.3285 5827.17
+-6.73215 42.1761 10485.7
+36.0316 71.5809 19857.2
+-262.881 147.014 38214.2
+-195.756 278.933 69938.2
+202.47 473.935 130351
+-1264.9 892.152 248381
+-1939.67 1706.78 454564
+731.736 2963.24 830670
+-7959.04 5160.77 1.5613e+06
+-30649.1 9281.14 2.85719e+06
+-92810 15888.8 5.1567e+06
+-522162 25535.8 9.42277e+06
+-1.8086e+06 37177.4 1.50846e+07
+-3.18038e+06 43472.4 1.649e+07
+-2.3394e+06 38622.6 8.63023e+06
+-1.29276e+06 31453.8 3.39202e+06
+-680762 25094.7 1.1292e+06
+-407933 20115.8 333840
+-301551 16380.1 89826.1
+-262760 13448 22431
+-249634 10840 5312.44
+-246516 8228.45 1182.64
+-247609 5482.73 161.637
+-250575 2623.2 -139.453
+-254364 -246.22 -261.512
+-258482 -2991 -326.796
+-262694 -5479.87 -365.96
+-266863 -7604.02 -387.41
+-270866 -9286.49 -392.775
+-274569 -10484.8 -381.936
+-277831 -11188.9 -355.446
+-280532 -11416.6 -315.519
+-282591 -11206.7 -265.964
+-283987 -10613.3 -211.485
+-284755 -9699.49 -156.792
+-284980 -8532.81 -105.855
+-284776 -7181.39 -61.4534
+-284273 -5711.36 -25.054
+-283594 -4184.82 3.04029
+-282849 -2658.51 23.3915
+-282124 -1182.85 37.0744
+-281483 198.775 45.36
+-280965 1450.41 49.4818
+-280590 2543.86 50.501
+-280365 3458.7 49.2575
+-280286 4182.15 46.3797
+-280340 4708.74 42.3247
+-280512 5039.77 37.4252
+-280784 5182.59 31.9322
+-281137 5149.8 26.0488
+-281552 4958.27 19.9561
+-282011 4628.22 13.8305
+-282495 4182.16 7.8485
+0 3643.95 2.17588
+157950 316.636 -12.673
+157852 529.55 -15.358
+157772 748.553 -17.8552
+157711 965.291 -20.0326
+157674 1170.13 -21.7583
+157663 1352.4 -22.8991
+157682 1500.7 -23.3239
+157730 1603.35 -22.9129
+157808 1648.84 -21.5729
+157915 1626.42 -19.2558
+158046 1526.68 -15.9827
+158195 1342.28 -11.869
+158350 1068.54 -7.15063
+158497 704.196 -2.20235
+158611 251.983 2.45608
+158665 -280.719 6.17694
+158620 -881.37 8.23038
+158434 -1531.85 7.88222
+158063 -2208.17 4.499
+157459 -2880.43 -2.3332
+156586 -3513.07 -12.6981
+155417 -4065.49 -26.2749
+153946 -4493.34 -42.3248
+152189 -4750.38 -59.75
+150186 -4791.18 -77.2029
+148000 -4574.55 -93.1782
+145717 -4067.51 -105.964
+143442 -3249.34 -113.268
+141318 -2115.04 -111.158
+139557 -676.967 -90.9686
+138517 1036.91 -27.6826
+138877 2990.87 170.683
+142107 5160.02 883.689
+151827 7565.94 3684.01
+177655 10334.5 14764.1
+244687 13768.9 56719.1
+410749 18403.8 204540
+775239 24964.5 678397
+1.39098e+06 34070.9 2.01556e+06
+1.88116e+06 45138.6 5.10542e+06
+1.06634e+06 53112.3 9.75391e+06
+306787 45596.3 8.92972e+06
+54500.2 31091.1 5.58518e+06
+18036.9 19309.8 3.05939e+06
+4555.26 11318.6 1.69324e+06
+-346.816 6246.18 921829
+1257.46 3509.09 488816
+716.524 2009 266849
+-131.576 1064.71 145010
+143.257 560.1 75735.2
+150.192 318.6 40677.8
+-33.7057 167.968 22172
+5.39358 84.0477 11454.2
+30.6385 48.9521 6076.29
+-6.6308 26.4961 3389.35
+-4.29973 12.177 1777.54
+4.28449 7.47156 954.027
+-2.81003 4.77247 573.014
+-2.8889 2.22428 340.971
+-1.18024 1.67601 238.097
+-3.81359 1.99396 229.693
+-1.35559 1.88975 269.045
+-2.20466 2.85058 422.352
+-10.4415 6.19828 734.096
+1.00764 9.81569 1250.9
+1.31508 16.6063 2363.38
+-44.7094 36.0257 4512.16
+-7.37309 66.0677 8137.91
+31.6202 115.342 15446.8
+-209.762 231.998 29891.3
+-171.149 438.035 54929.2
+156.475 775.467 102742
+-1022.87 1486.2 196911
+-1636.85 2804.81 362631
+425.416 4915.53 666842
+-6828.35 8815.2 1.26231e+06
+-25804 16056.1 2.3276e+06
+-78501.3 27533.3 4.23528e+06
+-439339 44634.3 7.8001e+06
+-1.52001e+06 65867.5 1.25607e+07
+-2.67697e+06 77239.5 1.37862e+07
+-1.97749e+06 66240.9 7.233e+06
+-1.09924e+06 50233.6 2.85034e+06
+-582278 36816.6 952049
+-349806 27199.4 282723
+-258117 20590 76500
+-224186 15861.2 19197.4
+-212441 12118.4 4523.36
+-209459 8827.91 956.464
+-210250 5750.93 84.6826
+-212808 2829.44 -148.831
+-216239 94.796 -218.806
+-220118 -2388.21 -236.748
+-224227 -4551.52 -233.119
+-228426 -6339.22 -218.043
+-232581 -7714.98 -194.971
+-236546 -8664.61 -165.083
+-240170 -9195.25 -129.431
+-243317 -9332.35 -89.9047
+-245893 -9115.43 -49.3096
+-247853 -8593.56 -10.9013
+-249207 -7821.18 22.256
+-250010 -6854.6 47.8402
+-250348 -5749.31 64.5847
+-250324 -4558.13 72.3277
+-250040 -3329.91 71.8509
+-249590 -2108.67 64.5939
+-249051 -933.099 52.3333
+-248483 163.792 36.8972
+-247929 1154.88 19.9562
+-247419 2019 2.90198
+-246970 2740.97 -13.196
+-246591 3311.37 -27.5797
+-246287 3726.35 -39.7616
+-246060 3987.2 -49.475
+-245906 4099.83 -56.6248
+-245823 4074.16 -61.2433
+-245807 3923.43 -63.4524
+-245853 3663.43 -63.4321
+-245952 3311.81 -61.4011
+0 2887.24 -57.6099
+122800 164.473 -13.72
+122762 273.98 -18.5144
+122748 386.59 -23.2572
+122764 498.023 -27.7409
+122809 603.335 -31.7418
+122884 697.039 -35.0215
+122989 773.271 -37.3324
+123121 825.993 -38.4302
+123277 849.24 -38.091
+123451 837.397 -36.1331
+123635 785.514 -32.4432
+123820 689.637 -27.0049
+123990 547.149 -19.9277
+124129 357.129 -11.4712
+124215 120.696 -2.05904
+124219 -158.655 7.72437
+124110 -474.74 17.161
+123851 -818.412 25.4515
+123406 -1177.36 31.7903
+122741 -1535.97 35.4545
+121828 -1875.4 35.8903
+120651 -2173.77 32.7766
+119212 -2406.69 26.0493
+117533 -2548.04 15.8794
+115657 -2571.09 2.62394
+113646 -2449.82 -13.1961
+111581 -2160.29 -30.7971
+109560 -1681.68 -48.7718
+107710 -996.444 -64.1866
+106208 -88.9683 -70.0879
+105340 1058.78 -46.4091
+105638 2477.2 78.78
+108235 4230.69 595.51
+115901 6464.27 2685.87
+135895 9498.78 10948.8
+186831 14004.6 42007.2
+310849 21252.3 150580
+578886 33279.1 496057
+1.02519e+06 52304.6 1.46403e+06
+1.37208e+06 77581 3.68422e+06
+774124 97202.3 6.99167e+06
+223106 83733.2 6.34761e+06
+40660.2 55768.9 3.93211e+06
+13418.4 33572.1 2.13364e+06
+3324.41 19343.2 1.1703e+06
+-105.349 10552 631207
+974.19 5752.05 332363
+489.059 3210.44 180676
+-96.3286 1706.24 97539.8
+113.012 891.247 50607.7
+102.01 492.721 27142.4
+-26.3084 259.741 14737.5
+6.85522 130.572 7562.1
+20.82 73.7109 4015.76
+-6.04809 40.119 2235.29
+-2.13833 19.0766 1159.43
+3.33086 11.165 624.415
+-2.38683 7.02534 376.804
+-1.80871 3.51673 220.252
+-0.456629 2.5633 153.969
+-2.83276 2.8693 150.865
+-0.904157 2.88351 174.04
+-0.804806 4.45774 273.669
+-7.52187 9.08744 483.569
+0.0324696 14.6371 820.07
+2.96943 25.7894 1546.93
+-30.6543 54.2545 2984.92
+-8.34144 99.3005 5392.87
+26.4682 178.186 10238.8
+-144.708 356.416 19956.5
+-135.711 674.808 36812.7
+119.588 1227.29 69019
+-709.432 2362.72 133272
+-1283.43 4449.77 247157
+123.691 8000.35 456801
+-5030.03 14759.9 871738
+-19380.7 27165.7 1.6238e+06
+-59113.2 47351.2 2.98361e+06
+-322952 79069.3 5.55025e+06
+-1.11514e+06 119249 9.02453e+06
+-1.9723e+06 139060 9.98499e+06
+-1.47158e+06 111752 5.27148e+06
+-828269 75640 2.0901e+06
+-444130 48127.3 702612
+-268659 30724.1 210074
+-198199 20353.6 57200.5
+-171585 14019 14367.6
+-162121 9804.6 3306.29
+-159562 6691.65 612.87
+-160054 4194.21 -22.2407
+-162046 2096.22 -163.031
+-164840 306.926 -177.637
+-168100 -1208.61 -155.088
+-171641 -2461.71 -120.702
+-175335 -3455.65 -83.3093
+-179058 -4193.92 -46.0676
+-182678 -4684.57 -9.97024
+-186055 -4941.96 24.4285
+-189068 -4986.73 56.1909
+-191625 -4844.58 83.852
+-193675 -4544.62 105.7
+-195213 -4117.49 120.21
+-196271 -3593.89 126.424
+-196907 -3003.28 124.157
+-197194 -2373.14 114.015
+-197208 -1728.43 97.2574
+-197021 -1091.28 75.5678
+-196694 -480.911 50.8039
+-196275 86.4751 24.7772
+-195805 597.668 -0.906933
+-195310 1042.44 -24.9399
+-194813 1413.52 -46.3395
+-194330 1706.45 -64.4365
+-193873 1919.52 -78.8376
+-193453 2053.54 -89.3802
+-193078 2111.58 -96.0868
+-192754 2098.74 -99.1227
+-192488 2021.76 -98.7585
+-192282 1888.68 -95.3371
+-192139 1708.46 -89.2509
+0 1490.64 -80.9284
+79505.9 45.3533 -9.51068
+79493.9 73.8656 -13.1861
+79501.8 103.156 -16.8666
+79530.9 132.121 -20.3986
+79581.6 159.477 -23.614
+79653.2 183.804 -26.3307
+79744.3 203.576 -28.3564
+79852.2 217.224 -29.4965
+79973.3 223.187 -29.5665
+80102.6 219.991 -28.4071
+80233.8 206.32 -25.9028
+80358.8 181.1 -22.0026
+80467.7 143.586 -16.7417
+80547.9 93.4537 -10.2604
+80583.9 30.8904 -2.81701
+80557.2 -43.3122 5.2101
+80446.6 -127.665 13.3356
+80228.4 -219.891 20.9963
+79878.7 -316.853 27.5959
+79375.3 -414.489 32.5581
+78700.8 -507.797 35.3784
+77846.3 -590.852 35.6615
+76813.9 -656.899 33.133
+75619.3 -698.501 27.6207
+74292.3 -707.721 19.0179
+72875.4 -676.291 7.26281
+71423.5 -595.613 -7.6054
+70003.7 -456.405 -25.226
+68701.8 -247.609 -44.3498
+67639.7 46.0772 -61.2441
+67013.9 449.545 -63.8452
+67187.2 1009.27 -7.05716
+68928.2 1822.3 291.717
+74081.4 3108.95 1569.81
+87353.2 5391.07 6659.25
+120436 9889.51 25656.2
+198870 19254 91319.3
+363632 38393 297593
+629688 73746.6 867561
+825331 126072 2.15484e+06
+461052 170668 4.03351e+06
+132993 147614 3.60612e+06
+25429.8 95455.8 2.19822e+06
+8380.7 55000.1 1.17814e+06
+1894.7 30674.6 639675
+11.81 16424.3 340796
+632.33 8741.43 178049
+254.947 4766.73 96621.8
+-64.4124 2518.07 51792
+76.544 1308.35 26673.1
+53.0748 713.569 14337.6
+-19.4584 376.353 7750.06
+7.30513 189.197 3936.01
+11.6483 104.686 2105.3
+-5.1822 57.3862 1171.82
+-0.489804 27.9943 595.579
+2.34102 15.8625 323.808
+-1.80653 9.82905 198.19
+-0.886923 5.17449 112.184
+0.0748029 3.71386 78.7056
+-1.82405 3.97857 79.5365
+-0.446815 4.17805 88.8284
+0.236596 6.51549 139.986
+-4.73913 12.6927 254.705
+-0.543952 20.795 425.43
+4.13899 37.665 797.65
+-17.4795 77.3779 1569.72
+-8.57093 141.036 2832.59
+21.9069 257.787 5348.99
+-77.4667 515.207 10541.2
+-93.4582 976.385 19523.1
+84.943 1799.86 36557.1
+-379.625 3481.78 71198.5
+-848.103 6603.69 133037
+-20.1646 12163.4 246550
+-2922.94 22995.3 474947
+-12298.1 43176.4 896777
+-37496.3 77913.4 1.66668e+06
+-195356 136261 3.14284e+06
+-673689 212081 5.19614e+06
+-1.20278e+06 246353 5.83823e+06
+-915811 182628 3.12376e+06
+-526631 106814 1.25425e+06
+-287148 55360.9 426637
+-174687 27574.6 128893
+-128362 14104.2 35326.5
+-110497 7721.51 8820.93
+-104060 4522.52 1931.06
+-102312 2723.13 269.693
+-102657 1571.86 -95.4123
+-104034 756.833 -151.844
+-105964 143.131 -134.303
+-108213 -331.97 -99.2623
+-110655 -699.806 -62.1083
+-113203 -977.198 -27.6456
+-115776 -1174.33 2.87844
+-118288 -1298.81 29.5267
+-120647 -1357.79 52.5718
+-122773 -1358.87 71.9694
+-124602 -1310.31 87.2645
+-126101 -1220.8 97.7746
+-127263 -1099.13 102.876
+-128104 -953.77 102.252
+-128660 -792.671 96.0386
+-128977 -623.021 84.8328
+-129101 -451.194 69.611
+-129075 -282.722 51.5831
+-128939 -122.318 32.0335
+-128722 26.0959 12.1827
+-128449 159.357 -6.91096
+-128140 275.033 -24.4048
+-127807 371.403 -39.6852
+-127465 447.432 -52.3537
+-127123 502.744 -62.1986
+-126791 537.581 -69.162
+-126477 552.752 -73.3078
+-126190 549.565 -74.7922
+-125937 529.747 -73.8379
+-125723 495.363 -70.7124
+-125553 448.713 -65.7132
+0 392.241 -59.1592
+36887.9 5.50625 -3.65569
+36880.5 6.19422 -4.92802
+36880.6 6.85544 -6.20681
+36888.4 7.4693 -7.44043
+36903.9 8.01179 -8.57253
+36926.4 8.45921 -9.54108
+36955.3 8.7909 -10.2789
+36989.3 8.99031 -10.7163
+37026.8 9.04469 -10.7849
+37066 8.94336 -10.4245
+37104.4 8.6745 -9.58969
+37139.1 8.22072 -8.25958
+37166.6 7.55395 -6.44684
+37182 6.63077 -4.20656
+37179.6 5.39013 -1.64224
+37152 3.75539 1.09321
+37090.4 1.64251 3.80331
+36984.8 -1.02498 6.26158
+36824.8 -4.29523 8.23199
+36600.2 -8.16498 9.49302
+36302.5 -12.5597 9.86006
+35926.5 -17.3237 9.19919
+35471.4 -22.227 7.42615
+34941.7 -26.9898 4.48792
+34347.1 -31.3193 0.331991
+33702.5 -34.9391 -5.12043
+33027 -37.5806 -11.9698
+32344.7 -38.8931 -20.2631
+31688.5 -38.2008 -29.7676
+31109.8 -33.8854 -39.2743
+30700.5 -21.4641 -43.8731
+30643.7 13.3999 -23.1694
+31348.3 120.586 108.468
+33814.5 473.671 697.751
+40571.3 1642.17 3059.65
+57700 5323.83 11786.7
+97779.5 15963.9 41398.6
+179156 43252.5 132258
+303833 102563 376548
+385456 201894 911140
+211125 296037 1.65888e+06
+60258.3 249057 1.44088e+06
+11987.5 150188 852893
+3804.17 80333.8 447937
+633.127 42505.3 239626
+-22.7007 21921.6 125251
+284.188 11345.4 64761.9
+70.9403 6099.05 35153.7
+-38.26 3185.18 18644.6
+41.0339 1636.67 9519.66
+16.7042 892.99 5168.15
+-12.9554 470.315 2772.41
+5.66054 233.445 1381.71
+4.97618 129.303 753.732
+-3.59452 71.5342 421.335
+0.240888 34.5882 206.014
+1.34231 19.4971 114.343
+-1.07814 12.2067 72.1704
+-0.27566 6.41905 38.5196
+0.277482 4.62542 27.2632
+-0.918413 4.99786 29.2026
+-0.116084 5.18841 30.6012
+0.607851 8.06058 48.373
+-2.37471 15.7326 92.8298
+-0.527422 25.511 149.862
+3.76551 46.4773 276.998
+-7.67663 96.3586 566.15
+-6.61966 174.07 1014.27
+16.3691 318.088 1883
+-26.1799 644.086 3786.7
+-51.6811 1222.62 7058.03
+53.8973 2254.88 13096.8
+-113.497 4417.26 25773.3
+-391.107 8488.77 48694
+32.2826 15900.6 90319.2
+-1035.89 31034.4 176228
+-5734.3 60788.4 339885
+-18046.7 116278 642424
+-90220.9 220261 1.23881e+06
+-314196 368912 2.11177e+06
+-571623 440909 2.44274e+06
+-448972 301089 1.34318e+06
+-263005 152401 553136
+-142699 63641.8 192433
+-84422 23083.1 59210.8
+-60191.9 7493.69 16410
+-51059.8 2221.2 4083.04
+-48017.7 600.513 856.272
+-47399.9 130.239 88.3459
+-47788.6 -5.96421 -69.8137
+-48616.6 -47.8666 -87.0324
+-49639.9 -61.7056 -73.7828
+-50749.6 -66.1231 -55.4009
+-51896.1 -66.9654 -37.9825
+-53052.3 -66.1478 -22.9515
+-54193.9 -64.0686 -10.2926
+-55292.4 -60.5686 0.462706
+-56315.7 -55.4699 9.75359
+-57233.3 -48.8482 17.7597
+-58021.9 -41.0832 24.3732
+-58669 -32.7607 29.3058
+-59173.7 -24.5154 32.2445
+-59545.5 -16.8874 32.9895
+-59801 -10.234 31.5349
+-59960.2 -4.70404 28.0846
+-60043.5 -0.265417 23.017
+-60069 3.23647 16.8176
+-60051.6 6.01211 10.0061
+-60002.8 8.26987 3.07158
+-59930.8 10.1769 -3.57156
+-59841.7 11.8414 -9.60585
+-59740 13.3123 -14.8136
+-59629.6 14.5916 -19.0672
+-59514.1 15.6511 -22.3129
+-59397.2 16.4492 -24.5534
+-59282.6 16.945 -25.8328
+-59174.1 17.1084 -26.2223
+-59075.4 16.9271 -25.8102
+-58989.9 16.4094 -24.6931
+-58920.2 15.5818 -22.972
+0 14.4836 -20.7509
+4501.25 0.748146 -0.644679
+4498.2 0.760491 -0.696408
+4495.91 0.765433 -0.744064
+4494.4 0.763387 -0.7859
+4493.66 0.754845 -0.820441
+4493.61 0.740741 -0.8462
+4494.15 0.722706 -0.861517
+4495.14 0.703089 -0.864608
+4496.37 0.684772 -0.853829
+4497.65 0.670773 -0.828122
+4498.68 0.663655 -0.787654
+4499.14 0.664751 -0.734612
+4498.61 0.673273 -0.674074
+4496.58 0.685459 -0.614779
+4492.36 0.693976 -0.569534
+4485.12 0.687823 -0.554969
+4473.82 0.652968 -0.590374
+4457.28 0.573818 -0.695516
+4434.22 0.435448 -0.887574
+4403.4 0.226207 -1.17766
+4363.72 -0.0598765 -1.56774
+4314.46 -0.421694 -2.04895
+4255.36 -0.851334 -2.60228
+4186.79 -1.33626 -3.20197
+4109.72 -1.86268 -3.82085
+4025.69 -2.41792 -4.43518
+3936.75 -2.98834 -5.02449
+3845.58 -3.54616 -5.5592
+3756.01 -4.00683 -5.95665
+3674.55 -4.07326 -5.92275
+3614.39 -2.57158 -4.28809
+3607.56 5.45076 3.87889
+3743.96 40.7615 39.2504
+4293.33 186.057 184.209
+6045.4 746.988 743.702
+11092.8 2756.9 2750.73
+24055.7 9357.53 9353.67
+52057.1 28879.1 28926
+96680.2 79218 79533.6
+127164 184172 185404
+66747.6 321666 324791
+16869.9 269312 272827
+2732.27 153874 156483
+802.503 79156.5 80841.9
+-60.6779 41610.3 42696.9
+-79.1078 21152.4 21803.2
+84.6512 10821.9 11190
+-4.70848 5885.97 6104.94
+-21.4587 3048.56 3172.68
+18.4664 1539.68 1602.67
+2.12657 857.62 892.826
+-7.47161 450.188 471.381
+3.21817 214.982 226.353
+1.78713 122.696 129.153
+-1.96627 69.2247 72.9436
+0.286887 31.4074 33.0746
+0.637511 18.1307 19.1625
+-0.498051 11.9507 12.7873
+-0.00992348 5.76398 6.11866
+0.248866 4.22931 4.42684
+-0.354238 4.9932 5.26722
+0.0209205 4.70585 4.9053
+0.500832 7.28192 7.76111
+-0.934543 15.3741 16.4581
+-0.248883 23.5795 24.9332
+2.42013 42.2872 44.6346
+-2.77304 93.2045 98.3001
+-3.73191 164.522 173.292
+10.135 292.945 308.717
+-4.57753 616.948 646.128
+-23.9614 1172.28 1220.44
+31.5328 2120.35 2207.43
+0.54488 4232.55 4402.74
+-119.353 8195.69 8491.44
+116.409 15179.1 15674.9
+44.9662 30011.3 30881.1
+-1249.53 59651.7 61072
+-4160.51 114887 117035
+-25405.5 226455 229673
+-99837.7 400135 404226
+-189420 479998 483310
+-143126 274908 276002
+-76226.2 117710 117877
+-34734.6 42457.4 42424.2
+-15878.1 13511 13475.2
+-8738.12 3874.11 3857.5
+-6361.86 1009.77 1003.42
+-5670.15 237.35 234.447
+-5534.83 46.2772 44.0992
+-5583.83 2.59921 0.37606
+-5697.35 -6.40097 -8.80109
+-5834.47 -7.60136 -10.166
+-5979.86 -7.07206 -9.77687
+-6127.39 -6.19987 -9.02106
+-6274.1 -5.31898 -8.21984
+-6417.52 -4.48905 -7.41123
+-6554.73 -3.68781 -6.5545
+-6682.31 -2.8838 -5.61199
+-6797 -2.06914 -4.58502
+-6896.3 -1.26657 -3.51856
+-6978.93 -0.519694 -2.48581
+-7044.93 0.123569 -1.56525
+-7095.5 0.626206 -0.820233
+-7132.62 0.97126 -0.286526
+-7158.63 1.16385 0.0307308
+-7175.83 1.22742 0.152649
+-7186.28 1.19659 0.117831
+-7191.58 1.10936 -0.0275202
+-7192.97 1.00046 -0.238182
+-7191.29 0.896971 -0.475765
+-7187.16 0.816564 -0.711532
+-7181.05 0.767791 -0.926646
+-7173.38 0.751755 -1.11076
+-7164.58 0.764344 -1.25987
+-7155.12 0.798438 -1.3741
+-7145.49 0.845787 -1.4559
+-7136.2 0.898428 -1.50857
+-7127.76 0.949666 -1.53531
+-7120.62 0.994583 -1.53863
+-7115.16 1.02997 -1.52038
+0 1.05384 -1.48215
+396.526 0.0730796 -0.0997438
+396.143 0.0720176 -0.0989985
+395.825 0.0701536 -0.0973589
+395.577 0.0676222 -0.0949294
+395.394 0.0645771 -0.0919031
+395.272 0.0612196 -0.0885294
+395.2 0.0578179 -0.0850858
+395.164 0.0547067 -0.0818682
+395.147 0.0522654 -0.0791974
+395.125 0.0508792 -0.0774419
+395.074 0.0508801 -0.0770561
+394.961 0.0524724 -0.078632
+394.746 0.0556467 -0.0829566
+394.38 0.0600974 -0.0910595
+393.8 0.0651595 -0.104223
+392.927 0.0697904 -0.123931
+391.665 0.0726141 -0.151722
+389.905 0.0720403 -0.188951
+387.527 0.0664525 -0.23646
+384.416 0.0544358 -0.294209
+380.469 0.0349951 -0.360966
+375.615 0.00769892 -0.434138
+369.828 -0.0273111 -0.509864
+363.138 -0.0694628 -0.583401
+355.631 -0.117985 -0.649722
+347.451 -0.172041 -0.704066
+338.792 -0.23038 -0.741909
+329.916 -0.289438 -0.757215
+321.223 -0.335156 -0.734983
+313.493 -0.303832 -0.619408
+308.807 0.112963 -0.170216
+314.205 2.41164 1.67194
+356.008 13.5907 9.40905
+531.95 64.6947 40.9495
+1181.93 285.557 161.943
+3371.7 1186.33 591.369
+9984.52 4640.13 1982.32
+27150.7 16993.7 6019.45
+61904.5 57473.5 16170.6
+99775.2 173289 36615.1
+47716.8 415975 61884.5
+8390.5 344405 49678.7
+526.102 183004 27314.8
+424.649 90647.2 14017.9
+-191.78 48362.8 7354.65
+-105.477 24215.5 3616.68
+92.389 12232.5 1870.37
+-15.8778 6868.81 1051.67
+-26.3965 3515.42 518.997
+21.6564 1723.57 255.609
+0.620481 1007.27 154.275
+-9.26026 526.599 78.198
+3.98841 233.125 33.7118
+1.8896 142.831 22.2034
+-2.39866 83.6584 12.9522
+0.400985 33.111 4.67304
+0.729297 20.3879 3.07588
+-0.581798 14.9495 2.37819
+0.0370307 5.93486 0.830331
+0.332124 4.53235 0.642963
+-0.390894 6.44328 1.01247
+0.0318776 4.95217 0.682729
+0.658708 7.65847 1.09304
+-1.01051 19.2161 3.07368
+-0.311619 26.2378 3.92857
+3.04997 44.9921 6.38721
+-2.93231 112.828 17.5686
+-4.62011 190.33 29.5329
+12.7104 318.381 46.0112
+-2.81886 723.625 107.987
+-28.231 1373.17 210.721
+39.1308 2372.07 351.504
+15.5652 4889.13 723.496
+-129.948 9556.56 1467.34
+160.027 17140.3 2622.71
+244.217 34378.8 5140.93
+-668.586 69299.9 10570.4
+-828.69 131417 20375.8
+-12701.9 269259 40262.7
+-71303.9 511200 73937.5
+-148308 619272 92460.7
+-91376.5 257858 54689.9
+-39572.9 85093.6 24031.9
+-14278.3 24890.2 8848.48
+-4711.6 6676.28 2861.84
+-1628.24 1662.76 831.434
+-747.193 385.983 219.524
+-521.486 83.2395 52.843
+-473.247 16.2491 11.2823
+-470.702 2.41675 1.63241
+-480.095 -0.212794 -0.52638
+-492.876 -0.616774 -1.02258
+-506.694 -0.598078 -1.14869
+-520.788 -0.505595 -1.18165
+-534.82 -0.407443 -1.18059
+-548.535 -0.316034 -1.15551
+-561.651 -0.231381 -1.10497
+-573.857 -0.151502 -1.02733
+-584.859 -0.0758596 -0.92489
+-594.438 -0.00613517 -0.80445
+-602.482 0.054492 -0.675716
+-609 0.102655 -0.548938
+-614.1 0.136006 -0.43279
+-617.96 0.153927 -0.333074
+-620.787 0.157647 -0.252375
+-622.787 0.149873 -0.190468
+-624.138 0.134172 -0.145179
+-624.986 0.114284 -0.113357
+-625.439 0.0935623 -0.0917113
+-625.575 0.0746111 -0.077392
+-625.45 0.0591426 -0.0682588
+-625.113 0.0480153 -0.0629093
+-624.604 0.041386 -0.0605459
+-623.969 0.0389087 -0.0607771
+-623.254 0.0399309 -0.0634227
+-622.509 0.0436597 -0.0683565
+-621.784 0.0492887 -0.0753977
+-621.129 0.0560875 -0.084246
+-620.589 0.0634472 -0.0944641
+-620.2 0.0708794 -0.105511
+0 0.0779815 -0.116813
+30.0754 0.00508383 -0.0123338
+30.0399 0.00494971 -0.0118722
+30.0095 0.00475854 -0.01129
+29.9845 0.00452223 -0.0106162
+29.9647 0.00425427 -0.00989195
+29.9496 0.00397134 -0.00916792
+29.9383 0.00369443 -0.00850111
+29.9298 0.00344877 -0.00795287
+29.9224 0.00326234 -0.00758806
+29.9144 0.00316311 -0.00747526
+29.9035 0.00317511 -0.00768791
+29.887 0.00331341 -0.00830646
+29.8616 0.00357835 -0.00942082
+29.8232 0.00394996 -0.0111318
+29.7666 0.00438359 -0.0135494
+29.6852 0.00480846 -0.0167863
+29.5714 0.00513013 -0.0209432
+29.4163 0.005238 -0.0260864
+29.2102 0.0050173 -0.0322184
+28.9437 0.00436397 -0.0392462
+28.6086 0.0031994 -0.0469536
+28.1989 0.00148069 -0.0549883
+27.7125 -0.000797043 -0.0628725
+27.1516 -0.00360762 -0.0700392
+26.5234 -0.00690581 -0.0758899
+25.8395 -0.0106309 -0.079846
+25.1165 -0.0146662 -0.0813367
+24.378 -0.0186136 -0.0795481
+23.6656 -0.0206439 -0.0721852
+23.0918 -0.0113042 -0.0495658
+23.0889 0.0597321 0.0333712
+25.5794 0.456304 0.383715
+39.2301 2.51666 1.90565
+101.613 12.7887 8.2905
+366.182 62.2728 33.5098
+1416.11 293.738 126.221
+5278.34 1350.66 440.612
+18152.8 6089.47 1411.81
+54844.1 27084.8 4079.27
+126490 119709 10222.1
+52936.6 530916 19853.5
+4067.92 426231 14390.7
+-915.375 204716 6790.58
+656.743 97534.4 3497.9
+-347.861 54070.7 1876.16
+-176.91 26308.5 797.182
+172.908 13009.8 436.176
+-31.0527 7743.28 287.209
+-47.6052 3863.29 113.222
+39.376 1795.1 47.9567
+0.434836 1150.02 43.227
+-16.6869 594.659 18.3278
+7.42331 227.296 3.57501
+3.29318 161.132 6.37578
+-4.36078 100.093 4.1793
+0.795099 30.2431 0.184656
+1.30709 21.6435 0.642155
+-1.07064 18.9418 0.888522
+0.0763051 5.12802 -0.0159512
+0.603735 4.349 0.0494311
+-0.720338 8.55147 0.413131
+0.0338981 4.55736 0.0141271
+1.20833 6.97872 0.0351837
+-1.82101 24.329 1.1617
+-0.665457 27.2907 0.736796
+5.54531 42.0155 0.367008
+-5.13982 135.451 5.78548
+-8.64624 212.446 8.18979
+22.9066 312 4.95395
+-4.14055 821.434 26.248
+-51.2997 1561.27 58.7934
+70.6406 2467.83 65.176
+31.6969 5391.58 160.87
+-241.675 10763.5 402.997
+274.447 18202.7 608.892
+457.304 37416.6 1140.08
+-1001.21 77483.4 2714.58
+1354.41 141252 5094.06
+-6352.61 301432 10046.5
+-79092.1 632540 21508
+-187610 788971 29736.2
+-80767.2 177701 15284.8
+-26393.5 39989.2 6063.95
+-7525.15 8892.99 2075.11
+-1964.94 1938.08 636.104
+-492.233 410.893 177.583
+-134.136 84.1438 45.533
+-53.622 16.5119 10.7704
+-37.1512 3.05895 2.33742
+-34.5732 0.502616 0.429189
+-34.9138 0.0428585 0.0134518
+-35.8851 -0.0314489 -0.0819198
+-37.0074 -0.0376524 -0.109748
+-38.1673 -0.0323708 -0.121627
+-39.3264 -0.0256044 -0.127788
+-40.4605 -0.0191098 -0.130067
+-41.5454 -0.0130975 -0.128604
+-42.5557 -0.00751234 -0.123418
+-43.4682 -0.00234954 -0.114863
+-44.2656 0.00227741 -0.103687
+-44.9394 0.00617515 -0.0908941
+-45.4905 0.00914851 -0.0775402
+-45.9273 0.011073 -0.0645441
+-46.2638 0.0119365 -0.0525741
+-46.516 0.0118436 -0.0420145
+-46.7 0.0109911 -0.0329978
+-46.8297 0.00962673 -0.0254744
+-46.9166 0.00800564 -0.0192932
+-46.9693 0.00635472 -0.0142715
+-46.994 0.00485003 -0.0102419
+-46.9958 0.00360812 -0.0070761
+-46.9786 0.00268888 -0.00468694
+-46.9461 0.00210558 -0.00301889
+-46.9024 0.00183767 -0.00203302
+-46.8514 0.00184349 -0.00169294
+-46.7974 0.00207093 -0.00195416
+-46.7446 0.00246562 -0.00275779
+-46.6972 0.00297669 -0.00402801
+-46.6589 0.00355969 -0.00567336
+-46.6326 0.00417657 -0.00759232
+0 0.00479391 -0.00968078
+1.87827 0 -0.00111165
+1.87575 0 -0.00105716
+1.87356 0 -0.000991556
+1.87172 0 -0.000918011
+1.87021 0 -0.000840819
+1.86901 0 -0.000765202
+1.86806 0 -0.000697059
+1.86727 0 -0.000642766
+1.86655 0 -0.00060903
+1.86577 0 -0.000602792
+1.86477 0 -0.000631173
+1.86338 0 -0.000701477
+1.86137 0 -0.000821188
+1.85844 0 -0.00099791
+1.85427 0 -0.00123909
+1.8484 0 -0.00155142
+1.84034 0 -0.00193971
+1.82948 0 -0.00240528
+1.8152 0 -0.00294387
+1.79687 0 -0.00354348
+1.77394 0 -0.00418252
+1.74603 0 -0.00482903
+1.71298 0 -0.00544161
+1.67495 0 -0.00597223
+1.6324 0 -0.00637055
+1.58613 0 -0.00658767
+1.5373 0 -0.00657382
+1.48773 0 -0.00624969
+1.4415 0 -0.00535424
+1.41374 0 -0.00268165
+1.47682 0 0.00763977
+1.99864 0 0.0534222
+4.82954 0 0.259987
+19.0059 0 1.16098
+87.3094 0 4.90193
+406.803 0 19.6412
+1865.3 0 74.8054
+8397.68 0 271.392
+37269.9 0 940.368
+164125 0 3146.85
+67321 658890 11679.9
+1678.98 515469 7437.8
+-2466.09 218390 2108.29
+1366.07 98240.6 1164.4
+-378.688 58717.2 828.804
+-370.737 27526.8 184.124
+293.596 12884.5 109.292
+-13.0988 8458.08 158.348
+-94.8732 4129.75 34.0861
+63.0558 1707.41 -6.58355
+13.6688 1270.52 24.1471
+-28.4352 671.072 9.50693
+10.924 191.454 -5.33502
+9.19246 171.36 3.34671
+-6.35166 122.932 3.9767
+0.740084 23.1974 -0.901646
+2.68421 20.3721 0.090648
+-1.77952 24.9516 1.09425
+-0.431851 3.86033 -0.10648
+0.488322 3.78899 -0.120739
+-1.77822 11.9325 0.427753
+-0.298452 3.44086 -0.225797
+0.990624 5.98633 -0.0726219
+-4.54754 31.8785 1.39018
+-1.2163 24.5998 -0.0709542
+6.95206 34.2277 -1.03156
+-14.1087 166.474 5.5052
+-12.8785 221.894 3.78017
+37.4626 267.234 -6.9143
+-25.1452 932.892 14.8659
+-80.982 1712.4 31.9691
+136.161 2346.51 -10.4001
+-3.46311 5794.57 53.1122
+-404.393 11732.7 222.68
+562.711 17991.1 145.958
+469.71 39278.7 273.81
+-2012.01 84134.1 1214.37
+3730.16 142058 1690.66
+-2930.98 322141 3164.61
+-100564 765146 11231.5
+-243097 977703 17591.3
+-54815.3 0 4723.08
+-12195 0 1400.09
+-2656.71 0 399.038
+-563.951 0 107.991
+-116.913 0 27.6425
+-24.5444 0 6.67094
+-6.20313 0 1.51435
+-2.74317 0 0.322144
+-2.1582 0 0.0620058
+-2.111 0 0.00728447
+-2.16416 0 -0.00469552
+-2.23727 0 -0.00802036
+-2.3147 0 -0.00944619
+-2.39249 0 -0.0102623
+-2.46869 0 -0.0106994
+-2.54161 0 -0.0107886
+-2.60956 0 -0.01054
+-2.67101 0 -0.00998576
+-2.72485 0 -0.00918581
+-2.77054 0 -0.00821855
+-2.80814 0 -0.00716637
+-2.83819 0 -0.00610262
+-2.86159 0 -0.00508355
+-2.87938 0 -0.00414568
+-2.89257 0 -0.0033077
+-2.90208 0 -0.00257504
+-2.90863 0 -0.00194504
+-2.91281 0 -0.00141156
+-2.91503 0 -0.000968072
+-2.91563 0 -0.000609243
+-2.91489 0 -0.000331138
+-2.91309 0 -0.000130671
+-2.91049 0 -4.74748e-06
+-2.90738 0 5.05185e-05
+-2.90404 0 4.03323e-05
+-2.90078 0 -2.85433e-05
+-2.89785 0 -0.000147806
+-2.89552 0 -0.000307885
+-2.89398 0 -0.00049846
+0 0 -0.000709067
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+283896 462791 48004.8
+139610 783646 70464.4
+-11184.2 433661 33510.2
+-2768.45 112678 9688.97
+9598.5 61796.1 8323.81
+-2183.62 48996.4 5194.72
+-1311.95 15441.9 1094.63
+1956.91 7184.8 1038.89
+-137.104 7693.94 1126.22
+-386.345 2407.57 235.535
+557.886 585.539 79.3354
+163.182 1384.43 240.188
+-89.0651 547.688 88.5302
+139.035 -43.731 -4.45877
+91.4077 219.976 40.1448
+-21.0926 159.328 33.2081
+9.3323 -7.33271 6.53879
+6.67558 39.7218 14.1922
+-29.1525 55.5041 13.728
+-34.3481 28.07 2.37933
+-26.8708 23.7877 0.170543
+-26.6363 24.7261 1.93518
+-65.5449 67.5675 15.2164
+-62.0112 44.1861 16.0169
+-26.6583 -9.51521 7.72075
+-176.764 218.128 42.916
+-219.779 272.226 49.379
+74.8838 -53.9956 -7.17068
+-299.837 796.128 132.284
+-774.451 1841.42 328.242
+523.72 763.355 95.9078
+21.2185 3502.93 347.587
+-2750.49 10608.8 1568.58
+1998.52 9694.59 1386.54
+2680.66 22128.6 1557.15
+-14029.3 69666.3 7459.95
+4767.84 86960.9 11768.7
+15460.3 163895 13912.2
+-207433 638589 49503.3
+-419000 1.15725e+06 104478
+0 687160 71418.1
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+261486 0 53366.2
+393531 0 138199
+141461 0 118787
+-29275.8 0 40550.6
+-1702.93 0 8996.83
+15996.2 0 11880.6
+-2487.08 0 7315.31
+-1504.64 0 859.532
+3704.62 0 1197.73
+391.415 0 1554.12
+-262.016 0 320.863
+1265.75 0 218.615
+616.692 0 497.552
+50.2003 0 202.668
+334.898 0 18.1798
+204.885 0 103.885
+-38.8204 0 90.3754
+-41.3591 0 47.8006
+-87.129 0 46.289
+-141.41 0 16.537
+-152.984 0 3.34358
+-212.558 0 20.523
+-223.481 0 43.9165
+-214.286 0 54.8489
+-536.605 0 115.294
+-664.734 0 117.704
+-312.286 0 19.6606
+-1126.35 0 293.256
+-1898.07 0 683.045
+163.345 0 294.887
+-974.622 0 496.231
+-5296.21 0 2186.23
+2202.75 0 1584.71
+2689.17 0 1309.78
+-23350.7 0 10588.7
+3360.08 0 16688.3
+40820.9 0 12597.3
+-210626 0 59368.7
+-578994 0 174565
+-385744 0 203935
+0 0 79271.9
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+67181 -100844 13476.4
+110416 -178895 37287.6
+41827 -95093.3 33008.8
+-9302.47 -19463.8 10192.5
+138.851 -13101 1371.45
+5925.92 -11392.8 3610.46
+-808.456 -2251.2 2568.51
+-184.845 -1310.47 168.313
+1986.2 -2231.41 290.32
+472.436 -493.75 597.445
+19.9216 23.2707 123.887
+755.845 -423.078 -7.35236
+572.129 -164.616 128.03
+225.39 57.8314 102.584
+250.714 -74.2579 59.367
+179.643 -79.7986 75.4526
+43.9146 -5.24546 50.5261
+30.3626 -13.8085 6.5777
+0.06649 -28.0872 0.558768
+-77.4847 -18.4418 -6.2261
+-148.096 -14.1155 -8.04163
+-231.299 -18.4185 -10.9484
+-255.395 -35.085 -8.57044
+-268.966 -19.0794 2.24326
+-445.365 -1.68635 65.4942
+-538.346 -95.4355 98.571
+-529.613 -88.1845 84.1205
+-1018.19 67.4442 145.81
+-1205.62 -247.965 172.333
+-198.533 -557.24 -15.0963
+-933.543 54.9761 198.599
+-2937.21 -748.792 843.108
+188.868 -3087.95 380.269
+743.55 -1696.1 289.074
+-8766.55 -3284.18 3729.1
+42.2214 -16326.8 5065.74
+12980.3 -18405.1 1865.12
+-62709.6 -28438.9 15080.7
+-163429 -140970 48872.8
+-99707.7 -265773 55369.5
+0 -150676 20152.4
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+62518.1 -124861 9504.06
+29878.2 -90032.9 14242.5
+-4203.02 -33541.2 6039.35
+23.6446 -15573 1571.25
+2790.7 -9759.07 2212.77
+-873.938 -3927.6 1390.16
+-209.832 -1928.86 105.279
+851.624 -1516.79 183.524
+20.7245 -596.219 322.388
+-100.955 -193.555 57.0381
+245.567 -232.16 -11.9741
+115.404 -106.668 53.1286
+21.0858 -6.44437 24.638
+101.308 -32.2687 4.92729
+70.7835 -26.554 23.8926
+6.63073 0.229652 19.0105
+7.5671 -2.8689 3.80327
+12.1627 -5.90728 2.5048
+-4.7974 -0.211032 4.23495
+-19.1287 -0.359843 -1.66568
+-27.6478 -3.10811 -1.20943
+-41.7565 -0.0682003 -3.14187
+-62.7875 -0.219201 -0.461325
+-58.9937 -7.66444 -0.226125
+-55.7326 -2.84168 5.66104
+-134.316 -0.326073 26.4452
+-168.161 -36.4168 31.4097
+-72.4257 -40.5532 6.83432
+-213.146 -10.2505 37.4747
+-362.535 -152.764 70.361
+115.246 -311.449 -18.6455
+-112.455 -261.183 91.5506
+-1229.04 -851.504 452.801
+338.023 -2114.25 236.674
+1120.89 -2671.51 160.857
+-4133.89 -5637.34 2025.24
+169.164 -14080.8 3141.24
+5994.98 -22561.3 2208.45
+-44674.6 -49734.9 8937.12
+-92722.9 -134440 21193
+0 -186180 14197.4
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0.345014 -0.000537599 -0.000117742
+0.344621 -0.00055087 -0.000113306
+0.344295 -0.000558693 -0.000107733
+0.34404 -0.000561355 -0.000101279
+0.343853 -0.000559005 -9.43286e-05
+0.343727 -0.000551915 -8.73696e-05
+0.343651 -0.000540744 -8.09572e-05
+0.343611 -0.000526603 -7.56934e-05
+0.343585 -0.000510922 -7.22201e-05
+0.343549 -0.00049512 -7.12249e-05
+0.343471 -0.000480102 -7.34608e-05
+0.343315 -0.000465584 -7.97764e-05
+0.343034 -0.000449319 -9.11518e-05
+0.342571 -0.000426366 -0.000108722
+0.341855 -0.000388587 -0.00013377
+0.340795 -0.000324641 -0.000167654
+0.339288 -0.000220689 -0.000211647
+0.337211 -6.193e-05 -0.000266686
+0.334435 0.000165086 -0.000333027
+0.330832 0.000469691 -0.000409869
+0.32629 0.000854484 -0.000495025
+0.320732 0.00131364 -0.000584753
+0.314132 0.00183285 -0.000673854
+0.306524 0.0023912 -0.000756085
+0.298014 0.00296414 -0.000824772
+0.288775 0.00352495 -0.000873245
+0.279059 0.00403631 -0.000893695
+0.269281 0.00439631 -0.000868475
+0.260501 0.00414863 -0.000722932
+0.256979 0.000921145 -8.06492e-05
+0.279464 -0.0177997 0.00295477
+0.431608 -0.11625 0.0175276
+1.21772 -0.611412 0.0852873
+5.00006 -3.00586 0.38451
+22.4408 -14.1692 1.63045
+100.15 -64.5733 6.50544
+436.813 -286.224 24.3663
+1864.29 -1241.34 85.2601
+7829.03 -5300.47 276.097
+32600.3 -22442.1 817.691
+12101 -95115.9 2434.13
+-346.582 -71557.1 1409.49
+-338.09 -31825.8 384.441
+326.984 -15364.8 291.2
+-163.944 -8608.52 169.119
+-51.5509 -3847.93 -8.07665
+94.6981 -1976.06 10.149
+-19.9625 -1282.71 38.9162
+-24.694 -560.048 2.65196
+22.9802 -241.697 -6.118
+2.36226 -193.58 6.16972
+-7.83927 -89.5088 2.54881
+5.63009 -23.4212 -1.81949
+3.87952 -28.1207 0.937772
+-1.47889 -18.4067 1.1787
+0.532313 -2.35078 -0.283423
+0.896225 -3.17417 0.0602583
+-0.490835 -3.75359 0.37228
+-0.0561297 -0.266233 -0.033425
+0.0143949 -0.450546 -0.0958003
+-0.931089 -1.79598 0.0961176
+-0.699668 -0.37543 -0.171216
+-0.399746 -0.521995 -0.128921
+-2.22151 -4.86552 0.379939
+-1.35276 -3.7899 0.00680376
+1.18608 -3.58443 -0.314098
+-6.18018 -25.2194 1.67423
+-7.58617 -36.3817 1.07484
+10.0147 -32.2753 -2.40573
+-5.87817 -126.021 3.95526
+-30.9853 -262.508 8.06768
+36.2898 -329.836 -8.87868
+21.3153 -788.97 5.66915
+-135.131 -1790.44 55.2893
+85.5584 -2757.47 11.1871
+222.97 -5492.37 -8.58763
+-493.231 -12404.7 254.503
+530.285 -22321.3 427.128
+449.337 -47062.7 573.325
+-18173.7 -106715 2129.03
+-48488 -141944 3669.61
+-11555.3 -33436.9 1227.19
+-2715.34 -7850.9 411.062
+-623.724 -1817.94 125.357
+-139.147 -411.755 35.1684
+-30.1026 -90.5529 9.15102
+-6.44998 -19.1986 2.21692
+-1.54061 -3.89588 0.500859
+-0.574926 -0.748992 0.105448
+-0.401629 -0.131606 0.0203155
+-0.381055 -0.0163018 0.00301171
+-0.389411 0.00407818 -0.000417464
+-0.403501 0.00721352 -0.00114425
+-0.418863 0.00725699 -0.00134117
+-0.434435 0.00672253 -0.00141208
+-0.449756 0.00604986 -0.00142897
+-0.464444 0.00530263 -0.001403
+-0.478132 0.0044845 -0.00133649
+-0.490493 0.00360967 -0.00123405
+-0.501291 0.00271614 -0.00110433
+-0.510409 0.00185799 -0.000958692
+-0.517857 0.00109031 -0.000808942
+-0.523749 0.000455297 -0.000665214
+-0.528272 -2.59209e-05 -0.000534708
+-0.531642 -0.000354596 -0.000421342
+-0.534073 -0.000550298 -0.000326163
+-0.535756 -0.000643824 -0.000248185
+-0.536846 -0.000669589 -0.000185319
+-0.537463 -0.00065932 -0.000135186
+-0.537698 -0.000638009 -9.56484e-05
+-0.53762 -0.00062229 -6.50718e-05
+-0.537288 -0.000620764 -4.23446e-05
+-0.536756 -0.000635557 -2.67599e-05
+-0.536079 -0.000664347 -1.7841e-05
+-0.535311 -0.000702343 -1.51773e-05
+-0.534508 -0.000743893 -1.83017e-05
+-0.533726 -0.000783678 -2.66171e-05
+-0.533017 -0.000817461 -3.93679e-05
+-0.532427 -0.00084237 -5.56564e-05
+-0.531994 -0.000856709 -7.45033e-05
+0 -0.000859543 -9.49194e-05
+4.60118 -0.00640697 -0.00114843
+4.59669 -0.00680621 -0.00112858
+4.59309 -0.00715016 -0.00109808
+4.5904 -0.00743255 -0.00105833
+4.58861 -0.0076439 -0.00101194
+4.58763 -0.00777547 -0.000962424
+4.58732 -0.00782278 -0.000913787
+4.5875 -0.00778674 -0.000870385
+4.58791 -0.0076724 -0.000836961
+4.58824 -0.00748542 -0.000818887
+4.58812 -0.00722639 -0.000822604
+4.58709 -0.00688305 -0.000856212
+4.58457 -0.00642151 -0.00093015
+4.57985 -0.0057779 -0.00105774
+4.57202 -0.00485311 -0.00125528
+4.55997 -0.00351372 -0.00154138
+4.54234 -0.00160184 -0.00193516
+4.5176 0.00104481 -0.00245311
+4.48409 0.00456336 -0.00310496
+4.44017 0.00903132 -0.00388894
+4.38442 0.0144346 -0.0047876
+4.31586 0.0206482 -0.00576557
+4.23416 0.0274382 -0.00677049
+4.13976 0.0344894 -0.0077377
+4.03398 0.0414484 -0.00859766
+3.91899 0.0479547 -0.00928177
+3.79781 0.0535876 -0.00971486
+3.67492 0.0574931 -0.00974836
+3.55913 0.056558 -0.00880608
+3.47829 0.0362695 -0.00407061
+3.55006 -0.0747165 0.0185112
+4.31108 -0.619968 0.126419
+8.15387 -3.17425 0.62569
+25.1552 -14.5339 2.81716
+94.8326 -62.1972 11.8605
+359.839 -250.122 46.7636
+1285.59 -943.411 172.044
+4187.52 -3317.59 586.128
+11873.9 -10728 1820.48
+25493.4 -30809.1 4969.62
+9827.73 -70246.5 10649.7
+398.856 -55440.6 7703.11
+-97.3711 -28150.9 3611.83
+133.969 -13956.7 1858.38
+-132.119 -7424.58 958.31
+-15.2903 -3547.82 380.242
+52.7699 -1826.89 218.937
+-21.596 -1072.83 151.692
+-12.2306 -511.781 55.5899
+13.971 -242.679 22.7367
+-1.79282 -158.344 23.7545
+-5.13976 -78.0715 10.2363
+3.12927 -29.7499 1.63596
+0.931636 -22.8689 3.32177
+-1.51618 -13.9191 2.14
+0.332784 -3.95261 -0.0639028
+0.424404 -2.96896 0.346613
+-0.366914 -2.6131 0.540804
+0.0279623 -0.663296 -0.0138478
+0.193739 -0.577107 0.0107377
+-0.245938 -1.1687 0.22669
+-0.000204238 -0.590561 -0.0170702
+0.408141 -0.910484 0.0135385
+-0.620148 -3.3795 0.703107
+-0.323663 -3.73099 0.38111
+1.96091 -5.48921 -0.01286
+-1.54009 -18.9277 2.99472
+-3.83246 -30.151 4.2534
+7.2587 -40.6624 2.25316
+1.25924 -108.397 14.6229
+-18.806 -215.814 32.1643
+19.0343 -333.088 30.5925
+27.1069 -715.47 79.3022
+-76.3168 -1497.13 213.105
+29.3628 -2558.69 304.421
+184.164 -5050.44 543.351
+-211.771 -10684.8 1390.56
+148.468 -20298.6 2711.16
+-644.295 -41564.5 5341.09
+-14742.8 -82608.4 11500
+-37942.2 -104937 15928.3
+-17536.2 -45980.3 7422.23
+-6102.59 -15923.7 2703.13
+-1836.22 -4869.66 860.46
+-499.896 -1360.02 248.051
+-127.301 -351.269 65.7043
+-32.7699 -84.2923 16.0957
+-10.7552 -18.7964 3.65619
+-6.07731 -3.8571 0.767661
+-5.24493 -0.678171 0.143378
+-5.22115 -0.0429617 0.0163289
+-5.36668 0.0764779 -0.00879165
+-5.55083 0.0956031 -0.013984
+-5.745 0.0950179 -0.0152143
+-5.94064 0.09003 -0.0154627
+-6.13282 0.0834235 -0.0152532
+-6.31696 0.0754848 -0.014651
+-6.48838 0.0661472 -0.0136635
+-6.64287 0.0555795 -0.012335
+-6.77738 0.0442957 -0.0107611
+-6.89038 0.0330392 -0.00907062
+-6.98202 0.0225806 -0.00739708
+-7.05379 0.0135341 -0.00585259
+-7.10812 0.00624779 -0.00451238
+-7.14786 0.000781896 -0.00341087
+-7.17582 -0.00304299 -0.0025472
+-7.19449 -0.0055583 -0.00189612
+-7.20588 -0.00715186 -0.00142011
+-7.21154 -0.00818768 -0.00107976
+-7.21262 -0.00895391 -0.000840765
+-7.21 -0.00964105 -0.000677179
+-7.2044 -0.0103451 -0.000571701
+-7.19645 -0.0110861 -0.00051402
+-7.18682 -0.0118334 -0.000498427
+-7.17616 -0.0125296 -0.000521505
+-7.16517 -0.0131111 -0.000580315
+-7.15451 -0.0135218 -0.000671191
+-7.14485 -0.0137232 -0.000789094
+-7.13674 -0.0136968 -0.00092755
+-7.13067 -0.013442 -0.00107918
+0 -0.0129693 -0.0012365
+46.8973 -0.0538406 -0.00806666
+46.8615 -0.0616594 -0.00831026
+46.8347 -0.0692126 -0.00848713
+46.8172 -0.0762667 -0.00858989
+46.8088 -0.0825343 -0.00861821
+46.8088 -0.0877137 -0.00857575
+46.8159 -0.091524 -0.00846751
+46.8282 -0.0937212 -0.00829947
+46.8435 -0.0940963 -0.00808048
+46.8589 -0.0924569 -0.00782626
+46.8708 -0.0885921 -0.0075654
+46.8748 -0.0822222 -0.00734716
+46.8656 -0.0729404 -0.00724997
+46.8363 -0.0601599 -0.00738886
+46.7783 -0.0430884 -0.00791867
+46.6806 -0.0207543 -0.00902962
+46.5303 0.00789373 -0.0109323
+46.3124 0.043802 -0.0138302
+46.0109 0.0875552 -0.0178818
+45.6098 0.139084 -0.0231575
+45.0954 0.197406 -0.0296004
+44.4585 0.260483 -0.0370044
+43.6958 0.325274 -0.0450203
+42.8121 0.388015 -0.053196
+41.8202 0.44465 -0.0610407
+40.741 0.491186 -0.06808
+39.6029 0.523518 -0.0738246
+38.4449 0.535685 -0.0774062
+37.3297 0.512572 -0.0757455
+36.4027 0.398282 -0.0544214
+36.1482 -0.0480267 0.0576243
+38.4877 -1.89046 0.602865
+51.2256 -9.65541 3.15238
+104.497 -41.3495 14.494
+305.08 -162.965 62.1271
+990.705 -594.549 250.171
+3076.83 -1992.15 944.929
+8498.11 -6047.53 3328.11
+19402.6 -16242.1 10780.3
+30964.8 -36769.8 31013.7
+13905.4 -62139.2 70836.5
+2027.26 -49898.5 56014.7
+140.67 -27453.1 28503.7
+126.935 -14100.3 14175.3
+-109.945 -7401.77 7568.71
+-20.8748 -3641.83 3621.63
+43.2747 -1885.3 1864.63
+-16.2237 -1060.8 1099.13
+-10.7342 -523.78 525.507
+11.5468 -258.376 249.025
+-1.02089 -156.09 164.589
+-4.3862 -79.0361 82.5279
+2.41187 -34.0219 31.1859
+0.797418 -22.4432 23.3922
+-1.26336 -13.1304 14.2244
+0.257696 -4.74975 3.94916
+0.368012 -3.10158 3.09776
+-0.305371 -2.39027 2.82897
+0.0170737 -0.843244 0.68787
+0.165349 -0.65599 0.573624
+-0.196823 -1.0245 1.23044
+0.0226969 -0.699091 0.571946
+0.35129 -1.10898 0.963255
+-0.517408 -3.09012 3.65319
+-0.225027 -3.96532 3.87064
+1.63401 -6.49474 5.53377
+-1.30349 -17.8139 19.3921
+-2.90663 -29.857 30.842
+6.16569 -46.4383 42.7151
+0.401992 -109.157 114.51
+-15.44 -213.232 223.981
+16.5483 -355.349 341.778
+19.9301 -730.25 734.894
+-62.4916 -1480.22 1532.86
+35.265 -2643.6 2609.87
+149.965 -5176.11 5151.9
+-205.244 -10636.5 10877.4
+-219.371 -20491.5 20582.8
+-3079.33 -40456.9 42015.1
+-20813.7 -74248.4 83311.9
+-46081.3 -92823.8 105615
+-28656.9 -54910.9 46196.1
+-12385.8 -24133.6 15970.7
+-4395.13 -8888 4876.1
+-1377.7 -2875.4 1359.8
+-412.6 -835.679 350.74
+-140.589 -220.839 84.0589
+-71.9002 -53.3552 18.7135
+-56.684 -11.6127 3.82176
+-54.4497 -1.93356 0.653496
+-55.2653 0.2272 0.0190503
+-56.8339 0.724177 -0.101685
+-58.6166 0.852007 -0.12235
+-60.4668 0.886658 -0.123139
+-62.3259 0.887667 -0.119132
+-64.1519 0.866744 -0.112875
+-65.9012 0.824271 -0.104467
+-67.5282 0.759615 -0.0937844
+-68.9912 0.674834 -0.0810952
+-70.2595 0.575321 -0.0671454
+-71.3179 0.468669 -0.0529844
+-72.1674 0.362842 -0.0396982
+-72.823 0.26452 -0.0281727
+-73.309 0.178088 -0.0189512
+-73.6538 0.105395 -0.0122021
+-73.8856 0.0461139 -0.00777351
+-74.0295 -0.00153773 -0.00529751
+-74.1057 -0.0399978 -0.00430659
+-74.1296 -0.0716765 -0.00433286
+-74.1125 -0.0985045 -0.00497515
+-74.0627 -0.121732 -0.00593076
+-73.987 -0.141942 -0.006998
+-73.8914 -0.15919 -0.00806007
+-73.7817 -0.173204 -0.00906121
+-73.6641 -0.183581 -0.00998304
+-73.5448 -0.189941 -0.0108252
+-73.4301 -0.19204 -0.0115912
+-73.326 -0.189839 -0.0122798
+-73.2377 -0.183521 -0.0128811
+-73.1699 -0.173459 -0.0133792
+0 -0.160144 -0.013758
+380.388 -0.386608 -0.046781
+380.194 -0.510768 -0.0530983
+380.076 -0.636181 -0.0591442
+380.037 -0.758391 -0.064661
+380.075 -0.872156 -0.0694049
+380.186 -0.971745 -0.0731273
+380.36 -1.05123 -0.075564
+380.583 -1.10471 -0.0764442
+380.837 -1.12649 -0.0755182
+381.1 -1.11115 -0.0726027
+381.345 -1.05363 -0.0676421
+381.538 -0.949204 -0.0607841
+381.637 -0.793438 -0.0524618
+381.588 -0.582218 -0.043466
+381.322 -0.311908 -0.0349874
+380.755 0.02021 -0.0285993
+379.783 0.41511 -0.0261611
+378.29 0.870789 -0.0296287
+376.15 1.3807 -0.0407844
+373.241 1.93209 -0.0609239
+369.456 2.50464 -0.0905707
+364.727 3.06986 -0.129304
+359.034 3.5918 -0.175783
+352.419 4.02905 -0.228012
+344.989 4.33787 -0.28376
+336.911 4.47483 -0.340948
+328.411 4.39695 -0.397519
+319.782 4.05468 -0.449659
+311.455 3.36694 -0.483595
+304.234 2.13301 -0.436408
+300.215 -0.316432 -0.00150077
+306.444 -6.55182 2.31202
+349.231 -26.6809 13.4881
+526.393 -98.8652 64.5626
+1178.63 -357.105 285.605
+3376.37 -1230.5 1188.94
+10023.3 -3946.36 4660.98
+27317.8 -11530.4 17114.4
+62442.5 -29883.8 58050.5
+100931 -65448.6 175594
+48384.4 -107797 422996
+8512.8 -89081.7 351882
+525.607 -51088.5 188105
+441.769 -26968.8 93794.2
+-194.179 -14460.1 50391.2
+-112.134 -7325.26 25404.5
+95.781 -3792.97 12889.7
+-15.9678 -2111.67 7267.56
+-29.361 -1077.3 3739.6
+21.8922 -540.004 1833.04
+1.31074 -313.765 1071.08
+-9.52837 -162.763 565.947
+4.11404 -74.1685 252.857
+2.02066 -45.3717 154.174
+-2.57569 -26.0736 90.4832
+0.427433 -10.5222 35.844
+0.837249 -6.50603 22.1571
+-0.634897 -4.71028 16.5794
+0.00805137 -1.89 6.52246
+0.350224 -1.40679 4.83547
+-0.418863 -1.96756 6.97937
+0.0801578 -1.52921 5.2364
+0.711725 -2.46093 8.4815
+-1.15045 -6.08266 21.3128
+-0.314593 -8.39646 28.5285
+3.25313 -14.3552 48.9274
+-3.13504 -35.3257 122.2
+-4.71116 -60.6565 205.668
+13.015 -101.404 345.956
+-3.83822 -224.163 777.988
+-28.2544 -428.762 1460.38
+43.0363 -743.576 2524.37
+14.9944 -1497.95 5198.48
+-133.876 -2937.08 10097.2
+169.278 -5303.96 18032.1
+244.347 -10356.1 35986.1
+-691.992 -20614.5 71986.3
+-825.868 -38830.1 135507
+-12852.4 -74499.5 275742
+-72066.7 -131103 520295
+-149527 -159359 627305
+-91878.4 -96849.6 260292
+-39697.4 -44065 85627.1
+-14293.5 -16843.4 24975.7
+-4705.54 -5670.58 6682.43
+-1619.39 -1724.94 1660.62
+-737.474 -484.056 384.719
+-510.609 -128.55 82.7773
+-461.125 -33.05 16.0528
+-457.496 -7.45445 2.26734
+-466.064 0.371004 -0.376011
+-478.3 3.59982 -0.805733
+-491.836 5.42297 -0.812636
+-505.865 6.63732 -0.742136
+-519.997 7.45928 -0.659944
+-533.911 7.94575 -0.57618
+-547.261 8.10887 -0.489331
+-559.676 7.96061 -0.397266
+-570.817 7.53158 -0.300838
+-580.43 6.87365 -0.20433
+-588.385 6.05266 -0.114165
+-594.688 5.13724 -0.0369716
+-599.455 4.18884 0.0221215
+-602.879 3.25532 0.0604927
+-605.19 2.36894 0.078236
+-606.617 1.54792 0.0777336
+-607.363 0.799979 0.0628648
+-607.596 0.126599 0.0381301
+-607.44 -0.473305 0.0078988
+-606.989 -1.00085 -0.0241022
+-606.312 -1.45596 -0.0550348
+-605.46 -1.83724 -0.0829753
+-604.481 -2.14263 -0.106795
+-603.418 -2.37019 -0.125979
+-602.316 -2.51903 -0.140437
+-601.221 -2.5899 -0.150347
+-600.18 -2.58562 -0.156026
+-599.236 -2.51119 -0.157846
+-598.429 -2.37366 -0.156179
+-597.789 -2.18173 -0.15139
+0 -1.94508 -0.143861
+2058.34 -2.92653 -0.227526
+2057.89 -4.68237 -0.300584
+2057.9 -6.48124 -0.373413
+2058.4 -8.25492 -0.442944
+2059.39 -9.92459 -0.5059
+2060.83 -11.4029 -0.558753
+2062.7 -12.5964 -0.597752
+2064.91 -13.4093 -0.619066
+2067.36 -13.7467 -0.619035
+2069.94 -13.5192 -0.594519
+2072.49 -12.6477 -0.543341
+2074.81 -11.068 -0.464796
+2076.67 -8.73676 -0.360202
+2077.75 -5.63631 -0.23339
+2077.66 -1.78063 -0.0910318
+2075.94 2.77924 0.0573314
+2072.01 7.94966 0.199684
+2065.23 13.5892 0.322406
+2054.93 19.5042 0.411568
+2040.45 25.4454 0.45448
+2021.27 31.1074 0.441156
+1997.04 36.1311 0.365292
+1967.73 40.1103 0.224355
+1933.62 42.6033 0.0186297
+1895.39 43.1484 -0.250482
+1854.05 41.2793 -0.58191
+1810.92 36.5345 -0.97416
+1767.68 28.447 -1.41808
+1726.65 16.4906 -1.8669
+1691.7 -0.0840653 -2.09991
+1671.29 -22.7307 -1.04732
+1690.18 -55.1388 6.52801
+1834.7 -108.317 45.5762
+2421.39 -217.249 229.45
+4571.2 -492.569 1045.3
+11929.9 -1267.81 4465.27
+34885.3 -3471.69 17968.6
+97209 -9403.19 67807.5
+230886 -23732.1 236719
+390737 -52259 738100
+194380 -88458.4 1.8359e+06
+36507 -75939.6 1.58561e+06
+1532.65 -45620.8 882400
+1588.51 -25518 446430
+-384.601 -14330.3 241470
+-520.19 -7406.23 125468
+280.049 -3887.68 64056.3
+18.794 -2211.92 35515.2
+-108.696 -1139.3 18834.1
+48.2025 -569.71 9392.46
+16.6188 -333.465 5219.43
+-26.573 -172.939 2825.77
+7.35787 -78.1563 1351.77
+6.94586 -48.6596 757.432
+-6.47159 -27.8199 436.499
+0.491638 -10.7738 199.303
+2.39127 -6.93659 112.874
+-1.5552 -5.13313 76.5397
+-0.0883658 -1.88792 37.0507
+0.888489 -1.42572 26.3053
+-1.07929 -2.14407 31.3469
+0.312521 -1.54833 29.2285
+1.67555 -2.49366 47.0427
+-3.19054 -6.62692 98.2402
+-0.0350776 -8.93816 147.249
+7.8595 -14.8009 269.549
+-10.076 -37.7459 586.506
+-7.3596 -64.9513 1015.84
+34.8186 -106.996 1846.42
+-27.614 -238.323 3863.29
+-57.851 -455.023 7114.53
+151.948 -783.521 12926.9
+-50.258 -1579.98 26057.5
+-375.291 -3059.35 49141.3
+756.106 -5392.93 89276.8
+410.974 -10348 176564
+-2426.44 -20068.7 342177
+-2454.94 -35821.2 639444
+-54573.4 -64376.9 1.2808e+06
+-286755 -107649 2.32049e+06
+-573650 -125781 2.69606e+06
+-336976 -74544.7 1.0842e+06
+-140282 -33891 346268
+-49500.4 -13395.9 98203.9
+-16629.2 -4913.55 25582.5
+-6360.53 -1779.54 6195.96
+-3469.9 -690.165 1398.51
+-2724.07 -309.406 291.304
+-2561.25 -160.211 52.6837
+-2557.05 -86.4398 4.97628
+-2600.61 -39.7095 -3.39646
+-2661.49 -5.1811 -4.11777
+-2729.96 21.9389 -3.44789
+-2802.1 43.3825 -2.59562
+-2875.67 59.8793 -1.79573
+-2948.76 71.8199 -1.08178
+-3019.25 79.5111 -0.441541
+-3084.97 83.2864 0.13952
+-3143.88 83.5455 0.662552
+-3194.5 80.7539 1.1134
+-3236.04 75.4226 1.4688
+-3268.44 68.0786 1.7056
+-3292.31 59.2393 1.80868
+-3308.69 49.3921 1.77557
+-3318.83 38.9813 1.61715
+-3324.02 28.4025 1.35527
+-3325.43 18.0005 1.01859
+-3324 8.07008 0.638137
+-3320.5 -1.14228 0.24333
+-3315.5 -9.43668 -0.140661
+-3309.41 -16.6583 -0.494271
+-3302.56 -22.6965 -0.803748
+-3295.22 -27.4831 -1.06061
+-3287.66 -30.9912 -1.26071
+-3280.09 -33.2325 -1.4033
+-3272.77 -34.2539 -1.49009
+-3265.92 -34.1339 -1.52453
+-3259.75 -32.9775 -1.51118
+-3254.45 -30.9106 -1.45527
+-3250.17 -28.0743 -1.36247
+0 -24.6188 -1.23882
+4495.32 -9.92052 -0.563198
+4494.4 -16.1851 -0.764171
+4494.63 -22.6083 -0.964013
+4496.07 -28.9445 -1.15411
+4498.77 -34.9108 -1.32521
+4502.7 -40.1942 -1.46743
+4507.78 -44.461 -1.57045
+4513.87 -47.3691 -1.62398
+4520.75 -48.5815 -1.61841
+4528.15 -47.7828 -1.54569
+4535.7 -44.6966 -1.40035
+4542.92 -39.1047 -1.18073
+4549.19 -30.8668 -0.890146
+4553.78 -19.9395 -0.537988
+4555.71 -6.39665 -0.140397
+4553.87 9.55263 0.279695
+4546.92 27.5467 0.693435
+4533.38 47.0569 1.06794
+4511.73 67.3765 1.36909
+4480.55 87.6162 1.56496
+4438.7 106.708 1.62911
+4385.53 123.419 1.54308
+4321.09 136.389 1.29726
+4246.25 144.175 0.889877
+4162.77 145.322 0.324721
+4073.25 138.452 -0.390244
+3981.07 122.348 -1.2393
+3890.45 96.0237 -2.18132
+3806.93 58.7403 -3.08368
+3739.14 9.9011 -3.43344
+3704.82 -51.34 -0.918857
+3754.28 -127.235 15.5751
+4063.35 -224.817 99.1495
+5288.02 -365.793 493.688
+9806.77 -614.967 2262.9
+25565 -1158.33 9788.4
+75897.5 -2501.68 40016.9
+216228 -5905.25 153764
+526444 -14017 547630
+914280 -30358.5 1.7451e+06
+466730 -51600.9 4.4442e+06
+91344.9 -44880.5 3.95044e+06
+2773.59 -27628.2 2.2688e+06
+3417.89 -16238.5 1.16822e+06
+-368.679 -9348.08 638479
+-1305.75 -4753.82 339081
+526.862 -2540.44 174869
+139.803 -1509.71 96306.6
+-248.096 -761.879 51802.5
+70.5578 -371.313 26156.1
+55.8152 -227.087 14246
+-50.4107 -115.41 7798.76
+5.89517 -49.4645 3851.02
+16.134 -33.8094 2080.21
+-10.4937 -18.9635 1189.59
+-0.728104 -6.00574 581.045
+4.50211 -4.63919 316.28
+-2.33312 -3.75002 203.642
+-0.395232 -0.980126 109.339
+1.41718 -0.827071 76.2946
+-1.76516 -1.61358 82.1883
+0.76504 -0.878801 85.6287
+2.37459 -1.36559 137.249
+-5.83391 -4.83991 261.126
+1.85006 -5.91861 414.727
+12.1334 -8.48802 781.054
+-22.0947 -25.9316 1592.13
+-3.09393 -44.9006 2793.54
+63.2287 -68.0904 5243.76
+-83.0897 -160.297 10609.4
+-76.2702 -310.039 19371.3
+335.307 -511.894 35873.9
+-241.341 -1062.04 71257.2
+-679.171 -2090.87 132506
+1846.98 -3521.57 242152
+212.916 -6638.43 472872
+-5074.99 -13045.2 895042
+-4446.41 -22596.1 1.65283e+06
+-134291 -38413.8 3.24672e+06
+-678198 -62396.5 5.69479e+06
+-1.32312e+06 -71798.1 6.42917e+06
+-758048 -42409.5 2.52655e+06
+-308199 -19680.2 790190
+-106517 -8332.71 219891
+-35311.9 -3547.05 56322.1
+-13553.6 -1656.08 13444.8
+-7528.47 -896.172 3001.76
+-5978.05 -551.63 622.869
+-5626.16 -356.861 114.454
+-5601.68 -218.958 12.6232
+-5680.49 -106.951 -5.78714
+-5801.11 -11.1213 -7.74771
+-5943.08 71.155 -6.50664
+-6097.32 140.21 -4.69394
+-6257.98 195.773 -2.87797
+-6419.73 237.637 -1.18688
+-6576.99 265.933 0.361227
+-6724.13 281.233 1.76462
+-6856.15 284.534 3.00383
+-6969.35 277.179 4.0364
+-7061.7 260.744 4.80831
+-7132.95 236.93 5.27126
+-7184.32 207.462 5.39769
+-7218.09 174.012 5.18886
+-7237.1 138.153 4.67546
+-7244.32 101.321 3.91207
+-7242.5 64.7959 2.96814
+-7234.01 29.696 1.91834
+-7220.77 -3.03139 0.834122
+-7204.29 -32.6095 -0.222189
+-7185.72 -58.4329 -1.20061
+-7165.97 -80.065 -2.06429
+-7145.79 -97.2339 -2.78876
+-7125.79 -109.825 -3.36024
+-7106.54 -117.871 -3.77375
+-7088.53 -121.538 -4.03133
+-7072.21 -121.107 -4.14034
+-7057.96 -116.957 -4.11206
+-7046.08 -109.545 -3.96051
+-7036.78 -99.3804 -3.70165
+0 -87.0078 -3.35298
+6994.41 -18.8896 -0.81586
+6991.73 -30.9435 -1.07924
+6990.51 -43.3056 -1.33768
+6990.91 -55.5012 -1.57944
+6993.03 -66.9846 -1.79214
+6996.93 -77.1533 -1.96278
+7002.58 -85.3658 -2.07807
+7009.87 -90.9661 -2.12506
+7018.6 -93.3107 -2.09213
+7028.46 -91.8013 -1.97026
+7038.99 -85.9188 -1.75447
+7049.59 -75.261 -1.44545
+7059.43 -59.5804 -1.05127
+7067.43 -38.8215 -0.588696
+7072.21 -13.1569 -0.0839757
+7072.08 16.9795 0.427444
+7065.02 50.8637 0.90263
+7048.78 87.4594 1.29443
+7020.98 125.404 1.55617
+6979.4 163.008 1.64722
+6922.19 198.272 1.53842
+6848.24 228.926 1.21622
+6757.49 252.506 0.684277
+6651.11 266.469 -0.03787
+6531.63 268.345 -0.918056
+6402.86 255.944 -1.91346
+6269.79 227.582 -2.96488
+6138.71 182.305 -3.96929
+6017.87 120.069 -4.67791
+5920.15 41.7842 -4.24803
+5872.33 -50.9136 0.982469
+5951.71 -156.463 28.6293
+6434.16 -275.43 163.672
+8368.88 -415.471 800.822
+15625 -603.416 3681.21
+41331.2 -916.217 16058.8
+124652 -1563.39 66320.8
+360280 -3093.61 257617
+889025 -6773.06 928043
+1.56433e+06 -14556.1 2.99312e+06
+809314 -25396.7 7.72048e+06
+161198 -22834.6 6.97368e+06
+3732.04 -14705.8 4.07666e+06
+5636.12 -9087.31 2.12459e+06
+-78.779 -5214.57 1.17188e+06
+-2353.55 -2571.94 631299
+748.998 -1449.02 328169
+331.651 -901.888 180485
+-409.5 -423.377 97942.4
+85.6492 -199.317 49940.6
+111.793 -135.213 27024.4
+-77.251 -65.9671 14877.1
+-0.72303 -25.4466 7461.55
+28.9307 -20.559 3972.86
+-13.4289 -11.1329 2269.82
+-3.53733 -2.34528 1145.88
+6.76208 -2.71076 612.187
+-2.56862 -2.3956 384.78
+-0.938814 -0.261067 217.903
+1.70989 -0.354797 150.848
+-2.22191 -1.08842 154.272
+1.44371 -0.362422 169.858
+2.37739 -0.454278 271.824
+-8.58097 -3.10109 492.788
+5.58591 -3.42174 803.406
+14.7652 -3.59819 1532.86
+-38.1745 -15.4505 3027.38
+7.75136 -27.2046 5329.25
+93.7889 -35.7831 10120.5
+-158.998 -93.532 20142.5
+-83.3686 -185.593 36612.6
+539.83 -278.271 68162.2
+-524.889 -603.389 133878
+-934.862 -1267.44 246744
+3255.45 -2033.21 451122
+-397.933 -3649.87 872403
+-8210.88 -7385.17 1.62595e+06
+-6074.04 -12805 2.97169e+06
+-233670 -20692.4 5.76012e+06
+-1.1606e+06 -32112.2 9.92117e+06
+-2.23542e+06 -35764.6 1.10238e+07
+-1.26473e+06 -20618.5 4.279e+06
+-507589 -9682.08 1.32296e+06
+-172986 -4472.43 364149
+-56471.6 -2286.44 92298.7
+-21379.8 -1361.09 21813.7
+-11815.3 -921.963 4828.86
+-9395.26 -664.9 999.536
+-8853.66 -473.614 188.022
+-8814.39 -305.664 25.2015
+-8930.37 -148.206 -5.79844
+-9108.31 -0.0614286 -10.7598
+-9317.68 135.797 -10.3605
+-9544.92 255.441 -8.69482
+-9781.15 355.38 -6.68184
+-10018.2 433.164 -4.56772
+-10247.4 487.615 -2.42884
+-10460.2 518.812 -0.314205
+-10649.2 527.937 1.70303
+-10808.7 517.036 3.51837
+-10936 488.752 5.01412
+-11031 446.084 6.08616
+-11096 392.172 6.66681
+-11134.7 330.141 6.7372
+-11151.8 262.981 6.32779
+-11152.2 193.474 5.50957
+-11140.4 124.139 4.38005
+-11120.1 57.1975 3.0479
+-11094.6 -5.44627 1.61965
+-11066.1 -62.2191 0.190092
+-11036.4 -111.886 -1.16309
+-11006.9 -153.55 -2.38108
+-10978.5 -186.647 -3.4231
+-10951.9 -210.927 -4.26424
+-10927.8 -226.438 -4.89287
+-10906.7 -233.492 -5.308
+-10888.8 -232.633 -5.51691
+-10874.3 -224.597 -5.53309
+-10863.6 -210.27 -5.3744
+-10856.5 -190.646 -5.06191
+0 -166.782 -4.61924
+9031.44 -23.8423 -0.769804
+9025.16 -39.1046 -0.919879
+9019.81 -54.7581 -1.0573
+9015.65 -70.1997 -1.17428
+9012.91 -84.7373 -1.26332
+9011.78 -97.607 -1.31709
+9012.42 -107.998 -1.32858
+9014.91 -115.082 -1.29163
+9019.28 -118.051 -1.20175
+9025.44 -116.157 -1.05731
+9033.16 -108.757 -0.860813
+9042.01 -95.3628 -0.620459
+9051.32 -75.6857 -0.351625
+9060.06 -49.6862 -0.0780008
+9066.8 -17.6162 0.168104
+9069.67 19.9419 0.346774
+9066.31 62.043 0.413295
+9053.97 107.358 0.322901
+9029.67 154.163 0.0372536
+8990.47 200.35 -0.468171
+8933.79 243.452 -1.19712
+8857.85 280.713 -2.12773
+8762.05 309.19 -3.21151
+8647.24 325.911 -4.37676
+8515.82 328.092 -5.53543
+8371.77 313.413 -6.58916
+8220.47 280.336 -7.42642
+8068.97 228.43 -7.89275
+7926.91 158.64 -7.66753
+7810.03 73.3983 -5.69828
+7752.31 -23.5521 2.67822
+7853.97 -127.835 40.3885
+8478.28 -235.878 219.827
+11024.9 -347.405 1069.3
+20713.9 -469.474 4941.19
+55428 -624.953 21713.6
+168970 -880.797 90315.5
+492574 -1448.65 353149
+1.22416e+06 -2943.39 1.28014e+06
+2.16778e+06 -6594.36 4.15384e+06
+1.12776e+06 -12525.9 1.07811e+07
+225461 -12012.9 9.8212e+06
+4351.94 -8107.96 5.79969e+06
+7929.61 -5054.93 3.05178e+06
+226.372 -2822.74 1.69855e+06
+-3450.79 -1407.44 924342
+949.018 -863.017 483830
+548.951 -528.597 266875
+-562.371 -218.233 145916
+95.7296 -107.913 74985.7
+169.439 -86.5785 40555.4
+-103.916 -38.7656 22418.2
+-8.77661 -11.8732 11345.5
+43.0613 -12.1487 6016.05
+-15.7478 -6.80334 3443.83
+-7.14793 -1.0273 1767.62
+9.07695 -1.6668 936.758
+-2.41308 -1.43928 583.548
+-1.63637 0.0466227 339.886
+1.80256 -0.158323 234.461
+-2.48962 -0.735801 233.633
+2.28911 -0.161336 264.065
+1.91691 -0.0457084 422.316
+-11.4006 -1.88502 746.197
+10.2082 -2.10407 1227.98
+16.6887 -1.73423 2355.04
+-55.7375 -9.52737 4578.66
+19.741 -16.1212 8051.34
+123.975 -17.7149 15324.5
+-235.029 -56.6796 30213.4
+-86.486 -119.633 54714.7
+727.517 -153.881 101804
+-833.216 -324.992 198194
+-1161.19 -762.968 362455
+4696.41 -1237.77 660189
+-1008.6 -2062.41 1.26642e+06
+-11440.8 -4135.93 2.33479e+06
+-7289.56 -7357.76 4.22568e+06
+-323323 -11854.4 8.1073e+06
+-1.60066e+06 -17744.1 1.38236e+07
+-3.06737e+06 -18774.2 1.52359e+07
+-1.72507e+06 -10088.7 5.88017e+06
+-687554 -4590.18 1.80773e+06
+-232307 -2275.17 494605
+-75021 -1377.27 124528
+-28105.3 -982.339 29205.5
+-15480 -760.61 6410.78
+-12342.4 -597.712 1318.55
+-11660.9 -449.102 250.435
+-11621.2 -297.942 37.2434
+-11772 -141.356 -4.83897
+-11993.7 16.4956 -13.647
+-12247.8 168.627 -15.5266
+-12517.6 307.703 -15.5138
+-12793 427.4 -14.6788
+-13064.6 523.078 -13.2886
+-13322.7 592.015 -11.4279
+-13557.5 633.351 -9.17316
+-13760.6 647.835 -6.65208
+-13926.3 637.491 -4.04687
+-14052.2 605.244 -1.56503
+-14139 554.591 0.600071
+-14190.6 489.311 2.30237
+-14212.6 413.254 3.4616
+-14211.5 330.171 4.06572
+-14194 243.601 4.16048
+-14165.9 156.79 3.83176
+-14132.1 72.6286 3.18598
+-14096.6 -6.38223 2.33284
+-14062.1 -78.1647 1.37277
+-14030.4 -141.078 0.389733
+-14002.7 -193.923 -0.551238
+-13979.6 -235.936 -1.40339
+-13961.3 -266.772 -2.13581
+-13948.1 -286.471 -2.73051
+-13939.6 -295.423 -3.17956
+-13935.6 -294.319 -3.48265
+-13936 -284.099 -3.64489
+-13940.1 -265.895 -3.67517
+-13947.6 -240.979 -3.58511
+0 -210.699 -3.38878
+10396.1 -20.1107 -0.452865
+10385.2 -32.9979 -0.345265
+10374.1 -46.2151 -0.215262
+10363.1 -59.252 -0.0650288
+10352.5 -71.5232 0.101321
+10342.9 -82.3833 0.278205
+10334.4 -91.1479 0.458814
+10327.6 -97.12 0.63506
+10322.9 -99.6206 0.797269
+10320.5 -98.0247 0.933653
+10320.6 -91.7995 1.02959
+10323.3 -80.5448 1.06675
+10328.4 -64.0341 1.02227
+10335.1 -42.253 0.86827
+10342.2 -15.4355 0.572323
+10348.2 15.9055 0.0993195
+10350.5 50.9544 -0.584737
+10346.2 88.5784 -1.50684
+10332.1 127.324 -2.67939
+10304.5 165.43 -4.09182
+10260.3 200.857 -5.70328
+10197 231.352 -7.43843
+10113.1 254.54 -9.18846
+10008.8 268.062 -10.8185
+9885.62 269.769 -12.1801
+9746.98 257.959 -13.1244
+9597.77 231.649 -13.5061
+9444.78 190.855 -13.1574
+9297.97 136.811 -11.7585
+9174.59 72.0564 -8.20927
+9113.24 0.269058 2.64726
+9229.38 -74.2722 46.9758
+9945.14 -147.679 255.299
+12902 -217.747 1247.89
+24271.1 -284.995 5807.68
+65329.3 -353.554 25685.7
+200407 -439.428 107387
+587082 -619.892 421603
+1.46441e+06 -1192.94 1.53327e+06
+2.60066e+06 -2876.2 4.98912e+06
+1.35534e+06 -5994.49 1.29837e+07
+270795 -6009.18 1.18805e+07
+5096.39 -4076.96 7.06047e+06
+9858.82 -2494.26 3.74613e+06
+271.455 -1414.22 2.10193e+06
+-4340.65 -782.446 1.15208e+06
+1172.16 -514.059 606878
+733.497 -289.907 336597
+-700.567 -107.212 185206
+101.121 -64.5489 95689.1
+219.641 -57.5664 51849
+-125.092 -22.6587 28783.2
+-15.4876 -4.49254 14660.3
+54.9347 -6.37757 7774.09
+-17.9627 -4.15034 4458.83
+-10.2924 -0.73374 2307.64
+11.2856 -0.966674 1220.68
+-2.21345 -0.728487 759.39
+-2.34697 0.096548 448.602
+1.81483 -0.114127 308.982
+-2.67995 -0.482055 304.221
+3.16007 -0.122679 347.65
+1.45798 0.0539092 555.879
+-14.1275 -0.975985 969.523
+14.191 -1.23652 1597.49
+18.7442 -1.19147 3065.03
+-70.5256 -5.78949 5912.7
+29.161 -8.54773 10378.4
+148.038 -7.58824 19728.2
+-299.827 -33.8799 38639.3
+-87.2264 -79.4 69685.4
+895.468 -92.3285 129306
+-1089.29 -166.167 250207
+-1430.42 -426.767 454569
+5844.03 -745.416 822903
+-1213.45 -1175.51 1.56747e+06
+-14174.1 -2157.56 2.86817e+06
+-8705.85 -3780.49 5.14765e+06
+-385774 -6225.5 9.79421e+06
+-1.91118e+06 -9390.65 1.66016e+07
+-3.65746e+06 -9723.68 1.82272e+07
+-2.05167e+06 -4934.84 7.01929e+06
+-814789 -2147.23 2.15269e+06
+-273901 -1104.1 587142
+-87887.3 -745.835 147195
+-32772.2 -589.785 34318.5
+-18086.3 -489.825 7474.22
+-14492.3 -403.091 1523.82
+-13735 -312.428 288.706
+-13705 -210.898 44.601
+-13882.8 -98.5772 -4.4325
+-14131.3 19.9747 -16.4791
+-14406.6 138.116 -21.0077
+-14690.4 248.916 -23.3671
+-14972.2 346.293 -24.5512
+-15242.8 425.626 -24.7228
+-15492.8 483.994 -23.8932
+-15712.9 520.14 -22.111
+-15895.4 534.267 -19.5237
+-16035.2 527.742 -16.372
+-16131.3 502.775 -12.9471
+-16186.1 462.133 -9.53737
+-16205.1 408.887 -6.38302
+-16195.9 346.219 -3.64995
+-16166.6 277.277 -1.42344
+-16125.3 205.06 0.28228
+-16079 132.346 1.50515
+-16033.2 61.6283 2.31371
+-15992.1 -4.92612 2.78784
+-15958.3 -65.5063 3.00471
+-15933.2 -118.677 3.03077
+-15917.4 -163.384 2.91891
+-15910.7 -198.953 2.70911
+-15912.5 -225.07 2.43091
+-15921.9 -241.758 2.10616
+-15937.8 -249.344 1.75155
+-15959.1 -248.411 1.38059
+-15984.5 -239.759 1.00499
+-16012.8 -224.352 0.6357
+-16043 -203.27 0.282974
+0 -177.662 -0.0442663
+11133.6 -7.8674 -0.0940098
+11118.9 -12.9105 0.270818
+11102.8 -18.0827 0.666132
+11085.7 -23.1839 1.07958
+11068.1 -27.9848 1.49533
+11050.5 -32.2329 1.89486
+11033.5 -35.6603 2.25768
+11017.9 -37.9946 2.56175
+11004.3 -38.971 2.78381
+10993.4 -38.3463 2.89951
+10985.9 -35.914 2.8834
+10982.1 -31.5202 2.70881
+10982.3 -25.0797 2.34765
+10986.1 -16.5911 1.77073
+10992.9 -6.15041 0.948775
+11000.9 6.03721 -0.144998
+11008 19.6489 -1.5305
+11011.3 34.2392 -3.2143
+11007.1 49.2396 -5.18157
+10991.7 63.9649 -7.38759
+10961.3 77.6265 -9.75075
+10912.9 89.3575 -12.1495
+10844.3 98.2509 -14.426
+10754.9 103.415 -16.3968
+10645.6 104.05 -17.8711
+10519 99.5375 -18.67
+10379.2 89.5536 -18.6367
+10232.7 74.1709 -17.6157
+10089.1 53.944 -15.3233
+9966.24 29.9364 -10.6968
+9905.03 3.64876 1.5561
+10028.4 -23.1949 49.0284
+10788 -49.015 271.236
+13951.5 -72.7998 1336.52
+26199.5 -94.2754 6259.16
+70658 -113.644 27811.5
+217436 -133.206 116659
+638593 -172.401 459046
+1.59568e+06 -320.911 1.67205e+06
+2.837e+06 -811.074 5.44676e+06
+1.47899e+06 -1771.7 1.41886e+07
+295257 -1798.78 1.30116e+07
+5836.64 -1207.06 7.76235e+06
+10969.2 -738.603 4.14311e+06
+56.4388 -446.278 2.33755e+06
+-4877.4 -276.791 1.28667e+06
+1383.18 -186.326 681082
+843.482 -98.4079 379757
+-809.847 -35.6784 209838
+103.725 -25.0098 108725
+256.859 -22.2315 59042.7
+-137.057 -8.03862 32905.2
+-19.9813 -1.05949 16834.9
+62.0606 -2.00293 8935.45
+-19.7485 -1.49436 5129.68
+-12.1205 -0.326521 2665.31
+12.9794 -0.322559 1411.46
+-2.15729 -0.212484 879.212
+-2.90627 0.0385746 522.444
+1.81459 -0.0547756 359.463
+-2.81797 -0.182251 352.224
+3.85321 -0.0597649 404.055
+1.25136 0.0260373 646.311
+-16.2382 -0.291357 1121.15
+16.5076 -0.419079 1844.61
+20.5681 -0.505491 3533.14
+-79.4463 -2.07441 6790.61
+35.1725 -2.71614 11906.9
+161.553 -2.06581 22596.2
+-347.23 -12.0864 44055.6
+-87.2994 -30.4987 79147.2
+1029.49 -35.3394 146465
+-1240.45 -55.556 282485
+-1697.46 -145.08 510955
+6523.16 -269.287 919766
+-1011.85 -417.465 1.74288e+06
+-15762.2 -697.223 3.17533e+06
+-10022.5 -1154.81 5.66764e+06
+-419460 -1902.49 1.07228e+07
+-2.07959e+06 -2918.49 1.81164e+07
+-3.97959e+06 -3029.19 1.98581e+07
+-2.23034e+06 -1511.29 7.64293e+06
+-884232 -645.723 2.34197e+06
+-296442 -337.389 637824
+-94812.6 -238.907 159506
+-35321.2 -196.971 37044.5
+-19574.8 -168.323 8021.64
+-15763.6 -141.34 1623.12
+-14979.8 -111.182 305.599
+-14962 -75.753 47.6122
+-15157.1 -35.2477 -4.52
+-15419.4 8.50008 -18.5127
+-15701.9 52.8358 -25.0217
+-15985.7 94.96 -29.3592
+-16260.2 132.381 -32.3628
+-16516.9 163.171 -34.0561
+-16747.2 186.074 -34.3493
+-16942.6 200.497 -33.2353
+-17096.3 206.434 -30.8504
+-17204.5 204.349 -27.4618
+-17267.4 195.057 -23.4143
+-17289 179.6 -19.0648
+-17276.3 159.155 -14.7278
+-17238 134.956 -10.6426
+-17183.8 108.227 -6.96228
+-17122.6 80.148 -3.76198
+-17062 51.8119 -1.05684
+-17008 24.2059 1.17599
+-16964.7 -1.80981 2.97772
+-16934.4 -25.5146 4.39361
+-16918 -46.3361 5.46484
+-16915.5 -63.8534 6.22579
+-16925.9 -77.7955 6.70469
+-16947.6 -88.0355 6.92602
+-16979.1 -94.5802 6.91302
+-17018.1 -97.5558 6.68958
+-17062.9 -97.1919 6.28151
+-17111.4 -93.8023 5.71711
+-17161.7 -87.766 5.02716
+-17212.1 -79.5073 4.24412
+0 -69.4773 3.40039
+11361.5 7.86739 0.05978
+11345.3 12.9105 0.530947
+11327.3 18.0827 1.03572
+11307.8 23.1839 1.55751
+11287.4 27.9848 2.0756
+11266.6 32.2329 2.56612
+11246.2 35.6603 3.00294
+11227 37.9946 3.35829
+11209.8 38.971 3.60338
+11195.4 38.3463 3.70879
+11184.6 35.914 3.64482
+11178.2 31.5202 3.38157
+11176.3 25.0797 2.88921
+11178.9 16.5911 2.13839
+11185.3 6.15041 1.10167
+11194 -6.03721 -0.243792
+11203 -19.6489 -1.91158
+11209.2 -34.2392 -3.89943
+11209.1 -49.2396 -6.1811
+11198.7 -63.9649 -8.69791
+11174.1 -77.6265 -11.352
+11132 -89.3575 -14.004
+11070 -98.2509 -16.4774
+10987.2 -103.415 -18.5709
+10884.2 -104.05 -20.0793
+10763.2 -99.5375 -20.8142
+10628.1 -89.5536 -20.6176
+10485.1 -74.1709 -19.3424
+10343.7 -53.944 -16.7245
+10222 -29.9364 -11.7274
+10161.2 -3.64876 0.951699
+10286.5 23.1949 49.2595
+11057.9 49.015 275.228
+14279.8 72.7998 1361.29
+26785.3 94.2754 6391.1
+72260.8 113.644 28447
+222579 133.206 119463
+654217 172.401 470433
+1.63556e+06 320.911 1.71431e+06
+2.90874e+06 811.074 5.58602e+06
+1.51637e+06 1771.7 1.45547e+07
+302628 1798.78 1.33562e+07
+6127.29 1207.06 7.9784e+06
+11278.7 738.603 4.26767e+06
+-90.8388 446.278 2.41245e+06
+-5051.03 276.791 1.32973e+06
+1473.28 186.326 705187
+877.192 98.4079 394059
+-853.449 35.6784 218062
+104.721 25.0098 113080
+271.337 22.2315 61467.9
+-140.573 8.03862 34314.3
+-21.6269 1.05949 17585.5
+64.2902 2.00293 9337.63
+-20.4383 1.49436 5361.7
+-12.6561 0.32652 2789.2
+13.6298 0.322559 1478.37
+-2.16891 0.212485 921.634
+-3.12548 -0.0385748 548.437
+1.81456 0.0547752 377.156
+-2.86984 0.182251 369.101
+4.12564 0.0597638 423.788
+1.21702 -0.0260375 678.093
+-17.0523 0.291362 1174.71
+17.1892 0.419069 1931.02
+21.3008 0.505457 3694.85
+-82.2467 2.07438 7093.45
+37.3222 2.71614 12434.4
+165.48 2.06581 23581.8
+-365.566 12.0864 45899.2
+-87.5393 30.4987 82322.7
+1083.43 35.3395 152168
+-1286.64 55.556 293199
+-1813.56 145.08 529523
+6739.33 269.287 951001
+-844.624 417.465 1.79854e+06
+-16210 697.223 3.27219e+06
+-10529.6 1154.81 5.82969e+06
+-429682 1902.49 1.10075e+07
+-2.1308e+06 2918.49 1.85779e+07
+-4.07801e+06 3029.19 2.03554e+07
+-2.28503e+06 1511.29 7.83381e+06
+-905463 645.723 2.40004e+06
+-303300 337.389 653356
+-96912 238.907 163256
+-36105.8 196.971 37863.2
+-20050.5 168.323 8181.44
+-16180.7 141.34 1650.55
+-15392.3 111.182 309.84
+-15380.1 75.753 48.304
+-15581.4 35.2477 -4.60528
+-15847.9 -8.50007 -19.2234
+-16131.9 -52.8358 -26.4528
+-16414.2 -94.96 -31.5486
+-16684.4 -132.381 -35.2743
+-16934.1 -163.171 -37.5916
+-17155.1 -186.074 -38.3646
+-17339.3 -200.497 -37.558
+-17480.4 -206.434 -35.2988
+-17575.1 -204.349 -31.8601
+-17624.1 -195.057 -27.6041
+-17631.9 -179.6 -22.9122
+-17606.2 -159.155 -18.1269
+-17556.4 -134.956 -13.5158
+-17492.3 -108.227 -9.25949
+-17423.4 -80.148 -5.45843
+-17357.5 -51.8119 -2.15056
+-17300.5 -24.2059 0.666893
+-17256.7 1.80981 3.0178
+-17228.1 25.5146 4.9329
+-17215.6 46.3361 6.44176
+-17218.7 63.8534 7.5701
+-17236.2 77.7955 8.34055
+-17266.2 88.0355 8.77497
+-17306.6 94.5802 8.89677
+-17355.1 97.5558 8.73262
+-17409.3 97.1919 8.31331
+-17467.1 93.8023 7.67399
+-17526.2 87.766 6.85369
+-17584.7 79.5073 5.89412
+0 69.4773 4.83749
+11133.6 20.1107 -0.0940103
+11118.9 32.9979 0.270819
+11102.8 46.2151 0.666132
+11085.7 59.252 1.07958
+11068.1 71.5232 1.49533
+11050.5 82.3833 1.89486
+11033.5 91.1479 2.25768
+11017.9 97.12 2.56175
+11004.3 99.6206 2.78381
+10993.4 98.0247 2.89951
+10985.9 91.7995 2.8834
+10982.1 80.5448 2.70881
+10982.3 64.0341 2.34765
+10986.1 42.253 1.77073
+10992.9 15.4355 0.948776
+11000.9 -15.9055 -0.144997
+11008 -50.9544 -1.5305
+11011.3 -88.5784 -3.2143
+11007.1 -127.324 -5.18157
+10991.7 -165.43 -7.38759
+10961.3 -200.857 -9.75075
+10912.9 -231.352 -12.1495
+10844.3 -254.54 -14.426
+10754.9 -268.062 -16.3968
+10645.6 -269.769 -17.8711
+10519 -257.959 -18.67
+10379.2 -231.649 -18.6367
+10232.7 -190.855 -17.6157
+10089.1 -136.811 -15.3233
+9966.24 -72.0563 -10.6968
+9905.03 -0.269056 1.5561
+10028.4 74.2722 49.0284
+10788 147.679 271.236
+13951.5 217.747 1336.52
+26199.5 284.995 6259.16
+70658 353.554 27811.5
+217436 439.428 116659
+638593 619.892 459046
+1.59568e+06 1192.94 1.67205e+06
+2.837e+06 2876.2 5.44676e+06
+1.47899e+06 5994.49 1.41886e+07
+295257 6009.18 1.30116e+07
+5836.64 4076.96 7.76235e+06
+10969.2 2494.26 4.14311e+06
+56.4388 1414.22 2.33755e+06
+-4877.4 782.446 1.28667e+06
+1383.18 514.059 681082
+843.482 289.907 379757
+-809.847 107.212 209838
+103.725 64.5489 108725
+256.859 57.5664 59042.7
+-137.057 22.6587 32905.2
+-19.9813 4.49254 16834.9
+62.0606 6.37757 8935.45
+-19.7485 4.15034 5129.68
+-12.1205 0.73374 2665.31
+12.9794 0.966674 1411.46
+-2.15729 0.728488 879.212
+-2.90627 -0.0965481 522.444
+1.81459 0.114127 359.463
+-2.81797 0.482055 352.224
+3.85321 0.122679 404.055
+1.25137 -0.0539098 646.311
+-16.2382 0.975974 1121.15
+16.5075 1.23649 1844.61
+20.5681 1.19145 3533.14
+-79.4463 5.7895 6790.61
+35.1725 8.5477 11906.9
+161.553 7.58823 22596.2
+-347.23 33.8799 44055.6
+-87.2993 79.4 79147.2
+1029.49 92.3285 146465
+-1240.45 166.167 282485
+-1697.46 426.767 510955
+6523.16 745.416 919766
+-1011.85 1175.51 1.74288e+06
+-15762.2 2157.56 3.17533e+06
+-10022.5 3780.49 5.66764e+06
+-419460 6225.5 1.07228e+07
+-2.07959e+06 9390.65 1.81164e+07
+-3.97959e+06 9723.68 1.98581e+07
+-2.23034e+06 4934.84 7.64293e+06
+-884232 2147.23 2.34197e+06
+-296442 1104.1 637824
+-94812.6 745.835 159506
+-35321.2 589.785 37044.5
+-19574.8 489.825 8021.64
+-15763.6 403.091 1623.12
+-14979.8 312.428 305.599
+-14962 210.898 47.6122
+-15157.1 98.5772 -4.52
+-15419.4 -19.9747 -18.5127
+-15701.9 -138.116 -25.0217
+-15985.7 -248.916 -29.3592
+-16260.2 -346.293 -32.3628
+-16516.9 -425.626 -34.0561
+-16747.2 -483.994 -34.3493
+-16942.6 -520.14 -33.2353
+-17096.3 -534.267 -30.8504
+-17204.5 -527.742 -27.4618
+-17267.4 -502.775 -23.4143
+-17289 -462.133 -19.0648
+-17276.3 -408.887 -14.7278
+-17238 -346.219 -10.6426
+-17183.8 -277.277 -6.96228
+-17122.6 -205.06 -3.76198
+-17062 -132.346 -1.05684
+-17008 -61.6283 1.17599
+-16964.7 4.92612 2.97772
+-16934.4 65.5063 4.3936
+-16918 118.677 5.46484
+-16915.5 163.384 6.22579
+-16925.9 198.953 6.70468
+-16947.6 225.07 6.92602
+-16979.1 241.758 6.91302
+-17018.1 249.344 6.68959
+-17062.9 248.411 6.28151
+-17111.4 239.759 5.71711
+-17161.7 224.352 5.02716
+-17212.1 203.27 4.24412
+0 177.662 3.40039
+10396.1 23.8423 -0.452865
+10385.2 39.1046 -0.345265
+10374.1 54.7581 -0.215262
+10363.1 70.1997 -0.0650288
+10352.5 84.7373 0.101321
+10342.9 97.607 0.278205
+10334.4 107.998 0.458814
+10327.6 115.082 0.635061
+10322.9 118.051 0.797268
+10320.5 116.157 0.933652
+10320.6 108.757 1.02959
+10323.3 95.3628 1.06675
+10328.4 75.6857 1.02227
+10335.1 49.6862 0.868271
+10342.2 17.6162 0.572324
+10348.2 -19.9419 0.0993197
+10350.5 -62.043 -0.584737
+10346.2 -107.358 -1.50684
+10332.1 -154.163 -2.67939
+10304.5 -200.35 -4.09182
+10260.3 -243.452 -5.70328
+10197 -280.713 -7.43843
+10113.1 -309.19 -9.18846
+10008.8 -325.911 -10.8185
+9885.62 -328.092 -12.1801
+9746.98 -313.413 -13.1244
+9597.77 -280.336 -13.5061
+9444.78 -228.43 -13.1574
+9297.97 -158.64 -11.7585
+9174.59 -73.3983 -8.20927
+9113.24 23.5521 2.64726
+9229.38 127.835 46.9758
+9945.14 235.878 255.299
+12902 347.405 1247.89
+24271.1 469.474 5807.68
+65329.3 624.953 25685.7
+200407 880.797 107387
+587082 1448.65 421603
+1.46441e+06 2943.39 1.53327e+06
+2.60066e+06 6594.36 4.98912e+06
+1.35534e+06 12525.9 1.29837e+07
+270795 12012.9 1.18805e+07
+5096.39 8107.96 7.06047e+06
+9858.82 5054.93 3.74613e+06
+271.455 2822.74 2.10193e+06
+-4340.65 1407.44 1.15208e+06
+1172.16 863.017 606878
+733.497 528.597 336597
+-700.567 218.233 185206
+101.121 107.913 95689.1
+219.641 86.5785 51849
+-125.092 38.7656 28783.2
+-15.4876 11.8732 14660.3
+54.9347 12.1487 7774.09
+-17.9627 6.80334 4458.83
+-10.2924 1.0273 2307.64
+11.2856 1.6668 1220.68
+-2.21345 1.43928 759.39
+-2.34697 -0.0466221 448.602
+1.81483 0.158324 308.982
+-2.67995 0.735801 304.221
+3.16007 0.161337 347.65
+1.45796 0.0457099 555.879
+-14.1275 1.88501 969.523
+14.191 2.10406 1597.49
+18.7442 1.73421 3065.03
+-70.5257 9.52734 5912.7
+29.161 16.1212 10378.4
+148.038 17.7149 19728.2
+-299.827 56.6795 38639.3
+-87.2264 119.633 69685.4
+895.468 153.881 129306
+-1089.29 324.992 250207
+-1430.42 762.968 454569
+5844.03 1237.77 822903
+-1213.45 2062.41 1.56747e+06
+-14174.1 4135.93 2.86817e+06
+-8705.85 7357.76 5.14765e+06
+-385774 11854.4 9.79421e+06
+-1.91118e+06 17744.1 1.66016e+07
+-3.65746e+06 18774.2 1.82272e+07
+-2.05167e+06 10088.7 7.01929e+06
+-814789 4590.18 2.15269e+06
+-273901 2275.17 587142
+-87887.3 1377.27 147195
+-32772.2 982.339 34318.5
+-18086.3 760.61 7474.22
+-14492.3 597.712 1523.82
+-13735 449.102 288.706
+-13705 297.942 44.601
+-13882.8 141.356 -4.4325
+-14131.3 -16.4956 -16.4791
+-14406.6 -168.627 -21.0077
+-14690.4 -307.703 -23.3671
+-14972.2 -427.4 -24.5512
+-15242.8 -523.078 -24.7228
+-15492.8 -592.015 -23.8932
+-15712.9 -633.351 -22.111
+-15895.4 -647.835 -19.5237
+-16035.2 -637.491 -16.372
+-16131.3 -605.244 -12.9471
+-16186.1 -554.591 -9.53737
+-16205.1 -489.311 -6.38302
+-16195.9 -413.254 -3.64995
+-16166.6 -330.171 -1.42344
+-16125.3 -243.601 0.28228
+-16079 -156.79 1.50515
+-16033.2 -72.6286 2.31371
+-15992.1 6.38223 2.78784
+-15958.3 78.1647 3.00471
+-15933.2 141.078 3.03077
+-15917.4 193.923 2.91891
+-15910.7 235.936 2.70911
+-15912.5 266.772 2.43091
+-15921.9 286.471 2.10616
+-15937.8 295.423 1.75155
+-15959.1 294.319 1.38059
+-15984.5 284.099 1.00499
+-16012.8 265.895 0.635701
+-16043 240.979 0.282974
+0 210.699 -0.0442658
+9031.44 18.8896 -0.769804
+9025.16 30.9435 -0.919878
+9019.81 43.3056 -1.0573
+9015.65 55.5012 -1.17428
+9012.91 66.9846 -1.26332
+9011.78 77.1533 -1.31709
+9012.42 85.3658 -1.32858
+9014.91 90.9661 -1.29163
+9019.28 93.3107 -1.20175
+9025.44 91.8013 -1.05731
+9033.16 85.9188 -0.860813
+9042.01 75.261 -0.620458
+9051.32 59.5804 -0.351625
+9060.06 38.8215 -0.0780006
+9066.8 13.1569 0.168103
+9069.67 -16.9795 0.346774
+9066.31 -50.8637 0.413294
+9053.97 -87.4594 0.322901
+9029.67 -125.404 0.0372534
+8990.47 -163.008 -0.468171
+8933.79 -198.272 -1.19712
+8857.85 -228.926 -2.12773
+8762.05 -252.506 -3.21151
+8647.24 -266.469 -4.37676
+8515.82 -268.345 -5.53543
+8371.77 -255.944 -6.58916
+8220.47 -227.582 -7.42642
+8068.97 -182.305 -7.89275
+7926.91 -120.069 -7.66753
+7810.03 -41.7842 -5.69828
+7752.31 50.9136 2.67822
+7853.97 156.463 40.3885
+8478.28 275.43 219.827
+11024.9 415.471 1069.3
+20713.9 603.416 4941.19
+55428 916.217 21713.6
+168970 1563.39 90315.5
+492574 3093.61 353149
+1.22416e+06 6773.06 1.28014e+06
+2.16778e+06 14556.1 4.15384e+06
+1.12776e+06 25396.7 1.07811e+07
+225461 22834.6 9.8212e+06
+4351.94 14705.8 5.79969e+06
+7929.61 9087.31 3.05178e+06
+226.372 5214.57 1.69855e+06
+-3450.79 2571.94 924342
+949.018 1449.02 483830
+548.951 901.888 266875
+-562.371 423.377 145916
+95.7296 199.317 74985.7
+169.439 135.213 40555.4
+-103.916 65.9671 22418.2
+-8.77661 25.4466 11345.5
+43.0613 20.559 6016.05
+-15.7478 11.1329 3443.83
+-7.14793 2.34528 1767.62
+9.07695 2.71076 936.758
+-2.41308 2.3956 583.548
+-1.63637 0.261068 339.886
+1.80256 0.354798 234.461
+-2.48962 1.08842 233.633
+2.28911 0.362421 264.065
+1.91691 0.454277 422.316
+-11.4006 3.1011 746.197
+10.2082 3.42174 1227.98
+16.6887 3.59818 2355.04
+-55.7375 15.4505 4578.66
+19.741 27.2046 8051.34
+123.975 35.7831 15324.5
+-235.029 93.532 30213.4
+-86.4859 185.593 54714.7
+727.517 278.271 101804
+-833.216 603.389 198194
+-1161.19 1267.44 362455
+4696.41 2033.21 660189
+-1008.6 3649.87 1.26642e+06
+-11440.8 7385.17 2.33479e+06
+-7289.56 12805 4.22568e+06
+-323323 20692.4 8.1073e+06
+-1.60066e+06 32112.2 1.38236e+07
+-3.06737e+06 35764.6 1.52359e+07
+-1.72507e+06 20618.5 5.88017e+06
+-687554 9682.08 1.80773e+06
+-232307 4472.43 494605
+-75021 2286.44 124528
+-28105.3 1361.09 29205.5
+-15480 921.963 6410.78
+-12342.4 664.9 1318.55
+-11660.9 473.614 250.435
+-11621.2 305.664 37.2434
+-11772 148.206 -4.83897
+-11993.7 0.0614286 -13.647
+-12247.8 -135.797 -15.5266
+-12517.6 -255.441 -15.5138
+-12793 -355.38 -14.6788
+-13064.6 -433.164 -13.2886
+-13322.7 -487.615 -11.4279
+-13557.5 -518.812 -9.17316
+-13760.6 -527.937 -6.65208
+-13926.3 -517.036 -4.04687
+-14052.2 -488.752 -1.56503
+-14139 -446.084 0.600071
+-14190.6 -392.172 2.30237
+-14212.6 -330.141 3.4616
+-14211.5 -262.981 4.06572
+-14194 -193.474 4.16048
+-14165.9 -124.139 3.83176
+-14132.1 -57.1975 3.18598
+-14096.6 5.44627 2.33284
+-14062.1 62.2191 1.37277
+-14030.4 111.886 0.389733
+-14002.7 153.55 -0.551238
+-13979.6 186.647 -1.40339
+-13961.3 210.927 -2.13581
+-13948.1 226.438 -2.73051
+-13939.6 233.492 -3.17956
+-13935.6 232.633 -3.48265
+-13936 224.597 -3.64489
+-13940.1 210.27 -3.67517
+-13947.6 190.646 -3.58511
+0 166.782 -3.38878
+6994.41 9.92052 -0.815861
+6991.73 16.1851 -1.07924
+6990.51 22.6083 -1.33768
+6990.91 28.9445 -1.57944
+6993.03 34.9108 -1.79214
+6996.93 40.1942 -1.96278
+7002.58 44.461 -2.07807
+7009.87 47.3691 -2.12506
+7018.6 48.5815 -2.09213
+7028.46 47.7828 -1.97026
+7038.99 44.6966 -1.75447
+7049.59 39.1047 -1.44545
+7059.43 30.8668 -1.05127
+7067.43 19.9395 -0.588696
+7072.21 6.39665 -0.083976
+7072.08 -9.55262 0.427444
+7065.02 -27.5467 0.90263
+7048.78 -47.0569 1.29443
+7020.98 -67.3765 1.55617
+6979.4 -87.6162 1.64722
+6922.19 -106.708 1.53842
+6848.24 -123.419 1.21622
+6757.49 -136.389 0.684276
+6651.11 -144.175 -0.0378702
+6531.63 -145.322 -0.918056
+6402.86 -138.452 -1.91346
+6269.79 -122.348 -2.96488
+6138.71 -96.0237 -3.96929
+6017.87 -58.7403 -4.67791
+5920.15 -9.9011 -4.24803
+5872.33 51.34 0.982468
+5951.71 127.235 28.6293
+6434.16 224.817 163.672
+8368.88 365.793 800.822
+15625 614.967 3681.21
+41331.2 1158.33 16058.8
+124652 2501.68 66320.8
+360280 5905.25 257617
+889025 14017 928043
+1.56433e+06 30358.5 2.99312e+06
+809314 51600.9 7.72048e+06
+161198 44880.5 6.97368e+06
+3732.04 27628.2 4.07666e+06
+5636.12 16238.5 2.12459e+06
+-78.779 9348.08 1.17188e+06
+-2353.55 4753.82 631299
+748.998 2540.44 328169
+331.651 1509.71 180485
+-409.5 761.879 97942.4
+85.6492 371.313 49940.6
+111.793 227.087 27024.4
+-77.251 115.41 14877.1
+-0.723029 49.4645 7461.55
+28.9307 33.8094 3972.86
+-13.4289 18.9635 2269.82
+-3.53733 6.00574 1145.88
+6.76208 4.63919 612.187
+-2.56862 3.75002 384.78
+-0.938814 0.980125 217.903
+1.70989 0.82707 150.848
+-2.22191 1.61358 154.272
+1.44371 0.878802 169.858
+2.37739 1.36559 271.824
+-8.58098 4.83991 492.788
+5.5859 5.91861 803.406
+14.7652 8.488 1532.86
+-38.1745 25.9316 3027.38
+7.75135 44.9006 5329.25
+93.7889 68.0904 10120.5
+-158.998 160.297 20142.5
+-83.3686 310.039 36612.6
+539.83 511.894 68162.2
+-524.889 1062.04 133878
+-934.862 2090.87 246744
+3255.45 3521.57 451122
+-397.933 6638.43 872403
+-8210.88 13045.2 1.62595e+06
+-6074.04 22596.1 2.97169e+06
+-233670 38413.8 5.76012e+06
+-1.1606e+06 62396.5 9.92117e+06
+-2.23542e+06 71798.1 1.10238e+07
+-1.26473e+06 42409.5 4.279e+06
+-507589 19680.2 1.32296e+06
+-172986 8332.71 364149
+-56471.6 3547.05 92298.7
+-21379.8 1656.08 21813.7
+-11815.3 896.172 4828.86
+-9395.26 551.63 999.536
+-8853.66 356.861 188.022
+-8814.39 218.958 25.2015
+-8930.37 106.951 -5.79844
+-9108.31 11.1213 -10.7598
+-9317.68 -71.155 -10.3605
+-9544.92 -140.21 -8.69482
+-9781.15 -195.773 -6.68184
+-10018.2 -237.637 -4.56772
+-10247.4 -265.933 -2.42884
+-10460.2 -281.233 -0.314205
+-10649.2 -284.534 1.70303
+-10808.7 -277.179 3.51837
+-10936 -260.744 5.01412
+-11031 -236.93 6.08616
+-11096 -207.462 6.66681
+-11134.7 -174.012 6.7372
+-11151.8 -138.153 6.32779
+-11152.2 -101.321 5.50957
+-11140.4 -64.7959 4.38005
+-11120.1 -29.696 3.0479
+-11094.6 3.03139 1.61965
+-11066.1 32.6095 0.190092
+-11036.4 58.4329 -1.16309
+-11006.9 80.065 -2.38108
+-10978.5 97.2339 -3.4231
+-10951.9 109.825 -4.26424
+-10927.8 117.871 -4.89287
+-10906.7 121.538 -5.308
+-10888.8 121.107 -5.51691
+-10874.3 116.957 -5.53309
+-10863.6 109.545 -5.3744
+-10856.5 99.3804 -5.06191
+0 87.0078 -4.61924
+4495.32 2.92653 -0.563198
+4494.4 4.68237 -0.764171
+4494.63 6.48124 -0.964013
+4496.07 8.25492 -1.15411
+4498.77 9.92459 -1.32521
+4502.7 11.4029 -1.46743
+4507.78 12.5964 -1.57045
+4513.87 13.4093 -1.62398
+4520.75 13.7467 -1.61841
+4528.15 13.5192 -1.54569
+4535.7 12.6477 -1.40035
+4542.92 11.068 -1.18073
+4549.19 8.73676 -0.890146
+4553.78 5.63631 -0.537988
+4555.71 1.78063 -0.140397
+4553.87 -2.77924 0.279695
+4546.92 -7.94966 0.693435
+4533.38 -13.5892 1.06794
+4511.73 -19.5042 1.36909
+4480.55 -25.4454 1.56496
+4438.7 -31.1074 1.62911
+4385.53 -36.1311 1.54308
+4321.09 -40.1103 1.29726
+4246.25 -42.6033 0.889877
+4162.77 -43.1484 0.324721
+4073.25 -41.2793 -0.390244
+3981.07 -36.5345 -1.2393
+3890.45 -28.447 -2.18132
+3806.93 -16.4906 -3.08368
+3739.14 0.0840643 -3.43344
+3704.82 22.7307 -0.918857
+3754.28 55.1388 15.5751
+4063.35 108.317 99.1495
+5288.02 217.249 493.688
+9806.77 492.569 2262.9
+25565 1267.81 9788.4
+75897.5 3471.69 40016.9
+216228 9403.19 153764
+526444 23732.1 547630
+914280 52259 1.7451e+06
+466730 88458.4 4.4442e+06
+91344.9 75939.6 3.95044e+06
+2773.59 45620.8 2.2688e+06
+3417.89 25518 1.16822e+06
+-368.679 14330.3 638479
+-1305.75 7406.23 339081
+526.862 3887.68 174869
+139.803 2211.92 96306.6
+-248.096 1139.3 51802.5
+70.5578 569.71 26156.1
+55.8152 333.465 14246
+-50.4107 172.939 7798.76
+5.89518 78.1563 3851.02
+16.134 48.6596 2080.21
+-10.4937 27.8199 1189.59
+-0.728104 10.7738 581.045
+4.50211 6.93658 316.28
+-2.33312 5.13313 203.642
+-0.395231 1.88792 109.339
+1.41718 1.42572 76.2946
+-1.76516 2.14407 82.1883
+0.765043 1.54833 85.6287
+2.37459 2.49366 137.249
+-5.83391 6.62693 261.126
+1.85006 8.93816 414.727
+12.1334 14.8009 781.054
+-22.0947 37.7459 1592.13
+-3.09394 64.9513 2793.54
+63.2287 106.996 5243.76
+-83.0897 238.323 10609.4
+-76.2702 455.023 19371.3
+335.307 783.521 35873.9
+-241.341 1579.98 71257.2
+-679.171 3059.35 132506
+1846.98 5392.93 242152
+212.916 10348 472872
+-5074.99 20068.7 895042
+-4446.41 35821.2 1.65283e+06
+-134291 64376.9 3.24672e+06
+-678198 107649 5.69479e+06
+-1.32312e+06 125781 6.42917e+06
+-758048 74544.7 2.52655e+06
+-308199 33891 790190
+-106517 13395.9 219891
+-35311.9 4913.55 56322.1
+-13553.6 1779.54 13444.8
+-7528.47 690.165 3001.76
+-5978.05 309.406 622.869
+-5626.16 160.211 114.454
+-5601.68 86.4398 12.6232
+-5680.49 39.7095 -5.78714
+-5801.11 5.1811 -7.74771
+-5943.08 -21.9389 -6.50664
+-6097.32 -43.3825 -4.69394
+-6257.98 -59.8793 -2.87797
+-6419.73 -71.8199 -1.18688
+-6576.99 -79.5111 0.361227
+-6724.13 -83.2864 1.76462
+-6856.15 -83.5455 3.00383
+-6969.35 -80.7539 4.0364
+-7061.7 -75.4226 4.80831
+-7132.95 -68.0786 5.27126
+-7184.32 -59.2393 5.39769
+-7218.09 -49.3921 5.18886
+-7237.1 -38.9813 4.67546
+-7244.32 -28.4025 3.91207
+-7242.5 -18.0005 2.96814
+-7234.01 -8.07009 1.91834
+-7220.77 1.14228 0.834122
+-7204.29 9.43668 -0.222189
+-7185.72 16.6583 -1.20061
+-7165.97 22.6965 -2.06429
+-7145.79 27.4831 -2.78876
+-7125.79 30.9912 -3.36024
+-7106.54 33.2325 -3.77375
+-7088.53 34.2539 -4.03133
+-7072.21 34.1339 -4.14034
+-7057.96 32.9775 -4.11206
+-7046.08 30.9106 -3.96051
+-7036.78 28.0743 -3.70165
+0 24.6188 -3.35298
+2058.34 0.386608 -0.227525
+2057.89 0.510768 -0.300585
+2057.9 0.636181 -0.373413
+2058.4 0.758391 -0.442944
+2059.39 0.872156 -0.5059
+2060.83 0.971745 -0.558753
+2062.7 1.05123 -0.597752
+2064.91 1.10471 -0.619066
+2067.36 1.12649 -0.619034
+2069.94 1.11115 -0.594519
+2072.49 1.05363 -0.543341
+2074.81 0.949204 -0.464796
+2076.67 0.793438 -0.360202
+2077.75 0.582218 -0.23339
+2077.66 0.311908 -0.0910319
+2075.94 -0.02021 0.0573314
+2072.01 -0.41511 0.199684
+2065.23 -0.870789 0.322406
+2054.93 -1.3807 0.411568
+2040.45 -1.93209 0.45448
+2021.27 -2.50464 0.441156
+1997.04 -3.06986 0.365292
+1967.73 -3.5918 0.224355
+1933.62 -4.02905 0.0186297
+1895.39 -4.33787 -0.250482
+1854.05 -4.47483 -0.58191
+1810.92 -4.39695 -0.97416
+1767.68 -4.05468 -1.41808
+1726.65 -3.36694 -1.8669
+1691.7 -2.13301 -2.09991
+1671.29 0.316432 -1.04732
+1690.18 6.55182 6.52801
+1834.7 26.6809 45.5762
+2421.39 98.8652 229.45
+4571.2 357.105 1045.3
+11929.9 1230.5 4465.27
+34885.3 3946.36 17968.6
+97209 11530.4 67807.5
+230886 29883.8 236719
+390737 65448.6 738100
+194380 107797 1.8359e+06
+36507 89081.7 1.58561e+06
+1532.65 51088.5 882400
+1588.51 26968.8 446430
+-384.601 14460.1 241470
+-520.19 7325.26 125468
+280.049 3792.97 64056.3
+18.794 2111.67 35515.2
+-108.696 1077.3 18834.1
+48.2025 540.004 9392.46
+16.6188 313.765 5219.43
+-26.573 162.763 2825.77
+7.35788 74.1685 1351.77
+6.94586 45.3717 757.432
+-6.47159 26.0736 436.499
+0.49164 10.5222 199.303
+2.39127 6.50603 112.874
+-1.5552 4.71028 76.5397
+-0.0883657 1.89 37.0507
+0.88849 1.40679 26.3053
+-1.07929 1.96757 31.3469
+0.312524 1.52922 29.2285
+1.67555 2.46093 47.0427
+-3.19054 6.08266 98.2402
+-0.0350841 8.39645 147.249
+7.85951 14.3552 269.549
+-10.0759 35.3257 586.505
+-7.3596 60.6565 1015.84
+34.8185 101.404 1846.42
+-27.614 224.163 3863.29
+-57.851 428.762 7114.53
+151.948 743.576 12926.9
+-50.258 1497.95 26057.5
+-375.291 2937.08 49141.3
+756.106 5303.96 89276.8
+410.974 10356.1 176564
+-2426.44 20614.5 342177
+-2454.94 38830.1 639444
+-54573.4 74499.5 1.2808e+06
+-286755 131103 2.32049e+06
+-573650 159359 2.69606e+06
+-336976 96849.6 1.0842e+06
+-140282 44065 346268
+-49500.4 16843.4 98203.9
+-16629.2 5670.58 25582.5
+-6360.53 1724.94 6195.96
+-3469.9 484.056 1398.51
+-2724.07 128.55 291.304
+-2561.25 33.05 52.6837
+-2557.05 7.45445 4.97628
+-2600.61 -0.371004 -3.39646
+-2661.49 -3.59982 -4.11777
+-2729.96 -5.42297 -3.44789
+-2802.1 -6.63732 -2.59562
+-2875.67 -7.45928 -1.79573
+-2948.76 -7.94575 -1.08178
+-3019.25 -8.10887 -0.441541
+-3084.97 -7.96061 0.13952
+-3143.88 -7.53158 0.662552
+-3194.5 -6.87365 1.1134
+-3236.04 -6.05266 1.4688
+-3268.44 -5.13724 1.7056
+-3292.31 -4.18884 1.80868
+-3308.69 -3.25532 1.77557
+-3318.83 -2.36894 1.61715
+-3324.02 -1.54792 1.35527
+-3325.43 -0.799979 1.01859
+-3324 -0.126599 0.638137
+-3320.5 0.473305 0.24333
+-3315.5 1.00085 -0.140661
+-3309.41 1.45596 -0.494271
+-3302.56 1.83724 -0.803748
+-3295.22 2.14263 -1.06061
+-3287.66 2.37019 -1.26071
+-3280.09 2.51903 -1.4033
+-3272.77 2.5899 -1.49009
+-3265.92 2.58562 -1.52453
+-3259.75 2.51119 -1.51117
+-3254.45 2.37366 -1.45527
+-3250.17 2.18173 -1.36247
+0 1.94508 -1.23882
+380.388 0.0538406 -0.046781
+380.194 0.0616594 -0.0530984
+380.076 0.0692126 -0.0591442
+380.037 0.0762667 -0.064661
+380.075 0.0825343 -0.0694049
+380.186 0.0877137 -0.0731273
+380.36 0.091524 -0.075564
+380.583 0.0937212 -0.0764442
+380.837 0.0940963 -0.0755182
+381.1 0.0924569 -0.0726027
+381.345 0.0885921 -0.0676421
+381.538 0.0822222 -0.0607841
+381.637 0.0729404 -0.0524618
+381.588 0.0601599 -0.0434661
+381.322 0.0430884 -0.0349874
+380.755 0.0207542 -0.0285993
+379.783 -0.00789373 -0.0261611
+378.29 -0.043802 -0.0296287
+376.15 -0.0875552 -0.0407844
+373.241 -0.139084 -0.0609239
+369.456 -0.197406 -0.0905707
+364.727 -0.260483 -0.129304
+359.034 -0.325274 -0.175783
+352.419 -0.388015 -0.228012
+344.989 -0.44465 -0.28376
+336.911 -0.491186 -0.340948
+328.411 -0.523518 -0.397519
+319.782 -0.535685 -0.449659
+311.455 -0.512572 -0.483595
+304.234 -0.398282 -0.436408
+300.215 0.0480267 -0.00150077
+306.444 1.89046 2.31202
+349.231 9.65541 13.4881
+526.393 41.3495 64.5626
+1178.63 162.965 285.605
+3376.37 594.549 1188.94
+10023.3 1992.15 4660.98
+27317.8 6047.53 17114.4
+62442.5 16242.1 58050.5
+100931 36769.8 175594
+48384.4 62139.2 422996
+8512.8 49898.5 351882
+525.607 27453.1 188105
+441.769 14100.3 93794.2
+-194.179 7401.77 50391.2
+-112.134 3641.83 25404.5
+95.781 1885.3 12889.7
+-15.9678 1060.8 7267.56
+-29.361 523.78 3739.6
+21.8922 258.376 1833.04
+1.31074 156.09 1071.08
+-9.52838 79.0361 565.947
+4.11404 34.0219 252.857
+2.02065 22.4432 154.174
+-2.5757 13.1304 90.4832
+0.427427 4.74973 35.844
+0.837248 3.10157 22.1572
+-0.634898 2.39027 16.5794
+0.00805249 0.843245 6.52247
+0.350227 0.655992 4.83547
+-0.418863 1.0245 6.97937
+0.0801589 0.69909 5.2364
+0.711728 1.10898 8.4815
+-1.15045 3.09012 21.3128
+-0.314603 3.96533 28.5285
+3.2531 6.49474 48.9274
+-3.13499 17.8139 122.2
+-4.7112 29.857 205.668
+13.0151 46.4383 345.956
+-3.83824 109.157 777.988
+-28.2544 213.232 1460.38
+43.0363 355.349 2524.37
+14.9944 730.25 5198.48
+-133.876 1480.22 10097.2
+169.278 2643.6 18032.1
+244.347 5176.11 35986.1
+-691.992 10636.5 71986.3
+-825.868 20491.5 135507
+-12852.4 40456.9 275742
+-72066.7 74248.4 520295
+-149527 92823.8 627305
+-91878.4 54910.9 260292
+-39697.4 24133.6 85627.1
+-14293.5 8888 24975.7
+-4705.54 2875.4 6682.43
+-1619.39 835.679 1660.62
+-737.474 220.839 384.719
+-510.609 53.3552 82.7773
+-461.125 11.6127 16.0528
+-457.496 1.93356 2.26734
+-466.064 -0.2272 -0.376011
+-478.3 -0.724177 -0.805733
+-491.836 -0.852007 -0.812636
+-505.865 -0.886658 -0.742136
+-519.997 -0.887667 -0.659944
+-533.911 -0.866744 -0.57618
+-547.261 -0.824271 -0.489331
+-559.676 -0.759615 -0.397266
+-570.817 -0.674834 -0.300838
+-580.43 -0.575321 -0.20433
+-588.385 -0.468669 -0.114165
+-594.688 -0.362842 -0.0369716
+-599.455 -0.26452 0.0221215
+-602.879 -0.178088 0.0604927
+-605.19 -0.105395 0.078236
+-606.617 -0.0461139 0.0777336
+-607.363 0.00153773 0.0628649
+-607.596 0.0399978 0.0381301
+-607.44 0.0716765 0.0078988
+-606.989 0.0985044 -0.0241021
+-606.312 0.121732 -0.0550348
+-605.46 0.141942 -0.0829753
+-604.481 0.15919 -0.106795
+-603.418 0.173204 -0.125979
+-602.316 0.183581 -0.140437
+-601.221 0.189941 -0.150347
+-600.18 0.19204 -0.156026
+-599.236 0.189839 -0.157846
+-598.429 0.183521 -0.156179
+-597.789 0.173459 -0.15139
+0 0.160144 -0.143862
+46.8973 0.00640696 -0.00806666
+46.8615 0.00680621 -0.00831026
+46.8347 0.00715016 -0.00848712
+46.8172 0.00743255 -0.00858989
+46.8088 0.0076439 -0.00861821
+46.8088 0.00777547 -0.00857575
+46.8159 0.00782278 -0.00846751
+46.8282 0.00778674 -0.00829948
+46.8435 0.0076724 -0.00808048
+46.8589 0.00748542 -0.00782626
+46.8708 0.00722639 -0.0075654
+46.8748 0.00688305 -0.00734716
+46.8656 0.00642151 -0.00724997
+46.8363 0.0057779 -0.00738886
+46.7783 0.00485311 -0.00791867
+46.6806 0.00351373 -0.00902962
+46.5303 0.00160184 -0.0109323
+46.3124 -0.00104481 -0.0138302
+46.0109 -0.00456336 -0.0178818
+45.6098 -0.00903132 -0.0231575
+45.0954 -0.0144346 -0.0296004
+44.4585 -0.0206482 -0.0370044
+43.6958 -0.0274382 -0.0450203
+42.8121 -0.0344894 -0.053196
+41.8202 -0.0414484 -0.0610407
+40.741 -0.0479547 -0.06808
+39.6029 -0.0535876 -0.0738246
+38.4449 -0.0574931 -0.0774062
+37.3297 -0.056558 -0.0757455
+36.4027 -0.0362695 -0.0544214
+36.1482 0.0747165 0.0576243
+38.4877 0.619968 0.602865
+51.2256 3.17425 3.15238
+104.497 14.5339 14.494
+305.08 62.1972 62.1271
+990.705 250.122 250.171
+3076.83 943.411 944.929
+8498.11 3317.59 3328.11
+19402.6 10728 10780.3
+30964.8 30809.1 31013.7
+13905.4 70246.5 70836.5
+2027.26 55440.6 56014.7
+140.67 28150.9 28503.7
+126.935 13956.7 14175.3
+-109.945 7424.58 7568.71
+-20.8748 3547.82 3621.63
+43.2747 1826.89 1864.63
+-16.2237 1072.83 1099.13
+-10.7342 511.781 525.507
+11.5468 242.679 249.025
+-1.02089 158.344 164.589
+-4.3862 78.0715 82.5279
+2.41182 29.7498 31.1859
+0.797424 22.8687 23.3922
+-1.26337 13.919 14.2244
+0.257647 3.95261 3.94917
+0.368016 2.96934 3.0978
+-0.305372 2.6129 2.82898
+0.0170773 0.663274 0.687853
+0.165339 0.577035 0.573614
+-0.196823 1.16867 1.23045
+0.0227136 0.59034 0.571941
+0.351308 0.910183 0.963238
+-0.517402 3.37924 3.65318
+-0.225024 3.73092 3.8706
+1.634 5.48919 5.53373
+-1.30348 18.9278 19.3922
+-2.90644 30.1511 30.8418
+6.16601 40.6625 42.7146
+0.402151 108.397 114.51
+-15.4401 215.815 223.98
+16.5481 333.088 341.777
+19.93 715.47 734.894
+-62.4916 1497.13 1532.86
+35.2651 2558.69 2609.87
+149.965 5050.44 5151.9
+-205.244 10684.8 10877.4
+-219.371 20298.6 20582.8
+-3079.33 41564.5 42015.2
+-20813.7 82608.4 83311.9
+-46081.3 104937 105615
+-28656.9 45980.3 46196.1
+-12385.8 15923.7 15970.7
+-4395.13 4869.66 4876.1
+-1377.7 1360.02 1359.8
+-412.6 351.269 350.74
+-140.589 84.2923 84.0589
+-71.9002 18.7964 18.7135
+-56.684 3.8571 3.82176
+-54.4497 0.678171 0.653496
+-55.2653 0.0429617 0.0190503
+-56.8339 -0.0764779 -0.101685
+-58.6166 -0.0956031 -0.12235
+-60.4668 -0.0950179 -0.123139
+-62.3259 -0.09003 -0.119132
+-64.1519 -0.0834235 -0.112875
+-65.9012 -0.0754848 -0.104467
+-67.5282 -0.0661472 -0.0937844
+-68.9912 -0.0555795 -0.0810952
+-70.2595 -0.0442957 -0.0671454
+-71.3179 -0.0330392 -0.0529844
+-72.1674 -0.0225806 -0.0396982
+-72.823 -0.0135341 -0.0281727
+-73.309 -0.00624779 -0.0189512
+-73.6538 -0.000781896 -0.0122021
+-73.8856 0.00304299 -0.00777351
+-74.0295 0.0055583 -0.00529751
+-74.1057 0.00715186 -0.00430659
+-74.1296 0.00818768 -0.00433286
+-74.1125 0.00895391 -0.00497514
+-74.0627 0.00964105 -0.00593076
+-73.987 0.0103451 -0.006998
+-73.8914 0.0110861 -0.00806007
+-73.7817 0.0118334 -0.00906121
+-73.6641 0.0125296 -0.00998304
+-73.5448 0.0131111 -0.0108252
+-73.4301 0.0135218 -0.0115912
+-73.326 0.0137232 -0.0122798
+-73.2377 0.0136968 -0.0128811
+-73.1699 0.013442 -0.0133792
+0 0.0129693 -0.013758
+4.60118 0.000537599 -0.00114843
+4.59669 0.00055087 -0.00112858
+4.59309 0.000558693 -0.00109808
+4.5904 0.000561355 -0.00105833
+4.58861 0.000559005 -0.00101194
+4.58763 0.000551915 -0.000962424
+4.58732 0.000540744 -0.000913787
+4.5875 0.000526604 -0.000870385
+4.58791 0.000510922 -0.00083696
+4.58824 0.00049512 -0.000818887
+4.58812 0.000480102 -0.000822604
+4.58709 0.000465584 -0.000856212
+4.58457 0.000449319 -0.00093015
+4.57985 0.000426366 -0.00105774
+4.57202 0.000388587 -0.00125528
+4.55997 0.000324642 -0.00154139
+4.54234 0.000220689 -0.00193516
+4.5176 6.19295e-05 -0.00245311
+4.48409 -0.000165086 -0.00310496
+4.44017 -0.000469691 -0.00388894
+4.38442 -0.000854484 -0.0047876
+4.31586 -0.00131364 -0.00576557
+4.23416 -0.00183285 -0.00677049
+4.13976 -0.0023912 -0.0077377
+4.03398 -0.00296414 -0.00859766
+3.91899 -0.00352495 -0.00928177
+3.79781 -0.00403631 -0.00971486
+3.67492 -0.00439631 -0.00974836
+3.55913 -0.00414863 -0.00880608
+3.47829 -0.000921145 -0.00407061
+3.55006 0.0177997 0.0185112
+4.31108 0.11625 0.126419
+8.15387 0.611412 0.62569
+25.1552 3.00586 2.81716
+94.8326 14.1692 11.8605
+359.839 64.5733 46.7636
+1285.59 286.224 172.044
+4187.52 1241.34 586.128
+11873.9 5300.47 1820.48
+25493.4 22442.1 4969.62
+9827.73 95115.9 10649.7
+398.855 71557.1 7703.11
+-97.3695 31825.8 3611.83
+133.974 15364.8 1858.38
+-132.117 8608.53 958.312
+-15.2926 3847.93 380.248
+52.7675 1976.06 218.939
+-21.5964 1282.71 151.692
+-12.2304 560.047 55.5899
+13.971 241.698 22.7367
+-1.79289 193.58 23.7546
+-5.13913 89.5092 10.2363
+3.12838 23.4211 1.63615
+0.927335 28.1236 3.32201
+-1.51989 18.4064 2.13915
+0.334698 2.34803 -0.065345
+0.428772 3.1736 0.343815
+-0.364748 3.75512 0.539832
+0.0276631 0.270167 -0.0152683
+0.19311 0.450835 0.0101768
+-0.245494 1.79533 0.225101
+0.00144148 0.375041 -0.0175073
+0.409422 0.523581 0.0141146
+-0.619434 4.86615 0.703657
+-0.323508 3.78979 0.381361
+1.96056 3.58486 -0.0127193
+-1.53995 25.2195 2.99432
+-3.82769 36.38 4.24863
+7.26768 32.2771 2.24402
+1.26315 126.036 14.6138
+-18.8106 262.525 32.1567
+19.0286 329.838 30.5864
+27.1058 788.962 79.3004
+-76.3149 1790.44 213.107
+29.364 2757.48 304.423
+184.164 5492.37 543.351
+-211.771 12404.7 1390.56
+148.468 22321.3 2711.16
+-644.294 47062.7 5341.09
+-14742.8 106715 11500
+-37942.2 141944 15928.3
+-17536.2 33436.9 7422.23
+-6102.59 7850.9 2703.13
+-1836.22 1817.94 860.46
+-499.896 411.755 248.051
+-127.301 90.5529 65.7043
+-32.7699 19.1986 16.0957
+-10.7552 3.89588 3.65619
+-6.07731 0.748992 0.767661
+-5.24493 0.131606 0.143378
+-5.22115 0.0163018 0.0163289
+-5.36668 -0.00407818 -0.00879165
+-5.55083 -0.00721352 -0.013984
+-5.745 -0.00725699 -0.0152143
+-5.94064 -0.00672253 -0.0154627
+-6.13282 -0.00604986 -0.0152532
+-6.31696 -0.00530263 -0.014651
+-6.48838 -0.0044845 -0.0136635
+-6.64287 -0.00360967 -0.012335
+-6.77738 -0.00271614 -0.0107611
+-6.89038 -0.00185799 -0.00907062
+-6.98202 -0.00109031 -0.00739708
+-7.05379 -0.000455297 -0.00585259
+-7.10812 2.5921e-05 -0.00451238
+-7.14786 0.000354596 -0.00341087
+-7.17582 0.000550298 -0.0025472
+-7.19449 0.000643824 -0.00189612
+-7.20588 0.000669589 -0.00142011
+-7.21154 0.00065932 -0.00107976
+-7.21262 0.000638009 -0.000840765
+-7.21 0.00062229 -0.000677179
+-7.2044 0.000620764 -0.000571701
+-7.19645 0.000635557 -0.00051402
+-7.18682 0.000664347 -0.000498427
+-7.17616 0.000702343 -0.000521505
+-7.16517 0.000743893 -0.000580315
+-7.15451 0.000783678 -0.000671191
+-7.14485 0.000817461 -0.000789094
+-7.13674 0.00084237 -0.00092755
+-7.13067 0.000856709 -0.00107918
+0 0.000859543 -0.0012365
+0.345014 0 -0.000117742
+0.344621 0 -0.000113306
+0.344295 0 -0.000107733
+0.34404 0 -0.000101279
+0.343853 0 -9.43287e-05
+0.343727 0 -8.73696e-05
+0.343651 0 -8.09572e-05
+0.343611 0 -7.56934e-05
+0.343585 0 -7.22201e-05
+0.343549 0 -7.12249e-05
+0.343471 0 -7.34608e-05
+0.343315 0 -7.97764e-05
+0.343034 0 -9.11518e-05
+0.342571 0 -0.000108722
+0.341855 0 -0.000133771
+0.340795 0 -0.000167654
+0.339288 0 -0.000211647
+0.337211 0 -0.000266686
+0.334435 0 -0.000333027
+0.330832 0 -0.000409869
+0.32629 0 -0.000495025
+0.320732 0 -0.000584753
+0.314132 0 -0.000673854
+0.306524 0 -0.000756085
+0.298014 0 -0.000824772
+0.288775 0 -0.000873245
+0.279059 0 -0.000893695
+0.269281 0 -0.000868475
+0.260501 0 -0.000722932
+0.256979 0 -8.06492e-05
+0.279464 0 0.00295477
+0.431608 0 0.0175276
+1.21772 0 0.0852873
+5.00006 0 0.38451
+22.4408 0 1.63045
+100.15 0 6.50544
+436.813 0 24.3663
+1864.29 0 85.2601
+7829.03 0 276.097
+32600.3 0 817.691
+12101 124861 2434.13
+-346.605 90032.9 1409.5
+-338.027 33541.1 384.449
+327.163 15572.8 291.214
+-163.863 9759.18 169.175
+-51.6388 3927.81 -7.97889
+94.6135 1928.89 10.2101
+-19.9787 1516.74 38.916
+-24.6909 596.196 2.64995
+22.9787 193.563 -6.11819
+2.36568 232.169 6.17108
+-7.81051 106.648 2.54436
+5.6035 6.49337 -1.82126
+3.71632 32.4135 0.939195
+-1.6059 26.5322 1.17315
+0.621908 -0.486872 -0.294398
+1.06426 2.76407 0.0579667
+-0.395101 5.97415 0.334838
+-0.0687381 -0.0904007 -0.0722436
+-0.00335523 0.367408 -0.104294
+-0.915692 3.08392 0.0514763
+-0.643884 0.0781166 -0.178724
+-0.363188 0.282511 -0.112174
+-2.20282 7.716 0.395861
+-1.34866 2.85352 0.0111477
+1.17837 0.329403 -0.313255
+-6.18055 36.4175 1.6662
+-7.45285 40.5008 0.931601
+10.2756 10.2961 -2.66195
+-5.78982 153.224 3.74335
+-31.1629 311.93 7.93691
+36.0947 261.155 -8.97447
+21.281 851.222 5.66727
+-135.079 2114.11 55.3694
+85.5806 2671.57 11.2098
+222.964 5637.33 -8.5858
+-493.235 14080.8 254.507
+530.282 22561.3 427.135
+449.325 49734.9 573.33
+-18173.7 134440 2129.03
+-48488 186180 3669.62
+-11555.3 0 1227.19
+-2715.34 0 411.062
+-623.724 0 125.357
+-139.147 0 35.1684
+-30.1026 0 9.15102
+-6.44998 0 2.21692
+-1.54061 0 0.500859
+-0.574926 0 0.105448
+-0.401629 0 0.0203155
+-0.381055 0 0.00301171
+-0.389411 0 -0.000417464
+-0.403501 0 -0.00114425
+-0.418863 0 -0.00134117
+-0.434435 0 -0.00141208
+-0.449756 0 -0.00142897
+-0.464444 0 -0.001403
+-0.478132 0 -0.00133649
+-0.490493 0 -0.00123405
+-0.501291 0 -0.00110433
+-0.510409 0 -0.000958692
+-0.517857 0 -0.000808942
+-0.523749 0 -0.000665214
+-0.528272 0 -0.000534708
+-0.531642 0 -0.000421342
+-0.534073 0 -0.000326163
+-0.535756 0 -0.000248185
+-0.536846 0 -0.000185319
+-0.537463 0 -0.000135186
+-0.537698 0 -9.56484e-05
+-0.53762 0 -6.50718e-05
+-0.537288 0 -4.23446e-05
+-0.536756 0 -2.67599e-05
+-0.536079 0 -1.7841e-05
+-0.535311 0 -1.51773e-05
+-0.534508 0 -1.83017e-05
+-0.533726 0 -2.66171e-05
+-0.533017 0 -3.93679e-05
+-0.532427 0 -5.56564e-05
+-0.531994 0 -7.45033e-05
+0 0 -9.49194e-05
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+62518.1 100844 9504.07
+29877.8 178895 14242.6
+-4200.83 95090.2 6039.73
+29.6082 19459.7 1571.68
+2793.32 13105.1 2214.13
+-876.912 11400 1392.73
+-212.5 2252.13 106.983
+850.969 1309.05 183.106
+20.7238 2231.47 322.372
+-100.966 493.776 57.0118
+245.483 -23.3007 -11.9924
+116.183 422.999 53.1391
+20.095 166.215 24.9626
+95.8033 -52.7565 5.00404
+66.3577 72.3136 23.8299
+9.75151 69.9817 19.3462
+13.2895 1.23273 4.53404
+13.8777 17.8002 1.77732
+-5.11891 30.3256 1.97976
+-19.5823 18.7541 -1.5394
+-27.0662 13.3599 -2.61832
+-40.1255 18.277 -3.20475
+-61.6493 36.7464 0.273015
+-58.4272 20.3218 0.189217
+-55.6456 1.69462 5.80713
+-134.327 95.4883 26.4395
+-168.205 88.1752 31.3741
+-68.6462 -68.3481 2.121
+-205.423 249.77 29.5834
+-360.869 572.568 64.3504
+108.411 -39.6747 -21.7676
+-119.046 746.907 89.247
+-1230.28 3078.11 452.931
+339.363 1692.44 238.99
+1120.77 3284.08 160.744
+-4134.01 16326.8 2025.28
+169.071 18405 3141.4
+5994.91 28438.9 2208.7
+-44675.1 140971 8937.27
+-92723.7 265774 21193.1
+0 150677 14197.7
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+67181.1 0 13476.4
+110417 0 37287.6
+41826.9 0 33008.8
+-9302.58 0 10192.4
+138.977 0 1371.27
+5925.82 0 3610.39
+-808.428 0 2568.5
+-184.887 0 168.348
+1986.17 0 290.346
+472.505 0 597.418
+19.9356 0 123.871
+755.876 0 -7.39313
+572.122 0 127.999
+225.293 0 102.691
+250.504 0 59.4687
+179.421 0 75.5726
+43.6814 0 50.5629
+30.3928 0 6.54128
+-0.00628192 0 0.56174
+-77.6032 0 -6.25459
+-148.082 0 -8.14429
+-231.246 0 -10.8318
+-255.397 0 -8.80237
+-269.031 0 2.31173
+-445.447 0 65.5308
+-538.375 0 98.5563
+-529.595 0 84.1211
+-1018.14 0 145.819
+-1205.68 0 172.252
+-198.606 0 -15.2577
+-933.377 0 198.486
+-2937.41 0 843.233
+188.689 0 380.314
+743.496 0 289.001
+-8766.64 0 3729.08
+42.0841 0 5065.84
+12980.1 0 1865.37
+-62710 0 15081
+-163429 0 48873
+-99708.1 0 55369.8
+0 0 20152.7
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+12584.9 -15564.4 1597.52
+22927.9 -29481.6 4952.72
+8727.86 -14676.8 4743.32
+-2692.74 -1849.55 1312.36
+670.19 -2535.15 -163.81
+2495.32 -2418.06 443.544
+187.771 -67.5469 484.361
+146.405 -80.7322 33.7973
+940.85 -569.143 43.5769
+459.946 -115.25 154.155
+132.772 59.1095 40.9636
+308.477 -102.196 -30.4083
+263.111 -58.6803 2.36241
+134.556 14.3579 32.4639
+145.499 -23.1756 33.9534
+140.583 -32.3544 24.5824
+82.8352 -5.8553 13.3667
+47.4124 -5.93527 -6.3042
+13.788 -14.8467 -7.33822
+-40.5346 -11.1343 -2.97441
+-93.6336 -7.12498 -4.58814
+-156.305 -11.2526 -6.12806
+-200.041 -17.3677 -10.7207
+-248.813 -10.663 -11.1641
+-322.453 -8.54937 16.1164
+-328.738 -38.1411 36.9947
+-320.645 -27.2184 49.3013
+-498.399 14.6786 44.5881
+-539.638 -85.8987 -1.28079
+-311.046 -133.578 -45.2528
+-802.151 84.6312 71.3561
+-1437.33 -183.897 222.719
+-306.505 -789.678 55.7007
+-470.499 -72.982 53.5179
+-3731.97 -134.544 695.634
+-940.099 -3508.46 619.135
+3774.85 -3554.47 -241.904
+-13176 -2657.32 1994.81
+-34064.5 -21810.2 7105.57
+-18762.5 -43917.5 7416.44
+0 -23337 2415.49
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+10023.7 -17085.7 1001.67
+4477.76 -11028.9 1335.8
+-1077.15 -3458.15 375.634
+367.683 -1855.22 132.08
+803.615 -1152.95 394.641
+-195.604 -273.096 244.419
+16.7602 -181.481 6.85069
+325.421 -216.445 10.5763
+80.6859 -48.2079 46.1894
+10.075 0.0177369 12.3817
+98.263 -34.9008 -6.15403
+61.8747 -13.9103 1.2306
+22.6724 4.31724 1.82776
+42.042 -4.93849 4.85479
+37.978 -4.42672 9.20726
+17.9839 1.17702 5.47272
+15.2377 -0.314419 1.01063
+14.4243 -1.35196 -1.26681
+3.99013 0.0845499 -0.25857
+-8.9317 -0.00283056 0.123738
+-17.6215 -0.659431 -1.11461
+-30.4941 0.102707 -1.30589
+-45.1001 0.00478283 -1.72531
+-50.6197 -1.84143 -2.63503
+-54.6904 -0.262429 1.63061
+-76.6776 1.41064 8.87924
+-79.2843 -6.23904 13.0124
+-58.0725 -5.98742 6.28854
+-114.168 5.66986 1.99249
+-157.203 -20.7796 0.596251
+-38.3885 -46.3434 -6.3518
+-154.193 2.02327 21.4355
+-482.996 -73.2264 65.162
+-25.4907 -304.389 10.6403
+232.189 -243.307 11.9389
+-1213.5 -396.545 359.018
+-500.749 -1686.17 560.202
+1576.59 -2693.38 167.159
+-6705.27 -5132.45 541.257
+-14890.2 -16513.1 1973.48
+0 -25518.4 1488.61
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0.0480634 -5.11191e-05 -9.37626e-06
+0.048016 -5.67183e-05 -9.14543e-06
+0.047979 -6.193e-05 -8.82579e-06
+0.0479528 -6.66221e-05 -8.43052e-06
+0.047937 -7.06086e-05 -7.98355e-06
+0.0479309 -7.3682e-05 -7.5174e-06
+0.0479326 -7.56513e-05 -7.07005e-06
+0.04794 -7.63596e-05 -6.68323e-06
+0.0479498 -7.56776e-05 -6.40252e-06
+0.0479584 -7.34755e-05 -6.27905e-06
+0.0479609 -6.95737e-05 -6.37291e-06
+0.0479515 -6.36748e-05 -6.75778e-06
+0.0479232 -5.52843e-05 -7.52628e-06
+0.0478669 -4.36381e-05 -8.7942e-06
+0.0477715 -2.76617e-05 -1.07011e-05
+0.0476232 -5.99247e-06 -1.34042e-05
+0.0474057 2.29049e-05 -1.70629e-05
+0.0471003 6.05174e-05 -2.18117e-05
+0.0466871 0.000107963 -2.77246e-05
+0.0461464 0.000165616 -3.47739e-05
+0.0454614 0.000232767 -4.27939e-05
+0.0446207 0.000307406 -5.14609e-05
+0.0436209 0.000386251 -6.03007e-05
+0.0424685 0.000465045 -6.8729e-05
+0.0411808 0.000539014 -7.61106e-05
+0.0397863 0.000603048 -8.17847e-05
+0.0383274 0.000650024 -8.48423e-05
+0.0368817 0.000659859 -8.26195e-05
+0.0356818 0.000539288 -6.23266e-05
+0.0357587 -0.000201255 4.36747e-05
+0.0422463 -0.00411984 0.000587081
+0.0805418 -0.0240881 0.00332011
+0.271219 -0.121943 0.0165528
+1.15924 -0.581299 0.0777911
+5.08966 -2.64855 0.348571
+21.7007 -11.6014 1.49578
+89.0074 -49.1147 6.17431
+351.76 -202.15 24.6566
+1346.02 -814.214 96.0488
+5026.46 -3234.03 371.283
+1644.68 -12794.1 1524.32
+-133.777 -8831.42 990.427
+1.82529 -3590.95 381.644
+49.9708 -1849.43 237.286
+-52.3552 -1000.69 119.191
+0.482407 -347.182 13.1712
+26.1942 -211.372 14.3249
+-6.27847 -167.887 22.8306
+-4.32539 -51.3833 3.8744
+7.32262 -17.093 -0.655552
+1.26974 -26.7666 4.08834
+-1.3114 -10.4112 1.6164
+1.8327 -0.00462313 -0.641723
+1.26875 -3.93649 0.497508
+0.021932 -2.57946 0.578033
+0.524421 0.478867 -0.0877077
+0.558636 -0.345673 0.0571499
+0.148058 -0.714565 0.145312
+0.0965576 0.0959233 0.00668102
+-0.0802204 0.0388013 0.0334189
+-0.452809 -0.286685 0.0961769
+-0.574139 0.0803546 -0.0274396
+-0.708086 0.066809 -0.056993
+-1.35651 -0.939066 0.125937
+-1.23209 -0.364224 -0.0156161
+-0.526273 0.533129 -0.14149
+-2.25161 -3.64577 0.805928
+-2.82371 -4.95633 0.614631
+1.32873 -0.0170733 -0.871305
+-2.74091 -15.1543 2.3995
+-10.3733 -36.1003 5.45716
+6.29033 -22.3947 -1.12606
+6.8596 -74.3708 6.24467
+-38.4334 -236.104 32.297
+2.32186 -291.524 18.6492
+74.1884 -497.09 20.0902
+-79.527 -1455.43 177.477
+1.08974 -2695.15 348.283
+193.777 -5315.75 563.945
+-2475.16 -13193.5 1478.3
+-7485.3 -19114.4 2275.74
+-1988.49 -4823.34 553.716
+-512.698 -1207.13 142.404
+-127.169 -296.314 36.1427
+-30.1697 -70.7219 8.89113
+-6.83165 -16.2876 2.10059
+-1.49358 -3.59465 0.473501
+-0.338461 -0.755588 0.101325
+-0.10321 -0.150297 0.0204945
+-0.0589889 -0.027776 0.00387043
+-0.0523974 -0.00420339 0.000623566
+-0.0529801 0.000153681 1.16349e-05
+-0.0549613 0.00094185 -0.000104936
+-0.0572467 0.00107371 -0.000129493
+-0.0595961 0.00107232 -0.00013504
+-0.0619205 0.00102988 -0.000134428
+-0.0641552 0.000961492 -0.000129775
+-0.06624 0.000869836 -0.000121497
+-0.0681224 0.000758428 -0.000110089
+-0.0697643 0.000633998 -9.64258e-05
+-0.0711469 0.000505501 -8.16465e-05
+-0.0722709 0.000382061 -6.69205e-05
+-0.073154 0.00027107 -5.32299e-05
+-0.0738245 0.00017705 -4.12384e-05
+-0.074316 0.000101433 -3.12603e-05
+-0.074662 4.3072e-05 -2.33084e-05
+-0.0748921 -8.5478e-07 -1.7187e-05
+-0.075031 -3.3853e-05 -1.25944e-05
+-0.0750977 -5.92918e-05 -9.21052e-06
+-0.0751067 -7.98711e-05 -6.75499e-06
+-0.0750693 -9.73977e-05 -5.01412e-06
+-0.074995 -0.000112813 -3.84308e-06
+-0.0748923 -0.000126372 -3.15216e-06
+-0.0747693 -0.00013789 -2.88725e-06
+-0.0746345 -0.000146968 -3.01117e-06
+-0.0744962 -0.000153185 -3.48936e-06
+-0.0743623 -0.000156224 -4.28075e-06
+-0.0742404 -0.00015595 -5.33336e-06
+-0.074137 -0.000152422 -6.58491e-06
+-0.0740577 -0.000145855 -7.96779e-06
+0 -0.000136561 -9.41481e-06
+0.543991 -0.000552222 -8.39502e-05
+0.543538 -0.000647688 -8.41973e-05
+0.543202 -0.000740522 -8.36813e-05
+0.542988 -0.000827876 -8.24095e-05
+0.542892 -0.000906106 -8.04805e-05
+0.542905 -0.000971194 -7.80596e-05
+0.54301 -0.00101919 -7.53489e-05
+0.543182 -0.00104643 -7.25765e-05
+0.543389 -0.00104959 -7.00075e-05
+0.54359 -0.0010254 -6.79758e-05
+0.543735 -0.000970324 -6.69349e-05
+0.543763 -0.000879873 -6.75254e-05
+0.543596 -0.000747964 -7.06503e-05
+0.543138 -0.000566269 -7.75384e-05
+0.542269 -0.000323943 -8.97664e-05
+0.540839 -7.99991e-06 -0.000109206
+0.538669 0.000395352 -0.000137861
+0.535556 0.000898267 -0.000177582
+0.531281 0.00150786 -0.000229672
+0.525629 0.00222228 -0.000294435
+0.518418 0.00302722 -0.000370768
+0.509522 0.00389385 -0.000455926
+0.498904 0.0047794 -0.00054559
+0.486635 0.0056307 -0.000634272
+0.472903 0.00638969 -0.000715967
+0.458011 0.00699715 -0.000784553
+0.442395 0.00738351 -0.000832315
+0.426744 0.00740167 -0.000839103
+0.412716 0.0064735 -0.00071223
+0.406636 0.00177273 3.59118e-05
+0.437871 -0.0208005 0.00395632
+0.645266 -0.12896 0.0238955
+1.65714 -0.62975 0.121621
+6.14011 -2.82779 0.580688
+24.5989 -11.8954 2.64846
+95.0264 -46.8773 11.6121
+341.13 -172.381 49.2067
+1109.4 -587.003 202.709
+3120.97 -1822.37 817.065
+6582.59 -4972.74 3246.71
+2247.52 -10652.9 12843.6
+-33.49 -7704.98 8857.68
+8.76787 -3614.1 3592.73
+22.6052 -1860.21 1855.33
+-65.5108 -958.739 1004.47
+5.64936 -380.631 342.526
+22.7591 -219.702 210.157
+-12.2736 -152.131 170.971
+-4.47424 -55.7049 52.1127
+6.76413 -22.7746 17.18
+-0.908244 -23.6711 28.3316
+-2.19314 -10.0998 11.2097
+1.41176 -1.59498 -0.377858
+0.35252 -3.3519 3.7964
+-0.656235 -2.16413 2.72624
+0.207132 0.0563797 -0.504769
+0.224326 -0.339965 0.308819
+-0.153988 -0.533885 0.735098
+0.0100364 0.0134505 -0.0954054
+0.077291 -0.0122983 -0.0102627
+-0.120071 -0.223457 0.358534
+-0.011949 0.0137731 -0.0585179
+0.152343 -0.0166476 -0.0649944
+-0.341472 -0.697598 0.95751
+-0.233418 -0.37784 0.288255
+0.836765 0.00343632 -0.554095
+-0.631463 -3.02669 3.83578
+-1.76868 -4.29173 4.72603
+3.11307 -2.19616 -0.452077
+0.695171 -14.4441 16.3306
+-9.22055 -32.0724 38.0523
+7.25905 -30.6512 22.3693
+15.9639 -79.4484 75.6751
+-33.5729 -213.737 240.275
+-4.59347 -305.483 289.401
+94.2321 -543.812 491.248
+-40.4995 -1391.2 1461.05
+-12.6742 -2713.83 2702.01
+39.8497 -5344.23 5317.05
+-3375.44 -11503.3 13225.1
+-9798.05 -15934.7 19171.1
+-4608.56 -7427.73 4837.13
+-1616.28 -2706.24 1209.96
+-487.089 -861.826 296.78
+-131.975 -248.554 70.7694
+-32.9761 -65.8659 16.2833
+-7.92277 -16.1426 3.59032
+-2.10634 -3.66974 0.753904
+-0.865896 -0.772786 0.149701
+-0.631037 -0.146742 0.0274841
+-0.603447 -0.019437 0.00397294
+-0.617377 0.00567487 -0.000383288
+-0.640069 0.0108329 -0.00118295
+-0.664918 0.0120358 -0.00132703
+-0.690249 0.0122751 -0.00133472
+-0.715269 0.0120924 -0.00129574
+-0.739305 0.0115703 -0.00122346
+-0.761704 0.0107244 -0.00112004
+-0.781884 0.00959406 -0.00098991
+-0.799427 0.00825731 -0.000841849
+-0.814123 0.00681836 -0.000687551
+-0.825983 0.00538447 -0.000538963
+-0.835204 0.00404505 -0.000405908
+-0.842104 0.00285909 -0.000294667
+-0.847058 0.00185239 -0.000207655
+-0.85044 0.00102246 -0.000143997
+-0.852585 0.000347911 -0.000100573
+-0.853764 -0.000201244 -7.3195e-05
+-0.854191 -0.000654946 -5.75906e-05
+-0.854024 -0.00103739 -5.00669e-05
+-0.853386 -0.00136455 -4.782e-05
+-0.852377 -0.00164433 -4.89566e-05
+-0.851087 -0.00187838 -5.23362e-05
+-0.849602 -0.00206449 -5.73417e-05
+-0.848007 -0.00219899 -6.36556e-05
+-0.846391 -0.00227859 -7.10831e-05
+-0.844837 -0.00230169 -7.94303e-05
+-0.843425 -0.00226909 -8.84344e-05
+-0.842223 -0.0021841 -9.775e-05
+-0.841289 -0.002052 -0.000106987
+0 -0.00187926 -0.000115766
+4.46149 -0.00430822 -0.000536323
+4.45862 -0.00552335 -0.000568978
+4.45673 -0.00673953 -0.000597266
+4.45585 -0.00791499 -0.000619811
+4.45596 -0.00899926 -0.00063569
+4.457 -0.00993667 -0.00064425
+4.45882 -0.0106701 -0.000644925
+4.46126 -0.0111433 -0.00063724
+4.46405 -0.0113024 -0.000620999
+4.46689 -0.0110957 -0.000596649
+4.46939 -0.0104728 -0.000565813
+4.47108 -0.00938254 -0.000531955
+4.47136 -0.00777046 -0.000501117
+4.46946 -0.0055767 -0.00048256
+4.46444 -0.00273648 -0.000489071
+4.45513 0.000815314 -0.000536661
+4.4401 0.0051334 -0.000643399
+4.41775 0.0102446 -0.000827246
+4.38636 0.0161243 -0.00110301
+4.34423 0.0226709 -0.00147885
+4.28992 0.0296833 -0.00195303
+4.22248 0.03685 -0.00251199
+4.14161 0.0437557 -0.00313068
+4.04791 0.0499103 -0.00377549
+3.94288 0.0547911 -0.00440909
+3.82891 0.0578803 -0.00499409
+3.70931 0.0586419 -0.00548673
+3.58882 0.0562752 -0.00578427
+3.47649 0.0484927 -0.00543598
+3.4003 0.0256214 -0.00208578
+3.47792 -0.0575243 0.0167346
+4.24582 -0.409138 0.115138
+8.09795 -1.93944 0.609945
+25.1266 -8.36767 3.00519
+94.9538 -33.7835 14.1881
+360.802 -127.315 64.7609
+1290.72 -444.908 287.534
+4210.36 -1427.74 1249.21
+11958.3 -4133.63 5343.58
+25720 -10385 22664.2
+9922.48 -20232.6 96213.7
+392.905 -14711.6 72550.9
+-99.7168 -6965.41 32347.6
+138.684 -3605.94 15682.6
+-137.375 -1944.43 8830.47
+-17.8445 -826.037 3947.5
+54.7824 -451.142 2023.44
+-22.1977 -299.646 1323.63
+-12.9651 -118.829 579.398
+15.1327 -50.7249 248.877
+-1.34088 -47.1751 204.567
+-5.56956 -20.9114 97.5681
+3.04796 -4.06682 25.0402
+0.951346 -6.5393 28.6766
+-1.6088 -4.33233 18.9527
+0.380068 -0.132751 2.14915
+0.494867 -0.679966 3.32305
+-0.399656 -0.998664 4.18827
+0.0173786 0.00851784 0.275421
+0.209315 -0.049041 0.418426
+-0.26736 -0.453911 1.93758
+0.0217272 -0.00643994 0.303078
+0.442731 -0.0590162 0.584619
+-0.709687 -1.3015 5.4095
+-0.359882 -0.768375 3.91137
+2.06898 -0.332937 3.44129
+-1.59694 -6.03268 26.0641
+-3.68367 -8.39356 37.0266
+7.81033 -5.67486 34.6998
+0.544719 -29.7868 137.124
+-20.218 -63.9067 276.578
+20.1771 -68.9134 339.645
+27.6117 -169.137 817.148
+-78.8942 -420.292 1845.92
+33.383 -629.515 2821.62
+190.446 -1180.91 5631.93
+-218.641 -2808.22 12703.5
+152.303 -5238.68 22736.7
+-637.955 -10279 47740.1
+-14856.1 -21926 107953
+-38192.6 -30216.2 143233
+-17621.6 -15485.6 33683
+-6122.75 -6128.97 7894.54
+-1839.74 -2093.5 1824.77
+-500.227 -640.855 412.583
+-127.206 -178.731 90.584
+-32.6587 -45.805 19.1745
+-10.6519 -10.8476 3.88455
+-5.9712 -2.37661 0.744919
+-5.13159 -0.46252 0.129672
+-5.10076 -0.0459622 0.014737
+-5.24106 0.0500378 -0.00574226
+-5.42219 0.078684 -0.0090741
+-5.61536 0.0913739 -0.00930934
+-5.81157 0.0982827 -0.00892155
+-6.00538 0.101348 -0.0083244
+-6.19157 0.100857 -0.00756561
+-6.36491 0.0969284 -0.00664636
+-6.52074 0.0899171 -0.00559249
+-6.65564 0.0804769 -0.00446491
+-6.76791 0.0694563 -0.00334663
+-6.85764 0.0577361 -0.00232201
+-6.92639 0.0460822 -0.00145832
+-6.97674 0.0350554 -0.000794876
+-7.01174 0.0249872 -0.000340819
+-7.03442 0.0160078 -7.97999e-05
+-7.0475 0.00810465 2.15009e-05
+-7.0532 0.00118894 3.99801e-06
+-7.05324 -0.00484783 -9.17621e-05
+-7.04893 -0.0100957 -0.000230959
+-7.04123 -0.014609 -0.000387035
+-7.03092 -0.0184056 -0.000541911
+-7.0187 -0.0214778 -0.000684726
+-7.00521 -0.0238062 -0.000809962
+-6.9911 -0.0253744 -0.000915574
+-6.97703 -0.0261792 -0.00100145
+-6.96361 -0.0262381 -0.00106828
+-6.95145 -0.0255923 -0.00111683
+-6.94106 -0.0243063 -0.00114762
+-6.93287 -0.022462 -0.00116105
+0 -0.0201526 -0.00115774
+28.0607 -0.0301023 -0.00284188
+28.0485 -0.0431086 -0.00330943
+28.0427 -0.0563233 -0.00375952
+28.0436 -0.0692622 -0.00417184
+28.051 -0.0813578 -0.00452683
+28.0648 -0.0919831 -0.0048048
+28.084 -0.100477 -0.00498534
+28.1076 -0.10617 -0.0050481
+28.1342 -0.108404 -0.00497467
+28.1618 -0.106556 -0.0047517
+28.1881 -0.100055 -0.00437504
+28.2102 -0.0884025 -0.00385472
+28.2244 -0.0711842 -0.0032204
+28.2259 -0.048095 -0.00252613
+28.209 -0.0189658 -0.00185317
+28.1664 0.0161903 -0.00130888
+28.0893 0.0571107 -0.00102048
+27.9678 0.103193 -0.00112261
+27.7915 0.153388 -0.00173951
+27.5501 0.206089 -0.00296411
+27.235 0.259053 -0.00483857
+26.8405 0.309373 -0.00734193
+26.3654 0.353546 -0.0103904
+25.8135 0.387646 -0.0138526
+25.1945 0.407567 -0.0175758
+24.5236 0.409266 -0.0214076
+23.8211 0.388794 -0.0251719
+23.1145 0.341653 -0.0284563
+22.4492 0.259667 -0.0294672
+21.9402 0.117082 -0.0188586
+22.0203 -0.192592 0.053413
+24.6099 -1.13708 0.450422
+38.376 -4.72674 2.50932
+100.96 -19.1755 12.7862
+366.424 -76.0317 62.3898
+1421.65 -288.536 294.941
+5312.26 -1034.05 1359.51
+18317 -3464.04 6145.96
+55499.4 -10682.8 27417.4
+128408 -29270.3 121571
+53910.2 -63785.4 541046
+4146.24 -49769.5 436704
+-944.503 -25024.8 211256
+695.029 -12874.3 101423
+-353.9 -7171.27 56666.9
+-190.71 -3386.93 27802.2
+180.995 -1738.09 13805
+-31.4877 -1066.34 8246.74
+-53.787 -500.119 4143.19
+40.4374 -230.748 1918.84
+1.96191 -164.051 1226.43
+-17.4696 -80.4254 644.893
+7.63546 -26.6101 250.295
+3.57381 -23.3005 174.997
+-4.7505 -14.635 109.11
+0.865627 -2.94793 33.043
+1.54941 -2.89183 23.6852
+-1.18518 -3.04532 21.3607
+0.0231302 -0.429963 5.75264
+0.651337 -0.427076 4.58533
+-0.787464 -1.35612 9.32044
+0.128491 -0.384592 4.69877
+1.32091 -0.702845 7.93286
+-2.13532 -3.93886 27.4064
+-0.684826 -3.53688 29.8465
+5.99476 -4.35341 46.2683
+-5.57914 -20.0927 147.834
+-8.75993 -30.4997 230.955
+23.8291 -36.8513 344.544
+-6.42278 -112.577 891.03
+-52.07 -222.995 1665.12
+78.8708 -317.251 2641.76
+30.8422 -702.684 5780.06
+-251.065 -1485.45 11444.2
+294.057 -2427.36 19284.8
+459.313 -4809.57 39449.5
+-1053 -10242.1 80932.5
+1394.19 -18513.1 146335
+-6462.6 -36511.1 309831
+-80228.6 -73248.7 645384
+-189669 -94123.2 800653
+-81399.9 -43173.7 179712
+-26525.8 -15688.7 40312.8
+-7543.74 -5038.73 8938.82
+-1964.9 -1480.15 1942.88
+-490.55 -403.357 410.902
+-132.639 -102.951 83.9541
+-52.1705 -24.9758 16.4374
+-35.6091 -5.9204 3.03514
+-32.9116 -1.38464 0.491895
+-33.1499 -0.217079 0.0334505
+-34.05 0.186869 -0.0424585
+-35.1337 0.400437 -0.0507599
+-36.2833 0.546303 -0.0473954
+-37.4541 0.651201 -0.0420732
+-38.6137 0.721103 -0.0363559
+-39.7294 0.757623 -0.0303453
+-40.7682 0.762406 -0.0239868
+-41.7003 0.738514 -0.0173881
+-42.5038 0.690551 -0.0108609
+-43.1678 0.62413 -0.00484048
+-43.6924 0.545103 0.000237196
+-44.0871 0.458879 0.00404259
+-44.3679 0.369967 0.006415
+-44.5539 0.281822 0.0073735
+-44.6641 0.196905 0.00708722
+-44.7159 0.116888 0.00582285
+-44.7234 0.0428974 0.00388708
+-44.6976 -0.0242648 0.00157772
+-44.647 -0.0839694 -0.000849605
+-44.5778 -0.135684 -0.00319758
+-44.4948 -0.178961 -0.00532907
+-44.4025 -0.213465 -0.00715984
+-44.3046 -0.239014 -0.00864709
+-44.205 -0.25562 -0.00977777
+-44.1075 -0.26351 -0.0105585
+-44.0156 -0.263131 -0.0110078
+-43.9328 -0.255145 -0.0111503
+-43.8618 -0.240395 -0.0110131
+-43.8052 -0.219863 -0.0106259
+0 -0.194614 -0.0100209
+117.532 -0.189688 -0.0120899
+117.503 -0.298907 -0.0157298
+117.503 -0.410488 -0.0193317
+117.534 -0.520177 -0.0227382
+117.596 -0.623069 -0.0257843
+117.687 -0.713738 -0.0282955
+117.805 -0.786411 -0.0300896
+117.946 -0.835165 -0.0309835
+118.104 -0.854173 -0.030806
+118.27 -0.837963 -0.0294156
+118.435 -0.781719 -0.026722
+118.586 -0.681588 -0.0227127
+118.707 -0.535007 -0.0174796
+118.778 -0.341034 -0.0112435
+118.773 -0.100689 -0.00436968
+118.661 0.182709 0.00263202
+118.406 0.503211 0.00912971
+117.965 0.851922 0.0144168
+117.295 1.21674 0.0177825
+116.355 1.58218 0.0185962
+115.11 1.92935 0.0163884
+113.537 2.23619 0.0109076
+111.635 2.47794 0.00212982
+109.423 2.62804 -0.00978513
+106.945 2.65928 -0.0245785
+104.27 2.54504 -0.0419589
+101.486 2.26026 -0.0615158
+98.7102 1.78105 -0.0820261
+96.1205 1.08037 -0.0978901
+94.1078 0.109851 -0.0800041
+94.0115 -1.27197 0.128324
+101.626 -3.58685 1.36305
+143.389 -8.86854 7.95571
+337.016 -24.9558 41.603
+1179.66 -80.9902 207.611
+4632.93 -280.274 1003.74
+17800.7 -968.772 4735.53
+63430.9 -3223.82 21937.1
+199077 -10045.9 100436
+478036 -28074.3 457946
+212153 -62582.4 2.10058e+06
+21732.8 -49915.3 1.77618e+06
+-4327.83 -25809.1 909245
+2266.12 -14128.6 441091
+-667.011 -8269.29 245501
+-822.78 -3909.88 126146
+505.061 -2004.67 62995.1
+21.2162 -1278.43 36211.2
+-184.691 -609.861 19149.8
+84.7259 -276.219 9168.52
+26.2147 -197.654 5311.55
+-45.478 -96.6632 2913.71
+13.1899 -31.2936 1297.78
+11.4726 -28.7024 764.552
+-11.1398 -17.7291 462.205
+1.05006 -3.02195 187.187
+4.0646 -3.54844 110.516
+-2.68921 -3.84017 84.0883
+-0.0984166 -0.370559 34.4005
+1.55688 -0.447756 24.6707
+-1.84683 -1.72806 35.1225
+0.502589 -0.391502 26.886
+2.94714 -0.688899 44.5842
+-5.39059 -4.94976 107.589
+-0.301939 -4.32015 142.943
+13.6063 -4.64235 255.93
+-16.664 -24.377 621.06
+-13.4251 -37.4263 1019.55
+59.7048 -43.5387 1779.98
+-44.1265 -135.589 3990.13
+-102.268 -268.267 7217.94
+258.552 -380.015 12628.9
+-69.3934 -855.218 26538
+-675.352 -1770.2 50032
+1213.01 -2779.41 87740.5
+767.92 -5499.15 177699
+-3348.66 -11626.9 347678
+6255.29 -19841.2 631168
+-33154.4 -36476.4 1.32018e+06
+-312647 -70940.6 2.59768e+06
+-699863 -89179 3.07833e+06
+-289645 -40080.2 670886
+-91195.1 -14336.3 146465
+-25114.9 -4583 31668
+-6368.11 -1365.77 6721.38
+-1574.93 -390.041 1389.46
+-445.846 -111.141 277.618
+-198.444 -34.1809 53.107
+-148.648 -12.544 9.51172
+-141.014 -5.47181 1.42953
+-142.406 -2.2447 0.0230169
+-145.988 -0.165442 -0.183108
+-150.283 1.42902 -0.182172
+-154.887 2.70328 -0.148139
+-159.621 3.70056 -0.111143
+-164.341 4.43533 -0.0760526
+-168.9 4.91827 -0.0430943
+-173.15 5.16411 -0.0120032
+-176.96 5.19367 0.0168967
+-180.232 5.03338 0.0425585
+-182.916 4.71355 0.063528
+-185.01 4.26623 0.0784135
+-186.552 3.72334 0.0862929
+-187.609 3.11517 0.0869411
+-188.26 2.46952 0.0808575
+-188.588 1.81124 0.0691342
+-188.668 1.16203 0.0532358
+-188.562 0.540547 0.0347607
+-188.321 -0.0375653 0.015237
+-187.982 -0.559544 -0.00401758
+-187.575 -1.01544 -0.0219667
+-187.121 -1.39806 -0.0378675
+-186.641 -1.70287 -0.0512444
+-186.151 -1.92795 -0.0618437
+-185.667 -2.0738 -0.0695852
+-185.203 -2.14317 -0.0745182
+-184.773 -2.14079 -0.0767849
+-184.389 -2.07309 -0.0765904
+-184.063 -1.94785 -0.0741809
+-183.802 -1.77379 -0.0698329
+0 -1.56026 -0.0638492
+253.942 -0.598827 -0.0286791
+253.875 -0.958495 -0.0382173
+253.875 -1.32618 -0.0476383
+253.945 -1.68774 -0.0565239
+254.088 -2.02692 -0.0644314
+254.303 -2.3258 -0.0708949
+254.587 -2.56533 -0.0754348
+254.932 -2.72603 -0.0775779
+255.325 -2.7888 -0.0768906
+255.75 -2.73583 -0.0730211
+256.185 -2.55166 -0.0657504
+256.602 -2.22421 -0.05505
+256.964 -1.74589 -0.0411412
+257.224 -1.11477 -0.0245467
+257.325 -0.335629 -0.00612341
+257.196 0.579018 0.0129402
+256.753 1.60794 0.0311722
+255.906 2.72044 0.0469194
+254.557 3.87574 0.0584982
+252.617 5.02287 0.0643774
+250.011 6.1009 0.0633581
+246.696 7.04007 0.05471
+242.669 7.76382 0.0382225
+237.981 8.19202 0.0141541
+232.736 8.24532 -0.0168883
+227.095 7.85046 -0.0540244
+221.266 6.94578 -0.0958502
+215.519 5.48542 -0.138937
+210.247 3.43918 -0.170436
+206.272 0.779393 -0.128585
+206.342 -2.57361 0.313538
+222.376 -6.95252 2.90625
+309.518 -13.6718 16.8107
+717.384 -27.6329 88.4995
+2518.95 -66.415 446.756
+10028.1 -190.963 2189.91
+39189.1 -604.341 10491.6
+142247 -1944.22 49425.9
+455367 -6010 230474
+1.11724e+06 -16799.9 1.07195e+06
+512610 -37311.3 5.02357e+06
+59571.9 -29488.3 4.38306e+06
+-11497.2 -15338.3 2.32939e+06
+4810.5 -9164.45 1.14695e+06
+-601.448 -5500.07 641122
+-2023.56 -2386.2 338979
+950.008 -1267.37 171158
+208.013 -909.601 96679.8
+-413.16 -404.141 52218
+124.06 -165.188 25507.8
+88.0238 -137.617 14222
+-84.9488 -63.3694 7938.44
+11.2525 -15.6922 3739.21
+26.1844 -21.2134 2057.79
+-17.7779 -12.4369 1228.26
+-0.8243 0.0163247 561.053
+7.48958 -2.40969 306.828
+-3.93757 -3.14039 214.37
+-0.540959 0.208753 105.363
+2.46145 -0.112875 72.9572
+-2.91343 -1.49368 87.3288
+1.26383 -0.0236737 81.0835
+4.1704 0.0337832 133.619
+-9.58506 -4.03084 273.963
+2.71101 -2.81104 400.922
+20.8141 -0.664629 758.973
+-35.8267 -17.3537 1641.75
+-7.05866 -27.189 2754.53
+107.08 -22.3146 5108.4
+-131.63 -90.5295 10803.1
+-136.629 -186.173 19294.2
+559.745 -227.79 35025.3
+-365.275 -573.51 71900.5
+-1228.81 -1261.04 132860
+2894.26 -1753.15 237003
+437.997 -3367.65 473196
+-6922.26 -7724.95 898500
+16375.3 -12767.1 1.62246e+06
+-89077.1 -21324.5 3.33702e+06
+-744995 -41028.8 6.3208e+06
+-1.61458e+06 -51986 7.26155e+06
+-654534 -23479.2 1.54991e+06
+-202229 -8420.76 331969
+-54726.9 -2728.45 70534.7
+-13656.5 -848.344 14734.3
+-3335.79 -268.171 3002.21
+-943.243 -94.0863 592.162
+-426.193 -40.4349 112.073
+-322.926 -21.3114 19.9533
+-306.826 -11.9766 3.02846
+-309.36 -5.58711 0.0891832
+-316.576 -0.346962 -0.349649
+-325.463 4.16131 -0.352631
+-335.166 7.99289 -0.280728
+-345.264 11.1195 -0.198177
+-355.408 13.5094 -0.117071
+-365.242 15.1527 -0.0396346
+-374.415 16.0682 0.0332979
+-382.62 16.3029 0.10006
+-389.635 15.9266 0.15786
+-395.341 15.025 0.203383
+-399.731 13.693 0.233693
+-402.885 12.028 0.247003
+-404.949 10.1257 0.243091
+-406.104 8.07654 0.22331
+-406.535 5.96351 0.190292
+-406.413 3.86109 0.147476
+-405.887 1.83451 0.0985978
+-405.077 -0.0606756 0.0472583
+-404.077 -1.77868 -0.00338644
+-402.959 -3.28359 -0.0507873
+-401.779 -4.54922 -0.093046
+-400.583 -5.55897 -0.128875
+-399.408 -6.30536 -0.157517
+-398.287 -6.78947 -0.178651
+-397.249 -7.02017 -0.192302
+-396.319 -7.01313 -0.198764
+-395.515 -6.78975 -0.198528
+-394.856 -6.37594 -0.192231
+-394.35 -5.80088 -0.180616
+0 -5.09576 -0.164516
+396.723 -1.12183 -0.0415663
+396.542 -1.80276 -0.0540556
+396.443 -2.49902 -0.0662138
+396.437 -3.18372 -0.0774696
+396.531 -3.82602 -0.0872303
+396.73 -4.39194 -0.0948846
+397.032 -4.84546 -0.0998154
+397.432 -5.14981 -0.101432
+397.919 -5.26911 -0.0992167
+398.476 -5.17012 -0.0927856
+399.076 -4.82421 -0.0819612
+399.683 -4.20948 -0.0668528
+400.246 -3.31283 -0.0479374
+400.701 -2.13207 -0.0261272
+400.962 -0.677929 -0.00280532
+400.924 1.02416 0.0201933
+400.462 2.93247 0.0406727
+399.432 4.9878 0.0562502
+397.687 7.11281 0.0646052
+395.081 9.21204 0.0637747
+391.495 11.1731 0.0524454
+386.852 12.8691 0.0301746
+381.139 14.1634 -0.00252031
+374.422 14.916 -0.0442339
+366.848 14.9935 -0.0928565
+358.651 14.2799 -0.145695
+350.14 12.6908 -0.19911
+341.718 10.1848 -0.246268
+333.973 6.77231 -0.26587
+328.153 2.51245 -0.160999
+328.5 -2.51931 0.581069
+353.783 -8.34231 4.73581
+492.197 -15.4182 27.0045
+1148.33 -25.7471 142.808
+4082.17 -46.4674 727.421
+16450.8 -102.161 3601.37
+65013.7 -277.312 17430.9
+238561 -854.989 82980.8
+772145 -2699.77 391149
+1.91651e+06 -7894.72 1.83985e+06
+893449 -18346.9 8.72457e+06
+108464 -14973.5 7.74415e+06
+-21582.1 -8346.03 4.19971e+06
+8014.29 -5421.71 2.09125e+06
+-54.0325 -3081.15 1.17753e+06
+-3642.16 -1167.96 633669
+1378.25 -727.933 322609
+509.835 -577.761 181022
+-682.492 -204.131 98934.7
+152.897 -69.8823 49009.9
+176.811 -85.7523 26948.6
+-130.81 -34.979 15156.3
+1.04853 -3.86718 7317.87
+46.9725 -14.0643 3919.79
+-22.9397 -7.51836 2334.81
+-5.31805 1.8039 1126.47
+11.2545 -1.52374 594.729
+-4.33039 -2.2423 399.467
+-1.36568 0.585788 214.561
+3.02154 0.0989875 146.249
+-3.61454 -1.15735 160.572
+2.44194 0.185428 163.593
+4.3308 0.536882 269.432
+-14.0303 -2.87523 509.994
+8.84927 -1.69726 779.413
+25.7612 1.76097 1513.52
+-61.8417 -10.7223 3108.35
+10.0222 -17.6855 5247.88
+160.028 -6.42881 9954.59
+-252.03 -52.1091 20516.2
+-153.803 -115.634 36443.9
+902.903 -97.9531 66975.7
+-811.522 -303.889 135323
+-1732.85 -815.652 247219
+5089.03 -1019 443566
+-602.626 -1694.61 876421
+-11312.3 -4415.43 1.63335e+06
+30325.8 -7675.59 2.92496e+06
+-159626 -11805.6 5.94055e+06
+-1.28178e+06 -21173.9 1.10235e+07
+-2.73595e+06 -25990.7 1.2452e+07
+-1.09696e+06 -11242.8 2.62777e+06
+-335366 -3867.71 556816
+-89800.7 -1234.93 117090
+-22157.9 -404.683 24212.2
+-5344.66 -150.971 4883.31
+-1492.85 -70.2664 953.229
+-671.579 -40.7859 178.619
+-510.074 -26.4225 31.6279
+-485.293 -16.4489 4.89296
+-489.127 -7.79554 0.244121
+-499.977 0.246325 -0.503309
+-513.276 7.66879 -0.568999
+-527.746 14.2749 -0.506617
+-542.75 19.8552 -0.414123
+-557.747 24.2503 -0.311168
+-572.192 27.372 -0.2029
+-585.551 29.2058 -0.0925054
+-597.364 29.8034 0.0155716
+-607.304 29.2692 0.115274
+-615.21 27.7451 0.199913
+-621.09 25.3958 0.263584
+-625.094 22.3964 0.302358
+-627.468 18.9224 0.314906
+-628.51 15.1434 0.302521
+-628.523 11.2174 0.268639
+-627.788 7.28849 0.218104
+-626.546 3.48393 0.15637
+-624.989 -0.0865897 0.0888094
+-623.266 -3.33209 0.0202247
+-621.487 -6.18071 -0.0454302
+-619.732 -8.57978 -0.105136
+-618.062 -10.4955 -0.156769
+-616.52 -11.9122 -0.19899
+-615.141 -12.8309 -0.231116
+-613.948 -13.2682 -0.252993
+-612.959 -13.2538 -0.264879
+-612.186 -12.8284 -0.267346
+-611.634 -12.0417 -0.261196
+-611.299 -10.9495 -0.247407
+0 -9.61135 -0.227098
+514.208 -1.41329 -0.039899
+513.807 -2.27413 -0.0470842
+513.458 -3.15443 -0.0535586
+513.179 -4.02004 -0.0589306
+512.985 -4.83191 -0.0628346
+512.888 -5.54706 -0.0649245
+512.899 -6.11997 -0.0648801
+513.024 -6.50434 -0.0624322
+513.266 -6.6551 -0.057404
+513.619 -6.53076 -0.0497671
+514.069 -6.0959 -0.0397084
+514.591 -5.3239 -0.0277073
+515.141 -4.19954 -0.0146092
+515.654 -2.72168 -0.00168331
+516.04 -0.905615 0.00936266
+516.18 1.21472 0.0164365
+515.924 3.58508 0.0172072
+515.095 6.1297 0.00935438
+513.504 8.75086 -0.00909205
+510.957 11.3294 -0.0393602
+507.288 13.7267 -0.0815647
+502.376 15.7884 -0.134445
+496.172 17.3507 -0.1953
+488.722 18.2495 -0.260173
+480.171 18.3333 -0.324211
+470.765 17.4786 -0.382002
+460.849 15.608 -0.42735
+450.884 12.7075 -0.450752
+441.574 8.84052 -0.425628
+434.47 4.14932 -0.230759
+435.001 -1.16395 0.791067
+467.676 -6.89738 6.26864
+649.366 -12.9823 35.7021
+1522.45 -19.7645 190.23
+5468.43 -28.762 977.512
+22247.2 -45.7943 4878.45
+88602 -96.0854 23779.5
+327261 -289.917 113925
+1.06557e+06 -1048.77 540181
+2.65989e+06 -3599.47 2.55523e+06
+1.24715e+06 -9584.71 1.2185e+07
+152253 -8512.23 1.09096e+07
+-31439.1 -5065.91 5.9801e+06
+11476.1 -3156.6 3.0066e+06
+532.291 -1601.96 1.70801e+06
+-5346.29 -601.384 929654
+1778.78 -478.533 476455
+855.662 -344.906 267566
+-941.44 -72.5072 147581
+173.028 -28.0297 73829.4
+268.572 -62.6622 40436.8
+-177.111 -20.4401 22849.3
+-11.7267 2.68153 11173.6
+70.0233 -8.55664 5928.79
+-27.2207 -4.9326 3538.49
+-11.1768 1.57381 1751.8
+15.1461 -1.07204 909.983
+-4.09774 -1.40425 601.954
+-2.44615 0.640891 338.18
+3.27151 0.111077 228.732
+-4.01116 -0.862786 240.621
+3.91796 0.163129 256.158
+3.76449 0.649765 422.356
+-18.6186 -1.81975 767.525
+16.5349 -1.19154 1192.32
+29.7206 1.64034 2341.97
+-90.3338 -7.02568 4695.02
+29.387 -10.6025 7924.54
+213.301 2.04711 15132.2
+-372.865 -32.2546 30779.7
+-163.08 -84.0744 54473.4
+1223.68 -40.428 100359
+-1301.12 -125.344 200540
+-2195.47 -503.466 363037
+7351.02 -681.681 650305
+-1652.05 -916.469 1.27465e+06
+-16028.9 -2399.87 2.34715e+06
+43615.5 -4615.99 4.16298e+06
+-221459 -7448.86 8.36802e+06
+-1.77072e+06 -12703 1.53644e+07
+-3.76021e+06 -14564.8 1.72139e+07
+-1.49961e+06 -5634.69 3.61396e+06
+-455810 -1703.81 761765
+-121228 -491.454 159279
+-29661.8 -166.148 32723.7
+-7079.21 -77.4928 6549.46
+-1957.14 -48.0895 1266.54
+-879.799 -34.2832 234.704
+-672.155 -24.7664 41.1349
+-641.568 -16.1828 6.3903
+-646.991 -7.58866 0.376789
+-660.782 1.05246 -0.661932
+-677.228 9.43482 -0.845888
+-694.771 17.1645 -0.861168
+-712.65 23.8782 -0.822857
+-730.234 29.2978 -0.752169
+-746.885 33.2505 -0.654508
+-761.988 35.6698 -0.534327
+-775.021 36.583 -0.398774
+-785.634 36.0926 -0.257809
+-793.687 34.3559 -0.122635
+-799.253 31.5656 -0.00363724
+-802.578 27.9324 0.0913474
+-804.025 23.6729 0.157969
+-804.011 18.9993 0.195467
+-802.951 14.1125 0.20611
+-801.223 9.19731 0.194262
+-799.137 4.41916 0.165364
+-796.937 -0.0786739 0.125037
+-794.799 -4.17657 0.0784404
+-792.84 -7.77954 0.0299071
+-791.136 -10.8176 -0.0171856
+-789.729 -13.2455 -0.0603774
+-788.637 -15.0417 -0.0980027
+-787.863 -16.2066 -0.129044
+-787.397 -16.7606 -0.152993
+-787.222 -16.7415 -0.169728
+-787.315 -16.2014 -0.179411
+-787.646 -15.2034 -0.182411
+-788.183 -13.8188 -0.179256
+0 -12.1236 -0.170624
+593.407 -1.19368 -0.0245041
+592.729 -1.92169 -0.0193617
+592.038 -2.66614 -0.0130495
+591.357 -3.3981 -0.00564966
+590.708 -4.08448 0.00264977
+590.117 -4.6889 0.0115775
+589.608 -5.17292 0.0207926
+589.206 -5.49745 0.0298823
+588.934 -5.62459 0.0383459
+588.811 -5.51957 0.0455669
+588.847 -5.15298 0.0507749
+589.04 -4.50295 0.0529996
+589.369 -3.5575 0.051026
+589.789 -2.31666 0.0433697
+590.222 -0.794508 0.0282967
+590.553 0.979168 0.00391878
+590.627 2.95756 -0.0316103
+590.254 5.07603 -0.0797895
+589.215 7.25201 -0.14137
+587.282 9.38576 -0.215913
+584.245 11.3623 -0.301394
+579.934 13.0548 -0.393966
+574.254 14.3305 -0.487994
+567.203 15.0585 -0.576432
+558.887 15.1209 -0.651466
+549.52 14.4263 -0.705203
+539.426 12.9254 -0.72979
+529.066 10.6256 -0.715078
+519.179 7.60271 -0.633971
+511.472 4.00321 -0.356287
+512.071 0.0307761 0.853561
+549.082 -4.08753 7.15448
+758.32 -8.14787 41.2268
+1776.54 -11.9749 221.886
+6420.94 -15.2906 1149.81
+26302.7 -17.8557 5776
+105322 -24.2318 28296
+390620 -74.7518 136090
+1.27594e+06 -371.297 647275
+3.19331e+06 -1585.85 3.06974e+06
+1.49899e+06 -4757.15 1.46732e+07
+182088 -4353.38 1.31933e+07
+-38040 -2471.86 7.27801e+06
+14461.5 -1402.15 3.69188e+06
+679.794 -718.722 2.11483e+06
+-6723.84 -370.441 1.15925e+06
+2206.77 -330.852 597800
+1149.61 -184.891 337494
+-1176.59 -16.9803 187476
+184.595 -23.2145 94323.1
+348.909 -49.8304 51671.9
+-214.248 -12.589 29338.5
+-22.6364 5.19532 14466.2
+89.3606 -4.08589 7657.62
+-31.2764 -3.31827 4577.85
+-16.3004 0.626101 2293.61
+18.8513 -0.652821 1185.11
+-3.79473 -0.661289 781.293
+-3.55655 0.465919 448.538
+3.38282 0.012075 302.141
+-4.28716 -0.603712 311.632
+5.43079 0.0300982 338.066
+3.18706 0.488605 558.283
+-23.0491 -0.882713 994.822
+23.1922 -0.745449 1550.8
+33.8025 0.594206 3055.46
+-114.238 -4.61228 6058.33
+44.9889 -5.00986 10213.6
+256.232 5.43836 19513.6
+-476.21 -20.517 39360
+-166.944 -66.2322 69358.3
+1512.28 -31.7247 127619
+-1707.06 -41.4058 253343
+-2711.28 -275.39 455345
+9151.7 -468.238 810827
+-2018.81 -573.549 1.57829e+06
+-20097.4 -1150.64 2.885e+06
+52226.9 -2159.1 5.07287e+06
+-263029 -3792.96 1.01058e+07
+-2.11426e+06 -6855.24 1.8447e+07
+-4.48664e+06 -7816.48 2.05928e+07
+-1.78516e+06 -2831.9 4.31501e+06
+-540878 -762.386 907466
+-143209 -191.009 189173
+-34820.1 -64.6158 38704.2
+-8243.17 -37.4259 7701.43
+-2265.8 -28.4407 1477.19
+-1024.33 -22.6359 270.71
+-789.943 -17.2643 46.8132
+-757.154 -11.5699 7.19879
+-764.214 -5.37315 0.412794
+-779.989 1.16964 -0.821876
+-798.157 7.72856 -1.13278
+-817.025 13.9256 -1.26046
+-835.795 19.4147 -1.31818
+-853.823 23.9247 -1.32153
+-870.471 27.2779 -1.27206
+-885.13 29.3907 -1.17286
+-897.303 30.2638 -1.03206
+-906.686 29.9662 -0.862556
+-913.215 28.6175 -0.679744
+-917.059 26.3705 -0.498723
+-918.574 23.3973 -0.33198
+-918.241 19.8773 -0.188059
+-916.583 15.989 -0.0712676
+-914.108 11.9028 0.0177933
+-911.264 7.7772 0.0812248
+-908.409 3.75458 0.1227
+-905.805 -0.0408079 0.146465
+-903.629 -3.50482 0.156612
+-901.98 -6.55448 0.156674
+-900.9 -9.12843 0.149477
+-900.387 -11.1867 0.137181
+-900.409 -12.71 0.121403
+-900.914 -13.6981 0.103358
+-901.839 -14.1681 0.0839856
+-903.113 -14.1519 0.0640447
+-904.659 -13.6939 0.0441857
+-906.404 -12.8479 0.0249918
+-908.272 -11.6746 0.00698226
+0 -10.2388 -0.00942232
+636.343 -0.467528 -0.00666234
+635.434 -0.752785 0.010924
+634.449 -1.04448 0.0300542
+633.411 -1.33126 0.0501554
+632.352 -1.60015 0.070473
+631.305 -1.83688 0.0901114
+630.308 -2.0264 0.108068
+629.402 -2.15342 0.123258
+628.63 -2.20312 0.134524
+628.031 -2.16195 0.140644
+627.64 -2.0185 0.140322
+627.478 -1.76434 0.132184
+627.548 -1.39495 0.114759
+627.826 -0.910576 0.0864911
+628.252 -0.316958 0.0457894
+628.721 0.373997 -0.00884454
+629.083 1.14375 -0.0785903
+629.141 1.96686 -0.163973
+628.665 2.81099 -0.264436
+627.404 3.63727 -0.377892
+625.115 4.40111 -0.500336
+621.592 5.05364 -0.625665
+616.699 5.54398 -0.745828
+610.389 5.82246 -0.851387
+602.726 5.84494 -0.932423
+593.884 5.5782 -0.979537
+584.151 5.00592 -0.984305
+573.964 4.13452 -0.937257
+564.059 2.99742 -0.813284
+556.192 1.65578 -0.48279
+556.769 0.19338 0.816537
+595.524 -1.29532 7.48136
+817.563 -2.71726 43.7666
+1908.39 -3.96149 237.686
+6917.37 -4.77809 1239.67
+28459.6 -4.59879 6256.1
+114351 -3.55914 30746.6
+425130 -11.5737 148204
+1.39093e+06 -87.6539 705964
+3.48489e+06 -437.624 3.35165e+06
+1.63543e+06 -1381 1.60347e+07
+197777 -1242.9 1.44462e+07
+-41147.3 -649.907 7.99946e+06
+16178.3 -358.352 4.08475e+06
+376.594 -223.051 2.35286e+06
+-7546.03 -160.951 1.29438e+06
+2591.83 -138.332 670751
+1323.24 -65.5676 380907
+-1361.67 -6.22965 212512
+190.801 -13.8319 107163
+408.88 -21.6458 58796.5
+-235.534 -4.94265 33542
+-30.1034 2.46907 16632.2
+100.928 -1.16483 8801.5
+-34.471 -1.29182 5263.05
+-19.2795 0.0745006 2650.67
+21.6793 -0.216735 1370.07
+-3.72029 -0.170833 904.121
+-4.43503 0.164137 523.461
+3.44652 -0.0248121 351.618
+-4.48873 -0.237515 359.793
+6.625 -0.0224046 392.994
+2.97054 0.174771 650.279
+-26.4705 -0.237372 1149.94
+27.0825 -0.255727 1790.57
+37.2506 0.0250203 3523.54
+-128.581 -1.77009 6953.6
+55.1717 -1.43669 11719.6
+280.777 2.63794 22373.4
+-552.256 -7.99837 44876.1
+-168.8 -28.6028 78726.1
+1741.16 -18.238 144541
+-1943.88 -14.3387 286143
+-3193.6 -96.5525 512026
+10209.2 -192.386 906088
+-1703.2 -243.379 1.75446e+06
+-22428.8 -371.125 3.19528e+06
+56145.7 -585.867 5.58749e+06
+-284938 -1043.33 1.10611e+07
+-2.30003e+06 -2040.61 2.01267e+07
+-4.88347e+06 -2397.82 2.24361e+07
+-1.94131e+06 -862.139 4.6988e+06
+-587223 -222.516 987346
+-155059 -51.7225 205520
+-37546.1 -17.496 41946
+-8842.01 -11.4475 8314.43
+-2424.78 -9.50736 1585.48
+-1104.47 -7.89992 288.074
+-859.215 -6.16029 49.2393
+-826.464 -4.17682 7.46813
+-834.811 -1.93403 0.388277
+-851.705 0.490862 -0.94041
+-870.617 2.96204 -1.34287
+-889.812 5.32597 -1.56522
+-908.49 7.44112 -1.71091
+-926.029 9.19513 -1.78777
+-941.82 10.5124 -1.79221
+-955.295 11.355 -1.72456
+-966.008 11.7188 -1.59248
+-973.721 11.627 -1.41022
+-978.445 11.1238 -1.19586
+-980.439 10.267 -0.967931
+-980.149 9.12283 -0.7426
+-978.143 7.76075 -0.532014
+-975.023 6.25045 -0.343793
+-971.36 4.65894 -0.181486
+-967.643 3.04867 -0.0455464
+-964.254 1.47606 0.0655114
+-961.461 -0.00957619 0.154087
+-959.428 -1.3668 0.222752
+-958.229 -2.56254 0.273833
+-957.869 -3.57227 0.309272
+-958.302 -4.38001 0.330669
+-959.447 -4.97794 0.339399
+-961.203 -5.36585 0.336744
+-963.455 -5.55038 0.323991
+-966.084 -5.54409 0.302495
+-968.97 -5.36441 0.273704
+-971.998 -5.03253 0.239162
+-975.056 -4.57232 0.200458
+0 -4.00924 0.159146
+649.623 0.467528 0.00104675
+648.625 0.752785 0.0238044
+647.523 1.04448 0.0482494
+646.344 1.33126 0.073603
+645.121 1.60014 0.0988741
+643.89 1.83688 0.122907
+642.696 2.0264 0.144426
+641.585 2.15342 0.162068
+640.608 2.20312 0.174407
+639.813 2.16195 0.179976
+639.244 2.0185 0.177273
+638.932 1.76434 0.164766
+638.89 1.39495 0.140898
+639.103 0.910576 0.104105
+639.518 0.316958 0.0528797
+640.036 -0.373997 -0.0140865
+640.51 -1.14375 -0.097671
+640.742 -1.96686 -0.197974
+640.497 -2.81099 -0.313887
+639.516 -3.63727 -0.442643
+637.546 -4.40111 -0.579444
+634.366 -5.05364 -0.717304
+629.824 -5.54398 -0.847256
+623.857 -5.82246 -0.958978
+616.51 -5.84494 -1.04181
+607.938 -5.5782 -1.08589
+598.415 -5.00592 -1.08272
+588.365 -4.13452 -1.0233
+578.519 -2.99742 -0.883664
+570.638 -1.65578 -0.535716
+571.19 -0.19338 0.787116
+610.317 1.29532 7.54118
+835.691 2.71726 44.4203
+1946.93 3.96149 242.121
+7062.54 4.77809 1265.94
+29100.8 4.59879 6399.52
+117070 3.55914 31487.3
+435593 11.5737 151887
+1.42589e+06 87.6539 723841
+3.57353e+06 437.624 3.43751e+06
+1.67664e+06 1381 1.64488e+07
+202426 1242.9 1.48279e+07
+-42002.2 649.906 8.22153e+06
+16649.2 358.351 4.2083e+06
+153.28 223.052 2.4285e+06
+-7809.21 160.952 1.33737e+06
+2752.42 138.332 694349
+1375.82 65.5676 395304
+-1435.19 6.22964 220860
+193.186 13.8319 111424
+432.307 21.6458 61185.5
+-241.893 4.94262 34978.6
+-32.8683 -2.46908 17381.4
+104.539 1.16482 9197.9
+-35.6895 1.29183 5499.34
+-20.1517 -0.0745091 2773.82
+22.7616 0.216741 1435.03
+-3.74574 0.170838 947.8
+-4.78031 -0.164145 549.8
+3.46963 0.0247994 368.857
+-4.56508 0.237506 376.66
+7.09172 0.0223748 412.087
+2.95801 -0.174788 682.577
+-27.7879 0.237662 1204.98
+28.2331 0.255114 1874.48
+38.6053 -0.0261685 3684.53
+-133.064 1.76847 7261.58
+58.8523 1.43602 12239.6
+288.061 -2.63786 23357.9
+-581.791 7.9984 46753.1
+-169.868 28.6029 81853.6
+1832.76 18.2383 150129
+-2015.21 14.3388 297018
+-3398.08 96.5518 530713
+10542.8 192.384 936676
+-1434.28 243.38 1.81003e+06
+-23064 371.127 3.29308e+06
+57206.6 585.868 5.74825e+06
+-291501 1043.33 1.13541e+07
+-2.35644e+06 2040.61 2.06388e+07
+-5.00485e+06 2397.82 2.2999e+07
+-1.98912e+06 862.139 4.81636e+06
+-601375 222.516 1.01184e+06
+-158648 51.7225 210525
+-38358.9 17.496 42932
+-9016.85 11.4475 8498.21
+-2471.46 9.50736 1617.04
+-1129.55 7.89992 292.85
+-881.859 6.16029 49.824
+-849.419 4.17682 7.51028
+-858.263 1.93403 0.370805
+-875.522 -0.490862 -0.983068
+-894.632 -2.96203 -1.41826
+-913.852 -5.32597 -1.67708
+-932.386 -7.44112 -1.85792
+-949.622 -9.19513 -1.96514
+-964.969 -10.5124 -1.9928
+-977.877 -11.355 -1.93986
+-987.925 -11.7188 -1.81353
+-994.903 -11.627 -1.6284
+-998.856 -11.1238 -1.40341
+-1000.08 -10.267 -1.15833
+-999.046 -9.12283 -0.910707
+-996.366 -7.76075 -0.674098
+-992.667 -6.25045 -0.457467
+-988.542 -4.65894 -0.265594
+-984.496 -3.04867 -0.100036
+-980.916 -1.47606 0.0397232
+-978.073 0.00957629 0.155247
+-976.122 1.3668 0.24841
+-975.126 2.56254 0.320977
+-975.075 3.57227 0.374474
+-975.905 4.38001 0.410229
+-977.515 4.97794 0.429489
+-979.784 5.36585 0.433544
+-982.576 5.55038 0.423815
+-985.753 5.54409 0.401896
+-989.177 5.36441 0.369567
+-992.717 5.03253 0.328772
+-996.249 4.57232 0.281548
+0 4.00924 0.229925
+636.343 1.19368 -0.00666228
+635.434 1.92169 0.010924
+634.449 2.66614 0.0300542
+633.411 3.3981 0.0501553
+632.352 4.08448 0.070473
+631.305 4.6889 0.0901114
+630.308 5.17292 0.108068
+629.402 5.49745 0.123258
+628.63 5.62459 0.134524
+628.031 5.51957 0.140644
+627.64 5.15298 0.140323
+627.478 4.50295 0.132184
+627.548 3.5575 0.114759
+627.826 2.31666 0.0864911
+628.252 0.794508 0.0457894
+628.721 -0.979168 -0.00884452
+629.083 -2.95756 -0.0785903
+629.141 -5.07603 -0.163972
+628.665 -7.25201 -0.264436
+627.404 -9.38576 -0.377892
+625.115 -11.3623 -0.500336
+621.592 -13.0548 -0.625665
+616.699 -14.3305 -0.745828
+610.389 -15.0585 -0.851387
+602.726 -15.1209 -0.932423
+593.884 -14.4263 -0.979537
+584.151 -12.9254 -0.984305
+573.964 -10.6256 -0.937257
+564.059 -7.60271 -0.813284
+556.192 -4.00321 -0.48279
+556.769 -0.0307759 0.816537
+595.524 4.08753 7.48136
+817.563 8.14787 43.7666
+1908.39 11.9749 237.686
+6917.37 15.2906 1239.67
+28459.6 17.8557 6256.1
+114351 24.2318 30746.6
+425130 74.7518 148204
+1.39093e+06 371.297 705964
+3.48489e+06 1585.85 3.35165e+06
+1.63543e+06 4757.15 1.60347e+07
+197777 4353.38 1.44462e+07
+-41147.3 2471.86 7.99946e+06
+16178.3 1402.15 4.08475e+06
+376.593 718.723 2.35286e+06
+-7546.03 370.441 1.29438e+06
+2591.83 330.852 670751
+1323.24 184.891 380907
+-1361.67 16.9803 212512
+190.801 23.2145 107163
+408.88 49.8304 58796.5
+-235.534 12.589 33542
+-30.1034 -5.19532 16632.2
+100.928 4.08588 8801.5
+-34.471 3.31824 5263.05
+-19.2795 -0.626088 2650.67
+21.6793 0.65282 1370.07
+-3.7203 0.661291 904.121
+-4.43503 -0.465923 523.461
+3.44655 -0.0120757 351.618
+-4.48871 0.603715 359.793
+6.625 -0.0300887 392.994
+2.97055 -0.488559 650.279
+-26.4716 0.882479 1149.94
+27.0821 0.744919 1790.56
+37.2513 -0.594999 3523.54
+-128.58 4.61162 6953.6
+55.1716 5.00967 11719.6
+280.777 -5.43866 22373.4
+-552.256 20.5169 44876.1
+-168.799 66.2323 78726.1
+1741.16 31.7249 144541
+-1943.88 41.4059 286143
+-3193.59 275.39 512026
+10209.2 468.239 906088
+-1703.2 573.552 1.75446e+06
+-22428.8 1150.64 3.19528e+06
+56145.7 2159.11 5.58749e+06
+-284938 3792.96 1.10611e+07
+-2.30003e+06 6855.24 2.01267e+07
+-4.88347e+06 7816.48 2.24361e+07
+-1.94131e+06 2831.9 4.6988e+06
+-587223 762.386 987346
+-155059 191.009 205520
+-37546.1 64.6158 41946
+-8842.01 37.4259 8314.43
+-2424.78 28.4407 1585.48
+-1104.47 22.6359 288.074
+-859.215 17.2643 49.2393
+-826.464 11.5699 7.46813
+-834.811 5.37315 0.388277
+-851.705 -1.16964 -0.94041
+-870.617 -7.72856 -1.34287
+-889.812 -13.9256 -1.56522
+-908.49 -19.4147 -1.71091
+-926.029 -23.9247 -1.78777
+-941.82 -27.2779 -1.79221
+-955.295 -29.3907 -1.72456
+-966.008 -30.2638 -1.59248
+-973.721 -29.9662 -1.41022
+-978.445 -28.6175 -1.19586
+-980.439 -26.3705 -0.967931
+-980.149 -23.3973 -0.7426
+-978.143 -19.8773 -0.532014
+-975.023 -15.989 -0.343793
+-971.36 -11.9028 -0.181486
+-967.643 -7.7772 -0.0455464
+-964.254 -3.75458 0.0655114
+-961.461 0.0408079 0.154087
+-959.428 3.50482 0.222752
+-958.229 6.55448 0.273833
+-957.869 9.12843 0.309272
+-958.302 11.1867 0.330669
+-959.447 12.71 0.339399
+-961.203 13.6981 0.336744
+-963.455 14.1681 0.323991
+-966.084 14.1519 0.302495
+-968.97 13.6939 0.273704
+-971.998 12.8479 0.239162
+-975.056 11.6746 0.200458
+0 10.2388 0.159146
+593.407 1.41329 -0.0245041
+592.729 2.27413 -0.0193616
+592.038 3.15443 -0.0130495
+591.357 4.02004 -0.00564967
+590.708 4.83191 0.00264978
+590.117 5.54706 0.0115775
+589.608 6.11997 0.0207926
+589.206 6.50434 0.0298823
+588.934 6.6551 0.0383459
+588.811 6.53076 0.0455669
+588.847 6.0959 0.0507749
+589.04 5.3239 0.0529996
+589.369 4.19954 0.051026
+589.789 2.72168 0.0433697
+590.222 0.905615 0.0282967
+590.553 -1.21472 0.00391883
+590.627 -3.58508 -0.0316103
+590.254 -6.1297 -0.0797894
+589.215 -8.75086 -0.14137
+587.283 -11.3294 -0.215913
+584.245 -13.7267 -0.301394
+579.934 -15.7884 -0.393966
+574.254 -17.3507 -0.487994
+567.203 -18.2495 -0.576432
+558.887 -18.3333 -0.651466
+549.52 -17.4786 -0.705203
+539.426 -15.608 -0.72979
+529.066 -12.7075 -0.715078
+519.179 -8.84052 -0.633971
+511.472 -4.14932 -0.356287
+512.071 1.16395 0.853561
+549.082 6.89738 7.15448
+758.32 12.9823 41.2268
+1776.54 19.7645 221.886
+6420.94 28.762 1149.81
+26302.7 45.7943 5776
+105322 96.0854 28296
+390620 289.917 136090
+1.27594e+06 1048.77 647275
+3.19331e+06 3599.47 3.06974e+06
+1.49899e+06 9584.71 1.46732e+07
+182088 8512.23 1.31933e+07
+-38040 5065.91 7.27801e+06
+14461.5 3156.6 3.69188e+06
+679.794 1601.96 2.11483e+06
+-6723.85 601.384 1.15925e+06
+2206.77 478.533 597800
+1149.61 344.906 337494
+-1176.59 72.5072 187476
+184.595 28.0297 94323.1
+348.909 62.6622 51671.9
+-214.248 20.4401 29338.5
+-22.6364 -2.68153 14466.2
+89.3606 8.55664 7657.62
+-31.2764 4.93262 4577.85
+-16.3004 -1.57379 2293.61
+18.8513 1.07207 1185.11
+-3.79474 1.40428 781.293
+-3.55654 -0.640872 448.538
+3.38284 -0.111071 302.141
+-4.28712 0.862799 311.632
+5.43082 -0.163122 338.066
+3.18677 -0.649802 558.283
+-23.0503 1.81963 994.822
+23.1918 1.19119 1550.8
+33.8036 -1.64111 3055.46
+-114.238 7.02487 6058.33
+44.9887 10.6022 10213.6
+256.232 -2.0475 19513.6
+-476.21 32.2544 39360
+-166.944 84.0744 69358.3
+1512.28 40.4283 127619
+-1707.06 125.345 253343
+-2711.28 503.469 455345
+9151.7 681.685 810827
+-2018.81 916.473 1.57829e+06
+-20097.4 2399.87 2.885e+06
+52226.9 4615.99 5.07287e+06
+-263029 7448.86 1.01058e+07
+-2.11426e+06 12703 1.8447e+07
+-4.48664e+06 14564.8 2.05928e+07
+-1.78516e+06 5634.69 4.31501e+06
+-540878 1703.81 907466
+-143209 491.454 189173
+-34820.1 166.148 38704.2
+-8243.17 77.4928 7701.43
+-2265.8 48.0895 1477.19
+-1024.33 34.2832 270.71
+-789.943 24.7664 46.8132
+-757.154 16.1828 7.19879
+-764.214 7.58866 0.412794
+-779.989 -1.05246 -0.821876
+-798.157 -9.43482 -1.13278
+-817.025 -17.1645 -1.26046
+-835.795 -23.8782 -1.31818
+-853.823 -29.2978 -1.32153
+-870.471 -33.2505 -1.27206
+-885.13 -35.6698 -1.17286
+-897.303 -36.583 -1.03206
+-906.686 -36.0926 -0.862556
+-913.215 -34.3559 -0.679744
+-917.059 -31.5656 -0.498723
+-918.574 -27.9324 -0.33198
+-918.241 -23.6729 -0.188059
+-916.583 -18.9993 -0.0712676
+-914.108 -14.1125 0.0177933
+-911.264 -9.19731 0.0812249
+-908.409 -4.41916 0.1227
+-905.805 0.0786738 0.146465
+-903.629 4.17657 0.156612
+-901.98 7.77954 0.156674
+-900.9 10.8176 0.149477
+-900.387 13.2455 0.137181
+-900.409 15.0417 0.121403
+-900.914 16.2066 0.103358
+-901.839 16.7606 0.0839856
+-903.113 16.7415 0.0640447
+-904.659 16.2014 0.0441857
+-906.404 15.2034 0.0249918
+-908.272 13.8188 0.00698226
+0 12.1236 -0.00942232
+514.208 1.12183 -0.039899
+513.807 1.80276 -0.0470842
+513.458 2.49902 -0.0535586
+513.179 3.18372 -0.0589307
+512.985 3.82602 -0.0628346
+512.888 4.39194 -0.0649245
+512.899 4.84546 -0.0648801
+513.024 5.14981 -0.0624322
+513.266 5.26911 -0.057404
+513.619 5.17012 -0.049767
+514.069 4.82421 -0.0397084
+514.591 4.20948 -0.0277073
+515.141 3.31283 -0.0146092
+515.654 2.13207 -0.0016833
+516.04 0.677928 0.00936273
+516.18 -1.02416 0.0164365
+515.924 -2.93247 0.0172072
+515.095 -4.9878 0.00935438
+513.504 -7.11281 -0.00909204
+510.957 -9.21204 -0.0393602
+507.288 -11.1731 -0.0815647
+502.376 -12.8691 -0.134445
+496.172 -14.1634 -0.1953
+488.722 -14.916 -0.260173
+480.171 -14.9935 -0.324211
+470.765 -14.2799 -0.382002
+460.849 -12.6908 -0.42735
+450.884 -10.1848 -0.450752
+441.574 -6.77231 -0.425628
+434.47 -2.51245 -0.230759
+435.001 2.51931 0.791067
+467.676 8.34231 6.26864
+649.366 15.4182 35.7021
+1522.45 25.7471 190.23
+5468.43 46.4674 977.512
+22247.2 102.161 4878.45
+88602 277.312 23779.5
+327261 854.989 113925
+1.06557e+06 2699.77 540181
+2.65989e+06 7894.72 2.55523e+06
+1.24715e+06 18346.9 1.2185e+07
+152253 14973.5 1.09096e+07
+-31439.1 8346.03 5.9801e+06
+11476.1 5421.71 3.0066e+06
+532.291 3081.15 1.70801e+06
+-5346.29 1167.96 929654
+1778.78 727.933 476455
+855.662 577.761 267566
+-941.44 204.131 147581
+173.028 69.8823 73829.4
+268.572 85.7523 40436.8
+-177.111 34.979 22849.3
+-11.7267 3.86718 11173.6
+70.0233 14.0643 5928.79
+-27.2207 7.51837 3538.49
+-11.1768 -1.8039 1751.8
+15.1461 1.52375 909.983
+-4.09776 2.24233 601.954
+-2.44616 -0.585765 338.18
+3.27151 -0.0989786 228.732
+-4.01113 1.15736 240.621
+3.91796 -0.185449 256.158
+3.76433 -0.536899 422.356
+-18.6193 2.87528 767.525
+16.5345 1.6972 1192.32
+29.7212 -1.76143 2341.97
+-90.3332 10.7219 4695.02
+29.387 17.6852 7924.54
+213.301 6.42895 15132.1
+-372.865 52.109 30779.7
+-163.08 115.634 54473.4
+1223.68 97.9534 100359
+-1301.12 303.892 200540
+-2195.47 815.656 363037
+7351.02 1019.01 650305
+-1652.05 1694.61 1.27465e+06
+-16028.9 4415.43 2.34715e+06
+43615.5 7675.59 4.16298e+06
+-221459 11805.6 8.36802e+06
+-1.77072e+06 21173.9 1.53644e+07
+-3.76021e+06 25990.7 1.72139e+07
+-1.49961e+06 11242.8 3.61396e+06
+-455810 3867.71 761765
+-121228 1234.93 159279
+-29661.8 404.683 32723.7
+-7079.21 150.971 6549.46
+-1957.14 70.2664 1266.54
+-879.799 40.7859 234.704
+-672.155 26.4225 41.1349
+-641.568 16.4489 6.3903
+-646.991 7.79554 0.376789
+-660.782 -0.246325 -0.661932
+-677.228 -7.66879 -0.845888
+-694.771 -14.2749 -0.861168
+-712.65 -19.8552 -0.822857
+-730.234 -24.2503 -0.752169
+-746.885 -27.372 -0.654508
+-761.988 -29.2058 -0.534327
+-775.021 -29.8034 -0.398774
+-785.634 -29.2692 -0.257809
+-793.687 -27.7451 -0.122635
+-799.253 -25.3958 -0.00363722
+-802.578 -22.3964 0.0913474
+-804.025 -18.9224 0.157969
+-804.011 -15.1434 0.195467
+-802.951 -11.2174 0.20611
+-801.223 -7.28849 0.194262
+-799.137 -3.48393 0.165364
+-796.937 0.0865897 0.125037
+-794.799 3.33209 0.0784404
+-792.84 6.18071 0.0299072
+-791.136 8.57978 -0.0171856
+-789.729 10.4955 -0.0603774
+-788.637 11.9122 -0.0980027
+-787.863 12.8309 -0.129044
+-787.397 13.2682 -0.152993
+-787.222 13.2538 -0.169728
+-787.315 12.8284 -0.179411
+-787.646 12.0417 -0.182411
+-788.183 10.9495 -0.179256
+0 9.61135 -0.170624
+396.723 0.598827 -0.0415663
+396.542 0.958495 -0.0540556
+396.443 1.32618 -0.0662138
+396.437 1.68774 -0.0774696
+396.531 2.02692 -0.0872303
+396.73 2.3258 -0.0948846
+397.032 2.56533 -0.0998154
+397.432 2.72603 -0.101432
+397.919 2.7888 -0.0992167
+398.476 2.73583 -0.0927856
+399.076 2.55166 -0.0819612
+399.683 2.22421 -0.0668528
+400.246 1.74589 -0.0479374
+400.701 1.11477 -0.0261272
+400.962 0.335629 -0.00280531
+400.924 -0.579018 0.0201933
+400.462 -1.60794 0.0406727
+399.432 -2.72044 0.0562502
+397.687 -3.87574 0.0646052
+395.081 -5.02287 0.0637747
+391.495 -6.1009 0.0524454
+386.852 -7.04007 0.0301746
+381.139 -7.76382 -0.0025203
+374.422 -8.19202 -0.0442339
+366.848 -8.24532 -0.0928565
+358.651 -7.85046 -0.145695
+350.14 -6.94578 -0.19911
+341.718 -5.48542 -0.246268
+333.973 -3.43918 -0.26587
+328.153 -0.779393 -0.160999
+328.5 2.57361 0.581069
+353.783 6.95252 4.73581
+492.197 13.6718 27.0045
+1148.33 27.6329 142.808
+4082.17 66.415 727.421
+16450.8 190.963 3601.37
+65013.7 604.341 17430.9
+238561 1944.22 82980.8
+772145 6010 391149
+1.91651e+06 16799.9 1.83985e+06
+893449 37311.3 8.72457e+06
+108464 29488.3 7.74415e+06
+-21582.1 15338.3 4.19971e+06
+8014.29 9164.45 2.09125e+06
+-54.0313 5500.07 1.17753e+06
+-3642.16 2386.2 633669
+1378.25 1267.37 322609
+509.835 909.601 181022
+-682.492 404.141 98934.7
+152.897 165.188 49009.9
+176.811 137.617 26948.6
+-130.81 63.3694 15156.3
+1.04856 15.6923 7317.87
+46.9724 21.2134 3919.79
+-22.9397 12.4369 2334.81
+-5.31803 -0.0163789 1126.47
+11.2545 2.40968 594.729
+-4.33039 3.14036 399.467
+-1.3657 -0.208769 214.561
+3.02153 0.112865 146.249
+-3.61452 1.4937 160.572
+2.44194 0.0236668 163.593
+4.3307 -0.0337277 269.432
+-14.0307 4.031 509.994
+8.84892 2.8111 779.413
+25.7618 0.664668 1513.52
+-61.8408 17.3548 3108.35
+10.0233 27.1904 5247.88
+160.029 22.3154 9954.59
+-252.03 90.5303 20516.2
+-153.803 186.173 36443.9
+902.902 227.789 66975.7
+-811.525 573.513 135323
+-1732.85 1261.04 247219
+5089.03 1753.15 443566
+-602.624 3367.64 876421
+-11312.3 7724.95 1.63335e+06
+30325.8 12767.1 2.92496e+06
+-159626 21324.5 5.94055e+06
+-1.28178e+06 41028.8 1.10235e+07
+-2.73595e+06 51986 1.2452e+07
+-1.09696e+06 23479.2 2.62777e+06
+-335366 8420.76 556816
+-89800.7 2728.45 117090
+-22157.9 848.344 24212.2
+-5344.66 268.171 4883.31
+-1492.85 94.0863 953.229
+-671.579 40.4349 178.619
+-510.074 21.3114 31.6279
+-485.293 11.9766 4.89296
+-489.127 5.58711 0.244121
+-499.977 0.346962 -0.503309
+-513.276 -4.16131 -0.568999
+-527.746 -7.99289 -0.506617
+-542.75 -11.1195 -0.414123
+-557.747 -13.5094 -0.311168
+-572.192 -15.1527 -0.2029
+-585.551 -16.0682 -0.0925054
+-597.364 -16.3029 0.0155716
+-607.304 -15.9266 0.115274
+-615.21 -15.025 0.199913
+-621.09 -13.693 0.263584
+-625.094 -12.028 0.302358
+-627.468 -10.1257 0.314906
+-628.51 -8.07654 0.302521
+-628.523 -5.96351 0.268639
+-627.788 -3.86109 0.218104
+-626.546 -1.83451 0.15637
+-624.989 0.0606756 0.0888094
+-623.266 1.77868 0.0202248
+-621.487 3.28359 -0.0454302
+-619.732 4.54922 -0.105136
+-618.062 5.55897 -0.156769
+-616.52 6.30536 -0.19899
+-615.141 6.78947 -0.231116
+-613.948 7.02017 -0.252993
+-612.959 7.01313 -0.264879
+-612.186 6.78975 -0.267346
+-611.634 6.37594 -0.261196
+-611.299 5.80088 -0.247407
+0 5.09576 -0.227098
+253.942 0.189688 -0.0286791
+253.875 0.298907 -0.0382173
+253.875 0.410488 -0.0476383
+253.945 0.520177 -0.0565239
+254.088 0.623069 -0.0644314
+254.303 0.713738 -0.0708949
+254.587 0.786411 -0.0754348
+254.932 0.835165 -0.0775779
+255.325 0.854173 -0.0768906
+255.75 0.837963 -0.0730211
+256.185 0.781719 -0.0657504
+256.602 0.681588 -0.05505
+256.964 0.535007 -0.0411412
+257.224 0.341034 -0.0245467
+257.325 0.100689 -0.0061234
+257.196 -0.182709 0.0129402
+256.753 -0.503211 0.0311722
+255.906 -0.851922 0.0469194
+254.557 -1.21674 0.0584982
+252.617 -1.58218 0.0643774
+250.011 -1.92935 0.0633581
+246.696 -2.23619 0.05471
+242.669 -2.47794 0.0382225
+237.981 -2.62804 0.0141541
+232.736 -2.65928 -0.0168883
+227.095 -2.54504 -0.0540244
+221.266 -2.26026 -0.0958502
+215.519 -1.78105 -0.138937
+210.247 -1.08037 -0.170436
+206.272 -0.109851 -0.128585
+206.342 1.27197 0.313538
+222.376 3.58685 2.90625
+309.518 8.86854 16.8107
+717.384 24.9558 88.4995
+2518.95 80.9902 446.756
+10028.1 280.274 2189.91
+39189.1 968.772 10491.6
+142247 3223.82 49425.9
+455367 10045.9 230474
+1.11724e+06 28074.3 1.07195e+06
+512610 62582.4 5.02357e+06
+59571.9 49915.3 4.38306e+06
+-11497.2 25809.1 2.32939e+06
+4810.5 14128.6 1.14695e+06
+-601.447 8269.29 641122
+-2023.56 3909.88 338979
+950.008 2004.67 171158
+208.013 1278.43 96679.8
+-413.16 609.861 52218
+124.06 276.219 25507.8
+88.0238 197.654 14222
+-84.9488 96.6632 7938.44
+11.2526 31.2936 3739.21
+26.1844 28.7024 2057.79
+-17.778 17.729 1228.26
+-0.824274 3.02193 561.053
+7.48958 3.54838 306.828
+-3.93756 3.84019 214.37
+-0.540955 0.370556 105.363
+2.46145 0.447764 72.9572
+-2.91345 1.72812 87.3288
+1.26398 0.391546 81.0837
+4.17034 0.688885 133.62
+-9.58526 4.94982 273.962
+2.71059 4.32013 400.922
+20.8138 4.64295 758.972
+-35.8261 24.3792 1641.75
+-7.05773 37.4284 2754.53
+107.079 43.5378 5108.4
+-131.63 135.59 10803.1
+-136.628 268.267 19294.2
+559.746 380.015 35025.3
+-365.278 855.218 71900.5
+-1228.81 1770.2 132860
+2894.26 2779.42 237003
+437.998 5499.15 473196
+-6922.27 11626.9 898500
+16375.3 19841.2 1.62246e+06
+-89077.1 36476.4 3.33702e+06
+-744995 70940.6 6.3208e+06
+-1.61458e+06 89179 7.26155e+06
+-654534 40080.2 1.54991e+06
+-202229 14336.3 331969
+-54726.9 4583 70534.7
+-13656.5 1365.77 14734.3
+-3335.79 390.041 3002.21
+-943.243 111.141 592.162
+-426.193 34.1809 112.073
+-322.926 12.544 19.9533
+-306.826 5.47181 3.02846
+-309.36 2.2447 0.0891832
+-316.576 0.165442 -0.349649
+-325.463 -1.42902 -0.352631
+-335.166 -2.70328 -0.280728
+-345.264 -3.70056 -0.198177
+-355.408 -4.43533 -0.117071
+-365.242 -4.91827 -0.0396346
+-374.415 -5.16411 0.0332979
+-382.62 -5.19367 0.10006
+-389.635 -5.03338 0.15786
+-395.341 -4.71355 0.203383
+-399.731 -4.26623 0.233693
+-402.885 -3.72334 0.247003
+-404.949 -3.11517 0.243091
+-406.104 -2.46952 0.22331
+-406.535 -1.81124 0.190292
+-406.413 -1.16203 0.147476
+-405.887 -0.540547 0.0985978
+-405.077 0.0375653 0.0472583
+-404.077 0.559544 -0.00338643
+-402.959 1.01544 -0.0507873
+-401.779 1.39806 -0.093046
+-400.583 1.70287 -0.128875
+-399.408 1.92795 -0.157517
+-398.287 2.0738 -0.178651
+-397.249 2.14317 -0.192302
+-396.319 2.14079 -0.198764
+-395.515 2.07309 -0.198528
+-394.856 1.94785 -0.192231
+-394.35 1.77379 -0.180616
+0 1.56026 -0.164516
+117.532 0.0301023 -0.0120899
+117.503 0.0431086 -0.0157298
+117.503 0.0563233 -0.0193317
+117.534 0.0692622 -0.0227382
+117.596 0.0813578 -0.0257843
+117.687 0.0919831 -0.0282955
+117.805 0.100477 -0.0300896
+117.946 0.10617 -0.0309835
+118.104 0.108404 -0.0308061
+118.27 0.106556 -0.0294156
+118.435 0.100055 -0.026722
+118.586 0.0884025 -0.0227127
+118.707 0.0711842 -0.0174796
+118.778 0.048095 -0.0112435
+118.773 0.0189658 -0.00436968
+118.661 -0.0161903 0.00263202
+118.406 -0.0571107 0.00912972
+117.965 -0.103193 0.0144168
+117.295 -0.153388 0.0177825
+116.355 -0.206089 0.0185962
+115.11 -0.259053 0.0163884
+113.537 -0.309373 0.0109076
+111.635 -0.353546 0.00212982
+109.423 -0.387646 -0.00978513
+106.945 -0.407567 -0.0245785
+104.27 -0.409266 -0.0419589
+101.486 -0.388794 -0.0615158
+98.7102 -0.341653 -0.0820261
+96.1205 -0.259667 -0.0978901
+94.1078 -0.117082 -0.0800041
+94.0115 0.192592 0.128324
+101.626 1.13708 1.36305
+143.389 4.72674 7.95571
+337.016 19.1755 41.603
+1179.66 76.0317 207.611
+4632.93 288.536 1003.74
+17800.7 1034.05 4735.53
+63430.9 3464.04 21937.1
+199077 10682.8 100436
+478036 29270.3 457946
+212153 63785.4 2.10058e+06
+21732.8 49769.5 1.77618e+06
+-4327.82 25024.8 909245
+2266.12 12874.3 441091
+-667.013 7171.27 245501
+-822.781 3386.93 126146
+505.06 1738.09 62995.1
+21.216 1066.34 36211.2
+-184.691 500.119 19149.8
+84.7259 230.748 9168.52
+26.2147 164.051 5311.55
+-45.478 80.4254 2913.71
+13.19 26.6101 1297.78
+11.4724 23.3001 764.55
+-11.1399 14.6348 462.205
+1.05005 2.9478 187.187
+4.06462 2.8918 110.516
+-2.68922 3.04528 84.0884
+-0.0984045 0.42996 34.4005
+1.55695 0.427135 24.6706
+-1.84697 1.35615 35.1218
+0.502716 0.384718 26.8856
+2.94721 0.702937 44.5842
+-5.39071 3.9389 107.589
+-0.30243 3.53687 142.943
+13.6053 4.35349 255.931
+-16.6623 20.093 621.059
+-13.4271 30.4977 1019.54
+59.7058 36.8509 1779.97
+-44.1247 112.578 3990.13
+-102.267 222.995 7217.94
+258.552 317.251 12628.9
+-69.3933 702.683 26538
+-675.349 1485.45 50032
+1213.01 2427.35 87740.5
+767.92 4809.58 177699
+-3348.66 10242.1 347678
+6255.3 18513.1 631168
+-33154.4 36511.1 1.32018e+06
+-312647 73248.7 2.59768e+06
+-699863 94123.2 3.07833e+06
+-289645 43173.7 670886
+-91195.1 15688.7 146465
+-25114.9 5038.73 31668
+-6368.11 1480.15 6721.38
+-1574.93 403.357 1389.46
+-445.846 102.951 277.618
+-198.444 24.9758 53.107
+-148.648 5.9204 9.51172
+-141.014 1.38464 1.42953
+-142.406 0.217079 0.0230169
+-145.988 -0.186869 -0.183108
+-150.283 -0.400437 -0.182172
+-154.887 -0.546303 -0.148139
+-159.621 -0.651201 -0.111143
+-164.341 -0.721103 -0.0760526
+-168.9 -0.757623 -0.0430943
+-173.15 -0.762406 -0.0120032
+-176.96 -0.738514 0.0168967
+-180.232 -0.690551 0.0425585
+-182.916 -0.62413 0.063528
+-185.01 -0.545103 0.0784136
+-186.552 -0.458879 0.0862929
+-187.609 -0.369967 0.0869411
+-188.26 -0.281822 0.0808575
+-188.588 -0.196905 0.0691342
+-188.668 -0.116888 0.0532358
+-188.562 -0.0428974 0.0347607
+-188.321 0.0242648 0.015237
+-187.982 0.0839694 -0.00401759
+-187.575 0.135684 -0.0219667
+-187.121 0.178961 -0.0378675
+-186.641 0.213465 -0.0512444
+-186.151 0.239014 -0.0618437
+-185.667 0.25562 -0.0695852
+-185.203 0.26351 -0.0745182
+-184.773 0.263131 -0.0767849
+-184.389 0.255145 -0.0765904
+-184.063 0.240395 -0.0741809
+-183.802 0.219863 -0.0698329
+0 0.194614 -0.0638492
+28.0607 0.00430822 -0.00284188
+28.0485 0.00552335 -0.00330943
+28.0427 0.00673953 -0.00375952
+28.0436 0.00791499 -0.00417184
+28.051 0.00899926 -0.00452683
+28.0648 0.00993667 -0.0048048
+28.084 0.0106701 -0.00498534
+28.1076 0.0111433 -0.0050481
+28.1342 0.0113024 -0.00497467
+28.1618 0.0110957 -0.0047517
+28.1881 0.0104728 -0.00437504
+28.2102 0.00938254 -0.00385472
+28.2244 0.00777046 -0.0032204
+28.2259 0.0055767 -0.00252613
+28.209 0.00273648 -0.00185317
+28.1664 -0.000815315 -0.00130888
+28.0893 -0.0051334 -0.00102048
+27.9678 -0.0102446 -0.00112261
+27.7915 -0.0161243 -0.00173951
+27.5501 -0.0226709 -0.00296411
+27.235 -0.0296833 -0.00483857
+26.8405 -0.03685 -0.00734193
+26.3654 -0.0437557 -0.0103904
+25.8135 -0.0499102 -0.0138526
+25.1945 -0.0547911 -0.0175758
+24.5236 -0.0578803 -0.0214076
+23.8211 -0.0586419 -0.0251719
+23.1145 -0.0562752 -0.0284563
+22.4492 -0.0484927 -0.0294672
+21.9402 -0.0256214 -0.0188586
+22.0203 0.0575243 0.053413
+24.6099 0.409138 0.450422
+38.376 1.93944 2.50932
+100.96 8.36767 12.7862
+366.424 33.7835 62.3898
+1421.65 127.315 294.941
+5312.26 444.908 1359.51
+18317 1427.74 6145.96
+55499.4 4133.63 27417.4
+128408 10385 121571
+53910.2 20232.6 541046
+4146.24 14711.6 436704
+-944.501 6965.41 211256
+695.029 3605.94 101423
+-353.903 1944.43 56666.9
+-190.71 826.037 27802.2
+180.996 451.142 13805
+-31.4877 299.646 8246.74
+-53.7869 118.829 4143.19
+40.4374 50.7249 1918.84
+1.9619 47.1751 1226.43
+-17.4697 20.9114 644.893
+7.63534 4.06673 250.295
+3.57373 6.53891 174.997
+-4.75076 4.33191 109.111
+0.865383 0.132531 33.0432
+1.54922 0.679935 23.6852
+-1.18519 0.998724 21.3609
+0.0231327 -0.00849642 5.7526
+0.651469 0.0490756 4.58516
+-0.787517 0.453974 9.32053
+0.128483 0.00640655 4.69871
+1.32107 0.0590597 7.93279
+-2.13528 1.30162 27.4064
+-0.685162 0.768253 29.847
+5.99322 0.332271 46.2696
+-5.57866 6.03111 147.834
+-8.75881 8.3932 230.952
+23.8302 5.67328 344.545
+-6.42177 29.7876 891.03
+-52.0696 63.9066 1665.12
+78.8708 68.9136 2641.76
+30.842 169.137 5780.06
+-251.065 420.292 11444.2
+294.065 629.515 19284.8
+459.316 1180.9 39449.5
+-1053 2808.22 80932.5
+1394.19 5238.68 146335
+-6462.6 10278.9 309831
+-80228.6 21926 645384
+-189669 30216.2 800653
+-81399.9 15485.6 179712
+-26525.8 6128.97 40312.8
+-7543.74 2093.5 8938.82
+-1964.9 640.855 1942.88
+-490.55 178.731 410.902
+-132.639 45.805 83.9541
+-52.1705 10.8476 16.4374
+-35.6091 2.37661 3.03514
+-32.9116 0.46252 0.491895
+-33.1499 0.0459622 0.0334505
+-34.05 -0.0500378 -0.0424585
+-35.1337 -0.078684 -0.0507599
+-36.2833 -0.0913739 -0.0473954
+-37.4541 -0.0982827 -0.0420732
+-38.6137 -0.101348 -0.0363559
+-39.7294 -0.100857 -0.0303453
+-40.7682 -0.0969284 -0.0239868
+-41.7003 -0.0899171 -0.0173881
+-42.5038 -0.0804769 -0.0108609
+-43.1678 -0.0694563 -0.00484048
+-43.6924 -0.0577361 0.000237198
+-44.0871 -0.0460822 0.00404259
+-44.3679 -0.0350554 0.006415
+-44.5539 -0.0249872 0.0073735
+-44.6641 -0.0160078 0.00708722
+-44.7159 -0.00810465 0.00582285
+-44.7234 -0.00118894 0.00388708
+-44.6976 0.00484783 0.00157772
+-44.647 0.0100957 -0.000849606
+-44.5778 0.014609 -0.00319758
+-44.4948 0.0184056 -0.00532907
+-44.4025 0.0214778 -0.00715984
+-44.3046 0.0238062 -0.00864709
+-44.205 0.0253744 -0.00977777
+-44.1075 0.0261792 -0.0105585
+-44.0156 0.0262381 -0.0110078
+-43.9328 0.0255923 -0.0111503
+-43.8618 0.0243063 -0.0110131
+-43.8052 0.022462 -0.0106259
+0 0.0201526 -0.0100209
+4.46149 0.000552222 -0.000536323
+4.45862 0.000647688 -0.000568978
+4.45673 0.000740522 -0.000597266
+4.45585 0.000827876 -0.000619811
+4.45596 0.000906106 -0.00063569
+4.457 0.000971194 -0.00064425
+4.45882 0.00101919 -0.000644925
+4.46126 0.00104643 -0.00063724
+4.46405 0.00104959 -0.000620999
+4.46689 0.0010254 -0.000596649
+4.46939 0.000970324 -0.000565813
+4.47108 0.000879873 -0.000531954
+4.47136 0.000747964 -0.000501117
+4.46946 0.000566269 -0.00048256
+4.46444 0.000323943 -0.000489071
+4.45513 7.99867e-06 -0.000536661
+4.4401 -0.000395352 -0.000643399
+4.41775 -0.000898267 -0.000827246
+4.38636 -0.00150786 -0.00110301
+4.34423 -0.00222228 -0.00147885
+4.28992 -0.00302722 -0.00195303
+4.22248 -0.00389385 -0.00251199
+4.14161 -0.0047794 -0.00313068
+4.04791 -0.0056307 -0.00377549
+3.94288 -0.00638969 -0.00440909
+3.82891 -0.00699715 -0.00499409
+3.70931 -0.00738351 -0.00548673
+3.58882 -0.00740167 -0.00578427
+3.47649 -0.0064735 -0.00543598
+3.4003 -0.00177273 -0.00208578
+3.47792 0.0208005 0.0167346
+4.24582 0.12896 0.115138
+8.09795 0.62975 0.609945
+25.1266 2.82779 3.00519
+94.9538 11.8954 14.1881
+360.802 46.8773 64.7609
+1290.72 172.381 287.534
+4210.36 587.003 1249.21
+11958.3 1822.37 5343.58
+25720 4972.74 22664.2
+9922.48 10652.9 96213.7
+392.905 7704.98 72550.9
+-99.7161 3614.11 32347.6
+138.684 1860.21 15682.6
+-137.377 958.739 8830.47
+-17.8436 380.63 3947.5
+54.7844 219.702 2023.44
+-22.1975 152.132 1323.63
+-12.9655 55.7051 579.399
+15.1327 22.7746 248.877
+-1.34088 23.6711 204.567
+-5.56954 10.0998 97.5681
+3.04806 1.59495 25.0401
+0.951434 3.3513 28.6765
+-1.60893 2.16386 18.9528
+0.379816 -0.0563577 2.14932
+0.494678 0.339826 3.32306
+-0.399709 0.5338 4.1883
+0.0172336 -0.0134597 0.274917
+0.209478 0.0121799 0.418266
+-0.267331 0.223245 1.93799
+0.0217969 -0.0139757 0.303197
+0.442876 0.0164941 0.584731
+-0.709561 0.697597 5.40964
+-0.360351 0.378031 3.91161
+2.06814 -0.0036569 3.44116
+-1.59715 3.02494 26.0638
+-3.6828 4.29184 37.0288
+7.81167 2.19544 34.6979
+0.544553 14.4443 137.12
+-20.2185 32.0733 276.577
+20.1764 30.6518 339.644
+27.6114 79.4486 817.147
+-78.8939 213.737 1845.92
+33.3837 305.484 2821.62
+190.451 543.813 5631.95
+-218.643 1391.19 12703.5
+152.301 2713.82 22736.7
+-637.955 5344.21 47740.1
+-14856.1 11503.3 107953
+-38192.6 15934.7 143233
+-17621.6 7427.73 33683
+-6122.75 2706.24 7894.54
+-1839.74 861.826 1824.77
+-500.227 248.554 412.583
+-127.206 65.8659 90.584
+-32.6587 16.1426 19.1745
+-10.6519 3.66974 3.88455
+-5.9712 0.772786 0.744919
+-5.13159 0.146742 0.129672
+-5.10076 0.019437 0.014737
+-5.24106 -0.00567487 -0.00574226
+-5.42219 -0.0108329 -0.0090741
+-5.61536 -0.0120358 -0.00930934
+-5.81157 -0.0122751 -0.00892155
+-6.00538 -0.0120924 -0.0083244
+-6.19157 -0.0115703 -0.00756561
+-6.36491 -0.0107244 -0.00664636
+-6.52074 -0.00959406 -0.00559249
+-6.65564 -0.00825731 -0.00446491
+-6.76791 -0.00681836 -0.00334663
+-6.85764 -0.00538447 -0.00232201
+-6.92639 -0.00404505 -0.00145832
+-6.97674 -0.00285909 -0.000794876
+-7.01174 -0.00185239 -0.000340819
+-7.03442 -0.00102246 -7.97998e-05
+-7.0475 -0.000347911 2.15009e-05
+-7.0532 0.000201244 3.99795e-06
+-7.05324 0.000654946 -9.1762e-05
+-7.04893 0.00103739 -0.000230959
+-7.04123 0.00136455 -0.000387035
+-7.03092 0.00164433 -0.000541911
+-7.0187 0.00187838 -0.000684726
+-7.00521 0.00206449 -0.000809962
+-6.9911 0.00219899 -0.000915574
+-6.97703 0.00227859 -0.00100145
+-6.96361 0.00230169 -0.00106828
+-6.95145 0.00226909 -0.00111683
+-6.94106 0.0021841 -0.00114762
+-6.93287 0.002052 -0.00116105
+0 0.00187926 -0.00115774
+0.543991 5.11191e-05 -8.39502e-05
+0.543538 5.67183e-05 -8.41973e-05
+0.543202 6.193e-05 -8.36813e-05
+0.542988 6.66221e-05 -8.24095e-05
+0.542892 7.06086e-05 -8.04805e-05
+0.542905 7.3682e-05 -7.80596e-05
+0.54301 7.56513e-05 -7.53489e-05
+0.543182 7.63596e-05 -7.25765e-05
+0.543389 7.56776e-05 -7.00075e-05
+0.54359 7.34755e-05 -6.79758e-05
+0.543735 6.95737e-05 -6.69349e-05
+0.543763 6.36748e-05 -6.75254e-05
+0.543596 5.52843e-05 -7.06503e-05
+0.543138 4.36381e-05 -7.75384e-05
+0.542269 2.76617e-05 -8.97664e-05
+0.540839 5.99254e-06 -0.000109206
+0.538669 -2.29049e-05 -0.000137861
+0.535556 -6.05174e-05 -0.000177582
+0.531281 -0.000107963 -0.000229672
+0.525629 -0.000165616 -0.000294435
+0.518418 -0.000232767 -0.000370768
+0.509522 -0.000307406 -0.000455926
+0.498904 -0.000386251 -0.00054559
+0.486635 -0.000465045 -0.000634272
+0.472903 -0.000539014 -0.000715967
+0.458011 -0.000603048 -0.000784553
+0.442395 -0.000650024 -0.000832315
+0.426744 -0.000659859 -0.000839104
+0.412716 -0.000539288 -0.00071223
+0.406636 0.000201255 3.59118e-05
+0.437871 0.00411984 0.00395632
+0.645266 0.0240881 0.0238955
+1.65714 0.121943 0.121621
+6.14011 0.581299 0.580688
+24.5989 2.64855 2.64846
+95.0264 11.6014 11.6121
+341.13 49.1147 49.2067
+1109.4 202.15 202.709
+3120.97 814.214 817.065
+6582.59 3234.03 3246.71
+2247.52 12794.1 12843.6
+-33.49 8831.42 8857.68
+8.76793 3590.96 3592.73
+22.6051 1849.44 1855.33
+-65.5109 1000.68 1004.47
+5.64906 347.163 342.531
+22.759 211.365 210.157
+-12.2736 167.887 170.97
+-4.47422 51.3835 52.1124
+6.7641 17.0929 17.18
+-0.908282 26.7665 28.3316
+-2.19316 10.4112 11.2097
+1.41154 0.00426167 -0.377657
+0.352245 3.93694 3.79736
+-0.655435 2.58438 2.72731
+0.205693 -0.474104 -0.508087
+0.224629 0.356666 0.309404
+-0.153856 0.71717 0.734751
+0.008655 -0.0926055 -0.0986442
+0.0771026 -0.0356925 -0.0103874
+-0.120182 0.287254 0.358371
+-0.0116739 -0.0808473 -0.0591836
+0.152655 -0.067978 -0.0657224
+-0.341602 0.938569 0.956919
+-0.233484 0.363643 0.287621
+0.836625 -0.533187 -0.553239
+-0.631308 3.64479 3.8424
+-1.76309 4.94886 4.7234
+3.12281 0.0108733 -0.457283
+0.700115 15.1627 16.3181
+-9.22369 36.1178 38.036
+7.25559 22.4019 22.357
+15.9656 74.37 75.6692
+-33.5696 236.106 240.273
+-4.59189 291.527 289.401
+94.2325 497.091 491.249
+-40.4983 1455.43 1461.08
+-12.6731 2695.15 2702.09
+39.8491 5315.75 5317.15
+-3375.44 13193.5 13225.2
+-9798.05 19114.4 19171.1
+-4608.56 4823.34 4837.13
+-1616.28 1207.13 1209.96
+-487.089 296.314 296.78
+-131.975 70.7219 70.7694
+-32.9761 16.2876 16.2833
+-7.92277 3.59465 3.59032
+-2.10634 0.755588 0.753904
+-0.865896 0.150297 0.149701
+-0.631037 0.027776 0.0274841
+-0.603447 0.00420339 0.00397294
+-0.617377 -0.000153681 -0.000383288
+-0.640069 -0.00094185 -0.00118295
+-0.664918 -0.00107371 -0.00132703
+-0.690249 -0.00107232 -0.00133472
+-0.715269 -0.00102988 -0.00129574
+-0.739305 -0.000961492 -0.00122346
+-0.761704 -0.000869836 -0.00112004
+-0.781884 -0.000758428 -0.00098991
+-0.799427 -0.000633998 -0.000841849
+-0.814123 -0.000505501 -0.000687551
+-0.825983 -0.000382061 -0.000538963
+-0.835204 -0.00027107 -0.000405908
+-0.842104 -0.00017705 -0.000294667
+-0.847058 -0.000101433 -0.000207655
+-0.85044 -4.30719e-05 -0.000143997
+-0.852585 8.54789e-07 -0.000100573
+-0.853764 3.3853e-05 -7.3195e-05
+-0.854191 5.92918e-05 -5.75906e-05
+-0.854024 7.98711e-05 -5.00669e-05
+-0.853386 9.73977e-05 -4.782e-05
+-0.852377 0.000112813 -4.89566e-05
+-0.851087 0.000126372 -5.23362e-05
+-0.849602 0.00013789 -5.73417e-05
+-0.848007 0.000146968 -6.36556e-05
+-0.846391 0.000153185 -7.10832e-05
+-0.844837 0.000156224 -7.94303e-05
+-0.843425 0.00015595 -8.84344e-05
+-0.842223 0.000152422 -9.775e-05
+-0.841289 0.000145855 -0.000106987
+0 0.000136561 -0.000115766
+0.0480634 0 -9.37625e-06
+0.048016 0 -9.14543e-06
+0.047979 0 -8.82579e-06
+0.0479528 0 -8.43052e-06
+0.047937 0 -7.98355e-06
+0.0479309 0 -7.5174e-06
+0.0479326 0 -7.07005e-06
+0.04794 0 -6.68323e-06
+0.0479498 0 -6.40252e-06
+0.0479584 0 -6.27905e-06
+0.0479609 0 -6.37291e-06
+0.0479515 0 -6.75778e-06
+0.0479232 0 -7.52628e-06
+0.0478669 0 -8.7942e-06
+0.0477715 0 -1.07011e-05
+0.0476232 0 -1.34042e-05
+0.0474057 0 -1.70629e-05
+0.0471003 0 -2.18117e-05
+0.0466871 0 -2.77246e-05
+0.0461464 0 -3.47739e-05
+0.0454614 0 -4.27939e-05
+0.0446207 0 -5.14609e-05
+0.0436209 0 -6.03007e-05
+0.0424685 0 -6.8729e-05
+0.0411808 0 -7.61106e-05
+0.0397863 0 -8.17847e-05
+0.0383274 0 -8.48423e-05
+0.0368817 0 -8.26195e-05
+0.0356818 0 -6.23266e-05
+0.0357587 0 4.36747e-05
+0.0422463 0 0.000587081
+0.0805418 0 0.00332011
+0.271219 0 0.0165528
+1.15924 0 0.0777911
+5.08966 0 0.348571
+21.7007 0 1.49578
+89.0074 0 6.17431
+351.76 0 24.6566
+1346.02 0 96.0488
+5026.46 0 371.283
+1644.67 17085.7 1524.32
+-133.802 11029 990.43
+1.84864 3458.12 381.631
+50.0656 1855.17 237.267
+-52.2952 1152.97 119.245
+0.463494 273.167 13.2584
+26.1756 181.5 14.3633
+-6.28031 216.425 22.8342
+-4.32507 48.2111 3.87488
+7.32273 -0.0174336 -0.655513
+1.2693 34.8992 4.08842
+-1.299 13.9064 1.61694
+1.82994 -4.29853 -0.644211
+1.20121 4.99705 0.507953
+-0.0327333 4.43513 0.557116
+0.574969 -1.22301 -0.15337
+0.608385 0.365191 0.0160757
+0.107737 1.43594 0.116567
+0.0409173 -0.0520939 -0.0412571
+-0.0997282 -0.00492656 0.00575096
+-0.448724 0.607122 0.0815958
+-0.558735 -0.106831 -0.0428506
+-0.694688 0.0667651 -0.0668498
+-1.36184 1.88432 0.117325
+-1.23697 0.267429 -0.0173
+-0.526741 -1.41739 -0.139115
+-2.24038 6.23875 0.806901
+-2.65965 5.73445 0.565015
+1.60615 -5.87588 -1.0408
+-2.60297 20.8927 2.223
+-10.4648 46.6111 5.30547
+6.21903 -2.04753 -1.20927
+6.94029 73.0792 6.2368
+-38.3462 304.381 32.3252
+2.33521 243.392 18.6631
+74.1831 396.535 20.0911
+-79.528 1686.17 177.48
+1.08699 2693.37 348.292
+193.767 5132.44 563.957
+-2475.17 16513.1 1478.3
+-7485.3 25518.5 2275.74
+-1988.49 0 553.716
+-512.698 0 142.404
+-127.169 0 36.1427
+-30.1697 0 8.89113
+-6.83165 0 2.10059
+-1.49358 0 0.473501
+-0.338461 0 0.101325
+-0.10321 0 0.0204945
+-0.0589889 0 0.00387043
+-0.0523974 0 0.000623566
+-0.0529801 0 1.16349e-05
+-0.0549613 0 -0.000104936
+-0.0572467 0 -0.000129493
+-0.0595961 0 -0.00013504
+-0.0619205 0 -0.000134428
+-0.0641552 0 -0.000129775
+-0.06624 0 -0.000121497
+-0.0681224 0 -0.000110089
+-0.0697643 0 -9.64258e-05
+-0.0711469 0 -8.16465e-05
+-0.0722709 0 -6.69205e-05
+-0.073154 0 -5.32299e-05
+-0.0738245 0 -4.12384e-05
+-0.074316 0 -3.12603e-05
+-0.074662 0 -2.33084e-05
+-0.0748921 0 -1.7187e-05
+-0.075031 0 -1.25944e-05
+-0.0750977 0 -9.21052e-06
+-0.0751067 0 -6.75499e-06
+-0.0750693 0 -5.01412e-06
+-0.074995 0 -3.84308e-06
+-0.0748923 0 -3.15216e-06
+-0.0747693 0 -2.88725e-06
+-0.0746345 0 -3.01117e-06
+-0.0744962 0 -3.48936e-06
+-0.0743623 0 -4.28075e-06
+-0.0742404 0 -5.33336e-06
+-0.074137 0 -6.58491e-06
+-0.0740577 0 -7.96779e-06
+0 0 -9.41481e-06
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+10023.7 15564.4 1001.68
+4476.99 29481.7 1335.81
+-1076.32 14675.4 375.761
+371.113 1847.24 132.176
+805.727 2537.44 395.054
+-196.256 2422.25 245.295
+16.2517 68.3617 7.61317
+325.409 80.7444 10.6087
+80.6924 569.111 46.1906
+10.0811 115.231 12.3761
+98.2546 -59.1142 -6.15212
+61.9126 102.206 1.24633
+22.1954 58.6374 1.74203
+39.4699 -12.0583 4.7837
+35.9815 22.3753 9.37742
+20.0741 28.2139 5.87954
+17.2295 6.24188 1.44072
+12.955 9.05028 -1.48685
+1.60525 14.4463 -1.16912
+-9.87805 10.076 -0.741256
+-17.7119 7.0381 -1.21573
+-30.1455 10.7075 -1.58744
+-44.9301 17.2701 -2.14632
+-50.8703 10.9552 -2.94111
+-54.8709 8.52414 1.55246
+-76.6728 38.2096 8.95311
+-79.2862 27.2238 13.0046
+-52.4183 -14.7085 6.2146
+-105.722 80.5573 -3.54819
+-153.46 136.316 -3.33494
+-41.9699 -77.9373 -8.71172
+-156.681 181.169 20.7418
+-480.845 784.387 65.7838
+-22.7161 73.2785 11.9625
+232.122 134.498 11.9415
+-1213.62 3508.49 359.066
+-500.787 3554.45 560.281
+1576.52 2657.52 167.251
+-6705.7 21810.6 541.325
+-14890.6 43917.6 1973.56
+0 23336.9 1488.7
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+12584.9 0 1597.51
+22927.9 0 4952.7
+8727.89 0 4743.23
+-2692.79 0 1312.31
+670.137 0 -163.94
+2495.25 0 443.405
+187.745 0 484.356
+146.281 0 33.8189
+940.821 0 43.6226
+459.927 0 154.16
+132.75 0 40.9583
+308.475 0 -30.4293
+263.053 0 2.31051
+134.51 0 32.5073
+145.413 0 33.9617
+140.556 0 24.6189
+82.8304 0 13.3349
+47.3334 0 -6.32209
+13.6496 0 -7.23114
+-40.6687 0 -3.05194
+-93.6046 0 -4.57542
+-156.394 0 -6.09431
+-200.067 0 -10.7694
+-248.911 0 -11.1151
+-322.49 0 16.1481
+-328.767 0 37.0192
+-320.652 0 49.2917
+-498.41 0 44.5475
+-539.701 0 -1.34529
+-311.013 0 -45.2075
+-802.16 0 71.3274
+-1437.31 0 222.853
+-306.49 0 55.788
+-470.554 0 53.533
+-3732.13 0 695.616
+-940.311 0 619.183
+3774.62 0 -241.746
+-13176.2 0 1994.88
+-34065 0 7105.62
+-18762.9 0 7416.61
+0 0 2415.69
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1433.35 -1638.35 0
+2828.2 -3255.01 0
+1017.6 -1388.44 0
+-379.214 7.29578 0
+417.004 -475.175 0
+753.282 -491.371 0
+215.885 2.15566 0
+85.9328 22.4675 0
+245.819 -97.0337 0
+197.596 -24.4338 0
+99.0216 16.4822 0
+83.7944 -16.4041 0
+61.046 -14.5576 0
+49.102 -0.14974 0
+68.9179 -6.61109 0
+71.5033 -9.24432 0
+53.2694 -2.97553 0
+27.0249 -2.2572 0
+6.10245 -4.51017 0
+-11.9231 -2.91101 0
+-32.6637 -2.31243 0
+-55.9255 -3.51271 0
+-83.1248 -5.06668 0
+-120.771 -4.2508 0
+-146.593 -5.49128 0
+-138.401 -12.0497 0
+-110.191 -8.51404 0
+-127.88 -1.35101 0
+-161.124 -20.8331 0
+-193.047 -21.7112 0
+-327.842 21.722 0
+-379.864 -39.8669 0
+-157.608 -134.905 0
+-372.833 37.733 0
+-1142.88 -9.40037 0
+-620.028 -717.963 0
+514.525 -664.615 0
+-1565.16 40.6363 0
+-4219.98 -2043.66 0
+-2151.12 -4831.6 0
+0 -2450.48 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1191.02 -1827.7 0
+450.96 -1179.15 0
+-182.086 -379.76 0
+187.504 -230.219 0
+238.708 -131.74 0
+2.39409 -10.6356 0
+20.3862 -8.98631 0
+78.2921 -24.8612 0
+32.5187 -5.07028 0
+19.1741 1.29255 0
+33.9226 -4.42042 0
+20.3126 -1.78871 0
+6.58079 1.00429 0
+12.2907 -1.00803 0
+16.2585 -1.37012 0
+12.8736 -0.386326 0
+11.1863 -0.276827 0
+7.79759 -0.135498 0
+2.62042 0.407049 0
+-2.65792 0.404427 0
+-6.46161 0.377322 0
+-11.7314 0.448844 0
+-18.802 0.276724 0
+-25.3801 -0.305519 0
+-28.718 -0.523808 0
+-31.0326 -0.846243 0
+-24.4687 -2.0663 0
+-18.3838 -1.14642 0
+-38.6835 1.45924 0
+-57.359 -2.47634 0
+-36.2648 -5.72526 0
+-56.5747 1.89501 0
+-118.048 -8.26993 0
+-34.5897 -35.0854 0
+-21.3917 -10.6579 0
+-363.451 -16.8864 0
+-271.214 -196.647 0
+273.448 -336.864 0
+-667.577 -561.378 0
+-1764 -1761.7 0
+0 -2725.87 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0.00470816 -4.17364e-06 0
+0.004704 -4.99198e-06 0
+0.00470097 -5.79063e-06 0
+0.00469908 -6.54492e-06 0
+0.00469832 -7.22295e-06 0
+0.00469859 -7.78845e-06 0
+0.00469973 -8.20448e-06 0
+0.00470148 -8.43572e-06 0
+0.00470353 -8.44867e-06 0
+0.00470546 -8.21014e-06 0
+0.00470677 -7.68399e-06 0
+0.00470684 -6.82633e-06 0
+0.00470489 -5.57988e-06 0
+0.00469997 -3.869e-06 0
+0.00469086 -1.59764e-06 0
+0.00467611 1.347e-06 0
+0.00465397 5.08264e-06 0
+0.00462244 9.71035e-06 0
+0.00457943 1.52846e-05 0
+0.00452288 2.17789e-05 0
+0.00445103 2.90541e-05 0
+0.00436273 3.6841e-05 0
+0.00425769 4.47443e-05 0
+0.00413668 5.22739e-05 0
+0.00400168 5.88893e-05 0
+0.00385589 6.40078e-05 0
+0.00370428 6.67683e-05 0
+0.00355714 6.45187e-05 0
+0.00345038 4.4434e-05 0
+0.00355537 -6.13137e-05 0
+0.00474782 -0.000605373 0
+0.0114122 -0.0033443 0
+0.0445704 -0.0166054 0
+0.200317 -0.0779551 0
+0.897992 -0.349104 0
+3.89109 -1.49732 0
+16.2432 -6.17778 0
+65.561 -24.6612 0
+257.657 -96.0473 0
+1000.24 -371.297 0
+387.921 -1524.01 1832.95
+8.1116 -990.222 1181.31
+11.1214 -382.233 381.105
+21.7038 -237.74 234.195
+-5.64682 -119.158 133.965
+0.407028 -13.4179 9.82746
+9.23932 -14.6109 11.1086
+2.11112 -22.9437 28.0573
+-0.0221275 -3.941 4.88745
+3.16117 0.591883 -3.13977
+2.34165 -4.09354 4.58434
+0.57038 -1.56843 3.1657
+0.644897 0.660649 -0.380993
+0.763148 -0.591813 -0.00882656
+0.626722 -0.655496 -0.0957356
+0.764795 -0.00171348 -0.86294
+0.76439 -0.104236 -0.264592
+0.424328 -0.124034 0.378614
+0.108546 0.123013 0.424727
+-0.114266 0.125145 0.510612
+-0.359595 0.0597485 0.655496
+-0.63969 0.163569 0.538677
+-1.0675 0.145579 0.510266
+-1.53295 -0.16355 0.461176
+-1.52778 -0.123664 -0.397572
+-1.31567 -0.0647202 -1.14805
+-1.43903 -0.997006 -0.246584
+-1.21665 -0.709411 -0.0440781
+-1.2641 0.907602 -0.290888
+-3.90014 -2.28547 4.84563
+-4.81016 -5.39859 6.04537
+-0.378398 1.05477 -4.71739
+-3.89801 -6.33329 7.82018
+-13.6797 -32.4903 39.4828
+-0.423287 -19.0051 13.7397
+6.82045 -20.2532 16.2114
+-34.198 -177.483 199.331
+-15.8646 -348.982 342.071
+-11.6476 -564.735 563.084
+-581.081 -1478.11 1764.13
+-1487.78 -2275.46 2731.99
+-380.314 -553.75 0
+-95.4949 -142.415 0
+-23.198 -36.1542 0
+-5.40946 -8.89738 0
+-1.20586 -2.10301 0
+-0.258098 -0.474263 0
+-0.0552309 -0.101542 0
+-0.0141764 -0.02056 0
+-0.0064049 -0.00390111 0
+-0.00513339 -0.000647942 0
+-0.00508621 -3.55485e-05 0
+-0.00527173 8.05918e-05 0
+-0.00550595 0.000104719 0
+-0.00575102 0.000110033 0
+-0.00599498 0.000109532 0
+-0.00623022 0.00010546 0
+-0.00645 9.82865e-05 0
+-0.00664854 8.84541e-05 0
+-0.00682166 7.66915e-05 0
+-0.00696724 6.39364e-05 0
+-0.00708531 5.11456e-05 0
+-0.00717766 3.91175e-05 0
+-0.00724728 2.8384e-05 0
+-0.00729773 1.91879e-05 0
+-0.00733256 1.15261e-05 0
+-0.00735498 5.23052e-06 0
+-0.00736763 5.69141e-08 0
+-0.0073726 -4.24151e-06 0
+-0.00737149 -7.86561e-06 0
+-0.00736555 -1.09496e-05 0
+-0.00735583 -1.35621e-05 0
+-0.00734326 -1.57216e-05 0
+-0.00732874 -1.74161e-05 0
+-0.00731312 -1.8623e-05 0
+-0.00729729 -1.93237e-05 0
+-0.00728206 -1.95139e-05 0
+-0.00726818 -1.9209e-05 0
+-0.00725632 -1.84437e-05 0
+-0.00724702 -1.72674e-05 0
+0 -1.57383e-05 0
+0.0469675 -4.29022e-05 0
+0.0469327 -5.44106e-05 0
+0.0469091 -6.58567e-05 0
+0.046897 -7.68573e-05 0
+0.0468963 -8.69389e-05 0
+0.046906 -9.55702e-05 0
+0.0469246 -0.000102202 0
+0.0469499 -0.000106294 0
+0.0469788 -0.000107325 0
+0.0470074 -0.000104788 0
+0.0470309 -9.81722e-05 0
+0.0470435 -8.69334e-05 0
+0.0470377 -7.0453e-05 0
+0.0470043 -4.80091e-05 0
+0.0469318 -1.87723e-05 0
+0.0468057 1.81462e-05 0
+0.0466094 6.35734e-05 0
+0.0463235 0.000118067 0
+0.0459274 0.000181636 0
+0.0454014 0.000253425 0
+0.0447282 0.000331435 0
+0.0438967 0.000412378 0
+0.0429042 0.000491744 0
+0.041758 0.000564121 0
+0.0404773 0.000623683 0
+0.0390923 0.000664455 0
+0.0376476 0.00067908 0
+0.0362229 0.000650124 0
+0.0350522 0.000502968 0
+0.0351663 -0.00013955 0
+0.0416975 -0.00318025 0
+0.0800499 -0.0178012 0
+0.270903 -0.0858371 0
+1.16002 -0.386389 0
+5.09751 -1.63814 0
+21.7492 -6.53694 0
+89.2679 -24.4898 0
+353.03 -85.7145 0
+1351.66 -277.609 0
+5048.93 -821.862 0
+1647.66 -2443.65 17164.5
+-139.229 -1407.04 11061.4
+2.38775 -375.69 3444.57
+50.4174 -289.929 1859.49
+-54.7544 -168.185 1158.67
+0.549969 13.1056 260.698
+27.6868 -8.31752 176.727
+-6.45464 -40.4156 222.585
+-4.58847 -2.92151 49.2269
+8.04447 6.27661 -1.13776
+1.7085 -6.99937 37.5734
+-1.35209 -2.98513 15.69
+1.86943 2.16352 -5.10224
+1.27056 -0.685371 4.49055
+-0.0951944 -1.12211 4.55869
+0.478493 0.395764 -1.47353
+0.509185 0.0280862 0.145639
+-0.0197357 -0.348736 1.48857
+-0.0616154 0.0279127 0.0422444
+-0.13226 -0.0037741 0.189254
+-0.461475 -0.188348 0.936089
+-0.501806 0.0384949 0.107067
+-0.590901 0.0118206 0.157779
+-1.25027 -0.450344 1.90356
+-1.09319 0.0814035 -0.0737679
+-0.411804 0.397768 -1.69789
+-2.26795 -1.68359 6.37854
+-2.83873 -0.813676 4.9957
+1.41621 2.77462 -6.57398
+-3.38094 -4.62237 23.4494
+-11.2518 -9.08939 49.6139
+6.79354 9.17363 -3.79722
+7.01104 -6.19002 75.3143
+-40.5261 -57.3184 312.64
+2.45597 -8.39535 235.814
+77.4164 15.236 380.798
+-80.1929 -253.482 1694.67
+0.855609 -424.864 2696.85
+201.006 -560.944 5113.11
+-2478.36 -2125.07 16551.5
+-7509.73 -3680.54 25607.6
+-1994.24 -1232.1 0
+-513.876 -412.825 0
+-127.375 -125.876 0
+-30.1979 -35.3052 0
+-6.83314 -9.18451 0
+-1.49244 -2.22464 0
+-0.337444 -0.502636 0
+-0.102317 -0.105986 0
+-0.0580976 -0.0206365 0
+-0.0514658 -0.00330684 0
+-0.0520079 0.000123307 0
+-0.0539618 0.000851561 0
+-0.0562357 0.00105151 0
+-0.0585869 0.00112651 0
+-0.0609223 0.00114928 0
+-0.0631725 0.00113213 0
+-0.0652723 0.00107808 0
+-0.0671653 0.000991512 0
+-0.0688104 0.000879928 0
+-0.070187 0.000752985 0
+-0.0712954 0.000620627 0
+-0.0721536 0.000491374 0
+-0.0727911 0.000371286 0
+-0.0732433 0.0002637 0
+-0.0735454 0.000169597 0
+-0.073729 8.83238e-05 0
+-0.0738206 1.83907e-05 0
+-0.0738406 -4.18528e-05 0
+-0.0738047 -9.377e-05 0
+-0.0737252 -0.000138238 0
+-0.0736121 -0.000175649 0
+-0.0734741 -0.000206036 0
+-0.0733196 -0.000229252 0
+-0.0731568 -0.000245131 0
+-0.0729936 -0.000253621 0
+-0.0728377 -0.000254866 0
+-0.0726961 -0.000249247 0
+-0.0725749 -0.000237367 0
+-0.0724791 -0.00022 0
+0 -0.000198021 0
+0.327103 -0.000319193 0
+0.326917 -0.000436961 0
+0.32681 -0.00055572 0
+0.326784 -0.000671234 0
+0.32684 -0.00077845 0
+0.326972 -0.000871751 0
+0.32717 -0.000945248 0
+0.327419 -0.00099302 0
+0.3277 -0.00100928 0
+0.327988 -0.000988502 0
+0.328249 -0.000925457 0
+0.328445 -0.000815227 0
+0.328527 -0.000653181 0
+0.328431 -0.000434994 0
+0.32808 -0.000156824 0
+0.327378 0.000184249 0
+0.326208 0.000589381 0
+0.324442 0.00105672 0
+0.321941 0.00157976 0
+0.31857 0.00214567 0
+0.314215 0.00273378 0
+0.3088 0.00331501 0
+0.302309 0.00385254 0
+0.294793 0.00430399 0
+0.286383 0.00462481 0
+0.277283 0.00477088 0
+0.267779 0.00469561 0
+0.258324 0.00432163 0
+0.250001 0.00338999 0
+0.247079 0.000696301 0
+0.270285 -0.00965134 0
+0.423259 -0.0556377 0
+1.21094 -0.263578 0
+5.00185 -1.17211 0
+22.5019 -4.95014 0
+100.587 -19.8607 0
+439.41 -75.779 0
+1878.44 -275.534 0
+7901.55 -957.146 0
+32955.5 -3211.61 0
+12244.8 -11957 126438
+-368.007 -7642.25 91398.9
+-345.208 -2165.04 34114.1
+338.988 -1200.62 15909.1
+-172.014 -861.65 10034.9
+-57.2835 -183.321 4029.2
+98.6485 -103.306 1962.5
+-20.7418 -162.209 1564.81
+-26.5203 -34.3601 616.615
+25.3884 7.74253 195.502
+3.81754 -27.6319 246.767
+-8.67915 -12.5051 119.585
+5.06179 5.46414 7.99823
+3.58141 -3.00675 32.4783
+-1.80308 -4.03959 27.2546
+0.73902 1.16495 -1.162
+1.29296 0.0232664 2.77385
+-0.411738 -1.19922 6.74228
+-0.105007 0.0782773 -0.0818383
+0.0143158 0.012772 0.28267
+-0.975783 -0.61209 3.35122
+-0.662936 0.103072 -0.0747276
+-0.426554 -0.0248752 0.385103
+-2.54621 -1.54116 8.6201
+-1.47367 0.208529 2.71205
+1.45877 1.22541 -0.318938
+-6.00524 -5.74307 37.5875
+-6.76649 -3.43752 40.4118
+11.1054 6.86494 12.7379
+-8.01941 -18.8557 170.482
+-33.843 -36.1638 329.473
+39.006 11.7919 264.177
+21.7989 -54.6297 882.795
+-140.022 -228.115 2178.53
+94.2447 -138.033 2717
+232.223 -275.62 5784.81
+-509.52 -1260.54 14452.3
+541.838 -1738.81 22999.3
+473.354 -3243.91 50491.6
+-18348.6 -11503.5 136153
+-48884 -17945 188033
+-11630 -4803.08 0
+-2728.29 -1420.01 0
+-625.663 -403.73 0
+-139.354 -109.031 0
+-30.0949 -27.8599 0
+-6.43077 -6.71425 0
+-1.52524 -1.52362 0
+-0.560727 -0.325579 0
+-0.386996 -0.0646961 0
+-0.365628 -0.00993742 0
+-0.373314 0.00206691 0
+-0.386989 0.00545258 0
+-0.402197 0.00695017 0
+-0.417829 0.0078368 0
+-0.433351 0.00834668 0
+-0.448304 0.00851996 0
+-0.462246 0.00837331 0
+-0.474786 0.00793893 0
+-0.485641 0.00727005 0
+-0.494668 0.00643387 0
+-0.50187 0.00550028 0
+-0.507369 0.00453172 0
+-0.511369 0.0035768 0
+-0.514115 0.00266842 0
+-0.51585 0.00182532 0
+-0.516796 0.00105578 0
+-0.517135 0.000361839 0
+-0.517012 -0.000257082 0
+-0.516535 -0.000801712 0
+-0.515789 -0.00127178 0
+-0.51484 -0.00166593 0
+-0.513749 -0.00198228 0
+-0.512569 -0.00221931 0
+-0.511353 -0.0023766 0
+-0.510152 -0.00245542 0
+-0.509016 -0.00245903 0
+-0.50799 -0.00239278 0
+-0.507111 -0.00226388 0
+-0.506411 -0.00208091 0
+0 -0.00185332 0
+1.71794 -0.00207438 0
+1.71725 -0.00305887 0
+1.717 -0.0040591 0
+1.71719 -0.00503777 0
+1.71784 -0.00595143 0
+1.71891 -0.006752 0
+1.72037 -0.0073886 0
+1.72214 -0.00780942 0
+1.72412 -0.00796358 0
+1.72618 -0.00780302 0
+1.72817 -0.00728443 0
+1.72987 -0.00637103 0
+1.73103 -0.0050345 0
+1.73132 -0.00325705 0
+1.73035 -0.0010339 0
+1.7276 0.00162328 0
+1.72249 0.00468207 0
+1.71434 0.00808374 0
+1.70244 0.0117371 0
+1.68611 0.0155126 0
+1.66477 0.0192382 0
+1.63804 0.0226991 0
+1.60586 0.0256432 0
+1.56852 0.027793 0
+1.5267 0.0288627 0
+1.48149 0.028575 0
+1.43435 0.0266627 0
+1.38741 0.0228075 0
+1.34503 0.0163037 0
+1.32247 0.00440037 0
+1.39191 -0.0256836 0
+1.92064 -0.133945 0
+4.75953 -0.593149 0
+18.9666 -2.59294 0
+87.5196 -11.1134 0
+408.852 -46.2528 0
+1879.27 -186.686 0
+8482.64 -732.935 0
+37754.6 -2811.7 0
+166781 -10667.5 0
+68664.7 -44684.9 671890
+1722.66 -32711.7 528715
+-2542.19 -12493.1 225849
+1441.05 -6210.71 102450
+-376.463 -4110.78 61733.6
+-396.557 -1602.96 29242
+306.965 -737.242 13735.4
+-10.3769 -632.271 9034.15
+-105.626 -248.003 4452.08
+63.6232 -67.6546 1824.98
+16.3227 -101.989 1348.09
+-30.0699 -50.8334 729.613
+10.8918 0.0250936 214.773
+9.78465 -12.978 186.076
+-6.93613 -12.3549 134.146
+0.966269 0.925565 25.3784
+3.48331 -0.968761 22.1599
+-1.54098 -3.21831 28.404
+-0.279351 0.0456004 4.52214
+0.642547 -0.0783119 3.75454
+-1.90316 -1.57892 12.8275
+-0.406241 0.0952442 3.20966
+0.627269 -0.23694 7.11156
+-5.57073 -4.11669 36.1797
+-1.37925 -0.853015 26.7168
+7.61224 0.527271 37.9747
+-15.0105 -17.0522 181.766
+-12.7277 -15.8725 241.107
+39.1233 -1.35658 300.914
+-29.0589 -73.2808 1013.64
+-80.5029 -135.982 1816.38
+150.17 -92.8327 2515.72
+-9.22338 -359.333 6244.16
+-418.707 -880.268 12505.9
+598.654 -1024.19 19153.6
+456.301 -2313.88 41630.1
+-2109.27 -5901.92 88139.4
+3833.53 -8925.37 147578
+-3014.49 -18371.9 331807
+-102148 -48406.8 781421
+-245961 -66116.9 992637
+-55288.7 -15763.9 0
+-12265.5 -4130.42 0
+-2665.09 -1065.31 0
+-564.311 -266.934 0
+-116.655 -64.6138 0
+-24.3634 -15.0523 0
+-6.06834 -3.38125 0
+-2.61527 -0.743508 0
+-2.02448 -0.163595 0
+-1.96981 -0.0311531 0
+-2.01721 0.00700979 0
+-2.08701 0.0244884 0
+-2.16345 0.0359942 0
+-2.24208 0.044397 0
+-2.32033 0.0502426 0
+-2.39581 0.0536526 0
+-2.46616 0.0547395 0
+-2.52932 0.0537085 0
+-2.58378 0.0508649 0
+-2.62876 0.0465806 0
+-2.66427 0.0412478 0
+-2.69094 0.0352378 0
+-2.70982 0.0288731 0
+-2.72219 0.0224162 0
+-2.72935 0.0160708 0
+-2.73246 0.00999146 0
+-2.73251 0.00429562 0
+-2.73026 -0.000925245 0
+-2.72632 -0.00559781 0
+-2.72112 -0.0096629 0
+-2.71504 -0.0130747 0
+-2.70838 -0.0158017 0
+-2.70142 -0.0178287 0
+-2.69442 -0.0191575 0
+-2.68762 -0.0198083 0
+-2.68127 -0.0198181 0
+-2.67558 -0.0192399 0
+-2.67071 -0.01814 0
+-2.66683 -0.0165942 0
+0 -0.0146843 0
+6.12716 -0.010997 0
+6.12548 -0.0171054 0
+6.12542 -0.0233296 0
+6.12707 -0.0294308 0
+6.13047 -0.0351346 0
+6.13556 -0.0401379 0
+6.14221 -0.0441192 0
+6.15016 -0.0467496 0
+6.1591 -0.0477067 0
+6.16857 -0.0466889 0
+6.178 -0.0434326 0
+6.18664 -0.037729 0
+6.19357 -0.0294422 0
+6.1976 -0.0185277 0
+6.19724 -0.00505088 0
+6.1907 0.0107945 0
+6.17585 0.0286683 0
+6.15028 0.0480667 0
+6.11149 0.0683088 0
+6.05707 0.0885276 0
+5.98503 0.107671 0
+5.89412 0.124517 0
+5.78419 0.137706 0
+5.6564 0.145795 0
+5.51335 0.147334 0
+5.35902 0.140946 0
+5.19878 0.125389 0
+5.04004 0.099521 0
+4.89657 0.0618819 0
+4.81228 0.00868204 0
+4.99015 -0.0752289 0
+6.47537 -0.256114 0
+14.6598 -0.821857 0
+56.6614 -2.99156 0
+264.944 -11.7857 0
+1269.79 -47.3613 0
+6007.54 -188.903 0
+27953.1 -741.461 0
+128435 -2857.62 0
+586601 -10888.1 0
+256152 -46180.2 2.43253e+06
+14489.4 -34028.6 2.01916e+06
+-10433.9 -12683.3 934358
+4136.95 -6836.32 427145
+-413.26 -4933.04 250873
+-1464.03 -1844.71 127439
+769.626 -779.227 60803.4
+139.404 -759.508 36968.6
+-318.066 -314.378 19673.6
+115.153 -77.3069 8744.95
+66.4371 -122.659 5380.94
+-72.6965 -61.2899 3063.3
+14.9026 1.95656 1208.25
+24.3613 -16.5407 758.656
+-16.0637 -15.5023 505.775
+0.0698955 1.9299 170.049
+7.73266 -1.25465 103.137
+-3.55569 -4.31893 96.4826
+-0.724271 0.206019 31.4099
+1.92443 -0.048254 21.9905
+-3.44189 -2.17178 41.0819
+0.473458 0.199589 22.8704
+2.668 -0.10962 42.263
+-11.0469 -5.47137 122.658
+0.614254 -1.08764 131.516
+18.1385 1.5535 237.379
+-34.8064 -21.32 678.277
+-13.8675 -19.9214 1002.66
+92.4009 0.710316 1671.64
+-102.991 -88.7327 4200.98
+-133.686 -162.94 7275.59
+436.382 -107.329 12073.3
+-256.006 -454.385 27325.4
+-1008.93 -1047.95 50952.6
+2135.4 -1075.1 84647.1
+312.415 -2652.18 179860
+-5913.95 -6988.2 354991
+15371.7 -9592.82 610550
+-22982.1 -18038.1 1.3582e+06
+-377191 -48715.4 2.9522e+06
+-857311 -66205.2 3.55854e+06
+-186555 -15634.6 0
+-40123.2 -4096.62 0
+-8463.15 -1057.33 0
+-1741.94 -266.761 0
+-351.199 -65.8909 0
+-72.5491 -16.0839 0
+-18.8085 -4.01475 0
+-8.92876 -1.11157 0
+-7.29295 -0.369877 0
+-7.1732 -0.127889 0
+-7.3439 -0.00539768 0
+-7.58304 0.0814602 0
+-7.84564 0.15046 0
+-8.11749 0.205098 0
+-8.38927 0.24597 0
+-8.65205 0.273337 0
+-8.89706 0.28775 0
+-9.11664 0.29018 0
+-9.30519 0.28198 0
+-9.45985 0.264767 0
+-9.58049 0.240296 0
+-9.66929 0.210335 0
+-9.73006 0.176578 0
+-9.76737 0.140588 0
+-9.78593 0.103767 0
+-9.79005 0.0673449 0
+-9.78338 0.0323832 0
+-9.76884 -0.000224632 0
+-9.74871 -0.0297463 0
+-9.72473 -0.0556072 0
+-9.69829 -0.0773875 0
+-9.67051 -0.0948187 0
+-9.64241 -0.107779 0
+-9.61486 -0.116284 0
+-9.58871 -0.120479 0
+-9.56469 -0.120621 0
+-9.54346 -0.117063 0
+-9.52555 -0.110237 0
+-9.51134 -0.100631 0
+0 -0.0887649 0
+12.983 -0.0325143 0
+12.9789 -0.0512121 0
+12.9782 -0.070275 0
+12.9812 -0.0889653 0
+12.988 -0.106438 0
+12.9988 -0.121764 0
+13.0132 -0.133956 0
+13.0309 -0.142011 0
+13.0512 -0.144945 0
+13.0734 -0.141849 0
+13.0961 -0.131936 0
+13.1179 -0.114597 0
+13.1368 -0.0894624 0
+13.1502 -0.0564557 0
+13.1549 -0.0158499 0
+13.1469 0.0316791 0
+13.1217 0.0850062 0
+13.0742 0.142517 0
+12.9989 0.202082 0
+12.8908 0.26105 0
+12.7456 0.316269 0
+12.5606 0.36415 0
+12.3358 0.400783 0
+12.0736 0.422121 0
+11.7798 0.424219 0
+11.4632 0.403533 0
+11.1355 0.357219 0
+10.8128 0.283333 0
+10.5236 0.180657 0
+10.3565 0.0471644 0
+10.7216 -0.126775 0
+13.758 -0.386258 0
+30.671 -0.924176 0
+118.707 -2.52773 0
+562.008 -8.33142 0
+2735.19 -30.6337 0
+13155 -117.153 0
+62289.9 -450.441 0
+291618 -1711.79 0
+1.35907e+06 -6389.46 0
+615635 -26402.2 5.74722e+06
+45840.9 -18207.3 4.93703e+06
+-26631.6 -5846.15 2.39503e+06
+8301.7 -4089.04 1.10927e+06
+489.762 -3225.1 647226
+-3411.51 -810.913 341847
+1360.29 -318.103 165926
+533.648 -558.94 97305.8
+-673.86 -197.31 53308.4
+142.986 -9.21357 24622.9
+178.916 -84.75 14148.2
+-128.233 -39.145 8223.44
+4.77311 11.0871 3597.08
+49.472 -13.454 2010.01
+-24.2819 -12.2611 1298.78
+-4.25764 4.24989 538.708
+13.2215 -0.795975 288.89
+-4.91337 -4.16685 232.347
+-1.61771 0.536178 101.733
+3.16154 0.0702739 68.0573
+-4.91243 -2.23422 95.4697
+1.93544 0.340897 74.0944
+3.86202 0.345786 131.237
+-17.6778 -5.1964 295.223
+6.90572 -0.457603 375.709
+26.3947 4.50057 736.536
+-66.8511 -17.0695 1730.74
+4.95067 -15.5348 2678.34
+156.889 13.1406 4944.04
+-257.933 -58.7809 11187.9
+-141.697 -110.482 19125.6
+897.4 -13.6943 33892.5
+-850.252 -294.368 73488.1
+-1715.46 -768.863 133446
+4842.09 -429.947 229800
+-1282.13 -1205.6 477874
+-11567.5 -4587.45 906385
+38535.7 -5700.2 1.56846e+06
+-70308.9 -8139.81 3.43597e+06
+-894616 -25465.2 7.12185e+06
+-1.96204e+06 -37028.3 8.2998e+06
+-418756 -9010.69 0
+-88464.2 -2419.16 0
+-18350.4 -636.504 0
+-3717.75 -165.146 0
+-738.456 -42.9744 0
+-150.735 -11.6437 0
+-39.0991 -3.57751 0
+-18.8747 -1.38261 0
+-15.5681 -0.64797 0
+-15.3293 -0.277579 0
+-15.676 -0.00828511 0
+-16.1656 0.218392 0
+-16.708 0.412199 0
+-17.2733 0.572191 0
+-17.8405 0.696068 0
+-18.3894 0.782564 0
+-18.9003 0.832033 0
+-19.3565 0.84644 0
+-19.7458 0.829079 0
+-20.0618 0.784195 0
+-20.3044 0.716587 0
+-20.4783 0.631264 0
+-20.5919 0.533184 0
+-20.655 0.42706 0
+-20.6782 0.317242 0
+-20.671 0.207647 0
+-20.6418 0.101715 0
+-20.5971 0.00238979 0
+-20.5424 -0.0878928 0
+-20.4815 -0.167211 0
+-20.4178 -0.234153 0
+-20.3537 -0.287807 0
+-20.2913 -0.327743 0
+-20.2322 -0.35398 0
+-20.178 -0.366948 0
+-20.13 -0.367438 0
+-20.089 -0.356543 0
+-20.0559 -0.335599 0
+-20.031 -0.306116 0
+0 -0.269712 0
+20.2992 -0.0598107 0
+20.2885 -0.0945618 0
+20.282 -0.129999 0
+20.2803 -0.164746 0
+20.2839 -0.197227 0
+20.2929 -0.225712 0
+20.3075 -0.248371 0
+20.3274 -0.263343 0
+20.3521 -0.268815 0
+20.3806 -0.263117 0
+20.4115 -0.244821 0
+20.4429 -0.212845 0
+20.472 -0.16656 0
+20.4954 -0.105899 0
+20.5082 -0.0314535 0
+20.5046 0.0554362 0
+20.4777 0.152601 0
+20.4195 0.256987 0
+20.3215 0.364626 0
+20.1757 0.470641 0
+19.9751 0.569314 0
+19.7152 0.654229 0
+19.3949 0.718511 0
+19.0176 0.755196 0
+18.5913 0.757725 0
+18.1286 0.720561 0
+17.6468 0.639858 0
+17.1698 0.514064 0
+16.7404 0.344195 0
+16.4935 0.133101 0
+17.0661 -0.118344 0
+21.8409 -0.425275 0
+48.7899 -0.868621 0
+190.845 -1.7753 0
+914.331 -4.39702 0
+4498.66 -13.593 0
+21861.3 -48.8252 0
+104581 -189.437 0
+494772 -753.828 0
+2.33121e+06 -2971.81 0
+1.07476e+06 -12812.3 9.96743e+06
+87439.5 -8907.78 8.72217e+06
+-48901.8 -3330.79 4.33354e+06
+13429.8 -2948.39 2.02778e+06
+2412.05 -1926.03 1.18725e+06
+-5989.88 -201.013 641461
+1868.56 -185.566 314618
+1119.95 -431.748 181643
+-1087.9 -87.9841 101033
+143.498 33.9633 47735.3
+336.037 -60.2929 26731.6
+-189.697 -24.0042 15666.9
+-20.2434 13.9159 7145.58
+83.8691 -11.0748 3813.3
+-28.7354 -9.02567 2444.18
+-12.6199 4.77576 1109.83
+19.0492 -0.826917 563.091
+-4.63128 -3.57275 422.553
+-3.04917 0.684712 212.832
+3.75984 0.0328569 139.477
+-5.7406 -2.10374 169.937
+3.91266 0.25072 154.03
+3.05449 0.591545 270.044
+-24.4068 -4.42088 536.679
+17.9881 -0.54093 737.112
+29.4205 5.30259 1501.29
+-109.21 -12.6835 3242.6
+42.61 -12.5744 5093.1
+224.889 16.8555 9768.6
+-466.613 -38.1245 21187
+-109.601 -76.6772 36053
+1416.39 45.5462 65390.5
+-1690.21 -149.582 138285
+-2270.35 -604.635 247635
+8317.35 -248.642 432797
+-4316.49 -355.257 888205
+-18359.2 -2808.47 1.64562e+06
+69711.8 -4198.77 2.83538e+06
+-131406 -4810.83 6.13834e+06
+-1.54198e+06 -12820.6 1.24214e+07
+-3.3255e+06 -18481 1.42169e+07
+-702405 -4339.6 0
+-146901 -1107.13 0
+-30167.9 -279.864 0
+-6048.13 -72.6335 0
+-1187.45 -20.3482 0
+-239.221 -6.64242 0
+-61.4124 -2.76791 0
+-29.704 -1.46314 0
+-24.6256 -0.83337 0
+-24.2796 -0.379485 0
+-24.8126 0.0214656 0
+-25.5534 0.390126 0
+-26.3686 0.720769 0
+-27.2134 1.00287 0
+-28.0559 1.22746 0
+-28.8654 1.38909 0
+-29.612 1.48615 0
+-30.2705 1.52058 0
+-30.8234 1.49717 0
+-31.2621 1.42284 0
+-31.5877 1.30577 0
+-31.8089 1.1548 0
+-31.9396 0.978863 0
+-31.9967 0.786633 0
+-31.9971 0.586241 0
+-31.9564 0.385105 0
+-31.8881 0.18982 0
+-31.803 0.00607692 0
+-31.7093 -0.161382 0
+-31.6132 -0.308793 0
+-31.5191 -0.433375 0
+-31.4303 -0.533317 0
+-31.3493 -0.60774 0
+-31.2778 -0.656634 0
+-31.217 -0.680779 0
+-31.1676 -0.681648 0
+-31.1302 -0.66129 0
+-31.1048 -0.622211 0
+-31.0911 -0.567245 0
+0 -0.499431 0
+26.3885 -0.0750716 0
+26.3657 -0.118853 0
+26.3456 -0.163503 0
+26.3292 -0.20728 0
+26.3174 -0.248195 0
+26.3108 -0.284068 0
+26.3101 -0.312594 0
+26.3158 -0.331435 0
+26.3279 -0.338325 0
+26.3462 -0.331183 0
+26.3699 -0.308246 0
+26.3976 -0.268204 0
+26.4267 -0.21033 0
+26.4538 -0.134615 0
+26.4735 -0.0418893 0
+26.4794 0.0660722 0
+26.4627 0.186465 0
+26.4136 0.315397 0
+26.3213 0.447869 0
+26.1748 0.577809 0
+25.9643 0.698179 0
+25.683 0.801176 0
+25.3276 0.878566 0
+24.9004 0.922171 0
+24.4094 0.924529 0
+23.8683 0.87971 0
+23.2966 0.784214 0
+22.7221 0.637833 0
+22.1964 0.444197 0
+21.8882 0.210564 0
+22.615 -0.0540656 0
+28.8027 -0.344391 0
+64.3081 -0.671831 0
+253.859 -1.09654 0
+1228.81 -1.8394 0
+6097.56 -3.8881 0
+29840.9 -12.6839 0
+143635 -58.8494 0
+683362 -300.577 0
+3.23709e+06 -1474.66 0
+1.5011e+06 -7552.78 1.39158e+07
+123189 -6102.1 1.22847e+07
+-70567.4 -2911.67 6.17344e+06
+19019.5 -2035.3 2.9161e+06
+4432.09 -949.847 1.72162e+06
+-8705.12 -24.9381 942615
+2314.85 -213.952 465464
+1772.41 -291.044 267967
+-1482.46 13.4507 150735
+128.907 43.8919 72208.1
+497.632 -56.0232 40063.8
+-250.847 -17.5392 23591.3
+-49.9432 15.3564 10971.2
+121.696 -6.89652 5752.97
+-31.0206 -6.61295 3688.79
+-22.9872 3.40077 1745.15
+24.9571 -0.919213 862.131
+-3.16324 -2.54875 629.05
+-4.82298 0.670903 339.853
+3.78685 -0.10956 220.264
+-6.03262 -1.82161 250.158
+6.22267 0.0199342 244.128
+0.821927 0.628077 427.721
+-31.2538 -3.17527 798.355
+31.332 -0.79339 1129.99
+30.0105 3.82653 2344.77
+-155.369 -9.13526 4876.85
+84.5238 -7.5376 7679.61
+292.527 18.3313 14922.7
+-675.911 -28.9503 31739.1
+-64.4813 -70.4271 53855.7
+1898.37 60.0344 98382
+-2590.71 -12.8265 204892
+-2739.82 -420.23 363002
+11907.1 -288.205 635697
+-7386.28 -101.07 1.29369e+06
+-25744.9 -1467.6 2.36417e+06
+99375 -2962.04 4.03662e+06
+-182677 -4321.2 8.64958e+06
+-2.13135e+06 -9303.47 1.73096e+07
+-4.57311e+06 -11782.8 1.9649e+07
+-961075 -2414.92 0
+-199898 -519.094 0
+-40790.3 -109.332 0
+-8113.9 -25.3439 0
+-1577.07 -7.72315 0
+-313.785 -3.38816 0
+-79.8821 -1.96643 0
+-38.9216 -1.28873 0
+-32.5554 -0.809262 0
+-32.1858 -0.372249 0
+-32.8841 0.0578333 0
+-33.8155 0.475613 0
+-34.8195 0.863611 0
+-35.843 1.20345 0
+-36.848 1.4803 0
+-37.7978 1.68448 0
+-38.6578 1.81176 0
+-39.3988 1.8628 0
+-40.0017 1.84228 0
+-40.4593 1.75784 0
+-40.7762 1.61906 0
+-40.9667 1.43655 0
+-41.0511 1.22131 0
+-41.0532 0.98416 0
+-40.9962 0.735394 0
+-40.9014 0.484504 0
+-40.7862 0.240002 0
+-40.6644 0.00928428 0
+-40.5459 -0.20145 0
+-40.4375 -0.387258 0
+-40.3436 -0.544473 0
+-40.2666 -0.670686 0
+-40.2076 -0.764707 0
+-40.1668 -0.826477 0
+-40.1436 -0.856961 0
+-40.137 -0.85802 0
+-40.1454 -0.832256 0
+-40.1672 -0.782853 0
+-40.2003 -0.713415 0
+0 -0.627805 0
+30.5245 -0.0634237 0
+30.4868 -0.100466 0
+30.4485 -0.138243 0
+30.4108 -0.175278 0
+30.3751 -0.209886 0
+30.3429 -0.240219 0
+30.3154 -0.264331 0
+30.2941 -0.280247 0
+30.2802 -0.286058 0
+30.2746 -0.280021 0
+30.2778 -0.260669 0
+30.2895 -0.226924 0
+30.3084 -0.178214 0
+30.3317 -0.11458 0
+30.3549 -0.0367781 0
+30.3713 0.0536384 0
+30.3719 0.154251 0
+30.3457 0.261741 0
+30.2804 0.371881 0
+30.1627 0.479583 0
+29.9805 0.578996 0
+29.724 0.663697 0
+29.3876 0.726986 0
+28.971 0.762312 0
+28.4802 0.763843 0
+27.9276 0.727164 0
+27.3319 0.650058 0
+26.7214 0.533233 0
+26.1509 0.380817 0
+25.8048 0.200307 0
+26.6027 0.0016115 0
+33.6176 -0.204792 0
+74.5806 -0.407976 0
+295.953 -0.582865 0
+1444.56 -0.63542 0
+7217.03 -0.362307 0
+35500.8 -0.464366 0
+171544 -11.824 0
+818628 -109.482 0
+3.88757e+06 -683.382 0
+1.8039e+06 -3889.04 1.67532e+07
+146063 -3162.71 1.48482e+07
+-85477.7 -1235.14 7.50787e+06
+23991.8 -594.909 3.58097e+06
+5539.58 -210.067 2.13254e+06
+-10951.3 -33.3284 1.17575e+06
+2840.51 -216.403 584010
+2340.97 -152.929 337856
+-1839.66 51.9163 191619
+105.561 19.56 92402.2
+637.979 -55.0145 51138.5
+-298.993 -13.8319 30271.8
+-75.2686 14.3029 14243.5
+153.435 -2.12805 7424.15
+-33.516 -4.35001 4762.54
+-32.0418 1.51112 2294.03
+30.7332 -0.637721 1122.05
+-1.49502 -1.30107 812.274
+-6.58035 0.505532 453.789
+3.58823 -0.235692 292.105
+-6.13689 -1.3666 320.907
+8.51699 -0.185377 323.617
+-1.56108 0.498499 568.492
+-38.1352 -1.65127 1029.87
+42.8306 -0.618439 1469.66
+31.4764 1.6651 3068.96
+-194.227 -5.83464 6280.74
+118.833 -1.88643 9894.88
+346.347 16.9926 19287.4
+-854.192 -22.498 40554.1
+-17.7762 -69.1944 68520.6
+2332.23 29.4467 125299
+-3357.42 49.9182 258970
+-3345.77 -223.145 455136
+14841.1 -284.292 792636
+-9073.07 -89.634 1.6022e+06
+-32328.6 -425.413 2.90721e+06
+119337 -948.69 4.91919e+06
+-215027 -1909.59 1.04378e+07
+-2.54426e+06 -5066.74 2.0772e+07
+-5.4584e+06 -6539.79 2.35017e+07
+-1.14452e+06 -1282.04 0
+-237326 -246.866 0
+-48220.2 -42.4072 0
+-9533.46 -7.85309 0
+-1837.12 -2.63052 0
+-361.684 -1.63271 0
+-91.7363 -1.20389 0
+-45.33 -0.881778 0
+-38.3611 -0.579372 0
+-38.0543 -0.266228 0
+-38.8791 0.0607399 0
+-39.9256 0.38934 0
+-41.0243 0.70178 0
+-42.1195 0.980546 0
+-43.1722 1.21142 0
+-44.1445 1.38475 0
+-45.0013 1.49567 0
+-45.7143 1.54371 0
+-46.2665 1.53198 0
+-46.6547 1.46631 0
+-46.8887 1.3543 0
+-46.9888 1.20467 0
+-46.9821 1.02651 0
+-46.8981 0.82895 0
+-46.7657 0.620717 0
+-46.6099 0.409938 0
+-46.4511 0.203944 0
+-46.3045 0.00914058 0
+-46.1802 -0.169086 0
+-46.0844 -0.326424 0
+-46.0197 -0.459667 0
+-45.9865 -0.566698 0
+-45.9834 -0.646456 0
+-46.0076 -0.698861 0
+-46.0559 -0.724721 0
+-46.1243 -0.725614 0
+-46.2086 -0.703754 0
+-46.3046 -0.661856 0
+-46.408 -0.602991 0
+0 -0.530447 0
+32.7766 -0.0248585 0
+32.7264 -0.0393845 0
+32.6724 -0.0541984 0
+32.616 -0.06872 0
+32.5589 -0.0822884 0
+32.503 -0.0941789 0
+32.4503 -0.103628 0
+32.4032 -0.109862 0
+32.3638 -0.112135 0
+32.3342 -0.109767 0
+32.316 -0.102187 0
+32.3103 -0.0889797 0
+32.3168 -0.0699293 0
+32.3337 -0.0450623 0
+32.3574 -0.0146863 0
+32.3816 0.0205783 0
+32.3975 0.059774 0
+32.3937 0.101593 0
+32.3568 0.14438 0
+32.2723 0.186148 0
+32.1263 0.224626 0
+31.907 0.257332 0
+31.6065 0.281695 0
+31.2222 0.29522 0
+30.7579 0.295718 0
+30.224 0.281579 0
+29.6376 0.252073 0
+29.026 0.20764 0
+28.4434 0.150076 0
+28.0784 0.0825174 0
+28.8875 0.00911982 0
+36.2294 -0.0654033 0
+79.7229 -0.134822 0
+317.008 -0.182417 0
+1556.19 -0.146443 0
+7811.78 0.147408 0
+38557.1 0.819844 0
+186750 -0.57846 0
+892629 -24.6852 0
+4.24378e+06 -180.717 0
+1.96788e+06 -1035.81 1.83078e+07
+157658 -736.576 1.6254e+07
+-92782.6 -121.614 8.24878e+06
+26992.4 4.73961 3.96437e+06
+5568.48 -10.5908 2.37408e+06
+-12347.9 -51.7951 1.31231e+06
+3362.1 -112.111 654937
+2700.32 -55.3066 381471
+-2122.74 19.7385 217368
+84.1476 -1.24428 104977
+740.686 -26.58 58111.5
+-325.239 -6.39027 34600.5
+-92.1273 5.90031 16407.5
+172.494 -0.202204 8534.95
+-36.1333 -1.63933 5468.97
+-37.4576 0.298268 2653.21
+35.3662 -0.212468 1296.82
+-0.338193 -0.350593 938.875
+-7.9045 0.187224 531.345
+3.42153 -0.139226 340.194
+-6.22054 -0.544057 368.612
+10.2594 -0.130277 376.459
+-3.18703 0.190571 664.033
+-43.7582 -0.45469 1189.32
+49.6619 -0.218949 1696.75
+33.7593 0.287543 3540.82
+-217.709 -2.18239 7201.42
+141.023 0.00382707 11359
+375.62 6.9631 22148.8
+-983.141 -10.0072 46222.4
+18.5624 -33.557 77688.8
+2679.61 0.415411 141909
+-3836.12 20.6504 292688
+-3987.95 -78.4873 512033
+16644 -145.103 885317
+-9201.46 -85.7127 1.7803e+06
+-36270.5 -72.2035 3.22199e+06
+128957 -49.5871 5.42137e+06
+-231538 -238.354 1.14199e+07
+-2.76742e+06 -1267.57 2.26588e+07
+-5.94278e+06 -1870.91 2.56068e+07
+-1.24488e+06 -381.018 0
+-257711 -72.0708 0
+-52221.5 -11.2681 0
+-10281.6 -1.76575 0
+-1969.2 -0.647646 0
+-384.846 -0.502464 0
+-97.5656 -0.410694 0
+-48.8946 -0.313552 0
+-41.7961 -0.209689 0
+-41.5778 -0.0963263 0
+-42.4826 0.0252151 0
+-43.5856 0.149398 0
+-44.7179 0.268889 0
+-45.8248 0.376527 0
+-46.8676 0.466445 0
+-47.8096 0.534583 0
+-48.6173 0.578789 0
+-49.2647 0.598664 0
+-49.7382 0.595256 0
+-50.0385 0.570714 0
+-50.18 0.527931 0
+-50.1882 0.470248 0
+-50.0949 0.40121 0
+-49.9342 0.324376 0
+-49.7381 0.243178 0
+-49.5345 0.160825 0
+-49.3453 0.0802173 0
+-49.186 0.00389905 0
+-49.0663 -0.0659873 0
+-48.9912 -0.127724 0
+-48.9615 -0.180032 0
+-48.9755 -0.222063 0
+-49.0292 -0.25339 0
+-49.1173 -0.273976 0
+-49.2339 -0.284135 0
+-49.3726 -0.284487 0
+-49.5267 -0.275904 0
+-49.6899 -0.259454 0
+-49.8561 -0.236346 0
+0 -0.207875 0
+33.4742 0.0248585 0
+33.4193 0.0393845 0
+33.3591 0.0541984 0
+33.2953 0.06872 0
+33.2296 0.0822884 0
+33.1641 0.0941789 0
+33.1013 0.103628 0
+33.0436 0.109862 0
+32.9938 0.112135 0
+32.9542 0.109767 0
+32.9271 0.102187 0
+32.9139 0.0889797 0
+32.915 0.0699293 0
+32.929 0.0450623 0
+32.9525 0.0146863 0
+32.9795 -0.0205783 0
+33.0014 -0.059774 0
+33.0066 -0.101593 0
+32.9815 -0.14438 0
+32.9111 -0.186148 0
+32.781 -0.224626 0
+32.5783 -0.257332 0
+32.2944 -0.281695 0
+31.9259 -0.29522 0
+31.4755 -0.295718 0
+30.9528 -0.281579 0
+30.3742 -0.252073 0
+29.7662 -0.20764 0
+29.1827 -0.150076 0
+28.812 -0.0825174 0
+29.6174 -0.00911981 0
+37.0277 0.0654033 0
+81.1784 0.134822 0
+322.935 0.182417 0
+1588.58 0.146443 0
+7988.39 -0.147408 0
+39477.3 -0.819844 0
+191363 0.57846 0
+915154 24.6852 0
+4.3523e+06 180.717 0
+2.01748e+06 1035.81 1.87816e+07
+161065 736.577 1.66828e+07
+-94818.1 121.574 8.47716e+06
+27863.7 -4.81166 4.08563e+06
+5370.19 10.5965 2.45097e+06
+-12811.6 51.875 1.35544e+06
+3589.06 112.121 677724
+2816.83 55.3065 395966
+-2236.06 -19.739 225953
+75.9071 1.24504 109110
+780.174 26.5796 60428.1
+-332.598 6.38922 36078.6
+-98.1526 -5.90049 17158.7
+178.479 0.201835 8920.86
+-37.2685 1.63921 5711.81
+-39.1092 -0.298629 2776.25
+37.1973 0.212628 1358.29
+0.056135 0.350747 984.24
+-8.40057 -0.187479 558.631
+3.37081 0.138754 356.808
+-6.26401 0.544232 385.207
+10.9118 0.129824 394.651
+-3.7432 -0.191883 697.615
+-45.9919 0.45902 1246.31
+51.7339 0.20633 1776.28
+34.8538 -0.313414 3702.01
+-225.124 2.14628 7517.23
+148.831 -0.0164164 11865.7
+383.757 -6.96599 23136.9
+-1032.49 10.008 48149.3
+31.9129 33.5587 80722.1
+2819.86 -0.411668 147342
+-3990.49 -20.6483 303870
+-4274.28 78.4472 530840
+17236.6 145.016 914875
+-8962.37 85.7073 1.83605e+06
+-37397.8 72.2533 3.32137e+06
+131628 49.593 5.57913e+06
+-236478 238.366 1.17218e+07
+-2.83529e+06 1267.55 2.32351e+07
+-6.09123e+06 1870.89 2.62512e+07
+-1.27564e+06 381.017 0
+-263936 72.0708 0
+-53432.6 11.2681 0
+-10504.2 1.76575 0
+-2007.27 0.647646 0
+-391.24 0.502464 0
+-99.211 0.410694 0
+-50.0142 0.313552 0
+-42.9233 0.209689 0
+-42.7451 0.0963263 0
+-43.6777 -0.0252151 0
+-44.7972 -0.149398 0
+-45.9365 -0.268889 0
+-47.0414 -0.376527 0
+-48.0736 -0.466445 0
+-48.9973 -0.534583 0
+-49.7795 -0.578789 0
+-50.3957 -0.598664 0
+-50.8336 -0.595256 0
+-51.0956 -0.570714 0
+-51.1981 -0.527931 0
+-51.1683 -0.470248 0
+-51.04 -0.40121 0
+-50.8487 -0.324376 0
+-50.6279 -0.243178 0
+-50.4063 -0.160825 0
+-50.2062 -0.0802173 0
+-50.0431 -0.00389904 0
+-49.9267 0.0659873 0
+-49.8611 0.127724 0
+-49.8467 0.180032 0
+-49.8806 0.222063 0
+-49.9579 0.25339 0
+-50.0723 0.273976 0
+-50.2168 0.284135 0
+-50.3839 0.284487 0
+-50.5661 0.275904 0
+-50.7562 0.259454 0
+-50.9474 0.236346 0
+0 0.207875 0
+32.7766 0.0634236 0
+32.7264 0.100466 0
+32.6724 0.138243 0
+32.616 0.175278 0
+32.5589 0.209886 0
+32.503 0.240219 0
+32.4503 0.264331 0
+32.4032 0.280247 0
+32.3638 0.286058 0
+32.3342 0.280021 0
+32.316 0.260669 0
+32.3103 0.226924 0
+32.3168 0.178214 0
+32.3337 0.11458 0
+32.3574 0.0367781 0
+32.3816 -0.0536384 0
+32.3975 -0.154251 0
+32.3937 -0.261741 0
+32.3568 -0.371881 0
+32.2723 -0.479583 0
+32.1263 -0.578996 0
+31.907 -0.663697 0
+31.6065 -0.726986 0
+31.2222 -0.762312 0
+30.7579 -0.763843 0
+30.224 -0.727164 0
+29.6376 -0.650058 0
+29.026 -0.533233 0
+28.4434 -0.380817 0
+28.0784 -0.200307 0
+28.8875 -0.00161149 0
+36.2294 0.204792 0
+79.7229 0.407976 0
+317.008 0.582865 0
+1556.19 0.63542 0
+7811.78 0.362307 0
+38557.1 0.464366 0
+186750 11.824 0
+892629 109.482 0
+4.24378e+06 683.382 0
+1.96788e+06 3889.05 1.83078e+07
+157658 3162.71 1.6254e+07
+-92782.6 1235.15 8.24878e+06
+26992.4 594.911 3.96437e+06
+5568.59 210.092 2.37408e+06
+-12347.9 33.341 1.31231e+06
+3362.1 216.403 654937
+2700.32 152.929 381471
+-2122.74 -51.9163 217368
+84.1472 -19.5608 104977
+740.687 55.0145 58111.5
+-325.238 13.8316 34600.5
+-92.1277 -14.3029 16407.5
+172.495 2.1278 8534.95
+-36.134 4.34968 5468.97
+-37.4588 -1.51045 2653.2
+35.3656 0.63753 1296.82
+-0.338566 1.30113 938.875
+-7.9046 -0.505842 531.345
+3.42269 0.235643 340.194
+-6.21964 1.36637 368.613
+10.26 0.185178 376.459
+-3.18907 -0.498695 664.035
+-43.7884 1.65348 1189.23
+49.6539 0.604961 1696.72
+33.7895 -1.69063 3540.78
+-217.699 5.80515 7201.43
+141.02 1.87534 11359
+375.625 -16.9983 22148.8
+-983.14 22.4906 46222.4
+18.5674 69.1949 77688.8
+2679.61 -29.4414 141909
+-3836.12 -49.9219 292688
+-3987.92 223.139 512033
+16644.1 284.324 885316
+-9201.43 89.7441 1.7803e+06
+-36270.5 425.546 3.22199e+06
+128957 948.765 5.42137e+06
+-231538 1909.61 1.14199e+07
+-2.76742e+06 5066.73 2.26588e+07
+-5.94278e+06 6539.77 2.56068e+07
+-1.24488e+06 1282.04 0
+-257711 246.866 0
+-52221.5 42.4072 0
+-10281.6 7.85309 0
+-1969.2 2.63052 0
+-384.846 1.63271 0
+-97.5656 1.20389 0
+-48.8946 0.881778 0
+-41.7961 0.579372 0
+-41.5778 0.266228 0
+-42.4826 -0.0607399 0
+-43.5856 -0.38934 0
+-44.7179 -0.70178 0
+-45.8248 -0.980546 0
+-46.8676 -1.21142 0
+-47.8096 -1.38475 0
+-48.6173 -1.49567 0
+-49.2647 -1.54371 0
+-49.7382 -1.53198 0
+-50.0385 -1.46631 0
+-50.18 -1.3543 0
+-50.1882 -1.20467 0
+-50.0949 -1.02651 0
+-49.9342 -0.82895 0
+-49.7381 -0.620717 0
+-49.5345 -0.409938 0
+-49.3453 -0.203944 0
+-49.186 -0.00914057 0
+-49.0663 0.169086 0
+-48.9912 0.326424 0
+-48.9615 0.459667 0
+-48.9755 0.566698 0
+-49.0292 0.646456 0
+-49.1173 0.698861 0
+-49.2339 0.724721 0
+-49.3726 0.725614 0
+-49.5267 0.703754 0
+-49.6899 0.661856 0
+-49.8561 0.602991 0
+0 0.530447 0
+30.5245 0.0750716 0
+30.4868 0.118853 0
+30.4485 0.163503 0
+30.4108 0.20728 0
+30.3751 0.248195 0
+30.3429 0.284068 0
+30.3154 0.312594 0
+30.2941 0.331435 0
+30.2802 0.338325 0
+30.2746 0.331183 0
+30.2778 0.308246 0
+30.2895 0.268204 0
+30.3084 0.21033 0
+30.3317 0.134615 0
+30.3549 0.0418893 0
+30.3713 -0.0660722 0
+30.3719 -0.186465 0
+30.3457 -0.315397 0
+30.2804 -0.447869 0
+30.1627 -0.577809 0
+29.9805 -0.698179 0
+29.724 -0.801176 0
+29.3876 -0.878566 0
+28.971 -0.922171 0
+28.4802 -0.924529 0
+27.9276 -0.87971 0
+27.3319 -0.784214 0
+26.7214 -0.637833 0
+26.1509 -0.444197 0
+25.8048 -0.210564 0
+26.6027 0.0540656 0
+33.6176 0.344391 0
+74.5806 0.671831 0
+295.953 1.09654 0
+1444.56 1.8394 0
+7217.03 3.8881 0
+35500.8 12.6839 0
+171544 58.8494 0
+818628 300.577 0
+3.88757e+06 1474.66 0
+1.8039e+06 7552.78 1.67532e+07
+146063 6102.1 1.48482e+07
+-85477.8 2911.69 7.50787e+06
+23991.8 2035.33 3.58097e+06
+5539.66 949.849 2.13254e+06
+-10951.2 24.935 1.17575e+06
+2840.51 213.944 584010
+2340.97 291.043 337856
+-1839.66 -13.4507 191619
+105.562 -43.892 92402.2
+637.979 56.0227 51138.5
+-298.993 17.5393 30271.8
+-75.269 -15.3562 14243.5
+153.435 6.89693 7424.15
+-33.5161 6.61382 4762.54
+-32.0432 -3.40023 2294.02
+30.7333 0.920361 1122.05
+-1.49548 2.54964 812.274
+-6.5797 -0.670566 453.788
+3.58952 0.109567 292.1
+-6.13581 1.82179 320.902
+8.51783 -0.0204556 323.617
+-1.56512 -0.628277 568.496
+-38.1705 3.17194 1029.79
+42.8187 0.78493 1469.63
+31.52 -3.8489 3068.92
+-194.204 9.11108 6280.75
+118.835 7.54135 9894.88
+346.343 -18.3547 19287.4
+-854.186 28.9519 40554
+-17.7645 70.4286 68520.6
+2332.24 -60.0302 125299
+-3357.41 12.8778 258970
+-3345.73 420.317 455136
+14841.2 288.339 792636
+-9072.98 101.175 1.6022e+06
+-32328.6 1467.71 2.90721e+06
+119337 2962.11 4.91919e+06
+-215027 4321.23 1.04378e+07
+-2.54426e+06 9303.51 2.0772e+07
+-5.4584e+06 11782.8 2.35017e+07
+-1.14452e+06 2414.92 0
+-237326 519.094 0
+-48220.2 109.332 0
+-9533.46 25.3439 0
+-1837.12 7.72315 0
+-361.684 3.38816 0
+-91.7363 1.96643 0
+-45.33 1.28873 0
+-38.3611 0.809262 0
+-38.0543 0.372249 0
+-38.8791 -0.0578333 0
+-39.9256 -0.475613 0
+-41.0243 -0.863611 0
+-42.1195 -1.20345 0
+-43.1722 -1.4803 0
+-44.1445 -1.68448 0
+-45.0013 -1.81176 0
+-45.7143 -1.8628 0
+-46.2665 -1.84228 0
+-46.6547 -1.75784 0
+-46.8887 -1.61906 0
+-46.9888 -1.43655 0
+-46.9821 -1.22131 0
+-46.8981 -0.98416 0
+-46.7657 -0.735394 0
+-46.6099 -0.484504 0
+-46.4511 -0.240002 0
+-46.3045 -0.00928429 0
+-46.1802 0.20145 0
+-46.0844 0.387258 0
+-46.0197 0.544473 0
+-45.9865 0.670686 0
+-45.9834 0.764707 0
+-46.0076 0.826477 0
+-46.0559 0.856961 0
+-46.1243 0.85802 0
+-46.2086 0.832256 0
+-46.3046 0.782853 0
+-46.408 0.713415 0
+0 0.627805 0
+26.3885 0.0598107 0
+26.3657 0.0945618 0
+26.3456 0.129999 0
+26.3292 0.164746 0
+26.3174 0.197227 0
+26.3108 0.225712 0
+26.3101 0.248371 0
+26.3158 0.263343 0
+26.3279 0.268815 0
+26.3462 0.263117 0
+26.3699 0.244821 0
+26.3976 0.212845 0
+26.4267 0.16656 0
+26.4538 0.105899 0
+26.4735 0.0314534 0
+26.4794 -0.0554362 0
+26.4627 -0.152601 0
+26.4136 -0.256987 0
+26.3213 -0.364626 0
+26.1748 -0.470641 0
+25.9643 -0.569314 0
+25.683 -0.654229 0
+25.3276 -0.718511 0
+24.9004 -0.755196 0
+24.4094 -0.757725 0
+23.8683 -0.720561 0
+23.2966 -0.639858 0
+22.7221 -0.514064 0
+22.1964 -0.344195 0
+21.8882 -0.133101 0
+22.615 0.118344 0
+28.8027 0.425275 0
+64.3081 0.868621 0
+253.859 1.7753 0
+1228.81 4.39702 0
+6097.56 13.593 0
+29840.9 48.8252 0
+143635 189.437 0
+683362 753.828 0
+3.23709e+06 2971.81 0
+1.5011e+06 12812.3 1.39158e+07
+123189 8907.78 1.22847e+07
+-70567.5 3330.8 6.17344e+06
+19019.5 2948.4 2.9161e+06
+4432.13 1926.03 1.72162e+06
+-8705.09 201.029 942615
+2314.85 185.565 465464
+1772.41 431.745 267967
+-1482.46 87.9818 150735
+128.907 -33.9639 72208.1
+497.633 60.2931 40063.8
+-250.847 24.0047 23591.3
+-49.9433 -13.9157 10971.2
+121.695 11.0738 5752.97
+-31.0205 9.02587 3688.79
+-22.9875 -4.77568 1745.15
+24.9574 0.827538 862.131
+-3.16394 3.5735 629.051
+-4.82356 -0.683693 339.852
+3.78728 -0.0322009 220.263
+-6.03265 2.10375 250.16
+6.22379 -0.250826 244.132
+0.818676 -0.592115 427.725
+-31.2754 4.42288 798.368
+31.3163 0.540589 1129.97
+30.0354 -5.32187 2344.73
+-155.342 12.6775 4876.83
+84.5323 12.569 7679.5
+292.539 -16.8598 14922.6
+-675.904 38.1223 31739
+-64.4667 76.6824 53855.7
+1898.39 -45.5261 98382.1
+-2590.77 149.645 204892
+-2739.86 604.754 363002
+11907.2 248.681 635697
+-7386.17 355.221 1.29369e+06
+-25744.9 2808.44 2.36417e+06
+99374.9 4198.78 4.03662e+06
+-182677 4810.85 8.64958e+06
+-2.13135e+06 12820.5 1.73096e+07
+-4.57311e+06 18481 1.9649e+07
+-961075 4339.6 0
+-199898 1107.13 0
+-40790.3 279.864 0
+-8113.9 72.6335 0
+-1577.07 20.3482 0
+-313.785 6.64242 0
+-79.8821 2.76791 0
+-38.9216 1.46314 0
+-32.5554 0.83337 0
+-32.1858 0.379485 0
+-32.8841 -0.0214656 0
+-33.8155 -0.390126 0
+-34.8195 -0.720769 0
+-35.843 -1.00287 0
+-36.848 -1.22746 0
+-37.7978 -1.38909 0
+-38.6578 -1.48615 0
+-39.3988 -1.52058 0
+-40.0017 -1.49717 0
+-40.4593 -1.42284 0
+-40.7762 -1.30577 0
+-40.9667 -1.1548 0
+-41.0511 -0.978863 0
+-41.0532 -0.786633 0
+-40.9962 -0.586241 0
+-40.9014 -0.385105 0
+-40.7862 -0.18982 0
+-40.6644 -0.00607693 0
+-40.5459 0.161382 0
+-40.4375 0.308793 0
+-40.3436 0.433375 0
+-40.2666 0.533317 0
+-40.2076 0.60774 0
+-40.1668 0.656634 0
+-40.1436 0.680779 0
+-40.137 0.681648 0
+-40.1454 0.66129 0
+-40.1672 0.622211 0
+-40.2003 0.567245 0
+0 0.499431 0
+20.2992 0.0325143 0
+20.2885 0.0512121 0
+20.282 0.070275 0
+20.2803 0.0889653 0
+20.2839 0.106438 0
+20.2929 0.121764 0
+20.3075 0.133956 0
+20.3274 0.142011 0
+20.3521 0.144945 0
+20.3806 0.141849 0
+20.4115 0.131936 0
+20.4429 0.114597 0
+20.472 0.0894624 0
+20.4954 0.0564557 0
+20.5082 0.0158499 0
+20.5046 -0.0316791 0
+20.4777 -0.0850062 0
+20.4195 -0.142517 0
+20.3215 -0.202082 0
+20.1757 -0.26105 0
+19.9751 -0.316269 0
+19.7152 -0.36415 0
+19.3949 -0.400783 0
+19.0176 -0.422121 0
+18.5913 -0.424219 0
+18.1286 -0.403533 0
+17.6468 -0.357219 0
+17.1698 -0.283333 0
+16.7404 -0.180657 0
+16.4935 -0.0471644 0
+17.0661 0.126775 0
+21.8409 0.386258 0
+48.7899 0.924176 0
+190.845 2.52773 0
+914.331 8.33142 0
+4498.66 30.6337 0
+21861.3 117.153 0
+104581 450.441 0
+494772 1711.79 0
+2.33121e+06 6389.46 0
+1.07476e+06 26402.2 9.96743e+06
+87439.5 18207.3 8.72217e+06
+-48901.8 5846.16 4.33354e+06
+13429.8 4089.04 2.02778e+06
+2412.09 3225.09 1.18725e+06
+-5989.86 810.921 641461
+1868.56 318.104 314618
+1119.95 558.933 181643
+-1087.9 197.307 101033
+143.497 9.21409 47735.3
+336.037 84.7506 26731.6
+-189.696 39.146 15666.9
+-20.2424 -11.0856 7145.58
+83.8686 13.4549 3813.29
+-28.7367 12.2618 2444.18
+-12.619 -4.25105 1109.83
+19.0497 0.795475 563.092
+-4.63146 4.16603 422.556
+-3.0496 -0.53663 212.832
+3.75923 -0.0706566 139.479
+-5.73974 2.23496 169.939
+3.91275 -0.34053 154.03
+3.05042 -0.342087 270.044
+-24.4189 5.20015 536.678
+17.9713 0.457528 737.106
+29.4274 -4.49921 1501.24
+-109.177 17.1096 3242.52
+42.6492 15.6025 5093.02
+224.888 -13.0836 9768.52
+-466.63 58.8063 21187
+-109.594 110.484 36053
+1416.37 13.7136 65390.5
+-1690.32 294.372 138285
+-2270.53 768.892 247636
+8317.32 430.028 432797
+-4316.44 1205.52 888205
+-18359.2 4587.46 1.64562e+06
+69711.8 5700.17 2.83538e+06
+-131406 8139.75 6.13834e+06
+-1.54198e+06 25465.1 1.24214e+07
+-3.3255e+06 37028.3 1.42169e+07
+-702405 9010.69 0
+-146901 2419.16 0
+-30167.9 636.504 0
+-6048.13 165.146 0
+-1187.45 42.9744 0
+-239.221 11.6437 0
+-61.4124 3.57751 0
+-29.704 1.38261 0
+-24.6256 0.64797 0
+-24.2796 0.277579 0
+-24.8126 0.00828511 0
+-25.5534 -0.218392 0
+-26.3686 -0.412199 0
+-27.2134 -0.572191 0
+-28.0559 -0.696068 0
+-28.8654 -0.782564 0
+-29.612 -0.832033 0
+-30.2705 -0.84644 0
+-30.8234 -0.829079 0
+-31.2621 -0.784195 0
+-31.5877 -0.716587 0
+-31.8089 -0.631264 0
+-31.9396 -0.533184 0
+-31.9967 -0.42706 0
+-31.9971 -0.317242 0
+-31.9564 -0.207647 0
+-31.8881 -0.101715 0
+-31.803 -0.00238979 0
+-31.7093 0.0878928 0
+-31.6132 0.167211 0
+-31.5191 0.234153 0
+-31.4303 0.287807 0
+-31.3493 0.327743 0
+-31.2778 0.35398 0
+-31.217 0.366948 0
+-31.1676 0.367438 0
+-31.1302 0.356543 0
+-31.1048 0.335599 0
+-31.0911 0.306116 0
+0 0.269712 0
+12.983 0.010997 0
+12.9789 0.0171054 0
+12.9782 0.0233296 0
+12.9812 0.0294308 0
+12.988 0.0351346 0
+12.9988 0.0401379 0
+13.0132 0.0441192 0
+13.0309 0.0467496 0
+13.0512 0.0477067 0
+13.0734 0.0466889 0
+13.0961 0.0434326 0
+13.1179 0.037729 0
+13.1368 0.0294422 0
+13.1502 0.0185277 0
+13.1549 0.00505088 0
+13.1469 -0.0107945 0
+13.1217 -0.0286683 0
+13.0742 -0.0480667 0
+12.9989 -0.0683088 0
+12.8908 -0.0885276 0
+12.7456 -0.107671 0
+12.5606 -0.124517 0
+12.3358 -0.137706 0
+12.0736 -0.145795 0
+11.7798 -0.147334 0
+11.4632 -0.140946 0
+11.1355 -0.125389 0
+10.8128 -0.099521 0
+10.5236 -0.0618819 0
+10.3565 -0.00868204 0
+10.7216 0.0752289 0
+13.758 0.256114 0
+30.671 0.821857 0
+118.707 2.99156 0
+562.008 11.7857 0
+2735.19 47.3613 0
+13155 188.903 0
+62289.9 741.461 0
+291618 2857.62 0
+1.35907e+06 10888.1 0
+615635 46180.2 5.74722e+06
+45840.9 34028.6 4.93703e+06
+-26631.6 12683.3 2.39503e+06
+8301.74 6836.33 1.10927e+06
+489.771 4933.03 647226
+-3411.51 1844.72 341847
+1360.27 779.249 165926
+533.644 759.517 97305.8
+-673.86 314.38 53308.4
+142.986 77.3094 24622.9
+178.916 122.66 14148.2
+-128.232 61.2895 8223.44
+4.77602 -1.95745 3597.08
+49.4712 16.5368 2009.99
+-24.2855 15.5019 1298.78
+-4.25635 -1.93105 538.704
+13.2214 1.25211 288.891
+-4.91315 4.31975 232.35
+-1.61744 -0.205388 101.74
+3.16195 0.0491393 68.0581
+-4.91241 2.17241 95.4655
+1.94022 -0.200062 74.0904
+3.856 0.107662 131.202
+-17.6802 5.47922 295.219
+6.893 1.09533 375.711
+26.3898 -1.53321 736.509
+-66.806 21.3988 1730.65
+5.02055 20.0395 2678.27
+156.908 -0.623755 4943.97
+-257.918 88.7819 11187.9
+-141.693 162.955 19125.6
+897.363 107.324 33892.4
+-850.314 454.372 73488.2
+-1715.62 1047.94 133447
+4841.86 1075.19 229800
+-1282.05 2652.41 477875
+-11567.6 6988.35 906385
+38535.7 9592.99 1.56846e+06
+-70308.8 18038.2 3.43597e+06
+-894616 48715.4 7.12185e+06
+-1.96204e+06 66205.2 8.2998e+06
+-418756 15634.6 0
+-88464.2 4096.62 0
+-18350.4 1057.33 0
+-3717.75 266.761 0
+-738.456 65.8909 0
+-150.735 16.0839 0
+-39.0991 4.01475 0
+-18.8747 1.11157 0
+-15.5681 0.369877 0
+-15.3293 0.127889 0
+-15.676 0.00539768 0
+-16.1656 -0.0814602 0
+-16.708 -0.15046 0
+-17.2733 -0.205098 0
+-17.8405 -0.24597 0
+-18.3894 -0.273337 0
+-18.9003 -0.28775 0
+-19.3565 -0.29018 0
+-19.7458 -0.28198 0
+-20.0618 -0.264767 0
+-20.3044 -0.240296 0
+-20.4783 -0.210335 0
+-20.5919 -0.176578 0
+-20.655 -0.140588 0
+-20.6782 -0.103767 0
+-20.671 -0.0673449 0
+-20.6418 -0.0323832 0
+-20.5971 0.000224633 0
+-20.5424 0.0297463 0
+-20.4815 0.0556072 0
+-20.4178 0.0773875 0
+-20.3537 0.0948187 0
+-20.2913 0.107779 0
+-20.2322 0.116284 0
+-20.178 0.120479 0
+-20.13 0.120621 0
+-20.089 0.117063 0
+-20.0559 0.110237 0
+-20.031 0.100631 0
+0 0.0887649 0
+6.12716 0.00207438 0
+6.12548 0.00305887 0
+6.12542 0.0040591 0
+6.12707 0.00503777 0
+6.13047 0.00595143 0
+6.13556 0.006752 0
+6.14221 0.0073886 0
+6.15016 0.00780942 0
+6.1591 0.00796357 0
+6.16857 0.00780302 0
+6.178 0.00728443 0
+6.18664 0.00637103 0
+6.19357 0.0050345 0
+6.1976 0.00325705 0
+6.19724 0.0010339 0
+6.1907 -0.00162328 0
+6.17585 -0.00468207 0
+6.15028 -0.00808374 0
+6.11149 -0.0117371 0
+6.05707 -0.0155126 0
+5.98503 -0.0192382 0
+5.89412 -0.0226991 0
+5.78419 -0.0256432 0
+5.6564 -0.027793 0
+5.51335 -0.0288627 0
+5.35902 -0.028575 0
+5.19878 -0.0266627 0
+5.04004 -0.0228075 0
+4.89657 -0.0163037 0
+4.81228 -0.00440037 0
+4.99015 0.0256836 0
+6.47537 0.133945 0
+14.6598 0.593149 0
+56.6614 2.59294 0
+264.944 11.1134 0
+1269.79 46.2528 0
+6007.54 186.686 0
+27953.1 732.935 0
+128435 2811.7 0
+586601 10667.5 0
+256152 44684.9 2.43253e+06
+14489.4 32711.7 2.01916e+06
+-10433.8 12493.1 934358
+4136.96 6210.7 427145
+-413.32 4110.76 250873
+-1464.06 1602.96 127439
+769.606 737.284 60803.4
+139.399 632.298 36968.6
+-318.064 248.009 19673.6
+115.155 67.6555 8744.95
+66.4377 101.989 5380.93
+-72.6974 50.8332 3063.3
+14.9034 -0.0272138 1208.25
+24.3603 12.9717 758.658
+-16.0686 12.351 505.785
+0.0682813 -0.928988 170.048
+7.73345 0.966775 103.137
+-3.55585 3.21787 96.477
+-0.724105 -0.0461335 31.4097
+1.92525 0.0798308 21.991
+-3.44213 1.58542 41.076
+0.478827 -0.091233 22.8715
+2.67174 0.239524 42.2593
+-11.0537 4.11738 122.611
+0.603487 0.855555 131.525
+18.0938 -0.524447 237.432
+-34.7854 17.0689 678.268
+-13.7964 15.889 1002.7
+92.4511 1.36851 1671.73
+-102.928 73.2813 4201.02
+-133.676 135.977 7275.67
+436.385 92.8325 12073.3
+-255.945 359.325 27325.5
+-1008.88 880.209 50952.7
+2135.38 1024.26 84647.2
+312.381 2314.04 179861
+-5914.04 5902.09 354991
+15371.7 8925.48 610550
+-22982 18372 1.3582e+06
+-377191 48406.8 2.9522e+06
+-857311 66116.8 3.55854e+06
+-186555 15763.9 0
+-40123.2 4130.42 0
+-8463.15 1065.31 0
+-1741.94 266.934 0
+-351.199 64.6138 0
+-72.5491 15.0523 0
+-18.8085 3.38125 0
+-8.92876 0.743508 0
+-7.29295 0.163595 0
+-7.1732 0.0311531 0
+-7.3439 -0.00700979 0
+-7.58304 -0.0244884 0
+-7.84564 -0.0359942 0
+-8.11749 -0.044397 0
+-8.38927 -0.0502426 0
+-8.65205 -0.0536526 0
+-8.89706 -0.0547395 0
+-9.11664 -0.0537085 0
+-9.30519 -0.0508649 0
+-9.45985 -0.0465806 0
+-9.58049 -0.0412478 0
+-9.66929 -0.0352378 0
+-9.73006 -0.0288731 0
+-9.76737 -0.0224162 0
+-9.78593 -0.0160708 0
+-9.79005 -0.00999146 0
+-9.78338 -0.00429562 0
+-9.76884 0.000925245 0
+-9.74871 0.00559781 0
+-9.72473 0.0096629 0
+-9.69829 0.0130747 0
+-9.67051 0.0158017 0
+-9.64241 0.0178287 0
+-9.61486 0.0191575 0
+-9.58871 0.0198083 0
+-9.56469 0.0198181 0
+-9.54346 0.0192399 0
+-9.52555 0.01814 0
+-9.51134 0.0165942 0
+0 0.0146843 0
+1.71794 0.000319193 0
+1.71725 0.000436961 0
+1.717 0.00055572 0
+1.71719 0.000671234 0
+1.71784 0.00077845 0
+1.71891 0.000871751 0
+1.72037 0.000945248 0
+1.72214 0.00099302 0
+1.72412 0.00100928 0
+1.72618 0.000988502 0
+1.72817 0.000925456 0
+1.72987 0.000815227 0
+1.73103 0.000653181 0
+1.73132 0.000434994 0
+1.73035 0.000156824 0
+1.7276 -0.000184249 0
+1.72249 -0.000589381 0
+1.71434 -0.00105672 0
+1.70244 -0.00157976 0
+1.68611 -0.00214567 0
+1.66477 -0.00273378 0
+1.63804 -0.00331501 0
+1.60586 -0.00385254 0
+1.56852 -0.00430399 0
+1.5267 -0.00462481 0
+1.48149 -0.00477088 0
+1.43435 -0.00469561 0
+1.38741 -0.00432163 0
+1.34503 -0.00338999 0
+1.32247 -0.000696301 0
+1.39191 0.00965134 0
+1.92064 0.0556377 0
+4.75953 0.263578 0
+18.9666 1.17211 0
+87.5196 4.95014 0
+408.852 19.8607 0
+1879.27 75.779 0
+8482.64 275.534 0
+37754.6 957.146 0
+166781 3211.61 0
+68664.7 11957 671890
+1722.69 7642.26 528715
+-2542.13 2165.05 225849
+1441.04 1200.62 102450
+-376.548 861.633 61733.7
+-396.556 183.297 29241.9
+307.012 103.319 13735.4
+-10.3713 162.229 9034.2
+-105.626 34.3587 4452.09
+63.6247 -7.74163 1824.99
+16.3224 27.6321 1348.09
+-30.0687 12.5057 729.611
+10.8959 -5.46747 214.771
+9.78386 2.99249 186.088
+-6.94521 4.02509 134.165
+0.956859 -1.17137 25.3833
+3.47894 -0.0240037 22.1568
+-1.54251 1.20053 28.3999
+-0.279362 -0.078494 4.52201
+0.647011 -0.0122384 3.7509
+-1.90584 0.615747 12.8013
+-0.407481 -0.104881 3.21393
+0.63275 0.0255467 7.10658
+-5.56943 1.54591 36.1798
+-1.38706 -0.214541 26.7217
+7.55753 -1.24686 38.0476
+-15.0018 5.68439 181.778
+-12.6677 3.35028 241.157
+39.144 -6.94518 300.923
+-29.0326 18.8193 1013.67
+-80.4968 36.169 1816.39
+150.17 -11.7847 2515.72
+-9.2325 54.6295 6244.16
+-418.536 228.112 12506.2
+598.828 137.972 19153.8
+456.358 275.678 41630.3
+-2109.34 1260.61 88139.7
+3833.56 1738.76 147578
+-3014.32 3243.65 331807
+-102148 11503.2 781421
+-245961 17944.9 992638
+-55288.7 4803.08 0
+-12265.5 1420.01 0
+-2665.09 403.73 0
+-564.311 109.031 0
+-116.655 27.8599 0
+-24.3634 6.71425 0
+-6.06834 1.52362 0
+-2.61527 0.325579 0
+-2.02448 0.0646961 0
+-1.96981 0.00993742 0
+-2.01721 -0.00206691 0
+-2.08701 -0.00545258 0
+-2.16345 -0.00695017 0
+-2.24208 -0.0078368 0
+-2.32033 -0.00834668 0
+-2.39581 -0.00851996 0
+-2.46616 -0.00837331 0
+-2.52932 -0.00793893 0
+-2.58378 -0.00727005 0
+-2.62876 -0.00643387 0
+-2.66427 -0.00550028 0
+-2.69094 -0.00453172 0
+-2.70982 -0.0035768 0
+-2.72219 -0.00266842 0
+-2.72935 -0.00182532 0
+-2.73246 -0.00105578 0
+-2.73251 -0.000361839 0
+-2.73026 0.000257082 0
+-2.72632 0.000801712 0
+-2.72112 0.00127178 0
+-2.71504 0.00166593 0
+-2.70838 0.00198228 0
+-2.70142 0.00221931 0
+-2.69442 0.0023766 0
+-2.68762 0.00245542 0
+-2.68127 0.00245903 0
+-2.67558 0.00239278 0
+-2.67071 0.00226388 0
+-2.66683 0.00208091 0
+0 0.00185332 0
+0.327103 4.29022e-05 0
+0.326917 5.44106e-05 0
+0.32681 6.58567e-05 0
+0.326784 7.68573e-05 0
+0.32684 8.69389e-05 0
+0.326972 9.55702e-05 0
+0.32717 0.000102202 0
+0.327419 0.000106294 0
+0.3277 0.000107325 0
+0.327988 0.000104788 0
+0.328249 9.81722e-05 0
+0.328445 8.69334e-05 0
+0.328527 7.0453e-05 0
+0.328431 4.8009e-05 0
+0.32808 1.87723e-05 0
+0.327378 -1.81463e-05 0
+0.326208 -6.35734e-05 0
+0.324442 -0.000118067 0
+0.321941 -0.000181636 0
+0.31857 -0.000253425 0
+0.314215 -0.000331435 0
+0.3088 -0.000412378 0
+0.302309 -0.000491744 0
+0.294793 -0.000564121 0
+0.286383 -0.000623683 0
+0.277283 -0.000664455 0
+0.267779 -0.00067908 0
+0.258324 -0.000650124 0
+0.250001 -0.000502968 0
+0.247079 0.00013955 0
+0.270285 0.00318025 0
+0.423259 0.0178012 0
+1.21094 0.0858371 0
+5.00185 0.386389 0
+22.5019 1.63814 0
+100.587 6.53694 0
+439.41 24.4898 0
+1878.44 85.7145 0
+7901.55 277.609 0
+32955.5 821.862 0
+12244.8 2443.65 126438
+-367.999 1407.05 91398.9
+-345.185 375.712 34114.1
+338.959 289.968 15909.1
+-172.086 168.192 10035
+-57.2513 -13.1397 4029.1
+98.7285 8.30359 1962.48
+-20.7321 40.4408 1564.88
+-26.534 2.92704 616.632
+25.3861 -6.27836 195.494
+3.8183 7.00028 246.771
+-8.67825 2.98584 119.585
+5.06581 -2.16394 7.99255
+3.58382 0.675261 32.4757
+-1.80857 1.1098 27.2604
+0.728773 -0.400397 -1.15902
+1.28622 -0.0291736 2.77042
+-0.413783 0.346754 6.74194
+-0.10545 -0.0317032 -0.0800357
+0.0216714 0.00117571 0.289315
+-0.975858 0.182166 3.36903
+-0.661714 -0.0424812 -0.0735281
+-0.423076 -0.0152103 0.386652
+-2.53924 0.450071 8.62143
+-1.48855 -0.0800843 2.72649
+1.42948 -0.411829 -0.335018
+-5.98371 1.63089 37.5305
+-6.71294 0.732789 40.3793
+11.1221 -2.81646 12.7342
+-8.02663 4.61016 170.478
+-33.856 9.0906 329.484
+38.9869 -9.17101 264.188
+21.7877 6.19656 882.779
+-140.014 57.3277 2178.5
+94.4082 8.41276 2717.29
+232.289 -15.2789 5785.02
+-509.614 253.437 14452.6
+541.746 424.686 22999.5
+473.357 560.562 50491.6
+-18348.7 2124.71 136153
+-48884 3680.54 188033
+-11630 1232.1 0
+-2728.29 412.825 0
+-625.663 125.876 0
+-139.354 35.3052 0
+-30.0949 9.18451 0
+-6.43077 2.22464 0
+-1.52524 0.502636 0
+-0.560727 0.105986 0
+-0.386996 0.0206365 0
+-0.365628 0.00330684 0
+-0.373314 -0.000123307 0
+-0.386989 -0.000851561 0
+-0.402197 -0.00105151 0
+-0.417829 -0.00112651 0
+-0.433351 -0.00114928 0
+-0.448304 -0.00113213 0
+-0.462246 -0.00107808 0
+-0.474786 -0.000991512 0
+-0.485641 -0.000879928 0
+-0.494668 -0.000752985 0
+-0.50187 -0.000620627 0
+-0.507369 -0.000491374 0
+-0.511369 -0.000371286 0
+-0.514115 -0.0002637 0
+-0.51585 -0.000169597 0
+-0.516796 -8.83238e-05 0
+-0.517135 -1.83907e-05 0
+-0.517012 4.18528e-05 0
+-0.516535 9.377e-05 0
+-0.515789 0.000138238 0
+-0.51484 0.000175649 0
+-0.513749 0.000206036 0
+-0.512569 0.000229252 0
+-0.511353 0.000245131 0
+-0.510152 0.000253621 0
+-0.509016 0.000254866 0
+-0.50799 0.000249247 0
+-0.507111 0.000237367 0
+-0.506411 0.00022 0
+0 0.000198021 0
+0.0469675 4.17364e-06 0
+0.0469327 4.99198e-06 0
+0.0469091 5.79063e-06 0
+0.046897 6.54492e-06 0
+0.0468963 7.22295e-06 0
+0.046906 7.78845e-06 0
+0.0469246 8.20449e-06 0
+0.0469499 8.43573e-06 0
+0.0469788 8.44867e-06 0
+0.0470074 8.21014e-06 0
+0.0470309 7.68399e-06 0
+0.0470435 6.82633e-06 0
+0.0470377 5.57988e-06 0
+0.0470043 3.869e-06 0
+0.0469318 1.59764e-06 0
+0.0468057 -1.34701e-06 0
+0.0466094 -5.08264e-06 0
+0.0463235 -9.71035e-06 0
+0.0459274 -1.52846e-05 0
+0.0454014 -2.17789e-05 0
+0.0447282 -2.90541e-05 0
+0.0438967 -3.6841e-05 0
+0.0429042 -4.47443e-05 0
+0.041758 -5.22739e-05 0
+0.0404773 -5.88893e-05 0
+0.0390923 -6.40078e-05 0
+0.0376476 -6.67683e-05 0
+0.0362229 -6.45187e-05 0
+0.0350522 -4.4434e-05 0
+0.0351663 6.13137e-05 0
+0.0416975 0.000605373 0
+0.0800499 0.0033443 0
+0.270903 0.0166054 0
+1.16002 0.0779551 0
+5.09751 0.349104 0
+21.7492 1.49732 0
+89.2679 6.17778 0
+353.03 24.6612 0
+1351.66 96.0473 0
+5048.93 371.297 0
+1647.66 1524.01 17164.5
+-139.229 990.226 11061.4
+2.38512 382.244 3444.58
+50.3884 237.755 1859.54
+-54.7944 119.167 1158.68
+0.562997 13.3906 260.645
+27.7288 14.6061 176.689
+-6.45034 22.9549 222.635
+-4.59194 3.94361 49.2374
+8.0435 -0.591954 -1.142
+1.70774 4.09367 37.5716
+-1.35339 1.56931 15.6872
+1.87299 -0.65956 -5.10841
+1.27609 0.587474 4.48166
+-0.091007 0.649432 4.55429
+0.478396 -0.00148327 -1.47612
+0.507975 0.1017 0.148821
+-0.0221281 0.122223 1.48946
+-0.0594393 -0.125297 0.0571015
+-0.129659 -0.126994 0.187809
+-0.461453 -0.0625981 0.935194
+-0.500891 -0.167751 0.105598
+-0.590735 -0.152025 0.160541
+-1.25039 0.158352 1.90839
+-1.10589 0.123837 -0.0607591
+-0.42406 0.0595342 -1.70651
+-2.30746 0.958896 6.33596
+-2.78977 0.702128 5.2365
+1.42387 -0.933469 -6.55372
+-3.38344 2.28494 23.4514
+-11.2624 5.4168 49.5889
+6.76647 -1.04355 -3.79962
+6.9969 6.33713 75.2982
+-40.5096 32.4919 312.616
+2.48775 19.0062 235.81
+77.484 20.2604 380.96
+-80.287 177.396 1694.89
+0.690061 348.726 2697.07
+200.869 564.272 5113.26
+-2478.61 1477.76 16551.6
+-7509.73 2275.46 25608.3
+-1994.24 553.75 0
+-513.876 142.415 0
+-127.375 36.1542 0
+-30.1979 8.89738 0
+-6.83314 2.10301 0
+-1.49244 0.474263 0
+-0.337444 0.101542 0
+-0.102317 0.02056 0
+-0.0580976 0.00390111 0
+-0.0514658 0.000647942 0
+-0.0520079 3.55485e-05 0
+-0.0539618 -8.05918e-05 0
+-0.0562357 -0.000104719 0
+-0.0585869 -0.000110033 0
+-0.0609223 -0.000109532 0
+-0.0631725 -0.00010546 0
+-0.0652723 -9.82865e-05 0
+-0.0671653 -8.84541e-05 0
+-0.0688104 -7.66915e-05 0
+-0.070187 -6.39364e-05 0
+-0.0712954 -5.11456e-05 0
+-0.0721536 -3.91175e-05 0
+-0.0727911 -2.8384e-05 0
+-0.0732433 -1.91879e-05 0
+-0.0735454 -1.15261e-05 0
+-0.073729 -5.23052e-06 0
+-0.0738206 -5.69148e-08 0
+-0.0738406 4.24151e-06 0
+-0.0738047 7.86561e-06 0
+-0.0737252 1.09496e-05 0
+-0.0736121 1.35621e-05 0
+-0.0734741 1.57216e-05 0
+-0.0733196 1.74161e-05 0
+-0.0731568 1.8623e-05 0
+-0.0729936 1.93237e-05 0
+-0.0728377 1.95139e-05 0
+-0.0726961 1.9209e-05 0
+-0.0725749 1.84437e-05 0
+-0.0724791 1.72674e-05 0
+0 1.57383e-05 0
+0.00470816 0 0
+0.004704 0 0
+0.00470097 0 0
+0.00469908 0 0
+0.00469832 0 0
+0.00469859 0 0
+0.00469973 0 0
+0.00470148 0 0
+0.00470353 0 0
+0.00470546 0 0
+0.00470677 0 0
+0.00470684 0 0
+0.00470489 0 0
+0.00469997 0 0
+0.00469086 0 0
+0.00467611 0 0
+0.00465397 0 0
+0.00462244 0 0
+0.00457943 0 0
+0.00452288 0 0
+0.00445103 0 0
+0.00436273 0 0
+0.00425769 0 0
+0.00413668 0 0
+0.00400168 0 0
+0.00385589 0 0
+0.00370428 0 0
+0.00355714 0 0
+0.00345038 0 0
+0.00355537 0 0
+0.00474782 0 0
+0.0114122 0 0
+0.0445704 0 0
+0.200317 0 0
+0.897992 0 0
+3.89109 0 0
+16.2432 0 0
+65.561 0 0
+257.657 0 0
+1000.24 0 0
+387.923 1827.7 1832.95
+8.11154 1179.15 1181.3
+11.1184 379.79 381.088
+21.7041 230.279 234.179
+-5.64848 131.604 133.961
+0.402018 10.4513 9.87281
+9.2405 8.99986 11.1214
+2.10911 24.8645 28.0475
+-0.0228858 5.0722 4.88452
+3.16066 -1.29242 -3.14191
+2.34128 4.42012 4.58436
+0.568999 1.78919 3.16542
+0.647865 -0.997506 -0.381595
+0.764616 0.985236 -0.00345813
+0.627602 1.4323 -0.0864766
+0.769856 0.565974 -0.859811
+0.765483 0.386835 -0.267052
+0.419589 0.207158 0.375729
+0.10961 -0.273584 0.417359
+-0.114349 -0.416557 0.512166
+-0.359706 -0.393253 0.657883
+-0.63716 -0.461174 0.527918
+-1.06964 -0.284093 0.498042
+-1.5416 0.290645 0.456805
+-1.5296 0.506961 -0.413951
+-1.31303 0.834539 -1.1306
+-1.43914 2.05638 -0.164548
+-1.15063 1.13892 -0.0183208
+-1.08784 -1.81839 -0.219127
+-3.79827 2.42349 4.79462
+-4.82769 5.86047 5.89103
+-0.410651 -1.84036 -4.82841
+-3.86977 8.25281 7.78329
+-13.6533 35.1164 39.4845
+-0.410083 10.6414 13.7483
+6.82603 16.8785 16.2372
+-34.1792 196.639 199.533
+-15.8949 336.829 342.68
+-11.6586 561.329 564.391
+-581.121 1761.7 1765.13
+-1487.78 2725.9 2732.42
+-380.314 0 0
+-95.4949 0 0
+-23.198 0 0
+-5.40946 0 0
+-1.20586 0 0
+-0.258098 0 0
+-0.0552309 0 0
+-0.0141764 0 0
+-0.0064049 0 0
+-0.00513339 0 0
+-0.00508621 0 0
+-0.00527173 0 0
+-0.00550595 0 0
+-0.00575102 0 0
+-0.00599498 0 0
+-0.00623022 0 0
+-0.00645 0 0
+-0.00664854 0 0
+-0.00682166 0 0
+-0.00696724 0 0
+-0.00708531 0 0
+-0.00717766 0 0
+-0.00724728 0 0
+-0.00729773 0 0
+-0.00733256 0 0
+-0.00735498 0 0
+-0.00736763 0 0
+-0.0073726 0 0
+-0.00737149 0 0
+-0.00736555 0 0
+-0.00735583 0 0
+-0.00734326 0 0
+-0.00732874 0 0
+-0.00731312 0 0
+-0.00729729 0 0
+-0.00728206 0 0
+-0.00726818 0 0
+-0.00725632 0 0
+-0.00724702 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1191.02 1638.35 0
+450.632 3255.06 0
+-181.989 1388.17 0
+188.392 -7.92482 0
+239.381 475.669 0
+2.84222 492.286 0
+20.3284 -2.15957 0
+78.2683 -22.4659 0
+32.5181 97.0128 0
+19.1755 24.4243 0
+33.9188 -16.4764 0
+20.5327 16.4222 0
+6.74824 14.5319 0
+11.7769 0.747064 0
+15.888 6.69912 0
+13.4628 8.86824 0
+11.3622 3.92707 0
+6.79719 3.28531 0
+1.30157 4.03769 0
+-2.81198 2.95949 0
+-6.45897 2.18824 0
+-11.6561 3.14747 0
+-18.8708 4.78377 0
+-25.5699 4.04809 0
+-28.8247 5.31341 0
+-31.0414 12.0036 0
+-24.4563 8.5088 0
+-18.4556 1.35217 0
+-34.1199 20.8666 0
+-54.9111 19.8788 0
+-36.5643 -21.1973 0
+-56.7046 39.0389 0
+-116.881 134.212 0
+-34.6239 -37.7659 0
+-21.4295 9.38985 0
+-363.532 718.019 0
+-271.254 664.642 0
+273.362 -40.5378 0
+-667.794 2043.81 0
+-1764.16 4831.63 0
+0 2450.44 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1433.41 0 0
+2828.25 0 0
+1017.63 0 0
+-379.192 0 0
+416.923 0 0
+753.206 0 0
+215.801 0 0
+85.8677 0 0
+245.809 0 0
+197.573 0 0
+98.9846 0 0
+83.7532 0 0
+61.0123 0 0
+49.054 0 0
+68.9028 0 0
+71.5687 0 0
+53.2161 0 0
+26.9489 0 0
+6.06758 0 0
+-12.0341 0 0
+-32.806 0 0
+-55.8798 0 0
+-83.212 0 0
+-120.762 0 0
+-146.503 0 0
+-138.342 0 0
+-110.154 0 0
+-127.877 0 0
+-161.075 0 0
+-192.958 0 0
+-327.732 0 0
+-379.876 0 0
+-157.613 0 0
+-372.953 0 0
+-1143.04 0 0
+-620.293 0 0
+514.33 0 0
+-1565.37 0 0
+-4220.22 0 0
+-2151.32 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1194.41 -994.796 1633.34
+439.137 -1293.53 3230.11
+-190.556 -326.463 1337.26
+198.162 -106.001 -48.5223
+244.084 -383.749 471.933
+-5.14979 -234.798 493.862
+21.976 -4.45983 -11.8376
+90.345 -17.0236 -23.2909
+36.0427 -48.4055 107.596
+13.9922 -10.346 29.2553
+33.2718 1.61018 -16.3043
+25.105 -8.28763 19.7173
+10.9992 -3.53368 17.26
+11.2219 0.910435 -1.15702
+10.0028 -2.11511 3.23931
+5.48451 -2.58384 6.27088
+3.36013 -0.658792 2.49775
+0.973762 -0.128449 2.89129
+-2.65951 -0.548869 4.64898
+-4.51724 -1.53101 3.92994
+-5.12335 -1.8983 3.16376
+-7.54661 -1.29848 4.25936
+-11.9008 -0.444308 5.30667
+-14.4283 -0.281943 3.35756
+-16.6036 -1.50504 3.28397
+-21.8388 -4.40774 8.49484
+-22.1438 -4.25085 4.30998
+-22.7159 -0.798098 -0.597901
+-42.4668 -5.6399 25.0996
+-52.83 -10.4272 25.9956
+-27.5332 2.52282 -21.7745
+-61.8341 -16.9132 46.5307
+-134.506 -68.0475 148.542
+-35.0066 -20.5425 -39.4756
+-9.30332 -8.75451 -3.17578
+-371.23 -342.833 720.972
+-285.535 -542.439 656.223
+287.043 -130.495 -100.01
+-649.417 -471.977 1971.58
+-1765.65 -1912.46 4792.82
+0 -1473.59 2439.93
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+10104.6 -9652.39 15717.5
+4515.75 -14508.9 29865.6
+-1098.84 -6157.62 14890.6
+382.895 -1580.19 1853.78
+830.709 -2278.59 2605.7
+-200.663 -1442.72 2499.99
+17.261 -86.2797 40.6222
+337.876 -160.602 48.1345
+82.025 -324.481 581.563
+14.202 -56.2051 112.458
+115.212 12.0037 -73.8477
+76.1576 -61.7545 108.213
+26.8442 -26.9804 67.549
+40.63 6.35972 -14.7452
+34.6253 -10.6556 19.0972
+13.9357 -11.2203 27.8524
+8.96397 -0.95528 5.41461
+4.89759 -3.06218 8.4464
+-5.0405 -6.01916 15.451
+-12.6241 -5.52168 11.7621
+-17.6309 -4.83531 8.88118
+-25.9799 -5.54467 12.7043
+-37.3466 -6.88743 17.9608
+-41.2706 -3.7807 9.34266
+-46.8402 -2.57844 7.42116
+-73.1437 -17.6965 37.8959
+-79.0212 -16.817 24.8197
+-63.28 3.81939 -15.3657
+-132.35 -42.9736 99.8292
+-177.687 -82.4393 140.8
+-40.5864 18.6355 -103.614
+-153.359 -91.6152 183.677
+-496.572 -454.204 804.671
+-26.2092 -204.203 25.953
+234.89 -137.988 103.948
+-1248.55 -2099.59 3620.92
+-514.215 -3220.84 3638.73
+1605.75 -2218.74 2665.12
+-6757.39 -9102.46 22106.7
+-14987.1 -21541.1 44409.8
+0 -14374 23520.8
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+63535.3 -49551.5 102802
+30502.7 -73202.5 183125
+-4325 -35178.2 97962.4
+24.1832 -10351.3 20331
+2948.95 -8948.44 13780
+-884.713 -5656.52 12076.7
+-252.275 -1200.97 2444.74
+874.54 -1071.03 1348.43
+22.126 -1193.21 2337.75
+-103.463 -244.396 508.882
+268.159 -49.5994 -63.2517
+121.173 -234.098 438.915
+-1.26423 -87.1905 190.644
+82.0139 9.00703 -53.4344
+66.7233 -41.6251 73.5138
+12.6658 -31.9834 73.6585
+17.7199 -2.29147 -1.01983
+16.2626 -11.9039 17.0392
+-6.15305 -16.4891 32.8243
+-20.8607 -10.0002 19.4697
+-28.1365 -7.36135 13.1651
+-42.8072 -11.1486 20.2013
+-67.6892 -20.8234 39.2025
+-66.4434 -14.4243 18.068
+-61.1289 -4.76636 -0.415641
+-133.203 -46.3472 100.403
+-147.058 -55.4324 90.0577
+-43.0096 6.47824 -66.2866
+-219.733 -135.407 281.895
+-390.982 -315.246 574.539
+120.131 -58.5217 -104.612
+-116.462 -375.569 784.723
+-1252.06 -1664.87 3229.06
+401.425 -1422.57 1743.42
+1120.61 -1715.95 3575.81
+-4345.5 -8104.91 17256.2
+190.227 -12590.2 19285.9
+6142.81 -14798.4 29626.4
+-45480.3 -51742.8 144755
+-93943.6 -108034 271110
+0 -73372.7 153087
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+289914 -141635 474059
+143162 -203802 806067
+-11728.3 -103806 449367
+-3014.84 -35095 118480
+10147.8 -25804.8 65427.3
+-2183.23 -16408.9 52325.3
+-1429.05 -5243.57 17023.8
+2109.75 -3530.63 7954.93
+-82.6642 -3002.06 8453.79
+-453.969 -831.939 2783.83
+540.703 -344.022 647.853
+158.472 -578.243 1455.99
+-109.186 -207.056 602.352
+137.948 -14.7142 -37.3364
+99.5279 -105.934 236.94
+-12.2305 -68.5642 173.719
+28.7094 -9.22433 -11.8475
+31.5086 -27.025 40.7283
+-13.7793 -29.2635 62.5831
+-30.1763 -16.947 27.0713
+-27.7367 -14.6327 17.6581
+-43.3159 -18.4233 26.0176
+-96.2122 -37.7793 76.8828
+-86.3318 -33.0682 44.9448
+-38.3924 -13.8821 -12.1064
+-186.841 -95.3831 238.312
+-217.815 -134.093 291.459
+94.0629 -20.7392 -43.554
+-301.843 -307.054 868.459
+-745.09 -776.072 1917.71
+614.324 -448.695 847.142
+-65.56 -1214.69 4034.72
+-2932.89 -4162.89 11609.7
+2180.39 -4755.73 10725.6
+2642.16 -7379.82 24355.7
+-14745.9 -23207.5 74120.7
+5159.48 -36052.6 91696.5
+16118.4 -49811.3 171632
+-211738 -150647 658568
+-425858 -296958 1.18446e+06
+0 -207101 700508
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+931528 -172400 1.53176e+06
+466180 -260029 2.54073e+06
+-23273.1 -137077 1.45708e+06
+-14965.2 -47456.1 431199
+26760.7 -36217.3 219560
+-4349.88 -24055.9 166196
+-4697.29 -7817.27 63724.5
+4833.95 -4762.93 28668.3
+143.948 -4146.69 25508.2
+-1250.88 -1280.31 10588.1
+961.804 -538.081 3362.31
+287.288 -800.322 3959.89
+-299.708 -286.981 1875.17
+209.3 -32.2581 267.154
+150.325 -157.475 616.291
+-58.8566 -98.679 409.319
+35.8889 -14.7716 13.9385
+48.5169 -39.5401 96.3671
+-24.1465 -41.6257 116.434
+-38.1084 -24.7934 43.7976
+-20.3814 -22.6314 31.3509
+-32.1937 -25.3905 41.649
+-121.42 -51.6636 145.371
+-96.7614 -47.5462 112.459
+14.6952 -21.7844 28.2634
+-261.306 -136.49 556.601
+-294.963 -197.258 775.101
+339.445 -41.3858 388.907
+-515.161 -420.102 2639.29
+-1255.41 -1067.62 5232.77
+1709.15 -705.481 4570.24
+-574.297 -1849.21 14991.4
+-6552.87 -5711.09 34852.2
+6979.81 -6398 39062.2
+4894.88 -10996.5 90348.7
+-38399.6 -33752.8 233700
+23528.1 -50022.1 307033
+30279.2 -66141.7 620129
+-682962 -194798 2.11559e+06
+-1.35599e+06 -370674 3.69894e+06
+0 -246262 2.24171e+06
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.13355e+06 -115442 3.55671e+06
+1.09796e+06 -179497 5.8921e+06
+-33705.6 -91339.8 3.48095e+06
+-45785.5 -30643.4 1.10454e+06
+55786.5 -28837 538273
+-5463.66 -19339.3 398380
+-11187.2 -4892.59 168724
+9238.94 -3290.88 75407
+1137.8 -3547.69 60810.5
+-2729.35 -1000.65 28210.3
+1511.96 -361.581 9730.33
+691.993 -687.145 8930.26
+-570.58 -224.882 4797.55
+265.542 -15.7146 1157.33
+261.905 -163.323 1308.26
+-106.899 -98.432 907.267
+34.0488 -12.7211 145.978
+75.9856 -43.909 194.779
+-30.4589 -47.6236 214.175
+-47.0568 -29.0128 88.8755
+-10.2784 -27.0833 63.1374
+-23.4965 -28.8952 90.8354
+-154.305 -56.7068 267.112
+-91.803 -50.7889 235.963
+66.438 -18.72 214.405
+-412.838 -136.618 1215.94
+-344.621 -205.34 1670.53
+669.027 -22.8154 1646.12
+-1098.99 -339.305 6631.26
+-1872.26 -911.509 11805.1
+3666.86 -464.846 13346
+-2249.95 -1472.82 39432.9
+-12258.1 -4877.27 82662.5
+16198.7 -4364.97 102957
+5041.73 -6964.66 236925
+-78763.6 -27127.7 555054
+69110.9 -39558.2 748046
+39829.8 -41854.7 1.57345e+06
+-1.59032e+06 -127042 4.99836e+06
+-3.07059e+06 -250401 8.48184e+06
+0 -161343 5.1443e+06
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.68886e+06 -57041.4 6.22017e+06
+1.94138e+06 -87299.7 1.03774e+07
+-42547.2 -41430.2 6.26756e+06
+-94246.3 -16693 2.06552e+06
+94922.8 -20046.4 989288
+-3177.5 -11593.4 731816
+-20524.5 -1689.76 328763
+14123.8 -2265.55 145970
+2877.5 -2718.13 111450
+-4660.37 -504.868 54777.4
+2113.13 -130.385 19727
+1381.31 -505.13 16216.7
+-889.484 -138.702 9330.09
+289.562 2.56409 2615.97
+448.762 -139.807 2261.47
+-138.018 -79.1593 1677.26
+21.7977 -11.2101 401.765
+117.196 -43.7145 327.068
+-32.0741 -45.3983 359.879
+-60.5267 -30.3452 169.294
+2.46987 -30.8903 110.748
+-24.386 -30.1451 182.152
+-202.41 -53.6551 445.019
+-71.0881 -49.8957 404.445
+95.6801 -14.7625 566.567
+-652.416 -109.54 2222.3
+-350.209 -175.738 2910.79
+1035.06 -2.90495 3687.93
+-2049.08 -223.415 12736.8
+-2523.42 -666.151 21416
+6140.39 -153.14 27077
+-4935.91 -807.503 75801.4
+-18380.5 -3767.14 150619
+28996.3 -2954.26 198848
+101.741 -2484.1 457211
+-131986 -16443.7 1.00961e+06
+138660 -27677.3 1.36309e+06
+45279 -22870.8 2.90978e+06
+-2.77832e+06 -57761.7 8.89267e+06
+-5.24743e+06 -122188 1.47623e+07
+0 -80416.8 8.88859e+06
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.15382e+06 -33557.6 8.73846e+06
+2.73476e+06 -52556.7 1.46691e+07
+-60575.6 -29116.6 8.95646e+06
+-142756 -15948.9 2.99753e+06
+136340 -14865 1.43735e+06
+334.328 -6724.56 1.07375e+06
+-30655 -1066.9 495832
+18740.6 -2358.83 218665
+4964.58 -2066.78 163860
+-6579.19 -106.013 83353
+2683.72 -48.2068 30718.7
+2161.16 -436.888 24045.6
+-1205.11 -113.94 14312.7
+300.037 15.9249 4234.44
+674.33 -94.4436 3269.14
+-151.992 -53.8789 2546.19
+4.91291 -11.2191 705.141
+166.659 -38.8404 462.429
+-29.0254 -37.4193 527.531
+-76.65 -29.0235 266.566
+16.1787 -32.2003 158.747
+-34.4071 -29.033 293.604
+-262.955 -44.8354 647.535
+-47.1654 -45.289 577.94
+103.524 -14.2782 978.818
+-936.113 -73.7478 3348.94
+-343.753 -118.009 4226.23
+1387.59 13.1523 5932.21
+-3097.77 -184.152 19368.8
+-3154.85 -571.269 31701.3
+8526.99 -44.8028 42065.5
+-7969.47 -272.229 114343
+-24029.6 -2904.71 220090
+42491.5 -3080.49 296607
+-6366.59 -1566.31 683638
+-187503 -9788.13 1.46817e+06
+206326 -20778.4 1.96344e+06
+64241.7 -22350.4 4.17818e+06
+-3.87288e+06 -42468.4 1.25714e+07
+-7.25935e+06 -77548.3 2.06514e+07
+0 -50305.9 1.23596e+07
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.20517e+06 -19052.7 1.05336e+07
+3.29e+06 -32064.1 1.77429e+07
+-84899.2 -19894.6 1.08736e+07
+-173607 -9503.53 3.66323e+06
+170669 -5936.4 1.77934e+06
+1109.41 -1773.78 1.34036e+06
+-39103.9 -431.651 623589
+23253.1 -1690.57 274831
+6970.5 -1029.34 206864
+-8240.48 208.785 107298
+3118.72 -35.9582 39767
+2841.37 -362.646 30474.9
+-1459.84 -93.8395 18524.6
+309.258 29.0712 5641.91
+873.44 -42.1381 4146.05
+-159.204 -29.4711 3302.27
+-2.54809 -8.01419 962.123
+220.9 -26.0138 576
+-21.6792 -24.2789 683.19
+-92.0072 -21.7943 355.203
+28.689 -26.0867 194.098
+-49.3579 -22.1542 394.843
+-330.885 -29.3649 834.549
+-39.2656 -30.9435 723.908
+100.91 -10.8529 1326.17
+-1188.91 -40.315 4325.35
+-345.677 -51.814 5371.32
+1672.2 32.7623 7857.4
+-3992.69 -143.664 24912.4
+-3649.72 -468.376 40108.2
+10552.7 -30.6118 54304.1
+-10776.7 182.144 146174
+-29599.3 -1483.52 276371
+53532.7 -2211.49 371135
+-8591.43 -707.209 853901
+-233045 -3009.64 1.81987e+06
+248205 -8586.8 2.41377e+06
+93297.3 -13414.1 5.06516e+06
+-4.62673e+06 -29584.4 1.51449e+07
+-8.68379e+06 -49205.1 2.48007e+07
+0 -30136.9 1.47978e+07
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.78291e+06 -5272.49 1.15111e+07
+3.59022e+06 -9198.65 1.94238e+07
+-98883.2 -5441.95 1.19234e+07
+-184767 -1571.61 4.04232e+06
+191369 -180.893 1.99219e+06
+-1008.61 450.697 1.50247e+06
+-44350.1 90.2481 697757
+26995 -513.468 308949
+8424.77 -212.484 235121
+-9457.48 159.375 122908
+3340.28 -18.0372 45295.8
+3293.54 -150.275 34434.8
+-1613.79 -37.592 21258.6
+318.632 16.4922 6615.1
+1000.76 -9.38776 4754.1
+-166.055 -9.35436 3799.9
+2.89836 -2.71076 1122.51
+269.925 -8.7464 654.582
+-11.7872 -8.17146 796.974
+-102.174 -8.12864 416.914
+36.7585 -10.3297 214.054
+-65.5317 -8.43293 465.027
+-392.178 -9.9051 971.219
+-48.4321 -10.4709 825.094
+98.319 -3.99067 1543.14
+-1355.25 -13.0002 4967.15
+-356.808 -11.516 6162.68
+1845.87 20.0463 9168.99
+-4574.02 -55.1969 28480.2
+-3899.32 -192.196 45272.1
+12023.1 -15.8947 61751.7
+-12788.2 178.467 166724
+-34314.8 -322.569 313053
+60285.6 -670.742 415892
+-6354 53.1584 951193
+-260138 333.145 2.03074e+06
+263005 -477.545 2.69074e+06
+109256 -2270.36 5.56397e+06
+-5.03302e+06 -8249.07 1.65409e+07
+-9.46452e+06 -14559.8 2.70556e+07
+0 -8743.89 1.61209e+07
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.96061e+06 5272.51 1.18104e+07
+3.68319e+06 9198.73 1.99419e+07
+-101467 5441.17 1.22509e+07
+-186400 1569.08 4.16742e+06
+197818 180.732 2.06639e+06
+-2461.59 -448.304 1.55662e+06
+-46075.2 -90.0492 721517
+28485.5 513.465 320378
+8949.63 212.485 245064
+-9919.58 -159.367 128298
+3395.94 18.0221 47076.5
+3449.3 150.235 35724.8
+-1663.25 37.5886 22196.1
+323.495 -16.5076 6967.12
+1043.41 9.36602 4973.14
+-169.748 9.33434 3970.72
+7.72216 2.71634 1175.44
+290.881 8.75313 683.584
+-6.44655 8.16538 839.639
+-105.151 8.14615 439.239
+39.0469 10.3462 220.309
+-73.5636 8.42605 490.403
+-418.309 9.86395 1022.59
+-55.2706 10.1231 862.438
+98.2909 3.59469 1614.75
+-1411.89 12.436 5186.76
+-364.062 10.5657 6447.31
+1902.21 -20.2921 9639.75
+-4770.19 54.9172 29699.1
+-3959.35 192.233 46954.2
+12578.6 15.949 64152.2
+-13516.2 -178.337 173793
+-36216.8 322.874 325925
+62480.5 670.171 430800
+-4580.62 -55.7791 982045
+-268457 -333.468 2.1006e+06
+265139 478.825 2.78682e+06
+111509 2269.6 5.72822e+06
+-5.15959e+06 8249.42 1.69763e+07
+-9.7058e+06 14558.9 2.77522e+07
+0 8743.12 1.65279e+07
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.78291e+06 19052.7 1.15111e+07
+3.59022e+06 32064.1 1.94238e+07
+-98885.2 19894.7 1.19234e+07
+-184767 9503.49 4.04232e+06
+191373 5936.75 1.99219e+06
+-1006.04 1774.07 1.50247e+06
+-44349.4 431.63 697759
+26995 1690.6 308949
+8424.77 1029.36 235121
+-9457.49 -208.776 122908
+3340.3 35.9694 45295.8
+3293.54 362.636 34434.8
+-1613.8 93.8446 21258.6
+318.639 -29.0628 6615.06
+1000.73 42.1512 4754.06
+-166.097 29.4702 3799.9
+2.87424 8.00052 1122.51
+269.914 26.0132 654.573
+-11.7955 24.2591 796.958
+-102.13 21.7695 416.868
+36.7947 26.0495 213.985
+-65.4699 22.152 464.996
+-392.52 29.3575 971.249
+-49.1696 30.7796 825.223
+98.164 10.508 1542.48
+-1354.09 39.703 4965.77
+-356.102 50.9848 6163.02
+1846.35 -33.3316 9169.56
+-4573.76 143.314 28480.5
+-3899.25 468.093 45272
+12023.2 30.6615 61751.6
+-12788 -181.953 166724
+-34314.7 1483.6 313053
+60286.4 2210.79 415891
+-6351.84 708.735 951190
+-260137 3013.2 2.03074e+06
+263003 8590.91 2.69074e+06
+109258 13416.2 5.56397e+06
+-5.03302e+06 29585 1.65409e+07
+-9.46452e+06 49205 2.70556e+07
+0 30136.6 1.61209e+07
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+6.20517e+06 33557.6 1.05336e+07
+3.29e+06 52556.7 1.77429e+07
+-84903.3 29117.2 1.08736e+07
+-173609 15950 3.66323e+06
+170672 14865.5 1.77933e+06
+1111.95 6724.31 1.34036e+06
+-39103.4 1067.21 623590
+23253 2358.81 274831
+6970.51 2066.79 206864
+-8240.49 106.012 107298
+3118.72 48.19 39767
+2841.38 436.89 30474.9
+-1459.85 113.957 18524.6
+309.271 -15.9219 5641.92
+873.435 94.4587 4146.07
+-159.243 53.8951 3302.28
+-2.53637 11.2613 962.154
+220.879 38.8677 576.003
+-21.6739 37.4257 683.194
+-91.9577 29.0253 355.128
+28.7561 32.2289 194.02
+-49.2906 29.0288 394.787
+-331.208 44.8169 834.554
+-40.2542 45.5607 724.052
+100.543 14.0508 1325.28
+-1187.47 73.1753 4323.46
+-344.842 117.433 5371.68
+1672.12 -13.5427 7858.13
+-3992.75 183.472 24912.1
+-3649.4 570.753 40108.1
+10553.1 44.8547 54303.9
+-10776 273.167 146174
+-29600.2 2906.43 276371
+53534.8 3084.49 371135
+-8588.34 1570.78 853897
+-233042 9791.23 1.81987e+06
+248205 20781.6 2.41378e+06
+93297.6 22352.8 5.06516e+06
+-4.62673e+06 42470.5 1.51449e+07
+-8.68379e+06 77549.5 2.48007e+07
+0 50306.2 1.47978e+07
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.15382e+06 57041.4 8.73846e+06
+2.73476e+06 87299.7 1.46691e+07
+-60579.1 41430.5 8.95646e+06
+-142758 16693.2 2.99753e+06
+136341 20046.5 1.43734e+06
+335.126 11593.9 1.07375e+06
+-30655 1689.75 495832
+18740.6 2265.45 218665
+4964.61 2718.04 163860
+-6579.17 504.875 83353
+2683.73 130.413 30718.7
+2161.17 505.162 24045.6
+-1205.12 138.714 14312.8
+300.031 -2.57774 4234.47
+674.329 139.793 3269.16
+-151.992 79.1575 2546.21
+4.92924 11.2321 705.159
+166.631 43.7462 462.472
+-29.0414 45.427 527.522
+-76.6089 30.3754 266.55
+16.1962 30.8892 158.697
+-34.3697 30.1333 293.593
+-262.992 53.6292 647.502
+-47.8088 49.8822 577.873
+103.127 14.7839 978.299
+-935 109.006 3347.02
+-342.851 175.923 4226.18
+1387.72 3.14064 5932.24
+-3097.34 223.134 19368.9
+-3154.69 665.939 31701.2
+8528.84 153.904 42065.3
+-7968.37 808.937 114344
+-24031.6 3768.99 220093
+42489 2957.55 296608
+-6363.99 2487.61 683635
+-187499 16442.3 1.46817e+06
+206326 27675.6 1.96345e+06
+64240.4 22871.2 4.17819e+06
+-3.87288e+06 57761.6 1.25714e+07
+-7.25935e+06 122187 2.06514e+07
+0 80417 1.23596e+07
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+3.68886e+06 115442 6.22017e+06
+1.94138e+06 179497 1.03774e+07
+-42548.1 91340.3 6.26756e+06
+-94245.9 30643.3 2.06552e+06
+94924.1 28836.7 989288
+-3176.55 19339.5 731816
+-20524.4 4892.35 328763
+14123.8 3290.74 145970
+2877.5 3547.66 111450
+-4660.38 1000.67 54777.4
+2113.12 361.576 19726.9
+1381.32 687.202 16216.7
+-889.443 224.951 9330.11
+289.535 15.7295 2615.97
+448.726 163.351 2261.43
+-137.984 98.3791 1677.32
+21.8231 12.6938 401.785
+117.182 43.8975 327.045
+-32.0649 47.6354 359.933
+-60.5409 29.0101 169.32
+2.48825 27.0998 110.731
+-24.3823 28.9109 182.12
+-202.532 56.8 445.045
+-71.5164 50.9244 404.441
+95.1414 18.7221 566.508
+-652.077 136.638 2220.83
+-348.958 206.656 2908.67
+1036.39 24.9593 3685.38
+-2048.75 340.93 12735.9
+-2524.23 912.304 21414.8
+6140.84 464.92 27077
+-4935.96 1472.81 75803.4
+-18383.9 4876.56 150625
+28990.8 4364.95 198853
+99.7488 6966.16 457210
+-131982 27129.1 1.00961e+06
+138661 39556.6 1.36309e+06
+45278.9 41853.5 2.90978e+06
+-2.77833e+06 127039 8.89267e+06
+-5.24743e+06 250399 1.47623e+07
+0 161343 8.88859e+06
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.13355e+06 172400 3.55671e+06
+1.09796e+06 260029 5.8921e+06
+-33704.6 137077 3.48095e+06
+-45784.3 47456.3 1.10454e+06
+55786.7 36216.8 538275
+-5463.81 24055.9 398381
+-11187.8 7817.88 168724
+9238.9 4763.06 75406.8
+1137.74 4146.8 60810.4
+-2729.4 1280.38 28210.3
+1511.97 538.097 9730.36
+692.019 800.32 8930.27
+-570.507 286.991 4797.51
+265.587 32.2742 1157.35
+261.755 157.461 1308.17
+-106.845 98.6357 907.311
+34.0654 14.7054 145.968
+75.9859 39.5175 194.751
+-30.4701 41.6182 214.216
+-47.0616 24.8331 88.9178
+-10.2671 22.6579 63.1151
+-23.4467 25.4201 90.7501
+-154.336 51.9005 266.99
+-91.7841 47.7074 235.787
+66.1419 22.0316 214.384
+-412.849 136.973 1215.16
+-342.921 199.814 1667.57
+671.294 45.3145 1643.7
+-1098.16 423.115 6631.24
+-1872.11 1069.19 11804.2
+3666.3 705.94 13345.6
+-2250.25 1848.64 39433.2
+-12259.7 5709.35 82664.8
+16193.7 6396.98 102961
+5036.42 10998.5 236925
+-78766 33756.6 555049
+69106.2 50025.8 748044
+39832.3 66147.2 1.57345e+06
+-1.59032e+06 194799 4.99836e+06
+-3.07059e+06 370675 8.48184e+06
+0 246263 5.1443e+06
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+931528 141635 1.53176e+06
+466180 203802 2.54073e+06
+-23271.4 103806 1.45708e+06
+-14965 35094.8 431200
+26758.5 25803.9 219563
+-4351.04 16408.8 166196
+-4698.05 5244.9 63723.4
+4833.98 3531.23 28668.4
+143.996 3002.14 25508.2
+-1250.82 831.912 10588.1
+961.826 344.024 3362.36
+287.334 578.232 3959.92
+-299.546 207.017 1875.1
+209.333 14.5463 267.505
+150.157 105.837 616.591
+-58.8892 68.4696 409.26
+35.9041 9.19376 13.8786
+48.5153 27.0448 96.3388
+-24.1365 29.2495 116.409
+-38.0949 16.9972 43.7851
+-20.3858 14.7669 31.2591
+-32.0892 18.5074 41.4879
+-121.557 37.8508 145.054
+-96.8634 33.4354 112.189
+14.6768 13.934 28.1188
+-262.815 95.4087 556.487
+-294.17 134.694 774.777
+341.877 21.3549 390.614
+-513.582 307.135 2643.02
+-1253.05 776.102 5233.58
+1709.03 448.366 4569.62
+-573.429 1214.7 14991.5
+-6550.51 4161.49 34850.5
+6981.23 4755.32 39062.6
+4893.97 7382.51 90350.4
+-38401.6 23212.8 233700
+23525 36057.9 307032
+30279.9 49814.7 620127
+-682957 150649 2.11559e+06
+-1.35599e+06 296957 3.69894e+06
+0 207101 2.24172e+06
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+289914 49551.5 474059
+143163 73202.6 806067
+-11726.3 35178.4 449365
+-3015.17 10351.6 118482
+10144.7 8947.78 65429.9
+-2183.14 5655.58 52323
+-1427.27 1201.27 17023.1
+2110.12 1071.55 7956.49
+-82.5335 1192.97 8453.92
+-453.946 244.34 2783.83
+540.714 49.6163 647.839
+158.553 234.12 1456.01
+-109.011 87.0789 602.273
+137.942 -9.49806 -36.8216
+99.2429 41.1661 237.534
+-12.5329 31.7939 173.84
+28.5337 2.27649 -11.9916
+31.4753 11.9849 40.7245
+-13.7903 16.4727 62.5632
+-30.057 10.0641 26.9665
+-27.6421 7.7322 17.4213
+-43.4579 11.0011 25.6678
+-96.0186 20.805 76.7131
+-86.4043 14.6266 44.7185
+-38.2272 4.55162 -12.0926
+-188.655 45.6079 238.278
+-217.435 53.589 291.662
+95.9361 -9.35837 -41.588
+-300.784 133.148 871.63
+-744.457 313.811 1917.62
+614.343 58.8644 847.091
+-65.6659 375.836 4034.59
+-2929.96 1664.88 11609.4
+2185.88 1421.11 10724.6
+2646.93 1716.69 24358.5
+-14744.8 8107.28 74127.6
+5157.27 12592.6 91702.9
+16119.3 14797.1 171634
+-211733 51735.2 658573
+-425854 108026 1.18447e+06
+0 73368.9 700515
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+63535.4 9652.43 102802
+30503 14509 183125
+-4324.14 6158.18 97961.5
+23.3058 1581.51 20331.7
+2946.39 2278.79 13780.9
+-883.613 1441.53 12073.2
+-249.439 85.6212 2443.96
+874.944 161.675 1350.37
+21.7655 324.674 2338.11
+-103.444 56.1385 508.888
+268.175 -12.0094 -63.2235
+121.223 61.759 438.891
+-1.1352 26.9787 190.45
+82.069 -6.67825 -53.5498
+66.5353 10.2579 73.7014
+12.3198 11.0599 73.7913
+17.4929 0.921785 -1.04438
+16.1905 2.97001 17.0606
+-6.20046 5.95189 32.8848
+-20.668 5.42023 19.4019
+-28.2158 4.53959 12.7516
+-42.8099 5.4207 20.0992
+-67.6441 6.7502 39.277
+-66.0876 3.74733 17.9451
+-61.6285 2.64795 -0.347815
+-134.002 17.368 100.277
+-146.121 15.2153 88.0254
+-41.2467 -6.01064 -67.8417
+-219.43 41.6003 281.433
+-391.408 81.7453 574.523
+119.687 -18.5692 -104.178
+-117.116 91.6913 785.136
+-1252.47 454.476 3228.54
+405.015 204.486 1742.76
+1125.29 136.884 3576.82
+-4344.24 2098.96 17262.9
+186.84 3220.25 19293.8
+6140.04 2214.81 29628.4
+-45478.9 9091.73 144754
+-93942.3 21529.5 271113
+0 14369.8 153090
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+10104.7 994.829 15717.5
+4515.86 1293.6 29865.5
+-1098.81 326.613 14890.8
+381.987 106.19 1854.05
+829.32 384.068 2606.07
+-200.321 234.183 2497.64
+18.6164 4.23629 39.6845
+337.852 17.1348 48.1843
+81.9585 48.3973 581.48
+14.1769 10.339 112.436
+115.171 -1.60755 -73.8224
+76.1208 8.33535 108.223
+26.9874 3.58752 67.4617
+40.8343 -1.01153 -15.0336
+34.7404 1.95674 18.9476
+13.9384 2.49736 27.8856
+8.89976 0.539653 5.56892
+4.84601 0.0463088 8.54615
+-5.08284 0.38906 15.5491
+-12.5571 1.47743 11.7374
+-17.6912 1.84421 8.76406
+-26.035 1.20113 12.6693
+-37.4023 0.221496 18.0567
+-41.1469 0.160119 9.24058
+-47.1631 1.40147 7.2045
+-73.6426 4.38414 37.3644
+-78.3882 3.7674 22.5294
+-61.9823 -0.48806 -17.2573
+-132.114 5.47108 99.7087
+-178.071 10.4338 140.718
+-40.824 -2.68274 -103.544
+-154.163 16.7787 184.452
+-497.057 68.1735 804.493
+-25.7543 20.6362 25.1669
+237.397 8.8812 103.866
+-1248.25 342.414 3623.16
+-518.375 541.948 3643.32
+1599.69 128.538 2665.28
+-6761.29 467.045 22098.9
+-14988.5 1907.42 44400.9
+0 1471.94 23517.7
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1194.46 0 1633.32
+439.22 0 3230.15
+-190.515 0 1337.44
+198.156 0 -48.3012
+244.05 0 472.136
+-5.32026 0 493.399
+21.8895 0 -11.8522
+90.3283 0 -23.2564
+36.0283 0 107.58
+13.9702 0 29.2562
+33.2632 0 -16.3164
+25.0628 0 19.7017
+11.0666 0 17.2002
+11.2925 0 -1.30569
+10.0764 0 3.0858
+5.46247 0 6.25394
+3.38227 0 2.57902
+0.866086 0 2.93768
+-2.52256 0 4.79619
+-4.48929 0 3.95699
+-5.19753 0 3.20829
+-7.57561 0 4.10897
+-11.9668 0 5.11171
+-14.6113 0 3.26115
+-16.7335 0 3.11109
+-21.8984 0 8.41659
+-22.5811 0 3.60096
+-22.4945 0 -0.591937
+-42.5632 0 25.3194
+-52.9612 0 25.6283
+-27.5961 0 -22.1571
+-62.2459 0 46.5988
+-134.739 0 148.448
+-34.8746 0 -39.7471
+-8.8719 0 -3.37334
+-371.112 0 720.896
+-287.149 0 657.518
+284.261 0 -100.19
+-651.715 0 1967.41
+-1766.57 0 4787.4
+0 0 2437.8
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1444.28 -1603.02 0
+2828.23 -4990.84 0
+1024.04 -4873.21 0
+-362.444 -1368.2 0
+425.755 230.103 0
+748.514 -398.226 0
+222.672 -508.495 0
+115.967 -32.8966 0
+257.454 18.3101 0
+174.922 -99.0731 0
+88.9462 -40.6922 0
+105.839 9.1366 0
+90.27 -13.1475 0
+49.9332 -13.1922 0
+38.2256 -0.565933 0
+30.9454 -5.04269 0
+13.3759 -6.81755 0
+-2.1935 -1.36827 0
+-13.7438 -2.32639 0
+-20.8581 -9.14001 0
+-26.1467 -11.6983 0
+-35.1555 -8.48358 0
+-48.5049 -1.56793 0
+-66.7899 -2.66875 0
+-86.4605 -11.3719 0
+-92.2074 -9.94396 0
+-106.254 -5.67204 0
+-158.607 -22.4507 0
+-177.754 -17.4319 0
+-162.074 12.4164 0
+-288.781 -62.4988 0
+-395.637 -139.104 0
+-200.171 27.2145 0
+-378.72 -64.0523 0
+-1125.09 -731.775 0
+-629.036 -544.05 0
+481.801 334.459 0
+-1578.66 -2092.7 0
+-4210.54 -7290.83 0
+-2150.3 -7472.43 0
+0 -2411.23 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+12809.3 -13931.8 0
+23460.3 -38684.8 0
+8990.53 -34505.9 0
+-2793.37 -10746.4 0
+714.206 -1520.13 0
+2695.02 -3965.19 0
+249.929 -2865.96 0
+125.476 -187.555 0
+983.032 -266.918 0
+522.323 -637.996 0
+177.154 -144.391 0
+359.572 9.81643 0
+306.35 -125.418 0
+146.521 -67.9485 0
+133.614 0.320496 0
+110.409 -28.1598 0
+40.9519 -29.7741 0
+4.45918 -12.7585 0
+-19.5823 -21.5902 0
+-54.7845 -30.0859 0
+-94.5857 -28.2423 0
+-133.209 -31.9173 0
+-157.792 -22.7107 0
+-202.004 -17.7987 0
+-285.849 -45.8452 0
+-307.114 -43.5652 0
+-328.498 -11.4193 0
+-544.79 -108.242 0
+-597.543 -172.568 0
+-364.478 11.584 0
+-874.688 -232.24 0
+-1469.35 -892.199 0
+-263.808 -337.559 0
+-569.241 -323.782 0
+-4006.8 -4142.9 0
+-976.369 -5546.38 0
+3907.78 -2067.9 0
+-13541 -15863.1 0
+-34745 -50878.5 0
+-19033 -57243.4 0
+0 -20743.6 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+68654.1 -55562.9 0
+113354 -144322 0
+43040.7 -124623 0
+-9790.22 -42854.3 0
+162.791 -9840.74 0
+6377.98 -13036.2 0
+-819.494 -8112.33 0
+-290.062 -1062.51 0
+2135.81 -1470.84 0
+611.853 -1889.92 0
+26.4742 -348.874 0
+719.433 -89.0609 0
+497.413 -410.282 0
+156.051 -172.203 0
+248.218 -11.1277 0
+207.659 -92.9243 0
+63.7214 -78.0652 0
+32.1014 -36.4727 0
+-5.03411 -57.5353 0
+-82.3918 -55.7163 0
+-158.883 -39.6341 0
+-242.036 -66.3962 0
+-269.795 -68.279 0
+-307.538 -48.6202 0
+-491.769 -110.323 0
+-529.397 -122.224 0
+-426.674 -25.4418 0
+-904.449 -264.478 0
+-1143.63 -564.379 0
+-217.1 -119.004 0
+-1129.22 -562.837 0
+-3107.27 -2644.48 0
+366.626 -1937.99 0
+741.487 -1587.83 0
+-9362.99 -11663.7 0
+69.7144 -18235.5 0
+13605.1 -13731.4 0
+-64298.1 -62452.5 0
+-167062 -182149 0
+-101512 -211843 0
+0 -82102.7 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+267596 -128191 0
+403871 -320144 0
+145297 -271630 0
+-30847.1 -96685.6 0
+-2057.57 -24104.3 0
+16648.8 -26546.6 0
+-2729.15 -16360.7 0
+-1623.64 -3325.24 0
+4052.84 -3610.33 0
+440.539 -3647.46 0
+-441.788 -708.218 0
+1197.55 -349.207 0
+582.953 -821.306 0
+7.21336 -302.915 0
+359.585 -51.5698 0
+285.236 -206.97 0
+49.9676 -151.978 0
+59.9404 -63.5194 0
+-1.33671 -95.0912 0
+-110.609 -91.6613 0
+-171.281 -65.1507 0
+-299.889 -108.997 0
+-344.684 -115.374 0
+-330.053 -84.9017 0
+-636.565 -209.037 0
+-695.366 -262.828 0
+-262.487 -72.7729 0
+-1088.4 -453.476 0
+-1790.3 -1116.73 0
+409.366 -453.597 0
+-1061.44 -1113.66 0
+-5733.19 -5099.86 0
+2386.46 -4814.99 0
+2954.59 -4770.35 0
+-24129.5 -23297.2 0
+3956.6 -36891.4 0
+42722.4 -33617.3 0
+-215331 -139620 0
+-591023 -393159 0
+-392743 -464987 0
+0 -187317 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+778907 -172709 0
+1.12008e+06 -442214 0
+398075 -384183 0
+-76300.2 -140735 0
+-10463.1 -36228.3 0
+39204 -39573.7 0
+-5558.81 -25429.9 0
+-5023.08 -5877.61 0
+7855.23 -5198.54 0
+727.143 -5071.94 0
+-1337.2 -1104.34 0
+1837.72 -605.271 0
+738.03 -1170.55 0
+-234.018 -419.206 0
+488.682 -106.91 0
+359.657 -326.162 0
+-14.3488 -224.762 0
+72.7023 -91.3224 0
+6.87555 -138.469 0
+-128.329 -134.623 0
+-150.912 -98.1298 0
+-325.051 -151.992 0
+-372.808 -159.012 0
+-272.456 -117.052 0
+-760.524 -306.979 0
+-850.953 -416.868 0
+46.1857 -146.519 0
+-1347.02 -620.782 0
+-2580.55 -1574.41 0
+1630.35 -781.746 0
+-1724.43 -1698.75 0
+-10818.2 -7060.37 0
+7355.71 -6939.15 0
+5819.73 -8381.6 0
+-56197.6 -35883.3 0
+17442.9 -54505.8 0
+104741 -50027 0
+-584555 -200591 0
+-1.62523e+06 -548204 0
+-1.13297e+06 -632259 0
+0 -248003 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.72905e+06 -134003 0
+2.4503e+06 -365660 0
+884499 -330962 0
+-151899 -120921 0
+-33790.1 -30580.6 0
+77244.2 -38958.9 0
+-9037.01 -25653.2 0
+-11628.5 -4868.78 0
+14469.9 -4241.84 0
+2066.84 -4858.45 0
+-2908.59 -1059.47 0
+2787.59 -536.544 0
+1293.6 -1161.37 0
+-512.667 -419.359 0
+645.163 -136.133 0
+519.679 -378.529 0
+-73.2445 -257.545 0
+88.0848 -114.075 0
+39.2759 -175.049 0
+-133.953 -164.556 0
+-136.789 -120.786 0
+-362.49 -180.906 0
+-382.276 -191.877 0
+-209.701 -135.234 0
+-984.666 -343.037 0
+-1034.53 -484.146 0
+371.081 -193.071 0
+-2149.22 -633.998 0
+-3706.1 -1555.95 0
+3705.33 -689.92 0
+-3989.22 -1642.93 0
+-19515.1 -6733.52 0
+16764.6 -5609.44 0
+8797.01 -7065.96 0
+-109298 -36106.3 0
+52747.6 -53370.3 0
+205232 -41640.7 0
+-1.2864e+06 -169609 0
+-3.5209e+06 -464275 0
+-2.4888e+06 -513401 0
+0 -188723 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.99174e+06 -62716.1 0
+4.25691e+06 -181607 0
+1.57361e+06 -164493 0
+-250504 -52692.6 0
+-75199.2 -14045.3 0
+130458 -26531.9 0
+-9893.63 -15650.6 0
+-21718.4 -1052.46 0
+22683.5 -2660.79 0
+4438.06 -3681.18 0
+-5129.61 -559.929 0
+4052.54 -272.599 0
+2416.54 -915.288 0
+-784.938 -320.434 0
+805.166 -116.215 0
+820.041 -336.693 0
+-76.3992 -235.753 0
+107.822 -121.213 0
+87.9705 -182.63 0
+-132.05 -174.088 0
+-146.034 -134.812 0
+-429.611 -189.425 0
+-396.228 -200.239 0
+-208.868 -138.407 0
+-1365.95 -304.605 0
+-1210.28 -426.006 0
+650.359 -167.923 0
+-3705.67 -501.957 0
+-5209.28 -1224.41 0
+6519.13 -341.869 0
+-7710.92 -943.434 0
+-30054.9 -5091.75 0
+30671.3 -3413.61 0
+7521.47 -1757.58 0
+-182009 -22344.9 0
+113039 -36585.7 0
+332799 -18962 0
+-2.26422e+06 -73271.7 0
+-6.05215e+06 -228719 0
+-4.25885e+06 -253206 0
+0 -88084.2 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.20543e+06 -28159.8 0
+6.02752e+06 -78005.5 0
+2.26203e+06 -64583.4 0
+-352676 -17222.7 0
+-120352 -9606.81 0
+188891 -16804.3 0
+-7575.15 -6495.07 0
+-33225.4 683.798 0
+30485 -2731.49 0
+7339.21 -2909.84 0
+-7406.4 -127.175 0
+5390.18 -135.814 0
+3819.81 -745.703 0
+-1008.59 -253.562 0
+971.361 -67.3628 0
+1224.14 -231.1 0
+-30.1828 -170.778 0
+124.193 -109.863 0
+156.456 -165.382 0
+-114.934 -164.177 0
+-183.377 -134.549 0
+-531.472 -177.525 0
+-422.398 -185.891 0
+-280.227 -128.458 0
+-1871.99 -220.867 0
+-1392.95 -289.504 0
+859.072 -96.5364 0
+-5608.32 -388.562 0
+-6839.16 -984.67 0
+9278.45 -165.112 0
+-12015 -352.728 0
+-39821 -4045.83 0
+45991 -3475.03 0
+1851.75 763.808 0
+-260491 -9796.49 0
+176696 -23544.4 0
+462864 -13235.9 0
+-3.22133e+06 -25526.4 0
+-8.48585e+06 -94393.4 0
+-5.92829e+06 -114815 0
+0 -42463.8 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.07511e+06 -19661.4 0
+7.29788e+06 -54414.9 0
+2.74075e+06 -50331.4 0
+-440248 -22218 0
+-148656 -11911.2 0
+238000 -9580.07 0
+-6782.12 -1863.55 0
+-42946.9 486.437 0
+37548.9 -2456.73 0
+10302.3 -1938.29 0
+-9237.46 114.773 0
+6437.58 -67.3629 0
+5000.51 -543.993 0
+-1193.35 -183.738 0
+1141.89 -20.2257 0
+1632.55 -120.371 0
+52.1264 -91.4728 0
+162.916 -77.2359 0
+248.424 -121.251 0
+-84.6988 -123.817 0
+-236.275 -106.976 0
+-660.597 -134.904 0
+-485.309 -138.567 0
+-410.271 -92.8801 0
+-2402.49 -123.835 0
+-1607.41 -151.308 0
+1026.83 -28.4848 0
+-7184.72 -261.26 0
+-8144.04 -700.336 0
+11414.3 -87.3541 0
+-16217.7 -21.2601 0
+-48657.8 -2755.29 0
+58531.9 -3177.59 0
+-1164.9 559.898 0
+-325554 -3266.83 0
+215533 -13483.7 0
+573892 -16270.6 0
+-3.87441e+06 -32851.6 0
+-1.02033e+07 -76577.8 0
+-7.10697e+06 -84184.3 0
+0 -31274.8 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.54759e+06 -7871.87 0
+7.97852e+06 -23709 0
+2.97827e+06 -25195.9 0
+-497798 -13550.4 0
+-156278 -5741.51 0
+269593 -2671.55 0
+-9032.89 -88.3459 0
+-49077.9 196.793 0
+43482.7 -890.96 0
+12850.6 -608.981 0
+-10509.3 105.189 0
+6912.19 -10.5483 0
+5680.7 -197.041 0
+-1309.32 -64.776 0
+1289.75 -0.28599 0
+1925.7 -35.6928 0
+137.526 -26.3088 0
+228.663 -27.3467 0
+343.821 -45.0661 0
+-50.9547 -46.917 0
+-286.577 -42.5945 0
+-789.021 -51.8818 0
+-578.978 -51.8407 0
+-540.593 -33.0829 0
+-2799.72 -37.6537 0
+-1817.16 -45.3165 0
+1119.55 -0.297705 0
+-8081.3 -86.6484 0
+-8723.16 -247.945 0
+12892.1 -16.9411 0
+-19744.8 60.0837 0
+-56232.6 -894.601 0
+66225.2 -1167.37 0
+750.432 218.175 0
+-366836 -401.913 0
+225886 -3757.42 0
+646439 -7741.98 0
+-4.19614e+06 -19521.1 0
+-1.11176e+07 -37809.4 0
+-7.74485e+06 -36584.3 0
+0 -12568.3 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.69245e+06 7871.81 0
+8.18496e+06 23709 0
+3.0459e+06 25196 0
+-517125 13550.5 0
+-156029 5741.51 0
+280564 2671.36 0
+-10577.7 88.2414 0
+-51151.4 -196.795 0
+45983.2 890.985 0
+13942.2 608.987 0
+-10995.1 -105.2 0
+6990.46 10.5185 0
+5884.59 197.036 0
+-1341.33 64.7181 0
+1352.65 0.242935 0
+2028.25 35.6478 0
+173.618 26.2573 0
+264.483 27.3556 0
+388.618 45.0895 0
+-33.9192 46.9482 0
+-309.422 42.6369 0
+-848.464 51.906 0
+-628.019 51.8202 0
+-594.122 33.1058 0
+-2942.66 37.8844 0
+-1911.15 45.5316 0
+1136.34 0.289763 0
+-8348.06 86.7548 0
+-8806.45 247.9 0
+13463.4 17.0233 0
+-21245.3 -59.9278 0
+-59470.9 894.704 0
+68779.4 1167.47 0
+2478.85 -218.056 0
+-381017 402.429 0
+225638 3757.31 0
+670538 7742.43 0
+-4.28841e+06 19521.6 0
+-1.13958e+07 37809.7 0
+-7.94133e+06 36583.8 0
+0 12567.5 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.54759e+06 19661.4 0
+7.97852e+06 54414.9 0
+2.97827e+06 50331.2 0
+-497797 22217.9 0
+-156278 11911.2 0
+269593 9580.06 0
+-9032.93 1863.56 0
+-49078 -486.418 0
+43482.6 2456.75 0
+12850.6 1938.3 0
+-10509.3 -114.762 0
+6912.18 67.3617 0
+5680.66 544.009 0
+-1309.29 183.76 0
+1289.73 20.2213 0
+1925.64 120.337 0
+137.487 91.4492 0
+228.67 77.2341 0
+343.87 121.244 0
+-50.8872 123.778 0
+-286.495 106.963 0
+-788.97 134.92 0
+-578.977 138.671 0
+-540.587 92.903 0
+-2799.8 123.892 0
+-1817.25 151.325 0
+1119.4 28.5161 0
+-8081.32 261.178 0
+-8722.96 700.238 0
+12892.4 87.4806 0
+-19744.6 21.5397 0
+-56232.5 2755.47 0
+66225.5 3177.36 0
+750.871 -559.754 0
+-366835 3267.39 0
+225886 13484.6 0
+646438 16270.9 0
+-4.19614e+06 32851.4 0
+-1.11176e+07 76578.1 0
+-7.74485e+06 84185 0
+0 31274.5 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+5.07511e+06 28159.8 0
+7.29788e+06 78005.4 0
+2.74075e+06 64583.3 0
+-440248 17222.5 0
+-148656 9606.67 0
+238000 16804.4 0
+-6782.18 6495.08 0
+-42946.9 -683.775 0
+37548.9 2731.5 0
+10302.3 2909.84 0
+-9237.48 127.201 0
+6437.53 135.861 0
+5000.5 745.754 0
+-1193.34 253.563 0
+1141.9 67.3898 0
+1632.54 231.131 0
+52.1171 170.789 0
+162.912 109.848 0
+248.419 165.346 0
+-84.5965 164.153 0
+-236.163 134.54 0
+-660.469 177.528 0
+-485.219 185.844 0
+-410.155 128.485 0
+-2402.5 220.945 0
+-1607.42 289.529 0
+1026.76 96.7631 0
+-7184.73 388.379 0
+-8143.8 984.506 0
+11414.7 165.26 0
+-16217 353.103 0
+-48657.5 4046.44 0
+58532 3474.72 0
+-1165.03 -763.694 0
+-325553 9796.27 0
+215533 23544.7 0
+573892 13236.5 0
+-3.87441e+06 25526.9 0
+-1.02033e+07 94393.9 0
+-7.10697e+06 114815 0
+0 42463.4 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+4.20543e+06 62716.1 0
+6.02752e+06 181607 0
+2.26203e+06 164493 0
+-352677 52692.8 0
+-120352 14045.2 0
+188891 26531.9 0
+-7575.15 15650.6 0
+-33225.3 1052.45 0
+30485 2660.81 0
+7339.17 3681.22 0
+-7406.44 560.005 0
+5390.18 272.668 0
+3819.83 915.361 0
+-1008.59 320.415 0
+971.361 116.169 0
+1224.13 336.698 0
+-30.1486 235.743 0
+124.171 121.173 0
+156.499 182.654 0
+-114.856 174.087 0
+-183.28 134.783 0
+-531.427 189.411 0
+-422.433 200.298 0
+-280.287 138.477 0
+-1872.09 304.733 0
+-1392.72 426.368 0
+859.279 168.267 0
+-5608.27 502.336 0
+-6838.91 1224.47 0
+9278.73 341.92 0
+-12014.3 943.507 0
+-39820.8 5092.28 0
+45991.4 3413.8 0
+1852 1757.19 0
+-260491 22344.4 0
+176697 36585.4 0
+462865 18961.8 0
+-3.22133e+06 73272.3 0
+-8.48585e+06 228718 0
+-5.92829e+06 253206 0
+0 88084.9 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+2.99174e+06 134003 0
+4.25691e+06 365660 0
+1.57361e+06 330962 0
+-250504 120922 0
+-75199.2 30580.5 0
+130458 38958.8 0
+-9893.59 25653.1 0
+-21718.3 4868.72 0
+22683.6 4241.84 0
+4438.04 4858.48 0
+-5129.6 1059.47 0
+4052.61 536.589 0
+2416.61 1161.47 0
+-784.96 419.466 0
+805.166 136.147 0
+820.037 378.484 0
+-76.3957 257.499 0
+107.87 114.095 0
+88.0188 175.087 0
+-132.014 164.593 0
+-145.991 120.843 0
+-429.573 181.023 0
+-396.315 192.055 0
+-209.081 135.451 0
+-1366.21 343.343 0
+-1210.08 484.31 0
+650.679 193.211 0
+-3705.22 634.238 0
+-5208.75 1556.19 0
+6519.34 689.942 0
+-7710.85 1642.66 0
+-30054.9 6733.73 0
+30671.7 5609.63 0
+7522.16 7065.3 0
+-182009 36106.6 0
+113039 53370.2 0
+332799 41640.7 0
+-2.26422e+06 169609 0
+-6.05215e+06 464274 0
+-4.25885e+06 513400 0
+0 188724 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1.72905e+06 172709 0
+2.4503e+06 442214 0
+884499 384182 0
+-151898 140735 0
+-33790.1 36228.3 0
+77244.2 39573.6 0
+-9036.9 25430 0
+-11628.6 5877.41 0
+14469.9 5198.53 0
+2066.79 5071.93 0
+-2908.56 1104.34 0
+2787.66 605.255 0
+1293.8 1170.55 0
+-512.578 419.303 0
+645.103 106.933 0
+519.707 326.063 0
+-73.232 224.714 0
+88.1087 91.3017 0
+39.2956 138.495 0
+-133.953 134.708 0
+-136.76 98.1877 0
+-362.425 152.13 0
+-382.319 159.297 0
+-209.766 117.344 0
+-984.561 307.188 0
+-1034.34 416.912 0
+371.404 146.962 0
+-2148.51 621.149 0
+-3705.29 1574.6 0
+3705.47 782.11 0
+-3989.66 1698.92 0
+-19514.9 7060.4 0
+16765 6939.34 0
+8797.07 8381.5 0
+-109298 35884 0
+52747.6 54506.4 0
+205231 50027.4 0
+-1.2864e+06 200591 0
+-3.5209e+06 548204 0
+-2.4888e+06 632258 0
+0 248004 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+778907 128191 0
+1.12008e+06 320144 0
+398075 271630 0
+-76300 96685.9 0
+-10463 24104.3 0
+39204.1 26546.7 0
+-5558.84 16360.9 0
+-5022.98 3325.28 0
+7855.24 3610.31 0
+727.178 3647.43 0
+-1337.21 708.184 0
+1837.77 349.139 0
+738.149 821.256 0
+-233.719 302.904 0
+488.667 51.6225 0
+359.642 206.792 0
+-14.3897 151.911 0
+72.7012 63.5141 0
+6.90874 95.1164 0
+-128.309 91.752 0
+-150.906 65.2803 0
+-325.008 109.063 0
+-372.787 115.464 0
+-272.48 85.1448 0
+-760.419 209.19 0
+-850.716 262.946 0
+46.6825 73.1024 0
+-1346.2 453.806 0
+-2579.68 1117.06 0
+1630.44 454.245 0
+-1725.17 1113.87 0
+-10818.7 5099.52 0
+7355.86 4814.57 0
+5820.24 4770.59 0
+-56196.7 23297.3 0
+17443.4 36892 0
+104741 33618.3 0
+-584556 139620 0
+-1.62523e+06 393159 0
+-1.13297e+06 464987 0
+0 187316 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+267596 55562.9 0
+403871 144322 0
+145297 124623 0
+-30847.1 42854.5 0
+-2057.66 9840.7 0
+16648.6 13036.1 0
+-2729.18 8112.4 0
+-1623.66 1062.44 0
+4052.78 1470.7 0
+440.533 1889.84 0
+-441.776 348.889 0
+1197.55 89.0101 0
+582.919 410.194 0
+7.07596 171.954 0
+359.687 11.2351 0
+285.257 92.7981 0
+49.8706 78.0145 0
+59.9149 36.4154 0
+-1.34308 57.4606 0
+-110.509 55.7208 0
+-171.227 39.6882 0
+-299.866 66.3515 0
+-344.701 68.0007 0
+-330.094 48.816 0
+-636.422 110.313 0
+-695.125 122.313 0
+-261.971 25.7077 0
+-1087.5 264.813 0
+-1789.3 564.739 0
+409.788 119.734 0
+-1061.93 563.701 0
+-5733.41 2644.62 0
+2386.43 1937.87 0
+2954.99 1587.63 0
+-24128.9 11663.5 0
+3957.13 18236.2 0
+42722.6 13732.4 0
+-215331 62452.7 0
+-591023 182149 0
+-392743 211843 0
+0 82102.6 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+68654 13931.8 0
+113354 38684.8 0
+43040.5 34505.9 0
+-9790.14 10746.4 0
+162.713 1520.09 0
+6377.88 3965.22 0
+-819.472 2865.94 0
+-290.079 187.541 0
+2135.81 266.853 0
+611.84 637.936 0
+26.4762 144.379 0
+719.455 -9.76079 0
+497.251 125.498 0
+155.814 68.0065 0
+248.103 -0.127924 0
+207.537 28.0986 0
+63.6337 29.629 0
+32.1376 12.5903 0
+-5.05691 21.4407 0
+-82.3421 29.8729 0
+-158.752 27.8944 0
+-242.108 31.9468 0
+-269.912 22.4546 0
+-307.344 17.7748 0
+-491.514 45.6924 0
+-529.208 43.6763 0
+-426.252 11.6069 0
+-903.588 108.399 0
+-1142.59 172.563 0
+-217.479 -12.2168 0
+-1129.51 233.085 0
+-3107.62 892.226 0
+366.1 338.146 0
+741.784 323.253 0
+-9362.6 4143.1 0
+70.2768 5546.67 0
+13606.1 2068.21 0
+-64298.1 15863.5 0
+-167062 50878.4 0
+-101511 57243.9 0
+0 20744.7 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+12809.3 1603.09 0
+23460.3 4990.89 0
+8990.5 4873.15 0
+-2793.39 1368.14 0
+714.202 -229.995 0
+2694.95 398.226 0
+249.858 508.566 0
+125.393 32.9768 0
+982.941 -18.317 0
+522.215 99.0417 0
+177.105 40.666 0
+359.569 -9.09713 0
+306.35 13.2425 0
+146.413 13.2442 0
+133.497 0.693984 0
+110.414 5.009 0
+40.9077 6.62501 0
+4.40361 1.24786 0
+-19.5954 2.19728 0
+-54.906 9.04557 0
+-95.1966 11.7174 0
+-133.849 8.62612 0
+-158.134 1.10288 0
+-201.925 2.57597 0
+-285.411 11.4816 0
+-306.85 10.2269 0
+-328.07 5.7516 0
+-543.986 22.3093 0
+-597.104 17.6067 0
+-365.154 -12.2537 0
+-875.112 62.4133 0
+-1469.8 138.573 0
+-263.929 -27.0803 0
+-568.779 63.672 0
+-4006.43 731.686 0
+-976.176 543.968 0
+3908.1 -334.101 0
+-13541.7 2093.22 0
+-34745.6 7290.79 0
+-19033.1 7472.59 0
+0 2412.08 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+1444.33 0 0
+2828.3 0 0
+1024 0 0
+-362.502 0 0
+425.706 0 0
+748.448 0 0
+222.621 0 0
+115.9 0 0
+257.441 0 0
+174.847 0 0
+88.9166 0 0
+105.795 0 0
+90.2697 0 0
+49.8564 0 0
+38.2676 0 0
+30.9647 0 0
+13.3519 0 0
+-2.34347 0 0
+-13.8147 0 0
+-20.9441 0 0
+-26.4977 0 0
+-35.478 0 0
+-48.6829 0 0
+-67.0906 0 0
+-86.1834 0 0
+-92.0784 0 0
+-106.116 0 0
+-159.188 0 0
+-178.307 0 0
+-162.274 0 0
+-289.036 0 0
+-396.052 0 0
+-200.12 0 0
+-378.684 0 0
+-1124.93 0 0
+-628.773 0 0
+481.717 0 0
+-1578.54 0 0
+-4210.82 0 0
+-2150.7 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+}
Index: /tags/1.6.0/examples/flow/demo3/demo3.tcl
===================================================================
--- /tags/1.6.0/examples/flow/demo3/demo3.tcl	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo3/demo3.tcl	(revision 6168)
@@ -0,0 +1,41 @@
+
+# Example of using dx file in a vector field.
+# This is included for testing purposes, since DX file data is deprecated
+source data-dx.tcl
+
+package require Rappture
+
+set driver [Rappture::library [lindex $argv 0]]
+
+set elements {
+    output.field.about.label "SiO2"
+    output.field.component.flow.axis z
+    output.field.component.flow.position 0%
+    output.field.component.flow.volume yes
+    output.field.component.flow.streams no
+    output.field.component.flow.outline no
+    output.field.component.flow.particles(left).axis x
+    output.field.component.flow.particles(left).color lightgreen
+    output.field.component.flow.particles(left).position 10%
+    output.field.component.flow.particles(right).axis x 
+    output.field.component.flow.particles(right).color khaki
+    output.field.component.flow.particles(right).position 90%
+    output.field.component.style  "-color blue:red -levels 6 -opacity 1"
+    output.field.component.extents 3
+}
+
+puts stdout "Setting attributes for demo3"
+flush stdout
+foreach {key value} $elements {
+    $driver put $key $value
+}
+
+set data [Rappture::encoding::encode -as zb64 "<DX>$dx"]
+$driver put output.field.component.dx $data
+
+Rappture::result $driver
+
+puts stdout "done"
+flush stdout
+exit 0
+
Index: /tags/1.6.0/examples/flow/demo3/tool.xml
===================================================================
--- /tags/1.6.0/examples/flow/demo3/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/flow/demo3/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/demo3.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/flow/flowtest.tcl
===================================================================
--- /tags/1.6.0/examples/flow/flowtest.tcl	(revision 6168)
+++ /tags/1.6.0/examples/flow/flowtest.tcl	(revision 6168)
@@ -0,0 +1,154 @@
+
+# Example of using the flow object in Rappture.
+
+package require Rappture
+
+# Open an XML run file to write into
+set driver [Rappture::library [lindex $argv 0]]
+
+# Create 3 <mesh> and <field> objects to display the different flows.
+
+set m1 output.mesh(jwire)
+set f1 output.field(jwire)
+
+set m2 output.mesh(half)
+set f2 output.field(half)
+
+set m3 output.mesh(sio2)
+set f3 output.field(sio2)
+
+set elements [subst {
+    $f1.about.label "Jwire example"
+    $f1.component.flow.label "Flow 1"
+    $f1.component.flow.axis z
+    $f1.component.flow.position 0%
+    $f1.component.flow.volume yes
+    $f1.component.flow.streams no
+    $f1.component.flow.outline no
+    $f1.component.flow.particles(left).label "Left particle flow"
+    $f1.component.flow.particles(left).description {
+	Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
+    }
+    $f1.component.flow.particles(left).axis x 
+    $f1.component.flow.particles(left).color lightgreen
+    $f1.component.flow.particles(left).position 10%
+    $f1.component.flow.particles(right).label "Right particle flow"
+    $f1.component.flow.particles(right).description {
+	Cras elit eros,
+	ultricies vel, auctor nec, iaculis interdum, lectus. Vivamus lorem diam,
+	posuere nec, cursus ut, tempus in, tortor. Sed est eros, faucibus eu,
+	pellentesque quis, pharetra venenatis, massa.
+    }
+    $f1.component.flow.particles(right).axis x 
+    $f1.component.flow.particles(right).color khaki
+    $f1.component.flow.particles(right).position 90%
+    $f1.component.style  "-color blue:red -levels 6"
+    $f1.component.flow.box(one).label "Region 1"
+    $f1.component.flow.box(one).color cyan
+    $f1.component.flow.box(one).corner(1) "0 -100 -100" 
+    $f1.component.flow.box(one).corner(2) "3000 400 400"
+    $f1.component.flow.box(two).label "Region 2"
+    $f1.component.flow.box(two).color violet 
+    $f1.component.flow.box(two).corner(1) "1000 -150 -100" 
+    $f1.component.flow.box(two).corner(2) "3000 3000 3000"
+    $f1.component.flow.box(three).label "Region 3"
+    $f1.component.flow.box(three).color magenta 
+    $f1.component.flow.box(three).corner(1) "1000 -150 -100" 
+    $f1.component.flow.box(three).corner(2) "2000 450 450"
+    $f1.component.elemtype vectors
+    $f1.component.elemsize 3
+    $f1.component.mesh $m1
+    $m1.about.label "JWire mesh"
+    $m1.dim 3
+    $m1.units "um"
+    $m1.hide yes
+    $m1.grid.xaxis.min 0
+    $m1.grid.xaxis.max 6300
+    $m1.grid.xaxis.numpoints 126
+    $m1.grid.yaxis.min 0
+    $m1.grid.yaxis.max 1500
+    $m1.grid.yaxis.numpoints 30
+    $m1.grid.zaxis.min 0
+    $m1.grid.zaxis.max 1519.05
+    $m1.grid.zaxis.numpoints 22
+    $f2.about.label "Flow 2d half"
+    $f2.component.flow.axis z
+    $f2.component.flow.position 0%
+    $f2.component.flow.volume yes
+    $f2.component.flow.streams no
+    $f2.component.flow.outline no
+    $f2.component.flow.particles(left).axis x 
+    $f2.component.flow.particles(left).color yellow
+    $f2.component.flow.particles(left).position 10%
+    $f2.component.flow.particles(right).axis x 
+    $f2.component.flow.particles(right).color pink
+    $f2.component.flow.particles(right).position 90%
+    $f2.component.style  "-color rainbow -levels 6"
+    $f2.camera.position {
+	-qw 1 -qx 0 -qy 0 -qz 0 -xpan 0 -ypan 0 -zoom 1.0
+    }
+    $f2.component.elemtype vectors
+    $f2.component.elemsize 3
+    $f2.component.mesh $m2
+    $m2.about.label "2D mesh"
+    $m2.dim 2
+    $m2.units "um"
+    $m2.hide yes
+    $m2.grid.xaxis.min -0.5
+    $m2.grid.xaxis.max 152
+    $m2.grid.xaxis.numpoints 305
+    $m2.grid.yaxis.min -22
+    $m2.grid.yaxis.max 21.6
+    $m2.grid.yaxis.numpoints 109
+    $f3.about.label "SiO2"
+    $f3.about.view "flowvis"
+    $f3.component.flow.axis z
+    $f3.component.flow.position 0%
+    $f3.component.flow.volume yes
+    $f3.component.flow.streams no
+    $f3.component.flow.outline no
+    $f3.component.flow.particles(left).axis x
+    $f3.component.flow.particles(left).color lightgreen
+    $f3.component.flow.particles(left).position 10%
+    $f3.component.flow.particles(right).axis x 
+    $f3.component.flow.particles(right).color khaki
+    $f3.component.flow.particles(right).position 90%
+    $f3.component.style "-color blue:red -levels 6"
+    $f3.component.elemtype vectors
+    $f3.component.elemsize 3
+    $f3.component.mesh $m3
+    $m3.about.label "SiO2 Mesh"
+    $m3.dim 3
+    $m3.units "um"
+    $m3.hide yes
+    $m3.grid.xaxis.min 0
+    $m3.grid.xaxis.max 29.75206608
+    $m3.grid.xaxis.numpoints 121
+    $m3.grid.yaxis.min -1.5
+    $m3.grid.yaxis.max 2.82
+    $m3.grid.yaxis.numpoints 25
+    $m3.grid.zaxis.min -1
+    $m3.grid.zaxis.max 4.304347828
+    $m3.grid.zaxis.numpoints 23
+}]
+
+puts stdout "Setting attributes..."
+flush stdout
+foreach {key value} $elements {
+    $driver put $key $value
+}
+
+source demo1/data-demo1.tcl
+$driver put $f1.component.values $values
+
+source demo2/data-2dflow.tcl
+$driver put $f2.component.values $values
+
+source demo3/data-values.tcl
+$driver put $f3.component.values $values
+
+# save the updated XML describing the run...
+Rappture::result $driver
+puts stdout "done"
+flush stdout
+exit 0
Index: /tags/1.6.0/examples/flow/tool.xml
===================================================================
--- /tags/1.6.0/examples/flow/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/flow/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/flowtest.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/graph/Makefile.in
===================================================================
--- /tags/1.6.0/examples/graph/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/graph/Makefile.in	(revision 6168)
@@ -0,0 +1,36 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/graph.py \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/graph
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/graph/graph.py
===================================================================
--- /tags/1.6.0/examples/graph/graph.py	(revision 6168)
+++ /tags/1.6.0/examples/graph/graph.py	(revision 6168)
@@ -0,0 +1,51 @@
+# ----------------------------------------------------------------------
+#  GRAPH
+#
+#  This simple example shows how you can use the Rappture toolkit
+#  to handle I/O for a simple simulator--in this case, one that
+#  evaluates an x/y graph
+#
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+# Note: You will not see stdout and stderr when this
+# tool is run by Rappture.  You can either run this tool from the command
+# line by passing in a driver xml file like this:
+# ~/rap/rappture/examples/graph> python graph.py driver1234.xml
+#
+# or you can redirect stdout and stderr to files by uncommenting the
+# two lines after the import sys
+
+import Rappture
+import numpy as np
+import sys
+
+# uncomment these for debugging
+# sys.stderr = open('graph.err', 'w')
+# sys.stdout = open('graph.out', 'w')
+
+io = Rappture.PyXml(sys.argv[1])
+
+# When reading from xml, all values are strings
+xmin = float(io['input.number(min).current'].value)
+xmax = float(io['input.number(max).current'].value)
+formula = io['input.string(formula).current'].value
+print 'formula = %s' % formula
+
+curve = io['output.curve(result)']
+curve['about.label'] = 'Formula: Y vs X'
+curve['yaxis.label'] = 'Y'
+curve['xaxis.label'] = 'X'
+
+num_points = 100
+x = np.linspace(xmin, xmax, num_points)
+y = eval(formula)
+curve['component.xy'] = (x, y)
+
+# Done. Write out the xml file for Rappture.
+io.close()
Index: /tags/1.6.0/examples/graph/tool.xml
===================================================================
--- /tags/1.6.0/examples/graph/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/graph/tool.xml	(revision 6168)
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>Graphing Calculator</title>
+        <about>Press Simulate to view results.</about>
+        <command>python @tool/graph.py @driver</command>
+    </tool>
+    <input>
+        <string id="formula">
+            <about>
+                <label>Formula</label>
+                <hints>Example: 2*x + 1</hints>
+            </about>
+            <size>30x5</size>
+	    <default>2*x+1</default>
+        </string>
+        <number id="min">
+            <about> <label>From x</label> </about>
+            <default>0</default>
+        </number>
+        <number id="max">
+            <about> <label>To x</label> </about>
+            <default>1</default>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/lang/R/driver.xml
===================================================================
--- /tags/1.6.0/examples/lang/R/driver.xml	(revision 6168)
+++ /tags/1.6.0/examples/lang/R/driver.xml	(revision 6168)
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+        <version>
+            <rappture>
+                <language>R</language>
+                <revision>$LastChangedRevision: 2408 $</revision>
+                <modified>$LastChangedDate: 2011-08-24 22:01:44 -0400 (Wed, 24 Aug 2011) $</modified>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <current>300K</current>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+        <string id="ee">
+            <about>
+                <label>my string</label>
+                <description>my string's description</description>
+            </about>
+            <default>blah blah blah</default>
+            <current>blah blah blah blah</current>
+        </string>
+        <integer id="ii">
+            <about>
+                <label>my integer</label>
+                <description>my integer's description</description>
+            </about>
+            <default>4</default>
+            <current>5</current>
+        </integer>
+        <boolean id="bb">
+            <about>
+                <label>my integer</label>
+                <description>my integer's description</description>
+            </about>
+            <default>false</default>
+            <current>true</current>
+        </boolean>
+    </input>
+</run>
Index: /tags/1.6.0/examples/lang/R/functions_examples.R
===================================================================
--- /tags/1.6.0/examples/lang/R/functions_examples.R	(revision 6168)
+++ /tags/1.6.0/examples/lang/R/functions_examples.R	(revision 6168)
@@ -0,0 +1,54 @@
+require(Rappture)
+
+
+lib = rp_lib("driver.xml")
+cat("lib = ",lib,"\n")
+
+ee = rp_lib_get_string(lib,"input.string(ee).current")
+cat("ee = ",ee," is.character = ",is.character(ee),"\n")
+
+dd = rp_lib_get_double(lib,"input.number(temperature).current")
+cat("dd = ",dd," is.real = ",is.real(dd),"\n")
+
+ii = rp_lib_get_integer(lib,"input.integer(ii).current")
+cat("ii = ",ii," is.integer = ",is.integer(ii),"\n")
+
+bb = rp_lib_get_boolean(lib,"input.boolean(bb).current")
+cat("bb = ",bb," is.logical = ",is.logical(bb),"\n")
+
+nbytes = rp_lib_get_file(lib,"input.string(ee).current","myoutfile")
+cat("nbytes = ",nbytes," is.integer = ",is.integer(nbytes),"\n")
+
+err = rp_lib_put_string(lib,"output.string(ps).current","voodoo",TRUE)
+cat("err = ",err," is.integer = ",is.integer(err),"\n")
+
+d = as.real(12.45)
+err = rp_lib_put_double(lib,"output.number(ps).current",d,TRUE)
+cat("err = ",err," is.integer = ",is.integer(err),"\n")
+
+pf = rp_lib_put_file(lib,"output.string(pf).current","myoutfile",FALSE,FALSE)
+cat("err = ",err," is.integer = ",is.integer(err),"\n")
+
+result = rp_lib_result(lib)
+cat("result = ",result," is.integer = ",is.integer(result),"\n")
+
+result = rp_units_convert_double("0C","F")
+cat("result = ",result," is.real = ",is.real(result),"\n")
+
+show = TRUE
+result = rp_units_convert_string("100mm","m",show)
+cat("result = ",result," is.character = ",is.character(result),"\n")
+
+show = FALSE
+result = rp_units_convert_string("100mm","m",show)
+cat("result = ",result," is.character = ",is.character(result),"\n")
+
+percent = as.integer(56)
+result = rp_utils_progress(percent,"almost done...")
+cat("result = ",result," is.integer = ",is.integer(result),"\n")
+
+result = rp_utils_progress(76,"almost done...")
+cat("result = ",result," is.integer = ",is.integer(result),"\n")
+
+result = rp_utils_progress(36.546,"almost done...")
+cat("result = ",result," is.integer = ",is.integer(result),"\n")
Index: /tags/1.6.0/examples/lang/R/myoutfile
===================================================================
--- /tags/1.6.0/examples/lang/R/myoutfile	(revision 6168)
+++ /tags/1.6.0/examples/lang/R/myoutfile	(revision 6168)
@@ -0,0 +1,1 @@
+blah blah blah blah
Index: /tags/1.6.0/examples/lang/tcl/loadercopy/Makefile.in
===================================================================
--- /tags/1.6.0/examples/lang/tcl/loadercopy/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/loadercopy/Makefile.in	(revision 6168)
@@ -0,0 +1,44 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir          = @srcdir@
+prefix          = @prefix@
+
+INSTALL     = @INSTALL@
+MKDIR_P     = @MKDIR_P@
+VPATH       = $(srcdir)
+RM          = rm -f
+
+FILES		= \
+		$(srcdir)/loadercopy.tcl \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/lang/tcl/loadercopy
+
+.PHONY: all install clean distclean
+
+all:
+	$(MAKE) -C examples  all
+	$(MAKE) -C docs  all
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	$(MAKE) -C examples install
+	$(MAKE) -C docs install
+
+clean:
+	$(MAKE) -C examples clean
+	$(MAKE) -C docs clean
+
+distclean: 
+	$(MAKE) -C examples distclean
+	$(MAKE) -C docs distclean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/lang/tcl/loadercopy/docs/AG.html
===================================================================
--- /tags/1.6.0/examples/lang/tcl/loadercopy/docs/AG.html	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/loadercopy/docs/AG.html	(revision 6168)
@@ -0,0 +1,12 @@
+<html>
+   <head>
+      <title>AG</title>
+   </head>
+   <body>
+      <li><b>Symbol:</b> Ag</li>
+      <li><b>Description:</b> Silver</li>
+      <li><b>Range (nm):</b> 187~2066</li>
+      <li><b>Provider:</b> <a href="http://www.sopra-sa.com">http://www.sopra-sa.com</a></li>
+      <li><b>Interpolation method:</b> Cubic spline interpolation with quadratic end points.</li>
+   </body>
+</html>
Index: /tags/1.6.0/examples/lang/tcl/loadercopy/docs/GAP.html
===================================================================
--- /tags/1.6.0/examples/lang/tcl/loadercopy/docs/GAP.html	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/loadercopy/docs/GAP.html	(revision 6168)
@@ -0,0 +1,12 @@
+<html>
+   <head>
+      <title>GAP</title>
+   </head>
+   <body>
+      <li><b>Symbol:</b> GaP</li>
+      <li><b>Description:</b> Gallium Phosphide</li>
+      <li><b>Range (nm):</b> 206~2479</li>
+      <li><b>Provider:</b> <a href="http://www.sopra-sa.com">http://www.sopra-sa.com</a></li>
+      <li><b>Interpolation method:</b> Cubic spline interpolation with quadratic end points.</li>
+   </body>
+</html>
Index: /tags/1.6.0/examples/lang/tcl/loadercopy/docs/Makefile.in
===================================================================
--- /tags/1.6.0/examples/lang/tcl/loadercopy/docs/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/loadercopy/docs/Makefile.in	(revision 6168)
@@ -0,0 +1,37 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir          = @srcdir@
+prefix          = @prefix@
+
+INSTALL     = @INSTALL@
+MKDIR_P     = @MKDIR_P@
+VPATH       = $(srcdir)
+RM          = rm -f
+
+FILES       = \
+		$(srcdir)/AG.html \
+		$(srcdir)/GAP.html \
+		$(srcdir)/none.html
+
+destdir     = $(prefix)/examples/lang/tcl/loadercopy/docs
+
+.PHONY: all install clean distclean
+
+all:
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/lang/tcl/loadercopy/docs/none.html
===================================================================
--- /tags/1.6.0/examples/lang/tcl/loadercopy/docs/none.html	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/loadercopy/docs/none.html	(revision 6168)
@@ -0,0 +1,12 @@
+<html>
+   <head>
+      <title>None</title>
+   </head>
+   <body>
+      <li><b>Symbol:</b> None</li>
+      <li><b>Description:</b> None</li>
+      <li><b>Range (nm):</b> 0~0</li>
+      <li><b>Provider:</b> <a href="http://www.sopra-sa.com">http://www.sopra-sa.com</a></li>
+      <li><b>Interpolation method:</b>None.</li>
+   </body>
+</html>
Index: /tags/1.6.0/examples/lang/tcl/loadercopy/examples/Makefile.in
===================================================================
--- /tags/1.6.0/examples/lang/tcl/loadercopy/examples/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/loadercopy/examples/Makefile.in	(revision 6168)
@@ -0,0 +1,36 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir          = @srcdir@
+prefix          = @prefix@
+
+INSTALL     = @INSTALL@
+MKDIR_P     = @MKDIR_P@
+VPATH       = $(srcdir)
+RM          = rm -f
+
+FILES       = \
+		$(srcdir)/materials-dielectric-GAP.xml \
+		$(srcdir)/materials-metal-AG.xml
+
+destdir     = $(prefix)/examples/lang/tcl/loadercopy/examples
+
+.PHONY: all install clean distclean
+
+all:
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/lang/tcl/loadercopy/examples/materials-dielectric-GAP.xml
===================================================================
--- /tags/1.6.0/examples/lang/tcl/loadercopy/examples/materials-dielectric-GAP.xml	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/loadercopy/examples/materials-dielectric-GAP.xml	(revision 6168)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<run>
+    <about>
+        <label>Gallium Phosphide</label>
+        <description>Gallium Phosphide</description>
+    </about>
+    <input>
+        <note>
+            <contents>file://GAP.html</contents>
+        </note>
+    </input>
+</run>
Index: /tags/1.6.0/examples/lang/tcl/loadercopy/examples/materials-metal-AG.xml
===================================================================
--- /tags/1.6.0/examples/lang/tcl/loadercopy/examples/materials-metal-AG.xml	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/loadercopy/examples/materials-metal-AG.xml	(revision 6168)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<run>
+    <about>
+        <label>Silver</label>
+        <description>Silver</description>
+    </about>
+    <input>
+        <note>
+            <contents>file://AG.html</contents>
+        </note>
+    </input>
+</run>
Index: /tags/1.6.0/examples/lang/tcl/loadercopy/loadercopy.tcl
===================================================================
--- /tags/1.6.0/examples/lang/tcl/loadercopy/loadercopy.tcl	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/loadercopy/loadercopy.tcl	(revision 6168)
@@ -0,0 +1,22 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <loader> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set file1 [$driver get input.group(tabs).group(layer1).loader.file]
+set file2 [$driver get input.group(tabs).group(layer2).loader.file]
+
+$driver put output.log "file1 = $file1\nfile2 = $file2"
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/lang/tcl/loadercopy/tool.xml
===================================================================
--- /tags/1.6.0/examples/lang/tcl/loadercopy/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/loadercopy/tool.xml	(revision 6168)
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>loader</title>
+  <about>Example of the copy functionality of a Rappture &lt;loader&gt; object.
+
+A loader is used to load values into the interface from example files.  The example files have the same format as the tool.xml file that they are being loaded into.  In fact, they can be generated by running the tool and saving the output run.xml file.  In you look in the example files, you'll see that each one also has an &lt;about&gt; section with a label and a description.  These show up in the loader control.
+
+The description appears in a tooltip when you hover over the loader control with your mouse.
+
+You can see the real action here by selecting various examples from the loader.  The simulate button doesn't do very much.  It just copies the inputs to the output log.
+  </about>
+  <command>
+    tclsh @tool/loadercopy.tcl @driver
+  </command>
+</tool>
+<input>
+  <group id="tabs">
+    <group id="layer1">
+      <about>
+        <label>Layer1</label>
+      </about>
+      <loader>
+        <about>
+          <label>Material</label>
+          <description>Choose the material for layer 1.</description>
+        </about>
+        <example>*.xml</example>
+        <copy>
+          <from>input.note</from>
+          <to>input.group(tabs).group(layer1).note</to>
+        </copy>
+        <default>Choose A Material</default>
+      </loader>
+      <note>
+        <contents>file://none.html</contents>
+      </note>
+    </group>
+    <group id="layer2">
+      <about>
+        <label>Layer2</label>
+      </about>
+      <loader>
+        <about>
+          <label>Material</label>
+          <description>Choose the material for layer 2.</description>
+        </about>
+        <example>*.xml</example>
+        <copy>
+          <from>input.note</from>
+          <to>input.group(tabs).group(layer2).note</to>
+        </copy>
+        <default>Choose A Material</default>
+      </loader>
+      <note>
+        <contents>file://none.html</contents>
+      </note>
+    </group>
+  </group>
+</input>
+</run>
Index: /tags/1.6.0/examples/lang/tcl/putfile/putfile.tcl
===================================================================
--- /tags/1.6.0/examples/lang/tcl/putfile/putfile.tcl	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/putfile/putfile.tcl	(revision 6168)
@@ -0,0 +1,19 @@
+package require Rappture
+
+# open the XML file containing the run parameters
+set opt [Rappture::library [lindex $argv 0]]
+
+if {[$opt isa ::Rappture::LibraryObj] != 1} {
+    puts "creation of library failed"
+}
+
+$opt put output.string(datafile).about.label "Binary Data File"
+$opt put -type file -compress yes output.string(datafile).current addrbook.mat
+$opt put output.string(datafile).filetype ".mat"
+
+$opt put output.string(tarfile).about.label "Binary TarGZ File"
+$opt put -type file -compress yes output.string(tarfile).current addrbook.tgz
+$opt put output.string(tarfile).filetype ".tgz"
+
+Rappture::result $opt
+exit 0
Index: /tags/1.6.0/examples/lang/tcl/putfile/tool.xml
===================================================================
--- /tags/1.6.0/examples/lang/tcl/putfile/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/lang/tcl/putfile/tool.xml	(revision 6168)
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>string</title>
+  <about>Example of using the Rappture "put file" function in Tcl.
+
+$lib put ?-append yes? ?-type string|file? ?-compress no? ?&lt;path&gt;? &lt;string&gt;
+
+The put function can be used to place files on disk into the xml library. Thsi saves the user a little bit of hassel regarding any transformations that need to happen to the file before it can be placed in the xml file. The put file functionality is enabled when the -type flag is set to "file". The -compress flag is still optional, but if Rappture thinks the file contains binary characters, it will automatically mime encode the file. When the user gets the file, the mime encoding is automatically stripped off by Rappture.
+
+Press the Simulate button to see put file functionality work!
+  </about>
+  <command>
+    tclsh @tool/putfile.tcl @driver
+  </command>
+</tool>
+<input>
+</input>
+</run>
Index: /tags/1.6.0/examples/objects/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/Makefile.in	(revision 6168)
@@ -0,0 +1,55 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir          = @srcdir@
+prefix          = @prefix@
+
+INSTALL         = @INSTALL@
+INSTALL_DATA    = @INSTALL_DATA@
+VPATH           = $(srcdir)
+RM              = rm -f
+
+#		dxWriter \
+
+examples = \
+		axis \
+		curve \
+		floatBuffer \
+		histogram \
+		library \
+		number \
+		path \
+		plot \
+		string \
+		tree \
+		xmlparser
+
+destdir    = $(prefix)/examples/objects
+
+.PHONY: all install clean distclean
+
+all:
+	for i in $(examples) ; do \
+	  $(MAKE) -C $$i all || exit 1; \
+	done
+
+install:
+	for i in $(examples) ; do \
+	  $(MAKE) -C $$i install || exit 1; \
+	done
+
+clean:
+	for i in $(examples) ; do \
+	  $(MAKE) -C $$i clean; \
+	done
+
+distclean:
+	for i in $(examples) ; do \
+	  $(MAKE) -C $$i distclean; \
+	done
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/api/c/library
===================================================================
--- /tags/1.6.0/examples/objects/api/c/library	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/c/library	(revision 6168)
@@ -0,0 +1,138 @@
+Library
+
+    Rp_LibraryInit()
+    Rp_LibraryCopy(const Rp_Library* o)
+    Rp_LibraryDestroy(Rp_Library *lib)
+
+    Outcome *Rp_LibraryLoadXml(Rp_Library *lib, const char *xmltext)
+    Outcome *Rp_LibraryLoadFile(Rp_Library *lib, const char *filename)
+
+
+    void Rp_LibraryValue(Rp_Library *lib, const char *key,
+        void *storage, size_t numHints, ...)
+
+    Rp_Chain *Rp_LibraryDiff(Rp_Library *lib1, Rp_Library *lib2)
+
+    void Rp_LibraryRemove (Rp_Library *lib, const char *key)
+
+    const char *Rp_LibraryXml(Rp_Library *lib) const
+
+    Outcome *Rp_LibraryOutcome(Rp_Library *lib) const
+    int Rp_LibraryError(Rp_Library *lib) const
+
+    Outcome *Rp_LibraryResult(Rp_Library *lib, int status)
+
+    const Rp_Chain *Rp_LibraryContains(Rp_Library *lib) const
+
+---------------------------------------
+
+Outcome *Rp_LibraryLoadXml(Rp_Library *lib, const char *xmltext)
+    Purpose: parse the Rappture1.1 xml data in "xmltext".
+                populate this library object with the Rappture
+                objects described in the xml data.
+    Input Arguments: 2
+        1. Rp_Library *lib - pointer to Library object
+        1. const char *xmltext - Rappture1.1 xml data
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+
+Outcome *Rp_LibraryLoadFile(Rp_Library *lib, const char *filename);
+    Purpose: read the file "filename" and parse the
+                Rappture1.1 xml data found inside of it.
+                populate this library object with the Rappture
+                objects described in the xml data.
+    Input Arguments: 2
+        1. Rp_Library *lib - pointer to Library object
+        2. const char *filename - file containing Rappture1.1
+                                    xml data
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+
+void Rp_LibraryValue(Rp_Library *lib, const char *key, void *storage,
+                     size_t numHints, ...);
+    Purpose: retrieve the value of the object named "key" and
+                store it in "storage". If there are hints,
+                pass them along to the object being retrieved
+                to tell it how the value should be configured.
+    Input Arguments: at least 4
+        1. Rp_Library *lib - pointer to Library object
+        2. const char *key - name of the object being retrieved
+        3. void *storage - where to place the value of the
+                            retrieved object
+        4. size_t numHints - number of hints provided
+        5. ... - hints listed as strings
+    Return Value: None
+    Notes: hints are listed as strings of the form
+            "hintKey=hintVal". hintKey is the key for the hint
+            and hintVal is the value to be applied to the hint.
+            generally, unrecognized hints are ignored. the hints
+            should be listed as comma separated strings in the
+            function's argument list.
+    Code Example:
+
+Rp_Chain *Rp_LibraryDiff(Rp_Library *lib1, Rp_Library *lib2);
+    Purpose: find the difference between two library objects
+    Input Arguments: 2
+        1. Rp_Library *lib1 - base object used in comparison
+        2. Rp_Library *lib2 - other object used in comparison
+    Return Value: Linked list of differences
+    Notes: None
+    Code Example:
+
+void Rp_LibraryRemove (Rp_Library *lib, const char *key);
+    Purpose: remove the object from this library named "key"
+    Input Arguments: 2
+        1. Rp_Library *lib - pointer to Library object
+        2. const char *key - name of the object to remove
+    Return Value: None
+    Notes: The object is removed and it's memory is deleted
+    Code Example:
+
+const char *Rp_LibraryXml(Rp_Library *lib) const;
+    Purpose: return the Rappture1.1 xml representation of the
+                objects stored in this library.
+    Input Arguments: 1
+        1. Rp_Library *lib - pointer to Library object
+    Return Value: None
+    Notes: user is responsible for free'ing returned memory?
+    Code Example:
+
+Outcome *Rp_LibraryOutcome(Rp_Library *lib) const;
+    Purpose: return the status of the object
+    Input Arguments: 1
+        1. Rp_Library *lib - pointer to Library object
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+
+int Rp_LibraryError(Rp_Library *lib) const;
+    Purpose: return the status of the object
+    Input Arguments: 1
+        1. Rp_Library *lib - pointer to Library object
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+
+Outcome *Rp_LibraryResult(Rp_Library *lib, int status);
+    Purpose: write the stored objects to a data file and
+                signal the end of processing.
+    Input Arguments: 2
+        1. Rp_Library *lib - pointer to Library object
+        2. int status - status of the simulation
+    Return Value: None
+    Notes: currently data file are written out as Rappture1.1
+            xml. this function generates the RAPPTURE-RUN=>
+            signal.
+    Code Example:
+
+const Rp_Chain *Rp_LibraryContains(Rp_Library *lib) const;
+    Purpose: return a linked list of the Rappture objects
+                stored in this library.
+    Input Arguments: 1
+        1. Rp_Library *lib - pointer to Library object
+    Return Value: linked list of the Rappture objects stored in
+                    this library.
+    Notes: None
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/c/number
===================================================================
--- /tags/1.6.0/examples/objects/api/c/number	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/c/number	(revision 6168)
@@ -0,0 +1,540 @@
+Number
+
+    Rp_NumberInit(Rp_Number *num)
+    Rp_NumberInit2(Rp_Number *num, const char *name, const char *units,
+                   double val);
+    Rp_NumberInit3(Rp_Number *num, const char *name, const char *units,
+                   double val, double min, double max, const char *label,
+                   const char *desc);
+    Rp_NumberCopy(const Rp_Number* o);
+    Rp_NumberDestroy(Rp_Number *num);
+
+    const char *Rp_NumberGetName(Rp_Number *num) const;
+    void Rp_NumberSetName(Rp_Number *num, const char *val);
+
+    const char *Rp_NumberGetPath(Rp_Number *num) const;
+    void Rp_NumberSetPath(Rp_Number *num, const char *val);
+
+    const char *Rp_NumberGetLabel(Rp_Number *num) const;
+    void Rp_NumberSetLabel(Rp_Number *num, const char *val);
+
+    const char *Rp_NumberGetDesc(Rp_Number *num) const;
+    void Rp_NumberSetDesc(Rp_Number *num, const char *val);
+
+    const char *Rp_NumberGetHints(Rp_Number *num) const;
+    void Rp_NumberSetHints(Rp_Number *num, const char *val);
+
+    const char *Rp_NumberGetColor(Rp_Number *num) const;
+    void Rp_NumberSetColor(Rp_Number *num, const char *val);
+
+    double Rp_NumberGetDefault(Rp_Number *num) const;
+    void Rp_NumberSetDefault(Rp_Number *num, double val);
+
+    double Rp_NumberGetCurrent(Rp_Number *num) const;
+    void Rp_NumberSetCurrent(Rp_Number *num, double val);
+
+    double Rp_NumberGetMin(Rp_Number *num) const;
+    void Rp_NumberSetMin(Rp_Number *num, double val);
+
+    double Rp_NumberGetMax(Rp_Number *num) const;
+    void Rp_NumberSetMax(Rp_Number *num, double val);
+
+    const char *Rp_NumberGetUnits(Rp_Number *num) const;
+    void Rp_NumberSetUnits(Rp_Number *num, const char *u);
+
+    int Rp_NumberDefaultSet(Rp_Number *num) const;
+    int Rp_NumberCurrentSet(Rp_Number *num) const;
+
+    const void *Rp_NumberGetProperty (Rp_Number *num, const char *key) const;
+    void Rp_NumberSetProperty (Rp_Number *num, const char *key,
+                               const void *val, size_t nbytes);
+
+    const char *Rp_NumberPropStr (Rp_Number *num, const char *key) const;
+    void Rp_NumberPropStr (Rp_Number *num, const char *key, const char *val);
+
+    void Rp_NumberPropRemove (Rp_Number *num, const char *key);
+
+    Outcome& Rp_NumberConvert(Rp_Number *num, const char *to);
+    double Rp_NumberValue(Rp_Number *num, const char *units) const;
+    void Rp_NumberVValue(Rp_Number *num, void *storage, size_t numHints,
+                         va_list arg) const;
+    void Rp_NumberRandom();
+    Rp_Chain *Rp_NumberDiff(const Rp_Object *o);
+
+    void Rp_NumberAddPreset(Rp_Number *num, const char *label,
+                            const char *desc, double val,
+                            const char *units);
+
+    void Rp_NumberAddPreset2(Rp_Number *num, const char *label,
+                             const char *desc, const char *val);
+
+    void Rp_NumberDelPreset(Rp_Number *num, const char *label);
+
+    void Rp_NumberConfigure(Rp_Number *num, size_t as, ClientData c);
+    void Rp_NumberDump(Rp_Number *num, size_t as, ClientData c);
+
+    Outcome *Rp_NumberOutcome(Rp_Number *num) const;
+
+    const int Rp_NumberIs(Rp_Number *num) const;
+
+    void Rp_NumberMinFromStr(Rp_Number *num, const char *val);
+    void Rp_NumberMaxFromStr(Rp_Number *num, const char *val);
+    void Rp_NumberDefaultFromStr(Rp_Number *num, const char *val);
+    void Rp_NumberCurrentFromStr(Rp_Number *num, const char *val);
+
+---------------------------------------
+
+const char *Rp_NumberGetName(Rp_Number *num)
+    Purpose: get the id name of the object
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: the id name stored in the object.
+    Notes: if no name is set, NULL will be returned
+            the id name is used to identify this object from
+            all other objects and should be unique
+    Code Example:
+
+void Rp_NumberSetName(Rp_Number *num, const char *val)
+    Purpose: set the id name of the object
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *val - new id name
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *Rp_NumberGetpath(Rp_Number *num)
+    Purpose: get the path of the object
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: the path stored in the object.
+    Notes: if no path is set, NULL will be returned
+            the path tells where this object sits in the
+            hierarchy of objects.
+    Code Example:
+
+void Rp_NumberSetPath(Rp_Number *num, const char *val)
+    Purpose: set the path of the object
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *val - new path
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *Rp_NumberGetLabel(Rp_Number *num)
+    Purpose: get the label of the object
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: the label stored in the object.
+    Notes: if no label is set, NULL will be returned
+            the label is used by the graphical user interface.
+    Code Example:
+
+void Rp_NumberSetLabel(Rp_Number *num, const char *val)
+    Purpose: set the label of the object
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *val - new label
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *Rp_NumberGetDesc(Rp_Number *num)
+    Purpose: get the description of the object
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: the description stored in the object.
+    Notes: if no description is set, NULL will be returned
+            the description is used by the graphical user
+            interface to describe what type of data is being
+            requested and how the input is used.
+    Code Example:
+
+void Rp_NumberSetDesc(Rp_Number *num, const char *val)
+    Purpose: set the description of the object
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *val - new description
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *Rp_NumberGetHints(Rp_Number *num)
+    Purpose: get the hints of the object
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: the hints stored in the object.
+    Notes: if no hints are set, NULL will be returned
+            the hints are used by the graphical user interface
+    Code Example:
+
+void Rp_NumberSetHints(Rp_Number *num, const char *val)
+    Purpose: set the hints of the object
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *val - new hints
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+double Rp_NumberGetDefault(Rp_Number *num)
+    Purpose: get the default value
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: the default value stored in the object.
+    Notes: use the function defset() to see if a valid
+            default value was stored in the object.
+    Code Example:
+
+void Rp_NumberSetDefault(Rp_Number *num, double val)
+    Purpose: set the default value
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. double val - new default value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+double Rp_NumberGetCurrent(Rp_Number *num)
+    Purpose: get the current value
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: the current value stored in the object.
+    Notes: use the function curset() to see if a valid
+            default value was stored in the object.
+    Code Example:
+
+void Rp_NumerSetCurrent(Rp_Number *num, double val)
+    Purpose: set the current value
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. double val - new current value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+double Rp_NumberGetMin(Rp_Number *num)
+    Purpose: get the minimum accepted value of this object
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: the minimum value this object will accept.
+    Notes: use the function minset() to see if a valid
+            minimum value was stored in the object.
+    Code Example:
+
+void Rp_NumberSetMin(Rp_Number *num, double val)
+    Purpose: set the minimum accepted value of this object
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. double val - new minimum accepted value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+double Rp_NumberGetMax(Rp_Number *num)
+    Purpose: get the maximum accepted value of this object
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: the maximum value this object will accept.
+    Notes: use the function maxset() to see if a valid
+            maximum value was stored in the object.
+    Code Example:
+
+void Rp_NumberSetMax(Rp_Number *num, double val)
+    Purpose: set the maximum accepted value of this object
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. double val - new maximum accepted value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+const char* Rp_NumberGetUnits(Rp_Number *num)
+    Purpose: get the units of this object
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: the string representing the object's units
+    Notes: None
+    Code Example:
+
+void Rp_NumberSetUnits(Rp_Number *num, const char *val)
+    Purpose: set the units of this object
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *val - new units
+    Return Value: None
+    Notes: None
+    Code Example:
+
+int Rp_NumberDefaultSet(Rp_Number *num) const
+    Purpose: return whether the default value was set by the user
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: 1 if default was set by user, otherwise 0
+    Notes: None
+    Code Example:
+
+int Rp_NumberCurrentSet(Rp_Number *Num) const
+    Purpose: return whether the current value was set by the user
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: 1 if current was set by user, otherwise 0
+    Notes: None
+    Code Example:
+
+const void *Rp_NumberGetProperty (Rp_Number *num, const char *key) const;
+    Purpose: get a generic property from the property database
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void Rp_NumberSetProperty (Rp_Number *num, const char *key,
+                           const void *val, size_t nbytes);
+    Purpose: set a generic property in the property database
+    Input Arguments: 4
+        1. Rp_Number *num - pointer to Number object
+        2. const char *key - property name
+        3. const void *val - property value
+        4. size_t nbytes - size (in bytes) of the value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+const char *Rp_NumberGetPropStr (Rp_Number *num, const char *key) const;
+    Purpose: get a string property from the property database
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void Rp_NumberSetPropStr (Rp_Number *num, const char *key, const char *val);
+    Purpose: set a string property in the property database
+    Input Arguments: 3
+        1. Rp_Number *num - pointer to Number object
+        2. const char *key - property name
+        3. const char *val - property value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+void Rp_NumberPropRemove (Rp_Number *num, const char *key);
+    Purpose: remove a property from the property database
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+Outcome *Rp_NumberConvert(Rp_Number *num, const char *to);
+    Purpose: convert the def and cur values to "to" units
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *to - string of units to convert to
+    Return Value: Outcome object
+    Notes: the values stored in the object are changed
+    Code Example:
+
+double Rp_NumberValue(Rp_Number *num, const char *to) const;
+    Purpose: return the value of the object with units of "to"
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *to - string of units to convert to
+    Return Value: value of the object
+    Notes: cur() is used as the base value. if cur was not set
+            by the user (curset() == 0), def() is used.
+            if def was not set (defset() == 0), 0.0 is used
+            as the value.
+    Code Example:
+
+void Rp_NumberVValue(Rp_Number *num, void *storage, size_t numHints,
+                     va_list arg) const;
+    Purpose: return the value of the object after applying a
+                varying number of hints about how the value
+                should be configured
+    Input Arguments: 4
+        1. Rp_Number *num - pointer to Number object
+        2. void *storage - the return value
+        3. size_t numHints - number of hints provided
+        4. va_list arg - list of hints specified as a va_list
+    Return Value: None
+    Notes: vvalue will parse out the recognisable hints from
+                va_list arg. Values stored in the object are
+                not changed.
+    Code Example:
+
+void Rp_NumberRandom();
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+
+Rp_Chain *Rp_NumberDiff(const Rp_Object *o);
+    Purpose: return a linked list showing the differences between
+             this object and Rp_Object *o
+    Input Arguments: 1
+        1. const Rp_Object *o - object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+
+void Rp_NumberAddPreset(Rp_Number *num, const char *label, const char *desc,
+                        double val, const char *units);
+    Purpose: add a preset to this object
+    Input Arguments: 5
+        1. Rp_Number *num - pointer to Number object
+        2. const char *label - label of the preset
+        3. const char *desc - description of the preset
+        4. double val - value of the preset
+        5. const char *units - units of the preset
+    Return Value: None
+    Notes: presets are stored in the object in the same order
+                in which they are created
+    Code Example:
+
+void Rp_NumberAddPreset2(Rp_Number *num, const char *label, const char *desc,
+                         const char *val);
+    Purpose: add a preset to this object
+    Input Arguments: 4
+        1. Rp_Number *num - pointer to Number object
+        2. const char *label - label of the preset
+        3. const char *desc - description of the preset
+        4. const char *val - numeric value and units of the preset
+    Return Value: None
+    Notes: presets are stored in the object in the same order
+                in which they are created
+    Code Example:
+
+void Rp_NumberDelPreset(Rp_Number *num, const char *label);
+    Purpose: delete the preset labeled "label" from this object
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+        2. const char *label - label of the preset
+    Return Value: None
+    Notes: preset is removed from the object
+    Code Example:
+
+void Rp_NumberConfigure(Rp_Number *num, size_t as, ClientData c);
+    Purpose: configure the object based on the data in "c".
+                use "as" to determine the type of data in "c".
+    Input Arguments: 3
+        1. Rp_Number *num - pointer to Number object
+        2. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        3. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    const char *xmltext
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+
+void Rp_NumberDump(Rp_Number *num, size_t as, ClientData c);
+    Purpose: dump the object values based to the object "c".
+                use "as" to determine how to dump the data.
+    Input Arguments: 3
+        1. Rp_Number *num - pointer to Number object
+        2. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        3. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    ClientDataXml *object
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: None
+    Code Example:
+
+void Rp_NumberOutcome(Rp_Number *num) const;
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+
+const int Rp_NumberIs(Rp_Number *num) const;
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+    Return Value: integer tag unique to all number objects
+    Notes: None
+    Code Example:
+
+void Rp_NumberMinFromStr(Rp_Number *num, const char *val);
+    Purpose: populate the min() value from a string.
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *val - value and units for the
+                                minimum value
+    Return Value: None
+    Notes: This function tries to parse the string for a value
+            and a units string. if a units string is found and
+            no units have been set for the object, these units
+            become the units for the object. if there are
+            already units for this object, any value found
+            during the split is converted to the object's
+            units before being stored in min().
+    Code Example:
+
+void Rp_NumberMaxFromStr(Rp_Number *num, const char *val);
+    Purpose: populate the max() value from a string.
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *val - value and units for the
+                                maximum value
+    Return Value: None
+    Notes: This function tries to parse the string for a value
+            and a units string. if a units string is found and
+            no units have been set for the object, these units
+            become the units for the object. if there are
+            already units for this object, any value found
+            during the split is converted to the object's
+            units before being stored in max().
+    Code Example:
+
+void Rp_NumberDefaultFromStr(Rp_Number *num, const char *val);
+    Purpose: populate the def() value from a string.
+    Input Arguments: 2
+        1. Rp_Number *num - pointer to Number object
+        2. const char *val - value and units for the
+                                default value
+    Return Value: None
+    Notes: This function tries to parse the string for a value
+            and a units string. if a units string is found and
+            no units have been set for the object, these units
+            become the units for the object. if there are
+            already units for this object, any value found
+            during the split is converted to the object's
+            units before being stored in def().
+    Code Example:
+
+void Rp_NumberCurrentFromStr(Rp_Number *num, const char *val);
+    Purpose: populate the cur() value from a string.
+    Input Arguments: 1
+        1. Rp_Number *num - pointer to Number object
+        2. const char *val - value and units for the
+                                current value
+    Return Value: None
+    Notes: This function tries to parse the string for a value
+            and a units string. if a units string is found and
+            no units have been set for the object, these units
+            become the units for the object. if there are
+            already units for this object, any value found
+            during the split is converted to the object's
+            units before being stored in cur().
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/c/plot
===================================================================
--- /tags/1.6.0/examples/objects/api/c/plot	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/c/plot	(revision 6168)
@@ -0,0 +1,334 @@
+Plot
+
+    Rp_Plot *Rp_PlotInit(Rp_Library *lib)
+    void Rp_PlotDestroy (Rp_Plot *p);
+
+    const char *Rp_PlotGetName(Rp_Plot *p) const;
+    void Rp_PlotSetName(Rp_Plot *p, const char *val);
+
+    const char *Rp_PlotGetPath(Rp_Plot *p) const;
+    void Rp_PlotSetPath(Rp_Plot *p, const char *val);
+
+    const char *Rp_PlotGetLabel(Rp_Plot *p) const;
+    void Rp_PlotSetLabel(Rp_Plot *p, const char *val);
+
+    const char *Rp_PlotGetDesc(Rp_Plot *p) const;
+    void Rp_PlotSetDesc(Rp_Plot *p, const char *val);
+
+    const char *Rp_PlotGetHints(Rp_Plot *p) const;
+    void Rp_PlotSetHints(Rp_Plot *p, const char *val);
+
+    const char *Rp_PlotGetColor(Rp_Plot *p) const;
+    void Rp_PlotSetColor(Rp_Plot *p, const char *val);
+
+    const void *Rp_PlotGetProperty (Rp_Plot *p, const char *key) const;
+    void Rp_PlotSetProperty (Rp_Plot *p, const char *key, const void *val, size_t nbytes);
+
+    const char *Rp_PlotGetPropStr (Rp_Plot *p, const char *key) const;
+    void Rp_PlotSetPropStr (Rp_Plot *p, const char *key, const char *val);
+
+    void Rp_PlotPropRemove (Rp_Plot *p, const char *key);
+
+    void Rp_PlotAdd (Rp_Plot *p, size_t nPts, double *x, double *y,
+                      const char *fmt, const char *name);
+
+    void Rp_PlotAddCurve (Rp_Plot *p, Curve *c, const char *name);
+
+    size_t Rp_PlotCount(Rp_Plot *p) const;
+
+    Curve *Rp_PlotCurve (Rp_Plot *p, const char* name) const;
+    Curve *Rp_PlotGetNthCurve(Rp_Plot *p, size_t n) const;
+
+    void Rp_PlotVValue(Rp_Plot *p, void *storage, size_t numHints,
+                       va_list arg) const;
+    void Rp_PlotRandom();
+    Rp_Chain *Rp_PlotDiff(Rp_Plot *o);
+
+    void Rp_PlotConfigure(Rp_Plot *p, size_t as, ClientData c);
+    void Rp_PlotDump(Rp_Plot *p, size_t as, ClientData c);
+
+    Outcome *Rp_PlotOutcome(Rp_Plot *p) const;
+
+    const int Rp_PlotIs(Rp_Plot *p) const;
+
+---------------------------------------
+
+const char *Rp_PlotGetName(Rp_Plot *p)
+    Purpose: get the id name of the object
+    Input Arguments: 1
+        1. Rp_Plot *p - pointer to Plot object
+    Return Value: the id name stored in the object.
+    Notes: if no name is set, NULL will be returned
+            the id name is used to identify this object from
+            all other objects and should be unique
+    Code Example:
+
+void Rp_PlotSetName(Rp_Plot *p, const char *val)
+    Purpose: set the id name of the object
+    Input Arguments: 2
+        1. Rp_Plot *p - pointer to Plot object
+        2. const char *val - new id name
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *Rp_PlotGetPath(Rp_Plot *p)
+    Purpose: get the path of the object
+    Input Arguments: 1
+        1. Rp_Plot *p - pointer to Plot object
+    Return Value: the path stored in the object.
+    Notes: if no path is set, NULL will be returned
+            the path tells where this object sits in the
+            hierarchy of objects.
+    Code Example:
+
+void Rp_PlotGetPath(Rp_Plot *p, const char *val)
+    Purpose: set the path of the object
+    Input Arguments: 2
+        1. Rp_Plot *p - pointer to Plot object
+        2. const char *val - new path
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *Rp_PlotGetLabel(Rp_Plot *p)
+    Purpose: get the label of the object
+    Input Arguments: 1
+        1. Rp_Plot *p - pointer to Plot object
+    Return Value: the label stored in the object.
+    Notes: if no label is set, NULL will be returned
+            the label is used by the graphical user interface.
+    Code Example:
+
+void Rp_PlotSetLabel(Rp_Plot *p, const char *val)
+    Purpose: set the label of the object
+    Input Arguments: 2
+        1. Rp_Plot *p - pointer to Plot object
+        2. const char *val - new label
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *Rp_PlotGetDesc(Rp_Plot *p)
+    Purpose: get the description of the object
+    Input Arguments: 1
+        1. Rp_Plot *p - pointer to Plot object
+    Return Value: the description stored in the object.
+    Notes: if no description is set, NULL will be returned
+            the description is used by the graphical user
+            interface to describe what type of data is being
+            requested and how the input is used.
+    Code Example:
+
+void Rp_PlotSetDesc(Rp_Plot *p, const char *val)
+    Purpose: set the description of the object
+    Input Arguments: 2
+        1. Rp_Plot *p - pointer to Plot object
+        2. const char *val - new description
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *Rp_PlotGetHints(Rp_Plot *p)
+    Purpose: get the hints of the object
+    Input Arguments: 1
+        1. Rp_Plot *p - pointer to Plot object
+    Return Value: the hints stored in the object.
+    Notes: if no hints are set, NULL will be returned
+            the hints are used by the graphical user interface
+    Code Example:
+
+void Rp_PlotSetHints(Rp_Plot *p, const char *val)
+    Purpose: set the hints of the object
+    Input Arguments: 2
+        1. Rp_Plot *p - pointer to Plot object
+        2. const char *val - new hints
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const void *Rp_PlotGetProperty (Rp_Plot *p, const char *key) const;
+    Purpose: get a generic property from the property database
+    Input Arguments: 2
+        1. Rp_Plot *p - pointer to Plot object
+        2. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void Rp_PlotSetProperty (Rp_Plot *p, const char *key, const void *val, size_t nbytes);
+    Purpose: set a generic property in the property database
+    Input Arguments: 4
+        1. Rp_Plot *p - pointer to Plot object
+        2. const char *key - property name
+        3. const void *val - property value
+        4. size_t nbytes - size (in bytes) of the value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+const char *Rp_PlotGetPropStr (Rp_Plot *p, const char *key) const;
+    Purpose: get a string property from the property database
+    Input Arguments: 2
+        1. Rp_Plot *p - pointer to Plot object
+        2. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void Rp_PlotSetPropStr (Rp_Plot *p, const char *key, const char *val);
+    Purpose: set a string property in the property database
+    Input Arguments: 3
+        1. Rp_Plot *p - pointer to Plot object
+        2. const char *key - property name
+        3. const char *val - property value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+void Rp_PlotPropRemove (Rp_Plot *p, const char *key);
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. Rp_Plot *p - pointer to Plot object
+        2. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void Rp_PlotAdd (Rp_Plot *p, size_t nPts, double *x, double *y,
+                 const char *fmt, const char *name);
+    Purpose: add data for an xy curve to the plot
+    Input Arguments: 6
+        1. Rp_Plot *p - pointer to Plot object
+        2. size_t nPts - number of points in the x and y arrays
+        3. double *x - pointer to array representing the x axis
+        4. double *y - pointer to array representing the y axis
+        5. const char *fmt - format of the line
+        6. const char *name - id of the newly created curve
+    Return Value: reference to a Plot object
+    Notes: format can be something like "g:o" to represent
+            green line, dotted line style, circle marker.
+            this follows matlab's formatting rules.
+    Code Example:
+
+void Rp_PlotAddCurve (Rp_Plot *p, Curve *c, const char *name);
+    Purpose: add a Curve object to this Plot object
+    Input Arguments: 3
+        1. Rp_Plot *p - pointer to Plot object
+        2. Curve *c - Curve object to add
+        3. const char *name - id of the Curve object
+    Return Value: reference to a Plot object
+    Notes: Curve object should not be deleted by user?
+    Code Example:
+
+size_t Rp_PlotCount(Rp_Plot *p) const;
+    Purpose: retrieve the number of curves in this Plot object
+    Input Arguments: 1
+        1. Rp_Plot *p - pointer to Plot object
+    Return Value: number of curves stored in the object
+    Notes: None
+    Code Example:
+
+Curve *Rp_PlotCurve (Rp_Plot *p, const char* name) const;
+    Purpose: retrieve the curve with the id matching "name"
+    Input Arguments: 2
+        1. Rp_Plot *p - pointer to Plot object
+        2. const char *name - id to Curve to be retrieved
+    Return Value: pointer to Curve object matching "name" or NULL
+    Notes: None
+    Code Example:
+
+Curve *Rp_PlotGetNthCurve(Rp_Plot *p, size_t n) const;
+    Purpose: return the n'th curve stored in the object
+    Input Arguments: 2
+        1. Rp_Plot *p - pointer to Plot object
+        2. size_t n - number of the curve to retrieve
+    Return Value: pointer to the n'th Curve object stored in
+                    the Plot object or NULL
+    Notes: None
+    Code Example:
+
+void Rp_PlotVValue(Rp_Plot *p, void *storage, size_t numHints, va_list arg) const;
+    Purpose: return the value of the object after applying a
+                varying number of hints about how the value
+                should be configured
+    Input Arguments: 4
+        1. Rp_Plot *p - pointer to Plot object
+        2. void *storage - the return value
+        3. size_t numHints - number of hints provided
+        4. va_list arg - list of hints specified as a va_list
+    Return Value: None
+    Notes: vvalue will parse out the recognisable hints from
+                va_list arg. Values stored in the object are
+                not changed.
+    Code Example:
+
+void Rp_PlotRandom();
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+
+Rp_Chain *Rp_PlotDiff(const Rp_Object *o);
+    Purpose: return a linked list showing the differences between
+             this object and Rp_Object *o
+    Input Arguments: 1
+        1. const Rp_Object *o - object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+
+void Rp_PlotConfigure(Rp_Plot *p, size_t as, ClientData c);
+    Purpose: configure the object based on the data in "c".
+                use "as" to determine the type of data in "c".
+    Input Arguments: 3
+        1. Rp_Plot *p - pointer to Plot object
+        2. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        3. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    const char *xmltext
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+
+void Rp_PlotDump(Rp_Plot *p, size_t as, ClientData c);
+    Purpose: dump the object values based to the object "c".
+                use "as" to determine how to dump the data.
+    Input Arguments: 3
+        1. Rp_Plot *p - pointer to Plot object
+        2. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        3. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    ClientDataXml *object
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: None
+    Code Example:
+
+Outcome *Rp_PlotOutcome(Rp_Plot *p) const;
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 1
+        1. Rp_Plot *p - pointer to Plot object
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+
+const int Rp_PlotIs(Rp_Plot *p) const;
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 1
+        1. Rp_Plot *p - pointer to Plot object
+    Return Value: integer tag unique to all plot objects
+    Notes: None
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/c/view
===================================================================
--- /tags/1.6.0/examples/objects/api/c/view	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/c/view	(revision 6168)
@@ -0,0 +1,648 @@
+View
+
+    Rp_View *Rp_ViewInit(const char *name, size_t rows, size_t cols);
+    void Rp_ViewDestroy (Rp_View *v);
+
+    const char *Rp_ViewGetName(Rp_View *v) const;
+    void Rp_ViewSetName(Rp_View *v, const char *val);
+
+    const char *Rp_ViewGetPath(Rp_View *v) const;
+    void Rp_ViewSetPath(Rp_View *v, const char *val);
+
+    const char *Rp_ViewGetLabel(Rp_View *v) const;
+    void Rp_ViewSetLabel(Rp_View *v, const char *val);
+
+    const char *Rp_ViewGetDesc(Rp_View *v) const;
+    void Rp_ViewSetDesc(Rp_View *v, const char *val);
+
+    const char *Rp_ViewGetHints(Rp_View *v) const;
+    void Rp_ViewSetHints(Rp_View *v, const char *val);
+
+    const char *Rp_ViewGetColor(Rp_View *v) const;
+    void Rp_ViewSetColor(Rp_View *v, const char *val);
+
+    const void *Rp_ViewGetProperty (Rp_View *v, const char *key) const;
+    void Rp_ViewSetProperty (Rp_View *v, const char *key,
+        const void *val, size_t nbytes);
+
+    const char *Rp_ViewGetPropStr (Rp_View *v, const char *key) const;
+    void Rp_ViewSetPropStr (Rp_View *v, const char *key, const char *val);
+
+    void Rp_ViewPropRemove (Rp_View *v, const char *key);
+
+    void Rp_ViewVValue(Rp_View *v, void *storage, size_t numHints,
+        va_list arg) const;
+    void Rp_ViewRandom();
+    Rp_Chain *Rp_ViewDiff(Rp_View *v);
+
+    void Rp_ViewConfigure(Rp_View *v, size_t as, ClientData c);
+    void Rp_ViewDump(Rp_View *v, size_t as, ClientData c);
+
+    Outcome *Rp_ViewOutcome(Rp_View *v) const;
+
+    const int Rp_ViewIs(Rp_View *v) const;
+
+    void Rp_ViewPlot(Rp_View *v, const char *name, size_t row, size_t col,
+        Rp_TableColumn *x, Rp_TableColumn *y, const char *style);
+    void Rp_ViewSurf2D(Rp_View *v, const char *name, size_t row, size_t col,
+        Rp_TableColumn *x, Rp_TableColumn *y, Rp_TableColumn *data);
+    void Rp_ViewSurf3D(Rp_View *v, const char *name, size_t row, size_t col,
+        Rp_TableColumn *x, Rp_TableColumn *y, Rp_TableColumn *z, Rp_TableColumn *data);
+    void Rp_ViewImage(Rp_View *v, Rp_Image *img, size_t row, size_t col);
+    void Rp_ViewNote(Rp_View *v, Rp_Note *note, size_t row, size_t col);
+
+
+---------------------------------------
+Rp_View *Rp_ViewInit(const char *name, size_t rows, size_t cols);
+    Purpose: construct a view for displaying data
+    Input Arguments: 1 required, 2 optional
+        1. name - name of the view
+        2. rows - number of rows in the view
+        3. cols - number of columns in the view
+    Return Value: a newly created, empty view object
+    Notes: None
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+    }}}
+
+void Rp_ViewDestroy (Rp_View *v);
+    Purpose: destroy a view object
+    Input Arguments: 1 required
+        1. v - pointer to view object to destroy
+    Return Value: None
+    Notes: None
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+        Rp_ViewDistroy(v);
+        v = NULL;
+    }}}
+
+
+const char *Rp_ViewGetName(Rp_View *v)
+    Purpose: get the id name of the object
+    Input Arguments: 1
+        1. Rp_View *v - pointer to View object
+    Return Value: the id name stored in the object.
+    Notes: if no name is set, NULL will be returned
+            the id name is used to identify this object from
+            all other objects and should be unique
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+        printf("name = %s\n", Rp_ViewGetName(v));
+
+        // The string:
+        // name = fdfplots
+        // is printed to the stdout.
+    }}}
+
+void Rp_ViewSetName(Rp_View *v, const char *val)
+    Purpose: set the id name of the object
+    Input Arguments: 2
+        1. Rp_View *v - pointer to View object
+        2. const char *val - new id name
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        Rp_ViewSetName(v, "newPlots");
+        printf("name = %s\n", Rp_ViewGetName(v));
+
+        // The string:
+        // name = newPlots
+        // is printed to the stdout.
+    }}}
+
+const char *Rp_ViewGetPath(Rp_View *v)
+    Purpose: get the path of the object
+    Input Arguments: 1
+        1. Rp_View *v - pointer to View object
+    Return Value: the path stored in the object.
+    Notes: if no path is set, NULL will be returned
+            the path tells where this object sits in the
+            hierarchy of objects.
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("path = %s\n", Rp_ViewGetPath(v));
+
+        // The string:
+        // path =
+        // is printed to the stdout.
+    }}}
+
+void Rp_ViewSetPath(Rp_View *v, const char *val)
+    Purpose: set the path of the object
+    Input Arguments: 2
+        1. Rp_View *v - pointer to View object
+        2. const char *val - new path
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("path = %s\n", Rp_ViewGetPath(v));
+        Rp_ViewSetPath(v, "output");
+        printf("path = %s\n", Rp_ViewGetPath(v));
+
+        // The strings:
+        // path =
+        // path = output
+        // are printed to the stdout.
+    }}}
+
+const char *Rp_ViewGetLabel(Rp_View *v)
+    Purpose: get the label of the object
+    Input Arguments: 1
+        1. Rp_View *v - pointer to View object
+    Return Value: the label stored in the object.
+    Notes: if no label is set, NULL will be returned
+            the label is used by the graphical user interface.
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("label = %s\n", Rp_ViewGetLabel(v));
+
+        // The string:
+        // label =
+        // is printed to the stdout.
+    }}}
+
+void Rp_ViewSetLabel(Rp_View *v, const char *val)
+    Purpose: set the label of the object
+    Input Arguments: 2
+        1. Rp_View *v - pointer to View object
+        2. const char *val - new label
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("label = %s\n", Rp_ViewGetLabel(v));
+        Rp_ViewSetLabel(v, "Fermi-Dirac Factor");
+        printf("label = %s\n", Rp_ViewGetLabel(v));
+
+        // The strings:
+        // label =
+        // label = Fermi-Dirac Factor
+        // are printed to the stdout.
+    }}}
+
+const char *Rp_ViewGetDesc(Rp_View *v)
+    Purpose: get the description of the object
+    Input Arguments: 1
+        1. Rp_View *v - pointer to View object
+    Return Value: the description stored in the object.
+    Notes: if no description is set, NULL will be returned
+           the description is used by the graphical user
+           interface to describe what type of data is being
+           requested and how the input is used.
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("desc = %s\n", Rp_ViewGetDesc(v));
+
+        // The string:
+        // desc =
+        // is printed to the stdout.
+    }}}
+
+void Rp_ViewSetDesc(Rp_View *v, const char *val)
+    Purpose: set the description of the object
+    Input Arguments: 2
+        1. Rp_View *v - pointer to View object
+        2. const char *val - new description
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("desc = %s\n", Rp_ViewGetDesc(v));
+        Rp_ViewSetDesc(v, "A plot of the Fermi-Dirac Factor");
+        printf("desc = %s\n", Rp_ViewGetDesc(v));
+
+        // The strings:
+        // desc =
+        // desc = A plot of the Fermi-Dirac Factor
+        // are printed to the stdout.
+    }}}
+
+const char *Rp_ViewGetHints(Rp_View *p)
+    Purpose: get the hints of the object
+    Input Arguments: 1
+        1. Rp_View *v - pointer to View object
+    Return Value: the hints stored in the object.
+    Notes: if no hints are set, NULL will be returned
+            the hints are used by the graphical user interface
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("hints = %s\n", Rp_ViewGetHints(v));
+
+        // The string:
+        // hints =
+        // is printed to the stdout.
+    }}}
+
+void Rp_ViewSetHints(Rp_View *v, const char *val)
+    Purpose: set the hints of the object
+    Input Arguments: 2
+        1. Rp_View *p - pointer to View object
+        2. const char *val - new hints
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("hints = %s\n", Rp_ViewGetHints(v));
+        Rp_ViewSetHints(v, "no hints");
+        printf("hints = %s\n", Rp_ViewGetHints(v));
+
+        // The strings:
+        // hints =
+        // hints = no hints
+        // are printed to the stdout.
+    }}}
+
+const void *Rp_ViewGetProperty (Rp_View *v, const char *key) const;
+    Purpose: get a generic property from the property database
+    Input Arguments: 2
+        1. Rp_View *v - pointer to View object
+        2. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("label = %s\n", Rp_ViewGetProperty(v,"label"));
+
+        // The string:
+        // label =
+        // is printed to the stdout.
+    }}}
+
+void Rp_ViewSetProperty (Rp_View *v, const char *key, const void *val, size_t nbytes);
+    Purpose: set a generic property in the property database
+    Input Arguments: 4
+        1. Rp_View *v - pointer to View object
+        2. const char *key - property name
+        3. const void *val - property value
+        4. size_t nbytes - size (in bytes) of the value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("label = %s\n", Rp_ViewGetProperty(v,"label"));
+        Rp_ViewSetProperty(v, "label", "Fermi-Dirac Factor", 19);
+        printf("label = %s\n", Rp_ViewGetProperty(v, "label"));
+
+        // The strings:
+        // label =
+        // label = Fermi-Dirac Factor
+        // are printed to the stdout.
+    }}}
+
+const char *Rp_ViewGetPropStr (Rp_View *v, const char *key) const;
+    Purpose: get a string property from the property database
+    Input Arguments: 2
+        1. Rp_View *v - pointer to View object
+        2. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("label = %s\n", Rp_ViewGetPropStr(v,"label"));
+
+        // The string:
+        // label =
+        // is printed to the stdout.
+    }}}
+
+void Rp_ViewSetPropStr (Rp_View *p, const char *key, const char *val);
+    Purpose: set a string property in the property database
+    Input Arguments: 3
+        1. Rp_View *p - pointer to View object
+        2. const char *key - property name
+        3. const char *val - property value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        printf("label = %s\n", Rp_ViewGetPropStr(v,"label"));
+        Rp_ViewSetPropStr(v, "label", "Fermi-Dirac Factor");
+        printf("label = %s\n", Rp_ViewGetPropStr(v, "label"));
+
+        // The strings:
+        // label =
+        // label = Fermi-Dirac Factor
+        // are printed to the stdout.
+    }}}
+
+void Rp_ViewPropRemove (Rp_View *v, const char *key);
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. Rp_View *p - pointer to View object
+        2. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+    {{{
+        Rp_View *v = Rp_ViewInit("fdfplots", 2, 1);
+
+        Rp_ViewName(v, "fdfactor");
+        printf("name = %s\n", Rp_ViewGetPropStr(v, "name"));
+        Rp_ViewPropRemove(v, "name");
+        printf("name = %s\n", Rp_ViewGetPropStr(v, "name"));
+
+        // The strings:
+        // name = fdfactor
+        // name =
+        // are printed to the stdout.
+    }}}
+
+void Rp_ViewVValue(Rp_View *v, void *storage, size_t numHints, va_list arg) const;
+    Purpose: return the value of the object after applying a
+                varying number of hints about how the value
+                should be configured
+    Input Arguments: 4
+        1. Rp_View *v - pointer to View object
+        2. void *storage - the return value
+        3. size_t numHints - number of hints provided
+        4. va_list arg - list of hints specified as a va_list
+    Return Value: None
+    Notes: vvalue will parse out the recognisable hints from
+                va_list arg. Values stored in the object are
+                not changed.
+    Code Example:
+
+void Rp_ViewRandom();
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+
+Rp_Chain *Rp_ViewDiff(const Rp_Object *o);
+    Purpose: return a linked list showing the differences between
+             this object and Rp_Object *o
+    Input Arguments: 1
+        1. const Rp_Object *o - object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+
+void Rp_ViewConfigure(Rp_View *v, size_t as, ClientData c);
+    Purpose: configure the object based on the data in "c".
+                use "as" to determine the type of data in "c".
+    Input Arguments: 3
+        1. Rp_View *v - pointer to View object
+        2. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        3. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    const char *xmltext
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+
+void Rp_ViewDump(Rp_View *v, size_t as, ClientData c);
+    Purpose: dump the object values based to the object "c".
+                use "as" to determine how to dump the data.
+    Input Arguments: 3
+        1. Rp_View *v - pointer to View object
+        2. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        3. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    ClientDataXml *object
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: None
+    Code Example:
+
+Outcome *Rp_ViewOutcome(Rp_View *p) const;
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 1
+        1. Rp_View *v - pointer to View object
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+
+const int Rp_ViewIs(Rp_View *v) const;
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 1
+        1. Rp_View *v - pointer to View object
+    Return Value: integer tag unique to all plot objects
+    Notes: None
+    Code Example:
+
+void Rp_ViewPlot(Rp_View *v, const char *name, size_t row, size_t col,
+    Rp_TableColumn *x, Rp_TableColumn *y, const char *s);
+    Purpose: populate a view object with a plot
+    Input Arguments: 8 required
+        1. v - pointer to View object
+        2. name - name of the plot within the view
+        3. row - row position of the plot within the view
+        4. col - column position of the plot within the view
+        5. x - table column to be used as X axis
+        6. y - table column to be used as Y axis
+        7. s - line style of the x/y data
+    Return Value: None
+    Notes: plots can be grouped together by specifying
+           the same name, row, and column position for
+           the plot over multiple calls to Rp_ViewPlot.
+           Example:
+           Rp_ViewPlot(v,"plot1",2,1,resultsTable,"X1","Y1","g:o");
+           Rp_ViewPlot(v,"plot1",2,1,resultsTable,"X1","Y2","b-o");
+    Code Example:
+    {{{
+        Rp_Table *results = NULL;
+        Rp_TableColumn *x1 = NULL;
+        Rp_TableColumn *y1 = NULL;
+        Rp_TableColumn *y2 = NULL;
+        Rp_View *v1 = NULL;
+        Rp_View *v2 = NULL;
+        Rp_View *v3 = NULL;
+
+        results = Rp_TableInit("dataTable")
+        x1 = Rp_TableColumnInit(results, "Xvals", "X Values");
+        y1 = Rp_TableColumnInit(results, "Squared", "X Squared");
+        y2 = Rp_TableColumnInit(results, "Cubed", "X Cubed");
+
+        // view with two curves grouped on a single plot
+        // 1) x vs x^2
+        // 2) x vs x^3
+        v1 = Rp_ViewInit("fdfview1");
+        Rp_ViewPlot(v1, "fdfPlot1", 1, 1, x1, y1, "g:o");
+        Rp_ViewPlot(v1, "fdfPlot1", 1, 1, x1, y2, "b-o");
+
+        // view with two plots, one stacked on top of the other
+        // 1) x vs x^2
+        // 2) x vs x^3
+        v2 = Rp_ViewInit("fdfview2");
+        Rp_ViewPlot(v2, "fdfPlot2", 1, 1, x1, y1, "g:o");
+        Rp_ViewPlot(v2, "fdfPlot3", 2, 1, x1, y2, "b-o");
+
+        # create a view with two plots side by side
+        # 1) x vs x^2   2) x vs x^3
+        v3 = Rp_ViewInit("fdfview3");
+        Rp_ViewPlot(v3, "fdfPlot4", 1, 1, x1, y1, "g:o");
+        Rp_ViewPlot(v3, "fdfPlot5", 1, 2, x1, y2, "b-o");
+    }}}
+
+void Rp_ViewSurf2D(Rp_View *v, const char *name, size_t row, size_t col,
+    Rp_TableColumn *x, Rp_TableColumn *y, Rp_TableColumn *data);
+    Purpose: populate a view object with a 2 dimensional surface
+    Input Arguments: 8 required
+        1. v - pointer to View object
+        2. name - name of the 2d surface within the view
+        3. row - row position of the 2d surface within the view
+        4. col - column position of the 2d surface within the view
+        5. table - name of the table holding the data
+        6. x - column name from table to be used as X axis
+        7. y - column name from table to be used as Y axis
+        8. d - column name from table to be used as data
+    Return Value: None
+    Notes: 2D surfaces can be grouped together by specifying
+           the same row and column position for the 2D Surface
+           over multiple calls to Rp_ViewSurf2D
+           Example:
+           Rp_ViewSurf2D(v,"surf1",2,1,resultsTable,x1,y1,d1);
+           Rp_ViewSurf2D(v,"surf2",2,1,resultsTable,x1,y1,d2);
+    ToDo:
+        1. how to specify transfer function ranges
+            Rp_Surface2DTransfer(...);
+        2. how to specify uni rect grid instead of explicit points
+            - three values in the coords columns is assumed to be
+              the min, max, and step for that direction of the
+              uniform rectangular grid?  Perhaps a function like:
+              Rp_TableColumn *Rp_TableUniformColumnInit(size_t min,
+                  size_t max, size_t step);
+    Code Example:
+    {{{
+        Rp_Table *results = NULL;
+        Rp_TableColumn *x1 = NULL;
+        Rp_TableColumn *y1 = NULL;
+        Rp_TableColumn *d1 = NULL;
+        Rp_TableColumn *d2 = NULL;
+        Rp_View *v1 = NULL;
+        Rp_View *v2 = NULL;
+        Rp_View *v3 = NULL;
+
+        results = Rp_TableInit("dataTable")
+        x1 = Rp_TableColumnInit(results, "Xpositions", "X Positions");
+        y1 = Rp_TableColumnInit(results, "Ypositions", "Y Positions");
+        d1 = Rp_TableColumnInit(results, "S1Data", "Surface 1 Data");
+        d2 = Rp_TableColumnInit(results, "S2Data", "Surface 2 Data");
+
+        // view with two 2D surfaces grouped in a single vizualization window
+        v1 = Rp_ViewInit("fdfview1");
+        Rp_ViewSurf2D(v1, "fdfSurf1", 1, 1, x1, y1, d1);
+        Rp_ViewSurf2D(v1, "fdfSurf2", 1, 1, x1, y1, d2);
+
+        // view with two 2D surfaces, one stacked on top of the other
+        v2 = Rp_ViewInit("fdfview2");
+        Rp_ViewSurf2D(v2, "fdfSurf3", 1, 1, x1, y1, d1);
+        Rp_ViewSurf2D(v2, "fdfSurf4", 2, 1, x1, y2, d2);
+
+        # create a view with two 2D surfaces side by side
+        v3 = Rp_ViewInit("fdfview3");
+        Rp_ViewSurf2D(v3, "fdfSurf5", 1, 1, x1, y1, d1);
+        Rp_ViewSurf2D(v3, "fdfSurf6", 1, 2, x1, y1, d2);
+    }}}
+
+void Rp_ViewSurf3D(Rp_View *v, const char *name, size_t row, size_t col,
+    Rp_TableColumn *x, Rp_TableColumn *y, Rp_TableColumn *z, Rp_TableColumn *data);
+    Purpose: populate a view object with a 3 dimensional surface
+    Input Arguments: 9 required
+        1. v - pointer to View object
+        2. name - name of the 3d surface within the view
+        3. row - row position of the 3d surface within the view
+        4. col - column position of the 3d surface within the view
+        5. table - name of the table holding the data
+        6. x - column name from table to be used as X axis
+        7. y - column name from table to be used as Y axis
+        8. z - column name from table to be used as Z axis
+        9. d - column name from table to be used as data
+    Return Value: None
+    Notes: 3D surfaces can be grouped together by specifying
+           the same row, and column position for the 3D Surface
+           over multiple calls to Rp_ViewSurf3D
+           Example:
+           Rp_ViewSurf3D(v,"surf1",2,1,resultsTable,x1,y1,z1,d1);
+           Rp_ViewSurf3D(v,"surf2",2,1,resultsTable,x1,y1,z1,d2);
+    ToDo:
+        1. how to specify transfer function ranges
+            Rp_Surface2DTransfer(...);
+        2. how to specify uni rect grid instead of explicit points
+            - three values in the coords columns is assumed to be
+              the min, max, and step for that direction of the
+              uniform rectangular grid?  Perhaps a function like:
+              Rp_TableColumn *Rp_TableUniformColumnInit(size_t min,
+                  size_t max, size_t step);
+    Code Example:
+    {{{
+        Rp_Table *results = NULL;
+        Rp_TableColumn *x1 = NULL;
+        Rp_TableColumn *y1 = NULL;
+        Rp_TableColumn *z1 = NULL;
+        Rp_TableColumn *d1 = NULL;
+        Rp_TableColumn *d2 = NULL;
+        Rp_View *v1 = NULL;
+        Rp_View *v2 = NULL;
+        Rp_View *v3 = NULL;
+
+        results = Rp_TableInit("dataTable")
+        x1 = Rp_TableColumnInit(results, "Xpositions", "X Positions");
+        y1 = Rp_TableColumnInit(results, "Ypositions", "Y Positions");
+        z1 = Rp_TableColumnInit(results, "Zpositions", "Z Positions");
+        d1 = Rp_TableColumnInit(results, "S1Data", "Surface 1 Data");
+        d2 = Rp_TableColumnInit(results, "S2Data", "Surface 2 Data");
+
+        // view with two 3D surfaces grouped in a single vizualization window
+        v1 = Rp_ViewInit("fdfview1");
+        Rp_ViewSurf3D(v1, "fdfSurf1", 1, 1, x1, y1, z1, d1);
+        Rp_ViewSurf3D(v1, "fdfSurf1", 1, 1, x1, y1, z1, d2);
+
+        // view with two 3D surfaces, one stacked on top of the other
+        v2 = Rp_ViewInit("fdfview2");
+        Rp_ViewSurf3D(v2, "fdfSurf2", 1, 1, x1, y1, z1, d1);
+        Rp_ViewSurf3D(v2, "fdfSurf3", 2, 1, x1, y2, z1, d2);
+
+        # create a view with two 3D surfaces side by side
+        v3 = Rp_ViewInit("fdfview3");
+        Rp_ViewSurf3D(v3, "fdfSurf4", 1, 1, x1, y1, z1, d1);
+        Rp_ViewSurf3D(v3, "fdfSurf5", 1, 2, x1, y1, z1, d2);
+    }}}
+
+void Rp_ViewImage(Rp_View *v, Rp_Image *img, size_t row, size_t col);
+
+void Rp_ViewNote(Rp_View *v, Rp_Note *note, size_t row, size_t col);
Index: /tags/1.6.0/examples/objects/api/cpp/boolean
===================================================================
--- /tags/1.6.0/examples/objects/api/cpp/boolean	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/cpp/boolean	(revision 6168)
@@ -0,0 +1,340 @@
+Boolean
+
+constructors/destructors
+    Boolean()
+    Boolean(const char *name, bool val);
+    Boolean(const char *name, bool val, const char *label,
+                const char *desc);
+    Boolean(const Boolean& o);
+    ~Boolean ();
+
+methods
+    const char *name() const;
+    void name(const char *val);
+
+    const char *path() const;
+    void path(const char *val);
+
+    const char *label() const;
+    void label(const char *val);
+
+    const char *desc() const;
+    void desc(const char *val);
+
+    const char *hints() const;
+    void hints(const char *val);
+
+    const char *color() const;
+    void color(const char *val);
+
+    bool def() const;
+    void def(bool val);
+
+    bool cur() const;
+    void cur(bool val);
+
+    int defset() const;
+    int curset() const;
+
+    const void *property (const char *key) const;
+    void property (const char *key, const void *val, size_t nbytes);
+
+    const char *propstr (const char *key) const;
+    void propstr (const char *key, const char *val);
+
+    void propremove (const char *key);
+
+    void vvalue(void *storage, size_t numHints, va_list arg) const;
+    void random();
+    Rp_Chain *diff(const Object& o);
+
+    void configure(size_t as, ClientData c);
+    void dump(size_t as, ClientData c);
+
+    Outcome &outcome() const;
+
+    const int is() const;
+
+    void defFromStr(const char *val);
+    void curFromStr(const char *val);
+
+---------------------------------------
+
+const char *name()
+    Purpose: get the id name of the object
+    Input Arguments: None
+    Return Value: the id name stored in the object.
+    Notes: if no name is set, NULL will be returned
+            the id name is used to identify this object from
+            all other objects and should be unique
+    Code Example:
+
+void name(const char *val)
+    Purpose: set the id name of the object
+    Input Arguments: 1
+        1. const char *val - new id name
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *path()
+    Purpose: get the path of the object
+    Input Arguments: None
+    Return Value: the path stored in the object.
+    Notes: if no path is set, NULL will be returned
+            the path tells where this object sits in the
+            hierarchy of objects.
+    Code Example:
+
+void path(const char *val)
+    Purpose: set the path of the object
+    Input Arguments: 1
+        1. const char *val - new path
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *label()
+    Purpose: get the label of the object
+    Input Arguments: None
+    Return Value: the label stored in the object.
+    Notes: if no label is set, NULL will be returned
+            the label is used by the graphical user interface.
+    Code Example:
+
+void label(const char *val)
+    Purpose: set the label of the object
+    Input Arguments: 1
+        1. const char *val - new label
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *desc()
+    Purpose: get the description of the object
+    Input Arguments: None
+    Return Value: the description stored in the object.
+    Notes: if no description is set, NULL will be returned
+            the description is used by the graphical user
+            interface to describe what type of data is being
+            requested and how the input is used.
+    Code Example:
+
+void desc(const char *val)
+    Purpose: set the description of the object
+    Input Arguments: 1
+        1. const char *val - new description
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *hints()
+    Purpose: get the hints of the object
+    Input Arguments: None
+    Return Value: the hints stored in the object.
+    Notes: if no hints are set, NULL will be returned
+            the hints are used by the graphical user interface
+    Code Example:
+
+void hints(const char *val)
+    Purpose: set the hints of the object
+    Input Arguments: 1
+        1. const char *val - new hints
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+bool def()
+    Purpose: get the default value
+    Input Arguments: None
+    Return Value: the default value stored in the object.
+    Notes: None
+    Code Example:
+
+void def(bool val)
+    Purpose: set the default value
+    Input Arguments: 1
+        1. bool val - new default value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+bool cur()
+    Purpose: get the current value
+    Input Arguments: None
+    Return Value: the current value stored in the object.
+    Notes: None
+    Code Example:
+
+void cur(bool val)
+    Purpose: set the current value
+    Input Arguments: 1
+        1. bool val - new current value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+int defset() const
+    Purpose: return whether the default value was set by the user
+    Input Arguments: None
+    Return Value: 1 if default was set by user, otherwise 0
+    Notes: None
+    Code Example:
+
+int curset() const
+    Purpose: return whether the current value was set by the user
+    Input Arguments: None
+    Return Value: 1 if current was set by user, otherwise 0
+    Notes: None
+    Code Example:
+
+const void *property (const char *key) const;
+    Purpose: get a generic property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void property (const char *key, const void *val, size_t nbytes);
+    Purpose: set a generic property in the property database
+    Input Arguments: 3
+        1. const char *key - property name
+        2. const void *val - property value
+        3. size_t nbytes - size (in bytes) of the value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+const char *propstr (const char *key) const;
+    Purpose: get a string property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void propstr (const char *key, const char *val);
+    Purpose: set a string property in the property database
+    Input Arguments: 2
+        1. const char *key - property name
+        2. const char *val - property value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+void propremove (const char *key);
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void vvalue(void *storage, size_t numHints, va_list arg) const;
+    Purpose: return the value of the object after applying a
+                varying number of hints about how the value
+                should be configured
+    Input Arguments: 3
+        1. void *storage - the return value
+        2. size_t numHints - number of hints provided
+        3. va_list arg - list of hints specified as a va_list
+    Return Value: None
+    Notes: vvalue will parse out the recognisable hints from
+                va_list arg. Values stored in the object are
+                not changed.
+    Code Example:
+
+void random();
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+
+Rp_Chain *diff(const Rp_Object &o);
+    Purpose: return a linked list showing the differences between
+             this object and Rp_Object &o
+    Input Arguments: 1
+        1. const Rp_Object &o - object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+
+void configure(size_t as, ClientData c);
+    Purpose: configure the object based on the data in "c".
+                use "as" to determine the type of data in "c".
+    Input Arguments: 2
+        1. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        2. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    const char *xmltext
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+
+void dump(size_t as, ClientData c);
+    Purpose: dump the object values based to the object "c".
+                use "as" to determine how to dump the data.
+    Input Arguments: 2
+        1. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        2. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    ClientDataXml *object
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: None
+    Code Example:
+
+Outcome &outcome() const;
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 0
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+
+const int is() const;
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 0
+    Return Value: integer tag unique to all number objects
+    Notes: None
+    Code Example:
+
+void defFromStr(const char *val);
+    Purpose: populate the def() value from a string.
+    Input Arguments: 1
+        1. const char *val - the new default value
+    Return Value: None
+    Notes: This function tries to parse the string for a value
+            that can be evaluated as a boolean. It evaluates
+            case insensitive versions of the strings "true", "1"
+            "yes", and "on" as positives boolean expressions.
+            Case insensitive version of the strings "false",
+            "0", "no", and "off" are evaluated as negative
+            boolean expressions.
+    Code Example:
+
+void curFromStr(const char *val);
+    Purpose: populate the cur() value from a string.
+    Input Arguments: 1
+        1. const char *val - the new current value
+    Return Value: None
+    Notes: This function tries to parse the string for a value
+            that can be evaluated as a boolean. It evaluates
+            case insensitive versions of the strings "true", "1"
+            "yes", and "on" as positives boolean expressions.
+            Case insensitive version of the strings "false",
+            "0", "no", and "off" are evaluated as negative
+            boolean expressions.
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/cpp/choice
===================================================================
--- /tags/1.6.0/examples/objects/api/cpp/choice	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/cpp/choice	(revision 6168)
@@ -0,0 +1,340 @@
+Choice
+
+constructors/destructors
+    Choice()
+    Choice(const char *name, const char *val);
+    Choice(const char *name, const char *val,
+           const char *label, const char *desc);
+    Choice(const Number& o);
+    ~Choice ();
+
+methods
+    const char *name() const;
+    void name(const char *val);
+
+    const char *path() const;
+    void path(const char *val);
+
+    const char *label() const;
+    void label(const char *val);
+
+    const char *desc() const;
+    void desc(const char *val);
+
+    const char *hints() const;
+    void hints(const char *val);
+
+    const char *color() const;
+    void color(const char *val);
+
+    const char *def() const;
+    void def(const char *val);
+
+    const char *cur() const;
+    void cur(const char *val);
+
+    int defset() const;
+    int curset() const;
+
+    const void *property (const char *key) const;
+    void property (const char *key, const void *val, size_t nbytes);
+
+    const char *propstr (const char *key) const;
+    void propstr (const char *key, const char *val);
+
+    void propremove (const char *key);
+
+    void vvalue(void *storage, size_t numHints, va_list arg) const;
+    void random();
+    Rp_Chain *diff(const Object& o);
+
+
+    Choice& addPreset(const char *label, const char *desc,
+                      const char *val);
+
+    Choice& delPreset(const char *label);
+
+    void configure(size_t as, ClientData c);
+    void dump(size_t as, ClientData c);
+
+    Outcome &outcome() const;
+
+    const int is() const;
+
+
+---------------------------------------
+
+const char *name()
+    Purpose: get the id name of the object
+    Input Arguments: None
+    Return Value: the id name stored in the object.
+    Notes: if no name is set, NULL will be returned
+            the id name is used to identify this object from
+            all other objects and should be unique
+    Code Example:
+
+void name(const char *val)
+    Purpose: set the id name of the object
+    Input Arguments: 1
+        1. const char *val - new id name
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *path()
+    Purpose: get the path of the object
+    Input Arguments: None
+    Return Value: the path stored in the object.
+    Notes: if no path is set, NULL will be returned
+            the path tells where this object sits in the
+            hierarchy of objects.
+    Code Example:
+
+void path(const char *val)
+    Purpose: set the path of the object
+    Input Arguments: 1
+        1. const char *val - new path
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *label()
+    Purpose: get the label of the object
+    Input Arguments: None
+    Return Value: the label stored in the object.
+    Notes: if no label is set, NULL will be returned
+            the label is used by the graphical user interface.
+    Code Example:
+
+void label(const char *val)
+    Purpose: set the label of the object
+    Input Arguments: 1
+        1. const char *val - new label
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *desc()
+    Purpose: get the description of the object
+    Input Arguments: None
+    Return Value: the description stored in the object.
+    Notes: if no description is set, NULL will be returned
+            the description is used by the graphical user
+            interface to describe what type of data is being
+            requested and how the input is used.
+    Code Example:
+
+void desc(const char *val)
+    Purpose: set the description of the object
+    Input Arguments: 1
+        1. const char *val - new description
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *hints()
+    Purpose: get the hints of the object
+    Input Arguments: None
+    Return Value: the hints stored in the object.
+    Notes: if no hints are set, NULL will be returned
+            the hints are used by the graphical user interface
+    Code Example:
+
+void hints(const char *val)
+    Purpose: set the hints of the object
+    Input Arguments: 1
+        1. const char *val - new hints
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *def() const;
+    Purpose: get the default value
+    Input Arguments: None
+    Return Value: label of the default value stored in the
+                    object.
+    Notes: use the function defset() to see if a valid
+            default value was stored in the object.
+    Code Example:
+
+void def(const char *val);
+    Purpose: set the default value
+    Input Arguments: 1
+        1. const char *val - label of the new default value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+const char *cur() const;
+    Purpose: get the current value
+    Input Arguments: None
+    Return Value: label of the current value stored in the
+                    object.
+    Notes: use the function curset() to see if a valid
+            default value was stored in the object.
+    Code Example:
+
+void cur(const char *val);
+    Purpose: set the current value
+    Input Arguments: 1
+        1. const char *val - label of the new current value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+int defset() const
+    Purpose: return whether the default value was set by the user
+    Input Arguments: None
+    Return Value: 1 if default was set by user, otherwise 0
+    Notes: None
+    Code Example:
+
+int curset() const
+    Purpose: return whether the current value was set by the user
+    Input Arguments: None
+    Return Value: 1 if current was set by user, otherwise 0
+    Notes: None
+    Code Example:
+
+const void *property (const char *key) const;
+    Purpose: get a generic property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void property (const char *key, const void *val, size_t nbytes);
+    Purpose: set a generic property in the property database
+    Input Arguments: 3
+        1. const char *key - property name
+        2. const void *val - property value
+        3. size_t nbytes - size (in bytes) of the value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+const char *propstr (const char *key) const;
+    Purpose: get a string property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void propstr (const char *key, const char *val);
+    Purpose: set a string property in the property database
+    Input Arguments: 2
+        1. const char *key - property name
+        2. const char *val - property value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+void propremove (const char *key);
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void vvalue(void *storage, size_t numHints, va_list arg) const;
+    Purpose: return the value of the object after applying a
+                varying number of hints about how the value
+                should be configured
+    Input Arguments: 3
+        1. void *storage - the return value
+        2. size_t numHints - number of hints provided
+        3. va_list arg - list of hints specified as a va_list
+    Return Value: None
+    Notes: vvalue will parse out the recognisable hints from
+                va_list arg. Values stored in the object are
+                not changed.
+    Code Example:
+
+void random();
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+
+Rp_Chain *diff(const Rp_Object &o);
+    Purpose: return a linked list showing the differences between
+             this object and Rp_Object &o
+    Input Arguments: 1
+        1. const Rp_Object &o - object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+
+Choice& addPreset(const char *label, const char *desc,
+                  const char *val);
+    Purpose: add a preset to this object
+    Input Arguments: 3
+        1. const char *label - label of the preset
+        2. const char *desc - description of the preset
+        3. const char *val - numeric value and units of the preset
+    Return Value: None
+    Notes: presets are stored in the object in the same order
+                in which they are created
+    Code Example:
+
+Choice& delPreset(const char *label);
+    Purpose: delete the preset labeled "label" from this object
+    Input Arguments: 1
+        1. const char *label - label of the preset
+    Return Value: None
+    Notes: preset is removed from the object
+    Code Example:
+
+void configure(size_t as, ClientData c);
+    Purpose: configure the object based on the data in "c".
+                use "as" to determine the type of data in "c".
+    Input Arguments: 2
+        1. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        2. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    const char *xmltext
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+
+void dump(size_t as, ClientData c);
+    Purpose: dump the object values based to the object "c".
+                use "as" to determine how to dump the data.
+    Input Arguments: 2
+        1. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        2. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    ClientDataXml *object
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: None
+    Code Example:
+
+Outcome &outcome() const;
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 0
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+
+const int is() const;
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 0
+    Return Value: integer tag unique to all number objects
+    Notes: None
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/cpp/curve
===================================================================
--- /tags/1.6.0/examples/objects/api/cpp/curve	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/cpp/curve	(revision 6168)
@@ -0,0 +1,347 @@
+Curve
+
+constructors/destructors
+    Curve()
+    Curve(const char *name);
+    Curve(const char *name, const char *label,
+            const char *desc, const char *group);
+    Curve(const Curve& o);
+    ~Curve ();
+
+methods
+    const char *name() const;
+    void name(const char *val);
+
+    const char *path() const;
+    void path(const char *val);
+
+    const char *label() const;
+    void label(const char *val);
+
+    const char *desc() const;
+    void desc(const char *val);
+
+    const char *hints() const;
+    void hints(const char *val);
+
+    const char *color() const;
+    void color(const char *val);
+
+    Array1D *axis(const char *name, const char *label,
+                  const char *desc, const char *units,
+                  const char *scale, const char *val, size_t size);
+
+    Curve& delAxis(const char *name);
+
+    size_t data(const char *label, const double **arr) const;
+
+    Array1D *getAxis(const char *name) const;
+
+    Array1D *getNthAxis(size_t n) const;
+
+    const char *group() const;
+    void group(const char *g);
+
+    size_t dims() const;
+
+    const void *property (const char *key) const;
+    void property (const char *key, const void *val, size_t nbytes);
+
+    const char *propstr (const char *key) const;
+    void propstr (const char *key, const char *val);
+
+    void propremove (const char *key);
+
+    void vvalue(void *storage, size_t numHints, va_list arg) const;
+    void random();
+    Rp_Chain *diff(const Object& o);
+
+    void configure(size_t as, ClientData c);
+    void dump(size_t as, ClientData c);
+
+    Outcome &outcome() const;
+
+    const int is() const;
+
+---------------------------------------
+
+const char *name()
+    Purpose: get the id name of the object
+    Input Arguments: None
+    Return Value: the id name stored in the object.
+    Notes: if no name is set, NULL will be returned
+            the id name is used to identify this object from
+            all other objects and should be unique
+    Code Example:
+
+void name(const char *val)
+    Purpose: set the id name of the object
+    Input Arguments: 1
+        1. const char *val - new id name
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *path()
+    Purpose: get the path of the object
+    Input Arguments: None
+    Return Value: the path stored in the object.
+    Notes: if no path is set, NULL will be returned
+            the path tells where this object sits in the
+            hierarchy of objects.
+    Code Example:
+
+void path(const char *val)
+    Purpose: set the path of the object
+    Input Arguments: 1
+        1. const char *val - new path
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *label()
+    Purpose: get the label of the object
+    Input Arguments: None
+    Return Value: the label stored in the object.
+    Notes: if no label is set, NULL will be returned
+            the label is used by the graphical user interface.
+    Code Example:
+
+void label(const char *val)
+    Purpose: set the label of the object
+    Input Arguments: 1
+        1. const char *val - new label
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *desc()
+    Purpose: get the description of the object
+    Input Arguments: None
+    Return Value: the description stored in the object.
+    Notes: if no description is set, NULL will be returned
+            the description is used by the graphical user
+            interface to describe what type of data is being
+            requested and how the input is used.
+    Code Example:
+
+void desc(const char *val)
+    Purpose: set the description of the object
+    Input Arguments: 1
+        1. const char *val - new description
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *hints()
+    Purpose: get the hints of the object
+    Input Arguments: None
+    Return Value: the hints stored in the object.
+    Notes: if no hints are set, NULL will be returned
+            the hints are used by the graphical user interface
+    Code Example:
+
+void hints(const char *val)
+    Purpose: set the hints of the object
+    Input Arguments: 1
+        1. const char *val - new hints
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+Array1D *axis(const char *name, const char *label,
+              const char *desc, const char *units,
+              const char *scale, const char *val, size_t size);
+    Purpose: get a generic property from the property database
+    Input Arguments: 7
+        1. const char *name - axis id
+        2. const char *label - axis label
+        3. const char *desc - description of axis
+        4. const char *units - units of axis
+        5. const char *scale - scale of axis
+        6. const double *val - array of data values as doubles
+        7. size_t size - number of data values
+    Return Value: pointer to newly created Array1D object
+    Notes: valid options for scale are "log" and NULL. The newly
+           created Array1D object is stored in the Curve object.
+    Code Example:
+
+Curve& delAxis(const char *name);
+    Purpose: delete an axis stored in the object with the id
+                matching the string stored in "name".
+    Input Arguments: 1
+        1. const char *name - id of the axis to delete
+    Return Value: None
+    Notes: memory for the Array1D object is free'd
+    Code Example:
+
+size_t data(const char *label, const double **arr) const;
+    Purpose: retrieve the data associated with the axis named "label".
+    Input Arguments: 2
+        1. const char *label - name of axis holding the data
+        2. const double **arr - pointer to returned data
+    Return Value: number of elements in the returned array *arr
+    Notes: None
+    Code Example:
+
+Array1D *getAxis(const char *name) const;
+    Purpose: retrieve a pointer to a Array1D object representing
+                the axis named "name"
+    Input Arguments: 1
+        1. const char *name - name of the axis to retrieve
+    Return Value: pointer to Array1D object representing an axis
+    Notes: None
+    Code Example:
+
+Array1D *getNthAxis(size_t n) const;
+    Purpose: retrieve the n'th axis of this Curve object
+    Input Arguments: 1
+        1. size_t n - number of the axis to retrieve
+    Return Value: pointer to the n'th Array1D object
+    Notes: None
+    Code Example:
+
+const char *group() const;
+    Purpose: get the group this Curve object is associated with
+    Input Arguments: 0
+    Return Value: the group this Curve object is associated with
+    Notes: None
+    Code Example:
+
+void group(const char *g);
+    Purpose: set the group this Curve object is associated with
+    Input Arguments: 1
+        1. const char *g - newly associated group name
+    Return Value: None
+    Notes: None
+    Code Example:
+
+size_t dims() const;
+    Purpose: get the number of dimensions (axis)
+    Input Arguments: 0
+    Return Value: number of dimensions
+    Notes: None
+    Code Example:
+
+const void *property (const char *key) const;
+    Purpose: get a generic property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void property (const char *key, const void *val, size_t nbytes);
+    Purpose: set a generic property in the property database
+    Input Arguments: 3
+        1. const char *key - property name
+        2. const void *val - property value
+        3. size_t nbytes - size (in bytes) of the value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+const char *propstr (const char *key) const;
+    Purpose: get a string property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void propstr (const char *key, const char *val);
+    Purpose: set a string property in the property database
+    Input Arguments: 2
+        1. const char *key - property name
+        2. const char *val - property value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+void propremove (const char *key);
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void vvalue(void *storage, size_t numHints, va_list arg) const;
+    Purpose: return the value of the object after applying a
+                varying number of hints about how the value
+                should be configured
+    Input Arguments: 3
+        1. void *storage - the return value
+        2. size_t numHints - number of hints provided
+        3. va_list arg - list of hints specified as a va_list
+    Return Value: None
+    Notes: vvalue will parse out the recognisable hints from
+                va_list arg. Values stored in the object are
+                not changed.
+    Code Example:
+
+void random();
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+
+Rp_Chain *diff(const Rp_Object &o);
+    Purpose: return a linked list showing the differences between
+             this object and Rp_Object &o
+    Input Arguments: 1
+        1. const Rp_Object &o - object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+
+void configure(size_t as, ClientData c);
+    Purpose: configure the object based on the data in "c".
+                use "as" to determine the type of data in "c".
+    Input Arguments: 2
+        1. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        2. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    const char *xmltext
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+
+void dump(size_t as, ClientData c);
+    Purpose: dump the object values based to the object "c".
+                use "as" to determine how to dump the data.
+    Input Arguments: 2
+        1. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        2. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    ClientDataXml *object
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: None
+    Code Example:
+
+Outcome &outcome() const;
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 0
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+
+const int is() const;
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 0
+    Return Value: integer tag unique to all number objects
+    Notes: None
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/cpp/library
===================================================================
--- /tags/1.6.0/examples/objects/api/cpp/library	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/cpp/library	(revision 6168)
@@ -0,0 +1,130 @@
+Library
+
+constructors/destructors
+    Library()
+    Library(const Library& o)
+    ~Library ()
+
+methods
+    Outcome &loadXml(const char *xmltext)
+    Outcome &loadFile(const char *filename)
+
+
+    Library &value(const char *key, void *storage,
+        size_t numHints, ...)
+
+    Rp_Chain *diff(Library *lib)
+
+    Library &remove (const char *key)
+
+    const char *xml() const
+
+    Outcome &outcome() const
+    int error() const
+
+    Outcome &result(int status)
+
+    const Rp_Chain *contains() const
+
+---------------------------------------
+
+Outcome &loadXml(const char *xmltext)
+    Purpose: parse the Rappture1.1 xml data in "xmltext".
+                populate this library object with the Rappture
+                objects described in the xml data.
+    Input Arguments: 1
+        1. const char *xmltext - Rappture1.1 xml data
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+
+Outcome &loadFile(const char *filename);
+    Purpose: read the file "filename" and parse the
+                Rappture1.1 xml data found inside of it.
+                populate this library object with the Rappture
+                objects described in the xml data.
+    Input Arguments: 1
+        1. const char *filename - file containing Rappture1.1
+                                    xml data
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+
+Library &value(const char *key, void *storage,
+    size_t numHints, ...);
+    Purpose: retrieve the value of the object named "key" and
+                store it in "storage". If there are hints,
+                pass them along to the object being retrieved
+                to tell it how the value should be configured.
+    Input Arguments: at least 3
+        1. const char *key - name of the object being retrieved
+        2. void *storage - where to place the value of the
+                            retrieved object
+        3. size_t numHints - number of hints provided
+        4. ... - hints listed as strings
+    Return Value: None
+    Notes: hints are listed as strings of the form
+            "hintKey=hintVal". hintKey is the key for the hint
+            and hintVal is the value to be applied to the hint.
+            generally, unrecognized hints are ignored. the hints
+            should be listed as comma separated strings in the
+            function's argument list.
+    Code Example:
+
+Rp_Chain *diff(Library *lib);
+    Purpose: find the difference between two library objects
+    Input Arguments: 1
+        1. Library *lib - other object used in comparison
+    Return Value: Linked list of differences
+    Notes: None
+    Code Example:
+
+Library &remove (const char *key);
+    Purpose: remove the object from this library named "key"
+    Input Arguments: 1
+        1. const char *key - name of the object to remove
+    Return Value: None
+    Notes: The object is removed and it's memory is deleted
+    Code Example:
+
+const char *xml() const;
+    Purpose: return the Rappture1.1 xml representation of the
+                objects stored in this library.
+    Input Arguments: 0
+    Return Value: None
+    Notes: user is responsible for free'ing returned memory?
+    Code Example:
+
+Outcome &outcome() const;
+    Purpose: return the status of the object
+    Input Arguments: 0
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+
+int error() const;
+    Purpose: return the status of the object
+    Input Arguments: 0
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+
+Outcome &result(int status);
+    Purpose: write the stored objects to a data file and
+                signal the end of processing.
+    Input Arguments: 1
+        1. int status - status of the simulation
+    Return Value: None
+    Notes: currently data file are written out as Rappture1.1
+            xml. this function generates the RAPPTURE-RUN=>
+            signal.
+    Code Example:
+
+const Rp_Chain *contains() const;
+    Purpose: return a linked list of the Rappture objects
+                stored in this library.
+    Input Arguments: 0
+    Return Value: linked list of the Rappture objects stored in
+                    this library.
+    Notes: None
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/cpp/number
===================================================================
--- /tags/1.6.0/examples/objects/api/cpp/number	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/cpp/number	(revision 6168)
@@ -0,0 +1,495 @@
+Number
+
+constructors/destructors
+    Number()
+    Number(const char *name, const char *units, double val);
+    Number(const char *name, const char *units, double val,
+           double min, double max, const char *label,
+           const char *desc);
+    Number(const Number& o);
+    ~Number ();
+
+methods
+    const char *name() const;
+    void name(const char *val);
+
+    const char *path() const;
+    void path(const char *val);
+
+    const char *label() const;
+    void label(const char *val);
+
+    const char *desc() const;
+    void desc(const char *val);
+
+    const char *hints() const;
+    void hints(const char *val);
+
+    const char *color() const;
+    void color(const char *val);
+
+    double def() const;
+    void def(double val);
+
+    double cur() const;
+    void cur(double val);
+
+    double min() const;
+    void min(double val);
+
+    double max() const;
+    void max(double val);
+
+    const char *units() const;
+    void units(const char *u);
+
+    int defset() const;
+    int curset() const;
+
+    const void *property (const char *key) const;
+    void property (const char *key, const void *val, size_t nbytes);
+
+    const char *propstr (const char *key) const;
+    void propstr (const char *key, const char *val);
+
+    void propremove (const char *key);
+
+    Outcome& convert(const char *to);
+    double value(const char *units) const;
+    void vvalue(void *storage, size_t numHints, va_list arg) const;
+    void random();
+    Rp_Chain *diff(const Object& o);
+
+    Number& addPreset(const char *label, const char *desc,
+                      double val, const char *units);
+
+    Number& addPreset(const char *label, const char *desc,
+                      const char *val);
+
+    Number& delPreset(const char *label);
+
+    void configure(size_t as, ClientData c);
+    void dump(size_t as, ClientData c);
+
+    Outcome &outcome() const;
+
+    const int is() const;
+
+    void minFromStr(const char *val);
+    void maxFromStr(const char *val);
+    void defFromStr(const char *val);
+    void curFromStr(const char *val);
+
+---------------------------------------
+
+const char *name()
+    Purpose: get the id name of the object
+    Input Arguments: None
+    Return Value: the id name stored in the object.
+    Notes: if no name is set, NULL will be returned
+            the id name is used to identify this object from
+            all other objects and should be unique
+    Code Example:
+
+void name(const char *val)
+    Purpose: set the id name of the object
+    Input Arguments: 1
+        1. const char *val - new id name
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *path()
+    Purpose: get the path of the object
+    Input Arguments: None
+    Return Value: the path stored in the object.
+    Notes: if no path is set, NULL will be returned
+            the path tells where this object sits in the
+            hierarchy of objects.
+    Code Example:
+
+void path(const char *val)
+    Purpose: set the path of the object
+    Input Arguments: 1
+        1. const char *val - new path
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *label()
+    Purpose: get the label of the object
+    Input Arguments: None
+    Return Value: the label stored in the object.
+    Notes: if no label is set, NULL will be returned
+            the label is used by the graphical user interface.
+    Code Example:
+
+void label(const char *val)
+    Purpose: set the label of the object
+    Input Arguments: 1
+        1. const char *val - new label
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *desc()
+    Purpose: get the description of the object
+    Input Arguments: None
+    Return Value: the description stored in the object.
+    Notes: if no description is set, NULL will be returned
+            the description is used by the graphical user
+            interface to describe what type of data is being
+            requested and how the input is used.
+    Code Example:
+
+void desc(const char *val)
+    Purpose: set the description of the object
+    Input Arguments: 1
+        1. const char *val - new description
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *hints()
+    Purpose: get the hints of the object
+    Input Arguments: None
+    Return Value: the hints stored in the object.
+    Notes: if no hints are set, NULL will be returned
+            the hints are used by the graphical user interface
+    Code Example:
+
+void hints(const char *val)
+    Purpose: set the hints of the object
+    Input Arguments: 1
+        1. const char *val - new hints
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+double def()
+    Purpose: get the default value
+    Input Arguments: None
+    Return Value: the default value stored in the object.
+    Notes: use the function defset() to see if a valid
+            default value was stored in the object.
+    Code Example:
+
+void def(double val)
+    Purpose: set the default value
+    Input Arguments: 1
+        1. double val - new default value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+double cur()
+    Purpose: get the current value
+    Input Arguments: None
+    Return Value: the current value stored in the object.
+    Notes: use the function curset() to see if a valid
+            default value was stored in the object.
+    Code Example:
+
+void cur(double val)
+    Purpose: set the current value
+    Input Arguments: 1
+        1. double val - new current value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+double min()
+    Purpose: get the minimum accepted value of this object
+    Input Arguments: None
+    Return Value: the minimum value this object will accept.
+    Notes: use the function minset() to see if a valid
+            minimum value was stored in the object.
+    Code Example:
+
+void min(double val)
+    Purpose: set the minimum accepted value of this object
+    Input Arguments: 1
+        1. double val - new minimum accepted value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+double max()
+    Purpose: get the maximum accepted value of this object
+    Input Arguments: None
+    Return Value: the maximum value this object will accept.
+    Notes: use the function maxset() to see if a valid
+            maximum value was stored in the object.
+    Code Example:
+
+void max(double val)
+    Purpose: set the maximum accepted value of this object
+    Input Arguments: 1
+        1. double val - new maximum accepted value
+    Return Value: None
+    Notes: None
+    Code Example:
+
+const char* units()
+    Purpose: get the units of this object
+    Input Arguments: None
+    Return Value: the string representing the object's units
+    Notes: None
+    Code Example:
+
+void units(const char *val)
+    Purpose: set the units of this object
+    Input Arguments: 1
+        1. const char *val - new units
+    Return Value: None
+    Notes: None
+    Code Example:
+
+int defset() const
+    Purpose: return whether the default value was set by the user
+    Input Arguments: None
+    Return Value: 1 if default was set by user, otherwise 0
+    Notes: None
+    Code Example:
+
+int curset() const
+    Purpose: return whether the current value was set by the user
+    Input Arguments: None
+    Return Value: 1 if current was set by user, otherwise 0
+    Notes: None
+    Code Example:
+
+const void *property (const char *key) const;
+    Purpose: get a generic property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void property (const char *key, const void *val, size_t nbytes);
+    Purpose: set a generic property in the property database
+    Input Arguments: 3
+        1. const char *key - property name
+        2. const void *val - property value
+        3. size_t nbytes - size (in bytes) of the value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+const char *propstr (const char *key) const;
+    Purpose: get a string property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void propstr (const char *key, const char *val);
+    Purpose: set a string property in the property database
+    Input Arguments: 2
+        1. const char *key - property name
+        2. const char *val - property value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+void propremove (const char *key);
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+Outcome& convert(const char *to);
+    Purpose: convert the def and cur values to "to" units
+    Input Arguments: 1
+        1. const char *to - string of units to convert to
+    Return Value: Outcome object
+    Notes: the values stored in the object are changed
+    Code Example:
+
+double value(const char *to) const;
+    Purpose: return the value of the object with units of "to"
+    Input Arguments: 1
+        1. const char *to - string of units to convert to
+    Return Value: value of the object
+    Notes: cur() is used as the base value. if cur was not set
+            by the user (curset() == 0), def() is used.
+            if def was not set (defset() == 0), 0.0 is used
+            as the value.
+    Code Example:
+
+void vvalue(void *storage, size_t numHints, va_list arg) const;
+    Purpose: return the value of the object after applying a
+                varying number of hints about how the value
+                should be configured
+    Input Arguments: 3
+        1. void *storage - the return value
+        2. size_t numHints - number of hints provided
+        3. va_list arg - list of hints specified as a va_list
+    Return Value: None
+    Notes: vvalue will parse out the recognisable hints from
+                va_list arg. Values stored in the object are
+                not changed.
+    Code Example:
+
+void random();
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+
+Rp_Chain *diff(const Rp_Object &o);
+    Purpose: return a linked list showing the differences between
+             this object and Rp_Object &o
+    Input Arguments: 1
+        1. const Rp_Object &o - object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+
+Number& addPreset(const char *label, const char *desc,
+                  double val, const char *units);
+    Purpose: add a preset to this object
+    Input Arguments: 4
+        1. const char *label - label of the preset
+        2. const char *desc - description of the preset
+        3. double val - value of the preset
+        4. const char *units - units of the preset
+    Return Value: None
+    Notes: presets are stored in the object in the same order
+                in which they are created
+    Code Example:
+
+Number& addPreset(const char *label, const char *desc,
+                  const char *val);
+    Purpose: add a preset to this object
+    Input Arguments: 3
+        1. const char *label - label of the preset
+        2. const char *desc - description of the preset
+        3. const char *val - numeric value and units of the preset
+    Return Value: None
+    Notes: presets are stored in the object in the same order
+                in which they are created
+    Code Example:
+
+Number& delPreset(const char *label);
+    Purpose: delete the preset labeled "label" from this object
+    Input Arguments: 1
+        1. const char *label - label of the preset
+    Return Value: None
+    Notes: preset is removed from the object
+    Code Example:
+
+void configure(size_t as, ClientData c);
+    Purpose: configure the object based on the data in "c".
+                use "as" to determine the type of data in "c".
+    Input Arguments: 2
+        1. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        2. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    const char *xmltext
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+
+void dump(size_t as, ClientData c);
+    Purpose: dump the object values based to the object "c".
+                use "as" to determine how to dump the data.
+    Input Arguments: 2
+        1. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        2. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    ClientDataXml *object
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: None
+    Code Example:
+
+Outcome &outcome() const;
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 0
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+
+const int is() const;
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 0
+    Return Value: integer tag unique to all number objects
+    Notes: None
+    Code Example:
+
+void minFromStr(const char *val);
+    Purpose: populate the min() value from a string.
+    Input Arguments: 1
+        1. const char *val - value and units for the
+                                minimum value
+    Return Value: None
+    Notes: This function tries to parse the string for a value
+            and a units string. if a units string is found and
+            no units have been set for the object, these units
+            become the units for the object. if there are
+            already units for this object, any value found
+            during the split is converted to the object's
+            units before being stored in min().
+    Code Example:
+
+void maxFromStr(const char *val);
+    Purpose: populate the max() value from a string.
+    Input Arguments: 1
+        1. const char *val - value and units for the
+                                maximum value
+    Return Value: None
+    Notes: This function tries to parse the string for a value
+            and a units string. if a units string is found and
+            no units have been set for the object, these units
+            become the units for the object. if there are
+            already units for this object, any value found
+            during the split is converted to the object's
+            units before being stored in max().
+    Code Example:
+
+void defFromStr(const char *val);
+    Purpose: populate the def() value from a string.
+    Input Arguments: 1
+        1. const char *val - value and units for the
+                                default value
+    Return Value: None
+    Notes: This function tries to parse the string for a value
+            and a units string. if a units string is found and
+            no units have been set for the object, these units
+            become the units for the object. if there are
+            already units for this object, any value found
+            during the split is converted to the object's
+            units before being stored in def().
+    Code Example:
+
+void curFromStr(const char *val);
+    Purpose: populate the cur() value from a string.
+    Input Arguments: 1
+        1. const char *val - value and units for the
+                                current value
+    Return Value: None
+    Notes: This function tries to parse the string for a value
+            and a units string. if a units string is found and
+            no units have been set for the object, these units
+            become the units for the object. if there are
+            already units for this object, any value found
+            during the split is converted to the object's
+            units before being stored in cur().
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/cpp/plot
===================================================================
--- /tags/1.6.0/examples/objects/api/cpp/plot	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/cpp/plot	(revision 6168)
@@ -0,0 +1,312 @@
+Plot
+
+constructors/destructors
+    Plot()
+    Plot(Library *lib)
+    Plot(const Plot& o);
+    ~Plot ();
+
+methods
+    const char *name() const;
+    void name(const char *val);
+
+    const char *path() const;
+    void path(const char *val);
+
+    const char *label() const;
+    void label(const char *val);
+
+    const char *desc() const;
+    void desc(const char *val);
+
+    const char *hints() const;
+    void hints(const char *val);
+
+    const char *color() const;
+    void color(const char *val);
+
+    const void *property (const char *key) const;
+    void property (const char *key, const void *val, size_t nbytes);
+
+    const char *propstr (const char *key) const;
+    void propstr (const char *key, const char *val);
+
+    void propremove (const char *key);
+
+    Plot& add ( size_t nPts, double *x, double *y,
+                const char *fmt, const char *name);
+
+    Plot& add (Curve *c, const char *name);
+
+    size_t count() const;
+
+    Curve *curve (const char* name) const;
+    Curve *getNthCurve(size_t n) const;
+
+    void vvalue(void *storage, size_t numHints, va_list arg) const;
+    void random();
+    Rp_Chain *diff(const Object& o);
+
+    void configure(size_t as, ClientData c);
+    void dump(size_t as, ClientData c);
+
+    Outcome &outcome() const;
+
+    const int is() const;
+
+---------------------------------------
+
+const char *name()
+    Purpose: get the id name of the object
+    Input Arguments: None
+    Return Value: the id name stored in the object.
+    Notes: if no name is set, NULL will be returned
+            the id name is used to identify this object from
+            all other objects and should be unique
+    Code Example:
+
+void name(const char *val)
+    Purpose: set the id name of the object
+    Input Arguments: 1
+        1. const char *val - new id name
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *path()
+    Purpose: get the path of the object
+    Input Arguments: None
+    Return Value: the path stored in the object.
+    Notes: if no path is set, NULL will be returned
+            the path tells where this object sits in the
+            hierarchy of objects.
+    Code Example:
+
+void path(const char *val)
+    Purpose: set the path of the object
+    Input Arguments: 1
+        1. const char *val - new path
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *label()
+    Purpose: get the label of the object
+    Input Arguments: None
+    Return Value: the label stored in the object.
+    Notes: if no label is set, NULL will be returned
+            the label is used by the graphical user interface.
+    Code Example:
+
+void label(const char *val)
+    Purpose: set the label of the object
+    Input Arguments: 1
+        1. const char *val - new label
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *desc()
+    Purpose: get the description of the object
+    Input Arguments: None
+    Return Value: the description stored in the object.
+    Notes: if no description is set, NULL will be returned
+            the description is used by the graphical user
+            interface to describe what type of data is being
+            requested and how the input is used.
+    Code Example:
+
+void desc(const char *val)
+    Purpose: set the description of the object
+    Input Arguments: 1
+        1. const char *val - new description
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const char *hints()
+    Purpose: get the hints of the object
+    Input Arguments: None
+    Return Value: the hints stored in the object.
+    Notes: if no hints are set, NULL will be returned
+            the hints are used by the graphical user interface
+    Code Example:
+
+void hints(const char *val)
+    Purpose: set the hints of the object
+    Input Arguments: 1
+        1. const char *val - new hints
+    Return Value: None
+    Notes: a copy of the memory location val will be stored
+    Code Example:
+
+const void *property (const char *key) const;
+    Purpose: get a generic property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void property (const char *key, const void *val, size_t nbytes);
+    Purpose: set a generic property in the property database
+    Input Arguments: 3
+        1. const char *key - property name
+        2. const void *val - property value
+        3. size_t nbytes - size (in bytes) of the value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+const char *propstr (const char *key) const;
+    Purpose: get a string property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+void propstr (const char *key, const char *val);
+    Purpose: set a string property in the property database
+    Input Arguments: 2
+        1. const char *key - property name
+        2. const char *val - property value
+    Return Value: None
+    Notes: A copy of the memory pointed to by val is stored
+            in the property database
+    Code Example:
+
+void propremove (const char *key);
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. const char *key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+
+Plot& add (size_t nPts, double *x, double *y,
+           const char *fmt, const char *name);
+    Purpose: add data for an xy curve to the plot
+    Input Arguments: 5
+        1. size_t nPts - number of points in the x and y arrays
+        2. double *x - pointer to array representing the x axis
+        3. double *y - pointer to array representing the y axis
+        4. const char *fmt - format of the line
+        5. const char *name - id of the newly created curve
+    Return Value: reference to a Plot object
+    Notes: format can be something like "g:o" to represent
+            green line, dotted line style, circle marker.
+            this follows matlab's formatting rules.
+    Code Example:
+
+Plot& add (Curve *c, const char *name);
+    Purpose: add a Curve object to this Plot object
+    Input Arguments: 2
+        1. Curve *c - Curve object to add
+        2. const char *name - id of the Curve object
+    Return Value: reference to a Plot object
+    Notes: Curve object should not be deleted by user?
+    Code Example:
+
+size_t count() const;
+    Purpose: retrieve the number of curves in this Plot object
+    Input Arguments: 0
+    Return Value: number of curves stored in the object
+    Notes: None
+    Code Example:
+
+Curve *curve (const char* name) const;
+    Purpose: retrieve the curve with the id matching "name"
+    Input Arguments: 1
+        1. const char *name - id to Curve to be retrieved
+    Return Value: pointer to Curve object matching "name" or NULL
+    Notes: None
+    Code Example:
+
+Curve *getNthCurve(size_t n) const;
+    Purpose: return the n'th curve stored in the object
+    Input Arguments: 1
+        1. size_t n - number of the curve to retrieve
+    Return Value: pointer to the n'th Curve object stored in
+                    the Plot object or NULL
+    Notes: None
+    Code Example:
+
+void vvalue(void *storage, size_t numHints, va_list arg) const;
+    Purpose: return the value of the object after applying a
+                varying number of hints about how the value
+                should be configured
+    Input Arguments: 3
+        1. void *storage - the return value
+        2. size_t numHints - number of hints provided
+        3. va_list arg - list of hints specified as a va_list
+    Return Value: None
+    Notes: vvalue will parse out the recognisable hints from
+                va_list arg. Values stored in the object are
+                not changed.
+    Code Example:
+
+void random();
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+
+Rp_Chain *diff(const Rp_Object &o);
+    Purpose: return a linked list showing the differences between
+             this object and Rp_Object &o
+    Input Arguments: 1
+        1. const Rp_Object &o - object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+
+void configure(size_t as, ClientData c);
+    Purpose: configure the object based on the data in "c".
+                use "as" to determine the type of data in "c".
+    Input Arguments: 2
+        1. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        2. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    const char *xmltext
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+
+void dump(size_t as, ClientData c);
+    Purpose: dump the object values based to the object "c".
+                use "as" to determine how to dump the data.
+    Input Arguments: 2
+        1. size_t as - type of data stored in "c".
+                        valid values include:
+                            RPCONFIG_XML
+                            RPCONFIG_TREE
+        2. ClientData c - data to configure the object from.
+                            if as is...     then c should be...
+                            RPCONFIG_XML    ClientDataXml *object
+                            RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: None
+    Code Example:
+
+Outcome &outcome() const;
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 0
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+
+const int is() const;
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 0
+    Return Value: integer tag unique to all plot objects
+    Notes: None
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/python/library
===================================================================
--- /tags/1.6.0/examples/objects/api/python/library	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/python/library	(revision 6168)
@@ -0,0 +1,557 @@
+Rappture.Library
+
+constructors
+    Rappture.Library()
+    Rappture.Library(lib2)
+
+methods
+    lib.loadXml(xmltext)
+    lib.loadFile(filename)
+    lib.value(key[, ...])
+    lib.diff(lib2)
+    lib.remove(key)
+    lib.xml()
+    lib.outcome()
+    lib.error()
+    lib.result(status)
+    lib.contains()
+
+---------------------------------------
+
+Rappture.Library()
+    Purpose: construct an empty Rappture Library object
+    Input Arguments: 0
+    Return Value: empty Rappture Library object
+    Notes: None
+    Code Example:
+    {{{
+        lib = Rappture.Library()
+    }}}
+
+Rappture.Library(lib2)
+    Purpose: construct a copy of a Rappture Library object
+    Input Arguments: 1
+        1. lib2 - Rappture Library object to be copied
+    Return Value: copy of a Rappture Library object
+    Notes: None
+    Code Example:
+    {{{
+        lib2 = Rappture.Library()
+        lib = Rappture.Library(lib2)
+    }}}
+
+lib.loadXml(xmltext)
+    Purpose: parse the Rappture1.1 xml data in "xmltext".
+                populate this library object with the Rappture
+                objects described in the xml data.
+    Input Arguments: 1
+        1. xmltext - string of Rappture1.1 xml data
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+    {{{
+        xmltext = """
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id=\"temperature\">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>"""
+        lib = Rappture.Library()
+        lib.loadXml(xmltext)
+    }}}
+
+lib.loadFile(filename)
+    Purpose: read the file "filename" and parse the
+                Rappture1.1 xml data found inside of it.
+                populate this library object with the Rappture
+                objects described in the xml data.
+    Input Arguments: 1
+        1. filename - name of file containing Rappture1.1
+                      xml data
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+    {{{
+        data = """
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id=\"temperature\">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        """
+
+        filename = "driver1234.xml"
+        fp = open(filename,"w")
+        fp.write(data)
+        fp.close()
+        lib = Rappture.Library()
+        lib.loadFile(filename)
+    }}}
+
+lib.value(key[, ...])
+    Purpose: retrieve the value of the object named "key" and
+                return it to the user. If there are hints,
+                pass them along to the object being retrieved
+                to tell it how the value should be configured.
+    Input Arguments: at least 1
+        1. key - name of the object being retrieved
+        2. ... - hints listed as strings
+    Return Value: value of the object named key
+    Notes: hints are listed as strings of the form
+            "hintKey=hintVal". hintKey is the key for the hint
+            and hintVal is the value to be applied to the hint.
+            generally, unrecognized hints are ignored. the hints
+            should be listed as comma separated strings in the
+            function's argument list.
+    Code Example:
+    {{{
+        data = """
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        """
+
+        lib = Rappture::Library()
+        lib.loadXml(data)
+        temp = lib.value("temperature","units=F")
+        print "temp = %s\n" % (temp)
+        # temp = 80.33
+    }}}
+
+lib.diff(lib2)
+    Purpose: find the difference between two library objects
+    Input Arguments: 1
+        1. lib2 - other object used in comparison
+    Return Value: List of differences
+    Notes: None
+    Code Example:
+    {{{
+        data1 = """
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                    <number id="forel">
+                        <about>
+                            <label>Forel</label>
+                            <description>Environment</description>
+                        </about>
+                        <units>cm</units>
+                        <min>4cm</min>
+                        <max>183cm</max>
+                        <default>72cm</default>
+                    </number>
+                    <integer id="toops">
+                        <about>
+                            <label>Toops</label>
+                            <description>Icks hafra doec weple</description>
+                        </about>
+                        <default>33</default>
+                    </integer>
+                </input>
+            </run>
+        """
+
+        data2 = """
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <integer id="toops">
+                        <about>
+                            <label>Toops</label>
+                            <description>Icks hafra doec weple</description>
+                        </about>
+                        <default>33</default>
+                    </integer>
+                    <number id="Ef">
+                        <about>
+                            <label>Fermi Level</label>
+                            <description>Energy at center of distribution.</description>
+                        </about>
+                        <units>eV</units>
+                        <min>-10eV</min>
+                        <max>10eV</max>
+                        <default>0eV</default>
+                    </number>
+                    <number id="forel">
+                        <about>
+                            <label>Forel</label>
+                            <description>Environment</description>
+                        </about>
+                        <units>cm</units>
+                        <min>4cm</min>
+                        <max>183cm</max>
+                        <default>109cm</default>
+                    </number>
+                </input>
+            </run>
+        """
+
+        lib1 = Rappture::Library()
+        lib1.loadXml(data1)
+
+        lib2 = Rappture::Library()
+        lib2.loadXml(data2)
+
+        diffs = lib1.diff(lib2)
+        # - input.number(temperature) 300K
+        # c input.number(forel) 72cm 109cm
+        # + input.number(Ef)  0eV
+    }}}
+
+lib.remove(key)
+    Purpose: remove the object from this library named "key"
+    Input Arguments: 1
+        1. key - name of the object to remove
+    Return Value: None
+    Notes: The object is removed and it's memory is deleted
+    Code Example:
+    {{{
+        data = """
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                    <number id="Ef">
+                        <about>
+                            <label>Fermi Level</label>
+                            <description>Energy at center of distribution.</description>
+                        </about>
+                        <units>eV</units>
+                        <min>-10eV</min>
+                        <max>10eV</max>
+                        <default>0eV</default>
+                    </number>
+                </input>
+            </run>
+        """
+
+        lib = Rappture::Library()
+        lib.loadXml(data)
+        lib.remove("Ef")
+        print lib.xml()
+
+        # <?xml version="1.0"?>
+        # <run>
+        #     <tool>
+        #         <about>Press Simulate to view results.</about>
+        #         <command>@tool/fermi @driver</command>
+        #     </tool>
+        #     <input>
+        #         <number id="temperature">
+        #             <about>
+        #                 <label>Ambient temperature</label>
+        #                 <description>Temperature of the environment.</description>
+        #             </about>
+        #             <units>K</units>
+        #             <min>0K</min>
+        #             <max>500K</max>
+        #             <default>300K</default>
+        #         </number>
+        #     </input>
+        # </run>
+    }}}
+
+lib.xml()
+    Purpose: return the Rappture1.1 xml representation of the
+                objects stored in this library.
+    Input Arguments: 0
+    Return Value: None
+    Notes: user is responsible for free'ing returned memory?
+    Code Example:
+    {{{
+        data = """
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        """
+
+        lib = Rappture::Library()
+        lib.loadXml(data)
+        print lib.xml()
+
+        # <?xml version="1.0"?>
+        # <run>
+        #     <tool>
+        #         <about>Press Simulate to view results.</about>
+        #         <command>@tool/fermi @driver</command>
+        #     </tool>
+        #     <input>
+        #         <number id="temperature">
+        #             <about>
+        #                 <label>Ambient temperature</label>
+        #                 <description>Temperature of the environment.</description>
+        #             </about>
+        #             <units>K</units>
+        #             <min>0K</min>
+        #             <max>500K</max>
+        #             <default>300K</default>
+        #         </number>
+        #     </input>
+        # </run>
+    }}}
+
+lib.outcome()
+    Purpose: return the status of the object
+    Input Arguments: 0
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+    {{{
+        data = """
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id=\"temperature\">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        """
+
+        lib = Rappture::Library()
+        lib.loadXml(data)
+        if (lib.error() != 0) {
+            print "there was an error while loading xml data"
+            outcome = lib.outcome()
+            sys.stderr.write(outcome.context())
+            sys.stderr.write(outcome.remark())
+        }
+    }}}
+
+lib.error()
+    Purpose: return the status of the object
+    Input Arguments: 0
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+    {{{
+        data = """
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        """
+
+        lib = Rappture::Library()
+        lib.loadXml(data)
+        if (lib.error() != 0) {
+            print "there was an error while loading xml data"
+            outcome = lib.outcome()
+            sys.stderr.write(outcome.context())
+            sys.stderr.write(outcome.remark())
+        }
+    }}}
+
+lib.result(status)
+    Purpose: write the stored objects to a data file and
+                signal the end of processing.
+    Input Arguments: 1
+        1. int status - status of the simulation
+    Return Value: None
+    Notes: currently data file are written out as Rappture1.1
+            xml. this function generates the RAPPTURE-RUN=>
+            signal.
+    Code Example:
+    {{{
+        data = """
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        """
+
+        lib = Rappture::Library()
+        lib.loadXml(data)
+        lib.result()
+        # internal xml objects free'd
+        # driver file written to disk
+        # =RAPPTURE-RUN=>driver1234.xml signal sent to stdout
+    }}}
+
+lib.contains()
+    Purpose: return a list of the Rappture objects
+                stored in this library.
+    Input Arguments: 0
+    Return Value: list of the Rappture objects stored in
+                    this library.
+    Notes: None
+    Code Example:
+    {{{
+        data = """
+            <?xml version=\"1.0\"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id=\"temperature\">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                    <number id=\"Ef\">
+                        <about>
+                            <label>Fermi Level</label>
+                            <description>Energy at center of distribution.</description>
+                        </about>
+                        <units>eV</units>
+                        <min>-10eV</min>
+                        <max>10eV</max>
+                        <default>0eV</default>
+                    </number>
+                </input>
+            </run>
+        """
+
+        lib = Rappture::Library()
+        lib.loadXml(data)
+        xmlObjs = lib.contains()
+        len xmlObjs
+        # 2
+        # xmlObjs contains objects (pointers or copies of objects?)
+        print xmlObjs
+        # ::Rappture::Number ::Rappture::Number
+        foreach obj in xmlObjs {
+            obj.vvalue()
+        }
+        # 300
+        # 0
+    }}}
Index: /tags/1.6.0/examples/objects/api/python/number
===================================================================
--- /tags/1.6.0/examples/objects/api/python/number	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/python/number	(revision 6168)
@@ -0,0 +1,578 @@
+Rappture.Number
+
+constructors/destructors
+    Rappture.Number()
+    Rappture.Number(name, units, val[, min, max, label, desc])
+    Rappture.Number(numObj)
+
+methods
+    n.name([val])
+    n.path([val])
+    n.label([val])
+    n.desc([val])
+    n.hints([val])
+    n.color([val])
+    n.def([val])
+    n.cur([val])
+    n.min([val])
+    n.max([val])
+    n.units([u])
+    n.property(key[, val])
+    n.propremove(key)
+    n.convert(to)
+    n.value(units)
+    n.vvalue([...])
+    n.random()
+    n.diff(o)
+    n.addPreset(label, desc, val[, units])
+    n.delPreset(label)
+    n.configure(as, c)
+    n.dump(as, c)
+    n.outcome()
+    n.is()
+
+---------------------------------------
+Rappture.Number([name, units, val[, min, max, label, desc]])
+    Purpose: construct a number object
+    Input Arguments: 0, 3 or 7
+        1. name - object's name
+        2. units - object's units
+        3. val - default value
+        4. min - minimum accepted value
+        5. max - maximum accepted value
+        6. label - object's label
+        7. desc - object's description
+    Return Value: a newly created number object
+    Notes: input arguments are used to construct the number object
+    Code Example:
+    {{{
+        n1 = Rappture.Number()
+        n2 = Rappture.Number("temperature","K",300)
+        n3 = Rappture.Number("temperature",units="K",300,min=0,max=500,
+                                 label="Ambiant Temperature",
+                                 desc="Temperature of the environment")
+    }}}
+
+Rappture.Number(numObj)
+    Purpose: construct a number object based on number object numObj
+    Input Arguments: 1
+        1. numObj - number object to copy
+    Return Value: a newly created number object
+    Notes: None
+    Code Example:
+    {{{
+        n1 = Rappture.Number()
+        n2 = Rappture.Number(n1)
+    }}}
+
+
+n.name([val])
+    Purpose: get/set the id name of the object
+    Input Arguments: at most 1
+        1. val - new id name
+    Return Value: the name of the object
+    Notes: if no name is set, None will be returned
+           the id name is used to identify this object from
+           all other objects and should be unique
+           val, if provided, is used to set the object name
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.name()
+        # ""
+        n.name("temperature")
+        n.name()
+        # "temperature"
+    }}}
+
+n.path([val])
+    Purpose: get/set the path of the object
+    Input Arguments: at most 1
+        1. val - new path
+    Return Value: path of the object
+    Notes: if no path is set, None will be returned
+           the path tells where this object sits in the
+           hierarchy of objects.
+           val, if provided, is used to set the object path
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.path()
+        # ""
+        n.path("input")
+        n.path()
+        # "input"
+    }}}
+
+n.label([val])
+    Purpose: get/set the label of the object
+    Input Arguments: at most 1
+        1. val - new label
+    Return Value: label of the object
+    Notes: if no label is set, None will be returned
+           the label is used by the graphical user interface.
+           val, if provided, is used to set the object label
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.label()
+        # ""
+        n.label("Ambiant temperature")
+        n.label()
+        # "Ambiant temperature"
+    }}}
+
+n.desc([val])
+    Purpose: get/set the description of the object
+    Input Arguments: at most 1
+        1. val - new description
+    Return Value: description of the object
+    Notes: if no description is set, None will be returned
+           the description is used by the graphical user
+           interface to describe what type of data is being
+           requested and how the input is used.
+           val, if provided, is used to set the object description
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.desc()
+        # ""
+        n.desc("Temperature of the environment")
+        n.desc()
+        # "Temperature of the environment"
+    }}}
+
+n.hints([val])
+    Purpose: get/set the hints of the object
+    Input Arguments: at most 1
+        1. val - new hints
+    Return Value: hints of the object
+    Notes: if no hints are set, None will be returned
+           the hints are used by the graphical user interface
+           val, if provided, is used to set the object hints
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.hints()
+        # ""
+        n.hints("none")
+        n.hints()
+        # "none"
+    }}}
+
+n.color([val])
+    Purpose: get/set the color of the object
+    Input Arguments: at most 1
+        1. val - new color
+    Return Value: color of the object
+    Notes: if no color is set, None will be returned
+           the color is used by the graphical user interface
+           val, if provided, is used to set the object color
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.color()
+        # ""
+        n.color("none")
+        n.color()
+        # "none"
+    }}}
+
+n.def([val])
+    Purpose: get/set the default value
+    Input Arguments: at most 1
+        1. val - new default value
+    Return Value: default value of the object
+    Notes: if no default is set, None will be returned
+           val, if provided, is used to set the object default value
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.def()
+        # ""
+        n.def(300)
+        n.def()
+        # 300
+    }}}
+
+n.cur([val])
+    Purpose: get/set the current value
+    Input Arguments: at most 1
+        1. val - new current value
+    Return Value: current value of the object
+    Notes: if no current is set, None will be returned
+           val, if provided, is used to set the object current value
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.cur()
+        # ""
+        n.cur(450)
+        n.cur()
+        # 450
+    }}}
+
+n.min([val])
+    Purpose: get/set the minimum accepted value of this object
+    Input Arguments: at most 1
+        1. double val - new minimum accepted value
+    Return Value: the minimum value this object will accept.
+    Notes: if no min is set, None will be returned
+           val, if provided, is used to set the object min
+    Code Example:
+    {{{
+        n Rappture.Number()
+        n.min()
+        # ""
+        n.min(0)
+        n.min()
+        # 0
+    }}}
+
+n.max([val])
+    Purpose: get/set the maximum accepted value of this object
+    Input Arguments: 1
+        1. val - new maximum accepted value
+    Return Value: the maximum value this object will accept.
+    Notes: if no max is set, None will be returned
+           val, if provided, is used to set the object max
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.max()
+        # ""
+        n.max(500)
+        n.max()
+        # 500
+    }}}
+
+n.units([val])
+    Purpose: get/set the units of this object
+    Input Arguments: 1
+        1. val - new units
+    Return Value: the string representing the object's units
+    Notes: if no units are set, None will be returned
+           val, if provided, is used to set the object units
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.units()
+        # ""
+        n.units("K")
+        n.units()
+        # "K"
+    }}}
+
+n.property(key[, val])
+    Purpose: get/set a generic property in the property database
+    Input Arguments: at most 2
+        1. key - property name
+        2. val - property value
+    Return Value: value of the property
+    Notes: A copy val is stored in the property database
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.property("units")
+        # ""
+        n.property("units","K")
+        # "K"
+        n.units()
+        # "K"
+    }}}
+
+n.propremove(key)
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+    {{{
+        n = Rappture.Number("temperature","K",300)
+        n.property("units")
+        # "K"
+        n.propremove("units")
+        # "K"
+        n.property("units")
+        # ""
+    }}}
+
+n.convert(to)
+    Purpose: convert the def and cur values to "to" units
+    Input Arguments: 1
+        1. to - string of units to convert to
+    Return Value: Outcome object
+    Notes: the values stored in the object are changed
+    Code Example:
+    {{{
+        n = Rappture.Number("temperature","K",300)
+        n.min("0K")
+        n.max("500K")
+        n.cur(450)
+        out = n.convert("F")
+        if (out.value() != 0) {
+            sys.stderr.write(out.context())
+            sys.stderr.write(out.remark())
+        }
+        n.min()
+        # -459.67
+        n.max()
+        # 440.33
+        n.def()
+        # 80.33
+        n.cur()
+        # 350.33
+    }}}
+
+n.value(to)
+    Purpose: return the value of the object with units of "to"
+    Input Arguments: 1
+        1. to - string of units to convert to
+    Return Value: value of the object
+    Notes: cur() is used as the base value. if cur was not set
+            by the user (cur() == None), def() is used.
+            if def was not set (def() == None), 0.0 is used
+            as the value.
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.value()
+        # 0
+        n.def(300)
+        n.value()
+        # 300
+        n.cur(450)
+        n.value()
+        # 450
+        n.value("F")
+        # 350.33
+    }}}
+
+n.vvalue([...])
+    Purpose: return the value of the object after applying a
+                varying number of hints about how the value
+                should be configured
+    Input Arguments:
+        1. variable number of hints
+    Return Value: value of the object after applying hints.
+    Notes: vvalue will parse out the recognisable hints from
+                va_list arg. Values stored in the object are
+                not changed. Hint strings should have the form
+                hintKey=hintVal and be comma separated
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.cur(450)
+        n.vvalue()
+        # 450
+        n.vvalue("units=F")
+        # 350.33
+    }}}
+
+n.random()
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        n.random()
+        n.cur()
+        # 1042.34
+        # should be something more like:
+        # n.configure(min=-30,max=30)
+        # n.random()
+        n.min(-30)
+        n.max(30)
+        n.random()
+        n.cur()
+        # 16.89
+    }}}
+
+n.diff(o)
+    Purpose: return a list showing the differences between
+             this object and Rappture Object o
+    Input Arguments: 1
+        1. o - Rappture Object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+    {{{
+        n1 = Rappture.Number("temperature","K",300,"0K","500K",
+                                 "Ambiant Temperature",
+                                 "Temperature of the environment")
+        n2 = Rappture.Number("Ef","eV","4.5eV","0eV","10eV",
+                                 "Fermi Level",
+                                 "Energy at center of distribution")
+        diffs = n1.diff(n2)
+        # diffs is a list of tuples or list of lists
+
+        for ctype, prop, oVal, nVal in diffs {
+            print ctype, prop, oVal, nVal
+        }
+        # c name temperature Ef
+        # c units K eV
+        # c def 300 4.5
+        # c min 0 0
+        # c max 500 10
+        # c label "Ambiant Temperature" "Fermi Level"
+        # c desc "Temperature of the environment" "Energy at center of distribution"
+        #
+        # Note that this function will find a difference in the
+        # minimum values even though they are numerically equal.
+        # This is because the objects have different units that
+        # are not compatible. If compatible units were found,
+        # n2's values would have been converted to n1's units
+        # for each comparison.
+    }}}
+
+n.addPreset(label, desc, val[, units])
+    Purpose: add a preset to this object
+    Input Arguments: 3 or 4
+        1. label - label of the preset
+        2. desc - description of the preset
+        3. val - value of the preset, possibly with units
+        4. units - units of the preset
+    Return Value: None
+    Notes: presets are stored in the object in the same order
+                in which they are created
+    Code Example:
+    {{{
+        n = Rappture.Number("temperature","K",300,"0K","500K",
+                                "Ambiant Temperature",
+                                "Temperature of the environment"]
+        n.addPreset("Room Temperature","","300K")
+        n.addPreset("Liquid Nitrogen","",77,"K")
+        n.addPreset("Liquid Helium","","4.2K")
+
+        # 3 Presets stored in the Rappture.Number object
+    }}}
+
+n.delPreset(label)
+    Purpose: delete the preset labeled "label" from this object
+    Input Arguments: 1
+        1. label - label of the preset
+    Return Value: None
+    Notes: preset is removed from the object
+    Code Example:
+    {{{
+        n = Rappture.Number("temperature","K",300,"0K","500K",
+                                "Ambiant Temperature",
+                                "Temperature of the environment")
+        n.addPreset("Room Temperature","","300K")
+        n.addPreset("Liquid Nitrogen","",77,"K")
+        n.addPreset("Liquid Helium","","4.2K")
+
+        n.delPreset("Liquid Helium")
+        # 2 Presets stored in the Rappture.Number object
+    }}}
+
+n.configure(as, c)
+    Purpose: configure the object based on the data in "c".
+                use "as" to determine the type of data in "c".
+    Input Arguments: 2
+        1. as - type of data stored in "c".
+                valid values include:
+                    RPCONFIG_XML
+                    RPCONFIG_TREE
+        2. c - data to configure the object from.
+               if as is...     then c should be...
+               RPCONFIG_XML    const char *xmltext
+               RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+    {{{
+        n = Rappture.Number()
+        xmldata = """
+            <?xml version="1.0">
+            <number id="temperature">
+                <about>
+                    <label>Ambient temperature</label>
+                    <description>Temperature of the environment.</description>
+                </about>
+                <units>K</units>
+                <min>0K</min>
+                <max>500K</max>
+                <default>300K</default>
+            </number>
+        """
+
+        n.configure(RPCONFIG_XML,xmldata)
+        n.name()
+        # temperature
+        n.label()
+        # Ambient temperature
+        n.desc()
+        # Temperature of the environment.
+        n.units()
+        # K
+        n.min()
+        # 0
+        n.max()
+        # 500
+        n.def()
+        # 300
+    }}}
+
+n.dump(as, c)
+    Purpose: dump the object values based to the object "c".
+                use "as" to determine how to dump the data.
+    Input Arguments: 2
+        1. as - type of data stored in "c".
+                valid values include:
+                    RPCONFIG_XML
+                    RPCONFIG_TREE
+        2. c - data to configure the object from.
+               if as is...     then c should be...
+               RPCONFIG_XML    ClientDataXml *object
+               RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: None
+    Code Example:
+    {{{
+        n = Rappture.Number("temperature","K",300,"0K","500K",
+                                "Ambiant Temperature",
+                                "Temperature of the environment")
+        xmldata = n.dump(RPCONFIG_XML)
+        print xmldata
+
+        # <number id="temperature">
+        #     <about>
+        #         <label>Ambient temperature</label>
+        #         <description>Temperature of the environment.</description>
+        #     </about>
+        #     <units>K</units>
+        #     <min>0K</min>
+        #     <max>500K</max>
+        #     <default>300K</default>
+        # </number>
+    }}}
+
+n.outcome()
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 0
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+    {{{
+        n = Rappture.Number("temperature","K",300,"0K","500K",
+                                "Ambiant Temperature",
+                                "Temperature of the environment")
+        out = n.outcome()
+        if (out.value() != 0) {
+            sys.stderr.write(out.context())
+            sys.stderr.write(out.remark())
+        }
+    }}}
+
+n.is()
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 0
+    Return Value: integer tag unique to all number objects
+    Notes: None
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/python/plot
===================================================================
--- /tags/1.6.0/examples/objects/api/python/plot	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/python/plot	(revision 6168)
@@ -0,0 +1,703 @@
+Rappture.Plot
+
+constructors/destructors
+    Rappture.Plot([lib])
+    Rappture.Plot(o)
+
+methods
+    p.name([val])
+    p.path([val])
+    p.label([val])
+    p.desc([val])
+    p.hints([val])
+    p.color([val])
+    p.property(key[, val])
+    p.propremove(key)
+    p.add(x, y, fmt, name)
+    p.add(c, name)
+    p.count()
+    p.curve(name)
+    p.getNthCurve(n)
+    p.vvalue([...])
+    p.random()
+    p.diff(o)
+    p.configure(as, c)
+    p.dump(as, c)
+    p.outcome()
+    p.is()
+
+---------------------------------------
+Rappture.Plot([lib])
+    Purpose: construct a plot object
+    Input Arguments: at most 1
+        1. lib - Rappture library to associate this plot with
+    Return Value: a newly created, empty plot object
+    Notes: None
+    Code Example:
+    {{{
+        lib = Rappture.Library()
+        p = Rappture.Plot(lib)
+    }}}
+
+Rappture.Plot(o)
+    Purpose: construct a plot object based on plot object o
+    Input Arguments: 1
+        1. o - plot object to copy
+    Return Value: a newly created plot object
+    Notes: None
+    Code Example:
+    {{{
+        lib = Rappture.Library()
+        p1 = Rappture.Plot(lib)
+        p2 = Rappture.Plot(p1)
+    }}}
+
+
+p.name([val])
+    Purpose: get/set the id name of the object
+    Input Arguments: at most 1
+        1. val - new id name
+    Return Value: the name of the object
+    Notes: if no name is set, None will be returned
+           the id name is used to identify this object from
+           all other objects and should be unique
+           val, if provided, is used to set the object name
+    Code Example:
+    {{{
+        p = Rappture.Plot()
+        p.name()
+        # ""
+        p.name("fdfactor")
+        p.name()
+        # "fdfactor"
+    }}}
+
+p.path([val])
+    Purpose: get/set the path of the object
+    Input Arguments: at most 1
+        1. val - new path
+    Return Value: path of the object
+    Notes: if no path is set, None will be returned
+           the path tells where this object sits in the
+           hierarchy of objects.
+           val, if provided, is used to set the object path
+    Code Example:
+    {{{
+        p = Rappture.Plot()
+        p.path()
+        # ""
+        p.path("output")
+        p.path()
+        # "output"
+    }}}
+
+p.label([val])
+    Purpose: get/set the label of the object
+    Input Arguments: at most 1
+        1. val - new label
+    Return Value: label of the object
+    Notes: if no label is set, None will be returned
+           the label is used by the graphical user interface.
+           val, if provided, is used to set the object label
+    Code Example:
+    {{{
+        p = Rappture.Plot()
+        p.label()
+        # ""
+        p.label("Fermi-Dirac Factor")
+        p.label()
+        # "Fermi-Dirac Factor"
+    }}}
+
+p.desc([val])
+    Purpose: get/set the description of the object
+    Input Arguments: at most 1
+        1. val - new description
+    Return Value: description of the object
+    Notes: if no description is set, None will be returned
+           the description is used by the graphical user
+           interface to describe what type of data is being
+           requested and how the input is used.
+           val, if provided, is used to set the object description
+    Code Example:
+    {{{
+        p = Rappture.Plot()
+        p.desc()
+        # ""
+        p.desc("A plot of the Fermi-Dirac Factor")
+        p.desc()
+        # "A plot of the Fermi-Dirac Factor"
+    }}}
+
+p.hints([val])
+    Purpose: get/set the hints of the object
+    Input Arguments: at most 1
+        1. val - new hints
+    Return Value: hints of the object
+    Notes: if no hints are set, None will be returned
+           the hints are used by the graphical user interface
+           val, if provided, is used to set the object hints
+    Code Example:
+    {{{
+        p = Rappture.Plot()
+        p.hints()
+        # ""
+        p.hints("no hints")
+        p.hint()
+        # "no hints"
+    }}}
+
+p.color([val])
+    Purpose: get/set the color of the object
+    Input Arguments: at most 1
+        1. val - new color
+    Return Value: color of the object
+    Notes: if no color is set, None will be returned
+           the color is used by the graphical user interface
+           val, if provided, is used to set the object color
+    Code Example:
+    {{{
+        p = Rappture.Plot()
+        p.color()
+        # ""
+        p.color("no color")
+        p.color()
+        # "no color"
+    }}}
+
+p.property(key[, val])
+    Purpose: get/set a generic property in the property database
+    Input Arguments: at most 2
+        1. key - property name
+        2. val - property value
+    Return Value: value of the property
+    Notes: A copy val is stored in the property database
+    Code Example:
+    {{{
+        p = Rappture.Plot()
+        p.property("name")
+        # ""
+        p.property("name","fdfactor")
+        # "fdfactor"
+        p.name()
+        # "fdfactor"
+    }}}
+
+p.propremove(key)
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+    {{{
+        p = Rappture.Plot()
+        p.name("fdfactor")
+        p.property("name")
+        # "fdfactor"
+        p.propremove("name")
+        # "fdfactor"
+        p.property("name")
+        # ""
+    }}}
+
+p.add(x, y, fmt, name)
+    Purpose: add data for an xy curve to the plot
+    Input Arguments: 4
+        1. x - list/array representing the x axis
+        2. y - list/array representing the y axis
+        3. fmt - string format of the line
+        4. name - string id of the newly created curve
+    Return Value: Outcome object
+    Notes: format can be something like "g:o" to represent
+            green line, dotted line style, circle marker.
+            this follows matlab's formatting rules.
+    Code Example:
+    {{{
+        x = list()
+        y = list()
+        for i in range(0,10) :
+            x.append(i)
+            y.append(pow(i,2))
+
+        p = Rappture.Plot()
+        p.add(x, y, fmt="g:o", name="xsquared")
+        # a single curve, named "xsquared", is stored in the plot object
+    }}}
+
+p.add(c, name)
+    Purpose: add a Curve object to this Plot object
+    Input Arguments: 2
+        1. c - Curve object to add
+        2. name - id of the Curve object
+    Return Value: Outcome object
+    Notes: Curve object should not be deleted by user?
+    Code Example:
+    {{{
+        x = list()
+        y = list()
+        for i in range(0,10) :
+            x.append(i)
+            y.append(pow(i,2))
+
+        c = Rappture.Curve()
+
+        c.axis(name="xvals", label="X Values",
+                desc="Values along the X axis" val=x)
+
+        c.axis(name="yvals", label="Y Values",
+                desc="Values along the Y axis", val=y)
+
+        p = Rappture.Plot()
+        p.add(c, name="xsquared")
+        # a single curve, named "xsquared", is stored in the plot object
+    }}}
+
+p.count()
+    Purpose: retrieve the number of curves in this Plot object
+    Input Arguments: 0
+    Return Value: number of curves stored in the object
+    Notes: None
+    Code Example:
+    {{{
+        x = list()
+        y1 = list()
+        y2 = list()
+        for i in range(0,10) :
+            x.append(i)
+            y1.append(pow(i,2))
+            y2.append(pow(i,3))
+        }
+
+        p = Rappture.Plot()
+        p.add(x, y1, format="g:o", name="xsquared")
+        p.add(x, y2, format="b-o", name="xcubed")
+        print p.count()
+        # 2
+    }}}
+
+p.curve(name)
+    Purpose: retrieve the curve with the id matching "name"
+    Input Arguments: 1
+        1. name - id to Curve to be retrieved
+    Return Value: Curve object matching "name" or None
+    Notes: None
+    Code Example:
+    {{{
+        x = list()
+        y1 = list()
+        y2 = list()
+        for i in range(0,10) :
+            x.append(i)
+            y1.append(pow(i,2))
+            y2.append(pow(i,3))
+        }
+
+        p = Rappture.Plot()
+        p.add(x, y1, format="g:o", name="xsquared")
+        p.add(x, y2, format="b-o", name="xcubed")
+        c = p.curve("xsquared")
+        print c.name()
+        # xsquared
+    }}}
+
+p.getNthCurve(n)
+    Purpose: return the n'th curve stored in the object
+    Input Arguments: 1
+        1. n - number of the curve to retrieve
+    Return Value: the n'th Curve object stored in
+                  the Plot object or None
+    Notes: None
+    Code Example:
+    {{{
+        x = list()
+        y1 = list()
+        y2 = list()
+        for i in range(0,10) :
+            x.append(i)
+            y1.append(pow(i,2))
+            y2.append(pow(i,3))
+        }
+
+        p = Rappture.Plot()
+        p.add(x, y1, format="g:o", name="xsquared")
+        p.add(x, y2, format="b-o", name="xcubed")
+        c = p.getNthCurve(1)
+        print c.name()
+        # xcubed
+    }}}
+
+p.vvalue([...])
+    Purpose: return the value of the object after applying a
+             varying number of hints about how the value
+             should be configured
+    Input Arguments: variable numbber
+        1. variable number of hints
+    Return Value: value of the object
+    Notes: vvalue will parse out the recognisable hints from
+           va_list arg. Values stored in the object are
+           not changed. Hints should be of the form
+           hintKey=hintVal
+    Code Example:
+    {{{
+        x = list()
+        y1 = list()
+        y2 = list()
+        for i in range(0,10) :
+            x.append(i)
+            y1.append(pow(i,2))
+            y2.append(pow(i,3))
+        }
+
+        p = Rappture.Plot()
+        p.add(x, y1, format="g:o", name="xsquared")
+        p.add(x, y2, format="b-o", name="xcubed")
+        print p.vvalue()
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+
+    }}}
+
+p.random();
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+    {{{
+        p = Rappture.Plot()
+        p.random()
+        # plot is filed with random data
+        print p.vvalue()
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 2 3 4 5 6 7 8 9 10] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+        print p.count()
+        # 3
+
+    }}}
+
+p.diff(o);
+    Purpose: return a list showing the differences between
+             this object and Rappture Object o
+    Input Arguments: 1
+        1. o - Rappture Object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+    {{{
+        p1 = Rappture.Plot()
+        p1.random()
+        # plot is filed with random data
+        print p.vvalue()
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] ]
+
+        p2 = Rappture.Plot()
+        p2.random()
+        # plot is filed with random data
+        print p.vvalue()
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+
+        diffs = p1.diff(p2)
+        # diffs is a list of tuples or list of lists.
+
+        for ctype, prop, oVal, nVal in diffs {
+            print "%s %s %s %s" % (ctype, prop, oVal, nVal)"
+        }
+        # c name temperature Ef
+        # c units K eV
+        # c def 300 4.5
+        # c min 0 0
+        # c max 500 10
+        # c label "Ambiant Temperature" "Fermi Level"
+        # c desc "Temperature of the environment" "Energy at center of distribution"
+        #
+        # Note that this function will find a difference in the
+        # minimum values even though they are numerically equal.
+        # This is because the objects have different units that
+        # are not compatible. If compatible units were found,
+        # n2's values would have been converted to n1's units
+        # for each comparison.
+        #
+        # if diffs is a flat list, user would need to write something like this:
+        # for i in range(len(diffs)/4):
+        #     ctype, prop, oVal, nVal = diffs[(i*4):(i*4)+4]
+        #     print ctype, prop, oVal, nVal
+
+    }}}
+
+p.configure(as, c)
+    Purpose: configure the object based on the data in "c".
+             use "as" to determine the type of data in "c".
+    Input Arguments: 2
+        1. as - type of data stored in "c".
+                valid values include:
+                    RPCONFIG_XML
+                    RPCONFIG_TREE
+        2. c - data to configure the object from.
+               if as is...     then c should be...
+               RPCONFIG_XML    const char *xmltext
+               RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+    {{{
+        p = Rappture.Plot()
+        xmldata = """
+            <?xml version="1.0">
+            <curve id="xsquared">
+                <about>
+                    <group>auto34</group>
+                    <label>x squared</label>
+                    <description>x values are squared</description>
+                    <type></type>
+                    <format>g:o</format>
+                </about>
+                <xaxis>
+                    <label>x values</label>
+                    <description>values being squared</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </xaxis>
+                <yaxis>
+                    <label>y values</label>
+                    <description>squared values</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </yaxis>
+                <component>
+                    <xy>         1         1
+                 2         4
+                 3         9
+                 4        16
+                 5        25
+                 6        36
+                 7        49
+                 8        64
+                 9        81
+                10       100
+                    </xy>
+                </component>
+            </curve>
+            <curve id="xcubed">
+                <about>
+                    <group>auto34</group>
+                    <label>x cubed</label>
+                    <description>x values are cubed</description>
+                    <type></type>
+                    <format>b-o</format>
+                </about>
+                <xaxis>
+                    <label>x values</label>
+                    <description>values being cubed</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </xaxis>
+                <yaxis>
+                    <label>y values</label>
+                    <description>cubed values</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </yaxis>
+                <component>
+                    <xy>         1         1
+                 2         8
+                 3        27
+                 4        64
+                 5       125
+                 6       216
+                 7       343
+                 8       512
+                 9       729
+                10      1000
+                    </xy>
+                </component>
+            </curve>
+        """
+
+        p.configure(RPCONFIG_XML,xmldata)
+        print p.vvalue()
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+
+        for cur in range(p.count()):
+            c = p.getNthCurve(cur)
+            print c.name()
+            print c.label()
+            print c.desc()
+            print c.format()
+            for axisCnt in range(c.dims()):
+                axis = c.getNthAxis(axisCnt)
+                print axis.label()
+                print axis.desc()
+                print axis.units()
+                print axis.scale()
+                print axis.data()
+        # xsquared
+        # x squared
+        # x values are squared
+        # g:o
+        # xaxis
+        # x values
+        # values being squared
+        #
+        # linear
+        # [1 2 3 4 5 6 7 8 9 10]
+        # yaxis
+        # y values
+        # squared values
+        #
+        # linear
+        # [1 4 9 16 25 36 49 64 81 100]
+        # xcubed
+        # x cubed
+        # x values are cubed
+        # b-o
+        # xaxis
+        # x values
+        # values being cubed
+        #
+        # linear
+        # [1 2 3 4 5 6 7 8 9 10]
+        # yaxis
+        # y values
+        # cubed values
+        #
+        # linear
+        # [1 8 27 64 125 216 343 512 729 1000]
+
+    }}}
+
+p.dump(as, c)
+    Purpose: dump the object values based to the object "c".
+             use "as" to determine how to dump the data.
+    Input Arguments: 2
+        1. as - type of data stored in "c".
+                valid values include:
+                    RPCONFIG_XML
+                    RPCONFIG_TREE
+        2. c - data to configure the object from.
+               if as is...     then c should be...
+               RPCONFIG_XML    ClientDataXml *object
+               RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: None
+    Code Example:
+    {{{
+        x = list()
+        y1 = list()
+        y2 = list()
+        for i in range(0,10) :
+            x.append(i)
+            y1.append(pow(i,2))
+            y2.append(pow(i,3))
+        }
+
+        p = Rappture.Plot()
+        p.add(x, y1, format="g:o", name="xsquared")
+        p.add(x, y2, format="b-o", name="xcubed")
+        print p.dump(RPCONFIG_XML)
+        # <curve id="xsquared">
+        #     <about>
+        #         <group>auto34</group>
+        #         <label></label>
+        #         <description></description>
+        #         <type>(null)</type>
+        #         <format>g:o</format>
+        #     </about>
+        #     <xaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </xaxis>
+        #     <yaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </yaxis>
+        #     <component>
+        #         <xy>         1         1
+        #      2         4
+        #      3         9
+        #      4        16
+        #      5        25
+        #      6        36
+        #      7        49
+        #      8        64
+        #      9        81
+        #     10       100
+        #         </xy>
+        #     </component>
+        # </curve>
+        # <curve id="xcubed">
+        #     <about>
+        #         <group>unnamed</group>
+        #         <label></label>
+        #         <description></description>
+        #         <type>(null)</type>
+        #         <format>b-o</format>
+        #     </about>
+        #     <xaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </xaxis>
+        #     <yaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </yaxis>
+        #     <component>
+        #         <xy>         1         1
+        #      2         8
+        #      3        27
+        #      4        64
+        #      5       125
+        #      6       216
+        #      7       343
+        #      8       512
+        #      9       729
+        #     10      1000
+        #         </xy>
+        #     </component>
+        # </curve>
+
+    }}}
+
+p.outcome()
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 0
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+    {{{
+        p = Rappture.Plot()
+        out = p.outcome()
+        if (out.value() != 0) {
+            sys.stderr.write(out.context())
+            sys.stderr.write(out.remark())
+        }
+    }}}
+
+
+p.is()
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 0
+    Return Value: integer tag unique to all number objects
+    Notes: None
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/tcl/library
===================================================================
--- /tags/1.6.0/examples/objects/api/tcl/library	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/tcl/library	(revision 6168)
@@ -0,0 +1,550 @@
+Rappture::Library
+
+constructors
+    Rappture::Library ?<lib2>?
+
+methods
+    loadXml <xmltext>
+    loadFile <filename>
+    value <key> ?<hints>?
+    diff <lib2>
+    remove <key>
+    xml
+    outcome
+    error
+    result <status>
+    contains
+
+---------------------------------------
+
+Rappture::Library ?<lib2>?
+    Purpose: construct a Rappture Library object. If the optional
+             Rappture Library object argument is provided, create
+             a copy of a Rappture Library object
+    Input Arguments: at most 1
+        1. lib2 - Rappture Library object to be copied
+    Return Value: a newly created Rappture Library object
+    Notes: None
+    Code Example:
+    {{{
+        set lib [Rappture::Library]
+        set libTwo [Rappture::Library $lib]
+    }}}
+
+loadXml <xmltext>
+    Purpose: parse the Rappture1.1 xml data in "xmltext".
+             populate this library object with the Rappture
+             objects described in the xml data.
+    Input Arguments: 1
+        1. xmltext - string of Rappture1.1 xml data
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+    {{{
+        set data {
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id=\"temperature\">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        }
+
+        set lib [Rappture::Library]
+        $lib loadXml $data
+    }}}
+
+loadFile <filename>
+    Purpose: read the file "filename" and parse the
+             Rappture1.1 xml data found inside of it.
+             populate this library object with the Rappture
+             objects described in the xml data.
+    Input Arguments: 1
+        1. filename - name of file containing Rappture1.1
+                      xml data
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+    {{{
+        set data {
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        }
+
+        set filename "driver1234.xml"
+        set fp [open $filename "w"]
+        puts -nonewline $fp $data
+        close $fp
+
+        set lib [Rappture::Library]
+        $lib loadFile $filename
+    }}}
+
+value <key> ?-hints <hints>?
+    Purpose: retrieve the value of the object named "key" and
+             return it to the user. If there are hints,
+             pass them along to the object being retrieved
+             to tell it how the value should be configured.
+    Input Arguments: at least 1
+        1. key - name of the object being retrieved
+        2. hints - list of key/value hint pairs
+    Return Value: value of the object named key
+    Notes: hints are listed as hintKey/hintVal pairs inside of a
+           list. hintKey is the key for the hint and hintVal is
+           the value to be applied to the hint. generally,
+           unrecognized hints are ignored.
+    Code Example:
+    {{{
+        set data {
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        }
+
+        set lib [Rappture::Library]
+        $lib loadXml $data
+        set temp [$lib value "temperature" -hints "units F"]
+        puts "temp = $temp"
+        # temp = 80.33
+    }}}
+
+diff <lib2>
+    Purpose: find the difference between two library objects
+    Input Arguments: 1
+        1. lib2 - other object used in comparison
+    Return Value: List of differences
+    Notes: only object values are compared for differences,
+           input and output sections are compared.
+    Code Example:
+    {{{
+        set data1 {
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                    <number id="forel">
+                        <about>
+                            <label>Forel</label>
+                            <description>Environment</description>
+                        </about>
+                        <units>cm</units>
+                        <min>4cm</min>
+                        <max>183cm</max>
+                        <default>72cm</default>
+                    </number>
+                    <integer id="toops">
+                        <about>
+                            <label>Toops</label>
+                            <description>Icks hafra doec weple</description>
+                        </about>
+                        <default>33</default>
+                    </integer>
+                </input>
+            </run>
+        }
+
+        set data2 {
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <integer id="toops">
+                        <about>
+                            <label>Toops</label>
+                            <description>Icks hafra doec weple</description>
+                        </about>
+                        <default>33</default>
+                    </integer>
+                    <number id="Ef">
+                        <about>
+                            <label>Fermi Level</label>
+                            <description>Energy at center of distribution.</description>
+                        </about>
+                        <units>eV</units>
+                        <min>-10eV</min>
+                        <max>10eV</max>
+                        <default>0eV</default>
+                    </number>
+                    <number id="forel">
+                        <about>
+                            <label>Forel</label>
+                            <description>Environment</description>
+                        </about>
+                        <units>cm</units>
+                        <min>4cm</min>
+                        <max>183cm</max>
+                        <default>109cm</default>
+                    </number>
+                </input>
+            </run>
+        }
+
+        set lib1 [Rappture::Library]
+        $lib1 loadXml $data1
+
+        set lib2 [Rappture::Library]
+        $lib2 loadXml $data2
+
+        set diffs [$lib1 diff $lib2]
+        # - input.number(temperature) 300K
+        # c input.number(forel) 72cm 109cm
+        # + input.number(Ef)  0eV
+    }}}
+
+remove <key>
+    Purpose: remove the object from this library named "key"
+    Input Arguments: 1
+        1. key - name of the object to remove
+    Return Value: None
+    Notes: The object is removed and it's memory is deleted
+    Code Example:
+    {{{
+        set data {
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                    <number id="Ef">
+                        <about>
+                            <label>Fermi Level</label>
+                            <description>Energy at center of distribution.</description>
+                        </about>
+                        <units>eV</units>
+                        <min>-10eV</min>
+                        <max>10eV</max>
+                        <default>0eV</default>
+                    </number>
+                </input>
+            </run>
+        }
+
+        set lib [Rappture::Library]
+        $lib loadXml $data
+        $lib remove "Ef"
+        puts [$lib xml]
+
+        # <?xml version="1.0"?>
+        # <run>
+        #     <tool>
+        #         <about>Press Simulate to view results.</about>
+        #         <command>@tool/fermi @driver</command>
+        #     </tool>
+        #     <input>
+        #         <number id="temperature">
+        #             <about>
+        #                 <label>Ambient temperature</label>
+        #                 <description>Temperature of the environment.</description>
+        #             </about>
+        #             <units>K</units>
+        #             <min>0K</min>
+        #             <max>500K</max>
+        #             <default>300K</default>
+        #         </number>
+        #     </input>
+        # </run>
+    }}}
+
+xml
+    Purpose: return the Rappture1.1 xml representation of the
+             objects stored in this library.
+    Input Arguments: 0
+    Return Value: None
+    Notes: None
+    Code Example:
+    {{{
+        set data {
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        }
+
+        set lib [Rappture::Library]
+        $lib loadXml $data
+        puts [$lib xml]
+
+        # <?xml version="1.0"?>
+        # <run>
+        #     <tool>
+        #         <about>Press Simulate to view results.</about>
+        #         <command>@tool/fermi @driver</command>
+        #     </tool>
+        #     <input>
+        #         <number id="temperature">
+        #             <about>
+        #                 <label>Ambient temperature</label>
+        #                 <description>Temperature of the environment.</description>
+        #             </about>
+        #             <units>K</units>
+        #             <min>0K</min>
+        #             <max>500K</max>
+        #             <default>300K</default>
+        #         </number>
+        #     </input>
+        # </run>
+    }}}
+
+outcome
+    Purpose: return the status of the object
+    Input Arguments: 0
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+    {{{
+        set data {
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id=\"temperature\">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        }
+
+        set lib [Rappture::Library]
+        $lib loadXml $data
+        if {[$lib error] != 0} {
+            puts "there was an error while loading xml data"
+            set outcome [$lib outcome]
+            puts stderr [$outcome context]
+            puts stderr [$outcome remark]
+        }
+    }}}
+
+error
+    Purpose: return the status of the object
+    Input Arguments: 0
+    Return Value: status of the object
+    Notes: None
+    Code Example:
+    {{{
+        set data {
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        }
+
+        set lib [Rappture::Library]
+        $lib loadXml $data
+        if {[$lib error] != 0} {
+            puts "there was an error while loading xml data"
+            set outcome [$lib outcome]
+            puts stderr [$outcome context]
+            puts stderr [$outcome remark]
+        }
+    }}}
+
+result <status>
+    Purpose: write the stored objects to a data file and
+             signal the end of processing.
+    Input Arguments: 1
+        1. int status - status of the simulation
+    Return Value: None
+    Notes: currently data file are written out as Rappture1.1
+            xml. this function generates the =RAPPTURE-RUN=>
+            signal.
+    Code Example:
+    {{{
+        set data {
+            <?xml version="1.0"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id="temperature">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                </input>
+            </run>
+        }
+
+        set lib [Rappture::Library]
+        $lib loadXml $data
+        $lib result
+        # internal xml objects free'd
+        # driver file written to disk
+        # =RAPPTURE-RUN=>driver1234.xml signal sent to stdout
+    }}}
+
+contains
+    Purpose: return a list of the Rappture objects
+             stored in this library.
+    Input Arguments: 0
+    Return Value: list of the Rappture objects stored in
+                  this library.
+    Notes: None
+    Code Example:
+    {{{
+        set data {
+            <?xml version=\"1.0\"?>
+            <run>
+                <tool>
+                    <about>Press Simulate to view results.</about>
+                    <command>@tool/fermi @driver</command>
+                </tool>
+                <input>
+                    <number id=\"temperature\">
+                        <about>
+                            <label>Ambient temperature</label>
+                            <description>Temperature of the environment.</description>
+                        </about>
+                        <units>K</units>
+                        <min>0K</min>
+                        <max>500K</max>
+                        <default>300K</default>
+                    </number>
+                    <number id=\"Ef\">
+                        <about>
+                            <label>Fermi Level</label>
+                            <description>Energy at center of distribution.</description>
+                        </about>
+                        <units>eV</units>
+                        <min>-10eV</min>
+                        <max>10eV</max>
+                        <default>0eV</default>
+                    </number>
+                </input>
+            </run>
+        }
+
+        set lib [Rappture::Library]
+        $lib loadXml $data
+        set xmlObjs [$lib contains]
+        llength $xmlObjs
+        # 2
+        # xmlObjs contains objects (pointers or copies of objects?)
+        set xmlObjs
+        # ::Rappture::Number ::Rappture::Number
+        foreach obj $xmlObjs {
+            $obj vvalue
+        }
+        # 300
+        # 0
+    }}}
Index: /tags/1.6.0/examples/objects/api/tcl/number
===================================================================
--- /tags/1.6.0/examples/objects/api/tcl/number	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/tcl/number	(revision 6168)
@@ -0,0 +1,575 @@
+Rappture::Number
+
+constructors/destructors
+    Rappture::Number ?<name> <units> <val> [<min> <max> <label> <desc>]?
+    Rappture::Number <numObj>
+
+methods
+    name ?<val>?
+    path ?<val>?
+    label ?<val>?
+    desc ?<val>?
+    hints ?<val>?
+    color ?<val>?
+    def ?<val>?
+    cur ?<val>?
+    min ?<val>?
+    max ?<val>?
+    units ?<u>?
+    property <key> ?<val>?
+    propremove <key>
+    convert <to>
+    value <units>
+    vvalue ?<hints>?
+    random
+    diff <numObj>
+    addPreset <label> <desc> <val> ?<units>?
+    delPreset <label>
+    configure -as <as> <c>
+    dump -as <as>
+    outcome
+    is
+
+---------------------------------------
+Rappture::Number ?<name> <units> <val> [<min> <max> <label> <desc>]?
+    Purpose: construct a number object
+    Input Arguments: 0, 3 or 7
+        1. name - object's name
+        2. units - object's units
+        3. val - default value
+        4. min - minimum accepted value
+        5. max - maximum accepted value
+        6. label - object's label
+        7. desc - object's description
+    Return Value: a newly created number object
+    Notes: input arguments are used to construct the number object
+    Code Example:
+    {{{
+        set n1 [Rappture::Number]
+        set n2 [Rappture::Number "temperature" "K" 300]
+        set n3 [Rappture::Number "temperature" "K" 300 0K 500K \
+                                 "Ambiant Temperature" \
+                                 "Temperature of the environment"]
+    }}}
+
+Rappture::Number <numObj>
+    Purpose: construct a number object based on number object numObj
+    Input Arguments: 1
+        1. numObj - number object to copy
+    Return Value: a newly created number object
+    Notes: None
+    Code Example:
+    {{{
+        set n1 [Rappture::Number]
+        set n2 [Rappture::Number $n1]
+    }}}
+
+name ?<val>?
+    Purpose: get/set the id name of the object
+    Input Arguments: at most 1
+        1. val - new id name
+    Return Value: the name of the object
+    Notes: if no name is set, an empty string will be returned
+           the id name is used to identify this object from
+           all other objects and should be unique
+           val, if provided, is used to set the object name
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n name
+        # ""
+        $n name "temperature"
+        $n name
+        # "temperature"
+    }}}
+
+path ?<val>?
+    Purpose: get/set the path of the object
+    Input Arguments: at most 1
+        1. val - new path
+    Return Value: path of the object
+    Notes: if no path is set, an empty string will be returned
+           the path tells where this object sits in the
+           hierarchy of objects.
+           val, if provided, is used to set the object path
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n path
+        # ""
+        $n path "input"
+        $n path
+        # "input"
+    }}}
+
+label ?<val>?
+    Purpose: get/set the label of the object
+    Input Arguments: at most 1
+        1. val - new label
+    Return Value: label of the object
+    Notes: if no label is set, an empty string will be returned
+           the label is used by the graphical user interface.
+           val, if provided, is used to set the object label
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n label
+        # ""
+        $n label "Ambiant temperature"
+        $n label
+        # "Ambiant temperature"
+    }}}
+
+desc ?<val>?
+    Purpose: get/set the description of the object
+    Input Arguments: at most 1
+        1. val - new description
+    Return Value: description of the object
+    Notes: if no description is set, an empty string will be returned
+           the description is used by the graphical user
+           interface to describe what type of data is being
+           requested and how the input is used.
+           val, if provided, is used to set the object description
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n desc
+        # ""
+        $n desc "Temperature of the environment"
+        $n desc
+        # "Temperature of the environment"
+    }}}
+
+hints ?<val>?
+    Purpose: get/set the hints of the object
+    Input Arguments: at most 1
+        1. val - new hints
+    Return Value: hints of the object
+    Notes: if no hints are set, an empty string will be returned
+           the hints are used by the graphical user interface
+           val, if provided, is used to set the object hints
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n hints
+        # ""
+        $n hints "none"
+        $n hints
+        # "none"
+    }}}
+
+color ?<val>?
+    Purpose: get/set the color of the object
+    Input Arguments: at most 1
+        1. val - new color
+    Return Value: color of the object
+    Notes: if no color is set, an empty string will be returned
+           the color is used by the graphical user interface
+           val, if provided, is used to set the object color
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n color
+        # ""
+        $n color "none"
+        $n color
+        # "none"
+    }}}
+
+def ?<val>?
+    Purpose: get/set the default value
+    Input Arguments: at most 1
+        1. val - new default value
+    Return Value: default value of the object
+    Notes: if no default is set, an empty string will be returned
+           val, if provided, is used to set the object default value
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n def
+        # ""
+        $n def 300
+        $n def
+        # 300
+    }}}
+
+cur ?<val>?
+    Purpose: get/set the current value
+    Input Arguments: at most 1
+        1. val - new current value
+    Return Value: current value of the object
+    Notes: if no current is set, an empty string will be returned
+           val, if provided, is used to set the object current value
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n cur
+        # ""
+        $n cur 450
+        $n cur
+        # 450
+    }}}
+
+min ?<val>?
+    Purpose: get/set the minimum accepted value of this object
+    Input Arguments: at most 1
+        1. double val - new minimum accepted value
+    Return Value: the minimum value this object will accept.
+    Notes: if no min is set, an empty string will be returned
+           val, if provided, is used to set the object min
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n min
+        # ""
+        $n min 0
+        $n min
+        # 0
+    }}}
+
+max ?<val>?
+    Purpose: get/set the maximum accepted value of this object
+    Input Arguments: 1
+        1. val - new maximum accepted value
+    Return Value: the maximum value this object will accept.
+    Notes: if no max is set, an empty string will be returned
+           val, if provided, is used to set the object max
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n max
+        # ""
+        $n max 500
+        $n max
+        # 500
+    }}}
+
+units ?<u>?
+    Purpose: get/set the units of this object
+    Input Arguments: 1
+        1. val - new units
+    Return Value: the string representing the object's units
+    Notes: if no units are set, None will be returned
+           val, if provided, is used to set the object units
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n units
+        # ""
+        $n units "K"
+        $n units
+        # "K"
+    }}}
+
+property <key> ?<val>?
+    Purpose: get/set a generic property in the property database
+    Input Arguments: at most 2
+        1. key - property name
+        2. val - property value
+    Return Value: value of the property
+    Notes: A copy val is stored in the property database
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n property "units"
+        # ""
+        $n property "units" "K"
+        # "K"
+        $n units
+        # "K"
+    }}}
+
+propremove <key>
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+    {{{
+        set n [Rappture::Number "temperature" "K" 300]
+        $n property "units"
+        # "K"
+        $n propremove "units"
+        # "K"
+        $n property "units"
+        # ""
+    }}}
+
+convert <to>
+    Purpose: convert the def and cur values to "to" units
+    Input Arguments: 1
+        1. to - string of units to convert to
+    Return Value: Outcome object
+    Notes: the values stored in the object are changed
+    Code Example:
+    {{{
+        set n [Rappture::Number "temperature" "K" 300]
+        $n min 0K
+        $n max 500K
+        $n cur 450
+        set out [$n convert "F"]
+        if {[$out value] != 0} {
+            puts stderr [$out context]
+            puts stderr [$out remark]
+        }
+        $n min
+        # -459.67
+        $n max
+        # 440.33
+        $n def
+        # 80.33
+        $n cur
+        # 350.33
+    }}}
+
+value <units>
+    Purpose: return the value of the object with units of "to"
+    Input Arguments: 1
+        1. to - string of units to convert to
+    Return Value: value of the object
+    Notes: cur() is used as the base value. if cur was not set
+            by the user ("" == cur()), def() is used.
+            if def was not set ("" == def()), 0.0 is used
+            as the value.
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n value
+        # 0
+        $n def 300
+        $n value
+        # 300
+        $n cur 450
+        $n value
+        # 450
+        $n value "F"
+        # 350.33
+    }}}
+
+vvalue ?<hints>?
+    Purpose: return the value of the object after applying a
+                varying number of hints about how the value
+                should be configured
+    Input Arguments:
+        1. variable number of hints
+    Return Value: value of the object after applying hints.
+    Notes: vvalue will parse out the recognisable hints from
+                va_list arg. Values stored in the object are
+                not changed. Hint strings should have the form
+                hintKey=hintVal and be comma separated
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n cur 450
+        $n vvalue
+        # 450
+        $n vvalue "units F"
+        # 350.33
+    }}}
+
+random
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        $n random
+        $n cur
+        # 1042.34
+        # should be something more like:
+        # $n configure -min 30 -max 30
+        # $n random
+        $n min -30
+        $n max 30
+        $n random
+        $n cur
+        # 16.89
+    }}}
+
+diff <numObj>
+    Purpose: return a list showing the differences between
+             this object and Rappture Object o
+    Input Arguments: 1
+        1. o - Rappture Object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+    {{{
+        set n1 [Rappture::Number "temperature" "K" 300 0K 500K \
+                                 "Ambiant Temperature" \
+                                 "Temperature of the environment"]
+        set n2 [Rappture::Number "Ef" "eV" 4.5eV 0eV 10eV]
+                                 "Fermi Level" \
+                                 "Energy at center of distribution"]
+        set diffs [$n1 diff $n2]
+
+        foreach {ctype prop oVal nVal} $diffs {
+            puts "$ctype $prop $oval $nVal"
+        }
+        # c name temperature Ef
+        # c units K eV
+        # c def 300 4.5
+        # c min 0 0
+        # c max 500 10
+        # c label "Ambiant Temperature" "Fermi Level"
+        # c desc "Temperature of the environment" "Energy at center of distribution"
+        #
+        # Note that this function will find a difference in the
+        # minimum values even though they are numerically equal.
+        # This is because the objects have different units that
+        # are not compatible. If compatible units were found,
+        # n2's values would have been converted to n1's units
+        # for each comparison.
+    }}}
+
+addPreset <label> <desc> <val> ?<units>?
+    Purpose: add a preset to this object
+    Input Arguments: 3 or 4
+        1. label - label of the preset
+        2. desc - description of the preset
+        3. val - value of the preset, possibly with units
+        4. units - units of the preset
+    Return Value: None
+    Notes: presets are stored in the object in the same order
+                in which they are created
+    Code Example:
+    {{{
+        set n [Rappture::Number "temperature" "K" 300 0K 500K \
+                                "Ambiant Temperature" \
+                                "Temperature of the environment"]
+        $n addPreset "Room Temperature" "" 300K
+        $n addPreset "Liquid Nitrogen" "" 77 "K"
+        $n addPreset "Liquid Helium" "" "4.2K"
+
+        # 3 Presets stored in the Rappture::Number object
+    }}}
+
+delPreset <label>
+    Purpose: delete the preset labeled "label" from this object
+    Input Arguments: 1
+        1. label - label of the preset
+    Return Value: None
+    Notes: preset is removed from the object
+    Code Example:
+    {{{
+        set n [Rappture::Number "temperature" "K" 300 0K 500K \
+                                "Ambiant Temperature" \
+                                "Temperature of the environment"]
+        $n addPreset "Room Temperature" "" 300K
+        $n addPreset "Liquid Nitrogen" "" 77 "K"
+        $n addPreset "Liquid Helium" "" "4.2K"
+
+        $n delPreset "Liquid Helium"
+        # 2 Presets stored in the Rappture::Number object
+    }}}
+
+configure -as <as> <c>
+    Purpose: configure the object based on the data in "c".
+                use "as" to determine the type of data in "c".
+    Input Arguments: 2
+        1. as - type of data stored in "c".
+                valid values include:
+                    RPCONFIG_XML
+                    RPCONFIG_TREE
+        2. c - data to configure the object from.
+               if as is...     then c should be...
+               RPCONFIG_XML    const char *xmltext
+               RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+           Currently there is no way to configure as tree.
+    Code Example:
+    {{{
+        set n [Rappture::Number]
+        set xmldata {
+            <?xml version="1.0">
+            <number id="temperature">
+                <about>
+                    <label>Ambient temperature</label>
+                    <description>Temperature of the environment.</description>
+                </about>
+                <units>K</units>
+                <min>0K</min>
+                <max>500K</max>
+                <default>300K</default>
+            </number>
+        }
+
+        $n configure -as RPCONFIG_XML $xmldata
+        $n name
+        # temperature
+        $n label
+        # Ambient temperature
+        $n desc
+        # Temperature of the environment.
+        $n units
+        # K
+        $n min
+        # 0
+        $n max
+        # 500
+        $n def
+        # 300
+    }}}
+
+dump -as <as>
+    Purpose: dump the object value.
+             use "as" to determine how to dump the data.
+    Input Arguments: 1
+        1. as - type of data stored in "c".
+                valid values include:
+                    RPCONFIG_XML
+                    RPCONFIG_TREE
+    Return Value:
+               if as is...     then return the following...
+               RPCONFIG_XML    ClientDataXml *object
+               RPCONFIG_TREE   RP_ParserXML *object
+    Notes: None
+    Code Example:
+    {{{
+        set n [Rappture::Number "temperature" "K" 300 0K 500K \
+                                "Ambiant Temperature" \
+                                "Temperature of the environment"]
+        set xmldata [$n dump -as RPCONFIG_XML]
+        puts $xmldata
+
+        # <number id="temperature">
+        #     <about>
+        #         <label>Ambient temperature</label>
+        #         <description>Temperature of the environment.</description>
+        #     </about>
+        #     <units>K</units>
+        #     <min>0K</min>
+        #     <max>500K</max>
+        #     <default>300K</default>
+        # </number>
+    }}}
+
+outcome
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 0
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+    {{{
+        set n [Rappture::Number "temperature" "K" 300 0K 500K \
+                                "Ambiant Temperature" \
+                                "Temperature of the environment"]
+        set out [$n outcome]
+        if {[$out value] != 0} {
+            puts stderr [$out context]
+            puts stderr [$out remark]
+        }
+    }}}
+
+is
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 0
+    Return Value: integer tag unique to all number objects
+    Notes: None
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/tcl/plot
===================================================================
--- /tags/1.6.0/examples/objects/api/tcl/plot	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/tcl/plot	(revision 6168)
@@ -0,0 +1,682 @@
+Rappture::Plot
+
+constructors/destructors
+    Rappture::Plot <lib>
+    Rappture::Plot <plotObj>
+
+methods
+    name ?<val>?
+    path ?<val>?
+    label ?<val>?
+    desc ?<val>?
+    hints ?<val>?
+    color ?<val>?
+    property <key> ?<val>?
+    propremove <key>
+    add <x> <y> -format <fmt> -name <name>
+    add <c> -name <name>
+    count
+    curve <name>
+    getNthCurve <n>
+    vvalue ?<hints>?
+    random
+    diff <o>
+    configure -as <as> <c>
+    dump -as <as>
+    outcome
+    is
+
+---------------------------------------
+Rappture::Plot <lib>
+    Purpose: construct a plot object
+    Input Arguments: at most 1
+        1. lib - Rappture library to associate this plot with
+    Return Value: a newly created, empty plot object
+    Notes: None
+    Code Example:
+    {{{
+        set lib [Rappture::Library]
+        set p [Rappture::Plot $lib]
+    }}}
+
+Rappture::Plot <plotObj>
+    Purpose: construct a plot object based on plot object plotObj
+    Input Arguments: 1
+        1. plotObj - plot object to copy
+    Return Value: a newly created plot object
+    Notes: None
+    Code Example:
+    {{{
+        set lib [Rappture::Library]
+        set p1 [Rappture::Plot $lib]
+        set p2 [Rappture::Plot $p1]
+    }}}
+
+
+name ?<val>?
+    Purpose: get/set the id name of the object
+    Input Arguments: at most 1
+        1. val - new id name
+    Return Value: the name of the object
+    Notes: if no name is set, an empty string will be returned
+           the id name is used to identify this object from
+           all other objects and should be unique
+           val, if provided, is used to set the object name
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        $p name
+        # ""
+        $p name "fdfactor"
+        $p name
+        # "fdfactor"
+    }}}
+
+path ?<val>?
+    Purpose: get/set the path of the object
+    Input Arguments: at most 1
+        1. val - new path
+    Return Value: path of the object
+    Notes: if no path is set, an empty string will be returned
+           the path tells where this object sits in the
+           hierarchy of objects.
+           val, if provided, is used to set the object path
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        $p path
+        # ""
+        $p path "output"
+        $p path
+        # "output"
+    }}}
+
+label ?<val>?
+    Purpose: get/set the label of the object
+    Input Arguments: at most 1
+        1. val - new label
+    Return Value: label of the object
+    Notes: if no label is set, an empty string will be returned
+           the label is used by the graphical user interface.
+           val, if provided, is used to set the object label
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        $p label
+        # ""
+        $p label "Fermi-Dirac Factor"
+        $p label
+        # "Fermi-Dirac Factor"
+    }}}
+
+desc ?<val>?
+    Purpose: get/set the description of the object
+    Input Arguments: at most 1
+        1. val - new description
+    Return Value: description of the object
+    Notes: if no description is set, an empty string will be returned
+           the description is used by the graphical user
+           interface to describe what type of data is being
+           requested and how the input is used.
+           val, if provided, is used to set the object description
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        $p desc
+        # ""
+        $p desc "A plot of the Fermi-Dirac Factor"
+        $p desc
+        # "A plot of the Fermi-Dirac Factor"
+    }}}
+
+hints ?<val>?
+    Purpose: get/set the hints of the object
+    Input Arguments: at most 1
+        1. val - new hints
+    Return Value: hints of the object
+    Notes: if no hints are set, an empty string will be returned
+           the hints are used by the graphical user interface
+           val, if provided, is used to set the object hints
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        $p hints
+        # ""
+        $p hints "no hints"
+        $p hints
+        # "no hints"
+    }}}
+
+color ?<val>?
+    Purpose: get/set the color of the object
+    Input Arguments: at most 1
+        1. val - new color
+    Return Value: color of the object
+    Notes: if no color is set, an empty string will be returned
+           the color is used by the graphical user interface
+           val, if provided, is used to set the object color
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        $p color
+        # ""
+        $p color "no color"
+        $p color
+        # "no color"
+    }}}
+
+property <key> ?<val>?
+    Purpose: get/set a generic property in the property database
+    Input Arguments: at most 2
+        1. key - property name
+        2. val - property value
+    Return Value: value of the property
+    Notes: A copy val is stored in the property database
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        $p property "name"
+        # ""
+        $p property "name" "fdfactor"
+        # "fdfactor"
+        $p name
+        # "fdfactor"
+    }}}
+
+propremove <key>
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        $p name "fdfactor"
+        $p property "name"
+        # "fdfactor"
+        $p propremove "name"
+        # "fdfactor"
+        $p property "name"
+        # ""
+    }}}
+
+add <x> <y> -format <fmt> -name <name>
+    Purpose: add data for an xy curve to the plot
+    Input Arguments: 4
+        1. x - list/array representing the x axis
+        2. y - list/array representing the y axis
+        3. fmt - string format of the line
+        4. name - string id of the newly created curve
+    Return Value: Outcome object
+    Notes: format can be something like "g:o" to represent
+            green line, dotted line style, circle marker.
+            this follows matlab's formatting rules.
+    Code Example:
+    {{{
+        for {set i 0} {$i < 10} {incr i} {
+            lappend x $i
+            lappend y [expr pow($i,2)]
+        }
+
+        set p [Rappture::Plot]
+        $p add $x $y -format "g:o" -name "xsquared"
+        # a single curve, named "xsquared", is stored in the plot object
+    }}}
+
+add <c> -name <name>
+    Purpose: add a Curve object to this Plot object
+    Input Arguments: 2
+        1. c - Curve object to add
+        2. name - id of the Curve object
+    Return Value: Outcome object
+    Notes: Curve object should not be deleted by user?
+    Code Example:
+    {{{
+        for {set i 0} {$i < 10} {incr i} {
+            lappend x $i
+            lappend y [expr pow($i,2)]
+        }
+
+        set c [Rappture::Curve]
+
+        $c axis -name "xvals" -label "X Values" \
+                -desc "Values along the X axis" $x
+
+        $c axis -name "yvals" -label "Y Values" \
+                -desc "Values along the Y axis" $y
+
+        set p [Rappture::Plot]
+        $p add $c -name "xsquared"
+        # a single curve, named "xsquared", is stored in the plot object
+    }}}
+
+count
+    Purpose: retrieve the number of curves in this Plot object
+    Input Arguments: 0
+    Return Value: number of curves stored in the object
+    Notes: None
+    Code Example:
+    {{{
+        for {set i 0} {$i < 10} {incr i} {
+            lappend x $i
+            lappend y1 [expr pow($i,2)]
+            lappend y2 [expr pow($i,3)]
+        }
+
+        set p [Rappture::Plot]
+        $p add $x $y1 -format "g:o" -name "xsquared"
+        $p add $x $y2 -format "b-o" -name "xcubed"
+        puts [$p count]
+        # 2
+    }}}
+
+curve <name>
+    Purpose: retrieve the curve with the id matching "name"
+    Input Arguments: 1
+        1. name - id to Curve to be retrieved
+    Return Value: Curve object matching "name" or None
+    Notes: None
+    Code Example:
+    {{{
+        for {set i 0} {$i < 10} {incr i} {
+            lappend x $i
+            lappend y1 [expr pow($i,2)]
+            lappend y2 [expr pow($i,3)]
+        }
+
+        set p [Rappture::Plot]
+        $p add $x $y1 -format "g:o" -name "xsquared"
+        $p add $x $y2 -format "b-o" -name "xcubed"
+        set c [$p curve "xsquared"]
+        puts [$c name]
+        # xsquared
+    }}}
+
+getNthCurve <n>
+    Purpose: return the n'th curve stored in the object
+    Input Arguments: 1
+        1. n - number of the curve to retrieve
+    Return Value: the n'th Curve object stored in
+                  the Plot object or None
+    Notes: Curve indecies start at 0
+    Code Example:
+    {{{
+        for {set i 0} {$i < 10} {incr i} {
+            lappend x $i
+            lappend y1 [expr pow($i,2)]
+            lappend y2 [expr pow($i,3)]
+        }
+
+        set p [Rappture::Plot]
+        $p add $x $y1 -format "g:o" -name "xsquared"
+        $p add $x $y2 -format "b-o" -name "xcubed"
+        set c [$p getNthCurve 1]
+        puts [$c name]
+        # xcubed
+    }}}
+
+vvalue ?<hints>?
+    Purpose: return the value of the object after applying a
+             varying number of hints about how the value
+             should be configured
+    Input Arguments: variable numbber
+        1. variable number of hints
+    Return Value: value of the object
+    Notes: vvalue will parse out the recognisable hints from
+           va_list arg. Values stored in the object are
+           not changed. Hints should be of the form
+           hintKey=hintVal
+    Code Example:
+    {{{
+        for {set i 0} {$i < 10} {incr i} {
+            lappend x $i
+            lappend y1 [expr pow($i,2)]
+            lappend y2 [expr pow($i,3)]
+        }
+
+        set p [Rappture::Plot]
+        $p add $x $y1 -format "g:o" -name "xsquared"
+        $p add $x $y2 -format "b-o" -name "xcubed"
+        puts [$p vvalue]
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+
+    }}}
+
+random
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        $p random
+        # plot is filed with random data
+        puts [$p vvalue]
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 2 3 4 5 6 7 8 9 10] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+        puts [$p count]
+        # 3
+
+    }}}
+
+diff <o>
+    Purpose: return a list showing the differences between
+             this object and Rappture Object o
+    Input Arguments: 1
+        1. o - Rappture Object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+    {{{
+        set p1 [Rappture::Plot]
+        $p1 random
+        # plot is filed with random data
+        puts [$p vvalue]
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] ]
+
+        set p2 [Rappture::Plot]
+        $p2 random
+        # plot is filed with random data
+        puts [$p vvalue]
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+
+        set diffs [$p1 diff $p2]
+
+        foreach {ctype prop oVal nVal} $diffs {
+            puts "$ctype $prop $oval $nVal"
+        }
+        # c name temperature Ef
+        # c units K eV
+        # c def 300 4.5
+        # c min 0 0
+        # c max 500 10
+        # c label "Ambiant Temperature" "Fermi Level"
+        # c desc "Temperature of the environment" "Energy at center of distribution"
+        #
+        # Note that this function will find a difference in the
+        # minimum values even though they are numerically equal.
+        # This is because the objects have different units that
+        # are not compatible. If compatible units were found,
+        # n2's values would have been converted to n1's units
+        # for each comparison.
+
+
+    }}}
+
+configure -as <as> <c>
+    Purpose: configure the object based on the data in "c".
+             use "as" to determine the type of data in "c".
+    Input Arguments: 2
+        1. as - type of data stored in "c".
+                valid values include:
+                    RPCONFIG_XML
+                    RPCONFIG_TREE
+        2. c - data to configure the object from.
+               if as is...     then c should be...
+               RPCONFIG_XML    const char *xmltext
+               RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+    {{{
+        set p [Rappture.Plot]
+        set xmldata {
+            <?xml version="1.0">
+            <curve id="xsquared">
+                <about>
+                    <group>auto34</group>
+                    <label>x squared</label>
+                    <description>x values are squared</description>
+                    <type></type>
+                    <format>g:o</format>
+                </about>
+                <xaxis>
+                    <label>x values</label>
+                    <description>values being squared</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </xaxis>
+                <yaxis>
+                    <label>y values</label>
+                    <description>squared values</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </yaxis>
+                <component>
+                    <xy>         1         1
+                 2         4
+                 3         9
+                 4        16
+                 5        25
+                 6        36
+                 7        49
+                 8        64
+                 9        81
+                10       100
+                    </xy>
+                </component>
+            </curve>
+            <curve id="xcubed">
+                <about>
+                    <group>auto34</group>
+                    <label>x cubed</label>
+                    <description>x values are cubed</description>
+                    <type></type>
+                    <format>b-o</format>
+                </about>
+                <xaxis>
+                    <label>x values</label>
+                    <description>values being cubed</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </xaxis>
+                <yaxis>
+                    <label>y values</label>
+                    <description>cubed values</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </yaxis>
+                <component>
+                    <xy>         1         1
+                 2         8
+                 3        27
+                 4        64
+                 5       125
+                 6       216
+                 7       343
+                 8       512
+                 9       729
+                10      1000
+                    </xy>
+                </component>
+            </curve>
+        }
+
+        $p configure -as RPCONFIG_XML $xmldata
+        puts [$p vvalue]
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+
+        for {set cur 0} {$cur < [$p count]} {incr cur} {
+            set c [$p getNthCurve $cur]
+            puts [$c name]
+            puts [$c label]
+            puts [$c desc]
+            puts [$c format]
+            for {set axisCnt 0} {$axisCnt < [$c dims]} {incr axisCnt} {
+                set axis [$c getNthAxis $axisCnt]
+                puts [$axis label]
+                puts [$axis desc]
+                puts [$axis units]
+                puts [$axis scale]
+                puts [$axis data]
+            }
+        }
+        # xsquared
+        # x squared
+        # x values are squared
+        # g:o
+        # xaxis
+        # x values
+        # values being squared
+        #
+        # linear
+        # [1 2 3 4 5 6 7 8 9 10]
+        # yaxis
+        # y values
+        # squared values
+        #
+        # linear
+        # [1 4 9 16 25 36 49 64 81 100]
+        # xcubed
+        # x cubed
+        # x values are cubed
+        # b-o
+        # xaxis
+        # x values
+        # values being cubed
+        #
+        # linear
+        # [1 2 3 4 5 6 7 8 9 10]
+        # yaxis
+        # y values
+        # cubed values
+        #
+        # linear
+        # [1 8 27 64 125 216 343 512 729 1000]
+
+    }}}
+
+dump -as <as>
+    Purpose: dump the object values.
+             use "as" to determine how to dump the data.
+    Input Arguments: 2
+        1. as - type of data to be returned.
+                valid values include:
+                    RPCONFIG_XML
+                    RPCONFIG_TREE
+    Return Value:
+               if as is...     then return the following...
+               RPCONFIG_XML    ClientDataXml *object
+               RPCONFIG_TREE   RP_ParserXML *object
+    Notes: None
+    Code Example:
+    {{{
+        for {set i 0} {$i < 10} {incr i} {
+            lappend x $i
+            lappend y1 [expr pow($i,2)]
+            lappend y2 [expr pow($i,3)]
+        }
+
+        set p [Rappture::Plot]
+        $p add $x $y1 -format "g:o" -name "xsquared"
+        $p add $x $y2 -format "b-o" -name "xcubed"
+        puts [$p dump -as RPCONFIG_XML]
+        # <curve id="xsquared">
+        #     <about>
+        #         <group>auto34</group>
+        #         <label></label>
+        #         <description></description>
+        #         <type>(null)</type>
+        #         <format>g:o</format>
+        #     </about>
+        #     <xaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </xaxis>
+        #     <yaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </yaxis>
+        #     <component>
+        #         <xy>         1         1
+        #      2         4
+        #      3         9
+        #      4        16
+        #      5        25
+        #      6        36
+        #      7        49
+        #      8        64
+        #      9        81
+        #     10       100
+        #         </xy>
+        #     </component>
+        # </curve>
+        # <curve id="xcubed">
+        #     <about>
+        #         <group>auto34</group>
+        #         <label></label>
+        #         <description></description>
+        #         <type>(null)</type>
+        #         <format>b-o</format>
+        #     </about>
+        #     <xaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </xaxis>
+        #     <yaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </yaxis>
+        #     <component>
+        #         <xy>         1         1
+        #      2         8
+        #      3        27
+        #      4        64
+        #      5       125
+        #      6       216
+        #      7       343
+        #      8       512
+        #      9       729
+        #     10      1000
+        #         </xy>
+        #     </component>
+        # </curve>
+
+    }}}
+
+outcome
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 0
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        set out [$p outcome]
+        if ([$out value] != 0) {
+            puts stderr [$out context]
+            puts stderr [$out remark]
+        }
+    }}}
+
+
+is
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 0
+    Return Value: integer tag unique to all number objects
+    Notes: None
+    Code Example:
Index: /tags/1.6.0/examples/objects/api/tcl/view
===================================================================
--- /tags/1.6.0/examples/objects/api/tcl/view	(revision 6168)
+++ /tags/1.6.0/examples/objects/api/tcl/view	(revision 6168)
@@ -0,0 +1,729 @@
+Rappture::View
+
+constructors/destructors
+    Rappture::View <name> -rows <rows> -cols <cols>
+
+methods
+    name ?<val>?
+    path ?<val>?
+    label ?<val>?
+    desc ?<val>?
+    hints ?<val>?
+    property <key> ?<val>?
+    propremove <key>
+    vvalue ?<hints>?
+    random
+    diff <o>
+    configure -as <as> <c>
+    dump -as <as>
+    outcome
+    is
+
+    plot   <name> -at "row,col" -table <table> {"x1" "y1" "s1" ...}
+    surf2d <name> -at "row,col" -table <table> {"x1" "y1" "d1" ...}
+    surf3d <name> -at "row,col" -table <table> {"x1" "y1" "z1" "d1" ...}
+    image  <object> -at "row,col"
+    note   <object> -at "row,col"
+
+
+---------------------------------------
+Rappture::View <name> -rows <rows> -cols <cols>
+    Purpose: construct a view for displaying data
+    Input Arguments: 1 required, 2 optional
+        1. name - name of the view
+        2. rows - number of rows in the view, default is 1
+        3. cols - number of columns in the view, default is 1
+    Return Value: a newly created, empty view object
+    Notes: None
+    Code Example:
+    {{{
+        set v [Rappture::View "fdfplots" -rows 2 -cols 1]
+    }}}
+
+name ?<val>?
+    Purpose: get/set the id name of the object
+    Input Arguments: at most 1
+        1. val - new id name
+    Return Value: the name of the object
+    Notes: if no name is set, an empty string will be returned
+           the id name is used to identify this object from
+           all other objects and should be unique
+           val, if provided, is used to set the object name
+    Code Example:
+    {{{
+        set v [Rappture::View "fdfplots"]
+        $v name
+        # "fdfplots"
+        $v name "fdfactor"
+        $v name
+        # "fdfactor"
+    }}}
+
+path ?<val>?
+    Purpose: get/set the path of the object
+    Input Arguments: at most 1
+        1. val - new path
+    Return Value: path of the object
+    Notes: if no path is set, an empty string will be returned
+           the path tells where this object sits in the
+           hierarchy of objects.
+           val, if provided, is used to set the object path
+    Code Example:
+    {{{
+        set v [Rappture::View "fdfplots"]
+        $v path
+        # ""
+        $v path "output"
+        $v path
+        # "output"
+    }}}
+
+label ?<val>?
+    Purpose: get/set the label of the object
+    Input Arguments: at most 1
+        1. val - new label
+    Return Value: label of the object
+    Notes: if no label is set, an empty string will be returned
+           the label is used by the graphical user interface.
+           val, if provided, is used to set the object label
+    Code Example:
+    {{{
+        set v [Rappture::View "fdfplots"]
+        $v label
+        # ""
+        $v label "Fermi-Dirac Factor"
+        $v label
+        # "Fermi-Dirac Factor"
+    }}}
+
+desc ?<val>?
+    Purpose: get/set the description of the object
+    Input Arguments: at most 1
+        1. val - new description
+    Return Value: description of the object
+    Notes: if no description is set, an empty string will be
+           returned the description is used by the graphical
+           user interface to describe what type of data is
+           being requested and how the input is used.  val, if
+           provided, is used to set the object description
+
+    Code Example:
+    {{{
+        set v [Rappture::View "fdfplots"]
+        $v desc
+        # ""
+        $v desc "A plot of the Fermi-Dirac Factor"
+        $v desc
+        # "A plot of the Fermi-Dirac Factor"
+    }}}
+
+hints ?<val>?
+    Purpose: get/set the hints of the object
+    Input Arguments: at most 1
+        1. val - new hints
+    Return Value: hints of the object
+    Notes: if no hints are set, an empty string will be returned
+           the hints are used by the graphical user interface
+           val, if provided, is used to set the object hints
+    Code Example:
+    {{{
+        set v [Rappture::View "fdfplots"]
+        $v hints
+        # ""
+        $v hints "no hints"
+        $v hints
+        # "no hints"
+    }}}
+
+property <key> ?<val>?
+    Purpose: get/set a generic property in the property database
+    Input Arguments: at most 2
+        1. key - property name
+        2. val - property value
+    Return Value: value of the property
+    Notes: A copy val is stored in the property database
+    Code Example:
+    {{{
+        set v [Rappture::View "fdfplots"]
+        $v property "label"
+        # ""
+        $v property "label" "Fermi-Dirac Factor"
+        # "Fermi-Dirac Factor"
+        $v name
+        # "Fermi-Dirac Factor"
+    }}}
+
+propremove <key>
+    Purpose: remove a property from the property database
+    Input Arguments: 1
+        1. key - property name
+    Return Value: value of the property
+    Notes: None
+    Code Example:
+    {{{
+        set v [Rappture::View "fdfplots"]
+        $v name "fdfactor"
+        $v property "name"
+        # "fdfactor"
+        $v propremove "name"
+        # "fdfactor"
+        $v property "name"
+        # ""
+    }}}
+
+vvalue ?<hints>?
+    Purpose: return the value of the object after applying a
+             varying number of hints about how the value
+             should be configured
+    Input Arguments: variable numbber
+        1. variable number of hints
+    Return Value: value of the object
+    Notes: vvalue will parse out the recognisable hints from
+           va_list arg. Values stored in the object are
+           not changed. Hints should be of the form
+           hintKey=hintVal
+    Code Example:
+    {{{
+        for {set i 0} {$i < 10} {incr i} {
+            lappend x $i
+            lappend y1 [expr pow($i,2)]
+            lappend y2 [expr pow($i,3)]
+        }
+
+        set p [Rappture::Plot]
+        $p add $x $y1 -format "g:o" -name "xsquared"
+        $p add $x $y2 -format "b-o" -name "xcubed"
+        puts [$p vvalue]
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+
+    }}}
+
+random
+    Purpose: populate the object with a random value
+    Input Arguments: 0
+    Return Value: None
+    Notes: the current value of this object will be populated
+           with a random value that fits within the min and
+           max if they were specified.
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        $p random
+        # plot is filed with random data
+        puts [$p vvalue]
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 2 3 4 5 6 7 8 9 10] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+        puts [$p count]
+        # 3
+
+    }}}
+
+diff <o>
+    Purpose: return a list showing the differences between
+             this object and Rappture Object o
+    Input Arguments: 1
+        1. o - Rappture Object to diff against
+    Return Value: list of differences between objects
+    Notes: None
+    Code Example:
+    {{{
+        set p1 [Rappture::Plot]
+        $p1 random
+        # plot is filed with random data
+        puts [$p vvalue]
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] ]
+
+        set p2 [Rappture::Plot]
+        $p2 random
+        # plot is filed with random data
+        puts [$p vvalue]
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+
+        set diffs [$p1 diff $p2]
+
+        foreach {ctype prop oVal nVal} $diffs {
+            puts "$ctype $prop $oval $nVal"
+        }
+        # c name temperature Ef
+        # c units K eV
+        # c def 300 4.5
+        # c min 0 0
+        # c max 500 10
+        # c label "Ambiant Temperature" "Fermi Level"
+        # c desc "Temperature of the environment" "Energy at center of distribution"
+        #
+        # Note that this function will find a difference in the
+        # minimum values even though they are numerically equal.
+        # This is because the objects have different units that
+        # are not compatible. If compatible units were found,
+        # n2's values would have been converted to n1's units
+        # for each comparison.
+
+
+    }}}
+
+configure -as <as> <c>
+    Purpose: configure the object based on the data in "c".
+             use "as" to determine the type of data in "c".
+    Input Arguments: 2
+        1. as - type of data stored in "c".
+                valid values include:
+                    RPCONFIG_XML
+                    RPCONFIG_TREE
+        2. c - data to configure the object from.
+               if as is...     then c should be...
+               RPCONFIG_XML    const char *xmltext
+               RPCONFIG_TREE   RP_ParserXML *object
+    Return Value: None
+    Notes: object is configured based on values in "c"
+    Code Example:
+    {{{
+        set p [Rappture.Plot]
+        set xmldata {
+            <?xml version="1.0">
+            <curve id="xsquared">
+                <about>
+                    <group>auto34</group>
+                    <label>x squared</label>
+                    <description>x values are squared</description>
+                    <type></type>
+                    <format>g:o</format>
+                </about>
+                <xaxis>
+                    <label>x values</label>
+                    <description>values being squared</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </xaxis>
+                <yaxis>
+                    <label>y values</label>
+                    <description>squared values</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </yaxis>
+                <component>
+                    <xy>         1         1
+                 2         4
+                 3         9
+                 4        16
+                 5        25
+                 6        36
+                 7        49
+                 8        64
+                 9        81
+                10       100
+                    </xy>
+                </component>
+            </curve>
+            <curve id="xcubed">
+                <about>
+                    <group>auto34</group>
+                    <label>x cubed</label>
+                    <description>x values are cubed</description>
+                    <type></type>
+                    <format>b-o</format>
+                </about>
+                <xaxis>
+                    <label>x values</label>
+                    <description>values being cubed</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </xaxis>
+                <yaxis>
+                    <label>y values</label>
+                    <description>cubed values</description>
+                    <units></units>
+                    <scale>linear</scale>
+                </yaxis>
+                <component>
+                    <xy>         1         1
+                 2         8
+                 3        27
+                 4        64
+                 5       125
+                 6       216
+                 7       343
+                 8       512
+                 9       729
+                10      1000
+                    </xy>
+                </component>
+            </curve>
+        }
+
+        $p configure -as RPCONFIG_XML $xmldata
+        puts [$p vvalue]
+        # [ [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 4 9 16 25 36 49 64 81 100] ] \
+        #   [ [1 2 3 4 5 6 7 8 9 10] \
+        #     [1 8 27 64 125 216 343 512 729 1000] ] ]
+
+        for {set cur 0} {$cur < [$p count]} {incr cur} {
+            set c [$p getNthCurve $cur]
+            puts [$c name]
+            puts [$c label]
+            puts [$c desc]
+            puts [$c format]
+            for {set axisCnt 0} {$axisCnt < [$c dims]} {incr axisCnt} {
+                set axis [$c getNthAxis $axisCnt]
+                puts [$axis label]
+                puts [$axis desc]
+                puts [$axis units]
+                puts [$axis scale]
+                puts [$axis data]
+            }
+        }
+        # xsquared
+        # x squared
+        # x values are squared
+        # g:o
+        # xaxis
+        # x values
+        # values being squared
+        #
+        # linear
+        # [1 2 3 4 5 6 7 8 9 10]
+        # yaxis
+        # y values
+        # squared values
+        #
+        # linear
+        # [1 4 9 16 25 36 49 64 81 100]
+        # xcubed
+        # x cubed
+        # x values are cubed
+        # b-o
+        # xaxis
+        # x values
+        # values being cubed
+        #
+        # linear
+        # [1 2 3 4 5 6 7 8 9 10]
+        # yaxis
+        # y values
+        # cubed values
+        #
+        # linear
+        # [1 8 27 64 125 216 343 512 729 1000]
+
+    }}}
+
+dump -as <as>
+    Purpose: dump the object values.
+             use "as" to determine how to dump the data.
+    Input Arguments: 2
+        1. as - type of data to be returned.
+                valid values include:
+                    RPCONFIG_XML
+                    RPCONFIG_TREE
+    Return Value:
+               if as is...     then return the following...
+               RPCONFIG_XML    ClientDataXml *object
+               RPCONFIG_TREE   RP_ParserXML *object
+    Notes: None
+    Code Example:
+    {{{
+        for {set i 0} {$i < 10} {incr i} {
+            lappend x $i
+            lappend y1 [expr pow($i,2)]
+            lappend y2 [expr pow($i,3)]
+        }
+
+        set p [Rappture::Plot]
+        $p add $x $y1 -format "g:o" -name "xsquared"
+        $p add $x $y2 -format "b-o" -name "xcubed"
+        puts [$p dump -as RPCONFIG_XML]
+        # <curve id="xsquared">
+        #     <about>
+        #         <group>auto34</group>
+        #         <label></label>
+        #         <description></description>
+        #         <type>(null)</type>
+        #         <format>g:o</format>
+        #     </about>
+        #     <xaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </xaxis>
+        #     <yaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </yaxis>
+        #     <component>
+        #         <xy>         1         1
+        #      2         4
+        #      3         9
+        #      4        16
+        #      5        25
+        #      6        36
+        #      7        49
+        #      8        64
+        #      9        81
+        #     10       100
+        #         </xy>
+        #     </component>
+        # </curve>
+        # <curve id="xcubed">
+        #     <about>
+        #         <group>auto34</group>
+        #         <label></label>
+        #         <description></description>
+        #         <type>(null)</type>
+        #         <format>b-o</format>
+        #     </about>
+        #     <xaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </xaxis>
+        #     <yaxis>
+        #         <label></label>
+        #         <description></description>
+        #         <units></units>
+        #         <scale>linear</scale>
+        #     </yaxis>
+        #     <component>
+        #         <xy>         1         1
+        #      2         8
+        #      3        27
+        #      4        64
+        #      5       125
+        #      6       216
+        #      7       343
+        #      8       512
+        #      9       729
+        #     10      1000
+        #         </xy>
+        #     </component>
+        # </curve>
+
+    }}}
+
+outcome
+    Purpose: return the status of this object as an Outcome.
+    Input Arguments: 0
+    Return Value: status of the object as an Outcome
+    Notes: None
+    Code Example:
+    {{{
+        set p [Rappture::Plot]
+        set out [$p outcome]
+        if ([$out value] != 0) {
+            puts stderr [$out context]
+            puts stderr [$out remark]
+        }
+    }}}
+
+is
+    Purpose: return an integer tag describing the object.
+    Input Arguments: 0
+    Return Value: integer tag unique to all number objects
+    Notes: None
+    Code Example:
+
+plot <name> -at "row,col" -table <table> {"x1" "y1" "s1" "x2" "y2" "s2" ...}
+    Purpose: populate a view object with a plot
+    Input Arguments: 2 required, 2 optional
+        1. name - name of the plot
+        2. -at - position of the plot within the view, row and column number
+        3. -table - name of the table holding the data.
+        4. {"x1" "y1" "s1" ...} - x and y column names, followed by the style
+    Return Value: None
+    Notes: plots can be grouped together by specifying
+           multiple x,y pairs within the list of columns
+           from the last argument. eg:
+           {"x1" "y1" "s1" "x2" "y2" "s2"}
+    Code Example:
+    {{{
+        set results [Rappture::Table "dataTable"]
+        $results column "Xvals" "X Values"
+        $results column "Squared" "X Squared"
+        $results column "Cubed" "X Cubed"
+
+        # create a view with two curves grouped on a single plot
+        # 1) x vs x^2
+        # 2) x vs x^3
+        set v1 [Rappture::View fdfview1]
+        $v1 plot "fdfPlot1" -table "dataTable" \
+            {"Xvals" "Squared" "g:o" "Xvals" "Cubed" "b-o"}
+
+        # create a view with two plots, one stacked on top of the other
+        # 1) x vs x^2
+        # 2) x vs x^3
+        set v2 [Rappture::View fdfview2 -rows 2 -cols 1]
+        $v2 plot "fdfPlot2" -at "1,1" -table "dataTable" \
+            {"Xvals" "Squared" "g:o"}
+        $v2 plot "fdfPlot3" -at "2,1" -table "dataTable" \
+            {"Xvals" "Cubed" "b-o"}
+
+        # create a view with two plots side by side
+        # 1) x vs x^2   2) x vs x^3
+        set v3 [Rappture::View fdfview3 -rows 1 -cols 2]
+        $v3 plot "fdfPlot4" -at "1,1" -table "dataTable" \
+            {"Xvals" "Squared" "g:o"}
+        $v3 plot "fdfPlot5" -at "1,2" -table "dataTable" \
+            {"Xvals" "Cubed" "b-o"}
+    }}}
+
+surf2d <name> -at "row,col" -table <table> {"x1" "y1" "d1" ...}
+    Purpose: populate a view object with a 2 dimensional surface plot
+    Input Arguments: 2 required, 2 optional
+        1. name - name of the 2 dimensional surface
+        2. -at - position of the plot within the view, row and column number
+        3. -table - name of the table holding the data.
+        4. {"x1" "y1" "d1",...} - x, y, and data column names.
+            data column is used for both height and color.
+    Return Value: None
+    Notes: surface plots can be grouped together by specifying
+           multiple x,y pairs within the list of columns
+           from the last argument. eg:
+           {"x1" "y1" "d1" "x2" "y2" "d2"}
+    ToDo:
+        1. how to specify transfer function ranges
+        2. how to specify uni rect grid instead of explicit points
+            - three values in the coords columns is assumed to be
+              the min, max, and step for that direction of the
+              uniform rectangular grid?
+    Code Example:
+    {{{
+        set results [Rappture::Table "dataTable"]
+        $results column "Xcoords" "X coordinates"
+        $results column "Ycoords" "Y coordinates"
+        $results column "Data1" "Data Set #1"
+        $results column "Data2" "Data Set #2"
+
+        # create a view with two 2d surface plots in a single visualization window
+        set v1 [Rappture::View fdfview1]
+        $v1 surf2d "fdfSurf1" -table "dataTable" \
+            {"Xcoords" "Ycoords" "Data1" \
+             "Xcoords" "Ycoords" "Data2"}
+
+        # create a view with two 2d surface plots in different visualization windows
+        # one stacked on top of the other
+        set v2 [Rappture::View fdfview2 -rows 2 -cols 1]
+        $v2 surf2d "fdfSurf2" -at "1,1" -table "dataTable" \
+            {"Xcoords" "Ycoords" "Data1"}
+        $v2 surf2d "fdfSurf3" -at "2,1" -table "dataTable" \
+            {"Xcoords" "Ycoords" "Data2"}
+
+        # create a view with two 2d surface plots in different visualization windows
+        # side by side
+        set v3 [Rappture::View fdfview3 -rows 1 -cols 2]
+        $v3 surf2d "fdfSurf4" -at "1,1" -table "dataTable" \
+            {"Xcoords" "Ycoords" "Data1"}
+        $v3 surf2d "fdfSurf5" -at "1,2" -table "dataTable" \
+            {"Xcoords" "Ycoords" "Data2"}
+    }}}
+
+surf3d <name> -at "row,col" -table <table> {"x1" "y1" "z1" "d1",...}
+    Purpose: populate a view object with a 3 dimensional surface
+    Input Arguments: 2 required, 2 optional
+        1. name - name of the 3 dimensional surface
+        2. -at - position of the plot within the view, row and column number
+        3. -table - name of the table holding the data.
+        4. {"x1" "y1" "z1" "d1",...} - x, y, z, and data column names
+    Return Value: None
+    Notes: 3d surfaces can be grouped together by specifying
+           multiple x,y,z triplets within the list of columns
+           from the last argument. eg:
+           {"x1" "y1" "z1" "d1" "x2" "y2" "z2" "d2"}
+    ToDo:
+        1. how to specify transfer function ranges
+        2. how to specify uni rect grid instead of explicit points
+            - three values in the coords columns is assumed to be
+              the min, max, and step for that direction of the
+              uniform rectangular grid?
+    Code Example:
+    {{{
+        set results [Rappture::Table "dataTable"]
+        $results column "Xcoords" "X coordinates"
+        $results column "Ycoords" "Y coordinates"
+        $results column "Zcoords" "Z coordinates"
+        $results column "Data1" "Data Set #1"
+        $results column "Data2" "Data Set #2"
+
+        # create a view with two 3d surfaces in a single visualization window
+        set v1 [Rappture::View fdfview1]
+        $v1 surf3d "fdfVol1" -table "dataTable" \
+            {"Xcoords" "Ycoords" "Zcoords" "Data1" \
+             "Xcoords" "Ycoords" "Zcoords" "Data2"}
+
+        # create a view with two 3d surfaces in different visualization windows
+        # one stacked on top of the other
+        set v2 [Rappture::View fdfview2 -rows 2 -cols 1]
+        $v2 surf3d "fdfVol2" -at "1,1" -table "dataTable" \
+            {"Xcoords" "Ycoords" "Zcoords" "Data1"}
+        $v2 surf3d "fdfVol3" -at "2,1" -table "dataTable" \
+            {"Xcoords" "Ycoords" "Zcoords" "Data2"}
+
+        # create a view with two 3d surfaces in different visualization windows
+        # side by side
+        set v3 [Rappture::View fdfview3 -rows 1 -cols 2]
+        $v3 surf3d "fdfVol4" -at "1,1" -table "dataTable" \
+            {"Xcoords" "Ycoords" "Zcoords" "Data1"}
+        $v3 surf3d "fdfVol5" -at "1,2" -table "dataTable" \
+            {"Xcoords" "Ycoords" "Zcoords" "Data2"}
+    }}}
+
+image <object> -at "row,col"
+    Purpose: populate a view object with an image
+    Input Arguments: 1 required, 1 optional
+        1. object - object representing the image
+        2. -at - position of the image within the view, row and column number
+    Return Value: None
+    Code Example:
+    {{{
+        set i1 [Rappture::Image "image1" -label "ilabel1" -desc "idesc1"]
+        set i2 [Rappture::Image "image2" -label "ilabel2" -desc "idesc2"]
+
+        # create a view with two images in different windows
+        # one stacked on top of the other
+        set v1 [Rappture::View fdfview1 -rows 2 -cols 1]
+        $v1 image $i1 -at "1,1"
+        $v1 image $i2 -at "2,1"
+
+        # create a view with two images in different windows
+        # side by side
+        set v2 [Rappture::View fdfview2 -rows 1 -cols 2]
+        $v2 image $i1 -at "1,1"
+        $v2 image $i2 -at "1,2"
+    }}}
+
+note <object> -at "row,col"
+    Purpose: populate a view object with a note
+    Input Arguments: 1 required, 1 optional
+        1. object - object representing the note
+        2. -at - position of the note within the view, row and column number
+    Return Value: None
+    Code Example:
+    {{{
+        set i1 [Rappture::Note "note1" -label "nlabel1" -desc "ndesc1"]
+        set i2 [Rappture::Note "note2" -label "nlabel2" -desc "ndesc2"]
+
+        # create a view with two notes in different windows
+        # one stacked on top of the other
+        set v1 [Rappture::View fdfview1 -rows 2 -cols 1]
+        $v1 note $n1 -at "1,1"
+        $v1 note $n2 -at "2,1"
+
+        # create a view with two notes in different windows
+        # side by side
+        set v2 [Rappture::View fdfview2 -rows 1 -cols 2]
+        $v2 note $i1 -at "1,1"
+        $v2 note $i2 -at "1,2"
+    }}}
+
Index: /tags/1.6.0/examples/objects/app-fermi/c/ex2/fermi.c
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/c/ex2/fermi.c	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/c/ex2/fermi.c	(revision 6168)
@@ -0,0 +1,127 @@
+/*
+ * ----------------------------------------------------------------------
+ *  EXAMPLE: Fermi-Dirac function in C
+ *
+ *  This simple example shows how to use Rappture within a simulator
+ *  written in C.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "rappture.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <unistd.h>
+
+#include "fermi_io.c"
+
+int main(int argc, char * argv[]) {
+
+    /* declare variables to interact with Rappture */
+    double T          = 0.0;
+    double Ef         = 0.0;
+    Rp_Plot *p1       = NULL;
+    Rp_Plot *p2       = NULL;
+
+
+    /* declare program variables */
+    double E          = 0.0;
+    double dE         = 0.0;
+    double kT         = 0.0;
+    double Emin       = 0.0;
+    double Emax       = 0.0;
+    double f          = 0.0;
+    size_t nPts       = 200;
+    size_t idx        = 0;
+    double EArr[nPts];
+    double fArr[nPts];
+
+    /* initialize the global interface */
+    Rp_InterfaceInit(argc,argv,&fermi_io);
+
+    /* check the global interface for errors */
+    if (Rp_InterfaceError() != 0) {
+        /* there were errors while setting up the interface */
+        /* dump the traceback */
+        Rp_Outcome *o = Rp_InterfaceOutcome();
+        fprintf(stderr, "%s", Rp_OutcomeContext(o));
+        fprintf(stderr, "%s", Rp_OutcomeRemark(o));
+        return(Rp_InterfaceError());
+    }
+
+    /*
+     * connect variables to the interface
+     * look in the global interface for an object named
+     * "temperature", convert its value to Kelvin, and
+     * store the value into the address of T.
+     * look in the global interface for an object named
+     * "Ef", convert its value to electron Volts and store
+     * the value into the address of Ef.
+     * look in the global interface for an object named
+     * factorsTable and set the variable result to
+     * point to it.
+     */
+    Rp_InterfaceConnect("temperature",&T,"units=K",NULL);
+    Rp_InterfaceConnect("Ef",&Ef,"units=eV",NULL);
+    Rp_InterfaceConnect("fdfPlot",p1,NULL);
+    Rp_InterfaceConnect("fdfPlot2",p2,NULL);
+
+    /* check the global interface for errors */
+    if (Rp_InterfaceError() != 0) {
+        /* there were errors while retrieving input data values */
+        /* dump the traceback */
+        Rp_Outcome *o = Rp_InterfaceOutcome();
+        fprintf(stderr, "%s", Rp_OutcomeContext(o));
+        fprintf(stderr, "%s", Rp_OutcomeRemark(o));
+        return(Rp_InterfaceError());
+    }
+
+    /* do science calculations */
+    kT = 8.61734e-5 * T;
+    Emin = Ef - (10*kT);
+    Emax = Ef + (10*kT);
+
+    dE = (1.0/nPts)*(Emax-Emin);
+
+    E = Emin;
+    for(idx = 0; idx < nPts; idx++) {
+        E = E + dE;
+        f = 1.0/(1.0 + exp((E - Ef)/kT));
+        fArr[idx] = f;
+        EArr[idx] = E;
+        Rp_UtilsProgress((int)((E-Emin)/(Emax-Emin)*100),"Iterating");
+    }
+
+    /*
+     * set up the curves for the plot by using the add command
+     * Rp_PlotAdd(plot,name,nPts,xdata,ydata,fmt);
+     *
+     * to group curves on the same plot, just keep adding curves
+     * to save space, X array values are compared between curves.
+     * the the X arrays contain the same values, we only store
+     * one version in the internal data table, otherwise a new
+     * column is created for the array. for big arrays this may take
+     * some time, we should benchmark to see if this can be done
+     * efficiently.
+     */
+    Rp_PlotAdd(p1,"fdfCurve1",nPts,fArr,EArr,"g:o");
+
+    Rp_PlotAdd(p2,"fdfCurve2",nPts,fArr,EArr,"b-o");
+    Rp_PlotAdd(p2,"fdfCurve3",nPts,fArr,EArr,"p--");
+
+    /*
+     * close the global interface
+     * signal to the graphical user interface that science
+     * calculations are complete and to display the data
+     * as described in the views
+     */
+    Rp_InterfaceClose();
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/app-fermi/c/ex2/fermi_io.c
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/c/ex2/fermi_io.c	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/c/ex2/fermi_io.c	(revision 6168)
@@ -0,0 +1,46 @@
+#include "rappture.h"
+
+void fermi_io() {
+
+    Rp_Plot *p1 = NULL;
+    Rp_Plot *p2 = NULL;
+
+    // assume global interface variable.
+    // newly created objects are stored in the
+    // global interface variable. if there is more
+    // than one global interface variable, the
+    // interface that should be used is specified
+    // using the Rp_???InitX version of the funtion
+    // where ??? represents the type of object the
+    // user is trying to create.
+
+    // describe the inputs
+    // declare a number named "temperature",
+    // with units of Kelvin, default value 300,
+    //
+    // the next number is named "Ef", has units of
+    // electron Volts, default value of -5.5
+    //
+    // Rp_Number is assumed to be an input
+    Rp_NumberInit("temperature","K",300);
+    Rp_NumberInit("Ef","eV",-5.5);
+
+    // Most simple xy plots for output
+    // Because it is a single plot, it gets it's own view.
+    // The plot is placed in the position 1,1 of the view.
+    p1 = Rp_PlotInit("fdfPlot");
+    Rp_PlotXAxis(p1,"Fermi-Dirac Factor",
+        "Plot of Fermi-Dirac Calculation");
+    Rp_PlotYAxis(p1,"Energy","Energy cooresponding to each fdf");
+    Rp_PlotYAxisHint(p1,"units","eV");
+
+    // Declaring a second plot creates a new view.
+    // The new plot will be placed in the position 1,1 of its view.
+    // User can do simple plot grouping using the add function
+    // in the science code.
+    p2 = Rp_PlotInit("fdfPlot2");
+    Rp_PlotXAxis(p2,"Fermi-Dirac Factor",
+        "Plot of Fermi-Dirac Calculation");
+    Rp_PlotYAxis(p2,"Energy","Energy cooresponding to each fdf");
+    Rp_PlotYAxisHint(p2,"units","eV");
+}
Index: /tags/1.6.0/examples/objects/app-fermi/c/ex2/readme
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/c/ex2/readme	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/c/ex2/readme	(revision 6168)
@@ -0,0 +1,1 @@
+most simple version of getting a plot, no views
Index: /tags/1.6.0/examples/objects/app-fermi/c/ex3/fermi.c
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/c/ex3/fermi.c	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/c/ex3/fermi.c	(revision 6168)
@@ -0,0 +1,128 @@
+/*
+ * ----------------------------------------------------------------------
+ *  EXAMPLE: Fermi-Dirac function in C
+ *
+ *  This simple example shows how to use Rappture within a simulator
+ *  written in C.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "rappture.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <unistd.h>
+
+#include "fermi_io.c"
+
+int main(int argc, char * argv[]) {
+
+    /* declare variables to interact with Rappture */
+    double T          = 0.0;
+    double Ef         = 0.0;
+    Rp_TableColumn *x1 = NULL;
+    Rp_TableColumn *y1 = NULL;
+    Rp_TableColumn *x2 = NULL;
+    Rp_TableColumn *y2 = NULL;
+
+
+    /* declare program variables */
+    double E          = 0.0;
+    double dE         = 0.0;
+    double kT         = 0.0;
+    double Emin       = 0.0;
+    double Emax       = 0.0;
+    double f          = 0.0;
+    size_t nPts       = 200;
+    double EArr[nPts];
+    double EArr2[nPts];
+    double fArr[nPts];
+    double fArr2[nPts];
+
+    /* initialize the global interface */
+    Rp_InterfaceInit(argc,argv,&fermi_io);
+
+    /* check the global interface for errors */
+    if (Rp_InterfaceError() != 0) {
+        /* there were errors while setting up the interface */
+        /* dump the traceback */
+        Rp_Outcome *o = Rp_InterfaceOutcome();
+        fprintf(stderr, "%s", Rp_OutcomeContext(o));
+        fprintf(stderr, "%s", Rp_OutcomeRemark(o));
+        return(Rp_InterfaceError());
+    }
+
+    /*
+     * connect variables to the interface
+     * look in the global interface for an object named
+     * "temperature", convert its value to Kelvin, and
+     * store the value into the address of T.
+     * look in the global interface for an object named
+     * "Ef", convert its value to electron Volts and store
+     * the value into the address of Ef.
+     * look in the global interface for the columns to
+     * store data. retrieve them for later use.
+     */
+    Rp_InterfaceConnect("temperature",&T,"units=K",NULL);
+    Rp_InterfaceConnect("Ef",&Ef,"units=eV",NULL);
+
+    Rp_InterfaceConnect("Fermi-Dirac Factor",x1,NULL);
+    Rp_InterfaceConnect("Energy",y1,NULL);
+    Rp_InterfaceConnect("Fermi-Dirac Factor * 2",x2,NULL);
+    Rp_InterfaceConnect("Energy * 2",y2,NULL);
+
+    /* check the global interface for errors */
+    if (Rp_InterfaceError() != 0) {
+        /* there were errors while retrieving input data values */
+        /* dump the traceback */
+        Rp_Outcome *o = Rp_InterfaceOutcome();
+        fprintf(stderr, "%s", Rp_OutcomeContext(o));
+        fprintf(stderr, "%s", Rp_OutcomeRemark(o));
+        return(Rp_InterfaceError());
+    }
+
+    /* do science calculations */
+    kT = 8.61734e-5 * T;
+    Emin = Ef - (10*kT);
+    Emax = Ef + (10*kT);
+
+    dE = (1.0/nPts)*(Emax-Emin);
+
+    E = Emin;
+    for(size_t idx = 0; idx < nPts; idx++) {
+        E = E + dE;
+        f = 1.0/(1.0 + exp((E - Ef)/kT));
+        fArr[idx] = f;
+        fArr2[idx] = f*2;
+        EArr[idx] = E;
+        EArr2[idx] = E*2;
+        Rp_UtilsProgress((int)((E-Emin)/(Emax-Emin)*100),"Iterating");
+    }
+
+    /*
+     * store results in the results table
+     * add data to the table pointed to by the variable result.
+     * put the fArr data in the column named "Fermi-Dirac Factor"
+     * put the EArr data in the column named "Energy"
+     */
+    Rp_TableColumnStoreDouble(x1,nPts,fArr);
+    Rp_TableColumnStoreDouble(y1,nPts,EArr);
+    Rp_TableColumnStoreDouble(x2,nPts,fArr2);
+    Rp_TableColumnStoreDouble(y2,nPts,EArr2);
+
+    /*
+     * close the global interface
+     * signal to the graphical user interface that science
+     * calculations are complete and to display the data
+     * as described in the views
+     */
+    Rp_InterfaceClose();
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/app-fermi/c/ex3/fermi_io.c
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/c/ex3/fermi_io.c	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/c/ex3/fermi_io.c	(revision 6168)
@@ -0,0 +1,81 @@
+#include "rappture.h"
+
+void fermi_io() {
+
+    Rp_Table *result = NULL;
+    Rp_TableColumn *x1 = NULL;
+    Rp_TableColumn *y1 = NULL;
+    Rp_TableColumn *x2 = NULL;
+    Rp_TableColumn *y2 = NULL;
+    Rp_View *v1 = NULL;
+    Rp_View *v2 = NULL;
+    Rp_View *v3 = NULL;
+
+    // assume global interface variable.
+    // newly created objects are stored in the
+    // global interface variable. if there is more
+    // than one global interface variable, the
+    // interface that should be used is specified
+    // using the Rp_???InitX version of the funtion
+    // where ??? represents the type of object the
+    // user is trying to create.
+
+    // describe the inputs
+    // declare a number named "temperature",
+    // with units of Kelvin, default value 300,
+    //
+    // the next number is named "Ef", has units of
+    // electron Volts, default value of -5.5
+    //
+    // Rp_Number is assumed to be an input
+    Rp_NumberInit("temperature","K",300);
+    Rp_NumberInit("Ef","eV",-5.5);
+
+    // describe the outputs
+    // declare a table to store the outputs
+    // table is named "factorsTable".
+    // two new columns are added to the default table
+    // the first column is named "Fermi-Dirac Factor",
+    // a description is provided, and it has no units.
+    // the second column is named "Energy", a description
+    // is provided, and has units of electron Volts
+    x1 = Rp_TableColumnInit("Fermi-Dirac Factor",
+            "Plot of Fermi-Dirac Calculation");
+    y1 = Rp_TableColumnInit("Energy",
+            "Energy cooresponding to each fdf");
+    Rp_TableColumnHint(y1,"units","eV");
+
+    x2 = Rp_TableColumnInit("Fermi-Dirac Factor * 2",
+            "Plot of Fermi-Dirac Calculation multiplied by 2");
+    y2 = Rp_TableColumnInit("Energy * 2",
+            "Energy cooresponding to each fdf multiplied by 2");
+    Rp_TableColumnHint(y2,"units","eV");
+
+    // describe how the outputs should be displayed
+    // initialize a view named "fdfView", with a 1x1 layout.
+    // next, add a plot named "fdfPlot" to the view "fdfView".
+    // populate the plot with data from the table
+    // "factorsTable". Plot the column named
+    // "Fermi-Dirac Factor" vs the column named "Energy".
+    // place the plot, named fdfPlot, at position 1x1 (by default)
+    // within the view's layout.
+    // Rp_View is assumed to be an output
+    v1 = Rp_ViewInit("fdfView");
+    Rp_ViewPlot(v1,"fdfPlot",1,1,x1,y1,"g:o");
+
+    // two stacked plots in the same view
+    v2 = Rp_ViewInit("fdfView2");
+    Rp_ViewPlot(v2,"fdfPlot2",1,1,x1,y1,"g:o");
+    Rp_ViewPlot(v2,"fdfPlot3",2,1,x2,y2,"b-o");
+
+    // two side by side plots in the same view
+    v3 = Rp_ViewInit("fdfView3");
+    Rp_ViewPlot(v3,"fdfPlot4",1,1,x1,y1,"g:o");
+    Rp_ViewPlot(v3,"fdfPlot5",1,2,x2,y2,"b-o");
+
+    // grouped curves in one plot in a view
+    // plots hold same location in the view
+    v4 = Rp_ViewInit("fdfView4");
+    Rp_ViewPlot(v4,"fdfPlot6",1,1,x1,y1,"g:o");
+    Rp_ViewPlot(v4,"fdfPlot7",1,1,x2,y2,"b-o");
+}
Index: /tags/1.6.0/examples/objects/app-fermi/c/ex3/readme
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/c/ex3/readme	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/c/ex3/readme	(revision 6168)
@@ -0,0 +1,1 @@
+using views to control plot placement
Index: /tags/1.6.0/examples/objects/app-fermi/c/fermi4.c
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/c/fermi4.c	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/c/fermi4.c	(revision 6168)
@@ -0,0 +1,116 @@
+/*
+ * ----------------------------------------------------------------------
+ *  EXAMPLE: Fermi-Dirac function in C
+ *
+ *  This simple example shows how to use Rappture within a simulator
+ *  written in C.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "rappture.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <unistd.h>
+
+#include "fermi_io.c"
+
+int main(int argc, char * argv[]) {
+
+    /* declare variables to interact with Rappture */
+    double T          = 0.0;
+    double Ef         = 0.0;
+    Rp_Table *result = NULL;
+
+
+    /* declare program variables */
+    double E          = 0.0;
+    double dE         = 0.0;
+    double kT         = 0.0;
+    double Emin       = 0.0;
+    double Emax       = 0.0;
+    double f          = 0.0;
+    size_t nPts       = 200;
+    double EArr[nPts];
+    double fArr[nPts];
+
+    /* initialize the global interface */
+    Rp_InterfaceInit(argc,argv,&fermi_io);
+
+    /* check the global interface for errors */
+    if (Rp_InterfaceError() != 0) {
+        /* there were errors while setting up the interface */
+        /* dump the traceback */
+        Rp_Outcome *o = Rp_InterfaceOutcome();
+        fprintf(stderr, "%s", Rp_OutcomeContext(o));
+        fprintf(stderr, "%s", Rp_OutcomeRemark(o));
+        return(Rp_InterfaceError());
+    }
+
+    /*
+     * connect variables to the interface
+     * look in the global interface for an object named
+     * "temperature", convert its value to Kelvin, and
+     * store the value into the address of T.
+     * look in the global interface for an object named
+     * "Ef", convert its value to electron Volts and store
+     * the value into the address of Ef.
+     * look in the global interface for an object named
+     * factorsTable and set the variable result to
+     * point to it.
+     */
+    Rp_InterfaceConnect("temperature",&T,"units=K",NULL);
+    Rp_InterfaceConnect("Ef",&Ef,"units=eV",NULL);
+    Rp_InterfaceConnect("factorsTable",result,NULL);
+
+    /* check the global interface for errors */
+    if (Rp_InterfaceError() != 0) {
+        /* there were errors while retrieving input data values */
+        /* dump the traceback */
+        Rp_Outcome *o = Rp_InterfaceOutcome();
+        fprintf(stderr, "%s", Rp_OutcomeContext(o));
+        fprintf(stderr, "%s", Rp_OutcomeRemark(o));
+        return(Rp_InterfaceError());
+    }
+
+    /* do science calculations */
+    kT = 8.61734e-5 * T;
+    Emin = Ef - (10*kT);
+    Emax = Ef + (10*kT);
+
+    dE = (1.0/nPts)*(Emax-Emin);
+
+    E = Emin;
+    for(size_t idx = 0; idx < nPts; idx++) {
+        E = E + dE;
+        f = 1.0/(1.0 + exp((E - Ef)/kT));
+        fArr[idx] = f;
+        EArr[idx] = E;
+        Rp_UtilsProgress((int)((E-Emin)/(Emax-Emin)*100),"Iterating");
+    }
+
+    /*
+     * store results in the results table
+     * add data to the table pointed to by the variable result.
+     * put the fArr data in the column named "Fermi-Dirac Factor"
+     * put the EArr data in the column named "Energy"
+     */
+    Rp_TableAddData(result,"Fermi-Dirac Factor",nPts,fArr);
+    Rp_TableAddData(result,"Energy",nPts,EArr);
+
+    /*
+     * close the global interface
+     * signal to the graphical user interface that science
+     * calculations are complete and to display the data
+     * as described in the views
+     */
+    Rp_InterfaceClose();
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/app-fermi/c/fermi_io.c
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/c/fermi_io.c	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/c/fermi_io.c	(revision 6168)
@@ -0,0 +1,66 @@
+#include "rappture.h"
+
+void fermi_io() {
+
+    Rp_Table *result = NULL;
+    Rp_View *v = NULL;
+
+    // assume global interface variable.
+    // newly created objects are stored in the
+    // global interface variable. if there is more
+    // than one global interface variable, the
+    // interface that should be used is specified
+    // using the Rp_???InitX version of the funtion
+    // where ??? represents the type of object the
+    // user is trying to create.
+
+    // describe the inputs
+    // declare a number named "temperature",
+    // with units of Kelvin, default value 300,
+    // and specify that it is only an input
+    // the next number is named "Ef", has units of
+    // electron Volts, default value of -5.5 and
+    // is also only an input value
+    Rp_NumberInit("temperature","K",300,RP_VAR_INPUT);
+    Rp_NumberInit("Ef","eV",-5.5,RP_VAR_INPUT);
+
+    // describe the outputs
+    // declare a table to store the outputs
+    // table is named "factorsTable" and is declared as
+    // an output only object. two new columns are added to the
+    // table "factorsTable". the first column is named
+    // "Fermi-Dirac Factor", a description is provided,
+    // and it has no units. the second column is named
+    // "Energy", a description is provided, and has units
+    // of electron Volts
+    result = Rp_TableInit("factorsTable",RP_VAR_OUTPUT);
+    Rp_TableNewColumn(result,"Fermi-Dirac Factor",
+                      "Plot of Fermi-Dirac Calculation",
+                      NULL);
+    Rp_TableNewColumn(result,"Energy",
+                      "Energy cooresponding to each fdf",
+                      "units=eV", NULL);
+
+    // describe how the outputs shoud be displayed
+    // initialize a view named "fdfView", specifying it
+    // as an output only object with a 1x1 view layout.
+    // next, add a plot named "fdfPlot" to the view fdfView".
+    // populate the plot with data from the table
+    // "fermifactors". Plot the column named
+    // "Fermi-Dirac Factor" vs the column named "Energy".
+    // place the plot, named fdfPlot, at position 1x1 within
+    // the view's layout.
+    v = Rp_ViewInit("fdfView",RP_VAR_OUTPUT|RP_VIEW_1X1);
+    Rp_ViewAddPlotFromTable(v,"fdfPlot","factorsTable",
+                            "Fermi-Dirac Factor",
+                            "Energy","position=1x1");
+
+    /*
+    // add another curve to the "fdfPlot" plot.
+    // plot the column named "Fermi-Dirac Factor2" vs
+    // the column named "Energy"
+    Rp_ViewAddPlotFromTable(v,"fdfPlot","factorsTable",
+                            "Fermi-Dirac Factor2",
+                            "Energy","position=1x1");
+    */
+}
Index: /tags/1.6.0/examples/objects/app-fermi/cpp/fermi4.cc
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/cpp/fermi4.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/cpp/fermi4.cc	(revision 6168)
@@ -0,0 +1,109 @@
+// ----------------------------------------------------------------------
+//  EXAMPLE: Fermi-Dirac function in C++.
+//
+//  This simple example shows how to use Rappture within a simulator
+//  written in C++.
+// ======================================================================
+//  AUTHOR:  Derrick Kearney, Purdue University
+//  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+//
+//  See the file "license.terms" for information on usage and
+//  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+// ======================================================================
+
+#include "rappture.h"
+
+#include <cstdlib>
+#include <cstdio>
+#include <math.h>
+#include <unistd.h>
+
+#include "fermi_io.c"
+
+int main(int argc, char * argv[]) {
+
+    // declare variables to interact with Rappture
+    double T            = 0.0;
+    double Ef           = 0.0;
+    Rappture::Table *result = NULL;
+
+    // declare program variables
+    double E            = 0.0;
+    double dE           = 0.0;
+    double kT           = 0.0;
+    double Emin         = 0.0;
+    double Emax         = 0.0;
+    double f            = 0.0;
+    size_t nPts         = 200;
+    double EArr[nPts];
+    double fArr[nPts];
+
+    // initialize the global interface
+    Rappture::Interface(argc,argv,&fermi_io);
+
+    //check the global interface for errors
+    if (Rappture::Interface::error() != 0) {
+        // there were errors while setting up the interface
+        // dump the traceback
+        Rappture::Outcome o = Rappture::Interface::outcome();
+        fprintf(stderr, "%s",o.context());
+        fprintf(stderr, "%s",o.remark());
+        return (Rappture::Interface::error());
+    }
+
+    // connect variables to the interface
+    // look in the global interface for an object named
+    // "temperature", convert its value to Kelvin, and
+    // store the value into the address of T.
+    // look in the global interface for an object named
+    // "Ef", convert its value to electron Volts and store
+    // the value into the address of Ef
+    // look in the global interface for an object named
+    // factorsTable and set the variable result to
+    // point to it.
+    Rappture::Interface::connect("temperature",&T,"units=K",NULL);
+    Rappture::Interface::connect("Ef",&Ef,"units=eV",NULL);
+    Rappture::Interface::connect("factorsTable",result,NULL);
+
+    // check the global interface for errors
+    if (Rappture::Interface::error() != 0) {
+        // there were errors while retrieving input data values
+        // dump the tracepack
+        Rappture::Outcome o = Rappture::Interface::outcome();
+        fprintf(stderr, "%s",o.context());
+        fprintf(stderr, "%s",o.remark());
+        return(Rappture::Interface::error());
+    }
+
+    // do science calculations
+    kT = 8.61734e-5 * T;
+    Emin = Ef - 10*kT;
+    Emax = Ef + 10*kT;
+
+    dE = (1.0/nPts)*(Emax-Emin);
+
+    E = Emin;
+    for (size_t idx = 0; idx < nPts; idx++) {
+        E = E + dE;
+        f = 1.0/(1.0 + exp((E - Ef)/kT));
+        fArr[idx] = f;
+        EArr[idx] = E;
+        Rappture::Utils::progress((int)((E-Emin)/(Emax-Emin)*100),"Iterating");
+    }
+
+    // store results in the results table
+    // add data to the table pointed to by the variable result.
+    // put the fArr data in the column named "Fermi-Dirac Factor"
+    // put the EArr data in the column named "Energy"
+
+    result->addData("Fermi-Dirac Factor",nPts,fArr);
+    result->addData("Energy",nPts,EArr);
+
+    // close the global interface
+    // signal to the graphical user interface that science
+    // calculations are complete and to display the data
+    // as described in the views
+    Rappture::Interface::close();
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/app-fermi/cpp/fermi_io.cc
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/cpp/fermi_io.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/cpp/fermi_io.cc	(revision 6168)
@@ -0,0 +1,64 @@
+#include "rappture.h"
+
+void fermi_io() {
+
+    // assume global interface variable.
+    // newly created objects are stored in the
+    // global interface variable. if there is more
+    // than one global interface variable, the
+    // interface that should be used is specified
+    // using an alternative version of the object constructor
+    // that supports an interface argument.
+
+    // describe the inputs
+    // declare a number named "temperature",
+    // with units of Kelvin, default value 300,
+    // and specify that it is only an input
+    // the next number is named "Ef", has units of
+    // electron Volts, default value of -5.5 and
+    // is also only an input value
+    Rappture::Number("temperature","K",300,RP_VAR_INPUT);
+    Rappture::Number("Ef","eV",-5.5,RP_VAR_INPUT);
+
+    // describe the outputs
+    // declare a table to store the outputs
+    // table is named "factorsTable" and is declared as
+    // an output only object. two new columns are added to the
+    // table "factorsTable". the first column is named
+    // "Fermi-Dirac Factor", a description is provided,
+    // and it has no units. the second column is named
+    // "Energy", a description is provided, and has units
+    // of electron Volts
+    Rappture::Table results = Rappture::Table("factorsTable",
+                                RP_VAR_OUTPUT);
+    results.newColumn("Fermi-Dirac Factor",
+                      "Plot of Fermi-Dirac Calculation",
+                      NULL);
+    results.newColumn("Energy",
+                      "Energy cooresponding to each fdf",
+                      "units=eV", NULL);
+
+    // describe how the outputs shoud be displayed
+    // initialize a view named "fdfView", specifying it
+    // as an output only object with a 1x1 view layout.
+    // next, add a plot named "fdfPlot" to the view fdfView".
+    // populate the plot with data from the table
+    // "fermifactors". Plot the column named
+    // "Fermi-Dirac Factor" vs the column named "Energy".
+    // place the plot, named fdfPlot, at position 1x1 within
+    // the view's layout.
+    Rappture::View v = Rappture::View("fdfView",
+                        RP_VAR_OUTPUT|RP_VIEW_1X1);
+    v.addPlotFromTable("fdfPlot","factorsTable",
+                       "Fermi-Dirac Factor",
+                       "Energy","position=1x1");
+
+    /*
+    // add another curve to the "fdfPlot" plot.
+    // plot the column named "Fermi-Dirac Factor2" vs
+    // the column named "Energy"
+    v.addPlotFromTable("fdfPlot","factorsTable",
+                       "Fermi-Dirac Factor2",
+                       "Energy","position=1x1");
+    */
+}
Index: /tags/1.6.0/examples/objects/app-fermi/fortran/fermi4.f
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/fortran/fermi4.f	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/fortran/fermi4.f	(revision 6168)
@@ -0,0 +1,86 @@
+c ----------------------------------------------------------------------
+c  EXAMPLE: Fermi-Dirac function in Fortran.
+c
+c  This simple example shows how to use Rappture within a simulator
+c  written in Fortran.
+c
+c ======================================================================
+c  AUTHOR:  Michael McLennan, Purdue University
+c  AUTHOR:  Derrick Kearney, Purdue University
+c  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+c
+c  See the file "license.terms" for information on usage and
+c  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+c ======================================================================
+
+      program fermi
+        IMPLICIT NONE
+
+        integer rp_lib, rp_units_convert_dbl
+
+        integer lib, o, progress
+        double precision T, Ef, kT, Emin, Emax, dE, f, E
+        CHARACTER*100 inFile, strVal
+        character*40 xy
+
+        call getarg(1,inFile)
+
+        lib = Rp_LibraryInit()
+        call Rp_LibraryLoadFile(lib,inFile)
+        if (Rp_LibraryError(lib) .ne. 0) then
+            o = Rp_LibraryOutcome(lib)
+            write(0,*) "Error while opening ",inFile
+            stop
+        endif
+
+        call rp_lib_get(driver,
+     +        "input.number(temperature).current", strVal)
+        ok = rp_units_convert_dbl(strVal,"K",T)
+        if (ok .ne. 0) then
+            write(strVal,*) "Error while converting temperature"
+            write(0,*) strVal
+            call rp_lib_put_str (driver,"output.log",strVal,0)
+            call rp_result(driver)
+            stop
+        endif
+
+        call rp_lib_get(driver,
+     +        "input.number(Ef).current", strVal)
+        ok = rp_units_convert_dbl(strVal,"eV",Ef)
+        if (ok .ne. 0) then
+            write(strVal,*) "Error while converting Ef"
+            write(0,*) strVal
+            call rp_lib_put_str (driver,"output.log",strVal,0)
+            call rp_result(driver)
+            stop
+        endif
+
+        kT = 8.61734e-5 * T
+        Emin = Ef - 10*kT
+        Emax = Ef + 10*kT
+
+        dE = 0.005*(Emax - Emin)
+
+c       Label out graph with a title, x-axis label, 
+c       y-axis label and y-axis units
+
+        call rp_lib_put_str (driver,"output.curve(f12).about.label",
+     +          "Fermi-Dirac Factor",0)
+        call rp_lib_put_str (driver,"output.curve(f12).xaxis.label",
+     +          "Fermi-Dirac Factor",0)
+        call rp_lib_put_str (driver,"output.curve(f12).yaxis.label",
+     +          "Energy",0)
+        call rp_lib_put_str (driver,"output.curve(f12).yaxis.units",
+     +          "eV",0)
+
+        do 10 E=Emin,Emax,dE
+          f = 1.0/(1.0+exp((E-Ef)/kT))
+          progress = nint((E-Emin)/(Emax-Emin)*100)
+          call rp_utils_progress (progress,"Iterating")
+          write(xy,'(E20.12,F13.9,A)') f, E, char(10)
+          call rp_lib_put_str (driver,
+     +          "output.curve(f12).component.xy", xy, 1)
+ 10     continue
+
+        call rp_result(driver)
+      end program fermi
Index: /tags/1.6.0/examples/objects/app-fermi/matlab/ex2/fermi.m
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/matlab/ex2/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/matlab/ex2/fermi.m	(revision 6168)
@@ -0,0 +1,101 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Octave.
+%
+%  This script represents a newly written application with rappture 
+%  bindings and interface.
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function fermi4(argv)
+
+% declare variables to interact with Rappture
+T       = 0.0;
+Ef      = 0.0;
+result  = 0;
+
+% declare program variables
+E       = 0.0;
+dE      = 0.0;
+kT      = 0.0;
+Emin    = 0.0;
+Emax    = 0.0;
+f       = 0.0;
+nPts    = 200;
+
+% initialize the global interface
+Rp_InterfaceInit(argv,@fermi_io);
+
+% check that global interface for errors
+if (Rp_InterfaceError() != 0)) {
+    % there were errors while setting up the interface
+    % dump the traceback
+    o = Rp_InterfaceOutcome();
+    fprintf(2, '%s', Rp_OutcomeContext(o));
+    fprintf(2, '%s', Rp_OutcomeRemark(o));
+    return(Rp_InterfaceError());
+}
+
+% connect variables to the interface
+% look in the global interface for an object named
+% 'temperature', convert its value to Kelvin, and
+% store the value into the variable T.
+% look in the global interface for an object named
+% 'Ef', convert its value to electron Volts and store
+% the value into the variable Ef.
+% look in the global interface for an object named
+% factorsTable and store a handle to it in the
+% variable result.
+
+T = Rp_InterfaceConnect('temperature','units=K');
+Ef = Rp_InterfaceConnect('Ef','units=eV');
+p1 = Rp_InterfaceConnect('fdfPlot');
+p2 = Rp_InterfaceConnect('fdfPlot2');
+
+% check the global interface for errors
+if (Rp_InterfaceError() != 0) {
+    % there were errors while retrieving input data values
+    % dump the tracepack
+    o = Rp_InterfaceOutcome();
+    fprintf(stderr, '%s', Rp_OutcomeContext(o));
+    fprintf(stderr, '%s', Rp_OutcomeRemark(o));
+    return(Rp_InterfaceError());
+}
+
+% do fermi calculations (science)...
+kT = 8.61734e-5 * T;
+Emin = Ef - (10*kT);
+Emax = Ef + (10*kT);
+
+EArr = linspace(Emin,Emax,nPts);
+fArr = 1.0 ./ (1.0 + exp((EArr - Ef)/kT));
+
+% set up the curves for the plot by using the add command
+% Rp_PlotAdd(plot,name,xdata,ydata,fmt);
+%
+% to group curves on the same plot, just keep adding curves
+% to save space, X array values are compared between curves.
+% the the X arrays contain the same values, we only store
+% one version in the internal data table, otherwise a new
+% column is created for the array. for big arrays this may take
+% some time, we should benchmark to see if this can be done
+% efficiently.
+
+Rp_PlotAdd(p1,'fdfCurve1',fArr,EArr,'g:o');
+
+Rp_PlotAdd(p2,'fdfCurve2',fArr,EArr,'b-o');
+Rp_PlotAdd(p2,'fdfCurve3',fArr,EArr,'p--');
+
+% close the global interface
+% signal to the graphical user interface that science
+% calculations are complete and to display the data
+% as described in the views
+
+Rp_InterfaceClose();
+
+return 0;
Index: /tags/1.6.0/examples/objects/app-fermi/matlab/ex2/fermi_io.m
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/matlab/ex2/fermi_io.m	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/matlab/ex2/fermi_io.m	(revision 6168)
@@ -0,0 +1,41 @@
+function fermi_io()
+
+    % assume global interface variable.
+    % newly created objects are stored in the
+    % global interface variable. if there is more
+    % than one global interface variable, the
+    % interface that should be used is specified
+    % using the Rp_???InitX version of the funtion
+    % where ??? represents the type of object the
+    % user is trying to create.
+
+    % describe the inputs
+    % declare a number named 'temperature',
+    % with units of Kelvin, default value 300,
+    %
+    % the next number is named 'Ef', has units of
+    % electron Volts, default value of -5.5
+    %
+    % Rp_Number is assumed to be an input
+    Rp_NumberInit('temperature','K',300);
+    Rp_NumberInit('Ef','eV',-5.5);
+
+    % Most simple xy plots fir output
+    % Because it is a single plot, it gets its own view.
+    % The plot is placed in the position 1,1 of the view.
+    p1 = Rp_PlotInit('fdfPlot');
+    Rp_PlotXAxis(p1,'Fermi-Dirac Factor',
+        'Plot of Fermi-Dirac Calculation');
+    Rp_PlotYAxis(p1,'Energy','Energy cooresponding to each fdf');
+    Rp_PlotYAxisHint(p1,'units','eV');
+
+    % Declaring a second plot creates a new view.
+    % The new plot will be placed in the position 1,1 of its view.
+    % User can do simple plot grouping using the add function
+    % in the science code.
+    p2 = Rp_PlotInit('fdfPlot2');
+    Rp_PlotXAxis(p2,'Fermi-Dirac Factor',
+        'Plot of Fermi-Dirac Calculation');
+    Rp_PlotYAxis(p2,'Energy','Energy cooresponding to each fdf');
+    Rp_PlotYAxisHint(p2,'units','eV');
+}
Index: /tags/1.6.0/examples/objects/app-fermi/matlab/ex3/fermi.m
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/matlab/ex3/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/matlab/ex3/fermi.m	(revision 6168)
@@ -0,0 +1,93 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Octave.
+%
+%  This script represents a newly written application with rappture 
+%  bindings and interface.
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function fermi4(argv)
+
+% declare variables to interact with Rappture
+T       = 0.0;
+Ef      = 0.0;
+result  = 0;
+
+% declare program variables
+E       = 0.0;
+dE      = 0.0;
+kT      = 0.0;
+Emin    = 0.0;
+Emax    = 0.0;
+f       = 0.0;
+nPts    = 200;
+
+% initialize the global interface
+Rp_InterfaceInit(argv,@fermi_io);
+
+% check that global interface for errors
+if (Rp_InterfaceError() != 0)) {
+    % there were errors while setting up the interface
+    % dump the traceback
+    o = Rp_InterfaceOutcome();
+    fprintf(2, '%s', Rp_OutcomeContext(o));
+    fprintf(2, '%s', Rp_OutcomeRemark(o));
+    return(Rp_InterfaceError());
+}
+
+% connect variables to the interface
+% look in the global interface for an object named
+% 'temperature', convert its value to Kelvin, and
+% store the value into the variable T.
+% look in the global interface for an object named
+% 'Ef', convert its value to electron Volts and store
+% the value into the variable Ef.
+% look in the global interface for the columns to
+% store data. retrieve them for later use.
+T = Rp_InterfaceConnect('temperature','units=K');
+Ef = Rp_InterfaceConnect('Ef','units=eV');
+
+x1 = Rp_InterfaceConnect('Fermi-Dirac Factor');
+y1 = Rp_InterfaceConnect('Energy');
+x2 = Rp_InterfaceConnect('Fermi-Dirac Factor * 2');
+y2 = Rp_InterfaceConnect('Energy * 2');
+
+% check the global interface for errors
+if (Rp_InterfaceError() != 0) {
+    % there were errors while retrieving input data values
+    % dump the tracepack
+    o = Rp_InterfaceOutcome();
+    fprintf(stderr, '%s', Rp_OutcomeContext(o));
+    fprintf(stderr, '%s', Rp_OutcomeRemark(o));
+    return(Rp_InterfaceError());
+}
+
+% do fermi calculations (science)...
+kT = 8.61734e-5 * T;
+Emin = Ef - (10*kT);
+Emax = Ef + (10*kT);
+
+% store results in the results table
+% add data to the table pointed to by the variable result.
+% put the fArr data in the column named "Fermi-Dirac Factor"
+% put the EArr data in the column named "Energy"
+
+Rp_TableColumnStore(x1,fArr);
+Rp_TableColumnStore(y1,EArr);
+Rp_TableColumnStore(x2,fArr2);
+Rp_TableColumnStore(y2,EArr2);
+
+% close the global interface
+% signal to the graphical user interface that science
+% calculations are complete and to display the data
+% as described in the views
+
+Rp_InterfaceClose();
+
+return 0;
Index: /tags/1.6.0/examples/objects/app-fermi/matlab/ex3/fermi_io.m
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/matlab/ex3/fermi_io.m	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/matlab/ex3/fermi_io.m	(revision 6168)
@@ -0,0 +1,70 @@
+function fermi_io()
+
+    % assume global interface variable.
+    % newly created objects are stored in the
+    % global interface variable. if there is more
+    % than one global interface variable, the
+    % interface that should be used is specified
+    % using the Rp_???InitX version of the funtion
+    % where ??? represents the type of object the
+    % user is trying to create.
+
+    % describe the inputs
+    % declare a number named 'temperature',
+    % with units of Kelvin, default value 300,
+    %
+    % the next number is named 'Ef', has units of
+    % electron Volts, default value of -5.5
+    %
+    % RpNumber is assumed to be an input
+    Rp_NumberInit('temperature','K',300);
+    Rp_NumberInit('Ef','eV',-5.5);
+
+    % describe the outputs
+    % declare a table to store the outputs
+    % table is named "factorsTable".
+    % two new columns are added to the default table
+    % the first column is named "Fermi-Dirac Factor",
+    % a description is provided, and it has no units.
+    % the second column is named "Energy", a description
+    % is provided, and has units of electron Volts
+    x1 = Rp_TableColumnInit('Fermi-Dirac Factor',
+            'Plot of Fermi-Dirac Calculation');
+    y1 = Rp_TableColumnInit('Energy',
+            'Energy cooresponding to each fdf');
+    Rp_TableColumnHint(y1,'units','eV');
+
+    x2 = Rp_TableColumnInit('Fermi-Dirac Factor * 2',
+            'Plot of Fermi-Dirac Calculation multiplied by 2');
+    y2 = Rp_TableColumnInit('Energy * 2',
+            'Energy cooresponding to each fdf multiplied by 2');
+    Rp_TableColumnHint(y2,'units','eV');
+
+    % describe how the outputs should be displayed
+    % initialize a view named "fdfView", with a 1x1 layout.
+    % next, add a plot named "fdfPlot" to the view "fdfView".
+    % populate the plot with data from the table
+    % "factorsTable". Plot the column named
+    % "Fermi-Dirac Factor" vs the column named "Energy".
+    % place the plot, named fdfPlot, at position 1x1 (by default)
+    % within the view's layout.
+    % Rp_View is assumed to be an output
+    v1 = Rp_ViewInit('fdfView');
+    Rp_ViewPlot(v1,'fdfPlot',1,1,x1,y1,'g:o');
+
+    % two stacked plots in the same view
+    v2 = Rp_ViewInit('fdfView2');
+    Rp_ViewPlot(v2,'fdfPlot2',1,1,x1,y1,'g:o');
+    Rp_ViewPlot(v2,'fdfPlot3',2,1,x2,y2,'b-o');
+
+    % two side by side plots in the same view
+    v3 = Rp_ViewInit('fdfView3');
+    Rp_ViewPlot(v3,'fdfPlot4',1,1,x1,y1,'g:o');
+    Rp_ViewPlot(v3,'fdfPlot5',1,2,x2,y2,'b-o');
+
+    % grouped curves in one plot in a view
+    % plots hold same location in the view
+    v4 = Rp_ViewInit('fdfView4');
+    Rp_ViewPlot(v4,'fdfPlot6',1,1,x1,y1,'g:o');
+    Rp_ViewPlot(v4,'fdfPlot7',1,1,x2,y2,'b-o');
+}
Index: /tags/1.6.0/examples/objects/app-fermi/matlab/fermi4.m
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/matlab/fermi4.m	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/matlab/fermi4.m	(revision 6168)
@@ -0,0 +1,92 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Octave.
+%
+%  This script represents a newly written application with rappture 
+%  bindings and interface.
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function fermi4(argv)
+
+% declare variables to interact with Rappture
+T       = 0.0;
+Ef      = 0.0;
+result  = 0;
+
+% declare program variables
+E       = 0.0;
+dE      = 0.0;
+kT      = 0.0;
+Emin    = 0.0;
+Emax    = 0.0;
+f       = 0.0;
+nPts    = 200;
+
+% initialize the global interface
+Rp_InterfaceInit(argv,@fermi_io);
+
+% check that global interface for errors
+if (Rp_InterfaceError() != 0)) {
+    % there were errors while setting up the interface
+    % dump the traceback
+    o = Rp_InterfaceOutcome();
+    fprintf(2, '%s', Rp_OutcomeContext(o));
+    fprintf(2, '%s', Rp_OutcomeRemark(o));
+    return(Rp_InterfaceError());
+}
+
+% connect variables to the interface
+% look in the global interface for an object named
+% 'temperature', convert its value to Kelvin, and
+% store the value into the variable T.
+% look in the global interface for an object named
+% 'Ef', convert its value to electron Volts and store
+% the value into the variable Ef.
+% look in the global interface for an object named
+% factorsTable and store a handle to it in the
+% variable result.
+
+T = Rp_InterfaceConnect('temperature','units=K')
+Ef = Rp_InterfaceConnect('Ef','units=eV')
+result = Rp_InterfaceConnect('factorsTable')
+
+% check the global interface for errors
+if (Rp_InterfaceError() != 0) {
+    % there were errors while retrieving input data values
+    % dump the tracepack
+    o = Rp_InterfaceOutcome();
+    fprintf(stderr, '%s', Rp_OutcomeContext(o));
+    fprintf(stderr, '%s', Rp_OutcomeRemark(o));
+    return(Rp_InterfaceError());
+}
+
+% do fermi calculations (science)...
+kT = 8.61734e-5 * T;
+Emin = Ef - (10*kT);
+Emax = Ef + (10*kT);
+
+EArr = linspace(Emin,Emax,nPts);
+fArr = 1.0 ./ (1.0 + exp((EArr - Ef)/kT));
+
+% store results in the results table
+% add data to the table pointed to by the variable result
+% put the fArr data in the column named 'Fermi-Dirac Factor'
+% put the EArr data in the column named 'Energy'
+
+Rp_TableAddData(result,'Fermi-Dirac Factor',fArr);
+Rp_TableAddData(result,'Energy',EArr);
+
+% close the global interface
+% signal to the graphical user interface that science
+% calculations are complete and to display the data
+% as described in the views
+
+Rp_InterfaceClose();
+
+return 0;
Index: /tags/1.6.0/examples/objects/app-fermi/matlab/fermi_io.m
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/matlab/fermi_io.m	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/matlab/fermi_io.m	(revision 6168)
@@ -0,0 +1,64 @@
+function fermi_io()
+
+    % assume global interface variable.
+    % newly created objects are stored in the
+    % global interface variable. if there is more
+    % than one global interface variable, the
+    % interface that should be used is specified
+    % using the Rp_???InitX version of the funtion
+    % where ??? represents the type of object the
+    % user is trying to create.
+
+    % describe the inputs
+    % declare a number named 'temperature',
+    % with units of Kelvin, default value 300,
+    % and specify that it is only an input
+    % the next number is named 'Ef', has units of
+    % electron Volts, default value of -5.5 and
+    % is also only an input value
+    % RP_VAR_INPUT is a matlab function that returns
+    % a constant value
+    Rp_NumberInit('temperature','K',300,RP_VAR_INPUT);
+    Rp_NumberInit('Ef','eV',-5.5,RP_VAR_INPUT);
+
+    % describe the outputs
+    % declare a table to store the outputs
+    % table is named 'factorsTable' and is declared as
+    % an output only object. two new columns are added to the
+    % table "factorsTable". the first column is named
+    % "Fermi-Dirac Factor", a description is provided,
+    % and it has no units. the second column is named
+    % "Energy", a description is provided, and has units
+    % of electron Volts
+    % RP_VAR_OUTPUT is a matlab function that returns
+    % a constant value
+    result = Rp_TableInit('factorsTable',RP_VAR_OUTPUT);
+    Rp_TableNewColumn(result,'Fermi-Dirac Factor',
+                      'Plot of Fermi-Dirac Calculation');
+    Rp_TableNewColumn(result,'Energy',
+                      'Energy cooresponding to each fdf',
+                      'units=eV');
+
+    % describe how the outputs shoud be displayed
+    % initialize a view named "fdfView", specifying it
+    % as an output only object with a 1x1 view layout.
+    % next, add a plot named "fdfPlot" to the view fdfView".
+    % populate the plot with data from the table
+    % "fermifactors". Plot the column named
+    % "Fermi-Dirac Factor" vs the column named "Energy".
+    % place the plot, named fdfPlot, at position 1x1 within
+    % the view's layout.
+    % RP_VIEW_1X1 is a matlab function that returns
+    % a constant value
+    v = Rp_ViewInit('fdfView',RP_VAR_OUTPUT|RP_VIEW_1X1);
+    Rp_ViewAddPlotFromTable(v,'fdfPlot','factorsTable',
+                            'Fermi-Dirac Factor',
+                            'Energy','position=1x1');
+
+    % add another curve to the 'fdfPlot' plot.
+    % plot the column named 'Fermi-Dirac Factor2' vs
+    % the column named 'Energy'
+    % Rp_ViewAddPlotFromTable(v,'fdfPlot','factorsTable',
+    %                         'Fermi-Dirac Factor2',
+    %                         'Energy','position=1x1');
+}
Index: /tags/1.6.0/examples/objects/app-fermi/octave/ex2/fermi.m
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/octave/ex2/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/octave/ex2/fermi.m	(revision 6168)
@@ -0,0 +1,101 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Octave.
+%
+%  This script represents a newly written application with rappture 
+%  bindings and interface.
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function fermi4(argv)
+
+% declare variables to interact with Rappture
+T       = 0.0;
+Ef      = 0.0;
+result  = 0;
+
+% declare program variables
+E       = 0.0;
+dE      = 0.0;
+kT      = 0.0;
+Emin    = 0.0;
+Emax    = 0.0;
+f       = 0.0;
+nPts    = 200;
+
+% initialize the global interface
+Rp_InterfaceInit(argv,@fermi_io);
+
+% check that global interface for errors
+if (Rp_InterfaceError() != 0)) {
+    % there were errors while setting up the interface
+    % dump the traceback
+    o = Rp_InterfaceOutcome();
+    fprintf(2, '%s', Rp_OutcomeContext(o));
+    fprintf(2, '%s', Rp_OutcomeRemark(o));
+    return(Rp_InterfaceError());
+}
+
+% connect variables to the interface
+% look in the global interface for an object named
+% 'temperature', convert its value to Kelvin, and
+% store the value into the variable T.
+% look in the global interface for an object named
+% 'Ef', convert its value to electron Volts and store
+% the value into the variable Ef.
+% look in the global interface for an object named
+% factorsTable and store a handle to it in the
+% variable result.
+
+T = Rp_InterfaceConnect('temperature','units=K');
+Ef = Rp_InterfaceConnect('Ef','units=eV');
+p1 = Rp_InterfaceConnect('fdfPlot');
+p2 = Rp_InterfaceConnect('fdfPlot2');
+
+% check the global interface for errors
+if (Rp_InterfaceError() != 0) {
+    % there were errors while retrieving input data values
+    % dump the tracepack
+    o = Rp_InterfaceOutcome();
+    fprintf(stderr, '%s', Rp_OutcomeContext(o));
+    fprintf(stderr, '%s', Rp_OutcomeRemark(o));
+    return(Rp_InterfaceError());
+}
+
+% do fermi calculations (science)...
+kT = 8.61734e-5 * T;
+Emin = Ef - (10*kT);
+Emax = Ef + (10*kT);
+
+EArr = linspace(Emin,Emax,nPts);
+fArr = 1.0 ./ (1.0 + exp((EArr - Ef)/kT));
+
+% set up the curves for the plot by using the add command
+% Rp_PlotAdd(plot,name,xdata,ydata,fmt);
+%
+% to group curves on the same plot, just keep adding curves
+% to save space, X array values are compared between curves.
+% the the X arrays contain the same values, we only store
+% one version in the internal data table, otherwise a new
+% column is created for the array. for big arrays this may take
+% some time, we should benchmark to see if this can be done
+% efficiently.
+
+Rp_PlotAdd(p1,'fdfCurve1',fArr,EArr,'g:o');
+
+Rp_PlotAdd(p2,'fdfCurve2',fArr,EArr,'b-o');
+Rp_PlotAdd(p2,'fdfCurve3',fArr,EArr,'p--');
+
+% close the global interface
+% signal to the graphical user interface that science
+% calculations are complete and to display the data
+% as described in the views
+
+Rp_InterfaceClose();
+
+return 0;
Index: /tags/1.6.0/examples/objects/app-fermi/octave/ex2/fermi_io.m
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/octave/ex2/fermi_io.m	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/octave/ex2/fermi_io.m	(revision 6168)
@@ -0,0 +1,41 @@
+function fermi_io()
+
+    % assume global interface variable.
+    % newly created objects are stored in the
+    % global interface variable. if there is more
+    % than one global interface variable, the
+    % interface that should be used is specified
+    % using the Rp_???InitX version of the funtion
+    % where ??? represents the type of object the
+    % user is trying to create.
+
+    % describe the inputs
+    % declare a number named 'temperature',
+    % with units of Kelvin, default value 300,
+    %
+    % the next number is named 'Ef', has units of
+    % electron Volts, default value of -5.5
+    %
+    % Rp_Number is assumed to be an input
+    Rp_NumberInit('temperature','K',300);
+    Rp_NumberInit('Ef','eV',-5.5);
+
+    % Most simple xy plots fir output
+    % Because it is a single plot, it gets its own view.
+    % The plot is placed in the position 1,1 of the view.
+    p1 = Rp_PlotInit('fdfPlot');
+    Rp_PlotXAxis(p1,'Fermi-Dirac Factor',
+        'Plot of Fermi-Dirac Calculation');
+    Rp_PlotYAxis(p1,'Energy','Energy cooresponding to each fdf');
+    Rp_PlotYAxisHint(p1,'units','eV');
+
+    % Declaring a second plot creates a new view.
+    % The new plot will be placed in the position 1,1 of its view.
+    % User can do simple plot grouping using the add function
+    % in the science code.
+    p2 = Rp_PlotInit('fdfPlot2');
+    Rp_PlotXAxis(p2,'Fermi-Dirac Factor',
+        'Plot of Fermi-Dirac Calculation');
+    Rp_PlotYAxis(p2,'Energy','Energy cooresponding to each fdf');
+    Rp_PlotYAxisHint(p2,'units','eV');
+}
Index: /tags/1.6.0/examples/objects/app-fermi/octave/ex3/fermi.m
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/octave/ex3/fermi.m	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/octave/ex3/fermi.m	(revision 6168)
@@ -0,0 +1,93 @@
+% ----------------------------------------------------------------------
+%  EXAMPLE: Fermi-Dirac function in Octave.
+%
+%  This script represents a newly written application with rappture 
+%  bindings and interface.
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function fermi4(argv)
+
+% declare variables to interact with Rappture
+T       = 0.0;
+Ef      = 0.0;
+result  = 0;
+
+% declare program variables
+E       = 0.0;
+dE      = 0.0;
+kT      = 0.0;
+Emin    = 0.0;
+Emax    = 0.0;
+f       = 0.0;
+nPts    = 200;
+
+% initialize the global interface
+Rp_InterfaceInit(argv,@fermi_io);
+
+% check that global interface for errors
+if (Rp_InterfaceError() != 0)) {
+    % there were errors while setting up the interface
+    % dump the traceback
+    o = Rp_InterfaceOutcome();
+    fprintf(2, '%s', Rp_OutcomeContext(o));
+    fprintf(2, '%s', Rp_OutcomeRemark(o));
+    return(Rp_InterfaceError());
+}
+
+% connect variables to the interface
+% look in the global interface for an object named
+% 'temperature', convert its value to Kelvin, and
+% store the value into the variable T.
+% look in the global interface for an object named
+% 'Ef', convert its value to electron Volts and store
+% the value into the variable Ef.
+% look in the global interface for the columns to
+% store data. retrieve them for later use.
+T = Rp_InterfaceConnect('temperature','units=K');
+Ef = Rp_InterfaceConnect('Ef','units=eV');
+
+x1 = Rp_InterfaceConnect('Fermi-Dirac Factor');
+y1 = Rp_InterfaceConnect('Energy');
+x2 = Rp_InterfaceConnect('Fermi-Dirac Factor * 2');
+y2 = Rp_InterfaceConnect('Energy * 2');
+
+% check the global interface for errors
+if (Rp_InterfaceError() != 0) {
+    % there were errors while retrieving input data values
+    % dump the tracepack
+    o = Rp_InterfaceOutcome();
+    fprintf(stderr, '%s', Rp_OutcomeContext(o));
+    fprintf(stderr, '%s', Rp_OutcomeRemark(o));
+    return(Rp_InterfaceError());
+}
+
+% do fermi calculations (science)...
+kT = 8.61734e-5 * T;
+Emin = Ef - (10*kT);
+Emax = Ef + (10*kT);
+
+% store results in the results table
+% add data to the table pointed to by the variable result.
+% put the fArr data in the column named "Fermi-Dirac Factor"
+% put the EArr data in the column named "Energy"
+
+Rp_TableColumnStore(x1,fArr);
+Rp_TableColumnStore(y1,EArr);
+Rp_TableColumnStore(x2,fArr2);
+Rp_TableColumnStore(y2,EArr2);
+
+% close the global interface
+% signal to the graphical user interface that science
+% calculations are complete and to display the data
+% as described in the views
+
+Rp_InterfaceClose();
+
+return 0;
Index: /tags/1.6.0/examples/objects/app-fermi/octave/ex3/fermi_io.m
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/octave/ex3/fermi_io.m	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/octave/ex3/fermi_io.m	(revision 6168)
@@ -0,0 +1,70 @@
+function fermi_io()
+
+    % assume global interface variable.
+    % newly created objects are stored in the
+    % global interface variable. if there is more
+    % than one global interface variable, the
+    % interface that should be used is specified
+    % using the Rp_???InitX version of the funtion
+    % where ??? represents the type of object the
+    % user is trying to create.
+
+    % describe the inputs
+    % declare a number named 'temperature',
+    % with units of Kelvin, default value 300,
+    %
+    % the next number is named 'Ef', has units of
+    % electron Volts, default value of -5.5
+    %
+    % RpNumber is assumed to be an input
+    Rp_NumberInit('temperature','K',300);
+    Rp_NumberInit('Ef','eV',-5.5);
+
+    % describe the outputs
+    % declare a table to store the outputs
+    % table is named "factorsTable".
+    % two new columns are added to the default table
+    % the first column is named "Fermi-Dirac Factor",
+    % a description is provided, and it has no units.
+    % the second column is named "Energy", a description
+    % is provided, and has units of electron Volts
+    x1 = Rp_TableColumnInit('Fermi-Dirac Factor',
+            'Plot of Fermi-Dirac Calculation');
+    y1 = Rp_TableColumnInit('Energy',
+            'Energy cooresponding to each fdf');
+    Rp_TableColumnHint(y1,'units','eV');
+
+    x2 = Rp_TableColumnInit('Fermi-Dirac Factor * 2',
+            'Plot of Fermi-Dirac Calculation multiplied by 2');
+    y2 = Rp_TableColumnInit('Energy * 2',
+            'Energy cooresponding to each fdf multiplied by 2');
+    Rp_TableColumnHint(y2,'units','eV');
+
+    % describe how the outputs should be displayed
+    % initialize a view named "fdfView", with a 1x1 layout.
+    % next, add a plot named "fdfPlot" to the view "fdfView".
+    % populate the plot with data from the table
+    % "factorsTable". Plot the column named
+    % "Fermi-Dirac Factor" vs the column named "Energy".
+    % place the plot, named fdfPlot, at position 1x1 (by default)
+    % within the view's layout.
+    % Rp_View is assumed to be an output
+    v1 = Rp_ViewInit('fdfView');
+    Rp_ViewPlot(v1,'fdfPlot',1,1,x1,y1,'g:o');
+
+    % two stacked plots in the same view
+    v2 = Rp_ViewInit('fdfView2');
+    Rp_ViewPlot(v2,'fdfPlot2',1,1,x1,y1,'g:o');
+    Rp_ViewPlot(v2,'fdfPlot3',2,1,x2,y2,'b-o');
+
+    % two side by side plots in the same view
+    v3 = Rp_ViewInit('fdfView3');
+    Rp_ViewPlot(v3,'fdfPlot4',1,1,x1,y1,'g:o');
+    Rp_ViewPlot(v3,'fdfPlot5',1,2,x2,y2,'b-o');
+
+    % grouped curves in one plot in a view
+    % plots hold same location in the view
+    v4 = Rp_ViewInit('fdfView4');
+    Rp_ViewPlot(v4,'fdfPlot6',1,1,x1,y1,'g:o');
+    Rp_ViewPlot(v4,'fdfPlot7',1,1,x2,y2,'b-o');
+}
Index: /tags/1.6.0/examples/objects/app-fermi/python/ex2/fermi.py
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/python/ex2/fermi.py	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/python/ex2/fermi.py	(revision 6168)
@@ -0,0 +1,123 @@
+#! /usr/bin/env python
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Python.
+#
+#  This simple example shows how to use Rappture within a simulator
+#  written in Python.
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+
+import sys
+import os
+import getopt
+
+import Rappture
+from math import *
+
+from fermi_io import fermi_io
+
+def help(argv=sys.argv):
+    return """%(prog)s [-h]
+
+     -h | --help       - print the help menu
+
+     Examples:
+       %(prog)s
+
+""" % {'prog':os.path.basename(argv[0])}
+
+def main(argv=None):
+
+    # initialize the global interface
+    Rappture.Interface(sys.argv,fermi_io)
+
+    # check the global interface for errors
+    if (Rappture.Interface.error() != 0) {
+        # there were errors while setting up the interface
+        # dump the traceback
+        o = Rappture.Interface.outcome()
+        print >>sys.stderr, "%s", o.context()
+        print >>sys.stderr, "%s", o.remark()
+        return (Rappture.Interface.error())
+    }
+
+    # connect variables to the interface
+    # look in the global interface for an object named
+    # "temperature", convert its value to Kelvin, and
+    # store the value into the address of T.
+    # look in the global interface for an object named
+    # "Ef", convert its value to electron Volts and store
+    # the value into the address of Ef
+    # look in the global interface for an object named
+    # factorsTable and set the variable result to
+    # point to it.
+
+    T = Rappture.Interface.connect(name="temperature",
+                                   hints=["units=K"])
+    Ef = Rappture.Interface.connect(name="Ef",
+                                    hints=["units=eV"]);
+    p1 = Rappture.Interface.connect(name="fdfPlot");
+    p2 = Rappture.Interface.connect(name="fdfPlot");
+
+    # check the global interface for errors
+    if (Rappture.Interface.error() != 0) {
+        # there were errors while retrieving input data values
+        # dump the tracepack
+        o = Rappture.Interface.outcome()
+        print >>sys.stderr, "%s", o.context()
+        print >>sys.stderr, "%s", o.remark()
+        return (Rappture.Interface.error())
+    }
+
+    # do science calculations
+    nPts = 200;
+    EArr = list() # [nPts]
+    fArr = list() # [nPts]
+
+    kT = 8.61734e-5 * T
+    Emin = Ef - (10*kT)
+    Emax = Ef + (10*kT)
+
+    dE = (1.0/nPts)*(Emax-Emin)
+
+    E = Emin;
+    for idx in xrange(nPts):
+        E = E + dE
+        f = 1.0/(1.0 + exp((E - Ef)/kT))
+        fArr.append(f)
+        EArr.append(E)
+        progress = (int)((E-Emin)/(Emax-Emin)*100)
+        Rappture.Utils.progress(progress,"Iterating")
+
+    # set up the curves for the plot by using the add command
+    # add <name> <xdata> <ydata> -format <fmt>
+    #
+    # to group curves on the same plot, just keep adding curves
+    # to save space, X array values are compared between curves.
+    # the the X arrays contain the same values, we only store
+    # one version in the internal data table, otherwise a new
+    # column is created for the array. for big arrays this may take
+    # some time, we should benchmark to see if this can be done
+    # efficiently.
+
+    p1.add(name="fdfCurve1", xdata=fArr, ydata=EArr, format="g:o")
+
+    p2.add(name="fdfCurve2", xdata=fArr, ydata=EArr, format="b-o")
+    p2.add(name="fdfCurve3", xdata=fArr, ydata=EArr, format="p--")
+
+    # close the global interface
+    # signal to the graphical user interface that science
+    # calculations are complete and to display the data
+    # as described in the views
+    Rappture.Interface.close()
+
+    return 0
+
+if __name__ == '__main__':
+    sys.exit(main())
Index: /tags/1.6.0/examples/objects/app-fermi/python/ex2/fermi_io.py
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/python/ex2/fermi_io.py	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/python/ex2/fermi_io.py	(revision 6168)
@@ -0,0 +1,82 @@
+#! /usr/bin/env python
+
+import sys
+import os
+import getopt
+
+def fermi_io():
+
+    # assume global interface variable.
+    # newly created objects are stored in the
+    # global interface variable. if there is more
+    # than one global interface variable, the
+    # interface that should be used is specified
+    # using the Rp_???InitX version of the funtion
+    # where ??? represents the type of object the
+    # user is trying to create.
+
+    # describe the inputs
+    # declare a number named "temperature",
+    # with units of Kelvin, default value 300,
+    #
+    # the next number is named "Ef", has units of
+    # electron Volts, default value of -5.5
+    #
+    # Rappture.Number is assumed to be an input
+    Rappture.Number(name="temperature",units="K",default=300)
+    Rappture.Number(name="Ef",units="eV",default=-5.5)
+
+    # Most simple xy plots for output
+    # Because it is a single plot, it gets its own view
+    # The plot is placed in the position 1,1 of the view
+    plot = Rappture.Plot(name="fdfPlot")
+    plot.xaxis(label="Fermi-Dirac Factor",
+        desc="Plot of Fermi-Dirac Calculation")
+    plot.yaxis(label="Energy",
+        desc="Energy cooresponding to each fdf",
+        hints=["units=eV"])
+
+    # Declaring a second plot creates a new view
+    # The new plot will be placed in the position 1,1 of its view
+    # User can do simple plot grouping using the add function
+    # in the science code.
+    Rappture.Plot(name="fdfPlot",
+        xlabel="Fermi-Dirac Factor",
+        xdesc="Plot of Fermi-Dirac Calculation",
+        yaxis="Energy",
+        ydesc="Energy cooresponding to each fdf",
+        yhints=["units=eV"])
+
+def help(argv=sys.argv):
+    return """%(prog)s [-h]
+
+     -h | --help       - print the help menu
+
+     Examples:
+       %(prog)s
+
+""" % {'prog':os.path.basename(argv[0])}
+
+def main(argv=None):
+
+    if argv is None:
+        argv = sys.argv
+
+    if len(argv) < 1:
+        msg = "%(prog)s requires at least 0 argument" % {'prog':argv[0]}
+        print >>sys.stderr, msg
+        print >>sys.stderr, help()
+        return 2
+
+    longOpts = ["help"]
+    shortOpts = "h"
+    try:
+        opts,args = getopt.getopt(argv[1:],shortOpts,longOpts)
+    except getopt.GetOptError, msg:
+        print >>sys.stderr, msg
+        print >>sys.stderr, help()
+        return 2
+
+if __name__ == '__main__':
+    sys.exit(main())
+
Index: /tags/1.6.0/examples/objects/app-fermi/python/ex3/fermi.py
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/python/ex3/fermi.py	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/python/ex3/fermi.py	(revision 6168)
@@ -0,0 +1,126 @@
+#! /usr/bin/env python
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Python.
+#
+#  This simple example shows how to use Rappture within a simulator
+#  written in Python.
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+
+import sys
+import os
+import getopt
+
+import Rappture
+from math import *
+
+from fermi_io import fermi_io
+
+def help(argv=sys.argv):
+    return """%(prog)s [-h]
+
+     -h | --help       - print the help menu
+
+     Examples:
+       %(prog)s
+
+""" % {'prog':os.path.basename(argv[0])}
+
+def main(argv=None):
+
+    # initialize the global interface
+    Rappture.Interface(sys.argv,fermi_io)
+
+    # check the global interface for errors
+    if (Rappture.Interface.error() != 0) {
+        # there were errors while setting up the interface
+        # dump the traceback
+        o = Rappture.Interface.outcome()
+        print >>sys.stderr, "%s", o.context()
+        print >>sys.stderr, "%s", o.remark()
+        return (Rappture.Interface.error())
+    }
+
+    # connect variables to the interface
+    # look in the global interface for an object named
+    # "temperature", convert its value to Kelvin, and
+    # store the value into the address of T.
+    # look in the global interface for an object named
+    # "Ef", convert its value to electron Volts and store
+    # the value into the address of Ef
+    # look in the global interface for an object named
+    # factorsTable and set the variable result to
+    # point to it.
+
+    T = Rappture.Interface.connect(name="temperature",
+                                   hints=["units=K"])
+    Ef = Rappture.Interface.connect(name="Ef",
+                                    hints=["units=eV"]);
+
+    x1 = Rappture.Interface.connect(name="Fermi-Dirac Factor");
+    y1 = Rappture.Interface.connect(name="Energy");
+    x2 = Rappture.Interface.connect(name="Fermi-Dirac Factor * 2");
+    y2 = Rappture.Interface.connect(name="Energy * 2");
+
+    # check the global interface for errors
+    if (Rappture.Interface.error() != 0) {
+        # there were errors while retrieving input data values
+        # dump the tracepack
+        o = Rappture.Interface.outcome()
+        print >>sys.stderr, "%s", o.context()
+        print >>sys.stderr, "%s", o.remark()
+        return (Rappture.Interface.error())
+    }
+
+    # declare program variables
+    nPts = 200;
+    EArr = list() # [nPts]
+    fArr = list() # [nPts]
+    EArr2 = list() # [nPts]
+    fArr2 = list() # [nPts]
+
+    # do science calculations
+    kT = 8.61734e-5 * T
+    Emin = Ef - (10*kT)
+    Emax = Ef + (10*kT)
+
+    dE = (1.0/nPts)*(Emax-Emin)
+
+    E = Emin;
+    for idx in xrange(nPts):
+        E = E + dE
+        f = 1.0/(1.0 + exp((E - Ef)/kT))
+        fArr.append(f)
+        fArr2.append(f*2)
+        EArr.append(E)
+        EArr2.append(E*2)
+        progress = (int)((E-Emin)/(Emax-Emin)*100)
+        Rappture.Utils.progress(progress,"Iterating")
+
+    # store results in the results table
+    # add data to the table pointed to by the variable result.
+    # put the fArr data in the column named "Fermi-Dirac Factor"
+    # put the EArr data in the column named "Energy"
+
+    x1.store(fArr)
+    y1.store(EArr)
+    x2.store(fArr2)
+    y2.store(EArr2)
+
+    # close the global interface
+    # signal to the graphical user interface that science
+    # calculations are complete and to display the data
+    # as described in the views
+    Rappture.Interface.close()
+
+    return 0
+
+if __name__ == '__main__':
+    sys.exit(main())
+
Index: /tags/1.6.0/examples/objects/app-fermi/python/ex3/fermi_io.py
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/python/ex3/fermi_io.py	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/python/ex3/fermi_io.py	(revision 6168)
@@ -0,0 +1,69 @@
+def fermi_io():
+
+    # assume global interface variable.
+    # newly created objects are stored in the
+    # global interface variable. if there is more
+    # than one global interface variable, the
+    # interface that should be used is specified
+    # using the Rp_???InitX version of the funtion
+    # where ??? represents the type of object the
+    # user is trying to create.
+
+    # describe the inputs
+    # declare a number named "temperature",
+    # with units of Kelvin, default value 300,
+    #
+    # the next number is named "Ef", has units of
+    # electron Volts, default value of -5.5
+    #
+    # Rappture::Number is assumed to be an input
+
+    Rappture.Number(name="temperature",units="K",default=300)
+    Rappture.Number(name="Ef",units="eV",default=-5.5)
+
+    # describe the outputs
+    # two new columns are added to the default table
+    # the first column is named "Fermi-Dirac Factor",
+    # a description is provided, and it has no units.
+    # the second column is named "Energy", a description
+    # is provided, and has units of electron Volts.
+    # Rappture::Table is assumed to be an output
+    x1 = Rappture.Table.column(name="Fermi-Dirac Factor",
+            desc="Plot of Fermi-Dirac Calculation")
+    y1 = Rappture.Table.column(name="Energy",
+            desc="Energy cooresponding to each fdf",
+            hints=["units=eV"])
+    x2 = results.column(name="Fermi-Dirac Factor * 2",
+            desc="Plot of Fermi-Dirac Calculation multiplied by 2")
+    y2 = results.column(name="Energy * 2",
+            desc="Energy cooresponding to each fdf multiplied by 2",
+            hints=["units=eV"])
+
+
+    # describe how the outputs shoud be displayed
+    # initialize a view named "fdfView", with a 1x1 layout.
+    # next, add a plot named "fdfPlot" to the view fdfView".
+    # populate the plot with data from the table
+    # "factorsTable". Plot the column named
+    # "Fermi-Dirac Factor" vs the column named "Energy".
+    # place the plot, named fdfPlot, at position 1x1 (by default)
+    # within the view's layout.
+    # Rappture.View is assumed to be an output
+    # v.plot(xdata, ydata, format, at, name)
+    v = Rappture.View(name="fdfView")
+    v.plot(x1, y1, "g:o", [1,1], "fdfPlot")
+
+    # two stacked plots in the same view
+    v2 = Rappture.View(name="fdfView2")
+    v2.plot(x1, y1, "g:o", [1,1], "fdfPlot2")
+    v2.plot(x2, y2, "b-o", [2,1], "fdfPlot3")
+
+    # two side by side plots in the same view
+    v3 = Rappture.View(name="fdfView3")
+    v3.plot(x1, y1, "g:o", [1,1], "fdfPlot4")
+    v3.plot(x2, y2, "b-o", [1,2], "fdfPlot5")
+
+    # grouped curves in one plot in a view
+    v4 = Rappture.View(name="fdfView1")
+    v4.plot(x1, y1, "g:o", [1,1], "fdfPlot6")
+    v4.plot(x2, y2, "b-o", [1,1], "fdfPlot7")
Index: /tags/1.6.0/examples/objects/app-fermi/python/fermi4.py
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/python/fermi4.py	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/python/fermi4.py	(revision 6168)
@@ -0,0 +1,120 @@
+#! /usr/bin/env python
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Python.
+#
+#  This simple example shows how to use Rappture within a simulator
+#  written in Python.
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+
+import sys
+import os
+import getopt
+
+import Rappture
+from math import *
+
+from fermi_io import fermi_io
+
+def help(argv=sys.argv):
+    return """%(prog)s [-h]
+
+     -h | --help       - print the help menu
+
+     Examples:
+       %(prog)s
+
+""" % {'prog':os.path.basename(argv[0])}
+
+def main(argv=None):
+
+    # declare variables to interact with Rappture
+    T = 0.0
+    Ef = 0.0
+
+    # declare program variables
+    nPts = 200;
+    EArr = list() # [nPts]
+    fArr = list() # [nPts]
+
+    # initialize the global interface
+    Rappture.Interface(sys.argv,fermi_io)
+
+    # check the global interface for errors
+    if (Rappture.Interface.error() != 0) {
+        # there were errors while setting up the interface
+        # dump the traceback
+        o = Rappture.Interface.outcome()
+        print >>sys.stderr, "%s", o.context()
+        print >>sys.stderr, "%s", o.remark()
+        return (Rappture.Interface.error())
+    }
+
+    # connect variables to the interface
+    # look in the global interface for an object named
+    # "temperature", convert its value to Kelvin, and
+    # store the value into the address of T.
+    # look in the global interface for an object named
+    # "Ef", convert its value to electron Volts and store
+    # the value into the address of Ef
+    # look in the global interface for an object named
+    # factorsTable and set the variable result to
+    # point to it.
+
+    T = Rappture.Interface.connect(name="temperature",
+                                   hints=["units=K"])
+    Ef = Rappture.Interface.connect(name="Ef",
+                                    hints=["units=eV"]);
+    result = Rappture.Interface.connect(name="factorsTable");
+
+    # check the global interface for errors
+    if (Rappture.Interface.error() != 0) {
+        # there were errors while retrieving input data values
+        # dump the tracepack
+        o = Rappture.Interface.outcome()
+        print >>sys.stderr, "%s", o.context()
+        print >>sys.stderr, "%s", o.remark()
+        return (Rappture.Interface.error())
+    }
+
+    # do science calculations
+    kT = 8.61734e-5 * T
+    Emin = Ef - (10*kT)
+    Emax = Ef + (10*kT)
+
+    dE = (1.0/nPts)*(Emax-Emin)
+
+    E = Emin;
+    for (size_t idx = 0; idx < nPts; idx++) {
+        E = E + dE
+        f = 1.0/(1.0 + exp((E - Ef)/kT))
+        fArr.append(f)
+        EArr.append(E)
+        Rappture.Utils.progress((int)((E-Emin)/(Emax-Emin)*100),"Iterating")
+    }
+
+    # store results in the results table
+    # add data to the table pointed to by the variable result.
+    # put the fArr data in the column named "Fermi-Dirac Factor"
+    # put the EArr data in the column named "Energy"
+
+    result.addData(name="Fermi-Dirac Factor",data=fArr)
+    result.addData(name="Energy",data=EArr)
+
+    # close the global interface
+    # signal to the graphical user interface that science
+    # calculations are complete and to display the data
+    # as described in the views
+    Rappture.Interface.close()
+
+    return 0
+
+if __name__ == '__main__':
+    sys.exit(main())
+
Index: /tags/1.6.0/examples/objects/app-fermi/python/fermi_io.py
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/python/fermi_io.py	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/python/fermi_io.py	(revision 6168)
@@ -0,0 +1,62 @@
+def fermi_io():
+
+    # assume global interface variable.
+    # newly created objects are stored in the
+    # global interface variable. if there is more
+    # than one global interface variable, the
+    # interface that should be used is specified
+    # using the Rp_???InitX version of the funtion
+    # where ??? represents the type of object the
+    # user is trying to create.
+
+    # describe the inputs
+    # declare a number named "temperature",
+    # with units of Kelvin, default value 300,
+    # and specify that it is only an input
+    # the next number is named "Ef", has units of
+    # electron Volts, default value of -5.5 and
+    # is also only an input value
+
+    Rappture.Number(name="temperature",units="K",
+                    default=300,flags=RP_VAR_INPUT)
+    Rappture.Number(name="Ef",units="eV",
+                    default=-5.5,flags=RP_VAR_INPUT)
+
+    # describe the outputs
+    # declare a table to store the outputs
+    # table is named "factorsTable" and is declared as
+    # an output only object. two new columns are added to the
+    # table "factorsTable". the first column is named
+    # "Fermi-Dirac Factor", a description is provided,
+    # and it has no units. the second column is named
+    # "Energy", a description is provided, and has units
+    # of electron Volts
+    result = Rappture.Table(name="factorsTable",
+                            flags=RP_VAR_OUTPUT);
+    result.newColumn(name="Fermi-Dirac Factor",
+                     desc="Plot of Fermi-Dirac Calculation");
+    result.newColumn(name="Energy",
+                     desc="Energy cooresponding to each fdf",
+                     hints=["units=eV"]);
+
+    # describe how the outputs shoud be displayed
+    # initialize a view named "fdfView", specifying it
+    # as an output only object with a 1x1 view layout.
+    # next, add a plot named "fdfPlot" to the view fdfView".
+    # populate the plot with data from the table
+    # "fermifactors". Plot the column named
+    # "Fermi-Dirac Factor" vs the column named "Energy".
+    # place the plot, named fdfPlot, at position 1x1 within
+    # the view's layout.
+    v = Rappture.View(name="fdfView",
+                      flags=RP_VAR_OUTPUT|RP_VIEW_1X1);
+    v.addPlotFromTable(name="fdfPlot",table="factorsTable",
+                            x="Fermi-Dirac Factor",
+                            y="Energy",hints=["position=1x1"]);
+
+    # add another curve to the "fdfPlot" plot.
+    # plot the column named "Fermi-Dirac Factor2" vs
+    # the column named "Energy"
+    # v.addPlotFromTable(name="fdfPlot",table="factorsTable",
+    #                         x="Fermi-Dirac Factor2",
+    #                         y="Energy",hints=["position=1x1"]);
Index: /tags/1.6.0/examples/objects/app-fermi/tcl/ex2/fermi.tcl
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/tcl/ex2/fermi.tcl	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/tcl/ex2/fermi.tcl	(revision 6168)
@@ -0,0 +1,93 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Tcl.
+#
+#  This simple example shows how to use Rappture within a simulator
+#  written in Tcl.
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# initialize the global interface
+Rappture::Interface $argv fermi_io
+
+# check the global interface for errors
+if {[Rappture::Interface::error] != 0} {
+    # there were errors while setting up the inteface
+    # dump the traceback
+    set o [Rappture::Interface::outcome]
+    puts stderr [$o context]
+    puts stderr [$o remark]
+    exit [Rappture::Interface::error]
+}
+
+# connect variables to the interface
+# look in the global interface for an object named
+# "temperature, convert its value to Kelvin, and
+# store the value into the address of T.
+# look in the global interface for an object named
+# "Ef", convert its value to electron Volts and store
+# the value into the address of Ef
+# look in the global interface for an object named
+# factorsTable and set the variable result to
+# point to it.
+set T [Rappture::Interface::connect "temperature" -hints {"units=K"}]
+set Ef [Rappture::Interface::connect "Ef" -hints {"units=eV"}]
+set p1 [Rappture::Interface::connect "fdfPlot"]
+set p2 [Rappture::Interface::connect "fdfPlot2"]
+
+if {[Rappture::Interface::error] != 0]} {
+    # there were errors while retrieving input data values
+    # dump the tracepack
+    set o [Rappture::Interface::outcome]
+    puts stderr [$o context]
+    puts stderr [$o remark]
+    exit [Rappture::Interface::error]
+}
+
+# do science calculations
+set nPts 200
+
+set kT [expr {8.61734e-5 * $T}]
+set Emin [expr {$Ef - 10*$kT}]
+set Emax [expr {$Ef + 10*$kT}]
+
+set dE [expr {(1.0/$nPts)*($Emax-$Emin)}]
+
+set E $Emin
+for {set idx 0} {idx < nPts} {incr idx} {
+    set E [expr {$E + $dE}]
+    set f [expr {1.0/(1.0 + exp(($E - $Ef)/$kT))}]
+    lappend fArr $f
+    lappend Err $E
+    set progress [expr {(($E - $Emin)/($Emax - $Emin)*100)}]
+    Rappture::Utils::progress $progress -mesg "Iterating"
+}
+
+# set up the curves for the plot by using the add command
+# add <name> <xdata> <ydata> -format <fmt>
+#
+# to group curves on the same plot, just keep adding curves
+# to save space, X array values are compared between curves.
+# the the X arrays contain the same values, we only store
+# one version in the internal data table, otherwise a new
+# column is created for the array. for big arrays this may take
+# some time, we should benchmark to see if this can be done
+# efficiently.
+
+$p1 add "fdfCurve1" $fArr $EArr -format "g:o"
+
+$p2 add "fdfCurve2" $fArr $EArr -format "b-o"
+$p2 add "fdfCurve3" $fArr $EArr -format "p--"
+
+# close the global interface
+# signal to the graphical user interface that science
+# calculations are complete and to display the data
+# as described in the views
+Rappture::Interface::close
+
+exit 0
Index: /tags/1.6.0/examples/objects/app-fermi/tcl/ex2/fermi_io.tcl
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/tcl/ex2/fermi_io.tcl	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/tcl/ex2/fermi_io.tcl	(revision 6168)
@@ -0,0 +1,42 @@
+proc fermi_io {
+
+    # assume global interface variable.
+    # newly created objects are stored in the
+    # global interface variable. if there is more
+    # than one global interface variable, the
+    # interface that should be used is specified
+    # using an alternative version of the object constructor
+    # that supports an interface argument.
+
+    # describe the inputs
+    # declare a number named "temperature",
+    # with units of Kelvin, default value 300,
+    #
+    # the next number is named "Ef", has units of
+    # electron Volts, default value of -5.5
+    #
+    # Rappture::Number is assumed to be an input
+    Rappture::Number "temperature" "K" 300
+    Rappture::Number "Ef" "eV" -5.5
+
+    # Most simple xy plots for output
+    # Because it is a single plot, it gets its own view.
+    # The plot is placed in the position 1,1 of the view.
+    set plot [Rappture::Plot "fdfPlot"]
+    $plot xaxis "Fermi-Dirac Factor" \
+        "Plot of Fermi-Dirac Calculation"
+    $plot yaxis "Energy"
+        "Energy cooresponding to each fdf" \
+        -hints {"units=eV"}
+
+    # Declaring a second plot creates a new view.
+    # The new plot will be placed in the position 1,1 of its view.
+    # User can do simple plot grouping using the add function
+    # in the science code.
+    Rappture::Plot "fdfPlot2" \
+        -xlabel "Fermi-Dirac Factor"\
+        -xdesc "Plot of Fermi-Dirac Calculation" \
+        -yaxis "Energy" \
+        -ydesc "Energy cooresponding to each fdf" \
+        -yhints {"units=eV"}
+}
Index: /tags/1.6.0/examples/objects/app-fermi/tcl/ex2/readme
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/tcl/ex2/readme	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/tcl/ex2/readme	(revision 6168)
@@ -0,0 +1,1 @@
+most simple version of getting a plot, no views
Index: /tags/1.6.0/examples/objects/app-fermi/tcl/ex3/fermi.tcl
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/tcl/ex3/fermi.tcl	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/tcl/ex3/fermi.tcl	(revision 6168)
@@ -0,0 +1,94 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Tcl.
+#
+#  This simple example shows how to use Rappture within a simulator
+#  written in Tcl.
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# initialize the global interface
+Rappture::Interface $argv fermi_io
+
+# check the global interface for errors
+if {[Rappture::Interface::error] != 0} {
+    # there were errors while setting up the inteface
+    # dump the traceback
+    set o [Rappture::Interface::outcome]
+    puts stderr [$o context]
+    puts stderr [$o remark]
+    exit [Rappture::Interface::error]
+}
+
+# connect variables to the interface
+# look in the global interface for an object named
+# "temperature, convert its value to Kelvin, and
+# store the value into the address of T.
+# look in the global interface for an object named
+# "Ef", convert its value to electron Volts and store
+# the value into the address of Ef
+# look in the global interface for an object named
+# factorsTable and set the variable result to
+# point to it.
+set T [Rappture::Interface::connect "temperature" -hints {"units=K"}]
+set Ef [Rappture::Interface::connect "Ef" -hints {"units=eV"}]
+
+set x1 [Rappture::Interface::connect "Fermi-Dirac Factor"]
+set y1 [Rappture::Interface::connect "Energy"]
+set x2 [Rappture::Interface::connect "Fermi-Dirac Factor * 2"]
+set y2 [Rappture::Interface::connect "Energy * 2"]
+
+if {[Rappture::Interface::error] != 0]} {
+    # there were errors while retrieving input data values
+    # dump the tracepack
+    set o [Rappture::Interface::outcome]
+    puts stderr [$o context]
+    puts stderr [$o remark]
+    exit [Rappture::Interface::error]
+}
+
+# do science calculations
+set nPts 200
+
+set kT [expr {8.61734e-5 * $T}]
+set Emin [expr {$Ef - 10*$kT}]
+set Emax [expr {$Ef + 10*$kT}]
+
+set dE [expr {(1.0/$nPts)*($Emax-$Emin)}]
+
+set E $Emin
+for {set idx 0} {idx < nPts} {incr idx} {
+    set E [expr {$E + $dE}]
+    set f [expr {1.0/(1.0 + exp(($E - $Ef)/$kT))}]
+    lappend fArr $f
+    lappend fArr2 [expr {$f*2}]
+    lappend EArr $E
+    lappend EArr2 [expr {$E*2}]
+    set progress [expr {(($E - $Emin)/($Emax - $Emin)*100)}]
+    Rappture::Utils::progress $progress -mesg "Iterating"
+}
+
+# store results in the results table
+# add data to the table pointed to by the variable result.
+# put the fArr data in the column named "Fermi-Dirac Factor"
+# put the EArr data in the column named "Energy"
+#
+# Rappture::Table Commands:
+# the store command overwrites data that already exists in
+# the column with the new array of data.
+# the append command will append the new array of data onto
+# any previously existing array of data.
+
+$x1 store $fArr
+$y1 store $fArr2
+$x2 store $EArr
+$y2 store $EArr2
+
+Rappture::Interface::close
+
+exit 0
Index: /tags/1.6.0/examples/objects/app-fermi/tcl/ex3/fermi_io.tcl
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/tcl/ex3/fermi_io.tcl	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/tcl/ex3/fermi_io.tcl	(revision 6168)
@@ -0,0 +1,69 @@
+proc fermi_io {
+
+    # assume global interface variable.
+    # newly created objects are stored in the
+    # global interface variable. if there is more
+    # than one global interface variable, the
+    # interface that should be used is specified
+    # using an alternative version of the object constructor
+    # that supports an interface argument.
+
+    # describe the inputs
+    # declare a number named "temperature",
+    # with units of Kelvin, default value 300,
+    #
+    # the next number is named "Ef", has units of
+    # electron Volts, default value of -5.5
+    #
+    # Rappture::Number is assumed to be an input
+    Rappture::Number "temperature" "K" 300
+    Rappture::Number "Ef" "eV" -5.5
+
+    # describe the outputs
+    # two new columns are added to the default table
+    # the first column is named "Fermi-Dirac Factor",
+    # a description is provided, and it has no units.
+    # the second column is named "Energy", a description
+    # is provided, and has units of electron Volts.
+    # Rappture::Table is assumed to be an output
+    set x1 [Rappture::Table::column "Fermi-Dirac Factor" \
+            "Plot of Fermi-Dirac Calculation"]
+    set y1 [Rappture::Table::column "Energy" \
+            "Energy cooresponding to each fdf" \
+            -hints {"units=eV"}]
+    set x2 [Rappture::Table::column "Fermi-Dirac Factor * 2" \
+            "Plot of Fermi-Dirac Calculation multiplied by 2"]
+    set y2 [Rappture::Table::column "Energy * 2" \
+            "Energy cooresponding to each fdf multiplied by 2" \
+            -hints {"units=eV"}]
+
+    # describe how the outputs should be displayed
+    # initialize a view named "fdfView", with a 1x1 layout.
+    # next, add a plot named "fdfPlot" to the view "fdfView".
+    # populate the plot with data from the table
+    # "factorsTable". Plot the column named
+    # "Fermi-Dirac Factor" vs the column named "Energy".
+    # place the plot, named fdfPlot, at position 1,1 (by default)
+    # within the view's layout.
+    # Rappture::View is assumed to be an output
+    set v [Rappture::View "fdfView"]
+    $v plot "fdfPlot" {$x1 $y1 "g:o"}
+
+    # two stacked plots in the same view
+    set v2 [Rappture::View "fdfView2"]
+    $v2 plot "fdfPlot2" -at {1 1} {$x1 $y1 "g:o"}
+    $v2 plot "fdfPlot3" -at {2 1} {$x2 $y2 "b-o"}
+
+    # two side by side plots in the same view
+    set v3 [Rappture::View "fdfView3"]
+    $v3 plot "fdfPlot4" -at {1 1} {$x1 $y1 "g:o"}
+    $v3 plot "fdfPlot5" -at {1 2} {$x2 $y2 "b-o"}
+
+    # grouped curves in one plot in a view
+    set v4 [Rappture::View "fdfView4"]
+    $v4 plot "fdfPlot6" -at {1 1} {$x1 $y1 "g:o"}
+    $v4 plot "fdfPlot7" -at {1 1} {$x2 $y2 "b-o"}
+
+    # grouped curves in one plot in a view
+    set v5 [Rappture::View "fdfView5"]
+    $v5 plot "fdfPlot8" {$x1 $y1 "g:o" $x2 $y2 "b-o"}
Index: /tags/1.6.0/examples/objects/app-fermi/tcl/ex3/readme
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/tcl/ex3/readme	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/tcl/ex3/readme	(revision 6168)
@@ -0,0 +1,1 @@
+using views to control plot placement
Index: /tags/1.6.0/examples/objects/app-fermi/tcl/fermi4.tcl
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/tcl/fermi4.tcl	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/tcl/fermi4.tcl	(revision 6168)
@@ -0,0 +1,86 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Fermi-Dirac function in Tcl.
+#
+#  This simple example shows how to use Rappture within a simulator
+#  written in Tcl.
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# initialize the global interface
+Rappture::Interface $argv fermi_io
+
+# check the global interface for errors
+if {[Rappture::Interface::error] != 0} {
+    # there were errors while setting up the inteface
+    # dump the traceback
+    set o [Rappture::Interface::outcome]
+    puts stderr [$o context]
+    puts stderr [$o remark]
+    exit [Rappture::Interface::error]
+}
+
+# connect variables to the interface
+# look in the global interface for an object named
+# "temperature, convert its value to Kelvin, and
+# store the value into the address of T.
+# look in the global interface for an object named
+# "Ef", convert its value to electron Volts and store
+# the value into the address of Ef
+# look in the global interface for an object named
+# factorsTable and set the variable result to
+# point to it.
+set T [Rappture::Interface::connect "temperature" -hints {"units=K"}]
+set Ef [Rappture::Interface::connect "Ef" -hints {"units=eV"}]
+set result [Rappture::Interface::connect "factorsTable"]
+
+if {[Rappture::Interface::error] != 0]} {
+    # there were errors while retrieving input data values
+    # dump the tracepack
+    set o [Rappture::Interface::outcome]
+    puts stderr [$o context]
+    puts stderr [$o remark]
+    exit [Rappture::Interface::error]
+}
+
+# do science calculations
+set nPts 200
+
+set kT [expr {8.61734e-5 * $T}]
+set Emin [expr {$Ef - 10*$kT}]
+set Emax [expr {$Ef + 10*$kT}]
+
+set dE [expr {(1.0/$nPts)*($Emax-$Emin)}]
+
+set E $Emin
+for {set idx 0} {idx < nPts} {incr idx} {
+    set E [expr {$E + $dE}]
+    set f [expr {1.0/(1.0 + exp(($E - $Ef)/$kT))}]
+    lappend fArr $f
+    lappend Err $E
+    set progress [expr {(($E - $Emin)/($Emax - $Emin)*100)}]
+    Rappture::Utils::progress $progress -mesg "Iterating"
+}
+
+# store results in the results table
+# add data to the table pointed to by the variable result.
+# put the fArr data in the column named "Fermi-Dirac Factor"
+# put the EArr data in the column named "Energy"
+#
+# Rappture::Table Commands:
+# the store command overwrites data that already exists in
+# the column with the new array of data.
+# the append command will append the new array of data onto
+# any previously existing array of data.
+
+$result store "Fermi-Dirac Factor" $fArr
+$result store "Energy" $EArr
+
+Rappture::Interface::close
+
+exit 0
Index: /tags/1.6.0/examples/objects/app-fermi/tcl/fermi_io.tcl
===================================================================
--- /tags/1.6.0/examples/objects/app-fermi/tcl/fermi_io.tcl	(revision 6168)
+++ /tags/1.6.0/examples/objects/app-fermi/tcl/fermi_io.tcl	(revision 6168)
@@ -0,0 +1,51 @@
+proc fermi_io {
+
+    # assume global interface variable.
+    # newly created objects are stored in the
+    # global interface variable. if there is more
+    # than one global interface variable, the
+    # interface that should be used is specified
+    # using an alternative version of the object constructor
+    # that supports an interface argument.
+
+    # describe the inputs
+    # declare a number named "temperature",
+    # with units of Kelvin, default value 300,
+    #
+    # the next number is named "Ef", has units of
+    # electron Volts, default value of -5.5
+    #
+    # Rappture::Number are assumed to be an input
+    Rappture::Number "temperature" "K" 300
+    Rappture::Number "Ef" "eV" -5.5
+
+    # describe the outputs
+    # declare a table to store the outputs
+    # table is named "factorsTable".
+    # two new columns are added to the
+    # table "factorsTable". the first column is named
+    # "Fermi-Dirac Factor", a description is provided,
+    # and it has no units. the second column is named
+    # "Energy", a description is provided, and has units
+    # of electron Volts
+    # Rappture::Table is assumed to be an output
+    set results [Rappture::Table "factorsTable"]
+    $results column "Fermi-Dirac Factor" \
+                    "Plot of Fermi-Dirac Calculation"
+    $results column "Energy" \
+                    "Energy cooresponding to each fdf" \
+                    -hints {"units=eV"}
+
+    # describe how the outputs shoud be displayed
+    # initialize a view named "fdfView", with a 1x1 layout.
+    # next, add a plot named "fdfPlot" to the view "fdfView".
+    # populate the plot with data from the table
+    # "factorsTable". Plot the column named
+    # "Fermi-Dirac Factor" vs the column named "Energy".
+    # place the plot, named fdfPlot, at position 1,1 within
+    # the view's layout.
+    # Rappture::View is assumed to be an output
+    set v [Rappture::View "fdfView" -rows 1 -cols 1]
+    $v plot "fdfPlot" -at "1,1" -table "factorsTable" \
+        {"Fermi-Dirac Factor" "Energy" "g:o"}
+}
Index: /tags/1.6.0/examples/objects/axis/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/axis/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/axis/Makefile.in	(revision 6168)
@@ -0,0 +1,64 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CC              = @CC@
+CFLAGS          = @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS        = @CFLAGS@
+DEFINES         = -g -Wall
+INCLUDES        = -I../../../src/core \
+                  -I../../../src/objects \
+                  -I$(srcdir)/../../../src/core \
+                  -I$(srcdir)/../../../src/objects \
+                  -I$(includedir)
+LIBS    = \
+		-L../../../src/core -lrappture \
+		-L../../../src/objects -lRpObjects\
+		-L$(libdir) -lexpat -lz -lm
+VPATH   = $(srcdir)
+
+CXX_SWITCHES    = $(CXXFLAGS) $(INCLUDES) $(DEFINES)
+CC_SWITCHES     = $(CFLAGS) $(INCLUDES) $(DEFINES)
+
+FILES   = \
+		$(srcdir)/axis.cc \
+		Makefile
+
+destdir = $(prefix)/examples/objects/axis
+
+
+PROGS   = \
+		axis
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+axis: $(srcdir)/axis.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/axis/axis.cc
===================================================================
--- /tags/1.6.0/examples/objects/axis/axis.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/axis/axis.cc	(revision 6168)
@@ -0,0 +1,78 @@
+#include <iostream>
+#include "RpArray1D.h"
+
+
+int test(
+    const char *testname,
+    const char *desc,
+    const char *expected,
+    const char *received)
+{
+/*
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%s\"\n",expected);
+        printf("\treceived \"%s\"\n",received);
+        return 1;
+    }
+*/
+    return 0;
+}
+
+int
+printAxis(Rappture::Array1D *n)
+{
+    std::cout << "name: " << n->name() << std::endl;
+    std::cout << "label: " << n->label() << std::endl;
+    std::cout << "desc: " << n->desc() << std::endl;
+    std::cout << "nmemb: " << n->nmemb() << std::endl;
+    std::cout << "min: " << n->min() << std::endl;
+    std::cout << "max: " << n->max() << std::endl;
+    std::cout << "units: " << n->units() << std::endl;
+
+    const double *d = n->data();
+
+    for (size_t i = 0; i < n->nmemb(); i++) {
+        std::cout << "d[" << i << "] = " << d[i] << std::endl;
+    }
+
+    return 0;
+}
+
+int axis_0_0 ()
+{
+    const char *desc = "";
+    const char *testname = "axis_0_0";
+
+
+    const char *expected = NULL;
+    const char *received = NULL;
+
+    return test(testname,desc,expected,received);
+}
+
+int main()
+{
+    Rappture::Array1D *n = NULL;
+    double d[] = {70,400,199,502,832924};
+
+    n = new Rappture::Array1D(d,5);
+    n->name("output.axis(temperature)");
+    n->label("mylabel");
+    n->desc("mydesc");
+    n->units("K");
+    n->scale("linear");
+
+    printAxis(n);
+
+    Rappture::Array1D n1(d,5);
+    n1.name("output.axis(t)");
+    printAxis(&n1);
+
+    delete n;
+
+    axis_0_0();
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/curve/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/curve/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/curve/Makefile.in	(revision 6168)
@@ -0,0 +1,64 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CC              = @CC@
+CFLAGS          = @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS        = @CFLAGS@
+DEFINES         = -g -Wall
+INCLUDES        = -I../../../src/core \
+                  -I../../../src/objects \
+                  -I$(srcdir)/../../../src/core \
+                  -I$(srcdir)/../../../src/objects \
+                  -I$(includedir)
+LIBS    = \
+		-L../../../src/core -lrappture \
+		-L../../../src/objects -lRpObjects\
+		-L$(libdir) -lexpat -lz -lm
+VPATH   = $(srcdir)
+
+CXX_SWITCHES    = $(CXXFLAGS) $(INCLUDES) $(DEFINES)
+CC_SWITCHES     = $(CFLAGS) $(INCLUDES) $(DEFINES)
+
+FILES   = \
+		$(srcdir)/curve.cc \
+		Makefile
+
+destdir = $(prefix)/examples/objects/curve
+
+
+PROGS   = \
+		curve
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+curve: $(srcdir)/curve.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/curve/curve.cc
===================================================================
--- /tags/1.6.0/examples/objects/curve/curve.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/curve/curve.cc	(revision 6168)
@@ -0,0 +1,105 @@
+#include <iostream>
+#include "RpCurve.h"
+
+size_t indent = 0;
+size_t tabstop = 4;
+
+int test(
+    const char *testname,
+    const char *desc,
+    const char *expected,
+    const char *received)
+{
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%s\"\n",expected);
+        printf("\treceived \"%s\"\n",received);
+        return 1;
+    }
+    return 0;
+}
+
+int curve_0_0 ()
+{
+    const char *desc = "test basic constructor";
+    const char *testname = "curve_0_0";
+
+    const char *expected = "myid";
+    const char *received = NULL;
+
+    Rappture::Curve c(expected);
+    received = c.name();
+
+    return test(testname,desc,expected,received);
+}
+
+int curve_1_0 ()
+{
+    const char *desc = "test generating xml text for curve object";
+    const char *testname = "curve_1_0";
+
+    const char *expected = "<?xml version=\"1.0\"?>\n\
+<run>\n\
+    <curve id=\"myid\">\n\
+        <about>\n\
+            <group>mygroup</group>\n\
+            <label>mylabel</label>\n\
+            <description>mydesc</description>\n\
+            <type>(null)</type>\n\
+        </about>\n\
+        <xaxis>\n\
+            <label>xlabel</label>\n\
+            <description>xdesc</description>\n\
+            <units>xunits</units>\n\
+            <scale>xscale</scale>\n\
+        </xaxis>\n\
+        <yaxis>\n\
+            <label>ylabel</label>\n\
+            <description>ydesc</description>\n\
+            <units>yunits</units>\n\
+            <scale>yscale</scale>\n\
+        </yaxis>\n\
+        <component>\n\
+            <xy>         1         1\n\
+         2         4\n\
+         3         9\n\
+         4        16\n\
+         5        25\n\
+         6        36\n\
+         7        49\n\
+         8        64\n\
+         9        81\n\
+        10       100\n\
+</xy>\n\
+        </component>\n\
+    </curve>\n\
+</run>\n\
+";
+    const char *received = NULL;
+
+    Rappture::Curve *c = NULL;
+    double x[] = {1,2,3,4,5,6,7,8,9,10};
+    double y[] = {1,4,9,16,25,36,49,64,81,100};
+
+    c = new Rappture::Curve("myid","mylabel","mydesc","mygroup");
+
+    c->axis("xaxis","xlabel","xdesc","xunits","xscale",x,10);
+    c->axis("yaxis","ylabel","ydesc","yunits","yscale",y,10);
+
+    Rappture::ClientDataXml xmldata;
+    xmldata.indent = indent;
+    xmldata.tabstop = tabstop;
+    xmldata.retStr = NULL;
+    c->dump(Rappture::RPCONFIG_XML,&xmldata);
+    received = xmldata.retStr;
+
+    return test(testname,desc,expected,received);
+}
+
+int main()
+{
+    curve_0_0 ();
+    curve_1_0 ();
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/dxWriter/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/dxWriter/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/dxWriter/Makefile.in	(revision 6168)
@@ -0,0 +1,60 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+CC              = @CC@
+CFLAGS		= @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS	= @CFLAGS@
+DEFINES		= -g -Wall
+INCLUDES	= -I$(srcdir)/../../../src/core \
+		  -I$(includedir)
+LIBS		= \
+		-L../../../src/core -lrappture \
+		-L$(libdir) -lexpat -lz -lm
+VPATH		= $(srcdir)
+
+CXX_SWITCHES	= $(CXXFLAGS) $(INCLUDES) $(DEFINES)	
+CC_SWITCHES	= $(CFLAGS) $(INCLUDES) $(DEFINES)	
+
+FILES		= \
+		$(srcdir)/dxWrite.cc \
+		Makefile 
+
+destdir		= $(prefix)/examples/objects/dxWriter
+
+
+PROGS		= \
+		dxwrite 
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+dxwrite: $(srcdir)/dxWrite.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS) myDXFile.dx
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/dxWriter/dxWrite.cc
===================================================================
--- /tags/1.6.0/examples/objects/dxWriter/dxWrite.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/dxWriter/dxWrite.cc	(revision 6168)
@@ -0,0 +1,34 @@
+#include <iostream>
+#include <cstdio>
+#include "RpDXWriter.h"
+
+int main()
+{
+    Rappture::DXWriter d;
+    double i = 0.0;
+    int rank = 3;
+    size_t p[] = {3,5,5};
+    double origin[] = {0.0,0.0,0.0};
+    double delta[] = {1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0};
+
+    d.rank(rank);
+    d.origin(origin);
+    d.delta(delta);
+    d.counts(p);
+
+    for(size_t z = 0; z < p[2]; z++) {
+        for(size_t y = 0; y < p[1]; y++) {
+            for(size_t x = 0; x < p[0]; x++) {
+                i = x*y*z;
+                d.data(&i);
+            }
+        }
+    }
+
+    FILE *fp = NULL;
+    fp = fopen("myDXFile.dx","w");
+    d.write(fp);
+    fclose(fp);
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/floatBuffer/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/floatBuffer/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/floatBuffer/Makefile.in	(revision 6168)
@@ -0,0 +1,60 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+
+CC              = @CC@
+CFLAGS		= @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS	= @CFLAGS@
+DEFINES		= -g -Wall
+INCLUDES	= -I$(srcdir)/../../../src/core \
+		  -I$(includedir)
+LIBS		= \
+		-L../../../src/core -lrappture \
+		-L$(libdir) -lexpat -lz -lm
+VPATH		= $(srcdir)
+
+CXX_SWITCHES	= $(CXXFLAGS) $(INCLUDES) $(DEFINES)	
+CC_SWITCHES	= $(CFLAGS) $(INCLUDES) $(DEFINES)	
+
+FILES		= \
+		$(srcdir)/floatBuffer.cc \
+		Makefile 
+
+destdir		= $(prefix)/examples/objects/floatBuffer
+
+PROGS		= \
+		floatbuffer \
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+
+floatbuffer: $(srcdir)/floatBuffer.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS) 
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/floatBuffer/floatBuffer.cc
===================================================================
--- /tags/1.6.0/examples/objects/floatBuffer/floatBuffer.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/floatBuffer/floatBuffer.cc	(revision 6168)
@@ -0,0 +1,40 @@
+#include <iostream>
+#include "RpSimpleBuffer.h"
+
+int main()
+{
+    Rappture::SimpleBuffer<float> fbuf;
+    float val = 0;
+
+    fbuf.set(10);
+
+    for (int i=0; i < 100; i++) {
+        std::cout << "storing " << val << std::endl;
+        fbuf.append(&val,1);
+        val += 1.1;
+    }
+
+    fbuf.rewind();
+    val = -1;
+
+    while (!fbuf.eof()) {
+        fbuf.read(&val,1);
+        std::cout << "retrieving " << val << std::endl;
+    }
+
+    fbuf.seek(0,SEEK_SET);
+    std::cout << "SEEK_SET 0 pos = " << fbuf.tell() << std::endl;;
+
+    fbuf.seek(40,SEEK_CUR);
+    std::cout << "SEEK_CUR 40 pos = " << fbuf.tell() << std::endl;;
+
+    fbuf.seek(-20,SEEK_END);
+    std::cout << "SEEK_END -20 pos = " << fbuf.tell() << std::endl;;
+
+    Rappture::SimpleBuffer<float> cbuf;
+    cbuf.move(fbuf);
+    cbuf.show();
+
+    fbuf.clear();
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/histogram/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/histogram/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/histogram/Makefile.in	(revision 6168)
@@ -0,0 +1,64 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CC              = @CC@
+CFLAGS          = @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS        = @CFLAGS@
+DEFINES         = -g -Wall
+INCLUDES        = -I../../../src/core \
+                  -I../../../src/objects \
+                  -I$(srcdir)/../../../src/core \
+                  -I$(srcdir)/../../../src/objects \
+                  -I$(includedir)
+LIBS    = \
+		-L../../../src/core -lrappture \
+		-L../../../src/objects -lRpObjects\
+		-L$(libdir) -lexpat -lz -lm
+VPATH   = $(srcdir)
+
+CXX_SWITCHES    = $(CXXFLAGS) $(INCLUDES) $(DEFINES)
+CC_SWITCHES     = $(CFLAGS) $(INCLUDES) $(DEFINES)
+
+FILES   = \
+		$(srcdir)/histogram.cc \
+		Makefile
+
+destdir = $(prefix)/examples/objects/histogram
+
+
+PROGS   = \
+		histogram
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+histogram: $(srcdir)/histogram.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/histogram/histogram.cc
===================================================================
--- /tags/1.6.0/examples/objects/histogram/histogram.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/histogram/histogram.cc	(revision 6168)
@@ -0,0 +1,46 @@
+#include <iostream>
+#include "RpHistogram.h"
+
+int main()
+{
+    // histogram object
+    Rappture::Histogram *h1 = NULL;
+    Rappture::Histogram *h2 = NULL;
+    Rappture::Histogram *h3 = NULL;
+
+    // data arrays
+    double bins[] = {1,2,3,4,5,6,7,8,9,10};
+    double y[] = {1,4,9,16,25,36,49,64,81,100};
+    // double z[] = {1,8,27,64,125,216,343,512,729,1000};
+    size_t binWidths[] = {1,1,1,2,1,1,1,1,1,1};
+
+    // number of points in x, y, z arrays
+    size_t nPts = 10;
+    size_t nBins = 10;
+
+    h1 = new Rappture::Histogram();
+    h1->xaxis("xlabel1","xdesc1","xunits1",bins,nBins);
+    h1->yaxis("ylabel1","ydesc1","yunits1",y,nPts);
+    h1->binWidths(binWidths,nBins);
+    h1->marker(Rappture::Histogram::x,5,"This is five","-foreground red -linewidth 2");
+
+    h2 = new Rappture::Histogram(y,nPts,bins,nBins);
+    h2->xaxis("xlabel2","xdesc2","xunits2");
+    h2->yaxis("ylabel2","ydesc2","yunits2");
+    h1->marker(Rappture::Histogram::y,2,"This is two","-foreground blue -linewidth 1");
+
+    double rangeMin = 1.0;
+    double rangeMax = 10.0;
+    h3 = new Rappture::Histogram(y,nPts,rangeMin,rangeMax,nBins);
+    h3->xaxis("xlabel3","xdesc3","xunits3");
+    h3->yaxis("ylabel3","ydesc3","yunits3");
+
+    size_t indent = 0;
+    size_t tabstop = 4;
+
+    std::printf("xml: %s\n",h1->xml(indent,tabstop));
+    std::printf("xml: %s\n",h2->xml(indent,tabstop));
+    std::printf("xml: %s\n",h3->xml(indent,tabstop));
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/library/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/library/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/library/Makefile.in	(revision 6168)
@@ -0,0 +1,70 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CC              = @CC@
+CFLAGS          = @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS        = @CFLAGS@
+DEFINES         = -g -Wall
+#INCLUDES        = -I../../../src/core \
+#                  -I../../../src/objects \
+#                  -I$(srcdir)/../../../src/core \
+#                  -I$(srcdir)/../../../src/objects \
+#                  -I$(includedir)
+INCLUDES        = -I../../../src/objects \
+                  -I../../../src/core \
+                  -I$(srcdir)/../../../src/objects \
+                  -I$(srcdir)/../../../src/core \
+                  -I$(includedir)
+LIBS    = \
+		-L../../../src/core -lrappture \
+		-L../../../src/objects -lRpObjects\
+		-L$(libdir) -lexpat -lz -lm
+VPATH   = $(srcdir)
+
+CXX_SWITCHES    = $(CXXFLAGS) $(INCLUDES) $(DEFINES)
+CC_SWITCHES     = $(CFLAGS) $(INCLUDES) $(DEFINES)
+
+FILES   = \
+		$(srcdir)/library.cc \
+		$(srcdir)/library_0_0_in.xml \
+		Makefile
+
+destdir = $(prefix)/examples/objects/library
+
+
+PROGS   = \
+		library
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+library: $(srcdir)/library.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/library/library.cc
===================================================================
--- /tags/1.6.0/examples/objects/library/library.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/library/library.cc	(revision 6168)
@@ -0,0 +1,341 @@
+#include <iostream>
+#include "RpLibObj.h"
+#include "RpInt.h"
+#include "RpChain.h"
+#include "RpTest.h"
+
+int library_0_0 ()
+{
+    const char *testdesc = "test creating library object with loadFile()";
+    const char *testname = "library_0_0";
+    const char *filePath = "library_0_0_in.xml";
+    int retVal = 0;
+
+    Rappture::Library lib;
+
+    lib.loadFile(filePath);
+
+    const char *expected = NULL;
+
+    readFile(filePath, &expected);
+    const char *received = lib.xml();
+
+    retVal |= testStringVal(testname,testdesc,expected,received);
+
+    delete expected;
+
+    return retVal;
+}
+
+int library_0_1 ()
+{
+    const char *testdesc = "test creating library object with loadXml()";
+    const char *testname = "library_0_1";
+    int retVal = 0;
+
+    Rappture::Library lib;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\n\
+<run>\n\
+    <input>\n\
+        <number id=\"Ef\">\n\
+            <about>\n\
+                <label>Fermi Level</label>\n\
+                <description>Energy at center of distribution.</description>\n\
+            </about>\n\
+            <units>eV</units>\n\
+            <min>-10eV</min>\n\
+            <max>10eV</max>\n\
+            <default>0eV</default>\n\
+            <current>5eV</current>\n\
+            <preset>\n\
+                <label>300K (room temperature)</label>\n\
+                <value>300K</value>\n\
+            </preset>\n\
+            <preset>\n\
+                <label>77K (liquid nitrogen)</label>\n\
+                <value>77K</value>\n\
+            </preset>\n\
+            <preset>\n\
+                <label>4.2K (liquid helium)</label>\n\
+                <value>4.2K</value>\n\
+            </preset>\n\
+        </number>\n\
+    </input>\n\
+</run>\n\
+";
+
+    lib.loadXml(buf);
+
+    const char *expected = buf;
+    const char *received = lib.xml();
+
+    retVal |= testStringVal(testname,testdesc,expected,received);
+
+    return retVal;
+}
+
+int library_1_0 ()
+{
+    const char *testdesc = "test contains() function on empty library";
+    const char *testname = "library_1_0";
+    int retVal = 0;
+
+    Rappture::Library lib;
+    const Rp_Chain *contents = NULL;
+    contents = lib.contains();
+
+    int expected = 0;
+    int received = Rp_ChainGetLength(contents);
+
+    retVal |= testDoubleVal(testname,testdesc,expected,received);
+
+    return retVal;
+}
+
+int library_1_1 ()
+{
+    const char *testdesc = "test contains() function on populated library";
+    const char *testname = "library_1_1";
+    int retVal = 0;
+
+    Rappture::Library lib;
+    const Rp_Chain *contents = NULL;
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<run>\
+    <input>\
+        <number id=\"Ef\">\
+            <about>\
+                <label>Fermi Level</label>\
+                <description>Energy at center of distribution.</description>\
+            </about>\
+            <units>eV</units>\
+            <min>-10eV</min>\
+            <max>10eV</max>\
+            <default>0eV</default>\
+            <current>5eV</current>\
+            <preset>\
+                <value>300K</value>\
+                <label>300K (room temperature)</label>\
+            </preset>\
+            <preset>\
+                <value>77K</value>\
+                <label>77K (liquid nitrogen)</label>\
+            </preset>\
+            <preset>\
+                <value>4.2K</value>\
+                <label>4.2K (liquid helium)</label>\
+            </preset>\
+        </number>\
+    </input>\
+</run>";
+
+    lib.loadXml(buf);
+    contents = lib.contains();
+
+    int expected = 1;
+    int received = Rp_ChainGetLength(contents);
+
+    retVal |= testDoubleVal(testname,testdesc,expected,received);
+
+    return retVal;
+}
+
+int library_2_0 ()
+{
+    const char *testdesc = "test value(), 0 hints";
+    const char *testname = "library_2_0";
+    int retVal = 0;
+
+    Rappture::Library lib;
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<run>\
+    <input>\
+        <number id=\"temperature\">\
+            <about>\
+                <label>Ambient temperature</label>\
+                <description>Temperature of the environment.</description>\
+            </about>\
+            <units>K</units>\
+            <min>0K</min>\
+            <max>500K</max>\
+            <default>300K</default>\
+        </number>\
+        <number id=\"Ef\">\
+            <about>\
+                <label>Fermi Level</label>\
+                <description>Energy at center of distribution.</description>\
+            </about>\
+            <units>eV</units>\
+            <min>-10eV</min>\
+            <max>10eV</max>\
+            <default>4eV</default>\
+        </number>\
+    </input>\
+</run>";
+
+    lib.loadXml(buf);
+
+    double expected = 4.0;
+    double received = 0.0;
+    lib.value("Ef",&received,0);
+
+    retVal |= testDoubleVal(testname,testdesc,expected,received);
+
+    return retVal;
+}
+
+int library_2_1 ()
+{
+    const char *testdesc = "test value(), 1 hint, units=eV";
+    const char *testname = "library_2_1";
+    int retVal = 0;
+
+    Rappture::Library lib;
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<run>\
+    <input>\
+        <number id=\"temperature\">\
+            <about>\
+                <label>Ambient temperature</label>\
+                <description>Temperature of the environment.</description>\
+            </about>\
+            <units>K</units>\
+            <min>0K</min>\
+            <max>500K</max>\
+            <default>300K</default>\
+        </number>\
+        <number id=\"Ef\">\
+            <about>\
+                <label>Fermi Level</label>\
+                <description>Energy at center of distribution.</description>\
+            </about>\
+            <units>eV</units>\
+            <min>-10eV</min>\
+            <max>10eV</max>\
+            <default>4eV</default>\
+        </number>\
+    </input>\
+</run>";
+
+    lib.loadXml(buf);
+
+    double expected = 4.0;
+    double received = 0.0;
+    lib.value("Ef",&received,1,"units=eV");
+
+    retVal |= testDoubleVal(testname,testdesc,expected,received);
+
+    return retVal;
+}
+
+int library_2_2 ()
+{
+    const char *testdesc = "test value(), 1 hint, units=J";
+    const char *testname = "library_2_2";
+    int retVal = 0;
+
+    Rappture::Library lib;
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<run>\
+    <input>\
+        <number id=\"temperature\">\
+            <about>\
+                <label>Ambient temperature</label>\
+                <description>Temperature of the environment.</description>\
+            </about>\
+            <units>K</units>\
+            <min>0K</min>\
+            <max>500K</max>\
+            <default>300K</default>\
+        </number>\
+        <number id=\"Ef\">\
+            <about>\
+                <label>Fermi Level</label>\
+                <description>Energy at center of distribution.</description>\
+            </about>\
+            <units>eV</units>\
+            <min>-10eV</min>\
+            <max>10eV</max>\
+            <default>4eV</default>\
+        </number>\
+    </input>\
+</run>";
+
+    lib.loadXml(buf);
+
+    // double expected = 6.40871e-19;
+    double expected = 4*1.602177e-19;
+    double received = 0.0;
+    lib.value("Ef",&received,1,"units=J");
+
+    retVal |= testDoubleVal(testname,testdesc,expected,received);
+
+    return retVal;
+}
+
+int library_2_3 ()
+{
+    const char *testdesc = "test value(), object does not exist";
+    const char *testname = "library_2_3";
+    int retVal = 0;
+
+    Rappture::Library lib;
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<run>\
+    <input>\
+        <number id=\"temperature\">\
+            <about>\
+                <label>Ambient temperature</label>\
+                <description>Temperature of the environment.</description>\
+            </about>\
+            <units>K</units>\
+            <min>0K</min>\
+            <max>500K</max>\
+            <default>300K</default>\
+        </number>\
+        <number id=\"Ef\">\
+            <about>\
+                <label>Fermi Level</label>\
+                <description>Energy at center of distribution.</description>\
+            </about>\
+            <units>eV</units>\
+            <min>-10eV</min>\
+            <max>10eV</max>\
+            <default>4eV</default>\
+        </number>\
+    </input>\
+</run>";
+
+    lib.loadXml(buf);
+
+    // library should not change the value of received
+    // if it cannot find the requested object
+    double expected = -101.01;
+    double received = -101.01;
+    lib.value("EF",&received,1,"units=J");
+
+    retVal |= testDoubleVal(testname,testdesc,1,lib.error());
+    retVal |= testDoubleVal(testname,testdesc,expected,received);
+
+    return retVal;
+}
+
+int main()
+{
+    library_0_0();
+    library_0_1();
+    library_1_0();
+    library_2_0();
+    library_2_1();
+    library_2_2();
+    library_2_3();
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/library/library_0_0_in.xml
===================================================================
--- /tags/1.6.0/examples/objects/library/library_0_0_in.xml	(revision 6168)
+++ /tags/1.6.0/examples/objects/library/library_0_0_in.xml	(revision 6168)
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<run>
+    <input>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>5eV</current>
+            <preset>
+                <label>300K (room temperature)</label>
+                <value>300K</value>
+            </preset>
+            <preset>
+                <label>77K (liquid nitrogen)</label>
+                <value>77K</value>
+            </preset>
+            <preset>
+                <label>4.2K (liquid helium)</label>
+                <value>4.2K</value>
+            </preset>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/objects/number/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/number/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/number/Makefile.in	(revision 6168)
@@ -0,0 +1,64 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CC              = @CC@
+CFLAGS          = @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS        = @CFLAGS@
+DEFINES         = -g -Wall
+INCLUDES        = -I../../../src/core \
+                  -I../../../src/objects \
+                  -I$(srcdir)/../../../src/core \
+                  -I$(srcdir)/../../../src/objects \
+                  -I$(includedir)
+LIBS    = \
+		-L../../../src/core -lrappture \
+		-L../../../src/objects -lRpObjects\
+		-L$(libdir) -lexpat -lz -lm
+VPATH   = $(srcdir)
+
+CXX_SWITCHES    = $(CXXFLAGS) $(INCLUDES) $(DEFINES)
+CC_SWITCHES     = $(CFLAGS) $(INCLUDES) $(DEFINES)
+
+FILES   = \
+		$(srcdir)/number.cc \
+		Makefile
+
+destdir = $(prefix)/examples/objects/number
+
+
+PROGS   = \
+		number
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+number: $(srcdir)/number.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/number/number.cc
===================================================================
--- /tags/1.6.0/examples/objects/number/number.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/number/number.cc	(revision 6168)
@@ -0,0 +1,921 @@
+#include <iostream>
+#include "RpNumber.h"
+#include "RpTest.h"
+
+int
+printNumber(Rappture::Number *n)
+{
+    std::cout << "name: " << n->name() << std::endl;
+    std::cout << "path: " << n->path() << std::endl;
+    std::cout << "label: " << n->label() << std::endl;
+    std::cout << "desc: " << n->desc() << std::endl;
+    std::cout << "default: " << n->def() << std::endl;
+    std::cout << "current: " << n->cur() << std::endl;
+    std::cout << "min: " << n->min() << std::endl;
+    std::cout << "max: " << n->max() << std::endl;
+    std::cout << "units: " << n->units() << std::endl;
+    // std::cout << "xml:\n" << n->xml(indent,tabstop) << std::endl;
+    return 0;
+}
+
+int number_0_0 ()
+{
+    const char *testdesc = "test number full constructor";
+    const char *testname = "number_0_0";
+    int retVal = 0;
+
+    const char *name = "temp";
+    const char *units = "K";
+    double def = 300;
+    double min = 0;
+    double max = 1000;
+    const char *label = "mylabel";
+    const char *desc = "mydesc";
+
+    Rappture::Number *n = NULL;
+
+    n = new Rappture::Number(name,units,def,min,max,label,desc);
+
+    if (n == NULL) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", testdesc);
+        printf("\terror creating number object\n");
+        retVal = 1;
+    }
+
+    retVal |= testStringVal(testname,testdesc,name,n->name());
+    retVal |= testStringVal(testname,testdesc,units,n->units());
+    retVal |= testDoubleVal(testname,testdesc,def,n->def());
+    retVal |= testDoubleVal(testname,testdesc,min,n->min());
+    retVal |= testDoubleVal(testname,testdesc,max,n->max());
+    retVal |= testStringVal(testname,testdesc,label,n->label());
+    retVal |= testStringVal(testname,testdesc,desc,n->desc());
+
+    if (n != NULL) {
+        delete n;
+    }
+
+    return retVal;
+}
+
+int number_0_1 ()
+{
+    const char *testdesc = "test number constuctor";
+    const char *testname = "number_0_0";
+    int retVal = 0;
+
+    const char *name = "eV";
+    const char *units = "eV";
+    double def = 1.4;
+
+    Rappture::Number *n = NULL;
+
+    n = new Rappture::Number(name,units,def);
+
+    if (n == NULL) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", testdesc);
+        printf("\terror creating number object\n");
+        retVal = 1;
+    }
+
+    retVal |= testStringVal(testname,testdesc,name,n->name());
+    retVal |= testStringVal(testname,testdesc,units,n->units());
+    retVal |= testDoubleVal(testname,testdesc,def,n->def());
+
+    if (n != NULL) {
+        delete n;
+    }
+
+    return retVal;
+}
+
+int number_1_0 ()
+{
+    const char *testdesc = "test constructing number from xml";
+    const char *testname = "number_1_0";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+    <units>eV</units>\
+    <min>-10eV</min>\
+    <max>10eV</max>\
+    <default>0eV</default>\
+    <current>5eV</current>\
+    <preset>\
+        <value>300K</value>\
+        <label>300K (room temperature)</label>\
+    </preset>\
+    <preset>\
+        <value>77K</value>\
+        <label>77K (liquid nitrogen)</label>\
+    </preset>\
+    <preset>\
+        <value>4.2K</value>\
+        <label>4.2K (liquid helium)</label>\
+    </preset>\
+</number>";
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 5;
+    double min = -10;
+    double max = 10;
+    const char *label = "Fermi Level";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    if (n.minset()) {
+        retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    }
+    if (n.maxset()) {
+        retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    }
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_1 ()
+{
+    const char *testdesc = "test constructing number from xml, no min";
+    const char *testname = "number_1_1";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+    <units>eV</units>\
+    <max>10eV</max>\
+    <default>0eV</default>\
+    <current>5eV</current>\
+</number>";
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 5;
+    double min = -10;
+    double max = 10;
+    const char *label = "Fermi Level";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    if (n.minset()) {
+        retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    }
+    if (n.maxset()) {
+        retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    }
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_2 ()
+{
+    const char *testdesc = "test constructing number from xml, no max";
+    const char *testname = "number_1_2";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+    <units>eV</units>\
+    <min>-10eV</min>\
+    <default>0eV</default>\
+    <current>5eV</current>\
+</number>";
+
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 5;
+    double min = -10;
+    double max = 10;
+    const char *label = "Fermi Level";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    if (n.minset()) {
+        retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    }
+    if (n.maxset()) {
+        retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    }
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_3 ()
+{
+    const char *testdesc = "test constructing number from xml, no min, no max";
+    const char *testname = "number_1_3";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+    <units>eV</units>\
+    <default>0eV</default>\
+    <current>5eV</current>\
+</number>";
+
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 5;
+    double min = -10;
+    double max = 10;
+    const char *label = "Fermi Level";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    if (n.minset()) {
+        retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    }
+    if (n.maxset()) {
+        retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    }
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_4 ()
+{
+    const char *testdesc = "test constructing number from xml, no cur";
+    const char *testname = "number_1_4";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+    <units>eV</units>\
+    <min>-10eV</min>\
+    <max>10eV</max>\
+    <default>0eV</default>\
+</number>";
+
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 0;
+    double min = -10;
+    double max = 10;
+    const char *label = "Fermi Level";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    // if no current value is provided it defaults to 0.0.
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    if (n.minset()) {
+        retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    }
+    if (n.maxset()) {
+        retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    }
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_5 ()
+{
+    const char *testdesc = "test constructing number from xml, no def";
+    const char *testname = "number_1_5";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+    <units>eV</units>\
+    <min>-10eV</min>\
+    <max>10eV</max>\
+    <current>5eV</current>\
+</number>";
+
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 5;
+    double min = -10;
+    double max = 10;
+    const char *label = "Fermi Level";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    // if no default value is provided it defaults to 0.0.
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    if (n.minset()) {
+        retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    }
+    if (n.maxset()) {
+        retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    }
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_6 ()
+{
+    const char *testdesc = "test constructing number from xml, no def, no cur";
+    const char *testname = "number_1_6";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+    <units>eV</units>\
+    <min>-10eV</min>\
+    <max>10eV</max>\
+</number>";
+
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 0;
+    double min = -10;
+    double max = 10;
+    const char *label = "Fermi Level";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    if (n.minset()) {
+        retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    }
+    if (n.maxset()) {
+        retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    }
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_7 ()
+{
+    const char *testdesc = "test constructing number from xml, no def cur min max";
+    const char *testname = "number_1_7";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+    <units>eV</units>\
+</number>";
+
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 0;
+    double min = 0;
+    double max = 0;
+    const char *label = "Fermi Level";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_8 ()
+{
+    const char *testdesc = "test constructing number from xml, no explicit units";
+    const char *testname = "number_1_8";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+    <min>-10eV</min>\
+    <max>10eV</max>\
+    <default>0eV</default>\
+    <current>5eV</current>\
+</number>";
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 5;
+    double min = -10;
+    double max = 10;
+    const char *label = "Fermi Level";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    // units are implied from min, max, def, cur values
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    if (n.minset()) {
+        retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    }
+    if (n.maxset()) {
+        retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    }
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_9 ()
+{
+    const char *testdesc = "test constructing number from xml, no description";
+    const char *testname = "number_1_9";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+    </about>\
+    <units>eV</units>\
+    <min>-10eV</min>\
+    <max>10eV</max>\
+    <default>0eV</default>\
+    <current>5eV</current>\
+</number>";
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 5;
+    double min = -10;
+    double max = 10;
+    const char *label = "Fermi Level";
+    const char *desc = "";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    if (n.minset()) {
+        retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    }
+    if (n.maxset()) {
+        retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    }
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_10 ()
+{
+    const char *testdesc = "test constructing number from xml, no label";
+    const char *testname = "number_1_10";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+    <units>eV</units>\
+    <min>-10eV</min>\
+    <max>10eV</max>\
+    <default>0eV</default>\
+    <current>5eV</current>\
+</number>";
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 5;
+    double min = -10;
+    double max = 10;
+    const char *label = "";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    if (n.minset()) {
+        retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    }
+    if (n.maxset()) {
+        retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    }
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_11 ()
+{
+    const char *testdesc = "test constructing number from xml, no label description";
+    const char *testname = "number_1_11";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+    </about>\
+    <units>eV</units>\
+    <min>-10eV</min>\
+    <max>10eV</max>\
+    <default>0eV</default>\
+    <current>5eV</current>\
+</number>";
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 5;
+    double min = -10;
+    double max = 10;
+    const char *label = "";
+    const char *desc = "";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    // if no default value and no current value is provided
+    // both default to 0.0.
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_12 ()
+{
+    const char *testdesc = "test constructing number from xml, no about label description";
+    const char *testname = "number_1_12";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <units>eV</units>\
+    <min>-10eV</min>\
+    <max>10eV</max>\
+    <default>0eV</default>\
+    <current>5eV</current>\
+</number>";
+
+    const char *name = "Ef";
+    const char *units = "eV";
+    double def = 0;
+    double cur = 5;
+    double min = -10;
+    double max = 10;
+    const char *label = "";
+    const char *desc = "";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    // if no default value and no current value is provided
+    // both default to 0.0.
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_13 ()
+{
+    const char *testdesc = "test constructing number from xml, no def cur min max units";
+    const char *testname = "number_1_13";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+</number>";
+
+
+    const char *name = "Ef";
+    const char *units = NULL;
+    double def = 0;
+    double cur = 0;
+    double min = 0;
+    double max = 0;
+    const char *label = "Fermi Level";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    // if no default value and no current value is provided
+    // both default to 0.0.
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_14 ()
+{
+    const char *testdesc = "test constructing number from xml, only name";
+    const char *testname = "number_1_14";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+</number>";
+
+
+    const char *name = "Ef";
+    const char *units = NULL;
+    double def = 0;
+    double cur = 0;
+    double min = 0;
+    double max = 0;
+    const char *label = "";
+    const char *desc = "";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_15 ()
+{
+    const char *testdesc = "test constructing number from xml, no info";
+    const char *testname = "number_1_15";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number>\
+</number>";
+
+
+    const char *name = "";
+    const char *units = NULL;
+    double def = 0;
+    double cur = 0;
+    double min = 0;
+    double max = 0;
+    const char *label = "";
+    const char *desc = "";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+int number_1_16 ()
+{
+    const char *testdesc = "test constructing number from xml, no explicit or implied units";
+    const char *testname = "number_1_16";
+    int retVal = 0;
+
+    const char *buf =
+"<?xml version=\"1.0\"?>\
+<number id=\"Ef\">\
+    <about>\
+        <label>Fermi Level</label>\
+        <description>Energy at center of distribution.</description>\
+    </about>\
+    <min>-10</min>\
+    <max>10</max>\
+    <default>0</default>\
+    <current>5</current>\
+</number>";
+
+    const char *name = "Ef";
+    const char *units = NULL;
+    double def = 0;
+    double cur = 5;
+    double min = -10;
+    double max = 10;
+    const char *label = "Fermi Level";
+    const char *desc = "Energy at center of distribution.";
+
+    Rappture::Number n;
+
+    n.configure(Rappture::RPCONFIG_XML,(void*)buf);
+
+    retVal |= testStringVal(testname,testdesc,name,n.name());
+    retVal |= testStringVal(testname,testdesc,units,n.units());
+    retVal |= testDoubleVal(testname,testdesc,def,n.def());
+    retVal |= testDoubleVal(testname,testdesc,cur,n.cur());
+    if (n.minset()) {
+        retVal |= testDoubleVal(testname,testdesc,min,n.min());
+    }
+    if (n.maxset()) {
+        retVal |= testDoubleVal(testname,testdesc,max,n.max());
+    }
+    retVal |= testStringVal(testname,testdesc,label,n.label());
+    retVal |= testStringVal(testname,testdesc,desc,n.desc());
+
+    return retVal;
+}
+
+// FIXME: more tests:
+// what if units in min, max, def, cur differ from units()
+// what if you can't convert from units in min, max, def, cur to units()
+// what if units in presets differ from units()
+// test case for value() function when only cur was configured
+// test case for value() function when only def was configured
+// test case for vvalue() function with no hints
+// test case for vvalue() function with "units=" hint
+// test case for setting up object, what is cur when only def is provided
+// test case for setting up object, what is def when only cur is provided
+
+int main()
+{
+    number_0_0();
+    number_0_1();
+    number_1_0();
+    number_1_1();
+    number_1_2();
+    number_1_3();
+    number_1_4();
+    number_1_5();
+    number_1_6();
+    number_1_7();
+    number_1_8();
+    number_1_9();
+    number_1_10();
+    number_1_11();
+    number_1_12();
+    number_1_13();
+    number_1_14();
+    number_1_15();
+    number_1_16();
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/number/number_1_0_in.xml
===================================================================
--- /tags/1.6.0/examples/objects/number/number_1_0_in.xml	(revision 6168)
+++ /tags/1.6.0/examples/objects/number/number_1_0_in.xml	(revision 6168)
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<number id="Ef">
+    <about>
+        <label>Fermi Level</label>
+        <description>Energy at center of distribution.</description>
+    </about>
+    <units>eV</units>
+    <min>-10eV</min>
+    <max>10eV</max>
+    <default>0eV</default>
+    <current>5eV</current>
+    <preset>
+        <value>300K</value>
+        <label>300K (room temperature)</label>
+    </preset>
+    <preset>
+        <value>77K</value>
+        <label>77K (liquid nitrogen)</label>
+    </preset>
+    <preset>
+        <value>4.2K</value>
+        <label>4.2K (liquid helium)</label>
+    </preset>
+</number>
Index: /tags/1.6.0/examples/objects/path/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/path/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/path/Makefile.in	(revision 6168)
@@ -0,0 +1,64 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CC              = @CC@
+CFLAGS          = @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS        = @CFLAGS@
+DEFINES         = -g -Wall
+INCLUDES        = -I../../../src/core \
+                  -I../../../src/objects \
+                  -I$(srcdir)/../../../src/core \
+                  -I$(srcdir)/../../../src/objects \
+                  -I$(includedir)
+LIBS    = \
+		-L../../../src/core -lrappture \
+		-L../../../src/objects -lRpObjects\
+		-L$(libdir) -lexpat -lz -lm
+VPATH   = $(srcdir)
+
+CXX_SWITCHES    = $(CXXFLAGS) $(INCLUDES) $(DEFINES)
+CC_SWITCHES     = $(CFLAGS) $(INCLUDES) $(DEFINES)
+
+FILES   = \
+		$(srcdir)/path.cc \
+		Makefile
+
+destdir = $(prefix)/examples/objects/path
+
+
+PROGS   = \
+		path
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+path: $(srcdir)/path.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/path/path.cc
===================================================================
--- /tags/1.6.0/examples/objects/path/path.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/path/path.cc	(revision 6168)
@@ -0,0 +1,837 @@
+#include <iostream>
+#include "RpPath.h"
+
+int test(
+    const char *testname,
+    const char *desc,
+    const char *expected,
+    const char *received)
+{
+    if ((!expected && received) ||
+        (expected && !received) ||
+        (expected && received && strcmp(expected,received) != 0)) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%s\"\n",expected);
+        printf("\treceived \"%s\"\n",received);
+        return 1;
+    }
+    return 0;
+}
+
+
+int path_0_0 ()
+{
+    const char *desc = "test creation of path";
+    const char *testname = "path_0_0";
+
+    const char *expected = "input.number(mynum).current";
+    const char *received = NULL;
+
+    Rappture::Path p(expected);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_1_0 ()
+{
+    const char *desc = "test component function with type with no id";
+    const char *testname = "path_1_0";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *expected = "current";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.component();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_1_1 ()
+{
+    const char *desc = "test component function with type and id";
+    const char *testname = "path_1_1";
+
+    const char *path = "input.group(tabs).number(mynum)";
+    const char *expected = "number(mynum)";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.component();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_1_2 ()
+{
+    const char *desc = "test component function with no type with id";
+    const char *testname = "path_1_2";
+
+    const char *path = "input.group(tabs).(mynum)";
+    const char *expected = "(mynum)";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.component();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_1_3 ()
+{
+    const char *desc = "test component function with no type with no id";
+    const char *testname = "path_1_3";
+
+    const char *path = "input.group(tabs).";
+    const char *expected = "";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.component();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_1_4 ()
+{
+    const char *desc = "test component function with no type with blank id";
+    const char *testname = "path_1_4";
+
+    const char *path = "input.group(tabs).()";
+    const char *expected = "()";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.component();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_2_0 ()
+{
+    const char *desc = "test id function no id";
+    const char *testname = "path_2_0";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *expected = NULL;
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.id();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_2_1 ()
+{
+    const char *desc = "test id function with id";
+    const char *testname = "path_2_1";
+
+    const char *path = "input.group(tabs).number(mynum)";
+    const char *expected = "mynum";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.id();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_2_2 ()
+{
+    const char *desc = "test id function with blank id";
+    const char *testname = "path_2_2";
+
+    const char *path = "input.group(tabs).number()";
+    const char *expected = "";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.id();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_2_3 ()
+{
+    const char *desc = "test id function with no type with id";
+    const char *testname = "path_2_2";
+
+    const char *path = "input.group(tabs).(mynum)";
+    const char *expected = "mynum";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.id();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_3_0 ()
+{
+    const char *desc = "test type function with type with no id";
+    const char *testname = "path_3_0";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *expected = "current";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.type();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_3_1 ()
+{
+    const char *desc = "test type function with type with id";
+    const char *testname = "path_3_1";
+
+    const char *path = "input.group(tabs).number(mynum)";
+    const char *expected = "number";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.type();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_3_2 ()
+{
+    const char *desc = "test type function with no type with id";
+    const char *testname = "path_3_2";
+
+    const char *path = "input.group(tabs).(mynum)";
+    const char *expected = "";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.type();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_3_3 ()
+{
+    const char *desc = "test type function with no type with no id";
+    const char *testname = "path_3_3";
+
+    const char *path = "input.group(tabs).()";
+    const char *expected = "";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.type();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_4_0 ()
+{
+    const char *desc = "test parent function, parent with type with id";
+    const char *testname = "path_4_0";
+
+    const char *path = "input.number(mynum).current";
+    const char *expected = "input.number(mynum)";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.parent();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_4_1 ()
+{
+    const char *desc = "test parent function, parent with type with no id";
+    const char *testname = "path_4_1";
+
+    const char *path = "input.number.current";
+    const char *expected = "input.number";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.parent();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_4_2 ()
+{
+    const char *desc = "test parent function, parent with no type with id";
+    const char *testname = "path_4_2";
+
+    const char *path = "input.(mynum).current";
+    const char *expected = "input.(mynum)";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.parent();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_4_3 ()
+{
+    const char *desc = "test parent function, parent with no type with no id";
+    const char *testname = "path_4_3";
+
+    const char *path = "input.().current";
+    const char *expected = "input.()";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.parent();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_4_4 ()
+{
+    const char *desc = "test parent function, parent of path with one component";
+    const char *testname = "path_4_4";
+
+    const char *path = "input";
+    const char *expected = "";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.parent();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_4_5 ()
+{
+    const char *desc = "test parent function, parent of empty path";
+    const char *testname = "path_4_5";
+
+    const char *path = "";
+    const char *expected = "";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.parent();
+
+    return test(testname,desc,expected,received);
+}
+
+
+int path_5_0 ()
+{
+    const char *desc = "test add function with type with id";
+    const char *testname = "path_5_0";
+
+    const char *path = "input.group(tabs)";
+    const char *addStr = "number(mynum)";
+    const char *expected = "input.group(tabs).number(mynum)";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.add(addStr);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_5_1 ()
+{
+    const char *desc = "test add function with type with no id";
+    const char *testname = "path_5_1";
+
+    const char *path = "input.group(tabs)";
+    const char *addStr = "number";
+    const char *expected = "input.group(tabs).number";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.add(addStr);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_5_2 ()
+{
+    const char *desc = "test add function with type with blank id";
+    const char *testname = "path_5_2";
+
+    const char *path = "input.group(tabs)";
+    const char *addStr = "number()";
+    const char *expected = "input.group(tabs).number()";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.add(addStr);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_5_3 ()
+{
+    const char *desc = "test add function with no type with id";
+    const char *testname = "path_5_3";
+
+    const char *path = "input.group(tabs)";
+    const char *addStr = "(mynum)";
+    const char *expected = "input.group(tabs).(mynum)";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.add(addStr);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_5_4 ()
+{
+    const char *desc = "test add function with no type with blank id";
+    const char *testname = "path_5_4";
+
+    const char *path = "input.group(tabs)";
+    const char *addStr = "()";
+    const char *expected = "input.group(tabs).()";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.add(addStr);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_5_5 ()
+{
+    const char *desc = "test add function, multiple components, type and id";
+    const char *testname = "path_5_5";
+
+    const char *path = "input.group(tabs)";
+    const char *addStr = "number(mynum).current";
+    const char *expected = "input.group(tabs).number(mynum).current";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.add(addStr);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_5_6 ()
+{
+    const char *desc = "test add function, adding to empty path";
+    const char *testname = "path_5_6";
+
+    const char *path = "";
+    const char *addStr = "input.group(tabs).number(mynum).current";
+    const char *expected = "input.group(tabs).number(mynum).current";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.add(addStr);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_6_0 ()
+{
+    const char *desc = "test del function ";
+    const char *testname = "path_6_0";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *expected = "input.group(tabs).number(mynum)";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.del();
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_6_1 ()
+{
+    const char *desc = "test del function, del component with type and id ";
+    const char *testname = "path_6_1";
+
+    const char *path = "input.group(tabs).number(mynum)";
+    const char *expected = "input.group(tabs)";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.del();
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_6_2 ()
+{
+    const char *desc = "test del function, del component with no type with id ";
+    const char *testname = "path_6_2";
+
+    const char *path = "input.group(tabs).(mynum)";
+    const char *expected = "input.group(tabs)";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.del();
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_6_3 ()
+{
+    const char *desc = "test del function, del component with type with blank id ";
+    const char *testname = "path_6_3";
+
+    const char *path = "input.group(tabs).()";
+    const char *expected = "input.group(tabs)";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.del();
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_6_4 ()
+{
+    const char *desc = "test del function, del component with blank type no id ";
+    const char *testname = "path_6_4";
+
+    const char *path = "input.group(tabs).";
+    const char *expected = "input.group(tabs)";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.del();
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_6_5 ()
+{
+    const char *desc = "test del function, del last component from path";
+    const char *testname = "path_6_5";
+
+    const char *path = "input";
+    const char *expected = "";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.del();
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_6_6 ()
+{
+    const char *desc = "test del function, del from empty path";
+    const char *testname = "path_6_6";
+
+    const char *path = "";
+    const char *expected = "";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.del();
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_7_0 ()
+{
+    const char *desc = "test ifs function, change ifs to /";
+    const char *testname = "path_7_0";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *ifs = "/";
+    const char *expected = "input/group(tabs)/number(mynum)/current";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.ifs(ifs);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_7_1 ()
+{
+    const char *desc = "test ifs function, change ifs to \\0";
+    const char *testname = "path_7_1";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *ifs = "\0";
+    const char *expected = "input.group(tabs).number(mynum).current";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.ifs(ifs);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_7_2 ()
+{
+    const char *desc = "test ifs function, change ifs to (";
+    const char *testname = "path_7_2";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *ifs = "(";
+    const char *expected = "input.group(tabs).number(mynum).current";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.ifs(ifs);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_7_3 ()
+{
+    const char *desc = "test ifs function, change ifs to (";
+    const char *testname = "path_7_3";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *ifs = ")";
+    const char *expected = "input.group(tabs).number(mynum).current";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.ifs(ifs);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_7_4 ()
+{
+    const char *desc = "test ifs function, change ifs to NULL";
+    const char *testname = "path_7_4";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *ifs = NULL;
+    const char *expected = "input.group(tabs).number(mynum).current";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.ifs(ifs);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_7_5 ()
+{
+    const char *desc = "test ifs function, change ifs to .";
+    const char *testname = "path_7_5";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *ifs = ".";
+    const char *expected = "input.group(tabs).number(mynum).current";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.ifs(ifs);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_7_6 ()
+{
+    const char *desc = "test ifs function, change ifs to # on one component path";
+    const char *testname = "path_7_6";
+
+    const char *path = "input";
+    const char *ifs = "#";
+    const char *expected = "input";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.ifs(ifs);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_7_7 ()
+{
+    const char *desc = "test ifs function, change ifs to $ on empty path";
+    const char *testname = "path_7_7";
+
+    const char *path = "";
+    const char *ifs = "$";
+    const char *expected = "";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    p.ifs(ifs);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_8_0 ()
+{
+    const char *desc = "test path function, no arguments, empty path";
+    const char *testname = "path_8_0";
+
+    const char *path = "";
+    const char *expected = "";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_8_1 ()
+{
+    const char *desc = "test path function, no arguments, with path";
+    const char *testname = "path_8_1";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *expected = "input.group(tabs).number(mynum).current";
+    const char *received = NULL;
+
+    Rappture::Path p(path);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_8_2 ()
+{
+    const char *desc = "test path function, empty object, new path argument";
+    const char *testname = "path_8_2";
+
+    const char *path = "input.group(tabs).number(mynum).current";
+    const char *expected = "input.group(tabs).number(mynum).current";
+    const char *received = NULL;
+
+    Rappture::Path p;
+    p.path(path);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_8_3 ()
+{
+    const char *desc = "test path function, populated object, new path argument";
+    const char *testname = "path_8_3";
+
+    const char *path1 = "input.group(tabs).number(mynum).current";
+    const char *path2 = "input.number(mynum).current";
+    const char *expected = "input.number(mynum).current";
+    const char *received = NULL;
+
+    Rappture::Path p(path1);
+    p.path(path2);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int path_8_4 ()
+{
+    const char *desc = "test path function, populated object, new path fxn argument is empty string";
+    const char *testname = "path_8_4";
+
+    const char *path1 = "input.group(tabs).number(mynum).current";
+    const char *path2 = "";
+    const char *expected = "";
+    const char *received = NULL;
+
+    Rappture::Path p(path1);
+    p.path(path2);
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+// FIXME: add test for constructor
+// FIXME: add test for destructor
+// FIXME: add test for component get/set functions
+// FIXME: add test for id get/set functions
+// FIXME: add test for type get/set functions
+// FIXME: add test for parent get/set functions
+// FIXME: add test for path get/set functions
+// FIXME: add test for changing the curr location
+//        using first,last,next,prev and checking
+//        comp, type, parent,id fxns
+// FIXME: add test for numbered paths
+//        input.number2
+//        input.number2(eee)
+//        input.number(eee)2
+// FIXME: add test for _ifs inside of id tags
+
+int main()
+{
+    path_0_0();
+    path_1_0();
+    path_1_1();
+    path_1_2();
+    path_1_3();
+    path_1_4();
+    path_2_0();
+    path_2_1();
+    path_2_2();
+    path_2_3();
+    path_3_0();
+    path_3_1();
+    path_3_2();
+    path_3_3();
+    path_4_0();
+    path_4_1();
+    path_4_2();
+    path_4_3();
+    path_4_4();
+    path_4_5();
+    path_5_0();
+    path_5_1();
+    path_5_2();
+    path_5_3();
+    path_5_4();
+    path_5_5();
+    path_5_6();
+    path_6_0();
+    path_6_1();
+    path_6_2();
+    path_6_3();
+    path_6_4();
+    path_6_5();
+    path_6_6();
+    path_7_0();
+    path_7_1();
+    path_7_2();
+    path_7_3();
+    path_7_4();
+    path_7_5();
+    path_7_6();
+    path_7_7();
+    path_8_0();
+    path_8_1();
+    path_8_2();
+    path_8_3();
+    path_8_4();
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/plot/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/plot/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/plot/Makefile.in	(revision 6168)
@@ -0,0 +1,64 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CC              = @CC@
+CFLAGS          = @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS        = @CFLAGS@
+DEFINES         = -g -Wall
+INCLUDES        = -I../../../src/core \
+                  -I../../../src/objects \
+                  -I$(srcdir)/../../../src/core \
+                  -I$(srcdir)/../../../src/objects \
+                  -I$(includedir)
+LIBS    = \
+		-L../../../src/core -lrappture \
+		-L../../../src/objects -lRpObjects\
+		-L$(libdir) -lexpat -lz -lm
+VPATH   = $(srcdir)
+
+CXX_SWITCHES    = $(CXXFLAGS) $(INCLUDES) $(DEFINES)
+CC_SWITCHES     = $(CFLAGS) $(INCLUDES) $(DEFINES)
+
+FILES   = \
+		$(srcdir)/plot.cc \
+		Makefile
+
+destdir = $(prefix)/examples/objects/plot
+
+
+PROGS   = \
+		plot
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+plot: $(srcdir)/plot.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/plot/plot.cc
===================================================================
--- /tags/1.6.0/examples/objects/plot/plot.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/plot/plot.cc	(revision 6168)
@@ -0,0 +1,166 @@
+#include <iostream>
+#include "RpPlot.h"
+
+size_t indent = 0;
+size_t tabstop = 4;
+
+int test(
+    const char *testname,
+    const char *desc,
+    const char *expected,
+    const char *received)
+{
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%s\"\n",expected);
+        printf("\treceived \"%s\"\n",received);
+        return 1;
+    }
+    return 0;
+}
+
+int plot_0_0 ()
+{
+    const char *desc = "test basic plot object constructor";
+    const char *testname = "plot_0_0";
+
+    const char *expected = "run";
+    const char *received = NULL;
+
+    Rappture::Plot p;
+    received = p.path();
+
+    return test(testname,desc,expected,received);
+}
+
+int plot_1_0 ()
+{
+    const char *desc = "test generating xml text for single curve";
+    const char *testname = "plot_1_0";
+
+    const char *expected = "<?xml version=\"1.0\"?>\n\
+<run>\n\
+    <curve id=\"myid\">\n\
+        <about>\n\
+            <group>plotlabel</group>\n\
+            <label>plotlabel</label>\n\
+            <description>describe plot here</description>\n\
+            <type>(null)</type>\n\
+        </about>\n\
+        <xaxis>\n\
+            <label>Voltage</label>\n\
+            <description>Voltage along the Gate</description>\n\
+            <units>Volt</units>\n\
+            <scale>linear</scale>\n\
+        </xaxis>\n\
+        <yaxis>\n\
+            <label>Current</label>\n\
+            <description>Current along the Drain</description>\n\
+            <units>Amp</units>\n\
+            <scale>log</scale>\n\
+        </yaxis>\n\
+        <component>\n\
+            <xy>         1         1\n\
+         2         4\n\
+         3         9\n\
+         4        16\n\
+         5        25\n\
+         6        36\n\
+         7        49\n\
+         8        64\n\
+         9        81\n\
+        10       100\n\
+</xy>\n\
+        </component>\n\
+    </curve>\n\
+</run>\n\
+";
+    const char *received = NULL;
+
+    Rappture::Plot p;
+    size_t npts = 10;
+    double x[] = {1,2,3,4,5,6,7,8,9,10};
+    double y[] = {1,4,9,16,25,36,49,64,81,100};
+
+    p.add(npts, x, y, NULL, "myid");
+
+    p.propstr("label","plotlabel");
+    p.propstr("desc","describe plot here");
+    p.propstr("xlabel","Voltage");
+    p.propstr("xdesc","Voltage along the Gate");
+    p.propstr("xunits","Volt");
+    p.propstr("xscale","linear");
+    p.propstr("ylabel","Current");
+    p.propstr("ydesc","Current along the Drain");
+    p.propstr("yunits","Amp");
+    p.propstr("yscale","log");
+
+    Rappture::ClientDataXml xmldata;
+    xmldata.indent = indent;
+    xmldata.tabstop = tabstop;
+    xmldata.retStr = NULL;
+    p.dump(Rappture::RPCONFIG_XML,&xmldata);
+    received = xmldata.retStr;
+
+    return test(testname,desc,expected,received);
+}
+
+int main()
+{
+    plot_0_0 ();
+    plot_1_0 ();
+    return 0;
+}
+
+/*
+int main()
+{
+    // plot object
+    Rappture::Plot *p1 = NULL;
+
+    // data arrays
+    double x[] = {1,2,3,4,5,6,7,8,9,10};
+    double y[] = {1,4,9,16,25,36,49,64,81,100};
+    double z[] = {1,8,27,64,125,216,343,512,729,1000};
+
+    // number of points in x, y, z arrays
+    size_t nPts = 10;
+
+    // line format: green line, dotted line style, circle marker
+    const char *fmt = "g:o";
+
+    p1 = new Rappture::Plot();
+
+    // add 3 curves to the plot, with format and curve name
+    // x vs y, x vs z, x vs x
+    // curve name can be used to retrieve curve pointer later
+    // blank format means autogenerate the format
+    p1->add(nPts,x,y,fmt,"curve1");
+    p1->add(nPts,x,z,"b-*","curve2");
+    p1->add(nPts,x,x,"","curve3");
+
+    p1->propstr("xlabel","Voltage");
+    p1->propstr("xdesc","Voltage along the Gate");
+    p1->propstr("xunits","Volt");
+    p1->propstr("xscale","linear");
+    p1->propstr("ylabel","Current");
+    p1->propstr("ydesc","Current along the Drain");
+    p1->propstr("yunits","Amp");
+    p1->propstr("yscale","log");
+
+    // number of curves in this plot
+    size_t curveCnt = p1->count();
+    std::printf("curveCnt = %zu\n",curveCnt);
+
+    Rappture::ClientDataXml d;
+    d.indent = 0;
+    d.tabstop = 4;
+    p1->dump(Rappture::RPCONFIG_XML,&d);
+    std::printf("xml: %s\n",d.retStr);
+
+    delete p1;
+
+    return 0;
+}
+*/
Index: /tags/1.6.0/examples/objects/plot/plot1.cc
===================================================================
--- /tags/1.6.0/examples/objects/plot/plot1.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/plot/plot1.cc	(revision 6168)
@@ -0,0 +1,37 @@
+// matlab, matplotlib like interface
+// maybe implementable with varargs?
+// donno how to implement doubles and triples of args:
+//  x,y,x,z
+//  x,y,fmt,x,z,fmt2
+
+#include <iostream>
+#include "RpPlot.h"
+
+int main()
+{
+    Rappture::Plot *p1 = NULL;
+    Rappture::Plot *p2 = NULL;
+    Rappture::Plot *p3 = NULL;
+    Rappture::Plot *p4 = NULL;
+
+    double x[] = {1,2,3,4,5,6,7,8,9,10};
+    double z[] = {1,2,3,4,5,6,7,8,9,10};
+    double y[] = {1,4,9,16,25,36,49,64,81,100};
+
+    size_t nPts = 10;
+
+    // green line, dotted line style, circle marker
+    const char *fmt = "g:o"
+
+    p1 = new Rappture::Plot(nPts,x,y);
+    p2 = new Rappture::Plot(nPts,x,y,fmt);
+    p3 = new Rappture::Plot(nPts,x,z,x,y,"g:o");
+    p4 = new Rappture::Plot(nPts,x,z,nPts,x,y,nPts,x,x);
+
+    delete p1;
+    delete p2;
+    delete p3;
+    delete p4;
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/plot/plot2.cc
===================================================================
--- /tags/1.6.0/examples/objects/plot/plot2.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/plot/plot2.cc	(revision 6168)
@@ -0,0 +1,44 @@
+#include <iostream>
+#include "RpPlot.h"
+
+int main()
+{
+    Rappture::Plot *p0 = NULL;
+    Rappture::Plot *p1 = NULL;
+    Rappture::Plot *p2 = NULL;
+    Rappture::Plot *p3 = NULL;
+    Rappture::Plot *p4 = NULL;
+
+    Rappture::Plot::lineInfo *li1;
+    Rappture::Plot::lineInfo *li2;
+
+    double x[] = {1,2,3,4,5,6,7,8,9,10};
+    double z[] = {1,2,3,4,5,6,7,8,9,10};
+    double y[] = {1,4,9,16,25,36,49,64,81,100};
+
+    size_t nPts = 10;
+
+    li1 = new Rappture::Plot::lineInfo(
+    li.xlabel("xlabel");
+    li.xdesc("xdesc");
+    li.ylabel("ylabel");
+
+    p0 = new Rappture::Plot("blahPlot");
+    p0->addAxis("xlabel","xdesc","xunits","xscale",x,nPts);
+    p0->addAxis("ylabel","ydesc","yunits","yscale",y,nPts);
+
+    p1 = new Rappture::Plot(nPts,x,y);
+    p2 = new Rappture::Plot(nPts,x,y,fmt);
+    p3 = new Rappture::Plot(nPts,x,z,x,y,fmt);
+    p4 = new Rappture::Plot(nPts,x,z,nPts,x,y,nPts,x,x);
+
+    p0->addAxis("zlabel","zdesc","zunits","zscale",z,10);
+
+    printCurve(n);
+    n->delAxis("zlabel");
+    n->delAxis("xzylabel");
+    printCurve(n);
+
+    delete n;
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/plot/plot4.cc
===================================================================
--- /tags/1.6.0/examples/objects/plot/plot4.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/plot/plot4.cc	(revision 6168)
@@ -0,0 +1,61 @@
+#include <iostream>
+#include "RpPlot.h"
+
+int main()
+{
+    // plot object
+    Rappture::Plot *p1 = NULL;
+
+    // data arrays
+    double x[] = {1,2,3,4,5,6,7,8,9,10};
+    double z[] = {1,2,3,4,5,6,7,8,9,10};
+    double y[] = {1,4,9,16,25,36,49,64,81,100};
+
+    // number of points in x, y, z arrays
+    size_t nPts = 10;
+
+    // line format: green line, dotted line style, circle marker
+    const char *fmt = "g:o"
+
+    p1 = new Rappture::Plot();
+
+    // line id handle, not really sure what to do with these yet
+    size_t cid1 = 0;
+    size_t cid2 = 0;
+
+    // add line to the plot, with optional format and line name
+    // line name can be used to retrieve cid later?
+    cid1 = p1->add(nPts,x,y,fmt,"lineName");
+    cid2 = p1->add(nPts,x,z,"b-*");
+    p1->add(nPts,x,x);
+
+    // might want to associate info with a specific cid?
+    // info method implementable with varargs
+    // use 1 call to add multiple properties
+    /*
+    p1->info("xlabel","Voltage",
+              "xdesc","Voltage along the Gate",
+             "xunits","Volt",
+             "xscale","linear");
+    */
+
+    // or use multiple calls to add one property at a time
+    p1->property("ylabel","Current");
+    p1->property("ydesc","Current along the Drain");
+    p1->property("yunits","Amp");
+    p1->property("yscale","log");
+
+    // number of curves in this plot
+    size_t curveCnt = p1->count();
+
+    // const array of line id's
+    // const size_t *lineIds = p1->lines();
+
+    // retrieve cid from curve name
+    // may want to add cid to another plot?
+    cid = p1->line("lineName");
+
+    delete p1;
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/scatter/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/scatter/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/scatter/Makefile.in	(revision 6168)
@@ -0,0 +1,64 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CC              = @CC@
+CFLAGS          = @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS        = @CFLAGS@
+DEFINES         = -g -Wall
+INCLUDES        = -I../../../src/core \
+                  -I../../../src/objects \
+                  -I$(srcdir)/../../../src/core \
+                  -I$(srcdir)/../../../src/objects \
+                  -I$(includedir)
+LIBS    = \
+		-L../../../src/core -lrappture \
+		-L../../../src/objects -lRpObjects\
+		-L$(libdir) -lexpat -lz -lm
+VPATH   = $(srcdir)
+
+CXX_SWITCHES    = $(CXXFLAGS) $(INCLUDES) $(DEFINES)
+CC_SWITCHES     = $(CFLAGS) $(INCLUDES) $(DEFINES)
+
+FILES   = \
+		$(srcdir)/scatter.cc \
+		Makefile
+
+destdir = $(prefix)/examples/objects/scatter
+
+
+PROGS   = \
+		scatter
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+scatter: $(srcdir)/scatter.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/scatter/scatter.cc
===================================================================
--- /tags/1.6.0/examples/objects/scatter/scatter.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/scatter/scatter.cc	(revision 6168)
@@ -0,0 +1,75 @@
+#include <iostream>
+#include "RpScatter.h"
+
+int main()
+{
+    // plot object
+    Rappture::Scatter *p1 = NULL;
+
+    // data arrays
+    double x[] = {1,2,3,4,5,6,7,8,9,10};
+    double y[] = {1,4,9,16,25,36,49,64,81,100};
+    double z[] = {1,8,27,64,125,216,343,512,729,1000};
+
+    // number of points in x, y, z arrays
+    size_t nPts = 10;
+
+    // line format: green line, dotted line style, circle marker
+    const char *fmt = "g:o";
+
+    p1 = new Rappture::Scatter();
+
+    // add 3 curves to the plot, with format and curve name
+    // x vs y, x vs z, x vs x
+    // curve name can be used to retrieve curve pointer later
+    // blank format means autogenerate the format
+    p1->add(nPts,x,y,fmt,"curve1");
+    p1->add(nPts,x,z,"b-*","curve2");
+    p1->add(nPts,x,x,"","curve3");
+
+    p1->propstr("xlabel","Voltage");
+    p1->propstr("xdesc","Voltage along the Gate");
+    p1->propstr("xunits","Volt");
+    p1->propstr("xscale","linear");
+    p1->propstr("ylabel","Current");
+    p1->propstr("ydesc","Current along the Drain");
+    p1->propstr("yunits","Amp");
+    p1->propstr("yscale","log");
+
+    // number of curves in this plot
+    size_t curveCnt = p1->count();
+    std::printf("curveCnt = %zu\n",curveCnt);
+
+    size_t indent = 0;
+    size_t tabstop = 4;
+    std::printf("xml: %s\n",p1->xml(indent,tabstop));
+
+/*
+    // retrieve curve from curve name
+    // may want to add curve to another plot
+    // or just read through the values
+    Rappture::Curve *c = p1->curve("curve1");
+
+    const double *ax = NULL;
+    const double *ay = NULL;
+    size_t xlen = 0;
+    size_t ylen = 0;
+
+    xlen = c->data(Rappture::Curve::xaxis,&ax);
+    ylen = c->data(Rappture::Curve::yaxis,&ay);
+
+    std::printf("xlen = %zu\nylen = %zu\n",xlen,ylen);
+    std::printf("fmt = %s\n",c->propstr(Rappture::Curve::format,NULL));
+
+    if (   (ax != NULL)
+        && (ay != NULL)) {
+        for (size_t i = 0; (i < xlen) && (i < ylen); i++) {
+            std::printf("x = %g  y = %g\n",ax[i],ay[i]);
+        }
+    }
+*/
+
+    delete p1;
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/string/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/string/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/string/Makefile.in	(revision 6168)
@@ -0,0 +1,64 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CC              = @CC@
+CFLAGS          = @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS        = @CFLAGS@
+DEFINES         = -g -Wall
+INCLUDES        = -I../../../src/core \
+                  -I../../../src/objects \
+                  -I$(srcdir)/../../../src/core \
+                  -I$(srcdir)/../../../src/objects \
+                  -I$(includedir)
+LIBS    = \
+		-L../../../src/core -lrappture \
+		-L../../../src/objects -lRpObjects\
+		-L$(libdir) -lexpat -lz -lm
+VPATH   = $(srcdir)
+
+CXX_SWITCHES    = $(CXXFLAGS) $(INCLUDES) $(DEFINES)
+CC_SWITCHES     = $(CFLAGS) $(INCLUDES) $(DEFINES)
+
+FILES   = \
+		$(srcdir)/string.cc \
+		Makefile
+
+destdir = $(prefix)/examples/objects/string
+
+
+PROGS   = \
+		string
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+string: $(srcdir)/string.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/string/string.cc
===================================================================
--- /tags/1.6.0/examples/objects/string/string.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/string/string.cc	(revision 6168)
@@ -0,0 +1,34 @@
+#include <iostream>
+#include "RpString.h"
+
+int
+printString(Rappture::String *n)
+{
+    std::cout << "path: " << n->path() << std::endl;
+    std::cout << "label: " << n->label() << std::endl;
+    std::cout << "desc: " << n->desc() << std::endl;
+    std::cout << "hints: " << n->hints() << std::endl;
+    std::cout << "default: " << n->def() << std::endl;
+    std::cout << "current: " << n->cur() << std::endl;
+    std::cout << "width: " << n->width() << std::endl;
+    std::cout << "height: " << n->height() << std::endl;
+    return 0;
+}
+
+int main()
+{
+    Rappture::String *n = NULL;
+
+    n = new Rappture::String("input.string(temperature)",
+                             "myString Value","mylabel",
+                             "mydesc","myhint",20,30);
+
+    printString(n);
+
+    Rappture::String n1("input.string(eV)","eV");
+    printString(&n1);
+
+    delete n;
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/tree/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/tree/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/tree/Makefile.in	(revision 6168)
@@ -0,0 +1,64 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CC              = @CC@
+CFLAGS          = @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS        = @CFLAGS@
+DEFINES         = -g -Wall
+INCLUDES        = -I../../../src/core \
+                  -I../../../src/objects \
+                  -I$(srcdir)/../../../src/core \
+                  -I$(srcdir)/../../../src/objects \
+                  -I$(includedir)
+LIBS    = \
+		-L../../../src/core -lrappture \
+		-L../../../src/objects -lRpObjects\
+		-L$(libdir) -lexpat -lz -lm
+VPATH   = $(srcdir)
+
+CXX_SWITCHES    = $(CXXFLAGS) $(INCLUDES) $(DEFINES)
+CC_SWITCHES     = $(CFLAGS) $(INCLUDES) $(DEFINES)
+
+FILES   = \
+		$(srcdir)/tree.c \
+		Makefile
+
+destdir = $(prefix)/examples/objects/tree
+
+
+PROGS   = \
+		tree
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+tree: $(srcdir)/tree.c
+	$(CC) $(CC_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/tree/tree.c
===================================================================
--- /tags/1.6.0/examples/objects/tree/tree.c	(revision 6168)
+++ /tags/1.6.0/examples/objects/tree/tree.c	(revision 6168)
@@ -0,0 +1,210 @@
+#include <stdio.h>
+#include <string.h>
+#include "RpTree.h"
+
+int tree_0_0 ()
+{
+    const char *desc = "test creation of tree";
+    const char *testname = "tree_0_0";
+
+    const char *treeName = "mytree";
+    const char *expected = "mytree";
+    const char *received = NULL;
+
+    Rp_Tree t;
+
+    Rp_TreeCreate(treeName,&t);
+    received = Rp_TreeName(t);
+
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%s\"\n",expected);
+        printf("\treceived \"%s\"\n",received);
+        return 1;
+    }
+
+    return 0;
+}
+
+int tree_1_0 ()
+{
+    const char *desc = "test creation of tree node";
+    const char *testname = "tree_1_0";
+
+    const char *treeName = "mytree";
+    const char *nodeName = "mynode";
+    const char *expected = "mynode";
+    const char *received = NULL;
+
+    Rp_Tree t;
+    Rp_TreeNode n = NULL;
+
+    Rp_TreeCreate(treeName,&t);
+    n = Rp_TreeCreateNode(t, Rp_TreeRootNode(t), nodeName, 0);
+    received = Rp_TreeNodeLabel(n);
+
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%s\"\n",expected);
+        printf("\treceived \"%s\"\n",received);
+        return 1;
+    }
+
+    return 0;
+}
+
+int tree_2_0 ()
+{
+    const char *desc = "test creation of tree node with single child";
+    const char *testname = "tree_2_0";
+
+    const char *treeName = "mytree";
+    const char *parentNodeName = "myparentnode";
+    const char *childNodeName = "mychildnode";
+    const char *expected = "mychildnode";
+    const char *received = NULL;
+
+    Rp_Tree t;
+    Rp_TreeNode parent = NULL;
+    Rp_TreeNode child = NULL;
+
+    Rp_TreeCreate(treeName,&t);
+    parent = Rp_TreeCreateNode(t, Rp_TreeRootNode(t), parentNodeName, 0);
+    child = Rp_TreeCreateNode(t, parent, childNodeName, 0);
+    received = Rp_TreeNodeLabel(child);
+
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%s\"\n",expected);
+        printf("\treceived \"%s\"\n",received);
+        return 1;
+    }
+
+    return 0;
+}
+
+int tree_2_1 ()
+{
+    const char *desc = "test creation of tree node with multiple children";
+    const char *testname = "tree_2_1";
+
+    const char *treeName = "mytree";
+    const char *parentNodeName = "myparentnode";
+    size_t expected = 5;
+    size_t received = 0;
+
+    Rp_Tree t;
+    Rp_TreeNode parent = NULL;
+
+    Rp_TreeCreate(treeName,&t);
+    parent = Rp_TreeCreateNode(t, Rp_TreeRootNode(t), parentNodeName, 0);
+
+    Rp_TreeCreateNode(t, parent, "child1", 0);
+    Rp_TreeCreateNode(t, parent, "child2", 0);
+    Rp_TreeCreateNode(t, parent, "child3", 0);
+    Rp_TreeCreateNode(t, parent, "child4", 0);
+    Rp_TreeCreateNode(t, parent, "child5", 0);
+
+    received = Rp_TreeNodeDegree(parent);
+
+    if (expected != received) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%zu\"\n",expected);
+        printf("\treceived \"%zu\"\n",received);
+        return 1;
+    }
+
+    return 0;
+}
+
+int tree_2_2 ()
+{
+    const char *desc = "test search for child node";
+    const char *testname = "tree_2_2";
+
+    const char *treeName = "mytree";
+    const char *parentNodeName = "myparentnode";
+    const char *childNodeName = "mychildnode";
+    const char *expected = "mychildnode";
+    const char *received = NULL;
+
+    Rp_Tree t;
+    Rp_TreeNode parent = NULL;
+    Rp_TreeNode foundChild = NULL;
+
+    Rp_TreeCreate(treeName,&t);
+    parent = Rp_TreeCreateNode(t, Rp_TreeRootNode(t), parentNodeName, 0);
+
+    Rp_TreeCreateNode(t, parent, "child1", 0);
+    Rp_TreeCreateNode(t, parent, "child2", 0);
+    Rp_TreeCreateNode(t, parent, "child3", 0);
+    Rp_TreeCreateNode(t, parent, childNodeName, 0);
+    Rp_TreeCreateNode(t, parent, "child4", 0);
+    Rp_TreeCreateNode(t, parent, "child5", 0);
+
+    foundChild = Rp_TreeFindChild(parent,childNodeName);
+    received = Rp_TreeNodeLabel(foundChild);
+
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%s\"\n",expected);
+        printf("\treceived \"%s\"\n",received);
+        return 1;
+    }
+
+    return 0;
+}
+
+int tree_3_0 ()
+{
+    const char *desc = "test adding node with string value";
+    const char *testname = "tree_3_0";
+
+    const char *treeName = "mytree";
+    const char *parentNodeName = "myparentnode";
+    const char *childNodeName = "mychildnode";
+    const char *childNodeValue = "quick brown fox";
+    const char *expected = "quick brown fox";
+    const char *received = NULL;
+
+    Rp_Tree t;
+    Rp_TreeNode parent = NULL;
+    Rp_TreeNode child = NULL;
+
+    Rp_TreeCreate(treeName,&t);
+    parent = Rp_TreeCreateNode(t, Rp_TreeRootNode(t), parentNodeName, 0);
+
+    child = Rp_TreeCreateNode(t, parent, childNodeName, 0);
+    Rp_TreeSetValue(t,child,"value",(void *)childNodeValue);
+
+    Rp_TreeGetValue(t,child,"value",(void **)&received);
+
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%s\"\n",expected);
+        printf("\treceived \"%s\"\n",received);
+        return 1;
+    }
+
+    return 0;
+}
+
+int main()
+{
+    tree_0_0();
+    tree_1_0();
+    tree_2_0();
+    tree_2_1();
+    tree_2_2();
+    tree_3_0();
+
+    // add test case where two children have the same name but different ids
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/xmlparser/Makefile.in
===================================================================
--- /tags/1.6.0/examples/objects/xmlparser/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/objects/xmlparser/Makefile.in	(revision 6168)
@@ -0,0 +1,71 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CC              = @CC@
+CFLAGS          = @CFLAGS@
+CXX             = @CXX@
+CXXFLAGS        = @CFLAGS@
+DEFINES         = -g -Wall
+INCLUDES        = -I../../../src/core \
+                  -I../../../src/objects \
+                  -I$(srcdir)/../../../src/core \
+                  -I$(srcdir)/../../../src/objects \
+                  -I$(includedir)
+LIBS    = \
+		-L../../../src/core -lrappture \
+		-L../../../src/objects -lRpObjects\
+		-L$(libdir) -lexpat -lz -lm
+VPATH   = $(srcdir)
+
+CXX_SWITCHES    = $(CXXFLAGS) $(INCLUDES) $(DEFINES)
+CC_SWITCHES     = $(CFLAGS) $(INCLUDES) $(DEFINES)
+
+FILES   = \
+		$(srcdir)/xmlparser.cc \
+		$(srcdir)/xmlparser_1_0_in.xml \
+		$(srcdir)/xmlparser_1_1_in.xml \
+		$(srcdir)/xmlparser_1_0_out.xml \
+		$(srcdir)/xmlparser_1_1_out.xml \
+		$(srcdir)/xmlparser_2_0_in.xml \
+		$(srcdir)/xmlparser_5_0_in.xml \
+		$(srcdir)/tool.xml \
+		Makefile
+
+destdir = $(prefix)/examples/objects/xmlparser
+
+
+PROGS   = \
+		xmlparser
+
+.PHONY: all install clean distclean
+
+all: $(PROGS)
+
+xmlparser: $(srcdir)/xmlparser.cc
+	$(CXX) $(CXX_SWITCHES) -o $@ $< $(LIBS)
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	for i in $(PROGS) ; do \
+	  $(INSTALL) -m 0555 $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(PROGS)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/objects/xmlparser/tool.xml
===================================================================
--- /tags/1.6.0/examples/objects/xmlparser/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/objects/xmlparser/tool.xml	(revision 6168)
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/fermi @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <string>
+            <about>
+                <label>Mystring</label>
+                <description>blahblah</description>
+            </about>
+            <default>the default value</default>
+        </string>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/objects/xmlparser/xmlparser.cc
===================================================================
--- /tags/1.6.0/examples/objects/xmlparser/xmlparser.cc	(revision 6168)
+++ /tags/1.6.0/examples/objects/xmlparser/xmlparser.cc	(revision 6168)
@@ -0,0 +1,401 @@
+#include <iostream>
+#include <errno.h>
+#include <fstream>
+#include <sys/stat.h>
+#include "RpParserXML.h"
+
+size_t
+readFile (
+    const char *filePath,
+    const char **buf)
+{
+    if (buf == NULL) {
+        fprintf(stderr,"buf is NULL while opening file \"%s\"", filePath);
+        return 0;
+    }
+
+    FILE *f;
+    f = fopen(filePath, "rb");
+    if (f == NULL) {
+        fprintf(stderr,"can't open \"%s\": %s", filePath, strerror(errno));
+        return 0;
+    }
+    struct stat stat;
+    if (fstat(fileno(f), &stat) < 0) {
+        fprintf(stderr,"can't stat \"%s\": %s", filePath, strerror(errno));
+        return 0;
+    }
+    off_t size;
+    size = stat.st_size;
+    char* memblock;
+    memblock = new char [size+1];
+    if (memblock == NULL) {
+        fprintf(stderr,"can't allocate %zu bytes for file \"%s\": %s",
+            (size_t) size, filePath, strerror(errno));
+        fclose(f);
+        return 0;
+    }
+
+    size_t nRead;
+    nRead = fread(memblock, sizeof(char), size, f);
+    fclose(f);
+
+    if (nRead != (size_t)size) {
+        fprintf(stderr,"can't read %zu bytes from \"%s\": %s", (size_t) size, filePath,
+            strerror(errno));
+        return 0;
+    }
+
+    memblock[size] = '\0';
+    *buf = memblock;
+    return nRead;
+}
+
+int xmlparser_0_0 ()
+{
+    const char *desc = "test creating xml parser";
+    const char *testname = "xmlparser_0_0";
+    int retVal = 0;
+
+    const char *expected = "initialized ParserXml Object";
+    const char *received = NULL;
+
+    Rp_ParserXml *p = NULL;
+
+    p = Rp_ParserXmlCreate();
+
+    if (p == NULL) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%s\"\n",expected);
+        printf("\treceived \"%s\"\n",received);
+        retVal = 1;
+    }
+
+    if (p) {
+        Rp_ParserXmlDestroy(&p);
+    }
+
+    return retVal;
+}
+
+int xmlparser_1_0 ()
+{
+    const char *desc = "test sending xml text to xml parser";
+    const char *testname = "xmlparser_1_0";
+    const char *infile = "xmlparser_1_0_in.xml";
+    const char *outfile = "xmlparser_1_0_out.xml";
+    int retVal = 0;
+
+    const char *xmltext = NULL;
+    const char *expected = NULL;
+
+    readFile(infile,&xmltext);
+    readFile(outfile,&expected);
+
+    const char *received = NULL;
+
+    Rp_ParserXml *p = NULL;
+
+    p = Rp_ParserXmlCreate();
+
+    Rp_ParserXmlParse(p, xmltext);
+
+    received = Rp_ParserXmlXml(p);
+
+
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected %zu bytes: \"%s\"\n",strlen(expected), expected);
+        printf("\treceived %zu bytes: \"%s\"\n",strlen(received), received);
+        retVal = 1;
+    }
+
+    if (p) {
+        Rp_ParserXmlDestroy(&p);
+    }
+
+    if (xmltext != NULL) {
+        delete [] xmltext;
+        xmltext = NULL;
+    }
+    if (expected != NULL) {
+        delete [] expected;
+        expected = NULL;
+    }
+
+    return retVal;
+}
+
+
+int xmlparser_1_1 ()
+{
+    const char *desc = "test sending xml text to xml parser";
+    const char *testname = "xmlparser_1_1";
+    const char *infile = "xmlparser_1_1_in.xml";
+    const char *outfile = "xmlparser_1_1_out.xml";
+    int retVal = 0;
+
+    const char *xmltext = NULL;
+    const char *expected = NULL;
+
+    readFile(infile,&xmltext);
+    readFile(outfile,&expected);
+
+    const char *received = NULL;
+
+    Rp_ParserXml *p = NULL;
+
+    p = Rp_ParserXmlCreate();
+
+    Rp_ParserXmlParse(p, xmltext);
+
+    received = Rp_ParserXmlXml(p);
+
+
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected %zu bytes: \"%s\"\n",strlen(expected), expected);
+        printf("\treceived %zu bytes: \"%s\"\n",strlen(received), received);
+        retVal = 1;
+    }
+
+    if (p) {
+        Rp_ParserXmlDestroy(&p);
+    }
+
+    if (xmltext) {
+        delete[] xmltext;
+        xmltext = NULL;
+    }
+    if (expected) {
+        delete[] expected;
+        expected = NULL;
+    }
+
+    return retVal;
+}
+
+
+int xmlparser_2_0 ()
+{
+    const char *desc = "test printing xml as path/val combos";
+    const char *testname = "xmlparser_2_0";
+    const char *infile = "xmlparser_2_0_in.xml";
+    int retVal = 0;
+
+    const char *xmltext = NULL;
+
+    readFile(infile,&xmltext);
+
+    const char *expected = "\
+run.tool.about Press Simulate to view results.\n\
+run.tool.command tclsh @tool/fermi.tcl @driver\n\
+run.input.number(Ef).about.label Fermi Level\n\
+run.input.number(Ef).about.description Energy at center of distribution.\n\
+run.input.number(Ef).units eV\n\
+run.input.number(Ef).min -10eV\n\
+run.input.number(Ef).max 10eV\n\
+run.input.number(Ef).default 0eV\n\
+run.input.number(Ef).current 0eV\n";
+
+    const char *received = NULL;
+
+    Rp_ParserXml *p = NULL;
+
+    p = Rp_ParserXmlCreate();
+
+    Rp_ParserXmlParse(p, xmltext);
+
+    received = Rp_ParserXmlPathVal(p);
+
+
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected %zu bytes: \"%s\"\n",strlen(expected), expected);
+        printf("\treceived %zu bytes: \"%s\"\n",strlen(received), received);
+        retVal = 1;
+    }
+
+    if (p) {
+        Rp_ParserXmlDestroy(&p);
+    }
+
+    if (xmltext) {
+        delete[] xmltext;
+        xmltext = NULL;
+    }
+
+    return retVal;
+}
+
+int xmlparser_3_0 ()
+{
+    const char *desc = "test getting xml value";
+    const char *testname = "xmlparser_3_0";
+    const char *infile = "xmlparser_2_0_in.xml";
+    int retVal = 0;
+
+    const char *xmltext = NULL;
+
+    readFile(infile,&xmltext);
+
+    const char *expected = "0eV";
+
+    const char *received = NULL;
+
+    Rp_ParserXml *p = NULL;
+
+    p = Rp_ParserXmlCreate();
+
+    Rp_ParserXmlParse(p, xmltext);
+
+    received = Rp_ParserXmlGet(p,"input.number(Ef).current");
+
+
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected %zu bytes: \"%s\"\n",strlen(expected), expected);
+        printf("\treceived %zu bytes: \"%s\"\n",strlen(received), received);
+        retVal = 1;
+    }
+
+    if (p) {
+        Rp_ParserXmlDestroy(&p);
+    }
+
+    if (xmltext) {
+        delete[] xmltext;
+        xmltext = NULL;
+    }
+
+    return retVal;
+}
+
+int xmlparser_4_0 ()
+{
+    const char *desc = "test putting xml value";
+    const char *testname = "xmlparser_4_0";
+    const char *infile = "xmlparser_2_0_in.xml";
+    int retVal = 0;
+
+    const char *xmltext = NULL;
+
+    readFile(infile,&xmltext);
+
+    const char *expected = "hi mom";
+
+    const char *received = NULL;
+
+    Rp_ParserXml *p = NULL;
+
+    p = Rp_ParserXmlCreate();
+
+    Rp_ParserXmlParse(p, xmltext);
+
+    Rp_ParserXmlPut(p,"input.number(gg).current","hi mom",0);
+    received = Rp_ParserXmlGet(p,"input.number(gg).current");
+
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected %zu bytes: \"%s\"\n",strlen(expected), expected);
+        printf("\treceived %zu bytes: \"%s\"\n",strlen(received), received);
+        retVal = 1;
+    }
+
+    if (p) {
+        Rp_ParserXmlDestroy(&p);
+    }
+
+    if (xmltext) {
+        delete[] xmltext;
+        xmltext = NULL;
+    }
+
+    return retVal;
+}
+
+int xmlparser_5_0 ()
+{
+    const char *desc = "test printing xml with degrees of presets";
+    const char *testname = "xmlparser_5_0";
+    const char *infile = "xmlparser_5_0_in.xml";
+    int retVal = 0;
+
+    const char *xmltext = NULL;
+
+    readFile(infile,&xmltext);
+
+    const char *expected = "\
+run.tool.about Press Simulate to view results.\n\
+run.tool.command tclsh @tool/fermi.tcl @driver\n\
+run.input.number(Ef).about.label Fermi Level\n\
+run.input.number(Ef).about.description Energy at center of distribution.\n\
+run.input.number(Ef).units eV\n\
+run.input.number(Ef).min -10eV\n\
+run.input.number(Ef).max 10eV\n\
+run.input.number(Ef).default 0eV\n\
+run.input.number(Ef).current 0eV\n\
+run.input.number(Ef).preset.value 300K\n\
+run.input.number(Ef).preset.label 300K (room temperature)\n\
+run.input.number(Ef).preset.value 77K\n\
+run.input.number(Ef).preset.label 77K (liquid nitrogen)\n\
+run.input.number(Ef).preset.value 4.2K\n\
+run.input.number(Ef).preset.label 4.2K (liquid helium)\n\
+";
+
+    const char *received = NULL;
+
+    Rp_ParserXml *p = NULL;
+
+    p = Rp_ParserXmlCreate();
+
+    Rp_ParserXmlParse(p, xmltext);
+
+    received = Rp_ParserXmlPathVal(p);
+
+
+    if (strcmp(expected,received) != 0) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected %zu bytes: \"%s\"\n",strlen(expected), expected);
+        printf("\treceived %zu bytes: \"%s\"\n",strlen(received), received);
+        retVal = 1;
+    }
+
+    if (p) {
+        Rp_ParserXmlDestroy(&p);
+    }
+
+    if (xmltext) {
+        delete[] xmltext;
+        xmltext = NULL;
+    }
+
+    return retVal;
+}
+
+// FIXME: test what happens when parser sees self closing tag <tag/>
+// FIXME: test get function
+// FIXME: test put function
+// FIXME: test putf function
+// FIXME: test appendf function
+// FIXME: look into why Rp_ParserXmlPathVal hits some nodes twice in gdb
+
+int main()
+{
+    xmlparser_0_0();
+    xmlparser_1_0();
+    xmlparser_1_1();
+    xmlparser_2_0();
+    xmlparser_3_0();
+    xmlparser_4_0();
+    xmlparser_5_0();
+
+    return 0;
+}
Index: /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_0_in.xml
===================================================================
--- /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_0_in.xml	(revision 6168)
+++ /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_0_in.xml	(revision 6168)
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>  0eV   </current>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_0_out.xml
===================================================================
--- /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_0_out.xml	(revision 6168)
+++ /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_0_out.xml	(revision 6168)
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_1_in.xml
===================================================================
--- /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_1_in.xml	(revision 6168)
+++ /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_1_in.xml	(revision 6168)
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>  0eV   </current>
+        </number>
+        <number id="voltage">
+            <about>
+                <label>voltage</label>
+                <description>give a voltage.</description>
+            </about>
+            <units>V</units>
+            <min>-1V</min>
+            <max>1V</max>
+            <default>0V</default>
+            <current>0V</current>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_1_out.xml
===================================================================
--- /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_1_out.xml	(revision 6168)
+++ /tags/1.6.0/examples/objects/xmlparser/xmlparser_1_1_out.xml	(revision 6168)
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+        <number id="voltage">
+            <about>
+                <label>voltage</label>
+                <description>give a voltage.</description>
+            </about>
+            <units>V</units>
+            <min>-1V</min>
+            <max>1V</max>
+            <default>0V</default>
+            <current>0V</current>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/objects/xmlparser/xmlparser_2_0_in.xml
===================================================================
--- /tags/1.6.0/examples/objects/xmlparser/xmlparser_2_0_in.xml	(revision 6168)
+++ /tags/1.6.0/examples/objects/xmlparser/xmlparser_2_0_in.xml	(revision 6168)
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/objects/xmlparser/xmlparser_3_0_in.xml
===================================================================
--- /tags/1.6.0/examples/objects/xmlparser/xmlparser_3_0_in.xml	(revision 6168)
+++ /tags/1.6.0/examples/objects/xmlparser/xmlparser_3_0_in.xml	(revision 6168)
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/objects/xmlparser/xmlparser_5_0_in.xml
===================================================================
--- /tags/1.6.0/examples/objects/xmlparser/xmlparser_5_0_in.xml	(revision 6168)
+++ /tags/1.6.0/examples/objects/xmlparser/xmlparser_5_0_in.xml	(revision 6168)
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/examples/showdata/Makefile
===================================================================
--- /tags/1.6.0/examples/showdata/Makefile	(revision 6168)
+++ /tags/1.6.0/examples/showdata/Makefile	(revision 6168)
@@ -0,0 +1,22 @@
+FC              = gfortran
+FCFLAGS         =
+FCDEBUGFLAGS    = -Wall -g
+INCLUDES        = -I/apps/rappture/dev/include
+LIBS            = -L/apps/rappture/dev/lib -lrappture -lexpat -lz -lm
+
+FC_SWITCHES     = $(FCFLAGS) $(FCDEBUGFLAGS) $(INCLUDES)
+
+.PHONY: all install clean distclean
+
+all: showdata
+
+showdata: showdata.f
+	$(FC) $(FC_SWITCHES) $< -o $@ $(LIBS)
+
+install: all
+
+clean:
+	$(RM) showdata run*.xml
+
+distclean: clean
+
Index: /tags/1.6.0/examples/showdata/showdata.f
===================================================================
--- /tags/1.6.0/examples/showdata/showdata.f	(revision 6168)
+++ /tags/1.6.0/examples/showdata/showdata.f	(revision 6168)
@@ -0,0 +1,33 @@
+      program showdata
+        IMPLICIT NONE
+
+        integer rp_lib, rp_lib_get_file
+        integer driver, nbytes
+        CHARACTER*100 inFile, strVal
+
+        call getarg(1,inFile)
+        driver = rp_lib(inFile)
+        if (driver .eq. 0) then
+            write(0,*) "Error while opening ",inFile
+            stop
+        endif
+
+        nbytes = rp_lib_get_file(driver,
+     +        "input.string(data).current", "mydata.dat")
+        if (nbytes .le. 0) then
+            write(strVal,*) "Error while writing data file"
+            write(0,*) strVal
+            call rp_lib_put_str (driver,"output.log",strVal,0)
+            call rp_result(driver)
+            stop
+        endif
+
+        OPEN (UNIT=5, FILE="mydata.dat", STATUS="OLD")
+
+        call rp_lib_put_file (driver,"output.string(data).current",
+     +          "mydata.dat",0,0)
+
+        CLOSE (UNIT=5, STATUS="DELETE")
+
+        call rp_result(driver)
+      end program showdata
Index: /tags/1.6.0/examples/showdata/tool.xml
===================================================================
--- /tags/1.6.0/examples/showdata/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/showdata/tool.xml	(revision 6168)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/showdata @driver</command>
+    </tool>
+    <input>
+        <string id="data">
+            <about>
+                <label>Data File</label>
+                <description>This is a data file.</description>
+            </about>
+            <size>40x10</size>
+            <default>data data data</default>
+        </string>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/uq/README
===================================================================
--- /tags/1.6.0/examples/uq/README	(revision 6168)
+++ /tags/1.6.0/examples/uq/README	(revision 6168)
@@ -0,0 +1,1 @@
+Uncertainty Quantification Examples
Index: /tags/1.6.0/examples/uq/enable/enable.py
===================================================================
--- /tags/1.6.0/examples/uq/enable/enable.py	(revision 6168)
+++ /tags/1.6.0/examples/uq/enable/enable.py	(revision 6168)
@@ -0,0 +1,24 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: UQ Example of Enabling and Disabling UQ Inputs
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+
+# uncomment these for debugging
+# sys.stderr = open('tool.err', 'w')
+# sys.stdout = open('tool.out', 'w')
+
+rx = Rappture.PyXml(sys.argv[1])
+
+vsweep = rx['input.(vsweep).current'].value
+temp = rx['input.(temperature).current'].value
+length = rx['input.(length).current'].value
+
+rx.close()
Index: /tags/1.6.0/examples/uq/enable/tool.xml
===================================================================
--- /tags/1.6.0/examples/uq/enable/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/uq/enable/tool.xml	(revision 6168)
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>number</title>
+  <about>Example of UQ on a Curve.</about>
+  <command>
+    python @tool/enable.py @driver
+  </command>
+  <uq>true</uq>
+</tool>
+<input>
+  <number id="vsweep">
+    <about>
+      <label>Voltage Sweep +/-</label>
+      <description>This determines the voltage sweep used to obtain results from the model.</description>
+      <icon>
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==
+      </icon>
+    </about>
+    <uq>false</uq>
+    <units>V</units>
+    <min>0V</min>
+    <max>10V</max>
+    <default>4V</default>
+    <color>purple</color>
+  </number>
+
+ <number id="temperature">
+    <about>
+      <label>Ambient temperature</label>
+      <description>This is the temperature in the environment around the device.</description>
+    </about>
+    <units>K</units>
+    <min>50K</min>
+    <max>1000K</max>
+    <default>300K</default>
+    <preset>
+      <value>300K</value>
+      <label>300K (room temperature)</label>
+    </preset>
+    <preset>
+      <value>77K</value>
+      <label>77K (liquid nitrogen)</label>
+    </preset>
+  </number>
+
+   <number id="length">
+    <about>
+      <label>Length of the Sample</label>
+      <description>This is the length os some thing we are interested in.</description>
+    </about>
+    <units>mm</units>
+    <min>1</min>
+    <max>1000</max>
+    <default>100</default>
+  </number>
+
+</input>
+</run>
Index: /tags/1.6.0/examples/uq/projectile/desc.html
===================================================================
--- /tags/1.6.0/examples/uq/projectile/desc.html	(revision 6168)
+++ /tags/1.6.0/examples/uq/projectile/desc.html	(revision 6168)
@@ -0,0 +1,9 @@
+<html>
+<body>
+    <h2>
+    <p> The projectile is launched from a platform at an angle and an initial velocity.  The tool computes
+    the distance travelled, maximum height, and plots the path.  You can apply uncertainty to some of the inputs
+    to see the uncertainty in the outputs.
+</h2>
+</body>
+</html>
Index: /tags/1.6.0/examples/uq/projectile/projectile.py
===================================================================
--- /tags/1.6.0/examples/uq/projectile/projectile.py	(revision 6168)
+++ /tags/1.6.0/examples/uq/projectile/projectile.py	(revision 6168)
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+
+# ----------------------------------------------------------------------
+#  MAIN PROGRAM - generated by the Rappture Builder
+# ----------------------------------------------------------------------
+import Rappture
+import sys
+import numpy as np
+
+sys.stderr = open('main.err', 'w')
+sys.stdout = open('main.out', 'w')
+
+# open the XML file containing the run parameters
+io = Rappture.PyXml(sys.argv[1])
+
+#########################################################
+# Get input values from Rappture
+#########################################################
+
+# get input value for input.number(height) and convert to m
+str = io['input.number(height).current'].value
+height = Rappture.Units.convert(str, to="m", units="off")
+
+# get input value for input.number(velocity) and convert to m/s
+str = io['input.number(velocity).current'].value
+velocity = Rappture.Units.convert(str, to="m/s", units="off")
+
+# get input value for input.number(angle) and convert to deg
+str = io['input.number(angle).current'].value
+angle = Rappture.Units.convert(str, to="deg", units="off")
+
+# get input value for input.number(g) and convert to m/s2
+str = io['input.number(g).current'].value
+g = Rappture.Units.convert(str, to="m/s2", units="off")
+
+
+#########################################################
+#  Basic Physics below ...
+#########################################################
+
+Rappture.Utils.progress(0, "Starting...")
+
+velx = velocity * np.cos(np.pi * angle / 180)
+vely = velocity * np.sin(np.pi * angle / 180)
+
+# compute time until vertical velocity is 0.
+ttp = vely/g
+maxheight = vely * ttp - (g * ttp**2) / 2.0
+maxheight += height
+
+# time to fall
+ttf = np.sqrt(2 * maxheight / g)
+ttime = ttp + ttf
+
+distance = velx * ttime
+
+Rappture.Utils.progress(5, "Loading data...")
+
+# discretize time and visualize path
+t = np.linspace(0, ttime, 200)
+d = t * velx
+h = height + vely * t - (g * t**2) / 2.0
+
+Rappture.Utils.progress(100, "Done")
+
+#########################################################
+# Save output values back to Rappture
+#########################################################
+
+# The labels, descriptions and units are set in the
+# tool.xml file.  All we need to do here is set the values.
+
+# save output value for output.curve(path)
+io['output.curve(path).component.xy'] = (d, h)
+
+io['output.curve(height).component.xy'] = (t, h)
+
+# save output value for output.number(distance)
+io['output.number(distance).current'] = distance
+
+# save output value for output.number(maxheight)
+io['output.number(maxheight).current'] = maxheight
+
+io.close()
Index: /tags/1.6.0/examples/uq/projectile/tool.xml
===================================================================
--- /tags/1.6.0/examples/uq/projectile/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/uq/projectile/tool.xml	(revision 6168)
@@ -0,0 +1,100 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>Projectile Motion Example</title>
+        <uq>True</uq>
+        <about>This is a simple high school physics example which we use as an example of using Rappture and the Uncertainty Quantification features.</about>
+        <command>@tool/projectile.py @driver</command>
+    </tool>
+    <input>
+        <note>
+            <contents> file://desc.html</contents>
+        </note>
+        <number id="height">
+            <about>
+                <label>Height</label>
+                <description>The initial height of the projectile.</description>
+            </about>
+            <default>0m</default>
+            <units>m</units>
+            <min>0m</min>
+        </number>
+        <number id="velocity">
+            <about>
+                <label>Velocity</label>
+                <description>The initial velocity of the projectile.		</description>
+            </about>
+            <default>100m/s</default>
+            <units>m/s</units>
+            <min>10m/s</min>
+            <max>1000m/s</max>
+        </number>
+        <number id="angle">
+            <about>
+                <label>Angle</label>
+                <description>The initial angle of the projectile, in degrees.</description>
+            </about>
+            <default>45</default>
+            <min>5</min>
+            <max>180</max>
+        </number>
+        <number id="g">
+            <about>
+                <label>g</label>
+                <description>Gravitational acceleration at the Earth's surface.  Standard gravity is by definition 9.80665 m/s^2. However the  normal equatorial value on Earth, 9.78033 m/s^2.  Around the world, the value varies from 9.7639 m/s^2 to  9.8337 m/s^2.</description>
+            </about>
+            <default>9.80665m/s2</default>
+            <units>m/s2</units>
+            <min>9.7639m/s2</min>
+            <max>9.8337m/s2</max>
+        </number>
+    </input>
+    <output>
+        <curve id="path">
+            <about>
+                <label>Path of the Projectile</label>
+                <description>The path of the projectile plotted as distance vs height.</description>
+            </about>
+            <xaxis>
+                <label>Distance</label>
+                <description>Distance</description>
+                <units>m</units>
+            </xaxis>
+            <yaxis>
+                <label>Height</label>
+                <description>Height</description>
+                <units>m</units>
+            </yaxis>
+        </curve>
+        <curve id="height">
+            <about>
+                <label>Height of the Projectile</label>
+                <description>The height of the projectile plotted vs time.</description>
+            </about>
+            <xaxis>
+                <label>Time</label>
+                <description>Time</description>
+                <units>s</units>
+            </xaxis>
+            <yaxis>
+                <label>Height</label>
+                <description>Height</description>
+                <units>m</units>
+            </yaxis>
+        </curve>
+        <number id="distance">
+            <about>
+                <label>Distance</label>
+                <description>The distance the projectile travels.</description>
+            </about>
+            <units>m</units>
+        </number>
+        <number id="maxheight">
+            <about>
+                <label>Maximum Height</label>
+                <description>The maximum height the projectile reaches.</description>
+            </about>
+            <units>m</units>
+        </number>
+    </output>
+</run>
Index: /tags/1.6.0/examples/uq/rosenbrock/desc.html
===================================================================
--- /tags/1.6.0/examples/uq/rosenbrock/desc.html	(revision 6168)
+++ /tags/1.6.0/examples/uq/rosenbrock/desc.html	(revision 6168)
@@ -0,0 +1,15 @@
+<html>
+<body>
+    <h2> Rosenbrock Function UQ Test</h2>
+    <p>  The Rosenbrock function is commonly used for testing optimization and uncertainty quantification software.  The form we will use is</p>
+    <p>
+    f(x,y) = 100*(y-x**2)**2 + (1-x)**2
+    <p>
+    This is a fourth order polynomial and its response surface looks like this:
+    <p>
+    <img src="rosen_level_4.jpeg" width=400 align="float"/>
+    <p>
+    UQ software should be able to build close approximations to this response surface given enough sample points.  Our "Smolyak" method will reproduce
+    this response exactly with a level 4 run.
+</body>
+</html>
Index: /tags/1.6.0/examples/uq/rosenbrock/response_result.xml
===================================================================
--- /tags/1.6.0/examples/uq/rosenbrock/response_result.xml	(revision 6168)
+++ /tags/1.6.0/examples/uq/rosenbrock/response_result.xml	(revision 6168)
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<run><output><mesh id="m2d"><about><label>2D Mesh</label></about><dim>2</dim><hide>yes</hide><grid><xaxis><numpoints>50</numpoints><min>-2.0</min><max>2.0</max></xaxis><yaxis><numpoints>50</numpoints><min>-2.0</min><max>2.0</max></yaxis></grid></mesh><field id="f2d"><about><xaxis><label>Y</label></xaxis><yaxis><label>X</label></yaxis><label>Result</label><view>heightmap</view></about><component><mesh>output.mesh(m2d)</mesh><values>2595.66666667 2477.93794252 2364.20755241 2254.47549632 2148.74177426 2047.00638623 1949.26933222 1855.53061225 1765.79022629 1680.04817437 1598.30445648 1520.55907261 1446.81202277 1377.06330696 1311.31292517 1249.56087741 1191.80716368 1138.05178398 1088.2947383 1042.53602666 1000.77564904 963.013605442 929.249895877 899.484520339 873.717478829 851.948771346 834.17839789 820.406358462 810.632653062 804.857281688 803.080244343 805.301541025 811.521171734 821.739136471 835.955435236 854.170068027 876.383034847 902.594335694 932.803970568 967.01193947 1005.2182424 1047.42287936 1093.62585034 1143.82715535 1198.02679439 1256.22476746 1318.42107455 1384.61571567 1454.80869082 1529.0 2499.22351798 2381.49479384 2267.76440372 2158.03234763 2052.29862557 1950.56323754 1852.82618353 1759.08746356 1669.34707761 1583.60502568 1501.86130779 1424.11592392 1350.36887408 1280.62015827 1214.86977648 1153.11772872 1095.36401499 1041.60863529 991.851589616 946.092877968 904.332500347 866.570456754 832.806747189 803.041371651 777.27433014 755.505622658 737.735249202 723.963209774 714.189504373 708.414133 706.637095655 708.858392337 715.078023046 725.295987783 739.512286548 757.726919339 779.939886159 806.151187006 836.36082188 870.568790782 908.775093711 950.979730668 997.182701652 1047.38400666 1101.5836457 1159.78161877 1221.97792586 1288.17256699 1358.36554214 1432.55685131 2406.7920311 2289.06330696 2175.33291684 2065.60086075 1959.86713869 1858.13175066 1760.39469665 1666.65597668 1576.91559073 1491.1735388 1409.42982091 1331.68443704 1257.9373872 1188.18867139 1122.4382896 1060.68624184 1002.93252811 949.177148411 899.420102735 853.661391087 811.901013467 774.138969874 740.375260308 710.60988477 684.84284326 663.074135777 645.303762322 631.531722894 621.758017493 615.98264612 614.205608774 616.426905456 622.646536166 632.864500903 647.080799667 665.295432459 687.508399278 713.719700125 743.929335 778.137303901 816.343606831 858.548243788 904.751214772 954.952519784 1009.15215882 1067.35013189 1129.54643898 1195.74108011 1265.93405526 1340.12536443 2318.37220603 2200.64348188 2086.91309177 1977.18103568 1871.44731362 1769.71192559 1671.97487158 1578.2361516 1488.49576565 1402.75371373 1321.00999584 1243.26461197 1169.51756213 1099.76884631 1034.01846453 972.266416771 914.512703041 860.757323338 811.000277662 765.241566014 723.481188394 685.719144801 651.955435236 622.190059698 596.423018187 574.654310704 556.883937249 543.111897821 533.33819242 527.562821047 525.785783701 528.007080383 534.226711093 544.44467583 558.660974594 576.875607386 599.088574205 625.299875052 655.509509927 689.717478829 727.923781758 770.128418715 816.331389699 866.532694711 920.73233375 978.930306817 1041.12661391 1107.32125503 1177.51423018 1251.70553936 2233.96404276 2116.23531862 2002.5049285 1892.77287241 1787.03915035 1685.30376232 1587.56670832 1493.82798834 1404.08760239 1318.34555047 1236.60183257 1158.8564487 1085.10939886 1015.36068305 949.610301264 887.858253506 830.104539775 776.349160072 726.592114397 680.833402749 639.073025129 601.310981536 567.54727197 537.781896432 512.014854922 490.246147439 472.475773983 458.703734555 448.930029155 443.154657782 441.377620436 443.598917118 449.818547828 460.036512564 474.252811329 492.467444121 514.68041094 540.891711787 571.101346661 605.309315563 643.515618493 685.720255449 731.923226434 782.124531445 836.324170485 894.522143552 956.718450646 1022.91309177 1093.10606692 1167.29737609 2153.5675413 2035.83881716 1922.10842704 1812.37637096 1706.6426489 1604.90726086 1507.17020686 1413.43148688 1323.69110093 1237.94904901 1156.20533111 1078.45994724 1004.7128974 934.964181591 869.213799806 807.461752048 749.708038318 695.952658615 646.195612939 600.436901291 558.676523671 520.914480078 487.150770513 457.385394975 431.618353464 409.849645981 392.079272526 378.307233098 368.533527697 362.758156324 360.981118978 363.20241566 369.42204637 379.640011107 393.856309871 412.070942663 434.283909482 460.495210329 490.704845204 524.912814105 563.119117035 605.323753992 651.526724976 701.728029988 755.927669027 814.125642094 876.321949188 942.51659031 1012.70956546 1086.90087464 2077.18270165 1959.45397751 1845.72358739 1735.99153131 1630.25780925 1528.52242121 1430.78536721 1337.04664723 1247.30626128 1161.56420936 1079.82049146 1002.07510759 928.328057754 858.579341941 792.828960156 731.076912398 673.323198667 619.567818965 569.810773289 524.052061641 482.291684021 444.529640428 410.765930862 381.000555324 355.233513814 333.464806331 315.694432875 301.922393447 292.148688047 286.373316674 284.596279328 286.81757601 293.03720672 303.255171457 317.471470221 335.686103013 357.899069832 384.110370679 414.320005553 448.527974455 486.734277385 528.938914341 575.141885326 625.343190338 679.542829377 737.740802444 799.937109538 866.13175066 936.324725809 1010.51603499 2004.80952381 1887.08079967 1773.35040955 1663.61835346 1557.8846314 1456.14924337 1358.41218937 1264.67346939 1174.93308344 1089.19103151 1007.44731362 929.701929752 855.954879911 786.206164098 720.455782313 658.703734555 600.950020825 547.194641122 497.437595447 451.678883799 409.918506178 372.156462585 338.39275302 308.627377482 282.860335971 261.091628488 243.321255033 229.549215605 219.775510204 214.000138831 212.223101486 214.444398168 220.664028877 230.881993614 245.098292378 263.31292517 285.52589199 311.737192837 341.946827711 376.154796613 414.361099542 456.565736499 502.768707483 552.970012495 607.169651534 665.367624601 727.563931695 793.758572817 863.951547966 938.142857143 1936.44800777 1818.71928363 1704.98889352 1595.25683743 1489.52311537 1387.78772734 1290.05067333 1196.31195335 1106.5715674 1020.82951548 939.085797585 861.340413717 787.593363876 717.844648064 652.094266278 590.34221852 532.58850479 478.833125087 429.076079412 383.317367764 341.556990143 303.79494655 270.031236985 240.265861447 214.498819936 192.730112453 174.959738998 161.18769957 151.413994169 145.638622796 143.861585451 146.082882133 152.302512842 162.520477579 176.736776343 194.951409135 217.164375955 243.375676802 273.585311676 307.793280578 345.999583507 388.204220464 434.407191448 484.60849646 538.808135499 597.006108566 659.20241566 725.397056782 795.590031931 869.781341108 1872.09815355 1754.3694294 1640.63903929 1530.9069832 1425.17326114 1323.43787311 1225.7008191 1131.96209913 1042.22171318 956.479661252 874.735943357 796.990559489 723.243509649 653.494793836 587.744412051 525.992364293 468.238650562 414.48327086 364.726225184 318.967513536 277.207135916 239.445092323 205.681382757 175.916007219 150.148965709 128.380258226 110.60988477 96.8378453424 87.0641399419 81.2887685688 79.5117312233 81.7330279052 87.9526586146 98.1706233516 112.386922116 130.601554908 152.814521727 179.025822574 209.235457448 243.44342635 281.64972928 323.854366236 370.057337221 420.258642233 474.458281272 532.656254339 594.852561433 661.047202555 731.240177704 805.431486881 1811.75996113 1694.03123698 1580.30084687 1470.56879078 1364.83506872 1263.09968069 1165.36262668 1071.62390671 981.883520755 896.141468833 814.397750937 736.652367069 662.905317229 593.156601416 527.406219631 465.654171873 407.900458143 354.14507844 304.388032764 258.629321116 216.868943496 179.106899903 145.343190338 115.5778148 89.8107732891 68.0420658061 50.2716923506 36.4996529226 26.725947522 20.950576149 19.1735388034 21.3948354854 27.6144661948 37.8324309317 52.0487296961 70.263362488 92.4763293074 118.687630154 148.897265029 183.10523393 221.31153686 263.516173817 309.719144801 359.920449813 414.120088852 472.318061919 534.514369013 600.709010135 670.901985284 745.093294461 1755.43343052 1637.70470637 1523.97431626 1414.24226017 1308.50853811 1206.77315008 1109.03609607 1015.29737609 925.556990143 839.81493822 758.071220325 680.325836457 606.578786617 536.830070804 471.079689019 409.327641261 351.57392753 297.818547827 248.061502152 202.302790504 160.542412884 122.780369291 89.0166597253 59.2512841873 33.4842426768 11.7155351938 -6.05483826168 -19.8268776897 -29.6005830902 -35.3759544633 -37.1529918088 -34.9316951269 -28.7120644174 -18.4940996805 -4.27780091613 13.9368318758 36.1497986951 62.361099542 92.5707344164 126.778703318 164.985006248 207.189643204 253.392614189 303.5939192 357.79355824 415.991531307 478.187838401 544.382479523 614.575454672 688.766763849 1703.11856171 1585.38983757 1471.65944745 1361.92739136 1256.1936693 1154.45828127 1056.72122727 962.982507289 873.242121338 787.500069416 705.75635152 628.010967653 554.263917812 484.515201999 418.764820214 357.012772456 299.259058726 245.503679023 195.746633347 149.987921699 108.227544079 70.4655004861 36.7017909206 6.93641538263 -18.8306261279 -40.5993336108 -58.3697070664 -72.1417464944 -81.9154518949 -87.6908232679 -89.4678606135 -87.2465639315 -81.0269332221 -70.8089684852 -56.5926697208 -38.3780369289 -16.1650701095 10.0462307373 40.2558656117 74.4638345135 112.670137443 154.8747744 201.077745384 251.279050396 305.478689435 363.676662502 425.872969596 492.067610718 562.260585867 636.451895044 1654.81535471 1537.08663057 1423.35624046 1313.62418437 1207.89046231 1106.15507427 1008.41802027 914.679300292 824.938914341 739.196862419 657.453144523 579.707760655 505.960710815 436.211995002 370.461613217 308.709565459 250.955851729 197.200472026 147.44342635 101.684714702 59.9243370819 22.162293489 -11.6014160765 -41.3667916145 -67.133833125 -88.9025406079 -106.672914063 -120.444953491 -130.218658892 -135.994030265 -137.771067611 -135.549770929 -129.330140219 -119.112175482 -104.895876718 -86.681243926 -64.4682771066 -38.2569762598 -8.0473413854 26.1606275164 64.3669304458 106.571567403 152.774538387 202.975843399 257.175482438 315.373455505 377.569762599 443.764403721 513.95737887 588.148688047 1610.52380952 1492.79508538 1379.06469527 1269.33263918 1163.59891712 1061.86352909 964.12647508 870.387755102 780.647369152 694.905317229 613.161599334 535.416215466 461.669165626 391.920449813 326.170068027 264.418020269 206.664306539 152.908926836 103.151881161 57.3931695128 15.6327918924 -22.1292517006 -55.892961266 -85.658336804 -111.425378314 -133.194085797 -150.964459253 -164.736498681 -174.510204082 -180.285575455 -182.0626128 -179.841316118 -173.621685409 -163.403720672 -149.187421907 -130.972789116 -108.759822296 -82.5485214493 -52.3388865749 -18.1309176731 20.0753852563 62.2800222131 108.482993197 158.684298209 212.883937248 271.081910315 333.27821741 399.472858531 469.665833681 543.857142857 1570.24392614 1452.515202 1338.78481188 1229.0527558 1123.31903374 1021.5836457 923.846591698 830.10787172 740.36748577 654.625433847 572.881715952 495.136332084 421.389282244 351.640566431 285.890184645 224.138136888 166.384423157 112.629043454 62.8719977788 17.1132861309 -24.6470914895 -62.4091350825 -96.172844648 -125.938220186 -151.705261696 -173.473969179 -191.244342635 -205.016382063 -214.790087463 -220.565458836 -222.342496182 -220.1211995 -213.901568791 -203.683604054 -189.467305289 -171.252672497 -149.039705678 -122.828404831 -92.6187699569 -58.410801055 -20.2044981257 22.0001388312 68.2031098155 118.404414827 172.604053867 230.802026933 292.998334028 359.192975149 429.385950299 503.577259475 1533.97570457 1416.24698042 1302.51659031 1192.78453422 1087.05081216 985.315424129 887.578370124 793.839650146 704.099264196 618.357212273 536.613494377 458.86811051 385.121060669 315.372344856 249.621963071 187.869915313 130.116201583 76.3608218799 26.6037762045 -19.1549354435 -60.9153130639 -98.6773566568 -132.441066222 -162.20644176 -187.973483271 -209.742190754 -227.512564209 -241.284603637 -251.058309038 -256.833680411 -258.610717756 -256.389421074 -250.169790365 -239.951825628 -225.735526864 -207.520894072 -185.307927252 -159.096626406 -128.886991531 -94.6790226294 -56.4727197 -14.2680827432 31.9348882411 82.1361932529 136.335832292 194.533805359 256.730112453 322.924753575 393.117728724 467.309037901 1501.7191448 1383.99042066 1270.26003054 1160.52797446 1054.79425239 953.058864362 855.321810357 761.583090379 671.842704429 586.100652506 504.356934611 426.611550743 352.864500902 283.11578509 217.365403304 155.613355546 97.859641816 44.1042621131 -5.65278356232 -51.4114952102 -93.1718728307 -130.933916424 -164.697625989 -194.463001527 -220.230043038 -241.998750521 -259.769123976 -273.541163404 -283.314868805 -289.090240178 -290.867277523 -288.645980841 -282.426350132 -272.208385395 -257.99208663 -239.777453839 -217.564487019 -191.353186172 -161.143551298 -126.935582396 -88.7292794668 -46.52464251 -0.321671525666 49.8796334861 104.079272525 162.277245592 224.473552686 290.668193808 360.861168957 435.052478134 1473.47424684 1355.7455227 1242.01513258 1132.2830765 1026.54935444 924.813966403 827.076912398 733.33819242 643.59780647 557.855754547 476.112036651 398.366652784 324.619602943 254.87088713 189.120505345 127.368457587 69.6147438568 15.8593641539 -33.8976815215 -79.6563931694 -121.41677079 -159.178814383 -192.942523948 -222.707899486 -248.474940997 -270.24364848 -288.014021935 -301.786061363 -311.559766764 -317.335138137 -319.112175482 -316.8908788 -310.671248091 -300.453283354 -286.23698459 -268.022351798 -245.809384978 -219.598084132 -189.388449257 -155.180480355 -116.974177426 -74.7695404692 -28.5665694849 21.6347355269 75.8343745662 134.032347633 196.228654727 262.423295849 332.616270998 406.807580175 1449.24101069 1331.51228655 1217.78189643 1108.04984034 1002.31611828 900.580730251 802.843676246 709.104956268 619.364570318 533.622518395 451.8788005 374.133416632 300.386366792 230.637650979 164.887269193 103.135221436 45.3815077052 -8.37387199771 -58.1309176731 -103.889629321 -145.650006941 -183.412050534 -217.1757601 -246.941135638 -272.708177148 -294.476884631 -312.247258087 -326.019297515 -335.793002915 -341.568374288 -343.345411634 -341.124114952 -334.904484243 -324.686519506 -310.470220741 -292.255587949 -270.04262113 -243.831320283 -213.621685409 -179.413716507 -141.207413578 -99.0027766208 -52.7998056365 -2.59850062468 51.6011384146 109.799111481 171.995418576 238.190059697 308.383034847 382.574344023 1429.01943635 1311.2907122 1197.56032209 1087.828266 982.09454394 880.359155907 782.622101902 688.883381924 599.142995974 513.400944051 431.657226156 353.911842288 280.164792448 210.416076635 144.665694849 82.9136470915 25.1599333612 -28.5954463417 -78.3524920172 -124.111203665 -165.871581286 -203.633624878 -237.397334444 -267.162709982 -292.929751492 -314.698458975 -332.468832431 -346.240871859 -356.014577259 -361.789948632 -363.566985978 -361.345689296 -355.126058587 -344.90809385 -330.691795085 -312.477162293 -290.264195474 -264.052894627 -233.843259753 -199.635290851 -161.428987922 -119.224350965 -73.0213799805 -22.8200749687 31.3795640706 89.5775371374 151.773844232 217.968485353 288.161460503 362.352769679 1412.80952381 1295.08079967 1181.35040955 1071.61835346 965.884631404 864.149243371 766.412189366 672.673469388 582.933083437 497.191031515 415.447313619 337.701929752 263.954879911 194.206164098 128.455782313 66.7037345551 8.9500208247 -44.8053588782 -94.5624045536 -140.321116202 -182.081493822 -219.843537415 -253.60724698 -283.372622518 -309.139664029 -330.908371512 -348.678744967 -362.450784395 -372.224489796 -377.999861169 -379.776898514 -377.555601833 -371.335971123 -361.118006386 -346.901707622 -328.68707483 -306.474108011 -280.262807164 -250.053172289 -215.845203387 -177.638900458 -135.434263501 -89.231292517 -39.0299875052 15.1696515341 73.3676246009 135.563931695 201.758572817 271.951547966 346.142857143 1400.61127308 1282.88254894 1169.15215882 1059.42010274 953.686380675 851.950992642 754.213938637 660.475218659 570.734832709 484.992780786 403.24906289 325.503679023 251.756629182 182.007913369 116.257531584 54.5054838262 -3.24822990418 -57.0036096071 -106.760655282 -152.51936693 -194.279744551 -232.041788144 -265.805497709 -295.570873247 -321.337914758 -343.106622241 -360.876995696 -374.649035124 -384.422740525 -390.198111898 -391.975149243 -389.753852561 -383.534221852 -373.316257115 -359.099958351 -340.885325559 -318.672358739 -292.461057893 -262.251423018 -228.043454116 -189.837151187 -147.63251423 -101.429543246 -51.228238234 2.97140080525 61.169373872 123.365680966 189.560322088 259.753297237 333.944606414 1392.42468416 1274.69596002 1160.9655699 1051.23351381 945.499791753 843.764403721 746.027349715 652.288629738 562.548243787 476.806191865 395.062473969 317.317090101 243.570040261 173.821324448 108.070942663 46.3188949049 -11.4348188255 -65.1901985284 -114.947244204 -160.705955852 -202.466333472 -240.228377065 -273.992086631 -303.757462169 -329.524503679 -351.293211162 -369.063584618 -382.835624046 -392.609329446 -398.384700819 -400.161738165 -397.940441483 -391.720810773 -381.502846036 -367.286547272 -349.07191448 -326.858947661 -300.647646814 -270.438011939 -236.230043038 -198.023740108 -155.819103151 -109.616132167 -59.4148271553 -5.21518811605 52.9827849507 115.179092045 181.373733167 251.566708316 325.758017493 1388.24975705 1270.5210329 1156.79064279 1047.0585867 941.32486464 839.589476607 741.852422602 648.113702624 558.373316674 472.631264751 390.887546855 313.142162988 239.395113147 169.646397334 103.896015549 42.1439677912 -15.6097459392 -69.3651256421 -119.122171318 -164.880882965 -206.641260586 -244.403304179 -278.167013744 -307.932389282 -333.699430793 -355.468138276 -373.238511731 -387.010551159 -396.78425656 -402.559627933 -404.336665278 -402.115368596 -395.895737887 -385.67777315 -371.461474386 -353.246841594 -331.033874774 -304.822573928 -274.612939053 -240.404970151 -202.198667222 -159.994030265 -113.791059281 -63.589754269 -9.39011522976 48.807857837 111.004164931 177.198806053 247.391781202 321.583090379 1388.08649174 1270.3577676 1156.62737748 1046.89532139 941.161599334 839.426211301 741.689157296 647.950437318 558.210051367 472.467999445 390.724281549 312.978897682 239.231847841 169.483132028 103.732750243 41.9807024851 -15.7730112453 -69.5283909482 -119.285436624 -165.044148272 -206.804525892 -244.566569485 -278.33027905 -308.095654588 -333.862696099 -355.631403582 -373.401777037 -387.173816465 -396.947521866 -402.722893239 -404.499930584 -402.278633903 -396.059003193 -385.841038456 -371.624739692 -353.4101069 -331.197140081 -304.985839234 -274.776204359 -240.568235457 -202.361932528 -160.157295571 -113.954324587 -63.7530195752 -9.55338053589 48.6445925309 110.840899625 177.035540747 247.228515896 321.419825073 1391.93488824 1274.2061641 1160.47577398 1050.7437179 945.009995835 843.274607802 745.537553797 651.798833819 562.058447869 476.316395946 394.572678051 316.827294183 243.080244343 173.33152853 107.581146744 45.8290989865 -11.9246147439 -65.6799944468 -115.437040122 -161.19575177 -202.956129391 -240.718172983 -274.481882549 -304.247258087 -330.014299597 -351.78300708 -369.553380536 -383.325419964 -393.099125364 -398.874496737 -400.651534083 -398.430237401 -392.210606692 -381.992641955 -367.77634319 -349.561710398 -327.348743579 -301.137442732 -270.927807858 -236.719838956 -198.513536027 -156.30889907 -110.105928086 -59.9046230737 -5.70498403445 52.4929890323 114.689296127 180.883937248 251.076912398 325.268221574 1399.79494655 1282.06622241 1168.33583229 1058.6037762 952.870054144 851.134666111 753.397612106 659.658892128 569.918506178 484.176454255 402.43273636 324.687352492 250.940302652 181.191586839 115.441205053 53.6891572955 -4.06455643485 -57.8199361377 -107.576981813 -153.335693461 -195.096071082 -232.858114674 -266.62182424 -296.387199778 -322.154241288 -343.922948771 -361.693322227 -375.465361655 -385.239067055 -391.014438428 -392.791475774 -390.570179092 -384.350548383 -374.132583646 -359.916284881 -341.701652089 -319.48868527 -293.277384423 -263.067749549 -228.859780647 -190.653477718 -148.448840761 -102.245869777 -52.0445647647 2.15507427458 60.3530473414 122.549354436 188.743995557 258.936970707 333.128279883 1411.66666667 1293.93794252 1180.20755241 1070.47549632 964.741774261 863.006386228 765.269332223 671.530612245 581.790226295 496.048174372 414.304456476 336.559072609 262.812022768 193.063306955 127.31292517 65.5608774121 7.80716368176 -45.9482160211 -95.7052616966 -141.463973344 -183.224350965 -220.986394558 -254.750104123 -284.515479661 -310.282521172 -332.051228655 -349.82160211 -363.593641538 -373.367346939 -379.142718312 -380.919755657 -378.698458975 -372.478828266 -362.260863529 -348.044564765 -329.829931973 -307.616965153 -281.405664307 -251.196029432 -216.98806053 -178.781757601 -136.577120644 -90.3741496599 -40.1728446481 14.0267943912 72.224767458 134.421074552 200.615715674 270.808690823 345.0 1427.55004859 1309.82132445 1196.09093433 1086.35887825 980.625156185 878.889768152 781.152714147 687.413994169 597.673608219 511.931556296 430.187838401 352.442454533 278.695404692 208.94668888 143.196307094 81.4442593363 23.6905456059 -30.064834097 -79.8218797724 -125.58059142 -167.340969041 -205.103012634 -238.866722199 -268.632097737 -294.399139248 -316.167846731 -333.938220186 -347.710259614 -357.483965015 -363.259336388 -365.036373733 -362.815077051 -356.595446342 -346.377481605 -332.161182841 -313.946550049 -291.733583229 -265.522282382 -235.312647508 -201.104678606 -162.898375677 -120.69373872 -74.4907677357 -24.2894627239 29.9101763154 88.1081493821 150.304456476 216.499097598 286.692072747 360.883381924 1447.44509232 1329.71636818 1215.98597806 1106.25392198 1000.52019992 898.784811884 801.047757879 707.309037901 617.568651951 531.826600028 450.082882132 372.337498265 298.590448424 228.841732611 163.091350826 101.339303068 43.5855893377 -10.1697903652 -59.9268360406 -105.685547689 -147.445925309 -185.207968902 -218.971678467 -248.737054005 -274.504095516 -296.272802999 -314.043176454 -327.815215882 -337.588921283 -343.364292656 -345.141330001 -342.92003332 -336.70040261 -326.482437873 -312.266139109 -294.051506317 -271.838539497 -245.627238651 -215.417603776 -181.209634874 -143.003331945 -100.798694988 -54.595724004 -4.39441899215 49.8052200471 108.003193114 170.199500208 236.39414133 306.587116479 380.778425656 1471.35179786 1353.62307372 1239.8926836 1130.16062752 1024.42690546 922.691517423 824.954463418 731.21574344 641.47535749 555.733305567 473.989587672 396.244203804 322.497153964 252.748438151 186.998056365 125.246008607 67.4922948771 13.7369151742 -36.0201305013 -81.7788421492 -123.53921977 -161.301263363 -195.064972928 -224.830348466 -250.597389976 -272.366097459 -290.136470915 -303.908510343 -313.682215744 -319.457587117 -321.234624462 -319.01332778 -312.793697071 -302.575732334 -288.359433569 -270.144800778 -247.931833958 -221.720533111 -191.510898237 -157.302929335 -119.096626406 -76.8919894489 -30.6890184646 19.5122865472 73.7119255865 131.909898653 194.106205748 260.300846869 330.493822019 404.685131195 1499.27016521 1381.54144107 1267.81105095 1158.07899486 1052.3452728 950.60988477 852.872830765 759.134110787 669.393724837 583.651672914 501.907955019 424.162571151 350.41552131 280.666805498 214.916423712 153.164375954 95.410662224 41.6552825211 -8.10176315433 -53.8604748023 -95.6208524227 -133.382896016 -167.146605581 -196.911981119 -222.67902263 -244.447730113 -262.218103568 -275.990142996 -285.763848397 -291.53921977 -293.316257115 -291.094960433 -284.875329724 -274.657364987 -260.441066222 -242.226433431 -220.013466611 -193.802165764 -163.59253089 -129.384561988 -91.1782590588 -48.973622102 -2.77065111768 47.4306538941 101.630292933 159.828266 222.024573094 288.219214216 358.412189365 432.603498542 1531.20019436 1413.47147022 1299.74108011 1190.00902402 1084.27530196 982.539913925 884.802859919 791.064139942 701.323753991 615.581702068 533.837984173 456.092600305 382.345550465 312.596834652 246.846452867 185.094405109 127.340691378 73.5853116756 23.8282660002 -21.9304456477 -63.6908232682 -101.452866861 -135.216576427 -164.981951965 -190.748993475 -212.517700958 -230.288074414 -244.060113842 -253.833819242 -259.609190615 -261.386227961 -259.164931279 -252.945300569 -242.727335832 -228.511037068 -210.296404276 -188.083437457 -161.87213661 -131.662501735 -97.4545328336 -59.2482299043 -17.0435929475 29.1593780368 79.3606830486 133.560322088 191.758295155 253.954602249 320.149243371 390.34221852 464.533527697 1567.14188533 1449.41316118 1335.68277107 1225.95071498 1120.21699292 1018.48160489 920.744550881 827.005830904 737.265444953 651.523393031 569.779675135 492.034291267 418.287241427 348.538525614 282.788143829 221.036096071 163.282382341 109.527002638 59.7699569623 14.0112453143 -27.7491323061 -65.511175899 -99.2748854645 -129.040261002 -154.807302513 -176.576009996 -194.346383451 -208.118422879 -217.89212828 -223.667499653 -225.444536999 -223.223240317 -217.003609607 -206.78564487 -192.569346106 -174.354713314 -152.141746495 -125.930445648 -95.7208107734 -61.5128418716 -23.3065389422 18.8980980146 65.1010689989 115.302374011 169.50201305 227.699986117 289.896293211 356.090934333 426.283909482 500.475218659 1607.0952381 1489.36651395 1375.63612384 1265.90406775 1160.17034569 1058.43495766 960.697903651 866.959183673 777.218797723 691.4767458 609.733027905 531.987644037 458.240594197 388.491878384 322.741496599 260.989448841 203.23573511 149.480355407 99.7233097319 53.964598084 12.2042204636 -25.5578231294 -59.3215326948 -89.0869082328 -114.853949743 -136.622657226 -154.393030682 -168.16507011 -177.93877551 -183.714146883 -185.491184229 -183.269887547 -177.050256838 -166.832292101 -152.615993336 -134.401360544 -112.188393725 -85.9770928781 -55.7674580037 -21.5594891019 16.6468138274 58.8514507843 105.054421769 155.25572678 209.45536582 267.653338886 329.849645981 396.044287102 466.237262252 540.428571428 1651.06025267 1533.33152853 1419.60113841 1309.86908233 1204.13536027 1102.39997223 1004.66291823 910.924198251 821.1838123 735.441760377 653.698042482 575.952658614 502.205608774 432.456892961 366.706511176 304.954463418 247.200749687 193.445369985 143.688324309 97.9296126613 56.1692350408 18.4071914479 -15.3565181176 -45.1218936556 -70.888935166 -92.657642649 -110.428016105 -124.200055533 -133.973760933 -139.749132306 -141.526169652 -139.30487297 -133.08524226 -122.867277523 -108.650978759 -90.4363459671 -68.2233791477 -42.0120783008 -11.8024434265 22.4055254754 60.6118284047 102.816465362 149.019436346 199.220741358 253.420380397 311.618353464 373.814660558 440.00930168 510.202276829 584.393586006 1699.03692906 1581.30820491 1467.5778148 1357.84575871 1252.11203665 1150.37664862 1052.63959461 958.900874635 869.160488685 783.418436762 701.674718867 623.929334999 550.182285159 480.433569346 414.683187561 352.931139803 295.177426072 241.422046369 191.665000694 145.906289046 104.145911426 66.3838678327 32.6201582672 2.85478272927 -22.9122587812 -44.6809662642 -62.4513397197 -76.2233791477 -85.9970845483 -91.7724559213 -93.5494932668 -91.3281965849 -85.1085658755 -74.8906011386 -60.6743023742 -42.4596695823 -20.2467027629 5.96459808398 36.1742329583 70.3822018602 108.58850479 150.793141746 196.996112731 247.197417742 301.397056782 359.595029849 421.791336943 487.985978065 558.178953214 632.370262391 1751.02526725 1633.29654311 1519.56615299 1409.8340969 1304.10037484 1202.36498681 1104.62793281 1010.88921283 921.148826878 835.406774955 753.663057059 675.917673192 602.170623351 532.421907538 466.671525753 404.919477995 347.165764265 293.410384562 243.653338886 197.894627238 156.134249618 118.372206025 84.6084964596 54.8431209217 29.0760794112 7.3073719282 -10.4630015273 -24.2350409553 -34.0087463558 -39.7841177289 -41.5611550744 -39.3398583925 -33.1202276831 -22.9022629462 -8.68596418175 9.52866861014 31.7416354295 57.9529362764 88.1625711508 122.370540053 160.576842982 202.781479939 248.984450923 299.185755935 353.385394974 411.583368041 473.779675135 539.974316257 610.167291406 684.358600583 1807.02526725 1689.29654311 1575.56615299 1465.8340969 1360.10037484 1258.36498681 1160.62793281 1066.88921283 977.148826878 891.406774955 809.663057059 731.917673192 658.170623351 588.421907538 522.671525753 460.919477995 403.165764265 349.410384562 299.653338886 253.894627238 212.134249618 174.372206025 140.60849646 110.843120922 85.0760794112 63.3073719282 45.5369984727 31.7649590447 21.9912536441 16.2158822711 14.4388449256 16.6601416075 22.8797723169 33.0977370538 47.3140358182 65.5286686101 87.7416354295 113.952936276 144.162571151 178.370540053 216.576842982 258.781479939 304.984450923 355.185755935 409.385394974 467.583368041 529.779675135 595.974316257 666.167291406 740.358600583 1867.03692906 1749.30820491 1635.5778148 1525.84575871 1420.11203665 1318.37664862 1220.63959461 1126.90087464 1037.16048869 951.418436762 869.674718867 791.929334999 718.182285159 648.433569346 582.683187561 520.931139803 463.177426072 409.422046369 359.665000694 313.906289046 272.145911426 234.383867833 200.620158267 170.854782729 145.087741219 123.319033736 105.54866028 91.7766208522 82.0029154517 76.2275440787 74.4505067331 76.6718034151 82.8914341245 93.1093988614 107.325697626 125.540330418 147.753297237 173.964598084 204.174232958 238.38220186 276.588504789 318.793141746 364.996112731 415.197417742 469.397056782 527.595029848 589.791336943 655.985978065 726.178953214 800.37026239 1931.06025267 1813.33152853 1699.60113841 1589.86908233 1484.13536027 1382.39997223 1284.66291823 1190.92419825 1101.1838123 1015.44176038 933.698042482 855.952658614 782.205608774 712.456892961 646.706511176 584.954463418 527.200749687 473.445369985 423.688324309 377.929612661 336.169235041 298.407191448 264.643481882 234.878106344 209.111064834 187.342357351 169.571983895 155.799944467 146.026239067 140.250867694 138.473830348 140.69512703 146.91475774 157.132722477 171.349021241 189.563654033 211.776620852 237.987921699 268.197556573 302.405525475 340.611828405 382.816465361 429.019436346 479.220741358 533.420380397 591.618353464 653.814660558 720.00930168 790.202276829 864.393586006 1999.0952381 1881.36651395 1767.63612384 1657.90406775 1552.17034569 1450.43495766 1352.69790365 1258.95918367 1169.21879772 1083.4767458 1001.7330279 923.987644037 850.240594197 780.491878384 714.741496598 652.989448841 595.23573511 541.480355407 491.723309732 445.964598084 404.204220463 366.442176871 332.678467305 302.913091767 277.146050257 255.377342774 237.606969318 223.83492989 214.06122449 208.285853117 206.508815771 208.730112453 214.949743162 225.167707899 239.384006664 257.598639456 279.811606275 306.022907122 336.232541996 370.440510898 408.646813827 450.851450784 497.054421769 547.25572678 601.45536582 659.653338886 721.849645981 788.044287102 858.237262252 932.428571428 2071.14188533 1953.41316118 1839.68277107 1729.95071498 1624.21699292 1522.48160489 1424.74455088 1331.0058309 1241.26544495 1155.52339303 1073.77967514 996.034291267 922.287241427 852.538525614 786.788143829 725.036096071 667.28238234 613.527002638 563.769956962 518.011245314 476.250867694 438.488824101 404.725114535 374.959738997 349.192697487 327.423990004 309.653616548 295.88157712 286.10787172 280.332500347 278.555463001 280.776759683 286.996390393 297.21435513 311.430653894 329.645286686 351.858253505 378.069554352 408.279189226 442.487158128 480.693461058 522.898098014 569.101068999 619.302374011 673.50201305 731.699986117 793.896293211 860.090934333 930.283909482 1004.47521866 2147.20019436 2029.47147022 1915.74108011 1806.00902402 1700.27530196 1598.53991392 1500.80285992 1407.06413994 1317.32375399 1231.58170207 1149.83798417 1072.09260031 998.345550465 928.596834652 862.846452867 801.094405109 743.340691378 689.585311675 639.828266 594.069554352 552.309176732 514.547133139 480.783423573 451.018048035 425.251006525 403.482299042 385.711925586 371.939886158 362.166180758 356.390809385 354.613772039 356.835068721 363.054699431 373.272664167 387.488962932 405.703595724 427.916562543 454.12786339 484.337498264 518.545467166 556.751770096 598.956407052 645.159378037 695.360683048 749.560322088 807.758295155 869.954602249 936.149243371 1006.34221852 1080.5335277 2227.27016521 2109.54144107 1995.81105095 1886.07899486 1780.3452728 1678.60988477 1580.87283076 1487.13411079 1397.39372484 1311.65167291 1229.90795502 1152.16257115 1078.41552131 1008.6668055 942.916423712 881.164375954 823.410662224 769.655282521 719.898236846 674.139525198 632.379147577 594.617103984 560.853394419 531.088018881 505.32097737 483.552269887 465.781896432 452.009857004 442.236151603 436.46078023 434.683742885 436.905039567 443.124670276 453.342635013 467.558933777 485.773566569 507.986533389 534.197834235 564.40746911 598.615438012 636.821740941 679.026377898 725.229348882 775.430653894 829.630292933 887.828266 950.024573094 1016.21921422 1086.41218937 1160.60349854 2311.35179786 2193.62307372 2079.8926836 1970.16062752 1864.42690546 1762.69151742 1664.95446342 1571.21574344 1481.47535749 1395.73330557 1313.98958767 1236.2442038 1162.49715396 1092.74843815 1026.99805637 965.246008607 907.492294877 853.736915174 803.979869499 758.221157851 716.46078023 678.698736637 644.935027072 615.169651534 589.402610023 567.63390254 549.863529085 536.091489657 526.317784256 520.542412883 518.765375538 520.98667222 527.206302929 537.424267666 551.64056643 569.855199222 592.068166042 618.279466889 648.489101763 682.697070665 720.903373594 763.108010551 809.310981535 859.512286547 913.711925586 971.909898653 1034.10620575 1100.30084687 1170.49382202 1244.6851312 2399.44509232 2281.71636818 2167.98597806 2058.25392198 1952.52019992 1850.78481188 1753.04775788 1659.3090379 1569.56865195 1483.82660003 1402.08288213 1324.33749826 1250.59044842 1180.84173261 1115.09135083 1053.33930307 995.585589338 941.830209635 892.073163959 846.314452311 804.554074691 766.792031098 733.028321532 703.262945994 677.495904484 655.727197001 637.956823545 624.184784117 614.411078717 608.635707344 606.858669998 609.07996668 615.29959739 625.517562127 639.733860891 657.948493683 680.161460502 706.372761349 736.582396224 770.790365125 808.996668055 851.201305012 897.404275996 947.605581008 1001.80522005 1060.00319311 1122.19950021 1188.39414133 1258.58711648 1332.77842566 2491.55004859 2373.82132445 2260.09093433 2150.35887824 2044.62515618 1942.88976815 1845.15271415 1751.41399417 1661.67360822 1575.9315563 1494.1878384 1416.44245453 1342.69540469 1272.94668888 1207.19630709 1145.44425934 1087.69054561 1033.9351659 984.178120227 938.419408579 896.659030959 858.896987366 825.133277801 795.367902263 769.600860752 747.832153269 730.061779814 716.289740386 706.516034985 700.740663612 698.963626267 701.184922948 707.404553658 717.622518395 731.838817159 750.053449951 772.266416771 798.477717617 828.687352492 862.895321394 901.101624323 943.30626128 989.509232264 1039.71053728 1093.91017632 1152.10814938 1214.30445648 1280.4990976 1350.69207275 1424.88338192 2587.66666667 2469.93794252 2356.20755241 2246.47549632 2140.74177426 2039.00638623 1941.26933222 1847.53061224 1757.79022629 1672.04817437 1590.30445648 1512.55907261 1438.81202277 1369.06330696 1303.31292517 1241.56087741 1183.80716368 1130.05178398 1080.2947383 1034.53602666 992.775649035 955.013605442 921.249895876 891.484520338 865.717478828 843.948771345 826.178397889 812.406358461 802.632653061 796.857281688 795.080244342 797.301541024 803.521171734 813.739136471 827.955435235 846.170068027 868.383034846 894.594335693 924.803970568 959.011939469 997.218242399 1039.42287936 1085.62585034 1135.82715535 1190.02679439 1248.22476746 1310.42107455 1376.61571567 1446.80869082 1521.0</values></component></field></output></run>
Index: /tags/1.6.0/examples/uq/rosenbrock/rosen.py
===================================================================
--- /tags/1.6.0/examples/uq/rosenbrock/rosen.py	(revision 6168)
+++ /tags/1.6.0/examples/uq/rosenbrock/rosen.py	(revision 6168)
@@ -0,0 +1,29 @@
+# ----------------------------------------------------------------------
+#  MAIN PROGRAM - generated by the Rappture Builder
+# ----------------------------------------------------------------------
+import Rappture
+import sys
+
+# open the XML file containing the run parameters
+io = Rappture.PyXml(sys.argv[1])
+
+#########################################################
+# Get input values from Rappture
+#########################################################
+
+# get input value for input.number(x)
+x = float(io['input.number(x).current'].value)
+
+# get input value for input.number(y)
+y = float(io['input.number(y).current'].value)
+
+#########################################################
+# Save output values back to Rappture
+#########################################################
+
+z = 100*(y-x**2)**2 + (1-x)**2
+
+# save output value for output.number(z)
+io['output.number(z).current'] = z
+
+io.close()
Index: /tags/1.6.0/examples/uq/rosenbrock/tool.xml
===================================================================
--- /tags/1.6.0/examples/uq/rosenbrock/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/uq/rosenbrock/tool.xml	(revision 6168)
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>Rosenbrock Function for testing Uncertainty Quantification</title>
+        <about>This tool is for testing and demonstrating the hub's UQ code and Response Surfaces</about>
+        <command>python @tool/rosen.py @driver</command>
+        <layout>wizard</layout>
+        <uq>yes</uq>
+    </tool>
+    <input>
+        <note>
+            <contents> file:///desc.html</contents>
+        </note>
+        <number id="x">
+            <about>
+                <label>X</label>
+                <description>X variable</description>
+            </about>
+            <default>uniform -2 2</default>
+            <uq>yes</uq>
+        </number>
+        <number id="y">
+            <about>
+                <label>Y</label>
+                <description>Y variable</description>
+            </about>
+            <default>uniform -2 2</default>
+            <uq>yes</uq>
+        </number>
+    </input>
+    <output>
+        <number id="z">
+            <about>
+                <label>Result</label>
+                <description>The result of evaluating the function at x and y.</description>
+            </about>
+        </number>
+    </output>
+</run>
Index: /tags/1.6.0/examples/uq/simple/simple.py
===================================================================
--- /tags/1.6.0/examples/uq/simple/simple.py	(revision 6168)
+++ /tags/1.6.0/examples/uq/simple/simple.py	(revision 6168)
@@ -0,0 +1,40 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Simple UQ Example of Curve Output
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+import numpy as np
+
+# uncomment these for debugging
+# sys.stderr = open('tool.err', 'w')
+# sys.stdout = open('tool.out', 'w')
+
+rx = Rappture.PyXml(sys.argv[1])
+
+vsweep = rx['input.(vsweep).current'].value
+vsweep = float(Rappture.Units.convert(vsweep, to='V', units='off'))
+
+# get 200 values between 0 and 10
+xvals = np.linspace(0, 10, 200)
+
+
+# our function for the curve
+def f(x, v):
+    return .1*x*x - (5 - v)**2
+
+# evaluate our equation at the xvals
+yvals = f(xvals, vsweep)
+
+# save output as a curve
+#rx['output.curve(f).about.label'] = 'Plot of f(x)'
+rx['output.curve(f).component.xy'] = (xvals, yvals)
+
+
+rx.close()
Index: /tags/1.6.0/examples/uq/simple/tool.xml
===================================================================
--- /tags/1.6.0/examples/uq/simple/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/uq/simple/tool.xml	(revision 6168)
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>number</title>
+  <about>Example of UQ on a Curve.</about>
+  <command>
+    python @tool/simple.py @driver
+  </command>
+  <uq>true</uq>
+</tool>
+<input>
+  <number id="vsweep">
+    <about>
+      <label>Voltage Sweep +/-</label>
+      <description>This determines the voltage sweep used to obtain results from the model.</description>
+      <icon>
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==
+      </icon>
+    </about>
+    <units>V</units>
+    <min>0V</min>
+    <max>10V</max>
+    <default>4V</default>
+    <color>purple</color>
+  </number>
+</input>
+</run>
Index: /tags/1.6.0/examples/video/chooser/chooserdemo.tcl
===================================================================
--- /tags/1.6.0/examples/video/chooser/chooserdemo.tcl	(revision 6168)
+++ /tags/1.6.0/examples/video/chooser/chooserdemo.tcl	(revision 6168)
@@ -0,0 +1,21 @@
+#!/usr/bin/env sh
+#\
+exec wish "$0" $*
+
+package require RapptureGUI
+
+set videoFiles [list \
+    "/home/derrick/projects/piv/video/TOPHAT_06-03-10_16-05-55.mp4" \
+    "/home/derrick/projects/piv/video/TOPHAT_06-03-10_16-09-56.mp4" \
+    "/home/derrick/projects/piv/video/TOPHAT_06-03-10_16-13-56.mp4" \
+    "/home/derrick/junk/coa360download56Kbps240x160.mpg" \
+]
+
+
+frame .f
+pack .f -expand yes -fill both
+
+set vc [Rappture::VideoChooser .f.vc]
+$vc load $videoFiles
+
+pack .f.vc -expand yes -fill both
Index: /tags/1.6.0/examples/video/chooser/chooserinfodemo.tcl
===================================================================
--- /tags/1.6.0/examples/video/chooser/chooserinfodemo.tcl	(revision 6168)
+++ /tags/1.6.0/examples/video/chooser/chooserinfodemo.tcl	(revision 6168)
@@ -0,0 +1,23 @@
+#!/usr/bin/env sh
+#\
+exec wish "$0" $*
+
+package require RapptureGUI
+
+array set videoFiles [list \
+    1 "/home/derrick/projects/piv/video/TOPHAT_06-03-10_16-05-55.mp4" \
+    2 "/home/derrick/projects/piv/video/TOPHAT_06-03-10_16-09-56.mp4" \
+    3 "/home/derrick/projects/piv/video/TOPHAT_06-03-10_16-13-56.mp4" \
+    4 "/home/derrick/junk/coa360download56Kbps240x160.mpg" \
+]
+
+
+frame .f
+pack .f -expand yes -fill both
+
+foreach k [array names videoFiles] {
+    set ci [Rappture::VideoChooserInfo .f.ci$k]
+    $ci load $videoFiles($k) ""
+    pack $ci -expand yes -fill both -side right
+}
+
Index: /tags/1.6.0/examples/video/dial/dialdemo.tcl
===================================================================
--- /tags/1.6.0/examples/video/dial/dialdemo.tcl	(revision 6168)
+++ /tags/1.6.0/examples/video/dial/dialdemo.tcl	(revision 6168)
@@ -0,0 +1,79 @@
+#!/usr/bin/env sh
+#\
+exec wish "$0" $*
+
+package require RapptureGUI
+
+set w 0
+set t 0
+set min 0
+set max 7800
+
+frame .f
+pack .f -expand yes -fill both
+
+Rappture::Flowdial .f.d1 \
+    -length 10 \
+    -valuewidth 0 \
+    -valuepadding 0 \
+    -padding 6 \
+    -linecolor "" \
+    -activelinecolor "" \
+    -min $min \
+    -max $max \
+    -variable w \
+    -knobimage [Rappture::icon knob2] \
+    -knobposition center@middle
+
+Rappture::Videodial .f.d3 \
+    -length 10 \
+    -valuewidth 0 \
+    -valuepadding 0 \
+    -padding 6 \
+    -linecolor "" \
+    -activelinecolor "red" \
+    -min $min\
+    -max $max \
+    -minortick 1 \
+    -majortick 5 \
+    -knobimage "" \
+    -knobposition ne@bottom
+
+#pack .f.d1 -expand yes -fill both
+pack .f.d3 -expand yes -fill both
+
+after 200 {
+    update idletasks
+#    .f.d3 mark add loopstart 5
+#    .f.d3 mark add loopend 10
+    .f.d3 mark add particle0 17
+    .f.d3 mark add particle1 10
+    .f.d3 mark add particle2 4
+    .f.d3 mark add particle3 54
+    .f.d3 mark add particle2 33
+    .f.d3 mark add particle1000 1000
+    .f.d3 mark add particle1100 1100
+    .f.d3 mark add particle1200 1200
+    .f.d3 mark add particle1300 1300
+    .f.d3 mark add particle1400 1400
+    .f.d3 mark add particle1500 1500
+    .f.d3 mark add particle1600 1600
+    .f.d3 mark add particle1700 1700
+    .f.d3 mark add particle1800 1800
+    .f.d3 mark add particle1900 1900
+    .f.d3 mark add particle2000 2000
+    .f.d3 mark add arrow 17
+#    .f.d3 bball
+}
+
+
+set t 6000
+#after idle play
+proc play {} {
+    global t min max
+    if {($t+1) < 7000} {
+        incr t
+        .f.d3 current $t
+        after 8 play
+    }
+}
Index: /tags/1.6.0/examples/video/dial/dialdemo2.tcl
===================================================================
--- /tags/1.6.0/examples/video/dial/dialdemo2.tcl	(revision 6168)
+++ /tags/1.6.0/examples/video/dial/dialdemo2.tcl	(revision 6168)
@@ -0,0 +1,67 @@
+#!/usr/bin/env sh
+#\
+exec wish "$0" $*
+
+package require RapptureGUI
+
+set w 0
+set t 0
+set min 0
+#set max 7800
+set max 100
+
+frame .f
+pack .f -expand yes -fill both
+
+Rappture::Videodial2 .f.d \
+    -padding 1 \
+    -min $min\
+    -max $max \
+    -minortick 1 \
+    -majortick 5
+
+pack .f.d -expand yes -fill both
+
+after 200 {
+    update idletasks
+#    .f.d mark add loopstart 5
+#    .f.d mark add loopend 10
+    .f.d mark add particle0 17
+    .f.d mark add particle1 10
+    .f.d mark add particle2 4
+    .f.d mark add particle3 45
+    .f.d mark add particle2 33
+    .f.d mark add particle1200 20
+    .f.d mark add particle1300 30
+    .f.d mark add particle1400 40
+    .f.d mark add particle1500 50
+    .f.d mark add particle1600 60
+    .f.d mark add particle1700 70
+    .f.d mark add particle1800 80
+    .f.d mark add particle1900 90
+#    .f.d mark add particle1000 1000
+#    .f.d mark add particle1100 1100
+#    .f.d mark add particle1200 1200
+#    .f.d mark add particle1300 1300
+#    .f.d mark add particle1400 1400
+#    .f.d mark add particle1500 1500
+#    .f.d mark add particle1600 1600
+#    .f.d mark add particle1700 1700
+#    .f.d mark add particle1800 1800
+#    .f.d mark add particle1900 1900
+#    .f.d mark add particle2000 2000
+    .f.d mark add arrow 17
+#    .f.d bball
+}
+
+
+set t 6
+#after idle play
+proc play {} {
+    global t min max
+    if {($t+1) <= $max} {
+        incr t
+        .f.d current $t
+        after 100 play
+    }
+}
Index: /tags/1.6.0/examples/video/piv/images/steps.svg
===================================================================
--- /tags/1.6.0/examples/video/piv/images/steps.svg	(revision 6168)
+++ /tags/1.6.0/examples/video/piv/images/steps.svg	(revision 6168)
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="744.09448"
+   height="1052.3622"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       id="g3672">
+      <g
+         id="g3651">
+        <path
+           d="m 110,182.36218 a 20,20 0 1 1 -40,0 20,20 0 1 1 40,0 z"
+           transform="translate(2.020305,-2.020305)"
+           id="path2830"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+        <text
+           x="80"
+           y="192.36218"
+           id="text2816"
+           xml:space="preserve"
+           style="font-size:40px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Courier 10 Pitch;-inkscape-font-specification:Bitstream Charter Italic"><tspan
+             x="80"
+             y="192.36218"
+             id="tspan2818">1</tspan></text>
+        <text
+           x="120"
+           y="192.36218"
+           id="text3635"
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Courier 10 Pitch;-inkscape-font-specification:Bitstream Charter"><tspan
+             x="120"
+             y="192.36218"
+             id="tspan3637">Choose Video</tspan></text>
+      </g>
+    </g>
+    <text
+       x="138.3909"
+       y="276.56503"
+       id="text3639"
+       xml:space="preserve"
+       style="font-size:40px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Courier 10 Pitch;-inkscape-font-specification:Bitstream Charter Italic"><tspan
+         x="138.3909"
+         y="276.56503"
+         id="tspan3641" /></text>
+    <g
+       id="g3680">
+      <g
+         id="g3658">
+        <path
+           d="m 110,182.36218 a 20,20 0 1 1 -40,0 20,20 0 1 1 40,0 z"
+           transform="translate(1.0101525,78.989847)"
+           id="path2830-4"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+        <text
+           x="80"
+           y="272.36218"
+           id="text2820"
+           xml:space="preserve"
+           style="font-size:40px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Courier 10 Pitch;-inkscape-font-specification:Bitstream Charter Italic"><tspan
+             x="80"
+             y="272.36218"
+             id="tspan2822">2</tspan></text>
+        <text
+           x="120"
+           y="272.36218"
+           id="text3643"
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Courier 10 Pitch;-inkscape-font-specification:Bitstream Charter"><tspan
+             x="120"
+             y="272.36218"
+             id="tspan3645">Preview</tspan></text>
+      </g>
+    </g>
+    <g
+       id="g3688">
+      <g
+         id="g3665">
+        <path
+           d="m 110,182.36218 a 20,20 0 1 1 -40,0 20,20 0 1 1 40,0 z"
+           transform="translate(1.0101525,158.98985)"
+           id="path2830-8"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+        <text
+           x="80"
+           y="352.36218"
+           id="text2824"
+           xml:space="preserve"
+           style="font-size:40px;font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Courier 10 Pitch;-inkscape-font-specification:Bitstream Charter Italic"><tspan
+             x="80"
+             y="352.36218"
+             id="tspan2826">3</tspan></text>
+        <text
+           x="120"
+           y="352.36218"
+           id="text3647"
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Courier 10 Pitch;-inkscape-font-specification:Bitstream Charter"><tspan
+             x="120"
+             y="352.36218"
+             id="tspan3649">Mark Particles</tspan></text>
+      </g>
+    </g>
+  </g>
+</svg>
Index: /tags/1.6.0/examples/video/piv/intro.html
===================================================================
--- /tags/1.6.0/examples/video/piv/intro.html	(revision 6168)
+++ /tags/1.6.0/examples/video/piv/intro.html	(revision 6168)
@@ -0,0 +1,39 @@
+<html>
+    <body>
+        <center>
+            <h1>ParticleVE</h1>
+            <h2>a particle tracking velocimetry tool</h2>
+        </center>
+        <p>
+            Track particles in videos to calculate an estimate of
+            their velocity.
+        </p>
+
+        <h3>What is Particle Velocity Estimation</h3>
+        <p>
+        <!-- text from wikipedia -->
+Particle tracking velocimetry (PTV) is a velocimetry method, i.e a technique to measure velocity of particles. The name suggests that the particles are tracked, and not only recorded as an image as it is suggested in another form, particle image velocimetry. There are two very different experimental methods:
+
+    * the two dimensional (2D) modification of Particle Image Velocimetry (PIV), in which the flow field is measured in the two-dimensional slice of the flow, illuminated by a laser sheet (a thin plane) and low density of seeded particles allow for the tracking each of them individually for several frames.
+    * the Three-Dimensional Particle tracking velocimetry (3D-PTV) is a distinctive experimental technique, based on multiple camera-system, three-dimensional volume illumination and tracking of flow tracers (i.e. particles) in three-dimensional space by using photogrammetric principles.
+        </p>
+        <h3>Get Started:</h3>
+        <ol>
+            <li>Choose a video to track particles in.</li>
+            <li>Preview the video, searching for interesting frames.</li>
+            <li>Mark particle locations and analyze the frames.</li>
+        </ol>
+        <center>
+            <img src="images/pve_demo_small.png"/>
+        </center>
+
+        <h3>Practical Applications:</h3>
+        <p></p>
+
+        <h3>Learn More:</h3>
+        <ol>
+            <li><a href="http://wikipedia.org/wiki/Particle_tracking_velocimetry">Particle Tracking Velocimetry (PTV)</a></li>
+            <li><a href="http://wikipedia.org/wiki/Particle_image_velocimetry">Particle Image Velocimetry (PIV)</a></li>
+        </ol>
+    </body>
+</html>
Index: /tags/1.6.0/examples/video/piv/piv.tcl
===================================================================
--- /tags/1.6.0/examples/video/piv/piv.tcl	(revision 6168)
+++ /tags/1.6.0/examples/video/piv/piv.tcl	(revision 6168)
@@ -0,0 +1,198 @@
+#!/bin/sh
+#\
+exec wish "$0" $*
+# ----------------------------------------------------------------------
+# wish executes everything from here on...
+
+package require RapptureGUI
+package require BLT
+package require Img
+
+
+option add *font -*-helvetica-medium-r-normal-*-12-*
+option add *background #d9d9d9
+option add *Tooltip.background white
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-18-*
+option add *upload*Label*font -*-helvetica-medium-r-normal-*-12-*
+option add *download*Label*font -*-helvetica-medium-r-normal-*-12-*
+
+switch $tcl_platform(platform) {
+    unix - windows {
+        event add <<PopupMenu>> <ButtonPress-3>
+    }
+    macintosh {
+        event add <<PopupMenu>> <Control-ButtonPress-1>
+    }
+}
+
+# install some Rappture support stuff...
+Rappture::bugreport::install
+Rappture::filexfer::init
+Rappture::grab::init
+
+
+wm title . "particle velocity estimate"
+wm withdraw .
+set width 960
+set height 630
+
+set installdir [file dirname [ \
+                Rappture::utils::expandPath [ \
+                file normalize [info script]]]]
+
+
+
+# ------------------------------------------------------------------
+# Main Window
+# ------------------------------------------------------------------
+
+# create a notebook to hold the different pages
+
+set nb [Rappture::Notebook .nb]
+pack .nb -expand yes -fill both
+
+# ------------------------------------------------------------------
+# About Page
+# ------------------------------------------------------------------
+
+set f [$nb insert end about]
+
+
+
+# html intro page
+
+set intro [frame $f.intro]
+
+Rappture::Scroller $intro.scroller -xscrollmode auto -yscrollmode auto
+pack $intro.scroller -expand yes -fill both
+
+Rappture::HTMLviewer $intro.scroller.html
+$intro.scroller contents $intro.scroller.html
+
+set fid [open "intro.html" r]
+set html [read $fid]
+close $fid
+$intro.scroller.html load $html
+
+
+# verticle divider
+set div [frame $f.div -width 1 -background black]
+
+
+set previewVar ""
+
+# movie chooser
+
+set chooser [frame $f.chooser_f]
+
+set fid [open [file join $installdir images step1.png] r]
+fconfigure $fid -translation binary -encoding binary
+set data [read $fid]
+close $fid
+set imh [image create photo]
+$imh put $data
+label $chooser.step1 -image $imh
+
+set vc [Rappture::VideoChooser $chooser.vc -variable ::previewVar]
+#$vc load [glob "/home/derrick/projects/piv/video/*.mp4"]
+$vc load [glob "/apps/video/*.mp4"]
+
+pack $chooser.step1 -side top -anchor w -pady 8
+pack $vc -side bottom -anchor center
+
+
+
+# movie previewer
+
+set preview [frame $f.preview_f]
+
+set fid [open [file join $installdir images step2.png] r]
+fconfigure $fid -translation binary -encoding binary
+set data [read $fid]
+close $fid
+set imh [image create photo]
+$imh put $data
+label $preview.step2 -image $imh
+
+set vp [Rappture::VideoPreview $preview.preview -variable ::previewVar]
+
+pack $preview.step2 -side top -anchor w -pady 8
+pack $vp -side bottom -anchor center
+
+
+
+# analyze button gets us to the analyze page
+
+set analyze [frame $f.analyze_f]
+
+set fid [open [file join $installdir images step3.png] r]
+fconfigure $fid -translation binary -encoding binary
+set data [read $fid]
+close $fid
+set imh [image create photo]
+$imh put $data
+label $analyze.step3 -image $imh
+
+button $analyze.go \
+    -text "Analyze" \
+    -state disabled \
+    -command {
+        $vp video stop
+        $vs load file $previewVar
+        $vs video seek [$vp query framenum]
+        $nb current next>
+        # FIXME: video loaded into memory twice
+    }
+pack $analyze.step3 -side left -anchor w
+pack $analyze.go -anchor center
+
+proc buttonState {b var args} {
+    upvar #0 $var v
+    set state disabled
+    if {"" != $v} {
+       set state normal
+    }
+    $b configure -state $state
+}
+
+trace add variable previewVar write "buttonState $analyze.go previewVar"
+
+
+set reqwidth [expr round($width/2.0)]
+blt::table $f \
+    0,0 $intro -rowspan 3 -fill both -reqwidth $reqwidth\
+    0,1 $div -rowspan 3 -fill y -pady 8 -padx 8\
+    0,2 $chooser -fill x -padx {0 8}\
+    1,2 $preview -fill x \
+    2,2 $analyze -fill x
+
+blt::table configure $f c0 -resize none
+blt::table configure $f c1 -resize none
+blt::table configure $f c2 -resize none
+# blt::table configure $f r0 -pady 1
+
+# ------------------------------------------------------------------
+# VIDEO PAGE
+# ------------------------------------------------------------------
+
+set f [$nb insert end video]
+set vs [Rappture::VideoScreen $f.viewer -fileopen {
+            $vs video stop
+            $nb current about}]
+pack $vs -expand yes -fill both
+
+
+# ------------------------------------------------------------------
+# SHOW WINDOW
+# ------------------------------------------------------------------
+
+
+$nb current about
+wm geometry . ${width}x${height}
+wm deiconify .
+
+#update idletasks
+#image delete $imh
Index: /tags/1.6.0/examples/zoo/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/Makefile.in	(revision 6168)
@@ -0,0 +1,66 @@
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+INSTALL_DATA	= @INSTALL_DATA@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+examples	= \
+		binary \
+		boolean	\
+		choice \
+		curve \
+		drawing \
+		enable \
+		field \
+		group \
+		histogram \
+		image \
+		integer \
+		integer2 \
+		loader \
+		log \
+		mesh \
+		note \
+		number \
+		number2 \
+		phase \
+		parallelepiped \
+		periodicelement \
+		sequence \
+		string \
+		structure \
+		table  
+
+destdir		= $(prefix)/examples/zoo
+
+.PHONY: all install clean distclean
+
+all: 
+	for i in $(examples) ; do \
+	  $(MAKE) -C $$i all || exit 1; \
+	done
+
+install: 
+	for i in $(examples) ; do \
+	  $(MAKE) -C $$i install || exit 1; \
+	done
+
+clean:
+	for i in $(examples) ; do \
+	  $(MAKE) -C $$i clean || exit 1; \
+	done
+
+distclean: 
+	for i in $(examples) ; do \
+	  $(MAKE) -C $$i distclean || exit 1; \
+	done
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/binary/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/binary/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/binary/Makefile.in	(revision 6168)
@@ -0,0 +1,36 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/tardir.tcl \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/zoo/binary
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/binary/tardir.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/binary/tardir.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/binary/tardir.tcl	(revision 6168)
@@ -0,0 +1,40 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <string> elements -- binary data
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set data [$driver get input.(tarball).current]
+
+set file "tar[pid].tgz"
+set fid [open $file w]
+fconfigure $fid -translation binary -encoding binary
+puts -nonewline $fid $data
+close $fid
+
+set status [catch {exec tar tvzf $file} result]
+file delete -force $file
+
+if {$status != 0} {
+    puts stderr "ERROR: $result"
+    exit 1
+}
+
+$driver put output.string(dir).about.label "Contents"
+$driver put output.string(dir).current $result
+
+$driver put output.string(tarball).about.label "Original Tar File"
+$driver put output.string(tarball).current $data
+$driver put output.string(tarball).filetype ".tgz"
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/binary/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/binary/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/binary/tool.xml	(revision 6168)
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>string</title>
+  <about>Example of using a Rappture &lt;string&gt; object to handle binary data.
+
+Strings are bits of text--ASCII or binary.  When a binary file is loaded, the string object shows some description of the data.  If the string is set to the size of a line (e.g., 40x1), it shows only the file size.  If the string is set to a larger area, it shows a hex dump of the data.
+
+Upload a gzipped tar file.  When you click the Simulate button, the output will show a table of contents.
+  </about>
+  <command>
+    tclsh @tool/tardir.tcl @driver
+  </command>
+</tool>
+<input>
+  <string id="tarball">
+    <about>
+      <label>Tarball</label>
+      <description>Upload a gzipped tar file (Unix-style archive file).</description>
+    </about>
+    <size>binary</size>
+    <default></default>
+  </string>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/boolean/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/boolean/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/boolean/Makefile.in	(revision 6168)
@@ -0,0 +1,38 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/boolean.py \
+		$(srcdir)/boolean.tcl \
+		$(srcdir)/boolean.gif \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/boolean
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/boolean/boolean.py
===================================================================
--- /tags/1.6.0/examples/zoo/boolean/boolean.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/boolean/boolean.py	(revision 6168)
@@ -0,0 +1,38 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <boolean> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+
+# uncomment these for debugging
+# sys.stdout = open('boolean.out', 'w')
+# sys.stderr = open('boolean.err', 'w')
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+choice = rx['input.(iimodel).current'].value
+rx['output.boolean(outb).about.label'] = "Echo of boolean value iimodel"
+rx['output.boolean(outb).current'] = choice
+
+choice1 = rx['input.(iimodel1).current'].value
+rx['output.boolean(outb1).about.label'] = "Echo of boolean value iimodel1"
+rx['output.boolean(outb1).current'] = choice1
+
+choice2 = rx['input.(iimodel2).current'].value
+rx['output.boolean(outb2).about.label'] = "Echo of boolean value iimodel2"
+rx['output.boolean(outb2).current'] = choice2
+
+choice3 = rx['input.(iimodel3).current'].value
+rx['output.boolean(outb3).about.label'] = "Echo of boolean value iimodel3"
+rx['output.boolean(outb3).current'] = choice3
+
+# save the updated XML describing the run...
+rx.close()
Index: /tags/1.6.0/examples/zoo/boolean/boolean.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/boolean/boolean.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/boolean/boolean.tcl	(revision 6168)
@@ -0,0 +1,33 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <boolean> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set choice [$driver get input.(iimodel).current]
+$driver put output.boolean(outb).about.label "Echo of boolean value iimodel"
+$driver put output.boolean(outb).current $choice
+
+set choice1 [$driver get input.(iimodel1).current]
+$driver put output.boolean(outb1).about.label "Echo of boolean value iimodel1"
+$driver put output.boolean(outb1).current $choice1
+
+set choice2 [$driver get input.(iimodel2).current]
+$driver put output.boolean(outb2).about.label "Echo of boolean value iimodel2"
+$driver put output.boolean(outb2).current $choice2
+
+set choice3 [$driver get input.(iimodel3).current]
+$driver put output.boolean(outb3).about.label "Echo of boolean value iimodel3"
+$driver put output.boolean(outb3).current $choice3
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/boolean/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/boolean/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/boolean/test/defaults.xml	(revision 6168)
@@ -0,0 +1,92 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>boolean</title>
+        <about>Example of a Rappture &lt;boolean&gt; object.
+
+Booleans are logical true/false values.
+The description appears in a tooltip when you hover over the boolean control with your mouse.
+
+When you click the Simulate button, the input boolean will be used to generate the output boolean.
+  </about>
+        <command>
+    tclsh @tool/boolean.tcl @driver
+  </command>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <boolean id="iimodel">
+            <about>
+                <label>Impact Ionization Model</label>
+                <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+            </about>
+            <default>on</default>
+            <current>on</current>
+        </boolean>
+        <boolean id="iimodel1">
+            <about>
+                <label>Impact Ionization Model</label>
+                <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+            </about>
+            <default>yes</default>
+            <current>yes</current>
+        </boolean>
+        <boolean id="iimodel2">
+            <about>
+                <label>Impact Ionization Model</label>
+                <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+                <color>purple</color>
+            </about>
+            <default>true</default>
+            <current>true</current>
+        </boolean>
+        <boolean id="iimodel3">
+            <about>
+                <label>Impact Ionization Model</label>
+                <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+                <icon>R0lGODlhGQAZAPAAAP///wAAACH5BAAAAAAALAAAAAAZABkAAAJQhI+py+0dYnByphoZtmDn
+9WGgxl1ieYiGhHyg+1AVBbFtl0IavtbzToJ1Zqjc6wQ0nVDC1Ian4LhUwmorMyn2bpdV0eb8
+aa+02NAzNqvXigIAOw==
+      </icon>
+            </about>
+            <default>1</default>
+            <current>1</current>
+        </boolean>
+    </input>
+    <output>
+        <boolean id="outb">
+            <about>
+                <label>Echo of boolean value iimodel</label>
+            </about>
+            <current>on</current>
+        </boolean>
+        <boolean id="outb1">
+            <about>
+                <label>Echo of boolean value iimodel1</label>
+            </about>
+            <current>yes</current>
+        </boolean>
+        <boolean id="outb2">
+            <about>
+                <label>Echo of boolean value iimodel2</label>
+            </about>
+            <current>true</current>
+        </boolean>
+        <boolean id="outb3">
+            <about>
+                <label>Echo of boolean value iimodel3</label>
+            </about>
+            <current>1</current>
+        </boolean>
+        <time>Tue Dec 09 23:37:29 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/boolean/test/random1.xml
===================================================================
--- /tags/1.6.0/examples/zoo/boolean/test/random1.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/boolean/test/random1.xml	(revision 6168)
@@ -0,0 +1,92 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>boolean</title>
+        <about>Example of a Rappture &lt;boolean&gt; object.
+
+Booleans are logical true/false values.
+The description appears in a tooltip when you hover over the boolean control with your mouse.
+
+When you click the Simulate button, the input boolean will be used to generate the output boolean.
+  </about>
+        <command>
+    tclsh @tool/boolean.tcl @driver
+  </command>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <boolean id="iimodel">
+            <about>
+                <label>Impact Ionization Model</label>
+                <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+            </about>
+            <default>on</default>
+            <current>yes</current>
+        </boolean>
+        <boolean id="iimodel1">
+            <about>
+                <label>Impact Ionization Model</label>
+                <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+            </about>
+            <default>yes</default>
+            <current>yes</current>
+        </boolean>
+        <boolean id="iimodel2">
+            <about>
+                <label>Impact Ionization Model</label>
+                <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+                <color>purple</color>
+            </about>
+            <default>true</default>
+            <current>no</current>
+        </boolean>
+        <boolean id="iimodel3">
+            <about>
+                <label>Impact Ionization Model</label>
+                <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+                <icon>R0lGODlhGQAZAPAAAP///wAAACH5BAAAAAAALAAAAAAZABkAAAJQhI+py+0dYnByphoZtmDn
+9WGgxl1ieYiGhHyg+1AVBbFtl0IavtbzToJ1Zqjc6wQ0nVDC1Ian4LhUwmorMyn2bpdV0eb8
+aa+02NAzNqvXigIAOw==
+      </icon>
+            </about>
+            <default>1</default>
+            <current>yes</current>
+        </boolean>
+    </input>
+    <output>
+        <boolean id="outb">
+            <about>
+                <label>Echo of boolean value iimodel</label>
+            </about>
+            <current>yes</current>
+        </boolean>
+        <boolean id="outb1">
+            <about>
+                <label>Echo of boolean value iimodel1</label>
+            </about>
+            <current>yes</current>
+        </boolean>
+        <boolean id="outb2">
+            <about>
+                <label>Echo of boolean value iimodel2</label>
+            </about>
+            <current>no</current>
+        </boolean>
+        <boolean id="outb3">
+            <about>
+                <label>Echo of boolean value iimodel3</label>
+            </about>
+            <current>yes</current>
+        </boolean>
+        <time>Tue Dec 09 23:38:36 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/boolean/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/boolean/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/boolean/tool.xml	(revision 6168)
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>boolean</title>
+  <about>Example of a Rappture &lt;boolean&gt; object.
+
+Booleans are logical true/false values.
+The description appears in a tooltip when you hover over the boolean control with your mouse.
+
+When you click the Simulate button, the input boolean will be used to generate the output boolean.
+  </about>
+  <command>
+    python @tool/boolean.py @driver
+  </command>
+</tool>
+<input>
+  <boolean id="iimodel">
+    <about>
+      <label>Impact Ionization Model</label>
+      <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+    </about>
+    <default>on</default>
+  </boolean>
+  <boolean id="iimodel1">
+    <about>
+      <label>Impact Ionization Model</label>
+      <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+    </about>
+    <default>yes</default>
+  </boolean>
+  <boolean id="iimodel2">
+    <about>
+      <label>Impact Ionization Model</label>
+      <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+      <color>purple</color>
+    </about>
+    <default>true</default>
+  </boolean>
+  <boolean id="iimodel3">
+    <about>
+      <label>Impact Ionization Model</label>
+      <description>Used to enable/disable the effects of impact ionization on the mobility model.</description>
+      <icon>R0lGODlhGQAZAPAAAP///wAAACH5BAAAAAAALAAAAAAZABkAAAJQhI+py+0dYnByphoZtmDn
+9WGgxl1ieYiGhHyg+1AVBbFtl0IavtbzToJ1Zqjc6wQ0nVDC1Ian4LhUwmorMyn2bpdV0eb8
+aa+02NAzNqvXigIAOw==
+      </icon>
+    </about>
+    <default>1</default>
+  </boolean>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/choice/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/choice/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/choice/Makefile.in	(revision 6168)
@@ -0,0 +1,37 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/choice.gif \
+		$(srcdir)/choice.tcl \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/choice
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/choice/choice.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/choice/choice.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/choice/choice.tcl	(revision 6168)
@@ -0,0 +1,21 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <choice> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+$driver put output.choice(outs).about.label "Echo of choice"
+set choice [$driver get input.(stats).current]
+$driver put output.choice(outs).current $choice
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/choice/test/2deg.xml
===================================================================
--- /tags/1.6.0/examples/zoo/choice/test/2deg.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/choice/test/2deg.xml	(revision 6168)
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>choice</title>
+        <about>Example of a Rappture &lt;choice&gt; object.
+
+Choices are a set of mutually exclusive options.
+The description appears in a tooltip when you hover over the choice control with your mouse.
+
+When you click the Simulate button, the input choice will be used to generate the output choice.  An output choice is constant, just like a number, boolean, etc.
+  </about>
+        <command>
+    tclsh @tool/choice.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <choice id="stats">
+            <about>
+                <label>Carrier Statistics</label>
+                <description>Determines the model for carrier statistics used in bandgap narrowing calculations.</description>
+            </about>
+            <option>
+                <about>
+                    <label>Boltzmann</label>
+                    <description>From the Boltzmann transport equation</description>
+                </about>
+                <value>bte</value>
+            </option>
+            <option>
+                <about>
+                    <label>Fermi</label>
+                    <description>Fermi-Dirac statistics</description>
+                </about>
+            </option>
+            <option>
+                <about>
+                    <label>2D Gas</label>
+                    <description>Includes confinement at material interface</description>
+                </about>
+                <value>2deg</value>
+            </option>
+            <default>Boltzmann</default>
+            <current>2deg</current>
+        </choice>
+    </input>
+    <output>
+        <choice id="outs">
+            <about>
+                <label>Echo of choice</label>
+            </about>
+            <current>2deg</current>
+        </choice>
+        <time>Wed Dec 10 00:18:24 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/choice/test/boltzman.xml
===================================================================
--- /tags/1.6.0/examples/zoo/choice/test/boltzman.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/choice/test/boltzman.xml	(revision 6168)
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>choice</title>
+        <about>Example of a Rappture &lt;choice&gt; object.
+
+Choices are a set of mutually exclusive options.
+The description appears in a tooltip when you hover over the choice control with your mouse.
+
+When you click the Simulate button, the input choice will be used to generate the output choice.  An output choice is constant, just like a number, boolean, etc.
+  </about>
+        <command>
+    tclsh @tool/choice.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <choice id="stats">
+            <about>
+                <label>Carrier Statistics</label>
+                <description>Determines the model for carrier statistics used in bandgap narrowing calculations.</description>
+            </about>
+            <option>
+                <about>
+                    <label>Boltzmann</label>
+                    <description>From the Boltzmann transport equation</description>
+                </about>
+                <value>bte</value>
+            </option>
+            <option>
+                <about>
+                    <label>Fermi</label>
+                    <description>Fermi-Dirac statistics</description>
+                </about>
+            </option>
+            <option>
+                <about>
+                    <label>2D Gas</label>
+                    <description>Includes confinement at material interface</description>
+                </about>
+                <value>2deg</value>
+            </option>
+            <default>Boltzmann</default>
+            <current>bte</current>
+        </choice>
+    </input>
+    <output>
+        <choice id="outs">
+            <about>
+                <label>Echo of choice</label>
+            </about>
+            <current>bte</current>
+        </choice>
+        <time>Wed Dec 10 00:18:11 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/choice/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/choice/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/choice/test/defaults.xml	(revision 6168)
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>choice</title>
+        <about>Example of a Rappture &lt;choice&gt; object.
+
+Choices are a set of mutually exclusive options.
+The description appears in a tooltip when you hover over the choice control with your mouse.
+
+When you click the Simulate button, the input choice will be used to generate the output choice.  An output choice is constant, just like a number, boolean, etc.
+  </about>
+        <command>
+    tclsh @tool/choice.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <choice id="stats">
+            <about>
+                <label>Carrier Statistics</label>
+                <description>Determines the model for carrier statistics used in bandgap narrowing calculations.</description>
+            </about>
+            <option>
+                <about>
+                    <label>Boltzmann</label>
+                    <description>From the Boltzmann transport equation</description>
+                </about>
+                <value>bte</value>
+            </option>
+            <option>
+                <about>
+                    <label>Fermi</label>
+                    <description>Fermi-Dirac statistics</description>
+                </about>
+            </option>
+            <option>
+                <about>
+                    <label>2D Gas</label>
+                    <description>Includes confinement at material interface</description>
+                </about>
+                <value>2deg</value>
+            </option>
+            <default>Boltzmann</default>
+            <current>bte</current>
+        </choice>
+    </input>
+    <output>
+        <choice id="outs">
+            <about>
+                <label>Echo of choice</label>
+            </about>
+            <current>bte</current>
+        </choice>
+        <time>Wed Dec 10 00:18:11 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/choice/test/fermi.xml
===================================================================
--- /tags/1.6.0/examples/zoo/choice/test/fermi.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/choice/test/fermi.xml	(revision 6168)
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>choice</title>
+        <about>Example of a Rappture &lt;choice&gt; object.
+
+Choices are a set of mutually exclusive options.
+The description appears in a tooltip when you hover over the choice control with your mouse.
+
+When you click the Simulate button, the input choice will be used to generate the output choice.  An output choice is constant, just like a number, boolean, etc.
+  </about>
+        <command>
+    tclsh @tool/choice.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <choice id="stats">
+            <about>
+                <label>Carrier Statistics</label>
+                <description>Determines the model for carrier statistics used in bandgap narrowing calculations.</description>
+            </about>
+            <option>
+                <about>
+                    <label>Boltzmann</label>
+                    <description>From the Boltzmann transport equation</description>
+                </about>
+                <value>bte</value>
+            </option>
+            <option>
+                <about>
+                    <label>Fermi</label>
+                    <description>Fermi-Dirac statistics</description>
+                </about>
+            </option>
+            <option>
+                <about>
+                    <label>2D Gas</label>
+                    <description>Includes confinement at material interface</description>
+                </about>
+                <value>2deg</value>
+            </option>
+            <default>Boltzmann</default>
+            <current>Fermi</current>
+        </choice>
+    </input>
+    <output>
+        <choice id="outs">
+            <about>
+                <label>Echo of choice</label>
+            </about>
+            <current>Fermi</current>
+        </choice>
+        <time>Wed Dec 10 00:18:18 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/choice/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/choice/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/choice/tool.xml	(revision 6168)
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>choice</title>
+  <about>Example of a Rappture &lt;choice&gt; object.
+
+Choices are a set of mutually exclusive options.
+The description appears in a tooltip when you hover over the choice control with your mouse.
+
+When you click the Simulate button, the input choice will be used to generate the output choice.  An output choice is constant, just like a number, boolean, etc.
+  </about>
+  <command>
+    tclsh @tool/choice.tcl @driver
+  </command>
+</tool>
+<input>
+  <choice id="stats">
+    <about>
+      <label>Carrier Statistics</label>
+      <description>Determines the model for carrier statistics used in bandgap narrowing calculations.</description>
+    </about>
+    <option>
+      <about>
+        <label>Boltzmann</label>
+        <description>From the Boltzmann transport equation</description>
+      </about>
+      <value>bte</value>
+    </option>
+    <option>
+      <about>
+        <label>Fermi</label>
+        <description>Fermi-Dirac statistics</description>
+      </about>
+    </option>
+    <option>
+      <about>
+        <label>2D Gas</label>
+        <description>Includes confinement at material interface</description>
+      </about>
+      <value>2deg</value>
+    </option>
+    <default>Boltzmann</default>
+  </choice>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/cloud/README
===================================================================
--- /tags/1.6.0/examples/zoo/cloud/README	(revision 6168)
+++ /tags/1.6.0/examples/zoo/cloud/README	(revision 6168)
@@ -0,0 +1,48 @@
+
+The <cloud> element is deprecated in favor of the <mesh>.
+See the mesh example under examples/zoo/mesh.
+
+If you already have a <cloud>, you should convert it to use
+the <mesh> element.  For example,
+
+ <cloud>
+    <about>
+        <label>cloud (deprecated)</label>
+    </about>
+    <dim>2</dim>
+    <units>m</units>
+    <hide>yes</hide>
+    <points>
+       0.0 0.0
+       ...
+    </points>
+ </cloud>
+
+should be converted to 
+
+ <mesh>
+    <about>
+        <label>cloud in unstructured mesh</label>
+    </about>
+    <dim>2</dim>
+    <units>m</units>
+    <hide>yes</hide>
+    <unstructured>
+        <points>
+ 	  0.0 0.0
+          ...
+        </points>
+    </unstructured>
+ </mesh>
+
+Please note that a cloud should be used when your output has no geometry (it's
+really just a cloud of points).  If your output contains a mesh that has a
+geometry (for example, a uniform grid) use that mesh.  The mesh generated from
+a cloud of points may be very different what your tool produced.
+
+See the mesh documentation for more information.
+
+  https://nanohub.org/infrastructure/rappture/wiki/rp_xml_ele_mesh
+
+
+
Index: /tags/1.6.0/examples/zoo/curve/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/curve/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/curve/Makefile.in	(revision 6168)
@@ -0,0 +1,39 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/curve.py \
+		$(srcdir)/curve.tcl \
+		$(srcdir)/curve1.gif \
+		$(srcdir)/curve2.gif \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/curve
+
+.PHONY: all install clean distclean
+
+all:
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/curve/curve.py
===================================================================
--- /tags/1.6.0/examples/zoo/curve/curve.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/curve/curve.py	(revision 6168)
@@ -0,0 +1,138 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <curve> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+import Rappture
+import numpy as np
+import sys
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+npts = int(rx['input.(points).current'].value)
+
+# generate a single curve
+single = rx['output.curve(single)']
+single['about.label'] = "Single Curve"
+single['about.description'] = 'This is an example of a single curve.'
+single['xaxis.label'] = "Time"
+single['xaxis.description'] = "Time during the experiment."
+single['xaxis.units'] = "s"
+single['yaxis.label'] = "Voltage v(11)"
+single['yaxis.description'] = "Output from the amplifier."
+single['yaxis.units'] = "V"
+
+# generate curve
+xmin, xmax = 0.01, 10.0
+x = np.linspace(xmin, xmax, npts)
+y = np.cos(x)/(1+x)
+
+# plot it
+single['component.xy'] = (x, y)
+
+# These are also acceptable.
+# single['component.xy'] = [x, y]
+# single['component.xy'] = np.row_stack((x, y))
+
+# generate multiple curves on the same plot
+for factor in [1, 2]:
+    curve = rx['output.curve(multi%s)' % factor]
+    curve['about.group'] = "Multiple curve"
+    curve['about.label'] = "Factor a=$factor"
+    curve['about.description'] = \
+        "This is an example of a multiple curves on the same plot."
+    curve['xaxis.label'] = "Frequency"
+    curve['xaxis.description'] = \
+        "Frequency of the input source."
+    curve['xaxis.units'] = "Hz"
+    # curve['xaxis.scale'] = "log"
+    curve['yaxis.label'] = "Current"
+    curve['yaxis.description'] = \
+        "Current through the pull-down resistor."
+    curve['yaxis.units'] = "uA"
+    curve['yaxis.log'] = "log"
+    y = np.power(2.0, factor*x)/x
+    curve['component.xy'] = (x, y)
+
+# generate a scatter curve
+curve = rx['output.curve(scatter)']
+curve['about.label'] = "Scatter curve"
+curve['about.description'] = \
+    "This is an example of a scatter curve."
+curve['about.type'] = "scatter"
+curve['xaxis.label'] = "Time"
+curve['xaxis.description'] = "Time during the experiment."
+curve['xaxis.units'] = "s"
+curve['yaxis.label'] = "Voltage v(11)"
+curve['yaxis.description'] = "Output from the amplifier."
+curve['yaxis.units'] = "V"
+
+y = np.cos(x)/(1+x)
+curve['component.xy'] = (x, y)
+
+# generate a bar curve
+curve = rx['output.curve(bars)']
+curve['about.label'] = "Bar chart"
+curve['about.description'] = \
+    "This is an example of a scatter curve."
+curve['about.type'] = "bar"
+curve['xaxis.label'] = "Time"
+curve['xaxis.description'] = "Time during the experiment."
+curve['xaxis.units'] = "s"
+curve['yaxis.label'] = "Voltage v(11)"
+curve['yaxis.description'] = "Output from the amplifier."
+curve['yaxis.units'] = "V"
+
+x = np.arange(0, npts)
+y = np.sin(x)/(1+x)
+curve['component.xy'] = (x, y)
+
+# generate mixed curves on the same plot
+deg2rad = 0.017453292519943295
+
+curve = rx['output.curve(line)']
+curve['about.group'] = "Mixed element types"
+curve['about.label'] = "Sine"
+curve['about.description'] = \
+    "This is an example of a mixed curves on the same plot."
+curve['xaxis.label'] = "Degrees"
+# curve['yaxis.label'] = "Sine"
+curve['about.type'] = "line"
+
+x = np.arange(0, 361, 30)
+y = np.sin(x * deg2rad)
+curve['component.xy'] = (x, y)
+
+curve = rx['output.curve(bar)']
+curve['about.group'] = "Mixed element types"
+curve['about.label'] = "Cosine"
+curve['about.description'] = \
+    "This is an example of a mixed curves on the same plot."
+curve['xaxis.label'] = "Degrees"
+# curve['yaxis.label'] = "Cosine"
+curve['about.type'] = "bar"
+curve['about.style'] = "-barwidth 24.0"
+
+y = np.cos(x * deg2rad)
+curve['component.xy'] = (x, y)
+
+curve = rx['output.curve(point)']
+curve['about.group'] = "Mixed element types"
+curve['about.label'] = "Random"
+curve['about.description'] = \
+    "This is an example of a mixed curves on the same plot."
+curve['xaxis.label'] = "Degrees"
+# curve['yaxis.label'] = "Random"
+curve['about.type'] = "scatter"
+
+x = np.arange(0, 361, 10)
+y = np.random.rand(len(x)) * 2.0 - 1
+curve['component.xy'] = (x, y)
+
+# save the updated XML describing the run...
+rx.close()
Index: /tags/1.6.0/examples/zoo/curve/curve.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/curve/curve.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/curve/curve.tcl	(revision 6168)
@@ -0,0 +1,137 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <curve> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set npts [$driver get input.(points).current]
+set min 0.01
+set max 10.0
+set dx [expr {($max-$min)/double($npts)}]
+
+# generate a single curve
+$driver put output.curve(single).about.label "Single curve"
+$driver put output.curve(single).about.description \
+    "This is an example of a single curve."
+$driver put output.curve(single).xaxis.label "Time"
+$driver put output.curve(single).xaxis.description "Time during the experiment."
+$driver put output.curve(single).xaxis.units "s"
+$driver put output.curve(single).yaxis.label "Voltage v(11)"
+$driver put output.curve(single).yaxis.description "Output from the amplifier."
+$driver put output.curve(single).yaxis.units "V"
+
+for {set x $min} {$x < $max} {set x [expr {$x+$dx}]} {
+    set y [expr {cos($x)/(1+$x)}]
+    $driver put -append yes output.curve(single).component.xy "$x $y\n"
+}
+
+# generate multiple curves on the same plot
+foreach factor {1 2} {
+    $driver put output.curve(multi$factor).about.group "Multiple curve"
+    $driver put output.curve(multi$factor).about.label "Factor a=$factor"
+    $driver put output.curve(multi$factor).about.description \
+        "This is an example of a multiple curves on the same plot."
+    $driver put output.curve(multi$factor).xaxis.label "Frequency"
+    $driver put output.curve(multi$factor).xaxis.description \
+        "Frequency of the input source."
+    $driver put output.curve(multi$factor).xaxis.units "Hz"
+    #$driver put output.curve(multi$factor).xaxis.scale "log"
+    $driver put output.curve(multi$factor).yaxis.label "Current"
+    $driver put output.curve(multi$factor).yaxis.description \
+        "Current through the pull-down resistor."
+    $driver put output.curve(multi$factor).yaxis.units "uA"
+    $driver put output.curve(multi$factor).yaxis.log "log"
+
+    for {set x $min} {$x < $max} {set x [expr {$x+$dx}]} {
+        set y [expr {pow(2.0,$factor*$x)/$x}]
+        $driver put -append yes \
+            output.curve(multi$factor).component.xy "$x $y\n"
+    }
+}
+
+# generate a scatter curve
+$driver put output.curve(scatter).about.label "Scatter curve"
+$driver put output.curve(scatter).about.description \
+    "This is an example of a scatter curve."
+$driver put output.curve(scatter).about.type "scatter"
+$driver put output.curve(scatter).xaxis.label "Time"
+$driver put output.curve(scatter).xaxis.description "Time during the experiment."
+$driver put output.curve(scatter).xaxis.units "s"
+$driver put output.curve(scatter).yaxis.label "Voltage v(11)"
+$driver put output.curve(scatter).yaxis.description "Output from the amplifier."
+$driver put output.curve(scatter).yaxis.units "V"
+
+for {set x $min} {$x < $max} {set x [expr {$x+$dx}]} {
+    set y [expr {cos($x)/(1+$x)}]
+    $driver put -append yes output.curve(scatter).component.xy "$x $y\n"
+}
+
+# generate a bar curve
+$driver put output.curve(bars).about.label "Bar chart"
+$driver put output.curve(bars).about.description \
+    "This is an example of a scatter curve."
+$driver put output.curve(bars).about.type "bar"
+$driver put output.curve(bars).xaxis.label "Time"
+$driver put output.curve(bars).xaxis.description "Time during the experiment."
+$driver put output.curve(bars).xaxis.units "s"
+$driver put output.curve(bars).yaxis.label "Voltage v(11)"
+$driver put output.curve(bars).yaxis.description "Output from the amplifier."
+$driver put output.curve(bars).yaxis.units "V"
+
+for {set x 0} {$x < $npts} {incr x} {
+    set y [expr {sin($x)/(1+$x)}]
+    $driver put -append yes output.curve(bars).component.xy "$x $y\n"
+}
+
+# generate mixed curves on the same plot
+set deg2rad 0.017453292519943295
+
+$driver put output.curve(line).about.group "Mixed element types"
+$driver put output.curve(line).about.label "Sine"
+$driver put output.curve(line).about.description \
+    "This is an example of a mixed curves on the same plot."
+$driver put output.curve(line).xaxis.label "Degrees"
+#$driver put output.curve(line).yaxis.label "Sine"
+$driver put output.curve(line).about.type "line"
+for {set x 0} {$x <= 360} {incr x 30} {
+    set y [expr {sin($x*$deg2rad)}]
+    $driver put -append yes output.curve(line).component.xy "$x $y\n"
+}
+
+$driver put output.curve(bar).about.group "Mixed element types"
+$driver put output.curve(bar).about.label "Cosine"
+$driver put output.curve(bar).about.description \
+    "This is an example of a mixed curves on the same plot."
+$driver put output.curve(bar).xaxis.label "Degrees"
+#$driver put output.curve(bar).yaxis.label "Cosine"
+$driver put output.curve(bar).about.type "bar"
+$driver put output.curve(bar).about.style "-barwidth 24.0"
+
+for {set x 0} {$x <= 360} {incr x 30} {
+    set y [expr {cos($x*$deg2rad)}]
+    $driver put -append yes output.curve(bar).component.xy "$x $y\n"
+}
+
+$driver put output.curve(point).about.group "Mixed element types"
+$driver put output.curve(point).about.label "Random"
+$driver put output.curve(point).about.description \
+    "This is an example of a mixed curves on the same plot."
+$driver put output.curve(point).xaxis.label "Degrees"
+#$driver put output.curve(point).yaxis.label "Random"
+$driver put output.curve(point).about.type "scatter"
+for {set x 0} {$x <= 360} {incr x 10} {
+    set y [expr {(rand() * 2.0) - 1}]
+    $driver put -append yes output.curve(point).component.xy "$x $y\n"
+}
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/curve/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/curve/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/curve/test/defaults.xml	(revision 6168)
@@ -0,0 +1,134 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>curve</title>
+        <about>Example of a Rappture &lt;curve&gt; object.
+
+Curves are a list of (x,y) data points, representing discrete samples of a function y(x).
+
+When you click the Simulate button, the inputs will be used to generate output curves.
+  </about>
+        <command>
+    tclsh @tool/curve.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <integer id="points">
+            <about>
+                <label>Number of points</label>
+                <description>Determines the number of data points in all output curves.</description>
+            </about>
+            <min>2</min>
+            <max>1000</max>
+            <default>10</default>
+            <current>10</current>
+        </integer>
+    </input>
+    <output>
+        <curve id="single">
+            <about>
+                <label>Single curve</label>
+                <description>This is an example of a single curve.</description>
+            </about>
+            <xaxis>
+                <label>Time</label>
+                <description>Time during the experiment.</description>
+                <units>s</units>
+            </xaxis>
+            <yaxis>
+                <label>Voltage v(11)</label>
+                <description>Output from the amplifier.</description>
+                <units>V</units>
+            </yaxis>
+            <component>
+                <xy>0.01 0.990049505363
+1.009 0.265160421676
+2.008 -0.140760579036
+3.007 -0.247306232561
+4.006 -0.129662618375
+5.005 0.0480355105893
+6.004 0.137247325002
+7.003 0.0939557547102
+8.002 -0.016382854697
+9.001 -0.0911450779658
+</xy>
+            </component>
+        </curve>
+        <curve id="multi1">
+            <about>
+                <group>Multiple curves</group>
+                <label>Factor a=1</label>
+                <description>This is an example of multiple curves on the same plot.</description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xy>0.01 100.695555006
+1.009 1.9945645659
+2.008 2.00310872589
+3.007 2.67339892364
+4.006 4.01065419167
+5.005 6.41580338707
+6.004 10.689155879
+7.003 18.3159282379
+8.002 32.036383087
+9.001 56.9220102634
+</xy>
+            </component>
+        </curve>
+        <curve id="multi2">
+            <about>
+                <group>Multiple curves</group>
+                <label>Factor a=2</label>
+                <description>This is an example of multiple curves on the same plot.</description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xy>0.01 101.395947979
+1.009 4.01409239782
+2.008 8.05698869204
+3.007 21.4912148474
+4.006 64.4379002629
+5.005 206.018478173
+6.004 686.00535265
+7.003 2349.3190102
+8.002 8212.69139005
+9.001 29164.2773871
+</xy>
+            </component>
+        </curve>
+        <time>Wed Dec 10 00:40:46 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/curve/test/nodata.xml
===================================================================
--- /tags/1.6.0/examples/zoo/curve/test/nodata.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/curve/test/nodata.xml	(revision 6168)
@@ -0,0 +1,220 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>curve</title>
+        <about>Example of a Rappture &lt;curve&gt; object.
+
+Curves are a list of (x,y) data points, representing discrete samples of a function y(x).
+
+When you click the Simulate button, the inputs will be used to generate output curves.
+  </about>
+        <command>
+    tclsh @tool/curve.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <integer id="points">
+            <about>
+                <label>Number of points</label>
+                <description>Determines the number of data points in all output curves.</description>
+            </about>
+            <min>2</min>
+            <max>1000</max>
+            <default>10</default>
+            <current>10</current>
+        </integer>
+    </input>
+    <output>
+        <curve id="single">
+            <about>
+                <label>Single curve</label>
+                <description>This is an example of a single curve.</description>
+            </about>
+            <xaxis>
+                <label>Time</label>
+                <description>Time during the experiment.</description>
+                <units>s</units>
+            </xaxis>
+            <yaxis>
+                <label>Voltage v(11)</label>
+                <description>Output from the amplifier.</description>
+                <units>V</units>
+            </yaxis>
+            <component>
+                <xy>0.01 0.990049505363
+1.009 0.265160421676
+2.008 -0.140760579036
+3.007 -0.247306232561
+4.006 -0.129662618375
+5.005 0.0480355105893
+6.004 0.137247325002
+7.003 0.0939557547102
+8.002 -0.016382854697
+9.001 -0.0911450779658
+</xy>
+            </component>
+        </curve>
+        <curve id="multi1">
+            <about>
+                <group>Multiple curves</group>
+                <label>Factor a=1</label>
+                <description>This is an example of multiple curves on the same plot.</description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xy>0.01 100.695555006
+1.009 1.9945645659
+2.008 2.00310872589
+3.007 2.67339892364
+4.006 4.01065419167
+5.005 6.41580338707
+6.004 10.689155879
+7.003 18.3159282379
+8.002 32.036383087
+9.001 56.9220102634
+</xy>
+            </component>
+        </curve>
+        <curve id="multi2">
+            <about>
+                <group>Multiple curves</group>
+                <label>Factor a=2</label>
+                <description>This is an example of multiple curves on the same plot.</description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xy>0.01 101.395947979
+1.009 4.01409239782
+2.008 8.05698869204
+3.007 21.4912148474
+4.006 64.4379002629
+5.005 206.018478173
+6.004 686.00535265
+7.003 2349.3190102
+8.002 8212.69139005
+9.001 29164.2773871
+</xy>
+            </component>
+        </curve>
+        <curve id="xyvectortest">
+            <about>
+                <label>xy vector test</label>
+                <description></description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xvector>0.01
+1.009
+2.008
+3.007
+4.006
+5.005
+6.004
+7.003
+8.002
+9.001
+</xvector>
+                <yvector>101.395947979
+4.01409239782
+8.05698869204
+21.4912148474
+64.4379002629
+206.018478173
+686.00535265
+2349.3190102
+8212.69139005
+29164.2773871
+</yvector>
+            </component>
+        </curve>
+        <curve id="nodata">
+            <about>
+                <group>nodata</group>
+                <label>No data</label>
+                <description>This is an example of multiple curves on the same plot.</description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xy></xy>
+            </component>
+        </curve>
+        <curve id="nodata2">
+            <about>
+                <label>No data 2</label>
+                <description></description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xvector></xvector>
+                <yvector></yvector>
+            </component>
+        </curve>
+        <time>Wed Dec 10 00:40:46 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/curve/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/curve/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/curve/tool.xml	(revision 6168)
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>curve</title>
+  <about>Example of a Rappture &lt;curve&gt; object.
+
+Curves are a list of (x,y) data points, representing discrete samples of a function y(x).
+
+When you click the Simulate button, the inputs will be used to generate output curves.
+  </about>
+  <command>
+    python @tool/curve.py @driver
+  </command>
+</tool>
+<input>
+  <integer id="points">
+    <about>
+      <label>Number of points</label>
+      <description>Determines the number of data points in all output curves.</description>
+    </about>
+    <min>2</min>
+    <max>1000</max>
+    <default>10</default>
+  </integer>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/drawing/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/drawing/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/drawing/Makefile.in	(revision 6168)
@@ -0,0 +1,45 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/drawing.py \
+		$(srcdir)/drawing.tcl \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/zoo/drawing
+
+.PHONY: all install install-files install-images clean distclean
+
+all: 
+
+install: all install-files install-images
+
+install-files: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+install-images:
+	$(MKDIR_P) -m 0755 $(destdir)/images
+	for i in $(srcdir)/images/* ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir)/images ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/drawing/drawing.py
===================================================================
--- /tags/1.6.0/examples/zoo/drawing/drawing.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/drawing/drawing.py	(revision 6168)
@@ -0,0 +1,39 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <string> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+value = rx['input.choice(analysis).current'].value
+out = "Analysis Choice:  %s\n" % value
+
+value = rx['input.number(trapezoid_top).current'].value
+out += "Trapezoid Top:  %s\n" % value
+
+value = rx['input.number(substrate_length).current'].value
+out += "Substrate Length:  %s\n" % value
+
+value = rx['input.number(feature_length).current'].value
+out += "Feature Length:  %s\n" % value
+
+value = rx['input.number(feature_height).current'].value
+out += "Feature Height:  %s\n" % value
+
+value = rx['input.string(indeck).current'].value
+out += "String:  %s\n" % value
+
+rx['output.string(out).about.label'] = "Echo of inputs"
+rx['output.string(out).current'] = out
+
+# save the updated XML describing the run...
+rx.close()
Index: /tags/1.6.0/examples/zoo/drawing/drawing.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/drawing/drawing.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/drawing/drawing.tcl	(revision 6168)
@@ -0,0 +1,33 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <string> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set value [$driver get input.choice(analysis).current]
+append out "Analysis Choice:  $value\n"
+set value [$driver get input.number(trapezoid_top).current]
+append out "Trapezoid Top:  $value\n"
+set value [$driver get input.number(substrate_length).current]
+append out "Substrate Length:  $value\n"
+set value [$driver get input.number(feature_length).current]
+append out "Feature Length:  $value\n"
+set value [$driver get input.number(feature_height).current]
+append out "Feature Height:  $value\n"
+set value [$driver get input.string(indeck).current]
+append out "String:  $value\n"
+
+$driver put output.string(out).about.label "Echo of inputs"
+$driver put output.string(out).current $out
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/drawing/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/drawing/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/drawing/tool.xml	(revision 6168)
@@ -0,0 +1,282 @@
+<?xml version="1.0"?>
+<run>
+ <tool>
+  <title>drawing</title>
+  <about>Example of a Rappture &lt;drawing&gt; object.
+
+Strings are bits of text--single line or multiple lines.
+The description appears in a tooltip when you hover over the string control with your mouse.
+
+When you click the Simulate button, the input strings will be used to generate output strings.
+  </about>
+  <command>
+    python @tool/drawing.py @driver
+  </command>
+  <layout>wizard</layout>
+ </tool>
+ <input>
+    <boolean id="trapezoid_top_enable">
+      <about> <label>Enable trapezoid top</label> </about>
+      <default>off</default>
+    </boolean>
+  <drawing>
+   <about>
+    <label>Title</label>
+    <description>This text will be used as the title for all plots.</description>
+   </about>
+   <background>
+    <color>#FFFCDA</color>
+    <coordinates>-.1 0 1.1 1</coordinates>
+    <width>800</width>
+    <height>500</height>
+   </background>
+   <substitutions>
+    <variable>
+     <name>string</name>
+     <path>input.string(indeck)</path>
+    </variable>
+    <variable>
+     <name>feature_height</name>
+     <path>input.number(feature_height)</path>
+    </variable>
+    <variable>
+     <name>feature_length</name>
+     <path>input.number(feature_length)</path>
+    </variable>
+    <variable>
+     <name>trapezoid_top</name>
+     <path>input.number(trapezoid_top)</path>
+    </variable>
+    <variable>
+     <name>trapezoid_top_color</name>
+     <path>input.boolean(trapezoid_top_enable)</path>
+     <map><from>no</from><to>gray</to></map>
+     <map><from>yes</from><to>black</to></map>
+    </variable>
+    <variable>
+     <name>substrate_length</name>
+     <path>input.number(substrate_length)</path>
+    </variable>
+    <variable>
+     <name>analysis</name>
+     <path>input.choice(analysis)</path>
+    </variable>
+    <variable>
+     <name>linewidth</name>
+     <path>input.integer(linewidth)</path>
+    </variable>
+   </substitutions>
+   <components>
+    <grid>
+     <xcoords>0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1</xcoords>
+     <ycoords>.2 .3 .4 .5 .6 .7</ycoords>
+     <color>grey70</color>
+     <linewidth>1</linewidth>
+     <dash>4 2</dash>
+    </grid>
+    <line id="feature_length">
+     <coords>.25 .72 .75 .72</coords>
+     <color>black</color>
+     <linewidth>2</linewidth>
+     <arrow>both</arrow>
+    </line>
+    <text id="feature_length">
+     <coords>.5 .73</coords>
+     <color>black</color>
+     <text>Feature Length = ${feature_length}</text>
+     <font>Arial 11</font>
+     <anchor>n</anchor>
+     <hotspot>inline</hotspot>
+    </text>
+    <line id="feature_height">
+     <coords>.76 .4 .76 .7</coords>
+     <color>black</color>
+     <linewidth>2</linewidth>
+     <arrow>both</arrow>
+    </line>
+    <text id="feature_height">
+     <coords>.77 .48</coords>
+     <color>black</color>
+     <text>Feature
+Height = ${feature_height}</text>
+     <font>Arial 11</font>
+     <anchor>nw</anchor>
+    </text>
+    <line id="substrate_length">
+     <coords>0 .8 1 .8</coords>
+     <color>black</color>
+     <linewidth>2</linewidth>
+     <arrow>both</arrow>
+    </line>
+    <text id="substrate_length">
+     <coords>.5 .81</coords>
+     <color>black</color>
+     <text>Substrate Length = ${substrate_length}</text>
+     <font>Arial 11</font>
+     <hotspot>inline</hotspot>
+     <anchor>n</anchor>
+    </text>
+    <line id="trapezoid_top">
+     <coords>.35 .38 .65 .38</coords>
+     <color>${trapezoid_top_color}</color>
+     <linewidth>2</linewidth>
+     <arrow>both</arrow>
+    </line>
+    <text id="trapezoid_top">
+     <coords>.5 .35</coords>
+     <color>${trapezoid_top_color}</color>
+     <text>Length of Trapezoid Top = ${trapezoid_top}</text>
+     <font>Arial 11</font>
+     <anchor>s</anchor>
+     <hotspot>inline</hotspot>
+    </text>
+    <line id="polyline">
+     <coords>0 .7 .25 .7 .35 .4 .65 .4 .75 .7 1 .7</coords>
+     <color>red</color>
+     <linewidth>${linewidth}</linewidth>
+    </line>
+    <rectangle id="border">
+     <coords>-0.05 0.05 0.3 0.35</coords>
+     <outline>black</outline>
+     <linewidth>5</linewidth>
+    </rectangle>
+    <picture id="analysis">
+     <coords>-0.05 0.05 0.3 0.35</coords>
+     <contents>file://images/${analysis}_F-d.png</contents>
+    </picture>
+    <text id="analysis">
+     <coords>.125 .36</coords>
+     <color>black</color>
+     <text>${analysis}</text>
+     <font>Arial 11</font>
+     <anchor>n</anchor>
+    </text>
+    <text id="string">
+     <coords>-.03 .85</coords>
+     <color>black</color>
+     <text>${string}</text>
+     <font>Arial 11</font>
+     <anchor>nw</anchor>
+     <hotspot>inline</hotspot>
+    </text>
+    <text>
+     <coords>.9 .3</coords>
+     <text>Info</text>
+     <anchor>e</anchor>
+    </text>
+    <hotspot>
+     <coords>.91 .3</coords>
+     <controls>input.string(title)</controls>
+     <controls>input.boolean(cmtcntl)</controls>
+     <controls>input.string(comments)</controls>
+    </hotspot>
+   </components>
+  </drawing>
+  <integer id="linewidth">
+    <about>
+      <label>Line width</label>
+      <description>Number of pixels for linewidth.</description>
+    </about>
+    <min>1</min>
+    <max>10</max>
+    <default>2</default>
+  </integer>
+  <number id="feature_height">
+   <about>
+    <label>Feature Height</label>
+    <description>Height of feature.</description>
+   </about>
+   <units>nm</units>
+   <min>10</min>
+   <max>70</max>
+   <default>30</default>
+  </number>
+  <number id="feature_length">
+   <about>
+    <label>Feature Length</label>
+    <description>Length of feature.</description>
+   </about>
+   <units>nm</units>
+   <min>10</min>
+   <max>100</max>
+   <default>50</default>
+  </number>
+  <number id="substrate_length">
+   <about>
+    <label>Substrate Length</label>
+    <description>Length of substrate.</description>
+   </about>
+   <units>nm</units>
+   <min>10</min>
+   <max>500</max>
+   <default>100</default>
+  </number>
+  <number id="trapezoid_top">
+   <about>
+    <label>Trapezoid Top</label>
+    <description>Width of the Trapezoid Top.</description>
+    <enable>input.boolean(trapezoid_top_enable)</enable>
+   </about>
+   <units>nm</units>
+   <min>10</min>
+   <max>70</max>
+   <default>30</default>
+  </number>
+  <choice id="analysis">
+   <about>
+    <label>Type of Analysis</label>
+    <description>Determines the type of analysis to perform.</description>
+   </about>
+   <option>
+    <about>
+     <label>Hertz</label>
+     <description>Hertz analysis</description>
+    </about>
+   </option>
+   <option>
+    <about>
+     <label>LinCon</label>
+     <description>LinCon analysis</description>
+    </about>
+   </option>
+   <option>
+    <about>
+     <label>Chadwick</label>
+     <description>Chadwick analysis</description>
+    </about>
+   </option>
+   <option>
+    <about>
+     <label>DMT</label>
+     <description>DMT analysis</description>
+    </about>
+   </option>
+   <default>Chadwick</default>
+  </choice>
+  <string id="indeck">
+   <about>
+    <label>Input</label>
+    <description>This is the control file for the program.</description>
+    <hints>EXAMPLE:  .print ac vm(11) mag(i(vcc))</hints>
+   </about>
+   <size>40x10</size>
+   <default>Enter your SPICE commands
+in this area.  Right-click
+for a menu of editing options.</default>
+  </string>
+  <string id="title">
+    <about><label>Title</label></about>
+  </string>
+  <boolean id="cmtcntl">
+    <about><label>Comments</label></about>
+    <default>on</default>
+  </boolean>
+  <string id="comments">
+    <about>
+      <label>Info</label>
+      <enable>input.boolean(cmtcntl)</enable>
+    </about>
+    <size>40x3</size>
+  </string>
+ </input>
+</run>
Index: /tags/1.6.0/examples/zoo/enable/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/enable/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/enable/Makefile.in	(revision 6168)
@@ -0,0 +1,38 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/enable.py \
+		$(srcdir)/enable.tcl \
+		$(srcdir)/tool.xml \
+		$(srcdir)/tool2.xml 
+
+destdir		= $(prefix)/examples/zoo/enable
+
+.PHONY: all install clean distclean 
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/enable/enable.py
===================================================================
--- /tags/1.6.0/examples/zoo/enable/enable.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/enable/enable.py	(revision 6168)
@@ -0,0 +1,48 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <enable> attributes
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+
+# uncomment these for debugging
+# sys.stdout = open('enc.out', 'w')
+# sys.stderr = open('enc.err', 'w')
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+model = rx['input.(model).current'].value
+
+if model == 'dd':
+    result = "Drift-Diffusion:\n"
+    recomb = rx['input.(dd).(recomb).current'].value
+    result += "  Recombination model: %s\n" % recomb
+    if recomb:
+        taun = rx['input.(dd).(taun).current'].value
+        taup = rx['input.(dd).(taup).current'].value
+        result += "  TauN: %s\n" % taun
+        result += "  TauP: %s\n" % taup
+elif model == 'bte':
+    result = "Boltzmann Transport Equation:\n"
+    temp = rx["input.(bte).(temp).current"].value
+    result += "  Temperature: %s\n" % temp
+    secret = rx['input.(bte).(secret).current'].value
+    result += "  Hidden number: %s\n" % secret
+elif model == 'negf':
+    result = "NEGF Analysis:\n"
+    tbe = rx['input.(negf).(tbe).current'].value
+    result += "  Tight-binding energy: %s\n" % tbe
+    tau = rx['input.(negf).(tau).current'].value
+    result += "  High-energy lifetime: %s\n" % tau
+
+rx['output.log'] = result
+
+# save the updated XML describing the run...
+rx.close()
Index: /tags/1.6.0/examples/zoo/enable/enable.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/enable/enable.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/enable/enable.tcl	(revision 6168)
@@ -0,0 +1,53 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <enable> attributes
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set result ""
+
+set model [$driver get input.(model).current]
+switch -- $model {
+    dd {
+        append result "Drift-Diffusion:\n"
+        set recomb [$driver get input.(dd).(recomb).current]
+        append result "  Recombination model: $recomb\n"
+        if {$recomb} {
+            set taun [$driver get input.(dd).(taun).current]
+            set taup [$driver get input.(dd).(taup).current]
+            append result "  TauN: $taun\n"
+            append result "  TauP: $taup\n"
+        }
+    }
+    bte {
+        append result "Boltzmann Transport Equation:\n"
+        set temp [$driver get input.(bte).(temp).current]
+        append result "  Temperature: $temp\n"
+        set secret [$driver get input.(bte).(secret).current]
+        append result "  Hidden number: $secret\n"
+    }
+    negf {
+        append result "NEGF Analysis:\n"
+        set tbe [$driver get input.(negf).(tbe).current]
+        append result "  Tight-binding energy: $tbe\n"
+        set tau [$driver get input.(negf).(tau).current]
+        append result "  High-energy lifetime: $tau\n"
+    }
+    default {
+        error "can't understand $model"
+    }
+}
+
+$driver put output.log $result
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/enable/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/enable/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/enable/test/defaults.xml	(revision 6168)
@@ -0,0 +1,147 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>enable</title>
+        <about>Examples of Rappture &lt;enable&gt; attributes.
+
+The &lt;enable&gt; attribute can be used to selectively enable/disable one object based on the value of others.
+
+In this example, we have a &lt;choice&gt; object that controls three groups.  Each group appears only when its corresponding choice is set.  Within the first group, we have an entry that depends on a &lt;boolean&gt; object.
+  </about>
+        <command>
+    tclsh @tool/enable.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <choice id="model">
+            <about>
+                <label>Model</label>
+            </about>
+            <option>
+                <about>
+                    <label>Drift-Diffusion</label>
+                </about>
+                <value>dd</value>
+            </option>
+            <option>
+                <about>
+                    <label>Boltzmann Transport Equation</label>
+                </about>
+                <value>bte</value>
+            </option>
+            <option>
+                <about>
+                    <label>Quantum Mechanical NEGF</label>
+                </about>
+                <value>negf</value>
+            </option>
+            <default>Drift-Diffusion</default>
+            <current>dd</current>
+        </choice>
+        <group id="dd">
+            <about>
+                <label>Drift-Diffusion Options</label>
+                <enable>input.choice(model) == "dd"</enable>
+            </about>
+            <boolean id="recomb">
+                <about>
+                    <label>Recombination Model</label>
+                </about>
+                <default>off</default>
+                <current>no</current>
+            </boolean>
+            <number id="taun">
+                <about>
+                    <label>Minority Carrier Lifetime for electrons</label>
+                    <enable>input.group(dd).boolean(recomb)</enable>
+                </about>
+                <default>1e-6</default>
+                <current>1e-6</current>
+            </number>
+            <number id="taup">
+                <about>
+                    <label>Minority Carrier Lifetime for holes</label>
+                    <enable>input.group(dd).boolean(recomb)</enable>
+                </about>
+                <default>1e-6</default>
+                <current>1e-6</current>
+            </number>
+        </group>
+        <group id="bte">
+            <about>
+                <label>Boltzmann Transport Equation Options</label>
+                <enable>input.choice(model) == "bte"</enable>
+            </about>
+            <number id="temp">
+                <about>
+                    <label>Temperature</label>
+                </about>
+                <units>K</units>
+                <preset>
+                    <value>300K</value>
+                    <label>300K (room temperature)</label>
+                </preset>
+                <preset>
+                    <value>77K</value>
+                    <label>77K (liquid nitrogen)</label>
+                </preset>
+                <default>300K</default>
+                <current>300K</current>
+            </number>
+            <integer id="secret">
+                <about>
+                    <label>Secret input number</label>
+                    <description>This number never shows up as a user control, but it can be accessed in the simulator.</description>
+                    <enable>no</enable>
+                </about>
+                <default>7</default>
+                <current>7</current>
+            </integer>
+        </group>
+        <group id="negf">
+            <about>
+                <label>Quantum Mechanical Options</label>
+                <enable>input.choice(model) == "negf"</enable>
+            </about>
+            <number id="tbe">
+                <about>
+                    <label>Tight-binding Energy</label>
+                </about>
+                <units>eV</units>
+                <min>0eV</min>
+                <max>10eV</max>
+                <default>3.12eV</default>
+                <current>3.12eV</current>
+            </number>
+            <number id="tau">
+                <about>
+                    <label>High-energy lifetime</label>
+                    <description>This is used only when the tight-binding energy is above 3eV</description>
+                    <enable>input.(negf).(tbe):eV &gt;= 3</enable>
+                </about>
+                <units>ns</units>
+                <min>0s</min>
+                <max>1s</max>
+                <default>10ns</default>
+                <current>10ns</current>
+            </number>
+        </group>
+    </input>
+    <output>
+        <log>Drift-Diffusion:
+  Recombination model: no
+</log>
+        <time>Wed Dec 10 00:42:54 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/enable/test/enabled.xml
===================================================================
--- /tags/1.6.0/examples/zoo/enable/test/enabled.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/enable/test/enabled.xml	(revision 6168)
@@ -0,0 +1,149 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>enable</title>
+        <about>Examples of Rappture &lt;enable&gt; attributes.
+
+The &lt;enable&gt; attribute can be used to selectively enable/disable one object based on the value of others.
+
+In this example, we have a &lt;choice&gt; object that controls three groups.  Each group appears only when its corresponding choice is set.  Within the first group, we have an entry that depends on a &lt;boolean&gt; object.
+  </about>
+        <command>
+    tclsh @tool/enable.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <choice id="model">
+            <about>
+                <label>Model</label>
+            </about>
+            <option>
+                <about>
+                    <label>Drift-Diffusion</label>
+                </about>
+                <value>dd</value>
+            </option>
+            <option>
+                <about>
+                    <label>Boltzmann Transport Equation</label>
+                </about>
+                <value>bte</value>
+            </option>
+            <option>
+                <about>
+                    <label>Quantum Mechanical NEGF</label>
+                </about>
+                <value>negf</value>
+            </option>
+            <default>Drift-Diffusion</default>
+            <current>dd</current>
+        </choice>
+        <group id="dd">
+            <about>
+                <label>Drift-Diffusion Options</label>
+                <enable>input.choice(model) == "dd"</enable>
+            </about>
+            <boolean id="recomb">
+                <about>
+                    <label>Recombination Model</label>
+                </about>
+                <default>off</default>
+                <current>yes</current>
+            </boolean>
+            <number id="taun">
+                <about>
+                    <label>Minority Carrier Lifetime for electrons</label>
+                    <enable>input.group(dd).boolean(recomb)</enable>
+                </about>
+                <default>1e-6</default>
+                <current>1e-6</current>
+            </number>
+            <number id="taup">
+                <about>
+                    <label>Minority Carrier Lifetime for holes</label>
+                    <enable>input.group(dd).boolean(recomb)</enable>
+                </about>
+                <default>1e-6</default>
+                <current>1e-6</current>
+            </number>
+        </group>
+        <group id="bte">
+            <about>
+                <label>Boltzmann Transport Equation Options</label>
+                <enable>input.choice(model) == "bte"</enable>
+            </about>
+            <number id="temp">
+                <about>
+                    <label>Temperature</label>
+                </about>
+                <units>K</units>
+                <preset>
+                    <value>300K</value>
+                    <label>300K (room temperature)</label>
+                </preset>
+                <preset>
+                    <value>77K</value>
+                    <label>77K (liquid nitrogen)</label>
+                </preset>
+                <default>300K</default>
+                <current>300K</current>
+            </number>
+            <integer id="secret">
+                <about>
+                    <label>Secret input number</label>
+                    <description>This number never shows up as a user control, but it can be accessed in the simulator.</description>
+                    <enable>no</enable>
+                </about>
+                <default>7</default>
+                <current>7</current>
+            </integer>
+        </group>
+        <group id="negf">
+            <about>
+                <label>Quantum Mechanical Options</label>
+                <enable>input.choice(model) == "negf"</enable>
+            </about>
+            <number id="tbe">
+                <about>
+                    <label>Tight-binding Energy</label>
+                </about>
+                <units>eV</units>
+                <min>0eV</min>
+                <max>10eV</max>
+                <default>3.12eV</default>
+                <current>3.12eV</current>
+            </number>
+            <number id="tau">
+                <about>
+                    <label>High-energy lifetime</label>
+                    <description>This is used only when the tight-binding energy is above 3eV</description>
+                    <enable>input.(negf).(tbe):eV &gt;= 3</enable>
+                </about>
+                <units>ns</units>
+                <min>0s</min>
+                <max>1s</max>
+                <default>10ns</default>
+                <current>10ns</current>
+            </number>
+        </group>
+    </input>
+    <output>
+        <log>Drift-Diffusion:
+  Recombination model: yes
+  TauN: 1e-6
+  TauP: 1e-6
+</log>
+        <time>Wed Dec 10 00:43:00 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/enable/test/unenabled.xml
===================================================================
--- /tags/1.6.0/examples/zoo/enable/test/unenabled.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/enable/test/unenabled.xml	(revision 6168)
@@ -0,0 +1,147 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>enable</title>
+        <about>Examples of Rappture &lt;enable&gt; attributes.
+
+The &lt;enable&gt; attribute can be used to selectively enable/disable one object based on the value of others.
+
+In this example, we have a &lt;choice&gt; object that controls three groups.  Each group appears only when its corresponding choice is set.  Within the first group, we have an entry that depends on a &lt;boolean&gt; object.
+  </about>
+        <command>
+    tclsh @tool/enable.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <choice id="model">
+            <about>
+                <label>Model</label>
+            </about>
+            <option>
+                <about>
+                    <label>Drift-Diffusion</label>
+                </about>
+                <value>dd</value>
+            </option>
+            <option>
+                <about>
+                    <label>Boltzmann Transport Equation</label>
+                </about>
+                <value>bte</value>
+            </option>
+            <option>
+                <about>
+                    <label>Quantum Mechanical NEGF</label>
+                </about>
+                <value>negf</value>
+            </option>
+            <default>Drift-Diffusion</default>
+            <current>dd</current>
+        </choice>
+        <group id="dd">
+            <about>
+                <label>Drift-Diffusion Options</label>
+                <enable>input.choice(model) == "dd"</enable>
+            </about>
+            <boolean id="recomb">
+                <about>
+                    <label>Recombination Model</label>
+                </about>
+                <default>off</default>
+                <current>no</current>
+            </boolean>
+            <number id="taun">
+                <about>
+                    <label>Minority Carrier Lifetime for electrons</label>
+                    <enable>input.group(dd).boolean(recomb)</enable>
+                </about>
+                <default>1e-6</default>
+                <current>1e-6</current>
+            </number>
+            <number id="taup">
+                <about>
+                    <label>Minority Carrier Lifetime for holes</label>
+                    <enable>input.group(dd).boolean(recomb)</enable>
+                </about>
+                <default>1e-6</default>
+                <current>1e-6</current>
+            </number>
+        </group>
+        <group id="bte">
+            <about>
+                <label>Boltzmann Transport Equation Options</label>
+                <enable>input.choice(model) == "bte"</enable>
+            </about>
+            <number id="temp">
+                <about>
+                    <label>Temperature</label>
+                </about>
+                <units>K</units>
+                <preset>
+                    <value>300K</value>
+                    <label>300K (room temperature)</label>
+                </preset>
+                <preset>
+                    <value>77K</value>
+                    <label>77K (liquid nitrogen)</label>
+                </preset>
+                <default>300K</default>
+                <current>300K</current>
+            </number>
+            <integer id="secret">
+                <about>
+                    <label>Secret input number</label>
+                    <description>This number never shows up as a user control, but it can be accessed in the simulator.</description>
+                    <enable>no</enable>
+                </about>
+                <default>7</default>
+                <current>7</current>
+            </integer>
+        </group>
+        <group id="negf">
+            <about>
+                <label>Quantum Mechanical Options</label>
+                <enable>input.choice(model) == "negf"</enable>
+            </about>
+            <number id="tbe">
+                <about>
+                    <label>Tight-binding Energy</label>
+                </about>
+                <units>eV</units>
+                <min>0eV</min>
+                <max>10eV</max>
+                <default>3.12eV</default>
+                <current>3.12eV</current>
+            </number>
+            <number id="tau">
+                <about>
+                    <label>High-energy lifetime</label>
+                    <description>This is used only when the tight-binding energy is above 3eV</description>
+                    <enable>input.(negf).(tbe):eV &gt;= 3</enable>
+                </about>
+                <units>ns</units>
+                <min>0s</min>
+                <max>1s</max>
+                <default>10ns</default>
+                <current>10ns</current>
+            </number>
+        </group>
+    </input>
+    <output>
+        <log>Drift-Diffusion:
+  Recombination model: no
+</log>
+        <time>Wed Dec 10 00:42:54 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/enable/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/enable/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/enable/tool.xml	(revision 6168)
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>enable</title>
+  <about>Examples of Rappture &lt;enable&gt; attributes.
+
+The &lt;enable&gt; attribute can be used to selectively enable/disable one object based on the value of others.
+
+In this example, we have a &lt;choice&gt; object that controls three groups.  Each group appears only when its corresponding choice is set.  Within the first group, we have an entry that depends on a &lt;boolean&gt; object.
+  </about>
+  <command>
+    python @tool/enable.py @driver
+  </command>
+</tool>
+<input>
+  <choice id="model">
+    <about>
+      <label>Model</label>
+    </about>
+    <option>
+      <about><label>Drift-Diffusion</label></about>
+      <value>dd</value>
+    </option>
+    <option>
+      <about><label>Boltzmann Transport Equation</label></about>
+      <value>bte</value>
+    </option>
+    <option>
+      <about><label>Quantum Mechanical NEGF</label></about>
+      <value>negf</value>
+    </option>
+    <default>Drift-Diffusion</default>
+  </choice>
+
+  <group id="dd">
+    <about>
+      <label>Drift-Diffusion Options</label>
+      <enable>input.choice(model) == "dd"</enable>
+    </about>
+    <boolean id="recomb">
+      <about> <label>Recombination Model</label> </about>
+      <default>off</default>
+    </boolean>
+    <number id="taun">
+      <about>
+        <label>Minority Carrier Lifetime for electrons</label>
+        <enable>input.group(dd).boolean(recomb)</enable>
+      </about>
+      <default>1e-6</default>
+    </number>
+    <number id="taup">
+      <about>
+        <label>Minority Carrier Lifetime for holes</label>
+        <enable>input.group(dd).boolean(recomb)</enable>
+      </about>
+      <default>1e-6</default>
+    </number>
+  </group>
+  <group id="bte">
+    <about>
+      <label>Boltzmann Transport Equation Options</label>
+      <enable>input.choice(model) == "bte"</enable>
+    </about>
+    <number id="temp">
+      <about> <label>Temperature</label> </about>
+      <units>K</units>
+      <preset>
+        <value>300K</value>
+        <label>300K (room temperature)</label>
+      </preset>
+      <preset>
+        <value>77K</value>
+        <label>77K (liquid nitrogen)</label>
+      </preset>
+      <default>300K</default>
+    </number>
+    <integer id="secret">
+      <about>
+        <label>Secret input number</label>
+        <description>This number never shows up as a user control, but it can be accessed in the simulator.</description>
+        <enable>no</enable>
+      </about>
+      <default>7</default>
+    </integer>
+  </group>
+  <group id="negf">
+    <about>
+      <label>Quantum Mechanical Options</label>
+      <enable>input.choice(model) == "negf"</enable>
+    </about>
+    <number id="tbe">
+      <about> <label>Tight-binding Energy</label> </about>
+      <units>eV</units>
+      <min>0eV</min>
+      <max>10eV</max>
+      <default>3.12eV</default>
+    </number>
+    <number id="tau">
+      <about>
+        <label>High-energy lifetime</label>
+        <description>This is used only when the tight-binding energy is above 3eV</description>
+        <enable>input.(negf).(tbe):eV &gt;= 3</enable>
+      </about>
+      <units>ns</units>
+      <min>0s</min>
+      <max>1s</max>
+      <default>10ns</default>
+    </number>
+  </group>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/enable/tool2.xml
===================================================================
--- /tags/1.6.0/examples/zoo/enable/tool2.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/enable/tool2.xml	(revision 6168)
@@ -0,0 +1,113 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>enable</title>
+  <about>Examples of Rappture &lt;enable&gt; attributes.
+
+The &lt;enable&gt; attribute can be used to selectively enable/disable one object based on the value of others.
+
+In this example, we have a &lt;choice&gt; object that controls three groups.  Each group appears only when its corresponding choice is set.  Within the first group, we have an entry that depends on a &lt;boolean&gt; object.
+  </about>
+  <command>
+    tclsh @tool/enable.tcl @driver
+  </command>
+</tool>
+<input>
+  <choice id="model">
+    <about>
+      <label>Model</label>
+    </about>
+    <option>
+      <about><label>Drift-Diffusion</label></about>
+      <value>dd</value>
+    </option>
+    <option>
+      <about><label>Boltzmann Transport Equation</label></about>
+      <value>bte</value>
+    </option>
+    <option>
+      <about><label>Quantum Mechanical NEGF</label></about>
+      <value>negf</value>
+    </option>
+    <default>Drift-Diffusion</default>
+  </choice>
+
+  <group id="dd">
+    <about>
+      <label>Drift-Diffusion Options</label>
+      <enable>input.choice(model) == "dd"</enable>
+    </about>
+    <boolean id="recomb">
+      <about> <label>Recombination Model</label> </about>
+      <default>off</default>
+    </boolean>
+    <number id="taun">
+      <about>
+        <label>Minority Carrier Lifetime for electrons</label>
+        <enable>input.group(dd).boolean(recomb)</enable>
+        <disablestyle>hide</disablestyle>
+      </about>
+      <default>1e-6</default>
+    </number>
+    <number id="taup">
+      <about>
+        <label>Minority Carrier Lifetime for holes</label>
+        <enable>input.group(dd).boolean(recomb)</enable>
+        <disablestyle>hide</disablestyle>
+      </about>
+      <default>1e-6</default>
+    </number>
+  </group>
+  <group id="bte">
+    <about>
+      <label>Boltzmann Transport Equation Options</label>
+      <enable>input.choice(model) == "bte"</enable>
+    </about>
+    <number id="temp">
+      <about> <label>Temperature</label> </about>
+      <units>K</units>
+      <preset>
+        <value>300K</value>
+        <label>300K (room temperature)</label>
+      </preset>
+      <preset>
+        <value>77K</value>
+        <label>77K (liquid nitrogen)</label>
+      </preset>
+      <default>300K</default>
+    </number>
+    <integer id="secret">
+      <about>
+        <label>Secret input number</label>
+        <description>This number never shows up as a user control, but it can be accessed in the simulator.</description>
+        <enable>no</enable>
+      </about>
+      <default>7</default>
+    </integer>
+  </group>
+  <group id="negf">
+    <about>
+      <label>Quantum Mechanical Options</label>
+      <enable>input.choice(model) == "negf"</enable>
+    </about>
+    <number id="tbe">
+      <about> <label>Tight-binding Energy</label> </about>
+      <units>eV</units>
+      <min>0eV</min>
+      <max>10eV</max>
+      <default>3.12eV</default>
+    </number>
+    <number id="tau">
+      <about>
+        <label>High-energy lifetime</label>
+        <description>This is used only when the tight-binding energy is above 3eV</description>
+        <enable>input.(negf).(tbe):eV &gt;= 3</enable>
+      </about>
+      <units>ns</units>
+      <min>0s</min>
+      <max>1s</max>
+      <default>10ns</default>
+    </number>
+  </group>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/field/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/field/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/field/Makefile.in	(revision 6168)
@@ -0,0 +1,39 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/2DField.jpg \
+		$(srcdir)/3DField.jpg \
+		$(srcdir)/field.py \
+		$(srcdir)/field.tcl \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/field
+
+.PHONY: all install clean distclean
+
+all:
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/field/field.py
===================================================================
--- /tags/1.6.0/examples/zoo/field/field.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/field/field.py	(revision 6168)
@@ -0,0 +1,143 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <field> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+import numpy as np
+import sympy
+from sympy.abc import _clash
+from sympy.utilities.lambdify import lambdify
+
+# uncomment these for debugging
+# sys.stderr = open('tool.err', 'w')
+# sys.stdout = open('tool.out', 'w')
+
+rx = Rappture.PyXml(sys.argv[1])
+
+# Rather than using eval() which is unsafe and can collide with
+# local variables, we use sympy to parse the symbolic expression.
+# lambdify turns it into a callable function.
+formula = rx['input.string(formula).current'].value
+try:
+        formula = sympy.sympify(formula, _clash)
+except:
+    raise ValueError("Formula is not a valid expression.")
+formula = lambdify(formula.free_symbols, formula, modules=['numpy', 'mpmath', 'sympy'])
+
+xmin, xmax = 0, 4
+ymin, ymax = 0, 4
+num_steps = 5
+
+# Generate a uniform grid 2D mesh and field values...
+m2d = rx['output.mesh(m2d)']
+m2d['about.label'] = "2D Mesh"
+m2d['dim'] = 2
+m2d['units'] = "um"
+m2d['hide'] = "yes"
+m2d['grid.xaxis.min'] = xmin
+m2d['grid.xaxis.max'] = xmax
+m2d['grid.xaxis.numpoints'] = num_steps
+m2d['grid.yaxis.min'] = ymin
+m2d['grid.yaxis.max'] = ymax
+m2d['grid.yaxis.numpoints'] = num_steps
+
+f2d = rx['output.field(f2d)']
+f2d['about.label'] = "2D Field"
+f2d['component.mesh'] = "output.mesh(m2d)"
+
+x = np.linspace(xmin, xmax, num_steps)
+y = np.linspace(ymin, ymax, num_steps)
+
+# Important. meshgrid defaults to matlab compatibility
+# mode which transposes things. Tell it to use
+# normal 'ij' indexing instead.  Or use mgrid()
+xx, yy = np.meshgrid(x, y, indexing='ij')
+pts = formula(xx, yy, 1)
+f2d['component.values'] = pts
+
+vizmethod = rx['input.choice(3D).current'].value
+
+if vizmethod == "grid":
+    #
+    # Generate a uniform grid 3D mesh and field values...
+    #
+    m3d = rx['output.mesh(m3d)']
+    m3d['about.label'] = "3D Uniform Mesh"
+    m3d['dim'] = 3
+    m3d['units'] = "um"
+    m3d['hide'] = "yes"
+    m3d['grid.xaxis.min'] = xmin
+    m3d['grid.xaxis.max'] = xmax
+    m3d['grid.xaxis.numpoints'] = 5
+    m3d['grid.yaxis.min'] = ymin
+    m3d['grid.yaxis.max'] = ymax
+    m3d['grid.yaxis.numpoints'] = 5
+    m3d['grid.zaxis.min'] = 0.0
+    m3d['grid.zaxis.max'] = 1.0
+    m3d['grid.zaxis.numpoints'] = 2
+
+    f3d = rx['output.field(f3d)']
+    f3d['about.label'] = "3D Field"
+    f3d['component.mesh'] = "output.mesh(m3d)"
+
+    xx, yy, zz = np.mgrid[xmin:xmax:5j, ymin:ymax:5j, 0:1:2j]
+    pts = formula(xx, yy, zz)
+    f3d['component.values'] = pts
+
+if vizmethod == "unstructured":
+    #
+    # Generate an unstructured grid 3D mesh and field values...
+    #
+    m3d = rx['output.mesh(m3d)']
+
+    m3d['about.label'] = "3D Unstructured Mesh"
+    m3d['dim'] = 3
+    m3d['units'] = "um"
+    m3d['hide'] = "yes"
+
+    f3d = rx['output.field(f3d)']
+    f3d['about.label'] = "3D Field"
+    f3d['component.mesh'] = "output.mesh(m3d)"
+
+    x = np.linspace(xmin, xmax, 5)
+    y = np.linspace(ymin, ymax, 5)
+    z = np.linspace(0, 1, 2)
+    xx, yy, zz = np.meshgrid(x, y, z, indexing='ij')
+
+    # create list on index points with x changing fastest
+    upts = ''
+    for c in z:
+        for b in y:
+            for a in x:
+                upts += "%s %s %s\n" % (a, b, c)
+
+    # or you could use a list comprehension
+    # upts = ' '.join(["%s %s %s\n" % (a, b, c) for c in z for b in y for a in x])
+    m3d['unstructured.points'] = upts
+
+    pts = formula(xx, yy, zz)
+    f3d['component.values'] = pts
+
+    m3d['unstructured.hexahedrons'] = """
+    0 1 6 5 25 26 31 30
+    1 2 7 6 26 27 32 31
+    2 3 8 7 27 28 33 32
+    3 4 9 8 28 29 34 33
+    5 6 11 10 30 31 36 35
+    8 9 14 13 33 34 39 38
+    10 11 16 15 35 36 41 40
+    13 14 19 18 38 39 44 43
+    15 16 21 20 40 41 46 45
+    16 17 22 21 41 42 47 46
+    17 18 23 22 42 43 48 47
+    18 19 24 23 43 44 49 48
+    """
+
+rx.close()
Index: /tags/1.6.0/examples/zoo/field/field.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/field/field.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/field/field.tcl	(revision 6168)
@@ -0,0 +1,121 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <field> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+# get the formula and make it ready for evaluation
+set formula [$driver get input.string(formula).current]
+regsub -all {[xyz]} $formula {$\0} formula
+
+#
+# Generate a uniform grid 2D mesh and field values...
+#
+
+$driver put output.mesh(m2d).about.label "2D Mesh"
+$driver put output.mesh(m2d).dim 2
+$driver put output.mesh(m2d).units "um"
+$driver put output.mesh(m2d).hide "yes"
+$driver put output.mesh(m2d).grid.xaxis.min 0.0
+$driver put output.mesh(m2d).grid.xaxis.max 4.0
+$driver put output.mesh(m2d).grid.xaxis.numpoints 5
+$driver put output.mesh(m2d).grid.yaxis.min 0.0
+$driver put output.mesh(m2d).grid.yaxis.max 4.0
+$driver put output.mesh(m2d).grid.yaxis.numpoints 5
+
+$driver put output.field(f2d).about.label "2D Field"
+$driver put output.field(f2d).component.mesh "output.mesh(m2d)"
+
+set z 1
+for {set y 0} {$y < 5} {incr y} {
+    for {set x 0} {$x < 5} {incr x} {
+        set fval [expr $formula]
+        $driver put -append yes output.field(f2d).component.values "$fval\n"
+    }
+}
+
+#
+# See what sort of 3D data to generate...
+#
+set vizmethod [$driver get input.choice(3D).current]
+
+if {$vizmethod == "grid"} {
+    #
+    # Generate a uniform grid 3D mesh and field values...
+    #
+    $driver put output.mesh(m3d).about.label "3D Uniform Mesh"
+    $driver put output.mesh(m3d).dim 3
+    $driver put output.mesh(m3d).units "um"
+    $driver put output.mesh(m3d).hide "yes"
+    $driver put output.mesh(m3d).grid.xaxis.min 0.0
+    $driver put output.mesh(m3d).grid.xaxis.max 4.0
+    $driver put output.mesh(m3d).grid.xaxis.numpoints 5
+    $driver put output.mesh(m3d).grid.yaxis.min 0.0
+    $driver put output.mesh(m3d).grid.yaxis.max 4.0
+    $driver put output.mesh(m3d).grid.yaxis.numpoints 5
+    $driver put output.mesh(m3d).grid.zaxis.min 0.0
+    $driver put output.mesh(m3d).grid.zaxis.max 1.0
+    $driver put output.mesh(m3d).grid.zaxis.numpoints 2
+
+    $driver put output.field(f3d).about.label "3D Field"
+    $driver put output.field(f3d).component.mesh "output.mesh(m3d)"
+
+    for {set z 0} {$z < 2} {incr z} {
+        for {set y 0} {$y < 5} {incr y} {
+            for {set x 0} {$x < 5} {incr x} {
+                set fval [expr $formula]
+                $driver put -append yes output.field(f3d).component.values "$fval\n"
+            }
+        }
+    }
+}
+
+if {$vizmethod == "unstructured"} {
+    #
+    # Generate an unstructured grid 3D mesh and field values...
+    #
+    $driver put output.mesh(m3d).about.label "3D Unstructured Mesh"
+    $driver put output.mesh(m3d).dim 3
+    $driver put output.mesh(m3d).units "um"
+    $driver put output.mesh(m3d).hide "yes"
+
+    $driver put output.field(f3d).about.label "3D Field"
+    $driver put output.field(f3d).component.mesh "output.mesh(m3d)"
+
+    for {set z 0} {$z < 2} {incr z} {
+        for {set y 0} {$y < 5} {incr y} {
+            for {set x 0} {$x < 5} {incr x} {
+                $driver put -append yes output.mesh(m3d).unstructured.points "$x $y $z\n"
+                set fval [expr $formula]
+                $driver put -append yes output.field(f3d).component.values "$fval\n"
+            }
+        }
+    }
+
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "0 1 6 5 25 26 31 30\n"
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "1 2 7 6 26 27 32 31\n"
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "2 3 8 7 27 28 33 32\n"
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "3 4 9 8 28 29 34 33\n"
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "5 6 11 10 30 31 36 35\n"
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "8 9 14 13 33 34 39 38\n"
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "10 11 16 15 35 36 41 40\n"
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "13 14 19 18 38 39 44 43\n"
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "15 16 21 20 40 41 46 45\n"
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "16 17 22 21 41 42 47 46\n"
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "17 18 23 22 42 43 48 47\n"
+    $driver put -append yes output.mesh(m3d).unstructured.hexahedrons "18 19 24 23 43 44 49 48\n"
+}
+
+#
+# Save the updated XML describing the run...
+#
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/field/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/field/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/field/test/defaults.xml	(revision 6168)
@@ -0,0 +1,211 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>field</title>
+        <about>Example of a Rappture &lt;field&gt; object.
+
+Fields are a set of values defined on a mesh of some sort (see &lt;mesh&gt; element for details).
+
+When you click the Simulate button, the inputs will be used to generate output fields.
+  </about>
+        <command>
+    tclsh @tool/field.tcl @driver
+  </command>
+        <limits>
+            <cputime>unlimited</cputime>
+            <filesize>unlimited</filesize>
+        </limits>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 3362 $</revision>
+                <modified>$LastChangedDate: 2013-02-26 16:34:35 -0500 (Tue, 26 Feb 2013) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <string id="formula">
+            <about>
+                <label>Formula</label>
+                <description>Formula used to calculate the value of the field.</description>
+                <hints>Example:  2*x*y + z</hints>
+            </about>
+            <default>x*y*z</default>
+            <current>x*y*z</current>
+        </string>
+        <separator/>
+        <choice id="3D">
+            <about>
+                <label>3D Rendering</label>
+                <description>Determines the mesh type and method used for 3D rendering</description>
+            </about>
+            <option>
+                <about>
+                    <label>Isosurface (Uniform Grid)</label>
+                    <description>Renders a series of isosurfaces using a uniform 3D grid mesh.</description>
+                </about>
+                <value>grid</value>
+            </option>
+            <option>
+                <about>
+                    <label>Isosurface (Unstructured Grid)</label>
+                    <description>Renders a series of isosurfaces using an unstructured 3D grid mesh with a hole.</description>
+                </about>
+                <value>unstructured</value>
+            </option>
+            <option>
+                <about>
+                    <label>Volume (OpenDX)</label>
+                    <description>Renders a 3D volume using the deprecated OpenDX mesh/field format.</description>
+                </about>
+                <value>dx</value>
+            </option>
+            <default>grid</default>
+            <current>grid</current>
+        </choice>
+    </input>
+    <output>
+        <mesh id="m2d">
+            <about>
+                <label>2D Mesh</label>
+            </about>
+            <dim>2</dim>
+            <units>um</units>
+            <hide>yes</hide>
+            <grid>
+                <xaxis>
+                    <min>0</min>
+                    <max>4</max>
+                    <numpoints>5</numpoints>
+                </xaxis>
+                <yaxis>
+                    <min>0</min>
+                    <max>4</max>
+                    <numpoints>5</numpoints>
+                </yaxis>
+            </grid>
+        </mesh>
+        <field id="f2d">
+            <about>
+                <label>2D Field</label>
+            </about>
+            <component>
+                <mesh>output.mesh(m2d)</mesh>
+                <values>0
+0
+0
+0
+0
+0
+1
+2
+3
+4
+0
+2
+4
+6
+8
+0
+3
+6
+9
+12
+0
+4
+8
+12
+16
+</values>
+            </component>
+        </field>
+        <mesh id="m3d">
+            <about>
+                <label>3D Uniform Mesh</label>
+            </about>
+            <dim>3</dim>
+            <units>um</units>
+            <hide>yes</hide>
+            <grid>
+                <xaxis>
+                    <min>0</min>
+                    <max>4</max>
+                    <numpoints>5</numpoints>
+                </xaxis>
+                <yaxis>
+                    <min>0</min>
+                    <max>4</max>
+                    <numpoints>5</numpoints>
+                </yaxis>
+                <zaxis>
+                    <min>0</min>
+                    <max>1</max>
+                    <numpoints>2</numpoints>
+                </zaxis>
+            </grid>
+        </mesh>
+        <field id="f3d">
+            <about>
+                <label>3D Field</label>
+            </about>
+            <component>
+                <mesh>output.mesh(m3d)</mesh>
+                <values>0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+2
+3
+4
+0
+2
+4
+6
+8
+0
+3
+6
+9
+12
+0
+4
+8
+12
+16
+</values>
+            </component>
+        </field>
+        <time>Sat Jun 15 12:14:09 AM EDT 2013</time>
+        <status>ok</status>
+        <user>ldelgass</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/field/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/field/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/field/tool.xml	(revision 6168)
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>field</title>
+  <about>Example of a Rappture &lt;field&gt; object.
+
+Fields are a set of values defined on a mesh of some sort (see &lt;mesh&gt; element for details).
+
+When you click the Simulate button, the inputs will be used to generate output fields.
+  </about>
+  <command>
+    tclsh @tool/field.tcl @driver
+  </command>
+  <limits>
+    <cputime>unlimited</cputime>
+    <filesize>unlimited</filesize>
+  </limits>
+</tool>
+<input>
+  <string id="formula">
+    <about>
+      <label>Formula</label>
+      <description>Formula used to calculate the value of the field.</description>
+      <hints>Example:  2*x*y + z</hints>
+    </about>
+    <default>x*y*z</default>
+  </string>
+  <separator/>
+  <choice id="3D">
+    <about>
+      <label>3D Rendering</label>
+      <description>Determines the mesh type and method used for 3D rendering</description>
+    </about>
+    <option>
+      <about>
+        <label>Isosurface (Uniform Grid)</label>
+        <description>Renders a series of isosurfaces using a uniform 3D grid mesh.</description>
+      </about>
+      <value>grid</value>
+    </option>
+    <option>
+      <about>
+        <label>Isosurface (Unstructured Grid)</label>
+        <description>Renders a series of isosurfaces using an unstructured 3D grid mesh with a hole.</description>
+      </about>
+      <value>unstructured</value>
+    </option>
+    <default>grid</default>
+  </choice>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/group/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/group/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/group/Makefile.in	(revision 6168)
@@ -0,0 +1,39 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/group.py \
+		$(srcdir)/group.tcl \
+		$(srcdir)/group1.gif \
+		$(srcdir)/group2.gif \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/group
+
+.PHONY: all install clean distclean 
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/group/group.py
===================================================================
--- /tags/1.6.0/examples/zoo/group/group.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/group/group.py	(revision 6168)
@@ -0,0 +1,40 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <group> attributes
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+
+# uncomment these for debugging
+# sys.stdout = open('group.out', 'w')
+# sys.stderr = open('group.err', 'w')
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+re = rx['input.group.(models).(recomb).current'].value
+tn = rx['input.group.(models).(tau).(taun).current'].value
+tp = rx['input.group.(models).(tau).(taup).current'].value
+
+temp = rx['input.group.(ambient).(temp).current'].value
+lat = rx['input.group.(ambient).(loc).(lat).current'].value
+lon = rx['input.group.(ambient).(loc).(long).current'].value
+
+rx['output.log'] = """Models:
+  Recombination: %s
+  taun = %s
+  taup = %s
+
+Ambient:
+  tempK = %s
+  lat, long = (%s, %s)
+""" % (re, tn, tp, temp, lat, lon)
+
+# save the updated XML describing the run...
+rx.close()
Index: /tags/1.6.0/examples/zoo/group/group.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/group/group.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/group/group.tcl	(revision 6168)
@@ -0,0 +1,31 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <group> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set re [$driver get input.group.(models).(recomb).current]
+set tn [$driver get input.group.(models).(tau).(taun).current]
+set tp [$driver get input.group.(models).(tau).(taup).current]
+
+set temp [$driver get input.group.(ambient).(temp).current]
+
+$driver put output.log "Models:
+  Recombination: $re
+  taun = $tn
+  taup = $tp
+
+Ambient:
+  tempK = $temp"
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/group/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/group/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/group/test/defaults.xml	(revision 6168)
@@ -0,0 +1,88 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>group</title>
+        <about>Examples of Rappture &lt;group&gt; objects.
+
+Groups provide a way of grouping input elements.
+
+Groups can be used two ways:  A group of elements is normally drawn with a gray border around it.  A group of groups is drawn as a set of tabs.  You can see both examples in the inputs on the left.
+
+Group tags can also be used in the output section to overlay plots, but that's really a coincidence.  The name conflict is confusing and should probably be changed.
+  </about>
+        <command>
+    tclsh @tool/group.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <!-- This group of groups is drawn as a set of tabs -->
+        <group id="tabs">
+            <group id="models">
+                <about>
+                    <label>Models</label>
+                </about>
+                <boolean id="recomb">
+                    <about>
+                        <label>Recombination Model</label>
+                    </about>
+                    <default>on</default>
+                    <current>yes</current>
+                </boolean>
+                <!-- This group has a gray border around it-->
+                <group id="tau">
+                    <about>
+                        <label>Minority carrier lifetimes</label>
+                    </about>
+                    <number id="taun">
+                        <about>
+                            <label>For electrons</label>
+                        </about>
+                        <default>1e-6</default>
+                        <current>1e-6</current>
+                    </number>
+                    <number id="taup">
+                        <about>
+                            <label>For holes</label>
+                        </about>
+                        <default>1e-6</default>
+                        <current>1e-6</current>
+                    </number>
+                </group>
+            </group>
+            <group id="ambient">
+                <about>
+                    <label>Ambient</label>
+                </about>
+                <number id="temp">
+                    <about>
+                        <label>Temperature</label>
+                    </about>
+                    <units>K</units>
+                    <default>300K</default>
+                    <current>300K</current>
+                </number>
+            </group>
+        </group>
+    </input>
+    <output>
+        <log>Models:
+  Recombination: yes
+  taun = 1e-6
+  taup = 1e-6
+
+Ambient:
+  tempK = 300K</log>
+        <time>Wed Dec 10 00:57:01 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/group/test/random1.xml
===================================================================
--- /tags/1.6.0/examples/zoo/group/test/random1.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/group/test/random1.xml	(revision 6168)
@@ -0,0 +1,88 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>group</title>
+        <about>Examples of Rappture &lt;group&gt; objects.
+
+Groups provide a way of grouping input elements.
+
+Groups can be used two ways:  A group of elements is normally drawn with a gray border around it.  A group of groups is drawn as a set of tabs.  You can see both examples in the inputs on the left.
+
+Group tags can also be used in the output section to overlay plots, but that's really a coincidence.  The name conflict is confusing and should probably be changed.
+  </about>
+        <command>
+    tclsh @tool/group.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <!-- This group of groups is drawn as a set of tabs -->
+        <group id="tabs">
+            <group id="models">
+                <about>
+                    <label>Models</label>
+                </about>
+                <boolean id="recomb">
+                    <about>
+                        <label>Recombination Model</label>
+                    </about>
+                    <default>on</default>
+                    <current>no</current>
+                </boolean>
+                <!-- This group has a gray border around it-->
+                <group id="tau">
+                    <about>
+                        <label>Minority carrier lifetimes</label>
+                    </about>
+                    <number id="taun">
+                        <about>
+                            <label>For electrons</label>
+                        </about>
+                        <default>1e-6</default>
+                        <current>4.4</current>
+                    </number>
+                    <number id="taup">
+                        <about>
+                            <label>For holes</label>
+                        </about>
+                        <default>1e-6</default>
+                        <current>623</current>
+                    </number>
+                </group>
+            </group>
+            <group id="ambient">
+                <about>
+                    <label>Ambient</label>
+                </about>
+                <number id="temp">
+                    <about>
+                        <label>Temperature</label>
+                    </about>
+                    <units>K</units>
+                    <default>300K</default>
+                    <current>12R</current>
+                </number>
+            </group>
+        </group>
+    </input>
+    <output>
+        <log>Models:
+  Recombination: no
+  taun = 4.4
+  taup = 623
+
+Ambient:
+  tempK = 12R</log>
+        <time>Wed Dec 10 01:00:56 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/group/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/group/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/group/tool.xml	(revision 6168)
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>group</title>
+  <about>Examples of Rappture &lt;group&gt; objects.
+
+Groups provide a way of grouping input elements.
+
+Groups can be used two ways:  A group of elements is normally drawn with a gray border around it.  A group of groups is drawn as a set of tabs.  You can see both examples in the inputs on the left.
+
+Group tags can also be used in the output section to overlay plots, but that's really a coincidence.  The name conflict is confusing and should probably be changed.
+  </about>
+  <command>
+    python @tool/group.py @driver
+  </command>
+</tool>
+<input>
+  <!-- This group of groups is drawn as a set of tabs -->
+  <group id="tabs">
+    <group id="models">
+      <about> <label>Models</label> </about>
+      <boolean id="recomb">
+        <about> <label>Recombination Model</label> </about>
+        <default>on</default>
+      </boolean>
+
+      <!-- This group has a gray border around it-->
+      <group id="tau">
+        <about>
+          <label>Minority carrier lifetimes</label>
+          <layout>horizontal</layout>
+        </about>
+
+        <number id="taun">
+          <about> <label>For electrons</label> </about>
+          <default>1e-6</default>
+        </number>
+        <number id="taup">
+          <about> <label>For holes</label> </about>
+          <default>1e-6</default>
+        </number>
+      </group>
+    </group>
+
+    <group id="ambient">
+      <about> <label>Ambient</label> </about>
+      <number id="temp">
+        <about> <label>Temperature</label> </about>
+        <units>K</units>
+        <default>300K</default>
+      </number>
+      <group id="loc">
+        <about> <layout>sentence:Location = (${lat},${long})</layout> </about>
+        <number id="lat">
+          <about> <label>Latitude</label> </about>
+          <default>40.42</default>
+        </number>
+        <number id="long">
+          <about> <label>Longitude</label> </about>
+          <default>-86.91</default>
+        </number>
+      </group>
+    </group>
+  </group>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/histogram/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/histogram/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/histogram/Makefile.in	(revision 6168)
@@ -0,0 +1,39 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/curve1.gif \
+		$(srcdir)/curve2.gif \
+		$(srcdir)/histogram.py \
+		$(srcdir)/histogram.tcl \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/histogram
+
+.PHONY: all install clean distclean 
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/histogram/histogram.py
===================================================================
--- /tags/1.6.0/examples/zoo/histogram/histogram.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/histogram/histogram.py	(revision 6168)
@@ -0,0 +1,83 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <histogram> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+import Rappture
+import sys
+import numpy as np
+
+rx = Rappture.PyXml(sys.argv[1])
+
+num_points = int(rx['input.(points).current'].value)
+x = np.linspace(1, 10, num_points)
+
+# generate a single histogram
+hist = rx['output.histogram(single)']
+hist['about.label'] = "Single histogram"
+hist['about.description'] = \
+    "This is an example of a single histogram."
+hist['xaxis.label'] = "Time"
+hist['xaxis.description'] = "Time during the experiment."
+hist['xaxis.units'] = "s"
+hist['yaxis.label'] = "Voltage v(11)"
+hist['yaxis.description'] = "Output from the amplifier."
+hist['yaxis.units'] = "V"
+y = np.cos(x)/(1+x)
+hist['component.xy'] = (x, y)
+
+# generate multiple histograms on the same plot
+for factor in [1, 2]:
+    hist = rx['output.histogram(multi%s)' % factor]
+    hist['about.group'] = "Multiple histogram"
+    hist['about.label'] = "Factor a=%s" % factor
+    hist['about.description'] = \
+        "This is an example of a multiple histograms on the same plot."
+    hist['xaxis.label'] = "Frequency"
+    hist['xaxis.description'] = "Frequency of the input source."
+    hist['xaxis.units'] = "Hz"
+    hist['yaxis.label'] = "Current"
+    hist['yaxis.description'] = "Current through the pull-down resistor."
+    hist['yaxis.units'] = "uA"
+    hist['yaxis.log'] = "log"
+    y = np.power(2.0, factor*x)/x
+    hist['component.xy'] = (x, y)
+
+# For the next part, only use 10 labels
+x = np.linspace(1, 10, 10)
+
+# generate a name value histogram
+hist = rx['output.histogram(namevalue)']
+hist['about.label'] = "Name value histogram"
+hist['about.description'] = \
+    "This is an example of a name value histogram."
+hist['about.type'] = "scatter"
+hist['xaxis.label'] = "Time"
+hist['xaxis.description'] = "Time during the experiment."
+hist['xaxis.units'] = "s"
+hist['yaxis.label'] = "Voltage v(11)"
+hist['yaxis.description'] = "Output from the amplifier."
+hist['yaxis.units'] = "V"
+y = np.cos(x)/(1+x)
+labels = ['Bengal Tigers', 'Bears', 'Lions', 'Monkeys', 'Hawks',
+    'Elephants', 'Foxes', 'Geckos', 'Zebras', 'Giraffes']
+hist['component.xy'] = (labels, y)
+
+hist = rx['output.histogram(width)']
+hist['about.label'] = "Variable-Width histogram"
+hist['about.description'] = \
+    "This is an example of an <xhw> histogram."
+hist['xaxis.label'] = "Time"
+hist['xaxis.description'] = "Time during the experiment."
+hist['xaxis.units'] = "s"
+hist['yaxis.label'] = "Voltage v(11)"
+hist['yaxis.description'] = "Output from the amplifier."
+hist['yaxis.units'] = "V"
+y = x
+hist['component.xhw'] = (labels, y, x/10)
+
+rx.close()
Index: /tags/1.6.0/examples/zoo/histogram/histogram.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/histogram/histogram.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/histogram/histogram.tcl	(revision 6168)
@@ -0,0 +1,86 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <histogram> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set npts [$driver get input.(points).current]
+set min 1
+set max 10.0
+set dx [expr {($max-$min)/double($npts)}]
+
+# generate a single histogram
+$driver put output.histogram(single).about.label "Single histogram"
+$driver put output.histogram(single).about.description \
+    "This is an example of a single histogram."
+$driver put output.histogram(single).xaxis.label "Time"
+$driver put output.histogram(single).xaxis.description "Time during the experiment."
+$driver put output.histogram(single).xaxis.units "s"
+$driver put output.histogram(single).yaxis.label "Voltage v(11)"
+$driver put output.histogram(single).yaxis.description "Output from the amplifier."
+$driver put output.histogram(single).yaxis.units "V"
+
+for {set x $min} {$x < $max} {set x [expr {$x+$dx}]} {
+    set y [expr {cos($x)/(1+$x)}]
+    $driver put -append yes output.histogram(single).component.xy "$x $y\n"
+}
+
+# generate multiple histograms on the same plot
+foreach factor {1 2} {
+    $driver put output.histogram(multi$factor).about.group "Multiple histogram"
+    $driver put output.histogram(multi$factor).about.label "Factor a=$factor"
+    $driver put output.histogram(multi$factor).about.description \
+        "This is an example of a multiple histograms on the same plot."
+    $driver put output.histogram(multi$factor).xaxis.label "Frequency"
+    $driver put output.histogram(multi$factor).xaxis.description \
+        "Frequency of the input source."
+    $driver put output.histogram(multi$factor).xaxis.units "Hz"
+    $driver put output.histogram(multi$factor).yaxis.label "Current"
+    $driver put output.histogram(multi$factor).yaxis.description \
+        "Current through the pull-down resistor."
+    $driver put output.histogram(multi$factor).yaxis.units "uA"
+    $driver put output.histogram(multi$factor).yaxis.log "log"
+
+    for {set x $min} {$x < $max} {set x [expr {$x+$dx}]} {
+        set y [expr {pow(2.0,$factor*$x)/$x}]
+        $driver put -append yes \
+            output.histogram(multi$factor).component.xy "$x $y\n"
+    }
+}
+
+# generate a name value histogram
+set prefix output.histogram(namevalue)
+$driver put $prefix.about.label "Name value histogram"
+$driver put $prefix.about.description \
+    "This is an example of a name value histogram."
+$driver put $prefix.about.type "scatter"
+$driver put $prefix.xaxis.label "Time"
+$driver put $prefix.xaxis.description "Time during the experiment."
+$driver put output.histogram(namevalue).xaxis.units "s"
+$driver put output.histogram(namevalue).yaxis.label "Voltage v(11)"
+$driver put output.histogram(namevalue).yaxis.description "Output from the amplifier."
+$driver put output.histogram(namevalue).yaxis.units "V"
+
+set labels { 
+  Apple Bread Cumcumber Date Eel Fish Grape Hotdog "Ice Cream" 
+  Java Knife L M N O P 
+}
+set count 0
+for {set x $min} {$x < $max} {set x [expr {$x+$dx}]} {
+    set y [expr {cos($x)/(1+$x)}]
+    set name [lindex $labels $count]
+    incr count
+    $driver put -append yes $prefix.component.xy "[list $name $y]\n"
+}
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/histogram/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/histogram/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/histogram/test/defaults.xml	(revision 6168)
@@ -0,0 +1,134 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>curve</title>
+        <about>Example of a Rappture &lt;curve&gt; object.
+
+Curves are a list of (x,y) data points, representing discrete samples of a function y(x).
+
+When you click the Simulate button, the inputs will be used to generate output curves.
+  </about>
+        <command>
+    tclsh @tool/curve.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <integer id="points">
+            <about>
+                <label>Number of points</label>
+                <description>Determines the number of data points in all output curves.</description>
+            </about>
+            <min>2</min>
+            <max>1000</max>
+            <default>10</default>
+            <current>10</current>
+        </integer>
+    </input>
+    <output>
+        <curve id="single">
+            <about>
+                <label>Single curve</label>
+                <description>This is an example of a single curve.</description>
+            </about>
+            <xaxis>
+                <label>Time</label>
+                <description>Time during the experiment.</description>
+                <units>s</units>
+            </xaxis>
+            <yaxis>
+                <label>Voltage v(11)</label>
+                <description>Output from the amplifier.</description>
+                <units>V</units>
+            </yaxis>
+            <component>
+                <xy>0.01 0.990049505363
+1.009 0.265160421676
+2.008 -0.140760579036
+3.007 -0.247306232561
+4.006 -0.129662618375
+5.005 0.0480355105893
+6.004 0.137247325002
+7.003 0.0939557547102
+8.002 -0.016382854697
+9.001 -0.0911450779658
+</xy>
+            </component>
+        </curve>
+        <curve id="multi1">
+            <about>
+                <group>Multiple curves</group>
+                <label>Factor a=1</label>
+                <description>This is an example of multiple curves on the same plot.</description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xy>0.01 100.695555006
+1.009 1.9945645659
+2.008 2.00310872589
+3.007 2.67339892364
+4.006 4.01065419167
+5.005 6.41580338707
+6.004 10.689155879
+7.003 18.3159282379
+8.002 32.036383087
+9.001 56.9220102634
+</xy>
+            </component>
+        </curve>
+        <curve id="multi2">
+            <about>
+                <group>Multiple curves</group>
+                <label>Factor a=2</label>
+                <description>This is an example of multiple curves on the same plot.</description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xy>0.01 101.395947979
+1.009 4.01409239782
+2.008 8.05698869204
+3.007 21.4912148474
+4.006 64.4379002629
+5.005 206.018478173
+6.004 686.00535265
+7.003 2349.3190102
+8.002 8212.69139005
+9.001 29164.2773871
+</xy>
+            </component>
+        </curve>
+        <time>Wed Dec 10 00:40:46 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/histogram/test/nodata.xml
===================================================================
--- /tags/1.6.0/examples/zoo/histogram/test/nodata.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/histogram/test/nodata.xml	(revision 6168)
@@ -0,0 +1,220 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>curve</title>
+        <about>Example of a Rappture &lt;curve&gt; object.
+
+Curves are a list of (x,y) data points, representing discrete samples of a function y(x).
+
+When you click the Simulate button, the inputs will be used to generate output curves.
+  </about>
+        <command>
+    tclsh @tool/curve.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <integer id="points">
+            <about>
+                <label>Number of points</label>
+                <description>Determines the number of data points in all output curves.</description>
+            </about>
+            <min>2</min>
+            <max>1000</max>
+            <default>10</default>
+            <current>10</current>
+        </integer>
+    </input>
+    <output>
+        <curve id="single">
+            <about>
+                <label>Single curve</label>
+                <description>This is an example of a single curve.</description>
+            </about>
+            <xaxis>
+                <label>Time</label>
+                <description>Time during the experiment.</description>
+                <units>s</units>
+            </xaxis>
+            <yaxis>
+                <label>Voltage v(11)</label>
+                <description>Output from the amplifier.</description>
+                <units>V</units>
+            </yaxis>
+            <component>
+                <xy>0.01 0.990049505363
+1.009 0.265160421676
+2.008 -0.140760579036
+3.007 -0.247306232561
+4.006 -0.129662618375
+5.005 0.0480355105893
+6.004 0.137247325002
+7.003 0.0939557547102
+8.002 -0.016382854697
+9.001 -0.0911450779658
+</xy>
+            </component>
+        </curve>
+        <curve id="multi1">
+            <about>
+                <group>Multiple curves</group>
+                <label>Factor a=1</label>
+                <description>This is an example of multiple curves on the same plot.</description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xy>0.01 100.695555006
+1.009 1.9945645659
+2.008 2.00310872589
+3.007 2.67339892364
+4.006 4.01065419167
+5.005 6.41580338707
+6.004 10.689155879
+7.003 18.3159282379
+8.002 32.036383087
+9.001 56.9220102634
+</xy>
+            </component>
+        </curve>
+        <curve id="multi2">
+            <about>
+                <group>Multiple curves</group>
+                <label>Factor a=2</label>
+                <description>This is an example of multiple curves on the same plot.</description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xy>0.01 101.395947979
+1.009 4.01409239782
+2.008 8.05698869204
+3.007 21.4912148474
+4.006 64.4379002629
+5.005 206.018478173
+6.004 686.00535265
+7.003 2349.3190102
+8.002 8212.69139005
+9.001 29164.2773871
+</xy>
+            </component>
+        </curve>
+        <curve id="xyvectortest">
+            <about>
+                <label>xy vector test</label>
+                <description></description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xvector>0.01
+1.009
+2.008
+3.007
+4.006
+5.005
+6.004
+7.003
+8.002
+9.001
+</xvector>
+                <yvector>101.395947979
+4.01409239782
+8.05698869204
+21.4912148474
+64.4379002629
+206.018478173
+686.00535265
+2349.3190102
+8212.69139005
+29164.2773871
+</yvector>
+            </component>
+        </curve>
+        <curve id="nodata">
+            <about>
+                <group>nodata</group>
+                <label>No data</label>
+                <description>This is an example of multiple curves on the same plot.</description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xy></xy>
+            </component>
+        </curve>
+        <curve id="nodata2">
+            <about>
+                <label>No data 2</label>
+                <description></description>
+            </about>
+            <xaxis>
+                <label>Frequency</label>
+                <description>Frequency of the input source.</description>
+                <units>Hz</units>
+                <scale>log</scale>
+            </xaxis>
+            <yaxis>
+                <label>Current</label>
+                <description>Current through the pull-down resistor.</description>
+                <units>uA</units>
+                <scale>log</scale>
+            </yaxis>
+            <component>
+                <xvector></xvector>
+                <yvector></yvector>
+            </component>
+        </curve>
+        <time>Wed Dec 10 00:40:46 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/histogram/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/histogram/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/histogram/tool.xml	(revision 6168)
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>histogram</title>
+  <about>Example of a Rappture &lt;histogram&gt; object.
+
+histograms are a list of (x,y) data points, representing discrete samples of a function y(x).
+
+When you click the Simulate button, the inputs will be used to generate output histograms.
+  </about>
+  <command>
+    python @tool/histogram.py @driver
+  </command>
+</tool>
+<input>
+  <integer id="points">
+    <about>
+      <label>Number of points</label>
+      <description>Determines the number of data points in all output histograms.</description>
+    </about>
+    <min>2</min>
+    <max>1000</max>
+    <default>10</default>
+  </integer>
+</input>
+<output>
+<histogram id="example">
+    <about>
+      <label>Single dataset</label>
+      <description>This is an example of a single histogram.</description>
+    </about>
+    <xaxis>
+      <label>Time</label>
+      <description>Time during the experiment.</description>
+      <units>s</units>
+      <marker>
+        <at>5</at>
+        <label>Look here</label>
+        <style>-foreground red -linewidth 2</style>
+       </marker>
+    </xaxis>
+    <yaxis>
+      <label>Voltage v(11)</label>
+      <description>Output from the amplifier.</description>
+      <units>V</units>
+    </yaxis>
+    <component>
+      <xy>
+       1 0.99
+       2 0.34
+       4 0.57
+       6 0.22
+       7 0.11
+       </xy>
+     </component>
+   </histogram>
+</output>
+</run>
Index: /tags/1.6.0/examples/zoo/image/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/image/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/image/Makefile.in	(revision 6168)
@@ -0,0 +1,47 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/image.py \
+		$(srcdir)/image.tcl \
+		$(srcdir)/image1.gif \
+		$(srcdir)/image2.gif \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/zoo/image
+
+.PHONY: all install clean distclean 
+
+all: 
+	$(MAKE) -C examples all
+	$(MAKE) -C docs all
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	$(MAKE) -C examples install
+	$(MAKE) -C docs install
+
+clean:
+	$(MAKE) -C examples clean
+	$(MAKE) -C docs clean
+
+distclean: 
+	$(MAKE) -C examples distclean
+	$(MAKE) -C docs distclean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/image/docs/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/image/docs/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/image/docs/Makefile.in	(revision 6168)
@@ -0,0 +1,36 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/angles.html \
+		$(srcdir)/image2.gif
+
+destdir		= $(prefix)/examples/zoo/image/docs
+
+.PHONY: all install clean distclean 
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/image/docs/angles.html
===================================================================
--- /tags/1.6.0/examples/zoo/image/docs/angles.html	(revision 6168)
+++ /tags/1.6.0/examples/zoo/image/docs/angles.html	(revision 6168)
@@ -0,0 +1,16 @@
+<html>
+<body>
+<h3>Image rotation is based on the input angle specified by the user</h3>
+<p>
+<div style="float: right;">
+<img src="image2.gif"/><br/>
+</div>
+Rappture can handle differnt units for angles, like deg (Degrees) and rad (Radians)
+Learn more about angles:
+<ul>
+<li><a href="http://wikipedia.org/wiki/Degree_%28angle%29">Degrees</a></li>
+<li><a href="http://wikipedia.org/wiki/Radian">Radian</a></li>
+</ul>
+</p>
+</body>
+</html>
Index: /tags/1.6.0/examples/zoo/image/examples/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/image/examples/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/image/examples/Makefile.in	(revision 6168)
@@ -0,0 +1,36 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/circuits.xml \
+		$(srcdir)/nanohub.xml
+
+destdir		= $(prefix)/examples/zoo/image/examples
+
+.PHONY: all install clean distclean 
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/image/examples/circuits.xml
===================================================================
--- /tags/1.6.0/examples/zoo/image/examples/circuits.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/image/examples/circuits.xml	(revision 6168)
@@ -0,0 +1,343 @@
+<?xml version="1.0"?>
+<run>
+<about>
+ <label>Circuits</label>
+</about>
+<input>
+  <image>
+    <current>
+/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/b
+AIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxsc
+Hx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f
+Hx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBLAEsAwERAAIRAQMRAf/EALMAAQABBQEBAQAAAAAAAAAA
+AAAGAQMEBQcCCAkBAQACAwEBAAAAAAAAAAAAAAAEBQEDBgIHEAABAwMCAwQFBgoHBQkBAAABAgME
+ABEFIRIxQQZRIhMHYXGBMhSRoUJSIxWxwdFicpKi0jNT4YKykyRUCENjczQl8PHC4oOjZBYXRBEB
+AAICAQIEAwcDBQEBAAAAAAECEQMEITFBURIFYSIT8HGBkbHBMqFCBtHh8VIUI8L/2gAMAwEAAhED
+EQA/APokb+00FwBfaaD2N3aaD0ArtNB7AV20HoBXaaCF9bFUvqDAYsKJSuUH3Eg8Awnfe3rIoJFg
+yt5zIyCoqSuSpDf6LQCdPbeg2u09tAse2gpZXbQLK7aBY9tAsrtoKWV20Cyu2g8rVsQVqJCUi5PH
+SgxGcrEekIjtrUXHEb0EpUkW42uRxtyoLzcxtUgsIUrxU33J1uAOZ9Bvp20F8uvfXV8tBTxXvrq+
+Wgp4r/8AMV8tA8V/66vloKeK/wDXV8tA8Z/+Yr5aDXZ6EvI4x+K4tSm3ElK0bjZSTxFBDcDm8pBe
++GkPuOP4wBp9u5+1hnRt1I7UcD7KT0E/blOuNpdbeK21gFKgbgg0jqTEwr48j+Yr5ax0FPiJH8xX
+y1kU+Ik/zFfLQUMiT/NV8tB5U/JUkjxVi4te5pgy5w1KlY/L56B8V8OZBTPYUVhG5y9nLk21JrEz
+EERlP8fkpMqCxJDq/tm0q487a/PWci98TK/mr+U0FDJlfzl/KaCnxUu/8ZfymgvpRQewigqpkqQU
+hRQT9JNrj5QaC2ILv+ae/Y/doMYRJDuXUkTHw1HaBUkFOq3CbXG23uimYGU+23GYXIkz1sMNjc46
+6ttCEjtUopAFYmcd2YiZnDnWOzWIzPmG6/DyqJTGNhKWhxpxtSitSiVBNhqAlJvYaV5jZWe0s2pM
+d4TfpzGvIwsUqlPJW6kurA2cXCVHin017eWz+Cd/zb37H7lA+Cdtb4t7/wBv9ygsTYzzUJ9wS3ro
+bWoe5xCT+ZQUhQJAhshcx9S9iSpRKCbkX5poL/wTv+be9vh/uUFPgnv829/7f7lA+Df/AM278jf7
+lA+Df/zbvyNfuUD4N/8Azbv6rf7lB4MBe8L+Jc3gWCtrVwOy+ygfAu7ioSnNxFidrV9OH0KD0Ijw
+/wD6nD60t/uUFDFf/wAyv9Vv92gp8K//AJpw+tLf7tBX4d7/ADC/1UfkoPIjSAf+YUfWhH4hQYcV
+E74+Yw7KK0p2LaSUJFkrB7PSKDMLD/8API/qJpDD546zyef6v6+m4Dpx4sQ8cVMSZgu1fk6VrTrs
+3XCU89ardtr3vNa+Cy01pSvqnrPk1MHJJ6AzDcnGdYKnuskJn4shbkV1H008VhKh9FXI1nVNdc49
+WXjZHqjMVdlwHXissmNIS+2IEoAofQkK237dflqxzKDMJj8NMt/zX/tpoPDkSeQQiZtJFgfCSbHt
+40GNjxknooLsoB5ClIdHhD3kmx5ig1fXGem9M9KZHNpWmQ9FaJYYLYAU6ohCL2PAKUD6a8bLYh71
+xmXz3PwcSYv7w63zz7+cmjxfgIyC+8kK1AISFbPQAAKq9la167bYWVdlv7K9PNt/LnrOV0vmlYSD
+kHZeHmJUWYM9pbbsd4a7m0q29xYuDbS9TOLsraPkn1Qh74nLuHTnUD2SdcYkJQlwJ3tlAIuOB0JN
+S5Rm920FNtBsAig9hFB7CKCjrjDKPEecS22OKlEAfPQYOPdV8bKUWlqQ+vemQEkN7EpCUi6rHlyp
+kcZ86Mg3n+qImBk/GyoEFnxzh8ahTjr77hPfdsLBCEJATfmTVdzt+rVGd1vTCXxonvXv8XLuocHg
+Yy0jGtZLpvOtjfEanBaN6gL9xZ4H1Go/G28fdHq1Wz90t977IjE4mHdPLLrjqLMYvBOy13XKaaRI
+ZUgAAgbVWsB2Xq3pnHVXWxno6xtr0wbaDAzC2jCei+KlEh9BS2gnvG/YBdXzUF+E4p6OlSmVsEd3
+Y4LK00vQX9tBTbQNtA20FNtA20FNtBTbQNtBTbQU20FNtBrJ7zcTINSlKBQWlNPJSQV+8FIO2+48
++FBnp2OtBQB2LFxcEGx7QdaDg/W/RUzFdYKxuPcVFxnWM1K5s1J7zSUNlbyL8t4SSPWaqPd+TPG4
+99lY64/NL0Wi05t38EQ6t87Om+kCvBdGY2Klhr7NUtxvxXXlJNiq1xcE81nXsFcnwPYN/Jj6vItb
+r4RMxEJuzbWv8us+TVeWnmv8dnVYrJxBARkFFURaUeE2XzqU7R3QV8fXXacHR9Gnoi02iPPqrtsZ
+64w+meksx8XG+DeVeQwO4T9JsaD5KnzDRCQFNBrH5DWPnOLdJ8CSEqsnvKDg7p7guqyhbgKDF6wx
+iMp0vPjBO8uMLLQI4qCbp07b0xmGY6S+Zsn5uw+hoycTgIjcjqV0BeXy7iA68uQrvLQgHglB7uvZ
+w51xE+y7OfsnZvtP089K5x0+PmsvqxWMT38oRSf5zdTZKXHe6jh+Ihh1LrcgspbcaIOpSpATy4g1
+bcP2fVx7ROm3X78x+TTsvmOsYfRXR+UQl+FMSq7SiAog6FDgtfTlreuhzE9fBCh1Ap1oKbdaDZBF
+B7SiguBFBgZZf2aWUORwtWqmnhvUUjmhIub+ygw4zS28fLU2l9hxQKUF5XcuRoptI90eykdx8k9a
++c3VzPVOZi9KNqaYRKU1InNhAcfWx9mbuEHujb3Qmue5ntOjdtnZyJzPhHX9E7Ra2Plrlol+b+ez
+8VXTvViDIS/3Y77qU+My59Bba0hN7H/vqPX2PVotG3jz6Zj8p/B6tsznMemfJ9KeUuLdYXjmXrFc
+dlS121FwnaDfTmRXU4xiFe65YUDbQajLq3PeGVMqSE3LQF5P9XRVBeisvqhRvhy81tVdaZJu4U66
+K97nagqxHyiYshLrwU+sfYKOoSdtr8Bpu1oKKYypGq07tgGirDfu1Pun6NBsNtA20FNtA20FNtBT
+bQU20FNtA20FNtBpMpFcYfVJjtIY8T+LLQuzn6hKEn5TQXWpchyA07EWuSUGzynGylatDwAAHHmK
+DV9c4J/OYb4RtkhbiFlDw/iMOFPdWOPC5vatW/RXbTEvVLYl8S4/pmTjc1km8w3bJxH1supWPd2a
+ApvyUmxB7Kq+fsmuNcOs/wAb9qpyrW2bZxSndnzUtFHcRZaSFIcBsoKGoINQdN5ic5XHN53Cms01
+6vxn/l2/yu64dy2ObkFWzL44hEpJ+lYaLt9VwfjrotGyLxlwHI1xW8+l3bHTWZ8NuUz7qx3k80qG
+hB9VbWhhZCGtl4yIkba44LuykKspJ4e5puoKR5insc4I74myGxZxSk7PXomwuKD466t6ej4Xr7Pl
+1shb0pTzAUO8G3gFgC/IFRFU3Ptb1eiOzr/YePxqa55PI+aI6RXzaiapt1koLKSCPbULXmJ7rLf7
+vq21mv0a+iPvz+rr3lLlhN6WjMlX2kUGMocx4Wif2LV0Wq2axLheTStbzFP4y+gsRK+Mxkd+91KQ
+Av8ASToqtjQy9tBtAig9BIoK0Gty7LbrkNvaC8t9O1Y94JRdarH1CgxetMs1ium5+QcNkxWHHrnh
+dCSQPaaxacdZe9dItaInxl8OMSbN7g2LqJUoq1UVKNyT7a5u8eq0zMu/4/vVdFIrq11xHSc9Zn9F
+mHCZy3U2IjBuzqpbSrehCtyvmTU/g5icKf3rdo5Gr6la+jZHh5vszy6igPSXgLBttDYHZuNyP2at
+sQ5VOaBQa7JMtGZBUEgPF/8AiAd7alClWJ7NKDYigUCgUCgUCgWFAsKCm0UFNtAKaCm2gwcji2JS
+S7ttLbSr4d0EgpURp6ONB7xzypECO8o3WtA3n84aK+egyNtYwS+e/wDUl5fqbDfV+NbAttayiECx
+Ui9kOWH1DofQfRULmaItHqWvB599dLao7XlwmJHXNlIjhwJccBDW7gVAXSn0buFVuvX6pxCRecR1
+jKQeWcyXH6paLNwlSVolIty4WI7QqpfFia3mPCEXlTWdeX1V0NFySEOvOILcN1IKUL0JX9YA+irV
+WJHMgRpbYbkI3pB3AAka+ygsYsrSl+K6buRXCkGwF21d5B09GlB87f6lcD8N1bAzCUkNzIxZWeRW
+0rcP2V2qr9wjtKz4N/7fCHJFtBMP4or0DoaUn6u5N0kn02tUKurNfVlKtsxaKzH4p55TPLakS0Af
+ZLWhQ9K7EHh6LVY+3zOJiUHnxWLRju+kuj48tnGL8dJQ2tzewk6GxGpt2XqwQG920GzoFAoMHV3M
+D6sVq/8AXdP7qaCEee6pf/53lW4yCorbSHANbt70+J+zWjk5+nOG7j49cZfI+xIhvylGyGVNp4cV
+OEgfML1S00zas28lzs2xFoiPH9kh8uMUiX1lDkFJIiJWtRH5w2p+c1K9vmZsi83+MY7y+u+ioD0X
+GuOPIKFSF70pPHaBYE1bQqs5SGshQYUog5KEi+oDq7epIT/4qDNFAoFAoFAoFAoFAoFAoFAsKDXY
+gbBKjfyH1gD81dlp/tUGwKaDEyWMh5GE9CmNh2NIQW3WzwKVCxFYmImMSzE4nMOH5H/SpiDJW/Bz
+0liMDvbjqZQtxNtQA7uTw5XTUP8A8cRbMSlf+uZjEsvpzpDE4DPTW24yDmXCmVFmOAEyEtp+0QpP
+uhZtu0HbUutYr4ZRptMuw42czPhNSmdErFlI+qoaFPsNenlk7aDT5Ficzlo0liQlpmQPh3kqRvFx
+dSDxTxNxQa3rDoOF1bjDj8wtC2wd7TrbRS42scFIVv461r264vGJe9eyaTmHGuqfIjGdPRXb5N+X
+BmrZaeCm0JU0kLv4gUCQSPVWnXxYpmPNu2cmbYT7oHoPFdOz3sfADKyhtLsaQ+34iykjU332vrUi
+tIrGIaL2m05lPyxlv8yz6/BV+/Xp5efBy/8AmWf7lX79Bu6BQKDCxo3mTI/nuq2n81HcT/ZoMiVG
+jyWVMyG0utLBC0LAIIOnOsTGTLhc3yX6LzPV2TxEdL+OxUVKJclEde4F5YI2jeFbUhN9K0W48TDf
+XfMJ15ZeWfSXTuKbkwYe+S9c/FSFFxwpCiE8dBp2CtmvVWnZ42bbX7p8K2NatAoNXJhRZWZbLze8
+ssFQ1IF1Lty9RoMoYyCODX7SrfhoH3ZB/ln9ZX5aCI9a+Yfl30atDOamlE1wBSITBcdfKTwUUIPd
+HpVag0+C87/KfMSkxUZF2E84bI+N8ZhBJ/PKige00HRUwYS0BSFLUhQBSoPOEEHgQQqgr93ReRc/
+vXP3qCv3fH+s7/eufvUFPu5j67w/9Vz96gfd7XJ14f8ArOfloK/d6P5z396v8tBT4BH85/8AvFUG
+Fk52ExbfiZLLpgt/WkSUNDTs3kUEHyfnf5V491LR6jelLKglRipW8lNza6lBG2w48aDoEZtmVHak
+xp7r0d5IcZdQpCkqQoXCgduoIoMREJbeXcbEt8B9oOAhSblTZ2n6PYRQZ33e5b/nJH6yP3aCvwLv
++cf+VH7lBQwJF9Jz/wAjf7tBEes+l5S0onRZTpmR1eLFXZIIdGpF0ge9+Ggw+l8kvc1LTMdahz1F
+uU3Zv7CWn3ge7oDxHoPooJuYMvlOd/VbP/hoLE7FTX4y0CasrHfbuhsd9B3J4DtFBSG3LkxW3xOW
+N4BUC23cKGhHDkaDSdcYOTMwL6FylO7UmyChAuQNwA2jtFBHsBLlvRcHlvjVAm8SSrYg2sduunto
+J3IiZRLLimZhW6kEoQptFiRyNu2gfebP3T94202btnPfw2evdpQbigUGPPeWzCfdQQFoQSgnttp8
+9BjQI2Tjw2mVLZJQkAnaoa/LQXnTkktqVvYBAJBKV2/DQc86ZdyLkLqfOBTN5MhbDKgFG4bAaQR7
+VHSngJ7jo+QYgR2AWR4baUnRXIeumIGTafrq16NFfloA+8P9z+1QV/x/+6/aoMNozlZJ+wauhttJ
+J3W1KjQZf/UP91+1QRnzF67R0V0vJzU0MrWn7OHF3KCn31X2Np09Fz6BQfFGVyuRzWXl5jJul/IT
+nC9IdPMq4ADklIsEjkKDFcUANaDqHkz5sdQ47IsdLOzlrgySU45LizZl0AnwwSD3F62HI0H0j011
+RlpcpMOYy2takkodSogkpF7KATbhzoJOXJnJlH95/wCWg8GY+iQy06yEh4qSlaV7rEJKtRYdlBlU
+FifOjQIMibKX4caK2t55Z+ihtJUo/IKD416q86/MDPzpTjeXkQca64sxocYhkIZKiUJUpASpRA5k
+3oINIefkOqdkOLeeV7zrqitZ9alEk0Fu1B2DyU865PS6B07lvt8Q6q8F5arfCuKOqSbH7JX7JoO0
+TutMmMjj5ZQ2GUOltxCAe8h1P1ie0C1BPoM6PMjIkMK3IWOHMHmD6aDIoFB4eZQ82ptYulQsaDme
+XiDB51wvXThsoQ1N7Gnzq2+Lenj7aCa9OZF1xpyBL/52HZCvzkfRWKDdcaDXQx8PkJMQ6Ic/xDA9
+CtHB+tr7aDInseLEcRzI09mtBy3BNFpnP4Q6GE8JcYC2iFa29lvnoOl4qT8XjY0gcVoBV+kND84o
+MD7rc+9PAt/gN/xm3l4nDb+t3qDfbtQL6mgtPymWSAtYCj7qBdSj6kjWgx5KZEsBot+FH3IUtaz3
+lBKgqwSO23OgzqDXdQzRCwsyUVbfCaWoK46gG1BEum4amuicJEV/FyLyHnPU4ou6/wBUign1AoFA
+oMH7ePMedLZcYe295GqkbRbVPEj1UF9M2KthT6XU+CgFTiybbQNTuvwsO2g+MvOfzId646qU7HWr
+7hxxUzi2TwUL9+QR9ZwjTsTagggctyoLEh2wNBn+XmMnZjrjGsxEkiM6JLyxwShs8zy3HSg+3uis
+OWmPj39XFp2M3+rzV7aCU0GHkDtdhq7HwP1kqFBmUEU8zoM3JdFZrGRCQ9NhPstkG3fWghKSewnj
+QfC7LjiVKaeQW32lFDrahZSVpNlJI7QaC/xoFqDwpbYNlKA9BoOpeWfX7s+MOl5e5+QhO/FP87Nn
+d4aibe6NQeyg7vg8zIxkgKIKmHLeO0Pwj0ig6FHkMyGUPMqC21i6VCguUCg0/UuEaykB1had29JS
+oDjY8CPSDqKDRYrCZyFEgrBL+Qg/ZKWRsDscqISklXNCdKCaJNwCdDzFBg5NC0KYmNoK1x12WlIu
+S0vReg7NDQZLEmNJSSy4lwc7G9vWKCHK6ZlMdYOZdoH4d1ksPthBJXrYKvwsBQb3piFOhQnIspG1
+KHVFg3Bug89KDcbdaCP9RdRYDDb52ayjeNitI8NJUsJUsmylBAF1nl7ooOPdV/6nYEZTjHR+L8ZR
+45KbdCTpxDQ76v6yh6qDjue8yOuc7kGp+RzMlT0dYdjJaX4LbSwbgobb2pBFuNB9D+TnnhF6pZRh
+8+43E6hbFm3SQhqUkDVSb6BztT7R6AlvWGRhZqA90/ClBuTMAQJCkqLNtw3JKwPeKeFBt041xE7F
+tIbIhwWT3uQVtCEp9lqDdUCgUCg8tutOAltaVgGxKSDY+yg0vV+COWwORiRiWpkmM60282Shd1IK
+bXHHjzoPhabjTjYZOQ3MTVPFhiNax+zJS4td9QkKG0dpoKO4t9E5mAhQcnOJSXGE3u2peoSo+rU9
+lBq8mhSGV2spaDtG3W+u2wtx1oPpHyA8sTjca27LRbITgH5q+bbf0Wwfbb10H0O2hLaEoQAlCQAl
+I4ADhQeqDCytvBZV9V9o/tgfjoM2g8PstvNKaWLpULGg+Xf9QvlM9Bku9XYdnunvZVhA0KR/t0gc
+x9P5aDhxl/YhSCCVWtQW3vjA0266Fpaev4SyCEq2nXaeBtQZTuGeh5CLFyTiYjUkIWJQ+0R4a/pj
+bxtzoN/0hichjPMGDHcFlsKU8HU6oWztsFpPNKrge2g+ksW85JaSkIKlaBIGpN+VB0XpjFy4ERXx
+CyFPHcGOSP6TzoN1QKBcUEZz/mV0HgHixlc3FjyE6KY3+I4D2KQ2FKHtoMLF+cfllk30x4vUMQPL
+NkoeUWLn1uhA+egmSVpUkKSQpJAKSNQQew0GO9AiPL8RSNro4OoJQv8AWTY0FotZJknwnBJa+o73
+XB6lgWPtFB4w8qQ4h5iUFCSw4QoLtuKFaoPd04UGxoPz5lZWbkpKpM+QuTKWbqedVuJ+XhQebUFL
+UFULWhaVtqKHEEKQpJsoEaggjnQds8tvNFrLKawmbdCcsruxZGgTIAF9quxz8ProO49P9S7QmJPX
+oLBp8/MlX5aCVBVBWgUFqWyX4zjIO0rFgaCxGiutOb1KupzvPkWCSQNqQARcAD00Gr606mRgcQp5
+seJPkHwYEfmt1WgPqTfWg4xM6MxWVkwsW4w1k+qJcoyZeTWN4ZQkhRUk9gPD2dtBh/8A4x01keqc
+qxgJciGy0wW8hlnFCQEukkr8IKCPe4HvHThxFA6K/wBLkpnJxpuTyzT+IaPix0NtqQ+ohV29yVXS
+O3jQd+6exUbGx3YzG5QbdKfEcO5ZAAtdWnC9BtaBQWpMZuQyWnL7TY3BsQQbgg+ugs/d3/yX/wC8
+/ooH3d/8qR+v/RQYWV6dbyERbLkp8hQIsVJIIPIgpoPjnzh8rJPReZVIioUrBzFksq/kuHi2rsBO
+qfkoI109kIcttXT2XXshSVXhSidYsg6BX6CjooUGXAhOqkP9D9RpLb6VK+6pwBV4ThuRqOLLlB0n
+o/obqXH9LMS8uPFjx3ix8QlSfEZb3WUjdqrYTzNraUHZun/CwbcTJwAqXh5qy3ZSSXGNLEE20sR+
+Kg6My+080h1pW9tYulQ4EUHugUHz9/qN82spipzfR2BkKivuMh7LS2zZwIc9xlCh7t03KiNbWoPn
+Ya3UdVHVSjqSfT20Fl8Ag6UHR/JXzoz/AErmo3T8x4y8BPcDDLT6ifhXVmyFNq4hClGyk8OelB9E
+M+YU5rJpamMAtLc/2fuhrbxFx7wPK9BNsZk42RholRiS0vgFCyhz1FBiZYSI8liZGWlveRHkKWCp
+O1R7iiARwVp7aDI8PNbv47G3s8NV/wC1QfBHUvTeW6VzTmKyae8O9HkgHw3m+Skn5iOVBjtOhQAJ
+15UB2Uy2bE3V9Ua0GE7PdVcJshPo4/LQXHo+VxciNKcS5GkKCJMR48TYgpWlQvreg+u8TMVNxkSU
+sAOvMtrdT2LUgFQ+WgnnST09yKoPaxkd1hSr7vSB2pFBv6BQUUQEkk2AFyfRQRPIdWSGJa5CBbGs
+ghalJO0p5uX09lBDnsi1N+K63zyQ7CY3M9PwV6JWdR4m3nu17dL+igsNGbgMIqR4W7q3qZdmG06q
+ZbWbgdife17D+jQTHprptmFDawqFb9hEjLvc3XVG+zT0j5LUEy7qU62SB7AKDBakrbmONpbU82+5
+uDrYuEd0Cy727OVBsBQKBQKBQKDVdQdMYPPwXIOWipkxnRtWhXMUHMnv9LnlUJBkFiapviY/xSko
+GvLaN1vbQepvTA6LyiZ8KO29h1JEM+KgPuNsEW8JS1jeRe+3vfm0HhpyR0xLK0som9NZZBDQSd7K
+wpOjYuLhSeVxqnu8RQOnc63hJFthf6ZyAAdauVlk8PXccj9JPpFBOocoYWSlO/xsPMs5HfGoG7W9
+x8/o1oJQlQUApJBSRcEcCDQVoPjD/UIAPN/K24lqOVek+Hb8VBBU8KC07qDQaqQ4pmQy8n3mnErH
+LVKgaD66wD/jwwSremwUFfPp7KDouF6jx7bMaC+sNuBkEuGwTcXG0nkbCgzZK5OVYcYjIDUVwbTK
+dBuf+Gg2PtNBc8fJ/dH8I/eFvCtbTdfbv9Vu9QQbzW8r8V1Ph3GnG9rg7zD6R32l20Wk/hFB8f8A
+UGCy/TeTexOUb2Pt6tOC+x1HJaCeX4KCzhMWxk5C4ipSY8paP8GlfuOufUKvo6cKDNxacW4Xuncw
+0IE8uXiz1Cym3Tp4b3ag8jQbfpvF5ZWUd6Pz2PXJit7n2lJIuz2ONOHRSF9l9aD6U6PEJzHIltgS
+GGFhMqOFWWlI0Sq31T/RpQdSgvxXoyFxSPAtZISLWtytyoMi9AoLE8/4GR/w1/2TQQXqmS7nsm10
+hDcLcKOlD2dkJO0JaTwZCuHe5/0UGpQYmdzK8g4Q10l04LR0JACXHUDkPYP2R20GR002/k8jI6yy
+De5bx+HwkU8k32hQ9duPZc86DoeLg/BxQhR3PLJW+59ZauNBcnJjKjLElHiMgXUnaVcPQNaDFi/F
+OONrju2iD30OEOKP6Nvd9poPciTIStwNk7UFO8lBNgSLlNvesL0F1l6QqCl1SSXbXKQLE6/VPbQe
+VSlb0AnwwttStpBKgpPH0aUF+K4XWG3DYlaQTbhc0F2gUCgUGBPgMSI7sZ9vxI74KXEG1rEf9rUH
+NJWNaxkhzpnPKWvp6csOQ5QO0trv3VX5WV73psrmaDVSMSnCZJ3EZdJdiPm7UpCtu9sq/iaaXH0v
+qq14GgkeGmuYOarpfPK8TGSO/AmK0ACjopPYL+99U+g0Epxkx/Fyxi5puwo/4R88LHgL9n4KCRig
++Ov9SiQnzallIGsGKSfSd9By9S1K4kmgpQYs5hTjKijVYF7dtqD6m6Akh/BQlp13xmlKPpKE34+m
+gnHTXTkTJoliQ+4l9t4qATa2xYBTxFBOoMVyLHSwt5T+zRK123W5A2oMigotCVpKVC4PEGg5N5v+
+UEfqqGlTSvDdY3LZWlO5SVn8XaKD5T6g6E6sw8ssP499am12akR0KcSog6FJRcg+vWgm7flv1R1X
+0w1Oz+Ik4iZELbbWaea2+OwogWcZJSslI4KtbtIoOh4rBTujGYi/HbzeNLRbiZF5G4LZV77auaSO
+z3k+mg2imp2KLPUGHeS5EkLCCGxZbbi+LLySSlQPyKFBMen89MebM/FLa2pH/UMasK3Jsbb0a32d
+h5cDQTmJLflMJfYW0pCv0rg9h9NBe/6j/uf2qCOddZ2fi8IpDaEOTJ6hFhtN7ipTi+wWtp6aCHTo
+srFY9jpXHO+L1JnFB3LSxdRSlWq9x7Ep7eX6VBem45mdNh9EYlVsZj7PZh8XuVA3O5QHvKV89zyo
+J1h4rL7qJDaAiFEHgwWwLDQWUv5rCg3lBbkKfS0osIC3bd1KjtBProMKLHRId+Id3JfbVZaU/Zjd
+YaHae/7TQbG1AoFqABQKBQKBQUUAQQeBoNNn8FGysFyHJ03EFlwalCgLBQHzEcxQQNDTmQjPdJZn
+a1lIl1YeWRc7wk7UXPvJUBoPpJ04igw8ZOayuLPTPUaVxMhFO3HSFoKlocsdreg7ySn3frJ04ig2
+/TecRLYPTedJZmRjthSCFX0HdQbi5CgO6eY04igk2E6jZbfOKnuFMps7WlKSobxyFyNfR20Hzf8A
+6ooBa6/jZID7CfCbShdiAVMKUFC5HHvCg5bmWY0XGYeU2iyZbKy84De60rI1HzUFMxGjRJkNlq6U
+SYzL4UTuuXONtBQeM3Cbx+Yk49CivwCNpVbcQpII0HPWg+hPLBQGGgREnc6hlKVoBuQbcDQdhxLE
+fGiK547a3nVluQlCgruuAbRp9UpFBJqBQKBagoEJHAC/bQWZMZp5pTbqQtCgQoEX0Oh40HM8ziHu
+m3n23WVTemJ6x40Ye8yo6BSD9Ep+ir+qrkaCMTG3umJ8Z2OUzsLPJcjuKBLTiUcUOpHukX1HFJ1o
+M2RFVFca6j6dcKGkq+1bJBcaWRbwnTzB+irgoaGglvT3UTcvdNx6fCktAHIY6+nYpbfMovy4pNBN
+4E6PNjh5k3B0Unmk9hoLj0Vh5SVOJ3FGqb8Ae2g1g6axzU+XkmEBvISklKpA1ULjS27dQa7C9GIx
+GPejR3yXpbhXLlO2Li0HiBtAA7KCTNMtstIabTtQgBKUjkBQe6BQY8T+JJ/4v/gTQZFAoFAoFAoF
+AoFB5cQFC3PkaCK9YdMJy0VL0cbcpD1jOA7So3v4ZPr1SeRoIs6hXVmOKtvgdV4pJBSfslSEIOo9
+B3fqL9BoKNqHV2N2ulLPVWMTdtSvsy8lJ1SrhZQVx+qrUaGg3GDyx6hh/AzD4PUUEG27uqcSg94H
+85J0V2HUaGgkWNmRco0YOTYQ5JauFtPICgoDQmygde2g5JlukOl5XX2ViZHEx34CWFJYjFoJbbWs
+AhaNm3ablPCgjeL8tOjc/iM25Oh7nMUy03j1NOOIU0lK1J2908O7pegy+nPKno7NMvdTTUvOZGE8
+234AcswobE7StFt1768aD6AwuLxsHHstw4zcdsoSSltIF7i+vbQZ4bQOCRf1UFaBQKBQKBQWJcVm
+Swtl5AcacBStBFwQRY3vQcszGJa6byb7LrC52AfALzXEs+KbXQSdFjb3Tz908jQalxiV0vKRKhrT
+Nwk1JS06blpxonvNOp5EcxxB4UF+XFEdTef6deUGUEeI3uBcYWRohzlYjRKjooaGgk3TXUPx6FSo
+YDOSav8AGQdQlxI95baeOh95P0fVQTjG5FicwHG9FDRxB4pNBl0CgUCgtvPeEAdi13+oAbeu5FBh
+xpJDj6iy4Ate5NgDcbQOR9FBnpNxe1r9tBWgUCgUCgUCgUCgtvN7hpy4jtFBCerOmckZjOc6fLbO
+TQ4kvpcJS2tI0K1W493RQ5ig13WPT0tb7PVWAcUzOirDsyM2BZ4IFt1jc326K7RxoPXwjOb8DrDC
+xvCzkYBuU2E2UbAbgAeOnyj1UEpXj5eSYjZJtBgZKwLiF3HDTXj/AN1BBsg02OvcuxLkBoPQftVp
+B0dS22pPhgk89bUGo8vXHSxnmlWJfhF2wTsNmiu1wr0qNBm+XKP+h51gq1Q4ysaW0AsR8ooOrYZe
+7FRSeJbTQZtxQKBQKBQKBQDQaSUIzc6YnItWiy0oSl1Y3NFIG3arsvfnQQzL4j/62XkraVO6Xnke
+OwDuLZOiVoVyX9VXPgeRoI45Hl9MzWp0F1MzDzAQzIKdzbjZ0Uy8n+0k6g6jWgyZEBJaRncA6420
+ggus7rOxnCO6lR5pP0F8LaHnQSvpnJzctCcy0RhbEqI4WZadhQ28QAoraB4jXvDhfhQTHG5Niczv
+R3XE6ONniD+SgzKBQKCikpUCFC4PEGgtNxWkLKgBe9091I2+qwBoL1AoFAoFAoFAoFAoFB4LKCok
+63oPLcZlu+xAF+OlB6aYZZRsZQltF77UAJFzx0FB6PCg5dmRjEeaa15FNmfhFFCwDdKilIC9NfoE
+UEb6AXIe6iyEeKorYeiyfFD99ymioWKSP0qDL8upH+MzERwj7dhQQRcjc24tdiD+b2UHTunphRCj
+sO8HAotr5CyyCFE+y1BsEPyUlCnNllLKFoGhTxsQq+vCgzaBQKBQKBQKDyttC0lC0hSVCyknUEHt
+FBqJGFcaYcah7XYrgO+A/q3Y8Qg8U37OFBBcfipzfUBwTUNT2DmEqnsvkI+HFjtUm99zgIASpPvD
+3uF6CuHwI6O6pdM5Kn8VOZMdl8qVsSkq3WLfu3P0r+yglEPB5LE5NL+HWl7FStXIy1e5fW6T2dlB
+vm8XFbmmYgFDpFilJsm54mwoMygUCgUCgUCgUCgUGOh9wSVNr4KJDdrHQC+vOgqZO2UGFAjckKQq
+2l7m4JoPKZD1xfbqsoUjmLXsb37KDJoBNqCOYzrJjKdRSMVj465EWIg/E5JJHhIc5I9O7lY+y2tB
+vkSWVuqZS4lTqPfQCCR66C7QKAaDnWYaKfNbHqUQUOsbS3xKkhDpIsaCG9NtOPdauQse4YbilSUX
+IUhIsEk93gb8bc6DYeXEdSOqchBecDi/hnkKcAHEFAvb+vpQdM6VCF4xSVWVZxWh10IFBt1R2FAh
+TaSFHcoEDU9poLlAoFAoFAoKKNhegxG31qdR37oUDu7AT7oB7bXvQZlBrlLaayjzqkrWS2hA2IKg
+LFROo9dB6kvwZTRZkMOONmxKVNLIuPZQXG5kVCEpShaEJFgnwlgAD2UF0TI55ketKh+KgfGRvr/M
+fyUFPjon80CgtP5fHNBJW8DuNgE6/goLonQrfx0a/nCg9fGRP5zf6w/LQW5GTx0dlTz0lptpAJUp
+SxawoKRMpjpcduRHktuMui6FhQ1HDnQe1z4SFJSt9AKzZI3DWguhxs8FA+0UHrcntFBjIkpVLW2E
+d1It42lioalPsFATKaXKXGKSFIAIURoo2vYHtFB4bXEekPMBofZK3biBZSvpEekc6DM40HPuqeoc
+lnZ7nTPTi9oTYZPI8UNoPFKbcb8Lc/Vc0GxxmOTh4bWCw27xgLuuq1IKvedcVbVZ+b5BQSbHY9qG
+wEJ7yzq64eKldpoMqgUCg531IW0eaOBWblRQU7bj6Tbqb29F6CKP72PMRa0JIcbkuLSU2JIAUraf
+YigyujlBPmOVJO0yPGB3XB2qTvA/ZvQdH6TSUIltn6CwPkBH4qDfUCgUCgUCgUA0FvwWwgISNqRw
+A0FB6W4hCSpaglI4k6Cgsw1oc8Z1PurWbHt2gJ/FQZFAoFAoFBh5FtDhipUkKHjp0PqJoMvThQRX
+Pde4uC8IOPbOSyjh2txmAV9707Qb68baDmRQa+H0Vl85IRP6tf7iblnExztQkHk6tJ7NCEe0mgmU
+fG4+OwhhiM00y0AlttKEhKQOQFqDGyECCfAWtpACHU3IASLHttQXIq8bJWtDDSVJRa6wgBJvyBtr
+QXzBhn/Yo+QUHlyIlEcojJDakHe2BoNw119fOgtIjSDCSo2RMuXvQFn6PqtpQUEZ5MNtQ/5tu7pH
+IrVqpJ9Bvagg2ez0/KZAdO4NShkFgryc3erw2EH3kix5e7pxOg5kBlQ+kYGLZTAxjshUx6ynHN9i
+VWF3HNvdH5qeA/CG/h4FGHgrdakvOyAQ6+44sq32N1A35WvQb8EEXHCgUCgGgi3UPS7mQ6kxeXQ8
+psY4kqaSm/icwN3KgjznSOXT5gfeaihGLS6p1xSlArc3pcG1KRfQb760Gm6exGdY8wy8Iq/g4kl1
+t+SSEjZZSU3B1N0rFrUHRenkrRkcglQIG7XsvuV+Kg31AoFAoFAoFBZmSkRo63l8E8B2nkKDT4jK
+SHZC2XCCp0lYUo8NPdAoNwmMjeHFkuLHAq4D1DgKD0y34aSL7rqUq/6RvQXKBQKBQKDSdR9QYvEt
+NOzXkpLawvwgRvtYi9idB6TQRsnrDq9f2d8LgV8HFpPjPJ/NQbE6c1AJ9CqCUYDpfDYJlSIDNnnP
+48pw73nD+es6+waeig29gKDDmZJmOQ2Luvq91lGqj+Sg10/Hyp7TK8grYyl5paYrZsNFD31c+NBu
+220NoCEJCUJ0CRoKD1QKAaCB9X9VZCZPHTHTl1zXriZMT7jDd7KJUOFvlvoNeAZmJw0PpyCjH45B
+enyDuccUAVOLIsXXfR9VPC1BIcXi24aFLUfEku3U88eJJ1NBmOthxpbZ4LSU/KLUFrHuFyEwom6t
+gCvWnQ/OKDIoFAoFBbfK0p3Nt+Kv6twnT1mg1AkBuc8+Y7VnUpDiS63u3I56+i3yUG0iPLeQVqa8
+MH3e8lQUO0FNBfoFAoFAoFAoMZxpD0ra4kLQ2gEBWo3KJ5eoUFxMSMlQUlpAUOBCQCKC7QUOlYFC
+qjDQdT9Y43ApQ24FPz3UlbERBsSBpuUo+6m/Oq/n+5auNXN+/kncLgbORPy9vNz9zrrq+RN+J+JT
+Gb+jEbQktgekqBUo+m9cbv8A8k32tms+mvk6fX7Nx61xaPVPmm2E68x0qG4vJuIgvsJKnVLNm1JH
+0kk/2a6T2r3yvK+W3y3j+v3Oe5/tttE5jrT7d2ukdbZTOuqg9IMF/UpeyDncba7SpRBCT+bYq9Aq
+/wAdcSrIwvQui4eNeYymYdVlciXAXpLoJZauDqhslX0vpLJPqrECaNuIcQFoUFJVqFA3BrI8vvss
+Nlx1YQgczQaPKdQJZjl5x0QodjZ9f8Ryw4Np/HQRaNI6i6iWWcI2MZhXNHstIuXXgTY+GNCv2WT6
+TQSiRIg9P4NqEX3JbrCU+GlRDj7h33ubDTX2Cg3UVyQ41vkNeCsnRF76cr+mg1HV/WnT3SWL+8s3
+J8BhStjTaQVuurP0W0DVR7eytezZWkZl7prtecR3R/pfzt6A6hlIhsTFw5jhs0zNR4O8k2ASu5QS
+ey9adXLpeW3Zxr0X+r+qJzswdNdPDxsrJQfFfSe4wngVKUL7bfSPsGtSkdew+Ih9OQUxGP8AE5KU
+Qp563edctbefqoH0U/00EixmN+FCnXT4kp3V10/gHooM+gsvuSEHchKC2B3itRTb5jQYUWQ80lTY
+8BYK1KQkO2sFG9rFNBskFRSCobVcwDe3toK0CgUCgsuxkrIIskg3NkpN/Qbg0F1KQkWAsBwAoK0C
+gUCgUCgUFhjV59faoJ/VSPy0yL96ChVa/orGRrs11BisPG+IyD6WU/QRxWs9iEDVVaORytequbzh
+u0ce+22KRlzfOeYmdySy3jArGw9LKsDIV6zqED0DX01x3P8A8kvb5dXyx5+LqOF7Hrp822fVPl4I
+F1Z1OYeSbmTpi38g62CttxClp8FshO4rSPswFL4k2qs1/V5vW/XHTOftlPj6fHjFekMCV19HlYSS
+9AiyUPt+IzJslCn4ikp0eUxcqUgLNiQK8a/aZrtiLWrjpMeVvhntlrtzPl9Xl4fbukmEmHKdPwJr
+yNZkZC3EkWBK09427L3qv5NJ0b5inTFunw69G2lo2U+Ex9oS/pvzRw77LmFwQhF/EIQ1JjsG6Wyd
+EkIRYWNjexOtfTva+Rs3ceLXiYt8fH4uL52iurbiJy3TXXGUB+1YZcQeSQpOnyqqynpOEaY6s1vL
+ktF/GNKjyFglUZ4gRz2qJv3fWKww0kzq9TkpuHFaGVzjh2+C2QWWteIuUjb+cqyfXQe8P0uzMkyM
+n1VITkJUV0o8JZHwje2yhoQnxNp4bht7E0EkTInZA7ICfBjcFTFi3D+Ug9npoMtGHiQor6m0lb60
+lTj6+8tRA43NBb6l6pw3TuPEzJvoaSs7GEKUlKnVnglO4/L2V5m0R1lmKzPaHH+pfL7/AO/yTnJ+
+ZcMgp2wkMlDsRhHEIQkftK3XNRd/Hjb1iUrTunV3hxzq7pLMdLTvhcigFtdzHkouWnAOYPIjmk6i
+qbbx7UnqttXIi0dE28kOtMj95O4FqQlp968hDq0pWpxDYG5slQPujvD21a8LdM19M+Cs5emInMPo
+DETWES1OSgVyHjb4g8uVrch6qsEFJqBQLUHgNHxd+9VrW2abfwUHugUCgUCgUCgUCgUCgUCgUFmN
+q0FfWKlfKSaxISZLMZlb77iWmWxuW4shKQO0k1i14rGbdCImZxCAdQeaG7fF6fb8RXA5B0fZjt8N
+B1V6zpXM+4/5HTX8urrbz8P93QcH2K1/m29K+Xj/ALOf5LIx2pCZuanp+IkK2IekuAFSj9FN7AW7
+BXH7d+/lWmZzafzw6SkatFfTXFYR3rjLH7vRFxclxTpccL7MVQSp9LCdz0VLwv4bpQdyeZAqZ7Vx
+p9czsr92Y7Z7Wx4wicvdOOn/AD8M+Es5ECbn+hnGHPhm5U+IpMRbKluIQ24m7aVOr7yjw3Go99te
+Pysxn01tmfDr49P0PT9SnWceqMfaUfy0iF0e/jOpeoskyrMsXS9Cjpsh9tadpSlolSjZOhVoDoTw
+q04835cW1aaz9LwmfCY69/D7kXkTTXHq2Tifh4/gwOtfNKT1lGZj9OtyYENKFvRWoym2H1ssEeI4
+86q6QkK91sdhuasuJ7VTjznbi9+0569bfburabr2j5Jnr1/L7fi0Pl91dkYmclznIDWTkNiOyiXF
+ZDUh5mWtJV4gashRS2CrvD3hxq0tFdM1mLemuZzmcx08s9mv023VtWaxa/hiMZ/J9FZTP4DAoK5L
+gkSAgObEW0Sr3SSbAXvpermLZjKmwjsvPZvMbviP8Fj12LTSR9qpPEKCVe6LfSXr2JFZEu6LkxVY
+deKOLDvf3sLQLF1R+k64e+Vp+tQSXp7pVxlb68o98QQ8VtRwSUI0Fr395WvGglSUJCQALAcANKDU
+dS9Q4fCY1yTlpjMNhd2m1vLS3uWoaJSVc6jcnk/RpN8TOPCOuXumubziHNupOgumPMBwZiVknZT2
+zw4rsWQlyOwkD3W2+8nXio8TXy7mf5Vy/q5vX01/6z0Weqn0+jluWxPWnlZk0S4b5exbytqXQD4D
+o/lvN3IQq3D5jXRez+915EfJOLeNft3SL1psjEpHn+o8L1p0gpRASHQe4ogqYkIHb6D8orr5xupn
+7QqcW03w4/5XDIL8woUhklDeMcUuU6NBaxRsHaVn5q06NMxLdv3Zh9c4dp7JJb2AjcLrVwAHbVhM
+oOE2SAlISOAFqwK0CgUCgUCgUCgUCgUCgUCgUCgtuqKWlkcgT81YETz/AJhYjEBUKKRkMk0AhTDS
+hsbVb/ar12+oXNVPuHvGrj/Gyx4Pte3f17Vc8y2WzOef8TKPlbQO5uKjuso9SeZ9Kta4bn+87eRO
+ZnFfJ1nF4GnjxmvW3mj/AFB1A1gX8eh6OtcaWtSJMpI7kZsC3iuG1tu9SRUbh8SeRF8T1jtHnPk9
+7uR6cTj7/ggzqs07lcfDkyBPybL77L8CYU95ZQSoN6D/AA8qP7p+ioca6KI1Vpa0R6aTFZi0ff0z
+8az384V2bTaImc2jP2/HwZUPo6dG+Bn5FbmPxKJBcyLDjjaVtpilRhPrcvbcE/Zr2m6hbjWm3uFb
+5pSIvs9OKz1xOf5xH6xlmNUxi1ulc5x938XnMea8VmIpjpFEdqHHcKBNkoc8Jagd60ssoSVbe93l
+qsBevXF9gm1vVyMzaY7R/wDr/Zp2+5RiZ149PnP7Oa9Rfc2cazWUkNyoObx7aHZAU98VHeU6tKEJ
+QpffSFbrp4i1dHxp2aPRriYtS3Tti3SPyVm6tN0XvMTW1e/l18mZ5b9GSck4w1nAuJAIL0BK0qQ6
+4FaqCFBSClB463vyqN7v7hGqszq628fh9/xb/bODN5iLx8s9vi6w1Bw3Tza2cawlgPWU4saqVtG1
+IJ7EjQDhXJ33beR1vPZ09NWvT0iFMU29kpCktsreW4raiQQXPD7UoA90n6x1rvPatk20Vz4dPycR
+7lSK7rY8eqe9I4Nclx1WQ0DJAQyBwA0AUrt0qxQU6ibYq2yykIDagQkaDSglIYUp99QeWgFQG1Nr
+aJGuoNBoeuersT0d0+/mstMdDTY2sR2whTz7pHdaaTbVSvkHE15taKx1Zikz2fDnmH5w9a9U9Sqy
+WXHhMNkpgY1ST4bDRPBJ0uo/SXzrRfVTbHdvpstqns2vQnmROgy0y8S+qJNb1ejE3bcSOIUngtPz
+iuf9x9ppasxePVWVnq312xjxfSEbq/prrroaR8SgAPJLE+Kojcy6BcKSf2kmvnd+Bu4PJr6fvifP
+7eLxf5ZfN+GVmG83kcBDJcVv2KUPdBQopCz6019e9unNc+Ewh8q+Zd88qfLBnHx0qLYW+4StxZFi
+pR1Uomp1Yx0hDy7lAgtQ44abHD3lWtc1kZNAoFAoFAoFAoFAoFAoFAoFAoFBg5lTycVKLGj/AIS/
+C/T2nb89eL/xnD1THqjL49g5KVCkJkMO7XSbm/BROtldt643/wANuRWemXW35ddM+nOIdPwOWjZW
+EH2u64nR9rmhX5DyrkuXx7ar+meyxps9UZhnSIjEmM5GeQHGXkKbdQRcKQsWIrRr2zS0TE4mJLRn
+MSh8/qbpfppMaMlt3Mz8ekR1yGWg+7Hb4favJGlgPdvc1f8AH9u5HK9Uz/8AOl+uO0T+H7oO3lU1
+xEd5hyjzCm5vPRZOZGcjZXDxClSoUcqY8AOK2p3x3LKKidN1zXV+1atXH9Ov0TS8+PfOPjCl507N
+1fXFs1jw7Y/NoOg09Q5ST8FimXQpClKE1sJ2MoeSEOpWV90BQA4Hd2VL9zvq109WyYx5ebX7bXbe
+fTSPHu610/0RhMA06qQRPkO+DfxUgtoEcbWtoPEjjc865Hme67d8x6flrGf693Ucb2+mmJz82f2Y
+/VuUO6LLQra7HcFlc7K/7qcDT3rPaWOZt7THgwM31IHobDwNlqulYHIi16kcbhRF5ho38rNM+Lon
+kxLdX08t1Q2qelOuMOW1KUhKTb0XSa632/XNNePi5jn7PXs/B1mM6080HEW73vW5KHEaVNQmfAjB
+x1K3P4KTc8yoj6KRzoLnUvWmH6WxEvL5lXgNpXtYYuC484UDa2gc1G3s51r2bIpGZb+NxrbrxSvj
+4z2h8qdcdY5brLNHKZNZDaLphQ0H7Jhsm9kjmo/SVz9Vc7yOVbZPwfVuB/inDjTiLeq3jMTH+iK5
+HHxJcYtSWw42dAT7yT2g1507rUnNXPe8exW0R1j1U/7Od5CHIw2RHhrPdO5h0cx6fx10OrZG2nVx
+e3XbVfo6B0L1LkzMdjQdyvj2QFtpvbck6E+rWqfle2V24ie9Zbtu7Ncu+eWHlmli0t9vxJclXiOr
+I1Uo68ewfNV1q1RSkVhCmcu74zGswY4bQkbrDeoc7firawzKBQKBQKBQKBQKBQKBQKBQKBQKCi1p
+QgrWQlKRdSjoABQaiZkmZTCm4zC5KFAkPDuNi30gs9nooPk/qjCSMX1DOgOr2ojOKHgggJWF6oOu
+vuqqs9vr6JvqmcYlY86YvFdnhMGAyzuFyLbrat7FktvMnRRQBYg6nUcqge++2Ru1zaI7fbKT7Vzp
+rPovPfs0fXnm5mp6noMDdiMcklCyD/iXANO8se4D2J+WtftP+PadNY2X/wDpf+n5PPN9zva00j5f
+1n/RFMNmWpUBqFEaVIlpDrbLCXvBUiQ4sLbkpF0lzhtUAb6VacrXNbZmcV8/DHl8GribPVXHe8/H
+t8fimmB8s/Gh5E5+8drIymn1xmVBKloZB0UR7gW4oqsNbdlc9y/eYi9fo9fTWYz5TP6rvi+0z6bR
+tnEWmO3wS9D2NxMJMLGsNxYrQshpsAD1ntJ5k1S3+put6rzmVtX0aq+msYhH8pnwkHvfPU3TxJQ9
+vJx0RHJZKRO3R2SCpWoubDSrrh8TMqjk8rEMrpvpmZkZTYmNKdjJN1NIJAJ/OPZ6quNPDis5sq93
+Km0Yd2wmPlwYDaY7AbCLIiRkC3eI0SAOAqbWMRjwQ7TMzlLuh+nJ0ZZRPfAEglSmU697jcn0+iss
+Jh1HnMT0n01OzctJ+DxzJccS3YrVbRKU3tqpRArza2IyzWJmcPjbrPzIyPWmfXk8sotNg7YMMG7L
+DfJKfzjpuVbU+iqXk2vs6+C549K0jEsEuBIuDccfQarcLrh8/Zxreqk4j+k/h+6ipDSmiSdOBHZW
+YrMS+g6ebp5vGmZ7T0mPKUOy0OTlpbOPiNl2UpyzYHIHiSeQq94VZh8g9z1/TvNM5msvoryc8oms
+XEaW4nxZDgHiO21Uewej0VYY6qrMvozE4tqAwlAF3LAKV6OwUYZ9AoFAoFAoFAoFAoFAoFAoFAoP
+Kid6RY21uq+goBIuTu93iL0FAi7exfeBuDfmDQaWYyqE2UYtalOknZDA8RvXj+gNe2g41539KTGm
+4nUJYDSnEhialBuEnXYdw58qr+TE69kbP7fH9k7j42a51/3d4/dyNLN2i7v2q2691SlXB15cBap8
+xFo6oWZiWjyvQE3qfMx1Qn247a0XnOOfR221Ske8og8PRxqj2c6vDi1bRM4/j9y618KeXMWjpn+S
+fdN9IdM9JM3gteNOIs7Pesp0/o8kD0CuX5vuO7lT83SvlDouJwdXGj5etvGXrJZwC/erVp4zZu5C
+JZTqA3NlVb6OKrN3Jme7RtjIZN7awklJ+nYn5Bzq54/CyqN/Lx2dP6F6BihtBkQg+65YuLdG4nnb
+joPQKtteqKwrNmybS7Z0v0FDDSCITbSEjRe3aLnjoLeytjWmTeExzLrDQaBASslR4ngPx0GWjFQE
+KC0tAKSbpNzpb20Gl8xem1dSdEZjCI0dmx1JZPY4nvtn9ZIrXsrM1w9a7Ytl8QROmMi63PemWgR8
+ZvTLekApSHUaeCBzVfTSq+umeuVjbdjHxYUWctCA2o3R9H0VF2a8pNNnRYMuS/KTFioLrzx2obTq
+Sa26uP6kvh+5TotPxdy8pPKj4dImS0+JLeILjhHDsSmrbXT0w5/k7527Js+ksJhWcfGQkJAWBYC3
+uj8vbXtobSgUCgUCgUCgUCgUCgUCgUCgUCgUFNoN7ga8aDy634jZRuKQdLp0NBjLeETalxH2SiAF
+tpOh/OSPw0FrO4WFmsTIxs1O+PKQUK7RfgoekHUV4vT1Vms+L1S01tFo7w+S+q+l8l09nnsRKAQ4
+0SUyCrYhxg+4tP6XA+0VD4mzE/Sv3j9Evk0i1fqU7T+rAhOmFMBQkJKD9H3Sk6aWtpaoPvmmJpXy
+7Jvsu2YvaI8sq5TPgXsqqDTxV5u5M9/FE52Xefc2N3Ws8Ep/HVto4nwVW/k/Fs+n+i8hlXkreSSk
+kd22g/LV1p4sV7qndyrWdo6L8sEIKPsSVaaW1qZEYRM5dhwXSEOCgKdSFLHBHIeugkQSEgACwGgA
+oLS7fFN9oQv8IoL1BH+ruq42Dhq2kOTnBZhgDcbqO1J2jU3OiRzNBx7zJ8leo+q+lTklZARc2lS5
+C8U6UpjrC+CVrSP45+sdL6emteyuezbrvju+c53TXUeKeTDyeMkxJI7mx1tQuRp3Ve6r1g1XW1zl
+OrsjDrPlB5TuIcROmN+JLd1Vpfam99o4+2rGlIiFfe8zL6cwOCZgMJJRZY91PHb6/TWx4bigUCgU
+CgUCgUCgUCgUCgUCgUCgUCgUFp/x+74RFr98c7ejlQVZKFIC0XsrW54/PQezyowhnmX5fROrsTtb
+2tZeKFKgST2ni0v8xfzcaicrj/VjMdLR2lK43I+nOJ/jPeP3fMWSx8/Gz3oeQaXHlMHY6ysWII5j
+0ekVQczk7LR6Lx2XvE42uvzUnuh7ELI5R/a0FBtR0VbU68qtOPw5x1hXbuXicRPV0jo7ywUvaXG7
+k2JuL/LerSmuKx0VlrzaeruPSnl4ywhC1NhtscyPwV6w8p/CgRYjexhAT2q5mgyaBQWHbokIdI+z
+CVJUrsuQaDTdWdWxMFCUoKS5McTeO1x4naFEDU3UbADVR0FBqOl+nZXxCuouoUgZFffjsOG/wySN
+VLPDxVDs90d0UG8aZcysgOvAphMn7JrhuP1j6fwUG1ehRH0JQ+w26hHuJWlKgOWlxpQe22GGhZpt
+LY7EgD8FB7oFAoFAoFAoFAoFAoFAoFAoFAoFAoFAoPDy9jS18NqSb+ygMp2tITxskC/soPdAoIx1
+f5f4DqhCfj2E+MnTxwO+U9lxY/PXi2utnquy1UexvkX0pjnAqM6+BzSrar5yL17jyeZnPVMcX0ti
+celIbb3qTwUv8nCg24AAsNAOVAoFB5cUpKCpKSsjgkWF/loI/wBTdTRcPji/JWA+4LNRteJ0Bct3
+rX7OPAUGn6W6blqlf/Ys/wByRbfFhrtZgW/iu8vEtokfQGnG9BIGw5lXrgKRj21aX0KyOf8A24eu
+g3KEJQkISAlKRYAUFaBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKCzL1ZKL2KylAP6RA/BQXqBQKB
+QKBQKBQKDU9RdRQ8LBckPKT4gQpTaFKCRZIuVKPJI7aDn+MxGV6jV9+zW3CpwpchJcV4baFI1TIc
+B4kfQRwSPTQTKHHm5JhEaQ8pUdr+I8BtU4eR/J8poN9EYbYjNtNiyGxtTQey6nxPD+la5HooKKLm
+wke8DoPxUFygUCgUCgUCgUCgUCgUCgUCgUCgUCgUCgUFl+5dZTpbcVH+qD+OgvUCgUCgUCgUCg1f
+UGfiYWEuQ+ob9pLaCdoO0XKlH6KU8z+OgieB6ekZ91Wc6iSpUd0hcSC73QrbcofcQToAD9mg8PeO
+poM0xZbkn4fEydmIbVukNud7dzs3zt2DnQS6KhtDCEoQW029w8R66C7QUKUm3o1FB5DQG6ylXUbk
+31HqoPYoFAoFAoFAoFAoFAoFAoFAoFAoFAoFAoFBZOswaaIb4+lR/wDLQXqBQKBQKBQKDX5rNQ8V
+DVIkKG4BRbbuAVbRc6ngkczyoIhgcNN6injPZhKjAuHIUJ0W8Ug3Q6tB91pH+zQePvKoN1mU5LNJ
+MHGPiPHJ/wATJIJKk8wPR+H1UG2xMOJBZENlBC2gCpStVKv9Iq53oM+gUCgUCgUCgUCgUCgUCgUC
+gUCgUCgUCgUCgUCgGgssgF59dvpBP6o/poL1AoFAoFAoBoI3k+jmsln28jLlrdgoSgnGKSChTjZ7
+hK+OzmUcCrX0UGfkfjZD4gspU20oAvP9o+qn0dtBsI0ZuO0G2xYDj2k9tB4T/wA+5/wk/wBpVBkU
+CgUCgUCgUCgUCgUCgUCgUCgUCgUCgUCgUCgUCgsxNWd+vfUpWvpJoL1AoFAoFAoFAoFqBQWUj/GL
+P5iR85oL1AoFAoFAoFAoFAoFAoFAoFAoFAoFAoFAoFAoLAZlAf8AMfsCgtyGZ5ZUGngVkad0D570
+FIbE9qOlta0EgcCCSPaKC9/jO1v5FUFR8VzCD7SPxUFbyPqIP9Y/u0FN8jm2n9f+igeI9/JJ9Sh/
+RQULzo/2Kj6in8tBUPr5srHyH8dA+I/3bn6tBT4lP1Fj+qaD146OxQ/qn8lBhN5Fv45aCCEkBINj
+e6b8R7aDM+KY+v8ALcUFfiGP5iflFA+Ij/zUfrCg9B1o8Fp+UUFQpJ4EUFbjtoFAoFAoFAoFAoFA
+oFAoFAoFAoFAoFAoFAoFAoB4UFpHi+Kq/u8uFvR6aC4b6W7dfVQV1oFAoBoLSfh/HVt2+PYbvrWo
+LtB57nooKHwee35qDwfhLm/h39NqC0v7rv3vCv7KDwv7q2/Qt+be/wA1BeifDbFeBfbfvXvxt6aD
+IoFAoFAoFAoFAoFAoFAoFAoFAoP/2Q==
+    </current>
+  </image>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/image/examples/nanohub.xml
===================================================================
--- /tags/1.6.0/examples/zoo/image/examples/nanohub.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/image/examples/nanohub.xml	(revision 6168)
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<run>
+<about>
+ <label>nanoHUB</label>
+</about>
+<input>
+  <image>
+    <current>
+R0lGODlhtAA8APcAAFeBu////0VurKW829Ld7YSjzWKJwLzN5HmayfT3+unu9sfV6G2SxJqz1t3m
+8Y+r0rHE31aAus3Y6VJ5sEpysEdvrXeVwlV+uVB6tVZ/uEhwrlV/uEx1slN8t1eAuk50qFF4rlJ7
+tkZol5yy0092q0dqmVV+t053tElxr0VmlEVnlU92qlR8tFN7sk12s0VtrEVtqkRrpktvoUxxpEt0
+sUdpmEVtq0hqmktvoERqpE94tEJmm1Z/uVV+tklsnUZnlkxwo1R9uEdpmVR9tUVsqVV9tkVsp01y
+pUNon4+ozURrpdri7k91qsHP401yplB2rEVsqERpoEVpnlF3rUNpoVF4skRqo05zp01zplJ6sEVo
+mkZroUhrm1J6sUZqnURmlkFjlICdxUFjlkJnnqCzzkRqosHO4kJlmFJ6sk50qURqpUtwo1N8s0hr
+mkVmlkVpnEJkmUNpoENooEhsoElsnEtvosLN3URonkVsptHc6pyuxkNklEltnkpwpp6xy0Rlk6i7
+2EZpm0Jkk0JklrXF3nyXvERnmvP1+ejt9EJll0ltoE50qpKnxEFkmJuuyM7X5NHc60droUpvpG2Q
+wkNmm4KfyEhtoEJnnURom0NnmkJlmUpvokdtpJyx0kptnkZpmWqIsUZomYOhy87X43eRto6lx83W
+5Obs9KS510Vqol6Bt0VmlURml7XF3YKgyfP2+XiRtEltobTC1kNkk3+bw4OeyEdrn3eQtUZsolJ5
+r2iCqE92rkJijkJklFFxoEJnnERnmM7Y5Uhsn0RpotLd7KG20kVrpENnnUJij9Da6MXT5Upvo5qs
+xneUwaK200NnnHSOtKO41URmlefs80ZpnUZolniStEVomM3X5UVrp3qUuklto8/Z5kdsoEZpmk1z
+qU91qbrJ33yXvVJ6s5yuylN8tEpuoFJzo0Zrn0JmnERonEVmk01zqENmmIOizExxppuuy0Vnlkpu
+okFklsHN3FF5sFp9rp6xykJmnUtwpV17qAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAC0ADwA
+AAj/AAEIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKzLgLDx5O40aqXMmyIy4B
+MGH0aUmzpk2G5crAFBBjw82fQG1GkBQljhYfPoMqXapyggocGVrqoECBw8AQVC8IjHACBcwKNDAA
+iECVQoeBNCicYMr2IIgUQCKs9ApTKwAOMAWGqLBzpwYAIXZaBXAB5tq2iAmuSHHEw8i+LgR6pQCg
+w1exgDVYPdFXbmABZxOLFvghxYeQlgXwrRAhgmEAGmAGIRjhLAXVr13kHb2yR74tWyKxS6rQw5EU
+Kz5yFoABJobPHZoLGGwQpguvfyfzbmqlrwAry+Qu/4wAJAWIjrf/xtawPAJe5gdTY5AuPfJ2kei8
+w3zxxmEGHCpMsBFfm30lAAoA3AbaQTrUFcFqMIVwn0hrwKCfADmQ8NAGPojQBUZBODcWZAlGWJBW
+NAjwFwC67STehB954EUM+qXDRQ0i4DDFiwn10IYQbFjUoAB2vSeAhC3SMNAFFEhIoECFwYQgjCIx
+YQg+OeRAxSBYDNSCEzhy8QELCrFQwg1DUIRXBQOlRiRhfKlGAV0RRKnDQApSR2VIJkzgZ0ImrMCH
+CDXIAIJjBrVQAxcmSBSbkgOtN1AQdMGkwZ3SzSYQfXtKxMAAAzRgUAGgFiDQp6Ea1ACoDAhUwAEE
+5P/BzSj03GNPmgRNkIInxLFQTxYZXdBBB3Z12lEBAQRAgEEDJDuAq8kuWxAByZoKQLPJZhvAK4yI
+IEId5wkEwjoyLBIFjQIQkUofPBg7GrLKMusstPFOW61A2GqbbAKtglBHNSL4AE4Ra6hxoRXfuJsY
+vNIShO2zADBsELUBWIvtAQWQmkCyEBQ0xAd0sHJhTNso3JbEBT1MbzJXtEAQxRbPK1AD0SI0x8j7
+xaLwAA8AgACsC4haUAOwEjBAqw73/DMBQR/0KgFGI01vwwOp7IE2yUoAgxyDKOITzPjKHHHNAPQ5
+wRMzzCCEwTjHgIa7ASjwgL4HvKxvAj0PFPfc2tb/TdABd1s7dr0OzxtIM1nv9EI7PcDcZzTJkoFD
+CSXokaweyFB+Q9pH+EkNzjBZAne0DxSwwL0CHZDAAQNAsLECBGVLQOmnV1w1xwU8QC2/9DqQ8e+v
+OrvBGBYkvpMNvDySrDVnkpFsOGGEAcG+BiSUgTov4OzF6H4LpEAAEAPAQPX0Cp5s9wB8D7EBG4cP
+gAMB+A2vvvoO4MEZxQcgQV8vhAL2tfQLQAIQoJAWqOALSriQEWYwOsEBAHBUK4j69Ga7gUBwZnEb
+mgDpFcBsPQsE0DCeAGwAhlz8L193I6BBilCCNjRqAphAQvZgQoVAIKpTqAtbBBmwqgHAL3w5BKC0
+/wCHPvElq1XwSgDUlkiA74FPIJVIlinGsAMxXMNlJzxfxhpQuwSQTyAZMIcIXDYQEbDhCquYQxrI
+pLAgNqthBphe/SjowDcKhFruE8i9UFa4Jw4OEhMA1kCy6EeB1C58R/jDFAqygR+Ii4EmA4AbCbe7
+AeRugnqsoA7vWEg6Di6CAPQjHweJOpUNBF4LAAAJUnCFgzjhNAIRQiQlqUkhYnCApARiLe0IADwW
+xAB7JFsfITZKTlbQlPTKww9w0K6DqKCZAPgAEyI5SWmdDn2+zGQd68XLgfBtavLyIwKy9UUjHjFs
+ncSWHRqFEDMRxAMioOYu65VNTupym9LiWzkB5/8AcKZMbBtTFvkYAL8MojN8ojiE2A4ig0USRAYC
+auM8hxg38mGrY9osXMPgtwDy0SwAeStmKMOXLyVSLFnOEAYwMuGIZCkAatPIlgLKaZA/GCQDJTBZ
+NQUyTgE2UYACJN9OeboxJTqxeyJFpgEKSj9ZJBAmI+igAlSIkCzw4SA+YKOxhgqABgQ0AQNYqh+5
+6rOTgpUgSV2oAQYQ0GQhohTeiaq+jEZTg9CBjAVhgQ9muRADZIwgCJDaQxjwV40gIGOT+AXoBEAJ
+aBYnBQkRAnH4qjASGGGxRtAQQ0gAhISAQAaUjSQJ0NU2zS6kBj1QyA94FNo9ZeAMi51HVBaSARX/
+LIQJXWqtuz6gCZzBAZYLwQJwEeIB2+pWIqDCVyorgoAERKQYzECCd5AgCBJ8cQF5BIBPnskQIJh2
+IQE4Lr7WJ9iJUNUhoFrBDdywBzfcIDkEENz4BIKGLRgDCgLIRhmkEFHrObIh4TUWAhZAAKFBoAFM
+q15yEVDgrg6AwCrU3QLyNhADwKpjBOgYAgYAqwcMoMEAgIAKl5XcazGNgF51QMcQjIAMgMIMEkgC
+TACRBAmYwRdFGDCIqxYMZaiQdRmuGgEAV5ADD9l0HcXXkFuFAAh82AAWznBdOcIABYyvaUa7Vt1K
+nNwH+xV2D+goQevYMVMVYFkFsPI4EWAAK/fS/1rhLbGZYffmQbpDH6dQRRWaIGMJjEAAI2hFL4jx
+AAOcN2JDgAWdbddgDhs6wIN81gJSyeEQlxl2yFKh70wskta5alnxjRiJIdZliIV3Aaz7sPvS3IDq
+nVnUeryjqUItyWtBbMCnk/UgxdEJQMDEAvuTgAUEAGwi+MEBFB7IgO0Q4AAn14uxfpmpkvtqaL/5
+1T5TAKia1WligtrMox6vrWNttN+VlwEHcIBf0SytAIea1nF+VpsLAExd35EUI/gzsYM9bGALQBBn
+Rl+baXGOAEThDgHYRBGSC2lI65ray4J0fLFdAN/9TiTYZl2dX+3pcZc4zss99Hwnzu5oh3rCPv+L
+c5mXVe9eUpgAt/C3AAjxZ2HvWwC6iLZAXIENIlQhADAB+jDIgYpemnpa037Wq0PNAC9im30ENEB5
+PeJDBxygeqF+dZVFVepoQ8ABVi9ImqEGa2y721QIcMCQw7v1Xjpg0j17gAIcQEACFMIII1jCEghR
+BQHYHNg58MPcw2eCY0hgCU1oQi0EAHRAw8MJCHgptZA+7lczmADIhjVP1b5p8YbEA1qw0MigMIvZ
+EkQeixUAFZ7g+UhGwBuX0I8NdiCNyQ5ECqkXQCJs3/pOdeETYoDDDhoBhniE6yC2yH0Ohtt7hWVg
+AqldyBOIkHoogLb52B9IN2aIMzkkJ/vZj4AsFGyAMxjsgbXg7/074kB+7yjhC+xMP/gjkIY33GEH
+O3iGFr4v//77//+8ERAAOw==
+    </current>
+  </image>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/image/image.py
===================================================================
--- /tags/1.6.0/examples/zoo/image/image.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/image/image.py	(revision 6168)
@@ -0,0 +1,65 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <image> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+from PIL import Image
+from io import BytesIO
+from Rappture import RPENC_B64, RPENC_ZB64
+from Rappture.encoding import decode, encode
+
+
+# uncomment these for debugging
+# sys.stdout = open('image.out', 'w')
+# sys.stderr = open('image.err', 'w')
+
+
+# rotate image data
+def rotate_image(data, angle):
+
+    # bug workaround in some PIL versions
+    def fileno():
+        raise AttributeError
+
+    # open image from data and rotate
+    image = Image.open(BytesIO(data))
+    rot = image.rotate(angle, expand=True)
+    # save image to a file in memory
+    memfile = BytesIO()
+    memfile.fileno = fileno  # required in some broken PILs
+    rot.save(memfile, image.format)
+    return memfile.getvalue()
+
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+data = rx['input.image.current'].value
+# image data in B64 encoded in the xml
+data = decode(data, RPENC_B64)
+
+angle = rx['input.(angle).current'].value
+angle = float(Rappture.Units.convert(angle, to='deg', units='off'))
+
+rx['output.image(outi).about.label'] = "Rotated Image"
+
+data = rotate_image(data, angle)
+
+# Image data must be B64 or ZB64 encoded.
+# The next two lines are equivalent. Can use RPENC_B64 or RPENC_ZB64
+rx['output.image(outi).current'] = encode(data, RPENC_ZB64)
+#rx.put('output.image(outi).current', data, compress=True)
+
+# add a little html note
+htmltext = "html://<p style=\"text-align: center;\"><a href=\"angles.html\">Learn more about angles...</a></p>"
+rx['output.image(outi).note.contents'] = htmltext
+
+# save the updated XML describing the run...
+rx.close()
Index: /tags/1.6.0/examples/zoo/image/image.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/image/image.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/image/image.tcl	(revision 6168)
@@ -0,0 +1,36 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <image> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Tk
+package require Rappture
+wm withdraw .
+package require BLT
+package require Img
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set data [$driver get input.image.current]
+set angle [$driver get input.(angle).current]
+set angle [Rappture::Units::convert $angle -to deg -units off]
+
+set imh [image create photo -data $data]
+set dest [image create photo]
+blt::winop image rotate $imh $dest $angle
+
+$driver put output.image(outi).about.label "Rotated Image"
+$driver put output.image(outi).current [$dest data -format jpeg]
+
+# add a little html note
+set htmltext "html://<p style=\"text-align: center;\"><a href=\"angles.html\">Learn more about angles...</a></p>"
+$driver put output.image(outi).note.contents $htmltext
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/image/test/45deg.xml
===================================================================
--- /tags/1.6.0/examples/zoo/image/test/45deg.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/image/test/45deg.xml	(revision 6168)
@@ -0,0 +1,678 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>image</title>
+        <about>Example of a Rappture &lt;image&gt; object.
+
+Images are used to decorate input and show output.
+
+When you click the Simulate button, the input image will be rotated to produce the output image.
+  </about>
+        <command>
+    tclsh @tool/image.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <loader>
+            <about>
+                <label>Image</label>
+                <description>Use this to load different images.</description>
+            </about>
+            <example>*.xml</example>
+            <default>nanoHUB</default>
+            <current>Circuits</current>
+        </loader>
+        <image>
+            <about>
+                <diffs>ignore</diffs>
+            </about>
+            <current>/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/b
+AIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxsc
+Hx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f
+Hx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBLAEsAwERAAIRAQMRAf/EALMAAQABBQEBAQAAAAAAAAAA
+AAAGAQMEBQcCCAkBAQACAwEBAAAAAAAAAAAAAAAEBQEDBgIHEAABAwMCAwQFBgoHBQkBAAABAgME
+ABEFIRIxQQZRIhMHYXGBMhSRoUJSIxWxwdFicpKi0jNT4YKykyRUCENjczQl8PHC4oOjZBYXRBEB
+AAICAQIEAwcDBQEBAAAAAAECEQMEITFBURIFYSIT8HGBkbHBMqFCBtHh8VIUI8L/2gAMAwEAAhED
+EQA/APokb+00FwBfaaD2N3aaD0ArtNB7AV20HoBXaaCF9bFUvqDAYsKJSuUH3Eg8Awnfe3rIoJFg
+yt5zIyCoqSuSpDf6LQCdPbeg2u09tAse2gpZXbQLK7aBY9tAsrtoKWV20Cyu2g8rVsQVqJCUi5PH
+SgxGcrEekIjtrUXHEb0EpUkW42uRxtyoLzcxtUgsIUrxU33J1uAOZ9Bvp20F8uvfXV8tBTxXvrq+
+Wgp4r/8AMV8tA8V/66vloKeK/wDXV8tA8Z/+Yr5aDXZ6EvI4x+K4tSm3ElK0bjZSTxFBDcDm8pBe
++GkPuOP4wBp9u5+1hnRt1I7UcD7KT0E/blOuNpdbeK21gFKgbgg0jqTEwr48j+Yr5ax0FPiJH8xX
+y1kU+Ik/zFfLQUMiT/NV8tB5U/JUkjxVi4te5pgy5w1KlY/L56B8V8OZBTPYUVhG5y9nLk21JrEz
+EERlP8fkpMqCxJDq/tm0q487a/PWci98TK/mr+U0FDJlfzl/KaCnxUu/8ZfymgvpRQewigqpkqQU
+hRQT9JNrj5QaC2ILv+ae/Y/doMYRJDuXUkTHw1HaBUkFOq3CbXG23uimYGU+23GYXIkz1sMNjc46
+6ttCEjtUopAFYmcd2YiZnDnWOzWIzPmG6/DyqJTGNhKWhxpxtSitSiVBNhqAlJvYaV5jZWe0s2pM
+d4TfpzGvIwsUqlPJW6kurA2cXCVHin017eWz+Cd/zb37H7lA+Cdtb4t7/wBv9ygsTYzzUJ9wS3ro
+bWoe5xCT+ZQUhQJAhshcx9S9iSpRKCbkX5poL/wTv+be9vh/uUFPgnv829/7f7lA+Df/AM278jf7
+lA+Df/zbvyNfuUD4N/8Azbv6rf7lB4MBe8L+Jc3gWCtrVwOy+ygfAu7ioSnNxFidrV9OH0KD0Ijw
+/wD6nD60t/uUFDFf/wAyv9Vv92gp8K//AJpw+tLf7tBX4d7/ADC/1UfkoPIjSAf+YUfWhH4hQYcV
+E74+Yw7KK0p2LaSUJFkrB7PSKDMLD/8API/qJpDD546zyef6v6+m4Dpx4sQ8cVMSZgu1fk6VrTrs
+3XCU89ardtr3vNa+Cy01pSvqnrPk1MHJJ6AzDcnGdYKnuskJn4shbkV1H008VhKh9FXI1nVNdc49
+WXjZHqjMVdlwHXissmNIS+2IEoAofQkK237dflqxzKDMJj8NMt/zX/tpoPDkSeQQiZtJFgfCSbHt
+40GNjxknooLsoB5ClIdHhD3kmx5ig1fXGem9M9KZHNpWmQ9FaJYYLYAU6ohCL2PAKUD6a8bLYh71
+xmXz3PwcSYv7w63zz7+cmjxfgIyC+8kK1AISFbPQAAKq9la167bYWVdlv7K9PNt/LnrOV0vmlYSD
+kHZeHmJUWYM9pbbsd4a7m0q29xYuDbS9TOLsraPkn1Qh74nLuHTnUD2SdcYkJQlwJ3tlAIuOB0JN
+S5Rm920FNtBsAig9hFB7CKCjrjDKPEecS22OKlEAfPQYOPdV8bKUWlqQ+vemQEkN7EpCUi6rHlyp
+kcZ86Mg3n+qImBk/GyoEFnxzh8ahTjr77hPfdsLBCEJATfmTVdzt+rVGd1vTCXxonvXv8XLuocHg
+Yy0jGtZLpvOtjfEanBaN6gL9xZ4H1Go/G28fdHq1Wz90t977IjE4mHdPLLrjqLMYvBOy13XKaaRI
+ZUgAAgbVWsB2Xq3pnHVXWxno6xtr0wbaDAzC2jCei+KlEh9BS2gnvG/YBdXzUF+E4p6OlSmVsEd3
+Y4LK00vQX9tBTbQNtA20FNtA20FNtBTbQNtBTbQU20FNtBrJ7zcTINSlKBQWlNPJSQV+8FIO2+48
++FBnp2OtBQB2LFxcEGx7QdaDg/W/RUzFdYKxuPcVFxnWM1K5s1J7zSUNlbyL8t4SSPWaqPd+TPG4
+99lY64/NL0Wi05t38EQ6t87Om+kCvBdGY2Klhr7NUtxvxXXlJNiq1xcE81nXsFcnwPYN/Jj6vItb
+r4RMxEJuzbWv8us+TVeWnmv8dnVYrJxBARkFFURaUeE2XzqU7R3QV8fXXacHR9Gnoi02iPPqrtsZ
+64w+meksx8XG+DeVeQwO4T9JsaD5KnzDRCQFNBrH5DWPnOLdJ8CSEqsnvKDg7p7guqyhbgKDF6wx
+iMp0vPjBO8uMLLQI4qCbp07b0xmGY6S+Zsn5uw+hoycTgIjcjqV0BeXy7iA68uQrvLQgHglB7uvZ
+w51xE+y7OfsnZvtP089K5x0+PmsvqxWMT38oRSf5zdTZKXHe6jh+Ihh1LrcgspbcaIOpSpATy4g1
+bcP2fVx7ROm3X78x+TTsvmOsYfRXR+UQl+FMSq7SiAog6FDgtfTlreuhzE9fBCh1Ap1oKbdaDZBF
+B7SiguBFBgZZf2aWUORwtWqmnhvUUjmhIub+ygw4zS28fLU2l9hxQKUF5XcuRoptI90eykdx8k9a
++c3VzPVOZi9KNqaYRKU1InNhAcfWx9mbuEHujb3Qmue5ntOjdtnZyJzPhHX9E7Ra2Plrlol+b+ez
+8VXTvViDIS/3Y77qU+My59Bba0hN7H/vqPX2PVotG3jz6Zj8p/B6tsznMemfJ9KeUuLdYXjmXrFc
+dlS121FwnaDfTmRXU4xiFe65YUDbQajLq3PeGVMqSE3LQF5P9XRVBeisvqhRvhy81tVdaZJu4U66
+K97nagqxHyiYshLrwU+sfYKOoSdtr8Bpu1oKKYypGq07tgGirDfu1Pun6NBsNtA20FNtA20FNtBT
+bQU20FNtA20FNtBpMpFcYfVJjtIY8T+LLQuzn6hKEn5TQXWpchyA07EWuSUGzynGylatDwAAHHmK
+DV9c4J/OYb4RtkhbiFlDw/iMOFPdWOPC5vatW/RXbTEvVLYl8S4/pmTjc1km8w3bJxH1supWPd2a
+ApvyUmxB7Kq+fsmuNcOs/wAb9qpyrW2bZxSndnzUtFHcRZaSFIcBsoKGoINQdN5ic5XHN53Cms01
+6vxn/l2/yu64dy2ObkFWzL44hEpJ+lYaLt9VwfjrotGyLxlwHI1xW8+l3bHTWZ8NuUz7qx3k80qG
+hB9VbWhhZCGtl4yIkba44LuykKspJ4e5puoKR5insc4I74myGxZxSk7PXomwuKD466t6ej4Xr7Pl
+1shb0pTzAUO8G3gFgC/IFRFU3Ptb1eiOzr/YePxqa55PI+aI6RXzaiapt1koLKSCPbULXmJ7rLf7
+vq21mv0a+iPvz+rr3lLlhN6WjMlX2kUGMocx4Wif2LV0Wq2axLheTStbzFP4y+gsRK+Mxkd+91KQ
+Av8ASToqtjQy9tBtAig9BIoK0Gty7LbrkNvaC8t9O1Y94JRdarH1CgxetMs1ium5+QcNkxWHHrnh
+dCSQPaaxacdZe9dItaInxl8OMSbN7g2LqJUoq1UVKNyT7a5u8eq0zMu/4/vVdFIrq11xHSc9Zn9F
+mHCZy3U2IjBuzqpbSrehCtyvmTU/g5icKf3rdo5Gr6la+jZHh5vszy6igPSXgLBttDYHZuNyP2at
+sQ5VOaBQa7JMtGZBUEgPF/8AiAd7alClWJ7NKDYigUCgUCgUCgWFAsKCm0UFNtAKaCm2gwcji2JS
+S7ttLbSr4d0EgpURp6ONB7xzypECO8o3WtA3n84aK+egyNtYwS+e/wDUl5fqbDfV+NbAttayiECx
+Ui9kOWH1DofQfRULmaItHqWvB599dLao7XlwmJHXNlIjhwJccBDW7gVAXSn0buFVuvX6pxCRecR1
+jKQeWcyXH6paLNwlSVolIty4WI7QqpfFia3mPCEXlTWdeX1V0NFySEOvOILcN1IKUL0JX9YA+irV
+WJHMgRpbYbkI3pB3AAka+ygsYsrSl+K6buRXCkGwF21d5B09GlB87f6lcD8N1bAzCUkNzIxZWeRW
+0rcP2V2qr9wjtKz4N/7fCHJFtBMP4or0DoaUn6u5N0kn02tUKurNfVlKtsxaKzH4p55TPLakS0Af
+ZLWhQ9K7EHh6LVY+3zOJiUHnxWLRju+kuj48tnGL8dJQ2tzewk6GxGpt2XqwQG920GzoFAoMHV3M
+D6sVq/8AXdP7qaCEee6pf/53lW4yCorbSHANbt70+J+zWjk5+nOG7j49cZfI+xIhvylGyGVNp4cV
+OEgfML1S00zas28lzs2xFoiPH9kh8uMUiX1lDkFJIiJWtRH5w2p+c1K9vmZsi83+MY7y+u+ioD0X
+GuOPIKFSF70pPHaBYE1bQqs5SGshQYUog5KEi+oDq7epIT/4qDNFAoFAoFAoFAoFAoFAoFAsKDXY
+gbBKjfyH1gD81dlp/tUGwKaDEyWMh5GE9CmNh2NIQW3WzwKVCxFYmImMSzE4nMOH5H/SpiDJW/Bz
+0liMDvbjqZQtxNtQA7uTw5XTUP8A8cRbMSlf+uZjEsvpzpDE4DPTW24yDmXCmVFmOAEyEtp+0QpP
+uhZtu0HbUutYr4ZRptMuw42czPhNSmdErFlI+qoaFPsNenlk7aDT5Ficzlo0liQlpmQPh3kqRvFx
+dSDxTxNxQa3rDoOF1bjDj8wtC2wd7TrbRS42scFIVv461r264vGJe9eyaTmHGuqfIjGdPRXb5N+X
+BmrZaeCm0JU0kLv4gUCQSPVWnXxYpmPNu2cmbYT7oHoPFdOz3sfADKyhtLsaQ+34iykjU332vrUi
+tIrGIaL2m05lPyxlv8yz6/BV+/Xp5efBy/8AmWf7lX79Bu6BQKDCxo3mTI/nuq2n81HcT/ZoMiVG
+jyWVMyG0utLBC0LAIIOnOsTGTLhc3yX6LzPV2TxEdL+OxUVKJclEde4F5YI2jeFbUhN9K0W48TDf
+XfMJ15ZeWfSXTuKbkwYe+S9c/FSFFxwpCiE8dBp2CtmvVWnZ42bbX7p8K2NatAoNXJhRZWZbLze8
+ssFQ1IF1Lty9RoMoYyCODX7SrfhoH3ZB/ln9ZX5aCI9a+Yfl30atDOamlE1wBSITBcdfKTwUUIPd
+HpVag0+C87/KfMSkxUZF2E84bI+N8ZhBJ/PKige00HRUwYS0BSFLUhQBSoPOEEHgQQqgr93ReRc/
+vXP3qCv3fH+s7/eufvUFPu5j67w/9Vz96gfd7XJ14f8ArOfloK/d6P5z396v8tBT4BH85/8AvFUG
+Fk52ExbfiZLLpgt/WkSUNDTs3kUEHyfnf5V491LR6jelLKglRipW8lNza6lBG2w48aDoEZtmVHak
+xp7r0d5IcZdQpCkqQoXCgduoIoMREJbeXcbEt8B9oOAhSblTZ2n6PYRQZ33e5b/nJH6yP3aCvwLv
++cf+VH7lBQwJF9Jz/wAjf7tBEes+l5S0onRZTpmR1eLFXZIIdGpF0ge9+Ggw+l8kvc1LTMdahz1F
+uU3Zv7CWn3ge7oDxHoPooJuYMvlOd/VbP/hoLE7FTX4y0CasrHfbuhsd9B3J4DtFBSG3LkxW3xOW
+N4BUC23cKGhHDkaDSdcYOTMwL6FylO7UmyChAuQNwA2jtFBHsBLlvRcHlvjVAm8SSrYg2sduunto
+J3IiZRLLimZhW6kEoQptFiRyNu2gfebP3T94202btnPfw2evdpQbigUGPPeWzCfdQQFoQSgnttp8
+9BjQI2Tjw2mVLZJQkAnaoa/LQXnTkktqVvYBAJBKV2/DQc86ZdyLkLqfOBTN5MhbDKgFG4bAaQR7
+VHSngJ7jo+QYgR2AWR4baUnRXIeumIGTafrq16NFfloA+8P9z+1QV/x/+6/aoMNozlZJ+wauhttJ
+J3W1KjQZf/UP91+1QRnzF67R0V0vJzU0MrWn7OHF3KCn31X2Np09Fz6BQfFGVyuRzWXl5jJul/IT
+nC9IdPMq4ADklIsEjkKDFcUANaDqHkz5sdQ47IsdLOzlrgySU45LizZl0AnwwSD3F62HI0H0j011
+RlpcpMOYy2takkodSogkpF7KATbhzoJOXJnJlH95/wCWg8GY+iQy06yEh4qSlaV7rEJKtRYdlBlU
+FifOjQIMibKX4caK2t55Z+ihtJUo/IKD416q86/MDPzpTjeXkQca64sxocYhkIZKiUJUpASpRA5k
+3oINIefkOqdkOLeeV7zrqitZ9alEk0Fu1B2DyU865PS6B07lvt8Q6q8F5arfCuKOqSbH7JX7JoO0
+TutMmMjj5ZQ2GUOltxCAe8h1P1ie0C1BPoM6PMjIkMK3IWOHMHmD6aDIoFB4eZQ82ptYulQsaDme
+XiDB51wvXThsoQ1N7Gnzq2+Lenj7aCa9OZF1xpyBL/52HZCvzkfRWKDdcaDXQx8PkJMQ6Ic/xDA9
+CtHB+tr7aDInseLEcRzI09mtBy3BNFpnP4Q6GE8JcYC2iFa29lvnoOl4qT8XjY0gcVoBV+kND84o
+MD7rc+9PAt/gN/xm3l4nDb+t3qDfbtQL6mgtPymWSAtYCj7qBdSj6kjWgx5KZEsBot+FH3IUtaz3
+lBKgqwSO23OgzqDXdQzRCwsyUVbfCaWoK46gG1BEum4amuicJEV/FyLyHnPU4ou6/wBUign1AoFA
+oMH7ePMedLZcYe295GqkbRbVPEj1UF9M2KthT6XU+CgFTiybbQNTuvwsO2g+MvOfzId646qU7HWr
+7hxxUzi2TwUL9+QR9ZwjTsTagggctyoLEh2wNBn+XmMnZjrjGsxEkiM6JLyxwShs8zy3HSg+3uis
+OWmPj39XFp2M3+rzV7aCU0GHkDtdhq7HwP1kqFBmUEU8zoM3JdFZrGRCQ9NhPstkG3fWghKSewnj
+QfC7LjiVKaeQW32lFDrahZSVpNlJI7QaC/xoFqDwpbYNlKA9BoOpeWfX7s+MOl5e5+QhO/FP87Nn
+d4aibe6NQeyg7vg8zIxkgKIKmHLeO0Pwj0ig6FHkMyGUPMqC21i6VCguUCg0/UuEaykB1had29JS
+oDjY8CPSDqKDRYrCZyFEgrBL+Qg/ZKWRsDscqISklXNCdKCaJNwCdDzFBg5NC0KYmNoK1x12WlIu
+S0vReg7NDQZLEmNJSSy4lwc7G9vWKCHK6ZlMdYOZdoH4d1ksPthBJXrYKvwsBQb3piFOhQnIspG1
+KHVFg3Bug89KDcbdaCP9RdRYDDb52ayjeNitI8NJUsJUsmylBAF1nl7ooOPdV/6nYEZTjHR+L8ZR
+45KbdCTpxDQ76v6yh6qDjue8yOuc7kGp+RzMlT0dYdjJaX4LbSwbgobb2pBFuNB9D+TnnhF6pZRh
+8+43E6hbFm3SQhqUkDVSb6BztT7R6AlvWGRhZqA90/ClBuTMAQJCkqLNtw3JKwPeKeFBt041xE7F
+tIbIhwWT3uQVtCEp9lqDdUCgUCg8tutOAltaVgGxKSDY+yg0vV+COWwORiRiWpkmM60282Shd1IK
+bXHHjzoPhabjTjYZOQ3MTVPFhiNax+zJS4td9QkKG0dpoKO4t9E5mAhQcnOJSXGE3u2peoSo+rU9
+lBq8mhSGV2spaDtG3W+u2wtx1oPpHyA8sTjca27LRbITgH5q+bbf0Wwfbb10H0O2hLaEoQAlCQAl
+I4ADhQeqDCytvBZV9V9o/tgfjoM2g8PstvNKaWLpULGg+Xf9QvlM9Bku9XYdnunvZVhA0KR/t0gc
+x9P5aDhxl/YhSCCVWtQW3vjA0266Fpaev4SyCEq2nXaeBtQZTuGeh5CLFyTiYjUkIWJQ+0R4a/pj
+bxtzoN/0hichjPMGDHcFlsKU8HU6oWztsFpPNKrge2g+ksW85JaSkIKlaBIGpN+VB0XpjFy4ERXx
+CyFPHcGOSP6TzoN1QKBcUEZz/mV0HgHixlc3FjyE6KY3+I4D2KQ2FKHtoMLF+cfllk30x4vUMQPL
+NkoeUWLn1uhA+egmSVpUkKSQpJAKSNQQew0GO9AiPL8RSNro4OoJQv8AWTY0FotZJknwnBJa+o73
+XB6lgWPtFB4w8qQ4h5iUFCSw4QoLtuKFaoPd04UGxoPz5lZWbkpKpM+QuTKWbqedVuJ+XhQebUFL
+UFULWhaVtqKHEEKQpJsoEaggjnQds8tvNFrLKawmbdCcsruxZGgTIAF9quxz8ProO49P9S7QmJPX
+oLBp8/MlX5aCVBVBWgUFqWyX4zjIO0rFgaCxGiutOb1KupzvPkWCSQNqQARcAD00Gr606mRgcQp5
+seJPkHwYEfmt1WgPqTfWg4xM6MxWVkwsW4w1k+qJcoyZeTWN4ZQkhRUk9gPD2dtBh/8A4x01keqc
+qxgJciGy0wW8hlnFCQEukkr8IKCPe4HvHThxFA6K/wBLkpnJxpuTyzT+IaPix0NtqQ+ohV29yVXS
+O3jQd+6exUbGx3YzG5QbdKfEcO5ZAAtdWnC9BtaBQWpMZuQyWnL7TY3BsQQbgg+ugs/d3/yX/wC8
+/ooH3d/8qR+v/RQYWV6dbyERbLkp8hQIsVJIIPIgpoPjnzh8rJPReZVIioUrBzFksq/kuHi2rsBO
+qfkoI109kIcttXT2XXshSVXhSidYsg6BX6CjooUGXAhOqkP9D9RpLb6VK+6pwBV4ThuRqOLLlB0n
+o/obqXH9LMS8uPFjx3ix8QlSfEZb3WUjdqrYTzNraUHZun/CwbcTJwAqXh5qy3ZSSXGNLEE20sR+
+Kg6My+080h1pW9tYulQ4EUHugUHz9/qN82spipzfR2BkKivuMh7LS2zZwIc9xlCh7t03KiNbWoPn
+Ya3UdVHVSjqSfT20Fl8Ag6UHR/JXzoz/AErmo3T8x4y8BPcDDLT6ifhXVmyFNq4hClGyk8OelB9E
+M+YU5rJpamMAtLc/2fuhrbxFx7wPK9BNsZk42RholRiS0vgFCyhz1FBiZYSI8liZGWlveRHkKWCp
+O1R7iiARwVp7aDI8PNbv47G3s8NV/wC1QfBHUvTeW6VzTmKyae8O9HkgHw3m+Skn5iOVBjtOhQAJ
+15UB2Uy2bE3V9Ua0GE7PdVcJshPo4/LQXHo+VxciNKcS5GkKCJMR48TYgpWlQvreg+u8TMVNxkSU
+sAOvMtrdT2LUgFQ+WgnnST09yKoPaxkd1hSr7vSB2pFBv6BQUUQEkk2AFyfRQRPIdWSGJa5CBbGs
+ghalJO0p5uX09lBDnsi1N+K63zyQ7CY3M9PwV6JWdR4m3nu17dL+igsNGbgMIqR4W7q3qZdmG06q
+ZbWbgdife17D+jQTHprptmFDawqFb9hEjLvc3XVG+zT0j5LUEy7qU62SB7AKDBakrbmONpbU82+5
+uDrYuEd0Cy727OVBsBQKBQKBQKDVdQdMYPPwXIOWipkxnRtWhXMUHMnv9LnlUJBkFiapviY/xSko
+GvLaN1vbQepvTA6LyiZ8KO29h1JEM+KgPuNsEW8JS1jeRe+3vfm0HhpyR0xLK0som9NZZBDQSd7K
+wpOjYuLhSeVxqnu8RQOnc63hJFthf6ZyAAdauVlk8PXccj9JPpFBOocoYWSlO/xsPMs5HfGoG7W9
+x8/o1oJQlQUApJBSRcEcCDQVoPjD/UIAPN/K24lqOVek+Hb8VBBU8KC07qDQaqQ4pmQy8n3mnErH
+LVKgaD66wD/jwwSremwUFfPp7KDouF6jx7bMaC+sNuBkEuGwTcXG0nkbCgzZK5OVYcYjIDUVwbTK
+dBuf+Gg2PtNBc8fJ/dH8I/eFvCtbTdfbv9Vu9QQbzW8r8V1Ph3GnG9rg7zD6R32l20Wk/hFB8f8A
+UGCy/TeTexOUb2Pt6tOC+x1HJaCeX4KCzhMWxk5C4ipSY8paP8GlfuOufUKvo6cKDNxacW4Xuncw
+0IE8uXiz1Cym3Tp4b3ag8jQbfpvF5ZWUd6Pz2PXJit7n2lJIuz2ONOHRSF9l9aD6U6PEJzHIltgS
+GGFhMqOFWWlI0Sq31T/RpQdSgvxXoyFxSPAtZISLWtytyoMi9AoLE8/4GR/w1/2TQQXqmS7nsm10
+hDcLcKOlD2dkJO0JaTwZCuHe5/0UGpQYmdzK8g4Q10l04LR0JACXHUDkPYP2R20GR002/k8jI6yy
+De5bx+HwkU8k32hQ9duPZc86DoeLg/BxQhR3PLJW+59ZauNBcnJjKjLElHiMgXUnaVcPQNaDFi/F
+OONrju2iD30OEOKP6Nvd9poPciTIStwNk7UFO8lBNgSLlNvesL0F1l6QqCl1SSXbXKQLE6/VPbQe
+VSlb0AnwwttStpBKgpPH0aUF+K4XWG3DYlaQTbhc0F2gUCgUGBPgMSI7sZ9vxI74KXEG1rEf9rUH
+NJWNaxkhzpnPKWvp6csOQ5QO0trv3VX5WV73psrmaDVSMSnCZJ3EZdJdiPm7UpCtu9sq/iaaXH0v
+qq14GgkeGmuYOarpfPK8TGSO/AmK0ACjopPYL+99U+g0Epxkx/Fyxi5puwo/4R88LHgL9n4KCRig
++Ov9SiQnzallIGsGKSfSd9By9S1K4kmgpQYs5hTjKijVYF7dtqD6m6Akh/BQlp13xmlKPpKE34+m
+gnHTXTkTJoliQ+4l9t4qATa2xYBTxFBOoMVyLHSwt5T+zRK123W5A2oMigotCVpKVC4PEGg5N5v+
+UEfqqGlTSvDdY3LZWlO5SVn8XaKD5T6g6E6sw8ssP499am12akR0KcSog6FJRcg+vWgm7flv1R1X
+0w1Oz+Ik4iZELbbWaea2+OwogWcZJSslI4KtbtIoOh4rBTujGYi/HbzeNLRbiZF5G4LZV77auaSO
+z3k+mg2imp2KLPUGHeS5EkLCCGxZbbi+LLySSlQPyKFBMen89MebM/FLa2pH/UMasK3Jsbb0a32d
+h5cDQTmJLflMJfYW0pCv0rg9h9NBe/6j/uf2qCOddZ2fi8IpDaEOTJ6hFhtN7ipTi+wWtp6aCHTo
+srFY9jpXHO+L1JnFB3LSxdRSlWq9x7Ep7eX6VBem45mdNh9EYlVsZj7PZh8XuVA3O5QHvKV89zyo
+J1h4rL7qJDaAiFEHgwWwLDQWUv5rCg3lBbkKfS0osIC3bd1KjtBProMKLHRId+Id3JfbVZaU/Zjd
+YaHae/7TQbG1AoFqABQKBQKBQUUAQQeBoNNn8FGysFyHJ03EFlwalCgLBQHzEcxQQNDTmQjPdJZn
+a1lIl1YeWRc7wk7UXPvJUBoPpJ04igw8ZOayuLPTPUaVxMhFO3HSFoKlocsdreg7ySn3frJ04ig2
+/TecRLYPTedJZmRjthSCFX0HdQbi5CgO6eY04igk2E6jZbfOKnuFMps7WlKSobxyFyNfR20Hzf8A
+6ooBa6/jZID7CfCbShdiAVMKUFC5HHvCg5bmWY0XGYeU2iyZbKy84De60rI1HzUFMxGjRJkNlq6U
+SYzL4UTuuXONtBQeM3Cbx+Yk49CivwCNpVbcQpII0HPWg+hPLBQGGgREnc6hlKVoBuQbcDQdhxLE
+fGiK547a3nVluQlCgruuAbRp9UpFBJqBQKBagoEJHAC/bQWZMZp5pTbqQtCgQoEX0Oh40HM8ziHu
+m3n23WVTemJ6x40Ye8yo6BSD9Ep+ir+qrkaCMTG3umJ8Z2OUzsLPJcjuKBLTiUcUOpHukX1HFJ1o
+M2RFVFca6j6dcKGkq+1bJBcaWRbwnTzB+irgoaGglvT3UTcvdNx6fCktAHIY6+nYpbfMovy4pNBN
+4E6PNjh5k3B0Unmk9hoLj0Vh5SVOJ3FGqb8Ae2g1g6axzU+XkmEBvISklKpA1ULjS27dQa7C9GIx
+GPejR3yXpbhXLlO2Li0HiBtAA7KCTNMtstIabTtQgBKUjkBQe6BQY8T+JJ/4v/gTQZFAoFAoFAoF
+AoFB5cQFC3PkaCK9YdMJy0VL0cbcpD1jOA7So3v4ZPr1SeRoIs6hXVmOKtvgdV4pJBSfslSEIOo9
+B3fqL9BoKNqHV2N2ulLPVWMTdtSvsy8lJ1SrhZQVx+qrUaGg3GDyx6hh/AzD4PUUEG27uqcSg94H
+85J0V2HUaGgkWNmRco0YOTYQ5JauFtPICgoDQmygde2g5JlukOl5XX2ViZHEx34CWFJYjFoJbbWs
+AhaNm3ablPCgjeL8tOjc/iM25Oh7nMUy03j1NOOIU0lK1J2908O7pegy+nPKno7NMvdTTUvOZGE8
+234AcswobE7StFt1768aD6AwuLxsHHstw4zcdsoSSltIF7i+vbQZ4bQOCRf1UFaBQKBQKBQWJcVm
+Swtl5AcacBStBFwQRY3vQcszGJa6byb7LrC52AfALzXEs+KbXQSdFjb3Tz908jQalxiV0vKRKhrT
+Nwk1JS06blpxonvNOp5EcxxB4UF+XFEdTef6deUGUEeI3uBcYWRohzlYjRKjooaGgk3TXUPx6FSo
+YDOSav8AGQdQlxI95baeOh95P0fVQTjG5FicwHG9FDRxB4pNBl0CgUCgtvPeEAdi13+oAbeu5FBh
+xpJDj6iy4Ate5NgDcbQOR9FBnpNxe1r9tBWgUCgUCgUCgUCgtvN7hpy4jtFBCerOmckZjOc6fLbO
+TQ4kvpcJS2tI0K1W493RQ5ig13WPT0tb7PVWAcUzOirDsyM2BZ4IFt1jc326K7RxoPXwjOb8DrDC
+xvCzkYBuU2E2UbAbgAeOnyj1UEpXj5eSYjZJtBgZKwLiF3HDTXj/AN1BBsg02OvcuxLkBoPQftVp
+B0dS22pPhgk89bUGo8vXHSxnmlWJfhF2wTsNmiu1wr0qNBm+XKP+h51gq1Q4ysaW0AsR8ooOrYZe
+7FRSeJbTQZtxQKBQKBQKBQDQaSUIzc6YnItWiy0oSl1Y3NFIG3arsvfnQQzL4j/62XkraVO6Xnke
+OwDuLZOiVoVyX9VXPgeRoI45Hl9MzWp0F1MzDzAQzIKdzbjZ0Uy8n+0k6g6jWgyZEBJaRncA6420
+ggus7rOxnCO6lR5pP0F8LaHnQSvpnJzctCcy0RhbEqI4WZadhQ28QAoraB4jXvDhfhQTHG5Niczv
+R3XE6ONniD+SgzKBQKCikpUCFC4PEGgtNxWkLKgBe9091I2+qwBoL1AoFAoFAoFAoFAoFB4LKCok
+63oPLcZlu+xAF+OlB6aYZZRsZQltF77UAJFzx0FB6PCg5dmRjEeaa15FNmfhFFCwDdKilIC9NfoE
+UEb6AXIe6iyEeKorYeiyfFD99ymioWKSP0qDL8upH+MzERwj7dhQQRcjc24tdiD+b2UHTunphRCj
+sO8HAotr5CyyCFE+y1BsEPyUlCnNllLKFoGhTxsQq+vCgzaBQKBQKBQKDyttC0lC0hSVCyknUEHt
+FBqJGFcaYcah7XYrgO+A/q3Y8Qg8U37OFBBcfipzfUBwTUNT2DmEqnsvkI+HFjtUm99zgIASpPvD
+3uF6CuHwI6O6pdM5Kn8VOZMdl8qVsSkq3WLfu3P0r+yglEPB5LE5NL+HWl7FStXIy1e5fW6T2dlB
+vm8XFbmmYgFDpFilJsm54mwoMygUCgUCgUCgUCgUGOh9wSVNr4KJDdrHQC+vOgqZO2UGFAjckKQq
+2l7m4JoPKZD1xfbqsoUjmLXsb37KDJoBNqCOYzrJjKdRSMVj465EWIg/E5JJHhIc5I9O7lY+y2tB
+vkSWVuqZS4lTqPfQCCR66C7QKAaDnWYaKfNbHqUQUOsbS3xKkhDpIsaCG9NtOPdauQse4YbilSUX
+IUhIsEk93gb8bc6DYeXEdSOqchBecDi/hnkKcAHEFAvb+vpQdM6VCF4xSVWVZxWh10IFBt1R2FAh
+TaSFHcoEDU9poLlAoFAoFAoKKNhegxG31qdR37oUDu7AT7oB7bXvQZlBrlLaayjzqkrWS2hA2IKg
+LFROo9dB6kvwZTRZkMOONmxKVNLIuPZQXG5kVCEpShaEJFgnwlgAD2UF0TI55ketKh+KgfGRvr/M
+fyUFPjon80CgtP5fHNBJW8DuNgE6/goLonQrfx0a/nCg9fGRP5zf6w/LQW5GTx0dlTz0lptpAJUp
+SxawoKRMpjpcduRHktuMui6FhQ1HDnQe1z4SFJSt9AKzZI3DWguhxs8FA+0UHrcntFBjIkpVLW2E
+d1It42lioalPsFATKaXKXGKSFIAIURoo2vYHtFB4bXEekPMBofZK3biBZSvpEekc6DM40HPuqeoc
+lnZ7nTPTi9oTYZPI8UNoPFKbcb8Lc/Vc0GxxmOTh4bWCw27xgLuuq1IKvedcVbVZ+b5BQSbHY9qG
+wEJ7yzq64eKldpoMqgUCg531IW0eaOBWblRQU7bj6Tbqb29F6CKP72PMRa0JIcbkuLSU2JIAUraf
+YigyujlBPmOVJO0yPGB3XB2qTvA/ZvQdH6TSUIltn6CwPkBH4qDfUCgUCgUCgUA0FvwWwgISNqRw
+A0FB6W4hCSpaglI4k6Cgsw1oc8Z1PurWbHt2gJ/FQZFAoFAoFBh5FtDhipUkKHjp0PqJoMvThQRX
+Pde4uC8IOPbOSyjh2txmAV9707Qb68baDmRQa+H0Vl85IRP6tf7iblnExztQkHk6tJ7NCEe0mgmU
+fG4+OwhhiM00y0AlttKEhKQOQFqDGyECCfAWtpACHU3IASLHttQXIq8bJWtDDSVJRa6wgBJvyBtr
+QXzBhn/Yo+QUHlyIlEcojJDakHe2BoNw119fOgtIjSDCSo2RMuXvQFn6PqtpQUEZ5MNtQ/5tu7pH
+IrVqpJ9Bvagg2ez0/KZAdO4NShkFgryc3erw2EH3kix5e7pxOg5kBlQ+kYGLZTAxjshUx6ynHN9i
+VWF3HNvdH5qeA/CG/h4FGHgrdakvOyAQ6+44sq32N1A35WvQb8EEXHCgUCgGgi3UPS7mQ6kxeXQ8
+psY4kqaSm/icwN3KgjznSOXT5gfeaihGLS6p1xSlArc3pcG1KRfQb760Gm6exGdY8wy8Iq/g4kl1
+t+SSEjZZSU3B1N0rFrUHRenkrRkcglQIG7XsvuV+Kg31AoFAoFAoFBZmSkRo63l8E8B2nkKDT4jK
+SHZC2XCCp0lYUo8NPdAoNwmMjeHFkuLHAq4D1DgKD0y34aSL7rqUq/6RvQXKBQKBQKDSdR9QYvEt
+NOzXkpLawvwgRvtYi9idB6TQRsnrDq9f2d8LgV8HFpPjPJ/NQbE6c1AJ9CqCUYDpfDYJlSIDNnnP
+48pw73nD+es6+waeig29gKDDmZJmOQ2Luvq91lGqj+Sg10/Hyp7TK8grYyl5paYrZsNFD31c+NBu
+220NoCEJCUJ0CRoKD1QKAaCB9X9VZCZPHTHTl1zXriZMT7jDd7KJUOFvlvoNeAZmJw0PpyCjH45B
+enyDuccUAVOLIsXXfR9VPC1BIcXi24aFLUfEku3U88eJJ1NBmOthxpbZ4LSU/KLUFrHuFyEwom6t
+gCvWnQ/OKDIoFAoFBbfK0p3Nt+Kv6twnT1mg1AkBuc8+Y7VnUpDiS63u3I56+i3yUG0iPLeQVqa8
+MH3e8lQUO0FNBfoFAoFAoFAoMZxpD0ra4kLQ2gEBWo3KJ5eoUFxMSMlQUlpAUOBCQCKC7QUOlYFC
+qjDQdT9Y43ApQ24FPz3UlbERBsSBpuUo+6m/Oq/n+5auNXN+/kncLgbORPy9vNz9zrrq+RN+J+JT
+Gb+jEbQktgekqBUo+m9cbv8A8k32tms+mvk6fX7Nx61xaPVPmm2E68x0qG4vJuIgvsJKnVLNm1JH
+0kk/2a6T2r3yvK+W3y3j+v3Oe5/tttE5jrT7d2ukdbZTOuqg9IMF/UpeyDncba7SpRBCT+bYq9Aq
+/wAdcSrIwvQui4eNeYymYdVlciXAXpLoJZauDqhslX0vpLJPqrECaNuIcQFoUFJVqFA3BrI8vvss
+Nlx1YQgczQaPKdQJZjl5x0QodjZ9f8Ryw4Np/HQRaNI6i6iWWcI2MZhXNHstIuXXgTY+GNCv2WT6
+TQSiRIg9P4NqEX3JbrCU+GlRDj7h33ubDTX2Cg3UVyQ41vkNeCsnRF76cr+mg1HV/WnT3SWL+8s3
+J8BhStjTaQVuurP0W0DVR7eytezZWkZl7prtecR3R/pfzt6A6hlIhsTFw5jhs0zNR4O8k2ASu5QS
+ey9adXLpeW3Zxr0X+r+qJzswdNdPDxsrJQfFfSe4wngVKUL7bfSPsGtSkdew+Ih9OQUxGP8AE5KU
+Qp563edctbefqoH0U/00EixmN+FCnXT4kp3V10/gHooM+gsvuSEHchKC2B3itRTb5jQYUWQ80lTY
+8BYK1KQkO2sFG9rFNBskFRSCobVcwDe3toK0CgUCgsuxkrIIskg3NkpN/Qbg0F1KQkWAsBwAoK0C
+gUCgUCgUFhjV59faoJ/VSPy0yL96ChVa/orGRrs11BisPG+IyD6WU/QRxWs9iEDVVaORytequbzh
+u0ce+22KRlzfOeYmdySy3jArGw9LKsDIV6zqED0DX01x3P8A8kvb5dXyx5+LqOF7Hrp822fVPl4I
+F1Z1OYeSbmTpi38g62CttxClp8FshO4rSPswFL4k2qs1/V5vW/XHTOftlPj6fHjFekMCV19HlYSS
+9AiyUPt+IzJslCn4ikp0eUxcqUgLNiQK8a/aZrtiLWrjpMeVvhntlrtzPl9Xl4fbukmEmHKdPwJr
+yNZkZC3EkWBK09427L3qv5NJ0b5inTFunw69G2lo2U+Ex9oS/pvzRw77LmFwQhF/EIQ1JjsG6Wyd
+EkIRYWNjexOtfTva+Rs3ceLXiYt8fH4uL52iurbiJy3TXXGUB+1YZcQeSQpOnyqqynpOEaY6s1vL
+ktF/GNKjyFglUZ4gRz2qJv3fWKww0kzq9TkpuHFaGVzjh2+C2QWWteIuUjb+cqyfXQe8P0uzMkyM
+n1VITkJUV0o8JZHwje2yhoQnxNp4bht7E0EkTInZA7ICfBjcFTFi3D+Ug9npoMtGHiQor6m0lb60
+lTj6+8tRA43NBb6l6pw3TuPEzJvoaSs7GEKUlKnVnglO4/L2V5m0R1lmKzPaHH+pfL7/AO/yTnJ+
+ZcMgp2wkMlDsRhHEIQkftK3XNRd/Hjb1iUrTunV3hxzq7pLMdLTvhcigFtdzHkouWnAOYPIjmk6i
+qbbx7UnqttXIi0dE28kOtMj95O4FqQlp968hDq0pWpxDYG5slQPujvD21a8LdM19M+Cs5emInMPo
+DETWES1OSgVyHjb4g8uVrch6qsEFJqBQLUHgNHxd+9VrW2abfwUHugUCgUCgUCgUCgUCgUCgUFmN
+q0FfWKlfKSaxISZLMZlb77iWmWxuW4shKQO0k1i14rGbdCImZxCAdQeaG7fF6fb8RXA5B0fZjt8N
+B1V6zpXM+4/5HTX8urrbz8P93QcH2K1/m29K+Xj/ALOf5LIx2pCZuanp+IkK2IekuAFSj9FN7AW7
+BXH7d+/lWmZzafzw6SkatFfTXFYR3rjLH7vRFxclxTpccL7MVQSp9LCdz0VLwv4bpQdyeZAqZ7Vx
+p9czsr92Y7Z7Wx4wicvdOOn/AD8M+Es5ECbn+hnGHPhm5U+IpMRbKluIQ24m7aVOr7yjw3Go99te
+Pysxn01tmfDr49P0PT9SnWceqMfaUfy0iF0e/jOpeoskyrMsXS9Cjpsh9tadpSlolSjZOhVoDoTw
+q04835cW1aaz9LwmfCY69/D7kXkTTXHq2Tifh4/gwOtfNKT1lGZj9OtyYENKFvRWoym2H1ssEeI4
+86q6QkK91sdhuasuJ7VTjznbi9+0569bfburabr2j5Jnr1/L7fi0Pl91dkYmclznIDWTkNiOyiXF
+ZDUh5mWtJV4gashRS2CrvD3hxq0tFdM1mLemuZzmcx08s9mv023VtWaxa/hiMZ/J9FZTP4DAoK5L
+gkSAgObEW0Sr3SSbAXvpermLZjKmwjsvPZvMbviP8Fj12LTSR9qpPEKCVe6LfSXr2JFZEu6LkxVY
+deKOLDvf3sLQLF1R+k64e+Vp+tQSXp7pVxlb68o98QQ8VtRwSUI0Fr395WvGglSUJCQALAcANKDU
+dS9Q4fCY1yTlpjMNhd2m1vLS3uWoaJSVc6jcnk/RpN8TOPCOuXumubziHNupOgumPMBwZiVknZT2
+zw4rsWQlyOwkD3W2+8nXio8TXy7mf5Vy/q5vX01/6z0Weqn0+jluWxPWnlZk0S4b5exbytqXQD4D
+o/lvN3IQq3D5jXRez+915EfJOLeNft3SL1psjEpHn+o8L1p0gpRASHQe4ogqYkIHb6D8orr5xupn
+7QqcW03w4/5XDIL8woUhklDeMcUuU6NBaxRsHaVn5q06NMxLdv3Zh9c4dp7JJb2AjcLrVwAHbVhM
+oOE2SAlISOAFqwK0CgUCgUCgUCgUCgUCgUCgUCgtuqKWlkcgT81YETz/AJhYjEBUKKRkMk0AhTDS
+hsbVb/ar12+oXNVPuHvGrj/Gyx4Pte3f17Vc8y2WzOef8TKPlbQO5uKjuso9SeZ9Kta4bn+87eRO
+ZnFfJ1nF4GnjxmvW3mj/AFB1A1gX8eh6OtcaWtSJMpI7kZsC3iuG1tu9SRUbh8SeRF8T1jtHnPk9
+7uR6cTj7/ggzqs07lcfDkyBPybL77L8CYU95ZQSoN6D/AA8qP7p+ioca6KI1Vpa0R6aTFZi0ff0z
+8az384V2bTaImc2jP2/HwZUPo6dG+Bn5FbmPxKJBcyLDjjaVtpilRhPrcvbcE/Zr2m6hbjWm3uFb
+5pSIvs9OKz1xOf5xH6xlmNUxi1ulc5x938XnMea8VmIpjpFEdqHHcKBNkoc8Jagd60ssoSVbe93l
+qsBevXF9gm1vVyMzaY7R/wDr/Zp2+5RiZ149PnP7Oa9Rfc2cazWUkNyoObx7aHZAU98VHeU6tKEJ
+QpffSFbrp4i1dHxp2aPRriYtS3Tti3SPyVm6tN0XvMTW1e/l18mZ5b9GSck4w1nAuJAIL0BK0qQ6
+4FaqCFBSClB463vyqN7v7hGqszq628fh9/xb/bODN5iLx8s9vi6w1Bw3Tza2cawlgPWU4saqVtG1
+IJ7EjQDhXJ33beR1vPZ09NWvT0iFMU29kpCktsreW4raiQQXPD7UoA90n6x1rvPatk20Vz4dPycR
+7lSK7rY8eqe9I4Nclx1WQ0DJAQyBwA0AUrt0qxQU6ibYq2yykIDagQkaDSglIYUp99QeWgFQG1Nr
+aJGuoNBoeuersT0d0+/mstMdDTY2sR2whTz7pHdaaTbVSvkHE15taKx1Zikz2fDnmH5w9a9U9Sqy
+WXHhMNkpgY1ST4bDRPBJ0uo/SXzrRfVTbHdvpstqns2vQnmROgy0y8S+qJNb1ejE3bcSOIUngtPz
+iuf9x9ppasxePVWVnq312xjxfSEbq/prrroaR8SgAPJLE+Kojcy6BcKSf2kmvnd+Bu4PJr6fvifP
+7eLxf5ZfN+GVmG83kcBDJcVv2KUPdBQopCz6019e9unNc+Ewh8q+Zd88qfLBnHx0qLYW+4StxZFi
+pR1Uomp1Yx0hDy7lAgtQ44abHD3lWtc1kZNAoFAoFAoFAoFAoFAoFAoFAoFBg5lTycVKLGj/AIS/
+C/T2nb89eL/xnD1THqjL49g5KVCkJkMO7XSbm/BROtldt643/wANuRWemXW35ddM+nOIdPwOWjZW
+EH2u64nR9rmhX5DyrkuXx7ar+meyxps9UZhnSIjEmM5GeQHGXkKbdQRcKQsWIrRr2zS0TE4mJLRn
+MSh8/qbpfppMaMlt3Mz8ekR1yGWg+7Hb4favJGlgPdvc1f8AH9u5HK9Uz/8AOl+uO0T+H7oO3lU1
+xEd5hyjzCm5vPRZOZGcjZXDxClSoUcqY8AOK2p3x3LKKidN1zXV+1atXH9Ov0TS8+PfOPjCl507N
+1fXFs1jw7Y/NoOg09Q5ST8FimXQpClKE1sJ2MoeSEOpWV90BQA4Hd2VL9zvq109WyYx5ebX7bXbe
+fTSPHu610/0RhMA06qQRPkO+DfxUgtoEcbWtoPEjjc865Hme67d8x6flrGf693Ucb2+mmJz82f2Y
+/VuUO6LLQra7HcFlc7K/7qcDT3rPaWOZt7THgwM31IHobDwNlqulYHIi16kcbhRF5ho38rNM+Lon
+kxLdX08t1Q2qelOuMOW1KUhKTb0XSa632/XNNePi5jn7PXs/B1mM6080HEW73vW5KHEaVNQmfAjB
+x1K3P4KTc8yoj6KRzoLnUvWmH6WxEvL5lXgNpXtYYuC484UDa2gc1G3s51r2bIpGZb+NxrbrxSvj
+4z2h8qdcdY5brLNHKZNZDaLphQ0H7Jhsm9kjmo/SVz9Vc7yOVbZPwfVuB/inDjTiLeq3jMTH+iK5
+HHxJcYtSWw42dAT7yT2g1507rUnNXPe8exW0R1j1U/7Od5CHIw2RHhrPdO5h0cx6fx10OrZG2nVx
+e3XbVfo6B0L1LkzMdjQdyvj2QFtpvbck6E+rWqfle2V24ie9Zbtu7Ncu+eWHlmli0t9vxJclXiOr
+I1Uo68ewfNV1q1RSkVhCmcu74zGswY4bQkbrDeoc7firawzKBQKBQKBQKBQKBQKBQKBQKBQKCi1p
+QgrWQlKRdSjoABQaiZkmZTCm4zC5KFAkPDuNi30gs9nooPk/qjCSMX1DOgOr2ojOKHgggJWF6oOu
+vuqqs9vr6JvqmcYlY86YvFdnhMGAyzuFyLbrat7FktvMnRRQBYg6nUcqge++2Ru1zaI7fbKT7Vzp
+rPovPfs0fXnm5mp6noMDdiMcklCyD/iXANO8se4D2J+WtftP+PadNY2X/wDpf+n5PPN9zva00j5f
+1n/RFMNmWpUBqFEaVIlpDrbLCXvBUiQ4sLbkpF0lzhtUAb6VacrXNbZmcV8/DHl8GribPVXHe8/H
+t8fimmB8s/Gh5E5+8drIymn1xmVBKloZB0UR7gW4oqsNbdlc9y/eYi9fo9fTWYz5TP6rvi+0z6bR
+tnEWmO3wS9D2NxMJMLGsNxYrQshpsAD1ntJ5k1S3+put6rzmVtX0aq+msYhH8pnwkHvfPU3TxJQ9
+vJx0RHJZKRO3R2SCpWoubDSrrh8TMqjk8rEMrpvpmZkZTYmNKdjJN1NIJAJ/OPZ6quNPDis5sq93
+Km0Yd2wmPlwYDaY7AbCLIiRkC3eI0SAOAqbWMRjwQ7TMzlLuh+nJ0ZZRPfAEglSmU697jcn0+iss
+Jh1HnMT0n01OzctJ+DxzJccS3YrVbRKU3tqpRArza2IyzWJmcPjbrPzIyPWmfXk8sotNg7YMMG7L
+DfJKfzjpuVbU+iqXk2vs6+C549K0jEsEuBIuDccfQarcLrh8/Zxreqk4j+k/h+6ipDSmiSdOBHZW
+YrMS+g6ebp5vGmZ7T0mPKUOy0OTlpbOPiNl2UpyzYHIHiSeQq94VZh8g9z1/TvNM5msvoryc8oms
+XEaW4nxZDgHiO21Uewej0VYY6qrMvozE4tqAwlAF3LAKV6OwUYZ9AoFAoFAoFAoFAoFAoFAoFAoP
+Kid6RY21uq+goBIuTu93iL0FAi7exfeBuDfmDQaWYyqE2UYtalOknZDA8RvXj+gNe2g41539KTGm
+4nUJYDSnEhialBuEnXYdw58qr+TE69kbP7fH9k7j42a51/3d4/dyNLN2i7v2q2691SlXB15cBap8
+xFo6oWZiWjyvQE3qfMx1Qn247a0XnOOfR221Ske8og8PRxqj2c6vDi1bRM4/j9y618KeXMWjpn+S
+fdN9IdM9JM3gteNOIs7Pesp0/o8kD0CuX5vuO7lT83SvlDouJwdXGj5etvGXrJZwC/erVp4zZu5C
+JZTqA3NlVb6OKrN3Jme7RtjIZN7awklJ+nYn5Bzq54/CyqN/Lx2dP6F6BihtBkQg+65YuLdG4nnb
+joPQKtteqKwrNmybS7Z0v0FDDSCITbSEjRe3aLnjoLeytjWmTeExzLrDQaBASslR4ngPx0GWjFQE
+KC0tAKSbpNzpb20Gl8xem1dSdEZjCI0dmx1JZPY4nvtn9ZIrXsrM1w9a7Ytl8QROmMi63PemWgR8
+ZvTLekApSHUaeCBzVfTSq+umeuVjbdjHxYUWctCA2o3R9H0VF2a8pNNnRYMuS/KTFioLrzx2obTq
+Sa26uP6kvh+5TotPxdy8pPKj4dImS0+JLeILjhHDsSmrbXT0w5/k7527Js+ksJhWcfGQkJAWBYC3
+uj8vbXtobSgUCgUCgUCgUCgUCgUCgUCgUCgUFNoN7ga8aDy634jZRuKQdLp0NBjLeETalxH2SiAF
+tpOh/OSPw0FrO4WFmsTIxs1O+PKQUK7RfgoekHUV4vT1Vms+L1S01tFo7w+S+q+l8l09nnsRKAQ4
+0SUyCrYhxg+4tP6XA+0VD4mzE/Sv3j9Evk0i1fqU7T+rAhOmFMBQkJKD9H3Sk6aWtpaoPvmmJpXy
+7Jvsu2YvaI8sq5TPgXsqqDTxV5u5M9/FE52Xefc2N3Ws8Ep/HVto4nwVW/k/Fs+n+i8hlXkreSSk
+kd22g/LV1p4sV7qndyrWdo6L8sEIKPsSVaaW1qZEYRM5dhwXSEOCgKdSFLHBHIeugkQSEgACwGgA
+oLS7fFN9oQv8IoL1BH+ruq42Dhq2kOTnBZhgDcbqO1J2jU3OiRzNBx7zJ8leo+q+lTklZARc2lS5
+C8U6UpjrC+CVrSP45+sdL6emteyuezbrvju+c53TXUeKeTDyeMkxJI7mx1tQuRp3Ve6r1g1XW1zl
+OrsjDrPlB5TuIcROmN+JLd1Vpfam99o4+2rGlIiFfe8zL6cwOCZgMJJRZY91PHb6/TWx4bigUCgU
+CgUCgUCgUCgUCgUCgUCgUCgUFp/x+74RFr98c7ejlQVZKFIC0XsrW54/PQezyowhnmX5fROrsTtb
+2tZeKFKgST2ni0v8xfzcaicrj/VjMdLR2lK43I+nOJ/jPeP3fMWSx8/Gz3oeQaXHlMHY6ysWII5j
+0ekVQczk7LR6Lx2XvE42uvzUnuh7ELI5R/a0FBtR0VbU68qtOPw5x1hXbuXicRPV0jo7ywUvaXG7
+k2JuL/LerSmuKx0VlrzaeruPSnl4ywhC1NhtscyPwV6w8p/CgRYjexhAT2q5mgyaBQWHbokIdI+z
+CVJUrsuQaDTdWdWxMFCUoKS5McTeO1x4naFEDU3UbADVR0FBqOl+nZXxCuouoUgZFffjsOG/wySN
+VLPDxVDs90d0UG8aZcysgOvAphMn7JrhuP1j6fwUG1ehRH0JQ+w26hHuJWlKgOWlxpQe22GGhZpt
+LY7EgD8FB7oFAoFAoFAoFAoFAoFAoFAoFAoFAoFAoPDy9jS18NqSb+ygMp2tITxskC/soPdAoIx1
+f5f4DqhCfj2E+MnTxwO+U9lxY/PXi2utnquy1UexvkX0pjnAqM6+BzSrar5yL17jyeZnPVMcX0ti
+celIbb3qTwUv8nCg24AAsNAOVAoFB5cUpKCpKSsjgkWF/loI/wBTdTRcPji/JWA+4LNRteJ0Bct3
+rX7OPAUGn6W6blqlf/Ys/wByRbfFhrtZgW/iu8vEtokfQGnG9BIGw5lXrgKRj21aX0KyOf8A24eu
+g3KEJQkISAlKRYAUFaBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKCzL1ZKL2KylAP6RA/BQXqBQKB
+QKBQKBQKDU9RdRQ8LBckPKT4gQpTaFKCRZIuVKPJI7aDn+MxGV6jV9+zW3CpwpchJcV4baFI1TIc
+B4kfQRwSPTQTKHHm5JhEaQ8pUdr+I8BtU4eR/J8poN9EYbYjNtNiyGxtTQey6nxPD+la5HooKKLm
+wke8DoPxUFygUCgUCgUCgUCgUCgUCgUCgUCgUCgUCgUFl+5dZTpbcVH+qD+OgvUCgUCgUCgUCg1f
+UGfiYWEuQ+ob9pLaCdoO0XKlH6KU8z+OgieB6ekZ91Wc6iSpUd0hcSC73QrbcofcQToAD9mg8PeO
+poM0xZbkn4fEydmIbVukNud7dzs3zt2DnQS6KhtDCEoQW029w8R66C7QUKUm3o1FB5DQG6ylXUbk
+31HqoPYoFAoFAoFAoFAoFAoFAoFAoFAoFAoFAoFBZOswaaIb4+lR/wDLQXqBQKBQKBQKDX5rNQ8V
+DVIkKG4BRbbuAVbRc6ngkczyoIhgcNN6injPZhKjAuHIUJ0W8Ug3Q6tB91pH+zQePvKoN1mU5LNJ
+MHGPiPHJ/wATJIJKk8wPR+H1UG2xMOJBZENlBC2gCpStVKv9Iq53oM+gUCgUCgUCgUCgUCgUCgUC
+gUCgUCgUCgUCgUCgGgssgF59dvpBP6o/poL1AoFAoFAoBoI3k+jmsln28jLlrdgoSgnGKSChTjZ7
+hK+OzmUcCrX0UGfkfjZD4gspU20oAvP9o+qn0dtBsI0ZuO0G2xYDj2k9tB4T/wA+5/wk/wBpVBkU
+CgUCgUCgUCgUCgUCgUCgUCgUCgUCgUCgUCgUCgsxNWd+vfUpWvpJoL1AoFAoFAoFAoFqBQWUj/GL
+P5iR85oL1AoFAoFAoFAoFAoFAoFAoFAoFAoFAoFAoFAoLAZlAf8AMfsCgtyGZ5ZUGngVkad0D570
+FIbE9qOlta0EgcCCSPaKC9/jO1v5FUFR8VzCD7SPxUFbyPqIP9Y/u0FN8jm2n9f+igeI9/JJ9Sh/
+RQULzo/2Kj6in8tBUPr5srHyH8dA+I/3bn6tBT4lP1Fj+qaD146OxQ/qn8lBhN5Fv45aCCEkBINj
+e6b8R7aDM+KY+v8ALcUFfiGP5iflFA+Ij/zUfrCg9B1o8Fp+UUFQpJ4EUFbjtoFAoFAoFAoFAoFA
+oFAoFAoFAoFAoFAoFAoFAoB4UFpHi+Kq/u8uFvR6aC4b6W7dfVQV1oFAoBoLSfh/HVt2+PYbvrWo
+LtB57nooKHwee35qDwfhLm/h39NqC0v7rv3vCv7KDwv7q2/Qt+be/wA1BeifDbFeBfbfvXvxt6aD
+IoFAoFAoFAoFAoFAoFAoFAoFAoP/2Q==</current>
+        </image>
+        <number id="angle">
+            <about>
+                <label>Rotate</label>
+                <description>Rotate image by this amount in degrees.</description>
+            </about>
+            <units>deg</units>
+            <min>0deg</min>
+            <max>360deg</max>
+            <default>0deg</default>
+            <current>45deg</current>
+        </number>
+    </input>
+    <output>
+        <image id="outi">
+            <about>
+                <label>Rotated Image</label>
+            </about>
+            <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CAGpAakDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1miiigAooooAKKKKACiiigAooooAKKKKA
+CiiigAooooAKKKKACiiigAooooAKKKKACp7a2MxLMdsS/eb+g96La2MxLMdsS/eb+gqxJIHA
+RBtjX7qigBWnJwqDbEBtCeoqtNDt+eMEoeTx932qUCngcEEAg9Qe9AFCip57fywHU5Q8c9Qf
+SoKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKkjRceZK4SIHGSeWP
+oPepLa2MxLMdsS/eb+g96r6zpkWrQpESY1i/1e042n1oAfHrFvcN5OPs4TgRvx+Oaiu9WtLW
+Eskscr9AquDz715V4mbVb7X08MJdt5cQDSSdG24zyazLfQgkU97p84s9PtTte9lYkysOoUd6
+5auLp0tZuy2+ZsqLsewWevwzELcL5ZPRh0raQq4DIwYHoRXz/YfESyhuvstxKzgcecE4P1Fe
+h6Tr4KLLZ3Csjc4ByDXRGSkroyaa3PQRxkdiMEeoqnc2/k4ZTlDwM9R9arWOvQT4SYeU54z2
+NbIwQR1UjB9xVCMeippYVUF4X8yMEgkD7p96hoAKKKKACiiigAooooAKKKKACiiigAooooAK
+KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
+gAooooAKsW1sZyWY7Yl+839BRbWxnJZjtiX7zf0FW3cEBEG2NegoASRwwCINsa9AKgkk2ny0
+5kPb09zTbiV1HlQANOegPQe5plvL9nGLlCkhPMh6N+NAHn/izw5qFl4gudbs1MyXNsY5do5V
+sYyB6V594/1UxeE9D020LIhizIORlyec+9fRfmws4i3qzMM7RzxXF+N/h5pfiOyBRGhuVYsj
+xDofcVx1sJGpUhP+V3t8jaNVpWZ4Fa6dBaWq/IGcjknuas2N1d6bP5trcNGM8p/CfwrW13wx
+rHh/YL23ZoeizIMqfr6VkxmLDCYMQejL1Fcl6kZ+87M9vE1KUoRp0l7qS+b63PSvCviB9Xmj
+tmXEpYAjt9a9d+acCCIkRqArv6+wrw/wFpIt9R+2zX/lRSJ+4kK4zXrsWtSWSJbzQgk/ckj5
+XHqa9Sm5OK5tzwaijzPl2NovbW+2F2RQeiN3qjdW3kEMhLRt0b09qu20NvNCW3JOX5ZuuaBp
+yIcwsUHUoeVP4GrIMqirN3aG3IYco3Tvg+9VqACiiigAooooAKKKKACiiigAooooAKKKKACi
+iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqxbW
+pnYsx2xL95v6Co0RAjTTP5cCfeb+g96sDUrOZAIp4liUcAtjA96ALDsCAiDbGvQCoJJCG8uM
+ZkP6e5rm7j4g+Ho55baC/WW4j4IVCVB+uMVSsvFfmu7wXcEuTz0NK6HZnaxQiNfVj1Y96l2g
+jBAI9DXOw+Jm/wCWsCn3U1fh8Q2T/f3xn3FMRJLZyRmeRFwCNqJH1pkMzW0yxOSsUS/Mqjcc
++5rQgvrW4I8qdGJ7Z5qwEUZIUZPWgCvLBaalbNHIsc0TDDA81xy/DLw3Nqn2hLZvLVssA3yk
++gFdhdaZHcqdjtCx6tGcZqJpriyUW4jEvHylByPciplCMt0UpNbMrX+j2E1qtlHbRg7dqIoA
+Cj19qwJNI1TQWL2xF1AfvxPz+VdlZtCVJWTdKxyxbg/lVsorrtYAiqJOI0/UoJ5T9jla0uh9
+63k4BrorTWMzLb3cRimPAI6NUGreF7TUQHC7JRyrrwQan0ywaxtIxdTeYYxgNJjP1oA1iquh
+VhkEYIrGvLNrdyyjMZPGM/L9asxahJlhLCxQH/WIMinteLduIbcow4LlhkAemPWgDIoq1d2b
+Wx3AlozwCex9Kq0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
+RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVPbWxnbcciIH5mpba2M5LMdsS/eb+gq8xBARB
+tRegFAGLq2l3N/KrQ3UsMcYwkaHgD3HeuC8eHUtL0F1lkRxM4QuI9rAfWvU2Yg7FA3H9Ky/E
+Ph6DX9Cn06UkGTBEncMO9RUTlFpF02lJNnlNtosI0/RNItsLJqR8y4lXrt6kZrlPiHqyW2qj
+RNFiW2hhbywUGCxHUk16KvhLxNotxptwixXv2AkAqcF4z2+teYeNtG1G18WnUWsbgW7uXyUJ
+259cV5MqNT64nJe6o6drnTzxcSKxvdX02BTHqdwW/us24H862bPx5rFuQLkQzp/u4NYL3CMi
+kEHIqKJoFJ89HYHoUOCKunWqt6s9XMKFCE1Tpx0SWvfzPaPBmtp4gvbcxpscNlh/dxXquPUV
+4Z8PtPexspdRit7qaCfhDkKy49PWu5XxC0PyR3c8UmeVuUyB+NenBtxTZ4E0lJ2O0mmKt5UQ
+3Sn8l9zT7e3EIJJ3O33mPU1z9hq8yJlTb3RPLPHIAxP0rRTXYRxPDLCfVl4qyTQmtIZ+WXDf
+3hwah23Vvyrecg/hbhvzp8GoWtyQIplZj2zzVmgCoJbqYDy4vKB6mTqPwpws0J3Skyv6t0/K
+rBYAckAe9Yeua01kFjtgXcg5K87aANzgDAHFVbm2gZGlZdrKM7l4Ncxput3jXKz3rPsIwUHA
++taOo68gR4UiLBgMMD1oA0rGO5eJTPKssbjJVl59qp3dm9s2RzGTgH+laGnzyT26u8JiGPlB
+POKtsodCrDIIwRQBzVFWr20Ns+4YMbE7cdvY1VoAKKKKACiiigAooooAKKKKACiiigAooooA
+KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKsWtqZ2LMdsS/eb+gotbUzsW
+Y7Yl+839BV8kYCINqL0FAAxGAiDai9AKid+fLTlyPypWY7ticv3PpUkcSouByTyT3NAFKK3n
+sQSpM8ZOWz94VYjvYZGRULFn7Y6fWrQFUbq1nZ5ZFOdw2oicY9cmgCxNcCHbhGcHuvNMGm2s
+rtLJDuMg5V+R+VVrWcW8wilmVI4wFCDnn3NbA55HOaAOa1LwF4d1UH7RpsIY/wASLg/pXPR/
+Bnw+t2srSXJhX/ljv4P49a9IAqCWY7vJhwZD1PZfc1Dpxe6LVSS2ZV+zW1tBFY2lvGoRdqqB
+gItH9iWpjKsuS3LE85NXoYVhUgcseWY9SalqyDm7rwhYzZZIwrHnKnb/ACqi/h7UrUYtNQnU
+f3X+cV2VJigDN0+x8sJNPHH5wGNyrjmue8d+PbbwjaCKNRPqEo/dxZ4X3auwnlWCCSVvuopY
+/hXyh4i1ibXfEF5qEzEmSQhQf4VzwKADW/F/iHXJmlu9TuACciOJyij8BWbYeJda0e4EsF7M
+6Z+eORyyt+dMK96ryRigD1/wt4yttZhX5tk4+/Ex5B/wrr42BmiuImG6PseQfrXzZD51rcJc
+W0xilQ5DCvVPCXjI3hFvdEJcAdez/SgD2yx1YzwhpYiuDglOQK00dZFDIwKnuK5rw273dtK0
+YxGxwX/wrpY41iQIgAUdhQAOiyIUcAqeoNY17Zm3fcvMZPB9PatukZVdSrKGB7EZoA5qirV5
+ZtbNuXJiOACTzmqtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
+UUUAFFFFABRRRQAVYtbUzsWY7Yl+839BSW1sZyWbKxr95v6D3rQLqoRAAq9FUUAKSMBEG1F6
+ConZt3lx/fPU/wB2lZyX8qPl+57LUscSxrgc56k96AEiiEa4HPqT1JqUClApwFACAU4ClApw
+FAEX2eLay+WuGOTx1qubaa1Ja2O9O8TH+VX6ryzMW8qHlz1PZRQBB9vE58mDib+IN/B9atQw
+rCmByTyWPUmoGsYvL6lXHJkBwc+tc/P4pmsrl4niWWFTgTDv9RQB1lFc0nijcoYQBge4aph4
+lTvbt+dAG/RTI38yNX6bhnFPoAgvLcXNpNAekiMv5jFfI2rafcaLrNzp92jJJFIRyPvDPBr7
+ArjfHngGz8X2BKhYb+PmOYD9D7UAfNO7C5quSScmr2r6RfaFqUmnajEY54z+DD1FQQ2c1xBL
+LEA/l8lR1x7CgCKJFkmRHcIrHBY9qvw6ff2+t2sEEEkrSyL5TRDO4H0p1jbLr8X2RYZIriEf
+LMqfLj0avUdB8KHTNCt73Sr2W6nQ7pA/3o29h2FAHqHhow2ulw2IXy5YlAZW6k963K4DSNbj
+1hhDcMLfUU6N0D//AF66i01TafIuwVlHGccGgDUeRUGWYAe9OBDDIORVTzEmlyjZIGNpFTxR
+BMnueozwKAHuiyIUcAqeoNY17Zm3csgJiPTvt+tbdNdFkQo4BU9QaAOboq1eWb28hZVJiPII
+7exqrQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVi2tjO
+SzHbGvU/0FFtbGdtzHbGOrf0FaPGAqDai8AelAENxOsEHyoMAYSMdTUGRc7CsZWbGTk/cqaU
+B5VRFDSr/Ef4KsRQrGuBn1JPUn1oASGJYlwOSeST1P1qUClApwFAABTgKUCnYoAQCloqvJIz
+uYoTz/E393/69ABNKzN5UP3u7dlryjx98Srnw/q66XoTxF4hm5kdd2W9K7Lxz4mh8IeG5Zo2
+X7XNmOBT1Zj3/CvmWeaS5uJJ5XLySMWZj1JNAHoB+MviSSFo5IrNt2QSEIOPzqonxNvwp82x
+t2GOcEiuHqGd9vyjv1oA9N0D4hWdzetDcwfZjJwuDlCa7u2u0uZFVcDPevn20s7SeAPLqUVt
+Jn7rqeB65r07wvdo8VuZpzeQou1mgzyfWgD3SCaEQoglQ7VA4apRIp6MD9DXAW+raBkSPHdR
+N904ORn/ABq6mp6C+Nl9PF9VNAHaAijNcml1pjD93rTL/vE1YR0OPK1uI59XoAj8Z+CdP8X2
+BjnAjuoxmGcDlT7+1eR6N8JPEQ8Q+XJItvaRHJulbIcegFewf8TC4bbDqUJiB5O4Zb2q2n9r
+IAEaJh25FAHCNokvg+5nhESy6fdH5nKDr6k1Ay3mg3X2+x3G1c4LbsoQe1d/PFf3sRtrq2ie
+J+G3CuV1XS7vw85RAZdIkkBdcZ20AV7m2tNag+22LLBeLy8JOMn1FSaX4geRlsNUTDqdqysc
+Mv1rM1KwSyu4b3RpmnjJ37gudh9KtEDxTdBf3VrdKpJA48zFAHc2l5JaSCO6AMbfdlHf8a2U
+dXUMpBB715rput3GlSNperRs8AOFY/eT6e1dbbXD2CrIj+faScqy0Ab9FRwzxzxh42yDUlAC
+MqupVlDA9iM1iXlm1s25cmI4AJPOa3KRlDqVYZBGCKAOaoq3eWTW7bly0Z79cfWqlABRRRQA
+UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVi2tjO245WNfvN/QUlvatPk52oOrY
+7+grTAG0Ko2ovAAoATAwFVQqLwAKjd2LeVF9/ueyiiSRmfyocb+7dlqaKFYl2r+JPU0AEUKx
+JtX8SepqUCgCngUAIBTwKAKWgAooqvJI0rmKE4x99/T2+tABJK0jmGI8/wATf3f/AK9SxxrE
+m1R/9eiONYkCqMAU40AfNXxP1q81TxldW9wGjitG8qKMnoPX8a4zivaPiz4Eu9SvBrWkxiSb
+YFnhzy+OhFeMz2OpWrFbjT7qMjruiNADGYKpJqCGKWaXzVt2mVSCwAJH40kkwClZFZfZhii3
+vrm1B+zXDx567T1oAvve6bvxc6BIBx912X8a9Y8CWl3YaBHf6RaCGC5ztjnkDNwfSuE8G/8A
+CSeJ9bisIJy8GQ08skYIVR+HWvcY/BMMP+rvpkxwpAAx+VAGPqNxrksKyz6ayKpxlIgc/UZq
+sn2mNd9zpLucfxREAD8q6VvDepxgiDWJPo+TThYeJYfu6hHKAf4u36UAYDanoQGLzRzE5PJR
+iopvmeHJ512rdQRY5IbJP61tTDxGV2z2NtcrnJyoP9aiku71MLceHInCjkrH/wDWNAFEWvhx
+1JTUrqLqfmX9OlWLXT7EzrcWniM/d27d2BSxS6XdXcdrceHmiMhxuUYC/Xpiti18KaI7K8Vm
+YwvIAJoA1dJsri1R2uLs3G/G30Aq9PBHcwtFKgZGGCDT0QIioowAMAU6gDg77Srvw1eNdWKm
+XT35lhPIArKvNEhvYW1jSZndM5aMcNGa9PeNZEKMAVIwQa4rVNHu9Bum1HSFLQHmWAc5H0oA
+wbWT+2UFpdNtuV4Rn4L+2fWrPh641Ox1n+ypY2Nu330l4C+4rTbw5Br4ttRgD2rOVkkiYYxg
+9q6qS1hWINNEJHHC8c/nQAtvFDYRk5Ybz9081dFZiQSk5fexHf09hWkudoz6UAOooooAa6LI
+hRwCp6g1jXlm1u5ZQTGec4+7z0rbprosiFHAKnqDQBzdFWryza2O4EtGehPr6VVoAKKKKACi
+iigAooooAKKKKACiiigAooooAKKKKACrFtbGdtzZWMdW/oKLa2M7bjkRr1b+grSwAoVRtQdA
+KAAAYCqNqL0FRPIzv5UX3v4m7L/9eob25kiwsK5AP7xv7g9auQIixjZyDzn196ACKFYk2r9S
+T3NSgUoFQXDvlYkRvn/jXoKALCkMMggj2p4FRW8PlIc9TyfTNTUAFFFVpHaZzFEcKPvv6ewo
+AV5GmcxRHAH3n9PYe9SpGsahVGAKEVIlCKMAUx2Mp2RnA/ib/CgBr3aRy7SDtzguBwDVgEEZ
+HSmCJBHs2jbjGKrHzLNsgF4O47rQBZeJJPvKDVSbTLNlJeNdo5OelXBIhj3hhtxnNVgGvGy2
+RAOg/vUAYdx4U0zVHy9pEIAc8xjLn/CqU3wx8NTtl9NgHOcquK7MADpwPSloAzNH0HTdCtfs
+2nWscEffav3vrWltGOgpaKAGbF9KPLWn0UAR+UM9aTyjxyM1LRQBCYj3APNSKoUYAxTqYzhV
+Zj0Xk0APoqOCYTxLIvQ8ipKACkIBBB5BpaKAGpGqfdGKdiiigAxRRRQAUUUUAFFFFACModSr
+DIIwRWJeWZtmBUkxtwCev41uUjKHUqwyCMEUAc1RVu8s2t3LKCYzznH3eelVKACiiigAoooo
+AKKKKACiiigAooooAKsW1sZ2yx2xjq39BVaSSK2tpLu5Zkt4/vMqkk+w96s2t+j3CKAotpgG
+gZenTp9aANIAYCqNqDgAVG7s7eVF9/u3ZRQ8jM/kw8t/E3ZamhiWJNq/Un1NABFCkcewDg9S
+e/1qo4msX2RunlO3y7z931rRAqC6tvNXeiqZQMKW6D1oAbI7XMA8jDI/BboRU9tB5EKx7t2O
+9UbKRBdlDMxwNirjC574rUoAKKKrO7XDGOMkIOGcfyFACSy+ZuVW2xr9+TPArmdS+I/hXRCY
+JNQV3TqkKl/1FcT8YfFtzYzw+HdPkaFGj8ydlOCQTwK8aYccUAe7t8SdN166+z22oiBTxtbK
+E+w967Hw1eM5eAyb1xlTnNfJNwCPmGQR0PpXunwh1yS+02AzuWlifymJPOO1AHstIelApaAK
+n2JPMyGYRk5KdiatAADA6UtBOKACio0lV2IB5HY1JQAUUUUAFFFFABRRQDmgBrDIrj/Dt1I8
+Orxu7O4uGGSc4GK7Fs44rg9EuI7WXWd2S7XBAQdScelAHY6WSdPhz1xVysbR4ZpdNillkZJc
+cAHgD0rQWco2ycbT2bsaALNFJuAGc8UisGGV5BoAdRRRQAUUUUAFFFFABRRRQAUUUUAIyq6l
+WUMD2IzWJeWZtXBBLIehx09q3KRlV1KsoYHsRmgDmqKtXlmbZgVJMbcAnr+NVaACiiigAooo
+oAKKKKACrFtbGc7mO2JfvN/QUltbGYlmO2Nep9fYe9aHGAqgKi9AKAGTwR3NuYGQeWRgLXHW
+26wvn0OV9qO262lJ5Q+ldiZC7eXCQW/ib+7Xn/xPvzYx6fp2nxk6jcPujcdVx3zUykoq7KjF
+ydkdvZX0MFixuCEkiOJQepPrVvT9St9QVjCTleoPWvnW/i1HTrnzZvEFzLqI+Zoo8yAexFd5
+4N8VG4ZJM4uE4lQjGfXiphUUnbqOcOU9cAp1RW06XMCSxkFWGRUtaEEE9ussZUfKeqsOoNJb
+zFsxycSr19/erFU7+0NygMblJF6Edx6UAPZzcsUjJEY+8/r7Cp1VY0CqMKKhtZEeEBRt28Ff
+Sgk3DbV4jHU+tAHg3xstQniizvEU7ZoNhbHBKmvNiRt5r3H45acJNA0+8RR/o8+wn2Yf/Wrw
+on1oAiljLg4ruPhHqBtNUvLN225AkXJx0rlre0Ml0kM3yl0LL78cV1Hwy0W+1TxbbSpayfZo
+yfOkIwuPTPegD6XgkEkKOCDuUHipaq7DbfNEpMfdB2+lOhuDM7jy2VV7t3oAsVBMxJCFGIbj
+K9qiuWd2WNeMnpnGasQq6xKJDlh1oAbHDhtzkFh0PtU1FFABRRRQAUUVC84RypVuPagBZGLL
+hCCfTNMiB3ZXKp3U9c0pii3+cRzioJpYriAMkmCp3DtmgC1LKI16EknAHqa4vw9Aj6rrEzrm
+RZsDuBwa6swmaJWjnbacMM81zHhxSNZ1sZP+uHX8aAOl0o7rBPqauSBGjIcAr3zVPSP+PEDG
+OTV4jIxQBQCsSQpYxH7qHv8AX2q5Ccp3p+B6UtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAC
+ModSrDIIwRWJd2T2x3DLRnocdPrW5SMqupVlDA9iM0Ac1RVq8s2tjuBLRnoT6+lVaACiiigA
+qe3tzMSzErGOp9fYUW9v5pLOdsS9W/oPere7cAqjag4CjtQA8kEBVAVF+6o7UxnLt5Mf3v4m
+/uinbSVIBwT3qSGJY1Cr+JPc0AVrGMWbm0OdpO9GPeuV+ImkySpBrFqm65s43Vfow/pXYXyo
+Lbe24Mp+Qr1zVdYlu7J7UhkHQM55Y9+KmSuhp2dzwnxL4sg8IWcek6REj38ih7i4K7mZzyQC
+frXI6N4t1mx1lLy8QvC7fvOmcHvW/wCPPCk2i+NZbuUFrW4XdE+OFI6iubuCZRtUALXj0aUM
+I7WvLdvqezSwsKtD21SVk9Ekrt2PovwprsTpHiTdbT4Kt6Gu2ByK+bPAWty2Mv8AZtzIWibm
+I56H0r6H0pnfTIGcksV6mvXhNTV0eRUg4Ssy7RRmq5JuG2rxGOp9asgr3Cu7mWEHYPv4/jFW
+kli8pWVgFqUKAMAYFQi0hWQv5YyTmgDnfGekr4o8M3WmwqzSNho2xgBh0r55uvC2q6abu1vb
+CRJto8pyvyk57Gvq7Ax0rA8YWYu/DV2uMsg3g/Q0AeN+G/AhvLlG1YtFfWtr5kcafxdxmvUv
+Cska6PpjxoqBCYXVRj+VYtjcEeINMumz5FxD5O8j73FX9AZrc6tZZ+a3uPMXtxmgDu23bDt+
+92rPmjYRok0uCxGQnA96vROJIlcfxAGlZFJ3FQWHTNAEMMqyyECMgIOGYVZqlGtxEN7hSMkk
+L1q4rK6hlOQaAFopKWgAooooAKRlDDkZpaikkIOxBlz+lAEYlk8+RMKQACAOtMgG+SSJ4SF6
+jcP0qeOER5JOXPVvWpaAGLGsabUAUDoBXH+H1ZfEGtjIx5ikD867JjgVx+hf8jNrQ3cBl4Pb
+rQB0Wlf8emPRjV+sfT7uG2t2DvzvPArThuI51zG2QOtAEtFFFABRRRQAUUUUAFFFFABRRRQA
+UUUUAFFFFABRRRQAjKrqVZQwPYjNYl3ZNbHcCGjJwD3/ABrcpGUOpVhkEYIoA5qirV7aG2fc
+MGNiduO3saq0AaMmCEMePJxhMAgf/rpVHFVLe4MJKsC0TfeX+o96vBQQGRtyHo2MUAPUVKop
+iiplFAClNyn17HHSsyNYoL1AyyNsOBIw43GtcDimTQrNEyMODQBzfjXwzF4k0Ka1KgS43Rv6
+N2r5untZLC8e1u1KvE21x34r6vtZC6NDJzJH8p9/esHV/Aeh63d/ab22DSd2Xgn6muavQ9pZ
+rc6KNdwXK9jwXwxoN/qXiaGGGMvBEwmeVeydevrX01aPE9pG0RHlhQB7Vx9zpEPhC5gvdLg2
+WQHlzxL/AHfWta2uFW4QxN/xLrjlW7bvT6VpSpKC0M6lRzeptZNwcDiIdT61OFCgADAFCgKo
+AGAKWtTMKKKKAKCGZ7hxucdyD068UupNG1hPC7rueMrtJ9RV2sXU7E3epRLnapXk/SgDiCCP
+CunzgfPYXeGwOnPetmIrB41DD/V31tn8cVUFiqweIdK52o3nRg802e4zYaBqgzmJhE+eo7UA
+dzpb7rJVPVCVP4VdrOsGxd3EfYkSD8a0BQAtVZv9GJkXJUnlP8KtVE8KyNubOcYHtQA2B2di
+zZ9h6VPTEjCZ296fQAUZpDWc2qxS6k+mwk/aFXcxxwooAkvL1oZFjjQsT1P92pRIkBjXlmkP
+X1qSOFY0x1z1J71muskeroU+aCNMsvdSaANagnFIHDKGBBB702XiNuexoA4nxL8TdK0G6ezi
+Rru6Th1Q4VT7mvMp/iReDULy5W2VEuiCyI+CAO2aZp/gnU9f1C8uXdYIWuHw8mSW+Y9BV6/+
+GIhhJXUiWHrHxXA5YiTutjtUcPFWb1Ol8N+PNI1pVtkZ4bpV5ik7/Q967zQ5VkdyhyuK+Yn0
+298P+JrOQsGXzMB19DxX0Z4OYtaI3qvNdlNtx97c5aiin7p1lFFFWQFFFFABRRRQAUUUUAFF
+FFABRRRQAUUUUAFFFFABRRTJZUhjLuQAP19qAEm8vyW87Hl45zWFtg/56Sf9+x/jT7u6a5lz
+yEH3Qe1V6ACp7a5aBsEkxk/Mv9agooA3V2sAyHcp6EVIorGtbprdwCSYyfmWtqJkkQOhyp6G
+gCQUUUUAVLlTFItyn8PDj1FWQwK7geDzSkAjBGQazo1lF01q5xAPmQ929qAH3UCanC8Dj/Rz
+w3+1/wDWrm9LH9m3cnh68P7lstav6D0/CuyChRgcCsbxFpJ1Ky3wEpdQnfEw65FAFrTbliGt
+Z/8AXRcc/wAQ7GtCsTT/ADr+1tLuZTb3ScSAjGfWtgyKOrD86AH0VGJoy2A65PbNSUAFRTQi
+VcdGHIPpUtRyyiMAAZY9AKAOPm/deN/KcFftdsUYdmI71k2tvJP4X1LT0VmltbglABz1zXV6
+lost1qNjfLIBLA+WHqPStG00u2spppYkw0zbn9zQBDpcUrRW9xLlZPJCsuO9alIAAMCloAKK
+KKACikJwPQetQ+b5x2Qtx/E/pQASyHlUPI+83pXN+FU+0ajql/liry+WhPoOtbOsTrp+i3Mo
+4whA+pqr4Ttjb+H7csPnlzK34nNAG2elYNxqyafKJHjMjXEwiUD8q2riQR28j+imuQnjNz4m
+0y3Jylupmce9AG7qRkSS2jg6ySZZPYdTWjvDRErzxjFUE/f6zuOD5Mf6mrssZ5ZOCRgjsaAP
+D7jxjqz3k9hoVoT5cjKZFTcc5PTtVG6k8fGMzPFdlcZxsH8q7qXW/DvhCJrYEeeWZmjjG5yS
+T1P+NZj/ABY0tSQbK62+vFfGVc2x9So3QpXin1PThBKKtE8pvNXu59Tht9SgMcwkHVdpznuK
++hPBLZtI/TbxXjnifWNJ8QSxT2pHmo4bDrhhzXr/AIHbNnCf9n+lfS4DETr0uaorM4aqSlod
+rRQOaK7jIKKKKACiiigAooooAKKKKACiiigAooooAKKKa7rGhdyAo6k0AEkiRRl3OFHU1h3V
+490wyNqDouaLq6e5kJJIQdF/r9ar0AFFFFABRRRQAVYtbt7Z8DlCfmH+HvVeigDpI5EljDoc
+qehp1YVpdtbP3MZ6r/UVtxyJKu5GDD1FADjVW9X90rA4kVhsPvVk1RvLuO1Sa5mYCG2Qu5Pr
+igCC98TaNps5t73U7WCdRlkeQAj8Kyrvx94ajtJCms2zOV4AbmvnPXtUk1vXbzUZTkzyFh7D
+sPyrOA4xigD20eMtBhVs6shxyeWOa0NP1zTtWXNlfxz/AOyr8/lXz7cPtiwP4qs6TZ6tHJFf
+6ejBlb5XDgZoA+kbAt9vgx13iuyzXlHh/XgYIpL+U282Pmx8201uv4kth93UZ29DsxQB20ku
+zgDLHoKSOPaS7nMh7+lcNHr9hES8mpXTueS2zt+dSHxFp+c/bLs54J2Y/rQB3WRSbh6j864R
+vEenjH7+7YenA/rSf8JDp/BDXbE8jkUAd7uX+8PzpA6njI/OuP0zUtO1GeWIzTw+WoOZCADn
+0resba087zILgylP9rIoA1KKSomYykohwvdqAGyEz5iT7vRmqKGMWB2cmFjwT2NXFUIoVRgU
+jKGUgjIPWgDmfGUzPZ29lGctcyhfwro4IlhgjiUfKihR+Fcrclbjxna25YmK1XzDnse36mur
+aaJBlnUfU0AVtRb9wsf99gK5vRGS68S6pdFvuAQoM9u/9P8APTT1LU4vPGwlhHGz7lHA9KwN
+Kt7ttDN1Gio7u8wmJwSOg/lQB1WmDzHuZ/78mAfYcVelKpGWJwAOpqhpDNBpcK3GFl27m96t
+MrSje4IA+6tAHx14o8QXB8RaisPB+0yAs3JPzVhHU9RPJlfB9q7W806CPXNRkMas5uZCWYZ/
+iNMktw64AXH0rzXiKUJcqie3RyrG14KcU7HI2mpSvew+Z13j5hx3r6s8Btm0hJ7ivmG+s1ju
+o3CBWDg5HHevpj4fyE2cIPoP5V20pRlG8Ty8RSqUp8lTc9CooFFamAUUUUAFFFFABRRRQAUU
+UUAFFFFABRRTXdY0LuQFHUmgBJZUhjLuQAP19qxLy6N1IDjCL90UXV29y3OQg5C56VXoAKKK
+KACiiigAooooAKKKKACrNpdtbP3MZ6r/AFFVqKAN95t0HmwkPj0Nec/FnXP7O8KJYJJi4v2w
+2DzsHJ/wrr7W7e2bHWMn5l/w968a+MEGpp4giu7iMnTWQLaypyvckE9m9qAPO8UuKj81cUGU
+BTj0oAq3DB5wMgAcZPatEaValVH9v28eRn+LiqFobUXGbxZWi5yI+uavKfDDnMqahnHQEUAd
+34Kaw0+0mgkuo9SBOVKZG0/jXUJc6T5ZV9PlMp/i8w8H24qXwT4WutP0CKXTrOHybj98PtSh
+pMH1rov7P17p9hsMjj/Vj/CgDnY9X0sfIdP3MoBJ8xuf0qYarpfX+zT1xjzW6VsyaXrYk877
+BZZQfwxjkU+G11yaMOtlYYPPMa/lQBhtq2m7vl0wdOcyN1pRrGnLyNLUnr/rGrfNhrgAxZWO
+cdfLWqd2+rWqjNrYFtwBAjU9+aAJNKvvD97bBrq0ME+TmPJIxnjmux06C0htQ1mgWN+frTbe
+ysXhSUWsIyM5CipFHn4SMbIF4JH8XsKAJN5nYqnCDq3r9KmVQowBgUKoUAAYA7UtABTXcIpJ
+7DNVr3UbWwQNcTKmemeprD1HxNaPYXCWrs0zIQmVwMmueri6FJ2qSSZrChVmrxi2ReG0+3ap
+qt/IMhn8pcjsOTVy+v7GxYxQxCaYdcnIFc/Z6/a6D4TP2iYRz5Z5nPRcnrn6VRsNSstTjWa0
+u4p43OA6N1NXSr0qq5oSTRM6c4O0lYv+IdSdNIeSRgjTDaAo/SqGlXV40kNmLiQwKoUrnjiq
+Pi26JvrW0VdwjwzL69/6VN4evUbUGLKQCBtPrmtSDvYb1WVYplGB91/StEyAqytjOPzrn614
+V86JGfPyJ196APmjVXX+2L4DnFw/8zVCSUoOlJrN4Idavxjc32iTPb+I1nNfsw+4BXhSpScm
+z63+28TypRlZJdiC/mV2UEY+YV9EfDxs2Fv9BXzfdEyjIHOa+jPhmrzWEGM7QoYmvTwqtGx4
+WY4meImpVNz0yiiiuo88KKKKACiiigAooooAKKKKACiimySLFGzt0UZoAJJEijLucKOprDur
+p7mQkkhB0X+v1ovLo3UgOMIv3RVegAooooAKKKKACiiigAooooAKKKKACiiigAqvfafY6tYy
+WGpWqXFrKRuVhyp/vKeoYAnketWKKAPFtR+Det2lwRa31tPbMSYpMEEr7jsaoP8ACrxGpwJL
+c8epr3+2umtyRjeh6qfX1rZVIZUDqFZT0NAHy7J8MvESXCx+XCxbupOK6nwj8Gbm61KO41p1
+W2iYMY1H38dq968iP+4v5VIAB0FADI4kijWNF2oowoHYU7aKdRQA3aKptZypKxt5vLjbkrjP
+PtV6igCgNNViDLPNIfQtgflVmO0giGEiQfhTpGKgBQCT0zSRyhlGQQaAKzW/lOsYYiBjkj39
+PpV1QFUADAFMlI8pifSmQM4ASQcgdfWgCekJx060tRyOsaM7kKqjJJ7UmwPN/EdwbzxFPzlI
+cRr/AFrm9Z1waLLCZFjeJx8yg/OOeoHerWu3bW91qF7byqbYMXDkEk/hXHtfajPdhZdQEN3J
+IoiieEZwemDzkV8TOj9YxM6k7ON3/Wlz6pS9lRjCO9jofGMkyeFop4YI5Y7ojAlzjaBuJI/C
+vOtNuL+51a2tLmZ2gmZWRETyzF6Mo9O1a/xE8Valby2Wk3IilESF5Cny7sjGKzvBGqWsupzT
+3Lyny4gqGU7tvt7V6eEovD4J1FG97tfocDqe1xCpzZ2uqXUvnea0rM4XZljniur8LT2rabHK
+jJM+eWzyp9K4vUpILqMvBKpJHQGsfwvqNxaeI/IBPlSKd659O9b5Viaj9ybv67izLDU178Fb
+0Pan1i1ilEUjlXI4BFdVYhfsaYOcjtXnFvAdSuLWU5IV8H6V6Fp9q6DzHJHHC17p4p4x46+E
+mpDU7jUtEC3EEzmRoM/MpPJx61x154U1lfD1tZrpk41D7Qx8pY/n24/lX1PiuUuVK+PbYg9Y
+2yPwrL2MbtmvtZWszwzQPhX4m1e8EN1afYYxyzzHnHsBX0R4c0C38O6TFZQneygBpD1Y1NEA
+NXk90FaQqoU1HYmc3LcKKM0VZAUUUUAFFFFABRRRQAUUU2SRIoy7nCjqaACSRIl3OwUeprDu
+rt7luchByFz0ou7prmTIyEHRc/r9ar0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
+RQAVYtbt7VjgbkPVc1XooA6RHWRA6EFT0Ip1YNndG1kJxlG+8K3EdZEDoQVPQigB1FFFABRR
+RQA10DjFNRAiAE5x3NSU113Iy+oxQBHJtk2qCCCcnHpUuKxLK3na4JV2VUOCf6VtjpQAYrB8
+W3RttAmCth5cRr+Nbx6Vw/ji53XFnaDtmVv5CuLMKvssNOXkdWCpe0xEYnDarqK6VDb7kDRy
+PiQlSQqgc1NpdxZa3a2160MBmQblAwWj54+lVNf1S3htZLRcvNxuVWK7Qe5ODisvRL+azs9S
+vJoJRH5ZkimO07gB3Ye9fHww/Ph+ZK0r997n0dSpapq9Dl/El1ps+vXd8tjPqEofZ+8G2NQv
+HA6mtXwhpNpDY3t7EFeC6cGNT1VcdD+NcUdXhmtz5xRZSm0b1Jx82dy4716XpUKWnhy1VFKh
+08wgju3Ne1j1Khh401fWy+SOLA8tWs56aanO6vbC2Znt2KjqVqnoH2i41VXG4Fvlzjk1b1mX
+7wrX8CwRnbcyDdJuIQH+GurLY3s2cuYStoj2TwnpoS2XzV525weorqo2Kny36jofWszw/GVs
+y56tWs6hxg17J5I/Ncletjx5ZgdShB+m2umWQr8kgJI7gda5e8fPjexcA4YFec8fKaAN9eNV
+H+5V+sxpFTWIwTjcnFafagBrYOd3SlU9AOmOtNVDjDNkGngYAA6CgBaKKKACiiigAoopskiR
+Judgo9TQASSLFGzt0UZrDu7prmTJwFXO0Yourt7luchByFz0qvQAUUUUAFFFFABRRRQAUUUU
+AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFWLW6a1ckAMrdRVeigDpEdZEDoQVPQinVg2t29s
++RllPVc4H1rcR1kQOhBU9CKAHUUUUAFFFFAECDypChxhjlT71PTJEEi4P4GkjYkYb7w4NADi
+a8y125+1+IrpwfljIjH4V6NeTLbWc07HAjQt+leUQ5n3u55kJY/jXz3EFZRoxp92exk9P35V
+Oy/M4vV3uv7TnnJa0kViAqo48xR0O4ZBJ5q7rFjJ/wAIKLWwidJLvG4SsAVzyxJNatr4aNqC
+0OpXat5hYfPuXB7EGsLx1cRy3tvYsxcxQmTZk/MSccgdfpXmUKka1anTpvbX7vL/AIJ21lyQ
+k5df1PPLjw1/pNqLa9iuyZlinWLkRkn1716lf7YbdYl4VFCj8K5DwtZoPEzvbMhijU+YUUhX
+49D3BrptWl4bmuvMasqlWFNu9tfvDAUo06UppWv+hx+sS5Y4rsvAFmTsPX2rhb0+bdqnq1eu
+eA7LbHEQvXFe1gIWhc8jHSvOx6zpsflWMS98Zq5TI12xqvoKfXecJHK+xCc4rj9ZmFr4s0+Y
+IZABgheTyD2rsmUMMMARXF+KH8jxBYyEALuClvTIIoA27W5W9vYp/LK5XADVtAYFc9HewpqN
+pBbRu67MbgMCt+Ni6BiMZ7UAPooooAKKKKACkJCjJOAKGYKMmq7tlDLLxEgyF9aAAzkZlc7I
+V7kdayrq6e5fJyqjouc/jRdXb3LY6Rg/Kv8Aj71XoAKKKKACiiigAooooAKKKKACiiigAooo
+oAKKKKACiiigAooooAKKKKACiiigAooooAKs2l21s/cxnqv9RVaigDpI5FljV16MM06sK0u2
+tn7mM9V/qK245FljV16MM0AOooooAKjkUg716j9RUlIaAOb8Y3yweH5FDYMzBM5xx3rg4Lq1
+UBfPiB/3q6z4h6Dd6voyNZbmeB9/lj+KvEbjdb7lcFGU7SCOQa+dzPBSxWIUb2VtD2sDiI0M
+O3vrqenRyRyY2OrZ9GrxPxxqDXHiW+nRiPKbykIOCMV0CvJEm8SuCOy5FZ11p1pfKxnh68s4
+ODmry7K54Kq6j966sZYrFwxEFFaepN8OFmmgvr+eRnJxEpY59zWrrEvytUegS2ukaX9hjViu
+4sX7nNVdXnDKSDwa5K8ZTxcpNWXQ9GjKMcLGKdzEtUM+qooycV774HtNqRcds14f4ZgM+qbs
+ZG6vozwja+XaB8YAGBX0eHjy00fP15XmzphS0UVuYhXJa6FfxPpiOFKl16j611hGa5TXto8R
+6WSRnzU/rQBf1GZbfVLGMDb5h2jFbKSIW2KwyO1Zt5BHLqdpI65KZxmtGSIOARww6EUAS0VF
+FIW+Vxhx1FS0AFNZwgyaGYKMn8qiZlRTNMcAfpQAMyqPNmYKo6A1kXdy1zLnkIPug9qLq7e5
+fJBVB0XOR9ar0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
+AUUUUAFFFFABRRRQAVYtLpraTJyUPVc/r9ar0UAdJHIksYdDlT0NOrBtLpraTJyUPVc/r9a3
+EdZEDoQVPQigB1FFFADWGQQelcV4i8Gadrl421GjnVctInc9q7as+OxnDyF7j5HbJ2jB/Opn
+CM1aSKjOUHeLPFNW8CavZlvKQXKD/nmeQPcVzklvc2xMc8JiYHneuK+jtPskgaaQAne3GTni
+pp9Ps7pcTW0Ug/2kBrP2c4/DL7y+eMvij9x8zRopi+ZipzgAVHPCJ4mRvwNfQ9x4L8PTtufS
+7fPqFx/KoI/AHhyMhl05cjoCSa569CpWstFbqb0K9Old669Dx74eeGr2+vvkhIjU/NIRwK+g
+bK1Sztkhj6KOvrUdjptrp0RjtYljU9hVyuyKskjkk+ZthRRRVCA1yviFf+J5phGP9cmT+NdV
+WRqeinUb61uPtBjWBwxULndg5xntQBLd8X1t9TWiKbsU4JUEjpntT6AGSJuGRww6Goftahth
+B35xipmfHA5J6CoJIoYiZ5T8w569T6CgCX5Y1MsrAY6n0rGurt7lsHhAflH+PvRd3LXMueQg
++6D2qvQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
+UUUUAFFFFABRRRQAUUUUAFWLS7e2kHJMZPzLVeigDpEdZEDoQVPQinVg2l29tIOSYyfmWtpZ
+FljEkZ3KenvQA5stxyPekb5oyAeTxS4JAJ4paAIGg/dbWdsAY+U4qSJFiQIucD1okV2A2sBg
+80isyvtY5z0NAEuKKBRQAUUUUAFFFFABRRRQAVG74O1Rlj2oaQ52Ly38qPkgRndunJY0AISk
+EZkkb6tisa6vHumGRtQdFzRdXT3MhJJCDov9frVegAooooAKKKKACiiigAooooAKKKKACiii
+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqzaXbW
+z4OTGfvL/UVWooA6SORJYw6HKnoadWDaXb20g5JjJ+Za3I5ElXcjBh6igB1MdQ6kH9KfRQBH
+ExIKt95f196kqKRSMOo+YfqKerB1yKAHUUUUAFFFFABUbOSdide59KRmLHan4mkZ1gXJwFHJ
+JoAGaO2iLMffJ6k1j3d0bqQHGEX7ooubt7luchByF9Kr0AFFFFABRRRQAUUUUAFFFFABRRRQ
+AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
+FFABRRRQAVZtLtrZ+5jPVf6iq1FAHSRyJKu5GDD1FOrBtbt7Z8DlCfmH+HvW4jrIgdCCp6EU
+AOqE/uZM/wADdfY1NSMoYEHoaAFoqKNip8tuo6H1FS5oAKjJMh2qcDuaaSZmwvCDqfWnSSJB
+EWYgKB09fYUADNHBEWY7UHU4rFurp7mQnOEHRf6/Wi8ujdSA4wi/dFV6ACiiigAooooAKKKK
+ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
+oooAKKKKACiiigAooooAKKKKACiiigAqxa3b2z4HKE/MP8Peq9FAHSRyJKu5GDD1FOrBtbx7
+VjgbkPVc1trNG8e9XBX1FADZwPLLZwV5BqCCZrxTxtUdfepQDOdzcR9h609mjt4yzYVB1OKA
+FZkhjLMQqqOTWJdXb3Lc5CDkLnpRd3TXMmRkIOi5/X61XoAKKKKACiiigAooooAKKKKACiii
+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
+KKKACiiigAooooAKKKKACiiigAooooAKsW1yYG2sN0RPzL/UVXooA6IzxiAzBgUAzkVi3d01
+zJk4CrnaMVXooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
+AooooAKKKKAP/9k=</current>
+            <note>
+                <contents>html://&lt;p style="text-align: center;"&gt;&lt;a href="angles.html"&gt;Learn more about angles...&lt;/a&gt;&lt;/p&gt;</contents>
+            </note>
+        </image>
+        <time>Wed Dec 10 01:17:43 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/image/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/image/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/image/test/defaults.xml	(revision 6168)
@@ -0,0 +1,173 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>image</title>
+        <about>Example of a Rappture &lt;image&gt; object.
+
+Images are used to decorate input and show output.
+
+When you click the Simulate button, the input image will be rotated to produce the output image.
+  </about>
+        <command>
+    tclsh @tool/image.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <loader>
+            <about>
+                <label>Image</label>
+                <description>Use this to load different images.</description>
+            </about>
+            <example>*.xml</example>
+            <default>nanoHUB</default>
+            <current>nanoHUB</current>
+        </loader>
+        <image>
+            <about>
+                <diffs>ignore</diffs>
+            </about>
+            <current>R0lGODlhtAA8APcAAFeBu////0VurKW829Ld7YSjzWKJwLzN5HmayfT3+unu9sfV6G2SxJqz1t3m
+8Y+r0rHE31aAus3Y6VJ5sEpysEdvrXeVwlV+uVB6tVZ/uEhwrlV/uEx1slN8t1eAuk50qFF4rlJ7
+tkZol5yy0092q0dqmVV+t053tElxr0VmlEVnlU92qlR8tFN7sk12s0VtrEVtqkRrpktvoUxxpEt0
+sUdpmEVtq0hqmktvoERqpE94tEJmm1Z/uVV+tklsnUZnlkxwo1R9uEdpmVR9tUVsqVV9tkVsp01y
+pUNon4+ozURrpdri7k91qsHP401yplB2rEVsqERpoEVpnlF3rUNpoVF4skRqo05zp01zplJ6sEVo
+mkZroUhrm1J6sUZqnURmlkFjlICdxUFjlkJnnqCzzkRqosHO4kJlmFJ6sk50qURqpUtwo1N8s0hr
+mkVmlkVpnEJkmUNpoENooEhsoElsnEtvosLN3URonkVsptHc6pyuxkNklEltnkpwpp6xy0Rlk6i7
+2EZpm0Jkk0JklrXF3nyXvERnmvP1+ejt9EJll0ltoE50qpKnxEFkmJuuyM7X5NHc60droUpvpG2Q
+wkNmm4KfyEhtoEJnnURom0NnmkJlmUpvokdtpJyx0kptnkZpmWqIsUZomYOhy87X43eRto6lx83W
+5Obs9KS510Vqol6Bt0VmlURml7XF3YKgyfP2+XiRtEltobTC1kNkk3+bw4OeyEdrn3eQtUZsolJ5
+r2iCqE92rkJijkJklFFxoEJnnERnmM7Y5Uhsn0RpotLd7KG20kVrpENnnUJij9Da6MXT5Upvo5qs
+xneUwaK200NnnHSOtKO41URmlefs80ZpnUZolniStEVomM3X5UVrp3qUuklto8/Z5kdsoEZpmk1z
+qU91qbrJ33yXvVJ6s5yuylN8tEpuoFJzo0Zrn0JmnERonEVmk01zqENmmIOizExxppuuy0Vnlkpu
+okFklsHN3FF5sFp9rp6xykJmnUtwpV17qAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAC0ADwA
+AAj/AAEIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKzLgLDx5O40aqXMmyIy4B
+MGH0aUmzpk2G5crAFBBjw82fQG1GkBQljhYfPoMqXapyggocGVrqoECBw8AQVC8IjHACBcwKNDAA
+iECVQoeBNCicYMr2IIgUQCKs9ApTKwAOMAWGqLBzpwYAIXZaBXAB5tq2iAmuSHHEw8i+LgR6pQCg
+w1exgDVYPdFXbmABZxOLFvghxYeQlgXwrRAhgmEAGmAGIRjhLAXVr13kHb2yR74tWyKxS6rQw5EU
+Kz5yFoABJobPHZoLGGwQpguvfyfzbmqlrwAry+Qu/4wAJAWIjrf/xtawPAJe5gdTY5AuPfJ2kei8
+w3zxxmEGHCpMsBFfm30lAAoA3AbaQTrUFcFqMIVwn0hrwKCfADmQ8NAGPojQBUZBODcWZAlGWJBW
+NAjwFwC67STehB954EUM+qXDRQ0i4DDFiwn10IYQbFjUoAB2vSeAhC3SMNAFFEhIoECFwYQgjCIx
+YQg+OeRAxSBYDNSCEzhy8QELCrFQwg1DUIRXBQOlRiRhfKlGAV0RRKnDQApSR2VIJkzgZ0ImrMCH
+CDXIAIJjBrVQAxcmSBSbkgOtN1AQdMGkwZ3SzSYQfXtKxMAAAzRgUAGgFiDQp6Ea1ACoDAhUwAEE
+5P/BzSj03GNPmgRNkIInxLFQTxYZXdBBB3Z12lEBAQRAgEEDJDuAq8kuWxAByZoKQLPJZhvAK4yI
+IEId5wkEwjoyLBIFjQIQkUofPBg7GrLKMusstPFOW61A2GqbbAKtglBHNSL4AE4Ra6hxoRXfuJsY
+vNIShO2zADBsELUBWIvtAQWQmkCyEBQ0xAd0sHJhTNso3JbEBT1MbzJXtEAQxRbPK1AD0SI0x8j7
+xaLwAA8AgACsC4haUAOwEjBAqw73/DMBQR/0KgFGI01vwwOp7IE2yUoAgxyDKOITzPjKHHHNAPQ5
+wRMzzCCEwTjHgIa7ASjwgL4HvKxvAj0PFPfc2tb/TdABd1s7dr0OzxtIM1nv9EI7PcDcZzTJkoFD
+CSXokaweyFB+Q9pH+EkNzjBZAne0DxSwwL0CHZDAAQNAsLECBGVLQOmnV1w1xwU8QC2/9DqQ8e+v
+OrvBGBYkvpMNvDySrDVnkpFsOGGEAcG+BiSUgTov4OzF6H4LpEAAEAPAQPX0Cp5s9wB8D7EBG4cP
+gAMB+A2vvvoO4MEZxQcgQV8vhAL2tfQLQAIQoJAWqOALSriQEWYwOsEBAHBUK4j69Ga7gUBwZnEb
+mgDpFcBsPQsE0DCeAGwAhlz8L193I6BBilCCNjRqAphAQvZgQoVAIKpTqAtbBBmwqgHAL3w5BKC0
+/wCHPvElq1XwSgDUlkiA74FPIJVIlinGsAMxXMNlJzxfxhpQuwSQTyAZMIcIXDYQEbDhCquYQxrI
+pLAgNqthBphe/SjowDcKhFruE8i9UFa4Jw4OEhMA1kCy6EeB1C58R/jDFAqygR+Ii4EmA4AbCbe7
+AeRugnqsoA7vWEg6Di6CAPQjHweJOpUNBF4LAAAJUnCFgzjhNAIRQiQlqUkhYnCApARiLe0IADwW
+xAB7JFsfITZKTlbQlPTKww9w0K6DqKCZAPgAEyI5SWmdDn2+zGQd68XLgfBtavLyIwKy9UUjHjFs
+ncSWHRqFEDMRxAMioOYu65VNTupym9LiWzkB5/8AcKZMbBtTFvkYAL8MojN8ojiE2A4ig0USRAYC
+auM8hxg38mGrY9osXMPgtwDy0SwAeStmKMOXLyVSLFnOEAYwMuGIZCkAatPIlgLKaZA/GCQDJTBZ
+NQUyTgE2UYACJN9OeboxJTqxeyJFpgEKSj9ZJBAmI+igAlSIkCzw4SA+YKOxhgqABgQ0AQNYqh+5
+6rOTgpUgSV2oAQYQ0GQhohTeiaq+jEZTg9CBjAVhgQ9muRADZIwgCJDaQxjwV40gIGOT+AXoBEAJ
+aBYnBQkRAnH4qjASGGGxRtAQQ0gAhISAQAaUjSQJ0NU2zS6kBj1QyA94FNo9ZeAMi51HVBaSARX/
+LIQJXWqtuz6gCZzBAZYLwQJwEeIB2+pWIqDCVyorgoAERKQYzECCd5AgCBJ8cQF5BIBPnskQIJh2
+IQE4Lr7WJ9iJUNUhoFrBDdywBzfcIDkEENz4BIKGLRgDCgLIRhmkEFHrObIh4TUWAhZAAKFBoAFM
+q15yEVDgrg6AwCrU3QLyNhADwKpjBOgYAgYAqwcMoMEAgIAKl5XcazGNgF51QMcQjIAMgMIMEkgC
+TACRBAmYwRdFGDCIqxYMZaiQdRmuGgEAV5ADD9l0HcXXkFuFAAh82AAWznBdOcIABYyvaUa7Vt1K
+nNwH+xV2D+goQevYMVMVYFkFsPI4EWAAK/fS/1rhLbGZYffmQbpDH6dQRRWaIGMJjEAAI2hFL4jx
+AAOcN2JDgAWdbddgDhs6wIN81gJSyeEQlxl2yFKh70wskta5alnxjRiJIdZliIV3Aaz7sPvS3IDq
+nVnUeryjqUItyWtBbMCnk/UgxdEJQMDEAvuTgAUEAGwi+MEBFB7IgO0Q4AAn14uxfpmpkvtqaL/5
+1T5TAKia1WligtrMox6vrWNttN+VlwEHcIBf0SytAIea1nF+VpsLAExd35EUI/gzsYM9bGALQBBn
+Rl+baXGOAEThDgHYRBGSC2lI65ray4J0fLFdAN/9TiTYZl2dX+3pcZc4zss99Hwnzu5oh3rCPv+L
+c5mXVe9eUpgAt/C3AAjxZ2HvWwC6iLZAXIENIlQhADAB+jDIgYpemnpa037Wq0PNAC9im30ENEB5
+PeJDBxygeqF+dZVFVepoQ8ABVi9ImqEGa2y721QIcMCQw7v1Xjpg0j17gAIcQEACFMIII1jCEghR
+BQHYHNg58MPcw2eCY0hgCU1oQi0EAHRAw8MJCHgptZA+7lczmADIhjVP1b5p8YbEA1qw0MigMIvZ
+EkQeixUAFZ7g+UhGwBuX0I8NdiCNyQ5ECqkXQCJs3/pOdeETYoDDDhoBhniE6yC2yH0Ohtt7hWVg
+AqldyBOIkHoogLb52B9IN2aIMzkkJ/vZj4AsFGyAMxjsgbXg7/074kB+7yjhC+xMP/gjkIY33GEH
+O3iGFr4v//77//+8ERAAOw==</current>
+        </image>
+        <number id="angle">
+            <about>
+                <label>Rotate</label>
+                <description>Rotate image by this amount in degrees.</description>
+            </about>
+            <units>deg</units>
+            <min>0deg</min>
+            <max>360deg</max>
+            <default>0deg</default>
+            <current>0deg</current>
+        </number>
+    </input>
+    <output>
+        <image id="outi">
+            <about>
+                <label>Rotated Image</label>
+            </about>
+            <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CAA8ALQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCKiiivoDyAooooAKKKKACiiigAooqtJcss
+hUKMD1oAcJnV8SJhf7wHAqcHIyKijnRxyQrehNOMeDlDtP6H8KAH0UzzNv8ArBt9+1PoAKKK
+KAEyCcAjNGQehHFVFJTE3qTmlUZEaHoxyfenYC0HUnAYH6GgMCMggio5FRFLAAMB2qucxIR2
+daALoIIyKKai7UUegp1IAooooAKljtp5WRY4ZHL52hUJ3Y649airsLjU7vTfAuhtZzGF5GnV
+pEGGwJCcA9QP8BUTk42t1KjFO9zkZI3ikMciMjr1Vhgj8Kkls7qCNZJraaNG6M6EA/ia6nXj
+dX48N3sS79RuIgNwAy7KwwTW3ZG8n/tOw1bWbe+drVzJaoMmNgOoOMcegrJ1mknY0VK7secJ
+DLIFKRu25to2qTk+n1pZoJreTy54nifrtdSp/I11Wm31xp3w+nntX8ub+0SokAG5QY1zg9j2
+z70+8aTXPDGiy3khkuGvTbGY/eKn1P5VXtXfbS9ieRW8zlEtLmSEzR28rRL1dUJUfjW54R0a
+01m7u47sOVigMi7WxzkVf1rxJf6X4ka1spTDZWTLGlun3SoxnI755rf0mzg0/wAd61FEgEJt
+hJsHbO0kfnms6lWXJ2urouFNcxwGhWcWoa5Z2k4JilkCtg4OK37Hwxpd54o1ewmjcwWkbNEN
+3PBHU/jWjomq+FptatI7PRZoblpAI5C3Cn1+9U2jp/xXviN89YGGPxFRUqyu91p+pUIR066n
+E+GrG01TXbSylGYJWIcIcH7pP9K6DSPDOkTeItatrmGQ21kGKKkhU4B9sZ4rC8D27r4x052I
+GHbgHr8prs9DEaeLfFDuhdNrllJPIyciqryabS7fqKlFNK/f9DJvND0LVNAvNR0J54pLMZeO
+bkEf/qz3rhmLRAkbRjsDwfwr0jT5dM1/w/qek6TZHTH2ecyjDCUDsT1x0/zkV50Np/1Ua/72
+OP8A69XRb1T6dyaiWjRB9qkznC/lViOVZlIxg9xUD2/z4Q5OMnPSpLeLb85Ocjp6V0GJL5a7
+NmPl9KRokZQpHA6U+igBghQKV28HrzSsitjIzjpTqKACiiigAooooAK177VYLnw3penIkgmt
+GlMjEDadzZGOc/pWRRScU7X6DTsdIniSGBtAkihkZ9OVllDAANk/wnPpnrV211vw3p2pz3Vv
+DqEn2tXWUuVHlK3XaO5z6muOrRtNLFzFCTOEluGZYE25DEepzxk8Dr+FZSpQtr/XUtTl0LH9
+qWyeFJtJUSmVr3z1cqAuzaBzznPFI+rxf8IzaadGJFuYLoz78DbjHGOev4UR6PH+6Yz7yBDJ
+JHswNjkDg568jtSppcVwWjRhGTdvFuKk7VAJ9eR+Gfej3P1D3jTk1nw9qF6mrX9teC+G0yQx
+FfKlYAAHJ5A45pNK8Wxw67qWp38Upa7iKKsIB29MDkjgAYrMj0ISqs6XJNq0QkD7AG5ZlxtL
+Y6o3foPwqn9gA1X7C1zEB5mzzs/Lj1zS5KbTQ+aasx+iX0Wm61aXkyu0cMgZggBJHtmte38V
+LZeL7rV4Ina3uCQ0bYDFTj6jOQKqJoof9xuZJGukh3SxlWUMhPQMRj/AYPNQS6TELTz4bovm
+3+0KrRbcoH2HPJwcg/h+VOXs5PXroJc8VodF/wAJR4V0eR9Q0zSrg3zg7A/CoT1/iOB9BWL4
+Z8WwafqWpXWrpPML1CGECr1JyepHHNMh0GNr2eK4YSR29wsJAyNxKSEHrx9z9az4/DxfS3vm
+uGVUUOyFACU3hMr82TyR2A96lQp2afWxXNPRnSr4q0TT9OuI/D2mzwzXClHmuDyo9uT/AErk
+a2JNJtYL7ULS1Z5Bbx/IJVwS24L1Ddeep468VW/srzpWSG8UokjxSuYiNrKjNxzyDtPPB9qq
+HJHVEy5pGbHzuf8AvHj6f5/nQvyuV7H5h/X/AD71q22kpMcJcMym3WaJVjHmOpJB+Td2KnOC
+e3XtVs7IXsxDO0axrvZwoIAyBzkgAc9zV8ysTysr0VrjQwHeGS7UTi4ntlVVyC8QUnJzwDuA
+6GhNNgisL1ppC10lpHOqBSAgd48HOeTtfpj+L1FHtIhyMyKK07DSkvIEka58oySNGg2bhlVD
+cnPA596V9Jjji+0yXRFoVQq4jyxL7sDbn/Ybv2p88b2DlZl0VsNoLpLFA1wv2iW4a3RQvy5U
+qCxPYfNnoTx0qrqGnCyWJ1nWRZCwwcBgRjqATwc8HPrQpxeiBxaKNFFFUSFFFFABVqDUbq2h
+8qKQBecZRSVyMHaSMrn2xVWik0nuCdi1/aF1gjzSMokZwB91MFR+GBS/2nd+YZBKAxkMpwig
+biME4x6VUoo5V2HdluPUruJERZFKJH5YR41Zdu4tggjB+ZiefWoFndbjzxt37t3KAjP0xjHt
+io6KLILsu/2vfeYriYAq6uuEUAFRtXAxgYB6dKiF9ciIReZ8ghMAG0fcLF8f99Emq9FHKuwX
+Zof21f4X98oIkWTIiQFmUEAk4+bhj1znPNRnVLs2xty6eUy7CPKXO3duxnGcZ5x2qnRS5Y9g
+5n3LU2o3c7SM8oDyR+W7KiqWGQeSBycgc9agk1DVHkDefHkFjlY1XJYbWJAHJIJ5OTTKKOVd
+g5mT2d/eWjRusqGSNAkZMSnywCSNpI4OSeetVjeXNm7GFl2SLsZXRXU855DAjsKdSEAjBAI9
+DT5V2C7GPq99JMJWnzIJXmDbF++4AZuncKKtw6vey6ebd5FMZQREmNdxQMCBuxnAIHftVP7P
+FnO39TUoAAwBgCjlXYOZliG+uLdESKTaqOXUbQcMRgn8hUkep3caqokVkVAgV41YYBJHBBGQ
+SeevNU6KOVdguyy+oXcjxu07l45GlV/4g5IJOeucgUy4upbpg0ojBH9yJUH5KBUNFFkF2FFF
+FMR//9k=</current>
+            <note>
+                <contents>html://&lt;p style="text-align: center;"&gt;&lt;a href="angles.html"&gt;Learn more about angles...&lt;/a&gt;&lt;/p&gt;</contents>
+            </note>
+        </image>
+        <time>Wed Dec 10 01:16:57 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/image/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/image/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/image/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>image</title>
+  <about>Example of a Rappture &lt;image&gt; object.
+
+Images are used to decorate input and show output.
+
+When you click the Simulate button, the input image will be rotated to produce the output image.
+  </about>
+  <command>
+    python @tool/image.py @driver
+  </command>
+</tool>
+<input>
+  <loader>
+    <about>
+      <label>Image</label>
+      <description>Use this to load different images.</description>
+    </about>
+    <example>*.xml</example>
+    <default>nanohub.xml</default>
+  </loader>
+  <image>
+    <about>
+      <label>Image</label>
+      <description>Input image that gets rotated.</description>
+      <diffs>ignore</diffs>
+    </about>
+  </image>
+  <number id="angle">
+    <about>
+      <label>Rotate</label>
+      <description>Rotate image by this amount in degrees.</description>
+    </about>
+    <units>deg</units>
+    <min>0deg</min>
+    <max>360deg</max>
+    <default>0deg</default>
+  </number>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/integer/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/integer/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/integer/Makefile.in	(revision 6168)
@@ -0,0 +1,38 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/integer.gif \
+		$(srcdir)/integer.py \
+		$(srcdir)/integer.tcl \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/zoo/integer
+
+.PHONY: all install clean distclean 
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/integer/integer.py
===================================================================
--- /tags/1.6.0/examples/zoo/integer/integer.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/integer/integer.py	(revision 6168)
@@ -0,0 +1,22 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <integer> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+n = rx['input.(points).current'].value
+rx['output.integer(outn).about.label'] = "Echo of points"
+rx['output.integer(outn).current'] = n
+
+# save the updated XML describing the run...
+rx.close()
Index: /tags/1.6.0/examples/zoo/integer/integer.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/integer/integer.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/integer/integer.tcl	(revision 6168)
@@ -0,0 +1,21 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <integer> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set n [$driver get input.(points).current]
+$driver put output.integer(outn).about.label "Echo of points"
+$driver put output.integer(outn).current $n
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/integer/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/integer/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/integer/test/defaults.xml	(revision 6168)
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>integer</title>
+        <about>Example of a Rappture &lt;integer&gt; object.
+
+Integers are integer values with no units.
+The description appears in a tooltip when you hover over the integer control with your mouse.
+
+When you click the Simulate button, the input integers will be used to generate output integers.
+  </about>
+        <command>
+    tclsh @tool/integer.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <integer id="points">
+            <about>
+                <label>Grid points</label>
+                <description>Number of nodes used in the simulation mesh.</description>
+            </about>
+            <min>10</min>
+            <max>1000</max>
+            <default>100</default>
+            <current>100</current>
+        </integer>
+    </input>
+    <output>
+        <integer id="outn">
+            <about>
+                <label>Echo of points</label>
+            </about>
+            <current>100</current>
+        </integer>
+        <time>Wed Dec 10 01:24:01 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/integer/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/integer/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/integer/tool.xml	(revision 6168)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>integer</title>
+  <about>Example of a Rappture &lt;integer&gt; object.
+
+Integers are integer values with no units.
+The description appears in a tooltip when you hover over the integer control with your mouse.
+
+When you click the Simulate button, the input integers will be used to generate output integers.
+  </about>
+  <command>
+    python @tool/integer.py @driver
+  </command>
+</tool>
+<input>
+  <integer id="points">
+    <about>
+      <label>Grid points</label>
+      <description>Number of nodes used in the simulation mesh.</description>
+    </about>
+    <min>10</min>
+    <max>1000</max>
+    <default>100</default>
+  </integer>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/integer2/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/integer2/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/integer2/Makefile.in	(revision 6168)
@@ -0,0 +1,37 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/integer.py \
+		$(srcdir)/integer.tcl \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/zoo/integer2
+
+.PHONY: all install clean distclean 
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/integer2/integer.py
===================================================================
--- /tags/1.6.0/examples/zoo/integer2/integer.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/integer2/integer.py	(revision 6168)
@@ -0,0 +1,33 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <integer> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+# read the inputs into a list
+n = []
+for i in range(1, 4):
+    n.append(rx['input.(input%d).current' % i].value)
+
+print 'n=', n
+
+# build an output string
+outstr = ''
+for i in range(1, 4):
+    outstr += "input%d = %s\n" % (i, n[i - 1])
+
+# write the output string to the xml file
+rx['output.string(out).current'] = outstr
+
+# save the updated XML describing the run...
+rx.close()
Index: /tags/1.6.0/examples/zoo/integer2/integer.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/integer2/integer.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/integer2/integer.tcl	(revision 6168)
@@ -0,0 +1,25 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <integer> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set n1 [$driver get input.(input1).current]
+set n2 [$driver get input.(input2).current]
+set n3 [$driver get input.(input3).current]
+
+$driver put output.string(out).current "input1=$n1\n"
+$driver put -append yes output.string(out).current "input2=$n2\n"
+$driver put -append yes output.string(out).current "input3=$n3\n"
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/integer2/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/integer2/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/integer2/test/defaults.xml	(revision 6168)
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>integer2</title>
+        <about>Example of a Rappture &lt;integer&gt; object with colors.
+Each integer object has a different color range.
+  </about>
+        <command>
+    tclsh @tool/integer.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <integer id="input1">
+            <about>
+                <label>Widgets</label>
+                <description>Number of widgets. Color range is from red to blue</description>
+                <color>10 red 20 blue</color>
+            </about>
+            <min>10</min>
+            <max>20</max>
+            <default>10</default>
+            <current>10</current>
+        </integer>
+        <integer id="input2">
+            <about>
+                <label>Randomness</label>
+                <description>Pick a number. Color range goes from yellow to green to blue.</description>
+                <color>-10 yellow 0 green 10 blue</color>
+            </about>
+            <min>-10</min>
+            <max>10</max>
+            <default>0</default>
+            <current>0</current>
+        </integer>
+        <integer id="input3">
+            <about>
+                <label>Magic</label>
+                <description>Magic value.  Color range is spectrum from 400nm to 700nm.</description>
+                <color>0 400nm 20 700nm</color>
+            </about>
+            <min>0</min>
+            <max>20</max>
+            <default>10</default>
+            <current>10</current>
+        </integer>
+    </input>
+    <output>
+        <string id="out">
+            <about>
+                <label>Print of inputs</label>
+            </about>
+            <current>input1=10
+input2=0
+input3=10
+</current>
+        </string>
+        <time>Wed Dec 10 01:29:18 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/integer2/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/integer2/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/integer2/tool.xml	(revision 6168)
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>integer2</title>
+  <about>Example of a Rappture &lt;integer&gt; object with colors.
+Each integer object has a different color range.
+  </about>
+  <command>
+    python @tool/integer.py @driver
+  </command>
+</tool>
+<input>
+  <integer id="input1">
+    <about>
+      <label>Widgets</label>
+      <description>Number of widgets. Color range is from red to blue</description>
+      <color>10 red 20 blue</color>
+    </about>
+    <min>10</min>
+    <max>20</max>
+    <default>10</default>
+  </integer>
+  <integer id="input2">
+    <about>
+      <label>Randomness</label>
+      <description>Pick a number. Color range goes from yellow to green to blue.</description>
+      <color>-10 yellow 0 green 10 blue</color>
+    </about>
+    <min>-10</min>
+    <max>10</max>
+    <default>0</default>
+  </integer>
+  <integer id="input3">
+    <about>
+      <label>Magic</label>
+      <description>Magic value.  Color range is spectrum from 400nm to 700nm.</description>
+      <color>0 400nm 20 700nm</color>
+    </about>
+    <min>0</min>
+    <max>20</max>
+    <default>10</default>
+  </integer>
+</input>
+<output>
+  <string id="out">
+    <about><label>Print of inputs</label></about>
+  </string>
+</output>
+</run>
Index: /tags/1.6.0/examples/zoo/loader/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/loader/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/Makefile.in	(revision 6168)
@@ -0,0 +1,44 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/loader.gif \
+		$(srcdir)/loader.py \
+		$(srcdir)/loader.tcl \
+		$(srcdir)/loader2.gif \
+		$(srcdir)/tool.xml \
+		$(srcdir)/tool2.xml
+
+destdir		= $(prefix)/examples/zoo/loader
+
+.PHONY: all install clean distclean
+
+all: 
+	$(MAKE) -C examples  all
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	$(MAKE) -C examples install
+
+clean:
+	$(MAKE) -C examples clean	
+
+distclean: 
+	$(MAKE) -C examples distclean	
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/loader/examples/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/loader/examples/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/examples/Makefile.in	(revision 6168)
@@ -0,0 +1,38 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/both.xml \
+		$(srcdir)/new.xml \
+		$(srcdir)/first.xml \
+		$(srcdir)/second.xml
+
+destdir		= $(prefix)/examples/zoo/loader/examples
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/loader/examples/both.xml
===================================================================
--- /tags/1.6.0/examples/zoo/loader/examples/both.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/examples/both.xml	(revision 6168)
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<run>
+<about>
+  <label>Change both</label>
+  <description>This example changes both inputs, #1 to "first" and #2 to "second"</description>
+</about>
+
+<tool>
+  <title>loader</title>
+</tool>
+<input>
+  <loader>
+    <about>
+      <label>Example</label>
+      <description>Use this to load examples.</description>
+    </about>
+    <example>*.xml</example>
+  </loader>
+
+  <string id="one">
+    <about>
+      <label>Input #1</label>
+    </about>
+    <current>first</current>
+  </string>
+  <string id="two">
+    <about>
+      <label>Input #2</label>
+    </about>
+    <current>second</current>
+  </string>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/loader/examples/first.xml
===================================================================
--- /tags/1.6.0/examples/zoo/loader/examples/first.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/examples/first.xml	(revision 6168)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<run>
+<about>
+  <label>Change first</label>
+  <description>This example changes only the first input to the value "hello"</description>
+</about>
+
+<tool>
+  <title>loader</title>
+</tool>
+<input>
+  <loader>
+    <about>
+      <label>Example</label>
+      <description>Use this to load examples.</description>
+    </about>
+    <example>*.xml</example>
+  </loader>
+
+  <string id="one">
+    <about>
+      <label>Input #1</label>
+    </about>
+    <current>hello</current>
+  </string>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/loader/examples/new.xml
===================================================================
--- /tags/1.6.0/examples/zoo/loader/examples/new.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/examples/new.xml	(revision 6168)
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<run>
+<about>
+  <label>New</label>
+  <description>This is used for the "New" option</description>
+</about>
+
+<tool>
+  <title>loader</title>
+</tool>
+<input>
+  <string id="one">
+    <about>
+      <label>Input #1</label>
+    </about>
+    <current>(enter a value here)</current>
+  </string>
+  <string id="two">
+    <about>
+      <label>Input #2</label>
+    </about>
+    <current>(enter a value here)</current>
+  </string>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/loader/examples/second.xml
===================================================================
--- /tags/1.6.0/examples/zoo/loader/examples/second.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/examples/second.xml	(revision 6168)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<run>
+<about>
+  <label>Change second</label>
+  <description>This example changes only the second input to "goodbye"</description>
+</about>
+
+<tool>
+  <title>loader</title>
+</tool>
+<input>
+  <loader>
+    <about>
+      <label>Example</label>
+      <description>Use this to load examples.</description>
+    </about>
+    <example>*.xml</example>
+  </loader>
+
+  <string id="two">
+    <about>
+      <label>Input #2</label>
+    </about>
+    <current>goodbye</current>
+  </string>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/loader/loader.py
===================================================================
--- /tags/1.6.0/examples/zoo/loader/loader.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/loader.py	(revision 6168)
@@ -0,0 +1,23 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <loader> elements
+# ======================================================================
+#  AUTHOR:  Miartin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+one = rx['input.(one).current'].value
+two = rx['input.(two).current'].value
+
+rx['output.log'] = "Input #1: %s\nInput #2: %s" % (one, two)
+
+# save the updated XML describing the run...
+rx.close()
Index: /tags/1.6.0/examples/zoo/loader/loader.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/loader/loader.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/loader.tcl	(revision 6168)
@@ -0,0 +1,22 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <loader> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set one [$driver get input.(one).current]
+set two [$driver get input.(two).current]
+
+$driver put output.log "Input #1: $one\nInput #2: $two"
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/loader/test/change_both.xml
===================================================================
--- /tags/1.6.0/examples/zoo/loader/test/change_both.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/test/change_both.xml	(revision 6168)
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>loader</title>
+        <about>Example of a Rappture &lt;loader&gt; object.
+
+A loader is used to load values into the interface from example files.  The example files have the same format as the tool.xml file that they are being loaded into.  In fact, they can be generated by running the tool and saving the output run.xml file.  In you look in the example files, you'll see that each one also has an &lt;about&gt; section with a label and a description.  These show up in the loader control.
+
+The description appears in a tooltip when you hover over the loader control with your mouse.
+
+You can see the real action here by selecting various examples from the loader.  The simulate button doesn't do very much.  It just copies the inputs to the output log.
+  </about>
+        <command>
+    tclsh @tool/loader.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <loader>
+            <about>
+                <label>Example</label>
+                <description>Use this to load examples.</description>
+            </about>
+            <example>*.xml</example>
+            <upload>
+                <to>input.string(one)</to>
+                <to>input.string(two)</to>
+            </upload>
+            <download>
+                <from>input.string(one)</from>
+                <from>input.string(two)</from>
+            </download>
+            <default>Change both</default>
+            <current>Change both</current>
+        </loader>
+        <string id="one">
+            <about>
+                <label>Input #1</label>
+            </about>
+            <current>first</current>
+        </string>
+        <string id="two">
+            <about>
+                <label>Input #2</label>
+            </about>
+            <current>second</current>
+        </string>
+        <number id="e">
+            <about>
+                <label>Mass</label>
+            </about>
+            <units>kg</units>
+            <default>10g</default>
+            <current>10g</current>
+        </number>
+    </input>
+    <output>
+        <log>Input #1: first
+Input #2: second</log>
+        <time>Wed Dec 10 01:31:15 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/loader/test/change_first.xml
===================================================================
--- /tags/1.6.0/examples/zoo/loader/test/change_first.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/test/change_first.xml	(revision 6168)
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>loader</title>
+        <about>Example of a Rappture &lt;loader&gt; object.
+
+A loader is used to load values into the interface from example files.  The example files have the same format as the tool.xml file that they are being loaded into.  In fact, they can be generated by running the tool and saving the output run.xml file.  In you look in the example files, you'll see that each one also has an &lt;about&gt; section with a label and a description.  These show up in the loader control.
+
+The description appears in a tooltip when you hover over the loader control with your mouse.
+
+You can see the real action here by selecting various examples from the loader.  The simulate button doesn't do very much.  It just copies the inputs to the output log.
+  </about>
+        <command>
+    tclsh @tool/loader.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <loader>
+            <about>
+                <label>Example</label>
+                <description>Use this to load examples.</description>
+            </about>
+            <example>*.xml</example>
+            <upload>
+                <to>input.string(one)</to>
+                <to>input.string(two)</to>
+            </upload>
+            <download>
+                <from>input.string(one)</from>
+                <from>input.string(two)</from>
+            </download>
+            <default>Change both</default>
+            <current>Change first</current>
+        </loader>
+        <string id="one">
+            <about>
+                <label>Input #1</label>
+            </about>
+            <current>hello</current>
+        </string>
+        <string id="two">
+            <about>
+                <label>Input #2</label>
+            </about>
+            <current>second</current>
+        </string>
+        <number id="e">
+            <about>
+                <label>Mass</label>
+            </about>
+            <units>kg</units>
+            <default>10g</default>
+            <current>10g</current>
+        </number>
+    </input>
+    <output>
+        <log>Input #1: hello
+Input #2: second</log>
+        <time>Wed Dec 10 01:31:22 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/loader/test/change_second.xml
===================================================================
--- /tags/1.6.0/examples/zoo/loader/test/change_second.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/test/change_second.xml	(revision 6168)
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>loader</title>
+        <about>Example of a Rappture &lt;loader&gt; object.
+
+A loader is used to load values into the interface from example files.  The example files have the same format as the tool.xml file that they are being loaded into.  In fact, they can be generated by running the tool and saving the output run.xml file.  In you look in the example files, you'll see that each one also has an &lt;about&gt; section with a label and a description.  These show up in the loader control.
+
+The description appears in a tooltip when you hover over the loader control with your mouse.
+
+You can see the real action here by selecting various examples from the loader.  The simulate button doesn't do very much.  It just copies the inputs to the output log.
+  </about>
+        <command>
+    tclsh @tool/loader.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <loader>
+            <about>
+                <label>Example</label>
+                <description>Use this to load examples.</description>
+            </about>
+            <example>*.xml</example>
+            <upload>
+                <to>input.string(one)</to>
+                <to>input.string(two)</to>
+            </upload>
+            <download>
+                <from>input.string(one)</from>
+                <from>input.string(two)</from>
+            </download>
+            <default>Change both</default>
+            <current>Change second</current>
+        </loader>
+        <string id="one">
+            <about>
+                <label>Input #1</label>
+            </about>
+            <current>hello</current>
+        </string>
+        <string id="two">
+            <about>
+                <label>Input #2</label>
+            </about>
+            <current>goodbye</current>
+        </string>
+        <number id="e">
+            <about>
+                <label>Mass</label>
+            </about>
+            <units>kg</units>
+            <default>10g</default>
+            <current>10g</current>
+        </number>
+    </input>
+    <output>
+        <log>Input #1: hello
+Input #2: goodbye</log>
+        <time>Wed Dec 10 01:31:27 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/loader/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/loader/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/test/defaults.xml	(revision 6168)
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>loader</title>
+        <about>Example of a Rappture &lt;loader&gt; object.
+
+A loader is used to load values into the interface from example files.  The example files have the same format as the tool.xml file that they are being loaded into.  In fact, they can be generated by running the tool and saving the output run.xml file.  In you look in the example files, you'll see that each one also has an &lt;about&gt; section with a label and a description.  These show up in the loader control.
+
+The description appears in a tooltip when you hover over the loader control with your mouse.
+
+You can see the real action here by selecting various examples from the loader.  The simulate button doesn't do very much.  It just copies the inputs to the output log.
+  </about>
+        <command>
+    tclsh @tool/loader.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <loader>
+            <about>
+                <label>Example</label>
+                <description>Use this to load examples.</description>
+            </about>
+            <example>*.xml</example>
+            <upload>
+                <to>input.string(one)</to>
+                <to>input.string(two)</to>
+            </upload>
+            <download>
+                <from>input.string(one)</from>
+                <from>input.string(two)</from>
+            </download>
+            <default>Change both</default>
+            <current>Change both</current>
+        </loader>
+        <string id="one">
+            <about>
+                <label>Input #1</label>
+            </about>
+            <current>first</current>
+        </string>
+        <string id="two">
+            <about>
+                <label>Input #2</label>
+            </about>
+            <current>second</current>
+        </string>
+        <number id="e">
+            <about>
+                <label>Mass</label>
+            </about>
+            <units>kg</units>
+            <default>10g</default>
+            <current>10g</current>
+        </number>
+    </input>
+    <output>
+        <log>Input #1: first
+Input #2: second</log>
+        <time>Wed Dec 10 01:31:15 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/loader/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/loader/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/tool.xml	(revision 6168)
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>loader</title>
+  <about>Example of a Rappture &lt;loader&gt; object.
+
+A loader is used to load values into the interface from example files.  The example files have the same format as the tool.xml file that they are being loaded into.  In fact, they can be generated by running the tool and saving the output run.xml file.  In you look in the example files, you'll see that each one also has an &lt;about&gt; section with a label and a description.  These show up in the loader control.
+
+The description appears in a tooltip when you hover over the loader control with your mouse.
+
+You can see the real action here by selecting various examples from the loader.  The simulate button doesn't do very much.  It just copies the inputs to the output log.
+  </about>
+  <command>
+    python @tool/loader.py @driver
+  </command>
+</tool>
+<input>
+  <loader>
+    <about>
+      <label>Example</label>
+      <description>Use this to load examples.</description>
+    </about>
+    <example>*.xml</example>
+    <upload>
+      <to>input.string(one)</to>
+      <to>input.string(two)</to>
+    </upload>
+    <download>
+      <from>input.string(one)</from>
+      <from>input.string(two)</from>
+    </download>
+  </loader>
+
+  <string id="one">
+    <about>
+      <label>Input #1</label>
+    </about>
+  </string>
+  <string id="two">
+    <about>
+      <label>Input #2</label>
+    </about>
+  </string>
+  <number id="e">
+    <about>
+      <label>Mass</label>
+    </about>
+    <units>kg</units>
+    <default>10g</default>
+  </number>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/loader/tool2.xml
===================================================================
--- /tags/1.6.0/examples/zoo/loader/tool2.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/loader/tool2.xml	(revision 6168)
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>loader</title>
+  <about>Example of a Rappture &lt;loader&gt; object.
+
+A loader is used to load values into the interface from example files.  The example files have the same format as the tool.xml file that they are being loaded into.  In fact, they can be generated by running the tool and saving the output run.xml file.  In you look in the example files, you'll see that each one also has an &lt;about&gt; section with a label and a description.  These show up in the loader control.
+
+The description appears in a tooltip when you hover over the loader control with your mouse.
+
+You can see the real action here by selecting various examples from the loader.  The simulate button doesn't do very much.  It just copies the inputs to the output log.
+  </about>
+  <command>
+    tclsh @tool/loader.tcl @driver
+  </command>
+</tool>
+<input>
+  <loader>
+    <about>
+      <label>Example</label>
+      <description>Use this to load examples.</description>
+    </about>
+    <upload>
+      <to>input.string(one)</to>
+      <prompt>Upload Input #1.</prompt>
+    </upload>
+    <download>
+      <from>input.string(one)</from>
+    </download>
+    <new>new.xml</new>
+    <example>*.xml</example>
+    <default>new.xml</default>
+  </loader>
+
+  <string id="one">
+    <about>
+      <label>Input #1</label>
+    </about>
+  </string>
+  <string id="two">
+    <about>
+      <label>Input #2</label>
+    </about>
+  </string>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/log/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/log/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/log/Makefile.in	(revision 6168)
@@ -0,0 +1,37 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/log.tcl \
+		$(srcdir)/log.gif \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/log
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/log/log.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/log/log.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/log/log.tcl	(revision 6168)
@@ -0,0 +1,48 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <log> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+$driver put output.log "****** ADEPT/F - 2.1   input file: adp20638      Sat Jul 30 19:39:36 2005 ******
+
+   1 *title  input generated by adeptwr
+            
+   2 mesh  nx=250 xres=0.5
+   3 misc  tempk=300
+                
+   4 * layer Al(0.3)Ga(0.7)As
+   5 layer tm=0.2 nd=1e+17
+   6 +     eg=1.797 chi=3.827 ks=11.9
+   7 +     nc=8.57e+17 nv=1.11e+19
+   8 +     eaa=-1.0 ead=-1.0
+   9 +     taun.shr=1.0e-9 taup.shr=1.0e-9 et.shr=0.0
+  10 +     un=1000. vsatn=1.0e7 up=100. vsatp=1.0e7
+
+  11 * layer GaAs
+  12 layer tm=0.2  na=1e+17
+  13 +     eg=1.422 chi=4.070 ks=12.847
+  14 +     nc=4.62e+17 nv=9.42e+18
+  15 +     eaa=-1.0 ead=-1.0
+  16 +     taun.shr=1.0e-9 taup.shr=1.0e-9 et.shr=0.0
+  17 +     un=1000. vsatn=1.0e7 up=100. vsatp=1.0e7
+
+  18 solve  itmax=100
+  19 output  info=0 step=1
+
+
+
+
+ ******execution time =        0.1 cpu seconds."
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/log/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/log/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/log/test/defaults.xml	(revision 6168)
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>log</title>
+        <about>Example of Rappture &lt;log&gt; output.
+
+Each run can produce an output log--a textual record of simulation results.
+
+When you click the Simulate button, this tool will produce a single &lt;log&gt; element.
+  </about>
+        <command>
+    tclsh @tool/log.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input/>
+    <output>
+        <log>****** ADEPT/F - 2.1   input file: adp20638      Sat Jul 30 19:39:36 2005 ******
+
+   1 *title  input generated by adeptwr
+            
+   2 mesh  nx=250 xres=0.5
+   3 misc  tempk=300
+                
+   4 * layer Al(0.3)Ga(0.7)As
+   5 layer tm=0.2 nd=1e+17
+   6 +     eg=1.797 chi=3.827 ks=11.9
+   7 +     nc=8.57e+17 nv=1.11e+19
+   8 +     eaa=-1.0 ead=-1.0
+   9 +     taun.shr=1.0e-9 taup.shr=1.0e-9 et.shr=0.0
+  10 +     un=1000. vsatn=1.0e7 up=100. vsatp=1.0e7
+
+  11 * layer GaAs
+  12 layer tm=0.2  na=1e+17
+  13 +     eg=1.422 chi=4.070 ks=12.847
+  14 +     nc=4.62e+17 nv=9.42e+18
+  15 +     eaa=-1.0 ead=-1.0
+  16 +     taun.shr=1.0e-9 taup.shr=1.0e-9 et.shr=0.0
+  17 +     un=1000. vsatn=1.0e7 up=100. vsatp=1.0e7
+
+  18 solve  itmax=100
+  19 output  info=0 step=1
+
+
+
+
+ ******execution time =        0.1 cpu seconds.</log>
+        <time>Wed Dec 10 01:49:59 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/log/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/log/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/log/tool.xml	(revision 6168)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>log</title>
+  <about>Example of Rappture &lt;log&gt; output.
+
+Each run can produce an output log--a textual record of simulation results.
+
+When you click the Simulate button, this tool will produce a single &lt;log&gt; element.
+  </about>
+  <command>
+    tclsh @tool/log.tcl @driver
+  </command>
+</tool>
+<input>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/mesh/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/Makefile.in	(revision 6168)
@@ -0,0 +1,45 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/file.vtk \
+		$(srcdir)/mesh.m \
+		$(srcdir)/mesh.py \
+		$(srcdir)/mesh.tcl \
+		$(srcdir)/mesh.vtk \
+		$(srcdir)/particle_data.txt \
+		$(srcdir)/points.txt \
+		$(srcdir)/substrate_data.txt \
+		$(srcdir)/tool.xml \
+		$(srcdir)/tool_octave.xml \
+		$(srcdir)/triangles.txt
+
+destdir		= $(prefix)/examples/zoo/mesh
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/mesh/file.vtk
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/file.vtk	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/file.vtk	(revision 6168)
@@ -0,0 +1,16 @@
+# vtk DataFile Version 3.0
+Mesh-grid-irregular (Substrate Surface)
+ASCII
+DATASET RECTILINEAR_GRID
+DIMENSIONS 50 50 1
+X_COORDINATES 50 double
+0.0 0.0204082 0.0408163 0.0612245 0.0816327 0.102041 0.122449 0.142857 0.163265 0.183673 0.204082 0.22449 0.244898 0.265306 0.285714 0.306122 0.326531 0.346939 0.367347 0.387755 0.408163 0.428571 0.44898 0.469388 0.489796 0.510204 0.530612 0.55102 0.571429 0.591837 0.612245 0.632653 0.653061 0.673469 0.693878 0.714286 0.734694 0.755102 0.77551 0.795918 0.816327 0.836735 0.857143 0.877551 0.897959 0.918367 0.938776 0.959184 0.979592 1.0
+Y_COORDINATES 50 double
+0.0 0.0204082 0.0408163 0.0612245 0.0816327 0.102041 0.122449 0.142857 0.163265 0.183673 0.204082 0.22449 0.244898 0.265306 0.285714 0.306122 0.326531 0.346939 0.367347 0.387755 0.408163 0.428571 0.44898 0.469388 0.489796 0.510204 0.530612 0.55102 0.571429 0.591837 0.612245 0.632653 0.653061 0.673469 0.693878 0.714286 0.734694 0.755102 0.77551 0.795918 0.816327 0.836735 0.857143 0.877551 0.897959 0.918367 0.938776 0.959184 0.979592 1.0
+Z_COORDINATES 1 double
+0
+POINT_DATA 2500
+SCALARS mycomponent float
+LOOKUP_TABLE default
+0.143588 0.11341 0.104264 0.119749 0.148021 0.195553 0.209402 0.132308 0.0634601 0.0574183 0.0550705 0.0341862 0.0239724 0.0343367 0.0490282 0.0629045 0.0890553 0.135098 0.157703 0.144812 0.15334 0.192826 0.209467 0.199057 0.183292 0.162792 0.118336 0.0504828 -0.0260269 -0.111403 -0.208102 -0.309079 -0.342946 -0.330114 -0.360803 -0.413487 -0.443082 -0.448882 -0.39621 -0.305302 -0.214608 -0.123465 -0.0521522 0.0089 0.0655394 0.125944 0.213505 0.305039 0.376121 0.434041 0.176364 0.124633 0.100831 0.113464 0.134145 0.145236 0.140349 0.10428 0.0652967 0.0360557 0.0129976 -0.00588058 -0.00689152 0.0213186 0.0405548 0.0350828 0.0467763 0.0896392 0.111711 0.100118 0.112307 0.158656 0.171984 0.146425 0.124065 0.106233 0.0472187 -0.0509425 -0.12825 -0.188522 -0.262683 -0.34097 -0.341474 -0.288635 -0.295191 -0.332319 -0.329 -0.296585 -0.233481 -0.149515 -0.0731807 0.00218122 0.0843729 0.158206 0.17992 0.197852 0.298438 0.403306 0.432723 0.410474 0.192203 0.116851 0.080368 0.0964003 0.11928 0.110877 0.0963445 0.0866633 0.0674071 0.0251606 -0.00563648 -0.0107612 0.00336841 0.0444977 0.06808 0.0533521 0.0597247 0.105537 0.131645 0.124834 0.137926 0.180518 0.187953 0.154407 0.124816 0.100622 0.0309098 -0.0818141 -0.163497 -0.218575 -0.277122 -0.331869 -0.323988 -0.272845 -0.273892 -0.300173 -0.277419 -0.221301 -0.14448 -0.0538791 0.0214576 0.0915069 0.174534 0.247192 0.249525 0.24404 0.340335 0.439476 0.440997 0.374866 0.191858 0.0808864 0.030375 0.0610842 0.103532 0.0990546 0.0882978 0.0903567 0.079188 0.0309421 0.00609098 0.035703 0.0778968 0.127504 0.155277 0.142019 0.154429 0.21397 0.251957 0.254705 0.26534 0.290714 0.289356 0.257752 0.219632 0.175736 0.0997973 -0.00661713 -0.0992649 -0.178889 -0.231396 -0.260089 -0.282486 -0.298586 -0.325016 -0.350087 -0.327235 -0.265941 -0.166759 -0.0453191 0.0507108 0.131539 0.200699 0.250988 0.255084 0.252492 0.319736 0.385741 0.377476 0.316727 0.17268 0.0474733 -0.00725038 0.0325196 0.0864384 0.0876407 0.0795426 0.078591 0.0688291 0.0323878 0.0248657 0.0792162 0.138958 0.190979 0.222682 0.219591 0.242011 0.310479 0.357232 0.370011 0.376833 0.380988 0.368971 0.339969 0.294227 0.231717 0.151982 0.0555896 -0.0445176 -0.145501 -0.192633 -0.198272 -0.243738 -0.312738 -0.354298 -0.371224 -0.347932 -0.286522 -0.174332 -0.0335239 0.0769608 0.165829 0.222046 0.253047 0.261313 0.26364 0.302022 0.335452 0.320966 0.271384 0.122194 0.0436251 0.0078948 0.0310405 0.059397 0.0483468 0.0265039 -0.00353355 -0.0199852 -0.00719269 0.0191757 0.0562699 0.0984401 0.145545 0.184012 0.205447 0.239797 0.297872 0.340636 0.362208 0.364848 0.347624 0.321124 0.286385 0.235366 0.167828 0.0851787 -0.0118883 -0.106221 -0.195293 -0.226906 -0.212809 -0.229322 -0.261996 -0.266606 -0.247843 -0.20201 -0.131376 -0.0357127 0.0739467 0.164877 0.24193 0.302111 0.341677 0.340987 0.329242 0.362745 0.390268 0.359635 0.28641 0.0793604 0.0480204 0.0336995 0.045446 0.0529616 0.0293533 -0.00331657 -0.0477522 -0.0615519 -0.00634458 0.0460305 0.0628817 0.0832634 0.118564 0.155048 0.189704 0.226918 0.269147 0.30291 0.327629 0.327193 0.29805 0.263014 0.22397 0.170351 0.101872 0.0176605 -0.0812759 -0.166914 -0.238215 -0.261332 -0.243475 -0.227682 -0.208061 -0.173125 -0.12465 -0.0643217 0.00654067 0.084661 0.165809 0.234593 0.295348 0.357326 0.403866 0.390969 0.362124 0.390292 0.413269 0.369518 0.277388 0.0894945 0.0675846 0.0650371 0.093813 0.11379 0.0836278 0.0534824 0.045323 0.0617603 0.120711 0.16923 0.180407 0.187718 0.200042 0.211235 0.219447 0.233398 0.256336 0.277322 0.296157 0.298825 0.282956 0.258482 0.226359 0.176938 0.109929 0.0223025 -0.0845028 -0.166769 -0.226077 -0.262763 -0.275771 -0.249758 -0.192166 -0.139852 -0.0885083 -0.0436088 0.00234876 0.0805941 0.172241 0.233846 0.280465 0.335454 0.375793 0.350235 0.305486 0.313931 0.321294 0.277412 0.197231 0.059091 0.0445019 0.0515602 0.0938728 0.125756 0.0968684 0.0763211 0.105242 0.150045 0.206483 0.251566 0.271951 0.27966 0.274823 0.268722 0.263663 0.266454 0.28095 0.2915 0.296065 0.292284 0.279953 0.255566 0.218973 0.166093 0.0967506 0.016616 -0.0733512 -0.141948 -0.191168 -0.237743 -0.274884 -0.242457 -0.158504 -0.100119 -0.0562731 -0.0265416 0.000413576 0.0760895 0.171951 0.226211 0.25811 0.289426 0.303694 0.264812 0.210071 0.199388 0.188979 0.139014 0.0613572 -0.0898262 -0.0841566 -0.0669282 -0.0295396 -0.000910778 -0.0163032 -0.0196861 0.025559 0.0841066 0.145952 0.205595 0.262778 0.297741 0.295149 0.300524 0.327965 0.359086 0.395241 0.405652 0.38317 0.347932 0.301973 0.241529 0.165935 0.0863936 0.00312908 -0.0437208 -0.0559361 -0.0856502 -0.129457 -0.171787 -0.207032 -0.166713 -0.072493 -0.0213164 0.00534854 0.0359713 0.070465 0.129452 0.19728 0.241034 0.26098 0.234392 0.180801 0.12544 0.0724498 0.0519983 0.0258364 -0.0497211 -0.161626 -0.193914 -0.171355 -0.148444 -0.122901 -0.102448 -0.101243 -0.0871622 -0.0362023 0.0248082 0.0851291 0.151345 0.233526 0.286316 0.281167 0.295625 0.356932 0.409905 0.447978 0.448485 0.403457 0.347118 0.283268 0.206117 0.114787 0.0237147 -0.0668476 -0.0930444 -0.0581634 -0.0600652 -0.0921267 -0.114796 -0.126212 -0.0794404 0.0079229 0.0506491 0.0674511 0.0965845 0.132487 0.180083 0.228486 0.251608 0.246542 0.18042 0.0875901 0.025785 -0.0243031 -0.0610801 -0.109749 -0.206441 -0.340341 -0.177776 -0.143664 -0.120935 -0.11482 -0.107838 -0.0870309 -0.0560541 -0.0119557 0.0359037 0.0809464 0.133675 0.208657 0.250068 0.221595 0.228287 0.313088 0.362124 0.34957 0.313602 0.255242 0.204236 0.165464 0.122631 0.0751306 0.010886 -0.0707422 -0.110681 -0.110529 -0.115667 -0.122452 -0.0989142 -0.0499026 0.00192243 0.0559809 0.0944389 0.121044 0.137611 0.15177 0.206211 0.267891 0.250573 0.190562 0.131873 0.0706987 0.0248895 -0.022235 -0.0914708 -0.177587 -0.281354 -0.40252 -0.125145 -0.0980028 -0.0835445 -0.0894106 -0.0900139 -0.062311 -0.0263584 0.0108551 0.0470309 0.0763641 0.113538 0.174737 0.205832 0.171755 0.175954 0.263825 0.302516 0.257296 0.204949 0.153684 0.118954 0.104994 0.0894556 0.0716926 0.0277969 -0.0432475 -0.0946393 -0.126354 -0.132863 -0.114212 -0.0605309 0.0213388 0.0750548 0.109265 0.144929 0.176997 0.186548 0.187107 0.234782 0.289226 0.241435 0.148261 0.102204 0.0692814 0.0271036 -0.0297919 -0.127458 -0.241056 -0.344874 -0.446581 -0.0414384 -0.0537945 -0.0610736 -0.0637601 -0.0602443 -0.0500791 -0.0307986 0.00390977 0.0356103 0.0504897 0.0721099 0.115314 0.14546 0.143623 0.160295 0.218856 0.244195 0.214238 0.190205 0.181722 0.175919 0.173205 0.157037 0.126143 0.079277 0.0162253 -0.0331187 -0.0680959 -0.0617406 -0.017583 0.0313561 0.0861612 0.138666 0.187898 0.220313 0.239524 0.253827 0.262605 0.274207 0.275419 0.219587 0.139252 0.100961 0.0694834 0.00183652 -0.088244 -0.203304 -0.323044 -0.418865 -0.499326 0.000523232 -0.0330398 -0.050892 -0.0492316 -0.0408112 -0.0387763 -0.0269777 0.00842731 0.0414987 0.0552531 0.0761766 0.118451 0.154761 0.17419 0.195938 0.22887 0.240532 0.218941 0.209218 0.220248 0.229426 0.236121 0.219505 0.177174 0.12832 0.0734161 0.0318803 0.00433913 0.0167278 0.0648523 0.102918 0.135613 0.179293 0.229743 0.269439 0.300226 0.322827 0.333121 0.31368 0.271251 0.211578 0.144322 0.106009 0.0672083 -0.0204397 -0.133852 -0.262372 -0.387778 -0.479143 -0.545736 -0.03471 -0.0495045 -0.0565592 -0.0557486 -0.0475051 -0.0331682 -0.00889854 0.0306389 0.0727237 0.107665 0.153599 0.225918 0.279776 0.295232 0.307567 0.329149 0.326943 0.289362 0.259682 0.244325 0.243966 0.262296 0.25347 0.213147 0.169275 0.122541 0.0952552 0.0870566 0.0897536 0.103514 0.129282 0.164941 0.186951 0.204422 0.270686 0.362423 0.398614 0.394514 0.356112 0.291905 0.228328 0.163379 0.112367 0.0573042 -0.0338383 -0.148153 -0.287901 -0.4254 -0.521082 -0.586792 -0.0579288 -0.0739295 -0.0740185 -0.0553837 -0.0274365 0.00184883 0.038118 0.0854207 0.134742 0.178325 0.233485 0.317894 0.375338 0.379489 0.380294 0.393767 0.385492 0.345411 0.304951 0.266652 0.251797 0.266981 0.255465 0.212035 0.171586 0.135028 0.118652 0.121886 0.129139 0.141031 0.159833 0.184267 0.197946 0.210244 0.283528 0.388935 0.421945 0.406197 0.367178 0.307039 0.243594 0.175994 0.117276 0.0519534 -0.0483608 -0.170652 -0.315441 -0.455342 -0.550498 -0.61284 -0.046885 -0.104995 -0.108942 -0.0414277 0.0396516 0.0854325 0.129717 0.188516 0.239837 0.268577 0.304384 0.368717 0.406688 0.391895 0.380451 0.389927 0.388309 0.369819 0.337747 0.288998 0.256499 0.246866 0.216171 0.160015 0.118973 0.0942542 0.0800356 0.0769986 0.112803 0.181193 0.201249 0.186642 0.214073 0.270004 0.318034 0.35765 0.361892 0.342089 0.328742 0.308041 0.247851 0.168223 0.11241 0.049754 -0.0718059 -0.218375 -0.36116 -0.489032 -0.574069 -0.62466 -0.0486445 -0.109242 -0.107803 -0.0234058 0.0739035 0.123167 0.171976 0.246861 0.30813 0.330963 0.355537 0.404905 0.430648 0.410798 0.390658 0.382149 0.374223 0.368284 0.343528 0.293297 0.251396 0.223275 0.178287 0.11261 0.0773723 0.0742238 0.0816055 0.100203 0.157289 0.245783 0.269705 0.24661 0.282822 0.355823 0.385549 0.385087 0.365926 0.33446 0.326589 0.323164 0.282368 0.219883 0.159842 0.0829312 -0.0505009 -0.20494 -0.339403 -0.456051 -0.541435 -0.599623 -0.0663456 -0.0702176 -0.0497794 0.00320955 0.06109 0.0939543 0.141898 0.239915 0.323742 0.35544 0.382941 0.428137 0.454091 0.448533 0.423842 0.376649 0.341957 0.331916 0.309921 0.26896 0.229669 0.195104 0.144309 0.0733093 0.0535841 0.0875171 0.146288 0.228684 0.294974 0.346546 0.377355 0.391745 0.426912 0.473691 0.499206 0.504934 0.471686 0.414686 0.379718 0.358105 0.36076 0.359889 0.284388 0.166928 0.0354382 -0.102732 -0.221355 -0.33069 -0.434993 -0.533015 -0.131392 -0.100567 -0.0642686 -0.0217909 0.0244364 0.066951 0.127002 0.231045 0.321267 0.36293 0.397361 0.441683 0.471282 0.481989 0.460896 0.392967 0.349088 0.351218 0.339139 0.302956 0.260653 0.21347 0.159105 0.095306 0.0812181 0.118835 0.194474 0.305706 0.373069 0.402341 0.43131 0.458512 0.494352 0.533463 0.550312 0.547231 0.515002 0.463747 0.423623 0.393309 0.400935 0.408354 0.323382 0.192139 0.0617909 -0.0680325 -0.176282 -0.271326 -0.356705 -0.43138 -0.253921 -0.221251 -0.174305 -0.112173 -0.0378554 0.0496034 0.139515 0.228339 0.304154 0.356046 0.401108 0.447322 0.48358 0.511642 0.504245 0.439823 0.411039 0.448546 0.456349 0.417932 0.363437 0.293065 0.235894 0.193934 0.171221 0.167895 0.214312 0.307791 0.367599 0.398041 0.413828 0.418545 0.458377 0.517478 0.517768 0.481001 0.467412 0.462685 0.447975 0.424004 0.38523 0.328926 0.243418 0.135149 0.00315172 -0.131289 -0.23687 -0.308165 -0.324439 -0.291932 -0.345173 -0.304682 -0.245549 -0.164869 -0.072277 0.0308279 0.125771 0.196514 0.258357 0.316175 0.370193 0.423516 0.46649 0.501407 0.496495 0.427449 0.396772 0.437656 0.449023 0.413396 0.364232 0.301844 0.259383 0.239802 0.230338 0.230593 0.271768 0.351606 0.402922 0.429068 0.437772 0.433887 0.471324 0.533104 0.538345 0.509657 0.511856 0.526423 0.521356 0.499572 0.453169 0.383658 0.287274 0.171773 0.0444802 -0.0795167 -0.178468 -0.238024 -0.228251 -0.158132 -0.398042 -0.340883 -0.267141 -0.170135 -0.0721872 0.0109202 0.0810474 0.130859 0.179926 0.239055 0.30025 0.366562 0.416247 0.446205 0.430478 0.345937 0.29243 0.298828 0.294467 0.267547 0.244022 0.225587 0.217733 0.22043 0.250423 0.308363 0.374832 0.448707 0.490903 0.504784 0.513598 0.518554 0.546087 0.589512 0.625295 0.654539 0.668686 0.669278 0.653786 0.628066 0.621357 0.600711 0.480661 0.320654 0.205348 0.109842 0.0226526 -0.0392263 -0.0553255 -0.0317622 -0.443506 -0.379394 -0.303784 -0.212632 -0.119435 -0.0323243 0.0447503 0.104429 0.158537 0.21046 0.266772 0.338428 0.389848 0.412878 0.38887 0.296344 0.23312 0.225952 0.218854 0.202957 0.19875 0.208512 0.223133 0.241365 0.284405 0.353032 0.417897 0.478615 0.518386 0.539255 0.559266 0.577956 0.601979 0.630118 0.662142 0.69395 0.703781 0.698826 0.692537 0.684222 0.693585 0.685866 0.562173 0.394128 0.288739 0.207162 0.122939 0.0584627 0.0360606 0.0490742 -0.482464 -0.421679 -0.3575 -0.295263 -0.217017 -0.0999134 0.0180252 0.119726 0.197403 0.233382 0.27232 0.341248 0.389262 0.403668 0.37435 0.281836 0.223016 0.225037 0.229224 0.226599 0.234599 0.255224 0.279206 0.306029 0.333981 0.362967 0.397471 0.437411 0.481759 0.529841 0.572436 0.609574 0.636947 0.653503 0.645382 0.620817 0.609509 0.608668 0.632549 0.664021 0.663671 0.629885 0.52364 0.386377 0.288583 0.205354 0.114767 0.0477109 0.0407189 0.0828753 -0.471338 -0.40681 -0.343584 -0.287829 -0.21885 -0.115156 -0.00301581 0.113668 0.203403 0.236395 0.266792 0.322011 0.358872 0.366716 0.340207 0.263902 0.21931 0.229782 0.243135 0.251963 0.265155 0.283765 0.298248 0.307499 0.323679 0.347162 0.376216 0.410893 0.454456 0.505461 0.545038 0.574816 0.600587 0.618021 0.596252 0.54937 0.52496 0.517392 0.541857 0.578246 0.575406 0.541318 0.462244 0.357537 0.255963 0.161565 0.0896188 0.0477881 0.0536291 0.10187 -0.411076 -0.33655 -0.264715 -0.194534 -0.129564 -0.0799672 -0.0175533 0.0880681 0.178562 0.220842 0.25111 0.282266 0.300407 0.302875 0.28643 0.24189 0.221059 0.239424 0.25983 0.27795 0.289484 0.293979 0.281407 0.248834 0.256798 0.307404 0.354675 0.398638 0.436233 0.467094 0.479702 0.478238 0.497832 0.527792 0.517818 0.481499 0.451832 0.42729 0.42444 0.432765 0.4338 0.423024 0.379333 0.30801 0.192174 0.0782599 0.0487671 0.0584193 0.0744736 0.106649 -0.316896 -0.252099 -0.190057 -0.129265 -0.0748553 -0.0389343 0.00978456 0.102236 0.184083 0.22799 0.254904 0.271271 0.266102 0.229465 0.199592 0.185905 0.19127 0.221496 0.244988 0.256259 0.262363 0.264374 0.247739 0.2087 0.225577 0.301156 0.358353 0.397723 0.428114 0.449459 0.460502 0.463672 0.483881 0.513283 0.516857 0.500998 0.47074 0.43352 0.425123 0.428664 0.414117 0.384259 0.330339 0.255287 0.141945 0.0399194 0.0449898 0.0883097 0.108004 0.122499 -0.195197 -0.156798 -0.120154 -0.088951 -0.0508427 0.00513513 0.0700223 0.146602 0.211377 0.251001 0.272459 0.282004 0.250482 0.148602 0.0866026 0.101877 0.134524 0.179604 0.202759 0.193752 0.191872 0.202346 0.202108 0.187423 0.227479 0.324809 0.384184 0.407122 0.42908 0.449668 0.480752 0.519257 0.545717 0.563045 0.581109 0.593615 0.567581 0.522714 0.526407 0.543147 0.496439 0.412132 0.309178 0.198749 0.102926 0.0401951 0.0722016 0.132758 0.150065 0.145555 -0.151977 -0.124032 -0.101877 -0.0926015 -0.0724365 -0.0176665 0.0447893 0.103926 0.157096 0.203936 0.23087 0.234287 0.200507 0.106256 0.0506258 0.0678507 0.103054 0.152507 0.177613 0.16587 0.174232 0.211193 0.235893 0.244075 0.286959 0.366358 0.40888 0.416156 0.429044 0.447238 0.490818 0.552537 0.578503 0.578811 0.585955 0.592674 0.579263 0.554835 0.552031 0.547376 0.481276 0.377711 0.255618 0.134655 0.0628512 0.0327789 0.0691979 0.124068 0.13721 0.126614 -0.169464 -0.141221 -0.125654 -0.131525 -0.129477 -0.0919729 -0.0460517 -0.00501783 0.0407704 0.102468 0.142206 0.139761 0.121684 0.089802 0.068855 0.0660602 0.084139 0.129896 0.15932 0.159722 0.192834 0.2694 0.325704 0.356749 0.387294 0.418024 0.429638 0.42319 0.427485 0.442675 0.493626 0.569948 0.591331 0.572158 0.549826 0.5251 0.53014 0.546596 0.523921 0.472928 0.39658 0.29932 0.181248 0.0695731 0.0269453 0.0242537 0.0469786 0.07773 0.0852668 0.0789566 -0.149442 -0.142211 -0.137868 -0.13958 -0.136763 -0.121131 -0.0964986 -0.0629611 -0.021868 0.0355592 0.067738 0.0489838 0.0228631 0.00110328 -0.0177817 -0.0367849 -0.0275899 0.021447 0.0652756 0.0933806 0.148432 0.23842 0.309832 0.359007 0.388228 0.397349 0.403132 0.405879 0.414075 0.429336 0.488768 0.579994 0.612505 0.60101 0.577216 0.545282 0.551767 0.572753 0.544257 0.480961 0.386825 0.273574 0.163368 0.0708519 0.0449507 0.0555689 0.0779148 0.103825 0.11135 0.107087 -0.110523 -0.135577 -0.144246 -0.130079 -0.114735 -0.121771 -0.119466 -0.086223 -0.0482437 -0.00803882 0.00350115 -0.036706 -0.0848511 -0.129915 -0.166884 -0.197294 -0.19084 -0.135535 -0.0727208 -0.0089163 0.0634754 0.14625 0.219733 0.283128 0.31811 0.323874 0.340819 0.368379 0.389537 0.407871 0.475053 0.57809 0.630841 0.645202 0.639487 0.617833 0.614044 0.614059 0.588727 0.536114 0.420566 0.278654 0.181814 0.117632 0.0997687 0.112439 0.141068 0.17285 0.1831 0.179223 -0.116795 -0.136331 -0.149095 -0.154609 -0.154493 -0.151229 -0.139804 -0.115089 -0.0865207 -0.0506689 -0.0399236 -0.0759137 -0.120206 -0.165562 -0.194783 -0.202267 -0.184787 -0.137758 -0.0860778 -0.0339654 0.022802 0.0845257 0.151551 0.225413 0.262314 0.260625 0.277473 0.311985 0.340171 0.365244 0.42895 0.520826 0.570662 0.588913 0.59764 0.595629 0.590994 0.578562 0.548508 0.493871 0.370563 0.224069 0.149705 0.116972 0.113441 0.129315 0.145596 0.159195 0.157798 0.145111 -0.152442 -0.142575 -0.151561 -0.193579 -0.22107 -0.185477 -0.144881 -0.133168 -0.118644 -0.0824933 -0.0631084 -0.0798495 -0.105114 -0.137785 -0.145184 -0.111468 -0.0766267 -0.0479863 -0.0253042 -0.0109989 0.0114615 0.0431909 0.0983521 0.18057 0.219193 0.211736 0.223108 0.252625 0.28529 0.322082 0.375399 0.439912 0.472061 0.481006 0.500665 0.521766 0.519813 0.498247 0.459401 0.396905 0.273959 0.136233 0.088246 0.0866546 0.0978401 0.114492 0.106981 0.0892818 0.0696921 0.0457579 -0.178533 -0.151191 -0.142982 -0.168636 -0.178699 -0.118438 -0.0635917 -0.0620224 -0.065824 -0.053357 -0.0501707 -0.0673616 -0.0874396 -0.109589 -0.112398 -0.0840256 -0.0606999 -0.051876 -0.0366413 -0.0114593 0.0124377 0.0313616 0.0886223 0.190495 0.246625 0.253998 0.267122 0.286283 0.328918 0.391855 0.4424 0.48201 0.50174 0.50586 0.51767 0.529418 0.517542 0.486545 0.445124 0.381908 0.244957 0.0901404 0.043793 0.0486297 0.0502382 0.0515705 0.0284376 0.00181135 -0.00759184 -0.00594917 -0.20124 -0.165341 -0.134779 -0.11715 -0.0868528 -0.00782838 0.0528146 0.0485292 0.0268365 0.00384841 -0.0218181 -0.0494857 -0.0716443 -0.0848509 -0.0924768 -0.0941081 -0.0969144 -0.106959 -0.086997 -0.0259887 0.0197455 0.0397061 0.106016 0.226971 0.305937 0.339851 0.358639 0.364024 0.419626 0.51704 0.569838 0.587061 0.597846 0.599617 0.592163 0.574695 0.543254 0.499745 0.45743 0.397784 0.246778 0.0711595 0.0156827 0.0131373 -0.00644392 -0.0276314 -0.0611074 -0.0858642 -0.0756631 -0.0383482 -0.225501 -0.206052 -0.182099 -0.158201 -0.118928 -0.0374016 0.0274433 0.0365974 0.0200642 -0.0191121 -0.0592497 -0.0899203 -0.113039 -0.126494 -0.136696 -0.145144 -0.153784 -0.168515 -0.145658 -0.0724826 -0.00946832 0.0344439 0.100702 0.193589 0.266781 0.318888 0.341628 0.337876 0.406249 0.534502 0.597258 0.608539 0.620812 0.626612 0.607408 0.566203 0.502542 0.424695 0.371293 0.320023 0.206522 0.0808696 0.0492107 0.0575771 0.0448596 0.0246042 -0.0107711 -0.0478296 -0.0701415 -0.0826178 -0.24412 -0.249074 -0.242248 -0.226174 -0.192242 -0.122223 -0.0605157 -0.0320971 -0.0336188 -0.077653 -0.123712 -0.154554 -0.178687 -0.196342 -0.208178 -0.214072 -0.217593 -0.224206 -0.195688 -0.12175 -0.0445045 0.0327721 0.0947755 0.13928 0.191164 0.251302 0.277179 0.272218 0.350255 0.497291 0.569293 0.582566 0.600537 0.612401 0.584449 0.522276 0.424151 0.306564 0.234871 0.188285 0.134589 0.0910489 0.0933827 0.114725 0.11829 0.107635 0.0723922 0.0161085 -0.060355 -0.157245 -0.223491 -0.211315 -0.188624 -0.152098 -0.112809 -0.0767037 -0.0494697 -0.0329942 -0.0395604 -0.0846181 -0.131181 -0.165508 -0.188764 -0.196748 -0.203664 -0.216437 -0.213415 -0.190747 -0.145531 -0.074634 0.000739284 0.0797974 0.139322 0.176725 0.212511 0.247268 0.276993 0.302986 0.373434 0.480242 0.530202 0.534988 0.546794 0.554658 0.51717 0.44285 0.342438 0.224508 0.123136 0.0395963 0.00270824 -0.00529123 -0.0109238 -0.014267 -0.0244803 -0.0481842 -0.103362 -0.179606 -0.269029 -0.373974 -0.199204 -0.152763 -0.102703 -0.0403782 0.00522814 0.00563038 -0.00777488 -0.0179128 -0.0389953 -0.079501 -0.120816 -0.158257 -0.181898 -0.183091 -0.18716 -0.207788 -0.195146 -0.134276 -0.0659223 0.0048492 0.0745476 0.14297 0.20133 0.249377 0.271222 0.266099 0.296435 0.360577 0.416548 0.46435 0.480894 0.471383 0.471023 0.469927 0.423526 0.343027 0.256121 0.157581 0.0303653 -0.0980366 -0.139009 -0.138909 -0.170477 -0.212194 -0.249386 -0.296171 -0.377318 -0.470051 -0.551056 -0.627289 -0.261635 -0.202383 -0.148248 -0.0969586 -0.0560714 -0.0282533 -0.0226524 -0.0533951 -0.0901004 -0.116818 -0.145361 -0.178452 -0.214812 -0.258141 -0.28887 -0.306204 -0.280686 -0.199974 -0.106221 -0.00334101 0.0880343 0.165125 0.227957 0.276978 0.290071 0.266244 0.279162 0.327493 0.383303 0.443831 0.452366 0.419249 0.405768 0.398458 0.344287 0.257353 0.175254 0.0902086 -0.0146068 -0.119809 -0.165418 -0.183395 -0.223431 -0.273273 -0.329967 -0.39671 -0.484859 -0.573831 -0.638078 -0.685237 -0.349032 -0.283207 -0.233461 -0.207201 -0.179469 -0.115338 -0.0796533 -0.125744 -0.174561 -0.185497 -0.199247 -0.223989 -0.273326 -0.367718 -0.428593 -0.434513 -0.394266 -0.303664 -0.188594 -0.0482633 0.0686154 0.155597 0.221835 0.268083 0.276378 0.245912 0.239347 0.256716 0.31614 0.409212 0.420905 0.368734 0.343147 0.328038 0.270016 0.183453 0.105805 0.0327196 -0.0304523 -0.0861445 -0.137706 -0.185516 -0.228701 -0.275387 -0.34525 -0.426009 -0.51054 -0.586574 -0.633275 -0.656887 -0.365046 -0.280497 -0.226277 -0.208562 -0.206663 -0.201401 -0.211225 -0.252951 -0.289401 -0.297161 -0.306764 -0.32484 -0.365679 -0.450164 -0.496946 -0.481402 -0.428264 -0.337711 -0.226907 -0.0940688 0.0122381 0.0851019 0.141982 0.184281 0.192901 0.167027 0.169751 0.200449 0.253532 0.324215 0.340023 0.31109 0.283207 0.250793 0.204087 0.145736 0.0798557 0.0123103 -0.0272025 -0.0541343 -0.101412 -0.157525 -0.208544 -0.261792 -0.327868 -0.399823 -0.472696 -0.541382 -0.596396 -0.640584 -0.359744 -0.26078 -0.204477 -0.193339 -0.219158 -0.288712 -0.357424 -0.393762 -0.416593 -0.427363 -0.435519 -0.442767 -0.463431 -0.514784 -0.53094 -0.490408 -0.423451 -0.332352 -0.230985 -0.117998 -0.0346298 0.0124112 0.0496044 0.0788359 0.0875322 0.0751588 0.0971616 0.151919 0.196633 0.23216 0.250918 0.252635 0.224409 0.173207 0.137633 0.107839 0.0546491 -0.00798646 -0.037128 -0.0531553 -0.0978752 -0.15657 -0.214207 -0.272787 -0.328619 -0.384785 -0.444279 -0.508013 -0.578536 -0.655083 -0.386794 -0.299965 -0.257448 -0.266141 -0.303023 -0.354023 -0.41346 -0.480966 -0.531518 -0.547973 -0.546476 -0.524154 -0.515901 -0.547381 -0.543141 -0.479688 -0.389376 -0.273438 -0.155319 -0.034328 0.0386267 0.0544968 0.0531967 0.0360243 0.0325845 0.043927 0.077626 0.132589 0.177723 0.213163 0.224929 0.213903 0.174355 0.11177 0.056571 0.00481499 -0.04264 -0.0879782 -0.137002 -0.191137 -0.262371 -0.339039 -0.395078 -0.443229 -0.497753 -0.554663 -0.611389 -0.673374 -0.747586 -0.831942 -0.409118 -0.351119 -0.331078 -0.360354 -0.400839 -0.41313 -0.445942 -0.541609 -0.620475 -0.643195 -0.633639 -0.584533 -0.549426 -0.560444 -0.539953 -0.466667 -0.359707 -0.214919 -0.0759561 0.0556665 0.121066 0.109001 0.0719402 0.0106367 -0.00594526 0.024728 0.0633788 0.109694 0.153435 0.192697 0.191648 0.155373 0.105119 0.0403171 -0.0345057 -0.113821 -0.160346 -0.19287 -0.265069 -0.358115 -0.447555 -0.530407 -0.581036 -0.618635 -0.671752 -0.730749 -0.791308 -0.854888 -0.921948 -0.992355 -0.393997 -0.376103 -0.382158 -0.420567 -0.463116 -0.479552 -0.509829 -0.587953 -0.653313 -0.678419 -0.67235 -0.624874 -0.58195 -0.566307 -0.535586 -0.483986 -0.387393 -0.229801 -0.0855552 0.0386139 0.0951935 0.073537 0.0315292 -0.0293102 -0.0484927 -0.0237457 0.00725476 0.0441152 0.0734777 0.0941065 0.076845 0.0274635 -0.0211319 -0.0727989 -0.1346 -0.201924 -0.252366 -0.295991 -0.362172 -0.437107 -0.49277 -0.538695 -0.583732 -0.627708 -0.672328 -0.722038 -0.792189 -0.86129 -0.904108 -0.928181 -0.351172 -0.386259 -0.423534 -0.463264 -0.504584 -0.549264 -0.588774 -0.616397 -0.639086 -0.664037 -0.670031 -0.644941 -0.608152 -0.561293 -0.525774 -0.521853 -0.456574 -0.296243 -0.156422 -0.0516312 -0.00392741 -0.0213611 -0.0459002 -0.0743266 -0.0890132 -0.0892019 -0.0766825 -0.0524587 -0.0471258 -0.0597394 -0.0973286 -0.155002 -0.193079 -0.21812 -0.243997 -0.273244 -0.332429 -0.405266 -0.445942 -0.463025 -0.445978 -0.421221 -0.459403 -0.521595 -0.552705 -0.585538 -0.67128 -0.749653 -0.753028 -0.701601
+
Index: /tags/1.6.0/examples/zoo/mesh/mesh.m
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/mesh.m	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/mesh.m	(revision 6168)
@@ -0,0 +1,181 @@
+
+% Open an XML run file to write into
+lib = rpLib(infile);
+
+meshtype = rpLibGetString(lib, 'input.choice(mesh).current');
+contour = rpLibGetString(lib, 'input.boolean(contour).current')
+switch contour 
+  case 'yes'
+    view = 'contour';
+  otherwise
+    view = 'heightmap';
+end
+
+switch meshtype 
+  case 'cloud' 
+    mesh = 'output.mesh';
+    rpLibPutString(lib, 'output.mesh.about.label', \
+		   'cloud in unstructured mesh', 0);
+    rpLibPutString(lib, 'output.mesh.dim', '2', 0);
+    rpLibPutString(lib, 'output.mesh.units', 'm', 0);
+    rpLibPutString(lib, 'output.mesh.hide', 'yes', 0);
+
+    xv = linspace(0, 1, 50)
+    for i = 1:50
+      for j = 1:50
+        string = sprintf('%12g  %12g\n', xv(i), xv(j));
+	rpLibPutString(lib, 'output.mesh.unstructured.points', string, 1);
+      endfor
+    endfor
+    rpLibPutString(lib, 'output.mesh.unstructured.celltypes', '', 0);
+
+  case 'regular' 
+    mesh = 'output.mesh';
+    rpLibPutString(lib, 'output.mesh.about.label', 'uniform grid mesh', 0);
+    rpLibPutString(lib, 'output.mesh.dim', '2', 0);
+    rpLibPutString(lib, 'output.mesh.units', 'm', 0);
+    rpLibPutString(lib, 'output.mesh.hide', 'yes', 0);
+
+    % Specify the x-axis of the mesh
+    rpLibPutString(lib, 'output.mesh.grid.xaxis.min', '0.0', 0);
+    rpLibPutString(lib, 'output.mesh.grid.xaxis.max', '1.0', 0);
+    rpLibPutString(lib, 'output.mesh.grid.xaxis.numpoints', '50', 0);
+    
+    % Specify the y-axis of the mesh
+    rpLibPutString(lib, 'output.mesh.grid.yaxis.min', '0.0', 0);
+    rpLibPutString(lib, 'output.mesh.grid.yaxis.max', '1.0', 0);
+    rpLibPutString(lib, 'output.mesh.grid.yaxis.numpoints', '50', 0);
+
+  case 'irregular' 
+    mesh = 'output.mesh';
+    rpLibPutString(lib, 'output.mesh.about.label', 'irregular grid mesh', 0);
+    rpLibPutString(lib, 'output.mesh.dim', '2', 0);
+    rpLibPutString(lib, 'output.mesh.units', 'm', 0);
+    rpLibPutString(lib, 'output.mesh.hide', 'yes', 0);
+
+    xv = linspace(0, 1, 50)
+    string = sprintf('%12g\n', xv);
+    rpLibPutString(lib, 'output.mesh.grid.xcoords', string, 0);
+    rpLibPutString(lib, 'output.mesh.grid.ycoords', string, 0);
+
+  case 'hybrid' 
+    mesh = 'output.mesh';
+    rpLibPutString(lib, 'output.mesh.about.label', \
+		   'hybrid regular and irregular grid mesh', 0);
+    rpLibPutString(lib, 'output.mesh.dim', '2', 0);
+    rpLibPutString(lib, 'output.mesh.units', 'm', 0);
+    rpLibPutString(lib, 'output.mesh.hide', 'yes', 0);
+
+    xv = linspace(0, 1, 50)
+    string = sprintf('%g\n', xv);
+    rpLibPutString(lib, 'output.mesh.grid.xcoords', string, 0);
+
+    % Specify the y-axis of the mesh
+    rpLibPutString(lib, 'output.mesh.grid.yaxis.min', '0.0', 0);
+    rpLibPutString(lib, 'output.mesh.grid.yaxis.max', '1.0', 0);
+    rpLibPutString(lib, 'output.mesh.grid.yaxis.numpoints', '50', 0);
+
+  case 'triangular'
+    mesh = 'output.mesh';
+    rpLibPutString(lib, 'output.mesh.about.label', \
+		   'triangles in unstructured mesh', 0);
+    rpLibPutString(lib, 'output.mesh.dim', '2', 0);
+    rpLibPutString(lib, 'output.mesh.units', 'm', 0);
+    rpLibPutString(lib, 'output.mesh.hide', 'yes', 0);
+
+    f = fopen('points.txt');
+    points = fscanf(f, '%g');
+    fclose(f);
+    string = sprintf('%g %g\n', points);
+    rpLibPutString(lib, 'output.mesh.unstructured.points', string, 0);
+
+    rpLibPutFile(lib, 'output.mesh.unstructured.triangles', 'triangles.txt', \
+		 0, 0);
+
+  case 'unstructured' 
+    mesh = 'output.mesh';
+    rpLibPutString(lib, 'output.mesh.about.label', 'Unstructured Grid', 0);
+    rpLibPutString(lib, 'output.mesh.dim', '2', 0);
+    rpLibPutString(lib, 'output.mesh.units', 'm', 0);
+    rpLibPutString(lib, 'output.mesh.hide', 'yes', 0);
+    
+    f = fopen('points.txt');
+    points = fscanf(f, '%g');
+    fclose(f);
+    string = sprintf('%g %g\n', points);
+    rpLibPutString(lib, 'output.mesh.unstructured.points', string, 0);
+
+    rpLibPutFile(lib, 'output.mesh.unstructured.cells', 'triangles.txt', 0, 0);
+    rpLibPutString(lib, 'output.mesh.unstructured.celltypes', 'triangle', 0);
+
+  case 'cells' 
+    mesh = 'output.mesh';
+    rpLibPutString(lib, 'output.mesh.about.label', \
+		   'unstructured grid with heterogeneous cells', 0);
+    rpLibPutString(lib, 'output.mesh.dim', '2', 0);
+    rpLibPutString(lib, 'output.mesh.units', 'm', 0);
+    rpLibPutString(lib, 'output.mesh.hide', 'yes', 0);
+
+    f = fopen('points.txt');
+    points = fscanf(f, '%g');
+    fclose(f);
+    string = sprintf('%g %g\n', points);
+    rpLibPutString(lib, 'output.mesh.unstructured.points', string, 0);
+
+    rpLibPutFile(lib, 'output.mesh.unstructured.cells', 'triangles.txt', 0, 0);
+
+    % TO BE COMPLETED
+    rpLibPutString(lib, 'output.mesh.unstructured.celltypes', 'triangle', 0);
+
+  case 'vtkmesh'
+    mesh = 'output.mesh';
+    rpLibPutString(lib, 'output.mesh.about.label', 'vtk mesh', 0);
+    rpLibPutString(lib, 'output.mesh.dim', '2', 0);
+    rpLibPutString(lib, 'output.mesh.units', 'm', 0);
+    rpLibPutString(lib, 'output.mesh.hide', 'yes', 0);
+
+    rpLibPutFile(lib, 'output.mesh.vtk', 'mesh.vtk', 0, 0);
+
+  case 'vtkfield' 
+
+    rpLibPutString(lib, 'output.field(substrate).about.label', \
+	       'Substrate Surface', 0);
+    rpLibPutFile(lib, 'output.field(substrate).component.vtk', 'file.vtk', \
+		 0, 0);
+    rpLibPutString(lib, 'output.string.current', '', 0);
+    rpLibResult(lib);
+    quit;
+
+  otherwise
+    error 'unknown mesh type $meshtype'
+end
+
+% Read in the data since we're not simulating anything...
+f = fopen('substrate_data.txt');
+substrate_values = fscanf(f, '%g');
+fclose(f);
+f = fopen('particle_data.txt');
+particle_values = fscanf(f, '%g');
+fclose(f);
+
+rpLibPutString(lib, 'output.field(substrate).about.label', \
+	       'Substrate Surface', 0);
+rpLibPutString(lib, 'output.field(substrate).component.mesh', mesh, 0);
+string = sprintf('%12g\n', substrate_values);
+rpLibPutString(lib, 'output.field(substrate).component.values', string, 0);
+rpLibPutString(lib, 'output.field(substrate).about.view', view, 0);
+
+rpLibPutString(lib, 'output.field(particle).about.label', \
+	       'Particle Surface', 0);
+rpLibPutString(lib, 'output.field(particle).component.mesh', mesh, 0);
+string = sprintf('%12g\n', particle_values);
+rpLibPutString(lib, 'output.field(particle).component.values', string, 0);
+rpLibPutString(lib, 'output.field(particle).about.view', view, 0);
+
+rpLibPutString(lib, 'output.string.about.label', 'Mesh XML definition', 0);
+xml = rpLibXml(lib);
+rpLibPutString(lib, 'output.string.current', xml, 0);
+
+% save the updated XML describing the run...
+rpLibResult(lib);
+quit;
Index: /tags/1.6.0/examples/zoo/mesh/mesh.py
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/mesh.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/mesh.py	(revision 6168)
@@ -0,0 +1,124 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <mesh> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+import numpy as np
+
+# uncomment these for debugging
+# sys.stderr = open('mesh.err', 'w')
+# sys.stdout = open('mesh.out', 'w')
+
+rx = Rappture.PyXml(sys.argv[1])
+
+meshtype = rx["input.choice(mesh).current"].value
+contour = rx["input.boolean(contour).current"].value
+
+if contour == "yes":
+    view = 'contour'
+else:
+    view = 'heightmap'
+
+mesh = rx['output.mesh']
+mesh['dim'] = 2
+mesh['units'] = "m"
+mesh['hide'] = "yes"
+
+x = np.linspace(0, 1, num=50, endpoint=True)
+y = np.linspace(0, 1, num=50, endpoint=True)
+
+
+if meshtype == 'cloud':
+    mesh['about.label'] = "cloud in unstructured mesh"
+
+    # Warning! Unstructured grids require newlines after each
+    # set of points!.
+
+    # use mgrid. weird syntax, but compact
+    # x, y = np.mgrid[0:1:50j, 0:1:50j]
+    # pts = (x.ravel('F'), y.ravel('F'))
+
+    # OR create x and y vectors then use one of these methods
+
+    # Use list comprehension to create string
+    pts = ' '.join(["%s %s\n" % (a, b) for b in y for a in x])
+
+    # Use meshgrid. Similar to mgrid()
+    # X, Y = np.meshgrid(x, y)
+    # pts = (X.ravel(), Y.ravel())
+
+    mesh['unstructured.points'] = pts
+    mesh['unstructured.celltypes'] = ""
+
+if meshtype == 'regular':
+    mesh['about.label'] = "uniform grid mesh"
+    mesh['grid.xaxis.min'] = 0
+    mesh['grid.xaxis.max'] = 1
+    mesh['grid.xaxis.numpoints'] = 50
+    mesh['grid.yaxis.min'] = 0
+    mesh['grid.yaxis.max'] = 1
+    mesh['grid.yaxis.numpoints'] = 50
+
+if meshtype == 'irregular':
+    mesh['about.label'] = "irregular grid mesh"
+    mesh['grid.xcoords'] = x
+    mesh['grid.ycoords'] = y
+
+if meshtype == 'hybrid':
+    mesh['about.label'] = "hybrid regular and irregular grid mesh"
+    mesh['grid.xcoords'] = x
+    mesh['grid.yaxis.min'] = 0
+    mesh['grid.yaxis.max'] = 1
+    mesh['grid.yaxis.numpoints'] = 50
+
+if meshtype == 'triangular':
+    mesh['about.label'] = "triangles in unstructured mesh"
+    mesh.put('unstructured.points', 'points.txt', type='file')
+    mesh.put('unstructured.triangles', 'triangles.txt', type='file')
+
+if meshtype == 'unstructured':
+    mesh['about.label'] = "Unstructured Grid"
+    mesh['unstructured.celltypes'] = 'triangle'
+    mesh.put('unstructured.points', 'points.txt', type='file')
+    mesh.put('unstructured.cells', 'triangles.txt', type='file')
+
+if meshtype == 'cells':
+    # FIXME. Copied from tcl example, but looks just like 'unstructured'
+    mesh['about.label'] = "Unstructured Grid with Heterogeneous Cells"
+    mesh['unstructured.celltypes'] = 'triangle'
+    mesh.put('unstructured.points', 'points.txt', type='file')
+    mesh.put('unstructured.cells', 'triangles.txt', type='file')
+
+if meshtype == 'vtkmesh':
+    mesh['about.label'] = 'vtk mesh'
+    mesh.put('vtk', 'mesh.vtk', type='file')
+
+if meshtype == 'vtkfield':
+    f = rx['output.field(substrate)']
+    f['about.label'] = "Substrate Surface"
+    f.put('component.vtk', 'file.vtk', type='file')
+    rx.close()
+
+f = rx['output.field(substrate)']
+f['about.label'] = "Substrate Surface"
+f['about.view'] = view
+f['component.mesh'] = mesh.name
+f.put('component.values', 'substrate_data.txt', type='file')
+
+f = rx['output.field(particle)']
+f['about.label'] = "Particle Surface"
+f['about.view'] = view
+f['component.mesh'] = mesh.name
+f.put('component.values', 'particle_data.txt', type='file')
+
+rx['output.string.about.label'] = "Mesh XML definition"
+rx['output.string.current'] = mesh.xml()
+
+rx.close()
Index: /tags/1.6.0/examples/zoo/mesh/mesh.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/mesh.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/mesh.tcl	(revision 6168)
@@ -0,0 +1,202 @@
+
+# Example of using unirect2d meshes in a field object in Rappture.
+
+package require Rappture
+package require BLT
+
+# Read in the data since we're not simulating anything...
+
+# Open an XML run file to write into
+set driver [Rappture::library [lindex $argv 0]]
+
+set meshtype [$driver get "input.choice(mesh).current"]
+set contour [$driver get "input.boolean(contour).current"]
+if { $contour  == "yes" } {
+    set view contour
+} else {
+    set view heightmap
+}
+
+set xv [blt::vector create \#auto]
+$xv seq 0 1 50
+
+set hide no
+
+switch -- $meshtype {
+    "cloud" {
+        set mesh output.mesh
+
+        $driver put $mesh.about.label "Mesh"
+        $driver put $mesh.about.description "cloud in unstructured mesh"
+        $driver put $mesh.dim  2
+        $driver put $mesh.units "m"
+        $driver put $mesh.hide $hide
+
+        set points {}
+        foreach y [$xv range 0 end] {
+            foreach x [$xv range 0 end] {
+                append points "$x $y\n"
+            }
+        }
+        $driver put $mesh.unstructured.points $points
+        $driver put $mesh.unstructured.celltypes ""
+    }
+    "regular" {
+        set mesh output.mesh
+
+        $driver put $mesh.about.label "Mesh"
+        $driver put $mesh.about.description "uniform grid mesh"
+        $driver put $mesh.dim  2
+        $driver put $mesh.units "m"
+        $driver put $mesh.hide $hide
+
+        $driver put $mesh.grid.xaxis.min 0.0 
+        $driver put $mesh.grid.xaxis.max 1.0
+        $driver put $mesh.grid.xaxis.numpoints 50
+        $driver put $mesh.grid.yaxis.min 0.0 
+        $driver put $mesh.grid.yaxis.max 1.0
+        $driver put $mesh.grid.yaxis.numpoints 50
+    }
+    "irregular" {
+        set mesh output.mesh
+
+        $driver put $mesh.about.label "Mesh"
+        $driver put $mesh.about.description "irregular rectilinear grid mesh"
+        $driver put $mesh.dim  2
+        $driver put $mesh.units "m"
+        $driver put $mesh.hide $hide
+
+        $driver put $mesh.grid.xcoords [$xv range 0 end]
+        $driver put $mesh.grid.ycoords [$xv range 0 end]
+    }
+    "hybrid" {
+        set mesh output.mesh
+
+        $driver put $mesh.about.label "Mesh"
+        $driver put $mesh.about.description "hybrid regular and irregular rectilinear grid mesh"
+        $driver put $mesh.dim  2
+        $driver put $mesh.units "m"
+        $driver put $mesh.hide $hide
+
+        $driver put $mesh.grid.xcoords [$xv range 0 end]
+        $driver put $mesh.grid.yaxis.min 0.0 
+        $driver put $mesh.grid.yaxis.max 1.0
+        $driver put $mesh.grid.yaxis.numpoints 50
+    }
+    "structured" {
+        set mesh output.mesh
+
+        $driver put $mesh.about.label "Mesh"
+        $driver put $mesh.about.description "Structured (Curvilinear) Grid"
+        $driver put $mesh.dim  2
+        $driver put $mesh.units "m"
+        $driver put $mesh.hide $hide
+
+        $driver put $mesh.grid.xdim 50
+        $driver put $mesh.grid.ydim 50
+        set points {}
+        foreach y [$xv range 0 end] {
+            foreach x [$xv range 0 end] {
+                append points "$x $y\n"
+            }
+        }
+        $driver put $mesh.grid.points $points
+    }
+    "triangular" {
+        set mesh output.mesh
+
+        $driver put $mesh.about.label "Mesh"
+        $driver put $mesh.about.description "triangles in unstructured mesh"
+        $driver put $mesh.dim  2
+        $driver put $mesh.units "m"
+        $driver put $mesh.hide $hide
+        
+        $driver put -type file -compress no $mesh.unstructured.points \
+            points.txt
+        $driver put -type file -compress no $mesh.unstructured.triangles \
+            triangles.txt
+    }
+    "unstructured" {
+        set mesh output.mesh
+
+        $driver put $mesh.about.label "Mesh"
+        $driver put $mesh.about.description "Unstructured Grid"
+        $driver put $mesh.dim  2
+        $driver put $mesh.units "m"
+        $driver put $mesh.hide $hide
+
+        $driver put -type file -compress no $mesh.unstructured.points points.txt
+        set cells {}
+        set f [open "triangles.txt" "r"]
+        set triangles [read $f]
+        close $f
+        foreach { a b c } $triangles {
+            append cells "$a $b $c\n"
+        }
+        $driver put $mesh.unstructured.cells $cells
+        $driver put $mesh.unstructured.celltypes "triangle"
+    }
+    "cells" {
+        set mesh output.mesh
+
+        $driver put $mesh.about.label "Mesh"
+        $driver put $mesh.about.description \
+            "Unstructured Grid with Heterogeneous Cells"
+        $driver put $mesh.dim  2
+        $driver put $mesh.units "m"
+        $driver put $mesh.hide $hide
+
+        set celltypes {}
+        set f [open "triangles.txt" "r"]
+        set triangles [read $f]
+        close $f
+        foreach { a b c } $triangles {
+            append cells "$a $b $c\n"
+            append celltypes "triangle\n"
+        }
+        $driver put -type file -compress no $mesh.unstructured.points points.txt
+        $driver put $mesh.unstructured.celltypes $celltypes
+        $driver put $mesh.unstructured.cells $cells
+    }
+    "vtkmesh" {
+        set mesh output.mesh
+
+        $driver put $mesh.about.label "Mesh"
+        $driver put $mesh.about.description "vtk mesh"
+        $driver put $mesh.dim  2
+        $driver put $mesh.units "m"
+        $driver put $mesh.hide $hide
+        $driver put -type file -compress no $mesh.vtk mesh.vtk
+    }
+    "vtkfield" {
+
+        $driver put output.field(substrate).about.label "Substrate Surface"
+        $driver put -type file -compress no \
+            output.field(substrate).component.vtk file.vtk
+        $driver put output.string.current ""
+        Rappture::result $driver
+        exit 0
+    }
+    default {
+        error "unknown mesh type \"$meshtype\""
+    }
+}
+
+$driver put output.field(substrate).about.label "Substrate Surface"
+$driver put output.field(substrate).about.view $view
+$driver put output.field(substrate).component.mesh $mesh
+$driver put -type file -compress no output.field(substrate).component.values \
+    substrate_data.txt
+
+$driver put output.field(particle).about.label "Particle Surface"
+$driver put output.field(particle).about.view $view
+$driver put output.field(particle).component.mesh $mesh
+$driver put -type file -compress no output.field(particle).component.values \
+    particle_data.txt
+
+$driver put output.string.about.label "Mesh XML definition"
+$driver put output.string.current [$driver xml $mesh]
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/mesh/mesh.vtk
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/mesh.vtk	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/mesh.vtk	(revision 6168)
@@ -0,0 +1,8 @@
+DATASET RECTILINEAR_GRID
+DIMENSIONS 50 50 1
+X_COORDINATES 50 double
+0.0 0.0204082 0.0408163 0.0612245 0.0816327 0.102041 0.122449 0.142857 0.163265 0.183673 0.204082 0.22449 0.244898 0.265306 0.285714 0.306122 0.326531 0.346939 0.367347 0.387755 0.408163 0.428571 0.44898 0.469388 0.489796 0.510204 0.530612 0.55102 0.571429 0.591837 0.612245 0.632653 0.653061 0.673469 0.693878 0.714286 0.734694 0.755102 0.77551 0.795918 0.816327 0.836735 0.857143 0.877551 0.897959 0.918367 0.938776 0.959184 0.979592 1.0
+Y_COORDINATES 50 double
+0.0 0.0204082 0.0408163 0.0612245 0.0816327 0.102041 0.122449 0.142857 0.163265 0.183673 0.204082 0.22449 0.244898 0.265306 0.285714 0.306122 0.326531 0.346939 0.367347 0.387755 0.408163 0.428571 0.44898 0.469388 0.489796 0.510204 0.530612 0.55102 0.571429 0.591837 0.612245 0.632653 0.653061 0.673469 0.693878 0.714286 0.734694 0.755102 0.77551 0.795918 0.816327 0.836735 0.857143 0.877551 0.897959 0.918367 0.938776 0.959184 0.979592 1.0
+Z_COORDINATES 1 double
+0
Index: /tags/1.6.0/examples/zoo/mesh/particle_data.txt
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/particle_data.txt	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/particle_data.txt	(revision 6168)
@@ -0,0 +1,500 @@
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 3.4317277e+00 5.0760348e+00
+    5.9068111e+00 6.4605646e+00 7.0203816e+00 7.3982050e+00 7.6550148e+00
+    7.3828590e+00 7.3526253e+00 6.9013613e+00 6.3211528e+00 5.5504136e+00
+    4.3406276e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    3.6270613e+00 5.5712347e+00 6.8484032e+00 7.7045311e+00 8.5805968e+00
+    9.3113872e+00 9.7747336e+00 1.0155472e+01 1.0395346e+01 1.0469555e+01
+    1.0332063e+01 1.0225579e+01 1.0085702e+01 9.4488056e+00 9.0983724e+00
+    8.3921263e+00 7.3182586e+00 6.0531057e+00 4.3110253e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 4.3344184e+00 6.1782244e+00
+    7.4421746e+00 8.5286561e+00 9.5557379e+00 1.0426054e+01 1.1136201e+01
+    1.1607611e+01 1.2074937e+01 1.2412788e+01 1.2610571e+01 1.2636707e+01
+    1.2454206e+01 1.2238205e+01 1.2192550e+01 1.1499364e+01 1.1273222e+01
+    1.0844718e+01 1.0148515e+01 9.3480034e+00 8.3543113e+00 6.8984265e+00
+    4.7953243e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 3.4390137e+00 5.8791058e+00 7.6959598e+00 8.8451011e+00
+    1.0001165e+01 1.0797066e+01 1.1558935e+01 1.2296784e+01 1.2843887e+01
+    1.3408833e+01 1.3845336e+01 1.4020532e+01 1.4167189e+01 1.4159670e+01
+    1.3804369e+01 1.3896745e+01 1.3903356e+01 1.3579546e+01 1.3179814e+01
+    1.2638003e+01 1.2016232e+01 1.1619476e+01 1.0804961e+01 9.8626157e+00
+    8.5559471e+00 6.8182143e+00 4.2982484e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    5.1310583e+00 7.2957554e+00 8.7138490e+00 1.0141273e+01 1.1096529e+01
+    1.1873330e+01 1.2655512e+01 1.3242302e+01 1.3913898e+01 1.4366251e+01
+    1.4797765e+01 1.5090800e+01 1.5566662e+01 1.5828986e+01 1.5865517e+01
+    1.5764403e+01 1.5525078e+01 1.5199751e+01 1.4766300e+01 1.4617769e+01
+    1.4327543e+01 1.3853887e+01 1.3192599e+01 1.2507197e+01 1.1367310e+01
+    1.0221488e+01 9.0659639e+00 7.9312556e+00 5.7858669e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 2.9070472e+00 6.2516730e+00
+    8.1005560e+00 9.5437090e+00 1.0784398e+01 1.1879041e+01 1.2582620e+01
+    1.3318596e+01 1.4018547e+01 1.4720561e+01 1.5222122e+01 1.5593522e+01
+    1.6047018e+01 1.6445115e+01 1.6625453e+01 1.6818382e+01 1.7010606e+01
+    1.6901074e+01 1.6723210e+01 1.6561958e+01 1.6155001e+01 1.6006407e+01
+    1.5650014e+01 1.5217479e+01 1.4480372e+01 1.3796552e+01 1.2938546e+01
+    1.2008729e+01 1.1132730e+01 1.0087906e+01 8.5511691e+00 6.2720049e+00
+    2.4728343e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 3.2720401e+00 6.7826281e+00 8.8628550e+00
+    1.0360525e+01 1.1380767e+01 1.2401672e+01 1.3282359e+01 1.3963707e+01
+    1.4661344e+01 1.5441229e+01 1.6182835e+01 1.6637913e+01 1.6928956e+01
+    1.7177098e+01 1.7327722e+01 1.7707099e+01 1.7933951e+01 1.8064915e+01
+    1.8045638e+01 1.7980625e+01 1.7829778e+01 1.7438284e+01 1.6877472e+01
+    1.6610981e+01 1.6171881e+01 1.5788191e+01 1.5198630e+01 1.4650124e+01
+    1.3768052e+01 1.2780039e+01 1.1989130e+01 1.0630266e+01 8.9079933e+00
+    6.5141529e+00 3.0577640e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 3.2516894e+00 6.7337958e+00 8.9524994e+00 1.0474336e+01
+    1.1728583e+01 1.2805125e+01 1.3633821e+01 1.4477431e+01 1.5101019e+01
+    1.5898121e+01 1.6694530e+01 1.7101779e+01 1.7481446e+01 1.7748754e+01
+    1.8160568e+01 1.8489852e+01 1.8762203e+01 1.9029721e+01 1.9043031e+01
+    1.8867374e+01 1.8915125e+01 1.8806565e+01 1.8652401e+01 1.8481672e+01
+    1.8065055e+01 1.7564466e+01 1.7098346e+01 1.6481875e+01 1.5521967e+01
+    1.4960528e+01 1.4252751e+01 1.3417357e+01 1.2033669e+01 1.0395022e+01
+    8.6165971e+00 6.2655542e+00 2.8584763e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    2.5007556e+00 6.3346600e+00 8.7840799e+00 1.0582882e+01 1.2179782e+01
+    1.3243626e+01 1.4181863e+01 1.4837454e+01 1.5571522e+01 1.6209756e+01
+    1.6876787e+01 1.7462036e+01 1.8022786e+01 1.8570880e+01 1.8753588e+01
+    1.8933212e+01 1.9346025e+01 1.9373121e+01 1.9671461e+01 1.9832419e+01
+    1.9787245e+01 1.9700232e+01 1.9608392e+01 1.9308948e+01 1.9102469e+01
+    1.8871169e+01 1.8409141e+01 1.7975659e+01 1.7592047e+01 1.6902289e+01
+    1.6137462e+01 1.5281989e+01 1.4516897e+01 1.3250202e+01 1.1964935e+01
+    1.0448707e+01 8.7157738e+00 6.4796386e+00 2.3245457e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    5.9872063e+00 8.3152378e+00 1.0180905e+01 1.1988872e+01 1.3315154e+01
+    1.4366114e+01 1.5138265e+01 1.5951695e+01 1.6859824e+01 1.7331415e+01
+    1.7828786e+01 1.8442261e+01 1.8855678e+01 1.9232172e+01 1.9402621e+01
+    1.9973917e+01 2.0154662e+01 2.0130326e+01 2.0508589e+01 2.0601434e+01
+    2.0354593e+01 2.0202649e+01 2.0325691e+01 2.0066722e+01 1.9807064e+01
+    1.9617342e+01 1.9393303e+01 1.8971872e+01 1.8330102e+01 1.7724319e+01
+    1.6974542e+01 1.6270439e+01 1.5536243e+01 1.4535218e+01 1.3234120e+01
+    1.1983579e+01 1.0442396e+01 8.6076617e+00 5.6823420e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 4.9388231e+00
+    7.8803844e+00 1.0084992e+01 1.1732523e+01 1.3030315e+01 1.4195459e+01
+    1.5210755e+01 1.6085896e+01 1.6832534e+01 1.7538296e+01 1.7947273e+01
+    1.8314971e+01 1.8975103e+01 1.9544871e+01 2.0068647e+01 2.0236990e+01
+    2.0554539e+01 2.0900274e+01 2.0792812e+01 2.0994446e+01 2.0925108e+01
+    2.1104531e+01 2.1154076e+01 2.1043210e+01 2.0847969e+01 2.0700929e+01
+    2.0162653e+01 1.9953164e+01 1.9782497e+01 1.9137839e+01 1.8458850e+01
+    1.7866051e+01 1.7177849e+01 1.6491937e+01 1.5463072e+01 1.4447279e+01
+    1.3163593e+01 1.1754877e+01 1.0105029e+01 7.9898183e+00 4.9192775e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 3.3713863e+00 7.1783512e+00
+    9.5001887e+00 1.1264570e+01 1.2659868e+01 1.4065627e+01 1.5138238e+01
+    1.5943781e+01 1.6735256e+01 1.7576042e+01 1.8227918e+01 1.8643962e+01
+    1.9172081e+01 1.9835926e+01 2.0314074e+01 2.0615607e+01 2.0840994e+01
+    2.1042295e+01 2.1348354e+01 2.1550675e+01 2.1820887e+01 2.1799994e+01
+    2.1710012e+01 2.1746162e+01 2.1702282e+01 2.1462487e+01 2.1067481e+01
+    2.0779185e+01 2.0546150e+01 2.0348800e+01 1.9935476e+01 1.9117673e+01
+    1.8360103e+01 1.7715310e+01 1.7208756e+01 1.6319200e+01 1.5299598e+01
+    1.4169758e+01 1.2917864e+01 1.1530818e+01 9.5627020e+00 7.0663084e+00
+    3.3631325e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 5.6256622e+00 8.5431399e+00
+    1.0680339e+01 1.2093971e+01 1.3579339e+01 1.4823832e+01 1.5610108e+01
+    1.6486034e+01 1.7350283e+01 1.8070891e+01 1.8704402e+01 1.9245614e+01
+    1.9762717e+01 2.0482203e+01 2.1092727e+01 2.1477979e+01 2.1642232e+01
+    2.1940868e+01 2.2157875e+01 2.2356184e+01 2.2512458e+01 2.2392580e+01
+    2.2401039e+01 2.2465213e+01 2.2581934e+01 2.2208142e+01 2.1758905e+01
+    2.1322231e+01 2.1155057e+01 2.0605183e+01 2.0356554e+01 1.9918660e+01
+    1.9248433e+01 1.8715418e+01 1.8017869e+01 1.7296208e+01 1.6129665e+01
+    1.4898777e+01 1.3855725e+01 1.2503561e+01 1.0678644e+01 8.5061965e+00
+    5.7120174e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 3.9184225e+00 7.4237393e+00 9.7064746e+00
+    1.1472861e+01 1.3087412e+01 1.4506440e+01 1.5550231e+01 1.6302664e+01
+    1.7270646e+01 1.8090195e+01 1.8612274e+01 1.9345791e+01 1.9820744e+01
+    2.0308292e+01 2.0833211e+01 2.1590359e+01 2.2033837e+01 2.2139154e+01
+    2.2420310e+01 2.2698571e+01 2.2799481e+01 2.2894868e+01 2.3085143e+01
+    2.2991454e+01 2.3025327e+01 2.2901163e+01 2.2637479e+01 2.2348229e+01
+    2.1813107e+01 2.1578686e+01 2.1309019e+01 2.0988634e+01 2.0566853e+01
+    1.9903057e+01 1.9376607e+01 1.8717435e+01 1.7875975e+01 1.6913758e+01
+    1.5680409e+01 1.4559715e+01 1.3278478e+01 1.1512613e+01 9.5946113e+00
+    7.3256776e+00 3.8013247e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 5.8456637e+00 8.7408440e+00 1.0782506e+01
+    1.2440026e+01 1.3838939e+01 1.5102657e+01 1.6249129e+01 1.7106565e+01
+    1.7899445e+01 1.8631210e+01 1.9314416e+01 1.9905330e+01 2.0495084e+01
+    2.0709976e+01 2.1408994e+01 2.2134631e+01 2.2645275e+01 2.2722600e+01
+    2.2751568e+01 2.2922144e+01 2.3123387e+01 2.3323323e+01 2.3478241e+01
+    2.3376395e+01 2.3289031e+01 2.3170111e+01 2.3002945e+01 2.2903158e+01
+    2.2549043e+01 2.2161900e+01 2.1754938e+01 2.1253888e+01 2.0697579e+01
+    2.0107078e+01 1.9923317e+01 1.9396545e+01 1.8472571e+01 1.7558700e+01
+    1.6404105e+01 1.5171799e+01 1.3703437e+01 1.2348637e+01 1.0669800e+01
+    8.6931154e+00 5.9433585e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 3.5642830e+00 7.4925922e+00 9.7131764e+00 1.1729212e+01
+    1.3125297e+01 1.4368592e+01 1.5623578e+01 1.7019415e+01 1.7818750e+01
+    1.8569104e+01 1.9369909e+01 1.9882485e+01 2.0452139e+01 2.0822135e+01
+    2.1312140e+01 2.1850505e+01 2.2533015e+01 2.3003191e+01 2.3181835e+01
+    2.3326581e+01 2.3334975e+01 2.3495269e+01 2.3732437e+01 2.3710486e+01
+    2.3582811e+01 2.3544314e+01 2.3306755e+01 2.3272643e+01 2.3197059e+01
+    2.2863828e+01 2.2387633e+01 2.2129835e+01 2.1782071e+01 2.1323162e+01
+    2.0869692e+01 2.0370721e+01 1.9642613e+01 1.8801722e+01 1.7903135e+01
+    1.6908253e+01 1.5758382e+01 1.4572168e+01 1.3134409e+01 1.1593308e+01
+    9.7992865e+00 7.3384513e+00 3.5427643e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 5.2028463e+00 8.2702949e+00 1.0489542e+01 1.2358820e+01
+    1.3815918e+01 1.5134848e+01 1.6310086e+01 1.7434250e+01 1.8295254e+01
+    1.8996978e+01 1.9763755e+01 2.0395611e+01 2.0934952e+01 2.1191896e+01
+    2.1724169e+01 2.2249069e+01 2.2778313e+01 2.3156459e+01 2.3306443e+01
+    2.3753026e+01 2.3886348e+01 2.3948257e+01 2.4092471e+01 2.4108511e+01
+    2.4145434e+01 2.3922315e+01 2.3700776e+01 2.3487314e+01 2.3494663e+01
+    2.3226463e+01 2.2839067e+01 2.2536675e+01 2.2019883e+01 2.1598638e+01
+    2.1127392e+01 2.0717341e+01 1.9993103e+01 1.9338518e+01 1.8457964e+01
+    1.7361908e+01 1.6290288e+01 1.5045822e+01 1.3642442e+01 1.2163493e+01
+    1.0612488e+01 8.5192264e+00 5.2128474e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 6.5829243e+00 9.1073783e+00 1.1126488e+01 1.2894842e+01
+    1.4355522e+01 1.5790625e+01 1.6917844e+01 1.7922245e+01 1.8672932e+01
+    1.9347403e+01 2.0087425e+01 2.0711282e+01 2.1283396e+01 2.1825108e+01
+    2.2140879e+01 2.2638909e+01 2.3120648e+01 2.3343581e+01 2.3512368e+01
+    2.3800378e+01 2.4055986e+01 2.4189951e+01 2.4214983e+01 2.4048114e+01
+    2.4252633e+01 2.4268130e+01 2.4171420e+01 2.3957361e+01 2.3747901e+01
+    2.3395837e+01 2.3201768e+01 2.3040633e+01 2.2606637e+01 2.2080765e+01
+    2.1651397e+01 2.1208168e+01 2.0408748e+01 1.9637584e+01 1.8792683e+01
+    1.7924951e+01 1.6850755e+01 1.5504784e+01 1.4334574e+01 1.2852416e+01
+    1.1093902e+01 9.1029941e+00 6.5810411e+00 0.0000000e+00 0.0000000e+00
+    3.2259425e+00 7.3207913e+00 9.6213771e+00 1.1830741e+01 1.3534073e+01
+    1.5049132e+01 1.6387474e+01 1.7484914e+01 1.8145632e+01 1.8786618e+01
+    1.9578962e+01 2.0483327e+01 2.1004887e+01 2.1715612e+01 2.2145653e+01
+    2.2459856e+01 2.2898729e+01 2.3370763e+01 2.3754829e+01 2.3764023e+01
+    2.4002444e+01 2.4272734e+01 2.4442749e+01 2.4427037e+01 2.4410115e+01
+    2.4475851e+01 2.4340030e+01 2.4242622e+01 2.4011423e+01 2.3947956e+01
+    2.3675597e+01 2.3468145e+01 2.3289761e+01 2.3024734e+01 2.2463559e+01
+    2.1674367e+01 2.1432646e+01 2.0715643e+01 1.9813865e+01 1.9130803e+01
+    1.8362668e+01 1.7236887e+01 1.5970678e+01 1.4792347e+01 1.3502179e+01
+    1.1768727e+01 9.9568176e+00 7.4887053e+00 3.2962613e+00 0.0000000e+00
+    4.5763338e+00 8.0450521e+00 1.0068096e+01 1.1985910e+01 1.3784362e+01
+    1.5301781e+01 1.6598740e+01 1.7574379e+01 1.8446064e+01 1.9213731e+01
+    1.9894874e+01 2.0801986e+01 2.1470161e+01 2.2052059e+01 2.2256426e+01
+    2.2353730e+01 2.2780720e+01 2.3311558e+01 2.3729114e+01 2.4164600e+01
+    2.4286168e+01 2.4476511e+01 2.4664204e+01 2.4597884e+01 2.4853431e+01
+    2.4794885e+01 2.4630642e+01 2.4435265e+01 2.4302712e+01 2.4225304e+01
+    2.3914280e+01 2.3590460e+01 2.3522139e+01 2.3292806e+01 2.2616181e+01
+    2.1989625e+01 2.1428340e+01 2.0885690e+01 2.0256620e+01 1.9612038e+01
+    1.8930044e+01 1.7692413e+01 1.6522454e+01 1.5284280e+01 1.3757009e+01
+    1.2242671e+01 1.0305984e+01 8.0668573e+00 4.5010464e+00 0.0000000e+00
+    5.4205496e+00 8.4054474e+00 1.0593270e+01 1.2432146e+01 1.3964659e+01
+    1.5344284e+01 1.6616374e+01 1.8016384e+01 1.8704465e+01 1.9234876e+01
+    2.0106549e+01 2.0948023e+01 2.1479117e+01 2.2086634e+01 2.2386181e+01
+    2.2915214e+01 2.3121746e+01 2.3725538e+01 2.3879492e+01 2.4005571e+01
+    2.4260801e+01 2.4437758e+01 2.4801888e+01 2.4854718e+01 2.4866647e+01
+    2.4914177e+01 2.4718867e+01 2.4913020e+01 2.4533967e+01 2.4390778e+01
+    2.4337219e+01 2.4234151e+01 2.3869322e+01 2.3425526e+01 2.2949334e+01
+    2.2206563e+01 2.1651071e+01 2.1107142e+01 2.0439635e+01 1.9841455e+01
+    1.8889366e+01 1.7962307e+01 1.6894059e+01 1.5540690e+01 1.4090947e+01
+    1.2710581e+01 1.0936534e+01 8.3818585e+00 5.1989860e+00 0.0000000e+00
+    6.0697710e+00 8.9930735e+00 1.0961772e+01 1.2856985e+01 1.4359348e+01
+    1.5553895e+01 1.6702342e+01 1.7963325e+01 1.9042965e+01 1.9756204e+01
+    2.0413644e+01 2.1199482e+01 2.1631659e+01 2.2122119e+01 2.2597624e+01
+    2.2962074e+01 2.3270628e+01 2.3659141e+01 2.3954255e+01 2.4323246e+01
+    2.4524487e+01 2.4866365e+01 2.5076870e+01 2.4968818e+01 2.5027581e+01
+    2.5044210e+01 2.4898482e+01 2.4856844e+01 2.4635682e+01 2.4559646e+01
+    2.4329479e+01 2.4100717e+01 2.3779303e+01 2.3432751e+01 2.2970688e+01
+    2.2399569e+01 2.1955591e+01 2.1185849e+01 2.0631778e+01 1.9989944e+01
+    1.9086193e+01 1.8243443e+01 1.7081672e+01 1.5894357e+01 1.4582254e+01
+    1.3075065e+01 1.1148248e+01 8.9563624e+00 5.7986822e+00 0.0000000e+00
+    6.4587753e+00 9.2808440e+00 1.1159421e+01 1.3154172e+01 1.4643089e+01
+    1.5772158e+01 1.6868427e+01 1.8021134e+01 1.9000673e+01 1.9797045e+01
+    2.0595625e+01 2.1149124e+01 2.1807342e+01 2.2337011e+01 2.2540533e+01
+    2.2888894e+01 2.3508198e+01 2.3938486e+01 2.4112334e+01 2.4308088e+01
+    2.4513164e+01 2.4644447e+01 2.4837573e+01 2.4962643e+01 2.4893138e+01
+    2.4943342e+01 2.5014911e+01 2.5009249e+01 2.4833327e+01 2.4715525e+01
+    2.4397103e+01 2.4109018e+01 2.3767214e+01 2.3402761e+01 2.2956123e+01
+    2.2521515e+01 2.2168421e+01 2.1581681e+01 2.0933263e+01 2.0172314e+01
+    1.9339499e+01 1.8404380e+01 1.7203537e+01 1.5826047e+01 1.4582955e+01
+    1.3099029e+01 1.1373236e+01 9.1950822e+00 6.3810765e+00 0.0000000e+00
+    6.7392766e+00 9.4505485e+00 1.1522067e+01 1.3354487e+01 1.4895977e+01
+    1.6130415e+01 1.7069604e+01 1.8133352e+01 1.9067215e+01 1.9815140e+01
+    2.0618970e+01 2.1292467e+01 2.1880522e+01 2.2362439e+01 2.2630120e+01
+    2.3127198e+01 2.3353424e+01 2.4003812e+01 2.4216459e+01 2.4447464e+01
+    2.4743980e+01 2.4927047e+01 2.5115426e+01 2.5173535e+01 2.5090162e+01
+    2.4944762e+01 2.5036840e+01 2.5008288e+01 2.4872479e+01 2.4655986e+01
+    2.4371262e+01 2.4121001e+01 2.3718894e+01 2.3239080e+01 2.2930901e+01
+    2.2556750e+01 2.2245338e+01 2.1762001e+01 2.0999666e+01 2.0175028e+01
+    1.9225180e+01 1.8380765e+01 1.7270252e+01 1.6164960e+01 1.4743209e+01
+    1.3277541e+01 1.1397977e+01 9.3294457e+00 6.4578782e+00 0.0000000e+00
+    6.7410029e+00 9.4965432e+00 1.1591433e+01 1.3631919e+01 1.4892264e+01
+    1.6183178e+01 1.7405592e+01 1.8217396e+01 1.8969142e+01 1.9884232e+01
+    2.0707228e+01 2.1422491e+01 2.1839271e+01 2.2332499e+01 2.2702978e+01
+    2.3115106e+01 2.3396167e+01 2.4105873e+01 2.4414293e+01 2.4509859e+01
+    2.4608797e+01 2.4805061e+01 2.5075986e+01 2.5195397e+01 2.5150534e+01
+    2.5100338e+01 2.4976948e+01 2.4825497e+01 2.4809217e+01 2.4761973e+01
+    2.4296591e+01 2.3951575e+01 2.3751617e+01 2.3409846e+01 2.3135558e+01
+    2.2635410e+01 2.2338952e+01 2.1687122e+01 2.0970392e+01 2.0249386e+01
+    1.9402997e+01 1.8385446e+01 1.7439636e+01 1.6144309e+01 1.4879659e+01
+    1.3352733e+01 1.1400344e+01 9.3071716e+00 6.5209825e+00 0.0000000e+00
+    6.6592997e+00 9.3748850e+00 1.1462419e+01 1.3460659e+01 1.4966999e+01
+    1.6158644e+01 1.7267895e+01 1.8105588e+01 1.9084362e+01 1.9851044e+01
+    2.0631345e+01 2.1385123e+01 2.1916256e+01 2.2428018e+01 2.2759875e+01
+    2.3303994e+01 2.3670046e+01 2.4078321e+01 2.4366212e+01 2.4656753e+01
+    2.4804330e+01 2.4781410e+01 2.5016267e+01 2.5280476e+01 2.5256911e+01
+    2.5225828e+01 2.4980158e+01 2.4737259e+01 2.4569515e+01 2.4488951e+01
+    2.4279141e+01 2.3874592e+01 2.3522287e+01 2.3150100e+01 2.2881057e+01
+    2.2467079e+01 2.2102801e+01 2.1334263e+01 2.0948046e+01 2.0174931e+01
+    1.9418441e+01 1.8384397e+01 1.7270254e+01 1.6128896e+01 1.4708288e+01
+    1.3294750e+01 1.1580379e+01 9.1457535e+00 6.4024978e+00 0.0000000e+00
+    6.3101979e+00 9.2234729e+00 1.1294076e+01 1.3205504e+01 1.4819098e+01
+    1.6093889e+01 1.7167797e+01 1.8057176e+01 1.8993425e+01 1.9930035e+01
+    2.0794713e+01 2.1372881e+01 2.1849565e+01 2.2496473e+01 2.2976065e+01
+    2.3551087e+01 2.3854828e+01 2.4156943e+01 2.4307636e+01 2.4458169e+01
+    2.4780352e+01 2.4926569e+01 2.5273743e+01 2.5297993e+01 2.5138442e+01
+    2.5194011e+01 2.5042932e+01 2.4759070e+01 2.4533073e+01 2.4446267e+01
+    2.4238906e+01 2.3938322e+01 2.3343664e+01 2.2937576e+01 2.2520263e+01
+    2.2001454e+01 2.1714239e+01 2.1226361e+01 2.0636236e+01 1.9775567e+01
+    1.9048469e+01 1.8168430e+01 1.7056965e+01 1.5783237e+01 1.4548366e+01
+    1.3306156e+01 1.1506036e+01 9.3646715e+00 6.3318658e+00 0.0000000e+00
+    6.2195625e+00 9.1294488e+00 1.1187123e+01 1.2940456e+01 1.4643895e+01
+    1.6026221e+01 1.7169886e+01 1.8116937e+01 1.8966230e+01 1.9866458e+01
+    2.0677804e+01 2.1391072e+01 2.2002442e+01 2.2519065e+01 2.2911954e+01
+    2.3298224e+01 2.3439079e+01 2.3905358e+01 2.4134513e+01 2.4504591e+01
+    2.4685073e+01 2.4889765e+01 2.5141567e+01 2.4996281e+01 2.4752518e+01
+    2.4885089e+01 2.4730644e+01 2.4525593e+01 2.4291613e+01 2.4293614e+01
+    2.4087341e+01 2.3708134e+01 2.3302607e+01 2.2879286e+01 2.2459156e+01
+    2.2050306e+01 2.1843430e+01 2.1159941e+01 2.0460396e+01 1.9725979e+01
+    1.8780866e+01 1.7808247e+01 1.6914930e+01 1.5732312e+01 1.4313927e+01
+    1.3112221e+01 1.1248833e+01 9.0801214e+00 6.1213526e+00 0.0000000e+00
+    5.4791823e+00 8.6334404e+00 1.0984655e+01 1.2756191e+01 1.4494287e+01
+    1.5720854e+01 1.6828764e+01 1.7868153e+01 1.8807961e+01 1.9815462e+01
+    2.0618450e+01 2.1332107e+01 2.1894844e+01 2.2306767e+01 2.2729171e+01
+    2.3143604e+01 2.3529134e+01 2.3887719e+01 2.4134691e+01 2.4416298e+01
+    2.4609930e+01 2.4694363e+01 2.4803201e+01 2.4868018e+01 2.4757141e+01
+    2.4632039e+01 2.4582629e+01 2.4294885e+01 2.4015617e+01 2.3941309e+01
+    2.3668517e+01 2.3451015e+01 2.2972374e+01 2.2472946e+01 2.2340469e+01
+    2.1885978e+01 2.1785639e+01 2.1080719e+01 2.0416567e+01 1.9666502e+01
+    1.8718262e+01 1.7638489e+01 1.6700162e+01 1.5516388e+01 1.3993412e+01
+    1.2673529e+01 1.0941810e+01 8.8408952e+00 5.5551176e+00 0.0000000e+00
+    4.4362493e+00 7.9711979e+00 1.0534199e+01 1.2490498e+01 1.3948110e+01
+    1.5536685e+01 1.6770213e+01 1.7673430e+01 1.8554331e+01 1.9362246e+01
+    2.0230859e+01 2.0942704e+01 2.1763163e+01 2.2186768e+01 2.2465223e+01
+    2.2864710e+01 2.3342156e+01 2.3796456e+01 2.4172848e+01 2.4420598e+01
+    2.4597511e+01 2.4581865e+01 2.4592178e+01 2.4600358e+01 2.4442506e+01
+    2.4587504e+01 2.4439136e+01 2.4242267e+01 2.3907282e+01 2.3851457e+01
+    2.3778969e+01 2.3489067e+01 2.3190068e+01 2.2445264e+01 2.2190443e+01
+    2.1815100e+01 2.1294525e+01 2.0706243e+01 1.9979462e+01 1.9357885e+01
+    1.8505939e+01 1.7408625e+01 1.6479395e+01 1.5175085e+01 1.3473659e+01
+    1.1973795e+01 1.0359980e+01 8.1481542e+00 4.7809043e+00 0.0000000e+00
+    3.1645441e+00 7.2646779e+00 9.8701144e+00 1.1727180e+01 1.3440281e+01
+    1.4866441e+01 1.6094265e+01 1.7142714e+01 1.8179081e+01 1.9288019e+01
+    2.0041633e+01 2.0794102e+01 2.1382412e+01 2.1894262e+01 2.2406086e+01
+    2.2868546e+01 2.3107817e+01 2.3620738e+01 2.4002572e+01 2.4301826e+01
+    2.4319621e+01 2.4209448e+01 2.4377063e+01 2.4523290e+01 2.4432977e+01
+    2.4394861e+01 2.4274790e+01 2.3984109e+01 2.3638653e+01 2.3460451e+01
+    2.3343951e+01 2.3178780e+01 2.2897270e+01 2.2341577e+01 2.1784421e+01
+    2.1296382e+01 2.0825139e+01 2.0183708e+01 1.9725609e+01 1.9248712e+01
+    1.8359833e+01 1.7303131e+01 1.6144487e+01 1.4940992e+01 1.3263664e+01
+    1.1772251e+01 9.8595845e+00 7.5695659e+00 3.5204399e+00 0.0000000e+00
+    0.0000000e+00 6.1685778e+00 9.1232908e+00 1.1238641e+01 1.2913484e+01
+    1.4291933e+01 1.5567098e+01 1.6808944e+01 1.8016855e+01 1.9087796e+01
+    1.9875136e+01 2.0438595e+01 2.1012065e+01 2.1589111e+01 2.2076090e+01
+    2.2659436e+01 2.3064503e+01 2.3482048e+01 2.3793629e+01 2.4019035e+01
+    2.4073890e+01 2.4000810e+01 2.4071321e+01 2.4200630e+01 2.4001064e+01
+    2.4039414e+01 2.3915166e+01 2.3676690e+01 2.3683407e+01 2.3467038e+01
+    2.3091383e+01 2.2918284e+01 2.2596992e+01 2.2208169e+01 2.1711015e+01
+    2.1157884e+01 2.0737407e+01 2.0008951e+01 1.9288020e+01 1.8525297e+01
+    1.7848192e+01 1.6773028e+01 1.5809541e+01 1.4405865e+01 1.2738820e+01
+    1.1132171e+01 9.1687631e+00 6.4642289e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 5.1907721e+00 8.3885547e+00 1.0692009e+01 1.2487705e+01
+    1.3863260e+01 1.5055626e+01 1.6259674e+01 1.7495212e+01 1.8546034e+01
+    1.9279028e+01 1.9960771e+01 2.0641353e+01 2.1118304e+01 2.1658758e+01
+    2.2200985e+01 2.2563516e+01 2.2993190e+01 2.3306935e+01 2.3504327e+01
+    2.3610561e+01 2.3453886e+01 2.3612617e+01 2.3769244e+01 2.3810530e+01
+    2.3857478e+01 2.3667405e+01 2.3428454e+01 2.3129959e+01 2.3009415e+01
+    2.2802673e+01 2.2485934e+01 2.2131498e+01 2.1785385e+01 2.1379983e+01
+    2.0932803e+01 2.0327354e+01 1.9864795e+01 1.9073253e+01 1.8247936e+01
+    1.7412259e+01 1.6473890e+01 1.5436734e+01 1.3925094e+01 1.2261823e+01
+    1.0564169e+01 8.3876311e+00 5.1992382e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 3.3108368e+00 7.3967038e+00 9.8858715e+00 1.1872206e+01
+    1.3467587e+01 1.4812949e+01 1.5828469e+01 1.6906885e+01 1.7864449e+01
+    1.8763915e+01 1.9547750e+01 2.0194443e+01 2.0816453e+01 2.1044837e+01
+    2.1530105e+01 2.2034372e+01 2.2555035e+01 2.3037820e+01 2.3446097e+01
+    2.3545762e+01 2.3410448e+01 2.3435069e+01 2.3330434e+01 2.3257088e+01
+    2.3423142e+01 2.3323905e+01 2.3142235e+01 2.2985900e+01 2.2771888e+01
+    2.2329957e+01 2.2016359e+01 2.1598358e+01 2.1142933e+01 2.0762845e+01
+    2.0260626e+01 1.9876776e+01 1.9236336e+01 1.8555628e+01 1.7927079e+01
+    1.6964526e+01 1.6105115e+01 1.4872633e+01 1.3376594e+01 1.1727003e+01
+    9.9056737e+00 7.5086315e+00 3.7000047e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 6.1596926e+00 8.9965745e+00 1.1104056e+01
+    1.2614324e+01 1.3882325e+01 1.5075015e+01 1.6377926e+01 1.7391007e+01
+    1.8516600e+01 1.9031239e+01 1.9576366e+01 2.0273115e+01 2.0647998e+01
+    2.1208307e+01 2.1516140e+01 2.2067591e+01 2.2317198e+01 2.2700572e+01
+    2.3013688e+01 2.3110699e+01 2.3095448e+01 2.3163815e+01 2.3087745e+01
+    2.3015182e+01 2.2981647e+01 2.2810309e+01 2.2512576e+01 2.2241519e+01
+    2.1875270e+01 2.1550937e+01 2.1005345e+01 2.0713135e+01 2.0049242e+01
+    1.9723887e+01 1.9246411e+01 1.8597119e+01 1.7936177e+01 1.7101922e+01
+    1.6329819e+01 1.5302525e+01 1.4278736e+01 1.2929014e+01 1.1106441e+01
+    9.1992565e+00 6.7002833e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 4.0970907e+00 7.7205303e+00 1.0005353e+01
+    1.1767953e+01 1.3296100e+01 1.4607584e+01 1.5707638e+01 1.6705946e+01
+    1.7674570e+01 1.8488747e+01 1.9180367e+01 1.9618261e+01 2.0033172e+01
+    2.0621552e+01 2.1104232e+01 2.1563096e+01 2.2036525e+01 2.2311374e+01
+    2.2562387e+01 2.2510099e+01 2.2643493e+01 2.2680195e+01 2.2667202e+01
+    2.2634559e+01 2.2358752e+01 2.2232350e+01 2.2105026e+01 2.1792255e+01
+    2.1438629e+01 2.1206587e+01 2.0775896e+01 2.0210704e+01 1.9601982e+01
+    1.9185211e+01 1.8817430e+01 1.8060993e+01 1.7521604e+01 1.6701336e+01
+    1.5865734e+01 1.4647261e+01 1.3393998e+01 1.1923261e+01 1.0068250e+01
+    7.9651526e+00 4.4809205e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 5.9760621e+00 8.7074067e+00
+    1.0622971e+01 1.2290221e+01 1.3670820e+01 1.4854568e+01 1.5960682e+01
+    1.6839039e+01 1.7723228e+01 1.8452454e+01 1.8951873e+01 1.9557758e+01
+    2.0126670e+01 2.0624102e+01 2.1228699e+01 2.1612290e+01 2.1872898e+01
+    2.2014292e+01 2.2038267e+01 2.2240728e+01 2.2228954e+01 2.2170107e+01
+    2.2044306e+01 2.1998742e+01 2.1964113e+01 2.1699380e+01 2.1471923e+01
+    2.0961436e+01 2.0685406e+01 2.0255404e+01 1.9729132e+01 1.9109297e+01
+    1.8540590e+01 1.7894940e+01 1.7168835e+01 1.6501312e+01 1.5724444e+01
+    1.4754484e+01 1.3563988e+01 1.2534474e+01 1.1128081e+01 8.9441913e+00
+    6.2157573e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 3.5616850e+00 7.2557762e+00
+    9.4997497e+00 1.1361346e+01 1.2805763e+01 1.4216081e+01 1.5434873e+01
+    1.6206239e+01 1.6940825e+01 1.7652061e+01 1.8352713e+01 1.8858638e+01
+    1.9394835e+01 1.9933104e+01 2.0452196e+01 2.0878950e+01 2.1134576e+01
+    2.1457092e+01 2.1579258e+01 2.1673090e+01 2.1715177e+01 2.1656543e+01
+    2.1457413e+01 2.1395528e+01 2.1380643e+01 2.1134095e+01 2.0771535e+01
+    2.0429298e+01 2.0122361e+01 1.9586966e+01 1.9035196e+01 1.8345532e+01
+    1.7828610e+01 1.7115749e+01 1.6419063e+01 1.5665054e+01 1.4702104e+01
+    1.3735140e+01 1.2762335e+01 1.1342635e+01 9.7533168e+00 7.2504137e+00
+    3.7836634e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 5.3084966e+00
+    8.0146267e+00 1.0072691e+01 1.1992021e+01 1.3207353e+01 1.4246153e+01
+    1.5175800e+01 1.6071550e+01 1.6880529e+01 1.7343538e+01 1.8042262e+01
+    1.8563990e+01 1.9033235e+01 1.9514369e+01 2.0074647e+01 2.0524424e+01
+    2.0697883e+01 2.0808525e+01 2.0946714e+01 2.1134932e+01 2.0931897e+01
+    2.0958210e+01 2.0941559e+01 2.0848867e+01 2.0737707e+01 2.0346888e+01
+    2.0078401e+01 1.9378154e+01 1.8821504e+01 1.8388693e+01 1.7651776e+01
+    1.6974436e+01 1.6199380e+01 1.5306129e+01 1.4709583e+01 1.3699713e+01
+    1.2681670e+01 1.1355594e+01 1.0006776e+01 8.0618481e+00 5.1464411e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    6.4345377e+00 8.9288482e+00 1.0624885e+01 1.2078125e+01 1.3337442e+01
+    1.4280823e+01 1.5166066e+01 1.6085345e+01 1.6869228e+01 1.7112773e+01
+    1.7692401e+01 1.8188183e+01 1.8859771e+01 1.9386676e+01 1.9755308e+01
+    2.0163164e+01 2.0190869e+01 2.0026412e+01 2.0103987e+01 2.0225061e+01
+    2.0323138e+01 2.0210983e+01 1.9989546e+01 1.9759727e+01 1.9408275e+01
+    1.9180896e+01 1.8656947e+01 1.8114916e+01 1.7449347e+01 1.6668485e+01
+    1.6145437e+01 1.5201192e+01 1.4484137e+01 1.3569722e+01 1.2732403e+01
+    1.1780273e+01 1.0256515e+01 8.2360853e+00 5.9374691e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    2.8139502e+00 6.7501259e+00 9.1724270e+00 1.0923534e+01 1.2117629e+01
+    1.3259946e+01 1.4271257e+01 1.5115986e+01 1.5681925e+01 1.6355216e+01
+    1.6895004e+01 1.7507744e+01 1.8074030e+01 1.8527180e+01 1.8983314e+01
+    1.9145075e+01 1.9375082e+01 1.9494058e+01 1.9551351e+01 1.9389439e+01
+    1.9259375e+01 1.9419955e+01 1.9353539e+01 1.9090912e+01 1.8822857e+01
+    1.8362787e+01 1.7696683e+01 1.7180480e+01 1.6544506e+01 1.5719994e+01
+    1.5128316e+01 1.4189469e+01 1.3288876e+01 1.2477184e+01 1.1287402e+01
+    9.9352364e+00 8.2522284e+00 6.2534638e+00 2.6143187e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 3.4191248e+00 7.0535011e+00 9.2665682e+00 1.0791616e+01
+    1.1957831e+01 1.2899673e+01 1.3767932e+01 1.4730189e+01 1.5366907e+01
+    1.6001116e+01 1.6587951e+01 1.7021580e+01 1.7473406e+01 1.8053386e+01
+    1.8428703e+01 1.8626369e+01 1.8592293e+01 1.8594933e+01 1.8466724e+01
+    1.8321019e+01 1.8364825e+01 1.8295099e+01 1.8062301e+01 1.7679102e+01
+    1.7237423e+01 1.6855323e+01 1.6276262e+01 1.5590173e+01 1.4708266e+01
+    1.4103093e+01 1.3119368e+01 1.2006608e+01 1.0984364e+01 9.7447042e+00
+    8.0990792e+00 5.9740998e+00 2.9526408e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 3.7792767e+00 7.0120747e+00 8.9524308e+00
+    1.0274212e+01 1.1555483e+01 1.2512117e+01 1.3473052e+01 1.4379106e+01
+    1.5085913e+01 1.5618613e+01 1.5900816e+01 1.6364965e+01 1.6588225e+01
+    1.7060425e+01 1.7443194e+01 1.7537373e+01 1.7524348e+01 1.7554326e+01
+    1.7452354e+01 1.7225824e+01 1.7231818e+01 1.7096335e+01 1.6966505e+01
+    1.6340825e+01 1.5654325e+01 1.4945662e+01 1.4353073e+01 1.3547586e+01
+    1.2891896e+01 1.1978430e+01 1.0872544e+01 9.4268211e+00 7.8494098e+00
+    5.9204825e+00 2.5647474e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 2.9459729e+00 6.4996405e+00
+    8.3101095e+00 9.7217286e+00 1.0828204e+01 1.1945039e+01 1.3018129e+01
+    1.3584123e+01 1.4066866e+01 1.4698067e+01 1.5353697e+01 1.5852444e+01
+    1.6125107e+01 1.6211426e+01 1.6398527e+01 1.6385805e+01 1.6484349e+01
+    1.6479628e+01 1.6238985e+01 1.6084538e+01 1.5888290e+01 1.5486881e+01
+    1.5246396e+01 1.4409799e+01 1.3876512e+01 1.3403999e+01 1.2330903e+01
+    1.1411211e+01 1.0338700e+01 9.0087819e+00 7.4968559e+00 5.3233074e+00
+    1.9127565e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    5.3109539e+00 7.4240248e+00 9.0466375e+00 1.0309014e+01 1.1227132e+01
+    1.1839946e+01 1.2433815e+01 1.3355428e+01 1.4156079e+01 1.4488606e+01
+    1.4858778e+01 1.4996767e+01 1.4959394e+01 1.5152149e+01 1.5142066e+01
+    1.5250846e+01 1.4969905e+01 1.4803414e+01 1.4594580e+01 1.4215396e+01
+    1.3614430e+01 1.3018616e+01 1.2364954e+01 1.1845931e+01 1.0875427e+01
+    9.7036930e+00 8.2380657e+00 6.8396267e+00 4.8576991e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 3.9577503e+00 6.4700022e+00 8.0703163e+00 9.2918132e+00
+    1.0130220e+01 1.0927157e+01 1.1737899e+01 1.2443776e+01 1.2928296e+01
+    1.3389025e+01 1.3344692e+01 1.3203762e+01 1.3459605e+01 1.3593607e+01
+    1.3549906e+01 1.3474569e+01 1.3366190e+01 1.3228394e+01 1.2597717e+01
+    1.2072813e+01 1.1481485e+01 1.0758845e+01 9.9862384e+00 8.8068638e+00
+    7.6188496e+00 5.7389666e+00 3.2494678e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 4.5970227e+00 6.3620131e+00
+    7.8190933e+00 8.8222402e+00 9.5747071e+00 1.0211303e+01 1.0783943e+01
+    1.1303060e+01 1.1622064e+01 1.1626524e+01 1.1676756e+01 1.1878522e+01
+    1.1862298e+01 1.1695109e+01 1.1564940e+01 1.1253049e+01 1.0686466e+01
+    1.0081499e+01 9.4598725e+00 8.6882081e+00 7.6340297e+00 6.2792864e+00
+    4.1341862e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    3.8400681e+00 5.7368939e+00 7.0454684e+00 7.9101990e+00 8.5176704e+00
+    9.0712609e+00 9.4196024e+00 9.6695729e+00 9.8180552e+00 9.8506478e+00
+    9.7828199e+00 9.6151153e+00 9.3779405e+00 8.8676590e+00 8.4506193e+00
+    7.6328827e+00 6.6350566e+00 5.3918524e+00 3.5213854e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 3.8526632e+00 5.1053514e+00
+    6.0134136e+00 6.6398422e+00 7.1554671e+00 7.1633359e+00 7.0785084e+00
+    6.8515000e+00 6.7900641e+00 6.4706098e+00 5.7379222e+00 4.8374066e+00
+    3.4954034e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
+    0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00
Index: /tags/1.6.0/examples/zoo/mesh/points.txt
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/points.txt	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/points.txt	(revision 6168)
@@ -0,0 +1,2500 @@
+    0.0 0.0
+    0.02040816326530612 0.0
+    0.04081632653061224 0.0
+    0.061224489795918366 0.0
+    0.08163265306122448 0.0
+    0.1020408163265306 0.0
+    0.12244897959183673 0.0
+    0.14285714285714285 0.0
+    0.16326530612244897 0.0
+    0.18367346938775508 0.0
+    0.2040816326530612 0.0
+    0.22448979591836732 0.0
+    0.24489795918367346 0.0
+    0.26530612244897955 0.0
+    0.2857142857142857 0.0
+    0.3061224489795918 0.0
+    0.32653061224489793 0.0
+    0.3469387755102041 0.0
+    0.36734693877551017 0.0
+    0.3877551020408163 0.0
+    0.4081632653061224 0.0
+    0.42857142857142855 0.0
+    0.44897959183673464 0.0
+    0.4693877551020408 0.0
+    0.4897959183673469 0.0
+    0.5102040816326531 0.0
+    0.5306122448979591 0.0
+    0.5510204081632653 0.0
+    0.5714285714285714 0.0
+    0.5918367346938775 0.0
+    0.6122448979591836 0.0
+    0.6326530612244897 0.0
+    0.6530612244897959 0.0
+    0.673469387755102 0.0
+    0.6938775510204082 0.0
+    0.7142857142857142 0.0
+    0.7346938775510203 0.0
+    0.7551020408163265 0.0
+    0.7755102040816326 0.0
+    0.7959183673469387 0.0
+    0.8163265306122448 0.0
+    0.836734693877551 0.0
+    0.8571428571428571 0.0
+    0.8775510204081632 0.0
+    0.8979591836734693 0.0
+    0.9183673469387754 0.0
+    0.9387755102040816 0.0
+    0.9591836734693877 0.0
+    0.9795918367346939 0.0
+    0.9999999999999999 0.0
+    0.0 0.02040816326530612
+    0.02040816326530612 0.02040816326530612
+    0.04081632653061224 0.02040816326530612
+    0.061224489795918366 0.02040816326530612
+    0.08163265306122448 0.02040816326530612
+    0.1020408163265306 0.02040816326530612
+    0.12244897959183673 0.02040816326530612
+    0.14285714285714285 0.02040816326530612
+    0.16326530612244897 0.02040816326530612
+    0.18367346938775508 0.02040816326530612
+    0.2040816326530612 0.02040816326530612
+    0.22448979591836732 0.02040816326530612
+    0.24489795918367346 0.02040816326530612
+    0.26530612244897955 0.02040816326530612
+    0.2857142857142857 0.02040816326530612
+    0.3061224489795918 0.02040816326530612
+    0.32653061224489793 0.02040816326530612
+    0.3469387755102041 0.02040816326530612
+    0.36734693877551017 0.02040816326530612
+    0.3877551020408163 0.02040816326530612
+    0.4081632653061224 0.02040816326530612
+    0.42857142857142855 0.02040816326530612
+    0.44897959183673464 0.02040816326530612
+    0.4693877551020408 0.02040816326530612
+    0.4897959183673469 0.02040816326530612
+    0.5102040816326531 0.02040816326530612
+    0.5306122448979591 0.02040816326530612
+    0.5510204081632653 0.02040816326530612
+    0.5714285714285714 0.02040816326530612
+    0.5918367346938775 0.02040816326530612
+    0.6122448979591836 0.02040816326530612
+    0.6326530612244897 0.02040816326530612
+    0.6530612244897959 0.02040816326530612
+    0.673469387755102 0.02040816326530612
+    0.6938775510204082 0.02040816326530612
+    0.7142857142857142 0.02040816326530612
+    0.7346938775510203 0.02040816326530612
+    0.7551020408163265 0.02040816326530612
+    0.7755102040816326 0.02040816326530612
+    0.7959183673469387 0.02040816326530612
+    0.8163265306122448 0.02040816326530612
+    0.836734693877551 0.02040816326530612
+    0.8571428571428571 0.02040816326530612
+    0.8775510204081632 0.02040816326530612
+    0.8979591836734693 0.02040816326530612
+    0.9183673469387754 0.02040816326530612
+    0.9387755102040816 0.02040816326530612
+    0.9591836734693877 0.02040816326530612
+    0.9795918367346939 0.02040816326530612
+    0.9999999999999999 0.02040816326530612
+    0.0 0.04081632653061224
+    0.02040816326530612 0.04081632653061224
+    0.04081632653061224 0.04081632653061224
+    0.061224489795918366 0.04081632653061224
+    0.08163265306122448 0.04081632653061224
+    0.1020408163265306 0.04081632653061224
+    0.12244897959183673 0.04081632653061224
+    0.14285714285714285 0.04081632653061224
+    0.16326530612244897 0.04081632653061224
+    0.18367346938775508 0.04081632653061224
+    0.2040816326530612 0.04081632653061224
+    0.22448979591836732 0.04081632653061224
+    0.24489795918367346 0.04081632653061224
+    0.26530612244897955 0.04081632653061224
+    0.2857142857142857 0.04081632653061224
+    0.3061224489795918 0.04081632653061224
+    0.32653061224489793 0.04081632653061224
+    0.3469387755102041 0.04081632653061224
+    0.36734693877551017 0.04081632653061224
+    0.3877551020408163 0.04081632653061224
+    0.4081632653061224 0.04081632653061224
+    0.42857142857142855 0.04081632653061224
+    0.44897959183673464 0.04081632653061224
+    0.4693877551020408 0.04081632653061224
+    0.4897959183673469 0.04081632653061224
+    0.5102040816326531 0.04081632653061224
+    0.5306122448979591 0.04081632653061224
+    0.5510204081632653 0.04081632653061224
+    0.5714285714285714 0.04081632653061224
+    0.5918367346938775 0.04081632653061224
+    0.6122448979591836 0.04081632653061224
+    0.6326530612244897 0.04081632653061224
+    0.6530612244897959 0.04081632653061224
+    0.673469387755102 0.04081632653061224
+    0.6938775510204082 0.04081632653061224
+    0.7142857142857142 0.04081632653061224
+    0.7346938775510203 0.04081632653061224
+    0.7551020408163265 0.04081632653061224
+    0.7755102040816326 0.04081632653061224
+    0.7959183673469387 0.04081632653061224
+    0.8163265306122448 0.04081632653061224
+    0.836734693877551 0.04081632653061224
+    0.8571428571428571 0.04081632653061224
+    0.8775510204081632 0.04081632653061224
+    0.8979591836734693 0.04081632653061224
+    0.9183673469387754 0.04081632653061224
+    0.9387755102040816 0.04081632653061224
+    0.9591836734693877 0.04081632653061224
+    0.9795918367346939 0.04081632653061224
+    0.9999999999999999 0.04081632653061224
+    0.0 0.061224489795918366
+    0.02040816326530612 0.061224489795918366
+    0.04081632653061224 0.061224489795918366
+    0.061224489795918366 0.061224489795918366
+    0.08163265306122448 0.061224489795918366
+    0.1020408163265306 0.061224489795918366
+    0.12244897959183673 0.061224489795918366
+    0.14285714285714285 0.061224489795918366
+    0.16326530612244897 0.061224489795918366
+    0.18367346938775508 0.061224489795918366
+    0.2040816326530612 0.061224489795918366
+    0.22448979591836732 0.061224489795918366
+    0.24489795918367346 0.061224489795918366
+    0.26530612244897955 0.061224489795918366
+    0.2857142857142857 0.061224489795918366
+    0.3061224489795918 0.061224489795918366
+    0.32653061224489793 0.061224489795918366
+    0.3469387755102041 0.061224489795918366
+    0.36734693877551017 0.061224489795918366
+    0.3877551020408163 0.061224489795918366
+    0.4081632653061224 0.061224489795918366
+    0.42857142857142855 0.061224489795918366
+    0.44897959183673464 0.061224489795918366
+    0.4693877551020408 0.061224489795918366
+    0.4897959183673469 0.061224489795918366
+    0.5102040816326531 0.061224489795918366
+    0.5306122448979591 0.061224489795918366
+    0.5510204081632653 0.061224489795918366
+    0.5714285714285714 0.061224489795918366
+    0.5918367346938775 0.061224489795918366
+    0.6122448979591836 0.061224489795918366
+    0.6326530612244897 0.061224489795918366
+    0.6530612244897959 0.061224489795918366
+    0.673469387755102 0.061224489795918366
+    0.6938775510204082 0.061224489795918366
+    0.7142857142857142 0.061224489795918366
+    0.7346938775510203 0.061224489795918366
+    0.7551020408163265 0.061224489795918366
+    0.7755102040816326 0.061224489795918366
+    0.7959183673469387 0.061224489795918366
+    0.8163265306122448 0.061224489795918366
+    0.836734693877551 0.061224489795918366
+    0.8571428571428571 0.061224489795918366
+    0.8775510204081632 0.061224489795918366
+    0.8979591836734693 0.061224489795918366
+    0.9183673469387754 0.061224489795918366
+    0.9387755102040816 0.061224489795918366
+    0.9591836734693877 0.061224489795918366
+    0.9795918367346939 0.061224489795918366
+    0.9999999999999999 0.061224489795918366
+    0.0 0.08163265306122448
+    0.02040816326530612 0.08163265306122448
+    0.04081632653061224 0.08163265306122448
+    0.061224489795918366 0.08163265306122448
+    0.08163265306122448 0.08163265306122448
+    0.1020408163265306 0.08163265306122448
+    0.12244897959183673 0.08163265306122448
+    0.14285714285714285 0.08163265306122448
+    0.16326530612244897 0.08163265306122448
+    0.18367346938775508 0.08163265306122448
+    0.2040816326530612 0.08163265306122448
+    0.22448979591836732 0.08163265306122448
+    0.24489795918367346 0.08163265306122448
+    0.26530612244897955 0.08163265306122448
+    0.2857142857142857 0.08163265306122448
+    0.3061224489795918 0.08163265306122448
+    0.32653061224489793 0.08163265306122448
+    0.3469387755102041 0.08163265306122448
+    0.36734693877551017 0.08163265306122448
+    0.3877551020408163 0.08163265306122448
+    0.4081632653061224 0.08163265306122448
+    0.42857142857142855 0.08163265306122448
+    0.44897959183673464 0.08163265306122448
+    0.4693877551020408 0.08163265306122448
+    0.4897959183673469 0.08163265306122448
+    0.5102040816326531 0.08163265306122448
+    0.5306122448979591 0.08163265306122448
+    0.5510204081632653 0.08163265306122448
+    0.5714285714285714 0.08163265306122448
+    0.5918367346938775 0.08163265306122448
+    0.6122448979591836 0.08163265306122448
+    0.6326530612244897 0.08163265306122448
+    0.6530612244897959 0.08163265306122448
+    0.673469387755102 0.08163265306122448
+    0.6938775510204082 0.08163265306122448
+    0.7142857142857142 0.08163265306122448
+    0.7346938775510203 0.08163265306122448
+    0.7551020408163265 0.08163265306122448
+    0.7755102040816326 0.08163265306122448
+    0.7959183673469387 0.08163265306122448
+    0.8163265306122448 0.08163265306122448
+    0.836734693877551 0.08163265306122448
+    0.8571428571428571 0.08163265306122448
+    0.8775510204081632 0.08163265306122448
+    0.8979591836734693 0.08163265306122448
+    0.9183673469387754 0.08163265306122448
+    0.9387755102040816 0.08163265306122448
+    0.9591836734693877 0.08163265306122448
+    0.9795918367346939 0.08163265306122448
+    0.9999999999999999 0.08163265306122448
+    0.0 0.1020408163265306
+    0.02040816326530612 0.1020408163265306
+    0.04081632653061224 0.1020408163265306
+    0.061224489795918366 0.1020408163265306
+    0.08163265306122448 0.1020408163265306
+    0.1020408163265306 0.1020408163265306
+    0.12244897959183673 0.1020408163265306
+    0.14285714285714285 0.1020408163265306
+    0.16326530612244897 0.1020408163265306
+    0.18367346938775508 0.1020408163265306
+    0.2040816326530612 0.1020408163265306
+    0.22448979591836732 0.1020408163265306
+    0.24489795918367346 0.1020408163265306
+    0.26530612244897955 0.1020408163265306
+    0.2857142857142857 0.1020408163265306
+    0.3061224489795918 0.1020408163265306
+    0.32653061224489793 0.1020408163265306
+    0.3469387755102041 0.1020408163265306
+    0.36734693877551017 0.1020408163265306
+    0.3877551020408163 0.1020408163265306
+    0.4081632653061224 0.1020408163265306
+    0.42857142857142855 0.1020408163265306
+    0.44897959183673464 0.1020408163265306
+    0.4693877551020408 0.1020408163265306
+    0.4897959183673469 0.1020408163265306
+    0.5102040816326531 0.1020408163265306
+    0.5306122448979591 0.1020408163265306
+    0.5510204081632653 0.1020408163265306
+    0.5714285714285714 0.1020408163265306
+    0.5918367346938775 0.1020408163265306
+    0.6122448979591836 0.1020408163265306
+    0.6326530612244897 0.1020408163265306
+    0.6530612244897959 0.1020408163265306
+    0.673469387755102 0.1020408163265306
+    0.6938775510204082 0.1020408163265306
+    0.7142857142857142 0.1020408163265306
+    0.7346938775510203 0.1020408163265306
+    0.7551020408163265 0.1020408163265306
+    0.7755102040816326 0.1020408163265306
+    0.7959183673469387 0.1020408163265306
+    0.8163265306122448 0.1020408163265306
+    0.836734693877551 0.1020408163265306
+    0.8571428571428571 0.1020408163265306
+    0.8775510204081632 0.1020408163265306
+    0.8979591836734693 0.1020408163265306
+    0.9183673469387754 0.1020408163265306
+    0.9387755102040816 0.1020408163265306
+    0.9591836734693877 0.1020408163265306
+    0.9795918367346939 0.1020408163265306
+    0.9999999999999999 0.1020408163265306
+    0.0 0.12244897959183673
+    0.02040816326530612 0.12244897959183673
+    0.04081632653061224 0.12244897959183673
+    0.061224489795918366 0.12244897959183673
+    0.08163265306122448 0.12244897959183673
+    0.1020408163265306 0.12244897959183673
+    0.12244897959183673 0.12244897959183673
+    0.14285714285714285 0.12244897959183673
+    0.16326530612244897 0.12244897959183673
+    0.18367346938775508 0.12244897959183673
+    0.2040816326530612 0.12244897959183673
+    0.22448979591836732 0.12244897959183673
+    0.24489795918367346 0.12244897959183673
+    0.26530612244897955 0.12244897959183673
+    0.2857142857142857 0.12244897959183673
+    0.3061224489795918 0.12244897959183673
+    0.32653061224489793 0.12244897959183673
+    0.3469387755102041 0.12244897959183673
+    0.36734693877551017 0.12244897959183673
+    0.3877551020408163 0.12244897959183673
+    0.4081632653061224 0.12244897959183673
+    0.42857142857142855 0.12244897959183673
+    0.44897959183673464 0.12244897959183673
+    0.4693877551020408 0.12244897959183673
+    0.4897959183673469 0.12244897959183673
+    0.5102040816326531 0.12244897959183673
+    0.5306122448979591 0.12244897959183673
+    0.5510204081632653 0.12244897959183673
+    0.5714285714285714 0.12244897959183673
+    0.5918367346938775 0.12244897959183673
+    0.6122448979591836 0.12244897959183673
+    0.6326530612244897 0.12244897959183673
+    0.6530612244897959 0.12244897959183673
+    0.673469387755102 0.12244897959183673
+    0.6938775510204082 0.12244897959183673
+    0.7142857142857142 0.12244897959183673
+    0.7346938775510203 0.12244897959183673
+    0.7551020408163265 0.12244897959183673
+    0.7755102040816326 0.12244897959183673
+    0.7959183673469387 0.12244897959183673
+    0.8163265306122448 0.12244897959183673
+    0.836734693877551 0.12244897959183673
+    0.8571428571428571 0.12244897959183673
+    0.8775510204081632 0.12244897959183673
+    0.8979591836734693 0.12244897959183673
+    0.9183673469387754 0.12244897959183673
+    0.9387755102040816 0.12244897959183673
+    0.9591836734693877 0.12244897959183673
+    0.9795918367346939 0.12244897959183673
+    0.9999999999999999 0.12244897959183673
+    0.0 0.14285714285714285
+    0.02040816326530612 0.14285714285714285
+    0.04081632653061224 0.14285714285714285
+    0.061224489795918366 0.14285714285714285
+    0.08163265306122448 0.14285714285714285
+    0.1020408163265306 0.14285714285714285
+    0.12244897959183673 0.14285714285714285
+    0.14285714285714285 0.14285714285714285
+    0.16326530612244897 0.14285714285714285
+    0.18367346938775508 0.14285714285714285
+    0.2040816326530612 0.14285714285714285
+    0.22448979591836732 0.14285714285714285
+    0.24489795918367346 0.14285714285714285
+    0.26530612244897955 0.14285714285714285
+    0.2857142857142857 0.14285714285714285
+    0.3061224489795918 0.14285714285714285
+    0.32653061224489793 0.14285714285714285
+    0.3469387755102041 0.14285714285714285
+    0.36734693877551017 0.14285714285714285
+    0.3877551020408163 0.14285714285714285
+    0.4081632653061224 0.14285714285714285
+    0.42857142857142855 0.14285714285714285
+    0.44897959183673464 0.14285714285714285
+    0.4693877551020408 0.14285714285714285
+    0.4897959183673469 0.14285714285714285
+    0.5102040816326531 0.14285714285714285
+    0.5306122448979591 0.14285714285714285
+    0.5510204081632653 0.14285714285714285
+    0.5714285714285714 0.14285714285714285
+    0.5918367346938775 0.14285714285714285
+    0.6122448979591836 0.14285714285714285
+    0.6326530612244897 0.14285714285714285
+    0.6530612244897959 0.14285714285714285
+    0.673469387755102 0.14285714285714285
+    0.6938775510204082 0.14285714285714285
+    0.7142857142857142 0.14285714285714285
+    0.7346938775510203 0.14285714285714285
+    0.7551020408163265 0.14285714285714285
+    0.7755102040816326 0.14285714285714285
+    0.7959183673469387 0.14285714285714285
+    0.8163265306122448 0.14285714285714285
+    0.836734693877551 0.14285714285714285
+    0.8571428571428571 0.14285714285714285
+    0.8775510204081632 0.14285714285714285
+    0.8979591836734693 0.14285714285714285
+    0.9183673469387754 0.14285714285714285
+    0.9387755102040816 0.14285714285714285
+    0.9591836734693877 0.14285714285714285
+    0.9795918367346939 0.14285714285714285
+    0.9999999999999999 0.14285714285714285
+    0.0 0.16326530612244897
+    0.02040816326530612 0.16326530612244897
+    0.04081632653061224 0.16326530612244897
+    0.061224489795918366 0.16326530612244897
+    0.08163265306122448 0.16326530612244897
+    0.1020408163265306 0.16326530612244897
+    0.12244897959183673 0.16326530612244897
+    0.14285714285714285 0.16326530612244897
+    0.16326530612244897 0.16326530612244897
+    0.18367346938775508 0.16326530612244897
+    0.2040816326530612 0.16326530612244897
+    0.22448979591836732 0.16326530612244897
+    0.24489795918367346 0.16326530612244897
+    0.26530612244897955 0.16326530612244897
+    0.2857142857142857 0.16326530612244897
+    0.3061224489795918 0.16326530612244897
+    0.32653061224489793 0.16326530612244897
+    0.3469387755102041 0.16326530612244897
+    0.36734693877551017 0.16326530612244897
+    0.3877551020408163 0.16326530612244897
+    0.4081632653061224 0.16326530612244897
+    0.42857142857142855 0.16326530612244897
+    0.44897959183673464 0.16326530612244897
+    0.4693877551020408 0.16326530612244897
+    0.4897959183673469 0.16326530612244897
+    0.5102040816326531 0.16326530612244897
+    0.5306122448979591 0.16326530612244897
+    0.5510204081632653 0.16326530612244897
+    0.5714285714285714 0.16326530612244897
+    0.5918367346938775 0.16326530612244897
+    0.6122448979591836 0.16326530612244897
+    0.6326530612244897 0.16326530612244897
+    0.6530612244897959 0.16326530612244897
+    0.673469387755102 0.16326530612244897
+    0.6938775510204082 0.16326530612244897
+    0.7142857142857142 0.16326530612244897
+    0.7346938775510203 0.16326530612244897
+    0.7551020408163265 0.16326530612244897
+    0.7755102040816326 0.16326530612244897
+    0.7959183673469387 0.16326530612244897
+    0.8163265306122448 0.16326530612244897
+    0.836734693877551 0.16326530612244897
+    0.8571428571428571 0.16326530612244897
+    0.8775510204081632 0.16326530612244897
+    0.8979591836734693 0.16326530612244897
+    0.9183673469387754 0.16326530612244897
+    0.9387755102040816 0.16326530612244897
+    0.9591836734693877 0.16326530612244897
+    0.9795918367346939 0.16326530612244897
+    0.9999999999999999 0.16326530612244897
+    0.0 0.18367346938775508
+    0.02040816326530612 0.18367346938775508
+    0.04081632653061224 0.18367346938775508
+    0.061224489795918366 0.18367346938775508
+    0.08163265306122448 0.18367346938775508
+    0.1020408163265306 0.18367346938775508
+    0.12244897959183673 0.18367346938775508
+    0.14285714285714285 0.18367346938775508
+    0.16326530612244897 0.18367346938775508
+    0.18367346938775508 0.18367346938775508
+    0.2040816326530612 0.18367346938775508
+    0.22448979591836732 0.18367346938775508
+    0.24489795918367346 0.18367346938775508
+    0.26530612244897955 0.18367346938775508
+    0.2857142857142857 0.18367346938775508
+    0.3061224489795918 0.18367346938775508
+    0.32653061224489793 0.18367346938775508
+    0.3469387755102041 0.18367346938775508
+    0.36734693877551017 0.18367346938775508
+    0.3877551020408163 0.18367346938775508
+    0.4081632653061224 0.18367346938775508
+    0.42857142857142855 0.18367346938775508
+    0.44897959183673464 0.18367346938775508
+    0.4693877551020408 0.18367346938775508
+    0.4897959183673469 0.18367346938775508
+    0.5102040816326531 0.18367346938775508
+    0.5306122448979591 0.18367346938775508
+    0.5510204081632653 0.18367346938775508
+    0.5714285714285714 0.18367346938775508
+    0.5918367346938775 0.18367346938775508
+    0.6122448979591836 0.18367346938775508
+    0.6326530612244897 0.18367346938775508
+    0.6530612244897959 0.18367346938775508
+    0.673469387755102 0.18367346938775508
+    0.6938775510204082 0.18367346938775508
+    0.7142857142857142 0.18367346938775508
+    0.7346938775510203 0.18367346938775508
+    0.7551020408163265 0.18367346938775508
+    0.7755102040816326 0.18367346938775508
+    0.7959183673469387 0.18367346938775508
+    0.8163265306122448 0.18367346938775508
+    0.836734693877551 0.18367346938775508
+    0.8571428571428571 0.18367346938775508
+    0.8775510204081632 0.18367346938775508
+    0.8979591836734693 0.18367346938775508
+    0.9183673469387754 0.18367346938775508
+    0.9387755102040816 0.18367346938775508
+    0.9591836734693877 0.18367346938775508
+    0.9795918367346939 0.18367346938775508
+    0.9999999999999999 0.18367346938775508
+    0.0 0.2040816326530612
+    0.02040816326530612 0.2040816326530612
+    0.04081632653061224 0.2040816326530612
+    0.061224489795918366 0.2040816326530612
+    0.08163265306122448 0.2040816326530612
+    0.1020408163265306 0.2040816326530612
+    0.12244897959183673 0.2040816326530612
+    0.14285714285714285 0.2040816326530612
+    0.16326530612244897 0.2040816326530612
+    0.18367346938775508 0.2040816326530612
+    0.2040816326530612 0.2040816326530612
+    0.22448979591836732 0.2040816326530612
+    0.24489795918367346 0.2040816326530612
+    0.26530612244897955 0.2040816326530612
+    0.2857142857142857 0.2040816326530612
+    0.3061224489795918 0.2040816326530612
+    0.32653061224489793 0.2040816326530612
+    0.3469387755102041 0.2040816326530612
+    0.36734693877551017 0.2040816326530612
+    0.3877551020408163 0.2040816326530612
+    0.4081632653061224 0.2040816326530612
+    0.42857142857142855 0.2040816326530612
+    0.44897959183673464 0.2040816326530612
+    0.4693877551020408 0.2040816326530612
+    0.4897959183673469 0.2040816326530612
+    0.5102040816326531 0.2040816326530612
+    0.5306122448979591 0.2040816326530612
+    0.5510204081632653 0.2040816326530612
+    0.5714285714285714 0.2040816326530612
+    0.5918367346938775 0.2040816326530612
+    0.6122448979591836 0.2040816326530612
+    0.6326530612244897 0.2040816326530612
+    0.6530612244897959 0.2040816326530612
+    0.673469387755102 0.2040816326530612
+    0.6938775510204082 0.2040816326530612
+    0.7142857142857142 0.2040816326530612
+    0.7346938775510203 0.2040816326530612
+    0.7551020408163265 0.2040816326530612
+    0.7755102040816326 0.2040816326530612
+    0.7959183673469387 0.2040816326530612
+    0.8163265306122448 0.2040816326530612
+    0.836734693877551 0.2040816326530612
+    0.8571428571428571 0.2040816326530612
+    0.8775510204081632 0.2040816326530612
+    0.8979591836734693 0.2040816326530612
+    0.9183673469387754 0.2040816326530612
+    0.9387755102040816 0.2040816326530612
+    0.9591836734693877 0.2040816326530612
+    0.9795918367346939 0.2040816326530612
+    0.9999999999999999 0.2040816326530612
+    0.0 0.22448979591836732
+    0.02040816326530612 0.22448979591836732
+    0.04081632653061224 0.22448979591836732
+    0.061224489795918366 0.22448979591836732
+    0.08163265306122448 0.22448979591836732
+    0.1020408163265306 0.22448979591836732
+    0.12244897959183673 0.22448979591836732
+    0.14285714285714285 0.22448979591836732
+    0.16326530612244897 0.22448979591836732
+    0.18367346938775508 0.22448979591836732
+    0.2040816326530612 0.22448979591836732
+    0.22448979591836732 0.22448979591836732
+    0.24489795918367346 0.22448979591836732
+    0.26530612244897955 0.22448979591836732
+    0.2857142857142857 0.22448979591836732
+    0.3061224489795918 0.22448979591836732
+    0.32653061224489793 0.22448979591836732
+    0.3469387755102041 0.22448979591836732
+    0.36734693877551017 0.22448979591836732
+    0.3877551020408163 0.22448979591836732
+    0.4081632653061224 0.22448979591836732
+    0.42857142857142855 0.22448979591836732
+    0.44897959183673464 0.22448979591836732
+    0.4693877551020408 0.22448979591836732
+    0.4897959183673469 0.22448979591836732
+    0.5102040816326531 0.22448979591836732
+    0.5306122448979591 0.22448979591836732
+    0.5510204081632653 0.22448979591836732
+    0.5714285714285714 0.22448979591836732
+    0.5918367346938775 0.22448979591836732
+    0.6122448979591836 0.22448979591836732
+    0.6326530612244897 0.22448979591836732
+    0.6530612244897959 0.22448979591836732
+    0.673469387755102 0.22448979591836732
+    0.6938775510204082 0.22448979591836732
+    0.7142857142857142 0.22448979591836732
+    0.7346938775510203 0.22448979591836732
+    0.7551020408163265 0.22448979591836732
+    0.7755102040816326 0.22448979591836732
+    0.7959183673469387 0.22448979591836732
+    0.8163265306122448 0.22448979591836732
+    0.836734693877551 0.22448979591836732
+    0.8571428571428571 0.22448979591836732
+    0.8775510204081632 0.22448979591836732
+    0.8979591836734693 0.22448979591836732
+    0.9183673469387754 0.22448979591836732
+    0.9387755102040816 0.22448979591836732
+    0.9591836734693877 0.22448979591836732
+    0.9795918367346939 0.22448979591836732
+    0.9999999999999999 0.22448979591836732
+    0.0 0.24489795918367346
+    0.02040816326530612 0.24489795918367346
+    0.04081632653061224 0.24489795918367346
+    0.061224489795918366 0.24489795918367346
+    0.08163265306122448 0.24489795918367346
+    0.1020408163265306 0.24489795918367346
+    0.12244897959183673 0.24489795918367346
+    0.14285714285714285 0.24489795918367346
+    0.16326530612244897 0.24489795918367346
+    0.18367346938775508 0.24489795918367346
+    0.2040816326530612 0.24489795918367346
+    0.22448979591836732 0.24489795918367346
+    0.24489795918367346 0.24489795918367346
+    0.26530612244897955 0.24489795918367346
+    0.2857142857142857 0.24489795918367346
+    0.3061224489795918 0.24489795918367346
+    0.32653061224489793 0.24489795918367346
+    0.3469387755102041 0.24489795918367346
+    0.36734693877551017 0.24489795918367346
+    0.3877551020408163 0.24489795918367346
+    0.4081632653061224 0.24489795918367346
+    0.42857142857142855 0.24489795918367346
+    0.44897959183673464 0.24489795918367346
+    0.4693877551020408 0.24489795918367346
+    0.4897959183673469 0.24489795918367346
+    0.5102040816326531 0.24489795918367346
+    0.5306122448979591 0.24489795918367346
+    0.5510204081632653 0.24489795918367346
+    0.5714285714285714 0.24489795918367346
+    0.5918367346938775 0.24489795918367346
+    0.6122448979591836 0.24489795918367346
+    0.6326530612244897 0.24489795918367346
+    0.6530612244897959 0.24489795918367346
+    0.673469387755102 0.24489795918367346
+    0.6938775510204082 0.24489795918367346
+    0.7142857142857142 0.24489795918367346
+    0.7346938775510203 0.24489795918367346
+    0.7551020408163265 0.24489795918367346
+    0.7755102040816326 0.24489795918367346
+    0.7959183673469387 0.24489795918367346
+    0.8163265306122448 0.24489795918367346
+    0.836734693877551 0.24489795918367346
+    0.8571428571428571 0.24489795918367346
+    0.8775510204081632 0.24489795918367346
+    0.8979591836734693 0.24489795918367346
+    0.9183673469387754 0.24489795918367346
+    0.9387755102040816 0.24489795918367346
+    0.9591836734693877 0.24489795918367346
+    0.9795918367346939 0.24489795918367346
+    0.9999999999999999 0.24489795918367346
+    0.0 0.26530612244897955
+    0.02040816326530612 0.26530612244897955
+    0.04081632653061224 0.26530612244897955
+    0.061224489795918366 0.26530612244897955
+    0.08163265306122448 0.26530612244897955
+    0.1020408163265306 0.26530612244897955
+    0.12244897959183673 0.26530612244897955
+    0.14285714285714285 0.26530612244897955
+    0.16326530612244897 0.26530612244897955
+    0.18367346938775508 0.26530612244897955
+    0.2040816326530612 0.26530612244897955
+    0.22448979591836732 0.26530612244897955
+    0.24489795918367346 0.26530612244897955
+    0.26530612244897955 0.26530612244897955
+    0.2857142857142857 0.26530612244897955
+    0.3061224489795918 0.26530612244897955
+    0.32653061224489793 0.26530612244897955
+    0.3469387755102041 0.26530612244897955
+    0.36734693877551017 0.26530612244897955
+    0.3877551020408163 0.26530612244897955
+    0.4081632653061224 0.26530612244897955
+    0.42857142857142855 0.26530612244897955
+    0.44897959183673464 0.26530612244897955
+    0.4693877551020408 0.26530612244897955
+    0.4897959183673469 0.26530612244897955
+    0.5102040816326531 0.26530612244897955
+    0.5306122448979591 0.26530612244897955
+    0.5510204081632653 0.26530612244897955
+    0.5714285714285714 0.26530612244897955
+    0.5918367346938775 0.26530612244897955
+    0.6122448979591836 0.26530612244897955
+    0.6326530612244897 0.26530612244897955
+    0.6530612244897959 0.26530612244897955
+    0.673469387755102 0.26530612244897955
+    0.6938775510204082 0.26530612244897955
+    0.7142857142857142 0.26530612244897955
+    0.7346938775510203 0.26530612244897955
+    0.7551020408163265 0.26530612244897955
+    0.7755102040816326 0.26530612244897955
+    0.7959183673469387 0.26530612244897955
+    0.8163265306122448 0.26530612244897955
+    0.836734693877551 0.26530612244897955
+    0.8571428571428571 0.26530612244897955
+    0.8775510204081632 0.26530612244897955
+    0.8979591836734693 0.26530612244897955
+    0.9183673469387754 0.26530612244897955
+    0.9387755102040816 0.26530612244897955
+    0.9591836734693877 0.26530612244897955
+    0.9795918367346939 0.26530612244897955
+    0.9999999999999999 0.26530612244897955
+    0.0 0.2857142857142857
+    0.02040816326530612 0.2857142857142857
+    0.04081632653061224 0.2857142857142857
+    0.061224489795918366 0.2857142857142857
+    0.08163265306122448 0.2857142857142857
+    0.1020408163265306 0.2857142857142857
+    0.12244897959183673 0.2857142857142857
+    0.14285714285714285 0.2857142857142857
+    0.16326530612244897 0.2857142857142857
+    0.18367346938775508 0.2857142857142857
+    0.2040816326530612 0.2857142857142857
+    0.22448979591836732 0.2857142857142857
+    0.24489795918367346 0.2857142857142857
+    0.26530612244897955 0.2857142857142857
+    0.2857142857142857 0.2857142857142857
+    0.3061224489795918 0.2857142857142857
+    0.32653061224489793 0.2857142857142857
+    0.3469387755102041 0.2857142857142857
+    0.36734693877551017 0.2857142857142857
+    0.3877551020408163 0.2857142857142857
+    0.4081632653061224 0.2857142857142857
+    0.42857142857142855 0.2857142857142857
+    0.44897959183673464 0.2857142857142857
+    0.4693877551020408 0.2857142857142857
+    0.4897959183673469 0.2857142857142857
+    0.5102040816326531 0.2857142857142857
+    0.5306122448979591 0.2857142857142857
+    0.5510204081632653 0.2857142857142857
+    0.5714285714285714 0.2857142857142857
+    0.5918367346938775 0.2857142857142857
+    0.6122448979591836 0.2857142857142857
+    0.6326530612244897 0.2857142857142857
+    0.6530612244897959 0.2857142857142857
+    0.673469387755102 0.2857142857142857
+    0.6938775510204082 0.2857142857142857
+    0.7142857142857142 0.2857142857142857
+    0.7346938775510203 0.2857142857142857
+    0.7551020408163265 0.2857142857142857
+    0.7755102040816326 0.2857142857142857
+    0.7959183673469387 0.2857142857142857
+    0.8163265306122448 0.2857142857142857
+    0.836734693877551 0.2857142857142857
+    0.8571428571428571 0.2857142857142857
+    0.8775510204081632 0.2857142857142857
+    0.8979591836734693 0.2857142857142857
+    0.9183673469387754 0.2857142857142857
+    0.9387755102040816 0.2857142857142857
+    0.9591836734693877 0.2857142857142857
+    0.9795918367346939 0.2857142857142857
+    0.9999999999999999 0.2857142857142857
+    0.0 0.3061224489795918
+    0.02040816326530612 0.3061224489795918
+    0.04081632653061224 0.3061224489795918
+    0.061224489795918366 0.3061224489795918
+    0.08163265306122448 0.3061224489795918
+    0.1020408163265306 0.3061224489795918
+    0.12244897959183673 0.3061224489795918
+    0.14285714285714285 0.3061224489795918
+    0.16326530612244897 0.3061224489795918
+    0.18367346938775508 0.3061224489795918
+    0.2040816326530612 0.3061224489795918
+    0.22448979591836732 0.3061224489795918
+    0.24489795918367346 0.3061224489795918
+    0.26530612244897955 0.3061224489795918
+    0.2857142857142857 0.3061224489795918
+    0.3061224489795918 0.3061224489795918
+    0.32653061224489793 0.3061224489795918
+    0.3469387755102041 0.3061224489795918
+    0.36734693877551017 0.3061224489795918
+    0.3877551020408163 0.3061224489795918
+    0.4081632653061224 0.3061224489795918
+    0.42857142857142855 0.3061224489795918
+    0.44897959183673464 0.3061224489795918
+    0.4693877551020408 0.3061224489795918
+    0.4897959183673469 0.3061224489795918
+    0.5102040816326531 0.3061224489795918
+    0.5306122448979591 0.3061224489795918
+    0.5510204081632653 0.3061224489795918
+    0.5714285714285714 0.3061224489795918
+    0.5918367346938775 0.3061224489795918
+    0.6122448979591836 0.3061224489795918
+    0.6326530612244897 0.3061224489795918
+    0.6530612244897959 0.3061224489795918
+    0.673469387755102 0.3061224489795918
+    0.6938775510204082 0.3061224489795918
+    0.7142857142857142 0.3061224489795918
+    0.7346938775510203 0.3061224489795918
+    0.7551020408163265 0.3061224489795918
+    0.7755102040816326 0.3061224489795918
+    0.7959183673469387 0.3061224489795918
+    0.8163265306122448 0.3061224489795918
+    0.836734693877551 0.3061224489795918
+    0.8571428571428571 0.3061224489795918
+    0.8775510204081632 0.3061224489795918
+    0.8979591836734693 0.3061224489795918
+    0.9183673469387754 0.3061224489795918
+    0.9387755102040816 0.3061224489795918
+    0.9591836734693877 0.3061224489795918
+    0.9795918367346939 0.3061224489795918
+    0.9999999999999999 0.3061224489795918
+    0.0 0.32653061224489793
+    0.02040816326530612 0.32653061224489793
+    0.04081632653061224 0.32653061224489793
+    0.061224489795918366 0.32653061224489793
+    0.08163265306122448 0.32653061224489793
+    0.1020408163265306 0.32653061224489793
+    0.12244897959183673 0.32653061224489793
+    0.14285714285714285 0.32653061224489793
+    0.16326530612244897 0.32653061224489793
+    0.18367346938775508 0.32653061224489793
+    0.2040816326530612 0.32653061224489793
+    0.22448979591836732 0.32653061224489793
+    0.24489795918367346 0.32653061224489793
+    0.26530612244897955 0.32653061224489793
+    0.2857142857142857 0.32653061224489793
+    0.3061224489795918 0.32653061224489793
+    0.32653061224489793 0.32653061224489793
+    0.3469387755102041 0.32653061224489793
+    0.36734693877551017 0.32653061224489793
+    0.3877551020408163 0.32653061224489793
+    0.4081632653061224 0.32653061224489793
+    0.42857142857142855 0.32653061224489793
+    0.44897959183673464 0.32653061224489793
+    0.4693877551020408 0.32653061224489793
+    0.4897959183673469 0.32653061224489793
+    0.5102040816326531 0.32653061224489793
+    0.5306122448979591 0.32653061224489793
+    0.5510204081632653 0.32653061224489793
+    0.5714285714285714 0.32653061224489793
+    0.5918367346938775 0.32653061224489793
+    0.6122448979591836 0.32653061224489793
+    0.6326530612244897 0.32653061224489793
+    0.6530612244897959 0.32653061224489793
+    0.673469387755102 0.32653061224489793
+    0.6938775510204082 0.32653061224489793
+    0.7142857142857142 0.32653061224489793
+    0.7346938775510203 0.32653061224489793
+    0.7551020408163265 0.32653061224489793
+    0.7755102040816326 0.32653061224489793
+    0.7959183673469387 0.32653061224489793
+    0.8163265306122448 0.32653061224489793
+    0.836734693877551 0.32653061224489793
+    0.8571428571428571 0.32653061224489793
+    0.8775510204081632 0.32653061224489793
+    0.8979591836734693 0.32653061224489793
+    0.9183673469387754 0.32653061224489793
+    0.9387755102040816 0.32653061224489793
+    0.9591836734693877 0.32653061224489793
+    0.9795918367346939 0.32653061224489793
+    0.9999999999999999 0.32653061224489793
+    0.0 0.3469387755102041
+    0.02040816326530612 0.3469387755102041
+    0.04081632653061224 0.3469387755102041
+    0.061224489795918366 0.3469387755102041
+    0.08163265306122448 0.3469387755102041
+    0.1020408163265306 0.3469387755102041
+    0.12244897959183673 0.3469387755102041
+    0.14285714285714285 0.3469387755102041
+    0.16326530612244897 0.3469387755102041
+    0.18367346938775508 0.3469387755102041
+    0.2040816326530612 0.3469387755102041
+    0.22448979591836732 0.3469387755102041
+    0.24489795918367346 0.3469387755102041
+    0.26530612244897955 0.3469387755102041
+    0.2857142857142857 0.3469387755102041
+    0.3061224489795918 0.3469387755102041
+    0.32653061224489793 0.3469387755102041
+    0.3469387755102041 0.3469387755102041
+    0.36734693877551017 0.3469387755102041
+    0.3877551020408163 0.3469387755102041
+    0.4081632653061224 0.3469387755102041
+    0.42857142857142855 0.3469387755102041
+    0.44897959183673464 0.3469387755102041
+    0.4693877551020408 0.3469387755102041
+    0.4897959183673469 0.3469387755102041
+    0.5102040816326531 0.3469387755102041
+    0.5306122448979591 0.3469387755102041
+    0.5510204081632653 0.3469387755102041
+    0.5714285714285714 0.3469387755102041
+    0.5918367346938775 0.3469387755102041
+    0.6122448979591836 0.3469387755102041
+    0.6326530612244897 0.3469387755102041
+    0.6530612244897959 0.3469387755102041
+    0.673469387755102 0.3469387755102041
+    0.6938775510204082 0.3469387755102041
+    0.7142857142857142 0.3469387755102041
+    0.7346938775510203 0.3469387755102041
+    0.7551020408163265 0.3469387755102041
+    0.7755102040816326 0.3469387755102041
+    0.7959183673469387 0.3469387755102041
+    0.8163265306122448 0.3469387755102041
+    0.836734693877551 0.3469387755102041
+    0.8571428571428571 0.3469387755102041
+    0.8775510204081632 0.3469387755102041
+    0.8979591836734693 0.3469387755102041
+    0.9183673469387754 0.3469387755102041
+    0.9387755102040816 0.3469387755102041
+    0.9591836734693877 0.3469387755102041
+    0.9795918367346939 0.3469387755102041
+    0.9999999999999999 0.3469387755102041
+    0.0 0.36734693877551017
+    0.02040816326530612 0.36734693877551017
+    0.04081632653061224 0.36734693877551017
+    0.061224489795918366 0.36734693877551017
+    0.08163265306122448 0.36734693877551017
+    0.1020408163265306 0.36734693877551017
+    0.12244897959183673 0.36734693877551017
+    0.14285714285714285 0.36734693877551017
+    0.16326530612244897 0.36734693877551017
+    0.18367346938775508 0.36734693877551017
+    0.2040816326530612 0.36734693877551017
+    0.22448979591836732 0.36734693877551017
+    0.24489795918367346 0.36734693877551017
+    0.26530612244897955 0.36734693877551017
+    0.2857142857142857 0.36734693877551017
+    0.3061224489795918 0.36734693877551017
+    0.32653061224489793 0.36734693877551017
+    0.3469387755102041 0.36734693877551017
+    0.36734693877551017 0.36734693877551017
+    0.3877551020408163 0.36734693877551017
+    0.4081632653061224 0.36734693877551017
+    0.42857142857142855 0.36734693877551017
+    0.44897959183673464 0.36734693877551017
+    0.4693877551020408 0.36734693877551017
+    0.4897959183673469 0.36734693877551017
+    0.5102040816326531 0.36734693877551017
+    0.5306122448979591 0.36734693877551017
+    0.5510204081632653 0.36734693877551017
+    0.5714285714285714 0.36734693877551017
+    0.5918367346938775 0.36734693877551017
+    0.6122448979591836 0.36734693877551017
+    0.6326530612244897 0.36734693877551017
+    0.6530612244897959 0.36734693877551017
+    0.673469387755102 0.36734693877551017
+    0.6938775510204082 0.36734693877551017
+    0.7142857142857142 0.36734693877551017
+    0.7346938775510203 0.36734693877551017
+    0.7551020408163265 0.36734693877551017
+    0.7755102040816326 0.36734693877551017
+    0.7959183673469387 0.36734693877551017
+    0.8163265306122448 0.36734693877551017
+    0.836734693877551 0.36734693877551017
+    0.8571428571428571 0.36734693877551017
+    0.8775510204081632 0.36734693877551017
+    0.8979591836734693 0.36734693877551017
+    0.9183673469387754 0.36734693877551017
+    0.9387755102040816 0.36734693877551017
+    0.9591836734693877 0.36734693877551017
+    0.9795918367346939 0.36734693877551017
+    0.9999999999999999 0.36734693877551017
+    0.0 0.3877551020408163
+    0.02040816326530612 0.3877551020408163
+    0.04081632653061224 0.3877551020408163
+    0.061224489795918366 0.3877551020408163
+    0.08163265306122448 0.3877551020408163
+    0.1020408163265306 0.3877551020408163
+    0.12244897959183673 0.3877551020408163
+    0.14285714285714285 0.3877551020408163
+    0.16326530612244897 0.3877551020408163
+    0.18367346938775508 0.3877551020408163
+    0.2040816326530612 0.3877551020408163
+    0.22448979591836732 0.3877551020408163
+    0.24489795918367346 0.3877551020408163
+    0.26530612244897955 0.3877551020408163
+    0.2857142857142857 0.3877551020408163
+    0.3061224489795918 0.3877551020408163
+    0.32653061224489793 0.3877551020408163
+    0.3469387755102041 0.3877551020408163
+    0.36734693877551017 0.3877551020408163
+    0.3877551020408163 0.3877551020408163
+    0.4081632653061224 0.3877551020408163
+    0.42857142857142855 0.3877551020408163
+    0.44897959183673464 0.3877551020408163
+    0.4693877551020408 0.3877551020408163
+    0.4897959183673469 0.3877551020408163
+    0.5102040816326531 0.3877551020408163
+    0.5306122448979591 0.3877551020408163
+    0.5510204081632653 0.3877551020408163
+    0.5714285714285714 0.3877551020408163
+    0.5918367346938775 0.3877551020408163
+    0.6122448979591836 0.3877551020408163
+    0.6326530612244897 0.3877551020408163
+    0.6530612244897959 0.3877551020408163
+    0.673469387755102 0.3877551020408163
+    0.6938775510204082 0.3877551020408163
+    0.7142857142857142 0.3877551020408163
+    0.7346938775510203 0.3877551020408163
+    0.7551020408163265 0.3877551020408163
+    0.7755102040816326 0.3877551020408163
+    0.7959183673469387 0.3877551020408163
+    0.8163265306122448 0.3877551020408163
+    0.836734693877551 0.3877551020408163
+    0.8571428571428571 0.3877551020408163
+    0.8775510204081632 0.3877551020408163
+    0.8979591836734693 0.3877551020408163
+    0.9183673469387754 0.3877551020408163
+    0.9387755102040816 0.3877551020408163
+    0.9591836734693877 0.3877551020408163
+    0.9795918367346939 0.3877551020408163
+    0.9999999999999999 0.3877551020408163
+    0.0 0.4081632653061224
+    0.02040816326530612 0.4081632653061224
+    0.04081632653061224 0.4081632653061224
+    0.061224489795918366 0.4081632653061224
+    0.08163265306122448 0.4081632653061224
+    0.1020408163265306 0.4081632653061224
+    0.12244897959183673 0.4081632653061224
+    0.14285714285714285 0.4081632653061224
+    0.16326530612244897 0.4081632653061224
+    0.18367346938775508 0.4081632653061224
+    0.2040816326530612 0.4081632653061224
+    0.22448979591836732 0.4081632653061224
+    0.24489795918367346 0.4081632653061224
+    0.26530612244897955 0.4081632653061224
+    0.2857142857142857 0.4081632653061224
+    0.3061224489795918 0.4081632653061224
+    0.32653061224489793 0.4081632653061224
+    0.3469387755102041 0.4081632653061224
+    0.36734693877551017 0.4081632653061224
+    0.3877551020408163 0.4081632653061224
+    0.4081632653061224 0.4081632653061224
+    0.42857142857142855 0.4081632653061224
+    0.44897959183673464 0.4081632653061224
+    0.4693877551020408 0.4081632653061224
+    0.4897959183673469 0.4081632653061224
+    0.5102040816326531 0.4081632653061224
+    0.5306122448979591 0.4081632653061224
+    0.5510204081632653 0.4081632653061224
+    0.5714285714285714 0.4081632653061224
+    0.5918367346938775 0.4081632653061224
+    0.6122448979591836 0.4081632653061224
+    0.6326530612244897 0.4081632653061224
+    0.6530612244897959 0.4081632653061224
+    0.673469387755102 0.4081632653061224
+    0.6938775510204082 0.4081632653061224
+    0.7142857142857142 0.4081632653061224
+    0.7346938775510203 0.4081632653061224
+    0.7551020408163265 0.4081632653061224
+    0.7755102040816326 0.4081632653061224
+    0.7959183673469387 0.4081632653061224
+    0.8163265306122448 0.4081632653061224
+    0.836734693877551 0.4081632653061224
+    0.8571428571428571 0.4081632653061224
+    0.8775510204081632 0.4081632653061224
+    0.8979591836734693 0.4081632653061224
+    0.9183673469387754 0.4081632653061224
+    0.9387755102040816 0.4081632653061224
+    0.9591836734693877 0.4081632653061224
+    0.9795918367346939 0.4081632653061224
+    0.9999999999999999 0.4081632653061224
+    0.0 0.42857142857142855
+    0.02040816326530612 0.42857142857142855
+    0.04081632653061224 0.42857142857142855
+    0.061224489795918366 0.42857142857142855
+    0.08163265306122448 0.42857142857142855
+    0.1020408163265306 0.42857142857142855
+    0.12244897959183673 0.42857142857142855
+    0.14285714285714285 0.42857142857142855
+    0.16326530612244897 0.42857142857142855
+    0.18367346938775508 0.42857142857142855
+    0.2040816326530612 0.42857142857142855
+    0.22448979591836732 0.42857142857142855
+    0.24489795918367346 0.42857142857142855
+    0.26530612244897955 0.42857142857142855
+    0.2857142857142857 0.42857142857142855
+    0.3061224489795918 0.42857142857142855
+    0.32653061224489793 0.42857142857142855
+    0.3469387755102041 0.42857142857142855
+    0.36734693877551017 0.42857142857142855
+    0.3877551020408163 0.42857142857142855
+    0.4081632653061224 0.42857142857142855
+    0.42857142857142855 0.42857142857142855
+    0.44897959183673464 0.42857142857142855
+    0.4693877551020408 0.42857142857142855
+    0.4897959183673469 0.42857142857142855
+    0.5102040816326531 0.42857142857142855
+    0.5306122448979591 0.42857142857142855
+    0.5510204081632653 0.42857142857142855
+    0.5714285714285714 0.42857142857142855
+    0.5918367346938775 0.42857142857142855
+    0.6122448979591836 0.42857142857142855
+    0.6326530612244897 0.42857142857142855
+    0.6530612244897959 0.42857142857142855
+    0.673469387755102 0.42857142857142855
+    0.6938775510204082 0.42857142857142855
+    0.7142857142857142 0.42857142857142855
+    0.7346938775510203 0.42857142857142855
+    0.7551020408163265 0.42857142857142855
+    0.7755102040816326 0.42857142857142855
+    0.7959183673469387 0.42857142857142855
+    0.8163265306122448 0.42857142857142855
+    0.836734693877551 0.42857142857142855
+    0.8571428571428571 0.42857142857142855
+    0.8775510204081632 0.42857142857142855
+    0.8979591836734693 0.42857142857142855
+    0.9183673469387754 0.42857142857142855
+    0.9387755102040816 0.42857142857142855
+    0.9591836734693877 0.42857142857142855
+    0.9795918367346939 0.42857142857142855
+    0.9999999999999999 0.42857142857142855
+    0.0 0.44897959183673464
+    0.02040816326530612 0.44897959183673464
+    0.04081632653061224 0.44897959183673464
+    0.061224489795918366 0.44897959183673464
+    0.08163265306122448 0.44897959183673464
+    0.1020408163265306 0.44897959183673464
+    0.12244897959183673 0.44897959183673464
+    0.14285714285714285 0.44897959183673464
+    0.16326530612244897 0.44897959183673464
+    0.18367346938775508 0.44897959183673464
+    0.2040816326530612 0.44897959183673464
+    0.22448979591836732 0.44897959183673464
+    0.24489795918367346 0.44897959183673464
+    0.26530612244897955 0.44897959183673464
+    0.2857142857142857 0.44897959183673464
+    0.3061224489795918 0.44897959183673464
+    0.32653061224489793 0.44897959183673464
+    0.3469387755102041 0.44897959183673464
+    0.36734693877551017 0.44897959183673464
+    0.3877551020408163 0.44897959183673464
+    0.4081632653061224 0.44897959183673464
+    0.42857142857142855 0.44897959183673464
+    0.44897959183673464 0.44897959183673464
+    0.4693877551020408 0.44897959183673464
+    0.4897959183673469 0.44897959183673464
+    0.5102040816326531 0.44897959183673464
+    0.5306122448979591 0.44897959183673464
+    0.5510204081632653 0.44897959183673464
+    0.5714285714285714 0.44897959183673464
+    0.5918367346938775 0.44897959183673464
+    0.6122448979591836 0.44897959183673464
+    0.6326530612244897 0.44897959183673464
+    0.6530612244897959 0.44897959183673464
+    0.673469387755102 0.44897959183673464
+    0.6938775510204082 0.44897959183673464
+    0.7142857142857142 0.44897959183673464
+    0.7346938775510203 0.44897959183673464
+    0.7551020408163265 0.44897959183673464
+    0.7755102040816326 0.44897959183673464
+    0.7959183673469387 0.44897959183673464
+    0.8163265306122448 0.44897959183673464
+    0.836734693877551 0.44897959183673464
+    0.8571428571428571 0.44897959183673464
+    0.8775510204081632 0.44897959183673464
+    0.8979591836734693 0.44897959183673464
+    0.9183673469387754 0.44897959183673464
+    0.9387755102040816 0.44897959183673464
+    0.9591836734693877 0.44897959183673464
+    0.9795918367346939 0.44897959183673464
+    0.9999999999999999 0.44897959183673464
+    0.0 0.4693877551020408
+    0.02040816326530612 0.4693877551020408
+    0.04081632653061224 0.4693877551020408
+    0.061224489795918366 0.4693877551020408
+    0.08163265306122448 0.4693877551020408
+    0.1020408163265306 0.4693877551020408
+    0.12244897959183673 0.4693877551020408
+    0.14285714285714285 0.4693877551020408
+    0.16326530612244897 0.4693877551020408
+    0.18367346938775508 0.4693877551020408
+    0.2040816326530612 0.4693877551020408
+    0.22448979591836732 0.4693877551020408
+    0.24489795918367346 0.4693877551020408
+    0.26530612244897955 0.4693877551020408
+    0.2857142857142857 0.4693877551020408
+    0.3061224489795918 0.4693877551020408
+    0.32653061224489793 0.4693877551020408
+    0.3469387755102041 0.4693877551020408
+    0.36734693877551017 0.4693877551020408
+    0.3877551020408163 0.4693877551020408
+    0.4081632653061224 0.4693877551020408
+    0.42857142857142855 0.4693877551020408
+    0.44897959183673464 0.4693877551020408
+    0.4693877551020408 0.4693877551020408
+    0.4897959183673469 0.4693877551020408
+    0.5102040816326531 0.4693877551020408
+    0.5306122448979591 0.4693877551020408
+    0.5510204081632653 0.4693877551020408
+    0.5714285714285714 0.4693877551020408
+    0.5918367346938775 0.4693877551020408
+    0.6122448979591836 0.4693877551020408
+    0.6326530612244897 0.4693877551020408
+    0.6530612244897959 0.4693877551020408
+    0.673469387755102 0.4693877551020408
+    0.6938775510204082 0.4693877551020408
+    0.7142857142857142 0.4693877551020408
+    0.7346938775510203 0.4693877551020408
+    0.7551020408163265 0.4693877551020408
+    0.7755102040816326 0.4693877551020408
+    0.7959183673469387 0.4693877551020408
+    0.8163265306122448 0.4693877551020408
+    0.836734693877551 0.4693877551020408
+    0.8571428571428571 0.4693877551020408
+    0.8775510204081632 0.4693877551020408
+    0.8979591836734693 0.4693877551020408
+    0.9183673469387754 0.4693877551020408
+    0.9387755102040816 0.4693877551020408
+    0.9591836734693877 0.4693877551020408
+    0.9795918367346939 0.4693877551020408
+    0.9999999999999999 0.4693877551020408
+    0.0 0.4897959183673469
+    0.02040816326530612 0.4897959183673469
+    0.04081632653061224 0.4897959183673469
+    0.061224489795918366 0.4897959183673469
+    0.08163265306122448 0.4897959183673469
+    0.1020408163265306 0.4897959183673469
+    0.12244897959183673 0.4897959183673469
+    0.14285714285714285 0.4897959183673469
+    0.16326530612244897 0.4897959183673469
+    0.18367346938775508 0.4897959183673469
+    0.2040816326530612 0.4897959183673469
+    0.22448979591836732 0.4897959183673469
+    0.24489795918367346 0.4897959183673469
+    0.26530612244897955 0.4897959183673469
+    0.2857142857142857 0.4897959183673469
+    0.3061224489795918 0.4897959183673469
+    0.32653061224489793 0.4897959183673469
+    0.3469387755102041 0.4897959183673469
+    0.36734693877551017 0.4897959183673469
+    0.3877551020408163 0.4897959183673469
+    0.4081632653061224 0.4897959183673469
+    0.42857142857142855 0.4897959183673469
+    0.44897959183673464 0.4897959183673469
+    0.4693877551020408 0.4897959183673469
+    0.4897959183673469 0.4897959183673469
+    0.5102040816326531 0.4897959183673469
+    0.5306122448979591 0.4897959183673469
+    0.5510204081632653 0.4897959183673469
+    0.5714285714285714 0.4897959183673469
+    0.5918367346938775 0.4897959183673469
+    0.6122448979591836 0.4897959183673469
+    0.6326530612244897 0.4897959183673469
+    0.6530612244897959 0.4897959183673469
+    0.673469387755102 0.4897959183673469
+    0.6938775510204082 0.4897959183673469
+    0.7142857142857142 0.4897959183673469
+    0.7346938775510203 0.4897959183673469
+    0.7551020408163265 0.4897959183673469
+    0.7755102040816326 0.4897959183673469
+    0.7959183673469387 0.4897959183673469
+    0.8163265306122448 0.4897959183673469
+    0.836734693877551 0.4897959183673469
+    0.8571428571428571 0.4897959183673469
+    0.8775510204081632 0.4897959183673469
+    0.8979591836734693 0.4897959183673469
+    0.9183673469387754 0.4897959183673469
+    0.9387755102040816 0.4897959183673469
+    0.9591836734693877 0.4897959183673469
+    0.9795918367346939 0.4897959183673469
+    0.9999999999999999 0.4897959183673469
+    0.0 0.5102040816326531
+    0.02040816326530612 0.5102040816326531
+    0.04081632653061224 0.5102040816326531
+    0.061224489795918366 0.5102040816326531
+    0.08163265306122448 0.5102040816326531
+    0.1020408163265306 0.5102040816326531
+    0.12244897959183673 0.5102040816326531
+    0.14285714285714285 0.5102040816326531
+    0.16326530612244897 0.5102040816326531
+    0.18367346938775508 0.5102040816326531
+    0.2040816326530612 0.5102040816326531
+    0.22448979591836732 0.5102040816326531
+    0.24489795918367346 0.5102040816326531
+    0.26530612244897955 0.5102040816326531
+    0.2857142857142857 0.5102040816326531
+    0.3061224489795918 0.5102040816326531
+    0.32653061224489793 0.5102040816326531
+    0.3469387755102041 0.5102040816326531
+    0.36734693877551017 0.5102040816326531
+    0.3877551020408163 0.5102040816326531
+    0.4081632653061224 0.5102040816326531
+    0.42857142857142855 0.5102040816326531
+    0.44897959183673464 0.5102040816326531
+    0.4693877551020408 0.5102040816326531
+    0.4897959183673469 0.5102040816326531
+    0.5102040816326531 0.5102040816326531
+    0.5306122448979591 0.5102040816326531
+    0.5510204081632653 0.5102040816326531
+    0.5714285714285714 0.5102040816326531
+    0.5918367346938775 0.5102040816326531
+    0.6122448979591836 0.5102040816326531
+    0.6326530612244897 0.5102040816326531
+    0.6530612244897959 0.5102040816326531
+    0.673469387755102 0.5102040816326531
+    0.6938775510204082 0.5102040816326531
+    0.7142857142857142 0.5102040816326531
+    0.7346938775510203 0.5102040816326531
+    0.7551020408163265 0.5102040816326531
+    0.7755102040816326 0.5102040816326531
+    0.7959183673469387 0.5102040816326531
+    0.8163265306122448 0.5102040816326531
+    0.836734693877551 0.5102040816326531
+    0.8571428571428571 0.5102040816326531
+    0.8775510204081632 0.5102040816326531
+    0.8979591836734693 0.5102040816326531
+    0.9183673469387754 0.5102040816326531
+    0.9387755102040816 0.5102040816326531
+    0.9591836734693877 0.5102040816326531
+    0.9795918367346939 0.5102040816326531
+    0.9999999999999999 0.5102040816326531
+    0.0 0.5306122448979591
+    0.02040816326530612 0.5306122448979591
+    0.04081632653061224 0.5306122448979591
+    0.061224489795918366 0.5306122448979591
+    0.08163265306122448 0.5306122448979591
+    0.1020408163265306 0.5306122448979591
+    0.12244897959183673 0.5306122448979591
+    0.14285714285714285 0.5306122448979591
+    0.16326530612244897 0.5306122448979591
+    0.18367346938775508 0.5306122448979591
+    0.2040816326530612 0.5306122448979591
+    0.22448979591836732 0.5306122448979591
+    0.24489795918367346 0.5306122448979591
+    0.26530612244897955 0.5306122448979591
+    0.2857142857142857 0.5306122448979591
+    0.3061224489795918 0.5306122448979591
+    0.32653061224489793 0.5306122448979591
+    0.3469387755102041 0.5306122448979591
+    0.36734693877551017 0.5306122448979591
+    0.3877551020408163 0.5306122448979591
+    0.4081632653061224 0.5306122448979591
+    0.42857142857142855 0.5306122448979591
+    0.44897959183673464 0.5306122448979591
+    0.4693877551020408 0.5306122448979591
+    0.4897959183673469 0.5306122448979591
+    0.5102040816326531 0.5306122448979591
+    0.5306122448979591 0.5306122448979591
+    0.5510204081632653 0.5306122448979591
+    0.5714285714285714 0.5306122448979591
+    0.5918367346938775 0.5306122448979591
+    0.6122448979591836 0.5306122448979591
+    0.6326530612244897 0.5306122448979591
+    0.6530612244897959 0.5306122448979591
+    0.673469387755102 0.5306122448979591
+    0.6938775510204082 0.5306122448979591
+    0.7142857142857142 0.5306122448979591
+    0.7346938775510203 0.5306122448979591
+    0.7551020408163265 0.5306122448979591
+    0.7755102040816326 0.5306122448979591
+    0.7959183673469387 0.5306122448979591
+    0.8163265306122448 0.5306122448979591
+    0.836734693877551 0.5306122448979591
+    0.8571428571428571 0.5306122448979591
+    0.8775510204081632 0.5306122448979591
+    0.8979591836734693 0.5306122448979591
+    0.9183673469387754 0.5306122448979591
+    0.9387755102040816 0.5306122448979591
+    0.9591836734693877 0.5306122448979591
+    0.9795918367346939 0.5306122448979591
+    0.9999999999999999 0.5306122448979591
+    0.0 0.5510204081632653
+    0.02040816326530612 0.5510204081632653
+    0.04081632653061224 0.5510204081632653
+    0.061224489795918366 0.5510204081632653
+    0.08163265306122448 0.5510204081632653
+    0.1020408163265306 0.5510204081632653
+    0.12244897959183673 0.5510204081632653
+    0.14285714285714285 0.5510204081632653
+    0.16326530612244897 0.5510204081632653
+    0.18367346938775508 0.5510204081632653
+    0.2040816326530612 0.5510204081632653
+    0.22448979591836732 0.5510204081632653
+    0.24489795918367346 0.5510204081632653
+    0.26530612244897955 0.5510204081632653
+    0.2857142857142857 0.5510204081632653
+    0.3061224489795918 0.5510204081632653
+    0.32653061224489793 0.5510204081632653
+    0.3469387755102041 0.5510204081632653
+    0.36734693877551017 0.5510204081632653
+    0.3877551020408163 0.5510204081632653
+    0.4081632653061224 0.5510204081632653
+    0.42857142857142855 0.5510204081632653
+    0.44897959183673464 0.5510204081632653
+    0.4693877551020408 0.5510204081632653
+    0.4897959183673469 0.5510204081632653
+    0.5102040816326531 0.5510204081632653
+    0.5306122448979591 0.5510204081632653
+    0.5510204081632653 0.5510204081632653
+    0.5714285714285714 0.5510204081632653
+    0.5918367346938775 0.5510204081632653
+    0.6122448979591836 0.5510204081632653
+    0.6326530612244897 0.5510204081632653
+    0.6530612244897959 0.5510204081632653
+    0.673469387755102 0.5510204081632653
+    0.6938775510204082 0.5510204081632653
+    0.7142857142857142 0.5510204081632653
+    0.7346938775510203 0.5510204081632653
+    0.7551020408163265 0.5510204081632653
+    0.7755102040816326 0.5510204081632653
+    0.7959183673469387 0.5510204081632653
+    0.8163265306122448 0.5510204081632653
+    0.836734693877551 0.5510204081632653
+    0.8571428571428571 0.5510204081632653
+    0.8775510204081632 0.5510204081632653
+    0.8979591836734693 0.5510204081632653
+    0.9183673469387754 0.5510204081632653
+    0.9387755102040816 0.5510204081632653
+    0.9591836734693877 0.5510204081632653
+    0.9795918367346939 0.5510204081632653
+    0.9999999999999999 0.5510204081632653
+    0.0 0.5714285714285714
+    0.02040816326530612 0.5714285714285714
+    0.04081632653061224 0.5714285714285714
+    0.061224489795918366 0.5714285714285714
+    0.08163265306122448 0.5714285714285714
+    0.1020408163265306 0.5714285714285714
+    0.12244897959183673 0.5714285714285714
+    0.14285714285714285 0.5714285714285714
+    0.16326530612244897 0.5714285714285714
+    0.18367346938775508 0.5714285714285714
+    0.2040816326530612 0.5714285714285714
+    0.22448979591836732 0.5714285714285714
+    0.24489795918367346 0.5714285714285714
+    0.26530612244897955 0.5714285714285714
+    0.2857142857142857 0.5714285714285714
+    0.3061224489795918 0.5714285714285714
+    0.32653061224489793 0.5714285714285714
+    0.3469387755102041 0.5714285714285714
+    0.36734693877551017 0.5714285714285714
+    0.3877551020408163 0.5714285714285714
+    0.4081632653061224 0.5714285714285714
+    0.42857142857142855 0.5714285714285714
+    0.44897959183673464 0.5714285714285714
+    0.4693877551020408 0.5714285714285714
+    0.4897959183673469 0.5714285714285714
+    0.5102040816326531 0.5714285714285714
+    0.5306122448979591 0.5714285714285714
+    0.5510204081632653 0.5714285714285714
+    0.5714285714285714 0.5714285714285714
+    0.5918367346938775 0.5714285714285714
+    0.6122448979591836 0.5714285714285714
+    0.6326530612244897 0.5714285714285714
+    0.6530612244897959 0.5714285714285714
+    0.673469387755102 0.5714285714285714
+    0.6938775510204082 0.5714285714285714
+    0.7142857142857142 0.5714285714285714
+    0.7346938775510203 0.5714285714285714
+    0.7551020408163265 0.5714285714285714
+    0.7755102040816326 0.5714285714285714
+    0.7959183673469387 0.5714285714285714
+    0.8163265306122448 0.5714285714285714
+    0.836734693877551 0.5714285714285714
+    0.8571428571428571 0.5714285714285714
+    0.8775510204081632 0.5714285714285714
+    0.8979591836734693 0.5714285714285714
+    0.9183673469387754 0.5714285714285714
+    0.9387755102040816 0.5714285714285714
+    0.9591836734693877 0.5714285714285714
+    0.9795918367346939 0.5714285714285714
+    0.9999999999999999 0.5714285714285714
+    0.0 0.5918367346938775
+    0.02040816326530612 0.5918367346938775
+    0.04081632653061224 0.5918367346938775
+    0.061224489795918366 0.5918367346938775
+    0.08163265306122448 0.5918367346938775
+    0.1020408163265306 0.5918367346938775
+    0.12244897959183673 0.5918367346938775
+    0.14285714285714285 0.5918367346938775
+    0.16326530612244897 0.5918367346938775
+    0.18367346938775508 0.5918367346938775
+    0.2040816326530612 0.5918367346938775
+    0.22448979591836732 0.5918367346938775
+    0.24489795918367346 0.5918367346938775
+    0.26530612244897955 0.5918367346938775
+    0.2857142857142857 0.5918367346938775
+    0.3061224489795918 0.5918367346938775
+    0.32653061224489793 0.5918367346938775
+    0.3469387755102041 0.5918367346938775
+    0.36734693877551017 0.5918367346938775
+    0.3877551020408163 0.5918367346938775
+    0.4081632653061224 0.5918367346938775
+    0.42857142857142855 0.5918367346938775
+    0.44897959183673464 0.5918367346938775
+    0.4693877551020408 0.5918367346938775
+    0.4897959183673469 0.5918367346938775
+    0.5102040816326531 0.5918367346938775
+    0.5306122448979591 0.5918367346938775
+    0.5510204081632653 0.5918367346938775
+    0.5714285714285714 0.5918367346938775
+    0.5918367346938775 0.5918367346938775
+    0.6122448979591836 0.5918367346938775
+    0.6326530612244897 0.5918367346938775
+    0.6530612244897959 0.5918367346938775
+    0.673469387755102 0.5918367346938775
+    0.6938775510204082 0.5918367346938775
+    0.7142857142857142 0.5918367346938775
+    0.7346938775510203 0.5918367346938775
+    0.7551020408163265 0.5918367346938775
+    0.7755102040816326 0.5918367346938775
+    0.7959183673469387 0.5918367346938775
+    0.8163265306122448 0.5918367346938775
+    0.836734693877551 0.5918367346938775
+    0.8571428571428571 0.5918367346938775
+    0.8775510204081632 0.5918367346938775
+    0.8979591836734693 0.5918367346938775
+    0.9183673469387754 0.5918367346938775
+    0.9387755102040816 0.5918367346938775
+    0.9591836734693877 0.5918367346938775
+    0.9795918367346939 0.5918367346938775
+    0.9999999999999999 0.5918367346938775
+    0.0 0.6122448979591836
+    0.02040816326530612 0.6122448979591836
+    0.04081632653061224 0.6122448979591836
+    0.061224489795918366 0.6122448979591836
+    0.08163265306122448 0.6122448979591836
+    0.1020408163265306 0.6122448979591836
+    0.12244897959183673 0.6122448979591836
+    0.14285714285714285 0.6122448979591836
+    0.16326530612244897 0.6122448979591836
+    0.18367346938775508 0.6122448979591836
+    0.2040816326530612 0.6122448979591836
+    0.22448979591836732 0.6122448979591836
+    0.24489795918367346 0.6122448979591836
+    0.26530612244897955 0.6122448979591836
+    0.2857142857142857 0.6122448979591836
+    0.3061224489795918 0.6122448979591836
+    0.32653061224489793 0.6122448979591836
+    0.3469387755102041 0.6122448979591836
+    0.36734693877551017 0.6122448979591836
+    0.3877551020408163 0.6122448979591836
+    0.4081632653061224 0.6122448979591836
+    0.42857142857142855 0.6122448979591836
+    0.44897959183673464 0.6122448979591836
+    0.4693877551020408 0.6122448979591836
+    0.4897959183673469 0.6122448979591836
+    0.5102040816326531 0.6122448979591836
+    0.5306122448979591 0.6122448979591836
+    0.5510204081632653 0.6122448979591836
+    0.5714285714285714 0.6122448979591836
+    0.5918367346938775 0.6122448979591836
+    0.6122448979591836 0.6122448979591836
+    0.6326530612244897 0.6122448979591836
+    0.6530612244897959 0.6122448979591836
+    0.673469387755102 0.6122448979591836
+    0.6938775510204082 0.6122448979591836
+    0.7142857142857142 0.6122448979591836
+    0.7346938775510203 0.6122448979591836
+    0.7551020408163265 0.6122448979591836
+    0.7755102040816326 0.6122448979591836
+    0.7959183673469387 0.6122448979591836
+    0.8163265306122448 0.6122448979591836
+    0.836734693877551 0.6122448979591836
+    0.8571428571428571 0.6122448979591836
+    0.8775510204081632 0.6122448979591836
+    0.8979591836734693 0.6122448979591836
+    0.9183673469387754 0.6122448979591836
+    0.9387755102040816 0.6122448979591836
+    0.9591836734693877 0.6122448979591836
+    0.9795918367346939 0.6122448979591836
+    0.9999999999999999 0.6122448979591836
+    0.0 0.6326530612244897
+    0.02040816326530612 0.6326530612244897
+    0.04081632653061224 0.6326530612244897
+    0.061224489795918366 0.6326530612244897
+    0.08163265306122448 0.6326530612244897
+    0.1020408163265306 0.6326530612244897
+    0.12244897959183673 0.6326530612244897
+    0.14285714285714285 0.6326530612244897
+    0.16326530612244897 0.6326530612244897
+    0.18367346938775508 0.6326530612244897
+    0.2040816326530612 0.6326530612244897
+    0.22448979591836732 0.6326530612244897
+    0.24489795918367346 0.6326530612244897
+    0.26530612244897955 0.6326530612244897
+    0.2857142857142857 0.6326530612244897
+    0.3061224489795918 0.6326530612244897
+    0.32653061224489793 0.6326530612244897
+    0.3469387755102041 0.6326530612244897
+    0.36734693877551017 0.6326530612244897
+    0.3877551020408163 0.6326530612244897
+    0.4081632653061224 0.6326530612244897
+    0.42857142857142855 0.6326530612244897
+    0.44897959183673464 0.6326530612244897
+    0.4693877551020408 0.6326530612244897
+    0.4897959183673469 0.6326530612244897
+    0.5102040816326531 0.6326530612244897
+    0.5306122448979591 0.6326530612244897
+    0.5510204081632653 0.6326530612244897
+    0.5714285714285714 0.6326530612244897
+    0.5918367346938775 0.6326530612244897
+    0.6122448979591836 0.6326530612244897
+    0.6326530612244897 0.6326530612244897
+    0.6530612244897959 0.6326530612244897
+    0.673469387755102 0.6326530612244897
+    0.6938775510204082 0.6326530612244897
+    0.7142857142857142 0.6326530612244897
+    0.7346938775510203 0.6326530612244897
+    0.7551020408163265 0.6326530612244897
+    0.7755102040816326 0.6326530612244897
+    0.7959183673469387 0.6326530612244897
+    0.8163265306122448 0.6326530612244897
+    0.836734693877551 0.6326530612244897
+    0.8571428571428571 0.6326530612244897
+    0.8775510204081632 0.6326530612244897
+    0.8979591836734693 0.6326530612244897
+    0.9183673469387754 0.6326530612244897
+    0.9387755102040816 0.6326530612244897
+    0.9591836734693877 0.6326530612244897
+    0.9795918367346939 0.6326530612244897
+    0.9999999999999999 0.6326530612244897
+    0.0 0.6530612244897959
+    0.02040816326530612 0.6530612244897959
+    0.04081632653061224 0.6530612244897959
+    0.061224489795918366 0.6530612244897959
+    0.08163265306122448 0.6530612244897959
+    0.1020408163265306 0.6530612244897959
+    0.12244897959183673 0.6530612244897959
+    0.14285714285714285 0.6530612244897959
+    0.16326530612244897 0.6530612244897959
+    0.18367346938775508 0.6530612244897959
+    0.2040816326530612 0.6530612244897959
+    0.22448979591836732 0.6530612244897959
+    0.24489795918367346 0.6530612244897959
+    0.26530612244897955 0.6530612244897959
+    0.2857142857142857 0.6530612244897959
+    0.3061224489795918 0.6530612244897959
+    0.32653061224489793 0.6530612244897959
+    0.3469387755102041 0.6530612244897959
+    0.36734693877551017 0.6530612244897959
+    0.3877551020408163 0.6530612244897959
+    0.4081632653061224 0.6530612244897959
+    0.42857142857142855 0.6530612244897959
+    0.44897959183673464 0.6530612244897959
+    0.4693877551020408 0.6530612244897959
+    0.4897959183673469 0.6530612244897959
+    0.5102040816326531 0.6530612244897959
+    0.5306122448979591 0.6530612244897959
+    0.5510204081632653 0.6530612244897959
+    0.5714285714285714 0.6530612244897959
+    0.5918367346938775 0.6530612244897959
+    0.6122448979591836 0.6530612244897959
+    0.6326530612244897 0.6530612244897959
+    0.6530612244897959 0.6530612244897959
+    0.673469387755102 0.6530612244897959
+    0.6938775510204082 0.6530612244897959
+    0.7142857142857142 0.6530612244897959
+    0.7346938775510203 0.6530612244897959
+    0.7551020408163265 0.6530612244897959
+    0.7755102040816326 0.6530612244897959
+    0.7959183673469387 0.6530612244897959
+    0.8163265306122448 0.6530612244897959
+    0.836734693877551 0.6530612244897959
+    0.8571428571428571 0.6530612244897959
+    0.8775510204081632 0.6530612244897959
+    0.8979591836734693 0.6530612244897959
+    0.9183673469387754 0.6530612244897959
+    0.9387755102040816 0.6530612244897959
+    0.9591836734693877 0.6530612244897959
+    0.9795918367346939 0.6530612244897959
+    0.9999999999999999 0.6530612244897959
+    0.0 0.673469387755102
+    0.02040816326530612 0.673469387755102
+    0.04081632653061224 0.673469387755102
+    0.061224489795918366 0.673469387755102
+    0.08163265306122448 0.673469387755102
+    0.1020408163265306 0.673469387755102
+    0.12244897959183673 0.673469387755102
+    0.14285714285714285 0.673469387755102
+    0.16326530612244897 0.673469387755102
+    0.18367346938775508 0.673469387755102
+    0.2040816326530612 0.673469387755102
+    0.22448979591836732 0.673469387755102
+    0.24489795918367346 0.673469387755102
+    0.26530612244897955 0.673469387755102
+    0.2857142857142857 0.673469387755102
+    0.3061224489795918 0.673469387755102
+    0.32653061224489793 0.673469387755102
+    0.3469387755102041 0.673469387755102
+    0.36734693877551017 0.673469387755102
+    0.3877551020408163 0.673469387755102
+    0.4081632653061224 0.673469387755102
+    0.42857142857142855 0.673469387755102
+    0.44897959183673464 0.673469387755102
+    0.4693877551020408 0.673469387755102
+    0.4897959183673469 0.673469387755102
+    0.5102040816326531 0.673469387755102
+    0.5306122448979591 0.673469387755102
+    0.5510204081632653 0.673469387755102
+    0.5714285714285714 0.673469387755102
+    0.5918367346938775 0.673469387755102
+    0.6122448979591836 0.673469387755102
+    0.6326530612244897 0.673469387755102
+    0.6530612244897959 0.673469387755102
+    0.673469387755102 0.673469387755102
+    0.6938775510204082 0.673469387755102
+    0.7142857142857142 0.673469387755102
+    0.7346938775510203 0.673469387755102
+    0.7551020408163265 0.673469387755102
+    0.7755102040816326 0.673469387755102
+    0.7959183673469387 0.673469387755102
+    0.8163265306122448 0.673469387755102
+    0.836734693877551 0.673469387755102
+    0.8571428571428571 0.673469387755102
+    0.8775510204081632 0.673469387755102
+    0.8979591836734693 0.673469387755102
+    0.9183673469387754 0.673469387755102
+    0.9387755102040816 0.673469387755102
+    0.9591836734693877 0.673469387755102
+    0.9795918367346939 0.673469387755102
+    0.9999999999999999 0.673469387755102
+    0.0 0.6938775510204082
+    0.02040816326530612 0.6938775510204082
+    0.04081632653061224 0.6938775510204082
+    0.061224489795918366 0.6938775510204082
+    0.08163265306122448 0.6938775510204082
+    0.1020408163265306 0.6938775510204082
+    0.12244897959183673 0.6938775510204082
+    0.14285714285714285 0.6938775510204082
+    0.16326530612244897 0.6938775510204082
+    0.18367346938775508 0.6938775510204082
+    0.2040816326530612 0.6938775510204082
+    0.22448979591836732 0.6938775510204082
+    0.24489795918367346 0.6938775510204082
+    0.26530612244897955 0.6938775510204082
+    0.2857142857142857 0.6938775510204082
+    0.3061224489795918 0.6938775510204082
+    0.32653061224489793 0.6938775510204082
+    0.3469387755102041 0.6938775510204082
+    0.36734693877551017 0.6938775510204082
+    0.3877551020408163 0.6938775510204082
+    0.4081632653061224 0.6938775510204082
+    0.42857142857142855 0.6938775510204082
+    0.44897959183673464 0.6938775510204082
+    0.4693877551020408 0.6938775510204082
+    0.4897959183673469 0.6938775510204082
+    0.5102040816326531 0.6938775510204082
+    0.5306122448979591 0.6938775510204082
+    0.5510204081632653 0.6938775510204082
+    0.5714285714285714 0.6938775510204082
+    0.5918367346938775 0.6938775510204082
+    0.6122448979591836 0.6938775510204082
+    0.6326530612244897 0.6938775510204082
+    0.6530612244897959 0.6938775510204082
+    0.673469387755102 0.6938775510204082
+    0.6938775510204082 0.6938775510204082
+    0.7142857142857142 0.6938775510204082
+    0.7346938775510203 0.6938775510204082
+    0.7551020408163265 0.6938775510204082
+    0.7755102040816326 0.6938775510204082
+    0.7959183673469387 0.6938775510204082
+    0.8163265306122448 0.6938775510204082
+    0.836734693877551 0.6938775510204082
+    0.8571428571428571 0.6938775510204082
+    0.8775510204081632 0.6938775510204082
+    0.8979591836734693 0.6938775510204082
+    0.9183673469387754 0.6938775510204082
+    0.9387755102040816 0.6938775510204082
+    0.9591836734693877 0.6938775510204082
+    0.9795918367346939 0.6938775510204082
+    0.9999999999999999 0.6938775510204082
+    0.0 0.7142857142857142
+    0.02040816326530612 0.7142857142857142
+    0.04081632653061224 0.7142857142857142
+    0.061224489795918366 0.7142857142857142
+    0.08163265306122448 0.7142857142857142
+    0.1020408163265306 0.7142857142857142
+    0.12244897959183673 0.7142857142857142
+    0.14285714285714285 0.7142857142857142
+    0.16326530612244897 0.7142857142857142
+    0.18367346938775508 0.7142857142857142
+    0.2040816326530612 0.7142857142857142
+    0.22448979591836732 0.7142857142857142
+    0.24489795918367346 0.7142857142857142
+    0.26530612244897955 0.7142857142857142
+    0.2857142857142857 0.7142857142857142
+    0.3061224489795918 0.7142857142857142
+    0.32653061224489793 0.7142857142857142
+    0.3469387755102041 0.7142857142857142
+    0.36734693877551017 0.7142857142857142
+    0.3877551020408163 0.7142857142857142
+    0.4081632653061224 0.7142857142857142
+    0.42857142857142855 0.7142857142857142
+    0.44897959183673464 0.7142857142857142
+    0.4693877551020408 0.7142857142857142
+    0.4897959183673469 0.7142857142857142
+    0.5102040816326531 0.7142857142857142
+    0.5306122448979591 0.7142857142857142
+    0.5510204081632653 0.7142857142857142
+    0.5714285714285714 0.7142857142857142
+    0.5918367346938775 0.7142857142857142
+    0.6122448979591836 0.7142857142857142
+    0.6326530612244897 0.7142857142857142
+    0.6530612244897959 0.7142857142857142
+    0.673469387755102 0.7142857142857142
+    0.6938775510204082 0.7142857142857142
+    0.7142857142857142 0.7142857142857142
+    0.7346938775510203 0.7142857142857142
+    0.7551020408163265 0.7142857142857142
+    0.7755102040816326 0.7142857142857142
+    0.7959183673469387 0.7142857142857142
+    0.8163265306122448 0.7142857142857142
+    0.836734693877551 0.7142857142857142
+    0.8571428571428571 0.7142857142857142
+    0.8775510204081632 0.7142857142857142
+    0.8979591836734693 0.7142857142857142
+    0.9183673469387754 0.7142857142857142
+    0.9387755102040816 0.7142857142857142
+    0.9591836734693877 0.7142857142857142
+    0.9795918367346939 0.7142857142857142
+    0.9999999999999999 0.7142857142857142
+    0.0 0.7346938775510203
+    0.02040816326530612 0.7346938775510203
+    0.04081632653061224 0.7346938775510203
+    0.061224489795918366 0.7346938775510203
+    0.08163265306122448 0.7346938775510203
+    0.1020408163265306 0.7346938775510203
+    0.12244897959183673 0.7346938775510203
+    0.14285714285714285 0.7346938775510203
+    0.16326530612244897 0.7346938775510203
+    0.18367346938775508 0.7346938775510203
+    0.2040816326530612 0.7346938775510203
+    0.22448979591836732 0.7346938775510203
+    0.24489795918367346 0.7346938775510203
+    0.26530612244897955 0.7346938775510203
+    0.2857142857142857 0.7346938775510203
+    0.3061224489795918 0.7346938775510203
+    0.32653061224489793 0.7346938775510203
+    0.3469387755102041 0.7346938775510203
+    0.36734693877551017 0.7346938775510203
+    0.3877551020408163 0.7346938775510203
+    0.4081632653061224 0.7346938775510203
+    0.42857142857142855 0.7346938775510203
+    0.44897959183673464 0.7346938775510203
+    0.4693877551020408 0.7346938775510203
+    0.4897959183673469 0.7346938775510203
+    0.5102040816326531 0.7346938775510203
+    0.5306122448979591 0.7346938775510203
+    0.5510204081632653 0.7346938775510203
+    0.5714285714285714 0.7346938775510203
+    0.5918367346938775 0.7346938775510203
+    0.6122448979591836 0.7346938775510203
+    0.6326530612244897 0.7346938775510203
+    0.6530612244897959 0.7346938775510203
+    0.673469387755102 0.7346938775510203
+    0.6938775510204082 0.7346938775510203
+    0.7142857142857142 0.7346938775510203
+    0.7346938775510203 0.7346938775510203
+    0.7551020408163265 0.7346938775510203
+    0.7755102040816326 0.7346938775510203
+    0.7959183673469387 0.7346938775510203
+    0.8163265306122448 0.7346938775510203
+    0.836734693877551 0.7346938775510203
+    0.8571428571428571 0.7346938775510203
+    0.8775510204081632 0.7346938775510203
+    0.8979591836734693 0.7346938775510203
+    0.9183673469387754 0.7346938775510203
+    0.9387755102040816 0.7346938775510203
+    0.9591836734693877 0.7346938775510203
+    0.9795918367346939 0.7346938775510203
+    0.9999999999999999 0.7346938775510203
+    0.0 0.7551020408163265
+    0.02040816326530612 0.7551020408163265
+    0.04081632653061224 0.7551020408163265
+    0.061224489795918366 0.7551020408163265
+    0.08163265306122448 0.7551020408163265
+    0.1020408163265306 0.7551020408163265
+    0.12244897959183673 0.7551020408163265
+    0.14285714285714285 0.7551020408163265
+    0.16326530612244897 0.7551020408163265
+    0.18367346938775508 0.7551020408163265
+    0.2040816326530612 0.7551020408163265
+    0.22448979591836732 0.7551020408163265
+    0.24489795918367346 0.7551020408163265
+    0.26530612244897955 0.7551020408163265
+    0.2857142857142857 0.7551020408163265
+    0.3061224489795918 0.7551020408163265
+    0.32653061224489793 0.7551020408163265
+    0.3469387755102041 0.7551020408163265
+    0.36734693877551017 0.7551020408163265
+    0.3877551020408163 0.7551020408163265
+    0.4081632653061224 0.7551020408163265
+    0.42857142857142855 0.7551020408163265
+    0.44897959183673464 0.7551020408163265
+    0.4693877551020408 0.7551020408163265
+    0.4897959183673469 0.7551020408163265
+    0.5102040816326531 0.7551020408163265
+    0.5306122448979591 0.7551020408163265
+    0.5510204081632653 0.7551020408163265
+    0.5714285714285714 0.7551020408163265
+    0.5918367346938775 0.7551020408163265
+    0.6122448979591836 0.7551020408163265
+    0.6326530612244897 0.7551020408163265
+    0.6530612244897959 0.7551020408163265
+    0.673469387755102 0.7551020408163265
+    0.6938775510204082 0.7551020408163265
+    0.7142857142857142 0.7551020408163265
+    0.7346938775510203 0.7551020408163265
+    0.7551020408163265 0.7551020408163265
+    0.7755102040816326 0.7551020408163265
+    0.7959183673469387 0.7551020408163265
+    0.8163265306122448 0.7551020408163265
+    0.836734693877551 0.7551020408163265
+    0.8571428571428571 0.7551020408163265
+    0.8775510204081632 0.7551020408163265
+    0.8979591836734693 0.7551020408163265
+    0.9183673469387754 0.7551020408163265
+    0.9387755102040816 0.7551020408163265
+    0.9591836734693877 0.7551020408163265
+    0.9795918367346939 0.7551020408163265
+    0.9999999999999999 0.7551020408163265
+    0.0 0.7755102040816326
+    0.02040816326530612 0.7755102040816326
+    0.04081632653061224 0.7755102040816326
+    0.061224489795918366 0.7755102040816326
+    0.08163265306122448 0.7755102040816326
+    0.1020408163265306 0.7755102040816326
+    0.12244897959183673 0.7755102040816326
+    0.14285714285714285 0.7755102040816326
+    0.16326530612244897 0.7755102040816326
+    0.18367346938775508 0.7755102040816326
+    0.2040816326530612 0.7755102040816326
+    0.22448979591836732 0.7755102040816326
+    0.24489795918367346 0.7755102040816326
+    0.26530612244897955 0.7755102040816326
+    0.2857142857142857 0.7755102040816326
+    0.3061224489795918 0.7755102040816326
+    0.32653061224489793 0.7755102040816326
+    0.3469387755102041 0.7755102040816326
+    0.36734693877551017 0.7755102040816326
+    0.3877551020408163 0.7755102040816326
+    0.4081632653061224 0.7755102040816326
+    0.42857142857142855 0.7755102040816326
+    0.44897959183673464 0.7755102040816326
+    0.4693877551020408 0.7755102040816326
+    0.4897959183673469 0.7755102040816326
+    0.5102040816326531 0.7755102040816326
+    0.5306122448979591 0.7755102040816326
+    0.5510204081632653 0.7755102040816326
+    0.5714285714285714 0.7755102040816326
+    0.5918367346938775 0.7755102040816326
+    0.6122448979591836 0.7755102040816326
+    0.6326530612244897 0.7755102040816326
+    0.6530612244897959 0.7755102040816326
+    0.673469387755102 0.7755102040816326
+    0.6938775510204082 0.7755102040816326
+    0.7142857142857142 0.7755102040816326
+    0.7346938775510203 0.7755102040816326
+    0.7551020408163265 0.7755102040816326
+    0.7755102040816326 0.7755102040816326
+    0.7959183673469387 0.7755102040816326
+    0.8163265306122448 0.7755102040816326
+    0.836734693877551 0.7755102040816326
+    0.8571428571428571 0.7755102040816326
+    0.8775510204081632 0.7755102040816326
+    0.8979591836734693 0.7755102040816326
+    0.9183673469387754 0.7755102040816326
+    0.9387755102040816 0.7755102040816326
+    0.9591836734693877 0.7755102040816326
+    0.9795918367346939 0.7755102040816326
+    0.9999999999999999 0.7755102040816326
+    0.0 0.7959183673469387
+    0.02040816326530612 0.7959183673469387
+    0.04081632653061224 0.7959183673469387
+    0.061224489795918366 0.7959183673469387
+    0.08163265306122448 0.7959183673469387
+    0.1020408163265306 0.7959183673469387
+    0.12244897959183673 0.7959183673469387
+    0.14285714285714285 0.7959183673469387
+    0.16326530612244897 0.7959183673469387
+    0.18367346938775508 0.7959183673469387
+    0.2040816326530612 0.7959183673469387
+    0.22448979591836732 0.7959183673469387
+    0.24489795918367346 0.7959183673469387
+    0.26530612244897955 0.7959183673469387
+    0.2857142857142857 0.7959183673469387
+    0.3061224489795918 0.7959183673469387
+    0.32653061224489793 0.7959183673469387
+    0.3469387755102041 0.7959183673469387
+    0.36734693877551017 0.7959183673469387
+    0.3877551020408163 0.7959183673469387
+    0.4081632653061224 0.7959183673469387
+    0.42857142857142855 0.7959183673469387
+    0.44897959183673464 0.7959183673469387
+    0.4693877551020408 0.7959183673469387
+    0.4897959183673469 0.7959183673469387
+    0.5102040816326531 0.7959183673469387
+    0.5306122448979591 0.7959183673469387
+    0.5510204081632653 0.7959183673469387
+    0.5714285714285714 0.7959183673469387
+    0.5918367346938775 0.7959183673469387
+    0.6122448979591836 0.7959183673469387
+    0.6326530612244897 0.7959183673469387
+    0.6530612244897959 0.7959183673469387
+    0.673469387755102 0.7959183673469387
+    0.6938775510204082 0.7959183673469387
+    0.7142857142857142 0.7959183673469387
+    0.7346938775510203 0.7959183673469387
+    0.7551020408163265 0.7959183673469387
+    0.7755102040816326 0.7959183673469387
+    0.7959183673469387 0.7959183673469387
+    0.8163265306122448 0.7959183673469387
+    0.836734693877551 0.7959183673469387
+    0.8571428571428571 0.7959183673469387
+    0.8775510204081632 0.7959183673469387
+    0.8979591836734693 0.7959183673469387
+    0.9183673469387754 0.7959183673469387
+    0.9387755102040816 0.7959183673469387
+    0.9591836734693877 0.7959183673469387
+    0.9795918367346939 0.7959183673469387
+    0.9999999999999999 0.7959183673469387
+    0.0 0.8163265306122448
+    0.02040816326530612 0.8163265306122448
+    0.04081632653061224 0.8163265306122448
+    0.061224489795918366 0.8163265306122448
+    0.08163265306122448 0.8163265306122448
+    0.1020408163265306 0.8163265306122448
+    0.12244897959183673 0.8163265306122448
+    0.14285714285714285 0.8163265306122448
+    0.16326530612244897 0.8163265306122448
+    0.18367346938775508 0.8163265306122448
+    0.2040816326530612 0.8163265306122448
+    0.22448979591836732 0.8163265306122448
+    0.24489795918367346 0.8163265306122448
+    0.26530612244897955 0.8163265306122448
+    0.2857142857142857 0.8163265306122448
+    0.3061224489795918 0.8163265306122448
+    0.32653061224489793 0.8163265306122448
+    0.3469387755102041 0.8163265306122448
+    0.36734693877551017 0.8163265306122448
+    0.3877551020408163 0.8163265306122448
+    0.4081632653061224 0.8163265306122448
+    0.42857142857142855 0.8163265306122448
+    0.44897959183673464 0.8163265306122448
+    0.4693877551020408 0.8163265306122448
+    0.4897959183673469 0.8163265306122448
+    0.5102040816326531 0.8163265306122448
+    0.5306122448979591 0.8163265306122448
+    0.5510204081632653 0.8163265306122448
+    0.5714285714285714 0.8163265306122448
+    0.5918367346938775 0.8163265306122448
+    0.6122448979591836 0.8163265306122448
+    0.6326530612244897 0.8163265306122448
+    0.6530612244897959 0.8163265306122448
+    0.673469387755102 0.8163265306122448
+    0.6938775510204082 0.8163265306122448
+    0.7142857142857142 0.8163265306122448
+    0.7346938775510203 0.8163265306122448
+    0.7551020408163265 0.8163265306122448
+    0.7755102040816326 0.8163265306122448
+    0.7959183673469387 0.8163265306122448
+    0.8163265306122448 0.8163265306122448
+    0.836734693877551 0.8163265306122448
+    0.8571428571428571 0.8163265306122448
+    0.8775510204081632 0.8163265306122448
+    0.8979591836734693 0.8163265306122448
+    0.9183673469387754 0.8163265306122448
+    0.9387755102040816 0.8163265306122448
+    0.9591836734693877 0.8163265306122448
+    0.9795918367346939 0.8163265306122448
+    0.9999999999999999 0.8163265306122448
+    0.0 0.836734693877551
+    0.02040816326530612 0.836734693877551
+    0.04081632653061224 0.836734693877551
+    0.061224489795918366 0.836734693877551
+    0.08163265306122448 0.836734693877551
+    0.1020408163265306 0.836734693877551
+    0.12244897959183673 0.836734693877551
+    0.14285714285714285 0.836734693877551
+    0.16326530612244897 0.836734693877551
+    0.18367346938775508 0.836734693877551
+    0.2040816326530612 0.836734693877551
+    0.22448979591836732 0.836734693877551
+    0.24489795918367346 0.836734693877551
+    0.26530612244897955 0.836734693877551
+    0.2857142857142857 0.836734693877551
+    0.3061224489795918 0.836734693877551
+    0.32653061224489793 0.836734693877551
+    0.3469387755102041 0.836734693877551
+    0.36734693877551017 0.836734693877551
+    0.3877551020408163 0.836734693877551
+    0.4081632653061224 0.836734693877551
+    0.42857142857142855 0.836734693877551
+    0.44897959183673464 0.836734693877551
+    0.4693877551020408 0.836734693877551
+    0.4897959183673469 0.836734693877551
+    0.5102040816326531 0.836734693877551
+    0.5306122448979591 0.836734693877551
+    0.5510204081632653 0.836734693877551
+    0.5714285714285714 0.836734693877551
+    0.5918367346938775 0.836734693877551
+    0.6122448979591836 0.836734693877551
+    0.6326530612244897 0.836734693877551
+    0.6530612244897959 0.836734693877551
+    0.673469387755102 0.836734693877551
+    0.6938775510204082 0.836734693877551
+    0.7142857142857142 0.836734693877551
+    0.7346938775510203 0.836734693877551
+    0.7551020408163265 0.836734693877551
+    0.7755102040816326 0.836734693877551
+    0.7959183673469387 0.836734693877551
+    0.8163265306122448 0.836734693877551
+    0.836734693877551 0.836734693877551
+    0.8571428571428571 0.836734693877551
+    0.8775510204081632 0.836734693877551
+    0.8979591836734693 0.836734693877551
+    0.9183673469387754 0.836734693877551
+    0.9387755102040816 0.836734693877551
+    0.9591836734693877 0.836734693877551
+    0.9795918367346939 0.836734693877551
+    0.9999999999999999 0.836734693877551
+    0.0 0.8571428571428571
+    0.02040816326530612 0.8571428571428571
+    0.04081632653061224 0.8571428571428571
+    0.061224489795918366 0.8571428571428571
+    0.08163265306122448 0.8571428571428571
+    0.1020408163265306 0.8571428571428571
+    0.12244897959183673 0.8571428571428571
+    0.14285714285714285 0.8571428571428571
+    0.16326530612244897 0.8571428571428571
+    0.18367346938775508 0.8571428571428571
+    0.2040816326530612 0.8571428571428571
+    0.22448979591836732 0.8571428571428571
+    0.24489795918367346 0.8571428571428571
+    0.26530612244897955 0.8571428571428571
+    0.2857142857142857 0.8571428571428571
+    0.3061224489795918 0.8571428571428571
+    0.32653061224489793 0.8571428571428571
+    0.3469387755102041 0.8571428571428571
+    0.36734693877551017 0.8571428571428571
+    0.3877551020408163 0.8571428571428571
+    0.4081632653061224 0.8571428571428571
+    0.42857142857142855 0.8571428571428571
+    0.44897959183673464 0.8571428571428571
+    0.4693877551020408 0.8571428571428571
+    0.4897959183673469 0.8571428571428571
+    0.5102040816326531 0.8571428571428571
+    0.5306122448979591 0.8571428571428571
+    0.5510204081632653 0.8571428571428571
+    0.5714285714285714 0.8571428571428571
+    0.5918367346938775 0.8571428571428571
+    0.6122448979591836 0.8571428571428571
+    0.6326530612244897 0.8571428571428571
+    0.6530612244897959 0.8571428571428571
+    0.673469387755102 0.8571428571428571
+    0.6938775510204082 0.8571428571428571
+    0.7142857142857142 0.8571428571428571
+    0.7346938775510203 0.8571428571428571
+    0.7551020408163265 0.8571428571428571
+    0.7755102040816326 0.8571428571428571
+    0.7959183673469387 0.8571428571428571
+    0.8163265306122448 0.8571428571428571
+    0.836734693877551 0.8571428571428571
+    0.8571428571428571 0.8571428571428571
+    0.8775510204081632 0.8571428571428571
+    0.8979591836734693 0.8571428571428571
+    0.9183673469387754 0.8571428571428571
+    0.9387755102040816 0.8571428571428571
+    0.9591836734693877 0.8571428571428571
+    0.9795918367346939 0.8571428571428571
+    0.9999999999999999 0.8571428571428571
+    0.0 0.8775510204081632
+    0.02040816326530612 0.8775510204081632
+    0.04081632653061224 0.8775510204081632
+    0.061224489795918366 0.8775510204081632
+    0.08163265306122448 0.8775510204081632
+    0.1020408163265306 0.8775510204081632
+    0.12244897959183673 0.8775510204081632
+    0.14285714285714285 0.8775510204081632
+    0.16326530612244897 0.8775510204081632
+    0.18367346938775508 0.8775510204081632
+    0.2040816326530612 0.8775510204081632
+    0.22448979591836732 0.8775510204081632
+    0.24489795918367346 0.8775510204081632
+    0.26530612244897955 0.8775510204081632
+    0.2857142857142857 0.8775510204081632
+    0.3061224489795918 0.8775510204081632
+    0.32653061224489793 0.8775510204081632
+    0.3469387755102041 0.8775510204081632
+    0.36734693877551017 0.8775510204081632
+    0.3877551020408163 0.8775510204081632
+    0.4081632653061224 0.8775510204081632
+    0.42857142857142855 0.8775510204081632
+    0.44897959183673464 0.8775510204081632
+    0.4693877551020408 0.8775510204081632
+    0.4897959183673469 0.8775510204081632
+    0.5102040816326531 0.8775510204081632
+    0.5306122448979591 0.8775510204081632
+    0.5510204081632653 0.8775510204081632
+    0.5714285714285714 0.8775510204081632
+    0.5918367346938775 0.8775510204081632
+    0.6122448979591836 0.8775510204081632
+    0.6326530612244897 0.8775510204081632
+    0.6530612244897959 0.8775510204081632
+    0.673469387755102 0.8775510204081632
+    0.6938775510204082 0.8775510204081632
+    0.7142857142857142 0.8775510204081632
+    0.7346938775510203 0.8775510204081632
+    0.7551020408163265 0.8775510204081632
+    0.7755102040816326 0.8775510204081632
+    0.7959183673469387 0.8775510204081632
+    0.8163265306122448 0.8775510204081632
+    0.836734693877551 0.8775510204081632
+    0.8571428571428571 0.8775510204081632
+    0.8775510204081632 0.8775510204081632
+    0.8979591836734693 0.8775510204081632
+    0.9183673469387754 0.8775510204081632
+    0.9387755102040816 0.8775510204081632
+    0.9591836734693877 0.8775510204081632
+    0.9795918367346939 0.8775510204081632
+    0.9999999999999999 0.8775510204081632
+    0.0 0.8979591836734693
+    0.02040816326530612 0.8979591836734693
+    0.04081632653061224 0.8979591836734693
+    0.061224489795918366 0.8979591836734693
+    0.08163265306122448 0.8979591836734693
+    0.1020408163265306 0.8979591836734693
+    0.12244897959183673 0.8979591836734693
+    0.14285714285714285 0.8979591836734693
+    0.16326530612244897 0.8979591836734693
+    0.18367346938775508 0.8979591836734693
+    0.2040816326530612 0.8979591836734693
+    0.22448979591836732 0.8979591836734693
+    0.24489795918367346 0.8979591836734693
+    0.26530612244897955 0.8979591836734693
+    0.2857142857142857 0.8979591836734693
+    0.3061224489795918 0.8979591836734693
+    0.32653061224489793 0.8979591836734693
+    0.3469387755102041 0.8979591836734693
+    0.36734693877551017 0.8979591836734693
+    0.3877551020408163 0.8979591836734693
+    0.4081632653061224 0.8979591836734693
+    0.42857142857142855 0.8979591836734693
+    0.44897959183673464 0.8979591836734693
+    0.4693877551020408 0.8979591836734693
+    0.4897959183673469 0.8979591836734693
+    0.5102040816326531 0.8979591836734693
+    0.5306122448979591 0.8979591836734693
+    0.5510204081632653 0.8979591836734693
+    0.5714285714285714 0.8979591836734693
+    0.5918367346938775 0.8979591836734693
+    0.6122448979591836 0.8979591836734693
+    0.6326530612244897 0.8979591836734693
+    0.6530612244897959 0.8979591836734693
+    0.673469387755102 0.8979591836734693
+    0.6938775510204082 0.8979591836734693
+    0.7142857142857142 0.8979591836734693
+    0.7346938775510203 0.8979591836734693
+    0.7551020408163265 0.8979591836734693
+    0.7755102040816326 0.8979591836734693
+    0.7959183673469387 0.8979591836734693
+    0.8163265306122448 0.8979591836734693
+    0.836734693877551 0.8979591836734693
+    0.8571428571428571 0.8979591836734693
+    0.8775510204081632 0.8979591836734693
+    0.8979591836734693 0.8979591836734693
+    0.9183673469387754 0.8979591836734693
+    0.9387755102040816 0.8979591836734693
+    0.9591836734693877 0.8979591836734693
+    0.9795918367346939 0.8979591836734693
+    0.9999999999999999 0.8979591836734693
+    0.0 0.9183673469387754
+    0.02040816326530612 0.9183673469387754
+    0.04081632653061224 0.9183673469387754
+    0.061224489795918366 0.9183673469387754
+    0.08163265306122448 0.9183673469387754
+    0.1020408163265306 0.9183673469387754
+    0.12244897959183673 0.9183673469387754
+    0.14285714285714285 0.9183673469387754
+    0.16326530612244897 0.9183673469387754
+    0.18367346938775508 0.9183673469387754
+    0.2040816326530612 0.9183673469387754
+    0.22448979591836732 0.9183673469387754
+    0.24489795918367346 0.9183673469387754
+    0.26530612244897955 0.9183673469387754
+    0.2857142857142857 0.9183673469387754
+    0.3061224489795918 0.9183673469387754
+    0.32653061224489793 0.9183673469387754
+    0.3469387755102041 0.9183673469387754
+    0.36734693877551017 0.9183673469387754
+    0.3877551020408163 0.9183673469387754
+    0.4081632653061224 0.9183673469387754
+    0.42857142857142855 0.9183673469387754
+    0.44897959183673464 0.9183673469387754
+    0.4693877551020408 0.9183673469387754
+    0.4897959183673469 0.9183673469387754
+    0.5102040816326531 0.9183673469387754
+    0.5306122448979591 0.9183673469387754
+    0.5510204081632653 0.9183673469387754
+    0.5714285714285714 0.9183673469387754
+    0.5918367346938775 0.9183673469387754
+    0.6122448979591836 0.9183673469387754
+    0.6326530612244897 0.9183673469387754
+    0.6530612244897959 0.9183673469387754
+    0.673469387755102 0.9183673469387754
+    0.6938775510204082 0.9183673469387754
+    0.7142857142857142 0.9183673469387754
+    0.7346938775510203 0.9183673469387754
+    0.7551020408163265 0.9183673469387754
+    0.7755102040816326 0.9183673469387754
+    0.7959183673469387 0.9183673469387754
+    0.8163265306122448 0.9183673469387754
+    0.836734693877551 0.9183673469387754
+    0.8571428571428571 0.9183673469387754
+    0.8775510204081632 0.9183673469387754
+    0.8979591836734693 0.9183673469387754
+    0.9183673469387754 0.9183673469387754
+    0.9387755102040816 0.9183673469387754
+    0.9591836734693877 0.9183673469387754
+    0.9795918367346939 0.9183673469387754
+    0.9999999999999999 0.9183673469387754
+    0.0 0.9387755102040816
+    0.02040816326530612 0.9387755102040816
+    0.04081632653061224 0.9387755102040816
+    0.061224489795918366 0.9387755102040816
+    0.08163265306122448 0.9387755102040816
+    0.1020408163265306 0.9387755102040816
+    0.12244897959183673 0.9387755102040816
+    0.14285714285714285 0.9387755102040816
+    0.16326530612244897 0.9387755102040816
+    0.18367346938775508 0.9387755102040816
+    0.2040816326530612 0.9387755102040816
+    0.22448979591836732 0.9387755102040816
+    0.24489795918367346 0.9387755102040816
+    0.26530612244897955 0.9387755102040816
+    0.2857142857142857 0.9387755102040816
+    0.3061224489795918 0.9387755102040816
+    0.32653061224489793 0.9387755102040816
+    0.3469387755102041 0.9387755102040816
+    0.36734693877551017 0.9387755102040816
+    0.3877551020408163 0.9387755102040816
+    0.4081632653061224 0.9387755102040816
+    0.42857142857142855 0.9387755102040816
+    0.44897959183673464 0.9387755102040816
+    0.4693877551020408 0.9387755102040816
+    0.4897959183673469 0.9387755102040816
+    0.5102040816326531 0.9387755102040816
+    0.5306122448979591 0.9387755102040816
+    0.5510204081632653 0.9387755102040816
+    0.5714285714285714 0.9387755102040816
+    0.5918367346938775 0.9387755102040816
+    0.6122448979591836 0.9387755102040816
+    0.6326530612244897 0.9387755102040816
+    0.6530612244897959 0.9387755102040816
+    0.673469387755102 0.9387755102040816
+    0.6938775510204082 0.9387755102040816
+    0.7142857142857142 0.9387755102040816
+    0.7346938775510203 0.9387755102040816
+    0.7551020408163265 0.9387755102040816
+    0.7755102040816326 0.9387755102040816
+    0.7959183673469387 0.9387755102040816
+    0.8163265306122448 0.9387755102040816
+    0.836734693877551 0.9387755102040816
+    0.8571428571428571 0.9387755102040816
+    0.8775510204081632 0.9387755102040816
+    0.8979591836734693 0.9387755102040816
+    0.9183673469387754 0.9387755102040816
+    0.9387755102040816 0.9387755102040816
+    0.9591836734693877 0.9387755102040816
+    0.9795918367346939 0.9387755102040816
+    0.9999999999999999 0.9387755102040816
+    0.0 0.9591836734693877
+    0.02040816326530612 0.9591836734693877
+    0.04081632653061224 0.9591836734693877
+    0.061224489795918366 0.9591836734693877
+    0.08163265306122448 0.9591836734693877
+    0.1020408163265306 0.9591836734693877
+    0.12244897959183673 0.9591836734693877
+    0.14285714285714285 0.9591836734693877
+    0.16326530612244897 0.9591836734693877
+    0.18367346938775508 0.9591836734693877
+    0.2040816326530612 0.9591836734693877
+    0.22448979591836732 0.9591836734693877
+    0.24489795918367346 0.9591836734693877
+    0.26530612244897955 0.9591836734693877
+    0.2857142857142857 0.9591836734693877
+    0.3061224489795918 0.9591836734693877
+    0.32653061224489793 0.9591836734693877
+    0.3469387755102041 0.9591836734693877
+    0.36734693877551017 0.9591836734693877
+    0.3877551020408163 0.9591836734693877
+    0.4081632653061224 0.9591836734693877
+    0.42857142857142855 0.9591836734693877
+    0.44897959183673464 0.9591836734693877
+    0.4693877551020408 0.9591836734693877
+    0.4897959183673469 0.9591836734693877
+    0.5102040816326531 0.9591836734693877
+    0.5306122448979591 0.9591836734693877
+    0.5510204081632653 0.9591836734693877
+    0.5714285714285714 0.9591836734693877
+    0.5918367346938775 0.9591836734693877
+    0.6122448979591836 0.9591836734693877
+    0.6326530612244897 0.9591836734693877
+    0.6530612244897959 0.9591836734693877
+    0.673469387755102 0.9591836734693877
+    0.6938775510204082 0.9591836734693877
+    0.7142857142857142 0.9591836734693877
+    0.7346938775510203 0.9591836734693877
+    0.7551020408163265 0.9591836734693877
+    0.7755102040816326 0.9591836734693877
+    0.7959183673469387 0.9591836734693877
+    0.8163265306122448 0.9591836734693877
+    0.836734693877551 0.9591836734693877
+    0.8571428571428571 0.9591836734693877
+    0.8775510204081632 0.9591836734693877
+    0.8979591836734693 0.9591836734693877
+    0.9183673469387754 0.9591836734693877
+    0.9387755102040816 0.9591836734693877
+    0.9591836734693877 0.9591836734693877
+    0.9795918367346939 0.9591836734693877
+    0.9999999999999999 0.9591836734693877
+    0.0 0.9795918367346939
+    0.02040816326530612 0.9795918367346939
+    0.04081632653061224 0.9795918367346939
+    0.061224489795918366 0.9795918367346939
+    0.08163265306122448 0.9795918367346939
+    0.1020408163265306 0.9795918367346939
+    0.12244897959183673 0.9795918367346939
+    0.14285714285714285 0.9795918367346939
+    0.16326530612244897 0.9795918367346939
+    0.18367346938775508 0.9795918367346939
+    0.2040816326530612 0.9795918367346939
+    0.22448979591836732 0.9795918367346939
+    0.24489795918367346 0.9795918367346939
+    0.26530612244897955 0.9795918367346939
+    0.2857142857142857 0.9795918367346939
+    0.3061224489795918 0.9795918367346939
+    0.32653061224489793 0.9795918367346939
+    0.3469387755102041 0.9795918367346939
+    0.36734693877551017 0.9795918367346939
+    0.3877551020408163 0.9795918367346939
+    0.4081632653061224 0.9795918367346939
+    0.42857142857142855 0.9795918367346939
+    0.44897959183673464 0.9795918367346939
+    0.4693877551020408 0.9795918367346939
+    0.4897959183673469 0.9795918367346939
+    0.5102040816326531 0.9795918367346939
+    0.5306122448979591 0.9795918367346939
+    0.5510204081632653 0.9795918367346939
+    0.5714285714285714 0.9795918367346939
+    0.5918367346938775 0.9795918367346939
+    0.6122448979591836 0.9795918367346939
+    0.6326530612244897 0.9795918367346939
+    0.6530612244897959 0.9795918367346939
+    0.673469387755102 0.9795918367346939
+    0.6938775510204082 0.9795918367346939
+    0.7142857142857142 0.9795918367346939
+    0.7346938775510203 0.9795918367346939
+    0.7551020408163265 0.9795918367346939
+    0.7755102040816326 0.9795918367346939
+    0.7959183673469387 0.9795918367346939
+    0.8163265306122448 0.9795918367346939
+    0.836734693877551 0.9795918367346939
+    0.8571428571428571 0.9795918367346939
+    0.8775510204081632 0.9795918367346939
+    0.8979591836734693 0.9795918367346939
+    0.9183673469387754 0.9795918367346939
+    0.9387755102040816 0.9795918367346939
+    0.9591836734693877 0.9795918367346939
+    0.9795918367346939 0.9795918367346939
+    0.9999999999999999 0.9795918367346939
+    0.0 0.9999999999999999
+    0.02040816326530612 0.9999999999999999
+    0.04081632653061224 0.9999999999999999
+    0.061224489795918366 0.9999999999999999
+    0.08163265306122448 0.9999999999999999
+    0.1020408163265306 0.9999999999999999
+    0.12244897959183673 0.9999999999999999
+    0.14285714285714285 0.9999999999999999
+    0.16326530612244897 0.9999999999999999
+    0.18367346938775508 0.9999999999999999
+    0.2040816326530612 0.9999999999999999
+    0.22448979591836732 0.9999999999999999
+    0.24489795918367346 0.9999999999999999
+    0.26530612244897955 0.9999999999999999
+    0.2857142857142857 0.9999999999999999
+    0.3061224489795918 0.9999999999999999
+    0.32653061224489793 0.9999999999999999
+    0.3469387755102041 0.9999999999999999
+    0.36734693877551017 0.9999999999999999
+    0.3877551020408163 0.9999999999999999
+    0.4081632653061224 0.9999999999999999
+    0.42857142857142855 0.9999999999999999
+    0.44897959183673464 0.9999999999999999
+    0.4693877551020408 0.9999999999999999
+    0.4897959183673469 0.9999999999999999
+    0.5102040816326531 0.9999999999999999
+    0.5306122448979591 0.9999999999999999
+    0.5510204081632653 0.9999999999999999
+    0.5714285714285714 0.9999999999999999
+    0.5918367346938775 0.9999999999999999
+    0.6122448979591836 0.9999999999999999
+    0.6326530612244897 0.9999999999999999
+    0.6530612244897959 0.9999999999999999
+    0.673469387755102 0.9999999999999999
+    0.6938775510204082 0.9999999999999999
+    0.7142857142857142 0.9999999999999999
+    0.7346938775510203 0.9999999999999999
+    0.7551020408163265 0.9999999999999999
+    0.7755102040816326 0.9999999999999999
+    0.7959183673469387 0.9999999999999999
+    0.8163265306122448 0.9999999999999999
+    0.836734693877551 0.9999999999999999
+    0.8571428571428571 0.9999999999999999
+    0.8775510204081632 0.9999999999999999
+    0.8979591836734693 0.9999999999999999
+    0.9183673469387754 0.9999999999999999
+    0.9387755102040816 0.9999999999999999
+    0.9591836734693877 0.9999999999999999
+    0.9795918367346939 0.9999999999999999
+    0.9999999999999999 0.9999999999999999
Index: /tags/1.6.0/examples/zoo/mesh/substrate_data.txt
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/substrate_data.txt	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/substrate_data.txt	(revision 6168)
@@ -0,0 +1,500 @@
+    1.4358794e-01 1.1341028e-01 1.0426426e-01 1.1974895e-01 1.4802129e-01
+    1.9555289e-01 2.0940159e-01 1.3230848e-01 6.3460079e-02 5.7418281e-02
+    5.5070475e-02 3.4186226e-02 2.3972370e-02 3.4336690e-02 4.9028199e-02
+    6.2904541e-02 8.9055325e-02 1.3509754e-01 1.5770342e-01 1.4481218e-01
+    1.5334034e-01 1.9282565e-01 2.0946699e-01 1.9905750e-01 1.8329185e-01
+    1.6279224e-01 1.1833638e-01 5.0482784e-02 -2.6026858e-02 -1.1140320e-01
+    -2.0810224e-01 -3.0907933e-01 -3.4294612e-01 -3.3011417e-01 -3.6080332e-01
+    -4.1348654e-01 -4.4308206e-01 -4.4888220e-01 -3.9620970e-01 -3.0530178e-01
+    -2.1460848e-01 -1.2346454e-01 -5.2152198e-02 8.8999954e-03 6.5539381e-02
+    1.2594384e-01 2.1350540e-01 3.0503894e-01 3.7612130e-01 4.3404062e-01
+    1.7636398e-01 1.2463255e-01 1.0083091e-01 1.1346394e-01 1.3414549e-01
+    1.4523552e-01 1.4034889e-01 1.0428027e-01 6.5296722e-02 3.6055651e-02
+    1.2997634e-02 -5.8805809e-03 -6.8915176e-03 2.1318554e-02 4.0554819e-02
+    3.5082761e-02 4.6776271e-02 8.9639178e-02 1.1171071e-01 1.0011820e-01
+    1.1230716e-01 1.5865564e-01 1.7198434e-01 1.4642494e-01 1.2406496e-01
+    1.0623328e-01 4.7218667e-02 -5.0942470e-02 -1.2824984e-01 -1.8852188e-01
+    -2.6268284e-01 -3.4097016e-01 -3.4147355e-01 -2.8863489e-01 -2.9519077e-01
+    -3.3231863e-01 -3.2900034e-01 -2.9658526e-01 -2.3348103e-01 -1.4951508e-01
+    -7.3180667e-02 2.1812233e-03 8.4372899e-02 1.5820633e-01 1.7991968e-01
+    1.9785205e-01 2.9843795e-01 4.0330554e-01 4.3272325e-01 4.1047404e-01
+    1.9220258e-01 1.1685111e-01 8.0367954e-02 9.6400348e-02 1.1927951e-01
+    1.1087740e-01 9.6344473e-02 8.6663320e-02 6.7407112e-02 2.5160633e-02
+    -5.6364795e-03 -1.0761179e-02 3.3684124e-03 4.4497655e-02 6.8080019e-02
+    5.3352122e-02 5.9724653e-02 1.0553699e-01 1.3164481e-01 1.2483435e-01
+    1.3792592e-01 1.8051794e-01 1.8795349e-01 1.5440745e-01 1.2481617e-01
+    1.0062227e-01 3.0909795e-02 -8.1814127e-02 -1.6349686e-01 -2.1857478e-01
+    -2.7712182e-01 -3.3186882e-01 -3.2398755e-01 -2.7284530e-01 -2.7389205e-01
+    -3.0017345e-01 -2.7741872e-01 -2.2130121e-01 -1.4448021e-01 -5.3879093e-02
+    2.1457576e-02 9.1506931e-02 1.7453422e-01 2.4719240e-01 2.4952460e-01
+    2.4404031e-01 3.4033521e-01 4.3947603e-01 4.4099746e-01 3.7486642e-01
+    1.9185761e-01 8.0886444e-02 3.0375009e-02 6.1084205e-02 1.0353225e-01
+    9.9054582e-02 8.8297767e-02 9.0356695e-02 7.9188000e-02 3.0942080e-02
+    6.0909775e-03 3.5703030e-02 7.7896835e-02 1.2750441e-01 1.5527690e-01
+    1.4201865e-01 1.5442874e-01 2.1396999e-01 2.5195694e-01 2.5470504e-01
+    2.6533968e-01 2.9071375e-01 2.8935627e-01 2.5775163e-01 2.1963218e-01
+    1.7573613e-01 9.9797341e-02 -6.6171308e-03 -9.9264880e-02 -1.7888857e-01
+    -2.3139617e-01 -2.6008863e-01 -2.8248634e-01 -2.9858568e-01 -3.2501580e-01
+    -3.5008716e-01 -3.2723485e-01 -2.6594128e-01 -1.6675870e-01 -4.5319114e-02
+    5.0710829e-02 1.3153850e-01 2.0069922e-01 2.5098763e-01 2.5508375e-01
+    2.5249177e-01 3.1973580e-01 3.8574134e-01 3.7747606e-01 3.1672722e-01
+    1.7268034e-01 4.7473297e-02 -7.2503802e-03 3.2519581e-02 8.6438430e-02
+    8.7640660e-02 7.9542603e-02 7.8590993e-02 6.8829091e-02 3.2387832e-02
+    2.4865717e-02 7.9216216e-02 1.3895811e-01 1.9097884e-01 2.2268168e-01
+    2.1959080e-01 2.4201102e-01 3.1047903e-01 3.5723180e-01 3.7001069e-01
+    3.7683272e-01 3.8098751e-01 3.6897127e-01 3.3996859e-01 2.9422741e-01
+    2.3171699e-01 1.5198187e-01 5.5589588e-02 -4.4517609e-02 -1.4550116e-01
+    -1.9263345e-01 -1.9827180e-01 -2.4373751e-01 -3.1273850e-01 -3.5429825e-01
+    -3.7122358e-01 -3.4793238e-01 -2.8652233e-01 -1.7433238e-01 -3.3523888e-02
+    7.6960815e-02 1.6582940e-01 2.2204640e-01 2.5304698e-01 2.6131316e-01
+    2.6364023e-01 3.0202210e-01 3.3545215e-01 3.2096591e-01 2.7138365e-01
+    1.2219397e-01 4.3625119e-02 7.8947968e-03 3.1040534e-02 5.9397042e-02
+    4.8346807e-02 2.6503890e-02 -3.5335496e-03 -1.9985161e-02 -7.1926925e-03
+    1.9175708e-02 5.6269851e-02 9.8440059e-02 1.4554505e-01 1.8401210e-01
+    2.0544673e-01 2.3979670e-01 2.9787236e-01 3.4063599e-01 3.6220768e-01
+    3.6484825e-01 3.4762358e-01 3.2112422e-01 2.8638457e-01 2.3536607e-01
+    1.6782775e-01 8.5178692e-02 -1.1888325e-02 -1.0622095e-01 -1.9529312e-01
+    -2.2690550e-01 -2.1280879e-01 -2.2932212e-01 -2.6199647e-01 -2.6660647e-01
+    -2.4784254e-01 -2.0201019e-01 -1.3137600e-01 -3.5712722e-02 7.3946745e-02
+    1.6487676e-01 2.4193045e-01 3.0211055e-01 3.4167748e-01 3.4098686e-01
+    3.2924159e-01 3.6274535e-01 3.9026779e-01 3.5963488e-01 2.8640970e-01
+    7.9360439e-02 4.8020389e-02 3.3699512e-02 4.5445952e-02 5.2961622e-02
+    2.9353281e-02 -3.3165694e-03 -4.7752243e-02 -6.1551929e-02 -6.3445786e-03
+    4.6030466e-02 6.2881736e-02 8.3263358e-02 1.1856448e-01 1.5504772e-01
+    1.8970413e-01 2.2691765e-01 2.6914689e-01 3.0291026e-01 3.2762923e-01
+    3.2719278e-01 2.9804966e-01 2.6301362e-01 2.2396958e-01 1.7035061e-01
+    1.0187191e-01 1.7660478e-02 -8.1275898e-02 -1.6691370e-01 -2.3821451e-01
+    -2.6133194e-01 -2.4347451e-01 -2.2768194e-01 -2.0806114e-01 -1.7312476e-01
+    -1.2465031e-01 -6.4321733e-02 6.5406723e-03 8.4661047e-02 1.6580921e-01
+    2.3459278e-01 2.9534808e-01 3.5732614e-01 4.0386560e-01 3.9096932e-01
+    3.6212367e-01 3.9029248e-01 4.1326853e-01 3.6951755e-01 2.7738813e-01
+    8.9494499e-02 6.7584614e-02 6.5037124e-02 9.3813043e-02 1.1379008e-01
+    8.3627764e-02 5.3482388e-02 4.5323028e-02 6.1760289e-02 1.2071072e-01
+    1.6922991e-01 1.8040685e-01 1.8771827e-01 2.0004173e-01 2.1123537e-01
+    2.1944690e-01 2.3339760e-01 2.5633594e-01 2.7732198e-01 2.9615665e-01
+    2.9882541e-01 2.8295582e-01 2.5848249e-01 2.2635938e-01 1.7693814e-01
+    1.0992857e-01 2.2302524e-02 -8.4502757e-02 -1.6676884e-01 -2.2607707e-01
+    -2.6276348e-01 -2.7577114e-01 -2.4975845e-01 -1.9216580e-01 -1.3985154e-01
+    -8.8508270e-02 -4.3608766e-02 2.3487614e-03 8.0594074e-02 1.7224055e-01
+    2.3384622e-01 2.8046548e-01 3.3545369e-01 3.7579269e-01 3.5023478e-01
+    3.0548638e-01 3.1393090e-01 3.2129360e-01 2.7741197e-01 1.9723064e-01
+    5.9091026e-02 4.4501929e-02 5.1560244e-02 9.3872837e-02 1.2575628e-01
+    9.6868411e-02 7.6321128e-02 1.0524189e-01 1.5004529e-01 2.0648331e-01
+    2.5156583e-01 2.7195130e-01 2.7966021e-01 2.7482331e-01 2.6872218e-01
+    2.6366308e-01 2.6645429e-01 2.8094981e-01 2.9149951e-01 2.9606473e-01
+    2.9228433e-01 2.7995278e-01 2.5556580e-01 2.1897311e-01 1.6609325e-01
+    9.6750575e-02 1.6616043e-02 -7.3351244e-02 -1.4194780e-01 -1.9116810e-01
+    -2.3774326e-01 -2.7488443e-01 -2.4245663e-01 -1.5850390e-01 -1.0011878e-01
+    -5.6273143e-02 -2.6541570e-02 4.1357626e-04 7.6089502e-02 1.7195088e-01
+    2.2621124e-01 2.5811048e-01 2.8942649e-01 3.0369443e-01 2.6481198e-01
+    2.1007108e-01 1.9938802e-01 1.8897873e-01 1.3901392e-01 6.1357180e-02
+    -8.9826250e-02 -8.4156638e-02 -6.6928230e-02 -2.9539610e-02 -9.1077805e-04
+    -1.6303158e-02 -1.9686096e-02 2.5558960e-02 8.4106583e-02 1.4595154e-01
+    2.0559473e-01 2.6277815e-01 2.9774075e-01 2.9514927e-01 3.0052372e-01
+    3.2796473e-01 3.5908600e-01 3.9524083e-01 4.0565189e-01 3.8317032e-01
+    3.4793217e-01 3.0197272e-01 2.4152913e-01 1.6593475e-01 8.6393635e-02
+    3.1290767e-03 -4.3720826e-02 -5.5936120e-02 -8.5650211e-02 -1.2945695e-01
+    -1.7178666e-01 -2.0703229e-01 -1.6671300e-01 -7.2493046e-02 -2.1316441e-02
+    5.3485437e-03 3.5971342e-02 7.0465019e-02 1.2945235e-01 1.9728000e-01
+    2.4103413e-01 2.6097975e-01 2.3439161e-01 1.8080081e-01 1.2544013e-01
+    7.2449760e-02 5.1998319e-02 2.5836370e-02 -4.9721127e-02 -1.6162625e-01
+    -1.9391421e-01 -1.7135512e-01 -1.4844372e-01 -1.2290140e-01 -1.0244796e-01
+    -1.0124297e-01 -8.7162232e-02 -3.6202289e-02 2.4808162e-02 8.5129136e-02
+    1.5134493e-01 2.3352589e-01 2.8631554e-01 2.8116743e-01 2.9562521e-01
+    3.5693219e-01 4.0990456e-01 4.4797829e-01 4.4848517e-01 4.0345733e-01
+    3.4711801e-01 2.8326839e-01 2.0611707e-01 1.1478684e-01 2.3714665e-02
+    -6.6847581e-02 -9.3044362e-02 -5.8163440e-02 -6.0065168e-02 -9.2126736e-02
+    -1.1479649e-01 -1.2621188e-01 -7.9440372e-02 7.9228958e-03 5.0649084e-02
+    6.7451052e-02 9.6584531e-02 1.3248680e-01 1.8008335e-01 2.2848626e-01
+    2.5160833e-01 2.4654181e-01 1.8042049e-01 8.7590125e-02 2.5785030e-02
+    -2.4303140e-02 -6.1080067e-02 -1.0974882e-01 -2.0644096e-01 -3.4034104e-01
+    -1.7777615e-01 -1.4366407e-01 -1.2093548e-01 -1.1481959e-01 -1.0783759e-01
+    -8.7030936e-02 -5.6054052e-02 -1.1955685e-02 3.5903691e-02 8.0946369e-02
+    1.3367505e-01 2.0865665e-01 2.5006776e-01 2.2159510e-01 2.2828692e-01
+    3.1308781e-01 3.6212444e-01 3.4957036e-01 3.1360181e-01 2.5524199e-01
+    2.0423589e-01 1.6546368e-01 1.2263124e-01 7.5130589e-02 1.0886036e-02
+    -7.0742210e-02 -1.1068051e-01 -1.1052919e-01 -1.1566723e-01 -1.2245229e-01
+    -9.8914217e-02 -4.9902584e-02 1.9224262e-03 5.5980863e-02 9.4438922e-02
+    1.2104380e-01 1.3761101e-01 1.5176993e-01 2.0621122e-01 2.6789126e-01
+    2.5057291e-01 1.9056212e-01 1.3187272e-01 7.0698719e-02 2.4889520e-02
+    -2.2234960e-02 -9.1470781e-02 -1.7758740e-01 -2.8135441e-01 -4.0252030e-01
+    -1.2514548e-01 -9.8002822e-02 -8.3544506e-02 -8.9410632e-02 -9.0013940e-02
+    -6.2311004e-02 -2.6358434e-02 1.0855068e-02 4.7030897e-02 7.6364078e-02
+    1.1353791e-01 1.7473744e-01 2.0583171e-01 1.7175523e-01 1.7595413e-01
+    2.6382511e-01 3.0251566e-01 2.5729556e-01 2.0494883e-01 1.5368436e-01
+    1.1895425e-01 1.0499401e-01 8.9455613e-02 7.1692641e-02 2.7796858e-02
+    -4.3247509e-02 -9.4639337e-02 -1.2635357e-01 -1.3286284e-01 -1.1421223e-01
+    -6.0530943e-02 2.1338809e-02 7.5054752e-02 1.0926538e-01 1.4492913e-01
+    1.7699726e-01 1.8654766e-01 1.8710741e-01 2.3478232e-01 2.8922641e-01
+    2.4143505e-01 1.4826098e-01 1.0220352e-01 6.9281393e-02 2.7103641e-02
+    -2.9791885e-02 -1.2745768e-01 -2.4105619e-01 -3.4487353e-01 -4.4658146e-01
+    -4.1438383e-02 -5.3794454e-02 -6.1073583e-02 -6.3760075e-02 -6.0244270e-02
+    -5.0079066e-02 -3.0798621e-02 3.9097679e-03 3.5610338e-02 5.0489651e-02
+    7.2109920e-02 1.1531367e-01 1.4546015e-01 1.4362280e-01 1.6029455e-01
+    2.1885630e-01 2.4419524e-01 2.1423784e-01 1.9020482e-01 1.8172184e-01
+    1.7591909e-01 1.7320481e-01 1.5703673e-01 1.2614295e-01 7.9276998e-02
+    1.6225301e-02 -3.3118737e-02 -6.8095903e-02 -6.1740564e-02 -1.7583034e-02
+    3.1356145e-02 8.6161181e-02 1.3866607e-01 1.8789780e-01 2.2031262e-01
+    2.3952400e-01 2.5382669e-01 2.6260542e-01 2.7420672e-01 2.7541857e-01
+    2.1958670e-01 1.3925213e-01 1.0096121e-01 6.9483363e-02 1.8365215e-03
+    -8.8243957e-02 -2.0330410e-01 -3.2304389e-01 -4.1886460e-01 -4.9932554e-01
+    5.2323221e-04 -3.3039802e-02 -5.0891974e-02 -4.9231616e-02 -4.0811198e-02
+    -3.8776333e-02 -2.6977712e-02 8.4273105e-03 4.1498738e-02 5.5253139e-02
+    7.6176599e-02 1.1845125e-01 1.5476097e-01 1.7419020e-01 1.9593812e-01
+    2.2886951e-01 2.4053159e-01 2.1894084e-01 2.0921765e-01 2.2024799e-01
+    2.2942642e-01 2.3612122e-01 2.1950537e-01 1.7717376e-01 1.2831952e-01
+    7.3416052e-02 3.1880267e-02 4.3391327e-03 1.6727798e-02 6.4852324e-02
+    1.0291847e-01 1.3561271e-01 1.7929319e-01 2.2974274e-01 2.6943928e-01
+    3.0022564e-01 3.2282750e-01 3.3312106e-01 3.1368022e-01 2.7125129e-01
+    2.1157768e-01 1.4432221e-01 1.0600916e-01 6.7208336e-02 -2.0439658e-02
+    -1.3385193e-01 -2.6237235e-01 -3.8777836e-01 -4.7914313e-01 -5.4573641e-01
+    -3.4710040e-02 -4.9504471e-02 -5.6559204e-02 -5.5748609e-02 -4.7505107e-02
+    -3.3168244e-02 -8.8985410e-03 3.0638895e-02 7.2723696e-02 1.0766504e-01
+    1.5359882e-01 2.2591760e-01 2.7977595e-01 2.9523248e-01 3.0756720e-01
+    3.2914937e-01 3.2694346e-01 2.8936170e-01 2.5968208e-01 2.4432463e-01
+    2.4396577e-01 2.6229577e-01 2.5347049e-01 2.1314677e-01 1.6927484e-01
+    1.2254121e-01 9.5255241e-02 8.7056561e-02 8.9753633e-02 1.0351407e-01
+    1.2928247e-01 1.6494134e-01 1.8695086e-01 2.0442242e-01 2.7068607e-01
+    3.6242297e-01 3.9861369e-01 3.9451407e-01 3.5611246e-01 2.9190484e-01
+    2.2832778e-01 1.6337851e-01 1.1236654e-01 5.7304248e-02 -3.3838275e-02
+    -1.4815322e-01 -2.8790090e-01 -4.2539964e-01 -5.2108229e-01 -5.8679239e-01
+    -5.7928780e-02 -7.3929512e-02 -7.4018472e-02 -5.5383739e-02 -2.7436491e-02
+    1.8488271e-03 3.8118042e-02 8.5420709e-02 1.3474250e-01 1.7832539e-01
+    2.3348532e-01 3.1789396e-01 3.7533847e-01 3.7948876e-01 3.8029437e-01
+    3.9376712e-01 3.8549179e-01 3.4541098e-01 3.0495097e-01 2.6665183e-01
+    2.5179723e-01 2.6698073e-01 2.5546544e-01 2.1203525e-01 1.7158628e-01
+    1.3502808e-01 1.1865241e-01 1.2188591e-01 1.2913929e-01 1.4103060e-01
+    1.5983346e-01 1.8426724e-01 1.9794569e-01 2.1024380e-01 2.8352772e-01
+    3.8893478e-01 4.2194482e-01 4.0619675e-01 3.6717806e-01 3.0703880e-01
+    2.4359429e-01 1.7599419e-01 1.1727588e-01 5.1953356e-02 -4.8360773e-02
+    -1.7065154e-01 -3.1544130e-01 -4.5534220e-01 -5.5049777e-01 -6.1283996e-01
+    -4.6884981e-02 -1.0499464e-01 -1.0894200e-01 -4.1427653e-02 3.9651633e-02
+    8.5432550e-02 1.2971708e-01 1.8851597e-01 2.3983747e-01 2.6857733e-01
+    3.0438438e-01 3.6871712e-01 4.0668777e-01 3.9189490e-01 3.8045136e-01
+    3.8992726e-01 3.8830863e-01 3.6981948e-01 3.3774653e-01 2.8899830e-01
+    2.5649932e-01 2.4686617e-01 2.1617140e-01 1.6001463e-01 1.1897284e-01
+    9.4254172e-02 8.0035617e-02 7.6998586e-02 1.1280253e-01 1.8119342e-01
+    2.0124922e-01 1.8664250e-01 2.1407340e-01 2.7000395e-01 3.1803417e-01
+    3.5765006e-01 3.6189200e-01 3.4208913e-01 3.2874186e-01 3.0804073e-01
+    2.4785134e-01 1.6822263e-01 1.1241019e-01 4.9753998e-02 -7.1805928e-02
+    -2.1837484e-01 -3.6116006e-01 -4.8903236e-01 -5.7406942e-01 -6.2465999e-01
+    -4.8644529e-02 -1.0924196e-01 -1.0780348e-01 -2.3405769e-02 7.3903479e-02
+    1.2316719e-01 1.7197596e-01 2.4686054e-01 3.0813009e-01 3.3096253e-01
+    3.5553747e-01 4.0490458e-01 4.3064827e-01 4.1079765e-01 3.9065849e-01
+    3.8214920e-01 3.7422271e-01 3.6828362e-01 3.4352761e-01 2.9329715e-01
+    2.5139577e-01 2.2327508e-01 1.7828697e-01 1.1261039e-01 7.7372302e-02
+    7.4223797e-02 8.1605485e-02 1.0020296e-01 1.5728898e-01 2.4578350e-01
+    2.6970451e-01 2.4660962e-01 2.8282189e-01 3.5582319e-01 3.8554928e-01
+    3.8508716e-01 3.6592601e-01 3.3446040e-01 3.2658874e-01 3.2316392e-01
+    2.8236830e-01 2.1988298e-01 1.5984177e-01 8.2931192e-02 -5.0500900e-02
+    -2.0494025e-01 -3.3940305e-01 -4.5605129e-01 -5.4143521e-01 -5.9962311e-01
+    -6.6345623e-02 -7.0217622e-02 -4.9779371e-02 3.2095522e-03 6.1089961e-02
+    9.3954326e-02 1.4189810e-01 2.3991533e-01 3.2374224e-01 3.5544037e-01
+    3.8294140e-01 4.2813742e-01 4.5409141e-01 4.4853331e-01 4.2384203e-01
+    3.7664865e-01 3.4195651e-01 3.3191607e-01 3.0992117e-01 2.6896039e-01
+    2.2966886e-01 1.9510381e-01 1.4430914e-01 7.3309254e-02 5.3584050e-02
+    8.7517056e-02 1.4628783e-01 2.2868366e-01 2.9497371e-01 3.4654580e-01
+    3.7735512e-01 3.9174452e-01 4.2691237e-01 4.7369104e-01 4.9920581e-01
+    5.0493358e-01 4.7168603e-01 4.1468642e-01 3.7971837e-01 3.5810482e-01
+    3.6075987e-01 3.5988938e-01 2.8438757e-01 1.6692775e-01 3.5438186e-02
+    -1.0273230e-01 -2.2135513e-01 -3.3069050e-01 -4.3499280e-01 -5.3301530e-01
+    -1.3139178e-01 -1.0056681e-01 -6.4268580e-02 -2.1790869e-02 2.4436356e-02
+    6.6950960e-02 1.2700182e-01 2.3104480e-01 3.2126727e-01 3.6292953e-01
+    3.9736073e-01 4.4168283e-01 4.7128168e-01 4.8198905e-01 4.6089598e-01
+    3.9296719e-01 3.4908823e-01 3.5121841e-01 3.3913882e-01 3.0295630e-01
+    2.6065340e-01 2.1347016e-01 1.5910484e-01 9.5305961e-02 8.1218067e-02
+    1.1883485e-01 1.9447379e-01 3.0570558e-01 3.7306904e-01 4.0234055e-01
+    4.3131004e-01 4.5851180e-01 4.9435210e-01 5.3346314e-01 5.5031205e-01
+    5.4723090e-01 5.1500219e-01 4.6374727e-01 4.2362346e-01 3.9330921e-01
+    4.0093499e-01 4.0835413e-01 3.2338247e-01 1.9213939e-01 6.1790922e-02
+    -6.8032534e-02 -1.7628236e-01 -2.7132646e-01 -3.5670508e-01 -4.3138014e-01
+    -2.5392055e-01 -2.2125112e-01 -1.7430506e-01 -1.1217350e-01 -3.7855391e-02
+    4.9603404e-02 1.3951495e-01 2.2833944e-01 3.0415431e-01 3.5604563e-01
+    4.0110830e-01 4.4732184e-01 4.8358031e-01 5.1164173e-01 5.0424502e-01
+    4.3982274e-01 4.1103926e-01 4.4854606e-01 4.5634888e-01 4.1793183e-01
+    3.6343737e-01 2.9306507e-01 2.3589436e-01 1.9393424e-01 1.7122130e-01
+    1.6789509e-01 2.1431179e-01 3.0779076e-01 3.6759942e-01 3.9804060e-01
+    4.1382820e-01 4.1854496e-01 4.5837714e-01 5.1747817e-01 5.1776830e-01
+    4.8100083e-01 4.6741194e-01 4.6268477e-01 4.4797517e-01 4.2400413e-01
+    3.8523001e-01 3.2892643e-01 2.4341779e-01 1.3514857e-01 3.1517198e-03
+    -1.3128922e-01 -2.3687016e-01 -3.0816451e-01 -3.2443875e-01 -2.9193229e-01
+    -3.4517320e-01 -3.0468246e-01 -2.4554883e-01 -1.6486929e-01 -7.2276971e-02
+    3.0827905e-02 1.2577075e-01 1.9651362e-01 2.5835684e-01 3.1617499e-01
+    3.7019256e-01 4.2351567e-01 4.6649003e-01 5.0140673e-01 4.9649537e-01
+    4.2744938e-01 3.9677163e-01 4.3765647e-01 4.4902298e-01 4.1339585e-01
+    3.6423234e-01 3.0184378e-01 2.5938338e-01 2.3980169e-01 2.3033805e-01
+    2.3059262e-01 2.7176789e-01 3.5160619e-01 4.0292228e-01 4.2906786e-01
+    4.3777234e-01 4.3388716e-01 4.7132355e-01 5.3310369e-01 5.3834533e-01
+    5.0965664e-01 5.1185585e-01 5.2642323e-01 5.2135621e-01 4.9957187e-01
+    4.5316855e-01 3.8365788e-01 2.8727407e-01 1.7177265e-01 4.4480181e-02
+    -7.9516659e-02 -1.7846751e-01 -2.3802433e-01 -2.2825089e-01 -1.5813209e-01
+    -3.9804156e-01 -3.4088257e-01 -2.6714066e-01 -1.7013497e-01 -7.2187199e-02
+    1.0920225e-02 8.1047389e-02 1.3085911e-01 1.7992566e-01 2.3905490e-01
+    3.0025002e-01 3.6656156e-01 4.1624675e-01 4.4620526e-01 4.3047830e-01
+    3.4593703e-01 2.9243021e-01 2.9882837e-01 2.9446697e-01 2.6754705e-01
+    2.4402242e-01 2.2558681e-01 2.1773342e-01 2.2043002e-01 2.5042271e-01
+    3.0836334e-01 3.7483242e-01 4.4870737e-01 4.9090301e-01 5.0478407e-01
+    5.1359832e-01 5.1855370e-01 5.4608656e-01 5.8951199e-01 6.2529465e-01
+    6.5453931e-01 6.6868643e-01 6.6927839e-01 6.5378562e-01 6.2806600e-01
+    6.2135652e-01 6.0071082e-01 4.8066080e-01 3.2065401e-01 2.0534808e-01
+    1.0984237e-01 2.2652559e-02 -3.9226263e-02 -5.5325522e-02 -3.1762203e-02
+    -4.4350590e-01 -3.7939382e-01 -3.0378426e-01 -2.1263207e-01 -1.1943527e-01
+    -3.2324336e-02 4.4750286e-02 1.0442923e-01 1.5853746e-01 2.1046042e-01
+    2.6677211e-01 3.3842783e-01 3.8984774e-01 4.1287821e-01 3.8886956e-01
+    2.9634438e-01 2.3312041e-01 2.2595229e-01 2.1885403e-01 2.0295665e-01
+    1.9874995e-01 2.0851218e-01 2.2313317e-01 2.4136522e-01 2.8440480e-01
+    3.5303203e-01 4.1789695e-01 4.7861532e-01 5.1838576e-01 5.3925503e-01
+    5.5926629e-01 5.7795579e-01 6.0197920e-01 6.3011773e-01 6.6214180e-01
+    6.9395031e-01 7.0378066e-01 6.9882645e-01 6.9253747e-01 6.8422217e-01
+    6.9358451e-01 6.8586620e-01 5.6217283e-01 3.9412792e-01 2.8873949e-01
+    2.0716168e-01 1.2293948e-01 5.8462717e-02 3.6060609e-02 4.9074240e-02
+    -4.8246430e-01 -4.2167862e-01 -3.5749952e-01 -2.9526252e-01 -2.1701651e-01
+    -9.9913417e-02 1.8025212e-02 1.1972617e-01 1.9740287e-01 2.3338240e-01
+    2.7232018e-01 3.4124773e-01 3.8926172e-01 4.0366751e-01 3.7434977e-01
+    2.8183607e-01 2.2301551e-01 2.2503668e-01 2.2922396e-01 2.2659853e-01
+    2.3459936e-01 2.5522418e-01 2.7920616e-01 3.0602851e-01 3.3398101e-01
+    3.6296708e-01 3.9747052e-01 4.3741131e-01 4.8175887e-01 5.2984052e-01
+    5.7243646e-01 6.0957402e-01 6.3694744e-01 6.5350289e-01 6.4538212e-01
+    6.2081663e-01 6.0950916e-01 6.0866768e-01 6.3254886e-01 6.6402091e-01
+    6.6367147e-01 6.2988456e-01 5.2363967e-01 3.8637736e-01 2.8858341e-01
+    2.0535409e-01 1.1476736e-01 4.7710858e-02 4.0718907e-02 8.2875338e-02
+    -4.7133770e-01 -4.0681016e-01 -3.4358442e-01 -2.8782885e-01 -2.1885008e-01
+    -1.1515584e-01 -3.0158086e-03 1.1366762e-01 2.0340264e-01 2.3639490e-01
+    2.6679239e-01 3.2201073e-01 3.5887160e-01 3.6671570e-01 3.4020692e-01
+    2.6390162e-01 2.1931030e-01 2.2978224e-01 2.4313450e-01 2.5196253e-01
+    2.6515534e-01 2.8376466e-01 2.9824766e-01 3.0749873e-01 3.2367931e-01
+    3.4716219e-01 3.7621630e-01 4.1089287e-01 4.5445595e-01 5.0546078e-01
+    5.4503829e-01 5.7481562e-01 6.0058695e-01 6.1802102e-01 5.9625220e-01
+    5.4937028e-01 5.2495976e-01 5.1739173e-01 5.4185665e-01 5.7824566e-01
+    5.7540594e-01 5.4131813e-01 4.6224371e-01 3.5753655e-01 2.5596325e-01
+    1.6156529e-01 8.9618821e-02 4.7788120e-02 5.3629123e-02 1.0186992e-01
+    -4.1107560e-01 -3.3654976e-01 -2.6471463e-01 -1.9453384e-01 -1.2956380e-01
+    -7.9967165e-02 -1.7553255e-02 8.8068110e-02 1.7856191e-01 2.2084157e-01
+    2.5111024e-01 2.8226601e-01 3.0040665e-01 3.0287496e-01 2.8642967e-01
+    2.4189030e-01 2.2105919e-01 2.3942400e-01 2.5983046e-01 2.7794997e-01
+    2.8948446e-01 2.9397893e-01 2.8140701e-01 2.4883447e-01 2.5679798e-01
+    3.0740400e-01 3.5467481e-01 3.9863841e-01 4.3623282e-01 4.6709410e-01
+    4.7970167e-01 4.7823816e-01 4.9783170e-01 5.2779218e-01 5.1781767e-01
+    4.8149878e-01 4.5183223e-01 4.2729037e-01 4.2444030e-01 4.3276503e-01
+    4.3380009e-01 4.2302412e-01 3.7933317e-01 3.0801024e-01 1.9217357e-01
+    7.8259874e-02 4.8767141e-02 5.8419255e-02 7.4473590e-02 1.0664886e-01
+    -3.1689599e-01 -2.5209865e-01 -1.9005655e-01 -1.2926495e-01 -7.4855292e-02
+    -3.8934280e-02 9.7845614e-03 1.0223591e-01 1.8408301e-01 2.2798999e-01
+    2.5490371e-01 2.7127061e-01 2.6610226e-01 2.2946476e-01 1.9959173e-01
+    1.8590463e-01 1.9126954e-01 2.2149626e-01 2.4498808e-01 2.5625909e-01
+    2.6236332e-01 2.6437448e-01 2.4773934e-01 2.0869985e-01 2.2557659e-01
+    3.0115607e-01 3.5835330e-01 3.9772322e-01 4.2811403e-01 4.4945878e-01
+    4.6050198e-01 4.6367178e-01 4.8388051e-01 5.1328341e-01 5.1685690e-01
+    5.0099829e-01 4.7074020e-01 4.3351964e-01 4.2512251e-01 4.2866381e-01
+    4.1411698e-01 3.8425917e-01 3.3033866e-01 2.5528746e-01 1.4194528e-01
+    3.9919408e-02 4.4989797e-02 8.8309705e-02 1.0800375e-01 1.2249916e-01
+    -1.9519723e-01 -1.5679833e-01 -1.2015380e-01 -8.8951007e-02 -5.0842659e-02
+    5.1351258e-03 7.0022276e-02 1.4660196e-01 2.1137664e-01 2.5100081e-01
+    2.7245921e-01 2.8200427e-01 2.5048207e-01 1.4860218e-01 8.6602560e-02
+    1.0187718e-01 1.3452439e-01 1.7960407e-01 2.0275939e-01 1.9375246e-01
+    1.9187210e-01 2.0234573e-01 2.0210836e-01 1.8742303e-01 2.2747891e-01
+    3.2480901e-01 3.8418413e-01 4.0712226e-01 4.2907971e-01 4.4966842e-01
+    4.8075151e-01 5.1925727e-01 5.4571667e-01 5.6304476e-01 5.8110924e-01
+    5.9361467e-01 5.6758117e-01 5.2271401e-01 5.2640716e-01 5.4314708e-01
+    4.9643859e-01 4.1213226e-01 3.0917759e-01 1.9874950e-01 1.0292596e-01
+    4.0195054e-02 7.2201618e-02 1.3275808e-01 1.5006496e-01 1.4555525e-01
+    -1.5197705e-01 -1.2403176e-01 -1.0187704e-01 -9.2601526e-02 -7.2436522e-02
+    -1.7666476e-02 4.4789264e-02 1.0392569e-01 1.5709624e-01 2.0393572e-01
+    2.3087038e-01 2.3428728e-01 2.0050669e-01 1.0625563e-01 5.0625809e-02
+    6.7850676e-02 1.0305411e-01 1.5250729e-01 1.7761328e-01 1.6586962e-01
+    1.7423204e-01 2.1119262e-01 2.3589255e-01 2.4407523e-01 2.8695853e-01
+    3.6635837e-01 4.0887992e-01 4.1615604e-01 4.2904372e-01 4.4723772e-01
+    4.9081757e-01 5.5253689e-01 5.7850301e-01 5.7881143e-01 5.8595493e-01
+    5.9267439e-01 5.7926284e-01 5.5483515e-01 5.5203094e-01 5.4737585e-01
+    4.8127572e-01 3.7771051e-01 2.5561848e-01 1.3465474e-01 6.2851231e-02
+    3.2778906e-02 6.9197903e-02 1.2406797e-01 1.3720958e-01 1.2661431e-01
+    -1.6946374e-01 -1.4122061e-01 -1.2565373e-01 -1.3152476e-01 -1.2947677e-01
+    -9.1972888e-02 -4.6051673e-02 -5.0178291e-03 4.0770435e-02 1.0246791e-01
+    1.4220622e-01 1.3976143e-01 1.2168367e-01 8.9802027e-02 6.8855025e-02
+    6.6060243e-02 8.4139039e-02 1.2989610e-01 1.5932049e-01 1.5972223e-01
+    1.9283376e-01 2.6939974e-01 3.2570400e-01 3.5674948e-01 3.8729353e-01
+    4.1802405e-01 4.2963830e-01 4.2319039e-01 4.2748458e-01 4.4267467e-01
+    4.9362596e-01 5.6994784e-01 5.9133135e-01 5.7215762e-01 5.4982583e-01
+    5.2509985e-01 5.3013991e-01 5.4659588e-01 5.2392119e-01 4.7292815e-01
+    3.9657963e-01 2.9932015e-01 1.8124840e-01 6.9573080e-02 2.6945326e-02
+    2.4253684e-02 4.6978603e-02 7.7730029e-02 8.5266773e-02 7.8956551e-02
+    -1.4944217e-01 -1.4221059e-01 -1.3786844e-01 -1.3958046e-01 -1.3676299e-01
+    -1.2113058e-01 -9.6498583e-02 -6.2961121e-02 -2.1867982e-02 3.5559245e-02
+    6.7737953e-02 4.8983812e-02 2.2863058e-02 1.1032761e-03 -1.7781689e-02
+    -3.6784923e-02 -2.7589852e-02 2.1446972e-02 6.5275624e-02 9.3380635e-02
+    1.4843220e-01 2.3841978e-01 3.0983171e-01 3.5900675e-01 3.8822764e-01
+    3.9734851e-01 4.0313236e-01 4.0587939e-01 4.1407490e-01 4.2933557e-01
+    4.8876757e-01 5.7999436e-01 6.1250518e-01 6.0101012e-01 5.7721609e-01
+    5.4528235e-01 5.5176713e-01 5.7275330e-01 5.4425729e-01 4.8096063e-01
+    3.8682502e-01 2.7357390e-01 1.6336805e-01 7.0851906e-02 4.4950738e-02
+    5.5568858e-02 7.7914788e-02 1.0382459e-01 1.1134992e-01 1.0708690e-01
+    -1.1052319e-01 -1.3557696e-01 -1.4424646e-01 -1.3007897e-01 -1.1473486e-01
+    -1.2177055e-01 -1.1946607e-01 -8.6223008e-02 -4.8243688e-02 -8.0388198e-03
+    3.5011462e-03 -3.6705983e-02 -8.4851108e-02 -1.2991527e-01 -1.6688432e-01
+    -1.9729368e-01 -1.9084040e-01 -1.3553547e-01 -7.2720779e-02 -8.9163048e-03
+    6.3475426e-02 1.4625028e-01 2.1973332e-01 2.8312831e-01 3.1810957e-01
+    3.2387434e-01 3.4081903e-01 3.6837853e-01 3.8953667e-01 4.0787064e-01
+    4.7505279e-01 5.7808988e-01 6.3084066e-01 6.4520168e-01 6.3948744e-01
+    6.1783306e-01 6.1404365e-01 6.1405900e-01 5.8872726e-01 5.3611371e-01
+    4.2056640e-01 2.7865366e-01 1.8181436e-01 1.1763204e-01 9.9768743e-02
+    1.1243926e-01 1.4106847e-01 1.7284985e-01 1.8309971e-01 1.7922291e-01
+    -1.1679526e-01 -1.3633062e-01 -1.4909537e-01 -1.5460938e-01 -1.5449327e-01
+    -1.5122944e-01 -1.3980421e-01 -1.1508898e-01 -8.6520749e-02 -5.0668898e-02
+    -3.9923607e-02 -7.5913722e-02 -1.2020586e-01 -1.6556183e-01 -1.9478349e-01
+    -2.0226683e-01 -1.8478683e-01 -1.3775802e-01 -8.6077767e-02 -3.3965417e-02
+    2.2801997e-02 8.4525674e-02 1.5155088e-01 2.2541265e-01 2.6231374e-01
+    2.6062522e-01 2.7747323e-01 3.1198534e-01 3.4017065e-01 3.6524409e-01
+    4.2894955e-01 5.2082581e-01 5.7066212e-01 5.8891344e-01 5.9764048e-01
+    5.9562942e-01 5.9099444e-01 5.7856152e-01 5.4850785e-01 4.9387102e-01
+    3.7056348e-01 2.2406865e-01 1.4970517e-01 1.1697153e-01 1.1344126e-01
+    1.2931512e-01 1.4559578e-01 1.5919547e-01 1.5779824e-01 1.4511087e-01
+    -1.5244248e-01 -1.4257531e-01 -1.5156088e-01 -1.9357941e-01 -2.2107000e-01
+    -1.8547678e-01 -1.4488089e-01 -1.3316835e-01 -1.1864427e-01 -8.2493309e-02
+    -6.3108421e-02 -7.9849543e-02 -1.0511362e-01 -1.3778528e-01 -1.4518438e-01
+    -1.1146785e-01 -7.6626682e-02 -4.7986346e-02 -2.5304197e-02 -1.0998946e-02
+    1.1461464e-02 4.3190940e-02 9.8352118e-02 1.8056967e-01 2.1919269e-01
+    2.1173645e-01 2.2310835e-01 2.5262509e-01 2.8528980e-01 3.2208176e-01
+    3.7539898e-01 4.3991192e-01 4.7206112e-01 4.8100626e-01 5.0066458e-01
+    5.2176607e-01 5.1981291e-01 4.9824715e-01 4.5940101e-01 3.9690490e-01
+    2.7395852e-01 1.3623278e-01 8.8246036e-02 8.6654640e-02 9.7840052e-02
+    1.1449164e-01 1.0698060e-01 8.9281832e-02 6.9692074e-02 4.5757857e-02
+    -1.7853280e-01 -1.5119056e-01 -1.4298190e-01 -1.6863583e-01 -1.7869852e-01
+    -1.1843750e-01 -6.3591675e-02 -6.2022426e-02 -6.5824015e-02 -5.3356987e-02
+    -5.0170743e-02 -6.7361582e-02 -8.7439597e-02 -1.0958855e-01 -1.1239804e-01
+    -8.4025606e-02 -6.0699878e-02 -5.1876038e-02 -3.6641269e-02 -1.1459314e-02
+    1.2437702e-02 3.1361573e-02 8.8622332e-02 1.9049548e-01 2.4662504e-01
+    2.5399814e-01 2.6712215e-01 2.8628294e-01 3.2891780e-01 3.9185509e-01
+    4.4240037e-01 4.8201044e-01 5.0174002e-01 5.0585959e-01 5.1766993e-01
+    5.2941753e-01 5.1754188e-01 4.8654526e-01 4.4512447e-01 3.8190837e-01
+    2.4495721e-01 9.0140422e-02 4.3793022e-02 4.8629733e-02 5.0238158e-02
+    5.1570524e-02 2.8437552e-02 1.8113468e-03 -7.5918376e-03 -5.9491733e-03
+    -2.0123994e-01 -1.6534105e-01 -1.3477882e-01 -1.1714991e-01 -8.6852822e-02
+    -7.8283773e-03 5.2814605e-02 4.8529207e-02 2.6836456e-02 3.8484072e-03
+    -2.1818145e-02 -4.9485652e-02 -7.1644327e-02 -8.4850882e-02 -9.2476760e-02
+    -9.4108121e-02 -9.6914416e-02 -1.0695855e-01 -8.6997019e-02 -2.5988664e-02
+    1.9745513e-02 3.9706118e-02 1.0601555e-01 2.2697097e-01 3.0593704e-01
+    3.3985110e-01 3.5863860e-01 3.6402405e-01 4.1962610e-01 5.1704005e-01
+    5.6983834e-01 5.8706080e-01 5.9784640e-01 5.9961717e-01 5.9216334e-01
+    5.7469503e-01 5.4325427e-01 4.9974515e-01 4.5743043e-01 3.9778367e-01
+    2.4677843e-01 7.1159479e-02 1.5682663e-02 1.3137329e-02 -6.4439198e-03
+    -2.7631397e-02 -6.1107398e-02 -8.5864220e-02 -7.5663066e-02 -3.8348196e-02
+    -2.2550102e-01 -2.0605229e-01 -1.8209904e-01 -1.5820086e-01 -1.1892788e-01
+    -3.7401574e-02 2.7443331e-02 3.6597391e-02 2.0064189e-02 -1.9112058e-02
+    -5.9249715e-02 -8.9920251e-02 -1.1303875e-01 -1.2649418e-01 -1.3669593e-01
+    -1.4514402e-01 -1.5378382e-01 -1.6851461e-01 -1.4565758e-01 -7.2482552e-02
+    -9.4683242e-03 3.4443877e-02 1.0070197e-01 1.9358866e-01 2.6678122e-01
+    3.1888840e-01 3.4162820e-01 3.3787643e-01 4.0624940e-01 5.3450172e-01
+    5.9725830e-01 6.0853944e-01 6.2081228e-01 6.2661162e-01 6.0740765e-01
+    5.6620275e-01 5.0254191e-01 4.2469474e-01 3.7129326e-01 3.2002304e-01
+    2.0652214e-01 8.0869563e-02 4.9210659e-02 5.7577084e-02 4.4859570e-02
+    2.4604151e-02 -1.0771114e-02 -4.7829551e-02 -7.0141543e-02 -8.2617794e-02
+    -2.4411982e-01 -2.4907424e-01 -2.4224815e-01 -2.2617364e-01 -1.9224183e-01
+    -1.2222311e-01 -6.0515692e-02 -3.2097055e-02 -3.3618803e-02 -7.7653025e-02
+    -1.2371176e-01 -1.5455378e-01 -1.7868661e-01 -1.9634182e-01 -2.0817761e-01
+    -2.1407163e-01 -2.1759338e-01 -2.2420598e-01 -1.9568775e-01 -1.2175049e-01
+    -4.4504530e-02 3.2772125e-02 9.4775470e-02 1.3927994e-01 1.9116352e-01
+    2.5130176e-01 2.7717902e-01 2.7221805e-01 3.5025541e-01 4.9729080e-01
+    5.6929291e-01 5.8256589e-01 6.0053709e-01 6.1240088e-01 5.8444946e-01
+    5.2227587e-01 4.2415148e-01 3.0656394e-01 2.3487107e-01 1.8828538e-01
+    1.3458857e-01 9.1048915e-02 9.3382716e-02 1.1472487e-01 1.1829014e-01
+    1.0763494e-01 7.2392240e-02 1.6108532e-02 -6.0354977e-02 -1.5724527e-01
+    -2.2349121e-01 -2.1131467e-01 -1.8862386e-01 -1.5209772e-01 -1.1280922e-01
+    -7.6703741e-02 -4.9469696e-02 -3.2994158e-02 -3.9560440e-02 -8.4618100e-02
+    -1.3118061e-01 -1.6550849e-01 -1.8876388e-01 -1.9674800e-01 -2.0366411e-01
+    -2.1643665e-01 -2.1341475e-01 -1.9074716e-01 -1.4553088e-01 -7.4634003e-02
+    7.3928350e-04 7.9797443e-02 1.3932162e-01 1.7672523e-01 2.1251095e-01
+    2.4726828e-01 2.7699305e-01 3.0298628e-01 3.7343397e-01 4.8024158e-01
+    5.3020239e-01 5.3498763e-01 5.4679363e-01 5.5465811e-01 5.1716969e-01
+    4.4284979e-01 3.4243791e-01 2.2450771e-01 1.2313649e-01 3.9596309e-02
+    2.7082409e-03 -5.2912314e-03 -1.0923805e-02 -1.4267022e-02 -2.4480286e-02
+    -4.8184221e-02 -1.0336193e-01 -1.7960613e-01 -2.6902916e-01 -3.7397408e-01
+    -1.9920445e-01 -1.5276322e-01 -1.0270286e-01 -4.0378202e-02 5.2281413e-03
+    5.6303782e-03 -7.7748776e-03 -1.7912844e-02 -3.8995323e-02 -7.9501021e-02
+    -1.2081621e-01 -1.5825730e-01 -1.8189796e-01 -1.8309069e-01 -1.8716043e-01
+    -2.0778843e-01 -1.9514584e-01 -1.3427552e-01 -6.5922278e-02 4.8491986e-03
+    7.4547581e-02 1.4297030e-01 2.0132980e-01 2.4937714e-01 2.7122227e-01
+    2.6609909e-01 2.9643540e-01 3.6057720e-01 4.1654788e-01 4.6434973e-01
+    4.8089362e-01 4.7138324e-01 4.7102252e-01 4.6992716e-01 4.2352625e-01
+    3.4302661e-01 2.5612129e-01 1.5758124e-01 3.0365311e-02 -9.8036601e-02
+    -1.3900857e-01 -1.3890921e-01 -1.7047739e-01 -2.1219426e-01 -2.4938583e-01
+    -2.9617134e-01 -3.7731772e-01 -4.7005114e-01 -5.5105650e-01 -6.2728893e-01
+    -2.6163527e-01 -2.0238318e-01 -1.4824816e-01 -9.6958573e-02 -5.6071392e-02
+    -2.8253269e-02 -2.2652354e-02 -5.3395059e-02 -9.0100425e-02 -1.1681773e-01
+    -1.4536098e-01 -1.7845203e-01 -2.1481249e-01 -2.5814094e-01 -2.8886988e-01
+    -3.0620444e-01 -2.8068607e-01 -1.9997385e-01 -1.0622101e-01 -3.3410106e-03
+    8.8034293e-02 1.6512463e-01 2.2795737e-01 2.7697842e-01 2.9007139e-01
+    2.6624381e-01 2.7916229e-01 3.2749275e-01 3.8330292e-01 4.4383117e-01
+    4.5236602e-01 4.1924881e-01 4.0576833e-01 3.9845845e-01 3.4428693e-01
+    2.5735254e-01 1.7525429e-01 9.0208621e-02 -1.4606805e-02 -1.1980883e-01
+    -1.6541794e-01 -1.8339469e-01 -2.2343115e-01 -2.7327270e-01 -3.2996688e-01
+    -3.9670973e-01 -4.8485921e-01 -5.7383088e-01 -6.3807775e-01 -6.8523677e-01
+    -3.4903227e-01 -2.8320659e-01 -2.3346057e-01 -2.0720056e-01 -1.7946913e-01
+    -1.1533758e-01 -7.9653273e-02 -1.2574403e-01 -1.7456102e-01 -1.8549741e-01
+    -1.9924703e-01 -2.2398905e-01 -2.7332640e-01 -3.6771844e-01 -4.2859294e-01
+    -4.3451300e-01 -3.9426641e-01 -3.0366406e-01 -1.8859411e-01 -4.8263302e-02
+    6.8615417e-02 1.5559750e-01 2.2183467e-01 2.6808278e-01 2.7637835e-01
+    2.4591159e-01 2.3934744e-01 2.5671630e-01 3.1613976e-01 4.0921190e-01
+    4.2090494e-01 3.6873383e-01 3.4314725e-01 3.2803768e-01 2.7001623e-01
+    1.8345296e-01 1.0580490e-01 3.2719634e-02 -3.0452298e-02 -8.6144461e-02
+    -1.3770584e-01 -1.8551554e-01 -2.2870102e-01 -2.7538678e-01 -3.4524994e-01
+    -4.2600943e-01 -5.1053992e-01 -5.8657390e-01 -6.3327457e-01 -6.5688741e-01
+    -3.6504635e-01 -2.8049713e-01 -2.2627718e-01 -2.0856215e-01 -2.0666262e-01
+    -2.0140078e-01 -2.1122541e-01 -2.5295132e-01 -2.8940117e-01 -2.9716109e-01
+    -3.0676372e-01 -3.2484041e-01 -3.6567871e-01 -4.5016411e-01 -4.9694616e-01
+    -4.8140248e-01 -4.2826376e-01 -3.3771051e-01 -2.2690660e-01 -9.4068765e-02
+    1.2238132e-02 8.5101886e-02 1.4198220e-01 1.8428104e-01 1.9290137e-01
+    1.6702747e-01 1.6975091e-01 2.0044912e-01 2.5353167e-01 3.2421464e-01
+    3.4002270e-01 3.1108986e-01 2.8320684e-01 2.5079337e-01 2.0408672e-01
+    1.4573605e-01 7.9855742e-02 1.2310296e-02 -2.7202459e-02 -5.4134257e-02
+    -1.0141200e-01 -1.5752508e-01 -2.0854421e-01 -2.6179177e-01 -3.2786819e-01
+    -3.9982289e-01 -4.7269648e-01 -5.4138166e-01 -5.9639630e-01 -6.4058426e-01
+    -3.5974405e-01 -2.6077965e-01 -2.0447704e-01 -1.9333896e-01 -2.1915764e-01
+    -2.8871222e-01 -3.5742387e-01 -3.9376204e-01 -4.1659268e-01 -4.2736329e-01
+    -4.3551852e-01 -4.4276704e-01 -4.6343089e-01 -5.1478366e-01 -5.3094027e-01
+    -4.9040806e-01 -4.2345068e-01 -3.3235219e-01 -2.3098473e-01 -1.1799797e-01
+    -3.4629846e-02 1.2411168e-02 4.9604435e-02 7.8835913e-02 8.7532208e-02
+    7.5158759e-02 9.7161554e-02 1.5191919e-01 1.9663272e-01 2.3215994e-01
+    2.5091779e-01 2.5263483e-01 2.2440919e-01 1.7320701e-01 1.3763344e-01
+    1.0783885e-01 5.4649081e-02 -7.9864595e-03 -3.7128018e-02 -5.3155315e-02
+    -9.7875173e-02 -1.5657023e-01 -2.1420685e-01 -2.7278726e-01 -3.2861868e-01
+    -3.8478534e-01 -4.4427884e-01 -5.0801264e-01 -5.7853618e-01 -6.5508315e-01
+    -3.8679371e-01 -2.9996468e-01 -2.5744765e-01 -2.6614088e-01 -3.0302338e-01
+    -3.5402269e-01 -4.1346033e-01 -4.8096598e-01 -5.3151849e-01 -5.4797339e-01
+    -5.4647576e-01 -5.2415367e-01 -5.1590111e-01 -5.4738122e-01 -5.4314088e-01
+    -4.7968831e-01 -3.8937556e-01 -2.7343835e-01 -1.5531931e-01 -3.4328043e-02
+    3.8626716e-02 5.4496753e-02 5.3196691e-02 3.6024341e-02 3.2584510e-02
+    4.3926962e-02 7.7626024e-02 1.3258858e-01 1.7772324e-01 2.1316309e-01
+    2.2492934e-01 2.1390312e-01 1.7435501e-01 1.1177003e-01 5.6571021e-02
+    4.8149880e-03 -4.2640038e-02 -8.7978160e-02 -1.3700158e-01 -1.9113723e-01
+    -2.6237144e-01 -3.3903946e-01 -3.9507779e-01 -4.4322892e-01 -4.9775279e-01
+    -5.5466326e-01 -6.1138946e-01 -6.7337385e-01 -7.4758597e-01 -8.3194174e-01
+    -4.0911803e-01 -3.5111910e-01 -3.3107769e-01 -3.6035377e-01 -4.0083949e-01
+    -4.1313043e-01 -4.4594185e-01 -5.4160881e-01 -6.2047471e-01 -6.4319479e-01
+    -6.3363865e-01 -5.8453296e-01 -5.4942631e-01 -5.6044391e-01 -5.3995334e-01
+    -4.6666749e-01 -3.5970654e-01 -2.1491882e-01 -7.5956088e-02 5.5666548e-02
+    1.2106627e-01 1.0900122e-01 7.1940162e-02 1.0636674e-02 -5.9452620e-03
+    2.4728028e-02 6.3378820e-02 1.0969439e-01 1.5343523e-01 1.9269671e-01
+    1.9164798e-01 1.5537288e-01 1.0511938e-01 4.0317144e-02 -3.4505724e-02
+    -1.1382096e-01 -1.6034610e-01 -1.9286968e-01 -2.6506929e-01 -3.5811548e-01
+    -4.4755464e-01 -5.3040680e-01 -5.8103603e-01 -6.1863474e-01 -6.7175245e-01
+    -7.3074944e-01 -7.9130812e-01 -8.5488812e-01 -9.2194824e-01 -9.9235530e-01
+    -3.9399697e-01 -3.7610329e-01 -3.8215764e-01 -4.2056692e-01 -4.6311629e-01
+    -4.7955181e-01 -5.0982911e-01 -5.8795331e-01 -6.5331343e-01 -6.7841917e-01
+    -6.7234989e-01 -6.2487390e-01 -5.8195006e-01 -5.6630715e-01 -5.3558631e-01
+    -4.8398583e-01 -3.8739306e-01 -2.2980139e-01 -8.5555166e-02 3.8613920e-02
+    9.5193522e-02 7.3537046e-02 3.1529210e-02 -2.9310198e-02 -4.8492716e-02
+    -2.3745681e-02 7.2547563e-03 4.4115175e-02 7.3477740e-02 9.4106522e-02
+    7.6845038e-02 2.7463526e-02 -2.1131922e-02 -7.2798907e-02 -1.3460045e-01
+    -2.0192426e-01 -2.5236638e-01 -2.9599091e-01 -3.6217165e-01 -4.3710699e-01
+    -4.9277030e-01 -5.3869502e-01 -5.8373204e-01 -6.2770797e-01 -6.7232822e-01
+    -7.2203846e-01 -7.9218949e-01 -8.6129050e-01 -9.0410809e-01 -9.2818124e-01
+    -3.5117250e-01 -3.8625919e-01 -4.2353368e-01 -4.6326410e-01 -5.0458377e-01
+    -5.4926429e-01 -5.8877417e-01 -6.1639665e-01 -6.3908584e-01 -6.6403660e-01
+    -6.7003136e-01 -6.4494094e-01 -6.0815192e-01 -5.6129275e-01 -5.2577379e-01
+    -5.2185338e-01 -4.5657355e-01 -2.9624340e-01 -1.5642202e-01 -5.1631191e-02
+    -3.9274136e-03 -2.1361101e-02 -4.5900235e-02 -7.4326615e-02 -8.9013201e-02
+    -8.9201943e-02 -7.6682519e-02 -5.2458739e-02 -4.7125804e-02 -5.9739440e-02
+    -9.7328606e-02 -1.5500186e-01 -1.9307943e-01 -2.1812000e-01 -2.4399708e-01
+    -2.7324408e-01 -3.3242948e-01 -4.0526574e-01 -4.4594199e-01 -4.6302481e-01
+    -4.4597846e-01 -4.2122058e-01 -4.5940325e-01 -5.2159531e-01 -5.5270469e-01
+    -5.8553806e-01 -6.7128015e-01 -7.4965288e-01 -7.5302785e-01 -7.0160053e-01
Index: /tags/1.6.0/examples/zoo/mesh/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/tool.xml	(revision 6168)
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+<run>
+ <tool>
+  <about>Press Simulate to view results.</about>
+  <command>python @tool/mesh.py @driver</command>
+ </tool>
+ <input>
+   <choice id="mesh">
+    <option>
+     <about>
+      <label>mesh as cloud</label>
+      <description>2 dimensional cloud of points.</description>
+     </about>
+     <value>cloud</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as uniform grid</label>
+      <description>uniform 2 dimensional grid of points.</description>
+     </about>
+     <value>regular</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as irregular grid</label>
+      <description>irregular 2 dimensional grid of points.</description>
+     </about>
+     <value>irregular</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as hybrid irregular/regular grid</label>
+      <description>Hybrid 2 dimensional grid of points X (irregular), Y (regular).</description>
+     </about>
+     <value>hybrid</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as triangular grid</label>
+      <description>Triangular 2 dimensional grid.</description>
+     </about>
+     <value>triangular</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as hybid cell types</label>
+      <description>Unstructured 2D grid of (possibly) hybrid cells.</description>
+     </about>
+     <value>cells</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as a structured (curvilinear) grid</label>
+      <description>Structured 2D grid.</description>
+     </about>
+     <value>structured</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as unstructured grid</label>
+      <description>Unstructured 2D grid.</description>
+     </about>
+     <value>unstructured</value>
+    </option>
+    <option>
+     <about>
+      <label>VTK mesh</label>
+      <description>Partial VTK file representing the mesh.</description>
+     </about>
+     <value>vtkmesh</value>
+    </option>
+    <option>
+     <about>
+      <label>VTK format (field + mesh)</label>
+      <description>Single VTK file representing both the mesh and field.</description>
+     </about>
+     <value>vtkfield</value>
+    </option>
+    <default>triangular</default>
+   </choice>
+   <boolean id="contour">
+     <about>
+       <label>Contour Plot</label>
+       <description>Display as a contour plot or surface plot</description>
+     </about>
+     <default>yes</default>
+   </boolean>
+ </input>
+</run>
Index: /tags/1.6.0/examples/zoo/mesh/tool_octave.xml
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/tool_octave.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/tool_octave.xml	(revision 6168)
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<run>
+ <tool>
+  <about>Press Simulate to view results.</about>
+  <command>octave --silent --eval "infile='@driver',path('@tool',path),mesh"</command>
+ </tool>
+ <input>
+   <choice id="mesh">
+    <option>
+     <about>
+      <label>mesh as cloud</label>
+      <description>2 dimensional cloud of points.</description>
+     </about>
+     <value>cloud</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as uniform grid</label>
+      <description>uniform 2 dimensional grid of points.</description>
+     </about>
+     <value>regular</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as irregular grid</label>
+      <description>irregular 2 dimensional grid of points.</description>
+     </about>
+     <value>irregular</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as hybrid irregular/regular grid</label>
+      <description>Hybrid 2 dimensional grid of points X (irregular), Y (regular).</description>
+     </about>
+     <value>hybrid</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as triangular grid</label>
+      <description>Triangular 2 dimensional grid.</description>
+     </about>
+     <value>triangular</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as hybid cell types</label>
+      <description>Unstructured 2D grid of (possibly) hybrid cells.</description>
+     </about>
+     <value>cells</value>
+    </option>
+    <option>
+     <about>
+      <label>mesh as unstructured grid</label>
+      <description>Unstructured 2D grid.</description>
+     </about>
+     <value>unstructured</value>
+    </option>
+    <option>
+     <about>
+      <label>VTK mesh</label>
+      <description>Partial VTK file representing the mesh.</description>
+     </about>
+     <value>vtkmesh</value>
+    </option>
+    <option>
+     <about>
+      <label>VTK format (field + mesh)</label>
+      <description>Single VTK file representing both the mesh and field.</description>
+     </about>
+     <value>vtkfield</value>
+    </option>
+    <default>triangular</default>
+   </choice>
+   <boolean id="contour">
+     <about>
+       <label>Contour Plot</label>
+       <description>Display as a contour plot or surface plot</description>
+     </about>
+     <default>yes</default>
+   </boolean>
+ </input>
+</run>
Index: /tags/1.6.0/examples/zoo/mesh/triangles.txt
===================================================================
--- /tags/1.6.0/examples/zoo/mesh/triangles.txt	(revision 6168)
+++ /tags/1.6.0/examples/zoo/mesh/triangles.txt	(revision 6168)
@@ -0,0 +1,4802 @@
+    93 44 43
+    98 49 48
+    19 70 20
+    25 76 26
+    29 80 30
+    34 85 35
+    87 38 37
+    88 39 38
+    88 89 39
+    39 90 40
+    93 94 44
+    96 47 46
+    96 97 47
+    98 99 49
+    62 13 12
+    63 14 13
+    63 64 14
+    64 15 14
+    67 18 17
+    67 68 18
+    69 70 19
+    21 72 22
+    71 72 21
+    73 24 23
+    73 74 24
+    55 6 5
+    6 57 7
+    56 57 6
+    7 58 8
+    57 58 7
+    8 59 9
+    58 59 8
+    59 10 9
+    59 60 10
+    10 61 11
+    61 12 11
+    61 62 12
+    0 51 1
+    50 51 0
+    1 52 2
+    51 52 1
+    52 3 2
+    52 53 3
+    3 54 4
+    53 54 3
+    4 55 5
+    54 55 4
+    55 56 6
+    60 61 10
+    62 63 13
+    64 65 15
+    15 66 16
+    65 66 15
+    16 67 17
+    66 67 16
+    18 69 19
+    68 69 18
+    20 71 21
+    70 71 20
+    22 73 23
+    72 73 22
+    24 75 25
+    74 75 24
+    75 76 25
+    26 77 27
+    76 77 26
+    27 78 28
+    77 78 27
+    28 79 29
+    78 79 28
+    79 80 29
+    30 81 31
+    80 81 30
+    31 82 32
+    81 82 31
+    32 83 33
+    82 83 32
+    33 84 34
+    83 84 33
+    84 85 34
+    35 86 36
+    85 86 35
+    36 87 37
+    86 87 36
+    87 88 38
+    89 90 39
+    40 91 41
+    90 91 40
+    41 92 42
+    91 92 41
+    42 93 43
+    92 93 42
+    44 95 45
+    94 95 44
+    45 96 46
+    95 96 45
+    47 98 48
+    97 98 47
+    143 94 93
+    148 99 98
+    69 120 70
+    75 126 76
+    79 130 80
+    84 135 85
+    134 135 84
+    137 88 87
+    138 89 88
+    89 140 90
+    143 144 94
+    146 97 96
+    148 149 99
+    112 63 62
+    113 64 63
+    114 65 64
+    117 68 67
+    71 122 72
+    121 122 71
+    123 74 73
+    123 124 74
+    105 56 55
+    56 107 57
+    106 107 56
+    57 108 58
+    107 108 57
+    58 109 59
+    108 109 58
+    109 60 59
+    109 110 60
+    60 111 61
+    111 62 61
+    50 101 51
+    100 101 50
+    51 102 52
+    101 102 51
+    102 53 52
+    102 103 53
+    53 104 54
+    54 105 55
+    104 105 54
+    105 106 56
+    103 104 53
+    111 112 62
+    112 113 63
+    113 114 64
+    114 115 65
+    117 118 68
+    119 120 69
+    125 126 75
+    129 130 79
+    137 138 88
+    138 139 89
+    146 147 97
+    65 116 66
+    115 116 65
+    66 117 67
+    116 117 66
+    68 119 69
+    118 119 68
+    70 121 71
+    120 121 70
+    72 123 73
+    122 123 72
+    74 125 75
+    76 127 77
+    126 127 76
+    77 128 78
+    78 129 79
+    128 129 78
+    80 131 81
+    81 132 82
+    131 132 81
+    82 133 83
+    83 134 84
+    133 134 83
+    85 136 86
+    86 137 87
+    90 141 91
+    91 142 92
+    141 142 91
+    92 143 93
+    142 143 92
+    94 145 95
+    144 145 94
+    95 146 96
+    145 146 95
+    97 148 98
+    110 111 60
+    124 125 74
+    127 128 77
+    130 131 80
+    132 133 82
+    135 136 85
+    136 137 86
+    139 140 89
+    140 141 90
+    147 148 97
+    193 144 143
+    198 149 148
+    193 194 144
+    198 199 149
+    119 170 120
+    125 176 126
+    129 180 130
+    134 185 135
+    187 138 137
+    188 139 138
+    139 190 140
+    196 147 146
+    196 197 147
+    162 113 112
+    163 114 113
+    164 115 114
+    167 118 117
+    167 168 118
+    121 172 122
+    171 172 121
+    173 124 123
+    155 106 105
+    155 156 106
+    106 157 107
+    156 157 106
+    107 158 108
+    108 159 109
+    159 110 109
+    110 161 111
+    161 112 111
+    100 151 101
+    150 151 100
+    101 152 102
+    151 152 101
+    102 153 103
+    152 153 102
+    103 154 104
+    153 154 103
+    104 155 105
+    154 155 104
+    157 158 107
+    158 159 108
+    159 160 110
+    160 161 110
+    161 162 112
+    162 163 113
+    163 164 114
+    164 165 115
+    115 166 116
+    165 166 115
+    116 167 117
+    118 169 119
+    168 169 118
+    120 171 121
+    170 171 120
+    122 173 123
+    172 173 122
+    173 174 124
+    124 175 125
+    174 175 124
+    126 177 127
+    176 177 126
+    127 178 128
+    177 178 127
+    128 179 129
+    178 179 128
+    179 180 129
+    130 181 131
+    180 181 130
+    131 182 132
+    181 182 131
+    132 183 133
+    182 183 132
+    133 184 134
+    183 184 133
+    184 185 134
+    135 186 136
+    136 187 137
+    186 187 136
+    187 188 138
+    140 191 141
+    190 191 140
+    141 192 142
+    191 192 141
+    142 193 143
+    192 193 142
+    144 195 145
+    194 195 144
+    145 196 146
+    195 196 145
+    147 198 148
+    166 167 116
+    169 170 119
+    175 176 125
+    185 186 135
+    188 189 139
+    189 190 139
+    197 198 147
+    243 194 193
+    248 199 198
+    169 220 170
+    175 226 176
+    179 230 180
+    184 235 185
+    234 235 184
+    237 188 187
+    238 189 188
+    189 240 190
+    243 244 194
+    246 197 196
+    248 249 199
+    212 163 162
+    213 164 163
+    214 165 164
+    217 168 167
+    217 218 168
+    171 222 172
+    221 222 171
+    223 174 173
+    205 156 155
+    156 207 157
+    157 208 158
+    207 208 157
+    158 209 159
+    209 160 159
+    209 210 160
+    160 211 161
+    211 162 161
+    150 201 151
+    200 201 150
+    151 202 152
+    201 202 151
+    152 203 153
+    202 203 152
+    153 204 154
+    203 204 153
+    154 205 155
+    204 205 154
+    205 206 156
+    206 207 156
+    208 209 158
+    210 211 160
+    211 212 162
+    212 213 163
+    213 214 164
+    214 215 165
+    165 216 166
+    166 217 167
+    216 217 166
+    168 219 169
+    218 219 168
+    219 220 169
+    170 221 171
+    220 221 170
+    172 223 173
+    222 223 172
+    223 224 174
+    174 225 175
+    176 227 177
+    226 227 176
+    177 228 178
+    178 229 179
+    229 230 179
+    180 231 181
+    181 232 182
+    182 233 183
+    232 233 182
+    183 234 184
+    233 234 183
+    185 236 186
+    235 236 185
+    186 237 187
+    236 237 186
+    238 239 189
+    190 241 191
+    191 242 192
+    192 243 193
+    242 243 192
+    194 245 195
+    195 246 196
+    245 246 195
+    246 247 197
+    197 248 198
+    215 216 165
+    224 225 174
+    225 226 175
+    227 228 177
+    228 229 178
+    230 231 180
+    231 232 181
+    237 238 188
+    239 240 189
+    240 241 190
+    241 242 191
+    244 245 194
+    247 248 197
+    293 244 243
+    298 249 248
+    219 270 220
+    225 276 226
+    229 280 230
+    234 285 235
+    284 285 234
+    287 238 237
+    288 239 238
+    288 289 239
+    239 290 240
+    293 294 244
+    296 247 246
+    298 299 249
+    262 213 212
+    263 214 213
+    264 215 214
+    267 218 217
+    267 268 218
+    269 270 219
+    221 272 222
+    271 272 221
+    273 224 223
+    273 274 224
+    255 206 205
+    206 257 207
+    256 257 206
+    207 258 208
+    208 259 209
+    259 210 209
+    259 260 210
+    210 261 211
+    260 261 210
+    261 212 211
+    200 251 201
+    250 251 200
+    201 252 202
+    251 252 201
+    202 253 203
+    252 253 202
+    203 254 204
+    253 254 203
+    204 255 205
+    254 255 204
+    255 256 206
+    257 258 207
+    261 262 212
+    262 263 213
+    263 264 214
+    264 265 215
+    215 266 216
+    265 266 215
+    216 267 217
+    266 267 216
+    218 269 219
+    268 269 218
+    220 271 221
+    270 271 220
+    222 273 223
+    272 273 222
+    224 275 225
+    274 275 224
+    275 276 225
+    226 277 227
+    276 277 226
+    227 278 228
+    277 278 227
+    228 279 229
+    278 279 228
+    279 280 229
+    230 281 231
+    280 281 230
+    231 282 232
+    281 282 231
+    232 283 233
+    282 283 232
+    233 284 234
+    283 284 233
+    235 286 236
+    285 286 235
+    236 287 237
+    286 287 236
+    287 288 238
+    240 291 241
+    241 292 242
+    291 292 241
+    242 293 243
+    292 293 242
+    244 295 245
+    294 295 244
+    245 296 246
+    295 296 245
+    296 297 247
+    247 298 248
+    258 259 208
+    289 290 239
+    290 291 240
+    297 298 247
+    343 294 293
+    348 299 298
+    343 344 294
+    348 349 299
+    269 320 270
+    275 326 276
+    325 326 275
+    279 330 280
+    284 335 285
+    334 335 284
+    337 288 287
+    338 289 288
+    338 339 289
+    289 340 290
+    346 297 296
+    346 347 297
+    312 263 262
+    313 264 263
+    313 314 264
+    314 265 264
+    314 315 265
+    317 268 267
+    317 318 268
+    271 322 272
+    321 322 271
+    323 274 273
+    323 324 274
+    329 330 279
+    337 338 288
+    250 301 251
+    300 301 250
+    251 302 252
+    301 302 251
+    252 303 253
+    302 303 252
+    253 304 254
+    303 304 253
+    254 305 255
+    304 305 254
+    305 256 255
+    305 306 256
+    256 307 257
+    306 307 256
+    257 308 258
+    307 308 257
+    258 309 259
+    308 309 258
+    259 310 260
+    309 310 259
+    260 311 261
+    310 311 260
+    311 262 261
+    311 312 262
+    265 316 266
+    315 316 265
+    266 317 267
+    316 317 266
+    268 319 269
+    318 319 268
+    270 321 271
+    272 323 273
+    322 323 272
+    274 325 275
+    324 325 274
+    276 327 277
+    326 327 276
+    277 328 278
+    327 328 277
+    278 329 279
+    328 329 278
+    280 331 281
+    330 331 280
+    281 332 282
+    331 332 281
+    282 333 283
+    283 334 284
+    333 334 283
+    285 336 286
+    335 336 285
+    286 337 287
+    336 337 286
+    290 341 291
+    340 341 290
+    291 342 292
+    341 342 291
+    292 343 293
+    342 343 292
+    294 345 295
+    344 345 294
+    295 346 296
+    345 346 295
+    297 348 298
+    347 348 297
+    312 313 263
+    319 320 269
+    320 321 270
+    332 333 282
+    339 340 289
+    393 344 343
+    398 349 348
+    398 399 349
+    319 370 320
+    325 376 326
+    329 380 330
+    334 385 335
+    387 338 337
+    388 339 338
+    339 390 340
+    396 347 346
+    362 313 312
+    363 314 313
+    364 315 314
+    367 318 317
+    321 372 322
+    371 372 321
+    373 324 323
+    379 380 329
+    384 385 334
+    388 389 339
+    351 302 301
+    352 303 302
+    303 354 304
+    304 355 305
+    354 355 304
+    355 306 305
+    306 357 307
+    307 358 308
+    308 359 309
+    359 310 309
+    310 361 311
+    361 312 311
+    361 362 312
+    367 368 318
+    300 351 301
+    350 351 300
+    351 352 302
+    352 353 303
+    353 354 303
+    355 356 306
+    359 360 310
+    315 366 316
+    365 366 315
+    316 367 317
+    318 369 319
+    320 371 321
+    322 373 323
+    324 375 325
+    326 377 327
+    327 378 328
+    328 379 329
+    330 381 331
+    331 382 332
+    332 383 333
+    333 384 334
+    335 386 336
+    336 387 337
+    340 391 341
+    341 392 342
+    391 392 341
+    342 393 343
+    392 393 342
+    344 395 345
+    394 395 344
+    345 396 346
+    395 396 345
+    347 398 348
+    356 357 306
+    357 358 307
+    358 359 308
+    360 361 310
+    362 363 313
+    363 364 314
+    364 365 315
+    368 369 318
+    369 370 319
+    372 373 322
+    373 374 324
+    374 375 324
+    375 376 325
+    376 377 326
+    377 378 327
+    378 379 328
+    380 381 330
+    382 383 332
+    383 384 333
+    385 386 335
+    386 387 336
+    387 388 338
+    389 390 339
+    390 391 340
+    393 394 344
+    396 397 347
+    366 367 316
+    370 371 320
+    381 382 331
+    397 398 347
+    443 394 393
+    448 399 398
+    369 420 370
+    375 426 376
+    379 430 380
+    384 435 385
+    437 388 387
+    438 389 388
+    389 440 390
+    446 397 396
+    446 447 397
+    412 363 362
+    413 364 363
+    414 365 364
+    417 368 367
+    371 422 372
+    423 374 373
+    425 426 375
+    429 430 379
+    438 439 389
+    448 449 399
+    401 352 351
+    402 353 352
+    353 404 354
+    403 404 353
+    354 405 355
+    405 356 355
+    356 407 357
+    357 408 358
+    358 409 359
+    409 360 359
+    360 411 361
+    411 362 361
+    411 412 362
+    417 418 368
+    419 420 369
+    421 422 371
+    350 401 351
+    400 401 350
+    401 402 352
+    402 403 353
+    404 405 354
+    405 406 356
+    408 409 358
+    409 410 360
+    365 416 366
+    415 416 365
+    366 417 367
+    416 417 366
+    368 419 369
+    418 419 368
+    370 421 371
+    420 421 370
+    372 423 373
+    374 425 375
+    376 427 377
+    426 427 376
+    377 428 378
+    378 429 379
+    428 429 378
+    380 431 381
+    381 432 382
+    431 432 381
+    382 433 383
+    383 434 384
+    385 436 386
+    386 437 387
+    390 441 391
+    440 441 390
+    391 442 392
+    441 442 391
+    392 443 393
+    442 443 392
+    394 445 395
+    444 445 394
+    395 446 396
+    445 446 395
+    397 448 398
+    447 448 397
+    406 407 356
+    407 408 357
+    410 411 360
+    412 413 363
+    413 414 364
+    414 415 365
+    422 423 372
+    423 424 374
+    424 425 374
+    427 428 377
+    432 433 382
+    433 434 383
+    434 435 384
+    435 436 385
+    436 437 386
+    437 438 388
+    439 440 389
+    443 444 394
+    430 431 380
+    493 444 443
+    498 449 448
+    419 470 420
+    425 476 426
+    429 480 430
+    434 485 435
+    487 438 437
+    488 439 438
+    439 490 440
+    496 447 446
+    462 413 412
+    463 414 413
+    464 415 414
+    467 418 417
+    421 472 422
+    473 424 423
+    473 474 424
+    479 480 429
+    484 485 434
+    487 488 438
+    488 489 439
+    493 494 444
+    496 497 447
+    498 499 449
+    451 402 401
+    451 452 402
+    452 403 402
+    452 453 403
+    403 454 404
+    404 455 405
+    455 406 405
+    406 457 407
+    407 458 408
+    408 459 409
+    459 410 409
+    410 461 411
+    460 461 410
+    461 412 411
+    461 462 412
+    467 468 418
+    400 451 401
+    450 451 400
+    453 454 403
+    455 456 406
+    457 458 407
+    459 460 410
+    415 466 416
+    465 466 415
+    416 467 417
+    418 469 419
+    420 471 421
+    422 473 423
+    424 475 425
+    426 477 427
+    427 478 428
+    428 479 429
+    478 479 428
+    430 481 431
+    431 482 432
+    481 482 431
+    432 483 433
+    433 484 434
+    435 486 436
+    436 487 437
+    440 491 441
+    441 492 442
+    491 492 441
+    442 493 443
+    492 493 442
+    444 495 445
+    445 496 446
+    447 498 448
+    454 455 404
+    456 457 406
+    458 459 408
+    462 463 413
+    463 464 414
+    464 465 415
+    468 469 418
+    469 470 419
+    471 472 421
+    472 473 422
+    474 475 424
+    475 476 425
+    476 477 426
+    477 478 427
+    480 481 430
+    483 484 433
+    486 487 436
+    489 490 439
+    490 491 440
+    494 495 444
+    495 496 445
+    497 498 447
+    466 467 416
+    470 471 420
+    482 483 432
+    485 486 435
+    543 494 493
+    548 499 498
+    548 549 499
+    543 544 494
+    469 520 470
+    475 526 476
+    525 526 475
+    479 530 480
+    529 530 479
+    484 535 485
+    534 535 484
+    537 488 487
+    537 538 488
+    538 489 488
+    538 539 489
+    489 540 490
+    546 497 496
+    546 547 497
+    512 463 462
+    513 464 463
+    514 465 464
+    517 468 467
+    517 518 468
+    471 522 472
+    521 522 471
+    523 474 473
+    523 524 474
+    450 501 451
+    500 501 450
+    451 502 452
+    501 502 451
+    452 503 453
+    502 503 452
+    453 504 454
+    454 505 455
+    504 505 454
+    505 456 455
+    505 506 456
+    456 507 457
+    506 507 456
+    457 508 458
+    458 509 459
+    509 460 459
+    509 510 460
+    460 511 461
+    510 511 460
+    511 462 461
+    511 512 462
+    512 513 463
+    513 514 464
+    514 515 465
+    519 520 469
+    539 540 489
+    503 504 453
+    507 508 457
+    508 509 458
+    465 516 466
+    515 516 465
+    466 517 467
+    516 517 466
+    468 519 469
+    518 519 468
+    470 521 471
+    520 521 470
+    472 523 473
+    522 523 472
+    474 525 475
+    524 525 474
+    476 527 477
+    526 527 476
+    477 528 478
+    527 528 477
+    478 529 479
+    528 529 478
+    480 531 481
+    530 531 480
+    481 532 482
+    531 532 481
+    482 533 483
+    532 533 482
+    483 534 484
+    533 534 483
+    485 536 486
+    486 537 487
+    490 541 491
+    540 541 490
+    491 542 492
+    541 542 491
+    492 543 493
+    542 543 492
+    494 545 495
+    495 546 496
+    545 546 495
+    497 548 498
+    535 536 485
+    536 537 486
+    544 545 494
+    547 548 497
+    593 544 543
+    598 549 548
+    598 599 549
+    519 570 520
+    525 576 526
+    529 580 530
+    579 580 529
+    534 585 535
+    587 538 537
+    588 539 538
+    539 590 540
+    596 547 546
+    562 513 512
+    563 514 513
+    564 515 514
+    567 518 517
+    569 570 519
+    521 572 522
+    571 572 521
+    573 524 523
+    573 574 524
+    575 576 525
+    584 585 534
+    588 589 539
+    593 594 544
+    596 597 547
+    551 502 501
+    552 503 502
+    552 553 503
+    503 554 504
+    504 555 505
+    554 555 504
+    555 506 505
+    506 557 507
+    507 558 508
+    508 559 509
+    558 559 508
+    559 510 509
+    510 561 511
+    561 512 511
+    561 562 512
+    567 568 518
+    500 551 501
+    551 552 502
+    553 554 503
+    555 556 506
+    559 560 510
+    515 566 516
+    565 566 515
+    516 567 517
+    566 567 516
+    518 569 519
+    568 569 518
+    520 571 521
+    522 573 523
+    524 575 525
+    526 577 527
+    527 578 528
+    528 579 529
+    530 581 531
+    531 582 532
+    532 583 533
+    533 584 534
+    535 586 536
+    536 587 537
+    540 591 541
+    541 592 542
+    542 593 543
+    544 595 545
+    594 595 544
+    545 596 546
+    595 596 545
+    547 598 548
+    550 551 500
+    556 557 506
+    557 558 507
+    560 561 510
+    562 563 513
+    563 564 514
+    564 565 515
+    572 573 522
+    574 575 524
+    576 577 526
+    577 578 527
+    578 579 528
+    580 581 530
+    581 582 531
+    587 588 538
+    589 590 539
+    590 591 540
+    591 592 541
+    592 593 542
+    570 571 520
+    582 583 532
+    583 584 533
+    585 586 535
+    586 587 536
+    597 598 547
+    643 594 593
+    648 599 598
+    569 620 570
+    575 626 576
+    579 630 580
+    584 635 585
+    637 588 587
+    638 589 588
+    589 640 590
+    646 597 596
+    612 563 562
+    613 564 563
+    614 565 564
+    617 568 567
+    617 618 568
+    571 622 572
+    621 622 571
+    623 574 573
+    623 624 574
+    637 638 588
+    646 647 597
+    550 601 551
+    600 601 550
+    551 602 552
+    601 602 551
+    552 603 553
+    602 603 552
+    553 604 554
+    603 604 553
+    554 605 555
+    604 605 554
+    605 556 555
+    605 606 556
+    556 607 557
+    606 607 556
+    557 608 558
+    607 608 557
+    558 609 559
+    608 609 558
+    559 610 560
+    609 610 559
+    560 611 561
+    610 611 560
+    611 562 561
+    611 612 562
+    612 613 563
+    613 614 564
+    614 615 565
+    565 616 566
+    615 616 565
+    566 617 567
+    616 617 566
+    568 619 569
+    618 619 568
+    619 620 569
+    570 621 571
+    620 621 570
+    572 623 573
+    622 623 572
+    574 625 575
+    576 627 577
+    626 627 576
+    577 628 578
+    578 629 579
+    628 629 578
+    580 631 581
+    581 632 582
+    631 632 581
+    582 633 583
+    632 633 582
+    583 634 584
+    633 634 583
+    585 636 586
+    635 636 585
+    586 637 587
+    636 637 586
+    590 641 591
+    591 642 592
+    641 642 591
+    592 643 593
+    642 643 592
+    594 645 595
+    595 646 596
+    597 648 598
+    624 625 574
+    625 626 575
+    627 628 577
+    629 630 579
+    630 631 580
+    634 635 584
+    638 639 589
+    643 644 594
+    644 645 594
+    645 646 595
+    647 648 597
+    648 649 599
+    639 640 589
+    640 641 590
+    693 644 643
+    698 649 648
+    693 694 644
+    698 699 649
+    619 670 620
+    625 676 626
+    629 680 630
+    679 680 629
+    634 685 635
+    687 638 637
+    688 639 638
+    688 689 639
+    639 690 640
+    696 647 646
+    696 697 647
+    600 651 601
+    650 651 600
+    601 652 602
+    651 652 601
+    602 653 603
+    652 653 602
+    603 654 604
+    653 654 603
+    604 655 605
+    654 655 604
+    605 656 606
+    655 656 605
+    606 657 607
+    656 657 606
+    607 658 608
+    657 658 607
+    608 659 609
+    658 659 608
+    609 660 610
+    659 660 609
+    610 661 611
+    660 661 610
+    661 612 611
+    661 662 612
+    612 663 613
+    662 663 612
+    663 614 613
+    663 664 614
+    614 665 615
+    664 665 614
+    615 666 616
+    665 666 615
+    616 667 617
+    666 667 616
+    617 668 618
+    667 668 617
+    618 669 619
+    668 669 618
+    669 670 619
+    620 671 621
+    670 671 620
+    621 672 622
+    671 672 621
+    622 673 623
+    672 673 622
+    673 624 623
+    673 674 624
+    624 675 625
+    674 675 624
+    675 676 625
+    626 677 627
+    676 677 626
+    627 678 628
+    677 678 627
+    628 679 629
+    678 679 628
+    630 681 631
+    680 681 630
+    631 682 632
+    681 682 631
+    632 683 633
+    633 684 634
+    635 686 636
+    636 687 637
+    687 688 638
+    689 690 639
+    640 691 641
+    690 691 640
+    641 692 642
+    691 692 641
+    642 693 643
+    692 693 642
+    644 695 645
+    645 696 646
+    695 696 645
+    647 698 648
+    682 683 632
+    683 684 633
+    684 685 634
+    685 686 635
+    686 687 636
+    694 695 644
+    697 698 647
+    743 694 693
+    748 699 698
+    712 663 662
+    712 713 663
+    713 664 663
+    713 714 664
+    714 665 664
+    714 715 665
+    717 668 667
+    717 718 668
+    669 720 670
+    719 720 669
+    671 722 672
+    721 722 671
+    723 674 673
+    723 724 674
+    675 726 676
+    679 730 680
+    684 735 685
+    737 688 687
+    738 689 688
+    738 739 689
+    689 740 690
+    739 740 689
+    743 744 694
+    746 697 696
+    746 747 697
+    650 701 651
+    700 701 650
+    651 702 652
+    701 702 651
+    652 703 653
+    702 703 652
+    653 704 654
+    703 704 653
+    654 705 655
+    704 705 654
+    655 706 656
+    705 706 655
+    656 707 657
+    706 707 656
+    657 708 658
+    707 708 657
+    658 709 659
+    708 709 658
+    659 710 660
+    709 710 659
+    660 711 661
+    710 711 660
+    661 712 662
+    711 712 661
+    665 716 666
+    715 716 665
+    666 717 667
+    716 717 666
+    668 719 669
+    718 719 668
+    670 721 671
+    720 721 670
+    672 723 673
+    722 723 672
+    674 725 675
+    724 725 674
+    676 727 677
+    726 727 676
+    677 728 678
+    727 728 677
+    678 729 679
+    728 729 678
+    729 730 679
+    680 731 681
+    730 731 680
+    681 732 682
+    731 732 681
+    682 733 683
+    732 733 682
+    683 734 684
+    733 734 683
+    734 735 684
+    685 736 686
+    735 736 685
+    686 737 687
+    736 737 686
+    737 738 688
+    690 741 691
+    740 741 690
+    691 742 692
+    741 742 691
+    692 743 693
+    742 743 692
+    694 745 695
+    744 745 694
+    695 746 696
+    745 746 695
+    697 748 698
+    747 748 697
+    725 726 675
+    748 749 699
+    793 744 743
+    798 749 748
+    793 794 744
+    798 799 749
+    719 770 720
+    725 776 726
+    775 776 725
+    729 780 730
+    734 785 735
+    787 738 737
+    788 739 738
+    788 789 739
+    739 790 740
+    796 747 746
+    796 797 747
+    700 751 701
+    750 751 700
+    701 752 702
+    751 752 701
+    702 753 703
+    752 753 702
+    703 754 704
+    753 754 703
+    704 755 705
+    754 755 704
+    705 756 706
+    755 756 705
+    706 757 707
+    756 757 706
+    707 758 708
+    757 758 707
+    708 759 709
+    758 759 708
+    709 760 710
+    759 760 709
+    710 761 711
+    760 761 710
+    761 712 711
+    761 762 712
+    712 763 713
+    762 763 712
+    763 714 713
+    763 764 714
+    714 765 715
+    764 765 714
+    715 766 716
+    765 766 715
+    716 767 717
+    717 768 718
+    767 768 717
+    718 769 719
+    768 769 718
+    769 770 719
+    720 771 721
+    770 771 720
+    721 772 722
+    771 772 721
+    722 773 723
+    772 773 722
+    773 724 723
+    773 774 724
+    724 775 725
+    774 775 724
+    726 777 727
+    776 777 726
+    727 778 728
+    777 778 727
+    728 779 729
+    778 779 728
+    779 780 729
+    730 781 731
+    780 781 730
+    731 782 732
+    781 782 731
+    732 783 733
+    782 783 732
+    733 784 734
+    783 784 733
+    784 785 734
+    735 786 736
+    736 787 737
+    787 788 738
+    740 791 741
+    741 792 742
+    742 793 743
+    744 795 745
+    745 796 746
+    747 798 748
+    766 767 716
+    785 786 735
+    786 787 736
+    794 795 744
+    795 796 745
+    797 798 747
+    789 790 739
+    790 791 740
+    791 792 741
+    792 793 742
+    843 794 793
+    848 799 798
+    769 820 770
+    775 826 776
+    779 830 780
+    784 835 785
+    837 788 787
+    837 838 788
+    838 789 788
+    789 840 790
+    846 797 796
+    846 847 797
+    750 801 751
+    800 801 750
+    751 802 752
+    801 802 751
+    752 803 753
+    802 803 752
+    753 804 754
+    754 805 755
+    804 805 754
+    755 806 756
+    805 806 755
+    756 807 757
+    806 807 756
+    757 808 758
+    807 808 757
+    758 809 759
+    808 809 758
+    759 810 760
+    809 810 759
+    760 811 761
+    810 811 760
+    811 762 761
+    811 812 762
+    762 813 763
+    812 813 762
+    813 764 763
+    813 814 764
+    764 815 765
+    814 815 764
+    765 816 766
+    815 816 765
+    766 817 767
+    816 817 766
+    767 818 768
+    768 819 769
+    818 819 768
+    819 820 769
+    770 821 771
+    820 821 770
+    771 822 772
+    821 822 771
+    772 823 773
+    823 774 773
+    823 824 774
+    774 825 775
+    824 825 774
+    776 827 777
+    826 827 776
+    777 828 778
+    827 828 777
+    778 829 779
+    828 829 778
+    780 831 781
+    830 831 780
+    781 832 782
+    831 832 781
+    782 833 783
+    832 833 782
+    783 834 784
+    833 834 783
+    785 836 786
+    786 837 787
+    838 839 789
+    839 840 789
+    790 841 791
+    840 841 790
+    791 842 792
+    841 842 791
+    792 843 793
+    842 843 792
+    843 844 794
+    794 845 795
+    844 845 794
+    795 846 796
+    845 846 795
+    797 848 798
+    847 848 797
+    848 849 799
+    803 804 753
+    817 818 767
+    822 823 772
+    829 830 779
+    834 835 784
+    835 836 785
+    836 837 786
+    825 826 775
+    893 844 843
+    898 849 848
+    819 870 820
+    825 876 826
+    875 876 825
+    829 880 830
+    834 885 835
+    887 838 837
+    887 888 838
+    888 839 838
+    839 890 840
+    896 847 846
+    896 897 847
+    800 851 801
+    850 851 800
+    801 852 802
+    851 852 801
+    802 853 803
+    803 854 804
+    853 854 803
+    804 855 805
+    854 855 804
+    805 856 806
+    855 856 805
+    806 857 807
+    807 858 808
+    857 858 807
+    808 859 809
+    809 860 810
+    859 860 809
+    810 861 811
+    860 861 810
+    861 812 811
+    861 862 812
+    812 863 813
+    862 863 812
+    863 814 813
+    863 864 814
+    814 865 815
+    815 866 816
+    865 866 815
+    816 867 817
+    866 867 816
+    817 868 818
+    867 868 817
+    818 869 819
+    868 869 818
+    820 871 821
+    870 871 820
+    821 872 822
+    871 872 821
+    822 873 823
+    873 824 823
+    873 874 824
+    824 875 825
+    874 875 824
+    826 877 827
+    876 877 826
+    827 878 828
+    877 878 827
+    828 879 829
+    878 879 828
+    830 881 831
+    880 881 830
+    831 882 832
+    881 882 831
+    832 883 833
+    882 883 832
+    833 884 834
+    883 884 833
+    835 886 836
+    836 887 837
+    886 887 836
+    888 889 839
+    889 890 839
+    840 891 841
+    890 891 840
+    841 892 842
+    891 892 841
+    842 893 843
+    892 893 842
+    893 894 844
+    844 895 845
+    894 895 844
+    845 896 846
+    895 896 845
+    847 898 848
+    897 898 847
+    898 899 849
+    852 853 802
+    856 857 806
+    858 859 808
+    864 865 814
+    872 873 822
+    869 870 819
+    879 880 829
+    884 885 834
+    885 886 835
+    943 894 893
+    948 899 898
+    948 949 899
+    869 920 870
+    875 926 876
+    879 930 880
+    929 930 879
+    884 935 885
+    934 935 884
+    937 888 887
+    938 889 888
+    938 939 889
+    889 940 890
+    946 897 896
+    946 947 897
+    850 901 851
+    900 901 850
+    851 902 852
+    901 902 851
+    852 903 853
+    902 903 852
+    853 904 854
+    903 904 853
+    854 905 855
+    904 905 854
+    855 906 856
+    905 906 855
+    856 907 857
+    906 907 856
+    857 908 858
+    907 908 857
+    858 909 859
+    908 909 858
+    859 910 860
+    909 910 859
+    860 911 861
+    910 911 860
+    911 862 861
+    911 912 862
+    862 913 863
+    912 913 862
+    913 864 863
+    913 914 864
+    864 915 865
+    914 915 864
+    865 916 866
+    866 917 867
+    916 917 866
+    867 918 868
+    917 918 867
+    868 919 869
+    918 919 868
+    919 920 869
+    870 921 871
+    920 921 870
+    871 922 872
+    921 922 871
+    872 923 873
+    922 923 872
+    923 874 873
+    923 924 874
+    874 925 875
+    924 925 874
+    925 926 875
+    876 927 877
+    926 927 876
+    877 928 878
+    878 929 879
+    880 931 881
+    930 931 880
+    881 932 882
+    931 932 881
+    882 933 883
+    932 933 882
+    883 934 884
+    933 934 883
+    885 936 886
+    886 937 887
+    890 941 891
+    891 942 892
+    892 943 893
+    942 943 892
+    943 944 894
+    894 945 895
+    895 946 896
+    897 948 898
+    915 916 865
+    927 928 877
+    928 929 878
+    935 936 885
+    936 937 886
+    937 938 888
+    944 945 894
+    945 946 895
+    947 948 897
+    939 940 889
+    940 941 890
+    941 942 891
+    993 944 943
+    998 949 948
+    919 970 920
+    925 976 926
+    929 980 930
+    934 985 935
+    984 985 934
+    987 938 937
+    987 988 938
+    988 939 938
+    939 990 940
+    996 947 946
+    996 997 947
+    900 951 901
+    950 951 900
+    901 952 902
+    951 952 901
+    902 953 903
+    952 953 902
+    903 954 904
+    953 954 903
+    904 955 905
+    954 955 904
+    905 956 906
+    955 956 905
+    906 957 907
+    956 957 906
+    907 958 908
+    957 958 907
+    908 959 909
+    958 959 908
+    909 960 910
+    910 961 911
+    960 961 910
+    961 912 911
+    961 962 912
+    912 963 913
+    962 963 912
+    963 914 913
+    963 964 914
+    914 965 915
+    964 965 914
+    915 966 916
+    965 966 915
+    916 967 917
+    966 967 916
+    917 968 918
+    967 968 917
+    918 969 919
+    968 969 918
+    920 971 921
+    921 972 922
+    971 972 921
+    922 973 923
+    972 973 922
+    973 924 923
+    973 974 924
+    924 975 925
+    974 975 924
+    926 977 927
+    976 977 926
+    927 978 928
+    977 978 927
+    928 979 929
+    978 979 928
+    930 981 931
+    980 981 930
+    931 982 932
+    981 982 931
+    932 983 933
+    933 984 934
+    935 986 936
+    985 986 935
+    936 987 937
+    986 987 936
+    988 989 939
+    940 991 941
+    990 991 940
+    941 992 942
+    991 992 941
+    942 993 943
+    992 993 942
+    993 994 944
+    944 995 945
+    994 995 944
+    945 996 946
+    995 996 945
+    947 998 948
+    997 998 947
+    998 999 949
+    959 960 909
+    969 970 919
+    970 971 920
+    975 976 925
+    979 980 929
+    982 983 932
+    983 984 933
+    989 990 939
+    1043 994 993
+    1048 999 998
+    969 1020 970
+    975 1026 976
+    979 1030 980
+    984 1035 985
+    1037 988 987
+    1038 989 988
+    989 1040 990
+    1046 997 996
+    1012 963 962
+    1013 964 963
+    1014 965 964
+    1017 968 967
+    971 1022 972
+    1023 974 973
+    1034 1035 984
+    1038 1039 989
+    950 1001 951
+    951 1002 952
+    952 1003 953
+    953 1004 954
+    954 1005 955
+    1004 1005 954
+    955 1006 956
+    956 1007 957
+    957 1008 958
+    958 1009 959
+    959 1010 960
+    960 1011 961
+    1010 1011 960
+    961 1012 962
+    965 1016 966
+    966 1017 967
+    968 1019 969
+    970 1021 971
+    972 1023 973
+    974 1025 975
+    976 1027 977
+    977 1028 978
+    978 1029 979
+    980 1031 981
+    981 1032 982
+    982 1033 983
+    983 1034 984
+    985 1036 986
+    986 1037 987
+    990 1041 991
+    991 1042 992
+    1041 1042 991
+    992 1043 993
+    1042 1043 992
+    994 1045 995
+    995 1046 996
+    997 1048 998
+    1000 1001 950
+    1001 1002 951
+    1003 1004 953
+    1005 1006 955
+    1007 1008 957
+    1008 1009 958
+    1009 1010 959
+    1011 1012 961
+    1012 1013 963
+    1013 1014 964
+    1014 1015 965
+    1015 1016 965
+    1017 1018 968
+    1020 1021 970
+    1023 1024 974
+    1026 1027 976
+    1035 1036 985
+    1036 1037 986
+    1037 1038 988
+    1043 1044 994
+    1044 1045 994
+    1045 1046 995
+    1046 1047 997
+    1048 1049 999
+    1002 1003 952
+    1006 1007 956
+    1018 1019 968
+    1021 1022 971
+    1022 1023 972
+    1024 1025 974
+    1027 1028 977
+    1028 1029 978
+    1029 1030 979
+    1030 1031 980
+    1031 1032 981
+    1032 1033 982
+    1033 1034 983
+    1039 1040 989
+    1040 1041 990
+    1016 1017 966
+    1019 1020 969
+    1025 1026 975
+    1047 1048 997
+    1093 1044 1043
+    1098 1049 1048
+    1019 1070 1020
+    1025 1076 1026
+    1029 1080 1030
+    1034 1085 1035
+    1087 1038 1037
+    1088 1039 1038
+    1039 1090 1040
+    1096 1047 1046
+    1096 1097 1047
+    1000 1051 1001
+    1050 1051 1000
+    1001 1052 1002
+    1051 1052 1001
+    1002 1053 1003
+    1052 1053 1002
+    1003 1054 1004
+    1053 1054 1003
+    1004 1055 1005
+    1054 1055 1004
+    1005 1056 1006
+    1006 1057 1007
+    1007 1058 1008
+    1057 1058 1007
+    1008 1059 1009
+    1009 1060 1010
+    1059 1060 1009
+    1010 1061 1011
+    1061 1012 1011
+    1012 1063 1013
+    1062 1063 1012
+    1063 1014 1013
+    1063 1064 1014
+    1014 1065 1015
+    1064 1065 1014
+    1015 1066 1016
+    1065 1066 1015
+    1016 1067 1017
+    1066 1067 1016
+    1017 1068 1018
+    1067 1068 1017
+    1018 1069 1019
+    1069 1070 1019
+    1020 1071 1021
+    1070 1071 1020
+    1021 1072 1022
+    1071 1072 1021
+    1022 1073 1023
+    1072 1073 1022
+    1073 1024 1023
+    1073 1074 1024
+    1024 1075 1025
+    1074 1075 1024
+    1026 1077 1027
+    1076 1077 1026
+    1027 1078 1028
+    1028 1079 1029
+    1030 1081 1031
+    1031 1082 1032
+    1032 1083 1033
+    1082 1083 1032
+    1033 1084 1034
+    1083 1084 1033
+    1035 1086 1036
+    1036 1087 1037
+    1087 1088 1038
+    1088 1089 1039
+    1089 1090 1039
+    1040 1091 1041
+    1090 1091 1040
+    1041 1092 1042
+    1091 1092 1041
+    1042 1093 1043
+    1092 1093 1042
+    1093 1094 1044
+    1044 1095 1045
+    1094 1095 1044
+    1045 1096 1046
+    1095 1096 1045
+    1047 1098 1048
+    1098 1099 1049
+    1055 1056 1005
+    1056 1057 1006
+    1058 1059 1008
+    1060 1061 1010
+    1061 1062 1012
+    1068 1069 1018
+    1077 1078 1027
+    1078 1079 1028
+    1079 1080 1029
+    1084 1085 1034
+    1085 1086 1035
+    1086 1087 1036
+    1097 1098 1047
+    1075 1076 1025
+    1080 1081 1030
+    1081 1082 1031
+    1143 1094 1093
+    1148 1099 1098
+    1069 1120 1070
+    1075 1126 1076
+    1079 1130 1080
+    1084 1135 1085
+    1137 1088 1087
+    1138 1089 1088
+    1138 1139 1089
+    1089 1140 1090
+    1146 1097 1096
+    1050 1101 1051
+    1100 1101 1050
+    1051 1102 1052
+    1101 1102 1051
+    1052 1103 1053
+    1102 1103 1052
+    1053 1104 1054
+    1103 1104 1053
+    1054 1105 1055
+    1104 1105 1054
+    1105 1056 1055
+    1105 1106 1056
+    1056 1107 1057
+    1106 1107 1056
+    1057 1108 1058
+    1058 1109 1059
+    1109 1060 1059
+    1060 1111 1061
+    1110 1111 1060
+    1111 1062 1061
+    1111 1112 1062
+    1112 1063 1062
+    1112 1113 1063
+    1113 1064 1063
+    1113 1114 1064
+    1114 1065 1064
+    1117 1068 1067
+    1117 1118 1068
+    1071 1122 1072
+    1123 1074 1073
+    1123 1124 1074
+    1125 1126 1075
+    1137 1138 1088
+    1143 1144 1094
+    1146 1147 1097
+    1148 1149 1099
+    1107 1108 1057
+    1108 1109 1058
+    1109 1110 1060
+    1114 1115 1065
+    1065 1116 1066
+    1115 1116 1065
+    1066 1117 1067
+    1116 1117 1066
+    1068 1119 1069
+    1118 1119 1068
+    1070 1121 1071
+    1120 1121 1070
+    1121 1122 1071
+    1072 1123 1073
+    1122 1123 1072
+    1074 1125 1075
+    1124 1125 1074
+    1076 1127 1077
+    1126 1127 1076
+    1077 1128 1078
+    1127 1128 1077
+    1078 1129 1079
+    1128 1129 1078
+    1129 1130 1079
+    1080 1131 1081
+    1130 1131 1080
+    1081 1132 1082
+    1131 1132 1081
+    1082 1133 1083
+    1132 1133 1082
+    1083 1134 1084
+    1133 1134 1083
+    1134 1135 1084
+    1085 1136 1086
+    1135 1136 1085
+    1086 1137 1087
+    1136 1137 1086
+    1139 1140 1089
+    1090 1141 1091
+    1140 1141 1090
+    1091 1142 1092
+    1141 1142 1091
+    1092 1143 1093
+    1142 1143 1092
+    1094 1145 1095
+    1095 1146 1096
+    1145 1146 1095
+    1097 1148 1098
+    1147 1148 1097
+    1119 1120 1069
+    1144 1145 1094
+    1193 1144 1143
+    1198 1149 1148
+    1119 1170 1120
+    1125 1176 1126
+    1129 1180 1130
+    1134 1185 1135
+    1187 1138 1137
+    1188 1139 1138
+    1139 1190 1140
+    1196 1147 1146
+    1196 1197 1147
+    1100 1151 1101
+    1150 1151 1100
+    1101 1152 1102
+    1151 1152 1101
+    1102 1153 1103
+    1152 1153 1102
+    1103 1154 1104
+    1153 1154 1103
+    1104 1155 1105
+    1154 1155 1104
+    1105 1156 1106
+    1155 1156 1105
+    1106 1157 1107
+    1156 1157 1106
+    1107 1158 1108
+    1108 1159 1109
+    1158 1159 1108
+    1109 1160 1110
+    1159 1160 1109
+    1110 1161 1111
+    1160 1161 1110
+    1161 1112 1111
+    1161 1162 1112
+    1112 1163 1113
+    1162 1163 1112
+    1163 1114 1113
+    1163 1164 1114
+    1114 1165 1115
+    1164 1165 1114
+    1115 1166 1116
+    1116 1167 1117
+    1117 1168 1118
+    1167 1168 1117
+    1118 1169 1119
+    1168 1169 1118
+    1120 1171 1121
+    1170 1171 1120
+    1121 1172 1122
+    1171 1172 1121
+    1122 1173 1123
+    1172 1173 1122
+    1173 1124 1123
+    1173 1174 1124
+    1124 1175 1125
+    1126 1177 1127
+    1176 1177 1126
+    1127 1178 1128
+    1128 1179 1129
+    1130 1181 1131
+    1180 1181 1130
+    1131 1182 1132
+    1181 1182 1131
+    1132 1183 1133
+    1182 1183 1132
+    1133 1184 1134
+    1183 1184 1133
+    1135 1186 1136
+    1136 1187 1137
+    1186 1187 1136
+    1187 1188 1138
+    1188 1189 1139
+    1189 1190 1139
+    1140 1191 1141
+    1190 1191 1140
+    1141 1192 1142
+    1191 1192 1141
+    1142 1193 1143
+    1192 1193 1142
+    1193 1194 1144
+    1144 1195 1145
+    1194 1195 1144
+    1145 1196 1146
+    1195 1196 1145
+    1147 1198 1148
+    1198 1199 1149
+    1157 1158 1107
+    1165 1166 1115
+    1166 1167 1116
+    1169 1170 1119
+    1174 1175 1124
+    1177 1178 1127
+    1178 1179 1128
+    1179 1180 1129
+    1184 1185 1134
+    1185 1186 1135
+    1197 1198 1147
+    1175 1176 1125
+    1243 1194 1193
+    1248 1199 1198
+    1212 1163 1162
+    1212 1213 1163
+    1213 1164 1163
+    1213 1214 1164
+    1214 1165 1164
+    1214 1215 1165
+    1217 1168 1167
+    1217 1218 1168
+    1169 1220 1170
+    1219 1220 1169
+    1171 1222 1172
+    1221 1222 1171
+    1223 1174 1173
+    1223 1224 1174
+    1175 1226 1176
+    1179 1230 1180
+    1184 1235 1185
+    1237 1188 1187
+    1237 1238 1188
+    1238 1189 1188
+    1238 1239 1189
+    1189 1240 1190
+    1239 1240 1189
+    1243 1244 1194
+    1246 1197 1196
+    1246 1247 1197
+    1248 1249 1199
+    1150 1201 1151
+    1200 1201 1150
+    1151 1202 1152
+    1201 1202 1151
+    1152 1203 1153
+    1202 1203 1152
+    1153 1204 1154
+    1203 1204 1153
+    1154 1205 1155
+    1204 1205 1154
+    1155 1206 1156
+    1205 1206 1155
+    1156 1207 1157
+    1206 1207 1156
+    1157 1208 1158
+    1207 1208 1157
+    1158 1209 1159
+    1208 1209 1158
+    1159 1210 1160
+    1209 1210 1159
+    1160 1211 1161
+    1210 1211 1160
+    1161 1212 1162
+    1211 1212 1161
+    1165 1216 1166
+    1215 1216 1165
+    1166 1217 1167
+    1216 1217 1166
+    1168 1219 1169
+    1218 1219 1168
+    1170 1221 1171
+    1220 1221 1170
+    1172 1223 1173
+    1222 1223 1172
+    1174 1225 1175
+    1224 1225 1174
+    1176 1227 1177
+    1226 1227 1176
+    1177 1228 1178
+    1227 1228 1177
+    1178 1229 1179
+    1228 1229 1178
+    1229 1230 1179
+    1180 1231 1181
+    1230 1231 1180
+    1181 1232 1182
+    1231 1232 1181
+    1182 1233 1183
+    1232 1233 1182
+    1183 1234 1184
+    1233 1234 1183
+    1234 1235 1184
+    1185 1236 1186
+    1235 1236 1185
+    1186 1237 1187
+    1236 1237 1186
+    1190 1241 1191
+    1240 1241 1190
+    1191 1242 1192
+    1241 1242 1191
+    1192 1243 1193
+    1242 1243 1192
+    1194 1245 1195
+    1244 1245 1194
+    1195 1246 1196
+    1245 1246 1195
+    1197 1248 1198
+    1247 1248 1197
+    1225 1226 1175
+    1219 1270 1220
+    1225 1276 1226
+    1229 1280 1230
+    1234 1285 1235
+    1287 1238 1237
+    1288 1239 1238
+    1239 1290 1240
+    1293 1244 1243
+    1296 1247 1246
+    1296 1297 1247
+    1298 1249 1248
+    1200 1251 1201
+    1250 1251 1200
+    1201 1252 1202
+    1202 1253 1203
+    1252 1253 1202
+    1203 1254 1204
+    1204 1255 1205
+    1254 1255 1204
+    1205 1256 1206
+    1255 1256 1205
+    1206 1257 1207
+    1256 1257 1206
+    1207 1258 1208
+    1257 1258 1207
+    1208 1259 1209
+    1258 1259 1208
+    1209 1260 1210
+    1259 1260 1209
+    1210 1261 1211
+    1260 1261 1210
+    1211 1262 1212
+    1212 1263 1213
+    1262 1263 1212
+    1263 1214 1213
+    1263 1264 1214
+    1214 1265 1215
+    1264 1265 1214
+    1215 1266 1216
+    1265 1266 1215
+    1216 1267 1217
+    1266 1267 1216
+    1217 1268 1218
+    1267 1268 1217
+    1218 1269 1219
+    1268 1269 1218
+    1220 1271 1221
+    1221 1272 1222
+    1271 1272 1221
+    1222 1273 1223
+    1273 1224 1223
+    1273 1274 1224
+    1224 1275 1225
+    1274 1275 1224
+    1226 1277 1227
+    1227 1278 1228
+    1228 1279 1229
+    1278 1279 1228
+    1230 1281 1231
+    1280 1281 1230
+    1231 1282 1232
+    1281 1282 1231
+    1232 1283 1233
+    1282 1283 1232
+    1233 1284 1234
+    1283 1284 1233
+    1235 1286 1236
+    1285 1286 1235
+    1236 1287 1237
+    1286 1287 1236
+    1287 1288 1238
+    1288 1289 1239
+    1289 1290 1239
+    1240 1291 1241
+    1290 1291 1240
+    1241 1292 1242
+    1291 1292 1241
+    1242 1293 1243
+    1292 1293 1242
+    1293 1294 1244
+    1244 1295 1245
+    1294 1295 1244
+    1245 1296 1246
+    1295 1296 1245
+    1247 1298 1248
+    1298 1299 1249
+    1251 1252 1201
+    1253 1254 1203
+    1261 1262 1211
+    1269 1270 1219
+    1270 1271 1220
+    1272 1273 1222
+    1276 1277 1226
+    1277 1278 1227
+    1279 1280 1229
+    1284 1285 1234
+    1297 1298 1247
+    1275 1276 1225
+    1343 1294 1293
+    1348 1299 1298
+    1250 1301 1251
+    1251 1302 1252
+    1252 1303 1253
+    1253 1304 1254
+    1254 1305 1255
+    1305 1256 1255
+    1256 1307 1257
+    1257 1308 1258
+    1258 1309 1259
+    1259 1310 1260
+    1309 1310 1259
+    1260 1311 1261
+    1311 1262 1261
+    1262 1313 1263
+    1313 1264 1263
+    1264 1315 1265
+    1314 1315 1264
+    1265 1316 1266
+    1266 1317 1267
+    1267 1318 1268
+    1268 1319 1269
+    1269 1320 1270
+    1270 1321 1271
+    1271 1322 1272
+    1321 1322 1271
+    1272 1323 1273
+    1323 1274 1273
+    1274 1325 1275
+    1275 1326 1276
+    1276 1327 1277
+    1277 1328 1278
+    1278 1329 1279
+    1279 1330 1280
+    1280 1331 1281
+    1281 1332 1282
+    1282 1333 1283
+    1283 1334 1284
+    1284 1335 1285
+    1334 1335 1284
+    1285 1336 1286
+    1286 1337 1287
+    1337 1288 1287
+    1288 1339 1289
+    1338 1339 1288
+    1289 1340 1290
+    1290 1341 1291
+    1291 1342 1292
+    1292 1343 1293
+    1294 1345 1295
+    1295 1346 1296
+    1346 1297 1296
+    1346 1347 1297
+    1297 1348 1298
+    1300 1301 1250
+    1301 1302 1251
+    1302 1303 1252
+    1304 1305 1254
+    1305 1306 1256
+    1306 1307 1256
+    1307 1308 1257
+    1308 1309 1258
+    1310 1311 1260
+    1311 1312 1262
+    1312 1313 1262
+    1313 1314 1264
+    1317 1318 1267
+    1323 1324 1274
+    1325 1326 1275
+    1331 1332 1281
+    1332 1333 1282
+    1333 1334 1283
+    1337 1338 1288
+    1342 1343 1292
+    1343 1344 1294
+    1348 1349 1299
+    1303 1304 1253
+    1315 1316 1265
+    1316 1317 1266
+    1318 1319 1268
+    1319 1320 1269
+    1320 1321 1270
+    1326 1327 1276
+    1327 1328 1277
+    1328 1329 1278
+    1329 1330 1279
+    1335 1336 1285
+    1336 1337 1286
+    1344 1345 1294
+    1345 1346 1295
+    1347 1348 1297
+    1322 1323 1272
+    1324 1325 1274
+    1330 1331 1280
+    1339 1340 1289
+    1340 1341 1290
+    1341 1342 1291
+    1319 1370 1320
+    1325 1376 1326
+    1329 1380 1330
+    1379 1380 1329
+    1334 1385 1335
+    1384 1385 1334
+    1387 1338 1337
+    1388 1339 1338
+    1339 1390 1340
+    1389 1390 1339
+    1393 1344 1343
+    1396 1347 1346
+    1396 1397 1347
+    1398 1349 1348
+    1300 1351 1301
+    1350 1351 1300
+    1301 1352 1302
+    1351 1352 1301
+    1302 1353 1303
+    1352 1353 1302
+    1303 1354 1304
+    1353 1354 1303
+    1304 1355 1305
+    1354 1355 1304
+    1305 1356 1306
+    1355 1356 1305
+    1306 1357 1307
+    1356 1357 1306
+    1307 1358 1308
+    1357 1358 1307
+    1308 1359 1309
+    1358 1359 1308
+    1309 1360 1310
+    1359 1360 1309
+    1310 1361 1311
+    1360 1361 1310
+    1311 1362 1312
+    1361 1362 1311
+    1312 1363 1313
+    1362 1363 1312
+    1313 1364 1314
+    1363 1364 1313
+    1314 1365 1315
+    1364 1365 1314
+    1315 1366 1316
+    1365 1366 1315
+    1316 1367 1317
+    1366 1367 1316
+    1317 1368 1318
+    1367 1368 1317
+    1318 1369 1319
+    1368 1369 1318
+    1369 1370 1319
+    1320 1371 1321
+    1370 1371 1320
+    1321 1372 1322
+    1371 1372 1321
+    1322 1373 1323
+    1372 1373 1322
+    1323 1374 1324
+    1373 1374 1323
+    1324 1375 1325
+    1326 1377 1327
+    1376 1377 1326
+    1327 1378 1328
+    1377 1378 1327
+    1328 1379 1329
+    1378 1379 1328
+    1330 1381 1331
+    1331 1382 1332
+    1332 1383 1333
+    1382 1383 1332
+    1333 1384 1334
+    1383 1384 1333
+    1335 1386 1336
+    1385 1386 1335
+    1336 1387 1337
+    1386 1387 1336
+    1387 1388 1338
+    1388 1389 1339
+    1340 1391 1341
+    1390 1391 1340
+    1341 1392 1342
+    1391 1392 1341
+    1342 1393 1343
+    1392 1393 1342
+    1393 1394 1344
+    1344 1395 1345
+    1394 1395 1344
+    1345 1396 1346
+    1395 1396 1345
+    1347 1398 1348
+    1397 1398 1347
+    1398 1399 1349
+    1374 1375 1324
+    1375 1376 1325
+    1380 1381 1330
+    1381 1382 1331
+    1369 1420 1370
+    1375 1426 1376
+    1379 1430 1380
+    1384 1435 1385
+    1437 1388 1387
+    1438 1389 1388
+    1389 1440 1390
+    1443 1394 1393
+    1446 1397 1396
+    1446 1447 1397
+    1448 1399 1398
+    1350 1401 1351
+    1400 1401 1350
+    1351 1402 1352
+    1352 1403 1353
+    1402 1403 1352
+    1353 1404 1354
+    1403 1404 1353
+    1354 1405 1355
+    1404 1405 1354
+    1355 1406 1356
+    1405 1406 1355
+    1356 1407 1357
+    1406 1407 1356
+    1357 1408 1358
+    1407 1408 1357
+    1358 1409 1359
+    1408 1409 1358
+    1359 1410 1360
+    1409 1410 1359
+    1360 1411 1361
+    1410 1411 1360
+    1361 1412 1362
+    1411 1412 1361
+    1362 1413 1363
+    1412 1413 1362
+    1363 1414 1364
+    1413 1414 1363
+    1364 1415 1365
+    1414 1415 1364
+    1365 1416 1366
+    1415 1416 1365
+    1366 1417 1367
+    1416 1417 1366
+    1367 1418 1368
+    1417 1418 1367
+    1368 1419 1369
+    1418 1419 1368
+    1419 1420 1369
+    1370 1421 1371
+    1420 1421 1370
+    1371 1422 1372
+    1421 1422 1371
+    1372 1423 1373
+    1373 1424 1374
+    1374 1425 1375
+    1376 1427 1377
+    1426 1427 1376
+    1377 1428 1378
+    1427 1428 1377
+    1378 1429 1379
+    1428 1429 1378
+    1380 1431 1381
+    1381 1432 1382
+    1431 1432 1381
+    1382 1433 1383
+    1432 1433 1382
+    1383 1434 1384
+    1433 1434 1383
+    1385 1436 1386
+    1435 1436 1385
+    1386 1437 1387
+    1436 1437 1386
+    1437 1438 1388
+    1390 1441 1391
+    1391 1442 1392
+    1441 1442 1391
+    1392 1443 1393
+    1442 1443 1392
+    1394 1445 1395
+    1444 1445 1394
+    1395 1446 1396
+    1445 1446 1395
+    1397 1448 1398
+    1447 1448 1397
+    1401 1402 1351
+    1422 1423 1372
+    1423 1424 1373
+    1424 1425 1374
+    1430 1431 1380
+    1434 1435 1384
+    1439 1440 1389
+    1440 1441 1390
+    1438 1439 1389
+    1443 1444 1394
+    1448 1449 1399
+    1425 1426 1375
+    1429 1430 1379
+    1419 1470 1420
+    1425 1476 1426
+    1429 1480 1430
+    1434 1485 1435
+    1487 1438 1437
+    1488 1439 1438
+    1439 1490 1440
+    1493 1444 1443
+    1496 1447 1446
+    1496 1497 1447
+    1498 1449 1448
+    1400 1451 1401
+    1450 1451 1400
+    1401 1452 1402
+    1451 1452 1401
+    1402 1453 1403
+    1452 1453 1402
+    1403 1454 1404
+    1453 1454 1403
+    1404 1455 1405
+    1454 1455 1404
+    1405 1456 1406
+    1455 1456 1405
+    1406 1457 1407
+    1456 1457 1406
+    1407 1458 1408
+    1457 1458 1407
+    1408 1459 1409
+    1458 1459 1408
+    1409 1460 1410
+    1459 1460 1409
+    1410 1461 1411
+    1460 1461 1410
+    1411 1462 1412
+    1461 1462 1411
+    1412 1463 1413
+    1462 1463 1412
+    1413 1464 1414
+    1463 1464 1413
+    1414 1465 1415
+    1464 1465 1414
+    1415 1466 1416
+    1465 1466 1415
+    1416 1467 1417
+    1466 1467 1416
+    1417 1468 1418
+    1467 1468 1417
+    1418 1469 1419
+    1468 1469 1418
+    1469 1470 1419
+    1420 1471 1421
+    1470 1471 1420
+    1421 1472 1422
+    1471 1472 1421
+    1422 1473 1423
+    1423 1474 1424
+    1424 1475 1425
+    1474 1475 1424
+    1426 1477 1427
+    1476 1477 1426
+    1427 1478 1428
+    1477 1478 1427
+    1428 1479 1429
+    1478 1479 1428
+    1430 1481 1431
+    1480 1481 1430
+    1431 1482 1432
+    1481 1482 1431
+    1432 1483 1433
+    1482 1483 1432
+    1433 1484 1434
+    1483 1484 1433
+    1435 1486 1436
+    1485 1486 1435
+    1436 1487 1437
+    1486 1487 1436
+    1487 1488 1438
+    1440 1491 1441
+    1490 1491 1440
+    1441 1492 1442
+    1491 1492 1441
+    1442 1493 1443
+    1492 1493 1442
+    1444 1495 1445
+    1494 1495 1444
+    1445 1496 1446
+    1495 1496 1445
+    1447 1498 1448
+    1497 1498 1447
+    1472 1473 1422
+    1473 1474 1423
+    1484 1485 1434
+    1489 1490 1439
+    1488 1489 1439
+    1493 1494 1444
+    1498 1499 1449
+    1475 1476 1425
+    1479 1480 1429
+    1543 1494 1493
+    1548 1499 1498
+    1450 1501 1451
+    1451 1502 1452
+    1452 1503 1453
+    1453 1504 1454
+    1454 1505 1455
+    1505 1456 1455
+    1456 1507 1457
+    1457 1508 1458
+    1458 1509 1459
+    1508 1509 1458
+    1459 1510 1460
+    1509 1510 1459
+    1460 1511 1461
+    1510 1511 1460
+    1511 1462 1461
+    1462 1513 1463
+    1512 1513 1462
+    1513 1464 1463
+    1464 1515 1465
+    1514 1515 1464
+    1465 1516 1466
+    1466 1517 1467
+    1467 1518 1468
+    1517 1518 1467
+    1468 1519 1469
+    1469 1520 1470
+    1470 1521 1471
+    1471 1522 1472
+    1472 1523 1473
+    1523 1474 1473
+    1474 1525 1475
+    1475 1526 1476
+    1476 1527 1477
+    1477 1528 1478
+    1478 1529 1479
+    1479 1530 1480
+    1480 1531 1481
+    1481 1532 1482
+    1482 1533 1483
+    1483 1534 1484
+    1484 1535 1485
+    1534 1535 1484
+    1485 1536 1486
+    1486 1537 1487
+    1537 1488 1487
+    1488 1539 1489
+    1489 1540 1490
+    1490 1541 1491
+    1491 1542 1492
+    1492 1543 1493
+    1542 1543 1492
+    1543 1544 1494
+    1494 1545 1495
+    1495 1546 1496
+    1546 1497 1496
+    1546 1547 1497
+    1497 1548 1498
+    1500 1501 1450
+    1501 1502 1451
+    1502 1503 1452
+    1503 1504 1453
+    1504 1505 1454
+    1505 1506 1456
+    1506 1507 1456
+    1507 1508 1457
+    1511 1512 1462
+    1513 1514 1464
+    1515 1516 1465
+    1519 1520 1469
+    1520 1521 1470
+    1521 1522 1471
+    1523 1524 1474
+    1526 1527 1476
+    1529 1530 1479
+    1536 1537 1486
+    1537 1538 1488
+    1538 1539 1488
+    1544 1545 1494
+    1545 1546 1495
+    1548 1549 1499
+    1516 1517 1466
+    1518 1519 1468
+    1522 1523 1472
+    1524 1525 1474
+    1525 1526 1475
+    1530 1531 1480
+    1531 1532 1481
+    1532 1533 1482
+    1533 1534 1483
+    1539 1540 1489
+    1540 1541 1490
+    1541 1542 1491
+    1527 1528 1477
+    1528 1529 1478
+    1535 1536 1485
+    1547 1548 1497
+    1519 1570 1520
+    1525 1576 1526
+    1529 1580 1530
+    1534 1585 1535
+    1587 1538 1537
+    1588 1539 1538
+    1539 1590 1540
+    1593 1544 1543
+    1596 1547 1546
+    1596 1597 1547
+    1598 1549 1548
+    1500 1551 1501
+    1550 1551 1500
+    1501 1552 1502
+    1502 1553 1503
+    1552 1553 1502
+    1503 1554 1504
+    1504 1555 1505
+    1554 1555 1504
+    1505 1556 1506
+    1555 1556 1505
+    1506 1557 1507
+    1556 1557 1506
+    1507 1558 1508
+    1508 1559 1509
+    1558 1559 1508
+    1509 1560 1510
+    1559 1560 1509
+    1510 1561 1511
+    1560 1561 1510
+    1511 1562 1512
+    1512 1563 1513
+    1562 1563 1512
+    1563 1514 1513
+    1514 1565 1515
+    1564 1565 1514
+    1515 1566 1516
+    1565 1566 1515
+    1516 1567 1517
+    1566 1567 1516
+    1517 1568 1518
+    1567 1568 1517
+    1518 1569 1519
+    1568 1569 1518
+    1520 1571 1521
+    1521 1572 1522
+    1571 1572 1521
+    1522 1573 1523
+    1572 1573 1522
+    1573 1524 1523
+    1573 1574 1524
+    1524 1575 1525
+    1574 1575 1524
+    1526 1577 1527
+    1527 1578 1528
+    1528 1579 1529
+    1578 1579 1528
+    1530 1581 1531
+    1580 1581 1530
+    1531 1582 1532
+    1581 1582 1531
+    1532 1583 1533
+    1582 1583 1532
+    1533 1584 1534
+    1583 1584 1533
+    1535 1586 1536
+    1585 1586 1535
+    1536 1587 1537
+    1586 1587 1536
+    1587 1588 1538
+    1588 1589 1539
+    1589 1590 1539
+    1540 1591 1541
+    1590 1591 1540
+    1541 1592 1542
+    1591 1592 1541
+    1542 1593 1543
+    1592 1593 1542
+    1593 1594 1544
+    1544 1595 1545
+    1594 1595 1544
+    1545 1596 1546
+    1547 1598 1548
+    1598 1599 1549
+    1551 1552 1501
+    1553 1554 1503
+    1557 1558 1507
+    1561 1562 1511
+    1563 1564 1514
+    1569 1570 1519
+    1570 1571 1520
+    1576 1577 1526
+    1577 1578 1527
+    1579 1580 1529
+    1584 1585 1534
+    1595 1596 1545
+    1597 1598 1547
+    1575 1576 1525
+    1569 1620 1570
+    1575 1626 1576
+    1625 1626 1575
+    1579 1630 1580
+    1584 1635 1585
+    1634 1635 1584
+    1637 1588 1587
+    1638 1589 1588
+    1589 1640 1590
+    1643 1594 1593
+    1646 1597 1596
+    1646 1647 1597
+    1648 1599 1598
+    1550 1601 1551
+    1600 1601 1550
+    1551 1602 1552
+    1601 1602 1551
+    1552 1603 1553
+    1602 1603 1552
+    1553 1604 1554
+    1554 1605 1555
+    1604 1605 1554
+    1555 1606 1556
+    1605 1606 1555
+    1556 1607 1557
+    1557 1608 1558
+    1607 1608 1557
+    1558 1609 1559
+    1608 1609 1558
+    1559 1610 1560
+    1609 1610 1559
+    1560 1611 1561
+    1610 1611 1560
+    1561 1612 1562
+    1611 1612 1561
+    1562 1613 1563
+    1612 1613 1562
+    1613 1564 1563
+    1613 1614 1564
+    1564 1615 1565
+    1614 1615 1564
+    1565 1616 1566
+    1615 1616 1565
+    1566 1617 1567
+    1616 1617 1566
+    1567 1618 1568
+    1617 1618 1567
+    1568 1619 1569
+    1618 1619 1568
+    1570 1621 1571
+    1571 1622 1572
+    1621 1622 1571
+    1572 1623 1573
+    1622 1623 1572
+    1623 1574 1573
+    1623 1624 1574
+    1574 1625 1575
+    1624 1625 1574
+    1576 1627 1577
+    1577 1628 1578
+    1627 1628 1577
+    1578 1629 1579
+    1628 1629 1578
+    1580 1631 1581
+    1630 1631 1580
+    1581 1632 1582
+    1631 1632 1581
+    1582 1633 1583
+    1632 1633 1582
+    1583 1634 1584
+    1633 1634 1583
+    1585 1636 1586
+    1635 1636 1585
+    1586 1637 1587
+    1636 1637 1586
+    1637 1638 1588
+    1638 1639 1589
+    1639 1640 1589
+    1590 1641 1591
+    1640 1641 1590
+    1591 1642 1592
+    1641 1642 1591
+    1592 1643 1593
+    1642 1643 1592
+    1643 1644 1594
+    1594 1645 1595
+    1595 1646 1596
+    1645 1646 1595
+    1597 1648 1598
+    1648 1649 1599
+    1603 1604 1553
+    1606 1607 1556
+    1619 1620 1569
+    1620 1621 1570
+    1626 1627 1576
+    1629 1630 1579
+    1644 1645 1594
+    1647 1648 1597
+    1619 1670 1620
+    1625 1676 1626
+    1629 1680 1630
+    1634 1685 1635
+    1687 1638 1637
+    1688 1639 1638
+    1639 1690 1640
+    1693 1644 1643
+    1696 1647 1646
+    1696 1697 1647
+    1698 1649 1648
+    1600 1651 1601
+    1650 1651 1600
+    1601 1652 1602
+    1602 1653 1603
+    1652 1653 1602
+    1603 1654 1604
+    1653 1654 1603
+    1604 1655 1605
+    1654 1655 1604
+    1605 1656 1606
+    1606 1657 1607
+    1656 1657 1606
+    1607 1658 1608
+    1657 1658 1607
+    1608 1659 1609
+    1609 1660 1610
+    1659 1660 1609
+    1610 1661 1611
+    1611 1662 1612
+    1661 1662 1611
+    1612 1663 1613
+    1663 1614 1613
+    1663 1664 1614
+    1614 1665 1615
+    1664 1665 1614
+    1615 1666 1616
+    1616 1667 1617
+    1617 1668 1618
+    1667 1668 1617
+    1618 1669 1619
+    1620 1671 1621
+    1670 1671 1620
+    1621 1672 1622
+    1671 1672 1621
+    1622 1673 1623
+    1672 1673 1622
+    1673 1624 1623
+    1673 1674 1624
+    1624 1675 1625
+    1674 1675 1624
+    1626 1677 1627
+    1676 1677 1626
+    1627 1678 1628
+    1677 1678 1627
+    1628 1679 1629
+    1678 1679 1628
+    1630 1681 1631
+    1680 1681 1630
+    1631 1682 1632
+    1681 1682 1631
+    1632 1683 1633
+    1682 1683 1632
+    1633 1684 1634
+    1683 1684 1633
+    1635 1686 1636
+    1636 1687 1637
+    1686 1687 1636
+    1687 1688 1638
+    1640 1691 1641
+    1641 1692 1642
+    1691 1692 1641
+    1642 1693 1643
+    1692 1693 1642
+    1644 1695 1645
+    1645 1696 1646
+    1647 1698 1648
+    1697 1698 1647
+    1651 1652 1601
+    1655 1656 1605
+    1658 1659 1608
+    1660 1661 1610
+    1662 1663 1612
+    1665 1666 1615
+    1666 1667 1616
+    1668 1669 1618
+    1669 1670 1619
+    1675 1676 1625
+    1685 1686 1635
+    1694 1695 1644
+    1695 1696 1645
+    1688 1689 1639
+    1689 1690 1639
+    1690 1691 1640
+    1693 1694 1644
+    1698 1699 1649
+    1679 1680 1629
+    1684 1685 1634
+    1669 1720 1670
+    1675 1726 1676
+    1679 1730 1680
+    1684 1735 1685
+    1737 1688 1687
+    1738 1689 1688
+    1689 1740 1690
+    1743 1694 1693
+    1746 1697 1696
+    1746 1747 1697
+    1748 1699 1698
+    1650 1701 1651
+    1700 1701 1650
+    1651 1702 1652
+    1701 1702 1651
+    1652 1703 1653
+    1702 1703 1652
+    1653 1704 1654
+    1703 1704 1653
+    1654 1705 1655
+    1704 1705 1654
+    1655 1706 1656
+    1705 1706 1655
+    1656 1707 1657
+    1706 1707 1656
+    1657 1708 1658
+    1707 1708 1657
+    1658 1709 1659
+    1708 1709 1658
+    1659 1710 1660
+    1709 1710 1659
+    1660 1711 1661
+    1661 1712 1662
+    1711 1712 1661
+    1662 1713 1663
+    1713 1664 1663
+    1713 1714 1664
+    1664 1715 1665
+    1714 1715 1664
+    1665 1716 1666
+    1666 1717 1667
+    1667 1718 1668
+    1717 1718 1667
+    1668 1719 1669
+    1670 1721 1671
+    1720 1721 1670
+    1671 1722 1672
+    1721 1722 1671
+    1672 1723 1673
+    1722 1723 1672
+    1723 1674 1673
+    1723 1724 1674
+    1674 1725 1675
+    1724 1725 1674
+    1676 1727 1677
+    1726 1727 1676
+    1677 1728 1678
+    1727 1728 1677
+    1678 1729 1679
+    1728 1729 1678
+    1680 1731 1681
+    1730 1731 1680
+    1681 1732 1682
+    1731 1732 1681
+    1682 1733 1683
+    1732 1733 1682
+    1683 1734 1684
+    1733 1734 1683
+    1685 1736 1686
+    1735 1736 1685
+    1686 1737 1687
+    1736 1737 1686
+    1737 1738 1688
+    1690 1741 1691
+    1740 1741 1690
+    1691 1742 1692
+    1741 1742 1691
+    1692 1743 1693
+    1742 1743 1692
+    1694 1745 1695
+    1695 1746 1696
+    1697 1748 1698
+    1747 1748 1697
+    1710 1711 1660
+    1712 1713 1662
+    1715 1716 1665
+    1716 1717 1666
+    1718 1719 1668
+    1719 1720 1669
+    1725 1726 1675
+    1744 1745 1694
+    1745 1746 1695
+    1738 1739 1689
+    1739 1740 1689
+    1743 1744 1694
+    1748 1749 1699
+    1729 1730 1679
+    1734 1735 1684
+    1793 1744 1743
+    1798 1749 1748
+    1700 1751 1701
+    1701 1752 1702
+    1702 1753 1703
+    1703 1754 1704
+    1753 1754 1703
+    1704 1755 1705
+    1754 1755 1704
+    1755 1706 1705
+    1755 1756 1706
+    1706 1757 1707
+    1707 1758 1708
+    1708 1759 1709
+    1758 1759 1708
+    1709 1760 1710
+    1759 1760 1709
+    1710 1761 1711
+    1761 1712 1711
+    1712 1763 1713
+    1763 1714 1713
+    1714 1765 1715
+    1715 1766 1716
+    1716 1767 1717
+    1717 1768 1718
+    1767 1768 1717
+    1718 1769 1719
+    1719 1770 1720
+    1769 1770 1719
+    1720 1771 1721
+    1721 1772 1722
+    1722 1773 1723
+    1773 1724 1723
+    1724 1775 1725
+    1725 1776 1726
+    1775 1776 1725
+    1726 1777 1727
+    1727 1778 1728
+    1728 1779 1729
+    1729 1780 1730
+    1779 1780 1729
+    1730 1781 1731
+    1731 1782 1732
+    1781 1782 1731
+    1732 1783 1733
+    1733 1784 1734
+    1734 1785 1735
+    1735 1786 1736
+    1736 1787 1737
+    1787 1738 1737
+    1738 1789 1739
+    1788 1789 1738
+    1739 1790 1740
+    1740 1791 1741
+    1741 1792 1742
+    1742 1793 1743
+    1793 1794 1744
+    1744 1795 1745
+    1745 1796 1746
+    1796 1747 1746
+    1796 1797 1747
+    1747 1798 1748
+    1750 1751 1700
+    1751 1752 1701
+    1752 1753 1702
+    1756 1757 1706
+    1757 1758 1707
+    1760 1761 1710
+    1761 1762 1712
+    1763 1764 1714
+    1764 1765 1714
+    1768 1769 1718
+    1771 1772 1721
+    1773 1774 1724
+    1776 1777 1726
+    1777 1778 1727
+    1778 1779 1728
+    1784 1785 1734
+    1785 1786 1735
+    1786 1787 1736
+    1787 1788 1738
+    1797 1798 1747
+    1798 1799 1749
+    1762 1763 1712
+    1765 1766 1715
+    1766 1767 1716
+    1770 1771 1720
+    1772 1773 1722
+    1774 1775 1724
+    1780 1781 1730
+    1782 1783 1732
+    1783 1784 1733
+    1790 1791 1740
+    1791 1792 1741
+    1792 1793 1742
+    1789 1790 1739
+    1794 1795 1744
+    1795 1796 1745
+    1769 1820 1770
+    1775 1826 1776
+    1779 1830 1780
+    1784 1835 1785
+    1834 1835 1784
+    1837 1788 1787
+    1838 1789 1788
+    1789 1840 1790
+    1843 1794 1793
+    1846 1797 1796
+    1848 1799 1798
+    1750 1801 1751
+    1800 1801 1750
+    1751 1802 1752
+    1752 1803 1753
+    1753 1804 1754
+    1803 1804 1753
+    1754 1805 1755
+    1804 1805 1754
+    1755 1806 1756
+    1805 1806 1755
+    1756 1807 1757
+    1806 1807 1756
+    1757 1808 1758
+    1807 1808 1757
+    1758 1809 1759
+    1759 1810 1760
+    1809 1810 1759
+    1760 1811 1761
+    1761 1812 1762
+    1811 1812 1761
+    1762 1813 1763
+    1812 1813 1762
+    1763 1814 1764
+    1813 1814 1763
+    1764 1815 1765
+    1814 1815 1764
+    1765 1816 1766
+    1766 1817 1767
+    1767 1818 1768
+    1817 1818 1767
+    1768 1819 1769
+    1818 1819 1768
+    1819 1820 1769
+    1770 1821 1771
+    1820 1821 1770
+    1771 1822 1772
+    1821 1822 1771
+    1772 1823 1773
+    1773 1824 1774
+    1823 1824 1773
+    1774 1825 1775
+    1824 1825 1774
+    1776 1827 1777
+    1826 1827 1776
+    1777 1828 1778
+    1827 1828 1777
+    1778 1829 1779
+    1828 1829 1778
+    1780 1831 1781
+    1830 1831 1780
+    1781 1832 1782
+    1831 1832 1781
+    1782 1833 1783
+    1783 1834 1784
+    1833 1834 1783
+    1785 1836 1786
+    1835 1836 1785
+    1786 1837 1787
+    1836 1837 1786
+    1837 1838 1788
+    1838 1839 1789
+    1790 1841 1791
+    1791 1842 1792
+    1792 1843 1793
+    1843 1844 1794
+    1794 1845 1795
+    1844 1845 1794
+    1795 1846 1796
+    1845 1846 1795
+    1846 1847 1797
+    1797 1848 1798
+    1847 1848 1797
+    1848 1849 1799
+    1801 1802 1751
+    1802 1803 1752
+    1808 1809 1758
+    1810 1811 1760
+    1815 1816 1765
+    1816 1817 1766
+    1822 1823 1772
+    1825 1826 1775
+    1832 1833 1782
+    1839 1840 1789
+    1840 1841 1790
+    1841 1842 1791
+    1842 1843 1792
+    1829 1830 1779
+    1819 1870 1820
+    1825 1876 1826
+    1829 1880 1830
+    1879 1880 1829
+    1834 1885 1835
+    1884 1885 1834
+    1887 1838 1837
+    1888 1839 1838
+    1839 1890 1840
+    1893 1844 1843
+    1896 1847 1846
+    1896 1897 1847
+    1898 1849 1848
+    1800 1851 1801
+    1850 1851 1800
+    1801 1852 1802
+    1802 1853 1803
+    1852 1853 1802
+    1803 1854 1804
+    1853 1854 1803
+    1804 1855 1805
+    1854 1855 1804
+    1805 1856 1806
+    1855 1856 1805
+    1806 1857 1807
+    1856 1857 1806
+    1807 1858 1808
+    1857 1858 1807
+    1808 1859 1809
+    1858 1859 1808
+    1809 1860 1810
+    1859 1860 1809
+    1810 1861 1811
+    1811 1862 1812
+    1861 1862 1811
+    1812 1863 1813
+    1862 1863 1812
+    1813 1864 1814
+    1863 1864 1813
+    1814 1865 1815
+    1864 1865 1814
+    1815 1866 1816
+    1816 1867 1817
+    1866 1867 1816
+    1817 1868 1818
+    1867 1868 1817
+    1818 1869 1819
+    1868 1869 1818
+    1869 1870 1819
+    1820 1871 1821
+    1870 1871 1820
+    1821 1872 1822
+    1871 1872 1821
+    1822 1873 1823
+    1872 1873 1822
+    1823 1874 1824
+    1873 1874 1823
+    1824 1875 1825
+    1874 1875 1824
+    1826 1877 1827
+    1876 1877 1826
+    1827 1878 1828
+    1877 1878 1827
+    1828 1879 1829
+    1878 1879 1828
+    1830 1881 1831
+    1880 1881 1830
+    1831 1882 1832
+    1881 1882 1831
+    1832 1883 1833
+    1882 1883 1832
+    1833 1884 1834
+    1883 1884 1833
+    1835 1886 1836
+    1885 1886 1835
+    1836 1887 1837
+    1886 1887 1836
+    1887 1888 1838
+    1888 1889 1839
+    1840 1891 1841
+    1841 1892 1842
+    1842 1893 1843
+    1893 1894 1844
+    1844 1895 1845
+    1894 1895 1844
+    1845 1896 1846
+    1895 1896 1845
+    1847 1898 1848
+    1897 1898 1847
+    1898 1899 1849
+    1851 1852 1801
+    1860 1861 1810
+    1865 1866 1815
+    1875 1876 1825
+    1889 1890 1839
+    1890 1891 1840
+    1891 1892 1841
+    1892 1893 1842
+    1943 1894 1893
+    1948 1899 1898
+    1869 1920 1870
+    1919 1920 1869
+    1875 1926 1876
+    1925 1926 1875
+    1879 1930 1880
+    1929 1930 1879
+    1884 1935 1885
+    1934 1935 1884
+    1937 1888 1887
+    1937 1938 1888
+    1938 1889 1888
+    1938 1939 1889
+    1889 1940 1890
+    1943 1944 1894
+    1946 1897 1896
+    1946 1947 1897
+    1948 1949 1899
+    1850 1901 1851
+    1900 1901 1850
+    1851 1902 1852
+    1901 1902 1851
+    1852 1903 1853
+    1902 1903 1852
+    1853 1904 1854
+    1903 1904 1853
+    1854 1905 1855
+    1904 1905 1854
+    1855 1906 1856
+    1905 1906 1855
+    1856 1907 1857
+    1906 1907 1856
+    1857 1908 1858
+    1907 1908 1857
+    1858 1909 1859
+    1908 1909 1858
+    1859 1910 1860
+    1909 1910 1859
+    1860 1911 1861
+    1910 1911 1860
+    1861 1912 1862
+    1911 1912 1861
+    1862 1913 1863
+    1912 1913 1862
+    1863 1914 1864
+    1913 1914 1863
+    1864 1915 1865
+    1914 1915 1864
+    1865 1916 1866
+    1915 1916 1865
+    1866 1917 1867
+    1916 1917 1866
+    1867 1918 1868
+    1917 1918 1867
+    1868 1919 1869
+    1918 1919 1868
+    1870 1921 1871
+    1920 1921 1870
+    1871 1922 1872
+    1921 1922 1871
+    1872 1923 1873
+    1922 1923 1872
+    1873 1924 1874
+    1923 1924 1873
+    1874 1925 1875
+    1924 1925 1874
+    1876 1927 1877
+    1926 1927 1876
+    1877 1928 1878
+    1927 1928 1877
+    1878 1929 1879
+    1928 1929 1878
+    1880 1931 1881
+    1930 1931 1880
+    1881 1932 1882
+    1931 1932 1881
+    1882 1933 1883
+    1932 1933 1882
+    1883 1934 1884
+    1933 1934 1883
+    1885 1936 1886
+    1935 1936 1885
+    1886 1937 1887
+    1936 1937 1886
+    1939 1940 1889
+    1890 1941 1891
+    1940 1941 1890
+    1891 1942 1892
+    1941 1942 1891
+    1892 1943 1893
+    1942 1943 1892
+    1894 1945 1895
+    1944 1945 1894
+    1895 1946 1896
+    1945 1946 1895
+    1897 1948 1898
+    1947 1948 1897
+    1919 1970 1920
+    1925 1976 1926
+    1975 1976 1925
+    1929 1980 1930
+    1934 1985 1935
+    1984 1985 1934
+    1987 1938 1937
+    1987 1988 1938
+    1988 1939 1938
+    1988 1989 1939
+    1939 1990 1940
+    1989 1990 1939
+    1993 1944 1943
+    1993 1994 1944
+    1996 1947 1946
+    1996 1997 1947
+    1998 1949 1948
+    1998 1999 1949
+    1900 1951 1901
+    1950 1951 1900
+    1901 1952 1902
+    1951 1952 1901
+    1902 1953 1903
+    1952 1953 1902
+    1903 1954 1904
+    1953 1954 1903
+    1904 1955 1905
+    1954 1955 1904
+    1905 1956 1906
+    1955 1956 1905
+    1906 1957 1907
+    1956 1957 1906
+    1907 1958 1908
+    1957 1958 1907
+    1908 1959 1909
+    1958 1959 1908
+    1909 1960 1910
+    1959 1960 1909
+    1910 1961 1911
+    1960 1961 1910
+    1911 1962 1912
+    1912 1963 1913
+    1962 1963 1912
+    1963 1914 1913
+    1963 1964 1914
+    1914 1965 1915
+    1964 1965 1914
+    1915 1966 1916
+    1965 1966 1915
+    1916 1967 1917
+    1966 1967 1916
+    1917 1968 1918
+    1967 1968 1917
+    1918 1969 1919
+    1968 1969 1918
+    1969 1970 1919
+    1920 1971 1921
+    1921 1972 1922
+    1971 1972 1921
+    1922 1973 1923
+    1973 1924 1923
+    1973 1974 1924
+    1924 1975 1925
+    1974 1975 1924
+    1926 1977 1927
+    1976 1977 1926
+    1927 1978 1928
+    1977 1978 1927
+    1928 1979 1929
+    1978 1979 1928
+    1979 1980 1929
+    1930 1981 1931
+    1980 1981 1930
+    1931 1982 1932
+    1981 1982 1931
+    1932 1983 1933
+    1982 1983 1932
+    1933 1984 1934
+    1983 1984 1933
+    1935 1986 1936
+    1985 1986 1935
+    1936 1987 1937
+    1986 1987 1936
+    1940 1991 1941
+    1990 1991 1940
+    1941 1992 1942
+    1991 1992 1941
+    1942 1993 1943
+    1992 1993 1942
+    1944 1995 1945
+    1994 1995 1944
+    1945 1996 1946
+    1995 1996 1945
+    1947 1998 1948
+    1997 1998 1947
+    1961 1962 1911
+    1970 1971 1920
+    1972 1973 1922
+    2043 1994 1993
+    2048 1999 1998
+    1950 2001 1951
+    1951 2002 1952
+    1952 2003 1953
+    1953 2004 1954
+    1954 2005 1955
+    2005 1956 1955
+    1956 2007 1957
+    1957 2008 1958
+    1958 2009 1959
+    1959 2010 1960
+    1960 2011 1961
+    2011 1962 1961
+    1962 2013 1963
+    2013 1964 1963
+    1964 2015 1965
+    1965 2016 1966
+    1966 2017 1967
+    1967 2018 1968
+    1968 2019 1969
+    1969 2020 1970
+    1970 2021 1971
+    1971 2022 1972
+    1972 2023 1973
+    2023 1974 1973
+    1974 2025 1975
+    1975 2026 1976
+    1976 2027 1977
+    2026 2027 1976
+    1977 2028 1978
+    1978 2029 1979
+    1979 2030 1980
+    2029 2030 1979
+    1980 2031 1981
+    1981 2032 1982
+    1982 2033 1983
+    1983 2034 1984
+    1984 2035 1985
+    1985 2036 1986
+    1986 2037 1987
+    2037 1988 1987
+    1988 2039 1989
+    2038 2039 1988
+    1989 2040 1990
+    1990 2041 1991
+    1991 2042 1992
+    1992 2043 1993
+    2043 2044 1994
+    1994 2045 1995
+    1995 2046 1996
+    2046 1997 1996
+    1997 2048 1998
+    2048 2049 1999
+    2000 2001 1950
+    2003 2004 1953
+    2005 2006 1956
+    2006 2007 1956
+    2007 2008 1957
+    2008 2009 1958
+    2009 2010 1959
+    2010 2011 1960
+    2011 2012 1962
+    2012 2013 1962
+    2015 2016 1965
+    2016 2017 1966
+    2019 2020 1969
+    2020 2021 1970
+    2021 2022 1971
+    2022 2023 1972
+    2023 2024 1974
+    2024 2025 1974
+    2025 2026 1975
+    2030 2031 1980
+    2031 2032 1981
+    2040 2041 1990
+    2041 2042 1991
+    2042 2043 1992
+    2046 2047 1997
+    2001 2002 1951
+    2002 2003 1952
+    2004 2005 1954
+    2013 2014 1964
+    2014 2015 1964
+    2017 2018 1967
+    2018 2019 1968
+    2027 2028 1977
+    2028 2029 1978
+    2034 2035 1984
+    2035 2036 1985
+    2036 2037 1986
+    2037 2038 1988
+    2044 2045 1994
+    2045 2046 1995
+    2032 2033 1982
+    2033 2034 1983
+    2039 2040 1989
+    2047 2048 1997
+    2019 2070 2020
+    2025 2076 2026
+    2029 2080 2030
+    2034 2085 2035
+    2087 2038 2037
+    2088 2039 2038
+    2039 2090 2040
+    2093 2044 2043
+    2096 2047 2046
+    2098 2049 2048
+    2000 2051 2001
+    2050 2051 2000
+    2001 2052 2002
+    2002 2053 2003
+    2052 2053 2002
+    2003 2054 2004
+    2004 2055 2005
+    2005 2056 2006
+    2055 2056 2005
+    2006 2057 2007
+    2056 2057 2006
+    2007 2058 2008
+    2057 2058 2007
+    2008 2059 2009
+    2058 2059 2008
+    2009 2060 2010
+    2059 2060 2009
+    2010 2061 2011
+    2060 2061 2010
+    2011 2062 2012
+    2012 2063 2013
+    2062 2063 2012
+    2063 2014 2013
+    2063 2064 2014
+    2014 2065 2015
+    2015 2066 2016
+    2016 2067 2017
+    2017 2068 2018
+    2018 2069 2019
+    2068 2069 2018
+    2020 2071 2021
+    2070 2071 2020
+    2021 2072 2022
+    2071 2072 2021
+    2022 2073 2023
+    2072 2073 2022
+    2073 2024 2023
+    2024 2075 2025
+    2074 2075 2024
+    2026 2077 2027
+    2076 2077 2026
+    2027 2078 2028
+    2028 2079 2029
+    2078 2079 2028
+    2030 2081 2031
+    2080 2081 2030
+    2031 2082 2032
+    2081 2082 2031
+    2032 2083 2033
+    2033 2084 2034
+    2083 2084 2033
+    2035 2086 2036
+    2036 2087 2037
+    2087 2088 2038
+    2088 2089 2039
+    2089 2090 2039
+    2040 2091 2041
+    2090 2091 2040
+    2041 2092 2042
+    2091 2092 2041
+    2042 2093 2043
+    2092 2093 2042
+    2044 2095 2045
+    2045 2096 2046
+    2095 2096 2045
+    2096 2097 2047
+    2047 2098 2048
+    2051 2052 2001
+    2053 2054 2003
+    2054 2055 2004
+    2061 2062 2011
+    2064 2065 2014
+    2065 2066 2015
+    2066 2067 2016
+    2067 2068 2017
+    2069 2070 2019
+    2073 2074 2024
+    2077 2078 2027
+    2079 2080 2029
+    2084 2085 2034
+    2085 2086 2035
+    2086 2087 2036
+    2093 2094 2044
+    2094 2095 2044
+    2098 2099 2049
+    2075 2076 2025
+    2082 2083 2032
+    2097 2098 2047
+    2069 2120 2070
+    2119 2120 2069
+    2075 2126 2076
+    2079 2130 2080
+    2084 2135 2085
+    2137 2088 2087
+    2138 2089 2088
+    2089 2140 2090
+    2143 2094 2093
+    2146 2097 2096
+    2146 2147 2097
+    2148 2099 2098
+    2050 2101 2051
+    2100 2101 2050
+    2051 2102 2052
+    2101 2102 2051
+    2052 2103 2053
+    2102 2103 2052
+    2053 2104 2054
+    2054 2105 2055
+    2104 2105 2054
+    2055 2106 2056
+    2105 2106 2055
+    2056 2107 2057
+    2106 2107 2056
+    2057 2108 2058
+    2107 2108 2057
+    2058 2109 2059
+    2108 2109 2058
+    2059 2110 2060
+    2109 2110 2059
+    2060 2111 2061
+    2110 2111 2060
+    2061 2112 2062
+    2111 2112 2061
+    2062 2113 2063
+    2112 2113 2062
+    2113 2064 2063
+    2113 2114 2064
+    2064 2115 2065
+    2065 2116 2066
+    2066 2117 2067
+    2067 2118 2068
+    2068 2119 2069
+    2118 2119 2068
+    2070 2121 2071
+    2120 2121 2070
+    2071 2122 2072
+    2121 2122 2071
+    2072 2123 2073
+    2122 2123 2072
+    2123 2074 2073
+    2123 2124 2074
+    2074 2125 2075
+    2124 2125 2074
+    2076 2127 2077
+    2126 2127 2076
+    2077 2128 2078
+    2127 2128 2077
+    2078 2129 2079
+    2128 2129 2078
+    2080 2131 2081
+    2130 2131 2080
+    2081 2132 2082
+    2131 2132 2081
+    2082 2133 2083
+    2132 2133 2082
+    2083 2134 2084
+    2133 2134 2083
+    2085 2136 2086
+    2086 2137 2087
+    2137 2138 2088
+    2138 2139 2089
+    2139 2140 2089
+    2090 2141 2091
+    2140 2141 2090
+    2091 2142 2092
+    2141 2142 2091
+    2092 2143 2093
+    2142 2143 2092
+    2143 2144 2094
+    2094 2145 2095
+    2144 2145 2094
+    2095 2146 2096
+    2145 2146 2095
+    2097 2148 2098
+    2148 2149 2099
+    2103 2104 2053
+    2114 2115 2064
+    2115 2116 2065
+    2116 2117 2066
+    2117 2118 2067
+    2129 2130 2079
+    2134 2135 2084
+    2135 2136 2085
+    2136 2137 2086
+    2147 2148 2097
+    2125 2126 2075
+    2119 2170 2120
+    2169 2170 2119
+    2125 2176 2126
+    2129 2180 2130
+    2134 2185 2135
+    2187 2138 2137
+    2188 2139 2138
+    2139 2190 2140
+    2193 2144 2143
+    2196 2147 2146
+    2196 2197 2147
+    2198 2149 2148
+    2100 2151 2101
+    2150 2151 2100
+    2101 2152 2102
+    2151 2152 2101
+    2102 2153 2103
+    2152 2153 2102
+    2103 2154 2104
+    2153 2154 2103
+    2104 2155 2105
+    2154 2155 2104
+    2105 2156 2106
+    2155 2156 2105
+    2106 2157 2107
+    2156 2157 2106
+    2107 2158 2108
+    2157 2158 2107
+    2108 2159 2109
+    2158 2159 2108
+    2109 2160 2110
+    2159 2160 2109
+    2110 2161 2111
+    2160 2161 2110
+    2111 2162 2112
+    2161 2162 2111
+    2112 2163 2113
+    2162 2163 2112
+    2163 2114 2113
+    2163 2164 2114
+    2114 2165 2115
+    2115 2166 2116
+    2116 2167 2117
+    2166 2167 2116
+    2117 2168 2118
+    2167 2168 2117
+    2118 2169 2119
+    2168 2169 2118
+    2120 2171 2121
+    2170 2171 2120
+    2121 2172 2122
+    2171 2172 2121
+    2122 2173 2123
+    2172 2173 2122
+    2173 2124 2123
+    2173 2174 2124
+    2124 2175 2125
+    2174 2175 2124
+    2126 2177 2127
+    2176 2177 2126
+    2127 2178 2128
+    2177 2178 2127
+    2128 2179 2129
+    2178 2179 2128
+    2179 2180 2129
+    2130 2181 2131
+    2180 2181 2130
+    2131 2182 2132
+    2181 2182 2131
+    2132 2183 2133
+    2182 2183 2132
+    2133 2184 2134
+    2183 2184 2133
+    2135 2186 2136
+    2136 2187 2137
+    2187 2188 2138
+    2189 2190 2139
+    2140 2191 2141
+    2190 2191 2140
+    2141 2192 2142
+    2191 2192 2141
+    2142 2193 2143
+    2192 2193 2142
+    2144 2195 2145
+    2194 2195 2144
+    2145 2196 2146
+    2195 2196 2145
+    2147 2198 2148
+    2164 2165 2114
+    2165 2166 2115
+    2175 2176 2125
+    2185 2186 2135
+    2186 2187 2136
+    2197 2198 2147
+    2188 2189 2139
+    2193 2194 2144
+    2198 2199 2149
+    2184 2185 2134
+    2243 2194 2193
+    2243 2244 2194
+    2248 2199 2198
+    2248 2249 2199
+    2169 2220 2170
+    2219 2220 2169
+    2175 2226 2176
+    2225 2226 2175
+    2179 2230 2180
+    2229 2230 2179
+    2184 2235 2185
+    2234 2235 2184
+    2237 2188 2187
+    2237 2238 2188
+    2238 2189 2188
+    2238 2239 2189
+    2189 2240 2190
+    2239 2240 2189
+    2246 2197 2196
+    2246 2247 2197
+    2150 2201 2151
+    2200 2201 2150
+    2151 2202 2152
+    2201 2202 2151
+    2152 2203 2153
+    2202 2203 2152
+    2153 2204 2154
+    2203 2204 2153
+    2154 2205 2155
+    2204 2205 2154
+    2155 2206 2156
+    2205 2206 2155
+    2156 2207 2157
+    2206 2207 2156
+    2157 2208 2158
+    2207 2208 2157
+    2158 2209 2159
+    2208 2209 2158
+    2159 2210 2160
+    2209 2210 2159
+    2160 2211 2161
+    2210 2211 2160
+    2161 2212 2162
+    2211 2212 2161
+    2162 2213 2163
+    2212 2213 2162
+    2163 2214 2164
+    2213 2214 2163
+    2164 2215 2165
+    2214 2215 2164
+    2165 2216 2166
+    2215 2216 2165
+    2166 2217 2167
+    2216 2217 2166
+    2167 2218 2168
+    2217 2218 2167
+    2168 2219 2169
+    2218 2219 2168
+    2170 2221 2171
+    2220 2221 2170
+    2171 2222 2172
+    2221 2222 2171
+    2172 2223 2173
+    2222 2223 2172
+    2173 2224 2174
+    2223 2224 2173
+    2174 2225 2175
+    2224 2225 2174
+    2176 2227 2177
+    2226 2227 2176
+    2177 2228 2178
+    2227 2228 2177
+    2178 2229 2179
+    2228 2229 2178
+    2180 2231 2181
+    2230 2231 2180
+    2181 2232 2182
+    2231 2232 2181
+    2182 2233 2183
+    2232 2233 2182
+    2183 2234 2184
+    2233 2234 2183
+    2185 2236 2186
+    2235 2236 2185
+    2186 2237 2187
+    2236 2237 2186
+    2190 2241 2191
+    2240 2241 2190
+    2191 2242 2192
+    2241 2242 2191
+    2192 2243 2193
+    2242 2243 2192
+    2194 2245 2195
+    2244 2245 2194
+    2195 2246 2196
+    2245 2246 2195
+    2197 2248 2198
+    2247 2248 2197
+    2219 2270 2220
+    2225 2276 2226
+    2229 2280 2230
+    2279 2280 2229
+    2234 2285 2235
+    2287 2238 2237
+    2288 2239 2238
+    2239 2290 2240
+    2293 2244 2243
+    2296 2247 2246
+    2296 2297 2247
+    2298 2249 2248
+    2200 2251 2201
+    2250 2251 2200
+    2201 2252 2202
+    2251 2252 2201
+    2202 2253 2203
+    2252 2253 2202
+    2203 2254 2204
+    2253 2254 2203
+    2204 2255 2205
+    2254 2255 2204
+    2205 2256 2206
+    2255 2256 2205
+    2206 2257 2207
+    2256 2257 2206
+    2207 2258 2208
+    2257 2258 2207
+    2208 2259 2209
+    2258 2259 2208
+    2209 2260 2210
+    2259 2260 2209
+    2210 2261 2211
+    2260 2261 2210
+    2211 2262 2212
+    2261 2262 2211
+    2212 2263 2213
+    2262 2263 2212
+    2213 2264 2214
+    2214 2265 2215
+    2264 2265 2214
+    2215 2266 2216
+    2265 2266 2215
+    2216 2267 2217
+    2266 2267 2216
+    2217 2268 2218
+    2267 2268 2217
+    2218 2269 2219
+    2268 2269 2218
+    2269 2270 2219
+    2220 2271 2221
+    2270 2271 2220
+    2221 2272 2222
+    2222 2273 2223
+    2272 2273 2222
+    2223 2274 2224
+    2273 2274 2223
+    2224 2275 2225
+    2274 2275 2224
+    2226 2277 2227
+    2276 2277 2226
+    2227 2278 2228
+    2277 2278 2227
+    2228 2279 2229
+    2278 2279 2228
+    2230 2281 2231
+    2280 2281 2230
+    2231 2282 2232
+    2232 2283 2233
+    2233 2284 2234
+    2235 2286 2236
+    2285 2286 2235
+    2236 2287 2237
+    2286 2287 2236
+    2287 2288 2238
+    2288 2289 2239
+    2240 2291 2241
+    2241 2292 2242
+    2291 2292 2241
+    2242 2293 2243
+    2292 2293 2242
+    2293 2294 2244
+    2244 2295 2245
+    2294 2295 2244
+    2245 2296 2246
+    2295 2296 2245
+    2247 2298 2248
+    2263 2264 2213
+    2271 2272 2221
+    2275 2276 2225
+    2281 2282 2231
+    2282 2283 2232
+    2283 2284 2233
+    2289 2290 2239
+    2290 2291 2240
+    2298 2299 2249
+    2284 2285 2234
+    2297 2298 2247
+    2269 2320 2270
+    2275 2326 2276
+    2279 2330 2280
+    2329 2330 2279
+    2284 2335 2285
+    2337 2288 2287
+    2338 2289 2288
+    2289 2340 2290
+    2343 2294 2293
+    2346 2297 2296
+    2346 2347 2297
+    2348 2299 2298
+    2250 2301 2251
+    2300 2301 2250
+    2251 2302 2252
+    2301 2302 2251
+    2252 2303 2253
+    2302 2303 2252
+    2253 2304 2254
+    2303 2304 2253
+    2254 2305 2255
+    2304 2305 2254
+    2255 2306 2256
+    2305 2306 2255
+    2256 2307 2257
+    2306 2307 2256
+    2257 2308 2258
+    2307 2308 2257
+    2258 2309 2259
+    2308 2309 2258
+    2259 2310 2260
+    2309 2310 2259
+    2260 2311 2261
+    2310 2311 2260
+    2261 2312 2262
+    2311 2312 2261
+    2262 2313 2263
+    2312 2313 2262
+    2263 2314 2264
+    2313 2314 2263
+    2264 2315 2265
+    2314 2315 2264
+    2265 2316 2266
+    2315 2316 2265
+    2266 2317 2267
+    2316 2317 2266
+    2267 2318 2268
+    2317 2318 2267
+    2268 2319 2269
+    2318 2319 2268
+    2319 2320 2269
+    2270 2321 2271
+    2320 2321 2270
+    2271 2322 2272
+    2321 2322 2271
+    2272 2323 2273
+    2322 2323 2272
+    2273 2324 2274
+    2323 2324 2273
+    2274 2325 2275
+    2324 2325 2274
+    2276 2327 2277
+    2326 2327 2276
+    2277 2328 2278
+    2327 2328 2277
+    2278 2329 2279
+    2328 2329 2278
+    2280 2331 2281
+    2281 2332 2282
+    2331 2332 2281
+    2282 2333 2283
+    2283 2334 2284
+    2285 2336 2286
+    2335 2336 2285
+    2286 2337 2287
+    2336 2337 2286
+    2337 2338 2288
+    2338 2339 2289
+    2290 2341 2291
+    2340 2341 2290
+    2291 2342 2292
+    2341 2342 2291
+    2292 2343 2293
+    2342 2343 2292
+    2343 2344 2294
+    2294 2345 2295
+    2344 2345 2294
+    2295 2346 2296
+    2345 2346 2295
+    2297 2348 2298
+    2348 2349 2299
+    2325 2326 2275
+    2330 2331 2280
+    2332 2333 2282
+    2333 2334 2283
+    2339 2340 2289
+    2334 2335 2284
+    2347 2348 2297
+    2393 2344 2343
+    2398 2349 2348
+    2319 2370 2320
+    2369 2370 2319
+    2325 2376 2326
+    2329 2380 2330
+    2379 2380 2329
+    2334 2385 2335
+    2384 2385 2334
+    2387 2338 2337
+    2387 2388 2338
+    2388 2339 2338
+    2388 2389 2339
+    2339 2390 2340
+    2389 2390 2339
+    2393 2394 2344
+    2396 2347 2346
+    2396 2397 2347
+    2398 2399 2349
+    2300 2351 2301
+    2350 2351 2300
+    2301 2352 2302
+    2351 2352 2301
+    2302 2353 2303
+    2352 2353 2302
+    2303 2354 2304
+    2353 2354 2303
+    2304 2355 2305
+    2354 2355 2304
+    2305 2356 2306
+    2355 2356 2305
+    2306 2357 2307
+    2356 2357 2306
+    2307 2358 2308
+    2357 2358 2307
+    2308 2359 2309
+    2358 2359 2308
+    2309 2360 2310
+    2359 2360 2309
+    2310 2361 2311
+    2360 2361 2310
+    2311 2362 2312
+    2361 2362 2311
+    2312 2363 2313
+    2362 2363 2312
+    2313 2364 2314
+    2363 2364 2313
+    2314 2365 2315
+    2364 2365 2314
+    2315 2366 2316
+    2365 2366 2315
+    2316 2367 2317
+    2366 2367 2316
+    2317 2368 2318
+    2367 2368 2317
+    2318 2369 2319
+    2368 2369 2318
+    2320 2371 2321
+    2370 2371 2320
+    2321 2372 2322
+    2371 2372 2321
+    2322 2373 2323
+    2372 2373 2322
+    2323 2374 2324
+    2373 2374 2323
+    2324 2375 2325
+    2374 2375 2324
+    2375 2376 2325
+    2326 2377 2327
+    2376 2377 2326
+    2327 2378 2328
+    2377 2378 2327
+    2328 2379 2329
+    2378 2379 2328
+    2330 2381 2331
+    2380 2381 2330
+    2331 2382 2332
+    2381 2382 2331
+    2332 2383 2333
+    2382 2383 2332
+    2333 2384 2334
+    2383 2384 2333
+    2335 2386 2336
+    2385 2386 2335
+    2336 2387 2337
+    2386 2387 2336
+    2340 2391 2341
+    2390 2391 2340
+    2341 2392 2342
+    2391 2392 2341
+    2342 2393 2343
+    2392 2393 2342
+    2344 2395 2345
+    2394 2395 2344
+    2345 2396 2346
+    2395 2396 2345
+    2347 2398 2348
+    2397 2398 2347
+    2369 2420 2370
+    2375 2426 2376
+    2379 2430 2380
+    2384 2435 2385
+    2437 2388 2387
+    2438 2389 2388
+    2389 2440 2390
+    2443 2394 2393
+    2446 2397 2396
+    2448 2399 2398
+    2350 2401 2351
+    2400 2401 2350
+    2351 2402 2352
+    2352 2403 2353
+    2353 2404 2354
+    2354 2405 2355
+    2355 2406 2356
+    2405 2406 2355
+    2356 2407 2357
+    2357 2408 2358
+    2407 2408 2357
+    2358 2409 2359
+    2408 2409 2358
+    2359 2410 2360
+    2409 2410 2359
+    2360 2411 2361
+    2361 2412 2362
+    2411 2412 2361
+    2362 2413 2363
+    2412 2413 2362
+    2363 2414 2364
+    2364 2415 2365
+    2414 2415 2364
+    2365 2416 2366
+    2415 2416 2365
+    2366 2417 2367
+    2416 2417 2366
+    2367 2418 2368
+    2417 2418 2367
+    2368 2419 2369
+    2418 2419 2368
+    2370 2421 2371
+    2420 2421 2370
+    2371 2422 2372
+    2421 2422 2371
+    2372 2423 2373
+    2373 2424 2374
+    2374 2425 2375
+    2376 2427 2377
+    2426 2427 2376
+    2377 2428 2378
+    2427 2428 2377
+    2378 2429 2379
+    2428 2429 2378
+    2380 2431 2381
+    2381 2432 2382
+    2382 2433 2383
+    2432 2433 2382
+    2383 2434 2384
+    2433 2434 2383
+    2385 2436 2386
+    2435 2436 2385
+    2386 2437 2387
+    2436 2437 2386
+    2390 2441 2391
+    2391 2442 2392
+    2392 2443 2393
+    2394 2445 2395
+    2395 2446 2396
+    2446 2447 2397
+    2397 2448 2398
+    2447 2448 2397
+    2401 2402 2351
+    2402 2403 2352
+    2403 2404 2353
+    2406 2407 2356
+    2410 2411 2360
+    2413 2414 2363
+    2419 2420 2369
+    2422 2423 2372
+    2423 2424 2373
+    2424 2425 2374
+    2430 2431 2380
+    2431 2432 2381
+    2434 2435 2384
+    2437 2438 2388
+    2441 2442 2391
+    2442 2443 2392
+    2404 2405 2354
+    2438 2439 2389
+    2439 2440 2389
+    2440 2441 2390
+    2444 2445 2394
+    2445 2446 2395
+    2425 2426 2375
+    2429 2430 2379
+    2443 2444 2394
+    2448 2449 2399
+    2400 2451 2401
+    2450 2451 2400
+    2401 2452 2402
+    2451 2452 2401
+    2402 2453 2403
+    2452 2453 2402
+    2403 2454 2404
+    2453 2454 2403
+    2404 2455 2405
+    2454 2455 2404
+    2405 2456 2406
+    2455 2456 2405
+    2406 2457 2407
+    2456 2457 2406
+    2407 2458 2408
+    2457 2458 2407
+    2408 2459 2409
+    2458 2459 2408
+    2409 2460 2410
+    2459 2460 2409
+    2410 2461 2411
+    2460 2461 2410
+    2461 2412 2411
+    2461 2462 2412
+    2412 2463 2413
+    2462 2463 2412
+    2463 2414 2413
+    2463 2464 2414
+    2414 2465 2415
+    2464 2465 2414
+    2415 2466 2416
+    2465 2466 2415
+    2416 2467 2417
+    2466 2467 2416
+    2417 2468 2418
+    2467 2468 2417
+    2418 2469 2419
+    2468 2469 2418
+    2419 2470 2420
+    2469 2470 2419
+    2420 2471 2421
+    2470 2471 2420
+    2421 2472 2422
+    2471 2472 2421
+    2422 2473 2423
+    2472 2473 2422
+    2473 2424 2423
+    2473 2474 2424
+    2424 2475 2425
+    2474 2475 2424
+    2425 2476 2426
+    2475 2476 2425
+    2426 2477 2427
+    2476 2477 2426
+    2427 2478 2428
+    2477 2478 2427
+    2428 2479 2429
+    2478 2479 2428
+    2429 2480 2430
+    2479 2480 2429
+    2430 2481 2431
+    2480 2481 2430
+    2431 2482 2432
+    2481 2482 2431
+    2432 2483 2433
+    2482 2483 2432
+    2433 2484 2434
+    2483 2484 2433
+    2434 2485 2435
+    2484 2485 2434
+    2435 2486 2436
+    2485 2486 2435
+    2436 2487 2437
+    2486 2487 2436
+    2487 2438 2437
+    2487 2488 2438
+    2438 2489 2439
+    2488 2489 2438
+    2439 2490 2440
+    2489 2490 2439
+    2440 2491 2441
+    2490 2491 2440
+    2441 2492 2442
+    2491 2492 2441
+    2442 2493 2443
+    2492 2493 2442
+    2493 2444 2443
+    2493 2494 2444
+    2444 2495 2445
+    2494 2495 2444
+    2445 2496 2446
+    2495 2496 2445
+    2496 2447 2446
+    2496 2497 2447
+    2447 2498 2448
+    2497 2498 2447
+    2498 2449 2448
+    2498 2499 2449
Index: /tags/1.6.0/examples/zoo/note/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/note/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/note/Makefile.in	(revision 6168)
@@ -0,0 +1,40 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/note.tcl \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/zoo/note
+
+.PHONY: all install clean distclean
+
+all: 
+	$(MAKE) -C docs all
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	$(MAKE) -C docs install
+
+clean:
+	$(MAKE) -C docs clean
+
+distclean: 
+	$(MAKE) -C docs distclean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/note/docs/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/note/docs/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/note/docs/Makefile.in	(revision 6168)
@@ -0,0 +1,36 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/bysize.gif \
+		$(srcdir)/bysize.html
+
+destdir		= $(prefix)/examples/zoo/note/docs
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/note/docs/bysize.html
===================================================================
--- /tags/1.6.0/examples/zoo/note/docs/bysize.html	(revision 6168)
+++ /tags/1.6.0/examples/zoo/note/docs/bysize.html	(revision 6168)
@@ -0,0 +1,18 @@
+<html>
+<body>
+<p>
+<img style="float: right; margin: 8px;" src="bysize.gif"/>
+<b>Set the dot size</b><br/>
+Explore the effects of the particle size on
+the absorption spectrum for quantum dots.
+</p><p>
+Learn more about quantum dots:
+<ul style="margin: 0px; padding-left: 16px;">
+<li>Klimeck: <a href="http://www.nanohub.org/resources/189">Quantum Dots</a></li>
+<li>Sands: <a href="http://www.nanohub.org/resources/376">Nanomaterials:  Quantum Dots, Nanowires, and Nanotubes</a></li>
+<li>Lent: <a href="http://www.nanohub.org/resources/148">Quantum-dot Cellular Automata</a></li>
+<li><a href="http://www.nanohub.org/resources/tags/quantumdots">more...</a></li>
+</ul>
+</p>
+</body>
+</html>
Index: /tags/1.6.0/examples/zoo/note/note.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/note/note.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/note/note.tcl	(revision 6168)
@@ -0,0 +1,19 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <note> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+$driver copy output.number(diameter) from input.(diameter)
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/note/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/note/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/note/test/defaults.xml	(revision 6168)
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>note</title>
+        <about>Example of a Rappture &lt;note&gt; object.
+
+Notes are not really inputs or outputs, but descriptive explanations
+to the user.  The contents of a note can be arbitrary HTML, so it
+can contain images, hyperlinks, etc.
+  </about>
+        <command>
+    tclsh @tool/note.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <note>
+            <contents>file://bysize.html</contents>
+        </note>
+        <number id="diameter">
+            <about>
+                <label>Particle diameter d</label>
+                <description>Diameter of sphere-shaped nanoparticles.
+
+Note:  Larger particles require more time to simulate.</description>
+            </about>
+            <units>nm</units>
+            <min>2nm</min>
+            <max>20nm</max>
+            <default>5nm</default>
+            <current>5nm</current>
+        </number>
+    </input>
+    <output>
+        <number id="diameter">
+            <about>
+                <label>Particle diameter d</label>
+                <description>Diameter of sphere-shaped nanoparticles.
+
+Note:  Larger particles require more time to simulate.</description>
+            </about>
+            <units>nm</units>
+            <min>2nm</min>
+            <max>20nm</max>
+            <default>5nm</default>
+            <current>5nm</current>
+        </number>
+        <time>Wed Dec 10 01:51:57 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/note/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/note/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/note/tool.xml	(revision 6168)
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>note</title>
+  <about>Example of a Rappture &lt;note&gt; object.
+
+Notes are not really inputs or outputs, but descriptive explanations to the user.  The contents of a note can be arbitrary HTML, so it can contain images, hyperlinks, etc.
+  </about>
+  <command>
+    tclsh @tool/note.tcl @driver
+  </command>
+</tool>
+
+<input>
+  <note>
+    <contents>file://bysize.html</contents>
+  </note>
+  <number id="diameter">
+    <about>
+      <label>Particle diameter d</label>
+      <description>Diameter of sphere-shaped nanoparticles.
+
+Note:  Larger particles require more time to simulate.</description>
+    </about>
+    <units>nm</units>
+    <min>2nm</min>
+    <max>20nm</max>
+    <default>5nm</default>
+  </number>
+
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/number/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/number/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/number/Makefile.in	(revision 6168)
@@ -0,0 +1,39 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/number.py \
+		$(srcdir)/number.tcl \
+		$(srcdir)/number1.gif \
+		$(srcdir)/number2.gif \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/zoo/number
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/number/number.py
===================================================================
--- /tags/1.6.0/examples/zoo/number/number.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/number/number.py	(revision 6168)
@@ -0,0 +1,44 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <number> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+
+# uncomment these for debugging
+# sys.stderr = open('tool.err', 'w')
+# sys.stdout = open('tool.out', 'w')
+
+rx = Rappture.PyXml(sys.argv[1])
+
+# The example this is based on did a copy of the inputs
+# to outputs, like below.  This is very efficient, but
+# would not be a normal thing to do.
+# rx.copy('output.number(outt)', 'input.(temperature)')
+# rx.copy('output.number(outv)', 'input.(vsweep)')
+
+temp = rx['input.(temperature).current'].value
+
+# If we need a unitless float, then this is necessary.
+# But in this example, we do not because Rappture accepts
+# numbers with units for the value.
+# temp = float(Rappture.Units.convert(temp, to='K', units='off'))
+
+vsweep = rx['input.(vsweep).current'].value
+# vsweep = float(Rappture.Units.convert(vsweep, to='V', units='off'))
+
+rx['output.number(temperature).about.label'] = 'Ambient temperature'
+rx['output.number(temperature).units'] = 'K'
+rx['output.number(temperature).current'] = temp
+
+rx['output.number(vsweep).about.label'] = 'Voltage Sweep'
+rx['output.number(vsweep).units'] = 'V'
+rx['output.number(vsweep).current'] = vsweep
+
+rx.close()
Index: /tags/1.6.0/examples/zoo/number/number.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/number/number.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/number/number.tcl	(revision 6168)
@@ -0,0 +1,23 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <number> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+$driver put output.number(outt).about.label "Echo of temperature"
+$driver copy output.number(outt) from input.(temperature)
+
+$driver put output.number(outv).about.label "Echo of voltage sweep"
+$driver copy output.number(outv) from input.(vsweep)
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/number/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/number/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/number/test/defaults.xml	(revision 6168)
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>number</title>
+        <about>Example of a Rappture &lt;number&gt; object.
+
+Numbers are real values with optional units.
+The description appears in a tooltip when you hover over the number control with your mouse.
+
+When you click the Simulate button, the input numbers will be used to generate output numbers.
+  </about>
+        <command>
+    tclsh @tool/number.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>This is the temperature in the environment around the device.</description>
+            </about>
+            <units>K</units>
+            <min>50K</min>
+            <max>1000K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <separator/>
+        <number id="vsweep">
+            <about>
+                <label>Voltage Sweep +/-</label>
+                <description>This determines the voltage sweep used to obtain results from the model.</description>
+                <icon>
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==
+      </icon>
+            </about>
+            <units>V</units>
+            <min>0V</min>
+            <max>10V</max>
+            <default>4V</default>
+            <color>purple</color>
+            <current>4V</current>
+        </number>
+    </input>
+    <output>
+        <number id="outt">
+            <about>
+                <label>Ambient temperature</label>
+                <description>This is the temperature in the environment around the device.</description>
+            </about>
+            <units>K</units>
+            <min>50K</min>
+            <max>1000K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="outv">
+            <about>
+                <label>Voltage Sweep +/-</label>
+                <description>This determines the voltage sweep used to obtain results from the model.</description>
+                <icon>
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==
+      </icon>
+            </about>
+            <units>V</units>
+            <min>0V</min>
+            <max>10V</max>
+            <default>4V</default>
+            <color>purple</color>
+            <current>4V</current>
+        </number>
+        <time>Wed Dec 10 01:54:42 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/number/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/number/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/number/tool.xml	(revision 6168)
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>number</title>
+  <about>Example of a Rappture &lt;number&gt; object.
+
+Numbers are real values with optional units.
+The description appears in a tooltip when you hover over the number control with your mouse.
+
+When you click the Simulate button, the input numbers will be used to generate output numbers.
+  </about>
+  <uq>off</uq>
+  <command>
+    python @tool/number.py @driver
+  </command>
+</tool>
+<input>
+  <number id="temperature">
+    <about>
+      <label>Ambient temperature</label>
+      <description>This is the temperature in the environment around the device.</description>
+    </about>
+    <units>K</units>
+    <min>50K</min>
+    <max>1000K</max>
+    <default>300K</default>
+    <preset>
+      <value>300K</value>
+      <label>300K (room temperature)</label>
+    </preset>
+    <preset>
+      <value>77K</value>
+      <label>77K (liquid nitrogen)</label>
+    </preset>
+  </number>
+
+  <separator/>
+
+  <number id="vsweep">
+    <about>
+      <label>Voltage Sweep +/-</label>
+      <description>This determines the voltage sweep used to obtain results from the model.</description>
+      <icon>
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==
+      </icon>
+    </about>
+    <units>V</units>
+    <min>0V</min>
+    <max>10V</max>
+    <default>4V</default>
+    <color>purple</color>
+  </number>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/number2/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/number2/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/number2/Makefile.in	(revision 6168)
@@ -0,0 +1,37 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/number.py \
+		$(srcdir)/number.tcl \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/number2
+
+.PHONY: all install clean distclean
+
+all:
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/number2/number.py
===================================================================
--- /tags/1.6.0/examples/zoo/number2/number.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/number2/number.py	(revision 6168)
@@ -0,0 +1,24 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <number> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+import Rappture
+import sys
+
+# This tool takes three input numbers and prints
+# their values in the output.
+
+rx = Rappture.PyXml(sys.argv[1])
+
+outstr = ''
+for num in range(1, 4):
+    val = rx['input.(input%d).current' % num].value
+    outstr += 'input%d = %s\n' % (num, val)
+rx['output.string(out).current'] = outstr
+
+rx.close()
Index: /tags/1.6.0/examples/zoo/number2/number.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/number2/number.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/number2/number.tcl	(revision 6168)
@@ -0,0 +1,25 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <number> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set n1 [$driver get input.(input1).current]
+set n2 [$driver get input.(input2).current]
+set n3 [$driver get input.(input3).current]
+
+$driver put output.string(out).current "input1=$n1\n"
+$driver put -append yes output.string(out).current "input2=$n2\n"
+$driver put -append yes output.string(out).current "input3=$n3\n"
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/number2/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/number2/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/number2/test/defaults.xml	(revision 6168)
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>number2</title>
+        <about>Example of a Rappture &lt;number&gt; object with colors.
+Each number object has a different color range.
+  </about>
+        <command>
+    tclsh @tool/number.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="input1">
+            <about>
+                <label>Widgets</label>
+                <description>Number of widgets. Color range is from red to blue</description>
+                <color>10 red 20 blue</color>
+            </about>
+            <min>10</min>
+            <max>20</max>
+            <default>10</default>
+            <current>10</current>
+        </number>
+        <number id="input2">
+            <about>
+                <label>Randomness</label>
+                <description>Pick a number. Color range goes from yellow to green to blue.</description>
+                <color>-10 yellow 0 green 10 blue</color>
+            </about>
+            <min>-10</min>
+            <max>10</max>
+            <default>0</default>
+            <current>0</current>
+        </number>
+        <number id="input3">
+            <about>
+                <label>Magic</label>
+                <description>Magic value.  Color range is spectrum from 400nm to 700nm.</description>
+                <color>0 400nm 20 700nm</color>
+            </about>
+            <min>0</min>
+            <max>20</max>
+            <default>10</default>
+            <current>10</current>
+        </number>
+    </input>
+    <output>
+        <string id="out">
+            <about>
+                <label>Print of inputs</label>
+            </about>
+            <current>input1=10
+input2=0
+input3=10
+</current>
+        </string>
+        <time>Wed Dec 10 01:57:02 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/number2/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/number2/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/number2/tool.xml	(revision 6168)
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>number2</title>
+  <about>Example of a Rappture &lt;number&gt; object with colors.
+Each number object has a different color range.
+  </about>
+  <uq>false</uq>
+  <command>
+    python @tool/number.py @driver
+  </command>
+</tool>
+<input>
+  <number id="input1">
+    <about>
+      <label>Widgets</label>
+      <description>Number of widgets. Color range is from red to blue</description>
+      <color>10 red 20 blue</color>
+    </about>
+    <min>10</min>
+    <max>20</max>
+    <default>10</default>
+  </number>
+  <number id="input2">
+    <about>
+      <label>Randomness</label>
+      <description>Pick a number. Color range goes from yellow to green to blue.</description>
+      <color>-10 yellow 0 green 10 blue</color>
+    </about>
+    <min>-10</min>
+    <max>10</max>
+    <default>0</default>
+  </number>
+  <number id="input3">
+    <about>
+      <label>Magic</label>
+      <description>Magic value.  Color range is spectrum from 400nm to 700nm.</description>
+      <color>0 400nm 20 700nm</color>
+    </about>
+    <min>0</min>
+    <max>20</max>
+    <default>10</default>
+  </number>
+</input>
+<output>
+  <string id="out">
+    <about><label>Print of inputs</label></about>
+  </string>
+</output>
+</run>
Index: /tags/1.6.0/examples/zoo/parallelepiped/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/parallelepiped/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/parallelepiped/Makefile.in	(revision 6168)
@@ -0,0 +1,37 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/parallelepiped.py \
+		$(srcdir)/parallelepiped.tcl \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/parallelepiped
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/parallelepiped/parallelepiped.py
===================================================================
--- /tags/1.6.0/examples/zoo/parallelepiped/parallelepiped.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/parallelepiped/parallelepiped.py	(revision 6168)
@@ -0,0 +1,46 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture Example of a Parallelepiped shape from PDB data.
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+
+# uncomment these for debugging
+# sys.stdout = open('group.out', 'w')
+# sys.stderr = open('group.err', 'w')
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+
+pdb = """
+ATOM      0   Si UNK A   1       0.000   0.000   0.000  1.00
+ATOM      1   Si UNK A   1       2.710   2.710   0.000  1.00
+ATOM      2   Si UNK A   1       2.710   0.000   2.710  1.00
+ATOM      3   Si UNK A   1       0.000   2.710   2.710  1.00
+ATOM      4   Si UNK A   1       5.420   2.710   2.710  1.00
+ATOM      5   Si UNK A   1       2.710   5.420   2.710  1.00
+ATOM      6   Si UNK A   1       2.710   2.710   5.420  1.00
+ATOM      7   Si UNK A   1       5.420   5.420   5.420  1.00
+ATOM      8   Si UNK A   1       1.355   1.355   1.355  1.00
+TER       9      UNK A   1
+"""
+
+components = rx["output.structure.components"]
+components['molecule.pdb'] = pdb
+
+components['parallelepiped.origin'] = "0.0 0.0 0.0"
+components['parallelepiped.scale'] = "5.42"
+# components['parallelepiped.scale'] = "1.0"
+
+components['parallelepiped.vector(1)'] = ".5 .5 .0"
+components['parallelepiped.vector(2)'] = ".5 .0 .5"
+components['parallelepiped.vector(3)'] = ".0 .5 .5"
+
+rx.close()
Index: /tags/1.6.0/examples/zoo/parallelepiped/parallelepiped.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/parallelepiped/parallelepiped.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/parallelepiped/parallelepiped.tcl	(revision 6168)
@@ -0,0 +1,33 @@
+
+
+package require Rappture
+
+set driver [Rappture::library [lindex $argv 0]]
+
+set components "output.structure.components"
+
+set pdb {
+ATOM      0   Si UNK A   1       0.000   0.000   0.000  1.00
+ATOM      1   Si UNK A   1       2.710   2.710   0.000  1.00
+ATOM      2   Si UNK A   1       2.710   0.000   2.710  1.00
+ATOM      3   Si UNK A   1       0.000   2.710   2.710  1.00
+ATOM      4   Si UNK A   1       5.420   2.710   2.710  1.00
+ATOM      5   Si UNK A   1       2.710   5.420   2.710  1.00
+ATOM      6   Si UNK A   1       2.710   2.710   5.420  1.00
+ATOM      7   Si UNK A   1       5.420   5.420   5.420  1.00
+ATOM      8   Si UNK A   1       1.355   1.355   1.355  1.00
+TER       9      UNK A   1
+}
+
+$driver put $components.molecule.pdb $pdb
+
+$driver put $components.parallelepiped.origin "0.0 0.0 0.0"
+$driver put $components.parallelepiped.scale "5.42"
+#$driver put $components.parallelepiped.scale "1.0"
+ 
+$driver put $components.parallelepiped.vector(1) ".5 .5 .0"
+$driver put $components.parallelepiped.vector(2) ".5 .0 .5"
+$driver put $components.parallelepiped.vector(3) ".0 .5 .5"
+
+Rappture::result $driver 
+exit 0
Index: /tags/1.6.0/examples/zoo/parallelepiped/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/parallelepiped/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/parallelepiped/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>python @tool/parallelepiped.py @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/examples/zoo/periodicelement/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/periodicelement/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/periodicelement/Makefile.in	(revision 6168)
@@ -0,0 +1,36 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/test.tcl \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/periodicelement
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/periodicelement/test.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/periodicelement/test.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/periodicelement/test.tcl	(revision 6168)
@@ -0,0 +1,26 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <periodicelement> element
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set first [$driver get input.periodicelement(first).current]
+set second [$driver get input.periodicelement(second).current]
+set third [$driver get input.periodicelement(third).current]
+
+$driver put output.log "Elements:
+  First:	$first
+  Second:	$second
+  Third:	$third"
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/periodicelement/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/periodicelement/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/periodicelement/tool.xml	(revision 6168)
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/test.tcl @driver</command>
+    </tool>
+    <input>
+        <periodicelement id="first">
+            <about>
+                <label>First Element</label>
+                <description>Select the first element.</description>
+            </about>
+            <default>As</default>
+            <returnvalue>name</returnvalue>
+        </periodicelement>
+        <periodicelement id="second">
+            <about>
+                <label>Second Element</label>
+                <description>Select the second element.</description>
+            </about>
+            <default>Oxygen</default>
+            <returnvalue>name symbol number weight</returnvalue>
+            <inactive>actinoid lanthanoid</inactive>
+        </periodicelement>
+        <periodicelement id="third">
+            <about>
+                <label>Third Element</label>
+                <description>Select the third element.</description>
+            </about>
+            <default>Carbon</default>
+            <returnvalue>weight</returnvalue>
+            <active>other-non-metal</active>
+        </periodicelement>
+    </input>
+</run>
Index: /tags/1.6.0/examples/zoo/phase/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/phase/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/phase/Makefile.in	(revision 6168)
@@ -0,0 +1,39 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/phase.tcl \
+		$(srcdir)/phase1.gif \
+		$(srcdir)/phase2.gif \
+		$(srcdir)/phase3.gif \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/zoo/phase
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/phase/phase.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/phase/phase.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/phase/phase.tcl	(revision 6168)
@@ -0,0 +1,22 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <phase> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set s1 [$driver get input.phase(one).(first).current]
+set s2 [$driver get input.phase(two).(second).current]
+
+$driver put output.log "first = $s1\nsecond= $s2"
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/phase/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/phase/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/phase/test/defaults.xml	(revision 6168)
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>phase</title>
+        <about>Example of a Rappture &lt;phase&gt; object.
+
+A phase is like a group of input controls, but it represents a whole page within the graphical interface.  A complicated tool may have too many controls to fit on one page, even if you use groups.  Or, it may have a series of tasks that must be linked together to form a complete analysis.  Each page of input is represented by a phase.
+
+Note that instead of a Simulate button, the phases are arranged one after another, in a Next, Next, Next manner.  The very last Next operation is Simulate.
+  </about>
+        <command>
+    tclsh @tool/phase.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <phase id="one">
+            <about>
+                <label>First Page</label>
+            </about>
+            <string id="first">
+                <about>
+                    <label>First input</label>
+                </about>
+                <default>one</default>
+                <current>one</current>
+            </string>
+        </phase>
+        <phase id="two">
+            <about>
+                <label>Second Page</label>
+            </about>
+            <string id="second">
+                <about>
+                    <label>Second input</label>
+                </about>
+                <default>two</default>
+                <current>two</current>
+            </string>
+        </phase>
+    </input>
+    <output>
+        <log>first = one
+second= two</log>
+        <time>Wed Dec 10 01:59:36 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/phase/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/phase/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/phase/tool.xml	(revision 6168)
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>phase</title>
+  <about>Example of a Rappture &lt;phase&gt; object.
+
+A phase is like a group of input controls, but it represents a whole page within the graphical interface.  A complicated tool may have too many controls to fit on one page, even if you use groups.  Or, it may have a series of tasks that must be linked together to form a complete analysis.  Each page of input is represented by a phase.
+
+Note that instead of a Simulate button, the phases are arranged one after another, in a Next, Next, Next manner.  The very last Next operation is Simulate.
+  </about>
+  <command>
+    tclsh @tool/phase.tcl @driver
+  </command>
+</tool>
+<input>
+  <phase id="one">
+    <about> <label>First Page</label> </about>
+    <string id="first">
+      <about> <label>First input</label> </about>
+      <default>one</default>
+    </string>
+  </phase>
+
+  <phase id="two">
+    <about> <label>Second Page</label> </about>
+    <string id="second">
+      <about> <label>Second input</label> </about>
+      <default>two</default>
+    </string>
+  </phase>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/sequence/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/sequence/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/sequence/Makefile.in	(revision 6168)
@@ -0,0 +1,43 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/sequence.py \
+		$(srcdir)/sequence.tcl \
+		$(srcdir)/sequence2.tcl \
+		$(srcdir)/tool2.xml \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/zoo/sequence
+
+.PHONY: all install clean distclean
+
+all: 
+	$(MAKE) -C examples all
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	$(MAKE) -C examples install
+
+clean:
+	$(MAKE) -C examples clean
+
+distclean: 
+	$(MAKE) -C examples distclean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/sequence/examples/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/sequence/examples/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/sequence/examples/Makefile.in	(revision 6168)
@@ -0,0 +1,36 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/nanohub.xml \
+		$(srcdir)/team.xml
+
+destdir		= $(prefix)/examples/zoo/sequence/examples
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/sequence/examples/nanohub.xml
===================================================================
--- /tags/1.6.0/examples/zoo/sequence/examples/nanohub.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/sequence/examples/nanohub.xml	(revision 6168)
@@ -0,0 +1,1281 @@
+<?xml version="1.0"?>
+<run>
+<about>
+ <label>Logo</label>
+</about>
+<input>
+  <image>
+    <current>
+R0lGODdhkAEsAef/ABokLh8jLhsmMBwnMR0nMiImMh4oMx8qNSQoNCYpNSEsNiYqNh8tPCQrPCIt
+NyYtPiQvOiktOSIxQCcvPygwQCgzPiU0QysyQyc1RS00RSs2QSg3Rik4Ry82Ryo5SS45RDA4SS07
+SzM7TC8+TTM9SDY9Qyw/VDI9UzE/Tzc+UDBDVzRCUjZBWDpCUzpDTzNGWzlEWzdGVj1EVjZJXjpJ
+WUBHWT1IXkBJVTlMYT5MXD9LYkNLXD1QZT9PakNOZUFQYEdPYUdQXEBSaEJRbURSY0ZRaEJVakRU
+cEdVZklUa0RXbU1UZ0ZWckFZdE1XYkdZb0lYdEtZak1Yb0ZdeF1aTEpdc0xceFBbc09dblRbblZd
+ZFNeaklge01gdk9fe1NedlBjeUxkf1JifldielJle2piTVdldlVkgVplcVFog1dmg1VofltmfmBo
+b1Rrh2Rpa1hrgVZqjVpqh11rfV5qgmFseFduiltuhGFshF1tillxjF1wh1xvkmBvjFxzj2VwiWBz
+iWRyhGdyfmJyj2tyel51kWN1jGV0kmh0jIVzTmV4j2F5lXN3d2R4m2h4lWd6kW55hXF5gG14kWx6
+jGV8mGt6mGl8k2t+lWh/nG9+kG59m22Al3N+l3d/h3SAjGuCn2+CmW2BpJR+THOClHKBn36CgnKF
+nW+Go4aDdXWEoneGmXqGknSHn3OGqoaFfXqFnn+GjneGpHKJpnaJoHiHpnSMqHiLo3eKrn2LnXuK
+qX+Ko3eOq4SMlHuOpX2Mq3mQrX2QqICPro2PjICTq32UspKRiY2SlKyPUYOSsYOVrZaThZmUgI2V
+nYSXr4GYtYSbuYibs4qdtYeevJWco42dvI2guKKekJ+fmJCjvMOeUKmij52kqZOmv5apwqOqsqWq
+ra+sn7OsmLuwlq2ytby1orS4u8S7oei3Vcy7obzAw9O/m9LEq8LHydbGp9zHo97MrcvQ0+POqubP
+pejUr9PY2u/Yrdrf4fbetOLm6eru8e7w7fD1+PX38/r8+Pn8//7//CwAAAAAkAEsAQAI/gAFCBw4
+EADBgwQNJgQQIADDhhAfOgQgcWDEiwEQahQ4YABHAR1DihxJcgCBkiIJnDSpciVJlx5BirR4kGLG
+hBpjEuy4UefGmgIo2hz6kCHRiTYjCj1KsafPnwlv5vQ5c2RUokmLLt2qtCjErlmHfpX4taHYhgLQ
+/uQp02PIsnDjfi0g1yBSoUi76sVrV67fAHQLCB5MuLDhw4gTJ25IGHBDAnHJ/p08l/JkrxMdmjUr
+cSlczJZDFxhAF2JpwKcZL8ZI9ixev0aN3i2bVLPnrZ4dFsArcLJgxqgFtxyu0gDx44MFqEzr+Pdp
+AYEDECg8nTFD5wFYHm+pvSUAAkKh/iJs+lHmTp0nxQss0IBAQQMCjCsnLnx4ge348X83YJx//5bG
+IXfdWaxpJZlZ4EmnWn3TDYacfwESBwCD4PlnEH/elUfQdCfdN+F3CdrW2W1ZZXYgYBMGBlmKpf2m
+GmoTAgZdYBRKCGJ8BCVmkmK7qUSYjyo55t50FCWYFGQ+TjhAkdLRyOOTUEZZGGlQgscjlYItmaVw
+UnZZ5X2MqaSVZpHhZpuIId4npmENKuajl4g1CBqZtGVGJ2u0gfchmCICNoB0Ppr2oZUeqglnAfPR
+pyaI4HnnoaONNpoiRXQZFZhQRJZGJWQ9fueppLsNymF+atqXH3L0dbhddxEKWGqK/kCeKqaso9J6
+HKM9PgZAAyJyNVZDvOIF2ZlGcfjprLYyaqusheq5q2zQblZXbK9thuSEw4KKLYiyXQuYlccqS6qE
+w30HpnCTqrhndCtWB24DFDHgWJMgFvqdgpzqZhZdnJo7WHCCsajiwG62aajBiXHIZaOLjlovkcgy
+rKJ3EW8nbrnVBSznbg7Ju2tzlSoYbQDBPkuvgqHel2unkq7Jr6H1lvpmnCrfCxmvmgXbK7Sy/TpW
+vQwFaXK+K/L7Lb7f2vwoxA0C+SNisALKaZAtvfwpi57yC6+ux6JGb67Xbps02MciKzWjQFdsatUy
+MzuqymoGByKM59KIWqROOimw/tfOHWaquQTAGzKm9+4G79ZIwsvQ1iAqzkCMmaoc3OSLSt7mmw7j
+p/LGYj7rVWt3ckWR4hEF/h3iDinOsM1Df4oioQEPZi69tvYYMeBIUp26sRmLBR6vDZRW7m6G21wd
+APIiiS/kS5+dpJxUM702qstu13DGLTmPMe9qSy/uxVWz3Xl7z8ob/G6P2wavkZyN/hhE5FON9vYM
+R6q5wqneGv9mh/e6Wc/wmxNmnsU+XlWKV0YKleCk8zHbiQpQD3Pa5sLXJPaki3i5+5BDMhesxyFw
+Kwg8muka4sF7oS5r9vrXxmJXKENVEGAzO9hhzucguOEPboySGqdqRrVzia9W/qU6WK3CBzcZekhB
+XAMT8kxGsiIFDliEkxRgHscelIHJWLLj0N2aZirqPA1dUiPdAMWytf/NBmejK9JD1uepez2OgB8r
+1rY+pryqwepylWsTyTbnRsgwAElxa0+gGkRCiTQKWK/zEB1DZRTFlY9oo/NekkoYK+1FTGY1IkCA
+xFUADOHveUt7Wf0cpMMtcumUNkRlDRUFRAL8kW3PKs1Sbha0pQQLZx6LUQS1yAB+YS6Ihpqg28Qk
+yEbq6XdkNJFYPta+iOBMdSRTkCPNgsZntYeBvgzAK7/1tuMYoG1mgxmyqBiiWT1OTB0z3qxyWIA3
+cgpe6bNTkTzIQFhhqz2//gFkN7m4T+J8szia/I8/Bbk2YFaNnOTsYvUWSiHjTHCVn/TRBz1mPrG5
+c0Lrayf4bLe+IaJqgv5RU4T42MSkMK6JebGJzqh1uNdgqpB6iuf6HJk825jObIBqWxADNwCH/u5+
+NlTQK383MGRG04PErE4vmUS+pDxuqX8MGQN7mdMr6jR8XKxhMOuDz+B51TD4NNgnHZQ5q+bPPkJs
+ZT8P2s7AqUmQcOtlL0n1nfT9EUXl69G/AGcuFr1NlDF0mn2+yR72uPWrHMplySLJl9SBrpH/q+bH
+3sgree3uXhuE4lOzldNdhbM+g/nmphZG1oKO6ltLE9wEHzKsh94xY+u7/sgxNRo2SElQiDvF6hCz
+NByTmARCHeKPIDFEUKz+SIJuve0vDavVpp3Pq9Phz1vvI8gGGCesBjjfzBRmw6bpNX8QjegPxbe5
+9njStydJL3ItiFGUljSasWmpY1VqS86AxWTcktcbyeTE6QhOYspqGwN66kndbg60P2wW7rxT3KHi
+tlzlQx6YgjeR4FUHeLnT7Vg1HKvSajIBmvQve7yagOyOxrrf7KqFY5VgIIXVmyphgEOJK+OAqrdq
+B2gAiNtjEuuyhz81ZkAD2tNV48h4qHClz4trhTyPsnitseoldP7ZgAGQOMS7bfJdpomUMkYrLIhU
+ozbnRuHspS9lP20a/gGrRjJ+trKTBgAxSJ12zrdaj5/BxJwBO8zH+mjGSp1jLwRtEqQadTTPeBSi
+g6n7Y1eCJEBVHvJhrSxSBJ9VJWENngF6+VXBBI/TKvOqkL2a3SHfJ7v+jfSATW1iAxBY0tAtLEE5
+3aa5DgbUGvO0KbXLtvqYWJNhPbFyPPJV4Vp4lRoFFqYbKRTFeXm+KkWQY2drJUB9K4RsBiR12/jE
+rWoyqgY4ADBXLFEZ/pKYzQVSgJ/MxTbvccwU9hfytIlo7nYXtLnlkAFDuxxXX9Or1hVAlacj8IL3
+csTeJUywhcNrchfH1bRmzx+jGtA4F+cACbDuASA9nT/yJwEDYIAC/hSQAAWcpD0ybquMS21Y64q4
+nQ69zysdzm52G3ZHDRC4YP5Imn/69rotmavCGHLOYXmOmUURY4WL9bs/M5rehhuODmVXXEDuCpPF
+MZTALX7V4WhXmGk9lcL/isDjQBB4RQLmnqxXdIofp+zC3OOpU+ynBBwgcCA59q+BR10fAZ04RMZ0
+JycOZ1MHbsgWzu6MO3kAjDeg8Qmwe4njnAAGND7O34x85SOvYwUcObsDyLGnDRtQIsP5j4gtLL4d
+fsqXG2rF5k1xO60LcPYIHLpErE4Y19jsNFLT954jXZ0ndE5sAZZCLVQyYL4eOLeC3vRzJbLsR/VP
+TDe/41gf/YqJ/svFgwOvzVoM0opldri/tpCszMXkgRcVVa8KIOVupTSlJc2ekPv3r8MZqfXdytWT
+1PjhsGZdnPdpmMcADFBiDaAA4VYAmhdnCrhpbTViDMiAlBdn0pdxQ2ZlxlZ/K9dy15V9EehKMsNp
+8JFy2tcgBvdbVuZ/VoZ7hvNKfFEbBhIbjpUz9/IQd3UzQ6RNYmI+plV+VyeCB7YjXPJPo2F9hPVt
+hbdwDUJD19cSmmZ4MudcxKFDlRUj3eVHumFQKBc+5vVc+4dWtIUl2RUArRZpHQFX/SdpUKh6pkdp
+bkVr2bV1DSBXDxc4HseAkSdkCVAAByBjJVdyI5djBzhklcce/hsXbgdogYqHeZNnfUIWYyE3YgNm
+bMUBXQHSeiGmXUNGMl1YZRlHAAgoGBg4AJFHesLVScXkiadTUnH0fR8jRp7SRM4GOHtmH5NjWcdB
+cRaUXJtYasBWWDsmXfhUKt8kXYkChcRha8JEUO2Efl7nNPS2RHcVVdG0ZPaxOH3XVWhVboZlfAEF
+cwSQY8FYZYKhc5HWfIiyXZjUY/eXYhbYZlGFcZoXef5VcptGcq5EcnYnZHyYcUAGZCWHcQowYooX
+OJsmgP9YYpGHeRR4UAbYU8Z4WDG2iYWljPUHh9fXTonIY5i3gJW3aSkmeL3XUrc0G+6jUitCdI/B
+JcQ3GOTz/kdLtFXHZmES9oyhJnBpeHcoJmMWtoImBmuqmHGkp1wheJGyJoIB8kqnJHTEQxcZ5Urc
+IobK6DSkIXifFnhYpm/H2HidFIoUmHmJGHLQQRoriHpe6GnJhSFCdh+VRwD8qIfWdWSAOJemJoAZ
+90eRx48GaAD8qHl8eIAkh2oJ6JcIuHIGeIB/5HlD5o+bZoIBuJYmlpRE5lU9F2enJpQFaXe0p2M+
+iWJz6Ure5V9H54ppxDj0ZU2zdGcdxzdFOVQNElVjd32C0x52Z4EU2FM1BnPGcZX/51mNRmuYg5A6
+V4lxKGtTeGzTg0Wjp4m15iBoqWkAVXAuJ4UmcYCT1x/2/hiW9RiW1TcdVxli7wcfOUd70hVy+ASQ
+2fWH7DGKdUiPJeaTBtiHiVl59BgBEeAAj4mdJCdkjphd/fmAgeiHQIZiXSluDHiANmZl6Olyzedq
+nTQa9meIG0dyVYZ5OaaADBldIumXtPeMjblsHoN2vqc+RxdHuuGECvcqn+ZgiVYqsKlJFCgct9me
+kzefk3eIQRmbX7mRCCZzDDcaI6mK7URgO9pLMfdkluZ3/Ldo0bcr8fGHCtl8sDeXx0h5nheQngeQ
+HoeAm7ZxOoZqLSdi/yRckEddHkeOvZSIlqcAjed5OCp5lWd5QCZxluePDGmACThydVh5CliHerh5
+QqYA/jqGgIIYiHC6aZz3fPcxf/ERiZ9pWAlpoHt4l6xWcvMpco9XYgq4m/0RN5RFiyVpUgwET/1l
+O7CJb2rpcd/ElE1DeCgmpXAWbkCGnRZnefhkeTr5YwSqji5XpmnVU7S5aZMokivnH/cXcTvnUyHG
+XCgne6emMj3Vgn2ogQyId/7ZYwXQqXVoYpXXgrwpcYrHkCBGpbHiagXpk9dVoXe3j5PXTpiKqYRq
+eX54ZHM6gHv5cZ1XeRGAnVKagCEZpiVXh4rppQbYqXlJsJg5cR/pHznnk+ImgrEXZwh6ePF5avoY
+Z4m5cXJ1AJ5HqI/npqaGeqJ6dIjHbKojG+MXPT/G/oZDRFgSl6yiSWr+NlfGNpg+Jp8t52kfZxwY
+WF2RJqmvJFzOd4Q++4yoVomNZ4CiSVZMGYWqiGmqdaz+tWnTYY+a5LFf6ogxtnI5VpNhOWARurWi
+uXFvmXFTZqAHt4Cj0ZCHKHnZ5ZP02Y9HRo+FqmOF2qZwCrAFW4j3GoibFwGCuqmCKqf1eKwEiXHe
+6remNnmmCHnk6pnbqrgeCnOESnlIupcDGbCQ558Q2ElAUk9DZktnYTquszny8lYsYZepFnvP2HHA
+9n5WFomT+4fXpXiGqHEN6aYjt56Hd6wGal7vJ2vtIXAnh3ol5nymd7eFYWSgVnEoV13A5rAJSZ6B
+/mNy2FmoppiXZktYIjd56aqI/PinI7et3gqQCBk44gZxx8iPfmlkiaihCrqe37uIA5moB0uXhKp5
+fCqYWypy2PkAg6qYBviHgClXgpqYDmB5h5uAi2iAKsemgMmlCrumnrmom8l5nuexexuYkecAe8jB
+cgXB5lOH3oJGHfVTzplVmKZ4PGfCUtuXLMeo0kWrOkaQIAaIRuaX8/l4B0uI/sHBFCu/lWi1hwds
+JgFioce6dXqMz3qXLQeaKtFjD6tqf0pdwyVpVguIlweXAAzBfsq74RafE/endViYEAyg2dWHA0mA
+mua3emmhiUh5WjuX/WmI4TZyGZcAEeCmmHrG/gkAwqO2wOP7vYTar/UIpyvnpgDsvvULwJxnwHKs
+oQ3Zl4XHkIE6l9tal5UHmhb4eJAnyY08cv/bh1r5RF1oOi31RDElHefkjFA4AA8IjCC6IxaoEjnm
+l384ynZJsXb3sZp3w/ZZYh5rdxzMpyOHnXKmsSkGYmNcgYqKmRTrxDKGji18Yi1Mrc68lP6lgH9Y
+ehsnxATpAITKp+vZSQKKgXuImO0ZbmDah/C6xvmYY304knKYteK6xwSLgbhrq9/bmLvsmX3ssQYs
+chaqAAssAXjLAPnJyzLWeAt8w3eamPO6h3CKce1UwAkscnnMh/sIwCK5l/ULr/TMw3rswH/s/gAL
+bYgkl8s+doVIVX7SIWlUBH4OkmkK47eYdmSBs8d6O3k3HJSbKlwTLZ8F3J9+2ph56b5DxsOJ6R+h
+iJDEPGAYLQAgh3EL6bNznIG0R2CmyGMTt8dmq6H7W4Ga65kE/NXjGqBZqrEP3bv9iKh/OIgi104k
+N5gGHc4tF7BXyqqpCNeNN9d5qcuCWM58qGMOAMINkNgRMGQgvMCKDcKcp6knHa/16KHJrKl5m9eH
+uHLqDMrZa7sMrKdsvXkGnICNSagHoNIeK8iHq6lam6VfN3FEhqLBIoI6FF2BR5RAprUMqLWfZ6Ft
+apj5mqBui5fnk3mDunmg/IcibKt7TM0J/ri0mAdrw9jTUyOxmPmTgkQlDTmByR1y+uiZhXmvCQhz
+/DmBMubH/giyc415d+ynUvrDenrW81qQLH2byQtzfWpd5YyPyEzOAdtLgfzBGcenfCxyDtCvDOAA
+D5DYif3gANu/B9vSqX2AC+yPo6bHyLzLFrqvv/yxXzqQRx2IgOrDml2wSU3KnOnDAZqYBg2wF3xk
+hkdC2sSD8JQxqkd63W1eW+qxe1qIYuyP4jZkisyH/4vUOeyXmU3hks2PQ1ahivlxLY2Aqp3Mmbd3
+byK2O1ecoReKRPnNCClks6tjdupKTB6S/G2rj8mYgeqvMi7SFf2x+9rkmT2X673YArm//qMWPGxK
+x4s9gBk6n27qsRpeh4RKzine4BA+AQ+Anw4wAQsuAYyen/0byAiNnw+w2AhNcomdlwde2Ht65BhI
+yoa+px6aoY43zgb9v4UomIDMlw2OqAdduBjO06DJcPRWK0NLeDtKakJ+4KT8w/yhx8KOoPlr6PHZ
+eYg3sOSc2CMX0Z2e6PY6p/Wrn4CrwwoqYyEXUs54hGoJurcX7qcWXRspp90qcqu9tP0ZbmHKmP4p
+ZL5d34/Xp4R86Atd6FkqrwAbn/3RH3edp51XnxhHz1KqwdH+7Avex9CenxEAAQ6f4Q4vco3dr/n5
+4AvcyQe74IwtARNQhypN8SrdAA/w/rGmbvKGWNg9/LEEDLKMDu0MTcidDOEqjfGN6fD9mtj+S5fM
+/ZhGFmoLY2+eJn16HZ/JDKflXM4w37v2Ts5JP9HxOux9zOgNkPMZPuwIPafDjp0Zf+LYKYqKmKDV
+JamZB3K2OWTQAbR6aMPb+6d6aZidd9cVHp+8baifXMjrCaebx+EX3eoIPagUHjz7e9dnXLAJWdh7
+vKXR3sgDrPMNHuj+CAESQAESAPH9KsAL3uAxL+kQzujJHNEj7+kQDqcKn/nk3Kf3q6f97vcfS4gJ
+D9me1/mVDtkLbOn9SukMAAGRHtEJePp3euSFZcRWy1UmjCH6mnFSqrF3HfsHjniN/tngmb3hAzzC
+8O7Ap//gVg/tII/Q7zmvm12I9NjuiP6sWLyCobUjK0ga5Vp/NtaAaP54VXvhCz2wfmrrmJrx83rY
+IHv0MN7qDtyYANFAgQIGDRIcTHBAQYMDDAgiPJCAgQEGByk2KOiwIEEGHR1kXOiwwYOBDhw8YGDS
+QQSVESZMYOkAgsqPKUc+YBkzp0mMDjA+aHASaMyTEVIyeOCAYwOBKkMWZBqB6cKpKyNIvbkwqVKf
+BU1mXJlSZssJH08WVJhg4AEDBhoUYEDgbYG3DOjKLUCAgAG6DBRSLMC3gYGIGaFyVGByoMalAx07
+Nrh44UC1Dq+ahMDg8kifE4B+/pwatCNDiQcEVvTrt0ACAwng/pUrt23Dtm0JFAh8O0EDAQnjNtC7
+lzWDAYQV0G49kSDhjgRDSpQIl6FABRAbUl24e6pa7QKbOi5YmeNuhQsVNpRo4LjfhNVNq31+sOJA
+70FVbi270sEECBEkYO7Pvwhm0q8mzVICCiX7gOrJLKU0UwyqCBLzrjKzRkuAK5tIKgklj+4zKSmp
+dAprpIIIHHCClCjwSTGJMspwvb4CmyguviiSi6nbmBpssogQe0wtAxUzyKHKoDKMoJF2Y3Kjmoqq
+AAIJJIBgJh5xmuC0oBJrCKPECFJqssUkUsAtgVxjjaHbCFCOTLniIiCB2wIA/o4ug+JczSCD1IuO
+KYQQmoyi0g66LiP0lIIPI4fo66jRjLaa6qKGFFrUS+2g066hrgq6CNEHlbQvsc48O+kkjP7zb78q
+K5hSwJfy46kgD1t0qSWkPMMJ1KmM+kxLnx4qMigeReU1TAUIREnFsz5i6UBYrRqQpVdnwukBCZaC
+6qDBLnKLLrfsamAAvfZkiym3oDuuxa+GzbCBCb3iqb75qPsIupSoClEmdx2gAAL+LhyIJJNUfCDD
+dmM9aqqK9kyuTNZ2A2y3HQPLqy09ZRtAgIJiEzcvi1prq1GKOBWItheFpIwpzShMLEOofMKIR5W9
+XEip1hRVsrrmHmpuNzFL/orMKC8XVYmpssQqKymYBvyvrAgouMyk/z7iL4KtBn4JqZRgQonXRrOE
++bl8oRK23o2IQlAszsY2yrOrVGTg6JhempKBKqkca4IKHJCgIJZKSmzn9Nhz67a2CJ1trYi4C0/Y
+tUXS+jCcxfxp2aG/oumkuyeAOicKKHhVaQnKUnF0rXH61YEYB0tNW+006tY2v1orU88BJpLzTnEJ
+EECvAnbfcT7WRtbWtDMXzQjn61ASyiae6HMOcpaY8smo6rID0iDutjueR4mYF0slzUTbTyqgbvVv
+35kokMA/qDuPsqj2X3ogS6SMMksCpUnnLyj8wOrKR0Sln0eZCkGmsg9//qAGk/t5yF2koxrYWFKl
+fk3gAhG4wEwgUL+PbPABQKHMbhZ1gIYoJy1sYp0IdfYtEnrnQ1yxj7q816ukhO8qWombu37ywZX0
+R0rsm9JKOEMBnMQtRLXqSsyU+KUjEeZhkTFeRCjSpRrhZTYW8xZf5ISbvBAAAAAYAHAq4praQEyJ
+DLledbaXmJjULyT78c5CpPLGEEHGMJFRWEbUM5qdPYheKjPKgTKXNZnIqgETaN9V+tM+VkVJAof8
+4H8O6DQGvI9U+/mKtE73rPq9zGgEi6HTrIYUlWTGgHxr1klIV7/LZMRpEOhXTKj0tCrtB3Q0+cy9
+oMOQiPCIIm0pU1tW/pOawBykOj7ZDYNqCEKVdeSRHMxcTYR0ocxZC4NXeUAFnsa5B8ykAirCVedS
+8k0ClXJDXlIXakioFrZgijWrUaNcmASx3MmpOMHJiwACUIDe5QV5pTmOw7Q1Rj6m7T4vgVmpmvVB
+Wb1sZYsSVUkUI8ct1exqCtmPwFTUzJfUCiP+ottRrMU+Vn3OAXurQEphokoK2E1aEmDV6GYyIJMM
+aHyeORpCEdSg0dgnbjmVVVlACpP8vIo/nKPa1hggAdDB8gHsi9bn3kcl0Hlmax/Mj0O6Er3S4KZR
+1fHTLjF6FLHci3lfcRT9ejKa9u1nAi5jisAOib+k9csCFmgAUxE5/joKzJVKsJzS5+rHOUvKpIY+
+SYoCQBgej7hsOYsamV1+2ZE4VcQAbKLLAHBzmy7uUy4BYCxYd2Og9TAGenGNWdw6MpOO8HAsYbFK
+SrrDxxZtyTu/2ilWVPYSxfLEahxE5FVM99TPPU2vFWDfBS+wtKXuzSRQk0AG3QZO9kkVQmVV6wRN
+6ZmgwE1F1oPVfwZLv5YCtZKqAp1gq5rNmTBVqp9jKnJB5xKQatCIRcGK6nwGnwPgBiN7WY4T4UWf
+uIpIJiyC5ErdChRKZimvs/pgUkbytKeeNEoQiJJRX8Wi9FYQoVh7FVMnyCKqZU4iPFLdZPTEHcJo
+r7/yEdRbwgWc/jWt6bK/u5F6KpqdRIlHT6kDE1LqhyWdQg2WUVFZAGu6JGHVzG8KQpuBPMQ/qRwF
+Vxcg4lOrRLeXzFebGM5w+4goX0SySEWwJKr+4tYvqfKnnANzCVOxGpSqpuq7nKMlgro5P9BVsst+
+HuxSlQUTIk4JkVISUEql9FNCu4RzVuUp5LzHGsoQlEyY06pHOtLRf2FOaKDBKfMw8qqzCNV0nNNm
+BL5pLbf2jal81WuZQechISNSm+4NdUjzw1C1nEZJrYEPY+O0nuJ0y6t3KUAA9GIm7ZgJednaiEaM
+qVjnfSQp/xl16QaUmRpyZiuN4puSFTUSRa0SJy7RjFRIN7rQ/jVKpoT96asRrQENRIl9hB0dcvW6
+XOOi+s9+XuroBsRmKvUtVVhTLZuf2rfS0Q/OVOoy/R7tqArU73OcmyV1EblxC0JXahu/L2jMMhlA
+daRJJUyU32IIr/Kyu1/dhKq/WNK1HmYUnDmsqmZg6QALaEDVFexz50YHcbpts2r69k+X0W0tRA4Z
+pwQz5ZccU5Nz7TI8bhmIxfjiu70Mhp+3O5xxBKKegCak11oSiFSqmdeEqrujP7V2DieUk+l+V1GI
+HfJZDO5MboKTP+4FHVM1w1Q0Q+0CF7AA4C/ObqTw1SiBZZpRL+7nQ76azUT8LkzZV2GOb9kzhe4y
+EJEatylN/knmxeUgU1Hpvqd1uIKAJaz7VEtYK7XoKfNiDHewE7izQAjN/cGIo/nlmdGNNG71G3qj
+yjvquF0gutGFpc+/WV1EWuBp18+MBTc8dI7vlXNDZfi/2kf6rOWdOgzB3URIWJH3mNEuHYGL4fhS
+zEq9Z2ioKVlVaoti0EwNkVBhOpQ4rJ4ApwsRwK3BuLQBJ5xwPNV6qqUKPEPjHOdrPQpglQzyMn2T
+KoGrL5h6tIvLGnYLnbYJPZnDOLfDNclDvmlZs0frMhHknIA7tKVynwuoAAuALyB6r/fCIKh6n5Zq
+wVKhnpQRmIHCEO3AjIxSpZtrvRZktJ/qM6xaGgGhoKdS/hEzsyCm8jkN2LBH46vkaqrSA8G4cYnr
+wzXNwDhci7WOaKnxYhANUSPxGJlfgovAeIv08Kf02A4yMY950hYdqo+i2ZcE6KQGYC0kiQpScYmb
+IDIr8y6Lmz1rOTW9qq42k7z/oADnu7jkYioc5ETAO7zQCzEJ1Ku6UZZZYzTiI8P/y5ryajhB2zT4
+EkEY3DAsk7VMlKrTe74NxLjqwsDDs7zPIT9M8q3w4RuIKi35sA/R0JoXvDcX1Jo+u8KMQj7Q865K
+WjwLwrJ6G7ovDKzlssCqwrcPlBKnSji+6sJ7I64YdBRrsxSPEA33CJOFaaKE4AsBWI31Y4/Rsh6N
+6AhN/nEQZGoJF1kJCascB6E1d9MwrGqp32qplvKX9PopQaNEb5zAh7w3+IoAHLxADNLEwLK3ZzQq
+zaiqTHSv0ckoWIxB8kKKh4TAiCOs8QoxVuQy6gu9CuTESnQfqTo8MDS0oUuvdCQVrXKKnjo/NloJ
+0tkgt3qViWS46gqsShK80js0oANDEGyfwLJADdvEV+O+lyi8HHTBSpTGhssakILATWQRCQu4UlEK
+LxkWf2SUg7gNjQEUMAmcL4EomaEetGstiaCJLRmY41tAo/KQDyo35ItFjCMv6MJKrVw8X4TKz0G8
+p7mgG7RBLIOvjpPFFwRGeCOsKyyziOtMxmyzoLvC/pYLQVGUEu/bQTEsRVs8PAvAssCCKa/kyQh8
+xvL6IArIEMRETMBBJ0chzOHju8BLLzmTPFEkTeO6t9JzvguygApwPupcM8isRMa0PDFMzooUzYkL
+vZdER76qJH8xmpr4m1SaEBdpmeZgitzIEbqInjkCCpfxCDBJnU0JPmOEmfU8JGbctKyxmxjMKGGk
+vv3QSnzLzZh6ryk5POlsH8RjqgeVL8vbK8XDN6+MLrqBrw2KwNH0vjIrxX4DIud7leUKPUpsPduc
+UMnMQcjDsp7Mwkz0yNNkNzUkPRa5F8t4HgsRjSprShAURy/kuFeDSRe8UZ6MTuo8POqMAA0IxQ3c
+/kFNzEjCCkqj+srPyYzkLDwkbRVYKzRHU7C4yxKGOsi3LA+MYAv1aA3jCYq/0YzuQJ2kMDD8XJhm
+aRakaJCMapbP67M1i7fn/D66AUpcpFHCkk5cBKwYxcELyABW8TkLos5NvKAK5M7oUtSNs7xFy5ru
+K9KNoz5sNDMggiUgUjzNdExcfFDbpFIKmE4sm9RMtL7plBJM5UUjdcWmtE/QgJAJ+c9Kqp8GaLOl
+Ir8bxVJCBSnAUzyejLNEqoANoDfInFAJtdHsLD1aFNHNTE4iJSqs7Df9qcmsYYm+0ZyNesPDoAqF
+mRAqEh/L8AoJg6MEIAp1NQufUjuwOT6y4rRO/vqp8RLSDYzODKJNYLygDHjQWVWulHLSDtgADHDS
+k3RVDJhO93rQ5EIuKtVU0NFMLEu6mZRSE9VEzqRMstzA50M8WIVNgr0Kg7XF1pQS64uADXhQgrXE
+Il2ujjAKqFKs74CtsyAivjO05bJFWpRAjmupbmzQa5WARj1Zlo3VkaXKHBzZHQRBmjRa1wzRCe3F
+Fg0xlexNPzMpv0uJpZQIUpkJJ7uXhFqlAoKURsEmCumJLaHT1iqlr2hKfh2sZOFQQzNJLIMlDKvN
+lDpZhcWAHpSADfDIC4DSCuiACMiACOAADApGyjw8/4CA2tQ+S+ywCr3cWww9qlVWybTV2sTU/ldT
+rtOlTW26IJlNqeii0Ato3A3IgMdVWAy6wGVNw7LcuJqyGgdDKCAUrHjDTW11uQ+c2gmk0hjdWOWK
+3ArQgA6AUjFE1Uz8SBGFTAa92VHUsBALPFHtzuVkx8Aizdy9pTJLxafDUqeCG5c0KrdylHjkDLCZ
+idDhtPIzkT9rxdYaTdOd1uVy3UykTgzQzAhg2IHFAA3YAOqkTch93g541IqlTFVbWgK+XMkdXp5k
+zJDVymC0zc50XQeFmgyQkp6k3JjVJoPtnJOlTdetTp+zQQLOAMTlAAdGvIu93OSqzZJMwA2rM0d5
+QAN9tG2iXClVUGUtVZOMLtpM4SZ9Vm2a/uFHzQAM+N/pjamPpFGptdItFUGsQonic8E0FFEBjThK
+xFLx1WFuCrT2LUBrGSxboj5pJNZ+lRZFYShVAp/W0p82Xh9XYkNSaz0uQ15WeVyYUrUMkD7Ey4DI
+9bmr6ADqJIEn3QAHLlwMaNxXXWEcZFnbbdUXJSlZ+1xXFS6ppVok7kkLcFiVpU2fk1nEm04LiGJN
+dtyU8jkBjtwYroBHll3n7UHrq03nw04zJj+4Ybf+WDOU6JefzEH/oFLFK10WttXHtUELaFgGzcQO
+SF16ozflWlpGqlT5AuCBBaKYSkG/0x/jvJVNE0Go7DhXq8nkC01S9GBZpCqpNFF/qaQW/nQ1C/3i
+4su3AH3X9qW18SKlpxPALhxj9vGX6HRcDHhcGt5CAu4AhpVox53dR40AErA+DbDkzLRBbdoAJcbU
+gIUq2tRGTi5llk1ihd7Yq6i3G9zIJo3maF5gAYaqj3ZYHERcB86AxiWBC8jpw5tdDZjdDXhkhkXg
+je1bzaQS6gzSIVUtNsRKX/4cHLRVWdRSUHy+u3pWAibdgr0KAvY5BxZqVUu8yk1d2e1JE7VAB/Xf
+BhXNaHQ5vhGsUXxGP/PfmRwdVI01q87YktRcsTTVCwpKeSbFxhwslGQo44WbDzKKzICXGoIb/TVN
+TnxcaVZkDNrpDojcFX5kDohhn4th/kedXUdNqWty3AsQ4GhGXAdla73u2+cbYYut7KxmUmnuSWdG
+LlapZKBuXobOABauAIZGXHqLZMVNZFXzaQx6ZEdFXNgVrlX15bRmH9KzRe/iYVl77hwGxw+m3JmF
+qdl80CiGKVc2ZOjlAA4IgdN+5Az4AA5g4srNAFNtFapGYguy4PDkMIn7YrcCqarKSv6xqpGEuMVb
+VilNTqjEtUps0ruKzn1za+tFR4yDpdmLuE0rn6RJGmO+2+usLuosXZ/W7I/WaMi9aMeNZCjV7LEm
+AW2qt8OTWGmOYhtka0o+bRyO7szMxMv1W5OU1ZhVYucDafK+weCe2eB+1FfdaZ9T/uRs5mqZbVzP
+rugTh9yeJmoCRlwSSOQMSDwnBcbn09oLpT29Zbjb5EjgrlhnxkVCrs6YLfGK7uimPTyilllo3Wm0
+dnFrZvCZbVRTJSwLQLMrpEQhU77/CzxHS+crZUN/dVXAs9JRLsWcPNnntMCL5cSTrVEvTy7j+sIP
+vOevmW6CWapkEXWH9LNCnUAJqOyTZeXMltmKTmVXhl7Z7QDfxoBa98jpXGUtF20tp94qxjKqBuGZ
+XVVpTlxUj06JRdxMpF0mZeWTrTfhfl6WbVgXfmQQeNII+AACjtnZbdzZrWWZZWgoPTwETrzRnk3x
+zWEjxVlwXGdU+0YXB8YApk2D/jVkBE5vaJ/l2RVgekPuC1hvEShxcefoN9dz7/5GnoQ18t3NjJzF
+jN30uCvJqNVQsiwpjCNhxUs8kz1YCnDz2UV1lkVtkK7IUX7JTiIVRSwdAhHLd0biuyKpqWbwKNaA
+cL+gFZ/dJzXkwu1s2R1th2WVu1pgLU88V+5lVz5tpXVdlpXiCxz3gQXxu/JtV7a+GL8rxP2A2ZVm
+aK31RBbqGe4AEJDd8/bsDWhYaI1oDqDybHbePEfpSU13jWT3THTjNAfy2XR6kK6AGIdc0ZZmjKb3
+K3de6oxh6I3zRw6BiO6A2TRYiXVUIB96Xy531B7ZkCxeEI23ve0+EcRGP+OX/gEd0l5EzgR/TVYd
+2BWO4loX4CiG1rKH3lqHelVHvMnE3XBtOmx8qhUUtDK+cfhS3g10+uAW6sOb4Rl+3pj1aS3PZnpL
+fVNG7Si++7vSdQHOcz1n/tSfTcFtZYE35Vo3brLHgI/m9no3ZIN9ZKFmWEOu5edF4OLndnoz2FrO
+edSe+RdvfOpkdl/0ZVjLfxDW8SkRYJkFCAsXMmDokKFCBg0bMmzQoCFDhg4RHHJgOBDihg0SOzyE
+yDEDBw0YCG7AcMEChoIXBq6EuPIlBgsSZl6gQKHmzAk6c1KYIEHnBJtAffb0GXRm0Z49GzB40OAB
+AwZBhU6IQGGmhKtZr9qM/pDhQlYJKy1ksOBQZEkNZDE8JKshQocKFsiWNClwpVisM61KiDAzKlGf
+PwMXNZpV50qrV8GGxXuhQgWxL+eOfDhSI8PMJk0OxLABLMq7J0HPPSkXNIW5kk8KjFl6LMvSX1M6
+NPtVw4UIH9Qu7KBRQ4cLBhUm5NCBw4cOBSNq/BByOIkIIThk1A0Xg9cLuC+UPEmTsWStOm3eBBvb
+pV2UDytkVJi7w/CMxyt2TPg5N/KQwAs6PC5SbWYEpQSRSRvMdWAFD8AmwVwVCPVTYTntRN5gXAFV
+mFFSPfBTUw7o9IBgE1K4U1ZjfVdWWZxdpB1GDC1knEEGCagQXSZ99ZUF/hWwdgF25VUlgVQhBmZY
+UD5FIJhNENiUVWSP+WTeaqwt9JlkNmpW0mxfmXagBDeWNRZZYs1F0GgvvVTXQAuRlSOBK2bGQUwE
+MTQSBs+NFMJEHHX0wUS7KaQRRySAkAEIC5HQAQjHgTSlWQKVJZBMDEYGmYM74UWTXHeNiRtDZsno
+GQchNZTQogmBEAF1LjrnG3yn9ncqCRCRRFxldLIE0wYMgvXVTAItqdRW4nHVU7A/SZhTVgxAcOQE
+USkA1QMgSuCAUFRNRQEESgrU65jceQYqQwYtBBIJCpmrAQexMgeRSBXEBFtqo2XL4AQXDEWUsVQp
+JRNOeNkEGoSL5cWg/mh4HdhoawSJtFJM271EkqwHr/nVZyqmFJOVGXEXYEN//smjrO0x9JC4mSF6
+KHwkXMBBohFFpEFy9nWcUH+AfkaQBVhuvFBLWuUYlo48dpZmi6MSSJzLMQIHHHwchfoBZi/bRygI
+IJSbqG8lTbkBnGpdLKDWN5Z5q1g3hVXvYr+G9e9WU927FU86URvkAz1JNdiFkjUGU85Cj+QbxIC/
+HONHGmGGbtTvFuxoTVwFSyF5S24FltmRD1ZTTRNA8N1Vp5kVgXkDgY4Be22xBSmNc93n2ms8pvQZ
+WnXZ9u1mC8U+Eo6XmbtQQfBF9IGLwHHtlbkXHFpzQ4WiCx/TTTdN/hx1GRFI8WiQlvd4aSJ5RldG
+4zInfUMF1cn1b73N1zF9TpMaXUTGJde9R5++HqDqWBqoY4p5hX596JSrhtdR8LaTIgEmKAygAAMa
+wCzHIUly/5KLBCzmGRdlDT5/awh8uJacQxmHa01ryLgMZBeGyaQ0FrgKv8TkGE09ZiU3gdQJuyKT
+f+UGAxSAjP60UhPQwQY2pRnhwVLSGhKKBiVlYlycppazj1wGM6NKVWa4xpwOJOc4GuGAB0KlxYQw
+L1bPMc5bRFCus+inIlDkWItGuMK7vPCIuMuAF/UTq+YBClH9AcnyjoM144SKioqq2gdAEEhWRYQj
+YeseyAZEppSA/qw7ZdkA6DLALa9ASgIIMZNffgUsoFQIgeMxlgQ2VJggIeWTEAiKXd5lkodgSTm9
+6Z1ymkafVGVQPlNTDsZQEpGBFGxXYomMJFnzGhUh5WCSs+RqzNZCnDCoV8Jk5Jw2Y6ZF8qgkAtHa
+SSrWmpzRqXeX6WCAvmkckFQEIqIC3EJA8JwMkmA68AkJjN5JRRGIADjqDMF0+gijLWKGVV87iWVe
+spq1kCUzD3Gf71iGx+AZRwQR4OBxkkPLUAnSg8zrwKFIQAIPGk4kFXkn+TJSIIx1ak6zsdHD1Ggm
+1zgGPERRSpEQeBhOGgUxQxlMiToHw9p9pnu+iZ5Pfeq8Chou/lQuwtKAYuKBio1ElwWZiytHMpkp
+NYlMBiPLRG4CQfNE5jsx7Jdk3CUQ7b2Od9vrzkgqAr86dZNideleE0FSwXga7p3Gadlx5tOBfMZs
+A/cU1EbRtU8NcPADKIvo+7SITvDB6WKOIhNZEnmxOukRBCFIVKhCQAKK6jMEeT1BBgKpRZZZ8Xzz
+QY4gOdIq5tASl5RhlQUZyRpbscWalGFYk7zzv0uZpnEOghtWbkKke93tbT7KDWjGIttxnQQji8VI
+Rvj40Q4CapwC+t6UqFMnjMTpJOLyjPSEphHasYmE3hHYY1aDlMOE5UujSaURXRcxOaVknEKL7es+
+SBDleMAg/h0sCNeow0ff9I58o+XjFeFpkBMA51BVS5RzqpYy5t21UIdlFXWUA6MNLLWJQowgSZEa
+3ZR9wLAgYBpqp1MuDoRgN9L1rDo3vMcHY9SyIkAO1GSJxaxdhiSe8QB3PgOpb41GS7O1SEFbshnW
+cS4vkdOKUq4ylANKhQEB04peunQx7Wy5vnUhU081xiMBHwfAGezgUklivoKoNcAe7CNHQyhgFzHn
+x9tTXJgeE6a9LNOSvGTpgZp7VFca7mK4ZCvGnDjo/mqER4zOwAlQYlfFLhVQcq3ajZuG6RaHRJ2I
+KjFpRYCodGG0A2K8LNaO4044n5lwQgYvLq8L21HvM13q/vyAqAOZKHoaJwQ3ljBqY2zXiPaxxIb1
+tWep018PYKC/FszZUvuLMwt4gL5r4RFKhPgwEQoxNN29yGlaWLYnLwY8NxGuvWiSAbhEgIctTBHD
+JphUAn/5JJ7pDKs8wD3xlYS/zIYTh68oywxakXzvzCJ8PODsDMsoRjjDkYHGgpEWpgZ0OoLU2Lpp
+kg6gpNBL7UB/m/1jDoN82SCf4LJ3jGCWMVy6k2Z5fix7YJaJYNctrjk+DfsBzbKYihsULWpZ5tnT
+jnapxmF0Bn08PqDudee4xpqgdn7Pp7VT1ZclLcuqNp1EXRbVDxZ1zUEg7Wrz19AyYojC4eO65dDO
+yNjm/tnat9wZ6YnkYAhJZrmVlDm9DAtbNOGxMKXkt+nhbu68C81sXWcBgyhSesxxdl5D1V99wna0
+CZ/ugbMYKouKdO5dBotdtjpEbgqoIPqW3t8iwux+OpzZIjdftVMSezhRR9hY9LReWSxI0lpWtPTU
+utCDfdmdmzqQLcYnPhHla63vfusyl/D5PJO1RQ7crlFvcTszKkjNCgprJa75zkWAzxvjOMYkSA4+
+Q3V+7JNABBlQuMgNovAOs1U5pX/9vSfLyMiCNyIofWtMwN1d3EhMEEx6aUkMUYBdcMVrOJPf5Ax6
+eAt4TZbODJPQyJfG1YXpDcjacZhxNJsFqVzWgQD5/nEN8o1A2N2VdGUYm2lM1lSEVDFMZ2QG/+HO
+lyXc/BkaFsFfDqrdCexgtWURaKXdwlUNadGaYuVVjKUWouxVO3HAjYXACPSe1SBf14mfRrVfzrHY
+ZXUfzNEawv0gweXgI2mE5uUVPrUfi61hO6Ha8U0HHHLarf2eIJHgcWxU+40AF/raCYhASgyhwnlE
+sy2b6c3fdwHZuDgWnaDJgGhgDNqbVHFb3fFMnCBeS5gHxjGGC1lS35zUINJONX0LIt2ft71LNi3Z
+xnyiIYqP/IGgEo7W8pFf12kU+amTEcJZH33cO42PSGUbnZAESNlfpRHIIIJcLIlcIcneeIGKHe3T
+/jvFWD7B2Ahu3WWJn2fhk2VtFq75mtBh4XxgXxqiWjvRU9jBYSC13z2RoBZpgMwBjumpFWVpkfiR
+ID6dAAmMgBT6WhuqIRSSoEaR4NOV2PhtFjdiFj0eW/ghCskRBPzFyAYWHrNpiQhpYOk5CkUyEgUK
+iBHRiS6VXirqGWUYCJL1DsRJ1fw0m5xgmLg0TTRh5Ni4Dkxo5HK8n6wAGPyBoPT1EfTJY815oa+J
+nzXyWhZhVn1pkRT5VLRhkUh9jcj9Tdr5zsWcACwxW3+dQJl1wAmoI82FivjBSM0hIdB1nXNgYxvi
+GKJYzc6NQPvhGovRUz4em6/ho1paoRqmn2id/h/NkWCMHR0IsBmQWSUU8ppl6aOg/KRG/aSNWaOu
+DWTXwaI56uNPRmamaRHWzB/X1JeAuN7XvF9KyZZnXkxEcuBm/iIxYgxJ0U7jgcRRTVCQAZzsvd/J
+7RfJBRwheiJlCJH+/SJVjoTrud51lV6tKRY9apYJMKZm3Vw1DqfXDZ08WVAywpbCSaX8wR9EaN5T
+NhucINxkyVx0wVxXspjm5ZM1WpZe6tqNnZ8e/R7y+SM9baMIqOU/oiAJAqVbitE/BmZAYg1m5ZNe
+JpvYaVi/PWO6jON7pkA74aNmIeg+BuU9jic51md95pw+GqgU4t4P9tGAGCNVMlsG1RdPxYlj/nXc
+9LxfUkXk/U1Wt9BXI56ZGbIa7cWTsy2bB2aRb3aYK92f0PhiZ6QELgXihr5f7IHc/VlQgJ6lYjnH
++Y3AFM4jPQ4mNgodNqafB+zlDmKAdO4Y2j1lyZEdlyLcZSUcCFilGDKnOtHTlEJfogjKr3na1omA
+0yWKjQnk+IkfCojRCKRAgpJjCNRpCuCpkiqpFtbcCYQAheKcWyIffWZWW/pnoeQTFMaiCKTAXBIq
+ntJnO1GoYdacWo4AChwmOEbpT76nkqYAr4GcwMXostGkBZkcig7IkJGQ/l1AyOUmrc4GUvmThoFU
+1g0YaJ0WSLCi8wzhCZCdOp0Ah0nlxXAY/kzmn+xVW0pWJ4Hc5KE5VRZ1z135EZxq3XHio50CJaEi
+n6eKwA9KmBg+R8gpVoIt2w8uW0RKJ8JZUU4exw9yY69Z4Zh6p5pOxzy2YdWcwLyKH7dWoxTSE6ei
+4D3iI6mSqgigQJ9yKghw64HiY2btXLq0pZs6Kcsg3B7CZYKmgD12qloyrBT24Qf0KQr8qZJGqoGS
+qppWYRWeGgqKah7+Z6gM62kNCCE25X79k9/E21poXDTtqLwVmbZ9y1oYK6PFE+UpGweIYbVJpQnA
+34V6lhkaoxNpqPx5nrPiTrM2pSH6n5X8kyIRneRla7a66WUZ7IGq509uIweYwAbYrM1a/qmVGiN8
+WKUF4e2CfRyMPOXQiZ2xZqWphWlevY8xhumhthNbthPGAocYGRY95eH4cWqkvifBosCe3mmd4lPD
+OqhbsmzNhe54epag4m08fd3CnqxGrQAKnOwKZB+FKmif9inAkoCkTiGCVs1mjeNP1mnBpsDdihRW
+ViWGlpzqFaP4iKLi/SJTyh6AJiJ3cIf2eAvvaI0F2VV/iR3gfpCGkiRWWik9DqvNsivWIlxDSuX8
+ASF/wWbT0OrNjGaGDpViNe18PJjVCJ0ghd/a/uSn7RWMBC5lpS8ISh4ZghzUqp5VKpwJhAvXmADL
+Ids8esC8Jsf22VoIZCVjRq6a2ufA/sLnwkoqPTGspHZqCjBs6x6swp4w992jkyIq76YL8UlwyVkh
+pZawpJZwnbLuyooww2oUPpKA76ZszGIhob7swdpuCXNqIN6t9H2cCQArEeJS2VFiUpmZGYJg6ZVm
+AJpiTMifciBtyokdpEHejpnc3dKo5u2hcVilCZyACWDlG1fbAs/tsCZYE+ZtXv1bDg5rafpNbpYE
+FhUEYP4UEq4xqv0eFAaqo7rxG0ft5GGl7/xgAvsrS1Kyb6Av+SacGGJNG1sh/WIlzv1kVv4wsrXf
+e4aACTwsPnEqqd5pn76ukrZuCdsuLa9uCrSA6qplCbMuwS7se7bfYZ4Anl7wnn7A/huTXFZq8MHK
+cg+vAA6f8A//6S4DseXe6T1C8MAep8ly6j0CbwgoXNzabVV6wHSMj+mdXBBeVzWBbTcx3icq4iN+
+zUbGUoCV3BhGJ2yya6QFax+S4zDn3GDunBt/gBi2MaAQrwJ7wBO/bUkscNNEGpC6hCO2Bmh6RFIe
+HUURblXulQeIQBs/6jxSct82TSO/nyOLQNop2xsba7NZZd1a8rA627AWa7mIUZieAEFbIbfWJ+/e
+GH0+7MJSqi7f48mygAiPcKe2wAostTMDscn2qe2KkSwDs7guX2HSYaResJimCz6mMiunwFK7wArg
+slqyLgq0QAkLMwqcgC4/tcha/jMKSuENR2o3lzALrOxGH8eyHTMgd8Ab+3Xsse+ibBlcERo6Oysu
+YYb+mVC2TSR8uBNHP7Re4+1fh1zUjiuygathJuwIbOMFO/BlRS1W0q/gOg+kgZxRWq0WbQZ92Z87
+K9Ig25UHMaMxNu3ktWMf1qNCmxxzIoq/ynBMb/QfclidODIc95G/Nq349WFmIao+Iig99eGdoqAJ
+1O4N46nr/mlTaxQJM6xZbzPrugAJtAAJLHV5G7WksnV1f8Cf2inmdrD4+TXLpLLVoKCBmjAOgzVa
+K/WodvOocirDTncPW+Pm2umonjAQL3UYJgpl+7aQGhVIZFFmtm8gSp/Iuc7Y/j1lihxabEwGtskX
+aifcAvMofy0wnBhw+/wgfUa3qA5qN5+spPpawvqaA/8ggoJ2dHKNmGKWMQ7r0Vl4F28oI2lNFtUJ
+1qnTSjsbc8rwqGlEqr3TukbnhULydFAy0voroEzyaGNlcnPj8sl1dNuYKMd4T8e1yZqAgQJxgLvy
+CDizUpd3pzrzWC+1Uo81CjA1666ALreuC6Q57Y5wpDIsW1vjFFplmF6wqL7unaNAn5u1LIO1WMN4
+Er8u69Jy6wZ46qIAmltzUiv6nf/2BrSxwknejsmrXhtHHAfhDjKkuJDdQsaf/iEVrUpTZsLJBTgy
+kMIxpFXn8PqGaEOadCMo/h++551fNw+DbKWubB+SoL/662Wta9w2Ld4+Ldkp21KOSw6GnN1SXoss
+XKlHpxEOKwaItt4mt7RPKaKf+vf+b6gPrwRzaz+GasBaobhWdT2Kq6TeYx+isJr3sCszsw6/OS47
+86UT/J3XOX6TtzPvechecAkfZ1y27nu+baXuKVvfeaOD9ZyLdXnbcKUXO1jfqZ4/M6FmIYXebqTf
+MqPjqb9GuL8SLmD7Bjl/L2yCluoZY5byF+8ssV82mvSRaBPR35ZFtEecgKwuxIb6tVMmHNVyuXL2
+M1vnO3eXtwrssAkTO3xeMz42e9Ni0WU3jZYmHA76TqJU7bt+YC6W3LQX/thxwK1fX964V6u5D+rW
+oeBvc3nUKq2VL3cf+mtx9j2+Vy4xR2pco/KgEzV+93vDljedm7B3L/Wd47kL1PmcKzVYFzvDmoAr
+o/nJav5ajzCne6yNibArvzLCy7nGw/kr9/mjO7UzQ/Wd+qsJs3kS//sKzKtWc02/QrIM/6c4z5+c
+VOkXmyGHErCrK6Wsv5Ey8ubCSe04n7aQxrTd6lH2Dmxua34+7rIJnLUJmzefI7HGC7PHSmxWv/yw
+mgD6w3F0HlwhYRHtkZ2VUhQRsiLaBQfUGrDYj/vdPrSOp4C0ezRAnDDBgcOJEAQ7nOhgIoSJEyBC
+jABhQkQIiwdBPKxY/tHECIseRRhEMSKFRxIpTpBMkYLEyJUtSKw4uQJFChQoVuTM2WJlzpctdgLV
+iVNnTBQnXZIUQUJESRMlWa6MCLVkzRFEdbbguSKFC65fSbioidOrz5sxV/CsSaLlShNjbZ7I6QJl
+yBAZBYbwYGLDiRMZPPzd28GDhw4JMSgMnCHDiQ0cNhw+DKIghw4ZCBfegBmDBwyHN3jggOFChguH
+PTDGgGF0htWuI4/uDPhzQsAnEh8eqPBiiJAjRHj0m2IFjR03aNBkQXyETrpdryJ1WjEEihAnRGQc
+iHeDicCZF/tFHTiyCcmWQezFYJ4wbtQdCBr+bv6x94IKK3O4a1kE/vWmFs17KCK7MqrII6lGIOmp
+/k5AIbgE+4OqpatSGukpuUZiAQUVamLJBaS4IsoFoLzCCiehdFqJuBNvSgqFEyS87iqXgjOIIplW
+bFGnHVHECYUWjrKJph1z0vFFFWhi66adxFpyBbuCA0FK8U6wzDwO2GusMA/66qyD0L5sbLzCvszM
+MswIy43LzzDTDIPQOvvMMNxOMOy9hQhrzDUvEwsNvb4oo843v0YagQg05iCkjjrMCIImklIawYRJ
+Ie2IuBSCswlBi5oCqcoqHVKMy77s9CAj+Ar7y7zGCKqzMA4MGyih1B6DNaGEKNNPo5D6S3BQkO7y
+yEGDfEuhWOw4/vULOEivWwnGmkIoCUaSZlypueaEJC5FFnzKCUmzeCxLq7SItOmmlUaCEceQNB0u
+VEmb23DIFUYECqgYeCR33hFRcKHBmt4ayieWVNDWR6Ls9e034Ag6SKCEHmLIhNrwUyjAwLgkk7CN
+7cTNM8s60EDOjA3D7C/MMpi4gzfLhFU+OdPEeCGWE4qMMg9E4KA/u6LF9AZBFBVkUaHr2AGnlTL9
+l6cRKkypJEixE8GhkaK9jrKJ/BJQoFB1VcwEzByuUyHxRAvJsrFRqxUEBivyS1dehSup7QSNxc6g
+FBiqzqFlm6rwJrqpFYi4qdW9iqqbGlyRW6+E2opIrewVKoYW/iYfsit7d7LJoYBdXIEiGlFSi6cW
+uP1q8so9p2nctE7silwXnhvr34K5QjcttXSSlNONQqoSooYJKmhWmV2WDITLVjWv1L4gftU7ycYc
+Wb7vDMsNsFmhzwBkMVe27LuxIeLUo+uWGLqOP4QWZI45arjqqaq4MpxpufdOMKe3TkLX2M17G/+u
+3Q/iEAD1p1VYooxDclaQgXBpUhCjTvhyFi2PSCw4FhGIdaSiKab1TEVMI8lIXqSiaQmkQZnyUbvw
+hjcUsMBeKjCBhrrFoxQARQYoykoMXIC6ea2ABSbw3IbQxRO5NAhGIjgaCt43JCDNZS6VA0oKWDjD
+oBTpftpC/snRvnIpJC7JWaWbYQvYVaiUKIwiftlZzmTFl4UoZGYDed5gMBYgP0XmO5mZ2JwSwh74
+4Ec+KzPZa7b0xr2ERpC2GshFNjKpaO2gDoTAAyEUBUmhZYEm56oK3jpCN+swbVoq4ta3sIUpc13x
+g1Whm/gAZBPfNIRYq7SM1eAzkIYh8jpSK+EErXUg61QnWhSBV4ISdC5JtYiYDsniCpyGrkm1AEk+
+pMlTniKUnmBuBd/KCQ7xJYMY0GByMpABDWjgghp2ayuOE1KInCQktbwFKCvkIeQqJ4Nr7ohbPjTB
+uFRgwx0d0VxCkUuRWLgjYKIkJQbKDkMm0hssPSQ9VgrQ/q0e1p7K7KYD/QkMQR5qHjdidFKgUozY
+PJMbPd5JMokJAa4MsjaFQahY0cpCI+vwyJjWQRBbeIqPQhQ4SU3qaYBrETSHc8QQpcVcJEGmps5F
+k6nc5EHBBI60LgIRtvFKRgyhVlOM5cEUEjNBFHHKi8biEBVhJYtITJ1cJEXU9wnRW0AiK5KAwoIa
+ypOuNPhmDLwpT3rFIAY14Ku+qBkwz5VkK8ZEyVvges/SVZOvQOGmDPy6AhmoAK41bNy9WuBN0nGr
+QTyMZk3+SSR8Ta6rwASOQE67LOD0hzKDSmkHAqgfjF5HZ8LLGag6sLYRYEk/E9HPgCxCkIostCCx
+QtV4/lR2x8JQZiG1ouVKqZO1FJRvUZGk6RZ2Wihgtk2qPWOaWc0iFJyGyC2ZQ6bqalc72w1MhBZK
+rS+BmawXTUVBS0KcsFSU347ASItVwcphkeosK56gBUrb4k50wsLMNlYrpYurTmQgzhjcwAU0qAE4
+JTwiGKxgci8knVoJvEKhpgBJM5wmt1qwYcitoAZayWZyxkkvneALngjmYVp8SBwYldjB76whvvxy
+HbuNL7qD6khExseB8NVSpSj5HaciEhHh5Q1ZgkKa4JoykgquclIJXdnXGFMnMYHPVDszyIPESJLe
+9GwJaGADo7KwBDM0SlpZ+whwd1s/qMhvRgrqbOpe/mQCF+okYC4Eb8Gu6DnBwgi1vTJjU6Q2UBu9
+xYeEIqbn3GffSsbLqD8UCFfu+cJ52XNeQGIhC1SAYikGVCuTRdI4VazNbVJ4m3ytYQ2QE1lWV5OH
+xGknh1ANzSQ+5cbeIpc2uQlOvooznJl9QXFkAIMPN3ayRNqRNZn5Tn1xOLPZ3S/AouyrjKw2q/8T
+VP+qkx2Q9C4iE4EIRd5CtY7cJN4oUQq8HtRL9riquXyp0nU+osusBdmW8usZf7VSkxYAAQ1ZCMIu
+If2/lkbkzL5J17MEEhwL1WRgBQ5oVshFbEIPBUOFQlxELCQxawnTJlcpklsovaOVQ/MrHE9RFZG4
+/sQW+JAFLDzBYr8SUBPIUwUxQLVktcnhcMoa2X3dJg2QM4NaP90Fcr0dUFJdzeUASYpCYWfWuTXO
+BYuzwnhV9tRdUIMNjwivC5bsCyzLzLgSJ59JVMFk8Xo6vk4Lmr6KFgkrpNpasnQqyIIaxRuCSAiB
+ZFgwYkjidvoWTKZEcFsDzqTuE6CCDMoiBJ1UvLeIRMAJ2e+BTvkKnGAGNNxAd75ZrUcoZBF6h35q
+MwJrXCblpHuSTltZkTvkUFLPnPilh0gkIoXMNSnPJW5FMN/5C6HJxU/WfOco4Qpcs3JP86aO196s
+3N3laVdterPZNWQBN8ee7ORQrgZl/6ascyKD/hdETtu8zgkMvwhQHhU97dv0pjhhwK4wLOlewNZi
+oAC/iVy+5cF47+PGZVzmSpymBt4Ex1ISJCUmJSQ64l0eTz+EI282aH8q6Dc65SrcR4VIKPnmbWqQ
+6CmYJm8USWoATvQARlKgQvnOJdBqj5MIyjrMKLtSAAnQYAtyQFoWr1fS5X0ahCGSglDMZUmcCSdy
+z3NObefyidesydpKSXbk4vNmqEJyb7xowloqjyaAjdjyCacuhYh4CEmyLis0a3Uox5vij3LyDl/s
+CungzgbwqgYgC69sQAD9ENdsTZtUTAU2TLLSou0e7OM4BKdSbLJuDZzUb+nET9mWjum0Sa7y/goG
+pC0RkQTF7A8G8orD8IoOkQmJ8AZeeMppHI/Sous/LjAvYm/dLs9SXGIJN1CF3McvaOLnvCUllm/j
+DKKr6I3SKGUJBYIneO6mnOLz7EmMQCgF3s0hYCAL5mAL2idibASruAyJIk0EAgPJoLEiAm04FA1I
+NvD68oknkGSFCmxrWrCZAoZzOMSzEgyTiELQfMisgAi9CkbQPuyHXiSt8s8Tn00n8kna+CoRSbE4
+xEmz7AqvOOyukI0SwembwAk5+uoG8EVI6NATJesKFe3GBJLEPizbzE4TwenCoI6bYoAUvcmvIowO
+KYcSTbEiLctbSPEhrwnupo7U3oLyvmoV/t9ifpBR9rADmOrHKhjPWhqCCdEFA43PmZDpKHmKh7pQ
+rDSEA99n624MRXxoIN0QxcYFGbeyBW0HJFQgCuYADWggZDJgA+iSA/rMQUzgeAgjNipiJZirTJBM
+XY5MSuADBPCmxJ7CIkjAN0ggUOzS2JavKwOGiMCLBYDxRwjNMgXNhazy06zpKODBHhxl29KCsnwS
+7mhInrapBfzQrkgx7wowIvEKBmxNECELI2XgBlrABdjBHrZAEe2vmopOr1qoNK+PcjJLI13yIi8s
+r2AyI53u6SxLBVosEnei6O5utJBO2t4PBvxQBpYpcVRga3TRBAlF8kBIBztKWkZwKSMN/m/64yhf
+sEE+qQUlj6d6aNDG0oVscChnKPc+b0MmZdAGrTicAAvQAA3MAAmSwypJTPLAMPIQBwVkoM2cgBkw
+FEMFwYg2ZwQ6oA0wlBeYgRdqYMk4QBBGNEQLUoBOIAiYwRgwdBqwYCU4RAS2IENfFENhgRCcIAUK
+IoWYCR7vrw3v7582JNiO7uaGr1ywkwQuAB/4YQmkRtRmc3UC0BBV05s80f+UTZ4gRxP7UAA1khJb
+Uwa6wh784TefLjmqaXWOsvqwbxFTrCG7swbUbkwzUvze7xRfMxD9Sky96e70BV+eja9mQAAxUvko
+a0Waox+z5pkCbawKJSRmD6wspEGi/nKnFAT09otpjKgFmREnlhCTBueHkPF+htTXPg5fViALAkEQ
+AuFVYzUQ6gAJXuDoVojn6ukGnYnnViAI+OEfhNUfvMEwQSsELsAY/sEfhHUfnAAEPAIELmAchFVY
+88E6XCIEMGALmJVZ/6ETPs9DlXVYu3VZ/QEfeOFJeKqZju5bKEsKF7XYem4zdyQG3HWxSEcEIgAf
+/iEISIAQtqFHkWS0wAk5+UoApfOu7BScUKANvGELWPPCFrYlLQycArElIYst6CFNIacFpO4j7QVT
+BOEbHIVAEdH/vqk1c81iL8wGIOuuJnJM8y4A1W4iH6s4am0nssmb5m8OIQsohE3Q/pYxtEqyV3nq
+XXaKF+XGGGskXTqE48ylCy1N+SaQp9SSDYuEausp1RCr56oJCQRBEBAhbF+VbIUmCFKtdN7xnrhW
+K6jWQ0lgH5ZVWL2hOjgzBCRgGqr1H/RhCVyPAxiAWr01HxpzuyJAC/yhXD1hA4yoAyQAFuZ2WPdW
+WNnhBkJgsPiRxFBt6yjLxiDzdgY2Ee0V6/gKSUYgA/DBH4LABVJ3HJQu2rIN7kiRmbpJIycnAO2K
+Ne3hH9Lh6VwyB3YgByhxB+x0BzCSBlbCHvhhC1AABmaANmvoHYHg4YIgH4gViuxVTufQJWkAeI0j
+B4TXeF3SZWk2r8gPsvyKrxpL/gClDfyS7jlpwAZaE5xQjSQHR2ihscCeDwp9RHBU0fFIqIwIRx59
+JMcqFdy2aJlWxGme6SpfaIXmVdTa6v56zgyABmggCREIAWjQRxCIQDjzEwbc0HNCEa5QoANIIB/2
+1nX/qQVGYALGVVj1IQjuowMa4Bsi91q1g2kyQAsmFxY4QMcmAHK9dW8T11zhgd4UUC7qV7F6jrIo
+i4U2s3MDChFZwBMXUiukjQT2VXVJIB32ARaIY5vmz/v46jspUQZm4DbJDwboYhzywRhYs2K5V37T
+eAeMV3hrgARKAE21gNnwbrJSIAjwwR72mB3yoRMws01fACgP0AaIt3u9V3iF/lcGXBaccBc3M3Ji
+1Zg2NwwoMfl5zdfWYOCS8yk/KUuxjpSydu6sUhkfQW0JRW9GjKir+vF+vDDyXtBSUnD2JvPzns9r
+u5KeTAAGUPmaskBsxVaDCWFsx7ZscWBcYnIFjLkFMJk2rxhJQqaI/WEctmALcMCFRCBv99ZZP5UD
+HIBah5VwJ8JsLsAJ9qGIO2EhBmKIJ3cf5HZy/4EXRMCzss6ZmMldGwzrSCezvFbyeEQyPQcESEB5
+g+ACBpk4Nqz30iLGqJkUETZ9n+gknGA3a01i/fBgjXd4MzIFOoAeljf/pIkDbiAf9KEEUDgI+vmF
+AtL7/u8ig9c48DinW9ZO/p13Ju0UT6MtZv2PwzzRZpPtNluzBr6l5+q32EgHisfzqN71sDrCVDlp
+azpqU33xvIyJraQQW3YqUqZ0HZ3JGJsJiuk1baNYBpL5VQkhEJi5meM6bLFgODkMZ09WfdVXJlJ4
+b70hBtBAELLABlKAAphhb/NBSjuqAdTZWvcnfi4AcSXXE4KYBfQVcodVH1wgCEqBX83VH+yBJoyZ
+sVLt7kT42TpXBW4VO921JpwADZzAR1zACShsCE26i4NAA2ogCGKABGrAtm+gDigp22oADdrgBiSL
+BrxzcqaLELaABUjgBoKgBijUCVYXDf7YBbagDnJAm3JgC35AnJzACdgC/k2ZFwUYyXidoAY0QAvy
+IR+0AASomy4cJAjqwAnI5Qaw2wUSFLKE92JzOpJvIAeQ43hrwAa808JmkksnEqMxFnfH18JQLRHT
+4uie2vFIzA0PMxoFB0lCK2RTETPHs9IEVGtfMffiAvJehFK1GtVIDJmAkRmFQiTvbrAF4Q8g6Q8Q
+IRCaGRJedQ6WYAcOdZtY+/1e1nxROFir1RtmCAgWxbxj2B/0wQnGkgMg4Bu81R/yATgU7QQuYAv0
+YcthYSIkxQI0W1jxIQIqIAJuYHf31gyao5pK+7QlK8Wi2uo2LLVVYCm8gVnzgRd2Cxb2oRzYgR/4
+gRm4GEr99Rv2oRNC/oAZ9sEb4MEf+AEWaiIINtYf4EG/NdJMO2HMHx0EvGEfjIEEIkEf0qEclpUX
+tuEf+IEebiAFmCEfvGE39wEfeIIe9mELSICQ/YEeviEftqF6lzUfXKAc9gESRoAEjGEf+MEftgFT
+OmEf0iEdEncadDoHfMB4c/p77RR4E7wGcACchPdQyfSa0R3uyK8lA1F8bSAH6jeK2/CF2jXbNjef
+oIhtq2grO4oftW4KrZBDhOQoz+U+c88EP3Uo1+ocS2dDTiCfXrlNqfm441rHw1aDgUaD62AO1McM
+4qw5G/kFwGkGZuAFYICh81lYvyEFCpAGfmALnODVNzsIPk0EplWx/hPtJjqAW/cWiBktAohYzUkg
+NRKAECaXGUJlSEuTUsayIWNycsYFBJA+H8bBH3r9AhjhHyY9Hf7BHvSVX3eABKi1EyJAWfdhGiod
+HkigA6i1HLDdG1gsEDsbSg0dFjRAyxU9ErA+HdgB1unh6v8hEkggsbeBLai8BEhgY7VAA14dH8oh
+2r/B2flBH4yhA7w+EjLACfSBH+DYHwghAjqBWb/B6/FhyIN3B3QAj+OdBg41wdHdwuy0eIl3EDOZ
+uW8zI+3YOOK3e8GJguk1ETfTqTWk+J+4h6CIwPjxDbWSmRokbZ06+Lg2go9W5P6dBY1W+YB2MyO+
+54hPIFwobWGg/ggaSZI2+A+C3K9qYAmwkabmAAucIAfUbgYGUQbYQh8AW7JK2ZhJYBqKWB8AYsuK
+GCxQVPj2L6E/fS5GsDBRMIMWfgn/+eskYgWLEBhKVfyHT8SJFBgS5FP4r1wHFCtUuFTxQsUKFCTK
+lClhooWKGDFoyHgREwWHcv5KJZj2j1mETv/SRQiiLx+JCPj+BYkwzh+sCEjHJXjzz14HF/rwlSix
+L59PGjFSbGlagoSLCAiVEvpHL0IJfP60JEj3b6sxf99IpFiYgqo+Jx3g/XuToNw/bwla7MM3N50/
+QhWm+aPMtFyGSP/gJbjhj18bGjl26MiBY4fs2TRk25i9o0YN/tk1aNDoTcPGbxm+acCggUO37xoz
+dsvWsQPGihUyNL6UyQKGy5bYH6pIsUKnCRUQU7BgoZGFzPTpx5sYr+LhiZYoULSYviJnSxMjwadI
+gQJ/AZowHYHvEdgCehq9p15LLZwQX04sJAhDEmMEgscfhBAiSBYzaNdTDLcBkYUZgghSRxZR/OCb
+DCKQsM9HhbHlUwskMFORP/k40QJbKWQwTo743CfdfSC8leMqJ6CgwgkZwIISPiMEGEIE7ORITwjx
+SQeDDDCwkEIJ2ZxDZhn3ybCTDDLUAEMKItjTVwJ3lbNUShG4kI9UVPmzBFb/eBKBMf9Mk0AQ/OAT
+gRP+wBNB/gL08OPEmjS4oCg9N/ynQV0a3JXOVHBeFSQsGgz2jV4LnQWnFnvlcxWOpbpwWWabRQBY
+JAlUGgFpTpWQjz9o7NbaDjjkYENsNfjgm2wz0DBDDjn4RmxxO/y23LLIFRcctbux9loMKmjXnXYw
+MKlefDqdd55L561gXrntxlduuinIkMK3CcZHXr3knWdgvvm9NyB4LIz0XoIJencChNN191B4LBGo
+cAsS7wCEDzawIMOZ36K50282/IAFGnUIEogZUbhAgj45enNCCzDMEMMIFwhakT51wNAlCpmipE8M
+JsTwwgwmgKCFP/5UBMsIKty3gUcV4ZNCTiFIgFBFWbYQ/sMKL/AUg87HkAn2DS7Z8IJvL6wQggt8
+BVFBG6VNwMg/40TQgj4MRWCPVVhdxNU/pQYBkgZu55NOOvr4UwdrNaRAwjeLapFCB94ktWlTJJRA
+j94IbeWqYYh1QI8+WrSAjz43ZHCXNxHcEFUJEwBGSANwEvJUWSRE4o9TZO3Txg4/4LaDs8HXFnxs
+trlmcbDCMTvD8sL1hgOzreWA7AyvtSYuuC2p9+W76ab35XcNphevS+F/+xK46OIsvkwQTdgyedMF
+uLAJD583X5Ph5R8veu9FuJ35DOgEBPoPeq5THRWoiWMxwBkMbHCbJZRoC1pQWUW+8TM0tSkDSFFI
+PiKB/gYs0CByQVKI6Vqgmxq0QAQTQQksdDKdDkDJImEhQXxOEIFtfMQeKTgB+3byAieNCWznMJOa
+cOYbGIiALFahgBbe1gl/0OkG+9BHYviiBT91IgI42sZTDhWBOvxDH+mARxmz0JsdyIAEjfMHPrKI
+EGPkqikdwNw/nOAnzhEmAyU4VQk+pTbT1ckbGWAdPm5Aq80kIG+CIAFU8KEBXZGgbvn41Q+A4Cwe
+yIYG0HmNbIIVvGm1BgfNwoENlNOcbOUmWLGhgQ9CmYMZTCtrW0Kfem55ni+B6yX9Q1ctfbkCLmXn
+lt9aAQGjZh+IoCAE9uMPeSCSnyX9a5khCBCECDhN/mg2qQX/GUHCEsYfEYgAQFHbDry0k539mCAF
+D5oOxwbyAhaM82gKGccNbFDMEVhgMDVzAhLmEAgiaKCECdmRGQ4aQheggZ4W8QQKmHOCDcwwIUMa
+iD63wdAstSQGXoJBC3Q2RLBpASbW8tIKJskXPIqRUYyQYgRkEJWp4IMfQbhAkLY4mGlkIAhujEAb
+FhWBCMjFBTeI3m8YByVGTW4aESBE7jpAgrwFYaBF6YCgtkGCDnwudKqKylVg8ZnV5Skz/4hEBOAx
+K57iowO6upM++IGGG/zgkkCg2A58QD3qDSsHPHDWbWTzSmLVwFnB2UHzntUsGzxrWqIMZfCCBoOz
+/kmHmOBSX3Z0qa70/RAGBNGILn2pnbOh5wY5IK1PRiACFGwBEp1ogwxOgJ4JwYubIEgBGiABiS2k
+YEq+IW0Otie/3t7gBsvkwA0I4QlIIKGHsD0g+vgDAhes1hORwELXXIazGEiMAyQ4ST23MIc6mAEJ
+MuhABxOyj9HVwAloCIJkatYGQeAWEoLQglM/AosU9MZGMzwaDxWYmBIeLUvfKhvQsgaCMhDxGCVY
+AVuC9hslRiBzdRjkBaI4Rbtd0R81ndwWPVOqCiKqaPQoQQfKgY/czMYFjKOKVOLYgZZ2KqpWoWop
+LsAMwphKH2cpXRaiqo8+IUV1QciHPmRAq3/Q/k4yW/kpO3L11BsYOQtBoBgQMPmD1tQmWHWdzV6T
+5de8ypJYzhKecIJnZme9Emcv+GEDHRi+H8qEl+ecM87SdTbzeQt9L/CSCUIwjn34Q9DMuAAa2EFP
+N8ICBbCd83s4sIVHKSQdQVAbPwadjyxAqAUj2II+9gFqe8SABN7YRz8Swg9vBIFJ5kNnfXiRN5TQ
+YxUEkgnOTtCBDlCkIt4AQQ0kaIb2eqZmS8CaDVrgAoLqaGSQmASH0BCJXScEFg72WQecRlHroOAC
+jqlIOULQIxrEhE3oiUAZjpENUZTgBGo6JXOW1YIOOK4wgNlKaDTQAh2VQDFZDFWgBqUBwK21/gNV
+obI+7OEbHERvB5GQbllymJTbNeVFmdPCQAMT49K4wKn4uEAHUpXkYrQgc98oZFkQqRmzQokdLUDI
+NjLAlE7h6R9tqAERgDDXIvgA51d2Vpap11fA/gBZaBYOdIJDrB3cpjY+MB6aW/mDPsMEzsdpM/o8
++61cBvM61wEKm7NzzvSY7wQgeK8/+sGMNlDEaBXpBy8g8iUZoEAEaOjVR/xhjyBUBb1bQAH+trBr
+N97AMUZj+6IIEueEuQAwDGX7ZND5Eg6AIEYW+YwFOGACcUKVZqjGQkcD/JFMC4IQknB2FnD3kVWw
+QDgrAMFEQeICNI0gZTmaxnhgUAOy+WYg/ozbAAcysoJUplLpMRABT//RK3rIQANgLQcJWJePFuyF
+wyQI0ipIMGSilaUEGSjGGE8yDRnIJno1CJ3RtrEzZrDVcimgR1/8ZIwOQGWMh/tGB9rfl2sfrSw6
+3kFZapABmgEJY1EVh6MPQdABUZQOKXADfLEadHVJEZgDFeMDFdgaeKVJwYNXFlhmr6FYw4IDTVcb
+w8IDOlBXc/VKP2EDDxRZXhdZ4LI16LNnMaEud/YtXUID6KODLsETLBBPKNABWaEQ5WB3d4d8NwAf
+TSIC3aYQ9GQ49MQPW+CDK9ABivI0gIESH8ELftdm0xECk3M0DPUR0wAe35ICIEB7FcEO/rDAhm0I
+C1iIXpFgBnOABT8AAgQ1RoQwB5LAIYFgX5emENNwA17CAhzwevYwAuEBc2JYByjELL5BNmSjEex0
+H8vSPGm0LCqUAm2QDvZQDpCzienACx0gA+MwDtz0DeUQBCLAC+VQB2xVDrDQAUtQDt/wHy0wDfRA
+D8xAHDRQVxkzDfAAD8bAX+UQCbaVDtMgMd6gii3QioLAYpyID/QgiKhYDktgGN9AjZEQiymwA6Z4
+AyAwDa6YVVpQDvSQDm0QjclYAt9YDllwZUCwBDz3O7LRZRPoA5fkO3NVMWrmAzqgWIr1Spv0SXeF
+ZkMXPDwgbvj0IS3oEw0pLjFxWV+S/i7pozVj43Uu0WaYxVkwMAIZQBQfQUMoEYaQ4EPowQGCIIZG
+2IQCIR0sJG0ieXf+wA40gEIwYAIccF8y6Xj+gAXxkgEwIpJhKJMVsQ9OQANIkAXt9V4F1QZ1MAmI
+QAh/oAWoVxHTYAYsskavt1Yc8AFt4F1GQw/1IhwQNANnmXvMUja3IRzDogOyZFg1Ejn/ER5tgkIu
+wE3cRIktoCZ8mTHz4gIeJQOxZyO3KH74qEYpwGJ+OZhrgmwLtEApVANrwmKKKTE3kJd8+R+beYtg
+whKbOSFgspkotAN4OZmDOFxz9QNLcHM75wN9xY9zdVeXtHPCg0llFjzLQ4J8hVeq/hlYmlQxwvEC
+K1g2bPKCZ9k8H4JPNHgdkXWWbdY8N7iR4mI+3HECF/cR+BAJQdAGTJgQ0xBMOHlid8cOhNAJe2eU
+W6ACNMACVSiG/jANThAE23BqFVFJc2AGWLADJOCd8NkGxhCT4xAC2cFoImBBWdiE77kYKaAduIaH
++pAFI8MhhHB60gafImMDVMiVsDANiPYR+1AHKAA0OJOJzPNXAdkazDFKsXFmXXIfrPEsujEt2KIc
+PtGLwJFCteExyJZwr/kDijWZMpoDu3EDSkcbmxQE08Mbw+UCu3FK4+cbLiClEgMc1IEmZ/OIg4ls
+zjEbVSYbQwcEQhCBN3dzFXNl/jvHcxM4gRWDA1d2VyFIPa8UG4FVgRa4czvAAzgnHGjpnDMQNF6C
+Jr6hAjPQUReTHR8ymcLxMsujlujzQC5oTCD5EfygBRcwAXfiXQnhDeSimOhZGlMBAYbyoVJ4NlUY
+oB53AQ1QNehFCIEwCR1yFyhhDBRwAQ/QX26UA8UEVZRXlEU5aEigNTNhUzliM3+ACFFZB1tgld85
+B4KABSYgQzw5kiDRBvOiWB7TPGYJFMlpA82idMajZs0iPLn3SbEEkMGjA8jxlmzRAsVSPMKDA30l
+PL7jpvRYZhMIprS5pr6jczyHc2VaVzmQZY5lA6+kWM9ySt16id3aG0kXWD9Q/qZoeklLMI9XNo9k
+So9zJaYVwwM6x488EK/Tg1ewgWbQkWWxuQNE4KM/8ECKdZan9EAy8JwryIJBExM8YYk2+zIvmF25
+FwMz4BLGARQq8JF4SA8ggLQbEBkfkQ5KQ4WA9xGdAAJzl2QmpJ74RDSNVwciwGmVoxD7EAkn4oee
+QU/5sDgjoAHTVxF1kAIxEQIpcKAI2qv6oJ53RQPV9xEQuiGEIJVZQAiAaBHTAJWBsHycR5KohlUi
+ABMQRErNsa0nOmYAKTzIAUG18TvFAoJ5alewgUkjuwMrwAzwAAs0oElZ1nSyAZw8MHRzRQQ/UASX
+VKZCAAStywM+0Lr/KgT5/limEPu68UgERdCPCWm6SmcDfbVXiNUcEHSwfGWmqokErotzQoAErLma
+S8C6OGe7tvuvOBeB9XhltatmwjKyfWWmqisEPEAEFFMEyKmwZ/kyyfu+lkiILuEluTecyfluzQOd
+LLizDVQQ41lPHcAfJgBxFbGA2tEBgtCEBxiaF/B6+7AF7RoD7mmUO2ACxnEDSKIQkcAhdaAFV6KG
+9gEDJ0ABIPydLvMCISCUk0YIkeDCLswITbkQkdCsgUBlTTlGaGCsfEuhyzooaCBfOxCtcktD+JBf
+P3GWwdE8ucGtxAtBMACQsRGCOmBKbfocqAuytYunPIdXM5ACSyUDsdG7/jyQp+c7dLubj+g7u7Bb
+pq1LBL/7xmRKBLL7xheLBNzrulocWDggm+lqAwAJkO+GAwCJpuh7c8ALx9NLsUSwBK/7u6ypsrCL
+vapJxvkoBERAxp07sjhXBMDro3maj1dmxkTAltlqidrKrWYpbg+EnMnpp8yhvPf7MoP6LcYBtCiw
+AXg4DeD2AiLgwAyVDps2xAlBD/dRqkWTnibwJScAePSUYjJwZkUThv7gCXiACCniqeWwAsMSAyDg
+OJOmlGjgBE4QoEEQBONcZdj3oVkAzTVAhQ+KBhvyqniwBX87hnMwCYHwAyFQCgzVD6Ymk/BABDLa
+rQqHls1jSoelcMzS/q2GdT2xVCywMSyzwVd4+gOq+0qklhQ1EKYQ66Zrmo8Qe8Y3B7Edq5pufGW3
+O7soXQRynNIVI5t8xZsUONGm1K3MAh0JCRv4+sarCQTT29J1jATT+9NxDLAvTVezC7zAOT0C+7q9
+qca1ubo5QKY/cJbCkq3Mk63DubMvI7Mvi7+6AZ1A0a3d+kDZYrNA66AfwQw5QR5PkiPpIALo0QE6
+pBDwAHcqYHy8CsEwRMFHgw/GEc0H6g8c/AdtoAWZ6jdo0Kx14ATnhXdOkAVUxjof4Q3YZQP00jcV
+wQ9YEDQzsG3Ktg86jAiQwLfxnGg/DAmBkAMgwAtCsgNaYAx8MZI1/jkDxgNBVMywTVywOaADFlNX
+OvDbQFC7f0XFZJynmvRK+TikJKBDvIiCGvu6Hr1zLQ27vfvGndyxRk0ESICx8oixRmAERq1zsmtl
+J4uP/2jTlfuywgLT/8qa3h3Hi7wE3j3UjMyaLW3fQk2PN5e7RYDRGxinOCewrtvSPiC7l9TSvy1L
+7wZBu+GnZPMh7putZd0c7Fvh+sscbRYTK5jZHokBOGwMc60dcG3AEAKtk2PAIvCzI8xEfGcCF9MB
+UEtRufohLVBkTegJdQAJfhuT05AFjVwDIBBFTxN8M8ACJCCGly2wuSkChpsPW9DOK5DLoVcH8mx6
+0VZ7zSoIMGBV/tn5AR3wAPxJlP7AC9CMnMNS1iE4yKRESv+oAzxw28KdWMWrcOmNV8JCPUOHLCIQ
+RzGQ0j4AvAb+A2Kqumc8u5fMxiv9xorOmuD9A0ONBEZAsfN40sR9vmTsySMLHW2+3goH0wg+6ELN
+yHWM30MNyfUtx0RgBIZcBEaw0twL0zkgpoo+gZ7cuh7tum8MBK5020rXymYJQT1glmepcMIiLMHR
+rbEE1gxb1j2wnjr7IzJse8Vk4gkRzDMhqUPoQzNgTGqTIwLxLTNOlCk2ywwoaAohCXjQwyJpDHVg
+1RO8rP6gXzKQ5HHrDeIHp4sD2fmABTBQgS0AJFZe2pCACB3i/sPTAFBRoKFRMkkpcAGAQ0P+oHx/
+7BrFglfd2nS/Ldy3kd6+DQQRzaVj5kpzKq+wQYUYFX6G7NHOgkl1Fa8XrdLcG8f8GI8FDrGwfnNL
+IL2s3smyntQ/wMch2Fd/LFi3PcgaqL3drd+SLtT1rcj4zetDHY+secmzu9JDh9yeTNxA9wPjzbs+
+r7LdTcquvN7Ku4J++spsaViGVbAKB5DKrryLijM0u4I1QB7YmRDMcAI18AImIFEMxQ5zbQLbnhDl
+MALDqdckgJ4QbAJCcwLk7Mw5mNknQHv7VwobUpWONyhmYDEwQAKxil4owCwnteQxgK99zk98V2Yw
+wAF4mA8S/oRbniAIbRBtDLUNaJAFZMMBqw8SP/sCieGd+yBCOx2CM/Ca5gobf1ynAkv0vz1YIhTG
+07J0MuAEW3AsPlADGdw4SeGLc+VzP2BzaOAbQbAFJ/hzWIAFdfXyvb4EWyAbQYAGS0Ax02sEkq7z
+Pg/g1n3RxF0xvw0QPnLYwIFDhw2CPAQS+UEEicMiRZAgWULRIkWHRjQamdgR45IlREQK8UGkyA8g
+KX80RFmECBAhQEzKLCLTIREjS2bgsHGwxwyEL2bAAIrQBtCdM3QoxQFUR8GfR4/ynPEThtUZL2y8
+ONGh3L9//v4ZUwHDRosMsMD685fORAsUF76uLZdCRQ8V/idI0Av7b9+WFC9SgHAiViy+HURp6NXX
+1x8kPH+yRAK7dhqSoyw6tOkn9l+/HDRosCCxr/I/bzBwCORBI8W0039tCKRRYy5YfTV0JDEDebJn
+sbhq+PBRQ4Tavvhk1KAho8O20/8EmdUhMAdPgTts7MBxnfh3HDtax9gBLx+8bfimtaiDj920fPq2
+ic4Cbx+7cf+m0fARcQcQeOiBBR99xkGDQHzmqKEGJ8zTh50oargBHntgsYeZGOqgh598pmnoIZAq
+EskmIH4QoggfSiTuBx94UIiHpQoySAceiqjxpSKE6EiKJ5aIAomcJpKCoiWyAGmiJYpYwogciVjS
+JSRc/hKCRRcFOmklJ0UiQgiGRHKppol8IKioo17ogSgbzDJqtR2e8oEngnLQDqmlnuLJzKx64Gkp
+GFbQIL/KpkkhTRVCQC6sdEJQQYUNbvOnHBNgMEsve9bSZwsValABhC34qQwfGlRIc4UUTAvLn04I
+EQSNSNiqjBcVtHqBAzQ8+4cf7WxAoYXGKvOGPBfTBAG2yvTJggYhsqgjiNv+0WeH/yILQoY6PK0M
+Fhm6m0EEY07DJwb+YvgAFlv9WWU4GYnjAahMb6hhOxd5yCGHFn3QoQVm/IKnMW9EQMNZeODxJ58g
+RPjGH33g8ZSZ2Vai4YbG8BF44HTy+SedFlwoxx98/uhpywUX8EE4H1hqsKctfP6B5IeKgIyyJi2Z
+LJEklxT6gUaFVutJoNUUMglJh5KgiKMjlxAaiSie6EhpjhyaaEuZQhIpSR5SOvGHiCIysaSXcOLS
+aSbhnMEpSXW4aqidqNpJKh4Masqpo5ZC6KCqEJIUBj5ZAMHRaVQAaoXjKvOHHRb6lEvwcvy2YTES
+Ug7rL1Fh4NSwfxBTDYYRSOjVLzSyQGMLQk5DtfA0Owh9rX0U1bW007xhgT95YyCB2LD4yQKLQAJx
+goT82EL4XSAguWKHFNCwFixYYvBhBxoCT04GGswmoZO1wGJGhTdbNIh5FxLJ5hxRtJABCB6EqDIH
+/h4Eg+efTiJgx59vQKgVnxJc0MefLUiotI0OBGaGPxTVIGT8aEME0vGPcnSgFP+ARwqcoA99BCEI
++iBY41CzAxcQoi0aoJ43WDYRjgDJCDP5QY1KpBAbmU97O0BfaFJUJR7gxCEtm0gUbHjDKPgoCk6Q
+wpCMNpEegbAjQuDISV7igxGuKIZYAwIShPAkICzhRESaCEF04JOrNOVMP7kiQWzQAxu8aDbYeVNB
+rDgmMlVlbGaZQQo6ACiwCAoHMJjVodoyAq5sAI4XG9RQUnADx90qC0SJgQiWwA/DgAooXGFd7bIg
+AxjIYAv7sJUnVjCUF4SAMpXhx6AWw6vTfGMF/k/piWaMYat9RGIOWNABCzIwDlvlY15YQAQSMNgG
+W/2DFzXAAQ9sAIJurQVUYcyBCE53qmnUQE6rKREOTpCIc0TzHMegwQy+U68dyMAFlQrCBXiBmg5o
+wR/0EAEJ1rcF++1jBxH4hn52IJIfxKAGInNCBGAzjQj8Cx4k0OA+IyCwNqRAZFpwQQq6ZYwIiBMe
+DelRy0ByEialEGYmQdGLYDSb7BEHCC4xmkYqsiSQ5PCjWPDRkJCGJJNSUSIYMQlJuvYlmEApSxUZ
+YUdqmgSjHGWNSwHKmQ5CyoPwpCk0KoiYemKUnx6FjWea49hQ4BXBTYMFPIGBoQSXjku6sp1r/mFH
+pHDAlSBYrHZbYGMKtmAryyFEL/kwjO3SlIIgmMp6LQCK3uxoDxHAwDUkKJfr0JgX2vmlDmObgQqe
+cxp9LAEHdZiDL1PQhuP5Axawa96hKkeDMZHAspK1wYkUQhsRfE+a56CCD4QwpXrhoAWAjOD0/vEN
+EkC2gXv5xxZ2wA99uEAD+fqfCW8AsXxoIQP3jC0DFchHEhyQECUQWRYKejB4fMMb/rDHEoDANIlk
+hGs1uVEMRVKvp7RtNd0hAg8aMkMk9Ei9SrOhFH70hCzcUGg2pEgUpEA0JCRBijIFktaMcKItEfEk
+XwNplNLbEYI05YtfhFtSwPiUqvSSOEG1/hMY9bTFudXtckVhAQf2OI1L4oAGHLBjOk5ggxiAgBe2
+aiBQYCCCIBzvL0SRgQOPh48cWPMFpNqcP9BAxxPY7zTTOPEMVtABZrBYVDMwQQru56tLdtGVp0Sd
+E44KAw7Qji22nYQUfOCaOuTyXDxok0G9xZ/liQA6p/EEDWbmoiLkgASilSYVaFAl88lrBTXIxz6C
+AALKfCOc/6BHC1JwMi0EgWM3SEGSp/EfhshABgRaAgmgMw0S1IGBESBXOlzgFX8wogMi24I2veEs
+fBAIHkuj6QiVBOAgZY04nlWImwpCMyYFKSTsxeENn4AFJBjJRz264dI80uqH2GSEOHHJ/kZ/1rSK
+KK0i7pWCDsCIEC1SxQc9+MlFs2cna3uRbkpR4064/YI6cVsHL3iB3vjGgqMYx45d3YoINhkWxAil
+kIIQ3RYIAoMWnNVVOKaBdjLWGLH8RQY2OIEI1reWdMC7sK88zThMYIMaoKBUrWvBF81CqsDuwwlm
+mWMHNiuILATiBz1wDfVOAwnxtCYF3/QdqK7jHHYI7h9zmEGNrvamFYhitNlwwqxP1J/iADIflSZX
+/GoFDxfsxR9auAHHZDA7f0wjBycCgoQofdhpmI6Bmr2YodPhD0I07lICPLUxOpACFwRhB/UlEpN0
+NJOvORFI5VWXRY1u2iYa4Qk/WkJD/t17QyO9Fws5XHx7iTR4l1FESVk7UdYyslEmdRRINP3oRHpK
+Sh9UhdtjO+p43/TZtqnrKaMnfQ94upUzaeUqNjCBh4esGh9kssQdt4G/bMUPLJjlxaf0zD7MQPIT
+dEqYQOg5DkglVrFkYWwviAAsK2OPGExKf6fBVlPgvjnUnGBsBdnhVsGyjyywAIwvMKbOp7EFLOhJ
+cgerzD4GS5wcjCCYYMFHDaC1giDQuXxwAmezEY4AAhkIgmOIpmywsx04LfIxnx+osUoRrm75hhTQ
+AkJrgRZAtBKAoCBgJ/3Qgf5yAT7TBy2YHf0oLniIgNChBxcogfVJQVJzjW7BtCBI/gdvcIikeYLM
+a6IiGCH9IiIuIYkW2RJ7KaEWKUKTeIIgSoIbajwbii+kSRosgK/Ga7wsUBokkAKQMIIkMAKY2AiN
+KIIkoKggzC8n6qiKyCGOGDwpEKrqGC+gII7V6IHUspcq0Z56OQp1Q4iqwJseEApANAp3iyoWsCYZ
+AIESMwGg+CPo+4frUYEUEAG+6It9QIM4MasbA4LZMDIhqx1NXAoQcLm+qAMViIET0ILIwoIxgju5
+eq2O6wHcyQJ8qR7IAUS46gfBwYc2aI4XGAFAOo0BjCni+aZPWYEVUIEgeLjKgAcZKB9mk8AaaIEV
+0AIqCIIaKB8BY5IU2YHk8gdj/jCn1wIBXIKHEkgBj8mCDuCLTnCB9TGGHfgor1s6FRSU0GmgHYCg
+LNCCfCCYUfOHLNiBGsjHDPqHcWiiEMm1IuKIJzoRjeivPOMBPDSJ8gGCAzwpxluSKIivwrudJ5AC
+kgIi+CqSpLGhaMuhHJK2EJGIjsqJNJQImOSIJOgRavuR1TOj1WiR1IuXHniRa/oO1Auqgoiwovyi
+pfiJv7G9QJE49pu3jmMychQmJ0gBqxIcfcACa7IBswIOfPiBMLoX1jGMQeIJSBQceqjKZrQVesAs
+GOGx1lEB3AkELHiBDqAy3BgkL3qLQAILe1iFOmgDWLjEtYAH5ishIysFr2wD/kj4BpEpF15wszLU
+kTAkghxwgRVYDoWgCYg0AjJLAbUYJ5HBQFyih2rkCy04rHywB4uZBhzQESG4gR2ID8Bop20QAU3b
+pxRop1R7rRRoAXzgBzQAAmjhi315DKRRmh4BwyC0u4ikqNM6LRRZQjjLGjCsyWgTyS0MycbDwiWo
+gi1UySsckh60ocF7Eo3wQY74L8nzKKHZCBD6kV67goyyw5y5JhfpgYmMF9TDATw0iG3joqvgNqVC
+iJ+YIxGYC7aYBtX4KudBFHgruXxZC4Qph7PLpUykgYLoyk/5gZ4bCs3hJDSogZ9oARGAI7bIB3oQ
+q8rYBjSYAzMQghhwgVgc/gczQDnXe4FhqZ6sVIo3cQ7zc5W+iA6wcNFtE5OZE50hjQ58AAIcaE4m
+iZKIKq+qEbAn2pIyLI4WKId8SIfBFBQtoIdyIMhyoIdHAoJ00IdyYAZ64IWNSpIdaEZ4WIIW4AV6
+YAZqEdMbkIEdKAd9wIdxWAIJSQd4GM6uQwN6SDVmCIJhO7AyDMMkyJGIKEOJyJGe7IEUKkMj8EL4
+eq/6usIpTJoquEKSusIncIIoIKn4cq/0IjYeAUONEBozjJIwRBopSIIk6KEh4ZH6Ik+L2sNfPTqF
+6IEhQLoi+EmLukMz0pM50qnRszAbMKwPuwsdWMR5GwHXm4EQiDEl5b/N/nGr0LtGRMK35VGIjDGV
+LUO3n3AgFiVS/qsDRPCETBCELYAYxImCIYgXhts/v3DFKsEBB4pF4CBSfMiCOXgCLmkjfh3SXOKH
+SPgPMHyCMAxCl7A7A2zO00qSWm0N/xMgaBmOIOi6OF0CuTPBbHKBlHAIHyTOHUCJHEgJ5vkP4tTG
+FviP31qCeQQCH5iIrquBkN2BIlDJicBVkzoaKNWIlhLWiODGXNOvwTOCVI2CUT3J8MSC27laUsWC
+UV0CKewhIMq8/DIaXPVBJ4xYmuQ8aeORIcECKaBIbjMtIRiCyptOhfAs81GhIshX4qgobnNbbvtb
+oviJC1u3E+CbFRiT/hEosVFCiBY4LHeNBMfxB34wg61kgbP6FCEIoxkgDXQVyKIaCpPjRXd1Flio
+g0mQ10moA3ESnG9AM+JYjJAzgy8iCR6oAc0S3dHFjU6ogTmYg4QFTSLNJb/AFh8AqSDsTIplTk1N
+AiKKqIhg2TbZKJ2V2ZRIkZoAAjTDGqJ5giAskSuJov7IGusiTum1rofICZKyrv9IzlelLx+UUiCR
+WIz1GiOYtYgwCY/KiSy4gh4qkh4xEvh6glENTye02izIAimogsGLr1TlEfu6Ly/MCVxdgiHZVB/8
+oQtWGh75tfQ6PJ68W5qJzv/KmhrJWxTJM/10EdplMDQCCqrQkzLC/pxmYVD/5MoVO5V0iJVzO4EU
+aJaw+IYPrD9NfJOAsxaO8UQ8bAEZ6LEhXg0jY0Tw+xRYQANJgARO8ARIYAM0eLKwGIcwihcdWIHA
+0gc0KJ8l8UwbIAFI6EsipQdBuCQsgAQpOIkVmFB3pZghBpL7ktKIisiINMMoCMOIUk8ynLwkaV4z
+TM85JoIz/JkN7sKKEJqxhdoa6kKU9EIeSd8NXjyQICn3Ipo33FS1Zc6JmNRcO1oyDMMegkOpTdVR
+HVUssFoFttpY3s5UjWUnvIJZLjwIFrz7ajVYpWCJvdVXdS+r/U4Hpk/TKlYizJqlVaF6KZ+IkM6K
+IgkV+ls81BM1/gJWG2ABWPAGcPYGSGjQGWAPb5Aub+AFnhpEVRQBO82HjoGF35yGcPaGJaCXM1mC
+c/6Gb9gGX+K25jjncEYCa3qR0WiBNviGFf1H9CCEOSCESYAEVZAETwiEOiiHcRgH6fIEa5pmH5CB
+xuRn6coCjJTYSC2CGnMCY2CH4JTcfbCHcvAEGYA3TJ0EM0ARGRAEkebnfd4GWCi1GvgBRw1CXN0I
+ig1DQl5lJ/JBou0hwXPP98zVmKTgDX7D+wrJBw5JXXVCDV6CK/jOA07gKiiSTIblWO6hpOFfp45V
+Xq3J/voSI5Bbio0IteWRwrMvrIWvLABPWt7rjvw1rS3J+DJg/in46qTZVFHWarSu61sVZmrjEfA0
+kitIVf2E2xRiWovNESIaAokCYbk9LdPyTxgRXBimTl8aDREAARE4gavYNrNhgdUWAXiTlAPNik3p
+gA4QAdmGARYwUd1ORG4riBdruBYwC/GCARUQgRBQ7YuTMCEIbiwwgy3YAifQAi3wHDyAhNPlBEjA
+YshAg89ZAhjYAdOS5h/IARkwtBRYOB9wwsILISHIAZJOARIQgQ8oJ9nuuNfkASMwg0kAkgk0NBFI
+AfomcA5UplYl2pAEEqm+zk3twlwdYaJx4I3Q4EdecKhdZYnNCVHuYF+OVQuGr8KebK4Oz47EgivQ
+6yvYa7Fm/lsnRBqhGWYwfO9EFqG4Zs7m3DysFvHJTvEV19q9BuxR1WW2PeAtrILy/DUBlgIEDkmo
+JUOy1Qj3csJVFknttCEk519uNB9njgi5js58/a/ozNvoBG2/ZVa5Ke+fDFBtJqyxyWZmvZsX8E//
+vCKjUgFlJAo3JywvCu6voiMG+9s3uRujeNsj9YE5QIQ6qAM8QIM6CARBiNfungROOF1IQIQ/EARN
+f4ISbt587Y7VyAGRwM4Uf3IsmIQl+DKMiyQNleZproJMGIMwFILu8I4cOO+oURLzLFsMD0kNrnAm
+gVSkzi9d7agX52onf2pf9nUN/+oRR2AK5l8ATuD9Dckq/khx90rxwQvJFd/freYITkVsJilm5uTs
+o83VWt3UK7wCrb32WO6C25Hlbj/rFK/lLUTxV148ZK9yXd1Uqha8HuRUansCXfZrgv/Jyrtb/pbO
+uIVIFLG7MZfbbXvunMHmNa+R/hBzFPoOYuVPPKRI/xzcZ8Xm6oiIoMxmjndbqCCOCxOvC8PmXiqC
+3piEiKZ5K/YESVCF0/UET6h0LKb5SQiEAD2tIYjrHFmS+wpxUc5VSP+vWSeikjBlf4d0+8qJOYbS
+V4VaX88v+0Jq/YrYXO2hXO1BshXmVqXy9LoC/nVyp/baskX6w6uCwyN4gk9VAfbqHjLgvd7fekfx
+A5Z7/sBG4LV/aggu2y5MZI04LUhN+g5GYPe6dgS2WnjHgskHSYJXexQncivXe8wvksLzdcHzdSfs
+el6l8g1m96v9cRThthNp5smUcCPQz2l+7tYfgp8k+TLiNts/LUyNzmHt27/l7I+H8+DO5pDvWxXO
+193HZiMkCZgn0L8N+V7KT93/AqC/4tM9XUmgeU6o4kqndE8A+v/q/eY9Aub09aRJeimfBAA2w0iF
+Ve59VYntgkxg2/QM5AgPe0Ue+Ae+L6GRf4B48sTIEyRJkkgpIvCJlCVInkRhuARiQ4YCpVzMIgUj
+RiMcGV6JgiXkxitZqjy5UkUlypNYqmS5cgVLF5hY/rIwlIITpEePDHsSPHjQSBGiRjwiTEIQJEaY
+KrPQzNKlC00sVV9afbmyik6UI6WMrBLxyZIrUpI8UYpRoJGyY1NanckSS0ohRoQIKVpkSJG8RYni
+7Yu3Bw+8QnjwGMKjB2PGOHo8Zox3cY/AexkXLtLYx2IhjXvM6KHjMekenCn3GKKYsJAhdj8TZuzD
+R+nPQ2LDxptEkqdJnnjz9u2JE6TenoxPSp4JSl6/hoccLSK9odCDXVQ1MXrUY5EkCj1ylBIIEEIo
+F6UYgTJ249KLFgWORbLR4RWGEQkenchV48KLKJ9UMdESb/VX30QQXRSRSnTJFIUUTpkllUtRSfWF
+/hkntVRfSk/gtERP7KWllFJDMKTUQhjFlJVLM3WRxYVZfGHVFzGt9EUVX5gEE0oyVbGSSlKYdCBE
+E9UHloMo6XRSTA/WlAVOM0EHnV1HNYEXYEX5dRRfe6mGGWaoyaaaa0a49lwTqaXGgw+wwRYZm4RJ
+Z5lqebF2V2t4nXkbbojN1gOZsu0lXRFjJPdbb5Nw4ltynEiCaKHETXKFYXlBR1QTPOA3UBJNbBnI
+HNl5V8QRQqRF1FoLRWHGJF0oddR7pza0kkBqlbWhTACSJFF9t56ak1gZHXnShlEUmUUUPd4EpFm8
+rhTXTVVYteNWM0b1UotQCUQXWQgWOZC3CG1n/tdPBVnk464sSnUFVTeNoRWPSs5o0kw3YTiTQP8t
+RFdEG8G3UL0ynaRuWEYJccQRmknH6XZ/AWZna7hBvFhhleF1G5mqFeWDYhM31hkPONTm2Js99CVZ
+c0YVJaZplX2GGqeC8VCllXkJkmhvqnDiiSq+EecJJJAElxwkQnBql11xJmyEWkY18cQkWey1ndJF
+wTrgRlJMMkdO6OVk0VrhAblQSAfuBOC92y40Eb9OOYmk2FDJdNO9TtYH7UsYjQR3j/U9Se0VOHbx
+heBRqQSgVVJEsZ57W/9VXVtJ9afVjTJ+0WLgYIBRU7zqqisVVtCqK1CK8wIYxRInIb7WSspa/sXh
+glW0eFPlWZB5hJYLc2l7mamJWeZqqK3Z2hB5QnemYR2jKZmXsq355W04INby8LwLf2ZqUldZGZiX
++mClEQfbdQRfZIqXSSbF8ZzJcI4eivMkeKwpHcGjElWU+LYLqqqW0P2VEFpoeY1DqroCQvhlkV1x
+BQvreZCG7GYTmAjrbscC0E4qMhaoQFCB2cIC3t5zOApCayHQattLZjcVFZ2wC38byUgYwhVc9Ytf
+SnsCFIrSqrUQZCMi0cm8KjdCMMwERzOCnVXgpkIdqUuFGLQWjujWErPhBCpYgQvoTEIjzQmuUgcR
+CMOOwIQiZIdhRzmanh5GGE7NqXtHMQ2X/qRkRolBpmVyJExibjMlognBB0bITg+qpLG7qCwxRkhN
+xdQ0PINFrWAMY8LU6DAJnA1nfcVBX87Ql4RKKU07gWoCE9CSSbsgYg3e0VJroLCUAj6hCZvCyBc8
+YYZUmsdBCBHJkSioIcRtCC6iE11MBGLFB0WrR/3hUE0AJCtkmeQmDIqL62YiKxAWEYJTmYqTBGej
+GNmNQykx1hM4uEC2/IQJjDwIFL42FxvdSCoqNEPlYhQ4GKmQKlCp3ExSFLh2Yug/IbRJLu3FQBZO
+BZ9QqUl1ptNJU+4xYbZLwv2GZ5fetaZ7D/2ear7nJy2JTzWJARMdGwOyxtiRaLwbghpJ/jo8jTWB
+S38BX5TmVCkxDkEpKWWCKZXSSSAFQhW9gcUjEZWz3iRKEugR31Gk8DJvXWEMc1jqGr7whCN0IRPo
+CVRMm2C79vArCVAozxwmgR4D4qolTvIlvzDCI7DUp3ViRQky5RUTliCLXhKSl1ZqUpO4aStvVVHS
+XDDnohllLnBYqJwKdelMmJjnQeEBFyeFciIRzlN2WACD4MxwBTD8FSqZo2c713XCMZxwoFIs4hRk
+ddgegQVa8byWMmEXIxg9QZwLyU5NpXOElBqBCaoEH5fuoqU+iim30CGqVfeSHTsFMnodAx5juqRH
+yaCxj3msEsPQyKXWbMdg2jXYTadW/kOlJeGL3vHOFf6QnJ2pAhY6U8XO2MBQrpVTlU0x73Ey8UhP
+jGISgQjEHwpGpSbgtpPdyaFZ3BPVLhi1nGhdCU5QckRf8khHqq1cVqg5EpkU01oQDJgPqQIt2O1t
+sAMNqFWo0gXMUrgLZJgnYK2ZhTFAhQz0epY7OdTgK5QzlwL5bg6vBhcWqQRzk50RjCibOZoMrsIu
+ejFm4TlPwVIWR77EYI+chEG6NhlzWnYSGEBrBrWIE1zmYcsq5bdH3e5xCBmNTnbDt8eD7ZEoaiZT
+lS6FvM/QiWJ5ud1dipIdjR2sd1vqy6Vcwzs+j1K3RxgIgKv6ndhK4WAlWeof/hAI/jxcKC2RPsse
+EcKQOehsFOxVhfnUR2pPZAIOUBh0icZswCI14WrjwQgUau2gKEzzJvFE50qaNLvBAs5d1oKKGZqV
+T8+ZQUZXoZY7Y6RrzH0BxTUR8WTHAIbJZuHaQjaDGcZg7Zp8mCo2CuuOSgSipDTB1TR8J1X+VlkV
+N5nJ1saCt7/QrppkLgtkAEOyKYsFMwi22JgFQ4+ahc53Enywk702jATn13/fiIZN80itw3sET4uK
+hrUWFF/GZ1UxQUG7UBBnwr6I0O/V77rLbe4ZVTMq8X08o3u5KiZFeqaUdnxLFVUNgA9WBCaoeTop
+fcIQVk2mNF98COL1Tq2lwEga/qYELGe5wypGsd7hwGLU9X1kJsgQ60gz4TxGZcmuOGIGVXThXj7a
+2xW8MBWbHDyJveZCtP42YqtQdnICNfHfusBOwbUr70b2Nr+ZzfDBVqHLlPvCivmt7xMWsZ01sqtK
+ZAJrgaQbI2H/kbJUe+3BoXgMF1rDvtl5E4KfuAswhnG2sTkjgM9I9VXot0oEa6Op1F613R6stZMt
+o8yt8CxabVoq13LT8KZnU1YVXyrhnB0A3zSlw+8O0WvdSZhj97hgKgxJp3SwlN62pfv7nsFwS7Tu
+uSallbHdokMFhXQHJZUpNer3YktDtIQZjDSM9FOTnx6GjNkcaN0q6ILOpI/W/p0aHKjSbEGBFSDQ
+MV1B5ukXZZEdXMEEOg3WglTIYE0FF0yT6gFbu1wIwHnWPUVb4JyYGWSOkbWI78nOiR0ZGZABYVXO
+vJEBO0UZZTFZlzEcTEybk4EYapnFRsDf1dyKCiUTaGEbGfidt3Gbw1nbksEIFsiYDFLFGEQbE1YO
+vw1ZjFwIYdWIwNyEFyzIvUkF5rSLwzEeGKRb5tHUV5nS+9HWHnGalqBFxW0VQgDYppiSFLzfommX
+KlkKmbQRIS1GpaiZ7aRUGKEcRV3cxYFRX6iGxkSJD2SH7XTS8NCQUawaE/jcbRWBKeFcTMGZbjGU
+Fz0VQwCYechhrd0XJ5Aa/iysAizq1CpEUs6MmtaUBFzhHgM9SBbAASKs1ypUnX41VRO12xVwgWv5
+VeLd04sEDjupIApqYbcFFk2g2N/5nZNwm77ZmwzuW8PR2xbGToVg4eAk2zcC2xUGlkr4kDrtTdhg
+nlK4GtvBTpf5nZHFHrc54Yr53QxOU+ZwQYyc4IqNxIX8jUF2W+oJztsFjhiIQebgoBms2AzGHr9d
+W7fhBEbEWnqMWR/6YeZ50ciZRyfRoVW930EcQYItFEO5Ch/OlFU93/4YxiV+j6j8nBcdQchdXEIB
+GBhVSp0Nj6X4RRi5BiAu2lHcFlE0n/7FGcqFl0zFFENRn3l42t+wFyzo/gLOpNdwkFp6ccIqgOV6
+zYFdhSHs4FgVOCAgTIJY6pQqjIJYEqMtBkKLBBaD1cjn+d3lkAFowQ5VqKA1WdY7ZZuRYeMXgsG+
+Md4JNiQVqqAIWhk4JhtV8BsW3iA7id6FnIEJBs6N0JPlVcEUGJNZNN2YiVDBiZuLYKS1VeYNil5D
+stM9gZboNVyXARxl8SU1vRiSscs07WM79SW3FV6LgFZijkGtqSIr1tpy0tSm7OT3KIXtpFIkokd5
+OJ3+1VrTVJyliAqciQrPpUxq/FxuLWUneUsmcVIkRsfHWWLGhJFugV9JjoopedE4vR9fKEVfBNoj
+ytQXwVK61dr38GQT/oyBznCCLM5iJqiCLeqCgs4izmTdqI2BTJxg4FSeFICBzohlWD4Se60CLqgC
+iIrlHRCWuvSaZ6IgaEXbF3YbFk5j5jBhYuogTfSlVMjgiy3ZDWYbP85OYpIB6eUg43XbbeImvGUh
+B96lF/QIYd2VjdyKdjZN5Zmou9FbYlqOhXhbE47BDDqehZxh6qWgluXmF2ahjBmZGMRokeHmYGlZ
+tMEIt8nghYgegPqheTQNgMVaumnV/9FUbqnSVq1idt5peIFK2O2keYARlcAnGKGfYRhMDSWEKGqV
+F6WbdPjnnu7FdPYAKM5ZwjQfgCbfxY3cwcSWTEaJbvXApnTSpIKR/vKlWyrNyhOcgSds6IKSGiyu
+V1iqwlaCJTHWZeT9pea0ZS3ualhupS6IJS7gwofuTLRVgdsR1pEF3oXEqdtt1onZm206HBiEgTSu
+mOiBY2K+2A1SlmsqpuD0pblioQ5ym5yyU0Xe4E2sWDuhk+VpDoBMgVk0QVpCwRQgIb6B1lRsqejx
+Gz+2KLlaYb7xYLQRmW3+Fbzdk4rRJsC967WlIbRxI+NpobdtKUWOgVG1YeZ9nVElGKwyUrrhZ3qc
+hZ0eBBP44cpu1aI1TXNuHMaYBoA1xnHtEcrGl0Uw1PulGW01mnExzfc0zV78zx6NnCpZ1X8RhXfI
+ZF40VkgShHwJ/sXIMZRWQcEVJMqCDoeDwuIkyCKEesJWuqUnfEEYRGSUCZGCcqXZrsIrZN2HEmOI
+LugqTILg3Eg0Dhy3Vg6XFqxw2tu//ZUMdpll+ihmvtiWgqO3katG3uAMqmDBGqfHZqE0msEawJO1
+rShheQGTmmgXOOAVTIEfpgS4+atMPKYTgqu1OS4byOA5Yim6WgjDgqOLqFjtTsUKDo5vegE/gitA
+gmPkdpmMeWxwho1ZTEF8vd/7fc31FUWp2k6AHhQrriKehoh5kOdTEk2gWU8oYq3+GYzTWdU8blVa
+6BZfcFLtNNbIgazGNaBRqeIdbhX4pidRINLOxtpWcSSA7m8q/i3FFUjCV2bdcLjlra4XLMDiVi6r
+VPQImHIBHXhoer0te+GCLijrh8ICiC5oIDDp5/blN7ookzUkF+7bvpFecHrs6vlonHKsvnVbtlKk
+YjKhatpbtw3vlvqo465BxwbkB2oOEjpgaF6BFaRSvmJY5XCBFcCgRAan6K0BG6xBu16mxjKhGXAB
+4JbrQBZkvXkZtFkj7FEhNWLhOVpkX7pucJKeeRixEe/f8gLg+zHaH+pFn+4R1HESQ+jW1byfoiHU
+wdyPdFWJb11ixYXdQiAEJHribTFBa2yKJTKS8/Gn6RJE04lTnd5pyKGnHMPSQcgvJ23t1zTNRsjh
+E8wBLXao/k7hoq3ijNyuwtjiQgg3pA8hwthy5dy+8oKC6C4r6wbjAhxY04lxQWJaIwrjMBpnsRhw
+bGZObmauQQ8PbD/+aA837uFmphSzAQyL3jZzc7qGMLTVmwla05IOpAqhkwNKgb/uWjutXhqLHhvQ
+AbexQT9msYy6bjTrG4ztm+rlY+aMwTBvabT9M+OmK2uesDdrrLU1rhmYh+V5wRO4MRz/6VYpTR8/
+3xsOU+aB7G3lJ9KJyZmolMsdTHwBmMZBqfwBUFGc7PDsRSfRlEJop50iZ+ZBHQCuxfKWk4LlmPyl
+s75CdK2VLoBNQelG4NYiwqgNq1h65aix1yvYLXuJKb12/gEnOLVWEuCu7qpWppey8vKy7gy22lu0
+DTMZKDNFJu7hzjDwonHsZmZfTnEPs8E8U6QUD2wOezPsPnMUz3DsDi9fAxyX7m5A+ZADlpYD3osQ
+rVaZHq8MsgEcmAEc4DUar67ralkL83U+D6QOM1ns8htZs26NEjRfW7HBSrFaltZKoLMVvC/0ZafS
+rORWNW/zkixP/0921pAnjlH3kIzC4CmnzB//AWBsKdjypZsX5ZxvE03mtWI679/1LqfEkfQfEl8D
+kuaD/C9qITGQWAFXNM0XIErZcqWHHkfZaqgquHLefm60ZY5aQgKv6owuyCIDa+UFE2DW7fIGW2bj
+8rVn/nNs5IJjCv8oG3BbD5PeGOS1gZOBY2duXOOwQjtu5LJuf7sm7Mqzg2MOF/wz295TYNmIBzqg
+F1jBF2w37l2OkYEBhsvzM5tBXEO2DE4x4e0bZW+zMjt4Qcc4QevwWvNbt+bwMjfuNmMzHMzBjViB
+kqrEdo/u1mLe/tppSYMsRuRrupkFTQVorO1ko2XU9AwPxlCfVr0hfNL0KF8NqBgVKJKJeOEpEZaT
+ESuYKmIvRwJJrCUnW0HB3uDIs6alSkzBdqslGVYeoZQ3rbLXVsKCU2PwfKtCbJqzNXnBsGblBW8w
+Bh86skr6BXP1HGCO4b4u7A7vPKOxtzH4lj6zgYs6/oNHsYBLMYBnLj9O+BmIumSeuhSveFz/qOMS
+Xpept4nfUxL7UGgKDohfThbeMBmobbfF9Ry0q6encDgLdLlqOl8zro+GgeO6OuNa+7SPQRr89wwz
+rhmcAek1thnQARwYeduJ7laEZmg6L+muYklodL/60hT0tnY63XSCkSLi1iCK03PLH1PIJLv33KQq
+DBiVk9YWEICl83bLO1Dnq7LgdIIlWKwtfJ1bQcVPwUAW8bnziLuRXeCMgSRkHSfwqtx6KHw/dSC4
+XYhzwcp74BfMAaW7JQZvdaRr5dzigi/DwjyDuqh3+zMru6i/9YpDdqhH8Y+ueOZG8anPOmQnPbFP
+/nHmjsG0pzqny6C2+7y1b1amNzGje8GJ/41aguY0KSnDyugZTDvpOfYzw8G4B/jAroFlu/Vayz1b
+uz0ZnIF+S7a1e5urh4Gnu/qEIzseLJUXeOC5VzyOFHHlyTuQcKTzDrUVlC68p4Rqk7K850TFVerw
+eGJKnVygqvkeqiIpl4eh+qma4akQkCSQBPXWkm7pHvGrLjx6AGo6A0mPGLG6CM5pywTkm/Z2c4EX
+EP52F7EVSLBbFjpWfyihqwIeZDiGM3qULaikJ7+l6wIvcDX1MzAuAHgUI7jdi0Gqr8G32z0bqAEb
+pMEUIzsc5PWKk4EbwIEaRLGQLxUdBLgZqIHd/p/BPKdBGhj41IM/9wMEG4Fr1rAZQ4bMwTFgwIz5
+8sULGIRdunh5OMWiFy8VLY7p8oXLl4RjFK4Zw8YMnDkDBbIh6BJhQjEkyYQ5g5DkGpw5Ed4kc3NM
+mIMuCRI8SEYnQjM4kZ4pSoZOSzgPLUL80sWKlypbr3y5cmWKFShTvlS5YuXrEylQmkixIkWtWCtT
+nlwZC+VJEyhJmvQtwoTJESiDB0uR0nfwlSZX1rJVDGVt3ydHkkA5MiSJkSJFKhthy1aK2bF0nzyB
+wvgw3tSfD0uZUgVtFa1XuFqx3eVrbthdH3blwvsLHU64iBOHpQvXKlySDDZ8SJEiyJB4VK3S/mUd
+FyxcvLIXx6VLOyxVxFWNOWMQ4UuY6YeqSb9mjho1a+CYmc8GDhyU++EULFrQjDTWEFAnk/B7yQwz
+CmoJKQWf0mmMgkYaCQyLxKiqi5Cu2uoqkCzigqGDjCqov5bm0O/EgsLo6YyjkGooJqZuMuqonCBE
+ioyWXIJDjYEGdM+lCM1gSaU5VgIDIiRx60I2L6zgYooowZriKyu6iDLDuexqIqwpRrvCi9doo7Kv
+JKTozLAmTCMMssPompIrL6dAbK21jmBitcGasEKt17yEooonYJtrKy/hAq2vQ0GzYrdBv/qItrGw
+ivK0KqagiAsrruIiooe+OAOPQCbhZBJJ/hDBwyUwxAAjDCQ97cihMSaxTrvvvNOFO+6QwzU5Q9Jz
+KQ2nFjxJ2KKIYuNEgehYacE56MhvDjOeXcmME91wCdv/1ugRjmfrK2o+N9R7aQ2nYKqxpoa4+Ogq
+rC76oiFWHYL3IAGHIupEI/9raaly0VOoxRYTGrjGCCEsyjykSlxDQTLUOKlcMgQ8Q9yVVspPJTgi
+qqgiMR4yC+Qx4cKyq7PAemLOs2zjCkrYwlLsK8L00mstP6N8+QlG1xyrrrXswktNKTxL4gjJDqM5
+Nktvq0us1Pis82cux1qZSq3CnCsss7QUNCyrNrToIzJUfeiML2iiyWySHgpDjAu7YIjV/oQ40Q45
+7ojDFTnjeMVFFQWDnZCN+egj6LwFDUdK2x3p63aNZQuaA1WU9PNPoBL1LejZqLId6KeSFCKqVZHg
+hahTj6cISSN2P/JCjM4Hf6k/Zxd0aQ6C0hij9aZMKhChMHZvXSgcCz9JcDX6U4kNcYXNcUARA4dP
+JTrowKPbV8uCcq7sw3Lt0SeVphKtk82ikkmVz6ISirkQ03NRxtLqkuopjsYLUL3Y1+sJMxNzjcqw
+0GI6TJQCi/0IiBa30A8tryHUFQS1Jy+BJX1nqcKVYPMc0okEIV8wSULSkJAzrKohYWiXqx6CO5Kw
+QRK1wgUz8vYdXrQQOaqgQ06OZaxt/sFkR/jRD7fS0JJtzY5yzxKIkaIyuQP5CHP1WdaJ8qNDgSBl
+PjjSSYtIcjsyiGQhXwjD257DrplokSHCGsri2CA9yGFMh0XcYE9wMpPbOWVFVlSIRIhSLvr0qHLx
+WQlLIjQQIxYJDng4ERfE8BFOXaEiJssNldZFKCqNby6/sU3/0rek14zFUnXKixQU45rRRMkLtDEZ
+oxTpJdM8xn55Ol0ExyJBjGQqfFNK08xmNpjXbERLVjqfbc4CKPkValAQydC6VqXFtrWudTfB4E6Q
+RBKHnCEM0YQRTv6gCl1ckxnfyaat8jaJMbqEW02cnOFIVLkm6vB46Mwc8lRyh/yQ/uic9JFK46hH
+Rmzh0Ck9yhFNOigTp6xqDGkw20bYpSowdMFjZktItrhlJGg5Cz9+PMlPenSSCF00KQYhyRnS0Lof
+PqyP0DtRVGq3OAPVMT/rpEMgIBcITmnoI1UIyc3kdD67gEVLZsEpo37DBZehRZdvIQye+tJLrlSp
+S0rD2lxQZgUC6omoUeJkUsFistdsSko43ZJhsiY/25ASlpyiiEy3AtTERFCmWpGNIS3YkYasoW0D
+Y9tCNALQWHUOKCcR1StspU27MYcNN8FWfxoHzoUtCGPv1OF5unVO/HgLWXe4Ax0mi0aC6OcMil1W
+t6SXRsIKzmDzKRGxYrKiM5Rt/gwguhAX2CaTLpAhrjoxnvH0k1I8SE+c+oGJTwh3u3I5kw1IidBI
+HsYGASV2nRj7oYCMSy5zGol605vsHaySoTBdJDeelFKXbsopKWntCpIky1xsKZY5DYYJelJgJMWk
+qdjETH73A0zRUtOY7do0U6h72VeiNEm0RBBMTarIk6hyFY1kRCtR8m4oxao6jahrdGHgwkFmQpMK
+qyomzizX8pyin5OwIVSImMQkEPEHVA03YgfqEX2WVcb+iKs/onXxbWHn4uhBTpB3wIMgqRfdxtJn
+JbStHTp/DIdr7c4k57nJjJrizIXAKFae+kLrGpI7gRgPWS42IxO9VdsFiUEg/hM1GOLG5RPFRQiP
+WeZsZxeEZSemdHrdCgQc7gBd62JlStKRahWmKkqfgo+/2rPUaagkMql9hjByiaXLLOWFTN1MCkyw
+HxQAk5kjHKEITRjCXaratUw5CSNfwNprAlUXvdBUNuvayEa4EBJOHRg2FekNyDCCJFZ7DEkTvpBQ
+HIJrm8xEIh47JuJmxNAzSO8l5zGIGDaIHoTMJ5w+Oh4dUiKHZeH2nc7KnEOhhR/J4uHbgdSPGaKL
+7YsFcrKP1U9UhiTPOtoxYFXkIElaewZWCSXJJgTzZXVYO+rROZCCpKwQj6iwDconWz65yYoNNE5x
+Tis/7nTnuQPX5fyAO1R//tC4ZEHIakjSRnv9c/RZPNSyKIH3SlNCCxPEQsBaeunU/lPk1GxJJrYk
+oTJ7acIRfJCo702wqyU7HW5EnRXtiaVKXsmIp7ogFCTZmiMKdjRBHwxC2AplRWpjVbAXIoYJCyxt
+p23RQLD8H2QPTiBOgWYa8Oif/vy74riVgyDRKD0an6jH0qODaO2uY4zrWMeNTSnGbgvwyV4MP3LA
+LL+HRZCfJDnJFb7JF20iE5z0cCBpUOlt/613yuaH7Tc8LY8IIp8fcnRBbD/iDnUo8OnZfcd0/jec
+7Y7uUAUC94EQZkZCkqUqMZjk3u2QVVL9JEYVOnu2GYtemBCW8pImkk86/p1c5oT0+wmmaEwYgmti
+gzWwfOh0WsOe0tKXQJq+dOqcMnAYvCDhtkl5IyRspnmoiBAxxBGZAltITWpy/2geZUB6yLGeZ1ui
+wngKwlyurHKkYsfqrLGWxQ3U4PUyRiVQJbmiYu+WKOJ0LBD+LroKD1X+jfMw5oyW5QCvbJyS7J5+
+KyZuh96CxyfaxiTSQLFIxFu+bfacRbe8rIkKQnDuqXJ2Jwhpi7OgxQgjDu6EiInwjqUQQbJ07A8A
+AXWuJq3ApNVwo6ccbV7YptU8RFO8AiNkyvm6JEy8ADBYbk6kJivkpFC+AkrS52ZYDtHUJNO4L3sm
+CCQgQv1gw6e2YlDI/uu7YqpDPuKgwIBTSMgjDLHVpjCa2CYNKq8oxi4onKlFyoVt4o3XXOIMEC6i
+8IMG80M+iohHDnCM1sAN4OATu8WdpsfbAomJ0Mic3Cm61E3iAq4BnwXcJOsPCO8JY0/2GlCx1u0U
+C+JaNrH0OOpvguW06mVCAkbyFNB4cNEW/83vVtGdTDFwBKKHeqiKjojtNpGjRnHdKgv2dswcMQ7c
+9GMVMQ4Q7uAPcK8d7wD3COk5Doz9qCIkRKgiWEtsJGISWWcRaUMrvsB/Jsk1Xi0snAQKYMk23GKS
+/uyrRk0s7mIwkkBOGEUjHOlRTuc3MvLRODL65iL92o91PEYjFvHV/gqMUyqsHxVCDNQgn5irJjqo
+tUwCDJIiQlgPnRRv8ORAKnTrjuRDDYIFPyQwA7sFVeCMepRlx24wD6xNFuksc0Aszibu76rRxJqy
+Af0uF3XM2qTRB+lgG30QtAxC/w4iYHpiuO7vdghk8PIADv7gCf3OW3xxxy5LXCJqDeSgR/hyKHek
+RGgwKiZLGjdQsnhRxz7vK3FRHu8AEOYAEdoRDwDBIaKpbTIiQ+YK675oDErS64ypKlLLSRwNIhJS
+I9LHDL/K0TKkSzCC5aBkXTglIgfDqWoufT5NJA1smCzCLFpt+iIS6bokkbygM6eMDNpvytSGdLpQ
+Q4KCbWaiXHoI/rECZxMNokeCJaBMaBNhUmG6pXLmzgAXZ4fcQPUax8MiqrYuLuLmzlkKTz/sIGNu
+60TsIPbqk856EQ/kEgq3MsckTha7Ehgri3rcALLowAcN5wD9I7Tg6iduIgz+hobkww3ADS7RcSvR
+DQeVBY9ma+9MqolULxujgj5OMc7wQA7mzhzzoAH5c7Po7B3l0hCi0B0BARD+4DktIpqS02yw7iCi
+iR7bJjt7R8JwR9Y+DUpeydFezTZE7XxOUjZXR9Ra7UmO9Gb8y0qusNWmjvdIEySywkmyJ0sb6Ukc
+7f4qpDKHScKg5EMIstW0rqNyhO2MbLC2RfH842EEhEDowy8V/m8V9y4a6YAv5QDznoVA3Y5HrI1H
+dmxCsc3a3MAN+HR6GhDv5uDbZBFFd0w/58DE/HMrNS4rdxFTczE/ewwOrA3hrqVH9u6cTgvalNE8
+IuYnDCKwBsQpMgdQtXIuOQ8809GdEg8UxZJHspFbykgNJvRaTvQrjazHuhJDZTT2JsscJSsQAAH3
+NC4QonBaSWImRCgo7g+aSqLCnNONguKDnCkkCunTDmwk0bVt0O8kWefAXgp1jFRT+osJ0nXpWKcz
+WeXAFBEkbkZJ1XQ1OwRJ2lWEEorprOtSWs0RK/GkeuRR9YMn2cAvS6RHoE1ZkFIO8kAC6UzxwulZ
+MCdw5OBR/tVA8UbWneaOJ00UFyPV2vg0WlX0ZfNAFudS4+LRHP9AD6Cwzmz2MKEQZ+Msc2CMDmAM
+Yl/HXGyHQc2FDMjTX7ZF3DDURbNSsnYWHeFS8Qz0RMutaCuOL9MJ3QYv4Db2HFWUZ/Pz26TrCeVy
+Wqk1EBwz93j0W88mWB4R9d6oJibRPBoxKA7sDDgyI+PVJM/V67TUmC6krs41SwNoEcl0tcrUEKvL
+QxxiCm2jca2rbdjmOY9Ji9pPcwnpQjCiKkACLU+rg4yFYq9FIHyyiYZyQJ7nFBsrdmVReuRgFQNH
+QtMoKm4LLjlLBPNARSEnWelzx4C3ands7lQ0UR9VRcEN/nJqNFe7EhDyUz+pd0UBz8hUSlX3Dj9Q
+1WTBie16BByjU7Bm5GJV1u9M7G1p9FMBL2VL1drK6FFxiw3cKaWEkkdKFbdu9dvsYEKpB/CuVRej
+EA/o01PvIDLh0W0RwRAMgTKxLiEakaMuKrgCSgxaJHNxJ+voDXcczUul9AwAcrXklThBV8JAwta8
+7v4W93QugkwX8ZiOiQvbb4STNCs+TYVZZ2xm4v6Ogop2dMoSl1Pcj1x/JVhMj7mMTPHYTog+TGRN
+Vn9fj2Th7GWVKwL1DhUD6URLlT77wH3lckDnLj/o0x1NjGYDz31TVLIks4xNjEbBbVN1sSt1sUZN
+tHlN/jRVSS8/WDcwh/I+8rQ62Q6KaAt5GzAe3dGQ60wus7Ipy4gwATUCD/VECfRZTBVQRxYPHhUP
+mlcOuviL27GOpxVuFxkQGriUAUHEcG8S50qDA4qjLhg7JYaKvtX/tvU5fRMiLBclTVKE3I9M9Y39
+JuzVAgjUkJQecadC2iaEjilJvY6Em9lxJeb/jOu0auJBZwKDvY5yM9eKwDH0wClwvMw/NjEC2e5j
+U0pFAXVrTfRjTRR+TRTEeFJmxzaQ5nmTnxJQX68P+uAqH5OfVZRmN/kwQzUKD9kcobcPTMyLa7TE
+rBXc9AB5O1ncTJZl5eCOBoLg5mM7BQfzYPIlpljH/hIa3BJ6Wr04P9txkamHTyO28Mooa8vIWxo1
+ugIvRfnzoCdzenN6evGgxBwTEQLhp4GagacVERTBEHg0WITCuFrHld1IYNKgg6BJ2G40SwH2SL8Q
+Noe4XQnJc1cyTR0NlMIEJVlr17I0hl3tcb1uUhhXwYT5mKpI7JZx14AnTVmrXDW4WM7Dj/2lWANr
+tgZEnt4TfqXLDuxunW33ZQXiWuTUZNU5oC/0DvpA3Aq4KYm3jHMWD7zYi/PgnznbHR2zjGtUZ222
+K2/WMWl0gGsxzmi2aJMSUFFRPuI0fH1EPlBPDWyiWLW4gL9NRmcUW0+6HfdZf4vXUb2FDuDSfk90
+/p0UT/F2+9/sAHjhgJ/7IA+mNwoL+g8iUx6dsJQDoYG927sNQRFEjEdtoqNOy1sL4m9+zTz29oPu
+L3MLF6z9B5fVVF5bh6tZ5ww4JbXQT8H6ix7JWoYtE775kVXkVXQPKSts4r0tMz1mEr1h60JWRXMf
+VKnpz3iYy/QiMLBwl0foL06P2y7nOGWlxxrVMQ8oK/ACLg/sYJ9VlJ/dkT4hOg/cgD4524vdMcZR
+mitJWsZNzAk7kH2pF5Q9lVprdHoROIH3ObPVubFuyw4oNreIFVjIM7Z16z64JaCbd5+nFxGc8EVP
+27Q3uYAv9VmesluQtSn17mWPO3nt4A/4ece8/tgOdKy6r/VacTq7fRoQJkERRswQAkESJkFUJqGU
+6U8oPshOzdIFT+tBH9Eyf83rgjlNje50wgJKpAMkdtMQP5e1CAl7LPeDp3S1GnHKpIOGV2vKuPpI
+waJxydqDGvS02AB4Pkiq2UYLcWcokVEoAyd2V4wGP5Gj7tR4TvHbgJdm+4BsN7memR1QCfMOjDfG
+MdXvINrEulhUS1sPBqHIsxuVvVgPJDMyQRmBy9gxuZ2hCzrJCRiVRRuR566wpwe6M5kN4FNVTZY8
+jSzNiLJYSfa0TLF4JSvHAaEP4vGnaRQRuryOC1uMNRkOUvy1kTIxWVqM6xPjzjja/4DbE9m7/pEc
+laOQgf0cqCVhWo26zydhiqIammLyJxzVQHBHYuiv/yqzQvYRlt51v1nnOc2DkGZ4wrTI1bLU+CLJ
+SVdyhS1TXnv+1WRz+tpag/3vEZvrQc/DJkDXmVutXPMpjRyVYovVnCVQPuAgoDqaYo/bsqedySkb
+oE9RolEUxvtAD6zWD2p0Zze1eBswocFYZweh4KsREAZhk+OczAdhz8e9ofOzbY18ENxxELhdZ7/d
+i+fOK5+FjPfODe4ga/EA4UoVqg1LLx1mDIqVDmI8ofP+79kX4dlX40f8DtzgKVkWeSGZPh8esZ8S
+ums/sgkf40C+xCLzy1HZ8AFdvB8hEMZb/sRITLyr0/TwyFzuI7DcIK5huSYCK0cL3ElXPkl9VHPB
+YL+9bu2iKSLYxgriIP2GmW/dTyhK/TJz3gvY3wrOQA5LEnRnneov2HSxrqMuUYY7X+3wfcfgEyDk
+sFEDh40bgmnUCFSjxg2cgnLo5JGTJw8ePX/u4NFoEQ4dOQ8jStyoUc8djX/6+Plz8aKdO3n06MET
+sw8eOxgRAfrD888gQIj6WAQE6GQfon8A6dFJtCmgQDuZAp268w/GmEXzaJRjZyOejyDv0CEoJ00a
+Om7cyFnDRg5DOCAbnlGzxiGeu3r6JGX5B1FKPFXv8EQKqGtFi3dvwrFjJ8/ijXRgRvaq/nGjTTgk
+//g5ekeqYECDmCJCNAmRoUmoAyma9GiSIUOrJ7FJM5Cum4QNGZoVCMfNGt1n5qYJc0bMcDFhkHM5
+Y4WLFy7Lw4wRwwZ5cOJixnARozy5cy9TrHiJ0xw6cS9jpJ9JHqZ9mC/Qz0xZPl98+PpWoHAJM3z9
+erNqrLdGGsJxl10Y+7UnhnAJPcQGWl3hsdgdcrghYURsDPiQRDE95GFLd/SRl0l49GEHXBH1dlMe
+R+ExiIh3UHXHTD6hNNNGM82ol1M8YTTjIHj48RMeSfWhU189DZaUHkiVNBpRiJxEk0033WUHRSCB
+ZSFBH7lBx0AVsvEQWQsl1BZjGBVl/pIfO+00SFJUDaaXTScxlkeEidmk1oQaXSkHRRiV2MegR0Hl
+U4k6mWZaIaO9hshqhpj2iCKkkYbaa4p46dCfbfUm5kd09KZGpwXNFqAaCgZn3RkJtucfcQSqYdYZ
+ZhFY3Bhn4LrectDFRxyr6yFHhqrFfaHgfmJMccZzU8QBXhxTzLcgd/yREeAZa6wRHK22IpeGGMNO
+F4aYanzJEGNfwXXXn3fY0QdcfjLkkEaDptSHYHlpRO+VeIikFh4WbpSHHyfZK5hemqFkolV6AAnI
+jhjtFaNVPa2UEpSJFuVUm0gmhUhoGAOykh8kWTQoZHD9C/BEo4514qhpuHWQQ7d1/ilHYhq9+SbF
+RAl5VKRQmVQni3dhxiJMXcFh1FZeyqHvRSSe9DBLTDalkyFAufYaa5PEhprWjxjySGuolQuSpxGp
+5YZB5TKGYlqhpvFbgLOul+p1wcmKra3aBjccgWS4R+ty/xH3K6zckWGWtQSmxx6r50XLBBdMNJHg
+tsJhPtuwtCpeHIGumgqvWg/aCdPN/d4EUlt03ARWhHkkNYhGDwtFo5R2eFlliPf6dG9RgzDJJMNC
+35XRZjHGDiVQbIo8fFNvMmmaIYeMZj3z0A8/WFWAAHZyu42pftcdbiS9Ue5jiqoQqBhyCZMemzVP
+1FIPM2WIkYA4OoiQGc1ItNJa/umXTVDHEa1UpEREUgmhRMYon1yseooyjSRO0xpFjE0SkvjaJDL4
+CEkoQhHkg0vb4BIqOtihdWtri1sWwpA40MVW3zJQHHBzGwDhRnTbotu1VoUsbyEHcdviDrZkZSu8
+sYpwwXHOgrjFFtrUSla6YcNcXkir3/DnDH96iITSghmavARdTeOKQTTVrxmZRA95AI0ftNKYhNEk
+R1zhHb2acr8oweQPAbyLXvwgkzeB5iig+YkfVrKTGMVokE8KSgT3h7X8AWU0P2kUUV4kvDXGKC/j
+o5KdLNIYitxlIv2iQ6h6AweYbaoxggEMUHzyk6n4wXpYUxSbMkMnHVkkJjDR/gsaYQSTkxBMJhor
+CsJCg7VI5c8QUDmNITw4CUtMIhOouWAHN6jBjyxmU6WsEFrWxhiCzCwtGnIDtrRVqzMMa0C1gSLM
+cpMtuQ3ILPxxTxGLQ08yLIg/syrn3o6DIOL0ajnPCUPfzHIbhuQmLQeFIYESwi0tna1CJ+pXHtBC
+SoGckCtlvOW9QhQj0BTlJSIiUvfEsiIRKaUPgxBkSg0pk5aahCXe08kgDvGa6hFFRCnZGSLYdAg/
+GOKVVovU9XxqiP2xqRCFyB8i6Fe7jMjkToy5WZ1upimHoEVmfyrjldQiyhLdYTM6ad4h9lc9Yzbq
+UR9TI5NWopeTkKh/+rqS/lBokhHOoHRQrezZ9IASiA1KIhCWwuAkOPEITjgTNZawhDQxaAm1RKRf
+VyJl004ophRFxKALrWJwZjgrWT3kN+9059ymGMTiLPFytYKV4RYEQ3zSyj9J5AJ5oHWGGRKRIQbJ
+1m18QxCEEFGIcqPhnjh0EjiAUkUgcYwdBoIZmdyLMyB70V78cqebNCYv7qIlnEADpygBKSUW8YnI
++AgamppVjTuZiciKmtZHUq9RrinEa4g5vY9BEjRLxWNR7rAzEt3Sk+Qj31cqFJaxVAhgBWlI+ZYy
+O5H9JKVHgpKQBukoqMyuY2eU7qB2eSfEuLVgd/zMJP1QiEEYglGIOIQi/hxh4mViKhOZ4AQ0EWvY
+Z2bwEpJI7CRSZlXj0oSiY2ShWXrzm4QU8W9EHBBxensq3dQwta7ywhG3BdDrGGezsIpD5kCHKgQ5
+q1fygRW3zFIbI9s2DVpWKKzI0joURYQiE2mXRdwAE3i95DCWmcmbhMQ8lcgkKXw0ykvg55PmpbSV
+Y20YaHyUl4vtBJCvMYQjAEHTj0VqM03x6WgoPIlFKEISiPCgIuQbqWUy5ZVFVcqRWPSmltypXcW9
+EijLBxceP6RdNLFLwewAFL2UWieVNrFplLqoQ3gUfpPUScFG+pK67nLD/A3Sc1/k3kbJ92qRxqAH
+M2gJTmxiE88crCQy/jHuGRsWJF/pcFq48qflquVEjp1ZQg4XK1oRsbb8IWKtGHotNYhBy8BqlnzI
+k0TYBstwTDyDOMOAKioD/D+vheFtc8NweNrqVzakS0OyKGdUUqRdFEFRZBwCwJ3hjyg9XWWPqGQ7
+B2rmpnlNaVXEaxVqF8XRh8j5oyR96fGOhpXUQ+prJojBSFtPESeWryJ0LiRFDurmViEZyeb6p4rc
+4SGNMa6P/4QlxqxbLSIKCpOCjohCGJt6DExx2ZE6QUHCKXq+ywumj2Ki5/JEJV8lkrFvKuEUR9q8
+FpzUpzOxCRh/mxOIJ/wlYiyJS3ACNXkoX0Qi5BFQnTBUkYdDGhAq/qsZhiHNAzLoDLF4W4brZt+L
+I1yzrBCHyXFhPtCSsqtAF4dfjd7I/eEVdJzlHwLVpfO2DT2aX+sq2G7+3U4LUfItY7KTuEEovbkZ
+izrcM/jJfNMnfqVmWnoRq/kRKDKfSiFW8pOM5PQQDDav2Io+6qI2ksRKhQ2oOQibDn7Q04eQRAdL
+7aifKjIoKecXBMMmZoRKLGIiIeIupGRNXdEVBsEVeoEHkHRtjBIp8lU9k+BTjEIpsPFekeJHVvFz
+PPEiiJAHOpEvf+ZAIvNHD3YI8nVtkuAIk3AIjhBqgZcJiSUJhRdumdBB3hZuk+B4lrARSuMQssYY
+7KM2KzQWZmFb/rclM2rxG5q3eQRGULe1LW6AIMryT7P1HEb0eQlRZMORG7YiWwbnHgNCK3HAWfk2
+fHNxONdBOEtWIUpDEXcmIlb3bH9BJ3pwJZ+RgtZjYvI1FcNzMiaBUuUnJC6INYeWVI30YFWBfZhi
+f5+mKJGSEqbhCCdWap42TZ9mCRjkd4tgGotQCB/kKDvlYNYDTB51V0SSS+FTXQYIUlVSPpGxJHzU
+B5y4iRU4X0inCIvgQZGyCMXEJqm2VGsFJUcRKA3zJFOhMz+nfo/SfphiCJQwTYP1TDGGeN/WbTgo
+Y463CTI2CXIwVzZxJaL0RSJnQgCzVQOyblxBM+sWLw1RSgqx/nmnFwbi5AZaRnBatoWblSBrOCz8
+yHm1wllxEB8JaYYA93lhYC1xMBsHsW9XSBzOEgfGQYUV0Ycl0odaIUdnNH1+YhmCsT2bUTWjYWyQ
+lC94BT3G9EiamCgpmVIqYVR+UD2VZoMYBIyZeJP2BQhEtwjB+Ik7aUHA2IFh8ygx6EHj9zE1hzHU
+9hMy4QeNET4cdUD8IhFcUV1qcSdGsmmR1CifhilIF2pF5wiOMIrUEyljRWmvlFaDwmt7thlRl1IN
+0zwUFimUgmLAWJT6t40wxgmgMAqEOQrfRnjNVHgwZnibAFV8lC+MARM0wW7vNlF/4mTlkxaOsXF/
+Uj5X0hC5/lMWaaE2tXdE7bEfshUd7cGPsrIGFXIbdlCPBzF6pdlPmHOQCQFOEwkHU9R5DfErqJk3
+SkMZKSgoevEibwJreSgiNolSHjMImphUPRVJagRJMmdsOQcISeUIZndorgQYsESKQvlpj0CMZSdU
+qVYIjuAHklAIGNRBoDgpG9RB+hdq0yiMvwYUxoRXJvUmLEIxn7RhdCJr7JZJN0MjioZqh+BpwaiJ
+K1Y9K/ZBilAJF3SU3Dlf4McmO9UXe3ZsoRFhmvGVjDKKnkZi1oYIMriTicUJowCO4vh4hSdjhPdt
+h5cJTuVVbSUUFtEnHUaHtMYVaNEvbqAVdOgnEHUloQkS/lUoB58XB/wIcNHRj7RyG3TIdUhaIb/B
+W/tYW/uBkTP0jg0xQ/GWO7fxe1r2eVzKBQfBbu5SETjxIkdBXn0UIvYiIib1SDJVfpOmkkV1kkox
+YZSWapSGoh34GoGkUlajado2TcK4npEWk2QJipeQWPQZnx1ECYpACe85NpQQjJbGiD+laYMySFYB
+NWdkEzFxQCAHNZwEKBGDP4riCBNkCEMJjI7waTt5lo8ClEJ1dikWGnx0JHQnPCmVaoAmiIgQjEVn
+ip6GdIvQgxgkY5swCq8QY4GJeKMACuDmbYQXY5uQXUIRl0LRLnnhpjdBITdjh9pkIVUHEweEUVnU
+Orlz/ievyY+zNxyyZTj8saYENlEXojaMQabiVHurqXAWGQcQpXkgwUXxqBANMRwE65Bp0BgH+JEP
+gxNoxDsm4i4i0mgjiFIp5pOBmmLa2XSaMQgsMmzmpXbWWImj4Qg2FRQOlnOMImpjYwlCKKv5Uz3y
+JQnsmX+O8AiOl0E5pqndpn9IawmaKqujMX4kNlMexTx7ZxUoJSgoi1IhcqpOtWF6EEd7JF83OaKw
+oamSMJRKeY2XmqmmpolpmVQzJV/AhJw+gxFG0nMPFkEV2KxLubcY1I3aWnivcAmOV5ji2KKjoHje
+xgktxVEPQ6csQiIzERO5E1XXNK+Rp6Q40SeN0QdZ/oRgocl5xPGkhrOGoJmZo7kn5HMiSUqwTqpl
+WchZ8YawalOQEJWZa4hma2iRXBFVuaQVPCEoM1IVXnkTMvEag6RpRYWdPgVBS8UmmjFIxARqSeWe
+o7EI3OmIEyZdRJWs1vsIoJhj3vtBsippZxVpuCq0nHAJ8OlBOAaKnFAJSWu9QvUkJjZWhnYUsyMT
+GuuVz8YYAupFj6ugjjKUozgpZSsJmkqMQQuKZEsJNTh0TStUNAk/eLlTd/lKLphzFqh0Q+lBY/PB
+Oaa+loCY2RqjM6qthgsKryCtNEoodVcTd9KHG8ZuFZGupyNrD1ERJjIl4WNnkVcRaiMraTF67VF7
+/mLKrwrRbneCsFfiQvKCuw75ulMEIPLCdQQ2pJ1ZFkZ2RXPRpqnqZx1LMg2zkVXpnHdpPYtCaiv7
+GuM3O/uzF+RbCKOYf0gVjKYGQa80YYuyTIoFv5Ygjkf7wJIAlGk5aggcwpyAtN6WWJogCYmMqWND
+oeObrE67P2i8P8zJOzK3jCHVfXbqI1TZOnoxPaXGgbJKCdcYeAgMipZQCYqlf5gKjJqKog98niKT
+KC/if5ZMX7CRlmYpq+TZQd6rf93WbYOFeJygCpPwCtmKrd4GCqAgY9SaeJwwJwJariyyuUIxuRDF
+LjTMB1E1EZvkphAVeSeUmXLgQmh2G+sxQy6U/pn4WFC5qc5eN7A2ZMQEdRBEpM+jecUINXziFCDt
+0YAtASMvl1IlNicxUa4paJM+pW31NX41+DF+FD+vRAnD+IvCjNHEiFQ7pShmh6I+eAmY0L6EpVjq
+ST0PLasdhAmGNcJC2G2a4L2onMjvedMotig7hVQiGzwr5VzP5mcXkxI1B8Q4QWIVaHaOcI1Ie9MU
+ikFGqwmGpQnui0GLgKmmxigyNyJltz96gDXHm5PLhHSw4awx2KCUQKGLkMjpmwnaygnVKo6mgMKC
++QqgMNdubbiboBSP65Vt2hUeGT5cEQcz4ofgYzRs1G6b1Bhx0EmOdbv8OIYHUVthOpuD3bq5/oOP
+mFVDYYpmuZmb6azOrEmGDhvZWZgWTWoneRE8rNSS8dNSg2IULaWfmTi2t/rRV8Mm0KudFhhqNbi3
+oIiiEtSeNUVUipBYK9rKgFwJ8Cu94vtBSovciNfI3fbSSivMmzCpCLyXmyhUSHVMP/VgipgSeSGg
+KPVUcbphcsUTL7uTvt1tnErVoBh48P0IM80JmLAIgufbQndivwqsS0XRlnyB1otBsiqrS+lpxNzU
+j7AJUg3X3rYJK2wKm6DCyextqjAKqpC4Fm5ShIIRTOI/JgJVa2gHTJwXfPDhHYeH4FOVj+2kD1t7
+arCGBdnP/OgnMO5COk7jQ8xwTprPFQLZ/vsm2jPjpKOZELe7ecFRjoIyEyMic8DqOzpDk8hJVu65
+TKDW2ySmwcTEXpt42x6kWI+w1JVwiphC3JEy5pJQCdTtbTn20piqrNqGtJSAeIl1eCs6tOnbyo9A
+CaCYlqGIltemdtMzVnZ5aArUaIiuQOdtE42dl5t4yIl11fBpWJeQ1mteWBRKWDm25mVrimVJU0SF
+X6+EUojUi2mcqX2uqecrq4nl59b9bXPtbaZAraqwCbe+4dxoCom7CXP9Ige4YSUSPIubB4QN1OJc
+2HywkdhlQIfBO7PLFQ7742Y2u2Fq4u9WPvgIIGtYW7XiFvpmhS6UzkFe4mUx46R7kDOu/pl6kOKj
+WpPQS4KvRElUzkrqxyh1zJ3ASNZjaXbjpwc5mZaL4MqVcKudjpYeVHbbFox9PqniKI6YoFjBDWor
+lmOVkNbL7W2O53jpy9Z53shoWWqkxpamGKo3mWp2ySY2ISSD0MZQ7tUvUj4sAghLrd9PranNrQmA
+bFjWLfH6x/NMDWrWY540BbM/lXQrQcqLInhN3el9SdOOzPPcKGOqMNctKo7aqq2qcNeCGc0q3KLE
+PkgN8yJ84O7j2u5uWhPLHpfO9bjtjl12AM7uQrEmTqYr1NiVbexdi6RVaezGLms1NJvovm4I6xZG
+Xvf8uLsdltlIfo+3QeP4W94ppaGD/lRiZDX5DUPBg1RptKptLhtqFkiMvQqUV22WwpyrmnpiS/3c
+BxytVP3SUb8JlbAI853W6+vI2Y14Gy+Em1DdyK2+yyT6anltKuYoPfMT3YmIo3qTLI/QviMiaKKS
+7+nKf/zHm+C9lHrfk4rMvV/9idyJnTqK7Xd2NfuySFWDcmzgoBaMsVzIhwy/mOC9lu7gEl7XnMDr
+KjyY3mbXvP4Kcy3XAGHKz6BBf/4M8lNoEKA/fvj00dOHj52IffLkoahHI8SKegb1Afmwjx0+euKM
+tBMnpRw5blaqbCmHoso8EzFaNKlHThw3ceLsdJPGjRqhcdS49NkzD8w8Gi9S3Hmx/qWaly3tQESI
+0I8fQAT7EER4aOFAggP9IEKLyFEhQ5IUvZX0yJGiRYsUFZKU19ChQ4gO4TW0yNAjSZokWdJUiZPb
+t4ryOq5kSVKlR5suWeLE6RKnTZYuRZ5cKe/mzZtMZ75EmtOk0pw3ZeZkWNIiRIXQLnK0l60j3oX4
++h2EqKvWr2gBAUp4yCxBPXzyfD3kKLIlS48yS0qNWTNqTta7e7b+mpNnTpUqIcq7KK4i3YgWFXof
+3BAg9ZIoGUKkiFJttY7y+rdPkvEwe+01Uzgz5ZVNQNlklFdG4eSVBDd5BRRVRgHlFQlV4aQsP8RC
+SA8/DHrIDjmeIkmir76KSCsP/iHyA6Q7IAJJD0DssAMjk3AkKUc+4sgDkKWuoqgkiJqSCEeVkOrJ
+qqVckomimp5rKkcdU1IppZ54rGlFkAz6qI8YszKEIEQGAmmhQeDzjTdDDHGMEsocQcs/tgxx5JDA
+8CvEP8kusY4y+8oTza0+35rrEfNKw2wzTcY77DBKHnkEM0swKRCUzArkhEFNLNOMukspUYSwQhRB
+BE88F1mzLUMKgbWQDxU6cyuP+OhrTeHGGuTEgd4k7FFLKOkUNlBBtaQzxE5DLLXNKrWEMkpmY4xO
+3iRRKzBJ/GMvP97y25YxwijFbtoBMXFNU1AgzJATBxkc5bVRVGn3Qk3pBQTE/le3EstWPibKMUmP
+sPqKoIPU/IOPj2IUKaWlLMpRJqlI0tEiI5H0MaKJXGqqJ55+QgpHjIBcCiMcTZKophJXcsnEk+xw
+SEQxt6LZSK1iHkRjO9b8784+18qvEroeoQvP3Opya1pEFCUW0EZno3RY0fB0K6/tTMPas6cJC3C8
+1z5dUBV6D9SUM3RPe43r3HijhLbc1Eo1Or/8Qg45PRApCKFaC0FOVho1Cs6RxZQd/NNkW7NMPM4y
+Q7c18uLClmhF6AysL1Upb6zttXhzhFLC/FMUNAE12Wy7TutV8EAKM3tFlVcitDBCCTP8cCu/EtqK
+uat+jENjwJnzQ8SsYJSI/o+t/i2pqYtUsmgn50SeSI8ZN3poIo4ekulEO1xyo0k3WDKRx5FUfm57
+6PuIEmQlRXooohY/ylchsBwCq8e/8LqWaPTUc2xbAE9tiyTw5B5K+IcT08JEdcZDmPLERTKco4Ql
+FOEa2FAwWpSYVKO8c4nTVIhCmzAFKUChqQp94lOLI9pgUIUeUknHaG3qzV9kaKs+yOpVe7kdcxRG
+n0dQYhOPcg2muKOaAqHNWYs7zSM+g0HHzIVUs3GEXZJWwMmhZ1s/808U6TIdTSSQPKcZYYRAOMIK
+kc0UphghKNB4RjSOIkFq5NvtlpOzj+xII9ZziMLQtLCyiEQPKcrISLLU/qOMOCx5/9pIjaSnIohQ
+jHc+8Yn5gESyEkUvJSh7Ho92giUgbeSOECmJ8RTCF1jp7UyDyAgfqDatKG4Lg7OphF0UER1WrkU/
+kxnXJfLSmdhQ4lFOm1YP3yKZQm0qjaTQTGQWY57CaOYSZTPFJj6Rig9CcxPIBMWj4mKeSrAtitGB
+2s9klZDayCorgzDemvhyP7YoZCSDOES4nNma8ZQmcQTiBKZ+mJlPjfCHgaoOLgnTH0ngDzdomZwj
+JqWeKNolgqKp1GLyophLYKKfn5AQhRL0IAkl6Iwaal3rTMGh1mXoFbBCDlnIIqbhVS9GXXFIv/Ro
+FpqNpHpiqt5J5PAv/pI1x313ROTuAHaVJOWBYylRUiQHmZKJOKcpvdselVSWIx4FbGcjiZFEtgKr
+N/mlT/DBG65gFBiFxglVkaIUJzrXJ81t6xCLsI65Hvqdw4QuL3JKqCOog8Fk/fATnNFU2kSFLnRl
+5oygSEWFFNvRInLGh5QhGudw0xv/YXFbB30VOv3wKq7S5Vu+KQQf5KCHQkRwE8TCGinQZhkgduqE
+qWAQ1q6ZCtVqwjqEqY5oMEi0RZjnWq8UDW/0M7lwxYVYccmOJdTDQSRmaBQYepc/0zhdDanRpM81
+BawoZ8PmBM9GEUkpQYxnvISwZX5hAoTCRNSckvyRIybqQ+9GQiOQ/gDCpn6sHpFuspSP8aR7NPpX
+lTCShxMVTyIqyRLJ4vAjHCEvjzSD03sUip/orGWzhQDJIZroGK49tID2sUQW/YNB0E1KEpggFun2
+yVpRBfMxg7rMo1RbLE58gjqJ2RQHR8hG2L6xQtaVEHfUWh3CHLSb+MtTDNfCl4S8h6ux6o9aSpub
+G0nEgI8SzycWRDpNdNk0auSEKT7BoMWxjkGBJZ19IDqtbq7Hcx/GRA/DFcBp3bI7l3hlZpLltWIp
+CKR+/nOgK/QuBZn0FcqpS6p8Mxx0IuQhOfvQOeE5TrMohw8pBUnwJCKihzQllBQhiYds5VOcbsVK
+E+EJVXnknEYm/jIiFBHTHZpTpIhUiUjs1UhEuHKWvUTnPW+1i6x+VhvjdW5yuy2goOo6mQJ27j/T
+mgx1BhQbT41nmfaJopyI5Z0FZQgUn0DjJbxMuNeAm4we9XGFYKvGH2ZwosFkZUHbJuG49Kk+dBKg
+WNDzVeHm6a0KsQOs5DSsTh0oM7EVT5eBrKm/YopBr6vQ4jBxmM4su5b+k4Sy7COXhtongm1jZj4n
+FRt+7ngT6x4hyr/87TRqaEIa6rYpjBbF3vALIaGtmZ70BCua8UVvOFepV1jdVJ/mTGHkzeqYxutd
+9q66OSrjHczeR97xGq859NWYcxDZvvR+ZSCNeFUUsYgb37yp/i6LoETOeONb/8imtxg0TJwV2s1+
+E5lYiCH5NUGBLmhtYqICWgyKH4WJQldItaA6oCYsIaE/Z2ikqpjFjxebTcloO4LSYRsG6S4dtHNu
+NrihBHxe9Z6CJpk3deFNc9Dj7HyKEI0jJAWWP0U2BRWLQSJE0GsIy9zBE2taiJGzIzChmHyaJ1qL
+qVSk4qLE5GOiNGgkhbo36vLpy05DiWUjYlPO+G/lKSH/2kqZ5Ddpnd+llMdrxEDaKb/jHe8q7nun
+QwyBvH+tiefjn9m//vZHHDmkeJY+BPDLv6oznpH4o+cpCbPAOT7gG+n4MLzAjXhKKD3JE4UAhM7B
+oN3ShFoS/ho2440eAjluepZP0TFSKJ3YiIxKQDGFqpTCUiMFSazXKJt8apx+2jGPch0NYQWXm50g
+87toERDKYLvOWbtagqvJAr21iJWf0bwPWwutsIt8UiIxeh3YMKECebkQuqbF8bE3ygxKuAzn+47h
+ewTFSyAlGhbPEDc8k5OMUzw54SZIUTwgYpB1Q7c3MgVWmIU0Oiw2khDsQzd7+4uGKoRG+JdGEAtE
+VEDtOgRAQMS/0Kx1Uo5HVAgjAT+EMESaGadSIgifW0BRo79cWzrlsL9SQkTyEhMRKZJDConxgsS8
+QkJqaahKCL3Tk7C5yyLzkJMNnMMNpEW2M48eshQxlLEc/psUpnElXkwNTVGtwnsj50sNGYy+V0is
+V5gF19FDVmCFj1IFU0gF1yCdxdAEvaJFORGxOemmeOOc3IAP3DCUyWo2NlGYRnBAS4g+NFKQU0ij
+MKsxyaOQDNlCc8s+3Msn8dgnNcSMZhK3CqKOwrgUIfyOjyPBzsAEjIIt6mM8k5q+kWI8P2SjPEyQ
+rxpE5dgqEdmqAERE30iI9PsQ5eA53EE6rSAv9noIslCYTvwLPmBJdAqtcRKvrQAwjqCpmwQLEZEf
++cG1ptO/7qqdJotAe4ulU/kmR8iKt/IDb6qER5mUVwI+SzGuD/SlLzwbTNEyUCAFTMGMR/FFhSoz
+Uhgz/ogDKcR6BSDSBG9bEFO4Rg2JvNZRBT3MwxLqInGjhATSNgdUqAxMxyLUPLrzLP0gQunwreDa
+CkAglk0BoVTwRsRCpnKDQdp6BYz6IIyaxo+aEHQhHYvahMZxrM7wJdlylGkxjC4juG7qJkXJO8X5
+SI+SkB1UI3RbrDzcRh7URs7pE3gCEXhCJ1IStkGkSnjKHX9TGEikP/FikeAZCJ0MLUOElb/IneTw
+DfD7KZIIHpc6up7ElfEzRHSaqU5DKhxhqZykR255C3sjwp/Jnbc6TLmgRTmjTXTJSl9stmY7zInj
+DNV6uBkbPBQrjLD0pYqkkDLqqHYJszPzTL20Rluw/gVamIVZ0AVd0EE/W5zLKMMuGz7Fo8Vr+c9y
+nJYCWih3pDlmeqUeeoRF+BA+EBwU0xTMPKwqDCF/8iB8NIVYiJA18kg0ikHZeo3NsKjE8xqLCsys
+TCBMKFFaZDYSpQ50+cxvYzzq8yhW0MeP3MGP7Cjg1MZBXMJBeMTyahNSIslJ87dSNCd2ojQ/EM9D
+NKflDAvjbISsqJkCrLqb0QqF6MnsVMCa8S73pMmanJVOxA26GztJUA6+aIQ+qbBy7DIV9KULEpUu
+wjxsmxzR+IRL0LLbdI1R7SLZbE3TAJuOkhBZyMM6XLcy2kEOxYVZwIUOPYVZsIXI88YJ/aEfuhRx
+/vSlXaTFYekh2ixM3cKNJsrAwxSNbro56TANUkgQbcRDMZNLQDMFWqjWWahW4LTGyNvDBUmFxMIE
+E5RSs2EcUiUd2hSN0zIPuZMzLMMUb/QzPgTJj6pGkNrGjfLNjWIFeysgUiovSZQVCVsE5XRJ7eIN
+XIlU4wQ/8GOy3Emnm4vU3FHPmYKV8co1ibg5hQGt3tAseEqn60QeQqIZevwqJCQ7qrRF0NIuQ4DD
+ZENMZTQP2czKwWRRyNQnzhizH/pMt+wlL7tUkqtLagTTjqItzsA+HYy8XNUFDbVVWrhVWzgjVkiF
+T6it2OgiIcrKA9I8RTkMXowWRZk4bAu9Y0uM/sT4OEfgA/v4oR5LkA3l1R0cU1rQQ12wVQ49BW20
+Rr3s0FlIBaylpuY6uC7bwIKUJinVvQh6yMhgURSUUtQEopObRmr8UD+8wevLPh7c0Fcgzu2ssCXk
+i95QKHjkDZ9DCCf7i/SLFfJykUk7Sjb1jZvjOaJkQAIcJ5BthEl1hK1QQkXsEwaMND9Iz+MhStMr
+xOh4RCWULOmYjQI61oAi0cIgUcH7FF9aUOlQorXNJmnSsmeSwdfwoU9JUEwAyI7kVaQVs+hTIz0E
+XF2wBVzIhQ6t1bxlVb37BCE6rcFMPCjdQIsa1kepBDyT0tO9oAOiwRONlUoAN04o17zd0F31/luQ
+Ak5TiFpdYAVceAX4xdBXyNU/pEbMFCGFEzPLaNDYQCbOSFxe3MA0XNG0xLLT8cYFmaaPwqjpQyy5
+fcE8jIXenIVt1EYsUk7gZRv4OIRG2DyFis+6aIQIrECX9ERciU5BLd2vAq37SWIZWkCFcAjfCMAA
+LMTfhSfOqbA16Y1RMqfyws5CLK/J2pybu0VvOkzEWMFo6aIyPLF8UkuwQdwSHRbZ7BSC5IQVDjOt
+/atTTc1N4YxY6FIdzUNePaNY0BBa6IVd1VVcwFBbuORc0JBcjTyzfI3XOdXYSM0TQg0Xjg08Q9yP
+U4zEJZbCsihLoMdKeNAwfQW97VBb6NB+/r3acKVbup3VCaZbHqwxltO+QjblY05N3fPFN0wMPMYE
+R9hAHyo3txyz0dRGxxvTfd3Sf/2zBKllzXEEenzEQyggtFsERCxn5n3e6ICPzVFCmI0VLpaVcq7A
+zZlU7bK3SSVFet5OfqlnBiSIPllJJdTJgbgfh9Bnznli51273pXn+KTSZ44g27Kos0Gbs/SMLoqN
+HjpXi7qEs1zkTzDpv8qM/WVh8OWEU6hG+A3mD3W5TNZV+e3QXsCFS9YFTfbWV3BkzAThMYK9bHom
+t5TSLtOM0/qhiWzlXdSE2EtNYom9GfWlfA1XDd1kPfTWv5wFWtDbXdWF+g1mXQ7cN9LH/sygrafW
+sjHThERWy5A2nLdWvGjBXhIlI6R9y8SCLcx86TPSWh0d3A/dUPjNQ1putkec1M6DzN6oC3Oc4+Dd
+nOwUY55LSd+tC/JaZz+gUSzSbNB6D53c4tKVZ9xI2HjWrqu0MJGlOkHtk2ethEZQhMhIDN5Q4sUo
+50Jc50aQE0whHcTgslPVWlJwyxVGXJEzl6fmFPQ1yBpL11Nd0mNWow2NBQ7tULzV6uCk217Q7pzW
+bmDQBe3W7sD93NnJ2riMuMNjYVYu5E/RWqRWvM/glAMRzNSgO4wCKV62aV7eUF3YV1aYbg7Vb1uQ
+BRB+BVqQhVwQcA4lXIYLrIcrUE2p/sj9PQ0+rmbHDczKE7fCkjzOZTy99sYzguAtZbzPTZBcldpX
+GNi1OLtuSuKGgky6k7DXNufUFUkaTQ5DFItCFEnfTcnTm2d/m+M1UdMPWbIkmyxx2md4rp1CJGiH
+RbuPY5oM5KsMVGJ5TsfdntyMbrjYKKy21lpMcdKunVYTKpsxQ+TMOEtmTGl9ne5cmAU3rwVbBWtg
+/u5e6NAOTYZh6FA9H4ZL3tD61dBYaNqTPgWMOoUtNEtTeOpvK+TNzKYofUOLWuuzbOUoqjFTOIVI
+lnMMDVwMnYUB59BakAW9RfCa/lzqFvUgThBwM2nVUi2XNkvTbHQa7FrE7dpRcVJJ/t9fUgBEasTl
+F3zBQ+/NQj+jVHBkxtNqa9SFWFrndbzy+HRATaDow6yLMV5nmA3ANVkT7VzZPf013DDe1oWPeSRY
+4z09WPFnsRvjSd3nyJaV3mVyBhTjhMg8DJq4bkoMizJn1LNFCMJj1EKXhvsrk0bcr2FcuIu9R9E+
+iyyWUziFCMla8A1OrdblWaiFOtfvyBPr7waGjk+GPf947/aFOw/irt7Bbd5IcEMjk76mvz7m4W7r
+Wb4U9oZg2OD1dG7rbaXbXKiF8Nbui//bvwXwN+f0P69psO5qbyQ8jdK+dYOtY+bt4F7qLJdtKzWN
+v+JmjNqxDv7DbyvXTC9XCFaj/vLeTQ3VEDc3cNOVrPhUlHIe1rbRbXzelqhciyeG92u/e5Vl7HKO
+QMtmQtctxN5N2byP57onO3hXjihiSWGjyhuXaEpQYtFAsXJUQaN9bdS7fCjtDF6UprZGJq21YRMy
+aX7KSi3L2mnChMRS+VdwVb+m1m/0xlMo8A6thU226VrI6bD+6u/2BZzWhWEYhmb4+GYAfvC+ZFtQ
+9qe1Ro8c4QS5yLkUzdfg9ZR2bknXhEI3c2lXKE3YUl2++OPXhdr/b2vEavn1dA/lUGLWVV5OkHOd
+LQqxSMQ6BVv/8oxOUgMeN3FDatDfsWn6xkwHiFmnQKUCtQnUK1MKT21K9Qqh/qlTCU29yjWLlUVW
+sxo5crSoUaGOlCpV0kTJUchKjlSePOmoZceQizo64lgIZKGcORctClmzY6OZlG7yBNmzEU4/Nxsp
+LfTxZs1GlXzyXArS6FVHTXM2JVmJEiVMJEc2unQJE1qwM0WKDasJ7SVNn0ilMkUK1KeCqUhx4vTp
+71+0n16lGrz31cBXswSyUjxLISdSp+rqsnWxli5dsnr10jVL165ctWxh5jwMV7Jkw3Shbo1LF7DY
+nW31ohXLoq5aih0iBCXxlWFSnyhi4pTqFKdNf5Vj2rSpuVxOr0jx1XSokSZWphovtmVLVy9gr7/b
+ehWrIq3PlWl/l/U9Ffjv/pU9JyR8l+7wyak2ccKL6ZNxyWESF1qYvIWWJm8FllcqDabCiULHmdIg
+YQ4WltApE1ao3Sus1CWLhqx4potUL1WyCEtgVWJgI25JhdRLSH3VIkctOqWTUzABRZRHIXFEkyOH
+eDTUjUjlhNJJiwwVFCUo1jRWTzc5FdRVSCE1UkktjlTgJgkiaJCBmjz31iaWoGVJl5/INZcmdVFI
+13F59UVKgdSZ8ph2GdLCCi21dPcKLa+8AuJ0deUyn3ffcTbid5/ZkosvuiQj6TCppYaaarigBl4v
+3l205yueCRSLKaT+VSgoxuWlJien0BkXgZpwIiZwzfmlFiWkOEYLLetF/vrLbLM0KqwupxBbGWai
+8gkaZrPkYsspAL4paEINztWfcsrJJRyAzpnlF4BxyWUgX6fIYh4rjUUkIYbAOYRYYRTVdUpjHRqb
+brG6gCWSSZXQiAklZ1HSYoIrDfzVSEnOeNKPNdb45Ff+ZjlwwwOL5NKUH/2oUr8GtwgwR2ORxK+S
+A5sM1kkAf5UWJSZhQt0lzon5SZdvaSIcchQRZkpepPC8M0Wt0sxXfwQhFotGI6qXmS4aydLYcJ8R
+y1lnqw1DDHi4KHrappMmo+nXqUmKTGadrSf1Z7IgjRi9HSrEc5yvGPfzgwg+J9hfe62JSSElbWee
+qFSzxmllsojaq6Jm/s8iy6HPkie1LoIO5heqGTokmYXHJQcKXuOOK9x/BkEYEYb6nUIqRXkjpt2p
+g0V7Sobbke7QRbbI8tOLLBoYSnOkdFmggV9psqImUrmkZVD+KvnvviqGRRLAI5n4o8k8DYk8dia1
+HHyCoTwffcIqOaJJRyUleL6BYiW4vc1e2vyfc5g4NFlef0f4kG+swC7oXbA3qL9iAoWZZn1nNIsR
+FGZKRZte/EJSDqwULrAGjPB0xlJfa4alqiG2r0WwM8TAzKMW06djNWZP56HQuyQzoVS8bDIHMdAn
+mgMgUIBuVirJy71OoYtcHGpRk5pPvkSVm7I9SlTCGs0O/UQvY31C/iLDyQtieCYt4VBHOA26Cygw
+AYoVboIvXbTi5YYDHImYghbHEdTbzggcgdTHPLHYX3fSsxgSYQI7CArTSMikx+G55XnmG19JWIIw
+kbEoQSURyyGzhMiEXWklEsvSIRGkx0+gzH2hOB8mt/SXA8FPTQUyiYKyqCaaBQYt0xnMYCKSnsnA
+LhYnnA634tUgicwiPZ2ZTaRAuMNO6WJCtMlM13CxGknhAhgOhE14KvW1ahDTa8DIlC6ABZ7K0AI3
+FoHjLEiVLv3BLkOEoVlh6PQf38nvQZMBhSZqBRafASpUjsNMMGRTCz85TRbO+s4uRmMZZx0qM94x
+my5eSZiBHiYV/o3Zj9x8Zpy9/AdAoJOfX4SzRbmJMSGzAI52ShgRijRmf3WhSLQUgsZUyLFXuXlL
+y97il02EIoYJ+otwuohJTp4MS4FcUR6FBxYvxZB9XkofwYq3spZtj1wNRUuq0Je+m7ksLe2DTu9I
+8b7eSbJA/iqOTLUInAol5Dwc2g7rOPfNnXEnPbbo0y44Y4tdwEY0j7NF0pJBDK/1IhnJ1AXZVgOM
+1UwKU2HToAUzA81e1KJTlimWhxSymA8tkVrmgWJBDDId5wAIh6iS3yZqQolULKYWd/oM1ToTjM7U
+QhaBqsgsfJFWtfbCIs4SVhFL203/GU1CcIpWYT5BkIFgUZwJ/gLTE2mIswo18UIGnczsWIkhV8bi
+XEfj5kVuk01apvSokeHPFqPVEMJkKzAzveSBwns+t8wFdLqNzMu8ez6pAkySoFTTXTbxkPIChk5z
+oZly2MTUo67JWj6D6ZoigxepyuWl+2GQQ96YIY2wURb+s9Bg4CWQU6SnMrcsW2gzg7UdGm5SVqsU
+MSm1QUth0FLICJulMJUZZPQiUv0M4mcIEws2mgdeESGjhcQZCupkyDDAAUwopCIcWkjET9MEz2hJ
+m5nuzKJTAK2Meu7JHqZdVHK5lZcpfCOogkBxQitML0xjGRndGsagW3bXeZoYxYFOJiHpQsy5NGQe
+xpi5FrRY/tWsABNOyDYUTgwCDM04Eaan9rnAgKZLtKhIHUAXeLxhguEX2zQdGFKHonTZMaDlJ1W8
+4IXMPybMFh2StywHhmdo2TFdypiuWWAmFr2qsmIkkorzGLmWosrFao0519QgIxjD2GsviEGMzrAV
+xa85cTIwuKlmZEaZxk7GiZmBYmDM1ZjDCK0BGWeuxcRCM346FyvOYx437SWy+a1tcV+Wqp0qJjcV
+Gc0vfnHtYXfmaTt01nw4E+/M1CKt8mmyWtMDxd+Y+XQyrl9hIOwXzqFzMHjRj6g/4SEHHy1D4pZI
+LCTuEA/FYta/OV03JyQqcymGMDdDy3H2op8VRtxowknI/qXTd0cEccvLleaf3Eyx0oa+lE50Sukm
+yTyXU6AaL8rhWaIx8YouUpYULZ3QQgda5gnN5YwOcpdu6eKXFYb74ospY3dmfK9z7elZyerFMEHM
+NLRnxpgZ3jWvUWxBS/HVrxZE9gYdOOwJtlgXvFrMRW1DY1LJ4jisnIz+4Ja5JhqOZ3DCxPh8M+P4
+cIpq3pEmkV/rHtPw20+37AVbIWVA+Bj8FLXo+LkaRDpXblnWwNFEKGJPZmuVecsX75B5Tje/E+qn
+o/S60G8AFd1Xm7YWEsGP5HCWcg1Zqy7umk6nCQxf0CEkt4PBz+vixGVuAYdOPO15KHKrq/+4iTrO
+/wTv/vSyl0AXBrcKFshjEu7Nql8ITrs1T6lmzGpu5yabuaCFaQWUnyyGPWXGLvzCBA2DXlGbpUhK
+MsTGMPlCXY0YtGEKYIWNLjBbiolNNUibXz1QbIAHMUyQZQAKlJnWoNhZoDjXRWiGQ+RWSxUXtZBU
+QhDEJyBFKCAGkfVK31nbBPEbachRZUAKBVFZWq3WogyQRMCOh9TSoNCChlDc6YDUqKGTXGAa50jR
+J/CKqTiEabUZN92J2nSVGs3YoHCYn/yfZ+iQ0ljfhJBR5MROwnkIvMha3tAeYLwFcb0LcPzMlqkZ
+hQAHXkTUOPUXQvwZFDXRcCxEhGWOg7TS14Hdebga/uO0HmKcSl3gxRthlGtVkyeWlrcRC/xlBg9V
+RlrxFXioxjO9hoftFWyAhwRioCxCgy4wU2oAljNY0AV6DbRZkAKy3S8kWRqOxjwFirCgTWepDZFd
+orx4SC/BjixEIysU3nGYRCFgguEQYy08y6QM26Qw0IhsYy4wDmck2S5EIy3Ihy1I4C/ZGWIIiisZ
+FIjwyf68I4WJGxjBVEEQV40pRNftT2NM42m9UbpIyGxlk27URWMMIIVlU2ZU4tFk43F8WzQWSyoE
+oKA42Ate0V4s2p4l3BvNwrwoWByuSpkNhG7dzAoxSLWwDYU5iKuViiJq3wsumKvxUC0V40UtTiU+
+/g2gaGQ8wll68NBhLQ4AmtRoMA4PuRVhcUakTKDXSMpcidhe/dq1dcaJZeXc6QI19NWl8GItMgMy
+TMOJ4QIyqJhq6MIvAtSz5IYxbiOvpCPjBIrfXZQ9fSHibSGWhZv/RESQVcI7rp1pDJMzlI0vgBBs
+tR0wRAp5iMaF6YIvNBCrFcue8OQrlFaM7c9g6A9MQtGihYL/9GE3HcdjKBgKCqSM2ROvCIoJKSM6
+quD/mVY0DiC0rKBmhEqgdFug0IuDIeRvAAbcxKCe+Rgg/mPrzVKoFF5xOZ3/eJQpfCGpXES6OBjS
+gEqpUETG8YxqRmN35EJnPAuu9YpifNsBweM0/kZjABHjOCIOsmwjMbLaoxSRd7Id2p2YpDzTA9ZV
+s62dajCbLWZQLdZiLw7oMfWigF6gfQ5T5R1mLUTKDlWTKB6K4eSCsQBgqUBX4XXI3wEguM0aJVFC
+E7Fag2JGbOzVrk2QLxQQYYnGLrjiojTQo8xnLUhTaCDGRWCkbtxYAuHQeYQU/9wXXcAjxtGHx50W
+4KEn6RzUdjBhc2kEGdXShEkNoFQTTioR49jTPGEph/Jkr5gRQSUcTBYGK3xCRV5mNHJnNBrLYjnY
+7FyI6wiKuUAh4PHKONqTYjzNRc5Yc+mQQ5SK1JTWaLgVbhifnf0fq6Xp6ZihiCZLfJAGaYSe/nxA
+Zm60mKNOU6U4m9g40KRoILUFg2DJ3Q8xk6hOSjXYXWpQg1+dpdegBjEo4LBBSlr5kywUFmZwqEVk
+o7A8C5ceFJwhTbiph505GC2QAkmkQj91RgNVimw40ATxEGOunTGpVjQZloM2m1PW0rk42ACdXo9+
+YYNQp/yFk0c2hoNRWEYgTTR2nLEMyrmcjto0yHmwKXdS2F0G3imIhig6i2qSR58wzaF8B5+ECpSa
+1nlCHAq5Ui7Aqdos2Q41Cq/Y06f43RnpkA5x53j+3wCqh2ikB3qmaaiYi2w62FL237+Kxg65VrDW
+i2M0V6AcyoxK02Ou1i/swi7Yzi5tjVzh/ieIhU2lFGal/EKD0saA3mItVsN/jiq0aSqmIIMtVgOy
+6UJhAgPZtJZ3+B2gQoqEJoud2Wyw8srhxKWozGZpGc5OmkIdYUJnjcawYc3OTgqwuJUtjNYuCJsu
+BAPMQibV/MKwNRDJlkctANBqQiPgEUab4Vb4hZ/5AWAsJAtpcudAGk5z2Ys9osvTLM64KcY0iuhd
+PgoA4mR6AOqjFB9plJbZMc7+OSFuHocrMeHTzOqRVhOWmq6fqCD8FR9hwF9OGo574Jp7DqMcZSx1
+OkYtudZk1mxhtRbKvhpPXqnr7h9brRgx2K3dkmCk1Kx3pOiI5kIwxBMqJkMuIgMG3SfZ/rSdWsJd
+WWqQAxlt+n4NLfLipXSlgNJd+YIHzQYqCHlHslTkNmqGrnIpxGoESSXs0vBv4UVLHYVCP+HG1VDK
+r20YzK5jLzTZsEUTMCSZL+QC3/5KA12waLAedx7KpxCZ/zCIuu7ZqKmNu8KL8GUpvKjuoLxj8P7d
+2BbejP3d/tmTZThqYf0reDjKyXoGaYCwnc3ToVocZxmO300jKZaikfXT/vKQep6L/83m/63jODoq
+FGeGBA7h/9GpYwyxe/DTNjooByMLTipl5NypPY0jpNjCXCngrx3ZBdvCBu9CipKHBOpnslkKVCbD
+M0hKsA0DsLBtaySD097iLmoQapyY/gYiQzQ4IC5c4DHl7Wjh7We87YjOEyiKaBCex+IIRFyeaWjI
+gmrNrkCkgkk0AinMamHpAtaoRt4BQwPh2nxGSqQoYN32gt3yUt5qsQHZqGtZxCdCLryaTiqEHwmf
+Tro0F6vN0uJ4shm10qC4Gq8c1wAizQq1wuksxsZmbSkeSmiIhuiFBv5CCngo5XeIxl2m6xGf6eK4
+Vb+BXr+Z7IoW0K2aFgD6XW5sI22YrHd23qMELf7Orivx5KKWBs0CS6eExnoMsbPkkxSLMxCxFRwn
+w2iN4IsmTmRyxny679yxb6ZadLBBbTJ0ZSSPGDORpS5Eg9ggw69lEDU8rdg0Qy6u/h0yYW3DVsYF
+Mw1cnuzoxiWFpkuFrRUsXnA1FcspaIkpQOYB3qfZMFv4EhZ44BoD0YYveCroKUq8BUNkuvKwjW6r
+hdvu3qg96V48nkIrNMgslBeFmFbHzZqZonAtLa6XpusXS+OstcLDvnVczpOuwuXnttZopNVhJiFb
+qRboQTFpuHMn9ok4BzFpEI4tgx4H/7MvpGikdJZmxKdV//NoYbAdX3Z8QoqD5lOWcjO+QaZ3NhDo
+sZU883MWY+xhmqLd7oL3OqACVnJrYQ3N4pox4a0vWJDdNbLe+ayHiQ02jGUyYAM2LHdJGzLevXT8
+LtOJ7eIwBAMyYPQvXHanzFNr/tcs8obGLjhLpxAlMU6Gq+WkBM4str1rHVWC6ZkNMZAN3kXv9jbQ
+diuoLk/QvoGep4KH1WixRfAQh5qWOj8Ny5pWK6RrLRGdtcTpjDGOCoabt6nmGwHgCv8dPD4sKJru
+oh4RTlqGOLo2zAbDhtFb1SiZg4KnLxglCLGVHTPQZQMLsDzlavHuOgaxy+4zLXPGAQoO3+ky6KlV
+KUOxOPJzPLeWKzvoBzUOEXd3ohgOzS6K2URlWkYvsl4Y2rWqNKllBX6095o458WdpXQlLWrQNAQW
+NMSdAz53VxqyWW4QLlt0iraWavkzaPCu4xymaPj1YZ6V4V3kUOJtBbtYaaXC/sBgAi3YLb3h5wO9
+KKdQ23xXjWBN7dwO23UHuWvh8+fOUyerTTTOWioseDXnRSg0Vyy0QnPlhmxSGJ2SrtqUll6/Ji2o
+OoXptbHcurEkkaAW4+iKhqdmd5IJW7BtL9bI+Hr39hh7BxQLuS4j07ODRwXbed9hdp+7Z9lEk7S6
+son/0JAfygXfuT9VMTFedmhTjQICAwRvsWOPoyaz2mQHQ2q8sVy5ajk2kN1iMFZ3hi9MZTKs+dBq
+6th4eQaixpsjA3OfqiEvPN7hVQMacoCamH1SWx6Lt1rFM4wb5mzTxmg4ZbnOGsTCeC9MbVWbUSow
+RSi0ct1eajD4rDEtZjRt/rduy5WYp9UvvBgySOD2trZqESAR9wo/47NDkPqsNVdak5Q2g/pqHqUc
+We7XunWEA2At8Qr+3uQ+95tlzGromXZu5IJqhIe1Cpar5tWiEE552zzeBkNajeB90i2LWXBVd7xn
+PEs+ifc06e2LEoMzkI1qzWystlg+DTQPc8r2PiVW33lh/fm3LWXcCrmvWbTAW3QlT/AwrHe4YyXe
+Zb5WWnS9mxg2nHRqTAM1MBM26ELpyzQFlr4GVcPoM7LYpPtTttid2zlbbe+zEBtDY21rEQapi7Md
+P8svPCBiE11S+4GxxpuSp2UzVAqWczXhRy+wKCDZbPD0UlA50m8QspoM/mPvmZ5eLlykLKi66nbT
+w5pxAakglppLGgKgq+9fnxTjubTC2E4pP9Wl9YI7srTqvO9aLooN2hUmQBBDRuxXMF++cvnqpWuX
+rmDAHupCJlFgMl29iGHsFSzYRoMHc9XKZashwl0nfQXTtTKYxZXDiAFbuTKlr10La4kcWZBnx14Y
+OxLrqAukLYYMbZGctcuWwmHDdA1LlgzZVIvDMELVRUwXRJ+9BjZrVtWqxWTNzlJ9ShVZVWy6qE2t
+lizu3LdWyVKdShZZNF1vcZXVlcxZ1I4GfV7M1cvozZsIfymspfDnSFqyktaSVWvhT5W5OtrSfOoT
+pUapFhIFa5GYRZW9/mz2KthLJrCpK2Xr+vXT4USOMWfvyiUrl66ct0ZqXjmLVqtTtGjFiiVLVqpW
+rVKluqwLOi1buWJ1l8U85PdazMNDT089Fy2d3DXXuhyS+qyQOUnW2lVrcLC1g5OByqrBuAJmIWBO
+Ygy0rTaSyRlgnnpqMGQkxEqjnzA8ybGLjGJoI2KIGeYXYECMisRgQGRqoVyYKk84W4bCqrWooBpm
+IAM1zEXHkHJrCBmVCkPLRomckcqhX7jiCquDOopwqrj0KmvAAAesxsqp3soSrr2SCQzAsqqq5i9s
+qLmyKl2cmSqYmyDyJbKD9tOluI6E66W4XRCSTD4dfSFKv4Q28owo/l1OSSWURho5xZenkNlIqoEC
+RGY3lYCZ6LZkiHFmookQ6ohE3l4qTiSdaJlls+JkaaVUWWg5hdVaWnlFllNope6ynKjbjDtWbzmP
+vlZlmW4z6HS89dacaNFRPvlmGVXZnHopqTgp82prIP9mnJEohGpRCRkIlTwTJmKakWgYFLnyDSQM
+E8KTyQZlmnAqrlb6ZSbhfsFzpEFVQ3EjOQnyRajOJtJFFlbGa6rPJCEs91KYjERRpl24slehNVsq
+CxeyouGyGrQKA/NLbKrBxqq5qm3LIrLErKavwLqcCi2yLKwKwotyC2Y3pvqEbbaf3swJ2sc4C/RH
+jXaJBRNMFjlt/pfXYppIKhuhCuqpEgt7aVLZHLWxtR8v2o84zYI9RZdm72slllPaE0m0WFJJLxfm
+MNNRzmFZ3bE9VqeDrpVabKmP2FvpY/VV5ITWCdBfcgJzrxBtC7A/lVAMZrGFnl5oojShStOqEClc
+KRmMEDwpJBZhy/AwNEMeDKOBttJZNw6FA/yX3dwkypZZVHkF515E7Oj2VzaZRBVQTFkql91WBpGw
+Af1zbUXhHjNKK7yg2WuuZLLHS0q6sNHS5LtQnsrIvMpyuZq6oDTLKpmSQZIjiRYKZpZXVLFvoXNR
+jMpO/uSEkIUcBCzAWwkxTiILUmCiEIl63WBgYpUIneslncOU/i1MkT/OUC41rJHNm4yjk1mkghOY
+iJtIoGM4oZ3EVO45T6/uIwvkqIoWxrmMaJbVNp3IpzmjUlx7TiceZ1FHNDpqyC++973BFOZqGLJT
+SmQDIiNFSjDmm4psoLKQWaCtFq9IhX0EdkBMEWgYmrKURKKyldjdZCMFIQpUMsIKVcxjHqwY0kT+
+9YpLwKIe93gHKxYjk7aESImgwwpzWGGKU9hHP/0zo1xYlkTucclk23vL9p4EswGRa2NiquRgxHSy
+SVoFW3ikTaNQZAtO8GIe6wCFLyRloLOFhzmumgVJUiIchVQFRMXpRStCcajTFEcq7qOKQ6AmlLIA
+wxTTmAc5/l6xC6lAyBmERKNuZLOj6kgCHPO4xivQ9iqR7CJZtrhFK4iTi1uYxxcioc6oxiY0IIqm
+FfTplUimgzj3bMZwhktWsUJyk5yokUsyK8uM0sSVZHBEZ73o1kwWqqlLKVFTDhHKLl4BC2bw4hUZ
+ZAYz7IOkNLZuLdWMlMQygrnd/ARE/oFQLzLhiXrUgxMY2cu5esEJRJjjHn40BWh+MUF5tcVzUAHG
+KzLBi2tcAxdsU4hDvkSVuUAjTNUSZZfmQo1pICNLybhLXJCBiwPKa0CD0YUnxdS97kmOSm3BCtiC
+YQtLwOIe8diEUUZ3v492dBO8mIZYueZQX8DvKYwz1SmE/hmKDQqmGSHyiOi2YhZbTEIY91jHJkDT
+FghKLBgTwZNDiXOKTfwhHPcAhyYu455kjdNtKHTPfXIiHGUhJ514apZ7ENKd9UTnVHtq23D8KbTv
+GPEktYjMKKPEFuUSaCJBVSOBWoeXvIxFF8+ISogu8opFkOMe5pCEJFZxj3moYn+t4RK9rlIgqPim
+ckyiF0SOaQlI9DQTvUgGia6Si00Ioh33EIYnVGGLjbgPfVIixis8wdOergOcskFXQeVyVpgVWC7U
+QMY0LGyXCMeMLbw8YzKqIdZpXIPAIG5fVcQ1RXD1YhaSKMU92lFf14BCpvdghiUGgQ7TmqIhHLlJ
+BGei/k64fQJRnwCNVNL1kiONSyJ7WckkitFdTggYGJWyyEIysovI/CIhIdHFJ+4AjntcAxNs8+1I
+/vcsZ/FJnve8D1MQ16vAxWeHAAVuToazt9cqKzkrEc5FuBeXtUqpsxBMV2czdaaEUitKafIcin70
+Cjxog7546IR4R+ELNXGlXLPgkL0wFZNDGwRosHHeuW6miEjcox6TMCumIOQLSdQhHvWIxCNk0Se9
+UDhKw5jFJLgLY3KQgxZ9ElC15qKL7HHVe1EKq1eR4cm/uIQZuhDr6CLzKIvgQqy44EVPSWwyi2QV
+TBItY1WKiYxZKOLF75BELkLki01AYh73CAci4MDd/m9K01638M9ANCW0WRG5EZiQRZMzMouF7Aaq
+HFkvYYZhC0RE2RyW0PW82lJAhiwPJcLRBBtKCw5JnCIWQrMJi07X5WQJdDJ8Vmc6Q+gsPOuoV6ka
+jzx3lKxhuTMk7RQb9bSci7o8qWNlkUpFq0Jq20SFMCpjC1qSC6AzYgUUeBDzPYoBB0bUNcCWel4v
+UnGNeICjyWcE0U8g4pulo5sqvZiEIPooCVtUK66WCIQ76rEK38GkJVUZC4TP9IpL30MbbAiE7zyi
+zC9Fmy8EJmuUhi4XXLwCHO/4Rm/MahuVOBMd4I3HPbyxsWhYCX1+P4tE+r4yqEzi0jG2xZU5UYc+
+/s5jDmPQ8TUugUYE/sLsllMnaTDRiGAG1SKv2MYzX5GSTwnlWxbxBSsQUVl01FQgFYmJznSGJ5Wg
+ZBaXmIM1xmwJ60jndEzZxS32Q2f9HESef2JzsXiuo7ytlhbIUSd+9sO218JK5rfIl3AQZy5cZi8G
+zSKaoTBu5EcgbSK6Bxmagaq+x+kG6UxMYQ4o7R7Q4QsIoa4mYRbshSXsRxKu4R7IYRMuAjFY4iAa
+AyGWR0C6YiUeYQPrQRIUrk+qbBhyARHm4B3qwRN+ikM0Z0DQpxkmC/zmoQ4kARRYQcuMwij4gtsE
+o08mxKxE51KabAolQd9MwRa4jD9+4hUkwRhg/mwSJsETYEEVvKQK0U0lumJEBoThMGoS2i0T4C0Z
+aiH2+ugeSqEKbo8UmsIoXgEjGIQxZoEV4CYUGIgSKsF3iIEVKIsEOcE+koUVuPA37GQTAoHiECEQ
+X81+zkZZZqFPWMFVaAET6KC0rkESTCEVPuETUuE5QmIWCiVuUss95GRvdAGHjmNU0Gk45kPgXCi1
+lMWccuEU5EOG7OT+QIJ68gUhzoouoCEa+EJlJGpGJGUtpsJzHHAqIHAvtjEvLkIoTAEPwK/W2mDr
+4iF/dIEVQAEXQGEWOOH7TCsQNgGcZsEUxsMU9NFVXsESVmEUGFEX8EcfIUEQWM0QOCEWlhD1/tYN
+DdzhHjpBFU+BE1Qhf+xLIPHH2vSCFQJBHLpLEYyCXkxhE1aBFezLJfBHFWCBE4hn8nxHlV6BIlVh
+JrhtY7hNFSbBDFDxEUCBEzJBFTRBE4gnEFwBA/EAESRhJrdNFXiB21biFUahJysSN+5RFUbhE0Bh
+E+7gxdrBEuxrIiaBEOoB78BhCTzyGizBFHrSEiyBJbsoJjlBEkbBEjCByPggDgDhET7BFEYhEzHQ
+ED5hEywhEzghFTiEEyhyEtigsszhDn7SKHKBeDTBETghKlNBFj7hER7BEyRhEyTBAsdMLyvhEFSh
+LREmFTRhEjaBEh7hEjhhE0ABFMYDFAKT/m3kJM54qG/WzP5UpRZKLidaQWxy4W9G4p5GhSQEC052
+AcSYExmoKnu60Vuwy+nKAuqsIi4ELbnYQmd8QdLAzyOL4Q04UDCvod7ewRgCARz6qB7CoR3eARYu
+oTxXQRG66RoMARbWoafMQRUyqB3mQRjmwRpkMBAmwRzmYRxswUBewRD6S7zWYRJWoUHXYRV0QRX8
+E0DBAeo44e5MaxM6ZxY2oTxZ7RpWQhXeIR4AtLs6ob/qAfcmIR7mIcrG7BUoD/lM9B0gobRG1BBE
+1BrcExKKod4wEBLaIR44ihNEdB6+wRReoTzBgbvmARxiISa5Sx7Kcx3m4MXiwRJ0AS16/uERBGEe
+3EEe3GELdMwavssY+ggcipQXMmEd/vMd/GgVKMEP8q2n3mEVEEFE60EcEGES8pME+QoWHrIeSuHF
+0IHS6gEcRlLsxKG0FpUTLEESwqHe5oEXEAHkxgwR7pNFS1Aw1XRRzSFPjaGVSghQjVQWmMK49kQz
++iaegItvWKWe2mlvfOEX7Q9PZOtybidf1OesxM0qrJMsBCIqJBBKqKF9TmxmhAJy7gsTJo3w6gEd
+xDMeICEQxLAeeOod5qAY+iseioG7jGEOdIwX6EDHPCEQdMwd6u3e6I3V/rMNWM0MXmweVgFGguEU
+SKuPzAEcyLWuPo8cJuFd6+0b9MIU/mhtRseIE+gKxsSLGTJhEuotHhpUHtpBHvwoEOaA1ShWvNJ1
+BMnhDyS2HgjBGh6yHYohYdmV1SChFL41HATh81YhDHuKRVchEEZwLD9vHgjzxWAMY9uBXmEsEx7F
+FzgB7trBIxnhLAEBEOT0ROehHmBhDiz1IcfsEOAA/MgUxjLxIb0JDnSsHR7yGhAhEFjUHUqhKOvh
+RHsKEqJPvIq0pwLhDyprLMUrENaA0qwBDjgU7zZ1DvrLHT4PIsM070TWjzTBGBOiT5DFVnQCcYol
+VYhz5vhPWdiPT1hEaJwrWqCB9OgiGrBTuQSClySKAJ/kdK0CGqCTWs5oFu6A0lDh/iG3bh4mYQ64
+yxWcQMdcIQuWgfC2APysAQvkVBnMIGqz4NLqwQkIgY4EoQ7adW5lcAl46psu0u3MQHbNYNXkQQva
+gHkTNhwAzHxAgWpnFCZmARFKSxuWgNLAARHCVA+dwCPRwQkYoR5oDwt6Cnf7a1zBLxzmIGbnQRCw
+gNKKgQ1ezB2QYHYhQWjRIQsSthP+VRnW17TMIMrawQnkFSIB4TuXAPyCtt04Qdmawe3gzh1QgfDO
+MnvvQR62QDwNFQ0+zxWQgNLMAQ/m4PPeIAj6qxOwoBj6FAtkTx6QQF65ddXmoRPoYA6Ksky1oN46
+AQ+ibB6cYAvqLRLMoL9KIQh4/koYsgAVwYAriWDr2uF/e0oLts7WrvgejMEMxJAcHCEVoCUyQiI6
+YIU9lgVZ8BiIcmg//qYX/E9DdPUjSoQYoGR99qLooOHvpKLvoE5Zk6HoqEEa6QJKvlG6iCEVrO4e
+lIHSlkEe4kEQxuAh32AJlGHMsAD8wCELNhAd0EAe2BMNprWCtRULHPIeIgGGIXISAqEOWK0o22ES
+WKH6ckERzKDWIIENomwdssAh66ETnPceVvJLjrbevqkrOFJOSwENuLJ5+6gNsqCUtSEL2mCm6qAK
+egoNuvgerMEMUFkQClcQsuAss6CywsEJtODzFrgo0cEMyJcQzACbexgDx+A7/rOAipvZDLirGLBA
+jLcAHYn29I62HuJBPN1BG+rBGgwYxqJgC+SUEGo5EpwgysKBDSJBorGAB8CTDKKMHMagFLQ1CICg
+jwihstxhDjSWMbEACz4PFsygssThCZYAn4u3HtoAC0rZGrpAb7MA/LRhoz+vDlatHZDACfqIEYxa
+nQfYvyQhWfJkP0LiOtoDhnhoOFRFzdTJhRZ3RHQmMqJlTWyiILgCGqjhL6LtkS3MKjTla7xRKkD3
+Ol0mGuT6OmdmLBYNK04BDihNGbYOHeLhk4uX8JSBp8KBne1tDorXHeoXHdBh664hCyhNHMwgjbMZ
+Yz1hFDJBBtWhHowhhKFO/t7mAO86gbLJwbKxuJWhOapi7/OuYRYCBBQCoY+cWYzrQPbugRDkERzM
+IEznAQ2woI/MYKntDbrBIRCWtx4gAQxQUbrZoJjnwRPuoLLWoQ5uuLjRwImFth2+mQRDO2pveYvN
+QIy12Y9COBmeIafgLh60wBz6dMyygOLGAA3665bxub/t7Qu48gukQG8r+B7E4QssWBmUodZK9iN9
+O8rQAQx0GiIXfJ8znBDktR7mgAx82rPH7Ao8cp274PMIAVEL+vOQeLGzQB141uA2QyTEmmzS6T7U
+6fzcz81WS7CGYiv8TcveRMsIwkri4i2oYa3uembOwjmv064D22SkMXva/mdYMWUgQIG0NNkJxrSx
+h3v25sGVw+ELUFlj0UEelGEeOtmiS0G2AyGNXaG878ETwNAg7bYYTOHJYwITXRw0zQHN/YvOVwEX
+klwXTCEQ1MG0XmEqXuF9SyEQLu0ddrneIEEewwEOxPJ+e2oN5mAEkbt/k5iO/Dmxs3qy64AHL136
+6OCZCYG4IyFLYQwNokwc8KAOXBkSvqC/hIGMg3br3sFD46IX5m0e4mELTnjR19mH0YG264ERahmC
+RRoLuBILmgB4AzocAtp+o3YeGKGUyYElAaEozYENyOAhO0HEu2sMwODz2mADA3jDoyCxo0DfxiAL
+cLgoySG0/RMW7mAN/uRBHroXHQzhFVoBOWzi/P7prPHsFtysFuyv507nIG4h4W+BIIBKePIlMvxN
+rtUHGsjkrqlCUw4wL6DEZMok2gy5TLIzdB2wqM7mddV53jl2uOutDYbbnSk7HAIBDq6hTzFbHszB
+sSktHP7ADPLzzTF2FWbhtMXLl0ehS29DFe6umemA0shB0OccY2FB2ZDhGaBhFgAhbEMYGFRBELhe
+1t1hl2X6uNkA7uRhDrqgp0IbeM2g6OfAeedhgVHRzE1rDVK9u+eAMfMeY1+9jzxB1tuB1rvLhqvY
+DHiqGOYAvkHYvqiB2CHBfuugezH2GhbcHGj7iHE58Vea2v3oC64d/qtr/arFYQv4uQ7QAPzM4RFe
+QREozgzOXcNvvwsesg3kdR4CYQxEOsHV2SzVGQ6wAGPbgNzH4HqhGRDgoLRK+RoWoVl8wd+4hWz+
+pFdAgjj5yYfQD0/exE0cPl+wj6Fy6SBAzJDDJMq5By3kWnWdEzv9gvQE8K/7GqyoChmcIa9NARAA
+Ity9cGYY3bs3T1CWePcIsYFF7toca/fASUJkUJ64N/XqrUM059o9dHPmuLvHqM68e6teWRJ0r16Q
+d/e21SKWzBmxTYJowpojbKSZOic7mWEISxc1aNCS6QpULCasV7g4zaEpbE6pe+3qqLwHaeJAM4Tm
+zTODJaYgMwKv/mWhGM5rR0hsBBYzE1Xc0HpgAwVtN+croYX3SpkJiu7tPXJzzMyrF8mMuHt3t7Yr
+eM/dJqXJgnGK9HiwuYPXwJSqB7gOw8hF5+T9QuhePDRFJhfrEpWcma3osEwkV8cVV0WbECGmc/Re
+JzJBzbHBwpDQFrV472nLou2eNSwUwWWZsxKNwctYHsM6dGfryVWcbvna9WuX/Fv03fvyReyW/Fq7
+bsnKVZ8vueTSXy61+BLfLsEQQ0ww8QVzyy8P7oIgMdEkg0011FSDTDRLJYMMNsgkA2Iy1GBooobJ
+eFgNNslw+CKMLiYDTYc1OpNMg6/8IVA4a2zB0DxhjaaMGRRd/mNkRZk88pUyRDAEjiKBdHKPPGiU
+NY9XK7W0CSQxOaFMZqoEg0wzv1wiiDv1wDIlQlfKIw8h4LHUC4kXApMJaFzxkskqgQikDRrZgfNH
+HXyF1R1Zj6GRVmFbnFSMayNlUUeVa7W1W2ZbGFQPJHggdscc8ihnBjraYadddeIEAt48nqxBkTjc
+cZWpO6AAQyMwlOgZmXDagRGJbFsQ0lEkaDDkiaTkkJEcIz6cFAkWUYVDBrHzoHHUPIFwyiZQ95iz
+BhZFkSGcOXAkJwgW7RS2xGjCoHrNGJZtOs87ZCG0RRtSVYKIobIZAkortwx4H4XyycJfLr8E48vA
+Df+33y65/iDYH4UFC7iLLg4Sg8yC8C3sSzAYntjUiSbOyFTKK4aoSzUnv4ihLtiYPKOJTOHYzDA4
+AmMKIOAMhMgd2cUzCVQITeZqIBSRwwknd4xWChajGdO0IOu6A2UggqykCi6bBHsPpQxdY0tTupgS
+CFKSzHE1Q+RovRIuJGLDVDKzKH3QQe0EstVIB8EyCSQrFQ0XHl7GM0ej8qzLEkZ6M/QRHm3RMWc7
+QXriF1dwK4fIVvOYWo8neCzN6kqd8H0QOqNettU7r9DYFCeT1OPqHf5eE4gZNLlzUj2lzMFQJ3iI
+JA4esNKuDmpsiJEbHmasw9W6jLGNUDvGRIWO8cF7Sw4b/mCs9kVU8qhzzztzgCGQNYEx1M5KEpmx
+bjvt8AULJ4tIXZEjrcjHP4W10CIL+rwnGLU4UAH7c6CG3YI/DTOYfN6zMGKAbEEh6xh8cKKhDG3I
+ZB+iBslodKFoQGNDKMKGCTWkImpE40JNEVGNOOYMZ+hiEuGYBzmWpJ5VWIKGB5nHNSQxCWvUAxyz
+eMUkwOGqOYCjHqqwhS4U0Yn5jcQTnBDcPXBxNk90xBCBEMk8bIGMZyTDFpmYHzNwMYlSSBEdqshE
+JmjCC2Qs5UTIOJsgrDGqxaiiix3xoSo4kYl41GMSkrjGPMCBCMFpq1Ha6Ag4JrEjazyGK6t4BCLC
+UY8f/v6hGHyxRjzmgUZh1AMdmZiEeUARxD5eIxOKMCQ5JjGJT8JCE4EgB0KEuDdjoEYVHSqTKrQ4
+Dx0GwhyZdIRfVqKN9sEiTSzpog0lwUVicgUSdnBDUMhhiDtEkS/tWEUm+CZI34mSHEFT0yoAcU1A
+wGFdomPLSuZhDDzIAYnXQAQcSvGOjpBDEeo8TT3Csa76UUIy9zBGIVIxsfu85z0GSlhCDzSwiu2i
+gANLWAIH6KCQIegX+GkQMjq2IBe5CEYgpJHJVjhHD86shDTbkIZGaNJkNAMazmhKU5DxC11sIhOm
+0MUsNvEIUMxCF6NAxCRWMQlOFLFprOhFL0xhiaYB/lUTs8ApGafkic3Y4qec0EUyeqGKTYBCFaO4
+hCRA0YtmNMMZTxVrL3TRC04AohNZbSJZe+qyOUbjGU/lYidWoYpXGHESsPAEFnERVk68ghWqgOQm
+NiEJSfzBDAdBAySoqAtdqAIRgugEJCD5ClOY9RU/lYQnwmIIqtjCFKZgBWMvwYm3NhYSsMiEUDUL
+2rKaIhe4QNtpA0Gcx27CFCRiSjNWqwhOpCIVlgDEITTBClRe9g6IsMQoNnGJqIKCElFlrSHgMAlP
+AMIRjiiEHuwwCE1owhBzuKwiXrFVSwQCqYYwxCI4QYlHUEISmuDEIxTxiEpQwhCDqEQlJNEHQXjK
+/hGkkKwhKEEKTQCivZNABCc0MVkztCEIauKFJRARiI4EghMI488DJRZA+vQPYxKrhQAJZDEFyWdh
+C1vQLxq0oGDY+MYco9uJTKjCOcIOphfKEIYylKEWnTBFG4LGhUiGjBg64xlqJQYw4DoMEjlVZMkY
+Bi4E+1Yt26IXDILrLN46ZmCodRi9sEXX6kQiuZEoZ7vAFVxr4dVmlMgpMoVGM+CKi1kMQ8/JkHM0
+6MZCEX51FrPARZYLrYtXeHVnwABGL3yhizEbaBagUARl7yEIpTIIJ5o1BWl70WJZ6AIYtkiFqVUx
+i13I1NJZlpsumvLVUQyVRF49sy6GAVdiDGMY/ozuWpp7gcUVlQzYjLaFgFxbi1/UQhZiBUVTLT1m
+TAOQP7rIhSWieopTpEITlVgEJT6xXE5sAr5c7oVgXW2KT7yCFqxgdC1ykYpXxCIWuvjEJ8L9ClI0
+TROvmHa+U6GLVJzCv5eQtyWMMY9wSAEJ+VwFJv7AG0WEwj4Fi5B+JprQjzcQggodech0TGOG4ZRB
+C2IQiZAxamok+UQqXJFMP4jSl1VDQ9OQ+c43pEEToWivNFXrTJlCjWd40KbPaKHQodH0psRwRGt1
+RseI0QxkpOxCM0VGNaAxs6aPTIw2E6NaMQRTkmFjhTkprsuafugQrRDsNKr7iFyGDbU6+ekk/mr7
+iHLUi03MgS9dw5FxZTgMnOAoRzork54f/3URJjnyI3SRTVd0oqaL0Rkz7XuXve6ipC8lRCSKIcut
+7HISAYNMpb8pjn5RaTLppBe5IEYvIBSK3IdCFuE+UJ3q5oxfOJVCvYjPyYNx+/f0xxe1aEXIpi0L
++NxnQNO+RfEJdgpNaLEejPDcJJpry2tQwkAr7g9HGyifBn1cgBCMz8L4Z3waPyhkOP7FRxmU5Z8P
+3UUi1LPMaTQzStYiL3NCeYV2PzYiZBd1xpUyHvR/P1Y32PAMz6Bo0WB1mxdDdVc3MhdklpdB1DBT
+dGNcSQdTSDdCS3FocwRkHLgiPnaCPrZ2/gNoQmC3QnQzM4iWE/4HIroACoAQN8DQFCIEdX6WdTqh
+C5w3hEjHf4fmZAGoQkxxQmv3ZCLYFHjngHXjZEfHdhuoZ8FnZcPwUVH2eHomR11YdaUHIhIEc8Pw
+C7Kge6HQCs4nho+XIzgxDDrmIBJifyyXhxEiHxACUXlIIR43agtDC6RwB7bUERVxYIjAF56ACbRA
+HwxDIb/QUIMYDAqTH8o3iLeAh8t3H7fQMTWWh78wDMCwh3wYZQ+oInMDgCYVeiiSQRnCDTJjQidU
+gyPkIUjXDNRgIxHYhEpmg3S3QizkDB/Cef6ndEqYMk4mczg4MyVIhCA4hDWYgiq0dpZX/oEIOHdH
+VnkhEmS6GGTRoHV7l4E1xVaqcA1E9IokM3pEiCMxVCMqE423KHmz6EEeInmhd4tyN2SVh40mIkJz
+VCMwByL3h3U5IUYjJHVlEoZSFkNVhh/IcAu0gAmNkHu0cBNlonRR9lE6lh8KAlISIkGkCCER8n4O
+cpKeeHw6Jh+k4AhzYAzgYA2w4Aih5QnbcA2VEAv84X76MUDuAR9/SDHvoR8sFx9++Au3IEEopx9k
+ApJX53IMonUyJzNgR3MAGGSzeIMzd4v/NzNLRyNqBYJ9NjKHhiFzh4Iy5yHRiCJ+ZnVRpnRj+ZZA
+dmj8CJZ3+YTTyBQoJVJpmY0m1JYl/qSEI/IhPsYiMkd6aCkiIhSRUvZW9eZVaGd5NxNGHwWCNbWW
+0ZBB0PCBdMd/2OhBL7MUGvKMTuYhWimENLdWdQNzEpRlx6iZmbl4jscgYyibVocT+dEKjYAJcNgK
+9jciL8QgS1l/DCKKvjCKDCQhOuaJxlmSDiQhIOULtJAKjvAHeqAIkvAJtNAKnOAImpAK9kEf+eGJ
+nrh87gGUQLmUE9MfGUUfltiH+aGSHHNjeBhBDLJBlkciKcVktwigQBaW03CLO8dCVNgMSvcMx9if
+HqJS+LhSIuWLS5EyWadWE2giz/hjN8iWbTlCePeWIbQUIjIz+rifI/pjdadsLZhB/rK4QUxoee74
+d1EGItRgdbATo3NEZTiDIwsomqaJZHd5aHdJg3cpUgIKdlgpUiK0i/yXoDnRIKP2URGZDFR2dKZn
+eoq3FNLgkHUoQcSwC6eQe6dgMKMWQ3jYIA8CkjnmnAtFf6c3MM6pIPgJphRCC7FACst1IAdzC6fQ
+CgTCYziVIC5WivS5lO6RIM8ZMjWmppnYlFG6clSZpl6HQoJJN0qGUj/XldQwDdzwlQXIgaEnQk13
+dpXnjAa6IZLXliXqmSe4oJrXgEFYeQMpmBz4oc9YZA4YiwLqhNXQlhrKoc4oIijCgTJ4gmg3QmZn
+oyXjZ30ZqiI0gDSVI1KWdRRa/qwuVYAcqiG7iKImJJBYKWSN+asEuBTNwIfEEJFKl6CvOqWS+lEg
+whSwmiMMAyG8B5zq6R47FgzvuTEtJ0GL+nHGmWMMAkEfxzEUOYrnCSDnCSEcNR+euCAdo54PyzBg
+KogNY2MOUokKwpQbRX88xjHF+aUwd4zbmo//94JHZkI9hw3c8IwByoIuOJospEL6CGQfWI8vJZjP
+IA0p03ScN2U2V6JhqUE3u0G+Oo4U2kLXCqEioiLa2J91p5i9uiFyt1JCCHWbp67LuFI0lyF6xhQ0
++lEM2YuHJoyeyqvc0CIoxIFb6XMy55kaOjIsZYMy9QxR1nJhWCZDRqFxmSNi/lhTyCANsBOXecgx
+u9AKnyALi8unHKsgEjSn9Nmwxlkfo6aSOQZzS1khlpsgHwOyCAIhIFmIYEp+ogshJ1eexIC6T1me
+CuOJBJtREXt/r9ljTiihAfiBPeeyuvuVLLupa1eFYalXIxMiR3qiHIq1FCq4HtSLywh2oBeA0Xu0
+m1qFJyuhlXqzibmpGeoii3mrbNuZF2Klm5egSIeNTEhzouchU3a3UCcNaAl0AeqpP4e2vWq7ocqB
+bSmk/OeMSZcTUTZq6Mq+HQKCNrqgVjd1CNx01CANYlQNC0qRObYwcdgKtOCdLjaIFEImEnQLOiEh
+okgMmpiJHZW5TLmUffia/jl2nienUC65r6CoYw1zqB+8MebHIAByYxGkHzeGIExJnzgmqacHc69Z
+tAJpu1/JDS6bxJ/qst46cyMTlkf3Yx0YswVatA4ajUv3eKUJdgLKlScEdHsJhSebmEr2si2yn3YJ
+jjTrgkYGdGzroJm3igzpq/v4Y/ros704UwtKqyoVoC1rQksMxj+3tkiGxkV7g7+qUhTai0MMkWJo
+gmKXdaeHwFFWU0ineSHLlK9ZC+EWbq0gC61wCi6GkhusY/cnMRSiiZK6weU5iaeXH8U5uSBbMfGp
+hy2HchACpqG4iTB2kmnqHq4LxFGaukEcQR9FtR96pALqqdRQv7xrtDcY/iJaN4ELjKss8scAGr8B
+WQ3SYMBPerXxW6At6rT5S6HGq6lRGMhf2SIpmKHu6K3/l5hnGbcVWpVKx4QemqphN0IJWlPebLzZ
+3LL1K9DZnMYlmr+x6IDse7AfdbdhpHl75UF3qxMgOXVh5EFTZoE26pE1Jop9qnt+2goUZcL+ipSJ
+iqZ5yzEbBcK6yTGTO4n1AXM+HLoLgp7vx1GGi3Lwsa/ISWPzUbHq1x9IiZAbHMBru0GhSrQAKsgz
+k8T1+8Y/CrcYgrR+XNBgLIUoRapURoEq+LJI5nM3OItHNrflfNVR+LRVaVMOeDIPGqo0SIKiB6so
++KuguYtQl6Di62dK/s3UTQ3I0WvI7HyzSbaCRwy3lqkTDBJDExivzejPCPmQZteESrfYMLcxJdwK
+F5l7FKwfuWDSVxfBJhzAUvqvC+IMr/tRJJmvGzNqTEl9N3Z1Hp2fFFkh9aG5EXuez7kwERLLUTmd
+PjylVlfG+4khBFrQ9QvVPceCX9e/Q0rY2vzH+OjHz/B1KhiWmhqqvovGbDu3uOpSX/zHz6p5SXd2
+wOtSI8O2M6i0Q9h0mwqhKcjea5kyn8rUAw3I3MCyuurHXKkLTRy9SoYhIXKM0MClvqgTBx5GJ9jA
+Ozrain2MDbx00qoTQ8yUopiUbxgKpxDKpPyQupnCDqK3KQxzApIL/plLlbrdnBAbISytyx71pfVR
+nifch7c82u95Y6/br2RCspEa3NOLxFb9x09N0E59i1AcmHwtc7sL1QV6viv1wHOUV9ps3C7rzDe7
+c/iozxza19n8UtLwwLE6tB5kmkdrrXs1gUsx3tob5lmchEonvDMz5Z761AONti/bc8YN5/QNs8hr
+mmVLU1Y3oR2yV1q4V5d5f8FwtxTqqwzpQSkMy/d3C6Hwm7q34RcUwBWuHwhpuXnoMX8o4hz7wySJ
+2xXb4gJkuC5+nyFTuZuscvRJ07sdqCEbqVPHmF99iwTd1HJu0Gx5gjWbxpzqzEr81/R9shPNmR84
+i/5N57xarIAp/pDivM72LdbmvELefKxbWalU3bYXUg1rBYJih2hfLc6MToEtFIUu2w3rPOdyvsRt
+K+bAbuugGnpJ7WTSsK4MrbVdraBoLsAuHY8sgsZVB9onPtOQ64YZvtmcDSDo2trH3O8Hu5QIe641
+Fss5Dek5nMouXpIxjMsUmR8Uv8klGUG4HcscU8ybPMSWPNgqm81oi9wCbbI125VIvMS5DuxM3pWe
+6c2+zvK47ruBLbz4K4xBzqnaqt4USmVdDNhfaaJh6QxcOuBtC6BwHIAM6WRYCd41T+d+bdDKDue6
+asZCCrc9m6wTGEM2Go1MCnW5qROJrnQpNaqazjHP0No4ph+L/pvhp4AJGg59Mr6msh6GVEm7C0Oy
+r5vTMjyy+eHZmG58obuUN+7DH7+vHEXMH0WI+OEMNr0xp73BtEsMDx3PHArNty7kL1/fWv7GLU/0
+6R6FZ9mhvwvkX8n6RatSIAS3HAjNpU8Ns0+0TVjv2Yje0G2rvLiQaYzF0d1kO3+yWd8N6z7nBg1k
+86uhnkqg4q6hW7qsBG7gvuhkPMutx+jQJJsyvjqDVerhDB+XHk6RCULBIU0f0UbjPpylr2lBIEyV
+OvHRXwohoG3iNG3imgwQt4gRuxUMGbFgu4L5+iUw2MCBDx0KPNgwWDBnzogdfIhMY0Zn1LCNHEmN
+m0lu2Lit/lzZzWVKmCtJkqyGrRq1m9hw6hzJkqRPlSRF8hSZM5rIozZnzpRJbdrQmtFG3kw2FFs3
+k0tHdkuJs+ZNaNiOSs2J06pVm9SOUqPmDBk0ttCiwa1Js2RdbM/Efs3JVGVLrlxlptS6FC3hoUXr
+JrNZTRo0aFWfQXP27O3audTgQntWufOzztSkjaaWjHNbZJY3bky9Gtmvgbdk75J1KtSpU61CtZLd
+2zUy4BCD/zpIMLhBiLM7IowdTGDBW78MypZOTHpx5g8JMgeOzLkvgrAP3vKePTZCy6mBTz0ctCc3
+b9QEuydc+K5IkU9ZDt6/9ClJuMRSqySemCIMpqyEUsuq/qSCqu+vnwjUaSy2dpLQKajMKkuaaiCT
+ZifGiCrwJvxEY4usw/bjxiWu6ItvJrb0K6y+/7AJcKSjPoQGLGqe6RGaZrySJpoO23JrI2qakSst
+nNzSSDhiNPpsI/Ieaii6X3S77TbecsmFt+iEAy2212SDkrWDkHluoCPNg00ijQTyJZhfpCNvu4bK
+qwi2iFhbDTY5jVtNIMs6I0anaQyMKSWsBGuxv8Kq+eonkWJyENKTmhopLKLwWupAB0dEa6gHITxQ
+pplqGlCsaBr0y9NU4fpRqBDdS0sqzcSSsMC/VmSRRaBQOmkaSO3TqatqThrLJiI/DJIzuUaDi0PH
+pAky/rXOmvFRLbKQ6bE716KMEluNrgQ0ul1yU/cUWdrdZRffVHsmuYHUVA8iP8U7yK2DGJqTPI9Y
+064giDqq6KKLgItuYYE0UtiZNZ+haLV6kdEJrff2+3XFRVElEL+L9YPJVAPfM+xiTz3t2NYIJ7SQ
+5UuLVZAtAuuy6kGQ8ZvM5V1hZI+oAYd6ylEWvdnY10dXlE+rUkPtySyoO7R2smeI1EnVxKAZDbTL
+1rpJmnnnDbe7Hud1OKJdxKPulnZb0c1t3t41M83yzMS3u4Hv9HM7gSDKc6ArI9IToYIAFZu5vgtK
+kzu3llu8s4ycBoowwZT2RuZURwox01N78lzF+lK6gKks+1S0tVRYmQYVVY9h1Axjk7XaKbG5Lo59
+2JKkslGzG3V6KbBfgf3dJ6BiVt09vEav5hkOP4sGNJwsZtIxqpknTdUOQxpoTIrD9ja4usM8W812
+b7HNNrdlgZe5PlkDWOJ6JwZu3uMIt3dc5AgveLuI+FwctoaYZ2Laac3dxhUQADs=
+    </current>
+  </image>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/sequence/examples/team.xml
===================================================================
--- /tags/1.6.0/examples/zoo/sequence/examples/team.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/sequence/examples/team.xml	(revision 6168)
@@ -0,0 +1,955 @@
+<?xml version="1.0"?>
+<run>
+<about>
+ <label>nanoHUB Team</label>
+</about>
+<input>
+  <image>
+    <current>
+R0lGODlhwwEsAdUAAJeGcptzYNLUy7vP/3N1as3a/6enmq+wp+fv/15GMNOukBVPZVUpF9vn/8nJ
+vGSJnU5RSZuclJWVigoKCD9zj2loWS0uKYmLg6yZg5ylmG1VQU1qc8WVfAw1Sn+Bdw0mLoxUOigi
+GJGssYuUiS0NCHoBAam5ybzAtVpeVerq3oeWmTs/NwUTIvHTv4qdqN3f1UFaY5iLhtmrKbp7Z6+E
+GhYaFoCKkKeepFA5MsYBDsa9x6URPNALRLPG/+Xs/wAAACH5BAAAAAAALAAAAADDASwBAAb/wMPB
+ICwOBQifcslsOp/QqHRKrVqv2Kx2y+16v2BqMuxsmM/otHrNbhcabzi8QK/b7/i8/p4xEIlGBz5j
+ZIWGh4iJiouMjYNjCJFcDUptlpdocW+bcpyadXN7oqOjEhJ+gUMOko6trq+wsbKGrEqEWJRMaD6Y
+vZecnZ2gpMTFeaYSIxGARQaRt7PR0tPU1Vu1X7m8l9u+bsGacsKhxuWjA3ToA8jIERHNJ9DW8/T1
+9ozyXpRm3d69ccECgttkh5y5gwXU3UHnzlRDUxmEGGiA7Z7FixgzNsmXJde+Sv5CnvGUiSSdUAYR
+lkNnh+WAlwUkRGjnUGaEDPE4atzJs6cj/51b+IkcStIMQaMpVR5UmDBd05cw1T10R1WmVSRAfWrd
+yrUKtqxQtO0bq6bfUKQBgZFLqlQly4TqFMqlSrduBgk5u+rdy3fJLbBLxFYya/YsG5PgDLJtW8zl
+08dR4UIdQDdD3ao6KvbdzJke4CqCDftDjJbgUcYIHTeVLDnuZMk2I1ywa1lC5s+dc+tGhJtf4Chk
+RWMqOu6kcdTmmLZMJ/cp1NZQY7uzXPmd5t3Ys4d5BuZjYOFrACYOR34x8j2q67hm7fr55Pfr7MqP
+p72+fS64f+vn9R38P8SmmXceMW/JFdWB8CUIX0OX3bSMdfndJ6Fu3A3SXT+F+UdcUcYJOP9gHs2x
+Bxl7CpZImUOXZUDdAddN6CKFTESoC38Z+hfeSEiRd9yHxihnoHOtQQediS89JBN1N9XGoowvNolR
+i7g0YeM/Aw10Go8ErmZgZHENSeSXlUnXx12ZOWmmXkyCxt+UpaWF4yc7YnnOaiP+CJ+XX5YYmwEO
+TmfAXXmdKWhGz6Q52JogBcdmjm0WNIyHPKZXp3vt5Wnpe1PNRJUBN8wU6KCgepaNlDWKJt6b4gBo
+lJykMOUYglxeKqueKE5nmWUGSLBkqLxKY6gUu5QqXDjiFGcaq3oU2FJzXOI567Mnatpnkrl+2uu1
++Px66JqLHjbet8i2qp5TWzoH7bkJ9hD/X4MO3rUrtvDScqFY3d6oqifH5otsiHZOiu6/6qo7gLrV
+SYDkDZa9G+/C+F2hDbDbCDtsqsXiO8zF4dI5bpfl/nuuwAO/1EPAI/cwLVXUqagrlAy3HCPLVjws
+sY3lwTnHzfpmvBBkzFLq8awgjzxwyUSbjGRluEqwiss+wfyKoTL3Vy+O43V4HKQfuqolXED+DG3A
+IYdMctFE28ogriorzPRFhTqdiNtUhNbGzN6iCgyHFutM56vMceys11+CTbLIZJNd1a23LlMt3GvL
+EskJPuigQIWNfDXJw1PbS3HVWA/4llM8+/s34OlCVfLQhRd+Ml1/uqN2454hgIEAkgsw/7m2UVAe
+1IyZp0GaSXHqvVydXB84OunvBS0y6qk3XzKDDaoYEeOwu4JAPDccIAAGB5R5CO6/edT7hnZfmbOc
+PmrJbPHIW6o8887HP3L0R/dBffU/YeCDABw0EAAAt9kO+MpQL4DcrUqOEh6IluO39bTPfaaDn/wm
+WDLqXGA2DeLU/fC3iEjoAAMIiIEAQACCF2hrgLxb1KkYpSMWdq4tn1NNx9h3POSBzXQCGxsFd6ip
+I5ktSTfYIAcVEYkAIIADCuAACHR3hVqkySN0A88By7MWBeJBWcTj2ANNBDLCiW2HYCwa9PpkEz45
+A4VDtELb2mYADszgjTOQBGAqFCHB6P/iDFEkigvzdj6dac1OgNxi4MImwTCGUVO1OdqDgojGNIoB
+AQ54gQBSkIJnYCAAMwBAACaHgQA6gYlhmFsSEKChxOTIUS/M2ta2RqkabjGHyzOkLFNXG6sYbCbS
+W4YQHamFZwCgAgnQQAISUMkjcgADHECiAYwIjUZ+p0YIoJ3skqDH3xVHMayKIStD5x5Xtq+LX5yl
+OMnWh2QYzIeJi8AueYkFBKSgAjiAQAJCQE8QGlMB+FQACCgCCW1FLYqyox0H9jcagSDQildMqBaL
+503A3VBw44yo6tIpPUWuk52PRIAwK6CBjg4zASwCAAdOcMwE3K6RiprbGRAQRyNigEr/V8OZ1fq4
+r22+JlYN/Rk4YynRnhbuLipq1zJUxCcJXBSjUohEBhIQAA0EIAAc9UBHo5nJpjJSjpNIlEi2UQAF
+FKB/GHiBt9RCMYwhlFwMXF+lBDkZcA5Ohz6Nq8mm0yckFfWo2XGi4xBQgQo8dQYg0AAJK0ACEzpV
+sE77p2+0msczDNQHL2jBAV7QPUHUzG57PCsWO7YlthLpoXCVq1zpaquK4hKvMDLhKFHbTgQQIAAt
+wCcHMKmBGYQAAAj4AQQmMAHqeaexlmBpPPjHgRZgQAGZ4VDVzsrAjbHPgZ5ta1uFFlrRWpdonfpT
+yh5EF9Z2JhI3iGMkBOHM3EWiAiL1/ysSW5DMALAIBSQIAQMqGRZgsQkBOuAAAhQwgwAgcQa8mKIw
+4pRKpSgHdM3qbHTho7zrOjh1ftLuXaRlGQtdKxKTcwAzD3A7611PAwCYwA9+AIJgIlEDzjhAAI5r
+widELaUaQkABZpBEDCCTA5kpH0o0CzpyGQ+6C46lkB9M5OaZDWFBpYsELNyrSJCQlDOopHg9HAAQ
+KEADDDCpiH8QABxo7wA3QMIJKAKxbq1QpElM5gwEIFOZ+jGh6mOoz4KcPOkW+c5GxtVl/ECVR2CL
+lCTk7yaR6F0orBaTSfSvArrMVAYg4AAnEOsJANBiGnErpcAdK0VUjMQkzuCUbrYi3/96Zi46hw2i
+Qisknu/criSX1jKF7ssoXwCA/tpav+X9yqNncMkqMxWJALCyay9AAA9gIB6KyrQvEBPNXysxHsET
+9c7UmlPSvS+cq862GPU8rXTGmi+RiIEJ/csBTeIWr6NMquwAe0kQAPaNIGgBAgAQTABg4Iy9+1Yn
+otnRKseAlMyVobl4ZuoILg/b2k644bjtaiR9ey/POAAGZoDE2c5AtWnKz/UASwIcBNPdwn50BQgA
+gAwoYBUFrBhmt/dUpgJceOkhdaWq7TFYflHVCk84yqLHJ3WWF9yRmLgbn6qAYsKtUFmIJiZJmGXA
+Lul6HvAAAFCRAmVTDbOfWIsPKjD/W6i+/M1oJdHACy62COb87PHrU8+TpDh3PFzWHiQhCP6XT6NP
+QUa5CLob3a3EydnCACSXyb1NGJIVkg9AbxDAU3+JhHCNeuzPJftDcY72yj+POq3Tcy7fDvdICCAG
+ILD3cfGJ8Y3gLgn+tXV/I2GGRwdeAjEwALL9wVVTAk8xDpD9DZr69UiNC60/pjm6dopqyxtfdRBJ
+clD/xCfOb6ZQL0CvjY97XKTPiyIvAEEF5v5UlFPieiSX+r0n+49n8FPlV0pKAwRwghh0b9KWPQ+/
+CN41sk+Xp8fPv+G0O9Sg5tLnL2N9oFIoivc/1IdMLYBxcKMNhPB9PrBogZUAJOR9/xShA+HnAQbA
+PQ4gLG8gY8BkASuwJDRFYOyHATFAAAbgABcwZqihTUBWasI3fMWnfzQ4UWiDNEH1FS+ggBeGAAag
+ATRgY8dkb/jUAg5gd+qWBFVnhIPQAC9wAioWWE5FcaxHEQIAAMV2ATZGBN9AERcQbHA0AwlAEVO0
+B044BBkAAL9UAfGXHD32R10Tg8PnRQhXg3ZINDaRTijTOl8hAB5wAgKggKD0Io/Tb9MXhPmERFix
+Rs+QAg7gAPl0crEFiSeHAb9EQiuGTw7wfQVAACQHAKbAPS/QDSSBACNQXLFVhBwAAb03Ck54An6A
+ARIgVRUgY26IYCLyY/Y3eXfYi//OgzJjkiRoc0Z+IWMesIIncAIOwGYCOCF/EQkSAFUrZm75dGMO
+MInX+IiJ2GmRWIT4ZIlPRQA0AACRGEkOgIVSB3uyN2aNAgcY0AIUl0zJ1AIBkAG2SAqveAARIItY
+qAGrskA7wzVjF0h05la+eJC/iDjTcgP814cXhBcOkIzJGEnNuBuWU4yQRAAgpkkVkE/2RgMKgEzH
+dUwh+Y3dGJKjV2PHRJKamE8tEHXp6Ad+IFaJ4QM9UGvxKI+L5gH3aFZy8AIOMAQZGHUVYFRZInAJ
+Joc1h22Uh5C92Gr+lzjNRwiRYAIe4BACEJESKZGjWJFowgpAUSgHwFE04FfTZ2//5Fhuo0d9KHmS
+lqiGNpZPkEiJkYiFF+ABMSAB9qY944FftYZJ8UhjAcCTd7B+B4AjWXkCGSCLevlLOpASfMNKBFlw
+k4d/TnmZYoSDDxKMX6GCMjEbWRmROvCIEhlJ/OSVT6IPz+AAHAWEChBsKwaSr0mONRaJBlCNITmO
+TQVVHcV9KxaXGCB1amhs63hKdOADJoABJcYAgcUATsUBhAkKLxAAm/ZUjgiFjPmFJNeTewN8N7VW
+QSY404WZ5ElLe8YnfWBGToQAIjAbn2kAoRmRpKmVEylWbZOao/IIkeAABBBMxwVil0R9tBmXuNmN
+ItVrNPBUczeOKSl1UWcKQ0B+/3iAACYQAB/VX1nmX9GZeCCgAwJAY0WnjHwGil9YAY8ZGVmkVpJ3
+cIRTni4KYUcSjIhDVH14lRdgMBcAn/L5iDu6lckYiPr5c710VIr1DFfoVMq5SWr4mkIokgUaiciE
+klHqlrMYdVOXgQewiQYRQm/0VP+VevsECm70bsfFfgcgARiQATEAkwBgECoqZ5RJSNX1onT6PKzT
+IAy5nn5YF7qSlaP5iKOZjDowkfS5jIIYDXhHKuGTBvrZABjwWsEUkgc6fSW5lidZkpc6fSZYbASA
+pvYme94HCjEARyR0a7NlFNeDSUv3AikwBIxpAFhIABXAZtzUQPaXPHWaq/GjSP+bSVT28xcmgEFH
+YgqAqIw8qoyDegKDOp9a+YhYEQtg2QWYg0dsoJ8+cALANI5oKZIp2Y232Y1sOX3JpAASQHIYIBug
+yGEpqAA0WYFyFwDMCQIM8EYDpT3niEluFEkSNxOhWK5F6QOARCLhaWdD06K6erBlsym45H/6SIy2
+8Gg3GgEjYBV3CYjM2qM7yqOkqYzO52d+ERQycxYRRwALKnpSiqmXmqlSCp0AcKOgeG99AInlVoQG
+QELBtH0S6KXJNHF/xQEpQFlFda4kClUD0ADvUX8FWWeWibBMOz+khSQKWUwP2549RBUXFJqCSp8T
+aawaq7HfhjuYY3Vr8AgNMAL/TmVvKzmlKasA35qBIsmNABB1BJCXp3AKySibGACSwQYCJMAADIAD
+VWZj5HhJwhRvQHuuaKqXUlcBBgCwCnarZde0kps66LRdflBO3vMILpCXfKopftqjpUmoXfuIqgUG
+KMUtYtsGrAcAQTiSlHpv+XQC4GqS3wiX6KiGWsg9GBBJSYpPu1llqupurKtJvwaIrmoKuVKlxWa0
+MJi04kk0TTm5ucp2dCU9l2sbYIkAGXABlnGjSCIB3Iu1WruVGbuMPFq6Q4pav2VmvsNPaEt9anmA
+bPmN4cqR2hq36BUDMSCLfzI7kxaSm1RlJeZuK3YAHdVR9hSUQ4AMGUhssrqJ/yt6Q3UovRScsArL
+fLeSK0sztbZkFQwSvp+rtckqqMratZWmRkzmMFBEKilHNZoASa3rupqqhjQMl28JVQlKw4tnpXoJ
+qz6MASmwTEEpAH6VSSBwACoQdEUXTRIHi7KYlzamlxoQA0ZragY5pxWcxa7mIOh5E7lyG6u1vSiS
+h7KRDPD5p8qorFtbmqNLkWCBV2Gbb2iRKptAhPJ7oGqZSZM6vAYIjlUWty27v7JxbzMpAJMlACZw
+AB6HAzFgAsr4hI+oCh5wvPuLDCMHB1aMcNGbxZNbvT90vUiwNJHAr3Thnj00yQ7wp4EqkWjMxuZ7
+AvT1BH+xO4gix8p1QD7wuv+ypamyhZL3+76apKCARwBfqJf3dmyAKAECAAEjdwEQgAPuUGw48MAC
+IAASoABsmLymgL8V0DevJGQGy8ninDqZt3M99yfKjAA2UChiPBMYRMrIcAFZKrqhq8ZpnMqvzE/W
+igiWkLqYxTl14AMZaMejx43VKLi1dkx5+1RNhVu3G5wRoaMvkIEp0JgGoAMZ0JHLWM1A6YeAd2/6
+iwHEpgEEgMkP9D5YPM4qfXl76MXoySdCAABGpwJ02yAeDL7FOsI+msrJWr6w7E8ExL6oMseIdzMS
+Z4kpaanfKlssqYaDWZYJgAQ6UAFXiQGMC2mhKQDwmQLVfASTVM1DDIgAcAD/BBDF23zJSllnKL3S
+bB0/MrF2CCOM0yEBcidsI2DKq2MTprCC7KfTPkrCf6qxKawPMDYlxAI8fAQK56jQ3EqpSASctaut
+vIlbBYAAEoBeswhpGst+8MmqBtACXB1J7OesDnBsUyeLm6oBApDWLBrObf3aRvZDyweMcAS87lwX
+yiAdVjEC5ju+5JvGhBqagz0F3tHCWMdCM2WG28OtuKmpjB3M0yeNHcq8DRB4Gmix5isErHrIGx2R
+WcnZB2BssBeNFWACVVxzqLbJsM3WwJgyrdN2DN2lKkAXylC1VeHOIxCffx26zdq1MDOt3DAxt3xN
+5SCulAqughvDvVZl4zgH/0U7ABVwb/fsrFmJ1ZFmqKN9rENgb6YgVWP2LKAVues94mlXHbRhGar6
+RgCgAtKRKUq21xFAO769lX69rI+oGStcI6l7KlR0N2ZVDO4InEgtes4dkkPI0NMIwengAxEw1qIr
+2hGZpdoTiFm9sbmHuFBl3gAzZCTe5UZGxg5Cxiiuqk81AhNr0y9Oscp8rPut2eTrtYoa4KVkQFby
+4wdxgN+o0Nx4lpaorQfIvO6xjsANiIEY5bu7g97NfqW5wLL6Bl8zwV4e6YYTG7XiEEEVhpnkAmcu
+Leh0GTCOtfs96Du9jNT0EVNz2Oi3KgPGGI5Kv1Aq5Durlh4JAqsNE1wDhf9rDIhAGcnHlpjmWM+w
+GgB0sFNK+7zUJenIXjh6DRHKoEgZ4HHu1l937cEpMkb8Gr7yKeq57sqkniFiKx4n4SYBgiwNkJyu
+vrYH/poVkKDt0RQ6AGmDHklAeQL3trHV/NtQCADo4FYKktLJ/u8l08FTgbzT8QAbAAEWwAD1WBMq
+o3b33UOzaAC7PuOpvN+kiQRSdCNEXVZVhCUvkNQIjtRr2VShF2wbAxNaG+W6DpSg+qPzTqjJqD0F
+0EVrDfA2P0E0USt2AQEbMAIq8ABXqdsN8b1zrWSTDOr7PairHNikbtjgMhLRFi4n0AJUT5dtJIR1
+OXeDG3rn/RpvXpo72NH/pPvy2z7z6TI46n06N99Tz+GiOk/KdXEAI8YCIDgbZs4gscGrVfGZf5iY
+oQ7c2Y7GGG8Y1gQn51FgBfCtVL/4KUD1kjq8I2luHOAlBYDrMK+MHC3vrKroFm9wsDRLno9nkN60
+A3AAPaADAbDvmMmvy94O7jACBlADJDBiP+ABZRyxe786aT4CfT/j9Qz450tKlsDjpjRgOzaComAU
+MQAAyK8O6jxiNRD9IWABFpAA5Lj4kmiSMnAAAikZow6FhhqRrCpJUCgEbAyIcpr2qTMAiRwDOnD6
+6g/6B1D68X+ZIlMAHXpJBYAB9Q8EPeGQWDQekUjJkimJjJyRiMSTCZFC/9fY9DLKTJnTyFdaloYv
+npPgdNKdHO1Dm153xO8vX4Pf9/cL+AIDBRsGCwYNERcZGx0dG0wETHQCGgwUGwcKNjkbBrJ+amom
+fjJ+RFEmEiowAGgwFGQDTjgHBg5uDgoE5ujuTuYcXuBeXhwOfON+HQaGnJOijQpubgIGqqGlt6MH
+dG50ZnS0ucvNz81xbzZBCkAoGQrQ58tv7Tc7F5uawMSkCAhowBECAJR9ZvwtGTPFQJklFy6sWVYH
+DkVmdxz4IVSoEKFDHzM9EjmyUQMABQBgwBDu08hbBRCgqBGCxagJEzzU+BECAiqfPyaEqMFAQ60B
+Dapd81CAIrBkAnoNQ/92QEFTPPKS3DqHzURSlPTm4dJhIsAMcmDRpk1SIMaMAmQbgBjAoZ1aJPdI
+IrInxETfrtUixLggAYrBM0ugSMmgAQQBAB5iGE54AWGUMBEMMBkB0YGAzhgnTrQD+g8gQ6cTHQqZ
+lzVJDAICgGgQQ4chfJxw40MwYBSpmzeBkgIK/OcPDzcE3GpAwECAAgFeVL0Y7M5rBwaEWYTTLCsH
+BVi5Yft2I8bzs3aPDFh54x149O/TYouBlIOOdiBuuCdyzx5ukvf8MkGEGyS44LEACABBgwUTAKFB
+BxkDQcIIC+xinwrFsCKBDRNwgrAx+DnjMIX6AYOJiDzzDJiKKhINtIz/TkNNRtUQWa21GzXhAIMZ
+ZgDAEv86eWkTBExYwQIjQ7BAKFJ8m4BJ33SKAIGWNqkggQBiuCGl0IDB7gQJghHGl9G4uyuAAMap
+5wCxDtBBAa3gIyLNuagBQQcd4sxzq5fIQqAsBWa4gYEIRNqrr2QAi+FAAgKoAARHI1RQUg0elBCE
+MzHNNFMffQzAgwI9bCKxKTLIgAQGE4ghjBBL9GchM0Ld7DM8XsTjjYvuMC2RTGzE0VdGjnKAx2Ex
+oFKv3AZAQIUajLRAyRA+SDLJZ5fsLYQJUNhNh2IHiE3CAjSQ7qJkMhMtGKvKPKKAGUBwqx5ZOPCO
+g1vwfA/OHmS55bsZ/zjI5Tw9t+FPSGAJ5q+vHtir5NIZAngNAEYbTdDSCSOMVEJNMeY0AAA47lhT
+jTv1YGNNB7MwgsFIdKLUEBZcMNRVlyDDIZllfuKJJT5V8VYdbH0RVxhF6vXXoRfhYNgza7SlP+UK
+CKFZZ6F2tgZns/gg2pmUnICA3dyZpN0efTQXozmmmEiZ0QTIyoR25frXiLn4jVcH8+zVYc0eBjDB
+rRPkxeAGE9zec2D/ciMcHzgDrOaGKRQ98MxLJ56wLBBiKAuDAATwE+MzOd64Y47B7lR0z0fmXNPK
+R4YY09FJhmiwky+LOQMLFHSZxMNKjEJEDxEycbBZgVmG1jt43u4OAf90FZpoHINEQNi440XgubmF
+tMeHB5ilurdRps2iNwtmSrIGCBDooYADypqBMXYxWGbMOi7AIJlzMboobSTqZHdOadyURYEWAAU4
+/OklPPaZ1xA40ACj9U1p/CkcwfRiKL/cYEBSiMEFO5epSznqYpHr4ObO1KPQbQwDWZLXmRjlMU6t
+kGGcG10GSxfD0qUkAPFC3eoyproAVGgwBvkQiWbXMg2gTHch+kIUStWqMpDhIRKACkZuRTyf0SpF
+ylvejfKhl08AgEfxipcCGvaJw9kDARWwySiUZJOgjOIDU6satMBnAVv0AARGe1wAFOCUMG3nBAAw
+gBzmR6Z0TYNRRnv/kzcCVwAdeAeAgMLbEfhgAheYoAeGEILAbIGUS9mmAAqIlys8maYATRAwEmhc
+DCHnQUvFBoSYYhjYNjaDtiiqcT0aGcg8x7BYgAAAsujR5VboMRlq7Jaky2CnSHdLHkmoha0UmeN2
+WBiTFchEYyAKpTSAu1W5andFfFXvIPJEKbYheMEz3vGseEVHBOlYt0FACL7mRf2JUWDJWoAohFIK
+UUiNBU6ayZO4JxQTiDF9R/sFOUWTEnLRwUsvCtwA6givBmDggG/L2w38hwECVPI2uEHACELgkwms
+wAS70coERZCL2Cjggh5IiRc9ya5VpvKOreRcj2gpyx2BjoWd+1ww/z0nOrDB8nPGbBig4uXTYuKw
+qMcs5g1Nh0ylfq1dPrIGCmWI1R1aiIgQOaIEvnDNBGiAd6Pqx+1GVJneOYEzAuAZHnDFIoxUUZ1E
+O5wnBrCKssQLafSsZwMgsAIUBFZqpfjNYYPjzxp8wDgNMJ8INJA+AICAIskYhmdOgB3L6hE0cHDb
+Lfi1Iw7cwCyE06IV6ihLBP0lURI4wAqG8xtUoAADq4wNwxZWlk3NgKJgzOVPOwbMWDZ1hcMtbuV4
+qswZFheXGkMuw3DZWw48jJUv9BjDRLYp7YIMmVltC7t4dCY7crGY5O2U6yBCGMK8TgwuYEDthjgC
+EUkBZfNdYhm8wP8QWB3xZBcA3opq9YbhdSadQ7vNgdlJRhtMgAQMGGsCSMCHetrjEyuwsIWlNQpU
+yFYU/9zeDwjwiUpWILKsRAYgDyCB9r3AM8Y4xgEM8Mf6kfMsQtKbvGbgycUFBoYBQAFAOFYBC7CS
+yGXBQWwPW4pWDDUALeAAHnEbugrUEFAIUipPRcfFK9+SUyJUppeZ66OhSrWY0H2umH/asNAiqFGx
+XGoLn+lm6xpVtVqO4dGeTIAWTrkCFQCIBvqsART0GUMQgULJEHJNQJvIm/d1SO9qNrPDRITFU6zV
+pZG3vCwm7a4IPjACNnBYEozar/VEAAGcdGElHQl8ST4jQBsrhAL/iMDBDmqDjNmAnRh35gAvyAwA
+YuAlZsDhGbY4QOXq6OQYeMe3rsQUAfrMrD6vYKfD5S2UsCCUgQBlRzzykdFiAShecgoHU/YRAVBg
+3hmW97dEHZZPbanCdY+5y1r2EXJ120LyxnDfPoqsmBUVOhGKObwtnEF2QQjtgAyaxCj4Mb8YxgFA
+S3wFMIBAYC9sYVZbwHUPGYGq0kuqCBBlQxrwIUIizc3eVeZ2Feq1ihzw1lq5YTtPzDQWF/GHGBtg
+IxG0RQOThWoSyFYHJq1nDxAggqlZOLDf88AKtrc9V//ABY413w1YsSHhiVMAKXjxAa4jjEsHI0gm
+uNxu5aWjjGHJ/5NCNg4BIEAA5NqZAwmYAGPE29sAKHm6nfOkjryTKY1CwM/jkzuXiWrnz9my3fbm
+KXSHm8wtx1KWzaxc34daOdS5whUB+Lfq/NznQDO8zyjYALoHPViLWxzjGs/4kaAOgbJMWQFX4gAJ
+ou4k3e/e0L1HL2VCdQAMeIAAwPdQBhTCu8zY19G4GwPyHeIBA1Qa0zCPw1vp+p8aCcIEzbnjxQww
+DtTUExEruAKDd2J08jdAKBBYtWyxRQBrSf3DNRBxJW3gtBDgIHhQMUYcsEP6hsHrvM4YVORcBEBL
+iiyDKoDZAGDKXAhTMEAGZIAGWMACiG8F9EzMYgkD9s+LvsiXSP8BBZ7sTGLAyWDqyXwEAwbLzywA
+J+JHzrQs3lyJmLgIul5J38oC4GawB01n3RrwyfwM2hCk9CrA4QbrAhSg8wKg9VYgsC7uCaNQ1aBG
+WrKgWl7t1W5CJyzAaFYgptgFKIZjDIEDOH7vDNkrAsaqAgAAVKLgdXTHIVQG5egwQyrjAjKg0qxv
+rvbweO7gEToBEL4BU9qloJYp3zDgBI5CExDAAxhMKEbtANRPYBrgAZ4QfK5lw94rAQhgBXSPezzs
+ezjBfGwgAMZqYzTAnMglAuSnAsBkrgwQKjDrBGprB2+qdMKLMYQJp0CABmiAAhOAASwMdGIIAywg
+Af7OaKCHAUL/gARdyU0YiS48IN4ECwUs4AcqQAYyoC26DadEaJbqDUsGLqjOzZNwQBZYofSg7QiR
+8AghAAlhwOJWIAH4JQA+QOOi5llIwQCmC7lwzyZWbUm2cCB3rxSEQydEARUQUp8MqxRW4Mn+50wU
+AATEkAwb8jfOcL264OQ4hCgM4+Ti0DLs64ig75uSCPrA6ndS5NL+60UEoCQEQfh8JLcKzuAm52he
+KRHHghBe8CawgAQGasJe4gkrwBMN6710y8I6rJ96Q7EmAAKsrgAIwKXEiwFcq752zgAuAAVcCgAg
+AgAiAOw6Q0Ve4HJ0RCV2RM4u5RZDyHMq8Bd9kQbKzeA0hgNC/2CsroVSnAQHYuDIGhB0YsB/AIjy
+tAwFOIQCZUAW1hHaAO0IRY/0RK/0kDAK3a8D2GUDvuYDNi5qpIVqqmUCFAAHFoYBRGEgoQQVHIAD
+FIWiDFIhe4MMN8wiN+wiabMMgaMGKAoAvCNuttBarjALngUN00u+iu8JhKgCJOMy1gqsFMMMlu9V
+yCADGgJE6OsCZLEPJQLmtNMBasQbvG8tw8vZxFPfhuVoHscBTGDoBvIHbqDU8MIEwIdZfJIBQsho
+Ass1o257KsDqGkAEfqDcNAACSAAD5EshHsMDiI8NAcKlRgADMOOgfO1MGE7uIO/slKtTYgAxfbEX
+aWDJ2qLLsP8kASAAwibgTBrsSjSABDZmygAiFtyEYR6TKyHgveIyLp3QSJ7w9Z7mN71HKK5lJmYA
+GdslAUqzBoYOSnQvIcuwjiIrx2CzDEWhBVwhJWZApAyyJ5PM1ZhEsUYh234zIC2AAZTEAGoLADAq
+xxgABzhkTTcEB9wUB1xnM0pmM4hTDIQoAEagQBMiVOaLZg5AvvrhC6aTZuwQIl5ORbRT5voQKlip
+EJsp3yA1hF7ptsqzUmcAB7C0FEjAByasB17AsQRyKBbmUiCAZVRBS6VuP4VgOYojBC4AIJzgU4jv
+MSpgTGAsxmDsZCIADgwABLLA/ATru2jophwvUICRAZAVWTX/MDLZ0eH+LTbiZWF461IsAApXQANi
+QX1wAGtGwQMiIC435BdloAJGFAfirgJIILE+MTiUVCcQ8geqbCJ5JDahtCKLowwPsY6QDLE8IDVV
+Yrpw70uD0VnE1E3T9E0RVk3blE0frOQ4ZETxjmMoqu44BAdWQE0V9k0TACI8oAs89gIiAwXAYAQc
+lgCUKA5VTmYkYDoVIzqj0wCYqAzSIAIuq1bEaa7iIEVgo6AMsVLTR7ecTVotFQCG4lqAgwGkh4Cc
+wRk+tQcsAFMnQDS3dRVCSkV7gku5lBRwgD8FlCEZwAmtBlpYABWcJu7kxwBiQOEAIgYEANVCYGNw
+QEwh4AGX/4yLUO/ioPAV4lJC5Pb1Nq4GEoAuLoWvroRfFCBdkxQHzk4DYksnKgAHaKBBxJUDYkwB
+qGIO8ugaDSs2Z9M2S0H2aqiLKNI0/9FIefQKmTEEGvBx1OdpETYB1DQDptKlCOAAHpdSNgRicbdh
+HZZh1xR3gdd33VQDGIUNPYlNMZZh4RS9KkROTZat1vR5LWN6p7c5H22JWJY6T/L5SORTxvJ7j2cP
+jcf/JivhzkRkZnUqAWJBHwAgDKQ8n+yMcI/BeCQRzYeAAmEAPgBZLWBBcO8HGqRBFIBxm6Q3asIm
+tvZ+fXLoRo0FOsBqOmAFOsACIngFrAYhR0EpJ6B/2dABgP8ix+JlBvLSwhRAN+sufGZipDggcmu0
+Q0/1N5gEFYYsTdGVBAggbikHAI6sIh/S8wKgc3/gaTe0F9nsqDrPA9qHNI0UFE+XWt4Wcnik9vYP
+dheWYVumd5u0BE2xdzekArbS4S4OQXNXiB4Mm3bXin8Xi32XUgjvUTSglyh2TedReYUTIggA+Zxg
+BHCgZfpsKl/nq5DIH1KO+cYAV8lgOmFWZS/g5cJ3LHX2ZscyBVwAAk6vfR+gfTcgkzMZBirO9Ewv
+HmHAA2DgATJ5QbkIBArSSFfBjnTpAMynAaSHYMdqpsAoxyogOLRQtuajkk4VKI7UwmqgghfgwiIY
+lC3ugTX/swZYQHUjoCeYLV5aoAXsTgOe1lmMBMl+AAU0AC5rlABC6kmBA56wwMEg7L0AIAQi4Pb0
+CVs7B/e8lOM4lAYeZUNkIZqdbI+BjUNQRZ/5ueTwiNkCQGE3RJuBl0GECJs4pIYCL6CDd0EqwAMe
+M+4kYKyECAIoZY8XZEQrlp+vmKL7+cEs2qIXREEc40xKTiBEdKwglkPQawQ6lmONjzCOsWOJDyBQ
+gCgpIwIWB2VXrqe/AMa+IKgFVQoa4gvwkPqeaA1Y7Dqtr+uUjllyVDOh5mry0zSTpOI2AAY2AF2z
+dJUtdVjADgJYoFL4JbdIwEH2dUt/QzlcICjsNUlqggU+/2CCI7iYK87Cihn2OiAEiu8Hmuy7GOZ/
+sEAVriAUkswD+uku4xkGnKRHeVRJfHdDGoX48sgBGuTsHnAie/ctacADHMwBormeWyBIG9OjKTpA
+zfiKUaDJAAWMxspi9/ik99lhcXce8y1eUnqfpxIJHc4DSJZBSMy0r1h3G9aiDROjUTt3e1ejV4AN
+2YxjBLqMxyoDEmCO0+D3OvZllgAC1LT4EPRVMWwmNFC+GmIOm69lFaMhinqoYTaRS0VlBeAYwJep
+V3KunOddiyO/fQK/f8JJrPn8YmvUQHCBctDHkiRBFoQBxnlb03Q4bCITxbAGpgQBICAo9OkHSCAB
+LrCCV/9gmIfZAoa5w+9aginYwiwcA1I0ATBAwXHAO34A6lYNU9M0TIlXjfTJAgiATQ/6inEgNhok
+x/nSpmPBdjNomS6VQ6wkcvssBP7Hf5wcBDC65ERa0Ay6oiEgbnopoFcgy0+bj6fyYazkSsCIAbRs
+RzDgoxPAAWxgCNHNZLucxA6aXB3aSijFQS5urM4cm8gcADw6eDPAQjkmAzT6jG37N+s4vdRLjwXN
+j/sssADC/UrBYlEAOxanVNy7iKIgKy290ol6DG5gUBuC0nTWkekbZ1MA1PApai4Mb9+RXDUQQW86
+n/Z7iX+jwTaYhh8FU8M0BJjRhk1AA5DVnUkgTMk8KE7/FHYxdRTSlApWYNQw/Aoa7AAm4B4nmIIt
+YK5J/NphLx4toCYsmgRwYAYUHATAaI9noAU04AqnJo3RzZ8EEgIuoM9Ru1zLTcl9OCBcqrkfWgFo
+4AM6j7yY9MEk4BpfnBWSkdnghaI1+rSDu6NbxpOW0DvI3cmCNKTHijle9boDQgM4AAW/aFo974oD
+4AAAYgM8QAU8wAYy4AZ2vGVsd0PMD4mlW4gkgBmphvC4+LUTYIVcIcM7mophN2pch6Y7jogIQ001
+4KXJNUkgIEErIEkugLFwIAMyCzOaM5Gfb1DLIDNctpBV9gymbw/pm6nzwHn67KfWl0Uf06E9BUHJ
+FXyM/5LBjnToIHHUcGDUcK/XSYDFNiRZkbVBGOAEbmAn4jbvmTFuq/YRG1IUekCuNZPE6VrbP8BJ
+rEYzh/ken14DGumZQ/uW0+gY2RQAIMCAW80AVMH8KOVZqhn0PeAuUx8HiI/wRPYCZAAEttzzGrCO
+4oXEqAAonlb34yZuyh3QWkaku/zhOT6WnByAHKTLOSYC4E4D5pErL0AgAKCRYooDpr6jH/3iHI4A
+RiDFjp/HzQ+O+rzLxTRqkD6l2Z+soJDh0phhLdhZrhu9XhrRC8RNEwBBERQINqshwWMkWCqR1e8H
+ORwi0qk0kzFYpZLIaJuRYq8GA/gbyUgkDoFjzRbAX//wOd2REkB+k9qElPgDAq78aRQWVgR4SBDo
+TTROQDKEhJDUkFCSZNb8xCAQQDAkhDIwgIAknLxYVE6EMEC6Vl7+zDY1Jbj8WHSs8MKsLKxYfFiw
+hOyu/HbsWoCQ4CgoBJxSzyjg6FocJ+AkaHB71IhbWDiGXKCs2BBMBiSEOO6FdMNnTkCgEKBUKBkc
+KMSbYIFDgBkzOGhYgYRPDRwaMBw0yEHBRGcWPBQKYCABCBw4AGDwpiEASZIEJ3LgMMMdIZEEDnhA
+gQIChBU0K0goBOAgwQAYcFgwRMgGvyMVPIioINKQ0ATkyHVjKtJbAmHkPgwKRDVBBBs1n1rQGsij
+06f/Fy54OJv2LNs0Ei44xZHWCNGaENZ6YOchAgpbFw6YmWImy5e3W8hMwXLmxpkIEgJH+CvnxJo2
+cehgtoNgQxNIQpnWZCraqYaApl/VYGCJkiRKIVKYAxUKBEkGECQgEECLBAMSezKRoBVCj29IjmI8
+YNGLVy9hvCz8+rAMK4xfySq4csfAXW0GCjT8mLSNm6EKNYzB+1EjhMIIHhL8sJYyQO8Q4hJgd5Tk
+aIV8F74QAMsP0Kh0EAoC6cGHBduBsBNJ3gDAATcEMHUMOSswNQNtJGl4EEkaOPSNSDhJgAM/OKRj
+Gz4EeIPINCBgUEEoIkGgwQj94VMBAQSMEAFVKGgA/6QhOFhlQYgtLVUVWFlNBQ46/OjoXlSFjPUH
+WGixtdZZXVyQxghOJQDAEUZUQNNdatUUQQXC6FFBFmcE9gVigpURgWJkIFYYFRdE4MALbVSGmaCW
+5fYBLaJpAEECiooEQgWGOOoIDsYFBFwrfVBiSSYxOGJLapL0Vo4eL4zAW3G+BccHPJR2isACNSAD
+zAofEDMEVkNY0BwMECywDwMfacDASPRtx0Ee2kyiKAYsfkPOJupZUMM+7j2TkkopgQDJJfhho6Mi
+Hpw5Qgw0yPNDAtJcWwEnmzhSQyE4kKDBDJKMJE0Aj1I5hL5UFkQbCBpydEpL31ApJotK/QrroxAQ
+AP/CNzMm4NNoFYwgEwobENCfDV8mWiMg71r1QYgEEyJikbmKlQAKalq8jxG/kkWKRziQEu0HNRih
+5VwjdEkAnxeQpZYRI3iwQU0osIWOMCvMJFA/VJyBmGJ2gnEYnVjkWYVjF4yQChyAuiHoHG2kgAAM
+PyBaCE0jMqUUEw490geqfWBKt9yddvqILbZIsAorxtGibd5NeIDAOLHy2gs5IRCjzBDVLQDBKT/0
+6w1tM+wEzyTRrhDCoyKJo8cxjB+j5g8VGLSSh69AguGaaTkWwwoe8KwACOqFrsAMGHDQAgghSMBH
+uwAQG4DttEWjYQA1FpIrOSVHGEBP0oP4A4YEU6n/QQQPDdvRrwQp9NkfJBlJZZg3yKSjjiikRZWi
+In5DJFh/QNANxNwMc3MNWTFaSEwtyyRjBAhAEQCAFglgAAMRwMDSViA0tGhJLVsA2q94lhb/6GMm
+PvMZuLRRgQtAIAT4kIABthC1wrypCnMSzAHG0CWqacEtexGAHAClA8zI4TJteAECHOARqXSsPI5y
+2KOagIMA9KURnRFcKyz1m+JQYnB6mCLdLGGaRvzNEStAQA9o9ZQPwKAD4iAGC5bBuFw9DgIbgEGw
+whMAAADAFBzAgDvkMTqrtEgDmjsP4HBHuYIUSHWlccKO5GIYCZCAABKoAA3sIw5IKIB41iDggfig
+/4cInYQi0rOW7QrhMOdBoAUs4V2HVAeA4Lwve2FCwbmsNZFoEEQuIBJFDYhXEEeIiAER+IQ+ILA+
+FcBFbQvTACLAcg8MxEARGPAHFKAAFFx5IIdfE8AB6kKTAF6AMm04ATe5CQUMAEACMXhL0iLIM7eM
+IGhGWIQF3pJBhkHwAmWa3QWE0Z//nMGEX0BDYhxzhStArTGO8YIWpMA1r1nGMmKrQwpSQIApiYhR
+DjuEoyAgqQo46lmdidvcjGMP4thDbnNjRSZsIcU+NKECCCjAAG5GDC+usQM3a4U4akAM5gwBSMMx
+V4NSMoNvwGM9d2SSBiYHiUcITxsHAQlP5tMECP90QRFpiMxF9kKump7OXiABgKhCRzkNbWca45Pe
+d7aCxg9MBAcQuJbu/oW5H2BlKQTzwA8GSLORgEBYxEskSAygLhTAkQMM+IEKWnAAB6DjE77EmA08
+AAU1pIF2BjiBAHbEswtM9gxQwEICJSAmOF4AADsaLZQkMILG5mUDFVjHr2BGs9bKjBQM0BmWjMCW
+LqQzBAkg2l7qeZu8yAQCt80YTdBiE314QGpQM6Fg9qk1x+STToJJA2bHxgaFLvQNCDjA9QohE2JS
+iCkBAM+AxlsBEoiKili8BCb6ILzOXIK9looib/a20b2BQAEYGEADogUWrNysq8TIFTFq8rhJOUL/
+KaIghTdcsx7/1m8q34jbHviAIQC81mEOoSPhxiDVqVqAAHZKQIU3oQGV4AcAw6kwJGpALFGQgDak
+OLGYPACAGJhHGyyoQAtm8A9AtkB35OAFAebwgiOnQF0E6I0enEGLiFmPmw44gC5mgoMPTAAGJ0hg
+Xq4JTxus41H8CI3H1Ga+FXSDZmqmGTfaDDM3M4BoM9nAXIBJlj90gxtpBgQOILgzLKFloOkMBW8v
+sCOFEI24H3xLY/WhSAIwLSaY5UJAqVZCgFYBMv5MwxieW1AaBiqhb6gDoBoqAQ8s08ZjOEELwTlA
+JvyAARhV1wT0aN/1yjcWgMMUqjSViUkEx755/yNQ6mZwU1w5K29jtGmuaPILduzhdKeQWSEuIY5J
+wGptf5ixBYQtvGpnwhl9iJgfkClPfUqAYWVi8SZCECFDLDFv8WOwKCI2Ej/F4QTjPEOEgqyAHosZ
+Gx9gwQLAKVoC7qgCR+wNb2agLW9YTxTdKMYPWMCCgZvLKUSxwDV19B+yzOxIH2Ol+xZliDIjqiUM
+kMA6VLAmchhBKyJKGTfiCei2GIELnUsABIuwjjMVLR0+y1J/aJeOo6DgMXaa2j+VricqaBpAU6XC
+Fnh2gByCbZqDekMKIvDD/iEinAZQgAHAhYhCGHG8z8Ib3UIKnJISxzW8WVB78WbS2SVQIgYRCP8y
+nrIAFnRqPcKwqb46kI+PbudhHNGAte3jeHIowE4KgEILLtAE4RlHQ7TRwPFM8aIY8Awn/oiBoWVS
+jkcedQIAiAZ4jrq3ZrBkQ9MYSVZm1JSxs349QtUGGPV8PxDFgAElYMBEFkybEEy0eQO/uCWJAQIP
+5AoG6SOADUo0FSJ9Tq4mH1hTSDZzEaEgAzNJS8aEoQL6IanNWpmtbecSQZ9lgIIa6LlaylR/mQyN
+axn7IDoYpg9/YIHTWcEAUsGcvAkaGMCODEal8QkNXRegjFpmWEYKnAA3pBKi+EQztdCaENOjBJtJ
+GQfmsZckQFFsoQor3No4fAUMGEEMAMAEDBj/M3yAfbBAEwDeGOkLmk3DJcDC5i3eYOmeUDEEBzhA
+BmCAEWLAAWDATlFKxHQIRfzLiwTACymCAWDJjlQSQ8QD4bQANkiREWlAHHGESnQgCjjMTyRJxKQV
+C4AFWHQA9gjFJjmDE+ZVxMweU/ydxUlHMdCK6eGIGnmADRwAB1JJUMycmhlJnoGfmS0F85hP2aUD
+CqzDPkgi9jgEns2MxP2K+9lW0nANdWnD/BlBPliQL6FFL+3Iz5SeEoAL+2RMC2FaYgyG0nVaQJEB
+YWgWdFXBqV3d10BgqI0aoPCQDSwIVTBF8hlCAMSAP5AdAJTJRnlUcdQNr6XeqexBHzWBCGGZ/7Lt
+DwQw21PMCoslyBgNAyKYAsOhyv0kQKo4HrZpg4tJXCa2kRKhDYONwnaEgm3xogfgBD/+jnrs2hfS
+oy3o1omlhDPeSwjYDkSkTQLEAIlpQ7TAAufAT8k8hIyIQhPIVoMoQJJcnExJB61Ix66YicWk4gFA
+AMcVApMsCgEYwBooAAqERfYIiTe8D5CIhIncgI7QBPX1RwWowPdpRZ79ipO0XycCmmm9g3AdgXBd
+gA3IJJ/kxa4UwVskGvu4Bz7wo2PZCUA5F2F4wdORgdVIVwxB11v0SQ09YNhMU9ZRYCKIyXhlT9q0
+jQt6gCOMVEjdjUgFB6X4WrRNkee80wpoFP/fIdswsAAfNQIf0Eq/nMKvnYo9AkcU6d7mWELDyNVI
+YMMjLJgoTJvK0EARJFMaOGUFyEBp/IYlYeOt6cEKWITv4QAH3A4BzEDE5JfJScUNboMhRIu7qNK7
+EJC4/UBIeMOH4OaiJKZNgeTAWcD0bcBM2AQKHACLmNwgREkLYGd2poAOfIz3nVyiJMofmIA+lAnD
+5IWOnJ8F2qRYpJlc6Ewn0o4BRcbOnSI/8ghazMQBjAABGM1d9BZaGE3P+BI/SgBgjEFYNsYVKJ1A
+aUEtLtcWTFVgvIXX6EDWYVdlgM2RtdABsJoBYICN8eNcphw/+NolkAIfmGh6WALqRWN8XeP/BFSA
+IfpSxsjErMBKMswKx93MFC3mB5iC5zHcJHjUKLxdPDiSeAhEQz7K2tlPUKzjOsZRcrWQAfjSImCA
+DGyCFvJovCmbQ5BEuxUHDswAXHFAvGxIZmpAtESFKbiIHtXAVsAhTkocuszAo2QF9ughrYAk4GFM
+cNEE0wjiN5RJVVTAOKUARXCSAqSAA9BPypGMx7jkO2mlALkAnrWEInrDneVMzvhZl/BMZOBACLBP
+XmChWhzdWfQS+0glWvTHCNxIPvCjg0ZBLPaTLkLogkINPzHoFPAJhjpAhWKodbEBsLKBB2gEhzrA
+CABAp7lgeFkk7VGRSGmLixJH2/1aFMmD/0B4gOvAAAnYqQZ8Qg34Qi/sjyMk5hKxgJhSgzOYCpP1
+gWzZTeDZR7ZuwynAIZXogQfgQF7RjHbQgAO5E8eRiQwMFqsoEat0ygpMQ4xqlC1Izg/EkUMwAAB4
+UttMgDq2yO/sDxARAAywIYMcD0lcGT824sANnHLSCiHVBHvchEuyUqJgXwy8wLW40kQYFoXQBBxG
+mIjgwA1cwHOWZ9GJpqUiiUfMSJ5tqs3xiVucWijmHNGswFHsyLM1mgZ5AOgFYkwoATq4YnJpGp7I
+yayu0FnASUAxV9kKxll4DWXoAGW8AVuCjRvoKzHJpTf4wyIZEDLBEVMgLOYZh65FoxV5VP/ozI5D
+lEkNOIowBABhRl9NiCQMalRi/ugO5BVv9EY1mkpI0YLolFgrHMP1OEzyaSzJeWZe1aE+CIMGjAlh
+XmPo+CWlhAeROMRO3RoAvEKZ2m7EsKwvAUm26FboOkpJQOSjCEwFUEAxtFlBjIS8AIUCbMAGUEUH
+LKfJYlyIBdc+YCHtqFX9KMQJSEPqcNIrxVyNREV3esNL8OPF1MRzjiqL4EDG/EHteUAG7CvSIqVa
+dIlbZMC21lpjjcD+Htdc1MRTdpl/mBaYxcRekGfGZE2ciAGe7GpBDVQMMVcKNcZZZICfbFPWaV3c
+2sEBEAIDDEJR8UN4vqRn2diNsQulSKP/R7VXXzIRpigIDDjETIQAMaUk9EmHTeyKzczUEjXDOS7Y
+DrDObpDCu/qGHjDZvLaueOiLIxrCCkxAXk2DdmiAtATt6q5KiwlbCLbOFqfe63VkHBWVdyTAedhH
+tNRIeIhufXiOBxET+1AABXSAcpBYCNTmN0wDHlcHDCic9OapSNbgB0An02DhgDIKkRCADphEgdRs
+nWLE+0aAwzRqnJ3AVv7kcWmQPInCAeQumv0BBpzAghTlpnLqWTCte3SO6qoFf2pll4DLbxmaTSiC
+q57iUSxCPhTBWGqNFcLQLd5iF/jTPlUddJEBnxwgp5XQX8BB20rZL7rBBqfCC7yHLXjS//OgKQlJ
+8am43anEAnD4rW/Mg4XVz0oKpuJ2DhpVB+tu4xYGzCmUgGe6q2z1Bim8HSlwbmru3uZEy4hYFEbx
+hit0RFDoSBHkBbjMQrt4CquoJlIxBD1ShO54SAwEgG/UlIIcy3AU6SQwAAqUwhzP8QKEkUCsI+Uk
+3nixwPJUxwbIFOBdXJ5OQGIqRHnOxD40Flmk5AXogOdJRCBhDvYmAAFggMwARaiaiDxh4Uzwri+N
+wII0p/ptG818kQPdHP4y7f5KQhEkGn7iw5ZAWn8YslaSU6MtmtHsSAtlGtTlCQEqHa4GlDBX2tn2
+6nU584X6ogNwkwAsarfVmqMMh2412P88LAUmTGZ9uOi7EnZ8yYJCh0DCrYnKKLVSEEMw8HA4Vlhn
+mAIO7IAobHbl9gER0zM9Zy7uhOBFW4iFSEtN1FoAwAsJ7HEAk8nhMrHrcRzuPJLeICzgrIAolcRB
+XANAYt5TtYY4kIJ9dINHM0AYLcBy0wrg6RYJiOFIkNgMwMAC0LEg66HF1eDgbUBjlSc8KQqa6YgB
+VHRv/OjlGIQ75AP5XkiuhCrs/Cw/KDVxsY97d4OiZCI35CA9ud/Nmdb/Qp/nbCoH1URauBPjFsEm
+88w6FA3/WUyB1iIBYo2l8dPUSTCdaNqDRoDPjsABfM0JVKg2ido2SRkPcUaLRIsfFML/cLwpwYDx
+SMmNaq6GeCRxZ2xCEoCrwlnFEIBIrSjDMEACetzCOZ4jzYC25ZLC8NWz8CX55WIeQ1z0UwgEdF4s
+RhWnJHhZOjiLkG5hE0RAli4Rj+a261UARdhSQVT03rDKPKwCKbAER4xXKQDDAtRxB/ydZxzRNFB0
+HFH3q0iHdlvceVic9YRQc/YSIOpDoiTBCNCRPRdEPYfhStgGyaBRrjT2DajALjHM9bJPPsgkkRRl
+/PAZGg3BUT4QdW1BgBs0BxGACnyCqpoWuDCNob3yfwMX7bSiS3YaBDeGAfzvGITBrmoap+kipfmT
+rRoGZeF1N4n429I1ZSDACXQDCJSD/0PYmD7M5KIgmF+2cBaNOXqRWHiY8+7lYKzgCqUcQ5OZQmeT
+wjkquT1rdmjbMz6/l/A40oNFSzo0gTZ4zzfsj6gyblBhVR/xI5cO5Jgfx0G+UYTAR5lzgBfagorX
+G/E4Qyk4RQAQXC/QeQjUsR4cEUX09MPrgclaXEwDuvV8AqnPqPpgiFp5gN5FROVuh4Zw3FRw3BAA
+hQoEInGp1tH4X4xeSHuqjPoRiYGZ8im76lSpes64qlZ/wgf1yGmVCcW8Oio/paFBfZmsjJzsU9dH
+eAkJ1D8t4C1CnYQO4NmeWgYLQDeFeEJhKLO/QANkwBmbiAIsEiEoGE30rabYe0ch7P8ldNvpcFWJ
+teGF7Ep0DFyLYUMpZHYpbKS8IznkM1zfrsqDsQeY60EZh6qnFLojvSiPIk3g95HrHSzsTgApwdFK
+cIftAIVJqYfjP4No28NwnLz16AB5oXlJYIACDNbyvbTJAx6WsQCd9ZJC/E8+yO5d+Mu/+NS1GETG
+dEROuncIXBBwLbWZJLgvqZXQl7NH4LxHFEE8dWI4dcn+TsIp619aUOXS6vxz+iQ8ccFpnadpjR9g
+eCXZR02wo+3+LyAQRCISYSZTlEgyBmEzeXI4TtOTwCqIOrDSaEuBgQQMgIqmAkmYEzgLafKGu+U/
+UihUZzBI+8nPP6n5QVkBrKkJsZj/sEC0sOhYgYBZqWGBq9H4AdFkAEnYASnJE+UcHQ3VQ2WAezN8
+sws5BFz0+7HQgKX9qcGBrWH98wupIAjM/YGj7Vt9O8aYeebACADgmCFJBv7Rq+s7Vu2r6fDr+Ohg
+8Qto4fiB4AiYxlBQ8D1nsa+cqPyrgYBYsYBAgMAZCCjKsKkQI0GCPHs0gag2IwABTWgWrvi3gsAB
+Aig2VBgEsmA/gThw9MNoyySOhSxNYsThQebMCxdk1pRwIYIHRDRxeiAggQBJnUQ8oECxE6mHnCNG
+2NwQ9EJBAxkOGDGQlUmEqje4RjhiBKyQqkeaHCEyBGxasBnYOrlgQIsUHRw4yGtR/yDLXAV5EKQY
+qMGMYMIaCOGos2dPCAaMGS++o7jX4jqwWBlKdKhGI0QrJH3wxSwE4gAgcOxYmABEKVGncLBGRULP
+slaFEiF6ZaFYCGWtagVaBcwCJAIhjOXqduxY8AkAAmCwC71aAmzLjbnSEMC4sn8/OpAjd46BAhAV
+OAAAMKOaAhL2ftxj8aFeIxYhIFQACXJQQRhD+2VniJPXGEigBBDeAUGDTiAwKYF/LDDgBoHy8+ej
+fvqRqRENXTLJApbWwCGjmGbywKYSS7xgBKMYo2mEGHIiwIMRNijIgyZGsGEYmwq6IKeaLuiIKQ9W
+8OAqsLLCyqy2mDDrKrGUPEstsf++EoKIJJwgwikdFHhmkxxo4GCuFzDohIExAyhMgzQUEKyMHyLb
+owY57JDTjTfiZKHOOyZ4hTdWZqETkRo+wGgF+VaxAAXVHvKkoRIaJZAh2QJk4JRtJuDDEs1gEVQR
+3QzBTRdQe/GwsVe6CQEFgIg5jpnrljkGzWneKe2a6rpJ7s2SeDkmEALeW+C7DhY4x7zoolGPAwv8
+gM89CyqYCamBJsToPgg8gAAgCNQEgQQcylstj/JoXSgEAjRo5KkcBzLIn44gqTEB+zQEahgAJIhB
+IAKGCzGBE0m06ceadrKAgZmewlGCEQjYUSOdIqjpqBKHqiDip+rtEQUIDtCqKrL/bkASySONmHLk
+r640S4km1rpSiBEiGEEFMkGYQZMAJOJkhrxOODABBQBgQLA0hg7gZxzMYOXOZRTL0xLFZOuDztpq
+45PTRTqbpJtAbLm5NJo1uaYhTkKxFLanM+Vz009J/RTUQzSExQJNAlQtgWv6sa+CVo8DJrgQGGJo
+wL351iUPHGo9BocfCOgjWBaG/eCHBOyivJp3fPnhUHsAGUYmaQlaQSSNkVIhAgJW0CDo1VTTQ7Xs
+aBZIApAI8Hdd/JDSOKBBIAFKmBh7NOAEjokw4MUkDJDAg4pp8mkEAJ4i2N/fU+wxghwvsIH3l7Ff
++FobpE0+CZvwc0qjE5bICmT0/6vi2GSSuWJyq5WLMCtlldN64fwDcthBgRb+f0ELXnAAEHypBdAB
+AQDIJAE1peY1d1FAAIKWGTsB4jKtkNMq6pAIXWQmNBbslWUEhQhyUCIfnNtECRTDOjowYAYK2NIM
+EEMKBgwoFHugwx6+YQgeboY3PGQDD/vUiFqsRjYprNs/QhA6ZVRncMhQkKSQQzi+hWATengTAyBw
+g2Xlwx7meIMG0KNAWoGgG/pgxgaA4p/ctYtBuSMOuyZwNK+ppjRpSJAGRsCEc6HABEBBSlRGAgn8
+YAQFHtAADmJgBgDEwF760gAKAoAfDWxrRDdh3gUA8JPRyIRhKnKKUwSysBWgYP9gQxgBDJKivEMq
+7GIEiEryLCABjhmgllq5ylbq9xUjEG9lUBKCV4qwsgucIILqIc//HLClLXGsNCVQQDXsAgIBVCA1
+jSHB5NQzgzs0ZmkaxBQfJGOrzRQCOEkDhAgXMSgLfAAcIWKJBkigwrO5UB4w1MT/KsUa2SgmnDtY
+Rm8wx0MlHgI3gbhEgBiTB4Z0AgeHKOUKqHgdY8htDVjMlTECEqPOoaBvxqEDCiRwLQ/YoCORkI94
+VFOBBGlCou5RDgvYlQBr/eNClSzI6PzjAV1U4GbPeEZqBIOG0eCHACY1iLQuVErR7StEHhoQAwpm
+hxqyYRQeItFNIhYwIhQHB0D/EkiJfPSym2wgdDhRmA0C0qNS6sQmJh2IjFRly/VVhX3w+2UR5AfM
+Yc5vZSM4AQf0kEAGcMALh22BAzAAAFDMwAG0msENBMCB1CHmDq+ZnLwwZQcS1AlTn+2sDi1DAqgu
+AhyWKIQrfnjQD3DQFolcRGM4AYIdBBUDB3TGCyXoDtmYTQ58slVGkyHERoBKN29g3dyiWimGaOg+
+wuVbbfwAgTKp4k18g0ASPDcQ/HTRVUQ8Q4z0ZYMYCCFHvJlUQ0NQj1wYhCUBQIGaTlLVp44OBWrd
+QASOMZoDSaQM5dJYKTVgghscRT9MDXAk/GNNC9C0Qalx4IckDCJM+gRFAyNG/wjAGleE9QhIMvEH
+U7IEsYBY76zJM1Fcp7KCA9zSlmUJ2RG0gj4hHGAIUCKZW8bylREcwAGpA4EJVPPCe65HARIAhRei
+4Y4XVOMVcpBXYZ0DgM7iIG2UeRpoCcShhXgXhAPVDJ/WaUKhhUBBEOHmQ+aG2wBEY3J9SQU/rzEB
+TvRBQamTlGPgEKhX+GIzgFtdb0vxoFKi4KFUNK5latAJKf5AornI7ghEUsh+oKAYuRiOIM4wDKNO
+S0YHcIGcItUt9voBIGZ+h9A0QAA0PXU409rXHv8QToamxtGOdgBcMeTGk0LCIIVeBE0ZBGEum2TY
+K9FIhU9Uk03qhBhf1RdQBP9Wk1EOCQIefthQCGCA0zEseTawQb16FwKuhKVjMzbCDYi3y7EQAcdS
+UksEDkBZEGCAIqUBQAKmsS1Wk0kDH9DZPQ0QALuJU9/peaFhMeHZgIbTFw7CZh1Mgq6Ahsagb9AQ
+5sJgl3viJQATUHPQElABBcQAIqohTz8F7U8CoSZWB0JQeRREC065jVMrCAWlSnHDkywRJcPhYDLS
+ZnFDrGAhtgIILa69sNz5o10YUYbStqafftwuqQapQAQkOmo36CMYNagANQQzSQWlmgErWGIFYPA9
+C7iAp8HYYDxLQ4sPqKDbp6O6RpqOuwqwpBFrcBA809CglTh4BSZhnlYv3KP/4khvICb6UYVVQKOK
+VU8IGzhkBDQmI4XZhFqb2TYTvGJXvDYhK2Rpsfx2vGO+XuAAP8vtDFwgNAYEYFs+xUAMDDWBdMgj
+GhBYDsg5LpGauaNXDa/gm+S1UGy+iVfKwRWnMF5cFqAOgh33vUloqJjC1qw0qettDnmuZuqEoDQs
+VRD6QVAM3XBK0WgXNEN1+LTi2qcfi+iHnwX1QVFhjjFv8IBlWRxJQwp/WKpCyxZwoINW2J2CGIiq
+ayODiBoC6QRFOAc/KCVqcIc2k4hp4AAQgAlIgAEJ8AwbGAEIKIZE+hCa4Q1TU4HwUqsV+J4KuZCR
+6AgQaTCjMzSTGI1hAxGW/zg2gCkRG/A8HzGdv1mjjviwH9EusZIEhtGJIxgBFPik+yiRGMCRNfIF
+btuIJZAxjtmlJeCKEzAAmbClFlMCt+CrKiGCA8CAeHDD53EkwWiBGGgzeSCA1nInDfiZABCAX5ED
+mnGH1cABxlIchkOGbMAmDuyaggOpqOsVDLKDRJiA+OK4e/KCaLqobbCTPQAQsFEMDYgHk/OaHdgG
+yZGX1zmQTjCjY1gnT9GNRpg/HTIif+ITPqmAGuASDSEGC3KVCViI44u6TJsAgcAdf4AEX6uWAPPF
+4iKJXqPCphsJ4GCobjmhYyilO/S9jvvARQgRh7GAGFEBCfGDDRCAAzCBZf+6QEKogRE4CggwKRYA
+Cow4A3i5DwJgiVJaAw8BPME4vJQAiMB7icRTNk5yvAsAiIB5is6TCQlQq2uJQvOiQiAJiBKBGBwZ
+hAvIgKPYCNPTihsgmapwgANAwT9ZgRg4Afpxt2FKGeiQBzt8GfSQCMu5Cwxop3XKkwQQAOGBu9cR
+jHqjGYlqg+CAvnRqAz7EPnkIgL7BFR5KpyXyBZO4C+ewnDsEvEtpIkzZhoZIBy8wgE5AjVGYADUJ
+m4WQLbvRBbTrhbhBO4bjBEmZg24omhAgD+eYAIw4vmMQRA5IAGb4xWMYhqEIsGoxQGSsQcNkqnqs
+NKpDiZGYQAJRBfkIIQX/UpBnkJV44ADEuMsViAoZtAkVkIB7EIF0bAALOAdYgAGgsLuCiAD7sDaC
+yB1sObw3QoPDgyoOeY1F+IeWuCQh9KQr4QkNAAoQe5atop6DGRJTahnTaSXMm57OU5ESqYAVkACP
+kbfTg58MOIG3Cz5aqAAyXL0IECYhKKYTmAHn0CMhiAGJWIgAICDba63iCgQICJ4X4ClfYIB7K7s2
+M47NOBtNcQXeqxxuzMqmxKBFmIVsCgA3QEI6QB0NmKNO7INOnEUQcAADmAE7XK5RsJs3aAg6+Jtr
+ALoWrIV/8IVM+ZpwaSI1uRkcaAEQUAArsw/+Y8SasZWiDAEivICmI0zD/zTAB0EErBvMgsAPkViq
++7uaUunLyJlMofEpNTGDNrOyXYAAzEtNE0we93iAAvCBDXAPGLjLmJEJkGA72TwdlKCdk1DTflgJ
+XuBH3gSROO1NxYsYEWOcBPiwBwyBZYs8hTSrCniZJlABg6gJg4iRsfKkk6JPusKKspA3F7gOkPKD
+CrAxrwiLsJC3EWiBAzCDrFOYnEgDWnmHPFyE1uKNaxkIA0CAZamDBIm58/gDA/isXoEbP8umiOA4
+ylGcbLgM1eoMPzgaPgCBFuC+j7uGLKODcMKh8YAOhdhQHdK3ytI3OcgmbBzRRsAIP3EDOqiA2pMg
+jPqBDxzVD+yLgIoVoP+aplxRBFXB1mQszMbUmKgrBPvYjyK9nUr7UULwE2VIHdN8D35oNRIQxVsI
+mgpwBlewAMxTIxPcyHN4ABVAgBOIj3P4gB0hgAKbnewZitC5EI2ZsAYDvMNjA6gSyJFlA8T7HcW7
+CYYxgAoAxg8bU0jokRiYNiBJkUEICnfLgCmMEQMrEbKCCoJIlPZZH5JxgMhhjOxItV0lAdWrkhuD
+gBZAAAcggyH4ERuYCE6YBgnoAA1pJ37IU1MCPm1YCEaCji5CARXwA4Nq15TAlDa7RAjiAEmNVF9l
+BNX4QJTjErx1B0ywDqHDlB/AgTeMBwzwg/hrnZFjLDQLELKUKmzVkH//YAU7yQPzw4A8kCc/+EDn
+iKAIgkVJrb30QJO/AQFJDZ1BAJVCeVcDrIAfSi3bGAasY0yUgATdQMHQ0IWHeqlLICOfcgf0uAt3
+iJRSqkh5S55yRIADMM0OMIEXIAAYOAIZvIEzuK8D249+ABH6UtMOaa7hwME27RBPsrCZqIDqrAAS
+uDbxGtTcoR6cqNPkwZC0qAqJASRooVkZUdT8A4DzobEaywA6gKwyoo4f0AAbM4uXoSWeYtHystof
+YTXGKhpS1RBFmBDxoh0/GDkoTY0LadlasJpCwYhEmhzL0QTvUxa+SS2DohMcKD4uITit1a0ZwIRE
+nCK65IAYiAfquJM9/+kDs2yooII5UQC6zQDSyziGF0Im9XhROthAaigaBgi7WhBAD86mbpmtj/sD
+WAgdtAMIe8TX2z0uHjo+jcAPzCvAwdQYROi71MJACMgH1KEG4ougn7KL8zwQC4CBKn0KDqqEgBCA
+YSGHB9CbFdjIFVCBHQ0ItVJUQ4OEkwCIl1iJgmlTgES2f4wJmM0q6bSRX8HTnoWZC5CEC7uY98W7
+HhFD06mY0wG7yGMXeDGOFmuLJjgBTnaODpSICpScrUiLnDiBR6MFG/GRm0ABBfIfCIhP0KjEThMI
+KsNgsgO85wEKefOoGghBS6YZDagG0yCQGciDAPBlWqgBzXrKSZSbmP+rmf6ymcyMjw9gZ+Gihjc8
+D+h6Jz0gy96iG0bQzWyZGuPAgWiCiDnmEj+IgUz0H4lQgAqgRFpgHRLgZh2irFzYDPyg3cOUwKE7
+reDQndHB12rh4jOoGs1ItuorI0Hk5gR4BgWyizOlQu68hz5ggWDpgHx4DxuoARegQqU4JKSg3pON
+KC1iEDZYA0TIFmRr00YwWYbJZMiblknQAJjVCZ9NEc6rU5wwq6CgnxdUZQ0wAKdIQtrVjY0QJiY5
+gQ3IhETS2tdQEz/oSFRSiwM4B1cZggubCaVFlwmuROVRZqA4BJgju1EdAhXwsaFYIjsA4ZrB5mrw
+qaJZjRn45l0QDD//U+ERXawAYAn0kKBpAAACWACYdgR2vsA3OQ/OZYAcWgVKeByWqCr5g1ZfADrT
+8hPNkBwJ8qlNOBBFiIdo2sbRPh1wLjifqRl9+8DApYVwzF97RGhR8csisgzOsa+cetfU1b+4qbRn
+eeEGOpBuRo9o0ughiamUugdzuEAWEAEMqAEbgAEc6TTc8ZAVqKGfbuTDU5P1jq/AkaqTiNNFyOSs
+AhKQCJH0rTxw6wgLYAr33SoZwZZrIZ6q+B5+OJ+dMPAYwLxG2NGTzKWx4IhMwKZOsGc/8ICtfhEV
+QUmyTg5KrdOsggDS+gd3ErNEqWCgAL4EGKNJGoYYkAQIgI50AABW/+iMRlCPmwneZ+CSuxDAzZAv
+B4lERuiDyDlP76MValAFCthscmDnlOqDNmskahA6ZpEPdl6oNFATUagDp+QMp7y4WpCgbxGMKp6E
+67snbzYON/aDwuoauygaTZQN5VC6dylMpBBG63ByN2DtAsypBvQHRSgU23CbxvvWL1cQtH4O7bDS
+Q7pLZnmcZmmWDUgBBviAYXC7YcgRbNkFQ0sVH0WXEFEUEO4QY0swQ8vvrNK6OSqlJBwYSYCEzusR
+W3fHnaj1LHmZjrAxGJGRHmE6IkHIjVESJjiAFZDhbV4NOmjFLHHfA7iAv/0BA8A2EokRAEABPXQF
+pOW7QnGn6bJgD/9wAUL4gMGC0Rj4g4zDZsgqYS6B0dGGBGJzY6MshkuQnDimFTr3A4+Age+QD9Ou
+BFp50uOYWHbWBW9pKO3Tgx7yhT7R8Q86EDGC4NVohNtSAAeIJhni2FwIAfUIl0i5o2YXhBl4k0ZI
+MKfbjr/kww+soErcu8bMFikejh9Ky3/wWJZaAwCIAABIP77mrmsZW5f+InuggEp/HHNAAN1OW8+b
+CTZIqmy5PxzYQdq0JH7JTcN45MNrdWxfAdIS2P2uQmgRzE/+VLl+wdBpihxTkTwVkjUCCUmzgBiQ
+nzaUpAiC0dKwY2DMAIEhAhvQhV5xNGsPGIuRgP0wUaMsCEIzUZn/KvcsboQ+uAEVsGIEAYA3wQ1Y
+OJzS+JYXliAQAIhEGrb/2C9c8APDOH24rUl0qQXzhoFg8Wz3+AAEiaLroATQOAa7+ZtNvKC19JSI
+ByEGcA5WJDgRmPY6/wLGWiKmGFsMXh0KFBcF6YYXrYEUuIZkdNdsoAUciAhusg5rGYlGuJBlwZq1
+6SmSOBqlfYibcdV3UKOOQAFIlGl7WAAKgAF7eADwhoHpTBQgsEU8HgIxtELhVpAVjpFIrJC4KlPp
+tKwSOKSUayESLx5ymUyooKYVcqUiQaEkng0KQpBc9PzRyCNhc2eUUWhw4UdEAKF45oFCEAEBcRAR
+YWCZ4QECEsXw/wkSkMAQMHKx5xFzMlEz8TPhqmFQliERE3GBUvOzsmJRAxzy4fuhVWwBMWxyY+Ky
+sfIBbKFyYFLBQAKCkxCwWxMCzDpTEQDCAKIRFeWEA1HFVQUb4vrz6mFRrxGizvBNEvLoQ4cFCzrU
++DCBxQ8LoXBoCICv3isWLFq9CqCBwYQQ27r8IPHtm4V5P3aVBMdKYg0AAGYE4JCgAgIEEBJwcKkB
+3QwNNQgQkPjjE4lzAbBxYyDRgoIJLRhYaDFBy6ReQF/9CBHAZQINGuq5qnFHzooaTJrgi3o2RAgL
+rkJUsKDEIQGMDwMA0FABxN0fH2BswOFV4Q8W9B5sOAACRgsSFP8fVDhQA8IGTUVseFhbhUEIFE7X
+1KiiBYeFCwRAL9GipVeXFWLGuC5C6BsknygqQNiDZhGgU35OnfIwZBKgCBlMkSF9hxFvI2nKrABQ
+CVOhCvoYVIjy5FOC38czePPqCseBQitgsa0XGRqwbx/MVlxrgcUKByZUqLAh4oQJEyIOuLChAgYg
+zNAJRV+14s1OD3USQFEgVOACChbAU8U2v5hUj0O6BJUAPZHVtggEI7HQASwm/lAFCPsAJlFCrJyY
+QCchVEUCPjWMNCNQwVgEVxIAoJMOXiMI4MMm5cTICTph5BhUJ+egk2RUM/ygwIMcPEXCQlL5YtVV
+oZRTTigzZOn/ygRyrLFWWVNEBUtJv7zIC1w4TODQSzNwAECD5BD4DAsUQPBKQh8RRs8G5eAwww0d
+sOACfVFBkIFlHoxAABK+OPHWFpZOYUGnonWqqacWdNFpDa2dKoYREUwAUhVFbNHHH3JIoMcIMejh
+2wgSEMDELXSkOomIGgCihyIVvDpeIRfc4EEUITykwQRQQGFGGRFUcFWZ9ExyR5df9TIWMNHcCE0I
+Ff0SAn8quJCBCh4A6IJ9Nsw7IQTzsGLSiRYo2CAnSK5AgBJUOJGAiPTUg8wEeEBA1oRJTNKpvWuJ
+VBFhVgVAZ4shvdgmh9h4NVSZwICHL0quFGCDBSwFcF1dKJhw/4AEDe70pL+1dYlkFHeaM0EACjBQ
+JQcBLDZBBWj1chaKWnGjwAxQZJXlK8mBpQAEVXMJnhbrIdgLoBZwpQ5e5DQYwwAwdEABBfVQhEMA
+g8HggoicNKgAAh0cUIEDrKxgQwZkWEbnFKKhUDBmpKo1qlMJqMXOqCN1Gsapv6WaR6dOkUCEhGfo
+SgYEFeCiqwSmlNHEmhWYQqkHagT7CwF79OZTG3hUQqsBIzyd3Vb/jGCDEUREgFArHRfdoomuXDqu
+BcEfUxG+ERywLrsi3CeEvPN+ECi+EVnVgQcK1iUmPhYIIMBboxJcgUkQqHABoJbiGBnkyJSHBB6/
+YU/PjG3ia/98/6+oRYJ/RG1/IvuGyX5gg/2gwC4N4ooHArACHYggKw1ySChCoQGAraBF3KAgCIZC
+girNQAEK4AAHQPAUjYCqPBK5051uwgESmrBp6LnCz6CEwojsbQK+wFcr7FWBDmwgHRWKydxcIIIH
+oC1t2KPIAbqyABb45ANgCoULYBADApToG4f52wXAgZn6qeVTalkLR6ogoieASjQhAAlrUIWqEcyD
+I/MowiNugwjY4YFWojuFDUrHFhQYoDikScMdwJUEYuEqdmsYZAQkcIApcOM6nLAACSYQgzKM4QJw
+goXwPOmVkiCsFxX5AEomdhCLVEAALkBiK28wvfvEa142KM//1ligBaA8wAYE4kJddnIVuEjgBQJo
+X0RydIEhkGYXUxnLDwwGl/ShoAx/QMSJOhaoT/bPeFUBirY8WUbhPZOVOrDG2MgBgAREyAUYmEGe
+wvQlCNqGRtgIIAmi4IARxrAFJeRAlm4kFaDM4IUDNSEITGjCr1SgPOboRNs65RVndso8u/AF2mwA
+Ni5EgQDregAFNrCAtKWNMDh4gQZw8AGKsEAFYGrQCh7AgpQuhCyWmBQnEecEEXFkCmPsFGZ8oYXF
+fWpxALUjHMVwAfy18QIqCNhINie63t2GVrxZg8FQQDsyWCICUl3BrmozHElVgDZehaQHxkICrhDx
+ks/8VR5g/5C9E3UzUG6awo1aAY4PmLIiu5jAukzQLhFkwAUREMF//kO9DZSkBs17VD08IAIK4MQp
+mkkAChZbjxUcwAEB24CNRhCBEWTgWq6Ai4ieyUMkoMAtRTjOWRfrP45dcpvc9CZtTWQyVxDAAT2Q
+4AF8wpI8BaweJnTJB7MSgxhwYAUVYFI97DmUKPiMhNT9klcg58x6DIhA5qjZQGdQ2kmIghPpgKBz
+zQOOV7AFCWgDGDrUsYEPGAYGHg2pSCnQAQJMsAUtMBAKxHTQAKhUIVP4gA0OYQMJlKQLVvDpRnz6
+mU6BQTOieQIS2BIV3/lOk9U6ay8mkIBdFcGz2zkFVe8Yg/9qWpUtlDgxIDIwyN5N8xGQeF1obeM5
+DxxAAC+AgUJqMBTNmGgkhQTOZb0h14OBp64sSK80WoGuGUHABQTIQDNuQNjojcA+1PMAX1lhMbJQ
+YACRnct7oZAALXpFnLw4wAEYIdrXSiQEOk1CSd6AD4AEDAXm8WFcbwvoa9KVtks2wUx+AoFlvAEE
+a0BacbOCgxjcAAMmXIKSr/IJUDAAACVUgA5u0gkOPDMYWpMIkjjhkoE2FLzBtMAJwWQTHGBog1cJ
+Rz3AQZCFPAAG6GAABPBL3wcQwL73pYBPCHBQEFBEuf2aQQIosij5jEW/mYzAJeHjhLV8ZSQIQqMF
+GACabyP/ra+m2vBRN2yvP7jOAzCAi3FO7LkL2GChUiDLaEUHm2Rawl1pcEONcVGEGBzgBSngsQnw
+Wia2gocAv40ErS2irW4OWUQjWSwuFfKLX/wgAk3VMfSiF4F4cZl6bGlePTrwABGY4AEepTJXgJSA
+BTQDBhG/Lq0iQGuSBXMEvGACel7hOQLw0JbhCLTRs2cVQpdJIia4QD1UIKFEYsAyNniABm7yo0Rx
+YNKTlnWXnpvpUZyD0k3r4EB/0JSNNMzUczNHjEiRlSktxBed4C4DZoADwRygBQgidwgIUhCBUIC5
+6IABDELqgl2HlNhpk0MaTkgihIYP2otqTw1gYIlk+sMX/2zU3xT+x4o5ZTsElCW9rBFkVFShoQ1j
+PasmjWAbgJm4j7pZKJoscAmAx64NhShWbSgF1jKc4AUIeIEDyCcAFeRYQknvUZsrwXNRfl2uoXym
+LwizHlQKw1w14Hjv8DO9wrbyPwACkApobhIY7KcH/FlAEllOAQwQQAMxsAEMVPCAZlBAMF2igzf7
+7gob4hM2YhElwTDOVHRGp4BHt2TdhAKshH8uwDtcdlB3kgA/EAAxEAAHoAOrtXRzFnZotoEvwQkx
+BAIlsBhN9g0sdBUuAU8NkhUnVA8QICF5ISZ34jbPxAEagR4RA3iARwG7RgAcsAFpAwMU4AIUsHgi
+ZV8LUP8BG1ABA4UDTfMSQqNs0KZSIgIBoLVlc3JJvoAECONcV+EFVZAmS5AOr9AKR9UajBABINIG
+HtBxF7ABTUBN+KY6ZvE4EjBaQ/AGb8AIErBVsoIIb7ACF5ACKWB8DnB8DnACv0UcmOABNAgIryIe
+EXACIhBXoXRpdIUEhMFX4IBhxQAOEGAD/yFs+HEDp3gDWNZK8nIf2PMBItADKRdZK0cBDrAAtahj
+J9AAD7AC7zdmShRKYEEynuRDGxQwgLJYtvZnFqFNBLSAgeYtX9clLiAAzBBL62IDcccBLJIARJAB
+81CAXqEd/tIJECACG6BqJTQgClACJECK2fUDCUADcVf/UCc0JjMoIgxwQjfRIDCBgfv4Ckzwgz+4
+AYZFADOQNh6VNgRRbEyoATCAAiNUQgHpEnlnNgMmIqyhBzdAAP9wFQnAbWNRMlERAgSQRWkwEmPF
+HOgxAa3BHEg1KXQwVi4ZCalTB4lELKOzCJxyAZiwSKqzBhogiI8kOgETWnhQcOSzWeRzAlHpZm52
+AtJRC3owVgdwAwewClWxPxL3CiUQj/1zI4SxFk3WO/ahCOAXPePHZfOyAjBAZg8wABQQWSIgAu7n
+USTSASlgAh3wAx2QhIZBiwuwZmsWDlszMm2QSy/SdyODjMcDKEk2jdRID5fpTfVgAgUQATDzVxCQ
+ajso/xErkBEkMJZAsQ8v2CBbwQAa0DQkBAItMAMlAAJoMYYxko+gdoFABy52MjMu5BL10B4rAJEP
+CYT7sQFFyHIP4AIHyXhKSIMQAAAwxAGUVg4P0AMvYC5Z2AscFVoxAAfYcogWkAa+ICEW0FzTpAGQ
+oDr7kGZFIIg18AeKYG6vQR2sZ0dD4DrLyJ59JG+04QFCyTtpECJskQdbdWOfg4gCcAIOwJUO8AJR
+KaGP6GYGYKGG8EgWaqE75gGX+YFeGZZiWQImsh6eFEiCIC+7RABCEC8t+pa9Y4se9QLLSQEmkDYO
+cHgEQQAPOQGR5VEqgISGmZieJDx9xwuX5Tkl4UMAuP81e1MeNVeZ1DhXnFgPI9AA+wFLKuBqAYkU
+9WAoJZADp3lrLtgg93hBnZAA/DRD8HgnCaFxQJEdSYKmOUgW0Yko+ThQ7hiYMNAE2MMXA/GQQbic
+g7p/dCURMTUQcoAHM6BcNyA0EPEDFHADA8YLTXA6N5BMaxEtPIQjYBQVssYFn+o4lkRng4MEjYCq
+p3IHXHEs70IrRnABsecTiIAbvVNluFAsadBMOXaUoZULFUBMEhoBx/eIxSqVFLqhU6msBhAdJ5Bz
+UwoyIloC2VSiL3IfG+AB8fIuKzovI2c975Jy+WeLdkmuHgUD9vcAiKeEKzCYNtCQG+CYzcg/wsMw
+jPD/E4oJgD5EUUj3Z1HqP9DaIo91AgBycDYRg0yyA2EapvEoESXwqP0CgxgUm9RVQiUwUNc2hjkh
+FNrxEmTyKBWAAyDQT+70XcLQTCUqDHwRUoOaeCz3Y9vnU6JIkZY6A5QGkAFgAg3gAHxJIjG1BtPk
+AhdwAI/zOGWEI1twI2VURu4AOeAQDADRCPUpBuDCCJaBCEkpb7JKBNV0HLige6szCQfwCG2wVaNl
+BALgiI8YAQLwPMw6oRSqrHE7lSfAG5fAMHN1mdI6rdnzSbwQKWNVfrRESyMnuCw3AAuQcohbromX
+NnnpkPiXNkAahEcIAwSAZESqmKxwB0WALY9ZrU3K/0PbdIz+Sn2GircII0Ez0hIz06VgKq1RY5q0
+iQEUFJAlcHdbwU8KkLuwaaJVgQM/InZMM5YpgS9tU0ID1UCLBy4REyytgHLL2bIugHEwQLXBQoN8
+OrMBYJ0N9AEvoAMsoEQFQRE/SwC8kwGLAx+h4RQjgb69kL77sAWqgRqdQjlSa0dMwFzcYQPc8QhM
+0G9/A1qTom5q0Aa6YgpqcKCPRBqOyJUxcwKXcAAG0KATqqzFOpWDJAGYwHpDoAhrMBJKNgF6C60T
+YH6Aq5YP8C6CSz3z4lGGxXI+GoRJeJdIGIRKyLg0HIQesAAUiS3Em7lQdmxjlRLgkZhsMTJUEVtx
+Nf9bCtiA1hiwlwZRP0CmM4APrvu6sSuiNdsg7SSWobAVMaS7JNQCHDCWTwoUDDC7SfIS2PAVoutq
+ZBptBIFIiDQS8sVyLZuXC9EEe0y91nsmFUCR/fIQKEAiy7ABLAADjMECTTAbLiABZPRtbQRAXQBA
+SlvJlqy09JmqqfKreOEbvlEsMpYEsEpNvEEEaoACnMMbgjBNgkgHwxTBEZxMBFCVDeoAOsDAFRy3
+BsBHAXMsErAwxYMhISqWA3RpRHCKPvEu95HCgiu4w1aj8FfDMVyjNNxKMudRDinNLiBEYzWZmJuY
+vEAaZWA0CrPDEuKM6/EDl5V0Hkq6P/AWTtyJTjz/Z1M8DzmAz3orlgrbxRgwuyJ6QRrwQp1GxiPa
+ZJtIAg0EYAHUryeCKKHAACnFAsp7KV3TKR+AuMy5nAbYBH0MAXyaHHKQox+QF1yBdwRxAwLBAhxA
+EXwxCT7BVSDLtGoSBUG1Fepw01GQDlJQIU6QeqhCCCNQATSgzJ/8G8pch8x1LJRiYsd2B65sCsUy
+tgd6ARNcoaShA1EpALgslbq8rBZ6A5TyBm+IBxWAS6nxrCEsogNUFSEwAhsAIMrcrd/nzFVnA0Xo
+AjYaUklUw0loo8tpAguQhDXMcipAEIE9ythCrdUqzq3Kzk+4AbxyTTyyQYLW0Az4AzHEIgD7rx1z
+/3ctBaYLW8z7rM8lsAMnCNCiMAEDQrvxqHD/OhQFpQAee9lQ9kAdgBBoswDbsABzDFRoMwAvzJsd
+PRV3YHjE2YQfsAl6QQAYvX8qpQMBgNvpAbjBIQXkGTuek5J/eJMeAAD1691ADRv2+wYEehy+ISmT
+UgfcEof7aUhzADqhZVNNJQfJJAGNGMGa8Dxceaxy28AXbAnFkmPReUgW3SVYzLBJN2d0LWzc6szf
+Kik1moSCLQLnCqQyTKMOEISIC6QtrIS7RoOQcBb8w03lVgTsXBU8ch6o1a9rRpmEhgGAsdoc8BNP
+7JUf2rAwGAD7nM+jLa2iXdqh8E8HpQA7rnQgfP935mBPxoOvbUJn49IBK7ADPMADp0HHFhBSJ8By
+gBmXTMCn1rvbxGmc0GZ4lQeo0CYBHIA/IJ2VttFc2P2Hm/GHKLCeBYMXdc6qf4gXGqbMcAQB2oED
+HDY5TFUbaFLUM6kGF3CVp4ALuULAHjDBjsjLPsGs/h23cOtIeuATA34HsdcLzEcPCM7WQGEBdA2j
+KlzXVQfX1ZyuB5CuFHAADYmX5GqjIpWEt/6QdtDpfJZ0T+a0QWxVZcGeAbN0N4J0IIyZgEZcMpgN
+LdAVxXPj80yb5VDaPg7k1U6bUeMVXNDi1BdACSeWR2c8uM0CDMADU74DctwLUT4FaAN/etwLfOr/
+5e4w5TwAeIvCFwaCqCTCRC4QAwqg2GGBAhsAkqSJBHq+BNxNwLYREwqv528AGz+dKvdAemqxbppU
+BsrnvkVzCK01ArzsLvaNlFTF6POGB1tdCeNxLQDgABdqADfwPBlg6Rcq3z4BMIa0OqByWqH+utUn
+EaYoh/OCzN26wlWHzCjwwtashAug4YJ6i3Y52EgIfyxHEJ6jqDmnHBF/D7BHoJp8yrVkEfrzlZf2
+TbdVD98lQzPQAkzyofPcsNi+1iLKz9jusdjUzg39EdDFViQ6wrAQUySwA6ad7oDnU6jh7jA1dGUx
+CYBH5ec++BExYHpFIot3GCwQAQgwg3Iw1jeA/wRIsOdd4fDlnQah/wZ4wZ4yKd7HdmymDAgrFhm2
+QxptcHMHzEcjTwZuBQHDpLbEEQcP3Hu87GYZALfImnmrZxuLoBsQIxVJ8xHSGrBAoQFUJ/QOHrjp
+LWwbEK5I6BcFsQAEMPU2+n6R1ZAtt+EEgco0uAujARvs2QTAjsCo7NSLoF7pZffPf9ly9Y7VeScx
+4PNA8BMOicRSiYQ8Lpe/Y44ZZU6EE+uVWi3WrsXhpFbzEq2/SWey20EWlEV7sbLUVqv3A8ay1CEr
+dpvCjYdHbadDjCVR8aPj7a1E4WLBhmoFBaICxeOgbq/iM4xA43O0QmP01JQ0AeXz08ODIBaWlv+W
+QKLCslVT4uJiJLcvxCIiYuSCgFdCIsIm2cB4eeTYA5mgIiXF4eSgGLn74CIj4sCBnPsg/cAgY5lA
+NrkCUxMlZiV3D0IsK6oqawjFBRsDCRYc6MHGg3c2NhB4IILCgwduKHRwo2IiBRMRJ7qgAMPFA48u
+FkDsgAnCJX0/Vry7VuGaJXiZUFyrCfMayjAruJDx6Q9L0DIMAigwemMGBy1lxniREiWJk6dPSYzJ
+wtRLl6w9my6d8MGJBTiO3vD0c+cQHztvArXFQWgHDwZmajBi1MgN27gCXthg8eMDTRQoMhAIUQMF
+jQohJrT6REDxS1eTKZtyCW9WLVkjlkVIZsH/l+c6ckJIMNArFkxfnC94gEDAwDRfv1q3NiDggukT
+p2EZOHFsnQMDB9CpWzeutSyamFxeaLlimAUq/JiYwSoEhQ2BBRES7P7ugWsKIiBKxEMBAkcKHkV4
+nCjiwQKJGeQvcLHhw2sUflZacFmhoZRaeWc5TFIjAIIE/bBAOuum80moCMuoAYQZFGihBQcUgMCf
+rrxI4ogkSBhRRCFAnIqJqq77wioLrLPqn5+WAuwHEhKxiC04LAhhhQ42oOCDPeogy5G24oqrhBpJ
+6OCDBRpphKwPSuABARf++uGST1CIAAISaoiFCwCuocGxCmgYEzIzPzkTp2swywwWWWaJwIDh/2JJ
+MAPX+oDOgwxGiMCaZHyRgBoC7jmAtdxag6UbaCQggDhkdvOgTh24Kc44aACdRZ4sL6gggiwhYHBH
+M8zo50UiUBjBoO5abYghGB7q6CMnV6BAhUBEWECF8sZz472I5NuAhXsu6YSlxx6bp6ZkVHosHpXk
+cDDGIqaTUCghGOCAA6OMqtZDIkgcd1wrTkxxCRFXDJcuLbJqClwqPqDiLxbyIpKFEKD8YMgcyeoA
+ykF2GNEKJqEEGMo3OiAhBxyu1GWwDDhcIYAJ/DMlAQgS2DgBCzjmWOM6NPg4ATkxeyfOTKqpBplP
+UhqNwQrakaCWXCqIYbbWNlghhgwUpQ3SF/+KuwACACLw4AQPJDiBaeOcrjMC1FwaDIcKquESpyB5
+chDVf7JAwYXWDjLoIPBsgMGh8jJykpGGSorI11zto+AAYc/+wYIEE2TQYpgyyYmml7L8O9pjXXTQ
+VHix1eoLBkAIQIMAMFgBXHaJCEEIOnCQ40QRlfC8KmsTt7zaFRFj0V0WHjyDyLxqgJJBImVnoUkY
+CBnxB9oBvgthf6dUHe/BknGhghp2DGHkBEJYngEGVsCBARyWD4EB6qunfvrl47Ql5WZzHiGWnEi1
+YMuokUntEv96+cWDTFYohtDVNiHHgGoMiAGFqg8AgGlMiRtuHexYRnLecQkcvOMGgorFjrb/doWu
+leFrGSDb2AbSEIQgKCQQ8UhEKvKBihCAgxppS0jk86v43I18EwjBqKQTAi3BZDCdyslgHPMOS8hD
+QYljnLuoFSEP4QAHGuCAAxAAA8s1JRlmqMMwQBcidIWODA8inei8EAIU8NBUWNGd7BbwgSbFYSxc
+BFgiFrADJMjLi0ziHcD+BYEdZG4DNLSBBlaQgAlsjHoba94KGGCB5oWAY31s3vFIsLwaoMwl4ZMF
+oeI3KFk4IxM0MV+gjsUTCHgAZ5vywCUM8Iv1jWA4xeDGBcjxgwCchjjp8F8AxzFAWPhNHzCJhS9g
+AR3omOpcSdrhDyBwA+945wGsMtvZCOAC//hwMCEPSOMCYBBCB3BQIvIRid1goMKUgGFHdEBJAXcB
+kwRlIiU4+aYfUHC4bKGuh0FBXYyQl4AKSM4HRjxiEVbggCEMY16fU4I+cUdFePEwRivKAuaoqMUb
+9Y5ICeOiI5h0IxJkgRGq2x3CFPpFHJjBZZdEwfS8dJjleUmFhgzBQ2vw0ZJeT5DwUKlyaHOMnCFS
+OShgBjVemZI+9EETsODMCBAks9yszwHEEcA6ynGA0jDDaUmFxswWdRnKJeBRoxAeBPiFOXOhKotD
+wIEEbeCqrtpABR7YACwSAgGJbGSDB5hIsToAgxJOJAMZsQFJ1jMRPODhB1ZMUBi4QL4s3f/QJpGk
+oZtcth9LMGVd11rcjK5jAQ3gIAGRk4AJ5rkFBIiBCCvQ5z71WVl3VS6gqcLitYbwAd2xcaGpZWgH
+EjGvIbDASROg3V3uwhYoEUAIDbmGDYp3MRgOJkGXUEn+1PK8OuJASBYInyIvMxuXfooAvLXaLAHV
+1Evc4pV1sNqgkrMCD0ySUtsQ6qVkEQMABlAdUCsGeBXpAcrZxGQLlA4WHji6FfjSqwVZyANUsAEI
+2AAib62baZnJEThs4Edwa4MJ7DqJatYguPqggl719hpnuSKGOIGJf1MyB695aLGrq1YdOKYBo63A
+s0KowAvsSYQDgMhz+1RXirGIzg/buEP/QmgtalWbWorKFnhm2J1sKYpaIDWJEskaDG+tyFOWLaMX
+62OGThl5AXa05mjVSKRKU/OzlbnCGe/4mZxyobSuxmI/l1QUZ2LBM2pcoBtWJs4JHOAAAfDUN+g9
+Tp3Y0UrUxOkdEJhABUh5g6gBg2/XyiVQ/mEB/JJNBQmJbgXBtisYAGwEgZgXDJr5gA0s4NMbgAjc
+2iKRQIDwB9pU0D6Ea+FAH4uGWbKJYYURxdHpEFsvWlc5IbuxCjwAxSkWagSGsIEWjGgqIurnFBH3
+rixKUYq21vFXUKvQHh/sLoogQrZlyztGvIEFADPMDzpAk03uiEHI9UPGNKY3HMYaExrI/1INt4yy
+8C1qNj29zMpmgSACTFI7BIDBPVYTAZwZCgKd9EU7MlBnpvkmqEh1Gp0CCL9j0CymNUmHppCBDL5y
+4arV2SUJDjDBSC/kIDBAQXsi0lYUNCIPnHaDB97qq7rNrS00V10+9lAqvTVLFhADpy7gi5hRkbbZ
+1pKQris3hHZfg8ZYesFtHHCNFGAAxun6XIk8exXF6Xp0Xo+2Iija44R20S7zSgS9gBzRr3gb3AC7
+AYo/UEAPbCy5DBqNHOSwh+Ud7zDZLOn0LoNIQK+sNiMQXjy0HCdM+Gk2sEBGHwjdi8IA16c/zUA6
+mEFnOmujGHXajWk0Bb9esJkz5yCqz//alwnGMMY6UqBWER4dXRXcvqsPIIh/N+CCDcJgA0+6dCPi
+kyuO7CoQdYPmqRfAAqOP5ug4BXqaHWPTlCRjBSMYeOBJd06srIsIKp+ADVCA2RSvYOrDqfMBsJ5L
+rROMxk1nEQTD9f0dW5ss9/rX7ryoui6wVnVuxLTswmA6IHc64B2swKZyIc3YzaaA61la7efSbE9a
+Qk5qYXu2S/LaJ4bii5uiJn6mQU52piVIaSFiIgaOxsqWwTcuRQAEwM4EAB12gxzgBwQlAAAkZ/3S
+IWqUJgbkZD/4CvYmACpyjAhu4OQ8QAVcINJigSAe4LoeIhAeAGCCz60AJlfcQyJGjW7/7IoCzsbT
+nIQlgusShED6CAQCZ02G+iADRIBHBO0LEsuHbk3+ckcAAiTqhoAbMIAPY2AEMiDZQmTZog60sur7
+skKL0uhJVEv/2EiNTKsLnE8RWsu0JgpggIwCKqCQIGaFGAMMlkeFRoNHPCp7/k7dSMUCCy8zroFl
+WsZNaqJ90BACSEk2uGtl0mxOwKd93mc2zEcCMmA40KHOHCAFTgADkAo5xCEHQeAUMAA51me7lqOB
+DsNEqsNDIiDSdO/2Tm4gTg4G0sP3SsgNACYC3ODTKOAEoAn5xiM+zCMi3MqI8uESqMDomIOwMAGc
+aOg1+sAGTmA0AkqgZi/awI8ITqAA/0Qg2PIQb4TjNMgBBGIMKkJEIbsitLyuoKzj/vBPtSjKi/oP
+eCZgBWhHJM8gjbIt3FhABezoDf3LY9At7/6OVEiRQUrRo0JBFU3mAl/pMQQiOXQKFlTge5zL8WTi
+k5whYlwKysghA8xLGE8gAGYgAAIAAFwJcpoHBCLrz5ChTPBhH1KNKZogXHypG3Fv0nYvQepKmnYl
+3JRPBZwkIY5J+dajLWelLUAt1fKGQ4TAEvyggH5LQARkF8LJBDZgFNGJInfJchpkIoeAFtthBBgg
+EJFgEFOsEGWkxgJqEarN7BTGYLpIjfwPMKTDtNZuttIuYaoJAlSueDphGF6G74bhMP8+DibRLXsY
+pPDszU16sjVeYX0u6BY+6Wc8iX14i/JOr1AswWci76fSARiJ451A4HGiMgcZYEQe5yETgIAkQ2/m
+IJ2mA4o8pOQGIgJcgCDIE6ySIY4iIgPspgNWwINwhSTiQxxP4K02Qj0CoQ3yqg/mYEdu6reGK9AA
+c9YI4wCCBLMUC8SyajGjLgTiAUBQxImQYEERUYdmxCow8rQ089qcpMgaKgApJ6Ig8bQYwQIiyhJY
+oQ96jY7qiGOMq2NikwvCgBQNqaR25DZtgdB8IZFgYhriBN9SI8qeawRi4FGqgQQ9oBaFybuCNFDe
+IQXXIQGqMgGgMwASwHECAAT8iAT/EqDfXMGGYtQK+AoLioCgvKAGkFAJRSCs5qqryBPBWgEPPICD
+RODSWOBHGExYMoJu5uYBHKANQmIK85MOGISF/FMwgquwwimGUsIDyDObgAJGjHBCo04TKsAGcABC
+YeyhJtUwLfKfdGwAa0thNpMzOfQzqc1F0m7HvChMC2kYWqJjnGc0IMsCgKh6Nge5NgaINsePnicm
+Ce8m3aQaLu4PZ6mpWMZq/A1QGolQjgYe0mw1cgN8ECQEF6UaoOwECIBjotJWmwcHSOCPSAAHoAuG
+eEKFSuoK0JUe8zILEpJMS86YxtIZbi8eNgBA0LEN7KpY5AM+TG1XOqIktvAOTA0P/zZAL6FjeToB
+Jf6SDGtCUXehJUZABaDDnOivOzl1Ig9pMFCkc5KgDuOvU+vPDBahtjRSjBKKtoiMX+agNHWHdgZv
+JiGMFQAAwyILBU7hEpJnY/iojhggspqneT4GiG5zJmZBHcxBEwggOVQj8pJBaYATaJ6VfHohsHhN
+4fhtkZbGj6zUZ6fUSkmEOjHngAzH/HYEDD4R5ErqQK9Dhe5JBw4CIZhQCcPqTT9hAx4gHZGJduxD
+InrgrNoiCydCraZwItqKAv7CXEtqVHThL/dDuBAkzWhCHixVBDaKoMaU0QIy6q6EdPKjRPdgP/wK
+AiBUMiXzOzE2x+qwbUkWoUz27P9Wi//sQu86YRJrdHb3ipfEJAAqQExcAgB693cJ4HdjAQAOxBQ0
+Bu9C4IBu9B0wDoCSZrpkUWlogwMTJVoj7078o/WGbgI0oH5oScusxgBqJGgTAFzFFQL6SEhEUUbN
+71yxiRotJg7Z9h9q4AAiba58L7rIU6wIAMF+bQFGQGBVoANCQBzjwwE2YiIUeIEn4keGr5kM8A1v
+CsKEC4e+Cfv+UnKFJxaW57NQtwgIwARMwPfU1H8VAoVdwAPU1AREoDwFjlAhMzK3Dv5AuEIT9Csy
+chFdd/861GA+IDryQQxkdDaFpPwmgEBUQTK81G94NwdlgQaKN3jbp3iZl0AclJz/3ImwwAkCdoqW
+WsEYfua5mkoOHHRP+uC7aIGUAoUPuBZcYwi4jKtW+26+rsJ247eOEfNy7tcGIuAGbkAJmTDMpsau
+2pEj+AUG6PTTbuUBeoACHEAiSAI+QG3g2iokrcMSpIMB563CasIPJjcevqkmxgpdZ+9TDzNcIMAE
+bq897neED0AEMoCETQDAAMwzwofTKKcGSNeJkI1cFhPpbq3+WLfInMTHZKdDGcF29e6Knu0TZ9e/
+7gEf/SaJr2EU2E0DIECqvFRM2gSmUKZNYClBZoIm+CRnYKEmqqul/FAXd7El9mRVNmkF2IdSklMX
+beJ5cKCbtAS49KbvMDc6eIQK/yogc8Nuj8fy9rgqFnQrjkBoA9ZTIybCQKugBhD3RyQhgj0AYHLZ
+g/3hVSEmnNwNAtvH+vo5aaN5H74vXjK2Ag7A9+ZKBcLTBUaACVU40m5ABPx30gQNDDIVKsplU1PN
+/Pzpn25M6VKXZEt2h0eVoXq4Q5uvLqJjQegiDAKQr/LhNUpBFZi48GBC3jJGqyuDaBUJJ+DMTmDI
+ppYnIHKGZi5JSHPGM2ShnAbjHv7sEmjGynIDfprqJdzkPzDMn3kCTM1AqnkJxXwo2qoAkMEKfxVJ
+IRxCp08oEFoYSPLGwwjGOylWbzZgczCnTFWnRvlSlGVtLwFzbxQ1JVSAAPYgVf9KB3VX4AAEgDzh
+gSBMAAkjrYXvF5bdK3N2mZdNl1wQ62MT1DCjCOSYghLXiMf+xZgT5kl6B0qEenxWoJrAoEaDeHzC
+aTIyxp22mhRMYSuv+RRGphWYi7kK7wA2j0AwWPusKGd0FAIaiTZoUbUDbTTWZ1ESJDc0hR1Mz1o1
+468vuA8+ridAsg6wpDvpr1oSaAm/agnbgzyYULXvFtQ2YgNypT2VthdygURUyAOU5I48sbddRLYM
+XJof1m+E51AV5IayRAQ2oEESewI4DQ1qTLQy61MhwAUEwAQKYIR5nMdFwAR0QADCalSKIF9+W1PJ
+Jah/YrgByqjjMOySW7mNman/OVRUOZRI6AImLaFMrSUM5NFLwTmySAEFWEGqUCGbM4oVbvabUyN8
+VIao0FogcOZYhtWlNqkCpAy/dbSAKO+c76SliQoaSm+ArHWlUlwfZRQ6euINJ4BDlg6ghACnb2CV
+bSAD8MtZFoRHzqNwAYwC7BVJ9VorVwgFsKBLmGIe3NO0jOdwdmFA/hOc5MEPRmMXLKACKhdemomD
+wGKeLgABEAC3pG0I8ibWk2FvPIQFflsQafihnryy4sVip3y2HrHsmpozfZhIwtTVCfWwY5TA64KZ
+TUEDxkSWktjM5Q1aBGswRmHf3p0V0wslpFUgMvinqss1CMBnqszL/lwTAn0//5JqHW6gv/scfMl6
+OcIc3XpiD+jgYue32AWgGZwBFm5quAYrYDN+CTtAA54sKanWcGJ8hWTRPftmxjuliTvwujDsWDCB
+D3KhcixCT93KtNjFZzEAAajKC1ygjm2cXYiwBKCAY3vZdKFdZC3zMumwNNWIx5wb26CbSMAiTEMg
+SPKhh2Qzux1D3jTG3Zs4FVwBFWiC3TLGiqdm84DRAAYDSWvxAuhapqThGPwNv5+LAHjqz6fLWj8h
+qDKFz+pkHG4QfAM8E3aCPz0MJB1e0lcEArikl1oDF7ysZiLiBEIiPiJChcWXHRrSF3/RAAgnOWJI
+76Qjb3JCu1+IFTfpMqTRsP+uRIU0AAQu6m7Nw9RCHdQG0AssAEtl9XD8wQMwJ0Z/QAAkQCDbdfdL
+a6TcLyKBewKaXCFD66gh/rVKsyM7s9qee6Kau3dY/5nz4Sq64AryRUjmIeVPIbJa1BJQQWNuthS4
+e6WU4zK2ZBxO4zXmnpbc5zeZ4VFGZY1/IUmBwFYhVFCQiudySRIkh0xEEkteJJJLzGqNKbuer4eI
+QllWK0uobKlNJhbLry1vx+eT+O9HXSolqqsNWBjEAwXMwkLHgwmFiUiFgcGBgUSkVcbVV5XEyBLR
+EMRKTV4IxISRGQTEmAVKWMXqEEGYmOqKx8aEBghIQADIz8bDMLELsYhL8sb/wsddyC8vA8MPy11d
+nl1enfUdt7b2B8tHeDWJ+TlJSTr6Od33O3w8nrx2tjs2i/hHh3gHfweigAEBJtoH0B/BDtgm1KgR
+IpW1bQ1DUHRYZsWRBBpQaEigqkICIxA0QPCoQUOFlByLVEA5iwDMmDGRHIiSYQSSLl5embkQoY8H
+WBA4dbowoqgEISlVEeBzYcWBE1KnHpgUKUKUnTM/jUFlxsybM6NE2aFT9t6BG18IjIjwx88XGxeE
+rEDxAAa/ByoWUBBBQEHVKCMoLTEQIQOUK5mGBF1FhlQoMhjHnLEQC0WtySkn25qQIEEvEAxCUCi0
+AQZqGMNUqCBGzJCGXx0T/zCoUW3hWdzcumF792HFuODjxFmQ8y0iveTxkPd+Z4/5hHzDw/kbRzCR
+P4HWswtU2KZhDctobh//bvHihpUkUYRUVfIIyI8dU4ZMyVimzKBNdzpVMiIQTytIkAQnHqBQVwRF
+KeiTDSgUgREVZ2CQgWFYHeAAhg4IsCFVVRmAiScyHfhVZWWEMIEo16iIh1na3DACAShccIAUIwAi
+iGQrbCDOAwvAkAEMAHxoxQWUeDCgYVpwAsArXxjBCh4WPLWCfalsBgFMRRCBEQRoUFTXHaDtIloI
+G5j5Gl4dwEDAAx7chVoHEPASDW0fsKHbd7l1k81xHbwxjgXj2GZGcPnIUf/NPco5d1w910TkTovQ
+RRddPvlUR0521yHSwTgD8VPPdyygUE1DaxzKkG0NfRCWfSpxRBJLLcHXHkcjfaYBfrnGyERMe1DR
+CS2hVFCFTyMYaAEAGRhloxZVGBhjXSN0OUEADlxFQAIWMIDDaNtqJEuvS9ACUyhclijWCmUt1+IP
+ANxQZE1zSRCBXOIee8YKC+BgwQYjwBDAFkoemcGRWGU17iyvbEYHG3Wt4h5MlKk0xBhdlsEUCnlI
+s7E0MBiyQL7CUJAIcGoGBMMuDND2GQPhnJUbPYn+sGpwtgVqm51zsKEuPMat27Ny0M3T86STVjqc
+dAhx6o84+RDN0AQPvXH/YhohOGQ1qudx+RmJZiSwwmdGaPQ12O6JnZ8NRMD0yixKrM2JTkoEQkQo
+BCQIt4FDKUasUReoYJ+waEzg4YcRNLYCDitQRNE5IZCwOA44OBijG+51CdZF2/AGdER2V6VCFPP+
+dMHaMZaBwxGieAADBAF4AIAVsCcRASU/CfKKg2GMW5wc4VVWF7lHfORgEU/KEpQ1tEmjwWgWoOkj
+BctgB4MwMFgQDQMkZH+zWS/PUR5vyO3zp3DB2VFp0TIrulxzzK24TXKGViq/0+XF0c8CyOk8SikY
+xcEGC8AzEYeEpwxDOCARUFKEjzzMcg6EAMJ0lRIlrEUnxpIbBWMUiiMR/0kJYzBAUbgArCWopDMJ
+sNaEDOOJInxNI11xDPFyQgs2uOcrBXwIi9TXKG1A4ABpw4pPiAQGcj2kLmSwAAFWEIC1wc4ASYhE
+VUC0lk8kLEtkgBobakAxIywFIxp8mCsAFBMU1KBLP1AZbUQDgg+IjADRO00iDpEaf8BANMrLHjMQ
+hafvDQ1UMuMUOfJRg+D8KVA0W1Wg9Li+RSYnUTqsh3TmF8j5VSo7FOjLKPyYNRaEJQ8E3Fk9wPMG
+CHxoQhiYkBVQmUrEUCgSrpREr6YoC/uIq20UdIoHjpK2L1pBd04iAAg7YaMkeCBtKuGSE1yJgS2Q
+LiUasIwYNqLAtSkMDv/9w0jl3LACFenQZz+wgOhu8Aes+GEuMemSKlixggvYBwyUyIBUrDILIgGA
+dEEJltUqksUJIDBvDsLMiDCCL3CR4QgouIPKVOY4CCzgNWby0W88lpoNVMAcyiNBvnIGKe/1MTn7
+WIGfBBVA4gCqfONwX3MYqajdPKo39zhU00wKSO6UZhil2SZLUYWqN9xvnwIET9UsMIkJtVKZGTCl
+BIhK1KNGAWFse0lKpGICW96SglcwSt7qQkLAWSAGo6vqFypA0bpFYBKVWGYMmLQWFn4CXLH8RIos
+I4qHNAQCH0jpzyKCgxmlpS2hMyeAuiSSCphhQA6qggEcZAAA0MdrZnv/6+XA9tMJGPRJxAsBQAWq
+CjQ4Jp0Hskb2tPcDQ3jMTBsYmT/yZbI4jcZxj1MTcBBlHO/pb0/66wBIBWWnhhiqDaQapCEfqdId
+rrRR3WjabWB6tO0E5JLCOC0xtgk+qEWNIliMDniyFh6rocBaUJSEVV5JuFe+UoIySclL9mMvTegE
+LrBYARWFQhEQxk0QgFsBAGqCFQyQUwJMOiAOWgUuD7guKJQxleLK4BAzjGJzROtjCEZwgwln4Aac
+KNBW0RkLMxguDBV73Vc8Ylkk4G4zmp1rdltRMYxUoCGYQQIsZAGBUpThwJn8AQkmYA5hLEAYNn3A
+MiZgEICcoSD7gEG+/2zjnJfh9XuP8hNuL4W0OQRwkMMR7nAbKQ9uCNI6iZDkPpr7RtOW5kxnesCS
+s8YQODCEBYv7qShDwAIPnIC8rywqefEcCfw0KUuMuQCTdvKfuOjkJ19U23sPhAID4FIQaiMDnS2R
+yrTWkrBuxc9/HySWGjC4iGb0xpbvUQOvRuEPVVDBFDz8Xs92iQiw86+ykCA6rLAyCl8krJUqsIY3
+o8hyDjrDgWixwBJi5A1oKE48YGAMOTr3NEdOjccWAAHU+Ahk4eCmnhbV0TisKsqCsvIggUvIVa2A
+PFlmFF73qDnN6QO3iXjoafly2uj1WI6mfYAbC/EA6epmZwzxpAC1O/+RNbAgA+E1gALsrHA9OzG9
+VBQDTGBHOi+kDQxy2QO9Dj3YLdlNJ7dz0AYgkN8IYEDSywQAALJEJfS+RBAXqNhFds1ZW4Rg20B7
+xw1sMC8rgA4u4wqFZw+UgAqkugi4WksSmPSJdG4kMlYsztVoSFjLWeC9iK5YOvFFbjNAZwWrKfNp
+qBdHaoOMemGndjN+cKc9PtKb2Og2lBNZB/AIxwKcMtW5t8w+9e0pgMJBSNjPbnbSPtTs8dY3DDTZ
+EDpUPQ5Yg/PA3VBnhVO+8gZIb1gH/DpAB6UoYW3KBflwFE9Epm66IwAEYlAUCg4RM6k/QckpkVQp
+DJEAVb80Ey9QQ8z/McSBbA6ag39wgwQZRQLDz4onDoS6rqACBVfoOBiU8F/mb3EWKS8h7whYObCc
+wXIsId4YKIpAIwjOOT0uBGrM5Fy8QHuipkVNufmUbf1tGVD5QnJuFcmQbp/h2nnnXMz00XElDUhx
+So+FnUBMFDMMnmltAAE8F/gsXoO9wCiER8Bl0Xb9gA1M3sJRyFEZQOx9SFGVXH7oh6vVktr0jcJQ
+QSD4hwq+V118gbHQzVXxQfTFCArEwFBdxRXEQFq9Qgig1xLdhwdMgS3gC1g8hOXgVCPZljYkwIsQ
+iB90gjGhQtChwiwwmgfwl7E8X07YC2G9EPNNSxtYlxF1xRb90+TQ/0254N3eoQabEMP7jZ2PuN/7
+aRQoaU73LArfrQrrTFv/gQc+CBKR2VVxLRJKPQrfWdn4cIrhmUn6zdu81aFpsQl0bYDi7dMPHAAO
+OB4aSKAoOcTkTULCSYLlRUIrFdUUZR41qU1M+EeJOUW9dFAtNAUxfcERfFX0OQkEYMABhOAp+dcU
+zAIKhACuZMlLuE7KuceXoIFYeBa/xYyTYUNNyEUmOEvEFJRjdJH1GckmfEHsAJrKwcdMLFD2NcQ3
+cVEJ2QKy/VuW1cBpCEO+nRY9moyPqF8DbgBwNINO4cn7gIo87INjwMAYWI9tdAP/fcUa6J1KgVoc
+4IBDJor8dAog6f+I2dWhRNEjkDVg9DhX9GiSmxlHBhAANkwNnKULBJyABEDBYVAI7XxI5TFcywnb
+LMgaAGQBTiyL7kwQ6BGITqiAGLiCx8FCE7Ceyw3FLxqGpKEcF3hAlxzQ0VFTDEwdZ63BRYQHSzCh
+203XN3iA4WTCF8RAICwQZo1B8RzIS0gc0indeekaldSKZ2VL7yweliEiSgVeIbgRJOojyNwj9Rge
+XuTM4mlS9/Cd+9RAnHQFQSKZnGUSC8QJyBjbjWkbSumdNbAAB3CAAiRA+zBHuInDIdgdtUHiyUDP
+X9JjRz7XR/oRXd4BAZBAPZgkUKULAdSEB7YkrSHGKb4S0rEN2wD/wAjUUxj8B+lEjMXtAVKQkBGo
+FwXpGnDOxS6GgRPQDn8tkxasheLgilsRGBa8VwFxGjuWkYP8npYFHwq8i1hqwoDAghGUZVeg3i2o
+lZJYQegZGPmdxPHQzRno1E8lh0DBQZYFXvSYhvplxyPOIUhpImGGD2X2TAdYVkHG1h08ZmqgQHrA
+wGQy5PpEBAfMQADMgAIAA7o5SnBUx4Pm42iq3yURKJkBGQV4QCY2WCZxw3fuVLlNAiu5pG6K4GEY
+jAfq2QFUkcKM0ZEQS9vMjdrQAjjCTd9Y0S2wHmE5Tg2Kyy75IgiCIMn10tqcQUighC+9jgQcyEWg
+COq5B2cVY7oZ/xe75EEP6RwY0It9Kg4aLgUO2NJNGgVwvkIsbEYQcgXzKU6Nrl1sEsIBCAACpMCh
+HuoLCIAJPEGDINnNwMMyUI8NjJn6IRkiHKiZqEkHDOZscdSSyYNlEOS0HWHaTYCPwJAqZKi2DRcK
+KMAMkAAAzMAMcEAA0MP8DNIhCGQFHMIb3eO9NSD1rCiQ4VsEoqN5IAenjYcblIJ31VpLzgtiHMad
+6ea0RoKSImM5ZsHz2aCfUVC9CJNOjCMXRIA+zhUK2A57LUEE1JkHasFN/lco1AdMLNHr1BPQmQKV
+cMkqiELVkaf72JY3CZXcfIHt4OAbVAzgYIkmfMGrUdP0uaXwqP8CSqBCBa4dp22AC5wAonZsCiyq
+AGDIhmzIC6SAySaqyZqsAJyACMDIMETix6AGBVjKCmgq6+DFnURNYTJowNLDB6STAwHHKLCAKhDk
+iv2jQzKSBcBqHHQordoq++jDOORLoNhdBzggJEIbmV1STZ1JQ0XjXPrbzqCjJ1VG1NTAxpLXeKEi
+KjJc2xJMel0aLBRfGGSQh9Wkr1TVgBhYXQwIg91CLsbNEljplVqnFCyB0A1dBG2exXAatHBGKJRC
+zW2lS8GPNoTAATjL7CQfGUmOWR7a6+xiLBVPEVhA4minOSoONUCADYjACZTsoarsyM7u7GpIyIos
+7s5uyabsC/T/bshKhQiIQGvAUabaW5oAB6jkrOVWZmVSQ80awR8W29CihoUeLfP+Xx70Amj4wq32
+DAtQA9ztY6ciJmmdzLD6WPQMK/o9QG2ZhyedyP8IUFg44wkcnCmC13e5Uo5CAds23NrIbZGKiz0V
+J/Fowuq1F+fCVyiUwcuhHt+wXllFwikZxsnhoti4REwwCZNAQENQiap21hs0WPCxXUSQwAEIgleR
+Hhlt4zoSgFp96enZh+0xAFjAxxBcADy9AALE7sfSrg//8IZkSBCPLO4Wse2ObO/ubhI7wAk0agaI
+QNqchkKE2mxZJh/WbAP95139LAycpfXYHBgH4OVywJyMCUqN/5R0UJtlfK/zvF880iPMbuSbPA06
+at9ZlAoabKApHpxV2O/93hm14sel5SAsqldTIBpbCO7qPZ9+dkkISAARNMY1issffyBYOqVQrEQF
+2GvoigKnCQXFAG0o7EZe8VEe5NxaWMHcHEgZYQwoJ8ztgAHLeUBxRIskOEDv8i4Q6+4uA/ER227u
+huwQB7GGFDPtJnEup6zKmoALpA2Grhvf/aM2jKp74N9CRtRZmhH2JgcIxKqH+gJsLofUWkoZINnM
+AFnNVhuwci2QqS9qPE3vYI0ezsHP1m/+qm3+3uYft23puKKfFYVa2eBaYMYsHDAfXFUnLF3dsNPa
+jMGA3FIEh//XFahVxIyEDJcOk1DEGkzG5HgFNjnKg1WxNkRBxQEREJbCPy3Q5ExROWrJkXyIAOyu
+7IIsEffyMBPz7R6xTdc0T/+wTuu07sr0x74Am40wcQnNzwYtoczMAijmqm4zPVgAB5BAAswACGCA
+iEJHNYiDGXjbbwxSO9thaqpoTfkIH4atv5UFG0QYB+6mK4VXH5dXBJUj53kCgOxSjCRMF4yeMBWF
+CgTFUrjCDa8FBB2wL1qF4RLTGOEnem2eBLRY5JZRrMAQRjSYNOrhN6he3VrYQIeHWbpK8fgZON5y
+Mpus79Yuye40amcIawuzMas2MAuzat90EEsFJoxADJwASa7/aatuGb/+IaTOjNGKBAdDtTwAwA5Q
+CwPwQjiDmpDZiXT8ho+AlJAhYGoAq4q6aPVEYw5ljTz3TrKuQFu/tVuzknjtma6IwRfurbEodvTF
+DRcIrriUEGZQQVjpjU/0Iv5KAbfqaYwMndoU2DJlHboq7IisgmVvG7Ka8g941XCODiQfVP+gjmc1
+RVXEdDIn8U6DLE0DcYf3shEbczGzdjD3tA93OMhKRZKIDhScAIzyNroJTRzEyRKGQjN8wGKiAOuk
+i3H3TABMAAiABgg094q0m9UKxwLAAY63X/p1ZGms6CVO8Q6Zhz7F72SpwHjjM0yeYlGd8FwPWD3F
+AEz0BwWF/55873UGseG6Okm6Jhbmghfh2JOB/fcQpFwSZIFTigS6sGeOrMLmuI/VdHdEDN8suEUS
+NMg2BaENRMANHIAJxDTvIvMx9/KicnhQg/iH77TI+nROU/rI1u8TYMK8wCThuDhI92zAWgOOl+oR
+Kjn1Hm2Px8PGhLNx1QPNIOb9gQxIqV1fFm+TB2uxmgmAMooA6ZN5BJwFuKt4+TGXFxWFjAvuUZpw
+5vVD5y1WnbkL+hlG1CAYvNgE4IACvGRUqKT1xdfnuvDDPsx/iucRmU2aWgP8Uu4NqI01gtcJOMDJ
+mnbJpjYSc3q/bzi/n7gPb7pqZzoRAzURg3oEJAu1OjtihP+6A2QMjI+omqodkgGdQgq3U3N3rAPf
+PAhZbglZkhtSM7BAvtRsJHJk15YZBdxVz8gvKMLZBGygB1qe28bk5aV3nS9BPdXksFycC/bH6J15
+6ZBBBXQCWEKLLpzAS2KAeifMcvqZ9RHJYJWL4gThxSgsgzKSG8BAVRxxyWb4vx+zwQt8TJ89Eht8
+pWO4pfP7h7e9Tcf2wddZFGSBeeNoK+HoK0U8NDPKmhrHndTsV7ShcA/3jLFPljVvqOEDbiVotSFE
+NUCZu2F3sbK8abAqQ1iNRWQXFi1esrdt/4b+bu4oektQ6GpC6TABmXuBmdu3F2QJku1BXm9JADgR
+CebHLAj/Vq+gXBVsMHwQ91xdhlkqfh6YfL9ciAAg6g4P9WmbPU2f9to3/2zzsu9W+tub/Q+v/dj7
+tANMwmFoAf9a3hNseSQ4AAQs7+IvxNh2/RGChZCxDtYJDUqx6oZ21J4A3D4IR2pwnRsAQWexgBU3
+sM3m8aAsH8oN5TelUie1UMhS406uV+6PcDKUM+dyWh1Rt83sTNlDIFTodjvh4vEALvSLPb5AwkKP
+EUKPQD7Fi5G5OgiIRo88AhQPgxgJCQAMDAOJPQKIlRU6AIkIiRiAuRWU2IpSyZWalYrYWIiqnysL
+FJuDkxQEY4SUlBeBZQFm52fo5eZmaOvrl+zrbe5tau9q/2pt62poB3MHh5OTg9VAVQmztIM4t7T6
+MgdeL9/e3okqXr54+QChSClTHyZYWAABBYxSNfz1m1jR4j9//H58qPFhxYIVH1h8gLGgg8IJHzp0
++FgESRIlTp4w2XDxRw0LWbjUYAGGiwUyZvDZkydv6JkMEeLQqcMUD4E5jCowalRo0aKqirQaYopi
+BYRAuaRKOOFAAlNUGCR4QFGKVAINAFrxaVvBLgotKyxs+WHhKy4CMAjYUPHimLFk08iVY/bN2jls
+3c4xdkYNcmUBkylH2yyNG+Vz6g6U4RRBqZvRcUaXaafazZl2DhL44gcwo8YpXb5sNOh1BYwtKWHF
+MsX3ov9tm8mn2K6d28IH6B9XrCx5cgILvyCJHElC4AGBKDMpwEiOJSeWEDtrTNhwAtS9oWVAxUHT
+5j38CGj123El1YONQRaBShCsAqRkjwsA/KMOryq4AAU9+CBAgtEq0eBCu/S4wCFcUJhqDrtmwesr
+nCSpwAalDtCsGGQQyKaZy8jxrBsaP5OxRhy9ydGxGB8TjTQM8BltSNbsWY01elCrRx/aAHIyINyW
+00k3kDzcQC+FPmgIIhj0CgE5i8C0SczmNNIIOr/Q1E46kUaygCUijIAJiiSaWIE2inrBjov0duqT
+ndfoMyAOUDA4rT420rivDKfuaMqSECMkkCpKAzSkqlH/7ijFLkHmOOAACSrQ4EOmKqHFFQI0SCAB
+UxKYCoULIjjghWRqTWycG6WZ5sVocvQ1ssau6XHGysL51Zxt1FEnFANGU2XQZj89slmioEXyNTWY
+jPKfKAWacj29VtgAgr3W8wiitkKSSDl2wXR3uTxT+uDN6ULowAKXTjJXCCFcmnOJJJwIoUkxp+iS
+BfS+/EIYAwpNKkg04mtDqTOCfA8UpZpyKtIQ7WKrDko7rZRArBBE8A7fJKWjQo892ATEUoCBAAdM
+MlCRGWVq5ZVGxjrrFbNcNyvHZxtxrXEaZYDOLJ3MkBWgLDLogYPIaA2Q9VOi8JFY66LSuEGAOwUq
+2Arc/9aboE+eLEgCoeeE643c9Jbblt2AMIJ3ooWeMwUkjhjqUqGbznXpJZieCPgBsadAYYQKbtno
+uzs70umKoCYOJak42HAY8zMoboM+jR3NkNJLJPEQLUagYiSRTq/Sqqm2/NJqkgMAqMsuDSZ8dphz
+bH2RMuC7IXrYn4UGWjFgj82R6cggSwdQrMs47drRyLga63psnvZzqalNI9Fm6znBAiuOQ06g9dSr
+wSHfQhKOSy9ZkFsguuu/O6CT5oVzunlNuveHkbCkJXJyQnieEC8PrOIWH9iAClxggg0ABAvrAcrF
+rNY5pEzPDabh4CqQ0rCk3CEPGbIDJKjyh5zsxRRfMf/d6VA3CEstiEGSwIIdJmEAOiSQd5VRhtGY
+pzylLa1pPwOijhYTxCNihmi5GiI0yvKjZnEwPja7x5CsOI/VUG1706IHF9vgAPKNzW7LSZ9PeNKB
+h0CAJRZ43y62sC6x0c9+yomjk6ajN5YUIST3OskUVJJHOYHHAwBrAnmWw4cPvQkGDjSBDhBgAi+k
+ZwIEoEfFPtGwT5QGHqYxlKFUQbEPNswMDHpUpKCiuj7wgW17SWEWXJkXHMAiUlGJhIfa4pANSCAD
+T8RZMoTFs6IdKx1MG5qNjMjEJBYrmY4xnjOYpo510CNIqdClkbR3RWpdM1pHih5qvlckbOUjjPYT
+Wxf/dvIbr6SpIx/QBQQ4YhuzJW6OFWlORkAyHQFqBwb3es4U9EaE37zECeChgAtW8IUaQEgSFwgJ
+AURgAhMMQAAIKMA526EWCWTSNJ0TinzcgFF4qCIDGcWAh0b4qFJFhREe0gD7JFELVhXHlSQoZwgg
+MJUUnaCXv3sMN4h3NCLKSBtGA6rxiEosxzyjmMCsxjCHCShOdC4eagBU1bAmLawiaUhBiR43rVWU
+1QwlrAYAY57KFyYvpG8n2ImFX/QiLxg8RC88mZ885wkv5sgRTxOQjl5YIgTpCCGMf2TIdroDMCY8
+4Dxf+kEI6AGA34jABg8tQAEMEwNfUNJiovyexaK6/9FOqsVQpikNJ9PwlBDpooSMcIUrTKqLXbz0
+papV3Qgy4IBdIe8yu0XHMXHUTCQSS7hOm1E4djVcoNYoNKL5VFQzcAEKQSsO7DgBGrpJrepxk0hJ
+2aa0vJek1Fjuq98dlAMGhjfzpfVsO+mAJJIAgywVJF3BIZhdySm3+hZsAu0FST73thJbpLUjJYEA
+EVCwAe/Y4AlNYOVe0jOLgW3goRB1gEQRMLAJnOGTceBEJzvYYc1ZbqMcLG1qbWnSDwHAD374g+kc
+4hA7xKpZkHlRznrozOUOkbfO7GlkYOTTZBU3qL5KqhKZOVyf7Uy3URtUBC4AgAx4oB661G4XwWvF
+eP9ktbvbBOeRbFaP8HY5fNbSXpNPcF6KiDEgCvuCJEkSroOmhAVxjdl66mpfcsYxv8wxRZf6+xGA
+PqcnV4CO4AhoAwQvwa3BAdOETSCAAjhDB16hJPjuc7EIqIW0ISUpJzktUlCYVD8bs8SAZLxD5OF4
+mE97Jo57XETJ7GjIwEMeUcURXB8fV5k/m8wwU8MJUcTjWdBqR9WudYFrgdXK1PNusrMoqDZgz3Jg
+ps8NHLCu+41JkgLmgkee45fcsOCephj0ntVMx9rQTzd2HDdI9IhP9yEsBPoDZMBUELANsJI5O/mB
+owUg0QKMwQGhAHZpNTpa0iYlHoRCSufg0MH8zLD/hTHmRLN4WQ6nCnFpzwyNEHcMxB7t+IewRu6Q
+nzEsnuKq49kgHtSG0WSprSJRI9DlSK1n1U/Z7AIVuG4WK4ldrGIv59Gioqyi/XJkG+AGWttiHBzg
+pHP7w0/ow8JIDpxvP0KHXHPdq3rnRrc6lsnOAAzXPe8JWJDwhE/QgVMRDvwAFRhOsX4p5xcIgAAd
+RFTSE/DACVYB7E9cUpRBUopIlSLzTGf6E4kv+CpMyocRRKAsRVaWU5d7+RxjvqfEYx6MMP/TXy4j
+5ERujLGE2jPfesZ50GRH5oDNUXY0d1A31x611fApNhidaq6xcrO9iqQyI2UY7dhQCFYwZkFxcTUn
+/3hSPS+CE/RQHWHAQMFyoFMDiMwLcOlW7zzz2o8r4JUfNdjASd7kEUBPR40iWftKBCjQuIeHlQPb
+9tkmgAJjLKMB1Q/BCNox4oILvE7LJGBTvIbZNOc6lB+CEahhvSeyPI5rGgj0qVVDlnQYnlcTHuVR
+jKPqkaVSKqLBOJcDIQOALlHYKKuppHZIjekaFHqYqhS5ouviMu/qKqnpprEiClCpgK8wAAu4qdFg
+gzBrsjZgPvAzK4vAiT5RGC4YCS2RCEKzBZK4l7GzM4SKujExk3QjGPAICf2ZDukADo7gkxBggcD6
+DSVwgZnYAC3ICV+ov5zoPwTwAR24CS3wAFABNv/5WAUBLC3PAa1MG7xM4wRHkICngqbncaoHzLhV
+yzwJHL1HbLWN47EmokRLJK4iAr1xSLUjCg2ieh6sOZSCg4dQkBXTGBTrShTM+R7wQUXfi6LfAz7v
+STalo8VsYg0PkIQxuAQUMAMuKrrwOgG8QsKKwIktmBxCW4Ar8YWe8IgOMEN10QgrNJu7qq+9whM7
+g4EnWIA38YsO0KOVeCPzYLs/2wDCWDA21Ddf2IkrWAEcIAEIQAAC6Au3wsOk4EPOKhQCHMVP+jt+
+/CSygECBXETLm8QIXD2DBD0JdLXMeIGfAo3eqozJSC5wKDmgeaqc86SR2qSauz36aI1ZrKbsCcL/
+29Oiroq27gqz1GAyZtuyNFgLTNjBCkBFr+kaXzyAuiJGqWMlPtkX4ACgLlAJvTDD7VuXacS2OUoc
+qDvCm7iJ99qnjygwv7EFhEGPQvNGBoK7B7ABCmDDLDCOSOKTFUiAECAFv9gLSciEfvTHCwCpf8wo
+A+QsEuOEJ1oHgYxEjptARmyiHtGpS9QxHnMeG/FEDTweiwQyY4KmIPwkFYuiU9Qg71LFaUmULiK2
+Wcy5Ysue21ODMttMq6LFkwwf3DODB8FDxpnJJMkeKiIvnDxCLPQFvSiXCWIBKrw+kfjCDsAJwLkJ
+CXISpExKOTKTa3wJPzOFPOIfjpiXnCg0lfAI/62Egq+UJNroE7+QhDfMi5fayFYgqcDLgH0swLfM
+pD6sPIF0AB0oz89byI2rQMFMSIbsOF/5IUhULlkbPeqSnlXwgNeTHsfsJuH7uVtERQy6zCIpMxQM
+wiyaRaJbTW+aFm2CD3xwMg85ABgLH4nhntbEs4s4S3FMD2d8juREEzjhiEELv934OrArm++jAgsw
+nH2CE5Pwq9xswzK8SiF4ziRAD36zQ5wwBXKhDWN0MJ7LIFXAqMDDJFYIBJobRbWIPAmgOdNYxAdM
+SEZsxFZrxCntuNW7S4VkjBhpT6NRDJQzrmQ4SGrJqE5IID+UPdIIK5+jj3owOkFRxXuoU+oZM/+S
+FCuVtBrvUY0EPRLIdEHWSIo/sIsTkAVAbYMbWAN6IBv8GhNTSI8+CSAQhQ4nFAKDsIAS3Ss4qka7
+CoNsY4/3OgKI+I0FUIljZKUAUgkk8I45UR/GeiMVggAoPJuc8AIL4LBRXNJWWNJ+BDzuvDSQakAI
+JFYu1ctJVM9HxDGHFJb2rMS/TBbc2jxLRD1oQsVVSA2ag64/HK9VHKnUOLzw0SCaDCWUVNB5SJSa
+qyojSQOuIi+gy8FqsZqdywQIqQBZgbaigAObiQAoeZLyiE2dYAHsYM7brIF7eSeeoB8THbu7grp9
+wzbcUMYoGJz+epOT+MpK1ZLuSAKKdaWeXK//Ho2IJvEnAtDVALwkjPGkxvNHYNuETeBDQ1QWu6zS
+z7tZVlM15tHSCszAvwS99pxWH4mGiaw86IkBRUhSTvDVU4wWVYQDYkvNIawuFxySiBHQ8QpQdP2y
+GBRU5CuDdYAeX5wHGqTF+kDFnasDPLCZRYWNJCHCFDSAukHRXkgfL5EkJyw0nii0niDYErWzMAi/
+anTU3Bi72sCONzEIUi0C7ZhRViq0DkiCh3CJ8dBRHaXOFaqC9bmAT8EAKL3HTzvS7wzPpQU29DxI
+wbQ8nUrEvFxPdMi8Zr3EGPlEcohAJQqNaOKuyxGFOTDBkepTkRLUVeDTpw0r7Zmq12BB6fqq/9QA
+yQLFIg2Th8n8lLCFCg0wOq3CpmsBM8tcjTmIAA+pBAblzEFZ1BTMgLuhW3/4klvQt7wVNEvttiak
+ut7kTU+F2MKNknUymxqIE3/xwiC9zbganK58ABhQQlc6jy1wq/WBCgNYBwVAU07YhH8cgVTwgxGA
+Un4MPEPxKE6wUp1dyIK00pvNscDcWfVMXUq8QId81mGpS9J0BxgShUL8XZm7IBzG1lPUTLIFn+2y
+h8yJoiAOzfpYTS/DWt4DFAAwSyyAACryOXAiW7HaoEzIABcqOtXELpiT27ppl7O5CVWVl/NbJ4Tx
+W4KlOsAF2Id9VCzQq3nptlXlo4C6lzYE0f84mZOAgYA6bsODcrAfDIG+4wQVezIK5scY4GAQGsRR
+9McMFmQ0/YTzLM/1HGEUzksTDuGI3FKN+yUI1IawxRp4WB2ZizyrkYAbuOEllaIUucc4vRqi2yBo
+adqv6swxk6445czaG1T8xI/VyI9ZoIUftAMiETpZRNdq0c8DKJWsDVcXVA1/fdQxkrrGmr9m7Mbb
+TE6e6Fs0TuPBTTN4Wjdf+CsS/UYhIIJv9EIapU0oWILxqJPYdDAfZaPY1AtkK+SCg1KZAzaaM1IO
+RlMKNsGCo6ZAKNbWXYdJnuSOi+SFLIuGdN2RE0xtICYhygadir12iIc9EIVmeZZVlp48PWX/FGza
+G17Fe2jaLwMzkjRemuRTreLTLGpF/jxe8LqgL5sHr8AEtpgtsNgeoHtlKJ7iA2CLMighqZnT5dXd
+ZyaTaIYXb0uTvl2ngyXRKyhRM+JmT3VUn6AffOGblBicktDUjN2LcOwAmViCIqAAcuFQH4WAdnSr
+CuDgT/DOhiHExntSmlOxVlDStzzkTsKkCPC405VEm3Vdj1O1pmnhQ4TPBZRAaekc/XwH6KI5qzG6
+ROmgiFGFcL0ApKg4Uzxi7vqgmXY27MWmtwUr5vVT+hBCkAxC2HDFel2LV/mQ8dXaYYZXN6iEETAA
+j3m2WqTTCzqAEQA/5kCvXjC+dy5DgoXq/46A42y+Dm5jR8F92PN5Q+j2BZcwiWZURv/Jn8e11BVY
+AgVjZwqAsxVioYMyvuo0gLuGWbkAtkEm5E24JE8rXU2q7wCUvBKewBOORIJUbBU24eXyvB8xDURo
+HcSruA07PH5lZQ56g0TRbDaQ7CheA6h1TM/ssiLW5WzysnxVXq8aMSNJ5qlYi1qyi3xNwauy2qE7
+4u2JMhQwjfCtpLN9A/OVlQuIF9zI8eLW2JwYtKc+2DLWZi+oSvVQ3+QQTuqu7m8kgiEQCb7aAHOG
+jjYk2EJbgEEipAco7/Jmn1+ITQJwsk1QMbvWJH+8YO5UPEXuVX6ErhV7wEXUgSl9xDhvRP/AdjX4
+tIYUUKZ0YBaroYTXe1KFQ7zTeLgRA5+NqgfOTYolJWX95N4UIds1eOAs823mpUxjrlrWgMGz/WzW
+ePThbRZGiABISC3/+y4t80jzHUKpmQX/26XSPgpQSoqgxhPhxgh3uSWEyGa/vY4xVAgh32Y/6WZa
+F4jg4LcrAKg4wW6S6BI6fo6TuFRtZOck8NEVejEPiZxbuIUDwIAYOGQJfoeCU7gCvwC+hllWkIvW
+gi7RgsuZXV28VEReWsQTpvOC3LhPxhpDWQR3iJWklZ4Eh657jLnDI1KHM7xSvAcpW+ko6prpERSm
+20yUJtdiG1TJDELs/doPsq7bGxBR34P/qdgD7T3iuP0cLiONUxyr1Wz4ye6cZPZmesoICEgA2dLU
+tCrjvV2PM3buIS+nHb3fgDgP/g3n6WByxj2JKG9D92O7VgWYcfkLnW6ndbyFkeJ2VmAFt2SxQmjk
+QPCDQ6BvUdjW7SSpRHz31cVZwK7kQ4ymFxS2VNKQd3CHhZMVXSKxpq0kTcKgp6UY08jMAxWpn2tt
+IP4eAL14/lwNZAMVOBUz7rXt7sHlSA9qRTiAQn0tV+4yKD7taBPCXSazRR107oKDE5hH+8qr87Ej
+L/kKS00rIFe7nHdu3dyLD5icwdWrhUDGoOSjIfDfLhFDpE/66RCorkQIFjKdXDi+6psC/+ja+k5Y
+sRhQ0sh2BLkILcAj93fw1Qwed3LHWUumZBJ+KosuZVEgAKTVz7VwMjbg7FgprWcZqYQDJXG9x5fM
+PVEcadIq5QRi6d/9tU6nSQQFAolheDBkhoai0XhoHiSnjDITOWQyJ2ME2dxyt96k4dREei4eyWVN
+8HgqVSTXSkTexHjkkT48HuV6YVonHj8TP4iJh4uJhhOLFiE1hjU1HR8sEywsNR81mqCbnJksKxam
+Fqkrk42trq+PhoaRIZKVn5YWHysdMAswviswLLUhH8cfFh0dvxswGw8bK9MQ1dYoKBAEGR4r2xLg
+4WprI+Lg5SNrAOAY7O3tF2rlauNrDv8OJ/f69ycnAvr+AObDl68IGQPh3Cg8EyGdGg8jItCzEiFC
+PAnlKlKREyEDOC1elFQcuUXClYpcqISkEq+KSSF6pCQ54mXLAZt5aN7c8keKEide/HTso6cOTyN7
+bFYpU+GMhDNv2ngo0kRmEidciGatsyRrkaEGBG1UeYLAq0aMHsVytOgRMkwsMKnNBKrGpkfEioVI
+ZeHQ2b+u1CKy9UmWoQ+XlvX6tcDTsRq64i7TtWLBBmeXV0CYphmb5xVphEQAEAMAhhgSIrSLgRrN
+xXDz1qABQBrchXWlZUswLQEDBn78+u0bTrBfPyoZ1jiVQACNGoseKoL7Gu/CyHAXaab/5gnGywXk
+VEyOCKsRLPKhUkZuRNgSYVihYa9akXlFCZ4/VWw6OYBBa9gyTMThUx9WSHDTgEPUJIVM5ChHwIMV
+QGCVHGVglYcYgtTxhxwbrncFUhWVZRgssqjll2GxxPWWKJqQ0iIpmbD1yC2A1YjWIgREuNk0MKBg
+AQvKIMPYMp10YExjnbxl2WUUbIBDZ9V4hkKE0aUjGwC3SYAaau/s5oY62GmJxkIXZCSRbWtoCcVA
+wuFzz35I7HbBgws9JZEbEVkHTkO20UOPROWQl1o4KiG1XaEagXSSRiZV9JV0HX3oqAEjeIAfHV9N
+uNFOSNF0RU9XjdEOCjjE0dWpFG66/0QXf1C1KlVFNHeGdXOWY+l8TBCxh3+tMoHrrvGltMSnd3wa
+wQkoOHKWX20p64qKx3AyQQeVgBKKibGs5ayNNS5SwbffZjMlBCpeYsEvyqzgmAU1LHDJMUF+sOQG
+FayQjWbWVIBNU7JZOSYBtM2a5jhW0tZbb+2cGcOYs5YTDzoXBNdPgaEpRKdCBrZ0zp7S7TloPR6P
+IPJ2L0nUMUnkdWRSylqcpBJFIwnKcqJGjAfGSX344VNHdHyIc1U3SQABCcVoZiBRFAGrcx1lIAfI
+TUUNwe9Tb0zZxoUAijGFTD/Z4R+vSBy1UWpYVPDDJ9m20pZgsEDbSSZ20TXX3NjWzf8ttxPQosop
+06ioTC+KIaZMNr9cIlkHlG3QJGenVGMvBBHKyloMq5kzpmxlPpyOB7TVptrBGEiknMCyDbGbGg+i
+cXE8eM5jckXWeXQFyR6LntprkLZUkesmFbHdmTB1BJZ6H7LcFUnXzW7SWOm5rNWA63UBIQEaoBDC
+BCGIWwFMXW1tH4I5Zb3hHAZUadH0BKCwYdbkJ+hHgj3jYR8fkUZwg9PhdXQCBMo2q0haI2rFJt52
+jB/AhS4uwguzEKGtE93tL3mLBF8mmKRjBEMxy/jAlBbzLsRksBceeFCOsJGjb+WIAE+ZzTp8sxvW
+HMw1TqkORqykENqUpjS4UZ0bDCb/wtThiRxQEV3mWqKxLdjKIqkJC60+RrblcQyJaeqORD60J/K0
+7AoZeZkRkvge4QViC2UyWReH1SlQjU8C9epMBS5gPQs8CHJwcBV9qDK+IowvCYIAEH7EgMLbzQkF
+abiA/HJFIAoNcnwZypnYjLWoijhgBShaC7PSoi20yEURmcAEXPCSQLT874HdmkAlCCOJWhwjMTBQ
+DAx4sYwVJEAYvsigB3mxgNt0DgBkyhxUZuUBHPqGhb/UkkIwR0xb/rBMDhGZv9IQnT+N4xyvSaLG
+rFQ/cagMdrZLzQEe5jE/hWcj6oGJR5CiyGCFQSMqmaJHjrW8oXCnJ+68Y4LweAAC/4SgKW5gjinW
+mL5vGcgKTSuKHWcyhfj8xD7ktI9zzmcNbQxSQ1EDFlcQWkj0dGdRVzwBJPsnmLV1tG1nIWACOQnK
+kt5oRrcYZQhUmUpa8kIZfKHAL3zhLg8uYAEnFGEAQljC5ojMNQy7QAUAttOFYMmoCFNNOw6WkIZp
+LnPPIQcKDVAdWgFPeUiE3Rpmch5resSaU1zeRdRjspO8JImTKg9NwiYalJAtPIfSnfB0titP7SFT
+SbhADTSARKHZC3VDJYCp4gDQpnGNQ4BI7FeQFh1aecAGIvMAYv/z0Kv06msGuF9mg2VXL8YHJRr9
+n4lKVDf/MTBbcWEBA5MxCmuBwv+kd3OgKOt2C+wtI5U3nWkGp3EuZ/gCGLm1jAbAFdidBoA2JRwq
+Lo06Atpczkoj0yXnarPU3nBJDVjql0NYpznYOQRQe5KrmAAlutd5bKvkaIhzbhK0hqyTrMK7TojW
+2dbtvGdTTgPDoWanMwUdKAwDlRQWRjCNChyhXhCoDp3iWAYBhaqQEeXDqTxEhKGmoz7yEVCrDgq/
+nnUNopHaY3lAQrwxQDJbHWVFaVfMScRgwhGGO+BdRvuKTsBWbTLCViU+gFvgXhBxe7EADCgAjN8y
+ZgPVGG5giUun5B7XNzbEAG1O49xiYi6EO3zHat5RGiw3JwKzup1tTDbmM421T7r/Q8igRqKx6pRk
+DeHR00ekkyCVWSdlJJnPN8mjEig8YYozqV+htEBOkOTsvgllYzXakA3WMadSKATaYrtyWSLY8Svz
+q4mltxkpmE1RJO1D0IIOiekr0kSK8AXRGCyQ47SddrR2m8Bb3mIi1qa2EpsIYCs0A8EHwAACH8Cx
+aGWENrX8FrgLOFeya/GjBRDZ2UWeqZQSAIF9mfCEboCQcjuHQxvi8nLF3ByWd6gO0hEzI2mgVJme
+Y4V5fOQCMZDvmi9iHeGJzGTfPZnNaAcpr7osZq9LFHI4dShUZyAdKENJGTs1UI4wRyr62oZjubFG
+XeFnVwClwofhBwgAJ+EOll0P/05iIumEDuh7n4rJWIYnhFPjZwsnYLWMltWKYs9lRcnY5IyitYlN
+Dtsvl4HgAVQQARXYwIGeTFtpnX1TZFfGE6b8gOIoQPVnbwAFGsg61rNR7SkN9dpSCeFQp0uaW3Zu
+3Jy7Ujw6B1Ry/NRfr7HS7+idTY/oDhxf3ZPdv5NNc5hMkCX5XTjEiJApXtOKxlOry5DzO0G/FSUY
+DRsebLIgi8xjSlt80BAeZCBghSQrGofVTIRlx6AMlGebzgNFRX+EO1QlQ+AzVthOBoZi2WSjgQkB
+YFIqyh3P2nA/UosnRPGYV4+2BgSwwV9qIAIb2IAAKsC92li88x9YoEk0BQa1fP8/AWdTfchUvzq1
+k1w9cFm7hyK02LeKmstl3rIdpMkSa5ZLuu0+M4rPwUia1u0SvysR79uRJuNRPkYQD/lDe68jXhLB
+Ho1ygO8lNndGEiuDMvnXKO60SIoSUE8wKB5QDZJlAAQAOYRQAZlFRw1XSK9nUBKVM2slBj6Dgi4I
+UE/DIf1FV6lyaGT1O/cDNZ2GArg3I4fACiFlC4RxOAswDZgQJBkUN5rwYqX1AyuwAQQgc69gASbg
+AS5gAyqQLIpwUidiInKDGM/gCxuAOJawDCywANEQfs5AAdSmdVjHZBCyL+gnFbNhMQvxJbJRQ9xm
+TC60G/RnHT8Vd2dGb59igPX/hg7d1Ch8N3i0V2ZhsWYfI19qRhI4g3dHsRPlgTJfBGbfcQMjBoox
+ESfBwlbJEULVcDsEkAAoNFU5MQactTQbAnPoQRQ9wQd+4Cr7oUc/oTQdZxUp91lH8R5oNVfpVAVv
+ZHwRdD2J0AlBOEG08Bg7pi6aoBifwCKyBoTYYn2PtQpnsQKE0HwRoHxdKFpPGBc3hRiyFgyowAzH
+VmS+RQHUAAFK9nXJZX6BFTAAsFO41I88ZYe5NDqdAw7rYHbZRgDlE14kswYSiDsY8UxC4G61Y3dI
+FB5bxJC+44jhhDyNNE5BcQJB4SHjdIxkIzxbBQZUNVdzNWkpBzMhNCchiAId/zEnkINCuTgsMnhX
+HVchraIUqyJPiTVRvdiTh4aLhTYExaJybfUh91MoGZAjIUSFZzOPCxSE+MJb7OIKk5A3HcBK0WIi
+uKBjHzACKqADXOgKFuABKBADKjAeN9KMNrcWLACPYxgXw+BiM3IJLWJ9zYAvEPBKXWdCxPV1TOYG
+OxV2t8E5PPUljAlDYodlQdUgHLNu1cESHSMmHzECcMUngshEu2N5BrgwJhlIARhfEig823EAWYBO
+CKESZlV5KedWPAM7ohFRLdmCd4RGKJAab6QBV/AGITQCXZM0T+Mz4FOciLV6IdEz69OcPfEHmoVH
+3MGCXbRn6sFnSgQubUAAW/+ZN/iCDSsQAjFSA35pDZCUla6QDEioCwfUe7w3ARtFnlLZChvwAzAg
+Ai7wAvxzWnCZUpNQAzDwfJdRZMDAAkTiLhjkLoVjCB2wAQmQdUqGdVGinYQpQhWqmGdXdl1Wh3k4
+fwxjbgzJMfpnDuNAZm11JskBVX5yXhYhRJ3ZRCfDRJEYEWWQGlGAPCiJKJEYFjTKSFuUak4DM5hi
+RVBjAPriAf0QATlCj+cTQtwzFvEhUUHhgofGFTPINFnDPocFKjQoneBBgzyRTi43mdqZI98pJVIy
+VFwXLuJSbboHJDVWFynFCSlFGBOAAkh3Fh6AnyJgAsxYjthTC7UldSf0mzP/5Qu7MC241SQDahkw
+gAl/SX4Uqi9eF1jox1OB5QH8qJjbaTFScUs7xG30BxXEVGbyoBuf4jAy1E0l8WlhAme1QgXlkBxC
+8Bxk5ll8ZD0hgJBzhhJKURMo8WccKR0nSTwS1gfAqhUXoA2LpQL6sgIaMALbqR8B9T4k9jKjtnqG
+NKSs9zTfkwVFIU9mZUcuFyl4Bin2dm2oqEZpiqabMSVS0lAzV4VCyECVkAp7UQzV0ox5iggocANp
+gAM/UJ+flDc1IAkzYqkuEAEmcAIj4AyL8SNPBwPRMHVVRwEdQI9wOJgBYKFeV4eX2lNhl4eeSnZX
+giVlBwDbeTuhEYmDoif1/2ar9fAwhWhWhfcUcAVNEKl3hDUEIeSDfZE3CWaay7Mg64EEF9Bei7KB
+JkOcnWI6vRg2uchGSxEizuqDYwcR82RQn1c8KPlgYYo0SENRF5JYDkZpRCoUxWODqoajzGGpbaAj
+8EqpaMp1XeeuXKd7geGNQKgIkME3fIMKsoV0hbFrF/CWE4AD7BKFIyACD7CnByACIoEGMHAKn7AL
+DUoATfIAnKs4nBupw1WPcqhtJsR+y3V2Ype1JIuHWOZcrnsbOMRuBngO7oV3DHkd1jSZeiKRGAE8
+HpMGvHMEYlIBGoAKEkQL9mIpEtiA6cS1FlgFYwGKabBWn5Ie5jqMXPoGrP93ADZAhyF0aPWxFJ2C
+HvjDWRrCRR5mpTIBcvARYD1JeXY1O2CRWeCxKCwBtz+bAF63v2iqL9VGt55BtxEyQdQwJVSoLRaw
+GTvCGYyzN6/2FxYwAg5QrzNiCiEAAdHRDy4gufOxOekDAbaQCtCXAQv7AM9HZBTbUKELR4MJtz1k
+XADzIPzYj5eah6OTh6dbQ8Cbmm57YeVTqitTRGjQok9Eoulws9LxLRCgN6qAlXyDDZIFKaFiHinD
+KYaCkmXyTV+LeOrkPpiSBlXRclUQIVYTafPjPlL7gF17xoOmiyLRBUxgrQJ2BXfQlDNYvWG6NDFz
+E29gqW5AxgDcv9gwoWz/Gi764r81SbpetwonAhnxap7V0DgQgAMe9Rf2In1sMQ17wav6YwJDVzX6
+cnVLTA2QlTGqSQCcCwxaF7pK/L9L5sJ1eFyKiaGgejGri4e27BoH9xw7GrO6EU2pobVUJWYPSTbW
+cQAId1Z+cgCfgAOOw8CmoEZtwAYokLQXyA2nZjpsFWj4YzuCpHETUpxrKxO9cwBg/AQxUCkLkSHf
+gyFi/DtoK3kN1zVS4Hp01CEBxhE58QffXD/dUXhYUE9gl23iMrd1C693y7+HDC6EfNAo8CA+6MqD
+7BkNJcmsNluV1IXMorc1l5V3SivJ8ZvPBzlVo8AV8Hw2UBH5aQIVAA0P/xqHTGZ+ZcyhnUonm9qP
++niQn3obthS7RwWZk/kxEYEd3nyZuuFHsTNW2JRVk2gAZ5M6FcA3NVlVewiVgHaa8JUf6GSjdcYN
+CZfNrIIqXusoaPB6ZKOaqol6dcY0C8iJxWNxAyWDVHq2KfGc73PXW5EB9xNikmKuTWA2D30xH2xt
+1tbC2VDILRwuLDyYCl0NxOXQ1TaPHK0JhdsKp8A3znxiKIKeZ7ObkVgRHsBqF7wZnxCFG9wPKmAC
+DvAC9USP+iK619axlDp26Qey34JL7PePedgGZjcbtnR205zURC0dHpEGYjQr0hEoDslEvPMaTuHU
+ITA6wc0n6bA5m7NGKv+5Mq6ZTlADTgqncRHRvAuSNDcZ3loTXw8CYDxJpPcRx4bmqzFDRmQ0cA+2
+BzdpH8eyBCtRP/J9M3vdMrCoAYiQlt/yxwXdv4bNvwHMZId9j4mtI4Qp03QbqVOie5HgFjJHuHqx
+FwIrSrqACJrBLieyF3/JWyaOrzWApGTQsA4gAC4e2g86mCDbsSMU2CAbdjRuy7es02zXj+qwMFhy
+f/emqppJq78sZynqZmcSG4JEMCz7MNU2OtUtdxHhRULVFCyzZvFlRRw5T9qRtMGDrHp9Rz6TafEg
+H0KhEZiSFFYxBeVBrmMk1h4XgwhFP4gUnRPGPOcqOwfgAAeQAIngDQ//PScacLeBLMgMXbcyntgO
+HiGI/eAHbj2yFgmVwED2GmS0kFJnkwyp8AkJvcD4MlyRyluQkdoHYAIC8AL+IAD7U21JZqkdG+s6
+1bHi8iAZCqq3lH6MOUwkCzDxZ3Yhkxq8a38M6W5wh3f50ydn0hEZUYD1BhGYgxFEVx92lz6KS9La
+gTLtZShSUOUIsZq1g0c6QR6qaV/hjOZJEAUvR+1m9M83SAVR8CqFRZ2WVrYWcl/zS8X5jMbodFcR
+ILCJ4EZN8cGuntBzq9gUGiVpKsDos+iHfEIP/ujZwCxCKEohEOolzhnFQAkzcj0WUD2wLdMrrMkr
+IAJU4OIvgOr/sNCU/zpcAVDoNSmYgl26GErLZIdLOm7DvT5d8wcATA6zZpaiGPF/HKgy4eCyrukQ
+2NESX6WkDSJIZfBHO+I42tAUVryZPLEnOyF7kYit8XaM5OQokPc+CDVoLFg8WFGLmXh6Q6EErhdP
+4h6lwUhRHYLX8ASset1On9IEFwDwzbidGnDtDXXQhmypmYqmIos+IDvTsEyYdPjY1Ojh+RKvWFfo
+r5QKi9BaecN1If/YlPpKa0QGJ6Dyqo0scvgt1UOHN65+62eQAXPzi3nDOx77pDkw1E1Exq1eGaHU
+AkiBLFGiffWQYNYQFaMj0/D4D4/dpiNfFxWlOxqlCrcGVcFnY09IKv/JZ6dmjJInT0UqGncAe2Wv
+B4tlRrdYingFcrnio6YJaFhgpHqDayswVMbLwINP2IVdpnMIrw+trugHBBUCAYIiCIdJJcFTMS6Z
+Hmm0gqxeqyhUEbKq/SYWy8ryWzmdqIpG2MZWNbgVyiMxRAyHk+OkhiqrljyipAanjggCAC4AFhsf
+Hz0CAj0ApCwxHxkLRy4yIi4kIiRGRiQkQiU8TC9aRSUyRkalREcjTG1fT3dRTyMypHA9ViCuhgYR
+Ays8I25/Tz8jDpozPvOa7/Cqazux7w4ODMQPrO+iqzPEq9UN1tPz3tvTvZu1w9XLx8fX78T948O9
+s9dOHkGC6P79kof/Z9wBCRpC1AgxZgWxKjYwPlBhY8OgDVqKqEkj0k1JAlpQLjGWZJCfISWRJFH2
+h8mxQCyPFTqSZsWPHzUkTtTyBotMmVVC+JxQYwwEDUkCJJKkRNKgm1OwFtKK6FIlS1hzHnoUI4aj
+RoweZbjQLJWoC51qjQrFtm2ntmyb7YqxaxQpUxJiNAtTrwkyrYeSecgbS1Q0bdkc46nnT1zcx9Gm
+Ua72S/K3zXm+scsASzPDg+zAVbthml2eG+biUf7nrrU4bPMEfjonzeGwCUsnhhCaAIJWWSJOmHAg
+QMAABCMgREczc+fLk8Vu0hyipSZLQyorIDYas0rVREOinu9+ZMUE/58+LaxMZow8opdbKkYvlt77
+oKhVkUHisAGnKEonAreqAJJGKqmEkbVsgQuVtXDRBZW/5JowQ1FMKWW0v1pZi5RaakiAmgtqQhCQ
+tT5xiBrYzIFsN84is62edLYJ5xeEbMPRtnYeo+we0N4RSJtfyJHNn9T4eU2haoYcsp+DMrgBx3Sm
+0UY3Gk/wwILflhJjIgucGoOADXIaQYVmRBDhgBcimAMlkopKxo+YoEBmJ7DEO4YrPw0DjwAABpUi
+AP8QPfSwkY7KDhD5qBrQPqkKPfCSr7zLiRApWrGkPwIvOOwYAGJ4EJO1WulLlrUMYNEOA9ziUMNS
+3rLlllfyghAWV/9q+QCCaFD0IMRWhA21iZeYuVEWtTazw5osX70ND76kUQhIcjIAR5oYdbvSx2bA
+aSdKIItMTUnZYkMN22jkcWedcEXTrR3SbgTnhAhwAEMiMcSYowIIJliBqgdsUMHgCG4QQQAvi5hO
+DToNTOaPQ/zQc71AjdhqU0L8hOo/RZmwRBFJHunY0q4wMQon7awSAoBDmTgUE0U9te7UTDJBS08E
+DzM2ZABOWQQXWvGC1a5U7HrlrV5GwUWtXTBUK69TRgjsghB+/STUEDm1wVirjlCMRsmOrMfsg16U
+YJpQYdlxxzxcVGfbfmj75IQsry3oxyyRfPsxh2rTEZ/B2V1nlHj/oLTyFytbBE2auytIagLhggvB
+XwhCmAAFG8IquBkXMhDBAS9RSoOoK4romOU9+8zTiYk5PsTil2Ru5NCoYNZOEQYJlf2rr2KS9OSd
+ag/UMFF/LuSrQhgpq2aemUeswQknZAbCVlh5SxbqU42gjl58kXUErWtxxTYys8H+6FCIXRGbG+GP
+XxpYDpBFbq31Fjwb2+jPBklny+EtapwjHu97VbioMZkkYQtu7oKfjwxSwCfFCA/giEECvjC5MU3E
+Xyhoj+ZasaY2ualNJhCBCRZ2hjeQxD5XmdR6ZEIHQ8zwZMeiYetqEp7ZKWESFwsLx5SwvJEpryqY
++qFOBHEIAalI/1SX2IRXoPggnW1qKxazWIg6UYpThEIFvVhWL5bGPjHWoS/lU1pbUpGOEaDPLXUZ
+1uzCw5l61CI3ZAsgQcymK8eYwzTaahySyPE2IFUQHYwbEpLwwZB7QGl/BljN/ghJI34UREryeNUe
+T2AAAuQLDMIR0xgetoKIWAAowCHGUzwQgxvo4QUEsMAWSkef+2DHUTs8iQ5TxDOucEorX5uCGnam
+PEhEamNVRMzuvEKo36EsUFHYFO82MSlf1jArDVpEFM9ClpppipdlYQQGSFW9ERiAFt2rFfh0M41Y
+fSgUgdHFHa5HtaaJgkxsKdaE1oeYZfANVqIAUjZOYSNrsWtaN/8azUGh1CIpDdQd4UgS4hQ6pXS0
+LSCm4UdABnmOhBypNtlCB47G5w2HJMA9wAmOBSz3MOHsqyItrcgY+CVKYtDyCiDhzhFcgtMsQKo8
+cKTiL6EnPLQsKBJjIdQxpqnLJDDIKzIr4nfQU1RrWpNU2yRAUntJoEaUZaq6BAAGAFOqrZ4KFKXY
+SyxQFYpVcK8V4KgeGefitFyNhi+4uoUFNDCNYr2FrxPSiYAm8wk7zHFsZtvSZEZhA3r9IpPhKsfZ
+5qU2bm2UMoQsEo4uyRp0LO4f99CSNz56G4PICBwH8ADAfhIUlE4EAkPAAUqZ0q+W6ic6QxkJxOij
+BunkCTxp2Bj/oHL5p5X91GNE5epZjlrVXRpTqber5k+DKVXeXcpTQhAWqK6rleDxMqvZrUlV0WIq
+XgkLMLRK2rB00ZcQPU0ycXkFrOaiNA6hT4zYs6/P7COib9jKbS8iJL0y6pZAwm2AcpyHjrbVrQiu
+yxqj8Ac9duStw1rrweSSI0MaPJp2HS5braoADoLDFMqx1gmvBcqYKJIf2oKktvQ5HXlmt0MpWHea
+Pw2VE7LL3R1WoRUxg8RQx+o8SByPee0j8iU+RU0kkkzIVDXLBWIQzBpjRYxh+dqVuZuTcC5iWHBJ
+FRZRERi4TAtCsgCFLkJxh1dgyH7VawbWnDGsVLTvKHTQHx1t/7XHXFBDR+mg0Nn8W1HSLGSQgbNw
+kBbZ50XmY7TNsBJGD6C4wumNbtgABwHIQBEIoHS1rzxJAki5L9mmeKYsnlMs21CdnVqHKq2umCGA
+1t0bQ7e7NZvyV6NM1KouCJzAZUntIMHVGxoLq3/1ylCFpetGTMqazhNyIwATqihMk9g5RsZZQuRF
+9u11e6Nh35mzveda9DND8wTfKTxQAwhkg1O0wqrXyNgXadkCoJtRCACxESq6qpkhBbYGQnCEYQzD
+xluVpaC8SOOufzJ4kQ/GDTv+doALbFrTMyWlUAigAVECJaaz1Q9KaovbU+c0Oy/GSXnwu56vMCLj
+uYxez46liv/uGgqsu3627X67O2XfnEHTDiovoaLrGko7md50RKjMAjRpE+LKXNsaYhaBh7mECBTf
+phovmiaiC8DqezuyDIZCoZa5pBsCLiI2sUtRYHXAwhd9abCN/Pdvb8BCBany3z8l+qTHRrhG/lDc
+vDy69Wn4CKPtYFWSKHjvzeRjHoCMAAESMKb8zLQLxDgCiD1JasqHHJYNewOrsSAS7bwk9Ex4IvJY
+wuMY5wQV1xUCtYnFS0VgoMlH5pTPlJ37r0pgCFyztoqWyDMsR8F5x5aiV8gC+6yefQpKo5Vbxky1
+OW/RnxK4ASroSkcLydd7qIiACkpkAFPcfi7POOOFnwQuzrz/qjEKQSxdxe61y7LLf1aC1WUF+TaA
+UxJJCu7MPGYDNxjqSOjoNMABACiu4j4uliAitTxJxVYMPyzixVyM9GSsOzSmDpqoyArh9YTFvDQm
+Ra6q2p4uK2LGul6uBLtrUMBp14JtQZwnbFjh90Ylmbhia6rt9orlMEglvMrC6BZBAiyh6X7PYkBh
+rbaIfZimFCQkoLDOgNiCF2RlRPLiFzxgAnAg6/zpRWLBbOQNAP3GfxbjbDikn7SGFQzMoCysSJyl
+kX4kgr7lR9QO3wwnIDLjffDIMVokkyCP0yCQ8nRLCzTgk/hlgzgoJKKjg2BJ9D5vO3IKLESwJoyA
+WHosCXCQ/lOQqmcuZASAZkJQTniEyah657pi741iT+YGxQV17wePirscQQirCjDGyjD46uV20PeG
+ANoYQQi96QdLZS+qKRi3Ci7ETpx2oetMoQvhyS3MpjHcqwrfqRtGwAgMqozkrRnsh0bMrFuqUC4I
+CqAkQ7DaxszcsFs+A0ba5aN6hGzupcCOpPHSETPcz20ei28+YZMiwnIgcAGjgzj45QM6jhhmyqVm
+ylF2Yk7w5CaIIlNswrqYjYi+5vWW5+WGsH1orzxg8KsaoQWFsAWXjZee7hIp8boSgVScTRZzDxkU
+ASU3kheBZiwwQE8o8RJvcVhG5SWFENlG8UDG6scAIAgAADs=
+    </current>
+  </image>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/sequence/sequence.py
===================================================================
--- /tags/1.6.0/examples/zoo/sequence/sequence.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/sequence/sequence.py	(revision 6168)
@@ -0,0 +1,67 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <dequence> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+from PIL import Image
+from io import BytesIO
+from Rappture import RPENC_B64, RPENC_ZB64
+from Rappture.encoding import decode, encode
+
+# uncomment these for debugging
+# sys.stdout = open('seq.out', 'w')
+# sys.stderr = open('seq.err', 'w')
+
+
+# rotate image data
+def rotate_image(data, angle):
+
+    # bug workaround in some PIL versions
+    def fileno():
+        raise AttributeError
+
+    # open image from data and rotate
+    image = Image.open(BytesIO(data))
+    rot = image.rotate(angle, expand=True)
+    # save image to a file in memory
+    memfile = BytesIO()
+    memfile.fileno = fileno  # required in some broken PILs
+    rot.save(memfile, image.format)
+    return memfile.getvalue()
+
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+data = rx['input.image.current'].value
+# image data in B64 encoded in the xml
+data = decode(data, RPENC_B64)
+
+nframes = int(rx['input.integer(nframes).current'].value)
+
+image = Image.open(BytesIO(data))
+
+outs = rx['output.sequence(outs)']
+outs['about.label'] = 'Animated Sequence'
+outs['index.label'] = 'Frame'
+
+for i in range(nframes):
+    element = outs['element(%s)' % i]
+    element['index'] = i
+    element['about.label'] = 'Frame %s' % i
+    rdata = rotate_image(data, i*360.0/nframes)
+
+    # Image data must be B64 or ZB64 encoded.
+    # The next two lines are equivalent. Can use RPENC_B64 or RPENC_ZB64
+    element['image.current'] = encode(rdata, RPENC_ZB64)
+    # element.put('image.current', rdata, compress=True)
+
+# save the updated XML describing the run...
+rx.close()
Index: /tags/1.6.0/examples/zoo/sequence/sequence.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/sequence/sequence.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/sequence/sequence.tcl	(revision 6168)
@@ -0,0 +1,49 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <sequence> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+package require Tk
+wm withdraw .
+package require BLT
+package require Img
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set data [$driver get input.image.current]
+set nframes [$driver get input.(nframes).current]
+
+set imh [image create photo -data $data]
+set wd [image width $imh]
+set ht [image height $imh]
+
+set zwd [expr {round(0.5*$wd)}]
+set zht [expr {round(0.5*$ht)}]
+set zoomi [image create photo -width $zwd -height $zht]
+
+$driver put output.sequence(outs).about.label "Animated sequence"
+$driver put output.sequence(outs).index.label "Frame"
+
+for {set n 0} {$n < $nframes} {incr n} {
+    set frac [expr {($n+1)/double($nframes)}]
+    set x0 [expr {round(0.5*$frac*$wd)}]
+    set y0 [expr {round(0.5*$frac*$ht)}]
+
+    $zoomi copy $imh -from $x0 $y0
+
+    set index [expr {$n+1}]
+    $driver put output.sequence(outs).element($n).index $index
+    $driver put output.sequence(outs).element($n).image.current \
+        [$zoomi data -format jpeg]
+    $driver put output.sequence(outs).element($n).about.label "$index of $nframes"
+}
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/sequence/sequence2.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/sequence/sequence2.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/sequence/sequence2.tcl	(revision 6168)
@@ -0,0 +1,70 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <sequence> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+package require Tk
+wm withdraw .
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set func [$driver get input.string(func).current]
+set avals [$driver get input.string(avals).current]
+set bvals [$driver get input.string(bvals).current]
+
+# remove any commas in the avals/bvals lists
+regsub -all {,} $avals {} avals
+regsub -all {,} $bvals {} bvals
+
+# change "x" to $x in expression
+regsub -all {x} $func {$x} func
+regsub -all {A} $func {$A} func
+regsub -all {B} $func {$B} func
+
+set xmin -1
+set xmax 1
+set npts 30
+$driver put output.sequence(outs).about.label "Sequence of Plots"
+$driver put output.sequence(outs).index.label "Parameter A"
+foreach A $avals {
+    set elem output.sequence(outs).element($A)
+    $driver put $elem.index $A
+
+    if {[llength $bvals] > 0} {
+        # one or more B values -- put out a separate curve for each B value
+        foreach B $bvals {
+            $driver put $elem.curve($B).about.label "B = $B"
+            $driver put $elem.curve($B).about.group "A = $A"
+            $driver put $elem.curve($B).xaxis.label "x"
+            $driver put $elem.curve($B).yaxis.label "Function y(x)"
+
+            for {set i 0} {$i < $npts} {incr i} {
+                set x [expr {$i*($xmax-$xmin)/double($npts) + $xmin}]
+                set y [expr $func]
+                $driver put -append yes \
+                  $elem.curve($B).component.xy "$x $y\n"
+            }
+        }
+    } else {
+        # no B values -- put out a single curve for each element
+        $driver put $elem.curve.xaxis.label "x"
+        $driver put $elem.curve.yaxis.label "Function y(x)"
+
+        for {set i 0} {$i < $npts} {incr i} {
+            set x [expr {$i*($xmax-$xmin)/double($npts) + $xmin}]
+            set y [expr $func]
+            $driver put -append yes \
+              output.sequence(outs).element($A).curve.component.xy "$x $y\n"
+        }
+    }
+}
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/sequence/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/sequence/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/sequence/test/defaults.xml	(revision 6168)
@@ -0,0 +1,2223 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>sequence</title>
+        <about>Example of a Rappture &lt;sequence&gt; object.
+
+Sequences are used to group together a series of output results.
+
+When you click the Simulate button, the input image will be resized several times to produce an animated sequence.
+  </about>
+        <command>
+    tclsh @tool/sequence.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <loader>
+            <about>
+                <label>Image</label>
+                <description>Use this to load different images.</description>
+            </about>
+            <example>*.xml</example>
+            <default>Logo</default>
+            <current>Logo</current>
+        </loader>
+        <image>
+            <about>
+                <diffs>ignore</diffs>
+            </about>
+            <resize>height=200</resize>
+            <current>R0lGODdhkAEsAef/ABokLh8jLhsmMBwnMR0nMiImMh4oMx8qNSQoNCYpNSEsNiYqNh8tPCQrPCIt
+NyYtPiQvOiktOSIxQCcvPygwQCgzPiU0QysyQyc1RS00RSs2QSg3Rik4Ry82Ryo5SS45RDA4SS07
+SzM7TC8+TTM9SDY9Qyw/VDI9UzE/Tzc+UDBDVzRCUjZBWDpCUzpDTzNGWzlEWzdGVj1EVjZJXjpJ
+WUBHWT1IXkBJVTlMYT5MXD9LYkNLXD1QZT9PakNOZUFQYEdPYUdQXEBSaEJRbURSY0ZRaEJVakRU
+cEdVZklUa0RXbU1UZ0ZWckFZdE1XYkdZb0lYdEtZak1Yb0ZdeF1aTEpdc0xceFBbc09dblRbblZd
+ZFNeaklge01gdk9fe1NedlBjeUxkf1JifldielJle2piTVdldlVkgVplcVFog1dmg1VofltmfmBo
+b1Rrh2Rpa1hrgVZqjVpqh11rfV5qgmFseFduiltuhGFshF1tillxjF1wh1xvkmBvjFxzj2VwiWBz
+iWRyhGdyfmJyj2tyel51kWN1jGV0kmh0jIVzTmV4j2F5lXN3d2R4m2h4lWd6kW55hXF5gG14kWx6
+jGV8mGt6mGl8k2t+lWh/nG9+kG59m22Al3N+l3d/h3SAjGuCn2+CmW2BpJR+THOClHKBn36CgnKF
+nW+Go4aDdXWEoneGmXqGknSHn3OGqoaFfXqFnn+GjneGpHKJpnaJoHiHpnSMqHiLo3eKrn2LnXuK
+qX+Ko3eOq4SMlHuOpX2Mq3mQrX2QqICPro2PjICTq32UspKRiY2SlKyPUYOSsYOVrZaThZmUgI2V
+nYSXr4GYtYSbuYibs4qdtYeevJWco42dvI2guKKekJ+fmJCjvMOeUKmij52kqZOmv5apwqOqsqWq
+ra+sn7OsmLuwlq2ytby1orS4u8S7oei3Vcy7obzAw9O/m9LEq8LHydbGp9zHo97MrcvQ0+POqubP
+pejUr9PY2u/Yrdrf4fbetOLm6eru8e7w7fD1+PX38/r8+Pn8//7//CwAAAAAkAEsAQAI/gAFCBw4
+EADBgwQNJgQQIADDhhAfOgQgcWDEiwEQahQ4YABHAR1DihxJcgCBkiIJnDSpciVJlx5BirR4kGLG
+hBpjEuy4UefGmgIo2hz6kCHRiTYjCj1KsafPnwlv5vQ5c2RUokmLLt2qtCjErlmHfpX4taHYhgLQ
+/uQp02PIsnDjfi0g1yBSoUi76sVrV67fAHQLCB5MuLDhw4gTJ25IGHBDAnHJ/p08l/JkrxMdmjUr
+cSlczJZDFxhAF2JpwKcZL8ZI9ixev0aN3i2bVLPnrZ4dFsArcLJgxqgFtxyu0gDx44MFqEzr+Pdp
+AYEDECg8nTFD5wFYHm+pvSUAAkKh/iJs+lHmTp0nxQss0IBAQQMCjCsnLnx4ge348X83YJx//5bG
+IXfdWaxpJZlZ4EmnWn3TDYacfwESBwCD4PlnEH/elUfQdCfdN+F3CdrW2W1ZZXYgYBMGBlmKpf2m
+GmoTAgZdYBRKCGJ8BCVmkmK7qUSYjyo55t50FCWYFGQ+TjhAkdLRyOOTUEZZGGlQgscjlYItmaVw
+UnZZ5X2MqaSVZpHhZpuIId4npmENKuajl4g1CBqZtGVGJ2u0gfchmCICNoB0Ppr2oZUeqglnAfPR
+pyaI4HnnoaONNpoiRXQZFZhQRJZGJWQ9fueppLsNymF+atqXH3L0dbhddxEKWGqK/kCeKqaso9J6
+HKM9PgZAAyJyNVZDvOIF2ZlGcfjprLYyaqusheq5q2zQblZXbK9thuSEw4KKLYiyXQuYlccqS6qE
+w30HpnCTqrhndCtWB24DFDHgWJMgFvqdgpzqZhZdnJo7WHCCsajiwG62aajBiXHIZaOLjlovkcgy
+rKJ3EW8nbrnVBSznbg7Ju2tzlSoYbQDBPkuvgqHel2unkq7Jr6H1lvpmnCrfCxmvmgXbK7Sy/TpW
+vQwFaXK+K/L7Lb7f2vwoxA0C+SNisALKaZAtvfwpi57yC6+ux6JGb67Xbps02MciKzWjQFdsatUy
+MzuqymoGByKM59KIWqROOimw/tfOHWaquQTAGzKm9+4G79ZIwsvQ1iAqzkCMmaoc3OSLSt7mmw7j
+p/LGYj7rVWt3ckWR4hEF/h3iDinOsM1Df4oioQEPZi69tvYYMeBIUp26sRmLBR6vDZRW7m6G21wd
+APIiiS/kS5+dpJxUM702qstu13DGLTmPMe9qSy/uxVWz3Xl7z8ob/G6P2wavkZyN/hhE5FON9vYM
+R6q5wqneGv9mh/e6Wc/wmxNmnsU+XlWKV0YKleCk8zHbiQpQD3Pa5sLXJPaki3i5+5BDMhesxyFw
+Kwg8muka4sF7oS5r9vrXxmJXKENVEGAzO9hhzucguOEPboySGqdqRrVzia9W/qU6WK3CBzcZekhB
+XAMT8kxGsiIFDliEkxRgHscelIHJWLLj0N2aZirqPA1dUiPdAMWytf/NBmejK9JD1uepez2OgB8r
+1rY+pryqwepylWsTyTbnRsgwAElxa0+gGkRCiTQKWK/zEB1DZRTFlY9oo/NekkoYK+1FTGY1IkCA
+xFUADOHveUt7Wf0cpMMtcumUNkRlDRUFRAL8kW3PKs1Sbha0pQQLZx6LUQS1yAB+YS6Ihpqg28Qk
+yEbq6XdkNJFYPta+iOBMdSRTkCPNgsZntYeBvgzAK7/1tuMYoG1mgxmyqBiiWT1OTB0z3qxyWIA3
+cgpe6bNTkTzIQFhhqz2//gFkN7m4T+J8szia/I8/Bbk2YFaNnOTsYvUWSiHjTHCVn/TRBz1mPrG5
+c0Lrayf4bLe+IaJqgv5RU4T42MSkMK6JebGJzqh1uNdgqpB6iuf6HJk825jObIBqWxADNwCH/u5+
+NlTQK383MGRG04PErE4vmUS+pDxuqX8MGQN7mdMr6jR8XKxhMOuDz+B51TD4NNgnHZQ5q+bPPkJs
+ZT8P2s7AqUmQcOtlL0n1nfT9EUXl69G/AGcuFr1NlDF0mn2+yR72uPWrHMplySLJl9SBrpH/q+bH
+3sgree3uXhuE4lOzldNdhbM+g/nmphZG1oKO6ltLE9wEHzKsh94xY+u7/sgxNRo2SElQiDvF6hCz
+NByTmARCHeKPIDFEUKz+SIJuve0vDavVpp3Pq9Phz1vvI8gGGCesBjjfzBRmw6bpNX8QjegPxbe5
+9njStydJL3ItiFGUljSasWmpY1VqS86AxWTcktcbyeTE6QhOYspqGwN66kndbg60P2wW7rxT3KHi
+tlzlQx6YgjeR4FUHeLnT7Vg1HKvSajIBmvQve7yagOyOxrrf7KqFY5VgIIXVmyphgEOJK+OAqrdq
+B2gAiNtjEuuyhz81ZkAD2tNV48h4qHClz4trhTyPsnitseoldP7ZgAGQOMS7bfJdpomUMkYrLIhU
+ozbnRuHspS9lP20a/gGrRjJ+trKTBgAxSJ12zrdaj5/BxJwBO8zH+mjGSp1jLwRtEqQadTTPeBSi
+g6n7Y1eCJEBVHvJhrSxSBJ9VJWENngF6+VXBBI/TKvOqkL2a3SHfJ7v+jfSATW1iAxBY0tAtLEE5
+3aa5DgbUGvO0KbXLtvqYWJNhPbFyPPJV4Vp4lRoFFqYbKRTFeXm+KkWQY2drJUB9K4RsBiR12/jE
+rWoyqgY4ADBXLFEZ/pKYzQVSgJ/MxTbvccwU9hfytIlo7nYXtLnlkAFDuxxXX9Or1hVAlacj8IL3
+csTeJUywhcNrchfH1bRmzx+jGtA4F+cACbDuASA9nT/yJwEDYIAC/hSQAAWcpD0ybquMS21Y64q4
+nQ69zysdzm52G3ZHDRC4YP5Imn/69rotmavCGHLOYXmOmUURY4WL9bs/M5rehhuODmVXXEDuCpPF
+MZTALX7V4WhXmGk9lcL/isDjQBB4RQLmnqxXdIofp+zC3OOpU+ynBBwgcCA59q+BR10fAZ04RMZ0
+JycOZ1MHbsgWzu6MO3kAjDeg8Qmwe4njnAAGND7O34x85SOvYwUcObsDyLGnDRtQIsP5j4gtLL4d
+fsqXG2rF5k1xO60LcPYIHLpErE4Y19jsNFLT954jXZ0ndE5sAZZCLVQyYL4eOLeC3vRzJbLsR/VP
+TDe/41gf/YqJ/svFgwOvzVoM0opldri/tpCszMXkgRcVVa8KIOVupTSlJc2ekPv3r8MZqfXdytWT
+1PjhsGZdnPdpmMcADFBiDaAA4VYAmhdnCrhpbTViDMiAlBdn0pdxQ2ZlxlZ/K9dy15V9EehKMsNp
+8JFy2tcgBvdbVuZ/VoZ7hvNKfFEbBhIbjpUz9/IQd3UzQ6RNYmI+plV+VyeCB7YjXPJPo2F9hPVt
+hbdwDUJD19cSmmZ4MudcxKFDlRUj3eVHumFQKBc+5vVc+4dWtIUl2RUArRZpHQFX/SdpUKh6pkdp
+bkVr2bV1DSBXDxc4HseAkSdkCVAAByBjJVdyI5djBzhklcce/hsXbgdogYqHeZNnfUIWYyE3YgNm
+bMUBXQHSeiGmXUNGMl1YZRlHAAgoGBg4AJFHesLVScXkiadTUnH0fR8jRp7SRM4GOHtmH5NjWcdB
+cRaUXJtYasBWWDsmXfhUKt8kXYkChcRha8JEUO2Efl7nNPS2RHcVVdG0ZPaxOH3XVWhVboZlfAEF
+cwSQY8FYZYKhc5HWfIiyXZjUY/eXYhbYZlGFcZoXef5VcptGcq5EcnYnZHyYcUAGZCWHcQowYooX
+OJsmgP9YYpGHeRR4UAbYU8Z4WDG2iYWljPUHh9fXTonIY5i3gJW3aSkmeL3XUrc0G+6jUitCdI/B
+JcQ3GOTz/kdLtFXHZmES9oyhJnBpeHcoJmMWtoImBmuqmHGkp1wheJGyJoIB8kqnJHTEQxcZ5Urc
+IobK6DSkIXifFnhYpm/H2HidFIoUmHmJGHLQQRoriHpe6GnJhSFCdh+VRwD8qIfWdWSAOJemJoAZ
+90eRx48GaAD8qHl8eIAkh2oJ6JcIuHIGeIB/5HlD5o+bZoIBuJYmlpRE5lU9F2enJpQFaXe0p2M+
+iWJz6Ure5V9H54ppxDj0ZU2zdGcdxzdFOVQNElVjd32C0x52Z4EU2FM1BnPGcZX/51mNRmuYg5A6
+V4lxKGtTeGzTg0Wjp4m15iBoqWkAVXAuJ4UmcYCT1x/2/hiW9RiW1TcdVxli7wcfOUd70hVy+ASQ
+2fWH7DGKdUiPJeaTBtiHiVl59BgBEeAAj4mdJCdkjphd/fmAgeiHQIZiXSluDHiANmZl6Olyzedq
+nTQa9meIG0dyVYZ5OaaADBldIumXtPeMjblsHoN2vqc+RxdHuuGECvcqn+ZgiVYqsKlJFCgct9me
+kzefk3eIQRmbX7mRCCZzDDcaI6mK7URgO9pLMfdkluZ3/Ldo0bcr8fGHCtl8sDeXx0h5nheQngeQ
+HoeAm7ZxOoZqLSdi/yRckEddHkeOvZSIlqcAjed5OCp5lWd5QCZxluePDGmACThydVh5CliHerh5
+QqYA/jqGgIIYiHC6aZz3fPcxf/ERiZ9pWAlpoHt4l6xWcvMpco9XYgq4m/0RN5RFiyVpUgwET/1l
+O7CJb2rpcd/ElE1DeCgmpXAWbkCGnRZnefhkeTr5YwSqji5XpmnVU7S5aZMokivnH/cXcTvnUyHG
+XCgne6emMj3Vgn2ogQyId/7ZYwXQqXVoYpXXgrwpcYrHkCBGpbHiagXpk9dVoXe3j5PXTpiKqYRq
+eX54ZHM6gHv5cZ1XeRGAnVKagCEZpiVXh4rppQbYqXlJsJg5cR/pHznnk+ImgrEXZwh6ePF5avoY
+Z4m5cXJ1AJ5HqI/npqaGeqJ6dIjHbKojG+MXPT/G/oZDRFgSl6yiSWr+NlfGNpg+Jp8t52kfZxwY
+WF2RJqmvJFzOd4Q++4yoVomNZ4CiSVZMGYWqiGmqdaz+tWnTYY+a5LFf6ogxtnI5VpNhOWARurWi
+uXFvmXFTZqAHt4Cj0ZCHKHnZ5ZP02Y9HRo+FqmOF2qZwCrAFW4j3GoibFwGCuqmCKqf1eKwEiXHe
+6remNnmmCHnk6pnbqrgeCnOESnlIupcDGbCQ558Q2ElAUk9DZktnYTquszny8lYsYZepFnvP2HHA
+9n5WFomT+4fXpXiGqHEN6aYjt56Hd6wGal7vJ2vtIXAnh3ol5nymd7eFYWSgVnEoV13A5rAJSZ6B
+/mNy2FmoppiXZktYIjd56aqI/PinI7et3gqQCBk44gZxx8iPfmlkiaihCrqe37uIA5moB0uXhKp5
+fCqYWypy2PkAg6qYBviHgClXgpqYDmB5h5uAi2iAKsemgMmlCrumnrmom8l5nuexexuYkecAe8jB
+cgXB5lOH3oJGHfVTzplVmKZ4PGfCUtuXLMeo0kWrOkaQIAaIRuaX8/l4B0uI/sHBFCu/lWi1hwds
+JgFioce6dXqMz3qXLQeaKtFjD6tqf0pdwyVpVguIlweXAAzBfsq74RafE/endViYEAyg2dWHA0mA
+mua3emmhiUh5WjuX/WmI4TZyGZcAEeCmmHrG/gkAwqO2wOP7vYTar/UIpyvnpgDsvvULwJxnwHKs
+oQ3Zl4XHkIE6l9tal5UHmhb4eJAnyY08cv/bh1r5RF1oOi31RDElHefkjFA4AA8IjCC6IxaoEjnm
+l384ynZJsXb3sZp3w/ZZYh5rdxzMpyOHnXKmsSkGYmNcgYqKmRTrxDKGji18Yi1Mrc68lP6lgH9Y
+ehsnxATpAITKp+vZSQKKgXuImO0ZbmDah/C6xvmYY304knKYteK6xwSLgbhrq9/bmLvsmX3ssQYs
+chaqAAssAXjLAPnJyzLWeAt8w3eamPO6h3CKce1UwAkscnnMh/sIwCK5l/ULr/TMw3rswH/s/gAL
+bYgkl8s+doVIVX7SIWlUBH4OkmkK47eYdmSBs8d6O3k3HJSbKlwTLZ8F3J9+2ph56b5DxsOJ6R+h
+iJDEPGAYLQAgh3EL6bNznIG0R2CmyGMTt8dmq6H7W4Ga65kE/NXjGqBZqrEP3bv9iKh/OIgi104k
+N5gGHc4tF7BXyqqpCNeNN9d5qcuCWM58qGMOAMINkNgRMGQgvMCKDcKcp6knHa/16KHJrKl5m9eH
+uHLqDMrZa7sMrKdsvXkGnICNSagHoNIeK8iHq6lam6VfN3FEhqLBIoI6FF2BR5RAprUMqLWfZ6Ft
+apj5mqBui5fnk3mDunmg/IcibKt7TM0J/ri0mAdrw9jTUyOxmPmTgkQlDTmByR1y+uiZhXmvCQhz
+/DmBMubH/giyc415d+ynUvrDenrW81qQLH2byQtzfWpd5YyPyEzOAdtLgfzBGcenfCxyDtCvDOAA
+D5DYif3gANu/B9vSqX2AC+yPo6bHyLzLFrqvv/yxXzqQRx2IgOrDml2wSU3KnOnDAZqYBg2wF3xk
+hkdC2sSD8JQxqkd63W1eW+qxe1qIYuyP4jZkisyH/4vUOeyXmU3hks2PQ1ahivlxLY2Aqp3Mmbd3
+byK2O1ecoReKRPnNCClks6tjdupKTB6S/G2rj8mYgeqvMi7SFf2x+9rkmT2X673YArm//qMWPGxK
+x4s9gBk6n27qsRpeh4RKzine4BA+AQ+Anw4wAQsuAYyen/0byAiNnw+w2AhNcomdlwde2Ht65BhI
+yoa+px6aoY43zgb9v4UomIDMlw2OqAdduBjO06DJcPRWK0NLeDtKakJ+4KT8w/yhx8KOoPlr6PHZ
+eYg3sOSc2CMX0Z2e6PY6p/Wrn4CrwwoqYyEXUs54hGoJurcX7qcWXRspp90qcqu9tP0ZbmHKmP4p
+ZL5d34/Xp4R86Atd6FkqrwAbn/3RH3edp51XnxhHz1KqwdH+7Avex9CenxEAAQ6f4Q4vco3dr/n5
+4AvcyQe74IwtARNQhypN8SrdAA/w/rGmbvKGWNg9/LEEDLKMDu0MTcidDOEqjfGN6fD9mtj+S5fM
+/ZhGFmoLY2+eJn16HZ/JDKflXM4w37v2Ts5JP9HxOux9zOgNkPMZPuwIPafDjp0Zf+LYKYqKmKDV
+JamZB3K2OWTQAbR6aMPb+6d6aZidd9cVHp+8baifXMjrCaebx+EX3eoIPagUHjz7e9dnXLAJWdh7
+vKXR3sgDrPMNHuj+CAESQAESAPH9KsAL3uAxL+kQzujJHNEj7+kQDqcKn/nk3Kf3q6f97vcfS4gJ
+D9me1/mVDtkLbOn9SukMAAGRHtEJePp3euSFZcRWy1UmjCH6mnFSqrF3HfsHjniN/tngmb3hAzzC
+8O7Ap//gVg/tII/Q7zmvm12I9NjuiP6sWLyCobUjK0ga5Vp/NtaAaP54VXvhCz2wfmrrmJrx83rY
+IHv0MN7qDtyYANFAgQIGDRIcTHBAQYMDDAgiPJCAgQEGByk2KOiwIEEGHR1kXOiwwYOBDhw8YGDS
+QQSVESZMYOkAgsqPKUc+YBkzp0mMDjA+aHASaMyTEVIyeOCAYwOBKkMWZBqB6cKpKyNIvbkwqVKf
+BU1mXJlSZssJH08WVJhg4AEDBhoUYEDgbYG3DOjKLUCAgAG6DBRSLMC3gYGIGaFyVGByoMalAx07
+Nrh44UC1Dq+ahMDg8kifE4B+/pwatCNDiQcEVvTrt0ACAwng/pUrt23Dtm0JFAh8O0EDAQnjNtC7
+lzWDAYQV0G49kSDhjgRDSpQIl6FABRAbUl24e6pa7QKbOi5YmeNuhQsVNpRo4LjfhNVNq31+sOJA
+70FVbi270sEECBEkYO7Pvwhm0q8mzVICCiX7gOrJLKU0UwyqCBLzrjKzRkuAK5tIKgklj+4zKSmp
+dAprpIIIHHCClCjwSTGJMspwvb4CmyguviiSi6nbmBpssogQe0wtAxUzyKHKoDKMoJF2Y3Kjmoqq
+AAIJJIBgJh5xmuC0oBJrCKPECFJqssUkUsAtgVxjjaHbCFCOTLniIiCB2wIA/o4ug+JczSCD1IuO
+KYQQmoyi0g66LiP0lIIPI4fo66jRjLaa6qKGFFrUS+2g066hrgq6CNEHlbQvsc48O+kkjP7zb78q
+K5hSwJfy46kgD1t0qSWkPMMJ1KmM+kxLnx4qMigeReU1TAUIREnFsz5i6UBYrRqQpVdnwukBCZaC
+6qDBLnKLLrfsamAAvfZkiym3oDuuxa+GzbCBCb3iqb75qPsIupSoClEmdx2gAAL+LhyIJJNUfCDD
+dmM9aqqK9kyuTNZ2A2y3HQPLqy09ZRtAgIJiEzcvi1prq1GKOBWItheFpIwpzShMLEOofMKIR5W9
+XEip1hRVsrrmHmpuNzFL/orMKC8XVYmpssQqKymYBvyvrAgouMyk/z7iL4KtBn4JqZRgQonXRrOE
++bl8oRK23o2IQlAszsY2yrOrVGTg6JhempKBKqkca4IKHJCgIJZKSmzn9Nhz67a2CJ1trYi4C0/Y
+tUXS+jCcxfxp2aG/oumkuyeAOicKKHhVaQnKUnF0rXH61YEYB0tNW+006tY2v1orU88BJpLzTnEJ
+EECvAnbfcT7WRtbWtDMXzQjn61ASyiae6HMOcpaY8smo6rID0iDutjueR4mYF0slzUTbTyqgbvVv
+35kokMA/qDuPsqj2X3ogS6SMMksCpUnnLyj8wOrKR0Sln0eZCkGmsg9//qAGk/t5yF2koxrYWFKl
+fk3gAhG4wEwgUL+PbPABQKHMbhZ1gIYoJy1sYp0IdfYtEnrnQ1yxj7q816ukhO8qWombu37ywZX0
+R0rsm9JKOEMBnMQtRLXqSsyU+KUjEeZhkTFeRCjSpRrhZTYW8xZf5ISbvBAAAAAYAHAq4praQEyJ
+DLledbaXmJjULyT78c5CpPLGEEHGMJFRWEbUM5qdPYheKjPKgTKXNZnIqgETaN9V+tM+VkVJAof8
+4H8O6DQGvI9U+/mKtE73rPq9zGgEi6HTrIYUlWTGgHxr1klIV7/LZMRpEOhXTKj0tCrtB3Q0+cy9
+oMOQiPCIIm0pU1tW/pOawBykOj7ZDYNqCEKVdeSRHMxcTYR0ocxZC4NXeUAFnsa5B8ykAirCVedS
+8k0ClXJDXlIXakioFrZgijWrUaNcmASx3MmpOMHJiwACUIDe5QV5pTmOw7Q1Rj6m7T4vgVmpmvVB
+Wb1sZYsSVUkUI8ct1exqCtmPwFTUzJfUCiP+ottRrMU+Vn3OAXurQEphokoK2E1aEmDV6GYyIJMM
+aHyeORpCEdSg0dgnbjmVVVlACpP8vIo/nKPa1hggAdDB8gHsi9bn3kcl0Hlmax/Mj0O6Er3S4KZR
+1fHTLjF6FLHci3lfcRT9ejKa9u1nAi5jisAOib+k9csCFmgAUxE5/joKzJVKsJzS5+rHOUvKpIY+
+SYoCQBgej7hsOYsamV1+2ZE4VcQAbKLLAHBzmy7uUy4BYCxYd2Og9TAGenGNWdw6MpOO8HAsYbFK
+SrrDxxZtyTu/2ilWVPYSxfLEahxE5FVM99TPPU2vFWDfBS+wtKXuzSRQk0AG3QZO9kkVQmVV6wRN
+6ZmgwE1F1oPVfwZLv5YCtZKqAp1gq5rNmTBVqp9jKnJB5xKQatCIRcGK6nwGnwPgBiN7WY4T4UWf
+uIpIJiyC5ErdChRKZimvs/pgUkbytKeeNEoQiJJRX8Wi9FYQoVh7FVMnyCKqZU4iPFLdZPTEHcJo
+r7/yEdRbwgWc/jWt6bK/u5F6KpqdRIlHT6kDE1LqhyWdQg2WUVFZAGu6JGHVzG8KQpuBPMQ/qRwF
+Vxcg4lOrRLeXzFebGM5w+4goX0SySEWwJKr+4tYvqfKnnANzCVOxGpSqpuq7nKMlgro5P9BVsst+
+HuxSlQUTIk4JkVISUEql9FNCu4RzVuUp5LzHGsoQlEyY06pHOtLRf2FOaKDBKfMw8qqzCNV0nNNm
+BL5pLbf2jal81WuZQechISNSm+4NdUjzw1C1nEZJrYEPY+O0nuJ0y6t3KUAA9GIm7ZgJednaiEaM
+qVjnfSQp/xl16QaUmRpyZiuN4puSFTUSRa0SJy7RjFRIN7rQ/jVKpoT96asRrQENRIl9hB0dcvW6
+XOOi+s9+XuroBsRmKvUtVVhTLZuf2rfS0Q/OVOoy/R7tqArU73OcmyV1EblxC0JXahu/L2jMMhlA
+daRJJUyU32IIr/Kyu1/dhKq/WNK1HmYUnDmsqmZg6QALaEDVFexz50YHcbpts2r69k+X0W0tRA4Z
+pwQz5ZccU5Nz7TI8bhmIxfjiu70Mhp+3O5xxBKKegCak11oSiFSqmdeEqrujP7V2DieUk+l+V1GI
+HfJZDO5MboKTP+4FHVM1w1Q0Q+0CF7AA4C/ObqTw1SiBZZpRL+7nQ76azUT8LkzZV2GOb9kzhe4y
+EJEatylN/knmxeUgU1Hpvqd1uIKAJaz7VEtYK7XoKfNiDHewE7izQAjN/cGIo/nlmdGNNG71G3qj
+yjvquF0gutGFpc+/WV1EWuBp18+MBTc8dI7vlXNDZfi/2kf6rOWdOgzB3URIWJH3mNEuHYGL4fhS
+zEq9Z2ioKVlVaoti0EwNkVBhOpQ4rJ4ApwsRwK3BuLQBJ5xwPNV6qqUKPEPjHOdrPQpglQzyMn2T
+KoGrL5h6tIvLGnYLnbYJPZnDOLfDNclDvmlZs0frMhHknIA7tKVynwuoAAuALyB6r/fCIKh6n5Zq
+wVKhnpQRmIHCEO3AjIxSpZtrvRZktJ/qM6xaGgGhoKdS/hEzsyCm8jkN2LBH46vkaqrSA8G4cYnr
+wzXNwDhci7WOaKnxYhANUSPxGJlfgovAeIv08Kf02A4yMY950hYdqo+i2ZcE6KQGYC0kiQpScYmb
+IDIr8y6Lmz1rOTW9qq42k7z/oADnu7jkYioc5ETAO7zQCzEJ1Ku6UZZZYzTiI8P/y5ryajhB2zT4
+EkEY3DAsk7VMlKrTe74NxLjqwsDDs7zPIT9M8q3w4RuIKi35sA/R0JoXvDcX1Jo+u8KMQj7Q865K
+WjwLwrJ6G7ovDKzlssCqwrcPlBKnSji+6sJ7I64YdBRrsxSPEA33CJOFaaKE4AsBWI31Y4/Rsh6N
+6AhN/nEQZGoJF1kJCascB6E1d9MwrGqp32qplvKX9PopQaNEb5zAh7w3+IoAHLxADNLEwLK3ZzQq
+zaiqTHSv0ckoWIxB8kKKh4TAiCOs8QoxVuQy6gu9CuTESnQfqTo8MDS0oUuvdCQVrXKKnjo/NloJ
+0tkgt3qViWS46gqsShK80js0oANDEGyfwLJADdvEV+O+lyi8HHTBSpTGhssakILATWQRCQu4UlEK
+LxkWf2SUg7gNjQEUMAmcL4EomaEetGstiaCJLRmY41tAo/KQDyo35ItFjCMv6MJKrVw8X4TKz0G8
+p7mgG7RBLIOvjpPFFwRGeCOsKyyziOtMxmyzoLvC/pYLQVGUEu/bQTEsRVs8PAvAssCCKa/kyQh8
+xvL6IArIEMRETMBBJ0chzOHju8BLLzmTPFEkTeO6t9JzvguygApwPupcM8isRMa0PDFMzooUzYkL
+vZdER76qJH8xmpr4m1SaEBdpmeZgitzIEbqInjkCCpfxCDBJnU0JPmOEmfU8JGbctKyxmxjMKGGk
+vv3QSnzLzZh6ryk5POlsH8RjqgeVL8vbK8XDN6+MLrqBrw2KwNH0vjIrxX4DIud7leUKPUpsPduc
+UMnMQcjDsp7Mwkz0yNNkNzUkPRa5F8t4HgsRjSprShAURy/kuFeDSRe8UZ6MTuo8POqMAA0IxQ3c
+/kFNzEjCCkqj+srPyYzkLDwkbRVYKzRHU7C4yxKGOsi3LA+MYAv1aA3jCYq/0YzuQJ2kMDD8XJhm
+aRakaJCMapbP67M1i7fn/D66AUpcpFHCkk5cBKwYxcELyABW8TkLos5NvKAK5M7oUtSNs7xFy5ru
+K9KNoz5sNDMggiUgUjzNdExcfFDbpFIKmE4sm9RMtL7plBJM5UUjdcWmtE/QgJAJ+c9Kqp8GaLOl
+Ir8bxVJCBSnAUzyejLNEqoANoDfInFAJtdHsLD1aFNHNTE4iJSqs7Df9qcmsYYm+0ZyNesPDoAqF
+mRAqEh/L8AoJg6MEIAp1NQufUjuwOT6y4rRO/vqp8RLSDYzODKJNYLygDHjQWVWulHLSDtgADHDS
+k3RVDJhO93rQ5EIuKtVU0NFMLEu6mZRSE9VEzqRMstzA50M8WIVNgr0Kg7XF1pQS64uADXhQgrXE
+Il2ujjAKqFKs74CtsyAivjO05bJFWpRAjmupbmzQa5WARj1Zlo3VkaXKHBzZHQRBmjRa1wzRCe3F
+Fg0xlexNPzMpv0uJpZQIUpkJJ7uXhFqlAoKURsEmCumJLaHT1iqlr2hKfh2sZOFQQzNJLIMlDKvN
+lDpZhcWAHpSADfDIC4DSCuiACMiACOAADApGyjw8/4CA2tQ+S+ywCr3cWww9qlVWybTV2sTU/ldT
+rtOlTW26IJlNqeii0Ato3A3IgMdVWAy6wGVNw7LcuJqyGgdDKCAUrHjDTW11uQ+c2gmk0hjdWOWK
+3ArQgA6AUjFE1Uz8SBGFTAa92VHUsBALPFHtzuVkx8Aizdy9pTJLxafDUqeCG5c0KrdylHjkDLCZ
+idDhtPIzkT9rxdYaTdOd1uVy3UykTgzQzAhg2IHFAA3YAOqkTch93g541IqlTFVbWgK+XMkdXp5k
+zJDVymC0zc50XQeFmgyQkp6k3JjVJoPtnJOlTdetTp+zQQLOAMTlAAdGvIu93OSqzZJMwA2rM0d5
+QAN9tG2iXClVUGUtVZOMLtpM4SZ9Vm2a/uFHzQAM+N/pjamPpFGptdItFUGsQonic8E0FFEBjThK
+xFLx1WFuCrT2LUBrGSxboj5pJNZ+lRZFYShVAp/W0p82Xh9XYkNSaz0uQ15WeVyYUrUMkD7Ey4DI
+9bmr6ADqJIEn3QAHLlwMaNxXXWEcZFnbbdUXJSlZ+1xXFS6ppVok7kkLcFiVpU2fk1nEm04LiGJN
+dtyU8jkBjtwYroBHll3n7UHrq03nw04zJj+4Ybf+WDOU6JefzEH/oFLFK10WttXHtUELaFgGzcQO
+SF16ozflWlpGqlT5AuCBBaKYSkG/0x/jvJVNE0Go7DhXq8nkC01S9GBZpCqpNFF/qaQW/nQ1C/3i
+4su3AH3X9qW18SKlpxPALhxj9vGX6HRcDHhcGt5CAu4AhpVox53dR40AErA+DbDkzLRBbdoAJcbU
+gIUq2tRGTi5llk1ihd7Yq6i3G9zIJo3maF5gAYaqj3ZYHERcB86AxiWBC8jpw5tdDZjdDXhkhkXg
+je1bzaQS6gzSIVUtNsRKX/4cHLRVWdRSUHy+u3pWAibdgr0KAvY5BxZqVUu8yk1d2e1JE7VAB/Xf
+BhXNaHQ5vhGsUXxGP/PfmRwdVI01q87YktRcsTTVCwpKeSbFxhwslGQo44WbDzKKzICXGoIb/TVN
+TnxcaVZkDNrpDojcFX5kDohhn4th/kedXUdNqWty3AsQ4GhGXAdla73u2+cbYYut7KxmUmnuSWdG
+LlapZKBuXobOABauAIZGXHqLZMVNZFXzaQx6ZEdFXNgVrlX15bRmH9KzRe/iYVl77hwGxw+m3JmF
+qdl80CiGKVc2ZOjlAA4IgdN+5Az4AA5g4srNAFNtFapGYguy4PDkMIn7YrcCqarKSv6xqpGEuMVb
+VilNTqjEtUps0ruKzn1za+tFR4yDpdmLuE0rn6RJGmO+2+usLuosXZ/W7I/WaMi9aMeNZCjV7LEm
+AW2qt8OTWGmOYhtka0o+bRyO7szMxMv1W5OU1ZhVYucDafK+weCe2eB+1FfdaZ9T/uRs5mqZbVzP
+rugTh9yeJmoCRlwSSOQMSDwnBcbn09oLpT29Zbjb5EjgrlhnxkVCrs6YLfGK7uimPTyilllo3Wm0
+dnFrZvCZbVRTJSwLQLMrpEQhU77/CzxHS+crZUN/dVXAs9JRLsWcPNnntMCL5cSTrVEvTy7j+sIP
+vOevmW6CWapkEXWH9LNCnUAJqOyTZeXMltmKTmVXhl7Z7QDfxoBa98jpXGUtF20tp94qxjKqBuGZ
+XVVpTlxUj06JRdxMpF0mZeWTrTfhfl6WbVgXfmQQeNII+AACjtnZbdzZrWWZZWgoPTwETrzRnk3x
+zWEjxVlwXGdU+0YXB8YApk2D/jVkBE5vaJ/l2RVgekPuC1hvEShxcefoN9dz7/5GnoQ18t3NjJzF
+jN30uCvJqNVQsiwpjCNhxUs8kz1YCnDz2UV1lkVtkK7IUX7JTiIVRSwdAhHLd0biuyKpqWbwKNaA
+cL+gFZ/dJzXkwu1s2R1th2WVu1pgLU88V+5lVz5tpXVdlpXiCxz3gQXxu/JtV7a+GL8rxP2A2ZVm
+aK31RBbqGe4AEJDd8/bsDWhYaI1oDqDybHbePEfpSU13jWT3THTjNAfy2XR6kK6AGIdc0ZZmjKb3
+K3de6oxh6I3zRw6BiO6A2TRYiXVUIB96Xy531B7ZkCxeEI23ve0+EcRGP+OX/gEd0l5EzgR/TVYd
+2BWO4loX4CiG1rKH3lqHelVHvMnE3XBtOmx8qhUUtDK+cfhS3g10+uAW6sOb4Rl+3pj1aS3PZnpL
+fVNG7Si++7vSdQHOcz1n/tSfTcFtZYE35Vo3brLHgI/m9no3ZIN9ZKFmWEOu5edF4OLndnoz2FrO
+edSe+RdvfOpkdl/0ZVjLfxDW8SkRYJkFCAsXMmDokKFCBg0bMmzQoCFDhg4RHHJgOBDihg0SOzyE
+yDEDBw0YCG7AcMEChoIXBq6EuPIlBgsSZl6gQKHmzAk6c1KYIEHnBJtAffb0GXRm0Z49GzB40OAB
+AwZBhU6IQGGmhKtZr9qM/pDhQlYJKy1ksOBQZEkNZDE8JKshQocKFsiWNClwpVisM61KiDAzKlGf
+PwMXNZpV50qrV8GGxXuhQgWxL+eOfDhSI8PMJk0OxLABLMq7J0HPPSkXNIW5kk8KjFl6LMvSX1M6
+NPtVw4UIH9Qu7KBRQ4cLBhUm5NCBw4cOBSNq/BByOIkIIThk1A0Xg9cLuC+UPEmTsWStOm3eBBvb
+pV2UDytkVJi7w/CMxyt2TPg5N/KQwAs6PC5SbWYEpQSRSRvMdWAFD8AmwVwVCPVTYTntRN5gXAFV
+mFFSPfBTUw7o9IBgE1K4U1ZjfVdWWZxdpB1GDC1knEEGCagQXSZ99ZUF/hWwdgF25VUlgVQhBmZY
+UD5FIJhNENiUVWSP+WTeaqwt9JlkNmpW0mxfmXagBDeWNRZZYs1F0GgvvVTXQAuRlSOBK2bGQUwE
+MTQSBs+NFMJEHHX0wUS7KaQRRySAkAEIC5HQAQjHgTSlWQKVJZBMDEYGmYM74UWTXHeNiRtDZsno
+GQchNZTQogmBEAF1LjrnG3yn9ncqCRCRRFxldLIE0wYMgvXVTAItqdRW4nHVU7A/SZhTVgxAcOQE
+USkA1QMgSuCAUFRNRQEESgrU65jceQYqQwYtBBIJCpmrAQexMgeRSBXEBFtqo2XL4AQXDEWUsVQp
+JRNOeNkEGoSL5cWg/mh4HdhoawSJtFJM271EkqwHr/nVZyqmFJOVGXEXYEN//smjrO0x9JC4mSF6
+KHwkXMBBohFFpEFy9nWcUH+AfkaQBVhuvFBLWuUYlo48dpZmi6MSSJzLMQIHHHwchfoBZi/bRygI
+IJSbqG8lTbkBnGpdLKDWN5Z5q1g3hVXvYr+G9e9WU927FU86URvkAz1JNdiFkjUGU85Cj+QbxIC/
+HONHGmGGbtTvFuxoTVwFSyF5S24FltmRD1ZTTRNA8N1Vp5kVgXkDgY4Be22xBSmNc93n2ms8pvQZ
+WnXZ9u1mC8U+Eo6XmbtQQfBF9IGLwHHtlbkXHFpzQ4WiCx/TTTdN/hx1GRFI8WiQlvd4aSJ5RldG
+4zInfUMF1cn1b73N1zF9TpMaXUTGJde9R5++HqDqWBqoY4p5hX596JSrhtdR8LaTIgEmKAygAAMa
+wCzHIUly/5KLBCzmGRdlDT5/awh8uJacQxmHa01ryLgMZBeGyaQ0FrgKv8TkGE09ZiU3gdQJuyKT
+f+UGAxSAjP60UhPQwQY2pRnhwVLSGhKKBiVlYlycppazj1wGM6NKVWa4xpwOJOc4GuGAB0KlxYQw
+L1bPMc5bRFCus+inIlDkWItGuMK7vPCIuMuAF/UTq+YBClH9AcnyjoM144SKioqq2gdAEEhWRYQj
+YeseyAZEppSA/qw7ZdkA6DLALa9ASgIIMZNffgUsoFQIgeMxlgQ2VJggIeWTEAiKXd5lkodgSTm9
+6Z1ymkafVGVQPlNTDsZQEpGBFGxXYomMJFnzGhUh5WCSs+RqzNZCnDCoV8Jk5Jw2Y6ZF8qgkAtHa
+SSrWmpzRqXeX6WCAvmkckFQEIqIC3EJA8JwMkmA68AkJjN5JRRGIADjqDMF0+gijLWKGVV87iWVe
+spq1kCUzD3Gf71iGx+AZRwQR4OBxkkPLUAnSg8zrwKFIQAIPGk4kFXkn+TJSIIx1ak6zsdHD1Ggm
+1zgGPERRSpEQeBhOGgUxQxlMiToHw9p9pnu+iZ5Pfeq8Chou/lQuwtKAYuKBio1ElwWZiytHMpkp
+NYlMBiPLRG4CQfNE5jsx7Jdk3CUQ7b2Od9vrzkgqAr86dZNideleE0FSwXga7p3Gadlx5tOBfMZs
+A/cU1EbRtU8NcPADKIvo+7SITvDB6WKOIhNZEnmxOukRBCFIVKhCQAKK6jMEeT1BBgKpRZZZ8Xzz
+QY4gOdIq5tASl5RhlQUZyRpbscWalGFYk7zzv0uZpnEOghtWbkKke93tbT7KDWjGIttxnQQji8VI
+Rvj40Q4CapwC+t6UqFMnjMTpJOLyjPSEphHasYmE3hHYY1aDlMOE5UujSaURXRcxOaVknEKL7es+
+SBDleMAg/h0sCNeow0ff9I58o+XjFeFpkBMA51BVS5RzqpYy5t21UIdlFXWUA6MNLLWJQowgSZEa
+3ZR9wLAgYBpqp1MuDoRgN9L1rDo3vMcHY9SyIkAO1GSJxaxdhiSe8QB3PgOpb41GS7O1SEFbshnW
+cS4vkdOKUq4ylANKhQEB04peunQx7Wy5vnUhU081xiMBHwfAGezgUklivoKoNcAe7CNHQyhgFzHn
+x9tTXJgeE6a9LNOSvGTpgZp7VFca7mK4ZCvGnDjo/mqER4zOwAlQYlfFLhVQcq3ajZuG6RaHRJ2I
+KjFpRYCodGG0A2K8LNaO4044n5lwQgYvLq8L21HvM13q/vyAqAOZKHoaJwQ3ljBqY2zXiPaxxIb1
+tWep018PYKC/FszZUvuLMwt4gL5r4RFKhPgwEQoxNN29yGlaWLYnLwY8NxGuvWiSAbhEgIctTBHD
+JphUAn/5JJ7pDKs8wD3xlYS/zIYTh68oywxakXzvzCJ8PODsDMsoRjjDkYHGgpEWpgZ0OoLU2Lpp
+kg6gpNBL7UB/m/1jDoN82SCf4LJ3jGCWMVy6k2Z5fix7YJaJYNctrjk+DfsBzbKYihsULWpZ5tnT
+jnapxmF0Bn08PqDudee4xpqgdn7Pp7VT1ZclLcuqNp1EXRbVDxZ1zUEg7Wrz19AyYojC4eO65dDO
+yNjm/tnat9wZ6YnkYAhJZrmVlDm9DAtbNOGxMKXkt+nhbu68C81sXWcBgyhSesxxdl5D1V99wna0
+CZ/ugbMYKouKdO5dBotdtjpEbgqoIPqW3t8iwux+OpzZIjdftVMSezhRR9hY9LReWSxI0lpWtPTU
+utCDfdmdmzqQLcYnPhHla63vfusyl/D5PJO1RQ7crlFvcTszKkjNCgprJa75zkWAzxvjOMYkSA4+
+Q3V+7JNABBlQuMgNovAOs1U5pX/9vSfLyMiCNyIofWtMwN1d3EhMEEx6aUkMUYBdcMVrOJPf5Ax6
+eAt4TZbODJPQyJfG1YXpDcjacZhxNJsFqVzWgQD5/nEN8o1A2N2VdGUYm2lM1lSEVDFMZ2QG/+HO
+lyXc/BkaFsFfDqrdCexgtWURaKXdwlUNadGaYuVVjKUWouxVO3HAjYXACPSe1SBf14mfRrVfzrHY
+ZXUfzNEawv0gweXgI2mE5uUVPrUfi61hO6Ha8U0HHHLarf2eIJHgcWxU+40AF/raCYhASgyhwnlE
+sy2b6c3fdwHZuDgWnaDJgGhgDNqbVHFb3fFMnCBeS5gHxjGGC1lS35zUINJONX0LIt2ft71LNi3Z
+xnyiIYqP/IGgEo7W8pFf12kU+amTEcJZH33cO42PSGUbnZAESNlfpRHIIIJcLIlcIcneeIGKHe3T
+/jvFWD7B2Ahu3WWJn2fhk2VtFq75mtBh4XxgXxqiWjvRU9jBYSC13z2RoBZpgMwBjumpFWVpkfiR
+ID6dAAmMgBT6WhuqIRSSoEaR4NOV2PhtFjdiFj0eW/ghCskRBPzFyAYWHrNpiQhpYOk5CkUyEgUK
+iBHRiS6VXirqGWUYCJL1DsRJ1fw0m5xgmLg0TTRh5Ni4Dkxo5HK8n6wAGPyBoPT1EfTJY815oa+J
+nzXyWhZhVn1pkRT5VLRhkUh9jcj9Tdr5zsWcACwxW3+dQJl1wAmoI82FivjBSM0hIdB1nXNgYxvi
+GKJYzc6NQPvhGovRUz4em6/ho1paoRqmn2id/h/NkWCMHR0IsBmQWSUU8ppl6aOg/KRG/aSNWaOu
+DWTXwaI56uNPRmamaRHWzB/X1JeAuN7XvF9KyZZnXkxEcuBm/iIxYgxJ0U7jgcRRTVCQAZzsvd/J
+7RfJBRwheiJlCJH+/SJVjoTrud51lV6tKRY9apYJMKZm3Vw1DqfXDZ08WVAywpbCSaX8wR9EaN5T
+NhucINxkyVx0wVxXspjm5ZM1WpZe6tqNnZ8e/R7y+SM9baMIqOU/oiAJAqVbitE/BmZAYg1m5ZNe
+JpvYaVi/PWO6jON7pkA74aNmIeg+BuU9jic51md95pw+GqgU4t4P9tGAGCNVMlsG1RdPxYlj/nXc
+9LxfUkXk/U1Wt9BXI56ZGbIa7cWTsy2bB2aRb3aYK92f0PhiZ6QELgXihr5f7IHc/VlQgJ6lYjnH
++Y3AFM4jPQ4mNgodNqafB+zlDmKAdO4Y2j1lyZEdlyLcZSUcCFilGDKnOtHTlEJfogjKr3na1omA
+0yWKjQnk+IkfCojRCKRAgpJjCNRpCuCpkiqpFtbcCYQAheKcWyIffWZWW/pnoeQTFMaiCKTAXBIq
+ntJnO1GoYdacWo4AChwmOEbpT76nkqYAr4GcwMXostGkBZkcig7IkJGQ/l1AyOUmrc4GUvmThoFU
+1g0YaJ0WSLCi8wzhCZCdOp0Ah0nlxXAY/kzmn+xVW0pWJ4Hc5KE5VRZ1z135EZxq3XHio50CJaEi
+n6eKwA9KmBg+R8gpVoIt2w8uW0RKJ8JZUU4exw9yY69Z4Zh6p5pOxzy2YdWcwLyKH7dWoxTSE6ei
+4D3iI6mSqgigQJ9yKghw64HiY2btXLq0pZs6Kcsg3B7CZYKmgD12qloyrBT24Qf0KQr8qZJGqoGS
+qppWYRWeGgqKah7+Z6gM62kNCCE25X79k9/E21poXDTtqLwVmbZ9y1oYK6PFE+UpGweIYbVJpQnA
+34V6lhkaoxNpqPx5nrPiTrM2pSH6n5X8kyIRneRla7a66WUZ7IGq509uIweYwAbYrM1a/qmVGiN8
+WKUF4e2CfRyMPOXQiZ2xZqWphWlevY8xhumhthNbthPGAocYGRY95eH4cWqkvifBosCe3mmd4lPD
+OqhbsmzNhe54epag4m08fd3CnqxGrQAKnOwKZB+FKmif9inAkoCkTiGCVs1mjeNP1mnBpsDdihRW
+ViWGlpzqFaP4iKLi/SJTyh6AJiJ3cIf2eAvvaI0F2VV/iR3gfpCGkiRWWik9DqvNsivWIlxDSuX8
+ASF/wWbT0OrNjGaGDpViNe18PJjVCJ0ghd/a/uSn7RWMBC5lpS8ISh4ZghzUqp5VKpwJhAvXmADL
+Ids8esC8Jsf22VoIZCVjRq6a2ufA/sLnwkoqPTGspHZqCjBs6x6swp4w992jkyIq76YL8UlwyVkh
+pZawpJZwnbLuyooww2oUPpKA76ZszGIhob7swdpuCXNqIN6t9H2cCQArEeJS2VFiUpmZGYJg6ZVm
+AJpiTMifciBtyokdpEHejpnc3dKo5u2hcVilCZyACWDlG1fbAs/tsCZYE+ZtXv1bDg5rafpNbpYE
+FhUEYP4UEq4xqv0eFAaqo7rxG0ft5GGl7/xgAvsrS1Kyb6Av+SacGGJNG1sh/WIlzv1kVv4wsrXf
+e4aACTwsPnEqqd5pn76ukrZuCdsuLa9uCrSA6qplCbMuwS7se7bfYZ4Anl7wnn7A/huTXFZq8MHK
+cg+vAA6f8A//6S4DseXe6T1C8MAep8ly6j0CbwgoXNzabVV6wHSMj+mdXBBeVzWBbTcx3icq4iN+
+zUbGUoCV3BhGJ2yya6QFax+S4zDn3GDunBt/gBi2MaAQrwJ7wBO/bUkscNNEGpC6hCO2Bmh6RFIe
+HUURblXulQeIQBs/6jxSct82TSO/nyOLQNop2xsba7NZZd1a8rA627AWa7mIUZieAEFbIbfWJ+/e
+GH0+7MJSqi7f48mygAiPcKe2wAostTMDscn2qe2KkSwDs7guX2HSYaResJimCz6mMiunwFK7wArg
+slqyLgq0QAkLMwqcgC4/tcha/jMKSuENR2o3lzALrOxGH8eyHTMgd8Ab+3Xsse+ibBlcERo6Oysu
+YYb+mVC2TSR8uBNHP7Re4+1fh1zUjiuygathJuwIbOMFO/BlRS1W0q/gOg+kgZxRWq0WbQZ92Z87
+K9Ig25UHMaMxNu3ktWMf1qNCmxxzIoq/ynBMb/QfclidODIc95G/Nq349WFmIao+Iig99eGdoqAJ
+1O4N46nr/mlTaxQJM6xZbzPrugAJtAAJLHV5G7WksnV1f8Cf2inmdrD4+TXLpLLVoKCBmjAOgzVa
+K/WodvOocirDTncPW+Pm2umonjAQL3UYJgpl+7aQGhVIZFFmtm8gSp/Iuc7Y/j1lihxabEwGtskX
+aifcAvMofy0wnBhw+/wgfUa3qA5qN5+spPpawvqaA/8ggoJ2dHKNmGKWMQ7r0Vl4F28oI2lNFtUJ
+1qnTSjsbc8rwqGlEqr3TukbnhULydFAy0voroEzyaGNlcnPj8sl1dNuYKMd4T8e1yZqAgQJxgLvy
+CDizUpd3pzrzWC+1Uo81CjA1666ALreuC6Q57Y5wpDIsW1vjFFplmF6wqL7unaNAn5u1LIO1WMN4
+Er8u69Jy6wZ46qIAmltzUiv6nf/2BrSxwknejsmrXhtHHAfhDjKkuJDdQsaf/iEVrUpTZsLJBTgy
+kMIxpFXn8PqGaEOadCMo/h++551fNw+DbKWubB+SoL/662Wta9w2Ld4+Ldkp21KOSw6GnN1SXoss
+XKlHpxEOKwaItt4mt7RPKaKf+vf+b6gPrwRzaz+GasBaobhWdT2Kq6TeYx+isJr3sCszsw6/OS47
+86UT/J3XOX6TtzPvechecAkfZ1y27nu+baXuKVvfeaOD9ZyLdXnbcKUXO1jfqZ4/M6FmIYXebqTf
+MqPjqb9GuL8SLmD7Bjl/L2yCluoZY5byF+8ssV82mvSRaBPR35ZFtEecgKwuxIb6tVMmHNVyuXL2
+M1vnO3eXtwrssAkTO3xeMz42e9Ni0WU3jZYmHA76TqJU7bt+YC6W3LQX/thxwK1fX964V6u5D+rW
+oeBvc3nUKq2VL3cf+mtx9j2+Vy4xR2pco/KgEzV+93vDljedm7B3L/Wd47kL1PmcKzVYFzvDmoAr
+o/nJav5ajzCne6yNibArvzLCy7nGw/kr9/mjO7UzQ/Wd+qsJs3kS//sKzKtWc02/QrIM/6c4z5+c
+VOkXmyGHErCrK6Wsv5Ey8ubCSe04n7aQxrTd6lH2Dmxua34+7rIJnLUJmzefI7HGC7PHSmxWv/yw
+mgD6w3F0HlwhYRHtkZ2VUhQRsiLaBQfUGrDYj/vdPrSOp4C0ezRAnDDBgcOJEAQ7nOhgIoSJEyBC
+jABhQkQIiwdBPKxY/tHECIseRRhEMSKFRxIpTpBMkYLEyJUtSKw4uQJFChQoVuTM2WJlzpctdgLV
+iVNnTBQnXZIUQUJESRMlWa6MCLVkzRFEdbbguSKFC65fSbioidOrz5sxV/CsSaLlShNjbZ7I6QJl
+yBAZBYbwYGLDiRMZPPzd28GDhw4JMSgMnCHDiQ0cNhw+DKIghw4ZCBfegBmDBwyHN3jggOFChguH
+PTDGgGF0htWuI4/uDPhzQsAnEh8eqPBiiJAjRHj0m2IFjR03aNBkQXyETrpdryJ1WjEEihAnRGQc
+iHeDicCZF/tFHTiyCcmWQezFYJ4wbtQdCBr+bv6x94IKK3O4a1kE/vWmFs17KCK7MqrII6lGIOmp
+/k5AIbgE+4OqpatSGukpuUZiAQUVamLJBaS4IsoFoLzCCiehdFqJuBNvSgqFEyS87iqXgjOIIplW
+bFGnHVHECYUWjrKJph1z0vFFFWhi66adxFpyBbuCA0FK8U6wzDwO2GusMA/66qyD0L5sbLzCvszM
+MswIy43LzzDTDIPQOvvMMNxOMOy9hQhrzDUvEwsNvb4oo843v0YagQg05iCkjjrMCIImklIawYRJ
+Ie2IuBSCswlBi5oCqcoqHVKMy77s9CAj+Ar7y7zGCKqzMA4MGyih1B6DNaGEKNNPo5D6S3BQkO7y
+yEGDfEuhWOw4/vULOEivWwnGmkIoCUaSZlypueaEJC5FFnzKCUmzeCxLq7SItOmmlUaCEceQNB0u
+VEmb23DIFUYECqgYeCR33hFRcKHBmt4ayieWVNDWR6Ls9e034Ag6SKCEHmLIhNrwUyjAwLgkk7CN
+7cTNM8s60EDOjA3D7C/MMpi4gzfLhFU+OdPEeCGWE4qMMg9E4KA/u6LF9AZBFBVkUaHr2AGnlTL9
+l6cRKkypJEixE8GhkaK9jrKJ/BJQoFB1VcwEzByuUyHxRAvJsrFRqxUEBivyS1dehSup7QSNxc6g
+FBiqzqFlm6rwJrqpFYi4qdW9iqqbGlyRW6+E2opIrewVKoYW/iYfsit7d7LJoYBdXIEiGlFSi6cW
+uP1q8so9p2nctE7silwXnhvr34K5QjcttXSSlNONQqoSooYJKmhWmV2WDITLVjWv1L4gftU7ycYc
+Wb7vDMsNsFmhzwBkMVe27LuxIeLUo+uWGLqOP4QWZI45arjqqaq4MpxpufdOMKe3TkLX2M17G/+u
+3Q/iEAD1p1VYooxDclaQgXBpUhCjTvhyFi2PSCw4FhGIdaSiKab1TEVMI8lIXqSiaQmkQZnyUbvw
+hjcUsMBeKjCBhrrFoxQARQYoykoMXIC6ea2ABSbw3IbQxRO5NAhGIjgaCt43JCDNZS6VA0oKWDjD
+oBTpftpC/snRvnIpJC7JWaWbYQvYVaiUKIwiftlZzmTFl4UoZGYDed5gMBYgP0XmO5mZ2JwSwh74
+4Ec+KzPZa7b0xr2ERpC2GshFNjKpaO2gDoTAAyEUBUmhZYEm56oK3jpCN+swbVoq4ta3sIUpc13x
+g1Whm/gAZBPfNIRYq7SM1eAzkIYh8jpSK+EErXUg61QnWhSBV4ISdC5JtYiYDsniCpyGrkm1AEk+
+pMlTniKUnmBuBd/KCQ7xJYMY0GByMpABDWjgghp2ayuOE1KInCQktbwFKCvkIeQqJ4Nr7ohbPjTB
+uFRgwx0d0VxCkUuRWLgjYKIkJQbKDkMm0hssPSQ9VgrQ/q0e1p7K7KYD/QkMQR5qHjdidFKgUozY
+PJMbPd5JMokJAa4MsjaFQahY0cpCI+vwyJjWQRBbeIqPQhQ4SU3qaYBrETSHc8QQpcVcJEGmps5F
+k6nc5EHBBI60LgIRtvFKRgyhVlOM5cEUEjNBFHHKi8biEBVhJYtITJ1cJEXU9wnRW0AiK5KAwoIa
+ypOuNPhmDLwpT3rFIAY14Ku+qBkwz5VkK8ZEyVvges/SVZOvQOGmDPy6AhmoAK41bNy9WuBN0nGr
+QTyMZk3+SSR8Ta6rwASOQE67LOD0hzKDSmkHAqgfjF5HZ8LLGag6sLYRYEk/E9HPgCxCkIostCCx
+QtV4/lR2x8JQZiG1ouVKqZO1FJRvUZGk6RZ2Wihgtk2qPWOaWc0iFJyGyC2ZQ6bqalc72w1MhBZK
+rS+BmawXTUVBS0KcsFSU347ASItVwcphkeosK56gBUrb4k50wsLMNlYrpYurTmQgzhjcwAU0qAE4
+JTwiGKxgci8knVoJvEKhpgBJM5wmt1qwYcitoAZayWZyxkkvneALngjmYVp8SBwYldjB76whvvxy
+HbuNL7qD6khExseB8NVSpSj5HaciEhHh5Q1ZgkKa4JoykgquclIJXdnXGFMnMYHPVDszyIPESJLe
+9GwJaGADo7KwBDM0SlpZ+whwd1s/qMhvRgrqbOpe/mQCF+okYC4Eb8Gu6DnBwgi1vTJjU6Q2UBu9
+xYeEIqbn3GffSsbLqD8UCFfu+cJ52XNeQGIhC1SAYikGVCuTRdI4VazNbVJ4m3ytYQ2QE1lWV5OH
+xGknh1ANzSQ+5cbeIpc2uQlOvooznJl9QXFkAIMPN3ayRNqRNZn5Tn1xOLPZ3S/AouyrjKw2q/8T
+VP+qkx2Q9C4iE4EIRd5CtY7cJN4oUQq8HtRL9riquXyp0nU+osusBdmW8usZf7VSkxYAAQ1ZCMIu
+If2/lkbkzL5J17MEEhwL1WRgBQ5oVshFbEIPBUOFQlxELCQxawnTJlcpklsovaOVQ/MrHE9RFZG4
+/sQW+JAFLDzBYr8SUBPIUwUxQLVktcnhcMoa2X3dJg2QM4NaP90Fcr0dUFJdzeUASYpCYWfWuTXO
+BYuzwnhV9tRdUIMNjwivC5bsCyzLzLgSJ59JVMFk8Xo6vk4Lmr6KFgkrpNpasnQqyIIaxRuCSAiB
+ZFgwYkjidvoWTKZEcFsDzqTuE6CCDMoiBJ1UvLeIRMAJ2e+BTvkKnGAGNNxAd75ZrUcoZBF6h35q
+MwJrXCblpHuSTltZkTvkUFLPnPilh0gkIoXMNSnPJW5FMN/5C6HJxU/WfOco4Qpcs3JP86aO196s
+3N3laVdterPZNWQBN8ee7ORQrgZl/6ascyKD/hdETtu8zgkMvwhQHhU97dv0pjhhwK4wLOlewNZi
+oAC/iVy+5cF47+PGZVzmSpymBt4Ex1ISJCUmJSQ64l0eTz+EI282aH8q6Dc65SrcR4VIKPnmbWqQ
+6CmYJm8USWoATvQARlKgQvnOJdBqj5MIyjrMKLtSAAnQYAtyQFoWr1fS5X0ahCGSglDMZUmcCSdy
+z3NObefyidesydpKSXbk4vNmqEJyb7xowloqjyaAjdjyCacuhYh4CEmyLis0a3Uox5vij3LyDl/s
+CungzgbwqgYgC69sQAD9ENdsTZtUTAU2TLLSou0e7OM4BKdSbLJuDZzUb+nET9mWjum0Sa7y/goG
+pC0RkQTF7A8G8orD8IoOkQmJ8AZeeMppHI/Sous/LjAvYm/dLs9SXGIJN1CF3McvaOLnvCUllm/j
+DKKr6I3SKGUJBYIneO6mnOLz7EmMQCgF3s0hYCAL5mAL2idibASruAyJIk0EAgPJoLEiAm04FA1I
+NvD68oknkGSFCmxrWrCZAoZzOMSzEgyTiELQfMisgAi9CkbQPuyHXiSt8s8Tn00n8kna+CoRSbE4
+xEmz7AqvOOyukI0SwembwAk5+uoG8EVI6NATJesKFe3GBJLEPizbzE4TwenCoI6bYoAUvcmvIowO
+KYcSTbEiLctbSPEhrwnupo7U3oLyvmoV/t9ifpBR9rADmOrHKhjPWhqCCdEFA43PmZDpKHmKh7pQ
+rDSEA99n624MRXxoIN0QxcYFGbeyBW0HJFQgCuYADWggZDJgA+iSA/rMQUzgeAgjNipiJZirTJBM
+XY5MSuADBPCmxJ7CIkjAN0ggUOzS2JavKwOGiMCLBYDxRwjNMgXNhazy06zpKODBHhxl29KCsnwS
+7mhInrapBfzQrkgx7wowIvEKBmxNECELI2XgBlrABdjBHrZAEe2vmopOr1qoNK+PcjJLI13yIi8s
+r2AyI53u6SxLBVosEnei6O5utJBO2t4PBvxQBpYpcVRga3TRBAlF8kBIBztKWkZwKSMN/m/64yhf
+sEE+qQUlj6d6aNDG0oVscChnKPc+b0MmZdAGrTicAAvQAA3MAAmSwypJTPLAMPIQBwVkoM2cgBkw
+FEMFwYg2ZwQ6oA0wlBeYgRdqYMk4QBBGNEQLUoBOIAiYwRgwdBqwYCU4RAS2IENfFENhgRCcIAUK
+IoWYCR7vrw3v7582JNiO7uaGr1ywkwQuAB/4YQmkRtRmc3UC0BBV05s80f+UTZ4gRxP7UAA1khJb
+Uwa6wh784TefLjmqaXWOsvqwbxFTrCG7swbUbkwzUvze7xRfMxD9Sky96e70BV+eja9mQAAxUvko
+a0Waox+z5pkCbawKJSRmD6wspEGi/nKnFAT09otpjKgFmREnlhCTBueHkPF+htTXPg5fViALAkEQ
+AuFVYzUQ6gAJXuDoVojn6ukGnYnnViAI+OEfhNUfvMEwQSsELsAY/sEfhHUfnAAEPAIELmAchFVY
+88E6XCIEMGALmJVZ/6ETPs9DlXVYu3VZ/QEfeOFJeKqZju5bKEsKF7XYem4zdyQG3HWxSEcEIgAf
+/iEISIAQtqFHkWS0wAk5+UoApfOu7BScUKANvGELWPPCFrYlLQycArElIYst6CFNIacFpO4j7QVT
+BOEbHIVAEdH/vqk1c81iL8wGIOuuJnJM8y4A1W4iH6s4am0nssmb5m8OIQsohE3Q/pYxtEqyV3nq
+XXaKF+XGGGskXTqE48ylCy1N+SaQp9SSDYuEausp1RCr56oJCQRBEBAhbF+VbIUmCFKtdN7xnrhW
+K6jWQ0lgH5ZVWL2hOjgzBCRgGqr1H/RhCVyPAxiAWr01HxpzuyJAC/yhXD1hA4yoAyQAFuZ2WPdW
+WNnhBkJgsPiRxFBt6yjLxiDzdgY2Ee0V6/gKSUYgA/DBH4LABVJ3HJQu2rIN7kiRmbpJIycnAO2K
+Ne3hH9Lh6VwyB3YgByhxB+x0BzCSBlbCHvhhC1AABmaANmvoHYHg4YIgH4gViuxVTufQJWkAeI0j
+B4TXeF3SZWk2r8gPsvyKrxpL/gClDfyS7jlpwAZaE5xQjSQHR2ihscCeDwp9RHBU0fFIqIwIRx59
+JMcqFdy2aJlWxGme6SpfaIXmVdTa6v56zgyABmggCREIAWjQRxCIQDjzEwbc0HNCEa5QoANIIB/2
+1nX/qQVGYALGVVj1IQjuowMa4Bsi91q1g2kyQAsmFxY4QMcmAHK9dW8T11zhgd4UUC7qV7F6jrIo
+i4U2s3MDChFZwBMXUiukjQT2VXVJIB32ARaIY5vmz/v46jspUQZm4DbJDwboYhzywRhYs2K5V37T
+eAeMV3hrgARKAE21gNnwbrJSIAjwwR72mB3yoRMws01fACgP0AaIt3u9V3iF/lcGXBaccBc3M3Ji
+1Zg2NwwoMfl5zdfWYOCS8yk/KUuxjpSydu6sUhkfQW0JRW9GjKir+vF+vDDyXtBSUnD2JvPzns9r
+u5KeTAAGUPmaskBsxVaDCWFsx7ZscWBcYnIFjLkFMJk2rxhJQqaI/WEctmALcMCFRCBv99ZZP5UD
+HIBah5VwJ8JsLsAJ9qGIO2EhBmKIJ3cf5HZy/4EXRMCzss6ZmMldGwzrSCezvFbyeEQyPQcESEB5
+g+ACBpk4Nqz30iLGqJkUETZ9n+gknGA3a01i/fBgjXd4MzIFOoAeljf/pIkDbiAf9KEEUDgI+vmF
+AtL7/u8ig9c48DinW9ZO/p13Ju0UT6MtZv2PwzzRZpPtNluzBr6l5+q32EgHisfzqN71sDrCVDlp
+azpqU33xvIyJraQQW3YqUqZ0HZ3JGJsJiuk1baNYBpL5VQkhEJi5meM6bLFgODkMZ09WfdVXJlJ4
+b70hBtBAELLABlKAAphhb/NBSjuqAdTZWvcnfi4AcSXXE4KYBfQVcodVH1wgCEqBX83VH+yBJoyZ
+sVLt7kT42TpXBW4VO921JpwADZzAR1zACShsCE26i4NAA2ogCGKABGrAtm+gDigp22oADdrgBiSL
+BrxzcqaLELaABUjgBoKgBijUCVYXDf7YBbagDnJAm3JgC35AnJzACdgC/k2ZFwUYyXidoAY0QAvy
+IR+0AASomy4cJAjqwAnI5Qaw2wUSFLKE92JzOpJvIAeQ43hrwAa808JmkksnEqMxFnfH18JQLRHT
+4uie2vFIzA0PMxoFB0lCK2RTETPHs9IEVGtfMffiAvJehFK1GtVIDJmAkRmFQiTvbrAF4Q8g6Q8Q
+IRCaGRJedQ6WYAcOdZtY+/1e1nxROFir1RtmCAgWxbxj2B/0wQnGkgMg4Bu81R/yATgU7QQuYAv0
+YcthYSIkxQI0W1jxIQIqIAJuYHf31gyao5pK+7QlK8Wi2uo2LLVVYCm8gVnzgRd2Cxb2oRzYgR/4
+gRm4GEr99Rv2oRNC/oAZ9sEb4MEf+AEWaiIINtYf4EG/NdJMO2HMHx0EvGEfjIEEIkEf0qEclpUX
+tuEf+IEebiAFmCEfvGE39wEfeIIe9mELSICQ/YEeviEftqF6lzUfXKAc9gESRoAEjGEf+MEftgFT
+OmEf0iEdEncadDoHfMB4c/p77RR4E7wGcACchPdQyfSa0R3uyK8lA1F8bSAH6jeK2/CF2jXbNjef
+oIhtq2grO4oftW4KrZBDhOQoz+U+c88EP3Uo1+ocS2dDTiCfXrlNqfm441rHw1aDgUaD62AO1McM
+4qw5G/kFwGkGZuAFYICh81lYvyEFCpAGfmALnODVNzsIPk0EplWx/hPtJjqAW/cWiBktAohYzUkg
+NRKAECaXGUJlSEuTUsayIWNycsYFBJA+H8bBH3r9AhjhHyY9Hf7BHvSVX3eABKi1EyJAWfdhGiod
+HkigA6i1HLDdG1gsEDsbSg0dFjRAyxU9ErA+HdgB1unh6v8hEkggsbeBLai8BEhgY7VAA14dH8oh
+2r/B2flBH4yhA7w+EjLACfSBH+DYHwghAjqBWb/B6/FhyIN3B3QAj+OdBg41wdHdwuy0eIl3EDOZ
+uW8zI+3YOOK3e8GJguk1ETfTqTWk+J+4h6CIwPjxDbWSmRokbZ06+Lg2go9W5P6dBY1W+YB2MyO+
+54hPIFwobWGg/ggaSZI2+A+C3K9qYAmwkabmAAucIAfUbgYGUQbYQh8AW7JK2ZhJYBqKWB8AYsuK
+GCxQVPj2L6E/fS5GsDBRMIMWfgn/+eskYgWLEBhKVfyHT8SJFBgS5FP4r1wHFCtUuFTxQsUKFCTK
+lClhooWKGDFoyHgREwWHcv5KJZj2j1mETv/SRQiiLx+JCPj+BYkwzh+sCEjHJXjzz14HF/rwlSix
+L59PGjFSbGlagoSLCAiVEvpHL0IJfP60JEj3b6sxf99IpFiYgqo+Jx3g/XuToNw/bwla7MM3N50/
+QhWm+aPMtFyGSP/gJbjhj18bGjl26MiBY4fs2TRk25i9o0YN/tk1aNDoTcPGbxm+acCggUO37xoz
+dsvWsQPGihUyNL6UyQKGy5bYH6pIsUKnCRUQU7BgoZGFzPTpx5sYr+LhiZYoULSYviJnSxMjwadI
+gQJ/AZowHYHvEdgCehq9p15LLZwQX04sJAhDEmMEgscfhBAiSBYzaNdTDLcBkYUZgghSRxZR/OCb
+DCKQsM9HhbHlUwskMFORP/k40QJbKWQwTo743CfdfSC8leMqJ6CgwgkZwIISPiMEGEIE7ORITwjx
+SQeDDDCwkEIJ2ZxDZhn3ybCTDDLUAEMKItjTVwJ3lbNUShG4kI9UVPmzBFb/eBKBMf9Mk0AQ/OAT
+gRP+wBNB/gL08OPEmjS4oCg9N/ynQV0a3JXOVHBeFSQsGgz2jV4LnQWnFnvlcxWOpbpwWWabRQBY
+JAlUGgFpTpWQjz9o7NbaDjjkYENsNfjgm2wz0DBDDjn4RmxxO/y23LLIFRcctbux9loMKmjXnXYw
+MKlefDqdd55L561gXrntxlduuinIkMK3CcZHXr3knWdgvvm9NyB4LIz0XoIJencChNN191B4LBGo
+cAsS7wCEDzawIMOZ36K50282/IAFGnUIEogZUbhAgj45enNCCzDMEMMIFwhakT51wNAlCpmipE8M
+JsTwwgwmgKCFP/5UBMsIKty3gUcV4ZNCTiFIgFBFWbYQ/sMKL/AUg87HkAn2DS7Z8IJvL6wQggt8
+BVFBG6VNwMg/40TQgj4MRWCPVVhdxNU/pQYBkgZu55NOOvr4UwdrNaRAwjeLapFCB94ktWlTJJRA
+j94IbeWqYYh1QI8+WrSAjz43ZHCXNxHcEFUJEwBGSANwEvJUWSRE4o9TZO3Txg4/4LaDs8HXFnxs
+trlmcbDCMTvD8sL1hgOzreWA7AyvtSYuuC2p9+W76ab35XcNphevS+F/+xK46OIsvkwQTdgyedMF
+uLAJD583X5Ph5R8veu9FuJ35DOgEBPoPeq5THRWoiWMxwBkMbHCbJZRoC1pQWUW+8TM0tSkDSFFI
+PiKB/gYs0CByQVKI6Vqgmxq0QAQTQQksdDKdDkDJImEhQXxOEIFtfMQeKTgB+3byAieNCWznMJOa
+cOYbGIiALFahgBbe1gl/0OkG+9BHYviiBT91IgI42sZTDhWBOvxDH+mARxmz0JsdyIAEjfMHPrKI
+EGPkqikdwNw/nOAnzhEmAyU4VQk+pTbT1ckbGWAdPm5Aq80kIG+CIAFU8KEBXZGgbvn41Q+A4Cwe
+yIYG0HmNbIIVvGm1BgfNwoENlNOcbOUmWLGhgQ9CmYMZTCtrW0Kfem55ni+B6yX9Q1ctfbkCLmXn
+lt9aAQGjZh+IoCAE9uMPeSCSnyX9a5khCBCECDhN/mg2qQX/GUHCEsYfEYgAQFHbDry0k539mCAF
+D5oOxwbyAhaM82gKGccNbFDMEVhgMDVzAhLmEAgiaKCECdmRGQ4aQheggZ4W8QQKmHOCDcwwIUMa
+iD63wdAstSQGXoJBC3Q2RLBpASbW8tIKJskXPIqRUYyQYgRkEJWp4IMfQbhAkLY4mGlkIAhujEAb
+FhWBCMjFBTeI3m8YByVGTW4aESBE7jpAgrwFYaBF6YCgtkGCDnwudKqKylVg8ZnV5Skz/4hEBOAx
+K57iowO6upM++IGGG/zgkkCg2A58QD3qDSsHPHDWbWTzSmLVwFnB2UHzntUsGzxrWqIMZfCCBoOz
+/kmHmOBSX3Z0qa70/RAGBNGILn2pnbOh5wY5IK1PRiACFGwBEp1ogwxOgJ4JwYubIEgBGiABiS2k
+YEq+IW0Otie/3t7gBsvkwA0I4QlIIKGHsD0g+vgDAhes1hORwELXXIazGEiMAyQ4ST23MIc6mAEJ
+MuhABxOyj9HVwAloCIJkatYGQeAWEoLQglM/AosU9MZGMzwaDxWYmBIeLUvfKhvQsgaCMhDxGCVY
+AVuC9hslRiBzdRjkBaI4Rbtd0R81ndwWPVOqCiKqaPQoQQfKgY/czMYFjKOKVOLYgZZ2KqpWoWop
+LsAMwphKH2cpXRaiqo8+IUV1QciHPmRAq3/Q/k4yW/kpO3L11BsYOQtBoBgQMPmD1tQmWHWdzV6T
+5de8ypJYzhKecIJnZme9Emcv+GEDHRi+H8qEl+ecM87SdTbzeQt9L/CSCUIwjn34Q9DMuAAa2EFP
+N8ICBbCd83s4sIVHKSQdQVAbPwadjyxAqAUj2II+9gFqe8SABN7YRz8Swg9vBIFJ5kNnfXiRN5TQ
+YxUEkgnOTtCBDlCkIt4AQQ0kaIb2eqZmS8CaDVrgAoLqaGSQmASH0BCJXScEFg72WQecRlHroOAC
+jqlIOULQIxrEhE3oiUAZjpENUZTgBGo6JXOW1YIOOK4wgNlKaDTQAh2VQDFZDFWgBqUBwK21/gNV
+obI+7OEbHERvB5GQbllymJTbNeVFmdPCQAMT49K4wKn4uEAHUpXkYrQgc98oZFkQqRmzQokdLUDI
+NjLAlE7h6R9tqAERgDDXIvgA51d2Vpap11fA/gBZaBYOdIJDrB3cpjY+MB6aW/mDPsMEzsdpM/o8
++61cBvM61wEKm7NzzvSY7wQgeK8/+sGMNlDEaBXpBy8g8iUZoEAEaOjVR/xhjyBUBb1bQAH+trBr
+N97AMUZj+6IIEueEuQAwDGX7ZND5Eg6AIEYW+YwFOGACcUKVZqjGQkcD/JFMC4IQknB2FnD3kVWw
+QDgrAMFEQeICNI0gZTmaxnhgUAOy+WYg/ozbAAcysoJUplLpMRABT//RK3rIQANgLQcJWJePFuyF
+wyQI0ipIMGSilaUEGSjGGE8yDRnIJno1CJ3RtrEzZrDVcimgR1/8ZIwOQGWMh/tGB9rfl2sfrSw6
+3kFZapABmgEJY1EVh6MPQdABUZQOKXADfLEadHVJEZgDFeMDFdgaeKVJwYNXFlhmr6FYw4IDTVcb
+w8IDOlBXc/VKP2EDDxRZXhdZ4LI16LNnMaEud/YtXUID6KODLsETLBBPKNABWaEQ5WB3d4d8NwAf
+TSIC3aYQ9GQ49MQPW+CDK9ABivI0gIESH8ELftdm0xECk3M0DPUR0wAe35ICIEB7FcEO/rDAhm0I
+C1iIXpFgBnOABT8AAgQ1RoQwB5LAIYFgX5emENNwA17CAhzwevYwAuEBc2JYByjELL5BNmSjEex0
+H8vSPGm0LCqUAm2QDvZQDpCzienACx0gA+MwDtz0DeUQBCLAC+VQB2xVDrDQAUtQDt/wHy0wDfRA
+D8xAHDRQVxkzDfAAD8bAX+UQCbaVDtMgMd6gii3QioLAYpyID/QgiKhYDktgGN9AjZEQiymwA6Z4
+AyAwDa6YVVpQDvSQDm0QjclYAt9YDllwZUCwBDz3O7LRZRPoA5fkO3NVMWrmAzqgWIr1Spv0SXeF
+ZkMXPDwgbvj0IS3oEw0pLjFxWV+S/i7pozVj43Uu0WaYxVkwMAIZQBQfQUMoEYaQ4EPowQGCIIZG
+2IQCIR0sJG0ieXf+wA40gEIwYAIccF8y6Xj+gAXxkgEwIpJhKJMVsQ9OQANIkAXt9V4F1QZ1MAmI
+QAh/oAWoVxHTYAYsskavt1Yc8AFt4F1GQw/1IhwQNANnmXvMUja3IRzDogOyZFg1Ejn/ER5tgkIu
+wE3cRIktoCZ8mTHz4gIeJQOxZyO3KH74qEYpwGJ+OZhrgmwLtEApVANrwmKKKTE3kJd8+R+beYtg
+whKbOSFgspkotAN4OZmDOFxz9QNLcHM75wN9xY9zdVeXtHPCg0llFjzLQ4J8hVeq/hlYmlQxwvEC
+K1g2bPKCZ9k8H4JPNHgdkXWWbdY8N7iR4mI+3HECF/cR+BAJQdAGTJgQ0xBMOHlid8cOhNAJe2eU
+W6ACNMACVSiG/jANThAE23BqFVFJc2AGWLADJOCd8NkGxhCT4xAC2cFoImBBWdiE77kYKaAduIaH
++pAFI8MhhHB60gafImMDVMiVsDANiPYR+1AHKAA0OJOJzPNXAdkazDFKsXFmXXIfrPEsujEt2KIc
+PtGLwJFCteExyJZwr/kDijWZMpoDu3EDSkcbmxQE08Mbw+UCu3FK4+cbLiClEgMc1IEmZ/OIg4ls
+zjEbVSYbQwcEQhCBN3dzFXNl/jvHcxM4gRWDA1d2VyFIPa8UG4FVgRa4czvAAzgnHGjpnDMQNF6C
+Jr6hAjPQUReTHR8ymcLxMsujlujzQC5oTCD5EfygBRcwAXfiXQnhDeSimOhZGlMBAYbyoVJ4NlUY
+oB53AQ1QNehFCIEwCR1yFyhhDBRwAQ/QX26UA8UEVZRXlEU5aEigNTNhUzliM3+ACFFZB1tgld85
+B4KABSYgQzw5kiDRBvOiWB7TPGYJFMlpA82idMajZs0iPLn3SbEEkMGjA8jxlmzRAsVSPMKDA30l
+PL7jpvRYZhMIprS5pr6jczyHc2VaVzmQZY5lA6+kWM9ySt16id3aG0kXWD9Q/qZoeklLMI9XNo9k
+So9zJaYVwwM6x488EK/Tg1ewgWbQkWWxuQNE4KM/8ECKdZan9EAy8JwryIJBExM8YYk2+zIvmF25
+FwMz4BLGARQq8JF4SA8ggLQbEBkfkQ5KQ4WA9xGdAAJzl2QmpJ74RDSNVwciwGmVoxD7EAkn4oee
+QU/5sDgjoAHTVxF1kAIxEQIpcKAI2qv6oJ53RQPV9xEQuiGEIJVZQAiAaBHTAJWBsHycR5KohlUi
+ABMQRErNsa0nOmYAKTzIAUG18TvFAoJ5alewgUkjuwMrwAzwAAs0oElZ1nSyAZw8MHRzRQQ/UASX
+VKZCAAStywM+0Lr/KgT5/limEPu68UgERdCPCWm6SmcDfbVXiNUcEHSwfGWmqokErotzQoAErLma
+S8C6OGe7tvuvOBeB9XhltatmwjKyfWWmqisEPEAEFFMEyKmwZ/kyyfu+lkiILuEluTecyfluzQOd
+LLizDVQQ41lPHcAfJgBxFbGA2tEBgtCEBxiaF/B6+7AF7RoD7mmUO2ACxnEDSKIQkcAhdaAFV6KG
+9gEDJ0ABIPydLvMCISCUk0YIkeDCLswITbkQkdCsgUBlTTlGaGCsfEuhyzooaCBfOxCtcktD+JBf
+P3GWwdE8ucGtxAtBMACQsRGCOmBKbfocqAuytYunPIdXM5ACSyUDsdG7/jyQp+c7dLubj+g7u7Bb
+pq1LBL/7xmRKBLL7xheLBNzrulocWDggm+lqAwAJkO+GAwCJpuh7c8ALx9NLsUSwBK/7u6ypsrCL
+vapJxvkoBERAxp07sjhXBMDro3maj1dmxkTAltlqidrKrWYpbg+EnMnpp8yhvPf7MoP6LcYBtCiw
+AXg4DeD2AiLgwAyVDps2xAlBD/dRqkWTnibwJScAePSUYjJwZkUThv7gCXiACCniqeWwAsMSAyDg
+OJOmlGjgBE4QoEEQBONcZdj3oVkAzTVAhQ+KBhvyqniwBX87hnMwCYHwAyFQCgzVD6Ymk/BABDLa
+rQqHls1jSoelcMzS/q2GdT2xVCywMSyzwVd4+gOq+0qklhQ1EKYQ66Zrmo8Qe8Y3B7Edq5pufGW3
+O7soXQRynNIVI5t8xZsUONGm1K3MAh0JCRv4+sarCQTT29J1jATT+9NxDLAvTVezC7zAOT0C+7q9
+qca1ubo5QKY/cJbCkq3Mk63DubMvI7Mvi7+6AZ1A0a3d+kDZYrNA66AfwQw5QR5PkiPpIALo0QE6
+pBDwAHcqYHy8CsEwRMFHgw/GEc0H6g8c/AdtoAWZ6jdo0Kx14ATnhXdOkAVUxjof4Q3YZQP00jcV
+wQ9YEDQzsG3Ktg86jAiQwLfxnGg/DAmBkAMgwAtCsgNaYAx8MZI1/jkDxgNBVMywTVywOaADFlNX
+OvDbQFC7f0XFZJynmvRK+TikJKBDvIiCGvu6Hr1zLQ27vfvGndyxRk0ESICx8oixRmAERq1zsmtl
+J4uP/2jTlfuywgLT/8qa3h3Hi7wE3j3UjMyaLW3fQk2PN5e7RYDRGxinOCewrtvSPiC7l9TSvy1L
+7wZBu+GnZPMh7putZd0c7Fvh+sscbRYTK5jZHokBOGwMc60dcG3AEAKtk2PAIvCzI8xEfGcCF9MB
+UEtRufohLVBkTegJdQAJfhuT05AFjVwDIBBFTxN8M8ACJCCGly2wuSkChpsPW9DOK5DLoVcH8mx6
+0VZ7zSoIMGBV/tn5AR3wAPxJlP7AC9CMnMNS1iE4yKRESv+oAzxw28KdWMWrcOmNV8JCPUOHLCIQ
+RzGQ0j4AvAb+A2Kqumc8u5fMxiv9xorOmuD9A0ONBEZAsfN40sR9vmTsySMLHW2+3goH0wg+6ELN
+yHWM30MNyfUtx0RgBIZcBEaw0twL0zkgpoo+gZ7cuh7tum8MBK5020rXymYJQT1glmepcMIiLMHR
+rbEE1gxb1j2wnjr7IzJse8Vk4gkRzDMhqUPoQzNgTGqTIwLxLTNOlCk2ywwoaAohCXjQwyJpDHVg
+1RO8rP6gXzKQ5HHrDeIHp4sD2fmABTBQgS0AJFZe2pCACB3i/sPTAFBRoKFRMkkpcAGAQ0P+oHx/
+7BrFglfd2nS/Ldy3kd6+DQQRzaVj5kpzKq+wQYUYFX6G7NHOgkl1Fa8XrdLcG8f8GI8FDrGwfnNL
+IL2s3smyntQ/wMch2Fd/LFi3PcgaqL3drd+SLtT1rcj4zetDHY+secmzu9JDh9yeTNxA9wPjzbs+
+r7LdTcquvN7Ku4J++spsaViGVbAKB5DKrryLijM0u4I1QB7YmRDMcAI18AImIFEMxQ5zbQLbnhDl
+MALDqdckgJ4QbAJCcwLk7Mw5mNknQHv7VwobUpWONyhmYDEwQAKxil4owCwnteQxgK99zk98V2Yw
+wAF4mA8S/oRbniAIbRBtDLUNaJAFZMMBqw8SP/sCieGd+yBCOx2CM/Ca5gobf1ynAkv0vz1YIhTG
+07J0MuAEW3AsPlADGdw4SeGLc+VzP2BzaOAbQbAFJ/hzWIAFdfXyvb4EWyAbQYAGS0Ax02sEkq7z
+Pg/g1n3RxF0xvw0QPnLYwIFDhw2CPAQS+UEEicMiRZAgWULRIkWHRjQamdgR45IlREQK8UGkyA8g
+KX80RFmECBAhQEzKLCLTIREjS2bgsHGwxwyEL2bAAIrQBtCdM3QoxQFUR8GfR4/ynPEThtUZL2y8
+ONGh3L9//v4ZUwHDRosMsMD685fORAsUF76uLZdCRQ8V/idI0Av7b9+WFC9SgHAiViy+HURp6NXX
+1x8kPH+yRAK7dhqSoyw6tOkn9l+/HDRosCCxr/I/bzBwCORBI8W0039tCKRRYy5YfTV0JDEDebJn
+sbhq+PBRQ4Tavvhk1KAho8O20/8EmdUhMAdPgTts7MBxnfh3HDtax9gBLx+8bfimtaiDj920fPq2
+ic4Cbx+7cf+m0fARcQcQeOiBBR99xkGDQHzmqKEGJ8zTh50oargBHntgsYeZGOqgh598pmnoIZAq
+EskmIH4QoggfSiTuBx94UIiHpQoySAceiqjxpSKE6EiKJ5aIAomcJpKCoiWyAGmiJYpYwogciVjS
+JSRc/hKCRRcFOmklJ0UiQgiGRHKppol8IKioo17ogSgbzDJqtR2e8oEngnLQDqmlnuLJzKx64Gkp
+GFbQIL/KpkkhTRVCQC6sdEJQQYUNbvOnHBNgMEsve9bSZwsValABhC34qQwfGlRIc4UUTAvLn04I
+EQSNSNiqjBcVtHqBAzQ8+4cf7WxAoYXGKvOGPBfTBAG2yvTJggYhsqgjiNv+0WeH/yILQoY6PK0M
+Fhm6m0EEY07DJwb+YvgAFlv9WWU4GYnjAahMb6hhOxd5yCGHFn3QoQVm/IKnMW9EQMNZeODxJ58g
+RPjGH33g8ZSZ2Vai4YbG8BF44HTy+SedFlwoxx98/uhpywUX8EE4H1hqsKctfP6B5IeKgIyyJi2Z
+LJEklxT6gUaFVutJoNUUMglJh5KgiKMjlxAaiSie6EhpjhyaaEuZQhIpSR5SOvGHiCIysaSXcOLS
+aSbhnMEpSXW4aqidqNpJKh4Masqpo5ZC6KCqEJIUBj5ZAMHRaVQAaoXjKvOHHRb6lEvwcvy2YTES
+Ug7rL1Fh4NSwfxBTDYYRSOjVLzSyQGMLQk5DtfA0Owh9rX0U1bW007xhgT95YyCB2LD4yQKLQAJx
+goT82EL4XSAguWKHFNCwFixYYvBhBxoCT04GGswmoZO1wGJGhTdbNIh5FxLJ5hxRtJABCB6EqDIH
+/h4Eg+efTiJgx59vQKgVnxJc0MefLUiotI0OBGaGPxTVIGT8aEME0vGPcnSgFP+ARwqcoA99BCEI
++iBY41CzAxcQoi0aoJ43WDYRjgDJCDP5QY1KpBAbmU97O0BfaFJUJR7gxCEtm0gUbHjDKPgoCk6Q
+wpCMNpEegbAjQuDISV7igxGuKIZYAwIShPAkICzhRESaCEF04JOrNOVMP7kiQWzQAxu8aDbYeVNB
+rDgmMlVlbGaZQQo6ACiwCAoHMJjVodoyAq5sAI4XG9RQUnADx90qC0SJgQiWwA/DgAooXGFd7bIg
+AxjIYAv7sJUnVjCUF4SAMpXhx6AWw6vTfGMF/k/piWaMYat9RGIOWNABCzIwDlvlY15YQAQSMNgG
+W/2DFzXAAQ9sAIJurQVUYcyBCE53qmnUQE6rKREOTpCIc0TzHMegwQy+U68dyMAFlQrCBXiBmg5o
+wR/0EAEJ1rcF++1jBxH4hn52IJIfxKAGInNCBGAzjQj8Cx4k0OA+IyCwNqRAZFpwQQq6ZYwIiBMe
+DelRy0ByEialEGYmQdGLYDSb7BEHCC4xmkYqsiSQ5PCjWPDRkJCGJJNSUSIYMQlJuvYlmEApSxUZ
+YUdqmgSjHGWNSwHKmQ5CyoPwpCk0KoiYemKUnx6FjWea49hQ4BXBTYMFPIGBoQSXjku6sp1r/mFH
+pHDAlSBYrHZbYGMKtmAryyFEL/kwjO3SlIIgmMp6LQCK3uxoDxHAwDUkKJfr0JgX2vmlDmObgQqe
+cxp9LAEHdZiDL1PQhuP5Axawa96hKkeDMZHAspK1wYkUQhsRfE+a56CCD4QwpXrhoAWAjOD0/vEN
+EkC2gXv5xxZ2wA99uEAD+fqfCW8AsXxoIQP3jC0DFchHEhyQECUQWRYKejB4fMMb/rDHEoDANIlk
+hGs1uVEMRVKvp7RtNd0hAg8aMkMk9Ei9SrOhFH70hCzcUGg2pEgUpEA0JCRBijIFktaMcKItEfEk
+XwNplNLbEYI05YtfhFtSwPiUqvSSOEG1/hMY9bTFudXtckVhAQf2OI1L4oAGHLBjOk5ggxiAgBe2
+aiBQYCCCIBzvL0SRgQOPh48cWPMFpNqcP9BAxxPY7zTTOPEMVtABZrBYVDMwQQru56tLdtGVp0Sd
+E44KAw7Qji22nYQUfOCaOuTyXDxok0G9xZ/liQA6p/EEDWbmoiLkgASilSYVaFAl88lrBTXIxz6C
+AALKfCOc/6BHC1JwMi0EgWM3SEGSp/EfhshABgRaAgmgMw0S1IGBESBXOlzgFX8wogMi24I2veEs
+fBAIHkuj6QiVBOAgZY04nlWImwpCMyYFKSTsxeENn4AFJBjJRz264dI80uqH2GSEOHHJ/kZ/1rSK
+KK0i7pWCDsCIEC1SxQc9+MlFs2cna3uRbkpR4064/YI6cVsHL3iB3vjGgqMYx45d3YoINhkWxAil
+kIIQ3RYIAoMWnNVVOKaBdjLWGLH8RQY2OIEI1reWdMC7sK88zThMYIMaoKBUrWvBF81CqsDuwwlm
+mWMHNiuILATiBz1wDfVOAwnxtCYF3/QdqK7jHHYI7h9zmEGNrvamFYhitNlwwqxP1J/iADIflSZX
+/GoFDxfsxR9auAHHZDA7f0wjBycCgoQofdhpmI6Bmr2YodPhD0I07lICPLUxOpACFwRhB/UlEpN0
+NJOvORFI5VWXRY1u2iYa4Qk/WkJD/t17QyO9Fws5XHx7iTR4l1FESVk7UdYyslEmdRRINP3oRHpK
+Sh9UhdtjO+p43/TZtqnrKaMnfQ94upUzaeUqNjCBh4esGh9kssQdt4G/bMUPLJjlxaf0zD7MQPIT
+dEqYQOg5DkglVrFkYWwviAAsK2OPGExKf6fBVlPgvjnUnGBsBdnhVsGyjyywAIwvMKbOp7EFLOhJ
+cgerzD4GS5wcjCCYYMFHDaC1giDQuXxwAmezEY4AAhkIgmOIpmywsx04LfIxnx+osUoRrm75hhTQ
+AkJrgRZAtBKAoCBgJ/3Qgf5yAT7TBy2YHf0oLniIgNChBxcogfVJQVJzjW7BtCBI/gdvcIikeYLM
+a6IiGCH9IiIuIYkW2RJ7KaEWKUKTeIIgSoIbajwbii+kSRosgK/Ga7wsUBokkAKQMIIkMAKY2AiN
+KIIkoKggzC8n6qiKyCGOGDwpEKrqGC+gII7V6IHUspcq0Z56OQp1Q4iqwJseEApANAp3iyoWsCYZ
+AIESMwGg+CPo+4frUYEUEAG+6It9QIM4MasbA4LZMDIhqx1NXAoQcLm+qAMViIET0ILIwoIxgju5
+eq2O6wHcyQJ8qR7IAUS46gfBwYc2aI4XGAFAOo0BjCni+aZPWYEVUIEgeLjKgAcZKB9mk8AaaIEV
+0AIqCIIaKB8BY5IU2YHk8gdj/jCn1wIBXIKHEkgBj8mCDuCLTnCB9TGGHfgor1s6FRSU0GmgHYCg
+LNCCfCCYUfOHLNiBGsjHDPqHcWiiEMm1IuKIJzoRjeivPOMBPDSJ8gGCAzwpxluSKIivwrudJ5AC
+kgIi+CqSpLGhaMuhHJK2EJGIjsqJNJQImOSIJOgRavuR1TOj1WiR1IuXHniRa/oO1Auqgoiwovyi
+pfiJv7G9QJE49pu3jmMychQmJ0gBqxIcfcACa7IBswIOfPiBMLoX1jGMQeIJSBQceqjKZrQVesAs
+GOGx1lEB3AkELHiBDqAy3BgkL3qLQAILe1iFOmgDWLjEtYAH5ishIysFr2wD/kj4BpEpF15wszLU
+kTAkghxwgRVYDoWgCYg0AjJLAbUYJ5HBQFyih2rkCy04rHywB4uZBhzQESG4gR2ID8Bop20QAU3b
+pxRop1R7rRRoAXzgBzQAAmjhi315DKRRmh4BwyC0u4ikqNM6LRRZQjjLGjCsyWgTyS0MycbDwiWo
+gi1UySsckh60ocF7Eo3wQY74L8nzKKHZCBD6kV67goyyw5y5JhfpgYmMF9TDATw0iG3joqvgNqVC
+iJ+YIxGYC7aYBtX4KudBFHgruXxZC4Qph7PLpUykgYLoyk/5gZ4bCs3hJDSogZ9oARGAI7bIB3oQ
+q8rYBjSYAzMQghhwgVgc/gczQDnXe4FhqZ6sVIo3cQ7zc5W+iA6wcNFtE5OZE50hjQ58AAIcaE4m
+iZKIKq+qEbAn2pIyLI4WKId8SIfBFBQtoIdyIMhyoIdHAoJ00IdyYAZ64IWNSpIdaEZ4WIIW4AV6
+YAZqEdMbkIEdKAd9wIdxWAIJSQd4GM6uQwN6SDVmCIJhO7AyDMMkyJGIKEOJyJGe7IEUKkMj8EL4
+eq/6usIpTJoquEKSusIncIIoIKn4cq/0IjYeAUONEBozjJIwRBopSIIk6KEh4ZH6Ik+L2sNfPTqF
+6IEhQLoi+EmLukMz0pM50qnRszAbMKwPuwsdWMR5GwHXm4EQiDEl5b/N/nGr0LtGRMK35VGIjDGV
+LUO3n3AgFiVS/qsDRPCETBCELYAYxImCIYgXhts/v3DFKsEBB4pF4CBSfMiCOXgCLmkjfh3SXOKH
+SPgPMHyCMAxCl7A7A2zO00qSWm0N/xMgaBmOIOi6OF0CuTPBbHKBlHAIHyTOHUCJHEgJ5vkP4tTG
+FviP31qCeQQCH5iIrquBkN2BIlDJicBVkzoaKNWIlhLWiODGXNOvwTOCVI2CUT3J8MSC27laUsWC
+UV0CKewhIMq8/DIaXPVBJ4xYmuQ8aeORIcECKaBIbjMtIRiCyptOhfAs81GhIshX4qgobnNbbvtb
+oviJC1u3E+CbFRiT/hEosVFCiBY4LHeNBMfxB34wg61kgbP6FCEIoxkgDXQVyKIaCpPjRXd1Flio
+g0mQ10moA3ESnG9AM+JYjJAzgy8iCR6oAc0S3dHFjU6ogTmYg4QFTSLNJb/AFh8AqSDsTIplTk1N
+AiKKqIhg2TbZKJ2V2ZRIkZoAAjTDGqJ5giAskSuJov7IGusiTum1rofICZKyrv9IzlelLx+UUiCR
+WIz1GiOYtYgwCY/KiSy4gh4qkh4xEvh6glENTye02izIAimogsGLr1TlEfu6Ly/MCVxdgiHZVB/8
+oQtWGh75tfQ6PJ68W5qJzv/KmhrJWxTJM/10EdplMDQCCqrQkzLC/pxmYVD/5MoVO5V0iJVzO4EU
+aJaw+IYPrD9NfJOAsxaO8UQ8bAEZ6LEhXg0jY0Tw+xRYQANJgARO8ARIYAM0eLKwGIcwihcdWIHA
+0gc0KJ8l8UwbIAFI6EsipQdBuCQsgAQpOIkVmFB3pZghBpL7ktKIisiINMMoCMOIUk8ynLwkaV4z
+TM85JoIz/JkN7sKKEJqxhdoa6kKU9EIeSd8NXjyQICn3Ipo33FS1Zc6JmNRcO1oyDMMegkOpTdVR
+HVUssFoFttpY3s5UjWUnvIJZLjwIFrz7ajVYpWCJvdVXdS+r/U4Hpk/TKlYizJqlVaF6KZ+IkM6K
+IgkV+ls81BM1/gJWG2ABWPAGcPYGSGjQGWAPb5Aub+AFnhpEVRQBO82HjoGF35yGcPaGJaCXM1mC
+c/6Gb9gGX+K25jjncEYCa3qR0WiBNviGFf1H9CCEOSCESYAEVZAETwiEOiiHcRgH6fIEa5pmH5CB
+xuRn6coCjJTYSC2CGnMCY2CH4JTcfbCHcvAEGYA3TJ0EM0ARGRAEkebnfd4GWCi1GvgBRw1CXN0I
+ig1DQl5lJ/JBou0hwXPP98zVmKTgDX7D+wrJBw5JXXVCDV6CK/jOA07gKiiSTIblWO6hpOFfp45V
+Xq3J/voSI5Bbio0IteWRwrMvrIWvLABPWt7rjvw1rS3J+DJg/in46qTZVFHWarSu61sVZmrjEfA0
+kitIVf2E2xRiWovNESIaAokCYbk9LdPyTxgRXBimTl8aDREAARE4gavYNrNhgdUWAXiTlAPNik3p
+gA4QAdmGARYwUd1ORG4riBdruBYwC/GCARUQgRBQ7YuTMCEIbiwwgy3YAifQAi3wHDyAhNPlBEjA
+YshAg89ZAhjYAdOS5h/IARkwtBRYOB9wwsILISHIAZJOARIQgQ8oJ9nuuNfkASMwg0kAkgk0NBFI
+AfomcA5UplYl2pAEEqm+zk3twlwdYaJx4I3Q4EdecKhdZYnNCVHuYF+OVQuGr8KebK4Oz47EgivQ
+6yvYa7Fm/lsnRBqhGWYwfO9EFqG4Zs7m3DysFvHJTvEV19q9BuxR1WW2PeAtrILy/DUBlgIEDkmo
+JUOy1Qj3csJVFknttCEk519uNB9njgi5js58/a/ozNvoBG2/ZVa5Ke+fDFBtJqyxyWZmvZsX8E//
+vCKjUgFlJAo3JywvCu6voiMG+9s3uRujeNsj9YE5QIQ6qAM8QIM6CARBiNfungROOF1IQIQ/EARN
+f4ISbt587Y7VyAGRwM4Uf3IsmIQl+DKMiyQNleZproJMGIMwFILu8I4cOO+oURLzLFsMD0kNrnAm
+gVSkzi9d7agX52onf2pf9nUN/+oRR2AK5l8ATuD9Dckq/khx90rxwQvJFd/freYITkVsJilm5uTs
+o83VWt3UK7wCrb32WO6C25Hlbj/rFK/lLUTxV148ZK9yXd1Uqha8HuRUansCXfZrgv/Jyrtb/pbO
+uIVIFLG7MZfbbXvunMHmNa+R/hBzFPoOYuVPPKRI/xzcZ8Xm6oiIoMxmjndbqCCOCxOvC8PmXiqC
+3piEiKZ5K/YESVCF0/UET6h0LKb5SQiEAD2tIYjrHFmS+wpxUc5VSP+vWSeikjBlf4d0+8qJOYbS
+V4VaX88v+0Jq/YrYXO2hXO1BshXmVqXy9LoC/nVyp/baskX6w6uCwyN4gk9VAfbqHjLgvd7fekfx
+A5Z7/sBG4LV/aggu2y5MZI04LUhN+g5GYPe6dgS2WnjHgskHSYJXexQncivXe8wvksLzdcHzdSfs
+el6l8g1m96v9cRThthNp5smUcCPQz2l+7tYfgp8k+TLiNts/LUyNzmHt27/l7I+H8+DO5pDvWxXO
+193HZiMkCZgn0L8N+V7KT93/AqC/4tM9XUmgeU6o4kqndE8A+v/q/eY9Aub09aRJeimfBAA2w0iF
+Ve59VYntgkxg2/QM5AgPe0Ue+Ae+L6GRf4B48sTIEyRJkkgpIvCJlCVInkRhuARiQ4YCpVzMIgUj
+RiMcGV6JgiXkxitZqjy5UkUlypNYqmS5cgVLF5hY/rIwlIITpEePDHsSPHjQSBGiRjwiTEIQJEaY
+KrPQzNKlC00sVV9afbmyik6UI6WMrBLxyZIrUpI8UYpRoJGyY1NanckSS0ohRoQIKVpkSJG8RYni
+7Yu3Bw+8QnjwGMKjB2PGOHo8Zox3cY/AexkXLtLYx2IhjXvM6KHjMekenCn3GKKYsJAhdj8TZuzD
+R+nPQ2LDxptEkqdJnnjz9u2JE6TenoxPSp4JSl6/hoccLSK9odCDXVQ1MXrUY5EkCj1ylBIIEEIo
+F6UYgTJ249KLFgWORbLR4RWGEQkenchV48KLKJ9UMdESb/VX30QQXRSRSnTJFIUUTpkllUtRSfWF
+/hkntVRfSk/gtERP7KWllFJDMKTUQhjFlJVLM3WRxYVZfGHVFzGt9EUVX5gEE0oyVbGSSlKYdCBE
+E9UHloMo6XRSTA/WlAVOM0EHnV1HNYEXYEX5dRRfe6mGGWaoyaaaa0a49lwTqaXGgw+wwRYZm4RJ
+Z5lqebF2V2t4nXkbbojN1gOZsu0lXRFjJPdbb5Nw4ltynEiCaKHETXKFYXlBR1QTPOA3UBJNbBnI
+HNl5V8QRQqRF1FoLRWHGJF0oddR7pza0kkBqlbWhTACSJFF9t56ak1gZHXnShlEUmUUUPd4EpFm8
+rhTXTVVYteNWM0b1UotQCUQXWQgWOZC3CG1n/tdPBVnk464sSnUFVTeNoRWPSs5o0kw3YTiTQP8t
+RFdEG8G3UL0ynaRuWEYJccQRmknH6XZ/AWZna7hBvFhhleF1G5mqFeWDYhM31hkPONTm2Js99CVZ
+c0YVJaZplX2GGqeC8VCllXkJkmhvqnDiiSq+EecJJJAElxwkQnBql11xJmyEWkY18cQkWey1ndJF
+wTrgRlJMMkdO6OVk0VrhAblQSAfuBOC92y40Eb9OOYmk2FDJdNO9TtYH7UsYjQR3j/U9Se0VOHbx
+heBRqQSgVVJEsZ57W/9VXVtJ9afVjTJ+0WLgYIBRU7zqqisVVtCqK1CK8wIYxRInIb7WSspa/sXh
+glW0eFPlWZB5hJYLc2l7mamJWeZqqK3Z2hB5QnemYR2jKZmXsq355W04INby8LwLf2ZqUldZGZiX
++mClEQfbdQRfZIqXSSbF8ZzJcI4eivMkeKwpHcGjElWU+LYLqqqW0P2VEFpoeY1DqroCQvhlkV1x
+BQvreZCG7GYTmAjrbscC0E4qMhaoQFCB2cIC3t5zOApCayHQattLZjcVFZ2wC38byUgYwhVc9Ytf
+SnsCFIrSqrUQZCMi0cm8KjdCMMwERzOCnVXgpkIdqUuFGLQWjujWErPhBCpYgQvoTEIjzQmuUgcR
+CMOOwIQiZIdhRzmanh5GGE7NqXtHMQ2X/qRkRolBpmVyJExibjMlognBB0bITg+qpLG7qCwxRkhN
+xdQ0PINFrWAMY8LU6DAJnA1nfcVBX87Ql4RKKU07gWoCE9CSSbsgYg3e0VJroLCUAj6hCZvCyBc8
+YYZUmsdBCBHJkSioIcRtCC6iE11MBGLFB0WrR/3hUE0AJCtkmeQmDIqL62YiKxAWEYJTmYqTBGej
+GNmNQykx1hM4uEC2/IQJjDwIFL42FxvdSCoqNEPlYhQ4GKmQKlCp3ExSFLh2Yug/IbRJLu3FQBZO
+BZ9QqUl1ptNJU+4xYbZLwv2GZ5fetaZ7D/2ear7nJy2JTzWJARMdGwOyxtiRaLwbghpJ/jo8jTWB
+S38BX5TmVCkxDkEpKWWCKZXSSSAFQhW9gcUjEZWz3iRKEugR31Gk8DJvXWEMc1jqGr7whCN0IRPo
+CVRMm2C79vArCVAozxwmgR4D4qolTvIlvzDCI7DUp3ViRQky5RUTliCLXhKSl1ZqUpO4aStvVVHS
+XDDnohllLnBYqJwKdelMmJjnQeEBFyeFciIRzlN2WACD4MxwBTD8FSqZo2c713XCMZxwoFIs4hRk
+ddgegQVa8byWMmEXIxg9QZwLyU5NpXOElBqBCaoEH5fuoqU+iim30CGqVfeSHTsFMnodAx5juqRH
+yaCxj3msEsPQyKXWbMdg2jXYTadW/kOlJeGL3vHOFf6QnJ2pAhY6U8XO2MBQrpVTlU0x73Ey8UhP
+jGISgQjEHwpGpSbgtpPdyaFZ3BPVLhi1nGhdCU5QckRf8khHqq1cVqg5EpkU01oQDJgPqQIt2O1t
+sAMNqFWo0gXMUrgLZJgnYK2ZhTFAhQz0epY7OdTgK5QzlwL5bg6vBhcWqQRzk50RjCibOZoMrsIu
+ejFm4TlPwVIWR77EYI+chEG6NhlzWnYSGEBrBrWIE1zmYcsq5bdH3e5xCBmNTnbDt8eD7ZEoaiZT
+lS6FvM/QiWJ5ud1dipIdjR2sd1vqy6Vcwzs+j1K3RxgIgKv6ndhK4WAlWeof/hAI/jxcKC2RPsse
+EcKQOehsFOxVhfnUR2pPZAIOUBh0icZswCI14WrjwQgUau2gKEzzJvFE50qaNLvBAs5d1oKKGZqV
+T8+ZQUZXoZY7Y6RrzH0BxTUR8WTHAIbJZuHaQjaDGcZg7Zp8mCo2CuuOSgSipDTB1TR8J1X+VlkV
+N5nJ1saCt7/QrppkLgtkAEOyKYsFMwi22JgFQ4+ahc53Enywk702jATn13/fiIZN80itw3sET4uK
+hrUWFF/GZ1UxQUG7UBBnwr6I0O/V77rLbe4ZVTMq8X08o3u5KiZFeqaUdnxLFVUNgA9WBCaoeTop
+fcIQVk2mNF98COL1Tq2lwEga/qYELGe5wypGsd7hwGLU9X1kJsgQ60gz4TxGZcmuOGIGVXThXj7a
+2xW8MBWbHDyJveZCtP42YqtQdnICNfHfusBOwbUr70b2Nr+ZzfDBVqHLlPvCivmt7xMWsZ01sqtK
+ZAJrgaQbI2H/kbJUe+3BoXgMF1rDvtl5E4KfuAswhnG2sTkjgM9I9VXot0oEa6Op1F613R6stZMt
+o8yt8CxabVoq13LT8KZnU1YVXyrhnB0A3zSlw+8O0WvdSZhj97hgKgxJp3SwlN62pfv7nsFwS7Tu
+uSallbHdokMFhXQHJZUpNer3YktDtIQZjDSM9FOTnx6GjNkcaN0q6ILOpI/W/p0aHKjSbEGBFSDQ
+MV1B5ukXZZEdXMEEOg3WglTIYE0FF0yT6gFbu1wIwHnWPUVb4JyYGWSOkbWI78nOiR0ZGZABYVXO
+vJEBO0UZZTFZlzEcTEybk4EYapnFRsDf1dyKCiUTaGEbGfidt3Gbw1nbksEIFsiYDFLFGEQbE1YO
+vw1ZjFwIYdWIwNyEFyzIvUkF5rSLwzEeGKRb5tHUV5nS+9HWHnGalqBFxW0VQgDYppiSFLzfommX
+KlkKmbQRIS1GpaiZ7aRUGKEcRV3cxYFRX6iGxkSJD2SH7XTS8NCQUawaE/jcbRWBKeFcTMGZbjGU
+Fz0VQwCYechhrd0XJ5Aa/iysAizq1CpEUs6MmtaUBFzhHgM9SBbAASKs1ypUnX41VRO12xVwgWv5
+VeLd04sEDjupIApqYbcFFk2g2N/5nZNwm77ZmwzuW8PR2xbGToVg4eAk2zcC2xUGlkr4kDrtTdhg
+nlK4GtvBTpf5nZHFHrc54Yr53QxOU+ZwQYyc4IqNxIX8jUF2W+oJztsFjhiIQebgoBms2AzGHr9d
+W7fhBEbEWnqMWR/6YeZ50ciZRyfRoVW930EcQYItFEO5Ch/OlFU93/4YxiV+j6j8nBcdQchdXEIB
+GBhVSp0Nj6X4RRi5BiAu2lHcFlE0n/7FGcqFl0zFFENRn3l42t+wFyzo/gLOpNdwkFp6ccIqgOV6
+zYFdhSHs4FgVOCAgTIJY6pQqjIJYEqMtBkKLBBaD1cjn+d3lkAFowQ5VqKA1WdY7ZZuRYeMXgsG+
+Md4JNiQVqqAIWhk4JhtV8BsW3iA7id6FnIEJBs6N0JPlVcEUGJNZNN2YiVDBiZuLYKS1VeYNil5D
+stM9gZboNVyXARxl8SU1vRiSscs07WM79SW3FV6LgFZijkGtqSIr1tpy0tSm7OT3KIXtpFIkokd5
+OJ3+1VrTVJyliAqciQrPpUxq/FxuLWUneUsmcVIkRsfHWWLGhJFugV9JjoopedE4vR9fKEVfBNoj
+ytQXwVK61dr38GQT/oyBznCCLM5iJqiCLeqCgs4izmTdqI2BTJxg4FSeFICBzohlWD4Se60CLqgC
+iIrlHRCWuvSaZ6IgaEXbF3YbFk5j5jBhYuogTfSlVMjgiy3ZDWYbP85OYpIB6eUg43XbbeImvGUh
+B96lF/QIYd2VjdyKdjZN5Zmou9FbYlqOhXhbE47BDDqehZxh6qWgluXmF2ahjBmZGMRokeHmYGlZ
+tMEIt8nghYgegPqheTQNgMVaumnV/9FUbqnSVq1idt5peIFK2O2keYARlcAnGKGfYRhMDSWEKGqV
+F6WbdPjnnu7FdPYAKM5ZwjQfgCbfxY3cwcSWTEaJbvXApnTSpIKR/vKlWyrNyhOcgSds6IKSGiyu
+V1iqwlaCJTHWZeT9pea0ZS3ualhupS6IJS7gwofuTLRVgdsR1pEF3oXEqdtt1onZm206HBiEgTSu
+mOiBY2K+2A1SlmsqpuD0pblioQ5ym5yyU0Xe4E2sWDuhk+VpDoBMgVk0QVpCwRQgIb6B1lRsqejx
+Gz+2KLlaYb7xYLQRmW3+Fbzdk4rRJsC967WlIbRxI+NpobdtKUWOgVG1YeZ9nVElGKwyUrrhZ3qc
+hZ0eBBP44cpu1aI1TXNuHMaYBoA1xnHtEcrGl0Uw1PulGW01mnExzfc0zV78zx6NnCpZ1X8RhXfI
+ZF40VkgShHwJ/sXIMZRWQcEVJMqCDoeDwuIkyCKEesJWuqUnfEEYRGSUCZGCcqXZrsIrZN2HEmOI
+LugqTILg3Eg0Dhy3Vg6XFqxw2tu//ZUMdpll+ihmvtiWgqO3katG3uAMqmDBGqfHZqE0msEawJO1
+rShheQGTmmgXOOAVTIEfpgS4+atMPKYTgqu1OS4byOA5Yim6WgjDgqOLqFjtTsUKDo5vegE/gitA
+gmPkdpmMeWxwho1ZTEF8vd/7fc31FUWp2k6AHhQrriKehoh5kOdTEk2gWU8oYq3+GYzTWdU8blVa
+6BZfcFLtNNbIgazGNaBRqeIdbhX4pidRINLOxtpWcSSA7m8q/i3FFUjCV2bdcLjlra4XLMDiVi6r
+VPQImHIBHXhoer0te+GCLijrh8ICiC5oIDDp5/blN7ookzUkF+7bvpFecHrs6vlonHKsvnVbtlKk
+YjKhatpbtw3vlvqo465BxwbkB2oOEjpgaF6BFaRSvmJY5XCBFcCgRAan6K0BG6xBu16mxjKhGXAB
+4JbrQBZkvXkZtFkj7FEhNWLhOVpkX7pucJKeeRixEe/f8gLg+zHaH+pFn+4R1HESQ+jW1byfoiHU
+wdyPdFWJb11ixYXdQiAEJHribTFBa2yKJTKS8/Gn6RJE04lTnd5pyKGnHMPSQcgvJ23t1zTNRsjh
+E8wBLXao/k7hoq3ijNyuwtjiQgg3pA8hwthy5dy+8oKC6C4r6wbjAhxY04lxQWJaIwrjMBpnsRhw
+bGZObmauQQ8PbD/+aA837uFmphSzAQyL3jZzc7qGMLTVmwla05IOpAqhkwNKgb/uWjutXhqLHhvQ
+AbexQT9msYy6bjTrG4ztm+rlY+aMwTBvabT9M+OmK2uesDdrrLU1rhmYh+V5wRO4MRz/6VYpTR8/
+3xsOU+aB7G3lJ9KJyZmolMsdTHwBmMZBqfwBUFGc7PDsRSfRlEJop50iZ+ZBHQCuxfKWk4LlmPyl
+s75CdK2VLoBNQelG4NYiwqgNq1h65aix1yvYLXuJKb12/gEnOLVWEuCu7qpWppey8vKy7gy22lu0
+DTMZKDNFJu7hzjDwonHsZmZfTnEPs8E8U6QUD2wOezPsPnMUz3DsDi9fAxyX7m5A+ZADlpYD3osQ
+rVaZHq8MsgEcmAEc4DUar67ralkL83U+D6QOM1ns8htZs26NEjRfW7HBSrFaltZKoLMVvC/0ZafS
+rORWNW/zkixP/0921pAnjlH3kIzC4CmnzB//AWBsKdjypZsX5ZxvE03mtWI679/1LqfEkfQfEl8D
+kuaD/C9qITGQWAFXNM0XIErZcqWHHkfZaqgquHLefm60ZY5aQgKv6owuyCIDa+UFE2DW7fIGW2bj
+8rVn/nNs5IJjCv8oG3BbD5PeGOS1gZOBY2duXOOwQjtu5LJuf7sm7Mqzg2MOF/wz295TYNmIBzqg
+F1jBF2w37l2OkYEBhsvzM5tBXEO2DE4x4e0bZW+zMjt4Qcc4QevwWvNbt+bwMjfuNmMzHMzBjViB
+kqrEdo/u1mLe/tppSYMsRuRrupkFTQVorO1ko2XU9AwPxlCfVr0hfNL0KF8NqBgVKJKJeOEpEZaT
+ESuYKmIvRwJJrCUnW0HB3uDIs6alSkzBdqslGVYeoZQ3rbLXVsKCU2PwfKtCbJqzNXnBsGblBW8w
+Bh86skr6BXP1HGCO4b4u7A7vPKOxtzH4lj6zgYs6/oNHsYBLMYBnLj9O+BmIumSeuhSveFz/qOMS
+Xpept4nfUxL7UGgKDohfThbeMBmobbfF9Ry0q6encDgLdLlqOl8zro+GgeO6OuNa+7SPQRr89wwz
+rhmcAek1thnQARwYeduJ7laEZmg6L+muYklodL/60hT0tnY63XSCkSLi1iCK03PLH1PIJLv33KQq
+DBiVk9YWEICl83bLO1Dnq7LgdIIlWKwtfJ1bQcVPwUAW8bnziLuRXeCMgSRkHSfwqtx6KHw/dSC4
+XYhzwcp74BfMAaW7JQZvdaRr5dzigi/DwjyDuqh3+zMru6i/9YpDdqhH8Y+ueOZG8anPOmQnPbFP
+/nHmjsG0pzqny6C2+7y1b1amNzGje8GJ/41aguY0KSnDyugZTDvpOfYzw8G4B/jAroFlu/Vayz1b
+uz0ZnIF+S7a1e5urh4Gnu/qEIzseLJUXeOC5VzyOFHHlyTuQcKTzDrUVlC68p4Rqk7K850TFVerw
+eGJKnVygqvkeqiIpl4eh+qma4akQkCSQBPXWkm7pHvGrLjx6AGo6A0mPGLG6CM5pywTkm/Z2c4EX
+EP52F7EVSLBbFjpWfyihqwIeZDiGM3qULaikJ7+l6wIvcDX1MzAuAHgUI7jdi0Gqr8G32z0bqAEb
+pMEUIzsc5PWKk4EbwIEaRLGQLxUdBLgZqIHd/p/BPKdBGhj41IM/9wMEG4Fr1rAZQ4bMwTFgwIz5
+8sULGIRdunh5OMWiFy8VLY7p8oXLl4RjFK4Zw8YMnDkDBbIh6BJhQjEkyYQ5g5DkGpw5Ed4kc3NM
+mIMuCRI8SEYnQjM4kZ4pSoZOSzgPLUL80sWKlypbr3y5cmWKFShTvlS5YuXrEylQmkixIkWtWCtT
+nlwZC+VJEyhJmvQtwoTJESiDB0uR0nfwlSZX1rJVDGVt3ydHkkA5MiSJkSJFKhthy1aK2bF0nzyB
+wvgw3tSfD0uZUgVtFa1XuFqx3eVrbthdH3blwvsLHU64iBOHpQvXKlySDDZ8SJEiyJB4VK3S/mUd
+FyxcvLIXx6VLOyxVxFWNOWMQ4UuY6YeqSb9mjho1a+CYmc8GDhyU++EULFrQjDTWEFAnk/B7yQwz
+CmoJKQWf0mmMgkYaCQyLxKiqi5Cu2uoqkCzigqGDjCqov5bm0O/EgsLo6YyjkGooJqZuMuqonCBE
+ioyWXIJDjYEGdM+lCM1gSaU5VgIDIiRx60I2L6zgYooowZriKyu6iDLDuexqIqwpRrvCi9doo7Kv
+JKTozLAmTCMMssPompIrL6dAbK21jmBitcGasEKt17yEooonYJtrKy/hAq2vQ0GzYrdBv/qItrGw
+ivK0KqagiAsrruIiooe+OAOPQCbhZBJJ/hDBwyUwxAAjDCQ97cihMSaxTrvvvNOFO+6QwzU5Q9Jz
+KQ2nFjxJ2KKIYuNEgehYacE56MhvDjOeXcmME91wCdv/1ugRjmfrK2o+N9R7aQ2nYKqxpoa4+Ogq
+rC76oiFWHYL3IAGHIupEI/9raaly0VOoxRYTGrjGCCEsyjykSlxDQTLUOKlcMgQ8Q9yVVspPJTgi
+qqgiMR4yC+Qx4cKyq7PAemLOs2zjCkrYwlLsK8L00mstP6N8+QlG1xyrrrXswktNKTxL4gjJDqM5
+Nktvq0us1Pis82cux1qZSq3CnCsss7QUNCyrNrToIzJUfeiML2iiyWySHgpDjAu7YIjV/oQ40Q45
+7ojDFTnjeMVFFQWDnZCN+egj6LwFDUdK2x3p63aNZQuaA1WU9PNPoBL1LejZqLId6KeSFCKqVZHg
+hahTj6cISSN2P/JCjM4Hf6k/Zxd0aQ6C0hij9aZMKhChMHZvXSgcCz9JcDX6U4kNcYXNcUARA4dP
+JTrowKPbV8uCcq7sw3Lt0SeVphKtk82ikkmVz6ISirkQ03NRxtLqkuopjsYLUL3Y1+sJMxNzjcqw
+0GI6TJQCi/0IiBa30A8tryHUFQS1Jy+BJX1nqcKVYPMc0okEIV8wSULSkJAzrKohYWiXqx6CO5Kw
+QRK1wgUz8vYdXrQQOaqgQ06OZaxt/sFkR/jRD7fS0JJtzY5yzxKIkaIyuQP5CHP1WdaJ8qNDgSBl
+PjjSSYtIcjsyiGQhXwjD257DrplokSHCGsri2CA9yGFMh0XcYE9wMpPbOWVFVlSIRIhSLvr0qHLx
+WQlLIjQQIxYJDng4ERfE8BFOXaEiJssNldZFKCqNby6/sU3/0rek14zFUnXKixQU45rRRMkLtDEZ
+oxTpJdM8xn55Ol0ExyJBjGQqfFNK08xmNpjXbERLVjqfbc4CKPkValAQydC6VqXFtrWudTfB4E6Q
+RBKHnCEM0YQRTv6gCl1ckxnfyaat8jaJMbqEW02cnOFIVLkm6vB46Mwc8lRyh/yQ/uic9JFK46hH
+Rmzh0Ck9yhFNOigTp6xqDGkw20bYpSowdMFjZktItrhlJGg5Cz9+PMlPenSSCF00KQYhyRnS0Lof
+PqyP0DtRVGq3OAPVMT/rpEMgIBcITmnoI1UIyc3kdD67gEVLZsEpo37DBZehRZdvIQye+tJLrlSp
+S0rD2lxQZgUC6omoUeJkUsFistdsSko43ZJhsiY/25ASlpyiiEy3AtTERFCmWpGNIS3YkYasoW0D
+Y9tCNALQWHUOKCcR1StspU27MYcNN8FWfxoHzoUtCGPv1OF5unVO/HgLWXe4Ax0mi0aC6OcMil1W
+t6SXRsIKzmDzKRGxYrKiM5Rt/gwguhAX2CaTLpAhrjoxnvH0k1I8SE+c+oGJTwh3u3I5kw1IidBI
+HsYGASV2nRj7oYCMSy5zGol605vsHaySoTBdJDeelFKXbsopKWntCpIky1xsKZY5DYYJelJgJMWk
+qdjETH73A0zRUtOY7do0U6h72VeiNEm0RBBMTarIk6hyFY1kRCtR8m4oxao6jahrdGHgwkFmQpMK
+qyomzizX8pyin5OwIVSImMQkEPEHVA03YgfqEX2WVcb+iKs/onXxbWHn4uhBTpB3wIMgqRfdxtJn
+JbStHTp/DIdr7c4k57nJjJrizIXAKFae+kLrGpI7gRgPWS42IxO9VdsFiUEg/hM1GOLG5RPFRQiP
+WeZsZxeEZSemdHrdCgQc7gBd62JlStKRahWmKkqfgo+/2rPUaagkMql9hjByiaXLLOWFTN1MCkyw
+HxQAk5kjHKEITRjCXaratUw5CSNfwNprAlUXvdBUNuvayEa4EBJOHRg2FekNyDCCJFZ7DEkTvpBQ
+HIJrm8xEIh47JuJmxNAzSO8l5zGIGDaIHoTMJ5w+Oh4dUiKHZeH2nc7KnEOhhR/J4uHbgdSPGaKL
+7YsFcrKP1U9UhiTPOtoxYFXkIElaewZWCSXJJgTzZXVYO+rROZCCpKwQj6iwDconWz65yYoNNE5x
+Tis/7nTnuQPX5fyAO1R//tC4ZEHIakjSRnv9c/RZPNSyKIH3SlNCCxPEQsBaeunU/lPk1GxJJrYk
+oTJ7acIRfJCo702wqyU7HW5EnRXtiaVKXsmIp7ogFCTZmiMKdjRBHwxC2AplRWpjVbAXIoYJCyxt
+p23RQLD8H2QPTiBOgWYa8Oif/vy74riVgyDRKD0an6jH0qODaO2uY4zrWMeNTSnGbgvwyV4MP3LA
+LL+HRZCfJDnJFb7JF20iE5z0cCBpUOlt/613yuaH7Tc8LY8IIp8fcnRBbD/iDnUo8OnZfcd0/jec
+7Y7uUAUC94EQZkZCkqUqMZjk3u2QVVL9JEYVOnu2GYtemBCW8pImkk86/p1c5oT0+wmmaEwYgmti
+gzWwfOh0WsOe0tKXQJq+dOqcMnAYvCDhtkl5IyRspnmoiBAxxBGZAltITWpy/2geZUB6yLGeZ1ui
+wngKwlyurHKkYsfqrLGWxQ3U4PUyRiVQJbmiYu+WKOJ0LBD+LroKD1X+jfMw5oyW5QCvbJyS7J5+
+KyZuh96CxyfaxiTSQLFIxFu+bfacRbe8rIkKQnDuqXJ2Jwhpi7OgxQgjDu6EiInwjqUQQbJ07A8A
+AXWuJq3ApNVwo6ccbV7YptU8RFO8AiNkyvm6JEy8ADBYbk6kJivkpFC+AkrS52ZYDtHUJNO4L3sm
+CCQgQv1gw6e2YlDI/uu7YqpDPuKgwIBTSMgjDLHVpjCa2CYNKq8oxi4onKlFyoVt4o3XXOIMEC6i
+8IMG80M+iohHDnCM1sAN4OATu8WdpsfbAomJ0Mic3Cm61E3iAq4BnwXcJOsPCO8JY0/2GlCx1u0U
+C+JaNrH0OOpvguW06mVCAkbyFNB4cNEW/83vVtGdTDFwBKKHeqiKjojtNpGjRnHdKgv2dswcMQ7c
+9GMVMQ4Q7uAPcK8d7wD3COk5Doz9qCIkRKgiWEtsJGISWWcRaUMrvsB/Jsk1Xi0snAQKYMk23GKS
+/uyrRk0s7mIwkkBOGEUjHOlRTuc3MvLRODL65iL92o91PEYjFvHV/gqMUyqsHxVCDNQgn5irJjqo
+tUwCDJIiQlgPnRRv8ORAKnTrjuRDDYIFPyQwA7sFVeCMepRlx24wD6xNFuksc0Aszibu76rRxJqy
+Af0uF3XM2qTRB+lgG30QtAxC/w4iYHpiuO7vdghk8PIADv7gCf3OW3xxxy5LXCJqDeSgR/hyKHek
+RGgwKiZLGjdQsnhRxz7vK3FRHu8AEOYAEdoRDwDBIaKpbTIiQ+YK675oDErS64ypKlLLSRwNIhJS
+I9LHDL/K0TKkSzCC5aBkXTglIgfDqWoufT5NJA1smCzCLFpt+iIS6bokkbygM6eMDNpvytSGdLpQ
+Q4KCbWaiXHoI/rECZxMNokeCJaBMaBNhUmG6pXLmzgAXZ4fcQPUax8MiqrYuLuLmzlkKTz/sIGNu
+60TsIPbqk856EQ/kEgq3MsckTha7Ehgri3rcALLowAcN5wD9I7Tg6iduIgz+hobkww3ADS7RcSvR
+DQeVBY9ma+9MqolULxujgj5OMc7wQA7mzhzzoAH5c7Po7B3l0hCi0B0BARD+4DktIpqS02yw7iCi
+iR7bJjt7R8JwR9Y+DUpeydFezTZE7XxOUjZXR9Ra7UmO9Gb8y0qusNWmjvdIEySywkmyJ0sb6Ukc
+7f4qpDKHScKg5EMIstW0rqNyhO2MbLC2RfH842EEhEDowy8V/m8V9y4a6YAv5QDznoVA3Y5HrI1H
+dmxCsc3a3MAN+HR6GhDv5uDbZBFFd0w/58DE/HMrNS4rdxFTczE/ewwOrA3hrqVH9u6cTgvalNE8
+IuYnDCKwBsQpMgdQtXIuOQ8809GdEg8UxZJHspFbykgNJvRaTvQrjazHuhJDZTT2JsscJSsQAAH3
+NC4QonBaSWImRCgo7g+aSqLCnNONguKDnCkkCunTDmwk0bVt0O8kWefAXgp1jFRT+osJ0nXpWKcz
+WeXAFBEkbkZJ1XQ1OwRJ2lWEEorprOtSWs0RK/GkeuRR9YMn2cAvS6RHoE1ZkFIO8kAC6UzxwulZ
+MCdw5OBR/tVA8UbWneaOJ00UFyPV2vg0WlX0ZfNAFudS4+LRHP9AD6Cwzmz2MKEQZ+Msc2CMDmAM
+Yl/HXGyHQc2FDMjTX7ZF3DDURbNSsnYWHeFS8Qz0RMutaCuOL9MJ3QYv4Db2HFWUZ/Pz26TrCeVy
+Wqk1EBwz93j0W88mWB4R9d6oJibRPBoxKA7sDDgyI+PVJM/V67TUmC6krs41SwNoEcl0tcrUEKvL
+QxxiCm2jca2rbdjmOY9Ji9pPcwnpQjCiKkACLU+rg4yFYq9FIHyyiYZyQJ7nFBsrdmVReuRgFQNH
+QtMoKm4LLjlLBPNARSEnWelzx4C3ands7lQ0UR9VRcEN/nJqNFe7EhDyUz+pd0UBz8hUSlX3Dj9Q
+1WTBie16BByjU7Bm5GJV1u9M7G1p9FMBL2VL1drK6FFxiw3cKaWEkkdKFbdu9dvsYEKpB/CuVRej
+EA/o01PvIDLh0W0RwRAMgTKxLiEakaMuKrgCSgxaJHNxJ+voDXcczUul9AwAcrXklThBV8JAwta8
+7v4W93QugkwX8ZiOiQvbb4STNCs+TYVZZ2xm4v6Ogop2dMoSl1Pcj1x/JVhMj7mMTPHYTog+TGRN
+Vn9fj2Th7GWVKwL1DhUD6URLlT77wH3lckDnLj/o0x1NjGYDz31TVLIks4xNjEbBbVN1sSt1sUZN
+tHlN/jRVSS8/WDcwh/I+8rQ62Q6KaAt5GzAe3dGQ60wus7Ipy4gwATUCD/VECfRZTBVQRxYPHhUP
+mlcOuviL27GOpxVuFxkQGriUAUHEcG8S50qDA4qjLhg7JYaKvtX/tvU5fRMiLBclTVKE3I9M9Y39
+JuzVAgjUkJQecadC2iaEjilJvY6Em9lxJeb/jOu0auJBZwKDvY5yM9eKwDH0wClwvMw/NjEC2e5j
+U0pFAXVrTfRjTRR+TRTEeFJmxzaQ5nmTnxJQX68P+uAqH5OfVZRmN/kwQzUKD9kcobcPTMyLa7TE
+rBXc9AB5O1ncTJZl5eCOBoLg5mM7BQfzYPIlpljH/hIa3BJ6Wr04P9txkamHTyO28Mooa8vIWxo1
+ugIvRfnzoCdzenN6evGgxBwTEQLhp4GagacVERTBEHg0WITCuFrHld1IYNKgg6BJ2G40SwH2SL8Q
+Noe4XQnJc1cyTR0NlMIEJVlr17I0hl3tcb1uUhhXwYT5mKpI7JZx14AnTVmrXDW4WM7Dj/2lWANr
+tgZEnt4TfqXLDuxunW33ZQXiWuTUZNU5oC/0DvpA3Aq4KYm3jHMWD7zYi/PgnznbHR2zjGtUZ222
+K2/WMWl0gGsxzmi2aJMSUFFRPuI0fH1EPlBPDWyiWLW4gL9NRmcUW0+6HfdZf4vXUb2FDuDSfk90
+/p0UT/F2+9/sAHjhgJ/7IA+mNwoL+g8iUx6dsJQDoYG927sNQRFEjEdtoqNOy1sL4m9+zTz29oPu
+L3MLF6z9B5fVVF5bh6tZ5ww4JbXQT8H6ix7JWoYtE775kVXkVXQPKSts4r0tMz1mEr1h60JWRXMf
+VKnpz3iYy/QiMLBwl0foL06P2y7nOGWlxxrVMQ8oK/ACLg/sYJ9VlJ/dkT4hOg/cgD4524vdMcZR
+mitJWsZNzAk7kH2pF5Q9lVprdHoROIH3ObPVubFuyw4oNreIFVjIM7Z16z64JaCbd5+nFxGc8EVP
+27Q3uYAv9VmesluQtSn17mWPO3nt4A/4ece8/tgOdKy6r/VacTq7fRoQJkERRswQAkESJkFUJqGU
+6U8oPshOzdIFT+tBH9Eyf83rgjlNje50wgJKpAMkdtMQP5e1CAl7LPeDp3S1GnHKpIOGV2vKuPpI
+waJxydqDGvS02AB4Pkiq2UYLcWcokVEoAyd2V4wGP5Gj7tR4TvHbgJdm+4BsN7memR1QCfMOjDfG
+MdXvINrEulhUS1sPBqHIsxuVvVgPJDMyQRmBy9gxuZ2hCzrJCRiVRRuR566wpwe6M5kN4FNVTZY8
+jSzNiLJYSfa0TLF4JSvHAaEP4vGnaRQRuryOC1uMNRkOUvy1kTIxWVqM6xPjzjja/4DbE9m7/pEc
+laOQgf0cqCVhWo26zydhiqIammLyJxzVQHBHYuiv/yqzQvYRlt51v1nnOc2DkGZ4wrTI1bLU+CLJ
+SVdyhS1TXnv+1WRz+tpag/3vEZvrQc/DJkDXmVutXPMpjRyVYovVnCVQPuAgoDqaYo/bsqedySkb
+oE9RolEUxvtAD6zWD2p0Zze1eBswocFYZweh4KsREAZhk+OczAdhz8e9ofOzbY18ENxxELhdZ7/d
+i+fOK5+FjPfODe4ga/EA4UoVqg1LLx1mDIqVDmI8ofP+79kX4dlX40f8DtzgKVkWeSGZPh8esZ8S
+ums/sgkf40C+xCLzy1HZ8AFdvB8hEMZb/sRITLyr0/TwyFzuI7DcIK5huSYCK0cL3ElXPkl9VHPB
+YL+9bu2iKSLYxgriIP2GmW/dTyhK/TJz3gvY3wrOQA5LEnRnneov2HSxrqMuUYY7X+3wfcfgEyDk
+sFEDh40bgmnUCFSjxg2cgnLo5JGTJw8ePX/u4NFoEQ4dOQ8jStyoUc8djX/6+Plz8aKdO3n06MET
+sw8eOxgRAfrD888gQIj6WAQE6GQfon8A6dFJtCmgQDuZAp268w/GmEXzaJRjZyOejyDv0CEoJ00a
+Om7cyFnDRg5DOCAbnlGzxiGeu3r6JGX5B1FKPFXv8EQKqGtFi3dvwrFjJ8/ijXRgRvaq/nGjTTgk
+//g5ekeqYECDmCJCNAmRoUmoAyma9GiSIUOrJ7FJM5Cum4QNGZoVCMfNGt1n5qYJc0bMcDFhkHM5
+Y4WLFy7Lw4wRwwZ5cOJixnARozy5cy9TrHiJ0xw6cS9jpJ9JHqZ9mC/Qz0xZPl98+PpWoHAJM3z9
+erNqrLdGGsJxl10Y+7UnhnAJPcQGWl3hsdgdcrghYURsDPiQRDE95GFLd/SRl0l49GEHXBH1dlMe
+R+ExiIh3UHXHTD6hNNNGM82ol1M8YTTjIHj48RMeSfWhU189DZaUHkiVNBpRiJxEk0033WUHRSCB
+ZSFBH7lBx0AVsvEQWQsl1BZjGBVl/pIfO+00SFJUDaaXTScxlkeEidmk1oQaXSkHRRiV2MegR0Hl
+U4k6mWZaIaO9hshqhpj2iCKkkYbaa4p46dCfbfUm5kd09KZGpwXNFqAaCgZn3RkJtucfcQSqYdYZ
+ZhFY3Bhn4LrectDFRxyr6yFHhqrFfaHgfmJMccZzU8QBXhxTzLcgd/yREeAZa6wRHK22IpeGGMNO
+F4aYanzJEGNfwXXXn3fY0QdcfjLkkEaDptSHYHlpRO+VeIikFh4WbpSHHyfZK5hemqFkolV6AAnI
+jhjtFaNVPa2UEpSJFuVUm0gmhUhoGAOykh8kWTQoZHD9C/BEo4514qhpuHWQQ7d1/ilHYhq9+SbF
+RAl5VKRQmVQni3dhxiJMXcFh1FZeyqHvRSSe9DBLTDalkyFAufYaa5PEhprWjxjySGuolQuSpxGp
+5YZB5TKGYlqhpvFbgLOul+p1wcmKra3aBjccgWS4R+ty/xH3K6zckWGWtQSmxx6r50XLBBdMNJHg
+tsJhPtuwtCpeHIGumgqvWg/aCdPN/d4EUlt03ARWhHkkNYhGDwtFo5R2eFlliPf6dG9RgzDJJMNC
+35XRZjHGDiVQbIo8fFNvMmmaIYeMZj3z0A8/WFWAAHZyu42pftcdbiS9Ue5jiqoQqBhyCZMemzVP
+1FIPM2WIkYA4OoiQGc1ItNJa/umXTVDHEa1UpEREUgmhRMYon1yseooyjSRO0xpFjE0SkvjaJDL4
+CEkoQhHkg0vb4BIqOtihdWtri1sWwpA40MVW3zJQHHBzGwDhRnTbotu1VoUsbyEHcdviDrZkZSu8
+sYpwwXHOgrjFFtrUSla6YcNcXkir3/DnDH96iITSghmavARdTeOKQTTVrxmZRA95AI0ftNKYhNEk
+R1zhHb2acr8oweQPAbyLXvwgkzeB5iig+YkfVrKTGMVokE8KSgT3h7X8AWU0P2kUUV4kvDXGKC/j
+o5KdLNIYitxlIv2iQ6h6AweYbaoxggEMUHzyk6n4wXpYUxSbMkMnHVkkJjDR/gsaYQSTkxBMJhor
+CsJCg7VI5c8QUDmNITw4CUtMIhOouWAHN6jBjyxmU6WsEFrWxhiCzCwtGnIDtrRVqzMMa0C1gSLM
+cpMtuQ3ILPxxTxGLQ08yLIg/syrn3o6DIOL0ajnPCUPfzHIbhuQmLQeFIYESwi0tna1CJ+pXHtBC
+SoGckCtlvOW9QhQj0BTlJSIiUvfEsiIRKaUPgxBkSg0pk5aahCXe08kgDvGa6hFFRCnZGSLYdAg/
+GOKVVovU9XxqiP2xqRCFyB8i6Fe7jMjkToy5WZ1upimHoEVmfyrjldQiyhLdYTM6ad4h9lc9Yzbq
+UR9TI5NWopeTkKh/+rqS/lBokhHOoHRQrezZ9IASiA1KIhCWwuAkOPEITjgTNZawhDQxaAm1RKRf
+VyJl004ophRFxKALrWJwZjgrWT3kN+9059ymGMTiLPFytYKV4RYEQ3zSyj9J5AJ5oHWGGRKRIQbJ
+1m18QxCEEFGIcqPhnjh0EjiAUkUgcYwdBoIZmdyLMyB70V78cqebNCYv7qIlnEADpygBKSUW8YnI
++AgamppVjTuZiciKmtZHUq9RrinEa4g5vY9BEjRLxWNR7rAzEt3Sk+Qj31cqFJaxVAhgBWlI+ZYy
+O5H9JKVHgpKQBukoqMyuY2eU7qB2eSfEuLVgd/zMJP1QiEEYglGIOIQi/hxh4mViKhOZ4AQ0EWvY
+Z2bwEpJI7CRSZlXj0oSiY2ShWXrzm4QU8W9EHBBxensq3dQwta7ywhG3BdDrGGezsIpD5kCHKgQ5
+q1fygRW3zFIbI9s2DVpWKKzI0joURYQiE2mXRdwAE3i95DCWmcmbhMQ8lcgkKXw0ykvg55PmpbSV
+Y20YaHyUl4vtBJCvMYQjAEHTj0VqM03x6WgoPIlFKEISiPCgIuQbqWUy5ZVFVcqRWPSmltypXcW9
+EijLBxceP6RdNLFLwewAFL2UWieVNrFplLqoQ3gUfpPUScFG+pK67nLD/A3Sc1/k3kbJ92qRxqAH
+M2gJTmxiE88crCQy/jHuGRsWJF/pcFq48qflquVEjp1ZQg4XK1oRsbb8IWKtGHotNYhBy8BqlnzI
+k0TYBstwTDyDOMOAKioD/D+vheFtc8NweNrqVzakS0OyKGdUUqRdFEFRZBwCwJ3hjyg9XWWPqGQ7
+B2rmpnlNaVXEaxVqF8XRh8j5oyR96fGOhpXUQ+prJojBSFtPESeWryJ0LiRFDurmViEZyeb6p4rc
+4SGNMa6P/4QlxqxbLSIKCpOCjohCGJt6DExx2ZE6QUHCKXq+ywumj2Ki5/JEJV8lkrFvKuEUR9q8
+FpzUpzOxCRh/mxOIJ/wlYiyJS3ACNXkoX0Qi5BFQnTBUkYdDGhAq/qsZhiHNAzLoDLF4W4brZt+L
+I1yzrBCHyXFhPtCSsqtAF4dfjd7I/eEVdJzlHwLVpfO2DT2aX+sq2G7+3U4LUfItY7KTuEEovbkZ
+izrcM/jJfNMnfqVmWnoRq/kRKDKfSiFW8pOM5PQQDDav2Io+6qI2ksRKhQ2oOQibDn7Q04eQRAdL
+7aifKjIoKecXBMMmZoRKLGIiIeIupGRNXdEVBsEVeoEHkHRtjBIp8lU9k+BTjEIpsPFekeJHVvFz
+PPEiiJAHOpEvf+ZAIvNHD3YI8nVtkuAIk3AIjhBqgZcJiSUJhRdumdBB3hZuk+B4lrARSuMQssYY
+7KM2KzQWZmFb/rclM2rxG5q3eQRGULe1LW6AIMryT7P1HEb0eQlRZMORG7YiWwbnHgNCK3HAWfk2
+fHNxONdBOEtWIUpDEXcmIlb3bH9BJ3pwJZ+RgtZjYvI1FcNzMiaBUuUnJC6INYeWVI30YFWBfZhi
+f5+mKJGSEqbhCCdWap42TZ9mCRjkd4tgGotQCB/kKDvlYNYDTB51V0SSS+FTXQYIUlVSPpGxJHzU
+B5y4iRU4X0inCIvgQZGyCMXEJqm2VGsFJUcRKA3zJFOhMz+nfo/SfphiCJQwTYP1TDGGeN/WbTgo
+Y463CTI2CXIwVzZxJaL0RSJnQgCzVQOyblxBM+sWLw1RSgqx/nmnFwbi5AZaRnBatoWblSBrOCz8
+yHm1wllxEB8JaYYA93lhYC1xMBsHsW9XSBzOEgfGQYUV0Ycl0odaIUdnNH1+YhmCsT2bUTWjYWyQ
+lC94BT3G9EiamCgpmVIqYVR+UD2VZoMYBIyZeJP2BQhEtwjB+Ik7aUHA2IFh8ygx6EHj9zE1hzHU
+9hMy4QeNET4cdUD8IhFcUV1qcSdGsmmR1CifhilIF2pF5wiOMIrUEyljRWmvlFaDwmt7thlRl1IN
+0zwUFimUgmLAWJT6t40wxgmgMAqEOQrfRnjNVHgwZnibAFV8lC+MARM0wW7vNlF/4mTlkxaOsXF/
+Uj5X0hC5/lMWaaE2tXdE7bEfshUd7cGPsrIGFXIbdlCPBzF6pdlPmHOQCQFOEwkHU9R5DfErqJk3
+SkMZKSgoevEibwJreSgiNolSHjMImphUPRVJagRJMmdsOQcISeUIZndorgQYsESKQvlpj0CMZSdU
+qVYIjuAHklAIGNRBoDgpG9RB+hdq0yiMvwYUxoRXJvUmLEIxn7RhdCJr7JZJN0MjioZqh+BpwaiJ
+K1Y9K/ZBilAJF3SU3Dlf4McmO9UXe3ZsoRFhmvGVjDKKnkZi1oYIMriTicUJowCO4vh4hSdjhPdt
+h5cJTuVVbSUUFtEnHUaHtMYVaNEvbqAVdOgnEHUloQkS/lUoB58XB/wIcNHRj7RyG3TIdUhaIb/B
+W/tYW/uBkTP0jg0xQ/GWO7fxe1r2eVzKBQfBbu5SETjxIkdBXn0UIvYiIib1SDJVfpOmkkV1kkox
+YZSWapSGoh34GoGkUlajado2TcK4npEWk2QJipeQWPQZnx1ECYpACe85NpQQjJbGiD+laYMySFYB
+NWdkEzFxQCAHNZwEKBGDP4riCBNkCEMJjI7waTt5lo8ClEJ1dikWGnx0JHQnPCmVaoAmiIgQjEVn
+ip6GdIvQgxgkY5swCq8QY4GJeKMACuDmbYQXY5uQXUIRl0LRLnnhpjdBITdjh9pkIVUHEweEUVnU
+Orlz/ievyY+zNxyyZTj8saYENlEXojaMQabiVHurqXAWGQcQpXkgwUXxqBANMRwE65Bp0BgH+JEP
+gxNoxDsm4i4i0mgjiFIp5pOBmmLa2XSaMQgsMmzmpXbWWImj4Qg2FRQOlnOMImpjYwlCKKv5Uz3y
+JQnsmX+O8AiOl0E5pqndpn9IawmaKqujMX4kNlMexTx7ZxUoJSgoi1IhcqpOtWF6EEd7JF83OaKw
+oamSMJRKeY2XmqmmpolpmVQzJV/AhJw+gxFG0nMPFkEV2KxLubcY1I3aWnivcAmOV5ji2KKjoHje
+xgktxVEPQ6csQiIzERO5E1XXNK+Rp6Q40SeN0QdZ/oRgocl5xPGkhrOGoJmZo7kn5HMiSUqwTqpl
+WchZ8YawalOQEJWZa4hma2iRXBFVuaQVPCEoM1IVXnkTMvEag6RpRYWdPgVBS8UmmjFIxARqSeWe
+o7EI3OmIEyZdRJWs1vsIoJhj3vtBsippZxVpuCq0nHAJ8OlBOAaKnFAJSWu9QvUkJjZWhnYUsyMT
+GuuVz8YYAupFj6ugjjKUozgpZSsJmkqMQQuKZEsJNTh0TStUNAk/eLlTd/lKLphzFqh0Q+lBY/PB
+Oaa+loCY2RqjM6qthgsKryCtNEoodVcTd9KHG8ZuFZGupyNrD1ERJjIl4WNnkVcRaiMraTF67VF7
+/mLKrwrRbneCsFfiQvKCuw75ulMEIPLCdQQ2pJ1ZFkZ2RXPRpqnqZx1LMg2zkVXpnHdpPYtCaiv7
+GuM3O/uzF+RbCKOYf0gVjKYGQa80YYuyTIoFv5Ygjkf7wJIAlGk5aggcwpyAtN6WWJogCYmMqWND
+oeObrE67P2i8P8zJOzK3jCHVfXbqI1TZOnoxPaXGgbJKCdcYeAgMipZQCYqlf5gKjJqKog98niKT
+KC/if5ZMX7CRlmYpq+TZQd6rf93WbYOFeJygCpPwCtmKrd4GCqAgY9SaeJwwJwJariyyuUIxuRDF
+LjTMB1E1EZvkphAVeSeUmXLgQmh2G+sxQy6U/pn4WFC5qc5eN7A2ZMQEdRBEpM+jecUINXziFCDt
+0YAtASMvl1IlNicxUa4paJM+pW31NX41+DF+FD+vRAnD+IvCjNHEiFQ7pShmh6I+eAmY0L6EpVjq
+ST0PLasdhAmGNcJC2G2a4L2onMjvedMotig7hVQiGzwr5VzP5mcXkxI1B8Q4QWIVaHaOcI1Ie9MU
+ikFGqwmGpQnui0GLgKmmxigyNyJltz96gDXHm5PLhHSw4awx2KCUQKGLkMjpmwnaygnVKo6mgMKC
++QqgMNdubbiboBSP65Vt2hUeGT5cEQcz4ofgYzRs1G6b1Bhx0EmOdbv8OIYHUVthOpuD3bq5/oOP
+mFVDYYpmuZmb6azOrEmGDhvZWZgWTWoneRE8rNSS8dNSg2IULaWfmTi2t/rRV8Mm0KudFhhqNbi3
+oIiiEtSeNUVUipBYK9rKgFwJ8Cu94vtBSovciNfI3fbSSivMmzCpCLyXmyhUSHVMP/VgipgSeSGg
+KPVUcbphcsUTL7uTvt1tnErVoBh48P0IM80JmLAIgufbQndivwqsS0XRlnyB1otBsiqrS+lpxNzU
+j7AJUg3X3rYJK2wKm6DCyextqjAKqpC4Fm5ShIIRTOI/JgJVa2gHTJwXfPDhHYeH4FOVj+2kD1t7
+arCGBdnP/OgnMO5COk7jQ8xwTprPFQLZ/vsm2jPjpKOZELe7ecFRjoIyEyMic8DqOzpDk8hJVu65
+TKDW2ySmwcTEXpt42x6kWI+w1JVwiphC3JEy5pJQCdTtbTn20piqrNqGtJSAeIl1eCs6tOnbyo9A
+CaCYlqGIltemdtMzVnZ5aArUaIiuQOdtE42dl5t4yIl11fBpWJeQ1mteWBRKWDm25mVrimVJU0SF
+X6+EUojUi2mcqX2uqecrq4nl59b9bXPtbaZAraqwCbe+4dxoCom7CXP9Ige4YSUSPIubB4QN1OJc
+2HywkdhlQIfBO7PLFQ7742Y2u2Fq4u9WPvgIIGtYW7XiFvpmhS6UzkFe4mUx46R7kDOu/pl6kOKj
+WpPQS4KvRElUzkrqxyh1zJ3ASNZjaXbjpwc5mZaL4MqVcKudjpYeVHbbFox9PqniKI6YoFjBDWor
+lmOVkNbL7W2O53jpy9Z53shoWWqkxpamGKo3mWp2ySY2ISSD0MZQ7tUvUj4sAghLrd9PranNrQmA
+bFjWLfH6x/NMDWrWY540BbM/lXQrQcqLInhN3el9SdOOzPPcKGOqMNctKo7aqq2qcNeCGc0q3KLE
+PkgN8yJ84O7j2u5uWhPLHpfO9bjtjl12AM7uQrEmTqYr1NiVbexdi6RVaezGLms1NJvovm4I6xZG
+Xvf8uLsdltlIfo+3QeP4W94ppaGD/lRiZDX5DUPBg1RptKptLhtqFkiMvQqUV22WwpyrmnpiS/3c
+BxytVP3SUb8JlbAI853W6+vI2Y14Gy+Em1DdyK2+yyT6anltKuYoPfMT3YmIo3qTLI/QviMiaKKS
+7+nKf/zHm+C9lHrfk4rMvV/9idyJnTqK7Xd2NfuySFWDcmzgoBaMsVzIhwy/mOC9lu7gEl7XnMDr
+KjyY3mbXvP4Kcy3XAGHKz6BBf/4M8lNoEKA/fvj00dOHj52IffLkoahHI8SKegb1Afmwjx0+euKM
+tBMnpRw5blaqbCmHoso8EzFaNKlHThw3ceLsdJPGjRqhcdS49NkzD8w8Gi9S3Hmx/qWaly3tQESI
+0I8fQAT7EER4aOFAggP9IEKLyFEhQ5IUvZX0yJGiRYsUFZKU19ChQ4gO4TW0yNAjSZokWdJUiZPb
+t4ryOq5kSVKlR5suWeLE6RKnTZYuRZ5cKe/mzZtMZ75EmtOk0pw3ZeZkWNIiRIXQLnK0l60j3oX4
++h2EqKvWr2gBAUp4yCxBPXzyfD3kKLIlS48yS0qNWTNqTta7e7b+mpNnTpUqIcq7KK4i3YgWFXof
+3BAg9ZIoGUKkiFJttY7y+rdPkvEwe+01Uzgz5ZVNQNlklFdG4eSVBDd5BRRVRgHlFQlV4aQsP8RC
+SA8/DHrIDjmeIkmir76KSCsP/iHyA6Q7IAJJD0DssAMjk3AkKUc+4sgDkKWuoqgkiJqSCEeVkOrJ
+qqVckomimp5rKkcdU1IppZ54rGlFkAz6qI8YszKEIEQGAmmhQeDzjTdDDHGMEsocQcs/tgxx5JDA
+8CvEP8kusY4y+8oTza0+35rrEfNKw2wzTcY77DBKHnkEM0swKRCUzArkhEFNLNOMukspUYSwQhRB
+BE88F1mzLUMKgbWQDxU6cyuP+OhrTeHGGuTEgd4k7FFLKOkUNlBBtaQzxE5DLLXNKrWEMkpmY4xO
+3iRRKzBJ/GMvP97y25YxwijFbtoBMXFNU1AgzJATBxkc5bVRVGn3Qk3pBQTE/le3EstWPibKMUmP
+sPqKoIPU/IOPj2IUKaWlLMpRJqlI0tEiI5H0MaKJXGqqJ55+QgpHjIBcCiMcTZKophJXcsnEk+xw
+SEQxt6LZSK1iHkRjO9b8784+18qvEroeoQvP3Opya1pEFCUW0EZno3RY0fB0K6/tTMPas6cJC3C8
+1z5dUBV6D9SUM3RPe43r3HijhLbc1Eo1Or/8Qg45PRApCKFaC0FOVho1Cs6RxZQd/NNkW7NMPM4y
+Q7c18uLClmhF6AysL1Upb6zttXhzhFLC/FMUNAE12Wy7TutV8EAKM3tFlVcitDBCCTP8cCu/EtqK
+uat+jENjwJnzQ8SsYJSI/o+t/i2pqYtUsmgn50SeSI8ZN3poIo4ekulEO1xyo0k3WDKRx5FUfm57
+6PuIEmQlRXooohY/ylchsBwCq8e/8LqWaPTUc2xbAE9tiyTw5B5K+IcT08JEdcZDmPLERTKco4Ql
+FOEa2FAwWpSYVKO8c4nTVIhCmzAFKUChqQp94lOLI9pgUIUeUknHaG3qzV9kaKs+yOpVe7kdcxRG
+n0dQYhOPcg2muKOaAqHNWYs7zSM+g0HHzIVUs3GEXZJWwMmhZ1s/808U6TIdTSSQPKcZYYRAOMIK
+kc0UphghKNB4RjSOIkFq5NvtlpOzj+xII9ZziMLQtLCyiEQPKcrISLLU/qOMOCx5/9pIjaSnIohQ
+jHc+8Yn5gESyEkUvJSh7Ho92giUgbeSOECmJ8RTCF1jp7UyDyAgfqDatKG4Lg7OphF0UER1WrkU/
+kxnXJfLSmdhQ4lFOm1YP3yKZQm0qjaTQTGQWY57CaOYSZTPFJj6Rig9CcxPIBMWj4mKeSrAtitGB
+2s9klZDayCorgzDemvhyP7YoZCSDOES4nNma8ZQmcQTiBKZ+mJlPjfCHgaoOLgnTH0ngDzdomZwj
+JqWeKNolgqKp1GLyophLYKKfn5AQhRL0IAkl6Iwaal3rTMGh1mXoFbBCDlnIIqbhVS9GXXFIv/Ro
+FpqNpHpiqt5J5PAv/pI1x313ROTuAHaVJOWBYylRUiQHmZKJOKcpvdselVSWIx4FbGcjiZFEtgKr
+N/mlT/DBG65gFBiFxglVkaIUJzrXJ81t6xCLsI65Hvqdw4QuL3JKqCOog8Fk/fATnNFU2kSFLnRl
+5oygSEWFFNvRInLGh5QhGudw0xv/YXFbB30VOv3wKq7S5Vu+KQQf5KCHQkRwE8TCGinQZhkgduqE
+qWAQ1q6ZCtVqwjqEqY5oMEi0RZjnWq8UDW/0M7lwxYVYccmOJdTDQSRmaBQYepc/0zhdDanRpM81
+BawoZ8PmBM9GEUkpQYxnvISwZX5hAoTCRNSckvyRIybqQ+9GQiOQ/gDCpn6sHpFuspSP8aR7NPpX
+lTCShxMVTyIqyRLJ4vAjHCEvjzSD03sUip/orGWzhQDJIZroGK49tID2sUQW/YNB0E1KEpggFun2
+yVpRBfMxg7rMo1RbLE58gjqJ2RQHR8hG2L6xQtaVEHfUWh3CHLSb+MtTDNfCl4S8h6ux6o9aSpub
+G0nEgI8SzycWRDpNdNk0auSEKT7BoMWxjkGBJZ19IDqtbq7Hcx/GRA/DFcBp3bI7l3hlZpLltWIp
+CKR+/nOgK/QuBZn0FcqpS6p8Mxx0IuQhOfvQOeE5TrMohw8pBUnwJCKihzQllBQhiYds5VOcbsVK
+E+EJVXnknEYm/jIiFBHTHZpTpIhUiUjs1UhEuHKWvUTnPW+1i6x+VhvjdW5yuy2goOo6mQJ27j/T
+mgx1BhQbT41nmfaJopyI5Z0FZQgUn0DjJbxMuNeAm4we9XGFYKvGH2ZwosFkZUHbJuG49Kk+dBKg
+WNDzVeHm6a0KsQOs5DSsTh0oM7EVT5eBrKm/YopBr6vQ4jBxmM4su5b+k4Sy7COXhtongm1jZj4n
+FRt+7ngT6x4hyr/87TRqaEIa6rYpjBbF3vALIaGtmZ70BCua8UVvOFepV1jdVJ/mTGHkzeqYxutd
+9q66OSrjHczeR97xGq859NWYcxDZvvR+ZSCNeFUUsYgb37yp/i6LoETOeONb/8imtxg0TJwV2s1+
+E5lYiCH5NUGBLmhtYqICWgyKH4WJQldItaA6oCYsIaE/Z2ikqpjFjxebTcloO4LSYRsG6S4dtHNu
+NrihBHxe9Z6CJpk3deFNc9Dj7HyKEI0jJAWWP0U2BRWLQSJE0GsIy9zBE2taiJGzIzChmHyaJ1qL
+qVSk4qLE5GOiNGgkhbo36vLpy05DiWUjYlPO+G/lKSH/2kqZ5Ddpnd+llMdrxEDaKb/jHe8q7nun
+QwyBvH+tiefjn9m//vZHHDmkeJY+BPDLv6oznpH4o+cpCbPAOT7gG+n4MLzAjXhKKD3JE4UAhM7B
+oN3ShFoS/ho2440eAjluepZP0TFSKJ3YiIxKQDGFqpTCUiMFSazXKJt8apx+2jGPch0NYQWXm50g
+87toERDKYLvOWbtagqvJAr21iJWf0bwPWwutsIt8UiIxeh3YMKECebkQuqbF8bE3ygxKuAzn+47h
+ewTFSyAlGhbPEDc8k5OMUzw54SZIUTwgYpB1Q7c3MgVWmIU0Oiw2khDsQzd7+4uGKoRG+JdGEAtE
+VEDtOgRAQMS/0Kx1Uo5HVAgjAT+EMESaGadSIgifW0BRo79cWzrlsL9SQkTyEhMRKZJDConxgsS8
+QkJqaahKCL3Tk7C5yyLzkJMNnMMNpEW2M48eshQxlLEc/psUpnElXkwNTVGtwnsj50sNGYy+V0is
+V5gF19FDVmCFj1IFU0gF1yCdxdAEvaJFORGxOemmeOOc3IAP3DCUyWo2NlGYRnBAS4g+NFKQU0ij
+MKsxyaOQDNlCc8s+3Msn8dgnNcSMZhK3CqKOwrgUIfyOjyPBzsAEjIIt6mM8k5q+kWI8P2SjPEyQ
+rxpE5dgqEdmqAERE30iI9PsQ5eA53EE6rSAv9noIslCYTvwLPmBJdAqtcRKvrQAwjqCpmwQLEZEf
++cG1ptO/7qqdJotAe4ulU/kmR8iKt/IDb6qER5mUVwI+SzGuD/SlLzwbTNEyUCAFTMGMR/FFhSoz
+Uhgz/ogDKcR6BSDSBG9bEFO4Rg2JvNZRBT3MwxLqInGjhATSNgdUqAxMxyLUPLrzLP0gQunwreDa
+CkAglk0BoVTwRsRCpnKDQdp6BYz6IIyaxo+aEHQhHYvahMZxrM7wJdlylGkxjC4juG7qJkXJO8X5
+SI+SkB1UI3RbrDzcRh7URs7pE3gCEXhCJ1IStkGkSnjKHX9TGEikP/FikeAZCJ0MLUOElb/IneTw
+DfD7KZIIHpc6up7ElfEzRHSaqU5DKhxhqZykR255C3sjwp/Jnbc6TLmgRTmjTXTJSl9stmY7zInj
+DNV6uBkbPBQrjLD0pYqkkDLqqHYJszPzTL20Rluw/gVamIVZ0AVd0EE/W5zLKMMuGz7Fo8Vr+c9y
+nJYCWih3pDlmeqUeeoRF+BA+EBwU0xTMPKwqDCF/8iB8NIVYiJA18kg0ikHZeo3NsKjE8xqLCsys
+TCBMKFFaZDYSpQ50+cxvYzzq8yhW0MeP3MGP7Cjg1MZBXMJBeMTyahNSIslJ87dSNCd2ojQ/EM9D
+NKflDAvjbISsqJkCrLqb0QqF6MnsVMCa8S73pMmanJVOxA26GztJUA6+aIQ+qbBy7DIV9KULEpUu
+wjxsmxzR+IRL0LLbdI1R7SLZbE3TAJuOkhBZyMM6XLcy2kEOxYVZwIUOPYVZsIXI88YJ/aEfuhRx
+/vSlXaTFYekh2ixM3cKNJsrAwxSNbro56TANUkgQbcRDMZNLQDMFWqjWWahW4LTGyNvDBUmFxMIE
+E5RSs2EcUiUd2hSN0zIPuZMzLMMUb/QzPgTJj6pGkNrGjfLNjWIFeysgUiovSZQVCVsE5XRJ7eIN
+XIlU4wQ/8GOy3Emnm4vU3FHPmYKV8co1ibg5hQGt3tAseEqn60QeQqIZevwqJCQ7qrRF0NIuQ4DD
+ZENMZTQP2czKwWRRyNQnzhizH/pMt+wlL7tUkqtLagTTjqItzsA+HYy8XNUFDbVVWrhVWzgjVkiF
+T6it2OgiIcrKA9I8RTkMXowWRZk4bAu9Y0uM/sT4OEfgA/v4oR5LkA3l1R0cU1rQQ12wVQ49BW20
+Rr3s0FlIBaylpuY6uC7bwIKUJinVvQh6yMhgURSUUtQEopObRmr8UD+8wevLPh7c0Fcgzu2ssCXk
+i95QKHjkDZ9DCCf7i/SLFfJykUk7Sjb1jZvjOaJkQAIcJ5BthEl1hK1QQkXsEwaMND9Iz+MhStMr
+xOh4RCWULOmYjQI61oAi0cIgUcH7FF9aUOlQorXNJmnSsmeSwdfwoU9JUEwAyI7kVaQVs+hTIz0E
+XF2wBVzIhQ6t1bxlVb37BCE6rcFMPCjdQIsa1kepBDyT0tO9oAOiwRONlUoAN04o17zd0F31/luQ
+Ak5TiFpdYAVceAX4xdBXyNU/pEbMFCGFEzPLaNDYQCbOSFxe3MA0XNG0xLLT8cYFmaaPwqjpQyy5
+fcE8jIXenIVt1EYsUk7gZRv4OIRG2DyFis+6aIQIrECX9ERciU5BLd2vAq37SWIZWkCFcAjfCMAA
+LMTfhSfOqbA16Y1RMqfyws5CLK/J2pybu0VvOkzEWMFo6aIyPLF8UkuwQdwSHRbZ7BSC5IQVDjOt
+/atTTc1N4YxY6FIdzUNePaNY0BBa6IVd1VVcwFBbuORc0JBcjTyzfI3XOdXYSM0TQg0Xjg08Q9yP
+U4zEJZbCsihLoMdKeNAwfQW97VBb6NB+/r3acKVbup3VCaZbHqwxltO+QjblY05N3fPFN0wMPMYE
+R9hAHyo3txyz0dRGxxvTfd3Sf/2zBKllzXEEenzEQyggtFsERCxn5n3e6ICPzVFCmI0VLpaVcq7A
+zZlU7bK3SSVFet5OfqlnBiSIPllJJdTJgbgfh9Bnznli51273pXn+KTSZ44g27Kos0Gbs/SMLoqN
+HjpXi7qEs1zkTzDpv8qM/WVh8OWEU6hG+A3mD3W5TNZV+e3QXsCFS9YFTfbWV3BkzAThMYK9bHom
+t5TSLtOM0/qhiWzlXdSE2EtNYom9GfWlfA1XDd1kPfTWv5wFWtDbXdWF+g1mXQ7cN9LH/sygrafW
+sjHThERWy5A2nLdWvGjBXhIlI6R9y8SCLcx86TPSWh0d3A/dUPjNQ1putkec1M6DzN6oC3Oc4+Dd
+nOwUY55LSd+tC/JaZz+gUSzSbNB6D53c4tKVZ9xI2HjWrqu0MJGlOkHtk2ethEZQhMhIDN5Q4sUo
+50Jc50aQE0whHcTgslPVWlJwyxVGXJEzl6fmFPQ1yBpL11Nd0mNWow2NBQ7tULzV6uCk217Q7pzW
+bmDQBe3W7sD93NnJ2riMuMNjYVYu5E/RWqRWvM/glAMRzNSgO4wCKV62aV7eUF3YV1aYbg7Vb1uQ
+BRB+BVqQhVwQcA4lXIYLrIcrUE2p/sj9PQ0+rmbHDczKE7fCkjzOZTy99sYzguAtZbzPTZBcldpX
+GNi1OLtuSuKGgky6k7DXNufUFUkaTQ5DFItCFEnfTcnTm2d/m+M1UdMPWbIkmyxx2md4rp1CJGiH
+RbuPY5oM5KsMVGJ5TsfdntyMbrjYKKy21lpMcdKunVYTKpsxQ+TMOEtmTGl9ne5cmAU3rwVbBWtg
+/u5e6NAOTYZh6FA9H4ZL3tD61dBYaNqTPgWMOoUtNEtTeOpvK+TNzKYofUOLWuuzbOUoqjFTOIVI
+lnMMDVwMnYUB59BakAW9RfCa/lzqFvUgThBwM2nVUi2XNkvTbHQa7FrE7dpRcVJJ/t9fUgBEasTl
+F3zBQ+/NQj+jVHBkxtNqa9SFWFrndbzy+HRATaDow6yLMV5nmA3ANVkT7VzZPf013DDe1oWPeSRY
+4z09WPFnsRvjSd3nyJaV3mVyBhTjhMg8DJq4bkoMizJn1LNFCMJj1EKXhvsrk0bcr2FcuIu9R9E+
+iyyWUziFCMla8A1OrdblWaiFOtfvyBPr7waGjk+GPf947/aFOw/irt7Bbd5IcEMjk76mvz7m4W7r
+Wb4U9oZg2OD1dG7rbaXbXKiF8Nbui//bvwXwN+f0P69psO5qbyQ8jdK+dYOtY+bt4F7qLJdtKzWN
+v+JmjNqxDv7DbyvXTC9XCFaj/vLeTQ3VEDc3cNOVrPhUlHIe1rbRbXzelqhciyeG92u/e5Vl7HKO
+QMtmQtctxN5N2byP57onO3hXjihiSWGjyhuXaEpQYtFAsXJUQaN9bdS7fCjtDF6UprZGJq21YRMy
+aX7KSi3L2mnChMRS+VdwVb+m1m/0xlMo8A6thU226VrI6bD+6u/2BZzWhWEYhmb4+GYAfvC+ZFtQ
+9qe1Ro8c4QS5yLkUzdfg9ZR2bknXhEI3c2lXKE3YUl2++OPXhdr/b2vEavn1dA/lUGLWVV5OkHOd
+LQqxSMQ6BVv/8oxOUgMeN3FDatDfsWn6xkwHiFmnQKUCtQnUK1MKT21K9Qqh/qlTCU29yjWLlUVW
+sxo5crSoUaGOlCpV0kTJUchKjlSePOmoZceQizo64lgIZKGcORctClmzY6OZlG7yBNmzEU4/Nxsp
+LfTxZs1GlXzyXArS6FVHTXM2JVmJEiVMJEc2unQJE1qwM0WKDasJ7SVNn0ilMkUK1KeCqUhx4vTp
+71+0n16lGrz31cBXswSyUjxLISdSp+rqsnWxli5dsnr10jVL165ctWxh5jwMV7Jkw3Shbo1LF7DY
+nW31ohXLoq5aih0iBCXxlWFSnyhi4pTqFKdNf5Vj2rSpuVxOr0jx1XSokSZWphovtmVLVy9gr7/b
+ehWrIq3PlWl/l/U9Ffjv/pU9JyR8l+7wyak2ccKL6ZNxyWESF1qYvIWWJm8FllcqDabCiULHmdIg
+YQ4WltApE1ao3Sus1CWLhqx4potUL1WyCEtgVWJgI25JhdRLSH3VIkctOqWTUzABRZRHIXFEkyOH
+eDTUjUjlhNJJiwwVFCUo1jRWTzc5FdRVSCE1UkktjlTgJgkiaJCBmjz31iaWoGVJl5/INZcmdVFI
+13F59UVKgdSZ8ph2GdLCCi21dPcKLa+8AuJ0deUyn3ffcTbid5/ZkosvuiQj6TCppYaaarigBl4v
+3l205yueCRSLKaT+VSgoxuWlJien0BkXgZpwIiZwzfmlFiWkOEYLLetF/vrLbLM0KqwupxBbGWai
+8gkaZrPkYsspAL4paEINztWfcsrJJRyAzpnlF4BxyWUgX6fIYh4rjUUkIYbAOYRYYRTVdUpjHRqb
+brG6gCWSSZXQiAklZ1HSYoIrDfzVSEnOeNKPNdb45Ff+ZjlwwwOL5NKUH/2oUr8GtwgwR2ORxK+S
+A5sM1kkAf5UWJSZhQt0lzon5SZdvaSIcchQRZkpepPC8M0Wt0sxXfwQhFotGI6qXmS4aydLYcJ8R
+y1lnqw1DDHi4KHrappMmo+nXqUmKTGadrSf1Z7IgjRi9HSrEc5yvGPfzgwg+J9hfe62JSSElbWee
+qFSzxmllsojaq6Jm/s8iy6HPkie1LoIO5heqGTokmYXHJQcKXuOOK9x/BkEYEYb6nUIqRXkjpt2p
+g0V7Sobbke7QRbbI8tOLLBoYSnOkdFmggV9psqImUrmkZVD+KvnvviqGRRLAI5n4o8k8DYk8dia1
+HHyCoTwffcIqOaJJRyUleL6BYiW4vc1e2vyfc5g4NFlef0f4kG+swC7oXbA3qL9iAoWZZn1nNIsR
+FGZKRZte/EJSDqwULrAGjPB0xlJfa4alqiG2r0WwM8TAzKMW06djNWZP56HQuyQzoVS8bDIHMdAn
+mgMgUIBuVirJy71OoYtcHGpRk5pPvkSVm7I9SlTCGs0O/UQvY31C/iLDyQtieCYt4VBHOA26Cygw
+AYoVboIvXbTi5YYDHImYghbHEdTbzggcgdTHPLHYX3fSsxgSYQI7CArTSMikx+G55XnmG19JWIIw
+kbEoQSURyyGzhMiEXWklEsvSIRGkx0+gzH2hOB8mt/SXA8FPTQUyiYKyqCaaBQYt0xnMYCKSnsnA
+LhYnnA634tUgicwiPZ2ZTaRAuMNO6WJCtMlM13CxGknhAhgOhE14KvW1ahDTa8DIlC6ABZ7K0AI3
+FoHjLEiVLv3BLkOEoVlh6PQf38nvQZMBhSZqBRafASpUjsNMMGRTCz85TRbO+s4uRmMZZx0qM94x
+my5eSZiBHiYV/o3Zj9x8Zpy9/AdAoJOfX4SzRbmJMSGzAI52ShgRijRmf3WhSLQUgsZUyLFXuXlL
+y97il02EIoYJ+otwuohJTp4MS4FcUR6FBxYvxZB9XkofwYq3spZtj1wNRUuq0Je+m7ksLe2DTu9I
+8b7eSbJA/iqOTLUInAol5Dwc2g7rOPfNnXEnPbbo0y44Y4tdwEY0j7NF0pJBDK/1IhnJ1AXZVgOM
+1UwKU2HToAUzA81e1KJTlimWhxSymA8tkVrmgWJBDDId5wAIh6iS3yZqQolULKYWd/oM1ToTjM7U
+QhaBqsgsfJFWtfbCIs4SVhFL203/GU1CcIpWYT5BkIFgUZwJ/gLTE2mIswo18UIGnczsWIkhV8bi
+XEfj5kVuk01apvSokeHPFqPVEMJkKzAzveSBwns+t8wFdLqNzMu8ez6pAkySoFTTXTbxkPIChk5z
+oZly2MTUo67JWj6D6ZoigxepyuWl+2GQQ96YIY2wURb+s9Bg4CWQU6SnMrcsW2gzg7UdGm5SVqsU
+MSm1QUth0FLICJulMJUZZPQiUv0M4mcIEws2mgdeESGjhcQZCupkyDDAAUwopCIcWkjET9MEz2hJ
+m5nuzKJTAK2Meu7JHqZdVHK5lZcpfCOogkBxQitML0xjGRndGsagW3bXeZoYxYFOJiHpQsy5NGQe
+xpi5FrRY/tWsABNOyDYUTgwCDM04Eaan9rnAgKZLtKhIHUAXeLxhguEX2zQdGFKHonTZMaDlJ1W8
+4IXMPybMFh2StywHhmdo2TFdypiuWWAmFr2qsmIkkorzGLmWosrFao0519QgIxjD2GsviEGMzrAV
+xa85cTIwuKlmZEaZxk7GiZmBYmDM1ZjDCK0BGWeuxcRCM346FyvOYx437SWy+a1tcV+Wqp0qJjcV
+Gc0vfnHtYXfmaTt01nw4E+/M1CKt8mmyWtMDxd+Y+XQyrl9hIOwXzqFzMHjRj6g/4SEHHy1D4pZI
+LCTuEA/FYta/OV03JyQqcymGMDdDy3H2op8VRtxowknI/qXTd0cEccvLleaf3Eyx0oa+lE50Sukm
+yTyXU6AaL8rhWaIx8YouUpYULZ3QQgda5gnN5YwOcpdu6eKXFYb74ospY3dmfK9z7elZyerFMEHM
+NLRnxpgZ3jWvUWxBS/HVrxZE9gYdOOwJtlgXvFrMRW1DY1LJ4jisnIz+4Ja5JhqOZ3DCxPh8M+P4
+cIpq3pEmkV/rHtPw20+37AVbIWVA+Bj8FLXo+LkaRDpXblnWwNFEKGJPZmuVecsX75B5Tje/E+qn
+o/S60G8AFd1Xm7YWEsGP5HCWcg1Zqy7umk6nCQxf0CEkt4PBz+vixGVuAYdOPO15KHKrq/+4iTrO
+/wTv/vSyl0AXBrcKFshjEu7Nql8ITrs1T6lmzGpu5yabuaCFaQWUnyyGPWXGLvzCBA2DXlGbpUhK
+MsTGMPlCXY0YtGEKYIWNLjBbiolNNUibXz1QbIAHMUyQZQAKlJnWoNhZoDjXRWiGQ+RWSxUXtZBU
+QhDEJyBFKCAGkfVK31nbBPEbachRZUAKBVFZWq3WogyQRMCOh9TSoNCChlDc6YDUqKGTXGAa50jR
+J/CKqTiEabUZN92J2nSVGs3YoHCYn/yfZ+iQ0ljfhJBR5MROwnkIvMha3tAeYLwFcb0LcPzMlqkZ
+hQAHXkTUOPUXQvwZFDXRcCxEhGWOg7TS14Hdebga/uO0HmKcSl3gxRthlGtVkyeWlrcRC/xlBg9V
+RlrxFXioxjO9hoftFWyAhwRioCxCgy4wU2oAljNY0AV6DbRZkAKy3S8kWRqOxjwFirCgTWepDZFd
+orx4SC/BjixEIysU3nGYRCFgguEQYy08y6QM26Qw0IhsYy4wDmck2S5EIy3Ihy1I4C/ZGWIIiisZ
+FIjwyf68I4WJGxjBVEEQV40pRNftT2NM42m9UbpIyGxlk27URWMMIIVlU2ZU4tFk43F8WzQWSyoE
+oKA42Ate0V4s2p4l3BvNwrwoWByuSpkNhG7dzAoxSLWwDYU5iKuViiJq3wsumKvxUC0V40UtTiU+
+/g2gaGQ8wll68NBhLQ4AmtRoMA4PuRVhcUakTKDXSMpcidhe/dq1dcaJZeXc6QI19NWl8GItMgMy
+TMOJ4QIyqJhq6MIvAtSz5IYxbiOvpCPjBIrfXZQ9fSHibSGWhZv/RESQVcI7rp1pDJMzlI0vgBBs
+tR0wRAp5iMaF6YIvNBCrFcue8OQrlFaM7c9g6A9MQtGihYL/9GE3HcdjKBgKCqSM2ROvCIoJKSM6
+quD/mVY0DiC0rKBmhEqgdFug0IuDIeRvAAbcxKCe+Rgg/mPrzVKoFF5xOZ3/eJQpfCGpXES6OBjS
+gEqpUETG8YxqRmN35EJnPAuu9YpifNsBweM0/kZjABHjOCIOsmwjMbLaoxSRd7Id2p2YpDzTA9ZV
+s62dajCbLWZQLdZiLw7oMfWigF6gfQ5T5R1mLUTKDlWTKB6K4eSCsQBgqUBX4XXI3wEguM0aJVFC
+E7Fag2JGbOzVrk2QLxQQYYnGLrjiojTQo8xnLUhTaCDGRWCkbtxYAuHQeYQU/9wXXcAjxtGHx50W
+4KEn6RzUdjBhc2kEGdXShEkNoFQTTioR49jTPGEph/Jkr5gRQSUcTBYGK3xCRV5mNHJnNBrLYjnY
+7FyI6wiKuUAh4PHKONqTYjzNRc5Yc+mQQ5SK1JTWaLgVbhifnf0fq6Xp6ZihiCZLfJAGaYSe/nxA
+Zm60mKNOU6U4m9g40KRoILUFg2DJ3Q8xk6hOSjXYXWpQg1+dpdegBjEo4LBBSlr5kywUFmZwqEVk
+o7A8C5ceFJwhTbiph505GC2QAkmkQj91RgNVimw40ATxEGOunTGpVjQZloM2m1PW0rk42ACdXo9+
+YYNQp/yFk0c2hoNRWEYgTTR2nLEMyrmcjto0yHmwKXdS2F0G3imIhig6i2qSR58wzaF8B5+ECpSa
+1nlCHAq5Ui7Aqdos2Q41Cq/Y06f43RnpkA5x53j+3wCqh2ikB3qmaaiYi2w62FL237+Kxg65VrDW
+i2M0V6AcyoxK02Ou1i/swi7Yzi5tjVzh/ieIhU2lFGal/EKD0saA3mItVsN/jiq0aSqmIIMtVgOy
+6UJhAgPZtJZ3+B2gQoqEJoud2Wyw8srhxKWozGZpGc5OmkIdYUJnjcawYc3OTgqwuJUtjNYuCJsu
+BAPMQibV/MKwNRDJlkctANBqQiPgEUab4Vb4hZ/5AWAsJAtpcudAGk5z2Ys9osvTLM64KcY0iuhd
+PgoA4mR6AOqjFB9plJbZMc7+OSFuHocrMeHTzOqRVhOWmq6fqCD8FR9hwF9OGo574Jp7DqMcZSx1
+OkYtudZk1mxhtRbKvhpPXqnr7h9brRgx2K3dkmCk1Kx3pOiI5kIwxBMqJkMuIgMG3SfZ/rSdWsJd
+WWqQAxlt+n4NLfLipXSlgNJd+YIHzQYqCHlHslTkNmqGrnIpxGoESSXs0vBv4UVLHYVCP+HG1VDK
+r20YzK5jLzTZsEUTMCSZL+QC3/5KA12waLAedx7KpxCZ/zCIuu7ZqKmNu8KL8GUpvKjuoLxj8P7d
+2BbejP3d/tmTZThqYf0reDjKyXoGaYCwnc3ToVocZxmO300jKZaikfXT/vKQep6L/83m/63jODoq
+FGeGBA7h/9GpYwyxe/DTNjooByMLTipl5NypPY0jpNjCXCngrx3ZBdvCBu9CipKHBOpnslkKVCbD
+M0hKsA0DsLBtaySD097iLmoQapyY/gYiQzQ4IC5c4DHl7Wjh7We87YjOEyiKaBCex+IIRFyeaWjI
+gmrNrkCkgkk0AinMamHpAtaoRt4BQwPh2nxGSqQoYN32gt3yUt5qsQHZqGtZxCdCLryaTiqEHwmf
+Tro0F6vN0uJ4shm10qC4Gq8c1wAizQq1wuksxsZmbSkeSmiIhuiFBv5CCngo5XeIxl2m6xGf6eK4
+Vb+BXr+Z7IoW0K2aFgD6XW5sI22YrHd23qMELf7Orivx5KKWBs0CS6eExnoMsbPkkxSLMxCxFRwn
+w2iN4IsmTmRyxny679yxb6ZadLBBbTJ0ZSSPGDORpS5Eg9ggw69lEDU8rdg0Qy6u/h0yYW3DVsYF
+Mw1cnuzoxiWFpkuFrRUsXnA1FcspaIkpQOYB3qfZMFv4EhZ44BoD0YYveCroKUq8BUNkuvKwjW6r
+hdvu3qg96V48nkIrNMgslBeFmFbHzZqZonAtLa6XpusXS+OstcLDvnVczpOuwuXnttZopNVhJiFb
+qRboQTFpuHMn9ok4BzFpEI4tgx4H/7MvpGikdJZmxKdV//NoYbAdX3Z8QoqD5lOWcjO+QaZ3NhDo
+sZU883MWY+xhmqLd7oL3OqACVnJrYQ3N4pox4a0vWJDdNbLe+ayHiQ02jGUyYAM2LHdJGzLevXT8
+LtOJ7eIwBAMyYPQvXHanzFNr/tcs8obGLjhLpxAlMU6Gq+WkBM4str1rHVWC6ZkNMZAN3kXv9jbQ
+diuoLk/QvoGep4KH1WixRfAQh5qWOj8Ny5pWK6RrLRGdtcTpjDGOCoabt6nmGwHgCv8dPD4sKJru
+oh4RTlqGOLo2zAbDhtFb1SiZg4KnLxglCLGVHTPQZQMLsDzlavHuOgaxy+4zLXPGAQoO3+ky6KlV
+KUOxOPJzPLeWKzvoBzUOEXd3ohgOzS6K2URlWkYvsl4Y2rWqNKllBX6095o458WdpXQlLWrQNAQW
+NMSdAz53VxqyWW4QLlt0iraWavkzaPCu4xymaPj1YZ6V4V3kUOJtBbtYaaXC/sBgAi3YLb3h5wO9
+KKdQ23xXjWBN7dwO23UHuWvh8+fOUyerTTTOWioseDXnRSg0Vyy0QnPlhmxSGJ2SrtqUll6/Ji2o
+OoXptbHcurEkkaAW4+iKhqdmd5IJW7BtL9bI+Hr39hh7BxQLuS4j07ODRwXbed9hdp+7Z9lEk7S6
+son/0JAfygXfuT9VMTFedmhTjQICAwRvsWOPoyaz2mQHQ2q8sVy5ajk2kN1iMFZ3hi9MZTKs+dBq
+6th4eQaixpsjA3OfqiEvPN7hVQMacoCamH1SWx6Lt1rFM4wb5mzTxmg4ZbnOGsTCeC9MbVWbUSow
+RSi0ct1eajD4rDEtZjRt/rduy5WYp9UvvBgySOD2trZqESAR9wo/47NDkPqsNVdak5Q2g/pqHqUc
+We7XunWEA2At8Qr+3uQ+95tlzGromXZu5IJqhIe1Cpar5tWiEE552zzeBkNajeB90i2LWXBVd7xn
+PEs+ifc06e2LEoMzkI1qzWystlg+DTQPc8r2PiVW33lh/fm3LWXcCrmvWbTAW3QlT/AwrHe4YyXe
+Zb5WWnS9mxg2nHRqTAM1MBM26ELpyzQFlr4GVcPoM7LYpPtTttid2zlbbe+zEBtDY21rEQapi7Md
+P8svPCBiE11S+4GxxpuSp2UzVAqWczXhRy+wKCDZbPD0UlA50m8QspoM/mPvmZ5eLlykLKi66nbT
+w5pxAakglppLGgKgq+9fnxTjubTC2E4pP9Wl9YI7srTqvO9aLooN2hUmQBBDRuxXMF++cvnqpWuX
+rmDAHupCJlFgMl29iGHsFSzYRoMHc9XKZashwl0nfQXTtTKYxZXDiAFbuTKlr10La4kcWZBnx14Y
+OxLrqAukLYYMbZGctcuWwmHDdA1LlgzZVIvDMELVRUwXRJ+9BjZrVtWqxWTNzlJ9ShVZVWy6qE2t
+lizu3LdWyVKdShZZNF1vcZXVlcxZ1I4GfV7M1cvozZsIfymspfDnSFqyktaSVWvhT5W5OtrSfOoT
+pUapFhIFa5GYRZW9/mz2KthLJrCpK2Xr+vXT4USOMWfvyiUrl66ct0ZqXjmLVqtTtGjFiiVLVqpW
+rVKluqwLOi1buWJ1l8U85PdazMNDT089Fy2d3DXXuhyS+qyQOUnW2lVrcLC1g5OByqrBuAJmIWBO
+Ygy0rTaSyRlgnnpqMGQkxEqjnzA8ybGLjGJoI2KIGeYXYECMisRgQGRqoVyYKk84W4bCqrWooBpm
+IAM1zEXHkHJrCBmVCkPLRomckcqhX7jiCquDOopwqrj0KmvAAAesxsqp3soSrr2SCQzAsqqq5i9s
+qLmyKl2cmSqYmyDyJbKD9tOluI6E66W4XRCSTD4dfSFKv4Q28owo/l1OSSWURho5xZenkNlIqoEC
+RGY3lYCZ6LZkiHFmookQ6ohE3l4qTiSdaJlls+JkaaVUWWg5hdVaWnlFllNope6ynKjbjDtWbzmP
+vlZlmW4z6HS89dacaNFRPvlmGVXZnHopqTgp82prIP9mnJEohGpRCRkIlTwTJmKakWgYFLnyDSQM
+E8KTyQZlmnAqrlb6ZSbhfsFzpEFVQ3EjOQnyRajOJtJFFlbGa6rPJCEs91KYjERRpl24slehNVsq
+CxeyouGyGrQKA/NLbKrBxqq5qm3LIrLErKavwLqcCi2yLKwKwotyC2Y3pvqEbbaf3swJ2sc4C/RH
+jXaJBRNMFjlt/pfXYppIKhuhCuqpEgt7aVLZHLWxtR8v2o84zYI9RZdm72slllPaE0m0WFJJLxfm
+MNNRzmFZ3bE9VqeDrpVabKmP2FvpY/VV5ITWCdBfcgJzrxBtC7A/lVAMZrGFnl5oojShStOqEClc
+KRmMEDwpJBZhy/AwNEMeDKOBttJZNw6FA/yX3dwkypZZVHkF515E7Oj2VzaZRBVQTFkql91WBpGw
+Af1zbUXhHjNKK7yg2WuuZLLHS0q6sNHS5LtQnsrIvMpyuZq6oDTLKpmSQZIjiRYKZpZXVLFvoXNR
+jMpO/uSEkIUcBCzAWwkxTiILUmCiEIl63WBgYpUIneslncOU/i1MkT/OUC41rJHNm4yjk1mkghOY
+iJtIoGM4oZ3EVO45T6/uIwvkqIoWxrmMaJbVNp3IpzmjUlx7TiceZ1FHNDpqyC++973BFOZqGLJT
+SmQDIiNFSjDmm4psoLKQWaCtFq9IhX0EdkBMEWgYmrKURKKyldjdZCMFIQpUMsIKVcxjHqwY0kT+
+9YpLwKIe93gHKxYjk7aESImgwwpzWGGKU9hHP/0zo1xYlkTucclk23vL9p4EswGRa2NiquRgxHSy
+SVoFW3ikTaNQZAtO8GIe6wCFLyRloLOFhzmumgVJUiIchVQFRMXpRStCcajTFEcq7qOKQ6AmlLIA
+wxTTmAc5/l6xC6lAyBmERKNuZLOj6kgCHPO4xivQ9iqR7CJZtrhFK4iTi1uYxxcioc6oxiY0IIqm
+FfTplUimgzj3bMZwhktWsUJyk5yokUsyK8uM0sSVZHBEZ73o1kwWqqlLKVFTDhHKLl4BC2bw4hUZ
+ZAYz7IOkNLZuLdWMlMQygrnd/ARE/oFQLzLhiXrUgxMY2cu5esEJRJjjHn40BWh+MUF5tcVzUAHG
+KzLBi2tcAxdsU4hDvkSVuUAjTNUSZZfmQo1pICNLybhLXJCBiwPKa0CD0YUnxdS97kmOSm3BCtiC
+YQtLwOIe8diEUUZ3v492dBO8mIZYueZQX8DvKYwz1SmE/hmKDQqmGSHyiOi2YhZbTEIY91jHJkDT
+FghKLBgTwZNDiXOKTfwhHPcAhyYu455kjdNtKHTPfXIiHGUhJ514apZ7ENKd9UTnVHtq23D8KbTv
+GPEktYjMKKPEFuUSaCJBVSOBWoeXvIxFF8+ISogu8opFkOMe5pCEJFZxj3moYn+t4RK9rlIgqPim
+ckyiF0SOaQlI9DQTvUgGia6Si00Ioh33EIYnVGGLjbgPfVIixis8wdOergOcskFXQeVyVpgVWC7U
+QMY0LGyXCMeMLbw8YzKqIdZpXIPAIG5fVcQ1RXD1YhaSKMU92lFf14BCpvdghiUGgQ7TmqIhHLlJ
+BGei/k64fQJRnwCNVNL1kiONSyJ7WckkitFdTggYGJWyyEIysovI/CIhIdHFJ+4AjntcAxNs8+1I
+/vcsZ/FJnve8D1MQ16vAxWeHAAVuToazt9cqKzkrEc5FuBeXtUqpsxBMV2czdaaEUitKafIcin70
+Cjxog7546IR4R+ELNXGlXLPgkL0wFZNDGwRosHHeuW6miEjcox6TMCumIOQLSdQhHvWIxCNk0Se9
+UDhKw5jFJLgLY3KQgxZ9ElC15qKL7HHVe1EKq1eR4cm/uIQZuhDr6CLzKIvgQqy44EVPSWwyi2QV
+TBItY1WKiYxZKOLF75BELkLki01AYh73CAci4MDd/m9K01638M9ANCW0WRG5EZiQRZMzMouF7Aaq
+HFkvYYZhC0RE2RyW0PW82lJAhiwPJcLRBBtKCw5JnCIWQrMJi07X5WQJdDJ8Vmc6Q+gsPOuoV6ka
+jzx3lKxhuTMk7RQb9bSci7o8qWNlkUpFq0Jq20SFMCpjC1qSC6AzYgUUeBDzPYoBB0bUNcCWel4v
+UnGNeICjyWcE0U8g4pulo5sqvZiEIPooCVtUK66WCIQ76rEK38GkJVUZC4TP9IpL30MbbAiE7zyi
+zC9Fmy8EJmuUhi4XXLwCHO/4Rm/MahuVOBMd4I3HPbyxsWhYCX1+P4tE+r4yqEzi0jG2xZU5UYc+
+/s5jDmPQ8TUugUYE/sLsllMnaTDRiGAG1SKv2MYzX5GSTwnlWxbxBSsQUVl01FQgFYmJznSGJ5Wg
+ZBaXmIM1xmwJ60jndEzZxS32Q2f9HESef2JzsXiuo7ytlhbIUSd+9sO218JK5rfIl3AQZy5cZi8G
+zSKaoTBu5EcgbSK6Bxmagaq+x+kG6UxMYQ4o7R7Q4QsIoa4mYRbshSXsRxKu4R7IYRMuAjFY4iAa
+AyGWR0C6YiUeYQPrQRIUrk+qbBhyARHm4B3qwRN+ikM0Z0DQpxkmC/zmoQ4kARRYQcuMwij4gtsE
+o08mxKxE51KabAolQd9MwRa4jD9+4hUkwRhg/mwSJsETYEEVvKQK0U0lumJEBoThMGoS2i0T4C0Z
+aiH2+ugeSqEKbo8UmsIoXgEjGIQxZoEV4CYUGIgSKsF3iIEVKIsEOcE+koUVuPA37GQTAoHiECEQ
+X81+zkZZZqFPWMFVaAET6KC0rkESTCEVPuETUuE5QmIWCiVuUss95GRvdAGHjmNU0Gk45kPgXCi1
+lMWccuEU5EOG7OT+QIJ68gUhzoouoCEa+EJlJGpGJGUtpsJzHHAqIHAvtjEvLkIoTAEPwK/W2mDr
+4iF/dIEVQAEXQGEWOOH7TCsQNgGcZsEUxsMU9NFVXsESVmEUGFEX8EcfIUEQWM0QOCEWlhD1/tYN
+DdzhHjpBFU+BE1Qhf+xLIPHH2vSCFQJBHLpLEYyCXkxhE1aBFezLJfBHFWCBE4hn8nxHlV6BIlVh
+JrhtY7hNFSbBDFDxEUCBEzJBFTRBE4gnEFwBA/EAESRhJrdNFXiB21biFUahJysSN+5RFUbhE0Bh
+E+7gxdrBEuxrIiaBEOoB78BhCTzyGizBFHrSEiyBJbsoJjlBEkbBEjCByPggDgDhET7BFEYhEzHQ
+ED5hEywhEzghFTiEEyhyEtigsszhDn7SKHKBeDTBETghKlNBFj7hER7BEyRhEyTBAsdMLyvhEFSh
+LREmFTRhEjaBEh7hEjhhE0ABFMYDFAKT/m3kJM54qG/WzP5UpRZKLidaQWxy4W9G4p5GhSQEC052
+AcSYExmoKnu60Vuwy+nKAuqsIi4ELbnYQmd8QdLAzyOL4Q04UDCvod7ewRgCARz6qB7CoR3eARYu
+oTxXQRG66RoMARbWoafMQRUyqB3mQRjmwRpkMBAmwRzmYRxswUBewRD6S7zWYRJWoUHXYRV0QRX8
+E0DBAeo44e5MaxM6ZxY2oTxZ7RpWQhXeIR4AtLs6ob/qAfcmIR7mIcrG7BUoD/lM9B0gobRG1BBE
+1BrcExKKod4wEBLaIR44ihNEdB6+wRReoTzBgbvmARxiISa5Sx7Kcx3m4MXiwRJ0AS16/uERBGEe
+3EEe3GELdMwavssY+ggcipQXMmEd/vMd/GgVKMEP8q2n3mEVEEFE60EcEGES8pME+QoWHrIeSuHF
+0IHS6gEcRlLsxKG0FpUTLEESwqHe5oEXEAHkxgwR7pNFS1Aw1XRRzSFPjaGVSghQjVQWmMK49kQz
++iaegItvWKWe2mlvfOEX7Q9PZOtybidf1OesxM0qrJMsBCIqJBBKqKF9TmxmhAJy7gsTJo3w6gEd
+xDMeICEQxLAeeOod5qAY+iseioG7jGEOdIwX6EDHPCEQdMwd6u3e6I3V/rMNWM0MXmweVgFGguEU
+SKuPzAEcyLWuPo8cJuFd6+0b9MIU/mhtRseIE+gKxsSLGTJhEuotHhpUHtpBHvwoEOaA1ShWvNJ1
+BMnhDyS2HgjBGh6yHYohYdmV1SChFL41HATh81YhDHuKRVchEEZwLD9vHgjzxWAMY9uBXmEsEx7F
+FzgB7trBIxnhLAEBEOT0ROehHmBhDiz1IcfsEOAA/MgUxjLxIb0JDnSsHR7yGhAhEFjUHUqhKOvh
+RHsKEqJPvIq0pwLhDyprLMUrENaA0qwBDjgU7zZ1DvrLHT4PIsM070TWjzTBGBOiT5DFVnQCcYol
+VYhz5vhPWdiPT1hEaJwrWqCB9OgiGrBTuQSClySKAJ/kdK0CGqCTWs5oFu6A0lDh/iG3bh4mYQ64
+yxWcQMdcIQuWgfC2APysAQvkVBnMIGqz4NLqwQkIgY4EoQ7adW5lcAl46psu0u3MQHbNYNXkQQva
+gHkTNhwAzHxAgWpnFCZmARFKSxuWgNLAARHCVA+dwCPRwQkYoR5oDwt6Cnf7a1zBLxzmIGbnQRCw
+gNKKgQ1ezB2QYHYhQWjRIQsSthP+VRnW17TMIMrawQnkFSIB4TuXAPyCtt04Qdmawe3gzh1QgfDO
+MnvvQR62QDwNFQ0+zxWQgNLMAQ/m4PPeIAj6qxOwoBj6FAtkTx6QQF65ddXmoRPoYA6Ksky1oN46
+AQ+ibB6cYAvqLRLMoL9KIQh4/koYsgAVwYAriWDr2uF/e0oLts7WrvgejMEMxJAcHCEVoCUyQiI6
+YIU9lgVZ8BiIcmg//qYX/E9DdPUjSoQYoGR99qLooOHvpKLvoE5Zk6HoqEEa6QJKvlG6iCEVrO4e
+lIHSlkEe4kEQxuAh32AJlGHMsAD8wCELNhAd0EAe2BMNprWCtRULHPIeIgGGIXISAqEOWK0o22ES
+WKH6ckERzKDWIIENomwdssAh66ETnPceVvJLjrbevqkrOFJOSwENuLJ5+6gNsqCUtSEL2mCm6qAK
+egoNuvgerMEMUFkQClcQsuAss6CywsEJtODzFrgo0cEMyJcQzACbexgDx+A7/rOAipvZDLirGLBA
+jLcAHYn29I62HuJBPN1BG+rBGgwYxqJgC+SUEGo5EpwgysKBDSJBorGAB8CTDKKMHMagFLQ1CICg
+jwihstxhDjSWMbEACz4PFsygssThCZYAn4u3HtoAC0rZGrpAb7MA/LRhoz+vDlatHZDACfqIEYxa
+nQfYvyQhWfJkP0LiOtoDhnhoOFRFzdTJhRZ3RHQmMqJlTWyiILgCGqjhL6LtkS3MKjTla7xRKkD3
+Ol0mGuT6OmdmLBYNK04BDihNGbYOHeLhk4uX8JSBp8KBne1tDorXHeoXHdBh664hCyhNHMwgjbMZ
+Yz1hFDJBBtWhHowhhKFO/t7mAO86gbLJwbKxuJWhOapi7/OuYRYCBBQCoY+cWYzrQPbugRDkERzM
+IEznAQ2woI/MYKntDbrBIRCWtx4gAQxQUbrZoJjnwRPuoLLWoQ5uuLjRwImFth2+mQRDO2pveYvN
+QIy12Y9COBmeIafgLh60wBz6dMyygOLGAA3665bxub/t7Qu48gukQG8r+B7E4QssWBmUodZK9iN9
+O8rQAQx0GiIXfJ8znBDktR7mgAx82rPH7Ao8cp274PMIAVEL+vOQeLGzQB141uA2QyTEmmzS6T7U
+6fzcz81WS7CGYiv8TcveRMsIwkri4i2oYa3uembOwjmv064D22SkMXva/mdYMWUgQIG0NNkJxrSx
+h3v25sGVw+ELUFlj0UEelGEeOtmiS0G2AyGNXaG878ETwNAg7bYYTOHJYwITXRw0zQHN/YvOVwEX
+klwXTCEQ1MG0XmEqXuF9SyEQLu0ddrneIEEewwEOxPJ+e2oN5mAEkbt/k5iO/Dmxs3qy64AHL136
+6OCZCYG4IyFLYQwNokwc8KAOXBkSvqC/hIGMg3br3sFD46IX5m0e4mELTnjR19mH0YG264ERahmC
+RRoLuBILmgB4AzocAtp+o3YeGKGUyYElAaEozYENyOAhO0HEu2sMwODz2mADA3jDoyCxo0DfxiAL
+cLgoySG0/RMW7mAN/uRBHroXHQzhFVoBOWzi/P7prPHsFtysFuyv507nIG4h4W+BIIBKePIlMvxN
+rtUHGsjkrqlCUw4wL6DEZMok2gy5TLIzdB2wqM7mddV53jl2uOutDYbbnSk7HAIBDq6hTzFbHszB
+sSktHP7ADPLzzTF2FWbhtMXLl0ehS29DFe6umemA0shB0OccY2FB2ZDhGaBhFgAhbEMYGFRBELhe
+1t1hl2X6uNkA7uRhDrqgp0IbeM2g6OfAeedhgVHRzE1rDVK9u+eAMfMeY1+9jzxB1tuB1rvLhqvY
+DHiqGOYAvkHYvqiB2CHBfuugezH2GhbcHGj7iHE58Vea2v3oC64d/qtr/arFYQv4uQ7QAPzM4RFe
+QREozgzOXcNvvwsesg3kdR4CYQxEOsHV2SzVGQ6wAGPbgNzH4HqhGRDgoLRK+RoWoVl8wd+4hWz+
+pFdAgjj5yYfQD0/exE0cPl+wj6Fy6SBAzJDDJMq5By3kWnWdEzv9gvQE8K/7GqyoChmcIa9NARAA
+Ity9cGYY3bs3T1CWePcIsYFF7toca/fASUJkUJ64N/XqrUM059o9dHPmuLvHqM68e6teWRJ0r16Q
+d/e21SKWzBmxTYJowpojbKSZOic7mWEISxc1aNCS6QpULCasV7g4zaEpbE6pe+3qqLwHaeJAM4Tm
+zTODJaYgMwKv/mWhGM5rR0hsBBYzE1Xc0HpgAwVtN+croYX3SpkJiu7tPXJzzMyrF8mMuHt3t7Yr
+eM/dJqXJgnGK9HiwuYPXwJSqB7gOw8hF5+T9QuhePDRFJhfrEpWcma3osEwkV8cVV0WbECGmc/Re
+JzJBzbHBwpDQFrV472nLou2eNSwUwWWZsxKNwctYHsM6dGfryVWcbvna9WuX/Fv03fvyReyW/Fq7
+bsnKVZ8vueTSXy61+BLfLsEQQ0ww8QVzyy8P7oIgMdEkg0011FSDTDRLJYMMNsgkA2Iy1GBooobJ
+eFgNNslw+CKMLiYDTYc1OpNMg6/8IVA4a2zB0DxhjaaMGRRd/mNkRZk88pUyRDAEjiKBdHKPPGiU
+NY9XK7W0CSQxOaFMZqoEg0wzv1wiiDv1wDIlQlfKIw8h4LHUC4kXApMJaFzxkskqgQikDRrZgfNH
+HXyF1R1Zj6GRVmFbnFSMayNlUUeVa7W1W2ZbGFQPJHggdscc8ihnBjraYadddeIEAt48nqxBkTjc
+cZWpO6AAQyMwlOgZmXDagRGJbFsQ0lEkaDDkiaTkkJEcIz6cFAkWUYVDBrHzoHHUPIFwyiZQ95iz
+BhZFkSGcOXAkJwgW7RS2xGjCoHrNGJZtOs87ZCG0RRtSVYKIobIZAkortwx4H4XyycJfLr8E48vA
+Df+33y65/iDYH4UFC7iLLg4Sg8yC8C3sSzAYntjUiSbOyFTKK4aoSzUnv4ihLtiYPKOJTOHYzDA4
+AmMKIOAMhMgd2cUzCVQITeZqIBSRwwknd4xWChajGdO0IOu6A2UggqykCi6bBHsPpQxdY0tTupgS
+CFKSzHE1Q+RovRIuJGLDVDKzKH3QQe0EstVIB8EyCSQrFQ0XHl7GM0ej8qzLEkZ6M/QRHm3RMWc7
+QXriF1dwK4fIVvOYWo8neCzN6kqd8H0QOqNettU7r9DYFCeT1OPqHf5eE4gZNLlzUj2lzMFQJ3iI
+JA4esNKuDmpsiJEbHmasw9W6jLGNUDvGRIWO8cF7Sw4b/mCs9kVU8qhzzztzgCGQNYEx1M5KEpmx
+bjvt8AULJ4tIXZEjrcjHP4W10CIL+rwnGLU4UAH7c6CG3YI/DTOYfN6zMGKAbEEh6xh8cKKhDG3I
+ZB+iBslodKFoQGNDKMKGCTWkImpE40JNEVGNOOYMZ+hiEuGYBzmWpJ5VWIKGB5nHNSQxCWvUAxyz
+eMUkwOGqOYCjHqqwhS4U0Yn5jcQTnBDcPXBxNk90xBCBEMk8bIGMZyTDFpmYHzNwMYlSSBEdqshE
+JmjCC2Qs5UTIOJsgrDGqxaiiix3xoSo4kYl41GMSkrjGPMCBCMFpq1Ha6Ag4JrEjazyGK6t4BCLC
+UY8f/v6hGHyxRjzmgUZh1AMdmZiEeUARxD5eIxOKMCQ5JjGJT8JCE4EgB0KEuDdjoEYVHSqTKrQ4
+Dx0GwhyZdIRfVqKN9sEiTSzpog0lwUVicgUSdnBDUMhhiDtEkS/tWEUm+CZI34mSHEFT0yoAcU1A
+wGFdomPLSuZhDDzIAYnXQAQcSvGOjpBDEeo8TT3Csa76UUIy9zBGIVIxsfu85z0GSlhCDzSwiu2i
+gANLWAIH6KCQIegX+GkQMjq2IBe5CEYgpJHJVjhHD86shDTbkIZGaNJkNAMazmhKU5DxC11sIhOm
+0MUsNvEIUMxCF6NAxCRWMQlOFLFprOhFL0xhiaYB/lUTs8ApGafkic3Y4qec0EUyeqGKTYBCFaO4
+hCRA0YtmNMMZTxVrL3TRC04AohNZbSJZe+qyOUbjGU/lYidWoYpXGHESsPAEFnERVk68ghWqgOQm
+NiEJSfzBDAdBAySoqAtdqAIRgugEJCD5ClOY9RU/lYQnwmIIqtjCFKZgBWMvwYm3NhYSsMiEUDUL
+2rKaIhe4QNtpA0Gcx27CFCRiSjNWqwhOpCIVlgDEITTBClRe9g6IsMQoNnGJqIKCElFlrSHgMAlP
+AMIRjiiEHuwwCE1owhBzuKwiXrFVSwQCqYYwxCI4QYlHUEISmuDEIxTxiEpQwhCDqEQlJNEHQXjK
+/hGkkKwhKEEKTQCivZNABCc0MVkztCEIauKFJRARiI4EghMI488DJRZA+vQPYxKrhQAJZDEFyWdh
+C1vQLxq0oGDY+MYco9uJTKjCOcIOphfKEIYylKEWnTBFG4LGhUiGjBg64xlqJQYw4DoMEjlVZMkY
+Bi4E+1Yt26IXDILrLN46ZmCodRi9sEXX6kQiuZEoZ7vAFVxr4dVmlMgpMoVGM+CKi1kMQ8/JkHM0
+6MZCEX51FrPARZYLrYtXeHVnwABGL3yhizEbaBagUARl7yEIpTIIJ5o1BWl70WJZ6AIYtkiFqVUx
+i13I1NJZlpsumvLVUQyVRF49sy6GAVdiDGMY/ozuWpp7gcUVlQzYjLaFgFxbi1/UQhZiBUVTLT1m
+TAOQP7rIhSWieopTpEITlVgEJT6xXE5sAr5c7oVgXW2KT7yCFqxgdC1ykYpXxCIWuvjEJ8L9ClI0
+TROvmHa+U6GLVJzCv5eQtyWMMY9wSAEJ+VwFJv7AG0WEwj4Fi5B+JprQjzcQggodech0TGOG4ZRB
+C2IQiZAxamok+UQqXJFMP4jSl1VDQ9OQ+c43pEEToWivNFXrTJlCjWd40KbPaKHQodH0psRwRGt1
+RseI0QxkpOxCM0VGNaAxs6aPTIw2E6NaMQRTkmFjhTkprsuafugQrRDsNKr7iFyGDbU6+ekk/mr7
+iHLUi03MgS9dw5FxZTgMnOAoRzork54f/3URJjnyI3SRTVd0oqaL0Rkz7XuXve6ipC8lRCSKIcut
+7HISAYNMpb8pjn5RaTLppBe5IEYvIBSK3IdCFuE+UJ3q5oxfOJVCvYjPyYNx+/f0xxe1aEXIpi0L
++NxnQNO+RfEJdgpNaLEejPDcJJpry2tQwkAr7g9HGyifBn1cgBCMz8L4Z3waPyhkOP7FRxmU5Z8P
+3UUi1LPMaTQzStYiL3NCeYV2PzYiZBd1xpUyHvR/P1Y32PAMz6Bo0WB1mxdDdVc3MhdklpdB1DBT
+dGNcSQdTSDdCS3FocwRkHLgiPnaCPrZ2/gNoQmC3QnQzM4iWE/4HIroACoAQN8DQFCIEdX6WdTqh
+C5w3hEjHf4fmZAGoQkxxQmv3ZCLYFHjngHXjZEfHdhuoZ8FnZcPwUVH2eHomR11YdaUHIhIEc8Pw
+C7Kge6HQCs4nho+XIzgxDDrmIBJifyyXhxEiHxACUXlIIR43agtDC6RwB7bUERVxYIjAF56ACbRA
+HwxDIb/QUIMYDAqTH8o3iLeAh8t3H7fQMTWWh78wDMCwh3wYZQ+oInMDgCYVeiiSQRnCDTJjQidU
+gyPkIUjXDNRgIxHYhEpmg3S3QizkDB/Cef6ndEqYMk4mczg4MyVIhCA4hDWYgiq0dpZX/oEIOHdH
+VnkhEmS6GGTRoHV7l4E1xVaqcA1E9IokM3pEiCMxVCMqE423KHmz6EEeInmhd4tyN2SVh40mIkJz
+VCMwByL3h3U5IUYjJHVlEoZSFkNVhh/IcAu0gAmNkHu0cBNlonRR9lE6lh8KAlISIkGkCCER8n4O
+cpKeeHw6Jh+k4AhzYAzgYA2w4Aih5QnbcA2VEAv84X76MUDuAR9/SDHvoR8sFx9++Au3IEEopx9k
+ApJX53IMonUyJzNgR3MAGGSzeIMzd4v/NzNLRyNqBYJ9NjKHhiFzh4Iy5yHRiCJ+ZnVRpnRj+ZZA
+dmj8CJZ3+YTTyBQoJVJpmY0m1JYl/qSEI/IhPsYiMkd6aCkiIhSRUvZW9eZVaGd5NxNGHwWCNbWW
+0ZBB0PCBdMd/2OhBL7MUGvKMTuYhWimENLdWdQNzEpRlx6iZmbl4jscgYyibVocT+dEKjYAJcNgK
+9jciL8QgS1l/DCKKvjCKDCQhOuaJxlmSDiQhIOULtJAKjvAHeqAIkvAJtNAKnOAImpAK9kEf+eGJ
+nrh87gGUQLmUE9MfGUUfltiH+aGSHHNjeBhBDLJBlkciKcVktwigQBaW03CLO8dCVNgMSvcMx9if
+HqJS+LhSIuWLS5EyWadWE2giz/hjN8iWbTlCePeWIbQUIjIz+rifI/pjdadsLZhB/rK4QUxoee74
+d1EGItRgdbATo3NEZTiDIwsomqaJZHd5aHdJg3cpUgIKdlgpUiK0i/yXoDnRIKP2URGZDFR2dKZn
+eoq3FNLgkHUoQcSwC6eQe6dgMKMWQ3jYIA8CkjnmnAtFf6c3MM6pIPgJphRCC7FACst1IAdzC6fQ
+CgTCYziVIC5WivS5lO6RIM8ZMjWmppnYlFG6clSZpl6HQoJJN0qGUj/XldQwDdzwlQXIgaEnQk13
+dpXnjAa6IZLXliXqmSe4oJrXgEFYeQMpmBz4oc9YZA4YiwLqhNXQlhrKoc4oIijCgTJ4gmg3QmZn
+oyXjZ30ZqiI0gDSVI1KWdRRa/qwuVYAcqiG7iKImJJBYKWSN+asEuBTNwIfEEJFKl6CvOqWS+lEg
+whSwmiMMAyG8B5zq6R47FgzvuTEtJ0GL+nHGmWMMAkEfxzEUOYrnCSDnCSEcNR+euCAdo54PyzBg
+KogNY2MOUokKwpQbRX88xjHF+aUwd4zbmo//94JHZkI9hw3c8IwByoIuOJospEL6CGQfWI8vJZjP
+IA0p03ScN2U2V6JhqUE3u0G+Oo4U2kLXCqEioiLa2J91p5i9uiFyt1JCCHWbp67LuFI0lyF6xhQ0
++lEM2YuHJoyeyqvc0CIoxIFb6XMy55kaOjIsZYMy9QxR1nJhWCZDRqFxmSNi/lhTyCANsBOXecgx
+u9AKnyALi8unHKsgEjSn9Nmwxlkfo6aSOQZzS1khlpsgHwOyCAIhIFmIYEp+ogshJ1eexIC6T1me
+CuOJBJtREXt/r9ljTiihAfiBPeeyuvuVLLupa1eFYalXIxMiR3qiHIq1FCq4HtSLywh2oBeA0Xu0
+m1qFJyuhlXqzibmpGeoii3mrbNuZF2Klm5egSIeNTEhzouchU3a3UCcNaAl0AeqpP4e2vWq7ocqB
+bSmk/OeMSZcTUTZq6Mq+HQKCNrqgVjd1CNx01CANYlQNC0qRObYwcdgKtOCdLjaIFEImEnQLOiEh
+okgMmpiJHZW5TLmUffia/jl2nienUC65r6CoYw1zqB+8MebHIAByYxGkHzeGIExJnzgmqacHc69Z
+tAJpu1/JDS6bxJ/qst46cyMTlkf3Yx0YswVatA4ajUv3eKUJdgLKlScEdHsJhSebmEr2si2yn3YJ
+jjTrgkYGdGzroJm3igzpq/v4Y/ros704UwtKqyoVoC1rQksMxj+3tkiGxkV7g7+qUhTai0MMkWJo
+gmKXdaeHwFFWU0ineSHLlK9ZC+EWbq0gC61wCi6GkhusY/cnMRSiiZK6weU5iaeXH8U5uSBbMfGp
+hy2HchACpqG4iTB2kmnqHq4LxFGaukEcQR9FtR96pALqqdRQv7xrtDcY/iJaN4ELjKss8scAGr8B
+WQ3SYMBPerXxW6At6rT5S6HGq6lRGMhf2SIpmKHu6K3/l5hnGbcVWpVKx4QemqphN0IJWlPebLzZ
+3LL1K9DZnMYlmr+x6IDse7AfdbdhpHl75UF3qxMgOXVh5EFTZoE26pE1Jop9qnt+2goUZcL+ipSJ
+iqZ5yzEbBcK6yTGTO4n1AXM+HLoLgp7vx1GGi3Lwsa/ISWPzUbHq1x9IiZAbHMBru0GhSrQAKsgz
+k8T1+8Y/CrcYgrR+XNBgLIUoRapURoEq+LJI5nM3OItHNrflfNVR+LRVaVMOeDIPGqo0SIKiB6so
++KuguYtQl6Di62dK/s3UTQ3I0WvI7HyzSbaCRwy3lqkTDBJDExivzejPCPmQZteESrfYMLcxJdwK
+F5l7FKwfuWDSVxfBJhzAUvqvC+IMr/tRJJmvGzNqTEl9N3Z1Hp2fFFkh9aG5EXuez7kwERLLUTmd
+PjylVlfG+4khBFrQ9QvVPceCX9e/Q0rY2vzH+OjHz/B1KhiWmhqqvovGbDu3uOpSX/zHz6p5SXd2
+wOtSI8O2M6i0Q9h0mwqhKcjea5kyn8rUAw3I3MCyuurHXKkLTRy9SoYhIXKM0MClvqgTBx5GJ9jA
+Ozrain2MDbx00qoTQ8yUopiUbxgKpxDKpPyQupnCDqK3KQxzApIL/plLlbrdnBAbISytyx71pfVR
+nifch7c82u95Y6/br2RCspEa3NOLxFb9x09N0E59i1AcmHwtc7sL1QV6viv1wHOUV9ps3C7rzDe7
+c/iozxza19n8UtLwwLE6tB5kmkdrrXs1gUsx3tob5lmchEonvDMz5Z761AONti/bc8YN5/QNs8hr
+mmVLU1Y3oR2yV1q4V5d5f8FwtxTqqwzpQSkMy/d3C6Hwm7q34RcUwBWuHwhpuXnoMX8o4hz7wySJ
+2xXb4gJkuC5+nyFTuZuscvRJ07sdqCEbqVPHmF99iwTd1HJu0Gx5gjWbxpzqzEr81/R9shPNmR84
+i/5N57xarIAp/pDivM72LdbmvELefKxbWalU3bYXUg1rBYJih2hfLc6MToEtFIUu2w3rPOdyvsRt
+K+bAbuugGnpJ7WTSsK4MrbVdraBoLsAuHY8sgsZVB9onPtOQ64YZvtmcDSDo2trH3O8Hu5QIe641
+Fss5Dek5nMouXpIxjMsUmR8Uv8klGUG4HcscU8ybPMSWPNgqm81oi9wCbbI125VIvMS5DuxM3pWe
+6c2+zvK47ruBLbz4K4xBzqnaqt4USmVdDNhfaaJh6QxcOuBtC6BwHIAM6WRYCd41T+d+bdDKDue6
+asZCCrc9m6wTGEM2Go1MCnW5qROJrnQpNaqazjHP0No4ph+L/pvhp4AJGg59Mr6msh6GVEm7C0Oy
+r5vTMjyy+eHZmG58obuUN+7DH7+vHEXMH0WI+OEMNr0xp73BtEsMDx3PHArNty7kL1/fWv7GLU/0
+6R6FZ9mhvwvkX8n6RatSIAS3HAjNpU8Ns0+0TVjv2Yje0G2rvLiQaYzF0d1kO3+yWd8N6z7nBg1k
+86uhnkqg4q6hW7qsBG7gvuhkPMutx+jQJJsyvjqDVerhDB+XHk6RCULBIU0f0UbjPpylr2lBIEyV
+OvHRXwohoG3iNG3imgwQt4gRuxUMGbFgu4L5+iUw2MCBDx0KPNgwWDBnzogdfIhMY0Zn1LCNHEmN
+m0lu2Lit/lzZzWVKmCtJkqyGrRq1m9hw6hzJkqRPlSRF8hSZM5rIozZnzpRJbdrQmtFG3kw2FFs3
+k0tHdkuJs+ZNaNiOSs2J06pVm9SOUqPmDBk0ttCiwa1Js2RdbM/Efs3JVGVLrlxlptS6FC3hoUXr
+JrNZTRo0aFWfQXP27O3audTgQntWufOzztSkjaaWjHNbZJY3bky9Gtmvgbdk75J1KtSpU61CtZLd
+2zUy4BCD/zpIMLhBiLM7IowdTGDBW78MypZOTHpx5g8JMgeOzLkvgrAP3vKePTZCy6mBTz0ctCc3
+b9QEuydc+K5IkU9ZDt6/9ClJuMRSqySemCIMpqyEUsuq/qSCqu+vnwjUaSy2dpLQKajMKkuaaiCT
+ZifGiCrwJvxEY4usw/bjxiWu6ItvJrb0K6y+/7AJcKSjPoQGLGqe6RGaZrySJpoO23JrI2qakSst
+nNzSSDhiNPpsI/Ieaii6X3S77TbecsmFt+iEAy2212SDkrWDkHluoCPNg00ijQTyJZhfpCNvu4bK
+qwi2iFhbDTY5jVtNIMs6I0anaQyMKSWsBGuxv8Kq+eonkWJyENKTmhopLKLwWupAB0dEa6gHITxQ
+pplqGlCsaBr0y9NU4fpRqBDdS0sqzcSSsMC/VmSRRaBQOmkaSO3TqatqThrLJiI/DJIzuUaDi0PH
+pAky/rXOmvFRLbKQ6bE716KMEluNrgQ0ul1yU/cUWdrdZRffVHsmuYHUVA8iP8U7yK2DGJqTPI9Y
+064giDqq6KKLgItuYYE0UtiZNZ+haLV6kdEJrff2+3XFRVElEL+L9YPJVAPfM+xiTz3t2NYIJ7SQ
+5UuLVZAtAuuy6kGQ8ZvM5V1hZI+oAYd6ylEWvdnY10dXlE+rUkPtySyoO7R2smeI1EnVxKAZDbTL
+1rpJmnnnDbe7Hud1OKJdxKPulnZb0c1t3t41M83yzMS3u4Hv9HM7gSDKc6ArI9IToYIAFZu5vgtK
+kzu3llu8s4ycBoowwZT2RuZURwox01N78lzF+lK6gKks+1S0tVRYmQYVVY9h1Axjk7XaKbG5Lo59
+2JKkslGzG3V6KbBfgf3dJ6BiVt09vEav5hkOP4sGNJwsZtIxqpknTdUOQxpoTIrD9ja4usM8W812
+b7HNNrdlgZe5PlkDWOJ6JwZu3uMIt3dc5AgveLuI+FwctoaYZ2Laac3dxhUQADs=</current>
+        </image>
+        <integer id="nframes">
+            <about>
+                <label>Number of frames</label>
+                <description>Determines the number of frames in the output sequence.</description>
+            </about>
+            <min>2</min>
+            <max>50</max>
+            <default>10</default>
+            <current>10</current>
+        </integer>
+    </input>
+    <output>
+        <sequence id="outs">
+            <about>
+                <label>Animated sequence</label>
+            </about>
+            <index>
+                <label>Frame</label>
+            </index>
+            <element id="0">
+                <index>1</index>
+                <image>
+                    <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CACWAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDyWjFOxSYrcyEwKXHNApaAG4opaXqaAGUv
+WnYoxnNADaXFLijHHtQA3FGPyp+KMUANx60tLg0Y4oAbRzTsUmKAG4paXGKKACjFLiigBMUu
+BjpS/WigBMUY5pcUuKAG9KKWigAxQRUn1pMCmBFj86QipdtIVpAMxSU8ikxQA3gf/qpQRQRS
+FaAHZpfwpq06gAoAopaADFFLmjimA3FFOoxQA3AFGKdijFADaXFLilxQA0ClxTsUYoATGaTF
+P7UlIBtFOopgLSU7FNIoEHFFFFAwNJilooATbSbadmigBmygKakpcUAR4oxUoWl2CgCHBpMV
+OUpClAEVLTtpFIVoASlHSkxRigBwFKBmkFKDigBQPSgLQGpQRQAmOKTFPOKMDNADMUU7vRQL
+QWkIpxpKYDcUY9qcKKAGFTSYqSigCLFFS7c0uwUARAGnAU/YKULQA0UuaXbRigBM0uRTdpow
+aAFo20YooATYKNlLmlBoAbspNlSgjPNO4NAFcrijBqcqKTZQBBzSjNSlaTbQA2inYooELikx
+T8UbaAGY5oxxT9tG2gCPFJg1Lso8ugBgPrS5p2ykIPemAlKKMZ/GjBNAx/FKAOlIFxUsEixT
+o7ruVSCR60gGGLjocGm+X3rqReWU0XMke3HKtx+lYN3CqSs8QzAT8rDkUAUzHSbakJozTEQl
+KTbirGBSbRQBBgg0vSptg/yKPL/SkBECaNxqTy+KNlAEf+TS9/1pSlKFpgNxRT8UUALigCn4
+pNtMBmKXFP20YpWAbiilxRimISggUYoA4oANo70u2looAtWenSXm4qQqr1JqxLoUyLmN1f26
+Go7DUDZsysuY2PIHUVsLqtmy583HsQanUZzLxsjlWG1gcEHtSxvJEcoxGeo7H6itC6ubW5uW
+cxyDtuBHP4VEIYW/1dwv0cEUwFsLSPVtStLFcW811MkKuBlMsQMkdutb/i/4fXng+ztrm5vY
+LhZ5DGBEhGCBnvVHw7ayJ4s0R9oZRqEBypB/5aD0r1L40yNFo+lMp5+0t1GQflqG/eSKS0PL
+/B/g+58Y3t1a211FbtbxiQmVSQQTjtWf4l0Sbwxrlzpc86TyQBSXQEA5UHv9a9F+CzRv4g1U
+pGEP2ZM7Tx96ua+K0LHx3qbkHaVjwcf9M1ou+awW0uTa58M7/QfDEmuy6jbSxIsbeWiMGO8g
+Dn/gVc74a0ObxLr0GkwTJDJMrEO4JA2qT2+le3/EIZ+Es4/6Y2//AKGleW/CxMfEbTs/3Jf/
+AEW1KMm4tg0rlDxf4TufB19b2lzdRXDTxGUNEpAAzjHNb2g/CjUNf0O01WHU7WKO5TeqMjEj
+kjn8qv8AxvXPiHTT/wBOh/8AQzXX6JNLbfA0TQSvFNHpczJIjYZSA2CD2NJydkNJXPPtZ+EX
+iHSrOS6hktr9IxlkgJEmPUKRz9Ac1wIAr3D4QeKtT1qLUNN1S5e6e1CSQzSHL7WyCCe+CB+d
+eY+N7CPTfG+r20KhY1nLqo6AMA2P1qoyd7MTStdHPY5orV0PQrrXbmSG2aNBEoZ3kPAz0HFF
+Y1cZQpS5Zysy4UKk1eK0MzFKFOelSBMc0FcV1mJHjFNc7UJ71NiopR+6P0pAe46r8OPCSeHI
+L2RV02NBHLc3JmcnZjJABJGScDpU9p4G8B+J9AZ9DjQryiXUMj70cD+IMfpwR3o+JrEfC+FQ
+eGa3DD1HX+lZvwOJGmaymflFwhA9yv8A9YVz68t7mul7HlmlaFcar4lt9EUhZpJzCzDnaBnc
+fwAJr2LVvBXw80Swt7HUmjtJrj5IriSdhIzf3vT8xiuR8ARLJ8YbxmHMT3Tj67iP61D8ZZWm
+8ZLExJSKzQKPTLMTVu7lYSslc6LxZ8PdB0H4fXF3HaA6lbxRg3Ikf5m3KC20tjnJ7Vh/Crwr
+o3iVNW/taz+0G3aIR/vHXGQ2fukegrs/Etw138EVuJG3PJY2zMT3OUzWL8Dj8mu/78P8nqbv
+lYWXMWtK8I/D+y1+fRryeC71aWVilu8jhYlPKovYkLjqSa5P4jeBoPD2q28mkxv9kukZvKLZ
+8tlIyATzjBFUUlK/FxZG5Y63jJ95sV6L8WDtj0xu4E38lpq6kg0aOa+Hnw7stV019c19W+y5
+YQwFyilV6uxHOMg9+xNdC/gfwR4u0q4fw3JDFPCdgmgkYhW7BlY9D6/ka17+MWnwgMSHaG01
+FJHH3gMn9TXF/BeaNPEGq28QZVe2RyC2clWx6f7VK7d5DslocJoME1p450i2mUpNDqcMbr6M
+JACK928e+FLzxXY2cFnc28LQSl289CwYYxivM9ehhtvjTHGsIydUtn3ZPVijHj6mu4+LGrah
+pOl6c+n3k1s8k7KzROVJG3pxTk22rCWiZL4C8B3nhPU7y7urm0lE8QjAgVhgg55zXmvxOkVP
+HWrATFCVjyrJlT+7Wuv+E+vatq2t6lFqOoXF1GlurIsrlgp3dea4/wCKMkg8c6oqhfux9UBP
++rXviiN+bUHtoer+McH4bNkZ/d2/GP8AaSuD8Cog8d6cQighZecf7Bru/GTKnw1dnICiO3yT
+2+dK4XwLtPjjTSpBG2U8HP8AAaUfhY3uSfGm3Z9YsZl6LakN9Nx5rqdDt5rv4JLb28bSzS6b
+KkaJ1ZjuAArB+L0yRalbBiMtZsAvc/Ma6Twzfy6X8Hre/gVWmttPklRX5UldxAOO1D+FB1Zl
+fCzwtfeGLbU9V1qNbMzIqqkjgFEXJLNzgdR+VeWeK9Si1rxZqeownMM0x8tsdVACg/iADXr3
+hXxJZ/EzSb7S9b02JZYdrSIjHa6nOGU9QQR/L1ryLxNoZ8PeI7zS9xdYWBjY9ShAIz74NVD4
+nfcmW2hU0rVr7Rbl57KRAZF2ujrlWHb/AD70VU2/lRUVMJQqS5pxTZUa1SKtFjscUhHNS4pp
+WukyIzUc3+qapiOcCmyJmIjvigD3L4l/8kyt/wDfg/lWb8ERjT9aH/TeP/0E1m+MvHOia74M
+i0qxkna6VoiQ8RUfKOeap/DbxhpHhW11KLU5Jka4lRk2RFuACD0+tYcr5LGl1zDfAUqw/GC5
+BI/fSXUY+u4t/wCy1H8ZIHi8YJMR8ktmm0+pDMDXMLrElh4sOt2Q3NHePOgbjepYnB+oOPxr
+1a/+I3gbVbGG7vrQ3V3AN8dtLalnR/QMRt6j17VTTUr2ErNWLXia1e0+CotpF2yRWVsrKexB
+TIrE+CAwmu/70P8AJ6j8SfEbSNf8CS6eWlGpzxR70EJCBwylgD6cGsj4beLtJ8KjVF1OSVTc
+tGY/LjLZ27s5/MVNnyMd1cxiuPitGf8AqOj/ANH13Pxqmlhi0cxOQSZgQO/CV54dTtR45XV8
+t9kGqC6J2nOzzd2ceuK6T4keLtJ8VLpo0x5X+zmQyeZEU+9tx1+hqmnzIV9Gd1dsdX+Cm+HL
+M2loxx6oo3D/AMdNcj8E7Zm1zVboL8kdske73Zs/+y0nw58dR6LYyaPqsUj2SsWhmRd3l7jy
+pHpnJ49TXVyeN/DekafLF4ctEM0hLBIrcxJu9WyBmoaavErR6nA67cLdfGuORDlRqttH+KFF
+P6g113xq/wCQPpX/AF8t/wCg1xdvHBFrljqVwCXivEuJpAOWw4Zjjua3fiR4w03XbOyg04y+
+bDKXYyRFcArjIJqre8ib6MT4LxumvaoXG3NsnB6/e9KwfihO6eONUSMBSVjywHJ/dr3qf4de
+JdO8Maxf3WqPKFnhVFKIXJIbNZvjPUbTX/FV7qNkWa3mCbS64PCAHj8KaXvsL+6et+LIn1P4
+UOYAWL2kEwx6AoxP5AmvOfhqGufiNaGHLRQQyEkdl27QfzI/Ot/wR8SLTTNDi0rXUlWO2URx
+XKIXUp2VgOcgccZ4Fbo+I3gbS4pZNNAaVuTHa2TRs59yVUfrUapONitHqcp8ZmVvEdgg5ZbT
+J/Fz/hXVaZ/yQ1v+wXN/Jq8s8R61N4q1K61OaIRMMCOMHOyPoBn68/ia77wv8QfDWmeD7HSN
+RMzSRwmOaP7MXU5JyPQ9aqSaihJ6sofBWymOqapf7W+zrCkIfHDMTnA+gH6isP4nyJN49vQp
+B8tI0OPXYD/Wu3vPixoVjYeToljLLLjEaGIRRqff/ACvI7u4nvrue7uX8yedzJI3qT1pwTcu
+Zila1jT8JJpTanMNU8k4jBhE5GzOTnrxnp+tFYpQN94ZorixOXutU5+do3pYlU48vKmNIpME
+1LtpdteochCFx1pcexqXFIRQBCaDT2WkC80ANxSgVIF9qNuOKAGbaCtOIoxmgCPbTtlPAPvS
+0AT2E4tZ8sPkYYP+NdAjK6h0YFT0IrmKfHNJEcxuyH2NS0O50vNY+sMjSRoMFlyTjtnFQG+u
+mG0zPjpwcVD3560JBciwemKkZXVclWA9SK6KwtI4bdH2guwBJPWrO0EdAQaVwscxMdkEUXf7
+7fj0/T+dQgZroLzS0nBeMbZf0asXysEg9RTAWBxHKM/dPDD1BpssXlyshwcHr/WpobWS5crG
+OnUnoK0m0gyqm6XDquCQvB9KAMYL0oxWjNpc8K7hiRfbrVLHPSgCMKKKmC0UAV8c0uKKKoQh
+/nTWJGOaKKAG+9PVRj2oooAUdKCMUUUANPXBpVGRmiigQ7GKMCiigYhUU4J6UUUALsxRsoop
+AbmmT+dAI2HKcZ9RV8DPNFFQyhwXiuamcPO7AEBmJx+NFFNAbGmKBZAgcljmr+2iik9wDGax
+NSgWK7yvAcbsD1oooW4MqAcUUUVZJ//Z</current>
+                </image>
+                <about>
+                    <label>1 of 10</label>
+                </about>
+            </element>
+            <element id="1">
+                <index>2</index>
+                <image>
+                    <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CACWAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDyfFIKk20m2tzIZRTsUYoATI9aWmkUAYNA
+D6O9IPpS0AGKKKdTAbS0tFADaMUuKMUANxS07FGKAG4pcU7FGKAExQKdilAoAbikxT6TFIBu
+KMU6kwKYDcUU7HvRSAWjFGKKYCYFJtp1GaAG7aQpmn0tAEe00uDTxS7c0AR4oxUu2jZQBD3p
+ak2Umw+lADKWl2n/ACKTFABS0mKUUALilxSA07dQAmOaXbSgilHb2oAYQaTFPxRigBmKTrT8
+UYoEMxRTsUUDF20hWn0UxEZFJipaTANICPFFS7KPLFMLkdPFO20BaAAUZpcUhFACg0U3FFAA
+RRtpaKAG7KNlPzSjFAEeyk2GpxjH+NG0UAV8UvPSpilIUoAiGaXNO24pdtADcUYp2KMUANxR
+TsUUAFJUm2k20CI8UozT9lGygBKWjb7UmKBhTlxSUoBpgOwKXYDSDitnSDaNGUkCebn+IdR7
+UgMYx80mw4re1OyhEJkhUCQHlV7j6Vi596AIttN2e1TZoABpiK+00uKn2ik2e9ICEUucVL5d
+J5f+RQAwNS5yPanFPpSFMUDG0uM0u09aXbTENx7UmOlSbaXHegCMDpRUmKKAExSgU7bQRRYB
+KKXFJimIMCk20vNKOtACBBShMnjmlFOR9jqwHKnNAFxdGumXdtVfYnmqs9pNbtiVCueh9a6G
+21S3nUbnEb9w3H603ULi0a2ZHkDE9AhBP1qblWObBdWBViCOhBqbzUl/16c/89E4P4jvU32e
+F/8AV3C59HGKDZTAZCbh6odw/SmI2NC8Ba14ls5LzSVt5bdJTEWeXYdwAPQ/UVzlxC9pPLDK
+AHidkbBzyDg17r8FBt8I34Iwf7Qf/wBFx147rTQyanqKypg/aJfnTg/ePUd6iMrtoprQ0tR+
+H/iDStCbWbqGAWaorlhMC2GIxx+Iqj4c8L6p4qnuIdKjid4FDSCSQJgE4H8q9s8bjd8IZQOf
+9Ft+3+0lcf8AA5dutaz/ANe8f/oRpKb5bj5Vex5xrGl3eharPpt8qLcwY3hG3DlQw5+hFbdh
+4B1/UtAXW7eK3axMbShmmAbauc8fgal+J65+Iurn3i/9FLXqvg0EfBmLr/x5XH83puTSTElq
+eHaHo154i1RNO05Y2uHQuA7hRgcnmunk+Eni5VJW0tnI7LcLn9ab8Ixj4hWn/XvL/wCg12vx
+A8fax4S8bWsNs0cunfZkkmtnQfNl2BIbqDgDHbik5O9kCStdnj+p6TfaNetZ6jayW1wvJSQd
+R6g9CPcVUxmvePi/p9vf+DYdVRQZLaVGR8clH4I/MqfwrwnoMntVRldXE1ZiYoxWrc+HtUs9
+OS/ntGS3YA7sglc9MjqKzSMAmiE4TV4O4SjKOjQzHtRXe2Pg3SZ7Cwspp7wa7qGnPqEBXb5K
+gZKoR1yQDzRRzIOVnCV2nw68I6f4vvtQgv5bmNbeNHTyGAJJJHOQfSuOxXqHwQ/5DGs/9cI/
+/QmpzdohHcvWXwm0GHV57fVNWYNI5+x2izosrR9mbjJPXgCuT+IfgWLwjc2s1nPLNZXW4AS4
+LIwxwSMZBzx9Kr+L7iX/AIWtc3W8+bFqEQRs9ApUD+VegfG7/kXtMOP+Xs8/8ANQm01fqU0r
+M5T4efDmHxTaS6nqc00dkrmOJIiA0hHUknPA6fn6V0cfwg0O71gta6nPLpgRlkWKZDJHKCMD
+OCMYzxjIwK1tHkfSfggs8DFJF06SRWHUM245/WuP+Cdy8PifULNTiKa08xl/2lYAH8mNJuTu
+wstEcn4x0G18PeLbjSrV5Xt4zHhpWBb5lBPIAHevRNX+DmkW8MEtvqk9tCJAbqe6kTakWDnH
+A5zgcnHNcf8AE/8A5KPej3g/9AWvQ/jLIy+DrWMNhJLxA4HcBWOPzA/Km29ASWpnal8IdEuN
+Be60K+nknEZeJzKskc2B0yB39RXk1hpV5qWpW2n20LG4uXCRhhgfU+w6/SvbPg1IG8FXEYJ2
+R3jqAT0yqEj9SfxrE+HFus3jFnYf8e9s7r7EsF/kTSUmr3BpOxoW/wAIvDdlbwQ6pqlw13N8
+qkTLEHb0RSCT+tcF468Ez+Db2F4Z3nsLjIilPDKw6q2O/v3/AArV+L7+b4wDSTSL9nt0EQUZ
+2n72Rzx1H5V23xESPU/hfFfTAlkFvcAjrlsL/wCzmhNqzfUGkQfBV3k8I3xdix/tB+Sf+maV
+x+pfC/xNd315IunW22WZ2R1ugpILEjg12XwXCDwnfeXu2/2g/wB7/rnHXGal8T/FVtfXkcN5
+EEimdUBhToCQO1JX5nYellc9F8cxSWvwuuIXYRyxQQIxznBDID0rkfgyS2tauT5RPkR5aM9f
+mPUV1vjqdrj4W3E8oDvJBA7ehJZCelcf8FWB1rWMRon7iP7uf7xpL4GH2in46treXxrqjSRI
+zbo+T/1zWu88LRqPhMsaDA+yXAH5vXEeNsHxnqgB6MmR6fu1ru/Co/4tag/6dZ/5vTlsgW55
+b8Ko2i+IlqjDDCCXP/fNa3xV0TUdb8eW1rp9nNO8lnGm5EJVfnfknoAPeq/w8ZG+JdlsIyLW
+QMR64r0HxL8RbPwt4lg0u/spTbyxLK11GwPl7mYcrjoMZ4P4U23zaCWxn/Fa5h07wBFphkHm
+TvFEik8kJhifp8o/MV4SyBlI9a9f+K/hLMJ8TW91PKFKrNFJIXVFJwCnoMnp05zXku2rprQU
+tzev/F+oalow06S3iTcFWSVTy4HoO3SufKZUinY/yKdg1NKhTorlpqyHOpKbvJndWPinRorX
+TNWmnuBrGmaW+nx2ghyspwQr7+gGCcj/ACSuFoquRC5hh/CvT/gl/wAhjWf+uEf/AKEa8yAy
+eld/8Kda0zQtU1STU72K1SWKNUMpxuIJp1F7oobmJ4uH/FyL8/8AUQX+a16F8bBnw/pv/X0f
+/QGrzfxLeW1545vL23mSS1e9WRZVPylcjmu2+KviPRtb0awi03UILp47ncyxtkgbSM/rU21Q
++jN6z/0v4FARjJGluMe6gg/yNcb8GYS/jG6lA+WOxYE/V1x/I1q/DHxnpVpokvh/WrmK3VGc
+wyTnEbo3JUk8A5J69Qa2tF1zwH4V1iWx0q5t447iMyz3XnF0BBAVAxzn7zHjpiod1dFb2Z57
+8TV/4uLffWH/ANAWvQPjKM+FLH/r9X/0B6858e39pqfja7vbK4Se2cxbZEOQcKuf5V2XxQ8S
+6LrXh20g03UoLmVLpXZI2yQNrDP6iqtrEXRml8Fsjwjfjv8Ab3/9FpXO/CbUWk8a3cEpXLWj
+7SBjOHWr3ws8S6Lovhu8ttS1K3tZnvWdUkbBK7EGfzBrz3Q9Zl8P+IrbV4F8zyZCXQH76HIY
+fkf5UcrdwvaxvfF5HTxvcF87Xt42T6Yx/MGvQPHX+hfCFLZ/lkMNrDg+oKEj8lNWru78B+Kj
+Z6nqFxaNNAAUW4l8p1HXay5GRntyPzrm/HniG08SmHT7Qs9jA/mNKMgSPggY9gCfrmpWtl2H
+tdmn8Ff+RSvv+wg//ouOvHNY3NqmoKoJP2iXgf7xr1v4cavo/hzQL22v9Qit2a8aRVkPO3Yg
+z+hryrVpxNeX32faI5JpGDL1YFic5q4/EyXsj27xkQvwmkMikgW1vkDj+JK5H4M3AfX9Wj2q
+mbZCqqPRjn+YrW8U+J9Cv/htJptrqlvLdm3hXyVb5sgrkfoa898G6/8A8In4ki1F42ktnQw3
+Cp97YcHI9wQDUxV4MbfvGp8Rg9r441eYkgyLFs/GNcn9DXovhXcnwfjaUkH7DO2T6HeR+lP1
+C8+HviYxXWpXulyyIuFM84icDrggkH8DWN4y8e6Fb6A+h6JLHcGWMQH7OP3UMXQgHoeOABSu
+5JKw9tTjfhUP+K/tP+veX/0GrXxlGfF8f/Xig/8AH3qj4CvLTRPHMFxqFykFvHFIplc4HI4/
+OvTrvXPh7earHqt1fadPeRKFSR2LFQCSMDpnJPbNVJ2lcS1Q/wAXI1t8KbiK5/1iWcSMD/fy
+o/nXgDgqjEDkCvSPiF48tvEVsmlaVvNkHDyzspXzCOgAPOO/PoK89I9qqmmkKT1Oq1jw9pFl
+4ZjvLeU+fhSshfPmk4yMdPXpXIOMKT7VIIwOmcdhnpS7c8dazw9GdKLU5c2pVWcZu6Vj1LSr
+ya0udA0aFY/sEvh57l08scysrEvnGc8Y/E0Vx9j4y1awsLa0jisnFvC9uk0kOZfKb+DdnoP6
+UVXJIV0c2FxSEA9R+lS7aaVroMiPjpgUgUdgBTipFOCUAR7Qeoz+FO2D+6Pyp+2jFIBmwdsU
+mwDoKkoAoAj2AnJH404LUmKKAN2ykiuYV4XzFADA9frVvGB2FcwrlGDIxVh3B5q4mqXSjBZW
++q1PKO5sSBNjM6jbjnPpXL49OlXJrye4GJH+XuAMCn2Fqt1PsJwgGWppWDcpKAOw/KprfDTg
+sMonzMPYV0i2kEYCrEg/Co5bGGVWXYF3DBK8GlcDmXxLIWYAljk0qoAOgq1dWD2sm08qfut6
+1Fsx1pgSSqJbdJMZKfI39P8APtVcIvoK0rSxmdW3LtidcEtx9DStpFygyux/of8AGgDO24FG
+2p3iaNiroVYdjTQoxQBHspNtTbeKXZQBDj14+tFSlaKAsQHimEn0qYgU3bk1QiMLk/SngU/a
+KNv+TQAwimnipDim4zQA0DPUU4LTglPAoAjx7Um2nkUmCe1ADdgNO2HFPAIpSD6UAR7KtWE3
+2W5DNnaRg+1QU4dBSA6VcOoZSCD0pwB965+C5lt+I3IHp1H5VaOp3BHBUe4WpsO5Pq7IIUQ/
+f3ZH0xWdaIsl3ErYKk802R2kfc5LMe9IgKsCMgg5BFNIDpQtOxVO11CKRQJTsfpk9DVzzYsZ
+81Meu6pGVL+2We2ZsfMoyDWGFrYvb6PymiibczDBI6CswLTQmR7aNvNSYpQPSmBHt9qKkxxR
+QBS25/GhVyODRRVkhSkZ5oooAYRzQqY5oooAkxiiiikA005RRRTAfjpSH6UUUhihQRUgQUUU
+ABTFIRiiigBwXJp4Xr7UUUgDtSEcZ9KKKAFCinY/SiigYd6UCiigAxRRRQB//9k=</current>
+                </image>
+                <about>
+                    <label>2 of 10</label>
+                </about>
+            </element>
+            <element id="2">
+                <index>3</index>
+                <image>
+                    <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CACWAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDyvbRtp1GRXQZDNtJtI6VJRQAwA+lGKkwK
+ULQBFiipdlBT6UARUtPKUmKAEooxRigBaXFN5pwoAMUuKUEClBFADQtLjjpThigjj6UAR0Yp
++KMc0AMNJinYoxQIbijFOApcUAMxRT8UUDGYoxUmBRtoER0VJso2EUANHWnijbS7aYBS5FJi
+koAdSEUnNLzQA3bmkKVJRmgCPZRsqQU4AE0AQ7TSYNWCopClAEHQUZqbZ7U0pQA0GinbaMUA
+JijFOxRigBuKUCnYoxQA3HFFOxRQIZ+FOHT0pdlG3FABR70Yo70DFHWnbR0ptOFAC7BikMfF
+TW4RrhBKcIWG4+1dC2l2bx4VMccMrGgDl9lIU9qt3ERt7h4t2dpxmoSaBEO2kK1PijZTAr4N
+KOtTGOk8ukMjzShqf5ZpPLPpmgBN1GetLsNJtOaYCdTRjinBadj/ADmgBmOaQDNSbe1GOKAG
+beKXFPxQF4oAZt56UVJtopAFGBRiimIQrSBKd2p1MQwJUsVtJOxWNGY98Cm1q6ReRQb45Dt3
+HIY9KTGZ8thcwrukhYD1xmmLNNGu1ZXC+gauvBVhkEEHuKwL23t3u38maNfVTkDP16UkwKIu
+CRtmUSr2z94fQ0+Kxa8njissyyyOESI8OWJwAOxp5splGRHuUd0O4fpV7w0m3xfofGCNQg/9
+GCh7AivqfhzWdEijl1PTp7RJG2o0gADH0qLS9G1LWpZItMspbqSNdzrGMlR0zXsvxpKDRtK8
+xNym5bgHB+72rE+CscaeINVMbllNsnBGCPmqOb3blcutjy+/sbvSryS0v7d7e4jwWjfqMjI/
+Q1o3fhbXtP09r+80q5htFCkzOoCgEgD+YrX+KylvH2qnH8Mf/ota9V+IYz8JZx6w2/8A6GlP
+megW3PBbCxu9UvEs7G3e4uXBKxoOTgZP8qm1PR9R0WVIdTspbWSRd6LIMEjOM10XwrUj4jad
+/uTf+i2re+N4z4i03/r0P/oZp83vWFbS5xln4P8AEOoWkd3aaPdTW8o3JIq8MPaquo+HNZ0i
+PzNQ0q7to848ySIhc+m7pXufhe/l0r4NW+oQKjTW2nySor52ll3EZx2pfAnjKPx7pd9aajYw
+pcQALPEPmjlRs4IB+hBHP61HOyuVHzxtpcc1reJdJXRPE2o6YmfLt5iqZ67Dyv6EVRtbS4vZ
+vJtoJJpcE7Y1ycetaNpK7Is72K+KMVLJE8UjRyoySKcMrggg+hBrU8O6G2vasbQ3AtoIoXuL
+icqW8uNBknHft+dF1a4WdzHx7Vf0XSLnXdZttLtGiFxcFghlJC8KWOSAewNdJD4Hhu9c0+1t
+dWEmn6hZyXdveGAg4QHKsueCCK1fCug22l+NPCOo2Oom9tdRFwUdoTGVZI2DcEnjJqXJdClF
+nnbQyIgdkYISVD4OCR1we9FdnZ6Rfazofhqxl1VlsrzUJ4YofJH7hgSS2cgtnniijnXUOV9D
+or34IzRac0lprAmvFXIjeHarn0BycV5bbWU95fQ2UERa5mkESR9CWJxivZ/gleXE2hanazTP
+JHb3CmMO2doZeQPbIz+Ncr4EtEn+MEuVBW3muZAD2wSB/OkpNXuDS0sax+CE403eNZQ3+3Pl
++T+73em7Oce+PwrG1n4XTaL4PfXLjUT58cSPJaG3xtZiAV3bu2euO1X/AIxazfJ4ntLS2u5o
+EtbdZl8qQr+8LH5uO+AK7PxletqXwfkvn+/cWtvK2PVmQn+dLmloOyPLfA/gT/hM1vj/AGj9
+k+ylB/qd+7dn/aGOldHpXwWurkzvqGpm3RZWSFUhyzqCQHPPGeuOetXvgd9zXT/tw/yeucTV
+r1vjKLlruYN/an2faHOPL37NmPTFNuV3YElZGJ4v8I3nhDVFtJpxPBMu+GZRjcM4II7Ef1q5
+4L8A3/jAyTrOtpYRNsadk3Fm9FHGffmvRviwF26WzAHAm6j/AHK04FfQPhIHsj5M4sfMVgMF
+ZJOc8d8tRzvlQcupxms/Bu8sbF7nSdTN3NGu7yHj2M/+6QTz7Vwvhy6nbxboaSMWH9oQAhxk
+j94K9F+DWoXP2/VdOmvXuIzGs6hmZtrZIbr65H5Vzep6bBp/xijhR9o/teCQIF6b2V8f+PUJ
+vVMGuqPQPixpF9q+l6dHY2FxeMk7M6wDlRt61k/Cfw7qeja3qU19p93axyW6qpnQLkhug9a6
+nx94tuvCVjZ3FpbwzNPKUIlBwABnsRVDwD48vvFup3trd2lvCsESyK0Wckk45yTUXfKVpc84
++J6s3jfVFMSyKFjwVI3D92v+ea9R8axJL8MpI3HyGK3yP+BJXlXxR8keOdULRuzbY+Q2B/q1
+9q9Y8XjPw3Yf9M7f/wBCSm/siXU878AWFvb+PtNeIMCFlHXP8Bqz8bEY67pz4JX7KRn33Gjw
+MMeOdO/3Zf8A0A1o/F1UbUIBJjb9jbr67jin9sX2TX0vj4Et2H9lzfyasD4H2MwuNX1Aowt2
+SOFHI4ZgSTj6cfnXXeEbu3sPhNZXd3F5ttBZPJKgUNuUFiRg8Gp7LWLLxt4ZuYfDOpyabKny
+MVhAeEnoCvYHnkH6Hipvo0VY8V8e3Ed5481maIhk8/YCD3VQp/UGoPDGvr4evbiSW3aaKdQp
+2EblIPGM/U1S1PTbnSdTubC8XFxBIVfvn3z6Hr+NVcHmrqUY1afs5bMiM3CXMty5rOonWNXn
+vvK8oSYAXqcAADPvxWp4LvrSx1m8hvrhLeDUNPmszO4+WNnAwT7cY/GsAA0uB3qo01GChHZA
+5Ny5meh6fqml6Xq3h/TW1O2mj0zTLqKa6jbMTSyAnapPXt+dQeGtY021/wCEB86+gj+wm9+0
+7mx5W7O3PpnNcGAOmBS4WlyBzHb6Dq2n21n4RWa9hja01S4mnBOPLRuhPoDRWJc6XZx+CNL1
+OOMi6uLuaKR9xIKr0GOgopciY+ax6B8ERjT9a/67x/8AoJrD+H7BPi/fZ6ubpR9d+f6Gtj4M
+3VvbWOsie4iiLTRkb3C5+U+tcRYaymg/EX+1mJMEV/L5m3n92zMCR68HNFruQX0Rq/GFCvjY
+sRw1nGR+bf4V22vRNH8DIY2zkWFtnP1Sr/ivw54Z8WQWut3upiK2gjyZ4ZVCyR5zgk/j055N
+QeM9V07UPhdcSWc0SpLBC0cO8blXcuBjtx2qb3sh23MH4HjCa7/vQ/yeuLI/4ushx/zHR/6P
+rsvgzc29qut+fPFFuaHG9wueH9a44uh+J6S718v+2w2/PGPO659Kv7TJ6I734y3ZtYtJwgYP
+5wPP+5W1rEzT/Bnzoep0yFhjnGAuf61zXxmube6j0YQTxS4abOxw2OE9KufDbxHpuq+Fm8L6
+pKiTRI0KpI20TQtnofUZxj2FRb3Uyr6tGF8FUY+JtTk5wtoFP1Lj/A1U8RyCT43xFcYGpWi5
+HqBGD+or0fStI8O/DfT7ydLqR2nIZvNcNI+M7VUAD1P5815dBbtd+NbDVpZcPNqcc8gbouZA
+evoP6U07tsT0SR2vxpONH0r/AK+W/wDQaxPgqc+INV4/5dk/9CrY+L93Z3GlaYEljnK3DHak
+gP8AD3xWP8IbuOHXtTa4mihjNsoUMwUZ3ds0L+GH2jD+KDxJ441QlTI+2Pg8Afu1/OvTvHG6
+X4VStHzmC3YY9N6V5d8Sdlz471KSKRZEYR4ZCCD8i16X4J8Q6T4m8IQ6LfyxC6igFtPbyNtL
+qBgMvrkAHjoaJaJMFu0cJ8PZ5X+ImnwbiyxxyBu+TsOT+daHxnY/29p6bjt+yEkdvvmu60jw
+f4a8F3MuqrO0cmwr513OMIp5OOnp9a8o8fa7B4m16W+smLWsCi3jYjG4DJ3fiSf0pxfNK6B6
+I9F0v/khpH/ULm/k1ct8FRINf1Xb/qzapv8A97dx/wCzV2XhE6de/DKy0y8vYo1ntGikHmqr
+AMSD16cGpbOTwf8AD/S5vs93CvmfM/70STTEdBgf/qGai+jRXmeY/FJU/wCE+vCvUxRbvrsH
+9MVkeGdCi1y9njnmaOOFQxCY3Nknpnp0qLXNUl1zW7zU5l2tcSbgnXavRR+AAqlDNPbTCa2n
+lhkxjdGxBx6VVWE5UnGDs+5MJRU7yV0Tavpw0vVZ7JZPMWMjDeoIB5rV8FW9tJq1/c3VtFcr
+YadPdJDKMo7qBjI7jmsJtzszuzM7HLMxySfetHQNXbQtVN2LZbqGSF4J4GbaJI3HIyOnarjG
+SglJ3Ym05XWx2enWumajrXhKd9IsY0vNPuZbiBIQEd1Dc4PuOPSm6VYafr8ngu6uNMs4PtD3
+a3EVvHtSRYgSoI79O+c81ix+M/J1LSLqDSY4YtNt5beOBZiQVcEDkjOQD+NVNP8AFNxpsGgL
+DbIW0iWaQFn4lEnVTxxxkVPLId0aOv6guq+AdIuhZ29oWv7jMVsm1O3IGeOMfjRWdq+vw6lp
+VtptppMen21vPJMipKXzv6g5HrmirirIl7nNtGjHJXJo2j0FPC5pwWtSCFYI852jNOEKA5Cg
+H1qXFBFKwETRK3JA470hQEYIBFS49KUD6UARLEE+6AKv6YYxOUlAIcYBPrVfFFDQHSR28UZy
+iAU9gGGGGRWJBqdxCAuQ6joG/wAanOsPjiFAfXJqeVlXItXgjjeMooVjnOO4rNKK33lBqzLI
+88m+Rst0/CtSy0mN4llnBO7kL2Ap7CMYYVcAAVJKiC0RWUFpDuPHYcD+tb7abaspBhA+lUb/
+AExx+9iJZVGCmOgHpS0AxVt4wchAKuWwUOYzwsg2n29D+dRhD9KeEJYBQS3oKdgIHtkDkMg3
+A4NOWJVI2qB+FaUun3MxWURncy/OCQDmq8lvLDgSRsvpxSAr4o2VJtBNO2+1MCApS49am2dq
+NvFAEQWjbUoUZzS7KAIQvPaiptvrRSAqqv507FP20YqxEZHtTT6YxUhFIF5oAaFzzT9uKcFp
+SOKAI9tIVp5oC80ANCUuw1IB7UZoAZtNdDYTrNbIAfmUbSKwVqWKR4nDxsVI9KTVxo6MD8qc
+B7VlR6rIBhkRvccU2fUZZk2gBFPp1qbMZTmCieQJjbuOPpmtPS4EW383HzsSM+3pWTitDT7s
+W+Y5D+7Y5B9DTa0EbAXnoKR0V1KsAQexGaehV1BRlI9jSOyxjc5Cj1NSM569tfs9yVH3SMjP
+pUIWrl5MLi4Lr90DAPrVfbVCGYoC1JjNLj2oAi280oWpAPalAoAixgUU/FFAFTBppBqY0zOa
+ski2E9KkC4FPAH407jFAEeKQ1IaZnmkAgFPA4pwUU/aKAIulGATinEDFKqZ5oGIqU/y6cFp3
+NAEezHagKTTyecU8JQBGqHFOxUmKQikA0EjkEj6Uhyx5JP1NPC/jS7OKAGBfypcU/FAWgYzH
+tS4qTb9KTbQAwA9adinBcUu3mkBHtoqTbzzRTApbc0m0CiiqJHbaQqOTRRQAxvrSonzEntxR
+RQIlC46UFcCiigY3bUgUBRRRSAkGMU3j0oooAVV5qRVHQCiigBOv1pu35sUUUDJAvFB9KKKB
+CU8L3oooGB64oxRRQAvWjHNFFIBBRRRTBH//2Q==</current>
+                </image>
+                <about>
+                    <label>3 of 10</label>
+                </about>
+            </element>
+            <element id="3">
+                <index>4</index>
+                <image>
+                    <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CACWAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDy2lFO2Gl2+1dBiApwpMUuKYBS4FNNGSKA
+FwKaV9qXJpaAGbKTYalooAi2Gl21LgU7aP8A9VAFfBoqfZ9Kbs9qAI8nFAanlKQLQAZpMU7b
+RigBuKMe1PxzRj2oAbijFPxRigBuKMU7FGKAGgUU8CikAUmKKKoByr3pdmaQZpwpAIY6aY+e
+lbOm6dDdQGSR2yDjA4x9aS/00WsfmxvuTOCD1FAGPs46Um2p/wABSYFAiArTeRVjaD6UFPTF
+AEINKDT/ACz2FHl0DGhj60u6jYaNn1oACc0hwaXaaMc0wExRinAU7FAEeKNv+TT9v5UuKAGA
+UuKdilxSAYFpcU7FKBQA3bmin4ooAj2c0uynilFUIYEqQW8rLlY2K+oHFOjKiRS3Kg8j1FdX
+DLHNGGjIK+3akwRyUUstuxaNyp9qmfULmTiVhIvdWAwa3dStIZrdnO1ZB0YnH4GsRrKYDIjL
+L6r8w/SgCLy4Zv8AVt5b/wBxzwfof8aE0+9fJjtLhwDglIyw/MUhjxxjFe5fBPP/AAiF8Cc4
+1B8Z/wCucdTJ2VxxVzwggoSGyCOCDxipntLuOLzZLW4SPGd7RsBj64q9rcEUup6iUk2SfaJc
+q/Q/Meh/xr3HxwP+LQSj/p1t+n+8lJytYaVz5+hgnuCRBDLKRyfLQtj8qSRHhkMcsbxuOquC
+pH4GvUfgaCNa1kf9MIv/AEI1zHxPBPxG1f6xf+ikpqXvWFbS5zaWd1JEJUtJ2jxnesTFcfXF
+RxwyTuEhjeRzztRSx/IV774M/wCSMRZ/58rj+b15n8Isj4hWnJ5t5f8A0Gkpbj5TkpNPvI1L
+PZ3KqOpMTAfyqttz719F+JfiNZ+FvFVtpF/ZyfZ5olka7Vx+73Mw5XHQYyTn8K5j4w+FrKOw
+i8QWcKRTCUR3PljAkDdGPuCMZ75oU77g4nje2lxTgKXadobBwehI61ZIzFGKeRiultfBOo3W
+iJqK3FmsksD3UNk0mJ5Il6uFxjH40m0gVzmMVam027t9OtNQmhKWt2XEEm4HeUOG46jB9a6L
+TfAd/qdnYzxX2no9/A81tBJKRJJtzkAY68fStrSlu5NC8AJZR2j3LXN8I1u1LRE7/wCIDmk5
+dikjzrbS7fWus0/wXfa0sV4b3TbVbu8kto1kYpmVSflUAdDzjFQaX4Mv9Sa5D3VnZ+Td/YVN
+xIQJZ+f3a4Byf8RRzIVmc2Foq7Hpt3Lqy6WIsXjT/ZxGTjD7tuPzop3SCzOtf4R+Il1ldPEl
+ntaJpUuSzeWcEArwuQ3zDqPWuW13Qrrw9rcuk3ckLzxbctGSV+YAjkgHvXqPwl8W6vq+sajp
++q3sl3mL7RE0mMoQwDAe3zDjtiuP+J3/ACUa9+sH/oC1Kk72Y2la6JdQ+E3iSxNqqm0uXuZR
+Eqwu3y8ElmJUAAAfyqbVPhT4j0XTJL+K5t7jylLyx27MGAAySMgZxXo3xT1q+0bwlG2n3D28
+1xcLEZYzhlXBJwex4FL8L9Vvdb8GudSuWupop3h8yTlmXCkZPf7xFTzytcfKr2Pn8y3FyyIW
+klZiAq8nJPQAV6Bp/wAH/ElxaLPLc2dnIwyIndiw+u0YH61a+H+jWl142t5DAn+iRvOOP4hh
+QfzbP4Vf+J3ivXtM8UQQaVfG2gtYllZAwAkckkhs9RjHH1qnJ3shJK12efa/pWseGtQ+xarE
+u8jcjkB1kX1U/wCTXq/wWcSeEr5ggT/iYPwucf6tKd8U7OLWPAlrqgCq8Lxyqx7K4AI/Mr+V
+J8Fo/L8JXy7lb/iYPyvT/Vx1MneJSVpHkWsadNJqeoFIrkE3EmA0DYPzHoRXtvjJSPhPIvll
+iLaAFCPdKx7z4y21nc3EJ0aVvJkZCRP1wSP7tbvxBnW8+Gd5cHKLNFDJgckZdT+NJttq4JKz
+ON+C6out6xtV0P2ePKv2+Y96yfiBpcVz451WVnZSTHwB/wBM1rW+CzKdZ1cLJI4EEf3x0+Y+
+9V/G4/4rPVP96P8A9FrT+2xfZO08KReV8IkiB3Ys7gD83rzH4TDHxCtP+uEv/oNeqeFf+SWx
+/wDXrP8AzevO/h5EsfxKsyg+9ayMR77aS2Y3uiL40IZPGcKKCzNYxqAOSTveu9+JpNt8MGgm
+P71jBGPdgwJ/9BNbGpz+EY/F9qup/Y11wxr9nNwpzt3HbtJ+UHOcd64L4v2viBpoLi5khk0V
+XxCsKkFHI6yZ6nrg9Pp3Fq0gelzyd1JQgda7XWPFOk3/AIWWwt7dhMVRViMeBCRjnPT1HHrX
+H4pf880VsNCrKMpfZd0FOrKCaXUjKkoQK9V01onOgeJ/OgGnadoT2tzmVdyyhWXZt65JPHFe
+X/h+dJ5a5zgZrWUbkJ2PS/DksSan8PS8sYEdjdh8sPlJDYz6VB4bljS1+HYaRF8u8vS+WA2g
+scZ9K898tfTitLw9pMGseI9P0yZ3jiuZdjMmNwGCeM/SpcCuY63TpIhp3hYGSPKeJZHb5hwN
+3U+1aenyS31tqNrpqaZLd23iWa4kN4FYQxMTiZcsM4x2rzK5tkhu54l5WORkBPUgEio/KQ4y
+KOQXMad5cXN14tmubS6jN3JflobiMeWpff8AKwyTgE4PJNFZ2wFcEcUU3EVzufg2hPja4I6C
+xfP/AH2lZ3xOGfiNfHPeH/0Ba9M8EeDbXwZq9xFNqK3V/dxExKqbdsKEZJGT1LL+Veb/ABMH
+/FxL4+8P/oC1Kd5topqyO8+Mwz4Usf8Ar9X/ANAek+C3/IoX/X/j/f8A9FpT/jJ/yKtj/wBf
+q/8AoD034MD/AIpK/wD+v9//AEWlT9gf2jF+FN9HceL72MKyuLNuD7SL/jWB8XXc+NrpCAFE
+MZHvlf8A61Z/gzXI/DnjS2v7g7bZmaCc/wB1G7/gcH8DXrHi34eWnjLVLTVF1DyU8tUl2KHE
+qA5BU54PJ557VT92V2LdFfxkfL+DCo/LfZbRfx3R/wCFQfBX/kUr7/sIP/6LjpvxRvYbjTbb
+w/aSoHDrJMo5CKo+VT9Tz+FWPg9bva+F7+N8Z+3ueD/sJUfYH9o8W1lsanqH/XxL/wChGvdP
+GIVvhM4LBR9mt+Tzj5krxLWRFHqOobV3yfaJOW6D5j0Fe1+NQW+Eko7m2t//AEJKue6Jj1OV
++DDRf23q6x7ifs8eWbjPzHtWR49uZbfx1rTE/u1EWFPTJjXH9ag+GOtW+heLx9skWK3vITAZ
+GOFVsgqSew4x+Nel+K/hza+KdRF8t/JaOygShEDh8DAPUYOOKG1Geo1rHQPCcrP8JI5TgN9j
+nPHTq9ebfC1mk+IVq7kljby8/wDAa9M8ST6d4O8AnSY59rNbm1t1Yje5YYLY/Ek15r8LkZPi
+FbIwwVhlB49qlfC2N7om+My58XxHuLFMH0+d69E8YZvPhTcS3PMjWkUrE9d+VP8AOn+I/h7Z
+eJ/EUOp311KIY4liNsigBwGJ5b0Oe351i/FTxLZxaL/YFpLG9zOy+akZyIo1IODjoSQOPShO
+9kg2ueLN8qlj2rotQ8I3WnaMNQkuI3KgGSIDG0HA4PfrWGyggg1dn1fU7qxSynu2e3TGFwAT
+jpk9TRWjWco+zaSvr6BTdNJ8616Gc3AJ9K9C07QPD/8AxKdMutOklvLvSH1Brrz2UbiCVXaO
+MADr7D3rgSuQRXa6d4u0mCHTZ7uxvX1K0099P3xsvllCCFbB5J5x+J61pO/QiJY8O6HoFzb+
+FYLvTHmn1mK4Ek4uGXYUJwwXoTxj/GpPCFjpOmSeFbm4snn1DUrybZcCUr5AjJUDb0Oe9ZOk
++KbSwl8KPJbzt/Y6zibaF+ffnG3n3qXQ/FWlWVpow1KyvZbrSLmWS3aFlCMkhyd2ecgngVLT
+K0MK2t47vxhBazruin1ERyLkjKtJg8/Q11l1YeF7Wz1S5GhSt/Zeqiz2fbGxOrHGT6Y5wB6D
+JPNcja3qQeIrbUmRzFFeLcFQBuKh92PTNad34itriw1uBYJw1/qi3sZIGFUEnB56/SnJMSsa
+17oWi6FfeKb24snvLPTJoYbe085kyZACcsOeAeKKr3HirTNS1TxAmoWl6dK1Z4pB5O3zYnjA
+x1OMHFFLXqPQ5Fry9e5Ny99dNcsu0ymZi5HpuznFRSNLM5eWWSRzjLuxJP4mnYo71vZGd2LN
+dXc6BJ7u4mQHIWSUsAfxNJDc3dupW3u7iFSclY5WUE+uAfpSYz1FOC+1FkK5FtyMEcd66vT7
+u6iskW0v7uGEj/Vwzsq+4wDXM4FWLe6ltWyhGD1U9DSauNM6ALtyeSTySTkmkJlCMsdzPErH
+JEchUZ9eO9UE1hCPnhYH2NRXGqNKhSJCgbgknJqeUdzKYFi247iTyfWrH2u6ePypLy5ePgFG
+lYrj6ZxS29q1xKIkxk9T6CtdNGt1UbmdjVOwlcxY41nlWNh8pPzH0HerKazqtuDHaatqFtDn
+5Y4bp1VR9AavtpKor+Q5DMu0bu1Y8kEkMhSRSrClZMLiStNczGa5mlmlPWSVyzH8TViRpFMd
+1DJJFIRtZ42KnPfketQhDirFujTLJCATuGRx0I/yadgI/tl8QQ2oXhB6gzv/AI1CqADp3596
+nNvNHy8TqPdTTdtKyAi20balC0u360wIcc80u3NS7Dmgp7UARbaNpxU23jFGykBEF9qUDmpN
+n4UbRjNADAtFSbfeigZVNJjNPIpQv+cVZI0LS7fSpAvNIRigCPbSbTUnWlA9aAGbeKXbUnSj
+NAFrSpBFd4Y43jAre5JzXMjtWhb6lJEoWRfMA/A1LQ0zWH4VQ1aNfJjfjcGx+GKedVjA4ibP
+uaz7q5e6cF+AOijtSSGRQQie4jiPG4810EcKRpsRQF6cVz8LNFKrr1U5roreZLhAyEe49KGJ
+DwvHSs3ULBDE00QAYckDuK1cetVr2ZYbZwT8zKQF70kM50LTsdaeF9qXFUIj20u2pAtGPagC
+PbRtqXbQR0oAixRj6U/FLtoAj20VJiigCiqnOT0qQCngAUYqiRlNp5pVANMBqinbfanhBQVF
+IYwgUgTNO25NPVMUAII6XZipBxS5oAiwQKUKSakA3HinhcUARhPanKShypIPqDTsc0mM0hjz
+d3AXiZ8fWojuc7mYknuaeF9qULigBu2jAzTiPalC0AMAox2xUhXHajaaAGge1BGafjijafSk
+BHtoxUu3PfrTWGBimBERRSkZooAg2/hSFcVLtIFMIOf5VRBEVJqVY8DFKE9Kfj0oAbtpCOac
+Qee1NGc4oAFQZqULj6U5VxTgvakMYQKTaCeKkK0qpzQMaqex/CnbcCpAKQigCIj0oVakC9+t
+PC5oAjxj3pDye9SEUgGaAGhc07GBUip7Uh6+lAEeMmlC809Vz9afsx9aQEWOKMVKVOelMYYH
+NADD0phB+tSEU0imBFiinYooAhJNJwOKKKokUCl5oooAQnnFPjTkkmiigEShRSkcZoopDDbz
+TwB3oopAKRzTWHPP0oooAeq8Yp23jiiigYzbn8KljjFFFACtxxTAuec0UUASKgHalI4oopAN
+bgZNQk5NFFMBvfFNIoooEAGaKKKYz//Z</current>
+                </image>
+                <about>
+                    <label>4 of 10</label>
+                </about>
+            </element>
+            <element id="4">
+                <index>5</index>
+                <image>
+                    <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CACWAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDzfbxRspQamgjM0yRggFjjmukxK5j46Umy
+t9tDYJ8kwLehXArJkjaJ2jdcMpwRQBWx1oIqYgUm0UxEBBFAJqby/ammOkMYDzTgxpdho2UA
+G71H6UuRTdvejaRQAcc/pRgZopQP5UxCY4oI5p+KNtADKMGnhaXFAxoFJjmngUuKQDMUuKdi
+lxQAwLTgtOxS4oAZjNFSYzRQBHtpQGU5GQR3FbWipA3mb1Uy9sjtWpLawTrh4lb3xz+dFxHP
+prF0ibTsb3I5qF5o7py8uY5T1ccg/Uf4VYvNOkgnYRozR9QcZxVPy+cEYNMBssEkQ3HBQ9HU
+5B/Gowc9CDW14ZBHivRozykl9ArqRkMC44I716l8Y9OsYNI0zyYILYtcMC0cQGfl6HFS5Wdh
+pXVzxTdjrigNnvXqPwc02GXXtUS7t4Z0FspXeodfvdq5r4owRQeO9TSCNI0VY8KihQP3a9hR
+za2C2lzlAwPcUuR34r3rx9p1lD8Kp5obO3jl8q3O9IgrcumecV5l8MIY5/iFp8U8SSxskuUd
+dwPyHtSUrq47a2OTG0jg0h2+or0n40WsFpr+nJbQRwqbUkiNAoJ3H0rufCCaVZfCyx1W90+C
+YQWbTSkQKzsF3E9ep4oc9Lhy62PnsAHpzRivoWzsvBfxI0SaSzsYY2U7GZIVingbHHI/+uDX
+hGqadLpOrXenTkGW2laJiOhwcZ+h604yuJqxSA5pcd6d9TRjiqENxRirum6ZeaxqEVhYQGa5
+lztQEDoMkkngDHetF/CGuJrSaQbEm9kiM0aCRSHQDOVbOD07GldBqY1vbT3c6QW0Es0z52xx
+IWY8Z4A5pm3nmu88HaBqehfEXw6dQthEtz5rxFZFcMBE+eVJ5FZA0y41HRNHt7TRI0ubq7mj
+jvRON1yQfulSflx6n/Glzajsc1tpdtbWpeFtZ0i3t57yyKJcSGGPa6ufM/ukAkg+xpNY8M6t
+oCRPqNr5SSkqrLIrgMOqnaTg+xp3QWMfbS4Ga19O8N6rq2n3N9Z2wa2t8h5HkVASBnAyeTjn
+ArQm0a81WPQ7Ww0JLeeayMisk4Y3QHJc5PB4PHX9KV0FjmQKK6lPh94mkeNF00EyR+Yh85MN
+7A7sFuOnWijmQWZBpfgHxRqck5tNPKi3laJpHkVF3qcEKSecEdRxVLU11vQr17DUY3guFGcO
+oOR6g9CPevR4viFrP/CzRpUZgXSftxtPI8oA43bd+7rnPPpV34uWFtcS6VPKmX2yruBwcDaf
+6n86lSd7MdlbQ8o0fSNZ8Q37RaXbS3M4GXZSAFHux4FbOr+DvFWh2TXWoaeJLZB87qyy7B74
+5A969T8MW8Pg/wCF7ahBAHna3a7bPWRiMoD7Y2iq3w28Xar4nOpWOuxxvJGqujCLaGRsgqR0
+OOPzoc3uth8p5F4cmik8WaGPICsdQg5Rj/z0HY16l8agraPpQaRU/wBJbBbp901wJ0RtH+KV
+rZxriCDVovLyeiGRSv6EV7Z4t13RdCtLeXWrX7RFJIVjHlLJg4/2jxSk/eTQLY83+CqFPEGq
+/OjD7MuCrA/xVgfFFYW8c6oGYo4WPk8qf3a/lXrnhLxP4c129uYNFs/ImijDSHyEjypOByp5
+ryb4oM6+ONU/0lVG2P5GBP8AyzX2xRF3kD0R6f45g8/4XSQ7sborcZ/4Glec/DnS2s/iDpsn
+mKw2S9B/sNXpnjD/AJJu3/XO36f7yVwngb/ketO/3Zf/AEA0o/Cxvcb8bVz4g07/AK9D/wCh
+muq0of8AFiWH/ULm/k1Yvxgt0n1G13feS0ZlPp8xrqfCNvaXfwmsra/k8u0lsnSZywTahLZO
+T0470P4UC3ZxfwOWQaprZGfK8mHd/vZbH9a5P4ibH+IOslMY81QceoRc/rXtNnpdt4Z8LTt4
+MsLe9lk+dc3OfNPTJfnOPTI/Cvnu+lurnULme9L/AGqSVmm3DB3k85HbntVQ1k2TLRWNbwdN
+pEGpznVvJGYwIWmGUB/i68A9P1qhrrWEut3L6Yqra5G3aMLnHOB6ZzVDA7gU4AelQsOlWdW7
+1VrdCnUvTULHUfD5TJrWqWyDNzc6RcxWwHVpCAQB74BrqtFhls73wjY3UbRX0GjXhljcYdFb
+OwEdRxnivMELxyrJG7xyIcq6EgqfUEdKlN3dPdNdNd3DXLDBmMjFyDxyc56Vo43ZKdj0TwmC
+D8NODkHUM/k1Q+GgfsHgfAPGs3VcBHPcReT5dzMnkZ8oLIR5eeu30z7VpPp11beGtO1db+TZ
+LcyxxQqSDEy9WBz1PtScR8x1umyRw6Vp0lwwES+MyzFjwowf61D4yW5ttEv7d9GFhby63JIH
+luHeSeTa2ZFUjGwjHIOM1wrNK8RhaaRoy5k2FyRvP8WPX3qSe4uroobq6nuDGNqebIX2j0Ge
+lNQ1FzHUeEbKbXtKm0C7sZm0xpZLiLUIwQLSZY+Sx6FSABg+vFdBomRqPgsjtoVx04/havN0
+nuYoJIIrqeOCX/WRJIQr/UDg0qT3KNGyXM6mJSkZEhG1T1A9B7UONwTO98MAi0+HGD0vL3+d
+FcCk1xGIglxMohJMWJCNhPXHp+FFS4XGpG3kj4roc/8AMdA/8jV6F8X7mO3i0oSMRu84A4z2
+SuAI/wCLqR/9h0f+j67T42jdFoo9Wm/klN/EhLZnSa5MF+D5lQbh/Z0JA9eFrhvgsWbxTqR7
+fYxn67xXXeDJoPF/wuOkNMBPFbtZS9yhAwjY+m0/gad8PvBNx4MXUr7Vbm3MkqhQY2O1I1yS
+SSB1z+lReyaK6pnC+JiD8cYtv/QRs/zxHXVfGk40jSv+vlv/AEGuJkM+p/Eq01bbmK41aJ05
+5CeYoXP4AV3PxljV9J0vc4QC4Yk4z/D2qvtIXRmF8FiD4g1X/r2T/wBCrC+KESf8JvqjySBQ
+VjwByx/drW/8GfLHiDVRGhwLZPmY8n5q534oIW8faoMdVi/9FrVL42J/Cep+OJWi+F0skfUR
+W5B6/wAaVwPgG7Mnj/TIWQB/LkLEHofLJxXomlLbeNPhpb2wmA861SGQjkpKmM5H+8ucelZH
+gz4b3mgeJDrGo31vMyIyxJCD1bgkk47Z496zTSi0ymtTB+Ms7prNjEuAr2hye/3jXR6WM/At
+h1H9lTD9Gri/ixfx3/ioLC4dLSEQOVPR8liP1H5Gu/8ADNhLqnwit7CFkWW5sZIlZycAtuAJ
+xTekUC3Zx/wTupY9T1WwDH7O0KThM8KwOCR6ZBH5CsH4m2sdv49vvKUASrHIQPUqM/qM/jXq
+PgfwUngu3vLq8vI5ridR5kgG1I0XJwM/XJJ9BXkPi/Vo9d8V6hqEJzA7hIj6qoCg/jjP41Ud
+ZtoUtImZpOjXes3Tw2gTKAM7ucKoPT1qG7sp9Pu5bW4TbNGcMO3r/Wrek6vd6JdPNaCNvMUK
+6SA4OOnSoL27n1C8ku7kgyyHJwMAdgKmPtvbO9uS2ne437P2at8Re8L6Pa6xqk6X0skdnaWk
+l3OYgN5VB0XPGeRW9beEdGvdW0CK3u777HqlpNcM0m0OhQEgcDHbBrI8J6hZ6bq1yuoSNFZ3
+tlLZySohYx7wMNgcnkV0Fn4g0Kw1bw15N5JJa6dZXFvLK0DKSzBgDj0JP+NXJu5KSsU7bwlp
+erTeGW024vEttVaZJjcBd6eVyxGOOQD69qNfGmf8IBo/9kPcNZ/b7jZ9pxvHqDjg+v407Q/E
+1hpdt4SErux0+a6+1qqHKpLwCPXrnj0qnrN1oyeF7DR9KvpLw293NK8jwmPIboRn8vwpK9x9
+A0PRNGuPD8eq6tNfKG1NbEJbBeQygg89ME89enSrWs+FNKs9N1j7Bc3st9pd3Fby+cqiOTzD
+gbQOeM9fbpzxn2WqWcHhGHT5JCLlNaS7K7CcRhQCc9OvatLVfEVhPD4r+zTFpL6+t7i1BjI3
+hGyc5HH40PmuGg3XPC2l2Gn6vHZXV3JqWjLCbvzQvlyb+uzHIwT3qzd+DtHXxdHoFtd37PGh
+uLp2RTsjEYbauOrE+2OR1pviDXtFubDXrvT7mWS+1xYFe2aEqLbZgtljw2cdqdJ4o09PiVNr
+Mc039nzwC3eZEIdAYgu4Drwwo94NDF8RaLbadDpt7Yi7S1v4mdYrxQJY2VsMpx+Boo8QXdrO
+tjBbapeao0ER826uWkw7k5+VXJ2gAAe9FXHYl7mEbu6N+L7z3F2JvP8AO4zvznd9c1a1LXNX
+1oRf2pfzXYiz5fmY+XOM9B7Cqe0U7bWlkTdmn4cvLrTr957G7ltZyuN0bY3D0I6H8a6S+1zW
+dUh8jUNTmnh7xhVRT9QoGfxrikZo3DoSrDkEVqwauu3bOhB/vL0/KocdbjTNJWaOSOWJykkb
+B0YfwsDkH86peJNU1TUFgS/1Ca5iViVSTGFPr+RpzanagZy5PptrKu7hryUMRtVeAKEtbhcX
+TdW1HR5pJtMvZbV5F2u0eMkDnHNJeXtzqN093eztPcPjdI/U4GB+lTWulSXShy2xD0JHJqy2
+iKVIWY59xT0vcWpDpmq6joUbXGl381rJM2CEIKkDuVOQevpV658deLLyFoZtcn8tuD5caRn8
+1UGsy/tJYSmV/dKoUMP1z+OaqBTRyp6juyW2j3LJCxJMnIJ/vD/HmtG08UeIdPtY7Sz1i5ht
+4htSNcYUflWaNyMGHBHNS3CZcSKPkkG4ex7j86Gk9xXsWb/X9b1WIQ6hqt1cRd42fCn6gcGs
+7aOlSBaNtCSWwXItntRtNTbaNv8AnFMCILRtHpUuzjpShefagCHb+VKF56VLso2/5zSAj2jF
+Lt9qfs7UbfyoGNC0BfpUm2gjAoAiYfnRTsUUxXIQv+c0bakI4pKoRHg9hShTmn49acAKAIwp
+peak49qBzQB0No6vZxFcY2gfjU3t1rCtLp7VvlwVPVTWompW7L8wZT6EZqGii00ayIVZQVIw
+Qa5yWIRTOn91iP1rXn1NApEKkse7Csc5JJJyT1NCQmaGnWKSIZpBuGflU/zrWVAvAGB6YrO0
+udfLMD4BByvvWtjvSYypPYwTqcoA3Zl4NYU9u1vOY26joR3rp8Vjak6yXfy87FwfrTQMzwP5
+0uMe1P28Uu2mIjC/hRt5qUAUAUAR7aMfWpQKaRQBHt9s0u32p4Wl28dKAIsUEVIR2ppWgCIi
+inEUUwIjSYyelO4zTwlUSNC+1LgU/bgUhHHWkMYVpQlKFOc1KBigBgQilAIPWpaQ46UAR4NK
+E46VIEp+MCkBGFxirKX1zGMCUkf7XNQkUmPWgZNJfXMo2mTA/wBkYqALT9velxRYBmPWlxin
+AUu2gBmKAOafg0oHrQA3ApCtSEc0bfakBEFoIqXb+VMNMCIikNPxSUCIyKKdiigaZAiEtz0F
+TBcUoXAx6UvNUQNxxTSpNOOadGN3NAwVMLUgUYpwWlK8UhkeB60BOaft59qeFwBQA0L70YqX
+HAphGTigCPBJxTwvFPCjHSlxigBnAFJjNPIpQmeKAGBeelKalKhRTMc+1ADcZ5p2KeEyKdtp
+ARY5pMVJt9qaRigCM57dKYRUpApjD3pgRketNIqQikxmgBmMdqKkC7j7UUARjP1oJxUvNNIz
+VEkRBY4qdUwMUKPzqQAmgBNvFIV7VJtI700Al8Uhgop+3A70/bS44NIZEQcUKvOakK04JQAw
+JQw5qUjHtTCM9KAI1jJNTBAAKcinPSnMMCgCFuTihUz1p4XJqUJ60AR7cCkI/KpSoHao2IHS
+kBEzVGRUhHOTSY7imBGfam45qQj2poUk0xDdtNbsB1NSsMDNOhj3fMaAGpHxRVrbj8KKQyga
+B1ooqySZFG6nj8KKKkY3OcYAp6rjmiimA7H5UGiikAKM1IABRRSGIwzSKO9FFMRMFGKQrk/j
+iiipGPjQY46U8riiigCFzxgVCRRRTQDcUYoopiGkZ4pQoFFFADSN8m3t3q1HGAM0UUMELjcc
+CiiipGf/2Q==</current>
+                </image>
+                <about>
+                    <label>5 of 10</label>
+                </about>
+            </element>
+            <element id="5">
+                <index>6</index>
+                <image>
+                    <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CACWAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDjrjVVuozFJEVQ91bJFUnt22l4mEqDqV6j
+6imlKVVZGDKxDDuK6rGFyHmlBr2L4WeGdF8Q+G7u71bTLe6uEvWjEjrztCIcce5NeW6xYmC+
+vvs6gwxzyKoT+ABjgEdqlSu7DaKG6jIr2rxb4Q8P2Pwyk1K10uCK8FvAwmXOckrk/qa5f4R6
+Dpeu6pqkWq2UV0kUMbRiTPykk5pc6tcfLrY8+4o2iuj+IGn2ul+ONTsrGBYLaIx7I06LmNSf
+1Jr0Xwt4S0C9+Fsep3OlwSXxtJ3MxB3bgXwevsKbkkriSueLlRTSorrfhrptnrHjW2s9Qtku
+Ld4JGMb9MgcV6vfaB8OLTWYdEvLKyhvp0DxxNvXcCSBhs4ySDxnNJys7DUb6nz1t9qXbXonx
+J8AQeFzDqOmF/wCz538tonO4xPjIwT1BAPXpivPsVSaauiXoNxRin4oxTAbtoxV6PSNRl05t
+RjsLlrJDhrhYiYx6/N0qSDQtWuLcXEGl3kkJjMokSBipQfxZx0pXQGb19KXbXeRQ2lx4U8Dx
+Xtpd3UEk96JIrMZlf5+APxrmItC1K/kZtP0q+lhaRxHiEscKeQSB1HGaSkOxlhaXbmr1lpGo
+6iZlsrC5uDDzKIoi2z646dDVUKSQqglicAAck+lO4DNtG2uh0/RWtNUe313RtVIa1eWOKCMq
++QOGIP8ACO9ULfQ9UubYXEOmXckPlmXzEhYrsHBbOOlF0FihikIwK0JNF1SGW2il027jkuuY
+EaFgZf8AdGOas6HZXUevaVcPbTCBdThgaRkIUPuBKEnjOO1FwMPFFdL4i0y+v/F3iBrKynuE
+gvJDIYYiwQFjjOOlFFwILLRfEeo2ouLfR7y6tyMiT7OWDfQ45/Cs6XZFM8NzZyQSqcMnKlT7
+g17b43+I7+ENbtNNttPjnjEayXBLEFUJIAUDvgZ59qzfjBokF7o1nr9tGPOR1jkdRy8bD5Sf
+ocfnUKbvqNxLvwW2f8IlfGMsV/tB+owf9WleOaxFOuq6jJGN3+kS8o2T94+lexfBRGTwjfB1
+Kn+0H4I/2EpLpfhYLqc3Mdn53mN5pZJfvZ5/WpTtJlWukaHjQK3wlk8wkD7Nb5OM/wASVyfw
+VhEetawVdWU28eCv+8e1dr8QPL/4VrefZNnk+XF5Wfu7d646+1cZ8GARrWsbliB8iPmMg5+Y
++lJfAw+0c/8AEbS57nx7q0qbdpMfU/8ATNa9J8IxtF8HkjYYZbO4BGfd643xv/yOeqf70f8A
+6LWu68LAH4WICMj7LP8AzenL4UC3Z5V8JVA+IVp/1wl/9Bq38asjxlC4JDLYxlSOoO9+ad8N
+rYW3xJs1U/K1tKw/756V6X4g+H2neJfEsGrahcTMkMSxm2TAV9rE8nrg57YptpSuJK6KHxMJ
+n+F7yzj96fs7c/3iy5/ma8BYFUOBzXrXxe8Q3crw6ELCe3tVcSmeVRtnIHATHYZ575xwO/lW
+KqmtBS3Oy1nRvDtt4TjurSRPP2r5UolJMpOMgj6Z7cVxTA7D604RoDnaM0/AxWeHoypRalJy
+16lVZqbulY9V0ySVdR8MWkckg0iTw3I08YJ8skqxckdM5203wxc3CXfw9t1mkWCSxuy8asdr
+8N1HQ15/F4g1mDRm0iLUpl09wQYARjB5IB6gH06U2DWdUtpLF4b6RGsVZLYgD90rdQOO+avk
+YuZHbeGP+PT4cf8AX5ff+hGnaRdXFvpfhhYZpIxJ4mlWRUbAcbsYI79TXIaJNrV5qWkabYXp
+SaCV/sW4gLEz8sc471XbUdUtXjtvtjj7HdNPGBghJc8sOPWjlC56FbXENjY3M6jUDMfF0oCW
+BUNI4PyI+7Hyn0964W+vWsfHM+oQWe14NRaZbVyDgiTOw7cjrxxmmWHiLW9Mmu5rLUpoXvHM
+k5AB3sc5bkcHk8iqEcs0VwlwkrCdHEiyZydwOc/nTUbCbPSNNiFx4kTXIby6mstU0y+khium
+JeBlwHT/AHcngjtUnhm6uYrn4dW6TypDJb3XmRhyFf73Ud64WfxJrl1ffbp9Tme5ETQB+OEb
+qoGMDNQQaxqds9g8N66NYBltSAP3Qbrjj370uRjujudEuri6tPBEt3PJNJ/bFyN8rEnGemTV
+e1Vk0S1DqVJ8bDAYYzwK4oahfLbW1ut3IsdrKZ4Apx5chOSwPXOataj4k1zVJraW+1OWZ7Vx
+JCSFARh/FgDBPuaOVhc7O/nvLax1d9NkljuH8XBZDESCV7A47Z7UVxNt4j1yylvZbXU54nvW
+33DLj52656cHntiijkYcx0XxaumXxndRRs6kQx5wcfwjiu98YsW+DKuxIf7LaHPfO6Osf4ke
+AtY1/wATwXulwrJFcRLFMxcL5RBPzHJ6YI6elavxRYWngq10a3G95XjQL38uMZJ/ML+dTdPl
+SH3I/gsS3hO+JJJ/tB+T/wBc468b1nb/AGnqOQP+PiX/ANCNey/BhGj8KX6sCCNQfIP/AFzS
+vH9ZgVNR1BpX5+0SEIvJ+8fyqo/ExPZHt3jJDJ8JnVQWJtrfp3+ZK5T4MRCLWtYG9S3kR5Cn
+OPmNdV41P/FpJcZH+i2+Of8AaSuF+Dl4lt4vurWRgpurUhM92Vgcflk/hUpe4xv4hvjm8Efj
+rWEdPlQRtuH/AFzSvQfCkob4UJKAcfZJzg9er1z3j7wFrWra9NfaTDFNHdBPNDSBChUbe/Ud
+DXTfYj4U+FsllcSI0sFk8bEHgyPngZ/2mxQ2mkC3Z5l8Mp2ufiLaSNwBbSgD0G2rvxYvr3TP
+HlteWF1Lb3EVlGytGxHR34I7j1BrP+Fgx4/tBg/6iX8PlrsfHngPV/FXi2Ce18qKy+zJFJPI
+4ypDMThepOCKp2U9RL4TW8fQw618NJL54x5ixRXUR/uk4zj8CRXghAAJPTvXvXxLvLfSPAba
+cjAPcbLeFM87VIJP4AfqK8JePcpB7inS2FPcszaPqFtZJeT2kkdu+MOcd+mR1H41TPAzXS6j
+4tuNS0Yae1osbMAJJN2dwBzwO3QVzrJlSKjDyrSi3WVnf8CqqgnaDujrLDwNFd2tl5usxwX1
+3ZPfLamAsfKGcHdnGTjp9fSjR/BUGqWujvJrSQXGrRytbQG3JyyE5BYHAHHX+dbul3mlTSaJ
+q8ur2cJt9Fewe2eTEglVWA49CCeT7etVfD+qafBP4CaW8gQWaXQuCzgeVuLbd3pnNVzSFZEP
+gfw9DFqWgaxd6kkE1zdyLa2piJ80R5DHcOBz0z1rlhafbvEost/l/ab7yQ5XO3c+M4/Guz8P
+XWmXNp4VuLjVrO0bR7y4E8Uz7XYOxZSo79snpXKWM0UfjGzuWkVIV1JJGkLYUL5mc59MU1e7
+E0bUvgrToIriaXxLEIrO9+x3Z+yvmNycLgfxds9hzycc1z4PS11LWotS1RLWx0lkWW68kvuL
+/cAUH359Kt6hqFlJpXiaNLuFnn1xJolDjLoGPzD1FaOq3mm65qHi/Sk1Szg+3T289tczS4if
+Yqhhu9aV5DsjGTwV5d7rcN9qsNrDpXks85iLLIknQgDnOO3PJxTLHwfHe2EDjVES9vIpp7K1
+MJPnRx5yS38JODgVravrOnXsfjJYLuNkmhsoLYk4M/lnDFR36VY0zXFPh3SJIvEFtp8dhaSx
+XVvsjNwzjOzYGUkhsjp70XkFkedjpmmEVJjgDvTcVqQRkd6KeRRTEek2Hj/xJb2UcXn2tyAo
+xLPES5GO5BANZN9qF5ql415fzmacjGcYCj0A7CudstQNuojkUtGOmOo/xrTW+tXAxMo+vFRy
+JFXubGmeI9Y0K0mttMlgRJJDIRJHu+YgD19hXCXDtczTSy43ysztgYGScmt241CGOMiJvMc9
+MdBWKkTuwVQSzHgetNKwmzob3xzrup6IdIupLY2bIqELFhsKRjnPsKwbfzY7uGS1leG4RwY5
+EOGVuxBq7Hos5GWdVz26mj+zZ7bfJgOQpCheuT/9bNNJLRBdnTR/FjxPbr5Q/s+5C8CSaBtx
+9ztYD9Kwdd8W674lKDULpRDG25YIV2ID646n8SaxgpzyKeAcdKSgkHM2aNhql5oWrx6tppjW
+coQvmJuAzw3Fb3/C0vFpBHn2Y9xb/wD165eMebbvHjLL86/1/wA+1QgflQ4p7hzNFnUtU1DW
+bv7XqV3Jcz4wC/RR6AdAPpVMrUu3igKaaVhEW2kxzzip9tJtpgRbBnOKPLA7VLtxS7f8ikBD
+sB5wKdtHSpNtLtNAEQQegpdg9BUm3FLtoGR7B6ClKDqV59ak24ppFAERFNxUpWmGmIjI5op2
+3NFACc0uD61IBTsDFUIixWjo5X7W2eu04qlgU9CY3V0JDDoaTA6U/pSgD3qlb6lE6gTfI3c9
+Qas/a7ZRnzlx7VFijP1W0Rds6qAScN71npEZZFjTqxwKu3959oKomQin86rW0nk3MchGQp5+
+lUthGvb6fDAAQA0mPvGpWsrZxzCn4DFWEIZQynIIyDT8VIzBvtO+zqZI8lO4PUVRC10t0VW0
+k3YxtIrnwopoTGbeKMVJilC80wIttKFqTbS7aAIttG2pSKbt5oAZt+tG2pNtGKAI8cU0ipSP
+SmEUARmmMKkIpMZNMBirRUqrzRQIbtFBUVIV7UwjnimA0LTwhpyKakAxQBHgil571KQKTbzx
+QBHjJpwQVIFp2KQD7e6mt+Ebjrg9KsHVpcf6pM+vNUiKAufpRYdx81zNcn94eOyjpTNtOC0p
+FADNvNGKeF70uMUAR4pwApwHPSl28dMUgGFaTbUnvS7aAIsU01KRgUwimBGaQinkUhFAiMik
+C4qTFKq5NMBFXFFTheKKQysQaFQk0ucmpVSqJEVeaUpTwtBWkMjK9qcqY6frTlXmpQo9KAI8
+Y+tIeO1SkcU0LnrnFAXI1FP24608LS4oAjNG2nBc9KeqUAMA4pMZ4qRhQFoAYF9aXFShPWkK
+9qQEePakPAqQjimH8qAI2JNNxUhFMxzTAYR7U3FSEUYwKAI8Z4FTImBQidzUwXjpQAwDiipN
+pNFICmibmyR0qYLSjgYAp4U1YhpGKTBzTiCKci5XJpACr+FGMGpACKCOtIZERzTlXinbcmpA
+uO1AEe3AphU1OwHSmgdaAGpHnrUmAop4UYprZPAoAi25OcflT1jxUip7U/ZxSAiI70h456VK
+RioXIPSgCNjmmVJtFIRxTEREUmM080BTimAzb60iLvOe1PIJbb3NWI4go6c0ARhKkCVJjHFL
+t9sUhkQAoqXbn6UUgKwUKOlKcDrTtgxnr+NAqxDAu4Yxgd6kApwHTinhcdqQEeKTvUpHtSBc
+nOOKAEVacRgU4IaCpxSAiIyakRP0pyxk1MExQMiYcU1UyQanKdqesVICMJxSMMVOVxUTL9aA
+Kr/MelMIqwU9qaU9OlMRBikxU+ymsKYEG3J680pAC1Oq8e9N27324Bx1oAjiiJO49TVnZtXG
+DUyJ7UrDikMgCEnpTihxUirSkUgIgnHSipGHHSimBWIIFKq5IoopiJQozjAoxRRSATbmnogI
+9qKKAJNopGTj60UUDJFjCj6Uu35TwOKKKQDhHg9BilA7d6KKAGN2/P8AComGSKKKAGHrzTSB
+RRTAaRjn0pgXNFFMQrfKPoKdCoC57miijoBZUYprdaKKQxQMCk70UUAI/wDOiiigR//Z</current>
+                </image>
+                <about>
+                    <label>6 of 10</label>
+                </about>
+            </element>
+            <element id="6">
+                <index>7</index>
+                <image>
+                    <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CACWAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDr/jUjvo2lhFLEXLHgc/drF+C8kj+INVEm
+crbJyw5+9Xo3i7Q9D1y1to9cuvs8cUheJvPEWWxjqevFVvCfhzw5ot5cS6Lfm5lkjCyA3Ql2
+rn0HSr5ly2Jtrc8h+KVsZPHOqMhDELHlc8/6te3f8K9Q8exPL8KZo0XLGK3wP+BpXmfxPRm8
+c6ofsrMNsfzqSP8Almv4V6r4w/5Ju3/XO3/9CSm/siXU8q+GVlPb/ETTWliIBSXk/wDXNq1/
+jau7xDpvtaH/ANDNP8DHPjnTv92X/wBANWfjLa+fqlnIv347UnHqNxqvti+yb+lj/iw7A/8A
+QKmH6NXO/A26mW61mw3sbfZHMqk8K2SCR9Rj8q67wvp8mq/B+20+J1jkurCSJWbopbcMn86r
++HfD9j8L9B1DUtQupLmWXaZXhhJAC52qBz3J5OB9Ki+jRXVHlHxDgSH4gaysYwDMHIHqyKT+
+pNQ+EtBttdv7iO6ldEhQMEQ4LZPr6D+oqlrOpPrWt3upyIFa6laTbnO0dh+AwKpRs8Uokikk
+ikHRkYqfzFVVpznScYOz7kwlFTvJXRd1zTYtK1m4soZTLHGRhmxnkZwcdxmtr4fKqa3qN4oU
+3Fjpdxc2+4ZxIoABx7ZNczjLEkksTkknJJ9au6Vqd3oupJf2LosyKVIddyupGCrDuCKqMZKC
+i3dibTldHo+j3El/q/hXWborJqF3pF39ocqB5mzIVmHQ8Umg3txqeo/DjUL2TzbqUXyvIVAL
+BVYAcegrij4t1VtYi1NRaxvBbtawwRxbYooyCCFXPHWorHxLqen/ANj+R5BGk+d9m3R5/wBZ
+ndu5561PIx8yOt8Nf8ePgfv/AMTi5FT+c+v6ZpMeplZlTxW1qoKAAQ4J2YHbtXJW2qa5p2k6
+PeJFEtnaXcstpKyg7pT94HnJqm2uaibBbRXSNEvzqKsi4ZZvUH0p8rC6Os8bahb6ho91FJey
+X13bau6xS/Y2jWCMggw7iMHGAapeE76e58O3nh/SrsWesSytMu5AReR+XgxZI4IAJGaydZ8T
+ajr0KQ3aWkMQlM7rbQiMSykYLt6tjvTNJ8Q3+iW8sVlFZiRyxW5eANNFuGDsY9OKfK7Cvqdz
+obbdT8FtgHGhzkhhnOFbrU/h/wAQapcReBpZrhXkv5rqC6YxIDLGhO1TgdBnoK4K18TapaS6
+dJEYM2Fs1rDmPjYwIOeeTz1pll4h1GwTSUhMONKkkktspn5n67ueankY7o6iwATSfCqqAAPF
+DKAB28wYFWJII7m1vreZQ0UvjXYwPQqTgj6f41zGleLdV0eB4YYrKZDcG6jFxAHMMp/jQ9jW
+e2uakdPlszMuJL7+0Gk2/P5397P69KfKwujuNf13UrnRfFUjzbZLDW4Y7WRUAMaq/CggdsA8
++pqfxVczzX3xBWSRnWGxtFiB/hUkNgfiSfxrjdX8Y6trVlcWdzHZRw3EqTSiCAIXdf4ie5OB
+nPpVe78UanezatJN5G7VY447nanZOm3njpQoMOZHeazIS/iHw2dh0ix8PpPbR7AAkihSHB65
+JJ70VxU/i3WLzRP7Lla38toVgkuFhAmkiX7qM/cCimo2C56R8aT/AMSfSuSP9Jbof9msX4Lf
+8jBqpyT/AKMmcn/arc+M0by6TpSopJ+0tn/vmsT4MxrH4g1UbwzfZkztHA+b1qV/DH9owPif
+A8vjrVSo4Cx5boB+7WvU/G0og+GUkhG4LFb8A/7aV5V8Umd/HWppuJULHgdh+7WvWdQs38U/
+C6KG0w8lzZQugz1ZdrY+uQRRLaLEup5/4DuIpPHWmBThjHIwBHONhq/8YroQ6taRgEu9oR7A
+bjUXw88L63F43XUr7Tbi0treN+Zl25JG0KPXg/pVf4xzrL4ntYgeYrQbvYlicflj86f2w+yd
+fosstv8ABETQSNFNHpkrJIhwVYBsEEd6zfhN4p1LWm1DStWuWuzCiyxSy8ttJIZWPft19TWp
+osEtz8FVggjeSWTTZUSNASzMdwAArP8AhT4T1LRpr7UtTtmtmmjWKGJ/vbc5JI7dv1qNLMrq
+jzvx5pEGi+Mr+0tUCW5KyxoOihgDge2c1z0VvLcSiKCJ5ZD0SNSx/IV1fxEvI9Q8c6i8TBki
+Kwgj1VQD+uao+Gdag0K+nkuYZHjmQLujAJUgn36HNVVnOFJygrvsTCMZTtJ2RglCpKupBBwQ
+RyK0NF0a517UhY2rRI3ltK8kzbUjRRksx7D/ABpdXvk1TVri8SLykkIwp64Axk+9bPgVRLrG
+o2IZVmvtLuLaDc2AZCAQM++DVxlJwUmrMTS5rIhHgjUzqen2MdxYyPqELz28iTFkZFBOdwHc
+DimyeDtRFxpENvPZ3X9qllgkt5dyZX7wJx29s9DXZaXbNp2teDLW4eMSwabdLIFcMFbDfLkc
+ZHSqvhW6gtLTwGZpEQeffoSxxtZgQufxIqeZjsjK8Qac2l+AdHtWura5239wRLbSb0Yex+vH
+4Vk6P4Wu9ZsVvY7uxt7c3QtN1zNs/eEAgDjnOQOK1dd0u40fwHpWn3mxbmO/uC6JIH25xjOD
+36/jTNOx/wAK/tlJH/IxxNgntsHNNPQVtSjqfg/UdJ025vZ5rN/sswhuIYZt8kRb7u4Y78d8
+8/XBqvhDUdI0uW9nltH8gRm5gil3SW+/7u8Y4zXTa3LHFD45lJDD+07N8A/eAbJ+tS+KIfst
+p4w1dpYmtNYjtlsWVwTNyCcDrwM0uZjsjm7rwPqlrqttpjT2L3dw3yxpNkqgXcXbjKrjPPsa
+zdX0SfR5IPMmt7iC4j82G4tn3RyLnHB46Gu6kuYY/jJdF2hIuLPyIzIfkLmBcA/UjH41zviz
+7bDaaPZX8NhaywQu32OzQjyAzdGO5sk4zx0zTTdxNHKsKYRUh64puK0JI2FMVefSpWFCpTEK
+q96KlC0VIzrfG/i+98RW9rbXNnDAkTl1aNydxxjBzWZ4T8U3HhG+ubq2tIrlp4xGRI5UAA57
+VQ1K4W5kVY+UXPPqarw2k05IiQtjvRyq1gu73L2v6tJ4h1q41SeBIZJgoKKcgYUDr+FbfhXx
+3qvhXTzbLHFeWAf93BIxVkJ5O1hnA9iD1rnm0u7VThAfYGoroNF5cBBGxcnPqeT/AEH4Ucqa
+sF2tT0K5+M9/JCy2uhQQSkcPJcmQD8Aq/wA64K5u7rWJru4vpTNdSt5pc9+xA9BjH5VTA9am
+jcxSK47HNCglsDk2djofxP1HQtFtdLi0q3mjtk2B2lYFuc+nvT9T+K+v6hatBbQW1hvGGkjJ
+d8exPA/KuMnjCSkL9w8r9DTdvFLkjuPmZGVPPJJPUnqaTbUu056Uu32qySHbgdKCgPUZqbbR
+sx0oAgESgcDGKXywRjHFTBeen5UbaQ7kKxqp4GKUxg84qbbRtPp+NAEXlL6daUQoP4RUu09K
+XbQFyLy1IIIyDSbAo+WpsYFNOTzQBCRSEVIRTDTEMAzT1UUqrUqrigBAtFSbcUUhlcHFdNZq
+iWkWwY+UHp3rnQoPFaNhfCECKXJQHg+lNiRr/pUVxaR3MWxx9COoqSOSKRdySKeOxFJNdQwI
+SWDH+6DUjOcaHy3ZD1UkGrVnYG6JZiVjHGR1NQSO0kjO3ViSa2NKdWtTHnDKTkVT2EPGnW5V
+UZNwUYBLHPWoJ9ITBMLFWHZulau32oxU3HY5RkZHKsMEHkGl2+1aOqKpuwR12jNUtuBVCGbR
+25oxmpMUoWgCHbTsVIFpQtAEWKTHPNSkUgU9qAI9tLipMUmOKAIyPamEYqUg0wjFAEZFM25N
+SmgLjmmIRV5qTbSqvFSKvFIYzHFFPYc0UWC5XVTTgpFSAU/AxVCIhnPIpakKgdKAnNAEQXIq
+aJnhcOjYNOCgCjFIZfTVSBiSIE+qmkk1YkYiiwfVjmqGO1G3vSsguDFpXLOdzHkk0m32xTwt
+GKYDduKNvNP28UY9qAGAc07bTguaXFICLbQBUuM4o2+tAERFNI5qRqbimBH9KaR7VIRSYoER
+FcmnBMmnYqRE4oARVp+MU8LgUhGOaQyJumKKcRk0UxCBOKNtSY44pCvOKYDApJ9KkCnAyKcq
+jinheOKAIiKaee1SkelATvQAwL7U7bxT9uO1IRQAzFKF5pwXipNuBk0ARkUmKeVycUoU9qQD
+dtGOeRUm0AUmKAGY5ppOO1PPFNIoAiNIaewpCDTAjIpMU/B9aNu4gAUANVSTnHFThfalVMcU
+/FADcU1hxUu001hzmkBBjtRUpWimAhzilVc9qXq2Mdak2YpiG7eO1B6VIRx0xSEdaQyMAlhT
+wlOCYp+BQBERzgU0KSRUpFOQc0ANWPFI4HQCpiMCmBcn8aAIwhNSheKeqe1KV96QEWKacAdK
+lbAqAjJpgMOc00jFSY/GmkYoERketJj1p4HPFKQRTAiIx9akROPeljj8xge1WQgAFICJUxTi
+vrUuBRtoGRlajI61YIwPrURAz0oAhPtRUm2igQqpznFPxTgtOwMUwIjxQBmnkU5Vx25oARVx
+SNmpAD6Um056Uhkark5qZUwKckRHNSbOKAIGXJ4pyR8etSCPJzUoj70gIdtMY4FWGGPaoXWg
+CsRn1puKnMf1ppT2qhEOKaV7ACpyvFN2gn2oAjC4NNYbjsHerBUKDxxSwxA5Yjk0AJFFge1P
+K56VYC4FNI5pDIlXFGzmp8YpAKQELr+dRFfbBqxIecfzqPHWmBFs5op+MGigRNswOlJjtjNT
+baAue1AEIj56HNTLFntmpVTApxGO1AyHyz6UiRZbPSpcZOB+lSKuBx6/5/rQBEEGM4zRsyam
+xgHHUjP1/wA/0ppwScYpAIqgY7UEU/vxwPz4zTCePpQBG1RHgVIW4NMIpgMIppFS4FNI9KYi
+FuwoC45P5VKE9KGGBzjAoAg273C8kd6tIvtUVumRuP8AEatqvHvQwGNwKaBmnMATgdDQoxzS
+GIaTtTsc0MOKAIG5OaTFPA5pDQIjx7UU8niimBYxSqMtxRRSAlxj6UhBoooGKqd/89M/0qXh
+UDAeuPbqaKKQDGIBI98UkYz/AC/XH9aKKAFZSFGcfMKhf1x3oopgMPWgj9aKKYhMUzq2B2oo
+oAkUdqr3R2xn6ZoooW4E8KhVQVMeFyP1oopMBgGSaXGFzRRTAT6016KKAGAUh70UUANI4ooo
+piP/2Q==</current>
+                </image>
+                <about>
+                    <label>7 of 10</label>
+                </about>
+            </element>
+            <element id="7">
+                <index>8</index>
+                <image>
+                    <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CACWAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDa+C/nHWdXaVnYGCPBY/7Rql43ni/4TjVo
+i2GUoTnp/q171N8GbonxPqcUjlnltFcZPXawH/s1VPidp1zaeLb25FvKyXyxmN1QkEBQCPrk
+Ditvtsz+yeh+FWX/AIVWjbht+yznI6dXrzn4bzrcfEezZB8q2sgB/wCA16HolvLo/wAIhHeI
+0UiafK7owwV3BmAI9eRXmnwrAHj+0/64S4/75qVsxvdHXeP/AB3rXhTxjbxWjRS2H2ZJZbaR
+B82WYHDdQcAe3tVv4naBp+qeFT4htoUW6hVJfNVcGWNiBhvXGc/hXN/FXTL3VfHNvbWNrLcT
+SWUaqqKSPvv1PQD3Ndx452aT8Mbi0dwWEEVsp/vHKj+QJo2tYO58/beKAAelPdCUYDriuw1j
+W9Eu/DEdpaoPPwoSMRkGIjGefw/GitWlTlGMYt3f3BTgpJtu1jjsYratfCGv3unRX9vpzvbS
+qzo+9RlV6nBOccVjupKH6V6rplrdzaj4ev4I5DYL4aeJpQDsDBWypPTOcce3tWs5WIirnCWH
+hHXtSs4ruz09pIJkaSNxIvzhTg4GevB461q+AdB1S48RaVrEVozWEV1tebcBzg5wOpx34rc8
+NZFz8N+TxHefzan+HrW6u4PAc9nFI8NteXguHQZEZLn73pkfzqHJlJHn08Et1rkttCu+aa6a
+NFBA3MXIA/Otb/hBPEwMYOlSDfIY8mRMKR6nPHtnr26ioNOH/FdWPf8A4mqf+ja6TUy/9jeL
+fmYZ8RRng4/i/wDrCm21sJI5e18MazeapdabDYubu1/16MyqI/qxOPpzzS2vhfW7y8u7S306
+V57RlSePIBjLHA6np79Mc123iO3nvz4+srGOSW8a6s28qIEuyAL0A5ODS6/IcePAj/vVttPj
+lZT/ABdGH9DS52PlOIh8MazcadNqEVi72sJcM4ZcnbwxAzlgO5FZWOM16fpLtHpXhi6tNHa7
+MWnXCtctcmOGEDd5gcBSMn39q8yxhRVRdxNWIyKaRT8ZpCKskhYc09Fo25qVFoEAWnYpwWnY
+pDIivtRUmB1zRQBa0XUrzQNZt9S08r9oiONrfddTwVPsa9Vj+MmlIu270rUEmHDCHY659iWH
+8q8miikglMsqMvljcNw6nt+tVeScmhwUgUmjvPFvxOn8QWf9n6dZva2bkGV5WBeQA524HAH4
+msHw1q8XhbxTFqj28k8KxsFSMgEhhx1rEUcetT4821/2oj/46f8A6/8AOjkSVg5ne56n/wAL
+nsSDt0W8zjvIorh/FnjLUPFssYnjW2s4jmO3Rs/N/eY9zXPgZo28UlBJjcmyIg0be9SgZpdv
+tVkkW2rEV7fQQpBDfXUcKElY0mYKpPXAB75NM2c0bfbP0pALHc3cJgMd1Oht8+TtkI8vPXb6
+Z9qWC8vbWMx219cwxlxIUjlZQW/vYB6+9Jto20WQ7sarSLKsqyOsqtvEgbDBuuc+tOM1y6yo
+1zOVlcSSAyHDt/ePPJ96NvtSgH0osFySO8vo7xryO+ukumGGnWZg7D0Jzk9KjEs4WZRcTYnI
+Mw3n95g5G7159aXFLjFFkFx0dzdRWr2sV3cR20nLwLIwRj7rnBqsRUx9KYRRYGRY9qaRUpFM
+xk0xDQnSpVXAoVc1LtoAaFoqTGBSY5pDGEe1FOxRQB0rRq64YBgex71i3+nrbuHj/wBWx6eh
+reCf5xWZqtwjqsKENg5J9KEBkhDnAGSeAK1LXSyg3ytyVIKD3FVLNlW8iLcKG710QWhiRmNo
+sWPkkZT74NZ9zaS2pw/IPRh0rpcVBdxrJaShuyk/lSuOxzQHtTtvpTwtLiqER7QO1BXNSBea
+XbQBGFo2+1S7aCuKAIsYo25p+OaXb7CgCPFGOO9SYpCMdKAIiKaR7VIRTSKAImFCr+tPIzTl
+XnFMQKvHTrTwuKcq+1PxgUhkRH/6qbj1qQ0mKAG4op22igBxlcjBdsehNMIyaeV7U4IKYiMJ
+zWla6i0ShZV3gdweaqbcUmMUWuM1/wC07bH8f0xVK71A3C+Wi7U7k9TVTbmnBaVguN20bafj
+A9qAMmmA3FGOKftxRjNADQM96CtP2+lLikBDtp2KfigjAoAiNN/OnkUhFMRGaaVqQikxTAjC
+96eiU4LkipQnFIBoWlI708r6U0jikMiI5pMVJikxTEMxRT9tFADlU9xmn44p6pSlaYERpAM0
+/GeKeFxQFxgWgj2qQim7eaAG4p23inqmaUjHFAEZFAXPanAU8IaQEeOKNoqQr/k0hFADMYFM
+bB6CpCPQU0imBF/OmkVJikwaAIyKCPzp+O9KiZOTQAInFSAcU4LgU7FADcd6iYZPapyOKZtp
+ARYzSYqTbRt5xTAYBRUgU+lFAEmMHpTT6VKV9KTbk8UCGqvFOC45NSKtDLxigZCc0qITT8e1
+TKuBQBGFwKjxk8VM1CrxQBGiGnlfyqXbxSYpARFRUbnsKlf0qLBx1pgMppqQj8/rTDTEMxRt
+zTwOKQ+gFADAu44FTKnanxQ4HNTBABSGRBcdqULUuPSk20gImX6UwjBqZwKjK/WmBFQBzUm2
+l2gDpQIaENFPAxRQMd1NOVf/AK9AXLVIB7U2ITAA5FRkZqUjjoaAhPakMaqZ7fWpCuBUix4F
+BQ9KAIApJzipgmB0qRY6fswKQEBGKhc88VYYfSoSlMCAikx3qYp2pNntTEQ4/wA5puzJ6VOV
+FAQYzQBFjC02NNz78fSpWTcQvPPWrUcQHAoAjC4XnrSbcmrDKMdKRVpDIiOOKAvFTEUEYFIC
+qy8800pUx56dPamkfhTAjC0m3mpD0phFMQnSilA56UUAWUj4qQRgVPtAoPA5+lIZXZO+PpT0
+iwKlVcnJ6U/ae/Hpkd6QEWwYPWgR885/KpmHPTHpSLj34oAQLgZ70xqkPGM4+lRsccUARN1p
+hwT/APWqQ8mm4piI8e9NIxipSKYVzTAiwSf8aD8o/DmpgvoKikGWVR3OTQAQp1c9TVtRSInA
+FSEYFJgRN1xSgYFG3J4px6YFAxnekfpingcUxxzQBEAPakYZ61JjgUnemIiKj8qaFGakbmhV
+JFADVXmipcfj70UAXfpTQu49KeTyelOVVJx2pDEVOMe3fp0705sDP49ev+eKUtxjruOMY7+n
+9PzqOTcrlXUhhwQwwR9aQCHk07AxxgY6ZP8An3pEDEMwVmCLuYgZAHqankgmgSIuu3zYxImG
+zlfwNK6vYdnuVm9OfTrUR6/41YYc5qMr2qiSICkxU8ESy39rAxIWaZYyR1AJxTboJbSzr1WO
+RkBPXAOKXMublHyu1yBhgZ70KPUVoy6TcRaq9g7xiRIDPu5wVHpxVJedp9aIzjL4WNxa3EYA
+LVaIbrlvQCrcnC8d6q23Fw49atElxQAKRuTUgVtjOEYopwWA4B9zTByc1IxoXvmjvVqwgS71
+KO2dmVSjsShGflXNVY/nQNg9KSkm2gs7XDGBUTZzUzGojjzI1PCvIqk/U4p7K4hCOKYRVu/g
+S11G4tUZmWJyoLdTUG0CnFpq6BqzsREZanhaUKKXFMBoFFOxxRSA2LKKy1C50B0tTDDficSx
+eazcoDg569qZarZ3yaLPFbtFFczvBLG0hbO3vnsT7UUV5bnJdX1/9uOzlXb+tCJRClol00O9
+l1YW4HmMAVxwPzwam1OWziuddv7i0aRbedIVjWUrlm6vn19ulFFU5Pmvf+roVlb+uxORa6fq
+XiC3S2Lxx2IdQZWHykKSv4k5zUEFlarPZqY28r+y/tsqhjlyO2e2aKKlSkle+6/Qqyvb+tyS
+2gtL2606UQNHbXdpJM0IkJKMvo1QwR2uoJoUsEDW6XzukqeYX4Q+p9QD+dFFPnknv/Xvf5C5
+V2/rQfCbGZ9NvLW1eBv7XFuQZS/A+v4Gs7Vh897/ANd5P/QjRRWtBvmd/wCtSKiXKjq7tRNq
+U10eHgSe0P8AtAxrIPyyaw9Jt7GRdEhubZ5JtQ81jIJSoQJnAwOtFFclOTUNH/VmbSSctf61
+QlgunyW+jG5tHle/mlhZhMVC4bAOB17elVbWCxtIWu7u3e68zURYxr5pTYO7cdT7UUVvzy1V
+3/TZnyrTT+rItS+XZ6NrtqsO94rtIhIznJyflJHt+tJeW9oE1W2tIWjn0xoFMzyFvO8zg5HQ
+YPpRRSUpJ3T/AK93/MbStt/WpbhW0tvGCWMFu6m2ikEkpkJMuY89DwOtU7dLO6h0CaC2aCK9
+laKWMyluFOM5496KKSk1Z36L8mFltbr+qGvFZ3lkDaQPbuuqixLtKX3Kf4sHoenFF5FYuszW
+ls8D2OopbsTKX80Zxu56HI7UUU+eW1w5V2H6gbW3vNc1K8t2uUguliSESFAS3Ukj26Ul5bWW
+ltrc08L3ENmYRFGJCp/ed8juAaKKFOWiv2/9t/zBxXb+tRdStLS1udct4omDWcEU0LFycA43
+A885zVa/hitrmKCJSCtvG0hJJ3OVyT7daKK1w85OSu/6siKsUk7L+rsqt1/GiiivQOY//9k=</current>
+                </image>
+                <about>
+                    <label>8 of 10</label>
+                </about>
+            </element>
+            <element id="8">
+                <index>9</index>
+                <image>
+                    <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CACWAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDJ8R61N4q1K61OaIRMMCOMHOyPoBn68/ia
+77wv8QfDWmeD7HSNRMzSRwmOaP7MXU5JyPQ9a8xgcRyjP3Tww9QabLF5crIcHB6/1rpcE1Yx
+UmtT1y8+LGhWNh5OiWMssuMRoYhFGp9/8AK8ju7ie+u57u5fzJ53MkjepPWkC9KMU4wUdhN3
+ISgb7wzS7QBUoUUbeKoRJp99eaVfx31hcNBcx52yKAeowQQeCKuv4k1yS+t719Rke5t1dIpC
+q5VX+8Onv+FZ20/WlC/Wk0mO7J4tU1GCKxjiu3QWEjSWu0AGNmOWI+vvU2pa7q2soqalevcI
+jmRQVUBWPBxgDH0qlto280rILslS/vYbBbKO4ZbZbgXIj2jiUDAbOM9KluNV1G7S+Se6Z1v5
+FkuQVUeYy9D07e1VcfnS4osguXr3XdY1LTI9OvdRlmtI8YjYAZx0yQMtj3NMfV9Sk1hdWa9c
+aghBWcYBGBgcYx04qtg0uKOVDuybU9Uv9XuFuNQumnlVAikgKFUdgAMCqJAqU+1NIppWEyIj
+im7cmpCKFFMQirUoWhV4qQCkMZtox7U8j2pMUAMxTCKmxTWWgCLHNFP20UxE8NrJcuVjHTqT
+0FaTaQZVTdLh1XBIXg+lWNLANn8o53Hd9avhaTY7GBNpc8K7hiRfbrVLHPSusx7Vh6lAsd3l
+OAw3YHrQmIohaNvrUgWl20wItoxQF5qUL7Uu3mgCLb7UbfQVKEoxxQBFjmjaRUmKXFAEeKQi
+pMcZppoAixSEVIR3ppFMCHGakVeelKF71Iq0CEC+lO2jrjmnheKGHtxSGREUYp2O2KXFADMU
+hGR0qTFG2gCPbRUmMetFAXLFpcPavkDKt1WtdNQtnHLlT3DCsYikoauFzZl1C2QZD7z6KKyZ
+5muJWkbj0HoKZt5pwGKLWC4zHHrShfan4oxTAZg8UoHanYpQv50gG7fWm4qWjb3oAiA9qUgY
+qTbTSKAIzTTTyKTFMRERTSvapSKTFMBm05xUwWhEqUJ7GkA3HFMYcc1Limkc0hkWKMU8rRjm
+mIYAacFzTgtOAoAaRx/hRUgWikMafalC96ds5zinhaoQzbgUYx608j0pAtADQuadtx9KeE4z
+SEUgGbaULTwpx0zTtvrQBHt560bRmn7aSgBnA+tRmpSM0wj8qYEZpuKk/CmkdsUAMxSqMt3x
+TsdhUqJgCgBAtPwKdijHtSAYw46VHipmXJ6U0rQBFijFSbT6UgXvimAgHtTgvT+dKFp4XNAD
+QtFShc0VIDQtKRipduO9NI5NUBFjJqRY+OaeiDPSpMYoAhcY4zTApJyKlxk/jT1SgBgTA6c0
+FetS7SO1NIFICLaAKjPWntkn1puPWmAw0081IRjrTcZNMQzGaTGBnNSEDHSkCF2GOlACInep
+lT2qRY8Yp4WkMh2+1O28dKkK5oxwTQBAVqM1My80zbQAwilxnGKdspwHpQIaq07b704c09Vo
+GCriipVGKKQyNvbNNC5PtUhHNOSPJ6UxCLH39qGHaptpxSBMt+tICJEz161LtxUqoRQRj/Cg
+CBsAc4qBiT1qd1qMoR6YpgQkUmKlKUFKYiBloVOelS7cmnFQKAK7jjA6npU0MW0YxSxRbmLH
+8KtrGAOlJgQFccUqr61KV54FOCgdhQMg25NDjjpUwUH6018Dt+VAFbbTdtTYzSYoAjK4FJtp
+5pCKYgHNSKoxTVXJqYAikMMfrRS0UgHLFlvXFShMCpVUAdB707bhTkZ7/wCfz/WgCEqegpyx
+jjvmnkYJ604gZ657elADCMVE3Spj0zUTHigCI474phFSEUm2mBFimnoMVKRim7OeetMRGF74
+4prZYhR1NTsvHQ02BSxLEd+KAJI0AGBUp4FKq4GaRwc4zSGMAyaU05R3pO9ACdqiblsipz0q
+HGfegBuOKZtqUik7emaYiEjnGaNtPI+anBTmgBFGKcKUD8qMUANxRTqKQGiFwAc8evrjP9Ka
+eDjv/n/69KzjJ5HP+f8AH86jznmkMVF3Hn6f5/SnHIHfkccfjTokaYsIkaTahZtozhe5NIfm
+JHrz0FF0BC/eoyOelTEZxTCntTER4pMZqytvu01bzfwbgwbMei5zmmpBJLBcTRpujtwDKc9A
+en8qnnja9yuVlU9cVIq5+tSNbyRRQSOoCzp5iHIOV9aFGRVJpq6Fa25VuDsjPNSwJhEBqG75
+XjirUWDGGp9BD+g/wqPGTTyQRgUYAUnHSkMbgge1GKnlg2WtnOXDfaUZgNuNuDj8aixgUoyU
+ldA01oyN6jA5qRuafHbmTT57zzMCGVYimOuRnOabajuCTexXPf8ApTSOKk25+lBXNUIjVe/e
+nkfWnbcCjHNADcUgFOIopANAxRT6KYGrKYYdE1WJfPaWPUBCrErgnOF/D196bf2dlBb6qIZ7
+tp9P8tZNwUKxY8lf1/LvVaa6SSx1HaCJ5r9bmNCvVQc9elXL+fT54Naa2uXkm1AROsbQsuzB
+5GehNecvaJ9d/wDL/gnV7jX9eZZvFhl1EeTLdwmLSPOJDAblA4Bx175qvbWdvJFa27Szi9ur
+VrmIADywAMgHvkig3du15JJvO19I+yj5G/1mAMdP16UW15aoLK8klcXlnZG2Fv5ZO84IVt3Q
+DBNSvaRVlcb5G9RbG0srr+y45ZrpZtQid02Bdilcnnv0FQ2FvaT2tnJdy3CPeXRgi8oDAx1J
+z78U6wure3udAaSQhbOKRZjsJ2kg47c9R0pmmy2aWmnx3k7wvY3hmVREW3qTnqOmDVN1Unv/
+AFf/AIAkof18v+COMYj0J4wSVj1WVAT1IC4/pU+gNGi6qk/+pmMED/Ryyfzaq/2iKSxlhRyZ
+G1GS4A2kfIRwarl410vVrZmKzXAiMI2nkq2Tz0FW4SlSa6t/qSpJTv5GhJYNJeaHpszsmy0Z
+ZWHUBCc4/Ko7Wzsb2TSTby3Xk37zA+YFDps+gx2qSXWrefWdKvpCwRLdo7rCH5GYHOPXn0qO
+yudPspdDSO6aWOyknMsvksv3gcEDnisk6qjZX/q//AL9xv8AryKU9lbXllYSWE05a5uTat56
+gYbP3gB2/GpZrfT4omktprx4rW+FrcB9oYn+8uO2fWoYbpbbTdPCgvPa35uWj2nlfr0pdQns
+YrW4jsrh7j7Zfi7cmIr5Sjnbz1OfStG6t7a/1/wCPc3NHUo7Z9W1i6mF4be1eNWjgALs7ens
+BzUcmnQWsupm9lmNtZlFXyAN8hfkdeOAeaa2pW895rMcd/LaR3ksckF1Gj8FeoIGDyKEuLOU
+6pay3M8cFw0bwXEoaViUGDu781MXVStrbT9P+CU+R6/11J7OC0vLbQLS4kuUlnhmERjC4GCT
+ls+w7VTsorOWytLi8kuQbi8+yBYQpGT0JJ6DNOsr+1ivPD8jSHZZrKJj5bfLuzjj8R0zVWC4
+ij0zT4XY74NT+0OAp4Tjnpz/ADppVFor/wBN/wDABuD1f9bFlbS0t/tUl/NceRHffYo/IC7i
+39457Yx0psttJZ6TqtoDvkTUY4wcY3ZGAf1pftVjefbra5uXghbUzexSiJm3qeq4HIP19aju
+tRW4g1KRQwnmv47iFCp5VOnPQdKP3ret+n6C9xLQkvrG1t7e/W0luJLnT3jWfzAAj7+Mrjng
+8c1Jf2Fjaw6oIp7qS401YvMDBdrF8dOM461HqV5Ytb6rNZTPNPqUkTGJoipi2HcQSeDz6Vbu
+3s7mHxHcQyyGWZLdpYJIShhOcYOepPNJTqq12/6t/wAEfLB3t/W5WnsIIrq9xLKbWC1S4ifj
+Ll8bQeOmc1nDkZrQmuCfC2mxsmJpiULf3oombb+rfpVHtXVQcmm5en3GNWyegwdaD7U4dOlG
+Oa3MhO1FOAooAtqASamCAGiikNDiKbgHjv64oopABUEkEc5ppC7unf0/z6UUUAKRzj6H9agk
+4OMflRRTQMVU455oJA4FFFAhFAOfWmSxrgqRwaKKYFSH5JMHmrZkDqOPaiimwGDmh+KKKQCB
+QwpCAWxRRTAJYw6FTx2yKmm1C+u4HhnljKvt8xliCtJt6biOuKKKlwjJ3a2KUmtiN5ZZ/JWV
+gRDGIowowAo/rTWGDiiimkloiW29WAHGR3oA5PSiimAdTRRRSEz/2Q==</current>
+                </image>
+                <about>
+                    <label>9 of 10</label>
+                </about>
+            </element>
+            <element id="9">
+                <index>10</index>
+                <image>
+                    <current>/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
+Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
+MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
+CACWAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
+AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
+FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
+h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
+5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
+AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
+NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
+hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
+5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDnHiaNiroVYdjTQoxXQ39ss9szY+ZRkGsM
+LXYtTnI9vFLsqTbRt5oAiK0oWpdvtRtoAi2il2juKl29KTHagCLb7Uu32qTFG2gBmKYR3qUj
+FNPtQBGRUbCpSKaRnimBGq1KqjFKq1Io6f4UgEC0Edql24GaYaAGYox0p2KMUANx7U3bzUm3
+NGKAI9v0p2Pyp+KMUAM2/wCcUVKq5opDNW9vo/KaKJtzMMEjoKzAtKFp2BTtYQzFKB6U/HNG
+KYDMcUuPanYzTsYpARlabipsZpNtADMCmkYqUjimEUAM/Kmke1PIpCKYiIrSAVJilCngUwGo
+pzmpVWlVOKfjFIYwioyOamI4pmKEBHijBFPxShaBDAKeFpwWnAUDIiKAvNSkUqrmkAwLxRU2
+O3aigBm3FBGafg5pQuaoQ0LQVqQrgUgHNIBgUdqXbxUgXJ4FG2gCPbS49acRSHpRYCNgKYRU
+hFMxTAYRTTUn4UmKAGEU9E4z/SlVdxqZV4oAaFwKdinYoxxSAhYc4xTcVLtzTcYpgMxxRin7
+e2KUCgBoFOVe9OC08AZpAM28U8Jgc09UyeakKe1IZCF7UVLtooAgVc1KqY5qRVwOlDdKoRAQ
+SaVFzUipmpAuB0oAj20hXnrUuO1MbgUgImGKZ9KecnrTSO9MQw03FPIpAKYDCM0m3JxUh4p0
+URPJoARUwMVKFqQJxTttIZCFoYVLtxSOOOtAEBHNN/OpGFN20ANA5pQppwSnge1Ahu3pT1U9
++1KBzT1WkMVVGOnNLtz7U/H+TRikMZj2op+KKAE24FM27mqdgTSrHxVCI1j9acVxU23imMPa
+kBA5xwOahbJPNTFD6Uwp7UwIsUm2pdtBXrTEVyuT7U4JgVKEPXtSOpxgHrQBCqbpP9kVbVcL
+0xTooNox+dTMgxSY0V8c04ripFQelOKikBCF71Gy5NWtuB/9eoWxTAgKmgJUpFJjjigRHt5o
+Apx60AZNMBVGT71Mq01VOOmakHApDExRSmjFIBKKcKKAJghJqQKBg/zp4Ge4zR0A64oAjaom
+FSt6VGw546UwIiozTSPbn61JikIxQIixTCMnp+VSkfpQExTAjxgURJvYsRx2pZM8DqScfhU8
+aAKBjigB6L7Ujemak24FRkc0hgBxR1px4HvSAcUANfpUOPXNSuOabtxQBGw/CmleKlIHQ9aa
+wzTER7aVV5pwXjOKeFx25oAQDjvSmlxRikA3FKKUUoHvQAo+n5UUAZooGXcADrkfz/zmmN+G
+fpUgbA69gf8AP+f5U1l59qQEDcnr+VNxUhXiliiaW5hgQgPK4RcnjJptpK7BK5DikPHPappU
+8mSRHIzG5QkdMg4pWtp/tDW5gl85V3shXkD1x6UuZdwsyuozTyuBSgDjHQ0sgwuKoRVTLXOP
+7oq4owM1Utv9e+faroAHFDBDW9qaAeOlPxlu9S21u91dLbxFd7KzfMSBgDJ5qW1FXY0m3ZEB
+oxgUL8wDA9aU47UxELcmkI4FOPLqoxl2CjPTJNSXMD2tzLbyFTJE21tpyM0XV7BZ2uVyKaRz
+ipdvrSBaoBAMDtQBT6THFIBuOaMU7HPJoxTAbinY9aDQOlIBQPWilFFAGqIbm5ksIZrwFTYC
+43tHgRRDtgfexQlis93bRQXavBcwNNFOYyBheoI7U+K4t1ubJGniVJdG+yNJu4jkPZj2/wDr
+0tpJDaXWl2r3EDi0s5lklR/k3vyFB7153tKiVl+XqdXLB7lf7Isv9mtaXa3Ed+xVH8srtKnD
+cHnjn8qkjtIYr3TbqC+S5iOorBxGVwRyep9qi0+5itbbw27yIPs003nDPMYZsAkduDmpoo7e
+xisIPt1rKyav57mOQEKmOp/DFOdSp8Lff9f+AEYw3/roZuqgh70/9N5P/QjXVX0Sya694mBt
+tJ7aX/eCqy/+Ot+lczqQ8w3bKQwaZ2BHQgsa2V1K2j17Wka4iNvcQiSKTzBtMgj2kA+pB/Sj
+ERk1G3b/ACCk1d37mdpumpeQ6eXvUhmvN/kxGIsWVOpznj6UWunw3kNi8moJCbx5I4kMRYll
+OOoOOan0drZk0C4mvLeA2QljlSR9rZOduB6e9QWcsKQeHA80QMF1M0mWH7sF8gn0zQ6tW7Sf
+4ev/AAAUIWX9dipY6cjM891epaxC5Foh8sv5kp7cHge9XPKig0XVmncfare4WPAiztOcAA+j
+VFCkN9ZvZtd29u8Gq/a8yybQ8RPO09zTLm/hubTXJUdd0t9FLFGThnVT1A69qpzqSfzX5iUY
+JEt3Yi1guSl0s9xaGNbmFIyPLL/dwf4vSrlnaJZeJ4LY3iy3IhkEyBCBESmRz360zWLtpUvb
+qHUoJYJniaC3hVN7YIJD8bhjHrUzSWq+KRqC31s1vcRyMuJMMpKYww7c1DnUlC0n0f6eRXLF
+SuihHZRlNL+z3qzxXzGNZREV2sDg8Hnr/Km3Fkq2qy2t4l0/2z7G6rGV2yemT1Hv70afNDHZ
++GVaaNTBdStKC4HlgvwT6Ukd5Db2bymRWKa6Lny1ILNGBywHce9X7Sqnp/WrI5YBeafHb7JI
+b1LnyLxILhVjKeW+e2eo7Zqa+t4ptY1e5ursWtrbzhWlKFyWboABSXrW9tDebLy2n+3alHOo
+ifdsjDbst6elLdm31M65YLeW8Rnu0nhllkwjgcHDfrUqdS/N+P3FcsdiJtO8iXUReXaW8Vjs
+DylCwYv93gdjS3enfY31ONrlXksUjkZQmN6t1I57VJqN1aao2v263lvB5xgeGSd9qOIwA3P4
+ZFW7lVk8dS2rBmhvIPs8mOu0xg5/MCmq1W+r6X/L/gi9nDp/W5k3VsbWSKNpA7vCkrADGwsM
+7agbINT3dwLzUbm5H3XkOz/dHA/QCoT1rup35VzbnPK13YTtSD9KcQO1AqiROppcYpQKfigB
+oXiinbeaKALpjXBBQYPak8pMfdGM9PSpj9KT8KkZF5KYPyj8qaIkAICj8qn9entTW6fSgCJw
+ACMcelQBFJ6Cp5BnNNRTmmIb5Kfe2gn1xTSqn+EVM33ajAJNFgGtChAJUHHTiqk8OH3oB78V
+p4wuSarsMscCmgIoGjVegBPelZUJOFFRSxkfMn4imxykHnrTsBPtUDoKZtUsOBmpQVYcUijn
+v+NIBnlKM4A5oEasOVB+vapGHt+NC8DpQA2KYwRz272sNzbT7d8UuRgqcggipjqFz/aU+oNH
+GZ5o2jGMgR5GMr9AKgPWlIwKh0oNttblqckrDEj2xgDoKAMninjAX3pAOvStCBCP8KMdu9KR
+2/OlI49KAEFOA9+aTBx/WnCgBRRSgetFIDQIpMUUVIBjNIRzRRQMibAyaQAfr/OiimIV14pE
+TmiimAkh7CoR96iihAEiiq5hEmfUUUUwIzuiyM5xUsU2TgiiigCVhu6dKP4fxxRRQAgXLfjQ
+36CiigAAyD19OtIByc/jRRQAHmlb60UUAIPu/WnAds0UUAOHTFFFFID/2Q==</current>
+                </image>
+                <about>
+                    <label>10 of 10</label>
+                </about>
+            </element>
+        </sequence>
+        <time>Wed Dec 10 02:00:51 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/sequence/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/sequence/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/sequence/tool.xml	(revision 6168)
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>sequence</title>
+  <about>Example of a Rappture &lt;sequence&gt; object.
+
+Sequences are used to group together a series of output results.
+
+When you click the Simulate button, the input image will be resized several times to produce an animated sequence.
+  </about>
+  <command>
+    python @tool/sequence.py @driver
+  </command>
+</tool>
+<input>
+  <loader>
+    <about>
+      <label>Image</label>
+      <description>Use this to load different images.</description>
+    </about>
+    <example>*.xml</example>
+    <default>nanohub.xml</default>
+  </loader>
+  <image>
+    <about><diffs>ignore</diffs></about>
+    <resize>height=200</resize>
+  </image>
+  <integer id="nframes">
+    <about>
+      <label>Number of frames</label>
+      <description>Determines the number of frames in the output sequence.</description>
+    </about>
+    <min>2</min>
+    <max>50</max>
+    <default>10</default>
+  </integer>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/sequence/tool2.xml
===================================================================
--- /tags/1.6.0/examples/zoo/sequence/tool2.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/sequence/tool2.xml	(revision 6168)
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>sequence</title>
+  <about>Example of a Rappture &lt;sequence&gt; object.
+
+Sequences are used to group together a series of output results.
+
+When you click the Simulate button, the script will generate a sequence of plots.
+  </about>
+  <command>
+    tclsh @tool/sequence2.tcl @driver
+  </command>
+</tool>
+<input>
+  <string id="func">
+    <about>
+      <label>Function</label>
+      <description>Function to plot y=f(x), where x is the range, and A and B are some other parameters, set below.</description>
+    </about>
+    <default>A*x + 2</default>
+  </string>
+  <string id="avals">
+    <about>
+      <label>A values</label>
+      <description>List of values for parameter A in the function above.</description>
+      <diffs>ignore</diffs>
+    </about>
+    <default>0, 1, 2</default>
+  </string>
+  <string id="bvals">
+    <about>
+      <label>B values</label>
+      <description>List of values for parameter B in the function above.</description>
+      <diffs>ignore</diffs>
+    </about>
+    <default></default>
+  </string>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/string/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/string/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/string/Makefile.in	(revision 6168)
@@ -0,0 +1,39 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/string_test.py \
+		$(srcdir)/string.tcl \
+		$(srcdir)/string1.gif \
+		$(srcdir)/string2.gif \
+		$(srcdir)/tool.xml 
+
+destdir		= $(prefix)/examples/zoo/string
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/string/string.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/string/string.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/string/string.tcl	(revision 6168)
@@ -0,0 +1,26 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <string> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set title [$driver get input.(title).current]
+set indeck [$driver get input.(indeck).current]
+
+$driver put output.string(outt).about.label "Echo of title"
+$driver put output.string(outt).current $title
+$driver put output.string(outi).about.label "Echo of input"
+$driver put output.string(outi).current $indeck
+puts stderr "This is an error message."
+exit 10
+
+# save the updated XML describing the run...
+Rappture::result $driver
Index: /tags/1.6.0/examples/zoo/string/string_test.py
===================================================================
--- /tags/1.6.0/examples/zoo/string/string_test.py	(revision 6168)
+++ /tags/1.6.0/examples/zoo/string/string_test.py	(revision 6168)
@@ -0,0 +1,26 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <string> elements
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import Rappture
+import sys
+
+# open the XML file containing the run parameters
+rx = Rappture.PyXml(sys.argv[1])
+
+title = rx['input.(title).current'].value
+indeck = rx['input.(indeck).current'].value
+
+rx['output.string(outt).about.label'] = "Echo of title"
+rx['output.string(outt).current'] = title
+rx['output.string(outi).about.label'] = "Echo of input"
+rx['output.string(outi).current'] = indeck
+
+# save the updated XML describing the run...
+rx.close()
Index: /tags/1.6.0/examples/zoo/string/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/string/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/string/test/defaults.xml	(revision 6168)
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>string</title>
+        <about>Example of a Rappture &lt;string&gt; object.
+
+Strings are bits of text--single line or multiple lines.
+The description appears in a tooltip when you hover over the string control with your mouse.
+
+When you click the Simulate button, the input strings will be used to generate output strings.
+  </about>
+        <command>
+    tclsh @tool/string.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <string id="title">
+            <about>
+                <label>Title</label>
+                <description>This text will be used as the title for all plots.</description>
+            </about>
+            <default>untitled</default>
+            <current>untitled</current>
+        </string>
+        <separator/>
+        <string id="indeck">
+            <about>
+                <label>Input</label>
+                <description>This is the control file for the program.</description>
+                <hints>EXAMPLE:  .print ac vm(11) mag(i(vcc))</hints>
+            </about>
+            <size>40x10</size>
+            <default>Enter your SPICE commands
+in this area.  Right-click
+for a menu of editing options.</default>
+            <current>Enter your SPICE commands
+in this area.  Right-click
+for a menu of editing options.</current>
+        </string>
+    </input>
+    <output>
+        <string id="outt">
+            <about>
+                <label>Echo of title</label>
+            </about>
+            <current>untitled</current>
+        </string>
+        <string id="outi">
+            <about>
+                <label>Echo of input</label>
+            </about>
+            <current>Enter your SPICE commands
+in this area.  Right-click
+for a menu of editing options.</current>
+        </string>
+        <time>Wed Dec 10 02:04:11 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/string/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/string/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/string/tool.xml	(revision 6168)
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>string</title>
+  <about>Example of a Rappture &lt;string&gt; object.
+
+Strings are bits of text--single line or multiple lines.
+The description appears in a tooltip when you hover over the string control with your mouse.
+
+When you click the Simulate button, the input strings will be used to generate output strings.
+  </about>
+  <command>
+    tclsh @tool/string.tcl @driver
+  </command>
+</tool>
+<input>
+  <string id="title">
+    <about>
+      <label>Title</label>
+      <description>This text will be used as the title for all plots.</description>
+    </about>
+    <default>untitled</default>
+  </string>
+
+  <separator/>
+
+  <string id="indeck">
+    <about>
+      <label>Input</label>
+      <description>This is the control file for the program.</description>
+      <hints>EXAMPLE:  .print ac vm(11) mag(i(vcc))</hints>
+    </about>
+    <size>40x10</size>
+    <default>Enter your SPICE commands
+in this area.  Right-click
+for a menu of editing options.</default>
+  </string>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/structure/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/structure/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/structure/Makefile.in	(revision 6168)
@@ -0,0 +1,46 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/device.gif \
+		$(srcdir)/structure.tcl \
+		$(srcdir)/structure1.gif \
+		$(srcdir)/structure2.gif \
+		$(srcdir)/structure3.gif \
+		$(srcdir)/structure4.gif \
+		$(srcdir)/structure5.gif \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/structure
+
+.PHONY: all install clean distclean
+
+all: 
+	$(MAKE) -C examples all
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+	$(MAKE) -C examples install
+
+clean:
+	$(MAKE) -C examples clean
+
+distclean: 
+	$(MAKE) -C examples distclean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/structure/examples/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/structure/examples/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/structure/examples/Makefile.in	(revision 6168)
@@ -0,0 +1,40 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/fields.xml \
+		$(srcdir)/molecule.xml \
+		$(srcdir)/simple.xml \
+		$(srcdir)/image.xml \
+		$(srcdir)/params.xml
+
+
+destdir		= $(prefix)/examples/zoo/structure/examples
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/structure/examples/fields.xml
===================================================================
--- /tags/1.6.0/examples/zoo/structure/examples/fields.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/structure/examples/fields.xml	(revision 6168)
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<run>
+<about>
+  <label>Structure with Fields</label>
+  <description>This simple structure has numerical fields for doping and effective mass as a function of position throughout the structure.</description>
+</about>
+<tool>
+  <title>structure</title>
+</tool>
+<input>
+  <structure>
+    <current>
+      <units>um</units>
+      <parameters>
+        <number id="doping">
+          <about><label>Doping</label></about>
+          <units>/cm3</units>
+          <default>1.0e18/cm3</default>
+        </number>
+        <number id="emass">
+          <about><label>Effective Mass</label></about>
+          <default>0.067</default>
+        </number>
+      </parameters>
+
+      <components>
+        <box>
+          <about>
+            <label>Bulk Material</label>
+          </about>
+          <material>GaAs</material>
+          <corner>0</corner>
+          <corner>1um</corner>
+        </box>
+      </components>
+
+      <fields>
+        <field>
+          <about>
+            <label>Doping</label>
+            <color>black</color>
+            <scale>log</scale>
+          </about>
+          <units>/cm3</units>
+          <component>
+            <constant>doping</constant>
+            <domain>box0</domain>
+          </component>
+        </field>
+
+        <field>
+          <about>
+            <label>Effective Mass</label>
+            <color>blue</color>
+          </about>
+          <component>
+            <constant>emass</constant>
+            <domain>box0</domain>
+          </component>
+        </field>
+      </fields>
+    </current>
+  </structure>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/structure/examples/image.xml
===================================================================
--- /tags/1.6.0/examples/zoo/structure/examples/image.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/structure/examples/image.xml	(revision 6168)
@@ -0,0 +1,101 @@
+<?xml version="1.0"?>
+<run>
+<about>
+  <label>Structure with Image</label>
+  <description>Rappture doesn't have good support right now for 2D/3D geometries.  But you can fake that support by including a 1D box region with an icon showing the 2D/3D geometry.</description>
+</about>
+<tool>
+  <title>structure</title>
+</tool>
+<input>
+  <structure>
+    <current>
+      <parameters>
+        <number id="w">
+          <about><label>Channel Width W</label></about>
+          <units>nm</units>
+          <default>10nm</default>
+        </number>
+        <number id="l">
+          <about><label>Channel Length L</label></about>
+          <units>nm</units>
+          <default>200nm</default>
+        </number>
+      </parameters>
+
+      <components>
+        <box>
+          <about>
+            <icon>
+R0lGODlhvAB4AMZ8AAAAAAwA/w0B/w8D/xAE/xEF/xcL/xgL/xcM/xgM/xgN/xoP/yIX/yMX/yIY
+/yMY/ywi/y0i/y4i/y0j/y4j/zMp/zQq/zgu/zku/zgv/zkv/zow/z40/z82/0M5/0M6/0Q6/05F
+/09F/05G/09G/1hQ/1lR/1pR/1lS/1pS/1tT/15W/2Rc/2Vc/2Rd/2Vd/25n/29o/3Bo/29p/3Bp
+/35+fnNs/3Vu/3dw/3hx/3pz/3tz/3p0/3t0/4V//4Z//4WA/4aA/5CL/5GL/5CM/5GM/5uW/5yW
+/5uX/5yX/6Gc/6Sf/6ai/6ei/6aj/6ej/6ik/7Gt/7Kt/7Gu/7Ku/7Ov/7Sw/7Wx/7y5/725/7y6
+/726/8C9/8fF/8jF/8fG/8jG/9LQ/9PQ/9LR/9PR/93c/97c/93d/97d/+Lh/+fm/+jn/+nn/+jo
+/+no/+rp/+vq/+zr/+3s/+/u//Pz//Tz//P0//T0//X1//j4//n5//r6/////////////////yH+
+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAsAAAAALwAeAAAB/6AfIKDhIWGh4iJiouMjY6PkJGSk5SV
+lpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7ilAbu8vb6/wAYMExkfIycsMzw/QklN
+VFheZGhud5N1bGZhXVlTTUdDQD00LiYhHxcTDAjA7e6+uY3v88EMERfGJi4xPEBCSE2maJFGrc41
+N2bGeMkSxUmScOPKkQCRjoEBehh7xWOUMaMBBxM0fBBh4kWMHUH+PYs2xky1g9q8aKHCBJy4GCxS
+iKA4wQG7jhg3LgJKTxiFDCBIsuDH7EjALNLKvJRUByGZhVKYIBHiowfOE+c0RLBIlJ5QRWXfIRiG
+7xgLGf49fhRJwoTKQDEuDVJ1c+bqFioOiXSlwcIECXTqLqZ1dzbR4nZGi43QR6OHjyHOpAwkY4aN
+tb1m/NI8IgQIjxguToxA7PNxu8aIXP9aS+xDCBT7ePhoFnBLF7xt9Ea6Y9XLlihPjAz5cTr1xAtj
+FcvWCNvQ9F4fJ1wAMTk3kCFImEjZIi3vJOKhjVNpYoRIEB0zyq2uKP16gOrW7QdA4CBCsRD6xGBZ
+EUY8AxVnbggHSVVokMENFU8gsRwP5JjzAQbR6bcLfoVouNZRxpzwggwoNeMEFb5N49kkdBS3hRRN
+POTDaS+Ahdg6Gt7H4SAeDqMBCCRQtsNlAE1BHoIKPv6CnkLdNLHVjDIUdk4GY/2k34486kcbPiGc
+4MIMcWEm3pFosJGkI1UlJBOMSQgRRHMWQkeWhlgK0iMFbVFmGWZNRJFFF2ScMVUkaYrhBRY0PXRT
+YTtloI6V9tXJh4f9cWlCCwL64wyK5SV4XnEzPUFaVzG8EGdiOUqqoTC1hZBCMkMSgcQTVECFl6dU
+tRFaF3890eYPXtU4Ak8NQHqdKAAkG0qP2oX4ApjfzVqrF2JQQwdMYnAD41bAymDqORj0ZOx0yCoL
+ioYJDINUly3A9cMQRpwIVUuDLlhcFutJ6MMOM7RgwmrhMpBAqqEkC8CyWrKVz1K6zVUXFoAWdB4b
+Zf6QAcZM3wwxmAsonCPnuLKVe/C5+glzzwckeAlmEHxOi+Bnw7lRcReIMqFcVzKUExaqdBZs7ice
+PtBsly7AldIRT0wxr3mS2OGiFBEO8WbOJohwYU/1HevzyEAnPAEGIAA4Yg9HP3OXSzBDgp6hTT5J
+4bdX49gzKAYjbN9a/tmWgkn9gPeMb2GgPYkdurI9BROKelXYfI8STPfPnqyqMIAtgHmZEXWdXa+S
+ujoYaptB9ED1Tuk8ALJrItt9Hd6WFt1DtE95MUaZZzaSpmgxaqxDqebwJPeVnhgsPOSaUAqiq5jy
+kBJd01aLK6F8hWHcFKJqzK98H1A5J/DBD881J/4aHsAAns6C+a5TzUtVOyO3ywShojTGmeHc3dfd
+9d3DYDCSl+5iJi+1nUnbIxgkGoeEI34hoEgEiuW4T9jvfqsDiaVeUBmWJYFWvrmVANHEl6vgK0Zc
+gZPHGkc/B4oifAyQANhIgAKT7KApdbEVGoIDEw8miivB+lf2qpSjHvrwh77gT7Mm8yzliYlTYpDK
+Bm3nonwJ4Qc68FYKRvg7IFrxiq5BQAOGpo+VNSNpm1Hipxq0kMO1yTSlUg0IHFVFLLrxjUWZXICM
+SBfNSENQ16JKNgy1BW+AA0qpoeLp4EhIQgqRS3sTUEoKBA1qlaENS2QEesjwhQ+2aUaosVEGKP7g
+gKwV8pNw1KJ2wjZHC/4NDGQQoyTWpp7cMWd0N/IkKGdpRSH+Rx9GEwLSlNaFwG2OgxVznwFfaarn
+SKCNtEymD2mDlMmwgAY6+A76bCU40LBtNII5jb+s9jFl0iMNfNhAABSghz0sIAAb4EMavNkOvGHA
+A2IzH3geRpAV7WVmiHKCEUrDA2/ZqJvsdAcU+ICDAKhAECsIQA74AIWA/uIjeSPJ2IhEq6X9shHE
+OYOhEBUhIgCLdyPwABsHGVAY8OEKAViCGtTAhABcgQ8wcGgQJQikkvDDB7IyUKfyCL2Y4GuYigOL
+SEkoU19UgA9zIMAblKAEORRgDnywQFF5wf5M24hIGbBTGgDZwFO1ycyGuQtdhQ5TuoFNtRcCiAMf
+aMCHFJSADzbggxwEcNb9KOwYuWHGrKKQomoSig1k/CBp3jQDUwGMqHUNQBX44IY9KAABeYADH6yQ
+WNroj4gyMOIRmKDVMagyZrv64FaCsANyTFGB20vsQvnAhV1gQRA6qGz+jNHCTIEnaQfyq1fT06Qj
+FGFj/+RhYnfBAdju4gaC6IBshxiguOiSnkiqoXqcIKGPpoZxyJzqAAxSgV1AgA94IEBiEyA0Loko
+syyb5lYjuYg7FA4r1A0hOf7JSZIO976H5A5uzPePGBLkouxzAxr4eMPB1MhqGqjvfRcMGf57SKaU
+QziCE/wUFTOxqHOHWs8lT7M4dFCgAbJk8H2z0zp++EPCAgHgGtiriPb10QmkQaOpuIk1Edt4F6zC
+R5C+1A/eTIte61vE7cCAhSjYzE3BOgGNs3vjum5pf8/UwWWQVitAmYGGq8yGDREHEZBeSMFNZnCO
+a1q0ZagEiS6xQw15BaEjuAc+Ossez8I8YraQksdAIALm7AJAAAsZIdn6i5NK4xXsXYACTKazTFn1
+YNexDCDNYxr0yChofdFIjRWxb1lG8b3IlWyL2xFBIpcRYbN1KsiKQI/0BD1YbZ6qNSXsxAM9jb+h
+oWApZNOlTgNn4VUCeno1cY/oOAYudf6YlXv1I94mPNQACYiEJLmhqMuoweJELMk4UXDScpJsNUfB
+Gtmc8F6ni1eyyYlIkRHm7JF0O0CEKEQL2zpgzk5AVsRqTdbiHjcmVuUACWwHr5m9zKZsJShUJ+J2
+XcDYhuNTtQtF4NuR2prqpiNKyeAGLgL/G0GwHLPATkGfGht2w72taaKkjmS1/pEIzk1qp2g1lZA8
+SGBpggRhz/ewiV7MySFI8UqhrIuk3mtun7fbMXxB0EnwKJwOM9IG1m/ishGfChd2khPHLgwS87XH
+Qfgm1DRcA3OO+OP0Te5a5+lLQ/KfFIZucES0D1+Ic9PusIeh1N7bgcpedrmZO7bvGP7hCVKIhoqq
+7favZpjrPGB4t3tybLHjneyZoFSzUuaCyvgD0uRJItHbzdt8bTtKp8p5WnZO69XJcUS6aRmZNs/B
+0HwBY9UVnWFvVHKgkL4TzMKHCHBTGSL5VwwF/1R68ikh0/jTY2Np/N05xO+vWTV5U67LFlApaXuZ
+IdCHs0kP+qXDgIX4MaryWqhLYnm/8RIvve5ptmZyZEzCLdNOxw8K/Y2y2vatSGzHFpt9RWgZbPMD
+YAdxyyd/5XYy3UEDZiZ0nUJ4h4ANCZFwbaYxFOIvEyEWnRR/1XEn+iNRyrAbFxRpbqBmvjZ8GoZD
+XpYOAkguddIjEXBZuBQmzsBLnP6RfvaCBtIDdzIiOlIiZ6K3aSvoNc1EGcrTDJxlUQxoCGnyboky
+ITQwYw7Xgyb3g7XWTCwXLbjlBWFwBjFnTTTTZvzEcPMxP+BGgHcDEiKBWZbhY38CZPr3F0dGWv7E
+OA/wfTonhddhMi64D68jBIwkeGkmc9ekbdalQ/SBgbDBgv9xVblGZRlUfUqSDTfoDWdEIYVRb1Bo
+e3ZIcT5iG7jBDylRJBDzMthiHFkxWv30AihgibXXEeFndiHCYx7IBHz1X0dYCE4zYGWUMaZRWDrU
+dLGWgeLnATvmiX5jR57Feo3QIumhBdm2T90ye744hsCIP3jCHXuDgEAwFzo1g/5t14AIcYOAoRzM
+0YSaJAEM9IuSko7qaAo1sI6r0I51Ao/uiAryuCP1OI+lcI/4oY/4KAr8CBv/2I+fEJBnQZACyQn1
+CHmTkHeX8D0GeZCaII8MSQkTWQk/85AQiQnwOGuYUJEUaS4YmZGW0I75VpIm+TPKdpIqOTx8EJIi
+SQk1sJIy+UApOZMr6ZIvKQkkaZMqOQg1yZMl2ZI5CQob6ZGRYJSSYD84OZSPIJEKmZRPuZBcs5RM
+2QgJGW4smQkOWZWdQJW04JVcmQhgKQtjGZaGUJawgJZmOQhq6QptuZZvuZZyOZd0WZd2eZd4mZd6
+uZd82Zd++ZeAGZiCSQiBAAA7
+            </icon>
+          </about>
+          <corner>0</corner>
+          <corner>1</corner>
+        </box>
+      </components>
+    </current>
+  </structure>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/structure/examples/molecule.xml
===================================================================
--- /tags/1.6.0/examples/zoo/structure/examples/molecule.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/structure/examples/molecule.xml	(revision 6168)
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<run>
+<about>
+  <label>Molecular Structure</label>
+  <description>This structure has a molecule with a collection of atoms.</description>
+</about>
+<tool>
+  <title>structure</title>
+</tool>
+<input>
+  <structure>
+    <current>
+      <components>
+        <molecule>
+          <about><emblems>on</emblems></about>
+          <formula>pdt</formula>
+          <atom id="0">
+            <symbol>H</symbol>
+            <xyz>-1.24935 -3.41562 0.0</xyz>
+          </atom>
+          <atom id="1">
+            <symbol>S</symbol>
+            <xyz>0.08092 -3.19426 0.0</xyz>
+          </atom>
+          <atom id="2">
+            <symbol>C</symbol>
+            <xyz>0.00055 -1.40789 0.0</xyz>
+          </atom>
+          <atom id="3">
+            <symbol>H</symbol>
+            <xyz>2.15434 -1.22709 0.0</xyz>
+          </atom>
+          <atom id="4">
+            <symbol>H</symbol>
+            <xyz>-2.1543 -1.22326 0.0</xyz>
+          </atom>
+          <atom id="5">
+            <symbol>C</symbol>
+            <xyz>1.20684 -0.69505 0.0</xyz>
+          </atom>
+          <atom id="6">
+            <symbol>C</symbol>
+            <xyz>-1.20381 -0.69647 0.0</xyz>
+          </atom>
+          <atom id="7">
+            <symbol>C</symbol>
+            <xyz>-1.20385 0.69776 0.0</xyz>
+          </atom>
+          <atom id="8">
+            <symbol>C</symbol>
+            <xyz>1.20676 0.69618 0.0</xyz>
+          </atom>
+          <atom id="9">
+            <symbol>H</symbol>
+            <xyz>-2.15434 1.22458 0.0</xyz>
+          </atom>
+          <atom id="10">
+            <symbol>H</symbol>
+            <xyz>2.15422 1.22819 0.0</xyz>
+          </atom>
+          <atom id="11">
+            <symbol>C</symbol>
+            <xyz>0.00054 1.40909 0.0</xyz>
+          </atom>
+          <atom id="12">
+            <symbol>S</symbol>
+            <xyz>0.08111 3.19538 0.0</xyz>
+          </atom>
+          <atom id="13">
+            <symbol>H</symbol>
+            <xyz>-1.24934 3.41562 0.0</xyz>
+          </atom>
+        </molecule>
+      </components>
+    </current>
+  </structure>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/structure/examples/params.xml
===================================================================
--- /tags/1.6.0/examples/zoo/structure/examples/params.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/structure/examples/params.xml	(revision 6168)
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<run>
+<about>
+  <label>Structure with Parameters</label>
+  <description>This simple structure has a few parameters that are specific to the structure.</description>
+</about>
+<tool>
+  <title>structure</title>
+</tool>
+<input>
+  <structure>
+    <current>
+      <parameters>
+        <number>
+          <about><label>Anode:</label></about>
+          <units>V</units>
+          <default>0V</default>
+        </number>
+        <number>
+          <about><label>Cathode:</label></about>
+          <units>V</units>
+          <default>1V</default>
+        </number>
+      </parameters>
+
+      <components>
+        <box>
+          <about>
+            <label>P-type</label>
+            <color>purple</color>
+          </about>
+          <corner>0</corner>
+          <corner>0.1um</corner>
+        </box>
+        <box>
+          <about>
+            <label>N-type</label>
+            <color>green</color>
+          </about>
+          <corner>0.1um</corner>
+          <corner>0.2um</corner>
+        </box>
+      </components>
+    </current>
+  </structure>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/structure/examples/simple.xml
===================================================================
--- /tags/1.6.0/examples/zoo/structure/examples/simple.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/structure/examples/simple.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+<about>
+  <label>Simple Structure</label>
+  <description>This simple 1D structure has three &lt;box&gt; elements representing material layers in a semiconductor heterostructure device.</description>
+</about>
+<tool>
+  <title>structure</title>
+</tool>
+<input>
+  <structure>
+    <current>
+      <components>
+        <box>
+          <about>
+            <label>GaAs</label>
+            <color>green</color>
+          </about>
+          <corner>0</corner>
+          <corner>100A</corner>
+        </box>
+        <box>
+          <about>
+            <label>AlGaAs</label>
+            <color>white</color>
+          </about>
+          <corner>100A</corner>
+          <corner>110A</corner>
+        </box>
+        <box>
+          <about>
+            <label>GaAs</label>
+            <color>green</color>
+          </about>
+          <corner>110A</corner>
+          <corner>200A</corner>
+        </box>
+      </components>
+    </current>
+  </structure>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/structure/structure.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/structure/structure.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/structure/structure.tcl	(revision 6168)
@@ -0,0 +1,24 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <structure> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set name [$driver get input.loader.current]
+
+$driver put output.log "Structure: $name"
+
+$driver copy output.structure from input.structure.current
+$driver put output.structure.about.label "Structure"
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/structure/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/structure/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/structure/test/defaults.xml	(revision 6168)
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>structure</title>
+        <about>Example of a Rappture &lt;structure&gt; object.
+
+A structure is a collection of geometrical objects describing a physical structure.  A structure can have embedded parameters (such as the size of certain parts of the structure) along with fields that represent numerical quantities defined within the structure.
+
+This example uses a loader element to load various structure definitions from example files.  You can see the real action here by selecting various examples from the loader.  The simulate button doesn't do very much.  It just copies the input parameters in the structure (if there are any) to the output log.
+  </about>
+        <command>
+    tclsh @tool/structure.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <loader>
+            <about>
+                <label>Example</label>
+                <description>Use this to load examples.</description>
+            </about>
+            <example>*.xml</example>
+            <default>Simple Structure</default>
+            <current>Simple Structure</current>
+            <file>simple.xml</file>
+        </loader>
+        <structure>
+            <!-- examples get loaded in here by loader -->
+            <current>
+                <components>
+                    <box>
+                        <about>
+                            <label>GaAs</label>
+                            <color>green</color>
+                        </about>
+                        <corner>0</corner>
+                        <corner>100A</corner>
+                    </box>
+                    <box>
+                        <about>
+                            <label>AlGaAs</label>
+                            <color>white</color>
+                        </about>
+                        <corner>100A</corner>
+                        <corner>110A</corner>
+                    </box>
+                    <box>
+                        <about>
+                            <label>GaAs</label>
+                            <color>green</color>
+                        </about>
+                        <corner>110A</corner>
+                        <corner>200A</corner>
+                    </box>
+                </components>
+            </current>
+        </structure>
+    </input>
+    <output>
+        <log>Structure: Simple Structure</log>
+        <structure>
+            <components>
+                <box>
+                    <about>
+                        <label>GaAs</label>
+                        <color>green</color>
+                    </about>
+                    <corner>0</corner>
+                    <corner>100A</corner>
+                </box>
+                <box>
+                    <about>
+                        <label>AlGaAs</label>
+                        <color>white</color>
+                    </about>
+                    <corner>100A</corner>
+                    <corner>110A</corner>
+                </box>
+                <box>
+                    <about>
+                        <label>GaAs</label>
+                        <color>green</color>
+                    </about>
+                    <corner>110A</corner>
+                    <corner>200A</corner>
+                </box>
+            </components>
+            <about>
+                <label>Structure</label>
+            </about>
+        </structure>
+        <time>Wed Dec 10 02:37:28 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/structure/test/molecule.xml
===================================================================
--- /tags/1.6.0/examples/zoo/structure/test/molecule.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/structure/test/molecule.xml	(revision 6168)
@@ -0,0 +1,180 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>structure</title>
+        <about>Example of a Rappture &lt;structure&gt; object.
+
+A structure is a collection of geometrical objects describing a physical structure.  A structure can have embedded parameters (such as the size of certain parts of the structure) along with fields that represent numerical quantities defined within the structure.
+
+This example uses a loader element to load various structure definitions from example files.  You can see the real action here by selecting various examples from the loader.  The simulate button doesn't do very much.  It just copies the input parameters in the structure (if there are any) to the output log.
+  </about>
+        <command>
+    tclsh @tool/structure.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <loader>
+            <about>
+                <label>Example</label>
+                <description>Use this to load examples.</description>
+            </about>
+            <example>*.xml</example>
+            <default>Simple Structure</default>
+            <current>Molecular Structure</current>
+            <file>molecule.xml</file>
+        </loader>
+        <structure>
+            <!-- examples get loaded in here by loader -->
+            <current>
+                <components>
+                    <molecule>
+                        <about>
+                            <emblems>on</emblems>
+                        </about>
+                        <formula>pdt</formula>
+                        <atom id="0">
+                            <symbol>H</symbol>
+                            <xyz>-1.24935 -3.41562 0.0</xyz>
+                        </atom>
+                        <atom id="1">
+                            <symbol>S</symbol>
+                            <xyz>0.08092 -3.19426 0.0</xyz>
+                        </atom>
+                        <atom id="2">
+                            <symbol>C</symbol>
+                            <xyz>0.00055 -1.40789 0.0</xyz>
+                        </atom>
+                        <atom id="3">
+                            <symbol>H</symbol>
+                            <xyz>2.15434 -1.22709 0.0</xyz>
+                        </atom>
+                        <atom id="4">
+                            <symbol>H</symbol>
+                            <xyz>-2.1543 -1.22326 0.0</xyz>
+                        </atom>
+                        <atom id="5">
+                            <symbol>C</symbol>
+                            <xyz>1.20684 -0.69505 0.0</xyz>
+                        </atom>
+                        <atom id="6">
+                            <symbol>C</symbol>
+                            <xyz>-1.20381 -0.69647 0.0</xyz>
+                        </atom>
+                        <atom id="7">
+                            <symbol>C</symbol>
+                            <xyz>-1.20385 0.69776 0.0</xyz>
+                        </atom>
+                        <atom id="8">
+                            <symbol>C</symbol>
+                            <xyz>1.20676 0.69618 0.0</xyz>
+                        </atom>
+                        <atom id="9">
+                            <symbol>H</symbol>
+                            <xyz>-2.15434 1.22458 0.0</xyz>
+                        </atom>
+                        <atom id="10">
+                            <symbol>H</symbol>
+                            <xyz>2.15422 1.22819 0.0</xyz>
+                        </atom>
+                        <atom id="11">
+                            <symbol>C</symbol>
+                            <xyz>0.00054 1.40909 0.0</xyz>
+                        </atom>
+                        <atom id="12">
+                            <symbol>S</symbol>
+                            <xyz>0.08111 3.19538 0.0</xyz>
+                        </atom>
+                        <atom id="13">
+                            <symbol>H</symbol>
+                            <xyz>-1.24934 3.41562 0.0</xyz>
+                        </atom>
+                    </molecule>
+                </components>
+            </current>
+        </structure>
+    </input>
+    <output>
+        <log>Structure: Molecular Structure</log>
+        <structure>
+            <components>
+                <molecule>
+                    <about>
+                        <emblems>on</emblems>
+                    </about>
+                    <formula>pdt</formula>
+                    <atom id="0">
+                        <symbol>H</symbol>
+                        <xyz>-1.24935 -3.41562 0.0</xyz>
+                    </atom>
+                    <atom id="1">
+                        <symbol>S</symbol>
+                        <xyz>0.08092 -3.19426 0.0</xyz>
+                    </atom>
+                    <atom id="2">
+                        <symbol>C</symbol>
+                        <xyz>0.00055 -1.40789 0.0</xyz>
+                    </atom>
+                    <atom id="3">
+                        <symbol>H</symbol>
+                        <xyz>2.15434 -1.22709 0.0</xyz>
+                    </atom>
+                    <atom id="4">
+                        <symbol>H</symbol>
+                        <xyz>-2.1543 -1.22326 0.0</xyz>
+                    </atom>
+                    <atom id="5">
+                        <symbol>C</symbol>
+                        <xyz>1.20684 -0.69505 0.0</xyz>
+                    </atom>
+                    <atom id="6">
+                        <symbol>C</symbol>
+                        <xyz>-1.20381 -0.69647 0.0</xyz>
+                    </atom>
+                    <atom id="7">
+                        <symbol>C</symbol>
+                        <xyz>-1.20385 0.69776 0.0</xyz>
+                    </atom>
+                    <atom id="8">
+                        <symbol>C</symbol>
+                        <xyz>1.20676 0.69618 0.0</xyz>
+                    </atom>
+                    <atom id="9">
+                        <symbol>H</symbol>
+                        <xyz>-2.15434 1.22458 0.0</xyz>
+                    </atom>
+                    <atom id="10">
+                        <symbol>H</symbol>
+                        <xyz>2.15422 1.22819 0.0</xyz>
+                    </atom>
+                    <atom id="11">
+                        <symbol>C</symbol>
+                        <xyz>0.00054 1.40909 0.0</xyz>
+                    </atom>
+                    <atom id="12">
+                        <symbol>S</symbol>
+                        <xyz>0.08111 3.19538 0.0</xyz>
+                    </atom>
+                    <atom id="13">
+                        <symbol>H</symbol>
+                        <xyz>-1.24934 3.41562 0.0</xyz>
+                    </atom>
+                </molecule>
+            </components>
+            <about>
+                <label>Structure</label>
+            </about>
+        </structure>
+        <time>Wed Dec 10 02:37:37 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/structure/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/structure/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/structure/tool.xml	(revision 6168)
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>structure</title>
+  <about>Example of a Rappture &lt;structure&gt; object.
+
+A structure is a collection of geometrical objects describing a physical structure.  A structure can have embedded parameters (such as the size of certain parts of the structure) along with fields that represent numerical quantities defined within the structure.
+
+This example uses a loader element to load various structure definitions from example files.  You can see the real action here by selecting various examples from the loader.  The simulate button doesn't do very much.  It just copies the input parameters in the structure (if there are any) to the output log.
+  </about>
+  <command>
+    tclsh @tool/structure.tcl @driver
+  </command>
+</tool>
+<input>
+  <loader>
+    <about>
+      <label>Example</label>
+      <description>Use this to load examples.</description>
+    </about>
+    <example>*.xml</example>
+    <default>simple.xml</default>
+  </loader>
+
+  <structure>
+    <!-- examples get loaded in here by loader -->
+  </structure>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/table/Makefile.in
===================================================================
--- /tags/1.6.0/examples/zoo/table/Makefile.in	(revision 6168)
+++ /tags/1.6.0/examples/zoo/table/Makefile.in	(revision 6168)
@@ -0,0 +1,37 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+FILES		= \
+		$(srcdir)/energies.tcl \
+		$(srcdir)/energies.gif \
+		$(srcdir)/tool.xml
+
+destdir		= $(prefix)/examples/zoo/table
+
+.PHONY: all install clean distclean
+
+all: 
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/examples/zoo/table/energies.tcl
===================================================================
--- /tags/1.6.0/examples/zoo/table/energies.tcl	(revision 6168)
+++ /tags/1.6.0/examples/zoo/table/energies.tcl	(revision 6168)
@@ -0,0 +1,39 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture <energies> elements
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set L [$driver get input.number(L).current]
+set L [Rappture::Units::convert $L -to "m" -units off]
+
+set emass [$driver get input.number(emass).current]
+set m [expr {$emass*9.11e-31}]  ;# kg
+
+set h 4.13566743e-15  ;# in eVs
+set J2eV 6.241506363e17
+
+set nhomo [expr {round(rand()*19+1)}]
+
+$driver put output.table.about.label "Energy Levels"
+$driver put output.table.column(labels).label "Name"
+$driver put output.table.column(energies).label "Energy"
+$driver put output.table.column(energies).units "eV"
+for {set n 1} {$n <= 20} {incr n} {
+    set E [expr {$n*$n*$h*$h/(8.0*$m*$L*$L*$J2eV)}]  ;# in eV
+    set label [expr {($n == $nhomo) ? "HOMO" : $n}]
+
+    $driver put -append yes output.table.data [format "%s %.3g\n" $label $E]
+}
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/examples/zoo/table/test/defaults.xml
===================================================================
--- /tags/1.6.0/examples/zoo/table/test/defaults.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/table/test/defaults.xml	(revision 6168)
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>table</title>
+        <about>Example of a Rappture &lt;table&gt; object.
+
+Some simulators produce a list of energies, which can be stored in a &lt;table&gt; and displayed as discrete energy levels by Rappture.  When Rappture sees a table with an energy column, it uses the built-in energy viewer.
+
+When you click the Simulate button, the simulator will generate a series of energies for the particle in a box problem.
+  </about>
+        <command>
+    tclsh @tool/energies.tcl @driver
+  </command>
+        <name>Workspace (800x600)</name>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="L">
+            <about>
+                <label>Box size</label>
+                <description>Size of the 1D quantum well containing an electron</description>
+            </about>
+            <units>nm</units>
+            <min>0.1</min>
+            <default>10</default>
+            <current>10nm</current>
+        </number>
+        <number id="emass">
+            <about>
+                <label>Effective mass</label>
+                <description>Mass of the electron in a crystal, relative to the normal electron mass m0.  The value 1 corresponds to the usual electron mass in free space (crystal has no effect on the mass).</description>
+            </about>
+            <min>1e-5</min>
+            <default>0.067</default>
+            <current>0.067</current>
+        </number>
+    </input>
+    <output>
+        <table>
+            <about>
+                <label>Energy Levels</label>
+            </about>
+            <column id="labels">
+                <label>Name</label>
+            </column>
+            <column id="energies">
+                <label>Energy</label>
+                <units>eV</units>
+            </column>
+            <data>1 0.561
+2 2.24
+3 5.05
+4 8.98
+5 14
+6 20.2
+7 27.5
+8 35.9
+9 45.5
+10 56.1
+11 67.9
+12 80.8
+13 94.8
+14 110
+15 126
+16 144
+HOMO 162
+18 182
+19 203
+20 224
+</data>
+        </table>
+        <time>Wed Dec 10 02:41:02 EST 2008</time>
+        <status>ok</status>
+        <user>dkearney</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/examples/zoo/table/tool.xml
===================================================================
--- /tags/1.6.0/examples/zoo/table/tool.xml	(revision 6168)
+++ /tags/1.6.0/examples/zoo/table/tool.xml	(revision 6168)
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>table</title>
+  <about>Example of a Rappture &lt;table&gt; object.
+
+Some simulators produce a list of energies, which can be stored in a &lt;table&gt; and displayed as discrete energy levels by Rappture.  When Rappture sees a table with an energy column, it uses the built-in energy viewer.
+
+When you click the Simulate button, the simulator will generate a series of energies for the particle in a box problem.
+  </about>
+  <command>
+    tclsh @tool/energies.tcl @driver
+  </command>
+</tool>
+<input>
+  <number id="L">
+    <about>
+      <label>Box size</label>
+      <description>Size of the 1D quantum well containing an electron</description>
+    </about>
+    <units>nm</units>
+    <min>0.1</min>
+    <default>10</default>
+  </number>
+  <number id="emass">
+    <about>
+      <label>Effective mass</label>
+      <description>Mass of the electron in a crystal, relative to the normal electron mass m0.  The value 1 corresponds to the usual electron mass in free space (crystal has no effect on the mass).</description>
+    </about>
+    <min>1e-5</min>
+    <default>0.067</default>
+  </number>
+</input>
+</run>
Index: /tags/1.6.0/examples/zoo/unirect2d/README
===================================================================
--- /tags/1.6.0/examples/zoo/unirect2d/README	(revision 6168)
+++ /tags/1.6.0/examples/zoo/unirect2d/README	(revision 6168)
@@ -0,0 +1,55 @@
+
+The <unirect2d> element is deprecated in favor of the <mesh>.
+See the mesh example under examples/zoo/mesh.
+
+If you already are using a <unirect2d> element, you should convert it to use
+the <mesh> element.  For example,
+
+  <unirect2d>
+    <about>
+        <label>unirect2d mesh</label>
+    </about>
+    <dim>2</dim>
+    <units>m</units>
+    <hide>yes</hide>
+    <xaxis>
+        <min>0.0</min>
+        <max>1.0</max>
+        <numpoints>50</numpoints>
+    </xaxis>
+    <yaxis>
+        <min>0.0</min>
+        <max>1.0</max>
+        <numpoints>50</numpoints>
+    </yaxis>
+  </unirect2d>
+
+should be converted to 
+
+  <mesh>
+    <about>
+        <label>uniform grid mesh</label>
+    </about>
+    <dim>2</dim>
+    <units>m</units>
+    <hide>yes</hide>
+    <grid>
+        <xaxis>
+            <min>0.0</min>
+            <max>1.0</max>
+            <numpoints>50</numpoints>
+        </xaxis>
+        <yaxis>
+            <min>0.0</min>
+            <max>1.0</max>
+            <numpoints>50</numpoints>
+        </yaxis>
+    </grid>
+  </mesh>
+
+See the mesh documentation for more information.
+
+  https://nanohub.org/infrastructure/rappture/wiki/rp_xml_ele_mesh
+
+
+
Index: /tags/1.6.0/gui/Makefile.in
===================================================================
--- /tags/1.6.0/gui/Makefile.in	(revision 6168)
+++ /tags/1.6.0/gui/Makefile.in	(revision 6168)
@@ -0,0 +1,60 @@
+
+srcdir		= @srcdir@
+prefix		= @prefix@
+exec_prefix	= @exec_prefix@
+bindir		= @bindir@
+libdir		= @libdir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+mandir		= @mandir@
+includedir	= @includedir@
+
+SHELL		= @SHELL@
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+TCLSH		= @TCLSH@
+
+PACKAGE_VERSION = @PACKAGE_VERSION@
+
+version 	= $(PACKAGE_VERSION)
+name 		= RapptureGUI$(version)
+
+destdir		= $(libdir)/$(name)
+
+FILES		= \
+		pkgIndex.tcl 
+
+SUBDIRS		= src scripts apps 
+
+.PHONY:	all install test clean distclean $(SUBDIRS)
+
+all:
+	for i in $(SUBDIRS) ; do \
+	  $(MAKE) -C $$i all || exit 1 ;\
+	done
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES); do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done 
+	for i in $(SUBDIRS) ; do \
+	  $(MAKE) -C $$i install || exit 1 ;\
+	done
+
+test: 
+	#$(TCLSH) `@CYGPATH@ $(srcdir)/tests/all.tcl` $(TESTFLAGS)
+
+clean:
+	for i in $(SUBDIRS) ; do \
+	  $(MAKE) -C $$i clean ;\
+	done
+
+distclean: 
+	for i in $(SUBDIRS) ; do \
+	  $(MAKE) -C $$i distclean ;\
+	done
+	$(RM) Makefile pkgIndex.tcl 
+	$(RM) -r config.cache config.log config.status autom4te.cache
Index: /tags/1.6.0/gui/aclocal.m4
===================================================================
--- /tags/1.6.0/gui/aclocal.m4	(revision 6168)
+++ /tags/1.6.0/gui/aclocal.m4	(revision 6168)
@@ -0,0 +1,1 @@
+builtin(include,./cf/tcl.m4)
Index: /tags/1.6.0/gui/apps/Makefile.in
===================================================================
--- /tags/1.6.0/gui/apps/Makefile.in	(revision 6168)
+++ /tags/1.6.0/gui/apps/Makefile.in	(revision 6168)
@@ -0,0 +1,68 @@
+
+SHELL		= @SHELL@
+TCLSH		= @TCLSH@
+srcdir		= @srcdir@
+prefix		= @prefix@
+exec_prefix	= @exec_prefix@
+bindir		= @bindir@
+libdir		= @libdir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+mandir		= @mandir@
+includedir	= @includedir@
+
+pkgdatadir	= $(datadir)/$(PKG_DIR)
+pkglibdir	= $(libdir)/$(PKG_DIR)
+pkgincludedir	= $(includedir)/$(PKG_DIR)
+top_builddir	= .
+
+MKDIR_P		= @MKDIR_P@
+INSTALL		= @INSTALL@
+
+SCRIPTS	= \
+		about \
+		copy_rappture_examples \
+		encodedata \
+		$(srcdir)/execute.tcl \
+		$(srcdir)/launcher.tcl \
+		$(srcdir)/grabdata \
+		$(srcdir)/nanovis-test \
+		$(srcdir)/vtkglyphs-test \
+		$(srcdir)/vtkheightmap-test \
+		$(srcdir)/vtkisosurface-test \
+		$(srcdir)/vtkstreamlines-test \
+		$(srcdir)/vtkviewer-test \
+		$(srcdir)/vtkvolume-test \
+		$(srcdir)/flowvis-test \
+		$(srcdir)/rpdiff \
+		$(srcdir)/rptimes \
+		rappture \
+		rappture.env \
+		rappture-csh.env \
+		rappture.use \
+		rerun \
+		simsim  \
+		xmldiff
+
+WINDOWS_SCRIPTS =  \
+		$(srcdir)/rappture.cmd \
+		$(srcdir)/driver.cmd \
+		$(srcdir)/rerun.cmd
+
+.PHONY: all install clean distclean
+
+all:
+
+install: all
+	$(MKDIR_P) -m 0755 $(bindir)
+	@for i in $(SCRIPTS); do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 0555 $$i $(bindir) ; \
+	done
+
+clean:
+
+distclean: clean
+	$(RM) about copy_rappture_examples encodedata rappture.env rappture-csh.env rappture rappture.use rerun simsim xmldiff
+	$(RM) Makefile *~
+
Index: /tags/1.6.0/gui/apps/about.in
===================================================================
--- /tags/1.6.0/gui/apps/about.in	(revision 6168)
+++ /tags/1.6.0/gui/apps/about.in	(revision 6168)
@@ -0,0 +1,95 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ----------------------------------------------------------------------
+#  ABOUT PANEL
+#
+#  This little script lets developers create an "about" page for
+#  the first page of a nanoWhim application.  It's sort of like a
+#  web browser, but it shows only one page and handles the links
+#  so they pop things up on the user's desktop
+#
+#  RUN AS FOLLOWS:
+#    about <file.html>
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+dir=`dirname $0` ; \
+. $dir/rappture.env ; \
+exec wish "$0" "$@"
+# ----------------------------------------------------------------------
+# wish executes everything from here on...
+
+package require http
+package require Rappture
+package require RapptureGUI
+
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-18-*
+
+# install a better bug handler
+Rappture::bugreport::install
+
+proc escapeChars {info} {
+    regsub -all & $info \001 info
+    regsub -all \" $info {\&quot;} info
+    regsub -all < $info {\&lt;} info
+    regsub -all > $info {\&gt;} info
+    regsub -all \001 $info {\&amp;} info
+    return $info
+}
+
+#
+# Process command line args to get the name of the HTML file...
+#
+if {[llength $argv] != 1} {
+    puts stderr "usage: about.tcl <file.html>"
+    exit 1
+}
+set url [lindex $argv 0]
+
+Rappture::Scroller .scroller -xscrollmode auto -yscrollmode auto
+pack .scroller -expand yes -fill both
+
+Rappture::HTMLviewer .scroller.html -width 640 -height 480
+.scroller contents .scroller.html
+
+switch -regexp -- $url {
+    ^https?:// {
+        if {[catch {http::geturl $url} token] == 0} {
+            set html [http::data $token]
+            http::cleanup $token
+        } else {
+            set html "<html><body><h1>Oops! Internal Error</h1><p>[escapeChars $token]</p></body></html>"
+        }
+        .scroller.html load $html
+    }
+    default {
+        if {[string range $url 0 6] == "file://"} {
+            set file [string range $url 7 end]
+        } else {
+            set file $url
+        }
+        set cmds {
+            set fid [open $file r]
+            set html [read $fid]
+            close $fid
+        }
+        if {[catch $cmds result]} {
+            set html "<html><body><h1>Oops! File Not Found</h1><p>[escapeChars $result]</p></body></html>"
+        }
+
+        # not HTML? then escape nasty characters and display it.
+        if {![regexp {<html>.*</html>} $html]} {
+            set html "<html><body><p>[escapeChars $html]</p></body></html>"
+        }
+        .scroller.html load $html -in $file
+    }
+}
Index: /tags/1.6.0/gui/apps/copy_rappture_examples.in
===================================================================
--- /tags/1.6.0/gui/apps/copy_rappture_examples.in	(revision 6168)
+++ /tags/1.6.0/gui/apps/copy_rappture_examples.in	(revision 6168)
@@ -0,0 +1,37 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+dir=`dirname $0` ; \
+. $dir/rappture.env ; \
+exec $dir/wish "$0" $*
+
+wm withdraw .
+proc RecursiveCopy { src dest } {
+   set tail [file tail $src]
+   if { [file isdirectory $src] } {
+       set subdir [file join $dest $tail]
+       file mkdir $subdir
+       foreach item [glob -nocomplain $src/*] {
+          RecursiveCopy $item $subdir
+       }
+   } else {
+       set file [file join $dest $tail]
+       file copy $src $dest
+       file attributes $file -permissions +rw
+   }
+}
+set installdir [file normalize [file dirname [info script]]]
+set examplesdir [file join [file dirname $installdir] examples]
+set dir [tk_chooseDirectory -title "Select where to create \"examples\""]
+if  { $dir != "" } {
+   file mkdir $dir
+   RecursiveCopy $examplesdir $dir
+}
+exit 0
+
Index: /tags/1.6.0/gui/apps/driver.cmd
===================================================================
--- /tags/1.6.0/gui/apps/driver.cmd	(revision 6168)
+++ /tags/1.6.0/gui/apps/driver.cmd	(revision 6168)
@@ -0,0 +1,5 @@
+@REM %~dp0     = extract directory and path of argument 0 (command executed)
+@REM %M:~1,-1  = extract every between first and last charcter (the quotes)
+@REM These constructs require extended command options (Windows 2000 or later)
+@set M="%~dp0"
+@wish %M:~1,-1%driver %*
Index: /tags/1.6.0/gui/apps/encodedata.in
===================================================================
--- /tags/1.6.0/gui/apps/encodedata.in	(revision 6168)
+++ /tags/1.6.0/gui/apps/encodedata.in	(revision 6168)
@@ -0,0 +1,102 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ======================================================================
+#  AUTHOR:  Derrick S. Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+exec wish "$0" "$@"
+
+package require Rappture
+
+proc printHelp {} {
+    set help {
+encodedata [OPTIONS] <infile> <outfile>
+
+simulator simulator - simulate simulation
+
+OPTIONS:
+ -as z|b64|zb64      - how to encode the file
+ -no-header          - don't include the header
+}
+    puts $help
+    exit 0
+}
+
+
+proc parseOptions {listVar returnVar} {
+    upvar $listVar argv
+    upvar $returnVar params
+
+    set argc [llength $argv]
+    for {set i 0} {$i < $argc} {incr i} {
+        set opt [lindex $argv $i]
+        if {("-as" == $opt)} {
+            if {[expr {$i+1}] < $argc} {
+                incr i
+                set params(-as) [lindex $argv $i]
+            } else {
+                printHelp
+            }
+        } elseif {("-no-header" == $opt)} {
+            set params(-no-header) "-no-header"
+        } else {
+            # place all extra params in the params array
+            lappend params(oParams) $opt
+        }
+    }
+}
+
+proc main {argv} {
+    array set params {
+        -as "zb64"
+        -no-header ""
+        oParams {}
+    }
+
+    parseOptions argv params
+
+    if {[llength $params(oParams)] < 2} {
+        printHelp
+        return
+    }
+    set infile [lindex $params(oParams) 0]
+    set outfile [lindex $params(oParams) 1]
+
+    if {[catch {
+            set fid [open $infile r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+         }] != 0 } {
+        puts "could not open $infile for reading"
+        return
+    }
+
+    puts "as = $params(-as)"
+    puts "header = $params(-no-header)"
+
+    # FIXME: i hate this
+    if {"" != $params(-no-header)} {
+        set encdata [Rappture::encoding::encode -as $params(-as) $params(-no-header) -- $info]
+    } else {
+        set encdata [Rappture::encoding::encode -as $params(-as) -- $info]
+    }
+
+    if {[catch {
+            set fid [open $outfile w]
+            fconfigure $fid -translation binary
+            puts $fid $encdata
+            close $fid
+         }] != 0 } {
+        puts "could not open $outfile for writing"
+        return
+    }
+
+}
+
+main $argv
+exit 0
Index: /tags/1.6.0/gui/apps/execute.tcl
===================================================================
--- /tags/1.6.0/gui/apps/execute.tcl	(revision 6168)
+++ /tags/1.6.0/gui/apps/execute.tcl	(revision 6168)
@@ -0,0 +1,199 @@
+#! /bin/sh
+# ----------------------------------------------------------------------
+#  RAPPTURE PROGRAM EXECUTION
+#
+#  This script implements the -execute option for Rappture.  It
+#  provides a way to run a specific Rappture simulation without
+#  invoking the Rappture GUI.  Instead, it takes a driver file with
+#  the required parameters, submits that for execution, and then
+#  returns the run.xml file.  If the -tool file is specified, then
+#  it double-checks the driver against the tool to make sure that
+#  the requested tool and version are compatible.
+#
+#  This is normally invoked by launcher.tcl, so it expects $driverxml
+#  and $toolxml variable to be already set.
+#
+#  USAGE: execute.tcl
+# ======================================================================
+#  AUTHORS:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+exec tclsh "$0" $*
+# ----------------------------------------------------------------------
+# tclsh executes everything from here on...
+
+# bring in the Rappture object system
+package require Rappture
+Rappture::objects::init
+Rappture::resources::load
+
+# Parse command line options
+# ----------------------------------------------------------------------
+Rappture::getopts argv params {
+    value -tool ""
+    value -status ""
+    value -output ""
+    value -cleanup no
+}
+
+# load the XML info in the driver file
+if {[catch {Rappture::library $driverxml} result]} {
+    puts stderr "ERROR while loading driver file \"$driverxml\""
+    puts stderr $result
+    exit 1
+}
+set driverobj $result
+
+# If tool.xml is not specified, try to find it the way Rappture would.
+if {$params(-tool) ne ""} {
+    set toolxml $params(-tool)
+}
+if {$toolxml eq ""} {
+    if {[file isfile tool.xml]} {
+        set toolxml [file normalize tool.xml]
+    } elseif {[file isfile [file join rappture tool.xml]]} {
+        set toolxml [file normalize [file join rappture tool.xml]]
+    }
+}
+
+# If there's still no tool.xml, then see if we can find tooldir in driver
+if {$toolxml eq ""} {
+    set tooldir [$driverobj get tool.version.application.directory(tool)]
+    if {$tooldir eq ""} {
+        puts stderr "ERROR: missing -tool option, and driver file doesn't contain sufficient detail to locate the desired tool."
+        exit 1
+    }
+
+    set toolxml [file join $tooldir tool.xml]
+    if {![file exists $toolxml]} {
+        puts stderr "ERROR: missing tool.xml file \"$toolxml\""
+        exit 1
+    }
+}
+
+set installdir [file dirname [file normalize $toolxml]]
+set toolobj [Rappture::library $toolxml]
+set TaskObj [Rappture::Task ::#auto $toolobj $installdir]
+set LogFid ""
+
+# Define some things that we need for logging status...
+# ----------------------------------------------------------------------
+proc log_output {message} {
+    global LogFid
+
+    if {$LogFid ne ""} {
+        #
+        # Scan through and pick out any =RAPPTURE-PROGRESS=> messages.
+        #
+        set percent ""
+        while {[regexp -indices \
+                {=RAPPTURE-PROGRESS=> *([-+]?[0-9]+) +([^\n]*)(\n|$)} $message \
+                 match percent mesg]} {
+
+            foreach {i0 i1} $percent break
+            set percent [string range $message $i0 $i1]
+
+            foreach {i0 i1} $mesg break
+            set mesg [string range $message $i0 $i1]
+
+            foreach {i0 i1} $match break
+            set message [string replace $message $i0 $i1]
+        }
+        if {$percent ne ""} {
+            # report the last percent progress found
+            log_append progress "$percent% - $mesg"
+        }
+    }
+}
+
+# Actually write to the log file
+proc log_append {level message} {
+    global LogFid
+
+    if {$LogFid ne ""} {
+        set date [clock format [clock seconds] -format {%Y-%m-%dT%H:%M:%S%z}]
+        set host [info hostname]
+        puts $LogFid "$date $host rappture [pid] \[$level\] $message"
+        flush $LogFid
+    }
+}
+
+# Actually write to the log file
+proc log_stats {args} {
+    set line ""
+    foreach {key val} $args {
+        append line "$key=$val "
+    }
+    log_append usage $line
+}
+
+# Apply effects of all other command line options
+# ----------------------------------------------------------------------
+if {$params(-status) ne ""} {
+    set LogFid [open $params(-status) w]
+    $TaskObj configure -logger {log_append status} -jobstats log_stats
+}
+
+if {$params(-output) eq ""} {
+    # no output? then run quietly and don't try to save results
+    $TaskObj configure -jobstats "" -resultdir ""
+}
+
+# Transfer input values from driver to TaskObj, and then run.
+# ----------------------------------------------------------------------
+
+# copy inputs from the test into the run file
+$TaskObj reset
+foreach path [Rappture::entities -as path $driverobj input] {
+    if {[$driverobj element -as type $path.current] ne ""} {
+        lappend args $path [$driverobj get $path.current]
+    }
+}
+
+if {$params(-status) ne ""} {
+    # recording status? then look through output for progress messages
+    lappend args -output log_output
+}
+
+# run the desired case...
+foreach {status result} [eval $TaskObj run $args] break
+
+if {$status == 0 && [Rappture::library isvalid $result]} {
+    set runxml $result
+    $runxml put output.status ok
+} else {
+    # build a run file for the result output
+    set info "<?xml version=\"1.0\"?>\n[$driverobj xml]"
+    set runxml [Rappture::LibraryObj ::#auto $info]
+    $runxml put output.log $result
+    $runxml put output.status failed
+}
+
+# Handle output
+# ----------------------------------------------------------------------
+switch -- $params(-output) {
+    "" {
+        # no output file -- write to stdout
+        puts "<?xml version=\"1.0\"?>\n[$runxml xml]"
+    }
+    "@default" {
+        # do the usual Rappture thing -- move to results dir
+        # but ignore any errors if it fails
+        catch {$TaskObj save $runxml}
+    }
+    default {
+        # save to the specified file
+        $TaskObj save $runxml $params(-output)
+    }
+}
+
+if {$params(-cleanup)} {
+    file delete -force -- $driverxml
+}
+
+log_append status "exit $status"
+exit $status
Index: /tags/1.6.0/gui/apps/flowvis-test
===================================================================
--- /tags/1.6.0/gui/apps/flowvis-test	(revision 6168)
+++ /tags/1.6.0/gui/apps/flowvis-test	(revision 6168)
@@ -0,0 +1,366 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ----------------------------------------------------------------------
+#  TEST PROGRAM for flowVIS part of nanoVIS
+#
+#  This program is a test harness for the nanoVIS visualization
+#  engine.  It allows you to monitor the commands being sent back
+#  and forth between a standard Rappture application and the nanoVIS
+#  server.  You can also send your own commands to the server, to
+#  debug new features.
+#
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+bindir=`dirname $0` ; \
+. $bindir/rappture.env ; \
+exec wish "$0" "$@"
+# ----------------------------------------------------------------------
+# wish executes everything from here on...
+
+set installdir [file root $argv0]
+set libdir [file join $installdir "lib"]
+
+lappend auto_path $libdir $libdir/vtk $libdir/vtk/tcl
+
+package require Itcl
+package require Rappture
+package require RapptureGUI
+
+option add *comm.font -*-courier-medium-r-normal-*-*-120-*
+option add *Menu.tearOff off
+
+option add *Tooltip.background white
+option add *Editor.background white
+option add *Gauge.textBackground white
+option add *TemperatureGauge.textBackground white
+option add *Switch.textBackground white
+option add *Progress.barColor #ffffcc
+option add *Balloon.titleBackground #6666cc
+option add *Balloon.titleForeground white
+option add *Balloon*Label.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Radiobutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Checkbutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *ResultSet.controlbarBackground #6666cc
+option add *ResultSet.controlbarForeground white
+option add *ResultSet.activeControlBackground #ccccff
+option add *ResultSet.activeControlForeground black
+option add *Radiodial.length 3i
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-*-180-*
+
+# fix the "grab" command to support a stack of grab windows
+#Rappture::grab::init
+
+# ----------------------------------------------------------------------
+# LOAD RESOURCE SETTINGS
+#
+# Try to load the $SESSIONDIR/resources file, which contains
+# middleware settings, such as the application name and the
+# filexfer settings.
+# ----------------------------------------------------------------------
+Rappture::resources::load
+
+# ----------------------------------------------------------------------
+# Fake data object for sending DX or flow data...
+# ----------------------------------------------------------------------
+itcl::class visData {
+    constructor {args} {
+        set _data [Rappture::encoding::encode -as zb64 [lindex $args 0]]
+    }
+
+    public method components {args} {
+        if {[llength $args] == 0} {
+            return "one"
+        }
+        return ""
+    }
+    public method values {args} {
+        return $_data
+    }
+    public method hints {args} {
+        return ""
+    }
+    public method flowhints {args} {
+        return ""
+    }
+    public method extents {args} {
+        return "3"
+    }
+    private variable _data ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open Command File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set obj [visData #auto $info]
+        $widgets(flowvis) add $obj
+        puts stderr "name of flow is $obj-component"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load_script
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc load_script {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open Command File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+
+        $widgets(command) insert 0 $info
+        send_command
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_command
+#
+# Invoked automatically whenever the user enters a command and
+# presses <Return>.  Sends the command along to the rendering
+# widget.
+# ----------------------------------------------------------------------
+proc send_command {} {
+    global widgets
+    global last_command
+
+    set cmd [$widgets(command) get]
+
+    if {[string length $cmd] > 0} {
+        set last_command $cmd
+    } else {
+        set cmd $last_command
+    }
+    $widgets(flowvis) sendto $cmd
+    $widgets(command) delete 0 end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Used internally to reset the connection to the rendering server.
+# Discards all data and resets the widget connection to the server.
+# ----------------------------------------------------------------------
+proc reset {} {
+    global widgets
+    $widgets(flowvis) delete
+    $widgets(flowvis) disconnect
+    $widgets(comm) configure -state normal
+    $widgets(comm) delete 1.0 end
+    $widgets(comm) configure -state disabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: show_comm <channel> <data>
+#
+# Invoked automatically whenever there is communication between
+# the rendering widget and the server.  Eavesdrops on the communication
+# and posts the commands in a text viewer.
+# ----------------------------------------------------------------------
+proc show_comm {channel {data ""}} {
+    global widgets
+
+    $widgets(comm) configure -state normal
+    switch -- $channel {
+        closed {
+            $widgets(comm) insert end "--CLOSED--\n" error
+        }
+        <<line {
+            $widgets(comm) insert end $data incoming "\n" incoming
+            images_refresh
+        }
+        >>line {
+            $widgets(comm) insert end $data outgoing "\n" outgoing
+        }
+        error {
+            $widgets(comm) insert end $data error "\n" error
+        }
+        default {
+            $widgets(comm) insert end "$data\n"
+        }
+    }
+    $widgets(comm) configure -state disabled
+    $widgets(comm) see end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: activate_flow
+#
+# ----------------------------------------------------------------------
+proc activate_flow {} {
+    global widgets
+    set info {flow vectorid 0
+              flow particle visible on
+              flow lic on
+              flow capture 100}
+
+    $widgets(command) insert 0 $info
+    send_command
+
+}
+
+# ----------------------------------------------------------------------
+# TOPLEVEL FOR IMAGES
+# ----------------------------------------------------------------------
+# USAGE: images_save
+#
+# Invoked when the user presses the "Save As..." button on the
+# images panel.  Saves the current image in a file, which can be
+# examined by some external program.
+# ----------------------------------------------------------------------
+proc images_save {} {
+    global widgets images
+
+    set imh [$widgets(flowvis) get -image $images(which)]
+
+    set file [tk_getSaveFile -title "Save Image File" \
+        -defaultextension .jpg -filetypes {{{JPEG files} .jpg} {{All Files} *}}]
+
+    if {"" != $file} {
+        set cmds {
+            $imh write $file -format jpeg
+        }
+        if {[catch $cmds err]} {
+            tk_messageBox -icon error -message "Oops!  Save failed:\n$err"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: images_refresh
+#
+# Invoked automatically whenever there is a change in the view/legend
+# controls on the images panel.  Updates the image being shown based
+# on the current selection.
+# ----------------------------------------------------------------------
+proc images_refresh {} {
+    global widgets images
+    set c $widgets(viewer)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    set imh [$widgets(flowvis) get -image $images(which)]
+    set iw [image width $imh]
+    set ih [image height $imh]
+
+    $c coords image [expr {$w/2}] [expr {$h/2}]
+    $c itemconfigure image -image $imh
+    $c coords outline [expr {$w/2-$iw/2}] [expr {$h/2-$ih/2}] \
+        [expr {$w/2+$iw/2}] [expr {$h/2+$ih/2}]
+}
+
+toplevel .images
+wm title .images "flowVIS: Images"
+wm withdraw .images
+wm protocol .images WM_DELETE_WINDOW {wm withdraw .images}
+
+frame .images.cntls
+pack .images.cntls -side bottom -fill x
+button .images.cntls.save -text "Save As..." -command images_save
+pack .images.cntls.save -side right -padx 4
+radiobutton .images.cntls.view -text "3D View" -variable images(which) \
+    -value "view" -command images_refresh
+pack .images.cntls.view -side top -anchor w
+radiobutton .images.cntls.legend -text "Legend" -variable images(which) \
+    -value "legend" -command images_refresh
+pack .images.cntls.legend -side top -anchor w
+set images(which) "view"
+
+canvas .images.viewer -background black -width 500 -height 700
+pack .images.viewer -expand yes -fill both
+bind .images.viewer <Configure> images_refresh
+set widgets(viewer) .images.viewer
+
+$widgets(viewer) create image 0 0 -anchor c \
+    -image [image create photo] -tags image
+$widgets(viewer) create rectangle 0 0 1 1 -width 2 -outline red -fill "" \
+    -tags outline
+
+
+# ----------------------------------------------------------------------
+# MAIN WINDOW
+# ----------------------------------------------------------------------
+menu .mbar
+menu .mbar.file
+.mbar.file add command -label "Send Vector File..." -underline 0 -command send_file
+.mbar.file add command -label "Load script..." -underline 0 -command load_script
+.mbar.file add command -label "Reset" -underline 0 -command reset
+.mbar.file add separator
+.mbar.file add command -label "Exit" -underline 1 -command exit
+.mbar add cascade -label "File" -underline 0 -menu .mbar.file
+
+menu .mbar.view
+.mbar.view add command -label "Images..." -underline 0 \
+    -command {wm deiconify .images}
+.mbar add cascade -label "View" -underline 0 -menu .mbar.view
+
+menu .mbar.flow
+.mbar.flow add command -label "Activate Flow" -command {activate_flow}
+.mbar add cascade -label "Flow" -underline 0 -menu .mbar.flow
+
+
+
+. configure -menu .mbar
+
+
+Rappture::Panes .main -sashwidth 4 -sashrelief raised -sashpadding 4 \
+    -width 6i -height 4.75i
+pack .main -expand yes -fill both
+
+set f [.main pane 0]
+Rappture::FlowvisViewer $f.viewer
+pack $f.viewer -expand yes -fill both
+set widgets(flowvis) $f.viewer
+
+puts stderr [winfo class $widgets(flowvis)]
+
+$f.viewer configure \
+    -sendcommand show_comm \
+    -receivecommand show_comm
+
+set f [.main insert end -fraction 0.5]
+frame $f.send
+pack $f.send -side bottom -fill x
+label $f.send.l -text "Send:"
+pack $f.send.l -side left
+set widgets(command) [entry $f.send.e]
+pack $f.send.e -side left -expand yes -fill x
+bind $f.send.e <KeyPress-Return> send_command
+
+scrollbar $f.sb -orient vertical -command "$f.comm yview"
+pack $f.sb -side right -fill y
+text $f.comm -wrap char -yscrollcommand "$f.sb set"
+pack $f.comm -expand yes -fill both
+set widgets(comm) $f.comm
+
+$widgets(comm) tag configure error -foreground red \
+    -font -*-courier-medium-o-normal-*-*-120-*
+$widgets(comm) tag configure incoming -foreground blue
Index: /tags/1.6.0/gui/apps/grabdata
===================================================================
--- /tags/1.6.0/gui/apps/grabdata	(revision 6168)
+++ /tags/1.6.0/gui/apps/grabdata	(revision 6168)
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+# ----------------------------------------------------------------------
+#  grabdata
+#
+#  script to grab dx files from a run.xml file
+#
+#  RUN AS FOLLOWS:
+#    grabdata [-h|-t] <runFile>
+#
+#      -h | --help    - print the help menu
+#      -t | --type    - type of data to grab
+#
+#      <runFile>      - the run.xml file containing dx files
+#
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#
+#
+
+import re
+import os
+import sys
+import getopt
+import Rappture
+
+def help(argv=sys.argv):
+    return """%(prog)s [-h|-t] runFile
+      Grab DX, PDB, or other files from a run.xml file
+
+      -h | --help    - print the help menu
+      -t | --type    - type of data to grab
+
+      <runFile>      - the run.xml file containing dx, pdb or other files
+
+      Examples:
+        %(prog)s run1234.xml
+        %(prog)s -t dx run1234.xml
+        %(prog)s -t pdb run1234.xml
+""" % {'prog':os.path.basename(argv[0])}
+
+def main(argv=None):
+
+    if argv is None:
+        argv = sys.argv
+
+    if len(argv) < 2:
+        msg = "%(prog)s requires at least 1 arguments" % {'prog':argv[0]}
+        print >>sys.stderr, msg
+        print >>sys.stderr, help()
+        return 2
+
+    longOpts = ["type=","help"]
+    shortOpts = "t:h"
+    try:
+        opts, args = getopt.getopt(argv[1:], shortOpts, longOpts)
+    except getopt.GetoptError, msg:
+        print >>sys.stderr, msg
+        print >>sys.stderr, help()
+        return 2
+
+    tag = 'dx'
+
+    # match options
+    for o, v in opts:
+        if o in ("-t", "--type"):
+            tag = v
+        elif o in ("-h", "--help"):
+            print >>sys.stderr, help()
+            return 2
+
+    runFile = args[0]
+
+    # look for the text <tag> (any characters non-greedy) </tag>
+    regexp = r'<%(tag)s>(?P<data>.*?)</%(tag)s>' % {'tag':tag}
+    re_command = re.compile(regexp,re.I|re.DOTALL)
+
+    try:
+        xmlfile = open(runFile, "rb").read()
+    except IOError, msg:
+        print >>sys.stderr, msg
+        return 2
+
+    cnt = 0
+    runFileBase = os.path.basename(runFile)
+    prefix,ext = os.path.splitext(runFileBase)
+
+    outTextIter = re_command.finditer(xmlfile)
+    for match in outTextIter:
+        if match:
+            encoded_data = match.group('data')
+            # This needs to be a python static variable:
+            # RPENC_HDR == 4
+            unencoded_data = Rappture.encoding.decode(encoded_data,4)
+            newDXFile = open('%s_%i_.%s'%(prefix,cnt,tag),'wb')
+            newDXFile.write(unencoded_data)
+            newDXFile.close()
+            cnt += 1
+
+if __name__ == '__main__' :
+    # call main and exit gracefully
+    sys.exit(main())
Index: /tags/1.6.0/gui/apps/launcher.tcl
===================================================================
--- /tags/1.6.0/gui/apps/launcher.tcl	(revision 6168)
+++ /tags/1.6.0/gui/apps/launcher.tcl	(revision 6168)
@@ -0,0 +1,294 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ----------------------------------------------------------------------
+#  RAPPTURE LAUNCHER
+#
+#  This script is invoked by the "rappture" command.  It parses
+#  various input options and selects the proper main program to
+#  run depending on the function (build tool, run tool, tester, etc.).
+#
+#  RUN AS FOLLOWS:
+#    rappture ?-run? ?-tool <toolfile>?
+#    rappture -builder ?-tool <toolfile>?
+#    rappture -tester ?-tool <toolfile>? ?-testdir <directory>?
+#    rappture -execute driver.xml ?-tool <toolfile>?
+#
+#  The default option is "-run", which brings up the GUI used to
+#  run the tool.  If the <toolfile> is not specified, it defaults
+#  to "tool.xml" in the current working directory.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+set mainscript ""
+set alist ""
+set loadlist ""
+set toolxml ""
+
+# ----------------------------------------------------------------------
+#  Look for parameters passed into the tool session.  If there are
+#  any "file" parameters, they indicate files that should be loaded
+#  for browsing or executed to get results:
+#
+#    file(load):/path/to/run.xml
+#    file(execute):/path/to/driver.xml
+# ----------------------------------------------------------------------
+set params(opt) ""
+set params(load) ""
+set params(execute) ""
+set params(input) ""
+
+set rapptureInfo(cwd) [pwd]
+set rapptureInfo(appName) ""
+
+if {[info exists env(TOOL_PARAMETERS)]} {
+    # if we can't find the file, wait a little
+    set ntries 25
+    while {$ntries > 0 && ![file exists $env(TOOL_PARAMETERS)]} {
+        after 200
+        incr ntries -1
+    }
+
+    if {![file exists $env(TOOL_PARAMETERS)]} {
+        # still no file after all that? then skip parameters
+        puts stderr "WARNING: can't read tool parameters in file \"$env(TOOL_PARAMETERS)\"\nFile not found."
+
+    } elseif {[catch {
+        # read the file and parse the contents
+        set fid [open $env(TOOL_PARAMETERS) r]
+        set info [read $fid]
+        close $fid
+    } result] != 0} {
+        puts stderr "WARNING: can't read tool parameters in file \"$env(TOOL_PARAMETERS)\"\n$result"
+
+    } else {
+        # parse the contents of the tool parameter file
+        foreach line [split $info \n] {
+            set line [string trim $line]
+            if {$line eq "" || [regexp {^#} $line]} {
+                continue
+            }
+
+            if {[regexp {^([a-zA-Z]+)(\(into\:)(.+)\)\:(.+)$} $line match type name path value]
+                || [regexp {^([a-zA-Z]+)(\([^)]+\))?\:(.+)} $line match type name value]} {
+                if {$type eq "file"} {
+                    switch -exact -- $name {
+                        "(load)" - "" {
+                            lappend params(load) $value
+                            set params(opt) "-load"
+                        }
+                        "(simset)" - "" {
+                            lappend params(simset) $value
+                            set params(opt) "-simset"
+			}
+                        "(execute)" {
+                            set params(execute) $value
+                            set params(opt) "-execute"
+                        }
+                        "(input)" {
+                            set params(input) $value
+                            set params(opt) "-input"
+                        }
+                        "(into:" {
+                            namespace eval ::Rappture { # forward decl }
+                            set ::Rappture::parameters($path) $value
+                        }
+                        default {
+                            puts stderr "WARNING: directive $name not recognized for file parameter \"$value\""
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+
+# scan through the arguments and look for the function
+while {[llength $argv] > 0} {
+    set opt [lindex $argv 0]
+    set argv [lrange $argv 1 end]
+
+    if {[string index $opt 0] == "-"} {
+        switch -- $opt {
+            -run {
+                package require RapptureGUI
+                set guidir $RapptureGUI::library
+                set mainscript [file join $guidir scripts main.tcl]
+                set reqpkgs Tk
+            }
+            -builder {
+                package require RapptureBuilder
+                set blddir $RapptureBuilder::library
+                set mainscript [file join $blddir scripts main.tcl]
+                set reqpkgs Tk
+            }
+            -tester {
+                package require RapptureTester
+                set testdir $RapptureTester::library
+                set mainscript [file join $testdir scripts main.tcl]
+                set reqpkgs Tk
+            }
+            -execute {
+                # for web services and simulation cache -- don't load Tk
+                set reqpkgs ""
+                if {[llength $argv] < 1} {
+                    puts stderr "error: missing driver.xml file for -execute option"
+                    exit 1
+                }
+                set driverxml [lindex $argv 0]
+                set argv [lrange $argv 1 end]
+
+                if {![file readable $driverxml]} {
+                    puts stderr "error: driver file \"$driverxml\" not found"
+                    exit 1
+                }
+
+                set dir [file dirname [info script]]
+                set mainscript [file join $dir execute.tcl]
+            }
+            -tool {
+                set toolxml [lindex $argv 0]
+                set argv [lrange $argv 1 end]
+                if {![file exists $toolxml]} {
+                    puts stderr "file not found: $toolxml"
+                    exit 1
+                }
+                lappend alist -tool $toolxml
+            }
+            -testdir - -nosim {
+                lappend alist $opt [lindex $argv 0]
+                set argv [lrange $argv 1 end]
+            }
+            -auto {
+                # for the tester in automatic mode -- don't load Tk
+                package require RapptureTester
+                set testdir $RapptureTester::library
+                set mainscript [file join $testdir scripts auto.tcl]
+                set reqpkgs ""
+            }
+            -load {
+                while { [llength $argv] > 0 } {
+                    set val [lindex $argv 0]
+                    if { [string index $val 0] == "-" } {
+                        break
+                    }
+                    lappend loadlist $val
+                    set argv [lrange $argv 1 end]
+                }
+	    }
+            -simset {
+                lappend alist $opt [lindex $argv 0]
+                set argv [lrange $argv 1 end]
+            }
+            -appname {
+		global rapptureInfo
+                set rapptureInfo(appName) [lindex $argv 0]
+                set argv [lrange $argv 1 end]
+            }
+            default {
+                puts stderr "usage:"
+                puts stderr "  rappture ?-run? ?-tool toolFile? ?-nosim 0/1? ?-load file file ...?"
+                puts stderr "  rappture -builder ?-tool toolFile?"
+                puts stderr "  rappture -tester ?-auto? ?-tool toolFile? ?-testdir directory?"
+                puts stderr "  rappture -execute driver.xml ?-tool toolFile?"
+                exit 1
+            }
+        }
+    }
+}
+
+# If no arguments, check to see if there are any tool parameters.
+# If not, then assume that it's the -run option.
+if {$mainscript eq ""} {
+    switch -- $params(opt) {
+        -load {
+            # add tool parameters to the end of any files given on cmd line
+            set loadlist [concat $loadlist $params(load)]
+            set alist [concat $alist -load $loadlist]
+
+            package require RapptureGUI
+            set guidir $RapptureGUI::library
+            set mainscript [file join $guidir scripts main.tcl]
+            set reqpkgs Tk
+        }
+        -simset {
+            # add tool parameters to the end of any files given on cmd line
+            set loadlist [concat $loadlist $params(simset)]
+            set alist [concat $alist -simset $loadlist]
+
+            package require RapptureGUI
+            set guidir $RapptureGUI::library
+            set mainscript [file join $guidir scripts main.tcl]
+            set reqpkgs Tk
+        }
+        -execute {
+            if {[llength $params(execute)] != 1} {
+                puts stderr "ERROR: wrong number of (execute) files in TOOL_PARAMETERS (should be only 1)"
+                exit 1
+            }
+            set driverxml [lindex $params(execute) 0]
+            if {![file readable $driverxml]} {
+                puts stderr "error: driver file \"$driverxml\" not found"
+                exit 1
+            }
+            set dir [file dirname [info script]]
+            set mainscript [file join $dir execute.tcl]
+            set reqpkgs ""
+
+            # When executing from TOOL_PARAMETERS file directives,
+            # report status, clean up, and save output to data/results.
+            # This helps the web services interface do its thing.
+            set alist [list \
+                -output @default \
+                -status rappture.status \
+                -cleanup yes]
+        }
+        "" - "-input" {
+            package require RapptureGUI
+            set guidir $RapptureGUI::library
+            set mainscript [file join $guidir scripts main.tcl]
+            set reqpkgs Tk
+
+            # finalize the -input argument for "rappture -run"
+            if {$params(input) ne ""} {
+                if {![file readable $params(input)]} {
+                    puts stderr "error: driver file \"$params(input)\" not found"
+                    exit 1
+                }
+                set alist [concat $alist -input $params(input)]
+            }
+
+            # finalize any pending -load arguments for "rappture -run"
+            if {[llength $loadlist] > 0} {
+                set alist [concat $alist -load $loadlist]
+            }
+        }
+        default {
+            puts stderr "internal error: funny action \"$params(opt)\" inferred from TOOL_PARAMETERS"
+            exit 1
+        }
+    }
+} else {
+    # finalize any pending -load arguments for "rappture -run"
+    if {[llength $loadlist] > 0} {
+        set alist [concat $alist -load $loadlist]
+    }
+}
+
+# Invoke the main program with the args
+
+# Note: We're sourcing the driver file "main.tcl" rather than exec-ing
+#       wish because we want to see stderr and stdout messages when they
+#	are written, rather than when the program completes.  It also
+#	eliminates one process waiting for the other to complete. If
+#	"exec" is needed, then the following could be replaced with
+#	blt::bgexec.  It doesn't try to redirect stderr into a file.
+set argv $alist
+foreach name $reqpkgs {
+    package require $name
+}
+source  $mainscript
Index: /tags/1.6.0/gui/apps/nanovis-test
===================================================================
--- /tags/1.6.0/gui/apps/nanovis-test	(revision 6168)
+++ /tags/1.6.0/gui/apps/nanovis-test	(revision 6168)
@@ -0,0 +1,377 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ----------------------------------------------------------------------
+#  TEST PROGRAM for nanoVIS
+#
+#  This program is a test harness for the nanoVIS visualization
+#  engine.  It allows you to monitor the commands being sent back
+#  and forth between a standard Rappture application and the nanoVIS
+#  server.  You can also send your own commands to the server, to
+#  debug new features.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+bindir=`dirname $0` ; \
+. $bindir/rappture.env ; \
+exec $bindir/wish "$0" "$@"
+# ----------------------------------------------------------------------
+# wish executes everything from here on...
+package require Itcl
+package require Rappture
+package require RapptureGUI
+
+option add *comm.font -*-courier-medium-r-normal-*-*-120-*
+option add *Menu.tearOff off
+
+option add *Tooltip.background white
+option add *Editor.background white
+option add *Gauge.textBackground white
+option add *TemperatureGauge.textBackground white
+option add *Switch.textBackground white
+option add *Progress.barColor #ffffcc
+option add *Balloon.titleBackground #6666cc
+option add *Balloon.titleForeground white
+option add *Balloon*Label.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Radiobutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Checkbutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *ResultSet.controlbarBackground #6666cc
+option add *ResultSet.controlbarForeground white
+option add *ResultSet.activeControlBackground #ccccff
+option add *ResultSet.activeControlForeground black
+option add *Radiodial.length 3i
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-*-180-*
+
+# fix the "grab" command to support a stack of grab windows
+#Rappture::grab::init
+
+# ----------------------------------------------------------------------
+# LOAD RESOURCE SETTINGS
+#
+# Try to load the $SESSIONDIR/resources file, which contains
+# middleware settings, such as the application name and the
+# filexfer settings.
+# ----------------------------------------------------------------------
+Rappture::resources::load
+
+# ----------------------------------------------------------------------
+# Fake data object for sending DX or flow data...
+# ----------------------------------------------------------------------
+itcl::class visData {
+    constructor {args} {
+        set _data [Rappture::encoding::encode -as zb64 [lindex $args 0]]
+    }
+
+    public method components {args} {
+        if {[llength $args] == 0} {
+            return "one"
+        }
+        return ""
+    }
+    public method values {args} {
+        return $_data
+    }
+    public method hints {args} {
+        return ""
+    }
+
+    private variable _data ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open Command File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set obj [visData #auto $info]
+        $widgets(nanovis) add $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_flow_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_flow_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open Command File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set _data [Rappture::encoding::encode -as zb64 $info ]
+        set _data "flow data follows [string length $_data]\n$_data"
+        $widgets(command) insert 0 $_data
+        send_command
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load_script
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc load_script {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open Command File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+
+        $widgets(command) insert 0 $info
+        send_command
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_command
+#
+# Invoked automatically whenever the user enters a command and
+# presses <Return>.  Sends the command along to the rendering
+# widget.
+# ----------------------------------------------------------------------
+proc send_command {} {
+    global widgets
+    global last_command
+
+    set cmd [$widgets(command) get]
+
+    if {[string length $cmd] > 0} {
+        set last_command $cmd
+    } else {
+        set cmd $last_command
+    }
+    namespace eval Rappture::NanovisViewer [list $widgets(nanovis) SendCmd $cmd]
+    $widgets(command) delete 0 end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Used internally to reset the connection to the rendering server.
+# Discards all data and resets the widget connection to the server.
+# ----------------------------------------------------------------------
+proc reset {} {
+    global widgets
+    $widgets(nanovis) delete
+    $widgets(nanovis) disconnect
+    $widgets(comm) configure -state normal
+    $widgets(comm) delete 1.0 end
+    $widgets(comm) configure -state disabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: show_comm <channel> <data>
+#
+# Invoked automatically whenever there is communication between
+# the rendering widget and the server.  Eavesdrops on the communication
+# and posts the commands in a text viewer.
+# ----------------------------------------------------------------------
+proc show_comm {channel {data ""}} {
+    global widgets
+
+    $widgets(comm) configure -state normal
+    switch -- $channel {
+        closed {
+            $widgets(comm) insert end "--CLOSED--\n" error
+        }
+        <<line {
+            $widgets(comm) insert end $data incoming "\n" incoming
+            images_refresh
+        }
+        >>line {
+            $widgets(comm) insert end $data outgoing "\n" outgoing
+        }
+        error {
+            $widgets(comm) insert end $data error "\n" error
+        }
+        default {
+            $widgets(comm) insert end "$data\n"
+        }
+    }
+    $widgets(comm) configure -state disabled
+    $widgets(comm) see end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: activate_flow
+#
+# ----------------------------------------------------------------------
+proc activate_flow {} {
+    global widgets
+    # global img_storage_dir
+    # "flow capture 117 $img_storage_dir"
+
+    set info {flow vectorid 0
+              flow particle visible on
+              flow lic on
+              flow capture 100}
+
+    $widgets(command) insert 0 $info
+    send_command
+
+}
+
+# ----------------------------------------------------------------------
+# TOPLEVEL FOR IMAGES
+# ----------------------------------------------------------------------
+# USAGE: images_save
+#
+# Invoked when the user presses the "Save As..." button on the
+# images panel.  Saves the current image in a file, which can be
+# examined by some external program.
+# ----------------------------------------------------------------------
+proc images_save {} {
+    global widgets images
+
+    set imh [$widgets(nanovis) get -image $images(which)]
+
+    set file [tk_getSaveFile -title "Save Image File" \
+        -defaultextension .jpg -filetypes {{{JPEG files} .jpg} {{All Files} *}}]
+
+    if {"" != $file} {
+        set cmds {
+            $imh write $file -format jpeg
+        }
+        if {[catch $cmds err]} {
+            tk_messageBox -icon error -message "Oops!  Save failed:\n$err"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: images_refresh
+#
+# Invoked automatically whenever there is a change in the view/legend
+# controls on the images panel.  Updates the image being shown based
+# on the current selection.
+# ----------------------------------------------------------------------
+proc images_refresh {} {
+    global widgets images
+    set c $widgets(viewer)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    set imh [$widgets(nanovis) get -image $images(which)]
+    set iw [image width $imh]
+    set ih [image height $imh]
+
+    $c coords image [expr {$w/2}] [expr {$h/2}]
+    $c itemconfigure image -image $imh
+    $c coords outline [expr {$w/2-$iw/2}] [expr {$h/2-$ih/2}] \
+        [expr {$w/2+$iw/2}] [expr {$h/2+$ih/2}]
+}
+
+toplevel .images
+wm title .images "nanoVIS: Images"
+wm withdraw .images
+wm protocol .images WM_DELETE_WINDOW {wm withdraw .images}
+
+frame .images.cntls
+pack .images.cntls -side bottom -fill x
+button .images.cntls.save -text "Save As..." -command images_save
+pack .images.cntls.save -side right -padx 4
+radiobutton .images.cntls.view -text "3D View" -variable images(which) \
+    -value "view" -command images_refresh
+pack .images.cntls.view -side top -anchor w
+radiobutton .images.cntls.legend -text "Legend" -variable images(which) \
+    -value "legend" -command images_refresh
+pack .images.cntls.legend -side top -anchor w
+set images(which) "view"
+
+canvas .images.viewer -background black -width 500 -height 500
+pack .images.viewer -expand yes -fill both
+bind .images.viewer <Configure> images_refresh
+set widgets(viewer) .images.viewer
+
+$widgets(viewer) create image 0 0 -anchor c \
+    -image [image create photo] -tags image
+$widgets(viewer) create rectangle 0 0 1 1 -width 2 -outline red -fill "" \
+    -tags outline
+
+
+# ----------------------------------------------------------------------
+# MAIN WINDOW
+# ----------------------------------------------------------------------
+menu .mbar
+menu .mbar.file
+.mbar.file add command -label "Send Volume File..." -underline 0 -command send_file
+.mbar.file add command -label "Send Flow File..." -underline 0 -command send_flow_file
+.mbar.file add command -label "Load script..." -underline 0 -command load_script
+.mbar.file add command -label "Reset" -underline 0 -command reset
+.mbar.file add separator
+.mbar.file add command -label "Exit" -underline 1 -command exit
+.mbar add cascade -label "File" -underline 0 -menu .mbar.file
+
+menu .mbar.view
+.mbar.view add command -label "Images..." -underline 0 \
+    -command {wm deiconify .images}
+.mbar add cascade -label "View" -underline 0 -menu .mbar.view
+
+menu .mbar.flow
+.mbar.flow add command -label "Activate Flow" -command {activate_flow}
+.mbar add cascade -label "Flow" -underline 0 -menu .mbar.flow
+
+. configure -menu .mbar
+
+Rappture::Panes .main -sashwidth 4 -sashrelief raised -sashpadding 4 \
+    -width 6i -height 4i
+pack .main -expand yes -fill both
+
+set f [.main pane 0]
+Rappture::NanovisViewer $f.viewer
+pack $f.viewer -expand yes -fill both
+set widgets(nanovis) $f.viewer
+
+$f.viewer configure \
+    -sendcommand show_comm \
+    -receivecommand show_comm
+
+set f [.main insert end -fraction 0.5]
+frame $f.send
+pack $f.send -side bottom -fill x
+label $f.send.l -text "Send:"
+pack $f.send.l -side left
+set widgets(command) [entry $f.send.e]
+pack $f.send.e -side left -expand yes -fill x
+bind $f.send.e <KeyPress-Return> send_command
+
+scrollbar $f.sb -orient vertical -command "$f.comm yview"
+pack $f.sb -side right -fill y
+text $f.comm -wrap char -yscrollcommand "$f.sb set"
+pack $f.comm -expand yes -fill both
+set widgets(comm) $f.comm
+
+$widgets(comm) tag configure error -foreground red \
+    -font -*-courier-medium-o-normal-*-*-120-*
+$widgets(comm) tag configure incoming -foreground blue
Index: /tags/1.6.0/gui/apps/rappture-csh.env.in
===================================================================
--- /tags/1.6.0/gui/apps/rappture-csh.env.in	(revision 6168)
+++ /tags/1.6.0/gui/apps/rappture-csh.env.in	(revision 6168)
@@ -0,0 +1,108 @@
+#!/bin/csh -f
+# ----------------------------------------------------------------------
+#  RAPPTURE ENVIRONMENT
+#
+#  This is the main script that most people use to invoke the
+#  Rappture GUI.  It sets environment variables so that the Rappture
+#  GUI driver will work properly for the current installation.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#
+
+# If you install Rappture elsewhere, edit the line below:
+set exec_prefix=@INSTALL_PREFIX@
+
+set bindir=@bindir@
+set libdir=@libdir@
+set vtk_tcl_dir=@VTK_TCL_DIR@
+set python_version=@PYTHON_VERSION@
+set tcl_version=@TCL_VERSION@
+set octave_version=@OCTAVE_VERSION_MAJOR@
+
+set path = ( $bindir $path )
+
+if ( $?LD_LIBRARY_PATH ) then
+  setenv LD_LIBRARY_PATH "${libdir}:$LD_LIBRARY_PATH"
+else
+  setenv LD_LIBRARY_PATH "${libdir}"
+endif
+
+if ( $?DYLD_LIBRARY_PATH ) then
+  setenv DYLD_LIBRARY_PATH "${libdir}:$DYLD_LIBRARY_PATH"
+else
+  setenv DYLD_LIBRARY_PATH "${libdir}"
+endif
+
+if ( $?MATLABPATH ) then
+  setenv MATLABPATH "${libdir}/matlab:$MATLABPATH"
+else
+  setenv MATLABPATH "${libdir}/matlab"
+endif
+
+if ( $?OCTAVE_PATH ) then
+  setenv OCTAVE_PATH "${libdir}/octave${octave_version}:$OCTAVE_PATH"
+else
+  setenv OCTAVE_PATH "${libdir}/octave${octave_version}"
+endif
+
+if ( $?OCTAVE_LOADPATH ) then
+  setenv OCTAVE_LOADPATH "${libdir}/octave3:$OCTAVE_LOADPATH"
+else
+  setenv OCTAVE_LOADPATH "${libdir}/octave3"
+endif
+
+if ( $?PERL5LIB ) then
+  setenv PERL5LIB "${libdir}/perl:$PERL5LIB"
+else
+  setenv PERL5LIB "${libdir}/perl"
+endif
+
+if ( $?PYTHONPATH ) then
+  setenv PYTHONPATH  "${libdir}/python${python_version}/site-packages:$PYTHONPATH"
+else
+  setenv PYTHONPATH  "${libdir}/python${python_version}/site-packages"
+endif
+
+if ( $?RUBYLIB ) then
+  setenv RUBYLIB "${libdir}/ruby:$RUBYLIB"
+else
+  setenv RUBYLIB "${libdir}/ruby"
+endif
+
+if ( $?TCL_LIBRARY ) then
+  setenv TCL_LIBRARY "${libdir}/tcl${tcl_version}:$TCL_LIBRARY"
+else
+  setenv TCL_LIBRARY "${libdir}/tcl${tcl_version}"
+endif
+
+if ( $?TK_LIBRARY ) then
+  setenv TK_LIBRARY "${libdir}/tk${tcl_version}:$TK_LIBRARY"
+else
+  setenv TK_LIBRARY "${libdir}/tk${tcl_version}"
+endif
+
+if ( $?TCLLIBPATH ) then
+  setenv TCLLIBPATH "${vtk_tcl_dir} $TCLLIBPATH"
+else
+  setenv TCLLIBPATH "${vtk_tcl_dir}"
+endif
+
+if ( $?CLASSPATH ) then
+  setenv CLASSPATH "${libdir}/java:$CLASSPATH"
+else
+  setenv CLASSPATH "${libdir}/java"
+endif
+
+if ( $?R_LIBS ) then
+  setenv R_LIBS "${libdir}/R:$R_LIBS"
+else
+  setenv R_LIBS "${libdir}/R"
+endif
+
+setenv RAPPTURE_PATH "${exec_prefix}"
Index: /tags/1.6.0/gui/apps/rappture.cmd
===================================================================
--- /tags/1.6.0/gui/apps/rappture.cmd	(revision 6168)
+++ /tags/1.6.0/gui/apps/rappture.cmd	(revision 6168)
@@ -0,0 +1,5 @@
+@REM %~dp0     = extract directory and path of argument 0 (command executed)
+@REM %M:~1,-1  = extract every between first and last charcter (the quotes)
+@REM These constructs require extended command options (Windows 2000 or later)
+@set M="%~dp0"
+@wish %M:~1,-1%driver %*
Index: /tags/1.6.0/gui/apps/rappture.env.in
===================================================================
--- /tags/1.6.0/gui/apps/rappture.env.in	(revision 6168)
+++ /tags/1.6.0/gui/apps/rappture.env.in	(revision 6168)
@@ -0,0 +1,65 @@
+#!/bin/sh
+# ----------------------------------------------------------------------
+#  RAPPTURE ENVIRONMENT
+#
+#  This is the main script that most people use to invoke the
+#  Rappture GUI.  It sets environment variables so that the Rappture
+#  GUI driver will work properly for the current installation.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#
+# If you install Rappture elsewhere, edit the line below:
+exec_prefix=@INSTALL_PREFIX@
+
+libdir=@libdir@
+bindir=@bindir@
+vtk_tcl_dir=@VTK_TCL_DIR@
+python_version=@PYTHON_VERSION@
+tcl_version=@TCL_VERSION@
+octave_version=@OCTAVE_VERSION_MAJOR@
+
+# No need to edit anything else
+PATH=${bindir}:$PATH
+
+LD_LIBRARY_PATH=${libdir}:$LD_LIBRARY_PATH
+
+# For MacOS X
+DYLD_LIBRARY_PATH=${libdir}:$DYLD_LIBRARY_PATH
+
+export PATH LD_LIBRARY_PATH DYLD_LIBRARY_PATH
+
+MATLABPATH=${libdir}/matlab:$MATLABPATH
+OCTAVE_LOADPATH=:${libdir}/octave3:$OCTAVE_LOADPATH
+OCTAVE_PATH=:${libdir}/octave${octave_version}:$OCTAVE_PATH
+
+export MATLABPATH OCTAVE_PATH OCTAVE_LOADPATH
+
+PERL5LIB=${libdir}/perl:$PERL5LIB
+PYTHONPATH=${libdir}/python${python_version}/site-packages:${PYTHONPATH}
+RUBYLIB=${libdir}/ruby:$RUBYLIB
+
+export PERL5LIB RUBYLIB PYTHONPATH
+
+TCLLIBPATH="${vtk_tcl_dir} $TCLLIBPATH"
+TCL_LIBRARY=${libdir}/tcl${tcl_version}:$TCL_LIBRARY
+TK_LIBRARY=${libdir}/tk${tcl_version}:$TK_LIBRARY
+
+export TCL_LIBRARY TK_LIBRARY TCLLIBPATH
+
+CLASSPATH=.:${libdir}/java:$CLASSPATH
+
+export CLASSPATH
+
+R_LIBS=${libdir}/R:$R_LIBS
+
+export R_LIBS
+
+RAPPTURE_PATH=${exec_prefix}
+
+export RAPPTURE_PATH
Index: /tags/1.6.0/gui/apps/rappture.in
===================================================================
--- /tags/1.6.0/gui/apps/rappture.in	(revision 6168)
+++ /tags/1.6.0/gui/apps/rappture.in	(revision 6168)
@@ -0,0 +1,18 @@
+#!/bin/sh
+# ----------------------------------------------------------------------
+#  RAPPTURE
+#
+#  This is the main script that most people use to invoke the
+#  Rappture GUI.  It sets environment variables so that the Rappture
+#  GUI driver will work properly for the current installation.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+dir=`dirname $0`
+. $dir/rappture.env
+exec tclsh $dir/launcher.tcl "$@"
Index: /tags/1.6.0/gui/apps/rappture.use.in
===================================================================
--- /tags/1.6.0/gui/apps/rappture.use.in	(revision 6168)
+++ /tags/1.6.0/gui/apps/rappture.use.in	(revision 6168)
@@ -0,0 +1,41 @@
+
+conflict RAPPTURE_CHOICE
+
+desc "The Rappture tool environment (released version)."
+
+help "Rappture is a graphical tool wrapper.
+It can be used to add a graphical user interface to
+a conventional scientific application."
+
+exec_prefix=@prefix@
+libdir=@libdir@
+bindir=@bindir@
+vtk_tcl_dir=@VTK_TCL_DIR@
+python_version=@PYTHON_VERSION@
+tcl_version=@TCL_VERSION@
+octave_version=@OCTAVE_VERSION_MAJOR@
+
+prepend PATH ${bindir}
+
+prepend LD_LIBRARY_PATH ${libdir}
+prepend DYLD_LIBRARY_PATH ${libdir}
+
+prepend MATLABPATH ${libdir}/matlab
+prepend OCTAVE_PATH :${libdir}/octave${octave_version}:
+prepend OCTAVE_LOADPATH :${libdir}/octave3:
+
+prepend PERL5LIB ${libdir}/perl
+prepend RUBYLIB ${libdir}/ruby
+prepend PYTHONPATH ${libdir}/python${python_version}/site-packages
+
+prepend TCLLIBPATH ${vtk_tcl_dir}
+prepend TCL_LIBRARY ${libdir}/tcl${tcl_version}
+prepend TK_LIBRARY ${libdir}/tk${tcl_version}
+
+prepend CLASSPATH ${libdir}/java
+
+prepend R_LIBS ${libdir}/R
+
+setenv RAPPTURE_PATH ${exec_prefix}
+
+tags DEVEL
Index: /tags/1.6.0/gui/apps/rerun.cmd
===================================================================
--- /tags/1.6.0/gui/apps/rerun.cmd	(revision 6168)
+++ /tags/1.6.0/gui/apps/rerun.cmd	(revision 6168)
@@ -0,0 +1,6 @@
+@REM %~dp0     = extract directory and path of argument 0 (command executed)
+@REM %M:~1,-1  = extract every between first and last charcter (the quotes)
+@REM These constructs require extended command options (Windows 2000 or later)
+@set M="%~dp0"
+@wish %M:~1,-1%driver -load %*
+
Index: /tags/1.6.0/gui/apps/rerun.in
===================================================================
--- /tags/1.6.0/gui/apps/rerun.in	(revision 6168)
+++ /tags/1.6.0/gui/apps/rerun.in	(revision 6168)
@@ -0,0 +1,34 @@
+#!/bin/sh
+# ----------------------------------------------------------------------
+#  rerun
+#
+#  script to view the output of a previously created run.xml file.
+#  this is just a wrapper around the "rappture -load ..." command
+#  you can use this command to load and compare run.xml files from
+#  the same application. loading xml files from different applciations
+#  will result in undefined actions, and possibly errors.
+#  after loading a run.xml file, you can still enter new values into
+#  the rappture gui and continue simulation experiments.
+#
+#  RUN AS FOLLOWS:
+#    rerun <runFile>,...
+#
+#      <runFile>      - the run.xml file containing an output
+#                       section you would like to re-generate.
+#      ...            - optional comma separated list of runFiles
+#
+#
+#   ex: rerun run1234.xml,run5678.xml,run0123.xml
+#
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#
+#
+dir=`dirname $0`
+. $dir/rappture.env
+exec $dir/rappture -nosim true -load "$@"
Index: /tags/1.6.0/gui/apps/rpdiff
===================================================================
--- /tags/1.6.0/gui/apps/rpdiff	(revision 6168)
+++ /tags/1.6.0/gui/apps/rpdiff	(revision 6168)
@@ -0,0 +1,585 @@
+#!/bin/sh
+# ----------------------------------------------------------------------
+#  RPDIFF
+#
+#  Compares two Rappture run files and looks for differences in the
+#  output results.  This is useful for the BOINC integration and other
+#  job execution infrastructures, so we can compare the results from
+#  multiple runs.
+#
+#    USAGE:
+#    % rpdiff <runFile1> <runFile2>
+#
+#  Exits with status 0 if the files are the same, and non-zero status
+#  if the files are different.  Prints differences on stdout.  Prints
+#  any errors on stderr.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+# \
+exec tclsh "$0" ${1+"$@"}
+# tclsh executes the rest...
+package require Rappture
+
+# ----------------------------------------------------------------------
+# USAGE: diff <path> <lib1> <lib2>
+#
+# Used to compare two Rappture library objects at the specified <path>
+# in <lib1> and <lib2>.  Returns "" if they are the same, and a list
+# of differences if they are not.
+# ----------------------------------------------------------------------
+proc diff {path lib1 lib2} {
+    set knowntypes {boolean choice cloud curve field group histogram image integer loader log mesh note number periodicelement phase sequence string structure table unirect2d}
+    set type1 [$lib1 element -as type $path]
+    set type2 [$lib2 element -as type $path]
+    if {($type1 eq "" && $type2 ne "") || ($type1 ne "" && $type2 eq "")} {
+        return "missing component at $path"
+    } elseif {$type1 ne $type2} {
+        return "component mismatch at $path"
+    }
+
+    set diffs ""
+    switch -- $type1 {
+        input - output - group - phase {
+            set cpath1 [$lib1 children -as path $path]
+            set cpath2 [$lib2 children -as path $path]
+
+            # scan through all components in lib1 and diff against lib2
+            foreach cp $cpath1 {
+                set ct [$lib1 element -as type $cp]
+                if {[lsearch $knowntypes $ct] < 0} {
+                    # this isn't a real rappture object -- skip it
+                    set i [lsearch -exact $cpath2 $cp]
+                    if {$i >= 0} {
+                        set cpath2 [lreplace $cpath2 $i $i]
+                    }
+                    continue
+                }
+
+                set i [lsearch -exact $cpath2 $cp]
+                if {$i < 0} {
+                    lappend diffs "missing missing component at $cp"
+                } else {
+                    set cpath2 [lreplace $cpath2 $i $i]
+                    eval lappend diffs [diff $cp $lib1 $lib2]
+                }
+            }
+
+            # components left over that are in lib2 but not in lib1?
+            foreach cp $cpath2 {
+                lappend diffs "missing component at $cp"
+            }
+        }
+
+        boolean {
+            eval lappend diffs [diffattrs {
+                about.label about.description default
+            } $path $lib1 $lib2]
+
+            set v1 [$lib1 get $path.current]
+            if {$v1 ne "" && [catch {expr $v1} newval] == 0} { set v1 $newval }
+
+            set v2 [$lib2 get $path.current]
+            if {$v2 ne "" && [catch {expr $v2} newval] == 0} { set v2 $newval }
+
+            if {$v1 ne $v2} {
+                lappend diffs "value mismatch at $path.current"
+            }
+        }
+        choice {
+            eval lappend diffs [diffattrs {
+                about.label about.description default
+            } $path $lib1 $lib2]
+
+            set v1 [$lib1 get $path.current]
+            set v2 [$lib2 get $path.current]
+            if {$v1 ne $v2} {
+                lappend diffs "value mismatch at $path.current"
+            }
+        }
+        cloud {
+            eval lappend diffs [diffattrs {
+                about.label about.description units hide
+            } $path $lib1 $lib2]
+
+            eval lappend diffs [diffdatalines $path.points $lib1 $lib2]
+        }
+        curve {
+            eval lappend diffs [diffattrs {
+                about.label about.description
+                xaxis.label xaxis.description xaxis.units
+                yaxis.label yaxis.description yaxis.units
+            } $path $lib1 $lib2]
+
+            set cpath2 [$lib2 children -as path $path.component]
+            foreach elem [$lib1 children -as path $path.component] {
+                set i [lsearch -exact $cpath2 $elem]
+                if {$i >= 0} {
+                    set cpath2 [lreplace $cpath2 $i $i]
+                }
+
+                set data1 [$lib1 get $elem]
+                set data2 [$lib2 get $elem]
+                if {[llength $data1] != [llength $data2]} {
+                    lappend diffs "value mismatch at $elem"
+                    break
+                }
+
+                foreach d1 $data1 d2 $data2 {
+                    if {[Rappture::objects::ObjVal::cmpdbl $d1 $d2] != 0} {
+                        lappend diffs "value mismatch at $elem"
+                        break
+                    }
+                }
+            }
+            foreach elem $cpath2 {
+                # anything left in lib2 that's not in lib1?
+                lappend diffs "missing component at $elem"
+            }
+        }
+        field {
+            eval lappend diffs [diffattrs {
+                about.label about.description
+            } $path $lib1 $lib2]
+
+            set cpath2 [$lib2 children -as path -type component $path]
+            foreach elem [$lib1 children -as path -type component $path] {
+                set i [lsearch -exact $cpath2 $elem]
+                if {$i >= 0} {
+                    set cpath2 [lreplace $cpath2 $i $i]
+                }
+
+                # the flow attributes may or may not exist
+                eval lappend diffs [diffattrs {
+                    flow.label flow.description
+                } $elem $lib1 $lib2]
+
+                # must have the same dx (if defined)
+                set v1 [$lib1 get $elem.dx]
+                set v2 [$lib2 get $elem.dx]
+                if {$v1 ne $v2} {
+                    lappend diffs "value mismatch at $elem.dx"
+                    continue
+                }
+
+                # must have the same mesh
+                set v1 [$lib1 get $elem.mesh]
+                set v2 [$lib2 get $elem.mesh]
+                if {$v1 ne $v2} {
+                    lappend diffs "value mismatch at $elem.mesh"
+                    continue
+                }
+
+                # must have the same values
+                eval lappend diffs [diffdatalines $elem.values $lib1 $lib2]
+            }
+            foreach elem $cpath2 {
+                # anything left in lib2 that's not in lib1?
+                lappend diffs "missing component at $elem"
+            }
+        }
+        histogram {
+            eval lappend diffs [diffattrs {
+                about.label about.description
+                xaxis.label xaxis.description xaxis.units
+                yaxis.label yaxis.description yaxis.units
+            } $path $lib1 $lib2]
+
+            set cpath2 [$lib2 children -as path $path.component]
+            foreach elem [$lib1 children -as path $path.component] {
+                set i [lsearch -exact $cpath2 $elem]
+                if {$i >= 0} {
+                    set cpath2 [lreplace $cpath2 $i $i]
+                }
+
+                eval lappend diffs [diffdatalines $elem $lib1 $lib2]
+            }
+            foreach elem $cpath2 {
+                # anything left in lib2 that's not in lib1?
+                lappend diffs "missing component at $elem"
+            }
+        }
+        image {
+            eval lappend diffs [diffattrs {
+                about.label about.description resize convert
+            } $path $lib1 $lib2]
+
+            set v1 [$lib1 get $path.current]
+            set v2 [$lib2 get $path.current]
+            if {$v1 ne $v2} {
+                lappend diffs "value mismatch at $path.current"
+            }
+        }
+        integer {
+            eval lappend diffs [diffattrs {
+                about.label about.description min max default
+            } $path $lib1 $lib2]
+
+            set v1 [$lib1 get $path.current]
+            set v2 [$lib2 get $path.current]
+            if {[string is integer -strict $v1]
+                  && [string is integer -strict $v2]} {
+                if {$v1 != $v2} {
+                    lappend diffs "value mismatch at $path.current"
+                }
+            } elseif {$v1 ne $v2} {
+                lappend diffs "value mismatch at $path.current"
+            }
+        }
+        log {
+            set v1 [$lib1 get $path]
+            set v2 [$lib2 get $path]
+            if {$v1 ne $v2} {
+                lappend diffs "value mismatch at $path"
+            }
+        }
+        mesh {
+            eval lappend diffs [diffattrs {
+                about.label about.description units hide
+            } $path $lib1 $lib2]
+
+            # look for differences in nodes
+            set cpath2 [$lib2 children -as path -type node $path]
+            foreach elem [$lib1 children -as path -type node $path] {
+                set i [lsearch -exact $cpath2 $elem]
+                if {$i >= 0} {
+                    set cpath2 [lreplace $cpath2 $i $i]
+                }
+
+                eval lappend diffs [diffdatalines $elem $lib1 $lib2]
+            }
+            foreach elem $cpath2 {
+                # anything left in lib2 that's not in lib1?
+                lappend diffs "missing component at $elem"
+            }
+
+            # look for differences in elements
+            set cpath2 [$lib2 children -as path -type element $path]
+            foreach elem [$lib1 children -as path -type element $path] {
+                set i [lsearch -exact $cpath2 $elem]
+                if {$i >= 0} {
+                    set cpath2 [lreplace $cpath2 $i $i]
+                }
+
+                set v1 [$lib1 get $elem.node]
+                set v2 [$lib2 get $elem.node]
+                if {$v1 ne $v2} {
+                    lappend diffs "value mismatch at $path.node"
+                }
+            }
+            foreach elem $cpath2 {
+                # anything left in lib2 that's not in lib1?
+                lappend diffs "missing component at $elem"
+            }
+        }
+        note {
+            eval lappend diffs [diffattrs {contents} $path $lib1 $lib2]
+        }
+        number {
+            eval lappend diffs [diffattrs {
+                about.label about.description about.icon
+                min max units color default
+            } $path $lib1 $lib2]
+
+            set v1 [$lib1 get $path.current]
+            set v2 [$lib2 get $path.current]
+            if {[string is double -strict $v1]
+                  && [string is double -strict $v2]} {
+                if {[Rappture::objects::ObjVal::cmpdbl $v1 $v2] != 0} {
+                    lappend diffs "value mismatch at $path.current"
+                }
+            } elseif {$v1 ne $v2} {
+                lappend diffs "value mismatch at $path.current"
+            }
+        }
+        sequence {
+            eval lappend diffs [diffattrs {
+                about.label about.description index.label
+            } $path $lib1 $lib2]
+
+            set cpath2 [$lib2 children -as path -type element $path]
+            foreach elem [$lib1 children -as path -type element $path] {
+                set i [lsearch -exact $cpath2 $elem]
+                if {$i >= 0} {
+                    set cpath2 [lreplace $cpath2 $i $i]
+                }
+
+                # must have the same index
+                set v1 [$lib1 get $elem.index]
+                set v2 [$lib2 get $elem.index]
+                if {$v1 ne $v2} {
+                    lappend diffs "value mismatch at $elem.index"
+                    continue
+                }
+
+                # must have the same values
+                set parts1 [lsort [$lib1 children -as path $elem]]
+                set parts2 [lsort [$lib2 children -as path $elem]]
+                if {$parts1 ne $parts2} {
+                    lappend diffs "value mismatch at $elem"
+                    continue
+                }
+
+                foreach p $parts1 {
+                    set ptype [$lib1 element -as type $p]
+                    if {[lsearch $knowntypes $ptype] >= 0} {
+                        eval lappend diffs [diff $p $lib1 $lib2]
+                    }
+                }
+            }
+            foreach elem $cpath2 {
+                # anything left in lib2 that's not in lib1?
+                lappend diffs "missing component at $elem"
+            }
+        }
+        string {
+            eval lappend diffs [diffattrs {
+                about.label about.description default size hints
+            } $path $lib1 $lib2]
+
+            set v1 [$lib1 get $path.current]
+            set v2 [$lib2 get $path.current]
+            if {$v1 ne $v2} {
+                lappend diffs "value mismatch at $path.current"
+            }
+        }
+        structure {
+            eval lappend diffs [diffattrs {
+                about.label about.description
+            } $path $lib1 $lib2]
+
+            # check all parameters associated with the structure
+            set cpath2 [$lib2 children -as path $path.current.parameters]
+            foreach elem [$lib1 children -as path $path.current.parameters] {
+                set i [lsearch -exact $cpath2 $elem]
+                if {$i >= 0} {
+                    set cpath2 [lreplace $cpath2 $i $i]
+                }
+                eval lappend diffs [diff $elem $lib1 $lib2]
+            }
+            foreach elem $cpath2 {
+                # anything left in lib2 that's not in lib1?
+                lappend diffs "missing component at $elem"
+            }
+
+            # check all components in the structure
+            set cpath2 [$lib2 children -as path $path.current.components]
+            foreach elem [$lib1 children -as path $path.current.components] {
+                set i [lsearch -exact $cpath2 $elem]
+                if {$i >= 0} {
+                    set cpath2 [lreplace $cpath2 $i $i]
+                }
+
+                switch -- [$lib1 element -as type $elem] {
+                    box {
+                        eval lappend diffs [diffattrs {
+                            about.label about.color about.icon material
+                        } $elem $lib1 $lib2]
+
+                        set c2 [$lib2 children -as path -type corner $elem]
+                        foreach c [$lib1 children -as path -type corner $elem] {
+                            set i [lsearch -exact $c2 $c]
+                            if {$i >= 0} {
+                                set c2 [lreplace $c2 $i $i]
+                            }
+
+                            set v1 [$lib1 get $c]
+                            set v2 [$lib2 get $c]
+                            if {$v1 ne $v2} {
+                                lappend diffs "value mismatch at $c"
+                            }
+                        }
+                        foreach c $c2 {
+                            # anything left in lib2 that's not in lib1?
+                            lappend diffs "missing component at $c"
+                        }
+                    }
+                    molecule {
+                        eval lappend diffs [diffattrs {
+                            about.emblems formula
+                        } $elem $lib1 $lib2]
+
+                        # check for PDB data
+                        set v1 [$lib1 get $elem.pdb]
+                        set v2 [$lib2 get $elem.pdb]
+                        if {$v1 ne $v2} {
+                            lappend diffs "value mismatch at $elem.pdb"
+                        }
+
+                        # check for the old-style atom data
+                        set c2 [$lib2 children -as path -type atom $elem]
+                        foreach c [$lib1 children -as path -type atom $elem] {
+                            set i [lsearch -exact $c2 $c]
+                            if {$i >= 0} {
+                                set c2 [lreplace $c2 $i $i]
+                            }
+
+                            set v1 [$lib1 get $c.symbol]
+                            set v2 [$lib2 get $c.symbol]
+                            if {$v1 ne $v2} {
+                                lappend diffs "value mismatch at $c"
+                            }
+
+                            set df [diffdatalines $c.xyz $lib1 $lib2]
+                            if {$df ne ""} {
+                                eval lappend diffs $df
+                            }
+                        }
+                        foreach c $c2 {
+                            # anything left in lib2 that's not in lib1?
+                            lappend diffs "missing component at $c"
+                        }
+                    }
+                    default {
+                        error "don't know how to diff $elem"
+                    }
+                }
+            }
+            foreach elem $cpath2 {
+                # anything left in lib2 that's not in lib1?
+                lappend diffs "missing component at $elem"
+            }
+        }
+        table {
+            eval lappend diffs [diffattrs {
+                about.label about.description
+            } $path $lib1 $lib2]
+
+            set cpath2 [$lib2 children -as path -type column $path]
+            foreach elem [$lib1 children -as path -type column $path] {
+                set i [lsearch -exact $cpath2 $elem]
+                if {$i >= 0} {
+                    set cpath2 [lreplace $cpath2 $i $i]
+                }
+
+                eval lappend diffs [diffattrs {label units} $elem $lib1 $lib2]
+            }
+            foreach elem $cpath2 {
+                # anything left in lib2 that's not in lib1?
+                lappend diffs "missing component at $elem"
+            }
+
+            # make sure the table data matches
+            eval lappend diffs [diffdatalines $path.data $lib1 $lib2]
+        }
+        unirect2D {
+            eval lappend diffs [diffattrs {
+                about.label about.description hide
+                xaxis.label xaxis.units xaxis.numpoints
+                yaxis.label yaxis.units yaxis.numpoints
+            } $path $lib1 $lib2]
+
+            foreach elem {xaxis.min xaxis.max yaxis.min yaxis.max} {
+                set v1 [$lib1 get $path.$elem]
+                set v2 [$lib2 get $path.$elem]
+
+                if {[string is double -strict $v1]
+                      && [string is double -strict $v2]} {
+                    if {[Rappture::objects::ObjVal::cmpdbl $v1 $v2] != 0} {
+                        lappend diffs "value mismatch at $path.$elem"
+                    }
+                } elseif {$v1 ne $v2} {
+                    lappend diffs "value mismatch at $path.$elem"
+                }
+            }
+        }
+        loader {
+        }
+        default {
+            puts stderr "ignoring \"$type1\" for \"$path\""
+        }
+    }
+    return $diffs
+}
+
+# ----------------------------------------------------------------------
+# USAGE: diffattrs <attrList> <path> <lib1> <lib2>
+#
+# Used internally by the "diff" proc to look for a list of attributes
+# at the given <path> and see if there are any differences.  It is
+# considered a difference if the attribute is defined on one object
+# but not another, or if the string values are different.  Returns ""
+# if they are the same, and a list of differences if they are not.
+# ----------------------------------------------------------------------
+proc diffattrs {attrlist path lib1 lib2} {
+    set diffs ""
+    foreach name $attrlist {
+        set t1 [$lib1 element -as type $path.$name]
+        set t2 [$lib2 element -as type $path.$name]
+        if {$t1 ne "" || $t2 ne ""} {
+            if {[$lib1 get $path.$name] ne [$lib2 get $path.$name]} {
+                lappend diffs "attribute mismatch at $path.$name"
+            }
+        }
+    }
+    return $diffs
+}
+
+# ----------------------------------------------------------------------
+# USAGE: diffdatalines <path> <lib1> <lib2>
+#
+# Used internally by the "diff" proc to look for a list of attributes
+# at the given <path> and see if there are any differences.  It is
+# considered a difference if the attribute is defined on one object
+# but not another, or if the string values are different.  Returns ""
+# if they are the same, and a list of differences if they are not.
+# ----------------------------------------------------------------------
+proc diffdatalines {path lib1 lib2} {
+    set diffs ""
+
+    set data1 [split [string trim [$lib1 get $path]] \n]
+    set data2 [split [string trim [$lib2 get $path]] \n]
+    if {[llength $data1] != [llength $data2]} {
+        return [list "value mismatch at $path"]
+    }
+
+    foreach line1 $data1 line2 $data2 {
+        if {[llength $line1] != [llength $line2]} {
+            return [list "value mismatch at $path"]
+        }
+        foreach d1 $line1 d2 $line2 {
+            if {[string is double -strict $d1]
+                  && [string is double -strict $d2]} {
+                if {[Rappture::objects::ObjVal::cmpdbl $d1 $d2] != 0} {
+                    return [list "value mismatch at $path"]
+                }
+            } elseif {$d1 ne $d2} {
+                return [list "value mismatch at $path"]
+            }
+        }
+    }
+    return ""
+}
+
+# ======================================================================
+
+if {$argc < 2} {
+    puts stderr "USAGE: rpdiff file1.xml file2.xml"
+    exit 9
+}
+set lib1 [Rappture::library [lindex $argv 0]]
+set lib2 [Rappture::library [lindex $argv 1]]
+set path "output"
+if { $argc > 2 } {
+   set arg [lindex $argv 2]
+   if { $arg == "-path" && $argc == 4 } {
+      set path [lindex $argv 3]
+   }
+}
+
+# compute the differences
+set diffs [diff $path $lib1 $lib2]
+
+if {[llength $diffs] == 0} {
+    exit 0
+}
+
+# print a list of differences and exit
+foreach mesg $diffs {
+    puts $mesg
+}
+exit 1
Index: /tags/1.6.0/gui/apps/rptimes
===================================================================
--- /tags/1.6.0/gui/apps/rptimes	(revision 6168)
+++ /tags/1.6.0/gui/apps/rptimes	(revision 6168)
@@ -0,0 +1,311 @@
+#!/bin/sh
+# ----------------------------------------------------------------------
+#  RPTIMES
+#
+#  Scans through a series of run.xml files and puts their runtime info
+#  into a SQLite database.  This database can be used to predict
+#  future runtimes for runs with similar parameters.
+#
+#    USAGE:
+#    % rptimes <run.xml> ?<run.xml>...?
+#    % rptimes -v <sqliteDB>
+#
+#  Exits with status 0 if successful, and non-zero if any run.xml
+#  files cannot be processed.
+#
+#  Creates an SQLite DB for each unique tool referenced by a run.xml
+#  file.  Each DB file contains a table of parameters and a table of
+#  "jobs" info.  The jobs table includes CPU time and Wall time
+#  measurements.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2013  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+# \
+exec tclsh "$0" ${1+"$@"}
+# tclsh executes the rest...
+
+package require Rappture
+package require sqlite3
+package require md5
+package require base64
+
+if {[llength $argv] < 1} {
+    puts stderr "USAGE: rptimes run.xml ?run.xml...?"
+    puts stderr "USAGE: rptimes -v tool.sql3"
+    exit 1
+}
+
+set op "ingest"
+while {[llength $argv] > 0} {
+    set flag [lindex $argv 0]
+    if {![string match -* $flag]} {
+        break
+    }
+    switch -- $flag {
+        -v {
+            set op "view"
+            if {[llength $argv] < 2} {
+                puts stderr "USAGE: rptimes -v tool.sql3"
+                exit 1
+            }
+            set dbfile [lindex $argv 1]
+            set argv [lrange $argv 2 end]
+        }
+        default {
+            puts stderr "bad flag \"$flag\": should be -v"
+            exit 1
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: normval <libObj> <rappturePath> ?-default?
+#
+# Returns information about the normalized value of a particular input
+# in the Rappture run <libObj> at the specified <rappturePath> for the
+# input.  The optional -default switch causes the processing to apply
+# to the default value instead of the current value.
+#
+# Returns info as a list of values in the form:
+#
+#   <rappturePath> <type> <normValue>
+#   <rappturePath2> <type2> <normValue2>
+#   ...
+#
+# Most inputs return just 3 values: path/type/value.  But some inputs
+# split into multiple parts and return several triples.  Images, for
+# example, return a hash for the image itself, but also width/height
+# parameters.  The width/height may actually be the better predictors
+# of CPU time required.
+# ----------------------------------------------------------------------
+proc normval {libobj path {what "-current"}} {
+    set rlist ""
+
+    # get the default or the current raw value
+    set raw ""
+    switch -- $what {
+        -default {
+            set raw [$libobj get $path.default]
+        }
+        -current {
+            if {[$libobj element $path.current] ne ""} {
+                set raw [$libobj get $path.current]
+            } else {
+                set raw [$libobj get $path.default]
+            }
+        }
+        default {
+            error "bad option \"$what\": should be -current or -default"
+        }
+    }
+
+    # normalize the value depending on the type
+    switch -- [$libobj element -as type $path] {
+        integer {
+            lappend rlist $path "INTEGER" $raw
+        }
+        number {
+            set norm ""
+            if {$raw ne ""} {
+                # then normalize to default units
+                set units [$libobj get $path.units]
+                if {$units ne ""} {
+                    set norm [Rappture::Units::convert $raw \
+                        -context $units -to $units -units off]
+                }
+            }
+            lappend rlist $path "REAL" $norm
+        }
+        boolean - choice - loader - periodicelement {
+            lappend rlist $path "TEXT" $raw
+        }
+        image {
+            # convert long string inputs into a unique (short) hash
+            set norm [base64::encode [md5::md5 $raw]]
+            if {[catch {package require Img; wm withdraw .} result]} {
+                error "can't analyze <image> types: $result"
+            }
+            if {[catch {image create photo -data $raw} result]} {
+                error "can't analyze <image> data: $result"
+            }
+            set width [image width $result]
+            set height [image height $result]
+
+            lappend rlist $path "TEXT" $norm
+            lappend rlist $path-WIDTH "INTEGER" $width
+            lappend rlist $path-HEIGHT "INTEGER" $height
+        }
+        string {
+            # convert long string inputs into a unique (short) hash
+            set norm [base64::encode [md5::md5 $raw]]
+            lappend rlist $path "TEXT" $norm
+        }
+        structure {
+            # oops! structure doesn't have a clear .current value
+            # use the XML dump of the data as its "value"
+            if {$what eq "-current"} {
+                if {[catch {$libobj xml $path.current} raw]} {
+                    if {[catch {$libobj xml $path.default} raw]} {
+                        set raw ""
+                    }
+                }
+            } elseif {[catch {$libobj xml $path.default} raw]} {
+                set raw ""
+            }
+            set norm [base64::encode [md5::md5 $raw]]
+            lappend rlist $path "TEXT" $norm
+        }
+        default {
+            # for anything else, punt and use the raw value
+            lappend rlist $path "TEXT" $raw
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: escapeQuotes <string>
+#
+# Escapes single quotes in the given <string> by escaping the quote.
+# In SQLite, this is done by doubling the quote.  This makes it
+# possible to embed the string in another quoted string like
+# 'hello ''world'''.  Returns a string with escaped quotes.
+# ----------------------------------------------------------------------
+proc escapeQuotes {str} {
+    regsub -all {([^\'])\'} $str {\1''} str
+    return $str
+}
+
+#
+# Handle "view" operation
+#
+if {$op eq "view"} {
+    sqlite3 db $dbfile
+
+    puts "PARAMETERS:"
+    db eval {SELECT nickName,rappturePath,type FROM parameters;} data {
+        puts " - $data(nickName) ($data(type)) = $data(rappturePath)"
+    }
+
+    puts "\nJOBS:"
+    set n 0
+    db eval {SELECT runToken,date,cpuTime,wallTime FROM jobs;} data {
+        puts [format " [incr n]) [clock format $data(date)]:  %6.2f CPU, %6.2f Wall" $data(cpuTime) $data(wallTime)]
+    }
+
+    catch {db close}
+    exit 0
+}
+
+#
+# Run through each run.xml file and load params and execution time
+#
+set status 0
+foreach fname $argv {
+    set db ""
+    set err ""
+    if {[catch {Rappture::library $fname} libobj]} {
+        set err "failed: $fname ($libobj)"
+    }
+
+    set app [$libobj get tool.id]
+    set rev [$libobj get tool.version.application.revision]
+    if {$err eq ""} {
+        if {$app eq "" || $rev eq ""} {
+            set err "failed: $fname (missing app info -- is tool deployed?)"
+        } else {
+            set dbfile "${app}_r$rev.sql3"
+            if {![file exists $dbfile]} {
+                sqlite3 db $dbfile
+                db eval {CREATE TABLE parameters(nickName TEXT PRIMARY KEY, rappturePath TEXT, defValue TEXT, type TEXT);}
+                db eval {CREATE TABLE jobs(runToken TEXT, date TEXT, cpuTime REAL, wallTime REAL, nCpus INTEGER, venue TEXT);}
+            } else {
+                sqlite3 db $dbfile
+            }
+        }
+    }
+
+    if {$err eq "" && [set cput [$libobj get output.cputime]] eq ""} {
+        set err "failed: $fname (missing cpu time)"
+    }
+    if {$err eq "" && [set wallt [$libobj get output.walltime]] eq ""} {
+        set err "failed: $fname (missing wall time)"
+    }
+
+    set date "?"
+    if {$err eq "" && [$libobj get output.time] ne "" && [catch {clock scan [$libobj get output.time]} d] == 0} {
+        set date $d
+    }
+
+    if {$err eq "" && [$libobj get output.venue.name] ne ""} {
+        set venue [$libobj get output.venue.name]
+    } else {
+        set venue ""
+    }
+
+    if {$err eq "" && [$libobj get output.venue.ncpus] ne ""} {
+        set ncpus [$libobj get output.venue.ncpus]
+    } else {
+        set ncpus 1
+    }
+
+    if {$err eq ""} {
+        set runtoken [base64::encode [md5::md5 [$libobj xml]]]
+
+        set cols ""
+        set vals ""
+        foreach path [Rappture::entities $libobj input] {
+            # get the nickname (column name) for this paraemter
+            set id [db eval "SELECT nickName from parameters where rappturePath='$path'"]
+            if {$id eq ""} {
+                # haven't seen this parameter before -- add it
+                foreach {rp type def} [normval $libobj $path -default] {
+                    set num [db eval "SELECT COUNT(nickName) from parameters;"]
+                    set id [format "x%03d" [incr num]]
+
+                    db eval "INSERT INTO parameters values('$id','$rp','[escapeQuotes $def]','$type')"
+                    db eval "ALTER TABLE jobs ADD COLUMN $id $type;"
+                }
+            }
+
+            # add the current value onto the values we're building up for ALTER
+            foreach {raw norm} [Rappture::LibraryObj::value $libobj $path] break
+
+            foreach {rp type val} [normval $libobj $path] {
+                set num [db eval "SELECT COUNT(nickName) from parameters;"]
+                set id [db eval "SELECT nickName FROM parameters WHERE rappturePath='$rp'"]
+                if {$id eq ""} {
+                    set err "INTERNAL ERROR: couldn't find nickName for existing parameter $rp"
+                    break
+                }
+                lappend cols $id
+                if {$type eq "TEXT"} {
+                    lappend vals '[escapeQuotes $val]'
+                } elseif {$val ne ""} {
+                    lappend vals $val
+                } else {
+                    lappend vals ''
+                }
+            }
+        }
+
+        if {$err eq ""} {
+            # add the info for this job
+            db eval "DELETE from jobs WHERE runToken='$runtoken';"
+            db eval "INSERT INTO jobs (runToken,date,cpuTime,wallTime,nCpus,venue,[join $cols ,]) values ('$runtoken','$date',$cput,$wallt,$ncpus,'$venue',[join $vals ,]);"
+        }
+    }
+
+    if {$err ne ""} {
+        puts stderr $err
+        set status 1
+    }
+    catch {db close}
+}
+
+exit $status
Index: /tags/1.6.0/gui/apps/simsim.in
===================================================================
--- /tags/1.6.0/gui/apps/simsim.in	(revision 6168)
+++ /tags/1.6.0/gui/apps/simsim.in	(revision 6168)
@@ -0,0 +1,810 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ======================================================================
+#  AUTHOR:  Derrick S. Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+dir=`dirname $0` ; \
+. $dir/rappture.env ; \
+exec $dir/tclsh "$0" "$@"
+
+package require Rappture
+package require RapptureGUI
+
+proc defaultHandler {child} {
+    set childchildList {}
+    set units [$child get "units"]
+    # this is for nanowire
+    if {[string is integer -strict $units]} {
+        set units ""
+    }
+    set defaultVal [$child get "default"]
+    if {"" != $defaultVal} {
+        if {"" != $units} {
+            set defaultVal [Rappture::Units::convert $defaultVal \
+                            -context $units -to $units -units on]
+        }
+        $child put "current" $defaultVal
+    } else {
+        if {"components" != [$child element -as type]} {
+            set childchildList [$child children]
+        } elseif {"parameters" != [$child element -as type]} {
+            set childchildList [$child children]
+        } else {
+            set childchildList [$child children]
+        }
+    }
+    return $childchildList
+}
+
+proc numberHandler {child} {
+    set value ""
+    set units [$child get "units"]
+    set min [$child get "min"]
+    set max [$child get "max"]
+
+    if {"" != $min} {
+        if {"" != $units} {
+            # check to see if the user added units to their min value
+            # apps like mosfet need this check.
+            set min [Rappture::Units::convert $min \
+                        -context $units -to $units -units off]
+            if {[string is double -strict $min]} {
+                # pass
+            }
+        }
+    }
+
+    if {"" != $max} {
+        if {"" != $units} {
+            # check to see if the user added units to their min value
+            # apps like mosfet need this check.
+            set max [Rappture::Units::convert $max \
+                        -context $units -to $units -units off]
+            if {[string is double -strict $max]} {
+                # pass
+            }
+        }
+    }
+
+    if {"yes" == [$child get "simset"]} {
+        $child remove "simset"
+    } else {
+        if { ("" != $min) && ("" != $max) } {
+            set value [random $min $max]
+            $child put current $value$units
+        } else {
+            defaultHandler $child
+        }
+    }
+}
+
+proc integerHandler {child} {
+    set value ""
+    set units [$child get "units"]
+    set min [$child get "min"]
+    set max [$child get "max"]
+
+    # nanowire needs this because they set units == 0 and 1 ???
+    if {[string is integer -strict $units]} {
+        set units ""
+    }
+
+    if {"" != $min} {
+        if {"" != $units} {
+            # check to see if the user added units to their min value
+            # apps like mosfet need this check.
+            set min [Rappture::Units::convert $min \
+                        -context $units -to $units -units off]
+            if {[string is integer -strict $min]} {
+                # pass
+            }
+        }
+    }
+
+    if {"" != $max} {
+        if {"" != $units} {
+            # check to see if the user added units to their min value
+            # apps like mosfet need this check.
+            set max [Rappture::Units::convert $max \
+                        -context $units -to $units -units off]
+            if {[string is integer -strict $max]} {
+                # pass
+            }
+        }
+    }
+
+    if {"yes" == [$child get "simset"]} {
+        $child remove "simset"
+    } else {
+        if { ("" != $min) && ("" != $max) } {
+            set value [randomInt $min $max]
+            $child put current $value$units
+        } else {
+            defaultHandler $child
+        }
+    }
+
+}
+
+proc booleanHandler {child} {
+    if {"yes" == [$child get "simset"]} {
+        $child remove "simset"
+    } else {
+        set value [expr {int(rand()*2)}]
+        if {$value == 1} {
+            set value "yes"
+        } else {
+            set value "no"
+        }
+        $child put "current" $value
+    }
+}
+
+proc loaderHandler {child toolDir} {
+
+    set exDir [file join $toolDir "examples"]
+    if {! [file isdirectory $exDir]} {
+        # in this case we should try to keep processing, not exit
+        puts "could not find examples directory: $exDir"
+        exit 0
+    }
+
+    set exPathExp [$child get example]
+    set fpath [file join $exDir $exPathExp]
+    set exFileList [glob -nocomplain $fpath]
+
+    if {0 == [llength $exFileList]} {
+        puts "while searching examples directory: $exDir"
+        puts "could not open find files matching regex: $exPathExp"
+        set defaultEx [$child get "default"]
+        if {[file exists [file join $exDir $defaultEx]]} {
+            lappend exFileList $defaultEx
+            puts "using default example file"
+        } else {
+            puts "default example file does not exists, exiting"
+            exit 0;
+        }
+    }
+
+    set importExFileIdx [expr {int(rand()*[llength $exFileList])}]
+    set importExFile [lindex $exFileList $importExFileIdx]
+
+    if {! [file exists $importExFile]} {
+        # importExFile does not exist
+    }
+
+    set exlib [Rappture::library $importExFile]
+
+    # get the about.label from the file
+    # if about.label does not exist, use the file name
+    set importExLabel [$exlib get about.label]
+    if {"" != $importExLabel} {
+        set currentVal $importExLabel
+    } else {
+        set currentVal [file tail $importExFile]
+    }
+
+    $child put "current" $currentVal
+
+    set exlibChildList [::Rappture::entities -as object $exlib "input"]
+    return $exlibChildList
+}
+
+proc groupHandler {child} {
+    return [$child children -as object]
+}
+
+proc choiceHandler {valType child} {
+    if {"yes" == [$child get "simset"]} {
+        $child remove "simset"
+    } else {
+        set optList [$child children -as object -type option]
+        set optLib ""
+        set value ""
+        if {[llength $optList] > 0} {
+            if {"random" == $valType} {
+                set optIdx [expr {int(rand()*[llength $optList])}]
+                set optLib [lindex $optList $optIdx]
+                set value [$optLib get value]
+            } elseif {"default" == $valType} {
+                set defaultVal [$child get default]
+                foreach optLib $optList {
+                    set label [$optLib get about.label]
+                    set valTag [$optLib get value]
+                    if {($defaultVal == $label) || ($defaultVal == $valTag)} {
+                        set value $valTag
+                        break
+                    }
+                }
+            }
+
+            if {"" == $value} {
+                set optLib [lindex $optList 0]
+                set value [$optLib get value]
+                if {"" == $value} {
+                    set value [$optLib get about.label]
+                }
+            }
+        }
+        $child put "current" $value
+    }
+}
+
+proc defaultize {xmlobj toolDir} {
+    set childList [$xmlobj children -as object input]
+
+    while {[llength $childList]} {
+        set child [lrange $childList 0 0]
+        set childList [lreplace $childList 0 0]
+
+        switch -- [$child element -as type] {
+            number      { defaultHandler $child }
+            integer     { defaultHandler $child }
+            boolean     { defaultHandler $child }
+            string      { defaultHandler $child }
+            choice      { choiceHandler default $child }
+            loader      { loaderHandler  $child $toolDir }
+            structure   { defaultHandler $child }
+            group       { set cclist [groupHandler $child]
+                          set childList [concat $childList $cclist] }
+            phase       { set cclist [groupHandler $child]
+                          set childList [concat $childList $cclist] }
+            default     { defaultHandler $child }
+        }
+    }
+}
+
+proc randomize {presetArr xmlobj toolDir} {
+    upvar $presetArr presets
+    set childList [$xmlobj children -as object input]
+
+    while {[llength $childList]} {
+
+        set child [lrange $childList 0 0]
+        set childList [lreplace $childList 0 0]
+
+        set cpath [cleanPath [$child element -as path]]
+
+        set ppath [$child parent -as path]
+        set cPresets [array get presets $cpath*]
+
+        foreach {cPresetsPath cPresetsVal} $cPresets {
+            set cutIdx [expr {[string length $cpath] + 1}]
+            set iPath [string range $cPresetsPath $cutIdx end]
+
+            # apply the preset value and remove from preset array
+            $child put $iPath $cPresetsVal
+            unset presets($cPresetsPath)
+
+            # if the value was set on a current node, then set a preset flag
+            if {"current" == $iPath} {
+                $child put simset "yes"
+            }
+        }
+
+        switch -- [$child element -as type] {
+            number    { numberHandler  $child }
+            integer   { integerHandler $child }
+            boolean   { booleanHandler $child }
+            string    { defaultHandler $child }
+            choice    { choiceHandler random  $child }
+            loader    {
+                set cpath [$child element -as path]
+                set ccList [loaderHandler $child $toolDir]
+                foreach cc $ccList {
+                    set ccpath [$cc element -as path]
+                    # even though the loader might have been returned in ccList
+                    # do not add the loader back to the childList or you might
+                    # get an infinite loop
+                    if {$cpath != $ccpath} {
+                        set ccpath [cleanPath $ccpath]
+                        $xmlobj copy $ccpath from $cc ""
+                        lappend childList [$xmlobj element -as object $ccpath]
+                    }
+                }
+            }
+            structure { defaultHandler $child }
+            group     {
+                set ccList [groupHandler $child]
+                set childList [concat $childList $ccList]
+            }
+            phase     {
+                set ccList [groupHandler $child]
+                set childList [concat $childList $ccList]
+            }
+            default   { defaultHandler $child }
+        }
+    }
+}
+
+proc random {m M} {
+    return [expr {$m+(rand()*($M-$m))}]
+}
+
+proc randomInt {m M} {
+    return [expr {int(rand()*($M-$m+1)+$m)}]
+}
+
+proc cleanPath { path } {
+    if {"." == [string index $path 0]} {
+        # this is because tcl's library module (element -as path)
+        # returns a crazy dot in the 0th position
+        set path [string range $path 1 end]
+    }
+    return $path
+}
+
+proc parsePathVal {listVar returnVar} {
+    upvar $listVar params
+    upvar $returnVar presetArr
+    catch {unset presetArr}
+
+    # initialize variables
+    set pathValStr ""
+    set match "junk"
+
+    while {"" != $match} {
+        set match ""
+        set path ""
+        set val ""
+        set val2 ""
+        set val3 ""
+        set val4 ""
+        set pathValStr [string trimleft [join $params " "]]
+
+        # search the params for:
+        # 1) xml path
+        # 2) followed by = sign
+        # 3) followed by a starting " sign
+        # 4) followed by any text (including spaces)
+        # 5) followed by an ending " sign
+        # ex: input.number(temperature).current="400K"
+        # ex: input.number(temperature).current=400K
+        # ex: input.string(blahh).current="hi momma, i love you!"
+        #    \"([^\"]+)\"
+        #    ((\"([^\"]+)\")|(:([^:]+):)|(\'([^\']+)\')|([^\s]+))
+        regexp -expanded {
+            (
+                [a-zA-Z0-9]+(\([a-zA-Z0-9._]+\))?
+                (\.[a-zA-Z0-9]+(\([a-zA-Z0-9._]+\))?)*
+            )
+            =
+            ((\"([^\"]+)\")|(\'([^\']+)\')|([^\s]+))
+        } $pathValStr match path junk junk junk val junk val2 junk val3 val4
+
+
+        if {"" != $match} {
+            # remove the matching element from orphaned params list
+            foreach p [split $match] {
+                set paramsIdx [lsearch -exact $params $p]
+                set params [lreplace $params $paramsIdx $paramsIdx]
+            }
+
+            if {("" != $val2) && ("" == $val3) && ("" == $val4)} {
+                set val $val2
+            } elseif {("" == $val2) && ("" != $val3) && ("" == $val4)} {
+                set val $val3
+            } elseif {("" == $val2) && ("" == $val3) && ("" != $val4)} {
+                set val $val4
+            }
+
+            # add the name and value to our preset array
+            set presetArr($path) $val
+        }
+    }
+}
+
+proc printHelp {} {
+    set help {
+simsim [OPTIONS] [CONST]
+
+simulator simulator - simulate simulation
+
+OPTIONS:
+ -tool <path>        - use the tool.xml file specified at <path>
+ -values <valtype>   - the type of values used to populate driver file.
+                       valid <valtype>'s include:
+                       "default" - replace <current> values with <default>'s,
+                       "current" - use <current> values (ie do nothing),
+                       "random" - generate random values for <current>.
+ -driver <path>      - write a driver file to <path>.
+ -compare <path>     - compare the results with the run.xml
+                       file at <path>.
+ -runfile <path>     - move the run file to <path>
+ -nosim              - no simulation.
+ -help               - print this help menu.
+
+CONST:
+ when -values is set to random, constant values can be set for
+ specific inputs. the general form for constant values is:
+
+   xmlpath(id)=value
+
+ where xmlpath is the path of the element in the xml tree,
+ id is the id of the xml node and value is the constant value
+ you want to place in the element. the following the constant
+ will set input.number(Ef).current to the value "2eV":
+
+   input.number(Ef)=2eV
+
+EXAMPLES:
+simulate using ./tool.xml, default values, no comparisons or driver
+    simsim
+
+simulate using ./tool.xml, random values, no comparisons or driver
+    simsim -values random
+
+from ./tool.xml, create a driver file named "mydriverfile.xml"
+with default values
+    simsim -nosim -driver mydriverfile.xml
+
+from ./tool.xml, create a driver file named "mydriverfile.xml"
+with random values
+    simsim -values random -nosim -driver mydriverfile.xml
+
+from ./tool.xml, simulate with random values but set
+input.number(Ef) to "2eV"
+    simsim -values random input.number(Ef).current=2eV
+
+run a simulation using the current values from driver.xml,
+"-values current" is only useful if you are asking
+simsim to run the simulation and you provide a driver file.
+    simsim -tool driver.xml -values current
+
+compare two xml file, don't do a simulation, don't print a driver.xml
+    simsim -tool driver.xml -compare previousrun.xml -nosim
+
+run a simulation and compare the result to previousrun.xml
+    simsim -compare previousrun.xml
+
+}
+    puts $help
+    exit 0
+}
+
+proc diffs {xmlobj1 xmlobj2} {
+    set rlist ""
+
+    # query the values for all entities in both objects
+    set thisv [concat [Rappture::entities $xmlobj1 "input"] [Rappture::entities $xmlobj1 "output"]]
+    set otherv [concat [Rappture::entities $xmlobj2 "input"] [Rappture::entities $xmlobj2 "output"]]
+
+    # scan through values for this object and compare against other one
+    foreach path $thisv {
+        set i [lsearch -exact $otherv $path]
+        if {$i < 0} {
+            foreach {raw norm} [value $xmlobj1 $path] break
+            lappend rlist - $path $raw ""
+        } else {
+            foreach {traw tnorm} [value $xmlobj1 $path] break
+            foreach {oraw onorm} [value $xmlobj2 $path] break
+            if {![string equal $tnorm $onorm]} {
+                lappend rlist c $path $traw $oraw
+            }
+            set otherv [lreplace $otherv $i $i]
+        }
+    }
+
+    #add any values left over in the other object
+    foreach path $otherv {
+        foreach {oraw onorm} [Rappture::LibraryObj::value $xmlobj2 $path] break
+        lappend rlist + $path "" $oraw
+    }
+    return $rlist
+}
+
+proc value {libobj path} {
+    switch -- [$libobj element -as type $path] {
+        structure {
+            set raw $path
+            # try to find a label to represent the structure
+            set val [$libobj get $path.about.label]
+            if {"" == $val} {
+                set val [$libobj get $path.current.about.label]
+            }
+            if {"" == $val} {
+                if {[$libobj element $path.current] != ""} {
+                    set comps [$libobj children $path.current.components]
+                    set val "<structure> with [llength $comps] components"
+                } else {
+                    set val "<structure>"
+                }
+            }
+            return [list $raw $val]
+        }
+        number {
+            # get the usual value...
+            set raw ""
+            if {"" != [$libobj element $path.current]} {
+                set raw [$libobj get $path.current]
+            } elseif {"" != [$libobj element $path.default]} {
+                set raw [$libobj get $path.default]
+            }
+            if {"" != $raw} {
+                set val $raw
+                # then normalize to default units
+                set units [$libobj get $path.units]
+                if {"" != $units} {
+                    set val [Rappture::Units::convert $val \
+                        -context $units -to $units -units off]
+                }
+            }
+            return [list $raw $val]
+        }
+        curve {
+            set raw ""
+            if {"" != [$libobj element $path.component.xy]} {
+                set raw [$libobj get $path.component.xy]
+            }
+            return [list $raw $raw]
+        }
+        log {
+            set raw ""
+            if {"" != [$libobj element]} {
+                set raw [$libobj get]
+            }
+            return [list $raw $raw]
+        }
+        cloud {
+            set raw ""
+            if {"" != [$libobj element $path.points]} {
+                set raw [$libobj get $path.points]
+            }
+            return [list $raw $raw]
+        }
+        field {
+            set raw ""
+            if {"" != [$libobj element $path.component.values]} {
+                set raw [$libobj get $path.component.values]
+            }
+            return [list $raw $raw]
+        }
+
+
+    }
+
+    # for all other types, get the value (current, or maybe default)
+    set raw ""
+    if {"" != [$libobj element $path.current]} {
+        set raw [$libobj get $path.current]
+    } elseif {"" != [$libobj element $path.default]} {
+        set raw [$libobj get $path.default]
+    }
+    return [list $raw $raw]
+}
+
+proc compare {orig result} {
+    if {"" == $orig} {
+        return
+    }
+    if {"" == $result} {
+        return
+    }
+
+    if {![Rappture::library isvalid $orig]} {
+        set origObj [Rappture::library $orig]
+        if {![Rappture::library isvalid $origObj]} {
+            puts "cannot create Rappture library from $orig\n"
+            return
+        }
+    } else {
+        set origObj $orig
+    }
+
+    if {![Rappture::library isvalid $result]} {
+        set resultObj [Rappture::library $result]
+        if {![Rappture::library isvalid $resultObj]} {
+            puts "cannot create Rappture library from $result\n"
+            return
+        }
+    } else {
+        set resultObj $result
+    }
+
+    foreach {op vpath oldval newval} [diffs $origObj $resultObj] {
+        puts "$op $vpath $oldval $newval"
+    }
+}
+
+proc parseOptions {listVar returnVar} {
+    upvar $listVar argv
+    upvar $returnVar params
+
+    # parse command line arguments
+    set argc [llength $argv]
+    for {set i 0} {$i < $argc} {incr i} {
+        set opt [lindex $argv $i]
+        if { ("-t" == $opt)    ||
+             ("-tool" == $opt) ||
+             ("--tool" == $opt)   } {
+            if {[expr {$i + 1}] < $argc} {
+                incr i
+                set params(--tool) [lindex $argv $i]
+                # need to check to see if file exists, if not raise error
+            } else {
+                printHelp
+            }
+        } elseif {  ("-tooldir" == $opt) ||
+                    ("--tooldir" == $opt)    } {
+            if {[expr {$i + 1}] < $argc} {
+                incr i
+                set params(--tooldir) [lindex $argv $i]
+                # need to check to see if directory exists, if not raise error
+            } else {
+                printHelp
+            }
+        } elseif {  ("-d" == $opt)      ||
+                    ("-driver" == $opt) ||
+                    ("--driver" == $opt)    } {
+            if {[expr {$i + 1}] < $argc} {
+                incr i
+                set params(--driver) [lindex $argv $i]
+                # need to check to see if file exists, if not raise error
+            } else {
+                printHelp
+            }
+        } elseif {  ("-r" == $opt)      ||
+                    ("-runfile" == $opt) ||
+                    ("--runfile" == $opt)    } {
+            if {[expr {$i + 1}] < $argc} {
+                incr i
+                set params(--runfile) [lindex $argv $i]
+            } else {
+                printHelp
+            }
+        } elseif {  ("-v" == $opt)      ||
+                    ("-values" == $opt) ||
+                    ("--values" == $opt)    } {
+            if {[expr {$i + 1}] < $argc} {
+                incr i
+                set valuesFlag [lindex $argv $i]
+                if {("default" == $valuesFlag) ||
+                    ("current" == $valuesFlag) ||
+                    ("random" == $valuesFlag)  } {
+                    set params(--values) $valuesFlag
+                } else {
+                    printHelp
+                }
+            } else {
+                printHelp
+            }
+        } elseif {  ("-c" == $opt)      ||
+                    ("-compare" == $opt)||
+                    ("--compare" == $opt)   } {
+            if {[expr {$i + 1}] < $argc} {
+                incr i
+                set params(--compare) [lindex $argv $i]
+                # need to check to see if file exists, if not raise error
+            } else {
+                printHelp
+            }
+        } elseif {  ("-n" == $opt)      ||
+                    ("-nosim" == $opt)  ||
+                    ("--nosim" == $opt)     } {
+            set params(--nosim) true
+        } elseif {  ("-h" == $opt)      ||
+                    ("-help" == $opt)   ||
+                    ("--help" == $opt)      } {
+            printHelp
+        } else {
+            # place all extra params in the params array
+            lappend params(oParams) $opt
+        }
+    }
+}
+
+proc storeoutput {data} {
+    global _d
+    append _d $data
+}
+
+proc main {argv} {
+    # set default values
+    array set presets []
+    set i 0
+
+    array set params {
+        --compare ""
+        --values default
+        --nosim false
+        --driver ""
+        --runfile ""
+        --tool "./tool.xml"
+        --tooldir ""
+        oParams {}
+    }
+
+    parseOptions argv params
+
+    # keep the wish window from popping up
+    catch {wm withdraw .}
+
+    # parse out path=val combinations from the list of orphaned parameters
+    parsePathVal params(oParams) presets
+    if {0 != [llength $params(oParams)]} {
+        puts "Could not understand the following parameters"
+        puts "params(oParams) = $params(oParams)"
+        puts "length params(oParams) = [llength $params(oParams)]"
+    }
+
+    set err ""
+    if {! [file exists $params(--tool)]} {
+        append err "\ntool file \""
+        append err $params(--tool)
+        append err "\" does not exist, use -t option\n"
+        puts $err
+        printHelp
+    }
+
+    set xmlobj [Rappture::library $params(--tool)]
+    if {$params(--tooldir) == ""} {
+        set installdir [file dirname $params(--tool)]
+    } else {
+        set installdir $params(--tooldir)
+    }
+
+    # need a better way to do this,
+    # maybe just take xmldiff functionality out of simsim
+    if {(!$params(--nosim)) || ("" != $params(--driver))} {
+        switch -- $params(--values) {
+            random      { randomize presets $xmlobj $installdir }
+            current     { }
+            default     { defaultize $xmlobj $installdir }
+        }
+    }
+
+    if {"" != $params(--driver)} {
+        set fid [open $params(--driver) w]
+        puts $fid {<?xml version="1.0"?>}
+        puts $fid [$xmlobj xml]
+        close $fid
+    }
+
+    if {$params(--nosim)} {
+        if {"" != $params(--compare)} {
+            compare $xmlobj $params(--compare)
+        }
+        exit 0
+    }
+
+
+
+
+    set tool [Rappture::Tool ::#auto $xmlobj $installdir]
+
+    # read the run.xml file.
+    # from analyzer.tcl:
+
+    set result ""
+    # execute the job
+    foreach {status result} [eval $tool run -output storeoutput] break
+
+    # if run was successful, check to see if we should compare
+    if {$status == 0 && $result != "ABORT"} {
+        global _d
+        if {[regexp {=RAPPTURE-RUN=>([^\n]+)} $_d match result]} {
+            if {[string compare "" $params(--runfile)] != 0} {
+                if {[catch {file rename -force -- $result $params(--runfile)} out]} {
+                    puts stderr "while moving $result to $params(--runfile): $out"
+                }
+            }
+            # do comparison if user chose to compare with other results
+            if {"" != $params(--compare)} {
+                compare $params(--compare) $result
+            }
+        } else {
+            set status 1
+            puts "Can't find result file in output.\nDid you call Rappture::result in your simulator?"
+        }
+    } else {
+        puts $result
+    }
+}
+
+main $argv
+exit 0
Index: /tags/1.6.0/gui/apps/table
===================================================================
--- /tags/1.6.0/gui/apps/table	(revision 6168)
+++ /tags/1.6.0/gui/apps/table	(revision 6168)
@@ -0,0 +1,347 @@
+# -*- mode: Tcl -*-
+
+package require Rappture
+package require RapptureGUI
+
+# TK code
+package require fileutil
+proc is_xml {name} {return [string match *.xml $name]}
+
+# Starting main tk code
+
+package require BLT
+if { $tcl_version >= 8.0 } {
+    namespace import blt::*
+    namespace import -force blt::tile::*
+}
+
+proc SortColumn { column } {
+    set old [.t sort cget -column]
+    set decreasing 0
+    if { "$old" == "$column" } {
+        set decreasing [.t sort cget -decreasing]
+        set decreasing [expr !$decreasing]
+    }
+    .t sort configure -decreasing $decreasing -column $column -mode integer
+    if { ![.t cget -flat] } {
+        .t configure -flat yes
+    }
+    .t sort auto yes
+    blt::busy hold .t
+    update
+    blt::busy release .t
+}
+
+proc resulttable {cmpfiles} {
+    # creating xml tables for each xml run files go here
+    set tree2 [tree create]
+    treeview .k \
+        -width 0 \
+        -yscrollcommand { .vvvs set } \
+        -xscrollcommand { .hhhs set } \
+        -selectmode single \
+        -tree $tree2
+    .k column configure treeView -text ""
+    .k column configure treeView -hide no -edit no \
+        -icon blt::tv::normalOpenFolder
+    focus .k
+    scrollbar .vvvs -orient vertical -command { .k yview }
+    scrollbar .hhhs -orient horizontal -command { .k xview }
+
+    table . \
+        0,0 .k -fill both \
+        0,1 .vvvs -fill y \
+        1,0 .hhhs -fill x
+    table configure . c1 r1 -resize none
+
+    puts "resulttable: $cmpfiles"
+
+    set flags [list]
+    set numfiles [llength $cmpfiles]
+    set biglist [list]
+
+    set memberlist [list]
+    set contentlist [list]
+    set counter 0
+    foreach filepath $cmpfiles {
+        set filename [file tail $filepath]
+        set lib [Rappture::library $filepath]
+        set inputs [$lib children -as component "input"]
+        foreach input $inputs {
+            set path "input.${input}.current"
+            if {$counter == 0} {
+                lappend memberlist $path
+            }
+            set value [$lib get $path]
+            puts "$path: $value"
+            lappend contentlist $value
+            unset value
+        }
+        set outputs [$lib children -as component "output"]
+        foreach output $outputs {
+            set path "output.${output}"
+            set value [$lib get $path]
+            if {"" != $value} {
+                if {$counter == 0} {
+                    lappend memberlist $path
+                }
+                puts "$path: $value"
+                lappend contentlist $value
+                unset value
+            }
+        }
+        set temp [list]
+        lappend temp $filename $contentlist
+        unset contentlist
+        lappend biglist $temp
+        unset temp
+        incr counter;
+    }
+    #puts memberlist
+    #puts $memberlist
+    puts "START_BIG_LIST [llength $biglist]"
+    puts $biglist
+    puts END_BIG_LIST
+    # Adding columns to table
+    #.k column insert end "filename" -text "File Name"
+    foreach path $memberlist {
+        puts "add column: $path"
+        if { "" == $path } {
+            continue
+        }
+        .k column insert end $path -text $path
+    }
+    # Comparing XML Tree
+    set count 0
+    set element1 [lindex $biglist 0]
+    set name1 [lindex $element1 0]
+    set content1 [lindex $element1 1]
+    foreach element2 $biglist {
+        if {$count != 0} {
+            foreach {name2 content2} $element2 {
+                set contentlen [llength $content2]
+                for {set i 0} {$i < $contentlen} {incr i} {
+                    #puts insideforloop
+                    set similarexisted 0
+                    if {[lindex $content1 $i] eq [lindex $content2 $i]} {
+                        #puts insidesame
+                    } else {
+                        #puts insidediff
+                        lappend flags 1
+                        continue
+                    }
+                    if { $similarexisted == 0 } {
+                        lappend flags 0
+                    }
+                }
+            }
+        }
+        incr count
+    }
+
+    foreach element $biglist {
+        set name [lindex $element 0]
+        set content [lindex $element 1]
+        set id [.k insert end $name]
+        set list_content [list]
+        foreach path $memberlist value $content flag $flags {
+            lappend list_content $path
+
+            if { $flag == 0} {
+                lappend list_content "Same"
+            } else {
+                lappend list_content $value
+            }
+        }
+        puts [llength $list_content]
+        puts $list_content
+        .k entry configure $id -data $list_content
+    }
+
+    #set templist [list]
+    #lappend templist "input.number(n1).current"
+    #lappend templist "h"
+    #lappend templist "input.number(n2).current"
+    #lappend templist "i"
+    #lappend templist "output.number(sum).current"
+    #lappend templist "k"
+    #.k entry configure $id -data $templist
+    #.k entry configure $id \
+    #    -data [list input.number(n1).current "h" input.number(n2).current "i" output.number(sum).current "k"]
+}
+
+proc newtable {appname} {
+    global tree1
+
+    set tree1 [tree create]
+    treeview .h \
+        -width 0 \
+        -yscrollcommand { .vvs set } \
+        -xscrollcommand { .hhs set } \
+        -selectmode single \
+        -tree $tree1
+    .h column configure treeView -text ""
+    .h column configure treeView -hide yes -edit no \
+        -icon blt::tv::normalOpenFolder
+    focus .h
+    scrollbar .vvs -orient vertical -command { .h yview }
+    scrollbar .hhs -orient horizontal -command { .h xview }
+
+    .h style checkbox mycheck -onvalue "yes" -offvalue "no" -showvalue yes
+    .h column insert end select -text "Select" -edit yes -style mycheck
+
+    table . \
+        0,0 .h  -fill both \
+        0,1 .vvs -fill y \
+        1,0 .hhs -fill x
+    table configure . c1 r1 -resize none
+
+    # Starting tk code
+    .h column insert end "tname" -text "Tool Name"
+    .h column insert end "date"  -text "Date"
+    global env
+    set files [fileutil::find $env(HOME)/data/results is_xml]
+    if {$files == ""} {
+    } else {
+        foreach line $files {
+            set fileone [open $line]
+            set content [read $fileone]
+            close $fileone
+            regexp {<title>(.*)</title>} $content junk title
+            if {![info exists title]} {
+                continue
+            }
+            set title [string trim $title]
+            set time ""
+            regexp {<time>(.*)</time>} $content junk time
+            set time [string trim $time]
+            #if {($params(-title) == "") || ($params(-title) == $title)} {
+            #    set id [.t insert end $line]
+            #    .t entry configure $id -data [list tname $title date $time]
+            #}
+            #
+            #set id [.h insert end $line]
+            if { $appname == $title } {
+                set id [.h insert end $line]
+                .h entry configure $id \
+                    -data [list tname $title date $time select yes]
+            }
+            unset fileone
+            unset content
+            unset title
+            unset time
+            if {[info exists junk]} { unset junk }
+            unset line
+        }
+    }
+    .h bind all <ButtonRelease-1> {
+    }
+
+    button .compare -text "Compare" -command compare
+    blt::table .  \
+        2,0 .compare -anchor e -columnspan 2
+
+    proc compare {} {
+        global tree1
+        # declaring lists
+        set filename [list]
+
+        foreach node [$tree1 children root] {
+            set label [$tree1 label $node]
+            set select [$tree1 get $node "select"]
+            set tname [$tree1 get $node "tname"]
+            puts stderr "found at node $node: select=$select tname=$tname"
+            if { $select == "yes" } {
+                puts $label
+                lappend filename $label
+            }
+        }
+        set cmpfileslen [llength $filename]
+        resulttable $filename
+    }
+    #foreach column [.h column names] {
+    #    .h column configure $column -command [list SortColumn $column]
+    #}
+}
+
+proc startupcode {} {
+    set tree [tree create]
+    treeview .t \
+        -width 0 \
+        -yscrollcommand { .vs set } \
+        -xscrollcommand { .hs set } \
+        -selectmode single \
+        -tree $tree
+    .t column configure treeView -text ""
+    .t column configure treeView -hide yes -edit no \
+        -icon blt::tv::normalOpenFolder
+    focus .t
+    scrollbar .vs -orient vertical -command { .t yview }
+    scrollbar .hs -orient horizontal -command { .t xview }
+    table . \
+        0,0 .t -fill both \
+        0,1 .vs -fill y \
+        1,0 .hs -fill x
+    table configure . c1 r1 -resize none
+    .t column insert end "appname" -text "Application Name"
+    .t column insert end "xmlfilename" -text "File Name"
+    global env
+    set files [fileutil::find $env(HOME)/data/results is_xml]
+    set appnamelist [list]
+    if {$files == ""} {
+    } else {
+        foreach line $files {
+            set existed false
+            set fileone [open $line]
+            set content [read $fileone]
+            close $fileone
+            regexp {<title>(.*)</title>} $content junk title
+            if {![info exists title]} {
+                puts stderr "ERROR: No title found in $line"
+                continue
+            }
+            set title [string trim $title]
+            #puts "found title: $title"
+
+            foreach app $appnamelist {
+                if {$title == $app} {
+                    set existed true
+                    break
+                }
+            }
+            if { ! $existed } {
+                set temp [file tail $line]
+                set id [.t insert end $line]
+                .t entry configure $id \
+                    -data [list appname $title xmlfilename $temp]
+                lappend appnamelist $title
+            }
+            unset existed
+            unset fileone
+            unset content
+            unset title
+            unset line
+        }
+        #puts $appnamelist
+    }
+
+    .t bind all <ButtonRelease-1> {
+        set ids [.t curselection]
+        set name [eval .t get -full $ids]
+        set fileone [open $name]
+        set content [read $fileone]
+        close $fileone
+        regexp {<title>(.*)</title>} $content junk title
+        set title [string trim $title]
+        # pass title and display the result in new page
+        newtable $title
+    }
+}
+
+startupcode
+
+#blt::treeview .t
+#set node [.t insert end root "one"]
+#treeview .h -bg white
+#.h configure -background "green"
+#set id [.h insert end "myEntry"]
Index: /tags/1.6.0/gui/apps/vtkglyphs-test
===================================================================
--- /tags/1.6.0/gui/apps/vtkglyphs-test	(revision 6168)
+++ /tags/1.6.0/gui/apps/vtkglyphs-test	(revision 6168)
@@ -0,0 +1,374 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ----------------------------------------------------------------------
+#  TEST PROGRAM for VtkGlyphViewer
+#
+#  This program is a test harness for the VtkVis visualization
+#  engine.  It allows you to monitor the commands being sent back
+#  and forth between a standard Rappture application and the VtkVis
+#  server.  You can also send your own commands to the server, to
+#  debug new features.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+bindir=`dirname $0` ; \
+. $bindir/rappture.env ; \
+exec $bindir/wish "$0" "$@"
+# ----------------------------------------------------------------------
+# wish executes everything from here on...
+package require Itcl
+package require Rappture
+package require RapptureGUI
+
+option add *comm.font -*-courier-medium-r-normal-*-*-120-*
+option add *Menu.tearOff off
+
+option add *Tooltip.background white
+option add *Editor.background white
+option add *Gauge.textBackground white
+option add *TemperatureGauge.textBackground white
+option add *Switch.textBackground white
+option add *Progress.barColor #ffffcc
+option add *Balloon.titleBackground #6666cc
+option add *Balloon.titleForeground white
+option add *Balloon*Label.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Radiobutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Checkbutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *ResultSet.controlbarBackground #6666cc
+option add *ResultSet.controlbarForeground white
+option add *ResultSet.activeControlBackground #ccccff
+option add *ResultSet.activeControlForeground black
+option add *Radiodial.length 3i
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-*-180-*
+
+# fix the "grab" command to support a stack of grab windows
+#Rappture::grab::init
+
+# ----------------------------------------------------------------------
+# LOAD RESOURCE SETTINGS
+#
+# Try to load the $SESSIONDIR/resources file, which contains
+# middleware settings, such as the application name and the
+# filexfer settings.
+# ----------------------------------------------------------------------
+Rappture::resources::load
+
+# ----------------------------------------------------------------------
+# Fake data object for sending VTK data file...
+# ----------------------------------------------------------------------
+itcl::class visData {
+    inherit Rappture::Field
+
+    constructor {args} {
+        Rappture::Field::constructor [Rappture::library standard] ""
+    } {
+        set _data [lindex $args 0]
+        GetTypeAndSize $_cname
+        GetAssociation $_cname
+        ReadVtkDataSet $_cname $_data
+        set _type [lindex $args 1]
+    }
+
+    public method components {args} {
+        Rappture::getopts args params {
+            flag what -name default
+            flag what -dimensions
+            flag what -style
+            flag what -particles
+            flag what -flow
+            flag what -box
+        }
+        if { $params(what) == "-dimensions" } {
+            return "${_dim}D"
+        }
+        if {[llength $args] == 0} {
+            return $_cname
+        }
+        return ""
+    }
+    public method isvalid {} {
+        return 1
+    }
+    public method data {args} {
+        return $_data
+    }
+    public method vtkdata {args} {
+        return $_data
+    }
+    public method values {args} {
+        return $_data
+    }
+    public method style {args} {
+        return ""
+    }
+    public method hints {args} {
+        return ""
+    }
+    public method type {args} {
+        return $_type
+    }
+    public method viewer {args} {
+        return "glyphs"
+    }
+    public method shape {args} {
+        return "arrow"
+    }
+
+    private variable _cname "one"
+    private variable _data ""
+    private variable _type ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open VTK File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set obj [visData #auto $info "vtk"]
+        $widgets(vtkglyphviewer) add $obj
+        $widgets(vtkglyphviewer) scale $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load_script
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc load_script {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open Command File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+
+        $widgets(command) insert 0 $info
+        send_command
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_command
+#
+# Invoked automatically whenever the user enters a command and
+# presses <Return>.  Sends the command along to the rendering
+# widget.
+# ----------------------------------------------------------------------
+proc send_command {} {
+    global widgets
+    global last_command
+
+    set cmd [$widgets(command) get]
+
+    if {[string length $cmd] > 0} {
+        set last_command $cmd
+    } else {
+        set cmd $last_command
+    }
+    namespace eval Rappture::VtkGlyphViewer [list $widgets(vtkglyphviewer) SendCmd $cmd]
+    $widgets(command) delete 0 end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Used internally to reset the connection to the rendering server.
+# Discards all data and resets the widget connection to the server.
+# ----------------------------------------------------------------------
+proc reset {} {
+    global widgets
+    $widgets(vtkglyphviewer) delete
+    $widgets(vtkglyphviewer) disconnect
+    $widgets(comm) configure -state normal
+    $widgets(comm) delete 1.0 end
+    $widgets(comm) configure -state disabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: show_comm <channel> <data>
+#
+# Invoked automatically whenever there is communication between
+# the rendering widget and the server.  Eavesdrops on the communication
+# and posts the commands in a text viewer.
+# ----------------------------------------------------------------------
+proc show_comm {channel {data ""}} {
+    global widgets
+
+    $widgets(comm) configure -state normal
+    switch -- $channel {
+        closed {
+            $widgets(comm) insert end "--CLOSED--\n" error
+        }
+        <<line {
+            $widgets(comm) insert end $data incoming "\n" incoming
+            images_refresh
+        }
+        >>line {
+            $widgets(comm) insert end $data outgoing "\n" outgoing
+        }
+        error {
+            $widgets(comm) insert end $data error "\n" error
+        }
+        default {
+            $widgets(comm) insert end "$data\n"
+        }
+    }
+    $widgets(comm) configure -state disabled
+    $widgets(comm) see end
+}
+
+# ----------------------------------------------------------------------
+# TOPLEVEL FOR IMAGES
+# ----------------------------------------------------------------------
+# USAGE: images_save
+#
+# Invoked when the user presses the "Save As..." button on the
+# images panel.  Saves the current image in a file, which can be
+# examined by some external program.
+# ----------------------------------------------------------------------
+proc images_save {} {
+    global widgets images
+
+    set imh [$widgets(vtkglyphviewer) get -image $images(which)]
+
+    set file [tk_getSaveFile -title "Save Image File" \
+        -defaultextension .jpg -filetypes {{{JPEG files} .jpg} {{All Files} *}}]
+
+    if {"" != $file} {
+        set cmds {
+            $imh write $file -format jpeg
+        }
+        if {[catch $cmds err]} {
+            tk_messageBox -icon error -message "Oops!  Save failed:\n$err"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: images_refresh
+#
+# Invoked automatically whenever there is a change in the view/legend
+# controls on the images panel.  Updates the image being shown based
+# on the current selection.
+# ----------------------------------------------------------------------
+proc images_refresh {} {
+    global widgets images
+    set c $widgets(viewer)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    set imh [$widgets(vtkglyphviewer) get -image $images(which)]
+    set iw [image width $imh]
+    set ih [image height $imh]
+
+    $c coords image [expr {$w/2}] [expr {$h/2}]
+    $c itemconfigure image -image $imh
+    $c coords outline [expr {$w/2-$iw/2}] [expr {$h/2-$ih/2}] \
+        [expr {$w/2+$iw/2}] [expr {$h/2+$ih/2}]
+}
+
+toplevel .images
+wm title .images "VtkGlyphViewer: Images"
+wm withdraw .images
+wm protocol .images WM_DELETE_WINDOW {wm withdraw .images}
+
+frame .images.cntls
+pack .images.cntls -side bottom -fill x
+button .images.cntls.save -text "Save As..." -command images_save
+pack .images.cntls.save -side right -padx 4
+radiobutton .images.cntls.view -text "3D View" -variable images(which) \
+    -value "view" -command images_refresh
+pack .images.cntls.view -side top -anchor w
+radiobutton .images.cntls.legend -text "Legend" -variable images(which) \
+    -value "legend" -command images_refresh
+pack .images.cntls.legend -side top -anchor w
+set images(which) "view"
+
+canvas .images.viewer -background black -width 500 -height 500
+pack .images.viewer -expand yes -fill both
+bind .images.viewer <Configure> images_refresh
+set widgets(viewer) .images.viewer
+
+$widgets(viewer) create image 0 0 -anchor c \
+    -image [image create photo] -tags image
+$widgets(viewer) create rectangle 0 0 1 1 -width 2 -outline red -fill "" \
+    -tags outline
+
+
+# ----------------------------------------------------------------------
+# MAIN WINDOW
+# ----------------------------------------------------------------------
+menu .mbar
+menu .mbar.file
+.mbar.file add command -label "Send VTK File..." -underline 0 -command send_file
+.mbar.file add command -label "Load script..." -underline 0 -command load_script
+.mbar.file add command -label "Reset" -underline 0 -command reset
+.mbar.file add separator
+.mbar.file add command -label "Exit" -underline 1 -command exit
+.mbar add cascade -label "File" -underline 0 -menu .mbar.file
+
+menu .mbar.view
+.mbar.view add command -label "Images..." -underline 0 \
+    -command {wm deiconify .images}
+.mbar add cascade -label "View" -underline 0 -menu .mbar.view
+
+. configure -menu .mbar
+
+
+Rappture::Panes .main -sashwidth 4 -sashrelief raised -sashpadding 4 \
+    -width 6i -height 4i
+pack .main -expand yes -fill both
+
+set f [.main pane 0]
+Rappture::VtkGlyphViewer $f.viewer
+pack $f.viewer -expand yes -fill both
+set widgets(vtkglyphviewer) $f.viewer
+
+$f.viewer configure \
+    -sendcommand show_comm \
+    -receivecommand show_comm
+
+set f [.main insert end -fraction 0.5]
+frame $f.send
+pack $f.send -side bottom -fill x
+label $f.send.l -text "Send:"
+pack $f.send.l -side left
+set widgets(command) [entry $f.send.e]
+pack $f.send.e -side left -expand yes -fill x
+bind $f.send.e <KeyPress-Return> send_command
+
+scrollbar $f.sb -orient vertical -command "$f.comm yview"
+pack $f.sb -side right -fill y
+text $f.comm -wrap char -yscrollcommand "$f.sb set"
+pack $f.comm -expand yes -fill both
+set widgets(comm) $f.comm
+
+$widgets(comm) tag configure error -foreground red \
+    -font -*-courier-medium-o-normal-*-*-120-*
+$widgets(comm) tag configure incoming -foreground blue
Index: /tags/1.6.0/gui/apps/vtkheightmap-test
===================================================================
--- /tags/1.6.0/gui/apps/vtkheightmap-test	(revision 6168)
+++ /tags/1.6.0/gui/apps/vtkheightmap-test	(revision 6168)
@@ -0,0 +1,371 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ----------------------------------------------------------------------
+#  TEST PROGRAM for VtkHeightmapViewer
+#
+#  This program is a test harness for the VtkVis visualization
+#  engine.  It allows you to monitor the commands being sent back
+#  and forth between a standard Rappture application and the VtkVis
+#  server.  You can also send your own commands to the server, to
+#  debug new features.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+bindir=`dirname $0` ; \
+. $bindir/rappture.env ; \
+exec $bindir/wish "$0" "$@"
+# ----------------------------------------------------------------------
+# wish executes everything from here on...
+package require Itcl
+package require Rappture
+package require RapptureGUI
+
+option add *comm.font -*-courier-medium-r-normal-*-*-120-*
+option add *Menu.tearOff off
+
+option add *Tooltip.background white
+option add *Editor.background white
+option add *Gauge.textBackground white
+option add *TemperatureGauge.textBackground white
+option add *Switch.textBackground white
+option add *Progress.barColor #ffffcc
+option add *Balloon.titleBackground #6666cc
+option add *Balloon.titleForeground white
+option add *Balloon*Label.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Radiobutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Checkbutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *ResultSet.controlbarBackground #6666cc
+option add *ResultSet.controlbarForeground white
+option add *ResultSet.activeControlBackground #ccccff
+option add *ResultSet.activeControlForeground black
+option add *Radiodial.length 3i
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-*-180-*
+
+# fix the "grab" command to support a stack of grab windows
+#Rappture::grab::init
+
+# ----------------------------------------------------------------------
+# LOAD RESOURCE SETTINGS
+#
+# Try to load the $SESSIONDIR/resources file, which contains
+# middleware settings, such as the application name and the
+# filexfer settings.
+# ----------------------------------------------------------------------
+Rappture::resources::load
+
+# ----------------------------------------------------------------------
+# Fake data object for sending VTK data file...
+# ----------------------------------------------------------------------
+itcl::class visData {
+    inherit Rappture::Field
+
+    constructor {args} {
+        Rappture::Field::constructor [Rappture::library standard] ""
+    } {
+        set _data [lindex $args 0]
+        GetTypeAndSize $_cname
+        GetAssociation $_cname
+        ReadVtkDataSet $_cname $_data
+        set _type [lindex $args 1]
+    }
+
+    public method components {args} {
+        Rappture::getopts args params {
+            flag what -name default
+            flag what -dimensions
+            flag what -style
+            flag what -particles
+            flag what -flow
+            flag what -box
+        }
+        if { $params(what) == "-dimensions" } {
+            return "${_dim}D"
+        }
+        if {[llength $args] == 0} {
+            return $_cname
+        }
+        return ""
+    }
+    public method isvalid {} {
+        return 1
+    }
+    public method data {args} {
+        return $_data
+    }
+    public method vtkdata {args} {
+        return $_data
+    }
+    public method values {args} {
+        return $_data
+    }
+    public method style {args} {
+        return ""
+    }
+    public method hints {args} {
+        return ""
+    }
+    public method type {args} {
+        return $_type
+    }
+    public method viewer {args} {
+        return "contour"
+    }
+
+    private variable _cname "one"
+    private variable _data ""
+    private variable _type ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open VTK File As Contour"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary -encoding binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set obj [visData #auto $info "vtk"]
+        $widgets(vtkheightmapviewer) add $obj
+        $widgets(vtkheightmapviewer) scale $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load_script
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc load_script {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open Command File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary -encoding binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+
+        $widgets(command) insert 0 $info
+        send_command
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_command
+#
+# Invoked automatically whenever the user enters a command and
+# presses <Return>.  Sends the command along to the rendering
+# widget.
+# ----------------------------------------------------------------------
+proc send_command {} {
+    global widgets
+    global last_command
+
+    set cmd [$widgets(command) get]
+
+    if {[string length $cmd] > 0} {
+        set last_command $cmd
+    } else {
+        set cmd $last_command
+    }
+    namespace eval Rappture::VtkHeightmapViewer [list $widgets(vtkheightmapviewer) SendCmd $cmd]
+    $widgets(command) delete 0 end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Used internally to reset the connection to the rendering server.
+# Discards all data and resets the widget connection to the server.
+# ----------------------------------------------------------------------
+proc reset {} {
+    global widgets
+    $widgets(vtkheightmapviewer) delete
+    $widgets(vtkheightmapviewer) disconnect
+    $widgets(comm) configure -state normal
+    $widgets(comm) delete 1.0 end
+    $widgets(comm) configure -state disabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: show_comm <channel> <data>
+#
+# Invoked automatically whenever there is communication between
+# the rendering widget and the server.  Eavesdrops on the communication
+# and posts the commands in a text viewer.
+# ----------------------------------------------------------------------
+proc show_comm {channel {data ""}} {
+    global widgets
+
+    $widgets(comm) configure -state normal
+    switch -- $channel {
+        closed {
+            $widgets(comm) insert end "--CLOSED--\n" error
+        }
+        <<line {
+            $widgets(comm) insert end $data incoming "\n" incoming
+            images_refresh
+        }
+        >>line {
+            $widgets(comm) insert end $data outgoing "\n" outgoing
+        }
+        error {
+            $widgets(comm) insert end $data error "\n" error
+        }
+        default {
+            $widgets(comm) insert end "$data\n"
+        }
+    }
+    $widgets(comm) configure -state disabled
+    $widgets(comm) see end
+}
+
+# ----------------------------------------------------------------------
+# TOPLEVEL FOR IMAGES
+# ----------------------------------------------------------------------
+# USAGE: images_save
+#
+# Invoked when the user presses the "Save As..." button on the
+# images panel.  Saves the current image in a file, which can be
+# examined by some external program.
+# ----------------------------------------------------------------------
+proc images_save {} {
+    global widgets images
+
+    set imh [$widgets(vtkheightmapviewer) get -image $images(which)]
+
+    set file [tk_getSaveFile -title "Save Image File" \
+        -defaultextension .jpg -filetypes {{{JPEG files} .jpg} {{All Files} *}}]
+
+    if {"" != $file} {
+        set cmds {
+            $imh write $file -format jpeg
+        }
+        if {[catch $cmds err]} {
+            tk_messageBox -icon error -message "Oops!  Save failed:\n$err"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: images_refresh
+#
+# Invoked automatically whenever there is a change in the view/legend
+# controls on the images panel.  Updates the image being shown based
+# on the current selection.
+# ----------------------------------------------------------------------
+proc images_refresh {} {
+    global widgets images
+    set c $widgets(viewer)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    set imh [$widgets(vtkheightmapviewer) get -image $images(which)]
+    set iw [image width $imh]
+    set ih [image height $imh]
+
+    $c coords image [expr {$w/2}] [expr {$h/2}]
+    $c itemconfigure image -image $imh
+    $c coords outline [expr {$w/2-$iw/2}] [expr {$h/2-$ih/2}] \
+        [expr {$w/2+$iw/2}] [expr {$h/2+$ih/2}]
+}
+
+toplevel .images
+wm title .images "VtkHeightmapViewer: Images"
+wm withdraw .images
+wm protocol .images WM_DELETE_WINDOW {wm withdraw .images}
+
+frame .images.cntls
+pack .images.cntls -side bottom -fill x
+button .images.cntls.save -text "Save As..." -command images_save
+pack .images.cntls.save -side right -padx 4
+radiobutton .images.cntls.view -text "3D View" -variable images(which) \
+    -value "view" -command images_refresh
+pack .images.cntls.view -side top -anchor w
+radiobutton .images.cntls.legend -text "Legend" -variable images(which) \
+    -value "legend" -command images_refresh
+pack .images.cntls.legend -side top -anchor w
+set images(which) "view"
+
+canvas .images.viewer -background black -width 500 -height 500
+pack .images.viewer -expand yes -fill both
+bind .images.viewer <Configure> images_refresh
+set widgets(viewer) .images.viewer
+
+$widgets(viewer) create image 0 0 -anchor c \
+    -image [image create photo] -tags image
+$widgets(viewer) create rectangle 0 0 1 1 -width 2 -outline red -fill "" \
+    -tags outline
+
+
+# ----------------------------------------------------------------------
+# MAIN WINDOW
+# ----------------------------------------------------------------------
+menu .mbar
+menu .mbar.file
+.mbar.file add command -label "Send VTK File..." -underline 0 -command send_file
+.mbar.file add command -label "Load script..." -underline 0 -command load_script
+.mbar.file add command -label "Reset" -underline 0 -command reset
+.mbar.file add separator
+.mbar.file add command -label "Exit" -underline 1 -command exit
+.mbar add cascade -label "File" -underline 0 -menu .mbar.file
+
+menu .mbar.view
+.mbar.view add command -label "Images..." -underline 0 \
+    -command {wm deiconify .images}
+.mbar add cascade -label "View" -underline 0 -menu .mbar.view
+
+. configure -menu .mbar
+
+
+Rappture::Panes .main -sashwidth 4 -sashrelief raised -sashpadding 4 \
+    -width 6i -height 4i
+pack .main -expand yes -fill both
+
+set f [.main pane 0]
+Rappture::VtkHeightmapViewer $f.viewer
+pack $f.viewer -expand yes -fill both
+set widgets(vtkheightmapviewer) $f.viewer
+
+$f.viewer configure \
+    -sendcommand show_comm \
+    -receivecommand show_comm
+
+set f [.main insert end -fraction 0.5]
+frame $f.send
+pack $f.send -side bottom -fill x
+label $f.send.l -text "Send:"
+pack $f.send.l -side left
+set widgets(command) [entry $f.send.e]
+pack $f.send.e -side left -expand yes -fill x
+bind $f.send.e <KeyPress-Return> send_command
+
+scrollbar $f.sb -orient vertical -command "$f.comm yview"
+pack $f.sb -side right -fill y
+text $f.comm -wrap char -yscrollcommand "$f.sb set"
+pack $f.comm -expand yes -fill both
+set widgets(comm) $f.comm
+
+$widgets(comm) tag configure error -foreground red \
+    -font -*-courier-medium-o-normal-*-*-120-*
+$widgets(comm) tag configure incoming -foreground blue
Index: /tags/1.6.0/gui/apps/vtkisosurface-test
===================================================================
--- /tags/1.6.0/gui/apps/vtkisosurface-test	(revision 6168)
+++ /tags/1.6.0/gui/apps/vtkisosurface-test	(revision 6168)
@@ -0,0 +1,371 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ----------------------------------------------------------------------
+#  TEST PROGRAM for VtkIsosurfaceViewer
+#
+#  This program is a test harness for the VtkVis visualization
+#  engine.  It allows you to monitor the commands being sent back
+#  and forth between a standard Rappture application and the VtkVis
+#  server.  You can also send your own commands to the server, to
+#  debug new features.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+bindir=`dirname $0` ; \
+. $bindir/rappture.env ; \
+exec $bindir/wish "$0" "$@"
+# ----------------------------------------------------------------------
+# wish executes everything from here on...
+package require Itcl
+package require Rappture
+package require RapptureGUI
+
+option add *comm.font -*-courier-medium-r-normal-*-*-120-*
+option add *Menu.tearOff off
+
+option add *Tooltip.background white
+option add *Editor.background white
+option add *Gauge.textBackground white
+option add *TemperatureGauge.textBackground white
+option add *Switch.textBackground white
+option add *Progress.barColor #ffffcc
+option add *Balloon.titleBackground #6666cc
+option add *Balloon.titleForeground white
+option add *Balloon*Label.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Radiobutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Checkbutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *ResultSet.controlbarBackground #6666cc
+option add *ResultSet.controlbarForeground white
+option add *ResultSet.activeControlBackground #ccccff
+option add *ResultSet.activeControlForeground black
+option add *Radiodial.length 3i
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-*-180-*
+
+# fix the "grab" command to support a stack of grab windows
+#Rappture::grab::init
+
+# ----------------------------------------------------------------------
+# LOAD RESOURCE SETTINGS
+#
+# Try to load the $SESSIONDIR/resources file, which contains
+# middleware settings, such as the application name and the
+# filexfer settings.
+# ----------------------------------------------------------------------
+Rappture::resources::load
+
+# ----------------------------------------------------------------------
+# Fake data object for sending VTK data file...
+# ----------------------------------------------------------------------
+itcl::class visData {
+    inherit Rappture::Field
+
+    constructor {args} {
+        Rappture::Field::constructor [Rappture::library standard] ""
+    } {
+        set _data [lindex $args 0]
+        GetTypeAndSize $_cname
+        GetAssociation $_cname
+        ReadVtkDataSet $_cname $_data
+        set _type [lindex $args 1]
+    }
+
+    public method components {args} {
+        Rappture::getopts args params {
+            flag what -name default
+            flag what -dimensions
+            flag what -style
+            flag what -particles
+            flag what -flow
+            flag what -box
+        }
+        if { $params(what) == "-dimensions" } {
+            return "${_dim}D"
+        }
+        if {[llength $args] == 0} {
+            return $_cname
+        }
+        return ""
+    }
+    public method isvalid {} {
+        return 1
+    }
+    public method data {args} {
+        return $_data
+    }
+    public method vtkdata {args} {
+        return $_data
+    }
+    public method values {args} {
+        return $_data
+    }
+    public method style {args} {
+        return ""
+    }
+    public method hints {args} {
+        return ""
+    }
+    public method type {args} {
+        return $_type
+    }
+    public method viewer {args} {
+        return "isosurface"
+    }
+
+    private variable _cname "one"
+    private variable _data ""
+    private variable _type ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open VTK File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set obj [visData #auto $info "vtk"]
+        $widgets(vtkisosurfaceviewer) add $obj
+        $widgets(vtkisosurfaceviewer) scale $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load_script
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc load_script {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open Command File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary -encoding binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+
+        $widgets(command) insert 0 $info
+        send_command
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_command
+#
+# Invoked automatically whenever the user enters a command and
+# presses <Return>.  Sends the command along to the rendering
+# widget.
+# ----------------------------------------------------------------------
+proc send_command {} {
+    global widgets
+    global last_command
+
+    set cmd [$widgets(command) get]
+
+    if {[string length $cmd] > 0} {
+        set last_command $cmd
+    } else {
+        set cmd $last_command
+    }
+    namespace eval Rappture::VtkIsosurfaceViewer [list $widgets(vtkisosurfaceviewer) SendCmd $cmd]
+    $widgets(command) delete 0 end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Used internally to reset the connection to the rendering server.
+# Discards all data and resets the widget connection to the server.
+# ----------------------------------------------------------------------
+proc reset {} {
+    global widgets
+    $widgets(vtkisosurfaceviewer) delete
+    $widgets(vtkisosurfaceviewer) disconnect
+    $widgets(comm) configure -state normal
+    $widgets(comm) delete 1.0 end
+    $widgets(comm) configure -state disabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: show_comm <channel> <data>
+#
+# Invoked automatically whenever there is communication between
+# the rendering widget and the server.  Eavesdrops on the communication
+# and posts the commands in a text viewer.
+# ----------------------------------------------------------------------
+proc show_comm {channel {data ""}} {
+    global widgets
+
+    $widgets(comm) configure -state normal
+    switch -- $channel {
+        closed {
+            $widgets(comm) insert end "--CLOSED--\n" error
+        }
+        <<line {
+            $widgets(comm) insert end $data incoming "\n" incoming
+            images_refresh
+        }
+        >>line {
+            $widgets(comm) insert end $data outgoing "\n" outgoing
+        }
+        error {
+            $widgets(comm) insert end $data error "\n" error
+        }
+        default {
+            $widgets(comm) insert end "$data\n"
+        }
+    }
+    $widgets(comm) configure -state disabled
+    $widgets(comm) see end
+}
+
+# ----------------------------------------------------------------------
+# TOPLEVEL FOR IMAGES
+# ----------------------------------------------------------------------
+# USAGE: images_save
+#
+# Invoked when the user presses the "Save As..." button on the
+# images panel.  Saves the current image in a file, which can be
+# examined by some external program.
+# ----------------------------------------------------------------------
+proc images_save {} {
+    global widgets images
+
+    set imh [$widgets(vtkisosurfaceviewer) get -image $images(which)]
+
+    set file [tk_getSaveFile -title "Save Image File" \
+        -defaultextension .jpg -filetypes {{{JPEG files} .jpg} {{All Files} *}}]
+
+    if {"" != $file} {
+        set cmds {
+            $imh write $file -format jpeg
+        }
+        if {[catch $cmds err]} {
+            tk_messageBox -icon error -message "Oops!  Save failed:\n$err"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: images_refresh
+#
+# Invoked automatically whenever there is a change in the view/legend
+# controls on the images panel.  Updates the image being shown based
+# on the current selection.
+# ----------------------------------------------------------------------
+proc images_refresh {} {
+    global widgets images
+    set c $widgets(viewer)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    set imh [$widgets(vtkisosurfaceviewer) get -image $images(which)]
+    set iw [image width $imh]
+    set ih [image height $imh]
+
+    $c coords image [expr {$w/2}] [expr {$h/2}]
+    $c itemconfigure image -image $imh
+    $c coords outline [expr {$w/2-$iw/2}] [expr {$h/2-$ih/2}] \
+        [expr {$w/2+$iw/2}] [expr {$h/2+$ih/2}]
+}
+
+toplevel .images
+wm title .images "VtkIsosurfaceViewer: Images"
+wm withdraw .images
+wm protocol .images WM_DELETE_WINDOW {wm withdraw .images}
+
+frame .images.cntls
+pack .images.cntls -side bottom -fill x
+button .images.cntls.save -text "Save As..." -command images_save
+pack .images.cntls.save -side right -padx 4
+radiobutton .images.cntls.view -text "3D View" -variable images(which) \
+    -value "view" -command images_refresh
+pack .images.cntls.view -side top -anchor w
+radiobutton .images.cntls.legend -text "Legend" -variable images(which) \
+    -value "legend" -command images_refresh
+pack .images.cntls.legend -side top -anchor w
+set images(which) "view"
+
+canvas .images.viewer -background black -width 500 -height 500
+pack .images.viewer -expand yes -fill both
+bind .images.viewer <Configure> images_refresh
+set widgets(viewer) .images.viewer
+
+$widgets(viewer) create image 0 0 -anchor c \
+    -image [image create photo] -tags image
+$widgets(viewer) create rectangle 0 0 1 1 -width 2 -outline red -fill "" \
+    -tags outline
+
+
+# ----------------------------------------------------------------------
+# MAIN WINDOW
+# ----------------------------------------------------------------------
+menu .mbar
+menu .mbar.file
+.mbar.file add command -label "Send VTK File..." -underline 0 -command send_file
+.mbar.file add command -label "Load script..." -underline 0 -command load_script
+.mbar.file add command -label "Reset" -underline 0 -command reset
+.mbar.file add separator
+.mbar.file add command -label "Exit" -underline 1 -command exit
+.mbar add cascade -label "File" -underline 0 -menu .mbar.file
+
+menu .mbar.view
+.mbar.view add command -label "Images..." -underline 0 \
+    -command {wm deiconify .images}
+.mbar add cascade -label "View" -underline 0 -menu .mbar.view
+
+. configure -menu .mbar
+
+
+Rappture::Panes .main -sashwidth 4 -sashrelief raised -sashpadding 4 \
+    -width 6i -height 4i
+pack .main -expand yes -fill both
+
+set f [.main pane 0]
+Rappture::VtkIsosurfaceViewer $f.viewer
+pack $f.viewer -expand yes -fill both
+set widgets(vtkisosurfaceviewer) $f.viewer
+
+$f.viewer configure \
+    -sendcommand show_comm \
+    -receivecommand show_comm
+
+set f [.main insert end -fraction 0.5]
+frame $f.send
+pack $f.send -side bottom -fill x
+label $f.send.l -text "Send:"
+pack $f.send.l -side left
+set widgets(command) [entry $f.send.e]
+pack $f.send.e -side left -expand yes -fill x
+bind $f.send.e <KeyPress-Return> send_command
+
+scrollbar $f.sb -orient vertical -command "$f.comm yview"
+pack $f.sb -side right -fill y
+text $f.comm -wrap char -yscrollcommand "$f.sb set"
+pack $f.comm -expand yes -fill both
+set widgets(comm) $f.comm
+
+$widgets(comm) tag configure error -foreground red \
+    -font -*-courier-medium-o-normal-*-*-120-*
+$widgets(comm) tag configure incoming -foreground blue
Index: /tags/1.6.0/gui/apps/vtkstreamlines-test
===================================================================
--- /tags/1.6.0/gui/apps/vtkstreamlines-test	(revision 6168)
+++ /tags/1.6.0/gui/apps/vtkstreamlines-test	(revision 6168)
@@ -0,0 +1,371 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ----------------------------------------------------------------------
+#  TEST PROGRAM for VtkStreamlinesViewer
+#
+#  This program is a test harness for the VtkVis visualization
+#  engine.  It allows you to monitor the commands being sent back
+#  and forth between a standard Rappture application and the VtkVis
+#  server.  You can also send your own commands to the server, to
+#  debug new features.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+bindir=`dirname $0` ; \
+. $bindir/rappture.env ; \
+exec $bindir/wish "$0" "$@"
+# ----------------------------------------------------------------------
+# wish executes everything from here on...
+package require Itcl
+package require Rappture
+package require RapptureGUI
+
+option add *comm.font -*-courier-medium-r-normal-*-*-120-*
+option add *Menu.tearOff off
+
+option add *Tooltip.background white
+option add *Editor.background white
+option add *Gauge.textBackground white
+option add *TemperatureGauge.textBackground white
+option add *Switch.textBackground white
+option add *Progress.barColor #ffffcc
+option add *Balloon.titleBackground #6666cc
+option add *Balloon.titleForeground white
+option add *Balloon*Label.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Radiobutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Checkbutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *ResultSet.controlbarBackground #6666cc
+option add *ResultSet.controlbarForeground white
+option add *ResultSet.activeControlBackground #ccccff
+option add *ResultSet.activeControlForeground black
+option add *Radiodial.length 3i
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-*-180-*
+
+# fix the "grab" command to support a stack of grab windows
+#Rappture::grab::init
+
+# ----------------------------------------------------------------------
+# LOAD RESOURCE SETTINGS
+#
+# Try to load the $SESSIONDIR/resources file, which contains
+# middleware settings, such as the application name and the
+# filexfer settings.
+# ----------------------------------------------------------------------
+Rappture::resources::load
+
+# ----------------------------------------------------------------------
+# Fake data object for sending VTK data file...
+# ----------------------------------------------------------------------
+itcl::class visData {
+    inherit Rappture::Field
+
+    constructor {args} {
+        Rappture::Field::constructor [Rappture::library standard] ""
+    } {
+        set _data [lindex $args 0]
+        GetTypeAndSize $_cname
+        GetAssociation $_cname
+        ReadVtkDataSet $_cname $_data
+        set _type [lindex $args 1]
+    }
+
+    public method components {args} {
+        Rappture::getopts args params {
+            flag what -name default
+            flag what -dimensions
+            flag what -style
+            flag what -particles
+            flag what -flow
+            flag what -box
+        }
+        if { $params(what) == "-dimensions" } {
+            return "${_dim}D"
+        }
+        if {[llength $args] == 0} {
+            return $_cname
+        }
+        return ""
+    }
+    public method isvalid {} {
+        return 1
+    }
+    public method data {args} {
+        return $_data
+    }
+    public method vtkdata {args} {
+        return $_data
+    }
+    public method values {args} {
+        return $_data
+    }
+    public method style {args} {
+        return ""
+    }
+    public method hints {args} {
+        return ""
+    }
+    public method type {args} {
+        return $_type
+    }
+    public method viewer {args} {
+        return "streamlines"
+    }
+
+    private variable _cname "one"
+    private variable _data ""
+    private variable _type ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open VTK File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary -encoding binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set obj [visData #auto $info "vtk"]
+        $widgets(vtkviewer) add $obj
+        $widgets(vtkviewer) scale $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load_script
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc load_script {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open Command File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary -encoding binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+
+        $widgets(command) insert 0 $info
+        send_command
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_command
+#
+# Invoked automatically whenever the user enters a command and
+# presses <Return>.  Sends the command along to the rendering
+# widget.
+# ----------------------------------------------------------------------
+proc send_command {} {
+    global widgets
+    global last_command
+
+    set cmd [$widgets(command) get]
+
+    if {[string length $cmd] > 0} {
+        set last_command $cmd
+    } else {
+        set cmd $last_command
+    }
+    namespace eval Rappture::VtkStreamlinesViewer [list $widgets(vtkviewer) SendCmd $cmd]
+    $widgets(command) delete 0 end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Used internally to reset the connection to the rendering server.
+# Discards all data and resets the widget connection to the server.
+# ----------------------------------------------------------------------
+proc reset {} {
+    global widgets
+    $widgets(vtkviewer) delete
+    $widgets(vtkviewer) disconnect
+    $widgets(comm) configure -state normal
+    $widgets(comm) delete 1.0 end
+    $widgets(comm) configure -state disabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: show_comm <channel> <data>
+#
+# Invoked automatically whenever there is communication between
+# the rendering widget and the server.  Eavesdrops on the communication
+# and posts the commands in a text viewer.
+# ----------------------------------------------------------------------
+proc show_comm {channel {data ""}} {
+    global widgets
+
+    $widgets(comm) configure -state normal
+    switch -- $channel {
+        closed {
+            $widgets(comm) insert end "--CLOSED--\n" error
+        }
+        <<line {
+            $widgets(comm) insert end $data incoming "\n" incoming
+            images_refresh
+        }
+        >>line {
+            $widgets(comm) insert end $data outgoing "\n" outgoing
+        }
+        error {
+            $widgets(comm) insert end $data error "\n" error
+        }
+        default {
+            $widgets(comm) insert end "$data\n"
+        }
+    }
+    $widgets(comm) configure -state disabled
+    $widgets(comm) see end
+}
+
+# ----------------------------------------------------------------------
+# TOPLEVEL FOR IMAGES
+# ----------------------------------------------------------------------
+# USAGE: images_save
+#
+# Invoked when the user presses the "Save As..." button on the
+# images panel.  Saves the current image in a file, which can be
+# examined by some external program.
+# ----------------------------------------------------------------------
+proc images_save {} {
+    global widgets images
+
+    set imh [$widgets(vtkviewer) get -image $images(which)]
+
+    set file [tk_getSaveFile -title "Save Image File" \
+        -defaultextension .jpg -filetypes {{{JPEG files} .jpg} {{All Files} *}}]
+
+    if {"" != $file} {
+        set cmds {
+            $imh write $file -format jpeg
+        }
+        if {[catch $cmds err]} {
+            tk_messageBox -icon error -message "Oops!  Save failed:\n$err"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: images_refresh
+#
+# Invoked automatically whenever there is a change in the view/legend
+# controls on the images panel.  Updates the image being shown based
+# on the current selection.
+# ----------------------------------------------------------------------
+proc images_refresh {} {
+    global widgets images
+    set c $widgets(viewer)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    set imh [$widgets(vtkviewer) get -image $images(which)]
+    set iw [image width $imh]
+    set ih [image height $imh]
+
+    $c coords image [expr {$w/2}] [expr {$h/2}]
+    $c itemconfigure image -image $imh
+    $c coords outline [expr {$w/2-$iw/2}] [expr {$h/2-$ih/2}] \
+        [expr {$w/2+$iw/2}] [expr {$h/2+$ih/2}]
+}
+
+toplevel .images
+wm title .images "Vtkviewer: Images"
+wm withdraw .images
+wm protocol .images WM_DELETE_WINDOW {wm withdraw .images}
+
+frame .images.cntls
+pack .images.cntls -side bottom -fill x
+button .images.cntls.save -text "Save As..." -command images_save
+pack .images.cntls.save -side right -padx 4
+radiobutton .images.cntls.view -text "3D View" -variable images(which) \
+    -value "view" -command images_refresh
+pack .images.cntls.view -side top -anchor w
+radiobutton .images.cntls.legend -text "Legend" -variable images(which) \
+    -value "legend" -command images_refresh
+pack .images.cntls.legend -side top -anchor w
+set images(which) "view"
+
+canvas .images.viewer -background black -width 500 -height 500
+pack .images.viewer -expand yes -fill both
+bind .images.viewer <Configure> images_refresh
+set widgets(viewer) .images.viewer
+
+$widgets(viewer) create image 0 0 -anchor c \
+    -image [image create photo] -tags image
+$widgets(viewer) create rectangle 0 0 1 1 -width 2 -outline red -fill "" \
+    -tags outline
+
+
+# ----------------------------------------------------------------------
+# MAIN WINDOW
+# ----------------------------------------------------------------------
+menu .mbar
+menu .mbar.file
+.mbar.file add command -label "Send VTK File..." -underline 0 -command send_file
+.mbar.file add command -label "Load script..." -underline 0 -command load_script
+.mbar.file add command -label "Reset" -underline 0 -command reset
+.mbar.file add separator
+.mbar.file add command -label "Exit" -underline 1 -command exit
+.mbar add cascade -label "File" -underline 0 -menu .mbar.file
+
+menu .mbar.view
+.mbar.view add command -label "Images..." -underline 0 \
+    -command {wm deiconify .images}
+.mbar add cascade -label "View" -underline 0 -menu .mbar.view
+
+. configure -menu .mbar
+
+
+Rappture::Panes .main -sashwidth 4 -sashrelief raised -sashpadding 4 \
+    -width 6i -height 4i
+pack .main -expand yes -fill both
+
+set f [.main pane 0]
+Rappture::VtkStreamlinesViewer $f.viewer
+pack $f.viewer -expand yes -fill both
+set widgets(vtkviewer) $f.viewer
+
+$f.viewer configure \
+    -sendcommand show_comm \
+    -receivecommand show_comm
+
+set f [.main insert end -fraction 0.5]
+frame $f.send
+pack $f.send -side bottom -fill x
+label $f.send.l -text "Send:"
+pack $f.send.l -side left
+set widgets(command) [entry $f.send.e]
+pack $f.send.e -side left -expand yes -fill x
+bind $f.send.e <KeyPress-Return> send_command
+
+scrollbar $f.sb -orient vertical -command "$f.comm yview"
+pack $f.sb -side right -fill y
+text $f.comm -wrap char -yscrollcommand "$f.sb set"
+pack $f.comm -expand yes -fill both
+set widgets(comm) $f.comm
+
+$widgets(comm) tag configure error -foreground red \
+    -font -*-courier-medium-o-normal-*-*-120-*
+$widgets(comm) tag configure incoming -foreground blue
Index: /tags/1.6.0/gui/apps/vtkviewer-test
===================================================================
--- /tags/1.6.0/gui/apps/vtkviewer-test	(revision 6168)
+++ /tags/1.6.0/gui/apps/vtkviewer-test	(revision 6168)
@@ -0,0 +1,415 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ----------------------------------------------------------------------
+#  TEST PROGRAM for VtkViewer
+#
+#  This program is a test harness for the VtkVis visualization
+#  engine.  It allows you to monitor the commands being sent back
+#  and forth between a standard Rappture application and the VtkVis
+#  server.  You can also send your own commands to the server, to
+#  debug new features.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+bindir=`dirname $0` ; \
+. $bindir/rappture.env ; \
+exec $bindir/wish "$0" "$@"
+# ----------------------------------------------------------------------
+# wish executes everything from here on...
+package require Itcl
+package require Rappture
+package require RapptureGUI
+
+option add *comm.font -*-courier-medium-r-normal-*-*-120-*
+option add *Menu.tearOff off
+
+option add *Tooltip.background white
+option add *Editor.background white
+option add *Gauge.textBackground white
+option add *TemperatureGauge.textBackground white
+option add *Switch.textBackground white
+option add *Progress.barColor #ffffcc
+option add *Balloon.titleBackground #6666cc
+option add *Balloon.titleForeground white
+option add *Balloon*Label.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Radiobutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Checkbutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *ResultSet.controlbarBackground #6666cc
+option add *ResultSet.controlbarForeground white
+option add *ResultSet.activeControlBackground #ccccff
+option add *ResultSet.activeControlForeground black
+option add *Radiodial.length 3i
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-*-180-*
+
+# fix the "grab" command to support a stack of grab windows
+#Rappture::grab::init
+
+# ----------------------------------------------------------------------
+# LOAD RESOURCE SETTINGS
+#
+# Try to load the $SESSIONDIR/resources file, which contains
+# middleware settings, such as the application name and the
+# filexfer settings.
+# ----------------------------------------------------------------------
+Rappture::resources::load
+
+# ----------------------------------------------------------------------
+# Fake data object for sending VTK data file...
+# ----------------------------------------------------------------------
+itcl::class visData {
+    inherit Rappture::Drawing
+
+    constructor {args} {
+        Rappture::Drawing::constructor [Rappture::library standard] ""
+    } {
+        set _data [lindex $args 0]
+        set _type [lindex $args 1]
+    }
+
+    public method components {args} {
+        if {[llength $args] == 0} {
+            return "one"
+        }
+        return ""
+    }
+    public method data {args} {
+        return $_data
+    }
+    public method vtkdata {args} {
+        return $_data
+    }
+    public method values {args} {
+        return $_data
+    }
+    public method hints {args} {
+        return ""
+    }
+    public method type {args} {
+        return $_type
+    }
+    public method shape {args} {
+        return "sphere"
+    }
+
+    private variable _data ""
+    private variable _type ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open VTK File as PolyData"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary -encoding binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set obj [visData #auto $info "polydata"]
+        $widgets(vtkviewer) add $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_streamlines_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_streamlines_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open VTK File as Streamlines"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary -encoding binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set obj [visData #auto $info "streamlines"]
+        $widgets(vtkviewer) add $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_glyphs_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_glyphs_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open VTK File as Glyphs"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set obj [visData #auto $info "glyphs"]
+        $widgets(vtkviewer) add $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_molecule_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_molecule_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open VTK File as Molecule"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set obj [visData #auto $info "molecule"]
+        $widgets(vtkviewer) add $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load_script
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc load_script {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open Command File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+
+        $widgets(command) insert 0 $info
+        send_command
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_command
+#
+# Invoked automatically whenever the user enters a command and
+# presses <Return>.  Sends the command along to the rendering
+# widget.
+# ----------------------------------------------------------------------
+proc send_command {} {
+    global widgets
+    global last_command
+
+    set cmd [$widgets(command) get]
+
+    if {[string length $cmd] > 0} {
+        set last_command $cmd
+    } else {
+        set cmd $last_command
+    }
+    namespace eval Rappture::VtkViewer [list $widgets(vtkviewer) SendCmd $cmd]
+    $widgets(command) delete 0 end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Used internally to reset the connection to the rendering server.
+# Discards all data and resets the widget connection to the server.
+# ----------------------------------------------------------------------
+proc reset {} {
+    global widgets
+    $widgets(vtkviewer) delete
+    $widgets(vtkviewer) disconnect
+    $widgets(comm) configure -state normal
+    $widgets(comm) delete 1.0 end
+    $widgets(comm) configure -state disabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: show_comm <channel> <data>
+#
+# Invoked automatically whenever there is communication between
+# the rendering widget and the server.  Eavesdrops on the communication
+# and posts the commands in a text viewer.
+# ----------------------------------------------------------------------
+proc show_comm {channel {data ""}} {
+    global widgets
+
+    $widgets(comm) configure -state normal
+    switch -- $channel {
+        closed {
+            $widgets(comm) insert end "--CLOSED--\n" error
+        }
+        <<line {
+            $widgets(comm) insert end $data incoming "\n" incoming
+            images_refresh
+        }
+        >>line {
+            $widgets(comm) insert end $data outgoing "\n" outgoing
+        }
+        error {
+            $widgets(comm) insert end $data error "\n" error
+        }
+        default {
+            $widgets(comm) insert end "$data\n"
+        }
+    }
+    $widgets(comm) configure -state disabled
+    $widgets(comm) see end
+}
+
+# ----------------------------------------------------------------------
+# TOPLEVEL FOR IMAGES
+# ----------------------------------------------------------------------
+# USAGE: images_save
+#
+# Invoked when the user presses the "Save As..." button on the
+# images panel.  Saves the current image in a file, which can be
+# examined by some external program.
+# ----------------------------------------------------------------------
+proc images_save {} {
+    global widgets images
+
+    set imh [$widgets(vtkviewer) get -image $images(which)]
+
+    set file [tk_getSaveFile -title "Save Image File" \
+        -defaultextension .jpg -filetypes {{{JPEG files} .jpg} {{All Files} *}}]
+
+    if {"" != $file} {
+        set cmds {
+            $imh write $file -format jpeg
+        }
+        if {[catch $cmds err]} {
+            tk_messageBox -icon error -message "Oops!  Save failed:\n$err"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: images_refresh
+#
+# Invoked automatically whenever there is a change in the view/legend
+# controls on the images panel.  Updates the image being shown based
+# on the current selection.
+# ----------------------------------------------------------------------
+proc images_refresh {} {
+    global widgets images
+    set c $widgets(viewer)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    set imh [$widgets(vtkviewer) get -image $images(which)]
+    set iw [image width $imh]
+    set ih [image height $imh]
+
+    $c coords image [expr {$w/2}] [expr {$h/2}]
+    $c itemconfigure image -image $imh
+    $c coords outline [expr {$w/2-$iw/2}] [expr {$h/2-$ih/2}] \
+        [expr {$w/2+$iw/2}] [expr {$h/2+$ih/2}]
+}
+
+toplevel .images
+wm title .images "Vtkviewer: Images"
+wm withdraw .images
+wm protocol .images WM_DELETE_WINDOW {wm withdraw .images}
+
+frame .images.cntls
+pack .images.cntls -side bottom -fill x
+button .images.cntls.save -text "Save As..." -command images_save
+pack .images.cntls.save -side right -padx 4
+radiobutton .images.cntls.view -text "3D View" -variable images(which) \
+    -value "view" -command images_refresh
+pack .images.cntls.view -side top -anchor w
+radiobutton .images.cntls.legend -text "Legend" -variable images(which) \
+    -value "legend" -command images_refresh
+pack .images.cntls.legend -side top -anchor w
+set images(which) "view"
+
+canvas .images.viewer -background black -width 500 -height 500
+pack .images.viewer -expand yes -fill both
+bind .images.viewer <Configure> images_refresh
+set widgets(viewer) .images.viewer
+
+$widgets(viewer) create image 0 0 -anchor c \
+    -image [image create photo] -tags image
+$widgets(viewer) create rectangle 0 0 1 1 -width 2 -outline red -fill "" \
+    -tags outline
+
+
+# ----------------------------------------------------------------------
+# MAIN WINDOW
+# ----------------------------------------------------------------------
+menu .mbar
+menu .mbar.file
+.mbar.file add command -label "Send VTK File..." -underline 0 -command send_file
+.mbar.file add command -label "Send VTK File as Streamlines..." -underline 0 -command send_streamlines_file
+.mbar.file add command -label "Send VTK File as Glyphs..." -underline 0 -command send_glyphs_file
+.mbar.file add command -label "Send VTK File as Molecule..." -underline 0 -command send_molecule_file
+.mbar.file add command -label "Load script..." -underline 0 -command load_script
+.mbar.file add command -label "Reset" -underline 0 -command reset
+.mbar.file add separator
+.mbar.file add command -label "Exit" -underline 1 -command exit
+.mbar add cascade -label "File" -underline 0 -menu .mbar.file
+
+menu .mbar.view
+.mbar.view add command -label "Images..." -underline 0 \
+    -command {wm deiconify .images}
+.mbar add cascade -label "View" -underline 0 -menu .mbar.view
+
+. configure -menu .mbar
+
+
+Rappture::Panes .main -sashwidth 4 -sashrelief raised -sashpadding 4 \
+    -width 6i -height 4i
+pack .main -expand yes -fill both
+
+set f [.main pane 0]
+Rappture::VtkViewer $f.viewer
+pack $f.viewer -expand yes -fill both
+set widgets(vtkviewer) $f.viewer
+
+$f.viewer configure \
+    -sendcommand show_comm \
+    -receivecommand show_comm
+
+set f [.main insert end -fraction 0.5]
+frame $f.send
+pack $f.send -side bottom -fill x
+label $f.send.l -text "Send:"
+pack $f.send.l -side left
+set widgets(command) [entry $f.send.e]
+pack $f.send.e -side left -expand yes -fill x
+bind $f.send.e <KeyPress-Return> send_command
+
+scrollbar $f.sb -orient vertical -command "$f.comm yview"
+pack $f.sb -side right -fill y
+text $f.comm -wrap char -yscrollcommand "$f.sb set"
+pack $f.comm -expand yes -fill both
+set widgets(comm) $f.comm
+
+$widgets(comm) tag configure error -foreground red \
+    -font -*-courier-medium-o-normal-*-*-120-*
+$widgets(comm) tag configure incoming -foreground blue
Index: /tags/1.6.0/gui/apps/vtkvolume-test
===================================================================
--- /tags/1.6.0/gui/apps/vtkvolume-test	(revision 6168)
+++ /tags/1.6.0/gui/apps/vtkvolume-test	(revision 6168)
@@ -0,0 +1,371 @@
+#!/bin/sh
+# -*- mode: Tcl -*-
+# ----------------------------------------------------------------------
+#  TEST PROGRAM for VtkVolumeViewer
+#
+#  This program is a test harness for the VtkVis visualization
+#  engine.  It allows you to monitor the commands being sent back
+#  and forth between a standard Rappture application and the VtkVis
+#  server.  You can also send your own commands to the server, to
+#  debug new features.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+bindir=`dirname $0` ; \
+. $bindir/rappture.env ; \
+exec $bindir/wish "$0" "$@"
+# ----------------------------------------------------------------------
+# wish executes everything from here on...
+package require Itcl
+package require Rappture
+package require RapptureGUI
+
+option add *comm.font -*-courier-medium-r-normal-*-*-120-*
+option add *Menu.tearOff off
+
+option add *Tooltip.background white
+option add *Editor.background white
+option add *Gauge.textBackground white
+option add *TemperatureGauge.textBackground white
+option add *Switch.textBackground white
+option add *Progress.barColor #ffffcc
+option add *Balloon.titleBackground #6666cc
+option add *Balloon.titleForeground white
+option add *Balloon*Label.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Radiobutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *Balloon*Checkbutton.font -*-helvetica-medium-r-normal-*-*-120-*
+option add *ResultSet.controlbarBackground #6666cc
+option add *ResultSet.controlbarForeground white
+option add *ResultSet.activeControlBackground #ccccff
+option add *ResultSet.activeControlForeground black
+option add *Radiodial.length 3i
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-*-180-*
+
+# fix the "grab" command to support a stack of grab windows
+#Rappture::grab::init
+
+# ----------------------------------------------------------------------
+# LOAD RESOURCE SETTINGS
+#
+# Try to load the $SESSIONDIR/resources file, which contains
+# middleware settings, such as the application name and the
+# filexfer settings.
+# ----------------------------------------------------------------------
+Rappture::resources::load
+
+# ----------------------------------------------------------------------
+# Fake data object for sending VTK data file...
+# ----------------------------------------------------------------------
+itcl::class visData {
+    inherit Rappture::Field
+
+    constructor {args} {
+        Rappture::Field::constructor [Rappture::library standard] ""
+    } {
+        set _data [lindex $args 0]
+        GetTypeAndSize $_cname
+        GetAssociation $_cname
+        ReadVtkDataSet $_cname $_data
+        set _type [lindex $args 1]
+    }
+
+    public method components {args} {
+        Rappture::getopts args params {
+            flag what -name default
+            flag what -dimensions
+            flag what -style
+            flag what -particles
+            flag what -flow
+            flag what -box
+        }
+        if { $params(what) == "-dimensions" } {
+            return "${_dim}D"
+        }
+        if {[llength $args] == 0} {
+            return "one"
+        }
+        return ""
+    }
+    public method isvalid {} {
+        return 1
+    }
+    public method data {args} {
+        return $_data
+    }
+    public method vtkdata {args} {
+        return $_data
+    }
+    public method values {args} {
+        return $_data
+    }
+    public method style {args} {
+        return ""
+    }
+    public method hints {args} {
+        return ""
+    }
+    public method type {args} {
+        return $_type
+    }
+    public method viewer {args} {
+        return "vtkvolume"
+    }
+
+    private variable _cname "one"
+    private variable _data ""
+    private variable _type ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_file
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc send_file {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open VTK File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary -encoding binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+        set obj [visData #auto $info "vtkvolume"]
+        $widgets(vtkvolumeviewer) add $obj
+        $widgets(vtkvolumeviewer) scale $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load_script
+#
+# Prompts the user for a text file, and then sends the text within
+# that file along to the rendering widget.
+# ----------------------------------------------------------------------
+proc load_script {} {
+    global widgets
+
+    set file [tk_getOpenFile -title "Open Command File"]
+    if {"" != $file && [catch {
+            set fid [open $file r]
+            fconfigure $fid -translation binary
+            set info [read $fid]
+            close $fid
+          }] == 0} {
+
+        $widgets(command) insert 0 $info
+        send_command
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send_command
+#
+# Invoked automatically whenever the user enters a command and
+# presses <Return>.  Sends the command along to the rendering
+# widget.
+# ----------------------------------------------------------------------
+proc send_command {} {
+    global widgets
+    global last_command
+
+    set cmd [$widgets(command) get]
+
+    if {[string length $cmd] > 0} {
+        set last_command $cmd
+    } else {
+        set cmd $last_command
+    }
+    namespace eval Rappture::VtkVolumeViewer [list $widgets(vtkvolumeviewer) SendCmd $cmd]
+    $widgets(command) delete 0 end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Used internally to reset the connection to the rendering server.
+# Discards all data and resets the widget connection to the server.
+# ----------------------------------------------------------------------
+proc reset {} {
+    global widgets
+    $widgets(vtkvolumeviewer) delete
+    $widgets(vtkvolumeviewer) disconnect
+    $widgets(comm) configure -state normal
+    $widgets(comm) delete 1.0 end
+    $widgets(comm) configure -state disabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: show_comm <channel> <data>
+#
+# Invoked automatically whenever there is communication between
+# the rendering widget and the server.  Eavesdrops on the communication
+# and posts the commands in a text viewer.
+# ----------------------------------------------------------------------
+proc show_comm {channel {data ""}} {
+    global widgets
+
+    $widgets(comm) configure -state normal
+    switch -- $channel {
+        closed {
+            $widgets(comm) insert end "--CLOSED--\n" error
+        }
+        <<line {
+            $widgets(comm) insert end $data incoming "\n" incoming
+            images_refresh
+        }
+        >>line {
+            $widgets(comm) insert end $data outgoing "\n" outgoing
+        }
+        error {
+            $widgets(comm) insert end $data error "\n" error
+        }
+        default {
+            $widgets(comm) insert end "$data\n"
+        }
+    }
+    $widgets(comm) configure -state disabled
+    $widgets(comm) see end
+}
+
+# ----------------------------------------------------------------------
+# TOPLEVEL FOR IMAGES
+# ----------------------------------------------------------------------
+# USAGE: images_save
+#
+# Invoked when the user presses the "Save As..." button on the
+# images panel.  Saves the current image in a file, which can be
+# examined by some external program.
+# ----------------------------------------------------------------------
+proc images_save {} {
+    global widgets images
+
+    set imh [$widgets(vtkvolumeviewer) get -image $images(which)]
+
+    set file [tk_getSaveFile -title "Save Image File" \
+        -defaultextension .jpg -filetypes {{{JPEG files} .jpg} {{All Files} *}}]
+
+    if {"" != $file} {
+        set cmds {
+            $imh write $file -format jpeg
+        }
+        if {[catch $cmds err]} {
+            tk_messageBox -icon error -message "Oops!  Save failed:\n$err"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: images_refresh
+#
+# Invoked automatically whenever there is a change in the view/legend
+# controls on the images panel.  Updates the image being shown based
+# on the current selection.
+# ----------------------------------------------------------------------
+proc images_refresh {} {
+    global widgets images
+    set c $widgets(viewer)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    set imh [$widgets(vtkvolumeviewer) get -image $images(which)]
+    set iw [image width $imh]
+    set ih [image height $imh]
+
+    $c coords image [expr {$w/2}] [expr {$h/2}]
+    $c itemconfigure image -image $imh
+    $c coords outline [expr {$w/2-$iw/2}] [expr {$h/2-$ih/2}] \
+        [expr {$w/2+$iw/2}] [expr {$h/2+$ih/2}]
+}
+
+toplevel .images
+wm title .images "Vtkvolumeviewer: Images"
+wm withdraw .images
+wm protocol .images WM_DELETE_WINDOW {wm withdraw .images}
+
+frame .images.cntls
+pack .images.cntls -side bottom -fill x
+button .images.cntls.save -text "Save As..." -command images_save
+pack .images.cntls.save -side right -padx 4
+radiobutton .images.cntls.view -text "3D View" -variable images(which) \
+    -value "view" -command images_refresh
+pack .images.cntls.view -side top -anchor w
+radiobutton .images.cntls.legend -text "Legend" -variable images(which) \
+    -value "legend" -command images_refresh
+pack .images.cntls.legend -side top -anchor w
+set images(which) "view"
+
+canvas .images.viewer -background black -width 500 -height 500
+pack .images.viewer -expand yes -fill both
+bind .images.viewer <Configure> images_refresh
+set widgets(viewer) .images.viewer
+
+$widgets(viewer) create image 0 0 -anchor c \
+    -image [image create photo] -tags image
+$widgets(viewer) create rectangle 0 0 1 1 -width 2 -outline red -fill "" \
+    -tags outline
+
+
+# ----------------------------------------------------------------------
+# MAIN WINDOW
+# ----------------------------------------------------------------------
+menu .mbar
+menu .mbar.file
+.mbar.file add command -label "Send VTK File..." -underline 0 -command send_file
+.mbar.file add command -label "Load script..." -underline 0 -command load_script
+.mbar.file add command -label "Reset" -underline 0 -command reset
+.mbar.file add separator
+.mbar.file add command -label "Exit" -underline 1 -command exit
+.mbar add cascade -label "File" -underline 0 -menu .mbar.file
+
+menu .mbar.view
+.mbar.view add command -label "Images..." -underline 0 \
+    -command {wm deiconify .images}
+.mbar add cascade -label "View" -underline 0 -menu .mbar.view
+
+. configure -menu .mbar
+
+
+Rappture::Panes .main -sashwidth 4 -sashrelief raised -sashpadding 4 \
+    -width 6i -height 4i
+pack .main -expand yes -fill both
+
+set f [.main pane 0]
+Rappture::VtkVolumeViewer $f.viewer
+pack $f.viewer -expand yes -fill both
+set widgets(vtkvolumeviewer) $f.viewer
+
+$f.viewer configure \
+    -sendcommand show_comm \
+    -receivecommand show_comm
+
+set f [.main insert end -fraction 0.5]
+frame $f.send
+pack $f.send -side bottom -fill x
+label $f.send.l -text "Send:"
+pack $f.send.l -side left
+set widgets(command) [entry $f.send.e]
+pack $f.send.e -side left -expand yes -fill x
+bind $f.send.e <KeyPress-Return> send_command
+
+scrollbar $f.sb -orient vertical -command "$f.comm yview"
+pack $f.sb -side right -fill y
+text $f.comm -wrap char -yscrollcommand "$f.sb set"
+pack $f.comm -expand yes -fill both
+set widgets(comm) $f.comm
+
+$widgets(comm) tag configure error -foreground red \
+    -font -*-courier-medium-o-normal-*-*-120-*
+$widgets(comm) tag configure incoming -foreground blue
Index: /tags/1.6.0/gui/apps/xmldiff.in
===================================================================
--- /tags/1.6.0/gui/apps/xmldiff.in	(revision 6168)
+++ /tags/1.6.0/gui/apps/xmldiff.in	(revision 6168)
@@ -0,0 +1,14 @@
+#!/bin/sh
+# ----------------------------------------------------------------------
+#  XMLDIFF
+#
+#  get a text list of differences between two xml files
+#
+# ======================================================================
+#  AUTHOR:  Derrick S. Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+exec simsim --nosim --tool $1 --compare $2
Index: /tags/1.6.0/gui/cf/config.guess
===================================================================
--- /tags/1.6.0/gui/cf/config.guess	(revision 6168)
+++ /tags/1.6.0/gui/cf/config.guess	(revision 6168)
@@ -0,0 +1,1391 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-02-22'
+
+# 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 <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  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 <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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) ; } ||
+ { 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
+
+# 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 ;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-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 ;;
+    pmax:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sgi:OpenBSD:*:*)
+	echo mipseb-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    *:OpenBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    alpha:OSF1:*:*)
+	if test $UNAME_RELEASE = "V4.0"; then
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+	fi
+	# 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 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/^[VTX]//' | 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 ;;
+    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_SV: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 ;;
+    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 <stdio.h>  /* 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 <sys/systemcfg.h>
+
+		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 <stdlib.h>
+              #include <unistd.h>
+
+              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 <unistd.h>
+	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 nv1-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 ;;
+    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:*:*)
+	# Determine whether the default compiler uses glibc.
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#if __GLIBC__ >= 2
+	LIBC=gnu
+	#else
+	LIBC=
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+	exit 0 ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit 0 ;;
+    i*:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit 0 ;;
+    i*:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit 0 ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit 0 ;;
+    x86:Interix*:3*)
+	echo i586-pc-interix3
+	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 ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit 0 ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    *:GNU:*:*)
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit 0 ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit 0 ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	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}-unknown-linux-gnu" && 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}-unknown-linux-gnu" && exit 0
+	;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit 0 ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	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}-unknown-linux-gnu${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-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit 0 ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	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}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit 0 ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit 0 ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit 0 ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#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
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && 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: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' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/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[567]*:*)
+	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*: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)
+	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 <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# 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:*:*)
+	case `uname -p` in
+	    *86) UNAME_PROCESSOR=i686 ;;
+	    powerpc) 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 ;;
+    NSR-[DGKLNPTVW]: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 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#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 <sys/param.h>
+  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 <sys/param.h>
+#  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 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> 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:
Index: /tags/1.6.0/gui/cf/config.sub
===================================================================
--- /tags/1.6.0/gui/cf/config.sub	(revision 6168)
+++ /tags/1.6.0/gui/cf/config.sub	(revision 6168)
@@ -0,0 +1,1493 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-02-22'
+
+# 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 <config-patches@gnu.org>.  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 <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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* | freebsd*-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)
+		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] \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k \
+	| m32r | m68000 | m68k | m88k | 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 \
+	| 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 | sparcv9 | sparcv9b \
+	| strongarm \
+	| tahoe | thumb | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | 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-* | 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-* \
+	| m32r-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | 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-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| msp430-* \
+	| none-* | np1-* | nv1-* | 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-* \
+	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | 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
+		;;
+	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
+		;;
+	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
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	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
+		;;
+	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=i686-pc
+		os=-mingw32
+		;;
+	msys)
+		basic_machine=i686-pc
+		os=-msys
+		;;
+	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
+		;;
+	mmix*)
+		basic_machine=mmix-knuth
+		os=-mmixware
+		;;
+	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
+		;;
+	nv1)
+		basic_machine=nv1-cray
+		os=-unicosmp
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	or32 | or32-*)
+		basic_machine=or32-unknown
+		os=-coff
+		;;
+	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)
+		basic_machine=i686-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-*)
+		basic_machine=i686-`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
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	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
+		;;
+        tic4x | c4x*)
+		basic_machine=tic4x-unknown
+		os=-coff
+		;;
+	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
+		;;
+	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
+		;;
+	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
+		;;
+	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 | 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* | -netbsd* | -openbsd* | -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* | -msys* | -linux-gnu* | -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*)
+	# 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*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-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
+		;;
+	-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
+		;;
+	-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
+		;;
+	# 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
+		;;
+	*-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
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-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:
Index: /tags/1.6.0/gui/cf/install-sh
===================================================================
--- /tags/1.6.0/gui/cf/install-sh	(revision 6168)
+++ /tags/1.6.0/gui/cf/install-sh	(revision 6168)
@@ -0,0 +1,310 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2004-01-12.10
+
+# 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}"
+
+transformbasename=
+transform_arg=
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+
+usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 -d DIRECTORIES...
+
+In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
+In the second, create the directory path DIR.
+
+Options:
+-b=TRANSFORMBASENAME
+-c         copy source (using $cpprog) instead of moving (using $mvprog).
+-d         create directories instead of installing files.
+-g GROUP   $chgrp installed files to GROUP.
+-m MODE    $chmod installed files to MODE.
+-o USER    $chown installed files to USER.
+-s         strip installed files (using $stripprog).
+-t=TRANSFORM
+--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
+    -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+        shift
+        continue;;
+
+    -c) instcmd=$cpprog
+        shift
+        continue;;
+
+    -d) dir_arg=true
+        shift
+        continue;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift
+        shift
+        continue;;
+
+    --help) echo "$usage"; exit 0;;
+
+    -m) chmodcmd="$chmodprog $2"
+        shift
+        shift
+        continue;;
+
+    -o) chowncmd="$chownprog $2"
+        shift
+        shift
+        continue;;
+
+    -s) stripcmd=$stripprog
+        shift
+        continue;;
+
+    -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+        shift
+        continue;;
+
+    --version) echo "$0 $scriptversion"; exit 0;;
+
+    *)  # When -d is used, all remaining arguments are directories to create.
+	test -n "$dir_arg" && 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
+      instcmd=:
+      chmodcmd=
+    else
+      instcmd=$mkdirprog
+    fi
+  else
+    # Waiting for this to be detected by the "$instcmd $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
+      dst=$dst/`basename "$src"`
+    fi
+  fi
+
+  # This sed command emulates the dirname command.
+  dstdir=`echo "$dst" | sed -e '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 - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    IFS=$oIFS
+
+    pathcomp=
+
+    while test $# -ne 0 ; do
+      pathcomp=$pathcomp$1
+      shift
+      test -d "$pathcomp" || $mkdirprog "$pathcomp"
+      pathcomp=$pathcomp/
+    done
+  fi
+
+  if test -n "$dir_arg"; then
+    $doit $instcmd "$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
+    # If we're going to rename the final executable, determine the name now.
+    if test -z "$transformarg"; then
+      dstfile=`basename "$dst"`
+    else
+      dstfile=`basename "$dst" $transformbasename \
+               | sed $transformarg`$transformbasename
+    fi
+
+    # don't allow the sed command to completely eliminate the filename.
+    test -z "$dstfile" && 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 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+    trap '(exit $?); exit' 1 2 13 15
+
+    # Move or copy the file name to the temp name
+    $doit $instcmd "$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 $instcmd $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 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
+        }
+      else
+        :
+      fi
+    } &&
+
+    # Now rename the file to the real destination.
+    $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+  fi || { (exit 1); exit; }
+done
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+  (exit 0); exit
+}
+
+# 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:
Index: /tags/1.6.0/gui/cf/install.sh
===================================================================
--- /tags/1.6.0/gui/cf/install.sh	(revision 6168)
+++ /tags/1.6.0/gui/cf/install.sh	(revision 6168)
@@ -0,0 +1,238 @@
+
+#
+# install - install a program, script, or datafile
+# This comes from X11R5.
+#
+# 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.
+#
+
+
+# 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}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd="$cpprog"
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd="$stripprog"
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "install:	no input file specified"
+	exit 1
+else
+	true
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+	
+	if [ -d $dst ]; then
+		instcmd=:
+	else
+		instcmd=mkdir
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f $src -o -d $src ]
+	then
+		true
+	else
+		echo "install:  $src does not exist"
+		exit 1
+	fi
+	
+	if [ x"$dst" = x ]
+	then
+		echo "install:	no destination specified"
+		exit 1
+	else
+		true
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d $dst ]
+	then
+		dst="$dst"/`basename $src`
+	else
+		true
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='	
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp="${pathcomp}${1}"
+	shift
+
+	if [ ! -d "${pathcomp}" ] ;
+        then
+		$mkdirprog "${pathcomp}"
+	else
+		true
+	fi
+
+	pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd $dst &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		dstfile=`basename $dst $transformbasename | 
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		true
+	fi
+
+# Make a temp file name in the proper directory.
+
+	dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd $src $dsttmp &&
+
+	trap "rm -f ${dsttmp}" 0 &&
+
+# 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 $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+	$doit $rmcmd -f $dstdir/$dstfile &&
+	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+
+fi &&
+
+
+exit 0
Index: /tags/1.6.0/gui/cf/ldAix
===================================================================
--- /tags/1.6.0/gui/cf/ldAix	(revision 6168)
+++ /tags/1.6.0/gui/cf/ldAix	(revision 6168)
@@ -0,0 +1,72 @@
+
+#
+# ldAix ldCmd ldArg ldArg ...
+#
+# This shell script provides a wrapper for ld under AIX in order to
+# create the .exp file required for linking.  Its arguments consist
+# of the name and arguments that would normally be provided to the
+# ld command.  This script extracts the names of the object files
+# from the argument list, creates a .exp file describing all of the
+# symbols exported by those files, and then invokes "ldCmd" to
+# perform the real link.
+#
+# SCCS: @(#) ldAix 1.8 97/02/21 14:50:27
+
+# Extract from the arguments the names of all of the object files.
+
+args=$*
+ofiles=""
+for i do
+    x=`echo $i | grep '[^.].o$'`
+    if test "$x" != ""; then
+	ofiles="$ofiles $i"
+    fi
+done
+
+# Create the export file from all of the object files, using nm followed
+# by sed editing.  Here are some tricky aspects of this:
+#
+# 1. Nm produces different output under AIX 4.1 than under AIX 3.2.5;
+#    the following statements handle both versions.
+# 2. Use the -g switch to nm instead of -e under 4.1 (this shows just
+#    externals, not statics;  -g isn't available under 3.2.5, though).
+# 3. Eliminate lines that end in ":": these are the names of object
+#    files (relevant in 4.1 only).
+# 4. Eliminate entries with the "U" key letter;  these are undefined
+#    symbols (relevant in 4.1 only).
+# 5. Eliminate lines that contain the string "0|extern" preceded by space;
+#    in 3.2.5, these are undefined symbols (address 0).
+# 6. Eliminate lines containing the "unamex" symbol.  In 3.2.5, these
+#    are also undefined symbols.
+# 7. If a line starts with ".", delete the leading ".", since this will
+#    just cause confusion later.
+# 8. Eliminate everything after the first field in a line, so that we're
+#    left with just the symbol name.
+
+nmopts="-g -C"
+osver=`uname -v`
+if test $osver -eq 3; then
+  nmopts="-e"
+fi
+rm -f lib.exp
+echo "#! " >lib.exp
+/usr/ccs/bin/nm $nmopts -h $ofiles | sed -e '/:$/d' -e '/ U /d' -e '/[ 	]0|extern/d' -e '/unamex/d' -e 's/^\.//' -e 's/[ 	|].*//' | sort | uniq >>lib.exp
+
+# Extract the name of the object file that we're linking.  If it's a .a
+# file, then link all the objects together into a single file "shr.o"
+# and then put that into the archive.  Otherwise link the object files
+# directly into the .a file.
+
+outputFile=`echo $args | sed -e 's/.*-o \([^ ]*\).*/\1/'`
+noDotA=`echo $outputFile | sed -e '/\.a$/d'`
+echo "noDotA=\"$noDotA\""
+if test "$noDotA" = "" ; then
+    linkArgs=`echo $args | sed -e 's/-o .*\.a /-o shr.o /'`
+    echo $linkArgs
+    eval $linkArgs
+    echo ar cr $outputFile shr.o
+    ar cr $outputFile shr.o
+    rm -f shr.o
+else
+    eval $args
+fi
Index: /tags/1.6.0/gui/cf/mkindex.tcl
===================================================================
--- /tags/1.6.0/gui/cf/mkindex.tcl	(revision 6168)
+++ /tags/1.6.0/gui/cf/mkindex.tcl	(revision 6168)
@@ -0,0 +1,77 @@
+# ----------------------------------------------------------------------
+#  mkindex.tcl
+#
+#  This utility freshens up the tclIndex file in a scripts directory.
+#    USAGE:  tclsh mkindex.tcl ?<directory> <directory> ...?
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl  ;# include itcl constructs in the index
+
+proc auto_mkindex { srcdir outfile patterns } {
+    global errorCode errorInfo
+
+    if {[interp issafe]} {
+        error "can't generate index within safe interpreter"
+    }
+
+    set fid [open $outfile w]
+
+    set oldDir [pwd]
+    cd $srcdir
+    set srcdir [pwd]
+
+    append index "# Tcl autoload index file, version 2.0\n"
+    append index "# This file is generated by the \"auto_mkindex\" command\n"
+    append index "# and sourced to set up indexing information for one or\n"
+    append index "# more commands.  Typically each line is a command that\n"
+    append index "# sets an element in the auto_index array, where the\n"
+    append index "# element name is the name of a command and the value is\n"
+    append index "# a script that loads the command.\n\n"
+    if {$patterns == ""} {
+        set patterns *.tcl
+    }
+    auto_mkindex_parser::init
+    foreach file [eval glob $patterns] {
+        if {[catch {auto_mkindex_parser::mkindex $file} msg] == 0} {
+            append index $msg
+        } else {
+            set code $errorCode
+            set info $errorInfo
+            cd $oldDir
+            error $msg $info $code
+        }
+    }
+    auto_mkindex_parser::cleanup
+    puts -nonewline $fid $index
+    close $fid
+    cd $oldDir
+}
+
+set outfile "tclIndex"
+set srcdir  "."
+set args {}
+for {set i 0} { $i < [llength $argv] } { incr i } {
+    set arg [lindex $argv $i]
+    if { $arg == "--outfile" } {
+	incr i
+	set outfile [lindex $argv $i]
+	continue
+    } elseif { $arg == "--srcdir" } {
+	incr i
+	set srcdir [lindex $argv $i]
+	continue
+    }
+    lappend args $arg
+}
+
+auto_mkindex $srcdir $outfile $args
+if { ![file exists $outfile] } {
+    exit 1
+} 
+exit 0
Index: /tags/1.6.0/gui/cf/mkinstalldirs
===================================================================
--- /tags/1.6.0/gui/cf/mkinstalldirs	(revision 6168)
+++ /tags/1.6.0/gui/cf/mkinstalldirs	(revision 6168)
@@ -0,0 +1,143 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2003-11-08.23
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage"
+      exit 0
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit 0
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+case $dirmode in
+  '')
+    if mkdir -p -- . 2>/dev/null; then
+      echo "mkdir -p -- $*"
+      exec 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.
+      test -d ./-p && rmdir ./-p
+      test -d ./-- && rmdir ./--
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./-- "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
+    fi
+    ;;
+esac
+
+for file
+do
+  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+  shift
+
+  pathcomp=
+  for d
+  do
+    pathcomp="$pathcomp$d"
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+	errstatus=$lasterr
+      else
+	if test ! -z "$dirmode"; then
+	  echo "chmod $dirmode $pathcomp"
+	  lasterr=""
+	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+	  if test ! -z "$lasterr"; then
+	    errstatus=$lasterr
+	  fi
+	fi
+      fi
+    fi
+
+    pathcomp="$pathcomp/"
+  done
+done
+
+exit $errstatus
+
+# 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:
Index: /tags/1.6.0/gui/cf/patchlevel.tcl
===================================================================
--- /tags/1.6.0/gui/cf/patchlevel.tcl	(revision 6168)
+++ /tags/1.6.0/gui/cf/patchlevel.tcl	(revision 6168)
@@ -0,0 +1,19 @@
+# ----------------------------------------------------------------------
+#  patchlevel.tcl
+#
+#  This utility determines the current patchlevel for this package
+#  by querying the revision level from Subversion.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+if {[catch {exec svn info} result] == 0
+      && [regexp {Revision: +([0-9]+)} $result match num]} {
+    puts "r$num"
+} else {
+    puts "r?"
+}
+exit 0
Index: /tags/1.6.0/gui/cf/tcl.m4
===================================================================
--- /tags/1.6.0/gui/cf/tcl.m4	(revision 6168)
+++ /tags/1.6.0/gui/cf/tcl.m4	(revision 6168)
@@ -0,0 +1,3240 @@
+#------------------------------------------------------------------------
+# SC_PATH_TCLCONFIG --
+#
+#	Locate the tclConfig.sh file and perform a sanity check on
+#	the Tcl compile flags
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--with-tcl=...
+#
+#	Defines the following vars:
+#		TCL_BIN_DIR	Full path to the directory containing
+#				the tclConfig.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_PATH_TCLCONFIG], [
+    #
+    # Ok, lets find the tcl configuration
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-tcl
+    #
+
+    if test x"${no_tcl}" = x ; then
+	# we reset no_tcl in case something fails here
+	no_tcl=true
+	AC_ARG_WITH(tcl, [  --with-tcl              directory containing tcl configuration (tclConfig.sh)], with_tclconfig=${withval})
+	AC_MSG_CHECKING([for Tcl configuration])
+	AC_CACHE_VAL(ac_cv_c_tclconfig,[
+
+	    # First check to see if --with-tcl was specified.
+	    if test x"${with_tclconfig}" != x ; then
+		if test -f "${with_tclconfig}/tclConfig.sh" ; then
+		    ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)`
+		else
+		    AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh])
+		fi
+	    fi
+
+	    # then check for a private Tcl installation
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in \
+			../tcl \
+			`ls -dr ../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../tcl \
+			`ls -dr ../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../../tcl \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Darwin, check in Framework installation locations
+	    if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+			`ls -d /Library/Frameworks 2>/dev/null` \
+			`ls -d /Network/Library/Frameworks 2>/dev/null` \
+			`ls -d /System/Library/Frameworks 2>/dev/null` \
+			; do
+		    if test -f "$i/Tcl.framework/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i/Tcl.framework; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few common install locations
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d ${libdir} 2>/dev/null` \
+			`ls -d ${exec_prefix}/lib 2>/dev/null` \
+			`ls -d ${prefix}/lib 2>/dev/null` \
+			`ls -d /usr/local/lib 2>/dev/null` \
+			`ls -d /usr/contrib/lib 2>/dev/null` \
+			`ls -d /usr/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few other private locations
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in \
+			${srcdir}/../tcl \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tclConfig.sh" ; then
+		    ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+		    break
+		fi
+		done
+	    fi
+	])
+
+	if test x"${ac_cv_c_tclconfig}" = x ; then
+	    TCL_BIN_DIR="# no Tcl configs found"
+	    AC_MSG_WARN([Can't find Tcl configuration definitions])
+	    exit 0
+	else
+	    no_tcl=
+	    TCL_BIN_DIR=${ac_cv_c_tclconfig}
+	    AC_MSG_RESULT([found ${TCL_BIN_DIR}/tclConfig.sh])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_PATH_TKCONFIG --
+#
+#	Locate the tkConfig.sh file
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--with-tk=...
+#
+#	Defines the following vars:
+#		TK_BIN_DIR	Full path to the directory containing
+#				the tkConfig.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_PATH_TKCONFIG], [
+    #
+    # Ok, lets find the tk configuration
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-tk
+    #
+
+    if test x"${no_tk}" = x ; then
+	# we reset no_tk in case something fails here
+	no_tk=true
+	AC_ARG_WITH(tk, [  --with-tk               directory containing tk configuration (tkConfig.sh)], with_tkconfig=${withval})
+	AC_MSG_CHECKING([for Tk configuration])
+	AC_CACHE_VAL(ac_cv_c_tkconfig,[
+
+	    # First check to see if --with-tkconfig was specified.
+	    if test x"${with_tkconfig}" != x ; then
+		if test -f "${with_tkconfig}/tkConfig.sh" ; then
+		    ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)`
+		else
+		    AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh])
+		fi
+	    fi
+
+	    # then check for a private Tk library
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in \
+			../tk \
+			`ls -dr ../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../tk[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../tk \
+			`ls -dr ../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../../tk \
+			`ls -dr ../../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Darwin, check in Framework installation locations
+	    if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then
+		for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+			`ls -d /Library/Frameworks 2>/dev/null` \
+			`ls -d /Network/Library/Frameworks 2>/dev/null` \
+			`ls -d /System/Library/Frameworks 2>/dev/null` \
+			; do
+		    if test -f "$i/Tk.framework/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/Tk.framework; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few common install locations
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in `ls -d ${libdir} 2>/dev/null` \
+			`ls -d ${exec_prefix}/lib 2>/dev/null` \
+			`ls -d ${prefix}/lib 2>/dev/null` \
+			`ls -d /usr/local/lib 2>/dev/null` \
+			`ls -d /usr/contrib/lib 2>/dev/null` \
+			`ls -d /usr/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+	    # check in a few other private locations
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in \
+			${srcdir}/../tk \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+	])
+
+	if test x"${ac_cv_c_tkconfig}" = x ; then
+	    TK_BIN_DIR="# no Tk configs found"
+	    AC_MSG_WARN([Can't find Tk configuration definitions])
+	    exit 0
+	else
+	    no_tk=
+	    TK_BIN_DIR=${ac_cv_c_tkconfig}
+	    AC_MSG_RESULT([found ${TK_BIN_DIR}/tkConfig.sh])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_LOAD_TCLCONFIG --
+#
+#	Load the tclConfig.sh file
+#
+# Arguments:
+#	
+#	Requires the following vars to be set:
+#		TCL_BIN_DIR
+#
+# Results:
+#
+#	Subst the following vars:
+#		TCL_BIN_DIR
+#		TCL_SRC_DIR
+#		TCL_LIB_FILE
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_LOAD_TCLCONFIG], [
+    AC_MSG_CHECKING([for existence of ${TCL_BIN_DIR}/tclConfig.sh])
+
+    if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then
+        AC_MSG_RESULT([loading])
+	. ${TCL_BIN_DIR}/tclConfig.sh
+    else
+        AC_MSG_RESULT([could not find ${TCL_BIN_DIR}/tclConfig.sh])
+    fi
+
+    # eval is required to do the TCL_DBGX substitution
+    eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+    eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
+
+    # If the TCL_BIN_DIR is the build directory (not the install directory),
+    # then set the common variable name to the value of the build variables.
+    # For example, the variable TCL_LIB_SPEC will be set to the value
+    # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
+    # instead of TCL_BUILD_LIB_SPEC since it will work with both an
+    # installed and uninstalled version of Tcl.
+    if test -f ${TCL_BIN_DIR}/Makefile ; then
+        TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
+        TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
+        TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
+    elif test "`uname -s`" = "Darwin"; then
+	# If Tcl was built as a framework, attempt to use the libraries
+	# from the framework at the given location so that linking works
+	# against Tcl.framework installed in an arbitary location.
+	case ${TCL_DEFS} in
+	    *TCL_FRAMEWORK*)
+		if test -f ${TCL_BIN_DIR}/${TCL_LIB_FILE}; then
+		    for i in "`cd ${TCL_BIN_DIR}; pwd`" \
+			     "`cd ${TCL_BIN_DIR}/../..; pwd`"; do
+			if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then
+			    TCL_LIB_SPEC="-F`dirname "$i"` -framework ${TCL_LIB_FILE}"
+			    break
+			fi
+		    done
+		fi
+		if test -f ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}; then
+		    TCL_STUB_LIB_SPEC="-L${TCL_BIN_DIR} ${TCL_STUB_LIB_FLAG}"
+		    TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"
+		fi
+		;;
+	esac
+    fi
+
+    # eval is required to do the TCL_DBGX substitution
+    eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
+    eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
+    eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
+    eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
+
+    AC_SUBST(TCL_VERSION)
+    AC_SUBST(TCL_PATCH_LEVEL)
+    AC_SUBST(TCL_BIN_DIR)
+    AC_SUBST(TCL_SRC_DIR)
+
+    AC_SUBST(TCL_LIB_FILE)
+    AC_SUBST(TCL_LIB_FLAG)
+    AC_SUBST(TCL_LIB_SPEC)
+
+    AC_SUBST(TCL_STUB_LIB_FILE)
+    AC_SUBST(TCL_STUB_LIB_FLAG)
+    AC_SUBST(TCL_STUB_LIB_SPEC)
+])
+
+#------------------------------------------------------------------------
+# SC_LOAD_TKCONFIG --
+#
+#	Load the tkConfig.sh file
+#
+# Arguments:
+#	
+#	Requires the following vars to be set:
+#		TK_BIN_DIR
+#
+# Results:
+#
+#	Sets the following vars that should be in tkConfig.sh:
+#		TK_BIN_DIR
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_LOAD_TKCONFIG], [
+    AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh])
+
+    if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then
+        AC_MSG_RESULT([loading])
+	. ${TK_BIN_DIR}/tkConfig.sh
+    else
+        AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh])
+    fi
+
+    # eval is required to do the TK_DBGX substitution
+    eval "TK_LIB_FILE=\"${TK_LIB_FILE}\""
+    eval "TK_STUB_LIB_FILE=\"${TK_STUB_LIB_FILE}\""
+
+    # If the TK_BIN_DIR is the build directory (not the install directory),
+    # then set the common variable name to the value of the build variables.
+    # For example, the variable TK_LIB_SPEC will be set to the value
+    # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC
+    # instead of TK_BUILD_LIB_SPEC since it will work with both an
+    # installed and uninstalled version of Tcl.
+    if test -f ${TK_BIN_DIR}/Makefile ; then
+        TK_LIB_SPEC=${TK_BUILD_LIB_SPEC}
+        TK_STUB_LIB_SPEC=${TK_BUILD_STUB_LIB_SPEC}
+        TK_STUB_LIB_PATH=${TK_BUILD_STUB_LIB_PATH}
+    elif test "`uname -s`" = "Darwin"; then
+	# If Tk was built as a framework, attempt to use the libraries
+	# from the framework at the given location so that linking works
+	# against Tk.framework installed in an arbitary location.
+	case ${TK_DEFS} in
+	    *TK_FRAMEWORK*)
+		if test -f ${TK_BIN_DIR}/${TK_LIB_FILE}; then
+		    for i in "`cd ${TK_BIN_DIR}; pwd`" \
+			     "`cd ${TK_BIN_DIR}/../..; pwd`"; do
+			if test "`basename "$i"`" = "${TK_LIB_FILE}.framework"; then
+			    TK_LIB_SPEC="-F`dirname "$i"` -framework ${TK_LIB_FILE}"
+			    break
+			fi
+		    done
+		fi
+		if test -f ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}; then
+		    TK_STUB_LIB_SPEC="-L${TK_BIN_DIR} ${TK_STUB_LIB_FLAG}"
+		    TK_STUB_LIB_PATH="${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"
+		fi
+		;;
+	esac
+    fi
+
+    # eval is required to do the TK_DBGX substitution
+    eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}\""
+    eval "TK_LIB_SPEC=\"${TK_LIB_SPEC}\""
+    eval "TK_STUB_LIB_FLAG=\"${TK_STUB_LIB_FLAG}\""
+    eval "TK_STUB_LIB_SPEC=\"${TK_STUB_LIB_SPEC}\""
+
+    AC_SUBST(TK_VERSION)
+    AC_SUBST(TK_BIN_DIR)
+    AC_SUBST(TK_SRC_DIR)
+
+    AC_SUBST(TK_LIB_FILE)
+    AC_SUBST(TK_LIB_FLAG)
+    AC_SUBST(TK_LIB_SPEC)
+
+    AC_SUBST(TK_STUB_LIB_FILE)
+    AC_SUBST(TK_STUB_LIB_FLAG)
+    AC_SUBST(TK_STUB_LIB_SPEC)
+])
+
+#------------------------------------------------------------------------
+# SC_PROG_TCLSH
+#	Locate a tclsh shell installed on the system path. This macro
+#	will only find a Tcl shell that already exists on the system.
+#	It will not find a Tcl shell in the Tcl build directory or
+#	a Tcl shell that has been installed from the Tcl build directory.
+#	If a Tcl shell can't be located on the PATH, then TCLSH_PROG will
+#	be set to "". Extensions should take care not to create Makefile
+#	rules that are run by default and depend on TCLSH_PROG. An
+#	extension can't assume that an executable Tcl shell exists at
+#	build time.
+#
+# Arguments
+#	none
+#
+# Results
+#	Subst's the following values:
+#		TCLSH_PROG
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_PROG_TCLSH], [
+    AC_MSG_CHECKING([for tclsh])
+    AC_CACHE_VAL(ac_cv_path_tclsh, [
+	search_path=`echo ${PATH} | sed -e 's/:/ /g'`
+	for dir in $search_path ; do
+	    for j in `ls -r $dir/tclsh[[8-9]]* 2> /dev/null` \
+		    `ls -r $dir/tclsh* 2> /dev/null` ; do
+		if test x"$ac_cv_path_tclsh" = x ; then
+		    if test -f "$j" ; then
+			ac_cv_path_tclsh=$j
+			break
+		    fi
+		fi
+	    done
+	done
+    ])
+
+    if test -f "$ac_cv_path_tclsh" ; then
+	TCLSH_PROG="$ac_cv_path_tclsh"
+	AC_MSG_RESULT([$TCLSH_PROG])
+    else
+	# It is not an error if an installed version of Tcl can't be located.
+	TCLSH_PROG=""
+	AC_MSG_RESULT([No tclsh found on PATH])
+    fi
+    AC_SUBST(TCLSH_PROG)
+])
+
+#------------------------------------------------------------------------
+# SC_BUILD_TCLSH
+#	Determine the fully qualified path name of the tclsh executable
+#	in the Tcl build directory. This macro will correctly determine
+#	the name of the tclsh executable even if tclsh has not yet
+#	been built in the build directory. The build tclsh must be used
+#	when running tests from an extension build directory. It is not
+#	correct to use the TCLSH_PROG in cases like this.
+#
+# Arguments
+#	none
+#
+# Results
+#	Subst's the following values:
+#		BUILD_TCLSH
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_BUILD_TCLSH], [
+    AC_MSG_CHECKING([for tclsh in Tcl build directory])
+    BUILD_TCLSH=${TCL_BIN_DIR}/tclsh
+    AC_MSG_RESULT([$BUILD_TCLSH])
+    AC_SUBST(BUILD_TCLSH)
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_SHARED --
+#
+#	Allows the building of shared libraries
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-shared=yes|no
+#
+#	Defines the following vars:
+#		STATIC_BUILD	Used for building import/export libraries
+#				on Windows.
+#
+#	Sets the following vars:
+#		SHARED_BUILD	Value of 1 or 0
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_SHARED], [
+    AC_MSG_CHECKING([how to build libraries])
+    AC_ARG_ENABLE(shared,
+	[  --enable-shared         build and link with shared libraries [--enable-shared]],
+	[tcl_ok=$enableval], [tcl_ok=yes])
+
+    if test "${enable_shared+set}" = set; then
+	enableval="$enable_shared"
+	tcl_ok=$enableval
+    else
+	tcl_ok=yes
+    fi
+
+    if test "$tcl_ok" = "yes" ; then
+	AC_MSG_RESULT([shared])
+	SHARED_BUILD=1
+    else
+	AC_MSG_RESULT([static])
+	SHARED_BUILD=0
+	AC_DEFINE(STATIC_BUILD)
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_FRAMEWORK --
+#
+#	Allows the building of shared libraries into frameworks
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-framework=yes|no
+#
+#	Sets the following vars:
+#		FRAMEWORK_BUILD	Value of 1 or 0
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_FRAMEWORK], [
+    if test "`uname -s`" = "Darwin" ; then
+	AC_MSG_CHECKING([how to package libraries])
+	AC_ARG_ENABLE(framework,
+	    [  --enable-framework      package shared libraries in MacOSX frameworks [--disable-framework]],
+	    [enable_framework=$enableval], [enable_framework=no])
+	if test $enable_framework = yes; then
+	    if test $SHARED_BUILD = 0; then
+		AC_MSG_WARN([Frameworks can only be built if --enable-shared is yes])
+		enable_framework=no
+	    fi
+	    if test $tcl_corefoundation = no; then
+		AC_MSG_WARN([Frameworks can only be used when CoreFoundation is available])
+		enable_framework=no
+	    fi
+	fi
+	if test $enable_framework = yes; then
+	    AC_MSG_RESULT([framework])
+	    FRAMEWORK_BUILD=1
+	else
+	    if test $SHARED_BUILD = 1; then
+		AC_MSG_RESULT([shared library])
+	    else
+		AC_MSG_RESULT([static library])
+	    fi
+	    FRAMEWORK_BUILD=0
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_THREADS --
+#
+#	Specify if thread support should be enabled.  TCL_THREADS is
+#	checked so that if you are compiling an extension against a
+#	threaded core, your extension must be compiled threaded as well.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-threads
+#
+#	Sets the following vars:
+#		THREADS_LIBS	Thread library(s)
+#
+#	Defines the following vars:
+#		TCL_THREADS
+#		_REENTRANT
+#		_THREAD_SAFE
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_THREADS], [
+    AC_ARG_ENABLE(threads, [  --enable-threads        build with threads],
+	[tcl_ok=$enableval], [tcl_ok=no])
+
+    if test "${TCL_THREADS}" = 1; then
+	tcl_threaded_core=1;
+    fi
+
+    if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then
+	TCL_THREADS=1
+	# USE_THREAD_ALLOC tells us to try the special thread-based
+	# allocator that significantly reduces lock contention
+	AC_DEFINE(USE_THREAD_ALLOC)
+	AC_DEFINE(_REENTRANT)
+	if test "`uname -s`" = "SunOS" ; then
+	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
+	fi
+	AC_DEFINE(_THREAD_SAFE)
+	AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
+	if test "$tcl_ok" = "no"; then
+	    # Check a little harder for __pthread_mutex_init in the same
+	    # library, as some systems hide it there until pthread.h is
+	    # defined.  We could alternatively do an AC_TRY_COMPILE with
+	    # pthread.h, but that will work with libpthread really doesn't
+	    # exist, like AIX 4.2.  [Bug: 4359]
+	    AC_CHECK_LIB(pthread, __pthread_mutex_init,
+		tcl_ok=yes, tcl_ok=no)
+	fi
+
+	if test "$tcl_ok" = "yes"; then
+	    # The space is needed
+	    THREADS_LIBS=" -lpthread"
+	else
+	    AC_CHECK_LIB(pthreads, pthread_mutex_init,
+		tcl_ok=yes, tcl_ok=no)
+	    if test "$tcl_ok" = "yes"; then
+		# The space is needed
+		THREADS_LIBS=" -lpthreads"
+	    else
+		AC_CHECK_LIB(c, pthread_mutex_init,
+		    tcl_ok=yes, tcl_ok=no)
+		if test "$tcl_ok" = "no"; then
+		    AC_CHECK_LIB(c_r, pthread_mutex_init,
+			tcl_ok=yes, tcl_ok=no)
+		    if test "$tcl_ok" = "yes"; then
+			# The space is needed
+			THREADS_LIBS=" -pthread"
+		    else
+			TCL_THREADS=0
+			AC_MSG_WARN([Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile...])
+		    fi
+		fi
+	    fi
+	fi
+
+	# Does the pthread-implementation provide
+	# 'pthread_attr_setstacksize' ?
+
+	ac_saved_libs=$LIBS
+	LIBS="$LIBS $THREADS_LIBS"
+	AC_CHECK_FUNCS(pthread_attr_setstacksize)
+	AC_CHECK_FUNCS(pthread_atfork)
+	LIBS=$ac_saved_libs
+    else
+	TCL_THREADS=0
+    fi
+    # Do checking message here to not mess up interleaved configure output
+    AC_MSG_CHECKING([for building with threads])
+    if test "${TCL_THREADS}" = 1; then
+	AC_DEFINE(TCL_THREADS, 1, [Are we building with threads enabled?])
+	if test "${tcl_threaded_core}" = 1; then
+	    AC_MSG_RESULT([yes (threaded core)])
+	else
+	    AC_MSG_RESULT([yes])
+	fi
+    else
+	AC_MSG_RESULT([no (default)])
+    fi
+
+    AC_SUBST(TCL_THREADS)
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_SYMBOLS --
+#
+#	Specify if debugging symbols should be used.
+#	Memory (TCL_MEM_DEBUG) and compile (TCL_COMPILE_DEBUG) debugging
+#	can also be enabled.
+#
+# Arguments:
+#	none
+#	
+#	Requires the following vars to be set in the Makefile:
+#		CFLAGS_DEBUG
+#		CFLAGS_OPTIMIZE
+#		LDFLAGS_DEBUG
+#		LDFLAGS_OPTIMIZE
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-symbols
+#
+#	Defines the following vars:
+#		CFLAGS_DEFAULT	Sets to $(CFLAGS_DEBUG) if true
+#				Sets to $(CFLAGS_OPTIMIZE) if false
+#		LDFLAGS_DEFAULT	Sets to $(LDFLAGS_DEBUG) if true
+#				Sets to $(LDFLAGS_OPTIMIZE) if false
+#		DBGX		Debug library extension
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_SYMBOLS], [
+    AC_MSG_CHECKING([for build with symbols])
+    AC_ARG_ENABLE(symbols, [  --enable-symbols        build with debugging symbols [--disable-symbols]],    [tcl_ok=$enableval], [tcl_ok=no])
+# FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT.
+    if test "$tcl_ok" = "no"; then
+	CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)'
+	LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)'
+	DBGX=""
+	AC_MSG_RESULT([no])
+    else
+	CFLAGS_DEFAULT='$(CFLAGS_DEBUG)'
+	LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)'
+	DBGX=g
+	if test "$tcl_ok" = "yes"; then
+	    AC_MSG_RESULT([yes (standard debugging)])
+	fi
+    fi
+    AC_SUBST(CFLAGS_DEFAULT)
+    AC_SUBST(LDFLAGS_DEFAULT)
+
+    if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
+	AC_DEFINE(TCL_MEM_DEBUG)
+    fi
+
+    if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then
+	AC_DEFINE(TCL_COMPILE_DEBUG)
+	AC_DEFINE(TCL_COMPILE_STATS)
+    fi
+
+    if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
+	if test "$tcl_ok" = "all"; then
+	    AC_MSG_RESULT([enabled symbols mem compile debugging])
+	else
+	    AC_MSG_RESULT([enabled $tcl_ok debugging])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_LANGINFO --
+#
+#	Allows use of modern nl_langinfo check for better l10n.
+#	This is only relevant for Unix.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-langinfo=yes|no (default is yes)
+#
+#	Defines the following vars:
+#		HAVE_LANGINFO	Triggers use of nl_langinfo if defined.
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_LANGINFO], [
+    AC_ARG_ENABLE(langinfo,
+	[  --enable-langinfo	  use nl_langinfo if possible to determine
+			  encoding at startup, otherwise use old heuristic],
+	[langinfo_ok=$enableval], [langinfo_ok=yes])
+
+    HAVE_LANGINFO=0
+    if test "$langinfo_ok" = "yes"; then
+	AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no])
+    fi
+    AC_MSG_CHECKING([whether to use nl_langinfo])
+    if test "$langinfo_ok" = "yes"; then
+	AC_CACHE_VAL(tcl_cv_langinfo_h, [
+	    AC_TRY_COMPILE([#include <langinfo.h>], [nl_langinfo(CODESET);],
+		    [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no])])
+	AC_MSG_RESULT([$tcl_cv_langinfo_h])
+	if test $tcl_cv_langinfo_h = yes; then
+	    AC_DEFINE(HAVE_LANGINFO)
+	fi
+    else 
+	AC_MSG_RESULT([$langinfo_ok])
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_MANPAGES
+#	
+#	Decide whether to use symlinks for linking the manpages,
+#	whether to compress the manpages after installation, and
+#	whether to add a package name suffix to the installed
+#	manpages to avoidfile name clashes.
+#	If compression is enabled also find out what file name suffix
+#	the given compression program is using.
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-man-symlinks
+#		--enable-man-compression=PROG
+#		--enable-man-suffix[=STRING]
+#
+#	Defines the following variable:
+#
+#	MAN_FLAGS -	The apropriate flags for installManPage
+#			according to the user's selection.
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_MANPAGES], [
+    AC_MSG_CHECKING([whether to use symlinks for manpages])
+    AC_ARG_ENABLE(man-symlinks,
+	    [  --enable-man-symlinks   use symlinks for the manpages],
+	test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks",
+	enableval="no")
+    AC_MSG_RESULT([$enableval])
+
+    AC_MSG_CHECKING([whether to compress the manpages])
+    AC_ARG_ENABLE(man-compression,
+	    [  --enable-man-compression=PROG
+		      compress the manpages with PROG],
+	[case $enableval in
+	    yes) AC_MSG_ERROR([missing argument to --enable-man-compression]);;
+	    no)  ;;
+	    *)   MAN_FLAGS="$MAN_FLAGS --compress $enableval";;
+	esac],
+	enableval="no")
+    AC_MSG_RESULT([$enableval])
+    if test "$enableval" != "no"; then
+	AC_MSG_CHECKING([for compressed file suffix])
+	touch TeST
+	$enableval TeST
+	Z=`ls TeST* | sed 's/^....//'`
+	rm -f TeST*
+	MAN_FLAGS="$MAN_FLAGS --extension $Z"
+	AC_MSG_RESULT([$Z])
+    fi
+
+    AC_MSG_CHECKING([whether to add a package name suffix for the manpages])
+    AC_ARG_ENABLE(man-suffix,
+	    [  --enable-man-suffix=STRING
+		      use STRING as a suffix to manpage file names
+		      (default: $1)],
+	[case $enableval in
+	    yes) enableval="$1" MAN_FLAGS="$MAN_FLAGS --suffix $enableval";;
+	    no)  ;;
+	    *)   MAN_FLAGS="$MAN_FLAGS --suffix $enableval";;
+	esac],
+	enableval="no")
+    AC_MSG_RESULT([$enableval])
+
+    AC_SUBST(MAN_FLAGS)
+])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_SYSTEM
+#
+#	Determine what the system is (some things cannot be easily checked
+#	on a feature-driven basis, alas). This can usually be done via the
+#	"uname" command, but there are a few systems, like Next, where
+#	this doesn't work.
+#
+# Arguments:
+#	none
+#
+# Results:
+#	Defines the following var:
+#
+#	system -	System/platform/version identification code.
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_SYSTEM], [
+    AC_CACHE_CHECK([system version], tcl_cv_sys_version, [
+	if test -f /usr/lib/NextStep/software_version; then
+	    tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
+	else
+	    tcl_cv_sys_version=`uname -s`-`uname -r`
+	    if test "$?" -ne 0 ; then
+		AC_MSG_WARN([can't find uname command])
+		tcl_cv_sys_version=unknown
+	    else
+		# Special check for weird MP-RAS system (uname returns weird
+		# results, and the version is kept in special file).
+
+		if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
+		    tcl_cv_sys_version=MP-RAS-`awk '{print $[3]}' /etc/.relid`
+		fi
+		if test "`uname -s`" = "AIX" ; then
+		    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
+		fi
+	    fi
+	fi
+    ])
+    system=$tcl_cv_sys_version
+])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_CFLAGS
+#
+#	Try to determine the proper flags to pass to the compiler
+#	for building shared libraries and other such nonsense.
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Defines and substitutes the following vars:
+#
+#       DL_OBJS -       Name of the object file that implements dynamic
+#                       loading for Tcl on this system.
+#       DL_LIBS -       Library file(s) to include in tclsh and other base
+#                       applications in order for the "load" command to work.
+#       LDFLAGS -      Flags to pass to the compiler when linking object
+#                       files into an executable application binary such
+#                       as tclsh.
+#       LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib",
+#                       that tell the run-time dynamic linker where to look
+#                       for shared libraries such as libtcl.so.  Depends on
+#                       the variable LIB_RUNTIME_DIR in the Makefile. Could
+#                       be the same as CC_SEARCH_FLAGS if ${CC} is used to link.
+#       CC_SEARCH_FLAGS-Flags to pass to ${CC}, such as "-Wl,-rpath,/usr/local/tcl/lib",
+#                       that tell the run-time dynamic linker where to look
+#                       for shared libraries such as libtcl.so.  Depends on
+#                       the variable LIB_RUNTIME_DIR in the Makefile.
+#       MAKE_LIB -      Command to execute to build the a library;
+#                       differs when building shared or static.
+#       MAKE_STUB_LIB -
+#                       Command to execute to build a stub library.
+#       INSTALL_LIB -   Command to execute to install a library;
+#                       differs when building shared or static.
+#       INSTALL_STUB_LIB -
+#                       Command to execute to install a stub library.
+#       STLIB_LD -      Base command to use for combining object files
+#                       into a static library.
+#       SHLIB_CFLAGS -  Flags to pass to cc when compiling the components
+#                       of a shared library (may request position-independent
+#                       code, among other things).
+#       SHLIB_LD -      Base command to use for combining object files
+#                       into a shared library.
+#       SHLIB_LD_LIBS - Dependent libraries for the linker to scan when
+#                       creating shared libraries.  This symbol typically
+#                       goes at the end of the "ld" commands that build
+#                       shared libraries. The value of the symbol is
+#                       "${LIBS}" if all of the dependent libraries should
+#                       be specified when creating a shared library.  If
+#                       dependent libraries should not be specified (as on
+#                       SunOS 4.x, where they cause the link to fail, or in
+#                       general if Tcl and Tk aren't themselves shared
+#                       libraries), then this symbol has an empty string
+#                       as its value.
+#       SHLIB_SUFFIX -  Suffix to use for the names of dynamically loadable
+#                       extensions.  An empty string means we don't know how
+#                       to use shared libraries on this platform.
+# TCL_SHLIB_LD_EXTRAS - Additional element which are added to SHLIB_LD_LIBS
+#  TK_SHLIB_LD_EXTRAS   for the build of Tcl and Tk, but not recorded in the
+#                       tclConfig.sh, since they are only used for the build
+#                       of Tcl and Tk. 
+#                       Examples: MacOS X records the library version and
+#                       compatibility version in the shared library.  But
+#                       of course the Tcl version of this is only used for Tcl.
+#       LIB_SUFFIX -    Specifies everything that comes after the "libfoo"
+#                       in a static or shared library name, using the $VERSION variable
+#                       to put the version in the right place.  This is used
+#                       by platforms that need non-standard library names.
+#                       Examples:  ${VERSION}.so.1.1 on NetBSD, since it needs
+#                       to have a version after the .so, and ${VERSION}.a
+#                       on AIX, since a shared library needs to have
+#                       a .a extension whereas shared objects for loadable
+#                       extensions have a .so extension.  Defaults to
+#                       ${VERSION}${SHLIB_SUFFIX}.
+#       TCL_NEEDS_EXP_FILE -
+#                       1 means that an export file is needed to link to a
+#                       shared library.
+#       TCL_EXP_FILE -  The name of the installed export / import file which
+#                       should be used to link to the Tcl shared library.
+#                       Empty if Tcl is unshared.
+#       TCL_BUILD_EXP_FILE -
+#                       The name of the built export / import file which
+#                       should be used to link to the Tcl shared library.
+#                       Empty if Tcl is unshared.
+#	CFLAGS_DEBUG -
+#			Flags used when running the compiler in debug mode
+#	CFLAGS_OPTIMIZE -
+#			Flags used when running the compiler in optimize mode
+#	CFLAGS -	Additional CFLAGS added as necessary (usually 64-bit)
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_CFLAGS], [
+
+    # Step 0.a: Enable 64 bit support?
+
+    AC_MSG_CHECKING([if 64bit support is requested])
+    AC_ARG_ENABLE(64bit,[  --enable-64bit          enable 64bit support (where applicable)],
+	[do64bit=$enableval], [do64bit=no])
+    AC_MSG_RESULT([$do64bit])
+
+    # Step 0.b: Enable Solaris 64 bit VIS support?
+
+    AC_MSG_CHECKING([if 64bit Sparc VIS support is requested])
+    AC_ARG_ENABLE(64bit-vis,[  --enable-64bit-vis      enable 64bit Sparc VIS support],
+	[do64bitVIS=$enableval], [do64bitVIS=no])
+    AC_MSG_RESULT([$do64bitVIS])
+
+    if test "$do64bitVIS" = "yes"; then
+	# Force 64bit on with VIS
+	do64bit=yes
+    fi
+
+    # Step 1: set the variable "system" to hold the name and version number
+    # for the system.
+
+    SC_CONFIG_SYSTEM
+
+    # Step 2: check for existence of -ldl library.  This is needed because
+    # Linux can use either -ldl or -ldld for dynamic loading.
+
+    AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
+
+    # Require ranlib early so we can override it in special cases below.
+
+    AC_REQUIRE([AC_PROG_RANLIB])
+
+    # Step 3: set configuration options based on system name and version.
+
+    do64bit_ok=no
+    LDFLAGS_ORIG="$LDFLAGS"
+    TCL_EXPORT_FILE_SUFFIX=""
+    UNSHARED_LIB_SUFFIX=""
+    TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`'
+    ECHO_VERSION='`echo ${VERSION}`'
+    TCL_LIB_VERSIONS_OK=ok
+    CFLAGS_DEBUG=-g
+    CFLAGS_OPTIMIZE=-O
+    if test "$GCC" = "yes" ; then
+	CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing"
+    else
+	CFLAGS_WARNING=""
+    fi
+    TCL_NEEDS_EXP_FILE=0
+    TCL_BUILD_EXP_FILE=""
+    TCL_EXP_FILE=""
+dnl FIXME: Replace AC_CHECK_PROG with AC_CHECK_TOOL once cross compiling is fixed.
+dnl AC_CHECK_TOOL(AR, ar)
+    AC_CHECK_PROG(AR, ar, ar)
+    if test "${AR}" = "" ; then
+	AC_MSG_ERROR([Required archive tool 'ar' not found on PATH.])
+    fi
+    STLIB_LD='${AR} cr'
+    LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
+    PLAT_OBJS=""
+    PLAT_SRCS=""
+    case $system in
+	AIX-*)
+	    if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
+		# AIX requires the _r compiler when gcc isn't being used
+		case "${CC}" in
+		    *_r)
+			# ok ...
+			;;
+		    *)
+			CC=${CC}_r
+			;;
+		esac
+		AC_MSG_RESULT([Using $CC for compiling with threads])
+	    fi
+	    LIBS="$LIBS -lc"
+	    SHLIB_CFLAGS=""
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    DL_OBJS="tclLoadDl.o"
+	    LD_LIBRARY_PATH_VAR="LIBPATH"
+
+	    # Check to enable 64-bit flags for compiler/linker on AIX 4+
+	    if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then
+		if test "$GCC" = "yes" ; then
+		    AC_MSG_WARN([64bit mode not supported with GCC on $system])
+		else 
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS -q64"
+		    LDFLAGS="$LDFLAGS -q64"
+		    RANLIB="${RANLIB} -X64"
+		    AR="${AR} -X64"
+		    SHLIB_LD_FLAGS="-b64"
+		fi
+	    fi
+
+	    if test "`uname -m`" = "ia64" ; then
+		# AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		# AIX-5 has dl* in libc.so
+		DL_LIBS=""
+		if test "$GCC" = "yes" ; then
+		    CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		else
+		    CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
+		fi
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    else
+		if test "$GCC" = "yes" ; then
+		    SHLIB_LD="gcc -shared"
+		else
+		    SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
+		fi
+		SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}"
+		DL_LIBS="-ldl"
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		TCL_NEEDS_EXP_FILE=1
+		TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp'
+	    fi
+
+	    # AIX v<=4.1 has some different flags than 4.2+
+	    if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then
+		LIBOBJS="$LIBOBJS tclLoadAix.o"
+		DL_LIBS="-lld"
+	    fi
+
+	    # On AIX <=v4 systems, libbsd.a has to be linked in to support
+	    # non-blocking file IO.  This library has to be linked in after
+	    # the MATH_LIBS or it breaks the pow() function.  The way to
+	    # insure proper sequencing, is to add it to the tail of MATH_LIBS.
+	    # This library also supplies gettimeofday.
+	    #
+	    # AIX does not have a timezone field in struct tm. When the AIX
+	    # bsd library is used, the timezone global and the gettimeofday
+	    # methods are to be avoided for timezone deduction instead, we
+	    # deduce the timezone by comparing the localtime result on a
+	    # known GMT value.
+
+	    AC_CHECK_LIB(bsd, gettimeofday, libbsd=yes, libbsd=no)
+	    if test $libbsd = yes; then
+	    	MATH_LIBS="$MATH_LIBS -lbsd"
+	    	AC_DEFINE(USE_DELTA_FOR_TZ)
+	    fi
+	    ;;
+	BeOS*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="${CC} -nostart"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+
+	    #-----------------------------------------------------------
+	    # Check for inet_ntoa in -lbind, for BeOS (which also needs
+	    # -lsocket, even if the network functions are in -lnet which
+	    # is always linked to, for compatibility.
+	    #-----------------------------------------------------------
+	    AC_CHECK_LIB(bind, inet_ntoa, [LIBS="$LIBS -lbind -lsocket"])
+	    ;;
+	BSD/OS-2.1*|BSD/OS-3*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="shlicc -r"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	BSD/OS-4.*)
+	    SHLIB_CFLAGS="-export-dynamic -fPIC"
+	    SHLIB_LD="cc -shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	dgux*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	HP-UX-*.11.*)
+	    # Use updated header definitions where possible
+	    AC_DEFINE(_XOPEN_SOURCE)          # Use the XOPEN network library
+	    AC_DEFINE(_XOPEN_SOURCE_EXTENDED) # Use the XOPEN network library
+	    LIBS="$LIBS -lxnet"               # Use the XOPEN network library
+
+	    if test "`uname -m`" = "ia64" ; then
+		SHLIB_SUFFIX=".so"
+	    else
+		SHLIB_SUFFIX=".sl"
+	    fi
+	    AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS='${LIBS}'
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="gcc -shared"
+		SHLIB_LD_LIBS='${LIBS}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+
+	    # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc
+	    #CFLAGS="$CFLAGS +DAportable"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		if test "$GCC" = "yes" ; then
+		    hpux_arch=`${CC} -dumpmachine`
+		    case $hpux_arch in
+			hppa64*)
+			    # 64-bit gcc in use.  Fix flags for GNU ld.
+			    do64bit_ok=yes
+			    SHLIB_LD="${CC} -shared"
+			    SHLIB_LD_LIBS='${LIBS}'
+			    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+			    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+			    ;;
+			*)
+			    AC_MSG_WARN([64bit mode not supported with GCC on $system])
+			    ;;
+		    esac
+		else
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS +DD64"
+		    LDFLAGS="$LDFLAGS +DD64"
+		fi
+	    fi
+	    ;;
+	HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
+	    SHLIB_SUFFIX=".sl"
+	    AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS=""
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    ;;
+	IRIX-4.*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_SUFFIX=".a"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a'
+	    ;;
+	IRIX-5.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    ;;
+	IRIX-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mabi=n32"
+		LDFLAGS="$LDFLAGS -mabi=n32"
+	    else
+		case $system in
+		    IRIX-6.3)
+			# Use to build 6.2 compatible binaries on 6.3.
+			CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS"
+			;;
+		    *)
+			CFLAGS="$CFLAGS -n32"
+			;;
+		esac
+		LDFLAGS="$LDFLAGS -n32"
+	    fi
+	    ;;
+	IRIX64-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+
+	    # Check to enable 64-bit flags for compiler/linker
+
+	    if test "$do64bit" = "yes" ; then
+	        if test "$GCC" = "yes" ; then
+	            AC_MSG_WARN([64bit mode not supported by gcc])
+	        else
+	            do64bit_ok=yes
+	            SHLIB_LD="ld -64 -shared -rdata_shared"
+	            CFLAGS="$CFLAGS -64"
+	            LDFLAGS="$LDFLAGS -64"
+	        fi
+	    fi
+	    ;;
+	Linux*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    CFLAGS_OPTIMIZE=-O2
+	    # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings 
+	    # when you inline the string and math operations.  Turn this off to
+	    # get rid of the warnings.
+	    #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
+
+	    if test "$have_dl" = yes; then
+		SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS}'
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS="-ldl"
+		LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    else
+		AC_CHECK_HEADER(dld.h, [
+		    SHLIB_LD="ld -shared"
+		    DL_OBJS="tclLoadDld.o"
+		    DL_LIBS="-ldld"
+		    CC_SEARCH_FLAGS=""
+		    LD_SEARCH_FLAGS=""])
+	    fi
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+	    if test $do64bit = yes; then
+		AC_CACHE_CHECK([if compiler accepts -m64 flag], tcl_cv_cc_m64, [
+		    hold_cflags=$CFLAGS
+		    CFLAGS="$CFLAGS -m64"
+		    AC_TRY_LINK(,, tcl_cv_cc_m64=yes, tcl_cv_cc_m64=no)
+		    CFLAGS=$hold_cflags])
+		if test $tcl_cv_cc_m64 = yes; then
+		    CFLAGS="$CFLAGS -m64"
+		    do64bit_ok=yes
+		fi
+	    fi
+
+	    # The combo of gcc + glibc has a bug related
+	    # to inlining of functions like strtod(). The
+	    # -fno-builtin flag should address this problem
+	    # but it does not work. The -fno-inline flag
+	    # is kind of overkill but it works.
+	    # Disable inlining only when one of the
+	    # files in compat/*.c is being linked in.
+	    if test x"${LIBOBJS}" != x ; then
+	        CFLAGS="$CFLAGS -fno-inline"
+	    fi
+
+	    # XIM peeking works under XFree86.
+	    AC_DEFINE(PEEK_XCLOSEIM)
+
+	    ;;
+	GNU*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    if test "$have_dl" = yes; then
+		SHLIB_LD="${CC} -shared"
+		DL_OBJS=""
+		DL_LIBS="-ldl"
+		LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+		CC_SEARCH_FLAGS=""
+		LD_SEARCH_FLAGS=""
+	    else
+		AC_CHECK_HEADER(dld.h, [
+		    SHLIB_LD="ld -shared"
+		    DL_OBJS=""
+		    DL_LIBS="-ldld"
+		    CC_SEARCH_FLAGS=""
+		    LD_SEARCH_FLAGS=""])
+	    fi
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+	    ;;
+	Lynx*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    CFLAGS_OPTIMIZE=-02
+	    SHLIB_LD="${CC} -shared "
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-mshared -ldl"
+	    LD_FLAGS="-Wl,--export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    ;;
+	MP-RAS-02*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	MP-RAS-*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	NetBSD-*|FreeBSD-[[1-2]].*)
+	    # Not available on all versions:  check for include file.
+	    AC_CHECK_HEADER(dlfcn.h, [
+		# NetBSD/SPARC needs -fPIC, -fpic will not do.
+		SHLIB_CFLAGS="-fPIC"
+		SHLIB_LD="ld -Bshareable -x"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".so"
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+		AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
+		    AC_EGREP_CPP(yes, [
+#ifdef __ELF__
+	yes
+#endif
+		    ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
+		if test $tcl_cv_ld_elf = yes; then
+		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+		else
+		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+		fi
+	    ], [
+		SHLIB_CFLAGS=""
+		SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".a"
+		DL_OBJS="tclLoadAout.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    ])
+
+	    # FreeBSD doesn't handle version numbers with dots.
+
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	OpenBSD-*)
+	    case `arch -s` in
+	    m88k|vax)
+		SHLIB_CFLAGS=""
+		SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".a"
+		DL_OBJS="tclLoadAout.o"
+		DL_LIBS=""
+		LDFLAGS=""
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+		;;
+	    *)
+		# OpenBSD/SPARC[64] needs -fPIC, -fpic will not do.
+		case `machine` in
+		sparc|sparc64)
+		    SHLIB_CFLAGS="-fPIC";;
+	        *)
+		    SHLIB_CFLAGS="-fpic";;
+	        esac
+		SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".so"
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+		AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
+		    AC_EGREP_CPP(yes, [
+#ifdef __ELF__
+	yes
+#endif
+		    ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
+		if test $tcl_cv_ld_elf = yes; then
+		    LDFLAGS=-Wl,-export-dynamic
+		else
+		    LDFLAGS=""
+	        fi
+		;;
+	    esac
+
+	    # OpenBSD doesn't do version numbers with dots.
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	FreeBSD-*)
+	    # FreeBSD 3.* and greater have ELF.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "${TCL_THREADS}" = "1" ; then
+		# The -pthread needs to go in the CFLAGS, not LIBS
+		LIBS=`echo $LIBS | sed s/-pthread//`
+		CFLAGS="$CFLAGS -pthread"
+	    	LDFLAGS="$LDFLAGS -pthread"
+	    fi
+	    case $system in
+	    FreeBSD-3.*)
+	    	# FreeBSD-3 doesn't handle version numbers with dots.
+	    	UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    	SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+	    	TCL_LIB_VERSIONS_OK=nodots
+		;;
+	    esac
+	    ;;
+	Darwin-*)
+	    CFLAGS_OPTIMIZE="-Os"
+	    SHLIB_CFLAGS="-fno-common"
+	    # To avoid discrepancies between what headers configure sees during
+	    # preprocessing tests and compiling tests, move any -isysroot and
+	    # -mmacosx-version-min flags from CFLAGS to CPPFLAGS:
+	    CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \
+		awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
+		if ([$]i~/^(isysroot|mmacosx-version-min)/) print "-"[$]i}'`"
+	    CFLAGS="`echo " ${CFLAGS}" | \
+		awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
+		if (!([$]i~/^(isysroot|mmacosx-version-min)/)) print "-"[$]i}'`"
+	    if test $do64bit = yes; then
+		case `arch` in
+		    ppc)
+			AC_CACHE_CHECK([if compiler accepts -arch ppc64 flag],
+				tcl_cv_cc_arch_ppc64, [
+			    hold_cflags=$CFLAGS
+			    CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+			    AC_TRY_LINK(,, tcl_cv_cc_arch_ppc64=yes,
+				    tcl_cv_cc_arch_ppc64=no)
+			    CFLAGS=$hold_cflags])
+			if test $tcl_cv_cc_arch_ppc64 = yes; then
+			    CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+			    do64bit_ok=yes
+			fi;;
+		    i386)
+			AC_CACHE_CHECK([if compiler accepts -arch x86_64 flag],
+				tcl_cv_cc_arch_x86_64, [
+			    hold_cflags=$CFLAGS
+			    CFLAGS="$CFLAGS -arch x86_64"
+			    AC_TRY_LINK(,, tcl_cv_cc_arch_x86_64=yes,
+				    tcl_cv_cc_arch_x86_64=no)
+			    CFLAGS=$hold_cflags])
+			if test $tcl_cv_cc_arch_x86_64 = yes; then
+			    CFLAGS="$CFLAGS -arch x86_64"
+			    do64bit_ok=yes
+			fi;;
+		    *)
+			AC_MSG_WARN([Don't know how enable 64-bit on architecture `arch`]);;
+		esac
+	    else
+		# Check for combined 32-bit and 64-bit fat build
+		echo "$CFLAGS " | grep -E -q -- '-arch (ppc64|x86_64) ' && \
+		    echo "$CFLAGS " | grep -E -q -- '-arch (ppc|i386) ' && \
+		    fat_32_64=yes
+	    fi
+	    SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}'
+	    AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
+		AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no)
+		LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_single_module = yes; then
+		SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
+	    fi
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".dylib"
+	    DL_OBJS="tclLoadDyld.o"
+	    DL_LIBS=""
+	    # Don't use -prebind when building for Mac OS X 10.4 or later only:
+	    test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\\.' '{print int([$]2)}'`" -lt 4 -a \
+		"`echo "${CPPFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int([$]2)}'`" -lt 4 && \
+		LDFLAGS="$LDFLAGS -prebind"
+	    LDFLAGS="$LDFLAGS -headerpad_max_install_names"
+	    AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+		AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes, tcl_cv_ld_search_paths_first=no)
+		LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_search_paths_first = yes; then
+		LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
+	    PLAT_OBJS=\$\(MAC\_OSX_OBJS\)
+	    PLAT_SRCS=\$\(MAC\_OSX_SRCS\)
+	    AC_MSG_CHECKING([whether to use CoreFoundation])
+	    AC_ARG_ENABLE(corefoundation, [  --enable-corefoundation use CoreFoundation API [--enable-corefoundation]],
+		[tcl_corefoundation=$enableval], [tcl_corefoundation=yes])
+	    AC_MSG_RESULT([$tcl_corefoundation])
+	    if test $tcl_corefoundation = yes; then
+		AC_CACHE_CHECK([for CoreFoundation.framework], tcl_cv_lib_corefoundation, [
+		    hold_libs=$LIBS
+		    if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
+			# On Tiger there is no 64-bit CF, so remove 64-bit archs
+			# from CFLAGS et al. while testing for presence of CF.
+			# 64-bit CF is disabled in tclUnixPort.h if necessary.
+			eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc64 / /g" -e "s/-arch x86_64 / /g"`"'
+		    done; fi
+		    LIBS="$LIBS -framework CoreFoundation"
+		    AC_TRY_LINK([#include <CoreFoundation/CoreFoundation.h>], 
+			[CFBundleRef b = CFBundleGetMainBundle();], 
+			tcl_cv_lib_corefoundation=yes, tcl_cv_lib_corefoundation=no)
+		    if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
+			eval $v'="$hold_'$v'"'
+		    done; fi; LIBS=$hold_libs])
+		if test $tcl_cv_lib_corefoundation = yes; then
+		    LIBS="$LIBS -framework CoreFoundation"
+		    AC_DEFINE(HAVE_COREFOUNDATION)
+		else
+		    tcl_corefoundation=no
+		fi
+		if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then
+		    AC_CACHE_CHECK([for 64-bit CoreFoundation], tcl_cv_lib_corefoundation_64, [
+			for v in CFLAGS CPPFLAGS LDFLAGS; do
+			    eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"'
+			done
+			AC_TRY_LINK([#include <CoreFoundation/CoreFoundation.h>], 
+			    [CFBundleRef b = CFBundleGetMainBundle();], 
+			    tcl_cv_lib_corefoundation_64=yes, tcl_cv_lib_corefoundation_64=no)
+			for v in CFLAGS CPPFLAGS LDFLAGS; do
+			    eval $v'="$hold_'$v'"'
+			done])
+		    if test $tcl_cv_lib_corefoundation_64 = no; then
+			AC_DEFINE(NO_COREFOUNDATION_64)
+		    fi
+		fi
+	    fi
+	    AC_DEFINE(MAC_OSX_TCL)
+	    ;;
+	NEXTSTEP-*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="cc -nostdlib -r"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadNext.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OS/390-*)
+	    CFLAGS_OPTIMIZE=""		# Optimizer is buggy
+	    AC_DEFINE(_OE_SOCKETS)	# needed in sys/socket.h
+	    ;;      
+	OSF1-1.0|OSF1-1.1|OSF1-1.2)
+	    # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1
+	    SHLIB_CFLAGS=""
+	    # Hack: make package name same as library name
+	    SHLIB_LD='ld -R -export $@:'
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadOSF.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-1.*)
+	    # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
+	    SHLIB_CFLAGS="-fPIC"
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD="ld -shared"
+	    else
+	        SHLIB_LD="ld -non_shared"
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-V*)
+	    # Digital OSF/1
+	    SHLIB_CFLAGS=""
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD='ld -shared -expect_unresolved "*"'
+	    else
+	        SHLIB_LD='ld -non_shared -expect_unresolved "*"'
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mieee"
+            else
+		CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"
+	    fi
+	    # see pthread_intro(3) for pthread support on osf1, k.furukawa
+	    if test "${TCL_THREADS}" = "1" ; then
+		CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
+		CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
+		LIBS=`echo $LIBS | sed s/-lpthreads//`
+		if test "$GCC" = "yes" ; then
+		    LIBS="$LIBS -lpthread -lmach -lexc"
+		else
+		    CFLAGS="$CFLAGS -pthread"
+		    LDFLAGS="$LDFLAGS -pthread"
+		fi
+	    fi
+
+	    ;;
+	QNX-6*)
+	    # QNX RTP
+	    # This may work for all QNX, but it was only reported for v6.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    # dlopen is in -lc on QNX
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	RISCos-*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".a"
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    ;;
+	SCO_SV-3.2*)
+	    # Note, dlopen is available only on SCO 3.2.5 and greater. However,
+	    # this test works, since "uname -s" was non-standard in 3.2.4 and
+	    # below.
+	    if test "$GCC" = "yes" ; then
+	    	SHLIB_CFLAGS="-fPIC -melf"
+	    	LDFLAGS="$LDFLAGS -melf -Wl,-Bexport"
+	    else
+	    	SHLIB_CFLAGS="-Kpic -belf"
+	    	LDFLAGS="$LDFLAGS -belf -Wl,-Bexport"
+	    fi
+	    SHLIB_LD="ld -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SINIX*5.4*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SunOS-4*)
+	    SHLIB_CFLAGS="-PIC"
+	    SHLIB_LD="ld"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+
+	    # SunOS can't handle version numbers with dots in them in library
+	    # specs, like -ltcl7.5, so use -ltcl75 instead.  Also, it
+	    # requires an extra version number at the end of .so file names.
+	    # So, the library has to have a name like libtcl75.so.1.0
+
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	SunOS-5.[[0-6]])
+	    # Careful to not let 5.10+ fall into this case
+
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+	    AC_DEFINE(_REENTRANT)
+	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    else
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+	    ;;
+	SunOS-5*)
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+	    AC_DEFINE(_REENTRANT)
+	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		arch=`isainfo`
+		if test "$arch" = "sparcv9 sparc" ; then
+			if test "$GCC" = "yes" ; then
+			    if test "`gcc -dumpversion | awk -F. '{print [$]1}'`" -lt "3" ; then
+				AC_MSG_WARN([64bit mode not supported with GCC < 3.2 on $system])
+			    else
+				do64bit_ok=yes
+				CFLAGS="$CFLAGS -m64 -mcpu=v9"
+				LDFLAGS="$LDFLAGS -m64 -mcpu=v9"
+				SHLIB_CFLAGS="-fPIC"
+			    fi
+			else
+			    do64bit_ok=yes
+			    if test "$do64bitVIS" = "yes" ; then
+				CFLAGS="$CFLAGS -xarch=v9a"
+			    	LDFLAGS="$LDFLAGS -xarch=v9a"
+			    else
+				CFLAGS="$CFLAGS -xarch=v9"
+			    	LDFLAGS="$LDFLAGS -xarch=v9"
+			    fi
+			    # Solaris 64 uses this as well
+			    #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64"
+			fi
+		elif test "$arch" = "amd64 i386" ; then
+		    if test "$GCC" = "yes" ; then
+			AC_MSG_WARN([64bit mode not supported with GCC on $system])
+		    else
+			do64bit_ok=yes
+			CFLAGS="$CFLAGS -xarch=amd64"
+			LDFLAGS="$LDFLAGS -xarch=amd64"
+		    fi
+		else
+		    AC_MSG_WARN([64bit mode not supported for $arch])
+		fi
+	    fi
+	    
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		if test "$do64bit_ok" = "yes" ; then
+		    # We need to specify -static-libgcc or we need to
+		    # add the path to the sparv9 libgcc.
+		    SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc"
+		    # for finding sparcv9 libgcc, get the regular libgcc
+		    # path, remove so name and append 'sparcv9'
+		    #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..."
+		    #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir"
+		fi
+	    else
+		case $system in
+		    SunOS-5.[[1-9]][[0-9]]*)
+			SHLIB_LD='${CC} -G -z text ${LDFLAGS}';;
+		    *)
+			SHLIB_LD="/usr/ccs/bin/ld -G -z text";;
+		esac
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    fi
+	    ;;
+	ULTRIX-4.*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_SUFFIX=".a"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    if test "$GCC" != "yes" ; then
+		CFLAGS="$CFLAGS -DHAVE_TZSET -std1"
+	    fi
+	    ;;
+	UNIX_SV* | UnixWare-5*)
+	    SHLIB_CFLAGS="-KPIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
+	    # that don't grok the -Bexport option.  Test that it does.
+	    AC_CACHE_CHECK([for ld accepts -Bexport flag], tcl_cv_ld_Bexport, [
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+		AC_TRY_LINK(, [int i;], tcl_cv_ld_Bexport=yes, tcl_cv_ld_Bexport=no)
+	        LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_Bexport = yes; then
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+    esac
+
+    if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then
+	AC_MSG_WARN([64bit support being disabled -- don't know magic for this platform])
+    fi
+
+dnl # Add any CPPFLAGS set in the environment to our CFLAGS, but delay doing so
+dnl # until the end of configure, as configure's compile and link tests use
+dnl # both CPPFLAGS and CFLAGS (unlike our compile and link) but configure's
+dnl # preprocessing tests use only CPPFLAGS.
+    SC_CONFIG_COMMANDS_PRE([CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS=""])
+
+    # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic
+    # Loading for Tcl -- What Became of It?".  Proc. 2nd Tcl/Tk Workshop,
+    # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need
+    # to determine which of several header files defines the a.out file
+    # format (a.out.h, sys/exec.h, or sys/exec_aout.h).  At present, we
+    # support only a file format that is more or less version-7-compatible. 
+    # In particular,
+    #	- a.out files must begin with `struct exec'.
+    #	- the N_TXTOFF on the `struct exec' must compute the seek address
+    #	  of the text segment
+    #	- The `struct exec' must contain a_magic, a_text, a_data, a_bss
+    #	  and a_entry fields.
+    # The following compilation should succeed if and only if either sys/exec.h
+    # or a.out.h is usable for the purpose.
+    #
+    # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the
+    # `struct exec' includes a second header that contains information that
+    # duplicates the v7 fields that are needed.
+
+    if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
+	AC_CACHE_CHECK([sys/exec.h], tcl_cv_sysexec_h, [
+	AC_TRY_COMPILE([#include <sys/exec.h>],[
+	    struct exec foo;
+	    unsigned long seek;
+	    int flag;
+#if defined(__mips) || defined(mips)
+	    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+	    seek = N_TXTOFF (foo);
+#endif
+	    flag = (foo.a_magic == OMAGIC);
+	    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+    ], tcl_cv_sysexec_h=usable, tcl_cv_sysexec_h=unusable)])
+	if test $tcl_cv_sysexec_h = usable; then
+	    AC_DEFINE(USE_SYS_EXEC_H)
+	else
+	    AC_CACHE_CHECK([a.out.h], tcl_cv_aout_h, [
+	    AC_TRY_COMPILE([#include <a.out.h>],[
+		struct exec foo;
+		unsigned long seek;
+		int flag;
+#if defined(__mips) || defined(mips)
+		seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+		seek = N_TXTOFF (foo);
+#endif
+		flag = (foo.a_magic == OMAGIC);
+		return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+	    ], tcl_cv_aout_h=usable, tcl_cv_aout_h=unusable)])
+	    if test $tcl_cv_aout_h = usable; then
+		AC_DEFINE(USE_A_OUT_H)
+	    else
+		AC_CACHE_CHECK([sys/exec_aout.h], tcl_cv_sysexecaout_h, [
+		AC_TRY_COMPILE([#include <sys/exec_aout.h>],[
+		    struct exec foo;
+		    unsigned long seek;
+		    int flag;
+#if defined(__mips) || defined(mips)
+		    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+		    seek = N_TXTOFF (foo);
+#endif
+		    flag = (foo.a_midmag == OMAGIC);
+		    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+		], tcl_cv_sysexecaout_h=usable, tcl_cv_sysexecaout_h=unusable)])
+		if test $tcl_cv_sysexecaout_h = usable; then
+		    AC_DEFINE(USE_SYS_EXEC_AOUT_H)
+		else
+		    DL_OBJS=""
+		fi
+	    fi
+	fi
+    fi
+
+    # Step 5: disable dynamic loading if requested via a command-line switch.
+
+    AC_ARG_ENABLE(load, [  --disable-load          disallow dynamic loading and "load" command],
+	[tcl_ok=$enableval], [tcl_ok=yes])
+    if test "$tcl_ok" = "no"; then
+	DL_OBJS=""
+    fi
+
+    if test "x$DL_OBJS" != "x" ; then
+	BUILD_DLTEST="\$(DLTEST_TARGETS)"
+    else
+	echo "Can't figure out how to do dynamic loading or shared libraries"
+	echo "on this system."
+	SHLIB_CFLAGS=""
+	SHLIB_LD=""
+	SHLIB_SUFFIX=""
+	DL_OBJS="tclLoadNone.o"
+	DL_LIBS=""
+	LDFLAGS="$LDFLAGS_ORIG"
+	CC_SEARCH_FLAGS=""
+	LD_SEARCH_FLAGS=""
+	BUILD_DLTEST=""
+    fi
+
+    # If we're running gcc, then change the C flags for compiling shared
+    # libraries to the right flags for gcc, instead of those for the
+    # standard manufacturer compiler.
+
+    if test "$DL_OBJS" != "tclLoadNone.o" ; then
+	if test "$GCC" = "yes" ; then
+	    case $system in
+		AIX-*)
+		    ;;
+		BSD/OS*)
+		    ;;
+		IRIX*)
+		    ;;
+		NetBSD-*|FreeBSD-*|OpenBSD-*)
+		    ;;
+		Darwin-*)
+		    ;;
+		RISCos-*)
+		    ;;
+		SCO_SV-3.2*)
+		    ;;
+		ULTRIX-4.*)
+		    ;;
+		*)
+		    SHLIB_CFLAGS="-fPIC"
+		    ;;
+	    esac
+	fi
+    fi
+
+    if test "$SHARED_LIB_SUFFIX" = "" ; then
+	SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}${SHLIB_SUFFIX}'
+    fi
+    if test "$UNSHARED_LIB_SUFFIX" = "" ; then
+	UNSHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a'
+    fi
+
+    if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then
+        LIB_SUFFIX=${SHARED_LIB_SUFFIX}
+        MAKE_LIB='${SHLIB_LD} -o [$]@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}'
+        INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
+    else
+        LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}
+
+        if test "$RANLIB" = "" ; then
+            MAKE_LIB='$(STLIB_LD) [$]@ ${OBJS}'
+            INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
+        else
+            MAKE_LIB='${STLIB_LD} [$]@ ${OBJS} ; ${RANLIB} [$]@'
+            INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(LIB_FILE))'
+        fi
+
+dnl        Not at all clear what this was doing in Tcl's configure.in
+dnl        or why it was needed was needed. In any event, this sort of
+dnl        things needs to be done in the big loop above.
+dnl        REMOVE THIS BLOCK LATER! (mdejong)
+dnl        case $system in
+dnl            BSD/OS*)
+dnl                ;;
+dnl            AIX-[[1-4]].*)
+dnl                ;;
+dnl            *)
+dnl                SHLIB_LD_LIBS=""
+dnl                ;;
+dnl        esac
+    fi
+
+
+    # Stub lib does not depend on shared/static configuration
+    if test "$RANLIB" = "" ; then
+        MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS}'
+        INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)'
+    else
+        MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS} ; ${RANLIB} [$]@'
+        INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(STUB_LIB_FILE))'
+    fi
+
+
+    AC_SUBST(DL_LIBS)
+
+    AC_SUBST(DL_OBJS)
+    AC_SUBST(PLAT_OBJS)
+    AC_SUBST(PLAT_SRCS)
+    AC_SUBST(CFLAGS)
+    AC_SUBST(CFLAGS_DEBUG)
+    AC_SUBST(CFLAGS_OPTIMIZE)
+    AC_SUBST(CFLAGS_WARNING)
+
+    AC_SUBST(LDFLAGS)
+    AC_SUBST(LDFLAGS_DEBUG)
+    AC_SUBST(LDFLAGS_OPTIMIZE)
+    AC_SUBST(CC_SEARCH_FLAGS)
+    AC_SUBST(LD_SEARCH_FLAGS)
+
+    AC_SUBST(STLIB_LD)
+    AC_SUBST(SHLIB_LD)
+    AC_SUBST(TCL_SHLIB_LD_EXTRAS)
+    AC_SUBST(TK_SHLIB_LD_EXTRAS)
+    AC_SUBST(SHLIB_LD_LIBS)
+    AC_SUBST(SHLIB_CFLAGS)
+    AC_SUBST(SHLIB_SUFFIX)
+
+    AC_SUBST(MAKE_LIB)
+    AC_SUBST(MAKE_STUB_LIB)
+    AC_SUBST(INSTALL_LIB)
+    AC_SUBST(INSTALL_STUB_LIB)
+    AC_SUBST(RANLIB)
+])
+
+#--------------------------------------------------------------------
+# SC_SERIAL_PORT
+#
+#	Determine which interface to use to talk to the serial port.
+#	Note that #include lines must begin in leftmost column for
+#	some compilers to recognize them as preprocessor directives,
+#	and some build environments have stdin not pointing at a
+#	pseudo-terminal (usually /dev/null instead.)
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines only one of the following vars:
+#		HAVE_SYS_MODEM_H
+#		USE_TERMIOS
+#		USE_TERMIO
+#		USE_SGTTY
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_SERIAL_PORT], [
+    AC_CHECK_HEADERS(sys/modem.h)
+    AC_CACHE_CHECK([termios vs. termio vs. sgtty], tcl_cv_api_serial, [
+    AC_TRY_RUN([
+#include <termios.h>
+
+int main() {
+    struct termios t;
+    if (tcgetattr(0, &t) == 0) {
+	cfsetospeed(&t, 0);
+	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <termio.h>
+
+int main() {
+    struct termio t;
+    if (ioctl(0, TCGETA, &t) == 0) {
+	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <sgtty.h>
+
+int main() {
+    struct sgttyb t;
+    if (ioctl(0, TIOCGETP, &t) == 0) {
+	t.sg_ospeed = 0;
+	t.sg_flags |= ODDP | EVENP | RAW;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <termios.h>
+#include <errno.h>
+
+int main() {
+    struct termios t;
+    if (tcgetattr(0, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	cfsetospeed(&t, 0);
+	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no; then
+	AC_TRY_RUN([
+#include <termio.h>
+#include <errno.h>
+
+int main() {
+    struct termio t;
+    if (ioctl(0, TCGETA, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+    }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no; then
+	AC_TRY_RUN([
+#include <sgtty.h>
+#include <errno.h>
+
+int main() {
+    struct sgttyb t;
+    if (ioctl(0, TIOCGETP, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	t.sg_ospeed = 0;
+	t.sg_flags |= ODDP | EVENP | RAW;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
+    fi])
+    case $tcl_cv_api_serial in
+	termios) AC_DEFINE(USE_TERMIOS);;
+	termio)  AC_DEFINE(USE_TERMIO);;
+	sgtty)   AC_DEFINE(USE_SGTTY);;
+    esac
+])
+
+#--------------------------------------------------------------------
+# SC_MISSING_POSIX_HEADERS
+#
+#	Supply substitutes for missing POSIX header files.  Special
+#	notes:
+#	    - stdlib.h doesn't define strtol, strtoul, or
+#	      strtod insome versions of SunOS
+#	    - some versions of string.h don't declare procedures such
+#	      as strstr
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		NO_DIRENT_H
+#		NO_ERRNO_H
+#		NO_VALUES_H
+#		HAVE_LIMITS_H or NO_LIMITS_H
+#		NO_STDLIB_H
+#		NO_STRING_H
+#		NO_SYS_WAIT_H
+#		NO_DLFCN_H
+#		HAVE_UNISTD_H
+#		HAVE_SYS_PARAM_H
+#
+#		HAVE_STRING_H ?
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_MISSING_POSIX_HEADERS], [
+    AC_CACHE_CHECK([dirent.h], tcl_cv_dirent_h, [
+    AC_TRY_LINK([#include <sys/types.h>
+#include <dirent.h>], [
+#ifndef _POSIX_SOURCE
+#   ifdef __Lynx__
+	/*
+	 * Generate compilation error to make the test fail:  Lynx headers
+	 * are only valid if really in the POSIX environment.
+	 */
+
+	missing_procedure();
+#   endif
+#endif
+DIR *d;
+struct dirent *entryPtr;
+char *p;
+d = opendir("foobar");
+entryPtr = readdir(d);
+p = entryPtr->d_name;
+closedir(d);
+], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no)])
+
+    if test $tcl_cv_dirent_h = no; then
+	AC_DEFINE(NO_DIRENT_H)
+    fi
+
+    AC_CHECK_HEADER(errno.h, , [AC_DEFINE(NO_ERRNO_H)])
+    AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H)])
+    AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H)])
+    AC_CHECK_HEADER(limits.h,
+	[AC_DEFINE(HAVE_LIMITS_H)], [AC_DEFINE(NO_LIMITS_H)])
+    AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0)
+    AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strtoul, stdlib.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strtod, stdlib.h, , tcl_ok=0)
+    if test $tcl_ok = 0; then
+	AC_DEFINE(NO_STDLIB_H)
+    fi
+    AC_CHECK_HEADER(string.h, tcl_ok=1, tcl_ok=0)
+    AC_EGREP_HEADER(strstr, string.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strerror, string.h, , tcl_ok=0)
+
+    # See also memmove check below for a place where NO_STRING_H can be
+    # set and why.
+
+    if test $tcl_ok = 0; then
+	AC_DEFINE(NO_STRING_H)
+    fi
+
+    AC_CHECK_HEADER(sys/wait.h, , [AC_DEFINE(NO_SYS_WAIT_H)])
+    AC_CHECK_HEADER(dlfcn.h, , [AC_DEFINE(NO_DLFCN_H)])
+
+    # OS/390 lacks sys/param.h (and doesn't need it, by chance).
+    AC_HAVE_HEADERS(unistd.h sys/param.h)
+])
+
+#--------------------------------------------------------------------
+# SC_PATH_X
+#
+#	Locate the X11 header files and the X11 library archive.  Try
+#	the ac_path_x macro first, but if it doesn't find the X stuff
+#	(e.g. because there's no xmkmf program) then check through
+#	a list of possible directories.  Under some conditions the
+#	autoconf macro will return an include directory that contains
+#	no include files, so double-check its result just to be safe.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Sets the the following vars:
+#		XINCLUDES
+#		XLIBSW
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_PATH_X], [
+    AC_PATH_X
+    not_really_there=""
+    if test "$no_x" = ""; then
+	if test "$x_includes" = ""; then
+	    AC_TRY_CPP([#include <X11/XIntrinsic.h>], , not_really_there="yes")
+	else
+	    if test ! -r $x_includes/X11/Intrinsic.h; then
+		not_really_there="yes"
+	    fi
+	fi
+    fi
+    if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
+	AC_MSG_CHECKING([for X11 header files])
+	found_xincludes="no"
+	AC_TRY_CPP([#include <X11/Intrinsic.h>], found_xincludes="yes", found_xincludes="no")
+	if test "$found_xincludes" = "no"; then
+	    dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include"
+	    for i in $dirs ; do
+		if test -r $i/X11/Intrinsic.h; then
+		    AC_MSG_RESULT([$i])
+		    XINCLUDES=" -I$i"
+		    found_xincludes="yes"
+		    break
+		fi
+	    done
+	fi
+    else
+	if test "$x_includes" != ""; then
+	    XINCLUDES="-I$x_includes"
+	    found_xincludes="yes"
+	fi
+    fi
+    if test found_xincludes = "no"; then
+	AC_MSG_RESULT([couldn't find any!])
+    fi
+
+    if test "$no_x" = yes; then
+	AC_MSG_CHECKING([for X11 libraries])
+	XLIBSW=nope
+	dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
+	for i in $dirs ; do
+	    if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then
+		AC_MSG_RESULT([$i])
+		XLIBSW="-L$i -lX11"
+		x_libraries="$i"
+		break
+	    fi
+	done
+    else
+	if test "$x_libraries" = ""; then
+	    XLIBSW=-lX11
+	else
+	    XLIBSW="-L$x_libraries -lX11"
+	fi
+    fi
+    if test "$XLIBSW" = nope ; then
+	AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow)
+    fi
+    if test "$XLIBSW" = nope ; then
+	AC_MSG_RESULT([could not find any!  Using -lX11.])
+	XLIBSW=-lX11
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_BLOCKING_STYLE
+#
+#	The statements below check for systems where POSIX-style
+#	non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. 
+#	On these systems (mostly older ones), use the old BSD-style
+#	FIONBIO approach instead.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		HAVE_SYS_IOCTL_H
+#		HAVE_SYS_FILIO_H
+#		USE_FIONBIO
+#		O_NONBLOCK
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_BLOCKING_STYLE], [
+    AC_CHECK_HEADERS(sys/ioctl.h)
+    AC_CHECK_HEADERS(sys/filio.h)
+    SC_CONFIG_SYSTEM
+    AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O])
+    case $system in
+	# There used to be code here to use FIONBIO under AIX.  However, it
+	# was reported that FIONBIO doesn't work under AIX 3.2.5.  Since
+	# using O_NONBLOCK seems fine under AIX 4.*, I removed the FIONBIO
+	# code (JO, 5/31/97).
+
+	OSF*)
+	    AC_DEFINE(USE_FIONBIO)
+	    AC_MSG_RESULT([FIONBIO])
+	    ;;
+	SunOS-4*)
+	    AC_DEFINE(USE_FIONBIO)
+	    AC_MSG_RESULT([FIONBIO])
+	    ;;
+	ULTRIX-4.*)
+	    AC_DEFINE(USE_FIONBIO)
+	    AC_MSG_RESULT([FIONBIO])
+	    ;;
+	*)
+	    AC_MSG_RESULT([O_NONBLOCK])
+	    ;;
+    esac
+])
+
+#--------------------------------------------------------------------
+# SC_TIME_HANLDER
+#
+#	Checks how the system deals with time.h, what time structures
+#	are used on the system, and what fields the structures have.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		USE_DELTA_FOR_TZ
+#		HAVE_TM_GMTOFF
+#		HAVE_TM_TZADJ
+#		HAVE_TIMEZONE_VAR
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TIME_HANDLER], [
+    AC_CHECK_HEADERS(sys/time.h)
+    AC_HEADER_TIME
+    AC_STRUCT_TIMEZONE
+
+    AC_CHECK_FUNCS(gmtime_r localtime_r)
+
+    AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, [
+	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;],
+	    tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no)])
+    if test $tcl_cv_member_tm_tzadj = yes ; then
+	AC_DEFINE(HAVE_TM_TZADJ)
+    fi
+
+    AC_CACHE_CHECK([tm_gmtoff in struct tm], tcl_cv_member_tm_gmtoff, [
+	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_gmtoff;],
+	    tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no)])
+    if test $tcl_cv_member_tm_gmtoff = yes ; then
+	AC_DEFINE(HAVE_TM_GMTOFF)
+    fi
+
+    #
+    # Its important to include time.h in this check, as some systems
+    # (like convex) have timezone functions, etc.
+    #
+    AC_CACHE_CHECK([long timezone variable], tcl_cv_timezone_long, [
+	AC_TRY_COMPILE([#include <time.h>],
+	    [extern long timezone;
+	    timezone += 1;
+	    exit (0);],
+	    tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no)])
+    if test $tcl_cv_timezone_long = yes ; then
+	AC_DEFINE(HAVE_TIMEZONE_VAR)
+    else
+	#
+	# On some systems (eg IRIX 6.2), timezone is a time_t and not a long.
+	#
+	AC_CACHE_CHECK([time_t timezone variable], tcl_cv_timezone_time, [
+	    AC_TRY_COMPILE([#include <time.h>],
+		[extern time_t timezone;
+		timezone += 1;
+		exit (0);],
+		tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no)])
+	if test $tcl_cv_timezone_time = yes ; then
+	    AC_DEFINE(HAVE_TIMEZONE_VAR)
+	fi
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_BUGGY_STRTOD
+#
+#	Under Solaris 2.4, strtod returns the wrong value for the
+#	terminating character under some conditions.  Check for this
+#	and if the problem exists use a substitute procedure
+#	"fixstrtod" (provided by Tcl) that corrects the error.
+#	Also, on Compaq's Tru64 Unix 5.0,
+#	strtod(" ") returns 0.0 instead of a failure to convert.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Might defines some of the following vars:
+#		strtod (=fixstrtod)
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_BUGGY_STRTOD], [
+    AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0)
+    if test "$tcl_strtod" = 1; then
+	AC_CACHE_CHECK([for Solaris2.4/Tru64 strtod bugs], tcl_cv_strtod_buggy,[
+	    AC_TRY_RUN([
+		extern double strtod();
+		int main() {
+		    char *infString="Inf", *nanString="NaN", *spaceString=" ";
+		    char *term;
+		    double value;
+		    value = strtod(infString, &term);
+		    if ((term != infString) && (term[-1] == 0)) {
+			exit(1);
+		    }
+		    value = strtod(nanString, &term);
+		    if ((term != nanString) && (term[-1] == 0)) {
+			exit(1);
+		    }
+		    value = strtod(spaceString, &term);
+		    if (term == (spaceString+1)) {
+			exit(1);
+		    }
+		    exit(0);
+		}], tcl_cv_strtod_buggy=ok, tcl_cv_strtod_buggy=buggy,
+		    tcl_cv_strtod_buggy=buggy)])
+	if test "$tcl_cv_strtod_buggy" = buggy; then
+	    LIBOBJS="$LIBOBJS fixstrtod.o"
+	    AC_DEFINE(strtod, fixstrtod)
+	fi
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_LINK_LIBS
+#
+#	Search for the libraries needed to link the Tcl shell.
+#	Things like the math library (-lm) and socket stuff (-lsocket vs.
+#	-lnsl) are dealt with here.
+#
+# Arguments:
+#	Requires the following vars to be set in the Makefile:
+#		DL_LIBS
+#		LIBS
+#		MATH_LIBS
+#	
+# Results:
+#
+#	Subst's the following var:
+#		TCL_LIBS
+#		MATH_LIBS
+#
+#	Might append to the following vars:
+#		LIBS
+#
+#	Might define the following vars:
+#		HAVE_NET_ERRNO_H
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_LINK_LIBS], [
+    #--------------------------------------------------------------------
+    # On a few very rare systems, all of the libm.a stuff is
+    # already in libc.a.  Set compiler flags accordingly.
+    # Also, Linux requires the "ieee" library for math to work
+    # right (and it must appear before "-lm").
+    #--------------------------------------------------------------------
+
+    AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm")
+    AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"])
+
+    #--------------------------------------------------------------------
+    # Interactive UNIX requires -linet instead of -lsocket, plus it
+    # needs net/errno.h to define the socket-related error codes.
+    #--------------------------------------------------------------------
+
+    AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"])
+    AC_CHECK_HEADER(net/errno.h, [AC_DEFINE(HAVE_NET_ERRNO_H)])
+
+    #--------------------------------------------------------------------
+    #	Check for the existence of the -lsocket and -lnsl libraries.
+    #	The order here is important, so that they end up in the right
+    #	order in the command line generated by make.  Here are some
+    #	special considerations:
+    #	1. Use "connect" and "accept" to check for -lsocket, and
+    #	   "gethostbyname" to check for -lnsl.
+    #	2. Use each function name only once:  can't redo a check because
+    #	   autoconf caches the results of the last check and won't redo it.
+    #	3. Use -lnsl and -lsocket only if they supply procedures that
+    #	   aren't already present in the normal libraries.  This is because
+    #	   IRIX 5.2 has libraries, but they aren't needed and they're
+    #	   bogus:  they goof up name resolution if used.
+    #	4. On some SVR4 systems, can't use -lsocket without -lnsl too.
+    #	   To get around this problem, check for both libraries together
+    #	   if -lsocket doesn't work by itself.
+    #--------------------------------------------------------------------
+
+    tcl_checkBoth=0
+    AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)
+    if test "$tcl_checkSocket" = 1; then
+	AC_CHECK_FUNC(setsockopt, , [AC_CHECK_LIB(socket, setsockopt,
+	    LIBS="$LIBS -lsocket", tcl_checkBoth=1)])
+    fi
+    if test "$tcl_checkBoth" = 1; then
+	tk_oldLibs=$LIBS
+	LIBS="$LIBS -lsocket -lnsl"
+	AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs])
+    fi
+    AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname,
+	    [LIBS="$LIBS -lnsl"])])
+    
+    # Don't perform the eval of the libraries here because DL_LIBS
+    # won't be set until we call SC_CONFIG_CFLAGS
+
+    TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
+    AC_SUBST(TCL_LIBS)
+    AC_SUBST(MATH_LIBS)
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_EARLY_FLAGS
+#
+#	Check for what flags are needed to be passed so the correct OS
+#	features are available.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		_ISOC99_SOURCE
+#		_LARGEFILE64_SOURCE
+#		_LARGEFILE_SOURCE64
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_EARLY_FLAG],[
+    AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]),
+	AC_TRY_COMPILE([$2], $3, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no,
+	    AC_TRY_COMPILE([[#define ]$1[ 1
+]$2], $3,
+		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=yes,
+		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=no)))
+    if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then
+	AC_DEFINE($1)
+	tcl_flags="$tcl_flags $1"
+    fi
+])
+
+AC_DEFUN([SC_TCL_EARLY_FLAGS],[
+    AC_MSG_CHECKING([for required early compiler flags])
+    tcl_flags=""
+    SC_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include <stdlib.h>],
+	[char *p = (char *)strtoll; char *q = (char *)strtoull;])
+    SC_TCL_EARLY_FLAG(_LARGEFILE64_SOURCE,[#include <sys/stat.h>],
+	[struct stat64 buf; int i = stat64("/", &buf);])
+    SC_TCL_EARLY_FLAG(_LARGEFILE_SOURCE64,[#include <sys/stat.h>],
+	[char *p = (char *)open64;])
+    if test "x${tcl_flags}" = "x" ; then
+	AC_MSG_RESULT([none])
+    else
+	AC_MSG_RESULT([${tcl_flags}])
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_64BIT_FLAGS
+#
+#	Check for what is defined in the way of 64-bit features.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		TCL_WIDE_INT_IS_LONG
+#		TCL_WIDE_INT_TYPE
+#		HAVE_STRUCT_DIRENT64
+#		HAVE_STRUCT_STAT64
+#		HAVE_TYPE_OFF64_T
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_64BIT_FLAGS], [
+    AC_MSG_CHECKING([for 64-bit integer type])
+    AC_CACHE_VAL(tcl_cv_type_64bit,[
+	tcl_cv_type_64bit=none
+	# See if the compiler knows natively about __int64
+	AC_TRY_COMPILE(,[__int64 value = (__int64) 0;],
+	    tcl_type_64bit=__int64, tcl_type_64bit="long long")
+	# See if we should use long anyway  Note that we substitute in the
+	# type that is our current guess for a 64-bit type inside this check
+	# program, so it should be modified only carefully...
+        AC_TRY_COMPILE(,[switch (0) { 
+            case 1: case (sizeof(]${tcl_type_64bit}[)==sizeof(long)): ; 
+        }],tcl_cv_type_64bit=${tcl_type_64bit})])
+    if test "${tcl_cv_type_64bit}" = none ; then
+	AC_DEFINE(TCL_WIDE_INT_IS_LONG)
+	AC_MSG_RESULT([using long])
+    else
+	AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit})
+	AC_MSG_RESULT([${tcl_cv_type_64bit}])
+
+	# Now check for auxiliary declarations
+	AC_CACHE_CHECK([for struct dirent64], tcl_cv_struct_dirent64,[
+	    AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/dirent.h>],[struct dirent64 p;],
+		tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)])
+	if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_STRUCT_DIRENT64)
+	fi
+
+	AC_CACHE_CHECK([for struct stat64], tcl_cv_struct_stat64,[
+	    AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat64 p;
+],
+		tcl_cv_struct_stat64=yes,tcl_cv_struct_stat64=no)])
+	if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_STRUCT_STAT64)
+	fi
+
+	AC_CHECK_FUNCS(open64 lseek64)
+	AC_MSG_CHECKING([for off64_t])
+	AC_CACHE_VAL(tcl_cv_type_off64_t,[
+	    AC_TRY_COMPILE([#include <sys/types.h>],[off64_t offset;
+],
+		tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)])
+	dnl Define HAVE_TYPE_OFF64_T only when the off64_t type and the
+	dnl functions lseek64 and open64 are defined.
+	if test "x${tcl_cv_type_off64_t}" = "xyes" && \
+	        test "x${ac_cv_func_lseek64}" = "xyes" && \
+	        test "x${ac_cv_func_open64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_TYPE_OFF64_T)
+	    AC_MSG_RESULT([yes])
+	else
+	    AC_MSG_RESULT([no])
+	fi
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETHOSTBYADDR_R
+#
+#	Check if we have MT-safe variant of gethostbyaddr().
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETHOSTBYADDR_R
+#		HAVE_GETHOSTBYADDR_R_7
+#		HAVE_GETHOSTBYADDR_R_8
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETHOSTBYADDR_R], [AC_CHECK_FUNC(gethostbyaddr_r, [
+    AC_CACHE_CHECK([for gethostbyaddr_r with 7 args], tcl_cv_api_gethostbyaddr_r_7, [
+    AC_TRY_COMPILE([
+	#include <netdb.h>
+    ], [
+	char *addr;
+	int length;
+	int type;
+	struct hostent *result;
+	char buffer[2048];
+	int buflen = 2048;
+	int h_errnop;
+
+	(void) gethostbyaddr_r(addr, length, type, result, buffer, buflen,
+			       &h_errnop);
+    ], tcl_cv_api_gethostbyaddr_r_7=yes, tcl_cv_api_gethostbyaddr_r_7=no)])
+    tcl_ok=$tcl_cv_api_gethostbyaddr_r_7
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYADDR_R_7)
+    else
+	AC_CACHE_CHECK([for gethostbyaddr_r with 8 args], tcl_cv_api_gethostbyaddr_r_8, [
+	AC_TRY_COMPILE([
+	    #include <netdb.h>
+	], [
+	    char *addr;
+	    int length;
+	    int type;
+	    struct hostent *result, *resultp;
+	    char buffer[2048];
+	    int buflen = 2048;
+	    int h_errnop;
+
+	    (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen,
+				   &resultp, &h_errnop);
+	], tcl_cv_api_gethostbyaddr_r_8=yes, tcl_cv_api_gethostbyaddr_r_8=no)])
+	tcl_ok=$tcl_cv_api_gethostbyaddr_r_8
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETHOSTBYADDR_R_8)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYADDR_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETHOSTBYNAME_R
+#
+#	Check to see what variant of gethostbyname_r() we have.
+#	Based on David Arnold's example from the comp.programming.threads
+#	FAQ Q213
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETHOSTBYADDR_R
+#		HAVE_GETHOSTBYADDR_R_3
+#		HAVE_GETHOSTBYADDR_R_5
+#		HAVE_GETHOSTBYADDR_R_6
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETHOSTBYNAME_R], [AC_CHECK_FUNC(gethostbyname_r, [
+    AC_CACHE_CHECK([for gethostbyname_r with 6 args], tcl_cv_api_gethostbyname_r_6, [
+    AC_TRY_COMPILE([
+	#include <netdb.h>
+    ], [
+	char *name;
+	struct hostent *he, *res;
+	char buffer[2048];
+	int buflen = 2048;
+	int h_errnop;
+
+	(void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop);
+    ], tcl_cv_api_gethostbyname_r_6=yes, tcl_cv_api_gethostbyname_r_6=no)])
+    tcl_ok=$tcl_cv_api_gethostbyname_r_6
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYNAME_R_6)
+    else
+	AC_CACHE_CHECK([for gethostbyname_r with 5 args], tcl_cv_api_gethostbyname_r_5, [
+	AC_TRY_COMPILE([
+	    #include <netdb.h>
+	], [
+	    char *name;
+	    struct hostent *he;
+	    char buffer[2048];
+	    int buflen = 2048;
+	    int h_errnop;
+
+	    (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop);
+	], tcl_cv_api_gethostbyname_r_5=yes, tcl_cv_api_gethostbyname_r_5=no)])
+	tcl_ok=$tcl_cv_api_gethostbyname_r_5
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETHOSTBYNAME_R_5)
+	else
+	    AC_CACHE_CHECK([for gethostbyname_r with 3 args], tcl_cv_api_gethostbyname_r_3, [
+	    AC_TRY_COMPILE([
+		#include <netdb.h>
+	    ], [
+		char *name;
+		struct hostent *he;
+		struct hostent_data data;
+
+		(void) gethostbyname_r(name, he, &data);
+	    ], tcl_cv_api_gethostbyname_r_3=yes, tcl_cv_api_gethostbyname_r_3=no)])
+	    tcl_ok=$tcl_cv_api_gethostbyname_r_3
+	    if test "$tcl_ok" = yes; then
+		AC_DEFINE(HAVE_GETHOSTBYNAME_R_3)
+	    fi
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYNAME_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETPWUID_R
+#
+#	Check if we have MT-safe variant of getpwuid() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETPWUID_R
+#		HAVE_GETPWUID_R_4
+#		HAVE_GETPWUID_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETPWUID_R], [AC_CHECK_FUNC(getpwuid_r, [
+    AC_CACHE_CHECK([for getpwuid_r with 5 args], tcl_cv_api_getpwuid_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <pwd.h>
+    ], [
+	uid_t uid;
+	struct passwd pw, *pwp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getpwuid_r(uid, &pw, buf, buflen, &pwp);
+    ], tcl_cv_api_getpwuid_r_5=yes, tcl_cv_api_getpwuid_r_5=no)])
+    tcl_ok=$tcl_cv_api_getpwuid_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWUID_R_5)
+    else
+	AC_CACHE_CHECK([for getpwuid_r with 4 args], tcl_cv_api_getpwuid_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <pwd.h>
+	], [
+	    uid_t uid;
+	    struct passwd pw;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getpwnam_r(uid, &pw, buf, buflen);
+	], tcl_cv_api_getpwuid_r_4=yes, tcl_cv_api_getpwuid_r_4=no)])
+	tcl_ok=$tcl_cv_api_getpwuid_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETPWUID_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWUID_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETPWNAM_R
+#
+#	Check if we have MT-safe variant of getpwnam() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETPWNAM_R
+#		HAVE_GETPWNAM_R_4
+#		HAVE_GETPWNAM_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETPWNAM_R], [AC_CHECK_FUNC(getpwnam_r, [
+    AC_CACHE_CHECK([for getpwnam_r with 5 args], tcl_cv_api_getpwnam_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <pwd.h>
+    ], [
+	char *name;
+	struct passwd pw, *pwp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getpwnam_r(name, &pw, buf, buflen, &pwp);
+    ], tcl_cv_api_getpwnam_r_5=yes, tcl_cv_api_getpwnam_r_5=no)])
+    tcl_ok=$tcl_cv_api_getpwnam_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWNAM_R_5)
+    else
+	AC_CACHE_CHECK([for getpwnam_r with 4 args], tcl_cv_api_getpwnam_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <pwd.h>
+	], [
+	    char *name;
+	    struct passwd pw;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getpwnam_r(name, &pw, buf, buflen);
+	], tcl_cv_api_getpwnam_r_4=yes, tcl_cv_api_getpwnam_r_4=no)])
+	tcl_ok=$tcl_cv_api_getpwnam_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETPWNAM_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWNAM_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETGRGID_R
+#
+#	Check if we have MT-safe variant of getgrgid() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETGRGID_R
+#		HAVE_GETGRGID_R_4
+#		HAVE_GETGRGID_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETGRGID_R], [AC_CHECK_FUNC(getgrgid_r, [
+    AC_CACHE_CHECK([for getgrgid_r with 5 args], tcl_cv_api_getgrgid_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <grp.h>
+    ], [
+	gid_t gid;
+	struct group gr, *grp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getgrgid_r(gid, &gr, buf, buflen, &grp);
+    ], tcl_cv_api_getgrgid_r_5=yes, tcl_cv_api_getgrgid_r_5=no)])
+    tcl_ok=$tcl_cv_api_getgrgid_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRGID_R_5)
+    else
+	AC_CACHE_CHECK([for getgrgid_r with 4 args], tcl_cv_api_getgrgid_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <grp.h>
+	], [
+	    gid_t gid;
+	    struct group gr;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getgrgid_r(gid, &gr, buf, buflen);
+	], tcl_cv_api_getgrgid_r_4=yes, tcl_cv_api_getgrgid_r_4=no)])
+	tcl_ok=$tcl_cv_api_getgrgid_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETGRGID_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRGID_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETGRNAM_R
+#
+#	Check if we have MT-safe variant of getgrnam() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETGRNAM_R
+#		HAVE_GETGRNAM_R_4
+#		HAVE_GETGRNAM_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETGRNAM_R], [AC_CHECK_FUNC(getgrnam_r, [
+    AC_CACHE_CHECK([for getgrnam_r with 5 args], tcl_cv_api_getgrnam_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <grp.h>
+    ], [
+	char *name;
+	struct group gr, *grp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getgrnam_r(name, &gr, buf, buflen, &grp);
+    ], tcl_cv_api_getgrnam_r_5=yes, tcl_cv_api_getgrnam_r_5=no)])
+    tcl_ok=$tcl_cv_api_getgrnam_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRNAM_R_5)
+    else
+	AC_CACHE_CHECK([for getgrnam_r with 4 args], tcl_cv_api_getgrnam_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <grp.h>
+	], [
+	    char *name;
+	    struct group gr;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getgrnam_r(name, &gr, buf, buflen);
+	], tcl_cv_api_getgrnam_r_4=yes, tcl_cv_api_getgrnam_r_4=no)])
+	tcl_ok=$tcl_cv_api_getgrnam_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETGRNAM_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRNAM_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_COMMANDS_PRE(CMDS)
+#
+#	Replacement for autoconf 2.5x AC_COMMANDS_PRE:
+#		Commands to run right before config.status is
+#		created. Accumulates.
+#
+#	Requires presence of SC_OUTPUT_COMMANDS_PRE at the end
+#	of configure.in (right before AC_OUTPUT).
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_COMMANDS_PRE], [
+    define([SC_OUTPUT_COMMANDS_PRE], defn([SC_OUTPUT_COMMANDS_PRE])[$1
+])])
+AC_DEFUN([SC_OUTPUT_COMMANDS_PRE])
+
Index: /tags/1.6.0/gui/configure
===================================================================
--- /tags/1.6.0/gui/configure	(revision 6168)
+++ /tags/1.6.0/gui/configure	(revision 6168)
@@ -0,0 +1,4341 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for RapptureGUI 1.6.
+#
+# Report bugs to <rappture@nanohub.org>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: rappture@nanohub.org about your system, including any
+$0: error possibly output before this message. Then install
+$0: a modern shell, or manually run the script under such a
+$0: shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='RapptureGUI'
+PACKAGE_TARNAME='rappturegui'
+PACKAGE_VERSION='1.6'
+PACKAGE_STRING='RapptureGUI 1.6'
+PACKAGE_BUGREPORT='rappture@nanohub.org'
+PACKAGE_URL=''
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+TK_VERSION
+TK_XLIBSW
+TK_SRC_DIR
+TK_LIB_SPEC
+TK_INC_SPEC
+TCL_VERSION
+TCL_STLIB_LD
+TCL_SRC_DIR
+TCL_SHLIB_SUFFIX
+TCL_SHLIB_LDFLAGS
+TCL_SHLIB_LD
+TCL_SHLIB_CFLAGS
+TCL_LIB_SPEC
+TCL_INC_SPEC
+TCL_CFLAGS_OPTIMIZE
+TCL_CFLAGS_DEBUG
+SVN_VERSION
+SVN_URL
+INSTALL_PREFIX
+TCLSH
+ENABLE_GUI
+MAKE
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+SET_MAKE
+MKDIR_P
+LN_S
+RANLIB
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+LIB_SEARCH_DIRS
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_gui
+with_tclsh
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures RapptureGUI 1.6 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/rappturegui]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+  --target=TARGET   configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of RapptureGUI 1.6:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-gui            build code related to the graphical user interface
+                          [default=yes]
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-tclsh=DIR        location of tclsh [default=yes]
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+
+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 <rappture@nanohub.org>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+RapptureGUI configure 1.6
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by RapptureGUI $as_me 1.6, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_aux_dir=
+for ac_dir in cf "$srcdir"/cf; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in cf \"$srcdir\"/cf" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+#------------------------------------------------------------------------
+# Handle the --prefix=... option
+#------------------------------------------------------------------------
+
+if test "${prefix}" = "NONE"; then
+    prefix=/usr/local
+fi
+if test "${exec_prefix}" = "NONE"; then
+    exec_prefix=$prefix
+fi
+
+INSTALL_PREFIX=$prefix
+
+if test "${libdir}" != "${prefix}/lib"; then
+    LIB_SEARCH_DIRS="-L${prefix}/lib -L${libdir}"
+else
+    LIB_SEARCH_DIRS="-L${libdir}"
+fi
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+#SC_CONFIG_CFLAGS
+#SC_ENABLE_SHARED
+
+SVN_VERSION=`svnversion $srcdir | sed 's/Unversioned directory/unknown/'`
+SVN_URL=`readlink -e $srcdir | xargs svn info | sed -ne 's/^URL: //p'`
+
+gui_with_tcl=""
+
+make_command=""
+for m in "$MAKE" make gmake gnumake ; do
+  if test "x${m}" != "x" ; then
+    if  ( sh -c "$m --version" 2>/dev/null | grep GNU >/dev/null ) ; then
+      make_command=$m; break;
+    fi
+  fi
+done
+if test "x${make_command}" = "x" ; then
+  as_fn_error $? "Requires GNU make. You can specify a version with \$MAKE" "$LINENO" 5
+fi
+MAKE=${make_command}
+
+
+# Check whether --enable-gui was given.
+if test "${enable_gui+set}" = set; then :
+  enableval=$enable_gui;
+else
+  enable_gui=yes
+fi
+
+
+ENABLE_GUI=
+if test "$enable_gui" != "no" ; then
+    ENABLE_GUI="yes"
+fi
+
+
+with_tclsh="yes"
+
+# Check whether --with-tclsh was given.
+if test "${with_tclsh+set}" = set; then :
+  withval=$with_tclsh;
+else
+  with_tclsh=yes
+fi
+
+
+TCLSH=
+# -----------------------------------------------------------------------
+#
+#	Find the Tcl build configuration file "tclConfig.sh"
+#
+# -----------------------------------------------------------------------
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tclConfig.sh" >&5
+$as_echo_n "checking for tclConfig.sh... " >&6; }
+tcl_config_sh=""
+if test "x$gui_with_tcl" != "x" ; then
+
+  # Verify that a tclConfig.sh file exists in the directory specified
+  # by --with-tcl.
+
+  for dir in \
+   $gui_with_tcl
+  do
+    if test -r "$dir/tclConfig.sh" ; then
+      tcl_config_sh="$dir/tclConfig.sh"
+      break
+    elif test -r "$dir/lib/tclConfig.sh" ; then
+      tcl_config_sh="$dir/lib/tclConfig.sh"
+      break
+    fi
+  done
+else
+
+  # Otherwise, search for Tcl configuration file.
+
+  #  1. Search previously named locations.
+
+  for dir in \
+   $prefix \
+   $exec_prefix \
+   $gui_cv_tcl_lib
+  do
+    if test -r "$dir/tclConfig.sh" ; then
+      tcl_config_sh="$dir/tclConfig.sh"
+      break
+    elif test -r "$dir/lib/tclConfig.sh" ; then
+      tcl_config_sh="$dir/lib/tclConfig.sh"
+      break
+    fi
+  done
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${tcl_config_sh}" >&5
+$as_echo "${tcl_config_sh}" >&6; }
+
+if test "x$tcl_config_sh" = "x" ; then
+  echo "can't find Tcl configuration script \"tclConfig.sh\""
+  exit 1
+fi
+. ${tcl_config_sh}
+TCL_INC_SPEC="$TCL_INCLUDE_SPEC"
+
+case $target in
+  *-*-cygwin*|*-*-mingw*)
+    gui_platform="win"
+    TCLSH=${TCL_PREFIX}/bin/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}
+    ;;
+  *-*-darwin*)
+    gui_platform="macosx"
+    TCLSH=${TCL_PREFIX}/bin/tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}
+    ;;
+  *)
+    blt_platform="unix"
+    TCLSH=${TCL_PREFIX}/bin/tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${TCLSH}" >&5
+$as_echo "${TCLSH}" >&6; }
+
+
+if test -f "${exec_prefix}/lib/tclConfig.sh" ; then
+  . ${exec_prefix}/lib/tclConfig.sh
+fi
+if test -f "${exec_prefix}/lib/tkConfig.sh" ; then
+  . ${exec_prefix}/lib/tkConfig.sh
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_config_files="$ac_config_files Makefile pkgIndex.tcl apps/Makefile apps/about apps/encodedata apps/rappture apps/rappture-csh.env apps/rappture.env apps/rappture.use apps/rerun apps/simsim apps/xmldiff scripts/Makefile src/Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+	g
+	s/^\n//
+	s/\n/ /g
+	p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by RapptureGUI $as_me 1.6, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <rappture@nanohub.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+RapptureGUI config.status 1.6
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES pkgIndex.tcl" ;;
+    "apps/Makefile") CONFIG_FILES="$CONFIG_FILES apps/Makefile" ;;
+    "apps/about") CONFIG_FILES="$CONFIG_FILES apps/about" ;;
+    "apps/encodedata") CONFIG_FILES="$CONFIG_FILES apps/encodedata" ;;
+    "apps/rappture") CONFIG_FILES="$CONFIG_FILES apps/rappture" ;;
+    "apps/rappture-csh.env") CONFIG_FILES="$CONFIG_FILES apps/rappture-csh.env" ;;
+    "apps/rappture.env") CONFIG_FILES="$CONFIG_FILES apps/rappture.env" ;;
+    "apps/rappture.use") CONFIG_FILES="$CONFIG_FILES apps/rappture.use" ;;
+    "apps/rerun") CONFIG_FILES="$CONFIG_FILES apps/rerun" ;;
+    "apps/simsim") CONFIG_FILES="$CONFIG_FILES apps/simsim" ;;
+    "apps/xmldiff") CONFIG_FILES="$CONFIG_FILES apps/xmldiff" ;;
+    "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES      "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+
+  esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
Index: /tags/1.6.0/gui/configure.in
===================================================================
--- /tags/1.6.0/gui/configure.in	(revision 6168)
+++ /tags/1.6.0/gui/configure.in	(revision 6168)
@@ -0,0 +1,191 @@
+
+AC_INIT([RapptureGUI],[1.6],[rappture@nanohub.org])
+AC_CONFIG_AUX_DIR(cf)
+#------------------------------------------------------------------------
+# Handle the --prefix=... option
+#------------------------------------------------------------------------
+
+if test "${prefix}" = "NONE"; then
+    prefix=/usr/local
+fi
+if test "${exec_prefix}" = "NONE"; then
+    exec_prefix=$prefix
+fi
+
+INSTALL_PREFIX=$prefix
+
+if test "${libdir}" != "${prefix}/lib"; then
+    LIB_SEARCH_DIRS="-L${prefix}/lib -L${libdir}"
+else
+    LIB_SEARCH_DIRS="-L${libdir}"
+fi
+AC_CANONICAL_TARGET
+AC_SUBST(LIB_SEARCH_DIRS)
+
+AC_PROG_INSTALL
+AC_PROG_INSTALL
+AC_PROG_RANLIB
+AC_PROG_LN_S
+AC_PROG_MKDIR_P
+AC_PROG_MAKE_SET
+AC_PROG_CC
+
+#SC_CONFIG_CFLAGS
+#SC_ENABLE_SHARED
+
+SVN_VERSION=`svnversion $srcdir | sed 's/Unversioned directory/unknown/'`
+SVN_URL=`readlink -e $srcdir | xargs svn info | sed -ne 's/^URL: //p'`
+
+gui_with_tcl=""
+
+make_command=""
+for m in "$MAKE" make gmake gnumake ; do
+  if test "x${m}" != "x" ; then
+    if  ( sh -c "$m --version" 2>/dev/null | grep GNU >/dev/null ) ; then
+      make_command=$m; break;
+    fi
+  fi
+done
+if test "x${make_command}" = "x" ; then
+  AC_MSG_ERROR([Requires GNU make. You can specify a version with \$MAKE])
+fi
+AC_SUBST(MAKE, ${make_command})
+
+AC_ARG_ENABLE(
+    [gui],
+    [AS_HELP_STRING([--enable-gui], [build code related to the graphical user interface @<:@default=yes@:>@])],
+    [],
+    [enable_gui=yes])
+
+ENABLE_GUI=
+if test "$enable_gui" != "no" ; then
+    ENABLE_GUI="yes"
+fi
+AC_SUBST(ENABLE_GUI)
+
+with_tclsh="yes"
+AC_ARG_WITH(
+    [tclsh],
+    [AS_HELP_STRING([--with-tclsh[=DIR]],
+        [location of tclsh @<:@default=yes@:>@])],
+    [],
+    [with_tclsh=yes])
+
+TCLSH=
+# -----------------------------------------------------------------------
+#
+#	Find the Tcl build configuration file "tclConfig.sh"
+#
+# -----------------------------------------------------------------------
+
+AC_MSG_CHECKING([for tclConfig.sh])
+tcl_config_sh=""
+if test "x$gui_with_tcl" != "x" ; then
+
+  # Verify that a tclConfig.sh file exists in the directory specified 
+  # by --with-tcl. 
+
+  for dir in \
+   $gui_with_tcl 
+  do
+    if test -r "$dir/tclConfig.sh" ; then
+      tcl_config_sh="$dir/tclConfig.sh"
+      break
+    elif test -r "$dir/lib/tclConfig.sh" ; then
+      tcl_config_sh="$dir/lib/tclConfig.sh"
+      break
+    fi
+  done
+else 
+
+  # Otherwise, search for Tcl configuration file.  
+
+  #  1. Search previously named locations.
+
+  for dir in \
+   $prefix \
+   $exec_prefix \
+   $gui_cv_tcl_lib 
+  do
+    if test -r "$dir/tclConfig.sh" ; then
+      tcl_config_sh="$dir/tclConfig.sh"
+      break
+    elif test -r "$dir/lib/tclConfig.sh" ; then
+      tcl_config_sh="$dir/lib/tclConfig.sh"
+      break
+    fi
+  done
+fi
+
+AC_MSG_RESULT([${tcl_config_sh}])
+
+if test "x$tcl_config_sh" = "x" ; then
+  echo "can't find Tcl configuration script \"tclConfig.sh\""
+  exit 1
+fi
+. ${tcl_config_sh}
+TCL_INC_SPEC="$TCL_INCLUDE_SPEC"
+
+case $target in
+  *-*-cygwin*|*-*-mingw*)
+    gui_platform="win"
+    TCLSH=${TCL_PREFIX}/bin/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}
+    ;;
+  *-*-darwin*)
+    gui_platform="macosx"
+    TCLSH=${TCL_PREFIX}/bin/tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}
+    ;;
+  *)
+    blt_platform="unix" 
+    TCLSH=${TCL_PREFIX}/bin/tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}
+    ;;
+esac
+
+AC_MSG_RESULT([${TCLSH}])
+AC_SUBST(TCLSH)
+
+if test -f "${exec_prefix}/lib/tclConfig.sh" ; then 
+  . ${exec_prefix}/lib/tclConfig.sh
+fi
+if test -f "${exec_prefix}/lib/tkConfig.sh" ; then 
+  . ${exec_prefix}/lib/tkConfig.sh	
+fi
+
+AC_SUBST(INSTALL_PREFIX)
+AC_SUBST(SVN_URL)
+AC_SUBST(SVN_VERSION)
+AC_SUBST(TCL_CFLAGS_DEBUG)
+AC_SUBST(TCL_CFLAGS_OPTIMIZE)
+AC_SUBST(TCL_INC_SPEC)
+AC_SUBST(TCL_LIB_SPEC)
+AC_SUBST(TCL_SHLIB_CFLAGS)
+AC_SUBST(TCL_SHLIB_LD)
+AC_SUBST(TCL_SHLIB_LDFLAGS)
+AC_SUBST(TCL_SHLIB_SUFFIX)
+AC_SUBST(TCL_SRC_DIR)
+AC_SUBST(TCL_STLIB_LD)
+AC_SUBST(TCL_VERSION)
+AC_SUBST(TK_INC_SPEC)
+AC_SUBST(TK_LIB_SPEC)
+AC_SUBST(TK_SRC_DIR)
+AC_SUBST(TK_XLIBSW)
+AC_SUBST(TK_VERSION)
+
+
+AC_CONFIG_FILES([
+    Makefile
+    pkgIndex.tcl
+    apps/Makefile
+    apps/about
+    apps/encodedata
+    apps/rappture
+    apps/rappture-csh.env
+    apps/rappture.env
+    apps/rappture.use
+    apps/rerun
+    apps/simsim
+    apps/xmldiff
+    scripts/Makefile
+    src/Makefile
+])
+AC_OUTPUT
Index: /tags/1.6.0/gui/pkgIndex.tcl.in
===================================================================
--- /tags/1.6.0/gui/pkgIndex.tcl.in	(revision 6168)
+++ /tags/1.6.0/gui/pkgIndex.tcl.in	(revision 6168)
@@ -0,0 +1,18 @@
+# HACK: The Img library needs to be loaded before RapptureGUI
+# to avoid conflicts with libjpeg, libtiff, etc.
+package ifneeded RapptureGUI @PACKAGE_VERSION@ [format {
+    package require Img
+    set dir [file normalize "%s"]
+    set version @PACKAGE_VERSION@
+    lappend auto_path [file join $dir scripts]
+    namespace eval RapptureGUI {
+	variable version $version
+	variable build "@SVN_VERSION@"
+	variable svnurl "@SVN_URL@"
+	variable installdir $dir
+	variable library $dir
+    }
+    set ext [info sharedlibextension]
+    load [file join $dir "RapptureGUI${version}${ext}"]
+    package provide RapptureGUI $version
+} $dir]
Index: /tags/1.6.0/gui/scripts/Makefile.in
===================================================================
--- /tags/1.6.0/gui/scripts/Makefile.in	(revision 6168)
+++ /tags/1.6.0/gui/scripts/Makefile.in	(revision 6168)
@@ -0,0 +1,186 @@
+
+
+srcdir		= @srcdir@
+prefix		= @prefix@
+exec_prefix	= @exec_prefix@
+bindir		= @bindir@
+libdir		= @libdir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+mandir		= @mandir@
+includedir	= @includedir@
+
+SHELL		= @SHELL@
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+TCLSH		= @TCLSH@
+VPATH		= $(srcdir)
+PACKAGE_VERSION = @PACKAGE_VERSION@
+
+FILES		= \
+		$(srcdir)/analyzer.tcl \
+		$(srcdir)/animicon.tcl \
+		$(srcdir)/animover.tcl \
+		$(srcdir)/balloon.tcl \
+		$(srcdir)/barchartresult.tcl \
+		$(srcdir)/booleanentry.tcl \
+		$(srcdir)/bugreport.tcl \
+		$(srcdir)/choiceentry.tcl \
+		$(srcdir)/cloud.tcl \
+		$(srcdir)/color.tcl \
+		$(srcdir)/combobox.tcl \
+		$(srcdir)/combochecks.tcl \
+		$(srcdir)/controlOwner.tcl \
+		$(srcdir)/controls.tcl \
+		$(srcdir)/coverflow.tcl \
+		$(srcdir)/curve.tcl \
+		$(srcdir)/datatable.tcl \
+		$(srcdir)/datatableresult.tcl \
+		$(srcdir)/deviceEditor.tcl \
+		$(srcdir)/deviceLayout1D.tcl \
+		$(srcdir)/deviceViewer1D.tcl \
+		$(srcdir)/deviceresult.tcl \
+		$(srcdir)/diffview.tcl \
+		$(srcdir)/dispatcher.tcl \
+		$(srcdir)/drawing.tcl \
+		$(srcdir)/drawingentry.tcl \
+		$(srcdir)/dropdown.tcl \
+		$(srcdir)/dropdownchecks.tcl \
+		$(srcdir)/dropdownlist.tcl \
+		$(srcdir)/editor.tcl \
+		$(srcdir)/energyLevels.tcl \
+		$(srcdir)/field.tcl \
+		$(srcdir)/fieldresult.tcl \
+		$(srcdir)/filechoiceentry.tcl \
+		$(srcdir)/filelistentry.tcl \
+		$(srcdir)/filexfer.tcl \
+		$(srcdir)/flowdial.tcl \
+		$(srcdir)/flowhints.tcl \
+		$(srcdir)/flowspeed.tcl \
+		$(srcdir)/flowvisviewer.tcl \
+		$(srcdir)/gauge.tcl \
+		$(srcdir)/getopts.tcl \
+		$(srcdir)/grab.tcl \
+		$(srcdir)/groupentry.tcl \
+		$(srcdir)/histogram.tcl \
+		$(srcdir)/histogramresult.tcl \
+		$(srcdir)/htmlviewer.tcl \
+		$(srcdir)/icons.tcl \
+		$(srcdir)/image.tcl \
+		$(srcdir)/imageentry.tcl \
+		$(srcdir)/imageresult.tcl \
+		$(srcdir)/integerentry.tcl \
+		$(srcdir)/isomarker.tcl \
+		$(srcdir)/transferfunctioneditor.tcl \
+		$(srcdir)/loader.tcl \
+		$(srcdir)/logger.tcl \
+		$(srcdir)/main.tcl \
+		$(srcdir)/mainwin.tcl \
+		$(srcdir)/mesh.tcl \
+		$(srcdir)/meshresult.tcl \
+		$(srcdir)/molvisviewer.tcl \
+		$(srcdir)/nanovisviewer.tcl \
+		$(srcdir)/note.tcl \
+		$(srcdir)/notebook.tcl \
+		$(srcdir)/numberentry.tcl \
+		$(srcdir)/numberresult.tcl \
+		$(srcdir)/page.tcl \
+		$(srcdir)/pager.tcl \
+		$(srcdir)/panes.tcl \
+		$(srcdir)/periodicelement.tcl \
+		$(srcdir)/periodicelemententry.tcl \
+		$(srcdir)/periodictable.tcl \
+		$(srcdir)/postern.tcl \
+		$(srcdir)/probdisteditor.tcl \
+		$(srcdir)/progress.tcl \
+		$(srcdir)/pushbutton.tcl \
+		$(srcdir)/radiodial.tcl \
+		$(srcdir)/resultset.tcl \
+		$(srcdir)/response.tcl \
+		$(srcdir)/responseviewer.tcl \
+		$(srcdir)/resultselector.tcl \
+		$(srcdir)/resultviewer.tcl \
+		$(srcdir)/scroller.tcl \
+		$(srcdir)/sequence.tcl \
+		$(srcdir)/sequencedial.tcl \
+		$(srcdir)/sequenceresult.tcl \
+		$(srcdir)/service.tcl \
+		$(srcdir)/sidebarframe.tcl \
+		$(srcdir)/spectrum.tcl \
+		$(srcdir)/spinint.tcl \
+		$(srcdir)/switch.tcl \
+		$(srcdir)/table.tcl \
+		$(srcdir)/tempgauge.tcl \
+		$(srcdir)/textentry.tcl \
+		$(srcdir)/textresult.tcl \
+		$(srcdir)/tool.tcl \
+		$(srcdir)/tooltip.tcl \
+		$(srcdir)/tuples.tcl \
+		$(srcdir)/tweener.tcl \
+		$(srcdir)/unirect2d.tcl \
+		$(srcdir)/unirect3d.tcl \
+		$(srcdir)/units.tcl \
+		$(srcdir)/utils.tcl \
+		$(srcdir)/uq.tcl \
+		$(srcdir)/uqcurve.tcl \
+		$(srcdir)/uqinfo.tcl \
+		$(srcdir)/uqnotebook.tcl \
+		$(srcdir)/valueresult.tcl \
+		$(srcdir)/videochooser.tcl \
+		$(srcdir)/videochooserinfo.tcl \
+		$(srcdir)/videodial.tcl \
+		$(srcdir)/videodial1.tcl \
+		$(srcdir)/videodial2.tcl \
+		$(srcdir)/videodistance.tcl \
+		$(srcdir)/videoscreen.tcl \
+		$(srcdir)/videospeed.tcl \
+		$(srcdir)/videoparticle.tcl \
+		$(srcdir)/videopreview.tcl \
+		$(srcdir)/visviewer.tcl \
+		$(srcdir)/vtkviewer.tcl \
+		$(srcdir)/vtkglyphviewer.tcl \
+		$(srcdir)/vtkisosurfaceviewer.tcl \
+		$(srcdir)/vtkmeshviewer.tcl \
+		$(srcdir)/vtkstreamlinesviewer.tcl \
+		$(srcdir)/vtksurfaceviewer.tcl \
+		$(srcdir)/vtkvolumeviewer.tcl \
+		$(srcdir)/vtkheightmapviewer.tcl \
+		$(srcdir)/vtkimageviewer.tcl \
+		$(srcdir)/xylegend.tcl \
+		$(srcdir)/xyprint.tcl \
+		$(srcdir)/xyresult.tcl
+
+version 	= $(PACKAGE_VERSION)
+name 		= RapptureGUI$(version)
+
+destdir		= $(libdir)/$(name)/scripts
+
+all: tclIndex
+
+tclIndex: $(FILES)
+	$(TCLSH) $(srcdir)/../cf/mkindex.tcl --srcdir $(srcdir) \
+		--outfile tclIndex
+
+install: all install_scripts install_images
+
+install_scripts:
+	$(MKDIR_P) -m 0755 $(destdir)
+	@for i in $(FILES); do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done
+	$(INSTALL) -m 0444 tclIndex $(destdir)
+
+install_images:
+	$(MKDIR_P) -m 0755 $(destdir)/images
+	@for i in $(srcdir)/images/*.gif $(srcdir)/images/*.png $(srcdir)/images/*.xbm; do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 0444 $$i $(destdir)/images ; \
+	done
+
+clean:
+	$(RM) tclIndex
+
+distclean: clean
+	$(RM) Makefile *~
+
Index: /tags/1.6.0/gui/scripts/analyzer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/analyzer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/analyzer.tcl	(revision 6168)
@@ -0,0 +1,2141 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: analyzer - output area for Rappture
+#
+#  This widget acts as the output side of a Rappture application.
+#  When the input has changed, it displays a Simulate button that
+#  launches the simulation.  When a simulation is running, this
+#  area shows status.  When it is finished, the results appear
+#  in place of the button, according to the specs in the <analyze>
+#  XML data.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Analyzer.width 3.5i widgetDefault
+option add *Analyzer.height 4i widgetDefault
+option add *Analyzer.simControl "auto" widgetDefault
+option add *Analyzer.simControlBackground "" widgetDefault
+option add *Analyzer.simControlOutline gray widgetDefault
+option add *Analyzer.simControlActiveBackground #ffffcc widgetDefault
+option add *Analyzer.simControlActiveOutline black widgetDefault
+option add *Analyzer.notebookpage "about" widgetDefault
+
+option add *Analyzer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *Analyzer.codeFont \
+    -*-courier-medium-r-normal-*-12-* widgetDefault
+option add *Analyzer.textFont \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *Analyzer.boldTextFont \
+    -*-helvetica-bold-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Analyzer {
+    inherit itk::Widget
+
+    itk_option define -codefont codeFont Font ""
+    itk_option define -textfont textFont Font ""
+    itk_option define -boldtextfont boldTextFont Font ""
+    itk_option define -simcontrol simControl SimControl ""
+    itk_option define -simcontroloutline simControlOutline Background ""
+    itk_option define -simcontrolbackground simControlBackground Background ""
+    itk_option define -simcontrolactiveoutline simControlActiveOutline Background ""
+    itk_option define -simcontrolactivebackground simControlActiveBackground Background ""
+    itk_option define -holdwindow holdWindow HoldWindow ""
+    itk_option define -notebookpage notebookPage NotebookPage ""
+
+    private variable _done 0
+    private variable _tree ""
+    private variable _saved 
+    private variable _name "" 
+    private variable _revision 0;       # Tool revision
+    
+    constructor {tool args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method simulate {args}
+    public method reset {{when -eventually}}
+    public method load {xmlobj}
+    public method reload { fileName }
+    public method clear {{xmlobj "all"}}
+    public method download {option args}
+    public method buildMenu { w url appName }
+
+    protected method _plot {args}
+    protected method _reorder {comps}
+    protected method _autoLabel {xmlobj path title cntVar}
+    protected method _fixResult {}
+    protected method _fixResultSet {args}
+    protected method _fixSize {}
+    protected method _fixSimControl {}
+    protected method _fixNotebook {}
+    protected method _simState {state args}
+    protected method _simOutput {message}
+    protected method _resultTooltip {}
+    protected method _isPdbTrajectory {data}
+    protected method _isLammpsTrajectory {data}
+    protected method _pdbToSequence {xmlobj path id child data}
+    protected method _lammpsToSequence {xmlobj path id child data}
+    protected method _trajToSequence {xmlobj {path ""}}
+    protected method _pop_uq_dialog {win}
+    protected method _setWaitVariable {state}
+    protected method _adjust_level {win}
+
+    private variable _tool ""          ;# belongs to this tool
+    private variable _appName ""       ;# Name of application
+    private variable _control "manual" ;# start mode
+    private variable _resultset ""     ;# ResultSet object with all results
+    private variable _pages 0          ;# number of pages for result sets
+    private variable _label2page       ;# maps output label => result set
+    private variable _label2desc       ;# maps output label => description
+    private variable _label2item       ;# maps output label => output.xxx item
+    private variable _lastlabel ""     ;# label of last example loaded
+    private variable _plotlist ""      ;# items currently being plotted
+    private variable _lastPlot
+    private common job                 ;# array var used for blt::bgexec jobs
+    private variable _uq_active 0      ;# a UQ variables has been used
+    private variable _wait_uq 0
+
+    private method BuildSimulationTable { w }
+    private method Cancel {}
+    private method CheckSimsetDetails {}
+    private method EditSimset {}
+    private method FindSimsetsForApp { appName }
+    private method GetSimset { name }
+    private method LoadSimulations { runfiles }
+    private method Ok {}
+    private method PostMenu { menu }
+    private method ReadSimsetFile { fileName }
+    private method SaveSimulations {}
+    private method SelectSimsetForDeletion {}
+    private method SelectSimsetForLoading {}
+    private method SelectSimsetNameAndSave {}
+    private method SelectSimsetToPublish {}
+    private method WriteSimsetFile { appName fileName publish }
+    private method OverwriteSaveFile {}
+    private method BuildQuestionDialog { popup }
+    private method Save {}
+}
+
+itk::usual Analyzer {
+    keep -background -cursor foreground -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::constructor {tool args} {
+    set _tool $tool
+    set _tree [blt::tree create]
+
+    # use this to store all simulation results
+    set _resultset [Rappture::ResultSet ::\#auto]
+    $_resultset notify add $this [itcl::code $this _fixResultSet]
+
+    # widget settings...
+    itk_option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    frame $itk_interior.simol -borderwidth 1 -relief flat
+    pack $itk_interior.simol -fill x
+
+    itk_component add simbg {
+        frame $itk_interior.simol.simbg -borderwidth 0
+    } {
+        usual
+        rename -background -simcontrolcolor simControlColor Color
+    }
+    pack $itk_component(simbg) -expand yes -fill both
+
+    set simtxt [string trim [$tool xml get tool.action.label]]
+    if {"" == $simtxt} {
+        set simtxt "Simulate"
+    }
+    itk_component add simulate {
+        button $itk_component(simbg).simulate -text $simtxt \
+            -command [itcl::code $this simulate]
+    } {
+        usual
+        rename -highlightbackground -simcontrolcolor simControlColor Color
+    }
+    pack $itk_component(simulate) -side left -padx 4 -pady 4
+
+    # BE CAREFUL: Shift focus when we click on "Simulate".
+    #   This shifts focus away from input widgets and causes them to
+    #   finalize and log any pending changes.  A better way would be
+    #   to have the "sync" operation finalize/sync, but this works
+    #   for now.
+    bind $itk_component(simulate) <ButtonPress> {focus %W}
+
+    # if there's a hub url, then add "About" and "Questions" links
+    global rapptureInfo
+    if { $rapptureInfo(appName) == "" } {
+        set _appName [$_tool xml get "tool.id"]
+    } else {
+        set _appName $rapptureInfo(appName)
+    }
+    set num [$_tool xml get "tool.version.application.revision"]
+    if { $num == "" } {
+        set num 0
+    }
+    set _revision $num
+    set url [Rappture::Tool::resources -huburl]
+
+    itk_component add hubcntls {
+        frame $itk_component(simbg).hubcntls
+    } {
+        usual
+        rename -background -simcontrolcolor simControlColor Color
+    }
+    pack $itk_component(hubcntls) -side right -padx 4
+    
+    itk_component add help {
+        menubutton $itk_component(hubcntls).help \
+            -image [Rappture::icon hamburger_menu] \
+            -highlightthickness 0 \
+            -menu $itk_component(hubcntls).help.menu
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -simcontrolcolor simControlColor Color
+    }
+    pack $itk_component(help) -side left
+    buildMenu $itk_component(help).menu $url $_appName
+    
+    if 0 {
+        # To be eliminated with menu changes.
+    itk_component add about {
+        button $itk_component(hubcntls).about \
+            -text "About this tool" \
+            -command [list Rappture::filexfer::webpage \
+                          "$url/tools/$_appName"]
+    } {
+        usual
+        ignore -font
+        rename -background -simcontrolcolor simControlColor Color
+        rename -highlightbackground -simcontrolcolor simControlColor Color
+    }
+    pack $itk_component(about) -side top -anchor w
+    
+    itk_component add questions {
+        button $itk_component(hubcntls).questions -text Questions? \
+            -command [list Rappture::filexfer::webpage \
+                          "$url/resources/$_appName/questions"]
+    } {
+        usual
+        ignore -font
+        rename -background -simcontrolcolor simControlColor Color
+        rename -highlightbackground -simcontrolcolor simControlColor Color
+    }
+    pack $itk_component(questions) -side top -anchor w
+    if { $url == "" || $_appName == "" } {
+        $itk_component(questions) configure -state disabled
+        $itk_component(about) configure -state disabled
+    } else {
+        $itk_component(questions) configure -state normal
+        $itk_component(about) configure -state normal
+    }        
+    }
+    itk_component add simstatus {
+        text $itk_component(simbg).simstatus -borderwidth 0 \
+            -highlightthickness 0 -height 1 -width 1 -wrap none \
+            -state disabled
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -simcontrolcolor simControlColor Color
+        rename -font -textfont textFont Font
+    }
+    pack $itk_component(simstatus) -side left -expand yes -fill x
+
+    $itk_component(simstatus) tag configure popup \
+        -underline 1 -foreground blue
+
+    $itk_component(simstatus) tag bind popup \
+        <Enter> {%W configure -cursor center_ptr}
+    $itk_component(simstatus) tag bind popup \
+        <Leave> {%W configure -cursor ""}
+    $itk_component(simstatus) tag bind popup \
+        <ButtonPress> {after idle {Rappture::Tooltip::tooltip show %W}}
+
+
+    itk_component add notebook {
+        Rappture::Notebook $itk_interior.nb
+    }
+    pack $itk_interior.nb -expand yes -fill both
+
+    # ------------------------------------------------------------------
+    # ABOUT PAGE
+    # ------------------------------------------------------------------
+    set w [$itk_component(notebook) insert end about]
+
+    Rappture::Scroller $w.info -xscrollmode off -yscrollmode auto
+    pack $w.info -expand yes -fill both -padx 4 -pady 20
+    itk_component add toolinfo {
+        text $w.info.text -width 1 -height 1 -wrap word \
+            -borderwidth 0 -highlightthickness 0
+    } {
+        usual
+        ignore -borderwidth -relief
+        rename -font -textfont textFont Font
+    }
+    $w.info contents $w.info.text
+
+    # ------------------------------------------------------------------
+    # SIMULATION PAGE
+    # ------------------------------------------------------------------
+    set w [$itk_component(notebook) insert end simulate]
+    frame $w.cntls
+    pack $w.cntls -side bottom -fill x -pady 12
+    frame $w.cntls.sep -background black -height 1
+    pack $w.cntls.sep -side top -fill x
+
+    itk_component add abort {
+        button $w.cntls.abort -text "Abort" \
+            -command [itcl::code $_tool abort]
+    }
+    pack $itk_component(abort) -side left -expand yes -padx 4 -pady 4
+
+    Rappture::Scroller $w.info -xscrollmode auto -yscrollmode auto
+    pack $w.info -expand yes -fill both -padx 4 -pady 4
+    itk_component add runinfo {
+        text $w.info.text -width 1 -height 1 -wrap none \
+            -borderwidth 0 -highlightthickness 0 \
+            -state disabled
+    } {
+        usual
+        ignore -borderwidth -relief
+        rename -font -codefont codeFont Font
+    }
+    $w.info contents $w.info.text
+
+    itk_component add progress {
+        Rappture::Progress $w.progress
+    }
+
+    # ------------------------------------------------------------------
+    # ANALYZE PAGE
+    # ------------------------------------------------------------------
+    set w [$itk_component(notebook) insert end analyze]
+
+    frame $w.top
+    pack $w.top -side top -fill x -pady 8
+    label $w.top.l -text "Result:" -font $itk_option(-font)
+    pack $w.top.l -side left
+
+    itk_component add viewselector {
+        Rappture::Combobox $w.top.sel -width 10 -editable no
+    } {
+        usual
+        rename -font -textfont textFont Font
+    }
+    pack $itk_component(viewselector) -side left -expand yes -fill x
+    bind $itk_component(viewselector) <<Value>> [itcl::code $this _fixResult]
+    bind $itk_component(viewselector) <Enter> \
+        [itcl::code $this download coming]
+
+    Rappture::Tooltip::for $itk_component(viewselector) \
+        "@[itcl::code $this _resultTooltip]"
+
+    $itk_component(viewselector) choices insert end \
+        --- "---"
+
+    itk_component add download {
+        button $w.top.dl -image [Rappture::icon download] -anchor e \
+            -borderwidth 1 -relief flat -overrelief raised \
+            -command [itcl::code $this download start $w.top.dl]
+    }
+    pack $itk_component(download) -side right -padx {4 0}
+    bind $itk_component(download) <Enter> \
+        [itcl::code $this download coming]
+
+    $itk_component(viewselector) choices insert end \
+        @download [Rappture::filexfer::label download]
+
+    if {[Rappture::filexfer::enabled]} {
+        Rappture::Tooltip::for $itk_component(download) "Downloads the current result to a new web browser window on your desktop.  From there, you can easily print or save results.
+
+NOTE:  Your web browser must allow pop-ups from this site.  If your output does not appear, look for a 'pop-up blocked' message and enable pop-ups."
+    } else {
+        Rappture::Tooltip::for $itk_component(download) "Saves the current result to a file on your desktop."
+    }
+
+    itk_component add results {
+        Rappture::Panes $w.pane \
+            -sashwidth 2 -sashrelief solid -sashpadding {2 0}
+    } {
+        usual
+        ignore -sashwidth -sashrelief -sashpadding
+    }
+    pack $itk_component(results) -expand yes -fill both
+    set f [$itk_component(results) pane 0]
+
+    itk_component add resultpages {
+        Rappture::Notebook $f.nb
+    }
+    pack $itk_component(resultpages) -expand yes -fill both
+    set f [$itk_component(results) insert end -fraction 0.1]
+    itk_component add resultselector {
+        Rappture::ResultSelector $f.rsel -resultset $_resultset \
+            -settingscommand [itcl::code $this _plot]
+    }
+    pack $itk_component(resultselector) -expand yes -fill both
+    bind $itk_component(resultselector) <<Layout>> [itcl::code $this _fixSize]
+    bind $itk_component(results) <Configure> [itcl::code $this _fixSize]
+
+    eval itk_initialize $args
+
+    $itk_component(runinfo) tag configure ERROR -foreground red
+    $itk_component(runinfo) tag configure text -font $itk_option(-textfont)
+
+    #
+    # Load up tool info on the first page.
+    #
+    $itk_component(toolinfo) tag configure title \
+        -font $itk_option(-boldtextfont)
+
+    set mesg [string trim [$tool xml get tool.title]]
+    if {"" != $mesg} {
+        $itk_component(toolinfo) insert end $mesg title
+        $itk_component(toolinfo) insert end "\n\n"
+    }
+
+    set mesg [string trim [$tool xml get tool.about]]
+    if {"" != $mesg} {
+        $itk_component(toolinfo) insert end $mesg
+    }
+    $itk_component(toolinfo) configure -state disabled
+    $itk_component(notebook) current about
+
+    # tool can run on "manual" (default) or "auto"
+    set cntl [string trim [$tool xml get tool.control]]
+    if {"" == $cntl} {
+        set cntl [string trim [$tool xml get tool.control.type]]
+    }
+    if {"" != $cntl} {
+        set _control $cntl
+    }
+
+    # reset everything to a clean state
+    reset
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::destructor {} {
+    after cancel [itcl::code $this simulate]
+    $_resultset notify remove $this
+    itcl::delete object $_resultset
+}
+
+# ----------------------------------------------------------------------
+# USAGE: simulate ?-ifneeded?
+# USAGE: simulate ?<path1> <value1> <path2> <value2> ...?
+#
+# Kicks off the simulator by executing the tool.command associated
+# with the tool.  If any arguments are specified, they are used to
+# set parameters for the simulation.  While the simulation is running,
+# it shows status.  When the simulation is finished, it switches
+# automatically to "analyze" mode and shows the results.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::simulate {args} {
+    #puts "simulate args='$args'"
+
+    set uq [$_tool get_uq -uq_type smolyak -uq_args 2]
+
+    # pop up UQ window
+    if {[$uq num_runs] > 1} {
+        set _uq_active 1
+        set status [$uq run_dialog $itk_component(simulate)]
+        if {$status == 0} {
+            # cancelled
+            return
+        }
+        lappend args -uq_type [$uq type]
+        lappend args -uq_args [$uq args]
+        # Need to put these UQ values into the driver file
+        # so the call to resultset::contains will be correct.
+        set _xml [$_tool xml object]
+        $_xml put uq.type.current [$uq type]
+        $_xml put uq.args.current [$uq args]
+        $_xml put uq.args.about.label "level"
+        $_xml put uq.args.about.description "Polynomial Degree of Smolyak GPC method."
+    }
+    #puts "simulate args=$args"
+
+    if {[lindex $args 0] == "-ifneeded"} {
+        # check to see if simulation is really needed
+        $_tool sync
+        if {[$_resultset contains [$_tool xml object]]
+              && ![string equal $_control "manual-resim"]} {
+            # not needed -- show results and return
+            $itk_component(notebook) current analyze
+            return
+        }
+        set args [lreplace $args 0 0]
+    }
+
+    # simulation is needed -- go to simulation page
+    $itk_component(notebook) current simulate
+
+    # no progress messages yet
+    pack forget $itk_component(progress)
+    lappend args -output [itcl::code $this _simOutput]
+
+    _simState off
+    $itk_component(runinfo) configure -state normal
+    $itk_component(runinfo) delete 1.0 end
+    $itk_component(runinfo) insert end "Running simulation...\n\n" text
+    $itk_component(runinfo) configure -state disabled
+
+    # if the hold window is set, then put up a busy cursor
+    if {$itk_option(-holdwindow) != ""} {
+        blt::busy hold $itk_option(-holdwindow)
+        raise $itk_component(hull)
+    }
+
+    # execute the job
+    #puts "$_tool run $args"
+
+    foreach {status result} [eval $_tool run $args] break
+
+    # if job was aborted, then allow simulation again
+    if {$result == "ABORT"} {
+        _simState on "Aborted"
+    }
+
+    # load results from run.xml into analyzer
+    if {$status == 0 && $result != "ABORT"} {
+        set status [catch {load $result} result]
+    }
+
+    # back to normal
+    if {$itk_option(-holdwindow) != ""} {
+        blt::busy release $itk_option(-holdwindow)
+    }
+    $itk_component(abort) configure -state disabled
+
+    if {$status != 0} {
+        $itk_component(runinfo) configure -state normal
+        # Don't erase program error messages.
+        # $itk_component(runinfo) delete 1.0 end
+        $itk_component(runinfo) insert end "\n\nProblem launching job:\n\n" text
+        _simOutput $result
+        $itk_component(runinfo) configure -state disabled
+        $itk_component(runinfo) see 1.0
+
+        # Try to create a support ticket for this error.
+        # It may be a real problem.
+        if {[Rappture::bugreport::shouldReport for jobs]} {
+            set ::errorInfo "\n\n== RAPPTURE INPUT ==\n[$_tool xml xml]"
+            Rappture::bugreport::register "Problem launching job:\n$result"
+            Rappture::bugreport::attachment [$_tool xml xml]
+            Rappture::bugreport::send
+        }
+    } else {
+        $itk_component(notebook) current analyze
+    }
+
+    # do this last -- after _simOutput above
+    pack forget $itk_component(progress)
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: reset ?-eventually|-now?
+#
+# Used to reset the analyzer whenever the input to a simulation has
+# changed.  Sets the mode back to "simulate", so the user has to
+# simulate again to see the output.  If the <start> option is set
+# to "auto", the simulation is invoked immediately.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::reset {{when -eventually}} {
+    if {$when == "-eventually"} {
+        after cancel [list catch [itcl::code $this reset -now]]
+        after idle [list catch [itcl::code $this reset -now]]
+        return
+    }
+
+    # check to see if simulation is really needed
+    $_tool sync
+    if {![$_resultset contains [$_tool xml object]]
+          || [string equal $_control "manual-resim"]} {
+        # if control mode is "auto", then simulate right away
+        if {[string match auto* $_control]} {
+            # auto control -- don't need button
+            pack forget $itk_interior.simol
+
+            after cancel [itcl::code $this simulate]
+            after idle [itcl::code $this simulate]
+        } else {
+            _simState on "new input parameters"
+        }
+    } else {
+        _simState off
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load <xmlobj>
+#
+# Loads the data from the given <xmlobj> into the appropriate results
+# sets.  If necessary, new results sets are created to store the data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::load {xmlobj} {
+    # only show the last result? then clear first
+    if {[string trim [$_tool xml get tool.analyzer]] == "last"} {
+        clear
+    }
+    #puts "Analyzer::load"
+    $_resultset add $xmlobj
+
+    # NOTE: Adding will trigger a !change event on the ResultSet
+    # object, which will trigger calls to _fixResultSet to add
+    # the results to display.
+}
+
+# ----------------------------------------------------------------------
+# USAGE: clear ?<xmlobj>?
+#
+# Discards one or more results previously loaded into the analyzer.
+# If an <xmlobj> is specified, then that one result is cleared.
+# Otherwise, all results are cleared.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::clear {{xmlobj "all"}} {
+    if {$xmlobj eq "" || $xmlobj eq "all"} {
+        $_resultset clear
+    } else {
+        $_resultset clear $xmlobj
+    }
+
+    # NOTE: Clearing will trigger a !change event on the ResultSet
+    # object, which will trigger calls to _fixResultSet to clean up
+    # the results being displayed.
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download start ?widget?
+# USAGE: download now ?widget?
+#
+# Spools the current result so the user can download it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::download {option args} {
+    set title [$itk_component(viewselector) value]
+    set page [$itk_component(viewselector) translate $title]
+
+    switch -- $option {
+        coming {
+            #
+            # Warn result that a download is coming, in case
+            # it needs to take a screen snap.
+            #
+            if {![regexp {^(|@download|---)$} $page]} {
+                set f [$itk_component(resultpages) page $page]
+                $f.rviewer download coming
+            }
+        }
+        controls {
+            # no controls for this download yet
+            return ""
+        }
+        start {
+            set widget $itk_component(download)
+            if {[llength $args] > 0} {
+                set widget [lindex $args 0]
+                if {[catch {winfo class $widget}]} {
+                    set widget $itk_component(download)
+                }
+            }
+            #
+            # See if this download has any controls.  If so, then
+            # post them now and let the user continue the download
+            # after selecting a file format.
+            #
+            if {$page != ""} {
+                set ext ""
+                set f [$itk_component(resultpages) page $page]
+                set arg [itcl::code $this download now $widget]
+                set popup [$f.rviewer download controls $arg]
+                if {"" != $popup} {
+                    $popup activate $widget below
+                } else {
+                    download now $widget
+                }
+            } else {
+                # this shouldn't happen
+                set file error.html
+                set data "<h1>Not Found</h1>There is no result selected."
+            }
+        }
+        now {
+            set widget $itk_component(download)
+            if {[llength $args] > 0} {
+                set widget [lindex $args 0]
+                if {[catch {winfo class $widget}]} {
+                    set widget $itk_component(download)
+                }
+            }
+            #
+            # Perform the actual download.
+            #
+            if {$page != ""} {
+                set ext ""
+                set f [$itk_component(resultpages) page $page]
+                set item [$itk_component(viewselector) value]
+                set result [$f.rviewer download now $widget $_appName $item]
+                if { $result == "" } {
+                    return;                # User cancelled the download.
+                }
+                foreach {ext data} $result break
+                if {"" == $ext} {
+                    if {"" != $widget} {
+                        Rappture::Tooltip::cue $widget \
+                            "Can't download this result."
+                    }
+                    return
+                }
+                regsub -all {[\ -\/\:-\@\{-\~]} $title {} title
+                set file "$title$ext"
+            } else {
+                # this shouldn't happen
+                set file error.html
+                set data "<h1>Not Found</h1>There is no result selected."
+            }
+
+            Rappture::Logger::log download [$itk_component(viewselector) value]
+            set mesg [Rappture::filexfer::download $data $file]
+            if {[string length $mesg] > 0} {
+                Rappture::Tooltip::cue $widget $mesg
+            }
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now, start"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _plot ?<index> <options> <index> <options>...?
+#
+# Used internally to update the plot shown in the current result
+# viewer whenever the resultselector settings have changed.  Causes the
+# desired results to show up on screen.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_plot {args} {
+    #puts "analyzer::_plot"
+    set _plotlist $args
+
+    set page [$itk_component(viewselector) value]
+    set page [$itk_component(viewselector) translate $page]
+    if {"" != $page} {
+        set f [$itk_component(resultpages) page $page]
+        $f.rviewer plot clear
+        foreach {index opts} $_plotlist {
+            $f.rviewer plot add $index $opts
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _reorder <compList>
+#
+# Used internally to change the order of a series of output components
+# found in the <output> section.  Moves the <log> elements to the end
+# and returns the updated list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_reorder {comps} {
+    set i 0
+    set max [llength $comps]
+    while {$i < $max} {
+        set c [lindex $comps $i]
+        if {[string match log* $c]} {
+            set comps [lreplace $comps $i $i]
+            lappend comps $c
+            incr max -1
+        } else {
+            incr i
+        }
+    }
+    return $comps
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _autoLabel <xmlobj> <path> <title> <cntVar>
+#
+# Used internally to check for an about.label property at the <path>
+# in <xmlobj>.  If this object doesn't have a label, then one is
+# supplied using the given <title>.  The <cntVar> is an array of
+# counters in the calling scopes for titles that have been used
+# in the past.  This is used to create titles like "Plot #2" the
+# second time it is encountered.
+#
+# The <xmlobj> is updated so that the label is inserted directly in
+# the tree.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_autoLabel {xmlobj path title cntVar} {
+    upvar $cntVar counters
+
+    set group [$xmlobj get $path.about.group]
+    set label [$xmlobj get $path.about.label]
+    if {"" == $label} {
+        # no label -- make one up using the title specified
+        if {![info exists counters($group-$title)]} {
+            set counters($group-$title) 1
+            set label $title
+        } else {
+            set label "$title (#[incr counters($group-$title)])"
+        }
+        $xmlobj put $path.about.label $label
+    } else {
+        # handle the case of two identical labels in <output>
+        if {![info exists counters($group-$label)]} {
+            set counters($group-$label) 1
+        } else {
+            set label "$label (#[incr counters($group-$label)])"
+            $xmlobj put $path.about.label $label
+        }
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixResult
+#
+# Used internally to change the result page being displayed whenever
+# the user selects a page from the results combobox.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_fixResult {} {
+    set name [$itk_component(viewselector) value]
+    set page ""
+    if {"" != $name} {
+        set page [$itk_component(viewselector) translate $name]
+    }
+    if {$page == "@download"} {
+        # put the combobox back to its last value
+        $itk_component(viewselector) component entry configure -state normal
+        $itk_component(viewselector) component entry delete 0 end
+        $itk_component(viewselector) component entry insert end $_lastlabel
+        $itk_component(viewselector) component entry configure -state disabled
+        # perform the actual download
+        download start $itk_component(download)
+    } elseif {$page == "---"} {
+        # put the combobox back to its last value
+        $itk_component(viewselector) component entry configure -state normal
+        $itk_component(viewselector) component entry delete 0 end
+        $itk_component(viewselector) component entry insert end $_lastlabel
+        $itk_component(viewselector) component entry configure -state disabled
+    } elseif {$page != ""} {
+        set _lastlabel $name
+        $itk_component(resultpages) current $page
+        set f [$itk_component(resultpages) page $page]
+        # We don't want to replot if we're using an existing viewer with the
+        # the same list of objects to plot.  So track the viewer and the list.
+        if { ![info exists _lastPlot($f)] || $_plotlist != $_lastPlot($f) } {
+            set _lastPlot($f) $_plotlist
+            set win [winfo toplevel $itk_component(hull)]
+            blt::busy hold $win
+            #puts "rviewer = $f.rviewer"
+            #puts "_plotlist = $_plotlist"
+            $f.rviewer plot clear
+            eval $f.rviewer plot add $_plotlist
+            blt::busy release $win
+        }
+        Rappture::Logger::log output $_label2item($name)
+        Rappture::Tooltip::for $itk_component(viewselector) \
+            "@[itcl::code $this _resultTooltip]" -log $_label2item($name)
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixResultSet ?<eventData>...?
+#
+# Used internally to react to changes within the ResultSet.  When a
+# result is added, a new result viewer is created for the object.
+# When all results are cleared, the viewers are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_fixResultSet {args} {
+    #puts "Analyzer::_fixResultSet $args"
+    array set eventData $args
+    switch -- $eventData(op) {
+        add {
+            set xmlobj $eventData(what)
+
+            # Detect molecule elements that contain trajectory data
+            # and convert to sequences.
+            _trajToSequence $xmlobj output
+
+            # Go through the analysis and find all result sets.
+            set haveresults 0
+            foreach item [_reorder [$xmlobj children output]] {
+                if {[$xmlobj get output.$item.about.uqtype] == ""} {
+                    switch -glob -- $item {
+                        log* {
+                            _autoLabel $xmlobj output.$item "Output Log" counters
+                        }
+                        number* {
+                            _autoLabel $xmlobj output.$item "Number" counters
+                        }
+                        integer* {
+                            _autoLabel $xmlobj output.$item "Integer" counters
+                        }
+                        mesh* {
+                            _autoLabel $xmlobj output.$item "Mesh" counters
+                        }
+                        string* {
+                            _autoLabel $xmlobj output.$item "String" counters
+                        }
+                        histogram* - curve* - field* {
+                            _autoLabel $xmlobj output.$item "Plot" counters
+                        }
+                        drawing* {
+                            _autoLabel $xmlobj output.$item "Drawing" counters
+                        }
+                        structure* {
+                            _autoLabel $xmlobj output.$item "Structure" counters
+                        }
+                        table* {
+                            _autoLabel $xmlobj output.$item "Energy Levels" counters
+                        }
+                        sequence* {
+                            _autoLabel $xmlobj output.$item "Sequence" counters
+                        }
+                    }
+                }
+                set label [$xmlobj get output.$item.about.group]
+                if {"" == $label} {
+                    set label [$xmlobj get output.$item.about.label]
+                }
+
+                set hidden [$xmlobj get output.$item.hide]
+                set hidden [expr {"" != $hidden && $hidden}]
+
+                if {"" != $label && !$hidden} {
+                    set haveresults 1
+                }
+            }
+
+            # if there are any valid results, add them to the resultset
+            if {$haveresults} {
+                set index [$_resultset get simnum $xmlobj]
+
+                # add each result to a result viewer
+                foreach item [_reorder [$xmlobj children output]] {
+                    set label [$xmlobj get output.$item.about.group]
+                    if {"" == $label} {
+                        set label [$xmlobj get output.$item.about.label]
+                    }
+                    set hidden [$xmlobj get output.$item.hide]
+                    if {$hidden == ""} {
+                        set hidden 0
+                    }
+                    if {"" != $label && !$hidden} {
+                        set uq_part [$xmlobj get output.$item.about.uqtype]
+
+                        #puts "label=$label uq_part=$uq_part"
+
+                        if {![info exists _label2page($label)]} {
+                            #puts "Adding label: '$label'"
+                            set name "page[incr _pages]"
+                            #puts "Inserting $name into resultpages"
+                            set page [$itk_component(resultpages) \
+                                insert end $name]
+                            set _label2page($label) $page
+                            set _label2item($label) output.$item
+                            set _label2desc($label) \
+                                [$xmlobj get output.$item.about.description]
+                            Rappture::ResultViewer $page.rviewer
+                            pack $page.rviewer -expand yes -fill both -pady 4
+
+                            set end [$itk_component(viewselector) \
+                                choices index -value ---]
+                            if {$end < 0} {
+                                set end "end"
+                            }
+                            $itk_component(viewselector) choices insert $end \
+                                $name $label
+                        }
+
+                        # add/replace the latest result into this viewer
+                        set page $_label2page($label)
+
+                        if {![info exists reset($page)]} {
+                            $page.rviewer clear $index
+                            set reset($page) 1
+                        }
+                        $page.rviewer add $index $xmlobj output.$item $label $uq_part
+                    }
+                }
+            }
+
+            # show the first page by default
+            set max [$itk_component(viewselector) choices size]
+            for {set i 0} {$i < $max} {incr i} {
+                set first [$itk_component(viewselector) choices get -label $i]
+                if {$first != ""} {
+                    set page [$itk_component(viewselector) choices get -value $i]
+                    set char [string index $page 0]
+                    if {$char != "@" && $char != "-"} {
+                        $itk_component(resultpages) current $page
+                        $itk_component(viewselector) value $first
+                        set _lastlabel $first
+                        break
+                    }
+                }
+            }
+        }
+        clear {
+            if {$eventData(what) ne "all"} {
+                # delete this result from all viewers
+                array set params $eventData(what)
+                foreach label [array names _label2page] {
+                    set page $_label2page($label)
+                    $page.rviewer clear $params(simnum)
+                }
+            }
+
+            if {[$_resultset size] == 0} {
+                # reset the size of the controls area
+                set ht [winfo height $itk_component(results)]
+                set cntlht [$itk_component(resultselector) size -controlarea]
+                set frac [expr {double($cntlht)/$ht}]
+                $itk_component(results) fraction end $frac
+
+                foreach label [array names _label2page] {
+                    set page $_label2page($label)
+                    destroy $page.rviewer
+                }
+                $itk_component(resultpages) delete -all
+                set _pages 0
+
+                $itk_component(viewselector) value ""
+                $itk_component(viewselector) choices delete 0 end
+                catch {unset _label2page}
+                catch {unset _label2item}
+                catch {unset _label2desc}
+                set _plotlist ""
+
+                $itk_component(viewselector) choices insert end --- "---"
+                $itk_component(viewselector) choices insert end \
+                    @download [Rappture::filexfer::label download]
+                set _lastlabel ""
+            }
+
+            # fix Simulate button state
+            reset
+        }
+        default {
+            error "don't know how to handle op \"$eventData(op)\""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+#
+# Used internally to change the size of the result set area whenever
+# a new control appears.  Adjusts the size available for the result
+# set up to some maximum.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_fixSize {} {
+    set ht [winfo height $itk_component(results)]
+    if {$ht <= 1} { set ht [winfo reqheight $itk_component(results)] }
+    set cntlht [$itk_component(resultselector) size -controlarea]
+    set frac [expr {double($cntlht)/$ht}]
+
+    if {$frac < 0.4} {
+        $itk_component(results) fraction end $frac
+    }
+    _fixSimControl
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _simState <boolean> ?<message>? ?<settings>?
+#
+# Used internally to change the "Simulation" button on or off.
+# If the <boolean> is on, then any <message> and <settings> are
+# displayed as well.  If the <boolean> is off, then only display
+# the message. The <message> is a note to the user about
+# what will be simulated, and the <settings> are a list of
+# tool parameter settings of the form {path1 val1 path2 val2 ...}.
+# When these are in place, the next Simulate operation will use
+# these settings.  This helps fill in missing data values.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_simState {state args} {
+    if {$state} {
+        $itk_interior.simol configure \
+            -background $itk_option(-simcontrolactiveoutline)
+        configure -simcontrolcolor $itk_option(-simcontrolactivebackground)
+
+        $itk_component(abort) configure -state disabled
+        $itk_component(simulate) configure -state normal \
+            -command [itcl::code $this simulate]
+
+        #
+        # If there's a special message, then put it up next to the button.
+        #
+        set mesg [lindex $args 0]
+        if {"" != $mesg} {
+            $itk_component(simstatus) configure -state normal
+            $itk_component(simstatus) delete 1.0 end
+            $itk_component(simstatus) insert end $mesg
+
+            #
+            # If there are any settings, then install them in the
+            # "Simulate" button.  Also, pop them up as a tooltip
+            # for the message.
+            #
+            set settings [lindex $args 1]
+            if {[llength $settings] > 0} {
+                $itk_component(simulate) configure \
+                    -command [eval itcl::code $this simulate $settings]
+
+                set details ""
+                foreach {path val} $settings {
+                    set str [string trim [$_tool xml get $path.about.label]]
+                    if {"" == $str} {
+                        set str [$_tool xml element -as id $path]
+                    }
+                    append details "$str = $val\n"
+                }
+                set details [string trim $details]
+
+                Rappture::Tooltip::for $itk_component(simstatus) $details
+                $itk_component(simstatus) insert end " "
+                $itk_component(simstatus) insert end "(details...)" popup
+            }
+            $itk_component(simstatus) configure -state disabled
+        }
+    } else {
+        if {"" != $itk_option(-simcontrolbackground)} {
+            set simcbg $itk_option(-simcontrolbackground)
+        } else {
+            set simcbg $itk_option(-background)
+        }
+        $itk_interior.simol configure \
+            -background $itk_option(-simcontroloutline)
+        configure -simcontrolcolor $simcbg
+
+        if {$_uq_active == 0} {
+            $itk_component(simulate) configure -state disabled
+        }
+        $itk_component(abort) configure -state normal
+
+        $itk_component(simstatus) configure -state normal
+        $itk_component(simstatus) delete 1.0 end
+        set mesg [lindex $args 0]
+        if {"" != $mesg} {
+            $itk_component(simstatus) insert end $mesg
+        }
+        $itk_component(simstatus) configure -state disabled
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _simOutput <message>
+#
+# Invoked automatically whenever output comes in while running the
+# tool.  Extracts any =RAPPTURE-???=> messages from the output and
+# sends the output to the display.  For example, any
+# =RAPPTURE-PROGRESS=> message pops up the progress meter and updates
+# it to show the latest progress message.  This is useful for
+# long-running tools, to let the user know how much longer the
+# simulation will take.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_simOutput {message} {
+    #
+    # Scan through and pick out any =RAPPTURE-PROGRESS=> messages first.
+    #
+
+    while {[regexp -indices \
+               {=RAPPTURE-PROGRESS=> *([-+]?[0-9]+) +([^\n]*)(\n|$)} $message \
+                match percent mesg]} {
+
+        foreach {i0 i1} $percent break
+        set percent [string range $message $i0 $i1]
+
+        foreach {i0 i1} $mesg break
+        set mesg [string range $message $i0 $i1]
+
+        pack $itk_component(progress) -fill x -padx 10 -pady 10
+        $itk_component(progress) settings -percent $percent -message $mesg
+
+        foreach {i0 i1} $match break
+        set message [string replace $message $i0 $i1]
+    }
+
+    #
+    # Now handle SUBMIT-PROGRESS
+    #
+    while {[regexp -indices {=SUBMIT-PROGRESS=> aborted=([0-9]+) finished=([0-9]+) failed=([0-9]+) executing=([0-9]+)\
+        waiting=([0-9]+) setting_up=([0-9]+) setup=([0-9]+) %done=([0-9.]+) timestamp=([0-9.]+)(\n|$)} $message \
+        match aborted finished failed executing waiting setting_up setup percent ts mesg]} {
+
+        set mesg ""
+        foreach {i0 i1} $percent break
+        set percent [string range $message $i0 $i1]
+        foreach {i0 i1} $failed break
+        set failed [string range $message $i0 $i1]
+        foreach {i0 i1} $match break
+        set message [string replace $message $i0 $i1]
+
+        if {$failed != 0} {set mesg "$failed jobs failed!"}
+        if {$percent >= 100} { set mesg "Jobs finished.  Analyzing results..."}
+
+        pack $itk_component(progress) -fill x -padx 10 -pady 10
+        $itk_component(progress) settings -percent $percent -message $mesg
+    }
+
+    #
+    # Break up the remaining lines according to =RAPPTURE-ERROR=> messages.
+    # Show errors in a special color.
+    #
+    $itk_component(runinfo) configure -state normal
+
+    while {[regexp -indices \
+               {=RAPPTURE-([a-zA-Z]+)=>([^\n]*)(\n|$)} $message \
+                match type mesg]} {
+
+        foreach {i0 i1} $match break
+        set first [string range $message 0 [expr {$i0-1}]]
+        if {[string length $first] > 0} {
+            $itk_component(runinfo) insert end $first
+            $itk_component(runinfo) insert end \n
+        }
+
+        foreach {t0 t1} $type break
+        set type [string range $message $t0 $t1]
+        foreach {m0 m1} $mesg break
+        set mesg [string range $message $m0 $m1]
+        if {[string length $mesg] > 0 && $type != "RUN"} {
+            $itk_component(runinfo) insert end $mesg $type
+            $itk_component(runinfo) insert end \n $type
+        }
+
+        set message [string range $message [expr {$i1+1}] end]
+    }
+
+    if {[string length $message] > 0} {
+        $itk_component(runinfo) insert end $message
+        if {[$itk_component(runinfo) get end-2char] != "\n"} {
+            $itk_component(runinfo) insert end "\n"
+        }
+        $itk_component(runinfo) see end
+    }
+    $itk_component(runinfo) configure -state disabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _resultTooltip
+#
+# Used internally to build the tooltip string displayed for the
+# result selector.  If the current page has an associated description,
+# then it is displayed beneath the result.
+#
+# Returns the string for the tooltip.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_resultTooltip {} {
+    set tip ""
+    set name [$itk_component(viewselector) value]
+    if {[info exists _label2desc($name)] &&
+         [string length $_label2desc($name)] > 0} {
+        append tip "$_label2desc($name)\n\n"
+    }
+    if {[array size _label2page] > 1} {
+        append tip "Use this control to display other output results."
+    }
+    return $tip
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSimControl
+#
+# Used internally to add or remove the simulation control at the
+# top of the analysis area.  This is controlled by the -simcontrol
+# option.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_fixSimControl {} {
+    switch -- $itk_option(-simcontrol) {
+        on {
+            pack $itk_interior.simol -fill x -before $itk_interior.nb
+        }
+        off {
+            pack forget $itk_interior.simol
+        }
+        auto {
+            #
+            # If we have two or more radiodials, then there is a
+            # chance of encountering a combination of parameters
+            # with no data, requiring simulation.
+            #
+            if {[$itk_component(resultselector) size -controls] >= 2} {
+                pack $itk_interior.simol -fill x -before $itk_interior.nb
+            } else {
+                pack forget $itk_interior.simol
+            }
+        }
+        default {
+            error "bad value \"$itk_option(-simcontrol)\": should be on, off, auto"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixNotebook
+#
+# Used internally to switch the active notebook page
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_fixNotebook {} {
+    switch -- $itk_option(-notebookpage) {
+        about {
+            $itk_component(notebook) current about
+        }
+        simulate {
+            $itk_component(notebook) current simulate
+        }
+        analyze {
+            $itk_component(notebook) current analyze
+        }
+        default {
+            error "bad value \"$itk_option(-notebookpage)\": should be about, simulate, analyze"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _isPdbTrajectory <data>
+#
+# Used internally to determine whether pdb or lammps data represents a
+# trajectory rather than a single frame
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_isPdbTrajectory {data} {
+    if { [llength $data] == 0 } {
+        return 0
+    }
+    set nModels 0
+    foreach line $data {
+        if { [string match "MODEL*" $line] }  {
+            incr nModels
+            if { $nModels > 1 } {
+                # Stop if more than one model found.  No need to count them
+                # all.
+                return 1
+            }
+        }
+    }
+    return 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _isLammpsTrajectory <data>
+#
+# Used internally to determine whether pdb or lammps data represents a
+# trajectory rather than a single frame
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_isLammpsTrajectory { data } {
+    if { [llength $data] == 0 } {
+        return 0
+    }
+    set nModels 0
+    foreach line $data {
+        if { [regexp {^[\t ]*ITEM:[ \t]+TIMESTEP} $line] } {
+            incr nModels
+            if { $nModels > 1 } {
+                # Stop if more than one model found.  No need to count them
+                # all.
+                return 1
+            }
+        }
+    }
+    return 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _pdbToSequence <xmlobj> ?<path>?
+#
+# If the molecule element is a trajectory, delete the original
+# and create a sequence of individual molecules.
+# Used internally to detect any molecule output elements that contain
+# trajectory data.  Trajectories will be converted into sequences of
+# individual molecules.  All other elements will be unaffected. Scans
+# the entire xml tree if a starting path is not specified.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_pdbToSequence {xmlobj path id child data} {
+
+    set seqLabel [$xmlobj get ${child}.about.label]
+    set descr    [$xmlobj get ${child}.about.description]
+    set formula  [$xmlobj get ${child}.components.molecule.formula]
+    $xmlobj remove $child
+
+    set sequence  $path.sequence($id)
+    $xmlobj put ${sequence}.about.label $seqLabel
+    $xmlobj put ${sequence}.about.description $descr
+    $xmlobj put ${sequence}.index.label "Frame"
+
+    set frameNum 0
+    set numLines [llength $data]
+    for { set i 0 } { $i < $numLines } { incr i } {
+        set line [lindex $data $i]
+        set line [string trim $line]
+        set contents {}
+        if { [string match "MODEL*" $line] } {
+            # Save the contents until we get an ENDMDL record.
+            for {} { $i < $numLines } { incr i } {
+                set line [lindex $data $i]
+                set line [string trim $line]
+                if { $line == "" } {
+                    continue;           # Skip blank lines.
+                }
+                if { [string match "ENDMDL*" $line] } {
+                    break;
+                }
+                append contents $line\n
+            }
+            set frame ${sequence}.element($frameNum)
+            $xmlobj put ${frame}.index $frameNum
+
+            set molecule ${frame}.structure.components.molecule
+            $xmlobj put ${molecule}.pdb $contents
+            $xmlobj put ${molecule}.formula $formula
+            incr frameNum
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _lammpsToSequence <xmlobj> ?<path>?
+#
+# If the molecule element is a trajectory, delete the original
+# and create a sequence of individual molecules.
+# Used internally to detect any molecule output elements that contain
+# trajectory data.  Trajectories will be converted into sequences of
+# individual molecules.  All other elements will be unaffected. Scans
+# the entire xml tree if a starting path is not specified.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_lammpsToSequence {xmlobj path id child data} {
+
+    set seqLabel [$xmlobj get ${child}.about.label]
+    set descr    [$xmlobj get ${child}.about.description]
+    set typemap  [$xmlobj get ${child}.components.molecule.lammpstypemap]
+    $xmlobj remove $child
+
+    set sequence ${path}.sequence($id)
+    $xmlobj put ${sequence}.about.label $seqLabel
+    $xmlobj put ${sequence}.about.description $descr
+    $xmlobj put ${sequence}.index.label "Frame"
+
+    set frameNum 0
+    set frameContents ""
+    set inModel 0
+    foreach line $data {
+        set line [string trim $line]
+        if { $line == "" } {
+            continue;                   # Skip blank lines
+        }
+        if {[regexp {^[\t ]*ITEM:[ \t]+ATOMS} $line] } {
+            if { $inModel && $frameContents != "" } {
+                set frame ${sequence}.element($frameNum)
+                $xmlobj put ${frame}.index $frameNum
+
+                set molecule ${frame}.structure.components.molecule
+                $xmlobj put ${molecule}.lammps $frameContents
+                $xmlobj put ${molecule}.lammpstypemap $typemap
+
+                incr frameNum
+                set frameContents ""
+            }
+            set inModel 1
+        } elseif { [scan $line "%d %d %f %f %f" a b c d e] == 5 } {
+            if { !$inModel } {
+                puts stderr "found \"$line\" without previous \"ITEM: ATOMS\""
+                set inModel 1
+            }
+            append frameContents $line\n
+        }
+    }
+    if { $frameContents != "" } {
+        set frame ${sequence}.element($frameNum)
+        $xmlobj put ${frame}.index $frameNum
+
+        set molecule ${frame}.structure.components.molecule
+        $xmlobj put ${molecule}.lammps $frameContents
+        $xmlobj put ${molecule}.lammpstypemap $typemap
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _trajToSequence <xmlobj> ?<path>?
+#
+#       Check for PDB and LAMMPS trajectories in molecule data and rewrite
+#       the individual models as a sequence of molecules.  Used internally
+#       to detect any molecule output elements that contain trajectory data.
+#       Trajectories will be converted into sequences of individual molecules.
+#       All other elements will be unaffected. Scans the entire xml tree if a
+#       starting path is not specified.
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Analyzer::_trajToSequence {xmlobj {path ""}} {
+    # Remove leading dot from path, if present.
+    if { [string index $path 0] == "." } {
+        set path [string range $path 1 end]
+    }
+    # Otherwise check each child.
+    foreach child [$xmlobj children $path] {
+        set current ${path}.${child}
+        if { [string match "structure*" $child] } {
+            set isTraj [$xmlobj get ${current}.components.molecule.trajectory]
+            if { $isTraj == "" || !$isTraj } {
+                continue;               # Not a trajectory.
+            }
+            # Look for trajectory if molecule element found.  Check both pdb
+            # data and lammps data.
+            set type [$xmlobj element -as type $current]
+            set id   [$xmlobj element -as id $current]
+            set pdbdata    [$xmlobj get ${current}.components.molecule.pdb]
+            set lammpsdata [$xmlobj get ${current}.components.molecule.lammps]
+            if { $pdbdata != "" && $lammpsdata != "" } {
+                puts stderr \
+                    "found both <pdb> and <lammps> elements: picking pdb"
+            }
+            set pdbdata [split $pdbdata \n]
+            set lammpsdata [split $lammpsdata \n]
+            if { [_isPdbTrajectory $pdbdata] } {
+                _pdbToSequence $xmlobj $path $id $current $pdbdata
+            } elseif { [_isLammpsTrajectory $lammpsdata] } {
+                _lammpsToSequence $xmlobj $path $id $current $lammpsdata
+            }
+            continue
+        }
+        if 0 {
+        # Recurse over all child nodes.
+        _trajToSequence $xmlobj $current
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -simcontrol
+#
+# Controls whether or not the Simulate button is showing.  In some
+# cases, it is not needed.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Analyzer::simcontrol {
+    _fixSimControl
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -notebookpage
+#
+# Controls which page of the analyzer notebook is shown. It is
+# particularly needed when using rerun, when you don't want to
+# "simulate -ifneeded" because an actual simulation might be
+# kicked off due to differences between tool.xml and run.xml
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Analyzer::notebookpage {
+    _fixNotebook
+}
+
+itcl::body Rappture::Analyzer::PostMenu { m } {
+    if { [FindSimsetsForApp $_appName] == 0 } {
+        $m entryconfigure "Load Simulations" -state disable
+        $m entryconfigure "Publish Simulations" -state disable
+        $m entryconfigure "Delete Simulations" -state disabled
+    } else {
+        $m entryconfigure "Load Simulations" -state normal
+        $m entryconfigure "Publish Simulations" -state normal
+        $m entryconfigure "Delete Simulations" -state normal
+    }
+    if { [$_resultset size] == 0 } {
+        $m entryconfigure "Save Simulations" -state disabled
+    } else {
+        $m entryconfigure "Save Simulations" -state normal
+    }
+}
+        
+#
+# Build Help menu 
+#
+itcl::body Rappture::Analyzer::buildMenu { m url appName } {
+    menu $m \
+        -tearoff 0 \
+        -postcommand [itcl::code $this PostMenu $m]
+    if { $appName == "" || $url == "" } {
+        set state disabled
+    } else {
+        set state normal
+    }
+    set webcmd Rappture::filexfer::webpage
+    set group "app-$_appName"
+    $m add command -label "About this tool" \
+        -command [list $webcmd "$url/tools/$appName"] \
+        -state $state
+    $m add command -label "Questions?" \
+        -command [list $webcmd "$url/resources/$_appName/questions"] \
+        -state $state
+    $m add command -label "Tickets" -state $state \
+        -command [list $webcmd "$url/feedback/report_problems?group=$group"]
+    $m add command -label "Wish List" -state disabled
+    $m add separator
+    $m add command -label "Save Simulations" \
+        -command [itcl::code $this SelectSimsetNameAndSave] \
+        -state $state
+    $m add command -label "Load Simulations" \
+        -command [itcl::code $this SelectSimsetForLoading] \
+        -state $state
+    $m add command -label "Delete Simulations" \
+        -command [itcl::code $this SelectSimsetForDeletion] \
+        -state $state
+    $m add command -label "Publish Simulations" \
+        -command [itcl::code $this SelectSimsetToPublish] \
+        -state $state
+    return $m
+}
+
+itcl::body Rappture::Analyzer::BuildSimulationTable { top } {
+    # All weirdness is due to the Resultset object.
+
+    # First create nodes for each simulation.  The node label is the
+    # simulation number (such as #1, #2, etc).  
+    eval $_tree delete 0
+    set labels "selected simnum"
+    foreach {name index} [$_resultset diff values simnum] {
+        set node [$_tree insert 0 -label $name]
+        $_tree set $node "simnum" $name
+        set index2name($index) $name
+        
+    }
+    # Next fill in the xmlobj associated with each simulation.  We assume
+    # that the order is the the same as the simulation number.
+    set index 0
+    foreach {xmlobj dummy} [$_resultset diff values xmlobj]  {
+        set node [$_tree findchild 0 $index2name($index)]
+        set runfile [$xmlobj get output.filename]
+        set version [$xmlobj get output.version]
+        $_tree set $node \
+            "selected" 1 "xmlobj" $xmlobj "runfile" $runfile "version" $version
+        incr index
+    }
+    # Finally for each different input, for each simulation add the
+    # label and value for the specific input.
+    foreach name [$_resultset diff names] {
+        # Ignore non-input names.
+        if { $name == "xmlobj" || $name == "simnum" } {
+            continue
+        }
+        foreach node [$_tree children 0] {
+            set xmlobj [$_tree get $node xmlobj]
+            set label [$xmlobj get $name.about.label]
+            set value [$xmlobj get $name.current]
+            if { [$_tree exists $node $label] } {
+                puts stderr "This can't be: $label already exists in $node"
+            }
+            if { [lsearch $labels $label] < 0 } {
+                lappend labels $label
+            }
+            $_tree set $node $label $value
+        }
+    }
+    frame $top
+    set tv $top.tv
+    blt::treeview $top.tv -tree $_tree \
+        -height 1i \
+        -xscrollcommand [list $top.xs set] \
+        -yscrollcommand [list $top.ys set] \
+        -font "Arial 10"
+    scrollbar $top.xs -orient horizontal -command "$tv xview"
+    scrollbar $top.ys -orient vertical -command "$tv yview"
+        
+    eval $tv column insert end $labels
+    $tv style checkbox checkbox -showvalue no 
+    $tv column configure simnum -title "Simulation" 
+    $tv column configure selected -title "Save" -style checkbox \
+        -width .5i -edit yes 
+    $tv column configure treeView -hide yes 
+    blt::table $top \
+        0,0 $top.tv -fill both \
+        0,1 $top.ys -fill y \
+        1,0 $top.xs -fill x
+    blt::table configure $top r* c* -resize none
+    blt::table configure $top r0 c0 -resize both
+}
+
+itcl::body Rappture::Analyzer::CleanName { name } {
+    regsub -all {/} $name {_} name
+    return $name
+}
+
+#
+# Get the results and display them in a table.
+#
+# Use the table to omit specific results
+# Use file chooser to save to specific 
+itcl::body Rappture::Analyzer::SelectSimsetNameAndSave {} {
+    if { [EditSimset] } {
+        set appDir [file normalize ~/data/saved/$_appName]
+        file mkdir $appDir 
+        set fileName [file join $appDir [CleanName $_saved(Name).sav]]
+        if { [file exists $fileName] } {
+            if { ![OverwriteSaveFile] } {
+                return
+            }
+        }
+        WriteSimsetFile $_appName $fileName 0
+    }
+}
+
+#
+# Get the results and display them in a table.
+#
+# Use the table to omit specific results
+# Use file chooser to save to specific 
+itcl::body Rappture::Analyzer::SelectSimsetToPublish {} {
+    if { [GetSimset "publish"] } {
+        global env
+        set shareDir [file join /data/tools/shared $_appName $env(USER)]
+        if { [catch {
+            file mkdir $shareDir
+            file attributes $shareDir -permissions o+r,g+rw
+        } errs] != 0 } {
+            puts stderr errs=$errs
+            return 
+        }
+        set fileName [file join $shareDir [CleanName $_saved(Name).sav]]
+        if { [file exists $fileName] } {
+            if { ![OverwriteSaveFile] } {
+                return
+            }
+        }
+        WriteSimsetFile $_appName $fileName 1
+    }
+}
+
+#
+# Checks editor widgets to see if the name and description have been
+# set.  If this is so it enables the save button in the editor.
+#
+itcl::body Rappture::Analyzer::CheckSimsetDetails {} {
+    set popup .savesimset
+    if { ![winfo exists $popup] } {
+        return
+    }
+    set inner [$popup component inner]
+    set name [string trim [$inner.name get]]
+    set desc [string trim [$inner.desc get 0.0 end]]
+    $inner.controls.save configure -state disabled
+    if { $name == "" || $desc == "" } {
+        return
+    }
+    $inner.controls.save configure -state normal
+}
+
+#
+# Gathers all the information from the simset editor into the _saved array
+#
+itcl::body Rappture::Analyzer::SaveSimulations {} {
+    set popup .savesimset
+    if { ![winfo exists $popup] } {
+        return
+    }
+    set inner [$popup component inner]
+    array unset _saved
+    set name [string trim [$inner.name get]]
+    set desc [string trim [$inner.desc get 0.0 end]]
+    set _saved(Application) $_appName
+    set _saved(Revision) $_revision
+    set _saved(Date) [clock format [clock seconds]]
+    set _saved(Name) $name
+    set _saved(Description) $desc
+    set files {}
+    foreach node [$_tree children root] {
+        set fileName [$_tree get $node runfile]
+        lappend files $fileName
+    }
+    set _saved(Files) $files
+    set _done 1 
+}
+
+itcl::body Rappture::Analyzer::Cancel {} {
+    set _done 0
+}
+
+itcl::body Rappture::Analyzer::Ok {} {
+    set popup .selectsimset
+    if { ![winfo exists $popup] } {
+        return
+    }
+    set inner [$popup component inner]
+    set tv $inner.tv
+    if { ![$tv selection present] } {
+        return
+    }
+    set node [$tv curselection]
+    array unset _saved
+    array set _saved [$_tree get $node]
+    set root [file root $_saved(FileName)]
+    set files {}
+    foreach file $_saved(Files) {
+        if { [file pathtype $file] == "relative" } {
+            set file [file join $root $file]
+        }
+        lappend files $file
+    }
+    set _saved(Files) $files
+    set _done 1 
+}
+
+#
+# WriteSimsetFile --
+#
+#       Write the .sav file and the runfiles in the ~/data/saved/$_appName
+#       directory.  The subdirectory where the runfiles are written is
+#       the root of the .save file name.
+#
+itcl::body Rappture::Analyzer::WriteSimsetFile { appName fileName publish } {
+    # The runfiles directory is the root of the filename.  For example, if
+    # the simset file is /path/to/myName.sav, the runfile directory is
+    # /path/to/myName
+    set root [file root $fileName]
+    if { [file exists $root] } {
+        file delete -force $root
+    }
+    if { [catch {
+        file mkdir $root
+        set f [open $fileName "w"]
+        puts $f [list "Name"        $_saved(Name)]
+        puts $f [list "Description" $_saved(Description)]
+        puts $f [list "Date"        $_saved(Date)]
+        global env
+        puts $f [list "Creator"     $env(USER)]
+        puts $f [list "Application" $_saved(Application)]
+        puts $f [list "Revision"    $_saved(Revision)]
+        set runfiles ""
+        foreach file $_saved(Files) {
+            set tail [file tail $file]
+            set dest [file join $root $tail]
+            file copy -force $file $dest
+            if { $publish } {
+                file attributes $dest -permissions o+r,g+rw
+            }
+            lappend runfiles $tail
+        }
+        puts $f [list "Files" $runfiles]
+        close $f
+        if { $publish } {
+            file attributes $fileName -permissions o+r,g+rw
+        }
+    } errs] != 0 } {
+        global errorInfo
+        puts stderr "errs=$errs errorInfo=$errorInfo"
+    }
+}
+
+itcl::body Rappture::Analyzer::EditSimset {} {
+    set popup .savesimset
+    if { [winfo exists $popup] } {
+        destroy $popup
+    }
+    # Create a popup for the print dialog
+    Rappture::Balloon $popup -title "Save set of simulations..."
+    set inner [$popup component inner]
+    
+    label $inner.name_l -text "Simulation Set Name"
+    entry $inner.name -background white
+    label $inner.desc_l -text "Simulation Set Description" -height 5 
+    text $inner.desc  -background white
+    label $inner.select_l -text "Selected Simulations"
+    BuildSimulationTable $inner.select
+    frame $inner.controls
+    bind $inner.desc <KeyPress> [itcl::code $this CheckSimsetDetails]
+    bind $inner.name <KeyPress> [itcl::code $this CheckSimsetDetails]
+    bind $inner.desc <Motion> [itcl::code $this CheckSimsetDetails]
+    bind $inner.name <Motion> [itcl::code $this CheckSimsetDetails]
+    button $inner.controls.cancel -text "Cancel" \
+        -command [itcl::code $this Cancel]
+    button $inner.controls.save -text "Save" \
+        -command [itcl::code $this SaveSimulations]
+    blt::table $inner.controls \
+        0,0 $inner.controls.cancel \
+        0,1 $inner.controls.save
+    
+    blt::table $inner \
+        0,0 $inner.name_l -anchor ne \
+        0,1 $inner.name -fill x \
+        1,0 $inner.desc_l -anchor ne \
+        1,1 $inner.desc -fill both \
+        2,0 $inner.select_l -anchor ne \
+        2,1 $inner.select -fill both \
+        3,1 $inner.controls  -fill x
+    blt::table configure $inner r1 -height 1i
+    blt::table configure $inner r2 -pad 20
+    $popup configure \
+        -deactivatecommand [itcl::code $this Cancel] 
+
+    set inner [$popup component inner]
+    if {[$_resultset size] > 1} {
+        blt::table $inner \
+            2,0 $inner.select_l -anchor ne \
+            2,1 $inner.select -fill both 
+    } else {
+        blt::table forget $inner.select $inner.select_l
+    }
+    CheckSimsetDetails
+    update
+    # Activate the popup and call for the output.
+    $popup activate $itk_component(help) below
+    Cancel
+    tkwait variable [itcl::scope _done]
+    set doSave $_done
+    $popup deactivate 
+    return $doSave
+}
+
+
+itcl::body Rappture::Analyzer::ReadSimsetFile { fileName } {
+    if { [catch {
+        set f [open $fileName "r"]
+        set contents [read $f]
+        close $f
+        array set _saved $contents
+    } errs] != 0 } {
+        return 0
+    }
+    if { ![info exists _saved(Files)] } {
+        return 0
+    }
+    set root [file root $fileName]
+    foreach file $_saved(Files) {
+        if { [file pathtype $file] == "relative" } {
+            set file [file join $root $file]
+        }
+        if { ![file readable $file] } {
+            puts stderr "runfile $file isn't readable"
+            return 0
+        }
+    }
+    set _saved(FileName) $fileName
+    return 1
+}
+
+#
+# Run files can be either explicitly named with their absolute or
+# relative path.  If the path is relative it is assumed the parent
+# directory is relative to the simset file.
+#
+#   /my/path/to/myfile.sav 
+#   /my/path/to/myfile/runfiles...
+#
+itcl::body Rappture::Analyzer::LoadSimulations { files } {
+    set loadobjs {}
+    set root [file root $_saved(FileName)]
+    foreach runfile $files {
+        if { [file pathtype $runfile] == "relative" } {
+            set runfile [file join $root $runfile]
+        }
+        if { ![file exists $runfile] } {
+            puts stderr "can't find run: \"$runfile\""
+            continue
+        }
+        set status [catch {Rappture::library $runfile} result]
+        lappend loadobjs $result
+    }
+    clear
+    foreach runobj $loadobjs {
+        load $runobj
+    }
+    configure -notebookpage analyze
+    global win
+    $win.pager current analyzer
+   if 0 {
+    # Load the inputs for the very last run
+    global tool
+    $tool load $runobj
+}
+}
+
+#
+# Delete selected simulation set.
+#
+itcl::body Rappture::Analyzer::SelectSimsetForDeletion {} {
+    if { [FindSimsetsForApp $_appName] == 0 } {
+        return
+    }
+    if { [GetSimset "delete"] } {
+        set root [file root $_saved(FileName)]
+        file delete -force $root
+        file delete -force $_saved(FileName) 
+    }
+}
+
+#
+# Find all .sav files for an application and load them into the tree.
+#
+itcl::body Rappture::Analyzer::FindSimsetsForApp { appName } {
+    $_tree delete 0
+    foreach fileName [glob -nocomplain ~/data/saved/$appName/*.sav] {
+        if { [ReadSimsetFile $fileName] } {
+            if { $_revision > 0 && $_revision != $_saved(Revision) } {
+                continue;               # Revision doesn't match.
+            }
+            $_tree insert 0 -label $_saved(Name) -data [array get _saved] 
+        }
+    }
+    return [$_tree degree 0]
+}
+
+#
+# Create dialog to select a simset from the currently available simsets.
+#
+itcl::body Rappture::Analyzer::GetSimset { name } {
+    set popup .selectsimset
+    if { [winfo exists $popup] } {
+        destroy $popup
+    }
+    # Create a popup for the print dialog
+    set title [string tolower $name]
+    Rappture::Balloon $popup -title "Select set of simulations to $title..."
+    set inner [$popup component inner]
+    
+    set tv $inner.tv
+    blt::treeview $inner.tv -tree $_tree \
+        -height 1i \
+        -width 5i \
+        -xscrollcommand [list $inner.xs set] \
+        -yscrollcommand [list $inner.ys set] \
+        -font "Arial 10"
+    scrollbar $inner.xs -orient horizontal -command "$tv xview"
+    scrollbar $inner.ys -orient vertical -command "$tv yview"
+    frame $inner.controls
+        
+    $tv column insert end "Name" "Description" "Date" "Creator"
+    $tv column configure treeView -hide yes 
+    blt::table $inner \
+        0,0 $inner.tv -fill both \
+        0,1 $inner.ys -fill y \
+        1,0 $inner.xs -fill x
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r0 c0 -resize both
+
+    button $inner.controls.cancel -text "Cancel" \
+        -command [itcl::code $this Cancel]
+    set title [string totitle $name]
+    button $inner.controls.save -text $title \
+        -command [itcl::code $this Ok]
+    blt::table $inner.controls \
+        0,0 $inner.controls.cancel \
+        0,1 $inner.controls.save
+    
+    blt::table $inner \
+        0,0 $inner.tv -fill both \
+        0,1 $inner.ys -fill y \
+        1,0 $inner.xs -fill x \
+        3,0 $inner.controls  -fill x -cspan 2
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r0 c0 -resize both
+    blt::table configure $inner r2 -height 0.1i
+    
+    $popup configure \
+        -deactivatecommand [itcl::code $this Cancel] 
+
+    $tv selection set [$_tree firstchild 0]
+    set inner [$popup component inner]
+    update
+    # Activate the popup and call for the output.
+    $popup activate $itk_component(help) below
+    Cancel
+    tkwait variable [itcl::scope _done]
+    set result $_done
+    $popup deactivate 
+    return $result
+}
+
+itcl::body Rappture::Analyzer::SelectSimsetForLoading {} {
+    if { [FindSimsetsForApp $_appName] == 0 } {
+        return
+    }
+    if { [GetSimset "load"] } {
+        LoadSimulations $_saved(Files)
+    }
+}
+
+itcl::body Rappture::Analyzer::reload { fileName } {
+    if { [catch {
+        ReadSimsetFile $fileName
+        if { [llength $_saved(Files)] > 0 } {
+            #StartSplashScreen
+            LoadSimulations $_saved(Files)
+            #HideSplashScreen
+        }
+    } errs] != 0 } {
+        puts stderr "can't load \"$fileName\": errs=$errs"
+    }
+}
+
+itcl::body Rappture::Analyzer::BuildQuestionDialog { popup } {
+    toplevel $popup -background grey92 -bd 2 -relief raised
+    wm withdraw $popup
+    wm overrideredirect $popup true
+    set inner $popup
+    # Create the print dialog widget and add it to the the balloon popup.
+    label $popup.title -text " " \
+	-padx 10 -pady 10 \
+	-background grey92 
+    button $popup.yes -text "Yes" \
+	-highlightthickness 0 \
+	-bd 2  \
+	-command [itcl::code $this Save] 
+    button $popup.no -text "No" \
+	-highlightthickness 0 \
+	-bd 2 \
+	-command [itcl::code $this Cancel] 
+    blt::table $popup \
+	0,0 $popup.title -cspan 2  -fill x -pady 4 \
+	1,0 $popup.yes -width { 0 1i .6i } -pady 4 \
+	1,1 $popup.no -width { 0 1i .6i }  -pady 4 
+    blt::table configure $popup  r2 -height 0.125i
+}
+
+itcl::body Rappture::Analyzer::Save {} {
+    set _done 1
+}
+
+itcl::body Rappture::Analyzer::OverwriteSaveFile {} {
+    set popup .question
+    if { ![winfo exists $popup] } {
+	BuildQuestionDialog $popup 
+    }
+    set text "Simulation set \"$_saved(Name)\" already exists. Overwrite?"
+    $popup.title configure -text $text 
+    $popup.yes configure -text "Save" 
+    $popup.no configure -text "Cancel" 
+    set main [winfo toplevel $itk_component(help)]
+    set pw [winfo reqwidth $popup]
+    set ph [winfo reqheight $popup]
+    set sw [winfo reqwidth $main]
+    set sh [winfo reqheight $main]
+    set rootx [winfo rootx $main]
+    set rooty [winfo rooty $main]
+    set x [expr $rootx + (($sw - $pw) / 2)]
+    set y [expr $rooty + (($sh - $ph) / 2)]
+    wm geometry $popup +$x+$y
+    wm deiconify $popup 
+    update
+    grab $popup 
+    # Activate the popup and call for the output.
+    Cancel
+    tkwait variable [itcl::scope _done]
+    set doSave $_done
+    grab release $popup 
+    destroy $popup 
+    return $doSave
+}
Index: /tags/1.6.0/gui/scripts/animicon.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/animicon.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/animicon.tcl	(revision 6168)
@@ -0,0 +1,137 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: animicon - an animated icon
+#
+#  This widget displays an animated icon.  It acts like a label, but
+#  it allows you to start/stop the animation.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Animicon.delay 100 widgetDefault
+option add *Animicon.textBackground white widgetDefault
+
+itcl::class Rappture::Animicon {
+    inherit itk::Widget
+
+    itk_option define -delay delay Delay 100
+    itk_option define -images images Images ""
+
+    constructor {args} { # defined below }
+
+    public method start {}
+    public method stop {}
+    public method isrunning {}
+
+    protected method _next {}
+    protected method _loadFrames {}
+
+    private variable _frames      ;# array of frames indexed from 0
+    private variable _pos 0       ;# current position in anim sequence
+    private variable _afterid ""  ;# after ID for next animation step
+}
+
+itk::usual Animicon {
+    keep -cursor -background
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Animicon::constructor {args} {
+    itk_component add icon {
+        label $itk_interior.icon
+    }
+    pack $itk_component(icon) -expand yes -fill both
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: start
+#
+# Clients use this to start the animation.  If the animation is
+# already running, it does nothing.  Otherwise, it starts the
+# animation.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Animicon::start {} {
+    if {![isrunning]} {
+        _next
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: stop
+#
+# Clients use this to stop the animation.  If the animation is
+# not running, it does nothing.  Otherwise, it stops the
+# animation on the current frame.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Animicon::stop {} {
+    if {[isrunning]} {
+        after cancel $_afterid
+        set _afterid ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: isrunning
+#
+# Returns true if the animation is currently running, and false
+# otherwise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Animicon::isrunning {} {
+    return [expr {"" != $_afterid}]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _next
+#
+# Used internally to load the next animation frame.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Animicon::_next {} {
+    $itk_component(icon) configure -image $_frames($_pos)
+    if {[incr _pos] >= [array size _frames]} {
+        set _pos 0
+    }
+    set _afterid [after $itk_option(-delay) [itcl::code $this _next]]
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -images
+#
+# Sets a sequence of icon names that will be loaded for an animation.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Animicon::images {
+    set restart [isrunning]
+    stop
+
+    array unset _frames
+    if {[llength $itk_option(-images)] >= 1} {
+        set w 0
+        set h 0
+        set i 0
+        foreach name $itk_option(-images) {
+            set imh [Rappture::icon $name]
+            if {"" == $imh} {
+                error "image not found: $name"
+            }
+            set _frames($i) $imh
+            if {[image width $imh] > $w} { set w [image width $imh] }
+            if {[image height $imh] > $h} { set h [image height $imh] }
+            incr i
+        }
+    }
+
+    $itk_component(icon) configure -width $w -height $h -image $_frames(0)
+    set _pos 0
+
+    if {$restart} {
+        start
+    }
+}
Index: /tags/1.6.0/gui/scripts/animover.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/animover.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/animover.tcl	(revision 6168)
@@ -0,0 +1,223 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: animover - animated move
+#
+#  This widget shows an animation of movement, to show that something
+#  is happening when files are being copied or remote machines are
+#  being queried.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Animover.width 200 widgetDefault
+option add *Animover.direction both widgetDefault
+option add *Animover.delta 5 widgetDefault
+option add *Animover.delay 50 widgetDefault
+
+itcl::class Rappture::Animover {
+    inherit itk::Widget
+
+    itk_option define -leftimage leftImage LeftImage ""
+    itk_option define -rightimage rightImage RightImage ""
+    itk_option define -middleimage middleImage MiddleImage ""
+    itk_option define -direction direction Direction ""
+    itk_option define -delta delta Delta ""
+    itk_option define -delay delay Delay 0
+    itk_option define -running running Running "disabled"
+
+    constructor {args} { # defined below }
+
+    protected method _redraw {}
+    protected variable _x0 0   ;# min value for middle image
+    protected variable _x1 0   ;# max value for middle image
+    protected variable _x  -1  ;# current position between _x0/_x1
+    protected variable _dx 0   ;# delta for x when anim is running
+
+    protected method _animate {}
+
+    #
+    # Load various images used as backgrounds for the map
+    #
+    set dir [file dirname [info script]]
+    private common images
+    set images(bgl) [image create photo -file \
+        [file join $dir images bgl.gif]]
+    set images(bgr) [image create photo -file \
+        [file join $dir images bgr.gif]]
+}
+
+itk::usual Animover {
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Animover::constructor {args} {
+    itk_component add area {
+        canvas $itk_interior.area \
+            -height [expr {[image height $images(bgl)]+4}]
+    } {
+        usual
+        keep -width
+    }
+    pack $itk_component(area) -expand yes -fill both
+    bind $itk_component(area) <Configure> [itcl::code $this _redraw]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Called automatically whenever the widget changes size to redraw
+# all elements within it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Animover::_redraw {} {
+    set c $itk_component(area)
+    $c delete all
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set hmid [expr {$h/2}]
+
+    $c create rectangle 2 0 [expr {$w-2}] $h -outline "" -fill #E5CFA1
+    $c create image 0 $hmid -anchor w -image $images(bgl)
+    $c create image $w $hmid -anchor e -image $images(bgr)
+
+    $c create line 0 2 $w 2 -width 2 -fill black
+    $c create line 0 [expr {$h-2}] $w [expr {$h-2}] -width 2 -fill black
+    $c create line 20 $hmid [expr {$w-20}] $hmid -width 2 -fill #82765B
+
+    set midw 0
+    if {$itk_option(-middleimage) != ""} {
+        set midw [expr {[image width $itk_option(-middleimage)]/2}]
+    }
+
+    if {$itk_option(-leftimage) != ""} {
+        $c create image 4 $hmid -anchor w \
+            -image $itk_option(-leftimage)
+        set _x0 [expr {4+[image width $itk_option(-leftimage)]+$midw}]
+    } else {
+        set _x0 [expr {4+$midw}]
+    }
+    if {$_x0 < 0} { set _x0 0 }
+
+    if {$itk_option(-rightimage) != ""} {
+        $c create image [expr {$w-4}] $hmid -anchor e \
+            -image $itk_option(-rightimage)
+        set _x1 [expr {$w-4-[image width $itk_option(-rightimage)]-$midw}]
+    } else {
+        set _x1 [expr {$w-4-$midw}]
+    }
+
+    if {$_x >= 0} {
+        if {$_x < $_x0} {
+            set _x $_x0
+        } elseif {$_x > $_x1} {
+            set _x $_x1
+        }
+        if {$itk_option(-middleimage) != ""} {
+            $c create image $_x $hmid -anchor c \
+                -image $itk_option(-middleimage) -tags middle
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _animate
+#
+# Called periodically when an animation is in progress to update
+# the position of the middle element.  If the element reaches the
+# left or right side, then it starts over on the other side or
+# going the other direction.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Animover::_animate {} {
+    if {$_x >= 0 && $_x0 < $_x1} {
+        if {$_x+$_dx <= $_x0} {
+            if {$itk_option(-direction) == "left"} {
+                set _x $_x1
+            } elseif {$itk_option(-direction) == "both"} {
+                set _dx [expr {-$_dx}]
+                set _x [expr {$_x+$_dx}]
+            }
+        } elseif {$_x+$_dx >= $_x1} {
+            if {$itk_option(-direction) == "right"} {
+                set _x $_x0
+            } elseif {$itk_option(-direction) == "both"} {
+                set _dx [expr {-$_dx}]
+                set _x [expr {$_x+$_dx}]
+            }
+        } else {
+            set _x [expr {$_x+$_dx}]
+        }
+
+        set c $itk_component(area)
+        set h [winfo height $c]
+        set hmid [expr {$h/2}]
+
+        if {[$c find withtag middle] == ""} {
+            $c create image $_x $hmid -anchor c \
+                -image $itk_option(-middleimage) -tags middle
+        } else {
+            $c coords middle $_x $hmid
+        }
+    }
+    if {$_x >= 0} {
+        after $itk_option(-delay) [itcl::code $this _animate]
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -running
+# Used to start/stop the animation.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Animover::running {
+    switch -- $itk_option(-running) {
+        normal {
+            if {$_x < 0} {
+                set _x $_x0
+                after idle [itcl::code $this _animate]
+            }
+        }
+        disabled {
+            if {$_x > 0} {
+                set _x -1
+                after cancel [itcl::code $this _animate]
+                $itk_component(area) delete middle
+            }
+        }
+        default {
+            error "bad value \"$itk_option(-running)\": should be normal or disabled"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -direction
+# Used to control the direction of movement for the animation.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Animover::direction {
+    switch -- $itk_option(-direction) {
+        left  { set _dx [expr {-1*$itk_option(-delta)}] }
+        right { set _dx $itk_option(-delta) }
+        both  { set _dx $itk_option(-delta) }
+        default {
+            error "bad value \"$itk_option(-direction)\": should be left, right, or both"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -delta
+# Used to control the amount of movement for the animation.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Animover::delta {
+    if {$itk_option(-delta) < 1} {
+        error "bad value \"$itk_option(-delta)\": should be int >= 1"
+    }
+}
Index: /tags/1.6.0/gui/scripts/balloon.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/balloon.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/balloon.tcl	(revision 6168)
@@ -0,0 +1,678 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: Balloon - toplevel popup window, like a cartoon balloon
+#
+#  This widget is used as a container for pop-up panels in Rappture.
+#  If shape extensions are supported, then the window is drawn as
+#  a cartoon balloon.  Otherwise, it is a raised panel, with a little
+#  line connecting it to the widget that brought it up.  When active,
+#  the panel has a global grab and focus, so the user must interact
+#  with it or dismiss it.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+namespace eval Rappture { # forward declaration }
+
+option add *Balloon.dismissButton on widgetDefault
+option add *Balloon.padX 4 widgetDefault
+option add *Balloon.padY 4 widgetDefault
+option add *Balloon.titleBackground #999999 widgetDefault
+option add *Balloon.titleForeground white widgetDefault
+option add *Balloon.relief raised widgetDefault
+option add *Balloon.stemLength 16 widgetDefault
+
+itcl::class Rappture::Balloon {
+    inherit itk::Toplevel
+
+    itk_option define -background background Background ""
+    itk_option define -deactivatecommand deactivateCommand DeactivateCommand ""
+    itk_option define -dismissbutton dismissButton DismissButton "on"
+    itk_option define -padx padX Pad 0
+    itk_option define -pady padY Pad 0
+    itk_option define -title title Title ""
+    itk_option define -titlebackground titleBackground Background ""
+    itk_option define -titleforeground titleForeground Foreground ""
+    itk_option define -stemlength stemLength StemLength 20
+
+    constructor {args} { # defined below }
+
+    public method activate {where placement}
+    public method deactivate {}
+
+    protected method _createStems {}
+    protected method _place {where placement w h sw sh}
+
+    protected variable _stems   ;# windows for cartoon balloon stems
+    protected variable _masks   ;# masks for cartoon balloon stems
+    protected variable _fills   ;# lines for cartoon balloon stems
+
+    public proc outside {widget x y}
+
+    bind RapptureBalloon <ButtonPress> \
+        {if {[Rappture::Balloon::outside %W %X %Y]} {%W deactivate}}
+}
+
+itk::usual Balloon {
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Balloon::constructor {args} {
+    wm overrideredirect $itk_component(hull) yes
+    wm withdraw $itk_component(hull)
+    component hull configure -borderwidth 1 -relief solid -padx 0 -pady 0
+
+    itk_component add border {
+        frame $itk_interior.border -borderwidth 2
+    } {
+        usual
+        keep -relief
+    }
+    pack $itk_component(border) -expand yes -fill both
+
+    itk_component add titlebar {
+        frame $itk_component(border).tbar
+    } {
+        usual
+        rename -background -titlebackground titleBackground Background
+    }
+
+    itk_component add title {
+        label $itk_component(titlebar).title -width 1 -anchor w
+    } {
+        usual
+        rename -background -titlebackground titleBackground Background
+        rename -foreground -titleforeground titleForeground Foreground
+        rename -highlightbackground -titlebackground titleBackground Background
+        rename -text -title title Title
+    }
+    pack $itk_component(title) -side left -expand yes -fill both -padx 2
+
+    itk_component add dismiss {
+        button $itk_component(titlebar).dismiss \
+            -bitmap [Rappture::icon dismiss] \
+            -relief flat -overrelief raised -command "
+              Rappture::Tooltip::cue hide
+              [list $itk_component(hull) deactivate]
+            "
+    } {
+        usual
+        rename -background -titlebackground titleBackground Background
+        rename -foreground -titleforeground titleForeground Foreground
+        rename -highlightbackground -titlebackground titleBackground Background
+    }
+
+    itk_component add inner {
+        frame $itk_component(border).inner
+    }
+    pack $itk_component(inner) -expand yes -fill both
+
+    # add bindings to release the grab
+    set btags [bindtags $itk_component(hull)]
+    bindtags $itk_component(hull) [linsert $btags 1 RapptureBalloon]
+
+    eval itk_initialize $args
+
+    _createStems
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _place <where> <place> <pw> <ph> <screenw> <screenh>
+#
+# Called by activate. Returns the exact location information given
+# the parameters.  If the window will not fit on the screen with the
+# requested placement, will loop through all possible placements to
+# find the best alternative.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Balloon::_place {where place pw ph screenw screenh} {
+    # pw and ph are requested balloon window size
+
+    # set placement preference order
+    switch $place {
+        left {set plist {left above below right}}
+        right {set plist {right above below left}}
+        above {set plist {above below right left}}
+        below {set plist {below above right left}}
+    }
+
+    set ph_orig $ph
+    set pw_orig $pw
+
+    foreach placement $plist {
+        set pw $pw_orig
+        set ph $ph_orig
+        if {[winfo exists $where]} {
+            # location of top-left corner of root window
+            set rx [winfo rootx $where]
+            set ry [winfo rooty $where]
+
+            # size of widget we want to popup over
+            set width  [winfo width $where]
+            set height [winfo height $where]
+
+            # x and y will be location for popup
+            set x [expr {$rx + $width/2}]
+            set y [expr {$ry + $height/2}]
+
+            switch -- $placement {
+                left { set x [expr {$rx + 5}] }
+                right { set x [expr {$rx + $width - 5}] }
+                above { set y [expr {$ry + 5}] }
+                below { set y [expr {$ry + $height - 5}] }
+            }
+        } elseif {[regexp {^@([0-9]+),([0-9]+)$} $where match x y]} {
+            # got x and y
+        } else {
+            error "bad location \"$where\": should be widget or @x,y"
+        }
+
+        # compute stem image size
+        set s $_stems($placement)
+        set sw [image width $_fills($placement)]
+        set sh [image height $_fills($placement)]
+        set offscreen 0
+
+        switch -- $placement {
+            left {
+                set sx [expr {$x-$sw+3}]
+                set sy [expr {$y-$sh/2}]
+                set px [expr {$sx-$pw+3}]
+                set py [expr {$y-$ph/2}]
+
+                # make sure that the panel doesn't go off-screen
+                if {$py < 0} {
+                    incr offscreen [expr -$py]
+                    set py 0
+                }
+                if {$py+$ph > $screenh} {
+                    incr offscreen [expr {$py + $ph - $screenh}]
+                    set py [expr {$screenh - $ph}]
+                }
+                if {$px < 0} {
+                    incr offscreen [expr -$px]
+                    set pw [expr {$pw + $px}]
+                    set px 0
+                }
+            }
+            right {
+                set sx $x
+                set sy [expr {$y-$sh/2}]
+                set px [expr {$x+$sw-3}]
+                set py [expr {$y-$ph/2}]
+
+                # make sure that the panel doesn't go off-screen
+                if {$py < 0} {
+                    incr offscreen [expr -$py]
+                    set py 0
+                }
+                if {$py+$ph > $screenh} {
+                    incr offscreen [expr {$py + $ph - $screenh}]
+                    set py [expr {$screenh-$ph}]
+                }
+                if {$px+$pw > $screenw} {
+                    incr offscreen [expr {$px + $pw - $screenw}]
+                    set pw [expr {$screenw-$px}]
+                }
+            }
+            above {
+                set sx [expr {$x-$sw/2}]
+                set sy [expr {$y-$sh+3}]
+                set px [expr {$x-$pw/2}]
+                set py [expr {$sy-$ph+3}]
+
+                # make sure that the panel doesn't go off-screen
+                if {$px < 0} {
+                    incr offscreen [expr -$px]
+                    set px 0
+                }
+                if {$px+$pw > $screenw} {
+                    incr offscreen [expr {$px + $pw - $screenw}]
+                    set px [expr {$screenw-$pw}]
+                }
+                if {$py < 0} {
+                    incr offscreen [expr -$py]
+                    set ph [expr {$ph+$py}]
+                    set py 0
+                }
+            }
+            below {
+                set sx [expr {$x-$sw/2}]
+                set sy $y
+                set px [expr {$x-$pw/2}]
+                set py [expr {$y+$sh-3}]
+
+                # make sure that the panel doesn't go off-screen
+                if {$px < 0} {
+                    incr offscreen [expr -$px]
+                    set px 0
+                }
+                if {$px+$pw > $screenw} {
+                    incr offscreen [expr {$px + $pw - $screenw}]
+                    set px [expr {$screenw-$pw}]
+                }
+                if {$py+$ph > $screenh} {
+                    incr offscreen [expr {$py + $py - $screenh}]
+                    set ph [expr {$screenh-$py}]
+                }
+            }
+        }
+        set res($placement) [list $placement $offscreen $pw $ph $px $py $sx $sy]
+        if {$offscreen == 0} {
+            return "$placement $pw $ph $px $py $sx $sy"
+        }
+    }
+
+    # In the unlikely event that we arrived here, it is because no
+    # placement allowed the entire balloon window to be displayed.
+    # Loop through the results and return the best-case placement.
+    set _min 10000
+    foreach pl $plist {
+        set offscreen [lindex $res($pl) 1]
+        if {$offscreen < $_min} {
+            set _min $offscreen
+            set _min_pl $pl
+        }
+    }
+    return "$_min_pl [lrange $res($_min_pl) 2 end]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: activate <where> <placement>
+#
+# Clients use this to pop up this balloon panel pointing to the
+# <where> location, which should be a widget name or @X,Y.  The
+# <placement> indicates whether the panel should be left, right,
+# above, or below the <where> coordinate. Plecement is considered
+# a suggestion and may be changed to fit the popup in the screen.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Balloon::activate {where placement} {
+    if {![info exists _stems($placement)]} {
+        error "bad placement \"$placement\": should be [join [lsort [array names _stems]] {, }]"
+    }
+
+    # if the panel is already up, take it down
+    deactivate
+
+    set p $itk_component(hull)
+    set screenw [winfo screenwidth $p]
+    set screenh [winfo screenheight $p]
+
+    set pw [winfo reqwidth $p]
+    if {$pw > $screenw} { set pw [expr {$screenw-10}] }
+    set ph [winfo reqheight $p]
+    if {$ph > $screenh} { set ph [expr {$screenh-10}] }
+
+    foreach {place pw ph px py sx sy} [_place $where $placement $pw $ph $screenw $screenh] break
+
+    set s $_stems($place)
+    if {[info exists _masks($place)]} {
+        shape set $s -bound photo $_masks($place)
+    }
+
+    if { $pw < 1 || $ph < 1 }  {
+        # I really don't know why this is happenning.  I believe this occurs
+        # when in a work space (i.e the main window is smaller than the root
+        # window). So for now, better to place the balloon window somewhere
+        # than to fail with a bad geometry.
+        wm geometry $p +$px+$py
+    } else {
+        wm geometry $p ${pw}x${ph}+$px+$py
+    }
+    wm deiconify $p
+    raise $p
+
+    wm geometry $s +$sx+$sy
+    wm deiconify $s
+    raise $s
+
+    # grab the mouse pointer
+    update
+    while {[catch {grab set $itk_component(hull)}]} {
+        after 100
+    }
+    focus $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: deactivate
+#
+# Clients use this to take down the balloon panel if it is on screen.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Balloon::deactivate {} {
+    if {[string length $itk_option(-deactivatecommand)] > 0} {
+        uplevel #0 $itk_option(-deactivatecommand)
+    }
+
+    grab release $itk_component(hull)
+    wm withdraw $itk_component(hull)
+    foreach dir {left right above below} {
+        wm withdraw $_stems($dir)
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _createStems
+#
+# Used internally to create the stems that connect a balloon panel
+# to its anchor point, in all four possible directions:  left, right,
+# above, and below.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Balloon::_createStems {} {
+    # destroy any existing stems
+    foreach dir [array names _stems] {
+        destroy $_stems($dir)
+        unset _stems($dir)
+    }
+    foreach dir [array names _masks] {
+        image delete $_masks($dir)
+        unset _masks($dir)
+    }
+    foreach dir [array names _fills] {
+        image delete $_fills($dir)
+        unset _fills($dir)
+    }
+
+    if {[catch {package require Shape}] == 0} {
+        #
+        # We have the Shape extension.  Use it to create nice
+        # looking (triangle-shaped) stems.
+        #
+        set s $itk_option(-stemlength)
+        foreach dir {left right above below} {
+            switch -- $dir {
+                left - right {
+                    set sw [expr {$s+2}]
+                    set sh $s
+                }
+                above - below {
+                    set sw $s
+                    set sh [expr {$s+2}]
+                }
+            }
+
+            set _stems($dir) [toplevel $itk_interior.s$dir -borderwidth 0]
+            label $_stems($dir).l \
+                -width $sw -height $sh -borderwidth 0
+            pack $_stems($dir).l -expand yes -fill both
+
+            wm withdraw $_stems($dir)
+            wm overrideredirect $_stems($dir) yes
+
+            #
+            # Draw the triangle part of the stem, with a black outline
+            # and light/dark highlights:
+            #
+            #     --------  ---       LEFT STEM
+            #    |..##    |  ^
+            #    |  ..##  |  |        . = light color
+            #    |    ..##|  | s      @ = dark color
+            #    |    @@##|  |        # = black
+            #    |  @@##  |  |
+            #    |@@##    |  v
+            #     --------  ---
+            #    |<------>|
+            #        s+2
+            #
+            set _masks($dir) [image create photo -width $sw -height $sh]
+            set _fills($dir) [image create photo -width $sw -height $sh]
+
+            set bg $itk_option(-background)
+            set light [Rappture::color::brightness $bg 0.4]
+            set dark [Rappture::color::brightness $bg -0.4]
+            set rgb [winfo rgb . $bg]
+            set flatbg [format "#%04x%04x%04x" [lindex $rgb 0] [lindex $rgb 1] [lindex $rgb 2]]
+            switch -- $itk_option(-relief) {
+                raised {
+                    set light [Rappture::color::brightness $bg 0.4]
+                    set dark [Rappture::color::brightness $bg -0.4]
+                    set bg $flatbg
+                }
+                flat - solid {
+                    set light $flatbg
+                    set dark $flatbg
+                    set bg $flatbg
+                }
+                sunken {
+                    set light [Rappture::color::brightness $bg -0.4]
+                    set dark [Rappture::color::brightness $bg 0.4]
+                    set bg $flatbg
+                }
+            }
+            set bg [format "#%04x%04x%04x" [lindex $rgb 0] [lindex $rgb 1] [lindex $rgb 2]]
+
+            $_fills($dir) put $bg -to 0 0 $sw $sh
+
+            switch -- $dir {
+              left {
+                set i 0
+                for {set j 0} {$j < $s/2} {incr j} {
+                    set ybtm [expr {$s-$j-1}]
+                    $_fills($dir) put $dark \
+                        -to $i [expr {$ybtm-1}] [expr {$i+2}] [expr {$ybtm+1}]
+                    $_fills($dir) put black \
+                        -to [expr {$i+2}] $ybtm [expr {$i+4}] [expr {$ybtm+1}]
+
+                    set ytop $j
+                    set ytoffs [expr {($j == $s/2-1) ? 1 : 2}]
+                    $_fills($dir) put $light \
+                        -to $i $ytop [expr {$i+2}] [expr {$ytop+$ytoffs}]
+                    $_fills($dir) put black \
+                        -to [expr {$i+2}] $ytop [expr {$i+4}] [expr {$ytop+1}]
+                    incr i 2
+                }
+                $_stems($dir).l configure -image $_fills($dir)
+
+                $_masks($dir) put black -to 0 0 $sw $sh
+                set i 0
+                for {set j 0} {$j < $s/2} {incr j} {
+                    for {set k [expr {$i+4}]} {$k < $s+2} {incr k} {
+                        $_masks($dir) transparency set $k $j yes
+                        $_masks($dir) transparency set $k [expr {$s-$j-1}] yes
+                    }
+                    incr i 2
+                }
+              }
+              right {
+                set i $sw
+                for {set j 0} {$j < $s/2} {incr j} {
+                    set ybtm [expr {$s-$j-1}]
+                    $_fills($dir) put $dark \
+                        -to [expr {$i-2}] [expr {$ybtm-1}] $i [expr {$ybtm+1}]
+                    $_fills($dir) put black \
+                        -to [expr {$i-4}] $ybtm [expr {$i-2}] [expr {$ybtm+1}]
+
+                    set ytop $j
+                    set ytoffs [expr {($j == $s/2-1) ? 1 : 2}]
+                    $_fills($dir) put $light \
+                        -to [expr {$i-2}] $ytop $i [expr {$ytop+$ytoffs}]
+                    $_fills($dir) put black \
+                        -to [expr {$i-4}] $ytop [expr {$i-2}] [expr {$ytop+1}]
+                    incr i -2
+                }
+                $_stems($dir).l configure -image $_fills($dir)
+
+                $_masks($dir) put black -to 0 0 $sw $sh
+                set i $sw
+                for {set j 0} {$j < $s/2} {incr j} {
+                    for {set k 0} {$k < $i-4} {incr k} {
+                        $_masks($dir) transparency set $k $j yes
+                        $_masks($dir) transparency set $k [expr {$s-$j-1}] yes
+                    }
+                    incr i -2
+                }
+              }
+              above {
+                set i 0
+                for {set j 0} {$j < $s/2} {incr j} {
+                    set xrhs [expr {$s-$j-1}]
+                    $_fills($dir) put $dark \
+                        -to [expr {$xrhs-1}] $i [expr {$xrhs+1}] [expr {$i+2}]
+                    $_fills($dir) put black \
+                        -to $xrhs [expr {$i+2}] [expr {$xrhs+1}] [expr {$i+4}]
+
+                    set xlhs $j
+                    set xloffs [expr {($j == $s/2-1) ? 1 : 2}]
+                    $_fills($dir) put $light \
+                        -to $xlhs $i [expr {$xlhs+$xloffs}] [expr {$i+2}]
+                    $_fills($dir) put black \
+                        -to $xlhs [expr {$i+2}] [expr {$xlhs+1}] [expr {$i+4}]
+                    incr i 2
+                }
+                $_stems($dir).l configure -image $_fills($dir)
+
+                $_masks($dir) put black -to 0 0 $sw $sh
+                set i 0
+                for {set j 0} {$j < $s/2} {incr j} {
+                    for {set k [expr {$i+4}]} {$k < $s+2} {incr k} {
+                        $_masks($dir) transparency set $j $k yes
+                        $_masks($dir) transparency set [expr {$s-$j-1}] $k yes
+                    }
+                    incr i 2
+                }
+              }
+              below {
+                set i $sh
+                for {set j 0} {$j < $s/2} {incr j} {
+                    set xrhs [expr {$s-$j-1}]
+                    $_fills($dir) put $dark \
+                        -to [expr {$xrhs-1}] [expr {$i-2}] [expr {$xrhs+1}] $i
+                    $_fills($dir) put black \
+                        -to $xrhs [expr {$i-4}] [expr {$xrhs+1}] [expr {$i-2}]
+
+                    set xlhs $j
+                    set xloffs [expr {($j == $s/2-1) ? 1 : 2}]
+                    $_fills($dir) put $light \
+                        -to $xlhs [expr {$i-2}] [expr {$xlhs+$xloffs}] $i
+                    $_fills($dir) put black \
+                        -to $xlhs [expr {$i-4}] [expr {$xlhs+1}] [expr {$i-2}]
+                    incr i -2
+                }
+                $_stems($dir).l configure -image $_fills($dir)
+
+                $_masks($dir) put black -to 0 0 $sw $sh
+                set i $sh
+                for {set j 0} {$j < $s/2} {incr j} {
+                    for {set k 0} {$k < $i-4} {incr k} {
+                        $_masks($dir) transparency set $j $k yes
+                        $_masks($dir) transparency set [expr {$s-$j-1}] $k yes
+                    }
+                    incr i -2
+                }
+              }
+            }
+        }
+    } else {
+        #
+        # No shape extension.  Do the best we can by creating a
+        # black line for all directions.
+        #
+        foreach {dir w h} [list \
+            left   $itk_option(-stemlength) 3 \
+            right  $itk_option(-stemlength) 3 \
+            above  3 $itk_option(-stemlength) \
+            below  3 $itk_option(-stemlength) \
+        ] {
+            set _stems($dir) [toplevel $itk_interior.s$dir \
+                -width $w -height $h \
+                -borderwidth 1 -relief solid -background black]
+            wm withdraw $_stems($dir)
+            wm overrideredirect $_stems($dir) yes
+
+            # create this for size, even though we don't really use it
+            set _fills($dir) [image create photo -width $w -height $h]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: outside <widget> <x> <y>
+#
+# Used internally to see if the click point <x>,<y> is outside of
+# this widget.  If so, the widget usually releases is grab and
+# deactivates.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Balloon::outside {widget x y} {
+    return [expr {$x < [winfo rootx $widget]
+             || $x > [winfo rootx $widget]+[winfo width $widget]
+             || $y < [winfo rooty $widget]
+             || $y > [winfo rooty $widget]+[winfo height $widget]}]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -background
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Balloon::background {
+    _createStems
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -stemlength
+#
+# Used internally to create the stems that connect a balloon panel
+# to its anchor point, in all four possible directions:  left, right,
+# above, and below.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Balloon::stemlength {
+    if {$itk_option(-stemlength) % 2 != 0} {
+        error "stem length should be an even number of pixels"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -dismissbutton
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Balloon::dismissbutton {
+    if {![string is boolean $itk_option(-dismissbutton)]} {
+        error "bad value \"$itk_option(-dismissbutton)\": should be on/off, 1/0, true/false, yes/no"
+    }
+    if {$itk_option(-dismissbutton)} {
+        pack $itk_component(titlebar) -before $itk_component(inner) \
+            -side top -fill x
+        pack $itk_component(dismiss) -side right -padx 4
+    } elseif {"" != $itk_option(-title)} {
+        pack $itk_component(titlebar) -before $itk_component(inner) \
+            -side top -fill x
+        pack forget $itk_component(dismiss)
+    } else {
+        pack forget $itk_component(titlebar)
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -padx
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Balloon::padx {
+    pack $itk_component(inner) -padx $itk_option(-padx)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -pady
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Balloon::pady {
+    pack $itk_component(inner) -pady $itk_option(-pady)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -title
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Balloon::title {
+    if {"" != $itk_option(-title) || $itk_option(-dismissbutton)} {
+        pack $itk_component(titlebar) -before $itk_component(inner) \
+            -side top -fill x
+        if {$itk_option(-dismissbutton)} {
+            pack $itk_component(dismiss) -side right -padx 4
+        } else {
+            pack forget $itk_component(dismiss)
+        }
+    } else {
+        pack forget $itk_component(titlebar)
+    }
+}
Index: /tags/1.6.0/gui/scripts/barchartresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/barchartresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/barchartresult.tcl	(revision 6168)
@@ -0,0 +1,1628 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: barchartresult - X/Y plot in a ResultSet
+#
+#  This widget is an X/Y plot, meant to view line graphs produced
+#  as output from the run of a Rappture tool.  Use the "add" and
+#  "delete" methods to control the dataobjs showing on the plot.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *BarchartResult.width 3i widgetDefault
+option add *BarchartResult.height 3i widgetDefault
+option add *BarchartResult.gridColor #d9d9d9 widgetDefault
+option add *BarchartResult.activeColor blue widgetDefault
+option add *BarchartResult.dimColor gray widgetDefault
+# Don't let the step size default to 1.0 (for barcharts)
+option add *BarchartResult*x.loose 0 widgetDefault
+option add *BarchartResult*y.loose 1 widgetDefault
+option add *BarchartResult*x.stepSize 0.0 widgetDefault
+option add *BarchartResult.controlBackground gray widgetDefault
+option add *BarchartResult.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+set autocolors {
+    #0000ff #ff0000 #00cc00
+    #cc00cc #ff9900 #cccc00
+    #000080 #800000 #006600
+    #660066 #996600 #666600
+}
+set autocolors {
+#0000cd
+#cd0000
+#00cd00
+#3a5fcd
+#cdcd00
+#cd1076
+#009acd
+#00c5cd
+#a2b5cd
+#7ac5cd
+#66cdaa
+#a2cd5a
+#cd9b9b
+#cdba96
+#cd3333
+#cd6600
+#cd8c95
+#cd00cd
+#9a32cd
+#6ca6cd
+#9ac0cd
+#9bcd9b
+#00cd66
+#cdc673
+#cdad00
+#cd5555
+#cd853f
+#cd7054
+#cd5b45
+#cd6889
+#cd69c9
+#551a8b
+}
+
+option add *BarchartResult.autoColors $autocolors widgetDefault
+option add *BarchartResult*Balloon*Entry.background white widgetDefault
+
+itcl::class Rappture::BarchartResult {
+    inherit itk::Widget
+
+    itk_option define -gridcolor gridColor GridColor ""
+    itk_option define -activecolor activeColor ActiveColor ""
+    itk_option define -dimcolor dimColor DimColor ""
+    itk_option define -autocolors autoColors AutoColors ""
+
+    constructor {args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method download {option args}
+
+    protected method _rebuild {}
+    protected method _resetLimits {}
+    protected method _zoom {option args}
+    protected method _hilite {state x y}
+    protected method _axis {option args}
+    protected method _getAxes {dataobj}
+    protected method _getLineMarkerOptions { style }
+    protected method _getTextMarkerOptions { style }
+    protected method _enterMarker { g name x y text }
+    protected method _leaveMarker { g name }
+    private method _formatTickLabel { w value }
+    private method ResetLegend {}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+    private variable _dlist ""     ;# list of dataobjs
+    private variable _dataobj2color  ;# maps dataobj => plotting color
+    private variable _dataobj2width  ;# maps dataobj => line width
+    private variable _dataobj2dashes ;# maps dataobj => BLT -dashes list
+    private variable _dataobj2raise  ;# maps dataobj => raise flag 0/1
+    private variable _dataobj2desc   ;# maps dataobj => description of data
+    private variable _elem2dataobj   ;# maps graph element => dataobj
+    private variable _label2axis   ;# maps axis label => axis ID
+    private variable _limits       ;# axis limits:  x-min, x-max, etc.
+    private variable _autoColorI 0 ;# index for next "-color auto"
+
+    private variable _hilite       ;# info for element currently highlighted
+    private variable _axis         ;# info for axis manipulations
+    private variable _axisPopup    ;# info for axis being edited in popup
+    common _downloadPopup          ;# download options from popup
+    private variable _markers
+    private variable _tickLabels
+}
+
+itk::usual BarchartResult {
+    keep -background -foreground -cursor -font
+}
+
+itk::usual Panedwindow {
+    keep -background -cursor
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this _rebuild]; list"
+
+    array set _downloadPopup {
+        format csv
+    }
+
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    itk_component add main {
+        Rappture::SidebarFrame $itk_interior.main
+    }
+    pack $itk_component(main) -expand yes -fill both
+    set f [$itk_component(main) component controls]
+
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this _zoom reset]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    pack $itk_component(reset) -padx 4 -pady 2 -anchor e
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    set f [$itk_component(main) component frame]
+    itk_component add plot {
+        blt::barchart $f.plot \
+            -highlightthickness 0 -plotpadx 0 -plotpady 0 \
+            -barmode aligned -rightmargin 1
+    } {
+        keep -background -foreground -cursor -font
+    }
+    pack $itk_component(plot) -expand yes -fill both
+
+    $itk_component(plot) pen configure activeBar \
+        -borderwidth 2 -foreground black -background red
+
+    # Add bindings so you can mouse over points to see values:
+    bind $itk_component(plot) <Motion> \
+        [itcl::code $this _hilite at %x %y]
+    bind $itk_component(plot) <Leave> \
+        [itcl::code $this _hilite off %x %y]
+
+    # Add support for editing axes:
+    Rappture::Balloon $itk_component(hull).axes -title "Axis Options"
+    set inner [$itk_component(hull).axes component inner]
+
+    label $inner.labell -text "Label:"
+    entry $inner.label -width 15 -highlightbackground $itk_option(-background)
+    grid $inner.labell -row 1 -column 0 -sticky e
+    grid $inner.label -row 1 -column 1 -sticky ew -pady 4
+
+    label $inner.minl -text "Minimum:"
+    entry $inner.min -width 15 -highlightbackground $itk_option(-background)
+    grid $inner.minl -row 2 -column 0 -sticky e
+    grid $inner.min -row 2 -column 1 -sticky ew -pady 4
+
+    label $inner.maxl -text "Maximum:"
+    entry $inner.max -width 15 -highlightbackground $itk_option(-background)
+    grid $inner.maxl -row 3 -column 0 -sticky e
+    grid $inner.max -row 3 -column 1 -sticky ew -pady 4
+
+    label $inner.formatl -text "Format:"
+    Rappture::Combobox $inner.format -width 15 -editable no
+    $inner.format choices insert end \
+        "%.6g"  "Auto"         \
+        "%.0f"  "X"          \
+        "%.1f"  "X.X"          \
+        "%.2f"  "X.XX"         \
+        "%.3f"  "X.XXX"        \
+        "%.6f"  "X.XXXXXX"     \
+        "%.1e"  "X.Xe+XX"      \
+        "%.2e"  "X.XXe+XX"     \
+        "%.3e"  "X.XXXe+XX"    \
+        "%.6e"  "X.XXXXXXe+XX"
+    grid $inner.formatl -row 4 -column 0 -sticky e
+    grid $inner.format -row 4 -column 1 -sticky ew -pady 4
+
+    label $inner.scalel -text "Scale:"
+    frame $inner.scales
+    radiobutton $inner.scales.linear -text "Linear" \
+        -variable [itcl::scope _axisPopup(scale)] -value "linear"
+    pack $inner.scales.linear -side left
+    radiobutton $inner.scales.log -text "Logarithmic" \
+        -variable [itcl::scope _axisPopup(scale)] -value "log"
+    pack $inner.scales.log -side left
+    grid $inner.scalel -row 5 -column 0 -sticky e
+    grid $inner.scales -row 5 -column 1 -sticky ew -pady 4
+
+    foreach axis {x y} {
+        set _axisPopup(format-$axis) "%.6g"
+    }
+    _axis scale x linear
+    _axis scale y linear
+
+    $itk_component(plot) legend configure -hide yes
+
+    #
+    # Add legend for editing hidden/elements:
+    #
+    set inner [$itk_component(main) insert end \
+        -title "Legend" \
+        -icon [Rappture::icon wrench]]
+    $inner configure -borderwidth 4
+
+    itk_component add legend {
+        Rappture::XyLegend $inner.legend $itk_component(plot)
+    }
+    pack $itk_component(legend) -expand yes -fill both
+    after idle [itcl::code $this ResetLegend]
+
+    # quick-and-dirty zoom functionality, for now...
+    Blt_ZoomStack $itk_component(plot)
+    eval itk_initialize $args
+
+    set _hilite(elem) ""
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::destructor {} {
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a dataobj to the plot.  The optional <settings>
+# are used to configure the plot.  Allowed settings are -color,
+# -brightness, -width, -linestyle and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::add {dataobj {settings ""}} {
+    array set params {
+        -color auto
+        -brightness 0
+        -width 1
+        -type "bar"
+        -raise 0
+        -linestyle solid
+        -description ""
+        -param ""
+    }
+    array set params $settings
+    # if the color is "auto", then select a color from -autocolors
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        if {$params(-color) == "autoreset"} {
+            set _autoColorI 0
+        }
+        set color [lindex $itk_option(-autocolors) $_autoColorI]
+        if {"" == $color} { set color black }
+        set params(-color) $color
+
+        # set up for next auto color
+        if {[incr _autoColorI] >= [llength $itk_option(-autocolors)]} {
+            set _autoColorI 0
+        }
+    }
+
+    # convert -linestyle to BLT -dashes
+    switch -- $params(-linestyle) {
+        dashed { set params(-linestyle) {4 4} }
+        dotted { set params(-linestyle) {2 4} }
+        default { set params(-linestyle) {} }
+    }
+
+    # if -brightness is set, then update the color
+    if {$params(-brightness) != 0} {
+        set params(-color) [Rappture::color::brightness \
+            $params(-color) $params(-brightness)]
+
+        set bg [$itk_component(plot) cget -plotbackground]
+        foreach {h s v} [Rappture::color::RGBtoHSV $bg] break
+        if {$v > 0.5} {
+            set params(-color) [Rappture::color::brightness_max \
+                $params(-color) 0.8]
+        } else {
+            set params(-color) [Rappture::color::brightness_min \
+                $params(-color) 0.2]
+        }
+    }
+
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+        set _dataobj2color($dataobj) $params(-color)
+        set _dataobj2width($dataobj) $params(-width)
+        set _dataobj2dashes($dataobj) $params(-linestyle)
+        set _dataobj2raise($dataobj) $params(-raise)
+        set _dataobj2desc($dataobj) $params(-description)
+
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::get {} {
+    # put the dataobj list in order according to -raise options
+    set dlist $_dlist
+    foreach obj $dlist {
+        if {[info exists _dataobj2raise($obj)] && $_dataobj2raise($obj)} {
+            set i [lsearch -exact $dlist $obj]
+            if {$i >= 0} {
+                set dlist [lreplace $clist $i $i]
+                lappend dlist $obj
+            }
+        }
+    }
+    return $dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::delete {args} {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+
+    # delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if {$pos >= 0} {
+            set _dlist [lreplace $_dlist $pos $pos]
+            catch {unset _dataobj2color($dataobj)}
+            catch {unset _dataobj2width($dataobj)}
+            catch {unset _dataobj2dashes($dataobj)}
+            catch {unset _dataobj2raise($dataobj)}
+            foreach elem [array names _elem2dataobj] {
+                if {$_elem2dataobj($elem) == $dataobj} {
+                    unset _elem2dataobj($elem)
+                }
+            }
+            set changed 1
+        }
+    }
+
+    # If anything changed, then rebuild the plot
+    if {$changed} {
+        $_dispatcher event -idle !rebuild
+    }
+
+    # Nothing left? then start over with auto colors
+    if {[llength $_dlist] == 0} {
+        set _autoColorI 0
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<dataobj1> <dataobj2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <dataobj> objects.  This
+# accounts for all dataobjs--even those not showing on the screen.
+# Because of this, the limits are appropriate for all dataobjs as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::scale {args} {
+    set allx [$itk_component(plot) x2axis use]
+    lappend allx x  ;# fix main x-axis too
+    foreach axis $allx {
+        _axis scale $axis linear
+    }
+
+    set ally [$itk_component(plot) y2axis use]
+    lappend ally y  ;# fix main y-axis too
+    foreach axis $ally {
+        _axis scale $axis linear
+    }
+
+    catch {unset _limits}
+    foreach dataobj $args {
+        # find the axes for this dataobj (e.g., {x y2})
+        foreach {map(x) map(y)} [_getAxes $dataobj] break
+
+        foreach axis {x y} {
+            # get defaults for both linear and log scales
+            foreach type {lin log} {
+                # store results -- ex: _limits(x2log-min)
+                set id $map($axis)$type
+                foreach {min max} [$dataobj limits $axis$type] break
+                if {"" != $min && "" != $max} {
+                    if {![info exists _limits($id-min)]} {
+                        set _limits($id-min) $min
+                        set _limits($id-max) $max
+                    } else {
+                        if {$min < $_limits($id-min)} {
+                            set _limits($id-min) $min
+                        }
+                        if {$max > $_limits($id-max)} {
+                            set _limits($id-max) $max
+                        }
+                    }
+                }
+            }
+
+            if {[$dataobj hints ${axis}scale] == "log"} {
+                _axis scale $map($axis) log
+            }
+        }
+    }
+    _resetLimits
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::download {option args} {
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            set popup .barchartresultdownload
+            if {![winfo exists .barchartresultdownload]} {
+                # if we haven't created the popup yet, do it now
+                Rappture::Balloon $popup \
+                    -title "[Rappture::filexfer::label downloadWord] as..."
+                set inner [$popup component inner]
+                label $inner.summary -text "" -anchor w
+                pack $inner.summary -side top
+                radiobutton $inner.csv -text "Data as Comma-Separated Values" \
+                    -variable Rappture::BarchartResult::_downloadPopup(format) \
+                    -value csv
+                pack $inner.csv -anchor w
+                radiobutton $inner.image -text "Image (PS/PDF/PNG/JPEG)" \
+                    -variable Rappture::BarchartResult::_downloadPopup(format) \
+                    -value image
+                pack $inner.image -anchor w
+                button $inner.go -text [Rappture::filexfer::label download] \
+                    -command [lindex $args 0]
+                pack $inner.go -pady 4
+            } else {
+                set inner [$popup component inner]
+            }
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            $inner.summary configure -text "[Rappture::filexfer::label downloadWord] $num in the following format:"
+            update idletasks ;# fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .barchartresultdownload
+            if {[winfo exists .barchartresultdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                csv {
+                    # reverse the objects so the selected data appears on top
+                    set dlist ""
+                    foreach dataobj [get] {
+                        set dlist [linsert $dlist 0 $dataobj]
+                    }
+
+                    # generate the comma-separated value data for these objects
+                    set csvdata ""
+                    foreach dataobj $dlist {
+                        append csvdata "[string repeat - 60]\n"
+                        append csvdata " [$dataobj hints label]\n"
+                        if {[info exists _dataobj2desc($dataobj)]
+                            && [llength [split $_dataobj2desc($dataobj) \n]] > 1} {
+                            set indent "for:"
+                            foreach line [split $_dataobj2desc($dataobj) \n] {
+                                append csvdata " $indent $line\n"
+                                set indent "    "
+                            }
+                        }
+                        append csvdata "[string repeat - 60]\n"
+
+                        append csvdata "[$dataobj hints xlabel], [$dataobj hints ylabel]\n"
+                        set first 1
+                        foreach comp [$dataobj components] {
+                            if {!$first} {
+                                # blank line between components
+                                append csvdata "\n"
+                            }
+                            set xv [$dataobj mesh $comp]
+                            set yv [$dataobj values $comp]
+                            foreach x [$xv range 0 end] y [$yv range 0 end] {
+                                append csvdata [format "%20.15g, %20.15g\n" $x $y]
+                            }
+                            set first 0
+                        }
+                        append csvdata "\n"
+                    }
+                    return [list .txt $csvdata]
+                }
+                image {
+                    set popup .barprintdownload
+                    if { ![winfo exists $popup] } {
+                        # Create a popup for the print dialog
+                        Rappture::Balloon $popup -title "Save as image..."
+                        set inner [$popup component inner]
+                        # Create the print dialog widget and add it to the
+                        # the balloon popup.
+                        Rappture::XyPrint $inner.print
+                        $popup configure \
+                            -deactivatecommand [list $inner.print reset]
+                        blt::table $inner 0,0 $inner.print -fill both
+                    }
+                    update
+                    # Activate the popup and call for the output.
+                    foreach { widget toolName plotName } $args break
+                    $popup activate $widget left
+                    set inner [$popup component inner]
+                    set output [$inner.print print $itk_component(plot) \
+                                    $toolName $plotName]
+                    $popup deactivate
+                    return $output
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::_rebuild {} {
+    set g $itk_component(plot)
+
+    # First clear out the widget
+    eval $g element delete [$g element names]
+    eval $g marker delete [$g marker names]
+    foreach axis [$g axis names] {
+        $g axis configure $axis -hide yes -checklimits no
+    }
+    # Presumably you want at least an X-axis and Y-axis displayed.
+    $g xaxis configure -hide no
+    $g yaxis configure -hide no
+    array unset _label2axis
+
+    #
+    # Scan through all objects and create a list of all axes.
+    # The first x-axis gets mapped to "x".  The second, to "x2".
+    # Beyond that, we must create new axes "x3", "x4", etc.
+    # We do the same for y.
+    #
+    set anum(x) 0
+    set anum(y) 0
+    foreach dataobj [get] {
+        foreach ax {x y} {
+            set label [$dataobj hints ${ax}label]
+            if {"" != $label} {
+                if {![info exists _label2axis($ax-$label)]} {
+                    switch [incr anum($ax)] {
+                        1 { set axis $ax }
+                        2 { set axis ${ax}2 }
+                        default {
+                            set axis $ax$anum($ax)
+                            catch {$g axis create $axis}
+                        }
+                    }
+                    $g axis configure $axis -title $label -hide no \
+                        -checklimits no
+                    set _label2axis($ax-$label) $axis
+
+                    # if this axis has a description, add it as a tooltip
+                    set desc [string trim [$dataobj hints ${ax}desc]]
+                    Rappture::Tooltip::text $g-$axis $desc
+                }
+            }
+        }
+    }
+
+    #
+    # All of the extra axes get mapped to the x2/y2 (top/right)
+    # position.
+    #
+    set all ""
+    foreach ax {x y} {
+        lappend all $ax
+
+        set extra ""
+        for {set i 2} {$i <= $anum($ax)} {incr i} {
+            lappend extra ${ax}$i
+        }
+        eval lappend all $extra
+        $g ${ax}2axis use $extra
+        if {$ax == "y"} {
+            $g configure -rightmargin [expr {($extra == "") ? 10 : 0}]
+        }
+    }
+
+    foreach axis $all {
+        set _axisPopup(format-$axis) "%.6g"
+
+        $g axis bind $axis <Enter> \
+            [itcl::code $this _axis hilite $axis on]
+        $g axis bind $axis <Leave> \
+            [itcl::code $this _axis hilite $axis off]
+        $g axis bind $axis <ButtonPress-1> \
+            [itcl::code $this _axis click $axis %x %y]
+        $g axis bind $axis <B1-Motion> \
+            [itcl::code $this _axis drag $axis %x %y]
+        $g axis bind $axis <ButtonRelease-1> \
+            [itcl::code $this _axis release $axis %x %y]
+        $g axis bind $axis <KeyPress> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+    }
+
+    #
+    # Plot all of the dataobjs.
+    #
+    set count 0
+    foreach dataobj $_dlist {
+        set label [$dataobj hints label]
+        foreach {mapx mapy} [_getAxes $dataobj] break
+
+        foreach comp [$dataobj components] {
+            set xv [$dataobj mesh $comp]
+            set yv [$dataobj values $comp]
+
+            if {[info exists _dataobj2color($dataobj)]} {
+                set color $_dataobj2color($dataobj)
+            } else {
+                set color [$dataobj hints color]
+                if {"" == $color} {
+                    set color black
+                }
+            }
+
+            if {[info exists _dataobj2width($dataobj)]} {
+                set lwidth $_dataobj2width($dataobj)
+            } else {
+                set lwidth 2
+            }
+
+            if {[info exists _dataobj2dashes($dataobj)]} {
+                set dashes $_dataobj2dashes($dataobj)
+            } else {
+                set dashes ""
+            }
+
+            if {([$xv length] <= 1) || ($lwidth == 0)} {
+                set sym square
+                set pixels 2
+            } else {
+                set sym ""
+                set pixels 6
+            }
+
+            set elem "elem[incr count]"
+            set _elem2dataobj($elem) $dataobj
+            set labels [$dataobj hints xticks]
+            if { $labels != "" } {
+                $g axis configure $mapx \
+                    -command [itcl::code $this _formatTickLabel] \
+                    -minorticks 0
+                set _tickLabels $labels
+            }
+            $g element create $elem -x $xv -y $yv \
+                -borderwidth $lwidth -label $label \
+                -background $color -foreground $color -mapx $mapx -mapy $mapy
+        }
+    }
+
+    # Fix duplicate labels by appending the simulation number
+    foreach label [array names label2elem] {
+        if { [llength $label2elem($label)] == 1 } {
+            continue
+        }
+        foreach elem $label2elem($label) {
+            set dataobj $_elem2dataobj($elem)
+            scan [$dataobj hints xmlobj] "::libraryObj%d" suffix
+            incr suffix
+            set elabel [format "%s \#%d" $label $suffix]
+            $g element configure $elem -label $elabel
+        }
+    }
+
+    foreach dataobj $_dlist {
+        set xmin -Inf
+        set ymin -Inf
+        set xmax Inf
+        set ymax Inf
+        #
+        # Create text/line markers for each *axis.marker specified.
+        #
+        foreach m [$dataobj xmarkers] {
+            foreach {at label style} $m break
+            set id [$g marker create line -coords [list $at $ymin $at $ymax]]
+            $g marker bind $id <Enter> \
+                [itcl::code $this _enterMarker $g x-$label $at $ymin $at]
+            $g marker bind $id <Leave> \
+                [itcl::code $this _leaveMarker $g x-$label]
+            set options [_getLineMarkerOptions $style]
+            if { $options != "" } {
+                eval $g marker configure $id $options
+            }
+            if { $label != "" } {
+                set id [$g marker create text -anchor nw \
+                            -text $label -coords [list $at $ymax]]
+                set options [_getTextMarkerOptions $style]
+                if { $options != "" } {
+                    eval $g marker configure $id $options
+                }
+            }
+        }
+        foreach m [$dataobj ymarkers] {
+            foreach {at label style} $m break
+            set id [$g marker create line -coords [list $xmin $at $xmax $at]]
+            $g marker bind $id <Enter> \
+                [itcl::code $this _enterMarker $g y-$label $at $xmin $at]
+            $g marker bind $id <Leave> \
+                [itcl::code $this _leaveMarker $g y-$label]
+            set options [_getLineMarkerOptions $style]
+            if { $options != "" } {
+                eval $g marker configure $id $options
+            }
+            if { $label != "" } {
+                set id [$g marker create text -anchor se \
+                        -text $label -coords [list $xmax $at]]
+                set options [_getTextMarkerOptions $style]
+                if { $options != "" } {
+                    eval $g marker configure $id $options
+                }
+            }
+        }
+    }
+    ResetLegend
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _resetLimits
+#
+# Used internally to apply automatic limits to the axes for the
+# current plot.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::_resetLimits {} {
+    set g $itk_component(plot)
+    foreach axis [$g axis names] {
+        $g axis configure $axis -min "" -max ""
+    }
+    return
+
+    #
+    # HACK ALERT!
+    # Use this code to fix up the y-axis limits for the BLT graph.
+    # The auto-limits don't always work well.  We want them to be
+    # set to a "nice" number slightly above or below the min/max
+    # limits.
+    #
+    foreach axis [$g axis names] {
+        if {[info exists _limits(${axis}lin-min)]} {
+            set log [$g axis cget $axis -logscale]
+            if {$log} {
+                set min $_limits(${axis}log-min)
+                if {$min == 0} { set min 1 }
+                set max $_limits(${axis}log-max)
+                if {$max == 0} { set max 1 }
+
+                if {$min == $max} {
+                    set logmin [expr {floor(log10(abs(0.9*$min)))}]
+                    set logmax [expr {ceil(log10(abs(1.1*$max)))}]
+                } else {
+                    set logmin [expr {floor(log10(abs($min)))}]
+                    set logmax [expr {ceil(log10(abs($max)))}]
+                    if {[string match y* $axis]} {
+                        # add a little padding
+                        set delta [expr {$logmax-$logmin}]
+                        if {$delta == 0} { set delta 1 }
+                        set logmin [expr {$logmin-0.05*$delta}]
+                        set logmax [expr {$logmax+0.05*$delta}]
+                    }
+                }
+                if {$logmin < -300} {
+                    set min 1e-300
+                } elseif {$logmin > 300} {
+                    set min 1e+300
+                } else {
+                    set min [expr {pow(10.0,$logmin)}]
+                }
+
+                if {$logmax < -300} {
+                    set max 1e-300
+                } elseif {$logmax > 300} {
+                    set max 1e+300
+                } else {
+                    set max [expr {pow(10.0,$logmax)}]
+                }
+            } else {
+                set min $_limits(${axis}lin-min)
+                set max $_limits(${axis}lin-max)
+
+                if {[string match y* $axis]} {
+                    # add a little padding
+                    set delta [expr {$max-$min}]
+                    set min [expr {$min-0.05*$delta}]
+                    set max [expr {$max+0.05*$delta}]
+                }
+            }
+            if {$min < $max} {
+                $g axis configure $axis -min $min -max $max
+            } else {
+                $g axis configure $axis -min "" -max ""
+            }
+        } else {
+            $g axis configure $axis -min "" -max ""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::_zoom {option args} {
+    switch -- $option {
+        reset {
+            _resetLimits
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _hilite <state> <x> <y>
+#
+# Called automatically when the user brushes one of the elements
+# on the plot.  Causes the element to highlight and a tooltip to
+# pop up with element info.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::_hilite {state x y} {
+    set g $itk_component(plot)
+    set elem ""
+
+    # Peek inside of Blt_ZoomStack package to see if we're currently in the
+    # middle of a zoom selection.
+    if {[info exists ::zoomInfo($g,corner)] && $::zoomInfo($g,corner) == "B" } {
+        return;
+    }
+    set tip ""
+    if {$state == "at"} {
+        set state 0
+        if {[$g element closest $x $y info -interpolate yes]} {
+            # for dealing with xy line plots
+            set elem $info(name)
+
+            # Some elements are generated dynamically and therefore will
+            # not have a dataobj associated with them.
+            set mapx [$g element cget $elem -mapx]
+            set mapy [$g element cget $elem -mapy]
+            if {[info exists _elem2dataobj($elem)]} {
+                foreach {mapx mapy} [_getAxes $_elem2dataobj($elem)] break
+            }
+
+            # search again for an exact point -- this time don't interpolate
+            set tip ""
+            array unset info
+            if {[$g element closest $x $y info -interpolate no]
+                && $info(name) == $elem} {
+
+                set x [$g axis transform $mapx $info(x)]
+                set y [$g axis transform $mapy $info(y)]
+
+                if {[info exists _elem2dataobj($elem)]} {
+                    set dataobj $_elem2dataobj($elem)
+                    set yunits [$dataobj hints yunits]
+                    set xunits [$dataobj hints xunits]
+                } else {
+                    set xunits ""
+                    set yunits ""
+                }
+                set tip [$g element cget $elem -label]
+                set yval [_axis format y dummy $info(y)]
+                append tip "\n$yval$yunits"
+                set xval [_axis format x dummy $info(x)]
+                append tip " @ $xval$xunits"
+                set tip [string trim $tip]
+            }
+            set state 1
+        } elseif {[$g element closest $x $y info -interpolate no]} {
+            # for dealing with xy scatter plot
+            set elem $info(name)
+
+            # Some elements are generated dynamically and therefore will
+            # not have a dataobj associated with them.
+            set mapx [$g element cget $elem -mapx]
+            set mapy [$g element cget $elem -mapy]
+            if {[info exists _elem2dataobj($elem)]} {
+                foreach {mapx mapy} [_getAxes $_elem2dataobj($elem)] break
+            }
+
+            set tip ""
+            set x [$g axis transform $mapx $info(x)]
+            set y [$g axis transform $mapy $info(y)]
+
+            if {[info exists _elem2dataobj($elem)]} {
+                set dataobj $_elem2dataobj($elem)
+                set yunits [$dataobj hints yunits]
+                set xunits [$dataobj hints xunits]
+            } else {
+                set xunits ""
+                set yunits ""
+            }
+            set tip [$g element cget $elem -label]
+            set yval [_axis format y dummy $info(y)]
+            append tip "\n$yval$yunits"
+            set xval [_axis format x dummy $info(x)]
+            append tip " @ $xval$xunits"
+            set tip [string trim $tip]
+            set state 1
+        }
+    } else {
+        set state 0
+    }
+
+    if { $state } {
+        #
+        # Highlight ON:
+        # - activate trace
+        # - multiple axes? dim other axes
+        # - pop up tooltip about data
+        #
+        if { [$g element exists $_hilite(elem)] && $_hilite(elem) != $elem } {
+            $g element deactivate $_hilite(elem)
+            $g crosshairs configure -hide yes
+            Rappture::Tooltip::tooltip cancel
+        }
+        set bg [$g element cget $elem -background]
+        set fg [$g element cget $elem -background]
+        foreach {h s v} [Rappture::color::RGBtoHSV $fg] break
+        if { $v > 0.2 } {
+            set v [expr $v - 0.2]
+        }
+        set fg [Rappture::color::HSVtoRGB $h $s $v]
+        $g pen configure activeBar -background $bg -foreground $fg
+        $g element activate $elem
+        set _hilite(elem) $elem
+
+        set mapx [$g element cget $elem -mapx]
+        set mapy [$g element cget $elem -mapy]
+        if {[info exists _elem2dataobj($elem)]} {
+            foreach {mapx mapy} [_getAxes $_elem2dataobj($elem)] break
+        }
+        set allx [$g x2axis use]
+        if {[llength $allx] > 0} {
+            lappend allx x  ;# fix main x-axis too
+            foreach axis $allx {
+                if {$axis == $mapx} {
+                    $g axis configure $axis -color $itk_option(-foreground) \
+                        -titlecolor $itk_option(-foreground)
+                } else {
+                    $g axis configure $axis -color $itk_option(-dimcolor) \
+                        -titlecolor $itk_option(-dimcolor)
+                }
+            }
+        }
+        set ally [$g y2axis use]
+        if {[llength $ally] > 0} {
+            lappend ally y  ;# fix main y-axis too
+            foreach axis $ally {
+                if {$axis == $mapy} {
+                    $g axis configure $axis -color $itk_option(-foreground) \
+                        -titlecolor $itk_option(-foreground)
+                } else {
+                    $g axis configure $axis -color $itk_option(-dimcolor) \
+                        -titlecolor $itk_option(-dimcolor)
+                }
+            }
+        }
+
+        if {"" != $tip} {
+            $g crosshairs configure -hide no -position @$x,$y
+
+            if {$x > 0.5*[winfo width $g]} {
+                if {$x < 4} {
+                    set tipx "-0"
+                } else {
+                    set tipx "-[expr {$x-4}]"  ;# move tooltip to the left
+                }
+            } else {
+                if {$x < -4} {
+                    set tipx "+0"
+                } else {
+                    set tipx "+[expr {$x+4}]"  ;# move tooltip to the right
+                }
+            }
+            if {$y > 0.5*[winfo height $g]} {
+                if {$y < 4} {
+                    set tipy "-0"
+                } else {
+                    set tipy "-[expr {$y-4}]"  ;# move tooltip to the top
+                }
+            } else {
+                if {$y < -4} {
+                    set tipy "+0"
+                } else {
+                    set tipy "+[expr {$y+4}]"  ;# move tooltip to the bottom
+                }
+            }
+            Rappture::Tooltip::text $g $tip
+            Rappture::Tooltip::tooltip show $g $tipx,$tipy
+        }
+    } else {
+        #
+        # Highlight OFF:
+        # - deactivate (color back to normal)
+        # - put all axes back to normal color
+        # - take down tooltip
+        #
+        if { [$g element exists $_hilite(elem)] } {
+            $g element deactivate $_hilite(elem)
+        }
+        set allx [$g x2axis use]
+        if {[llength $allx] > 0} {
+            lappend allx x  ;# fix main x-axis too
+            foreach axis $allx {
+                $g axis configure $axis -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+            }
+        }
+
+        set ally [$g y2axis use]
+        if {[llength $ally] > 0} {
+            lappend ally y  ;# fix main y-axis too
+            foreach axis $ally {
+                $g axis configure $axis -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+            }
+        }
+
+        $g crosshairs configure -hide yes
+
+        # only cancel in plotting area or we'll mess up axes
+        if {[$g inside $x $y]} {
+            Rappture::Tooltip::tooltip cancel
+        }
+
+        # There is no currently highlighted element
+        set _hilite(elem) ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _axis hilite <axis> <state>
+#
+# USAGE: _axis click <axis> <x> <y>
+# USAGE: _axis drag <axis> <x> <y>
+# USAGE: _axis release <axis> <x> <y>
+#
+# USAGE: _axis edit <axis>
+# USAGE: _axis changed <axis> <what>
+# USAGE: _axis format <axis> <widget> <value>
+# USAGE: _axis scale <axis> linear|log
+#
+# Used internally to handle editing of the x/y axes.  The hilite
+# operation causes the axis to light up.  The edit operation pops
+# up a panel with editing options.  The changed operation applies
+# changes from the panel.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::_axis {option args} {
+    set inner [$itk_component(hull).axes component inner]
+    switch -- $option {
+        hilite {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"_axis hilite axis state\""
+            }
+            set g $itk_component(plot)
+            set axis [lindex $args 0]
+            set state [lindex $args 1]
+
+            if {$state} {
+                $g axis configure $axis \
+                    -color $itk_option(-activecolor) \
+                    -titlecolor $itk_option(-activecolor)
+
+                set x [expr {[winfo pointerx $g]+4}]
+                set y [expr {[winfo pointery $g]+4}]
+                Rappture::Tooltip::tooltip pending $g-$axis @$x,$y
+            } else {
+                $g axis configure $axis \
+                    -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+                Rappture::Tooltip::tooltip cancel
+            }
+        }
+        click {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"_axis click axis x y\""
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+            set g $itk_component(plot)
+
+            set _axis(moved) 0
+            set _axis(click-x) $x
+            set _axis(click-y) $y
+            foreach {min max} [$g axis limits $axis] break
+            set _axis(min0) $min
+            set _axis(max0) $max
+            Rappture::Tooltip::tooltip cancel
+        }
+        drag {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"_axis drag axis x y\""
+            }
+            if {![info exists _axis(moved)]} {
+                return  ;# must have skipped click event -- ignore
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+            set g $itk_component(plot)
+
+            if {[info exists _axis(click-x)] && [info exists _axis(click-y)]} {
+                foreach {x0 y0 pw ph} [$g extents plotarea] break
+                switch -glob $axis {
+                  x* {
+                    set pix $x
+                    set pix0 $_axis(click-x)
+                    set pixmin $x0
+                    set pixmax [expr {$x0+$pw}]
+                  }
+                  y* {
+                    set pix $y
+                    set pix0 $_axis(click-y)
+                    set pixmin [expr {$y0+$ph}]
+                    set pixmax $y0
+                  }
+                }
+                set log [$g axis cget $axis -logscale]
+                set min $_axis(min0)
+                set max $_axis(max0)
+                set dpix [expr {abs($pix-$pix0)}]
+                set v0 [$g axis invtransform $axis $pixmin]
+                set v1 [$g axis invtransform $axis [expr {$pixmin+$dpix}]]
+                if {$log} {
+                    set v0 [expr {log10($v0)}]
+                    set v1 [expr {log10($v1)}]
+                    set min [expr {log10($min)}]
+                    set max [expr {log10($max)}]
+                }
+
+                if {$pix > $pix0} {
+                    set delta [expr {$v1-$v0}]
+                } else {
+                    set delta [expr {$v0-$v1}]
+                }
+                set min [expr {$min-$delta}]
+                set max [expr {$max-$delta}]
+                if {$log} {
+                    set min [expr {pow(10.0,$min)}]
+                    set max [expr {pow(10.0,$max)}]
+                }
+                $g axis configure $axis -min $min -max $max
+
+                # move axis, don't edit on release
+                set _axis(move) 1
+            }
+        }
+        release {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"_axis release axis x y\""
+            }
+            if {![info exists _axis(moved)]} {
+                return  ;# must have skipped click event -- ignore
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+
+            if {!$_axis(moved)} {
+                # small movement? then treat as click -- pop up axis editor
+                set dx [expr {abs($x-$_axis(click-x))}]
+                set dy [expr {abs($y-$_axis(click-y))}]
+                if {$dx < 2 && $dy < 2} {
+                    _axis edit $axis
+                }
+            } else {
+                # one last movement
+                _axis drag $axis $x $y
+            }
+            catch {unset _axis}
+        }
+        edit {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"_axis edit axis\""
+            }
+            set axis [lindex $args 0]
+            set _axisPopup(current) $axis
+
+            # apply last value when deactivating
+            $itk_component(hull).axes configure -deactivatecommand \
+                [itcl::code $this _axis changed $axis focus]
+
+            # fix axis label controls...
+            set label [$itk_component(plot) axis cget $axis -title]
+            $inner.label delete 0 end
+            $inner.label insert end $label
+            bind $inner.label <Return> \
+                [itcl::code $this _axis changed $axis label]
+            bind $inner.label <KP_Enter> \
+                [itcl::code $this _axis changed $axis label]
+            bind $inner.label <FocusOut> \
+                [itcl::code $this _axis changed $axis label]
+
+            # fix min/max controls...
+            foreach {min max} [$itk_component(plot) axis limits $axis] break
+            $inner.min delete 0 end
+            $inner.min insert end $min
+            bind $inner.min <Return> \
+                [itcl::code $this _axis changed $axis min]
+            bind $inner.min <KP_Enter> \
+                [itcl::code $this _axis changed $axis min]
+            bind $inner.min <FocusOut> \
+                [itcl::code $this _axis changed $axis min]
+
+            $inner.max delete 0 end
+            $inner.max insert end $max
+            bind $inner.max <Return> \
+                [itcl::code $this _axis changed $axis max]
+            bind $inner.max <KP_Enter> \
+                [itcl::code $this _axis changed $axis max]
+            bind $inner.max <FocusOut> \
+                [itcl::code $this _axis changed $axis max]
+
+            # fix format control...
+            set fmts [$inner.format choices get -value]
+            set i [lsearch -exact $fmts $_axisPopup(format-$axis)]
+            if {$i < 0} { set i 0 }  ;# use Auto choice
+            $inner.format value [$inner.format choices get -label $i]
+
+            bind $inner.format <<Value>> \
+                [itcl::code $this _axis changed $axis format]
+
+            # fix scale control...
+            if {[$itk_component(plot) axis cget $axis -logscale]} {
+                set _axisPopup(scale) "log"
+                $inner.format configure -state disabled
+            } else {
+                set _axisPopup(scale) "linear"
+                $inner.format configure -state normal
+            }
+            $inner.scales.linear configure \
+                -command [itcl::code $this _axis changed $axis scale]
+            $inner.scales.log configure \
+                -command [itcl::code $this _axis changed $axis scale]
+
+            #
+            # Figure out where the window should pop up.
+            #
+            set x [winfo rootx $itk_component(plot)]
+            set y [winfo rooty $itk_component(plot)]
+            set w [winfo width $itk_component(plot)]
+            set h [winfo height $itk_component(plot)]
+            foreach {x0 y0 pw ph} [$itk_component(plot) extents plotarea] break
+            switch -glob -- $axis {
+                x {
+                    set x [expr {round($x + $x0+0.5*$pw)}]
+                    set y [expr {round($y + $y0+$ph + 0.5*($h-$y0-$ph))}]
+                    set dir "above"
+                }
+                x* {
+                    set x [expr {round($x + $x0+0.5*$pw)}]
+                    set dir "below"
+                    set allx [$itk_component(plot) x2axis use]
+                    set max [llength $allx]
+                    set i [lsearch -exact $allx $axis]
+                    set y [expr {round($y + ($i+0.5)*$y0/double($max))}]
+                }
+                y {
+                    set x [expr {round($x + 0.5*$x0)}]
+                    set y [expr {round($y + $y0+0.5*$ph)}]
+                    set dir "right"
+                }
+                y* {
+                    set y [expr {round($y + $y0+0.5*$ph)}]
+                    set dir "left"
+                    set ally [$itk_component(plot) y2axis use]
+                    set max [llength $ally]
+                    set i [lsearch -exact $ally $axis]
+                    set y [expr {round($y + ($i+0.5)*$y0/double($max))}]
+                    set x [expr {round($x+$x0+$pw + ($i+0.5)*($w-$x0-$pw)/double($max))}]
+                }
+            }
+            $itk_component(hull).axes activate @$x,$y $dir
+        }
+        changed {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"_axis changed axis what\""
+            }
+            set axis [lindex $args 0]
+            set what [lindex $args 1]
+            if {$what == "focus"} {
+                set what [focus]
+                if {[winfo exists $what]} {
+                    set what [winfo name $what]
+                }
+            }
+
+            switch -- $what {
+                label {
+                    set val [$inner.label get]
+                    $itk_component(plot) axis configure $axis -title $val
+                }
+                min {
+                    set val [$inner.min get]
+                    if {![string is double -strict $val]} {
+                        Rappture::Tooltip::cue $inner.min "Must be a number"
+                        bell
+                        return
+                    }
+
+                    set max [lindex [$itk_component(plot) axis limits $axis] 1]
+                    if {$val >= $max} {
+                        Rappture::Tooltip::cue $inner.min "Must be <= max ($max)"
+                        bell
+                        return
+                    }
+                    catch {
+                        # can fail in log mode
+                        $itk_component(plot) axis configure $axis -min $val
+                    }
+                    foreach {min max} [$itk_component(plot) axis limits $axis] break
+                    $inner.min delete 0 end
+                    $inner.min insert end $min
+                }
+                max {
+                    set val [$inner.max get]
+                    if {![string is double -strict $val]} {
+                        Rappture::Tooltip::cue $inner.max "Should be a number"
+                        bell
+                        return
+                    }
+
+                    set min [lindex [$itk_component(plot) axis limits $axis] 0]
+                    if {$val <= $min} {
+                        Rappture::Tooltip::cue $inner.max "Must be >= min ($min)"
+                        bell
+                        return
+                    }
+                    catch {
+                        # can fail in log mode
+                        $itk_component(plot) axis configure $axis -max $val
+                    }
+                    foreach {min max} [$itk_component(plot) axis limits $axis] break
+                    $inner.max delete 0 end
+                    $inner.max insert end $max
+                }
+                format {
+                    set fmt [$inner.format translate [$inner.format value]]
+                    set _axisPopup(format-$axis) $fmt
+
+                    # force a refresh
+                    $itk_component(plot) axis configure $axis -min \
+                        [$itk_component(plot) axis cget $axis -min]
+                }
+                scale {
+                    _axis scale $axis $_axisPopup(scale)
+
+                    if {$_axisPopup(scale) == "log"} {
+                        $inner.format configure -state disabled
+                    } else {
+                        $inner.format configure -state normal
+                    }
+
+                    foreach {min max} [$itk_component(plot) axis limits $axis] break
+                    $inner.min delete 0 end
+                    $inner.min insert end $min
+                    $inner.max delete 0 end
+                    $inner.max insert end $max
+                }
+                default {
+                    # be lenient so we can handle the "focus" case
+                }
+            }
+        }
+        format {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"_axis format axis widget value\""
+            }
+            set axis [lindex $args 0]
+            set value [lindex $args 2]
+
+            if {[$itk_component(plot) axis cget $axis -logscale]} {
+                set fmt "%.6g"
+            } else {
+                set fmt $_axisPopup(format-$axis)
+            }
+            return [format $fmt $value]
+        }
+        scale {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"_axis scale axis type\""
+            }
+            set axis [lindex $args 0]
+            set type [lindex $args 1]
+
+            if {$type == "log"} {
+                catch {$itk_component(plot) axis configure $axis -logscale 1}
+                # leave format alone in log mode
+                $itk_component(plot) axis configure $axis -command ""
+            } else {
+                catch {$itk_component(plot) axis configure $axis -logscale 0}
+                # use special formatting for linear mode
+                $itk_component(plot) axis configure $axis -command \
+                    [itcl::code $this _axis format $axis]
+            }
+        }
+        default {
+            error "bad option \"$option\": should be changed, edit, hilite, or format"
+        }
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _getLineMarkerOptions <style>
+#
+# Used internally to create a list of configuration options specific to the
+# axis line marker.  The input is a list of name value pairs.  Options that
+# are not recognized are ignored.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::_getLineMarkerOptions {style} {
+    array set lineOptions {
+        "-color"  "-outline"
+        "-dashes" "-dashes"
+        "-linecolor" "-foreground"
+        "-linewidth" "-borderwidth"
+    }
+    set options {}
+    foreach {name value} $style {
+        if { [info exists lineOptions($name)] } {
+            lappend options $lineOptions($name) $value
+        }
+    }
+    return $options
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _getTextMarkerOptions <style>
+#
+# Used internally to create a list of configuration options specific to the
+# axis text marker.  The input is a list of name value pairs.  Options that
+# are not recognized are ignored.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::_getTextMarkerOptions {style} {
+    array set textOptions {
+        "-color"  "-outline"
+        "-textcolor"  "-outline"
+        "-font"   "-font"
+        "-xoffset" "-xoffset"
+        "-yoffset" "-yoffset"
+        "-anchor" "-anchor"
+        "-rotate" "-rotate"
+    }
+    set options {}
+    foreach {name value} $style {
+        if { [info exists textOptions($name)] } {
+            lappend options $textOptions($name) $value
+        }
+    }
+    return $options
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _getAxes <dataobj>
+#
+# Used internally to figure out the axes used to plot the given
+# <dataobj>.  Returns a list of the form {x y}, where x is the
+# x-axis name (x, x2, x3, etc.), and y is the y-axis name.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BarchartResult::_getAxes {dataobj} {
+    # rebuild if needed, so we know about the axes
+    if {[$_dispatcher ispending !rebuild]} {
+        $_dispatcher cancel !rebuild
+        $_dispatcher event -now !rebuild
+    }
+
+    # what is the x axis?  x? x2? x3? ...
+    set xlabel [$dataobj hints xlabel]
+    if {[info exists _label2axis(x-$xlabel)]} {
+        set mapx $_label2axis(x-$xlabel)
+    } else {
+        set mapx "x"
+    }
+
+    # what is the y axis?  y? y2? y3? ...
+    set ylabel [$dataobj hints ylabel]
+    if {[info exists _label2axis(y-$ylabel)]} {
+        set mapy $_label2axis(y-$ylabel)
+    } else {
+        set mapy "y"
+    }
+
+    return [list $mapx $mapy]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -gridcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::BarchartResult::gridcolor {
+    if {"" == $itk_option(-gridcolor)} {
+        $itk_component(plot) grid off
+    } else {
+        $itk_component(plot) grid configure -color $itk_option(-gridcolor)
+        $itk_component(plot) grid on
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -autocolors
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::BarchartResult::autocolors {
+    foreach c $itk_option(-autocolors) {
+        if {[catch {winfo rgb $itk_component(hull) $c}]} {
+            error "bad color \"$c\""
+        }
+    }
+    if {$_autoColorI >= [llength $itk_option(-autocolors)]} {
+        set _autoColorI 0
+    }
+}
+
+itcl::body Rappture::BarchartResult::_enterMarker { g name x y text } {
+    _leaveMarker $g $name
+    set id [$g marker create text \
+                -coords [list $x $y] \
+                -yoffset -1 \
+                -anchor s \
+                -text $text]
+    set _markers($name) $id
+}
+
+itcl::body Rappture::BarchartResult::_leaveMarker { g name } {
+    if { [info exists _markers($name)] } {
+        set id $_markers($name)
+        $g marker delete $id
+        unset _markers($name)
+    }
+}
+
+itcl::body Rappture::BarchartResult::_formatTickLabel { w value } {
+    # Determine the element name from the value
+
+    set index [expr round($value)]
+    if { $index != $value } {
+        return $value
+    }
+    return [lindex  $_tickLabels [expr $index - 1]]
+    if { $label == "" } {
+        return $value
+    }
+    return $label
+}
+
+#
+# ResetLegend --
+#
+itcl::body Rappture::BarchartResult::ResetLegend {} {
+    set g $itk_component(plot)
+    update idletasks
+    $itk_component(legend) reset [$g element show]
+}
Index: /tags/1.6.0/gui/scripts/booleanentry.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/booleanentry.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/booleanentry.tcl	(revision 6168)
@@ -0,0 +1,197 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: BooleanEntry - widget for entering boolean values
+#
+#  This widget represents a <boolean> entry on a control panel.
+#  It is used to enter yes/no or on/off values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itcl::class Rappture::BooleanEntry {
+    inherit itk::Widget
+
+    itk_option define -state state State "normal"
+
+    constructor {owner path args} { # defined below }
+
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+
+    protected method _newValue {}
+    protected method _log {}
+
+    private variable _owner ""    ;# thing managing this control
+    private variable _path ""     ;# path in XML to this number
+}
+
+itk::usual BooleanEntry {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::BooleanEntry::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+
+    itk_component add -protected vframe {
+        frame $itk_interior.vframe
+    }
+
+    # if the control has an icon, plug it in
+    set icon [string trim [$_owner xml get $path.about.icon]]
+    if {$icon != ""} {
+        itk_component add icon {
+            set icon [image create photo -data $icon]
+            set w [image width $icon]
+            set h [image height $icon]
+            canvas $itk_component(vframe).icon -height $h -width $w -borderwidth 0 -highlightthickness 0
+        } {
+            usual
+            ignore -highlightthickness -highlightbackground -highlightcolor
+        }
+        set c $itk_component(icon)
+        $c create image [expr {0.5*$w}] [expr {0.5*$h}] \
+            -anchor center -image $icon
+        pack $itk_component(icon) -fill x -side left
+    }
+
+    #
+    # Create the widget and configure it properly based on other
+    # hints in the XML.
+    #
+    itk_component add switch {
+        Rappture::Switch $itk_component(vframe).switch \
+            -interactcommand [itcl::code $this _log]
+    }
+    set color [string trim [$_owner xml get $path.about.color]]
+    if {$color != ""} {
+        $itk_component(switch) configure -oncolor $color
+    }
+
+    bind $itk_component(switch) <<Value>> [itcl::code $this _newValue]
+    pack $itk_component(switch) -fill x -side left
+    pack $itk_component(vframe) -side left -expand yes -fill both
+    eval itk_initialize $args
+
+    #
+    # Assign the default value to this widget, if there is one.
+    #
+    set str [string trim [$_owner xml get $path.default]]
+    if {"" != $str} {
+        $itk_component(switch) value $str
+    } else {
+        $itk_component(switch) value off
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BooleanEntry::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+
+    if {[llength $args] == 1} {
+        if {$onlycheck} {
+            # someday we may add validation...
+            return
+        }
+        set newval [string trim [lindex $args 0]]
+        $itk_component(switch) value $newval
+        event generate $itk_component(hull) <<Value>>
+        return $newval
+
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    #
+    # Query the value and return.
+    #
+    return [$itk_component(switch) value]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BooleanEntry::label {} {
+    set label [string trim [$_owner xml get $_path.about.label]]
+    if {"" == $label} {
+        set label "Boolean"
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BooleanEntry::tooltip {} {
+    set str [string trim [$_owner xml get $_path.about.description]]
+    append str "\n\nClick to turn on/off"
+    return $str
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _newValue
+#
+# Invoked automatically whenever the value in the gauge changes.
+# Sends a <<Value>> event to notify clients of the change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BooleanEntry::_newValue {} {
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _log
+#
+# Used internally to send info to the logging mechanism.  Calls the
+# Rappture::Logger mechanism to log the change to this input.
+# ----------------------------------------------------------------------
+itcl::body Rappture::BooleanEntry::_log {} {
+    Rappture::Logger::log input $_path [$itk_component(switch) value]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::BooleanEntry::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    $itk_component(switch) configure -state $itk_option(-state)
+}
Index: /tags/1.6.0/gui/scripts/bugreport.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/bugreport.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/bugreport.tcl	(revision 6168)
@@ -0,0 +1,714 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  UTILITY: bugreport
+#
+#  This redefines the usual Tcl bgerror command to install a nicer
+#  looking bug handler.  Bug reports can be submitted back to a
+#  HUBzero-based site as support tickets.  Additional information
+#  can be obtained by defining procedures as bugreport::instrumented
+#  proc (captures entrance/exit from proc) and by calling
+#  bugreport::remark with extra info along the way.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+option add *BugReport*Label.font {Helvetica -12} startupFile
+option add *BugReport*banner*foreground white startupFile
+option add *BugReport*banner*background #a9a9a9 startupFile
+option add *BugReport*banner*highlightBackground #a9a9a9 startupFile
+option add *BugReport*banner.title.font {Helvetica -18 bold} startupFile
+option add *BugReport*xmit*wrapLength 3i startupFile
+option add *BugReport*expl.width 50 startupFile
+option add *BugReport*expl.font {Helvetica -12} startupFile
+option add *BugReport*expl.boldFont {Helvetica -12 bold} startupFile
+option add *BugReport*comments.l.font {Helvetica -12 italic} startupFile
+option add *BugReport*comments.info.text.font {Helvetica -12} startupFile
+option add *BugReport*details*font {Courier -12} startupFile
+
+namespace eval Rappture::bugreport {
+    # details from the current trouble report, which user may decide to submit
+    variable details
+
+    # status from bugreport::instrumented/remark in case a bug occurs
+    variable extraStack ""
+    variable extraInfo ""
+
+    # assume that if there's a problem launching a job, we should know it
+    variable reportJobFailures 1
+
+    # submit these kinds of tickets by default
+    variable settings
+    set settings(user) $::tcl_platform(user)
+    set settings(type) "automatic"
+    set settings(group) ""
+    set settings(category) "Rappture"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: install
+#
+# Called once in the main program to install this bug reporting
+# facility.  Any unexpected errors after this call will be handled
+# by this mechanism.
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::install {} {
+    ::proc ::bgerror {err} { ::Rappture::bugreport::activate $err }
+    # Load tls early to prevent error in tls::initlib and [pwd]
+    package require http
+    package require tls
+}
+
+# ----------------------------------------------------------------------
+# USAGE: activate <error>
+#
+# Used internally to pop up the bug handler whenver a bug is
+# encountered.  Tells the user that there is a bug and logs the
+# problem, so it can be fixed.
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::activate {err} {
+    global env errorInfo
+    variable details
+    variable settings
+
+    if {"@SHOWDETAILS" == $err} {
+        pack propagate .bugreport yes
+        pack forget .bugreport.expl
+        pack forget .bugreport.xmit
+        pack forget .bugreport.done
+        pack forget .bugreport.cntls.show
+        pack .bugreport.cntls -after .bugreport.banner -side bottom -fill x
+        pack .bugreport.details -after .bugreport.banner \
+            -expand yes -fill both -padx 8 -pady 8
+        pack .bugreport.comments -after .bugreport.details \
+            -expand yes -fill both -padx 8 -pady {0 8}
+
+        update idletasks
+        set w [winfo reqwidth .bugreport]
+        set h [winfo reqheight .bugreport]
+
+        set x [winfo rootx .main]
+        set y [winfo rooty .main]
+
+        set mw [winfo width .main]
+        if { $mw == 1 } {
+            set mw [winfo reqwidth .main]
+        }
+        set mh [winfo height .main]
+        if { $mh == 1 } {
+            set mh [winfo reqwidth .main]
+        }
+        if { $mw > $w } {
+            set x [expr { $x + (($mw-$w)/2) }]
+        }
+        if { $mh > $h } {
+            set y [expr { $y + (($mh-$h)/2) }]
+        }
+        wm geometry .bugreport +$x+$y
+        raise .bugreport
+        return
+    }
+
+    # gather details so we can submit trouble reports later
+    # do this now, before we do anything with "catch" down below
+    # that might mask the errorInfo
+    register $err
+
+    pack propagate .bugreport yes
+    pack forget .bugreport.details
+    pack forget .bugreport.xmit
+    pack forget .bugreport.done
+    pack .bugreport.cntls.show -side right
+    pack .bugreport.cntls -after .bugreport.banner -side bottom -fill x
+    pack .bugreport.expl -after .bugreport.banner \
+        -expand yes -fill both -padx 8 -pady 8
+    pack .bugreport.comments -after .bugreport.expl \
+        -expand yes -fill both -padx 8 -pady {0 8}
+
+    .bugreport.expl configure -state normal
+    .bugreport.expl delete 1.0 end
+
+    set url [Rappture::Tool::resources -huburl]
+    if {"" != $url} {
+        .bugreport.expl insert end "Something went wrong with this tool.  Help us understand what happened by submitting a trouble report, so we can fix the problem.  If you continue having trouble with this tool, please close it and restart."
+        .bugreport.cntls.send configure -state normal
+        focus .bugreport.cntls.send
+    } else {
+        .bugreport.expl insert end "Something went wrong with this tool.  We would ask you to submit a trouble report about the error, but we can't tell what hub it should be submitted to.  If you continue having trouble with this tool, please close it and restart."
+        pack forget .bugreport.comments
+        .bugreport.cntls.send configure -state disabled
+        focus .bugreport.cntls.ok
+    }
+    fixTextHeight .bugreport.expl
+    .bugreport.expl configure -state disabled
+
+    .bugreport.details.info.text configure -state normal
+    .bugreport.details.info.text delete 1.0 end
+    .bugreport.details.info.text insert end "    USER: $settings(user)\n"
+    .bugreport.details.info.text insert end "HOSTNAME: $details(hostname)\n"
+    .bugreport.details.info.text insert end "PLATFORM: $details(platform)\n"
+    .bugreport.details.info.text insert end "CATEGORY: $details(category)\n"
+    .bugreport.details.info.text insert end "    TOOL: $details(referrer)\n"
+    .bugreport.details.info.text insert end " SESSION: $details(session)\n"
+    .bugreport.details.info.text insert end " SUMMARY: $details(summary)\n"
+    .bugreport.details.info.text insert end "---------\n"
+    .bugreport.details.info.text insert end $details(stackTrace)
+    .bugreport.details.info.text configure -state disabled
+
+    set w [winfo reqwidth .bugreport]
+    set h [winfo reqheight .bugreport]
+
+    set x [winfo rootx .main]
+    set y [winfo rooty .main]
+
+    set mw [winfo width .main]
+    if { $mw == 1 } {
+        set mw [winfo reqwidth .main]
+    }
+    set mh [winfo height .main]
+    if { $mh == 1 } {
+        set mh [winfo reqwidth .main]
+    }
+
+    if { $mw > $w } {
+        set x [expr { $x + (($mw-$w)/2) }]
+    }
+    if { $mh > $h } {
+        set y [expr { $y + (($mh-$h)/2) }]
+    }
+
+    wm geometry .bugreport +$x+$y
+    wm deiconify .bugreport
+    raise .bugreport
+
+    catch {grab set .bugreport}
+    update
+}
+
+# ----------------------------------------------------------------------
+# USAGE: deactivate
+#
+# Used internally to take down the bug handler dialog.
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::deactivate {} {
+    grab release .bugreport
+    wm withdraw .bugreport
+
+    # reset the grab in case it's hosed
+    Rappture::grab::reset
+}
+
+# ----------------------------------------------------------------------
+# USAGE: instrumented <what> <name> <arglist> <body>
+#
+# Used instead of the usual Tcl "proc" or itcl::body to define a
+# procedure that will automatically register information about its
+# execution in the bugreport mechanism.  The <what> parameter should
+# be either "proc" or "itcl::body" or something like that.  When the
+# procedure starts, it pushes its call information onto the stack,
+# then invokes the procedure body, then adds information about the
+# return code.
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::instrumented {what name arglist body} {
+    set avals ""
+    foreach term $arglist {
+        set aname [lindex $term 0]
+        append avals "\$$aname "
+    }
+    uplevel [list $what $name $arglist [format {
+        Rappture::bugreport::remark -enter "PROC %s: %s"
+        set __status [catch {%s} __result]
+        Rappture::bugreport::remark -leave "PROC %s: code($__status) => $__result"
+        switch -- $__status {
+            0 - 2 {
+                return $__result
+            }
+            3 {
+                set __result "invoked \"break\" outside of a loop"
+            }
+            4 {
+                set __result "invoked \"continue\" outside of a loop"
+            }
+        }
+        error $__result $::errorInfo
+    } $name $avals $body $name]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: remark ?-enter|-leave? <message>
+#
+# Adds the <message> to the current "extraInfo" being kept about the
+# program.  This adds useful debugging info to the report that gets
+# sent back when an unexpected error is trapped.  The -enter and -leave
+# options are used when a bugreport::instrumented proc starts/exits to
+# change the indent level for future messages.
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::remark {args} {
+    variable extraStack
+    variable extraInfo
+
+    if {[llength $args] > 1} {
+        set option [lindex $args 0]
+        set args [lrange $args 1 end]
+        switch -- $option {
+            -enter {
+                if {[llength $args] != 1} {
+                    error "wrong # args: should be \"remark -enter message\""
+                }
+                set mesg [lindex $args 0]
+                if {[llength $extraStack] == 0} {
+                    set extraInfo ""
+                }
+                append extraInfo [remark -indent ">> $mesg"]
+                set extraStack [linsert $extraStack 0 $mesg]
+                return
+            }
+            -leave {
+                if {[llength $args] != 1} {
+                    error "wrong # args: should be \"remark -leave message\""
+                }
+                set mesg [lindex $args 0]
+                set extraStack [lrange $extraStack 1 end]
+                append extraInfo [remark -indent "<< $mesg"]
+                return
+            }
+            -indent {
+                if {[llength $args] != 1} {
+                    error "wrong # args: should be \"remark -indent message\""
+                }
+            }
+            default {
+                error "bad option \"$option\": should be -enter, -leave, -indent"
+            }
+        }
+    }
+    set mesg [lindex $args 0]
+    set nlevel [llength $extraStack]
+    set indent [string repeat { } [expr {2*$nlevel}]]
+    foreach line [split $mesg \n] {
+        append extraInfo "$indent$line\n"
+        set prefix "   "
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: sanitize <string> ?<replacement>?
+#
+# Removes any sensitive information in the bug report.  This is useful
+# for things such as passwords that should be scrubbed out before any
+# ticket is filed.  Replaces the <string> with an optional <replacement>
+# string (or ******** by default).  This is usually called in some sort
+# of "catch" before forwarding the error on to the usual bgerror routine.
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::sanitize {str {repl ********}} {
+    global errorInfo
+    variable extraInfo
+
+    set map [list $str $repl]
+    set errorInfo [string map $map $errorInfo]
+    set extraInfo [string map $map $extraInfo]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: attach <name> <string>
+#
+# Removes any sensitive information in the bug report.  This is useful
+# for things such as passwords that should be scrubbed out before any
+# ticket is filed.  Replaces the <string> with an optional <replacement>
+# string (or ******** by default).  This is usually called in some sort
+# of "catch" before forwarding the error on to the usual bgerror routine.
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::attach {str {repl ********}} {
+    global errorInfo
+    variable extraInfo
+
+    set map [list $str $repl]
+    set errorInfo [string map $map $errorInfo]
+    set extraInfo [string map $map $extraInfo]
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: submit
+#
+# Takes details currently stored in the panel and registers them
+# as a support ticket on the hosting hub site.  Pops up a panel
+# during the process and informs the user of the result.
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::submit {} {
+    set info [.bugreport.details.info.text get 1.0 end]
+
+    pack propagate .bugreport no
+    pack forget .bugreport.details
+    pack forget .bugreport.expl
+    pack forget .bugreport.comments
+    pack forget .bugreport.cntls
+    pack .bugreport.xmit -after .bugreport.banner -padx 8 -pady 8
+    .bugreport.xmit.title configure -text "Sending trouble report to [Rappture::Tool::resources -hubname]..."
+
+    # send off the trouble report...
+    .bugreport.xmit.icon start
+    set status [catch send result]
+    .bugreport.xmit.icon stop
+
+    pack propagate .bugreport yes
+    pack forget .bugreport.xmit
+    pack .bugreport.expl -after .bugreport.banner -padx 8 -pady 8
+    .bugreport.expl configure -state normal
+    .bugreport.expl delete 1.0 end
+
+    # handle the result
+    if {$status != 0} {
+        # add error to the details field, so we can see it with magic clicks
+        .bugreport.details.info.text configure -state normal
+        .bugreport.details.info.text insert 1.0 "Ticket submission failed:\n$result\n-----\n"
+        .bugreport.details.info.text configure -state disabled
+
+        .bugreport.expl insert end "Oops! Ticket submission failed:\n$result\n\nIf you want to report the original problem, you can file your own trouble report by going to the web site and clicking on the \"Help\" or \"Support\" link on the main navigation bar.  If you continue having trouble with this tool, please close it and restart."
+    } elseif {[regexp {Ticket #([0-9]*) +\((.*?)\) +([0-9]+) +times} $result match ticket extra times]} {
+        .bugreport.expl insert end "This problem has been reported as " "" "Ticket #$ticket" bold " in our system." ""
+        if {[string is integer $times] && $times > 1} {
+            .bugreport.expl insert end "  This particular problem has been reported $times times."
+        }
+        .bugreport.expl insert end "\n\nIf you continue having trouble with this tool, please close it and restart.  Thanks for reporting the problem and helping us improve things!"
+    } else {
+        .bugreport.expl insert end "This problem has been reported.  Here is the response from the hub, which may contain information about your ticket:\n" "" $result bold "\n\nIf you continue having trouble with this tool, please close it and restart.  Thanks for reporting the problem and helping us improve things!" ""
+    }
+    fixTextHeight .bugreport.expl
+    .bugreport.expl configure -state disabled
+    pack .bugreport.done -side bottom -padx 8 -pady 8
+    focus .bugreport.done
+}
+
+# ----------------------------------------------------------------------
+# USAGE: register <err>
+#
+# Low-level function used to capture information about a bug report
+# prior to calling "send", which actually sends the ticket.  We usually
+# let the user preview the information and decide whether or not to
+# send the ticket.
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::register {err} {
+    global errorInfo tcl_platform
+    variable details
+    variable settings
+    variable extraInfo
+
+    #
+    # Figure out exactly what we'll send if the bug report is
+    # submitted, so we can show the user.
+    #
+    set stackTrace "$err\n---------\n$errorInfo\n---------\n$extraInfo"
+    if {![regexp {^([^\n]+)\n} $stackTrace match summary]} {
+        if {[string length $stackTrace] == 0} {
+            set summary "Unexpected error from Rappture"
+        } else {
+            set summary $stackTrace
+        }
+    }
+    if {[string length $summary] > 200} {
+        set summary "[string range $summary 0 200]..."
+    }
+    if {[string match {Problem launching job*} $summary]} {
+        append summary " (in tool \"[Rappture::Tool::resources -appname]\")"
+        set category "Tools"
+    } else {
+        set category $settings(category)
+    }
+
+    # make sure that the stack trace isn't too long
+    set toolong 20000
+    if {[string length $stackTrace] > $toolong} {
+        #
+        # If this came from "Problem launching job", then it will have
+        # a "== RAPPTURE INPUT ==" part somewhere in the middle.  Try
+        # to show the first part, this middle part, and the very last
+        # part, cutting out whatever we have to in the middle.
+        #
+        if {[regexp -indices {\n== RAPPTURE INPUT ==\n} $stackTrace match]} {
+            foreach {smid0 smid1} $match break
+            set quarter [expr {$toolong/4}]
+            set s0 $quarter
+            set smid0 [expr {$smid0-$quarter}]
+            set smid1 [expr {$smid1+$quarter}]
+            set s1 [expr {[string length $stackTrace]-$quarter}]
+
+            if {$smid0 < $s0} {
+                # first part is short -- truncate last part
+                set stackTrace "[string range $stackTrace 0 $smid1]\n...\n[string range $stackTrace [expr {[string length $stackTrace]-($toolong-$smid1)}] end]"
+            } elseif {$smid1 > $s1} {
+                # last part is short -- truncate first part
+                set tailsize [expr {[string length $stackTrace]-$smid0}]
+                set stackTrace "[string range $stackTrace 0 [expr {$toolong-$tailsize}]]\n...\n[string range $stackTrace $smid0 end]"
+            } else {
+                # rappture input line is right about in the middle
+                set stackTrace "[string range $stackTrace 0 $s0]\n...\n[string range $stackTrace $smid0 $smid1]\n...\n[string range $stackTrace $s1 end]"
+            }
+        } else {
+            # no Rappture input -- just show first part and last part
+            set half [expr {$toolong/2}]
+            set stackTrace "[string range $stackTrace 0 $half]\n...\n[string range $stackTrace [expr {[string length $stackTrace]-$half}] end]"
+        }
+    }
+
+    set details(summary) $summary
+    set details(category) $category
+    set details(stackTrace) $stackTrace
+    set details(hostname) [info hostname]
+    set details(session) [Rappture::Tool::resources -session]
+    set details(referrer) [Rappture::Tool::resources -appname]
+    set details(platform) [array get tcl_platform]
+
+    Rappture::Logger::log oops! $summary
+}
+
+# ----------------------------------------------------------------------
+# USAGE: attachment <string>
+#
+# Low-level function used to capture information about a bug report
+# prior to calling "send", which actually sends the ticket.  We usually
+# let the user preview the information and decide whether or not to
+# send the ticket.
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::attachment { string } {
+    variable details
+    set details(attachment) $string
+}
+
+# ----------------------------------------------------------------------
+# USAGE: send
+#
+# Low-level function used to send bug reports back to the hub site.
+# Error details gathered by a previous call to "register" are sent
+# along as a support ticket.  Returns a string of the following form,
+# representing details about the new or existing ticket:
+#   Ticket #XX (XXXXXX) XX times
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::send {} {
+    variable details
+    variable settings
+
+    package require http
+    package require tls
+    http::register https 443 [list ::tls::socket -tls1 1]
+
+    set report $details(stackTrace)
+    set cmts [string trim [.bugreport.comments.info.text get 1.0 end]]
+    if {[string length $cmts] > 0} {
+        set report "$cmts\n\n[string repeat = 72]\n$report"
+    }
+    set toolFile ""
+    if { [info exists details(attachment)] } {
+        set toolFile "/tmp/tool[pid].xml"
+        set f [open $toolFile "w"]
+        puts $f $details(attachment)
+        close $f
+        unset details(attachment)
+    }
+    set query [http::formatQuery \
+        option com_support \
+        controller tickets \
+        upload $toolFile \
+        task create \
+        no_html 1 \
+        report $report \
+        sesstoken $details(session) \
+        hostname $details(hostname) \
+        os $details(platform) \
+        category $details(category) \
+        summary $details(summary) \
+        referrer $details(referrer) \
+        login $settings(user) \
+        group $settings(group) \
+        type $settings(type) \
+    ]
+    set url [Rappture::Tool::resources -huburl]
+    if { $url == "" } {
+        set url "http://hubzero.org"
+    }
+    if {[string index $url end] == "/"} {
+        append url "index.php"
+    } else {
+        append url "/index.php"
+    }
+
+    set token [http::geturl $url -query $query -timeout 60000]
+
+    if {[http::ncode $token] != 200} {
+        error [http::code $token]
+    }
+    upvar #0 $token rval
+    set info $rval(body)
+    http::cleanup $token
+
+    if { $toolFile != "" } {
+        file delete $toolFile
+    }
+    if {[regexp {Ticket #[0-9]* +\(.*?\) +[0-9]+ +times} $info match]} {
+        return $match
+    }
+    error "Report received, but ticket may not have been filed.  Here's the result...\n$info"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: fixTextHeight <widget>
+#
+# Used internally to adjust the height of a text widget so it is just
+# tall enough to show the info within it.
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::fixTextHeight {widget} {
+    #
+    # HACK ALERT!  In Tk8.5, we can count display lines directly.
+    #   But for earlier versions, we have to cook up something
+    #   similar.
+    #
+    if {[catch {$widget count -displaylines 1.0 end} h] == 0 && $h > 0} {
+        $widget configure -height $h
+    } else {
+        for {set h 1} {$h < 15} {incr h} {
+            $widget configure -height $h
+            $widget see 1.0
+            update idletasks
+            if {"" != [$widget bbox end-1char]} {
+                break
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: shouldReport jobfailures <boolean>
+# USAGE: shouldReport for ?oops|jobs?
+#
+# Used internally to determine whether or not this system should
+# automatically report errors back to the hosting hub.  Returns 1
+# if the tool should, and 0 otherwise.  The decision is made based
+# on whether this is a current tool in production, whether it is
+# being tested in a workspace, and whether the tool commonly generates
+# problems (by pilot error in its input deck).
+# ----------------------------------------------------------------------
+proc Rappture::bugreport::shouldReport {option value} {
+    global env
+
+    switch -- $option {
+        jobfailures {
+            variable reportJobFailures
+            if {![string is boolean $value]} {
+                error "bad value \"$value\": should be boolean"
+            }
+            set reportJobFailures $value
+        }
+        for {
+            # is it being run within a workspace?
+            set appname [Rappture::Tool::resources -appname]
+            if {[string match {[Ww]orkspace*} $appname]} {
+                return 0
+            }
+            set url [Rappture::Tool::resources -huburl]
+            if { $url == "" } {
+                return 0
+            }
+            # if this is a problem launching a job and the tool
+            # expects this, then don't bother with automatic reports.
+            variable reportJobFailures
+            if {"jobs" == $value && !$reportJobFailures} {
+                return 0
+            }
+
+            # this is a real problem -- report it!
+            return 1
+        }
+        default {
+            error "bad option \"$option\": should be jobfailures or for"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Build the bug reporting dialog
+# ----------------------------------------------------------------------
+toplevel .bugreport -class BugReport -borderwidth 1 -relief solid
+wm overrideredirect .bugreport 1
+wm withdraw .bugreport
+
+frame .bugreport.banner -background #a9a9a9
+pack .bugreport.banner -side top -fill x
+label .bugreport.banner.icon -image [Rappture::icon alert]
+pack .bugreport.banner.icon -side left -padx 2 -pady 2
+label .bugreport.banner.title -text "Oops! Internal Error"
+pack .bugreport.banner.title -side left -padx {0 8} -pady 2
+
+# add these frustration bindings in case the "Dismiss" button is off screen
+bind .bugreport.banner.icon <Double-ButtonPress-1> \
+    Rappture::bugreport::deactivate
+bind .bugreport.banner.title <Double-ButtonPress-1> \
+    Rappture::bugreport::deactivate
+bind .bugreport <KeyPress-Escape> \
+    Rappture::bugreport::deactivate
+
+set bg [.bugreport cget -background]
+text .bugreport.expl -borderwidth 0 -highlightthickness 0 -background $bg \
+    -height 3 -wrap word
+.bugreport.expl tag configure bold \
+    -font [option get .bugreport.expl boldFont Font]
+#
+# HACK ALERT!  We have problems with fixTextHeight working correctly
+#   on Windows for Tk8.4 and earlier.  To make it work properly, we
+#   add the binding below.  At some point, we'll ditch 8.4 and we can
+#   use the new "count -displaylines" option in Tk8.5.
+#
+bind .bugreport.expl <Map> {Rappture::bugreport::fixTextHeight %W}
+
+frame .bugreport.comments
+label .bugreport.comments.l -text "What were you doing just before this error?" -anchor w
+pack .bugreport.comments.l -side top -anchor w
+Rappture::Scroller .bugreport.comments.info -xscrollmode none -yscrollmode auto
+text .bugreport.comments.info.text -width 30 -height 3 -wrap word
+.bugreport.comments.info contents .bugreport.comments.info.text
+bind .bugreport.comments.info.text <ButtonPress> {focus %W}
+pack .bugreport.comments.info -expand yes -fill both
+
+frame .bugreport.cntls
+pack .bugreport.cntls -side bottom -fill x
+button .bugreport.cntls.ok -text "Ignore" -command {
+    Rappture::bugreport::deactivate
+}
+pack .bugreport.cntls.ok -side left -padx {4 20} -pady 8
+button .bugreport.cntls.send -text "Send Trouble Report" -command {
+    Rappture::bugreport::submit
+}
+pack .bugreport.cntls.send -side right -padx 4 -pady 8
+
+button .bugreport.cntls.show -text "Show Details..." \
+    -command {Rappture::bugreport::activate @SHOWDETAILS}
+pack .bugreport.cntls.show -side right
+
+
+frame .bugreport.details
+Rappture::Scroller .bugreport.details.info -xscrollmode auto -yscrollmode auto
+text .bugreport.details.info.text -width 50 -height 15 -wrap none
+.bugreport.details.info contents .bugreport.details.info.text
+pack .bugreport.details.info -expand yes -fill both
+
+frame .bugreport.xmit
+Rappture::Animicon .bugreport.xmit.icon -images {
+    circle-ball1 circle-ball2 circle-ball3 circle-ball4
+    circle-ball5 circle-ball6 circle-ball7 circle-ball8
+}
+pack .bugreport.xmit.icon -side left
+label .bugreport.xmit.title -anchor w
+pack .bugreport.xmit.title -side left -expand yes -fill x
+
+button .bugreport.done -text "Done" \
+    -command Rappture::bugreport::deactivate
+
+# this binding keeps the bugreport window on top
+bind BugReportOnTop <ButtonPress> {
+    wm deiconify %W
+    raise %W
+}
+set btags [bindtags .bugreport]
+bindtags .bugreport [linsert $btags 0 BugReportOnTop]
+
Index: /tags/1.6.0/gui/scripts/choiceentry.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/choiceentry.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/choiceentry.tcl	(revision 6168)
@@ -0,0 +1,315 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: ChoiceEntry - widget for entering a choice of strings
+#
+#  This widget represents a <choice> entry on a control panel.
+#  It is used to choose one of several mutually-exclusive strings.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itcl::class Rappture::ChoiceEntry {
+    inherit itk::Widget
+
+    itk_option define -state state State "normal"
+
+    constructor {owner path args} { # defined below }
+    destructor { # defined below }
+
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+
+    protected method _rebuild {}
+    protected method _newValue {}
+    protected method _tooltip {}
+    protected method _log {}
+
+    private variable _owner ""    ;# thing managing this control
+    private variable _path ""     ;# path in XML to this number
+    private variable _str2val     ;# maps option label => option value
+}
+
+itk::usual ChoiceEntry {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textforeground -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ChoiceEntry::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+
+    #
+    # Create the widget and configure it properly based on other
+    # hints in the XML.
+    #
+    itk_component add choice {
+        Rappture::Combobox $itk_interior.choice -editable no \
+            -interactcommand [itcl::code $this _log]
+    }
+    pack $itk_component(choice) -expand yes -fill both
+    bind $itk_component(choice) <<Value>> [itcl::code $this _newValue]
+
+    eval itk_initialize $args
+
+    _rebuild
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ChoiceEntry::destructor {} {
+    $_owner notify remove $this
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ChoiceEntry::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+
+    if {[llength $args] == 1} {
+        if {$onlycheck} {
+            # someday we may add validation...
+            return
+        }
+        set newval [lindex $args 0]
+        if {[info exists _str2val($newval)]} {
+            # this is a label -- use it directly
+            $itk_component(choice) value $newval
+            set newval $_str2val($newval)  ;# report the actual value
+        } else {
+            # this is a value -- search for corresponding label
+            foreach str [array names _str2val] {
+                if {$_str2val($str) eq $newval} {
+                    $itk_component(choice) value $str
+                    break
+                }
+            }
+        }
+        return $newval
+
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    #
+    # Query the value and return.
+    #
+    set str [$itk_component(choice) value]
+    if {[info exists _str2val($str)]} {
+        return $_str2val($str)
+    }
+    return $str
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ChoiceEntry::label {} {
+    set label [string trim [$_owner xml get $_path.about.label]]
+    if {"" == $label} {
+        set label "Choice"
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ChoiceEntry::tooltip {} {
+    # query tooltip on-demand based on current choice
+    return "@[itcl::code $this _tooltip]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _rebuild
+#
+# Used internally to rebuild the contents of this choice widget
+# whenever something that it depends on changes.  Scans through the
+# information in the XML spec and builds a list of choices for the
+# widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ChoiceEntry::_rebuild {} {
+    # get rid of any existing choices
+    $itk_component(choice) choices delete 0 end
+    catch {unset _str2val}
+
+    #
+    # Plug in the various options for the choice.
+    #
+    set max 10
+    foreach cname [$_owner xml children -type option $_path] {
+        set path [string trim [$_owner xml get $_path.$cname.path]]
+        if {"" != $path} {
+            # look for the input element controlling this path
+            set found 0
+            foreach cntl [Rappture::entities [$_owner xml object] "input"] {
+                set len [string length $cntl]
+                if {[string equal -length $len $cntl $path]} {
+                    set found 1
+                    break
+                }
+            }
+            if {$found} {
+                #
+                # Choice comes from a list of matching entities at
+                # a particular XML path.  Use the <label> as a template
+                # for each item on the path.
+                #
+                $_owner notify add $this $cntl [itcl::code $this _rebuild]
+
+                set label \
+                    [string trim [$_owner xml get $_path.$cname.about.label]]
+                if {"" == $label} {
+                    set label "%type #%n"
+                }
+
+                set ppath [Rappture::LibraryObj::path2list $path]
+                set leading [join [lrange $ppath 0 end-1] .]
+                set tail [lindex $ppath end]
+                set n 1
+                foreach ccname [$_owner xml children $leading] {
+                    if {[string match $tail $ccname]} {
+                        set subst(%n) $n
+                        set subst(%type) [$_owner xml element -as type $leading.$ccname]
+                        set subst(%id) [$_owner xml element -as id $leading.$ccname]
+                        foreach detail [$_owner xml children $leading.$ccname] {
+                            set subst(%$detail) \
+                                [$_owner xml get $leading.$ccname.$detail]
+                        }
+                        set str [string map [array get subst] $label]
+                        $itk_component(choice) choices insert end \
+                            $leading.$ccname $str
+                        incr n
+                    }
+                }
+                $itk_component(choice) value ""
+            } else {
+                puts "can't find controlling entity for path \"$path\""
+            }
+        } else {
+            #
+            # Choice is an ordinary LABEL.
+            # Add the label as-is into the list of choices.
+            #
+            set val [string trim [$_owner xml get $_path.$cname.value]]
+            set str [string trim [$_owner xml get $_path.$cname.about.label]]
+            if {"" == $val} {
+                set val $str
+            }
+            if {"" != $str} {
+                set _str2val($str) $val
+                $itk_component(choice) choices insert end $_path.$cname $str
+                set len [string length $str]
+                if {$len > $max} { set max $len }
+            }
+        }
+    }
+    $itk_component(choice) configure -width $max
+
+    #
+    # Assign the default value to this widget, if there is one.
+    #
+    set defval [string trim [$_owner xml get $_path.default]]
+    if {"" != $defval} {
+        if {[info exists _str2val($defval)]} {
+            $itk_component(choice) value $defval
+        } else {
+            foreach str [array names _str2val] {
+                if {$_str2val($str) == $defval} {
+                    $itk_component(choice) value $str
+                    break
+                }
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _newValue
+#
+# Invoked automatically whenever the value in the choice changes.
+# Sends a <<Value>> event to notify clients of the change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ChoiceEntry::_newValue {} {
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _tooltip
+#
+# Returns the tooltip for this widget, given the current choice in
+# the selector.  This is normally called by the Rappture::Tooltip
+# facility whenever it is about to pop up a tooltip for this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ChoiceEntry::_tooltip {} {
+    set tip [string trim [$_owner xml get $_path.about.description]]
+
+    # get the description for the current choice, if there is one
+    set str [$itk_component(choice) value]
+    set path [$itk_component(choice) translate $str]
+    set desc ""
+    if {$path != ""} {
+        set desc [string trim [$_owner xml get $path.about.description]]
+    }
+
+    if {[string length $str] > 0 && [string length $desc] > 0} {
+        append tip "\n\n$str:\n$desc"
+    }
+    return $tip
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _log
+#
+# Used internally to send info to the logging mechanism.  Calls the
+# Rappture::Logger mechanism to log the change to this input.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ChoiceEntry::_log {} {
+    Rappture::Logger::log input $_path [$itk_component(choice) value]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::ChoiceEntry::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    $itk_component(choice) configure -state $itk_option(-state)
+}
Index: /tags/1.6.0/gui/scripts/cloud.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/cloud.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/cloud.tcl	(revision 6168)
@@ -0,0 +1,287 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: cloud - represents the mesh for a cloud of points
+#
+#  This object represents the mesh for a cloud of points in an XML
+#  description of a device.  It simplifies the process of extracting
+#  data that represent the mesh.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+namespace eval Rappture { # forward declaration }
+
+itcl::class Rappture::Cloud {
+    constructor {xmlobj path} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method points {}
+    public method units { axis }
+    public method label { axis }
+    public method vtkdata {}
+    public method dimensions {}
+    public method limits {which}
+    public method hints {{key ""}}
+    public method numpoints {} {
+        return $_numPoints
+    }
+    public method isvalid {} {
+        return $_isValid
+    }
+
+    public proc fetch {xmlobj path}
+    public proc release {obj}
+
+    private variable _xmlobj "";        # ref to XML obj with device data
+    private variable _cloud "";         # lib obj representing this cloud
+    private variable _units "" ;        # system of units for x, y, z
+    private variable _axis2label;       #
+    private variable _axis2units;       #
+    private variable _limits;           # limits x, y, z
+    private variable _numPoints 0
+    private variable _vtkdata ""
+    private variable _points ""
+    private variable _dim 0
+    private variable _isValid 0;        # Indicates if the data is valid.
+
+    private common _xp2obj ;            # Used for fetch/release ref counting
+    private common _obj2ref ;           # Used for fetch/release ref counting
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::Cloud::fetch <xmlobj> <path>
+#
+# Clients use this instead of a constructor to fetch the Cloud for
+# a particular <path> in the <xmlobj>.  When the client is done with
+# the cloud, he calls "release" to decrement the reference count.
+# When the cloud is no longer needed, it is cleaned up automatically.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Cloud::fetch {xmlobj path} {
+    set handle "$xmlobj|$path"
+    if {[info exists _xp2obj($handle)]} {
+        set obj $_xp2obj($handle)
+        incr _obj2ref($obj)
+        return $obj
+    }
+
+    set obj [Rappture::Cloud ::#auto $xmlobj $path]
+    set _xp2obj($handle) $obj
+    set _obj2ref($obj) 1
+    return $obj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::Cloud::release <obj>
+#
+# Clients call this when they're no longer using a Cloud fetched
+# previously by the "fetch" proc.  This decrements the reference
+# count for the cloud and destroys the object when it is no longer
+# in use.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Cloud::release {obj} {
+    if {[info exists _obj2ref($obj)]} {
+        incr _obj2ref($obj) -1
+        if {$_obj2ref($obj) <= 0} {
+            unset _obj2ref($obj)
+            foreach handle [array names _xp2obj] {
+                if {$_xp2obj($handle) == $obj} {
+                    unset _xp2obj($handle)
+                }
+            }
+            itcl::delete object $obj
+        }
+    } else {
+        error "can't find reference count for $obj"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Cloud::constructor {xmlobj path} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be Rappture::library"
+    }
+    set _xmlobj $xmlobj
+    set _cloud [$xmlobj element -as object $path]
+
+    set _units [$_cloud get units]
+    set first [lindex $_units 0]
+    set list {}
+    foreach u $_units axis { x y z } {
+        if { $u != "" } {
+            set _axis2units($axis) $u
+        } else {
+            set _axis2units($axis) $first
+        }
+        lappend list $_axis2units($axis)
+    }
+    set _units $list
+    foreach label [$_cloud get labels] axis { x y z } {
+        if { $label != "" } {
+            set _axis2label($axis) $label
+        } else {
+            set _axis2label($axis) [string toupper $axis]
+        }
+    }
+
+    set _numPoints 0
+    set _points {}
+    foreach line [split [$xmlobj get $path.points] \n] {
+        if {"" == [string trim $line]} {
+            continue
+        }
+
+        if {[llength $line] > 3} {
+            puts stderr "ERROR: Too many coordinates in cloud points list"
+            return
+        }
+
+        # make sure we have x,y,z
+        while {[llength $line] < 3} {
+            lappend line "0"
+        }
+
+        # Extract each point and add it to the points list
+        foreach {x y z} $line break
+        foreach axis {x y z} {
+            # Units on point coordinates are NOT supported
+            set value [set $axis]
+            # Update limits
+            if { ![info exists _limits($axis)] } {
+                set _limits($axis) [list $value $value]
+            } else {
+                foreach { min max } $_limits($axis) break
+                if {$value < $min} {
+                    set min $value
+                }
+                if {$value > $max} {
+                    set max $value
+                }
+                set _limits($axis) [list $min $max]
+            }
+        }
+        append _points "$x $y $z\n"
+        incr _numPoints
+    }
+    append out "DATASET POLYDATA\n"
+    append out "POINTS $_numPoints double\n"
+    append out $_points
+    set _vtkdata $out
+    if { $_numPoints == 0 } {
+        return
+    }
+    set _dim 0
+    foreach { xmin xmax } $_limits(x) break
+    if { $xmax > $xmin } {
+        incr _dim
+    }
+    foreach { ymin ymax } $_limits(y) break
+    if { $ymax > $ymin } {
+        incr _dim
+    }
+    foreach { zmin zmax } $_limits(z) break
+    if { $zmax > $zmin } {
+        incr _dim
+    }
+    set _isValid 1
+    puts stderr "WARNING: The <cloud> element is deprecated.  Please use an unstructured <mesh> instead."
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Cloud::destructor {} {
+    # don't destroy the _xmlobj! we don't own it!
+    itcl::delete object $_cloud
+}
+
+# ----------------------------------------------------------------------
+# USAGE: points
+#
+# Returns a string containing the points for this mesh.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Cloud::points {} {
+    return $_points
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dimensions
+#
+# Returns the number of dimensions for this object: 1, 2, or 3.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Cloud::dimensions {} {
+    return $_dim
+}
+
+# ----------------------------------------------------------------------
+# USAGE: limits x|y|z
+#
+# Returns the {min max} values for the limits of the specified axis.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Cloud::limits { axis } {
+    if { ![info exists _limits($axis)] } {
+        error "bad axis \"$axis\": should be x, y, z"
+    }
+    return $_limits($axis)
+}
+
+#
+# units --
+#
+#       Returns the units of the given axis.
+#
+itcl::body Rappture::Cloud::units { axis } {
+    if { ![info exists _axis2units($axis)] } {
+        return ""
+    }
+    return $_axis2units($axis)
+}
+
+#
+# label --
+#
+#       Returns the label of the given axis.
+#
+itcl::body Rappture::Cloud::label { axis } {
+    if { ![info exists _axis2label($axis)] } {
+        return ""
+    }
+    return $_axis2label($axis)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this field.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Cloud::hints {{keyword ""}} {
+    foreach key {label color units} {
+        set str [$_cloud get $key]
+        if {"" != $str} {
+            set hints($key) $str
+        }
+    }
+
+    if {$keyword != ""} {
+        if {[info exists hints($keyword)]} {
+            return $hints($keyword)
+        }
+        return ""
+    }
+    return [array get hints]
+}
+
+itcl::body Rappture::Cloud::vtkdata {} {
+    return $_vtkdata
+}
Index: /tags/1.6.0/gui/scripts/color.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/color.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/color.tcl	(revision 6168)
@@ -0,0 +1,227 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  UTILITY: color
+#
+#  This file contains various utility functions for manipulating
+#  color values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+namespace eval Rappture::color { # forward declaration }
+
+# ---------------------------------------------------------------------
+# USAGE: brightness <color> <fraction>
+#
+# Used to brighten or dim a Tk <color> value by some +/- <fraction> in
+# the range 0-1.  Returns another color in the same hue, but with
+# different brighness.
+# ----------------------------------------------------------------------
+proc Rappture::color::brightness {color frac} {
+    foreach {h s v} [Rappture::color::RGBtoHSV $color] { break }
+    set v [expr {$v+$frac}]
+
+    # if frac overflows the value, pass changes along to saturation
+    if {$v < 0} {
+        set s [expr {$s+$v}]
+        if {$s < 0} { set s 0 }
+        set v 0
+    }
+    if {$v > 1} {
+        set s [expr {$s-($v-1)}]
+        if {$s < 0} { set s 0 }
+        set v 1
+    }
+
+    return [Rappture::color::HSVtoRGB $h $s $v]
+}
+
+# ---------------------------------------------------------------------
+# USAGE: brightness_min <color> <min>
+#
+# Used to make sure a color is not too dim.  If the value is less
+# than the <min>, then it is capped at that value.  That way, the
+# return color shows up against black.
+# ----------------------------------------------------------------------
+proc Rappture::color::brightness_min {color min} {
+    foreach {h s v} [Rappture::color::RGBtoHSV $color] { break }
+    if {$v < $min} {
+        set v $min
+    }
+    return [Rappture::color::HSVtoRGB $h $s $v]
+}
+
+# ---------------------------------------------------------------------
+# USAGE: brightness_max <color> <max>
+#
+# Used to make sure a color is not too dim.  If the value is less
+# than the <min>, then it is capped at that value.  That way, the
+# return color shows up against black.
+# ----------------------------------------------------------------------
+proc Rappture::color::brightness_max {color max} {
+    foreach {h s v} [Rappture::color::RGBtoHSV $color] { break }
+    if {$v > $max} {
+        set v $max
+    }
+    return [Rappture::color::HSVtoRGB $h $s $v]
+}
+
+# ---------------------------------------------------------------------
+# USAGE: RGBtoHSV <color>
+#
+# Used to convert a Tk <color> value to hue, saturation, value
+# components.  Returns a list of the form {h s v}.
+# ----------------------------------------------------------------------
+proc Rappture::color::RGBtoHSV {color} {
+    #
+    # If the colors are exhausted sometimes winfo can fail with a
+    # division by zero.  Catch it to avoid problems.
+    #
+    if { [catch {winfo rgb . $color} status] != 0 } {
+        set s 0
+        set v 0
+        set h 0
+        return [list $h $s $v]
+    }
+    foreach {r g b} $status {}
+    set min [expr {($r < $g) ? $r : $g}]
+    set min [expr {($b < $min) ? $b : $min}]
+    set max [expr {($r > $g) ? $r : $g}]
+    set max [expr {($b > $max) ? $b : $max}]
+
+    set v [expr {$max/65535.0}]
+
+    set delta [expr {$max-$min}]
+
+    if { $delta == 0 } {
+        # delta=0 => gray color
+        set s 0
+        set v [expr {$r/65535.0}]
+        set h 0
+        return [list $h $s $v]
+    }
+ 
+    if {$max > 0} {
+        set s [expr {$delta/double($max)}]
+    } else {
+        # r=g=b=0  =>  s=0, v undefined
+        set s 0
+        set v 0
+        set h 0
+        return [list $h $s $v]
+    }
+
+    if {$r == $max} {
+        set h [expr {($g - $b)/double($delta)}]
+    } elseif {$g == $max} {
+        set h [expr {2 + ($b - $r)/double($delta)}]
+    } else {
+        set h [expr {4 + ($r - $g)/double($delta)}]
+    }
+    set h [expr {$h*1.04719756667}] ;# *60 degrees
+    if {$h < 0} {
+        set h [expr {$h+6.2831854}]
+    }
+    return [list $h $s $v]
+}
+
+# ---------------------------------------------------------------------
+# USAGE: HSVtoRGB <color>
+#
+# Used to convert hue, saturation, value for a color to its
+# equivalent RGB form.  Returns a prompt Tk color of the form
+# #RRGGBB.
+# ----------------------------------------------------------------------
+proc Rappture::color::HSVtoRGB {h s v} {
+    if {$s == 0} {
+        set v [expr round(255*$v)]
+        set r $v
+        set g $v
+        set b $v
+    } else {
+        if {$h >= 6.28318} {set h [expr $h-6.28318]}
+        set h [expr $h/1.0472]
+        set f [expr $h-floor($h)]
+        set p [expr round(255*$v*(1.0-$s))]
+        set q [expr round(255*$v*(1.0-$s*$f))]
+        set t [expr round(255*$v*(1.0-$s*(1.0-$f)))]
+        set v [expr round(255*$v)]
+
+        switch [expr int($h)] {
+            0 {set r $v; set g $t; set b $p}
+            1 {set r $q; set g $v; set b $p}
+            2 {set r $p; set g $v; set b $t}
+            3 {set r $p; set g $q; set b $v}
+            4 {set r $t; set g $p; set b $v}
+            5 {set r $v; set g $p; set b $q}
+        }
+    }
+    return [format "#%.2x%.2x%.2x" $r $g $b]
+}
+
+# ---------------------------------------------------------------------
+# USAGE: wave2RGB <wavelength>
+#
+# Given a visible wavelength in nm, returns a Tk color of the form
+# #RRGGBB. Returns black for nonvisible wavelengths.  Based on code from
+# Dan Bruton (astro@tamu.edu) http://www.physics.sfasu.edu/astro/color/spectra.html
+# ----------------------------------------------------------------------
+
+proc Rappture::color::wave2RGB {wl} {
+
+    # strip off any units
+    set wl [string trimright $wl "nm"]
+
+    if {$wl < 380 || $wl > 780} {
+        return black
+    }
+    set gamma 0.8
+    set r 0.0
+    set g 0.0
+    set b 0.0
+    if {$wl <= 440} {
+        set r [expr (440.0 - $wl) / 60.0]
+        set b 1.0
+    } elseif {$wl <= 490} {
+        set g [expr ($wl - 440.0) / 50.0]
+        set b 1.0
+    } elseif {$wl <= 510} {
+        set g 1.0
+        set b [expr (510.0 - $wl) / 20.0]
+    } elseif {$wl <= 580} {
+        set g 1.0
+        set r [expr ($wl - 510.0) / 70.0]
+    } elseif {$wl <= 645} {
+        set r 1.0
+        set g [expr (645.0 - $wl) / 65.0]
+    } else {
+        set r 1.0
+    }
+
+    if {$wl > 700} {
+        set sss [expr 0.3 + 0.7 * (780.0 - $wl) / 80.0]
+    } elseif {$wl < 420} {
+        set sss [expr 0.3 + 0.7 * ($wl - 380.0) / 40.0]
+    } else {
+        set sss 1.0
+    }
+    set r [expr int(255.0 * pow(($sss * $r), $gamma))]
+    set g [expr int(255.0 * pow(($sss * $g), $gamma))]
+    set b [expr int(255.0 * pow(($sss * $b), $gamma))]
+    return [format "#%.2X%.2X%.2X" $r $g $b]
+}
+
+# Returns a list containing three decimal values in the range 0 to 65535,
+# which are the red, green, and blue intensities that correspond to color
+# in the window given by window. Color may be specified in any of the forms
+# acceptable for a color option.
+proc Rappture::color::RGB {color} {
+    if {[string match "*nm" $color]} {
+        set color [Rappture::color::wave2RGB [string trimright $color "nm"]]
+    }
+    return [winfo rgb . $color]
+}
Index: /tags/1.6.0/gui/scripts/combobox.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/combobox.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/combobox.tcl	(revision 6168)
@@ -0,0 +1,343 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: combobox - entry widget with a drop-down list of values
+#
+#  This widget is a typical combobox, an entry widget with a drop-down
+#  list of values.  If the -editable option is turned off, then the
+#  value can be set only from the drop-down list.  Otherwise, the
+#  drop-down is treated as a list of preset choices, but the user can
+#  type anything in the entry area.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Combobox.borderWidth 2 widgetDefault
+option add *Combobox.relief sunken widgetDefault
+option add *Combobox.width 10 widgetDefault
+option add *Combobox.editable yes widgetDefault
+option add *Combobox.textBackground white widgetDefault
+option add *Combobox.textForeground black widgetDefault
+option add *Combobox.disabledBackground white widgetDefault
+option add *Combobox.disabledForeground gray widgetDefault
+option add *Combobox.font -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Combobox {
+    inherit itk::Widget
+
+    itk_option define -editable editable Editable ""
+    itk_option define -state state State "normal"
+    itk_option define -width width Width 0
+    itk_option define -disabledbackground disabledBackground DisabledBackground ""
+    itk_option define -disabledforeground disabledForeground DisabledForeground ""
+    itk_option define -interactcommand interactCommand InteractCommand ""
+
+    constructor {args} { # defined below }
+
+    public method value {args}
+    public method translate {value {defValue ""}}
+    public method label {value}
+    public method current {}
+    public method choices {option args}
+
+    protected method _entry {option}
+    protected method _dropdown {option}
+    protected method _fixState {}
+
+    blt::bitmap define ComboboxArrow {
+        #define arrow_width 8
+        #define arrow_height 4
+        static unsigned char arrow_bits[] = {
+           0xfe, 0x7c, 0x38, 0x10};
+    }
+    private variable _value2label
+    private variable _label2value
+}
+
+itk::usual Combobox {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textforeground -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combobox::constructor {args} {
+    itk_option add hull.borderwidth hull.relief
+
+    itk_component add button {
+        button $itk_interior.btn -bitmap ComboboxArrow -padx 0 \
+            -borderwidth 1 -relief raised -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness -highlightbackground -highlightcolor
+        ignore -borderwidth -relief
+    }
+    pack $itk_component(button) -side right -fill y
+
+    itk_component add entry {
+        entry $itk_interior.entry -borderwidth 0 -relief flat
+    } {
+        usual
+        keep -width
+        rename -highlightbackground -textbackground textBackground Background
+        rename -background -textbackground textBackground Background
+        rename -foreground -textforeground textForeground Foreground
+        rename -disabledbackground -textbackground textBackground Background
+        rename -disabledforeground -textforeground textForeground Foreground
+        ignore -borderwidth -relief
+    }
+    pack $itk_component(entry) -side left -expand yes -fill both
+
+    bind $itk_component(entry) <KeyPress-Return> \
+        [itcl::code $this _entry apply]
+    bind $itk_component(entry) <ButtonPress> \
+        [itcl::code $this _entry click]
+
+    itk_component add ddlist {
+        Rappture::Dropdownlist $itk_component(button).ddlist \
+            -postcommand [itcl::code $this _dropdown post] \
+            -unpostcommand [itcl::code $this _dropdown unpost] \
+    }
+
+    bind $itk_component(ddlist) <<DropdownlistSelect>> \
+        [itcl::code $this _dropdown select]
+
+    $itk_component(button) configure -command \
+        [list $itk_component(ddlist) post $itk_component(hull) left]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combobox::value {args} {
+    if {[llength $args] == 1} {
+        set newval [lindex $args 0]
+
+        $itk_component(entry) configure -state normal
+        $itk_component(entry) delete 0 end
+        $itk_component(entry) insert 0 $newval
+        if {!$itk_option(-editable)} {
+            $itk_component(entry) configure -state disabled
+        }
+
+        after 10 [list catch [list event generate $itk_component(hull) <<Value>>]]
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?newval?\""
+    }
+    return [$itk_component(entry) get]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: translate <value>
+#
+# Clients use this to translate a value from the entry part of the
+# combobox to one of the underlying values in the combobox.  If the
+# <value> string matches one of the labels for the choices, this
+# method returns the corresponding value.  Otherwise, it returns "".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combobox::translate {value {defValue ""}} {
+    foreach {val label} [choices get -both] {
+        if {$label eq $value} {
+            return $val
+        }
+    }
+    return $defValue
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label <value>
+#
+# Clients use this to translate a value to a label.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combobox::label { myValue } {
+    foreach {val label} [choices get -both] {
+        if {$myValue == $val} {
+            return $label
+        }
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: getValue <value>
+#
+# Clients use this to translate a value to a label.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combobox::current {} {
+    set raw [$itk_component(entry) get]
+    set value [translate $raw "badValue"]
+    if { $value ne "badValue" } {
+        return $value
+    }
+    return $raw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: choices insert <pos> ?<value1> <label1> ...?
+# USAGE: choices delete <first> ?<last>?
+# USAGE: choices get ?-value|-label|-both? ?<index>?
+# USAGE: choices index <value>
+#
+# Clients use this to manipulate the list of choices in the drop-down
+# list.  Each choice is represented by a (computer-friendly) value
+# and its corresponding (human-friendly) label.  The "get" option
+# returns information about options on the list, including the value,
+# the label, or both.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combobox::choices {option args} {
+    eval $itk_component(ddlist) $option $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _entry apply
+# USAGE: _entry click
+#
+# Used internally to handle the dropdown list for this combobox.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combobox::_entry {option} {
+    switch -- $option {
+        apply {
+            if {$itk_option(-editable) && $itk_option(-state) == "normal"} {
+                event generate $itk_component(hull) <<Value>>
+                if {[string length $itk_option(-interactcommand)] > 0} {
+                    uplevel #0 $itk_option(-interactcommand)
+                }
+            }
+        }
+        click {
+            if {!$itk_option(-editable) && $itk_option(-state) == "normal"} {
+                $itk_component(button) configure -relief sunken
+                update idletasks; after 100
+                $itk_component(button) configure -relief raised
+
+                $itk_component(ddlist) post $itk_component(hull) left
+            }
+        }
+        default {
+            error "bad option \"$option\": should be apply, click"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _dropdown post
+# USAGE: _dropdown unpost
+# USAGE: _dropdown select
+#
+# Used internally to handle the dropdown list for this combobox.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combobox::_dropdown {option} {
+    switch -- $option {
+        post {
+            set value [$itk_component(entry) get]
+            set i [$itk_component(ddlist) index -label $value]
+            if {$i >= 0} {
+                $itk_component(ddlist) select clear 0 end
+                $itk_component(ddlist) select set $i
+            }
+        }
+        unpost {
+            if {$itk_option(-editable)} {
+                focus $itk_component(entry)
+            }
+        }
+        select {
+            set newval [$itk_component(ddlist) current -label]
+            set val [$itk_component(entry) get]
+            if {$newval ne "" && $newval ne $val} {
+                value $newval
+                if {[string length $itk_option(-interactcommand)] > 0} {
+                    uplevel #0 $itk_option(-interactcommand)
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be post, unpost, select"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixState
+#
+# Used internally to fix the widget state when the -editable/-state
+# options change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combobox::_fixState {} {
+    if {$itk_option(-state) == "normal"} {
+        $itk_component(button) configure -state normal
+        $itk_component(entry) configure \
+            -background $itk_option(-textbackground) \
+            -foreground $itk_option(-textforeground) \
+            -disabledbackground $itk_option(-textbackground) \
+            -disabledforeground $itk_option(-textforeground)
+    } else {
+        $itk_component(button) configure -state disabled
+        $itk_component(entry) configure \
+            -background $itk_option(-disabledbackground) \
+            -foreground $itk_option(-disabledforeground) \
+            -disabledbackground $itk_option(-disabledbackground) \
+            -disabledforeground $itk_option(-disabledforeground)
+    }
+
+    if {$itk_option(-editable)} {
+        if {$itk_option(-state) == "normal"} {
+            $itk_component(entry) configure -state normal
+        } else {
+            $itk_component(entry) configure -state disabled
+        }
+    } else {
+        $itk_component(entry) configure -state disabled
+    }
+
+    if {!$itk_option(-editable) || $itk_option(-state) != "normal"} {
+        # can't keep focus here -- move it along to the next widget
+        if {[focus] == $itk_component(entry)} {
+            focus [tk_focusNext [focus]]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -editable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Combobox::editable {
+    if {![string is boolean -strict $itk_option(-editable)]} {
+        error "bad value \"$itk_option(-editable)\": should be boolean"
+    }
+    _fixState
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Combobox::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    _fixState
+}
Index: /tags/1.6.0/gui/scripts/combochecks.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/combochecks.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/combochecks.tcl	(revision 6168)
@@ -0,0 +1,251 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: combochecks - like a combobox, but items with checkboxes
+#
+#  This widget looks a lot like a combobox, but has a drop-down list
+#  of checkbox items.  The list of checked items is shown in the
+#  entry area as a comma-separated list.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Combochecks.borderWidth 2 widgetDefault
+option add *Combochecks.relief sunken widgetDefault
+option add *Combochecks.width 10 widgetDefault
+option add *Combochecks.textBackground white widgetDefault
+option add *Combochecks.textForeground black widgetDefault
+option add *Combochecks.disabledBackground white widgetDefault
+option add *Combochecks.disabledForeground gray widgetDefault
+option add *Combochecks.font -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Combochecks {
+    inherit itk::Widget
+
+    itk_option define -state state State "normal"
+    itk_option define -width width Width 0
+    itk_option define -disabledbackground disabledBackground DisabledBackground ""
+    itk_option define -disabledforeground disabledForeground DisabledForeground ""
+
+    constructor {args} { # defined below }
+
+    public method value {args}
+    public method current {}
+    public method choices {option args}
+
+    protected method _entry {option}
+    protected method _fixDisplay {}
+    protected method _fixState {}
+
+    blt::bitmap define CombochecksArrow {
+        #define arrow_width 8
+        #define arrow_height 4
+        static unsigned char arrow_bits[] = {
+           0xfe, 0x7c, 0x38, 0x10};
+    }
+    private variable _value2label
+    private variable _label2value
+}
+
+itk::usual Combochecks {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textforeground -textbackground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combochecks::constructor {args} {
+    itk_option add hull.borderwidth hull.relief
+
+    itk_component add button {
+        button $itk_interior.btn -bitmap CombochecksArrow -padx 0 \
+            -borderwidth 1 -relief raised -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness -highlightbackground -highlightcolor
+        ignore -borderwidth -relief
+    }
+    pack $itk_component(button) -side right -fill y
+
+    itk_component add entry {
+        entry $itk_interior.entry -borderwidth 0 -relief flat -state disabled
+    } {
+        usual
+        keep -width
+        rename -highlightbackground -textbackground textBackground Background
+        rename -background -textbackground textBackground Background
+        rename -foreground -textforeground textForeground Foreground
+        rename -disabledbackground -textbackground textBackground Background
+        rename -disabledforeground -textforeground textForeground Foreground
+        ignore -borderwidth -relief
+    }
+    pack $itk_component(entry) -side left -expand yes -fill both
+
+    bind $itk_component(entry) <KeyPress-Return> \
+        [itcl::code $this _entry apply]
+    bind $itk_component(entry) <ButtonPress> \
+        [itcl::code $this _entry click]
+
+    itk_component add ddlist {
+        Rappture::Dropdownchecks $itk_component(button).ddlist
+    }
+    bind $itk_component(ddlist) <<DropdownchecksSelect>> \
+        [itcl::code $this _fixDisplay]
+
+    $itk_component(button) configure -command \
+        [list $itk_component(ddlist) post $itk_component(hull) left]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combochecks::value {args} {
+    switch -- [llength $args] {
+        0 {
+            # return a list of checked optons
+            set max [$itk_component(ddlist) size]
+            set rlist ""
+            foreach val [$itk_component(ddlist) get -value] {
+                if {[$itk_component(ddlist) state $val]} {
+                    lappend rlist $val
+                }
+            }
+            return $rlist
+        }
+        1 {
+            set newval [lindex $args 0]
+
+            $itk_component(ddlist) reset
+            foreach part $newval {
+                $itk_component(ddlist) state $part 1
+            }
+            _fixDisplay
+
+            after 10 [list catch \
+                [list event generate $itk_component(hull) <<Value>>]]
+
+        }
+        default {
+            error "wrong # args: should be \"value ?newval?\""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: choices insert <pos> ?<value1> <label1> ...?
+# USAGE: choices delete <first> ?<last>?
+# USAGE: choices get ?-value|-label|-both? ?<index>?
+# USAGE: choices state <value> ?on|off?
+# USAGE: choices index <value>
+#
+# Clients use this to manipulate the list of choices in the drop-down
+# list.  Each choice is represented by a (computer-friendly) value
+# and its corresponding (human-friendly) label.  The "get" option
+# returns information about options on the list, including the value,
+# the label, or both.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combochecks::choices {option args} {
+    eval $itk_component(ddlist) $option $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _entry apply
+# USAGE: _entry click
+#
+# Used internally to handle the dropdown list for this combobox.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combochecks::_entry {option} {
+    switch -- $option {
+        apply {
+            if {$itk_option(-state) == "normal"} {
+                event generate $itk_component(hull) <<Value>>
+            }
+        }
+        click {
+            if {$itk_option(-state) == "normal"} {
+                $itk_component(button) configure -relief sunken
+                update idletasks; after 100
+                $itk_component(button) configure -relief raised
+
+                $itk_component(ddlist) post $itk_component(hull) left
+            }
+        }
+        default {
+            error "bad option \"$option\": should be apply, click"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixDisplay
+#
+# Used internally to handle the dropdown list for this combobox.
+# Invoked whenever there is a selection from the list, to assign
+# the value back to the entry.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combochecks::_fixDisplay {} {
+    $itk_component(entry) configure -state normal
+    $itk_component(entry) delete 0 end
+    $itk_component(entry) insert end [join [value] {, }]
+    $itk_component(entry) configure -state disabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixState
+#
+# Used internally to fix the widget state when the -state option
+# changes.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Combochecks::_fixState {} {
+    if {$itk_option(-state) == "normal"} {
+        $itk_component(button) configure -state normal
+        $itk_component(entry) configure \
+            -background $itk_option(-textbackground) \
+            -foreground $itk_option(-textforeground) \
+            -disabledbackground $itk_option(-textbackground) \
+            -disabledforeground $itk_option(-textforeground)
+    } else {
+        $itk_component(button) configure -state disabled
+        $itk_component(entry) configure \
+            -background $itk_option(-disabledbackground) \
+            -foreground $itk_option(-disabledforeground) \
+            -disabledbackground $itk_option(-disabledbackground) \
+            -disabledforeground $itk_option(-disabledforeground)
+    }
+
+    if {$itk_option(-state) != "normal"} {
+        # can't keep focus here -- move it along to the next widget
+        if {[focus] == $itk_component(entry)} {
+            focus [tk_focusNext [focus]]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Combochecks::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    _fixState
+}
Index: /tags/1.6.0/gui/scripts/controlOwner.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/controlOwner.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/controlOwner.tcl	(revision 6168)
@@ -0,0 +1,559 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: owner - manages Rappture controls
+#
+#  This object represents an entity managing Rappture controls.
+#  It is typically a Tool, a DeviceEditor, or some other large entity
+#  that manages a Rappture XML tree.  All controlling widgets are
+#  registered with an owner, and the owner propagates notifications
+#  out to clients who have an interest in a particular control.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+itcl::class Rappture::ControlOwner {
+    constructor {owner} { # defined below }
+
+    public method xml {args}
+
+    public method load {newobj}
+    public method widgetfor {path args}
+    public method valuefor {path args}
+    public method dependenciesfor {path args}
+    public method ownerfor {path {skip ""}}
+    public method changed {path}
+    public method regularize {path}
+    public method notify {option owner args}
+    public method sync {}
+    public method tool {}
+
+    protected method _slave {option args}
+
+    protected variable _owner ""     ;# ControlOwner containing this one
+    protected variable _path ""      ;# paths within are relative to this
+    protected variable _slaves ""    ;# this owner has these slaves
+    protected variable _xmlobj ""    ;# Rappture XML description
+    private variable _path2widget    ;# maps path => widget on this page
+    private variable _path2controls  ;# maps path => panel containing widget
+    private variable _owner2paths    ;# for notify: maps owner => interests
+    private variable _type2curpath   ;# maps type(path) => path's current value
+    private variable _callbacks      ;# for notify: maps owner/path => callback
+    private variable _dependencies   ;# maps path => other paths dep on this
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::constructor {owner} {
+    if {"" != $owner} {
+        set parts [split $owner @]
+        set _owner [lindex $parts 0]
+        set _path [lindex $parts 1]
+        $_owner _slave add $this
+    }
+
+    # we are adding this so notes can be used
+    # in coordination with loaders inside the load function
+    array set _type2curpath {
+        drawing all
+        choice current
+        boolean current
+        image current
+        integer current
+        loader current
+        note contents
+        number current
+        periodicelement current
+        string current
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: xml <subcommand> ?<arg> <arg> ...?
+# USAGE: xml object
+#
+# Used by clients to manipulate the underlying XML data for this
+# tool.  The <subcommand> can be any operation supported by a
+# Rappture::library object.  Clients can also request the XML object
+# directly by using the "object" subcommand.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::xml {args} {
+    if {"object" == $args} {
+        return $_xmlobj
+    }
+    return [eval $_xmlobj $args]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: widgetfor <path> ?<widget>?
+#
+# Used by embedded widgets such as a Controls panel to register the
+# various controls associated with this page.  That way, this
+# ControlOwner knows what widgets to look at when syncing itself
+# to the underlying XML data.
+#
+# There can only be one widget per path, since the control owner will
+# later query the widgets for current values.  If there is already an
+# existing widget registered for the <path>, then it will be deleted
+# and the new <widget> will take its place.  If the caller doesn't
+# want to replace an existing widget, it should check before calling
+# this method and make sure that the return value is "".
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::widgetfor {path args} {
+    # if this is a query operation, then look for the path
+    if {[llength $args] == 0} {
+        set owner [ownerfor $path]
+        if {$owner ne $this && $owner ne ""} {
+            return [$owner widgetfor $path]
+        }
+        if {[info exists _path2widget($path)]} {
+            return $_path2widget($path)
+        }
+        return ""
+    }
+
+    # otherwise, associate the path with the given widget
+    set widget [lindex $args 0]
+    if {$widget ne ""} {
+        # is there already a widget registered for this path?
+        if {[info exists _path2widget($path)]} {
+            # delete old widget and replace
+            set panel $_path2controls($path)
+            $panel delete $path
+            set _path2controls($path) ""
+        }
+
+        # register the new widget for the path
+        set _path2widget($path) $widget
+
+        # look up the containing panel and store it too
+        set w [winfo parent $widget]
+        while {$w ne ""} {
+            if {[string match *Controls [winfo class $w]]} {
+                set _path2controls($path) $w
+                break
+            }
+            set w [winfo parent $w]
+        }
+    } else {
+        # empty name => forget about this widget
+        catch {unset _path2widget($path)}
+        catch {unset _path2controls($path)}
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: valuefor <path> ?<newValue>?
+#
+# Used by embedded widgets such as a Loader to query or set the
+# value of another control.  With no extra args, it returns the
+# value of the widget at the <path> in the XML.  Otherwise, it
+# sets the value of the widget to <newValue>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::valuefor {path args} {
+    set owner [ownerfor $path]
+
+    # if this is a query operation, then look for the path
+    if {[llength $args] == 0} {
+        if {$owner != $this && $owner != ""} {
+            return [$owner valuefor $path]
+        }
+        if {[info exists _path2widget($path)]} {
+            return [$_path2widget($path) value]
+        }
+        # can't find the path? try removing the prefix for this owner
+        set plen [string length $_path]
+        if {[string equal -length $plen $_path $path]} {
+            set relpath [string range $path [expr {$plen+1}] end]
+            if {[info exists _path2widget($relpath)]} {
+                return [$_path2widget($relpath) value]
+            }
+        }
+        return ""
+    }
+
+    # otherwise, set the value
+    if {$owner != $this && $owner != ""} {
+        return [eval $owner valuefor $path $args]
+    }
+    if {[llength $args] > 1} {
+        error "wrong # args: should be \"valuefor path ?newValue?\""
+    }
+
+    if {[info exists _path2widget($path)]} {
+        $_path2widget($path) value [lindex $args 0]
+    } else {
+        error "bad path \"$path\": should be one of [join [lsort [array names _path2widget]] {, }]"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dependenciesfor <path> ?<path>...?
+#
+# Used by embedded widgets such as a Controls panel to register the
+# various controls that are dependent on another one.  If only one
+# path is specified, then this method returns all known dependencies
+# for the specified <path>.  Otherwise, the additional <path>'s are
+# noted as being dependent on the first <path>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::dependenciesfor {path args} {
+    if {"" != $_owner} {
+        #
+        # Keep all dependencies at the highest level.
+        # That way, a structure can come and go, but the
+        # dependencies remain fixed in the topmost tool.
+        #
+        set plen [string length $_path]
+        if {"" != $_path && ![string equal -length $plen $_path $path]} {
+            set path $_path.$path
+        }
+        return [eval $_owner dependenciesfor $path $args]
+    }
+
+    # if this is a query operation, then look for the path
+    if {[llength $args] == 0} {
+        if {[info exists _dependencies($path)]} {
+            return $_dependencies($path)
+        }
+        return ""
+    }
+
+    # add new dependencies
+    if {![info exists _dependencies($path)]} {
+        set _dependencies($path) ""
+    }
+    foreach dpath $args {
+        set i [lsearch -exact $_dependencies($path) $dpath]
+        if {$i < 0} {
+            lappend _dependencies($path) $dpath
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ownerfor <path> ?<skip>?
+#
+# Returns the ControlOwner that directly controls the specified <path>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::ownerfor {path {skip ""}} {
+    if {[info exists _path2widget($path)]} {
+        return $this
+    }
+
+    # can't find the path? try removing the prefix for this owner
+    set plen [string length $_path]
+    if {[string equal -length $plen $_path $path]} {
+        set relpath [string range $path [expr {$plen+1}] end]
+        if {[info exists _path2widget($relpath)]} {
+            return $this
+        }
+    }
+
+    # couldn't find this path?  then check all subordinates
+    foreach slave $_slaves {
+        if {$slave == $skip} {
+            continue  ;# skip this slave if it's already been searched
+        }
+        set rval [$slave ownerfor $path $this]
+        if {"" != $rval} {
+            return $rval
+        }
+    }
+
+    # check the owner as a last resort
+    if {"" != $_owner && $_owner != $skip} {
+        set rval [$_owner ownerfor $path $this]
+        if {"" != $rval} {
+            return $rval
+        }
+    }
+
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load <xmlobj>
+#
+# Loads the contents of a Rappture <xmlobj> into the controls
+# associated with this tool.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::load {newobj} {
+    if {![Rappture::library isvalid $newobj]} {
+        error "\"$newobj\" is not a Rappture::library"
+    }
+    foreach path [array names _path2widget] {
+        # the following elements do not accept "current" tags, skip them
+        set type [[tool] xml element -as type $path]
+        if {[lsearch {group separator control} $type] >= 0} {
+            continue
+        }
+
+        set type [[tool] xml element -as type $path]
+        if {[info exists _type2curpath($type)]} {
+            if { $_type2curpath($type) == "all" } {
+                set currentpath $path
+            } else {
+                set currentpath $path.$_type2curpath($type)
+            }
+        } else {
+            # default incase i forgot an input type in _type2curpath
+            set currentpath $path.current
+        }
+
+        # copy new value to the XML tree
+        # also copy to the widget associated with the tree
+        #
+        # we only copy the values if they existed in newobj
+        # so we don't overwrite values that were set in previous loads.
+        # this is needed for when the users specify copy.from and copy.to
+        # in a loader. in this case, _path2widget holds a list of all
+        # widgets. if there are two loaders loading two different widgets,
+        # and each loader uses the copy from/to functionality,
+        # the second load could wipe out the values set in the first load
+        # because on the second load, the copied paths from the first load no
+        # longer exist in newobj and blanks are copied to the paths
+        # in [tool] xml set by the first loader. the solution is to check
+        # newobj and see if the path exists. if the path exists, then we copy
+        # it over to [tool] xml, otherwise we ignore it.
+        if {"" != [$newobj element -as type $currentpath]} {
+            [tool] xml copy $currentpath from $newobj $currentpath
+            set val [$newobj get $currentpath]
+            if {[string length $val] > 0
+                  || [llength [$newobj children $currentpath]] == 0} {
+                $_path2widget($path) value $val
+            } else {
+                set obj [$newobj element -as object $currentpath]
+                $_path2widget($path) value $obj
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: changed <path>
+#
+# Invoked automatically by the various widgets associated with this
+# tool whenever their value changes.  Sends notifications to any
+# client that has registered an interest via "notify add".
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::changed {path} {
+    if {"" != $_owner} {
+        set plen [string length $_path]
+        if {"" != $_path && ![string equal -length $plen $_path $path]} {
+            set path $_path.$path
+        }
+        $_owner changed $path
+    } else {
+        # send out any callback notifications
+        foreach owner [array names _owner2paths] {
+            foreach pattern $_owner2paths($owner) {
+                if {[string match $pattern $path]} {
+                    uplevel #0 $_callbacks($owner/$pattern)
+                    break
+                }
+            }
+        }
+
+        # find the control panel for each dependency, and tell it
+        # to update its layout.
+        foreach cpath [dependenciesfor $path] {
+            set wv [widgetfor $cpath]
+            while {"" != $wv} {
+                set wv [winfo parent $wv]
+                if {[winfo class $wv] == "Controls"} {
+                    $wv refresh
+                    break
+                }
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: regularize <path>
+#
+# Clients use this to get a full, regularized path for the specified
+# <path>, which may be relative to the current owner.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::regularize {path} {
+    set owner [ownerfor $path]
+    if {$owner != $this && $owner != ""} {
+        return [$owner regularize $path]
+    }
+    set rpath ""
+    if {"" != $_xmlobj} {
+        set rpath [$_xmlobj element -as path $path]
+
+        # can't find the path? try removing the prefix for this owner
+        if {"" == $rpath} {
+            set plen [string length $_path]
+            if {[string equal -length $plen $_path $path]} {
+                set relpath [string range $path [expr {$plen+2}] end]
+                set rpath [$_xmlobj element -as path $relpath]
+            }
+        }
+
+        if {"" != $rpath && "" != $_path} {
+            # return a full name for the path
+            set rpath "$_path.$rpath"
+        }
+    }
+    return $rpath
+}
+
+# ----------------------------------------------------------------------
+# USAGE: notify add <owner> <path> <callback>
+# USAGE: notify info ?<owner>? ?<path>?
+# USAGE: notify remove <owner> ?<path> ...?
+#
+# Clients use this to request notifications about changes to a
+# particular <path> for a control under this tool.  Whenever the
+# value associated with <path> changes, the client identified by
+# <owner> is sent a message by invoking its <callback> routine.
+#
+# Notifications can be silenced by calling the "notify remove"
+# function.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::notify {option args} {
+    switch -- $option {
+        add {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"notify add owner path callback\""
+            }
+            set owner [lindex $args 0]
+            set path [lindex $args 1]
+            set cb [lindex $args 2]
+
+            if {[info exists _owner2paths($owner)]} {
+                set plist $_owner2paths($owner)
+            } else {
+                set plist ""
+            }
+
+            set i [lsearch -exact $plist $path]
+            if {$i < 0} { lappend _owner2paths($owner) $path }
+            set _callbacks($owner/$path) $cb
+        }
+        info {
+            if {[llength $args] == 0} {
+                # no args? then return all owners
+                return [array names _owner2paths]
+            } else {
+                set owner [lindex $args 0]
+                if {[info exists _owner2paths($owner)]} {
+                    set plist $_owner2paths($owner)
+                } else {
+                    set plist ""
+                }
+                if {[llength $args] == 1} {
+                    # 1 arg? then return paths for this owner
+                    return $plist
+                } elseif {[llength $args] == 2} {
+                    # 2 args? then return callback for this path
+                    set path [lindex $args 1]
+                    if {[info exists _callbacks($owner/$path)]} {
+                        return $_callbacks($owner/$path)
+                    }
+                    return ""
+                } else {
+                    error "wrong # args: should be \"notify info ?owner? ?path?\""
+                }
+            }
+        }
+        remove {
+            if {[llength $args] < 1} {
+                error "wrong # args: should be \"notify remove owner ?path ...?\""
+            }
+            set owner [lindex $args 0]
+
+            if {[llength $args] == 1} {
+                # no args? then delete all paths for this owner
+                if {[info exists _owner2paths($owner)]} {
+                    set plist $_owner2paths($owner)
+                } else {
+                    set plist ""
+                }
+            } else {
+                set plist [lrange $args 1 end]
+            }
+
+            # forget about the callback for each path
+            foreach path $plist {
+                catch {unset _callbacks($owner/$path)}
+
+                if {[info exists _owner2paths($owner)]} {
+                    set i [lsearch -exact $_owner2paths($owner) $path]
+                    if {$i >= 0} {
+                        set _owner2paths($owner) \
+                            [lreplace $_owner2paths($owner) $i $i]
+                    }
+                }
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: sync
+#
+# Used by descendents such as a Controls panel to register the
+# various controls associated with this page.  That way, this
+# ControlOwner knows what widgets to look at when syncing itself
+# to the underlying XML data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::sync {} {
+    # sync all of the widgets under control of this owner
+    if {"" != $_xmlobj} {
+        foreach path [lsort [array names _path2widget]] {
+            set type [$_xmlobj element -as type $path]
+            if {[lsearch {group separator control note} $type] >= 0} {
+                continue
+            }
+            $_xmlobj put $path.current [$_path2widget($path) value]
+        }
+    }
+
+    # sync all subordinate slaves as well
+    foreach slave $_slaves {
+        $slave sync
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tool
+#
+# Clients use this to figure out which tool is associated with
+# this object.  If there is no parent ControlOwner, then this
+# must be the top-level tool.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::tool {} {
+    if {"" != $_owner} {
+        return [$_owner tool]
+    }
+    return $this
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _slave add <newobj>...
+#
+# Used internally to register the parent-child relationship whenever
+# one ControlOwner is registered to another.  When the parent syncs,
+# it causes all of its children to sync.  When a name is being
+# resolved, it is resolved locally first, then up to the parent for
+# further resolution.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ControlOwner::_slave {option args} {
+    switch -- $option {
+        add {
+            eval lappend _slaves $args
+        }
+        default {
+            error "bad option \"$option\": should be add"
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/controls.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/controls.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/controls.tcl	(revision 6168)
@@ -0,0 +1,942 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: controls - a container for various Rappture controls
+#
+#  This widget is a smart frame acting as a container for controls.
+#  Controls are added to this panel, and the panel itself decides
+#  how to arrange them given available space.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Controls.padding 4 widgetDefault
+option add *Controls.labelFont \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Controls {
+    inherit itk::Widget
+
+    itk_option define -layout layout Layout ""
+    itk_option define -padding padding Padding 0
+
+    constructor {owner args} { # defined below }
+    destructor { # defined below }
+
+    public method insert {pos path}
+    public method delete {first {last ""}}
+    public method index {name}
+    public method control {args}
+    public method refresh {}
+
+    protected method _layout {}
+    protected method _monitor {name state}
+    protected method _controlChanged {name}
+    protected method _controlValue {path {units ""}}
+    protected method _formatLabel {str}
+    protected method _changeTabs {{why -program}}
+    protected method _resize {}
+
+    private variable _owner ""       ;# controls belong to this owner
+    private variable _tabs ""        ;# optional tabset for groups
+    private variable _frame ""       ;# pack controls into this frame
+    private variable _counter 0      ;# counter for control names
+    private variable _dispatcher ""  ;# dispatcher for !events
+    private variable _controls ""    ;# list of known controls
+    private variable _showing ""     ;# list of enabled (showing) controls
+    private variable _name2info      ;# maps control name => info
+    private variable _scheme ""      ;# layout scheme (tabs/vert/horz/sentence)
+    private variable _sentenceparts  ;# info for layout scheme "sentence:"
+}
+
+itk::usual Controls {
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::constructor {owner args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !layout
+    $_dispatcher dispatch $this !layout "[itcl::code $this _layout]; list"
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this _resize]; list"
+
+    set _owner $owner
+
+    Rappture::Scroller $itk_interior.sc -xscrollmode none -yscrollmode auto
+    pack $itk_interior.sc -expand yes -fill both
+    set f [$itk_interior.sc contents frame]
+
+    set _tabs [blt::tabset $f.tabs -borderwidth 0 -relief flat \
+        -side top -tearoff 0 -samewidth 0 -highlightthickness 0 \
+        -selectbackground $itk_option(-background) \
+        -selectcommand [itcl::code $this _changeTabs -user]]
+    pack $_tabs -expand yes -fill both
+
+    set _frame [frame $_tabs.inner]
+    pack $_frame -expand yes -fill both
+
+    #
+    # Put this frame in whenever the control frame is empty.
+    # It forces the size to contract back now when controls are deleted.
+    #
+    frame $_frame.empty -width 1 -height 1
+
+    #
+    # Set up a binding that all inserted widgets will use so that
+    # we can monitor their size changes.
+    #
+    bind Controls-$this <Configure> \
+        [list $_dispatcher event -idle !resize]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::destructor {} {
+    delete 0 end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <pos> <path>
+#
+# Clients use this to insert a control into this panel.  The control
+# is inserted into the list at position <pos>, which can be an integer
+# starting from 0 or the keyword "end".  Information about the control
+# is taken from the specified <path>.
+#
+# Returns a name that can be used to identify the control in other
+# methods.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::insert {pos path} {
+    if {$pos ne "end" && ![string is integer $pos]} {
+        set pos [index $pos]
+    }
+
+    incr _counter
+    set name "control$_counter"
+    set path [$_owner xml element -as path $path]
+
+    set _name2info($name-path) $path
+    set _name2info($name-id) [$_owner xml element -as id $path]
+    set _name2info($name-label) ""
+    set _name2info($name-type) ""
+    set _name2info($name-value) [set w $_frame.v$name]
+    set _name2info($name-enable) "yes"
+    set _name2info($name-disablestyle) "greyout"
+
+    set type [$_owner xml element -as type $path]
+    set _name2info($name-type) $type
+    switch -- $type {
+        choice {
+            Rappture::ChoiceEntry $w $_owner $path
+            bind $w <<Value>> [itcl::code $this _controlChanged $name]
+        }
+        filechoice {
+            Rappture::FileChoiceEntry $w $_owner $path
+            bind $w <<Value>> [itcl::code $this _controlChanged $name]
+        }
+        filelist {
+            Rappture::FileListEntry $w $_owner $path
+            bind $w <<Value>> [itcl::code $this _controlChanged $name]
+        }
+        group {
+            Rappture::GroupEntry $w $_owner $path
+        }
+        loader {
+            Rappture::Loader $w $_owner $path -tool [$_owner tool]
+            bind $w <<Value>> [itcl::code $this _controlChanged $name]
+        }
+        number {
+            Rappture::NumberEntry $w $_owner $path
+            bind $w <<Value>> [itcl::code $this _controlChanged $name]
+        }
+        integer {
+            Rappture::IntegerEntry $w $_owner $path
+            bind $w <<Value>> [itcl::code $this _controlChanged $name]
+        }
+        boolean {
+            Rappture::BooleanEntry $w $_owner $path
+            bind $w <<Value>> [itcl::code $this _controlChanged $name]
+        }
+        string {
+            Rappture::TextEntry $w $_owner $path
+            bind $w <<Final>> [itcl::code $this _controlChanged $name]
+        }
+        drawing {
+            Rappture::DrawingEntry $w $_owner $path
+        }
+        image {
+            Rappture::ImageEntry $w $_owner $path
+        }
+        control {
+            set label [string trim [$_owner xml get $path.label]]
+            if {"" == $label} {
+                set label "Simulate"
+            }
+            set service [string trim [$_owner xml get $path.service]]
+            button $w -text $label -command [list $service run]
+        }
+        separator {
+            frame $w -class Separator -height 10
+        }
+        note {
+            Rappture::Note $w $_owner $path
+        }
+        periodicelement {
+            Rappture::PeriodicElementEntry $w $_owner $path
+            bind $w <<Value>> [itcl::code $this _controlChanged $name]
+        }
+        default {
+            error "don't know how to add control type \"$type\""
+        }
+    }
+
+    #
+    # If this element has an <enable> expression, then register
+    # its controlling widget here.
+    #
+    set disablestyle [string trim [$_owner xml get $path.about.disablestyle]]
+    if { $disablestyle != "" } {
+        set _name2info($name-disablestyle) $disablestyle
+    }
+    #
+    # If this element has an <enable> expression, then register
+    # its controlling widget here.
+    #
+    set enable [string trim [$_owner xml get $path.about.enable]]
+    if {"" == $enable} {
+        set enable yes
+    }
+    if {![string is boolean $enable]} {
+        set re {([a-zA-Z_]+[0-9]*|\([^\(\)]+\)|[a-zA-Z_]+[0-9]*\([^\(\)]+\))(\.([a-zA-Z_]+[0-9]*|\([^\(\)]+\)|[a-zA-Z_]+[0-9]*\([^\(\)]+\)))*(:[-a-zA-Z0-9/]+)?}
+        set rest $enable
+        set enable ""
+        set deps ""
+        while {1} {
+            if {[regexp -indices $re $rest match]} {
+                foreach {s0 s1} $match break
+
+                if {[string index $rest [expr {$s0-1}]] == "\""} {
+                    # string in ""'s? then leave it alone
+                    append enable [string range $rest 0 [expr {$s0-1}]]
+                    set rest [string range $rest $s0 end]
+                    if {[regexp -indices {[^\"]+\"} $rest match]} {
+                        foreach {s0 s1} $match break
+                        append enable [string range $rest $s0 $s1]
+                        set rest [string range $rest [expr {$s1+1}] end]
+                    } else {
+                        puts stderr "WARNING: mismatched quote in enable condition for $path"
+                        puts stderr "   expr: [string trim [$_owner xml get $path.about.enable]]"
+                        set rest ""
+                    }
+                } else {
+                    #
+                    # This is a symbol which should be substituted
+                    # it can be either:
+                    #   input.foo.bar
+                    #   input.foo.bar:units
+                    #
+                    set cpath [string range $rest $s0 $s1]
+                    set parts [split $cpath :]
+                    set ccpath [lindex $parts 0]
+                    set units [lindex $parts 1]
+
+                    # make sure we have the standard path notation
+                    set stdpath [$_owner regularize $ccpath]
+                    if {"" == $stdpath} {
+                        puts stderr "WARNING: don't recognize parameter $cpath in <enable> expression for $path.  This may be buried in a structure that is not yet loaded."
+                        set stdpath $ccpath
+                    }
+                    # substitute [_controlValue ...] call in place of path
+                    append enable [string range $rest 0 [expr {$s0-1}]]
+                    append enable [format {[_controlValue %s %s]} $stdpath $units]
+                    lappend deps $stdpath
+                    set rest [string range $rest [expr {$s1+1}] end]
+                }
+            } else {
+                append enable $rest
+                break
+            }
+        }
+
+        foreach cpath $deps {
+            $_owner dependenciesfor $cpath $path
+        }
+    }
+    set _name2info($name-enable) $enable
+    $_owner widgetfor $path $w
+
+    if {[lsearch {control group drawing separator note} $type] < 0} {
+        # make a label for this control
+        set label [$w label]
+        if {$label ne ""} {
+            set _name2info($name-label) $_frame.l$name
+            set font [option get $itk_component(hull) labelFont Font]
+            label $_name2info($name-label) -text [_formatLabel $label] \
+                -font $font
+        }
+
+        # register the tooltip for this control
+        set tip [$w tooltip]
+        if {$tip ne ""} {
+            Rappture::Tooltip::for $w $tip -log $path
+
+            # add the tooltip to the label too, if there is one
+            if {$_name2info($name-label) ne ""} {
+                Rappture::Tooltip::for $_name2info($name-label) $tip -log $path
+            }
+        }
+    }
+
+    # insert the new control onto the known list
+    set _controls [linsert $_controls $pos $name]
+    _monitor $name on
+
+    # now that we have a new control, we should fix the layout
+    $_dispatcher event -idle !layout
+    _controlChanged $name
+
+    return $name
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete <first> ?<last>?
+#
+# Clients use this to delete one or more controls from this widget.
+# The <first> and <last> represent the integer index of the desired
+# control.  You can use the "index" method to convert a control name to
+# its integer index.  If only <first> is specified, then that one
+# control is deleted.  If <last> is specified, then all controls in the
+# range <first> to <last> are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::delete {first {last ""}} {
+    if {$last == ""} {
+        set last $first
+    }
+    if {![string is integer $first]} {
+        set first [index $first]
+    }
+    if {![string is integer $last]} {
+        set last [index $last]
+    }
+
+    foreach name [lrange $_controls $first $last] {
+        _monitor $name off
+
+        if {"" != $_name2info($name-label)} {
+            destroy $_name2info($name-label)
+        }
+        if {"" != $_name2info($name-value)} {
+            destroy $_name2info($name-value)
+        }
+        $_owner widgetfor $_name2info($name-path) ""
+        array unset _name2info $name-*
+    }
+    set _controls [lreplace $_controls $first $last]
+
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# USAGE: index <name>|<path>|@n|end
+#
+# Clients use this to convert a control <name> into its corresponding
+# integer index.  Returns an error if the <name> is not recognized.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::index {val} {
+    set i [lsearch $_controls $val]
+    if {$i >= 0} {
+        return $i
+    }
+    if {[regexp {^@([0-9]+)$} $val match i]} {
+        return $i
+    }
+    if {$val eq "end"} {
+        return [expr {[llength $_controls]-1}]
+    }
+
+    # treat as a path name and search for this path
+    foreach name $_controls {
+        if {$_name2info($name-path) eq $val} {
+            set i [lsearch $_controls $name]
+            if {$i >= 0} {
+                return $i
+            }
+        }
+    }
+
+    error "bad control name \"$name\": should be @int or \"end\" or path name or one of [join [lsort $_controls] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: control ?-label|-value|-path|-enable? ?<name>|@n?
+#
+# Clients use this to get information about controls.  With no args, it
+# returns a list of all control names.  Otherwise, it returns the frame
+# associated with a control name.  The -label option requests the label
+# widget instead of the value widget.  The -path option requests the
+# path within the XML that the control affects.  The -enable option
+# requests the enabling condition for this control.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::control {args} {
+    if {[llength $args] == 0} {
+        return $_controls
+    }
+    Rappture::getopts args params {
+        flag switch -value default
+        flag switch -label
+        flag switch -path
+        flag switch -enable
+        flag switch -disablestyle
+    }
+    if {[llength $args] == 0} {
+        error "missing control name"
+    }
+    set i [index [lindex $args 0]]
+    set name [lindex $_controls $i]
+
+    set opt $params(switch)
+    return $_name2info($name$opt)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: refresh
+#
+# Clients use this to refresh the layout of the control panel
+# whenever a widget within the panel changes visibility state.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::refresh {} {
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _layout
+#
+# Used internally to fix the layout of controls whenever controls
+# are added or deleted, or when the control arrangement changes.
+# There are a lot of heuristics here trying to achieve a "good"
+# arrangement of controls.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::_layout {} {
+    #
+    # Clear any existing layout
+    #
+    foreach {rmax cmax} [grid size $_frame] break
+    for {set r 0} {$r < $rmax} {incr r} {
+        grid rowconfigure $_frame $r -weight 0 -minsize 0
+    }
+    grid rowconfigure $_frame 99 -weight 0
+
+    for {set c 0} {$c < $cmax} {incr c} {
+        grid columnconfigure $_frame $c -weight 0 -minsize 0
+    }
+
+    foreach name $_controls {
+        foreach elem {label value} {
+            set w $_name2info($name-$elem)
+            if {$w ne "" && [winfo exists $w]} {
+                grid forget $w
+            }
+        }
+    }
+    grid forget $_frame.empty
+
+    if {[$_tabs size] > 0} {
+        $_tabs delete 0 end
+    }
+
+    #
+    # Decide which widgets should be shown and which should be hidden.
+    #
+    set hidden ""
+    set showing ""
+    foreach name $_controls {
+        set show 1
+        set cond $_name2info($name-enable)
+        if {[string is boolean $cond] && !$cond} {
+            # hard-coded "off" -- ignore completely
+
+            # When the "enable" of a control is hardcoded "off", "0", etc., it
+            # means to hide the control. This is used by bandstrlab to add
+            # invisible parameters to a structure.  The value of the parameter
+            # is used by other widgets with enable statements.
+
+            # The proper method for doing this is to add a
+            #   <disablestyle>hide<disablestyle>
+            # tag to the about section of the control.
+
+        } elseif {[catch {expr $cond} show] == 0} {
+            set type $_name2info($name-type)
+            set disablestyle $_name2info($name-disablestyle)
+            set lwidget $_name2info($name-label)
+            set vwidget $_name2info($name-value)
+            if {[lsearch -exact {group image structure} $type] >= 0 ||
+                $disablestyle == "hide" } {
+                if {$show ne "" && $show} {
+                    lappend showing $name
+                } else {
+                    lappend hidden $name
+                }
+            } else {
+                # show other objects, but enable/disable them
+                lappend showing $name
+                if {$show ne "" && $show} {
+                    catch {$vwidget configure -state normal}
+                    if {[winfo exists $lwidget]} {
+                        $lwidget configure -foreground \
+                            [lindex [$lwidget configure -foreground] 3]
+                    }
+                } else {
+                    catch {$vwidget configure -state disabled}
+                    if {[winfo exists $lwidget]} {
+                        $lwidget configure -foreground gray
+                    }
+                }
+            }
+        } else {
+            bgerror "Error in <enable> expression for \"$_name2info($name-path)\":\n  $show"
+        }
+    }
+
+    # store the showing tabs in the object so it can be used in _changeTabs
+    set _showing $showing
+
+    #
+    # Decide on a layout scheme:
+    #   default ...... tabs for groups of groups; vertical otherwise
+    #   tabs ......... tabbed notebook
+    #   vertical ..... "label: value" down in rows
+    #   horizontal ... "label: value" across columns
+    #   sentence ..... text with embedded widgets
+    #
+    set _scheme $itk_option(-layout)
+    if {$_scheme eq "" || $_scheme eq "tabs"} {
+        if {[llength $showing] < 2} {
+            set _scheme "vertical"
+        } else {
+            set _scheme "tabs"
+            foreach name $showing {
+                set w $_name2info($name-value)
+                if {[winfo class $w] ne "GroupEntry"} {
+                    # something other than a group? then fall back on vertical
+                    set _scheme "vertical"
+                    break
+                }
+            }
+        }
+    }
+
+    # if the layout is "sentence:..." then create new parts
+    if {[string match {sentence:*} $itk_option(-layout)]
+        && [array size _sentenceparts] == 0} {
+        set n 0
+        set font [option get $itk_component(hull) labelFont Font]
+        set str [string range $itk_option(-layout) 9 end]
+        while {[regexp -indices {\$\{([a-zA-Z0-9_]+)\}} $str match name]} {
+            foreach {s0 s1} $name break
+            set name [string range $str $s0 $s1]
+
+            # create a label for the string before the substitution
+            foreach {s0 s1} $match break
+            set prefix [string trim [string range $str 0 [expr {$s0-1}]]]
+            if {$prefix ne ""} {
+                set lname $_frame.sentence[incr n]
+                label $lname -text $prefix -font $font
+                lappend _sentenceparts(all) $lname
+                lappend _sentenceparts(fragments) $lname
+            }
+
+            # add the widget for the substitution part
+            set found ""
+            foreach c $_controls {
+                if {$_name2info($c-id) eq $name} {
+                    set found $c
+                    break
+                }
+            }
+            if {$found ne ""} {
+                lappend _sentenceparts(all) $_name2info($found-value)
+            } else {
+                puts stderr "WARNING: name \"$name\" in sentence layout \"$itk_option(-layout)\" not recognized"
+            }
+
+            set str [string range $str [expr {$s1+1}] end]
+        }
+
+        # create a label for any trailing string
+        set str [string trim $str]
+        if {$str ne ""} {
+            set lname $_frame.sentence[incr n]
+            label $lname -text $str -font $font
+            lappend _sentenceparts(all) $lname
+            lappend _sentenceparts(fragments) $lname
+        }
+    }
+
+    switch -glob -- $_scheme {
+        tabs {
+            #
+            # SCHEME: tabs
+            # put a series of groups into a tabbed notebook
+            #
+
+            # stop covering up the tabset and put the _frame inside the tabs
+            pack forget $_frame
+            $_tabs configure -width 0 -height 0
+
+            set gn 1
+            foreach name $showing {
+                set wv $_name2info($name-value)
+                $wv configure -heading no
+                set label [$wv component heading cget -text]
+                if {"" == $label} {
+                    set label "Group #$gn"
+                }
+                set _name2info($name-label) $label
+                $_tabs insert end $name -text $label \
+                    -activebackground $itk_option(-background) \
+                    -window $_frame -fill both
+                incr gn
+            }
+
+            # compute the overall size
+            # BE CAREFUL: do this after setting "-heading no" above
+            $_dispatcher event -now !resize
+
+            grid columnconfigure $_frame 0 -weight 1
+            grid rowconfigure $_frame 0 -weight 1
+
+            $_tabs select 0; _changeTabs
+        }
+
+        vertical {
+            #
+            # SCHEME: vertical
+            # simple "Label: Value" layout
+            #
+            if {[$_tabs size] > 0} {
+                $_tabs delete 0 end
+            }
+            pack $_frame -expand yes -fill both
+            $_tabs configure -width [winfo reqwidth $_frame] \
+                -height [winfo reqheight $_frame]
+
+            set expand 0  ;# most controls float to top
+            set row 0
+            foreach name $showing {
+                set wl $_name2info($name-label)
+                if {$wl != "" && [winfo exists $wl]} {
+                    grid $wl -row $row -column 0 -sticky e
+                }
+
+                set wv $_name2info($name-value)
+                if {$wv ne "" && [winfo exists $wv]} {
+                    if {$wl != ""} {
+                        grid $wv -row $row -column 1 -sticky ew
+                    } else {
+                        grid $wv -row $row -column 0 -columnspan 2 -sticky ew
+                    }
+
+                    grid rowconfigure $_frame $row -weight 0
+
+                    switch -- [winfo class $wv] {
+                        TextEntry {
+                            if {[regexp {[0-9]+x[0-9]+} [$wv size]]} {
+                                grid $wl -sticky ne -pady 4
+                                grid $wv -sticky nsew
+                                grid rowconfigure $_frame $row -weight 1
+                                grid columnconfigure $_frame 1 -weight 1
+                                set expand 1
+                            }
+                        }
+                        GroupEntry {
+                            $wv configure -heading yes
+
+                            #
+                            # Scan through all children in this group
+                            # and see if any demand more space.  If the
+                            # group contains a structure or a note, then
+                            # make sure that the group itself is set to
+                            # expand/fill.
+                            #
+                            set queue [winfo children $wv]
+                            set expandgroup 0
+                            while {[llength $queue] > 0} {
+                                set w [lindex $queue 0]
+                                set queue [lrange $queue 1 end]
+                                set c [winfo class $w]
+                                if {[lsearch {DeviceEditor Note} $c] >= 0} {
+                                    set expandgroup 1
+                                    break
+                                }
+                                eval lappend queue [winfo children $w]
+                            }
+                            if {$expandgroup} {
+                                set expand 1
+                                grid $wv -sticky nsew
+                                grid rowconfigure $_frame $row -weight 1
+                            }
+                        }
+                        Note {
+                            grid $wv -sticky nsew
+                            grid rowconfigure $_frame $row -weight 1
+                            set expand 1
+                        }
+                    }
+                    grid columnconfigure $_frame 1 -weight 1
+                }
+
+                incr row
+                grid rowconfigure $_frame $row -minsize $itk_option(-padding)
+                incr row
+            }
+            grid $_frame.empty -row $row
+
+            #
+            # If there are any hidden items, then make the bottom of
+            # this form fill up any extra space, so the form floats
+            # to the top.  Otherwise, it will jitter around as the
+            # hidden items come and go.
+            #
+            if {[llength $hidden] > 0 && !$expand} {
+                grid rowconfigure $_frame 99 -weight 1
+            } else {
+                grid rowconfigure $_frame 99 -weight 0
+            }
+        }
+
+        horizontal {
+            #
+            # SCHEME: horizontal
+            # lay out left to right
+            #
+            if {[$_tabs size] > 0} {
+                $_tabs delete 0 end
+            }
+            pack $_frame -expand yes -fill both
+            $_tabs configure -width [winfo reqwidth $_frame] \
+                -height [winfo reqheight $_frame]
+
+            set col 0
+            set pad [expr {$itk_option(-padding)/2}]
+            foreach name $showing {
+                set wl $_name2info($name-label)
+                if {$wl != "" && [winfo exists $wl]} {
+                    grid $wl -row 0 -column $col -sticky e -padx $pad
+                    incr col
+                }
+
+                set wv $_name2info($name-value)
+                if {$wv != "" && [winfo exists $wv]} {
+                    grid $wv -row 0 -column $col -sticky ew -padx $pad
+                    grid columnconfigure $_frame $col -weight 0
+                    incr col
+                }
+            }
+        }
+
+        sentence:* {
+            #
+            # SCHEME: sentence
+            # lay out left to right with sentence parts: "( [x] , [y] )"
+            #
+            if {[$_tabs size] > 0} {
+                $_tabs delete 0 end
+            }
+            pack $_frame -expand yes -fill both
+            $_tabs configure -width [winfo reqwidth $_frame] \
+                -height [winfo reqheight $_frame]
+
+            set col 0
+            set pad [expr {$itk_option(-padding)/2}]
+            foreach widget $_sentenceparts(all) {
+                grid $widget -row 0 -column $col -padx $pad
+                incr col
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _monitor <name> <state>
+#
+# Used internally to add/remove bindings that cause the widget
+# associated with <name> to notify this controls widget of size
+# changes.  Whenever there is a size change, this controls widget
+# should fix its layout.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::_monitor {name state} {
+    set tag "Controls-$this"
+    set wv $_name2info($name-value)
+    if {[catch {bindtags $wv} btags]} {
+        return
+    }
+    set i [lsearch $btags $tag]
+
+    if {$state} {
+        if {$i < 0} {
+            bindtags $wv [linsert $btags 0 $tag]
+        }
+    } else {
+        if {$i >= 0} {
+            bindtags $wv [lreplace $btags $i $i]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _controlChanged <name>
+#
+# Invoked automatically whenever the value for a control changes.
+# Sends a notification along to the tool controlling this panel.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::_controlChanged {name} {
+    set path $_name2info($name-path)
+
+    #
+    # Let the owner know that this control changed.
+    #
+    if {"" != $_owner} {
+        $_owner changed $path
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _controlValue <path> ?<units>?
+#
+# Used internally to get the value of a control with the specified
+# <path>.  Returns the current value for the control.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::_controlValue {path {units ""}} {
+    if {"" != $_owner} {
+        set val [$_owner valuefor $path]
+        if {"" != $units} {
+            set val [Rappture::Units::convert $val -to $units -units off]
+        }
+        return $val
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _formatLabel <string>
+#
+# Used internally to format a label <string>.  Trims any excess
+# white space and adds a ":" to the end.  That way, all labels
+# have a uniform look.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::_formatLabel {str} {
+    set str [string trim $str]
+    if {"" != $str && [string index $str end] != ":"} {
+        append str ":"
+    }
+    return $str
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _changeTabs ?-user|-program?
+#
+# Used internally to change tabs when the user clicks on a tab
+# in the "tabs" layout mode.  This mode is used when the widget
+# contains nothing but groups, as a compact way of representing
+# the groups.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::_changeTabs {{why -program}} {
+    set i [$_tabs index select]
+    # we use _showing here instead of _controls because sometimes tabs
+    # are disabled, and the index of the choosen tab always matches
+    # _showing, even if tabs are disabled.
+    set name [lindex $_showing $i]
+    if {$name ne ""} {
+        foreach w [grid slaves $_frame] {
+            grid forget $w
+        }
+
+        set wv $_name2info($name-value)
+        grid $wv -row 0 -column 0 -sticky nsew
+
+        $_tabs tab configure [$_tabs get $i] -window $_frame
+
+        if {$why eq "-user"} {
+            Rappture::Logger::log group $_name2info($name-path)
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _resize
+#
+# Used internally to resize the widget when its contents change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Controls::_resize {} {
+    switch -glob -- $_scheme {
+        tabs {
+            # in "tabs" mode, the overall size is the largest for all pages
+            set maxw 0
+            set maxh 0
+            update idletasks
+            foreach name $_controls {
+                set wv $_name2info($name-value)
+                set w [winfo reqwidth $wv]
+                if {$w > $maxw} { set maxw $w }
+                set h [winfo reqheight $wv]
+                if {$h > $maxh} { set maxh $h }
+            }
+
+            # Turn off propagation temporarily so that we don't keep
+            # recursing back into this routine when we change the frame's
+            # dimensions below.
+            grid propagate $_frame no
+
+            $_frame configure -width $maxw -height $maxh
+
+            # Turn progagation back on so that the parent widget recognizes
+            # when the widget changes size or is unpacked.
+            grid propagate $_frame yes
+        }
+        vertical - horizontal - sentence* {
+            # in other modes, just use normal size propagation
+            grid propagate $_frame yes
+        }
+        default {
+            error "bad layout scheme \"$_scheme\""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -padding
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Controls::padding {
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -layout
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Controls::layout {
+    # clear any existing sentence parts
+    if {[array size _sentenceparts] > 0} {
+        foreach part $_sentenceparts(fragments) {
+            destroy $part
+        }
+        catch {unset _sentenceparts}
+    }
+
+    if {![regexp {^(|horizontal|vertical|tabs|sentence:.+)$} $itk_option(-layout)]} {
+        puts "ERROR: bad layout option \"$itk_option(-layout)\" -- should be horizontal, vertical, tabs or sentence:..."
+        set itk_option(-layout) ""
+    }
+
+    # recompute the layout at some point
+    $_dispatcher event -idle !layout
+}
Index: /tags/1.6.0/gui/scripts/coverflow.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/coverflow.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/coverflow.tcl	(revision 6168)
@@ -0,0 +1,624 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: Coverflow - browse through a series of images
+#
+#  This widget works like the coverflow browser on iOS.  It presents
+#  a series of images with one in the center and others off to the
+#  sides.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Coverflow.width 5i widgetDefault
+option add *Coverflow.height 2i widgetDefault
+option add *Coverflow.background black widgetDefault
+option add *Coverflow.padding 20 widgetDefault
+option add *Coverflow.spacing 40 widgetDefault
+option add *Coverflow.font {Helvetica 10} widgetDefault
+option add *Coverflow.fontColor white widgetDefault
+
+itcl::class Rappture::Coverflow {
+    inherit itk::Widget
+
+    itk_option define -selectcommand selectCommand SelectCommand ""
+    itk_option define -padding padding Padding 0
+    itk_option define -spacing spacing Spacing 0
+    itk_option define -font font Font ""
+    itk_option define -fontcolor fontColor Foreground ""
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method insert {where args}
+    public method itemconfigure {index args}
+    public method delete {args}
+    public method get {index args}
+    public method size {}
+    public method select {index args}
+
+    private method _itemForIndex {index}
+    private method _redraw {args}
+    private method _rescale {tid height}
+    private method _event {type x y}
+
+    private variable _dispatcher ""  ;# dispatcher for !events
+    private variable _tweener ""     ;# used for animations
+    private variable _items ""       ;# list of tag names for items
+    private variable _data           ;# data for coverflow items
+    private variable _counter 0      ;# for generating unique item IDs
+    private variable _current ""     ;# currently selected item
+    private variable _click ""       ;# click point from last _event call
+}
+
+itk::usual Rappture::Coverflow {
+    keep -background -cursor
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::constructor {args} {
+    itk_option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    # create a dispatcher for events
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !redraw
+    $_dispatcher dispatch $this !redraw [itcl::code $this _redraw]
+
+    # create a tweener for animations
+    set _tweener [Rappture::Tweener ::#auto -duration 300 \
+        -command [list $_dispatcher event -idle !redraw -position %v] \
+        -finalize [list $_dispatcher event -idle !redraw]]
+
+    itk_component add area {
+        canvas $itk_interior.area
+    } {
+        keep -background -borderwidth -relief
+    }
+    pack $itk_component(area) -side left -expand yes -fill both
+
+    bind $itk_component(area) <Configure> \
+        [list $_dispatcher event -idle !redraw]
+
+    bind $itk_component(area) <ButtonPress> \
+        [itcl::code $this _event click %x %y]
+    bind $itk_component(area) <B1-Motion> \
+        [itcl::code $this _event drag %x %y]
+    bind $itk_component(area) <ButtonRelease> \
+        [itcl::code $this _event release %x %y]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::destructor {} {
+    itcl::delete object $_tweener
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <index> <image> ?-option <value>...?
+#
+# Inserts a new image into the coverflow at the position <index>, which
+# is an integer starting from 0 at the left, or the keyword "end" for
+# the right.  The remaining arguments are configuration options:
+#
+#   -tag ....... unique tag name for this item
+#   -text ...... text displayed beneath the image when selected
+#   -data ...... data sent to the callback command
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::insert {where imh args} {
+    array set params $args
+    if {[info exists params(-tag)]} {
+        set tid $params(-tag)
+        unset params(-tag)
+    } else {
+        set tid "item[incr _counter]"
+    }
+
+    if {[info exists _data($tid-text)]} {
+        error "item \"$tid\" already exists -- tags must be unique"
+    }
+    set _items [linsert $_items $where $tid]
+    set _data($tid-image) $imh
+    set _data($tid-scaled) [image create photo]
+    set _data($tid-lastupdate) ""
+    set _data($tid-text) ""
+    set _data($tid-data) ""
+
+    eval itemconfigure $tid [array get params]
+
+    if {$_current eq ""} {
+        select $tid
+    }
+
+    # return the tag name for this new item
+    return $tid
+}
+
+# ----------------------------------------------------------------------
+# USAGE: itemconfigure <indexOrTag> -option <value> ...
+#
+# Used to modify an existing item.  The <indexOrTag> can be an integer
+# index for the item or a -tag name given when the item was created.
+# The remaining -option/value pairs are used to modify the values
+# associated with the item.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::itemconfigure {index args} {
+    set n [_itemForIndex $index]
+    if {$n eq ""} {
+        error "bad index \"$index\": should be integer or -tag name"
+    }
+    set tid [lindex $_items $n]
+
+    # store the new data and then redraw
+    foreach {key val} $args {
+        if {[info exists _data($tid$key)]} {
+            set _data($tid$key) $val
+
+            # make sure we redraw the flow at some point
+            $_dispatcher event -idle !redraw
+        } else {
+            error "bad option \"$key\": should be -text, -data"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<indexOrTag> <indexOrTag>...?
+# USAGE: delete all
+#
+# Deletes one or more entries from this listbox.  With the "all"
+# keyword, it deletes all entries in the listbox.  Otherwise, it
+# deletes one or more entries as specified.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::delete {args} {
+    if {$args eq "all"} {
+        set args $_items
+    }
+    foreach index $args {
+        set n [_itemForIndex $index]
+        if {$n ne ""} {
+            set tid [lindex $_items $n]
+            set _items [lreplace $_items $n $n]
+
+            image delete $_data($tid-scaled)
+            unset _data($tid-image)
+            unset _data($tid-scaled)
+            unset _data($tid-lastupdate)
+            unset _data($tid-text)
+            unset _data($tid-data)
+
+            # if this item was selected, then clear that
+            if {$tid eq $_current} {
+                if {$n < [llength $_items]} {
+                    set _current [lindex $_items $n]
+                } else {
+                    set _current [lindex $_items end]
+                }
+            }
+
+            # make sure we redraw the list at some point
+            $_dispatcher event -idle !redraw
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get <indexOrTag> ?-option -option...?
+#
+# Used to query information about an item.  With no extra args, it
+# returns the tag with an entry, or "" if the entry is not recognized.
+# If additional -option values are specified, then data values are
+# returned for the requested options.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::get {index args} {
+    set n [_itemForIndex $index]
+    if {$n eq ""} {
+        return ""
+    }
+    if {[llength $args] == 0} {
+        return [lindex $_items $n]
+    }
+
+    set vlist ""
+    foreach option $args {
+        if {[info exists _data($tid$option)]} {
+            lappend vlist $_data($tid$option)
+        } else {
+            error "invalid option \"$option\""
+        }
+    }
+    return $vlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: size
+#
+# Returns the number of items in the listbox.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::size {} {
+    return [llength $_items]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: select <indexOrTag> ?-animate on|off?
+#
+# Makes the given item the "current" item in the coverflow.  This is
+# the item that is shown front-and-center.  If this was not already
+# the current item, then the -selectcommand is invoked with information
+# related to the selected item.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::select {index args} {
+    set n [_itemForIndex $index]
+    if {$n eq ""} {
+        error "bad index \"$index\": should be integer or -tag name"
+    }
+    set tid [lindex $_items $n]
+    if {$tid eq ""} {
+        error "bad index \"$index\": index out of range"
+    }
+
+    set animate on
+    array set params $args
+    if {[info exists params(-animate)]} {
+        set animate $params(-animate)
+    }
+
+    if {$_current ne $tid} {
+        set from [lsearch -exact $_items $_current]
+        set _current $tid
+
+        # invoke the callback to react to this selection
+        if {$itk_option(-selectcommand) ne ""} {
+            set arglist $_data($tid-image)
+            foreach opt {-text -data} {
+                lappend arglist $opt $_data($tid$opt)
+            }
+            uplevel #0 $itk_option(-selectcommand) $arglist
+        }
+
+        # animate the motion and redraw the current choice
+        if {$from >= 0 && $animate} {
+            $_tweener configure -from $from -to $n
+            $_tweener go -restart
+        } else {
+            $_dispatcher event -idle !redraw
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _itemForIndex <indexOrTag>
+#
+# Converts the given <indexOrTag> to a valid entry name.  If the
+# <indexOrTag> is an integer, then it is interpreted as an index
+# in the range 0 to the size of the list.  Otherwise, it is treated
+# as a -tag name that may have been used when creating the item.
+#
+# Returns an integer index or "" if the item is not recognized.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::_itemForIndex {index} {
+    if {[string is integer -strict $index]} {
+        return $index
+    }
+    if {$index eq "end"} {
+        return [llength $_items]
+    }
+    set n [lsearch -exact $_items $index]
+    if {$n >= 0} {
+        return $n
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw ?-position <float>?
+#
+# Used internally to redraw all items in the list after it has changed.
+# With no args, it draws the current state with the selected image
+# shown in the middle.  The -position specifies an index, but perhaps
+# with a fractional part.  An index like 2.3 is drawn with the center
+# between images 2 and 3 -- about 1/3 of the way through the animation.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::_redraw {args} {
+    set c $itk_component(area)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    $c delete all
+
+    if {$w == 1 && $h == 1} {
+        # just starting up -- forget it
+        return
+    }
+
+    # get the desired position from the args or the current position
+    set pos [lsearch $_items $_current]
+
+    array set params $args
+    if {[info exists params(-position)]} {
+        set pos $params(-position)
+    }
+
+    if {$pos < 0} { set pos 0 }
+    if {$pos >= [llength $_items]-1} { set pos [expr {[llength $_items]-1}] }
+
+    # does any image have text?  if so, make room for it along the bottom
+    set textht 0
+    foreach tid $_items {
+        if {$_data($tid-text) ne ""} {
+            set textht [font metrics $itk_option(-font) -linespace]
+            break
+        }
+    }
+
+    # figure out the height of the covers and their midpoint
+    set ih [expr {$h-2*$itk_option(-padding)-$textht}]
+    set y0 [expr {($h-$textht)/2}]
+
+    #
+    # If the position is an integer, then that image is centered
+    # in the current view.  Otherwise, we're between two images.
+    #
+    set xmid [expr {$w/2}]
+    set spacing $itk_option(-spacing)
+    set shadow 0.8
+    set shorten 0.8
+    set len 0.3
+
+    if {abs($pos-round($pos)) < 0.05} {
+        # one image right in the middle
+        set lpos [expr {round($pos)}]
+        set rpos $lpos
+
+        # find the x-coord for the left/right sides of that image
+        set tid [lindex $_items $lpos]
+        set origw [image width $_data($tid-image)]
+        set origh [image height $_data($tid-image)]
+        set iw [expr {$ih*$origw/$origh}]
+        set lx [expr {$xmid-$iw/2}]
+        set rx [expr {$xmid+$iw/2}]
+    } else {
+        # between images -- pos and pos+1
+        set lpos [expr {round(floor($pos))}]
+        set rpos [expr {$lpos+1}]
+
+        set llen [expr {$len + (1-$len)*($rpos-$pos)}]
+        set lside [expr {$shorten + (1-$shorten)*($rpos-$pos)}]
+        set lshadow [expr {$shadow*($pos-$lpos)}]
+        set rlen [expr {$len + (1-$len)*($pos-$lpos)}]
+        set rside [expr {$shorten + (1-$shorten)*($pos-$lpos)}]
+        set rshadow [expr {$shadow*($rpos-$pos)}]
+
+        # find the x-coord for the left/right sides of the two images
+        set tid [lindex $_items $lpos]
+        set origw [image width $_data($tid-image)]
+        set origh [image height $_data($tid-image)]
+        set iw0 [expr {$ih*$origw/$origh}]
+        set lx0 [expr {$xmid-$iw0/2}]
+        set rx0 [expr {$xmid+$iw0/2}]
+
+        set tid [lindex $_items $rpos]
+        set origw [image width $_data($tid-image)]
+        set origh [image height $_data($tid-image)]
+        set iw1 [expr {$ih*$origw/$origh}]
+        set lx1 [expr {$xmid-$iw1/2}]
+        set rx1 [expr {$xmid+$iw1/2}]
+
+        set lx [expr {($lx1-$lx0+$spacing)*($rpos-$pos) + $lx0-$spacing}]
+        set rx [expr {($rx1-$rx0-$spacing)*($pos-$lpos) + $rx0+$spacing}]
+    }
+
+    # scan through all images and update their scaling
+    # use -lastupdate to avoid scaling if we're in the same state
+    for {set i 0} {$i < [llength $_items]} {incr i} {
+        set tid [lindex $_items $i]
+        if {$i < $lpos} {
+            set state "left $ih"
+            if {$_data($tid-lastupdate) ne $state} {
+                _rescale $tid $ih
+                squeezer -side right -shadow $shadow -shorten $len \
+                    $_data($tid-scaled) $_data($tid-scaled)
+                set _data($tid-lastupdate) $state
+            }
+        } elseif {$i > $rpos} {
+            set state "right $ih"
+            if {$_data($tid-lastupdate) ne $state} {
+                _rescale $tid $ih
+                squeezer -side left -shadow $shadow -shorten $len \
+                    $_data($tid-scaled) $_data($tid-scaled)
+                set _data($tid-lastupdate) $state
+            }
+        } elseif {$i == $lpos && $i == $rpos} {
+            set state "center $ih"
+            if {$_data($tid-lastupdate) ne $state} {
+                _rescale $tid $ih
+                set _data($tid-lastupdate) $state
+            }
+        } elseif {$i == $lpos} {
+            set state "left $ih ~ $llen"
+            if {$_data($tid-lastupdate) ne $state} {
+                _rescale $tid $ih
+                squeezer -side right -shadow $lshadow -shorten $llen \
+                    -amount $lside $_data($tid-scaled) $_data($tid-scaled)
+                set _data($tid-lastupdate) $state
+            }
+        } elseif {$i == $rpos} {
+            set state "right $ih ~ $rlen"
+            if {$_data($tid-lastupdate) ne $state} {
+                _rescale $tid $ih
+                squeezer -side left -shadow $rshadow -shorten $rlen \
+                    -amount $rside $_data($tid-scaled) $_data($tid-scaled)
+                set _data($tid-lastupdate) $state
+            }
+        }
+    }
+
+    #
+    # Figure out the positions of the various images to the left,
+    # to the right, and in the middle.  Build up a list of items
+    # to draw.
+    #
+    set tiles ""
+
+    # start at left and lay down tiles toward the middle
+    set numOnLeft [expr {round(floor($lx/$spacing))+1}]
+    set i [expr {$lpos-$numOnLeft}]
+    if {$i < 0} { set i 0 }
+    set x0 [expr {$lx - ($lpos-$i)*$spacing}]
+    while {$i < $lpos} {
+        lappend tiles $i $x0 w
+        set x0 [expr {$x0+$spacing}]
+        incr i
+    }
+
+    # start at right and lay down tiles toward the middle
+    set numOnRight [expr {round(floor(($w-$rx)/$spacing))+1}]
+    set i [expr {$rpos+$numOnRight}]
+    if {$i >= [llength $_items]} { set i [expr {[llength $_items]-1}] }
+    set x0 [expr {$rx + ($i-$rpos)*$spacing}]
+    while {$i > $rpos} {
+        lappend tiles $i $x0 e
+        set x0 [expr {$x0-$spacing}]
+        incr i -1
+    }
+
+    # lay down the center image or images
+    if {$lpos == $rpos} {
+        # just one image in the middle
+        lappend tiles $lpos $xmid c
+    } else {
+        # two tiles in a transition
+        if {$llen > $rlen} {
+            lappend tiles $rpos $rx e $lpos $lx w
+        } else {
+            lappend tiles $lpos $lx w $rpos $rx e
+        }
+    }
+
+    # run through the list and draw all items
+    foreach {i x anchor} $tiles {
+        set tid [lindex $_items $i]
+        $c create image $x $y0 -anchor $anchor \
+            -image $_data($tid-scaled) -tags "item$i"
+    }
+
+    # if there is a single center image, show its text
+    if {$lpos == $rpos} {
+        set tid [lindex $_items $lpos]
+        if {$_data($tid-text) ne ""} {
+            $c create text $xmid [expr {$h-$itk_option(-padding)/2}] \
+                -anchor s -text $_data($tid-text) \
+                -font $itk_option(-font) -fill $itk_option(-fontcolor)
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _rescale <tid> <height>
+#
+# Used internally to rescale a single image (associated with item ID
+# tid) to the specified <height>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::_rescale {tid ht} {
+    set iw [image width $_data($tid-image)]
+    set ih [image height $_data($tid-image)]
+    set wd [expr {$ht*$iw/$ih}]
+    $_data($tid-scaled) configure -width $wd -height $ht
+    blt::winop resample $_data($tid-image) $_data($tid-scaled) box
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _event <type> <x> <y>
+#
+# Called whenever the user clicks or interacts with the coverflow.
+# The event <type> is something like "click" or "drag".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Coverflow::_event {type x y} {
+    set c $itk_component(area)
+    switch -- $type {
+        click {
+            set _click [list $x $y]
+        }
+        drag {
+            if {$_click ne "" && $_current ne ""} {
+                foreach {x0 y0} $_click break
+                set delta [expr {double($x-$x0)/$itk_option(-spacing)}]
+                set pos [lsearch -exact $_items $_current]
+                set newpos [expr {$pos+$delta}]
+                $_dispatcher event -idle !redraw -position $newpos
+
+                if {![regexp {dragged} $_click]} {
+                    lappend _click dragged
+                }
+            }
+        }
+        release {
+            if {$_click ne ""} {
+                foreach {x0 y0} $_click break
+                if {abs($x-$x0) > 3 || abs($y-$y0) > 3} {
+                    # one last drag event
+                    _event drag $x $y
+                }
+
+                if {[regexp {dragged} $_click]} {
+                    # adjust the current selection to the current pos
+                    set delta [expr {double($x-$x0)/$itk_option(-spacing)}]
+                    set pos [lsearch -exact $_items $_current]
+                    set newpos [expr {round($pos+$delta)}]
+                    if {$newpos < 0} {set newpos 0}
+                    set max [expr {[llength $_items]-1}]
+                    if {$newpos > $max} {set newpos $max}
+
+                    select $newpos -animate off
+
+                    # select may not change, so do one last proper draw
+                    $_dispatcher event -idle !redraw -position $newpos
+
+                    set _click ""
+                    return
+                }
+            }
+
+            # click in place -- see what image we clicked on
+            set found ""
+            foreach id [$c find overlapping $x $y $x $y] {
+                if {[regexp {item([0-9]+)} [$c gettags $id] match index]} {
+                    set found $index
+                }
+                # keep searching for top-most item in stack
+            }
+            if {$found ne ""} {
+                select $found
+            }
+            set _click ""
+        }
+        default {
+            error "bad option \"$type\": should be click, drag, release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTIONS
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Coverflow::padding {
+    $_dispatcher event -idle !redraw
+}
+itcl::configbody Rappture::Coverflow::spacing {
+    $_dispatcher event -idle !redraw
+}
+itcl::configbody Rappture::Coverflow::font {
+    $_dispatcher event -idle !redraw
+}
+itcl::configbody Rappture::Coverflow::fontcolor {
+    $_dispatcher event -idle !redraw
+}
Index: /tags/1.6.0/gui/scripts/curve.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/curve.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/curve.tcl	(revision 6168)
@@ -0,0 +1,366 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: curve - extracts data from an XML description of a field
+#
+#  This object represents a curve of data in an XML description of
+#  simulator output.  A curve is similar to a field, but a field is
+#  a quantity versus position in device.  A curve is any quantity
+#  versus any other quantity.  This class simplifies the process of
+#  extracting data vectors that represent the curve.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+package require BLT
+
+namespace eval Rappture {
+    # forward declaration
+}
+
+itcl::class Rappture::Curve {
+    constructor {xmlobj path} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method components {{pattern *}}
+    public method mesh {cname }
+    public method values { cname }
+    public method limits {which}
+    public method hints {{key ""}}
+    public method xmarkers {}
+    public method ymarkers {}
+    public method xErrorValues { cname }
+    public method yErrorValues { cname }
+
+    protected method _build {}
+
+    private variable _xmlobj ""  ;      # ref to lib obj with curve data
+    private variable _curve ""   ;      # lib obj representing this curve
+    private variable _comp2xy    ;      # maps component name => x,y vectors
+    private variable _hints      ;      # cache of hints stored in XML
+
+    private variable _xmarkers "";      # list of {x,label,options} triplets.
+    private variable _ymarkers "";      # list of {y,label,options} triplets.
+    private common _counter 0    ;      # counter for unique vector names
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::constructor {xmlobj path} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be LibraryObj"
+    }
+    set _xmlobj $xmlobj
+    set _curve [$xmlobj element -as object $path]
+    # build up vectors for various components of the curve
+    _build
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::destructor {} {
+    itcl::delete object $_curve
+    # don't destroy the _xmlobj! we don't own it!
+
+    foreach name [array names _comp2xy] {
+        eval blt::vector destroy $_comp2xy($name)
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: components ?<pattern>?
+#
+# Returns a list of names for the various components of this curve.
+# If the optional glob-style <pattern> is specified, then it returns
+# only the component names matching the pattern.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::components {{pattern *}} {
+    set rlist ""
+    foreach name [array names _comp2xy] {
+        if {[string match $pattern $name]} {
+            lappend rlist $name
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: mesh ?<name>?
+#
+# Returns the xvec for the specified curve component <name>.
+# If the name is not specified, then it returns the vectors for the
+# overall curve (sum of all components).
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::mesh {cname} {
+    if {[info exists _comp2xy($cname)]} {
+        return [lindex $_comp2xy($cname) 0]  ;# return xv
+    }
+    error "bad component \"$cname\": should be one of [join [lsort [array names _comp2xy]] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: values ?<name>?
+#
+# Returns the yvec for the specified curve component <name>.
+# If the name is not specified, then it returns the vectors for the
+# overall curve (sum of all components).
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::values {cname} {
+    if {[info exists _comp2xy($cname)]} {
+        return [lindex $_comp2xy($cname) 1]  ;# return yv
+    }
+    error "bad component \"$cname\": should be one of [join [lsort [array names _comp2xy]] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: xErrorValues <name>
+#
+# Returns the xvec for the specified curve component <name>.
+# If the name is not specified, then it returns the vectors for the
+# overall curve (sum of all components).
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::xErrorValues { cname } {
+    if {[info exists _comp2xy($cname)]} {
+        return [lindex $_comp2xy($cname) 2]  ;# return xev
+    }
+    error "unknown component \"$cname\": should be one of [join [lsort [array names _comp2xy]] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: yErrorValues <name>
+#
+# Returns the xvec for the specified curve component <name>.
+# If the name is not specified, then it returns the vectors for the
+# overall curve (sum of all components).
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::yErrorValues { cname } {
+    if {[info exists _comp2xy($cname)]} {
+        return [lindex $_comp2xy($cname) 3]  ;# return yev
+    }
+    error "unknown component \"$cname\": should be one of [join [lsort [array names _comp2xy]] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: limits x|xlin|xlog|y|ylin|ylog
+#
+# Returns the {min max} limits for the specified axis.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::limits {which} {
+    set min ""
+    set max ""
+    switch -- $which {
+        x - xlin { set pos 0; set log 0; set axis xaxis }
+        xlog { set pos 0; set log 1; set axis xaxis }
+        y - ylin - v - vlin { set pos 1; set log 0; set axis yaxis }
+        ylog - vlog { set pos 1; set log 1; set axis yaxis }
+        default {
+            error "bad option \"$which\": should be x, xlin, xlog, y, ylin, ylog, v, vlin, vlog"
+        }
+    }
+
+    blt::vector tmp zero
+    foreach comp [array names _comp2xy] {
+        set vname [lindex $_comp2xy($comp) $pos]
+        $vname variable vec
+
+        if {$log} {
+            # on a log scale, use abs value and ignore 0's
+            $vname dup tmp
+            $vname dup zero
+            zero expr {tmp == 0}            ;# find the 0's
+            tmp expr {abs(tmp)}             ;# get the abs value
+            tmp expr {tmp + zero*max(tmp)}  ;# replace 0's with abs max
+            set vmin [blt::vector expr min(tmp)]
+            set vmax [blt::vector expr max(tmp)]
+        } else {
+            set vmin $vec(min)
+            set vmax $vec(max)
+        }
+
+        if {"" == $min} {
+            set min $vmin
+        } elseif {$vmin < $min} {
+            set min $vmin
+        }
+        if {"" == $max} {
+            set max $vmax
+        } elseif {$vmax > $max} {
+            set max $vmax
+        }
+    }
+    blt::vector destroy tmp zero
+
+    set val [$_curve get $axis.min]
+    if {"" != $val && "" != $min} {
+        if {$val > $min} {
+            # tool specified this min -- don't go any lower
+            set min $val
+        }
+    }
+
+    set val [$_curve get $axis.max]
+    if {"" != $val && "" != $max} {
+        if {$val < $max} {
+            # tool specified this max -- don't go any higher
+            set max $val
+        }
+    }
+
+    return [list $min $max]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this curve.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::hints {{keyword ""}} {
+    if {![info exists _hints]} {
+        foreach {key path} {
+            color   about.color
+            group   about.group
+            label   about.label
+            style   about.style
+            type    about.type
+            xdesc   xaxis.description
+            xlabel  xaxis.label
+            xmax    xaxis.max
+            xmin    xaxis.min
+            xscale  xaxis.scale
+            xticks  xaxis.ticklabels
+            xunits  xaxis.units
+            ydesc   yaxis.description
+            ylabel  yaxis.label
+            ymax    yaxis.max
+            ymin    yaxis.min
+            yscale  yaxis.scale
+            yticks  yaxis.ticklabels
+            yunits  yaxis.units
+        } {
+            set str [$_curve get $path]
+            if {"" != $str} {
+                set _hints($key) $str
+            }
+        }
+        if {[info exists _hints(xlabel)] && "" != $_hints(xlabel)
+              && [info exists _hints(xunits)] && "" != $_hints(xunits)} {
+            set _hints(xlabel) "$_hints(xlabel) ($_hints(xunits))"
+        }
+        if {[info exists _hints(ylabel)] && "" != $_hints(ylabel)
+              && [info exists _hints(yunits)] && "" != $_hints(yunits)} {
+            set _hints(ylabel) "$_hints(ylabel) ($_hints(yunits))"
+        }
+
+        if {[info exists _hints(group)] && [info exists _hints(label)]} {
+            # pop-up help for each curve
+            set _hints(tooltip) $_hints(label)
+        }
+        set _hints(xmlobj) $_xmlobj
+    }
+    if {$keyword != ""} {
+        if {[info exists _hints($keyword)]} {
+            return $_hints($keyword)
+        }
+        return ""
+    }
+    return [array get _hints]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _build
+#
+# Used internally to build up the vector representation for the
+# curve when the object is first constructed, or whenever the curve
+# data changes.  Discards any existing vectors and builds everything
+# from scratch.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::_build {} {
+    # discard any existing data
+    foreach name [array names _comp2xy] {
+        eval blt::vector destroy $_comp2xy($name)
+    }
+    catch {unset _comp2xy}
+
+    #
+    # Scan through the components of the curve and create
+    # vectors for each part.
+    #
+    foreach cname [$_curve children -type component] {
+        set xv [blt::vector create \#auto]
+        set yv [blt::vector create \#auto]
+        set xev [blt::vector create \#auto]
+        set yev [blt::vector create \#auto]
+
+        set xydata [$_curve get $cname.xy]
+        if { "" != $xydata} {
+            set tmp [blt::vector create \#auto]
+            $tmp set $xydata
+            $tmp split $xv $yv
+            blt::vector destroy $tmp
+        } else {
+            $xv set [$_curve get $cname.xvector]
+            $yv set [$_curve get $cname.yvector]
+        }
+        if { (([$xv length] == 0) && ([$yv length] == 0)) ||
+             ([$xv length] != [$yv length]) } {
+            # FIXME: need to show an error about improper data.
+            blt::vector destroy $xv $yv
+            set xv ""; set yv ""
+            continue;
+        }
+        $xev set [$_curve get "$cname.xerrorbars"]
+        $yev set [$_curve get "$cname.yerrorbars"]
+        set _comp2xy($cname) [list $xv $yv $xev $yev]
+        incr _counter
+    }
+
+    # Creates lists of x and y marker data.
+    set _xmarkers {}
+    set _ymarkers {}
+    foreach cname [$_curve children -type "marker" xaxis] {
+        set at     [$_curve get "xaxis.$cname.at"]
+        set label  [$_curve get "xaxis.$cname.label"]
+        set styles [$_curve get "xaxis.$cname.style"]
+        set data [list $at $label $styles]
+        lappend _xmarkers $data
+    }
+    foreach cname [$_curve children -type "marker" yaxis] {
+        set at     [$_curve get "yaxis.$cname.at"]
+        set label  [$_curve get "yaxis.$cname.label"]
+        set styles [$_curve get "yaxis.$cname.style"]
+        set data [list $at $label $styles]
+        lappend _ymarkers $data
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: xmarkers
+#
+# Returns the list of settings for each marker on the x-axis.
+# If no markers have been specified the empty string is returned.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::xmarkers {} {
+    return $_xmarkers;
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ymarkers
+#
+# Returns the list of settings for each marker on the y-axis.
+# If no markers have been specified the empty string is returned.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Curve::ymarkers {} {
+    return $_ymarkers;
+}
+
Index: /tags/1.6.0/gui/scripts/datatable.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/datatable.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/datatable.tcl	(revision 6168)
@@ -0,0 +1,155 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: datatable - extracts data from an XML description of a field
+#
+#  This object represents a datatable of data in an XML description of
+#  simulator output.  A datatable is similar to a field, but a field is
+#  a quantity versus position in device.  A datatable is any quantity
+#  versus any other quantity.  This class simplifies the process of
+#  extracting data vectors that represent the datatable.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+package require BLT
+
+namespace eval Rappture {
+    # forward declaration
+}
+
+itcl::class Rappture::DataTable {
+    constructor {xmlobj path} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method components {{pattern *}}
+    public method values {}
+    public method columns {}
+    public method hints {{key ""}}
+
+    protected method Build {}
+    private variable _xmlobj ""  ;      # ref to lib obj with datatable data
+    private variable _datatable "";     # lib obj representing this datatable
+    private variable _columns ""
+    private variable _hints      ;      # cache of hints stored in XML
+    private variable _tree ""
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTable::constructor {xmlobj path} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be LibraryObj"
+    }
+    set _xmlobj $xmlobj
+    set _datatable [$xmlobj element -as object $path]
+
+    # build up vectors for various components of the datatable
+    Build
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTable::destructor {} {
+    itcl::delete object $_datatable
+    blt::tree destroy $_tree
+}
+
+# ----------------------------------------------------------------------
+# USAGE: values
+#
+# Returns the values for the datatable as a BLT tree.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTable::values {} {
+    return $_tree
+}
+
+# ----------------------------------------------------------------------
+# USAGE: columns
+#
+# Returns the columns of the datatable in order.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTable::columns {} {
+    return $_columns
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this datatable.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTable::hints {{keyword ""}} {
+    if {![info exists _hints]} {
+        foreach {key path} {
+            group   about.group
+            label   about.label
+            color   about.color
+            style   about.style
+        } {
+            set str [$_datatable get $path]
+            if {"" != $str} {
+                set _hints($key) $str
+            }
+        }
+    }
+    set _hints(xmlobj) $_xmlobj
+    if { $keyword != "" } {
+        if { [info exists _hints($keyword)] } {
+            return $_hints($keyword)
+        }
+        return ""
+    }
+    return [array get _hints]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Build
+#
+# Used internally to build up the vector representation for the
+# datatable when the object is first constructed, or whenever the datatable
+# data changes.  Discards any existing vectors and builds everything
+# from scratch.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTable::Build {} {
+    # Discard any existing data
+    if { $_tree != "" } {
+        blt::tree destroy $_tree
+        set _tree ""
+    }
+    set _columns {}
+
+    # Sniff for column information: label, descriptions, and style
+    foreach cname [$_datatable children -type "column"] {
+        set label        [$_datatable get "$cname.label"]
+        set description  [$_datatable get "$cname.description"]
+        set style        [$_datatable get "$cname.style"]
+        lappend _columns $label $description $style
+    }
+    set csvdata [$_datatable get csv]
+    set _tree [blt::tree create]
+    if {"" != $csvdata} {
+        set csvlist [blt::csv -data $csvdata]
+        foreach row $csvlist {
+            set child [$_tree insert 0]
+            set c 0
+            foreach value $row {label description style} $_columns {
+                if { $label == "" } {
+                    set label "$c"
+                }
+                $_tree set $child $label $value
+                incr c
+            }
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/datatableresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/datatableresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/datatableresult.tcl	(revision 6168)
@@ -0,0 +1,364 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: datatableresult - X/Y plot in a ResultSet
+#
+#  This widget is an X/Y plot, meant to view line graphs produced
+#  as output from the run of a Rappture tool.  Use the "add" and
+#  "delete" methods to control the dataobjs showing on the plot.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *DataTableResult.width 3i widgetDefault
+option add *DataTableResult.height 3i widgetDefault
+option add *DataTableResult.gridColor #d9d9d9 widgetDefault
+option add *DataTableResult.activeColor blue widgetDefault
+option add *DataTableResult.dimColor gray widgetDefault
+option add *DataTableResult.controlBackground gray widgetDefault
+option add *DataTableResult.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+option add *DataTableResult*Balloon*Entry.background white widgetDefault
+
+itk::usual TreeView {
+    keep -foreground -cursor
+}
+
+itcl::class Rappture::DataTableResult {
+    inherit itk::Widget
+
+    itk_option define -gridcolor gridColor GridColor ""
+    itk_option define -activecolor activeColor ActiveColor ""
+    itk_option define -dimcolor dimColor DimColor ""
+
+    private variable _tree ""
+
+    constructor {args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args} {
+        # Do nothing
+    }
+    public method snap { w h }
+    public method tooltip { desc x y }
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method download {option args}
+
+    protected method Rebuild {}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+    private variable _dlist ""     ;# list of dataobj objects
+    private variable _dataobj2color  ;# maps dataobj => plotting color
+    private variable _dataobj2width  ;# maps dataobj => line width
+    private variable _dataobj2dashes ;# maps dataobj => BLT -dashes list
+    private variable _dataobj2raise  ;# maps dataobj => raise flag 0/1
+    private variable _raised    "";
+    common _downloadPopup          ;# download options from popup
+}
+
+itk::usual DataTableResult {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTableResult::constructor {args} {
+    if { [catch {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    array set _downloadPopup {
+        format csv
+    }
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    set _tree [blt::tree create]
+    Rappture::Scroller $itk_interior.scroller \
+        -xscrollmode auto -yscrollmode auto
+
+    itk_component add treeview {
+        blt::treeview $itk_interior.scroller.tv -borderwidth 1 \
+            -highlightthickness 0 -tree $_tree
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    $itk_component(treeview) style textbox lowered -background grey95
+    $itk_component(treeview) style textbox raised -background white
+    $itk_interior.scroller contents $itk_component(treeview)
+    pack $itk_interior.scroller -fill both -expand yes
+    eval itk_initialize $args
+    } err] != 0} {
+        puts stderr errs=$err
+    }
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTableResult::destructor {} {
+    if { $_tree != "" } {
+        blt::tree destroy $_tree
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a dataobj to the plot.  The optional <settings>
+# are used to configure the plot.  Allowed settings are -color,
+# -brightness, -width, -linestyle and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTableResult::add {dataobj {settings ""}} {
+    array set params {
+        -color auto
+        -brightness 0
+        -width 1
+        -type "line"
+        -raise 0
+        -linestyle solid
+        -description ""
+        -param ""
+    }
+    array set params $settings
+    if { $params(-raise) } {
+        set _raised $dataobj
+    }
+    lappend _dlist $dataobj
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTableResult::get {} {
+    return $_dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTableResult::delete {args} {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+    # delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        if { $dataobj == $_raised } {
+            set _raised ""
+        }
+        set pos [lsearch -exact $_dlist $dataobj]
+        if {$pos >= 0} {
+            set _dlist [lreplace $_dlist $pos $pos]
+            set changed 1
+        }
+    }
+    set _raised [lindex $_dlist 0]
+    # If anything changed, then rebuild the table
+    if {$changed} {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTableResult::download {option args} {
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            set popup .datatableresultdownload
+            if {![winfo exists .datatableresultdownload]} {
+                # if we haven't created the popup yet, do it now
+                Rappture::Balloon $popup \
+                    -title "[Rappture::filexfer::label downloadWord] as..."
+                set inner [$popup component inner]
+                label $inner.summary -text "" -anchor w
+                pack $inner.summary -side top
+                radiobutton $inner.datatable \
+                    -text "Data as Comma-Separated Values" \
+                    -variable Rappture::DataTableResult::_downloadPopup(format) \
+                    -value csv
+                pack $inner.datatable -anchor w
+                button $inner.go -text [Rappture::filexfer::label download] \
+                    -command [lindex $args 0]
+                pack $inner.go -pady 4
+            } else {
+                set inner [$popup component inner]
+            }
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            $inner.summary configure -text "[Rappture::filexfer::label downloadWord] $num in the following format:"
+            update idletasks ;# fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .datatableresultdownload
+            if {[winfo exists .datatableresultdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                csv {
+                    # reverse the objects so the selected data appears on top
+                    set dlist ""
+                    foreach dataobj [get] {
+                        set dlist [linsert $dlist 0 $dataobj]
+                    }
+
+                    # generate the comma-separated value data for these objects
+                    set csvdata ""
+                    foreach dataobj $dlist {
+                        append csvdata "[string repeat - 60]\n"
+                        append csvdata " [$dataobj hints label]\n"
+                        if {[info exists _dataobj2desc($dataobj)]
+                            && [llength [split $_dataobj2desc($dataobj) \n]] > 1} {
+                            set indent "for:"
+                            foreach line [split $_dataobj2desc($dataobj) \n] {
+                                append csvdata " $indent $line\n"
+                                set indent "    "
+                            }
+                        }
+                        append csvdata "[string repeat - 60]\n"
+
+                        append csvdata "[$dataobj hints xlabel], [$dataobj hints ylabel]\n"
+                        set first 1
+                        foreach comp [$dataobj components] {
+                            if {!$first} {
+                                # blank line between components
+                                append csvdata "\n"
+                            }
+                            set xv [$dataobj mesh $comp]
+                            set yv [$dataobj values $comp]
+                            foreach x [$xv values] y [$yv values] {
+                                append csvdata [format "%20.15g, %20.15g\n" $x $y]
+                            }
+                            set first 0
+                        }
+                        append csvdata "\n"
+                    }
+                    return [list .txt $csvdata]
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DataTableResult::Rebuild {} {
+    eval $_tree delete [$_tree children 0]
+
+    foreach dataobj $_dlist {
+        scan $dataobj "::dataTable%d" suffix
+        incr suffix
+
+        set newtree [$dataobj values]
+        # Copy the data object's tree onto our tree.
+        set dest [$_tree firstchild 0]
+        foreach src [$newtree children 0] {
+            if { $dest == -1 } {
+                set dest [$_tree insert 0]
+            }
+            foreach {name value} [$newtree get $src] {
+                set label "$name \#$suffix"
+                $_tree set $dest $label $value
+                set labels($label) 1
+            }
+            set dest [$_tree nextsibling $dest]
+        }
+    }
+    foreach col [$itk_component(treeview) column names] {
+        if { [string match "BLT TreeView*" $col] } {
+            continue
+        }
+        $itk_component(treeview) column delete $col
+    }
+    $itk_component(treeview) column configure treeView -hide yes
+    set dataobj [lindex $_dlist 0]
+    if { $dataobj != "" } {
+        foreach { label description style } [$dataobj columns] {
+            foreach c [lsort -dictionary [array names labels $label*]] {
+                eval $itk_component(treeview) column insert end [list $c] $style
+                $itk_component(treeview) column bind $c <Enter> \
+                    [itcl::code $this tooltip $description %X %Y]
+                $itk_component(treeview) column bind $c <Leave> \
+                    { Rappture::Tooltip::tooltip cancel }
+            }
+        }
+    }
+    if { [llength $_dlist] == 1 } {
+        foreach { label description style } [$dataobj columns] {
+            foreach c [lsort -dictionary [array names labels $label*]] {
+                $itk_component(treeview) column configure $c -text $label
+            }
+        }
+    }
+    if { $_raised != "" } {
+        foreach c [$itk_component(treeview) column names] {
+            $itk_component(treeview) column configure $c -style lowered
+        }
+        scan $_raised "::dataTable%d" suffix
+        incr suffix
+        foreach { label description style } [$_raised columns] {
+            set c "$label \#$suffix"
+            $itk_component(treeview) column configure $c -style raised
+        }
+    }
+}
+
+itcl::body Rappture::DataTableResult::snap { w h } {
+    set g $itk_component(plot)
+    if { $w <= 0 || $h <= 0 } {
+        set w [winfo width $g]
+        set h [winfo height $g]
+    }
+    set img [image create picture -width $w -height $h]
+    $g snap $img -width $w -height $h
+    return $img
+}
+
+itcl::body Rappture::DataTableResult::tooltip { description x y } {
+    Rappture::Tooltip::text $itk_component(treeview) $description
+    Rappture::Tooltip::tooltip pending $itk_component(treeview) @$x,$y
+}
Index: /tags/1.6.0/gui/scripts/deviceEditor.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/deviceEditor.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/deviceEditor.tcl	(revision 6168)
@@ -0,0 +1,222 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: deviceEditor - general-purpose device editor
+#
+#  This widget takes a <structure> description and chooses a specific
+#  editor appropriate for the contents of the structure.  If the
+#  <structure> contains a molecule, then it chooses a MoleculeViewer.
+#  If it contains a 1D device, then it chooses a deviceViewer1D.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *DeviceEditor.autoCleanUp yes widgetDefault
+
+itcl::class Rappture::DeviceEditor {
+    inherit itk::Widget Rappture::ControlOwner
+
+    itk_option define -autocleanup autoCleanUp AutoCleanUp 1
+
+    constructor {owner args} {
+        Rappture::ControlOwner::constructor $owner
+    } {
+        # defined below
+    }
+    public method value {args}
+    public method download {option args}
+    public method add {dataobj {settings ""}}
+    public method delete {args}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method snap {w h}
+
+    protected method _redraw {}
+    protected method _type {xmlobj}
+
+    private variable _current ""  ;# active device editor
+
+    public common _molvisHosts ""
+
+    public proc setMolvisServer {namelist} {
+        if {[regexp {^[a-zA-Z0-9\.]+:[0-9]+(,[a-zA-Z0-9\.]+:[0-9]+)*$} $namelist match]} {
+            set _molvisHosts $namelist
+        } else {
+            error "bad visualization server address \"$namelist\": should be host:port,host:port,..."
+        }
+    }
+}
+
+itk::usual DeviceEditor {
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceEditor::constructor {owner args} {
+    itk_component add top {
+        frame $itk_interior.top
+    }
+    pack $itk_component(top) -fill x
+
+    eval itk_initialize $args
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceEditor::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+
+    if {[llength $args] == 1} {
+        if {$_xmlobj != ""} {
+            if {$itk_option(-autocleanup)} {
+                # delete any existing object
+                itcl::delete object $_xmlobj
+            }
+            set _xmlobj ""
+        }
+
+        set newval [lindex $args 0]
+        if {$newval != ""} {
+            if {$onlycheck} {
+                return
+            }
+            if {![Rappture::library isvalid $newval]} {
+                error "bad value \"$newval\": should be Rappture::Library"
+            }
+            set _xmlobj $newval
+        }
+        _redraw
+        $_current configure -device $_xmlobj
+        event generate $itk_component(hull) <<Value>>
+
+    } elseif {[llength $args] == 0} {
+        sync  ;# querying -- must sync controls with the value
+    } else {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+    return $_xmlobj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot. Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise. Only
+# -brightness and -raise do anything.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceEditor::add {dataobj {settings ""}} {
+    set _xmlobj $dataobj
+    if {"" == $_current} {    # Make sure viewer instance exists
+        _redraw
+    }
+    eval $_current add $dataobj [list $settings]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj> <dataobj> ...?
+#
+# Clients use this to delete a dataobj from the plot. If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceEditor::delete {args} {
+    if {"" != $_current} {
+        eval $_current delete $args
+        set _xmlobj [lindex [$_current get] end]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceEditor::download {option args} {
+    if {"" != $_current} {
+        return [eval $_current download $option $args]
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Used internally to load new device data into the appropriate
+# editor.  If the editor needs to be created, it is created and
+# activated within this widget.  Then, the data is loaded into
+# the editor.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceEditor::_redraw {} {
+    if {$_current != ""} {
+        $_current configure -device ""
+        set _current ""
+    }
+    switch -- [_type $_xmlobj] {
+        molecule {
+            if { ![winfo exists $itk_component(hull).mol] } {
+                catch {
+                    destroy $itk_component(hull).dev
+                }
+                Rappture::MolvisViewer $itk_component(hull).mol
+                pack $itk_component(hull).mol -expand yes -fill both
+            }
+            set _current $itk_component(hull).mol
+        }
+        device1D {
+            if { ![winfo exists $itk_component(hull).dev] } {
+                catch {
+                    destroy $itk_component(hull).mol
+                }
+                Rappture::DeviceViewer1D $itk_component(hull).dev $this
+                pack $itk_component(hull).dev -expand yes -fill both
+            }
+            set _current $itk_component(hull).dev
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _type <xmlobj>
+#
+# Used internally to determine the type of the device data stored
+# within the <xmlobj>.  Returns a name such as "molecule" or
+# "device1D" indicating the type of editor that should be used to
+# display the data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceEditor::_type {xmlobj} {
+    if {$xmlobj == ""} {
+        return ""
+    }
+    if {[llength [$xmlobj children -type molecule components]] > 0} {
+        return "molecule"
+    }
+    return "device1D"
+}
+
+itcl::body Rappture::DeviceEditor::snap { w h } {
+    return [$_current snap $w $h]
+}
Index: /tags/1.6.0/gui/scripts/deviceLayout1D.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/deviceLayout1D.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/deviceLayout1D.tcl	(revision 6168)
@@ -0,0 +1,589 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: deviceLayout1D - visualizer for 1D device geometries
+#
+#  This widget is a simple visualizer for the layout of 1D devices.
+#  It takes the Rappture XML representation for a 1D device and draws
+#  the series of slabs representing the various material layers in the
+#  device.  It can be configured to allow simple selection and editing
+#  of material layers.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *DeviceLayout1D.width 3.5i widgetDefault
+option add *DeviceLayout1D.deviceSize 0.25i widgetDefault
+option add *DeviceLayout1D.deviceOutline black widgetDefault
+option add *DeviceLayout1D.annotate all widgetDefault
+option add *DeviceLayout1D.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::DeviceLayout1D {
+    inherit itk::Widget
+
+    itk_option define -font font Font ""
+    itk_option define -device device Device ""
+    itk_option define -width width Width 0
+    itk_option define -devicesize deviceSize DeviceSize 0
+    itk_option define -deviceoutline deviceOutline DeviceOutline ""
+    itk_option define -leftmargin leftMargin LeftMargin 0
+    itk_option define -rightmargin rightMargin RightMargin 0
+
+    constructor {args} { # defined below }
+    public method limits {}
+    public method extents {what}
+    public method controls {option args}
+
+    protected method _layout {}
+    protected method _redraw {}
+    protected method _drawLayer {index x0 x1}
+    protected method _drawIcon {index x0 x1 imh}
+    protected method _drawAnnotation {index x0 x1}
+    protected method _mater2color {mater}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+    private variable _sizes         ;# maps size name => pixels
+
+    private variable _device ""     ;# LibraryObj for device representation
+    private variable _slabs ""      ;# list of node names for slabs in device
+    private variable _z0 ""         ;# list parallel to _slabs with z0
+                                    ;#   coord for lhs of each slab
+    private variable _z1 ""         ;# list parallel to _slabs with z1
+                                    ;#   coord for rhs of each slab
+    private variable _maters ""     ;# list parallel to _slabs with material
+                                    ;#   for each slab
+    private variable _colors ""     ;# list parallel to _slabs with color
+                                    ;#   for each slab
+
+    private variable _controls      ;# maps control path => status on/off
+
+    private variable _icons         ;# maps icon data => image handle
+}
+
+itk::usual DeviceLayout1D {
+    keep -background -cursor
+    keep -device -deviceoutline -devicesize
+    keep -selectbackground -selectforeground -selectborderwidth
+    keep -width
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceLayout1D::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !layout
+    $_dispatcher dispatch $this !layout "[itcl::code $this _layout]; list"
+    $_dispatcher register !redraw
+    $_dispatcher dispatch $this !redraw "[itcl::code $this _redraw]; list"
+
+    pack propagate $itk_component(hull) no
+
+    itk_component add area {
+        canvas $itk_interior.area -borderwidth 0 -highlightthickness 0
+    } {
+        usual
+        ignore -borderwidth -relief
+        ignore -highlightthickness -highlightbackground -highlightcolor
+    }
+    pack $itk_component(area) -expand yes -fill both
+    bind $itk_component(area) <Configure> \
+        [list $_dispatcher event -idle !redraw]
+
+    eval itk_initialize $args
+
+    set _sizes(header) 1
+    set _sizes(bararea) 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: limits
+#
+# Clients use this to query the limits of the x-axis for the
+# current device.  Returns the min/max limits indicating the
+# physical size of the device.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceLayout1D::limits {} {
+    if {[$_dispatcher ispending !layout]} {
+        $_dispatcher cancel !layout
+        _layout
+    }
+    set zmin [lindex $_z0 0]
+    set zmax [lindex $_z1 end]
+    return [list $zmin $zmax]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: extents <what>
+#
+# Clients use this to query the size of various things within this
+# widget--similar to the "extents" method of the BLT graph.  Returns
+# the size of some item in pixels.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceLayout1D::extents {what} {
+    switch -- $what {
+        bar3D { return $_sizes(bar45) }
+        default {
+            error "bad option \"$what\": should be bar3D"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: controls add <path>
+#
+# Clients use this to add hints about the controls that should be
+# added to the layout area.  Common paths are components.slab#.material
+# and components.slab#.thickness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceLayout1D::controls {option args} {
+    switch -- $option {
+        add {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"controls add path\""
+            }
+            set path [lindex $args 0]
+            set _controls($path) 1
+            $_dispatcher event -idle !layout
+        }
+        remove {
+            error "not yet implemented"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _layout
+#
+# Called automatically whenever something changes that affects the
+# layout of the widget.  Recalculates the layout and computes a good
+# overall value for the minimum height of the widget.  This may cause
+# the widget to change size, which in turn would trigger another
+# _redraw.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceLayout1D::_layout {} {
+    #
+    # First, recompute the overall width/height of this widget...
+    #
+    # requested minimum size
+    set wmax [winfo pixels $itk_component(hull) $itk_option(-width)]
+    if {$wmax <= 0} { set wmax 100 }
+
+    # size of an ordinary material bar:
+    set hmax [expr {$_sizes(bar)+$_sizes(bar45)+2}]
+
+    # add the maximum size of any embedded icons:
+    if {$_device != ""} {
+        foreach nn [$_device children components] {
+            set icon [$_device get components.$nn.about.icon]
+            if {"" != $icon} {
+                if {[info exists _icons($icon)]} {
+                    set imh $_icons($icon)
+                } else {
+                    set imh [image create photo -data $icon]
+                    set _icons($icon) $imh
+                }
+
+                set w [image width $_icons($icon)]
+                if {$w > $wmax} {
+                    set wmax $w
+                }
+
+                set h [image height $_icons($icon)]
+                if {$h > $hmax} {
+                    set hmax $h
+                }
+            }
+        }
+    }
+    set _sizes(bararea) $hmax
+
+    set fnt $itk_option(-font)
+    # see if any of the slabs has a material
+    foreach m $_maters {
+        if {"" != $m} {
+            set extra [expr {1.5*[font metrics $fnt -linespace]}]
+            set hmax [expr {$hmax+$extra}]
+            break
+        }
+    }
+
+    # see if any of the slabs has a label
+    if {$_device != ""} {
+        foreach nn [$_device children components] {
+            if {"" != [$_device get components.$nn.about.label]} {
+                set extra [expr {1.2*[font metrics $fnt -linespace]}]
+                set hmax [expr {$hmax+$extra}]
+                break
+            }
+        }
+    }
+
+    set oldw [component hull cget -width]
+    set oldh [component hull cget -height]
+    if {$wmax != $oldw || $hmax != $oldh} {
+        component hull configure -width $wmax -height $hmax
+        $_dispatcher event -idle !redraw
+    }
+    set _sizes(header) [expr {$hmax - $_sizes(bararea)}]
+
+    # next, scan through the device and compute layer positions
+    set slabs ""
+    set z0 ""
+    set z1 ""
+    set maters ""
+    set colors ""
+
+    if {$_device != ""} {
+        # get the default system of units
+        set units [set defunits [$_device get units]]
+        if {$units == "arbitrary" || $units == ""} {
+            set defunits "m"
+            set units "um"
+        }
+
+        foreach nn [$_device children components] {
+            switch -glob -- $nn {
+                box* {
+                    # get x-coord for each corner
+                    set c0 [$_device get components.$nn.corner0]
+                    regsub -all , $c0 { } c0
+                    set c0 [lindex $c0 0]
+                    set c0 [Rappture::Units::convert $c0 \
+                        -context $defunits -to $units -units off]
+
+                    set c1 [$_device get components.$nn.corner1]
+                    regsub -all , $c1 { } c1
+                    set c1 [lindex $c1 0]
+                    set c1 [Rappture::Units::convert $c1 \
+                        -context $defunits -to $units -units off]
+
+                    lappend slabs components.$nn
+                    lappend z0 $c0
+                    lappend z1 $c1
+
+                    set m [$_device get components.$nn.material]
+                    lappend maters $m
+
+                    if {"" != $m} {
+                        set c [_mater2color $m]
+                    } else {
+                        set c [$_device get components.$nn.about.color]
+                    }
+                    if {"" == $c} { set c gray }
+                    lappend colors $c
+                }
+                default {
+                    # element not recognized -- skip it
+                }
+            }
+        }
+    }
+
+    # something change? then store new layout and redraw
+    if {![string equal $z0 $_z0]
+          || ![string equal $z1 $_z1]
+          || ![string equal $maters $_maters]
+          || ![string equal $colors $_colors]} {
+        set _slabs $slabs
+        set _z0 $z0
+        set _z1 $z1
+        set _maters $maters
+        set _colors $colors
+
+        $_dispatcher event -idle !redraw
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Called automatically whenever the device geometry changes, or when
+# the canvas changes size, to redraw all elements within it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceLayout1D::_redraw {} {
+    set c $itk_component(area)
+
+    # clean up images and delete all other items
+    $c delete all
+
+    set w [expr {[winfo width $c]-1 - $_sizes(lm) - $_sizes(rm)}]
+
+    set x0 $_sizes(lm)
+    set x1 [expr {$x0 + $w}]
+
+    set zmax [lindex $_z1 end]
+    set xx0 $x0
+    set xx1 $x1
+
+    for {set i 0} {$i < [llength $_slabs]} {incr i} {
+        set name [lindex $_slabs $i]
+        set z0 [lindex $_z0 $i]
+        set z1 [lindex $_z1 $i]
+        set xx0 [expr {double($z0)/$zmax * ($x1-$x0) + $x0}]
+        set xx1 [expr {double($z1)/$zmax * ($x1-$x0) + $x0}]
+
+        set icon [$_device get $name.about.icon]
+        if {"" != $icon} {
+            if {[info exists _icons($icon)]} {
+                set imh $_icons($icon)
+            } else {
+                set imh [image create photo -data $icon]
+                set _icons($icon) $imh
+            }
+            _drawIcon $i $xx0 $xx1 $imh
+        } else {
+            _drawLayer $i $xx0 $xx1
+        }
+        _drawAnnotation $i $xx0 $xx1
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _drawLayer <index> <x0> <x1>
+#
+# Used internally within _redraw to draw one material layer at the
+# <index> within the slab list into the active area.  The layer is
+# drawn between coordinates <x0> and <x1> on the canvas.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceLayout1D::_drawLayer {index x0 x1} {
+    set c $itk_component(area)
+    set h [expr {$_sizes(header) + $_sizes(bararea) - 1}]
+
+    set bsize [expr {$_sizes(bar)+$_sizes(bar45)+2}]
+    set y0 [expr {$h - 0.5*$_sizes(bararea) + 0.5*$bsize}]
+    set y0p [expr {$y0-$_sizes(bar45)}]
+    set y1p [expr {$y0-$_sizes(bar)}]
+    set y1 [expr {$y1p-$_sizes(bar45)}]
+
+    set x0p [expr {$x0+$_sizes(bar45)}]
+    set x1p [expr {$x1+$_sizes(bar45)}]
+
+    set lcolor $itk_option(-deviceoutline)
+
+    if {$index < [llength $_slabs]} {
+        set fcolor [lindex $_colors $index]
+
+        #
+        # Draw one segment of the bar in the canvas:
+        #
+        #      ___________________  ____ y1
+        #     /                  /| ____ y0p
+        #    /__________________/ / ____ y1p
+        #    |__________________|/: ____ y0
+        #    : :                : :
+        #   x0 x0p             x1 x1p
+        #
+        $c create polygon \
+            $x0 $y0  $x1 $y0  $x1p $y0p  $x1p $y1  $x0p $y1  $x0 $y1p  $x0 $y0 \
+            -outline $lcolor -fill $fcolor
+        $c create line $x0 $y1p  $x1 $y1p -fill $lcolor
+
+        #
+        # Draw the outline around the end cap
+        #
+        $c create line $x1 $y0  $x1 $y1p  $x1p $y1 -fill $lcolor
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _drawIcon <index> <x0> <x1> <imh>
+#
+# Used internally within _redraw to draw a material layer that is
+# represented by an icon.  The layer sits at <index> within the slab
+# list into the active area.  The layer is drawn between coordinates
+# <x0> and <x1> on the canvas.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceLayout1D::_drawIcon {index x0 x1 imh} {
+    set c $itk_component(area)
+    set h [expr {$_sizes(header) + $_sizes(bararea) - 1}]
+
+    set bsize [expr {$_sizes(bar)+$_sizes(bar45)+2}]
+    set y0 [expr {$h - 0.5*$_sizes(bararea) + 0.5*$bsize}]
+    set y0p [expr {$y0-$_sizes(bar45)}]
+    set y1p [expr {$y0-$_sizes(bar)}]
+    set y1 [expr {$y1p-$_sizes(bar45)}]
+    set x0p [expr {$x0+$_sizes(bar45)}]
+    set x1p [expr {$x1+$_sizes(bar45)}]
+
+    set xx0 [expr {0.5*($x0+$x0p)}]
+    set xx1 [expr {0.5*($x1+$x1p)}]
+    set y [expr {0.5*($y0+$y0p) + 0.5*($y1-$y0p)}]
+
+    $c create image [expr {0.5*($xx0+$xx1)}] $y -anchor c -image $imh
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _drawAnnotation <index> <x0> <x1>
+#
+# Used internally within _redraw to draw one material layer at the
+# <index> within the slab list into the active area.  The layer is
+# drawn between coordinates <x0> and <x1> on the canvas.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceLayout1D::_drawAnnotation {index x0 x1} {
+    set c $itk_component(area)
+
+    set ytop [expr {$_sizes(header)+1}]
+    set x0p [expr {$x0+$_sizes(bar45)}]
+    set x1p [expr {$x1+$_sizes(bar45)}]
+    set xmid [expr {0.5*($x0p+$x1p)}]
+
+    set fnt $itk_option(-font)
+    set lh [font metrics $fnt -linespace]
+    set ymid [expr {$ytop-2-0.5*$lh}]
+    set y [expr {$ytop-4}]
+
+    #
+    # If there's a .material control for this slab, draw it here.
+    #
+    set elem [lindex $_slabs $index]
+    set mater [lindex $_maters $index]
+    if {"" != $mater} {
+        set x $x1p
+        $c create rectangle [expr {$x-10}] [expr {$y-14}] \
+            [expr {$x-0}] [expr {$y-4}] \
+            -outline black -fill [_mater2color $mater]
+        set x [expr {$x-12}]
+        $c create text $x [expr {$y-7}] -anchor e \
+            -text $mater
+        set y [expr {$y-1.5*$lh}]
+    }
+
+    #
+    # If there's a <label> for this layer, then draw it.
+    #
+    if {"" != $_device} {
+        set label [$_device get $elem.about.label]
+        if {"" != $label} {
+            $c create text [expr {0.5*($x0p+$x1p)}] $y -anchor s \
+                -text $label
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _mater2color <material>
+#
+# Used internally to convert a <material> name to the color that
+# should be used to represent it in the viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceLayout1D::_mater2color {mater} {
+    set lib [Rappture::library standard]
+    set color [$lib get materials.($mater).color]
+    if {$color != ""} {
+        return $color
+    }
+    return gray
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -font
+#
+# Controls the font used to all text on the layout, including
+# annotations.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::DeviceLayout1D::font {
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -device
+#
+# Set to the Rappture::Library object representing the device being
+# displayed in the viewer.  If set to "", the viewer is cleared to
+# display nothing.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::DeviceLayout1D::device {
+    if {$itk_option(-device) != ""} {
+        if {![Rappture::library isvalid $itk_option(-device)]} {
+            error "bad value \"$itk_option(-device)\": should be Rappture::Library"
+        }
+    }
+    set _device $itk_option(-device)
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -width
+#
+# Sets the minimum overall width of the widget.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::DeviceLayout1D::width {
+    if {[catch {
+          winfo pixels $itk_component(hull) $itk_option(-width)
+      } pixels]} {
+        error "bad screen distance \"$itk_option(-width)\""
+    }
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -devicesize
+#
+# Sets the height of the bar representing the device area.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::DeviceLayout1D::devicesize {
+    if {[catch {
+          winfo pixels $itk_component(hull) $itk_option(-devicesize)
+      } pixels]} {
+        error "bad screen distance \"$itk_option(-devicesize)\""
+    }
+    set _sizes(bar) $pixels
+    set _sizes(bar45) [expr {0.5*sqrt(2)*$pixels}]
+
+    set pixels [winfo pixels $itk_component(hull) $itk_option(-rightmargin)]
+    set _sizes(rm) [expr {($pixels > 0) ? $pixels : $_sizes(bar45)}]
+
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -deviceoutline
+#
+# Sets the outline color around the various slabs in the device.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::DeviceLayout1D::deviceoutline {
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -leftmargin
+#
+# Sets the width of the left margin, a blank area along the left
+# side.  Setting the margin allows the device layout to line up
+# with a graph of internal fields.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::DeviceLayout1D::leftmargin {
+    if {[catch {
+          winfo pixels $itk_component(hull) $itk_option(-leftmargin)
+      } pixels]} {
+        error "bad screen distance \"$itk_option(-leftmargin)\""
+    }
+    set _sizes(lm) $pixels
+    $_dispatcher event -idle !layout
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -rightmargin
+#
+# Sets the width of the right margin, a blank area along the right
+# side.  Setting the margin allows the device layout to line up
+# with a graph of internal fields.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::DeviceLayout1D::rightmargin {
+    if {[catch {
+          winfo pixels $itk_component(hull) $itk_option(-rightmargin)
+      } pixels]} {
+        error "bad screen distance \"$itk_option(-rightmargin)\""
+    }
+    set _sizes(rm) [expr {($pixels > 0) ? $pixels : $_sizes(bar45)}]
+    $_dispatcher event -idle !layout
+    $_dispatcher event -idle !redraw
+}
Index: /tags/1.6.0/gui/scripts/deviceViewer1D.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/deviceViewer1D.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/deviceViewer1D.tcl	(revision 6168)
@@ -0,0 +1,880 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: deviceViewer1D - visualizer for 1D device geometries
+#
+#  This widget is a simple visualizer for 1D devices.  It takes the
+#  Rappture XML representation for a 1D device and draws various
+#  facets of the data.  Each facet shows the physical layout along
+#  with some other quantity.  The "Electrical" facet shows electrical
+#  contacts.  The "Doping" facet shows the doping profile, and so
+#  forth.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require Img
+package require BLT
+
+option add *DeviceViewer1D.padding 4 widgetDefault
+option add *DeviceViewer1D.deviceSize 0.25i widgetDefault
+option add *DeviceViewer1D.deviceOutline black widgetDefault
+option add *DeviceViewer1D*graph.width 3i widgetDefault
+option add *DeviceViewer1D*graph.height 2i widgetDefault
+
+itcl::class Rappture::DeviceViewer1D {
+    inherit itk::Widget
+
+    itk_option define -device device Device ""
+
+    constructor {owner args} { # defined below }
+    destructor { # defined below }
+
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method parameters {title args} { # do nothing }
+
+    public method controls {option args}
+    public method download {option args}
+
+    protected method _loadDevice {}
+    protected method _loadParameters {frame path}
+    protected method _changeTabs {{why -program}}
+    protected method _fixSize {}
+    protected method _fixAxes {}
+    protected method _align {}
+
+    protected method _marker {option {name ""} {path ""}}
+
+    protected method _controlCreate {container libObj path}
+    protected method _controlSet {widget libObj path}
+
+    private variable _owner ""      ;# thing managing this control
+    private variable _dlist ""      ;# list of dataobj objects
+    private variable _dobj2raise    ;# maps dataobj => raise flag
+    private variable _device ""     ;# XML library with <structure>
+    private variable _tab2fields    ;# maps tab name => list of fields
+    private variable _field2parm    ;# maps field path => parameter name
+    private variable _units ""      ;# units for field being edited
+    private variable _marker        ;# marker currently being edited
+}
+
+itk::usual DeviceViewer1D {
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::constructor {owner args} {
+    set _owner $owner
+
+    pack propagate $itk_component(hull) no
+
+    itk_component add tabs {
+        blt::tabset $itk_interior.tabs -borderwidth 0 -relief flat \
+            -side bottom -tearoff 0 \
+            -selectcommand [itcl::code $this _changeTabs -user]
+    } {
+        keep -activebackground -activeforeground
+        keep -background -cursor -font
+        rename -highlightbackground -background background Background
+        keep -highlightcolor -highlightthickness
+        keep -tabbackground -tabforeground
+        rename -selectbackground -background background Background
+        rename -selectforeground -foreground foreground Foreground
+    }
+    pack $itk_component(tabs) -expand yes -fill both
+
+    itk_component add -protected inner {
+        frame $itk_component(tabs).inner
+    }
+
+    itk_component add top {
+        frame $itk_component(inner).top
+    }
+    pack $itk_component(top) -fill x
+
+    itk_component add layout {
+        Rappture::DeviceLayout1D $itk_component(inner).layout
+    }
+    pack $itk_component(layout) -side top -fill x -pady 4
+
+    itk_component add graph {
+        blt::graph $itk_component(inner).graph \
+            -highlightthickness 0 -plotpadx 0 -plotpady 0
+    } {
+        keep -background -foreground -cursor -font
+    }
+    pack $itk_component(graph) -expand yes -fill both
+    $itk_component(graph) legend configure -hide yes
+
+    bind $itk_component(graph) <Configure> "
+        [list after cancel [list catch [itcl::code $this _align]]]
+        [list after 100 [list catch [itcl::code $this _align]]]
+    "
+
+    itk_component add geditor {
+        Rappture::Editor $itk_component(graph).editor \
+            -activatecommand [itcl::code $this _marker activate] \
+            -validatecommand [itcl::code $this _marker validate] \
+            -applycommand [itcl::code $this _marker apply]
+    }
+
+    itk_component add devcntls {
+        Rappture::Notebook $itk_component(inner).devcntls
+    }
+    pack $itk_component(devcntls) -side bottom -fill x
+
+    eval itk_initialize $args
+
+    after cancel [list catch [itcl::code $this _fixSize]]
+    after idle [list catch [itcl::code $this _fixSize]]
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::destructor {} {
+    set _device ""
+    foreach name [array names _tab2fields] {
+        eval itcl::delete object $_tab2fields($name)
+    }
+    after cancel [list catch [itcl::code $this _fixAxes]]
+    after cancel [list catch [itcl::code $this _align]]
+    after cancel [list catch [itcl::code $this _loadDevice]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise. Only
+# -brightness and -raise do anything.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::add {dataobj {settings ""}} {
+    array set params {
+        -color auto
+        -brightness 0
+        -width 1
+        -raise 0
+        -linestyle solid
+        -description ""
+        -param ""
+    }
+    array set params $settings
+
+    set pos [lsearch -exact $_dlist $dataobj]
+
+    if {$pos < 0} {
+        if {![Rappture::library isvalid $dataobj]} {
+            error "bad value \"$dataobj\": should be Rappture::library object"
+        }
+
+        lappend _dlist $dataobj
+        set _dobj2raise($dataobj) $params(-raise)
+
+        after cancel [list catch [itcl::code $this _loadDevice]]
+        after idle [list catch [itcl::code $this _loadDevice]]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::get {} {
+    # put the dataobj list in order according to -raise options
+    set dlist $_dlist
+    foreach obj $dlist {
+        if {[info exists _dobj2raise($obj)] && $_dobj2raise($obj)} {
+            set i [lsearch -exact $dlist $obj]
+            if {$i >= 0} {
+                set dlist [lreplace $dlist $i $i]
+                lappend dlist $obj
+            }
+        }
+    }
+    return $dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj> <dataobj> ...?
+#
+# Clients use this to delete a dataobj from the plot. If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::delete {args} {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+
+    # delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if {$pos >= 0} {
+            set _dlist [lreplace $_dlist $pos $pos]
+            catch {unset _dobj2raise($dataobj)}
+            set changed 1
+        }
+    }
+
+    # if anything changed, then rebuild the plot
+    if {$changed} {
+        after cancel [list catch [itcl::code $this _loadDevice]]
+        after idle [list catch [itcl::code $this _loadDevice]]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: controls insert <pos> <xmlobj> <path>
+#
+# Clients use this to add a control to the internal panels of this
+# widget.  Such controls are usually placed at the top of the widget,
+# but if possible, they are integrated directly onto the device
+# layout or the field area.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::controls {option args} {
+    switch -- $option {
+        insert {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"controls insert pos xmlobj path\""
+            }
+            set pos [lindex $args 0]
+            set xmlobj [lindex $args 1]
+            set path [lindex $args 2]
+            if {[string match *structure.parameters* $path]} {
+            } elseif {[string match structure.components* $path]} {
+                $itk_component(layout) controls insert $pos $xmlobj $path
+            }
+        }
+        default {
+            error "bad option \"$option\": should be insert"
+        }
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::download {option args} {
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            # no controls for this download yet
+            return ""
+        }
+        now {
+            return ""  ;# not implemented yet!
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _loadDevice
+#
+# Used internally to search for fields and create corresponding
+# tabs whenever a device is installed into this viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::_loadDevice {} {
+    set _device [lindex [get] end]
+
+    #
+    # Release any info left over from the last device.
+    #
+    foreach name [array names _tab2fields] {
+        eval itcl::delete object $_tab2fields($name)
+    }
+    catch {unset _tab2fields}
+    catch {unset _field2parm}
+
+    if {[winfo exists $itk_component(top).cntls]} {
+        $itk_component(top).cntls delete 0 end
+    }
+
+    #
+    # Scan through the current device and extract the list of
+    # fields.  Create a tab for each field.
+    #
+    if {$_device != ""} {
+        foreach nn [$_device children fields] {
+            set name [$_device get fields.$nn.about.label]
+            if {$name == ""} {
+                set name $nn
+            }
+
+            set fobj [Rappture::Field ::#auto $_device fields.$nn]
+            lappend _tab2fields($name) $fobj
+        }
+    }
+    set tabs [lsort [array names _tab2fields]]
+
+    if {[$itk_component(tabs) size] > 0} {
+        $itk_component(tabs) delete 0 end
+    }
+
+    if {[llength $tabs] <= 0} {
+        #
+        # No fields?  Then we don't need to bother with tabs.
+        # Just pack the inner frame directly.  If there are no
+        # fields, get rid of the graph.
+        #
+        pack $itk_component(inner) -expand yes -fill both
+        if {[llength $tabs] > 0} {
+            pack $itk_component(graph) -expand yes -fill both
+        } else {
+            pack forget $itk_component(graph)
+            $itk_component(layout) configure -leftmargin 0 -rightmargin 0
+        }
+    } else {
+        #
+        # Two or more fields?  Then create a tab for each field
+        # and select the first one by default.  Make sure the
+        # graph is packed.
+        #
+        pack forget $itk_component(inner)
+        pack $itk_component(graph) -expand yes -fill both
+
+        foreach name $tabs {
+            $itk_component(tabs) insert end $name \
+                -activebackground $itk_option(-background)
+        }
+        $itk_component(tabs) select 0
+    }
+
+    #
+    # Scan through and look for any parameters in the <structure>.
+    # Register any parameters associated with fields, so we can
+    # add them as active controls whenever we install new fields.
+    # Create controls for any remaining parameters, so the user
+    # can see that there's something to adjust.
+    #
+    if {$_device != ""} {
+        _loadParameters $itk_component(top) parameters
+    }
+
+    #
+    # Install the first tab
+    #
+    _changeTabs
+
+    #
+    # Fix the right margin of the graph so that it has enough room
+    # to display the right-hand edge of the device.
+    #
+    $itk_component(graph) configure \
+        -rightmargin [$itk_component(layout) extents bar3D]
+
+    after cancel [list catch [itcl::code $this _fixSize]]
+    after idle [list catch [itcl::code $this _fixSize]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _loadParameters <frame> <path>
+#
+# Used internally in _loadDevice to load child parameters at the
+# specified <path> into the <frame>.  If any of the children are
+# groups, then this is called recursively to fill in the group
+# children.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::_loadParameters {frame path} {
+    foreach cname [$_device children $path] {
+        set handled 0
+        set type [$_device element -as type $path.$cname]
+        if {$type == "about"} {
+            continue
+        }
+        if {$type == "number"} {
+            set name [$_device element -as id $path.$cname]
+
+            # look for a field that uses this parameter
+            set found ""
+            foreach fname [$_device children fields] {
+                foreach comp [$_device children fields.$fname] {
+                    set v [$_device get fields.$fname.$comp.constant]
+                    if {[string equal $v $name]} {
+                        set found "fields.$fname.$comp"
+                        break
+                    }
+                }
+                if {"" != $found} break
+            }
+
+            if {"" != $found} {
+                set _field2parm($found) $name
+                set handled 1
+            }
+        }
+
+        #
+        # Any parameter that was not handled above should be handled
+        # here, by adding it to a control panel above the device
+        # layout area.
+        #
+        if {!$handled} {
+            if {![winfo exists $frame.cntls]} {
+                Rappture::Controls $frame.cntls $_owner
+                pack $frame.cntls -expand yes -fill both
+            }
+            $frame.cntls insert end $path.$cname
+
+            #
+            # If this is a group, then we must add its children
+            # recursively.
+            #
+            if {$type == "group"} {
+                set gr [$frame.cntls control -value end]
+                _loadParameters [$gr component inner] $path.$cname
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _changeTabs ?-user|-program?
+#
+# Used internally to change the field being displayed whenever a new
+# tab is selected.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::_changeTabs {{why -program}} {
+    set graph $itk_component(graph)
+
+    #
+    # Figure out which tab is selected and make the inner frame
+    # visible in that tab.
+    #
+    set i [$itk_component(tabs) index select]
+    if {$i != ""} {
+        set name [$itk_component(tabs) get $i]
+        $itk_component(tabs) tab configure $name \
+            -window $itk_component(inner) -fill both
+    } else {
+        set name [lindex [array names _tab2fields] 0]
+    }
+
+    if {$why eq "-user"} {
+        Rappture::Logger::log device1D -field $name
+    }
+
+    #
+    # Update the graph to show the current field.
+    #
+    eval $graph element delete [$graph element names]
+    eval $graph marker delete [$graph marker names]
+
+    foreach {zmin zmax} [$itk_component(layout) limits] { break }
+    if {$zmin != "" && $zmin < $zmax} {
+        $graph axis configure x -min $zmin -max $zmax
+    }
+
+    if {$_device != ""} {
+        set units [$_device get units]
+        if {$units != "arbitrary"} {
+            $graph axis configure x -hide no -title "Position ($units)"
+        } else {
+            $graph axis configure x -hide yes
+        }
+    } else {
+        $graph axis configure x -hide no -title "Position"
+    }
+    $graph axis configure x -checklimits no
+
+    # turn on auto limits
+    $graph axis configure y -min "" -max "" -checklimits no
+
+    set flist ""
+    if {[info exists _tab2fields($name)]} {
+        set flist $_tab2fields($name)
+    }
+
+    set n 0
+    foreach fobj $flist {
+        catch {unset hints}
+        array set hints [$fobj hints]
+
+        if {[info exists hints(units)]} {
+            set _units $hints(units)
+            $graph axis configure y -title "$name ($hints(units))"
+        } else {
+            set _units ""
+            $graph axis configure y -title $name
+        }
+
+        if {[info exists hints(scale)]
+              && [string match log* $hints(scale)]} {
+            $graph axis configure y -logscale yes
+        } else {
+            $graph axis configure y -logscale no
+        }
+
+        foreach comp [$fobj components] {
+            # can only handle 1D meshes here
+            if {[$fobj components -dimensions $comp] != "1D"} {
+                continue
+            }
+
+            set elem "elem[incr n]"
+            set xv [$fobj mesh $comp]
+            set yv [$fobj values $comp]
+
+            $graph element create $elem -x $xv -y $yv \
+                -color black -symbol "" -linewidth 2
+
+            if {[info exists hints(color)]} {
+                $graph element configure $elem -color $hints(color)
+            }
+
+            foreach {path x y val} [$fobj controls get $comp] {
+                if {$path != ""} {
+                    set id "control[incr n]"
+                    $graph marker create text -coords [list $x $y] \
+                        -text $val -anchor s -name $id -background ""
+                    $graph marker bind $id <Enter> \
+                        [itcl::code $this _marker enter $id]
+                    $graph marker bind $id <Leave> \
+                        [itcl::code $this _marker leave $id]
+                    $graph marker bind $id <ButtonPress> \
+                        [itcl::code $this _marker edit $id $fobj/$path]
+                }
+            }
+        }
+    }
+
+    # let the widget settle, then fix the axes to "nice" values
+    after cancel [list catch [itcl::code $this _fixAxes]]
+    after 100 [list catch [itcl::code $this _fixAxes]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+#
+# Used internally to fix the overall size of this widget based on
+# the various parts inside.  Sets the requested width/height of the
+# widget so that it is big enough to display the device and its
+# fields.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::_fixSize {} {
+    update idletasks
+    set w [winfo reqwidth $itk_component(tabs)]
+    set h [winfo reqheight $itk_component(tabs)]
+    component hull configure -width $w -height $h
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixAxes
+#
+# Used internally to adjust the y-axis limits of the graph to "nice"
+# values, so that any control marker associated with the value,
+# for example, remains on screen.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::_fixAxes {} {
+    set graph $itk_component(graph)
+    if {![winfo ismapped $graph]} {
+        after cancel [list catch [itcl::code $this _fixAxes]]
+        after 100 [list catch [itcl::code $this _fixAxes]]
+        return
+    }
+
+    #
+    # HACK ALERT!
+    # Use this code to fix up the y-axis limits for the BLT graph.
+    # The auto-limits don't always work well.  We want them to be
+    # set to a "nice" number slightly above or below the min/max
+    # limits.
+    #
+    set log [$graph axis cget y -logscale]
+    $graph axis configure y -min "" -max ""
+    foreach {min max} [$graph axis limits y] { break }
+
+    if {$log} {
+        set min [expr {0.9*$min}]
+        set max [expr {1.1*$max}]
+    } else {
+        if {$min > 0} {
+            set min [expr {0.95*$min}]
+        } else {
+            set min [expr {1.05*$min}]
+        }
+        if {$max > 0} {
+            set max [expr {1.05*$max}]
+        } else {
+            set max [expr {0.95*$max}]
+        }
+    }
+
+    # bump up the max so that it's big enough to show control markers
+    set fnt $itk_option(-font)
+    set h [expr {[font metrics $fnt -linespace] + 5}]
+    foreach mname [$graph marker names] {
+        set xy [$graph marker cget $mname -coord]
+        foreach {x y} [eval $graph transform $xy] { break }
+        set y [expr {$y-$h}]  ;# find top of text in pixels
+        foreach {x y} [eval $graph invtransform [list 0 $y]] { break }
+        if {$y > $max} { set max $y }
+    }
+
+    if {$log} {
+        set min [expr {pow(10.0,floor(log10($min)))}]
+        set max [expr {pow(10.0,ceil(log10($max)))}]
+    } else {
+        set min [expr {0.1*floor(10*$min)}]
+        set max [expr {0.1*ceil(10*$max)}]
+    }
+
+    $graph axis configure y -min $min -max $max
+
+    after cancel [list catch [itcl::code $this _align]]
+    after 100 [list catch [itcl::code $this _align]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _align
+#
+# Used internally to align the margins of the device layout and the
+# graph, so that two areas line up.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::_align {} {
+    set graph $itk_component(graph)
+
+    #
+    # Set the left/right margins of the layout so that it aligns
+    # with the graph.  Set the right margin of the graph so it
+    # it is big enough to show the 3D edge of the device that
+    # hangs over on the right-hand side.
+    #
+    update
+    foreach {xmin xmax} [$graph axis limits x] { break }
+    set lm [$graph xaxis transform $xmin]
+    $itk_component(layout) configure -leftmargin $lm
+
+    set w [winfo width $graph]
+    set rm [expr {$w-[$graph xaxis transform $xmax]}]
+    $itk_component(layout) configure -rightmargin $rm
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _marker enter <name>
+# USAGE: _marker leave <name>
+# USAGE: _marker edit <name> <path>
+# USAGE: _marker activate
+# USAGE: _marker validate <value>
+# USAGE: _marker apply <value>
+#
+# Used internally to manipulate the control markers draw on the
+# graph for a field.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::_marker {option {name ""} {path ""}} {
+    switch -- $option {
+        enter {
+            $itk_component(graph) marker configure $name -background #e5e5e5
+            #
+            # BE CAREFUL:  Need an update here to force the graph to
+            #   refresh itself or else a subsequent click on the
+            #   marker will ignore the text that was recently changed,
+            #   and fail to generate a <ButtonPress> event!
+            #
+            update idletasks
+        }
+        leave {
+            $itk_component(graph) marker configure $name -background ""
+            #
+            # BE CAREFUL:  Need an update here to force the graph to
+            #   refresh itself or else a subsequent click on the
+            #   marker will ignore the text that was recently changed,
+            #   and fail to generate a <ButtonPress> event!
+            #
+            update idletasks
+        }
+        edit {
+            set _marker(name) $name
+            set _marker(fobj) [lindex [split $path /] 0]
+            set _marker(path) [lindex [split $path /] 1]
+            $itk_component(geditor) activate
+        }
+        activate {
+            set g $itk_component(graph)
+            set val [$g marker cget $_marker(name) -text]
+            foreach {x y} [$g marker cget $_marker(name) -coords] { break }
+            foreach {x y} [$g transform $x $y] { break }
+            set x [expr {$x + [winfo rootx $g] - 4}]
+            set y [expr {$y + [winfo rooty $g] - 5}]
+
+            set fnt $itk_option(-font)
+            set h [expr {[font metrics $fnt -linespace] + 2}]
+            set w [expr {[font measure $fnt $val] + 5}]
+
+            return [list text $val \
+                x [expr {$x-$w/2}] \
+                y [expr {$y-$h}] \
+                w $w \
+                h $h]
+        }
+        validate {
+            if {$_units != ""} {
+                if {[catch {Rappture::Units::convert $name \
+                        -context $_units -to $_units} result] != 0} {
+                    if {[regexp {^bad.*: +(.)(.+)} $result match first tail]
+                          || [regexp {(.)(.+)} $result match first tail]} {
+                        set result "[string toupper $first]$tail"
+                    }
+                    bell
+                    Rappture::Tooltip::cue $itk_component(geditor) $result
+                    Rappture::Logger::log warning $_marker(path) $result
+                    return 0
+                }
+            }
+            if {[catch {$_marker(fobj) controls validate $_marker(path) $name} result]} {
+                bell
+                Rappture::Tooltip::cue $itk_component(geditor) $result
+                Rappture::Logger::log warning $_marker(path) $result
+                return 0
+            }
+            return 1
+        }
+        apply {
+            if {$_units != ""} {
+                catch {Rappture::Units::convert $name \
+                    -context $_units -to $_units} value
+            } else {
+                set value $name
+            }
+
+            $_marker(fobj) controls put $_marker(path) $value
+            $_owner changed $_marker(path)
+            event generate $itk_component(hull) <<Edit>>
+            Rappture::Logger::log input $_marker(path) $value
+
+            _changeTabs
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _controlCreate <container> <libObj> <path>
+#
+# Used internally to create a gauge widget and pack it into the
+# given <container>.  When the gauge is set, it updates the value
+# for the <path> in the <libObj>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::_controlCreate {container libObj path} {
+    set presets ""
+    foreach pre [$libObj children -type preset $path] {
+        lappend presets \
+            [$libObj get $path.$pre.value] \
+            [$libObj get $path.$pre.label]
+    }
+
+    set type Rappture::Gauge
+    set units [$libObj get $path.units]
+    if {$units != ""} {
+        set desc [Rappture::Units::description $units]
+        if {[string match temperature* $desc]} {
+            set type Rappture::TemperatureGauge
+        }
+    }
+
+    set counter 0
+    set w "$container.gauge[incr counter]"
+    while {[winfo exists $w]} {
+        set w "$container.gauge[incr counter]"
+    }
+
+    # create the widget
+    $type $w -units $units -presets $presets -log $path
+    pack $w -side top -anchor w
+    bind $w <<Value>> [itcl::code $this _controlSet $w $libObj $path]
+
+    set min [$libObj get $path.min]
+    if {"" != $min} { $w configure -minvalue $min }
+
+    set max [$libObj get $path.max]
+    if {"" != $max} { $w configure -maxvalue $max }
+
+    set str [$libObj get $path.default]
+    if {$str != ""} { $w value $str }
+
+    if {$type == "Rappture::Gauge" && "" != $min && "" != $max} {
+        set color [$libObj get $path.color]
+        if {$color == ""} {
+            set color blue
+        }
+        if {$units != ""} {
+            set min [Rappture::Units::convert $min -to $units -units off]
+            set max [Rappture::Units::convert $max -to $units -units off]
+        }
+        $w configure -spectrum [Rappture::Spectrum ::#auto [list \
+            $min white $max $color] -units $units]
+    }
+
+    set str [$libObj get $path.label]
+    if {$str != ""} {
+        set help [$libObj get $path.help]
+        if {"" != $help} {
+            append str "\n$help"
+        }
+        if {$units != ""} {
+            set desc [Rappture::Units::description $units]
+            append str "\n(units of $desc)"
+        }
+        Rappture::Tooltip::for $w $str
+    }
+
+    set str [$libObj get $path.icon]
+    if {$str != ""} {
+        $w configure -image [image create photo -data $str]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _controlSet <widget> <libObj> <path>
+#
+# Invoked automatically whenever an internal control changes value.
+# Queries the new value for the control and assigns the value to the
+# given <path> on the XML object <libObj>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceViewer1D::_controlSet {widget libObj path} {
+    set newval [$widget value]
+    $libObj put $path.current $newval
+    event generate $itk_component(hull) <<Edit>>
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -device
+#
+# Set to the Rappture::Library object representing the device being
+# displayed in the viewer.  If set to "", the viewer is cleared to
+# display nothing.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::DeviceViewer1D::device {
+    if {$itk_option(-device) != ""} {
+        if {![Rappture::library isvalid $itk_option(-device)]} {
+            error "bad value \"$itk_option(-device)\": should be Rappture::Library"
+        }
+    }
+
+    delete
+    if {"" != $itk_option(-device)} {
+        add $itk_option(-device)
+    }
+    _loadDevice
+}
Index: /tags/1.6.0/gui/scripts/deviceresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/deviceresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/deviceresult.tcl	(revision 6168)
@@ -0,0 +1,128 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: DeviceResult - output for <structure>
+#
+#  This widget is used to show <structure> output.  It is similar
+#  to a DeviceEditor, but does not allow editing.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *DeviceResult.width 4i widgetDefault
+option add *DeviceResult.height 4i widgetDefault
+option add *DeviceResult.font \
+    -*-courier-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::DeviceResult {
+    inherit itk::Widget
+
+    constructor {args} { # defined below }
+
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method parameters {title args} { # do nothing }
+    public method download {option args}
+
+    private variable _dataobj ""  ;# data object currently being displayed
+}
+
+itk::usual DeviceResult {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceResult::constructor {args} {
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    itk_component add viewer {
+        # turn off auto-cleanup -- resultset swaps results in and out
+        Rappture::DeviceEditor $itk_interior.dev "" -autocleanup no
+    }
+    pack $itk_component(viewer) -expand yes -fill both
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  If the optional
+# <settings> are specified, then the are applied to the data.  Allowed
+# settings are -color and -brightness, -width, -linestyle and -raise.
+# (Many of these are ignored.)
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceResult::add {dataobj {settings ""}} {
+    array set params {
+        -color ""
+        -brightness ""
+        -width ""
+        -linestyle ""
+        -raise ""
+        -description ""
+        -param ""
+    }
+    array set params $settings
+
+    eval $itk_component(viewer) add $dataobj [list $settings]
+
+    set _dataobj $dataobj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceResult::get {} {
+    return $_dataobj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceResult::delete {args} {
+    eval $itk_component(viewer) delete $args
+    set _dataobj ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<dataobj1> <dataobj2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <dataobj> objects.  This
+# accounts for all dataobjs--even those not showing on the screen.
+# Because of this, the limits are appropriate for all dataobjs as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceResult::scale {args} {
+    # nothing to do for structures
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DeviceResult::download {option args} {
+    return [eval $itk_component(viewer) download $option $args]
+}
Index: /tags/1.6.0/gui/scripts/diffview.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/diffview.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/diffview.tcl	(revision 6168)
@@ -0,0 +1,121 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  WIDGET: diffview - view differences between two strings
+#
+#  These are the class bindings for the Diffview widget.  The widget
+#  itself is implemented in C code, but this file customizes the
+#  behavior of the widget by adding default bindings.  It is loaded
+#  when the widget initializes itself.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+namespace eval Rappture { # forward declaration }
+
+# ----------------------------------------------------------------------
+# Code for "usual" itk options
+# ----------------------------------------------------------------------
+if {[catch {package require Itk}] == 0} {
+    itk::usual Diffview {
+        keep -background -foreground -cursor
+        keep -addedbackground -addedforeground
+        keep -deletedbackground -deletedforeground -overstrike
+        keep -changedbackground -changedforeground
+        keep -highlightcolor -highlightthickness
+        rename -highlightbackground -background background Background
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# Key navigation
+# ----------------------------------------------------------------------
+bind Diffview <Key-Up> {
+    %W yview scroll -1 units
+}
+bind Diffview <Control-Key-Up> {
+    %W yview scroll -1 pages
+}
+bind Diffview <Key-Prior> {
+    %W yview scroll -1 pages
+}
+
+bind Diffview <Key-Down> {
+    %W yview scroll 1 units
+}
+bind Diffview <Control-Key-Down> {
+    %W yview scroll 1 pages
+}
+bind Diffview <Key-Next> {
+    %W yview scroll 1 pages
+}
+
+bind Diffview <Key-Left> {
+    %W xview scroll -1 units
+}
+bind Diffview <Control-Key-Left> {
+    %W xview scroll -1 pages
+}
+
+bind Diffview <Key-Right> {
+    %W xview scroll 1 units
+}
+bind Diffview <Control-Key-Right> {
+    %W xview scroll 1 pages
+}
+
+# ----------------------------------------------------------------------
+# Click/drag for fast scanning
+# ----------------------------------------------------------------------
+bind Diffview <ButtonPress-2> {
+    %W scan mark %x %y
+}
+bind Diffview <B2-Motion> {
+    %W scan dragto %x %y
+}
+
+# ----------------------------------------------------------------------
+# MouseWheel bindings
+# ----------------------------------------------------------------------
+switch -- [tk windowingsystem] {
+    classic - aqua {
+        bind Diffview <MouseWheel> {
+            %W yview scroll [expr {-(%D)}] units
+        }
+        bind Diffview <Option-MouseWheel> {
+            %W yview scroll [expr {-10*(%D)}] units
+        }
+        bind Diffview <Shift-MouseWheel> {
+            %W xview scroll [expr {-(%D)}] units
+        }
+        bind Diffview <Shift-Option-MouseWheel> {
+            %W xview scroll [expr {-10*(%D)}] units
+        }
+    }
+    x11 {
+        # support for mousewheels on Linux comes from buttons 4/5
+        bind Diffview <4> {
+            if {!$tk_strictMotif} {
+                %W yview scroll -5 units
+            }
+        }
+        bind Diffview <5> {
+            if {!$tk_strictMotif} {
+                %W yview scroll 5 units
+            }
+        }
+
+        # in case anyone generates a <MouseWheel> event
+        bind Diffview <MouseWheel> {
+            %W yview scroll [expr {-(%D/120)*4}] units
+        }
+    }
+    default {
+        bind Diffview <MouseWheel> {
+            %W yview scroll [expr {-(%D/120)*4}] units
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/dispatcher.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/dispatcher.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/dispatcher.tcl	(revision 6168)
@@ -0,0 +1,348 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: dispatcher - central notification mechanism
+#
+#  The DispatchObj is used within other objects to manage events that
+#  the object sends to itself or other clients.  Each event type
+#  must first be registered via the "register" method.  After that,
+#  an event can be dispatched by calling the "event" method.  Clients
+#  can bind to the various event types by registering a callback via
+#  the "dispatch" method.
+#
+#  The Dispatcher base class provides a foundation for objects that
+#  use the DispatchObj internally.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+namespace eval Rappture { # forward declaration }
+
+proc Rappture::dispatcher {varName} {
+    upvar $varName obj
+    set obj [Rappture::DispatchObj ::#auto]
+    trace variable obj u "[list rename $obj {}]; list"
+}
+
+itcl::class Rappture::DispatchObj {
+    constructor {} { # defined below }
+    destructor { # defined below }
+
+    public method register {args}
+    public method dispatch {option args}
+    public method event {name args}
+    public method cancel {args}
+    public method ispending {name}
+
+    protected method _send {event caller {arglist ""}}
+
+    private variable _event2clients  ;# maps !event => clients
+    private variable _event2datacb   ;# maps !event => data callback
+    private variable _dispatch       ;# maps !event/client => callback
+    private variable _extraargs      ;# extra args for dispatch calls
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DispatchObj::constructor {} {
+    # nothing to do
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DispatchObj::destructor {} {
+    eval cancel [array names _event2clients]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: register !event ?dataCallback?
+#
+# Clients use this to register new event types with this dispatcher.
+# Once registered, each !event name can be used in the "dispatch"
+# method to bind to the event, and in the "event" method to raise
+# the event.  If the optional dataCallback is supplied, then it is
+# invoked whenever the event is triggered to generate event data
+# that gets passed along to the various dispatch callbacks.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DispatchObj::register {name {datacb ""}} {
+    if {![regexp {^![-_a-zA-Z0-9]} $name]} {
+        error "bad name \"$name\": should be !name"
+    }
+    if {[info exists _event2clients($name)]} {
+        error "event \"$name\" already exists"
+    }
+    set _event2clients($name) ""
+    set _event2datacb($name) $datacb
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dispatch caller ?-now? ?!event ...? ?callback?
+#
+# Clients use this to query binding information, or to bind a callback
+# to one or more of the !events recognized by this object.
+#
+# With no args, this returns a list of all events that are currently
+# bound to the caller.
+#
+# With one argument, this returns the callback associated with the
+# specified !event for the given caller.
+#
+# Otherwise, it sets the callback for one or more events.  If the
+# -now flag is specified, then the callback is invoked immediately
+# to send data back to this caller.  This comes in handy when the
+# caller is set up to react to changes.  It provides a way of
+# initializing the client, as if an event had just occurred.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DispatchObj::dispatch {caller args} {
+    if {[llength $args] == 0} {
+        # no args? then return a list of events for this caller
+        foreach key [array names _dispatch $caller-*] {
+            set name [lindex [split $key -] 1]
+            set events($name) 1
+        }
+        return [array names events]
+    } elseif {[llength $args] == 1} {
+        set name [lindex $args 0]
+        if {[info exists _dispatch($caller-$name)]} {
+            return $_dispatch($caller-$name)
+        }
+        return ""
+    }
+
+    # set a callback for one or more events
+    set now 0
+    set events ""
+    set callback [lindex $args end]
+    foreach str [lrange $args 0 end-1] {
+        if {$str == "-now"} {
+            set now 1
+        } elseif {[info exists _event2clients($str)]} {
+            lappend events $str
+        } else {
+            if {[string index $str 0] == "-"} {
+                error "bad option \"$str\": should be -now"
+            } else {
+                error "bad event \"$str\": should be [join [lsort [array names _event2clients]] {, }]"
+            }
+        }
+    }
+
+    #
+    # If the callback is "", then remove the callback for this
+    # caller.  Otherwise, set the callback for this caller.
+    #
+    foreach name $events {
+        cancel $name
+
+        if {"" == $callback} {
+            catch {unset _dispatch($caller-$name)}
+            if {"" == [array names _dispatch $caller-*]} {
+                set i [lsearch $_event2clients($name) $caller]
+                if {$i >= 0} {
+                    set _event2clients($name) [lreplace $_event2clients($name) $i $i]
+                }
+            }
+        } else {
+            set _dispatch($caller-$name) $callback
+            set i [lsearch $_event2clients($name) $caller]
+            if {$i < 0} { lappend _event2clients($name) $caller }
+
+            if {$now} {
+                _send $name $caller
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: event ?-now? ?-later? ?-idle? ?-after time? !event ?args...?
+#
+# Clients use this to dispatch an event to any callers who have
+# registered their interest.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DispatchObj::event {args} {
+    set when "-now"
+    set first [lindex $args 0]
+    if {[string index $first 0] == "-"} {
+        switch -- $first {
+            -now   {
+                set when "-now"
+                set args [lrange $args 1 end]
+            }
+            -later {
+                set when 1
+                set args [lrange $args 1 end]
+            }
+            -idle  {
+                set when "-idle"
+                set args [lrange $args 1 end]
+            }
+            -after {
+                set when [lindex $args 1]
+                if {![string is int $when]} {
+                    error "bad value \"$when\": should be int (time in ms)"
+                }
+                set args [lrange $args 2 end]
+            }
+            default {
+                error "bad option \"$first\": should be -now, -later, -idle, or -after"
+            }
+        }
+    }
+
+    if {[llength $args] < 1} {
+        error "wrong # args: should be \"event ?switches? !event ?args...?\""
+    }
+    set event [lindex $args 0]
+    set args [lrange $args 1 end]
+    if {![info exists _event2clients($event)]} {
+        error "bad event \"$event\": should be [join [lsort [array names _event2clients]] {, }]"
+    }
+
+    switch -- $when {
+        -now {
+            _send $event all $args
+        }
+        -idle {
+            set _extraargs($event) $args
+            after cancel [itcl::code $this _send $event all @extra]
+            after idle [itcl::code $this _send $event all @extra]
+        }
+        default {
+            set _extraargs($event) $args
+            after cancel [itcl::code $this _send $event all @extra]
+            after $when [itcl::code $this _send $event all @extra]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: cancel ?!event ...?
+#        cancel all
+#
+# Used to cancel any event notifications pending for the specified
+# list of events.  Notifications may be pending if a particular
+# event was raised with the -idle or -after flags.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DispatchObj::cancel {args} {
+    if { $args == "all" } {
+        foreach event [array names _event2clients] {
+            after cancel [itcl::code $this _send $event all @extra]
+        }
+        return
+    }
+    foreach event $args {
+        if {![info exists _event2clients($event)]} {
+            error "bad event \"$event\": should be [join [lsort [array names _event2clients]] {, }]"
+        }
+        after cancel [itcl::code $this _send $event all @extra]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ispending !event
+#
+# Returns 1 if the specified !event is pending, and 0 otherwise.
+# Notifications may be pending if a particular event was raised
+# with the -idle or -after flags.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DispatchObj::ispending {event} {
+    set cmd [itcl::code $this _send $event all @extra]
+    foreach id [after info] {
+        set cmd2 [lindex [after info $id] 0]
+        if {[string equal $cmd $cmd2]} {
+            return 1
+        }
+    }
+    return 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _send !event caller ?arglist?
+#
+# Used internally to send an event to one or all callers.  The event
+# is sent by first invoking a callback to generate any data associated
+# with the event.  This data, along with any extra args passed in,
+# are added to the callback for the caller.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DispatchObj::_send {event caller {arglist ""}} {
+    if {$caller == "all"} {
+        set caller $_event2clients($event)
+    }
+    if {$arglist == "@extra" && [info exists _extraargs($event)]} {
+        set arglist $_extraargs($event)
+    }
+
+    # if there are any clients for this event, get the arguments ready
+    set any 0
+    foreach cname $caller {
+        if {[info exists _dispatch($cname-$event)]} {
+            set any 1
+            break
+        }
+    }
+
+    set dargs ""
+    if {$any && [string length $_event2datacb($event)] > 0} {
+        # get the args from the data callback
+        set status [catch {
+            uplevel #0 $_event2datacb($event) $event
+        } dargs]
+
+        if {$status != 0} {
+            # anything go wrong? then throw a background error
+            bgerror "$dargs\n(while dispatching $event)"
+            set dargs ""
+        }
+    }
+    # add any arguments added from command line
+    eval lappend dargs $arglist
+
+    foreach cname $caller {
+        if {[info exists _dispatch($cname-$event)]} {
+            set status [catch {
+                uplevel #0 $_dispatch($cname-$event) event $event $dargs
+            } result]
+
+            if {$status != 0} {
+                # anything go wrong? then throw a background error
+                bgerror "$result\n(while dispatching $event to $cname)"
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# BASE CLASS: Dispatcher
+# ----------------------------------------------------------------------
+itcl::class Rappture::Dispatcher {
+    constructor {args} {
+        Rappture::dispatcher _dispatcher
+        $_dispatcher register !destroy
+
+        eval configure $args
+    }
+
+    destructor {
+        event !destroy
+    }
+
+    public method dispatch {args} {
+        eval $_dispatcher dispatch $args
+    }
+
+    protected method register {args} {
+        eval $_dispatcher register $args
+    }
+    protected method event {args} {
+        eval $_dispatcher event $args object $this
+    }
+
+    private variable _dispatcher ""  ;# dispatcher for events
+}
Index: /tags/1.6.0/gui/scripts/drawing.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/drawing.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/drawing.tcl	(revision 6168)
@@ -0,0 +1,261 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: drawing - 3D drawing of data
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+package require BLT
+
+namespace eval Rappture {
+    # forward declaration
+}
+
+itcl::class Rappture::Drawing {
+    constructor {xmlobj path} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method label { elem }
+    public method type { elem }
+    public method style { elem }
+    public method shape { elem }
+    public method values { elem }
+    public method data { elem }
+    public method hints {{keyword ""}}
+    public method components { args }
+
+    private variable _drawing
+    private variable _xmlobj
+    private variable _styles
+    private variable _shapes
+    private variable _labels
+    private variable _types
+    private variable _data
+    private variable _hints
+    private variable _units
+}
+
+# ----------------------------------------------------------------------
+# Constructor
+# ----------------------------------------------------------------------
+itcl::body Rappture::Drawing::constructor {xmlobj path} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be Rappture::library"
+    }
+    set _xmlobj $xmlobj
+    set _drawing [$xmlobj element -as object $path]
+    set _units [$_drawing get units]
+
+    set xunits [$xmlobj get units]
+    if {"" == $xunits || "arbitrary" == $xunits} {
+        set xunits "um"
+    }
+    # determine the overall size of the device
+    foreach elem [$_xmlobj children $path] {
+        switch -glob -- $elem {
+            # polygon is deprecated in favor of polydata
+            polygon* - polydata* {
+                set _data($elem) [$_xmlobj get $path.$elem.vtk]
+                set _data($elem) [string trim $_data($elem)]
+                set _styles($elem) [$_xmlobj get $path.$elem.about.style]
+                set _labels($elem) [$_xmlobj get $path.$elem.about.label]
+                set _types($elem) polydata
+            }
+            glyphs* {
+                set _data($elem) [$_xmlobj get $path.$elem.vtk]
+                set _data($elem) [string trim $_data($elem)]
+                set _styles($elem) [$_xmlobj get $path.$elem.about.style]
+                set _labels($elem) [$_xmlobj get $path.$elem.about.label]
+                set _shapes($elem) [$_xmlobj get $path.$elem.about.shape]
+                set _types($elem) glyphs
+            }
+            molecule* {
+                set pdbdata [$_xmlobj get $path.$elem.pdb]
+                if { $pdbdata != "" } {
+                    set contents [Rappture::PdbToVtk $pdbdata]
+                } else {
+                    set contents [$_xmlobj get $path.$elem.vtk]
+                }
+                set _data($elem) [string trim $contents]
+                set _styles($elem) [$_xmlobj get $path.$elem.about.style]
+                set _labels($elem) [$_xmlobj get $path.$elem.about.label]
+                set _types($elem) molecule
+            }
+        }
+    }
+    foreach {key path} {
+        camera  about.camera
+        color   about.color
+        group   about.group
+        label   about.label
+        type    about.type
+        xdesc   xaxis.description
+        ydesc   yaxis.description
+        zdesc   zaxis.description
+        xlabel  xaxis.label
+        ylabel  yaxis.label
+        zlabel  zaxis.label
+        xscale  xaxis.scale
+        yscale  yaxis.scale
+        zscale  zaxis.scale
+        xunits  xaxis.units
+        yunits  yaxis.units
+        zunits  zaxis.units
+        xmin    xaxis.min
+        xmax    xaxis.max
+        ymin    yaxis.min
+        ymax    yaxis.max
+        zmin    zaxis.min
+        zmax    zaxis.max
+    } {
+        set str [$_drawing get $path]
+        if {"" != $str} {
+            set _hints($key) $str
+        }
+    }
+    foreach {key path} {
+        toolid          tool.id
+        toolname        tool.name
+        toolcommand     tool.execute
+        tooltitle       tool.title
+        toolrevision    tool.version.application.revision
+    } {
+        set str [$_xmlobj get $path]
+        if { "" != $str } {
+            set _hints($key) $str
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Destructor
+# ----------------------------------------------------------------------
+itcl::body Rappture::Drawing::destructor {} {
+    # empty
+}
+
+#
+# label --
+#
+#       Returns the label of the named drawing element.
+#
+itcl::body Rappture::Drawing::label { elem } {
+    if { [info exists _labels($elem)] } {
+        return $_labels($elem)
+    }
+    return ""
+}
+
+#
+# type --
+#
+#       Returns the type of the named drawing element.
+#
+itcl::body Rappture::Drawing::type { elem } {
+    if { [info exists _types($elem)] } {
+        return $_types($elem)
+    }
+    return ""
+}
+
+#
+# style --
+#
+#       Returns the style string of the named drawing element.
+#
+itcl::body Rappture::Drawing::style { elem } {
+    if { [info exists _styles($elem)] } {
+        return $_styles($elem)
+    }
+    return ""
+}
+
+#
+# shape --
+#
+#       Returns the shape of the glyphs in the drawing element.
+#
+itcl::body Rappture::Drawing::shape { elem } {
+    set shape ""
+    if { [info exists _shapes($elem)] } {
+        return $_shapes($elem)
+    }
+    switch -- $shape {
+        arrow - cone - cube - cylinder - dodecahedron -
+        icosahedron - line - octahedron - sphere - tetrahedron  {
+            return $shape
+        }
+        default {
+            puts stderr "unknown glyph shape \"$shape\""
+        }
+    }
+    return ""
+}
+
+#
+# data --
+#
+#       Returns the data of the named drawing element.
+#
+itcl::body Rappture::Drawing::data { elem } {
+    if { [info exists _data($elem)] } {
+        return $_data($elem)
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# method values
+#       Returns a base64 encoded, gzipped Tcl list that represents the
+#       Tcl command and data to recreate the uniform rectangular grid
+#       on the nanovis server.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Drawing::values { elem } {
+    if { [info exists _data($elem)] } {
+        return $_data($elem)
+    }
+    return ""
+}
+
+itcl::body Rappture::Drawing::components { args } {
+    return [array names _data]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this curve.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Drawing::hints { {keyword ""} } {
+    if 0 {
+    if {[info exists _hints(xlabel)] && "" != $_hints(xlabel)
+        && [info exists _hints(xunits)] && "" != $_hints(xunits)} {
+        set _hints(xlabel) "$_hints(xlabel) ($_hints(xunits))"
+    }
+    if {[info exists _hints(ylabel)] && "" != $_hints(ylabel)
+        && [info exists _hints(yunits)] && "" != $_hints(yunits)} {
+        set _hints(ylabel) "$_hints(ylabel) ($_hints(yunits))"
+    }
+    }
+    if {[info exists _hints(group)] && [info exists _hints(label)]} {
+        # pop-up help for each curve
+        set _hints(tooltip) $_hints(label)
+    }
+    if {$keyword != ""} {
+        if {[info exists _hints($keyword)]} {
+            return $_hints($keyword)
+        }
+        return ""
+    }
+    return [array get _hints]
+}
Index: /tags/1.6.0/gui/scripts/drawingentry.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/drawingentry.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/drawingentry.tcl	(revision 6168)
@@ -0,0 +1,1151 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: DrawingEntry - widget for entering numeric values
+#
+#  This widget represents a <number> entry on a control panel.
+#  It is used to enter numeric values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require Img
+
+itcl::class Rappture::DrawingEntry {
+    inherit itk::Widget
+    itk_option define -state state State "normal"
+
+    private variable _dispatcher ""
+    private variable _path
+    private variable _owner
+    private variable _monitoring ""
+    private variable _xmlobj ""
+
+    # slave interpreter where all substituted variables are stored
+    private variable _parser ""
+
+    # unique counter for popup names
+    private common _popupnum 0
+
+    private variable _canvasHeight 0
+    private variable _canvasWidth 0
+    private variable _cpath2popup
+    private variable _takedown ""
+    private variable _cname2id
+    private variable _cname2image
+    private variable _name2path
+    private variable _name2map
+    private variable _drawingHeight 0
+    private variable _drawingWidth 0
+    private variable _showing ""
+    private variable _xAspect 0
+    private variable _xMin 0
+    private variable _xOffset 0
+    private variable _xScale 1.0
+    private variable _yAspect 0
+    private variable _yMin 0
+    private variable _yOffset 0
+    private variable _yScale 1.0
+    private variable _cursor ""
+
+    constructor {owner path args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method value { args }
+    public method label {}
+    public method tooltip {}
+
+    private method Activate { tag }
+    private method AdjustDrawingArea { xAspect yAspect }
+    private method Deactivate { tag }
+    private method Highlight { tag }
+    private method Invoke { name x y }
+    private method ParseBackground {}
+    private method ParseDescription {}
+    private method ParseGrid { cpath cname }
+    private method ParseHotspot { cpath cname }
+    private method ParseLine { cpath cname }
+    private method ParseOval { cpath cname }
+    private method ParsePicture { cpath cname }
+    private method ParsePolygon { cpath cname }
+    private method ParseRectangle { cpath cname }
+    private method ParseScreenCoordinates { values }
+    private method ParseText { cpath cname }
+    private method Redraw {}
+    private method ScreenCoords { coords }
+    private method ScreenX { x }
+    private method ScreenY { y }
+    private method UpdateSubstitutions {}
+    private method XmlGet { path }
+    private method XmlGetSubst { path }
+    private method Hotspot { option cname item args }
+}
+
+itk::usual DrawingEntry {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::DrawingEntry::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _path $path
+    set _owner $owner
+    set _xmlobj [$_owner xml object]
+
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !redraw
+    $_dispatcher dispatch $this !redraw "[itcl::code $this Redraw]; list"
+
+    #
+    # Display the current drawing.
+    #
+    itk_component add drawing {
+        canvas $itk_interior.canvas -background white -relief sunken -bd 1 \
+            -width 400 -height 300
+    } {
+        ignore -background
+    }
+    pack $itk_component(drawing) -expand yes -fill both
+    bind $itk_component(drawing) <Configure> \
+        [itcl::code $_dispatcher event -idle !redraw]
+
+    # scan through all variables and attach notifications for changes
+    set subs [$_xmlobj children -as path -type variable $_path.substitutions]
+    foreach cpath $subs {
+        set map ""
+        set name ""
+        set path ""
+        foreach elem [$_xmlobj children $cpath] {
+            switch -glob -- $elem {
+                "name*" {
+                    set name [XmlGet $cpath.$elem]
+                }
+                "path*" {
+                    set path [XmlGet $cpath.$elem]
+                }
+                "map*" {
+                    set from [XmlGet $cpath.$elem.from]
+                    set to [XmlGet $cpath.$elem.to]
+                    lappend map $from $to
+                }
+            }
+        }
+        if {$name eq ""} {
+            puts stderr "no name defined for substitution variable \"$cpath\""
+            continue
+        }
+        if {[info exists _name2path($name)]} {
+            puts stderr "substitution variable \"$name\" already defined"
+            continue
+        }
+        set _name2path($name) $path
+        if {$path eq ""} {
+            puts stderr "no path defined for substitution variable \"$cpath\""
+            continue
+        }
+        set _name2map($name) $map
+
+        # keep track of controls built for each variable (see below)
+        set controls($path) unused
+
+        # whenever variable changes, update drawing to report new values
+        if {[lsearch $_monitoring $path] < 0} {
+            $_owner notify add $this $path \
+                [itcl::code $_dispatcher event -idle !redraw]
+            lappend _monitoring $path
+        }
+    }
+
+    # find all embedded controls and build a popup for each hotspot
+    set hotspots [$_xmlobj children -type hotspot -as path $_path.components]
+    foreach cpath $hotspots {
+        set listOfControls [$_xmlobj children -type controls $cpath]
+        if {[llength $listOfControls] > 0} {
+            set popup .drawingentrypopup[incr _popupnum]
+            Rappture::Balloon $popup -title "Change values..."
+            set inner [$popup component inner]
+            Rappture::Controls $inner.controls $_owner
+            pack $inner.controls -fill both -expand yes
+            set _cpath2popup($cpath) $popup
+
+            # Add control widgets to this popup.
+            # NOTE: if the widget exists elsewhere, it is deleted at this
+            #   point and "sucked in" to the popup.
+            foreach cname $listOfControls {
+                set cntlpath [XmlGetSubst $cpath.$cname]
+                $inner.controls insert end $cntlpath
+            }
+        }
+    }
+    set c $itk_component(drawing)
+    set texts [$_xmlobj children -type text -as path $_path.components]
+    foreach cpath $texts {
+        set popup ""
+        set mode [XmlGetSubst $cpath.hotspot]
+        if {$mode eq "off"} {
+            # no popup if hotspot is turned off
+            continue
+        }
+
+        # easiest way to parse embedded variables is to create a hotspot item
+        set id [$c create hotspot 0 0 -text [XmlGet $cpath.text]]
+        foreach varName [Rappture::hotspot variables $c $id] {
+            if {[info exists _name2path($varName)]} {
+                set cntlpath $_name2path($varName)
+
+                if {$controls($cntlpath) ne "unused"} {
+                    puts stderr "WARNING: drawing variable \"$varName\" is used in two hotspots, but will appear in only one of them."
+                    continue
+                }
+                set controls($cntlpath) "--"
+
+                if {$popup eq ""} {
+                    # create the popup for this item, if we haven't already
+                    set popup .drawingentrypopup[incr _popupnum]
+                    Rappture::Balloon $popup -title "Change values..."
+                    set inner [$popup component inner]
+                    Rappture::Controls $inner.controls $_owner
+                    pack $inner.controls -fill both -expand yes
+                }
+
+                # Add the control widget for this variable to this popup.
+                # NOTE: if the widget exists elsewhere, it is deleted at this
+                #   point and "sucked in" to the popup.
+                set inner [$popup component inner]
+                $inner.controls insert end $cntlpath
+                set _cpath2popup($cntlpath) $popup
+            } else {
+                puts stderr "unknown variable \"$varName\" in drawing item at $cpath"
+            }
+        }
+        $c delete $id
+    }
+
+    # create a parser to manage substitions of variable values
+    set _parser [interp create -safe]
+
+    eval itk_initialize $args
+
+    # initialize the drawing at some point
+    $_dispatcher event -idle !redraw
+}
+
+itcl::body Rappture::DrawingEntry::destructor {} {
+    # stop monitoring controls for value changes
+    foreach cpath $_monitoring {
+        $_owner notify remove $this $cpath
+    }
+
+    # tear down the value subsitution parser
+    if {$_parser != ""} {
+        $_parser delete
+    }
+}
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DrawingEntry::label {} {
+    set label [string trim [$_owner xml get $_path.about.label]]
+    if {$label eq ""} {
+        set label "Drawing"
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DrawingEntry::tooltip {} {
+    set str [$_xmlobj get $_path.about.description]
+    return [string trim $str]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::DrawingEntry::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+}
+
+itcl::body Rappture::DrawingEntry::Redraw {} {
+    # If a popup is pending, redraw signals a value change; take it down
+    if {$_takedown ne ""} {
+        $_takedown deactivate
+        set _takedown ""
+    }
+
+    # Remove exists canvas items and hints
+    $itk_component(drawing) delete all
+
+    # Delete any images that we created.
+    foreach name [array names _cname2image] {
+        image delete $_cname2image($name)
+    }
+    array unset _cname2id
+    array unset _cname2image
+
+    # Recompute the size of the canvas/drawing area
+    set _canvasWidth [winfo width $itk_component(drawing)]
+    if { $_canvasWidth < 2 } {
+        set _canvasWidth [winfo reqwidth $itk_component(drawing)]
+    }
+    set _canvasHeight [winfo height $itk_component(drawing)]
+    if { $_canvasHeight < 2 } {
+        set _canvasHeight [winfo reqheight $itk_component(drawing)]
+    }
+    set _drawingWidth $_canvasWidth
+    set _drawingHeight $_canvasHeight
+    set _xOffset 0
+    set _yOffset 0
+    # By default, the screen coordinates are 0 to 1
+    ParseScreenCoordinates "0 0 1 1"
+    ParseDescription
+}
+
+#
+# ParseDescription --
+#
+itcl::body Rappture::DrawingEntry::ParseDescription {} {
+    ParseBackground
+    UpdateSubstitutions
+    foreach cname [$_xmlobj children $_path.components] {
+        switch -glob -- $cname {
+            "line*" {
+                ParseLine $_path.components.$cname $cname
+            }
+            "grid*" {
+                ParseGrid $_path.components.$cname $cname
+            }
+            "text*" {
+                ParseText $_path.components.$cname $cname
+            }
+            "picture*" {
+                ParsePicture $_path.components.$cname $cname
+            }
+            "rectangle*" {
+                ParseRectangle $_path.components.$cname $cname
+            }
+            "oval*" {
+                ParseOval $_path.components.$cname $cname
+            }
+            "polygon*" {
+                ParsePolygon $_path.components.$cname $cname
+            }
+            "hotspot*" {
+                ParseHotspot $_path.components.$cname $cname
+            }
+        }
+    }
+}
+
+#
+# ParseGrid --
+#
+itcl::body Rappture::DrawingEntry::ParseGrid { cpath cname } {
+    array set attr2option {
+        "linewidth"     "-width"
+        "arrow"         "-arrow"
+        "dash"          "-dash"
+        "color"         "-fill"
+    }
+    # Set default options first and then let tool.xml override them.
+    array set options {
+        -arrow          none
+        -width          0
+        -fill           black
+        -dash           ""
+    }
+    # Coords
+    set xcoords [XmlGetSubst $cpath.xcoords]
+    set ycoords [XmlGetSubst $cpath.ycoords]
+    if { $ycoords == "" } {
+        set ycoords "0 1"
+        set ymax 1
+        set ymin 0
+    } else {
+        set list {}
+        set ymax -10000
+        set ymin 10000
+        foreach c $ycoords {
+            set y [ScreenY $c]
+            if { $y > $ymax } {
+                set ymax $y
+            }
+            if { $y < $ymin } {
+                set ymin $y
+            }
+            lappend list $y
+        }
+        set ycoords $list
+    }
+    if { $xcoords == "" } {
+        set xcoords "0 1"
+        set xmax 1
+        set xmin 0
+    } else {
+        set list {}
+        set xmax -10000
+        set xmin 10000
+        foreach c $xcoords {
+            set x [ScreenX $c]
+            if { $x > $xmax } {
+                set xmax $x
+            }
+            if { $x < $xmin } {
+                set xmin $x
+            }
+            lappend list $x
+        }
+        set xcoords $list
+    }
+
+    set list {}
+    foreach attr [$_xmlobj children $cpath] {
+        if { [info exists attr2option($attr)] } {
+            set option $attr2option($attr)
+            set value [XmlGetSubst $cpath.$attr]
+            set options($option) $value
+        }
+    }
+    set options(-tags) $cname
+    foreach y $ycoords {
+        lappend ids \
+            [eval $itk_component(drawing) create line $xmin $y $xmax $y \
+                 [array get options]]
+    }
+    foreach x $xcoords {
+        lappend ids \
+            [eval $itk_component(drawing) create line $x $ymin $x $ymax \
+                 [array get options]]
+    }
+    set _cname2id($cname) $ids
+}
+
+#
+# ParseHotspot --
+#
+itcl::body Rappture::DrawingEntry::ParseHotspot { cpath cname } {
+    array set attr2option {
+        "color"  "-fill"
+        "anchor" "-anchor"
+    }
+
+    # Set default options first and then let tool.xml override them.
+    array set options {
+        -fill red
+        -anchor c
+    }
+    foreach attr [$_xmlobj children $cpath] {
+        if { [info exists attr2option($attr)] } {
+            set option $attr2option($attr)
+            set value [XmlGetSubst $cpath.$attr]
+            set options($option) $value
+        }
+    }
+    # Coordinates
+    set coords [XmlGetSubst $cpath.coords]
+    if {$coords eq ""} {
+        set coords "0 0 1 1"
+    }
+    set c $itk_component(drawing)
+    foreach {x1 y1} [ScreenCoords $coords] break
+    set id [$itk_component(drawing) create image $x1 $y1]
+    array unset options -fill
+    set options(-tags) $cname
+    set options(-image) [Rappture::icon hotspot_normal]
+    eval $c itemconfigure $id [array get options]
+    set _cname2id($cname) $id
+    $c bind $id <Enter> [itcl::code $this Activate $cname]
+    $c bind $id <Leave> [itcl::code $this Deactivate $cname]
+    set bbox [$c bbox $id]
+    set y1 [lindex $bbox 1]
+    $c bind $id <ButtonPress-1> [itcl::code $this Invoke $cpath $x1 $y1]
+}
+
+#
+# ParseLine --
+#
+itcl::body Rappture::DrawingEntry::ParseLine { cpath cname } {
+    array set attr2option {
+        "linewidth"     "-width"
+        "arrow"         "-arrow"
+        "dash"          "-dash"
+        "color"         "-fill"
+    }
+    # Set default options first and then let tool.xml override them.
+    array set options {
+        -arrow          none
+        -width          0
+        -fill           black
+        -dash           ""
+    }
+    # Coords
+    set coords [XmlGetSubst $cpath.coords]
+    if {$coords eq ""} {
+        set coords "0 0"
+    }
+    set coords [ScreenCoords $coords]
+
+    set list {}
+    foreach attr [$_xmlobj children $cpath] {
+        if { [info exists attr2option($attr)] } {
+            set option $attr2option($attr)
+            set value [XmlGetSubst $cpath.$attr]
+            set options($option) $value
+        }
+    }
+    set options(-tags) $cname
+    set id [eval $itk_component(drawing) create line $coords]
+    set _cname2id($cname) $id
+    eval $itk_component(drawing) itemconfigure $id [array get options]
+}
+
+#
+# ParseOval --
+#
+itcl::body Rappture::DrawingEntry::ParseOval { cpath cname } {
+    array set attr2option {
+        "outline"       "-outline"
+        "fill"          "-fill"
+        "linewidth"     "-width"
+    }
+
+    # Set default options first and then let tool.xml override them.
+    array set options {
+        -fill blue
+        -width 1
+        -outline black
+    }
+    foreach attr [$_xmlobj children $cpath] {
+        if { [info exists attr2option($attr)] } {
+            set option $attr2option($attr)
+            set value [XmlGetSubst $cpath.$attr]
+            set options($option) $value
+        }
+    }
+    # Coordinates
+    set coords [XmlGetSubst $cpath.coords]
+    if {$coords eq ""} {
+        set coords "0 0 1 1"
+    }
+    foreach { x1 y1 x2 y2 } [ScreenCoords $coords] break
+    set id [$itk_component(drawing) create oval $x1 $y1 $x2 $y2]
+    set _cname2id($cname) $id
+    eval $itk_component(drawing) itemconfigure $id [array get options]
+}
+
+#
+# ParsePicture --
+#
+itcl::body Rappture::DrawingEntry::ParsePicture { cpath cname } {
+    array set attr2option {
+        "anchor"        "-anchor"
+    }
+
+    # Set default options first and then let tool.xml override them.
+    array set options {
+        -anchor nw
+    }
+    foreach attr [$_xmlobj children $cpath] {
+        if { [info exists attr2option($attr)] } {
+            set option $attr2option($attr)
+            set value [XmlGetSubst $cpath.$attr]
+            set options($option) $value
+        }
+    }
+    set contents [string trim [XmlGetSubst $cpath.contents]]
+    set img ""
+    if { [string compare -length 7 $contents "file://"] == 0 } {
+        set fileName [string range $contents 7 end]
+        set path $fileName
+        # find the file on a search path
+        if { [file pathtype $path] != "absolute" } {
+            set dir [[$_owner tool] installdir]
+            set searchlist [list $dir [file join $dir docs]]
+            foreach dir $searchlist {
+                if {[file readable [file join $dir $fileName]]} {
+                    set path [file join $dir $fileName]
+                    break
+                }
+            }
+        }
+        if { [file exists $path] } {
+            set img [image create photo -file $path]
+        } else {
+            puts stderr "WARNING: can't find picture contents \"$path\""
+        }
+    } elseif { [string compare -length 7 $contents "http://"] == 0 } {
+        puts stderr  "don't know how to handle http"
+        return
+    } elseif { $contents != "" } {
+        set img [image create photo -data $contents]
+    }
+    if {$img == ""} {
+        return
+    }
+    # Coordinates
+    set coords [XmlGetSubst $cpath.coords]
+    if { [llength $coords] == 2 } {
+        foreach { x1 y1 } [ScreenCoords $coords] break
+        set w [XmlGetSubst $cpath.width]
+        if { $w == "" || ![string is double $w] || $w <= 0.0 } {
+            set width [expr [image width $img] / 4]
+        } else {
+            set width [expr int([ScreenX $w] - [ScreenX 0])]
+        }
+        set h [XmlGetSubst $cpath.height]
+        if { $h == "" || ![string is double $h] || $h <= 0.0 } {
+            set height [expr [image height $img] / 4]
+        } else {
+            set height [expr int([ScreenY $h] - [ScreenY 0])]
+        }
+        if { $width != [image width $img] || $height != [image height $img] } {
+            set dst [image create photo -width $width -height $height]
+            blt::winop resample $img $dst box
+            image delete $img
+            set img $dst
+        }
+    } elseif { [llength $coords] == 4 } {
+        foreach { x1 y1 x2 y2 } [ScreenCoords $coords] break
+        if { $x1 > $x2 } {
+            set tmp $x1
+            set x1 $x2
+            set x2 $tmp
+        }
+        if { $y1 > $y2 } {
+            set tmp $x1
+            set x1 $x2
+            set x2 $tmp
+        }
+        set width [expr {int($x2 - $x1 + 1)}]
+        set height [expr {int($y2 - $y1 + 1)}]
+        if { $width != [image width $img] || $height != [image height $img] } {
+            set dst [image create photo -width $width -height $height]
+            blt::winop resample $img $dst box
+            image delete $img
+            set img $dst
+        }
+    } else {
+        set width [expr [image width $img] / 4]
+        set height [expr [image height $img] / 4]
+         set dst [image create photo -width $width -height $height]
+        blt::winop resample $img $dst box
+        image delete $img
+        set img $dst
+        set x1 0
+        set y1 0
+    }
+    set options(-tags) $cname
+    set options(-image) $img
+    set id [$itk_component(drawing) create image $x1 $y1]
+    set _cname2image($cname) $img
+    set _cname2id($cname) $id
+    eval $itk_component(drawing) itemconfigure $id [array get options]
+}
+
+
+itcl::body Rappture::DrawingEntry::ParsePolygon { cpath cname } {
+    array set attr2option {
+        "outline"       "-outline"
+        "color"         "-fill"
+        "fill"          "-fill"
+        "linewidth"     "-width"
+    }
+    # Set default options first and then let tool.xml override them.
+    array set options {
+        -width          1
+        -fill           blue
+        -outline        black
+    }
+
+    # Coords
+    set coords [XmlGetSubst $cpath.coords]
+    if {$coords eq ""} {
+        set coords "0 0"
+    }
+    set coords [ScreenCoords $coords]
+
+    set list {}
+    foreach attr [$_xmlobj children $cpath] {
+        if { [info exists attr2option($attr)] } {
+            set option $attr2option($attr)
+            set value [XmlGetSubst $cpath.$attr]
+            set options($option) $value
+        }
+    }
+    set options(-tags) $cname
+    set id [eval $itk_component(drawing) create polygon $coords]
+    set _cname2id($cname) $id
+    eval $itk_component(drawing) itemconfigure $id [array get options]
+}
+
+#
+# ParseRectangle --
+#
+itcl::body Rappture::DrawingEntry::ParseRectangle { cpath cname } {
+    array set attr2option {
+        "outline"       "-outline"
+        "fill"          "-fill"
+        "linewidth"     "-width"
+    }
+
+    # Set default options first and then let tool.xml override them.
+    array set options {
+        -fill blue
+        -width 1
+        -outline black
+    }
+    foreach attr [$_xmlobj children $cpath] {
+        if { [info exists attr2option($attr)] } {
+            set option $attr2option($attr)
+            set value [XmlGetSubst $cpath.$attr]
+            set options($option) $value
+        }
+    }
+    # Coordinates
+    set coords [XmlGetSubst $cpath.coords]
+    if {$coords eq ""} {
+        set coords "0 0 1 1"
+    }
+    foreach { x1 y1 x2 y2 } [ScreenCoords $coords] break
+    set id [$itk_component(drawing) create rectangle $x1 $y1 $x2 $y2]
+    set _cname2id($cname) $id
+    eval $itk_component(drawing) itemconfigure $id [array get options]
+}
+
+#
+# ParseText --
+#
+itcl::body Rappture::DrawingEntry::ParseText { cpath cname } {
+    array set attr2option {
+        "font"          "-font"
+        "color"         "-foreground"
+        "valuecolor"    "-valueforeground"
+        "fill"          "-background"
+        "text"          "-text"
+        "anchor"        "-anchor"
+    }
+
+    # Set default options first and then let tool.xml override them.
+    array set options {
+        -font {Arial -14}
+        -valuefont {Arial -14}
+        -valueforeground blue3
+        -text {}
+        -fill {}
+        -anchor c
+    }
+    foreach attr [$_xmlobj children $cpath] {
+        if { [info exists attr2option($attr)] } {
+            set option $attr2option($attr)
+            if { $attr == "text" } {
+                set value [XmlGet $cpath.$attr]
+            } else {
+                set value [XmlGetSubst $cpath.$attr]
+            }
+            set options($option) $value
+        }
+    }
+    # Coords
+    set coords [XmlGetSubst $cpath.coords]
+    if {$coords eq ""} {
+        set coords "0 0"
+    }
+    foreach {x0 y0} [ScreenCoords $coords] break
+
+    set hotspot [XmlGetSubst $cpath.hotspot]
+    if {$hotspot eq ""} {
+        # assume inline by default
+        set hotspot "inline"
+    } elseif {[lsearch {inline off} $hotspot] < 0} {
+        puts stderr "WARNING: bad hotspot value \"$hotspot\": should be inline or off"
+    }
+
+    if {$hotspot eq "inline"} {
+        set options(-showicons) 1
+    }
+    set c $itk_component(drawing)
+    set options(-tags) $cname
+    set options(-image) [Rappture::icon hotspot_normal]
+    set options(-activeimage) [Rappture::icon hotspot_active]
+    set id [$c create hotspot $x0 $y0]
+    set _cname2id($cname) $id
+    set options(-interp) $_parser
+    eval $c itemconfigure $id [array get options]
+
+    if {$hotspot eq "inline"} {
+        $c bind $id <Enter> \
+            [itcl::code $this Hotspot activate $cname $id %x %y]
+        $c bind $id <Motion> \
+            [itcl::code $this Hotspot activate $cname $id %x %y]
+        $c bind $id <Leave> \
+            [itcl::code $this Hotspot deactivate $cname $id]
+        $c bind $id <ButtonRelease-1> \
+            [itcl::code $this Hotspot invoke $cname $id %x %y]
+    }
+}
+
+
+itcl::body Rappture::DrawingEntry::Hotspot { option cname item args } {
+    set c $itk_component(drawing)
+
+    # see what variable (if any) that we're touching within the text
+    set varName ""
+    if {[llength $args] >= 2} {
+        foreach {x y} $args break
+        foreach {varName x0 y0 x1 y1} [Rappture::hotspot identify $c $item $x $y] break
+    }
+
+    switch -- $option {
+        activate {
+            if {$varName ne ""} {
+                set active [$c itemcget $item -activevalue]
+                if {$varName ne $active} {
+                    $c itemconfigure $item -activevalue $varName
+                }
+                $itk_component(drawing) configure -cursor center_ptr
+
+                # put up a tooltip for this item
+                set cpath $_name2path($varName)
+                set tip [XmlGet $cpath.about.description]
+                if {$tip ne ""} {
+                    set x [expr {[winfo rootx $c]+$x0+10}]
+                    set y [expr {[winfo rooty $c]+$y1}]
+                    set tag "$c-[string map {. ""} $cpath]"
+                    Rappture::Tooltip::text $tag $tip -log $cpath
+                    Rappture::Tooltip::tooltip pending $tag @$x,$y
+                }
+            } else {
+                $c itemconfigure $item -activevalue ""
+                $itk_component(drawing) configure -cursor ""
+                Rappture::Tooltip::tooltip cancel
+            }
+        }
+        deactivate {
+            $c itemconfigure $item -activevalue ""
+            $itk_component(drawing) configure -cursor ""
+            Rappture::Tooltip::tooltip cancel
+        }
+        invoke {
+            if {$varName ne ""} {
+                set x [expr {($x0+$x1)/2}]
+                Invoke $_name2path($varName) $x $y0
+            }
+        }
+        default {
+            error "bad option \"$option\": should be activate, deactivate, invoke"
+        }
+    }
+}
+
+
+itcl::body Rappture::DrawingEntry::ScreenX { x } {
+    return [expr {($x - $_xMin)*$_xScale + $_xOffset}]
+}
+
+itcl::body Rappture::DrawingEntry::ScreenY { y } {
+    return [expr {($y - $_yMin)*$_yScale + $_yOffset}]
+}
+
+itcl::body Rappture::DrawingEntry::ScreenCoords { coords } {
+    set list {}
+    foreach {x y} $coords {
+        lappend list [ScreenX $x] [ScreenY $y]
+    }
+    return $list
+}
+
+itcl::body Rappture::DrawingEntry::AdjustDrawingArea { xAspect yAspect } {
+    set _drawingWidth $_canvasWidth
+    set _drawingHeight $_canvasHeight
+    if { $xAspect <= 0 || $yAspect <= 0 } {
+        return
+    }
+    set current [expr double($_canvasWidth) / double($_canvasHeight)]
+    set wanted [expr double($xAspect) / double($yAspect)]
+    if { $current > $wanted } {
+        set sw [ expr int($_canvasWidth * $wanted)]
+        if { $sw < 1 } {
+            set sw 1
+        }
+        set _xOffset [expr $_canvasWidth - $sw]
+        set _drawingWidth $sw
+    } else {
+        set sh [expr int($_canvasHeight / $wanted)]
+        if { $sh < 1 }  {
+            set sh 1
+        }
+        set _xOffset [expr $_canvasHeight - $sh]
+        set _drawingHeight $sh
+    }
+}
+
+#
+#      <background>
+#       <!-- background color of the drawing canvas (default white) -->
+#       <color>black</color>
+#       <!-- coordinate system:  x0 y0 ?at screenx screeny? x1 y1
+#                                ?at screenx screeny?
+#            The screenx/screeny values are optional, so you can also say
+#            something like "-.1 0 1.1 1" as you had in your example.
+#            This lets you put the origin at a specific point on screen,
+#            and also define the directions of the axes.  We still compute
+#            the overall bounding box.  In the example below, the bounding
+#            box goes from -1,1 in the upper-left corner to 1,-1 in the
+#            lower right.
+#       -->
+#       <coordinates>0 0 at 50% 50% 1 1 at 100% 100%</coordinates>
+
+#       <!-- aspect ratio:  scales coordinate system so that pixels may not
+#            be square.  A coordinate system like the one above implies a
+#            square drawing area, since x and y both go from -1 to 1.  But
+#            if you set the aspect to 2:1, you'll get something twice as
+#            wide as it is tall.  This effectively says that x goes from
+#            -1 to 1 in a certain distance, but y goes from -1 to 1 in half
+#            that screen distance.  Default is whatever aspect is defined
+#            by the coordinates.  If x goes 0-3 and y goes 0-1, then the
+#            drawing (without any other aspect ratio) would be 3x wide and
+#            1x tall.  The aspect ratio could be used to force it to be
+#            square instead by setting "1 1" instead.  In that case, x goes
+#            0-3 over the width, and y goes 0-1 over the same screen distance
+#            along the height.
+#       -->
+#       <aspect>2 1</aspect>
+#     </background>
+#
+
+itcl::body Rappture::DrawingEntry::ParseScreenCoordinates { values } {
+    set bad ""
+    foreach point {1 2} {
+        set xvals($point) [lindex $values 0]
+        if {![string is double -strict $xvals($point)]} {
+            set bad "missing background coordinate point $point in \"$values\""
+            break
+        }
+
+        set yvals($point) [lindex $values 1]
+        if {![string is double -strict $yvals($point)]} {
+            set bad "missing background coordinate point $point in \"$values\""
+            break
+        }
+        set values [lrange $values 2 end]
+
+        # each corner point can be place anywhere from 0% to 100%
+        if {[lindex $values 0] eq "at"} {
+            if {[regexp {^([0-9]+)%$} [lindex $values 1] match xpcnt]
+              && [regexp {^([0-9]+)%$} [lindex $values 2] match ypcnt]} {
+                set wherex($point) [expr {0.01*$xpcnt}]
+                set wherey($point) [expr {0.01*$ypcnt}]
+                set values [lrange $values 3 end]
+            } else {
+                set bad "expected \"at XX% YY%\" but got \"$values\""; break
+            }
+        } else {
+            set wherex($point) [expr {($point == 1) ? 0 : 1}]
+            set wherey($point) [expr {($point == 1) ? 0 : 1}]
+        }
+    }
+    if {$bad eq "" && $wherex(1) == $wherex(2)} {
+        set bad [format "drawing background limits have x points both at %d%%" [expr {round($wherex(1)*100)}]]
+    }
+    if {$bad eq "" && $wherey(1) == $wherey(2)} {
+        set bad [format "drawing background limits have y points both at %d%%" [expr {round($wherex(1)*100)}]]
+    }
+
+    if {$bad eq "" && $xvals(1) == $xvals(2)} {
+        set bad "drawing background coordinates have 0 range in x"
+    }
+    if {$bad eq "" && $yvals(1) == $yvals(2)} {
+        set bad "drawing background coordinates have 0 range in y"
+    }
+    if {$bad eq "" && [llength $values] > 0} {
+        set bad "extra coordinates \"$values\""
+    }
+
+    if {$bad ne ""} {
+        puts stderr "WARNING: $bad"
+        puts stderr "assuming default \"0 0 1 1\" coordinates"
+        array set xvals {1 0 2 1}
+        array set yvals {1 0 2 1}
+        array set wherex {1 0 2 1}
+        array set wherey {1 0 2 1}
+    }
+
+    # compute min/scale for each axis based on the input values
+    if {$wherex(1) < $wherex(2)} {
+        set min 1; set max 2
+    } else {
+        set min 2; set max 1
+    }
+
+    set slope [expr {double($xvals($max)-$xvals($min))
+                      / ($wherex($max)-$wherex($min))}]
+    set _xMin [expr {-$wherex($min)*$slope + $xvals($min)}]
+    set xmax [expr {(1-$wherex($max))*$slope + $xvals($max)}]
+    set _xScale [expr {[winfo width $itk_component(drawing)]/($xmax-$_xMin)}]
+
+    if {$wherey(1) < $wherey(2)} {
+        set min 1; set max 2
+    } else {
+        set min 2; set max 1
+    }
+
+    set slope [expr {double($yvals($max)-$yvals($min))
+                      / ($wherey($max)-$wherey($min))}]
+    set _yMin [expr {-$wherey($min)*$slope + $yvals($min)}]
+    set ymax [expr {(1-$wherey($max))*$slope + $yvals($max)}]
+    set _yScale [expr {[winfo height $itk_component(drawing)]/($ymax-$_yMin)}]
+}
+
+itcl::body Rappture::DrawingEntry::ParseBackground {} {
+    foreach elem [$_xmlobj children $_path.background] {
+        switch -- $elem {
+            "color" {
+                #  Background color of the drawing canvas (default white)
+                set value [XmlGet $_path.background.$elem]
+                $itk_component(drawing) configure -background $value
+            }
+            "aspect" {
+                set value [XmlGet $_path.background.$elem]
+                foreach { xAspect yAspect } $value break
+                AdjustDrawingArea $xAspect $yAspect
+            }
+            "coords" - "coordinates" {
+                set value [XmlGet $_path.background.$elem]
+                ParseScreenCoordinates $value
+            }
+            "width" {
+                set width [XmlGet $_path.background.$elem]
+                $itk_component(drawing) configure -width $width
+            }
+            "height" {
+                set height [XmlGet $_path.background.$elem]
+                $itk_component(drawing) configure -height $height
+            }
+            default {
+                puts stderr "WARNING: don't understand \"$elem\" in $_path"
+            }
+        }
+    }
+}
+
+#
+# Invoke --
+#
+itcl::body Rappture::DrawingEntry::Invoke {cpath x y} {
+    if {![info exists _cpath2popup($cpath)]} {
+        puts stderr "WARNING: no controls for hotspot at $cpath"
+        return
+    }
+    set popup $_cpath2popup($cpath)
+
+    # if this popup has only one control, watch for it to change and
+    # take it down automatically
+    set inner [$popup component inner]
+    set n [expr {[$inner.controls index end]+1}]
+    if {$n == 1} {
+        set _takedown $popup
+    } else {
+        set _takedown ""
+    }
+
+    # Activate the popup and call for the output.
+    set rootx [winfo rootx $itk_component(drawing)]
+    set rooty [winfo rooty $itk_component(drawing)]
+
+    set x [expr {round($x + $rootx)}]
+    set y [expr {round($y + $rooty)}]
+    $popup activate @$x,$y above
+}
+
+#
+# Activate --
+#
+itcl::body Rappture::DrawingEntry::Activate { cname } {
+    $itk_component(drawing) configure -cursor center_ptr
+    $itk_component(drawing) itemconfigure $_cname2id($cname) \
+        -image [Rappture::icon hotspot_active]
+}
+
+#
+# Deactivate --
+#
+itcl::body Rappture::DrawingEntry::Deactivate { cname } {
+    $itk_component(drawing) configure -cursor ""
+    $itk_component(drawing) itemconfigure $_cname2id($cname) \
+        -image [Rappture::icon hotspot_normal]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::DrawingEntry::value {args} {
+    # Redraw if there's a new library object.
+    if { [llength $args] > 0 } {
+        set libobj [lindex $args 0]
+        if { $libobj != "" } {
+            $_dispatcher event -idle !redraw
+        }
+    }
+    return ""
+}
+
+itcl::body Rappture::DrawingEntry::UpdateSubstitutions {} {
+    # Load parser with the variables representing the substitution
+    foreach name [array names _name2path] {
+        set path $_name2path($name)
+        set w [$_owner widgetfor $path]
+        if {$w ne ""} {
+            set value [$w value]
+        } else {
+            set value ""
+        }
+        if {$_name2map($name) ne ""} {
+            set value [string map $_name2map($name) $value]
+        }
+        $_parser eval [list set $name $value]
+    }
+}
+
+itcl::body Rappture::DrawingEntry::XmlGet { path } {
+    set value [$_xmlobj get $path]
+    return [string trim $value]
+}
+
+itcl::body Rappture::DrawingEntry::XmlGetSubst { path } {
+    set value [$_xmlobj get $path]
+    if {$_parser == ""} {
+        return [string trim $value]
+    }
+    return [string trim [$_parser eval [list subst -nocommands $value]]]
+}
Index: /tags/1.6.0/gui/scripts/dropdown.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/dropdown.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/dropdown.tcl	(revision 6168)
@@ -0,0 +1,185 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: dropdown - base class for drop-down panels
+#
+#  This is the base class for a family of drop-down widget panels.
+#  They might be used, for example, to build the drop-down list for
+#  a combobox.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Dropdown.textBackground white widgetDefault
+option add *Dropdown.outline black widgetDefault
+option add *Dropdown.borderwidth 1 widgetDefault
+option add *Dropdown.font -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Dropdown {
+    inherit itk::Toplevel
+
+    itk_option define -outline outline Outline ""
+    itk_option define -postcommand postCommand PostCommand ""
+    itk_option define -unpostcommand unpostCommand UnpostCommand ""
+
+    constructor {args} { # defined below }
+
+    public method post {where args}
+    public method unpost {}
+
+    protected method _adjust {{widget ""}}
+
+    public proc outside {w x y}
+
+    bind RapptureDropdown <ButtonPress> \
+        {if {[Rappture::Dropdown::outside %W %X %Y]} {%W unpost}}
+}
+
+itk::usual Dropdown {
+    keep -background -outline -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdown::constructor {args} {
+    wm overrideredirect $itk_component(hull) yes
+    wm withdraw $itk_component(hull)
+
+    component hull configure -borderwidth 1 -background black
+    itk_option remove hull.background hull.borderwidth
+
+    # add bindings to release the grab
+    set btags [bindtags $itk_component(hull)]
+    bindtags $itk_component(hull) [linsert $btags 1 RapptureDropdown]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: post @<x>,<y>
+# USAGE: post <widget> <justify>
+#
+# Clients use this to pop up the dropdown on the screen.  The position
+# should be either a specific location "@x,y", or a <widget> and its
+# justification.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdown::post {where args} {
+    set owner [expr {([winfo exists $where]) ? $where : ""}]
+    _adjust $owner    ;# make sure contents are up-to-date
+    update idletasks  ;# fix size info
+
+    if {[string length $itk_option(-postcommand)] > 0} {
+        set cmd [list uplevel #0 $itk_option(-postcommand)]
+        if {[catch $cmd result]} {
+            bgerror $result
+        }
+    }
+
+    set w [winfo width $itk_component(hull)]
+    set h [winfo height $itk_component(hull)]
+    set sw [winfo screenwidth $itk_component(hull)]
+    set sh [winfo screenheight $itk_component(hull)]
+
+    if {[regexp {^@([0-9]+),([0-9]+)$} $where match x y]} {
+        set xpos $x
+        set ypos $y
+    } elseif {[winfo exists $where]} {
+        set x0 [winfo rootx $where]
+        switch -- $args {
+            left { set xpos $x0 }
+            right { set xpos [expr {$x0 + [winfo width $where] - $sw}] }
+            default {
+                error "bad option \"$args\": should be left, right"
+            }
+        }
+        set ypos [expr {[winfo rooty $where]+[winfo height $where]}]
+    } else {
+        error "bad position \"$where\": should be widget name or @x,y"
+    }
+
+    # make sure the dropdown doesn't go off screen
+    if {$xpos > 0} {
+        # left-justified positions
+        if {$xpos + $w > $sw} {
+            set xpos [expr {$sw-$w}]
+            if {$xpos < 0} { set xpos 0 }
+        }
+        set xpos "+$xpos"
+    } else {
+        # right-justified positions
+        if {$xpos - $w < -$sw} {
+            set xpos [expr {-$sw+$w}]
+            if {$xpos > 0} { set xpos -1 }
+        }
+    }
+    if {$ypos + $h > $sh} {
+        set ypos [expr {$sh-$h}]
+        if {$ypos < 0} { set ypos 0 }
+    }
+
+    # post the dropdown on the screen
+    wm geometry $itk_component(hull) "$xpos+$ypos"
+    update
+
+    wm deiconify $itk_component(hull)
+    raise $itk_component(hull)
+
+    # grab the mouse pointer
+    update
+    while {[catch {grab set -global $itk_component(hull)}]} {
+        after 100
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: unpost
+#
+# Takes down the dropdown, if it is showing on the screen.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdown::unpost {} {
+    grab release $itk_component(hull)
+    wm withdraw $itk_component(hull)
+
+    if {[string length $itk_option(-unpostcommand)] > 0} {
+        set cmd [list uplevel #0 $itk_option(-unpostcommand)]
+        if {[catch $cmd result]} {
+            bgerror $result
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _adjust
+#
+# This method is invoked each time the dropdown is posted to adjust
+# its size and contents.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdown::_adjust {{widget ""}} {
+    # derived classes redefine this to do something useful
+}
+
+# ----------------------------------------------------------------------
+# USAGE: outside <widget> <x> <y>
+#
+# Checks to see if the root coordinate <x>,<y> is outside of the
+# area for the <widget>.  Returns 1 if so, and 0 otherwise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdown::outside {widget x y} {
+    return [expr {$x < [winfo rootx $widget]
+             || $x > [winfo rootx $widget]+[winfo width $widget]
+             || $y < [winfo rooty $widget]
+             || $y > [winfo rooty $widget]+[winfo height $widget]}]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -outline
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Dropdown::outline {
+    component hull configure -background $itk_option(-outline)
+}
Index: /tags/1.6.0/gui/scripts/dropdownchecks.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/dropdownchecks.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/dropdownchecks.tcl	(revision 6168)
@@ -0,0 +1,422 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: dropdownchecks - drop-down list of checkbox items
+#
+#  This is the drop-down for the Combochecks widget, which maintains
+#  a list of options.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Dropdownchecks.textBackground white widgetDefault
+option add *Dropdownchecks.foreground black widgetDefault
+option add *Dropdownchecks.outline black widgetDefault
+option add *Dropdownchecks.borderwidth 1 widgetDefault
+option add *Dropdownchecks.relief flat widgetDefault
+option add *Dropdownchecks.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Dropdownchecks {
+    inherit Rappture::Dropdown
+
+    itk_option define -font font Font ""
+    itk_option define -foreground foreground Foreground ""
+
+    constructor {args} { # defined below }
+
+    public method insert {pos args}
+    public method delete {first {last ""}}
+    public method index {args}
+    public method get {args}
+    public method size {}
+    public method state {value {newval ""}}
+    public method reset {}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+    private variable _values ""     ;# values for all elems in list
+    private variable _labels ""     ;# labels for each of the _values
+    private variable _states        ;# maps list item => on/off state
+    private variable _layout        ;# layout parameters for drawing
+
+    protected method _redraw {args}
+    protected method _layout {args}
+    protected method _adjust {{widget ""}}
+    protected method _react {x y}
+}
+
+itk::usual Dropdownchecks {
+    keep -background -outline -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !redraw
+    $_dispatcher dispatch $this !redraw [itcl::code $this _redraw]
+    $_dispatcher register !layout
+    $_dispatcher dispatch $this !layout [itcl::code $this _layout]
+
+    itk_component add scroller {
+        Rappture::Scroller $itk_interior.sc \
+            -xscrollmode off -yscrollmode auto
+    }
+    pack $itk_component(scroller) -expand yes -fill both
+
+    itk_component add list {
+        canvas $itk_component(scroller).list \
+            -highlightthickness 0 -width 3i -height 1.5i
+    } {
+        usual
+        rename -background -textbackground textBackground Background
+        ignore -highlightthickness -highlightbackground -highlightcolor
+        keep -relief
+    }
+    $itk_component(scroller) contents $itk_component(list)
+
+    # add bindings so the listbox can react to selections
+    bind RapptureDropdownchecks-$this <ButtonRelease-1> \
+        [itcl::code $this _react %x %y]
+    bind RapptureDropdownchecks-$this <KeyPress-Escape> \
+        [itcl::code $this unpost]
+
+    set btags [bindtags $itk_component(list)]
+    set i [lsearch $btags [winfo class $itk_component(list)]]
+    set btags [lreplace $btags $i $i RapptureDropdownchecks-$this]
+    bindtags $itk_component(list) $btags
+
+    eval itk_initialize $args
+
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <pos> ?<value1> <label1> <value2> <label2> ...?
+#
+# Inserts one or more values into this drop-down list.  Each value
+# has a keyword (computer-friendly value) and a label (human-friendly
+# value).  The labels appear in the listbox.  If the label is "--",
+# then the value is used as the label.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::insert {pos args} {
+    if {"end" == $pos} {
+        set pos [llength $_values]
+    } elseif {![string is integer -strict $pos]} {
+        error "bad index \"$pos\": should be integer or \"end\""
+    }
+
+    if {[llength $args] == 1} {
+        set args [lindex $args 0]
+    }
+    if {[llength $args] % 2 != 0} {
+        error "wrong # args: should be \"insert pos ?value label ...?\""
+    }
+
+    foreach {val label} $args {
+        if {$label == "--"} {
+            set label $val
+        }
+        set _values [linsert $_values $pos $val]
+        set _labels [linsert $_labels $pos $label]
+        set _states($val) 0
+        incr pos
+    }
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete <first> ?<last>?
+#
+# Deletes one or more values from this drop-down list.  The indices
+# <first> and <last> should be integers from 0 or the keyword "end".
+# All values in the specified range are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::delete {first {last ""}} {
+    if {$last == ""} {
+        set last $first
+    }
+    if {![regexp {^[0-9]+|end$} $first]} {
+        error "bad index \"$first\": should be integer or \"end\""
+    }
+    if {![regexp {^[0-9]+|end$} $last]} {
+        error "bad index \"$last\": should be integer or \"end\""
+    }
+
+    foreach val [lrange $_values $first $last] {
+        unset _states($val)
+    }
+    set _values [lreplace $_values $first $last]
+    set _labels [lreplace $_labels $first $last]
+
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: index ?-value|-label? <value>
+#
+# Returns the integer index for the position of the specified <value>
+# in the list.  Returns -1 if the value is not recognized.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::index {args} {
+    set format -value
+    set first [lindex $args 0]
+    if {$first == "-value" || $first == "-label"} {
+        set format $first
+        set args [lrange $args 1 end]
+    } elseif {[llength $args] > 1} {
+        error "bad option \"$first\": should be -value or -label"
+    }
+    if {[llength $args] != 1} {
+        error "wrong # args: should be \"index ?-value? ?-label? string\""
+    }
+    set value [lindex $args 0]
+
+    switch -- $format {
+        -value { return [lsearch -exact $_values $value] }
+        -label { return [lsearch -exact $_labels $value] }
+    }
+    return -1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-value|-label|-both? ?<index>?
+#
+# Queries one or more values from the drop-down list.  With no args,
+# it returns a list of all values and labels in the list.  If the
+# index is specified, then it returns the value or label (or both)
+# for the specified index.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::get {args} {
+    set format -both
+    set first [lindex $args 0]
+    if {[string index $first 0] == "-"} {
+        set choices {-value -label -both}
+        if {[lsearch $choices $first] < 0} {
+            error "bad option \"$first\": should be [join [lsort $choices] {, }]"
+        }
+        set format $first
+        set args [lrange $args 1 end]
+    }
+
+    # return the whole list or just a single value
+    if {[llength $args] > 1} {
+        error "wrong # args: should be \"get ?-value|-label|-both? ?index?\""
+    }
+    if {[llength $args] == 0} {
+        set vlist $_values
+        set llist $_labels
+        set op lappend
+    } else {
+        set i [lindex $args 0]
+        set vlist [list [lindex $_values $i]]
+        set llist [list [lindex $_labels $i]]
+        set op set
+    }
+
+    # scan through and build up the return list
+    set rlist ""
+    foreach v $vlist l $llist {
+        switch -- $format {
+            -value { $op rlist $v }
+            -label { $op rlist $l }
+            -both  { lappend rlist $v $l }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: size
+#
+# Returns the number of choices in this list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::size {} {
+    return [llength $_values]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: state <value> ?on|off?
+#
+# Used to query or set the state for the underlying values of the
+# listbox.  The <value> is the value associated with a label option.
+# With no other arg, it returns the current state for that value.
+# Otherwise, it sets the state for that value.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::state {val {newval ""}} {
+    if {$newval eq ""} {
+        if {[info exists _states($val)]} {
+            return $_states($val)
+        }
+        return ""
+    }
+
+    if {[info exists _states($val)]} {
+        if {$newval} {
+            set img [Rappture::icon cbon]
+        } else {
+            set img [Rappture::icon cboff]
+        }
+        $itk_component(list) itemconfigure box-$val -image $img
+        set _states($val) $newval
+    } else {
+        error "bad value \"$val\": should be one of [join $_values {, }]"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Resets the state of all checkboxes back to 0 (unchecked).
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::reset {} {
+    foreach val $_values {
+        set _states($val) 0
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _layout ?<eventData>?
+#
+# Used internally to recompute layout parameters whenever the font
+# changes.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::_layout {args} {
+    # figure out the sizes of the checkboxes
+    set wmax 0
+    set hmax 0
+    foreach icon {cbon cboff} {
+        set img [Rappture::icon $icon]
+        set w [image width $img]
+        if {$w > $wmax} {set wmax $w}
+        set h [image height $img]
+        if {$h > $hmax} {set hmax $h}
+    }
+    incr wmax 2
+
+    set fnt $itk_option(-font)
+    set lineh [expr {[font metrics $fnt -linespace]+2}]
+
+    if {$hmax > $lineh} {
+        set lineh $hmax
+    }
+
+    set _layout(boxwidth) $wmax
+    set _layout(lineh) $lineh
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw ?<eventData>?
+#
+# Used internally to redraw the items in the list whenever new items
+# are added or removed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::_redraw {args} {
+    set c $itk_component(list)
+    $c delete all
+
+    set fg $itk_option(-foreground)
+
+    if {[$_dispatcher ispending !layout]} {
+        $_dispatcher event -now !layout
+    }
+
+    set y 0
+    set _layout(ypos) ""
+    for {set i 0} {$i < [llength $_values]} {incr i} {
+        set x0 2
+        set val [lindex $_values $i]
+        set label [lindex $_labels $i]
+
+        if {$_states($val)} {
+            set img [Rappture::icon cbon]
+        } else {
+            set img [Rappture::icon cboff]
+        }
+
+        set ymid [expr {$y + $_layout(lineh)/2}]
+        $c create image $x0 $ymid -anchor w -image $img -tags box-$val
+        incr x0 $_layout(lineh)
+        $c create text $x0 $ymid -anchor w -text $label -fill $fg
+
+        lappend _layout(ypos) [incr y $_layout(lineh)]
+    }
+
+    # fix the overall size for scrolling
+    foreach {x0 y0 x1 y1} [$c bbox all] break
+    $c configure -scrollregion [list 0 0 $x1 $y1]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _adjust ?<widget>?
+#
+# This method is invoked each time the dropdown is posted to adjust
+# its size and contents.  If the <widget> is specified, it is the
+# controlling widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::_adjust {{widget ""}} {
+    chain $widget
+
+    set c $itk_component(list)
+    set lineh $_layout(lineh)
+
+    foreach {x0 y0 x1 y1} [$c bbox all] break
+    set maxw [expr {$x1+2}]
+
+    set maxh [expr {10*$lineh + 2*[$c cget -borderwidth] + 2}]
+
+    if {$widget != ""} {
+        if {$maxw < [winfo width $widget]} { set maxw [winfo width $widget] }
+    }
+    $c configure -width $maxw -height $maxh
+
+    if {$widget != ""} {
+        set y [expr {[winfo rooty $widget]+[winfo height $widget]}]
+        set screenh [winfo screenheight $widget]
+        set lines [expr {round(floor(double($screenh-$y)/$lineh))}]
+        if {[llength $_labels] < $lines} {
+            set lines [llength $_labels]
+        }
+        set maxh [expr {[lindex $_layout(ypos) [expr {$lines-1}]]+2}]
+        $c configure -height $maxh
+    }
+
+    focus $c
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _react <x> <y>
+#
+# Invoked automatically when the user has selected something from
+# the listbox.  Unposts the drop-down and generates an event letting
+# the client know that the selection has changed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownchecks::_react {x y} {
+    if {$x >= 0 && $x <= [winfo width $itk_component(hull)]
+          && $y >= 0 && $y <= [winfo height $itk_component(hull)]} {
+
+        set x [$itk_component(list) canvasx $x]
+        set y [$itk_component(list) canvasy $y]
+
+        for {set i 0} {$i < [llength $_values]} {incr i} {
+            if {$y < [lindex $_layout(ypos) $i]} {
+                set val [lindex $_values $i]
+                if {$_states($val)} {
+                    state $val 0
+                } else {
+                    state $val 1
+                }
+                break
+            }
+        }
+        event generate $itk_component(hull) <<DropdownchecksSelect>>
+    } else {
+        unpost
+    }
+}
Index: /tags/1.6.0/gui/scripts/dropdownlist.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/dropdownlist.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/dropdownlist.tcl	(revision 6168)
@@ -0,0 +1,307 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: dropdownlist - drop-down list of items
+#
+#  This is a drop-down listbox, which might be used in conjunction
+#  with a combobox.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Dropdownlist.textBackground white widgetDefault
+option add *Dropdownlist.outline black widgetDefault
+option add *Dropdownlist.borderwidth 1 widgetDefault
+option add *Dropdownlist.relief flat widgetDefault
+option add *Dropdownlist.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Dropdownlist {
+    inherit Rappture::Dropdown
+
+    constructor {args} { # defined below }
+
+    public method insert {pos args}
+    public method delete {first {last ""}}
+    public method index {args}
+    public method get {args}
+    public method size {}
+    public method select {option args}
+    public method current {{what -value}}
+
+    private variable _values ""  ;# values for all elems in list
+    private variable _labels ""  ;# labels for each of the _values
+
+    protected method _adjust {{widget ""}}
+    protected method _react {}
+}
+
+itk::usual Dropdownlist {
+    keep -background -outline -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownlist::constructor {args} {
+    itk_component add scroller {
+        Rappture::Scroller $itk_interior.sc \
+            -xscrollmode off -yscrollmode auto
+    }
+    pack $itk_component(scroller) -expand yes -fill both
+
+    itk_component add list {
+        listbox $itk_component(scroller).list \
+            -selectmode single -exportselection no \
+            -highlightthickness 0
+    } {
+        usual
+        rename -background -textbackground textBackground Background
+        rename -foreground -textforeground textForeground Foreground
+        ignore -highlightthickness -highlightbackground -highlightcolor
+        keep -relief
+    }
+    $itk_component(scroller) contents $itk_component(list)
+
+    # add bindings so the listbox can react to selections
+    bind RapptureDropdownlist-$this <ButtonRelease-1> [itcl::code $this _react]
+    bind RapptureDropdownlist-$this <KeyPress-Return> [itcl::code $this _react]
+    bind RapptureDropdownlist-$this <KeyPress-space> [itcl::code $this _react]
+    bind RapptureDropdownlist-$this <KeyPress-Escape> [itcl::code $this unpost]
+
+    set btags [bindtags $itk_component(list)]
+    set i [lsearch $btags [winfo class $itk_component(list)]]
+    if {$i < 0} {
+        set i end
+    }
+    set btags [linsert $btags [expr {$i+1}] RapptureDropdownlist-$this]
+    bindtags $itk_component(list) $btags
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <pos> ?<value1> <label1> <value2> <label2> ...?
+#
+# Inserts one or more values into this drop-down list.  Each value
+# has a keyword (computer-friendly value) and a label (human-friendly
+# value).  The labels appear in the listbox.  If the label is "--",
+# then the value is used as the label.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownlist::insert {pos args} {
+    if {"end" == $pos} {
+        set pos [llength $_values]
+    } elseif {![string is integer -strict $pos]} {
+        error "bad index \"$pos\": should be integer or \"end\""
+    }
+
+    if {[llength $args] == 1} {
+        set args [lindex $args 0]
+    }
+    if {[llength $args] % 2 != 0} {
+        error "wrong # args: should be \"insert pos ?value label ...?\""
+    }
+
+    foreach {val label} $args {
+        if {$label == "--"} {
+            set label $val
+        }
+        set _values [linsert $_values $pos $val]
+        set _labels [linsert $_labels $pos $label]
+        $itk_component(list) insert $pos $label
+        incr pos
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete <first> ?<last>?
+#
+# Deletes one or more values from this drop-down list.  The indices
+# <first> and <last> should be integers from 0 or the keyword "end".
+# All values in the specified range are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownlist::delete {first {last ""}} {
+    if {$last == ""} {
+        set last $first
+    }
+    if {![regexp {^[0-9]+|end$} $first]} {
+        error "bad index \"$first\": should be integer or \"end\""
+    }
+    if {![regexp {^[0-9]+|end$} $last]} {
+        error "bad index \"$last\": should be integer or \"end\""
+    }
+
+    set _values [lreplace $_values $first $last]
+    set _labels [lreplace $_labels $first $last]
+    $itk_component(list) delete $first $last
+}
+
+# ----------------------------------------------------------------------
+# USAGE: index ?-value|-label? <value>
+#
+# Returns the integer index for the position of the specified <value>
+# in the list.  Returns -1 if the value is not recognized.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownlist::index {args} {
+    set format -value
+    set first [lindex $args 0]
+    if {$first == "-value" || $first == "-label"} {
+        set format $first
+        set args [lrange $args 1 end]
+    } elseif {[llength $args] > 1} {
+        error "bad option \"$first\": should be -value or -label"
+    }
+    if {[llength $args] != 1} {
+        error "wrong # args: should be \"index ?-value? ?-label? string\""
+    }
+    set value [lindex $args 0]
+
+    switch -- $format {
+        -value { return [lsearch -exact $_values $value] }
+        -label { return [lsearch -exact $_labels $value] }
+    }
+    return -1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-value|-label|-both? ?<index>?
+#
+# Queries one or more values from the drop-down list.  With no args,
+# it returns a list of all values and labels in the list.  If the
+# index is specified, then it returns the value or label (or both)
+# for the specified index.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownlist::get {args} {
+    set format -both
+    set first [lindex $args 0]
+    if {[string index $first 0] == "-"} {
+        set choices {-value -label -both}
+        if {[lsearch $choices $first] < 0} {
+            error "bad option \"$first\": should be [join [lsort $choices] {, }]"
+        }
+        set format $first
+        set args [lrange $args 1 end]
+    }
+
+    # return the whole list or just a single value
+    if {[llength $args] > 1} {
+        error "wrong # args: should be \"get ?-value|-label|-both? ?index?\""
+    }
+    if {[llength $args] == 0} {
+        set vlist $_values
+        set llist $_labels
+        set op lappend
+    } else {
+        set i [lindex $args 0]
+        set vlist [list [lindex $_values $i]]
+        set llist [list [lindex $_labels $i]]
+        set op set
+    }
+
+    # scan through and build up the return list
+    set rlist ""
+    foreach v $vlist l $llist {
+        switch -- $format {
+            -value { $op rlist $v }
+            -label { $op rlist $l }
+            -both  { lappend rlist $v $l }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: size
+#
+# Returns the number of choices in this list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownlist::size {} {
+    return [llength $_values]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: select <option> ?<arg> ...?
+#
+# Used to manipulate the selection in the listbox.  All options and
+# args are passed along to the underlying listbox.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownlist::select {option args} {
+    if {$option == "set"} {
+        $itk_component(list) activate [lindex $args 0]
+    }
+    eval $itk_component(list) selection $option $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: current ?-value|-label|-both?
+#
+# Clients use this to query the current selection from the listbox.
+# Returns the value, label, or both, according to the option.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownlist::current {{what -value}} {
+    set i [$itk_component(list) curselection]
+    if {$i != ""} {
+        switch -- $what {
+            -value { return [lindex $_values $i] }
+            -label { return [lindex $_labels $i] }
+            -both  { return [list [lindex $_values $i] [lindex $_labels $i]] }
+            default {
+                error "bad option \"$what\": should be -value, -label, -both"
+            }
+        }
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _adjust ?<widget>?
+#
+# This method is invoked each time the dropdown is posted to adjust
+# its size and contents.  If the <widget> is specified, it is the
+# controlling widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownlist::_adjust {{widget ""}} {
+    chain $widget
+
+    set fnt [$itk_component(list) cget -font]
+    set maxw 0
+    foreach str $_labels {
+        set w [font measure $fnt $str]
+        if {$w > $maxw} { set maxw $w }
+    }
+    if {$widget != ""} {
+        if {$maxw < [winfo width $widget]} { set maxw [winfo width $widget] }
+    }
+    set avg [font measure $fnt "n"]
+    $itk_component(list) configure -width [expr {round($maxw/double($avg))+1}]
+
+    if {$widget != ""} {
+        set y [expr {[winfo rooty $widget]+[winfo height $widget]}]
+        set h [font metrics $fnt -linespace]
+        set lines [expr {double([winfo screenheight $widget]-$y)/$h}]
+        if {[llength $_labels] < $lines} {
+            $itk_component(list) configure -height [llength $_labels]
+        } else {
+            $itk_component(list) configure -height 10
+        }
+    }
+
+    focus $itk_component(list)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _react
+#
+# Invoked automatically when the user has selected something from
+# the listbox.  Unposts the drop-down and generates an event letting
+# the client know that the selection has changed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Dropdownlist::_react {} {
+    unpost
+    event generate $itk_component(hull) <<DropdownlistSelect>>
+}
Index: /tags/1.6.0/gui/scripts/editor.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/editor.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/editor.tcl	(revision 6168)
@@ -0,0 +1,302 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: editor - pop-up editor for little bits of text
+#
+#  This widget acts as a pop-up editor for small text fields.  It
+#  pops up on top of any text field, accepts edits, and then attempts
+#  to validate and apply changes back to the underlying widget.
+#
+#  This widget uses a number of callbacks to handle communication
+#  with the underlying widget:
+#
+#  -activatecommand .... Should return a key/value list with the
+#                        following elements:
+#                          x ...... root x coordinate for editor
+#                          y ...... root y coordinate for editor
+#                          w ...... width of text being edited
+#                          h ...... height of text being edited
+#                          text ... initial text for the editor
+#
+#  -validatecommand .... Invoked with the new value as an argument.
+#                        Should return 1 if the value is okay, and
+#                        0 otherwise.
+#
+#  -applycommand ....... Invoked with the new value as an argument.
+#                        Should apply the new value to the underlying
+#                        widget.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Editor.background white widgetDefault
+option add *Editor.outline black widgetDefault
+option add *Editor.borderwidth 1 widgetDefault
+option add *Editor.relief flat widgetDefault
+option add *Editor.selectBorderWidth 0 widgetDefault
+
+itcl::class Rappture::Editor {
+    inherit itk::Toplevel
+
+    itk_option define -outline outline Outline ""
+    itk_option define -activatecommand activateCommand ActivateCommand ""
+    itk_option define -validatecommand validateCommand ValidateCommand ""
+    itk_option define -applycommand applyCommand ApplyCommand ""
+
+    constructor {args} { # defined below }
+
+    public method activate {}
+    public method deactivate {args}
+    public method value {newval}
+
+    protected method _click {x y}
+    protected method _resize {}
+    protected variable _loc   ;# array of editor location parameters
+}
+
+itk::usual Editor {
+    keep -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Editor::constructor {args} {
+    wm overrideredirect $itk_component(hull) yes
+    wm withdraw $itk_component(hull)
+
+    itk_option remove hull.background hull.borderwidth
+    component hull configure -borderwidth 1
+
+    itk_component add editor {
+        entry $itk_interior.editor -highlightthickness 0
+    } {
+        usual
+        keep -relief
+        ignore -highlightthickness
+        ignore -highlightcolor
+        ignore -highlightbackground
+    }
+    pack $itk_component(editor) -expand yes -fill both
+
+    bind $itk_component(editor) <KeyPress> \
+        [itcl::code $this _resize]
+    bind $itk_component(editor) <KeyPress-Return> \
+        [itcl::code $this deactivate]
+    bind $itk_component(editor) <KeyPress-Escape> \
+        [itcl::code $this deactivate -abort]
+    bind $itk_component(editor) <ButtonPress> \
+        [itcl::code $this _click %X %Y]
+
+    itk_component add emenu {
+        menu $itk_component(editor).menu -tearoff 0
+    } {
+        usual
+        ignore -tearoff
+        ignore -background -foreground
+    }
+    $itk_component(emenu) add command -label "Cut" -accelerator "^X" \
+        -command [list event generate $itk_component(editor) <<Cut>>]
+    $itk_component(emenu) add command -label "Copy" -accelerator "^C" \
+        -command [list event generate $itk_component(editor) <<Copy>>]
+    $itk_component(emenu) add command -label "Paste" -accelerator "^V" \
+        -command [list event generate $itk_component(editor) <<Paste>>]
+    bind $itk_component(editor) <<PopupMenu>> {
+        tk_popup %W.menu %X %Y
+    }
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: activate
+#
+# Clients use this to start the editing process on the underlying
+# widget.  This pops up the editor with the current text from the
+# underlying widget and allows the user to edit the text.  The editor
+# remains up until it is deactivated.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Editor::activate {} {
+    set e $itk_component(editor)
+    if {[winfo ismapped $e]} {
+        return  ;# already mapped -- nothing to do
+    }
+
+    set info ""
+    if {[string length $itk_option(-activatecommand)] > 0} {
+        set status [catch {uplevel #0 $itk_option(-activatecommand)} info]
+        if {$status != 0} {
+            bgerror $info
+            return
+        }
+    }
+
+    #
+    # Pull out the location information from the values passed back
+    # from the activation command.  We must have at least an x,y
+    # coordinate.  If we get width and height too, then use it.
+    # If not, figure out the width and height based on the size
+    # of the string.
+    #
+    array set vals $info
+    if {![info exists vals(x)] || ![info exists vals(y)]} {
+        return
+    }
+    set _loc(x) $vals(x)
+    set _loc(y) $vals(y)
+    set _loc(w) [expr {([info exists vals(w)]) ? $vals(w) : 0}]
+    set _loc(h) [expr {([info exists vals(h)]) ? $vals(h) : 0}]
+
+    $itk_component(editor) delete 0 end
+    if {[info exists vals(text)]} {
+        $itk_component(editor) insert end $vals(text)
+    }
+    $itk_component(editor) select from 0
+    $itk_component(editor) select to end
+
+    _resize
+    wm deiconify $itk_component(hull)
+    raise $itk_component(hull)
+    focus -force $itk_component(editor)
+
+    # try to grab the pointer, and keep trying...
+    update
+    while {[catch {grab set -global $itk_component(editor)}]} {
+        after 100
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: deactivate ?-abort?
+#
+# This is invoked automatically whenever the user presses Enter or
+# Escape in the editor.  Clients can also use it explicitly to
+# deactivate the editor.
+#
+# If the -abort flag is specified, then the editor is taken down
+# without any validation or application of the result.  Otherwise,
+# we validate the contents of the editor and apply the change back
+# to the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Editor::deactivate {args} {
+    # take down any error cue that might be up
+    ::Rappture::Tooltip::cue hide
+
+    if {$args == "-abort"} {
+        grab release $itk_component(editor)
+        wm withdraw $itk_component(hull)
+        return
+    }
+
+    set str [$itk_component(editor) get]
+
+    #
+    # If there's a -validatecommand option, then invoke the code
+    # now to check the new value.
+    #
+    if {[string length $itk_option(-validatecommand)] > 0} {
+        set cmd "uplevel #0 [list $itk_option(-validatecommand) [list $str]]"
+        if {[catch $cmd result]} {
+            bgerror $result
+            set result 1
+        }
+        if {$result == 0} {
+            bell
+            $itk_component(editor) select from 0
+            $itk_component(editor) select to end
+            $itk_component(editor) icursor end
+            focus $itk_component(editor)
+            return
+        }
+    }
+
+    grab release $itk_component(editor)
+    wm withdraw $itk_component(hull)
+
+    #
+    # If there's an -applycommand option, then invoke the code
+    # now to apply the new value.
+    #
+    if {[string length $itk_option(-applycommand)] > 0} {
+        set cmd "uplevel #0 [list $itk_option(-applycommand) [list $str]]"
+        if {[catch $cmd result]} {
+            bgerror $result
+            return
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value <newval>
+#
+# Clients use this to suggest a new value, particular when they've
+# caught an error in the editing process.  For example, if the user's
+# value is below the minimum allowed value, a client would call this
+# method to suggest the minimum value.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Editor::value {newval} {
+    $itk_component(editor) delete 0 end
+    $itk_component(editor) insert end $newval
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _click <X> <Y>
+#
+# This is invoked automatically whenever the user clicks somewhere
+# inside or outside of the editor.  If the <X>,<Y> coordinate is
+# outside the editor, then we assume the user is done and wants to
+# take the editor down.  Otherwise, we do nothing, and let the entry
+# bindings take over.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Editor::_click {x y} {
+    if {[winfo containing $x $y] != $itk_component(editor)} {
+        deactivate
+    } else {
+        # make sure the editor has keyboard focus!
+        # it loses focus sometimes during cut/copy/paste operations
+        focus -force $itk_component(editor)
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _resize
+#
+# Invoked automatically as each key is pressed in the editor.
+# Resizes the editor so that it is just big enough to show all
+# of the text within it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Editor::_resize {} {
+    set e $itk_component(editor)
+    set str [$e get]
+    set fnt [$e cget -font]
+
+    set w [expr {[font measure $fnt $str]+20}]
+    set w [expr {($w < $_loc(w)) ? $_loc(w) : $w}]
+    if {$w+$_loc(x) >= [winfo screenwidth $e]} {
+        set w [expr {[winfo screenwidth $e]-$_loc(x)}]
+    }
+
+    set h [expr {[font metrics $fnt -linespace]+4}]
+    set h [expr {($h < $_loc(h)) ? $_loc(h) : $h}]
+    if {$h+$_loc(y) >= [winfo screenheight $e]} {
+        set h [expr {[winfo screenheight $e]-$_loc(y)}]
+    }
+    # Temporary fix to prevent Opps. Don't deal with negative dimensions.
+    if { $w <= 0 || $h <= 0 } {
+        wm geometry $itk_component(hull) "+$_loc(x)+$_loc(y)"
+    } else {
+        wm geometry $itk_component(hull) "${w}x${h}+$_loc(x)+$_loc(y)"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -outline
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Editor::outline {
+    component hull configure -background $itk_option(-outline)
+}
Index: /tags/1.6.0/gui/scripts/energyLevels.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/energyLevels.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/energyLevels.tcl	(revision 6168)
@@ -0,0 +1,1037 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: EnergyLevels - visualizer for discrete energy levels
+#
+#  This widget is a simple visualizer for a set of quantized energy
+#  levels, as you might find for a molecule or a quantum well.  It
+#  takes the Rappture XML representation for a <table> and extracts
+#  values from the "energy" column, then plots those energies on a
+#  graph.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *EnergyLevels.width 4i widgetDefault
+option add *EnergyLevels.height 4i widgetDefault
+option add *EnergyLevels.padding 4 widgetDefault
+option add *EnergyLevels.controlBackground gray widgetDefault
+option add *EnergyLevels.shadeColor gray widgetDefault
+option add *EnergyLevels.levelColor black widgetDefault
+option add *EnergyLevels.levelTextForeground black widgetDefault
+option add *EnergyLevels.levelTextBackground white widgetDefault
+
+option add *EnergyLevels.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::EnergyLevels {
+    inherit itk::Widget
+
+    itk_option define -padding padding Padding 0
+    itk_option define -shadecolor shadeColor ShadeColor ""
+    itk_option define -levelcolor levelColor LevelColor ""
+    itk_option define -leveltextforeground levelTextForeground Foreground ""
+    itk_option define -leveltextbackground levelTextBackground Background ""
+
+    constructor {args} { # defined below }
+
+    public proc columns {table}
+
+    public method add {table {settings ""}}
+    public method delete {args}
+    public method get {}
+    public method scale {args}
+    public method download {args} {}
+    public method parameters {title args} { # do nothing }
+
+    protected method _redraw {{what all}}
+    protected method _zoom {option args}
+    protected method _view {midE delE}
+    protected method _hilite {option args}
+    protected method _getLayout {}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+
+    private variable _dlist ""     ;# list of data objects
+    private variable _dobj2color   ;# maps data obj => color option
+    private variable _dobj2raise   ;# maps data obj => raise option
+    private variable _dobj2desc    ;# maps data obj => description
+    private variable _dobj2cols    ;# maps data obj => column names
+    private variable _emin ""      ;# autoscale min for energy
+    private variable _emax ""      ;# autoscale max for energy
+    private variable _eviewmin ""  ;# min for "zoom" view
+    private variable _eviewmax ""  ;# max for "zoom" view
+    private variable _edefmin ""   ;# min for default "zoom" view
+    private variable _edefmax ""   ;# max for default "zoom" view
+    private variable _ehomo ""     ;# energy of HOMO level in topmost dataset
+    private variable _lhomo ""     ;# label for HOMO level
+    private variable _elumo ""     ;# energy of LUMO level in topmost dataset
+    private variable _llumo ""     ;# label for LUMO level
+    private variable _hilite ""    ;# item currently highlighted
+    common _downloadPopup          ;# download options from popup
+}
+
+itk::usual EnergyLevels {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !redraw
+    $_dispatcher dispatch $this !redraw "[itcl::code $this _redraw all]; list"
+    $_dispatcher register !zoom
+    $_dispatcher dispatch $this !zoom "[itcl::code $this _redraw zoom]; list"
+
+    array set _downloadPopup {
+        format csv
+    }
+
+    itk_option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    itk_component add controls {
+        frame $itk_interior.cntls
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+    pack $itk_component(controls) -side right -fill y
+
+    itk_component add reset {
+        button $itk_component(controls).reset \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -bitmap [Rappture::icon reset] \
+            -command [itcl::code $this _zoom reset]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground Background }
+    pack $itk_component(reset) -padx 4 -pady 4
+    Rappture::Tooltip::for $itk_component(reset) "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $itk_component(controls).zin \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -bitmap [Rappture::icon zoomin] \
+            -command [itcl::code $this _zoom in]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground Background
+    }
+    pack $itk_component(zoomin) -padx 4 -pady 4
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $itk_component(controls).zout \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -bitmap [Rappture::icon zoomout] \
+            -command [itcl::code $this _zoom out]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground Background
+    }
+    pack $itk_component(zoomout) -padx 4 -pady 4
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    #
+    # Add label for the title.
+    #
+    itk_component add title {
+        label $itk_interior.title
+    }
+    pack $itk_component(title) -side top
+
+    #
+    # Add graph showing levels
+    #
+    itk_component add graph {
+        canvas $itk_interior.graph -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(graph) -expand yes -fill both
+
+    bind $itk_component(graph) <Configure> \
+        [list $_dispatcher event -idle !redraw]
+
+    bind $itk_component(graph) <ButtonPress-1> \
+        [itcl::code $this _zoom at %x %y]
+    bind $itk_component(graph) <B1-Motion> \
+        [itcl::code $this _zoom at %x %y]
+
+    bind $itk_component(graph) <Motion> \
+        [itcl::code $this _hilite brush %x %y]
+    bind $itk_component(graph) <Leave> \
+        [itcl::code $this _hilite hide]
+
+    bind $itk_component(graph) <KeyPress-Up> \
+        [itcl::code $this _zoom nudge 1]
+    bind $itk_component(graph) <KeyPress-Right> \
+        [itcl::code $this _zoom nudge 1]
+    bind $itk_component(graph) <KeyPress-plus> \
+        [itcl::code $this _zoom nudge 1]
+
+    bind $itk_component(graph) <KeyPress-Down> \
+        [itcl::code $this _zoom nudge -1]
+    bind $itk_component(graph) <KeyPress-Left> \
+        [itcl::code $this _zoom nudge -1]
+    bind $itk_component(graph) <KeyPress-minus> \
+        [itcl::code $this _zoom nudge -1]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: columns <table>
+#
+# Clients use this to scan a <table> XML object and see if it contains
+# columns for energy levels.  If so, it returns a list of two column
+# names: {labels energies}.
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::columns {dataobj} {
+    set names [$dataobj columns -component]
+    set epos [lsearch -exact $names column(levels)]
+    if {$epos >= 0} {
+        set units [$dataobj columns -units $epos]
+        if {![string match energy* [Rappture::Units::description $units]]} {
+            set epos -1
+        }
+    }
+
+    # can't find column named "levels"? then look for column with energies
+    if {$epos < 0} {
+        set index 0
+        foreach units [$dataobj columns -units] {
+            if {[string match energy* [Rappture::Units::description $units]]} {
+                if {$epos >= 0} {
+                    # more than one energy column -- bail out
+                    set epos -1
+                    break
+                }
+                set epos $index
+            }
+            incr index
+        }
+    }
+
+    # look for a column with labels
+    set lpos -1
+    set index 0
+    foreach units [$dataobj columns -units] {
+        if {"" == $units} {
+            set vals [$dataobj values -column $index]
+            if {$lpos != $epos} {
+                set lpos $index
+                break
+            }
+        }
+        incr index
+    }
+
+    if {$epos >= 0 || $lpos >= 0} {
+        return [list [lindex $names $lpos] [lindex $names $epos]]
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::add {dataobj {settings ""}} {
+    #
+    # Make sure this table contains energy levels.
+    #
+    set cols [Rappture::EnergyLevels::columns $dataobj]
+    if {"" == $cols} {
+        error "table \"$dataobj\" does not contain energy levels"
+    }
+
+    #
+    # Scan through the settings and resolve all values.
+    #
+    array set params {
+        -color auto
+        -brightness 0
+        -width 1
+        -raise 0
+        -linestyle solid
+        -description ""
+        -param ""
+    }
+    array set params $settings
+
+    # convert -linestyle to BLT -dashes
+    switch -- $params(-linestyle) {
+        dashed { set params(-linestyle) {4 4} }
+        dotted { set params(-linestyle) {2 4} }
+        default { set params(-linestyle) {} }
+    }
+
+    # if -brightness is set, then update the color
+    if {$params(-brightness) != 0} {
+        set params(-color) [Rappture::color::brightness \
+            $params(-color) $params(-brightness)]
+    }
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) blue
+    }
+
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+        set _dobj2color($dataobj) $params(-color)
+        set _dobj2raise($dataobj) $params(-raise)
+        set _dobj2desc($dataobj) $params(-description)
+
+        foreach {lcol ecol} $cols break
+        set _dobj2cols($dataobj-label) $lcol
+        set _dobj2cols($dataobj-energy) $ecol
+
+        $_dispatcher event -idle !redraw
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::delete {args} {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+
+    # delete all specified data objs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if {$pos >= 0} {
+            set _dlist [lreplace $_dlist $pos $pos]
+            catch {unset _dobj2color($dataobj)}
+            catch {unset _dobj2raise($dataobj)}
+            catch {unset _dobj2desc($dataobj)}
+            catch {unset _dobj2cols($dataobj-label)}
+            catch {unset _dobj2cols($dataobj-energy)}
+            set changed 1
+        }
+    }
+
+    # if anything changed, then rebuild the plot
+    if {$changed} {
+        $_dispatcher event -idle !redraw
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::get {} {
+    # put the dataobj list in order according to -raise options
+    set dlist $_dlist
+    foreach obj $dlist {
+        if {[info exists _dobj2raise($obj)] && $_dobj2raise($obj)} {
+            set i [lsearch -exact $dlist $obj]
+            if {$i >= 0} {
+                set dlist [lreplace $dlist $i $i]
+                lappend dlist $obj
+            }
+        }
+    }
+    return $dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<dataobj1> <dataobj2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <dataobj> objects.  This
+# accounts for all dataobjs--even those not showing on the screen.
+# Because of this, the limits are appropriate for all data as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::scale {args} {
+    set _emin ""
+    set _emax ""
+    foreach obj $args {
+        if {![info exists _dobj2cols($obj-energy)]} {
+            # don't recognize this object? then ignore it
+            continue
+        }
+        foreach {min max} [$obj limits $_dobj2cols($obj-energy)] break
+
+        if {"" != $min && "" != $max} {
+            if {"" == $_emin} {
+                set _emin $min
+                set _emax $max
+            } else {
+                if {$min < $_emin} { set _emin $min }
+                if {$max > $_emax} { set _emax $max }
+            }
+        }
+    }
+
+    if {"" != $_emin && $_emin == $_emax} {
+        set _emin [expr {$_emin-0.1}]
+        set _emax [expr {$_emax+0.1}]
+    }
+
+    set _eviewmin ""  ;# reset zoom view
+    set _eviewmax ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::download {option args} {
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            set popup .energyresultdownload
+            if {![winfo exists .energyresultdownload]} {
+                # if we haven't created the popup yet, do it now
+                Rappture::Balloon $popup \
+                    -title "[Rappture::filexfer::label downloadWord] as..."
+                set inner [$popup component inner]
+                label $inner.summary -text "" -anchor w
+                pack $inner.summary -side top
+                radiobutton $inner.csv -text "Data as Comma-Separated Values" \
+                    -variable Rappture::EnergyLevels::_downloadPopup(format) \
+                    -value csv
+                pack $inner.csv -anchor w
+                radiobutton $inner.pdf -text "Image as PDF/PostScript" \
+                    -variable Rappture::EnergyLevels::_downloadPopup(format) \
+                    -value pdf
+                pack $inner.pdf -anchor w
+                button $inner.go -text [Rappture::filexfer::label download] \
+                    -command [lindex $args 0]
+                pack $inner.go -pady 4
+            } else {
+                set inner [$popup component inner]
+            }
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            $inner.summary configure -text "[Rappture::filexfer::label downloadWord] $num in the following format:"
+            update idletasks ;# fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .energyresultdownload
+            if {[winfo exists .energyresultdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+              csv {
+                # reverse the objects so the selected data appears on top
+                set dlist ""
+                foreach dataobj [get] {
+                    set dlist [linsert $dlist 0 $dataobj]
+                }
+                # generate the comma-separated value data for these objects
+                set csvdata ""
+                foreach dataobj $dlist {
+                    append csvdata "[string repeat - 60]\n"
+                    append csvdata " [$dataobj hints label]\n"
+                    if {[info exists _dobj2desc($dataobj)]
+                          && [llength [split $_dobj2desc($dataobj) \n]] > 1} {
+                        set indent "for:"
+                        foreach line [split $_dobj2desc($dataobj) \n] {
+                            append csvdata " $indent $line\n"
+                            set indent "    "
+                        }
+                    }
+                    append csvdata "[string repeat - 60]\n"
+
+                    set ecol $_dobj2cols($dataobj-energy)
+                    set units [$dataobj columns -units $ecol]
+                    foreach eval [$dataobj values -column $ecol] {
+                        append csvdata [format "%20.15g $units\n" $eval]
+                    }
+                    append csvdata "\n"
+                }
+                return [list .txt $csvdata]
+              }
+              pdf {
+                set psdata [$itk_component(graph) postscript]
+
+                set cmds {
+                    set fout "energy[pid].pdf"
+                    exec ps2pdf - $fout << $psdata
+
+                    set fid [open $fout r]
+                    fconfigure $fid -translation binary -encoding binary
+                    set pdfdata [read $fid]
+                    close $fid
+
+                    file delete -force $fout
+                }
+                if {[catch $cmds result] == 0} {
+                    return [list .pdf $pdfdata]
+                }
+                return [list .ps $psdata]
+              }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Used internally to load a list of energy levels from a <table> within
+# the data objects.
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::_redraw {{what all}} {
+    # scale data now, if we haven't already
+    if {"" == $_emin || "" == $_emax} {
+        eval scale $_dlist
+    }
+
+    set dlist [get]
+    set topdobj [lindex $dlist end]
+    _getLayout
+
+    #
+    # Redraw the overall layout
+    #
+    if {$what == "all"} {
+        $c delete all
+        if {[llength $dlist] == 0} {
+            return
+        }
+
+        #
+        # Scan through all data objects and plot them in order from
+        # the bottom up.
+        #
+        set e2y [expr {($yzoom1-$yzoom0)/($_emax-$_emin)}]
+
+        set title ""
+        set dataobj ""
+        foreach dataobj $dlist {
+            if {"" == $title} {
+                set title [$dataobj hints label]
+            }
+
+            set ecol $_dobj2cols($dataobj-energy)
+            set color $_dobj2color($dataobj)
+            if {"" == $color} {
+                set color $itk_option(-levelcolor)
+            }
+            set color [Rappture::color::brightness $color 0.7]
+
+            foreach eval [$dataobj values -column $ecol] {
+                set y [expr {($eval-$_emin)*$e2y + $yzoom0}]
+                $c create line $xx0 $y $xx1 $y -fill $color -width 1
+            }
+        }
+
+        #
+        # Scan through the data and look for HOMO/LUMO levels.
+        # Set the default view to the energy just above and
+        # just below the HOMO/LUMO levels.
+        #
+        set _edefmin [expr {0.4*($_emax-$_emin) + $_emin}]
+        set _edefmax [expr {0.6*($_emax-$_emin) + $_emin}]
+
+        set nlumo -1
+        set nhomo -1
+
+        set dataobj [lindex $dlist end]
+        if {"" != $dataobj} {
+            set lcol $_dobj2cols($dataobj-label)
+            set ecol $_dobj2cols($dataobj-energy)
+            set units [$dataobj columns -units $ecol]
+
+            set n 0
+            foreach eval [$dataobj values -column $ecol] \
+                    lval [$dataobj values -column $lcol] {
+
+                if {[string equal -nocase $lval "HOMO"]} {
+                    set nhomo $n
+                    set _lhomo $lval
+                    set nlumo [expr {$n+1}]
+                    set _llumo "LUMO"
+                } elseif {[string equal -nocase $lval "Ground State"]} {
+                    set nhomo $n
+                    set _lhomo $lval
+                    set nlumo [expr {$n+1}]
+                    set _llumo "1st Excited State"
+                } elseif {[string equal -nocase $lval "LUMO"]
+                      || [string equal -nocase $lval "1st Excited State"]} {
+                    set nlumo $n
+                    set _llumo $lval
+                }
+                incr n
+            }
+
+            if {$nhomo >= 0 && $nlumo >= 0} {
+                set elist [$dataobj values -column $ecol]
+                set _ehomo [lindex $elist $nhomo]
+                set _elumo [lindex $elist $nlumo]
+                if {"" != $_elumo && "" != $_ehomo} {
+                    set gap [expr {$_elumo - $_ehomo}]
+                    set _edefmin [expr {$_ehomo - 0.3*$gap}]
+                    set _edefmax [expr {$_elumo + 0.3*$gap}]
+
+                    set y [expr {($_ehomo-$_emin)*$e2y + $yzoom0}]
+                    set id [$c create rectangle $xx0 $y $xx1 $y0 \
+                        -stipple [Rappture::icon rdiag] \
+                        -outline "" -fill $itk_option(-shadecolor)]
+                    $c lower $id
+                }
+            }
+        }
+        if {"" == $_eviewmin || "" == $_eviewmax} {
+            set _eviewmin $_edefmin
+            set _eviewmax $_edefmax
+        }
+
+        if {"" != $title} {
+            pack $itk_component(title) -side top -before $c
+            $itk_component(title) configure -text $title
+        } else {
+            pack forget $itk_component(title)
+        }
+
+        # draw the lines for the "zoom" view (fixed up below)
+        set color $itk_option(-foreground)
+        $c create line $x0 $yzoom0 $x1 $yzoom0 -fill $color -tags zmin
+        $c create line $x0 $yzoom0 $x1 $yzoom0 -fill $color -tags zmax
+
+        $c create line $x1 $yzoom0 $x2 $yzoom0 -fill $color -tags zoomup
+        $c create line $x1 $yzoom0 $x2 $yzoom1 -fill $color -tags zoomdn
+
+        $c create line $x2 $yzoom0 $x3 $yzoom0 -fill $color
+        $c create line $x2 $yzoom1 $x3 $yzoom1 -fill $color
+    }
+
+    #
+    # Redraw the "zoom" area on the right side
+    #
+    if {$what == "zoom" || $what == "all"} {
+        set e2y [expr {($yzoom1-$yzoom0)/($_emax-$_emin)}]
+
+        set y [expr {($_eviewmin-$_emin)*$e2y + $yzoom0}]
+        $c coords zmin $x0 $y $x1 $y
+        $c coords zoomup $x1 $y $x2 $yzoom0
+
+        set y [expr {($_eviewmax-$_emin)*$e2y + $yzoom0}]
+        $c coords zmax $x0 $y $x1 $y
+        $c coords zoomdn $x1 $y $x2 $yzoom1
+
+        # redraw all levels in the current view
+        $c delete zlevels zlabels
+
+        set e2y [expr {($yzoom1-$yzoom0)/($_eviewmax-$_eviewmin)}]
+        foreach dataobj $dlist {
+            set ecol $_dobj2cols($dataobj-energy)
+            set color $_dobj2color($dataobj)
+            if {"" == $color} {
+                set color $itk_option(-levelcolor)
+            }
+
+            set n 0
+            foreach eval [$dataobj values -column $ecol] {
+                set y [expr {($eval-$_eviewmin)*$e2y + $yzoom0}]
+                if {$y >= $y1 && $y <= $y0} {
+                    set id [$c create line $xx2 $y $xx3 $y \
+                        -fill $color -width 1 \
+                        -tags [list zlevels $dataobj-$n]]
+                }
+                incr n
+            }
+        }
+
+        if {"" != $topdobj && "" != $_ehomo && "" != $_elumo} {
+            set ecol $_dobj2cols($topdobj-energy)
+            set units [$topdobj columns -units $ecol]
+
+            set yy0 [expr {($_ehomo-$_eviewmin)*$e2y + $yzoom0}]
+            set yy1 [expr {($_elumo-$_eviewmin)*$e2y + $yzoom0}]
+
+            set textht [font metrics $itk_option(-font) -linespace]
+            if {$yy0-$yy1 >= 1.5*$textht} {
+                $c create line [expr {$x3-10}] $yy0 [expr {$x3-10}] $yy1 \
+                    -arrow both -fill $itk_option(-foreground) \
+                    -tags zlabels
+                $c create text [expr {$x3-15}] [expr {0.5*($yy0+$yy1)}] \
+                    -anchor e -text "Eg = [expr {$_elumo-$_ehomo}] $units" \
+                    -tags zlabels
+
+                # label the HOMO level
+                set tid [$c create text [expr {0.5*($x2+$x3)}] $yy0 -anchor c \
+                    -text "$_lhomo = $_ehomo $units" \
+                    -fill $itk_option(-leveltextforeground) \
+                    -tags zlabels]
+
+                foreach {xb0 yb0 xb1 yb1} [$c bbox $tid] break
+                set tid2 [$c create rectangle \
+                    [expr {$xb0-1}] [expr {$yb0-1}] \
+                    [expr {$xb1+1}] [expr {$yb1+1}] \
+                    -outline $itk_option(-leveltextforeground) \
+                    -fill $itk_option(-leveltextbackground) \
+                    -tags zlabels]
+                $c lower $tid2 $tid
+
+                # label the LUMO level
+                set tid [$c create text [expr {0.5*($x2+$x3)}] $yy1 -anchor c \
+                    -text "$_llumo = $_elumo $units" \
+                    -fill $itk_option(-leveltextforeground) \
+                    -tags zlabels]
+
+                foreach {xb0 yb0 xb1 yb1} [$c bbox $tid] break
+                set tid2 [$c create rectangle \
+                    [expr {$xb0-1}] [expr {$yb0-1}] \
+                    [expr {$xb1+1}] [expr {$yb1+1}] \
+                    -outline $itk_option(-leveltextforeground) \
+                    -fill $itk_option(-leveltextbackground) \
+                    -tags zlabels]
+                $c lower $tid2 $tid
+            }
+
+            if {$yy0 < $y0} {
+                set id [$c create rectangle $xx2 $yy0 $xx3 $y0 \
+                    -stipple [Rappture::icon rdiag] \
+                    -outline "" -fill $itk_option(-shadecolor) \
+                    -tags zlabels]
+                $c lower $id
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _zoom in
+# USAGE: _zoom out
+# USAGE: _zoom reset
+# USAGE: _zoom at <x> <y>
+# USAGE: _zoom nudge <dir>
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::_zoom {option args} {
+    switch -- $option {
+        in {
+            set midE [expr {0.5*($_eviewmax + $_eviewmin)}]
+            set delE [expr {0.8*($_eviewmax - $_eviewmin)}]
+            _view $midE $delE
+        }
+        out {
+            set midE [expr {0.5*($_eviewmax + $_eviewmin)}]
+            set delE [expr {1.25*($_eviewmax - $_eviewmin)}]
+            _view $midE $delE
+        }
+        reset {
+            set _eviewmin $_edefmin
+            set _eviewmax $_edefmax
+            $_dispatcher event -idle !zoom
+        }
+        at {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"_zoom at x y\""
+            }
+            set x [lindex $args 0]
+            set y [lindex $args 1]
+
+            _getLayout
+            set y2e [expr {($_emax-$_emin)/($yzoom1-$yzoom0)}]
+
+            if {$x > $x1} {
+                return
+            }
+            set midE [expr {($y-$yzoom0)*$y2e + $_emin}]
+            set delE [expr {$_eviewmax - $_eviewmin}]
+            _view $midE $delE
+        }
+        nudge {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"_zoom nudge dir\""
+            }
+            set dir [lindex $args 0]
+
+            set midE [expr {0.5*($_eviewmax + $_eviewmin)}]
+            set delE [expr {$_eviewmax - $_eviewmin}]
+            set midE [expr {$midE + $dir*0.25*$delE}]
+            _view $midE $delE
+        }
+    }
+    focus $itk_component(graph)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _view <midE> <delE>
+#
+# Called automatically when the user clicks/drags on the left side
+# of the widget where energy levels are displayed.  Sets the zoom
+# view so that it's centered on the <y> coordinate.
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::_view {midE delE} {
+    if {$delE > $_emax-$_emin} {
+        set delE [expr {$_emax - $_emin}]
+    }
+    if {$midE - 0.5*$delE < $_emin} {
+        set _eviewmin $_emin
+        set _eviewmax [expr {$_eviewmin+$delE}]
+    } elseif {$midE + 0.5*$delE > $_emax} {
+        set _eviewmax $_emax
+        set _eviewmin [expr {$_eviewmax-$delE}]
+    } else {
+        set _eviewmin [expr {$midE - 0.5*$delE}]
+        set _eviewmax [expr {$midE + 0.5*$delE}]
+    }
+    $_dispatcher event -idle !zoom
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _hilite brush <x> <y>
+# USAGE: _hilite show <dataobj> <level>
+# USAGE: _hilite hide
+#
+# Used internally to highlight energy levels in the zoom view and
+# show their associated energy.  The "brush" operation is called
+# as the mouse moves in the zoom view, to see if the <x>,<y>
+# coordinate is touching a level.  The show/hide operations are
+# then used to show/hide level info.
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::_hilite {option args} {
+    switch -- $option {
+        brush {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"_hilite brush x y\""
+            }
+            set x [lindex $args 0]
+            set y [lindex $args 1]
+
+            _getLayout
+            if {$x < $x2 || $x > $x3} {
+                return   ;# pointer must be in "zoom" area
+            }
+
+            set c $itk_component(graph)
+            set id [$c find withtag current]
+
+            # touching a line? then find the level and show its info
+            if {"" != $id} {
+                set e2y [expr {($yzoom1-$yzoom0)/($_eviewmax-$_eviewmin)}]
+
+                # put the dataobj list in order according to -raise options
+                set dlist $_dlist
+                foreach obj $dlist {
+                    if {[info exists _dobj2raise($obj)] && $_dobj2raise($obj)} {
+                        set i [lsearch -exact $dlist $obj]
+                        if {$i >= 0} {
+                            set dlist [lreplace $dlist $i $i]
+                            lappend dlist $obj
+                        }
+                    }
+                }
+
+                set found 0
+                foreach dataobj $dlist {
+                    set ecol $_dobj2cols($dataobj-energy)
+                    set n 0
+                    foreach eval [$dataobj values -column $ecol] {
+                        set ylevel [expr {($eval-$_eviewmin)*$e2y + $yzoom0}]
+                        if {$y >= $ylevel-3 && $y <= $ylevel+3} {
+                            set found 1
+                            break
+                        }
+                        incr n
+                    }
+                    if {$found} break
+                }
+                if {$found} {
+                    _hilite show $dataobj $n
+                } else {
+                    _hilite hide
+                }
+            } else {
+                _hilite hide
+            }
+        }
+        show {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"_hilite show dataobj level\""
+            }
+            set dataobj [lindex $args 0]
+            set level [lindex $args 1]
+
+            if {$_hilite == "$dataobj $level"} {
+                return
+            }
+            _hilite hide
+
+            set lcol $_dobj2cols($dataobj-label)
+            set lval [lindex [$dataobj values -column $lcol] $level]
+            set ecol $_dobj2cols($dataobj-energy)
+            set eval [lindex [$dataobj values -column $ecol] $level]
+            set units [$dataobj columns -units $ecol]
+
+            if {$eval == $_ehomo || $eval == $_elumo} {
+                $itk_component(graph) itemconfigure $dataobj-$level -width 2
+                set _hilite "$dataobj $level"
+                # don't pop up info for the HOMO/LUMO levels
+                return
+            }
+
+            _getLayout
+            set e2y [expr {($yzoom1-$yzoom0)/($_eviewmax-$_eviewmin)}]
+            set y [expr {($eval-$_eviewmin)*$e2y + $yzoom0}]
+
+            set tid [$c create text [expr {0.5*($x2+$x3)}] $y -anchor c \
+                -text "$lval = $eval $units" \
+                -fill $itk_option(-leveltextforeground) \
+                -tags hilite]
+
+            foreach {x0 y0 x1 y1} [$c bbox $tid] break
+            set tid2 [$c create rectangle \
+                [expr {$x0-1}] [expr {$y0-1}] \
+                [expr {$x1+1}] [expr {$y1+1}] \
+                -outline $itk_option(-leveltextforeground) \
+                -fill $itk_option(-leveltextbackground) \
+                -tags hilite]
+            $c lower $tid2 $tid
+
+            $c itemconfigure $dataobj-$level -width 2
+            set _hilite "$dataobj $level"
+        }
+        hide {
+            if {"" != $_hilite} {
+                $itk_component(graph) delete hilite
+                $itk_component(graph) itemconfigure zlevels -width 1
+                set _hilite ""
+            }
+        }
+        default {
+            error "bad option \"$option\": should be brush, show, hide"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _getLayout
+#
+# Used internally to compute a series of variables used when redrawing
+# the widget.  Creates the variables with the proper values in the
+# calling context.
+# ----------------------------------------------------------------------
+itcl::body Rappture::EnergyLevels::_getLayout {} {
+    upvar c c
+    set c $itk_component(graph)
+
+    upvar w w
+    set w [winfo width $c]
+
+    upvar h h
+    set h [winfo height $c]
+
+    #
+    # Measure the size of a typical label and use that to size
+    # the left/right portions.  If the label is too big, leave
+    # at least a little room for the labels.
+    #
+    set size [font measure $itk_option(-font) "$_llumo = X.XXXXXXe-XX eV"]
+    set size [expr {$size + 6*$itk_option(-padding)}]
+
+    set textht [font metrics $itk_option(-font) -linespace]
+    set ypad [expr {int(0.5*($textht + 6))}]
+
+    if {$size > $w-20} {
+        set size [expr {$w-20}]
+    } elseif {$size < 0.66*$w} {
+        set size [expr {0.66*$w}]
+    }
+    set xm [expr {$w - $size}]
+
+    upvar x0 x0
+    set x0 $itk_option(-padding)
+
+    upvar x1 x1
+    set x1 [expr {$xm - $itk_option(-padding)}]
+
+    upvar x2 x2
+    set x2 [expr {$xm + $itk_option(-padding)}]
+
+    upvar x3 x3
+    set x3 [expr {$w - $itk_option(-padding)}]
+
+
+    upvar xx0 xx0
+    set xx0 [expr {$x0 + $itk_option(-padding)}]
+
+    upvar xx1 xx1
+    set xx1 [expr {$x1 - $itk_option(-padding)}]
+
+    upvar xx2 xx2
+    set xx2 [expr {$x2 + $itk_option(-padding)}]
+
+    upvar xx3 xx3
+    set xx3 [expr {$x3 - $itk_option(-padding)}]
+
+
+    upvar y0 y0
+    set y0 [expr {$h - $itk_option(-padding)}]
+
+    upvar yzoom0 yzoom0
+    set yzoom0 [expr {$y0 - $ypad}]
+
+    upvar y1 y1
+    set y1 $itk_option(-padding)
+
+    upvar yzoom1 yzoom1
+    set yzoom1 [expr {$y1 + $ypad}]
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -levelColor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::EnergyLevels::levelcolor {
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -leveltextforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::EnergyLevels::leveltextforeground {
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -leveltextbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::EnergyLevels::leveltextbackground {
+    $_dispatcher event -idle !redraw
+}
Index: /tags/1.6.0/gui/scripts/field.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/field.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/field.tcl	(revision 6168)
@@ -0,0 +1,1785 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: field - extracts data from an XML description of a field
+#
+#  This object represents one field in an XML description of a device.
+#  It simplifies the process of extracting data vectors that represent
+#  the field.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+# TODO:
+#    Vector field limits are wrong: need to compute magnitude limits and
+#    component-wise limits.
+
+#
+# Possible field dataset types:
+#
+# 1D Datasets
+#       1D              A field contained in a structure
+# 2D Datasets
+#       vtk             (range of z-axis is zero).
+#       unirect2d       (deprecated)
+#       cloud           (x,y point coordinates) (deprecated)
+#       mesh
+# 3D Datasets
+#       vtk
+#       unirect3d       (deprecated)
+#       cloud           (x,y,z coordinates) (deprecated)
+#       mesh
+#       dx              (FIXME: make dx-to-vtk converter work)
+#       ucd             (AVS ucd format)
+#
+# Viewers:
+#       Format     Dim  Description                   Viewer          Server
+#       1D          1   structure field               DeviceViewer1D  N/A
+#       vtk         2   vtk file data.                contour         vtkvis
+#       vtk         3   vtk file data.                isosurface      vtkvis
+#       mesh        2   points-on-mesh                heightmap       vtkvis
+#       mesh        3   points-on-mesh                isosurface      vtkvis
+#       dx          3   DX                            volume          nanovis
+#       unirect2d   2   unirect2d + extents > 1 flow  flow            nanovis
+#       unirect3d   3   unirect3d + extents > 1 flow  flow            nanovis
+#
+# With <views>, can specify which viewer for specific datasets.  So it's OK
+# for the same dataset to be viewed in more than one way.
+#  o Any 2D dataset can be viewed as a contour/heightmap.
+#  o Any 3D dataset can be viewed as a isosurface.
+#  o Any 2D dataset with vector data can be streamlines or flow.
+#  o Any 3D uniform rectilinear dataset can be viewed as a volume.
+#  o Any 3D dataset with vector data can be streamlines or flow.
+#
+# Need <views> to properly do things like qdot: volume with a polydata
+# transparent shell.  The view will combine the two objects <field> and
+# <drawing> (??) into a single viewer.
+#
+package require Itcl
+package require BLT
+
+namespace eval Rappture {
+    # forward declaration
+}
+
+itcl::class Rappture::Field {
+    constructor {xmlobj path} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method blob { cname }
+    public method components {args}
+    public method controls {option args}
+    public method fieldinfo { fname } {
+        lappend out $_fld2Label($fname)
+        lappend out $_fld2Units($fname)
+        lappend out $_fld2Components($fname)
+        return $out
+    }
+    public method fieldlimits {}
+    public method fieldnames { cname } {
+        if { ![info exists _comp2fldName($cname)] } {
+            return ""
+        }
+        return $_comp2fldName($cname)
+    }
+    public method flowhints { cname }
+    public method hints {{key ""}}
+    public method isvalid {} {
+        return $_isValid
+    }
+    public method limits {axis}
+    public method mesh {{cname -overall}}
+    public method numComponents {cname}
+    public method style { cname }
+    public method type {}
+    public method valueLimits { cname }
+    public method values { cname }
+    public method viewer {} {
+        return $_viewer
+    }
+    public method vtkdata {cname}
+    public method xErrorValues { cname } {
+    }
+    public method yErrorValues { cname } {
+    }
+
+    protected method Build {}
+    protected method _getValue {expr}
+    protected method GetAssociation { cname }
+    protected method GetTypeAndSize { cname }
+    protected method ReadVtkDataSet { cname contents }
+
+    private method AvsToVtk { cname contents }
+    private method DicomToVtk { cname contents }
+    private method BuildPointsOnMesh { cname }
+    private method InitHints {}
+    private method VerifyVtkDataSet { contents }
+    private method VectorLimits { vector vectorsize {comp -1} }
+    private method VtkDataSetToXy { dataset }
+
+    protected variable _dim 0;          # Dimension of the mesh
+
+    private variable _xmlobj "";        # ref to XML obj with field data
+    private variable _path "";          # Path of this object in the XML
+    private variable _field "";         # This field element as XML obj
+
+    private variable _type "";          # Field type: e.g. file type
+    private variable _hints;            # Hints array
+    private variable _limits;           # maps axis name => {z0 z1} limits
+    private variable _units "";         # system of units for this field
+    private variable _viewer "";        # Hints which viewer to use
+    private variable _isValid 0;        # Indicates if the field contains
+                                        # valid data.
+    private variable _isValidComponent; # Array of valid components found
+    private variable _zmax 0;           # length of the device (1D only)
+
+    private variable _fld2Components;   # field name => number of components
+    private variable _fld2Label;        # field name => label
+    private variable _fld2Units;        # field name => units
+
+    private variable _comp2fldName;     # cname => field names.
+    private variable _comp2type;        # cname => type (e.g. "vectors")
+    private variable _comp2size;        # cname => # of components in element
+    private variable _comp2assoc;       # cname => association (e.g. pointdata)
+    private variable _comp2dims;        # cname => dimensionality
+    private variable _comp2xy;          # cname => x,y vectors
+    private variable _comp2vtk;         # cname => vtk file data
+    private variable _comp2dx;          # cname => OpenDX data
+    private variable _comp2style;       # cname => style settings
+    private variable _comp2cntls;       # cname => x,y control points (1D only)
+    private variable _comp2limits;      # cname => List of axis, min/max list
+    private variable _comp2flowhints;   # cname => Rappture::FlowHints obj
+    private variable _comp2mesh;        # list: mesh obj, BLT vector of values
+                                        # valid for cloud,mesh,unirect2d
+    private common _alwaysConvertDX 0;  # If set, convert DX and store as VTK,
+                                        # even if viewer is nanovis/flowvis
+    private common _counter 0;          # counter for unique vector names
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::constructor {xmlobj path} {
+    package require vtk
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be Rappture::library"
+    }
+    set _xmlobj $xmlobj
+    set _path $path
+    set _field [$xmlobj element -as object $path]
+    set _units [$_field get units]
+
+    set xunits [$xmlobj get units]
+    if {"" == $xunits || "arbitrary" == $xunits} {
+        set xunits "um"
+    }
+
+    # determine the overall size of the device
+    set z0 [set z1 0]
+    foreach elem [$_xmlobj children components] {
+        switch -glob -- $elem {
+            box* {
+                if {![regexp {[0-9]$} $elem]} {
+                    set elem "${elem}0"
+                }
+                set z0 [$_xmlobj get components.$elem.corner0]
+                set z0 [Rappture::Units::convert $z0 \
+                    -context $xunits -to $xunits -units off]
+
+                set z1 [$_xmlobj get components.$elem.corner1]
+                set z1 [Rappture::Units::convert $z1 \
+                    -context $xunits -to $xunits -units off]
+
+                set _limits($elem) [list $z0 $z1]
+            }
+        }
+    }
+    set _zmax $z1
+
+    # build up vectors for various components of the field
+    Build
+    InitHints
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::destructor {} {
+    itcl::delete object $_field
+    # don't destroy the _xmlobj! we don't own it!
+
+    foreach name [array names _comp2xy] {
+        eval blt::vector destroy $_comp2xy($name)
+    }
+    foreach name [array names _comp2flowhints] {
+        itcl::delete object $_comp2flowhints($name)
+    }
+    foreach name [array names _comp2mesh] {
+        # Data is in the form of a mesh and a vector.
+        foreach { mesh vector } $_comp2mesh($name) break
+        # Release the mesh (may be shared)
+        set class [$mesh info class]
+        ${class}::release $mesh
+        # Destroy the vector
+        blt::vector destroy $vector
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: components ?-name|-dimensions|-style? ?<pattern>?
+#
+# Returns a list of names or types for the various components of
+# this field.  If the optional glob-style <pattern> is specified,
+# then it returns only the components with names matching the pattern.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::components {args} {
+    Rappture::getopts args params {
+        flag what -name default
+        flag what -dimensions
+        flag what -style
+        flag what -particles
+        flag what -flow
+        flag what -box
+    }
+
+    set pattern *
+    if {[llength $args] > 0} {
+        set pattern [lindex $args 0]
+        set args [lrange $args 1 end]
+    }
+    if {[llength $args] > 0} {
+        error "wrong # args: should be \"components ?switches? ?pattern?\""
+    }
+
+    # There's only one dimension of the field.  Components can't have
+    # different dimensions in the same field.  They would by definition be
+    # using different meshes and viewers.
+    if { $params(what) == "-dimensions" } {
+        return "${_dim}D"
+    }
+    # BE CAREFUL: return component names in proper order
+    set rlist ""
+    set components {}
+    # First compile a list of valid components that match the pattern
+    foreach cname [$_field children -type component] {
+        if { ![info exists _isValidComponent($cname)] } {
+            continue
+        }
+        if { [string match $pattern $cname] } {
+            lappend components $cname
+        }
+    }
+    # Now handle the tests.
+    switch -- $params(what) {
+        -name {
+            set rlist $components
+        }
+        -style {
+            foreach cname $components {
+                if { [info exists _comp2style($cname)] } {
+                    lappend rlist $_comp2style($cname)
+                }
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: mesh ?<name>?
+#
+# For 1D data (curve), returns a BLT vector of x values for the field
+# component <name>.  Otherwise, this method is unused.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::mesh {{cname -overall}} {
+    if {$cname == "-overall" || $cname == "component0"} {
+        set cname [lindex [components -name] 0]
+    }
+    if {[info exists _comp2xy($cname)]} {
+        return [lindex $_comp2xy($cname) 0]  ;# return xv
+    }
+    if {[info exists _comp2vtk($cname)]} {
+        error "method \"mesh\" is not implemented for VTK file data"
+    }
+    if {[info exists _comp2dx($cname)]} {
+        error "method \"mesh\" is not implemented for DX file data"
+    }
+    if {[info exists _comp2mesh($cname)]} {
+        error "method \"mesh\" is not implemented for Rappture::Mesh"
+    }
+    error "can't get field mesh: Unknown component \"$cname\": should be one of [join [lsort [array names _comp2dims]] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: values ?<name>?
+#
+# For 1D data (curve), returns a BLT vector of field values (y coords)
+# for the field component <name>.  Otherwise, this method is unused.
+# The number of elements in the vector should be a multiple of the
+# return value of [numComponents]
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::values {cname} {
+    if {$cname == "component0"} {
+        set cname "component"
+    }
+    if {[info exists _comp2xy($cname)]} {
+        return [lindex $_comp2xy($cname) 1]  ;# return yv
+    }
+    if {[info exists _comp2vtk($cname)]} {
+        error "method \"values\" is not implemented for VTK file data"
+    }
+    if {[info exists _comp2dx($cname)]} {
+        error "method \"values\" is not implemented for DX file data"
+    }
+    if {[info exists _comp2mesh($cname)]} {
+        return [lindex $_comp2mesh($cname) 1] ;# return vector
+    }
+    error "can't get field values. Unknown component \"$cname\": should be one of [join [lsort [array names _comp2dims]] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: blob ?<name>?
+#
+# Returns a string representing the blob of data for the mesh and values.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::blob {cname} {
+    if {$cname == "component0"} {
+        set cname "component"
+    }
+    if {[info exists _comp2dx($cname)]} {
+        return $_comp2dx($cname)  ;# return gzipped, base64-encoded DX data
+    }
+    if {[info exists _comp2mesh($cname)]} {
+        error "method \"blob\" not implemented for Rappture::Mesh"
+    }
+    if {[info exists _comp2vtk($cname)]} {
+        error "method \"blob\" not implemented for VTK file data"
+    }
+    if {[info exists _comp2xy($cname)]} {
+        error "method \"blob\" not implemented for XY data"
+    }
+    error "can't get field blob: Unknown component \"$cname\": should be one of [join [lsort [array names _comp2dims]] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: valueLimits <cname>
+#
+# Returns an array for the requested component with a list {min max}
+# representing the limits for each axis.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::valueLimits { cname } {
+    if { [info exists _comp2limits($cname)] } {
+        return $_comp2limits($cname)
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: limits <axis>
+#
+# Returns a list {min max} representing the limits for the specified
+# axis over all components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::limits {which} {
+    set min ""
+    set max ""
+
+    foreach cname [array names _comp2dims] {
+        switch -- $_comp2dims($cname) {
+            1D {
+                switch -- $which {
+                    x - xlin {
+                        set pos 0; set log 0; set axis x
+                    }
+                    xlog {
+                        set pos 0; set log 1; set axis x
+                    }
+                    y - ylin - v - vlin {
+                        set pos 1; set log 0; set axis y
+                    }
+                    ylog - vlog {
+                        set pos 1; set log 1; set axis y
+                    }
+                    default {
+                        error "bad axis \"$which\": should be x, xlin, xlog, y, ylin, ylog, v, vlin, vlog"
+                    }
+                }
+
+                set vname [lindex $_comp2xy($cname) $pos]
+
+                if {$log} {
+                    blt::vector tmp zero
+                    # on a log scale, use abs value and ignore zeros
+                    $vname dup tmp
+                    $vname dup zero
+                    zero expr {tmp == 0}            ;# find the zeros
+                    tmp expr {abs(tmp)}             ;# get the abs value
+                    tmp expr {tmp + zero*max(tmp)}  ;# replace 0s with abs max
+                    set axisMin [blt::vector expr min(tmp)]
+                    set axisMax [blt::vector expr max(tmp)]
+                    blt::vector destroy tmp zero
+                } else {
+                    set axisMin [$vname min]
+                    set axisMax [$vname max]
+                }
+
+                if {"" == $min} {
+                    set min $axisMin
+                } elseif {$axisMin < $min} {
+                    set min $axisMin
+                }
+                if {"" == $max} {
+                    set max $axisMax
+                } elseif {$axisMax > $max} {
+                    set max $axisMax
+                }
+            }
+            default {
+                if {[info exists _comp2limits($cname)]} {
+                    array set limits $_comp2limits($cname)
+                    switch -- $which {
+                        x - xlin - xlog {
+                            set axis x
+                            foreach {axisMin axisMax} $limits(x) break
+                        }
+                        y - ylin - ylog {
+                            set axis y
+                            foreach {axisMin axisMax} $limits(y) break
+                        }
+                        z - zlin - zlog {
+                            set axis z
+                            foreach {axisMin axisMax} $limits(z) break
+                        }
+                        v - vlin - vlog {
+                            set axis v
+                            foreach {axisMin axisMax} $limits(v) break
+                        }
+                        default {
+                            if { ![info exists limits($which)] } {
+                                error "limits: unknown axis \"$which\""
+                            }
+                            set axis v
+                            foreach {axisMin axisMax} $limits($which) break
+                        }
+                    }
+                } else {
+                    set axisMin 0  ;# HACK ALERT! must be OpenDX data
+                    set axisMax 1
+                    set axis v
+                }
+            }
+        }
+        if { "" == $min || $axisMin < $min } {
+            set min $axisMin
+        }
+        if { "" == $max || $axisMax > $max } {
+            set max $axisMax
+        }
+    }
+    set val [$_field get "${axis}axis.min"]
+    if {"" != $val && "" != $min} {
+        if {$val > $min} {
+            # tool specified this min -- don't go any lower
+            set min $val
+        }
+    }
+    set val [$_field get "${axis}axis.max"]
+    if {"" != $val && "" != $max} {
+        if {$val < $max} {
+            # tool specified this max -- don't go any higher
+            set max $val
+        }
+    }
+    return [list $min $max]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: fieldlimits
+#
+# This method is for use with VTK components that have multiple fields.
+# It really makes no sense to have multiple fields in a field, but this
+# is here until we add a proper dataset object to hold multiple fields.
+#
+# Returns an array mapping fieldname => list {min max} representing the
+# limits over all components for the given fieldname.  This assumes that
+# all components have the same set of fields.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::fieldlimits {} {
+    foreach cname [array names _comp2limits] {
+        array set limits $_comp2limits($cname)
+        foreach fname [fieldnames $cname] {
+            if { ![info exists limits($fname)] } {
+                puts stderr "ERROR: field \"$fname\" unknown in \"$cname\""
+                continue
+            }
+            foreach {min max} $limits($fname) break
+            if { ![info exists overall($fname)] } {
+                set overall($fname) $limits($fname)
+                continue
+            }
+            foreach {omin omax} $overall($fname) break
+            if { $min < $omin } {
+                set omin $min
+            }
+            if { $max > $omax } {
+                set omax $max
+            }
+            set overall($fname) [list $min $max]
+        }
+    }
+    if { [info exists overall] } {
+        return [array get overall]
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: controls get ?<name>?
+# USAGE: controls validate <path> <value>
+# USAGE: controls put <path> <value>
+#
+# Returns a list {path1 x1 y1 val1  path2 x2 y2 val2 ...} representing
+# control points for the specified field component <name>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::controls {option args} {
+    switch -- $option {
+        get {
+            set cname [lindex $args 0]
+            if {[info exists _comp2cntls($cname)]} {
+                return $_comp2cntls($cname)
+            }
+            return ""
+        }
+        validate {
+            set path [lindex $args 0]
+            set value [lindex $args 1]
+            set units [$_xmlobj get $path.units]
+
+            if {"" != $units} {
+                set nv [Rappture::Units::convert \
+                    $value -context $units -to $units -units off]
+            } else {
+                set nv $value
+            }
+            if {![string is double $nv]
+                  || [regexp -nocase {^(inf|nan)$} $nv]} {
+                error "Value out of range"
+            }
+
+            set rawmin [$_xmlobj get $path.min]
+            if {"" != $rawmin} {
+                set minv $rawmin
+                if {"" != $units} {
+                    set minv [Rappture::Units::convert \
+                        $minv -context $units -to $units -units off]
+                    set nv [Rappture::Units::convert \
+                        $value -context $units -to $units -units off]
+                }
+                # fix for the case when the user tries to
+                # compare values like minv=-500 nv=-0600
+                set nv [format "%g" $nv]
+                set minv [format "%g" $minv]
+
+                if {$nv < $minv} {
+                    error "Minimum value allowed here is $rawmin"
+                }
+            }
+
+            set rawmax [$_xmlobj get $path.max]
+            if {"" != $rawmax} {
+                set maxv $rawmax
+                if {"" != $units} {
+                    set maxv [Rappture::Units::convert \
+                        $maxv -context $units -to $units -units off]
+                    set nv [Rappture::Units::convert \
+                        $value -context $units -to $units -units off]
+                }
+                # fix for the case when the user tries to
+                # compare values like maxv=-500 nv=-0600
+                set nv [format "%g" $nv]
+                set maxv [format "%g" $maxv]
+
+                if {$nv > $maxv} {
+                    error "Maximum value allowed here is $rawmax"
+                }
+            }
+
+            return "ok"
+        }
+        put {
+            set path [lindex $args 0]
+            set value [lindex $args 1]
+            $_xmlobj put $path.current $value
+            Build
+        }
+        default {
+            error "bad field controls option \"$option\": should be get or put"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this field.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::hints {{keyword ""}} {
+    if { $keyword != "" } {
+        if {[info exists _hints($keyword)]} {
+            return $_hints($keyword)
+        }
+        return ""
+    }
+    return [array get _hints]
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: InitHints
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this field.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::InitHints {} {
+    # Order of duplicate keys matters here: later entries override
+    # earlier ones.  For example: camera.position is deprecated in
+    # favor of about.camera, so about.camera is listed after
+    # camera.position
+    foreach {key path} {
+        camera          camera.position
+        camera          about.camera
+        color           about.color
+        group           about.group
+        label           about.label
+        scale           about.scale
+        seeds           about.seeds
+        style           about.style
+        type            about.type
+        xlabel          about.xaxis.label
+        ylabel          about.yaxis.label
+        zlabel          about.zaxis.label
+        xunits          about.xaxis.units
+        yunits          about.yaxis.units
+        zunits          about.zaxis.units
+        units           units
+        updir           updir
+        vectors         about.vectors
+    } {
+        set str [$_field get $path]
+        if { "" != $str } {
+            set _hints($key) $str
+        }
+    }
+    foreach cname [components] {
+        if { ![info exists _comp2mesh($cname)] } {
+            continue
+        }
+        set mesh [lindex $_comp2mesh($cname) 0]
+        foreach axis {x y z} {
+            if { ![info exists _hints(${axis}units)] } {
+                set _hints(${axis}units) [$mesh units $axis]
+            }
+            if { ![info exists _hints(${axis}label)] } {
+                set _hints(${axis}label) [$mesh label $axis]
+            }
+        }
+    }
+    foreach {key path} {
+        toolid          tool.id
+        toolname        tool.name
+        toolcommand     tool.execute
+        tooltitle       tool.title
+        toolrevision    tool.version.application.revision
+    } {
+        set str [$_xmlobj get $path]
+        if { "" != $str } {
+            set _hints($key) $str
+        }
+    }
+    # Set toolip and path hints
+    set _hints(path) $_path
+    if { [info exists _hints(group)] && [info exists _hints(label)] } {
+        # pop-up help for each curve
+        set _hints(tooltip) $_hints(label)
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Build
+#
+# Used internally to build up the vector representation for the
+# field when the object is first constructed, or whenever the field
+# data changes.  Discards any existing vectors and builds everything
+# from scratch.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::Build {} {
+
+    # Discard any existing data
+    foreach name [array names _comp2xy] {
+        eval blt::vector destroy $_comp2xy($name)
+    }
+    array unset _comp2vtk
+    catch {unset _comp2xy}
+    catch {unset _comp2dx}
+    catch {unset _comp2dims}
+    catch {unset _comp2style}
+    array unset _dataobj2type
+    #
+    # Scan through the components of the field and create
+    # vectors for each part.
+    #
+    array unset _isValidComponent
+    foreach cname [$_field children -type component] {
+        set type ""
+        if { ([$_field element $cname.constant] != "" &&
+              [$_field element $cname.domain] != "") ||
+              [$_field element $cname.xy] != "" } {
+            set type "1D"
+        } elseif { [$_field element $cname.mesh] != "" &&
+                   [$_field element $cname.values] != ""} {
+            set type "points-on-mesh"
+        } elseif { [$_field element $cname.vtk] != ""} {
+            set type "vtk"
+        } elseif {[$_field element $cname.opendx] != ""} {
+            set type "opendx"
+        } elseif {[$_field element $cname.dx] != ""} {
+            set type "dx"
+        } elseif {[$_field element $cname.ucd] != ""} {
+            set type "ucd"
+        } elseif {[$_field element $cname.dicom] != ""} {
+            set type "dicom"
+        }
+        set _comp2style($cname) ""
+        if { $type == "" } {
+            puts stderr "WARNING: Ignoring field component \"$_path.$cname\": no data found."
+            continue
+        }
+        set _type $type
+
+        GetTypeAndSize $cname
+        GetAssociation $cname
+
+        if { $_comp2size($cname) < 1 ||
+             $_comp2size($cname) > 9 } {
+            puts stderr "ERROR: Invalid <elemsize>: $_comp2size($cname)"
+            continue
+        }
+        # Some types have restrictions on number of components
+        if { $_comp2type($cname) == "vectors" &&
+             $_comp2size($cname) != 3 } {
+            puts stderr "ERROR: vectors <elemtype> must have <elemsize> of 3"
+            continue
+        }
+        if { $_comp2type($cname) == "normals" &&
+             $_comp2size($cname) != 3 } {
+            puts stderr "ERROR: normals <elemtype> must have <elemsize> of 3"
+            continue
+        }
+        if { $_comp2type($cname) == "tcoords" &&
+             $_comp2size($cname) > 3 } {
+            puts stderr "ERROR: tcoords <elemtype> must have <elemsize> <= 3"
+            continue
+        }
+        if { $_comp2type($cname) == "scalars" &&
+             $_comp2size($cname) > 4 } {
+            puts stderr "ERROR: scalars <elemtype> must have <elemsize> <= 4"
+            continue
+        }
+        if { $_comp2type($cname) == "colorscalars" &&
+             $_comp2size($cname) > 4 } {
+            puts stderr "ERROR: colorscalars <elemtype> must have <elemsize> <= 4"
+            continue
+        }
+        if { $_comp2type($cname) == "tensors" &&
+             $_comp2size($cname) != 9 } {
+            puts stderr "ERROR: tensors <elemtype> must have <elemsize> of 9"
+            continue
+        }
+
+        if { [$_field element $cname.flow] != "" } {
+            set haveFlow 1
+        } else {
+            set haveFlow 0
+        }
+        set viewer [$_field get "about.view"]
+        if { $viewer != "" } {
+            set _viewer $viewer
+        }
+        if { $_viewer == "" } {
+            if { $_comp2size($cname) > 1 && ! $haveFlow } {
+                set _viewer "glyphs"
+            } elseif { $_comp2size($cname) > 1 && $haveFlow } {
+                set _viewer "flowvis"
+            }
+        }
+
+        if {$type == "1D"} {
+            #
+            # 1D data can be represented as 2 BLT vectors,
+            # one for x and the other for y.
+            #
+            set xv ""
+            set yv ""
+            set _dim 1
+            set val [$_field get $cname.constant]
+            if {$val != ""} {
+                set domain [$_field get $cname.domain]
+                if {$domain == "" || ![info exists _limits($domain)]} {
+                    set z0 0
+                    set z1 $_zmax
+                } else {
+                    foreach {z0 z1} $_limits($domain) { break }
+                }
+                set xv [blt::vector create x$_counter]
+                $xv append $z0 $z1
+
+                foreach {val pcomp} [_getValue $val] break
+                set yv [blt::vector create y$_counter]
+                $yv append $val $val
+
+                if {$pcomp != ""} {
+                    set zm [expr {0.5*($z0+$z1)}]
+                    set _comp2cntls($cname) \
+                        [list $pcomp $zm $val "$val$_units"]
+                }
+            } else {
+                set xydata [$_field get $cname.xy]
+                if {"" != $xydata} {
+                    set xv [blt::vector create x$_counter]
+                    set yv [blt::vector create y$_counter]
+                    set tmp [blt::vector create \#auto]
+                    $tmp set $xydata
+                    $tmp split $xv $yv
+                    blt::vector destroy $tmp
+                }
+            }
+
+            if {$xv != "" && $yv != ""} {
+                # sort x-coords in increasing order
+                $xv sort $yv
+                set _dim 1
+                set _comp2dims($cname) "1D"
+                set _comp2xy($cname) [list $xv $yv]
+                incr _counter
+            }
+        } elseif {$type == "points-on-mesh"} {
+            if { ![BuildPointsOnMesh $cname] } {
+                continue;               # Ignore this component
+            }
+        } elseif {$type == "vtk"} {
+            set contents [$_field get $cname.vtk]
+            if { $contents == "" } {
+                puts stderr "WARNING: No data for \"$_path.$cname.vtk\""
+                continue;               # Ignore this component
+            }
+            ReadVtkDataSet $cname $contents
+            set _comp2vtk($cname) $contents
+            set _comp2style($cname) [$_field get $cname.style]
+            incr _counter
+        } elseif {$type == "dx" || $type == "opendx" } {
+            #
+            # Extract gzipped, base64-encoded OpenDX data
+            #
+            if { $_viewer == "" } {
+                if {$haveFlow} {
+                    set _viewer "flowvis"
+                } else {
+                    global env
+                    if { [info exists env(VTKVOLUME)] } {
+                        set _viewer "vtkvolume"
+                    }
+                    set _viewer "nanovis"
+                }
+            }
+            set data [$_field get -decode no $cname.$type]
+            set contents [Rappture::encoding::decode -as zb64 $data]
+            if { $contents == "" } {
+                puts stderr "WARNING: No data for \"$_path.$cname.$type\""
+                continue;               # Ignore this component
+            }
+            if 0 {
+                set f [open /tmp/$_path.$cname.dx "w"]
+                puts -nonewline $f $contents
+                close $f
+            }
+            # Convert to VTK
+            if { [catch { Rappture::DxToVtk $contents } vtkdata] == 0 } {
+                unset contents
+                # Read back VTK: this will set the field limits and the mesh
+                # dimensions based on the bounds (sets _dim).  We rely on this
+                # conversion for limits even if we send DX data to nanovis.
+                ReadVtkDataSet $cname $vtkdata
+                if 0 {
+                    set f [open /tmp/$_path.$cname.vtk "w"]
+                    puts -nonewline $f $vtkdata
+                    close $f
+                }
+            } else {
+                unset contents
+                # vtkdata variable holds error message
+                puts stderr "Can't parse DX data\n$vtkdata"
+                continue;               # Ignore this component
+            }
+            if { $_alwaysConvertDX ||
+                 ($_viewer != "nanovis" && $_viewer != "flowvis") } {
+                set _type "vtk"
+                set _comp2vtk($cname) $vtkdata
+            } else {
+                set _type "dx"
+                set _comp2dx($cname) $data
+            }
+            unset data
+            unset vtkdata
+            set _comp2style($cname) [$_field get $cname.style]
+            if {$haveFlow} {
+                set _comp2flowhints($cname) \
+                    [Rappture::FlowHints ::\#auto $_field $cname $_units]
+            }
+            incr _counter
+        } elseif { $type == "dicom"} {
+            set contents [$_field get $cname.dicom]
+            if { $contents == "" } {
+                continue;               # Ignore this component
+            }
+            set vtkdata [DicomToVtk $cname $contents]
+            if { $_viewer == "" } {
+                set _viewer [expr {($_dim == 3) ? "vtkvolume" : "vtkimage"}]
+            }
+            set _comp2vtk($cname) $vtkdata
+            set _comp2style($cname) [$_field get $cname.style]
+            incr _counter
+        } elseif { $type == "ucd"} {
+            set contents [$_field get $cname.ucd]
+            if { $contents == "" } {
+                continue;               # Ignore this component
+            }
+            set vtkdata [AvsToVtk $cname $contents]
+            ReadVtkDataSet $cname $vtkdata
+            set _comp2vtk($cname) $vtkdata
+            set _comp2style($cname) [$_field get $cname.style]
+            incr _counter
+        }
+        set _isValidComponent($cname) 1
+        #puts stderr "Field $cname type is: $_type"
+    }
+    if { [array size _isValidComponent] == 0 } {
+        puts stderr "ERROR: All components of field \"$_path\" are invalid."
+        return 0
+    }
+    # Sanity check.  Verify that all components of the field have the same
+    # dimension.
+    set dim ""
+    foreach cname [array names _comp2dims] {
+        if { $dim == "" } {
+            set dim $_comp2dims($cname)
+            continue
+        }
+        if { $dim != $_comp2dims($cname) } {
+            puts stderr "WARNING: A field can't have components of different dimensions: [join [array get _comp2dims] ,]"
+            return 0
+        }
+    }
+
+    # FIXME: about.scalars and about.vectors are temporary.  With views
+    #        the label and units for each field will be specified there.
+    #
+    # FIXME: Test that every <field><component> has the same field names,
+    #        units, components.
+    #
+    # Override what we found in the VTK file with names that the user
+    # selected.  We override the field label and units.
+    foreach { fname label units } [$_field get about.scalars] {
+        if { ![info exists _fld2Name($fname)] } {
+            set _fld2Name($fname) $fname
+            set _fld2Components($fname) 1
+        }
+        set _fld2Label($fname) $label
+        set _fld2Units($fname) $units
+    }
+    foreach { fname label units } [$_field get about.vectors] {
+        if { ![info exists _fld2Name($fname)] } {
+            set _fld2Name($fname) $fname
+            # We're just marking the field as vector (> 1) for now.
+            set _fld2Components($fname) 3
+        }
+        set _fld2Label($fname) $label
+        set _fld2Units($fname) $units
+    }
+    set _isValid 1
+    return 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _getValue <expr>
+#
+# Used internally to get the value for an expression <expr>.  Returns
+# a list of the form {val parameterPath}, where val is the numeric
+# value of the expression, and parameterPath is the XML path to the
+# parameter representing the value, or "" if the <expr> does not
+# depend on any parameters.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Field::_getValue {expr} {
+    #
+    # First, look for the expression among the <parameter>'s
+    # associated with the device.
+    #
+    set found 0
+    foreach pcomp [$_xmlobj children parameters] {
+        set id [$_xmlobj element -as id parameters.$pcomp]
+        if {[string equal $id $expr]} {
+            set val [$_xmlobj get parameters.$pcomp.current]
+            if {"" == $val} {
+                set val [$_xmlobj get parameters.$pcomp.default]
+            }
+            if {"" != $val} {
+                set expr $val
+                set found 1
+                break
+            }
+        }
+    }
+    if {$found} {
+        set pcomp "parameters.$pcomp"
+    } else {
+        set pcomp ""
+    }
+
+    if {$_units != ""} {
+        set expr [Rappture::Units::convert $expr \
+            -context $_units -to $_units -units off]
+    }
+
+    return [list $expr $pcomp]
+}
+
+#
+# flowhints  --
+#
+# Returns the hints associated with a flow vector field.
+#
+itcl::body Rappture::Field::flowhints { cname } {
+    if { [info exists _comp2flowhints($cname)] } {
+        return $_comp2flowhints($cname)
+    }
+    return ""
+}
+
+#
+# style  --
+#
+# Returns the style associated with a component of the field.
+#
+itcl::body Rappture::Field::style { cname } {
+    if { [info exists _comp2style($cname)] } {
+        return $_comp2style($cname)
+    }
+    return ""
+}
+
+#
+# type  --
+#
+# Returns the data storage type of the field.
+#
+# Types:
+#   1D,cloud,dicom,dx,mesh,ucd,unirect2d,unirect3d,vtk
+#
+itcl::body Rappture::Field::type {} {
+    return $_type
+}
+
+#
+# numComponents --
+#
+# Returns the number of components in the field component.
+#
+itcl::body Rappture::Field::numComponents {cname} {
+    set name $cname
+    regsub -all { } $name {_} name
+    if {[info exists _fld2Components($name)] } {
+        return $_fld2Components($name)
+    }
+    return 1;                           # Default to scalar.
+}
+
+itcl::body Rappture::Field::VerifyVtkDataSet { contents } {
+    package require vtk
+
+    set reader $this-datasetreader
+    vtkDataSetReader $reader
+
+    # Write the contents to a file just in case it's binary.
+    set tmpfile file[pid].vtk
+    set f [open "$tmpfile" "w"]
+    fconfigure $f -translation binary -encoding binary
+    puts $f $contents
+    close $f
+
+    $reader SetFileName $tmpfile
+    $reader ReadAllNormalsOn
+    $reader ReadAllTCoordsOn
+    $reader ReadAllScalarsOn
+    $reader ReadAllColorScalarsOn
+    $reader ReadAllVectorsOn
+    $reader ReadAllTensorsOn
+    $reader ReadAllFieldsOn
+    $reader Update
+    file delete $tmpfile
+
+    set dataset [$reader GetOutput]
+    set dataAttrs [$dataset GetPointData]
+    if { $dataAttrs == ""} {
+        puts stderr "WARNING: No point data found in \"$_path\""
+        rename $reader ""
+        return 0
+    }
+    rename $reader ""
+}
+
+#
+# FIXME: Allowing a VTK file to be used as a Field <component> means
+# there can be multiple VTK fields with different association, type, and
+# number of components (array elements) within a single Rappture::Field.
+# This breaks the concept of the Field object since the <component>'s
+# <association>, <elemtype> and <elemsize> can't be set to a single
+# value in this case.
+#
+# Rappture needs a Dataset object with a single Mesh and multiple Fields.
+#
+itcl::body Rappture::Field::ReadVtkDataSet { cname contents } {
+    package require vtk
+
+    set reader $this-datasetreader
+    vtkDataSetReader $reader
+
+    # Write the contents to a file just in case it's binary.
+    set tmpfile file[pid].vtk
+    set f [open "$tmpfile" "w"]
+    fconfigure $f -translation binary -encoding binary
+    puts $f $contents
+    close $f
+
+    $reader SetFileName $tmpfile
+    $reader ReadAllNormalsOn
+    $reader ReadAllTCoordsOn
+    $reader ReadAllScalarsOn
+    $reader ReadAllColorScalarsOn
+    $reader ReadAllVectorsOn
+    $reader ReadAllTensorsOn
+    $reader ReadAllFieldsOn
+    $reader Update
+    file delete $tmpfile
+
+    set dataset [$reader GetOutput]
+    set limits {}
+    foreach {xmin xmax ymin ymax zmin zmax} [$dataset GetBounds] break
+    # Figure out the dimension of the mesh from the bounds.
+    set _dim 0
+    if { $xmax > $xmin } {
+        incr _dim
+    }
+    if { $ymax > $ymin } {
+        incr _dim
+    }
+    if { $zmax > $zmin } {
+        incr _dim
+    }
+    if { $_viewer == "" } {
+        if { $_dim == 2 } {
+            set _viewer contour
+        } else {
+            set _viewer isosurface
+        }
+    }
+    set _comp2dims($cname) ${_dim}D
+    lappend limits x [list $xmin $xmax]
+    lappend limits y [list $ymin $ymax]
+    lappend limits z [list $zmin $zmax]
+    set vmin 0
+    set vmax 1
+    set foundDefaultArray 0
+    set dataAttrs [$dataset GetPointData]
+    if { $dataAttrs == ""} {
+        puts stderr "ERROR: Can't get point data attributes in \"$_path\""
+        rename $reader ""
+        return 0
+    }
+    set numArrays [$dataAttrs GetNumberOfArrays]
+    for {set i 0} {$i < $numArrays} {incr i} {
+        set array [$dataAttrs GetArray $i]
+        set fname [$dataAttrs GetArrayName $i]
+        foreach {min max} [$array GetRange -1] break
+        if {!$foundDefaultArray} {
+            set vmin $min
+            set vmax $max
+            set foundDefaultArray 1
+        }
+        lappend limits $fname [list $min $max]
+        set _fld2Units($fname) ""
+        set _fld2Label($fname) $fname
+        # Let the VTK file override the <elemsize>
+        set _fld2Components($fname) [$array GetNumberOfComponents]
+        lappend _comp2fldName($cname) $fname
+    }
+    # FIXME: Can't properly handle field names that are re-used in point data
+    # cell data and/or field data even though this is permitted in VTK.
+    # For now, we'll use the first field found of point, cell, then field data
+    set dataAttrs [$dataset GetCellData]
+    if { $dataAttrs == ""} {
+        puts stderr "ERROR: Can't get cell data attributes found in \"$_path\""
+        rename $reader ""
+        return 0
+    }
+    set numArrays [$dataAttrs GetNumberOfArrays]
+    for {set i 0} {$i < $numArrays} {incr i} {
+        set array [$dataAttrs GetArray $i]
+        set fname [$dataAttrs GetArrayName $i]
+        foreach {min max} [$array GetRange -1] break
+        if {!$foundDefaultArray} {
+            set vmin $min
+            set vmax $max
+            set foundDefaultArray 1
+        }
+        if {[info exists _fld2Components($fname)]} {
+            puts stderr "WARNING: Re-use of field name within cell data attributes"
+        } else {
+            lappend limits $fname [list $min $max]
+            set _fld2Units($fname) ""
+            set _fld2Label($fname) $fname
+            # Let the VTK file override the <elemsize>
+            set _fld2Components($fname) [$array GetNumberOfComponents]
+            lappend _comp2fldName($cname) $fname
+        }
+    }
+    set dataAttrs [$dataset GetFieldData]
+    if { $dataAttrs == ""} {
+        puts stderr "ERROR: Can't get field data attributes found in \"$_path\""
+        rename $reader ""
+        return 0
+    }
+    set numArrays [$dataAttrs GetNumberOfArrays]
+    for {set i 0} {$i < $numArrays} {incr i} {
+        set array [$dataAttrs GetArray $i]
+        set fname [$dataAttrs GetArrayName $i]
+        foreach {min max} [$array GetRange -1] break
+        if {!$foundDefaultArray} {
+            set vmin $min
+            set vmax $max
+            set foundDefaultArray 1
+        }
+        if {[info exists _fld2Components($fname)]} {
+            puts stderr "WARNING: Re-use of field name within field data attributes"
+        } else {
+            lappend limits $fname [list $min $max]
+            set _fld2Units($fname) ""
+            set _fld2Label($fname) $fname
+            # Let the VTK file override the <elemsize>
+            set _fld2Components($fname) [$array GetNumberOfComponents]
+            lappend _comp2fldName($cname) $fname
+        }
+    }
+    # This is set to the range of the first array found
+    lappend limits v [list $vmin $vmax]
+    set _comp2limits($cname) $limits
+
+    rename $reader ""
+}
+
+#
+# VtkDataSetToXy --
+#
+#        Attempt to convert 0 or 1 dimensional VTK DataSet to XY data (curve).
+#
+itcl::body Rappture::Field::VtkDataSetToXy { dataset } {
+    foreach {xmin xmax ymin ymax zmin zmax} [$dataset GetBounds] break
+    # Only X can have non-zero range.  X can have zero range if there is
+    # only one point
+    if { $ymax > $ymin } {
+        return 0
+    }
+    if { $zmax > $zmin } {
+        return 0
+    }
+    set numPoints [$dataset GetNumberOfPoints]
+    set dataAttrs [$dataset GetPointData]
+    if { $dataAttrs == ""} {
+        puts stderr "WARNING: No point data found"
+        return 0
+    }
+    set array [$dataAttrs GetScalars]
+    if { $array == ""} {
+        puts stderr "WARNING: No scalar point data found"
+        return 0
+    }
+    # Multi-component scalars (e.g. color scalars) are not supported
+    if { [$array GetNumberOfComponents] != 1 } {
+        return 0
+    }
+    set numTuples [$array GetNumberOfTuples]
+    set xv [blt::vector create \#auto]
+    for { set i 0 } { $i < $numPoints } { incr i } {
+        set point [$dataset GetPoint $i]
+        $xv append [lindex $point 0]
+    }
+    set yv [blt::vector create \#auto]
+    for { set i 0 } { $i < $numTuples } { incr i } {
+        $yv append [$array GetComponent $i 0]
+    }
+    $xv sort $yv
+    set _comp2xy($cname) [list $xv $yv]
+    return 1
+}
+
+#
+# vtkdata --
+#
+#        Returns a string representing the mesh and field data for a specific
+#        component in the legacy VTK file format.
+#
+itcl::body Rappture::Field::vtkdata {cname} {
+    if {$cname == "component0"} {
+        set cname "component"
+    }
+    # VTK file data:
+    if { [info exists _comp2vtk($cname)] } {
+        return $_comp2vtk($cname)
+    }
+    # DX: Convert DX to VTK
+    if {[info exists _comp2dx($cname)]} {
+        set data $_comp2dx($cname)
+        set data [Rappture::encoding::decode -as zb64 $data]
+        return [Rappture::DxToVtk $data]
+    }
+    # Points on mesh:  Construct VTK file output.
+    if { [info exists _comp2mesh($cname)] } {
+        # Data is in the form mesh and vector
+        foreach {mesh vector} $_comp2mesh($cname) break
+        set label $cname
+        regsub -all { } $label {_} label
+        append out "# vtk DataFile Version 3.0\n"
+        append out "[hints label]\n"
+        append out "ASCII\n"
+        append out [$mesh vtkdata]
+
+        if { $_comp2assoc($cname) == "pointdata" } {
+            set vtkassoc "POINT_DATA"
+        } elseif { $_comp2assoc($cname) == "celldata" } {
+            set vtkassoc "CELL_DATA"
+        } elseif { $_comp2assoc($cname) == "fielddata" } {
+            set vtkassoc "FIELD"
+        } else {
+            error "unknown association \"$_comp2assoc($cname)\""
+        }
+        set elemSize [numComponents $cname]
+        set numValues [expr [$vector length] / $elemSize]
+        if { $_comp2assoc($cname) == "fielddata" } {
+            append out "$vtkassoc FieldData 1\n"
+            append out "$label $elemSize $numValues double\n"
+        } else {
+            append out "$vtkassoc $numValues\n"
+            if { $_comp2type($cname) == "colorscalars" } {
+                # Must be float for ASCII, unsigned char for BINARY
+                append out "COLOR_SCALARS $label $elemSize\n"
+            } elseif { $_comp2type($cname) == "normals" } {
+                # elemSize must equal 3
+                append out "NORMALS $label double\n"
+            } elseif { $_comp2type($cname) == "scalars" } {
+                # elemSize can be 1, 2, 3 or 4
+                append out "SCALARS $label double $elemSize\n"
+                append out "LOOKUP_TABLE default\n"
+            } elseif { $_comp2type($cname) == "tcoords" } {
+                # elemSize must be 1, 2, or 3
+                append out "TEXTURE_COORDINATES $label $elemSize double\n"
+            } elseif { $_comp2type($cname) == "tensors" } {
+                # elemSize must equal 9
+                append out "TENSORS $label double\n"
+            } elseif { $_comp2type($cname) == "vectors" } {
+                # elemSize must equal 3
+                append out "VECTORS $label double\n"
+            } else {
+                error "unknown element type \"$_comp2type($cname)\""
+            }
+        }
+        append out [$vector range 0 end]
+        append out "\n"
+        if 0 {
+            VerifyVtkDataSet $out
+        }
+        return $out
+    }
+    error "can't find vtkdata for $cname"
+}
+
+#
+# BuildPointsOnMesh --
+#
+#        Parses the field XML description to build a mesh and values vector
+#        representing the field.  Right now we handle the deprecated types
+#        of "cloud", "unirect2d", and "unirect3d" (mostly for flows).
+#
+itcl::body Rappture::Field::BuildPointsOnMesh {cname} {
+    #
+    # More complex 2D/3D data is represented by a mesh
+    # object and an associated vector for field values.
+    #
+    set path [$_field get $cname.mesh]
+    if {[$_xmlobj element $path] == ""} {
+        # Unknown mesh designated.
+        puts stderr "ERROR: Unknown mesh \"$path\""
+        return 0
+    }
+    set element [$_xmlobj element -as type $path]
+    set name $cname
+    regsub -all { } $name {_} name
+    set _fld2Label($name) $name
+    set label [hints zlabel]
+    if { $label != "" } {
+        set _fld2Label($name) $label
+    }
+    set _fld2Units($name) [hints zunits]
+    set _fld2Components($name) $_comp2size($cname)
+    lappend _comp2fldName($cname) $name
+
+    switch -- $element {
+        "cloud" {
+            set mesh [Rappture::Cloud::fetch $_xmlobj $path]
+            set _type cloud
+        }
+        "mesh" {
+            set mesh [Rappture::Mesh::fetch $_xmlobj $path]
+            set _type mesh
+        }
+        "unirect2d" {
+            if { $_viewer == "" } {
+                set _viewer "heightmap"
+            }
+            set mesh [Rappture::Unirect2d::fetch $_xmlobj $path]
+            set _type unirect2d
+        }
+        "unirect3d" {
+            set mesh [Rappture::Unirect3d::fetch $_xmlobj $path]
+            set _type unirect3d
+        }
+    }
+    if { ![$mesh isvalid] } {
+        puts stderr "Mesh is invalid"
+        return 0
+    }
+    set _dim [$mesh dimensions]
+    if { $_dim == 3 } {
+        set dim 0
+        foreach axis {x y z} {
+            foreach {min max} [$mesh limits $axis] {
+                if { $min < $max } {
+                    incr dim
+                }
+            }
+        }
+        if { $dim != 3 } {
+            set _dim $dim
+        }
+    }
+
+    if {$_dim < 2} {
+        puts stderr "ERROR: Can't convert 1D cloud/mesh to curve.  Please use curve output for 1D meshes."
+        return 0
+
+        # 1D data: Create vectors for graph widget.
+        # The prophet tool currently outputs 1D clouds with fields
+        # Band Structure Lab used to (see isosurface1 test in rappture-bat)
+        #
+        # Is there a natural growth path in generating output from 1D to
+        # higher dimensions?  If there isn't, let's kill this in favor
+        # or explicitly using a <curve> instead.  Otherwise, the features
+        # (methods such as xmarkers) of the <curve> need to be added
+        # to the <field>.
+        #
+        #set xv [blt::vector create x$_counter]
+        #set yv [blt::vector create y$_counter]
+
+        # This only works with a Cloud mesh type, since the points method
+        # is not implemented for the Mesh object
+        #$xv set [$mesh points]
+        # TODO: Put field values in yv
+        #set _comp2dims($cname) "1D"
+        #set _comp2xy($cname) [list $xv $yv]
+        #incr _counter
+        #return 1
+    }
+    if {$_dim == 2} {
+        # 2D data: By default surface or contour plot using heightmap widget.
+        set v [blt::vector create \#auto]
+        $v set [$_field get $cname.values]
+        if { [$v length] == 0 } {
+            return 0
+        }
+        if { $_viewer == "" } {
+            set _viewer "contour"
+        }
+        set numFieldValues [$v length]
+        set numComponentsPerTuple [numComponents $cname]
+        if { [expr $numFieldValues % $numComponentsPerTuple] != 0 } {
+            puts stderr "ERROR: Number of field values ($numFieldValues) not divisble by elemsize ($numComponentsPerTuple)"
+            return 0
+        }
+        set numFieldTuples [expr $numFieldValues / $numComponentsPerTuple]
+        if { $_comp2assoc($cname) == "pointdata" } {
+            set numPoints [$mesh numpoints]
+            if { $numPoints != $numFieldTuples } {
+                puts stderr "ERROR: Number of points in mesh ($numPoints) and number of field tuples ($numFieldTuples) don't agree"
+                return 0
+            }
+        } elseif { $_comp2assoc($cname) == "celldata" } {
+            set numCells [$mesh numcells]
+            if { $numCells != $numFieldTuples } {
+                puts stderr "ERROR: Number of cells in mesh ($numCells) and number of field tuples ($numFieldTuples) don't agree"
+                return 0
+            }
+        }
+        set _comp2dims($cname) "[$mesh dimensions]D"
+        set _comp2mesh($cname) [list $mesh $v]
+        set _comp2style($cname) [$_field get $cname.style]
+        if {[$_field element $cname.flow] != ""} {
+            set _comp2flowhints($cname) \
+                [Rappture::FlowHints ::\#auto $_field $cname $_units]
+        }
+        incr _counter
+        array unset _comp2limits $cname
+        foreach axis { x y z } {
+            lappend _comp2limits($cname) $axis [$mesh limits $axis]
+        }
+        set minmax [VectorLimits $v $_comp2size($cname)]
+        lappend _comp2limits($cname) $cname $minmax
+        lappend _comp2limits($cname) v $minmax
+        return 1
+    }
+    if {$_dim == 3} {
+        # 3D data: By default isosurfaces plot using isosurface widget.
+        if { $_viewer == "" } {
+            set _viewer "isosurface"
+        }
+        set v [blt::vector create \#auto]
+        $v set [$_field get $cname.values]
+        if { [$v length] == 0 } {
+            puts stderr "ERROR: No field values"
+            return 0
+        }
+        set numFieldValues [$v length]
+        set numComponentsPerTuple [numComponents $cname]
+        if { [expr $numFieldValues % $numComponentsPerTuple] != 0 } {
+            puts stderr "ERROR: Number of field values ($numFieldValues) not divisble by elemsize ($numComponentsPerTuple)"
+            return 0
+        }
+        set numFieldTuples [expr $numFieldValues / $numComponentsPerTuple]
+        if { $_comp2assoc($cname) == "pointdata" } {
+            set numPoints [$mesh numpoints]
+            if { $numPoints != $numFieldTuples } {
+                puts stderr "ERROR: Number of points in mesh ($numPoints) and number of field tuples ($numFieldTuples) don't agree"
+                return 0
+            }
+        } elseif { $_comp2assoc($cname) == "celldata" } {
+            set numCells [$mesh numcells]
+            if { $numCells != $numFieldTuples } {
+                puts stderr "ERROR: Number of cells in mesh ($numCells) and number of field tuples ($numFieldTuples) don't agree"
+                return 0
+            }
+        }
+        set _comp2dims($cname) "[$mesh dimensions]D"
+        set _comp2mesh($cname) [list $mesh $v]
+        set _comp2style($cname) [$_field get $cname.style]
+        if {[$_field element $cname.flow] != ""} {
+            set _comp2flowhints($cname) \
+                [Rappture::FlowHints ::\#auto $_field $cname $_units]
+        }
+        incr _counter
+        foreach axis { x y z } {
+            lappend _comp2limits($cname) $axis [$mesh limits $axis]
+        }
+        set minmax [VectorLimits $v $_comp2size($cname)]
+        lappend _comp2limits($cname) $cname $minmax
+        lappend _comp2limits($cname) v $minmax
+        return 1
+    }
+    error "unhandled case in field dim=$_dim element=$element"
+}
+
+itcl::body Rappture::Field::AvsToVtk { cname contents } {
+    package require vtk
+
+    set reader $this-datasetreader
+    vtkAVSucdReader $reader
+
+    # Write the contents to a file just in case it's binary.
+    set tmpfile $cname[pid].ucd
+    set f [open "$tmpfile" "w"]
+    fconfigure $f -translation binary -encoding binary
+    puts $f $contents
+    close $f
+    $reader SetFileName $tmpfile
+    $reader Update
+    file delete $tmpfile
+
+    set tmpfile $cname[pid].vtk
+    set writer $this-datasetwriter
+    vtkDataSetWriter $writer
+    $writer SetInputConnection [$reader GetOutputPort]
+    $writer SetFileName $tmpfile
+    $writer SetFileTypeToBinary
+    $writer Write
+    rename $reader ""
+    rename $writer ""
+
+    set f [open "$tmpfile" "r"]
+    fconfigure $f -translation binary -encoding binary
+    set vtkdata [read $f]
+    close $f
+    file delete $tmpfile
+    return $vtkdata
+}
+
+itcl::body Rappture::Field::DicomToVtk { cname path } {
+    package require vtk
+
+    if { ![file exists $path] } {
+        puts stderr "path \"$path\" doesn't exist."
+        return 0
+    }
+
+    if { [file isdir $path] } {
+        set files [glob -nocomplain $path/*.dcm]
+        if { [llength $files] == 0 } {
+            set files [glob -nocomplain $path/*]
+            if { [llength $files] == 0 } {
+                puts stderr "no dicom files found in \"$path\""
+                return 0
+            }
+        }
+
+        #array set data [Rappture::DicomToVtk files $files]
+        array set data [Rappture::DicomToVtk dir $path]
+    } else {
+        array set data [Rappture::DicomToVtk files [list $path]]
+    }
+
+    if 0 {
+        foreach key [array names data] {
+            if {$key == "vtkdata"} {
+                if 0 {
+                    set f [open /tmp/$cname.vtk "w"]
+                    fconfigure $f -translation binary -encoding binary
+                    puts -nonewline $f $data(vtkdata)
+                    close $f
+                }
+            } else {
+                puts stderr "$key = \"$data($key)\""
+            }
+        }
+    }
+
+    ReadVtkDataSet $cname $data(vtkdata)
+    return $data(vtkdata)
+}
+
+itcl::body Rappture::Field::GetTypeAndSize { cname } {
+    array set type2components {
+        "colorscalars"         4
+        "normals"              3
+        "scalars"              1
+        "tcoords"              2
+        "tensors"              9
+        "vectors"              3
+    }
+    set type [$_field get $cname.elemtype]
+    # <extents> is a deprecated synonym for <elemsize>
+    set extents  [$_field get $cname.extents]
+    if { $type == "" } {
+        if { $extents != "" && $extents > 1 } {
+            set type "vectors"
+        } else {
+            set type "scalars"
+        }
+    }
+    if { ![info exists type2components($type)] } {
+        error "unknown <elemtype> \"$type\" in field"
+    }
+    set size [$_field get $cname.elemsize]
+    if { $size == "" } {
+        if { $extents != "" } {
+            set size $extents
+        } else {
+            set size $type2components($type)
+        }
+    }
+    set _comp2type($cname) $type
+    set _comp2size($cname) $size
+}
+
+itcl::body Rappture::Field::GetAssociation { cname } {
+    set assoc [$_field get $cname.association]
+    if { $assoc == "" } {
+        set _comp2assoc($cname) "pointdata"
+        return
+    }
+    switch -- $assoc {
+        "pointdata" - "celldata" - "fielddata" {
+            set _comp2assoc($cname) $assoc
+            return
+        }
+        default {
+            error "unknown field association \"$assoc\""
+        }
+    }
+}
+
+#
+# Compute the per-component limits or limits of vector magnitudes
+#
+itcl::body Rappture::Field::VectorLimits {vector vectorsize {comp -1}} {
+    if {$vectorsize == 1} {
+        set minmax [$vector limits]
+    } else {
+        set len [$vector length]
+        if {[expr $len % $vectorsize] != 0} {
+            error "Invalid vectorsize: $vectorsize"
+        }
+        if {$comp > $vectorsize-1} {
+            error "Invalid vector component: $comp"
+        }
+        set numTuples [expr ($len/$vectorsize)]
+        for {set i 0} {$i < $numTuples} {incr i} {
+            if {$comp >= 0} {
+                set idx [expr ($i * $vectorsize + $comp)]
+                set val [$vector index $idx]
+            } else {
+                set idx [expr ($i * $vectorsize)]
+                set mag 0
+                for {set j 0} {$j < $vectorsize} {incr j} {
+                    set val [$vector index $idx]
+                    set mag [expr ($mag + $val * $val)]
+                    incr idx
+                }
+                set val [expr (sqrt($mag))]
+            }
+            if (![info exists minmax]) {
+                set minmax [list $val $val]
+            } else {
+                if {$val < [lindex $minmax 0]} {
+                    lset minmax 0 $val
+                }
+                if {$val > [lindex $minmax 1]} {
+                    lset minmax 1 $val
+                }
+            }
+        }
+    }
+    return $minmax
+}
Index: /tags/1.6.0/gui/scripts/fieldresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/fieldresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/fieldresult.tcl	(revision 6168)
@@ -0,0 +1,218 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: fieldresult - plot a field in a ResultSet
+#
+#  This widget visualizes fields on meshes.
+#  It is normally used in the ResultViewer to show results from the
+#  run of a Rappture tool.  Use the "add" and "delete" methods to
+#  control the dataobjs showing on the plot.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *FieldResult.width 4i widgetDefault
+option add *FieldResult.height 4i widgetDefault
+option add *FieldResult.foreground black widgetDefault
+option add *FieldResult.controlBackground gray widgetDefault
+option add *FieldResult.controlDarkBackground #999999 widgetDefault
+option add *FieldResult.plotBackground black widgetDefault
+option add *FieldResult.plotForeground white widgetDefault
+option add *FieldResult.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::FieldResult {
+    inherit itk::Widget
+
+    itk_option define -mode mode Mode ""
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method snap {w h}
+    public method parameters {title args} { # do nothing }
+    public method download {option args}
+}
+
+itk::usual FieldResult {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::FieldResult::constructor {args} {
+    array set flags {
+        -mode ""
+    }
+    array set flags $args
+    switch -- $flags(-mode) {
+        "nanovis" {
+            itk_component add renderer {
+                Rappture::NanovisViewer $itk_interior.ren
+            }
+        }
+        "flowvis" {
+            itk_component add renderer {
+                Rappture::FlowvisViewer $itk_interior.ren
+            }
+        }
+        "glyphs" {
+            itk_component add renderer {
+                Rappture::VtkGlyphViewer $itk_interior.ren
+            }
+        }
+        "contour" - "heightmap" {
+            itk_component add renderer {
+                Rappture::VtkHeightmapViewer $itk_interior.ren \
+                    -mode $flags(-mode)
+            }
+        }
+        "isosurface" {
+            itk_component add renderer {
+                Rappture::VtkIsosurfaceViewer $itk_interior.ren
+            }
+        }
+        "streamlines" {
+            itk_component add renderer {
+                Rappture::VtkStreamlinesViewer $itk_interior.ren
+            }
+        }
+        "surface" {
+            itk_component add renderer {
+                Rappture::VtkSurfaceViewer $itk_interior.ren
+            }
+        }
+        "vtkimage" {
+            itk_component add renderer {
+                Rappture::VtkImageViewer $itk_interior.ren
+            }
+        }
+        "vtkviewer" {
+            itk_component add renderer {
+                Rappture::VtkViewer $itk_interior.ren
+            }
+        }
+        "vtkvolume" {
+            itk_component add renderer {
+                Rappture::VtkVolumeViewer $itk_interior.ren
+            }
+        }
+        default {
+            puts stderr "unknown render mode \"$flags(-mode)\""
+        }
+    }
+    pack $itk_component(renderer) -expand yes -fill both
+
+    # can't connect to rendering farm?
+    if {![$itk_component(renderer) isconnected]} {
+        # Should show a message here
+        #destroy $itk_component(renderer)
+    }
+
+    if {![info exists itk_component(renderer)]} {
+        # No valid renderer (or couldn't connect?)
+        # Should show a message here
+    }
+    eval itk_initialize $args
+    #update
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::FieldResult::destructor {} {
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FieldResult::add {dataobj {settings ""}} {
+    if { ![info exists itk_component(renderer)] } {
+        puts stderr "add: no renderer created."
+        return
+    }
+    eval $itk_component(renderer) add $dataobj [list $settings]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FieldResult::get {} {
+    if { ![info exists itk_component(renderer)] } {
+        puts stderr "get: no renderer created."
+        return
+    }
+    return [$itk_component(renderer) get]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FieldResult::delete {args} {
+    if { [info exists itk_component(renderer)] } {
+        eval $itk_component(renderer) delete $args
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<data1> <data2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <data> objects.  This
+# accounts for all objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FieldResult::scale {args} {
+    if { ![info exists itk_component(renderer)] } {
+        puts stderr "scale: no renderer created."
+        return
+    }
+    eval $itk_component(renderer) scale $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FieldResult::download {option args} {
+    if { ![info exists itk_component(renderer)] } {
+        puts stderr "download: no renderer created."
+        return
+    }
+    eval $itk_component(renderer) download $option $args
+}
+
+itcl::body Rappture::FieldResult::snap { w h } {
+    if { ![info exists itk_component(renderer)] } {
+        puts stderr "snap: no renderer created."
+        return
+    }
+    return [$itk_component(renderer) snap $w $h]
+}
Index: /tags/1.6.0/gui/scripts/filechoiceentry.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/filechoiceentry.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/filechoiceentry.tcl	(revision 6168)
@@ -0,0 +1,321 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: FileChoiceEntry - widget for entering a choice of strings
+#
+#  This widget represents a <choice> entry on a control panel.
+#  It is used to choose one of several mutually-exclusive strings.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2005  Purdue Research Foundation
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itcl::class Rappture::FileChoiceEntry {
+    inherit itk::Widget
+
+    itk_option define -state state State "normal"
+
+    private variable _rebuildPending 0
+
+    constructor {owner path args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+
+    protected method Rebuild {}
+    protected method NewValue {}
+    protected method Tooltip {}
+    protected method WhenIdle {}
+    private method DoGlob { cwd patterns }
+    private method Glob { pattern }
+
+    private variable _owner ""    ;# thing managing this control
+    private variable _path ""     ;# path in XML to this number
+    private variable _str2val     ;# maps option label => option value
+}
+
+itk::usual FileChoiceEntry {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textforeground -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileChoiceEntry::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+
+    #
+    # Create the widget and configure it properly based on other
+    # hints in the XML.
+    #
+    itk_component add choice {
+        Rappture::Combobox $itk_interior.choice -editable no
+    }
+    pack $itk_component(choice) -expand yes -fill both
+    bind $itk_component(choice) <<Value>> [itcl::code $this NewValue]
+
+    # First time, parse the <pattern> elements to generate notify callbacks
+    # for each template found.
+    foreach cname [$_owner xml children -type pattern $_path] {
+        set glob [string trim [$_owner xml get $_path.$cname]]
+        # Successively replace each template with its value.
+        while { [regexp -indices {@@[^@]*@@} $glob range] } {
+            foreach {first last} $range break
+            set i1 [expr $first + 2]
+            set i2 [expr $last  - 2]
+            set cpath [string range $glob $i1 $i2]
+            set value [$_owner xml get $cpath.$cname]
+            set glob [string replace $glob $first $last $value]
+            $_owner notify add $this $cpath [itcl::code $this WhenIdle]
+        }
+    }
+    $_owner notify sync
+    eval itk_initialize $args
+    Rebuild
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileChoiceEntry::destructor {} {
+    $_owner notify remove $this
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileChoiceEntry::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+
+    if {[llength $args] == 1} {
+        if {$onlycheck} {
+            # someday we may add validation...
+            return
+        }
+        set newval [lindex $args 0]
+        if {[info exists _str2val($newval)]} {
+            # this is a label -- use it directly
+            $itk_component(choice) value $newval
+            set newval $_str2val($newval)  ;# report the actual value
+        } else {
+            # this is a value -- search for corresponding label
+            foreach str [array names _str2val] {
+                if {$_str2val($str) == $newval} {
+                    $itk_component(choice) value $str
+                    break
+                }
+            }
+        }
+        return $newval
+
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    #
+    # Query the value and return.
+    #
+    set str [$itk_component(choice) value]
+    if {[info exists _str2val($str)]} {
+        return $_str2val($str)
+    }
+    return $str
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileChoiceEntry::label {} {
+    set label [$_owner xml get $_path.about.label]
+    if {"" == $label} {
+        set label "Choice"
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileChoiceEntry::tooltip {} {
+    # query tooltip on-demand based on current choice
+    return "@[itcl::code $this Tooltip]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Used internally to rebuild the contents of this choice widget
+# whenever something that it depends on changes.  Scans through the
+# information in the XML spec and builds a list of choices for the
+# widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileChoiceEntry::Rebuild {} {
+    set _rebuildPending 0
+    # get rid of any existing choices
+    $itk_component(choice) choices delete 0 end
+    array unset _str2val
+    #
+    # Plug in the various options for the choice.
+    #
+    set max 10
+    $_owner notify sync
+    set allfiles {}
+    foreach cname [$_owner xml children -type pattern $_path] {
+        set glob [string trim [$_owner xml get $_path.$cname]]
+        # Successively replace each template with its value.
+        while { [regexp -indices {@@[^@]*@@} $glob range] } {
+            foreach {first last} $range break
+            set i1 [expr $first + 2]
+            set i2 [expr $last  - 2]
+            set cpath [string range $glob $i1 $i2]
+            set value [$_owner xml get $cpath.current]
+            if { $value == "" } {
+                set value [$_owner xml get $cpath.default]
+            }
+            set glob [string replace $glob $first $last $value]
+        }
+        # Replace the template with the substituted value.
+        set files [Glob $glob]
+        set allfiles [concat $allfiles $files]
+    }
+    set first ""
+    set tail ""
+    foreach file $allfiles {
+        set tail [file tail $file]
+        if { $first == "" } {
+            set first $tail
+        }
+        set root [file root $tail]
+        $itk_component(choice) choices insert end $file $tail
+        set _str2val($tail) $file
+        set len [string length $tail]
+        if {$len > $max} { set max $len }
+    }
+    $itk_component(choice) configure -width $max
+    $itk_component(choice) value $tail
+}
+
+# ----------------------------------------------------------------------
+# USAGE: NewValue
+#
+# Invoked automatically whenever the value in the choice changes.
+# Sends a <<Value>> event to notify clients of the change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileChoiceEntry::NewValue {} {
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Tooltip
+#
+# Returns the tooltip for this widget, given the current choice in
+# the selector.  This is normally called by the Rappture::Tooltip
+# facility whenever it is about to pop up a tooltip for this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileChoiceEntry::Tooltip {} {
+    set tip [string trim [$_owner xml get $_path.about.description]]
+    # get the description for the current choice, if there is one
+    set str [$itk_component(choice) value]
+    set path [$itk_component(choice) translate $str]
+    set desc $path
+    if {$path == ""} {
+        set desc [$_owner xml get $_path.about.description]
+    }
+
+    if {[string length $str] > 0 && [string length $desc] > 0} {
+        append tip "\n\n$str:\n$desc"
+    }
+    return $tip
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::FileChoiceEntry::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    $itk_component(choice) configure -state $itk_option(-state)
+}
+
+itcl::body Rappture::FileChoiceEntry::WhenIdle {} {
+    if { !$_rebuildPending } {
+        after 10 [itcl::code $this Rebuild]
+        set _rebuildPending 1
+    }
+}
+
+itcl::body Rappture::FileChoiceEntry::DoGlob { cwd patterns } {
+    set rest [lrange $patterns 1 end]
+    set pattern [file join $cwd [lindex $patterns 0]]
+    set files ""
+    if { [llength $rest] > 0 } {
+        if { [catch {
+            glob -nocomplain -type d $pattern
+        } dirs] != 0 } {
+            puts stderr "can't glob \"$pattern\": $dirs"
+            return
+        }
+        foreach d $dirs {
+            set files [concat $files [DoGlob $d $rest]]
+        }
+    } else {
+        if { [catch {
+            glob -nocomplain $pattern
+        } files] != 0 } {
+            puts stderr "can't glob \"$pattern\": $files"
+            return
+        }
+    }
+    return [lsort -dictionary $files]
+}
+
+#
+# Glob --
+#
+#       Matches a single pattern for files. This differs from the
+#       Tcl glob by
+#
+#       1. Only matches files, not directories.
+#       2. Doesn't stop on errors (e.g. unreadable directories).
+#
+itcl::body Rappture::FileChoiceEntry::Glob { pattern } {
+    return [DoGlob "" [file split $pattern]]
+}
+
Index: /tags/1.6.0/gui/scripts/filelistentry.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/filelistentry.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/filelistentry.tcl	(revision 6168)
@@ -0,0 +1,437 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: FileListEntry - widget for entering a choice of strings
+#
+#  This widget represents a <choice> entry on a control panel.
+#  It is used to choose one of several mutually-exclusive strings.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2005  Purdue Research Foundation
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itk::usual BltTreeView {
+    keep -foreground -cursor
+}
+itk::usual BltScrollset {
+    #empty
+}
+
+itcl::class Rappture::FileListEntry {
+    inherit itk::Widget
+
+    itk_option define -state state State "normal"
+
+    private variable _rebuildPending 0
+    private variable _tree ""
+    private variable _owner ""    ;# thing managing this control
+    private variable _path ""     ;# path in XML to this number
+    private variable _icon ""
+
+    constructor {owner path args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+
+    protected method Rebuild {}
+    protected method NewValue { args }
+    protected method Tooltip {}
+    protected method WhenIdle {}
+    private method DoGlob { cwd patterns }
+    private method Glob { pattern }
+}
+
+itk::usual FileListEntry {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textforeground -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileListEntry::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+    set _tree [blt::tree create]
+
+    #
+    # Create the widget and configure it properly based on other
+    # hints in the XML.
+    #
+    set label [$_owner xml get $_path.about.label]
+    set desc [$_owner xml get $_path.about.description]
+    itk_component add scrollset {
+        blt::scrollset $itk_interior.ss \
+            -xscrollbar $itk_interior.ss.xs \
+            -yscrollbar $itk_interior.ss.ys \
+            -window $itk_interior.ss.tree \
+            -height 100
+    }
+    blt::tk::scrollbar $itk_interior.ss.xs
+    blt::tk::scrollbar $itk_interior.ss.ys
+    itk_component add tree {
+        blt::treeview $itk_component(scrollset).tree -linewidth 0 \
+            -alternatebackground "" \
+            -bg white -selectmode multiple \
+            -highlightthickness 0 \
+            -tree $_tree \
+            -flat yes -separator /  \
+            -selectcommand [itcl::code $this NewValue]
+    }
+    $itk_component(tree) column configure "treeView" -justify left \
+        -weight 1.0 -text "" -pad 0 -borderwidth 0 -edit no
+    pack $itk_component(scrollset) -fill both -expand yes
+
+    blt::table $itk_interior \
+        0,0 $itk_component(scrollset) -fill both
+    bind $itk_component(tree) <<Value>> [itcl::code $this NewValue]
+
+    # Standard ButtonPress-1
+    $itk_component(tree) bind Entry <ButtonPress-1> {
+        Rappture::FileListEntry::SetSelectionAnchor %W current yes set
+        set blt::TreeView::_private(scroll) 1
+    }
+    # Standard B1-Motion
+    $itk_component(tree) bind Entry <B1-Motion> {
+        set blt::TreeView::_private(x) %x
+        set blt::TreeView::_private(y) %y
+        set index [%W nearest %x %y]
+        Rappture::FileListEntry::SetSelectionAnchor %W $index yes set
+    }
+    # Standard ButtonRelease-1
+    $itk_component(tree) button bind all <ButtonRelease-1> {
+        set index [%W nearest %x %y blt::TreeView::_private(who)]
+        if { [%W index current] == $index &&
+             $blt::TreeView::_private(who) == "button" } {
+            %W see -anchor nw current
+            %W toggle current
+        }
+    }
+    # Shift-ButtonPress-1
+    $itk_component(tree) bind Entry <Shift-ButtonPress-1> {
+        Rappture::FileListEntry::SetSelectionAnchor %W current yes set
+        set blt::TreeView::_private(scroll) 1
+    }
+    # Shift-B1-Motion
+    $itk_component(tree) bind Entry <Shift-B1-Motion> {
+        set blt::TreeView::_private(x) %x
+        set blt::TreeView::_private(y) %y
+        set index [%W nearest %x %y]
+        if { [%W cget -selectmode] == "multiple" } {
+            %W selection mark $index
+        } else {
+            Rappture::FileListEntry::SetSelectionAnchor %W $index yes set
+        }
+    }
+    # Shift-ButtonRelease-1
+    $itk_component(tree) bind Entry <Shift-ButtonRelease-1> {
+        if { [%W cget -selectmode] == "multiple" } {
+            %W selection anchor current
+        }
+        after cancel $blt::TreeView::_private(afterId)
+        set blt::TreeView::_private(afterId) -1
+        set blt::TreeView::_private(scroll) 0
+    }
+    $itk_component(tree) bind Entry <Control-ButtonPress-1> {
+        Rappture::FileListEntry::SetSelectionAnchor %W current no toggle
+        set blt::TreeView::_private(scroll) 1
+    }
+    $itk_component(tree) bind Entry <Control-B1-Motion> {
+        set blt::TreeView::_private(x) %x
+        set blt::TreeView::_private(y) %y
+        set index [%W nearest %x %y]
+        if { [%W cget -selectmode] == "multiple" } {
+            %W selection mark $index
+        } else {
+            Rappture::FileListEntry::SetSelectionAnchor %W $index no toggle
+        }
+    }
+    $itk_component(tree) bind Entry <Control-ButtonRelease-1> {
+        if { [%W cget -selectmode] == "multiple" } {
+            %W selection anchor current
+        }
+        after cancel $blt::TreeView::_private(afterId)
+        set blt::TreeView::_private(afterId) -1
+        set blt::TreeView::_private(scroll) 0
+    }
+    # First time, parse the <pattern> elements to generate notify callbacks
+    # for each template found.
+    foreach cname [$_owner xml children -type pattern $_path] {
+        set glob [string trim [$_owner xml get $_path.$cname]]
+        # Successively replace each template with its value.
+        while { [regexp -indices {@@[^@]*@@} $glob range] } {
+            foreach {first last} $range break
+            set i1 [expr $first + 2]
+            set i2 [expr $last  - 2]
+            set cpath [string range $glob $i1 $i2]
+            set value [$_owner xml get $cpath.$cname]
+            set glob [string replace $glob $first $last $value]
+            $_owner notify add $this $cpath [itcl::code $this WhenIdle]
+        }
+    }
+    $_owner notify sync
+    eval itk_initialize $args
+
+    # if the control has an icon, plug it in
+    set str [$_owner xml get $path.about.icon]
+    if {$str != ""} {
+        set _icon [image create picture -data $str]
+    }
+    Rebuild
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileListEntry::destructor {} {
+    blt::tree destroy $_tree
+    $_owner notify remove $this
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileListEntry::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+    if {[llength $args] == 1} {
+        if {$onlycheck} {
+            # someday we may add validation...
+            return
+        }
+        foreach id [$itk_component(tree) curselection] {
+            set path [$_tree get $id "path" ""]
+            set path2id($path) $id
+        }
+        set paths [split $newval ,]
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    #
+    # Query the value and return.
+    #
+    set list {}
+    foreach id [$itk_component(tree) curselection] {
+        set path [$_tree get $id "path" ""]
+        if { $path != "" } {
+            lappend list $path
+        }
+    }
+    return [join $list ,]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileListEntry::label {} {
+    set label [$_owner xml get $_path.about.label]
+    if {"" == $label} {
+        set label "Choice"
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileListEntry::tooltip {} {
+    # query tooltip on-demand based on current choice
+    return "@[itcl::code $this Tooltip]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Used internally to rebuild the contents of this choice widget
+# whenever something that it depends on changes.  Scans through the
+# information in the XML spec and builds a list of choices for the
+# widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileListEntry::Rebuild {} {
+    set _rebuildPending 0
+
+    #
+    # Plug in the various options for the choice.
+    #
+    set max 10
+    $_owner notify sync
+    set allfiles {}
+    foreach cname [$_owner xml children -type pattern $_path] {
+        set glob [string trim [$_owner xml get $_path.$cname]]
+        # Successively replace each template with its value.
+        while { [regexp -indices {@@[^@]*@@} $glob range] } {
+            foreach {first last} $range break
+            set i1 [expr $first + 2]
+            set i2 [expr $last  - 2]
+            set cpath [string range $glob $i1 $i2]
+            set value [$_owner xml get $cpath.current]
+            if { $value == "" } {
+                set value [$_owner xml get $cpath.default]
+            }
+            set glob [string replace $glob $first $last $value]
+        }
+        # Replace the template with the substituted value.
+        set files [Glob $glob]
+        set allfiles [concat $allfiles $files]
+    }
+    set first ""
+    eval $_tree tag add unused [$_tree children root]
+    foreach file $allfiles {
+        set tail [file tail $file]
+        if { $first == "" } {
+            set first $tail
+        }
+        set tail [file root $tail]
+        set id [$_tree index root->"$tail"]
+        if { $id < 0 } {
+            set data [list path $file show 0]
+            set id [$_tree insert root -label $tail -data $data -tag ""]
+        } else {
+            $_tree tag delete unused $id
+        }
+        set len [string length $tail]
+        if {$len > $max} { set max $len }
+    }
+    $itk_component(tree) configure -icons ""
+    $itk_component(tree) entry configure all -icons ""
+    eval $_tree delete [$_tree tag nodes unused]
+    $itk_component(tree) configure -width $max
+    catch {
+        if { ![$itk_component(tree) selection present] } {
+            $itk_component(tree) selection set [$_tree firstchild root]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: NewValue
+#
+# Invoked automatically whenever the value in the choice changes.
+# Sends a <<Value>> event to notify clients of the change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileListEntry::NewValue { args } {
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Tooltip
+#
+# Returns the tooltip for this widget, given the current choice in
+# the selector.  This is normally called by the Rappture::Tooltip
+# facility whenever it is about to pop up a tooltip for this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FileListEntry::Tooltip {} {
+    set tip [string trim [$_owner xml get $_path.about.description]]
+    # get the description for the current choice, if there is one
+    set path ""
+    set desc ""
+    if {$path == ""} {
+        set desc [$_owner xml get $_path.about.description]
+    }
+    set str ""
+    if {[string length $str] > 0 && [string length $desc] > 0} {
+        append tip "\n\n$str:\n$desc"
+    }
+    return $tip
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::FileListEntry::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    #$itk_component(tree) configure -state $itk_option(-state)
+}
+
+itcl::body Rappture::FileListEntry::WhenIdle {} {
+    if { !$_rebuildPending } {
+        after 10 [itcl::code $this Rebuild]
+        set _rebuildPending 1
+    }
+}
+
+proc Rappture::FileListEntry::SetSelectionAnchor { w tagOrId clear how } {
+    set index [$w index $tagOrId]
+    if { $clear } {
+        $w selection clearall
+    }
+    $w see $index
+    $w focus $index
+    $w selection $how $index
+    $w selection anchor $index
+}
+
+itcl::body Rappture::FileListEntry::DoGlob { cwd patterns } {
+    set rest [lrange $patterns 1 end]
+    set pattern [file join $cwd [lindex $patterns 0]]
+    set files ""
+    if { [llength $rest] > 0 } {
+        if { [catch {
+            glob -nocomplain -type d $pattern
+        } dirs] != 0 } {
+            puts stderr "can't glob \"$pattern\": $dirs"
+            return
+        }
+        foreach d $dirs {
+            set files [concat $files [DoGlob $d $rest]]
+        }
+    } else {
+        if { [catch {
+            glob -nocomplain $pattern
+        } files] != 0 } {
+            puts stderr "can't glob \"$pattern\": $files"
+            return
+        }
+    }
+    return $files
+}
+
+#
+# Glob --
+#
+#       Matches a single pattern for files. This differs from the
+#       Tcl glob by
+#
+#       1. Only matches files, not directories.
+#       2. Doesn't stop on errors (e.g. unreadable directories).
+#
+itcl::body Rappture::FileListEntry::Glob { pattern } {
+    return [DoGlob "" [file split $pattern]]
+}
+
Index: /tags/1.6.0/gui/scripts/filexfer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/filexfer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/filexfer.tcl	(revision 6168)
@@ -0,0 +1,397 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: filexfer - support for file transfer with user's desktop
+#
+#  Supports interactions with the filexfer middleware, enabling
+#  Rappture to transfer files to and from the user's desktop.
+#  Files are downloaded by invoking "exportfile", and uploaded by
+#  invoking "importfile".  The middleware handles the rest.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require BLT
+
+namespace eval Rappture { # forward declaration }
+namespace eval Rappture::filexfer {
+    variable enabled 0   ;# set to 1 when middleware is in place
+    variable commands    ;# complete path to exportfile/importfile
+    variable job         ;# used to manage bgexec jobs
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::filexfer::init
+#
+# Called in the main application to see if the filexfer middleware
+# is installed.  Returns 1 if the middleware is installed, and 0
+# otherwise.
+# ----------------------------------------------------------------------
+proc Rappture::filexfer::init {} {
+    variable enabled
+    variable commands
+
+    #
+    # Look for the exportfile/importfile commands and see if
+    # they appear to be working.  If we have both, then this
+    # is "enabled".
+    #
+    foreach op {export import} {
+        set prog "${op}file"
+        set path [auto_execok $prog]
+        if {"" == $path} {
+            foreach dir {/apps/bin /apps/filexfer/bin} {
+                set p [file join $dir $prog]
+                if {[file executable $p]} {
+                    set path $p
+                    break
+                }
+            }
+        }
+        if {[file executable $path]} {
+            # the new filexfer has a --provenance arg for file names
+            set info [exec $path --help  2>@1]
+            if {[regexp -- {--provenance} $info]} {
+                lappend path --provenance
+            }
+            set commands($op) $path
+        } else {
+            return 0
+        }
+    }
+
+    return [set enabled 1]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::filexfer::enabled
+#
+# Clients use this to see if the filexfer stuff is up and running.
+# If so, then the GUI will provide "Download..." and other filexfer
+# options.  If not, then Rappture must be running within an
+# environment that doesn't support it.  As a backup, Rappture provides
+# file load/save operations instead.
+# ----------------------------------------------------------------------
+proc Rappture::filexfer::enabled {} {
+    variable enabled
+    return $enabled
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::filexfer::label upload|download
+#
+# Clients use this to query the proper label for an "upload" or
+# "download" opertion.  These are usually "Upload..." and "Download",
+# but could change to "Load File..." and "Save As..." for applications
+# in desktop mode.
+# ----------------------------------------------------------------------
+proc Rappture::filexfer::label {operation} {
+    switch -- $operation {
+        upload {
+            if {[Rappture::filexfer::enabled]} {
+                return "Upload..."
+            } else {
+                return "Load File..."
+            }
+        }
+        uploadWord {
+            if {[Rappture::filexfer::enabled]} {
+                return "Upload"
+            } else {
+                return "Browse"
+            }
+        }
+        download {
+            if {[Rappture::filexfer::enabled]} {
+                return "Download"
+            } else {
+                return "Save As..."
+            }
+        }
+        downloadWord {
+            if {[Rappture::filexfer::enabled]} {
+                return "Download"
+            } else {
+                return "Save"
+            }
+        }
+        default {
+            error "bad option \"$operation\": should be upload, uploadWord, download, or downloadWord"
+        }
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::filexfer::upload <toolName> <controlList> <callback>
+#
+# Clients use this to prompt the user to upload a file.  The string
+# <toolName> is used to identify the application within the web form.
+# The <controlList> is a list of controls that could be uploaded:
+#
+#   { <id1> <label1> <desc1>  <id2> <label2> <desc2> ... }
+#
+# The user is prompted for each of the controls in <controlList>.
+# If successful, the <callback> is invoked to handle the uploaded
+# information.  If anything goes wrong, the same callback is used
+# to post errors near the widget that invoked this operation.
+#
+# The <id> is usually a Rappture path for the control that is being
+# uploaded into.  It is passed along to the <callback>, so that code
+# knows where to put the result.  If <id> is "@@<dir>", then the file
+# is uploaded into the specified directory <dir> using the name that
+# comes from the remote upload.
+# ----------------------------------------------------------------------
+proc Rappture::filexfer::upload {tool controlList callback} {
+    global env
+    variable enabled
+    variable commands
+    variable job
+
+    if {$enabled} {
+        set cmd $commands(import)
+        if {"" != $tool} {
+            lappend cmd --for "for $tool"
+        }
+
+        set dir ~/data/sessions/$env(SESSION)/spool
+        if {![file exists $dir]} {
+            catch {file mkdir $dir}
+        }
+
+        set i 0
+        foreach {path label desc} $controlList {
+            set file [file join $dir upload[pid]-[incr i]]
+            set file2path($file) $path
+            set file2label($file) $label
+            lappend cmd --label $label $file
+        }
+
+        uplevel #0 [list $callback error "Upload starting...\nA web browser page should pop up on your desktop.  Use that form to handle the upload operation.\n\nIf the upload form doesn't pop up, make sure that you're allowing pop ups from this site.  If it still doesn't pop up, you may be having trouble with the version of Java installed for your browser.  See our Support area for details.\n\nClick anywhere to dismiss this message."]
+
+        set job(output) ""
+        set job(error) ""
+
+        set status [catch {eval \
+            blt::bgexec ::Rappture::filexfer::job(control) \
+              -output ::Rappture::filexfer::job(output) \
+              -error ::Rappture::filexfer::job(error) \
+              $cmd
+        } result]
+
+        if {$status == 0} {
+            set changed ""
+            set errs ""
+            foreach line [split $job(output) \n] {
+                # the new filexfer reports "file <= desktopName"
+                # the old one just reports "file"
+                set remote ""
+                if {![regexp {(.+) +<= +(.+)} $line match file remote]} {
+                    set file [string trim $line]
+                }
+
+                # load the uploaded for this control
+                set status [catch {
+                    set fid [open $file r]
+                    fconfigure $fid -translation binary -encoding binary
+                    set info [read $fid]
+                    close $fid
+                    if {[string match @@* $file2path($file)]} {
+                        if {$remote ne "" && $remote ne "@CLIPBOARD"} {
+                            set dir [string range $file2path($file) 2 end]
+                            if {$dir eq ""} { set dir [pwd] }
+                            set newloc [file join $dir $remote]
+                            file rename -force -- $file $newloc
+                        }
+                    } else {
+                        file delete -force $file
+                    }
+                } result]
+
+                if {$status != 0} {
+                    append errs "Error loading data for \"$file2label($file)\":\n$result\n"
+                } else {
+                    lappend changed $file2path($file)
+                    set cmd [list $callback path $file2path($file) local $file data $info]
+                    if {$remote ne ""} {
+                        lappend cmd remote $remote
+                    }
+                    uplevel #0 $cmd
+                }
+            }
+            if {[llength $changed] == 0} {
+                set errs "The form was empty, so none of your controls were changed.  In order to upload a file, you must select the file name--or enter text into the copy/paste area--before pushing the Upload button."
+            }
+            if {[string length $errs] > 0} {
+                uplevel #0 [list $callback error $errs]
+            }
+        } else {
+            uplevel #0 [list $callback error $job(error)]
+        }
+    } else {
+        #
+        # Filexfer via importfile is disabled.  This tool must be
+        # running in a desktop environment.  Instead of uploading,
+        # perform a "Load File..." operation with a standard file
+        # selection dialog.
+        #
+        set i 0
+        foreach {path label desc} $controlList {
+            set file [tk_getOpenFile -title "Load File: $label"]
+            if {"" != $file} {
+                set cmds {
+                    # try to read first as binary
+                    set fid [open $file r]
+                    fconfigure $fid -encoding binary -translation binary
+                    set info [read $fid]
+                    close $fid
+                    if {![Rappture::encoding::is binary $info]} {
+                        # not binary? then re-read and translate CR/LF
+                        set fid [open $file r]
+                        set info [read $fid]
+                        close $fid
+                    }
+                }
+                if {[catch $cmds err]} {
+                    uplevel #0 [list $callback error "Error loading file [file tail $file]: $err"]
+                } else {
+                    uplevel #0 [list $callback path $path data $info filename $file]
+                }
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::filexfer::download <string> ?<filename>?
+#
+# Clients use this to send a file off to the user.  The <string>
+# is stored in a file called <filename> in the user's spool directory.
+# If there is already a file by that name, then the name is modified
+# to make it unique.  Once the string has been stored in the file,
+# a message is sent to all clients listening, letting them know
+# that the file is available.
+#
+# If anything goes wrong, this function returns a string that should
+# be displayed to the user to explain the problem.
+# ----------------------------------------------------------------------
+proc Rappture::filexfer::download {string {filename "output.txt"}} {
+    global env
+    variable enabled
+    variable commands
+    variable job
+
+    if {$enabled} {
+        # make a spool directory, if we don't have one already
+        set dir ~/data/sessions/$env(SESSION)/spool
+        if {![file exists $dir]} {
+            catch {file mkdir $dir}
+        }
+
+        if {[file exists [file join $dir $filename]]} {
+            #
+            # Find a similar file name that doesn't conflict
+            # with an existing file:  e.g., output2.txt
+            #
+            set root [file rootname $filename]
+            set ext [file extension $filename]
+            set counter 2
+            while {1} {
+                set filename "$root$counter$ext"
+                if {![file exists [file join $dir $filename]]} {
+                    break
+                }
+                incr counter
+            }
+        }
+
+        #
+        # Save the file in the spool directory, then have it
+        # exported.
+        #
+        if {[catch {
+            set file [file join $dir $filename]
+            set fid [open $file w]
+            fconfigure $fid -encoding binary -translation binary
+            puts -nonewline $fid $string
+            close $fid
+        } result]} {
+            return $result
+        }
+
+        set job(output) ""
+        set job(error) ""
+
+        # Make sure we normalize the file name here.  Don't count
+        # on filexfer command understanding tildes.
+        set file [file normalize $file]
+
+        set status [catch {blt::bgexec ::Rappture::filexfer::job(control) \
+            -output ::Rappture::filexfer::job(output) \
+            -error ::Rappture::filexfer::job(error) \
+            $commands(export) --timeout 300 --delete $file} result]
+
+        if {$status != 0} {
+            return $Rappture::filexfer::job(error)
+        }
+    } else {
+        #
+        # Filexfer via exportfile is disabled.  This tool must be
+        # running in a desktop environment.  Instead of downloading,
+        # perform a "Save As..." operation with a standard file
+        # selection dialog.
+        #
+        set file [tk_getSaveFile -title "Save As..." -initialfile $filename]
+        # FIXME: Why is there a grab still pending?
+        set grab [grab current]
+        if { $grab != "" } {
+            grab release $grab
+        }
+        if {"" != $file} {
+            if {[catch {
+                set fid [open $file w]
+                if {[Rappture::encoding::is binary $string]} {
+                    fconfigure $fid -encoding binary -translation binary
+                    puts -nonewline $fid $string
+                } else {
+                    puts $fid $string
+                }
+                close $fid
+            } result]} {
+                return $result
+            }
+        }
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::filexfer::webpage <url>
+#
+# Clients use this to pop up a web page for the specified <url> on
+# the user's desktop.  The <url> should start with http:// or https://.
+# If anything goes wrong, this function beeps.
+# ----------------------------------------------------------------------
+proc Rappture::filexfer::webpage {url} {
+    if {[regexp -nocase {^https?://} $url]} {
+        foreach prog {
+              clientaction
+              /usr/lib/hubzero/clientaction
+              /apps/bin/clientaction
+              /apps/xvnc/bin/clientaction
+              /usr/lib/mw/bin/clientaction
+              ""
+        } {
+            if {"" != [auto_execok $prog]} {
+                break
+            }
+        }
+        if {"" != $prog} {
+            exec $prog url $url &
+            return
+        }
+    }
+    bell
+}
Index: /tags/1.6.0/gui/scripts/flowdial.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/flowdial.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/flowdial.tcl	(revision 6168)
@@ -0,0 +1,592 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: Flowdial - selector, like the dial on a flow
+#
+#  This widget looks like the dial on an old-fashioned car flow.
+#  It draws a series of values along an axis, and allows a selector
+#  to move back and forth to select the values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Flowdial.dialProgressColor #6666cc widgetDefault
+option add *Flowdial.thickness 10 widgetDefault
+option add *Flowdial.length 2i widgetDefault
+option add *Flowdial.knobImage knob widgetDefault
+option add *Flowdial.knobPosition n@middle widgetDefault
+option add *Flowdial.dialOutlineColor black widgetDefault
+option add *Flowdial.dialFillColor white widgetDefault
+option add *Flowdial.lineColor gray widgetDefault
+option add *Flowdial.activeLineColor black widgetDefault
+option add *Flowdial.padding 0 widgetDefault
+option add *Flowdial.valueWidth 10 widgetDefault
+option add *Flowdial.valuePadding 0.1 widgetDefault
+option add *Flowdial.foreground black widgetDefault
+option add *Flowdial.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Flowdial {
+    inherit itk::Widget
+
+    itk_option define -min min Min ""
+    itk_option define -max max Max ""
+    itk_option define -variable variable Variable ""
+
+    itk_option define -thickness thickness Thickness 0
+    itk_option define -length length Length 0
+    itk_option define -padding padding Padding 0
+
+    itk_option define -foreground foreground Foreground "black"
+    itk_option define -dialoutlinecolor dialOutlineColor Color "black"
+    itk_option define -dialfillcolor dialFillColor Color "white"
+    itk_option define -dialprogresscolor dialProgressColor Color ""
+    itk_option define -linecolor lineColor Color "black"
+    itk_option define -activelinecolor activeLineColor Color "black"
+    itk_option define -knobimage knobImage KnobImage ""
+    itk_option define -knobposition knobPosition KnobPosition ""
+
+    itk_option define -font font Font ""
+    itk_option define -valuewidth valueWidth ValueWidth 0
+    itk_option define -valuepadding valuePadding ValuePadding 0
+
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method current {value}
+    public method clear {}
+    public method color {value}
+
+    protected method _redraw {}
+    protected method _click {x y}
+    protected method _navigate {offset}
+    protected method _fixSize {}
+    protected method _fixValue {args}
+
+    private method _current {value}
+    private method ms2rel {value}
+    private method rel2ms {value}
+    private variable _values ""       ;# list of all values on the dial
+    private variable _val2label       ;# maps value => string label(s)
+    private variable _current ""      ;# current value (where pointer is)
+    private variable _variable ""     ;# variable associated with -variable
+    private variable _knob ""         ;# image for knob
+    private variable _spectrum ""     ;# width allocated for values
+    private variable _activecolor ""  ;# width allocated for values
+    private variable _vwidth 0        ;# width allocated for values
+    public variable min 0.0
+    public variable max 1.0
+}
+
+itk::usual Flowdial {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowdial::constructor {args} {
+    itk_component add dial {
+        canvas $itk_interior.dial
+    }
+    pack $itk_component(dial) -expand yes -fill both
+    bind $itk_component(dial) <Configure> [itcl::code $this _redraw]
+
+    if 0 {
+    bind $itk_component(dial) <ButtonPress-1> [itcl::code $this _click %x %y]
+    bind $itk_component(dial) <B1-Motion> [itcl::code $this _click %x %y]
+    bind $itk_component(dial) <ButtonRelease-1> [itcl::code $this _click %x %y]
+    bind $itk_component(hull) <KeyPress-Left> [itcl::code $this _navigate -1]
+    bind $itk_component(hull) <KeyPress-Right> [itcl::code $this _navigate 1]
+    $itk_component(dial) bind  "knob" <Enter> \
+        [list $itk_component(dial) configure -cursor sb_h_double_arrow]
+    $itk_component(dial) bind  "knob" <Leave> \
+        [list $itk_component(dial) configure -cursor ""]
+    }
+    eval itk_initialize $args
+
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowdial::destructor {} {
+    configure -variable ""  ;# remove variable trace
+    after cancel [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: current ?<value>?
+#
+# Clients use this to set a new value for the dial.  Values are always
+# sorted in order along the dial.  If the value is not specified,
+# then it is created automatically based on the number of elements
+# on the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowdial::current {value} {
+    if {"" == $value} {
+        return
+    }
+    _current [ms2rel $value]
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _current ?<value>?
+#
+# Clients use this to set a new value for the dial.  Values are always
+# sorted in order along the dial.  If the value is not specified,
+# then it is created automatically based on the number of elements
+# on the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowdial::_current {relval} {
+    if { $relval < 0.0 } {
+        set relval 0.0
+    }
+    if { $relval > 1.0 } {
+        set relval 1.0
+    }
+    set _current $relval
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+    if { $_variable != "" } {
+        upvar #0 $_variable var
+        set var [rel2ms $_current]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: color <value>
+#
+# Clients use this to query the color associated with a <value>
+# along the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowdial::color {value} {
+    if {"" != $_spectrum} {
+        set frac [expr {double($value-$min)/($max-$min)}]
+        set color [$_spectrum get $frac]
+    } else {
+        if {$value == $_current} {
+            set color $_activecolor
+        } else {
+            set color $itk_option(-linecolor)
+        }
+    }
+    return $color
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Called automatically whenever the widget changes size to redraw
+# all elements within it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowdial::_redraw {} {
+    set c $itk_component(dial)
+    $c delete all
+
+    set fg $itk_option(-foreground)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set p [winfo pixels $c $itk_option(-padding)]
+    set t [expr {$itk_option(-thickness)+1}]
+    set y1 [expr {$h-1}]
+
+    if {"" != $_knob} {
+        set kw [image width $_knob]
+        set kh [image height $_knob]
+
+        switch -- $itk_option(-knobposition) {
+            n@top - nw@top - ne@top {
+                set extra [expr {$t-$kh}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$h-$extra-1}]
+            }
+            n@middle - nw@middle - ne@middle {
+                set extra [expr {int(ceil($kh-0.5*$t))}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$h-$extra-1}]
+            }
+            n@bottom - nw@bottom - ne@bottom {
+                set y1 [expr {$h-$kh-1}]
+            }
+
+            e@top - w@top - center@top -
+            e@bottom - w@bottom - center@bottom {
+                set extra [expr {int(ceil(0.5*$kh))}]
+                set y1 [expr {$h-$extra-1}]
+            }
+            e@middle - w@middle - center@middle {
+                set extra [expr {int(ceil(0.5*($kh-$t)))}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$h-$extra-1}]
+            }
+
+            s@top - sw@top - se@top -
+            s@middle - sw@middle - se@middle -
+            s@bottom - sw@bottom - se@bottom {
+                set y1 [expr {$h-2}]
+            }
+        }
+    }
+    set y0 [expr {$y1-$t}]
+    set x0 [expr {$p+1}]
+    set x1 [expr {$w-$_vwidth-$p-4}]
+
+    # draw the background rectangle
+    $c create rectangle $x0 $y0 $x1 $y1 \
+        -outline $itk_option(-dialoutlinecolor) \
+        -fill $itk_option(-dialfillcolor)
+
+    # draw the optional progress bar, from start to current
+    if {"" != $itk_option(-dialprogresscolor) } {
+        set xx1 [expr {$_current*($x1-$x0) + $x0}]
+        $c create rectangle [expr {$x0+1}] [expr {$y0+3}] $xx1 [expr {$y1-2}] \
+            -outline "" -fill $itk_option(-dialprogresscolor)
+    }
+
+    # draw lines for all values
+    set x [expr {$_current*($x1-$x0) + $x0}]
+    if {"" != $_spectrum} {
+        set color [$_spectrum get $_current]
+    } else {
+        set color $_activecolor
+        set thick 3
+        if {"" != $color} {
+            $c create line $x [expr {$y0+1}] $x $y1 -fill $color -width $thick
+        }
+    }
+    regexp {([nsew]+|center)@} $itk_option(-knobposition) match anchor
+    switch -glob -- $itk_option(-knobposition) {
+        *@top    { set kpos $y0 }
+        *@middle { set kpos [expr {int(ceil(0.5*($y1+$y0)))}] }
+        *@bottom { set kpos $y1 }
+    }
+    $c create image $x $kpos -anchor $anchor -image $_knob -tags "knob"
+
+    # if the -valuewidth is > 0, then make room for the value
+    set vw $itk_option(-valuewidth)
+    if {$vw > 0 && "" != $_current} {
+        set str [lindex $_val2label($_current) 0]
+        if {[string length $str] >= $vw} {
+            set str "[string range $str 0 [expr {$vw-3}]]..."
+        }
+
+        set dy [expr {([font metrics $itk_option(-font) -linespace]
+                        - [font metrics $itk_option(-font) -ascent])/2}]
+
+        set id [$c create text [expr {$x1+4}] [expr {($y1+$y0)/2+$dy}] \
+            -anchor w -text $str -font $itk_option(-font) -foreground $fg]
+        foreach {x0 y0 x1 y1} [$c bbox $id] break
+        set x0 [expr {$x0 + 10}]
+
+        # set up a tooltip so you can mouse over truncated values
+        Rappture::Tooltip::text $c [lindex $_val2label($_current) 0]
+        $c bind $id <Enter> \
+            [list ::Rappture::Tooltip::tooltip pending %W +$x0,$y1]
+        $c bind $id <Leave> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+        $c bind $id <ButtonPress> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+        $c bind $id <KeyPress> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _click <x> <y>
+#
+# Called automatically whenever the user clicks or drags on the widget
+# to select a value.  Moves the current value to the one nearest the
+# click point.  If the value actually changes, it generates a <<Value>>
+# event to notify clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowdial::_click {x y} {
+    set c $itk_component(dial)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set x0 1
+    set x1 [expr {$w-$_vwidth-4}]
+    focus $itk_component(hull)
+    if {$x >= $x0 && $x <= $x1} {
+        current [rel2ms [expr double($x - $x0) / double($x1 - $x0)]]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _navigate <offset>
+#
+# Called automatically whenever the user presses left/right keys
+# to nudge the current value left or right by some <offset>.  If the
+# value actually changes, it generates a <<Value>> event to notify
+# clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowdial::_navigate {offset} {
+    set index [lsearch -exact $_values $_current]
+    if {$index >= 0} {
+        incr index $offset
+        if {$index >= [llength $_values]} {
+            set index [expr {[llength $_values]-1}]
+        } elseif {$index < 0} {
+            set index 0
+        }
+
+        set newval [lindex $_values $index]
+        if {$newval != $_current} {
+            current $newval
+            _redraw
+
+            event generate $itk_component(hull) <<Value>>
+        }
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+#
+# Used internally to compute the overall size of the widget based
+# on the -thickness and -length options.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowdial::_fixSize {} {
+    set h [winfo pixels $itk_component(hull) $itk_option(-thickness)]
+
+    if {"" != $_knob} {
+        set kh [image height $_knob]
+
+        switch -- $itk_option(-knobposition) {
+            n@top - nw@top - ne@top -
+            s@bottom - sw@bottom - se@bottom {
+                if {$kh > $h} { set h $kh }
+            }
+            n@middle - nw@middle - ne@middle -
+            s@middle - sw@middle - se@middle {
+                set h [expr {int(ceil(0.5*$h + $kh))}]
+            }
+            n@bottom - nw@bottom - ne@bottom -
+            s@top - sw@top - se@top {
+                set h [expr {$h + $kh}]
+            }
+            e@middle - w@middle - center@middle {
+                set h [expr {(($h > $kh) ? $h : $kh) + 1}]
+            }
+            n@middle - ne@middle - nw@middle -
+            s@middle - se@middle - sw@middle {
+                set extra [expr {int(ceil($kh-0.5*$h))}]
+                if {$extra < 0} { set extra 0 }
+                set h [expr {$h+$extra}]
+            }
+        }
+    }
+    incr h 1
+
+    set w [winfo pixels $itk_component(hull) $itk_option(-length)]
+
+    # if the -valuewidth is > 0, then make room for the value
+    if {$itk_option(-valuewidth) > 0} {
+        set charw [font measure $itk_option(-font) "n"]
+        set _vwidth [expr {$itk_option(-valuewidth)*$charw}]
+        set w [expr {$w+$_vwidth+4}]
+    } else {
+        set _vwidth 0
+    }
+
+    $itk_component(dial) configure -width $w -height $h
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue ?<name1> <name2> <op>?
+#
+# Invoked automatically whenever the -variable associated with this
+# widget is modified.  Copies the value to the current settings for
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowdial::_fixValue {args} {
+    if {"" == $itk_option(-variable)} {
+        return
+    }
+    upvar #0 $itk_option(-variable) var
+    _current [ms2rel $var]
+}
+
+itcl::body Rappture::Flowdial::ms2rel { value } {
+    if { $max > $min } {
+        return [expr {($value - $min) / ($max - $min)}]
+    }
+    return 0
+}
+
+itcl::body Rappture::Flowdial::rel2ms { value } {
+    return [expr $value * ($max - $min) + $min]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -thickness
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::thickness {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -length
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::length {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -font
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::font {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -valuewidth
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::valuewidth {
+    if {![string is integer $itk_option(-valuewidth)]} {
+        error "bad value \"$itk_option(-valuewidth)\": should be integer"
+    }
+    _fixSize
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -foreground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::foreground {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialoutlinecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::dialoutlinecolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialfillcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::dialfillcolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialprogresscolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::dialprogresscolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -linecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::linecolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -activelinecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::activelinecolor {
+    set val $itk_option(-activelinecolor)
+    if {[catch {$val isa ::Rappture::Spectrum} valid] == 0 && $valid} {
+        set _spectrum $val
+        set _activecolor ""
+    } elseif {[catch {winfo rgb $itk_component(hull) $val}] == 0} {
+        set _spectrum ""
+        set _activecolor $val
+    } elseif {"" != $val} {
+        error "bad value \"$val\": should be Spectrum object or color"
+    }
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -knobimage
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::knobimage {
+    if {[regexp {^image[0-9]+$} $itk_option(-knobimage)]} {
+        set _knob $itk_option(-knobimage)
+    } elseif {"" != $itk_option(-knobimage)} {
+        set _knob [Rappture::icon $itk_option(-knobimage)]
+    } else {
+        set _knob ""
+    }
+    _fixSize
+
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -knobposition
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::knobposition {
+    if {![regexp {^([nsew]+|center)@(top|middle|bottom)$} $itk_option(-knobposition)]} {
+        error "bad value \"$itk_option(-knobposition)\": should be anchor@top|middle|bottom"
+    }
+    _fixSize
+
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -padding
+# This adds padding on left/right side of dial background.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::padding {
+    if {[catch {winfo pixels $itk_component(hull) $itk_option(-padding)}]} {
+        error "bad value \"$itk_option(-padding)\": should be size in pixels"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -valuepadding
+# This shifts min/max limits in by a fraction of the overall size.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::valuepadding {
+    if {![string is double $itk_option(-valuepadding)]
+          || $itk_option(-valuepadding) < 0} {
+        error "bad value \"$itk_option(-valuepadding)\": should be >= 0.0"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -variable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Flowdial::variable {
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace remove variable var write [itcl::code $this _fixValue]
+    }
+
+    set _variable $itk_option(-variable)
+
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace add variable var write [itcl::code $this _fixValue]
+
+        # sync to the current value of this variable
+        if {[info exists var]} {
+            _fixValue
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/flowhints.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/flowhints.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/flowhints.tcl	(revision 6168)
@@ -0,0 +1,231 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: flowhints - represents a uniform rectangular 2-D mesh.
+#
+#  This object represents one field in an XML description of a device.
+#  It simplifies the process of extracting data vectors that represent
+#  the field.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+package require Itcl
+package require BLT
+
+namespace eval Rappture {
+    # empty
+}
+
+itcl::class Rappture::FlowHints {
+    constructor {field cname units} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method hints {}     { return [array get _hints] }
+    public method particles {} { return $_particles }
+    public method boxes {}     { return $_boxes }
+
+    private method ConvertUnits { value }
+    private method GetAxis { obj path varName }
+    private method GetBoolean { obj path varName }
+    private method GetCorner { obj path varName }
+    private method GetPosition { obj path varName }
+    private method GetSize { obj path varName }
+
+    private variable _boxes "";         # List of boxes for the flow.
+    private variable _particles "";     # List of particle injection planes.
+    private variable _hints;            # Array of settings for the flow.
+    private variable _units ""
+}
+
+# ----------------------------------------------------------------------
+# Constructor
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowHints::constructor {field cname units} {
+    if {[$field element $cname.flow] == ""} {
+        puts stderr "no flow entry in $cname"
+        return
+    }
+    array set _hints {
+        "axis"          "x"
+        "description"   ""
+        "outline"       "on"
+        "position"      "0.0%"
+        "streams"       "on"
+        "arrows"        "off"
+        "volume"        "on"
+        "duration"      "1:00"
+        "speed"         "1x"
+    }
+    set _units $units
+    set f [$field element -as object $cname.flow]
+    set _hints(name) [$field element -as id $cname.flow]
+    foreach child [$f children] {
+        set value [$f get $child]
+        switch -glob -- $child {
+            "label"       { set _hints(label) $value }
+            "description" { set _hints(description) $value }
+            "outline"     { GetBoolean $f $child _hints(outline) }
+            "volume"      { GetBoolean $f $child _hints(volume) }
+            "streams"     { GetBoolean $f $child _hints(streams) }
+            "arrows"      { GetBoolean $f $child _hints(arrows) }
+            "axis"        { GetAxis $f  $child _hints(axis) }
+            "speed"       { set _hints(speed) $value }
+            "duration"    { set _hints(duration) $value }
+            "position"    { GetPosition $f $child _hints(position) }
+            "particles*" {
+                array unset data
+                array set data {
+                    "axis"          "x"
+                    "color"         "blue"
+                    "description"   ""
+                    "hide"          "no"
+                    "label"         ""
+                    "position"      "0.0%"
+                    "size"          "1.2"
+                }
+                set p [$f element -as object $child]
+                set data(name) [$f element -as id $child]
+                foreach child [$p children] {
+                    set value [$p get $child]
+                    switch -exact -- $child {
+                        "axis"        { GetAxis $p axis data(axis) }
+                        "color"       { set data(color) $value }
+                        "description" { set data(description) $value }
+                        "hide"        { GetBoolean $p hide data(hide) }
+                        "label"       { set data(label) $value }
+                        "position"    { GetPosition $p position data(position)}
+                        "size"        { GetSize $p size data(size)}
+                    }
+                }
+                if { $data(label) == "" } {
+                    set data(label) $data(name)
+                }
+                itcl::delete object $p
+                lappend _particles [array get data]
+            }
+            "box*" {
+                array unset data
+                array set data {
+                    "color"         "green"
+                    "description"   ""
+                    "hide"          "no"
+                    "label"         ""
+                    "linewidth"     "2"
+                }
+                set b [$f element -as object $child]
+                set name [$f element -as id $child]
+                set count 0
+                set data(name) $name
+                set data(color) [$f get $child.color]
+                foreach child [$b children] {
+                    set value [$b get $child]
+                    switch -glob -- $child {
+                        "color"       { set data(color) $value }
+                        "description" { set data(description) $value }
+                        "hide"        { GetBoolean $b hide data(hide) }
+                        "linewidth"   { GetSize $b linewidth data(linewidth) }
+                        "label"       { set data(label) $value }
+                        "corner*" {
+                            incr count
+                            GetCorner $b $child data(corner$count)
+                        }
+                    }
+                }
+                if { $data(label) == "" } {
+                    set data(label) $data(name)
+                }
+                itcl::delete object $b
+                lappend _boxes [array get data]
+            }
+        }
+    }
+    itcl::delete  object $f
+}
+
+itcl::body Rappture::FlowHints::ConvertUnits { value } {
+    set cmd Rappture::Units::convert
+    set n  [scan $value "%g%s" number suffix]
+    if { $n == 2 } {
+        if { $suffix == "%" } {
+            return $value
+        } else {
+            return [$cmd $number -context $suffix -to $_units -units off]
+        }
+    } elseif { [scan $value "%g" number]  == 1 } {
+        if { $_units == "" } {
+            return $number
+        }
+        return [$cmd $number -context $_units -to $_units -units off]
+    }
+    return ""
+}
+
+itcl::body Rappture::FlowHints::GetPosition { obj path varName } {
+    set value [$obj get $path]
+    set pos [ConvertUnits $value]
+    if { $pos == "" } {
+        puts stderr "can't convert units \"$value\" of \"$path\""
+    }
+    upvar $varName position
+    set position $pos
+}
+
+itcl::body Rappture::FlowHints::GetAxis { obj path varName } {
+    set value [$obj get $path]
+    set value [string tolower $value]
+    switch -- $value {
+        "x" - "y" - "z" {
+            upvar $varName axis
+            set axis $value
+            return
+        }
+    }
+    puts stderr "invalid axis \"$value\" in \"$path\""
+}
+
+itcl::body Rappture::FlowHints::GetCorner { obj path varName } {
+    set value [$obj get $path]
+    set coords ""
+    if { [llength $value] != 3 } {
+        puts stderr "wrong number of coordinates \"$value\" in \"$path\""
+        return ""
+    }
+    foreach coord $value {
+        set v [ConvertUnits $coord]
+        if { $v == "" } {
+            puts stderr "can't convert units \"$value\" of \"$path\""
+            return ""
+        }
+        lappend coords $v
+    }
+    upvar $varName corner
+    set corner $coords
+}
+
+itcl::body Rappture::FlowHints::GetBoolean { obj path varName } {
+    set value [$obj get $path]
+    if { [string is boolean $value] } {
+        upvar $varName bool
+        set bool [expr $value ? 1 : 0]
+        return
+    }
+    puts stderr "invalid boolean \"$value\" in \"$path\""
+}
+
+itcl::body Rappture::FlowHints::GetSize { obj path varName } {
+    set string [$obj get $path]
+    if { [scan $string "%d" value] != 1 || $value < 0 } {
+        puts stderr "can't get size \"$string\" of \"$path\""
+        return
+    }
+    upvar $varName size
+    set size $value
+}
Index: /tags/1.6.0/gui/scripts/flowspeed.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/flowspeed.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/flowspeed.tcl	(revision 6168)
@@ -0,0 +1,181 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: spinint - spinner for integer values
+#
+#  This widget is a spinner with up/down arrows for managing integer
+#  values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Flowspeed.width 5 widgetDefault
+option add *Flowspeed.textBackground white widgetDefault
+
+blt::bitmap define Flowspeed-up {
+#define up_width 8
+#define up_height 4
+static unsigned char up_bits[] = {
+   0x10, 0x38, 0x7c, 0xfe};
+}
+
+blt::bitmap define Flowspeed-down {
+#define arrow_width 8
+#define arrow_height 4
+static unsigned char arrow_bits[] = {
+   0xfe, 0x7c, 0x38, 0x10};
+}
+
+itcl::class Rappture::Flowspeed {
+    inherit itk::Widget
+
+    itk_option define -min min Min ""
+    itk_option define -max max Max ""
+    itk_option define -delta delta Delta 1
+
+    constructor {args} { # defined below }
+
+    public method value {args}
+    public method bump {{delta up}}
+    protected method _validate {char}
+    protected variable _value ""
+}
+
+itk::usual Flowspeed {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textforeground -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowspeed::constructor {args} {
+    itk_component add entry {
+        entry $itk_interior.entry
+    } {
+        usual
+        keep -width
+        rename -background -textbackground textBackground Background
+        rename -foreground -textforeground textForeground Foreground
+        rename -highlightbackground -background background Background
+    }
+    pack $itk_component(entry) -side left -expand yes -fill x
+
+    bind $itk_component(entry) <KeyPress> \
+        [itcl::code $this _validate %A]
+    bind $itk_component(entry) <Return> \
+        "$this value \[$itk_component(entry) get\]"
+    bind $itk_component(entry) <KP_Enter> \
+        "$this value \[$itk_component(entry) get\]"
+    bind $itk_component(entry) <KeyPress-Tab> \
+        "$this value \[$itk_component(entry) get\]"
+
+    itk_component add controls {
+        frame $itk_interior.cntls
+    }
+    pack $itk_component(controls) -side right
+
+    itk_component add up {
+        button $itk_component(controls).spinup -bitmap Flowspeed-up \
+            -borderwidth 1 -relief raised -highlightthickness 0 \
+            -command [itcl::code $this bump up]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    pack $itk_component(up) -side top -expand yes -fill both
+
+    itk_component add down {
+        button $itk_component(controls).spindn -bitmap Flowspeed-down \
+            -borderwidth 1 -relief raised -highlightthickness 0 \
+            -command [itcl::code $this bump down]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    pack $itk_component(down) -side bottom -expand yes -fill both
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowspeed::value {args} {
+    if {[llength $args] == 1} {
+        set string [lindex $args 0]
+        if { [regexp {^ *([0-9]+)x *$} $string match newval] } {
+        } elseif { [regexp {^ *([0-9]+) *$} $string match newval] } {
+        } else {
+            bell
+            return
+        }
+        if {"" != $newval} {
+            if {"" != $itk_option(-min) && $newval < $itk_option(-min)} {
+                set newval $itk_option(-min)
+            }
+            if {"" != $itk_option(-max) && $newval > $itk_option(-max)} {
+                set newval $itk_option(-max)
+            }
+        }
+        set _value $newval
+        $itk_component(entry) delete 0 end
+        $itk_component(entry) insert 0 ${newval}x
+        after 10 \
+            [list catch [list event generate $itk_component(hull) <<Value>>]]
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?newval?\""
+    }
+    return $_value
+}
+
+# ----------------------------------------------------------------------
+# USAGE: bump ?<delta>?
+#
+# Used internally when you click on the up/down arrows.  Clients
+# can also use it directly to bump values up/down.  The optional
+# <delta> can be an integer value or the keyword "up" or "down".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowspeed::bump {{delta up}} {
+    if {"up" == $delta} {
+        set delta $itk_option(-delta)
+    } elseif {"down" == $delta} {
+        set delta [expr {-$itk_option(-delta)}]
+    } elseif {![string is integer $delta]} {
+        error "bad delta \"$delta\": should be up, down, or integer"
+    }
+
+    set val [$itk_component(entry) get]
+    if {$val == ""} {
+        set val 0
+    }
+    value [expr {$_value+$delta}]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _validate <char>
+#
+# Validates each character as it is typed into the spinner.
+# If the <char> is not a digit, then this procedure beeps and
+# prevents the character from being inserted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Flowspeed::_validate {char} {
+    if {[string match "\[ -~\]" $char]} {
+        if {![string match "\[0-9\]" $char]} {
+            bell
+            return -code break
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/flowvisviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/flowvisviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/flowvisviewer.tcl	(revision 6168)
@@ -0,0 +1,2987 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: flowvisviewer - 3D flow rendering
+#
+#  This widget performs volume and flow rendering on 3D vector datasets.
+#  It connects to the Nanovis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+package require Img
+
+option add *FlowvisViewer.width 5i widgetDefault
+option add *FlowvisViewer*cursor crosshair widgetDefault
+option add *FlowvisViewer.height 4i widgetDefault
+option add *FlowvisViewer.foreground black widgetDefault
+option add *FlowvisViewer.controlBackground gray widgetDefault
+option add *FlowvisViewer.controlDarkBackground #999999 widgetDefault
+option add *FlowvisViewer.plotBackground black widgetDefault
+option add *FlowvisViewer.plotForeground white widgetDefault
+option add *FlowvisViewer.plotOutline gray widgetDefault
+option add *FlowvisViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc FlowvisViewer_init_resources {} {
+    Rappture::resources::register \
+        nanovis_server Rappture::FlowvisViewer::SetServerList
+}
+
+itcl::class Rappture::FlowvisViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+    itk_option define -plotoutline plotOutline PlotOutline ""
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "nanovis" $namelist
+    }
+    public method add {dataobj {settings ""}}
+    public method camera {option args}
+    public method delete {args}
+    public method disconnect {}
+    public method download {option args}
+    public method flow {option}
+    public method get {args}
+    public method isconnected {}
+    public method limits { tf }
+    public method overMarker { m x }
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method removeDuplicateMarker { m x }
+    public method scale {args}
+    public method updateTransferFunctions {}
+
+    # The following methods are only used by this class.
+    private method AddIsoMarker { x y }
+    private method AdjustSetting {what {value ""}}
+    private method BuildCameraTab {}
+    private method BuildCutplanesTab {}
+    private method BuildDownloadPopup { widget command }
+    private method BuildViewTab {}
+    private method BuildVolumeComponents {}
+    private method BuildVolumeTab {}
+    private method ComputeTransferFunction { tf }
+    private method Connect {}
+    private method CurrentDatasets {{what -all}}
+    private method Disconnect {}
+    private method DoResize {}
+    private method DrawLegend { tf }
+    private method EventuallyGoto { nSteps }
+    private method EventuallyRedrawLegend { }
+    private method EventuallyResize { w h }
+    private method FixLegend {}
+    private method GetDatasetsWithComponent { cname }
+    private method GetFlowInfo { widget }
+    private method GetImage { args }
+    private method GetMovie { widget width height }
+    private method GetPngImage { widget width height }
+    private method GetVtkData { args }
+    private method InitSettings { args }
+    private method NameTransferFunction { dataobj comp }
+    private method Pan {option x y}
+    private method PanCamera {}
+    private method ParseLevelsOption { tf levels }
+    private method ParseMarkersOption { tf markers }
+    private method QuaternionToView { q } {
+        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
+    }
+    private method Rebuild {}
+    private method ReceiveData { args }
+    private method ReceiveImage { args }
+    private method ReceiveLegend { tf vmin vmax size }
+    private method Rotate {option x y}
+    private method SendFlowCmd { dataobj comp nbytes numComponents }
+    private method SendTransferFunctions {}
+    private method SetOrientation { side }
+    private method Slice {option args}
+    private method SlicerTip {axis}
+    private method ViewToQuaternion {} {
+        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
+    }
+    private method WaitIcon { option widget }
+    private method Zoom {option}
+    private method arrows { tag name }
+    private method box { tag name }
+    private method millisecs2str { value }
+    private method particles { tag name }
+    private method str2millisecs { value }
+    private method streams { tag name }
+
+    private variable _arcball ""
+    private variable _dlist ""         ;# list of data objects
+    private variable _obj2ovride       ;# maps dataobj => style override
+    private variable _serverDatasets   ;# contains all the dataobj-component
+                                       ;# to volumes in the server
+    private variable _recvdDatasets    ;# list of data objs to send to server
+    private variable _dataset2style    ;# maps dataobj-component to transfunc
+    private variable _style2datasets   ;# maps tf back to list of
+                                       ;# dataobj-components using the tf.
+    private variable _dataset2flow     ;# Maps dataobj-component to a flow.
+
+    private variable _reset 1          ;# Connection to server has been reset.
+    private variable _click            ;# Info used for rotate operations.
+    private variable _limits           ;# Autoscale min/max for all axes
+    private variable _view             ;# View params for 3D view
+    private variable _isomarkers       ;# array of isosurface level values 0..1
+    private variable _settings
+    private variable _activeTf ""      ;# Currently active transfer function
+    private variable _first ""         ;# This is the topmost volume.
+    private variable _volcomponents    ;# Maps component name to list of
+                                       ;# dataobj-component tags
+    private variable _componentsList   ;# List of components found
+    private variable _nextToken 0
+    private variable _icon 0
+    private variable _flow
+    private variable _width 0
+    private variable _height 0
+    private variable _resizePending 0
+    private variable _resizeLegendPending 0
+    private variable _gotoPending 0
+
+    private common _downloadPopup      ;# download options from popup
+    private common _hardcopy
+}
+
+itk::usual FlowvisViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::constructor {args} {
+    set _serverType "nanovis"
+
+    #DebugOn
+    EnableWaitDialog 900
+
+    # Rebuild event
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Legend event
+    $_dispatcher register !legend
+    $_dispatcher dispatch $this !legend "[itcl::code $this FixLegend]; list"
+
+    # Send transfer functions event
+    $_dispatcher register !send_transfunc
+    $_dispatcher dispatch $this !send_transfunc \
+        "[itcl::code $this SendTransferFunctions]; list"
+
+    $_dispatcher register !play
+    $_dispatcher dispatch $this !play "[itcl::code $this flow next]; list"
+
+    $_dispatcher register !goto
+    $_dispatcher dispatch $this !goto "[itcl::code $this flow goto2]; list"
+
+    $_dispatcher register !movietimeout
+    $_dispatcher register !waiticon
+
+    set _flow(state) 0
+
+    array set _downloadPopup {
+        format vtk
+    }
+    #
+    # Populate parser with commands handle incoming requests
+    #
+    $_parser alias image [itcl::code $this ReceiveImage]
+    $_parser alias legend [itcl::code $this ReceiveLegend]
+    $_parser alias data [itcl::code $this ReceiveData]
+
+    # Initialize the view to some default parameters.
+    array set _view {
+        -qw       0.853553
+        -qx       -0.353553
+        -qy       0.353553
+        -qz       0.146447
+        -xpan     0
+        -ypan     0
+        -zoom     1.0
+    }
+    set _arcball [blt::arcball create 100 100]
+    $_arcball quaternion [ViewToQuaternion]
+
+    set _limits(vmin) 0.0
+    set _limits(vmax) 1.0
+    set _reset 1
+
+    array set _settings [subst {
+        -arrows                 0
+        -axesvisible            0
+        -background             black
+        -colormap               BCGYR
+        -currenttime            0
+        -cutplanesvisible       0
+        -duration               1:00
+        -gridvisible            0
+        -isosurfaceshading      0
+        -legendvisible          1
+        -lic                    1
+        -light                  40
+        -light2side             1
+        -loop                   0
+        -opacity                50
+        -outlinevisible         1
+        -particles              1
+        -play                   0
+        -qw                     $_view(-qw)
+        -qx                     $_view(-qx)
+        -qy                     $_view(-qy)
+        -qz                     $_view(-qz)
+        -speed                  500
+        -step                   0
+        -streams                0
+        -thickness              350
+        -volume                 1
+        -xcutplaneposition      50
+        -xcutplanevisible       1
+        -xpan                   $_view(-xpan)
+        -ycutplaneposition      50
+        -ycutplanevisible       1
+        -ypan                   $_view(-ypan)
+        -zcutplaneposition      50
+        -zcutplanevisible       1
+        -zoom                   $_view(-zoom)
+    }]
+
+    itk_component add view {
+        label $itk_component(plotarea).view -image $_image(plot) \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth -background
+    }
+    bind $itk_component(view) <Control-F1> [itcl::code $this ToggleConsole]
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    itk_component add volume {
+        Rappture::PushButton $f.volume \
+            -onimage [Rappture::icon volume-on] \
+            -offimage [Rappture::icon volume-off] \
+            -variable [itcl::scope _settings(-volume)] \
+            -command [itcl::code $this AdjustSetting -volume]
+    }
+    $itk_component(volume) select
+    Rappture::Tooltip::for $itk_component(volume) \
+        "Toggle the volume cloud on/off"
+    pack $itk_component(volume) -padx 2 -pady 2
+
+    itk_component add cutplane {
+        Rappture::PushButton $f.cutplane \
+            -onimage [Rappture::icon cutbutton] \
+            -offimage [Rappture::icon cutbutton] \
+            -variable [itcl::scope _settings(-cutplanesvisible)] \
+            -command [itcl::code $this AdjustSetting -cutplanesvisible]
+    }
+    Rappture::Tooltip::for $itk_component(cutplane) \
+        "Show/Hide cutplanes"
+    pack $itk_component(cutplane) -padx 2 -pady 2
+
+    if { [catch {
+        BuildViewTab
+        BuildVolumeTab
+        BuildCutplanesTab
+        BuildCameraTab
+    } errs] != 0 } {
+        global errorInfo
+        puts stderr "errs=$errs errorInfo=$errorInfo"
+    }
+
+    # Legend
+    set _image(legend) [image create photo]
+    itk_component add legend {
+        canvas $itk_component(plotarea).legend -height 50 -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -plotbackground plotBackground Background
+    }
+    bind $itk_component(legend) <Configure> \
+        [itcl::code $this EventuallyRedrawLegend]
+
+    # Hack around the Tk panewindow.  The problem is that the requested
+    # size of the 3d view isn't set until an image is retrieved from
+    # the server.  So the panewindow uses the tiny size.
+    set w 10000
+    pack forget $itk_component(view)
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth $w \
+        1,0 $itk_component(legend) -fill x
+    blt::table configure $itk_component(plotarea) r1 -resize none
+
+    # Create flow controls...
+    itk_component add flowcontrols {
+        frame $itk_interior.flowcontrols
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+    pack forget $itk_component(main)
+    blt::table $itk_interior \
+        0,0 $itk_component(main) -fill both  \
+        1,0 $itk_component(flowcontrols) -fill x
+    blt::table configure $itk_interior r1 -resize none
+
+    # Rewind
+    itk_component add rewind {
+        button $itk_component(flowcontrols).reset \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -image [Rappture::icon flow-rewind] \
+            -command [itcl::code $this flow reset]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground \
+            Background
+    }
+    Rappture::Tooltip::for $itk_component(rewind) \
+        "Rewind flow"
+
+    # Stop
+    itk_component add stop {
+        button $itk_component(flowcontrols).stop \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -image [Rappture::icon flow-stop] \
+            -command [itcl::code $this flow stop]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground \
+            Background
+    }
+    Rappture::Tooltip::for $itk_component(stop) \
+        "Stop flow"
+
+    # Play
+    itk_component add play {
+        Rappture::PushButton $itk_component(flowcontrols).play \
+            -onimage [Rappture::icon flow-pause] \
+            -offimage [Rappture::icon flow-play] \
+            -variable [itcl::scope _settings(-play)] \
+            -command [itcl::code $this flow toggle]
+    }
+    set fg [option get $itk_component(hull) font Font]
+    Rappture::Tooltip::for $itk_component(play) \
+        "Play/Pause flow"
+
+    # Loop
+    itk_component add loop {
+        Rappture::PushButton $itk_component(flowcontrols).loop \
+            -onimage [Rappture::icon flow-loop] \
+            -offimage [Rappture::icon flow-loop] \
+            -variable [itcl::scope _settings(-loop)]
+    }
+    Rappture::Tooltip::for $itk_component(loop) \
+        "Play continuously"
+
+    itk_component add dial {
+        Rappture::Flowdial $itk_component(flowcontrols).dial \
+            -length 10 -valuewidth 0 -valuepadding 0 -padding 6 \
+            -linecolor "" -activelinecolor "" \
+            -min 0.0 -max 1.0 \
+            -variable [itcl::scope _settings(-currenttime)] \
+            -knobimage [Rappture::icon knob2] -knobposition center@middle
+    } {
+        usual
+        ignore -dialprogresscolor
+        rename -background -controlbackground controlBackground Background
+    }
+    $itk_component(dial) current 0.0
+    bind $itk_component(dial) <<Value>> [itcl::code $this flow goto]
+    # Duration
+    itk_component add duration {
+        entry $itk_component(flowcontrols).duration \
+            -textvariable [itcl::scope _settings(-duration)] \
+            -bg white -width 6 -font "arial 9"
+    } {
+        usual
+        ignore -highlightthickness -background
+    }
+    bind $itk_component(duration) <Return> [itcl::code $this flow duration]
+    bind $itk_component(duration) <KP_Enter> [itcl::code $this flow duration]
+    bind $itk_component(duration) <Tab> [itcl::code $this flow duration]
+    Rappture::Tooltip::for $itk_component(duration) \
+        "Set duration of flow (format is min:sec)"
+
+    itk_component add durationlabel {
+        label $itk_component(flowcontrols).durationl \
+            -text "Duration:" -font $fg \
+            -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -controlbackground controlBackground Background
+    }
+
+    itk_component add speedlabel {
+        label $itk_component(flowcontrols).speedl -text "Speed:" -font $fg \
+            -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -controlbackground controlBackground Background
+    }
+
+    # Speed
+    itk_component add speed {
+        Rappture::Flowspeed $itk_component(flowcontrols).speed \
+            -min 1 -max 10 -width 3 -font "arial 9"
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -controlbackground controlBackground Background
+    }
+    Rappture::Tooltip::for $itk_component(speed) \
+        "Change speed of flow"
+
+    $itk_component(speed) value 1
+    bind $itk_component(speed) <<Value>> [itcl::code $this flow speed]
+
+
+    blt::table $itk_component(flowcontrols) \
+        0,0 $itk_component(rewind) -padx {3 0} \
+        0,1 $itk_component(stop) -padx {2 0} \
+        0,2 $itk_component(play) -padx {2 0} \
+        0,3 $itk_component(loop) -padx {2 0} \
+        0,4 $itk_component(dial) -fill x -padx {2 0 } \
+        0,5 $itk_component(duration) -padx { 0 0} \
+        0,7 $itk_component(speed) -padx {2 3}
+
+#        0,6 $itk_component(speedlabel) -padx {2 0}
+    blt::table configure $itk_component(flowcontrols) c* -resize none
+    blt::table configure $itk_component(flowcontrols) c4 -resize both
+    blt::table configure $itk_component(flowcontrols) r0 -pady 1
+    # Bindings for rotation via mouse
+    bind $itk_component(view) <ButtonPress-1> \
+        [itcl::code $this Rotate click %x %y]
+    bind $itk_component(view) <B1-Motion> \
+        [itcl::code $this Rotate drag %x %y]
+    bind $itk_component(view) <ButtonRelease-1> \
+        [itcl::code $this Rotate release %x %y]
+
+    bind $itk_component(view) <Configure> \
+        [itcl::code $this EventuallyResize %w %h]
+
+    # Bindings for panning via mouse
+    bind $itk_component(view) <ButtonPress-2> \
+        [itcl::code $this Pan click %x %y]
+    bind $itk_component(view) <B2-Motion> \
+        [itcl::code $this Pan drag %x %y]
+    bind $itk_component(view) <ButtonRelease-2> \
+        [itcl::code $this Pan release %x %y]
+
+    # Bindings for panning via keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -2 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 2 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -2]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 2]
+
+    # Bindings for zoom via keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        # Bindings for zoom via mouse
+        bind $itk_component(view) <4> [itcl::code $this Zoom out]
+        bind $itk_component(view) <5> [itcl::code $this Zoom in]
+    }
+
+    set _image(download) [image create photo]
+
+    eval itk_initialize $args
+
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::destructor {} {
+    $_dispatcher cancel !rebuild
+    $_dispatcher cancel !send_transfunc
+    $_dispatcher cancel !resize
+    image delete $_image(plot)
+    image delete $_image(legend)
+    image delete $_image(download)
+    catch { blt::arcball destroy $_arcball }
+    array unset _settings
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::add {dataobj {settings ""}} {
+    array set params {
+        -color auto
+        -width 1
+        -linestyle solid
+        -brightness 0
+        -raise 0
+        -description ""
+        -param ""
+    }
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) black
+    }
+    foreach cname [$dataobj components] {
+        set flowobj [$dataobj flowhints $cname]
+        if { $flowobj == "" } {
+            puts stderr "no flowhints $dataobj-$cname"
+            continue
+        }
+        set _dataset2flow($dataobj-$cname) $flowobj
+    }
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+        set _obj2ovride($dataobj-color) $params(-color)
+        set _obj2ovride($dataobj-width) $params(-width)
+        set _obj2ovride($dataobj-raise) $params(-raise)
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-objects?
+# USAGE: get ?-image view|legend?
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.  The optional "-image"
+# flag can also request the internal images being shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::get {args} {
+    if {[llength $args] == 0} {
+        set args "-objects"
+    }
+
+    set op [lindex $args 0]
+    switch -- $op {
+        -objects {
+            # put the dataobj list in order according to -raise options
+            set dlist $_dlist
+            foreach dataobj $dlist {
+                if {[info exists _obj2ovride($dataobj-raise)] &&
+                    $_obj2ovride($dataobj-raise)} {
+                    set i [lsearch -exact $dlist $dataobj]
+                    if {$i >= 0} {
+                        set dlist [lreplace $dlist $i $i]
+                        lappend dlist $dataobj
+                    }
+                }
+            }
+            return $dlist
+        }
+        -image {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"get -image view|legend\""
+            }
+            switch -- [lindex $args end] {
+                view {
+                    return $_image(plot)
+                }
+                legend {
+                    return $_image(legend)
+                }
+                default {
+                    error "bad image name \"[lindex $args end]\": should be view or legend"
+                }
+            }
+        }
+        default {
+            error "bad option \"$op\": should be -objects or -image"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.  No data objects are
+# deleted.  They are only removed from the display list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::delete {args} {
+    flow stop
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+
+    # Delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if { $pos >= 0 } {
+            set _dlist [lreplace $_dlist $pos $pos]
+            array unset _limits $dataobj-*
+            array unset _obj2ovride $dataobj-*
+            array unset _dataset2flow $dataobj-*
+            array unset _serverDatasets $dataobj-*
+            array unset _dataset2style $dataobj-*
+            set changed 1
+        }
+    }
+    # If anything changed, then rebuild the plot
+    if {$changed} {
+        # Repair the reverse lookup
+        foreach tf [array names _style2datasets] {
+            set list {}
+            foreach {dataobj cname} $_style2datasets($tf) break
+            if { [info exists _serverDatasets($dataobj-$cname)] } {
+                lappend list $dataobj $cname
+            }
+            if { $list == "" } {
+                array unset _style2datasets $tf
+            } else {
+                set _style2datasets($tf) $list
+            }
+        }
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<data1> <data2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <data> objects.  This
+# accounts for all objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::scale {args} {
+    array set style {
+        -color    BCGYR
+        -levels   6
+        -markers  ""
+    }
+    array unset _limits
+    array unset _volcomponents
+    foreach dataobj $args {
+        if { ![$dataobj isvalid] } {
+            continue;                     # Object doesn't contain valid data.
+        }
+        foreach cname [$dataobj components] {
+            if { ![info exists _volcomponents($cname)] } {
+                lappend _componentsList $cname
+                array set style [lindex [$dataobj components -style $cname] 0]
+                set cmap [ColorsToColormap $style(-color)]
+                set _settings($cname-colormap) $style(-color)
+            }
+            lappend _volcomponents($cname) $dataobj-$cname
+            array unset limits
+            array set limits [$dataobj valueLimits $cname]
+            set _limits($cname) $limits(v)
+        }
+        foreach axis {x y z v} {
+            foreach { min max } [$dataobj limits $axis] break
+            if {"" != $min && "" != $max} {
+                if { ![info exists _limits(${axis}min)] } {
+                    set _limits(${axis}min) $min
+                    set _limits(${axis}max) $max
+                    continue
+                }
+                if {$min < $_limits(${axis}min)} {
+                    set _limits(${axis}min) $min
+                }
+                if {$max > $_limits(${axis}max)} {
+                    set _limits(${axis}max) $max
+                }
+            }
+        }
+    }
+    #BuildVolumeComponents
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::download {option args} {
+    switch $option {
+        coming {
+            if {[catch {
+                blt::winop snap $itk_component(plotarea) $_image(download)
+            }]} {
+                $_image(download) configure -width 1 -height 1
+                $_image(download) put #000000
+            }
+        }
+        controls {
+            set popup .flowvisviewerdownload
+            if { ![winfo exists $popup] } {
+                set inner [BuildDownloadPopup $popup [lindex $args 0]]
+            } else {
+                set inner [$popup component inner]
+            }
+            # FIXME: we only support download of current active component
+            #set num [llength [get]]
+            #set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set num "current flow"
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks            ;# Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .flowvisviewerdownload
+            if { [winfo exists $popup] } {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "640x480" {
+                    return [$this GetMovie [lindex $args 0] 640 480]
+                }
+                "1024x768" {
+                    return [$this GetMovie [lindex $args 0] 1024 768]
+                }
+                "image" {
+                    return [$this GetImage [lindex $args 0]]
+                }
+                "vtk" {
+                    return [$this GetVtkData [lindex $args 0]]
+                }
+                default {
+                    error "bad download format $_downloadPopup(format)"
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Connect ?<host:port>,<host:port>...?
+#
+# Clients use this method to establish a connection to a new
+# server, or to reestablish a connection to the previous server.
+# Any existing connection is automatically closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::Connect {} {
+    set _hosts [GetServerList "nanovis"]
+    if { "" == $_hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $_hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "flowvisviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        EventuallyResize $w $h
+    }
+    return $result
+}
+
+#
+# isconnected --
+#
+# Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::FlowvisViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# disconnect --
+#
+itcl::body Rappture::FlowvisViewer::disconnect {} {
+    Disconnect
+}
+
+#
+# Disconnect --
+#
+# Clients use this method to disconnect from the current rendering server.
+#
+itcl::body Rappture::FlowvisViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    # disconnected -- no more data sitting on server
+    array unset _serverDatasets
+}
+
+# ----------------------------------------------------------------------
+# USAGE: SendTransferFunctions
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::SendTransferFunctions {} {
+    if { $_activeTf == "" } {
+        puts stderr "no active tf"
+        return
+    }
+    set tf $_activeTf
+    if { $_first == "" } {
+        puts stderr "first not set"
+        return
+    }
+
+    # Ensure that the global thickness setting (in the slider
+    # settings widget) is used for the active transfer-function.  Update
+    # the value in the _settings variable.
+
+    # Scale values between 0.00001 and 0.01000
+    set thickness [expr {double($_settings(-thickness)) * 0.0001}]
+    set _settings($tf-thickness) $thickness
+
+    foreach tag [array names _dataset2style $_first-*] {
+        if { [info exists _dataset2style($tag)] } {
+            foreach tf $_dataset2style($tag) {
+                ComputeTransferFunction $tf
+            }
+        }
+    }
+    EventuallyRedrawLegend
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveImage -bytes <size> -type <type> -token <token>
+#
+# Invoked automatically whenever the "image" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::ReceiveImage { args } {
+    array set info {
+        -token "???"
+        -bytes 0
+        -type image
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    ReceiveEcho <<line "<read $info(-bytes) bytes"
+    switch -- $info(-type)  {
+        "image" {
+            $_image(plot) configure -data $bytes
+            #puts stderr "image received [image width $_image(plot)] by [image height $_image(plot)]"
+        }
+        "print" {
+            set tag $this-$info(-token)
+            set _hardcopy($tag) $bytes
+        }
+        "movie" {
+            set tag $this-$info(-token)
+            set _hardcopy($tag) $bytes
+        }
+        default {
+            puts stderr "unknown download type $info(-type)"
+        }
+    }
+}
+
+#
+# DrawLegend --
+#
+itcl::body Rappture::FlowvisViewer::DrawLegend { tag } {
+    set c $itk_component(legend)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set lx 10
+    set ly [expr {$h - 1}]
+    if {"" == [$c find withtag colorbar]} {
+        $c create image 10 10 -anchor nw \
+            -image $_image(legend) -tags colorbar
+        $c create text $lx $ly -anchor sw \
+            -fill $itk_option(-plotforeground) -tags "limits text vmin"
+        $c create text [expr {$w-$lx}] $ly -anchor se \
+            -fill $itk_option(-plotforeground) -tags "limits text vmax"
+        $c create text [expr {$w/2}] $ly -anchor s \
+            -fill $itk_option(-plotforeground) -tags "title text"
+        $c lower colorbar
+        $c bind colorbar <ButtonRelease-1> [itcl::code $this AddIsoMarker %x %y]
+    }
+
+    # Display the markers used by the current transfer function.
+    set tf $_dataset2style($tag)
+    array set limits [limits $tf]
+    $c itemconfigure vmin -text [format %g $limits(vmin)]
+    $c coords vmin $lx $ly
+
+    $c itemconfigure vmax -text [format %g $limits(vmax)]
+    $c coords vmax [expr {$w-$lx}] $ly
+
+    set title [$_first hints label]
+    set units [$_first hints units]
+    if { $units != "" } {
+        set title "$title ($units)"
+    }
+    $c itemconfigure title -text $title
+    $c coords title [expr {$w/2}] $ly
+
+    if { [info exists _isomarkers($tf)] } {
+        foreach m $_isomarkers($tf) {
+            $m visible yes
+        }
+    }
+}
+
+#
+# ReceiveLegend --
+#
+# The procedure is the response from the render server to each "legend"
+# command.  The server sends back a "legend" command invoked our
+# the slave interpreter.  The purpose is to collect data of the image
+# representing the legend in the canvas.  In addition, the
+# active transfer function is displayed.
+#
+itcl::body Rappture::FlowvisViewer::ReceiveLegend { tag vmin vmax size } {
+    if { ![isconnected] } {
+        return
+    }
+    set bytes [ReceiveBytes $size]
+    $_image(legend) configure -data $bytes
+    ReceiveEcho <<line "<read $size bytes for [image width $_image(legend)]x[image height $_image(legend)] legend>"
+
+    DrawLegend $tag
+}
+
+#
+# ReceiveData --
+#
+# The procedure is the response from the render server to each "data
+# follows" command.  The server sends back a "data" command invoked our
+# the slave interpreter.  The purpose is to collect the min/max of the
+# volume sent to the render server.  Since the client (flowvisviewer)
+# doesn't parse 3D data formats, we rely on the server (nanovis) to
+# tell us what the limits are.  Once we've received the limits to all
+# the data we've sent (tracked by _recvdDatasets) we can then determine
+# what the transfer functions are for these volumes.
+#
+#
+#       Note: There is a considerable tradeoff in having the server report
+#             back what the data limits are.  It means that much of the code
+#             having to do with transfer-functions has to wait for the data
+#             to come back, since the isomarkers are calculated based upon
+#             the data limits.  The client code is much messier because of
+#             this.  The alternative is to parse any of the 3D formats on the
+#             client side.
+#
+itcl::body Rappture::FlowvisViewer::ReceiveData { args } {
+    if { ![isconnected] } {
+        return
+    }
+
+    # Arguments from server are name value pairs. Stuff them in an array.
+    array set info $args
+
+    set tag $info(tag)
+    set parts [split $tag -]
+
+    #
+    # Volumes don't exist until we're told about them.
+    #
+    set dataobj [lindex $parts 0]
+    set _serverDatasets($tag) 0
+    set _limits($tag-min)  $info(min);  # Minimum value of the volume.
+    set _limits($tag-max)  $info(max);  # Maximum value of the volume.
+
+    unset _recvdDatasets($tag)
+    if { [array size _recvdDatasets] == 0 } {
+        updateTransferFunctions
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::Rebuild {} {
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $w < 2 || $h < 2 } {
+        update
+        $_dispatcher event -idle !rebuild
+        return
+    }
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (which automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+
+    # Hide all the isomarkers. Can't remove them. Have to remember the
+    # settings since the user may have created/deleted/moved markers.
+
+    foreach tf [array names _isomarkers] {
+        foreach m $_isomarkers($tf) {
+            $m visible no
+        }
+    }
+
+    if { $_width != $w || $_height != $h || $_reset } {
+        set _width $w
+        set _height $h
+        $_arcball resize $w $h
+        DoResize
+    }
+
+    set _first ""
+    foreach dataobj [get] {
+        foreach cname [$dataobj components] {
+            set tag $dataobj-$cname
+            if {[$dataobj type] == "dx"} {
+                set data [$dataobj blob $cname]
+            } else {
+                set data [$dataobj vtkdata $cname]
+            }
+            set nbytes [string length $data]
+            if { $_reportClientInfo }  {
+                set info {}
+                lappend info "tool_id"       [$dataobj hints toolid]
+                lappend info "tool_name"     [$dataobj hints toolname]
+                lappend info "tool_title"    [$dataobj hints tooltitle]
+                lappend info "tool_command"  [$dataobj hints toolcommand]
+                lappend info "tool_revision" [$dataobj hints toolrevision]
+                lappend info "dataset_label" [$dataobj hints label]
+                lappend info "dataset_size"  $nbytes
+                lappend info "dataset_tag"   $tag
+                SendCmd "clientinfo [list $info]"
+            }
+            set numComponents [$dataobj numComponents $cname]
+            # I have a field. Is a vector field or a volume field?
+            if { $numComponents == 1 } {
+                SendCmd "volume data follows $nbytes $tag"
+            } else {
+                if {[SendFlowCmd $dataobj $cname $nbytes $numComponents] < 0} {
+                    continue
+                }
+            }
+            SendData $data
+            NameTransferFunction $dataobj $cname
+            set _recvdDatasets($tag) 1
+        }
+    }
+
+    set _first [lindex [get] 0]
+
+    # Turn off cutplanes for all volumes
+    foreach axis {x y z} {
+        SendCmd "cutplane state 0 $axis"
+    }
+
+    # Reset the camera and other view parameters
+    InitSettings -axesvisible -gridvisible \
+        -opacity -light2side -isosurfaceshading \
+        -light \
+        -volume -outlinevisible -cutplanesvisible \
+        -xcutplanevisible -ycutplanevisible -zcutplanevisible \
+        -xcutplaneposition -ycutplaneposition -zcutplaneposition
+
+    # nothing to send -- activate the proper volume
+    if {"" != $_first} {
+        set axis [$_first hints updir]
+        if {"" != $axis} {
+            SendCmd "up $axis"
+        }
+        set location [$_first hints camera]
+        if { $location != "" } {
+            array set _view $location
+        }
+    }
+    set _settings(-qw)    $_view(-qw)
+    set _settings(-qx)    $_view(-qx)
+    set _settings(-qy)    $_view(-qy)
+    set _settings(-qz)    $_view(-qz)
+    set _settings(-xpan)  $_view(-xpan)
+    set _settings(-ypan)  $_view(-ypan)
+    set _settings(-zoom)  $_view(-zoom)
+
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    PanCamera
+    SendCmd "camera zoom $_view(-zoom)"
+
+    foreach dataobj [get] {
+        foreach cname [$dataobj components] {
+            NameTransferFunction $dataobj $cname
+        }
+        set _reset 0
+    }
+
+    # nothing to send -- activate the proper ivol
+    set _first [lindex [get] 0]
+    if {"" != $_first} {
+        set axis [$_first hints updir]
+        if {"" != $axis} {
+            SendCmd "up $axis"
+        }
+        set location [$_first hints camera]
+        if { $location != "" } {
+            array set _view $location
+        }
+        set cname [lindex [$_first components] 0]
+        set _activeTf [lindex $_dataset2style($_first-$cname) 0]
+    }
+
+    # sync the state of slicers
+    set vols [CurrentDatasets -cutplanes]
+    foreach axis {x y z} {
+        set pos [expr {0.01*$_settings(-${axis}cutplaneposition)}]
+        SendCmd "cutplane position $pos $axis $vols"
+    }
+    SendCmd "volume data state $_settings(-volume)"
+    EventuallyRedrawLegend
+
+    # Actually write the commands to the server socket.  If it fails, we don't
+    # care.  We're finished here.
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands
+    blt::busy release $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CurrentDatasets ?-cutplanes?
+#
+# Returns a list of volume server IDs for the current volume being
+# displayed.  This is normally a single ID, but it might be a list
+# of IDs if the current data object has multiple components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::CurrentDatasets {{what -all}} {
+    return ""
+    if { $_first == "" } {
+        return
+    }
+    foreach tag [array names _serverDatasets *-*] {
+        if {[string match $_first-* $tag]} {
+            array set style {
+                -cutplanes 1
+            }
+            foreach {dataobj cname} [split $tag -] break
+            array set style [lindex [$dataobj components -style $cname] 0]
+            if {$what != "-cutplanes" || $style(-cutplanes)} {
+                lappend rlist $_serverDatasets($tag)
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::Zoom {option} {
+    switch -- $option {
+        "in" {
+            set _view(-zoom) [expr {$_view(-zoom)*1.25}]
+            set _settings(-zoom) $_view(-zoom)
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "out" {
+            set _view(-zoom) [expr {$_view(-zoom)*0.8}]
+            set _settings(-zoom) $_view(-zoom)
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "reset" {
+            array set _view {
+                -qw      0.853553
+                -qx      -0.353553
+                -qy      0.353553
+                -qz      0.146447
+                -xpan    0
+                -ypan    0
+                -zoom    1.0
+            }
+            if { $_first != "" } {
+                set location [$_first hints camera]
+                if { $location != "" } {
+                    array set _view $location
+                }
+            }
+            set q [ViewToQuaternion]
+            $_arcball quaternion $q
+            SendCmd "camera orient $q"
+            SendCmd "camera reset"
+            set _settings(-qw)    $_view(-qw)
+            set _settings(-qx)    $_view(-qx)
+            set _settings(-qy)    $_view(-qy)
+            set _settings(-qz)    $_view(-qz)
+            set _settings(-xpan)  $_view(-xpan)
+            set _settings(-ypan)  $_view(-ypan)
+            set _settings(-zoom)  $_view(-zoom)
+        }
+    }
+}
+
+itcl::body Rappture::FlowvisViewer::PanCamera {} {
+    set x $_view(-xpan)
+    set y $_view(-ypan)
+    SendCmd "camera pan $x $y"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::Rotate {option x y} {
+    switch -- $option {
+        click {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+        }
+        drag {
+            if {[array size _click] == 0} {
+                Rotate click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+
+                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
+                QuaternionToView $q
+                set _settings(-qw) $_view(-qw)
+                set _settings(-qx) $_view(-qx)
+                set _settings(-qy) $_view(-qy)
+                set _settings(-qz) $_view(-qz)
+                SendCmd "camera orient $q"
+
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        release {
+            Rotate drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::Pan {option x y} {
+    # Experimental stuff
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $option == "set" } {
+        set x [expr $x / double($w)]
+        set y [expr $y / double($h)]
+        set _view(-xpan) [expr $_view(-xpan) + $x]
+        set _view(-ypan) [expr $_view(-ypan) + $y]
+        PanCamera
+        set _settings(-xpan) $_view(-xpan)
+        set _settings(-ypan) $_view(-ypan)
+        return
+    }
+    if { $option == "click" } {
+        set _click(x) $x
+        set _click(y) $y
+        $itk_component(view) configure -cursor hand1
+    }
+    if { $option == "drag" || $option == "release" } {
+        set dx [expr ($_click(x) - $x)/double($w)]
+        set dy [expr ($_click(y) - $y)/double($h)]
+        set _click(x) $x
+        set _click(y) $y
+        set _view(-xpan) [expr $_view(-xpan) - $dx]
+        set _view(-ypan) [expr $_view(-ypan) - $dy]
+        PanCamera
+        set _settings(-xpan) $_view(-xpan)
+        set _settings(-ypan) $_view(-ypan)
+    }
+    if { $option == "release" } {
+        $itk_component(view) configure -cursor ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitSettings <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::InitSettings { args } {
+    foreach arg $args {
+        AdjustSetting $arg
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: AdjustSetting <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::AdjustSetting {what {value ""}} {
+    if {![isconnected]} {
+        return
+    }
+    switch -- $what {
+        "-axesvisible" {
+            SendCmd "axis visible $_settings($what)"
+        }
+        "-background" {
+            set bgcolor [$itk_component(background) value]
+            array set fgcolors {
+                "black" "white"
+                "white" "black"
+                "grey"  "black"
+            }
+            configure -plotbackground $bgcolor \
+                -plotforeground $fgcolors($bgcolor)
+            if { $_first != "" } {
+                set comp [lindex [$_first components] 0]
+                set tag $_first-$comp
+                DrawLegend $tag
+            }
+        }
+        "-colormap" {
+            set color [$itk_component(colormap) value]
+            set _settings($what) $color
+            #ResetColormap $color
+        }
+        "-cutplanesvisible" {
+            set bool $_settings($what)
+            set datasets [CurrentDatasets -cutplanes]
+            set tag [lindex $datasets 0]
+            SendCmd "cutplane visible $bool $tag"
+        }
+        "-gridvisible" {
+            SendCmd "grid visible $_settings($what)"
+        }
+        "-isosurfaceshading" {
+            if { $_first != "" } {
+                set comp [lindex [$_first components] 0]
+                set tag $_first-$comp
+                set val $_settings($what)
+                # This flag isn't implemented in the server
+                #SendCmd "$tag configure -isosurface $val"
+            }
+        }
+        "-legendvisible" {
+            if { $_settings($what) } {
+                blt::table $itk_component(plotarea) \
+                    0,0 $itk_component(view) -fill both \
+                    1,0 $itk_component(legend) -fill x
+                blt::table configure $itk_component(plotarea) r1 -resize none
+            } else {
+                blt::table forget $itk_component(legend)
+            }
+        }
+        "-light" {
+            if { $_first != "" } {
+                set comp [lindex [$_first components] 0]
+                set tag $_first-$comp
+                set diffuse [expr {0.01*$_settings($what)}]
+                set ambient [expr {1.0 - $diffuse}]
+                set specularLevel 0.3
+                set specularExp 90.0
+                SendCmd "$tag configure -ambient $ambient -diffuse $diffuse -specularLevel $specularLevel -specularExp $specularExp"
+            }
+        }
+        "-light2side" {
+            if { $_first != "" } {
+                set comp [lindex [$_first components] 0]
+                set tag $_first-$comp
+                set val $_settings($what)
+                SendCmd "$tag configure -light2side $val"
+            }
+        }
+        "-opacity" {
+            if { $_first != "" } {
+                set comp [lindex [$_first components] 0]
+                set tag $_first-$comp
+                set opacity [expr { 0.01 * double($_settings($what)) }]
+                SendCmd "$tag configure -opacity $opacity"
+            }
+        }
+        "-outlinevisible" {
+            if { $_first != "" } {
+                set comp [lindex [$_first components] 0]
+                set tag $_first-$comp
+                SendCmd "$tag configure -outline $_settings($what)"
+            }
+        }
+        "-thickness" {
+            if { $_first != "" && $_activeTf != "" } {
+                set val $_settings($what)
+                # Scale values between 0.00001 and 0.01000
+                set sval [expr {0.0001*double($val)}]
+                set tf $_activeTf
+                set _settings($tf${what}) $sval
+                updateTransferFunctions
+            }
+        }
+        "-volume" {
+            if { $_first != "" } {
+                set comp [lindex [$_first components] 0]
+                set tag $_first-$comp
+                SendCmd "$tag configure -volume $_settings($what)"
+            }
+        }
+        "-xcutplaneposition" - "-ycutplaneposition" - "-zcutplaneposition" {
+            set axis [string range $what 1 1]
+            set pos [expr $_settings($what) * 0.01]
+            # We only set cutplanes on the first dataset.
+            set datasets [CurrentDatasets -cutplanes]
+            set tag [lindex $datasets 0]
+            SendCmd "cutplane position $pos $axis $tag"
+        }
+        "-xcutplanevisible" - "-ycutplanevisible" - "-zcutplanevisible" {
+            set axis [string range $what 1 1]
+            set bool $_settings($what)
+            # We only set cutplanes on the first dataset.
+            set datasets [CurrentDatasets -cutplanes]
+            set tag [lindex $datasets 0]
+            SendCmd "cutplane state $bool $axis $tag"
+            if { $bool } {
+                $itk_component(${axis}CutScale) configure -state normal \
+                    -troughcolor white
+            } else {
+                $itk_component(${axis}CutScale) configure -state disabled \
+                    -troughcolor grey82
+            }
+        }
+        default {
+            error "don't know how to fix $what"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: FixLegend
+#
+# Used internally to update the legend area whenever it changes size
+# or when the field changes.  Asks the server to send a new legend
+# for the current field.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::FixLegend {} {
+    set _resizeLegendPending 0
+    set lineht [font metrics $itk_option(-font) -linespace]
+    set w [expr {$_width-20}]
+    set h [expr {[winfo height $itk_component(legend)]-20-$lineht}]
+
+    if { $_first == "" } {
+        return
+    }
+    set comp [lindex [$_first components] 0]
+    set tag $_first-$comp
+    #set _activeTf [lindex $_dataset2style($tag) 0]
+    if {$w > 0 && $h > 0 && "" != $_activeTf} {
+        #SendCmd "legend $_activeTf $w $h"
+        SendCmd "$tag legend $w $h"
+    }
+}
+
+#
+# NameTransferFunction --
+#
+# Creates a transfer function name based on the <style> settings in the
+# library run.xml file. This placeholder will be used later to create
+# and send the actual transfer function once the data info has been sent
+# to us by the render server. [We won't know the volume limits until the
+# server parses the 3D data and sends back the limits via ReceiveData.]
+#
+itcl::body Rappture::FlowvisViewer::NameTransferFunction { dataobj cname } {
+    array set style {
+        -color BCGYR
+        -levels 6
+        -opacity 0.5
+    }
+    array set style [lindex [$dataobj components -style $cname] 0]
+    set tf "$style(-color):$style(-levels)"
+    # Some tools erroneously set -opacity to 1 in style, so
+    # override the requested opacity for now
+    set style(-opacity) 0.5
+    set _settings(-opacity) [expr $style(-opacity) * 100]
+    set _dataset2style($dataobj-$cname) $tf
+    lappend _style2datasets($tf) $dataobj $cname
+    return $tf
+}
+
+#
+# ComputeTransferFunction --
+#
+# Computes and sends the transfer function to the render server.  It's
+# assumed that the volume data limits are known and that the global
+# transfer-functions slider values have been set up.  Both parts are
+# needed to compute the relative value (location) of the marker, and
+# the alpha map of the transfer function.
+#
+itcl::body Rappture::FlowvisViewer::ComputeTransferFunction { tf } {
+    array set style {
+        -color BCGYR
+        -levels 6
+        -opacity 0.5
+    }
+    set dataobj ""; set cname ""
+    foreach {dataobj cname} $_style2datasets($tf) break
+    if { $dataobj == "" } {
+        return 0
+    }
+    array set style [lindex [$dataobj components -style $cname] 0]
+    # Some tools erroneously set -opacity to 1 in style, so
+    # override the requested opacity for now
+    set style(-opacity) 0.5
+
+    # We have to parse the style attributes for a volume using this
+    # transfer-function *once*.  This sets up the initial isomarkers for the
+    # transfer function.  The user may add/delete markers, so we have to
+    # maintain a list of markers for each transfer-function.  We use the one
+    # of the volumes (the first in the list) using the transfer-function as a
+    # reference.
+
+    if { ![info exists _isomarkers($tf)] } {
+        # Have to defer creation of isomarkers until we have data limits
+        if { [info exists style(-markers)] &&
+             [llength $style(-markers)] > 0  } {
+            ParseMarkersOption $tf $style(-markers)
+        } else {
+            ParseLevelsOption $tf $style(-levels)
+        }
+    }
+    if { [info exists style(-nonuniformcolors)] } {
+        foreach { value color } $style(-nonuniformcolors) {
+            append cmap "$value [Color2RGB $color] "
+        }
+    } else {
+        set cmap [ColorsToColormap $style(-color)]
+    }
+
+    if { ![info exists _settings(-opacity)] } {
+        set _settings(-opacity) [expr $style(-opacity) * 100]
+    }
+
+    # Transfer function should be normalized with [0,1] range
+    # The volume shading opacity setting is used to scale opacity
+    # in the volume shader.
+    set max 1.0
+
+    set isovalues {}
+    foreach m $_isomarkers($tf) {
+        lappend isovalues [$m relval]
+    }
+    # Sort the isovalues
+    set isovalues [lsort -real $isovalues]
+
+    set tag $tf
+    if { ![info exists _settings($tag-thickness)]} {
+        set _settings($tag-thickness) 0.005
+    }
+    set delta $_settings($tag-thickness)
+
+    set first [lindex $isovalues 0]
+    set last [lindex $isovalues end]
+    set amap ""
+    if { $first == "" || $first != 0.0 } {
+        lappend amap 0.0 0.0
+    }
+    foreach x $isovalues {
+        set x1 [expr {$x-$delta-0.00001}]
+        set x2 [expr {$x-$delta}]
+        set x3 [expr {$x+$delta}]
+        set x4 [expr {$x+$delta+0.00001}]
+        if { $x1 < 0.0 } {
+            set x1 0.0
+        } elseif { $x1 > 1.0 } {
+            set x1 1.0
+        }
+        if { $x2 < 0.0 } {
+            set x2 0.0
+        } elseif { $x2 > 1.0 } {
+            set x2 1.0
+        }
+        if { $x3 < 0.0 } {
+            set x3 0.0
+        } elseif { $x3 > 1.0 } {
+            set x3 1.0
+        }
+        if { $x4 < 0.0 } {
+            set x4 0.0
+        } elseif { $x4 > 1.0 } {
+            set x4 1.0
+        }
+        # add spikes in the middle
+        lappend amap $x1 0.0
+        lappend amap $x2 $max
+        lappend amap $x3 $max
+        lappend amap $x4 0.0
+    }
+    if { $last == "" || $last != 1.0 } {
+        lappend amap 1.0 0.0
+    }
+    SendCmd "transfunc define $tf { $cmap } { $amap }"
+    return [SendCmd "$dataobj-$cname configure -transferfunction $tf"]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::FlowvisViewer::plotbackground {
+    if { [isconnected] } {
+        set color $itk_option(-plotbackground)
+        set rgb [Color2RGB $color]
+        SendCmd "screen bgcolor $rgb"
+        $itk_component(legend) configure -background $color
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::FlowvisViewer::plotforeground {
+    if { [isconnected] } {
+        set color $itk_option(-plotforeground)
+        set rgb [Color2RGB $color]
+        SendCmd "volume outline color $rgb"
+        SendCmd "grid axiscolor $rgb"
+        SendCmd "grid linecolor $rgb"
+        $itk_component(legend) itemconfigure text -fill $color
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotoutline
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::FlowvisViewer::plotoutline {
+    # Must check if we are connected because this routine is called from the
+    # class body when the -plotoutline itk_option is defined.  At that point
+    # the FlowvisViewer class constructor hasn't been called, so we can't
+    # start sending commands to visualization server.
+    if { [isconnected] } {
+        if {"" == $itk_option(-plotoutline)} {
+            SendCmd "volume outline state off"
+        } else {
+            SendCmd "volume outline state on"
+            SendCmd "volume outline color [Color2RGB $itk_option(-plotoutline)]"
+        }
+    }
+}
+
+#
+# The -levels option takes a single value that represents the number
+# of evenly distributed markers based on the current data range. Each
+# marker is a relative value from 0.0 to 1.0.
+#
+itcl::body Rappture::FlowvisViewer::ParseLevelsOption { tf levels } {
+    set c $itk_component(legend)
+    regsub -all "," $levels " " levels
+    if {[string is int $levels]} {
+        for {set i 1} { $i <= $levels } {incr i} {
+            set x [expr {double($i)/($levels+1)}]
+            set m [Rappture::IsoMarker \#auto $c $this $tf]
+            $itk_component(legend) itemconfigure labels -fill $itk_option(-plotforeground)
+            $m relval $x
+            lappend _isomarkers($tf) $m
+        }
+    } else {
+        foreach x $levels {
+            set m [Rappture::IsoMarker \#auto $c $this $tf]
+            $itk_component(legend) itemconfigure labels -fill $itk_option(-plotforeground)
+            $m relval $x
+            lappend _isomarkers($tf) $m
+        }
+    }
+}
+
+#
+# The -markers option takes a list of zero or more values (the values
+# may be separated either by spaces or commas) that have the following
+# format:
+#
+#   N%  Percent of current total data range.  Converted to
+#       to a relative value between 0.0 and 1.0.
+#   N   Absolute value of marker.  If the marker is outside of
+#       the current range, it will be displayed on the outer
+#       edge of the legends, but it range it represents will
+#       not be seen.
+#
+itcl::body Rappture::FlowvisViewer::ParseMarkersOption { tf markers } {
+    set c $itk_component(legend)
+    regsub -all "," $markers " " markers
+    foreach marker $markers {
+        set n [scan $marker "%g%s" value suffix]
+        if { $n == 2 && $suffix == "%" } {
+            # ${n}% : Set relative value.
+            set value [expr {$value * 0.01}]
+            set m [Rappture::IsoMarker \#auto $c $this $tf]
+            $itk_component(legend) itemconfigure labels -fill $itk_option(-plotforeground)
+            $m relval $value
+            lappend _isomarkers($tf) $m
+        } else {
+            # ${n} : Set absolute value.
+            set m [Rappture::IsoMarker \#auto $c $this $tf]
+            $itk_component(legend) itemconfigure labels -fill $itk_option(-plotforeground)
+            $m absval $value
+            lappend _isomarkers($tf) $m
+        }
+    }
+}
+
+itcl::body Rappture::FlowvisViewer::updateTransferFunctions {} {
+    $_dispatcher event -after 100 !send_transfunc
+}
+
+itcl::body Rappture::FlowvisViewer::AddIsoMarker { x y } {
+    if { $_activeTf == "" } {
+        error "active transfer function isn't set"
+    }
+    set tf $_activeTf
+    set c $itk_component(legend)
+    set m [Rappture::IsoMarker \#auto $c $this $tf]
+    $itk_component(legend) itemconfigure labels -fill $itk_option(-plotforeground)
+    set w [winfo width $c]
+    $m relval [expr {double($x-10)/($w-20)}]
+    lappend _isomarkers($tf) $m
+    updateTransferFunctions
+    return 1
+}
+
+itcl::body Rappture::FlowvisViewer::removeDuplicateMarker { marker x } {
+    set tf [$marker transferfunc]
+    set bool 0
+    if { [info exists _isomarkers($tf)] } {
+        set list {}
+        set marker [namespace tail $marker]
+        foreach m $_isomarkers($tf) {
+            set sx [$m screenpos]
+            if { $m != $marker } {
+                if { $x >= ($sx-3) && $x <= ($sx+3) } {
+                    $marker relval [$m relval]
+                    itcl::delete object $m
+                    bell
+                    set bool 1
+                    continue
+                }
+            }
+            lappend list $m
+        }
+        set _isomarkers($tf) $list
+        updateTransferFunctions
+    }
+    return $bool
+}
+
+itcl::body Rappture::FlowvisViewer::overMarker { marker x } {
+    set tf [$marker transferfunc]
+    if { [info exists _isomarkers($tf)] } {
+        set marker [namespace tail $marker]
+        foreach m $_isomarkers($tf) {
+            set sx [$m screenpos]
+            if { $m != $marker } {
+                set bool [expr { $x >= ($sx-3) && $x <= ($sx+3) }]
+                $m activate $bool
+            }
+        }
+    }
+    return ""
+}
+
+itcl::body Rappture::FlowvisViewer::limits { tf } {
+    set _limits(vmin) 0.0
+    set _limits(vmax) 1.0
+    if { ![info exists _style2datasets($tf)] } {
+        puts stderr "no _style2datasets for tf=($tf)"
+        return [array get _limits]
+    }
+    set min ""; set max ""
+    foreach {dataobj comp} $_style2datasets($tf) {
+        set tag $dataobj-$comp
+        if { ![info exists _serverDatasets($tag)] } {
+            puts stderr "$tag not in _serverDatasets?"
+            continue
+        }
+        if { ![info exists _limits($tag-min)] } {
+            puts stderr "$tag no min?"
+            continue
+        }
+        if { $min == "" || $min > $_limits($tag-min) } {
+            set min $_limits($tag-min)
+        }
+        if { $max == "" || $max < $_limits($tag-max) } {
+            set max $_limits($tag-max)
+        }
+    }
+    if { $min != "" } {
+        set _limits(vmin) $min
+    }
+    if { $max != "" } {
+        set _limits(vmax) $max
+    }
+    return [array get _limits]
+}
+
+itcl::body Rappture::FlowvisViewer::BuildViewTab {} {
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "View Settings" \
+        -icon [Rappture::icon wrench]]
+    $inner configure -borderwidth 4
+
+    # General options
+    checkbutton $inner.axes \
+        -text "Axes" \
+        -variable [itcl::scope _settings(-axesvisible)] \
+        -command [itcl::code $this AdjustSetting -axesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.grid \
+        -text "Grid" \
+        -variable [itcl::scope _settings(-gridvisible)] \
+        -command [itcl::code $this AdjustSetting -gridvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.legend \
+        -text "Legend" \
+        -variable [itcl::scope _settings(-legendvisible)] \
+        -command [itcl::code $this AdjustSetting -legendvisible] \
+        -font "Arial 9"
+
+    label $inner.background_l -text "Background" -font "Arial 9"
+    itk_component add background {
+        Rappture::Combobox $inner.background -width 10 -editable no
+    }
+    $inner.background choices insert end \
+        "black" "black" \
+        "white" "white" \
+        "grey"  "grey"
+
+    $itk_component(background) value $_settings(-background)
+    bind $inner.background <<Value>> \
+        [itcl::code $this AdjustSetting -background]
+
+    # Dataset options
+    label $inner.flow_l -text "Flow" -font "Arial 9 bold"
+
+    checkbutton $inner.outline \
+        -text "Outline" \
+        -variable [itcl::scope _settings(-outlinevisible)] \
+        -command [itcl::code $this AdjustSetting -outlinevisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.volume \
+        -text "Volume" \
+        -variable [itcl::scope _settings(-volume)] \
+        -command [itcl::code $this AdjustSetting -volume] \
+        -font "Arial 9"
+
+    frame $inner.frame
+
+    blt::table $inner \
+        0,0 $inner.axes -cspan 2 -anchor w \
+        1,0 $inner.grid -cspan 2 -anchor w \
+        2,0 $inner.legend -cspan 2 -anchor w \
+        3,0 $inner.background_l -anchor e -pady 2 \
+        3,1 $inner.background -fill x \
+        4,0 $inner.flow_l -anchor w \
+        5,0 $inner.outline -cspan 2 -anchor w \
+        6,0 $inner.volume -cspan 2 -anchor w \
+
+    bind $inner <Map> [itcl::code $this GetFlowInfo $inner]
+
+    blt::table configure $inner c* r* -resize none
+    blt::table configure $inner c2 r7 -resize expand
+}
+
+itcl::body Rappture::FlowvisViewer::BuildVolumeTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Volume Settings" \
+        -icon [Rappture::icon volume-on]]
+    $inner configure -borderwidth 4
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    checkbutton $inner.vol -text "Show volume" -font $fg \
+        -text "Volume" \
+        -variable [itcl::scope _settings(-volume)] \
+        -command [itcl::code $this AdjustSetting -volume] \
+        -font "Arial 9"
+
+    label $inner.lighting_l \
+        -text "Lighting / Material Properties" \
+        -font "Arial 9 bold"
+
+    checkbutton $inner.isosurface -text "Isosurface shading" -font $fg \
+        -variable [itcl::scope _settings(-isosurfaceshading)] \
+        -command [itcl::code $this AdjustSetting -isosurfaceshading]
+
+    checkbutton $inner.light2side -text "Two-sided lighting" -font $fg \
+        -variable [itcl::scope _settings(-light2side)] \
+        -command [itcl::code $this AdjustSetting -light2side]
+
+    label $inner.dim -text "Glow" -font $fg
+    ::scale $inner.light -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-light)] \
+        -width 10 \
+        -showvalue off -command [itcl::code $this AdjustSetting -light]
+    label $inner.bright -text "Surface" -font $fg
+
+    # Opacity
+    label $inner.opacity_l -text "Opacity" -font $fg
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-opacity)] \
+        -width 10 \
+        -showvalue off -command [itcl::code $this AdjustSetting -opacity]
+
+    label $inner.transferfunction_l \
+        -text "Transfer Function" -font "Arial 9 bold"
+
+    # Tooth thickness
+    label $inner.thin -text "Thin" -font $fg
+    ::scale $inner.thickness -from 0 -to 1000 -orient horizontal \
+        -variable [itcl::scope _settings(-thickness)] \
+        -width 10 \
+        -showvalue off -command [itcl::code $this AdjustSetting -thickness]
+    label $inner.thick -text "Thick" -font $fg
+
+    # Colormap
+    label $inner.colormap_l -text "Colormap" -font $fg
+    itk_component add colormap {
+        Rappture::Combobox $inner.colormap -width 10 -editable no
+    }
+
+    $inner.colormap choices insert end [GetColormapList -includeNone]
+    bind $inner.colormap <<Value>> \
+        [itcl::code $this AdjustSetting -colormap]
+    $itk_component(colormap) value "BCGYR"
+    set _settings(-colormap) "BCGYR"
+
+    blt::table $inner \
+        0,0 $inner.vol -cspan 4 -anchor w -pady 2 \
+        1,0 $inner.lighting_l -cspan 4 -anchor w -pady {10 2} \
+        2,0 $inner.light2side -cspan 4 -anchor w -pady 2 \
+        3,0 $inner.dim -anchor e -pady 2 \
+        3,1 $inner.light -cspan 2 -pady 2 -fill x \
+        3,3 $inner.bright -anchor w -pady 2 \
+        4,0 $inner.opacity_l -anchor e -pady 2 \
+        4,1 $inner.opacity -cspan 3 -pady 2 -fill x \
+        5,0 $inner.thin -anchor e -pady 2 \
+        5,1 $inner.thickness -cspan 2 -pady 2 -fill x \
+        5,3 $inner.thick -anchor w -pady 2
+
+    blt::table configure $inner c0 c1 c3 r* -resize none
+    blt::table configure $inner r6 -resize expand
+}
+
+itcl::body Rappture::FlowvisViewer::BuildCutplanesTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Cutplane Settings" \
+        -icon [Rappture::icon cutbutton]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Show Cutplanes" \
+        -variable [itcl::scope _settings(-cutplanesvisible)] \
+        -command [itcl::code $this AdjustSetting -cutplanesvisible] \
+        -font "Arial 9"
+
+    # X-value slicer...
+    itk_component add xCutButton {
+        Rappture::PushButton $inner.xbutton \
+            -onimage [Rappture::icon x-cutplane] \
+            -offimage [Rappture::icon x-cutplane] \
+            -command [itcl::code $this AdjustSetting -xcutplanevisible] \
+            -variable [itcl::scope _settings(-xcutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(xCutButton) \
+        "Toggle the X cut plane on/off"
+    $itk_component(xCutButton) select
+
+    itk_component add xCutScale {
+        ::scale $inner.xval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue off \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this Slice move x] \
+            -variable [itcl::scope _settings(-xcutplaneposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(xCutScale) set 50
+    $itk_component(xCutScale) configure -state disabled
+    Rappture::Tooltip::for $itk_component(xCutScale) \
+        "@[itcl::code $this SlicerTip x]"
+
+    # Y-value slicer...
+    itk_component add yCutButton {
+        Rappture::PushButton $inner.ybutton \
+            -onimage [Rappture::icon y-cutplane] \
+            -offimage [Rappture::icon y-cutplane] \
+            -command [itcl::code $this AdjustSetting -ycutplanevisible] \
+            -variable [itcl::scope _settings(-ycutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(yCutButton) \
+        "Toggle the Y cut plane on/off"
+    $itk_component(yCutButton) select
+
+    itk_component add yCutScale {
+        ::scale $inner.yval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue off \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this Slice move y] \
+            -variable [itcl::scope _settings(-ycutplaneposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    Rappture::Tooltip::for $itk_component(yCutScale) \
+        "@[itcl::code $this SlicerTip y]"
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(yCutScale) set 50
+    $itk_component(yCutScale) configure -state disabled
+
+    # Z-value slicer...
+    itk_component add zCutButton {
+        Rappture::PushButton $inner.zbutton \
+            -onimage [Rappture::icon z-cutplane] \
+            -offimage [Rappture::icon z-cutplane] \
+            -command [itcl::code $this AdjustSetting -zcutplanevisible] \
+            -variable [itcl::scope _settings(-zcutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(zCutButton) \
+        "Toggle the Z cut plane on/off"
+    $itk_component(zCutButton) select
+
+    itk_component add zCutScale {
+        ::scale $inner.zval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue off \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this Slice move z] \
+            -variable [itcl::scope _settings(-zcutplaneposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    $itk_component(zCutScale) set 50
+    $itk_component(zCutScale) configure -state disabled
+    Rappture::Tooltip::for $itk_component(zCutScale) \
+        "@[itcl::code $this SlicerTip z]"
+
+    blt::table $inner \
+        0,1 $inner.visible -anchor w -pady 2 -cspan 4 \
+        1,1 $itk_component(xCutScale) \
+        1,2 $itk_component(yCutScale) \
+        1,3 $itk_component(zCutScale) \
+        2,1 $itk_component(xCutButton) \
+        2,2 $itk_component(yCutButton) \
+        2,3 $itk_component(zCutButton)
+
+    blt::table configure $inner r0 r1 r2 c* -resize none
+    blt::table configure $inner r3 c4 -resize expand
+    blt::table configure $inner c0 -width 2
+    blt::table configure $inner c1 c2 c3 -padx 2
+}
+
+itcl::body Rappture::FlowvisViewer::BuildCameraTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Camera Settings" \
+        -icon [Rappture::icon camera]]
+    $inner configure -borderwidth 4
+
+    label $inner.view_l -text "view" -font "Arial 9"
+    set f [frame $inner.view]
+    foreach side { front back left right top bottom } {
+        button $f.$side  -image [Rappture::icon view$side] \
+            -command [itcl::code $this SetOrientation $side]
+        Rappture::Tooltip::for $f.$side "Change the view to $side"
+        pack $f.$side -side left
+    }
+
+    blt::table $inner \
+        0,0 $inner.view_l -anchor e -pady 2 \
+        0,1 $inner.view -anchor w -pady 2
+    blt::table configure $inner r0 -resize none
+
+    set row 1
+    set labels { qw qx qy qz xpan ypan zoom }
+    foreach tag $labels {
+        label $inner.${tag}label -text $tag -font "Arial 9"
+        entry $inner.${tag} -font "Arial 9"  -bg white \
+            -textvariable [itcl::scope _settings(-$tag)]
+        bind $inner.${tag} <Return> \
+            [itcl::code $this camera set -${tag}]
+        bind $inner.${tag} <KP_Enter> \
+            [itcl::code $this camera set -${tag}]
+        blt::table $inner \
+            $row,0 $inner.${tag}label -anchor e -pady 2 \
+            $row,1 $inner.${tag} -anchor w -pady 2
+        blt::table configure $inner r$row -resize none
+        incr row
+    }
+
+    blt::table configure $inner c* -resize none
+    blt::table configure $inner c2 -resize expand
+    blt::table configure $inner r$row -resize expand
+}
+
+itcl::body Rappture::FlowvisViewer::GetFlowInfo { w } {
+    set flowobj ""
+    foreach key [array names _dataset2flow] {
+        set flowobj $_dataset2flow($key)
+        break
+    }
+    if { $flowobj == "" } {
+        return
+    }
+    if { [winfo exists $w.frame] } {
+        destroy $w.frame
+    }
+    set inner [frame $w.frame]
+    blt::table $w \
+        7,0 $inner -fill both -cspan 2 -anchor nw
+    array set hints [$flowobj hints]
+    checkbutton $inner.showstreams -text "Streams Plane" \
+        -variable [itcl::scope _settings(-streams)] \
+        -command  [itcl::code $this streams $key $hints(name)]  \
+        -font "Arial 9"
+    Rappture::Tooltip::for $inner.showstreams $hints(description)
+
+    checkbutton $inner.showarrows -text "Arrows" \
+        -variable [itcl::scope _settings(-arrows)] \
+        -command  [itcl::code $this arrows $key $hints(name)]  \
+        -font "Arial 9"
+
+    label $inner.particles -text "Particles" -font "Arial 9 bold"
+    label $inner.boxes -text "Boxes" -font "Arial 9 bold"
+
+    blt::table $inner \
+        1,0 $inner.showstreams  -anchor w \
+        2,0 $inner.showarrows  -anchor w
+    blt::table configure $inner c0 c1 -resize none
+    blt::table configure $inner c2 -resize expand
+
+    set row 3
+    set particles [$flowobj particles]
+    if { [llength $particles] > 0 } {
+        blt::table $inner $row,0 $inner.particles  -anchor w
+        incr row
+    }
+    foreach part $particles {
+        array unset info
+        array set info $part
+        set name $info(name)
+        if { ![info exists _settings(-particles-$name)] } {
+            set _settings(-particles-$name) $info(hide)
+        }
+        checkbutton $inner.part$row -text $info(label) \
+            -variable [itcl::scope _settings(-particles-$name)] \
+            -onvalue 0 -offvalue 1 \
+            -command [itcl::code $this particles $key $name] \
+            -font "Arial 9"
+        Rappture::Tooltip::for $inner.part$row $info(description)
+        blt::table $inner $row,0 $inner.part$row -anchor w
+        if { !$_settings(-particles-$name) } {
+            $inner.part$row select
+        }
+        incr row
+    }
+    set boxes [$flowobj boxes]
+    if { [llength $boxes] > 0 } {
+        blt::table $inner $row,0 $inner.boxes  -anchor w
+        incr row
+    }
+    foreach box $boxes {
+        array unset info
+        array set info $box
+        set name $info(name)
+        if { ![info exists _settings(-box-$name)] } {
+            set _settings(-box-$name) $info(hide)
+        }
+        checkbutton $inner.box$row -text $info(label) \
+            -variable [itcl::scope _settings(-box-$name)] \
+            -onvalue 0 -offvalue 1 \
+            -command [itcl::code $this box $key $name] \
+            -font "Arial 9"
+        Rappture::Tooltip::for $inner.box$row $info(description)
+        blt::table $inner $row,0 $inner.box$row -anchor w
+        if { !$_settings(-box-$name) } {
+            $inner.box$row select
+        }
+        incr row
+    }
+    blt::table configure $inner r* -resize none
+    blt::table configure $inner r$row -resize expand
+    blt::table configure $inner c3 -resize expand
+    event generate [winfo parent [winfo parent $w]] <Configure>
+}
+
+itcl::body Rappture::FlowvisViewer::particles { tag name } {
+    set bool $_settings(-particles-$name)
+    SendCmd "$tag particles configure {$name} -hide $bool"
+}
+
+itcl::body Rappture::FlowvisViewer::box { tag name } {
+    set bool $_settings(-box-$name)
+    SendCmd "$tag box configure {$name} -hide $bool"
+}
+
+itcl::body Rappture::FlowvisViewer::streams { tag name } {
+    set bool $_settings(-streams)
+    SendCmd "$tag configure -slice $bool"
+}
+
+itcl::body Rappture::FlowvisViewer::arrows { tag name } {
+    set bool $_settings(-arrows)
+    SendCmd "$tag configure -arrows $bool"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Slice move x|y|z <newval>
+#
+# Called automatically when the user drags the slider to move the
+# cut plane that slices 3D data.  Gets the current value from the
+# slider and moves the cut plane to the appropriate point in the
+# data set.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::Slice {option args} {
+    switch -- $option {
+        move {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Slice move x|y|z newval\""
+            }
+            set axis [lindex $args 0]
+            set newval [lindex $args 1]
+
+            set newpos [expr {0.01*$newval}]
+            set datasets [CurrentDatasets -cutplanes]
+            set tag [lindex $datasets 0]
+            SendCmd "cutplane position $newpos $axis $tag"
+        }
+        default {
+            error "bad option \"$option\": should be axis, move, or volume"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: SlicerTip <axis>
+#
+# Used internally to generate a tooltip for the x/y/z slicer controls.
+# Returns a message that includes the current slicer value.
+# ----------------------------------------------------------------------
+itcl::body Rappture::FlowvisViewer::SlicerTip {axis} {
+    set val [$itk_component(${axis}CutScale) get]
+    return "Move the [string toupper $axis] cut plane.\nCurrently:  $axis = $val%"
+}
+
+itcl::body Rappture::FlowvisViewer::DoResize {} {
+    $_arcball resize $_width $_height
+    SendCmd "screen size $_width $_height"
+    set _resizePending 0
+}
+
+itcl::body Rappture::FlowvisViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    $_arcball resize $w $h
+    if { !$_resizePending } {
+        $_dispatcher event -after 200 !resize
+        set _resizePending 1
+    }
+}
+
+itcl::body Rappture::FlowvisViewer::EventuallyRedrawLegend {} {
+    if { !$_resizeLegendPending } {
+        $_dispatcher event -after 100 !legend
+        set _resizeLegendPending 1
+    }
+}
+
+itcl::body Rappture::FlowvisViewer::EventuallyGoto { nSteps } {
+    set _flow(goto) $nSteps
+    if { !$_gotoPending } {
+        $_dispatcher event -after 1000 !goto
+        set _gotoPending 1
+    }
+}
+
+#  camera --
+#
+itcl::body Rappture::FlowvisViewer::camera {option args} {
+    switch -- $option {
+        "show" {
+            puts [array get _view]
+        }
+        "set" {
+            set what [lindex $args 0]
+            set x $_settings($what)
+            set code [catch { string is double $x } result]
+            if { $code != 0 || !$result } {
+                set _settings($what) $_view($what)
+                return
+            }
+            switch -- $what {
+                "-xpan" - "-ypan" {
+                    set _view($what) $_settings($what)
+                    PanCamera
+                }
+                "-qx" - "-qy" - "-qz" - "-qw" {
+                    set _view($what) $_settings($what)
+                    set q [ViewToQuaternion]
+                    $_arcball quaternion $q
+                    SendCmd "camera orient $q"
+                }
+                "-zoom" {
+                    set _view($what) $_settings($what)
+                    SendCmd "camera zoom $_view($what)"
+                }
+            }
+        }
+    }
+}
+
+itcl::body Rappture::FlowvisViewer::SendFlowCmd { dataobj comp nbytes numComponents } {
+    set tag "$dataobj-$comp"
+    if { ![info exists _dataset2flow($tag)] } {
+        SendCmd "flow add $tag"
+        SendCmd "$tag data follows $nbytes $numComponents"
+        return 0
+    }
+    set flowobj $_dataset2flow($tag)
+    if { $flowobj == "" } {
+        puts stderr "no flowobj"
+        return -1
+    }
+    SendCmd "if {\[flow exists $tag\]} {flow delete $tag}"
+    array set info [$flowobj hints]
+    set _settings(-volume) $info(volume)
+    set _settings(-outlinevisible) $info(outline)
+    set _settings(-arrows) $info(arrows)
+    set _settings(-duration) $info(duration)
+    $itk_component(speed) value $info(speed)
+    set cmd {}
+    append cmd "flow add $tag"
+    append cmd " -position $info(position)"
+    append cmd " -axis $info(axis)"
+    append cmd " -volume $info(volume)"
+    append cmd " -outline $info(outline)"
+    append cmd " -slice $info(streams)"
+    append cmd " -arrows $info(arrows)"
+    SendCmd $cmd
+    foreach part [$flowobj particles] {
+        set cmd {}
+        array unset info
+        array set info $part
+        set color [Color2RGB $info(color)]
+        append cmd "$tag particles add $info(name)"
+        append cmd " -position $info(position)"
+        append cmd " -hide $info(hide)"
+        append cmd " -axis $info(axis)"
+        append cmd " -color {$color}"
+        append cmd " -size $info(size)"
+        SendCmd $cmd
+    }
+    foreach box [$flowobj boxes] {
+        set cmd {}
+        array unset info
+        set info(corner1) ""
+        set info(corner2) ""
+        array set info $box
+        if { $info(corner1) == "" || $info(corner2) == "" } {
+            continue
+        }
+        set color [Color2RGB $info(color)]
+        append cmd "$tag box add $info(name)"
+        append cmd " -color {$color}"
+        append cmd " -hide $info(hide)"
+        append cmd " -linewidth $info(linewidth) "
+        append cmd " -corner1 {$info(corner1)} "
+        append cmd " -corner2 {$info(corner2)}"
+        SendCmd $cmd
+    }
+    SendCmd "$tag data follows $nbytes $numComponents"
+    return 0
+}
+
+#
+# flow --
+#
+# Called when the user clicks on the stop or play buttons
+# for flow visualization.
+#
+#        $this flow play
+#        $this flow stop
+#        $this flow toggle
+#        $this flow reset
+#        $this flow pause
+#        $this flow next
+#
+itcl::body Rappture::FlowvisViewer::flow { args } {
+    set option [lindex $args 0]
+    switch -- $option {
+        "goto2" {
+            puts stderr "actually sending \"flow goto $_flow(goto)\""
+            SendCmd "flow goto $_flow(goto)"
+            set _gotoPending 0
+        }
+        "goto" {
+            puts stderr "flow goto to $_settings(-currenttime)"
+            # Figure out how many steps to the current time based upon
+            # the speed and duration.
+            set current $_settings(-currenttime)
+            set speed [$itk_component(speed) value]
+            set time [str2millisecs $_settings(-duration)]
+            $itk_component(dial) configure -max $time
+            set delay [expr int(round(500.0/$speed))]
+            set timePerStep [expr {double($time) / $delay}]
+            set nSteps [expr {int(ceil($current/$timePerStep))}]
+            EventuallyGoto $nSteps
+        }
+        "speed" {
+            set speed [$itk_component(speed) value]
+            set _flow(delay) [expr int(round(500.0/$speed))]
+        }
+        "duration" {
+            set max [str2millisecs $_settings(-duration)]
+            if { $max < 0 } {
+                bell
+                return
+            }
+            set _flow(duration) $max
+            set _settings(-duration) [millisecs2str $max]
+            $itk_component(dial) configure -max $max
+        }
+        "off" {
+            set _flow(state) 0
+            $_dispatcher cancel !play
+            $itk_component(play) deselect
+        }
+        "on" {
+            flow speed
+            flow duration
+            set _flow(state) 1
+            set _settings(-currenttime) 0
+            $itk_component(play) select
+        }
+        "stop" {
+            if { $_flow(state) } {
+                flow off
+                flow reset
+            }
+        }
+        "pause" {
+            if { $_flow(state) } {
+                flow off
+            }
+        }
+        "play" {
+            # If the flow is currently off, then restart it.
+            if { !$_flow(state) } {
+                flow on
+                # If we're at the end of the flow, reset the flow.
+                set _settings(-currenttime) \
+                    [expr {$_settings(-currenttime) + $_flow(delay)}]
+                if { $_settings(-currenttime) >= $_flow(duration) } {
+                    set _settings(-step) 1
+                    SendCmd "flow reset"
+                }
+                flow next
+            }
+        }
+        "toggle" {
+            if { $_settings(-play) } {
+                flow play
+            } else {
+                flow pause
+            }
+        }
+        "reset" {
+            set _settings(-currenttime) 0
+            SendCmd "flow reset"
+        }
+        "next" {
+            if { ![winfo viewable $itk_component(view)] } {
+                flow stop
+                return
+            }
+            set _settings(-currenttime) \
+                [expr {$_settings(-currenttime) + $_flow(delay)}]
+            if { $_settings(-currenttime) >= $_flow(duration) } {
+                if { !$_settings(-loop) } {
+                    flow off
+                    return
+                }
+                flow reset
+            } else {
+                SendCmd "flow next"
+            }
+            $_dispatcher event -after $_flow(delay) !play
+        }
+        default {
+            error "bad option \"$option\": should be play, stop, toggle, or reset."
+        }
+    }
+}
+
+itcl::body Rappture::FlowvisViewer::WaitIcon { option widget } {
+    switch -- $option {
+        "start" {
+            $_dispatcher dispatch $this !waiticon \
+                "[itcl::code $this WaitIcon "next" $widget] ; list"
+            set _icon 0
+            $widget configure -image [Rappture::icon bigroller${_icon}]
+            $_dispatcher event -after 100 !waiticon
+        }
+        "next" {
+            incr _icon
+            if { $_icon >= 8 } {
+                set _icon 0
+            }
+            $widget configure -image [Rappture::icon bigroller${_icon}]
+            $_dispatcher event -after 100 !waiticon
+        }
+        "stop" {
+            $_dispatcher cancel !waiticon
+        }
+    }
+}
+
+itcl::body Rappture::FlowvisViewer::GetVtkData { args } {
+    # FIXME: We can only put one component of one dataset in a single
+    # VTK file.  To download all components/results, we would need
+    # to put them in an archive (e.g. zip or tar file)
+    if { $_first != "" } {
+        set cname [lindex [$_first components] 0]
+        set bytes [$_first vtkdata $cname]
+        return [list .vtk $bytes]
+    }
+    puts stderr "Failed to get vtkdata"
+    return ""
+}
+
+itcl::body Rappture::FlowvisViewer::GetImage { args } {
+    if { [image width $_image(download)] > 0 &&
+         [image height $_image(download)] > 0 } {
+        set bytes [$_image(download) data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        return [list .jpg $bytes]
+    }
+    return ""
+}
+
+itcl::body Rappture::FlowvisViewer::GetPngImage { widget width height } {
+    set token "print[incr _nextToken]"
+    set var ::Rappture::FlowvisViewer::_hardcopy($this-$token)
+    set $var ""
+
+    # Setup an automatic timeout procedure.
+    $_dispatcher dispatch $this !pngtimeout "set $var {} ; list"
+
+    set popup .flowvisviewerprint
+    if {![winfo exists $popup]} {
+        Rappture::Balloon $popup -title "Generating file..."
+        set inner [$popup component inner]
+        label $inner.title -text "Generating hardcopy." -font "Arial 10 bold"
+        label $inner.please -text "This may take a minute." -font "Arial 10"
+        label $inner.icon -image [Rappture::icon bigroller0]
+        button $inner.cancel -text "Cancel" -font "Arial 10 bold" \
+            -command [list set $var ""]
+        blt::table $inner \
+            0,0 $inner.title -cspan 2 \
+            1,0 $inner.please -anchor w \
+            1,1 $inner.icon -anchor e  \
+            2,0 $inner.cancel -cspan 2
+        blt::table configure $inner r0 -pady 4
+        blt::table configure $inner r2 -pady 4
+        bind $inner.cancel <KeyPress-Return> [list $inner.cancel invoke]
+    } else {
+        set inner [$popup component inner]
+    }
+
+    $_dispatcher event -after 60000 !pngtimeout
+    WaitIcon start $inner.icon
+    grab set $inner
+    focus $inner.cancel
+
+    SendCmd "print $token $width $height"
+
+    $popup activate $widget below
+    update idletasks
+    update
+    # We wait here for either
+    #  1) the png to be delivered or
+    #  2) timeout or
+    #  3) user cancels the operation.
+    tkwait variable $var
+
+    # Clean up.
+    $_dispatcher cancel !pngtimeout
+    WaitIcon stop $inner.icon
+    grab release $inner
+    $popup deactivate
+    update
+
+    if { $_hardcopy($this-$token) != "" } {
+        return [list .png $_hardcopy($this-$token)]
+    }
+    return ""
+}
+
+itcl::body Rappture::FlowvisViewer::GetMovie { widget w h } {
+    set token "movie[incr _nextToken]"
+    set var ::Rappture::FlowvisViewer::_hardcopy($this-$token)
+    set $var ""
+
+    # Setup an automatic timeout procedure.
+    $_dispatcher dispatch $this !movietimeout "set $var {} ; list"
+    set popup .flowvisviewermovie
+    if {![winfo exists $popup]} {
+        Rappture::Balloon $popup -title "Generating movie..."
+        set inner [$popup component inner]
+        label $inner.title -text "Generating movie for download" \
+                -font "Arial 10 bold"
+        label $inner.please -text "This may take a few minutes." \
+                -font "Arial 10"
+        label $inner.icon -image [Rappture::icon bigroller0]
+        button $inner.cancel -text "Cancel" -font "Arial 10 bold" \
+            -command [list set $var ""]
+        blt::table $inner \
+            0,0 $inner.title -cspan 2 \
+            1,0 $inner.please -anchor w \
+            1,1 $inner.icon -anchor e  \
+            2,0 $inner.cancel -cspan 2
+        blt::table configure $inner r0 -pady 4
+        blt::table configure $inner r2 -pady 4
+        bind $inner.cancel <KeyPress-Return> [list $inner.cancel invoke]
+    } else {
+        set inner [$popup component inner]
+    }
+    update
+    # Timeout is set to 10 minutes.
+    $_dispatcher event -after 600000 !movietimeout
+    WaitIcon start $inner.icon
+    grab set $inner
+    focus $inner.cancel
+
+    flow duration
+    flow speed
+    set nframes [expr round($_flow(duration) / $_flow(delay))]
+    set framerate [expr 1000.0 / $_flow(delay)]
+
+    # These are specific to MPEG1 video generation
+    set framerate 25.0
+    set bitrate 6.0e+6
+
+    set start [clock seconds]
+    SendCmd "flow video $token -width $w -height $h -numframes $nframes "
+
+    $popup activate $widget below
+    update idletasks
+    update
+    # We wait here until
+    #  1. the movie is delivered or
+    #  2. we've timed out or
+    #  3. the user has canceled the operation.b
+    tkwait variable $var
+
+    puts stderr "Video generated in [expr [clock seconds] - $start] seconds."
+
+    # Clean up.
+    $_dispatcher cancel !movietimeout
+    WaitIcon stop $inner.icon
+    grab release $inner
+    $popup deactivate
+    destroy $popup
+    update
+
+    # This will both cancel the movie generation (if it hasn't already
+    # completed) and reset the flow.
+    SendCmd "flow reset"
+    if { $_hardcopy($this-$token) != "" } {
+        return [list .mpg $_hardcopy($this-$token)]
+    }
+    return ""
+}
+
+itcl::body Rappture::FlowvisViewer::BuildDownloadPopup { popup command } {
+    Rappture::Balloon $popup \
+        -title "[Rappture::filexfer::label downloadWord] as..."
+    set inner [$popup component inner]
+    label $inner.summary -text "" -anchor w
+    radiobutton $inner.vtk_button -text "VTK data file" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9" \
+        -value vtk
+    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
+
+    radiobutton $inner.image_button -text "Image File" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value image
+    Rappture::Tooltip::for $inner.image_button \
+        "Save as digital image."
+
+    set res "640x480"
+    radiobutton $inner.movie_std -text "Movie (standard $res)" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -value $res
+    Rappture::Tooltip::for $inner.movie_std \
+        "Save as movie file."
+
+    set res "1024x768"
+    radiobutton $inner.movie_high -text "Movie (high quality $res)" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -value $res
+    Rappture::Tooltip::for $inner.movie_high \
+        "Save as movie file."
+
+    button $inner.ok -text "Save" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command $command \
+        -compound left \
+        -image [Rappture::icon download]
+
+    button $inner.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command [list $popup deactivate] \
+        -compound left \
+        -image [Rappture::icon cancel]
+
+    blt::table $inner \
+        0,0 $inner.summary -cspan 2  \
+        1,0 $inner.vtk_button -anchor w -cspan 2 -padx { 4 0 } \
+        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
+        3,0 $inner.movie_std -anchor w -cspan 2 -padx { 4 0 } \
+        4,0 $inner.movie_high -anchor w -cspan 2 -padx { 4 0 } \
+        6,1 $inner.cancel -width .9i -fill y \
+        6,0 $inner.ok -padx 2 -width .9i -fill y
+    blt::table configure $inner r5 -height 4
+    blt::table configure $inner r6 -pady 4
+    raise $inner.image_button
+    $inner.vtk_button invoke
+    return $inner
+}
+
+itcl::body Rappture::FlowvisViewer::str2millisecs { value } {
+    set parts [split $value :]
+    set secs 0
+    set mins 0
+    if { [llength $parts] == 1 } {
+        scan [lindex $parts 0] "%d" secs
+    } else {
+        scan [lindex $parts 1] "%d" secs
+        scan [lindex $parts 0] "%d" mins
+    }
+    set ms [expr {(($mins * 60) + $secs) * 1000.0}]
+    if { $ms > 600000.0 } {
+        set ms 600000.0
+    }
+    if { $ms == 0.0 } {
+        set ms 60000.0
+    }
+    return $ms
+}
+
+itcl::body Rappture::FlowvisViewer::millisecs2str { value } {
+    set min [expr floor($value / 60000.0)]
+    set sec [expr ($value - ($min*60000.0)) / 1000.0]
+    return [format %02d:%02d [expr round($min)] [expr round($sec)]]
+}
+
+itcl::body Rappture::FlowvisViewer::SetOrientation { side } {
+    array set positions {
+        front "1 0 0 0"
+        back  "0 0 1 0"
+        left  "0.707107 0 -0.707107 0"
+        right "0.707107 0 0.707107 0"
+        top   "0.707107 -0.707107 0 0"
+        bottom "0.707107 0.707107 0 0"
+    }
+    foreach name { -qw -qx -qy -qz } value $positions($side) {
+        set _view($name) $value
+    }
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    set _view(-xpan) 0
+    set _view(-ypan) 0
+    set _view(-zoom) 1.0
+    set _settings(-xpan) $_view(-xpan)
+    set _settings(-ypan) $_view(-ypan)
+    set _settings(-zoom) $_view(-zoom)
+}
+
+#
+# BuildVolumeComponents --
+#
+# This is called from the "scale" method which is called when a new
+# dataset is added or deleted.  It repopulates the dropdown menu of
+# volume component names.  It sets the current component to the first
+# component in the list (of components found).  Finally, if there is
+# only one component, don't display the label or the combobox in the
+# volume settings tab.
+#
+itcl::body Rappture::FlowvisViewer::BuildVolumeComponents {} {
+    $itk_component(volcomponents) choices delete 0 end
+    foreach name $_componentsList {
+        $itk_component(volcomponents) choices insert end $name $name
+    }
+    set _current [lindex $_componentsList 0]
+    $itk_component(volcomponents) value $_current
+}
+
+#
+# GetDatasetsWithComponents --
+#
+# Returns a list of all the datasets (known by the combination of their
+# data object and component name) that match the given component name.
+# For example, this is used where we want to change the settings of
+# volumes that have the current component.
+#
+itcl::body Rappture::FlowvisViewer::GetDatasetsWithComponent { cname } {
+    if { ![info exists _volcomponents($cname)] } {
+        return ""
+    }
+    set list ""
+    foreach tag $_volcomponents($cname) {
+        if { ![info exists _serverDatasets($tag)] } {
+            continue
+        }
+        lappend list $tag
+    }
+    return $list
+}
Index: /tags/1.6.0/gui/scripts/gauge.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/gauge.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/gauge.tcl	(revision 6168)
@@ -0,0 +1,772 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: gauge - compact readout for real values
+#
+#  This widget is a readout for a real value.  It has a little glyph
+#  filled with color according to the value, followed by a numeric
+#  representation of the value itself.  The value can be edited, and
+#  a list of predefined values can be associated with a menu that
+#  drops down from the value.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Gauge.sampleWidth 30 widgetDefault
+option add *Gauge.sampleHeight 20 widgetDefault
+option add *Gauge.borderWidth 2 widgetDefault
+option add *Gauge.relief sunken widgetDefault
+option add *Gauge.valuePosition "right" widgetDefault
+option add *Gauge.textBackground #cccccc widgetDefault
+option add *Gauge.editable yes widgetDefault
+
+itcl::class Rappture::Gauge {
+    inherit itk::Widget
+
+    itk_option define -editable editable Editable ""
+    itk_option define -state state State "normal"
+    itk_option define -spectrum spectrum Spectrum ""
+    itk_option define -type type Type "real"
+    itk_option define -units units Units ""
+    itk_option define -minvalue minValue MinValue ""
+    itk_option define -maxvalue maxValue MaxValue ""
+    itk_option define -presets presets Presets ""
+    itk_option define -valueposition valuePosition ValuePosition ""
+    itk_option define -image image Image ""
+    itk_option define -samplewidth sampleWidth SampleWidth 0
+    itk_option define -sampleheight sampleHeight SampleHeight 0
+    itk_option define -log log Log ""
+    itk_option define -varname varname Varname ""
+    itk_option define -label label Label ""
+    itk_option define -validatecommand validateCommand ValidateCommand ""
+    itk_option define -uq uq Uq no
+
+    constructor {args} { # defined below }
+
+    public method value {args}
+    public method edit {option}
+    public method bump {delta}
+
+    protected method _redraw {}
+    protected method _resize {}
+    protected method _hilite {comp state}
+    protected method _editor {option args}
+    protected method _presets {option}
+    protected method _layout {}
+    protected method _log {event args}
+    protected method _change_param_type {choice}
+    protected method _pop_uq {win}
+    protected method _pop_uq_deactivate {}
+
+    private variable _value 0  ;# value for this widget
+    private variable _mode exact ;# current mode
+    private variable _pde ""   ;# ProbDistEditor
+    private variable _val ""   ;# value choice combobox
+    private variable uq no
+
+    blt::bitmap define GaugeArrow {
+        #define arrow_width 9
+        #define arrow_height 4
+        static unsigned char arrow_bits[] = {
+           0x7f, 0x00, 0x3e, 0x00, 0x1c, 0x00, 0x08, 0x00};
+    }
+}
+
+itk::usual Gauge {
+    keep -cursor -font -foreground -background
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Gauge::constructor {args} {
+    # puts "GAUGE CONS: $args"
+    array set attrs $args
+
+    itk_option remove hull.borderwidth hull.relief
+    component hull configure -borderwidth 0
+
+    itk_component add icon {
+        canvas $itk_interior.icon -width 1 -height 1 \
+            -borderwidth 0 -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness -highlightbackground -highlightcolor
+        ignore -borderwidth -relief
+    }
+    bind $itk_component(icon) <Configure> [itcl::code $this _redraw]
+
+    if {[info exists attrs(-uq)]} {
+        set uq $attrs(-uq)
+        if {[string is true $uq]} {
+            set uq 1
+            itk_component add uq {
+                button $itk_interior.uq -image [Rappture::icon UQ] \
+                    -command [itcl::code $this _pop_uq $itk_interior]
+            }
+            pack $itk_component(uq) -side right -padx 10
+        } else {
+            set uq 0
+        }
+    } else {
+        set uq 0
+    }
+
+    itk_component add -protected vframe {
+        frame $itk_interior.vframe
+    } {
+        keep -borderwidth -relief
+    }
+
+    itk_component add value {
+        label $itk_component(vframe).value -width 20 \
+            -borderwidth 1 -relief flat -textvariable [itcl::scope _value]
+    } {
+        keep -font
+        rename -background -textbackground textBackground Background
+    }
+    pack $itk_component(value) -side left -expand yes -fill both
+
+    bind $itk_component(value) <Enter> [itcl::code $this _hilite value on]
+    bind $itk_component(value) <Leave> [itcl::code $this _hilite value off]
+
+    bind $itk_component(value) <<Cut>> [itcl::code $this edit cut]
+    bind $itk_component(value) <<Copy>> [itcl::code $this edit copy]
+    bind $itk_component(value) <<Paste>> [itcl::code $this edit paste]
+
+    itk_component add emenu {
+        menu $itk_component(value).menu -tearoff 0
+    } {
+        usual
+        ignore -tearoff
+    }
+    $itk_component(emenu) add command -label "Cut" -accelerator "^X" \
+        -command [list event generate $itk_component(value) <<Cut>>]
+    $itk_component(emenu) add command -label "Copy" -accelerator "^C" \
+        -command [list event generate $itk_component(value) <<Copy>>]
+    $itk_component(emenu) add command -label "Paste" -accelerator "^V" \
+        -command [list event generate $itk_component(value) <<Paste>>]
+    bind $itk_component(value) <<PopupMenu>> \
+        [itcl::code $this _editor menu %X %Y]
+
+    itk_component add editor {
+        Rappture::Editor $itk_interior.editor \
+            -activatecommand [itcl::code $this _editor activate] \
+            -validatecommand [itcl::code $this _editor validate] \
+            -applycommand [itcl::code $this _editor apply]
+    }
+    bind $itk_component(value) <ButtonPress> \
+        [itcl::code $this _editor popup]
+
+
+    itk_component add spinner {
+        frame $itk_component(vframe).spinner
+    }
+
+    itk_component add spinup {
+        button $itk_component(spinner).up -image [Rappture::icon intplus] \
+            -borderwidth 1 -relief raised -highlightthickness 0 \
+            -command [itcl::code $this bump 1]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+        rename -background -buttonbackground buttonBackground Background
+    }
+    pack $itk_component(spinup) -side left -expand yes -fill both
+
+    itk_component add spindn {
+        button $itk_component(spinner).down -image [Rappture::icon intminus] \
+            -borderwidth 1 -relief raised -highlightthickness 0 \
+            -command [itcl::code $this bump -1]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+        rename -background -buttonbackground buttonBackground Background
+    }
+    pack $itk_component(spindn) -side right -expand yes -fill both
+
+    itk_component add presets {
+        button $itk_component(vframe).psbtn -bitmap GaugeArrow \
+            -borderwidth 1 -highlightthickness 0 -relief raised
+    } {
+        usual
+        ignore -borderwidth -relief -highlightthickness
+    }
+
+    bind $itk_component(presets) <Enter> [itcl::code $this _hilite presets on]
+    bind $itk_component(presets) <Leave> [itcl::code $this _hilite presets off]
+
+    itk_component add presetlist {
+        Rappture::Dropdownlist $itk_component(presets).plist \
+            -postcommand [itcl::code $this _presets post] \
+            -unpostcommand [itcl::code $this _presets unpost] \
+    }
+
+    bind $itk_component(presetlist) <<DropdownlistSelect>> \
+        [itcl::code $this _presets select]
+
+    $itk_component(presets) configure -command \
+        [list $itk_component(presetlist) post $itk_component(vframe) left]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Gauge::value {args} {
+    #puts "Gauge value: $args"
+
+    # Query.  Just return the current value.
+    if {[llength $args] == 0} {
+        return $_value
+    }
+
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    } else {
+        set onlycheck 0
+    }
+
+    if {[llength $args] != 1} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    set newval [Rappture::Units::mcheck_range [lindex $args 0] \
+    $itk_option(-minvalue) $itk_option(-maxvalue) $itk_option(-units)]
+
+    set newmode [lindex $newval 0]
+    switch -- $newmode {
+        uniform -
+        gaussian {
+            set _mode $newmode
+        }
+        exact -
+        default {
+            set _mode exact
+        }
+    }
+
+    switch -- $itk_option(-type) {
+        integer {
+            if { [scan $newval "%g" value] != 1 || int($newval) != $value } {
+                error "bad value \"$newval\": should be an integer value"
+            }
+        }
+    }
+
+    #
+    # If there's a -validatecommand option, then invoke the code
+    # now to check the new value.
+    #
+    if {[string length $itk_option(-validatecommand)] > 0} {
+        set cmd "uplevel #0 [list $itk_option(-validatecommand) [list $newval]]"
+        set result [eval $cmd]
+    }
+
+    if {$onlycheck} {
+        return
+    }
+
+    set _value $newval
+    $itk_component(value) configure -width [string length $_value]
+    _redraw
+    event generate $itk_component(hull) <<Value>>
+
+    if {"" != $_pde} {
+        set val [$_val translate [$_val value]]
+        $_val value $_mode
+        $_pde value $_value
+
+    }
+    return $_value
+}
+
+# ----------------------------------------------------------------------
+# USAGE: edit cut
+# USAGE: edit copy
+# USAGE: edit paste
+#
+# Used internally to handle cut/copy/paste operations for the current
+# value.  Usually invoked by <<Cut>>, <<Copy>>, <<Paste>> events, but
+# can also be called directly through this method.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Gauge::edit {option} {
+    if {$itk_option(-state) == "disabled"} {
+        return  ;# disabled? then bail out here!
+    }
+    switch -- $option {
+        cut {
+            edit copy
+            _editor popup
+            $itk_component(editor) value ""
+            $itk_component(editor) deactivate
+        }
+        copy {
+            clipboard clear
+            clipboard append $_value
+        }
+        paste {
+            _editor popup
+            $itk_component(editor) value [clipboard get]
+            $itk_component(editor) deactivate
+        }
+        default {
+            error "bad option \"$option\": should be cut, copy, paste"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: bump <delta>
+#
+# Changes the current value up/down by the <delta> value.  Used
+# internally by the up/down spinner buttons when the value is
+# -type integer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Gauge::bump {delta} {
+    set val $_value
+    if {$val == ""} {
+        set val 0
+    }
+    if {[catch {value [expr {$val+$delta}]} result]} {
+        if {[regexp {allowed here is (.+)} $result match newval]} {
+            set _value $newval
+            $itk_component(value) configure -text $newval
+        }
+        if {[regexp {^bad.*: +(.)(.+)} $result match first tail]
+              || [regexp {(.)(.+)} $result match first tail]} {
+            set result "[string toupper $first]$tail"
+        }
+        bell
+        Rappture::Tooltip::cue $itk_component(value) $result
+        _log warning $result
+        return 0
+    }
+    _log input [value]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Used internally to redraw the gauge on the internal canvas based
+# on the current value and the size of the widget.  In this simple
+# base class, the gauge is drawn as a colored block, with an optional
+# image in the middle of it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Gauge::_redraw {} {
+    set c $itk_component(icon)
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    if {"" == [$c find all]} {
+        # first time around, create the items
+        $c create rectangle 0 0 1 1 -outline black -tags block
+        $c create image 0 0 -anchor center -image "" -tags bimage
+        $c create rectangle 0 0 1 1 -outline "" -fill "" -stipple gray50 -tags screen
+    }
+
+    if {"" != $itk_option(-spectrum)} {
+        set color [$itk_option(-spectrum) get $_value]
+    } else {
+        set color ""
+    }
+
+    # update the items based on current values
+    $c coords block 0 0 [expr {$w-1}] [expr {$h-1}]
+    $c coords screen 0 0 $w $h
+    $c itemconfigure block -fill $color
+
+    $c coords bimage [expr {0.5*$w}] [expr {0.5*$h}]
+
+    if {$itk_option(-state) == "disabled"} {
+        $c itemconfigure screen -fill white
+    } else {
+        $c itemconfigure screen -fill ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _resize
+#
+# Used internally to resize the internal canvas based on the -image
+# option or the size of the text.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Gauge::_resize {} {
+    set w 0
+    set h 0
+
+    if {"" != $itk_option(-image) || "" != $itk_option(-spectrum)} {
+        if {$itk_option(-samplewidth) > 0} {
+            set w $itk_option(-samplewidth)
+        } else {
+            if {$itk_option(-image) != ""} {
+                set w [expr {[image width $itk_option(-image)]+4}]
+            } else {
+                set w [winfo reqheight $itk_component(value)]
+            }
+        }
+
+        if {$itk_option(-sampleheight) > 0} {
+            set h $itk_option(-sampleheight)
+        } else {
+            if {$itk_option(-image) != ""} {
+                set h [expr {[image height $itk_option(-image)]+4}]
+            } else {
+                set h [winfo reqheight $itk_component(value)]
+            }
+        }
+    }
+
+    if {$w > 0 && $h > 0} {
+        $itk_component(icon) configure -width $w -height $h
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _hilite <component> <state>
+#
+# Used internally to resize the internal canvas based on the -image
+# option or the size of the text.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Gauge::_hilite {comp state} {
+    if {$itk_option(-state) == "disabled"} {
+        set state 0  ;# disabled? then don't hilite
+    }
+    if {$comp == "value" && !$itk_option(-editable)} {
+        $itk_component(value) configure -relief flat
+        return
+    }
+
+    if {$state} {
+        $itk_component($comp) configure -relief flat
+    } else {
+        if {$comp eq "presets"} {
+            $itk_component($comp) configure -relief raised
+        } else {
+            $itk_component($comp) configure -relief flat
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _editor popup
+# USAGE: _editor activate
+# USAGE: _editor validate <value>
+# USAGE: _editor apply <value>
+# USAGE: _editor menu <rootx> <rooty>
+#
+# Used internally to handle the various functions of the pop-up
+# editor for the value of this gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Gauge::_editor {option args} {
+    # puts "Gauge::editor option=$option args=$args"
+    if {$itk_option(-state) == "disabled"} {
+        return  ;# disabled? then bail out here!
+    }
+    switch -- $option {
+        popup {
+            if {$itk_option(-editable)} {
+                $itk_component(editor) activate
+            }
+        }
+        activate {
+            return [list text $_value \
+                x [winfo rootx $itk_component(value)] \
+                y [winfo rooty $itk_component(value)] \
+                w [winfo width $itk_component(value)] \
+                h [winfo height $itk_component(value)]]
+        }
+        validate {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"_editor validate val\""
+            }
+            set val [lindex $args 0]
+            if {[catch {value -check $val} result]} {
+                if {[regexp {allowed here is (.+)} $result match newval]} {
+                    $itk_component(editor) value $newval
+                }
+                if {[regexp {^bad.*: +(.)(.+)} $result match first tail]
+                      || [regexp {(.)(.+)} $result match first tail]} {
+                    set result "[string toupper $first]$tail"
+                }
+                bell
+                Rappture::Tooltip::cue $itk_component(editor) $result
+                _log warning $result
+                return 0
+            }
+        }
+        apply {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"_editor apply val\""
+            }
+            set newval [lindex $args 0]
+            value $newval
+            _log input $newval
+        }
+        menu {
+            eval tk_popup $itk_component(emenu) $args
+        }
+        default {
+            error "bad option \"$option\": should be popup, activate, validate, apply, and menu"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _presets post
+# USAGE: _presets unpost
+# USAGE: _presets select
+#
+# Used internally to handle the list of presets for this gauge.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Gauge::_presets {option} {
+    switch -- $option {
+        post {
+            set i [$itk_component(presetlist) index $_value]
+            if {$i >= 0} {
+                $itk_component(presetlist) select clear 0 end
+                $itk_component(presetlist) select set $i
+            }
+            after 10 [list $itk_component(presets) configure -relief sunken]
+        }
+        unpost {
+            $itk_component(presets) configure -relief raised
+        }
+        select {
+            set val [$itk_component(presetlist) current]
+            if {"" != $val} {
+                value $val
+                _log input $val
+            }
+        }
+        default {
+            error "bad option \"$option\": should be post, unpost, select"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _layout
+#
+# Used internally to fix the layout of widgets whenever there is a
+# change in the options that affect layout.  Puts the value in the
+# proper position according to the -valueposition option.  Also,
+# adds or removes the icon if it needs to be shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Gauge::_layout {} {
+    foreach w [pack slaves $itk_component(hull)] {
+        pack forget $w
+    }
+
+    if {$itk_option(-type) != "integer" && $uq} {
+        pack $itk_component(uq) -side right -padx 10
+    }
+
+    array set side2anchor {
+        left   e
+        right  w
+        top    s
+        bottom n
+    }
+    set pos $itk_option(-valueposition)
+    pack $itk_component(vframe) -side $pos \
+        -expand yes -fill both -ipadx 2
+    $itk_component(value) configure -anchor $side2anchor($pos)
+
+    if {"" != $itk_option(-image) || "" != $itk_option(-spectrum)} {
+        pack $itk_component(icon) -side $pos -padx 2
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _log event ?arg arg...?
+#
+# Used internally to send info to the logging mechanism.  If the -log
+# argument is set, then this calls the Rappture::Logger mechanism to
+# log the rest of the arguments as an action.  Otherwise, it does
+# nothing.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Gauge::_log {event args} {
+    if {$itk_option(-log) ne ""} {
+        eval Rappture::Logger::log $event [list $itk_option(-log)] $args
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -editable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Gauge::editable {
+    if {![string is boolean -strict $itk_option(-editable)]} {
+        error "bad value \"$itk_option(-editable)\": should be boolean"
+    }
+    if {!$itk_option(-editable) && [winfo ismapped $itk_component(editor)]} {
+        $itk_component(editor) deactivate -abort
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Gauge::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    $itk_component(value) configure -state $itk_option(-state)
+    $itk_component(spinup) configure -state $itk_option(-state)
+    $itk_component(spindn) configure -state $itk_option(-state)
+    $itk_component(presets) configure -state $itk_option(-state)
+    _redraw  ;# fix gauge
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -spectrum
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Gauge::spectrum {
+    if {$itk_option(-spectrum) != ""
+          && ([catch {$itk_option(-spectrum) isa ::Rappture::Spectrum} valid]
+               || !$valid)} {
+        error "bad option \"$itk_option(-spectrum)\": should be Rappture::Spectrum object"
+    }
+    _resize
+    _layout
+    _redraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -image
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Gauge::image {
+    if {$itk_option(-image) != ""
+          && [catch {image width $itk_option(-image)}]} {
+        error "bad value \"$itk_option(-image)\": should be Tk image"
+    }
+    _resize
+    _layout
+    $itk_component(icon) itemconfigure bimage -image $itk_option(-image)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -units
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Gauge::units {
+    if {$itk_option(-units) != ""
+          && [::Rappture::Units::System::for $itk_option(-units)] == ""} {
+        error "unrecognized system of units \"$itk_option(-units)\""
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -valueposition
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Gauge::valueposition {
+    set pos $itk_option(-valueposition)
+    set opts {left right top bottom}
+    if {[lsearch -exact $opts $pos] < 0} {
+        error "bad value \"$pos\": should be [join $opts {, }]"
+    }
+    _layout
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -presets
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Gauge::presets {
+    if {"" == $itk_option(-presets)} {
+        pack forget $itk_component(presets)
+    } else {
+        if {$itk_option(-valueposition) == "left"} {
+            set s "left"
+        } else {
+            set s "right"
+        }
+        set first [lindex [pack slaves $itk_component(vframe)] 0]
+        pack $itk_component(presets) -before $first -side $s -fill y
+
+        $itk_component(presetlist) delete 0 end
+        $itk_component(presetlist) insert end $itk_option(-presets)
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -type
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Gauge::type {
+    switch -- $itk_option(-type) {
+        integer {
+            set first [lindex [pack slaves $itk_component(vframe)] 0]
+            if {$first == $itk_component(presets)} {
+                pack $itk_component(spinner) -after $first -side left -fill y
+            } else {
+                pack $itk_component(spinner) -before $first -side right -fill y
+            }
+        }
+        real {
+            pack forget $itk_component(spinner)
+        }
+        default {
+            error "bad number type \"$itk_option(-type)\": should be integer or real"
+        }
+    }
+}
+
+itcl::body Rappture::Gauge::_pop_uq {win} {
+    # puts "min=$itk_option(-minvalue) max=$itk_option(-maxvalue) units=$itk_option(-units)"
+    set varname $itk_option(-varname)
+    set popup .pop_uq_$varname
+    if { ![winfo exists $popup] } {
+        Rappture::Balloon $popup -title $itk_option(-label)
+        set inner [$popup component inner]
+        frame $inner.type
+        pack $inner.type -side top -fill x
+        label $inner.type.l -text "Parameter Value:"
+        pack $inner.type.l -side left
+
+        set _val [Rappture::Combobox $inner.type.val -width 20 -editable no]
+        pack $_val -side left -expand yes -fill x
+        $_val choices insert end exact "Exact Value"
+        $_val choices insert end uniform "Uniform Distribution"
+        $_val choices insert end gaussian "Gaussian Distribution"
+        bind $_val <<Value>> [itcl::code $this _change_param_type $inner]
+
+        set _pde [Rappture::ProbDistEditor $inner.entry \
+        $itk_option(-minvalue) $itk_option(-maxvalue) $itk_option(-units) $_value]
+        $_val value $_mode
+        $_pde value $_value
+        pack $inner.entry -expand yes -fill both -pady {10 0}
+
+        $popup configure \
+        -deactivatecommand [itcl::code $this _pop_uq_deactivate]
+    }
+    update
+    $popup activate $win right
+}
+
+itcl::body Rappture::Gauge::_pop_uq_deactivate {} {
+    # puts "deactivate [$_pde value]"
+    value [$_pde value]
+}
+
+itcl::body Rappture::Gauge::_change_param_type {inner} {
+    set val [$_val translate [$_val value]]
+    $_pde mode $val
+}
Index: /tags/1.6.0/gui/scripts/getopts.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/getopts.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/getopts.tcl	(revision 6168)
@@ -0,0 +1,151 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: getopts - simple argument parser
+#
+#  This utility makes it easy to process arguments for various
+#  commands.  You give a description of arguments, and it will
+#  parse and return the values.
+#
+#    getopts args params {
+#        value -foo foo_default
+#        flag group -bar default
+#        flag group -baz
+#    }
+#
+#  Note that both args and params are passed by name, not by
+#  value (not $args or $params).  This function initializes the
+#  params variable according to the values in the spec list.
+#  It then loops through all args, matching as many as possible
+#  from the list.  It throws an error on the first error
+#  encountered.  If there are extra arguments that don't match
+#  the flags and don't start with -, they are left in args, and
+#  processing stops.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+namespace eval Rappture { # forward declaration }
+
+# ----------------------------------------------------------------------
+# USAGE: getopts <listvar> <returnvar> <spec>
+#
+# Processes options in <listvar>, storing results in <returnvar>.
+# Throws an exception if an error is encountered.  Leaves any remaining
+# arguments (after flags) in <listvar>.
+# ----------------------------------------------------------------------
+proc Rappture::getopts {listVar returnVar spec} {
+    upvar $listVar args
+    upvar $returnVar params
+    catch {unset params}
+    set opts ""
+
+    #
+    # Pick apart the info in the <spec> and set up flags/params
+    #
+    foreach line [split $spec \n] {
+        if {[llength $line] == 0} {
+            continue  ;# ignore blank lines
+        }
+
+        set type [lindex $line 0]
+        switch -- $type {
+            value {
+                if {[llength $line] < 3} {
+                    error "bad value spec \"$line\": should be \"value -flag default\""
+                }
+                set name [lindex $line 1]
+                set flags($name) $type
+                set params($name) [lindex $line 2]
+                lappend opts $name
+            }
+            flag {
+                if {[llength $line] < 3 || [llength $line] > 4} {
+                    error "bad value spec \"$line\": should be \"flag group -flag ?default?\""
+                }
+                set group [lindex $line 1]
+                set name [lindex $line 2]
+                set flags($name) [list $type $group]
+                if {[llength $line] > 3} {
+                    set params($group) $name
+                    set params($name) 1
+                } else {
+                    if {![info exists params($group)]} {
+                        set params($group) ""
+                    }
+                    set params($name) 0
+                }
+                lappend opts $name
+            }
+            list {
+                if {[llength $line] < 3} {
+                    error "bad value spec \"$line\": should be \"list -flag default\""
+                }
+                set name [lindex $line 1]
+                set flags($name) $type
+                set params($name) [lindex $line 2]
+                lappend opts $name
+            }
+            default {
+                error "bad arg type \"$type\": should be flag or value"
+            }
+        }
+    }
+
+    #
+    # Now, walk through the values in $args and extract parameters.
+    #
+    while {[llength $args] > 0} {
+        set first [lindex $args 0]
+        if {[string index $first 0] != "-"} {
+            break
+        }
+        if {"--" == $first} {
+            set args [lrange $args 1 end]
+            break
+        }
+        if {![info exists params($first)]} {
+            error "bad option \"$first\": should be [join [lsort $opts] {, }]"
+        }
+        switch -- [lindex $flags($first) 0] {
+            value {
+                if {[llength $args] < 2} {
+                    error "missing value for option $first"
+                }
+                set params($first) [lindex $args 1]
+                set args [lrange $args 2 end]
+            }
+            flag {
+                set group [lindex $flags($first) 1]
+                set params($group) $first
+                set params($first) 1
+                set args [lrange $args 1 end]
+            }
+            list {
+                if {[llength $args] < 2} {
+                    error "missing value for option $first"
+                }
+                foreach arg [lrange $args 1 end] {
+                    if {[string index $arg 0] == "-"} {
+                        break
+                    }
+                }
+                set idx [lsearch -exact $args $arg]
+                if {$idx == [expr [llength $args] - 1]} {
+                    # reached the end of the $args list
+                    # with no other -'d arguments
+                    set params($first) [lrange $args 1 end]
+                    set args ""
+                } else {
+                    # there are further -'d arguments to process
+                    set params($first) [lrange $args 1 [expr $idx-1]]
+                    set args [lrange $args $idx end]
+                }
+            }
+        }
+    }
+    return ""
+}
Index: /tags/1.6.0/gui/scripts/grab.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/grab.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/grab.tcl	(revision 6168)
@@ -0,0 +1,138 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: grab - improved version of the Tk grab command
+#
+#  This version of "grab" keeps a stack of grab windows, so one
+#  window can steal and release the grab, and the grab will revert
+#  to the previous window.  If things get jammed up, you can press
+#  <Escape> three times to release the grab.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require BLT
+
+namespace eval Rappture { # forward declaration }
+namespace eval Rappture::grab {
+    variable state ""  ;# local ("") or global ("-global") grab
+    variable stack ""  ;# stack of grab windows
+}
+
+proc Rappture::grab::init {} { # used for autoloading this module }
+
+bind all <Escape><Escape><Escape> Rappture::grab::reset
+
+# ----------------------------------------------------------------------
+# USAGE: grab ?-global? <window>
+# USAGE: grab set ?-global? <window>
+# USAGE: grab release <window>
+# USAGE: grab current ?<window>?
+# USAGE: grab status <window>
+#
+# This is a replacement for the usual Tk grab command.  It works
+# exactly the same way, but supports a stack of grab windows, so
+# one window can steal grab from another, and then give it back
+# later.
+# ----------------------------------------------------------------------
+rename grab _tk_grab
+proc grab { args } {
+    set op [lindex $args 0]
+    if {[winfo exists $op]} {
+        set op "set"
+    } elseif {$op == "-global" && [winfo exists [lindex $args end]]} {
+        set op "set"
+    }
+
+    if {$op == "set"} {
+        #
+        # Handle GRAB SET specially.
+        # Add the new grab window to the grab stack.
+        #
+        set state $::Rappture::grab::state
+        set window [lindex $args end]
+
+        if {[lsearch -exact $args -global] >= 0} {
+            set state "-global"
+        }
+
+        if {"" != $state} {
+            # if it's a global grab, store the -global flag away for later
+            set window [linsert $window 0 $state]
+
+            # all grabs from now on are global
+            set ::Rappture::grab::state "-global"
+        }
+
+        # if the window is already on the stack, then skip it
+        if {[string equal [lindex $::Rappture::grab::stack 0] $window]} {
+            return $window
+        }
+
+        # add the current configuration to the grab stack
+        set ::Rappture::grab::stack \
+            [linsert $::Rappture::grab::stack 0 $window]
+
+        return [eval _grabset $window]
+
+    } elseif {$op == "release"} {
+        #
+        # Handle GRAB RELEASE specially.
+        # Release the current grab and grab the next window on the stack.
+        # Note that the current grab is on the top of the stack.  The
+        # next one down is the one we want to revert to.
+        #
+        set window [lindex $::Rappture::grab::stack 1]
+        set ::Rappture::grab::stack [lrange $::Rappture::grab::stack 1 end]
+
+        # release the current grab
+        eval _tk_grab $args
+
+        # and set the next one
+        if {[lindex $window 0] != "-global"} {
+            # no more global grabs -- resume local grabs
+            set ::Rappture::grab::state ""
+        }
+        if { $window != "" } {
+            eval _grabset $window
+        }
+        return ""
+    }
+
+    # perform any other grab operation as usual...
+    return [eval _tk_grab $args]
+}
+
+proc _grabset {args} {
+    # give it 3 tries, if necessary
+    for {set i 0} {$i < 3} {incr i} {
+        set status [catch {eval _tk_grab set $args} result]
+        if {$status == 0} {
+            return $result
+        }
+        after 100; update
+    }
+    # oh well, we tried...
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::grab::reset
+#
+# Used internally to reset the grab whenever the user presses
+# Escape a bunch of times to break out of the grab.
+# ----------------------------------------------------------------------
+proc Rappture::grab::reset {} {
+    set w [_tk_grab current]
+    if {"" != $w} {
+        _tk_grab release $w
+    }
+    set Rappture::grab::stack ""
+    set Rappture::grab::state ""
+
+    foreach win [blt::busy windows] {
+        blt::busy release $win
+    }
+}
Index: /tags/1.6.0/gui/scripts/groupentry.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/groupentry.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/groupentry.tcl	(revision 6168)
@@ -0,0 +1,157 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: GroupEntry - widget containing a group of controls
+#
+#  This widget represents a <group> entry on a control panel.
+#  It contains a series of other controls.  Sort of a glorified
+#  frame widget.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *GroupEntry.headingBackground #b5b5b5 widgetDefault
+option add *GroupEntry.headingForeground white widgetDefault
+option add *GroupEntry.font -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::GroupEntry {
+    inherit itk::Widget
+
+    itk_option define -heading heading Heading 1
+    itk_option define -state state State "normal"
+
+    constructor {owner path args} { # defined below }
+
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+
+    protected method _fixheading {}
+
+    private variable _owner ""    ;# thing managing this control
+    private variable _path ""     ;# path in XML to this number
+}
+
+itk::usual GroupEntry {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::GroupEntry::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+
+    itk_component add heading {
+        ::label $itk_interior.heading -anchor w
+    } {
+        usual
+        rename -background -headingbackground headingBackground Background
+        rename -foreground -headingforeground headingForeground Foreground
+    }
+
+    $itk_component(heading) configure \
+        -text [string trim [$_owner xml get $_path.about.label]]
+    Rappture::Tooltip::for $itk_component(heading) \
+        [string trim [$_owner xml get $_path.about.description]]
+
+    itk_component add outline {
+        frame $itk_interior.outline -borderwidth 1
+    } {
+        usual
+        ignore -borderwidth
+        rename -background -headingbackground headingBackground Background
+    }
+    pack $itk_component(outline) -expand yes -fill both
+
+    itk_component add inner {
+        frame $itk_component(outline).inner -borderwidth 3
+    } {
+        usual
+        ignore -borderwidth
+    }
+    pack $itk_component(inner) -expand yes -fill both
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::GroupEntry::value {args} {
+    # groups have no value
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::GroupEntry::label {} {
+    return ""  ;# manage the label inside this group
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::GroupEntry::tooltip {} {
+    return [string trim [$_owner xml get $_path.about.description]]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -heading
+# Turns the heading bar at the top of this group on/off.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::GroupEntry::heading {
+    if {![string is boolean -strict $itk_option(-heading)]} {
+        error "bad value \"$itk_option(-heading)\": should be boolean"
+    }
+
+    set str [$itk_component(heading) cget -text]
+    if {$itk_option(-heading) && "" != $str} {
+        eval pack forget [pack slaves $itk_component(hull)]
+        pack $itk_component(heading) -side top -fill x
+        pack $itk_component(outline) -expand yes -fill both
+        $itk_component(outline) configure -borderwidth 1
+        $itk_component(inner) configure -borderwidth 3
+    } else {
+        pack forget $itk_component(heading)
+        $itk_component(outline) configure -borderwidth 0
+        $itk_component(inner) configure -borderwidth 0
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::GroupEntry::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+}
Index: /tags/1.6.0/gui/scripts/histogram.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/histogram.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/histogram.tcl	(revision 6168)
@@ -0,0 +1,419 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: histogram - extracts data from an XML description of a field
+#
+#  This object represents a histogram of data in an XML description of
+#  simulator output.  A histogram is similar to a field, but a field is
+#  a quantity versus position in device.  A histogram is any quantity
+#  versus any other quantity.  This class simplifies the process of
+#  extracting data vectors that represent the histogram.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+package require BLT
+
+namespace eval Rappture { # forward declaration }
+
+itcl::class Rappture::Histogram {
+    constructor {xmlobj path} { # defined below }
+    destructor { # defined below }
+
+    public method components {{pattern *}}
+    public method mesh { component }
+    public method values { component }
+    public method widths { component }
+    public method xlabels { component }
+    public method limits {which}
+    public method xmarkers {}
+    public method ymarkers {}
+    public method hints {{key ""}}
+
+    protected method Build {}
+    private method Clear { {comp ""} }
+    private method ParseData { comp }
+
+    private variable _xmlobj ""  ;# ref to lib obj with histogram data
+    private variable _hist ""    ;# lib obj representing this histogram
+    private variable _widths     ;# array of vectors of bin widths
+    private variable _yvalues    ;# array of vectors of bin heights along
+                                 ;# y-axis.
+    private variable _xvalues    ;# array of vectors of bin locations along
+                                 ;# x-axis.
+    private variable _xlabels    ;# array of labels
+    private variable _hints      ;# cache of hints stored in XML
+    private variable _xmarkers "";# list of {x,label,options} triplets.
+    private variable _ymarkers "";# list of {y,label,options} triplets.
+    private common _counter 0    ;# counter for unique vector names
+    private variable _comp2hist  ;# maps component name => x,y,w,l vectors
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::constructor {xmlobj path} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be LibraryObj"
+    }
+    set _xmlobj $xmlobj
+    set _hist [$xmlobj element -as object $path]
+
+    # build up vectors for various components of the histogram
+    Build
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::destructor {} {
+    # don't destroy the _xmlobj! we don't own it!
+    itcl::delete object $_hist
+    Clear
+}
+
+# ----------------------------------------------------------------------
+# USAGE: mesh
+#
+# Returns the vector for the histogram bin locations along the
+# x-axis.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::mesh { comp } {
+    if { [info exists _xvalues($comp)] } {
+        return $_xvalues($comp)
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: heights
+#
+# Returns the vector for the histogram bin heights along the y-axis.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::values { comp } {
+    if { [info exists _yvalues($comp)] } {
+        return $_yvalues($comp)
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: widths
+#
+# Returns the vector for the specified histogram component <name>.
+# If the name is not specified, then it returns the vectors for the
+# overall histogram (sum of all components).
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::widths { comp } {
+    if { [info exists _widths($comp)] } {
+        return $_widths($comp)
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: xlabels
+#
+# Returns the vector for the specified histogram component <name>.
+# If the name is not specified, then it returns the vectors for the
+# overall histogram (sum of all components).
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::xlabels { comp } {
+    if { [info exists _xlabels($comp)] } {
+        return $_xlabels($comp)
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: xmarkers
+#
+# Returns the list of settings for each marker on the x-axis.
+# If no markers have been specified the empty string is returned.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::xmarkers {} {
+    return $_xmarkers;
+}
+
+# ----------------------------------------------------------------------
+# USAGE: components ?<pattern>?
+#
+# Returns a list of names for the various components of this curve.
+# If the optional glob-style <pattern> is specified, then it returns
+# only the component names matching the pattern.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::components {{pattern *}} {
+    set rlist ""
+    foreach name [array names _comp2hist] {
+        if {[string match $pattern $name]} {
+            lappend rlist $name
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ymarkers
+#
+# Returns the list of settings for each marker on the y-axis.
+# If no markers have been specified the empty string is returned.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::ymarkers {} {
+    return $_ymarkers;
+}
+
+# ----------------------------------------------------------------------
+# USAGE: limits x|xlin|xlog|y|ylin|ylog
+#
+# Returns the {min max} limits for the specified axis.
+#
+# What does it mean to view a distribution (the bins) as log scale?
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::limits {which} {
+    set min ""
+    set max ""
+    switch -- $which {
+        x - xlin { set pos 0; set log 0; set axis xaxis }
+        xlog { set pos 0; set log 1; set axis xaxis }
+        y - ylin - v - vlin { set pos 1; set log 0; set axis yaxis }
+        ylog - vlog { set pos 1; set log 1; set axis yaxis }
+        default {
+            error "bad option \"$which\": should be x, xlin, xlog, y, ylin, ylog, v, vlin, vlog"
+        }
+    }
+
+    blt::vector create tmp
+    blt::vector create zero
+    foreach comp [array names _comphist] {
+        set vname [lindex $_comp2hist($comp) $pos]
+        $vname variable vec
+
+        if {$log} {
+            # on a log scale, use abs value and ignore 0's
+            $vname dup tmp
+            $vname dup zero
+            zero expr {tmp == 0}            ;# find the 0's
+            tmp expr {abs(tmp)}             ;# get the abs value
+            tmp expr {tmp + zero*max(tmp)}  ;# replace 0's with abs max
+            set vmin [blt::vector expr min(tmp)]
+            set vmax [blt::vector expr max(tmp)]
+        } else {
+            set vmin $vec(min)
+            set vmax $vec(max)
+        }
+
+        if {"" == $min} {
+            set min $vmin
+        } elseif {$vmin < $min} {
+            set min $vmin
+        }
+        if {"" == $max} {
+            set max $vmax
+        } elseif {$vmax > $max} {
+            set max $vmax
+        }
+    }
+    blt::vector destroy tmp zero
+
+    set val [$_hist get $axis.min]
+    if {"" != $val && "" != $min} {
+        if {$val > $min} {
+            # tool specified this min -- don't go any lower
+            set min $val
+        }
+    }
+
+    set val [$_hist get $axis.max]
+    if {"" != $val && "" != $max} {
+        if {$val < $max} {
+            # tool specified this max -- don't go any higher
+            set max $val
+        }
+    }
+    return [list $min $max]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this histogram.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::hints {{keyword ""}} {
+    if {![info exists _hints]} {
+        foreach {key path} {
+            group   about.group
+            label   about.label
+            color   about.color
+            style   about.style
+            type    about.type
+            xlabel  xaxis.label
+            xdesc   xaxis.description
+            xunits  xaxis.units
+            xorient xaxis.orientation
+            xscale  xaxis.scale
+            xmin    xaxis.min
+            xmax    xaxis.max
+            ylabel  yaxis.label
+            ydesc   yaxis.description
+            yunits  yaxis.units
+            yscale  yaxis.scale
+            ymin    yaxis.min
+            ymax    yaxis.max
+        } {
+            set str [$_hist get $path]
+            if {"" != $str} {
+                set _hints($key) $str
+            }
+        }
+
+        if {[info exists _hints(xlabel)] && "" != $_hints(xlabel)
+              && [info exists _hints(xunits)] && "" != $_hints(xunits)} {
+            set _hints(xlabel) "$_hints(xlabel) ($_hints(xunits))"
+        }
+        if {[info exists _hints(ylabel)] && "" != $_hints(ylabel)
+              && [info exists _hints(yunits)] && "" != $_hints(yunits)} {
+            set _hints(ylabel) "$_hints(ylabel) ($_hints(yunits))"
+        }
+
+        if {[info exists _hints(group)] && [info exists _hints(label)]} {
+            # pop-up help for each histogram
+            set _hints(tooltip) $_hints(label)
+        }
+    }
+
+    if {$keyword != ""} {
+        if {[info exists _hints($keyword)]} {
+            return $_hints($keyword)
+        }
+        return ""
+    }
+    return [array get _hints]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Build
+#
+# Used internally to build up the vector representation for the
+# histogram when the object is first constructed, or whenever the histogram
+# data changes.  Discards any existing vectors and builds everything
+# from scratch.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Histogram::Build {} {
+    # discard any existing data
+    Clear
+    #
+    # Scan through the components of the histogram and create
+    # vectors for each part.  Right now there's only one
+    # component.  I left in the component tag in case future
+    # enhancements require more than one component.
+    #
+    foreach cname [$_hist children -type component] {
+        ParseData $cname
+    }
+    # Creates lists of x and y marker data.
+    set _xmarkers {}
+    set _ymarkers {}
+    foreach cname [$_hist children -type "marker" xaxis] {
+        set at     [$_hist get "xaxis.$cname.at"]
+        set label  [$_hist get "xaxis.$cname.label"]
+        set styles [$_hist get "xaxis.$cname.style"]
+        set data [list $at $label $styles]
+        lappend _xmarkers $data
+    }
+    foreach cname [$_hist children -type "marker" yaxis] {
+        set at     [$_hist get "yaxis.$cname.at"]
+        set label  [$_hist get "yaxis.$cname.label"]
+        set styles [$_hist get "yaxis.$cname.style"]
+        set data [list $at $label $styles]
+        lappend _xmarkers $data
+    }
+}
+
+#
+# ParseData --
+#
+#       Parse the components data representations.  The following
+#       elements may be used <xy>, <xhw>, <namevalue>, <xvector>,
+#       <yvector>.  Only one element is used for data.
+#
+itcl::body Rappture::Histogram::ParseData { comp } {
+    # Create new vectors or discard any existing data
+    set _xvalues($comp) [blt::vector create \#auto]
+    set _yvalues($comp) [blt::vector create \#auto]
+    set _widths($comp) [blt::vector create \#auto]
+    set _xlabels($comp) {}
+
+    set xydata [$_hist get ${comp}.xy]
+    if { $xydata != "" } {
+        set count 0
+        foreach {name value} [regsub -all "\[ \t\n]+" $xydata { }] {
+            $_yvalues($comp) append $value
+            $_xvalues($comp) append $count
+            lappend _xlabels($comp) $name
+            incr count
+        }
+        set _comp2hist($comp) [list $_xvalues($comp) $_yvalues($comp)]
+        return
+    }
+    set xhwdata [$_hist get ${comp}.xhw]
+    if { $xhwdata != "" } {
+        set count 0
+        foreach {name h w} [regsub -all "\[ \t\n]+" $xhwdata { }] {
+            lappend _xlabels($comp) $name
+            $_xvalues($comp) append $count
+            $_yvalues($comp) append $h
+            $_widths($comp) append $w
+            incr count
+        }
+        set _comp2hist($comp) [list $_xvalues($comp) $_yvalues($comp)]
+        return
+    }
+
+    # If we reached here, must be <yvector>
+    $_yvalues($comp) set [$_hist get ${comp}.yvector]
+    $_xvalues($comp) length [$_yvalues($comp) length]
+    $_xvalues($comp) seq 1 [$_yvalues($comp) length]
+    set _xlabels($comp) [$_hist get ${comp}.xvector]
+    set _comp2hist($comp) [list $_xvalues($comp) $_yvalues($comp)]
+}
+
+itcl::body Rappture::Histogram::Clear { {comp ""} } {
+    if { $comp == "" } {
+        foreach name [array names _widths] {
+            blt::vector destroy $_widths($name)
+        }
+        array unset _widths
+        foreach name [array names _yvalues] {
+            blt::vector destroy $_yvalues($name)
+        }
+        array unset _yvalues
+        foreach name [array names _xvalues] {
+            blt::vector destroy $_xvalues($name)
+        }
+        array unset _xvalues
+        array unset _xlabels
+        array unset _comp2hist
+        return
+    }
+    if { [info exists _widths($comp)] } {
+        blt::vector destroy $_widths($comp)
+    }
+    if { [info exists _yvalues($comp)] } {
+        blt::vector destroy $_yvalues($comp)
+    }
+    if { [info exists _xvalues($comp)] } {
+        blt::vector destroy $_xvalues($comp)
+    }
+    array unset _xvalues $comp
+    array unset _yvalues $comp
+    array unset _widths $comp
+    array unset _xlabels $comp
+    array unset _comp2hist $comp
+}
+
Index: /tags/1.6.0/gui/scripts/histogramresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/histogramresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/histogramresult.tcl	(revision 6168)
@@ -0,0 +1,1612 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: HistogramResult - X/Y plot in a ResultSet
+#
+#  This widget is an X/Y plot, meant to view histograms produced
+#  as output from the run of a Rappture tool.  Use the "add" and
+#  "delete" methods to control the dataobjs showing on the plot.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *HistogramResult*Element.borderWidth 1 widgetDefault
+option add *HistogramResult*Element.relief solid widgetDefault
+option add *HistogramResult*x.loose 0 widgetDefault
+option add *HistogramResult*y.loose 1 widgetDefault
+option add *HistogramResult*Element.relief solid widgetDefault
+option add *HistogramResult*Element.borderWidth 1 widgetDefault
+# Don't let the step size default to 1.0 (for barcharts)
+option add *HistogramResult*x.stepSize 1.0 widgetDefault
+option add *HistogramResult*x.subdivisions 0 widgetDefault
+
+option add *HistogramResult.width 3i widgetDefault
+option add *HistogramResult.height 3i widgetDefault
+option add *HistogramResult.gridColor #d9d9d9 widgetDefault
+option add *HistogramResult.activeColor blue2 widgetDefault
+option add *HistogramResult.dimColor gray widgetDefault
+option add *HistogramResult.controlBackground gray widgetDefault
+option add *HistogramResult.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *HistogramResult*Balloon*Entry.background white widgetDefault
+
+option add *HistogramResult*autoColors {
+    #3a5fcd
+    #cdcd00
+    #cd1076
+    #0000cd
+    #cd0000
+    #00cd00
+    #009acd
+    #00c5cd
+    #a2b5cd
+    #7ac5cd
+    #66cdaa
+    #a2cd5a
+    #cd9b9b
+    #cdba96
+    #cd3333
+    #cd6600
+    #cd8c95
+    #cd00cd
+    #9a32cd
+    #6ca6cd
+    #9ac0cd
+    #9bcd9b
+    #00cd66
+    #cdc673
+    #cdad00
+    #cd5555
+    #cd853f
+    #cd7054
+    #cd5b45
+    #cd6889
+    #cd69c9
+    #551a8b
+} widgetDefault
+
+itcl::class Rappture::HistogramResult {
+    inherit itk::Widget
+
+    itk_option define -gridcolor gridColor GridColor ""
+    itk_option define -activecolor activeColor ActiveColor ""
+    itk_option define -dimcolor dimColor DimColor ""
+    itk_option define -autocolors autoColors AutoColors ""
+
+    constructor {args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method download {option args}
+
+    protected method Rebuild {}
+    protected method ResetLimits {}
+    protected method Zoom {option args}
+    protected method Hilite {state x y}
+    protected method Axis {option args}
+    protected method GetAxes {dataobj}
+    protected method GetLineMarkerOptions { style }
+    protected method GetTextMarkerOptions { style }
+    protected method EnterMarker { g name x y text }
+    protected method LeaveMarker { g name }
+    protected method FormatLabels { g value }
+    private method ResetLegend {}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+    private variable _dlist ""     ;# list of dataobj objects
+    private variable _dataobj2color  ;# maps dataobj => plotting color
+    private variable _dataobj2width  ;# maps dataobj => line width
+    private variable _dataobj2dashes ;# maps dataobj => BLT -dashes list
+    private variable _dataobj2raise  ;# maps dataobj => raise flag 0/1
+    private variable _dataobj2desc   ;# maps dataobj => description of data
+    private variable _elem2dataobj   ;# maps graph element => dataobj
+    private variable _label2axis   ;# maps axis label => axis ID
+    private variable _limits       ;# axis limits:  x-min, x-max, etc.
+    private variable _autoColorI 0 ;# index for next "-color auto"
+
+    private variable _hilite       ;# info for element currently highlighted
+    private variable _axis         ;# info for axis manipulations
+    private variable _axisPopup    ;# info for axis being edited in popup
+    common _downloadPopup          ;# download options from popup
+    private variable _markers
+    private variable _xlabels
+}
+
+itk::usual HistogramResult {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    array set _downloadPopup {
+        format csv
+    }
+
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    itk_component add main {
+        Rappture::SidebarFrame $itk_interior.main
+    }
+    pack $itk_component(main) -expand yes -fill both
+    set f [$itk_component(main) component controls]
+
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    pack $itk_component(reset) -padx 4 -pady 2 -anchor e
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    set f [$itk_component(main) component frame]
+    itk_component add plot {
+        blt::barchart $f.plot \
+            -highlightthickness 0 -plotpadx 0 -plotpady 4
+    } {
+        keep -foreground -cursor -font
+    }
+    pack $itk_component(plot) -expand yes -fill both
+    $itk_component(plot) pen configure activeBar \
+        -foreground red -borderwidth 0
+
+    #
+    # Add bindings so you can mouse over points to see values:
+    #
+    $itk_component(plot) element bind all <Enter> \
+        [itcl::code $this Hilite at %x %y]
+    $itk_component(plot) element bind all <Motion> \
+        [itcl::code $this Hilite at %x %y]
+    $itk_component(plot) element bind all <Leave> \
+        [itcl::code $this Hilite off %x %y]
+
+    # Add support for editing axes:
+    Rappture::Balloon $itk_component(hull).axes -title "Axis Options"
+    set inner [$itk_component(hull).axes component inner]
+
+    label $inner.labell -text "Label:"
+    entry $inner.label -width 15 -highlightbackground $itk_option(-background)
+    grid $inner.labell -row 1 -column 0 -sticky e
+    grid $inner.label -row 1 -column 1 -sticky ew -pady 4
+
+    label $inner.minl -text "Minimum:"
+    entry $inner.min -width 15 -highlightbackground $itk_option(-background)
+    grid $inner.minl -row 2 -column 0 -sticky e
+    grid $inner.min -row 2 -column 1 -sticky ew -pady 4
+
+    label $inner.maxl -text "Maximum:"
+    entry $inner.max -width 15 -highlightbackground $itk_option(-background)
+    grid $inner.maxl -row 3 -column 0 -sticky e
+    grid $inner.max -row 3 -column 1 -sticky ew -pady 4
+
+    label $inner.formatl -text "Format:"
+    Rappture::Combobox $inner.format -width 15 -editable no
+    $inner.format choices insert end \
+        "%.6g"  "Auto"         \
+        "%.0f"  "X"          \
+        "%.1f"  "X.X"          \
+        "%.2f"  "X.XX"         \
+        "%.3f"  "X.XXX"        \
+        "%.6f"  "X.XXXXXX"     \
+        "%.1e"  "X.Xe+XX"      \
+        "%.2e"  "X.XXe+XX"     \
+        "%.3e"  "X.XXXe+XX"    \
+        "%.6e"  "X.XXXXXXe+XX"
+    grid $inner.formatl -row 4 -column 0 -sticky e
+    grid $inner.format -row 4 -column 1 -sticky ew -pady 4
+
+    label $inner.scalel -text "Scale:"
+    frame $inner.scales
+    radiobutton $inner.scales.linear -text "Linear" \
+        -variable [itcl::scope _axisPopup(scale)] -value "linear"
+    pack $inner.scales.linear -side left
+    radiobutton $inner.scales.log -text "Logarithmic" \
+        -variable [itcl::scope _axisPopup(scale)] -value "log"
+    pack $inner.scales.log -side left
+    grid $inner.scalel -row 5 -column 0 -sticky e
+    grid $inner.scales -row 5 -column 1 -sticky ew -pady 4
+
+    foreach axis {x y} {
+        set _axisPopup(format-$axis) "%.6g"
+    }
+    Axis scale x linear
+    Axis scale y linear
+
+    $itk_component(plot) legend configure -hide yes
+
+    #
+    # Add legend for editing hidden/elements:
+    #
+    set inner [$itk_component(main) insert end \
+        -title "Legend" \
+        -icon [Rappture::icon wrench]]
+    $inner configure -borderwidth 4
+
+    itk_component add legend {
+        Rappture::XyLegend $inner.legend $itk_component(plot)
+    }
+    pack $itk_component(legend) -expand yes -fill both
+    after idle [itcl::code $this ResetLegend]
+
+    # quick-and-dirty zoom functionality, for now...
+    Blt_ZoomStack $itk_component(plot)
+    eval itk_initialize $args
+
+    set _hilite(elem) ""
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::destructor {} {
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a dataobj to the plot.  The optional <settings>
+# are used to configure the plot.  Allowed settings are -color,
+# -brightness, -width, -linestyle and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::add {dataobj {settings ""}} {
+    array set params {
+        -color auto
+        -brightness 0
+        -width 1
+        -type "histogram"
+        -raise 0
+        -linestyle solid
+        -description ""
+        -param ""
+    }
+    array set params $settings
+
+    # if the color is "auto", then select a color from -autocolors
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        if {$params(-color) == "autoreset"} {
+            set _autoColorI 0
+        }
+        set color [lindex $itk_option(-autocolors) $_autoColorI]
+        if {"" == $color} { set color black }
+        set params(-color) $color
+
+        # set up for next auto color
+        if {[incr _autoColorI] >= [llength $itk_option(-autocolors)]} {
+            set _autoColorI 0
+        }
+    }
+
+    # convert -linestyle to BLT -dashes
+    switch -- $params(-linestyle) {
+        dashed { set params(-linestyle) {4 4} }
+        dotted { set params(-linestyle) {2 4} }
+        default { set params(-linestyle) {} }
+    }
+
+    # if -brightness is set, then update the color
+    if {$params(-brightness) != 0} {
+        set params(-color) [Rappture::color::brightness \
+            $params(-color) $params(-brightness)]
+
+        set bg [$itk_component(plot) cget -plotbackground]
+        foreach {h s v} [Rappture::color::RGBtoHSV $bg] break
+        if {$v > 0.5} {
+            set params(-color) [Rappture::color::brightness_max \
+                $params(-color) 0.8]
+        } else {
+            set params(-color) [Rappture::color::brightness_min \
+                $params(-color) 0.2]
+        }
+    }
+
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+        set _dataobj2color($dataobj) $params(-color)
+        set _dataobj2width($dataobj) $params(-width)
+        set _dataobj2dashes($dataobj) $params(-linestyle)
+        set _dataobj2raise($dataobj) $params(-raise)
+        set _dataobj2desc($dataobj) $params(-description)
+
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::get {} {
+    # put the dataobj list in order according to -raise options
+    set bottom {}
+    set top {}
+    foreach obj $_dlist {
+        if {[info exists _dataobj2raise($obj)] && $_dataobj2raise($obj)} {
+            lappend top $obj
+        } else {
+            lappend bottom $obj
+        }
+    }
+    set _dlist [concat $bottom $top]
+    return $_dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::delete {args} {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+
+    # delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if {$pos >= 0} {
+            set _dlist [lreplace $_dlist $pos $pos]
+            catch {unset _dataobj2color($dataobj)}
+            catch {unset _dataobj2width($dataobj)}
+            catch {unset _dataobj2dashes($dataobj)}
+            catch {unset _dataobj2raise($dataobj)}
+            foreach elem [array names _elem2dataobj] {
+                if {$_elem2dataobj($elem) == $dataobj} {
+                    unset _elem2dataobj($elem)
+                }
+            }
+            set changed 1
+        }
+    }
+
+    # If anything changed, then rebuild the plot
+    if {$changed} {
+        $_dispatcher event -idle !rebuild
+    }
+
+    # Nothing left? then start over with auto colors
+    if {[llength $_dlist] == 0} {
+        set _autoColorI 0
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<dataobj1> <dataobj2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <dataobj> objects.  This
+# accounts for all dataobjs--even those not showing on the screen.
+# Because of this, the limits are appropriate for all dataobjs as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::scale {args} {
+    set allx [$itk_component(plot) x2axis use]
+    lappend allx x  ;# fix main x-axis too
+    foreach axis $allx {
+        Axis scale $axis linear
+    }
+
+    set ally [$itk_component(plot) y2axis use]
+    lappend ally y  ;# fix main y-axis too
+    foreach axis $ally {
+        Axis scale $axis linear
+    }
+
+    catch {unset _limits}
+    foreach dataobj $args {
+        # find the axes for this dataobj (e.g., {x y2})
+        foreach {map(x) map(y)} [GetAxes $dataobj] break
+
+        foreach axis {x y} {
+            # get defaults for both linear and log scales
+            foreach type {lin log} {
+                # store results -- ex: _limits(x2log-min)
+                set id $map($axis)$type
+                foreach {min max} [$dataobj limits $axis$type] break
+                if {"" != $min && "" != $max} {
+                    if {![info exists _limits($id-min)]} {
+                        set _limits($id-min) $min
+                        set _limits($id-max) $max
+                    } else {
+                        if {$min < $_limits($id-min)} {
+                            set _limits($id-min) $min
+                        }
+                        if {$max > $_limits($id-max)} {
+                            set _limits($id-max) $max
+                        }
+                    }
+                }
+            }
+
+            if {[$dataobj hints ${axis}scale] == "log"} {
+                Axis scale $map($axis) log
+            }
+        }
+    }
+    ResetLimits
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::download {option args} {
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            set popup .histogramresultdownload
+            if {![winfo exists .histogramresultdownload]} {
+                # if we haven't created the popup yet, do it now
+                Rappture::Balloon $popup \
+                    -title "[Rappture::filexfer::label downloadWord] as..."
+                set inner [$popup component inner]
+                label $inner.summary -text "" -anchor w
+                pack $inner.summary -side top
+                radiobutton $inner.csv -text "Data as Comma-Separated Values" \
+                    -variable Rappture::HistogramResult::_downloadPopup(format) \
+                    -value csv
+                pack $inner.csv -anchor w
+                radiobutton $inner.image -text "Image (PS/PDF/PNG/JPEG)" \
+                    -variable Rappture::HistogramResult::_downloadPopup(format) \
+                    -value image
+                pack $inner.image -anchor w
+                button $inner.go -text [Rappture::filexfer::label download] \
+                    -command [lindex $args 0]
+                pack $inner.go -pady 4
+            } else {
+                set inner [$popup component inner]
+            }
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            $inner.summary configure -text "[Rappture::filexfer::label downloadWord] $num in the following format:"
+            update idletasks ;# fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .histogramresultdownload
+            if {[winfo exists .histogramresultdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                csv {
+                    # reverse the objects so the selected data appears on top
+                    set dlist ""
+                    foreach dataobj [get] {
+                        set dlist [linsert $dlist 0 $dataobj]
+                    }
+
+                    # generate the comma-separated value data for these objects
+                    set csvdata ""
+                    foreach dataobj $dlist {
+                        append csvdata "[string repeat - 60]\n"
+                        append csvdata " [$dataobj hints label]\n"
+                        if {[info exists _dataobj2desc($dataobj)]
+                            && [llength [split $_dataobj2desc($dataobj) \n]] > 1} {
+                            set indent "for:"
+                            foreach line [split $_dataobj2desc($dataobj) \n] {
+                                append csvdata " $indent $line\n"
+                                set indent "    "
+                            }
+                        }
+                        append csvdata "[string repeat - 60]\n"
+
+                        append csvdata "[$dataobj hints xlabel], [$dataobj hints ylabel]\n"
+                        set first 1
+                        foreach comp [$dataobj components] {
+                            if {!$first} {
+                                # blank line between components
+                                append csvdata "\n"
+                            }
+                            set xv [$dataobj mesh $comp]
+                            set yv [$dataobj values $comp]
+                            if { [$xv length] > 0 && [$yv length] > 0 } {
+                                foreach x [$xv range 0 end] y [$yv range 0 end] {
+                                    append csvdata \
+                                        [format "%20.15g, %20.15g\n" $x $y]
+                                }
+                            }
+                            set first 0
+                        }
+                        append csvdata "\n"
+                    }
+                    return [list .txt $csvdata]
+                }
+                image {
+                    set popup .histogramprintdownload
+                    if { ![winfo exists $popup] } {
+                        # Create a popup for the print dialog
+                        Rappture::Balloon $popup -title "Save as image..."
+                        set inner [$popup component inner]
+                        # Create the print dialog widget and add it to the
+                        # the balloon popup.
+                        Rappture::XyPrint $inner.print
+                        $popup configure \
+                            -deactivatecommand [list $inner.print reset]
+                        blt::table $inner 0,0 $inner.print -fill both
+                    }
+                    update
+                    # Activate the popup and call for the output.
+                    foreach { widget toolName plotName } $args break
+                    $popup activate $widget left
+                    set inner [$popup component inner]
+                    set output [$inner.print print $itk_component(plot) \
+                                    $toolName $plotName]
+                    $popup deactivate
+                    return $output
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::Rebuild {} {
+    set g $itk_component(plot)
+
+    # First clear out the widget
+    eval $g element delete [$g element names]
+    eval $g marker delete [$g marker names]
+    foreach axis [$g axis names] {
+        $g axis configure $axis -hide yes
+    }
+    # Presumably you want at least an X-axis and Y-axis displayed.
+    $g xaxis configure -hide no
+    $g yaxis configure -hide no
+    array unset _label2axis
+
+    #
+    # Scan through all objects and create a list of all axes.
+    # The first x-axis gets mapped to "x".  The second, to "x2".
+    # Beyond that, we must create new axes "x3", "x4", etc.
+    # We do the same for y.
+    #
+    set anum(x) 0
+    set anum(y) 0
+    foreach dataobj [get] {
+        foreach ax {x y} {
+            set label [$dataobj hints ${ax}label]
+            if {"" != $label} {
+                if {![info exists _label2axis($ax-$label)]} {
+                    switch [incr anum($ax)] {
+                        1 { set axis $ax }
+                        2 { set axis ${ax}2 }
+                        default {
+                            set axis $ax$anum($ax)
+                            catch {$g axis create $axis}
+                        }
+                    }
+                    $g axis configure $axis -title $label -hide no \
+                        -checklimits no
+                    set _label2axis($ax-$label) $axis
+
+                    # if this axis has a description, add it as a tooltip
+                    set desc [string trim [$dataobj hints ${ax}desc]]
+                    Rappture::Tooltip::text $g-$axis $desc
+                }
+            }
+        }
+    }
+
+    #
+    # All of the extra axes get mapped to the x2/y2 (top/right)
+    # position.
+    #
+    set all ""
+    foreach ax {x y} {
+        lappend all $ax
+
+        set extra ""
+        for {set i 2} {$i <= $anum($ax)} {incr i} {
+            lappend extra ${ax}$i
+        }
+        eval lappend all $extra
+        $g ${ax}2axis use $extra
+        if {$ax == "y"} {
+            $g configure -rightmargin [expr {($extra == "") ? 10 : 0}]
+        }
+    }
+
+    foreach axis $all {
+        set _axisPopup(format-$axis) "%.6g"
+        $g axis bind $axis <Enter> \
+            [itcl::code $this Axis hilite $axis on]
+        $g axis bind $axis <Leave> \
+            [itcl::code $this Axis hilite $axis off]
+        $g axis bind $axis <ButtonPress-1> \
+            [itcl::code $this Axis click $axis %x %y]
+        $g axis bind $axis <B1-Motion> \
+            [itcl::code $this Axis drag $axis %x %y]
+        $g axis bind $axis <ButtonRelease-1> \
+            [itcl::code $this Axis release $axis %x %y]
+        $g axis bind $axis <KeyPress> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+    }
+    set invert 0
+    array unset _xlabels
+    #
+    # Plot all of the dataobjs.
+    #
+    set count 0
+    foreach dataobj $_dlist {
+        set label [$dataobj hints label]
+        foreach {mapx mapy} [GetAxes $dataobj] break
+        foreach comp [$dataobj components] {
+            set xv [$dataobj mesh $comp]
+            set yv [$dataobj values $comp]
+            set zv [$dataobj widths $comp]
+            if {$xv eq "" || $yv eq "" || $zv eq ""} {
+                continue
+            }
+            if {[info exists _dataobj2color($dataobj)]} {
+                set color $_dataobj2color($dataobj)
+            } else {
+                set color [$dataobj hints color]
+                if {"" == $color} {
+                    set color black
+                }
+            }
+            if {[info exists _dataobj2width($dataobj)]} {
+                set lwidth $_dataobj2width($dataobj)
+            } else {
+                set lwidth 2
+            }
+            if {[info exists _dataobj2dashes($dataobj)]} {
+                set dashes $_dataobj2dashes($dataobj)
+            } else {
+                set dashes ""
+            }
+            if {([$xv length] <= 1) || ($lwidth == 0)} {
+                set sym square
+                set pixels 2
+            } else {
+                set sym ""
+                set pixels 6
+            }
+            # Compute default bar width for histogram elements.
+            if { [$zv length] == [$xv length] } {
+                if { [$xv length] > 0 && [$yv length] > 0 } {
+                    set xvalues [$xv range 0 end]
+                    set yvalues [$yv range 0 end]
+                    set zvalues [$zv range 0 end]
+                    foreach x $xvalues y $yvalues z $zvalues {
+                        set elem "elem[incr count]"
+                        set _elem2dataobj($elem) $dataobj
+                        $g element create $elem -x $x -y $y -barwidth $z \
+                            -label $label -foreground $color \
+                            -mapx $mapx -mapy $mapy
+                    }
+                }
+            } else {
+                set r [blt::vector expr {max($xv) - min($xv)}]
+                set length [$xv length]
+                if { $length > 1 } {
+                    set z [expr {$r / ([$xv length]-1) * 0.8}]
+                } else {
+                    set z 1
+                }
+                set elem "elem[incr count]"
+                set _elem2dataobj($elem) $dataobj
+                $g element create $elem -x $xv -y $yv -barwidth $z \
+                    -label $label -foreground $color \
+                    -mapx $mapx -mapy $mapy
+            }
+            set index 0
+            foreach label [$dataobj xlabels $comp] {
+                if  { [string length $label] > 6 } {
+                    set invert 1
+                }
+                set _xlabels($index) $label
+                incr index
+            }
+        }
+    }
+    foreach dataobj $_dlist {
+        set xmin -Inf
+        set ymin -Inf
+        set xmax Inf
+        set ymax Inf
+        #
+        # Create text/line markers for each *axis.marker specified.
+        #
+        foreach m [$dataobj xmarkers] {
+            foreach {at label style} $m break
+            set id [$g marker create line -coords [list $at $ymin $at $ymax]]
+            $g marker bind $id <Enter> \
+                [itcl::code $this EnterMarker $g x-$label $at $ymin $at]
+            $g marker bind $id <Leave> \
+                [itcl::code $this LeaveMarker $g x-$label]
+            set options [GetLineMarkerOptions $style]
+            if { $options != "" } {
+                eval $g marker configure $id $options
+            }
+            if { $label != "" } {
+                set id [$g marker create text -anchor nw \
+                            -text $label -coords [list $at $ymax]]
+                set options [GetTextMarkerOptions $style]
+                if { $options != "" } {
+                    eval $g marker configure $id $options
+                }
+            }
+        }
+        foreach m [$dataobj ymarkers] {
+            foreach {at label style} $m break
+            set id [$g marker create line -coords [list $xmin $at $xmax $at]]
+            $g marker bind $id <Enter> \
+                [itcl::code $this EnterMarker $g y-$label $at $xmin $at]
+            $g marker bind $id <Leave> \
+                [itcl::code $this LeaveMarker $g y-$label]
+            set options [GetLineMarkerOptions $style]
+            if { $options != "" } {
+                eval $g marker configure $id $options
+            }
+            if { $label != "" } {
+                set id [$g marker create text -anchor se \
+                        -text $label -coords [list $xmax $at]]
+                set options [GetTextMarkerOptions $style]
+                if { $options != "" } {
+                    eval $g marker configure $id $options
+                }
+            }
+        }
+    }
+    set stepsize 1.0
+    if { [array size _xlabels] > 0 } {
+        set command [itcl::code $this FormatLabels]
+        if { [array size _xlabels] > 20 } {
+           set stepsize 0.0
+        }
+    } else {
+        set command ""
+    }
+    $g axis configure x -command $command -stepsize $stepsize
+    set xorient [$dataobj hints xorient]
+    if { $xorient == "horizontal" } {
+        set invert 0
+    } elseif { $xorient == "vertical" } {
+        set invert 1
+    }
+    $g configure -invertxy $invert
+    ResetLegend
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ResetLimits
+#
+# Used internally to apply automatic limits to the axes for the
+# current plot.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::ResetLimits {} {
+    set g $itk_component(plot)
+    foreach axis [$g axis names] {
+        $g axis configure $axis -min "" -max ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::Zoom {option args} {
+    switch -- $option {
+        reset {
+            ResetLimits
+            Rappture::Logger::log histogram zoom -reset
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Hilite <state> <x> <y>
+#
+# Called automatically when the user brushes one of the elements
+# on the plot.  Causes the element to highlight and a tooltip to
+# pop up with element info.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::Hilite {state x y} {
+    set g $itk_component(plot)
+    set elem ""
+
+    # Peek inside of Blt_ZoomStack package to see if we're currently in the
+    # middle of a zoom selection.
+    if {[info exists ::zoomInfo($g,corner)] && $::zoomInfo($g,corner) == "B" } {
+        return;
+    }
+    set tip ""
+    set index ""
+    if {$state == "at"} {
+        set bool [$g element closest $x $y info -along y -halo 1]
+        # Must be in the element.
+        if { $bool } {
+            # for dealing with xy line plots
+            set elem $info(name)
+
+            # Some elements are generated dynamically and therefore will
+            # not have a dataobj object associated with them.
+            set mapx [$g element cget $elem -mapx]
+            set mapy [$g element cget $elem -mapy]
+            if {[info exists _elem2dataobj($elem)]} {
+                foreach {mapx mapy} [GetAxes $_elem2dataobj($elem)] break
+            }
+
+            # search again for an exact point -- this time don't interpolate
+            set tip ""
+            if { $info(name) == $elem} {
+                set x [$g axis transform $mapx $info(x)]
+                set y [$g axis transform $mapy $info(y)]
+                if { [$g cget -invertxy] } {
+                    set tmp $x
+                    set x $y
+                    set y $tmp
+                }
+                 if {[info exists _elem2dataobj($elem)]} {
+                    set dataobj $_elem2dataobj($elem)
+                    set yunits [$dataobj hints yunits]
+                    set xunits [$dataobj hints xunits]
+                } else {
+                    set xunits ""
+                    set yunits ""
+                }
+                set tip [$g element cget $elem -label]
+                set yval [Axis format y dummy $info(y)]
+                append tip "\n$yval$yunits"
+                set xval [Axis format x dummy $info(x)]
+                append tip " @ $xval"
+                set tip [string trim $tip]
+                set index $info(index)
+            }
+            set state 1
+        } else {
+            set bool [$g element closest $x $y info -interpolate no -along y]
+            if { $bool } {
+                # for dealing with xy scatter plot
+                set elem $info(name)
+                # Some elements are generated dynamically and therefore will
+                # not have a dataobj object associated with them.
+                set mapx [$g element cget $elem -mapx]
+                set mapy [$g element cget $elem -mapy]
+                if {[info exists _elem2dataobj($elem)]} {
+                    foreach {mapx mapy} [GetAxes $_elem2dataobj($elem)] break
+                }
+                set tip ""
+                set x [$g axis transform $mapx $info(x)]
+                set y [$g axis transform $mapy $info(y)]
+                if { [$g cget -invertxy] } {
+                    set tmp $x
+                    set x $y
+                    set y $tmp
+                }
+               if {[info exists _elem2dataobj($elem)]} {
+                    set dataobj $_elem2dataobj($elem)
+                    set yunits [$dataobj hints yunits]
+                    set xunits [$dataobj hints xunits]
+                } else {
+                    set xunits ""
+                    set yunits ""
+                }
+                set tip [$g element cget $elem -label]
+                set yval [Axis format y dummy $info(y)]
+                append tip "\n$yval$yunits"
+                set xval [Axis format x dummy $info(x)]
+                append tip " @ $xval"
+                set tip [string trim $tip]
+                set index $info(index)
+                set state 1
+            } else {
+                set state 0
+            }
+        }
+    }
+
+    if {$state} {
+        #
+        # Highlight ON:
+        # - activate trace
+        # - multiple axes? dim other axes
+        # - pop up tooltip about data
+        #
+        if { [$g element exists $_hilite(elem)] && $_hilite(elem) != $elem } {
+            $g element deactivate $_hilite(elem)
+            $g crosshairs configure -hide yes
+            Rappture::Tooltip::tooltip cancel
+        }
+        if { $index != "" } {
+            $g element activate $elem $index
+            set _hilite(index) $index
+        }
+        set _hilite(elem) $elem
+
+        set mapx [$g element cget $elem -mapx]
+        set mapy [$g element cget $elem -mapy]
+        if {[info exists _elem2dataobj($elem)]} {
+            foreach {mapx mapy} [GetAxes $_elem2dataobj($elem)] break
+        }
+        set allx [$g x2axis use]
+        if {[llength $allx] > 0} {
+            lappend allx x  ;# fix main x-axis too
+            foreach axis $allx {
+                if {$axis == $mapx} {
+                    $g axis configure $axis -color $itk_option(-foreground) \
+                        -titlecolor $itk_option(-foreground)
+                } else {
+                    $g axis configure $axis -color $itk_option(-dimcolor) \
+                        -titlecolor $itk_option(-dimcolor)
+                }
+            }
+        }
+        set ally [$g y2axis use]
+        if {[llength $ally] > 0} {
+            lappend ally y  ;# fix main y-axis too
+            foreach axis $ally {
+                if {$axis == $mapy} {
+                    $g axis configure $axis -color $itk_option(-foreground) \
+                        -titlecolor $itk_option(-foreground)
+                } else {
+                    $g axis configure $axis -color $itk_option(-dimcolor) \
+                        -titlecolor $itk_option(-dimcolor)
+                }
+            }
+        }
+
+        if {"" != $tip} {
+            $g crosshairs configure -hide no -position @$x,$y
+
+            if {$x > 0.5*[winfo width $g]} {
+                if {$x < 4} {
+                    set tipx "-0"
+                } else {
+                    set tipx "-[expr {$x-20}]"  ;# move tooltip to the left
+                }
+            } else {
+                if {$x < -4} {
+                    set tipx "+0"
+                } else {
+                    set tipx "+[expr {$x+20}]"  ;# move tooltip to the right
+                }
+            }
+            if {$y > 0.5*[winfo height $g]} {
+                if {$y < 4} {
+                    set tipy "-0"
+                } else {
+                    set tipy "-[expr {$y-20}]"  ;# move tooltip to the top
+                }
+            } else {
+                if {$y < -4} {
+                    set tipy "+0"
+                } else {
+                    set tipy "+[expr {$y+20}]"  ;# move tooltip to the bottom
+                }
+            }
+            Rappture::Tooltip::text $g $tip
+            Rappture::Tooltip::tooltip show $g $tipx,$tipy
+            Rappture::Logger::log tooltip -for "histogram probe -- [string map [list \n " // "] $tip]"
+        }
+    } else {
+        #
+        # Highlight OFF:
+        # - deactivate (color back to normal)
+        # - put all axes back to normal color
+        # - take down tooltip
+        #
+        if { [$g element exists $_hilite(elem)] } {
+            $g element deactivate $_hilite(elem)
+        }
+        set allx [$g x2axis use]
+        if {[llength $allx] > 0} {
+            lappend allx x  ;# fix main x-axis too
+            foreach axis $allx {
+                $g axis configure $axis -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+            }
+        }
+
+        set ally [$g y2axis use]
+        if {[llength $ally] > 0} {
+            lappend ally y  ;# fix main y-axis too
+            foreach axis $ally {
+                $g axis configure $axis -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+            }
+        }
+
+        $g crosshairs configure -hide yes
+
+        # only cancel in plotting area or we'll mess up axes
+        if {[$g inside $x $y]} {
+            Rappture::Tooltip::tooltip cancel
+        }
+
+        # There is no currently highlighted element
+        set _hilite(elem) ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Axis hilite <axis> <state>
+#
+# USAGE: Axis click <axis> <x> <y>
+# USAGE: Axis drag <axis> <x> <y>
+# USAGE: Axis release <axis> <x> <y>
+#
+# USAGE: Axis edit <axis>
+# USAGE: Axis changed <axis> <what>
+# USAGE: Axis format <axis> <widget> <value>
+# USAGE: Axis scale <axis> linear|log
+#
+# Used internally to handle editing of the x/y axes.  The hilite
+# operation causes the axis to light up.  The edit operation pops
+# up a panel with editing options.  The changed operation applies
+# changes from the panel.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::Axis {option args} {
+    set inner [$itk_component(hull).axes component inner]
+
+    switch -- $option {
+        hilite {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Axis hilite axis state\""
+            }
+            set g $itk_component(plot)
+            set axis [lindex $args 0]
+            set state [lindex $args 1]
+
+            if {$state} {
+                $g axis configure $axis \
+                    -color $itk_option(-activecolor) \
+                    -titlecolor $itk_option(-activecolor)
+                set x [expr {[winfo pointerx $g]+4}]
+                set y [expr {[winfo pointery $g]+4}]
+                Rappture::Tooltip::tooltip pending $g-$axis @$x,$y
+            } else {
+                $g axis configure $axis \
+                    -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+                Rappture::Tooltip::tooltip cancel
+            }
+        }
+        click {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis click axis x y\""
+            }
+            foreach { axis x y } $args break
+            set g $itk_component(plot)
+            if { [$g cget -invertxy] } {
+                set tmp $x
+                set x $y
+                set y $tmp
+            }
+
+            set _axis(moved) 0
+            set _axis(click-x) $x
+            set _axis(click-y) $y
+            foreach {min max} [$g axis limits $axis] break
+            set _axis(min0) $min
+            set _axis(max0) $max
+            Rappture::Tooltip::tooltip cancel
+        }
+        drag {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis drag axis x y\""
+            }
+            if {![info exists _axis(moved)]} {
+                return  ;# must have skipped click event -- ignore
+            }
+            foreach { axis x y } $args break
+            set g $itk_component(plot)
+            if { [$g cget -invertxy] } {
+                set tmp $x
+                set x $y
+                set y $tmp
+            }
+
+            if {[info exists _axis(click-x)] && [info exists _axis(click-y)]} {
+                foreach {x0 y0 pw ph} [$g extents plotarea] break
+                switch -glob $axis {
+                  x* {
+                    set pix $x
+                    set pix0 $_axis(click-x)
+                    set pixmin $x0
+                    set pixmax [expr {$x0+$pw}]
+                  }
+                  y* {
+                    set pix $y
+                    set pix0 $_axis(click-y)
+                    set pixmin [expr {$y0+$ph}]
+                    set pixmax $y0
+                  }
+                }
+                set log [$g axis cget $axis -logscale]
+                set min $_axis(min0)
+                set max $_axis(max0)
+                set dpix [expr {abs($pix-$pix0)}]
+                set v0 [$g axis invtransform $axis $pixmin]
+                set v1 [$g axis invtransform $axis [expr {$pixmin+$dpix}]]
+                if {$log} {
+                    set v0 [expr {log10($v0)}]
+                    set v1 [expr {log10($v1)}]
+                    set min [expr {log10($min)}]
+                    set max [expr {log10($max)}]
+                }
+
+                if {$pix > $pix0} {
+                    set delta [expr {$v1-$v0}]
+                } else {
+                    set delta [expr {$v0-$v1}]
+                }
+                set min [expr {$min-$delta}]
+                set max [expr {$max-$delta}]
+                if {$log} {
+                    set min [expr {pow(10.0,$min)}]
+                    set max [expr {pow(10.0,$max)}]
+                }
+                $g axis configure $axis -min $min -max $max
+
+                # move axis, don't edit on release
+                set _axis(move) 1
+            }
+        }
+        release {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis release axis x y\""
+            }
+            if {![info exists _axis(moved)]} {
+                return  ;# must have skipped click event -- ignore
+            }
+            foreach { axis x y } $args break
+            set g $itk_component(plot)
+            if { [$g cget -invertxy] } {
+                set tmp $x
+                set x $y
+                set y $tmp
+            }
+
+            if {!$_axis(moved)} {
+                # small movement? then treat as click -- pop up axis editor
+                set dx [expr {abs($x-$_axis(click-x))}]
+                set dy [expr {abs($y-$_axis(click-y))}]
+                if {$dx < 2 && $dy < 2} {
+                    Axis edit $axis
+                    return
+                }
+            }
+            # one last movement
+            Axis drag $axis $x $y
+
+            # log this change
+            Rappture::Logger::log histogram axis $axis \
+                -drag [$itk_component(plot) axis limits $axis]
+
+            catch {unset _axis}
+        }
+        edit {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"Axis edit axis\""
+            }
+            set axis [lindex $args 0]
+            set _axisPopup(current) $axis
+
+            # apply last value when deactivating
+            $itk_component(hull).axes configure -deactivatecommand \
+                [itcl::code $this Axis changed $axis focus]
+
+            # fix axis label controls...
+            set label [$itk_component(plot) axis cget $axis -title]
+            $inner.label delete 0 end
+            $inner.label insert end $label
+            bind $inner.label <Return> \
+                [itcl::code $this Axis changed $axis label]
+            bind $inner.label <KP_Enter> \
+                [itcl::code $this Axis changed $axis label]
+            bind $inner.label <FocusOut> \
+                [itcl::code $this Axis changed $axis label]
+
+            # fix min/max controls...
+            foreach {min max} [$itk_component(plot) axis limits $axis] break
+            $inner.min delete 0 end
+            $inner.min insert end $min
+            bind $inner.min <Return> \
+                [itcl::code $this Axis changed $axis min]
+            bind $inner.min <KP_Enter> \
+                [itcl::code $this Axis changed $axis min]
+            bind $inner.min <FocusOut> \
+                [itcl::code $this Axis changed $axis min]
+
+            $inner.max delete 0 end
+            $inner.max insert end $max
+            bind $inner.max <Return> \
+                [itcl::code $this Axis changed $axis max]
+            bind $inner.max <KP_Enter> \
+                [itcl::code $this Axis changed $axis max]
+            bind $inner.max <FocusOut> \
+                [itcl::code $this Axis changed $axis max]
+
+            # fix format control...
+            set fmts [$inner.format choices get -value]
+            set i [lsearch -exact $fmts $_axisPopup(format-$axis)]
+            if {$i < 0} { set i 0 }  ;# use Auto choice
+            $inner.format value [$inner.format choices get -label $i]
+
+            bind $inner.format <<Value>> \
+                [itcl::code $this Axis changed $axis format]
+
+            # fix scale control...
+            if {[$itk_component(plot) axis cget $axis -logscale]} {
+                set _axisPopup(scale) "log"
+                $inner.format configure -state disabled
+            } else {
+                set _axisPopup(scale) "linear"
+                $inner.format configure -state normal
+            }
+            $inner.scales.linear configure \
+                -command [itcl::code $this Axis changed $axis scale]
+            $inner.scales.log configure \
+                -command [itcl::code $this Axis changed $axis scale]
+
+            #
+            # Figure out where the window should pop up.
+            #
+            set x [winfo rootx $itk_component(plot)]
+            set y [winfo rooty $itk_component(plot)]
+            set w [winfo width $itk_component(plot)]
+            set h [winfo height $itk_component(plot)]
+            foreach {x0 y0 pw ph} [$itk_component(plot) extents plotarea] break
+            switch -glob -- $axis {
+                x {
+                    set x [expr {round($x + $x0+0.5*$pw)}]
+                    set y [expr {round($y + $y0+$ph + 0.5*($h-$y0-$ph))}]
+                    set dir "above"
+                }
+                x* {
+                    set x [expr {round($x + $x0+0.5*$pw)}]
+                    set dir "below"
+                    set allx [$itk_component(plot) x2axis use]
+                    set max [llength $allx]
+                    set i [lsearch -exact $allx $axis]
+                    set y [expr {round($y + ($i+0.5)*$y0/double($max))}]
+                }
+                y {
+                    set x [expr {round($x + 0.5*$x0)}]
+                    set y [expr {round($y + $y0+0.5*$ph)}]
+                    set dir "right"
+                }
+                y* {
+                    set y [expr {round($y + $y0+0.5*$ph)}]
+                    set dir "left"
+                    set ally [$itk_component(plot) y2axis use]
+                    set max [llength $ally]
+                    set i [lsearch -exact $ally $axis]
+                    set y [expr {round($y + ($i+0.5)*$y0/double($max))}]
+                    set x [expr {round($x+$x0+$pw + ($i+0.5)*($w-$x0-$pw)/double($max))}]
+                }
+            }
+            $itk_component(hull).axes activate @$x,$y $dir
+        }
+        changed {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Axis changed axis what\""
+            }
+            set axis [lindex $args 0]
+            set what [lindex $args 1]
+            if {$what == "focus"} {
+                set what [focus]
+                if {[winfo exists $what]} {
+                    set what [winfo name $what]
+                }
+            }
+
+            switch -- $what {
+                label {
+                    set val [$inner.label get]
+                    $itk_component(plot) axis configure $axis -title $val
+                    Rappture::Logger::log histogram axis $axis -title $val
+                }
+                min {
+                    set val [$inner.min get]
+                    if {![string is double -strict $val]} {
+                        Rappture::Tooltip::cue $inner.min "Must be a number"
+                        bell
+                        return
+                    }
+
+                    set max [lindex [$itk_component(plot) axis limits $axis] 1]
+                    if {$val >= $max} {
+                        Rappture::Tooltip::cue $inner.min "Must be <= max ($max)"
+                        bell
+                        return
+                    }
+                    catch {
+                        # can fail in log mode
+                        $itk_component(plot) axis configure $axis -min $val
+                        Rappture::Logger::log histogram axis $axis -min $val
+                    }
+                    foreach {min max} [$itk_component(plot) axis limits $axis] break
+                    $inner.min delete 0 end
+                    $inner.min insert end $min
+                }
+                max {
+                    set val [$inner.max get]
+                    if {![string is double -strict $val]} {
+                        Rappture::Tooltip::cue $inner.max "Should be a number"
+                        bell
+                        return
+                    }
+
+                    set min [lindex [$itk_component(plot) axis limits $axis] 0]
+                    if {$val <= $min} {
+                        Rappture::Tooltip::cue $inner.max "Must be >= min ($min)"
+                        bell
+                        return
+                    }
+                    catch {
+                        # can fail in log mode
+                        $itk_component(plot) axis configure $axis -max $val
+                        Rappture::Logger::log histogram axis $axis -max $val
+                    }
+                    foreach {min max} [$itk_component(plot) axis limits $axis] break
+                    $inner.max delete 0 end
+                    $inner.max insert end $max
+                }
+                format {
+                    set fmt [$inner.format translate [$inner.format value]]
+                    set _axisPopup(format-$axis) $fmt
+
+                    # force a refresh
+                    $itk_component(plot) axis configure $axis -min \
+                        [$itk_component(plot) axis cget $axis -min]
+                }
+                scale {
+                    Axis scale $axis $_axisPopup(scale)
+                    Rappture::Logger::log histogram axis $axis -scale $_axisPopup(scale)
+
+                    if {$_axisPopup(scale) == "log"} {
+                        $inner.format configure -state disabled
+                    } else {
+                        $inner.format configure -state normal
+                    }
+
+                    foreach {min max} [$itk_component(plot) axis limits $axis] break
+                    $inner.min delete 0 end
+                    $inner.min insert end $min
+                    $inner.max delete 0 end
+                    $inner.max insert end $max
+                }
+                default {
+                    # be lenient so we can handle the "focus" case
+                }
+            }
+        }
+        format {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis format axis widget value\""
+            }
+            set axis [lindex $args 0]
+            set value [lindex $args 2]
+            if { $axis == "x" } {
+                return [FormatLabels $itk_component(plot) $value]
+            }
+            if {[$itk_component(plot) axis cget $axis -logscale]} {
+                set fmt "%.6g"
+            } else {
+                set fmt $_axisPopup(format-$axis)
+            }
+            return [format $fmt $value]
+        }
+        scale {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Axis scale axis type\""
+            }
+            set axis [lindex $args 0]
+            set type [lindex $args 1]
+
+            if {$type == "log"} {
+                catch {$itk_component(plot) axis configure $axis -logscale 1}
+                # leave format alone in log mode
+                $itk_component(plot) axis configure $axis -command ""
+            } else {
+                catch {$itk_component(plot) axis configure $axis -logscale 0}
+                # use special formatting for linear mode
+                $itk_component(plot) axis configure $axis -command \
+                    [itcl::code $this Axis format $axis]
+            }
+        }
+        default {
+            error "bad option \"$option\": should be changed, edit, hilite, or format"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: GetLineMarkerOptions <style>
+#
+# Used internally to create a list of configuration options specific to the
+# axis line marker.  The input is a list of name value pairs.  Options that
+# are not recognized are ignored.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::GetLineMarkerOptions {style} {
+    array set lineOptions {
+        "-color"  "-outline"
+        "-dashes" "-dashes"
+        "-linecolor" "-outline"
+        "-linewidth" "-linewidth"
+    }
+    set options {}
+    foreach {name value} $style {
+        if { [info exists lineOptions($name)] } {
+            lappend options $lineOptions($name) $value
+        }
+    }
+    return $options
+}
+
+# ----------------------------------------------------------------------
+# USAGE: GetTextMarkerOptions <style>
+#
+# Used internally to create a list of configuration options specific to the
+# axis text marker.  The input is a list of name value pairs.  Options that
+# are not recognized are ignored.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::GetTextMarkerOptions {style} {
+    array set textOptions {
+        "-color"  "-outline"
+        "-textcolor"  "-outline"
+        "-font"   "-font"
+        "-xoffset" "-xoffset"
+        "-yoffset" "-yoffset"
+        "-anchor" "-anchor"
+        "-rotate" "-rotate"
+    }
+    set options {}
+    foreach {name value} $style {
+        if { [info exists textOptions($name)] } {
+            lappend options $textOptions($name) $value
+        }
+    }
+    return $options
+}
+
+# ----------------------------------------------------------------------
+# USAGE: GetAxes <dataobj>
+#
+# Used internally to figure out the axes used to plot the given
+# <dataobj>.  Returns a list of the form {x y}, where x is the
+# x-axis name (x, x2, x3, etc.), and y is the y-axis name.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HistogramResult::GetAxes {dataobj} {
+    # rebuild if needed, so we know about the axes
+    if {[$_dispatcher ispending !rebuild]} {
+        $_dispatcher cancel !rebuild
+        $_dispatcher event -now !rebuild
+    }
+
+    # what is the x axis?  x? x2? x3? ...
+    set xlabel [$dataobj hints xlabel]
+    if {[info exists _label2axis(x-$xlabel)]} {
+        set mapx $_label2axis(x-$xlabel)
+    } else {
+        set mapx "x"
+    }
+
+    # what is the y axis?  y? y2? y3? ...
+    set ylabel [$dataobj hints ylabel]
+    if {[info exists _label2axis(y-$ylabel)]} {
+        set mapy $_label2axis(y-$ylabel)
+    } else {
+        set mapy "y"
+    }
+
+    return [list $mapx $mapy]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -gridcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HistogramResult::gridcolor {
+    if {"" == $itk_option(-gridcolor)} {
+        $itk_component(plot) grid off
+    } else {
+        $itk_component(plot) grid configure -color $itk_option(-gridcolor)
+        $itk_component(plot) grid on
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -autocolors
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HistogramResult::autocolors {
+    foreach c $itk_option(-autocolors) {
+        if {[catch {winfo rgb $itk_component(hull) $c}]} {
+            error "bad color \"$c\""
+        }
+    }
+    if {$_autoColorI >= [llength $itk_option(-autocolors)]} {
+        set _autoColorI 0
+    }
+}
+
+itcl::body Rappture::HistogramResult::EnterMarker { g name x y text } {
+    LeaveMarker $g $name
+    set id [$g marker create text \
+                -coords [list $x $y] \
+                -anchor n \
+                -text $text]
+    set _markers($name) $id
+}
+
+itcl::body Rappture::HistogramResult::LeaveMarker { g name } {
+    if { [info exists _markers($name)] } {
+        set id $_markers($name)
+        $g marker delete $id
+        unset _markers($name)
+    }
+}
+
+
+itcl::body Rappture::HistogramResult::FormatLabels { w value } {
+    # Determine the element name from the value
+    set index [expr round($value)]
+    set d [expr abs($value - $index)]
+    # Ignore values that aren't close to the integer value
+    if { $d < 0.00000001 } {
+        if { [info exists _xlabels($index)] } {
+            return $_xlabels($index)
+        }
+    }
+    return " "
+}
+
+#
+# ResetLegend --
+#
+itcl::body Rappture::HistogramResult::ResetLegend {} {
+    set g $itk_component(plot)
+    update idletasks
+    $itk_component(legend) reset [$g element show]
+}
Index: /tags/1.6.0/gui/scripts/htmlviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/htmlviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/htmlviewer.tcl	(revision 6168)
@@ -0,0 +1,440 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: htmlviewer - easy way to display HTML text
+#
+#  This is a thin layer on top of the Tkhtml widget.  It makes it
+#  easier to load HTML text and render it with proper behaviors.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require Tkhtml
+package require Img
+
+option add *HTMLviewer.width 3i widgetDefault
+option add *HTMLviewer.height 0 widgetDefault
+option add *HTMLviewer.maxLines 4 widgetDefault
+
+itcl::class Rappture::HTMLviewer {
+    inherit itk::Widget
+
+    itk_option define -foreground foreground Foreground black
+    itk_option define -background background Background white
+    itk_option define -linknormalcolor linkNormalColor LinkColor blue
+    itk_option define -linkactivecolor linkActiveColor LinkColor black
+    itk_option define -linkactivebackground linkActiveBackground LinkActiveBackground #cccccc
+    itk_option define -xscrollcommand xScrollCommand XScrollCommand ""
+    itk_option define -yscrollcommand yScrollCommand YScrollCommand ""
+    itk_option define -width width Width 0
+    itk_option define -height height Height 0
+    itk_option define -maxlines maxLines MaxLines 0
+
+    constructor {args} { # defined below }
+
+    public method load {htmlText args}
+    public method add {htmlText args}
+    public method followLink {url}
+
+    # this widget works with scrollbars
+    public method xview {args} { eval $itk_component(html) xview $args }
+    public method yview {args} { eval $itk_component(html) yview $args }
+
+    protected method _config {args}
+    private variable _dispatcher "" ;# dispatcher for !events
+
+    protected method _fixHeight {args}
+    private variable _linesize ""   ;# height of default font size
+
+    protected method _mouse {option x y}
+    private variable _hover ""   ;# list of nodes that mouse is hovering over
+
+    protected method _getImage {file}
+    protected method _freeImage {file}
+    private common _file2icon        ;# maps file name => image handle
+    private common _icon2file        ;# maps image handle => file name
+    private variable _dirlist "" ;# list of directories where HTML came from
+}
+
+itk::usual HTMLviewer {
+    keep -cursor
+    keep -foreground -background
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::HTMLviewer::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !config
+    $_dispatcher dispatch $this !config [itcl::code $this _config]
+    $_dispatcher register !fixHeight
+    $_dispatcher dispatch $this !fixHeight [itcl::code $this _fixHeight]
+
+    itk_component add html {
+        html $itk_interior.html -imagecmd [itcl::code $this _getImage]
+    } {
+        # no real options to work with for this widget
+    }
+    pack $itk_component(html) -expand yes -fill both
+
+    bind $itk_component(html) <Motion> \
+        [itcl::code $this _mouse over %x %y]
+    bind $itk_component(html) <ButtonPress-1> \
+        [itcl::code $this _mouse over %x %y]
+    bind $itk_component(html) <ButtonRelease-1> \
+        [itcl::code $this _mouse release %x %y]
+
+    # measure the default font height
+    $itk_component(html) reset
+    $itk_component(html) parse -final "Testing"
+    set node [$itk_component(html) node]
+    foreach {x0 y0 x1 y1} [$itk_component(html) bbox $node] break
+    set _linesize [expr {$y1-$y0}]
+    $itk_component(html) reset
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load <htmlText> ?-in <fileName>?
+#
+# Clients use this to clear the contents and load a new string of
+# <htmlText>.  If the text is empty, this has the effect of clearing
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HTMLviewer::load {htmlText args} {
+    Rappture::getopts args params {
+        value -in ""
+    }
+    if {[llength $args] > 0} {
+        error "wrong # args: should be \"load text ?-in name?\""
+    }
+
+    $itk_component(html) reset
+    set _hover ""
+    set _dirlist ""
+
+    $itk_component(html) parse $htmlText
+
+    if {"" != $params(-in) && [file exists $params(-in)]} {
+        if {[file isdirectory $params(-in)]} {
+            lappend _dirlist $params(-in)
+        } else {
+            lappend _dirlist [file dirname $params(-in)]
+        }
+    }
+    $_dispatcher event -now !config
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <htmlText> ?-in <fileName>?
+#
+# Clients use this to add the <htmlText> to the bottom of the contents
+# being displayed in the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HTMLviewer::add {htmlText args} {
+    Rappture::getopts args params {
+        value -in ""
+    }
+    if {[llength $args] > 0} {
+        error "wrong # args: should be \"add text ?-in name?\""
+    }
+
+    $itk_component(html) parse $htmlText
+
+    if {"" != $params(-in) && [file exists $params(-in)]} {
+        if {[file isdirectory $params(-in)]} {
+            lappend _dirlist $params(-in)
+        } else {
+            lappend _dirlist [file dirname $params(-in)]
+        }
+    }
+    $_dispatcher event -now !config
+}
+
+# ----------------------------------------------------------------------
+# USAGE: followLink <url>
+#
+# Invoked automatically whenever the user clicks on a link within
+# an HTML page.  Tries to follow the <url> by invoking "exportfile"
+# to pop up further information.  If the <url> starts with http://
+# or https://, then it is used directly.  Otherwise, it is treated
+# as a relative file path and resolved with respect to the -in
+# options passed into load/add.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HTMLviewer::followLink {url} {
+    if {[regexp -nocase {^https?://} $url]} {
+        foreach prog {
+                clientaction
+                /apps/bin/clientaction
+                /apps/xvnc/bin/clientaction
+                /usr/lib/mw/bin/clientaction
+                ""
+        } {
+            if {"" != [auto_execok $prog]} {
+                break
+            }
+        }
+        if {"" != $prog} {
+            exec $prog url $url &
+        } else {
+            bell
+        }
+        return
+    }
+
+    # must be a file -- use exportfile
+    set url [string trimleft $url /]
+    set path ""
+    foreach dir $_dirlist {
+        if {[file readable [file join $dir $url]]} {
+            set path [file join $dir $url]
+            break
+        }
+    }
+
+    foreach prog {exportfile /apps/bin/exportfile ""} {
+        if {"" != [auto_execok $prog]} {
+            break
+        }
+    }
+    if {"" != $path && "" != $prog} {
+        exec $prog --format html $path &
+    } else {
+        bell
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _mouse over <x> <y>
+# USAGE: _mouse release <x> <y>
+#
+# Invoked automatically as the mouse pointer moves around or otherwise
+# interacts with this widget.  When the mouse is over a link, the link
+# becomes annotated with the "hover" style, so it can be highlighted.
+# Clicking and releasing on the same link invokes the action associated
+# with the link.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HTMLviewer::_mouse {option x y} {
+    switch -- $option {
+        over {
+            # get a list of nodes with tags we care about
+            set nlist ""
+            foreach node [$itk_component(html) node $x $y] {
+                while {"" != $node} {
+                    if {[$node tag] == "a"} {
+                        lappend nlist $node
+                        break
+                    }
+                    set node [$node parent]
+                }
+            }
+
+            # over something new? then tag it with "hover"
+            if {$nlist != $_hover} {
+                foreach node $_hover {
+                    catch {$node dynamic clear hover}
+                }
+                set _hover $nlist
+                foreach node $_hover {
+                    catch {$node dynamic set hover}
+                }
+            }
+        }
+        release {
+            set prev $_hover
+            _mouse over $x $y
+
+            # mouse release on same node as mouse click? then follow link
+            if {$prev == $_hover} {
+                foreach node $_hover {
+                    if {[$node tag] == "a"} {
+                        followLink [$node attr -default {} href]
+                    }
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be over or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _config <arg> <arg>...
+#
+# Invoked automatically whenever the style-related configuration
+# options change for this widget.  Changes the main style sheet to
+# configure the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HTMLviewer::_config {args} {
+    component html style -id "author" "
+      body {
+        background: $itk_option(-background);
+        color: $itk_option(-foreground);
+        font: 12px helvetica,arial;
+      }
+      a {
+        color: $itk_option(-linknormalcolor);
+        text-decoration: underline;
+      }
+      a:hover {
+        color: $itk_option(-linkactivecolor);
+        background: $itk_option(-linkactivebackground);
+      }
+    "
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixHeight <arg> <arg>...
+#
+# Invoked automatically whenever the height-related configuration
+# options change for this widget.  If -height is set to 0, then this
+# routine figures out a good height for the widget based on -maxlines.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HTMLviewer::_fixHeight {args} {
+    set ht [winfo pixels $itk_component(html) $itk_option(-height)]
+    if {$ht <= 0} {
+        # figure out a good size automatically
+        set realht [winfo pixels $itk_component(html) 1i]
+        set node [$itk_component(html) node]
+        if {"" != $node} {
+            set bbox [$itk_component(html) bbox $node]
+            if { [llength $bbox] == 4 } {
+                set realht [expr {[lindex $bbox 3]-[lindex $bbox 1]}]
+            }
+        }
+        if {$itk_option(-maxlines) > 0} {
+            set ht [expr {$itk_option(-maxlines)*$_linesize}]
+            if {$realht < $ht} {
+                set ht $realht
+            }
+        } else {
+            set ht $realht
+        }
+    }
+    $itk_component(html) configure -height $ht
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _getImage <fileName>
+#
+# Used internally to convert a <fileName> to its corresponding image
+# handle.  If the <fileName> is relative, then it is loaded with
+# respect to the paths given by the -in option for the load/add
+# methods.  Returns an image handle for the image within the file,
+# or the broken image icon if anything goes wrong.
+# ----------------------------------------------------------------------
+itcl::body Rappture::HTMLviewer::_getImage {fileName} {
+    if {[info exists _file2icon($fileName)]} {
+        set imh $_file2icon($fileName)
+        return [list $imh [itcl::code $this _freeImage]]
+    }
+
+    set searchlist $fileName
+    if {[file pathtype $fileName] != "absolute"} {
+        foreach dir $_dirlist {
+            lappend searchlist [file join $dir $fileName]
+        }
+    }
+
+    foreach name $searchlist {
+        if {[catch {image create photo -file $name} imh] == 0} {
+            set _file2icon($fileName) $imh
+            set _icon2file($imh) $fileName
+            return [list $imh [itcl::code $this _freeImage]]
+        }
+    }
+    puts stderr "Problem in your html: image \"$fileName\" does not exist"
+    # The htmlwidget assumes it owns the image and will delete it.
+    # Always create a copy of the image.
+    set img [Rappture::icon exclaim]
+    set file [$img cget -file]
+    set img [image create photo -file $file]
+    return $img
+}
+
+itcl::body Rappture::HTMLviewer::_freeImage { imh } {
+    if {[info exists _icon2file($imh)]} {
+        image delete $imh
+        set fileName $_icon2file($imh)
+        unset _icon2file($imh)
+        unset _file2icon($fileName)
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -background
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HTMLviewer::background {
+    $_dispatcher event -idle !config
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -foreground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HTMLviewer::foreground {
+    $_dispatcher event -idle !config
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -linknormalcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HTMLviewer::linknormalcolor {
+    $_dispatcher event -idle !config
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -linkactivecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HTMLviewer::linkactivecolor {
+    $_dispatcher event -idle !config
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -linkactivebackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HTMLviewer::linkactivebackground {
+    $_dispatcher event -idle !config
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -xscrollcommand
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HTMLviewer::xscrollcommand {
+    $itk_component(html) configure -xscrollcommand $itk_option(-xscrollcommand)
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -yscrollcommand
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HTMLviewer::yscrollcommand {
+    $itk_component(html) configure -yscrollcommand $itk_option(-yscrollcommand)
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -width
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HTMLviewer::width {
+    $itk_component(html) configure -width $itk_option(-width)
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -maxlines
+# Sets the maximum number of lines for widgets with "-height 0"
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HTMLviewer::maxlines {
+    $_dispatcher event -idle !fixHeight
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -height
+# Set to absolute size ("3i") or 0 for default size based on -maxlines.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::HTMLviewer::height {
+    $_dispatcher event -idle !fixHeight
+}
Index: /tags/1.6.0/gui/scripts/icons.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/icons.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/icons.tcl	(revision 6168)
@@ -0,0 +1,397 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: icons - utility for loading icons from a library
+#
+#  This utility makes it easy to load GIF and XBM files installed
+#  in a library in the final installation.  It is used throughout
+#  the Rappture GUI, whenever an icon is needed.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+package require BLT
+
+namespace eval Rappture::icon {
+    variable iconpath [list [file join $RapptureGUI::library scripts images]]
+    variable icons
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::icon::searchpath ?<dirname> <dirname>...?
+#
+# Adds one or more directories onto the icon path searched when
+# locating icons in Rappture::icon.  You can do the same thing by
+# lappend'ing onto the "iconpath" variable, but this call avoids
+# duplicates and makes it easier
+# ----------------------------------------------------------------------
+proc Rappture::icon::searchpath {args} {
+    variable iconpath
+    foreach dir $args {
+        if {[file isdirectory $dir]} {
+            if {[lsearch $iconpath $dir] < 0} {
+                lappend iconpath $dir
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::icon <name>
+#
+# Searches for an icon called <name> on all of the directories in
+# the search path set up by RapptureGUI::iconpath.
+# ----------------------------------------------------------------------
+proc Rappture::icon {name} {
+    variable ::Rappture::icon::iconpath
+    variable ::Rappture::icon::icons
+
+    #
+    # Already loaded? then return it directly
+    #
+    if {[info exists icons($name)]} {
+        return $icons($name)
+    }
+
+    #
+    # Search for the icon along the iconpath search path
+    #
+    set file ""
+    foreach dir $iconpath {
+        set path [file join $dir $name.*]
+        set file [lindex [glob -nocomplain $path] 0]
+        if {"" != $file} {
+            break
+        }
+    }
+
+    set imh ""
+    if {"" != $file} {
+        switch -- [file extension $file] {
+            .gif - .jpg - .png {
+                set imh [image create photo -file $file]
+            }
+            .xbm {
+                set fid [open $file r]
+                set data [read $fid]
+                close $fid
+                set imh bitmap-$name
+                blt::bitmap define $imh $data
+            }
+        }
+    }
+    if {"" != $imh} {
+        set icons($name) $imh
+    }
+    return $imh
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::icon::data <image> ?<format>?
+#
+# Returns the bytes the represent an <image> in the requested
+# <format>, which can get "gif" or "jpeg".
+# ----------------------------------------------------------------------
+proc Rappture::icon::data {image {format "gif"}} {
+    if {[catch {$image data -format $format} result]} {
+        if {"too many colors" == $result && "" != [auto_execok djpeg]} {
+            #
+            # HACK ALERT!  We should use "blt::winop quantize" to
+            #   reduce the number of colors for GIF format.  But
+            #   it has a bug right now, so we work around it like this.
+            #
+            set tmpfile /tmp/image[pid].dat
+            $image write $tmpfile -format "jpeg -quality 100"
+            set fid [open "| djpeg -gif -quantize 250 $tmpfile" r]
+            fconfigure $fid -encoding binary -translation binary
+            set result [read $fid]
+            close $fid
+            file delete -force $tmpfile
+        } else {
+            set result ""
+        }
+    }
+    return $result
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::icon::gif_animate <delay> ?<image> <image>...?
+#
+# Takes a series if <images> and composited them into a single,
+# animated GIF image, with the <delay> in milliseconds between
+# frames.  Returns binary data in GIF89a format.
+# ----------------------------------------------------------------------
+proc Rappture::icon::gif_animate {delay args} {
+    if {[llength $args] < 1} {
+        error "must have at least one image for animation"
+    }
+    set delay [expr {round($delay*0.01)}] ;# convert to 1/100s of second
+
+    set imh [lindex $args 0]
+    set bytes [data $imh gif]
+    if {[string length $bytes] == 0} {
+        return ""  ;# can't query image data -- bail out!
+    }
+    gif_parse $bytes first
+
+    set final "GIF89a"
+    gif_put_short final $first(screen-w)
+    gif_put_short final $first(screen-h)
+    gif_put_byte final $first(screen-packed)
+    gif_put_byte final $first(screen-bg)
+    gif_put_byte final $first(screen-aspect)
+    gif_put_block final $first(colors)
+
+    gif_put_byte final 0x21  ;# looping block
+    gif_put_byte final 0xFF
+    gif_put_byte final 11
+    gif_put_block final "NETSCAPE2.0"
+    gif_put_byte final 3     ;# 3 bytes in this block
+    gif_put_byte final 1     ;# turn looping on
+    gif_put_short final 0    ;# number of loops (forever)
+    gif_put_byte final 0     ;# block terminator
+
+    gif_put_byte final 0x21  ;# graphic control block
+    gif_put_byte final 0xF9
+    gif_put_byte final 4     ;# 4 bytes in this block
+    gif_put_byte final 0     ;# packed bits
+    gif_put_short final [expr {5*$delay}]  ;# delay time *0.01s
+    gif_put_byte final 0     ;# transparency index
+    gif_put_byte final 0     ;# block terminator
+
+    gif_put_byte final 0x2C  ;# image block
+    gif_put_short final $first(im-0-left)
+    gif_put_short final $first(im-0-top)
+    gif_put_short final $first(im-0-wd)
+    gif_put_short final $first(im-0-ht)
+    gif_put_byte final $first(im-0-packed)
+    if {($first(im-0-packed) & 0x80) != 0} {
+        gif_put_block final $first(im-0-colors)
+    }
+    gif_put_block final $first(im-0-data)
+
+    foreach imh [lrange $args 1 end] {
+        catch {unset gif}
+        gif_parse [data $imh gif] gif
+
+        gif_put_byte final 0x21     ;# graphic control block
+        gif_put_byte final 0xF9
+        gif_put_byte final 4        ;# 4 bytes in this block
+        gif_put_byte final 0        ;# packed bits
+        gif_put_short final $delay  ;# delay time *0.01s
+        gif_put_byte final 0        ;# transparency index
+        gif_put_byte final 0        ;# block terminator
+
+        gif_put_byte final 0x2C     ;# image block
+        gif_put_short final $gif(im-0-left)
+        gif_put_short final $gif(im-0-top)
+        gif_put_short final $gif(im-0-wd)
+        gif_put_short final $gif(im-0-ht)
+
+        if {[string length $gif(im-0-colors)] > 0} {
+            gif_put_byte final $gif(im-0-packed)
+            gif_put_block final $gif(im-0-colors)
+        } else {
+            set packed [expr {($gif(im-0-packed) & 0xF8)
+                | ($gif(screen-packed) & 0x87)}]
+            gif_put_byte final $packed
+            gif_put_block final $gif(colors)
+        }
+        gif_put_block final $gif(im-0-data)
+    }
+
+    gif_put_byte final 0x3B  ;# terminate GIF
+
+    return $final
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::icon::gif_parse <gifImageData> <array>
+#
+# Takes the data from a GIF image, parses it into various components,
+# and returns the information in the <array> in the calling scope.
+# ----------------------------------------------------------------------
+proc Rappture::icon::gif_parse {gifImageData arrayVar} {
+    upvar $arrayVar data
+    if {[string range $gifImageData 0 2] != "GIF"} {
+        error "not GIF data"
+    }
+    set data(version) [string range $gifImageData 0 5]
+    set pos 6
+
+    set data(screen-w) [gif_get_short $gifImageData pos]
+    set data(screen-h) [gif_get_short $gifImageData pos]
+    set data(screen-packed) [gif_get_byte $gifImageData pos]
+    set data(screen-bg) [gif_get_byte $gifImageData pos]
+    set data(screen-aspect) [gif_get_byte $gifImageData pos]
+
+    set ctsize [expr {3*(1 << ($data(screen-packed) & 0x07)+1)}]
+    set data(colors) [gif_get_block $gifImageData pos $ctsize]
+
+    set n 0
+    while {1} {
+        set ctrl [gif_get_byte $gifImageData pos]
+        switch -- [format "0x%02X" $ctrl] {
+          0x21 {
+            set ext [gif_get_byte $gifImageData pos]
+            switch -- [format "0x%02X" $ext] {
+              0xF9 {
+                # graphic control
+                set bsize [gif_get_byte $gifImageData pos]
+                set data(gc-$n-packed) [gif_get_byte $gifImageData pos]
+                set data(gc-$n-delay) [gif_get_short $gifImageData pos]
+                set data(gc-$n-transp) [gif_get_byte $gifImageData pos]
+                set bterm [gif_get_byte $gifImageData pos]
+                if {$bterm != 0} { error "bad magic $bterm" }
+              }
+              0xFE {
+                # comment extension -- skip and ignore
+                while {1} {
+                    set count [gif_get_byte $gifImageData pos]
+                    if {$count == 0} {
+                        break
+                    }
+                    incr pos $count
+                }
+              }
+              0xFF {
+                set bsize [gif_get_byte $gifImageData pos]
+                set data(app-name) [gif_get_block $gifImageData pos $bsize]
+                set data(app-bytes) ""
+                while {1} {
+                    set count [gif_get_byte $gifImageData pos]
+                    gif_put_byte data(app-bytes) $count
+                    if {$count == 0} {
+                        break
+                    }
+                    gif_put_block data(app-bytes) \
+                        [gif_get_block $gifImageData pos $count]
+                }
+              }
+              default {
+                error [format "unknown extension code 0x%02X" $ext]
+              }
+            }
+          }
+          0x2C {
+            # image data
+            set data(im-$n-left) [gif_get_short $gifImageData pos]
+            set data(im-$n-top) [gif_get_short $gifImageData pos]
+            set data(im-$n-wd) [gif_get_short $gifImageData pos]
+            set data(im-$n-ht) [gif_get_short $gifImageData pos]
+            set data(im-$n-packed) [gif_get_byte $gifImageData pos]
+            set data(im-$n-colors) ""
+            if {($data(im-$n-packed) & 0x80) != 0} {
+                set ctsize [expr {3*(1 << ($data(im-$n-packed) & 0x07)+1)}]
+                set data(im-$n-colors) [gif_get_block $gifImageData pos $ctsize]
+            }
+
+            set data(im-$n-data) ""
+            gif_put_byte data(im-$n-data) \
+                [gif_get_byte $gifImageData pos] ;# lwz min code size
+            while {1} {
+                set count [gif_get_byte $gifImageData pos]
+                gif_put_byte data(im-$n-data) $count
+                if {$count == 0} {
+                    break
+                }
+                gif_put_block data(im-$n-data) \
+                    [gif_get_block $gifImageData pos $count]
+            }
+            incr n
+          }
+          0x3B {
+            # end of image data
+            break
+          }
+          default {
+            error [format "unexpected control byte 0x%02X" $ctrl]
+          }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::icon::gif_get_byte <buffer> <posVar>
+#
+# Extracts one byte of information from the <buffer> at the index
+# specified by <posVar> in the calling scope.  Increments <posVar>
+# to move past the byte and returns the byte of information.
+# ----------------------------------------------------------------------
+proc Rappture::icon::gif_get_byte {buffer posVar} {
+    upvar $posVar pos
+    set byte [string range $buffer $pos $pos]
+    incr pos 1
+
+    binary scan $byte c rval
+    if {$rval < 0} {incr rval 256}
+    return $rval
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::icon::gif_get_short <buffer> <posVar>
+#
+# Extracts one short int of information from the <buffer> at the index
+# specified by <posVar> in the calling scope.  Increments <posVar>
+# to move past the int and returns the information.
+# ----------------------------------------------------------------------
+proc Rappture::icon::gif_get_short {buffer posVar} {
+    upvar $posVar pos
+    set bytes [string range $buffer $pos [expr {$pos+1}]]
+    incr pos 2
+
+    binary scan $bytes s rval
+    if {$rval < 0} {incr rval 65536}
+    return $rval
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::icon::gif_get_block <buffer> <posVar> <size>
+#
+# Extracts <size> bytes of information from the <buffer> at the index
+# specified by <posVar> in the calling scope.  Increments <posVar>
+# to move past the byte and returns the byte of information.
+# ----------------------------------------------------------------------
+proc Rappture::icon::gif_get_block {buffer posVar size} {
+    upvar $posVar pos
+    set bytes [string range $buffer $pos [expr {$pos+$size-1}]]
+    incr pos $size
+    return $bytes
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::icon::gif_put_byte <buffer> <charVal>
+#
+# Appends one byte of information onto the <buffer> in the calling
+# scope.  The <charVal> is an integer in the range 0-255.  It is
+# formated as a single byte and appended onto the buffer.
+# ----------------------------------------------------------------------
+proc Rappture::icon::gif_put_byte {bufferVar char} {
+    upvar $bufferVar buffer
+    append buffer [binary format c $char]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::icon::gif_put_short <buffer> <shortVal>
+#
+# Appends one byte of information onto the <buffer> in the calling
+# scope.  The <shortVal> is an integer in the range 0-65535.  It is
+# formated as a 2-byte short integer and appended onto the buffer.
+# ----------------------------------------------------------------------
+proc Rappture::icon::gif_put_short {bufferVar short} {
+    upvar $bufferVar buffer
+    append buffer [binary format s $short]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::icon::gif_put_block <buffer> <val>
+#
+# Appends a string <val> onto the <buffer> in the calling scope.
+# ----------------------------------------------------------------------
+proc Rappture::icon::gif_put_block {bufferVar val} {
+    upvar $bufferVar buffer
+    append buffer $val
+}
Index: /tags/1.6.0/gui/scripts/image.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/image.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/image.tcl	(revision 6168)
@@ -0,0 +1,75 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: image - represents a picture image
+#
+#  This object represents a Tk image.  It is convenient to have it
+#  expressed as an Itcl object, so it can be managed just like a
+#  curve, table, etc.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+package require BLT
+
+namespace eval Rappture { # forward declaration }
+
+itcl::class Rappture::Image {
+    constructor {xmlobj path} { # defined below }
+    destructor { # defined below }
+
+    public method tkimage {} { return $_image }
+    public method hints {{keyword ""}}
+
+    private variable _xmlobj ""  ;# ref to lib obj with image data
+    private variable _path ""    ;# path in _xmlobj where data sits
+    private variable _image ""   ;# underlying image data
+    private variable _hints
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Image::constructor {xmlobj path} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be LibraryObj"
+    }
+    set _xmlobj $xmlobj
+    set _path $path
+    set data [string trim [$xmlobj get $path.current]]
+    if {[string length $data] == 0} {
+        set _image [image create photo]
+    } else {
+        set _image [image create photo -data $data]
+    }
+
+    set _hints(note) [string trim [$_xmlobj get $_path.note.contents]]
+    set _hints(tooldir) [$_xmlobj get tool.version.application.directory(tool)]
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Image::destructor {} {
+    image delete $_image
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about showing
+# this image.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Image::hints {{keyword ""}} {
+    if {$keyword != ""} {
+        if {[info exists _hints($keyword)]} {
+            return $_hints($keyword)
+        }
+        return ""
+    }
+    return [array get _hints]
+}
Index: /tags/1.6.0/gui/scripts/imageentry.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/imageentry.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/imageentry.tcl	(revision 6168)
@@ -0,0 +1,403 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: ImageEntry - widget for displaying images
+#
+#  This widget represents an <image> entry on a control panel.
+#  It displays images which help explain the input.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require Img
+
+itcl::class Rappture::ImageEntry {
+    inherit itk::Widget
+
+    itk_option define -state state State "normal"
+
+    constructor {owner path args} { # defined below }
+    destructor { # defined below }
+
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+
+    protected method _redraw {}
+    protected method _outline {imh color}
+    protected method _uploadValue {args}
+    protected method _downloadValue {}
+
+    private variable _owner ""    ;# thing managing this control
+    private variable _path ""     ;# path in XML to this image
+    private variable _data ""     ;# current image data
+    private variable _imh ""      ;# image handle for current value
+    private variable _resize ""   ;# image for resize operations
+
+    private common _thumbsize 100 ;# std size for thumbnail images
+}
+
+itk::usual ImageEntry {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageEntry::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+    set _resize [image create photo]
+
+    #
+    # Create the widget and configure it properly based on other
+    # hints in the XML.  Two ways to display:  Old apps use images
+    # without labels as decorations.  In that case, show the image
+    # alone, probably full size.  Newer apps use images as inputs.
+    # In that case, show a thumbnail of the image with some extra
+    # facts about image type, file size, etc.
+    #
+    itk_component add image {
+        ::label $itk_interior.image -borderwidth 0
+    }
+
+    itk_component add info {
+        ::label $itk_interior.info -borderwidth 0 -width 5 \
+            -anchor w -justify left
+    }
+
+    itk_component add rmenu {
+        menu $itk_interior.menu -tearoff 0
+    } {
+        usual
+        ignore -tearoff
+    }
+    $itk_component(rmenu) add command \
+        -label [Rappture::filexfer::label upload] \
+        -command [itcl::code $this _uploadValue -start]
+    $itk_component(rmenu) add command \
+        -label [Rappture::filexfer::label download] \
+        -command [itcl::code $this _downloadValue]
+
+
+    if {[string length [label]] == 0} {
+        # old mode -- big image
+        pack $itk_component(image) -expand yes -fill both
+        bind $itk_component(image) <Configure> [itcl::code $this _redraw]
+    } else {
+        # new mode -- thumbnail and details
+        pack $itk_component(image) -side left
+        pack $itk_component(info) -side left -expand yes -fill both -padx 4
+
+        bind $itk_component(image) <<PopupMenu>> \
+            [list tk_popup $itk_component(rmenu) %X %Y]
+        bind $itk_component(info) <<PopupMenu>> \
+            [list tk_popup $itk_component(rmenu) %X %Y]
+
+        _redraw  ;# draw Empty image/info
+    }
+
+    # Don't trim this string.  It make be important.
+    set str [$_owner xml get $path.current]
+    if {[string length $str] == 0} {
+        set str [$_owner xml get $path.default]
+    }
+    if {[string length $str] > 0} {
+        value $str
+    }
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageEntry::destructor {} {
+    if {"" != $_imh} { image delete $_imh }
+    if {"" != $_resize} { image delete $_resize }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageEntry::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+
+    if {[llength $args] == 1} {
+        if {$onlycheck} {
+            # someday we may add validation...
+            return
+        }
+        set newval [lindex $args 0]
+        if {[string length $newval] > 0} {
+            set imh [image create photo -data $newval]
+        } else {
+            set imh ""
+        }
+
+        if {$_imh != ""} {
+            image delete $_imh
+        }
+        set _imh $imh
+        set _data $newval
+
+        _redraw
+
+        return $newval
+
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    #
+    # Query the value and return.
+    #
+    set bytes $_data
+    set fmt [string trim [$_owner xml get $_path.convert]]
+    if {"" != $fmt && "" != $_imh} {
+        if {"pgm" == $fmt} { set fmt "ppm -grayscale" }
+        set bytes [eval $_imh data -format $fmt]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+    }
+    return $bytes
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageEntry::label {} {
+    set label [string trim [$_owner xml get $_path.about.label]]
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageEntry::tooltip {} {
+    set str [string trim [$_owner xml get $_path.about.description]]
+    return $str
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Used internally to update the image displayed in this entry.
+# If the <resize> parameter is set, then the image is resized.
+# The "auto" value resizes to the current area.  The "width=XX" or
+# "height=xx" form resizes to a particular size.  The "none" value
+# leaves the image as-is; this is the default.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageEntry::_redraw {} {
+    if {"" == $_imh} {
+        # generate a big diagonal cross-hatch image
+        set diag [Rappture::icon diag]
+        set dw [image width $diag]
+        set dh [image height $diag]
+        $_resize configure -width $_thumbsize -height $_thumbsize
+        for {set i 0} {$i < $_thumbsize/$dw+1} {incr i} {
+            for {set j 0} {$j < $_thumbsize/$dh+1} {incr j} {
+                set x [expr {$i*$dw}]
+                set y [expr {$j*$dh}]
+                $_resize copy $diag -to $x $y
+            }
+        }
+        _outline $_resize black
+        $itk_component(image) configure -image $_resize
+        $itk_component(info) configure -text "Empty"
+        return
+    }
+
+    set iw [image width $_imh]
+    set ih [image height $_imh]
+    $itk_component(image) configure -image "" -width $iw -height $ih
+
+    #
+    # Build a description of the image if the info is showing.
+    #
+    set desc ""
+    if {[string length [label]] != 0} {
+        # if data is base64-encoded, try to decode it
+        if {![regexp {^[a-zA-Z0-9+/=]+(\n[a-zA-Z0-9+/=]+)*$} $_data]
+              || [catch {Rappture::encoding::decode -as b64 $_data} bytes]} {
+            # oops! not base64 -- use data directly
+            set bytes $_data
+        }
+        set desc [Rappture::utils::datatype $bytes]
+        if {[string equal $desc "Binary data"]} {
+            # generic description -- we can do a little better
+            set iw [image width $_imh]
+            set ih [image height $_imh]
+            set desc "Image, ${iw} x ${ih}"
+        }
+        append desc "\n[Rappture::utils::binsize [string length $_data]]"
+    }
+    $itk_component(info) configure -text $desc
+
+    #
+    # Put up the preview image, resizing if necessary.
+    #
+    set str [string trim [$_owner xml get $_path.resize]]
+    if {"" == $str} {
+        set str "none"
+    }
+    switch -glob -- $str {
+        width=* - height=* {
+            if {[regexp {^width=([0-9]+)$} $str match size]} {
+                set w $size
+                set h [expr {round($w*$ih/double($iw))}]
+                $_resize configure -width $w -height $h
+                $_resize blank
+                blt::winop resample $_imh $_resize box
+                _outline $_resize black
+                $itk_component(image) configure -image $_resize \
+                    -width $w -height $h
+            } elseif {[regexp {^height=([0-9]+)$} $str match size]} {
+                set h $size
+                set w [expr {round($h*$iw/double($ih))}]
+                $_resize configure -width $w -height $h
+                $_resize blank
+                blt::winop resample $_imh $_resize box
+                _outline $_resize black
+                $itk_component(image) configure -image $_resize \
+                    -width $w -height $h
+            } else {
+                $itk_component(image) configure -image $_imh
+            }
+        }
+        auto - none - default {
+            if {[string length [label]] == 0} {
+                # old mode -- big image with no label
+                $itk_component(image) configure -image $_imh
+            } else {
+                # new mode -- thumbnail and image info
+                set w $_thumbsize
+                set h $_thumbsize
+                $itk_component(image) configure -width $w -height $h
+
+                if {$iw <= $_thumbsize && $ih <= $_thumbsize} {
+                    $_resize configure -width $iw -height $ih
+                    $_resize copy $_imh
+                    _outline $_resize black
+                } else {
+                    # large image -- scale it down
+                    if {$iw > $ih} {
+                        set h [expr {round($w/double($iw)*$ih)}]
+                    } else {
+                        set w [expr {round($h/double($ih)*$iw)}]
+                    }
+                    $_resize configure -width $w -height $h
+                    $_resize blank
+                    blt::winop resample $_imh $_resize box
+                    _outline $_resize black
+                }
+                $itk_component(image) configure -image $_resize
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _outline <image> <color>
+#
+# Used internally to outline the given <image> with a single-pixel
+# line of the specified <color>.  Updates the image in place.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageEntry::_outline {im color} {
+    if {"" != $im} {
+        set w [image width $im]
+        set h [image height $im]
+        $im put $color -to 0 0 $w 1
+        $im put $color -to 0 0 1 $h
+        $im put $color -to 0 [expr {$h-1}] $w $h
+        $im put $color -to [expr {$w-1}] 0 $w $h
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _uploadValue -start
+# USAGE: _uploadValue -assign <key> <value> <key> <value> ...
+#
+# Used internally to initiate an upload operation.  Prompts the
+# user to upload into the image area of this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageEntry::_uploadValue {args} {
+    set opt [lindex $args 0]
+    switch -- $opt {
+        -start {
+            set tool [Rappture::Tool::resources -appname]
+            set cntls [list $_path [label] [tooltip]]
+            Rappture::filexfer::upload \
+                $tool $cntls [itcl::code $this _uploadValue -assign]
+        }
+        -assign {
+            array set data [lrange $args 1 end] ;# skip option
+            if {[info exists data(error)]} {
+                Rappture::Tooltip::cue $itk_component(image) $data(error)
+            }
+            if {[info exists data(data)]} {
+                Rappture::Tooltip::cue hide  ;# take down note about the popup
+                if {[catch {value $data(data)} err]} {
+                    Rappture::Tooltip::cue $itk_component(image) "Upload failed:\n$err"
+                }
+            }
+        }
+        default {
+            error "bad option \"$opt\": should be -start or -assign"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _downloadValue
+#
+# Used internally to initiate a download operation.  Takes the current
+# value and downloads it to the user in a new browser window.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageEntry::_downloadValue {} {
+    set bytes [Rappture::encoding::decode -as b64 [$_imh data -format png]]
+    set mesg [Rappture::filexfer::download $bytes image.png]
+
+    if {"" != $mesg} {
+        Rappture::Tooltip::cue $itk_component(image) $mesg
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::ImageEntry::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    $itk_component(image) configure -state $itk_option(-state)
+}
Index: /tags/1.6.0/gui/scripts/imageresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/imageresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/imageresult.tcl	(revision 6168)
@@ -0,0 +1,601 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: imageresult - picture image in a ResultSet
+#
+#  This widget displays an image found in the output of a Rappture
+#  tool run.  Use the "add" and "delete" methods to control the images
+#  showing in the widget.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+package require Img
+
+option add *ImageResult.width 3i widgetDefault
+option add *ImageResult.height 3i widgetDefault
+option add *ImageResult.controlBackground gray widgetDefault
+option add *ImageResult.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::ImageResult {
+    inherit itk::Widget
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method add {image {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method parameters {title args} { # do nothing }
+    public method download {option args}
+
+    protected method _rebuild {args}
+    protected method _top {what}
+    protected method _zoom {option args}
+    protected method _move {option args}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+    private variable _dlist ""      ;# list of data objects
+    private variable _topmost ""    ;# topmost image in _dlist
+    private variable _max           ;# max size of all images
+    private variable _scale         ;# info related to zoom
+    private variable _image         ;# image buffers used for scaling
+}
+
+itk::usual ImageResult {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageResult::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild [itcl::code $this _rebuild]
+
+    array set _scale {
+        max 1.0
+        current 1.0
+        default 1
+        x 0
+        y 0
+    }
+
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    Rappture::Panes $itk_interior.panes \
+        -sashwidth 2 -sashrelief solid -sashpadding 1
+
+    pack $itk_interior.panes -expand yes -fill both
+    set main [$itk_interior.panes pane 0]
+    $itk_interior.panes fraction 0 1
+
+    itk_component add controls {
+        frame $main.cntls
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+    pack $itk_component(controls) -side right -fill y
+
+    itk_component add reset {
+        button $itk_component(controls).reset \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -bitmap [Rappture::icon reset] \
+            -command [itcl::code $this _zoom reset]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground Background
+    }
+    pack $itk_component(reset) -padx 4 -pady 4
+    Rappture::Tooltip::for $itk_component(reset) "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $itk_component(controls).zin \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -bitmap [Rappture::icon zoomin] \
+            -command [itcl::code $this _zoom in]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground Background
+    }
+    pack $itk_component(zoomin) -padx 4 -pady 4
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $itk_component(controls).zout \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -bitmap [Rappture::icon zoomout] \
+            -command [itcl::code $this _zoom out]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground Background
+    }
+    pack $itk_component(zoomout) -padx 4 -pady 4
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+
+    set _image(zoom) [image create photo]
+    set _image(final) [image create photo]
+
+    itk_component add image {
+        label $main.image -image $_image(final) -anchor c
+    } {
+        keep -background -foreground -cursor -font
+    }
+    pack $itk_component(image) -expand yes -fill both
+
+    #
+    # Add bindings for resize/move
+    #
+    bind $itk_component(image) <Configure> \
+        [list $_dispatcher event -idle !rebuild resize 1]
+
+    bind $itk_component(image) <ButtonPress-1> \
+        [itcl::code $this _move click %x %y]
+    bind $itk_component(image) <B1-Motion> \
+        [itcl::code $this _move drag %x %y]
+    bind $itk_component(image) <ButtonRelease-1> \
+        [itcl::code $this _move release %x %y]
+
+    #
+    # Add area at the bottom for notes.
+    #
+    set notes [$itk_interior.panes insert end -fraction 0.15]
+    $itk_interior.panes visibility 1 off
+    Rappture::Scroller $notes.scr -xscrollmode auto -yscrollmode auto
+    pack $notes.scr -expand yes -fill both
+    itk_component add notes {
+        Rappture::HTMLviewer $notes.scr.html
+    }
+    $notes.scr contents $notes.scr.html
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageResult::destructor {} {
+    foreach name [array names _image] {
+        image delete $_image($name)
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <image> ?<settings>?
+#
+# Clients use this to add an image to the plot.  The optional <settings>
+# are used to configure the image.  Allowed settings are -color,
+# -brightness, -width, -linestyle and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageResult::add {image {settings ""}} {
+    array set params {
+        -color auto
+        -brightness 0
+        -width 1
+        -raise 0
+        -linestyle solid
+        -description ""
+        -param ""
+    }
+    array set params $settings
+
+    if {$params(-raise)} {
+        set _topmost $image
+        $_dispatcher event -idle !rebuild
+    }
+
+    set pos [lsearch -exact $_dlist $image]
+    if {$pos < 0} {
+        lappend _dlist $image
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of images being displayed, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageResult::get {} {
+    # put the dataobj list in order according to -raise options
+    set dlist $_dlist
+
+    set i [lsearch $_dlist $_topmost]
+    if {$i >= 0} {
+        set dlist [lreplace $dlist $i $i]
+        set dlist [linsert $dlist 0 $_topmost]
+    }
+    return $dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<image1> <image2> ...?
+#
+# Clients use this to delete an image from the plot.  If no images
+# are specified, then all images are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageResult::delete {args} {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+
+    # delete all specified curves
+    set changed 0
+    foreach image $args {
+        set pos [lsearch -exact $_dlist $image]
+        if {$pos >= 0} {
+            set _dlist [lreplace $_dlist $pos $pos]
+            set changed 1
+
+            if {$image == $_topmost} {
+                set _topmost ""
+            }
+        }
+    }
+
+    # if anything changed, then rebuild the plot
+    if {$changed} {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<image1> <image2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <image> objects.  This
+# accounts for all images--even those not showing on the screen.
+# Because of this, the limits are appropriate for all images as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageResult::scale {args} {
+    set _max(w) 0
+    set _max(h) 0
+    foreach image $args {
+        set imh [$image tkimage]
+
+        set w [image width $imh]
+        if {$w > $_max(w)} { set _max(w) $w }
+
+        set h [image height $imh]
+        if {$h > $_max(h)} { set _max(h) $h }
+    }
+
+    # scale is unknown for now... scale later at next _rebuild
+    set _scale(max) "?"
+    set _scale(current) "?"
+
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageResult::download {option args} {
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            # no controls for this download yet
+            return ""
+        }
+        now {
+            set top [_top image]
+            if {$top == ""} {
+                return ""
+            }
+            # Get the image data (as base64) and decode it back to binary.
+            # This is better than writing to temporary files.  When we switch
+            # to the BLT picture image it won't be necessary to decode the
+            # image data.
+            set bytes [$top data -format "jpeg -quality 100"]
+            set bytes [Rappture::encoding::decode -as b64 $bytes]
+            return [list .jpg $bytes]
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _rebuild ?<eventData>...?
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageResult::_rebuild {args} {
+    array set event $args
+    if {[info exists event(resize)] && $event(resize)} {
+        # window changed size -- recompute max scale below
+        set _scale(max) "?"
+    }
+
+    if {$_scale(max) == "?"} {
+        if {![_zoom rescale]} {
+            return
+        }
+    }
+    if {$_scale(current) == "?" || $_scale(default)} {
+        set _scale(current) $_scale(max)
+        set _scale(x) 0.5
+        set _scale(y) 0.5
+    }
+
+    set w [winfo width $itk_component(image)]
+    set h [winfo height $itk_component(image)]
+    set bg [$itk_component(image) cget -background]
+
+    set imh [_top image]
+    if {$imh != ""} {
+        set iw [image width $imh]
+        set ih [image height $imh]
+        set wz [expr {round($w*$_scale(current))}]
+        set hz [expr {round($h*$_scale(current))}]
+
+        if {$wz < $iw || $hz < $ih} {
+            #
+            # Scale the image up by creating a "zoom" image which
+            # is smaller than the current image.  Sample a small
+            # part of the original image by copying into the "zoom"
+            # image, then scale that part up to the full "view" area.
+            #
+            if {$wz > $iw} {
+                set wz $iw
+            }
+            if {$hz > $ih} {
+                set hz $ih
+            }
+
+            set sx [expr {round($_scale(x)*$_max(w)-0.5*$wz)}]
+            if {$sx+$wz > $iw} {
+                set sx [expr {$iw-$wz}]
+            }
+            if {$sx < 0} {
+                set sx 0
+            }
+
+            set sy [expr {round($_scale(y)*$_max(h)-0.5*$hz)}]
+            if {$sy+$hz > $ih} {
+                set sy [expr {$ih-$hz}]
+            }
+            if {$sy < 0} {
+                set sy 0
+            }
+
+            if {$wz > 1 && $hz > 1} {
+                $_image(zoom) configure -width $wz -height $hz
+                set wf [expr {round(double($wz)/$_scale(current))}]
+                set hf [expr {round(double($hz)/$_scale(current))}]
+                $_image(final) configure -width $wf -height $hf
+                $_image(zoom) copy $imh -from $sx $sy
+                blt::winop resample $_image(zoom) $_image(final) sinc
+            }
+        } else {
+            #
+            # Scale the image down by creating a "zoom" image which
+            # is smaller than the current image.  Resize the original
+            # image to the smaller size, then copy into the current
+            # view.
+            #
+            set wz [expr {round(double($iw)/$_scale(current))}]
+            set hz [expr {round(double($ih)/$_scale(current))}]
+            if {$wz > 1 && $hz > 1} {
+                $_image(zoom) configure -width $wz -height $hz
+                $_image(zoom) put $bg -to 0 0 $wz $hz
+                blt::winop resample $imh $_image(zoom) sinc
+
+                $_image(final) configure -width $wz -height $hz
+                $_image(final) copy $_image(zoom) -from 0 0
+            }
+        }
+    }
+
+    set note [_top note]
+    if {[string length $note] > 0} {
+        if {[regexp {^html://} $note]} {
+            set note [string range $note 7 end]
+        } else {
+            regexp {&} $note {\007} note
+            regexp {<} $note {\&lt;} note
+            regexp {>} $note {\&gt;} note
+            regexp {\007} $note {\&amp;} note
+            regexp "\n\n" $note {<br/>} note
+            set note "<html><body>$note</body></html>"
+        }
+        set notes [$itk_interior.panes pane 1]
+        $itk_component(notes) load $note -in [file join [_top tooldir] docs]
+        $itk_interior.panes visibility 1 on
+    } else {
+        $itk_interior.panes visibility 1 off
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _top image|note|tooldir
+#
+# Used internally to get the topmost image currently being displayed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageResult::_top {option} {
+    set top $_topmost
+    if {"" == $top} {
+        set top [lindex $_dlist 0]
+    }
+    if {"" != $top} {
+        switch -- $option {
+            image   { return [$top tkimage] }
+            note    { return [$top hints note] }
+            tooldir { return [$top hints tooldir] }
+            default { error "bad option \"$option\": should be image, note, tooldir" }
+        }
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _zoom reset
+# USAGE: _zoom in
+# USAGE: _zoom out
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageResult::_zoom {option args} {
+    switch -- $option {
+        rescale {
+            # empty list? then reset w/h max size
+            if {[llength $_dlist] == 0} {
+                set _max(w) 0
+                set _max(h) 0
+                set _scale(max) 1.0
+            } else {
+                set w [winfo width $itk_component(image)]
+                set h [winfo height $itk_component(image)]
+                if {$w <= 1 && $h <= 1} {
+                    return 0
+                }
+
+                if {$w < $h} {
+                    if {$_max(w)/double($_max(h)) > $w/double($h)} {
+                        set _scale(max) [expr {$_max(w)/double($w)}]
+                    } else {
+                        set _scale(max) [expr {$_max(h)/double($h)}]
+                    }
+                } else {
+                    if {$_max(w)/double($_max(h)) < $w/double($h)} {
+                        set _scale(max) [expr {$_max(h)/double($h)}]
+                    } else {
+                        set _scale(max) [expr {$_max(w)/double($w)}]
+                    }
+                }
+            }
+            return 1
+        }
+        reset {
+            set _scale(current) $_scale(max)
+            set _scale(default) 1
+            set _scale(x) 0.5
+            set _scale(y) 0.5
+            Rappture::Logger::log image zoom -reset
+        }
+        in {
+            set _scale(current) [expr {$_scale(current)*0.8}]
+            set _scale(default) 0
+            Rappture::Logger::log image zoom -in
+        }
+        out {
+            set w [winfo width $itk_component(image)]
+            set h [winfo height $itk_component(image)]
+            if {$_max(w)/$_scale(current) > $w
+                  || $_max(h)/$_scale(current) > $h} {
+                # must be room left to zoom -- zoom out, but not beyond max
+                set _scale(current) [expr {$_scale(current)*1.25}]
+                if {$_scale(current) > $_scale(max)} {
+                    set _scale(current) $_scale(max)
+                }
+            } else {
+                # no room left to zoom -- zoom out max
+                set _scale(current) $_scale(max)
+            }
+
+            # fix the center of view, in case it is now out of bounds
+            if {$_scale(current) > 1.0} {
+                set _scale(x) 0.5
+                set _scale(y) 0.5
+            }
+
+            # keep this zoom setting now that we've zoomed out
+            set _scale(default) 0
+
+            Rappture::Logger::log image zoom -out
+        }
+    }
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _move click <x> <y>
+# USAGE: _move drag <x> <y>
+# USAGE: _move release <x> <y>
+#
+# Called automatically when the user clicks and drags on the image
+# to pan the view.  Adjusts the (x,y) offset for the scaling info
+# and redraws the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ImageResult::_move {option args} {
+    switch -- $option {
+        click {
+            foreach {x y} $args break
+            $itk_component(image) configure -cursor fleur
+            set _scale(x0) $_scale(x)
+            set _scale(y0) $_scale(y)
+            set _scale(xclick) $x
+            set _scale(yclick) $y
+        }
+        drag {
+            foreach {x y} $args break
+            if {[info exists _scale(xclick)] && [info exists _scale(yclick)]} {
+                set w [winfo width $itk_component(image)]
+                set h [winfo height $itk_component(image)]
+                set wx [expr {round($_max(w)/$_scale(current))}]
+                set hy [expr {round($_max(h)/$_scale(current))}]
+                if {$wx > $w || $hy > $h} {
+                    set x [expr {$_scale(x0)-($x-$_scale(xclick))/double($wx)}]
+                    set y [expr {$_scale(y0)-($y-$_scale(yclick))/double($hy)}]
+                    if {$x*$_max(w) < 0.5*$w*$_scale(current)} {
+                        set x [expr {0.5*$w*$_scale(current)/$_max(w)}]
+                    }
+                    if {$x*$_max(w) > $_max(w) - 0.5*$w*$_scale(current)} {
+                        set x [expr {1 - 0.5*$w*$_scale(current)/$_max(w)}]
+                    }
+                    if {$y*$_max(h) < 0.5*$h*$_scale(current)} {
+                        set y [expr {0.5*$h*$_scale(current)/$_max(h)}]
+                    }
+                    if {$y*$_max(h) > $_max(h) - 0.5*$h*$_scale(current)} {
+                        set y [expr {1 - 0.5*$h*$_scale(current)/$_max(h)}]
+                    }
+                    set _scale(x) $x
+                    set _scale(y) $y
+                } else {
+                    set _scale(x) 0.5
+                    set _scale(y) 0.5
+                }
+                $_dispatcher event -idle !rebuild
+            }
+        }
+        release {
+            eval _move drag $args
+            $itk_component(image) configure -cursor ""
+            catch {unset _scale(xclick)}
+            catch {unset _scale(yclick)}
+
+            Rappture::Logger::log image moveto $_scale(x),$_scale(y)
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/images/arrow.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/arrow.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/arrow.xbm	(revision 6168)
@@ -0,0 +1,4 @@
+#define arrow_width 8
+#define arrow_height 4
+static unsigned char arrow_bits[] = {
+   0xfe, 0x7c, 0x38, 0x10};
Index: /tags/1.6.0/gui/scripts/images/atoms.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/atoms.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/atoms.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define atoms_width 12
+#define atoms_height 12
+static unsigned char atoms_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x02, 0x4c, 0x02, 0xc8, 0x03,
+   0x48, 0x02, 0x48, 0x02, 0x5c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
Index: /tags/1.6.0/gui/scripts/images/dismiss.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/dismiss.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/dismiss.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define dismiss_width 10
+#define dismiss_height 8
+static unsigned char dismiss_bits[] = {
+   0x87, 0x03, 0xce, 0x01, 0xfc, 0x00, 0x78, 0x00, 0x78, 0x00, 0xfc, 0x00,
+   0xce, 0x01, 0x87, 0x03};
Index: /tags/1.6.0/gui/scripts/images/empty.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/empty.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/empty.xbm	(revision 6168)
@@ -0,0 +1,4 @@
+#define empty_width 1
+#define empty_height 1
+static unsigned char empty_bits[] = {
+   0x00};
Index: /tags/1.6.0/gui/scripts/images/flipxy.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/flipxy.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/flipxy.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define flipxy_width 12
+#define flipxy_height 12
+static unsigned char flipxy_bits[] = {
+   0x00, 0x00, 0x70, 0x04, 0x30, 0x02, 0x50, 0x01, 0x80, 0x00, 0x44, 0x01,
+   0x28, 0x02, 0x10, 0x00, 0xa8, 0x00, 0xc4, 0x00, 0xe2, 0x00, 0x00, 0x00};
Index: /tags/1.6.0/gui/scripts/images/pause.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/pause.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/pause.xbm	(revision 6168)
@@ -0,0 +1,6 @@
+#define pause_width 16
+#define pause_height 16
+static unsigned char pause_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e,
+   0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e,
+   0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
Index: /tags/1.6.0/gui/scripts/images/play.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/play.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/play.xbm	(revision 6168)
@@ -0,0 +1,6 @@
+#define play_width 16
+#define play_height 16
+static unsigned char play_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x78, 0x00, 0xf8, 0x01,
+   0xf8, 0x07, 0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x07, 0xf8, 0x01, 0x78, 0x00,
+   0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
Index: /tags/1.6.0/gui/scripts/images/rarrow.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/rarrow.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/rarrow.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define rarrow_width 9
+#define rarrow_height 9
+static unsigned char rarrow_bits[] = {
+   0x04, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x7c, 0x00, 0x3c, 0x00,
+   0x1c, 0x00, 0x0c, 0x00, 0x04, 0x00};
Index: /tags/1.6.0/gui/scripts/images/rarrow2.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/rarrow2.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/rarrow2.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define rarrow2_width 9
+#define rarrow2_height 9
+static unsigned char rarrow2_bits[] = {
+   0x04, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x24, 0x00, 0x44, 0x00, 0x24, 0x00,
+   0x14, 0x00, 0x0c, 0x00, 0x04, 0x00};
Index: /tags/1.6.0/gui/scripts/images/rdiag.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/rdiag.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/rdiag.xbm	(revision 6168)
@@ -0,0 +1,4 @@
+#define rdiag_width 8
+#define rdiag_height 8
+static unsigned char rdiag_bits[] = {
+   0x66, 0x33, 0x99, 0xcc, 0x66, 0x33, 0x99, 0xcc};
Index: /tags/1.6.0/gui/scripts/images/record.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/record.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/record.xbm	(revision 6168)
@@ -0,0 +1,6 @@
+#define record_width 16
+#define record_height 16
+static unsigned char record_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xf0, 0x0f, 0xf8, 0x1f, 0xfc, 0x3f,
+   0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xf8, 0x1f,
+   0xf0, 0x0f, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00};
Index: /tags/1.6.0/gui/scripts/images/reset.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/reset.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/reset.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define reset_width 12
+#define reset_height 12
+static unsigned char reset_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02,
+   0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00};
Index: /tags/1.6.0/gui/scripts/images/rocker.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/rocker.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/rocker.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define rocker_width 12
+#define rocker_height 12
+static unsigned char rocker_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x0a, 0x05, 0x06, 0x06, 0x0e, 0x07,
+   0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
Index: /tags/1.6.0/gui/scripts/images/stop.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/stop.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/stop.xbm	(revision 6168)
@@ -0,0 +1,6 @@
+#define stop_width 16
+#define stop_height 16
+static unsigned char stop_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f,
+   0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f,
+   0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
Index: /tags/1.6.0/gui/scripts/images/up.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/up.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/up.xbm	(revision 6168)
@@ -0,0 +1,4 @@
+#define up_width 8
+#define up_height 4
+static unsigned char up_bits[] = {
+   0x10, 0x38, 0x7c, 0xfe};
Index: /tags/1.6.0/gui/scripts/images/x.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/x.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/x.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define x_width 12
+#define x_height 12
+static unsigned char x_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x9c, 0x03, 0x98, 0x01, 0xf0, 0x00, 0x60, 0x00,
+   0x60, 0x00, 0xf0, 0x00, 0x98, 0x01, 0x9c, 0x03, 0x00, 0x00, 0x00, 0x00};
Index: /tags/1.6.0/gui/scripts/images/y.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/y.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/y.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define y_width 12
+#define y_height 12
+static unsigned char y_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x0e, 0x07, 0x0c, 0x03, 0x98, 0x01, 0xf0, 0x00,
+   0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00};
Index: /tags/1.6.0/gui/scripts/images/z.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/z.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/z.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define z_width 12
+#define z_height 12
+static unsigned char z_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x84, 0x03, 0xc0, 0x01, 0xe0, 0x00,
+   0x70, 0x00, 0x38, 0x00, 0x1c, 0x02, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00};
Index: /tags/1.6.0/gui/scripts/images/zoomin.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/zoomin.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/zoomin.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define zoomin_width 12
+#define zoomin_height 12
+static unsigned char zoomin_bits[] = {
+   0x7c, 0x00, 0x82, 0x00, 0x11, 0x01, 0x11, 0x01, 0x7d, 0x01, 0x11, 0x01,
+   0x11, 0x01, 0x82, 0x03, 0xfc, 0x07, 0x80, 0x0f, 0x00, 0x0f, 0x00, 0x06};
Index: /tags/1.6.0/gui/scripts/images/zoomout.xbm
===================================================================
--- /tags/1.6.0/gui/scripts/images/zoomout.xbm	(revision 6168)
+++ /tags/1.6.0/gui/scripts/images/zoomout.xbm	(revision 6168)
@@ -0,0 +1,5 @@
+#define zoomout_width 12
+#define zoomout_height 12
+static unsigned char zoomout_bits[] = {
+   0x7c, 0x00, 0x82, 0x00, 0x01, 0x01, 0x01, 0x01, 0x7d, 0x01, 0x01, 0x01,
+   0x01, 0x01, 0x82, 0x03, 0xfc, 0x07, 0x80, 0x0f, 0x00, 0x0f, 0x00, 0x06};
Index: /tags/1.6.0/gui/scripts/integerentry.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/integerentry.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/integerentry.tcl	(revision 6168)
@@ -0,0 +1,197 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: IntegerEntry - widget for entering integer values
+#
+#  This widget represents an <integer> entry on a control panel.
+#  It is used to enter integral values with no units.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itcl::class Rappture::IntegerEntry {
+    inherit itk::Widget
+
+    itk_option define -state state State "normal"
+
+    constructor {owner path args} { # defined below }
+
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+
+    protected method _newValue {}
+
+    private variable _owner ""    ;# thing managing this control
+    private variable _path ""     ;# path in XML to this number
+}
+
+itk::usual IntegerEntry {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::IntegerEntry::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+
+    #
+    # Create the widget and configure it properly based on other
+    # hints in the XML.
+    #
+    itk_component add spinner {
+        Rappture::Gauge $itk_interior.spinner -type integer -log $path
+    }
+    pack $itk_component(spinner) -expand yes -fill both
+    bind $itk_component(spinner) <<Value>> [itcl::code $this _newValue]
+
+    # if there are min/max values, plug them in.
+    set min [string trim [$_owner xml get $path.min]]
+    if {"" != $min} {
+        $itk_component(spinner) configure -minvalue $min
+    }
+
+    set max [string trim [$_owner xml get $path.max]]
+    if {"" != $max} {
+        $itk_component(spinner) configure -maxvalue $max
+    }
+
+    # if there is a color, use it for the min/max spectrum
+    set color [string trim [$_owner xml get $path.about.color]]
+    if {$color != "" && $min != "" && $max != ""} {
+        # For compatibility. If only one color use white for min
+        if {[llength $color] == 1} {
+            set color [list $min white $max $color]
+        }
+        $itk_component(spinner) configure \
+            -spectrum [Rappture::Spectrum ::\#auto $color]
+    }
+
+    # if the control has an icon, plug it in
+    set str [string trim [$_owner xml get $path.about.icon]]
+    if {$str != ""} {
+        $itk_component(spinner) configure -image \
+            [image create photo -data $str]
+    }
+
+    eval itk_initialize $args
+
+    #
+    # Assign the default value to this widget, if there is one.
+    #
+    set str [string trim [$_owner xml get $path.default]]
+    if {"" != $str != ""} {
+        $itk_component(spinner) value $str
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::IntegerEntry::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+
+    if {[llength $args] == 1} {
+        if {$onlycheck} {
+            # someday we may add validation...
+            return
+        }
+        set newval [lindex $args 0]
+        $itk_component(spinner) value $newval
+        return $newval
+
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    #
+    # Query the value and return.
+    #
+    return [$itk_component(spinner) value]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::IntegerEntry::label {} {
+    set label [string trim [$_owner xml get $_path.about.label]]
+    if {"" == $label} {
+        set label "Integer"
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::IntegerEntry::tooltip {} {
+    set str [string trim [$_owner xml get $_path.about.description]]
+    set min [string trim [$_owner xml get $_path.min]]
+    set max [string trim [$_owner xml get $_path.max]]
+
+    if {$min != "" || $max != ""} {
+        append str "\n\nEnter an integer"
+
+        if {$min != "" && $max != ""} {
+            append str " between $min and $max"
+        } elseif {$min != ""} {
+            append str " greater than $min"
+        } elseif {$max != ""} {
+            append str " less than $max"
+        }
+    }
+    return [string trim $str]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _newValue
+#
+# Invoked automatically whenever the value in the gauge changes.
+# Sends a <<Value>> event to notify clients of the change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::IntegerEntry::_newValue {} {
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::IntegerEntry::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    $itk_component(spinner) configure -state $itk_option(-state)
+}
Index: /tags/1.6.0/gui/scripts/isomarker.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/isomarker.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/isomarker.tcl	(revision 6168)
@@ -0,0 +1,190 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: nanovisviewer::isomarker - Marker for 3D volume rendering
+#
+#  This widget performs volume rendering on 3D scalar/vector datasets.
+#  It connects to the Nanovis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+package require Img
+
+itcl::class Rappture::IsoMarker {
+    constructor {c obj tf args} {}
+    destructor {}
+    public method transferfunc {}
+    public method activate { bool }
+    public method visible { bool }
+    public method screenpos {}
+    public method absval { {x "-get"} }
+    public method relval { {x "-get"} }
+
+    private method EnterTick {}
+    private method LeaveTick {}
+    private method StartDrag { x y }
+    private method ContinueDrag { x y }
+    private method StopDrag { x y }
+
+    private variable _value     0.0;    # Absolute value of marker.
+    private variable _label     ""
+    private variable _tick      ""
+    private variable _canvas    ""
+    private variable _nvobj     "";     # Parent nanovis object.
+    private variable _tf        "";     # Transfer function that this marker is
+                                        # associated with.
+    private variable _activeMotion   0
+    private variable _activePress    0
+
+    private common   _normalIcon [Rappture::icon nvlegendmark]
+    private common   _activeIcon [Rappture::icon nvlegendmark2]
+}
+
+itcl::body Rappture::IsoMarker::constructor {c obj tf args} {
+    set _canvas $c
+    set _nvobj $obj
+    set _tf $tf
+    set w [winfo width $_canvas]
+    set h [winfo height $_canvas]
+    set _tick [$c create image 0 $h \
+                   -image $_normalIcon -anchor s \
+                   -tags "tick $this $obj" -state hidden]
+    set _label [$c create text 0 $h \
+                    -anchor n -fill white -font "Helvetica 8" \
+                    -tags "labels text $this $obj" -state hidden]
+    $c bind $_tick <Enter>           [itcl::code $this EnterTick]
+    $c bind $_tick <Leave>           [itcl::code $this LeaveTick]
+    $c bind $_tick <ButtonPress-1>   [itcl::code $this StartDrag %x %y]
+    $c bind $_tick <B1-Motion>       [itcl::code $this ContinueDrag %x %y]
+    $c bind $_tick <ButtonRelease-1> [itcl::code $this StopDrag %x %y]
+}
+
+itcl::body Rappture::IsoMarker::destructor {} {
+    if { [winfo exists $_canvas] } {
+        $_canvas delete $this
+    }
+}
+
+itcl::body Rappture::IsoMarker::transferfunc {} {
+    return $_tf
+}
+
+itcl::body Rappture::IsoMarker::activate { bool } {
+    if  { $bool || $_activePress || $_activeMotion } {
+        $_canvas itemconfigure $_label -state normal
+        $_canvas itemconfigure $_tick -image $_activeIcon
+        $_canvas itemconfigure title -state hidden
+    } else {
+        $_canvas itemconfigure $_label -state hidden
+        $_canvas itemconfigure $_tick -image $_normalIcon
+        $_canvas itemconfigure title -state normal
+    }
+}
+
+itcl::body Rappture::IsoMarker::visible { bool } {
+    if { $bool } {
+        absval $_value
+        $_canvas itemconfigure $_tick -state normal
+        $_canvas raise $_tick
+    } else {
+        $_canvas itemconfigure $_tick -state hidden
+    }
+}
+
+itcl::body Rappture::IsoMarker::screenpos { } {
+    set x [relval]
+    if { $x < 0.0 } {
+        set x 0.0
+    } elseif { $x > 1.0 } {
+        set x 1.0
+    }
+    set low 10
+    set w [winfo width $_canvas]
+    set high [expr {$w  - 10}]
+    set x [expr {round($x*($high - $low) + $low)}]
+    return $x
+}
+
+itcl::body Rappture::IsoMarker::absval { {x "-get"} } {
+    if { $x != "-get" } {
+        set _value $x
+        set y 31
+        $_canvas itemconfigure $_label -text [format %g $_value]
+        set x [screenpos]
+        $_canvas coords $_tick $x [expr {$y+3}]
+        $_canvas coords $_label $x [expr {$y+5}]
+    }
+    return $_value
+}
+
+itcl::body Rappture::IsoMarker::relval { {x "-get"} } {
+    array set limits [$_nvobj limits $_tf]
+    set min $limits(vmin)
+    set max $limits(vmax)
+    if { $x == "-get" } {
+        if { $max == $min } {
+            if { $max == 0.0 } {
+                set min 0.0
+                set max 1.0
+            } else {
+                set max [expr $min + 1.0]
+            }
+        }
+        return [expr {($_value - $min) / ($max - $min)}]
+    }
+    if { $max == $min } {
+        set min 0.0
+        set max 1.0
+    }
+    if { [catch {expr $max - $min} r] != 0 } {
+        return 0.0
+    }
+    absval [expr {($x * $r) + $min}]
+}
+
+itcl::body Rappture::IsoMarker::EnterTick {} {
+    set _activeMotion 1
+    activate yes
+    $_canvas raise $_tick
+}
+
+itcl::body Rappture::IsoMarker::LeaveTick {} {
+    set _activeMotion 0
+    activate no
+}
+
+itcl::body Rappture::IsoMarker::StartDrag { x y } {
+    $_canvas raise $_tick
+    set _activePress 1
+    activate yes
+    $_canvas itemconfigure limits -state hidden
+    $_canvas itemconfigure title -state hidden
+}
+
+itcl::body Rappture::IsoMarker::StopDrag { x y } {
+    if { ![$_nvobj removeDuplicateMarker $this $x]} {
+        ContinueDrag $x $y
+    }
+    set _activePress 0
+    activate no
+    $_canvas itemconfigure limits -state normal
+    $_canvas itemconfigure title -state normal
+}
+
+itcl::body Rappture::IsoMarker::ContinueDrag { x y } {
+    set w [winfo width $_canvas]
+    relval [expr {double($x-10)/($w-20)}]
+    $_nvobj overMarker $this $x
+    $_nvobj updateTransferFunctions
+    $_canvas raise $_tick
+    set _activePress 1
+    activate yes
+    $_canvas itemconfigure limits -state hidden
+    $_canvas itemconfigure title -state hidden
+}
Index: /tags/1.6.0/gui/scripts/loader.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/loader.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/loader.tcl	(revision 6168)
@@ -0,0 +1,510 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: loader - widget for loading examples and old runs
+#
+#  This widget is a glorified combobox that is used to load various
+#  example files into the application.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Loader.textForeground black widgetDefault
+option add *Loader.textBackground white widgetDefault
+
+itcl::class Rappture::Loader {
+    inherit itk::Widget
+
+    itk_option define -tool tool Tool ""
+    itk_option define -state state State "normal"
+
+    constructor {owner path args} { # defined below }
+    destructor { # defined below }
+
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+
+    protected method _newValue {}
+    protected method _uploadValue {path args}
+    protected method _downloadValues {}
+    protected method _tooltip {}
+    protected method _log {}
+
+    private method SetDefaultValue { value }
+
+    private variable _owner ""    ;# thing managing this control
+    private variable _path ""     ;# path in XML to this loader
+    private variable _lastlabel "";# label of last example loaded
+
+    private variable _uppath ""   ;# list: path label desc ...
+    private variable _dnpaths ""  ;# list of download element paths
+    private common _dnpath2state  ;# maps download path => yes/no state
+    private variable _copyfrom "" ;# copy xml objects from here in example lib
+    private variable _copyto ""   ;# copy xml objects here in example lib
+    private variable _label2file  ;# maps combobox labels to filenames
+}
+
+itk::usual Loader {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textforeground -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Loader::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+
+    itk_component add combo {
+        Rappture::Combobox $itk_interior.combo -editable no \
+            -interactcommand [itcl::code $this _log]
+    } {
+        usual
+        keep -width
+    }
+    pack $itk_component(combo) -expand yes -fill both
+    bind $itk_component(combo) <<Value>> [itcl::code $this _newValue]
+
+    eval itk_initialize $args
+
+    # example files are stored here
+    if {$itk_option(-tool) != ""} {
+        set fdir [$itk_option(-tool) installdir]
+    } else {
+        set fdir "."
+    }
+    set defval [string trim [$_owner xml get $path.default]]
+
+    #
+    # If this loader has a <new> section, then create that
+    # entry first.
+    #
+    set newfile ""
+    foreach comp [$_owner xml children -type new $path] {
+        set name  [string trim [$_owner xml get $path.$comp]]
+        set fname [file join $fdir examples $name]
+
+        if {[file exists $fname]} {
+            set newfile $fname
+
+            if {[catch {set obj [Rappture::library $fname]} result]} {
+                puts stderr "WARNING: can't load example file \"$fname\""
+                puts stderr "  $result"
+            } else {
+                set label "New"
+                $itk_component(combo) choices insert end $obj $label
+
+                # if this is new, add it to the label->file hash
+                if {![info exists entries($label)]} {
+                    set entries($label) $obj
+                    set _label2file($label) [file tail $fname]
+                }
+
+                # translate default file name => default label
+                if {[string equal $defval [file tail $fname]]} {
+                    $_owner xml put $path.default "New"
+                }
+            }
+            break
+        } else {
+            puts stderr "WARNING: missing example file \"$fname\""
+        }
+    }
+
+    #
+    # If this loader has an <upload> section, then create that
+    # entry next.
+    #
+    foreach comp [$_owner xml children -type upload $path] {
+        foreach tcomp [$_owner xml children -type to $path.$comp] {
+            set topath [string trim [$_owner xml get $path.$comp.$tcomp]]
+            if { [$_owner xml element -as id $topath] == "" } {
+                puts stderr \
+                    "unknown <upload> path \"$topath\": please fix tool.xml"
+                continue
+            }
+            set label [string trim [$_owner xml get $topath.about.label]]
+            set desc  [string trim [$_owner xml get $topath.about.description]]
+            lappend _uppath $topath $label $desc
+        }
+        break
+    }
+    if {[llength $_uppath] > 0} {
+        $itk_component(combo) choices insert end \
+            @upload [Rappture::filexfer::label upload]
+    }
+
+    #
+    # If this loader has a <download> section, then create that
+    # entry next.  Build a popup for choices if there is more than
+    # one download element.
+    #
+    Rappture::Balloon $itk_component(hull).download \
+        -title "Choose what to [string tolower [Rappture::filexfer::label downloadWord]]:"
+    set inner [$itk_component(hull).download component inner]
+
+    set i 0
+    foreach comp [$_owner xml children -type download $path] {
+        foreach dcomp [$_owner xml children -type from $path.$comp] {
+            set frompath [string trim [$_owner xml get $path.$comp.$dcomp]]
+            if {"" != $frompath} {
+                lappend _dnpaths $frompath
+                set _dnpath2state($this-$frompath) [expr {$i == 0}]
+
+                set label [string trim [$_owner xml get $frompath.about.label]]
+                checkbutton $inner.cb$i -text $label \
+                    -variable ::Rappture::Loader::_dnpath2state($this-$frompath)
+                pack $inner.cb$i -anchor w
+                incr i
+            }
+        }
+    }
+    button $inner.go -text [Rappture::filexfer::label download] \
+        -command [itcl::code $this _downloadValues]
+    pack $inner.go -side bottom -padx 50 -pady {4 2}
+
+    if {[llength $_dnpaths] > 0} {
+        $itk_component(combo) choices insert end \
+            @download [Rappture::filexfer::label download]
+    }
+
+    if {[$itk_component(combo) choices size] > 0} {
+        $itk_component(combo) choices insert end "---" "---"
+    }
+
+    #
+    # Scan through and extract example objects, and load them into
+    # the combobox.
+    #
+    set flist ""
+    foreach comp [$_owner xml children -type example $path] {
+        lappend flist [string trim [$_owner xml get $path.$comp]]
+    }
+
+    # if there are no examples, then look for *.xml
+    if {[llength $flist] == 0} {
+        set flist *.xml
+    }
+
+    catch {unset entries}
+    set _counter 0
+    foreach ftail $flist {
+        set fpath [file join $fdir examples $ftail]
+
+        foreach fname [glob -nocomplain $fpath] {
+            if {[string equal $fname $newfile]} {
+                continue
+            }
+            if {[file exists $fname]} {
+                if {[catch {set obj [Rappture::library $fname]} result]} {
+                    puts stderr "WARNING: can't load example file \"$fname\""
+                    puts stderr "  $result"
+                } else {
+                    set label [$obj get about.label]
+                    if {$label == ""} {
+                        set label "Example #[incr _counter]"
+                    }
+
+                    # if this is new, add it to the label->file hash
+                    if {![info exists entries($label)]} {
+                        set entries($label) $obj
+                        set _label2file($label) [file tail $fname]
+                    }
+
+                    # translate default file name => default label
+                    if {[string equal $defval [file tail $fname]]} {
+                        $_owner xml put $path.default $label
+                    }
+                }
+            } else {
+                puts stderr "WARNING: missing example file \"$fname\""
+            }
+        }
+    }
+    foreach label [lsort -dictionary [array names entries]] {
+        $itk_component(combo) choices insert end $entries($label) $label
+    }
+
+    set _copyfrom [string trim [$_owner xml get $path.copy.from]]
+    set _copyto   [string trim [$_owner xml get $path.copy.to]]
+
+    #
+    # Assign the default value to this widget, if there is one.
+    #
+    set str [string trim [$_owner xml get $path.default]]
+    if { $str != "" } {
+        bind $itk_component(hull) <Map> [itcl::code $this SetDefaultValue $str]
+    }
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Loader::destructor {} {
+    # be sure to clean up entries for this widget's download paths
+    foreach path $_dnpaths {
+        catch {unset _dnpath2state($this-$path)}
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Loader::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+
+    if {[llength $args] == 1} {
+        if {$onlycheck} {
+            # someday we may add validation...
+            return
+        }
+        set newval [lindex $args 0]
+        $itk_component(combo) value $newval
+        return $newval
+
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    #
+    # Query the value and return.
+    #
+    return [$itk_component(combo) value]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Loader::label {} {
+    set label [string trim [$_owner xml get $_path.about.label]]
+    if {"" == $label} {
+        set label "Example"
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Loader::tooltip {} {
+    # query tooltip on-demand based on current choice
+    return "@[itcl::code $this _tooltip]"
+}
+
+#
+# SetDefaultValue --
+#
+#       Sets the designated default value for the loader.  This must be done
+#       after the entire application is assembled, otherwise the default
+#       values set up by the loader will be overwritten by the various widgets
+#       themselves when they try to set their default values.
+#
+#       This is called from a  <Map> event to the loader (combobox).  This
+#       will get trigger the first time the loader is displayed.  The binding
+#       is then removed.
+#
+itcl::body Rappture::Loader::SetDefaultValue { value } {
+    after idle [itcl::code $this value $value]
+    # We're done. Remove the binding.
+    bind $itk_component(hull) <Map> {}
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _newValue
+#
+# Invoked automatically whenever the value in the combobox changes.
+# Tries to load the selected example into the tool's data structure.
+# Sends a <<Value>> event to notify clients of the change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Loader::_newValue {} {
+    set newval [$itk_component(combo) value]
+    set obj [$itk_component(combo) translate $newval]
+    if {$obj == "@upload"} {
+        set tool [Rappture::Tool::resources -appname]
+        Rappture::filexfer::upload \
+            $tool $_uppath [itcl::code $this _uploadValue]
+
+        # put the combobox back to its last value
+        $itk_component(combo) component entry configure -state normal
+        $itk_component(combo) component entry delete 0 end
+        $itk_component(combo) component entry insert end $_lastlabel
+        $itk_component(combo) component entry configure -state disabled
+
+    } elseif {$obj == "@download"} {
+        if {[llength $_dnpaths] == 1} {
+            _downloadValues
+        } else {
+            $itk_component(hull).download activate $itk_component(combo) below
+        }
+
+        # put the combobox back to its last value
+        $itk_component(combo) component entry configure -state normal
+        $itk_component(combo) component entry delete 0 end
+        $itk_component(combo) component entry insert end $_lastlabel
+        $itk_component(combo) component entry configure -state disabled
+
+    } elseif {$obj == "---"} {
+        # put the combobox back to its last value
+        $itk_component(combo) component entry configure -state normal
+        $itk_component(combo) component entry delete 0 end
+        $itk_component(combo) component entry insert end $_lastlabel
+        $itk_component(combo) component entry configure -state disabled
+    } elseif {$obj != "" && $itk_option(-tool) != ""} {
+        if {("" != $_copyfrom) && ("" != $_copyto)} {
+            $obj copy $_copyto from $_copyfrom
+        }
+        $_owner xml put $_path.file $_label2file($newval)
+        $itk_option(-tool) load $obj
+        set _lastlabel $newval
+    }
+
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _tooltip
+#
+# Returns the tooltip for this widget, given the current choice in
+# the selector.  This is normally called by the Rappture::Tooltip
+# facility whenever it is about to pop up a tooltip for this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Loader::_tooltip {} {
+    set str [string trim [$_owner xml get $_path.about.description]]
+
+    # get the description for the current choice, if there is one
+    set newval [$itk_component(combo) value]
+    set obj [$itk_component(combo) translate $newval]
+    if {$obj != ""} {
+        if {$obj == "@upload"} {
+            append str "\n\nUse this option to upload data from your desktop."
+        } else {
+            set label [$obj get about.label]
+            if {[string length $label] > 0} {
+                append str "\n\n$label"
+            }
+
+            set desc [$obj get about.description]
+            if {[string length $desc] > 0} {
+                if {[string length $label] > 0} {
+                    append str ":\n"
+                } else {
+                    append str "\n\n"
+                }
+                append str $desc
+            }
+        }
+    }
+    return [string trim $str]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _log
+#
+# Used internally to send info to the logging mechanism.  Calls the
+# Rappture::Logger mechanism to log the change to this input.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Loader::_log {} {
+    Rappture::Logger::log input $_path [$itk_component(combo) value]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _uploadValue ?<key> <value> <key> <value> ...?
+#
+# Invoked automatically whenever the user has uploaded data from
+# the "Upload..." option.  Takes the data value (passed as an
+# argument) and loads into the destination widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Loader::_uploadValue {args} {
+    array set data $args
+
+    if {[info exists data(error)]} {
+        Rappture::Tooltip::cue $itk_component(combo) $data(error)
+    }
+
+    if {[info exists data(path)] && [info exists data(data)]} {
+        Rappture::Tooltip::cue hide  ;# take down note about the popup window
+        $itk_option(-tool) valuefor $data(path) $data(data)
+
+        $itk_component(combo) component entry configure -state normal
+        $itk_component(combo) component entry delete 0 end
+        $itk_component(combo) component entry insert end "Uploaded data"
+        $itk_component(combo) component entry configure -state disabled
+        set _lastlabel "Uploaded data"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _downloadValues
+#
+# Used internally to download all values checked by the popup that
+# controls downloading.  Sends the values for the various controls
+# out to the user by popping up separate browser windows.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Loader::_downloadValues {} {
+    # take down the popup (in case it was posted)
+    $itk_component(hull).download deactivate
+
+    set mesg ""
+    foreach path $_dnpaths {
+        if {$_dnpath2state($this-$path)} {
+            set info [$itk_option(-tool) valuefor $path]
+            set mesg [Rappture::filexfer::download $info input.txt]
+            if {"" != $mesg} { break }
+        }
+    }
+
+    if {"" != $mesg} {
+        Rappture::Tooltip::cue $itk_component(combo) $mesg
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -tool
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Loader::tool {
+    if {[catch {$itk_option(-tool) isa Rappture::Tool} valid] || !$valid} {
+        error "object \"$itk_option(-tool)\" is not a Rappture Tool"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Loader::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    $itk_component(combo) configure -state $itk_option(-state)
+}
Index: /tags/1.6.0/gui/scripts/logger.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/logger.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/logger.tcl	(revision 6168)
@@ -0,0 +1,214 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: logger - log user activities within the Rappture program
+#
+#  This library is used throughout a Rappture application to log
+#  things that the user does.  This is useful for debugging, and also
+#  for studying the effectiveness of simulation in education.  The
+#  information is logged only if the RAPPTURE_LOG environment variable
+#  is set.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+namespace eval Rappture::Logger {
+    # by default, the logger is off
+    variable enabled 0
+
+    # log file name
+    variable fileName ""
+
+    # all activitiy is logged to this file channel
+    variable fid ""
+}
+
+#
+# HACK ALERT!  Many of the BLT graph-related widgets rely on BLT
+#   bindings for zoom.  If we want to log these, we need to catch
+#   them at the push/pop zoom level.  We do this once, here, by
+#   wrapping the usual BLT procs in logging procs.
+#
+package require BLT
+auto_load Blt_ZoomStack
+
+rename ::blt::PushZoom ::blt::RealPushZoom
+proc ::blt::PushZoom {graph} {
+    # do the BLT call first
+    ::blt::RealPushZoom $graph
+
+    # now, log the results
+    foreach {x0 x1} [$graph axis limits x] break
+    foreach {y0 y1} [$graph axis limits y] break
+    ::Rappture::Logger::log zoomrect -in $x0,$y0 $x1,$y1
+}
+
+rename ::blt::PopZoom ::blt::RealPopZoom
+proc ::blt::PopZoom {graph} {
+    # do the BLT call first
+    ::blt::RealPopZoom $graph
+
+    # now, log the results
+    foreach {x0 x1} [$graph axis limits x] break
+    foreach {y0 y1} [$graph axis limits y] break
+    ::Rappture::Logger::log zoomrect -out $x0,$y0 $x1,$y1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: init ?on|off|auto?
+#
+# Called within the main program to initialize the logger package.
+# Can be given the value "on" or "off" to turn logging on/off, or
+# "auto" to rely on the RAPPTURE_LOG environment variable to control
+# logging.  The default is "auto".
+# ----------------------------------------------------------------------
+proc Rappture::Logger::init {{state "auto"}} {
+    global env tcl_platform
+    variable enabled
+    variable fileName
+    variable fid
+
+    if {$state eq "auto"} {
+        set state "off"
+        if {[info exists env(RAPPTURE_LOG)] && $env(RAPPTURE_LOG) ne ""} {
+            if {[file isdirectory $env(RAPPTURE_LOG)]} {
+                set state "on"
+            } else {
+                error "can't log: RAPPTURE_LOG directory does not exist"
+            }
+        }
+    }
+    if {![string is boolean -strict $state]} {
+        error "bad value \"$state\": should be on, off, or auto"
+    }
+
+    if {$state} {
+        # turn logging on
+        package require base32
+        package require md5
+
+        # make a date subdir within the log dir
+        if {![info exists env(RAPPTURE_LOG)]} {
+            set env(RAPPTURE_LOG) /tmp
+        }
+        set dir [clock format [clock seconds] -format "%Y-%m-%d"]
+        set dir [file join $env(RAPPTURE_LOG) $dir]
+        if {![file isdirectory $dir]} {
+            puts stderr "WARNING: log directory \"$dir\" doesn't exist"
+            return
+        }
+
+        # generate a unique random file name for the log
+        set app [Rappture::Tool::resources -appname]
+        if {$app eq ""} {
+            error "app name not set before logging -- init logging after initializing tool resources"
+        }
+
+        for {set ntries 0} {$ntries < 5} {incr ntries} {
+            set unique [string map {= _} [base32::encode [md5::md5 "$tcl_platform(user):$app:[clock seconds]:[clock clicks]"]]]
+
+            set fileName [file join $dir $unique.log]
+            if {![file exists $fileName]} {
+                break
+            }
+        }
+        if {[file exists $fileName]} {
+            error "can't seem to create a unique log file name in $dir"
+        }
+
+        # open the log file
+        set fid [open $fileName w]
+
+        # set the buffer size low so we don't lose much output if the
+        # program suddenly terminates
+        fconfigure $fid -buffersize 1024
+
+        # set permissions on the file so that it's not readable
+        # NOTE: middleware should do this automatically
+        ##file attributes $fileName -permissions 0400
+
+        # logging is now turned on
+        set enabled 1
+
+        # create the logging proc -- this is faster than checking "enabled"
+        proc ::Rappture::Logger::log {event args} {
+            variable fid
+            # limit the side of log messages (which could be really large)
+            set shortArgs ""
+            foreach str $args {
+                if {[string length $str] > 255} {
+                    set str "[string range $str 0 255]..."
+                }
+                lappend shortArgs $str
+            }
+            catch {
+              set t [clock seconds]
+              set tstr [clock format $t -format "%T"]
+              puts $fid "$t = $tstr>> $event $shortArgs"
+            }
+        }
+
+        # save out some info about the user and the session
+        puts $fid "# Application: $app"
+        puts $fid "# User: $tcl_platform(user)"
+        if {[info exists env(SESSION)]} {
+            puts $fid "# Session: $env(SESSION)"
+        }
+        puts $fid "# Date: [clock format [clock seconds]]"
+        Rappture::Logger::log started
+
+    } else {
+        # turn logging off
+        if {$fid ne ""} {
+            catch {close $fid}
+            set fid ""
+        }
+        set enabled 0
+
+        # null out the logging proc -- this is faster than checking "enabled"
+        proc ::Rappture::Logger::log {event args} { # do nothing }
+    }
+
+    # catch signals that kill the program and clean up logging
+    package require Rappture
+    Rappture::signal SIGHUP RapptureLogger ::Rappture::Logger::cleanup
+    Rappture::signal SIGINT RapptureLogger ::Rappture::Logger::cleanup
+    Rappture::signal SIGQUIT RapptureLogger ::Rappture::Logger::cleanup
+    Rappture::signal SIGTERM RapptureLogger ::Rappture::Logger::cleanup
+    Rappture::signal SIGKILL RapptureLogger ::Rappture::Logger::cleanup
+}
+
+# ----------------------------------------------------------------------
+# USAGE: log <event> ?<detail> <detail> ...?
+#
+# Used throughout the Rappture application to log various activities.
+# Each <event> is a short name like "tooltip" or "inputChanged" that
+# indicates what happened.  All remaining arguments are appended to
+# the log as details about what happened or what changed.
+# ----------------------------------------------------------------------
+proc Rappture::Logger::log {event args} {
+    # do nothing by default until turned on by init
+}
+
+# ----------------------------------------------------------------------
+# USAGE: cleanup
+#
+# Called when the program receives a signal that would normally kill
+# the program.  Flushes the buffer and closes the log file cleanly
+# before dying.
+# ----------------------------------------------------------------------
+proc Rappture::Logger::cleanup {} {
+    variable enabled
+    variable fid
+
+    if {$enabled && $fid ne ""} {
+        log finished
+        catch {flush $fid}
+        catch {close $fid}
+        set fid ""
+        set enabled 0
+    }
+    after idle exit
+}
Index: /tags/1.6.0/gui/scripts/main.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/main.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/main.tcl	(revision 6168)
@@ -0,0 +1,425 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+#!/bin/sh
+# ----------------------------------------------------------------------
+#  USER INTERFACE DRIVER
+#
+#  This driver program loads a tool description from a tool.xml file,
+#  and produces a user interface automatically to drive an application.
+#  The user can set up input, click and button to launch a tool, and
+#  browse through output.
+#
+#  RUN AS FOLLOWS:
+#    wish main.tcl ?-tool <toolfile>?
+#
+#  If the <toolfile> is not specified, it defaults to "tool.xml" in
+#  the current working directory.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+# take the main window down for now, so we can avoid a flash on the screen
+wm withdraw .
+
+package require Itcl
+package require Img
+package require Rappture
+package require RapptureGUI
+
+option add *MainWin.mode desktop startupFile
+option add *MainWin.borderWidth 0 startupFile
+option add *MainWin.anchor fill startupFile
+
+# "web site" look
+option add *MainWin.bgScript {
+    rectangle 0 0 200 <h> -outline "" -fill #5880BB
+    rectangle 200 0 300 <h> -outline "" -fill #425F8B
+    rectangle 300 0 <w> <h> -outline "" -fill #324565
+} startupFile
+
+# "clean" look
+option add *MainWin.bgScript "" startupFile
+option add *MainWin.bgColor white startupFile
+option add *Tooltip.background white
+option add *Editor.background white
+option add *Gauge.textBackground white
+option add *TemperatureGauge.textBackground white
+option add *Switch.textBackground white
+option add *Progress.barColor #ffffcc
+option add *Balloon.titleBackground #6666cc
+option add *Balloon.titleForeground white
+option add *Balloon*Label.font -*-helvetica-medium-r-normal-*-12-*
+option add *Balloon*Radiobutton.font -*-helvetica-medium-r-normal-*-12-*
+option add *Balloon*Checkbutton.font -*-helvetica-medium-r-normal-*-12-*
+option add *ResultSelector.controlbarBackground #6666cc
+option add *ResultSelector.controlbarForeground white
+option add *ResultSelector.activeControlBackground #ccccff
+option add *ResultSelector.activeControlForeground black
+option add *Radiodial.length 3i
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-18-*
+option add *hubcntls*Button.padX 0 widgetDefault
+option add *hubcntls*Button.padY 0 widgetDefault
+option add *hubcntls*Button.relief flat widgetDefault
+option add *hubcntls*Button.overRelief raised widgetDefault
+option add *hubcntls*Button.borderWidth 1 widgetDefault
+option add *hubcntls*Button.font \
+    -*-helvetica-medium-r-normal-*-8-* widgetDefault
+
+switch $tcl_platform(platform) {
+    unix - windows {
+        event add <<PopupMenu>> <ButtonPress-3>
+    }
+    macintosh {
+        event add <<PopupMenu>> <Control-ButtonPress-1>
+    }
+}
+
+# install a better bug handler
+Rappture::bugreport::install
+# fix the "grab" command to support a stack of grab windows
+Rappture::grab::init
+
+#
+# Process command line args to get the names of files to load...
+#
+Rappture::getopts argv params {
+    value -tool tool.xml
+    list  -load ""
+    value -input ""
+    value -simset ""
+    value -nosim 0
+}
+
+proc ReadToolParameters { numTries } {
+    incr numTries -1
+    if { $numTries < 0 } {
+        return
+    }
+    global env
+    set paramsFile $env(TOOL_PARAMETERS)
+    if { ![file readable $paramsFile] } {
+        after 500 ReadToolParmeters $numTries
+        return
+    }
+    catch {
+        set f [open $paramsFile "r"]
+        set contents [read $f]
+        close $f
+        set pattern {^file\((.*)\):(.*)$}
+        foreach line [split $contents "\n"] {
+            if { [regexp $pattern $line match path rest] } {
+                set ::Rappture::parameters($path) $rest
+            }
+        }
+    }
+}
+
+if { [info exists env(TOOL_PARAMETERS)] } {
+    ReadToolParameters 10
+}
+
+set loadobjs {}
+foreach runfile $params(-load) {
+    if {![file exists $runfile]} {
+        puts stderr "can't find run: \"$runfile\""
+        exit 1
+    }
+    set status [catch {Rappture::library $runfile} result]
+    lappend loadobjs $result
+}
+
+set inputobj {}
+if {$params(-input) ne ""} {
+    if {![file exists $params(-input)]} {
+        puts stderr "can't find input file: \"$params(-input)\""
+        exit 1
+    }
+    if {[catch {Rappture::library $params(-input)} result] == 0} {
+        set inputobj $result
+    }
+}
+
+# open the XML file containing the tool parameters
+if {![file exists $params(-tool)]} {
+    # check to see if the user specified any run.xml files to load.
+    # if so, we can use that as the tool.xml. if we can find where
+    # the original application was installed using the xml tag
+    # tool.version.application.directory(top), the user can
+    # run new simulations, otherwise they can only revisualize the
+    # run.xml files they are loading.
+    set pseudotool ""
+    if {[llength $loadobjs] == 0 && $inputobj eq ""} {
+        puts stderr "can't find tool \"$params(-tool)\""
+        exit 1
+    }
+    # search the loadfiles for the install location
+    # we could just use run.xml files as tool.xml, but
+    # if there are loaders or notes, they will still need
+    # examples/ and docs/ dirs from the install location
+    set check [concat $loadobjs $inputobj]
+    foreach runobj $check {
+        set tdir \
+            [string trim [$runobj get tool.version.application.directory(tool)]]
+        if {[file isdirectory $tdir] && \
+            [file exists $tdir/tool.xml]} {
+            set pseudotool $tdir/tool.xml
+            break
+        }
+    }
+    if {![file exists $pseudotool]} {
+        # we didn't find a tool.xml file,
+        # use info from a runfile to build gui
+        # disable simulation, because no tool.xml
+        set pseudotool [lindex $params(-load) 0]
+        array set params [list -nosim true]
+    }
+    if {![file exists $pseudotool]} {
+        puts stderr "can't find tool \"$params(-tool)\""
+        exit 1
+    }
+    array set params [list -tool $pseudotool]
+}
+
+set xmlobj [Rappture::library $params(-tool)]
+
+set installdir [file normalize [file dirname $params(-tool)]]
+$xmlobj put tool.version.application.directory(tool) $installdir
+set tool [Rappture::Tool ::#auto $xmlobj $installdir]
+
+# ----------------------------------------------------------------------
+# CHECK JOB FAILURE REPORTING
+#
+# If this tool might fail when it launches jobs (i.e., Rappture
+# can't check some inputs, such as strings), then disable the
+# automatic ticket submission for job failures
+# ----------------------------------------------------------------------
+set val [string trim [$tool xml get tool.reportJobFailures]]
+if { "" != $val} {
+    if {[catch {Rappture::bugreport::shouldReport jobfailures $val} result]} {
+        puts stderr "WARNING for reportJobFailures: $result"
+    }
+}
+
+# ----------------------------------------------------------------------
+# LOAD RESOURCE SETTINGS
+#
+# Try to load the $SESSIONDIR/resources file, which contains
+# middleware settings, such as the application name and the
+# filexfer settings.
+# ----------------------------------------------------------------------
+Rappture::resources::load
+
+# ----------------------------------------------------------------------
+# START LOGGING
+#
+# If the $RAPPTURE_LOG directory is set to a directory used for
+# logging, then open a log file and start logging.
+# ----------------------------------------------------------------------
+Rappture::Logger::init
+
+# ----------------------------------------------------------------------
+# INITIALIZE THE DESKTOP CONNECTION
+#
+# If there's a SESSION ID, then this must be running within the
+# nanoHUB.  Try to initialize the server handling the desktop
+# connection.
+# ----------------------------------------------------------------------
+Rappture::filexfer::init
+
+# ----------------------------------------------------------------------
+# MAIN WINDOW
+# ----------------------------------------------------------------------
+Rappture::MainWin .main -borderwidth 0
+.main configure -title [string trim [$tool xml get tool.title]]
+wm withdraw .main
+wm protocol .main WM_DELETE_WINDOW {Rappture::Logger::cleanup; exit}
+
+# if the FULLSCREEN variable is set, then nanoHUB wants us to go full screen
+if {[info exists env(FULLSCREEN)]} {
+    .main configure -mode web
+}
+
+#
+# The main window has a pager that acts as a notebook for the
+# various parts.  This notebook as at least two pages--an input
+# page and an output (analysis) page.  If there are <phase>'s
+# for input, then there are more pages in the notebook.
+#
+set win [.main component app]
+Rappture::Postern $win.postern
+pack $win.postern -side bottom -fill x
+
+Rappture::Pager $win.pager
+pack $win.pager -expand yes -fill both
+
+#
+# Add a place for menu button in the breadcrumbs area of this pager.
+#
+set app [string trim [$tool xml get tool.id]]
+set url [Rappture::Tool::resources -huburl]
+set crumbs [$win.pager component breadcrumbarea]
+frame $crumbs.hubcntls
+pack $crumbs.hubcntls -side right -padx 4
+
+set m $crumbs.hubcntls.help.menu
+menubutton $crumbs.hubcntls.help \
+    -image [Rappture::icon hamburger_menu] \
+    -highlightthickness 0 \
+    -menu $m
+pack $crumbs.hubcntls.help -side top -anchor w
+
+#
+# Load up the components in the various phases of input.
+#
+set phases [$tool xml children -type phase input]
+if {[llength $phases] > 0} {
+    set plist ""
+    foreach name $phases {
+        lappend plist input.$name
+    }
+    set phases $plist
+} else {
+    set phases input
+}
+
+foreach comp $phases {
+    set title [string trim [$tool xml get $comp.about.label]]
+    if {$title == ""} {
+        set title "Input #auto"
+    }
+    $win.pager insert end -name $comp -title $title
+
+    #
+    # Build the page of input controls for this phase.
+    #
+    set f [$win.pager page $comp]
+    Rappture::Page $f.cntls $tool $comp
+    pack $f.cntls -expand yes -fill both
+}
+
+# let components (loaders) in the newly created pages settle
+update
+
+# ----------------------------------------------------------------------
+# OUTPUT AREA
+# ----------------------------------------------------------------------
+
+# adjust the title of the page here.
+# to adjust the button text, look in analyzer.tcl
+set simtxt [string trim [$xmlobj get tool.action.label]]
+if {"" == $simtxt} {
+    set simtxt "Simulate"
+}
+$win.pager insert end -name analyzer -title $simtxt
+set f [$win.pager page analyzer]
+$win.pager page analyzer -command [subst {
+    if { !$params(-nosim) } {
+        $win.pager busy yes
+        update
+        $f.analyze simulate -ifneeded
+        $win.pager busy no
+    }
+}]
+
+Rappture::Analyzer $f.analyze $tool -simcontrol auto -notebookpage about
+pack $f.analyze -expand yes -fill both
+
+$tool notify add analyzer * [list $f.analyze reset]
+$f.analyze buildMenu $m $url $app
+
+
+# ----------------------------------------------------------------------
+# Finalize the arrangement
+# ----------------------------------------------------------------------
+if {[llength [$win.pager page]] > 2} {
+    # We have phases, so we shouldn't allow the "Simulate" button.
+    # If it pops up, there are two ways to push simulate and duplicate
+    # links for "About" and "Questions?".
+    $f.analyze configure -simcontrol off
+} elseif {[llength [$win.pager page]] == 2} {
+    set style [string trim [$xmlobj get tool.layout]]
+    set screenw [winfo screenwidth .]
+
+    update idletasks
+    set w0 [winfo reqwidth [$win.pager page @0]]
+    set w1 [winfo reqwidth [$win.pager page @1]]
+
+    if { $style != "wizard" } {
+        # If only two windows and they're small enough, put them up
+        # side-by-side
+        if {$w0+$w1 < $screenw } {
+            $win.pager configure -arrangement side-by-side
+            $f.analyze configure -holdwindow [$win.pager page @0]
+        }
+    }
+    set type [string trim [$tool xml get tool.control]]
+    if {$type == ""} {
+        set type [string trim [$tool xml get tool.control.type]]
+    }
+    set arrangement [$win.pager cget -arrangement]
+    if { $type == "" } {
+        if { $arrangement != "side-by-side" } {
+           set type auto
+        }
+    }
+    if { $arrangement != "side-by-side" &&
+            ($type == "manual" || $type == "manual-resim" ||
+             $type == "auto" || $style == "wizard") } {
+        # in "auto" mode, we don't need a simulate button
+        $f.analyze configure -simcontrol off
+    } else {
+        # not in "auto" mode but side-by-side, we always need the button
+        $f.analyze configure -simcontrol on
+    }
+}
+
+# load previous xml runfiles
+if {[llength $params(-load)] > 0} {
+    foreach runobj $loadobjs {
+        $f.analyze load $runobj
+    }
+    # load the inputs for the very last run
+    $tool load $runobj
+
+    # don't need simulate button if we cannot simulate
+    if {$params(-nosim)} {
+        $f.analyze configure -simcontrol off
+    }
+    $f.analyze configure -notebookpage analyze
+    $win.pager current analyzer
+} elseif {$params(-simset) ne ""} {
+    $f.analyze reload $params(-simset)
+} elseif {$params(-input) ne ""} {
+    $tool load $inputobj
+}
+
+# let components (loaders) settle after the newly loaded runs
+update
+
+foreach path [array names ::Rappture::parameters] {
+    set fname $::Rappture::parameters($path)
+    if {[catch {
+          set fid [open $fname r]
+          set info [read $fid]
+          close $fid}] == 0} {
+
+        set w [$tool widgetfor $path]
+        if {$w ne ""} {
+            if {[catch {$w value [string trim $info]} result]} {
+                puts stderr "WARNING: bad tool parameter value for \"$path\""
+                puts stderr "  $result"
+            }
+        } else {
+            puts stderr "WARNING: can't find control for tool parameter: $path"
+        }
+    }
+}
+
+wm deiconify .main
Index: /tags/1.6.0/gui/scripts/mainwin.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/mainwin.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/mainwin.tcl	(revision 6168)
@@ -0,0 +1,392 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: mainwin - main application window for Rappture
+#
+#  This widget acts as the main window for a Rappture application.
+#  It can be configured to run in two modes:  1) normal desktop
+#  application, and 2) web-based application.  In web-based mode,
+#  the application window runs inside a VNC window, and it takes
+#  the full screen and blends in with the web page.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *MainWin.mode desktop widgetDefault
+option add *MainWin.borderWidth 0 widgetDefault
+option add *MainWin.relief raised widgetDefault
+option add *MainWin.anchor center widgetDefault
+option add *MainWin.titleFont \
+    -*-helvetica-bold-o-normal-*-14-* widgetDefault
+
+#
+# Tk text widget doesn't honor Ctrl-V by default.  Get rid
+# of the default binding so that Ctrl-V works for <<Paste>>
+# as expected.
+#
+bind Text <Control-KeyPress-v> {}
+
+#
+# Fix the built-in <<Paste>> bindings to work properly even
+# for the X11 windowing system.  By default, Tk won't replace
+# selected text in X11.  What kind of stupid nonsense is that?
+#
+bind Entry <<Paste>> {
+    catch {
+        # always replace existing selection
+        catch { %W delete sel.first sel.last }
+
+        %W insert insert [::tk::GetSelection %W CLIPBOARD]
+        tk::EntrySeeInsert %W
+    }
+}
+proc ::tk_textPaste w {
+    global tcl_platform
+    if {![catch {::tk::GetSelection $w CLIPBOARD} sel]} {
+        if {[catch {$w cget -autoseparators} oldSeparator]} {
+            # in case we're using an older version of Tk
+            set oldSeparator 0
+        }
+        if { $oldSeparator } {
+            $w configure -autoseparators 0
+            $w edit separator
+        }
+
+        # always replace existing selection
+        catch { $w delete sel.first sel.last }
+        $w insert insert $sel
+
+        if { $oldSeparator } {
+            $w edit separator
+            $w configure -autoseparators 1
+        }
+    }
+}
+
+# ======================================================================
+itcl::class Rappture::MainWin {
+    inherit itk::Toplevel
+
+    itk_option define -mode mode Mode ""
+    itk_option define -anchor anchor Anchor "center"
+    itk_option define -bgscript bgScript BgScript ""
+
+    constructor {args} { # defined below }
+
+    public method draw {option args}
+    public method syncCutBuffer {option args}
+
+    protected method _redraw {}
+
+    private variable _contents ""  ;# frame containing app
+    private variable _sync         ;# to sync current selection and cut buffer
+    private variable _bgscript ""  ;# script of background drawing cmds
+    private variable _bgparser ""  ;# parser for bgscript
+}
+
+itk::usual MainWin {
+    keep -background -cursor foreground -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::MainWin::constructor {args} {
+    itk_component add area {
+        canvas $itk_interior.area
+    } {
+        usual
+        rename -background -bgcolor bgColor Background
+    }
+    pack $itk_component(area) -expand yes -fill both
+    bind $itk_component(area) <Configure> [itcl::code $this _redraw]
+
+    itk_component add app {
+        frame $itk_component(area).app
+    } {
+        usual
+        keep -borderwidth -relief
+    }
+    bind $itk_component(app) <Configure> "
+        after cancel [itcl::code $this _redraw]
+        after idle [itcl::code $this _redraw]
+    "
+
+    itk_component add menu {
+        menu $itk_interior.menu
+    }
+    itk_component add filemenu {
+        menu $itk_component(menu).file
+    }
+    $itk_component(menu) add cascade -label "File" -underline 0 \
+        -menu $itk_component(filemenu)
+    $itk_component(filemenu) add command -label "Exit" -underline 1 \
+        -command {destroy .}
+
+    #
+    # Create a parser for the -bgscript option that can
+    # execute drawing commands on the canvas.  This allows
+    # us to draw a background that blends in with web pages.
+    #
+    set _bgparser [interp create -safe]
+    $_bgparser alias rectangle [itcl::code $this draw rectangle]
+    $_bgparser alias oval [itcl::code $this draw oval]
+    $_bgparser alias line [itcl::code $this draw line]
+    $_bgparser alias polygon [itcl::code $this draw polygon]
+    $_bgparser alias text [itcl::code $this draw text]
+    $_bgparser alias image [itcl::code $this draw image]
+
+    eval itk_initialize $args
+
+    bind RapptureMainWin <Destroy> { exit }
+    set btags [bindtags $itk_component(hull)]
+    bindtags $itk_component(hull) [lappend btags RapptureMainWin]
+
+    set _sync(cutbuffer) ""
+    set _sync(selection) ""
+
+    #
+    # We used to do this to make "copy/paste with desktop" work
+    # properly.  Well, it never really worked *properly*, but
+    # it was an attempt.  We might as well skip it.  We use
+    # the importfile/exportfile stuff now.
+    #
+    ##global tcl_platform
+    ##if {$tcl_platform(platform) == "unix"} {
+    ##    # this sync stuff works only for X windows
+    ##    blt::cutbuffer set ""
+    ##    syncCutBuffer ifneeded
+    ##}
+}
+
+# ----------------------------------------------------------------------
+# USAGE: syncCutBuffer ifneeded
+# USAGE: syncCutBuffer transfer <offset> <maxchars>
+# USAGE: syncCutBuffer lostselection
+#
+# Invoked automatically whenever the mouse pointer enters or leaves
+# a main window to sync the cut buffer with the primary selection.
+# This helps applications work properly with the "Copy/Paste with
+# Desktop" option on the VNC applet for the nanoHUB.
+#
+# The "ifneeded" option syncs the cutbuffer and the primary selection
+# if either one has new data.
+#
+# The "fromselection" option syncs from the primary selection to the
+# cut buffer.  If there's a primary selection, it gets copied to the
+# cut buffer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MainWin::syncCutBuffer {option args} {
+    set mainwin $itk_component(hull)
+    switch -- $option {
+        ifneeded {
+            #
+            # See if the incoming cut buffer has changed.
+            # If so, then sync the new input to the primary selection.
+            #
+            set s [blt::cutbuffer get]
+            if {"" != $s && ![string equal $s $_sync(cutbuffer)]} {
+                #
+                # Convert any \r's in the cutbuffer to \n's.
+                #
+                if {[string first "\r" $s] >= 0} {
+                    regsub -all "\r\n" $s "\n" s
+                    regsub -all "\r" $s "\n" s
+                    blt::cutbuffer set $s
+                }
+
+                set _sync(cutbuffer) $s
+
+                if {![string equal $s $_sync(selection)]
+                      && [selection own -selection PRIMARY] != $mainwin} {
+                    set _sync(selection) $s
+
+                    clipboard clear
+                    clipboard append -- $s
+                    selection handle -selection PRIMARY $mainwin \
+                        [itcl::code $this syncCutBuffer transfer]
+                    selection own -selection PRIMARY -command \
+                        [itcl::code $this syncCutBuffer lostselection] \
+                        $mainwin
+                }
+            }
+
+            #
+            # See if the selection has changed.  If so, then sync
+            # the new input to the cut buffer, so it's available
+            # outside the VNC client.
+            #
+            if {[catch {selection get -selection PRIMARY} s]} {
+                set s ""
+            }
+            if {"" != $s && ![string equal $s $_sync(selection)]} {
+                set _sync(selection) $s
+                blt::cutbuffer set $s
+            }
+
+            # do this again soon
+            after 1000 [itcl::code $this syncCutBuffer ifneeded]
+        }
+        transfer {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"syncCutBuffer transfer offset max\""
+            }
+            set offset [lindex $args 0]
+            set maxchars [lindex $args 1]
+            return [string range $_currseln $offset [expr {$offset+$maxchars-1}]]
+        }
+        lostselection {
+            # nothing to do
+        }
+        default {
+            error "bad option \"$option\": should be ifneeded, transfer, or lostselection"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: draw <option> ?<arg> <arg>...?
+#
+# Used by the -bgscript to draw items in the background area behind
+# the app when "-mode web" is active.  This allows an application
+# to create a background that blends seamlessly with the underlying
+# web page.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MainWin::draw {option args} {
+    set w $itk_component(hull)
+    regsub -all {<w>} $args [winfo screenwidth $w] args
+    regsub -all {<h>} $args [winfo screenheight $w] args
+    eval $itk_component(area) create $option $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Used internally to redraw the widget whenever it changes size.
+# This matters only when "-mode web" is active, when the background
+# area is actually visible.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MainWin::_redraw {} {
+    $itk_component(area) delete all
+    if {$itk_option(-mode) == "web"} {
+        if {[catch {$_bgparser eval $itk_option(-bgscript)} result]} {
+            bgerror "$result\n    (while redrawing application background)"
+        }
+
+        set bd 0  ;# optional border
+        set sw [winfo width $itk_component(area)]
+        set sh [winfo height $itk_component(area)]
+
+        set clip 0
+        set w [winfo reqwidth $itk_component(app)]
+        set h [winfo reqheight $itk_component(app)]
+        if {$w > $sw-2*$bd} {
+            set $w [expr {$sw-2*$bd}]
+            set clip 1
+        }
+
+        set anchor $itk_option(-anchor)
+        switch -- $itk_option(-anchor) {
+            n {
+                set x [expr {$sw/2}]
+                set y $bd
+            }
+            s {
+                set x [expr {$sw/2}]
+                set y [expr {$sh-$bd}]
+            }
+            center {
+                set x [expr {$sw/2}]
+                set y [expr {$sh/2}]
+            }
+            w {
+                set x $bd
+                set y [expr {$sh/2}]
+            }
+            e {
+                set x [expr {$sw-$bd}]
+                set y [expr {$sh/2}]
+            }
+            nw {
+                set x $bd
+                set y $bd
+            }
+            ne {
+                set x [expr {$sw-$bd}]
+                set y $bd
+            }
+            sw {
+                set x $bd
+                set y [expr {$sh-$bd}]
+            }
+            se {
+                set x [expr {$sw-$bd}]
+                set y [expr {$sh-$bd}]
+            }
+            fill {
+                set anchor nw
+                set x $bd
+                set y $bd
+                set w [expr {$sw-2*$bd}]
+                set h [expr {$sh-2*$bd}]
+                set clip 1
+            }
+        }
+
+        # if the app is too big, use w/h. otherwise, 0,0 for default size
+        if {!$clip} {
+            set w 0
+            set h 0
+        }
+
+        $itk_component(area) create window $x $y \
+            -anchor $anchor -window $itk_component(app) \
+            -width $w -height $h
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -mode
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::MainWin::mode {
+    switch -- $itk_option(-mode) {
+        desktop {
+            component hull configure -menu $itk_component(hull).menu
+            pack $itk_component(app) -expand yes -fill both
+            wm geometry $itk_component(hull) ""
+        }
+        web {
+            component hull configure -menu ""
+            pack forget $itk_component(app)
+            set wx [winfo screenwidth $itk_component(hull)]
+            set wy [winfo screenheight $itk_component(hull)]
+            wm geometry $itk_component(hull) ${wx}x${wy}+0+0
+            _redraw
+        }
+        default {
+            error "bad value \"$itk_option(-mode)\": should be desktop or web"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -bgscript
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::MainWin::bgscript {
+    _redraw
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -anchor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::MainWin::anchor {
+    if {[lsearch {n s e w ne nw se sw center fill} $itk_option(-anchor)] < 0} {
+        error "bad anchor \"$itk_option(-anchor)\""
+    }
+    _redraw
+}
Index: /tags/1.6.0/gui/scripts/mesh.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/mesh.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/mesh.tcl	(revision 6168)
@@ -0,0 +1,1538 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: mesh - represents a structured mesh for a device
+#
+#  This object represents a mesh in an XML description of simulator
+#  output.  A mesh is a structured arrangement of points, as elements
+#  composed of nodes representing coordinates.  This is a little
+#  different from a cloud, which is an unstructured arrangement
+#  (shotgun blast) of points.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+namespace eval Rappture {
+    # forward declaration
+}
+
+itcl::class Rappture::Mesh {
+    constructor {xmlobj path} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method points {}
+    public method elements {}
+    public method mesh {{-type "vtk"}}
+    public method dimensions {}
+    public method limits {which}
+    public method units { axis }
+    public method label { axis }
+    public method hints {{key ""}}
+    public method isvalid {} {
+        return $_isValid
+    }
+    public proc fetch {xmlobj path}
+    public proc release {obj}
+    public method vtkdata {{what -partial}}
+    public method type {} {
+        return $_type
+    }
+    public method numpoints {} {
+        return $_numPoints
+    }
+    public method numcells {} {
+        return $_numCells
+    }
+
+    private method ReadNodesElements {path}
+    private method GetDimension { path }
+    private method GetDouble { path }
+    private method GetInt { path }
+    private method InitHints {}
+    private method ReadGrid { path }
+    private method ReadUnstructuredGrid { path }
+    private method ReadVtk { path }
+    private method WriteTriangles { path xv yv zv triangles }
+    private method WriteQuads { path xv yv zv quads }
+    private method WriteVertices { path xv yv zv vertices }
+    private method WriteLines { path xv yv zv lines }
+    private method WritePolygons { path xv yv zv polygons }
+    private method WriteTriangleStrips { path xv yv zv trianglestrips }
+    private method WriteTetrahedrons { path xv yv zv tetrahedrons }
+    private method WriteHexahedrons { path xv yv zv hexhedrons }
+    private method WriteWedges { path xv yv zv wedges }
+    private method WritePyramids { path xv yv zv pyramids }
+    private method WriteHybridCells { path xv yv zv cells celltypes }
+    private method WritePointCloud { path xv yv zv }
+    private method GetCellType { name }
+    private method GetNumIndices { type }
+
+    private variable _xmlobj "";        # Ref to XML obj with device data
+    private variable _mesh "";          # Lib obj representing this mesh
+    private variable _dim 0;            # Dimension of mesh (1, 2, or 3)
+    private variable _type "";          # Indicates the type of mesh.
+    private variable _axis2units;       # System of units for x, y, z
+    private variable _axis2labels;      #
+    private variable _hints
+    private variable _limits;           # Array of mesh limits. Keys are
+                                        # xmin, xmax, ymin, ymax, ...
+    private variable _numPoints 0;      # Number of points in mesh
+    private variable _numCells 0;       # Number of cells in mesh
+    private variable _vtkdata "";       # Mesh in vtk file format.
+    private variable _isValid 0;        # Indicates if the mesh is valid.
+
+    private common _xp2obj;             # used for fetch/release ref counting
+    private common _obj2ref;            # used for fetch/release ref counting
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::Mesh::fetch <xmlobj> <path>
+#
+# Clients use this instead of a constructor to fetch the Mesh for
+# a particular <path> in the <xmlobj>.  When the client is done with
+# the mesh, he calls "release" to decrement the reference count.
+# When the mesh is no longer needed, it is cleaned up automatically.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::fetch {xmlobj path} {
+    set handle "$xmlobj|$path"
+    if {[info exists _xp2obj($handle)]} {
+        set obj $_xp2obj($handle)
+        incr _obj2ref($obj)
+        return $obj
+    }
+    set obj [Rappture::Mesh ::#auto $xmlobj $path]
+    set _xp2obj($handle) $obj
+    set _obj2ref($obj) 1
+    return $obj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::Mesh::release <obj>
+#
+# Clients call this when they're no longer using a Mesh fetched
+# previously by the "fetch" proc.  This decrements the reference
+# count for the mesh and destroys the object when it is no longer
+# in use.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::release {obj} {
+    if {[info exists _obj2ref($obj)]} {
+        incr _obj2ref($obj) -1
+        if {$_obj2ref($obj) <= 0} {
+            unset _obj2ref($obj)
+            foreach handle [array names _xp2obj] {
+                if {$_xp2obj($handle) == $obj} {
+                    unset _xp2obj($handle)
+                }
+            }
+            itcl::delete object $obj
+        }
+    } else {
+        error "can't find reference count for $obj"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::constructor {xmlobj path} {
+    package require vtk
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be Rappture::library"
+    }
+    set _xmlobj $xmlobj
+    set _mesh [$xmlobj element -as object $path]
+
+    # Initialize mesh bounds to empty
+    foreach axis {x y z} {
+        set _limits($axis) ""
+    }
+    set units [$_mesh get units]
+    set first [lindex $units 0]
+    foreach u $units axis { x y z } {
+        if { $u != "" } {
+            set _axis2units($axis) $u
+        } else {
+            set _axis2units($axis) $first
+        }
+    }
+    foreach label [$_mesh get labels] axis { x y z } {
+        if { $label != "" } {
+            set _axis2labels($axis) $label
+        } else {
+            set _axis2labels($axis) [string toupper $axis]
+        }
+    }
+
+    # Meshes comes in a variety of flavors
+    #
+    # Dimensionality is determined from the <dimension> tag.
+    #
+    # <vtk> described mesh
+    # <element> +  <node> definitions
+    # <grid>            rectangular mesh
+    # <unstructured>    homogeneous cell type mesh.
+
+    # Check that only one mesh type was defined.
+    set subcount 0
+    foreach cname [$_mesh children] {
+        foreach type { vtk grid unstructured } {
+            if { $cname == $type } {
+                incr subcount
+                break
+            }
+        }
+    }
+    if {[$_mesh element "node"] != "" ||
+        [$_mesh element "element"] != ""} {
+        incr subcount
+    }
+
+    if { $subcount == 0 } {
+        puts stderr "WARNING: no mesh specified for \"$path\"."
+        return
+    }
+    if { $subcount > 1 } {
+        puts stderr "WARNING: too many mesh types specified for \"$path\"."
+        return
+    }
+    set result 0
+    if { [$_mesh element "vtk"] != ""} {
+        set result [ReadVtk $path]
+    } elseif {[$_mesh element "grid"] != "" } {
+        set result [ReadGrid $path]
+    } elseif {[$_mesh element "unstructured"] != "" } {
+        set result [ReadUnstructuredGrid $path]
+    } elseif {[$_mesh element "node"] != "" && [$_mesh element "element"] != ""} {
+        set result [ReadNodesElements $path]
+    }
+    set _isValid $result
+    InitHints
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::destructor {} {
+    # don't destroy the _xmlobj! we don't own it!
+    itcl::delete object $_mesh
+}
+
+#
+# vtkdata --
+#
+#        This is called by the field object to generate a VTK file to send to
+#        the remote render server.  Returns the vtkDataSet object containing
+#        (at this point) just the mesh.  The field object doesn't know (or
+#        care) what type of mesh is used.  The field object will add field
+#        arrays before generating output to send to the remote render server.
+#
+itcl::body Rappture::Mesh::vtkdata {{what -partial}} {
+    if {$what == "-full"} {
+        append out "# vtk DataFile Version 3.0\n"
+        append out "[hints label]\n"
+        append out "ASCII\n"
+        append out $_vtkdata
+        return $out
+    } else {
+        return $_vtkdata
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: points
+#
+# Returns the vtk object containing the points for this mesh.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::points {} {
+    return ""
+}
+
+#
+# units --
+#
+#       Returns the units of the given axis.
+#
+itcl::body Rappture::Mesh::units { axis } {
+    if { ![info exists _axis2units($axis)] } {
+        return ""
+    }
+    return $_axis2units($axis)
+}
+
+#
+# label --
+#
+#       Returns the label of the given axis.
+#
+itcl::body Rappture::Mesh::label { axis } {
+    if { ![info exists _axis2labels($axis)] } {
+        return ""
+    }
+    return $_axis2labels($axis)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: elements
+#
+# Returns a list of the form {plist r plist r ...} for each element
+# in this mesh.  Each plist is a list of {x y x y ...} coordinates
+# for the mesh.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::elements {} {
+    # build a map for region number => region type
+    foreach comp [$_mesh children -type region] {
+        set id [$_mesh element -as id $comp]
+        set regions($id) [$_mesh get $comp]
+    }
+    set regions() "unknown"
+
+    set rlist ""
+    foreach comp [$_mesh children -type element] {
+        set rid [$_mesh get $comp.region]
+
+        #
+        # HACK ALERT!
+        #
+        # Prophet puts out nodes in a funny "Z" shaped order,
+        # not in proper clockwise fashion.  Switch the last
+        # two nodes for now to make them correct.
+        #
+        set nlist [$_mesh get $comp.nodes]
+        set n2 [lindex $nlist 2]
+        set n3 [lindex $nlist 3]
+        set nlist [lreplace $nlist 2 3 $n3 $n2]
+        lappend nlist [lindex $nlist 0]
+
+        set plist ""
+        foreach nid $nlist {
+            eval lappend plist [$_mesh get node($nid)]
+        }
+        lappend rlist $plist $regions($rid)
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: mesh
+#
+# Returns the vtk object representing the mesh.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::mesh { {type "vtk"} } {
+    switch $type {
+        "vtk" {
+            return ""
+        }
+        default {
+            error "Requested mesh type \"$type\" is unknown."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: dimensions
+#
+# Returns the number of dimensions for this object: 1, 2, or 3.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::dimensions {} {
+    return $_dim
+}
+
+# ----------------------------------------------------------------------
+# USAGE: limits x|y|z
+#
+# Returns the {min max} coords for the limits of the specified axis.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::limits {axis} {
+    if {![info exists _limits($axis)]} {
+        error "bad axis \"$which\": should be x, y, z"
+    }
+    return $_limits($axis)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this field.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::hints {{keyword ""}} {
+    if {$keyword != ""} {
+        if {[info exists _hints($keyword)]} {
+            return $_hints($keyword)
+        }
+        return ""
+    }
+    return [array get _hints]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitHints
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this mesh.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::InitHints {} {
+    foreach {key path} {
+        camera       camera.position
+        color        about.color
+        label        about.label
+        style        about.style
+        units        units
+    } {
+        set str [$_mesh get $path]
+        if {"" != $str} {
+            set _hints($key) $str
+        }
+    }
+    foreach {key path} {
+        toolid          tool.id
+        toolname        tool.name
+        toolcommand     tool.execute
+        tooltitle       tool.title
+        toolrevision    tool.version.application.revision
+    } {
+        set str [$_xmlobj get $path]
+        if { "" != $str } {
+            set _hints($key) $str
+        }
+    }
+}
+
+itcl::body Rappture::Mesh::GetDimension { path } {
+    set string [$_xmlobj get $path.dim]
+    if { $string == "" } {
+        puts stderr "WARNING: no tag <dim> found in mesh \"$path\"."
+        return 0
+    }
+    if { [scan $string "%d" _dim] == 1 } {
+        if { $_dim == 1 || $_dim == 2 || $_dim == 3 } {
+            return 1
+        }
+    }
+    puts stderr "WARNING: bad <dim> tag value \"$string\": should be 1, 2 or 3."
+    return 0
+}
+
+itcl::body Rappture::Mesh::GetDouble { path } {
+    set string [$_xmlobj get $path]
+    if { [scan $string "%g" value] != 1 } {
+        puts stderr "ERROR: can't get double value \"$string\" of \"$path\""
+        return 0.0
+    }
+    return $value
+}
+
+itcl::body Rappture::Mesh::GetInt { path } {
+    set string [$_xmlobj get $path]
+    if { [scan $string "%d" value] != 1 } {
+        puts stderr "ERROR: can't get integer value \"$string\" of \"$path\""
+        return 0.0
+    }
+    return $value
+}
+
+itcl::body Rappture::Mesh::ReadVtk { path } {
+    set _type "vtk"
+
+    if { ![GetDimension $path] } {
+        return 0
+    }
+    # Create a VTK file with the mesh in it.
+    set _vtkdata [$_xmlobj get $path.vtk]
+    append out "# vtk DataFile Version 3.0\n"
+    append out "mesh\n"
+    append out "ASCII\n"
+    append out "$_vtkdata\n"
+
+     # Write the contents to a file just in case it's binary.
+    set tmpfile file[pid].vtk
+    set f [open "$tmpfile" "w"]
+    fconfigure $f -translation binary -encoding binary
+    puts $f $out
+    close $f
+
+    # Read the data back into a vtk dataset and query the bounds.
+    set reader $this-datasetreader
+    vtkDataSetReader $reader
+    $reader SetFileName $tmpfile
+    $reader Update
+    set output [$reader GetOutput]
+    set _numPoints [$output GetNumberOfPoints]
+    set _numCells [$output GetNumberOfCells]
+    foreach { xmin xmax ymin ymax zmin zmax } [$output GetBounds] break
+    set _limits(x) [list $xmin $xmax]
+    set _limits(y) [list $ymin $ymax]
+    set _limits(z) [list $zmin $zmax]
+    file delete $tmpfile
+    rename $output ""
+    rename $reader ""
+    return 1
+}
+
+itcl::body Rappture::Mesh::ReadGrid { path } {
+    set _type "grid"
+
+    if { ![GetDimension $path] } {
+        return 0
+    }
+    set numUniform 0
+    set numRectilinear 0
+    set numCurvilinear 0
+    foreach axis { x y z } {
+        set min    [$_xmlobj get "$path.grid.${axis}axis.min"]
+        set max    [$_xmlobj get "$path.grid.${axis}axis.max"]
+        set num    [$_xmlobj get "$path.grid.${axis}axis.numpoints"]
+        set coords [$_xmlobj get "$path.grid.${axis}coords"]
+        set dim    [$_xmlobj get "$path.grid.${axis}dim"]
+        if { $min != "" && $max != "" && $num != "" && $num > 0 } {
+            set ${axis}Min $min
+            set ${axis}Max $max
+            set ${axis}Num $num
+            if {$min > $max} {
+                puts stderr "ERROR: grid $axis axis minimum larger than maximum"
+                return 0
+            }
+            incr numUniform
+        } elseif { $coords != "" } {
+            incr numRectilinear
+            set ${axis}Coords $coords
+        } elseif { $dim != "" } {
+            set ${axis}Num $dim
+            incr numCurvilinear
+        }
+    }
+    set _dim [expr $numRectilinear + $numUniform + $numCurvilinear]
+    if { $_dim == 0 } {
+        # No data found.
+        puts stderr "WARNING: bad grid \"$path\": no data found"
+        return 0
+    }
+    if { $numCurvilinear > 0 } {
+        # This is the 2D/3D curilinear case. We found <xdim>, <ydim>, or <zdim>
+        if { $numRectilinear > 0 || $numUniform > 0 } {
+            puts stderr "WARNING: bad grid \"$path\": can't mix curvilinear and rectilinear grids."
+            return 0
+        }
+        set points [$_xmlobj get $path.grid.points]
+        if { $points == "" } {
+            puts stderr "WARNING: bad grid \"$path\": no <points> found."
+            return 0
+        }
+        if { ![info exists xNum] } {
+            puts stderr "WARNING: bad grid \"$path\": invalid dimensions for curvilinear grid: missing <xdim> from grid description."
+            return 0
+        }
+        set all [blt::vector create \#auto]
+        set xv [blt::vector create \#auto]
+        set yv [blt::vector create \#auto]
+        set zv [blt::vector create \#auto]
+        $all set $points
+        set numCoords [$all length]
+        if { [info exists zNum] } {
+            if { ![info exists yNum] || ![info exists xNum] } {
+                puts stderr "WARNING: bad grid \"$path\": missing grid dimension"
+                blt::vector destroy $all $xv $yv $zv
+                return 0
+            }
+            set _dim 3
+            set _numPoints [expr $xNum * $yNum * $zNum]
+            set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1) * ($zNum > 1 ? ($zNum - 1) : 1)]
+            if { ($_numPoints*3) != $numCoords } {
+                puts stderr "WARNING: bad grid \"$path\": invalid grid: \# of points does not match dimensions <xdim> * <ydim> * <zdim>"
+                blt::vector destroy $all $xv $yv $zv
+                return 0
+            }
+            if { ($numCoords % 3) != 0 } {
+                puts stderr "WARNING: bad grid \"$path\": wrong \# of coordinates for 3D grid"
+                blt::vector destroy $all $xv $yv $zv
+                return 0
+            }
+            $all split $xv $yv $zv
+            foreach axis {x y z} {
+                set vector [set ${axis}v]
+                set _limits($axis) [$vector limits]
+            }
+            append out "DATASET STRUCTURED_GRID\n"
+            append out "DIMENSIONS $xNum $yNum $zNum\n"
+            append out "POINTS $_numPoints double\n"
+            foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+                append out "$x $y $z\n"
+            }
+            set _vtkdata $out
+        } elseif { [info exists yNum] } {
+            if { ![info exists xNum] } {
+                puts stderr "WARNING: bad grid \"$path\": missing grid dimension"
+                blt::vector destroy $all $xv $yv $zv
+                return 0
+            }
+            set _dim 2
+            set _numPoints [expr $xNum * $yNum]
+            set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1)]
+            if { ($_numPoints*2) != $numCoords } {
+                puts stderr "WARNING: bad grid \"$path\": \# of points does not match dimensions <xdim> * <ydim>"
+                blt::vector destroy $all $xv $yv $zv
+                return 0
+            }
+            if { ($numCoords % 2) != 0 } {
+                puts stderr "WARNING: bad grid \"$path\": wrong \# of coordinates for 2D grid"
+                blt::vector destroy $all $xv $yv $zv
+                return 0
+            }
+            $all split $xv $yv
+            foreach axis {x y} {
+                set vector [set ${axis}v]
+                set _limits($axis) [$vector limits]
+            }
+            set _limits(z) [list 0 0]
+            $zv seq 0 0 [$xv length]
+            $all merge $xv $yv $zv
+            append out "DATASET STRUCTURED_GRID\n"
+            append out "DIMENSIONS $xNum $yNum 1\n"
+            append out "POINTS $_numPoints double\n"
+            foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+                append out "$x $y $z\n"
+            }
+            set _vtkdata $out
+        } else {
+            set _dim 1
+            set _numPoints $xNum
+            set _numCells [expr $xNum - 1]
+            if { $_numPoints != $numCoords } {
+                puts stderr "WARNING: bad grid \"$path\": \# of points does not match <xdim>"
+                blt::vector destroy $all $xv $yv $zv
+                return 0
+            }
+            $all dup $xv
+            set _limits(x) [$xv limits]
+            set _limits(y) [list 0 0]
+            set _limits(z) [list 0 0]
+            $yv seq 0 0 [$xv length]
+            $zv seq 0 0 [$xv length]
+            $all merge $xv $yv $zv
+            append out "DATASET STRUCTURED_GRID\n"
+            append out "DIMENSIONS $xNum 1 1\n"
+            append out "POINTS $_numPoints double\n"
+            foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+                append out "$x $y $z\n"
+            }
+            set _vtkdata $out
+        }
+        blt::vector destroy $all $xv $yv $zv
+        return 1
+    }
+    if { $numRectilinear == 0 && $numUniform > 0} {
+        # This is the special case where all axes 2D/3D are uniform.
+        # This results in a STRUCTURED_POINTS
+        if { $_dim == 1 } {
+            if {$xNum == 1} {
+                set xSpace 0
+            } else {
+                set xSpace [expr ($xMax - $xMin) / double($xNum - 1)]
+            }
+            set _numPoints $xNum
+            set _numCells [expr $xNum - 1]
+            append out "DATASET STRUCTURED_POINTS\n"
+            append out "DIMENSIONS $xNum 1 1\n"
+            append out "ORIGIN $xMin 0 0\n"
+            append out "SPACING $xSpace 0 0\n"
+            set _vtkdata $out
+            set _limits(x) [list $xMin $xMax]
+            set _limits(y) [list 0 0]
+            set _limits(z) [list 0 0]
+        } elseif { $_dim == 2 } {
+            if {$xNum == 1} {
+                set xSpace 0
+            } else {
+                set xSpace [expr ($xMax - $xMin) / double($xNum - 1)]
+            }
+            if {$yNum == 1} {
+                set ySpace 0
+            } else {
+                set ySpace [expr ($yMax - $yMin) / double($yNum - 1)]
+            }
+            set _numPoints [expr $xNum * $yNum]
+            set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1)]
+            append out "DATASET STRUCTURED_POINTS\n"
+            append out "DIMENSIONS $xNum $yNum 1\n"
+            append out "ORIGIN $xMin $yMin 0\n"
+            append out "SPACING $xSpace $ySpace 0\n"
+            set _vtkdata $out
+            foreach axis {x y} {
+                set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
+            }
+            set _limits(z) [list 0 0]
+        } elseif { $_dim == 3 } {
+            if {$xNum == 1} {
+                set xSpace 0
+            } else {
+                set xSpace [expr ($xMax - $xMin) / double($xNum - 1)]
+            }
+            if {$yNum == 1} {
+                set ySpace 0
+            } else {
+                set ySpace [expr ($yMax - $yMin) / double($yNum - 1)]
+            }
+            if {$zNum == 1} {
+                set zSpace 0
+            } else {
+                set zSpace [expr ($zMax - $zMin) / double($zNum - 1)]
+            }
+            set _numPoints [expr $xNum * $yNum * $zNum]
+            set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1) * ($zNum > 1 ? ($zNum - 1) : 1)]
+            append out "DATASET STRUCTURED_POINTS\n"
+            append out "DIMENSIONS $xNum $yNum $zNum\n"
+            append out "ORIGIN $xMin $yMin $zMin\n"
+            append out "SPACING $xSpace $ySpace $zSpace\n"
+            set _vtkdata $out
+            foreach axis {x y z} {
+                set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
+            }
+        } else {
+            puts stderr "WARNING: bad grid \"$path\": bad dimension \"$_dim\""
+            return 0
+        }
+        return 1
+    }
+    # This is the hybrid case.  Some axes are uniform, others are nonuniform.
+    set xv [blt::vector create \#auto]
+    if { [info exists xMin] } {
+        $xv seq $xMin $xMax $xNum
+    } else {
+        $xv set [$_xmlobj get $path.grid.xcoords]
+        set xMin [$xv min]
+        set xMax [$xv max]
+        set xNum [$xv length]
+    }
+    set yv [blt::vector create \#auto]
+    if { $_dim > 1 } {
+        if { [info exists yMin] } {
+            $yv seq $yMin $yMax $yNum
+        } else {
+            $yv set [$_xmlobj get $path.grid.ycoords]
+            set yMin [$yv min]
+            set yMax [$yv max]
+            set yNum [$yv length]
+        }
+    } else {
+        set yNum 1
+    }
+    set zv [blt::vector create \#auto]
+    if { $_dim == 3 } {
+        if { [info exists zMin] } {
+            $zv seq $zMin $zMax $zNum
+        }  else {
+            $zv set [$_xmlobj get $path.grid.zcoords]
+            set zMin [$zv min]
+            set zMax [$zv max]
+            set zNum [$zv length]
+        }
+    } else {
+        set zNum 1
+    }
+    if { $_dim == 3 } {
+        set _numPoints [expr $xNum * $yNum * $zNum]
+        set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1) * ($zNum > 1 ? ($zNum - 1) : 1)]
+        append out "DATASET RECTILINEAR_GRID\n"
+        append out "DIMENSIONS $xNum $yNum $zNum\n"
+        append out "X_COORDINATES $xNum double\n"
+        append out [$xv range 0 end]
+        append out "\n"
+        append out "Y_COORDINATES $yNum double\n"
+        append out [$yv range 0 end]
+        append out "\n"
+        append out "Z_COORDINATES $zNum double\n"
+        append out [$zv range 0 end]
+        append out "\n"
+        set _vtkdata $out
+        foreach axis {x y z} {
+            if { [info exists ${axis}Min] } {
+                set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
+            }
+        }
+    } elseif { $_dim == 2 } {
+        set _numPoints [expr $xNum * $yNum]
+        set _numCells [expr ($xNum > 1 ? ($xNum - 1) : 1) * ($yNum > 1 ? ($yNum - 1) : 1)]
+        append out "DATASET RECTILINEAR_GRID\n"
+        append out "DIMENSIONS $xNum $yNum 1\n"
+        append out "X_COORDINATES $xNum double\n"
+        append out [$xv range 0 end]
+        append out "\n"
+        append out "Y_COORDINATES $yNum double\n"
+        append out [$yv range 0 end]
+        append out "\n"
+        append out "Z_COORDINATES 1 double\n"
+        append out "0\n"
+        foreach axis {x y} {
+            if { [info exists ${axis}Min] } {
+                set _limits($axis) [list [set ${axis}Min] [set ${axis}Max]]
+            }
+        }
+        set _limits(z) [list 0 0]
+        set _vtkdata $out
+    } elseif { $_dim == 1 } {
+        set _numPoints $xNum
+        set _numCells [expr $xNum - 1]
+        append out "DATASET RECTILINEAR_GRID\n"
+        append out "DIMENSIONS $xNum 1 1\n"
+        append out "X_COORDINATES $xNum double\n"
+        append out [$xv range 0 end]
+        append out "\n"
+        append out "Y_COORDINATES 1 double\n"
+        append out "0\n"
+        append out "Z_COORDINATES 1 double\n"
+        append out "0\n"
+        if { [info exists xMin] } {
+            set _limits(x) [list $xMin $xMax]
+        }
+        set _limits(y) [list 0 0]
+        set _limits(z) [list 0 0]
+        set _vtkdata $out
+    } else {
+        puts stderr "WARNING: bad grid \"$path\": invalid dimension \"$_dim\""
+        return 0
+    }
+    blt::vector destroy $xv $yv $zv
+    return 1
+}
+
+itcl::body Rappture::Mesh::WritePointCloud { path xv yv zv } {
+    set _type "cloud"
+    set _numPoints [$xv length]
+    append out "DATASET POLYDATA\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    set _vtkdata $out
+    set _limits(x) [$xv limits]
+    if { $_dim > 1 } {
+        set _limits(y) [$yv limits]
+    } else {
+        set _limits(y) [list 0 0]
+    }
+    if { $_dim == 3 } {
+        set _limits(z) [$zv limits]
+    } else {
+        set _limits(z) [list 0 0]
+    }
+    return 1
+}
+
+itcl::body Rappture::Mesh::WriteTriangles { path xv yv zv triangles } {
+    set _type "triangles"
+    set _numPoints [$xv length]
+    set _numCells 0
+    set data {}
+    set celltypes {}
+    foreach { a b c } $triangles {
+        append data "3 $a $b $c\n"
+        append celltypes "5\n"
+        incr _numCells
+    }
+    append out "DATASET UNSTRUCTURED_GRID\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    set count [expr $_numCells * 4]
+    append out "CELLS $_numCells $count\n"
+    append out $data
+    append out "CELL_TYPES $_numCells\n"
+    append out $celltypes
+    set _limits(x) [$xv limits]
+    set _limits(y) [$yv limits]
+    if { $_dim == 3 } {
+        set _limits(z) [$zv limits]
+    } else {
+        set _limits(z) [list 0 0]
+    }
+    set _vtkdata $out
+    return 1
+}
+
+itcl::body Rappture::Mesh::WriteQuads { path xv yv zv quads } {
+    set _type "quads"
+    set _numPoints [$xv length]
+    set _numCells 0
+    set data {}
+    set celltypes {}
+    foreach { a b c d } $quads {
+        append data "4 $a $b $c $d\n"
+        append celltypes "9\n"
+        incr _numCells
+    }
+    append out "DATASET UNSTRUCTURED_GRID\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    set count [expr $_numCells * 5]
+    append out "CELLS $_numCells $count\n"
+    append out $data
+    append out "CELL_TYPES $_numCells\n"
+    append out $celltypes
+    set _limits(x) [$xv limits]
+    set _limits(y) [$yv limits]
+    if { $_dim == 3 } {
+        set _limits(z) [$zv limits]
+    } else {
+        set _limits(z) [list 0 0]
+    }
+    set _vtkdata $out
+    return 1
+}
+
+itcl::body Rappture::Mesh::WriteVertices { path xv yv zv vertices } {
+    set _type "vertices"
+    set _numPoints [$xv length]
+    set _numCells 0
+    set data {}
+    set lines [split $vertices \n]
+    set count 0
+    foreach { line } $lines {
+        set numIndices [llength $line]
+        if { $numIndices == 0 } {
+            continue
+        }
+        append data "$numIndices $line\n"
+        incr _numCells
+        set count [expr $count + $numIndices + 1]
+    }
+    append out "DATASET POLYDATA\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    append out "VERTICES $_numCells $count\n"
+    append out $data
+    set _limits(x) [$xv limits]
+    set _limits(y) [$yv limits]
+    if { $_dim == 3 } {
+        set _limits(z) [$zv limits]
+    } else {
+        set _limits(z) [list 0 0]
+    }
+    set _vtkdata $out
+    return 1
+}
+
+itcl::body Rappture::Mesh::WriteLines { path xv yv zv polylines } {
+    set _type "lines"
+    set _numPoints [$xv length]
+    set _numCells 0
+    set data {}
+    set lines [split $polylines \n]
+    set count 0
+    foreach { line } $lines {
+        set numIndices [llength $line]
+        if { $numIndices == 0 } {
+            continue
+        }
+        append data "$numIndices $line\n"
+        incr _numCells
+        set count [expr $count + $numIndices + 1]
+    }
+    append out "DATASET POLYDATA\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    append out "LINES $_numCells $count\n"
+    append out $data
+    set _limits(x) [$xv limits]
+    set _limits(y) [$yv limits]
+    if { $_dim == 3 } {
+        set _limits(z) [$zv limits]
+    } else {
+        set _limits(z) [list 0 0]
+    }
+    set _vtkdata $out
+    return 1
+}
+
+itcl::body Rappture::Mesh::WritePolygons { path xv yv zv polygons } {
+    set _type "polygons"
+    set _numPoints [$xv length]
+    set _numCells 0
+    set data {}
+    set lines [split $polygons \n]
+    set count 0
+    foreach { line } $lines {
+        set numIndices [llength $line]
+        if { $numIndices == 0 } {
+            continue
+        }
+        append data "$numIndices $line\n"
+        incr _numCells
+        set count [expr $count + $numIndices + 1]
+    }
+    append out "DATASET POLYDATA\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    append out "POLYGONS $_numCells $count\n"
+    append out $data
+    set _limits(x) [$xv limits]
+    set _limits(y) [$yv limits]
+    if { $_dim == 3 } {
+        set _limits(z) [$zv limits]
+    } else {
+        set _limits(z) [list 0 0]
+    }
+    set _vtkdata $out
+    return 1
+}
+
+itcl::body Rappture::Mesh::WriteTriangleStrips { path xv yv zv trianglestrips } {
+    set _type "trianglestrips"
+    set _numPoints [$xv length]
+    set _numCells 0
+    set data {}
+    set lines [split $trianglestrips \n]
+    set count 0
+    foreach { line } $lines {
+        set numIndices [llength $line]
+        if { $numIndices == 0 } {
+            continue
+        }
+        append data "$numIndices $line\n"
+        incr _numCells
+        set count [expr $count + $numIndices + 1]
+    }
+    append out "DATASET POLYDATA\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    append out "TRIANGLE_STRIPS $_numCells $count\n"
+    append out $data
+    set _limits(x) [$xv limits]
+    set _limits(y) [$yv limits]
+    if { $_dim == 3 } {
+        set _limits(z) [$zv limits]
+    } else {
+        set _limits(z) [list 0 0]
+    }
+    set _vtkdata $out
+    return 1
+}
+
+itcl::body Rappture::Mesh::WriteTetrahedrons { path xv yv zv tetras } {
+    set _type "tetrahedrons"
+    set _numPoints [$xv length]
+    set _numCells 0
+    set data {}
+    set celltypes {}
+    foreach { a b c d } $tetras {
+        append data "4 $a $b $c $d\n"
+        append celltypes "10\n"
+        incr _numCells
+    }
+    append out "DATASET UNSTRUCTURED_GRID\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    set count [expr $_numCells * 5]
+    append out "CELLS $_numCells $count\n"
+    append out $data
+    append out "CELL_TYPES $_numCells\n"
+    append out $celltypes
+    set _limits(x) [$xv limits]
+    set _limits(y) [$yv limits]
+    set _limits(z) [$zv limits]
+
+    set _vtkdata $out
+    return 1
+}
+
+itcl::body Rappture::Mesh::WriteHexahedrons { path xv yv zv hexas } {
+    set _type "hexahedrons"
+    set _numPoints [$xv length]
+    set _numCells 0
+    set data {}
+    set celltypes {}
+    foreach { a b c d e f g h } $hexas {
+        append data "8 $a $b $c $d $e $f $g $h\n"
+        append celltypes "12\n"
+        incr _numCells
+    }
+    append out "DATASET UNSTRUCTURED_GRID\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    set count [expr $_numCells * 9]
+    append out "CELLS $_numCells $count\n"
+    append out $data
+    append out "CELL_TYPES $_numCells\n"
+    append out $celltypes
+    set _limits(x) [$xv limits]
+    set _limits(y) [$yv limits]
+    set _limits(z) [$zv limits]
+
+    set _vtkdata $out
+    return 1
+}
+
+itcl::body Rappture::Mesh::WriteWedges { path xv yv zv wedges } {
+    set _type "wedges"
+    set _numPoints [$xv length]
+    set _numCells 0
+    set data {}
+    set celltypes {}
+    foreach { a b c d e f } $wedges {
+        append data "6 $a $b $c $d $e $f\n"
+        append celltypes "13\n"
+        incr _numCells
+    }
+    append out "DATASET UNSTRUCTURED_GRID\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    set count [expr $_numCells * 7]
+    append out "CELLS $_numCells $count\n"
+    append out $data
+    append out "CELL_TYPES $_numCells\n"
+    append out $celltypes
+    set _limits(x) [$xv limits]
+    set _limits(y) [$yv limits]
+    set _limits(z) [$zv limits]
+
+    set _vtkdata $out
+    return 1
+}
+
+itcl::body Rappture::Mesh::WritePyramids { path xv yv zv pyramids } {
+    set _type "pyramids"
+    set _numPoints [$xv length]
+    set _numCells 0
+    set data {}
+    set celltypes {}
+    foreach { a b c d e } $pyramids {
+        append data "5 $a $b $c $d $e\n"
+        append celltypes "14\n"
+        incr _numCells
+    }
+    append out "DATASET UNSTRUCTURED_GRID\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    set count [expr $_numCells * 6]
+    append out "CELLS $_numCells $count\n"
+    append out $data
+    append out "CELL_TYPES $_numCells\n"
+    append out $celltypes
+    set _limits(x) [$xv limits]
+    set _limits(y) [$yv limits]
+    set _limits(z) [$zv limits]
+
+    set _vtkdata $out
+    return 1
+}
+
+itcl::body Rappture::Mesh::WriteHybridCells { path xv yv zv cells celltypes } {
+    set _type "unstructured"
+    set lines [split $cells \n]
+    set numCellTypes [llength $celltypes]
+    if { $numCellTypes == 1 } {
+        set celltype [GetCellType $celltypes]
+    }
+
+    set _numPoints [$xv length]
+    set data {}
+    set count 0
+    set _numCells 0
+    set celltypesout {}
+    foreach line $lines {
+        set length [llength $line]
+        if { $length == 0 } {
+            continue
+        }
+        if { $numCellTypes > 1 } {
+            set celltype [GetCellType [lindex $celltypes $_numCells]]
+        }
+        set numIndices [GetNumIndices $celltype]
+        if { $numIndices > 0 && $numIndices != $length } {
+            puts stderr "WARNING: bad unstructured grid \"$path\": wrong \# of indices specified for celltype $celltype on line \"$line\""
+            return 0
+        } else {
+            set numIndices $length
+        }
+        append data "$numIndices $line\n"
+        append celltypesout "$celltype\n"
+        incr count $length;         # Include the indices
+        incr count;                 # and the number of indices
+        incr _numCells
+    }
+    append out "DATASET UNSTRUCTURED_GRID\n"
+    append out "POINTS $_numPoints double\n"
+    foreach x [$xv range 0 end] y [$yv range 0 end] z [$zv range 0 end] {
+        append out "$x $y $z\n"
+    }
+    append out "CELLS $_numCells $count\n"
+    append out $data
+    append out "CELL_TYPES $_numCells\n"
+    append out $celltypesout
+    set _limits(x) [$xv limits]
+    set _limits(y) [$yv limits]
+    if { $_dim < 3 } {
+        set _limits(z) [list 0 0]
+    } else {
+        set _limits(z) [$zv limits]
+    }
+
+    set _vtkdata $out
+    return 1
+}
+
+itcl::body Rappture::Mesh::ReadUnstructuredGrid { path } {
+    set _type "unstructured"
+
+    if { ![GetDimension $path] } {
+        return 0
+    }
+    # Step 1: Verify that there's only one cell tag of any kind.
+    set numCells 0
+    foreach type {
+        cells
+        hexahedrons
+        lines
+        polygons
+        pyramids
+        quads
+        tetrahedrons
+        triangles
+        trianglestrips
+        vertices
+        wedges
+    } {
+        set data [$_xmlobj get $path.unstructured.$type]
+        if { $data != "" } {
+            incr numCells
+        }
+    }
+    # The generic <cells> tag requires there be a <celltypes> tag too.
+    set celltypes [$_xmlobj get $path.unstructured.celltypes]
+    if { $numCells == 0 && $celltypes != "" } {
+        puts stderr "WARNING: bad unstuctured grid \"$path\": no <cells> description found."
+        return 0
+    }
+    if { $numCells > 1 } {
+        puts stderr "WARNING: bad unstructured grid \"$path\": too many <cells>, <triangles>, <quads>... descriptions found: should be only one."
+        return 0
+    }
+    foreach type {
+        cells
+        hexahedrons
+        lines
+        polygons
+        pyramids
+        quads
+        tetrahedrons
+        triangles
+        trianglestrips
+        vertices
+        wedges
+    } {
+        set data [$_xmlobj get $path.unstructured.$type]
+        if { $data != "" } {
+            break
+        }
+    }
+    # Step 2: Allow points to be specified as <points> or
+    #         <xcoords>, <ycoords>, <zcoords>.  Split and convert into
+    #         3 vectors, one for each coordinate.
+    if { $_dim == 1 } {
+        set xcoords [$_xmlobj get $path.unstructured.xcoords]
+        set ycoords [$_xmlobj get $path.unstructured.ycoords]
+        set zcoords [$_xmlobj get $path.unstructured.zcoords]
+        set data    [$_xmlobj get $path.unstructured.points]
+        if { $ycoords != "" } {
+            put stderr "can't specify <ycoords> with a 1D mesh"
+            return 0
+        }
+        if { $zcoords != "" } {
+            put stderr "can't specify <zcoords> with a 1D mesh"
+            return 0
+        }
+        if { $xcoords != "" } {
+            set xv [blt::vector create \#auto]
+            $xv set $xcoords
+        } elseif { $data != "" } {
+            Rappture::ReadPoints $data dim points
+            if { $points == "" } {
+                puts stderr "WARNING: bad unstructured grid \"$path\": no <points> found."
+                return 0
+            }
+            if { $dim != 1 } {
+                puts stderr "WARNING: bad unstructured grid \"$path\": \# of coordinates per point is \"$dim\": does not agree with dimension specified for mesh \"$_dim\""
+                return 0
+            }
+            set xv [blt::vector create \#auto]
+            $xv set $points
+        } else {
+            puts stderr "WARNING: bad unstructured grid \"$path\": no points specified."
+            return 0
+        }
+        set yv [blt::vector create \#auto]
+        set zv [blt::vector create \#auto]
+        $yv seq 0 0 [$xv length];       # Make an all zeroes vector.
+        $zv seq 0 0 [$xv length];       # Make an all zeroes vector.
+    } elseif { $_dim == 2 } {
+        set xcoords [$_xmlobj get $path.unstructured.xcoords]
+        set ycoords [$_xmlobj get $path.unstructured.ycoords]
+        set zcoords [$_xmlobj get $path.unstructured.zcoords]
+        set data    [$_xmlobj get $path.unstructured.points]
+        if { $zcoords != "" } {
+            put stderr "can't specify <zcoords> with a 2D mesh"
+            return 0
+        }
+        if { $xcoords != "" && $ycoords != "" } {
+            set xv [blt::vector create \#auto]
+            set yv [blt::vector create \#auto]
+            $xv set $xcoords
+            $yv set $ycoords
+        } elseif { $data != "" } {
+            Rappture::ReadPoints $data dim points
+            if { $points == "" } {
+                puts stderr "WARNING: bad unstructured grid \"$path\": no <points> found."
+                return 0
+            }
+            if { $dim != 2 } {
+                puts stderr "WARNING: bad unstructured grid \"$path\": \# of coordinates per point is \"$dim\": does not agree with dimension specified for mesh \"$_dim\""
+                return 0
+            }
+            set all [blt::vector create \#auto]
+            set xv [blt::vector create \#auto]
+            set yv [blt::vector create \#auto]
+            $all set $points
+            $all split $xv $yv
+            blt::vector destroy $all
+        } else {
+            puts stderr "WARNING: bad unstructured grid \"$path\": no points specified."
+            return 0
+        }
+        set zv [blt::vector create \#auto]
+        $zv seq 0 0 [$xv length];       # Make an all zeroes vector.
+    } elseif { $_dim == 3 } {
+        set xcoords [$_xmlobj get $path.unstructured.xcoords]
+        set ycoords [$_xmlobj get $path.unstructured.ycoords]
+        set zcoords [$_xmlobj get $path.unstructured.zcoords]
+        set data    [$_xmlobj get $path.unstructured.points]
+        if { $xcoords != "" && $ycoords != "" && $zcoords != "" } {
+            set xv [blt::vector create \#auto]
+            set yv [blt::vector create \#auto]
+            set zv [blt::vector create \#auto]
+            $xv set $xcoords
+            $yv set $ycoords
+            $zv set $zcoords
+        } elseif { $data != "" }  {
+            Rappture::ReadPoints $data dim points
+            if { $points == "" } {
+                puts stderr "WARNING: bad unstructured grid \"$path\": no <points> found."
+                return 0
+            }
+            if { $dim != 3 } {
+                puts stderr "WARNING: bad unstructured grid \"$path\": \# of coordinates per point is \"$dim\": does not agree with dimension specified for mesh \"$_dim\""
+                return 0
+            }
+            set all [blt::vector create \#auto]
+            set xv [blt::vector create \#auto]
+            set yv [blt::vector create \#auto]
+            set zv [blt::vector create \#auto]
+            $all set $points
+            $all split $xv $yv $zv
+            blt::vector destroy $all
+        } else {
+            puts stderr "WARNING: bad unstructured grid \"$path\": no points specified."
+            return 0
+        }
+    }
+    set _numPoints [$xv length]
+
+    # Step 3: Write the points and cells as vtk data.
+    if { $numCells == 0 } {
+        set result [WritePointCloud $path $xv $yv $zv]
+    } elseif { $type == "cells" } {
+        set cells [$_xmlobj get $path.unstructured.cells]
+        if { $cells == "" } {
+            puts stderr "WARNING: bad unstructured grid \"$path\": no cells found."
+            return 0
+        }
+        set result [WriteHybridCells $path $xv $yv $zv $cells $celltypes]
+    } else {
+        set cmd "Write[string totitle $type]"
+        set cells [$_xmlobj get $path.unstructured.$type]
+        if { $cells == "" } {
+            puts stderr "WARNING: bad unstructured grid \"$path\": no cells found."
+            return 0
+        }
+        set result [$cmd $path $xv $yv $zv $cells]
+    }
+    # Clean up.
+    blt::vector destroy $xv $yv $zv
+    return $result
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReadNodesElements <path>
+#
+# Used internally to build a mesh representation based on nodes and
+# elements stored in the XML.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Mesh::ReadNodesElements {path} {
+    set _type "nodeselements"
+    set count 0
+
+    # Scan for nodes.  Each node represents a vertex.
+    set data {}
+    foreach cname [$_xmlobj children -type node $path] {
+        append data "[$_xmlobj get $path.$cname]\n"
+    }
+    Rappture::ReadPoints $data _dim points
+    if { $_dim == 2 } {
+        set all [blt::vector create \#auto]
+        set xv [blt::vector create \#auto]
+        set yv [blt::vector create \#auto]
+        set zv [blt::vector create \#auto]
+        $all set $points
+        $all split $xv $yv
+        set _numPoints [$xv length]
+        set _limits(x) [$xv limits]
+        set _limits(y) [$yv limits]
+        set _limits(z) [list 0 0]
+        # 2D Dataset. All Z coordinates are 0
+        $zv seq 0.0 0.0 $_numPoints
+        $all merge $xv $yv $zv
+        set points [$all range 0 end]
+        blt::vector destroy $all $xv $yv $zv
+    } elseif { $_dim == 3 } {
+        set all [blt::vector create \#auto]
+        set xv [blt::vector create \#auto]
+        set yv [blt::vector create \#auto]
+        set zv [blt::vector create \#auto]
+        $all set $points
+        $all split $xv $yv $zv
+        set _numPoints [$xv length]
+        set _limits(x) [$xv limits]
+        set _limits(y) [$yv limits]
+        set _limits(z) [$zv limits]
+        set points [$all range 0 end]
+        blt::vector destroy $all $xv $yv $zv
+    } else {
+        error "bad dimension \"$_dim\" for nodes mesh"
+    }
+    array set node2celltype {
+        3 5
+        4 10
+        8 12
+        6 13
+        5 14
+    }
+    set count 0
+    set _numCells 0
+    set celltypes {}
+    set data {}
+    # Next scan for elements.  Each element represents a cell.
+    foreach cname [$_xmlobj children -type element $path] {
+        set nodeList [$_mesh get $cname.nodes]
+        set numNodes [llength $nodeList]
+        if { ![info exists node2celltype($numNodes)] } {
+            puts stderr "WARNING: bad nodes/elements mesh \$path\": unknown number of indices \"$_numNodes\": should be 3, 4, 5, 6, or 8"
+            return 0
+        }
+        set celltype $node2celltype($numNodes)
+        append celltypes "$celltype\n"
+        if { $celltype == 12 } {
+            # Formerly used voxels instead of hexahedrons. We're converting
+            # it here to be backward compatible and still fault-tolerant of
+            # non-axis aligned cells.
+            set newList {}
+            foreach i { 0 1 3 2 4 5 7 6 } {
+                lappend newList [lindex $nodeList $i]
+            }
+            set nodeList $newList
+        }
+        append data "$numNodes $nodeList\n"
+        incr _numCells
+        incr count $numNodes
+        incr count;                        # One extra for the VTK celltype id.
+    }
+
+    append out "DATASET UNSTRUCTURED_GRID\n"
+    append out "POINTS $_numPoints double\n"
+    append out $points
+    append out "\n"
+    append out "CELLS $_numCells $count\n"
+    append out $data
+    append out "CELL_TYPES $_numCells\n"
+    append out $celltypes
+    set _vtkdata $out
+    set _isValid 1
+}
+
+itcl::body Rappture::Mesh::GetCellType { name } {
+    array set name2type {
+        "vertex"          1
+        "polyvertex"      2
+        "line"            3
+        "polyline"        4
+        "triangle"        5
+        "trianglestrip"   6
+        "polygon"         7
+        "pixel"           8
+        "quad"            9
+        "tetrahedron"     10
+        "voxel"           11
+        "hexahedron"      12
+        "wedge"           13
+        "pyramid"         14
+        "pentagonalprism" 15
+        "hexagonalprism"  16
+    }
+    if { [info exists name2type($name)] } {
+        return $name2type($name)
+    }
+    if { [string is int $name] == 1 && $name >= 1 && $name <= 16 } {
+        return $name
+    }
+    error "invalid celltype \"$name\""
+}
+
+itcl::body Rappture::Mesh::GetNumIndices { type } {
+    array set type2indices {
+        1       1
+        2       0
+        3       2
+        4       0
+        5       3
+        6       0
+        7       0
+        8       4
+        9       4
+        10      4
+        11      8
+        12      8
+        13      6
+        14      5
+        15      10
+        16      12
+    }
+    if { [info exists type2indices($type)] } {
+        return $type2indices($type)
+    }
+    error "invalid celltype \"$type\""
+}
Index: /tags/1.6.0/gui/scripts/meshresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/meshresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/meshresult.tcl	(revision 6168)
@@ -0,0 +1,514 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: meshresult - mesh plot in a ResultSet
+#
+#  This widget is a mesh plot, meant to view grid structures produced
+#  as output from the run of a Rappture tool.  Use the "add" and
+#  "delete" methods to control the meshes showing on the plot.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *MeshResult.width 4i widgetDefault
+option add *MeshResult.height 4i widgetDefault
+option add *MeshResult.gridColor #d9d9d9 widgetDefault
+option add *MeshResult.regionColors {green yellow orange red magenta} widgetDefault
+option add *MeshResult.controlBackground gray widgetDefault
+option add *MeshResult.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::MeshResult {
+    inherit itk::Widget
+
+    itk_option define -gridcolor gridColor GridColor ""
+    itk_option define -regioncolors regionColors RegionColors ""
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method parameters {title args} { # do nothing }
+    public method download {option args}
+
+    protected method _rebuild {}
+    protected method _fixLimits {}
+    protected method _zoom {option args}
+    protected method _hilite {state x y}
+
+    private variable _dlist ""     ;# list of dataobj objects
+    private variable _dobj2color   ;# maps dataobj => plotting color
+    private variable _dobj2width   ;# maps dataobj => line width
+    private variable _dobj2dashes  ;# maps dataobj => BLT -dashes list
+    private variable _dobj2raise   ;# maps dataobj => raise flag 0/1
+    private variable _mrkr2tip     ;# maps graph element => tooltip
+    private variable _xmin ""      ;# autoscale min for x-axis
+    private variable _xmax ""      ;# autoscale max for x-axis
+    private variable _ymin ""      ;# autoscale min for y-axis
+    private variable _ymax ""      ;# autoscale max for y-axis
+}
+
+itk::usual MeshResult {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::MeshResult::constructor {args} {
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    itk_component add controls {
+        frame $itk_interior.cntls
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+    pack $itk_component(controls) -side right -fill y
+
+    itk_component add reset {
+        button $itk_component(controls).reset \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -bitmap [Rappture::icon reset] \
+            -command [itcl::code $this _zoom reset]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground Background
+    }
+    pack $itk_component(reset) -padx 4 -pady 4
+    Rappture::Tooltip::for $itk_component(reset) "Reset the view to the default zoom level"
+
+    itk_component add plot {
+        blt::graph $itk_interior.plot \
+            -highlightthickness 0 -plotpadx 0 -plotpady 0 \
+            -rightmargin 10 -invertxy 1
+    } {
+        keep -background -foreground -cursor -font
+    }
+    pack $itk_component(plot) -expand yes -fill both
+
+    # special pen for highlighting active traces
+    $itk_component(plot) marker bind all <Enter> \
+        [itcl::code $this _hilite on %x %y]
+    $itk_component(plot) marker bind all <Leave> \
+        [itcl::code $this _hilite off %x %y]
+
+    bind $itk_component(plot) <Leave> \
+        [list Rappture::Tooltip::tooltip cancel]
+
+    Blt_ZoomStack $itk_component(plot)
+    $itk_component(plot) legend configure -hide yes
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::MeshResult::destructor {} {
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a dataobj to the plot.  The optional <settings>
+# are used to configure the plot.  Allowed settings are -color,
+# -brightness, -width, -linestyle and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MeshResult::add {dataobj {settings ""}} {
+    array set params {
+        -color auto
+        -brightness 0
+        -width 1
+        -raise 0
+        -linestyle solid
+        -description ""
+        -param ""
+    }
+    array set params $settings
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) black
+    }
+
+    # convert -linestyle to BLT -dashes
+    switch -- $params(-linestyle) {
+        dashed { set params(-linestyle) {4 4} }
+        dotted { set params(-linestyle) {2 4} }
+        default { set params(-linestyle) {} }
+    }
+
+    # if -brightness is set, then update the color
+    if {$params(-brightness) != 0} {
+        set params(-color) [Rappture::color::brightness \
+            $params(-color) $params(-brightness)]
+    }
+
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+        set _dobj2color($dataobj) $params(-color)
+        set _dobj2width($dataobj) $params(-width)
+        set _dobj2dashes($dataobj) $params(-linestyle)
+        #set _dobj2raise($dataobj) $params(-raise)
+        set _dobj2raise($dataobj) 0
+
+        after cancel [itcl::code $this _rebuild]
+        after idle [itcl::code $this _rebuild]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MeshResult::get {} {
+    # put the dataobj list in order according to -raise options
+    set dlist $_dlist
+    foreach obj $dlist {
+        if {[info exists _dobj2raise($obj)] && $_dobj2raise($obj)} {
+            set i [lsearch -exact $dlist $obj]
+            if {$i >= 0} {
+                set dlist [lreplace $dlist $i $i]
+                lappend dlist $obj
+            }
+        }
+    }
+    return $dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj> <dataobj> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MeshResult::delete {args} {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+
+    # delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if {$pos >= 0} {
+            set _dlist [lreplace $_dlist $pos $pos]
+            catch {unset _dobj2color($dataobj)}
+            catch {unset _dobj2width($dataobj)}
+            catch {unset _dobj2dashes($dataobj)}
+            catch {unset _dobj2raise($dataobj)}
+            set changed 1
+        }
+    }
+
+    # if anything changed, then rebuild the plot
+    if {$changed} {
+        after cancel [itcl::code $this _rebuild]
+        after idle [itcl::code $this _rebuild]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<dataobj1> <dataobj2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <dataobj> objects.  This
+# accounts for all dataobjs--even those not showing on the screen.
+# Because of this, the limits are appropriate for all dataobjs as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MeshResult::scale {args} {
+    set _xmin ""
+    set _xmax ""
+    set _ymin ""
+    set _ymax ""
+    foreach obj $args {
+        foreach axis {x y} {
+            foreach {min max} [$obj limits $axis] break
+            if {"" != $min && "" != $max} {
+                if {"" == [set _${axis}min]} {
+                    set _${axis}min $min
+                    set _${axis}max $max
+                } else {
+                    if {$min < [set _${axis}min]} {
+                        set _${axis}min $min
+                    }
+                    if {$max > [set _${axis}max]} {
+                        set _${axis}max $max
+                    }
+                }
+            }
+        }
+    }
+    _fixLimits
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MeshResult::download {option args} {
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            # no controls for this download yet
+            return ""
+        }
+        now {
+            set psdata [$itk_component(plot) postscript output -maxpect 1]
+
+            set cmds {
+                set fout "mesh[pid].pdf"
+                exec ps2pdf - $fout << $psdata
+
+                set fid [open $fout r]
+                fconfigure $fid -translation binary -encoding binary
+                set pdfdata [read $fid]
+                close $fid
+
+                file delete -force $fout
+            }
+            if {[catch $cmds result] == 0} {
+                return [list .pdf $pdfdata]
+            }
+            return [list .ps $psdata]
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MeshResult::_rebuild {} {
+    set g $itk_component(plot)
+    blt::busy hold [winfo toplevel $g]
+
+    # first clear out the widget
+    eval $g marker delete [$g marker names]
+    $g axis configure x -min "" -max "" -loose yes -checklimits no \
+        -descending yes
+    $g axis configure y -min "" -max "" -loose yes -checklimits no
+
+    # extract axis information from the first dataobj
+    set dlist [get]
+    set xydata [lindex $dlist 0]
+    if {$xydata != ""} {
+        set legend [$xydata hints legend]
+        if {"" != $legend} {
+            if {$legend == "off"} {
+                $g legend configure -hide yes
+            } else {
+                $g legend configure -hide no \
+                    -position plotarea -anchor $legend -borderwidth 0
+            }
+        }
+
+        set xlabel [$xydata hints xlabel]
+        if {"" != $xlabel} {
+            $g xaxis configure -title $xlabel
+        }
+
+        set ylabel [$xydata hints ylabel]
+        if {"" != $ylabel} {
+            $g yaxis configure -title $ylabel
+        }
+    }
+
+    set multiple [expr {[llength $dlist] > 1}]
+    catch {unset _mrkr2tip}
+
+    # plot all of the dataobjs
+    set count 0
+    foreach xydata $dlist {
+        if {$multiple} {
+            if {[info exists _dobj2color($xydata)]} {
+                set color $_dobj2color($xydata)
+            } else {
+                set color [$xydata hints color]
+                if {"" == $color} {
+                    set color black
+                }
+            }
+
+            if {[info exists _dobj2width($xydata)]} {
+                set lwidth $_dobj2width($xydata)
+            } else {
+                set lwidth 2
+            }
+        } else {
+            set color black
+            set lwidth 1
+        }
+
+        if {[info exists _dobj2dashes($xydata)]} {
+            set dashes $_dobj2dashes($xydata)
+        } else {
+            set dashes ""
+        }
+
+        foreach {plist r} [$xydata elements] {
+            if {$count == 0} {
+                if {$r == "unknown"} {
+                    set fill gray
+                } elseif {![info exists colors($r)]} {
+                    set i [array size colors]
+                    set fill [lindex $itk_option(-regioncolors) $i]
+                    set colors($r) $fill
+                } else {
+                    set fill $colors($r)
+                }
+                set mrkr [$g marker create polygon -coords $plist -fill $fill]
+                set _mrkr2tip($mrkr) $r
+            }
+            set mrkr [$g marker create line -coords $plist \
+                -linewidth $lwidth -outline $color -dashes $dashes]
+            set _mrkr2tip($mrkr) $r
+        }
+        incr count
+    }
+
+    _fixLimits
+    blt::busy release [winfo toplevel $g]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixLimits
+#
+# Used internally to apply automatic limits to the axes for the
+# current plot.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MeshResult::_fixLimits {} {
+    set g $itk_component(plot)
+
+    #
+    # HACK ALERT!
+    # Use this code to fix up the y-axis limits for the BLT graph.
+    # The auto-limits don't always work well.  We want them to be
+    # set to a "nice" number slightly above or below the min/max
+    # limits.
+    #
+    if {$_xmin != $_xmax} {
+        $g axis configure x -min $_xmin -max $_xmax
+    } else {
+        $g axis configure x -min "" -max ""
+    }
+
+    if {"" != $_ymin && "" != $_ymax} {
+        set min $_ymin
+        set max $_ymax
+        set log [$g axis cget y -logscale]
+        if {$log} {
+            if {$min == $max} {
+                set min [expr {0.9*$min}]
+                set max [expr {1.1*$max}]
+            }
+            set min [expr {pow(10.0,floor(log10($min)))}]
+            set max [expr {pow(10.0,ceil(log10($max)))}]
+        } else {
+            if {$min > 0} {
+                set min [expr {0.95*$min}]
+            } else {
+                set min [expr {1.05*$min}]
+            }
+            if {$max > 0} {
+                set max [expr {1.05*$max}]
+            } else {
+                set max [expr {0.95*$max}]
+            }
+        }
+        if {$min != $max} {
+            $g axis configure y -min $min -max $max
+        } else {
+            $g axis configure y -min "" -max ""
+        }
+    } else {
+        $g axis configure y -min "" -max ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MeshResult::_zoom {option args} {
+    switch -- $option {
+        reset {
+            _fixLimits
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _hilite <state> <x> <y>
+#
+# Called automatically when the user brushes one of the elements
+# on the plot.  Causes the element to highlight and a tooltip to
+# pop up with element info.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MeshResult::_hilite {state x y} {
+    set mrkr [$itk_component(plot) marker get current]
+    if {$state} {
+        #
+        # Highlight ON:
+        # - pop up tooltip about data
+        #
+        set tip ""
+        if {[info exists _mrkr2tip($mrkr)]} {
+            set tip $_mrkr2tip($mrkr)
+        }
+        if {"" != $tip} {
+            set x [expr {$x+4}]  ;# move the tooltip over a bit
+            set y [expr {$y+4}]
+            Rappture::Tooltip::text $itk_component(plot) $tip
+            Rappture::Tooltip::tooltip show $itk_component(plot) +$x,$y
+        }
+    } else {
+        #
+        # Highlight OFF:
+        # - take down tooltip
+        #
+        Rappture::Tooltip::tooltip cancel
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -gridcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::MeshResult::gridcolor {
+    if {"" == $itk_option(-gridcolor)} {
+        $itk_component(plot) grid off
+    } else {
+        $itk_component(plot) grid configure -color $itk_option(-gridcolor)
+        $itk_component(plot) grid on
+    }
+}
Index: /tags/1.6.0/gui/scripts/molvisviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/molvisviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/molvisviewer.tcl	(revision 6168)
@@ -0,0 +1,2146 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: molvisviewer - view a molecule in 3D
+#
+#  This widget brings up a 3D representation of a molecule
+#  It connects to the Molvis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+package require Img
+
+option add *MolvisViewer.width 4i widgetDefault
+option add *MolvisViewer.height 4i widgetDefault
+option add *MolvisViewer.foreground black widgetDefault
+option add *MolvisViewer.font -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc MolvisViewer_init_resources {} {
+    Rappture::resources::register \
+        molvis_server Rappture::MolvisViewer::SetServerList
+}
+
+itcl::class Rappture::MolvisViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -device device Device ""
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "pymol" $namelist
+    }
+    public method Connect {}
+    public method Disconnect {}
+    public method ResetView {}
+    public method add {dataobj {options ""}}
+    public method delete {args}
+    public method download {option args}
+    public method get {}
+    public method isconnected {}
+    public method labels {option {model "all"}}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method snap { w h }
+
+    protected method Map {}
+    protected method Pan {option x y}
+    protected method Rebuild {}
+    protected method Rotate {option x y}
+    protected method Rotate.old {option x y}
+    protected method SendCmd { string }
+    protected method Unmap {}
+    protected method Vmouse {option b m x y}
+    protected method Zoom {option {factor 10}}
+
+    private method AddImageControls { frame widget }
+    private method BuildSettingsTab {}
+    private method CartoonTrace {option {model "all"}}
+    private method Cell {option}
+    private method ComputeParallelepipedVertices { dataobj }
+    private method DoResize {}
+    private method DoRotate {}
+    private method DoUpdate {}
+    private method EventuallyChangeSettings { args }
+    private method EventuallyResize { w h }
+    private method EventuallyRotate { a b c }
+    private method GetImage { widget }
+    private method Opacity {option}
+    private method OrthoProjection {option}
+    private method ReceiveImage { size cacheid frame rock }
+    private method Representation { {option ""} }
+    private method Rock {option}
+    private method SetWaitVariable { value } {
+        set _getimage $value
+    }
+    private method SphereScale {option {models "all"} }
+    private method StickRadius {option {models "all"} }
+    private method UpdateState { args }
+    private method WaitForResponse {} {
+        tkwait variable [itcl::scope _getimage]
+        return $_getimage
+    }
+    private method WaitIcon { option widget }
+
+    private variable _icon 0
+    private variable _getimage 0
+    private variable _mevent;           # info used for mouse event operations
+    private variable _rocker;           # info used for rock operations
+    private variable _dlist "";         # list of dataobj objects
+    private variable _dataobjs;         # data objects on server
+    private variable _dobj2transparency;# maps dataobj => transparency
+    private variable _dobj2raise;       # maps dataobj => raise flag 0/1
+
+    private variable _active;           # array of active models.
+    private variable _obj2models;       # array containing list of models
+                                        # for each data object.
+    private variable _view
+    private variable _click
+
+    private variable _model
+    private variable _mlist
+    private variable _mrep "ballnstick"
+
+    private variable _imagecache
+    private variable _state
+    private variable _labels "default"
+    private variable _cacheid ""
+    private variable _cacheimage ""
+    private variable _first ""
+
+    private variable _initialized
+
+    private variable _pdbdata;          # PDB data from run file sent to pymol
+    private variable _nextToken 0
+    private variable _resizePending 0;
+    private variable _updatePending 0;
+    private variable _rotatePending 0;
+    private variable _width
+    private variable _height
+    private variable _reset 1;          # Restore camera settings
+    private variable _cell 0;           # Is there a parallelepiped unit cell?
+
+    private common _settings;           # Array of settings for all known
+                                        # widgets
+    private common _downloadPopup;      # Download options from popup
+    private common _hardcopy
+    private common _useVmouseEvents 0;  # Flag to enable virtual mouse events
+}
+
+itk::usual MolvisViewer {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::constructor {args} {
+    set _serverType "pymol"
+
+    #DebugOn
+
+    # Register events to the dispatcher.  Base class expects !rebuild
+    # event to be registered.
+
+    # Rebuild
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Update state event
+    $_dispatcher register !update
+    $_dispatcher dispatch $this !update "[itcl::code $this DoUpdate]; list"
+
+    # Rotate event
+    $_dispatcher register !rotate
+    $_dispatcher dispatch $this !rotate "[itcl::code $this DoRotate]; list"
+
+    # Rocker
+    $_dispatcher register !rocker
+    $_dispatcher dispatch $this !rocker "[itcl::code $this Rock step]; list"
+
+    # Mouse Event
+    $_dispatcher register !mevent
+    $_dispatcher dispatch $this !mevent "[itcl::code $this _mevent]; list"
+
+    $_dispatcher register !pngtimeout
+    $_dispatcher register !waiticon
+
+    array set _downloadPopup {
+        format draft
+    }
+
+    # Populate the slave interpreter with commands to handle responses from
+    # the visualization server.
+    $_parser alias image [itcl::code $this ReceiveImage]
+
+    set _rocker(dir) 1
+    set _rocker(client) 0
+    set _rocker(server) 0
+    set _rocker(on) 0
+    set _state(server) 1
+    set _state(client) 1
+    set _reset 1
+
+    array set _view {
+        theta   45
+        phi     45
+        psi     0
+        vx      0
+        vy      0
+        vz      0
+        mx      0
+        my      0
+        mz      0
+        xpan    0
+        ypan    0
+        zoom    0
+    }
+
+    # Setup default settings for widget.
+    array set _settings [subst {
+        $this-spherescale 0.25
+        $this-stickradius 0.14
+        $this-cartoontrace no
+        $this-model     ballnstick
+        $this-modelimg  [Rappture::icon ballnstick]
+        $this-opacity   1.0
+        $this-ortho     no
+        $this-rock      no
+        $this-showlabels no
+        $this-showcell  yes
+        $this-showlabels-initialized no
+    }]
+
+    itk_component add view {
+        label $itk_component(plotarea).view -image $_image(plot) \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth  -background
+    }
+    bind $itk_component(view) <Control-F1> [itcl::code $this ToggleConsole]
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this ResetView]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -padx 1 -pady 2
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    itk_component add labels {
+        Rappture::PushButton $f.labels \
+            -onimage [Rappture::icon molvis-labels-view] \
+            -offimage [Rappture::icon molvis-labels-view] \
+            -command [itcl::code $this labels update] \
+            -variable [itcl::scope _settings($this-showlabels)]
+    }
+    $itk_component(labels) deselect
+    Rappture::Tooltip::for $itk_component(labels) \
+        "Show/hide the labels on atoms"
+    pack $itk_component(labels) -padx 2 -pady {6 2}
+
+    itk_component add rock {
+        Rappture::PushButton $f.rock \
+            -onimage [Rappture::icon molvis-rock-view] \
+            -offimage [Rappture::icon molvis-rock-view] \
+            -command [itcl::code $this Rock toggle] \
+            -variable [itcl::scope _settings($this-rock)]
+    }
+    pack $itk_component(rock) -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(rock) "Rock model back and forth"
+
+    itk_component add ortho {
+        label $f.ortho -borderwidth 1 -padx 1 -pady 1 \
+            -relief "raised" -image [Rappture::icon molvis-3dpers]
+    }
+    pack $itk_component(ortho) -padx 2 -pady 2 -ipadx 1 -ipady 1
+    Rappture::Tooltip::for $itk_component(ortho) \
+        "Use orthoscopic projection"
+
+    bind $itk_component(ortho) <ButtonPress> \
+        [itcl::code $this OrthoProjection toggle]
+
+    BuildSettingsTab
+
+    # HACK ALERT. Initially force a requested width of the view label.
+
+    # It's a chicken-and-the-egg problem.  The size of the view label is set
+    # from the size of the image retrieved from the server.  But the size of
+    # the image is specified by the viewport which is the size of the label.
+    # The fly-in-the-ointment is that it takes a non-trival amount of time to
+    # get the first image back from the server.  In the meantime the idletasks
+    # have already kicked in.  We end up with a 1x1 viewport and image.
+
+    # So the idea is to force a ridiculously big requested width on the label
+    # (that's why we're using the blt::table to manage the geometry).  It has
+    # to be big, because we don't know how big the user may want to stretch
+    # the window.  This at least forces the sidebarframe to give the view
+    # the maximum size available, which is perfect for an initially closed
+    # sidebar.
+
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth 10000
+    #
+    # RENDERING AREA
+    #
+
+    set _image(id) ""
+
+    if { $_useVmouseEvents } {
+        # set up bindings to bridge mouse events to server
+        bind $itk_component(view) <ButtonPress> \
+            [itcl::code $this Vmouse click %b %s %x %y]
+        bind $itk_component(view) <ButtonRelease> \
+            [itcl::code $this Vmouse release %b %s %x %y]
+        bind $itk_component(view) <B1-Motion> \
+            [itcl::code $this Vmouse drag 1 %s %x %y]
+        bind $itk_component(view) <B2-Motion> \
+            [itcl::code $this Vmouse drag 2 %s %x %y]
+        bind $itk_component(view) <B3-Motion> \
+            [itcl::code $this Vmouse drag 3 %s %x %y]
+        bind $itk_component(view) <Motion> \
+            [itcl::code $this Vmouse move 0 %s %x %y]
+    } else {
+        # set up bindings for rotation with mouse
+        bind $itk_component(view) <ButtonPress-1> \
+            [itcl::code $this Rotate click %x %y]
+        bind $itk_component(view) <B1-Motion> \
+            [itcl::code $this Rotate drag %x %y]
+        bind $itk_component(view) <ButtonRelease-1> \
+            [itcl::code $this Rotate release %x %y]
+
+        # set up bindings for panning with mouse
+        bind $itk_component(view) <ButtonPress-2> \
+            [itcl::code $this Pan click %x %y]
+        bind $itk_component(view) <B2-Motion> \
+            [itcl::code $this Pan drag %x %y]
+        bind $itk_component(view) <ButtonRelease-2> \
+            [itcl::code $this Pan release %x %y]
+
+        # scroll wheel zoom
+        if {[string equal "x11" [tk windowingsystem]]} {
+            bind $itk_component(view) <4> [itcl::code $this Zoom out 2]
+            bind $itk_component(view) <5> [itcl::code $this Zoom in 2]
+        }
+    }
+
+    # Set up bindings for panning with keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -50 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 50 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -50]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 50]
+
+    # Set up bindings for zoom with keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out 2]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in 2]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+
+    bind $itk_component(view) <Configure> \
+        [itcl::code $this EventuallyResize %w %h]
+    bind $itk_component(view) <Unmap> \
+        [itcl::code $this Unmap]
+    bind $itk_component(view) <Map> \
+        [itcl::code $this Map]
+
+    eval itk_initialize $args
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::destructor {} {
+    VisViewer::Disconnect
+
+    image delete $_image(plot)
+    array unset _settings $this-*
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise. Only
+# -brightness and -raise do anything.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::add { dataobj {options ""}} {
+    array set params {
+        -color          auto
+        -brightness     0
+        -width          1
+        -raise          0
+        -linestyle      solid
+        -description    ""
+        -param          ""
+    }
+    array set params $options
+
+    set pos [lsearch -exact $_dlist $dataobj]
+
+    if {$pos < 0} {
+        if {![Rappture::library isvalid $dataobj]} {
+            error "bad value \"$dataobj\": should be Rappture::library object"
+        }
+
+        if { !$_settings($this-showlabels-initialized) } {
+            set showlabels [$dataobj get components.molecule.about.emblems]
+            if { $showlabels != "" && [string is boolean $showlabels] } {
+                set _settings($this-showlabels) $showlabels
+            }
+        }
+
+        lappend _dlist $dataobj
+        if { $params(-brightness) >= 0.5 } {
+            set _dobj2transparency($dataobj) "ghost"
+        } else {
+            set _dobj2transparency($dataobj) "normal"
+        }
+        set _dobj2raise($dataobj) $params(-raise)
+        DebugTrace "setting parameters for $dataobj"
+
+        if { [isconnected] } {
+            $_dispatcher event -idle !rebuild
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj> <dataobj> ...?
+#
+# Clients use this to delete a dataobj from the plot. If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::delete { args } {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+
+    # delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if {$pos >= 0} {
+            set _dlist [lreplace $_dlist $pos $pos]
+            if { [info exists _obj2models($dataobj)] } {
+                foreach model $_obj2models($dataobj) {
+                    array unset _active $model
+                }
+            }
+            array unset _obj2models $dataobj
+            array unset _dobj2transparency $dataobj
+            array unset _dobj2color $dataobj
+            array unset _dobj2width $dataobj
+            array unset _dobj2dashes $dataobj
+            array unset _dobj2raise $dataobj
+            set changed 1
+        }
+    }
+
+    # if anything changed, then rebuild the plot
+    if {$changed} {
+        if { [isconnected] } {
+            $_dispatcher event -idle !rebuild
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::get {} {
+    # put the dataobj list in order according to -raise options
+    set dlist $_dlist
+    foreach obj $dlist {
+        if {[info exists _dobj2raise($obj)] && $_dobj2raise($obj)} {
+            set i [lsearch -exact $dlist $obj]
+            if {$i >= 0} {
+                set dlist [lreplace $dlist $i $i]
+                lappend dlist $obj
+            }
+        }
+    }
+    return $dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::download {option args} {
+    switch $option {
+        coming {}
+        controls {
+            set popup .molvisviewerdownload
+            if {![winfo exists $popup]} {
+                # if we haven't created the popup yet, do it now
+                Rappture::Balloon $popup \
+                    -title "[Rappture::filexfer::label downloadWord] as..."
+                set inner [$popup component inner]
+                label $inner.summary -text "" -anchor w
+                radiobutton $inner.pdb \
+                    -text "PDB Protein Data Bank Format File" \
+                    -variable [itcl::scope _downloadPopup(format)] \
+                    -font "Arial 10 " \
+                    -value pdb
+                Rappture::Tooltip::for $inner.pdb \
+                    "Save as PDB Protein Data Bank format file."
+                radiobutton $inner.image -text "Image (PNG/JPEG/GIF)" \
+                    -variable [itcl::scope _downloadPopup(format)] \
+                    -font "Arial 10 " \
+                    -value image
+                Rappture::Tooltip::for $inner.image \
+                    "Save as image."
+                set f [frame $inner.frame]
+                button $f.ok -text "Save" \
+                    -highlightthickness 0 -pady 3 -padx 3 \
+                    -command [lindex $args 0] \
+                    -compound left \
+                    -image [Rappture::icon download]
+                button $f.cancel -text "Cancel" \
+                    -highlightthickness 0 -pady 3 -padx 3 \
+                    -command [list $popup deactivate] \
+                    -compound left \
+                    -image [Rappture::icon cancel]
+                blt::table $f \
+                    0,0 $f.ok \
+                    0,1 $f.cancel
+                blt::table $inner \
+                    0,0 $inner.summary -anchor w \
+                    1,0 $inner.pdb -anchor w \
+                    2,0 $inner.image -anchor w \
+                    3,0 $f -fill x -pady 4
+                $inner.pdb select
+            } else {
+                set inner [$popup component inner]
+            }
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks ;          # Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .molvisviewerdownload
+            if {[winfo exists $popup]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "pdb" {
+                    return [list .pdb $_pdbdata]
+                }
+                "image" {
+                    set popup .molvisviewerimage
+                    if { ![winfo exists $popup] } {
+                        # Create the balloon popup and and the print image
+                        # dialog widget to it.
+                        Rappture::Balloon $popup -title "Save as image..." \
+                            -deactivatecommand \
+                            [itcl::code $this SetWaitVariable 0]
+                        set inner [$popup component inner]
+                        # Add image controls to the ballon popup
+                        AddImageControls $inner [lindex $args 0]
+                    } else {
+                        set inner [$popup component inner]
+                    }
+                    update
+                    # Activate the popup and call for the output.
+                    foreach { widget toolName plotName } $args break
+                    SetWaitVariable 0
+                    $popup activate $widget left
+                    set bool [WaitForResponse]
+                    $popup deactivate
+                    if { $bool } {
+                        return [GetImage $widget]
+                    }
+                    return ""
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+#
+# isconnected --
+#
+#       Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::MolvisViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# Connect --
+#
+#       Establishes a connection to a new visualization server.
+#
+itcl::body Rappture::MolvisViewer::Connect {} {
+    global readyForNextFrame
+    set readyForNextFrame 1
+    if { [isconnected] } {
+        return 1
+    }
+    set hosts [GetServerList "pymol"]
+    if { "" == $hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "molvisviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+
+        $_dispatcher event -idle !rebuild
+    }
+    return $result
+}
+
+#
+# Disconnect --
+#
+#       Clients use this method to disconnect from the current rendering
+#       server.
+#
+itcl::body Rappture::MolvisViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    # disconnected -- no more data sitting on server
+    catch { after cancel $_rocker(afterid) }
+    catch { after cancel $_mevent(afterid) }
+    array unset _dataobjs
+    array unset _model
+    array unset _mlist
+    array unset _imagecache
+
+    set _state(server) 1
+    set _state(client) 1
+    global readyForNextFrame
+    set readyForNextFrame 1
+    set _reset 1
+}
+
+itcl::body Rappture::MolvisViewer::SendCmd { cmd } {
+    DebugTrace "cmd: ($cmd)"
+
+    if { $_state(server) != $_state(client) } {
+        VisViewer::SendCmd "frame -defer $_state(client)"
+        set _state(server) $_state(client)
+    }
+    if { $_rocker(server) != $_rocker(client) } {
+        VisViewer::SendCmd "rock -defer $_rocker(client)"
+        set _rocker(server) $_rocker(client)
+    }
+    VisViewer::SendCmd "$cmd"
+}
+
+#
+# ReceiveImage -bytes <size>
+#
+#     Invoked automatically whenever the "image" command comes in from
+#     the rendering server.  Indicates that binary image data with the
+#     specified <size> will follow.
+#
+set count 0
+itcl::body Rappture::MolvisViewer::ReceiveImage { size cacheid frame rock } {
+    global readyForNextFrame
+    set readyForNextFrame 1
+    set tag "$frame,$rock"
+    global count
+    incr count
+    if { $cacheid != $_cacheid } {
+        array unset _imagecache
+        set _cacheid $cacheid
+    }
+    set data [ReceiveBytes $size]
+    #DebugTrace "success: reading $size bytes from proxy"
+    if { [string match "print*" $cacheid] } {
+        # $frame is the token that we sent to the proxy.
+        set _hardcopy($this-$cacheid) $data
+        puts stderr "setting _hardcopy($this-$cacheid)"
+    } else {
+        set _imagecache($tag) $data
+        #DebugTrace "CACHED: $tag,$cacheid"
+        $_image(plot) configure -data $data
+        set _image(id) $tag
+    }
+}
+
+itcl::body Rappture::MolvisViewer::BuildSettingsTab {} {
+    set fg [option get $itk_component(hull) font Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Settings" \
+        -icon [Rappture::icon wrench]]
+    $inner configure -borderwidth 4
+
+    label $inner.pict -image $_settings($this-modelimg)
+
+    label $inner.rep_l -text "Molecule Representation" \
+        -font "Arial 9"
+
+    itk_component add representation {
+        Rappture::Combobox $inner.rep -width 20 -editable no
+    }
+    $inner.rep choices insert end \
+        "ballnstick"  "ball and stick" \
+        "spheres"     "spheres"         \
+        "sticks"      "sticks"          \
+        "lines"       "lines"           \
+        "cartoon"     "cartoon"
+
+    bind $inner.rep <<Value>> [itcl::code $this Representation]
+    $inner.rep value "ball and stick"
+
+    scale $inner.spherescale -width 10 -font "Arial 9" \
+        -from 0.1 -to 2.0 -resolution 0.05 -label "Sphere Scale" \
+        -showvalue true -orient horizontal \
+        -command [itcl::code $this EventuallyChangeSettings] \
+        -variable Rappture::MolvisViewer::_settings($this-spherescale)
+    $inner.spherescale set $_settings($this-spherescale)
+    Rappture::Tooltip::for $inner.spherescale \
+        "Adjust scale of atoms (spheres or balls). 1.0 is the full VDW radius."
+
+    scale $inner.stickradius -width 10 -font "Arial 9" \
+        -from 0.1 -to 1.0 -resolution 0.025 -label "Stick Radius" \
+        -showvalue true -orient horizontal \
+        -command [itcl::code $this EventuallyChangeSettings] \
+        -variable Rappture::MolvisViewer::_settings($this-stickradius)
+    Rappture::Tooltip::for $inner.stickradius \
+        "Adjust scale of bonds (sticks)."
+    $inner.stickradius set $_settings($this-stickradius)
+
+    checkbutton $inner.labels -text "Show labels on atoms" \
+        -command [itcl::code $this labels update] \
+        -variable [itcl::scope _settings($this-showlabels)] \
+        -font "Arial 9"
+    Rappture::Tooltip::for $inner.labels \
+        "Display atom symbol and serial number."
+
+    checkbutton $inner.rock -text "Rock model back and forth" \
+        -command [itcl::code $this Rock toggle] \
+        -variable Rappture::MolvisViewer::_settings($this-rock) \
+        -font "Arial 9"
+    Rappture::Tooltip::for $inner.rock \
+        "Rotate the object back and forth around the y-axis."
+
+    checkbutton $inner.ortho -text "Orthoscopic projection" \
+        -command [itcl::code $this OrthoProjection update] \
+        -variable Rappture::MolvisViewer::_settings($this-ortho) \
+         -font "Arial 9"
+    Rappture::Tooltip::for $inner.ortho \
+        "Toggle between orthoscopic/perspective projection modes."
+
+    checkbutton $inner.cartoontrace -text "Cartoon Trace" \
+        -command [itcl::code $this CartoonTrace update] \
+        -variable [itcl::scope _settings($this-cartoontrace)] \
+        -font "Arial 9"
+    Rappture::Tooltip::for $inner.cartoontrace \
+        "Set cartoon representation of bonds (sticks)."
+
+    checkbutton $inner.cell -text "Parallelepiped" \
+        -command [itcl::code $this Cell toggle] \
+        -font "Arial 9"
+    $inner.cell select
+
+    label $inner.spacer
+    blt::table $inner \
+        0,0 $inner.labels -anchor w -pady {1 0} \
+        1,0 $inner.rock -anchor w -pady {1 0} \
+        2,0 $inner.ortho -anchor w -pady {1 0} \
+        3,0 $inner.cartoontrace -anchor w -pady {1 0} \
+        4,0 $inner.cell -anchor w  -pady {1 0} \
+        5,0 $inner.rep_l -anchor w -pady { 2 0 } \
+        6,0 $inner.rep -anchor w  \
+        7,0 $inner.spherescale -fill x -pady {3 0} \
+        8,0 $inner.stickradius -fill x -pady {1 0} \
+
+    blt::table configure $inner r* -resize none
+    blt::table configure $inner r10 -resize expand
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::Rebuild {} {
+    DebugTrace "Enter"
+    set changed 0
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (that automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+    set _cell 0
+
+    if { $_reset } {
+        set _rocker(server) 0
+        set _cacheid 0
+
+        SendCmd "raw -defer {set auto_color,0}"
+        SendCmd "raw -defer {set auto_show_lines,0}"
+    }
+    set _first ""
+    set dlist [get]
+    foreach dataobj $dlist {
+        if { $_first == "" } {
+            set _first $dataobj
+        }
+        set model [$dataobj get components.molecule.model]
+        if {"" == $model } {
+            set model "molecule"
+            scan $dataobj "::libraryObj%d" suffix
+            set model $model$suffix
+        }
+        lappend _obj2models($dataobj) $model
+        set state [$dataobj get components.molecule.state]
+        if {"" == $state} {
+            set state $_state(server)
+        }
+        if { ![info exists _mlist($model)] } {  # new, turn on
+            set _mlist($model) 2
+        } elseif { $_mlist($model) == 1 } {     # on, leave on
+            set _mlist($model) 3
+        } elseif { $_mlist($model) == 0 } {     # off, turn on
+            set _mlist($model) 2
+        }
+        if { ![info exists _dataobjs($model-$state)] } {
+            set data1      ""
+            set serial    1
+
+            if { $_reportClientInfo }  {
+                set parent [$dataobj parent -as object]
+                while { $parent != "" } {
+                    set xmlobj $parent
+                    set parent [$parent parent -as object]
+                }
+                set info {}
+                lappend info "tool_id"      [$xmlobj get tool.id]
+                lappend info "tool_name"    [$xmlobj get tool.name]
+                lappend info "tool_title"   [$xmlobj get tool.title]
+                lappend info "tool_command" [$xmlobj get tool.execute]
+                lappend info "tool_revision" \
+                    [$xmlobj get tool.version.application.revision]
+                SendCmd "clientinfo [list $info]"
+            }
+            foreach _atom [$dataobj children -type atom components.molecule] {
+                set symbol [$dataobj get components.molecule.$_atom.symbol]
+                set xyz [$dataobj get components.molecule.$_atom.xyz]
+                regsub {,} $xyz {} xyz
+                scan $xyz "%f %f %f" x y z
+                set recname  "ATOM  "
+                set altLoc   ""
+                set resName  ""
+                set chainID  ""
+                set Seqno    ""
+                set occupancy  1
+                set tempFactor 0
+                set recID      ""
+                set segID      ""
+                set element    ""
+                set charge     ""
+                set atom $symbol
+                set line [format "%6s%5d %4s%1s%3s %1s%5s   %8.3f%8.3f%8.3f%6.2f%6.2f%8s\n" $recname $serial $atom $altLoc $resName $chainID $Seqno $x $y $z $occupancy $tempFactor $recID]
+                append data1 $line
+                incr serial
+            }
+            if {"" != $data1} {
+                # Save the PDB data in case the user wants to later save it.
+                set _pdbdata $data1
+                set numBytes [string length $data1]
+
+                # We know we're buffered here, so append the "loadpdb" command
+                # with the data payload immediately afterwards.
+                SendCmd "loadpdb -defer follows $model $state $numBytes"
+                SendData $data1
+                set _dataobjs($model-$state)  1
+            }
+            # note that pdb files always overwrite xyz files
+            set data2 [$dataobj get components.molecule.pdb]
+            if {"" != $data2} {
+                # Save the PDB data in case the user wants to later save it.
+                set _pdbdata $data2
+                set numBytes [string length $data2]
+
+                # We know we're buffered here, so append the "loadpdb" command
+                # with the data payload immediately afterwards.
+                SendCmd "loadpdb -defer follows $model $state $numBytes"
+                SendData $data2
+                set _dataobjs($model-$state)  1
+            }
+            # lammps dump file overwrites pdb file (change this?)
+            set lammpstypemap [$dataobj get components.molecule.lammpstypemap]
+            set lammpsdata [$dataobj get components.molecule.lammps]
+            if {"" != $lammpsdata} {
+                set data3 ""
+                set modelcount 0
+                foreach lammpsline [split $lammpsdata "\n"] {
+                    if {[scan $lammpsline "%d %d %f %f %f" id type x y z] == 5} {
+                        set recname  "ATOM  "
+                        set altLoc   ""
+                        set resName  ""
+                        set chainID  ""
+                        set Seqno    ""
+                        set occupancy  1
+                        set tempFactor 0
+                        set recID      ""
+                        set segID      ""
+                        set element    ""
+                        set charge     ""
+                        if { "" == $lammpstypemap} {
+                            set atom $type
+                        } else {
+                            set atom [lindex $lammpstypemap [expr {$type - 1}]]
+                            if { "" == $atom} {
+                              set atom $type
+                            }
+                        }
+                        set pdbline [format "%6s%5d %4s%1s%3s %1s%5s   %8.3f%8.3f%8.3f%6.2f%6.2f%8s\n" $recname $id $atom $altLoc $resName $chainID $Seqno $x $y $z $occupancy $tempFactor $recID]
+                        append data3 $pdbline
+                    }
+                    # only read first model
+                    if {[regexp "^ITEM: ATOMS" $lammpsline]} {
+                      incr modelcount
+                      if {$modelcount > 1} {
+                        break
+                      }
+                    }
+                }
+                if {"" != $data3} {
+                    # Save the PDB data in case the user wants to later save it.
+                    set _pdbdata $data3
+                    set numBytes [string length $data3]
+
+                    # We know we're buffered here, so append the "loadpdb"
+                    # command with the data payload immediately afterwards.
+                    SendCmd "loadpdb -defer follows $model $state $numBytes"
+                    SendData $data3
+                }
+                set _dataobjs($model-$state) 1
+            }
+        }
+        if { ![info exists _model($model-transparency)] } {
+            set _model($model-transparency) ""
+        }
+        if { ![info exists _model($model-rep)] } {
+            set _model($model-rep) ""
+            set _model($model-newrep) $_mrep
+        }
+        if { $_model($model-transparency) != $_dobj2transparency($dataobj) } {
+            set _model($model-newtransparency) $_dobj2transparency($dataobj)
+        }
+        if { $_dobj2transparency($dataobj) == "ghost"} {
+            array unset _active $model
+        } else {
+            set _active($model) $dataobj
+        }
+        set vector [$dataobj get components.parallelepiped.vector]
+        if { $vector != "" } {
+            set vertices [ComputeParallelepipedVertices $dataobj]
+            SendCmd "raw -defer {verts = \[$vertices\]\n}"
+            SendCmd "raw -defer {run \$PYMOL_SITE_PATH/rappture/box.py\n}"
+            SendCmd "raw -defer {draw_box(verts)\n}"
+            set _cell 1
+        }
+    }
+
+    # enable/disable models as required (0=off->off, 1=on->off, 2=off->on,
+    # 3=on->on)
+
+    foreach model [array names _mlist] {
+        if { $_mlist($model) == 1 } {
+            SendCmd "disable -defer $model"
+            set _mlist($model) 0
+            set changed 1
+        } elseif { $_mlist($model) == 2 } {
+            set _mlist($model) 1
+            SendCmd "enable -defer $model"
+            set changed 1
+        } elseif { $_mlist($model) == 3 } {
+            set _mlist($model) 1
+        }
+        if { $_mlist($model) == 1 } {
+            if {  [info exists _model($model-newtransparency)] ||
+                  [info exists _model($model-newrep)] } {
+                if { ![info exists _model($model-newrep)] } {
+                    set _model($model-newrep) $_model($model-rep)
+                }
+                if { ![info exists _model($model-newtransparency)] } {
+                    set _model($model-newtransparency) $_model($model-transparency)
+                }
+                set rep $_model($model-newrep)
+                set transp $_model($model-newtransparency)
+                SendCmd "representation -defer -model $model $rep"
+                set changed 1
+                set _model($model-transparency) $_model($model-newtransparency)
+                set _model($model-rep) $_model($model-newrep)
+                catch {
+                    unset _model($model-newtransparency)
+                    unset _model($model-newrep)
+                }
+            }
+        }
+
+    }
+
+    if { $changed } {
+        array unset _imagecache
+    }
+    if { $dlist == "" } {
+        set _state(server) 1
+        set _state(client) 1
+        SendCmd "frame 1"
+        set flush 1
+    } elseif { ![info exists _imagecache($state,$_rocker(client))] } {
+        set _state(server) $state
+        set _state(client) $state
+        SendCmd "frame $state"
+        set flush 1
+    } else {
+        set _state(client) $state
+        UpdateState
+        set flush 0
+    }
+    if { $_reset } {
+        # Set or restore viewing parameters.  We do this for the first
+        # model and assume this works for everything else.
+        set w  [winfo width $itk_component(view)]
+        set h  [winfo height $itk_component(view)]
+        SendCmd "reset"
+        SendCmd "screen $w $h"
+        SendCmd "rotate $_view(mx) $_view(my) $_view(mz)"
+        SendCmd "pan $_view(xpan) $_view(ypan)"
+        SendCmd "zoom $_view(zoom)"
+        DebugTrace "rotate $_view(mx) $_view(my) $_view(mz)"
+
+        SendCmd "raw -defer {zoom complete=1}"
+        set _reset 0
+    }
+    if { $changed } {
+        # Default settings for all models.
+        SphereScale update
+        StickRadius update
+        labels update
+        Opacity update
+        CartoonTrace update
+        Cell update
+        OrthoProjection update
+        Representation update
+    }
+    set inner [$itk_component(main) panel "Settings"]
+    if { $_cell } {
+        $inner.cell configure -state normal
+    } else {
+        $inner.cell configure -state disabled
+    }
+    if { $flush } {
+        global readyForNextFrame
+        set readyForNextFrame 0;        # Don't advance to the next frame
+                                        # until we get an image.
+        #SendCmd "ppm";                 # Flush the results.
+    }
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands
+    blt::busy release $itk_component(hull)
+
+    DebugTrace "Exit"
+}
+
+itcl::body Rappture::MolvisViewer::Unmap { } {
+    # Pause rocking loop while unmapped (saves CPU time)
+    Rock pause
+
+    # Blank image, mark current image dirty
+    # This will force reload from cache, or remain blank if cache is cleared
+    # This prevents old image from briefly appearing when a new result is added
+    # by result viewer
+
+    #$_image(plot) blank
+    set _image(id) ""
+}
+
+itcl::body Rappture::MolvisViewer::Map { } {
+    if { [isconnected] } {
+        # Resume rocking loop if it was on
+        Rock unpause
+        # Rebuild image if modified, or redisplay cached image if not
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+itcl::body Rappture::MolvisViewer::DoResize { } {
+    SendCmd "screen $_width $_height"
+    $_image(plot) configure -width $_width -height $_height
+    # Immediately invalidate cache, defer update until mapped
+    array unset _imagecache
+    set _resizePending 0
+}
+
+itcl::body Rappture::MolvisViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    if { !$_resizePending } {
+        $_dispatcher event -after 400 !resize
+        set _resizePending 1
+    }
+}
+
+itcl::body Rappture::MolvisViewer::DoRotate {} {
+    SendCmd "rotate $_view(a) $_view(b) $_view(c)"
+    array unset _imagecache
+    set _rotatePending 0
+}
+
+itcl::body Rappture::MolvisViewer::EventuallyRotate { a b c } {
+    set _view(a) $a
+    set _view(b) $b
+    set _view(c) $c
+    if { !$_rotatePending } {
+        $_dispatcher event -after 100 !rotate
+        set _rotatePending 1
+    }
+}
+
+itcl::body Rappture::MolvisViewer::DoUpdate { } {
+    array unset _imagecache
+    set models [array names _mlist]
+    SphereScale $_settings($this-spherescale) $models
+    StickRadius $_settings($this-stickradius) $models
+    set _updatePending 0
+}
+
+itcl::body Rappture::MolvisViewer::EventuallyChangeSettings { args } {
+    if { !$_updatePending } {
+        $_dispatcher event -after 400 !update
+        set _updatePending 1
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::Pan {option x y} {
+    if { $option == "set" } {
+        set dx $x
+        set dy $y
+        set _view(xpan) [expr $_view(xpan) + $dx]
+        set _view(ypan) [expr $_view(ypan) + $dy]
+        array unset _imagecache
+        SendCmd "pan $dx $dy"
+        return
+    }
+    if { ![info exists _mevent(x)] } {
+        set option "click"
+    }
+    if { $option == "click" } {
+        $itk_component(view) configure -cursor hand1
+    }
+    if { $option == "drag" || $option == "release" } {
+        set dx [expr $x - $_mevent(x)]
+        set dy [expr $y - $_mevent(y)]
+        set _view(xpan) [expr $_view(xpan) + $dx]
+        set _view(ypan) [expr $_view(ypan) + $dy]
+        array unset _imagecache
+        SendCmd "pan $dx $dy"
+    }
+    set _mevent(x) $x
+    set _mevent(y) $y
+    if { $option == "release" } {
+        $itk_component(view) configure -cursor ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::Zoom {option {factor 10}} {
+    switch -- $option {
+        "in" {
+            set _view(zoom) [expr $_view(zoom) + $factor]
+            SendCmd "zoom $factor"
+        }
+        "out" {
+            set _view(zoom) [expr $_view(zoom) - $factor]
+            SendCmd "zoom -$factor"
+        }
+        "reset" {
+            set _view(zoom) 0
+            SendCmd "reset"
+        }
+    }
+    array unset _imagecache
+}
+
+itcl::body Rappture::MolvisViewer::UpdateState { args } {
+    set tag "$_state(client),$_rocker(client)"
+    if { $_image(id) != "$tag" } {
+        if { [info exists _imagecache($tag)] } {
+            $_image(plot) configure -data $_imagecache($tag)
+            set _image(id) "$tag"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rock on|off|toggle
+# USAGE: Rock pause|unpause|step
+#
+# Used to control the "rocking" model for the molecule being displayed.
+# Clients should use only the on/off/toggle options; the rest are for
+# internal control of the rocking motion.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::Rock { option } {
+    # cancel any pending rocks
+    if { [info exists _rocker(afterid)] } {
+        after cancel $_rocker(afterid)
+        unset _rocker(afterid)
+    }
+    if { ![winfo viewable $itk_component(view)] } {
+        return
+    }
+    set _rocker(on) $_settings($this-rock)
+    if { $option == "step"} {
+        if { $_rocker(client) >= 10 } {
+            set _rocker(dir) -1
+        } elseif { $_rocker(client) <= -10 } {
+            set _rocker(dir) 1
+        }
+        set _rocker(client) [expr {$_rocker(client) + $_rocker(dir)}]
+        if { ![info exists _imagecache($_state(server),$_rocker(client))] } {
+            set _rocker(server) $_rocker(client)
+            SendCmd "rock $_rocker(client)"
+        }
+        UpdateState
+    }
+    if { $_rocker(on) && $option != "pause" } {
+         set _rocker(afterid) [after 200 [itcl::code $this Rock step]]
+    }
+}
+
+#
+# Send virtual mouse events using the vmouse command
+#
+itcl::body Rappture::MolvisViewer::Vmouse {option b m x y} {
+    set now [clock clicks -milliseconds]
+    set vButton [expr $b - 1]
+    set vModifier 0
+    set vState 1
+
+    if { $m & 1 }      { set vModifier [expr $vModifier | 1 ] }
+    if { $m & 4 }      { set vModifier [expr $vModifier | 2 ] }
+    if { $m & 131072 } { set vModifier [expr $vModifier | 4 ] }
+
+    if { $option == "click"   } { set vState 0 }
+    if { $option == "release" } { set vState 1 }
+    if { $option == "drag"    } { set vState 2 }
+    if { $option == "move"    } { set vState 3 }
+
+    if { $vState == 2 || $vState == 3} {
+        set diff 0
+
+        catch { set diff [expr $now - $_mevent(time)] }
+        if {$diff < 75} { # 75ms between motion updates
+            return
+        }
+    }
+    SendCmd "vmouse $vButton $vModifier $vState $x $y"
+    set _mevent(time) $now
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::Rotate {option x y} {
+    set now  [clock clicks -milliseconds]
+    # cancel any pending delayed dragging events
+    if { [info exists _mevent(afterid)] } {
+        after cancel $_mevent(afterid)
+        unset _mevent(afterid)
+    }
+
+    if { ![info exists _mevent(x)] } {
+        set option "click"
+    }
+    if { $option == "click" } {
+        $itk_component(view) configure -cursor fleur
+    }
+    if { $option == "drag" || $option == "release" } {
+        set diff 0
+        catch { set diff [expr $now - $_mevent(time) ] }
+        if {$diff < 25 && $option == "drag" } { # 75ms between motion updates
+            set _mevent(afterid) [after [expr 25 - $diff] [itcl::code $this Rotate drag $x $y]]
+            return
+        }
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        if {$w <= 0 || $h <= 0} {
+            return
+        }
+        set x1 [expr double($w) / 3]
+        set x2 [expr $x1 * 2]
+        set y1 [expr double($h) / 3]
+        set y2 [expr $y1 * 2]
+        set dx [expr $x - $_mevent(x)]
+        set dy [expr $y - $_mevent(y)]
+        set mx 0
+        set my 0
+        set mz 0
+
+        if { $_mevent(x) < $x1 } {
+            set mz $dy
+        } elseif { $_mevent(x) < $x2 } {
+            set mx $dy
+        } else {
+            set mz [expr -$dy]
+        }
+
+        if { $_mevent(y) < $y1 } {
+            set mz [expr -$dx]
+        } elseif { $_mevent(y) < $y2 } {
+            set my $dx
+        } else {
+            set mz $dx
+        }
+        # Accumlate movements
+        set _view(mx) [expr {$_view(mx) + $mx}]
+        set _view(my) [expr {$_view(my) + $my}]
+        set _view(mz) [expr {$_view(mz) + $mz}]
+        #SendCmd "rotate $mx $my $mz"
+        EventuallyRotate $mx $my $mz
+        DebugTrace "rotate $_view(mx) $_view(my) $_view(mz)"
+    }
+    set _mevent(x) $x
+    set _mevent(y) $y
+    set _mevent(time) $now
+    if { $option == "release" } {
+        $itk_component(view) configure -cursor ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate.old click <x> <y>
+# USAGE: Rotate.old drag <x> <y>
+# USAGE: Rotate.old release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::Rotate.old {option x y} {
+    set now  [clock clicks -milliseconds]
+    #update idletasks
+    # cancel any pending delayed dragging events
+    if { [info exists _mevent(afterid)] } {
+        after cancel $_mevent(afterid)
+        unset _mevent(afterid)
+    }
+    switch -- $option {
+        click {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+            set _click(theta) $_view(theta)
+            set _click(phi) $_view(phi)
+        }
+        drag {
+            if {[array size _click] == 0} {
+                Rotate.old click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+                #set diff 0
+                #catch { set diff [expr $now - $_mevent(time) ] }
+                #if {$diff < 75 && $option == "drag" } { # 75ms between motion updates
+                #    set _mevent(afterid) [after [expr 75 - $diff] [itcl::code $this Rotate.old drag $x $y]]
+                #    return
+                #}
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+
+                #
+                # Rotate the camera in 3D
+                #
+                if {$_view(psi) > 90 || $_view(psi) < -90} {
+                    # when psi is flipped around, theta moves backwards
+                    set dy [expr {-$dy}]
+                }
+                set theta [expr {$_view(theta) - $dy*180}]
+                while {$theta < 0} { set theta [expr {$theta+180}] }
+                while {$theta > 180} { set theta [expr {$theta-180}] }
+
+                if {abs($theta) >= 30 && abs($theta) <= 160} {
+                    set phi [expr {$_view(phi) - $dx*360}]
+                    while {$phi < 0} { set phi [expr {$phi+360}] }
+                    while {$phi > 360} { set phi [expr {$phi-360}] }
+                    set psi $_view(psi)
+                } else {
+                    set phi $_view(phi)
+                    set psi [expr {$_view(psi) - $dx*360}]
+                    while {$psi < -180} { set psi [expr {$psi+360}] }
+                    while {$psi > 180} { set psi [expr {$psi-360}] }
+                }
+                array set _view [subst {
+                    theta $theta
+                    phi $phi
+                    psi $psi
+                }]
+                foreach { vx vy vz } [Euler2XYZ $theta $phi $psi] break
+                set a [expr $vx - $_view(vx)]
+                set a [expr -$a]
+                set b [expr $vy - $_view(vy)]
+                set c [expr $vz - $_view(vz)]
+                array set _view [subst {
+                    vx $vx
+                    vy $vy
+                    vz $vz
+                }]
+                EventuallyRotate $a $b $c
+                #SendCmd "rotate $a $b $c"
+                DebugTrace "x,y: $x $y: rotate $_view(vx) $_view(vy) $_view(vz)"
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        release {
+            Rotate.old drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+    set _mevent(time) $now
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Representation spheres|ballnstick|lines|sticks
+#
+# Used internally to change the molecular representation used to render
+# our scene.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::Representation { { option "" } } {
+    if { $option == "" } {
+        set value [$itk_component(representation) value]
+        set option [$itk_component(representation) translate $value]
+    }
+    if { $option == $_mrep } {
+        return
+    }
+    if { $option == "update" } {
+        set option $_settings($this-model)
+    }
+    array unset _imagecache
+    if { $option == "sticks" } {
+        set _settings($this-modelimg) [Rappture::icon lines]
+    }  else {
+        set _settings($this-modelimg) [Rappture::icon $option]
+    }
+    set inner [$itk_component(main) panel "Settings"]
+    $inner.pict configure -image $_settings($this-modelimg)
+
+    # Save the current option to set all radiobuttons -- just in case.
+    # This method gets called without the user clicking on a radiobutton.
+    set _settings($this-model) $option
+    set _mrep $option
+
+    foreach model [array names _mlist] {
+        if { [info exists _model($model-rep)] } {
+            if { $_model($model-rep) != $option } {
+                set _model($model-newrep) $option
+            } else {
+                catch { unset _model($model-newrep) }
+            }
+        }
+    }
+    if { [isconnected] } {
+        SendCmd "representation -model $model $option"
+        #$_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: OrthoProjection on|off|toggle
+# USAGE: OrthoProjection update
+#
+# Used internally to turn labels associated with atoms on/off, and to
+# update the positions of the labels so they sit on top of each atom.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::OrthoProjection {option} {
+    array unset _imagecache
+    switch -- $option {
+        "orthoscopic" {
+            set ortho 1
+        }
+        "perspective" {
+            set ortho 0
+        }
+        "toggle" {
+            set ortho [expr {$_settings($this-ortho) == 0}]
+        }
+        "update" {
+            set ortho $_settings($this-ortho)
+        }
+        default {
+            error "bad option \"$option\": should be on, off, toggle, or update"
+        }
+    }
+    if { $ortho == $_settings($this-ortho) && $option != "update"} {
+        # nothing to do
+        return
+    }
+    if { $ortho } {
+        $itk_component(ortho) configure -image [Rappture::icon molvis-3dorth]
+        Rappture::Tooltip::for $itk_component(ortho) \
+            "Use perspective projection"
+        set _settings($this-ortho) 1
+        SendCmd "orthoscopic on"
+    } else {
+        $itk_component(ortho) configure -image [Rappture::icon molvis-3dpers]
+        Rappture::Tooltip::for $itk_component(ortho) \
+            "Use orthoscopic projection"
+        set _settings($this-ortho) 0
+        SendCmd "orthoscopic off"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Cell on|off|toggle
+#
+# Used internally to turn labels associated with atoms on/off, and to
+# update the positions of the labels so they sit on top of each atom.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::Cell {option} {
+    switch -- $option {
+        "on" - "off" {
+            set cell $option
+        }
+        "toggle" {
+            set cell [expr {$_settings($this-showcell) == 0}]
+        }
+        "update" {
+            set cell $_settings($this-showcell)
+        }
+        default {
+            error "bad option \"$option\": should be on, off, toggle, or update"
+        }
+    }
+    if { $cell == $_settings($this-showcell) && $option != "update"} {
+        # nothing to do
+        return
+    }
+    array unset _imagecache
+    if { $cell } {
+        Rappture::Tooltip::for $itk_component(ortho) \
+            "Hide the cell."
+        set _settings($this-showcell) 1
+        SendCmd "raw {show everything,unitcell}"
+    } else {
+        Rappture::Tooltip::for $itk_component(ortho) \
+            "Show the cell."
+        set _settings($this-showcell) 0
+        SendCmd "raw {hide everything,unitcell}"
+    }
+}
+
+#
+# ResetView
+#
+itcl::body Rappture::MolvisViewer::ResetView {} {
+    array set _view {
+        theta   45
+        phi     45
+        psi     0
+        mx      0
+        my      0
+        mz      0
+        xpan    0
+        ypan    0
+        zoom    0
+    }
+    SendCmd "reset"
+    DoResize
+    SendCmd "rotate $_view(mx) $_view(my) $_view(mz)"
+    DebugTrace "rotate $_view(mx) $_view(my) $_view(mz)"
+    SendCmd "pan $_view(xpan) $_view(ypan)"
+    SendCmd "zoom $_view(zoom)"
+}
+
+itcl::body Rappture::MolvisViewer::WaitIcon { option widget } {
+    switch -- $option {
+        "start" {
+            $_dispatcher dispatch $this !waiticon \
+                "[itcl::code $this WaitIcon "next" $widget] ; list"
+            set _icon 0
+            $widget configure -image [Rappture::icon bigroller${_icon}]
+            $_dispatcher event -after 100 !waiticon
+        }
+        "next" {
+            incr _icon
+            if { $_icon >= 8 } {
+                set _icon 0
+            }
+            $widget configure -image [Rappture::icon bigroller${_icon}]
+            $_dispatcher event -after 100 !waiticon
+        }
+        "stop" {
+            $_dispatcher cancel !waiticon
+        }
+    }
+}
+
+itcl::body Rappture::MolvisViewer::GetImage { widget } {
+    set token "print[incr _nextToken]"
+    set var ::Rappture::MolvisViewer::_hardcopy($this-$token)
+    set $var ""
+
+    set controls $_downloadPopup(image_controls)
+    set combo $controls.size
+    set size [$combo translate [$combo value]]
+    switch -- $size {
+        "standard" {
+            set width 1200
+            set height 1200
+        }
+        "highquality" {
+            set width 2400
+            set height 2400
+        }
+        "draft" {
+            set width 400
+            set height 400
+        }
+        default {
+            error "unknown image size [$combo value]"
+        }
+    }
+    # Setup an automatic timeout procedure.
+    $_dispatcher dispatch $this !pngtimeout "set $var {} ; list"
+
+    set popup .molvisviewerimagedownload
+    if { ![winfo exists $popup] } {
+        Rappture::Balloon $popup -title "Generating file..."
+        set inner [$popup component inner]
+        label $inner.title -text "Generating hardcopy." -font "Arial 10 bold"
+        label $inner.please -text "This may take a minute." -font "Arial 10"
+        label $inner.icon -image [Rappture::icon bigroller0]
+        button $inner.cancel -text "Cancel" -font "Arial 10 bold" \
+            -command [list set $var ""]
+        blt::table $inner \
+            0,0 $inner.title -cspan 2 \
+            1,0 $inner.please -anchor w \
+            1,1 $inner.icon -anchor e  \
+            2,0 $inner.cancel -cspan 2
+        blt::table configure $inner r0 -pady 4
+        blt::table configure $inner r2 -pady 4
+        bind $inner.cancel <Return> [list $inner.cancel invoke]
+        bind $inner.cancel <KP_Enter> [list $inner.cancel invoke]
+    } else {
+        set inner [$popup component inner]
+    }
+    set combo $controls.bgcolor
+    set bgcolor [$combo translate [$combo value]]
+
+    $_dispatcher event -after 60000 !pngtimeout
+    WaitIcon start $inner.icon
+    grab set $inner
+    focus $inner.cancel
+
+    SendCmd "print $token $width $height $bgcolor"
+
+    $popup activate $widget below
+    # We wait here for either
+    #  1) the png to be delivered or
+    #  2) timeout or
+    #  3) user cancels the operation.
+    tkwait variable $var
+
+    # Clean up.
+    $_dispatcher cancel !pngtimeout
+    WaitIcon stop $inner.icon
+    grab release $inner
+    $popup deactivate
+    update
+
+    if { $_hardcopy($this-$token) != "" } {
+        set combo $controls.format
+        set fmt [$combo translate [$combo value]]
+        switch -- $fmt {
+            "jpg" {
+                set img [image create photo -data $_hardcopy($this-$token)]
+                set bytes [$img data -format "jpeg -quality 100"]
+                set bytes [Rappture::encoding::decode -as b64 $bytes]
+                return [list .jpg $bytes]
+            }
+            "gif" {
+                set img [image create photo -data $_hardcopy($this-$token)]
+                set bytes [$img data -format "gif"]
+                set bytes [Rappture::encoding::decode -as b64 $bytes]
+                return [list .gif $bytes]
+            }
+            "png" {
+                return [list .png $_hardcopy($this-$token)]
+            }
+        }
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: SphereScale radius ?model?
+#        SphereScale update ?model?
+#
+# Used internally to change the molecular atom scale used to render
+# our scene.
+#
+# Note: Only sets the specified radius for active models.  If the model
+#       is inactive, then it overridden with the value "0.1".
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::SphereScale { option {models "all"} } {
+    if { $option == "update" } {
+        set radius $_settings($this-spherescale)
+    } elseif { [string is double $option] } {
+        set radius $option
+        if { ($radius < 0.1) || ($radius > 2.0) } {
+            error "bad atom size \"$radius\""
+        }
+    } else {
+        error "bad option \"$option\""
+    }
+    set _settings($this-spherescale) $radius
+    if { $models == "all" } {
+        SendCmd "spherescale -model all $radius"
+        return
+    }
+    set overrideradius [expr $radius * 0.8]
+    SendCmd "spherescale -model all $overrideradius"
+    foreach model $models {
+        if { [info exists _active($model)] } {
+            SendCmd "spherescale -model $model $radius"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: StickRadius radius ?models?
+#        StickRadius update ?models?
+#
+# Used internally to change the stick radius used to render
+# our scene.
+#
+# Note: Only sets the specified radius for active models.  If the model
+#       is inactive, then it overridden with the value "0.25".
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::StickRadius { option {models "all"} } {
+    if { $option == "update" } {
+        set radius $_settings($this-stickradius)
+    } elseif { [string is double $option] } {
+        set radius $option
+        if { ($radius < 0.1) || ($radius > 2.0) } {
+            error "bad stick radius \"$radius\""
+        }
+    } else {
+        error "bad option \"$option\""
+    }
+    set _settings($this-stickradius) $radius
+    if { $models == "all" } {
+        SendCmd "stickradius -model all $radius"
+        return
+    }
+    set overrideradius [expr $radius * 0.8]
+    SendCmd "stickradius -model all $overrideradius"
+    foreach model $models {
+        if { [info exists _active($model)] } {
+            SendCmd "stickradius -model $model $radius"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Opacity value ?models?
+#        Opacity update ?models?
+#
+# Used internally to change the opacity (transparency) used to render
+# our scene.
+#
+# Note: Only sets the specified transparency for active models.  If the model
+#       is inactive, then it overridden with the value "0.75".
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::Opacity { option } {
+    array unset _imagecache
+    if { $option == "update" } {
+        set opacity $_settings($this-opacity)
+    } elseif { [string is double $option] } {
+        set opacity $option
+        if { ($opacity < 0.0) || ($opacity > 1.0) } {
+            error "bad opacity \"$opacity\""
+        }
+    } else {
+        error "bad option \"$option\""
+    }
+    set _settings($this-opacity) $opacity
+    set transparency [expr 1.0 - $opacity]
+    set models [array names _active]
+    if { [llength $models] == 0 } {
+        SendCmd "transparency -model all $transparency"
+        return
+    }
+    set overridetransparency 0.60
+    SendCmd "transparency -model all $overridetransparency"
+    foreach model $models {
+        SendCmd "transparency -model $model $transparency"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: labels on|off|toggle
+# USAGE: labels update
+#
+# Used internally to turn labels associated with atoms on/off, and to
+# update the positions of the labels so they sit on top of each atom.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::labels {option {models "all"}} {
+    set showlabels $_settings($this-showlabels)
+    if { $option == "update" } {
+        set showlabels $_settings($this-showlabels)
+    } elseif { [string is boolean $option] } {
+        set showlabels $option
+    } else {
+        error "bad option \"$option\""
+    }
+    # Clear the image cache
+    array unset _imagecache
+    set _settings($this-showlabels) $showlabels
+    if { $models == "all" } {
+        SendCmd "label -model all $showlabels"
+        return
+    }
+    SendCmd "label -model all off"
+    if { $showlabels } {
+        foreach model $models {
+            if { [info exists _active($model)] } {
+                SendCmd "label -model $model $showlabels"
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CartoonTrace on|off|toggle
+# USAGE: CartoonTrace update
+#
+# Used internally to turn labels associated with atoms on/off, and to
+# update the positions of the labels so they sit on top of each atom.
+# ----------------------------------------------------------------------
+itcl::body Rappture::MolvisViewer::CartoonTrace {option {models "all"}} {
+    array unset _imagecache
+    set trace $_settings($this-cartoontrace)
+    if { $option == "update" } {
+        set trace $_settings($this-cartoontrace)
+    } elseif { [string is boolean $option] } {
+        set trace $option
+    } else {
+        error "bad option \"$option\""
+    }
+    set _settings($this-cartoontrace) $trace
+    if { $models == "all" } {
+        SendCmd "cartoontrace -model all $trace"
+        return
+    }
+    SendCmd "cartoontrace -model all off"
+    if { $trace } {
+        foreach model $models {
+            if { [info exists _active($model)] } {
+                SendCmd "cartoontrace -model $model $trace"
+            }
+        }
+    }
+}
+
+itcl::body Rappture::MolvisViewer::AddImageControls { inner widget } {
+    label $inner.size_l -text "Size:" -font "Arial 9"
+    set _downloadPopup(image_controls) $inner
+    set img $_image(plot)
+    set res "[image width $img]x[image height $img]"
+    Rappture::Combobox $inner.size -width 30 -editable no
+    $inner.size choices insert end \
+        "draft"  "Draft (400x400)"         \
+        "standard"  "Standard (1200x1200)"          \
+        "highquality"  "High Quality (2400x2400)"
+
+    label $inner.bgcolor_l -text "Background:" -font "Arial 9"
+    Rappture::Combobox $inner.bgcolor -width 30 -editable no
+    $inner.bgcolor choices insert end \
+        "black"  "Black" \
+        "white"  "White" \
+        "none"  "Transparent (PNG only)"
+
+    label $inner.format_l -text "Format:" -font "Arial 9"
+    Rappture::Combobox $inner.format -width 30 -editable no
+    $inner.format choices insert end \
+        "png"  "PNG (Portable Network Graphics format)" \
+        "jpg"  "JPEG (Joint Photographic Experts Group format)" \
+        "gif"  "GIF (GIF Graphics Interchange Format)"
+
+    set f [frame $inner.frame]
+    button $f.ok -text "Save" \
+        -highlightthickness 0 -pady 3 -padx 3 \
+        -command [itcl::code $this SetWaitVariable 1] \
+        -compound left \
+        -image [Rappture::icon download
+]
+    button $f.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 3 -padx 3 \
+        -command [itcl::code $this SetWaitVariable 0] \
+        -compound left \
+        -image [Rappture::icon cancel]
+    blt::table $f \
+        0,0 $f.ok  \
+        0,1 $f.cancel
+
+    blt::table $inner \
+        0,0 $inner.format_l -anchor e \
+        0,1 $inner.format -anchor w -fill x  \
+        1,0 $inner.size_l -anchor e \
+        1,1 $inner.size -anchor w -fill x \
+        2,0 $inner.bgcolor_l -anchor e \
+        2,1 $inner.bgcolor -anchor w -fill x \
+        3,0 $f -cspan 2 -fill x
+    blt::table configure $inner r0 r1 r2 r3 -pady { 4 0 }
+    blt::table configure $inner r3 -pady { 4 4 }
+    $inner.bgcolor value "Black"
+    $inner.size value "Draft (400x400)"
+    $inner.format value  "PNG (Portable Network Graphics format)"
+}
+
+itcl::body Rappture::MolvisViewer::snap { w h } {
+    if { $w <= 0 || $h <= 0 } {
+        set w [image width $_image(plot)]
+        set h [image height $_image(plot)]
+    }
+    set tag "$_state(client),$_rocker(client)"
+    if { $_image(id) != "$tag" } {
+        while { ![info exists _imagecache($tag)] } {
+            update idletasks
+            update
+            after 100
+        }
+        if { [info exists _imagecache($tag)] } {
+            $_image(plot) configure -data $_imagecache($tag)
+            set _image(id) "$tag"
+        }
+    }
+    set img [image create picture -width $w -height $h]
+    $img resample $_image(plot)
+    return $img
+}
+
+# FIXME: Handle 2D vectors
+itcl::body Rappture::MolvisViewer::ComputeParallelepipedVertices { dataobj } {
+    # Create a vector for every 3D point
+    blt::vector point0(3) point1(3) point2(3) point3(3) point4(3) point5(3) \
+        point6(3) point7(3) origin(3) scale(3)
+
+    set count 0
+    set parent [$dataobj element -as object "components.parallelepiped"]
+    foreach child [$parent children] {
+        if { ![string match "vector*" $child] } {
+            continue
+        }
+        incr count
+        set values [$parent get $child]
+        regexp -all {,} $values { } values
+        point$count set $values
+    }
+    itcl::delete object $parent
+    if { $count < 1 || $count > 3 } {
+        error "bad number of vectors supplied to parallelepiped"
+    }
+    point0 set { 0.0 0.0 0.0 }
+    point4 expr {point2 + point1}
+    point5 expr {point4 + point3}
+    point6 expr {point2 + point3}
+    point7 expr {point1 + point3}
+
+    set values [$dataobj get components.parallelepiped.scale]
+    set n [llength $values]
+    scale set { 1.0 1.0 1.0 }
+    if { $n == 1 } {
+        set scale(0:2) [lindex $values 0]
+    } elseif { $n == 2 } {
+        set scale(0:1) [lindex $values 0]
+    } elseif { $n == 3 } {
+        scale set $values
+    }
+    set values [$dataobj get components.parallelepiped.origin]
+    set n [llength $values]
+    origin set { 0.0 0.0 0.0 }
+    if { $n == 1 } {
+        set origin(0) [lindex $values 0]
+    } elseif { $n == 2 } {
+        set origin(0) [lindex $values 0]
+        set origin(1) [lindex $values 1]
+    } elseif { $n == 3 } {
+        origin set $values
+    }
+
+    # Scale and translate points
+    for { set i 0 } { $i < 8 } { incr i } {
+        point${i} expr "(point${i} * scale) + origin"
+    }
+
+    # Generate vertices as a string for PyMOL
+    set vertices ""
+    foreach n { 0 1 0 2 0 3 1 4 2 4 2 6 1 7 3 7 5 7 4 5 3 6 5 } {
+        set values [point${n} range 0 end]
+        append vertices "\[ [join $values {, }] \], \\\n"
+    }
+    set values [point6 range 0 end]
+    append vertices "\[ [join $values {, }] \]  \\\n"
+    blt::vector destroy point0 point1 point2 point3 point4 point5 point6 \
+        point7 origin scale
+    return $vertices
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -device
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::MolvisViewer::device {
+    if {$itk_option(-device) != "" } {
+        if {![Rappture::library isvalid $itk_option(-device)]} {
+            error "bad value \"$itk_option(-device)\": should be Rappture::library object"
+        }
+        $this delete
+        $this add $itk_option(-device)
+    } else {
+        $this delete
+    }
+
+    if { [isconnected] } {
+        $_dispatcher event -idle !rebuild
+    }
+}
Index: /tags/1.6.0/gui/scripts/nanovisviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/nanovisviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/nanovisviewer.tcl	(revision 6168)
@@ -0,0 +1,2167 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: nanovisviewer - 3D volume rendering
+#
+#  This widget performs volume rendering on 3D scalar/vector datasets.
+#  It connects to the Nanovis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+package require Img
+
+option add *NanovisViewer.width 4i widgetDefault
+option add *NanovisViewer*cursor crosshair widgetDefault
+option add *NanovisViewer.height 4i widgetDefault
+option add *NanovisViewer.foreground black widgetDefault
+option add *NanovisViewer.controlBackground gray widgetDefault
+option add *NanovisViewer.controlDarkBackground #999999 widgetDefault
+option add *NanovisViewer.plotBackground black widgetDefault
+option add *NanovisViewer.plotForeground white widgetDefault
+option add *NanovisViewer.plotOutline gray widgetDefault
+option add *NanovisViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc NanovisViewer_init_resources {} {
+    Rappture::resources::register \
+        nanovis_server Rappture::NanovisViewer::SetServerList
+}
+
+itcl::class Rappture::NanovisViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+    itk_option define -plotoutline plotOutline PlotOutline ""
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "nanovis" $namelist
+    }
+    public method add {dataobj {settings ""}}
+    public method camera {option args}
+    public method delete {args}
+    public method disconnect {}
+    public method download {option args}
+    public method get {args}
+    public method isconnected {}
+    public method limits { tf }
+    public method overMarker { m x }
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method removeDuplicateMarker { m x }
+    public method scale {args}
+    public method updateTransferFunctions {}
+
+    # The following methods are only used by this class.
+    private method AddIsoMarker { x y }
+    private method AdjustSetting {what {value ""}}
+    private method BuildCameraTab {}
+    private method BuildCutplanesTab {}
+    private method BuildDownloadPopup { widget command }
+    private method BuildViewTab {}
+    private method BuildVolumeTab {}
+    private method ComputeTransferFunction { tf }
+    private method Connect {}
+    private method CurrentDatasets {{what -all}}
+    private method Disconnect {}
+    private method DoResize {}
+    private method DrawLegend { tf }
+    private method EventuallyRedrawLegend { }
+    private method EventuallyResize { w h }
+    private method FixLegend {}
+    private method GetImage { args }
+    private method GetVtkData { args }
+    private method InitSettings { args }
+    private method NameTransferFunction { dataobj comp }
+    private method Pan {option x y}
+    private method PanCamera {}
+    private method ParseLevelsOption { tf levels }
+    private method ParseMarkersOption { tf markers }
+    private method QuaternionToView { q } {
+        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
+    }
+    private method Rebuild {}
+    private method ReceiveData { args }
+    private method ReceiveImage { args }
+    private method ReceiveLegend { tf vmin vmax size }
+    private method ResetColormap { color }
+    private method Rotate {option x y}
+    private method SendTransferFunctions {}
+    private method SetOrientation { side }
+    private method Slice {option args}
+    private method SlicerTip {axis}
+    private method ViewToQuaternion {} {
+        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
+    }
+    private method Zoom {option}
+
+    private variable _arcball ""
+    private variable _dlist ""         ;# list of data objects
+    private variable _obj2ovride       ;# maps dataobj => style override
+    private variable _serverDatasets   ;# contains all the dataobj-component
+                                       ;# to volumes in the server
+    private variable _recvdDatasets    ;# list of data objs to send to server
+    private variable _dataset2style    ;# maps dataobj-component to transfunc
+    private variable _style2datasets   ;# maps tf back to list of
+                                        # dataobj-components using the tf.
+
+    private variable _reset 1          ;# Connection to server has been reset.
+    private variable _click            ;# Info used for rotate operations.
+    private variable _limits           ;# Autoscale min/max for all axes
+    private variable _view             ;# View params for 3D view
+    private variable _isomarkers       ;# array of isosurface level values 0..1
+    # Array of transfer functions in server.  If 0 the transfer has been
+    # defined but not loaded.  If 1 the transfer function has been named
+    # and loaded.
+    private variable _activeTfs
+    private variable _settings
+    private variable _first ""         ;# This is the topmost volume.
+    private variable _width 0
+    private variable _height 0
+    private variable _resizePending 0
+    private variable _resizeLegendPending 0
+
+    private common _downloadPopup      ;# download options from popup
+    private common _hardcopy
+}
+
+itk::usual NanovisViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::constructor {args} {
+    set _serverType "nanovis"
+
+    #DebugOn
+    EnableWaitDialog 900
+
+    # Rebuild event
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Legend event
+    $_dispatcher register !legend
+    $_dispatcher dispatch $this !legend "[itcl::code $this FixLegend]; list"
+
+    # Send transfer functions event
+    $_dispatcher register !send_transfunc
+    $_dispatcher dispatch $this !send_transfunc \
+        "[itcl::code $this SendTransferFunctions]; list"
+
+    #
+    # Populate parser with commands handle incoming requests
+    #
+    $_parser alias image [itcl::code $this ReceiveImage]
+    $_parser alias legend [itcl::code $this ReceiveLegend]
+    $_parser alias data [itcl::code $this ReceiveData]
+
+    # Initialize the view to some default parameters.
+    array set _view {
+        -qw       0.853553
+        -qx       -0.353553
+        -qy       0.353553
+        -qz       0.146447
+        -xpan     0
+        -ypan     0
+        -zoom     1.0
+    }
+    set _arcball [blt::arcball create 100 100]
+    $_arcball quaternion [ViewToQuaternion]
+
+    set _limits(vmin) 0.0
+    set _limits(vmax) 1.0
+
+    array set _settings [subst {
+        -axesvisible            1
+        -background             black
+        -colormap               "BCGYR"
+        -cutplanesvisible       0
+        -gridvisible            0
+        -isosurfaceshading      0
+        -legendvisible          1
+        -light                  40
+        -light2side             1
+        -opacity                50
+        -outlinevisible         0
+        -qw                     $_view(-qw)
+        -qx                     $_view(-qx)
+        -qy                     $_view(-qy)
+        -qz                     $_view(-qz)
+        -thickness              350
+        -volume                 1
+        -xcutplaneposition      50
+        -xcutplanevisible       0
+        -xpan                   $_view(-xpan)
+        -ycutplaneposition      50
+        -ycutplanevisible       0
+        -ypan                   $_view(-ypan)
+        -zcutplaneposition      50
+        -zcutplanevisible       0
+        -zoom                   $_view(-zoom)
+    }]
+
+    itk_component add view {
+        label $itk_component(plotarea).view -image $_image(plot) \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth -background
+    }
+    bind $itk_component(view) <Control-F1> [itcl::code $this ToggleConsole]
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    itk_component add volume {
+        Rappture::PushButton $f.volume \
+            -onimage [Rappture::icon volume-on] \
+            -offimage [Rappture::icon volume-off] \
+            -variable [itcl::scope _settings(-volume)] \
+            -command [itcl::code $this AdjustSetting -volume]
+    }
+    $itk_component(volume) select
+    Rappture::Tooltip::for $itk_component(volume) \
+        "Toggle the volume cloud on/off"
+    pack $itk_component(volume) -padx 2 -pady 2
+
+    itk_component add cutplane {
+        Rappture::PushButton $f.cutplane \
+            -onimage [Rappture::icon cutbutton] \
+            -offimage [Rappture::icon cutbutton] \
+            -variable [itcl::scope _settings(-cutplanesvisible)] \
+            -command [itcl::code $this AdjustSetting -cutplanesvisible]
+    }
+    Rappture::Tooltip::for $itk_component(cutplane) \
+        "Show/Hide cutplanes"
+    #pack $itk_component(cutplane) -padx 2 -pady 2
+
+    if { [catch {
+        BuildViewTab
+        BuildVolumeTab
+        BuildCutplanesTab
+        BuildCameraTab
+    } errs] != 0 } {
+        global errorInfo
+        puts stderr "errs=$errs errorInfo=$errorInfo"
+    }
+
+    # Legend
+    set _image(legend) [image create photo]
+    itk_component add legend {
+        canvas $itk_component(plotarea).legend -height 50 -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -plotbackground plotBackground Background
+    }
+    bind $itk_component(legend) <Configure> \
+        [itcl::code $this EventuallyRedrawLegend]
+
+    # Hack around the Tk panewindow.  The problem is that the requested
+    # size of the 3d view isn't set until an image is retrieved from
+    # the server.  So the panewindow uses the tiny size.
+    set w 10000
+    pack forget $itk_component(view)
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth $w \
+        1,0 $itk_component(legend) -fill x
+    blt::table configure $itk_component(plotarea) r1 -resize none
+
+    # Bindings for rotation via mouse
+    bind $itk_component(view) <ButtonPress-1> \
+        [itcl::code $this Rotate click %x %y]
+    bind $itk_component(view) <B1-Motion> \
+        [itcl::code $this Rotate drag %x %y]
+    bind $itk_component(view) <ButtonRelease-1> \
+        [itcl::code $this Rotate release %x %y]
+    bind $itk_component(view) <Configure> \
+        [itcl::code $this EventuallyResize %w %h]
+
+    # Bindings for panning via mouse
+    bind $itk_component(view) <ButtonPress-2> \
+        [itcl::code $this Pan click %x %y]
+    bind $itk_component(view) <B2-Motion> \
+        [itcl::code $this Pan drag %x %y]
+    bind $itk_component(view) <ButtonRelease-2> \
+        [itcl::code $this Pan release %x %y]
+
+    # Bindings for panning via keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -2 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 2 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -2]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 2]
+
+    # Bindings for zoom via keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        # Bindings for zoom via mouse
+        bind $itk_component(view) <4> [itcl::code $this Zoom out]
+        bind $itk_component(view) <5> [itcl::code $this Zoom in]
+    }
+
+    set _image(download) [image create photo]
+
+    eval itk_initialize $args
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::destructor {} {
+    $_dispatcher cancel !rebuild
+    $_dispatcher cancel !send_transfunc
+    $_dispatcher cancel !resize
+    image delete $_image(plot)
+    image delete $_image(legend)
+    image delete $_image(download)
+    catch { blt::arcball destroy $_arcball }
+    array unset _settings
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::add {dataobj {settings ""}} {
+    if { ![$dataobj isvalid] } {
+        return;                         # Object doesn't contain valid data.
+    }
+    array set params {
+        -color auto
+        -width 1
+        -linestyle solid
+        -brightness 0
+        -raise 0
+        -description ""
+        -param ""
+    }
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) black
+    }
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+        set _obj2ovride($dataobj-color) $params(-color)
+        set _obj2ovride($dataobj-width) $params(-width)
+        set _obj2ovride($dataobj-raise) $params(-raise)
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-objects?
+# USAGE: get ?-image view|legend?
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.  The optional "-image"
+# flag can also request the internal images being shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::get {args} {
+    if {[llength $args] == 0} {
+        set args "-objects"
+    }
+
+    set op [lindex $args 0]
+    switch -- $op {
+        -objects {
+            # put the dataobj list in order according to -raise options
+            set dlist $_dlist
+            foreach dataobj $dlist {
+                if {[info exists _obj2ovride($dataobj-raise)] &&
+                    $_obj2ovride($dataobj-raise)} {
+                    set i [lsearch -exact $dlist $dataobj]
+                    if {$i >= 0} {
+                        set dlist [lreplace $dlist $i $i]
+                        lappend dlist $dataobj
+                    }
+                }
+            }
+            return $dlist
+        }
+        -image {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"get -image view|legend\""
+            }
+            switch -- [lindex $args end] {
+                view {
+                    return $_image(plot)
+                }
+                legend {
+                    return $_image(legend)
+                }
+                default {
+                    error "bad image name \"[lindex $args end]\": should be view or legend"
+                }
+            }
+        }
+        default {
+            error "bad option \"$op\": should be -objects or -image"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.  No data objects are
+# deleted.  They are only removed from the display list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::delete {args} {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+    # Delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if { $pos >= 0 } {
+            set _dlist [lreplace $_dlist $pos $pos]
+            array unset _limits $dataobj*
+            array unset _obj2ovride $dataobj-*
+            set changed 1
+        }
+    }
+    # If anything changed, then rebuild the plot
+    if {$changed} {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<data1> <data2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <data> objects.  This
+# accounts for all objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::scale {args} {
+    foreach val {xmin xmax ymin ymax zmin zmax vmin vmax} {
+        set _limits($val) ""
+    }
+    foreach dataobj $args {
+        if { ![$dataobj isvalid] } {
+            continue;                     # Object doesn't contain valid data.
+        }
+        foreach axis {x y z v} {
+            foreach { min max } [$dataobj limits $axis] break
+            if {"" != $min && "" != $max} {
+                if {"" == $_limits(${axis}min)} {
+                    set _limits(${axis}min) $min
+                    set _limits(${axis}max) $max
+                } else {
+                    if {$min < $_limits(${axis}min)} {
+                        set _limits(${axis}min) $min
+                    }
+                    if {$max > $_limits(${axis}max)} {
+                        set _limits(${axis}max) $max
+                    }
+                }
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::download {option args} {
+    switch $option {
+        coming {
+            if {[catch {
+                blt::winop snap $itk_component(plotarea) $_image(download)
+            }]} {
+                $_image(download) configure -width 1 -height 1
+                $_image(download) put #000000
+            }
+        }
+        controls {
+            set popup .nanovisdownload
+            if { ![winfo exists $popup] } {
+                set inner [BuildDownloadPopup $popup [lindex $args 0]]
+            } else {
+                set inner [$popup component inner]
+            }
+            # FIXME: we only support download of current active component
+            #set num [llength [get]]
+            #set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set num "current field component"
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks            ;# Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .nanovisdownload
+            if { [winfo exists $popup] } {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "image" {
+                    return [$this GetImage [lindex $args 0]]
+                }
+                "vtk" {
+                    return [$this GetVtkData [lindex $args 0]]
+                }
+            }
+            return ""
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Connect ?<host:port>,<host:port>...?
+#
+# Clients use this method to establish a connection to a new
+# server, or to reestablish a connection to the previous server.
+# Any existing connection is automatically closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::Connect {} {
+    set _hosts [GetServerList "nanovis"]
+    if { "" == $_hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $_hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "nanovisviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        EventuallyResize $w $h
+    }
+    return $result
+}
+
+#
+# isconnected --
+#
+# Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::NanovisViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# disconnect --
+#
+itcl::body Rappture::NanovisViewer::disconnect {} {
+    Disconnect
+}
+
+#
+# Disconnect --
+#
+# Clients use this method to disconnect from the current rendering server.
+#
+itcl::body Rappture::NanovisViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    # disconnected -- no more data sitting on server
+    array unset _serverDatasets
+}
+
+# ----------------------------------------------------------------------
+# USAGE: SendTransferFunctions
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::SendTransferFunctions {} {
+    if { $_first == "" } {
+        puts stderr "first not set"
+        return
+    }
+    # Ensure that the global thickness setting (in the slider
+    # settings widget) is used for the active transfer-function.  Update
+    # the value in the _settings varible.
+    # Scale values between 0.00001 and 0.01000
+    set thickness [expr {double($_settings(-thickness)) * 0.0001}]
+
+    foreach tag [CurrentDatasets] {
+        if { ![info exists _serverDatasets($tag)] || !$_serverDatasets($tag) } {
+            # The volume hasn't reached the server yet.  How did we get
+            # here?
+            puts stderr "Don't have $tag in _serverDatasets"
+            continue
+        }
+        if { ![info exists _dataset2style($tag)] } {
+            puts stderr "don't have style for volume $tag"
+            continue;                        # How does this happen?
+        }
+        set tf $_dataset2style($tag)
+        set _settings($tf-thickness) $thickness
+        ComputeTransferFunction $tf
+        # FIXME: Need to the send information as to what transfer functions
+        #        to update so that we only update the transfer function
+        #        as necessary.  Right now, all transfer functions are
+        #        updated. This makes moving the isomarker slider chunky.
+        if { ![info exists _activeTfs($tf)] || !$_activeTfs($tf) } {
+            set _activeTfs($tf) 1
+        }
+        SendCmd "volume shading transfunc $tf $tag"
+    }
+    FixLegend
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveImage -bytes <size> -type <type> -token <token>
+#
+# Invoked automatically whenever the "image" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::ReceiveImage { args } {
+    array set info {
+        -token "???"
+        -bytes 0
+        -type image
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    ReceiveEcho <<line "<read $info(-bytes) bytes"
+    if { $info(-type) == "image" } {
+        ReceiveEcho "for [image width $_image(plot)]x[image height $_image(plot)] image>"
+        $_image(plot) configure -data $bytes
+    } elseif { $info(-type) == "print" } {
+        set tag $this-print-$info(-token)
+        set _hardcopy($tag) $bytes
+    }
+}
+
+#
+# DrawLegend --
+#
+itcl::body Rappture::NanovisViewer::DrawLegend { tf } {
+    set c $itk_component(legend)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set lx 10
+    set ly [expr {$h - 1}]
+    if {"" == [$c find withtag colorbar]} {
+        $c create image 10 10 -anchor nw \
+            -image $_image(legend) -tags colorbar
+        $c create text $lx $ly -anchor sw \
+            -fill $itk_option(-plotforeground) -tags "limits text vmin"
+        $c create text [expr {$w-$lx}] $ly -anchor se \
+            -fill $itk_option(-plotforeground) -tags "limits text vmax"
+        $c create text [expr {$w/2}] $ly -anchor s \
+            -fill $itk_option(-plotforeground) -tags "title text"
+        $c lower colorbar
+        $c bind colorbar <ButtonRelease-1> [itcl::code $this AddIsoMarker %x %y]
+    }
+
+    # Display the markers used by the current transfer function.
+    array set limits [limits $tf]
+    $c itemconfigure vmin -text [format %g $limits(min)]
+    $c coords vmin $lx $ly
+
+    $c itemconfigure vmax -text [format %g $limits(max)]
+    $c coords vmax [expr {$w-$lx}] $ly
+
+    set title [$_first hints label]
+    set units [$_first hints units]
+    if { $units != "" } {
+        set title "$title ($units)"
+    }
+    $c itemconfigure title -text $title
+    $c coords title [expr {$w/2}] $ly
+
+    if { [info exists _isomarkers($tf)] } {
+        foreach m $_isomarkers($tf) {
+            $m visible yes
+        }
+    }
+
+    # The colormap may have changed. Resync the slicers with the colormap.
+    set datasets [CurrentDatasets -cutplanes]
+    SendCmd "volume data state $_settings(-volume) $datasets"
+
+    # Adjust the cutplane for only the first component in the topmost volume
+    # (i.e. the first volume designated in the field).
+    set tag [lindex $datasets 0]
+    foreach axis {x y z} {
+        # Turn off cutplanes for all volumes
+        SendCmd "cutplane state 0 $axis"
+        if { $_settings(-${axis}cutplanevisible) } {
+            # Turn on cutplane for this particular volume and set the position
+            SendCmd "cutplane state 1 $axis $tag"
+            set pos [expr {0.01*$_settings(-${axis}cutplaneposition)}]
+            SendCmd "cutplane position $pos $axis $tag"
+        }
+    }
+}
+
+#
+# ReceiveLegend --
+#
+# The procedure is the response from the render server to each "legend"
+# command.  The server sends back a "legend" command invoked our
+# the slave interpreter.  The purpose is to collect data of the image
+# representing the legend in the canvas.  In addition, the
+# active transfer function is displayed.
+#
+itcl::body Rappture::NanovisViewer::ReceiveLegend { tf vmin vmax size } {
+    if { ![isconnected] } {
+        return
+    }
+    set bytes [ReceiveBytes $size]
+    $_image(legend) configure -data $bytes
+    ReceiveEcho <<line "<read $size bytes for [image width $_image(legend)]x[image height $_image(legend)] legend>"
+
+    DrawLegend $tf
+}
+
+#
+# ReceiveData --
+#
+# The procedure is the response from the render server to each "data
+# follows" command.  The server sends back a "data" command invoked our
+# the slave interpreter.  The purpose is to collect the min/max of the
+# volume sent to the render server.  Since the client (nanovisviewer)
+# doesn't parse 3D data formats, we rely on the server (nanovis) to
+# tell us what the limits are.  Once we've received the limits to all
+# the data we've sent (tracked by _recvdDatasets) we can then determine
+# what the transfer functions are for these volumes.
+#
+#
+#       Note: There is a considerable tradeoff in having the server report
+#             back what the data limits are.  It means that much of the code
+#             having to do with transfer-functions has to wait for the data
+#             to come back, since the isomarkers are calculated based upon
+#             the data limits.  The client code is much messier because of
+#             this.  The alternative is to parse any of the 3D formats on the
+#             client side.
+#
+itcl::body Rappture::NanovisViewer::ReceiveData { args } {
+    if { ![isconnected] } {
+        return
+    }
+
+    # Arguments from server are name value pairs. Stuff them in an array.
+    array set info $args
+
+    set tag $info(tag)
+    set parts [split $tag -]
+
+    #
+    # Volumes don't exist until we're told about them.
+    #
+    set dataobj [lindex $parts 0]
+    set _serverDatasets($tag) 1
+    if { $_settings(-volume) && $dataobj == $_first } {
+        SendCmd "volume state 1 $tag"
+    }
+    set _limits($tag-min)  $info(min);  # Minimum value of the volume.
+    set _limits($tag-max)  $info(max);  # Maximum value of the volume.
+    set _limits(vmin)      $info(vmin); # Overall minimum value.
+    set _limits(vmax)      $info(vmax); # Overall maximum value.
+
+    unset _recvdDatasets($tag)
+    if { [array size _recvdDatasets] == 0 } {
+        # The active transfer function is by default the first component of
+        # the first data object.  This assumes that the data is always
+        # successfully transferred.
+        updateTransferFunctions
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::Rebuild {} {
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $w < 2 || $h < 2 } {
+        update
+        $_dispatcher event -idle !rebuild
+        return
+    }
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (which automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+
+    # Hide all the isomarkers. Can't remove them. Have to remember the
+    # settings since the user may have created/deleted/moved markers.
+
+    foreach tf [array names _isomarkers] {
+        foreach m $_isomarkers($tf) {
+            $m visible no
+        }
+    }
+
+    if { $_width != $w || $_height != $h || $_reset } {
+        set _width $w
+        set _height $h
+        $_arcball resize $w $h
+        DoResize
+    }
+
+    foreach dataobj [get] {
+        foreach cname [$dataobj components] {
+            set tag $dataobj-$cname
+            if { ![info exists _serverDatasets($tag)] } {
+                # Send the data as one huge base64-encoded mess -- yuck!
+                if { [$dataobj type] == "dx" } {
+                    if { ![$dataobj isvalid] } {
+                        puts stderr "??? $dataobj is invalid"
+                    }
+                    set data [$dataobj blob $cname]
+                } else {
+                    set data [$dataobj vtkdata $cname]
+                    if 0 {
+                        set f [open "/tmp/volume.vtk" "w"]
+                        fconfigure $f -translation binary -encoding binary
+                        puts -nonewline $f $data
+                        close $f
+                    }
+                }
+                set nbytes [string length $data]
+                if { $_reportClientInfo }  {
+                    set info {}
+                    lappend info "tool_id"       [$dataobj hints toolid]
+                    lappend info "tool_name"     [$dataobj hints toolname]
+                    lappend info "tool_title"    [$dataobj hints tooltitle]
+                    lappend info "tool_command"  [$dataobj hints toolcommand]
+                    lappend info "tool_revision" [$dataobj hints toolrevision]
+                    lappend info "dataset_label" [$dataobj hints label]
+                    lappend info "dataset_size"  $nbytes
+                    lappend info "dataset_tag"   $tag
+                    SendCmd "clientinfo [list $info]"
+                }
+                SendCmd "volume data follows $nbytes $tag"
+                SendData $data
+                set _recvdDatasets($tag) 1
+                set _serverDatasets($tag) 0
+            }
+            NameTransferFunction $dataobj $cname
+        }
+    }
+    set _first [lindex [get] 0]
+    # Outline seems to need to be reset every update.
+    InitSettings -outlinevisible ;#-cutplanesvisible
+    if { $_reset } {
+        #
+        # Reset the camera and other view parameters
+        #
+        set _settings(-qw)    $_view(-qw)
+        set _settings(-qx)    $_view(-qx)
+        set _settings(-qy)    $_view(-qy)
+        set _settings(-qz)    $_view(-qz)
+        set _settings(-xpan)  $_view(-xpan)
+        set _settings(-ypan)  $_view(-ypan)
+        set _settings(-zoom)  $_view(-zoom)
+
+        set q [ViewToQuaternion]
+        $_arcball quaternion $q
+        SendCmd "camera orient $q"
+        SendCmd "camera reset"
+        PanCamera
+        SendCmd "camera zoom $_view(-zoom)"
+
+        # Turn off cutplanes for all volumes
+        foreach axis {x y z} {
+            SendCmd "cutplane state 0 $axis"
+        }
+
+        InitSettings -axesvisible -gridvisible \
+            -light2side -isosurfaceshading -opacity \
+            -light \
+            -xcutplanevisible -ycutplanevisible -zcutplanevisible
+
+        if {"" != $_first} {
+            set axis [$_first hints updir]
+            if { "" != $axis } {
+                SendCmd "up $axis"
+            }
+            set location [$_first hints camera]
+            if { $location != "" } {
+                array set _view $location
+            }
+        }
+        set _reset 0
+    }
+
+    # nothing to send -- activate the proper ivol
+    SendCmd "volume state 0"
+    if {"" != $_first} {
+        set datasets [array names _serverDatasets $_first-*]
+        if { $datasets != "" } {
+            SendCmd "volume state 1 $datasets"
+        }
+        # If the first volume already exists on the server, then make sure
+        # we display the proper transfer function in the legend.
+        set cname [lindex [$_first components] 0]
+        if { [info exists _serverDatasets($_first-$cname)] } {
+            updateTransferFunctions
+        }
+    }
+    # Actually write the commands to the server socket.  If it fails, we don't
+    # care.  We're finished here.
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands
+    blt::busy release $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CurrentDatasets ?-cutplanes?
+#
+# Returns a list of volume server IDs for the current volume being
+# displayed.  This is normally a single ID, but it might be a list
+# of IDs if the current data object has multiple components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::CurrentDatasets {{what -all}} {
+    set rlist ""
+    if { $_first == "" } {
+        return
+    }
+    foreach cname [$_first components] {
+        set tag $_first-$cname
+        if { [info exists _serverDatasets($tag)] && $_serverDatasets($tag) } {
+            array set style {
+                -cutplanes 1
+            }
+            array set style [lindex [$_first components -style $cname] 0]
+            if { $what != "-cutplanes" || $style(-cutplanes) } {
+                lappend rlist $tag
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::Zoom {option} {
+    switch -- $option {
+        "in" {
+            set _view(-zoom) [expr {$_view(-zoom)*1.25}]
+            set _settings(-zoom) $_view(-zoom)
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "out" {
+            set _view(-zoom) [expr {$_view(-zoom)*0.8}]
+            set _settings(-zoom) $_view(-zoom)
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "reset" {
+            array set _view {
+                -qw      0.853553
+                -qx      -0.353553
+                -qy      0.353553
+                -qz      0.146447
+                -xpan    0
+                -ypan    0
+                -zoom    1.0
+            }
+            if { $_first != "" } {
+                set location [$_first hints camera]
+                if { $location != "" } {
+                    array set _view $location
+                }
+            }
+            set q [ViewToQuaternion]
+            $_arcball quaternion $q
+            SendCmd "camera orient $q"
+            SendCmd "camera reset"
+            set _settings(-qw)    $_view(-qw)
+            set _settings(-qx)    $_view(-qx)
+            set _settings(-qy)    $_view(-qy)
+            set _settings(-qz)    $_view(-qz)
+            set _settings(-xpan)  $_view(-xpan)
+            set _settings(-ypan)  $_view(-ypan)
+            set _settings(-zoom)  $_view(-zoom)
+        }
+    }
+}
+
+itcl::body Rappture::NanovisViewer::PanCamera {} {
+    set x $_view(-xpan)
+    set y $_view(-ypan)
+    SendCmd "camera pan $x $y"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::Rotate {option x y} {
+    switch -- $option {
+        click {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+        }
+        drag {
+            if {[array size _click] == 0} {
+                Rotate click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+
+                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
+                QuaternionToView $q
+                set _settings(-qw) $_view(-qw)
+                set _settings(-qx) $_view(-qx)
+                set _settings(-qy) $_view(-qy)
+                set _settings(-qz) $_view(-qz)
+                SendCmd "camera orient $q"
+
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        release {
+            Rotate drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::Pan {option x y} {
+    # Experimental stuff
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $option == "set" } {
+        set x [expr $x / double($w)]
+        set y [expr $y / double($h)]
+        set _view(-xpan) [expr $_view(-xpan) + $x]
+        set _view(-ypan) [expr $_view(-ypan) + $y]
+        PanCamera
+        set _settings(-xpan) $_view(-xpan)
+        set _settings(-ypan) $_view(-ypan)
+        return
+    }
+    if { $option == "click" } {
+        set _click(x) $x
+        set _click(y) $y
+        $itk_component(view) configure -cursor hand1
+    }
+    if { $option == "drag" || $option == "release" } {
+        set dx [expr ($_click(x) - $x)/double($w)]
+        set dy [expr ($_click(y) - $y)/double($h)]
+        set _click(x) $x
+        set _click(y) $y
+        set _view(-xpan) [expr $_view(-xpan) - $dx]
+        set _view(-ypan) [expr $_view(-ypan) - $dy]
+        PanCamera
+        set _settings(-xpan) $_view(-xpan)
+        set _settings(-ypan) $_view(-ypan)
+    }
+    if { $option == "release" } {
+        $itk_component(view) configure -cursor ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitSettings <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::InitSettings { args } {
+    foreach arg $args {
+        AdjustSetting $arg
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: AdjustSetting <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::AdjustSetting {what {value ""}} {
+    if {![isconnected]} {
+        return
+    }
+    switch -- $what {
+        "-axesvisible" {
+            SendCmd "axis visible $_settings($what)"
+        }
+        "-background" {
+            set bgcolor [$itk_component(background) value]
+            array set fgcolors {
+                "black" "white"
+                "white" "black"
+                "grey"  "black"
+            }
+            configure -plotbackground $bgcolor \
+                -plotforeground $fgcolors($bgcolor)
+            #DrawLegend $_current
+        }
+        "-colormap" {
+            set color [$itk_component(colormap) value]
+            set _settings($what) $color
+            # Only set the colormap on the first volume. Ignore the others.
+            #ResetColormap $color
+        }
+        "-cutplanesvisible" {
+            set bool $_settings($what)
+            # We only set cutplanes on the first dataset.
+            set datasets [CurrentDatasets -cutplanes]
+            set tag [lindex $datasets 0]
+            SendCmd "cutplane visible $bool $tag"
+        }
+        "-gridvisible" {
+            SendCmd "grid visible $_settings($what)"
+        }
+        "-isosurfaceshading" {
+            set val $_settings($what)
+            SendCmd "volume shading isosurface $val"
+        }
+        "-legendvisible" {
+            if { $_settings($what) } {
+                blt::table $itk_component(plotarea) \
+                    0,0 $itk_component(view) -fill both \
+                    1,0 $itk_component(legend) -fill x
+                blt::table configure $itk_component(plotarea) r1 -resize none
+            } else {
+                blt::table forget $itk_component(legend)
+            }
+        }
+        "-light" {
+            set val $_settings($what)
+            set diffuse [expr {0.01*$val}]
+            set ambient [expr {1.0-$diffuse}]
+            set specularLevel 0.3
+            set specularExp 90.0
+            SendCmd "volume shading ambient $ambient"
+            SendCmd "volume shading diffuse $diffuse"
+            SendCmd "volume shading specularLevel $specularLevel"
+            SendCmd "volume shading specularExp $specularExp"
+        }
+        "-light2side" {
+            set val $_settings($what)
+            SendCmd "volume shading light2side $val"
+        }
+        "-opacity" {
+            set val $_settings($what)
+            set sval [expr { 0.01 * double($val) }]
+            SendCmd "volume shading opacity $sval"
+        }
+        "-outlinevisible" {
+            SendCmd "volume outline state $_settings($what)"
+        }
+        "-thickness" {
+            if { [array names _activeTfs] > 0 } {
+                set val $_settings($what)
+                # Scale values between 0.00001 and 0.01000
+                set sval [expr {0.0001*double($val)}]
+                foreach tf [array names _activeTfs] {
+                    set _settings($tf${what}) $sval
+                    set _activeTfs($tf) 0
+                }
+                updateTransferFunctions
+            }
+        }
+        "-volume" {
+            set datasets [CurrentDatasets -cutplanes]
+            SendCmd "volume data state $_settings($what) $datasets"
+        }
+        "-xcutplaneposition" - "-ycutplaneposition" - "-zcutplaneposition" {
+            set axis [string range $what 1 1]
+            set pos [expr $_settings($what) * 0.01]
+            # We only set cutplanes on the first dataset.
+            set datasets [CurrentDatasets -cutplanes]
+            set tag [lindex $datasets 0]
+            SendCmd "cutplane position $pos $axis $tag"
+        }
+        "-xcutplanevisible" - "-ycutplanevisible" - "-zcutplanevisible" {
+            set axis [string range $what 1 1]
+            set bool $_settings($what)
+            # We only set cutplanes on the first dataset.
+            set datasets [CurrentDatasets -cutplanes]
+            set tag [lindex $datasets 0]
+            SendCmd "cutplane state $bool $axis $tag"
+            if { $bool } {
+                $itk_component(${axis}CutScale) configure -state normal \
+                    -troughcolor white
+            } else {
+                $itk_component(${axis}CutScale) configure -state disabled \
+                    -troughcolor grey82
+            }
+        }
+        default {
+            error "don't know how to fix $what"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: FixLegend
+#
+# Used internally to update the legend area whenever it changes size
+# or when the field changes.  Asks the server to send a new legend
+# for the current field.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::FixLegend {} {
+    set _resizeLegendPending 0
+    set lineht [font metrics $itk_option(-font) -linespace]
+    set w [expr {$_width-20}]
+    set h [expr {[winfo height $itk_component(legend)]-20-$lineht}]
+    if {$w > 0 && $h > 0 && [array names _activeTfs] > 0 && $_first != "" } {
+        set tag [lindex [CurrentDatasets] 0]
+        if { [info exists _dataset2style($tag)] } {
+            SendCmd "legend $_dataset2style($tag) $w $h"
+        }
+    }
+}
+
+#
+# NameTransferFunction --
+#
+# Creates a transfer function name based on the <style> settings in the
+# library run.xml file. This placeholder will be used later to create
+# and send the actual transfer function once the data info has been sent
+# to us by the render server. [We won't know the volume limits until the
+# server parses the 3D data and sends back the limits via ReceiveData.]
+#
+#       FIXME: The current way we generate transfer-function names completely
+#              ignores the -markers option.  The problem is that we are forced
+#              to compute the name from an increasing complex set of values:
+#              color, levels, markers.
+#
+itcl::body Rappture::NanovisViewer::NameTransferFunction { dataobj cname } {
+    array set style {
+        -color BCGYR
+        -levels 6
+    }
+    set tag $dataobj-$cname
+    array set style [lindex [$dataobj components -style $cname] 0]
+    set tf "$style(-color):$style(-levels)"
+    set _dataset2style($tag) $tf
+    lappend _style2datasets($tf) $tag
+    return $tf
+}
+
+#
+# ComputeTransferFunction --
+#
+# Computes and sends the transfer function to the render server.  It's
+# assumed that the volume data limits are known and that the global
+# transfer-functions slider values have been set up.  Both parts are
+# needed to compute the relative value (location) of the marker, and
+# the alpha map of the transfer function.
+#
+itcl::body Rappture::NanovisViewer::ComputeTransferFunction { tf } {
+    array set style {
+        -color BCGYR
+        -levels 6
+    }
+
+    foreach {dataobj cname} [split [lindex $_style2datasets($tf) 0] -] break
+    array set style [lindex [$dataobj components -style $cname] 0]
+
+    # We have to parse the style attributes for a volume using this
+    # transfer-function *once*.  This sets up the initial isomarkers for the
+    # transfer function.  The user may add/delete markers, so we have to
+    # maintain a list of markers for each transfer-function.  We use the one
+    # of the volumes (the first in the list) using the transfer-function as a
+    # reference.
+    #
+    # FIXME: The current way we generate transfer-function names completely
+    #        ignores the -markers option.  The problem is that we are forced
+    #        to compute the name from an increasing complex set of values:
+    #        color, levels, markers.
+    if { ![info exists _isomarkers($tf)] } {
+        # Have to defer creation of isomarkers until we have data limits
+        if { [info exists style(-markers)] &&
+             [llength $style(-markers)] > 0 } {
+            ParseMarkersOption $tf $style(-markers)
+        } else {
+            ParseLevelsOption $tf $style(-levels)
+        }
+    }
+    set cmap [ColorsToColormap $style(-color)]
+
+    # Transfer function should be normalized with [0,1] range
+    # The volume shading opacity setting is used to scale opacity
+    # in the volume shader.
+    set max 1.0
+
+    set isovalues {}
+    foreach m $_isomarkers($tf) {
+        lappend isovalues [$m relval]
+    }
+    # Sort the isovalues
+    set isovalues [lsort -real $isovalues]
+
+    if { ![info exists _settings($tf-thickness)]} {
+        set _settings($tf-thickness) 0.005
+    }
+    set delta $_settings($tf-thickness)
+
+    set first [lindex $isovalues 0]
+    set last [lindex $isovalues end]
+    set amap ""
+    if { $first == "" || $first != 0.0 } {
+        lappend amap 0.0 0.0
+    }
+    foreach x $isovalues {
+        set x1 [expr {$x-$delta-0.00001}]
+        set x2 [expr {$x-$delta}]
+        set x3 [expr {$x+$delta}]
+        set x4 [expr {$x+$delta+0.00001}]
+        if { $x1 < 0.0 } {
+            set x1 0.0
+        } elseif { $x1 > 1.0 } {
+            set x1 1.0
+        }
+        if { $x2 < 0.0 } {
+            set x2 0.0
+        } elseif { $x2 > 1.0 } {
+            set x2 1.0
+        }
+        if { $x3 < 0.0 } {
+            set x3 0.0
+        } elseif { $x3 > 1.0 } {
+            set x3 1.0
+        }
+        if { $x4 < 0.0 } {
+            set x4 0.0
+        } elseif { $x4 > 1.0 } {
+            set x4 1.0
+        }
+        # add spikes in the middle
+        lappend amap $x1 0.0
+        lappend amap $x2 $max
+        lappend amap $x3 $max
+        lappend amap $x4 0.0
+    }
+    if { $last == "" || $last != 1.0 } {
+        lappend amap 1.0 0.0
+    }
+    SendCmd "transfunc define $tf { $cmap } { $amap }"
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::NanovisViewer::plotbackground {
+    if { [isconnected] } {
+        set color $itk_option(-plotbackground)
+        set rgb [Color2RGB $color]
+        SendCmd "screen bgcolor $rgb"
+        $itk_component(legend) configure -background $color
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::NanovisViewer::plotforeground {
+    if { [isconnected] } {
+        set color $itk_option(-plotforeground)
+        set rgb [Color2RGB $color]
+        SendCmd "volume outline color $rgb"
+        SendCmd "grid axiscolor $rgb"
+        SendCmd "grid linecolor $rgb"
+        $itk_component(legend) itemconfigure text -fill $color
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotoutline
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::NanovisViewer::plotoutline {
+    # Must check if we are connected because this routine is called from the
+    # class body when the -plotoutline itk_option is defined.  At that point
+    # the NanovisViewer class constructor hasn't been called, so we can't
+    # start sending commands to visualization server.
+    if { [isconnected] } {
+        if {"" == $itk_option(-plotoutline)} {
+            SendCmd "volume outline state off"
+        } else {
+            SendCmd "volume outline state on"
+            SendCmd "volume outline color [Color2RGB $itk_option(-plotoutline)]"
+        }
+    }
+}
+
+#
+# The -levels option takes a single value that represents the number
+# of evenly distributed markers based on the current data range. Each
+# marker is a relative value from 0.0 to 1.0.
+#
+itcl::body Rappture::NanovisViewer::ParseLevelsOption { tf levels } {
+    set c $itk_component(legend)
+    regsub -all "," $levels " " levels
+    if {[string is int $levels]} {
+        for {set i 1} { $i <= $levels } {incr i} {
+            set x [expr {double($i)/($levels+1)}]
+            set m [Rappture::IsoMarker \#auto $c $this $tf]
+            $itk_component(legend) itemconfigure labels -fill $itk_option(-plotforeground)
+            $m relval $x
+            lappend _isomarkers($tf) $m
+        }
+    } else {
+        foreach x $levels {
+            set m [Rappture::IsoMarker \#auto $c $this $tf]
+            $itk_component(legend) itemconfigure labels -fill $itk_option(-plotforeground)
+            $m relval $x
+            lappend _isomarkers($tf) $m
+        }
+    }
+}
+
+#
+# The -markers option takes a list of zero or more values (the values
+# may be separated either by spaces or commas) that have the following
+# format:
+#
+#   N%  Percent of current total data range.  Converted to
+#       to a relative value between 0.0 and 1.0.
+#   N   Absolute value of marker.  If the marker is outside of
+#       the current range, it will be displayed on the outer
+#       edge of the legends, but it range it represents will
+#       not be seen.
+#
+itcl::body Rappture::NanovisViewer::ParseMarkersOption { tf markers } {
+    set c $itk_component(legend)
+    regsub -all "," $markers " " markers
+    foreach marker $markers {
+        set n [scan $marker "%g%s" value suffix]
+        if { $n == 2 && $suffix == "%" } {
+            # ${n}% : Set relative value.
+            set value [expr {$value * 0.01}]
+            set m [Rappture::IsoMarker \#auto $c $this $tf]
+            $itk_component(legend) itemconfigure labels -fill $itk_option(-plotforeground)
+            $m relval $value
+            lappend _isomarkers($tf) $m
+        } else {
+            # ${n} : Set absolute value.
+            set m [Rappture::IsoMarker \#auto $c $this $tf]
+            $itk_component(legend) itemconfigure labels -fill $itk_option(-plotforeground)
+            $m absval $value
+            lappend _isomarkers($tf) $m
+        }
+    }
+}
+
+itcl::body Rappture::NanovisViewer::updateTransferFunctions {} {
+    $_dispatcher event -idle !send_transfunc
+}
+
+itcl::body Rappture::NanovisViewer::AddIsoMarker { x y } {
+    if { $_first == "" } {
+        error "active transfer function isn't set"
+    }
+    set tag [lindex [CurrentDatasets] 0]
+    set tf $_dataset2style($tag)
+    set c $itk_component(legend)
+    set m [Rappture::IsoMarker \#auto $c $this $tf]
+    $itk_component(legend) itemconfigure labels -fill $itk_option(-plotforeground)
+    set w [winfo width $c]
+    $m relval [expr {double($x-10)/($w-20)}]
+    lappend _isomarkers($tf) $m
+    updateTransferFunctions
+    return 1
+}
+
+itcl::body Rappture::NanovisViewer::removeDuplicateMarker { marker x } {
+    set tf [$marker transferfunc]
+    set bool 0
+    if { [info exists _isomarkers($tf)] } {
+        set list {}
+        set marker [namespace tail $marker]
+        foreach m $_isomarkers($tf) {
+            set sx [$m screenpos]
+            if { $m != $marker } {
+                if { $x >= ($sx-3) && $x <= ($sx+3) } {
+                    $marker relval [$m relval]
+                    itcl::delete object $m
+                    bell
+                    set bool 1
+                    continue
+                }
+            }
+            lappend list $m
+        }
+        set _isomarkers($tf) $list
+        updateTransferFunctions
+    }
+    return $bool
+}
+
+itcl::body Rappture::NanovisViewer::overMarker { marker x } {
+    set tf [$marker transferfunc]
+    if { [info exists _isomarkers($tf)] } {
+        set marker [namespace tail $marker]
+        foreach m $_isomarkers($tf) {
+            set sx [$m screenpos]
+            if { $m != $marker } {
+                set bool [expr { $x >= ($sx-3) && $x <= ($sx+3) }]
+                $m activate $bool
+            }
+        }
+    }
+    return ""
+}
+
+itcl::body Rappture::NanovisViewer::limits { tf } {
+    set _limits(min) 0.0
+    set _limits(max) 1.0
+    if { ![info exists _style2datasets($tf)] } {
+        return [array get _limits]
+    }
+    set min ""; set max ""
+    foreach tag $_style2datasets($tf) {
+        if { ![info exists _serverDatasets($tag)] } {
+            continue
+        }
+        if { ![info exists _limits($tag-min)] } {
+            continue
+        }
+        if { $min == "" || $min > $_limits($tag-min) } {
+            set min $_limits($tag-min)
+        }
+        if { $max == "" || $max < $_limits($tag-max) } {
+            set max $_limits($tag-max)
+        }
+    }
+    if { $min != "" } {
+        set _limits(min) $min
+    }
+    if { $max != "" } {
+        set _limits(max) $max
+    }
+    return [array get _limits]
+}
+
+itcl::body Rappture::NanovisViewer::BuildViewTab {} {
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "View Settings" \
+        -icon [Rappture::icon wrench]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.axes \
+        -text "Axes" \
+        -variable [itcl::scope _settings(-axesvisible)] \
+        -command [itcl::code $this AdjustSetting -axesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.grid \
+        -text "Grid" \
+        -variable [itcl::scope _settings(-gridvisible)] \
+        -command [itcl::code $this AdjustSetting -gridvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.outline \
+        -text "Outline" \
+        -variable [itcl::scope _settings(-outlinevisible)] \
+        -command [itcl::code $this AdjustSetting -outlinevisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.legend \
+        -text "Legend" \
+        -variable [itcl::scope _settings(-legendvisible)] \
+        -command [itcl::code $this AdjustSetting -legendvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.volume \
+        -text "Volume" \
+        -variable [itcl::scope _settings(-volume)] \
+        -command [itcl::code $this AdjustSetting -volume] \
+        -font "Arial 9"
+
+    label $inner.background_l -text "Background" -font "Arial 9"
+    itk_component add background {
+        Rappture::Combobox $inner.background -width 10 -editable no
+    }
+    $inner.background choices insert end \
+        "black" "black" \
+        "white" "white" \
+        "grey"  "grey"
+
+    $itk_component(background) value $_settings(-background)
+    bind $inner.background <<Value>> \
+        [itcl::code $this AdjustSetting -background]
+
+    blt::table $inner \
+        0,0 $inner.axes -cspan 2 -anchor w \
+        1,0 $inner.grid -cspan 2 -anchor w \
+        2,0 $inner.outline -cspan 2 -anchor w \
+        3,0 $inner.volume -cspan 2 -anchor w \
+        4,0 $inner.legend -cspan 2 -anchor w \
+        5,0 $inner.background_l -anchor e -pady 2 \
+        5,1 $inner.background -fill x
+
+    blt::table configure $inner r* -resize none
+    blt::table configure $inner r6 -resize expand
+}
+
+itcl::body Rappture::NanovisViewer::BuildVolumeTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Volume Settings" \
+        -icon [Rappture::icon volume-on]]
+    $inner configure -borderwidth 4
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    checkbutton $inner.vol -text "Show volume" -font $fg \
+        -variable [itcl::scope _settings(-volume)] \
+        -command [itcl::code $this AdjustSetting -volume]
+    label $inner.shading -text "Shading:" -font $fg
+
+    checkbutton $inner.isosurface -text "Isosurface shading" -font $fg \
+        -variable [itcl::scope _settings(-isosurfaceshading)] \
+        -command [itcl::code $this AdjustSetting -isosurfaceshading]
+
+    checkbutton $inner.light2side -text "Two-sided lighting" -font $fg \
+        -variable [itcl::scope _settings(-light2side)] \
+        -command [itcl::code $this AdjustSetting -light2side]
+
+    label $inner.dim -text "Glow" -font $fg
+    ::scale $inner.light -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-light)] \
+        -width 10 \
+        -showvalue off -command [itcl::code $this AdjustSetting -light]
+    label $inner.bright -text "Surface" -font $fg
+
+    # Opacity
+    label $inner.clear -text "Clear" -font $fg
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-opacity)] \
+        -width 10 \
+        -showvalue off -command [itcl::code $this AdjustSetting -opacity]
+    label $inner.opaque -text "Opaque" -font $fg
+
+    # Tooth thickness
+    label $inner.thin -text "Thin" -font $fg
+    ::scale $inner.thickness -from 0 -to 1000 -orient horizontal \
+        -variable [itcl::scope _settings(-thickness)] \
+        -width 10 \
+        -showvalue off -command [itcl::code $this AdjustSetting -thickness]
+    label $inner.thick -text "Thick" -font $fg
+
+    # Colormap
+    label $inner.colormap_l -text "Colormap" -font "Arial 9"
+    itk_component add colormap {
+        Rappture::Combobox $inner.colormap -width 10 -editable no
+    }
+
+    $inner.colormap choices insert end [GetColormapList -includeNone]
+    $itk_component(colormap) value "BCGYR"
+    bind $inner.colormap <<Value>> \
+        [itcl::code $this AdjustSetting -colormap]
+
+    blt::table $inner \
+        0,0 $inner.vol -cspan 4 -anchor w -pady 2 \
+        1,0 $inner.shading -cspan 4 -anchor w -pady {10 2} \
+        2,0 $inner.light2side -cspan 4 -anchor w -pady 2 \
+        3,0 $inner.dim -anchor e -pady 2 \
+        3,1 $inner.light -cspan 2 -pady 2 -fill x \
+        3,3 $inner.bright -anchor w -pady 2 \
+        4,0 $inner.clear -anchor e -pady 2 \
+        4,1 $inner.opacity -cspan 2 -pady 2 -fill x \
+        4,3 $inner.opaque -anchor w -pady 2 \
+        5,0 $inner.thin -anchor e -pady 2 \
+        5,1 $inner.thickness -cspan 2 -pady 2 -fill x\
+        5,3 $inner.thick -anchor w -pady 2
+
+    blt::table configure $inner c0 c1 c3 r* -resize none
+    blt::table configure $inner r6 -resize expand
+}
+
+itcl::body Rappture::NanovisViewer::BuildCutplanesTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Cutplane Settings" \
+        -icon [Rappture::icon cutbutton]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Show Cutplanes" \
+        -variable [itcl::scope _settings(-cutplanesvisible)] \
+        -command [itcl::code $this AdjustSetting -cutplanesvisible] \
+        -font "Arial 9"
+
+    # X-value slicer...
+    itk_component add xCutButton {
+        Rappture::PushButton $inner.xbutton \
+            -onimage [Rappture::icon x-cutplane] \
+            -offimage [Rappture::icon x-cutplane] \
+            -command [itcl::code $this AdjustSetting -xcutplanevisible] \
+            -variable [itcl::scope _settings(-xcutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(xCutButton) \
+        "Toggle the X cut plane on/off"
+    #$itk_component(xCutButton) select
+
+    itk_component add xCutScale {
+        ::scale $inner.xval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue off \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this Slice move x] \
+            -variable [itcl::scope _settings(-xcutplaneposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(xCutScale) set 50
+    $itk_component(xCutScale) configure -state disabled
+    Rappture::Tooltip::for $itk_component(xCutScale) \
+        "@[itcl::code $this SlicerTip x]"
+
+    # Y-value slicer...
+    itk_component add yCutButton {
+        Rappture::PushButton $inner.ybutton \
+            -onimage [Rappture::icon y-cutplane] \
+            -offimage [Rappture::icon y-cutplane] \
+            -command [itcl::code $this AdjustSetting -ycutplanevisible] \
+            -variable [itcl::scope _settings(-ycutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(yCutButton) \
+        "Toggle the Y cut plane on/off"
+    #$itk_component(yCutButton) select
+
+    itk_component add yCutScale {
+        ::scale $inner.yval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue off \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this Slice move y] \
+            -variable [itcl::scope _settings(-ycutplaneposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    Rappture::Tooltip::for $itk_component(yCutScale) \
+        "@[itcl::code $this SlicerTip y]"
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(yCutScale) set 50
+    $itk_component(yCutScale) configure -state disabled
+
+    # Z-value slicer...
+    itk_component add zCutButton {
+        Rappture::PushButton $inner.zbutton \
+            -onimage [Rappture::icon z-cutplane] \
+            -offimage [Rappture::icon z-cutplane] \
+            -command [itcl::code $this AdjustSetting -zcutplanevisible] \
+            -variable [itcl::scope _settings(-zcutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(zCutButton) \
+        "Toggle the Z cut plane on/off"
+    #$itk_component(zCutButton) select
+
+    itk_component add zCutScale {
+        ::scale $inner.zval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue off \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this Slice move z] \
+            -variable [itcl::scope _settings(-zcutplaneposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    $itk_component(zCutScale) set 50
+    $itk_component(zCutScale) configure -state disabled
+    Rappture::Tooltip::for $itk_component(zCutScale) \
+        "@[itcl::code $this SlicerTip z]"
+
+    blt::table $inner \
+        0,1 $itk_component(xCutScale) \
+        0,2 $itk_component(yCutScale) \
+        0,3 $itk_component(zCutScale) \
+        1,1 $itk_component(xCutButton) \
+        1,2 $itk_component(yCutButton) \
+        1,3 $itk_component(zCutButton)
+
+    #    0,1 $inner.visible -anchor w -pady 2 -cspan 4 \
+
+    blt::table configure $inner r0 r1 r2 c* -resize none
+    blt::table configure $inner r3 c4 -resize expand
+    blt::table configure $inner c0 -width 2
+    blt::table configure $inner c1 c2 c3 -padx 2
+}
+
+itcl::body Rappture::NanovisViewer::BuildCameraTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Camera Settings" \
+        -icon [Rappture::icon camera]]
+    $inner configure -borderwidth 4
+
+    label $inner.view_l -text "view" -font "Arial 9"
+    set f [frame $inner.view]
+    foreach side { front back left right top bottom } {
+        button $f.$side  -image [Rappture::icon view$side] \
+            -command [itcl::code $this SetOrientation $side]
+        Rappture::Tooltip::for $f.$side "Change the view to $side"
+        pack $f.$side -side left
+    }
+
+    blt::table $inner \
+        0,0 $inner.view_l -anchor e -pady 2 \
+        0,1 $inner.view -anchor w -pady 2
+    blt::table configure $inner r0 -resize none
+
+    set row 1
+    set labels { qw qx qy qz xpan ypan zoom }
+    foreach tag $labels {
+        label $inner.${tag}label -text $tag -font "Arial 9"
+        entry $inner.${tag} -font "Arial 9"  -bg white \
+            -textvariable [itcl::scope _settings(-$tag)]
+        bind $inner.${tag} <Return> \
+            [itcl::code $this camera set -${tag}]
+        bind $inner.${tag} <KP_Enter> \
+            [itcl::code $this camera set -${tag}]
+        blt::table $inner \
+            $row,0 $inner.${tag}label -anchor e -pady 2 \
+            $row,1 $inner.${tag} -anchor w -pady 2
+        blt::table configure $inner r$row -resize none
+        incr row
+    }
+
+    blt::table configure $inner c* -resize none
+    blt::table configure $inner c2 -resize expand
+    blt::table configure $inner r$row -resize expand
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Slice move x|y|z <newval>
+#
+# Called automatically when the user drags the slider to move the
+# cut plane that slices 3D data.  Gets the current value from the
+# slider and moves the cut plane to the appropriate point in the
+# data set.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::Slice {option args} {
+    switch -- $option {
+        move {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Slice move x|y|z newval\""
+            }
+            set axis [lindex $args 0]
+            set newval [lindex $args 1]
+
+            set newpos [expr {0.01*$newval}]
+            set datasets [CurrentDatasets -cutplanes]
+            set tag [lindex $datasets 0]
+            SendCmd "cutplane position $newpos $axis $tag"
+        }
+        default {
+            error "bad option \"$option\": should be axis, move, or volume"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: SlicerTip <axis>
+#
+# Used internally to generate a tooltip for the x/y/z slicer controls.
+# Returns a message that includes the current slicer value.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NanovisViewer::SlicerTip {axis} {
+    set val [$itk_component(${axis}CutScale) get]
+    return "Move the [string toupper $axis] cut plane.\nCurrently:  $axis = $val%"
+}
+
+itcl::body Rappture::NanovisViewer::DoResize {} {
+    $_arcball resize $_width $_height
+    SendCmd "screen size $_width $_height"
+    set _resizePending 0
+}
+
+itcl::body Rappture::NanovisViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    $_arcball resize $w $h
+    if { !$_resizePending } {
+        $_dispatcher event -idle !resize
+        set _resizePending 1
+    }
+}
+
+itcl::body Rappture::NanovisViewer::EventuallyRedrawLegend {} {
+    if { !$_resizeLegendPending } {
+        $_dispatcher event -idle !legend
+        set _resizeLegendPending 1
+    }
+}
+
+#  camera --
+#
+itcl::body Rappture::NanovisViewer::camera {option args} {
+    switch -- $option {
+        "show" {
+            puts [array get _view]
+        }
+        "set" {
+            set what [lindex $args 0]
+            set x $_settings($what)
+            set code [catch { string is double $x } result]
+            if { $code != 0 || !$result } {
+                set _settings($what) $_view($what)
+                return
+            }
+            switch -- $what {
+                "-xpan" - "-ypan" {
+                    set _view($what) $_settings($what)
+                    PanCamera
+                }
+                "-qx" - "-qy" - "-qz" - "-qw" {
+                    set _view($what) $_settings($what)
+                    set q [ViewToQuaternion]
+                    $_arcball quaternion $q
+                    SendCmd "camera orient $q"
+                }
+                "-zoom" {
+                    set _view($what) $_settings($what)
+                    SendCmd "camera zoom $_view($what)"
+                }
+            }
+        }
+    }
+}
+
+itcl::body Rappture::NanovisViewer::GetVtkData { args } {
+    # FIXME: We can only put one component of one dataset in a single
+    # VTK file.  To download all components/results, we would need
+    # to put them in an archive (e.g. zip or tar file)
+    if { $_first != ""} {
+        set cname [lindex [$_first components] 0]
+        set bytes [$_first vtkdata $cname]
+        return [list .vtk $bytes]
+    }
+    puts stderr "Failed to get vtkdata"
+    return ""
+}
+
+itcl::body Rappture::NanovisViewer::GetImage { args } {
+    if { [image width $_image(download)] > 0 &&
+         [image height $_image(download)] > 0 } {
+        set bytes [$_image(download) data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        return [list .jpg $bytes]
+    }
+    return ""
+}
+
+itcl::body Rappture::NanovisViewer::BuildDownloadPopup { popup command } {
+    Rappture::Balloon $popup \
+        -title "[Rappture::filexfer::label downloadWord] as..."
+    set inner [$popup component inner]
+    label $inner.summary -text "" -anchor w
+
+    radiobutton $inner.vtk_button -text "VTK data file" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9" \
+        -value vtk
+    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
+
+    radiobutton $inner.image_button -text "Image File" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value image
+    Rappture::Tooltip::for $inner.image_button \
+        "Save as digital image."
+
+    button $inner.ok -text "Save" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command $command \
+        -compound left \
+        -image [Rappture::icon download]
+
+    button $inner.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command [list $popup deactivate] \
+        -compound left \
+        -image [Rappture::icon cancel]
+
+    blt::table $inner \
+        0,0 $inner.summary -cspan 2  \
+        1,0 $inner.vtk_button -anchor w -cspan 2 -padx { 4 0 } \
+        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
+        4,1 $inner.cancel -width .9i -fill y \
+        4,0 $inner.ok -padx 2 -width .9i -fill y
+    blt::table configure $inner r3 -height 4
+    blt::table configure $inner r4 -pady 4
+    raise $inner.image_button
+    $inner.vtk_button invoke
+    return $inner
+}
+
+itcl::body Rappture::NanovisViewer::SetOrientation { side } {
+    array set positions {
+        front "1 0 0 0"
+        back  "0 0 1 0"
+        left  "0.707107 0 -0.707107 0"
+        right "0.707107 0 0.707107 0"
+        top   "0.707107 -0.707107 0 0"
+        bottom "0.707107 0.707107 0 0"
+    }
+    foreach name { -qw -qx -qy -qz } value $positions($side) {
+        set _view($name) $value
+    }
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    set _view(-xpan) 0
+    set _view(-ypan) 0
+    set _view(-zoom) 1.0
+    set _settings(-xpan) $_view(-xpan)
+    set _settings(-ypan) $_view(-ypan)
+    set _settings(-zoom) $_view(-zoom)
+}
Index: /tags/1.6.0/gui/scripts/note.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/note.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/note.tcl	(revision 6168)
@@ -0,0 +1,209 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: Note - widget for displaying HTML notes
+#
+#  This widget represents an entry on a control panel that displays
+#  information to the user.  It is not an input; it helps to describe
+#  the interface.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require http
+
+itcl::class Rappture::Note {
+    inherit itk::Widget
+
+    # need this only to be like other controls
+    itk_option define -state state State ""
+
+    constructor {owner path args} { # defined below }
+
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+
+    protected method _setContents {info}
+    protected method _escapeChars {text}
+
+    private variable _owner ""    ;# thing managing this control
+    private variable _path ""     ;# path in XML to this note
+}
+
+itk::usual Note {
+    keep -cursor
+    keep -foreground -background
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Note::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+
+    #
+    # Create the widget and configure it properly based on other
+    # hints in the XML.
+    #
+    itk_component add scroller {
+        Rappture::Scroller $itk_interior.scroller \
+            -xscrollmode auto -yscrollmode auto
+    }
+    pack $itk_component(scroller) -expand yes -fill both
+
+    itk_component add html {
+        Rappture::HTMLviewer $itk_component(scroller).html
+    }
+    $itk_component(scroller) contents $itk_component(html)
+
+    eval itk_initialize $args
+
+    _setContents [string trim [$_owner xml get $_path.contents]]
+    set w [string trim [$_owner xml get $_path.width]]
+    if { $w != "" } {
+        $itk_component(html) configure -width $w
+    }
+    set h [string trim [$_owner xml get $_path.height]]
+    if { $h != "" } {
+        $itk_component(html) configure -height $h
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Note::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+
+    if {[llength $args] == 1} {
+        if {$onlycheck} {
+            # someday we may add validation...
+            return
+        }
+        set newval [lindex $args 0]
+        _setContents $newval
+        return $newval
+
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    #
+    # Query the value and return.
+    #
+    error "don't know how to check value of <note>"
+    return
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Note::label {} {
+    error "can't get label"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Note::tooltip {} {
+    error "can't get tooltip"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _setContents <info>
+#
+# Used internally to load HTML info into the display area for this
+# widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Note::_setContents {info} {
+    switch -regexp -- $info {
+        ^https?:// {
+            if {[catch {http::geturl $info} token] == 0} {
+                set html [http::data $token]
+                http::cleanup $token
+            } else {
+                set html "<html><body><h1>Oops! Internal Error</h1><p>[_escapeChars $token]</p></body></html>"
+            }
+            $itk_component(html) load $html
+        }
+        ^file:// {
+            set file [string range $info 7 end]
+            if {[file pathtype $file] != "absolute"} {
+                # find the file on a search path
+                set dir [[$_owner tool] installdir]
+                set searchlist [list $dir [file join $dir docs]]
+                foreach dir $searchlist {
+                    if {[file readable [file join $dir $file]]} {
+                        set file [file join $dir $file]
+                        break
+                    }
+                }
+            }
+
+            # load the contents of the file
+            set cmds {
+                set fid [open $file r]
+                set html [read $fid]
+                close $fid
+            }
+            if {[catch $cmds result]} {
+                set html "<html><body><h1>Oops! File Not Found</h1><p>[_escapeChars $result]</p></body></html>"
+            }
+
+            # not HTML? then escape nasty characters and display it.
+            if {![regexp {<html>.*</html>} $html]} {
+                set html "<html><body><p>[_escapeChars $html]</p></body></html>"
+            }
+            $itk_component(html) load $html -in $file
+        }
+        default {
+            set html "<html><body><p>[_escapeChars $info]</p></body></html>"
+            $itk_component(html) load $html
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _escapeChars <info>
+#
+# Used internally to escape HTML characters in ordinary text.  Used
+# when trying to display ordinary text, which may have things like
+# "<b>" or "x < 2" embedded within it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Note::_escapeChars {info} {
+    regsub -all & $info \001 info
+    regsub -all \" $info {\&quot;} info
+    regsub -all < $info {\&lt;} info
+    regsub -all > $info {\&gt;} info
+    regsub -all \001 $info {\&amp;} info
+    return $info
+}
Index: /tags/1.6.0/gui/scripts/notebook.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/notebook.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/notebook.tcl	(revision 6168)
@@ -0,0 +1,241 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: notebook - series of pages, but only one packed at a time
+#
+#  This widget acts as the core of a tabbed notebook, without the tabs.
+#  It allows you to create a series of pages, and display one page at
+#  time.  The overall widget is just big enough to accommodate all of
+#  the pages within it.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Notebook.width 0 widgetDefault
+option add *Notebook.height 0 widgetDefault
+
+itcl::class Rappture::Notebook {
+    inherit itk::Widget
+
+    itk_option define -width width Width 0
+    itk_option define -height height Height 0
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method insert {pos args}
+    public method delete {args}
+    public method index {name}
+    public method page {name}
+    public method current {args}
+
+    protected method _fixSize {}
+
+    private variable _count 0       ;# counter for unique names
+    private variable _dispatcher "" ;# dispatcher for !events
+    private variable _pages ""      ;# list of page frames
+    private variable _name2page     ;# maps name => frame for page
+    private variable _current ""    ;# page currently shown
+}
+
+itk::usual Notebook {
+    keep -background -cursor
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Notebook::constructor {args} {
+    pack propagate $itk_component(hull) no
+
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !fixsize
+    $_dispatcher dispatch $this !fixsize "[itcl::code $this _fixSize]; list"
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <pos> ?<name> <name>...?
+#
+# Used to insert one or more pages in the notebook.  Each page is
+# identified by its <name>.  Returns the widget name for each
+# page created.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Notebook::insert {pos args} {
+    set rlist ""
+    foreach name $args {
+        if {[lsearch $_pages $name] >= 0} {
+            error "page \"$name\" already exists"
+        }
+        set pname "page[incr _count]"
+        itk_component add $pname {
+            frame $itk_interior.$pname
+        }
+        set _pages [linsert $_pages $pos $name]
+        set _name2page($name) $itk_component($pname)
+
+        bind $itk_component($pname) <Configure> \
+            [itcl::code $_dispatcher event -after 100 !fixsize]
+
+        lappend rlist $itk_component($pname)
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete -all
+# USAGE: delete ?<name> <name>...?
+#
+# Used to delete one or more pages from the notebook.  With the -all
+# flag, it deletes all pages.  Otherwise, it deletes each page
+# by name.  You can also delete a page by using an index of the
+# form "@n".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Notebook::delete {args} {
+    if {$args == "-all"} {
+        set args $_pages
+    }
+    foreach name $args {
+        set i [index $name]
+        set pname [lindex $_pages $i]
+        if {$pname != ""} {
+            set _pages [lreplace $_pages $i $i]
+            destroy $_name2page($pname)
+            unset _name2page($pname)
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: index <name>|@n
+#
+# Used to convert a page <name> to its corresponding integer index.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Notebook::index {name} {
+    set i [lsearch $_pages $name]
+    if {$i >= 0} {
+        return $i
+    }
+    if {[regexp {^@([0-9]+)$} $name match i]} {
+        return $i
+    }
+    error "bad page name \"$name\": should be @int or one of [join [lsort $_pages] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: page <name>|@n
+#
+# Used to convert a page <name> to its corresponding frame.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Notebook::page {name} {
+    set i [index $name]
+    set name [lindex $_pages $i]
+    return $_name2page($name)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: current ?<name>|next>|<back?
+#
+# Used to query/set the current page in the notebook.  With no args,
+# it returns the name of the current page.  Otherwise, it sets the
+# current page.  The special token "next>" is used to set the notebook
+# to the next logical page, and "<back" sets to the previous.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Notebook::current {args} {
+    switch -- [llength $args] {
+        0 {
+            return $_current
+        }
+        1 {
+            set name [lindex $args 0]
+            set index 0
+            if {$name == "next>"} {
+                if {$_current == ""} {
+                    set index 0
+                } else {
+                    set i [lsearch -exact $_pages $_current]
+                    set index [expr {$i+1}]
+                    if {$index >= [llength $_pages]} {
+                        set index [expr {[llength $_pages]-1}]
+                    }
+                }
+            } elseif {$name == "<back"} {
+                if {$_current == ""} {
+                    set index end
+                } else {
+                    set i [lsearch -exact $_pages $_current]
+                    set index [expr {$i-1}]
+                    if {$index < 0} {
+                        set index 0
+                    }
+                }
+            } else {
+                set index [lsearch -exact $_pages $name]
+                if {$index < 0} {
+                    error "can't move to page \"$name\""
+                }
+            }
+
+            set _current [lindex $_pages $index]
+
+            foreach w [pack slaves $itk_component(hull)] {
+                pack forget $w
+            }
+            pack $_name2page($_current) -expand yes -fill both
+        }
+        default {
+            error "wrong # args: should be \"current name|next>|<back\""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+#
+# Invoked automatically whenever a page changes size or the -width
+# or -height options change.  When the -width/-height are zero, this
+# method computes the minimum size needed to accommodate all pages.
+# Otherwise, it passes the size request onto the hull.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Notebook::_fixSize {} {
+    if {$itk_option(-width) <= 0} {
+        set maxw 0
+        foreach name $_pages {
+            set w [winfo reqwidth $_name2page($name)]
+            if {$w > $maxw} { set maxw $w }
+        }
+        component hull configure -width $maxw
+    } else {
+        component hull configure -width $itk_option(-width)
+    }
+
+    if {$itk_option(-height) <= 0} {
+        set maxh 0
+        foreach name $_pages {
+            set h [winfo reqheight $_name2page($name)]
+            if {$h > $maxh} { set maxh $h }
+        }
+        component hull configure -height $maxh
+    } else {
+        component hull configure -height $itk_option(-height)
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -width
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Notebook::width {
+    $_dispatcher event -idle !fixsize
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -height
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Notebook::height {
+    $_dispatcher event -idle !fixsize
+}
Index: /tags/1.6.0/gui/scripts/numberentry.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/numberentry.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/numberentry.tcl	(revision 6168)
@@ -0,0 +1,243 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: NumberEntry - widget for entering numeric values
+#
+#  This widget represents a <number> entry on a control panel.
+#  It is used to enter numeric values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itcl::class Rappture::NumberEntry {
+    inherit itk::Widget
+
+    itk_option define -state state State "normal"
+
+    constructor {owner path args} { # defined below }
+
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+    protected method _newValue {}
+
+    private variable _owner ""    ;# thing managing this control
+    private variable _path ""     ;# path in XML to this number
+}
+
+itk::usual NumberEntry {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberEntry::constructor {owner path args} {
+    set varname [lindex [split $path ()] end-1]
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+
+    #
+    # Figure out what sort of control to create
+    #
+    set presets ""
+    foreach pre [$_owner xml children -type preset $path] {
+        set value [string trim [$_owner xml get $path.$pre.value]]
+        set label [string trim [$_owner xml get $path.$pre.label]]
+        lappend presets $value $label
+    }
+
+    set class Rappture::Gauge
+    set units [string trim [$_owner xml get $path.units]]
+    if {$units != ""} {
+        set desc [Rappture::Units::description $units]
+        if {[string match temperature* $desc]} {
+            set class Rappture::TemperatureGauge
+        }
+    }
+
+    # check for number UQ flag
+    set use_uq [$_owner xml get $path.uq]
+    if {$use_uq == ""} {
+        # check for global UQ flag
+        set use_uq [[$_owner tool] xml get tool.uq]
+    }
+
+    if {$use_uq == ""} {
+        set use_uq no
+    } else {
+        set use_uq [string trim $use_uq]
+    }
+
+    #
+    # Create the widget and configure it properly based on other
+    # hints in the XML.
+    #
+    itk_component add gauge {
+        $class $itk_interior.gauge -uq $use_uq -units $units -presets $presets \
+            -log $path -varname $varname -label [label]
+    }
+    pack $itk_component(gauge) -expand yes -fill both
+    bind $itk_component(gauge) <<Value>> [itcl::code $this _newValue]
+
+    set min [string trim [$_owner xml get $path.min]]
+    if {$min ne ""} {
+        $itk_component(gauge) configure -minvalue $min
+    }
+
+    set max [string trim [$_owner xml get $path.max]]
+    if {$max ne ""} {
+        $itk_component(gauge) configure -maxvalue $max
+    }
+
+    if {$class == "Rappture::Gauge" && $min ne "" && $max ne ""} {
+        set color [string trim [$_owner xml get $path.about.color]]
+        if {$color == ""} {
+            # deprecated.  Color should be in "about"
+            set color [string trim [$_owner xml get $path.color]]
+        }
+        if {$color != ""}  {
+            if {$units != ""} {
+                set min [Rappture::Units::convert $min -to $units -units off]
+                set max [Rappture::Units::convert $max -to $units -units off]
+            }
+            # For compatibility. If only one color use white for min
+            if {[llength $color] == 1} {
+                set color [list $min white $max $color]
+            }
+            $itk_component(gauge) configure \
+                -spectrum [Rappture::Spectrum ::\#auto $color -units $units]
+        }
+    }
+
+    # if the control has an icon, plug it in
+    set str [string trim [$_owner xml get $path.about.icon]]
+    if {$str ne ""} {
+        $itk_component(gauge) configure -image [image create photo -data $str]
+    }
+    eval itk_initialize $args
+
+    #
+    # Assign the default value to this widget, if there is one.
+    #
+    set str [string trim [$_owner xml get $path.default]]
+    if {$str ne ""} {
+        $itk_component(gauge) value $str
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberEntry::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+
+    if {[llength $args] == 1} {
+        if {$onlycheck} {
+            # someday we may add validation...
+            return
+        }
+        set newval [string trim [lindex $args 0]]
+        $itk_component(gauge) value $newval
+        return $newval
+
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    #
+    # Query the value and return.
+    #
+    return [$itk_component(gauge) value]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberEntry::label {} {
+    set label [string trim [$_owner xml get $_path.about.label]]
+    if {"" == $label} {
+        set label "Number"
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberEntry::tooltip {} {
+    set str   [string trim [$_owner xml get $_path.about.description]]
+
+    set units [string trim [$_owner xml get $_path.units]]
+    set min   [string trim [$_owner xml get $_path.min]]
+    set max   [string trim [$_owner xml get $_path.max]]
+
+    if {$units != "" || $min != "" || $max != ""} {
+        append str "\n\nEnter a number"
+
+        if {$min != "" && $max != ""} {
+            append str " between $min and $max"
+        } elseif {$min != ""} {
+            append str " greater than $min"
+        } elseif {$max != ""} {
+            append str " less than $max"
+        }
+
+        if {$units != ""} {
+            set desc [Rappture::Units::description $units]
+            append str " with units of $desc"
+        }
+    }
+    return [string trim $str]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _newValue
+#
+# Invoked automatically whenever the value in the gauge changes.
+# Sends a <<Value>> event to notify clients of the change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberEntry::_newValue {} {
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::NumberEntry::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    $itk_component(gauge) configure -state $itk_option(-state)
+}
Index: /tags/1.6.0/gui/scripts/numberresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/numberresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/numberresult.tcl	(revision 6168)
@@ -0,0 +1,1567 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: numberresult - plot of numbers in a ResultSet
+#
+#  This widget is an X/Y plot, meant to points produced as <number>
+#  or <integer> outputs from the run of a Rappture tool.  Use the
+#  "add" and "delete" methods to control the points showing on the
+#  plot.  One interesting thing that this result does is configure
+#  the x-axis according to the current result control (simulation
+#  number or other active parameter).
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+set autocolors {
+    #0000cd
+    #cd0000
+    #00cd00
+    #3a5fcd
+    #cdcd00
+    #cd1076
+    #009acd
+    #00c5cd
+    #a2b5cd
+    #7ac5cd
+    #66cdaa
+    #a2cd5a
+    #cd9b9b
+    #cdba96
+    #cd3333
+    #cd6600
+    #cd8c95
+    #cd00cd
+    #9a32cd
+    #6ca6cd
+    #9ac0cd
+    #9bcd9b
+    #00cd66
+    #cdc673
+    #cdad00
+    #cd5555
+    #cd853f
+    #cd7054
+    #cd5b45
+    #cd6889
+    #cd69c9
+    #551a8b
+}
+
+option add *NumberResult.width 3i widgetDefault
+option add *NumberResult.height 3i widgetDefault
+option add *NumberResult.gridColor #d9d9d9 widgetDefault
+option add *NumberResult.activeColor blue widgetDefault
+option add *NumberResult.dimColor gray widgetDefault
+option add *NumberResult.controlBackground gray widgetDefault
+option add *NumberResult.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *NumberResult.autoColors $autocolors widgetDefault
+option add *NumberResult*Balloon*Entry.background white widgetDefault
+
+itcl::class Rappture::NumberResult {
+    inherit itk::Widget
+
+    itk_option define -gridcolor gridColor GridColor ""
+    itk_option define -activecolor activeColor ActiveColor ""
+    itk_option define -dimcolor dimColor DimColor ""
+    itk_option define -autocolors autoColors AutoColors ""
+
+    constructor {args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method parameters {title args}
+    public method download {option args}
+
+    protected method Rebuild {}
+    protected method ResetLimits {}
+    protected method Zoom {option args}
+    protected method Hilite {state x y}
+    protected method Axis {option args}
+    protected method GetAxes {dataobj}
+    protected method GetValue {dataobj {which both}}
+    protected method GetInfo {what dataobj {which both}}
+    private method ResetLegend {}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+
+    private variable _dlist ""     ;# list of data objects
+    private variable _dataobj2color   ;# maps data object => plotting color
+    private variable _dataobj2width   ;# maps data object => line width
+    private variable _dataobj2raise   ;# maps data object => raise flag 0/1
+    private variable _dataobj2desc    ;# maps data object => description of data
+    private variable _dataobj2param   ;# maps data object => x-axis value
+    private variable _elem2dataobj    ;# maps graph element => data object
+    private variable _label2axis   ;# maps axis label => axis ID
+    private variable _params ""    ;# complete description of x-axis
+    private variable _xval2label   ;# maps x-axis value => tick label
+    private variable _xlabels 0    ;# non-zero => use _xval2label
+    private variable _limits       ;# axis limits:  x-min, x-max, etc.
+
+    private variable _hilite       ;# info for element currently highlighted
+    private variable _axis         ;# info for axis manipulations
+    private variable _axisPopup    ;# info for axis being edited in popup
+    common _downloadPopup          ;# download options from popup
+}
+
+itk::usual NumberResult {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    array set _downloadPopup {
+        format csv
+    }
+
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    itk_component add main {
+        Rappture::SidebarFrame $itk_interior.main
+    }
+    pack $itk_component(main) -expand yes -fill both
+    set f [$itk_component(main) component controls]
+
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    pack $itk_component(reset) -padx 4 -pady 2 -anchor e
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    set f [$itk_component(main) component frame]
+    itk_component add plot {
+        blt::graph $f.plot \
+            -highlightthickness 0 -plotpadx 0 -plotpady 4 \
+            -rightmargin 10
+    } {
+        keep -background -foreground -cursor -font
+    }
+    pack $itk_component(plot) -expand yes -fill both
+
+    $itk_component(plot) pen configure activeLine \
+        -symbol square -pixels 3 -linewidth 2 \
+        -outline black -fill red -color black
+
+    # Add bindings so you can mouse over points to see values:
+    bind $itk_component(plot) <Motion> \
+        [itcl::code $this Hilite at %x %y]
+    bind $itk_component(plot) <Leave> \
+        [itcl::code $this Hilite off %x %y]
+
+    #
+    # Add support for editing axes:
+    #
+    Rappture::Balloon $itk_component(hull).axes -title "Axis Options"
+    set inner [$itk_component(hull).axes component inner]
+
+    label $inner.labell -text "Label:"
+    entry $inner.label -width 15 -highlightbackground $itk_option(-background)
+    grid $inner.labell -row 1 -column 0 -sticky e
+    grid $inner.label -row 1 -column 1 -sticky ew -pady 4
+
+    label $inner.minl -text "Minimum:"
+    entry $inner.min -width 15 -highlightbackground $itk_option(-background)
+    grid $inner.minl -row 2 -column 0 -sticky e
+    grid $inner.min -row 2 -column 1 -sticky ew -pady 4
+
+    label $inner.maxl -text "Maximum:"
+    entry $inner.max -width 15 -highlightbackground $itk_option(-background)
+    grid $inner.maxl -row 3 -column 0 -sticky e
+    grid $inner.max -row 3 -column 1 -sticky ew -pady 4
+
+    label $inner.formatl -text "Format:"
+    Rappture::Combobox $inner.format -width 15 -editable no
+    $inner.format choices insert end \
+        "%.6g"  "Auto"         \
+        "%.0f"  "X"          \
+        "%.1f"  "X.X"          \
+        "%.2f"  "X.XX"         \
+        "%.3f"  "X.XXX"        \
+        "%.6f"  "X.XXXXXX"     \
+        "%.1e"  "X.Xe+XX"      \
+        "%.2e"  "X.XXe+XX"     \
+        "%.3e"  "X.XXXe+XX"    \
+        "%.6e"  "X.XXXXXXe+XX"
+    grid $inner.formatl -row 4 -column 0 -sticky e
+    grid $inner.format -row 4 -column 1 -sticky ew -pady 4
+
+    label $inner.scalel -text "Scale:"
+    frame $inner.scales
+    radiobutton $inner.scales.linear -text "Linear" \
+        -variable [itcl::scope _axisPopup(scale)] -value "linear"
+    pack $inner.scales.linear -side left
+    radiobutton $inner.scales.log -text "Logarithmic" \
+        -variable [itcl::scope _axisPopup(scale)] -value "log"
+    pack $inner.scales.log -side left
+    grid $inner.scalel -row 5 -column 0 -sticky e
+    grid $inner.scales -row 5 -column 1 -sticky ew -pady 4
+
+    foreach axis {x y} {
+        set _axisPopup(format-$axis) "%.6g"
+    }
+    Axis scale x linear
+    Axis scale y linear
+
+    $itk_component(plot) legend configure -hide yes
+
+    #
+    # Add legend for editing hidden/elements:
+    #
+    set inner [$itk_component(main) insert end \
+        -title "Legend" \
+        -icon [Rappture::icon wrench]]
+    $inner configure -borderwidth 4
+
+    itk_component add legend {
+        Rappture::XyLegend $inner.legend $itk_component(plot)
+    }
+    pack $itk_component(legend) -expand yes -fill both
+    after idle [itcl::code $this ResetLegend]
+
+    # quick-and-dirty zoom functionality, for now...
+    Blt_ZoomStack $itk_component(plot)
+    eval itk_initialize $args
+    set _hilite(elem) ""
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::destructor {} {
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::add {dataobj {settings ""}} {
+    array set params {
+        -color auto
+        -brightness 0
+        -width 1
+        -type "line"
+        -raise 0
+        -linestyle solid
+        -description ""
+        -param ""
+    }
+    array set params $settings
+
+    # if type is set to "scatter", then override the width
+    if {"scatter" == $params(-type)} {
+        set params(-width) 0
+    }
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        set params(-color) #0000ff
+    }
+
+    # if -brightness is set, then update the color
+    if {$params(-brightness) != 0} {
+        set params(-color) [Rappture::color::brightness \
+            $params(-color) $params(-brightness)]
+
+        set bg [$itk_component(plot) cget -plotbackground]
+        foreach {h s v} [Rappture::color::RGBtoHSV $bg] break
+        if {$v > 0.5} {
+            set params(-color) [Rappture::color::brightness_max \
+                $params(-color) 0.8]
+        } else {
+            set params(-color) [Rappture::color::brightness_min \
+                $params(-color) 0.2]
+        }
+    }
+
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+        set _dataobj2color($dataobj) $params(-color)
+        set _dataobj2width($dataobj) $params(-width)
+        set _dataobj2raise($dataobj) $params(-raise)
+        set _dataobj2desc($dataobj) $params(-description)
+        set _dataobj2param($dataobj) $params(-param)
+
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::get {} {
+    # put the dataobj list in order according to -raise options
+    set dlist $_dlist
+    foreach obj $dlist {
+        if {[info exists _dataobj2raise($obj)] && $_dataobj2raise($obj)} {
+            set i [lsearch -exact $dlist $obj]
+            if {$i >= 0} {
+                set dlist [lreplace $dlist $i $i]
+                lappend dlist $obj
+            }
+        }
+    }
+    return $dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj2> <dataobj2> ...?
+#
+# Clients use this to delete a data object from the plot.  If no
+# objects are specified, then all objects are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::delete {args} {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+
+    # delete all specified data objects
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if {$pos >= 0} {
+            set _dlist [lreplace $_dlist $pos $pos]
+            catch {unset _dataobj2color($dataobj)}
+            catch {unset _dataobj2width($dataobj)}
+            catch {unset _dataobj2raise($dataobj)}
+            catch {unset _dataobj2desc($dataobj)}
+            catch {unset _dataobj2param($dataobj)}
+            foreach elem [array names _elem2dataobj] {
+                if {$_elem2dataobj($elem) == $dataobj} {
+                    unset _elem2dataobj($elem)
+                }
+            }
+            set changed 1
+        }
+    }
+
+    # if anything changed, then rebuild the plot
+    if {$changed} {
+        $_dispatcher event -idle !rebuild
+    }
+    # Nothing left? then start over with auto colors
+    if {[llength $_dlist] == 0} {
+        set _autoColorI 0
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<dataobj1> <dataobj2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given data objects.  This
+# accounts for all objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::scale {args} {
+    set allx [$itk_component(plot) x2axis use]
+    lappend allx x  ;# fix main x-axis too
+    foreach axis $allx {
+        Axis scale $axis linear
+    }
+
+    set ally [$itk_component(plot) y2axis use]
+    lappend ally y  ;# fix main y-axis too
+    foreach axis $ally {
+        Axis scale $axis linear
+    }
+
+    catch {unset _limits}
+    foreach dataobj $args {
+        # find the axes for this data object (e.g., {x y2})
+        foreach {map(x) map(y)} [GetAxes $dataobj] break
+
+        foreach axis {x y} {
+            # get defaults for both linear and log scales
+            foreach type {lin log} {
+                # store results -- ex: _limits(x2log-min)
+                set id $map($axis)$type
+                if {$axis == "x"} {
+                    set min [set max ""]
+                    foreach {xlab xval} [lrange $_params 1 end] {
+                        if {$type == "log"} {
+                            set xval [expr {abs($xval)}]
+                            if {$xval == 0} {
+                                continue
+                            }
+                        }
+                        if {"" == $min} {
+                            set min [set max $xval]
+                        } else {
+                            if {$xval < $min} { set min $xval }
+                            if {$xval > $max} { set max $xval }
+                        }
+                    }
+                } else {
+                    set min [set max [GetValue $dataobj y]]
+                }
+
+                if {"" != $min && "" != $max} {
+                    if {![info exists _limits($id-min)]} {
+                        set _limits($id-min) $min
+                        set _limits($id-max) $max
+                    } else {
+                        if {$min < $_limits($id-min)} {
+                            set _limits($id-min) $min
+                        }
+                        if {$max > $_limits($id-max)} {
+                            set _limits($id-max) $max
+                        }
+                    }
+                }
+            }
+        }
+    }
+    ResetLimits
+}
+
+# ----------------------------------------------------------------------
+# USAGE: parameters <title> <label1> <value1> <label2> <value2> ...
+#
+# Called when the resultset changes to convey information about the
+# current set of results being displayed.  The <title> is the name
+# of the parameter being explored, and each <label>/<value> represents
+# a data point.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::parameters {args} {
+    set _params $args
+
+    #
+    # Fix up the x-axis limits for the primary axis.
+    #
+    foreach type {lin log} {
+        # store results -- ex: _limits(x2log-min)
+        set id x$type
+
+        set min [set max ""]
+        foreach {xlab xval} [lrange $_params 1 end] {
+            if {$type == "log"} {
+                set xval [expr {abs($xval)}]
+                if {$xval == 0} {
+                    continue
+                }
+            }
+            if {"" == $min} {
+                set min [set max $xval]
+            } else {
+                if {$xval < $min} { set min $xval }
+                if {$xval > $max} { set max $xval }
+            }
+        }
+
+        if {"" != $min && "" != $max} {
+            set _limits($id-min) $min
+            set _limits($id-max) $max
+        }
+    }
+    ResetLimits
+
+    #
+    # Figure out a good set of ticks for the x-axis.
+    # If this is a numeric axis, then labels will be like
+    #   0.3V <=> 0.3, 0.4V <=> 0.4, etc.
+    # Otherwise, they will be more like
+    #   red <=> 0, green <=> 1, etc.
+    #
+    set havenums 1
+    catch {unset _xval2label}
+    foreach {xlab xval} [lrange $_params 1 end] {
+        set _xval2label($xval) $xlab
+        if {![string match $xval* $xlab]} {
+            set havenums 0
+        }
+    }
+    if {$havenums} {
+        set _xlabels 0
+        $itk_component(plot) xaxis configure -command "" -majorticks ""
+        if {![$itk_component(plot) axis cget x -logscale]} {
+            $itk_component(plot) xaxis configure \
+                -command [itcl::code $this Axis format x]
+        }
+    } else {
+        set _xlabels 1
+        $itk_component(plot) xaxis configure \
+            -command [itcl::code $this Axis format x] \
+            -majorticks [lsort -real [array names _xval2label]]
+    }
+
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::download {option args} {
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            set popup .numberresultdownload
+            if {![winfo exists .numberresultdownload]} {
+                # if we haven't created the popup yet, do it now
+                Rappture::Balloon $popup \
+                    -title "[Rappture::filexfer::label downloadWord] as..."
+                set inner [$popup component inner]
+                label $inner.summary -text "" -anchor w
+                pack $inner.summary -side top
+                radiobutton $inner.csv -text "Data as Comma-Separated Values" \
+                    -variable Rappture::NumberResult::_downloadPopup(format) \
+                    -value csv
+                pack $inner.csv -anchor w
+                radiobutton $inner.image -text "Image (PS/PDF/PNG/JPEG)" \
+                    -variable Rappture::NumberResult::_downloadPopup(format) \
+                    -value image
+                pack $inner.image -anchor w
+                button $inner.go -text [Rappture::filexfer::label download] \
+                    -command [lindex $args 0]
+                pack $inner.go -pady 4
+            } else {
+                set inner [$popup component inner]
+            }
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            $inner.summary configure -text "[Rappture::filexfer::label downloadWord] $num in the following format:"
+            update idletasks ;# fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .numberresultdownload
+            if {[winfo exists .numberresultdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                csv {
+                    # March through the values in order and report
+                    # all data points
+                    set csvdata ""
+                    set xtitle [$itk_component(plot) xaxis cget -title]
+                    set ytitle [$itk_component(plot) yaxis cget -title]
+
+                    set desc ""
+                    set dataobj [lindex [get] end]
+
+                    # the "Simulation" axis shows all values
+                    # -- no need for assumptions
+                    if {$xtitle != "Simulation"
+                        && [info exists _dataobj2desc($dataobj)]} {
+                        foreach line [split $_dataobj2desc($dataobj) \n] {
+                            # skip the current axis and the Simulation axis
+                            # Other values show assumptions about values reported
+                            if {[string match "$xtitle =*" $line]
+                                || [string match "Simulation =*" $line]} {
+                                continue
+                            }
+                            set indent [expr {("" == $desc) ? "for:" : "    "}]
+                            append desc " $indent $line\n"
+                        }
+                    }
+                    if {[string length $desc] > 0} {
+                        append csvdata "[string repeat - 60]\n"
+                        append csvdata $desc
+                        append csvdata "[string repeat - 60]\n"
+                    }
+
+                    append csvdata "$xtitle, $ytitle\n"
+                    foreach xval [lsort -real [array names _xval2label]] {
+                        set dataobj ""
+                        set param [list $_xval2label($xval) $xval]
+                        foreach obj $_dlist {
+                            if {[info exists _dataobj2param($obj)]
+                                && [string equal $_dataobj2param($obj) $param]} {
+                                set dataobj $obj
+                                break
+                            }
+                        }
+                        if {"" != $dataobj} {
+                            set yval [$dataobj get current]
+                            append csvdata "$_xval2label($xval), $yval\n"
+                        }
+                    }
+                    return [list .txt $csvdata]
+                }
+                image {
+                    set popup .numberresultprintdownload
+                    if { ![winfo exists $popup] } {
+                        # Create a popup for the print dialog
+                        Rappture::Balloon $popup -title "Save as image..."
+                        set inner [$popup component inner]
+                        # Create the print dialog widget and add it to the
+                        # the balloon popup.
+                        Rappture::XyPrint $inner.print
+                        $popup configure \
+                            -deactivatecommand [list $inner.print reset]
+                        blt::table $inner 0,0 $inner.print -fill both
+                    }
+                    update
+                    # Activate the popup and call for the output.
+                    foreach { widget toolName plotName } $args break
+                    $popup activate $widget left
+                    set inner [$popup component inner]
+                    set output [$inner.print print $itk_component(plot) \
+                                    $toolName $plotName]
+                    $popup deactivate
+                    return $output
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::Rebuild {} {
+    set g $itk_component(plot)
+
+    # first clear out the widget
+    eval $g element delete [$g element names]
+    eval $g marker delete [$g marker names]
+    foreach axis [$g axis names] {
+        $g axis configure $axis -hide yes -checklimits no
+    }
+    # Presumably you want at least an X-axis and Y-axis displayed.
+    $g xaxis configure -hide no
+    $g yaxis configure -hide no
+    catch {unset _label2axis}
+
+    #
+    # Scan through all objects and create a list of all axes.
+    # The first x-axis gets mapped to "x".  The second, to "x2".
+    # Beyond that, we must create new axes "x3", "x4", etc.
+    # We do the same for y.
+    #
+    set anum(x) 0
+    set anum(y) 0
+    foreach dataobj [get] {
+        foreach ax {x y} {
+            set label [GetInfo about.label $dataobj ${ax}]
+            if {"" != $label} {
+                if {![info exists _label2axis($ax-$label)]} {
+                    switch [incr anum($ax)] {
+                        1 { set axis $ax }
+                        2 { set axis ${ax}2 }
+                        default {
+                            set axis $ax$anum($ax)
+                            catch {$g axis create $axis}
+                        }
+                    }
+                    $g axis configure $axis -title $label -hide no \
+                        -checklimits no
+                    set _label2axis($ax-$label) $axis
+
+                    # if this axis has a description, add it as a tooltip
+                    set desc [string trim [GetInfo about.description $dataobj ${ax}]]
+                    Rappture::Tooltip::text $g-$axis $desc
+                }
+            }
+        }
+    }
+
+    #
+    # All of the extra axes get mapped to the x2/y2 (top/right)
+    # position.
+    #
+    set all ""
+    foreach ax {x y} {
+        lappend all $ax
+
+        set extra ""
+        for {set i 2} {$i <= $anum($ax)} {incr i} {
+            lappend extra ${ax}$i
+        }
+        eval lappend all $extra
+        $g ${ax}2axis use $extra
+        if {$ax == "y"} {
+            $g configure -rightmargin [expr {($extra == "") ? 10 : 0}]
+        }
+    }
+
+    foreach axis $all {
+        set _axisPopup(format-$axis) "%.6g"
+
+        $g axis bind $axis <Enter> \
+            [itcl::code $this Axis hilite $axis on]
+        $g axis bind $axis <Leave> \
+            [itcl::code $this Axis hilite $axis off]
+        $g axis bind $axis <ButtonPress-1> \
+            [itcl::code $this Axis click $axis %x %y]
+        $g axis bind $axis <B1-Motion> \
+            [itcl::code $this Axis drag $axis %x %y]
+        $g axis bind $axis <ButtonRelease-1> \
+            [itcl::code $this Axis release $axis %x %y]
+        $g axis bind $axis <KeyPress> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+    }
+
+    #
+    # Plot all of the data objects.
+    #
+    set count 0
+    foreach dataobj $_dlist {
+        set label [$dataobj get about.label]
+        foreach {mapx mapy} [GetAxes $dataobj] break
+
+        foreach {xv yv} [GetValue $dataobj] break
+
+        if {[info exists _dataobj2color($dataobj)]} {
+            set color $_dataobj2color($dataobj)
+        } else {
+            set color [$dataobj get about.color]
+            if {"" == $color} {
+                set color $itk_option(-activecolor)
+            }
+        }
+
+        set sym square
+        set pixels 6
+
+        set elem "elem[incr count]"
+        set _elem2dataobj($elem) $dataobj
+        $g element create $elem -x $xv -y $yv \
+            -symbol $sym -pixels $pixels -label $label \
+            -color $color -mapx $mapx -mapy $mapy
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ResetLimits
+#
+# Used internally to apply automatic limits to the axes for the
+# current plot.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::ResetLimits {} {
+    set g $itk_component(plot)
+
+    #
+    # HACK ALERT!
+    # Use this code to fix up the y-axis limits for the BLT graph.
+    # The auto-limits don't always work well.  We want them to be
+    # set to a "nice" number slightly above or below the min/max
+    # limits.
+    #
+    foreach axis [$g axis names] {
+        if {[info exists _limits(${axis}lin-min)]} {
+            set log [$g axis cget $axis -logscale]
+            if {$log} {
+                set min $_limits(${axis}log-min)
+                if {$min == 0} { set min 1 }
+                set max $_limits(${axis}log-max)
+                if {$max == 0} { set max 1 }
+
+                if {$min == $max} {
+                    set logmin [expr {floor(log10(abs(0.9*$min)))}]
+                    set logmax [expr {ceil(log10(abs(1.1*$max)))}]
+                } else {
+                    set logmin [expr {floor(log10(abs($min)))}]
+                    set logmax [expr {ceil(log10(abs($max)))}]
+                    if {[string match y* $axis]} {
+                        # add a little padding
+                        set delta [expr {$logmax-$logmin}]
+                        if {$delta == 0} { set delta 1 }
+                        set logmin [expr {$logmin-0.05*$delta}]
+                        set logmax [expr {$logmax+0.05*$delta}]
+                    }
+                }
+                if {$logmin < -300} {
+                    set min 1e-300
+                } elseif {$logmin > 300} {
+                    set min 1e+300
+                } else {
+                    set min [expr {pow(10.0,$logmin)}]
+                }
+
+                if {$logmax < -300} {
+                    set max 1e-300
+                } elseif {$logmax > 300} {
+                    set max 1e+300
+                } else {
+                    set max [expr {pow(10.0,$logmax)}]
+                }
+            } else {
+                set min $_limits(${axis}lin-min)
+                set max $_limits(${axis}lin-max)
+
+                # add a little padding
+                set delta [expr {$max-$min}]
+                set min [expr {$min-0.05*$delta}]
+                set max [expr {$max+0.05*$delta}]
+            }
+            if {$min < $max} {
+                $g axis configure $axis -min $min -max $max
+            } else {
+                $g axis configure $axis -min "" -max ""
+            }
+        } else {
+            $g axis configure $axis -min "" -max ""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::Zoom {option args} {
+    switch -- $option {
+        reset {
+            ResetLimits
+            Rappture::Logger::log number zoom -reset
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Hilite <state> <x> <y>
+#
+# Called automatically when the user brushes one of the elements
+# on the plot.  Causes the element to highlight and a tooltip to
+# pop up with element info.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::Hilite {state x y} {
+    set g $itk_component(plot)
+    set elem ""
+
+    # Peek inside of Blt_ZoomStack package to see if we're currently in the
+    # middle of a zoom selection.
+    if {[info exists ::zoomInfo($g,corner)] && $::zoomInfo($g,corner) == "B" } {
+        return;
+    }
+    set tip ""
+    if {$state == "at"} {
+        if {[$g element closest $x $y info -interpolate yes]} {
+            # for dealing with xy line plots
+            set elem $info(name)
+            # Some elements are generated dynamically and therefore will
+            # not have a data object associated with them.
+            set mapx [$g element cget $elem -mapx]
+            set mapy [$g element cget $elem -mapy]
+            if {[info exists _elem2dataobj($elem)]} {
+                foreach {mapx mapy} [GetAxes $_elem2dataobj($elem)] break
+            }
+
+            # search again for an exact point -- this time don't interpolate
+            set tip ""
+            if {[$g element closest $x $y info -interpolate no]
+                  && $info(name) == $elem} {
+                set x [$g axis transform $mapx $info(x)]
+                set y [$g axis transform $mapy $info(y)]
+
+                if {[info exists _elem2dataobj($elem)]} {
+                    set dataobj $_elem2dataobj($elem)
+                    set tip [GetInfo about.label $dataobj y]
+                    if {[info exists info(y)]} {
+                        set val [Axis format y dummy $info(y)]
+                        set units [GetInfo units $dataobj y]
+                        append tip "\n$val$units"
+
+                        if {[info exists _dataobj2param($dataobj)]} {
+                            set val [lindex $_dataobj2param($dataobj) 0]
+                            append tip " @ $val"
+                        }
+                    }
+                    set tip [string trim $tip]
+                }
+            }
+            set state 1
+        } elseif {[$g element closest $x $y info -interpolate no]} {
+            # for dealing with xy scatter plot
+            set elem $info(name)
+            foreach {mapx mapy} [GetAxes $_elem2dataobj($elem)] break
+
+            # search again for an exact point -- this time don't interpolate
+            set tip ""
+            if {$info(name) == $elem} {
+                set x [$g axis transform $mapx $info(x)]
+                set y [$g axis transform $mapy $info(y)]
+
+                if {[info exists _elem2dataobj($elem)]} {
+                    set dataobj $_elem2dataobj($elem)
+                    set tip [GetInfo about.label $dataobj y]
+                    if {[info exists info(y)]} {
+                        set val [Axis format y dummy $info(y)]
+                        set units [GetInfo units $dataobj y]
+                        append tip "\n$val$units"
+
+                        if {[info exists _dataobj2param($dataobj)]} {
+                            set val [lindex $_dataobj2param($dataobj) 0]
+                            append tip " @ $val"
+                        }
+                    }
+                    set tip [string trim $tip]
+                }
+            }
+            set state 1
+        } else {
+            set state 0
+        }
+    }
+
+    if {$state} {
+        #
+        # Highlight ON:
+        # - activate trace
+        # - multiple axes? dim other axes
+        # - pop up tooltip about data
+        if {$_hilite(elem) ne ""} {
+            $g element deactivate $_hilite(elem)
+        }
+        $g crosshairs configure -hide yes
+        Rappture::Tooltip::tooltip cancel
+
+        $g element activate $elem
+        set _hilite(elem) $elem
+
+        set dlist [$g element show]
+        set i [lsearch -exact $dlist $elem]
+        if {$i >= 0} {
+            set dlist [lreplace $dlist $i $i]
+            lappend dlist $elem
+            $g element show $dlist
+        }
+
+        foreach {mapx mapy} [GetAxes $_elem2dataobj($elem)] break
+
+        set allx [$g x2axis use]
+        if {[llength $allx] > 0} {
+            lappend allx x  ;# fix main x-axis too
+            foreach axis $allx {
+                if {$axis == $mapx} {
+                    $g axis configure $axis -color $itk_option(-foreground) \
+                        -titlecolor $itk_option(-foreground)
+                } else {
+                    $g axis configure $axis -color $itk_option(-dimcolor) \
+                        -titlecolor $itk_option(-dimcolor)
+                }
+            }
+        }
+        set ally [$g y2axis use]
+        if {[llength $ally] > 0} {
+            lappend ally y  ;# fix main y-axis too
+            foreach axis $ally {
+                if {$axis == $mapy} {
+                    $g axis configure $axis -color $itk_option(-foreground) \
+                        -titlecolor $itk_option(-foreground)
+                } else {
+                    $g axis configure $axis -color $itk_option(-dimcolor) \
+                        -titlecolor $itk_option(-dimcolor)
+                }
+            }
+        }
+
+        if {"" != $tip} {
+            $g crosshairs configure -hide no -position @$x,$y
+
+            if {$x > 0.5*[winfo width $g]} {
+                if {$x < 4} {
+                    set tipx "-0"
+                } else {
+                    set tipx "-[expr {$x-4}]"  ;# move tooltip to the left
+                }
+            } else {
+                if {$x < -4} {
+                    set tipx "+0"
+                } else {
+                    set tipx "+[expr {$x+4}]"  ;# move tooltip to the right
+                }
+            }
+            if {$y > 0.5*[winfo height $g]} {
+                if {$y < 4} {
+                    set tipy "-0"
+                } else {
+                    set tipy "-[expr {$y-4}]"  ;# move tooltip to the top
+                }
+            } else {
+                if {$y < -4} {
+                    set tipy "+0"
+                } else {
+                    set tipy "+[expr {$y+4}]"  ;# move tooltip to the bottom
+                }
+            }
+            Rappture::Tooltip::text $g $tip
+            Rappture::Tooltip::tooltip show $g $tipx,$tipy
+            Rappture::Logger::log tooltip -for "number probe -- [string map [list \n " // "] $tip]"
+        }
+    } else {
+        #
+        # Highlight OFF:
+        # - deactivate (color back to normal)
+        # - put all axes back to normal color
+        # - take down tooltip
+        #
+        if {$_hilite(elem) ne ""} {
+            $g element deactivate $_hilite(elem)
+        }
+
+        set allx [$g x2axis use]
+        if {[llength $allx] > 0} {
+            lappend allx x  ;           # fix main x-axis too
+            foreach axis $allx {
+                $g axis configure $axis -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+            }
+        }
+
+        set ally [$g y2axis use]
+        if {[llength $ally] > 0} {
+            lappend ally y  ;           # fix main y-axis too
+            foreach axis $ally {
+                $g axis configure $axis -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+            }
+        }
+
+        $g crosshairs configure -hide yes
+
+        # only cancel in plotting area or we'll mess up axes
+        if {[$g inside $x $y]} {
+            Rappture::Tooltip::tooltip cancel
+        }
+
+        # there is no currently highlighted element
+        set _hilite(elem) ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Axis hilite <axis> <state>
+#
+# USAGE: Axis click <axis> <x> <y>
+# USAGE: Axis drag <axis> <x> <y>
+# USAGE: Axis release <axis> <x> <y>
+#
+# USAGE: Axis edit <axis>
+# USAGE: Axis changed <axis> <what>
+# USAGE: Axis format <axis> <widget> <value>
+# USAGE: Axis scale <axis> linear|log
+#
+# Used internally to handle editing of the x/y axes.  The hilite
+# operation causes the axis to light up.  The edit operation pops
+# up a panel with editing options.  The changed operation applies
+# changes from the panel.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::Axis {option args} {
+    set inner [$itk_component(hull).axes component inner]
+
+    switch -- $option {
+        hilite {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Axis hilite axis state\""
+            }
+            set g $itk_component(plot)
+            set axis [lindex $args 0]
+            set state [lindex $args 1]
+
+            if {$state} {
+                $g axis configure $axis \
+                    -color $itk_option(-activecolor) \
+                    -titlecolor $itk_option(-activecolor)
+
+                set x [expr {[winfo pointerx $g]+4}]
+                set y [expr {[winfo pointery $g]+4}]
+                Rappture::Tooltip::tooltip pending $g-$axis @$x,$y
+            } else {
+                $g axis configure $axis \
+                    -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+                Rappture::Tooltip::tooltip cancel
+            }
+        }
+        click {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis click axis x y\""
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+            set g $itk_component(plot)
+
+            set _axis(moved) 0
+            set _axis(click-x) $x
+            set _axis(click-y) $y
+            foreach {min max} [$g axis limits $axis] break
+            set _axis(min0) $min
+            set _axis(max0) $max
+            Rappture::Tooltip::tooltip cancel
+        }
+        drag {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis drag axis x y\""
+            }
+            if {![info exists _axis(moved)]} {
+                return  ;# must have skipped click event -- ignore
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+            set g $itk_component(plot)
+
+            if {[info exists _axis(click-x)] && [info exists _axis(click-y)]} {
+                foreach {x0 y0 pw ph} [$g extents plotarea] break
+                switch -glob $axis {
+                  x* {
+                    set pix $x
+                    set pix0 $_axis(click-x)
+                    set pixmin $x0
+                    set pixmax [expr {$x0+$pw}]
+                  }
+                  y* {
+                    set pix $y
+                    set pix0 $_axis(click-y)
+                    set pixmin [expr {$y0+$ph}]
+                    set pixmax $y0
+                  }
+                }
+                set log [$g axis cget $axis -logscale]
+                set min $_axis(min0)
+                set max $_axis(max0)
+                set dpix [expr {abs($pix-$pix0)}]
+                set v0 [$g axis invtransform $axis $pixmin]
+                set v1 [$g axis invtransform $axis [expr {$pixmin+$dpix}]]
+                if {$log} {
+                    set v0 [expr {log10($v0)}]
+                    set v1 [expr {log10($v1)}]
+                    set min [expr {log10($min)}]
+                    set max [expr {log10($max)}]
+                }
+
+                if {$pix > $pix0} {
+                    set delta [expr {$v1-$v0}]
+                } else {
+                    set delta [expr {$v0-$v1}]
+                }
+                set min [expr {$min-$delta}]
+                set max [expr {$max-$delta}]
+                if {$log} {
+                    set min [expr {pow(10.0,$min)}]
+                    set max [expr {pow(10.0,$max)}]
+                }
+                $g axis configure $axis -min $min -max $max
+
+                # move axis, don't edit on release
+                set _axis(move) 1
+            }
+        }
+        release {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis release axis x y\""
+            }
+            if {![info exists _axis(moved)]} {
+                return  ;# must have skipped click event -- ignore
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+
+            if {!$_axis(moved)} {
+                # small movement? then treat as click -- pop up axis editor
+                set dx [expr {abs($x-$_axis(click-x))}]
+                set dy [expr {abs($y-$_axis(click-y))}]
+                if {$dx < 2 && $dy < 2} {
+                    Axis edit $axis
+                    return
+                }
+            }
+            # one last movement
+            Axis drag $axis $x $y
+
+            # log this change
+            Rappture::Logger::log number axis $axis \
+                -drag [$itk_component(plot) axis limits $axis]
+
+            catch {unset _axis}
+        }
+        edit {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"Axis edit axis\""
+            }
+            set axis [lindex $args 0]
+            set _axisPopup(current) $axis
+
+            # apply last value when deactivating
+            $itk_component(hull).axes configure -deactivatecommand \
+                [itcl::code $this Axis changed $axis focus]
+
+            # fix axis label controls...
+            set label [$itk_component(plot) axis cget $axis -title]
+            $inner.label delete 0 end
+            $inner.label insert end $label
+            bind $inner.label <Return> \
+                [itcl::code $this Axis changed $axis label]
+            bind $inner.label <KP_Enter> \
+                [itcl::code $this Axis changed $axis label]
+            bind $inner.label <FocusOut> \
+                [itcl::code $this Axis changed $axis label]
+
+            # fix min/max controls...
+            foreach {min max} [$itk_component(plot) axis limits $axis] break
+            $inner.min delete 0 end
+            $inner.min insert end $min
+            bind $inner.min <Return> \
+                [itcl::code $this Axis changed $axis min]
+            bind $inner.min <KP_Enter> \
+                [itcl::code $this Axis changed $axis min]
+            bind $inner.min <FocusOut> \
+                [itcl::code $this Axis changed $axis min]
+
+            $inner.max delete 0 end
+            $inner.max insert end $max
+            bind $inner.max <Return> \
+                [itcl::code $this Axis changed $axis max]
+            bind $inner.max <KP_Enter> \
+                [itcl::code $this Axis changed $axis max]
+            bind $inner.max <FocusOut> \
+                [itcl::code $this Axis changed $axis max]
+
+            # fix format control...
+            set fmts [$inner.format choices get -value]
+            set i [lsearch -exact $fmts $_axisPopup(format-$axis)]
+            if {$i < 0} { set i 0 }  ;# use Auto choice
+            $inner.format value [$inner.format choices get -label $i]
+
+            bind $inner.format <<Value>> \
+                [itcl::code $this Axis changed $axis format]
+
+            # fix scale control...
+            if {[$itk_component(plot) axis cget $axis -logscale]} {
+                set _axisPopup(scale) "log"
+                $inner.format configure -state disabled
+            } else {
+                set _axisPopup(scale) "linear"
+                $inner.format configure -state normal
+            }
+            $inner.scales.linear configure \
+                -command [itcl::code $this Axis changed $axis scale]
+            $inner.scales.log configure \
+                -command [itcl::code $this Axis changed $axis scale]
+
+            #
+            # Figure out where the window should pop up.
+            #
+            set x [winfo rootx $itk_component(plot)]
+            set y [winfo rooty $itk_component(plot)]
+            set w [winfo width $itk_component(plot)]
+            set h [winfo height $itk_component(plot)]
+            foreach {x0 y0 pw ph} [$itk_component(plot) extents plotarea] break
+            switch -glob -- $axis {
+                x {
+                    set x [expr {round($x + $x0+0.5*$pw)}]
+                    set y [expr {round($y + $y0+$ph + 0.5*($h-$y0-$ph))}]
+                    set dir "above"
+                }
+                x* {
+                    set x [expr {round($x + $x0+0.5*$pw)}]
+                    set dir "below"
+                    set allx [$itk_component(plot) x2axis use]
+                    set max [llength $allx]
+                    set i [lsearch -exact $allx $axis]
+                    set y [expr {round($y + ($i+0.5)*$y0/double($max))}]
+                }
+                y {
+                    set x [expr {round($x + 0.5*$x0)}]
+                    set y [expr {round($y + $y0+0.5*$ph)}]
+                    set dir "right"
+                }
+                y* {
+                    set y [expr {round($y + $y0+0.5*$ph)}]
+                    set dir "left"
+                    set ally [$itk_component(plot) y2axis use]
+                    set max [llength $ally]
+                    set i [lsearch -exact $ally $axis]
+                    set y [expr {round($y + ($i+0.5)*$y0/double($max))}]
+                    set x [expr {round($x+$x0+$pw + ($i+0.5)*($w-$x0-$pw)/double($max))}]
+                }
+            }
+            $itk_component(hull).axes activate @$x,$y $dir
+        }
+        changed {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Axis changed axis what\""
+            }
+            set axis [lindex $args 0]
+            set what [lindex $args 1]
+            if {$what == "focus"} {
+                set what [focus]
+                if {[winfo exists $what]} {
+                    set what [winfo name $what]
+                }
+            }
+
+            switch -- $what {
+                label {
+                    set val [$inner.label get]
+                    $itk_component(plot) axis configure $axis -title $val
+                    Rappture::Logger::log number axis $axis -title $val
+                }
+                min {
+                    set val [$inner.min get]
+                    if {![string is double -strict $val]} {
+                        Rappture::Tooltip::cue $inner.min "Must be a number"
+                        bell
+                        return
+                    }
+
+                    set max [lindex [$itk_component(plot) axis limits $axis] 1]
+                    if {$val >= $max} {
+                        Rappture::Tooltip::cue $inner.min "Must be <= max ($max)"
+                        bell
+                        return
+                    }
+                    catch {
+                        # can fail in log mode
+                        $itk_component(plot) axis configure $axis -min $val
+                        Rappture::Logger::log number axis $axis -min $val
+                    }
+                    foreach {min max} [$itk_component(plot) axis limits $axis] break
+                    $inner.min delete 0 end
+                    $inner.min insert end $min
+                }
+                max {
+                    set val [$inner.max get]
+                    if {![string is double -strict $val]} {
+                        Rappture::Tooltip::cue $inner.max "Should be a number"
+                        bell
+                        return
+                    }
+
+                    set min [lindex [$itk_component(plot) axis limits $axis] 0]
+                    if {$val <= $min} {
+                        Rappture::Tooltip::cue $inner.max "Must be >= min ($min)"
+                        bell
+                        return
+                    }
+                    catch {
+                        # can fail in log mode
+                        $itk_component(plot) axis configure $axis -max $val
+                        Rappture::Logger::log number axis $axis -max $val
+                    }
+                    foreach {min max} [$itk_component(plot) axis limits $axis] break
+                    $inner.max delete 0 end
+                    $inner.max insert end $max
+                }
+                format {
+                    set fmt [$inner.format translate [$inner.format value]]
+                    set _axisPopup(format-$axis) $fmt
+
+                    # force a refresh
+                    $itk_component(plot) axis configure $axis -min \
+                        [$itk_component(plot) axis cget $axis -min]
+                }
+                scale {
+                    Axis scale $axis $_axisPopup(scale)
+                    Rappture::Logger::log number axis $axis -scale $_axisPopup(scale)
+
+                    if {$_axisPopup(scale) == "log"} {
+                        $inner.format configure -state disabled
+                    } else {
+                        $inner.format configure -state normal
+                    }
+
+                    foreach {min max} [$itk_component(plot) axis limits $axis] break
+                    $inner.min delete 0 end
+                    $inner.min insert end $min
+                    $inner.max delete 0 end
+                    $inner.max insert end $max
+                }
+                default {
+                    # be lenient so we can handle the "focus" case
+                }
+            }
+        }
+        format {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis format axis widget value\""
+            }
+            set axis [lindex $args 0]
+            set value [lindex $args 2]
+
+            if {$axis == "x" && $_xlabels
+                  && [info exists _xval2label($value)]} {
+                return $_xval2label($value)
+            }
+            if {[$itk_component(plot) axis cget $axis -logscale]} {
+                set fmt "%.6g"
+            } else {
+                set fmt $_axisPopup(format-$axis)
+            }
+            return [format $fmt $value]
+        }
+        scale {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Axis scale axis type\""
+            }
+            set axis [lindex $args 0]
+            set type [lindex $args 1]
+
+            if {$type == "log"} {
+                catch {$itk_component(plot) axis configure $axis -logscale 1}
+                # leave format alone in log mode
+                $itk_component(plot) axis configure $axis -command ""
+            } else {
+                catch {$itk_component(plot) axis configure $axis -logscale 0}
+                # use special formatting for linear mode
+                $itk_component(plot) axis configure $axis -command \
+                    [itcl::code $this Axis format $axis]
+            }
+        }
+        default {
+            error "bad option \"$option\": should be changed, edit, hilite, or format"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: GetAxes <dataobj>
+#
+# Used internally to figure out the axes used to plot the given
+# <dataobj>.  Returns a list of the form {x y}, where x is the
+# x-axis name (x, x2, x3, etc.), and y is the y-axis name.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::GetAxes {dataobj} {
+    # rebuild if needed, so we know about the axes
+    if {[$_dispatcher ispending !rebuild]} {
+        $_dispatcher cancel !rebuild
+        $_dispatcher event -now !rebuild
+    }
+
+    # what is the x axis?  x? x2? x3? ...
+    set xlabel "Simulation #"
+    if {[info exists _label2axis(x-$xlabel)]} {
+        set mapx $_label2axis(x-$xlabel)
+    } else {
+        set mapx "x"
+    }
+
+    # what is the y axis?  y? y2? y3? ...
+    set ylabel [$dataobj get about.label]
+    if {[info exists _label2axis(y-$ylabel)]} {
+        set mapy $_label2axis(y-$ylabel)
+    } else {
+        set mapy "y"
+    }
+
+    return [list $mapx $mapy]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: GetValue <dataobj> ?<axis>?
+#
+# Used internally to get the {x y} value from this <dataobj>.
+# Returns x, y, or {x y} in the expected units for this object.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::GetValue {dataobj {which both}} {
+    if {[info exists _dataobj2param($dataobj)]} {
+        set x [lindex $_dataobj2param($dataobj) 1]
+    } else {
+        set x 0
+    }
+
+    set y [$dataobj get current]
+    set units [$dataobj get units]
+    if {$units != ""} {
+        set y [Rappture::Units::convert $y -context $units -to $units -units off]
+    }
+    if {![string is double -strict $y]} {
+        set y 0
+    }
+
+    switch -- $which {
+        x { return $x }
+        y { return $y }
+        both { return [list $x $y] }
+        default { error "bad value \"$which\": should be x, y, both" }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: GetInfo <what> <dataobj> ?<axis>?
+#
+# Used internally to get the {x y} labels from this <dataobj>.
+# Returns xlabel, ylabel, or {xlabel ylabel}.
+# ----------------------------------------------------------------------
+itcl::body Rappture::NumberResult::GetInfo {what dataobj {which both}} {
+    set x [lindex $_params 0]
+    set y [$dataobj get $what]
+    if {$what == "about.label"} {
+        set units [$dataobj get units]
+        if {"" != $units} {
+            append y " ($units)"
+        }
+    }
+
+    switch -- $which {
+        x { return $x }
+        y { return $y }
+        both { return [list $x $y] }
+        default { error "bad value \"$which\": should be x, y, both" }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -gridcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::NumberResult::gridcolor {
+    if {"" == $itk_option(-gridcolor)} {
+        $itk_component(plot) grid off
+    } else {
+        $itk_component(plot) grid configure -color $itk_option(-gridcolor)
+        $itk_component(plot) grid on
+    }
+}
+
+#
+# ResetLegend --
+#
+itcl::body Rappture::NumberResult::ResetLegend {} {
+    set g $itk_component(plot)
+    update idletasks
+    $itk_component(legend) reset [$g element show]
+}
Index: /tags/1.6.0/gui/scripts/page.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/page.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/page.tcl	(revision 6168)
@@ -0,0 +1,241 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: page - single page of widgets
+#
+#  This widget is a smart frame.  It takes the XML description for
+#  a Rappture <input> or an <input><phase> and decides how to lay
+#  out the widgets for the controls within it.  It uses various
+#  heuristics to achieve a decent layout under a variety of
+#  circumstances.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itcl::class Rappture::Page {
+    inherit itk::Widget
+
+    constructor {owner path args} { # defined below }
+
+    protected method _buildGroup {frame xmlobj path}
+    protected method _link {xmlobj path widget path2}
+
+    private variable _owner ""       ;# thing managing this page
+}
+
+itk::usual Page {
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Page::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] || !$valid} {
+        error "object \"$owner\" is not a Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set xmlobj [$owner xml object]
+
+    set type [$xmlobj element -as type $path]
+    if {$type != "input" && $type != "phase"} {
+        error "bad path \"$path\" in $xmlobj: should be <input> or <input><phase>"
+    }
+
+    eval itk_initialize $args
+
+    # build all of the controls for this page
+    _buildGroup $itk_interior $xmlobj $path
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _buildGroup <frame> <xmlobj> <path>
+#
+# Used internally when this page is being constructed to build the
+# controls within the group at the specified <path> in the <xmlobj>.
+# The controls are added to the given <frame>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Page::_buildGroup {frame xmlobj path} {
+    frame $frame.results
+    pack $frame.results -side right -fill y
+
+    set deveditor ""
+
+    #
+    # Scan through all remaining input elements.  If there is an
+    # ambient group, then add its children to the device editor,
+    # if there is one.
+    #
+    set num 0
+    set clist [$xmlobj children $path]
+    while {[llength $clist] > 0} {
+        set cname [lindex $clist 0]
+        set clist [lrange $clist 1 end]
+
+        set type [$xmlobj element -as type $path.$cname]
+        if {$type == "about"} {
+            continue
+        }
+        if {$type == "loader"} {
+            #
+            # Add <loader>'s at the top of the page.
+            #
+            if {![winfo exists $frame.loaders]} {
+                frame $frame.loaders
+                pack $frame.loaders -side top -fill x
+
+                frame $frame.loaders.sep -height 2 \
+                    -borderwidth 1 -relief sunken
+                pack $frame.loaders.sep -side bottom -fill x -pady 4
+            }
+            set w "$frame.loaders.l[incr num]"
+            Rappture::Controls $w $_owner
+            pack $w -fill x
+            $w insert end $path.$cname
+        } elseif {$type == "structure"} {
+            #
+            # Add <structure>'s as the central element of the page.
+            #
+            set w "$frame.device[incr num]"
+            Rappture::DeviceEditor ::$w $_owner@$path.$cname.current
+            pack $w -expand yes -fill both
+            $_owner widgetfor $path.$cname $w
+            bind $w <<Value>> [list $_owner changed $path.$cname]
+
+            if {"" == $deveditor} {
+                set deveditor $w
+            }
+
+            # if there's a default value, load it now
+            if {"" != [$xmlobj element -as type $path.$cname.current]} {
+                set elem $path.$cname.current
+            } else {
+                set elem $path.$cname.default
+            }
+            if {"" != [$xmlobj element -as type $elem]} {
+                set val [$xmlobj get $elem]
+                if {[string length $val] > 0} {
+                    $w value $val
+                    $xmlobj put $path.$cname.current $val
+                } else {
+                    set obj [$xmlobj element -as object $elem]
+                    $w value $obj
+                    $xmlobj put $path.$cname.current $obj
+                }
+            }
+
+            # if there's a link, then set up a callback to load from it
+            set link [$xmlobj get $path.$cname.link]
+            if {"" != $link} {
+                $_owner notify add $this $link \
+                    [itcl::code $this _link $xmlobj $link $w $path.$cname]
+            }
+        } elseif {$type == "tool"} {
+            set service [Rappture::Service ::#auto $_owner $path.$cname]
+            #
+            # Scan through all extra inputs associated with this subtool
+            # and create corresponding inputs in the top-level tool.
+            # Then, add the input names to the list being processed here,
+            # so that we'll create the controls during subsequent passes
+            # through the loop.
+            #
+            set extra ""
+            foreach obj [$service input] {
+                set cname [$obj element]
+                $xmlobj copy $path.$cname from $obj ""
+                lappend extra $cname
+            }
+
+            #
+            # If there's a control for this service, then add it
+            # to the end of the extra controls added above.
+            #
+            foreach obj [$service control] {
+                set cname [$obj element]
+                $xmlobj copy $path.$cname from $obj ""
+                $xmlobj put $path.$cname.service $service
+                lappend extra $cname
+            }
+            if {[llength $extra] > 0} {
+                set clist [eval linsert [list $clist] 0 $extra]
+            }
+
+            #
+            # Scan through all outputs associated with this subtool
+            # and create any corresponding feedback widgets.
+            #
+            foreach obj [$service output] {
+                set cname [$obj element]
+                $xmlobj copy $cname from $obj ""
+
+                # pick a good size based on output type
+                set w $frame.results.result[incr num]
+                set type [$obj element -as type]
+                switch -- $type {
+                    number - integer - boolean - choice {
+                        Rappture::ResultViewer $w -width 0 -height 0
+                        pack $w -fill x -padx 4 -pady 4
+                    }
+                    default {
+                        Rappture::ResultViewer $w -width 4i -height 4i
+                        pack $w -expand yes -fill both -padx 4 -pady 4
+                    }
+                }
+                $service output for $obj $w
+            }
+        } elseif {$type == "current"} {
+            # Don't do anything.
+        } else {
+            # create a control panel, if necessary
+            if {![winfo exists $frame.cntls]} {
+                Rappture::Controls $frame.cntls $_owner \
+                    -layout [$xmlobj get $path.about.layout]
+                pack $frame.cntls -expand yes -fill both -pady 4
+            }
+
+            # if this is a group, then build that group
+            if {[$xmlobj element -as type $path.$cname] eq "group"} {
+                if {[$xmlobj element -as id $path.$cname] eq "ambient"
+                       && $deveditor != ""} {
+                    set w [$deveditor component top]
+                } else {
+                    if {[$_owner widgetfor $path.$cname] ne ""} {
+                        # widget already created -- skip this
+                    } elseif {[catch {$frame.cntls insert end $path.$cname} c]} {
+                        global errorInfo
+                        error $c "$c\n$errorInfo\n    (while building control for $path.$cname)"
+                    } else {
+                        set gentry [$frame.cntls control $c]
+                        set w [$gentry component inner]
+                    }
+                }
+                _buildGroup $w $xmlobj $path.$cname
+            } else {
+                if {[$_owner widgetfor $path.$cname] ne ""} {
+                    # widget already created -- skip this
+                } elseif {[catch {$frame.cntls insert end $path.$cname} c]} {
+                    global errorInfo
+                    error $c "$c\n$errorInfo\n    (while building control for $path.$cname)"
+                }
+            }
+        }
+    }
+}
+
+itcl::body Rappture::Page::_link {xmlobj path w path2} {
+    if {"" != [$xmlobj element -as type $path.current]} {
+        set val [$xmlobj get $path.current]
+        if {[string length $val] > 0} {
+            $w value $val
+            $xmlobj put $path.current $val
+        } else {
+            set obj [$xmlobj element -as object $path.current]
+            $w value $obj
+            $xmlobj put $path.current $obj
+        }
+    }
+    $_owner changed $path2
+}
Index: /tags/1.6.0/gui/scripts/pager.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/pager.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/pager.tcl	(revision 6168)
@@ -0,0 +1,656 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: pager - notebook for displaying pages of widgets
+#
+#  This widget is something like a tabbed notebook, but with a little
+#  more flexibility.  Pages can be inserted and deleted, and then shown
+#  in various arrangements.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Pager.arrangement "pages" widgetDefault
+option add *Pager.width 0 widgetDefault
+option add *Pager.height 0 widgetDefault
+option add *Pager.padding 8 widgetDefault
+option add *Pager.crumbColor black widgetDefault
+option add *Pager.crumbNumberColor white widgetDefault
+option add *Pager.dimCrumbColor gray70 widgetDefault
+option add *Pager.activeCrumbColor blue widgetDefault
+option add *Pager.crumbFont \
+    -*-helvetica-bold-r-normal-*-12-* widgetDefault
+
+blt::bitmap define Pager-arrow {
+#define arrow_width 9
+#define arrow_height 9
+static unsigned char arrow_bits[] = {
+   0x10, 0x00, 0x30, 0x00, 0x70, 0x00, 0xff, 0x00, 0xff, 0x01, 0xff, 0x00,
+   0x70, 0x00, 0x30, 0x00, 0x10, 0x00};
+}
+
+itcl::class Rappture::Pager {
+    inherit itk::Widget
+
+    itk_option define -width width Width 0
+    itk_option define -height height Height 0
+    itk_option define -padding padding Padding 0
+    itk_option define -crumbcolor crumbColor Foreground ""
+    itk_option define -crumbnumbercolor crumbNumberColor Foreground ""
+    itk_option define -crumbfont crumbFont Font ""
+    itk_option define -dimcrumbcolor dimCrumbColor DimForeground ""
+    itk_option define -activecrumbcolor activeCrumbColor ActiveForeground ""
+    itk_option define -arrangement arrangement Arrangement ""
+
+    constructor {args} { # defined below }
+
+    public method insert {pos args}
+    public method delete {first {last ""}}
+    public method index {name}
+    public method page {args}
+    public method current {args}
+
+    public method busy { bool }
+
+    protected method _layout {}
+    protected method _fixSize {}
+    protected method _drawCrumbs {how}
+
+    private variable _counter 0      ;# counter for page names
+    private variable _dispatcher ""  ;# dispatcher for !events
+    private variable _pages ""       ;# list of known pages
+    private variable _page2info      ;# maps page name => -frame,-title,-command
+    private variable _current ""     ;# page currently shown
+}
+
+itk::usual Pager {
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Pager::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !layout
+    $_dispatcher dispatch $this !layout "[itcl::code $this _layout]; list"
+    $_dispatcher register !fixsize
+    $_dispatcher dispatch $this !fixsize "[itcl::code $this _fixSize]; list"
+
+    itk_component add controls {
+        frame $itk_interior.cntls
+    }
+
+    itk_component add next {
+        button $itk_component(controls).next -text "Next >" \
+            -command [itcl::code $this current next>]
+    }
+    pack $itk_component(next) -side right
+
+    itk_component add back {
+        button $itk_component(controls).back -text "< Back" \
+            -command [itcl::code $this current <back]
+    }
+    pack $itk_component(back) -side left
+
+    set font [$itk_component(next) cget -font]
+    set ht [font metrics $font -linespace]
+    itk_component add breadcrumbarea {
+        frame $itk_interior.bcarea
+    }
+    itk_component add breadcrumbs {
+        canvas $itk_component(breadcrumbarea).breadcrumbs \
+            -width 10 -height [expr {$ht+2}]
+    }
+    pack $itk_component(breadcrumbs) -side left -expand yes -fill both \
+        -padx 8 -pady 8
+
+    itk_component add line {
+        frame $itk_interior.line -height 2 -borderwidth 1 -relief sunken
+    }
+
+
+    itk_component add inside {
+        frame $itk_interior.inside
+    }
+    pack $itk_component(inside) -expand yes -fill both
+    pack propagate $itk_component(inside) no
+
+    eval itk_initialize $args
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <pos> ?-name <name>? ?-title <label>? ?-command <str>?
+#
+# Clients use this to insert a new page into this pager.  The page is
+# inserted into the list at position <pos>, which can be an integer
+# starting from 0 or the keyword "end".  The optional <name> can be
+# used to identify the page.  If it is not supplied, a name is created
+# for the page.  The -title and -command are other values associated
+# with the page.
+#
+# Returns the name used to identify the page.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Pager::insert {pos args} {
+    if {"end" == $pos} {
+        set pos [llength $_pages]
+    } elseif {![string is integer $pos]} {
+        error "bad index \"$pos\": should be integer or \"end\""
+    }
+
+    Rappture::getopts args params {
+        value -name page#auto
+        value -title "Page #auto"
+        value -command ""
+    }
+    if {[llength $args] > 0} {
+        error "wrong # args: should be \"insert pos ?-name n? ?-title t? ?-command c?\""
+    }
+
+    incr _counter
+    if {$_counter > 1} {
+        set subst "#$_counter"
+    } else {
+        set subst ""
+    }
+    if {[regexp {#auto} $params(-name)]} {
+        regsub -all {#auto} $params(-name) $subst params(-name)
+    }
+    if {[regexp {#auto} $params(-title)]} {
+        regsub -all {#auto} $params(-title) $subst params(-title)
+    }
+
+    # allocate the page
+    if {[info exists _page2info($params(-name)-frame)]} {
+        error "page \"$params(-name)\" already exists"
+    }
+    set win $itk_component(inside).page$_counter
+    frame $win
+    set _page2info($params(-name)-frame) $win
+    set _page2info($params(-name)-title) $params(-title)
+    set _page2info($params(-name)-command) $params(-command)
+    set _pages [linsert $_pages $pos $params(-name)]
+
+    bind $win <Configure> \
+        [itcl::code $_dispatcher event -idle !fixsize]
+
+    # the number of pages affects the arrangment -- force an update
+    configure -arrangement $itk_option(-arrangement)
+
+    $_dispatcher event -idle !layout
+
+    return $params(-name)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete <first> ?<last>?
+#
+# Clients use this to delete one or more pages from this widget.
+# The <first> and <last> represent the integer index of the desired
+# page.  You can use the "index" method to convert a page name to
+# its integer index.  If only <first> is specified, then that one
+# page is deleted.  If <last> is specified, then all pages in the
+# range <first> to <last> are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Pager::delete {first {last ""}} {
+    if {$last == ""} {
+        set last $first
+    }
+    if {![regexp {^[0-9]+|end$} $first]} {
+        error "bad index \"$first\": should be integer or \"end\""
+    }
+    if {![regexp {^[0-9]+|end$} $last]} {
+        error "bad index \"$last\": should be integer or \"end\""
+    }
+
+    foreach name [lrange $_pages $first $last] {
+        if {[info exists _page2info($name-frame)]} {
+            destroy $_page2info($name-frame)
+            unset _page2info($name-frame)
+            unset _page2info($name-title)
+            unset _page2info($name-command)
+        }
+    }
+    set _pages [lreplace $_pages $first $last]
+
+    # the number of pages affects the arrangment -- force an update
+    configure -arrangement $itk_option(-arrangement)
+
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# USAGE: index <name>|@n
+#
+# Clients use this to convert a page <name> into its corresponding
+# integer index.  Returns an error if the <name> is not recognized.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Pager::index {name} {
+    set i [lsearch $_pages $name]
+    if {$i >= 0} {
+        return $i
+    }
+    if {[regexp {^@([0-9]+)$} $name match i]} {
+        return $i
+    }
+    error "bad page name \"$name\": should be @int or one of [join [lsort $_pages] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: page
+# USAGE: page <name>|@n ?-frame|-title|-command? ?<newvalue>?
+#
+# Clients use this to get information about pages.  With no args, it
+# returns a list of all page names.  Otherwise, it returns the
+# requested information for a page specified by its <name> or index
+# @n.  By default, it returns the -frame for the page, but it can
+# also return the -title and -command.  The -title and -command
+# can also be set to a <newvalue>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Pager::page {args} {
+    if {[llength $args] == 0} {
+        return $_pages
+    }
+    set i [index [lindex $args 0]]
+    set name [lindex $_pages $i]
+
+    set args [lrange $args 1 end]
+    Rappture::getopts args params {
+        flag what -frame default
+        flag what -title
+        flag what -command
+    }
+
+    if {[llength $args] == 0} {
+        set opt $params(what)
+        return $_page2info($name$opt)
+    } elseif {[llength $args] == 1} {
+        set val [lindex $args 0]
+        if {$params(-title)} {
+            set _page2info($name-title) $val
+        } elseif {$params(-command)} {
+            set _page2info($name-command) $val
+        }
+    } else {
+        error "wrong # args: should be \"page ?which? ?-frame|-title|-command? ?newvalue?\""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: current ?<name>|next>|<back?
+#
+# Used to query/set the current page in the notebook.  With no args,
+# it returns the name of the current page.  Otherwise, it sets the
+# current page.  The special token "next>" is used to set the pager
+# to the next logical page, and "<back" sets to the previous.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Pager::current {args} {
+    switch -- [llength $args] {
+        0 {
+            return $_current
+        }
+        1 {
+            if {$itk_option(-arrangement) != "pages"} {
+                return ""
+            }
+            set name [lindex $args 0]
+            set index 0
+            if {$name == "next>"} {
+                if {$_current == ""} {
+                    set index 0
+                } else {
+                    set i [lsearch -exact $_pages $_current]
+                    set index [expr {$i+1}]
+                    if {$index >= [llength $_pages]} {
+                        set index [expr {[llength $_pages]-1}]
+                    }
+                }
+                set _current [lindex $_pages $index]
+            } elseif {$name == "<back"} {
+                if {$_current == ""} {
+                    set index end
+                } else {
+                    set i [lsearch -exact $_pages $_current]
+                    set index [expr {$i-1}]
+                    if {$index < 0} {
+                        set index 0
+                    }
+                }
+                set _current [lindex $_pages $index]
+            } else {
+                if {$name == ""} {
+                    set _current ""
+                    set index 0
+                } else {
+                    set index [lsearch -exact $_pages $name]
+                    if {$index < 0} {
+                        error "can't move to page \"$name\""
+                    }
+                    set _current [lindex $_pages $index]
+                }
+            }
+
+            foreach w [pack slaves $itk_component(inside)] {
+                pack forget $w
+            }
+            if {$_current != ""} {
+                pack $_page2info($_current-frame) -expand yes -fill both \
+                    -padx $itk_option(-padding) -pady $itk_option(-padding)
+            }
+
+            if {$index == 0} {
+                pack forget $itk_component(back)
+            } else {
+                set prev [expr {$index-1}]
+                if {$prev >= 0} {
+                    set label "< [page @$prev -title]"
+                } else {
+                    set label "< Back"
+                }
+                $itk_component(back) configure -text $label
+                pack $itk_component(back) -side left
+            }
+            if {$index == [expr {[llength $_pages]-1}]} {
+                pack forget $itk_component(next)
+            } else {
+                set next [expr {$index+1}]
+                if {$next <= [llength $_pages]} {
+                    set label "[page @$next -title] >"
+                } else {
+                    set label "Next >"
+                }
+                $itk_component(next) configure -text $label
+                pack $itk_component(next) -side right
+            }
+            _drawCrumbs current
+
+            #
+            # If this new page has a command associated with it, then
+            # invoke it now.
+            #
+            if {"" != $_current
+                  && [string length $_page2info($_current-command)] > 0} {
+                uplevel #0 $_page2info($_current-command)
+            }
+        }
+        default {
+            error "wrong # args: should be \"current name|next>|<back\""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _layout
+#
+# Used internally to fix the current page management whenever pages
+# are added or deleted, or when the page arrangement changes.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Pager::_layout {} {
+    if {$itk_option(-arrangement) == "pages"} {
+        if {$_current == ""} {
+            set _current [lindex $_pages 0]
+            if {$_current != ""} {
+                current $_current
+            }
+        }
+        _drawCrumbs all
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+#
+# Invoked automatically whenever a page changes size or the -width
+# or -height options change.  When the -width/-height are zero, this
+# method computes the minimum size needed to accommodate all pages.
+# Otherwise, it passes the size request onto the hull.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Pager::_fixSize {} {
+    set sw [expr {[winfo screenwidth $itk_component(hull)]-200}]
+    set sh [expr {[winfo screenheight $itk_component(hull)]-200}]
+
+    update  ;# force layout changes so sizes are correct
+    switch -- $itk_option(-arrangement) {
+        pages {
+            if {$itk_option(-width) <= 0} {
+                set maxw [expr {
+                    [winfo reqwidth $itk_component(next)]
+                    + 10
+                    + [winfo reqwidth $itk_component(back)]}]
+
+                foreach name $_pages {
+                    set w [winfo reqwidth $_page2info($name-frame)]
+                    if {$w > $maxw} { set maxw $w }
+                }
+                set maxw [expr {$maxw + 2*$itk_option(-padding)}]
+                if {$maxw > $sw} { set maxw $sw }
+                $itk_component(inside) configure -width $maxw
+            } else {
+                $itk_component(inside) configure -width $itk_option(-width)
+            }
+
+            if {$itk_option(-height) <= 0} {
+                set maxh 0
+                foreach name $_pages {
+                    set h [winfo reqheight $_page2info($name-frame)]
+                    if {$h > $maxh} { set maxh $h }
+                }
+                set maxh [expr {$maxh + 2*$itk_option(-padding)}]
+                if {$maxh > $sh} { set maxh $sh }
+                $itk_component(inside) configure -height $maxh
+            } else {
+                $itk_component(inside) configure -height $itk_option(-height)
+            }
+        }
+        side-by-side {
+            if {$itk_option(-width) <= 0} {
+                set maxw [expr {
+                    [winfo reqwidth $itk_component(next)]
+                    + 10
+                    + [winfo reqwidth $itk_component(back)]}]
+
+                set wtotal 0
+                foreach name $_pages {
+                    set w [winfo reqwidth $_page2info($name-frame)]
+                    set wtotal [expr {$wtotal + $w + 2*$itk_option(-padding)}]
+                }
+                if {$wtotal > $maxw} { set maxw $wtotal }
+                if {$maxw > $sw} { set maxw $sw }
+                $itk_component(inside) configure -width $maxw
+            } else {
+                $itk_component(inside) configure -width $itk_option(-width)
+            }
+
+            if {$itk_option(-height) <= 0} {
+                set maxh 0
+                foreach name $_pages {
+                    set h [winfo reqheight $_page2info($name-frame)]
+                    if {$h > $maxh} { set maxh $h }
+                }
+                set maxh [expr {$maxh + 2*$itk_option(-padding)}]
+                if {$maxh > $sh} { set maxh $sh }
+                $itk_component(inside) configure -height $maxh
+            } else {
+                $itk_component(inside) configure -height $itk_option(-height)
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -arrangement
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Pager::arrangement {
+    switch -- $itk_option(-arrangement) {
+        pages {
+            pack forget $itk_component(inside)
+            pack $itk_component(controls) -side bottom -fill x -padx 60 -pady 8
+            pack $itk_component(breadcrumbarea) -side top -fill x
+            pack $itk_component(line) -side top -fill x
+            pack $itk_component(inside) -expand yes -fill both
+            current [lindex $_pages 0]
+        }
+        side-by-side {
+            pack forget $itk_component(controls)
+            pack forget $itk_component(line)
+            pack forget $itk_component(breadcrumbarea)
+
+            foreach w [pack slaves $itk_component(inside)] {
+                pack forget $w
+            }
+            foreach name $_pages {
+                pack $_page2info($name-frame) -side left \
+                    -expand yes -fill both \
+                    -padx $itk_option(-padding) -pady $itk_option(-padding)
+            }
+        }
+        default {
+            error "bad value \"$itk_option(-arrangement)\": should be pages or side-by-side"
+        }
+    }
+    $_dispatcher event -now !fixsize
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -width
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Pager::width {
+    $_dispatcher event -idle !fixsize
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -height
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Pager::height {
+    $_dispatcher event -idle !fixsize
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -padding
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Pager::padding {
+    if {$_current != ""} {
+        pack $_page2info($_current-frame) -expand yes -fill both \
+            -padx $itk_option(-padding) -pady $itk_option(-padding)
+    }
+    $_dispatcher event -idle !fixsize
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _drawCrumbs all|current
+#
+# Invoked automatically whenever the pages change.  The value "all"
+# signifies that the number of pages has changed, so all should be
+# redrawn.  The value "current" means that the current page has
+# changed, so there is just a simple color change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Pager::_drawCrumbs {how} {
+    set c $itk_component(breadcrumbs)
+    set fnt $itk_option(-crumbfont)
+
+    switch -- $how {
+        all {
+            $c delete all
+
+            set x 0
+            set y [expr {[winfo reqheight $c]/2}]
+            set last [lindex $_pages end]
+
+            set num 1
+            foreach name $_pages {
+                set ht [expr {[font metrics $fnt -linespace]+2}]
+                set id [$c create oval $x [expr {$y-$ht/2}] \
+                    [expr {$x+$ht}] [expr {$y+$ht/2}] \
+                    -outline "" -fill $itk_option(-dimcrumbcolor) \
+                    -tags $name]
+                set id [$c create text [expr {$x+$ht/2}] [expr {$y+1}] \
+                    -text $num -fill $itk_option(-crumbnumbercolor) \
+                    -tags [list $name $name-num]]
+                set x [expr {$x + $ht+2}]
+
+                set id [$c create text $x [expr {$y+1}] -anchor w \
+                    -text [page $name -title] -font $fnt -tags $name]
+
+                $c bind $name <Enter> [itcl::code $this _drawCrumbs active]
+                $c bind $name <Leave> [itcl::code $this _drawCrumbs current]
+                $c bind $name <ButtonPress> [itcl::code $this current $name]
+
+                foreach {x0 y0 x1 y1} [$c bbox $id] break
+                set x [expr {$x + ($x1-$x0)+6}]
+
+                if {$name != $last} {
+                    set id [$c create bitmap $x $y -anchor w \
+                        -bitmap Pager-arrow \
+                        -foreground $itk_option(-dimcrumbcolor)]
+                    foreach {x0 y0 x1 y1} [$c bbox $id] break
+                    set x [expr {$x + ($x1-$x0)+6}]
+                }
+
+                incr num
+            }
+
+            # fix the scrollregion in case we go off screen
+            $c configure -scrollregion [$c bbox all]
+
+            _drawCrumbs current
+        }
+        current {
+            # make all crumbs dim
+            foreach name $_pages {
+                $c itemconfigure $name \
+                    -fill $itk_option(-dimcrumbcolor)
+                $c itemconfigure $name-num \
+                    -fill $itk_option(-crumbnumbercolor)
+            }
+
+            # make all the current crumb bright
+            if {$_current != ""} {
+                $c itemconfigure $_current \
+                    -fill $itk_option(-crumbcolor)
+                $c itemconfigure $_current-num \
+                    -fill $itk_option(-crumbnumbercolor)
+
+                # scroll the view to see the crumb
+                if {[$c bbox $_current] != ""} {
+                    foreach {x0 y0 x1 y1} [$c bbox $_current] break
+                    foreach {xm0 ym0 xm1 ym1} [$c bbox all] break
+                    set xm [expr {double($x0)/($xm1-$xm0)}]
+                    $c xview moveto $xm
+                }
+            } else {
+                $c xview moveto 0
+            }
+        }
+        active {
+            foreach tag [$c gettags current] {
+                if {[lsearch -exact $_pages $tag] >= 0} {
+                    $c itemconfigure $tag -fill $itk_option(-activecrumbcolor)
+                    $c itemconfigure $tag-num -fill white
+                }
+            }
+        }
+    }
+}
+
+#
+# busy --
+#
+#       If true (this indicates a simulation is occurring), the widget
+#       should prevent the user from
+#               1) clicking an item previous in the breadcrumbs, and
+#               2) using the "back" button.
+#
+itcl::body Rappture::Pager::busy { bool } {
+    if { $bool } {
+        blt::busy hold $itk_component(breadcrumbs)
+        $itk_component(back) configure -state disabled
+    } else {
+        blt::busy release $itk_component(breadcrumbs)
+        $itk_component(back) configure -state normal
+    }
+}
Index: /tags/1.6.0/gui/scripts/panes.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/panes.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/panes.tcl	(revision 6168)
@@ -0,0 +1,573 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: Panes - creates a series of adjustable panes
+#
+#  This is a simple paned window with an adjustable sash.
+#  the same quantity, but for various ranges of input values.
+#  It also manages the controls to select and visualize the data.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Panes.width 3i widgetDefault
+option add *Panes.height 3i widgetDefault
+option add *Panes.sashRelief sunken widgetDefault
+option add *Panes.sashWidth 2 widgetDefault
+option add *Panes.sashPadding 4 widgetDefault
+option add *Panes.orientation vertical widgetDefault
+
+itcl::class Rappture::Panes {
+    inherit itk::Widget
+
+    itk_option define -sashrelief sashRelief SashRelief ""
+    itk_option define -sashwidth sashWidth SashWidth 0
+    itk_option define -sashpadding sashPadding SashPadding 0
+    itk_option define -orientation orientation Orientation ""
+
+    constructor {args} { # defined below }
+
+    public method insert {pos args}
+    public method pane {pos}
+    public method visibility {pos args}
+    public method fraction {pos args}
+    public method hilite {state sash}
+    public method size {}
+
+    protected method _grab {pane X Y}
+    protected method _drag {pane X Y}
+    protected method _drop {pane X Y}
+    protected method _fixLayout {args}
+    protected method _fixSashes {args}
+
+    private variable _dispatcher ""  ;# dispatcher for !events
+    private variable _panes ""       ;# list of pane frames
+    private variable _visibility ""  ;# list of visibilities for panes
+    private variable _counter 0      ;# counter for auto-generated names
+    private variable _reqfrac 0.0    ;# requested fraction size of each pane
+    private variable _dragfrom 0     ;# starting coordinate of drag operation
+    private variable _dragfrac 0     ;# limit on fraction of drag operation
+}
+
+itk::usual Panes {
+    keep -background -cursor -sashwidth -sashrelief
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::constructor {args} {
+    itk_option add hull.width hull.height
+
+    # create a dispatcher for events
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !layout
+    $_dispatcher dispatch $this !layout [itcl::code $this _fixLayout]
+    $_dispatcher register !sashes
+    $_dispatcher dispatch $this !sashes [itcl::code $this _fixSashes]
+
+    # fix the layout whenever the window size changes
+    bind Panes <Configure> [itcl::code %W _fixLayout]
+
+    set pname "pane[incr _counter]"
+    itk_component add $pname {
+        frame $itk_interior.$pname
+    }
+
+    lappend _panes $pname
+    lappend _visibility 1
+    set _reqfrac 0.5
+
+    eval itk_initialize $args
+
+    # make sure we fix up the layout at some point
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <pos> ?-fraction f?
+#
+# Adds a new page to this widget at the given position <pos>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::insert {pos args} {
+    Rappture::getopts args params {
+        value -fraction 0.5
+    }
+    if {[llength $args] > 0} {
+        error "wrong # args: should be \"insert pos ?-fraction f?\""
+    }
+
+    set pname "pane[incr _counter]"
+    set sash "${pname}sash"
+    itk_component add $sash {
+        frame $itk_interior.$sash
+    } {
+        usual
+        ignore -cursor
+    }
+    bind $itk_component($sash) <Enter> [itcl::code $this hilite on $sash]
+    bind $itk_component($sash) <Leave> [itcl::code $this hilite off $sash]
+
+    itk_component add ${sash}ridge {
+        frame $itk_component($sash).ridge
+    } {
+        usual
+        rename -relief -sashrelief sashRelief SashRelief
+        ignore -borderwidth
+    }
+    if {$itk_option(-orientation) eq "vertical"} {
+        pack $itk_component(${sash}ridge) -fill x
+        $itk_component($sash) configure -cursor sb_v_double_arrow
+        $itk_component(${sash}ridge) configure -cursor sb_v_double_arrow
+    } else {
+        pack $itk_component(${sash}ridge) -fill y -side left
+        $itk_component($sash) configure -cursor sb_h_double_arrow
+        $itk_component(${sash}ridge) configure -cursor sb_h_double_arrow
+    }
+    foreach comp [list $sash ${sash}ridge] {
+        bind $itk_component($comp) <ButtonPress-1> \
+            [itcl::code $this _grab $pname %X %Y]
+        bind $itk_component($comp) <B1-Motion> \
+            [itcl::code $this _drag $pname %X %Y]
+        bind $itk_component($comp) <ButtonRelease-1> \
+            [itcl::code $this _drop $pname %X %Y]
+    }
+
+
+    itk_component add $pname {
+        frame $itk_interior.$pname
+    }
+    set _panes [linsert $_panes $pos $pname]
+    set _visibility [linsert $_visibility $pos 1]
+    set _reqfrac [linsert $_reqfrac $pos $params(-fraction)]
+
+    # fix sash characteristics
+    $_dispatcher event -idle !sashes
+
+    # make sure we fix up the layout at some point
+    $_dispatcher event -idle !layout
+
+    return $itk_component($pname)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: pane <pos>
+#
+# Returns the frame representing the pane at position <pos>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::pane {pos} {
+    set pname [lindex $_panes $pos]
+    if {[info exists itk_component($pname)]} {
+        return $itk_component($pname)
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: visibility <pos> ?<newval>? ?<pos> <newval> ...?
+#
+# Clients use this to get/set the visibility of the pane at position
+# <pos>.  Can also be used to set the visibility for multiple panes
+# if multiple <pos>/<newval> pairs are specified in the same command.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::visibility {pos args} {
+    if {[llength $args] == 0} {
+        return [lindex $_visibility $pos]
+    }
+    if {[llength $args] % 2 == 0} {
+        error "wrong # args: should be \"visibility pos ?val pos val ...?\""
+    }
+
+    set args [linsert $args 0 $pos]
+    foreach {pos newval} $args {
+        if {![string is boolean -strict $newval]} {
+            error "bad value \"$newval\": should be boolean"
+        }
+        if {$pos eq "end" || ($pos >= 0 && $pos < [llength $_visibility])} {
+            set _visibility [lreplace $_visibility $pos $pos [expr {$newval}]]
+            $_dispatcher event -idle !layout
+        } else {
+            error "bad index \"$pos\": out of range"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: fraction <pos> ?<newval>? ?<pos> <newval> ...?
+#
+# Clients use this to get/set the fraction of real estate associated
+# with the pane at position <pos>.  Can also be used to set the
+# fractions for multiple panes if multiple <pos>/<newval> pairs
+# are specified in the same command.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::fraction {pos args} {
+    if {[llength $args] == 0} {
+        return [lindex $_reqfrac $pos]
+    }
+    if {[llength $args] % 2 == 0} {
+        error "wrong # args: should be \"fraction pos ?val pos val ...?\""
+    }
+
+    set args [linsert $args 0 $pos]
+    foreach {pos newval} $args {
+        if {![string is double -strict $newval]} {
+            error "bad value \"$newval\": should be fraction 0-1"
+        }
+        if {$pos eq "end" || ($pos >= 0 && $pos < [llength $_reqfrac])} {
+            set _reqfrac [lreplace $_reqfrac $pos $pos $newval]
+            $_dispatcher event -idle !layout
+        } else {
+            error "bad index \"$pos\": out of range"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hilite <state> <sash>
+#
+# Invoked automatically whenever the user touches a sash.  Highlights
+# the sash by changing its size or relief.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::hilite {state sash} {
+    switch -- $itk_option(-sashrelief) {
+      flat {
+        if {$state} {
+            $itk_component(${sash}ridge) configure -background black
+        } else {
+            $itk_component(${sash}ridge) configure -background $itk_option(-background)
+        }
+      }
+      sunken {
+        if {$state} {
+            $itk_component(${sash}ridge) configure -relief raised
+        } else {
+            $itk_component(${sash}ridge) configure -relief sunken
+        }
+      }
+      raised {
+        if {$state} {
+            $itk_component(${sash}ridge) configure -relief sunken
+        } else {
+            $itk_component(${sash}ridge) configure -relief raised
+        }
+      }
+      solid {
+        if {$state} {
+            $itk_component($sash) configure -background black
+        } else {
+            $itk_component($sash) configure \
+                -background $itk_option(-background)
+        }
+      }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: size
+#
+# Returns the number of panes in this widget.  That makes it easier
+# to index the various panes, since indices run from 0 to size-1.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::size {} {
+    return [llength $_panes]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _grab <pane> <X> <Y>
+#
+# Invoked automatically when the user clicks on a sash, to initiate
+# movement.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::_grab {pname X Y} {
+    set pos [lsearch $_panes $pname]
+    if {$pos < 0} return
+    set frac0 [lindex $_reqfrac [expr {$pos-1}]]
+    set frac1 [lindex $_reqfrac $pos]
+    set _dragfrac [expr {$frac0+$frac1}]
+
+    if {$itk_option(-orientation) eq "vertical"} {
+        set _dragfrom $Y
+    } else {
+        set _dragfrom $X
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _drag <pane> <X> <Y>
+#
+# Invoked automatically as the user drags a sash, to resize the panes.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::_drag {pname X Y} {
+    set pos [lsearch $_panes $pname]
+    if {$pos < 0} return
+    set frac [lindex $_reqfrac $pos]
+
+    if {$itk_option(-orientation) eq "vertical"} {
+        set delY [expr {$_dragfrom-$Y}]
+        set Ymax  [winfo height $itk_component(hull)]
+        set delta [expr {double($delY)/$Ymax}]
+        set frac [expr {$frac + $delta}]
+        set _dragfrom $Y
+    } else {
+        set delX [expr {$_dragfrom-$X}]
+        set Xmax  [winfo width $itk_component(hull)]
+        set delta [expr {double($delX)/$Xmax}]
+        set frac [expr {$frac + $delta}]
+        set _dragfrom $X
+    }
+    if {$delta == 0.0} {
+        return
+    }
+
+    # set limits so the pane can't get too large or too small
+    if {$frac < 0.05} {
+        set frac 0.05
+    }
+    if {$frac > $_dragfrac-0.05} {
+        set frac [expr {$_dragfrac-0.05}]
+    }
+
+    # replace the fractions for this pane and the one before it
+    set prevfrac [expr {$_dragfrac-$frac}]
+    set _reqfrac [lreplace $_reqfrac [expr {$pos-1}] $pos $prevfrac $frac]
+
+    # normalize all fractions and fix the layout
+    _fixLayout
+
+    return $frac
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _drop <pane> <X> <Y>
+#
+# Invoked automatically as the user drops a sash, to resize the panes.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::_drop {pname X Y} {
+    set frac [_drag $pname $X $Y]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixLayout ?<eventArgs>...?
+#
+# Used internally to update the layout of panes whenever a new pane
+# is added or a sash is moved.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::_fixLayout {args} {
+    # normalize the fractions for all panes to they add to 1.0
+    set total 0
+    foreach f $_reqfrac v $_visibility {
+        if {$v && $f > 0} {
+            set total [expr {$total + $f}]
+        }
+    }
+    if {$total == 0.0} { set total 1 }
+
+    set normfrac ""
+    foreach f $_reqfrac v $_visibility {
+        if {$v} {
+            lappend normfrac [expr {double($f)/$total}]
+        } else {
+            lappend normfrac [expr {double($f)/$total}]
+        }
+    }
+
+    # note that sash padding can be a single number or different on each side
+    if {[llength $itk_option(-sashpadding)] == 1} {
+        set pad [expr {2*$itk_option(-sashpadding)}]
+    } else {
+        set pad [expr [join $itk_option(-sashpadding) +]]
+    }
+
+    if {$itk_option(-orientation) eq "vertical"} {
+        set h [winfo height $itk_component(hull)]
+        set sh [expr {$itk_option(-sashwidth) + $pad}]
+
+        set plist ""
+        set flist ""
+        foreach p $_panes f $normfrac v $_visibility {
+            set sash ${p}sash
+            if {$v} {
+                # this pane is visible -- make room for it
+                lappend plist $p
+                lappend flist $f
+                if {[info exists itk_component($sash)]} {
+                    set h [expr {$h - $sh}]
+                }
+            } else {
+                # this pane is not visible -- remove sash
+                if {[info exists itk_component($sash)]} {
+                    place forget $itk_component($sash)
+                }
+                place forget $itk_component($p)
+            }
+        }
+
+        # lay out the various panes
+        set y 0
+        foreach p $plist f $flist {
+            set sash ${p}sash
+            if {[info exists itk_component($sash)]} {
+                place $itk_component($sash) -y $y -relx 0.5 -anchor n \
+                    -relwidth 1.0 -height $sh
+                set y [expr {$y + $sh}]
+            }
+
+            set ph [expr {$h*$f}]
+            place $itk_component($p) -y $y -relx 0.5 -anchor n \
+                -relwidth 1.0 -height $ph
+            set y [expr {$y + $ph}]
+        }
+    } else {
+        set w [winfo width $itk_component(hull)]
+        set sw [expr {$itk_option(-sashwidth) + $pad}]
+
+        set plist ""
+        set flist ""
+        foreach p $_panes f $normfrac v $_visibility {
+            set sash ${p}sash
+            if {$v} {
+                # this pane is visible -- make room for it
+                lappend plist $p
+                lappend flist $f
+                if {[info exists itk_component($sash)]} {
+                    set w [expr {$w - $sw}]
+                }
+            } else {
+                # this pane is not visible -- remove sash
+                if {[info exists itk_component($sash)]} {
+                    place forget $itk_component($sash)
+                }
+                place forget $itk_component($p)
+            }
+        }
+
+        # lay out the various panes
+        set x 0
+        foreach p $plist f $flist {
+            set sash ${p}sash
+            if {[info exists itk_component($sash)]} {
+                place $itk_component($sash) -x $x -rely 0.5 -anchor w \
+                    -relheight 1.0 -width $sw
+                set x [expr {$x + $sw}]
+            }
+
+            set pw [expr {$w*$f}]
+            place $itk_component($p) -x $x -rely 0.5 -anchor w \
+                -relheight 1.0 -width $pw
+            set x [expr {$x + $pw}]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSashes
+#
+# Used internally to fix the appearance of sashes whenever a new
+# sash appears or the controlling configuration options change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Panes::_fixSashes {args} {
+    if {$itk_option(-orientation) eq "vertical"} {
+        set ht [winfo pixels $itk_component(hull) $itk_option(-sashwidth)]
+        set bd [expr {$ht/2}]
+        foreach pane $_panes {
+            set sash "${pane}sashridge"
+            if {[info exists itk_component($sash)]} {
+                $itk_component($sash) configure -height $ht \
+                    -borderwidth $bd -relief $itk_option(-sashrelief)
+                pack $itk_component($sash) -pady $itk_option(-sashpadding) \
+                    -side top
+            }
+        }
+    } else {
+        set w [winfo pixels $itk_component(hull) $itk_option(-sashwidth)]
+        set bd [expr {$w/2}]
+        foreach pane $_panes {
+            set sash "${pane}sashridge"
+            if {[info exists itk_component($sash)]} {
+                $itk_component($sash) configure -width $w \
+                    -borderwidth $bd -relief $itk_option(-sashrelief)
+                pack $itk_component($sash) -padx $itk_option(-sashpadding) \
+                    -side left
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -sashrelief
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Panes::sashrelief {
+    $_dispatcher event -idle !sashes
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -sashwidth
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Panes::sashwidth {
+    $_dispatcher event -idle !sashes
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -sashpadding
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Panes::sashpadding {
+    set count 0
+    foreach val $itk_option(-sashpadding) {
+        if {![string is integer -strict $val]} {
+            error "bad padding value \"$val\": should be integer"
+        }
+        incr count
+    }
+    if {$count < 1 || $count > 2} {
+        error "bad padding value \"$itk_option(-sashpadding)\": should be \"#\" or \"# #\""
+    }
+    $_dispatcher event -idle !sashes
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -orientation
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Panes::orientation {
+    foreach pname $_panes {
+        set sash "${pname}sash"
+        if {$itk_option(-orientation) eq "vertical"} {
+            place $itk_component($pname) -x 0 -relx 0.5 -relwidth 1 \
+                -y 0 -rely 0 -relheight 0
+
+            if {[info exists itk_component($sash)]} {
+                place $itk_component($sash) -x 0 -relx 0.5 -relwidth 1 \
+                    -y 0 -rely 0 -relheight 0
+                $itk_component($sash) configure \
+                    -cursor sb_v_double_arrow
+
+                pack $itk_component(${sash}ridge) -fill x -side top
+                $itk_component(${sash}ridge) configure \
+                    -cursor sb_v_double_arrow
+            }
+        } else {
+            place $itk_component($pname) -y 0 -rely 0.5 -relheight 1 \
+                -x 0 -relx 0 -relwidth 0
+
+            if {[info exists itk_component($sash)]} {
+                place $itk_component($sash) -y 0 -rely 0.5 -relheight 1 \
+                    -x 0 -relx 0 -relwidth 0
+                $itk_component($sash) configure \
+                    -cursor sb_h_double_arrow
+
+                pack $itk_component(${sash}ridge) -fill y -side left
+                $itk_component(${sash}ridge) configure \
+                    -cursor sb_h_double_arrow
+            }
+        }
+    }
+
+    # fix sash characteristics
+    $_dispatcher event -idle !sashes
+
+    # make sure we fix up the layout at some point
+    $_dispatcher event -idle !layout
+}
Index: /tags/1.6.0/gui/scripts/periodicelement.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/periodicelement.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/periodicelement.tcl	(revision 6168)
@@ -0,0 +1,308 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: PeriodicElement - entry widget with a drop-down periodic
+#             table.
+#
+#  This widget is a typical periodicelement, an entry widget with a drop-down
+#  list of values.  If the -editable option is turned off, then the
+#  value can be set only from the drop-down list.  Otherwise, the
+#  drop-down is treated as a list of preset choices, but the user can
+#  type anything in the entry area.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *PeriodicElement.borderWidth 2 widgetDefault
+option add *PeriodicElement.relief sunken widgetDefault
+option add *PeriodicElement.width 10 widgetDefault
+option add *PeriodicElement.editable yes widgetDefault
+option add *PeriodicElement.textBackground white widgetDefault
+option add *PeriodicElement.textForeground black widgetDefault
+option add *PeriodicElement.disabledBackground white widgetDefault
+option add *PeriodicElement.disabledForeground gray widgetDefault
+option add *PeriodicElement.font -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::PeriodicElement {
+    inherit itk::Widget
+
+    itk_option define -editable editable Editable ""
+    itk_option define -state state State "normal"
+    itk_option define -width width Width 0
+    itk_option define -disabledbackground disabledBackground DisabledBackground ""
+    itk_option define -disabledforeground disabledForeground DisabledForeground ""
+
+    constructor {args} { # defined below }
+
+    public method value {args}
+    public method label {value}
+    public method element {option args}
+
+    protected method _entry {option}
+    protected method _dropdown {option}
+    protected method _fixState {}
+
+    blt::bitmap define PeriodicElementArrow {
+        #define arrow_width 8
+        #define arrow_height 4
+        static unsigned char arrow_bits[] = {
+           0xfe, 0x7c, 0x38, 0x10};
+    }
+
+    private variable _lastValue ""
+}
+
+itk::usual PeriodicElement {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textforeground -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElement::constructor {args} {
+    itk_option add hull.borderwidth hull.relief
+
+    itk_component add button {
+        button $itk_interior.btn -bitmap PeriodicElementArrow -padx 0 \
+            -borderwidth 1 -relief raised -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness -highlightbackground -highlightcolor
+        ignore -borderwidth -relief
+    }
+    pack $itk_component(button) -side right -fill y
+
+    itk_component add entry {
+        entry $itk_interior.entry -borderwidth 0 -relief flat
+    } {
+        usual
+        keep -width
+        rename -highlightbackground -textbackground textBackground Background
+        rename -background -textbackground textBackground Background
+        rename -foreground -textforeground textForeground Foreground
+        rename -disabledbackground -textbackground textBackground Background
+        rename -disabledforeground -textforeground textForeground Foreground
+        ignore -borderwidth -relief
+    }
+    pack $itk_component(entry) -side left -expand yes -fill both
+
+    bind $itk_component(entry) <Return> \
+        [itcl::code $this _entry apply]
+    bind $itk_component(entry) <KP_Enter> \
+        [itcl::code $this _entry apply]
+    bind $itk_component(entry) <Tab> \
+        [itcl::code $this _entry apply]
+    bind $itk_component(entry) <ButtonPress> \
+        [itcl::code $this _entry click]
+
+    itk_component add ptable {
+        Rappture::PeriodicTable $itk_component(button).ptable \
+            -postcommand [itcl::code $this _dropdown post] \
+            -unpostcommand [itcl::code $this _dropdown unpost] \
+    }
+
+    bind $itk_component(ptable) <<PeriodicTableSelect>> \
+        [itcl::code $this _dropdown select]
+
+    $itk_component(button) configure -command \
+        [list $itk_component(ptable) post $itk_component(hull) left]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElement::value {args} {
+    if {[llength $args] == 1} {
+        set value [lindex $args 0]
+    } elseif { [llength $args] == 0 }  {
+        set value [$itk_component(entry) get]
+    } else {
+        error "wrong # args: should be \"value ?newval?\""
+    }
+    regsub -all -- "-" $value " " value
+    if { [llength $value] > 1 } {
+        set value [lindex $value 0]
+    }
+    set name [$itk_component(ptable) get -name $value]
+    if { $name == "" } {
+        set name $_lastValue
+        bell
+    }
+    set symbol [$itk_component(ptable) get -symbol $name]
+    if { $name != $_lastValue } {
+        $itk_component(ptable) select $name
+    }
+    $itk_component(entry) configure -state normal
+    $itk_component(entry) delete 0 end
+    #$itk_component(entry) insert 0 "${symbol} - ${name}"
+    $itk_component(entry) insert 0 "${name} - ${symbol}"
+    if {!$itk_option(-editable)} {
+        $itk_component(entry) configure -state disabled
+    }
+    set _lastValue $name
+    if { [llength $args] == 1 } {
+        after 10 \
+            [list catch [list event generate $itk_component(hull) <<Value>>]]
+    }
+    return $name
+}
+
+# ----------------------------------------------------------------------
+# USAGE: element include ?<elem>...?
+# USAGE: element exclude ?<elem>...?
+# USAGE: element get ?-weight|-name|-symbol|-number|-all? ?<elem>?
+#
+# Clients use this to manipulate the list of choices in the drop-down
+# list.  Each choice is represented by a (computer-friendly) value
+# and its corresponding (human-friendly) label.  The "get" option
+# returns information about options on the list, including the value,
+# the label, or both.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElement::element {option args} {
+    eval $itk_component(ptable) $option $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _entry apply
+# USAGE: _entry click
+#
+# Used internally to handle the dropdown list for this widget.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElement::_entry {option} {
+    switch -- $option {
+        apply {
+            if {$itk_option(-editable) && $itk_option(-state) == "normal"} {
+                event generate $itk_component(hull) <<Value>>
+            }
+        }
+        click {
+            if {!$itk_option(-editable) && $itk_option(-state) == "normal"} {
+                $itk_component(button) configure -relief sunken
+                update idletasks; after 100
+                $itk_component(button) configure -relief raised
+
+                $itk_component(ptable) post $itk_component(hull) left
+            }
+        }
+        default {
+            error "bad option \"$option\": should be apply, click"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _dropdown post
+# USAGE: _dropdown unpost
+# USAGE: _dropdown select
+#
+# Used internally to handle the dropdown table for this widget.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElement::_dropdown {option} {
+    switch -- $option {
+        post {
+            set value [$itk_component(entry) get]
+            if {$value != ""} {
+                $itk_component(ptable) select $value
+            }
+        }
+        unpost {
+            if {$itk_option(-editable)} {
+                focus $itk_component(entry)
+            }
+        }
+        select {
+            set value [$itk_component(ptable) get -name]
+            if {"" != $value} {
+                value $value
+            }
+        }
+        default {
+            error "bad option \"$option\": should be post, unpost, select"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixState
+#
+# Used internally to fix the widget state when the -editable/-state
+# options change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElement::_fixState {} {
+    if {$itk_option(-state) == "normal"} {
+        $itk_component(button) configure -state normal
+        $itk_component(entry) configure \
+            -background $itk_option(-textbackground) \
+            -foreground $itk_option(-textforeground) \
+            -disabledbackground $itk_option(-textbackground) \
+            -disabledforeground $itk_option(-textforeground)
+    } else {
+        $itk_component(button) configure -state disabled
+        $itk_component(entry) configure \
+            -background $itk_option(-disabledbackground) \
+            -foreground $itk_option(-disabledforeground) \
+            -disabledbackground $itk_option(-disabledbackground) \
+            -disabledforeground $itk_option(-disabledforeground)
+    }
+
+    if {$itk_option(-editable)} {
+        if {$itk_option(-state) == "normal"} {
+            $itk_component(entry) configure -state normal
+        } else {
+            $itk_component(entry) configure -state disabled
+        }
+    } else {
+        $itk_component(entry) configure -state disabled
+    }
+
+    if {!$itk_option(-editable) || $itk_option(-state) != "normal"} {
+        # can't keep focus here -- move it along to the next widget
+        if {[focus] == $itk_component(entry)} {
+            focus [tk_focusNext [focus]]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -editable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::PeriodicElement::editable {
+    if {![string is boolean -strict $itk_option(-editable)]} {
+        error "bad value \"$itk_option(-editable)\": should be boolean"
+    }
+    _fixState
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::PeriodicElement::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    _fixState
+}
Index: /tags/1.6.0/gui/scripts/periodicelemententry.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/periodicelemententry.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/periodicelemententry.tcl	(revision 6168)
@@ -0,0 +1,198 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: PeriodicElementEntry - widget for entering a choice of strings
+#
+#  This widget represents a <element> entry on a control panel.
+#  It is used to choose one of several mutually-exclusive strings.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itcl::class Rappture::PeriodicElementEntry {
+    inherit itk::Widget
+
+    itk_option define -state state State "normal"
+
+    constructor {owner path args} { # defined below }
+    destructor { # defined below }
+
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+
+    protected method _newValue {}
+    protected method _tooltip {}
+
+    private variable _owner ""    ;# thing managing this control
+    private variable _path ""     ;# path in XML to this number
+}
+
+itk::usual PeriodicElementEntry {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textforeground -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElementEntry::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+
+    set defval [string trim [$_owner xml get $_path.default]]
+    # Active and inactive are lists.  Don't need to trim.
+    set active [string trim [$_owner xml get $_path.active]]
+    set inactive [string trim [$_owner xml get $_path.inactive]]
+    #
+    # Create the widget and configure it properly based on other
+    # hints in the XML.
+    #
+    itk_component add element {
+        Rappture::PeriodicElement $itk_interior.element -editable yes
+    }
+    pack $itk_component(element) -expand yes -fill both
+    bind $itk_component(element) <<Value>> [itcl::code $this _newValue]
+
+    if { [llength $inactive] > 0 } {
+        $itk_component(element) element inactive $inactive
+    }
+    if { [llength $active] > 0 } {
+        $itk_component(element) element active $active
+    }
+    if { $defval != "" } {
+        $itk_component(element) value $defval
+    }
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElementEntry::destructor {} {
+    $_owner notify remove $this
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElementEntry::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+
+    if {[llength $args] == 1} {
+        if {$onlycheck} {
+            # someday we may add validation...
+            return
+        }
+        set newval [lindex $args 0]
+        $itk_component(element) value $newval
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    #
+    # Query the value and return.
+    #
+    set how [string trim [$_owner xml get $_path.returnvalue]]
+    switch -- $how {
+        weight - number - name - symbol - all {
+            set how "-$how"
+        }
+        default {
+            set how "-name"
+        }
+    }
+    set str [$itk_component(element) element get $how]
+    return $str
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElementEntry::label {} {
+    set label [string trim [$_owner xml get $_path.about.label]]
+    if {"" == $label} {
+        set label "Element"
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElementEntry::tooltip {} {
+    # query tooltip on-demand based on current element
+    return "@[itcl::code $this _tooltip]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _newValue
+#
+# Invoked automatically whenever the value in the element changes.
+# Sends a <<Value>> event to notify clients of the change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElementEntry::_newValue {} {
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _tooltip
+#
+# Returns the tooltip for this widget, given the current element in
+# the selector.  This is normally called by the Rappture::Tooltip
+# facility whenever it is about to pop up a tooltip for this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicElementEntry::_tooltip {} {
+    set tip [string trim [$_owner xml get $_path.about.description]]
+
+    # get the description for the current element, if there is one
+    set str [$itk_component(element) element get -all]
+    if {$_path != ""} {
+        set desc [string trim [$_owner xml get $_path.about.description]]
+    }
+
+    if {[string length $str] > 0 && [string length $desc] > 0} {
+        append tip "\n\n$str:\n$desc"
+    }
+    return $tip
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::PeriodicElementEntry::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    $itk_component(element) configure -state $itk_option(-state)
+}
Index: /tags/1.6.0/gui/scripts/periodictable.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/periodictable.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/periodictable.tcl	(revision 6168)
@@ -0,0 +1,655 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: periodictable - drop-down list of items
+#
+#  This is a drop-down listbox, which might be used in conjunction
+#  with a combobox.
+#
+# ======================================================================
+#  AUTHOR:  George Howlett, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *PeriodicTable.textBackground white widgetDefault
+option add *PeriodicTable.outline black widgetDefault
+option add *PeriodicTable.borderwidth 1 widgetDefault
+option add *PeriodicTable.relief flat widgetDefault
+option add *PeriodicTable.font "Arial 8"
+
+itcl::class Rappture::PeriodicTable {
+    inherit Rappture::Dropdown
+
+    constructor {args} { # defined below }
+
+    public method active { list }
+    public method inactive { list }
+    public method get {args}
+    public method select {name}
+    public method value { {name ""} }
+
+    public proc FindElement { string }
+    public proc ElementIsType { string args }
+
+    private variable _dispatcher ""
+    private variable _current ""
+    private variable _state
+
+    protected method _adjust {{widget ""}}
+
+    protected method _react {}
+    protected method Redraw {}
+    protected method Activate { widget id x y }
+    protected method Deactivate { widget id }
+    private common _colors
+    array set _colors {
+        actinoid-activebackground                       \#cd679a
+        actinoid-activeforeground                       white
+        actinoid-disabledbackground                     \#ff99cc
+        actinoid-disabledforeground                     \#D97DAB
+        actinoid-background                             \#ff99cc
+        actinoid-foreground                             black
+        alkali-metal-activebackground                   \#cd3434
+        alkali-metal-activeforeground                   white
+        alkali-metal-disabledbackground                 \#ff6666
+        alkali-metal-disabledforeground                 \#D04747
+        alkali-metal-background                         \#ff6666
+        alkali-metal-foreground                         black
+        alkaline-earth-metal-activebackground           \#cdac7b
+        alkaline-earth-metal-activeforeground           white
+        alkaline-earth-metal-disabledbackground         \#ffdead
+        alkaline-earth-metal-disabledforeground         \#C19A64
+        alkaline-earth-metal-background                 \#ffdead
+        alkaline-earth-metal-foreground                 black
+        halogen-activebackground                        \#cdcd67
+        halogen-activeforeground                        white
+        halogen-disabledbackground                      \#ffff99
+        halogen-disabledforeground                      \#D5D562
+        halogen-background                              \#ffff99
+        halogen-foreground                              black
+        lanthanoid-activebackground                     \#cd8dcd
+        lanthanoid-activeforeground                     white
+        lanthanoid-disabledbackground                   \#ffbfff
+        lanthanoid-disabledforeground                   \#D884D8
+        lanthanoid-background                           \#ffbfff
+        lanthanoid-foreground                           black
+        metalloid-activebackground                      \#9a9a67
+        metalloid-activeforeground                      white
+        metalloid-disabledbackground                    \#cccc99
+        metalloid-disabledforeground                    \#92922C
+        metalloid-background                            \#cccc99
+        metalloid-foreground                            black
+        noble-gas-activebackground                      \#8ecdcd
+        noble-gas-activeforeground                      white
+        noble-gas-disabledbackground                    \#c0ffff
+        noble-gas-disabledforeground                    \#7FC1C1
+        noble-gas-background                            \#c0ffff
+        noble-gas-foreground                            black
+        other-non-metal-activebackground                \#6ecd6e
+        other-non-metal-activeforeground                white
+        other-non-metal-disabledbackground              \#a0ffa0
+        other-non-metal-disabledforeground              \#6ACD6A
+        other-non-metal-background                      \#a0ffa0
+        other-non-metal-foreground                      black
+        post-transition-metal-activebackground          \#9a9a9a
+        post-transition-metal-activeforeground          white
+        post-transition-metal-disabledbackground        \#cccccc
+        post-transition-metal-disabledforeground        \#999999
+        post-transition-metal-background                \#cccccc
+        post-transition-metal-foreground                black
+        transition-metal-activebackground               \#cd8e8e
+        transition-metal-activeforeground               white
+        transition-metal-disabledbackground             \#ffc0c0
+        transition-metal-disabledforeground             \#C77E7E
+        transition-metal-background                     \#ffc0c0
+        transition-metal-foreground                     black
+        unknown-activebackground                        \#cdcdcd
+        unknown-activeforeground                        white
+        unknown-disabledbackground                      \#ffffff
+        unknown-disabledforeground                      \#B9B9B9
+        unknown-background                              \#ffffff
+        unknown-foreground                              black
+    }
+    private common _tableData {
+        Hydrogen        1  H  1.0079    1 1     other-non-metal
+        Helium          2  He 4.0026    1 18    noble-gas
+        Lithium         3  Li 6.941(2)  2 1     alkali-metal
+        Beryllium       4  Be 9.0122    2 2     alkaline-earth-metal
+        Boron           5  B  10.811(7) 2 13    metalloid
+        Carbon          6  C  12.011    2 14    other-non-metal
+        Nitrogen        7  N  14.007    2 15    other-non-metal
+        Oxygen          8  O  15.999    2 16    other-non-metal
+        Fluorine        9  F  18.998    2 17    halogen
+        Neon            10 Ne 20.180    2 18    noble-gas
+
+        Sodium          11 Na 22.990    3 1     alkali-metal
+        Magnesium       12 Mg 24.305    3 2     alkaline-earth-metal
+        Aluminium       13 Al 26.982    3 13    post-transition-metal
+        Silicon         14 Si 28.086    3 14    metalloid
+        Phosphorus      15 P  30.974    3 15    other-non-metal
+        Sulfur          16 S  32.066(6) 3 16    other-non-metal
+        Chlorine        17 Cl 35.453    3 17    halogen
+        Argon           18 Ar 39.948(1) 3 18    noble-gas
+
+        Potassium       19 K  39.098    4 1     alkali-metal
+        Calcium         20 Ca 40.078(4) 4 2     alkaline-earth-metal
+        Scandium        21 Sc 44.956    4 3     transition-metal
+        Titanium        22 Ti 47.867(1) 4 4     transition-metal
+        Vanadium        23 V  50.942(1) 4 5     transition-metal
+        Chromium        24 Cr 51.996    4 6     transition-metal
+        Manganese       25 Mn 54.938    4 7     transition-metal
+        Iron            26 Fe 55.845(2) 4 8     transition-metal
+        Cobalt          27 Co 58.933    4 9     transition-metal
+        Nickel          28 Ni 58.693    4 10    transition-metal
+        Copper          29 Cu 63.546(3) 4 11    transition-metal
+        Zinc            30 Zn 65.39(2)  4 12    transition-metal
+        Gallium         31 Ga 69.723(1) 4 13    post-transition-metal
+        Germanium       32 Ge 72.61(2)  4 14    metalloid
+        Arsenic         33 As 74.922    4 15    metalloid
+        Selenium        34 Se 78.96(3)  4 16    other-non-metal
+        Bromine         35 Br 79.904(1) 4 17    halogen
+        Krypton         36 Kr 83.80(1)  4 18    noble-gas
+
+        Rubidium        37 Rb 85.468    5 1     alkali-metal
+        Strontium       38 Sr 87.62(1)  5 2     alkaline-earth-metal
+        Yttrium         39 Y  88.906    5 3     transition-metal
+        Zirconium       40 Zr 91.224(2) 5 4     transition-metal
+        Niobium         41 Nb 92.906    5 5     transition-metal
+        Molybdenum      42 Mo 95.94(1)  5 6     transition-metal
+        Technetium      43 Tc [97.907]  5 7     transition-metal
+        Ruthenium       44 Ru 101.07(2) 5 8     transition-metal
+        Rhodium         45 Rh 102.906   5 9     transition-metal
+        Palladium       46 Pd 106.42(1) 5 10    transition-metal
+        Silver          47 Ag 107.868   5 11    transition-metal
+        Cadmium         48 Cd 112.411(8) 5 12   transition-metal
+        Indium          49 In 114.818(3) 5 13   post-transition-metal
+        Tin             50 Sn 118.710(7) 5 14   post-transition-metal
+        Antimony        51 Sb 121.760(1) 5 15   metalloid
+        Tellurium       52 Te 127.60(3) 5 16    metalloid
+        Iodine          53 I  126.904   5 17    halogen
+        Xenon           54 Xe 131.29(2) 5 18    noble-gas
+
+        Cesium          55 Cs 132.905   6 1     alkali-metal
+        Barium          56 Ba 137.327(7) 6 2    alkaline-earth-metal
+        Lanthanides     57-71 * *       6 3     lanthanoid
+        Hafnium         72 Hf 178.49(2) 6 4     transition-metal
+        Tantalum        73 Ta 180.948   6 5     transition-metal
+        Tungsten        74 W  183.84(1) 6 6     transition-metal
+        Rhenium         75 Re 186.207(1) 6 7    transition-metal
+        Osmium          76 Os 190.23(3) 6 8     transition-metal
+        Iridium         77 Ir 192.217(3) 6 9    transition-metal
+        Platinum        78 Pt 195.084(9) 6 10   transition-metal
+        Gold            79 Au 196.967 6 11      transition-metal
+        Mercury         80 Hg 200.59(2) 6 12    transition-metal
+        Thallium        81 Tl 204.383   6 13    post-transition-metal
+        Lead            82 Pb 207.2(1) 6 14     post-transition-metal
+        Bismuth         83 Bi 208.980   6 15    post-transition-metal
+        Polonium        84 Po [208.982] 6 16    metalloid
+        Astatine        85 At [209.987] 6 17    halogen
+        Radon           86 Rn [222.018] 6 18    noble-gas
+
+        Francium        87 Fr [223.020] 7 1     alkali-metal
+        Radium          88 Ra [226.0254] 7 2    alkaline-earth-metal
+        Actinides       89-103 * * 7 3          actinoid
+        Rutherfordium   104 Rf [263.113] 7 4    transition-metal
+        Dubnium         105 Db [262.114] 7 5    transition-metal
+        Seaborgium      106 Sg [266.122] 7 6    transition-metal
+        Bohrium         107 Bh [264.1247] 7 7   transition-metal
+        Hassium         108 Hs [269.134] 7 8    transition-metal
+        Meitnerium      109 Mt [268.139] 7 9    transition-metal
+        Darmstadtium    110 Ds [272.146] 7 10   transition-metal
+        Roentgenium     111 Rg [272.154] 7 11   transition-metal
+        Ununbium        112 Uub [277]   7 12    transition-metal
+        Ununtrium       113 Uut [284] 7 13      post-transition-metal
+        Ununquadium     114 Uuq [289] 7 14      post-transition-metal
+        Ununpentium     115 Uup [288] 7 15      post-transition-metal
+        Ununhexium      116 Uuh [292]  7 16     post-transition-metal
+        Ununseptium     117 Uus ? 7 17          unknown
+        Ununoctium      118 Uuo [294] 7 18      unknown
+
+        Lanthanum       57 La 138.905 8 3       lanthanoid
+        Cerium          58 Ce 140.116(1) 8 4    lanthanoid
+        Praseodymium    59 Pr 140.908 8 5       lanthanoid
+        Neodymium       60 Nd 144.242(3) 8 6    lanthanoid
+        Promethium      61 Pm [144.913] 8 7     lanthanoid
+        Samarium        62 Sm 150.36(2) 8 8     lanthanoid
+        Europium        63 Eu 151.964(1) 8 9    lanthanoid
+        Gadolinium      64 Gd 157.25(3) 8 10    lanthanoid
+        Terbium         65 Tb 158.925   8 11    lanthanoid
+        Dysprosium      66 Dy 162.500(1) 8 12   lanthanoid
+        Holmium         67 Ho 164.930 8 13      lanthanoid
+        Erbium          68 Er 167.259(3) 8 14   lanthanoid
+        Thulium         69 Tm 168.934   8 15    lanthanoid
+        Ytterbium       70 Yb 173.04(3) 8 16    lanthanoid
+        Lutetium        71 Lu 174.967(1) 8 17   lanthanoid
+
+        Actinium        89 Ac [227.027] 9 3     actinoid
+        Thorium         90 Th 232.038   9 4     actinoid
+        Protactinium    91 Pa 231.036 9 5       actinoid
+        Uranium         92 U 238.029 9 6        actinoid
+        Neptunium       93 Np [237.048] 9 7     actinoid
+        Plutonium       94 Pu [244.064] 9 8     actinoid
+        Americium       95 Am [243.061] 9 9     actinoid
+        Curium          96 Cm [247.070] 9 10    actinoid
+        Berkelium       97 Bk [247.070] 9 11    actinoid
+        Californium     98 Cf [251.080] 9 12    actinoid
+        Einsteinium     99 Es [252.083] 9 13    actinoid
+        Fermium         100 Fm [257.095] 9 14   actinoid
+        Mendelevium     101 Md [258.098] 9 15   actinoid
+        Nobelium        102 No [259.101] 9 16   actinoid
+        Lawrencium      103 Lr [262.110] 9 17   actinoid
+    }
+
+    private common _table
+    foreach { name number symbol weight row column type } $_tableData {
+        set _table($name) [list name $name number $number symbol $symbol \
+                weight $weight row $row column $column type $type]
+    }
+
+    private common _types
+    array set _types {
+        actinoid {
+            Actinides Actinium Americium Berkelium Californium Curium
+            Einsteinium Fermium Mendelevium Neptunium Plutonium Protactinium
+            Thorium Uranium Lawrencium Nobelium
+        }
+        alkali-metal {
+            Cesium Francium Lithium Potassium Rubidium Sodium
+        }
+        alkaline-earth-metal {
+            Barium Beryllium Calcium Magnesium Radium Strontium
+        }
+        halogen {
+            Astatine Bromine Chlorine Fluorine Iodine
+        }
+        lanthanoid {
+            Cerium Erbium Europium Gadolinium Holmium Lanthanides Lanthanum
+            Lutetium Neodymium Praseodymium Promethium Samarium Terbium
+            Thulium Ytterbium Dysprosium
+        }
+        metalloid {
+            Arsenic Boron Germanium Polonium Silicon Tellurium Antimony
+        }
+        noble-gas {
+            Argon Helium Krypton Neon Radon Xenon
+        }
+        other-non-metal {
+            Carbon Hydrogen Nitrogen Sulfur Oxygen Phosphorus Selenium
+        }
+        post-transition-metal {
+            Aluminium Bismuth Gallium Indium Lead Thallium Tin Ununhexium
+            Ununpentium Ununquadium Ununtrium
+        }
+        transition-metal {
+            Chromium Cobalt Copper Dubnium Gold Hafnium Hassium Iridium
+            Iron Manganese Meitnerium Mercury Molybdenum Nickel Niobium
+            Osmium Palladium Rhenium Rhodium Roentgenium Ruthenium
+            Rutherfordium Scandium Seaborgium Silver Tantalum Technetium
+            Titanium Tungsten Ununbium Vanadium Yttrium Zinc Zirconium
+            Bohrium Cadmium Darmstadtium Platinum
+        }
+        unknown {
+            Ununoctium
+            Ununseptium
+        }
+    }
+}
+
+itk::usual PeriodicTable {
+    keep -background -outline -cursor
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicTable::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Redraw]; list"
+
+    foreach name [array names _table] {
+        set _state($name) "normal"
+    }
+
+    itk_component add scroller {
+        Rappture::Scroller $itk_interior.sc \
+            -xscrollmode off -yscrollmode auto
+    }
+    pack $itk_component(scroller) -expand yes -fill both
+
+    itk_component add table {
+        canvas $itk_component(scroller).table \
+            -highlightthickness 0
+    } {
+        usual
+        rename -background -textbackground textBackground Background
+        ignore -highlightthickness -highlightbackground -highlightcolor
+        keep -relief
+    }
+    $itk_component(scroller) contents $itk_component(table)
+
+    # add bindings so the table can react to selections
+    bind RappturePeriodicTable-$this <ButtonRelease-1> [itcl::code $this _react]
+    bind RappturePeriodicTable-$this <Return> [itcl::code $this _react]
+    bind RappturePeriodicTable-$this <KP_Enter> [itcl::code $this _react]
+    bind RappturePeriodicTable-$this <space> [itcl::code $this _react]
+    bind RappturePeriodicTable-$this <Escape> [itcl::code $this unpost]
+
+    set btags [bindtags $itk_component(table)]
+    set i [lsearch $btags [winfo class $itk_component(table)]]
+    if {$i < 0} {
+        set i end
+    }
+    set btags [linsert $btags [expr {$i+1}] RappturePeriodicTable-$this]
+    bindtags $itk_component(table) $btags
+
+    eval itk_initialize $args
+    Redraw
+}
+
+#
+# active <list of elements>
+#
+#       Enables zero or more elements in the periodic table so that
+#       they can be selected.  All elements are first disabled.  Each
+#       argument can one of the following forms:
+#       1. element name.
+#       2. element symbol.
+#       3. element number.
+#       4. type of element.  The argument is expanded into all
+#          elements of that type.
+#
+itcl::body Rappture::PeriodicTable::active { list } {
+    set c $itk_component(table)
+    foreach elem [array names _table] {
+        set _state($elem) "disabled"
+        $c bind $elem <Enter> {}
+        $c bind $elem <Leave> {}
+        $c bind $elem <ButtonRelease-1> {}
+    }
+    # Expand any arguments that represent a group of elements.
+    set arglist {}
+    foreach arg $list {
+        if { [info exists _types($arg)] } {
+            set arglist [concat $arglist $_types($arg)]
+        } else {
+            lappend arglist $arg
+        }
+    }
+    foreach arg $arglist {
+        set elem [FindElement $arg]
+        if { $elem == "" } {
+            puts stderr "unknown element \"$arg\""
+        } else {
+            set _state($elem) "normal"
+            $c bind $elem <Enter> \
+                [itcl::code $this Activate %W $elem %X %Y]
+            $c bind $elem <Leave> [itcl::code $this Deactivate %W $elem]
+            $c bind $elem <ButtonRelease-1> [itcl::code $this value $elem]
+        }
+    }
+    $_dispatcher event -idle !rebuild
+}
+
+#
+# inactive <list of elements>
+#
+#       Disables zero or more elements in the periodic table so that
+#       they can't be selected.  All elements are first enabled.  Each
+#       argument can one of the following forms:
+#       1. element name.
+#       2. element symbol.
+#       3. element number.
+#       4. type of element.  The argument is expanded into all
+#          elements of that type.
+#
+itcl::body Rappture::PeriodicTable::inactive { list } {
+    set c $itk_component(table)
+    foreach elem [array names _table] {
+        set _state($elem) "normal"
+        $c bind $elem <Enter> \
+            [itcl::code $this Activate %W $elem %X %Y]
+        $c bind $elem <Leave> [itcl::code $this Deactivate %W $elem]
+        $c bind $elem <ButtonRelease-1> [itcl::code $this value $elem]
+    }
+    # Expand any arguments that represent a group of elements.
+    set arglist {}
+    foreach arg $list {
+        if { [info exists _types($arg)] } {
+            set arglist [concat $arglist $_types($arg)]
+        } else {
+            lappend arglist $arg
+        }
+    }
+    foreach arg $arglist {
+        set elem [FindElement $arg]
+        if { $elem == "" } {
+            puts stderr "unknown element \"$arg\""
+        } else {
+            set _state($elem) "disabled"
+            $c bind $elem <Enter> {}
+            $c bind $elem <Leave> {}
+            $c bind $elem <ButtonRelease-1> {}
+        }
+    }
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-symbol|-name|-all? ?name?
+#
+# Queries one or more values from the drop-down list.  With no args,
+# it returns a list of all values and labels in the list.  If the
+# index is specified, then it returns the value or label (or both)
+# for the specified index.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicTable::get { args } {
+    set first [lindex $args 0]
+    set choices {-symbol -weight -number -name -all}
+    set format "-name"
+    if {[string index $first 0] == "-"} {
+        if {[lsearch $choices $first] < 0} {
+            error "bad option \"$first\": should be [join [lsort $choices] {, }]"
+        }
+        set format $first
+        set args [lrange $args 1 end]
+    }
+    # return the whole list or just a single value
+    if {[llength $args] > 1} {
+        error "wrong # args: should be [join [lsort $choices] {, }]"
+    }
+    if {[llength $args] == 0} {
+        set name $_current
+    } else {
+        set name [lindex $args 0]
+    }
+    set elem [FindElement $name]
+    if { $elem == "" || $_state($elem) == "disabled" } {
+        if { $elem != "" } {
+            puts stderr "element $elem is disabled"
+        }
+        return ""
+    }
+    array set info $_table($elem)
+    # scan through and build up the return list
+    switch -- $format {
+        -name   { set value $info(name)   }
+        -symbol { set value $info(symbol) }
+        -weight { set value $info(weight) }
+        -number { set value $info(number) }
+        -all {
+            foreach key { symbol name number weight } {
+                lappend value $key $info($key)
+            }
+        }
+    }
+    return $value
+}
+
+# ----------------------------------------------------------------------
+# USAGE: select <name>
+#
+# Used to manipulate the selection in the table.
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicTable::select { what } {
+    set elem [FindElement $what]
+    if { $elem == "" } {
+        set elem "Hydrogen"
+    }
+    set _current $elem
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: FindElement <what>
+#
+# Checks to see if the given string <what> is recognized as an element
+# name, symbol, or number.  Returns the corresponding element name
+# or "" if the element is not recognized.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicTable::FindElement { what } {
+    foreach name [array names _table] {
+        array unset info
+        array set info $_table($name)
+        if { $what eq $info(name) || $what eq $info(number) ||
+             $what eq $info(symbol) } {
+            return $info(name)
+        }
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ElementIsType <name> <type> <type>...
+#
+# Checks to see if the given element <name> is one of the specified
+# <type> values.  Returns true if the element is one of the types
+# (logical or), or false if it is not.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicTable::ElementIsType { name args } {
+    foreach type $args {
+        if {[info exists _types($type)]} {
+            if {[lsearch -exact $_types($type) $name] >= 0} {
+                return 1
+            }
+        }
+    }
+    return 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _adjust ?<widget>?
+#
+# This method is invoked each time the dropdown is posted to adjust
+# its size and contents.  If the <widget> is specified, it is the
+# controlling widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicTable::_adjust {{widget ""}} {
+    chain $widget
+
+    focus $itk_component(table)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _react
+#
+# Invoked automatically when the user has selected something from
+# the listbox.  Unposts the drop-down and generates an event letting
+# the client know that the selection has changed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicTable::_react {} {
+    unpost
+    event generate $itk_component(hull) <<PeriodicTableSelect>>
+}
+
+itcl::body Rappture::PeriodicTable::Activate { canvas id x y } {
+    set c $itk_component(table)
+    array set info $_table($id)
+    set type $info(type)
+    set fg $_colors($type-activeforeground)
+    set bg $_colors($type-activebackground)
+    $c itemconfigure $id-rect -outline black -width 1 -fill $bg
+    $c itemconfigure $id-number -fill white
+    $c itemconfigure $id-symbol -fill white
+    ::Rappture::Tooltip::text $c \
+        "$info(name) ($info(symbol))\nNumber: $info(number)\nWeight: $info(weight)"
+    ::Rappture::Tooltip::tooltip pending $c @$x,$y
+}
+
+itcl::body Rappture::PeriodicTable::Deactivate { canvas id } {
+    set c $itk_component(table)
+    array set info $_table($id)
+    set type $info(type)
+    set fg $_colors($type-foreground)
+    set bg $_colors($type-background)
+    $c itemconfigure $id-rect -outline $fg -width 1 -fill $bg
+    $c itemconfigure $id-number -fill $fg
+    $c itemconfigure $id-symbol -fill $fg
+    ::Rappture::Tooltip::tooltip cancel
+}
+
+itcl::body Rappture::PeriodicTable::value {{value "" }} {
+    if { $value != "" } {
+        set _current $value
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Redraw
+#
+# Invoked automatically when the user has selected something from
+# the canvas.  Unposts the drop-down and generates an event letting
+# the client know that the selection has changed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PeriodicTable::Redraw {} {
+    set sqwidth [winfo pixels . 0.22i]
+    set sqheight [winfo pixels . 0.22i]
+set xoffset 4
+set yoffset 4
+set last ""
+    set c $itk_component(table)
+    $c delete all
+    foreach name [array names _table] {
+        array set info $_table($name)
+        set x1 [expr ($info(column)-1)*$sqwidth+$xoffset]
+        set y1 [expr ($info(row)-1)*$sqheight+$yoffset]
+        set x2 [expr ($info(column)*$sqwidth)-2+$xoffset]
+        set y2 [expr ($info(row)*$sqheight)-2+$yoffset]
+        set type $info(type)
+        if { $_state($name) == "disabled" } {
+            set fg $_colors($type-disabledforeground)
+            set bg $_colors($type-disabledbackground)
+        } else {
+            set fg $_colors($type-foreground)
+            set bg $_colors($type-background)
+        }
+        $c create rectangle $x1 $y1 $x2 $y2 -outline $fg -fill $bg \
+            -tags $info(name)-rect
+        if { $info(symbol) != "*" } {
+            $c create text [expr ($x2+$x1)/2+1] [expr ($y2+$y1)/2+4] \
+                -anchor c -fill $fg \
+                -text [string range $info(symbol) 0 4] \
+                -font "Arial 8 bold" -tags $info(name)-symbol
+            $c create text [expr $x2-2] [expr $y1+2] -anchor ne \
+                -text $info(number) -fill $fg \
+                -font "math1 6" -tags $info(name)-number
+        }
+        $c create rectangle $x1 $y1 $x2 $y2 -outline "" -fill "" \
+            -tags $info(name)
+        if { $_state($name) == "normal" } {
+        $c bind $info(name) <Enter> \
+            [itcl::code $this Activate %W $info(name) %X %Y]
+        $c bind $info(name) <Leave> [itcl::code $this Deactivate %W $info(name)]
+        $c bind $info(name) <ButtonRelease-1> [itcl::code $this value $info(name)]
+        }
+    }
+    update
+    foreach { x1 y1 x2 y2 } [$c bbox all] break
+    set width [expr $x2-$x1+$xoffset*2]
+    set height [expr $y2-$y1+$yoffset*2]
+    $c configure -height $height -width $width -background white
+}
Index: /tags/1.6.0/gui/scripts/postern.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/postern.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/postern.tcl	(revision 6168)
@@ -0,0 +1,344 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: postern - a back door for debugging
+#
+#  This utility gives you a console that you can use to debug any
+#  live application.  You have to click and type the proper magic
+#  in the right spot, and a console area will appear to handle
+#  your requests.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require BLT
+package require Itk
+
+option add *Postern.size 2 widgetDefault
+option add *Postern.activeColor gray widgetDefault
+option add *Postern.popup above widgetDefault
+option add *Postern*Text.font \
+    -*-courier-medium-r-normal-*-12-* widgetDefault
+option add *Postern*Text.errorFont \
+    -*-courier-medium-o-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Postern {
+    inherit itk::Widget
+
+    itk_option define -size size Size 1
+    itk_option define -activecolor activeColor ActiveColor ""
+    itk_option define -popup popup Popup ""
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+    public method open {}
+    public method close {}
+    public method activate {args}
+    public method command {option}
+
+    public method _fake_puts {args}
+
+    private variable _active 0    ;# true when active and able to open
+    private variable _focus ""    ;# focus before this widget took over
+    private variable _afterid ""  ;# id for after event that clears activate
+
+    private variable _history ""  ;# list of recent commands
+    private variable _hpos 0      ;# current index in _history
+}
+
+itk::usual Postern {
+    keep -cursor -background
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Postern::constructor {args} {
+    global env tcl_platform
+
+    # this sequence gets things started...
+    if {$tcl_platform(os) == "Darwin"} {
+        # this works better on the Mac
+        bind $itk_component(hull) <Control-Button-1><Control-Button-1> \
+            [itcl::code $this activate on]
+    } else {
+        bind $itk_component(hull) <Button-1><Button-1><Button-3><Button-3> \
+            [itcl::code $this activate on]
+    }
+
+    #
+    # Get the magic word from the environment.
+    #
+    if {[info exists env(RAPPTURE_POSTERN)]} {
+        set event ""
+        foreach letter [split $env(RAPPTURE_POSTERN) ""] {
+            append event "<Key-$letter>"
+        }
+        bind $itk_component(hull) $event [itcl::code $this open]
+    }
+
+    #
+    # Build the debug dialog.
+    #
+    Rappture::Balloon $itk_component(hull).popup \
+        -title "Secret Command Console" \
+        -deactivatecommand [itcl::code $this activate off]
+    set inner [$itk_component(hull).popup component inner]
+
+    Rappture::Scroller $inner.area
+    pack $inner.area -expand yes -fill both
+    text $inner.area.text
+    $inner.area contents $inner.area.text
+
+    $inner.area.text tag configure error -foreground red \
+        -font [option get $inner.area.text errorFont Font]
+    $inner.area.text tag configure stderr -foreground red \
+        -font [option get $inner.area.text errorFont Font]
+    $inner.area.text tag configure stdout -foreground blue \
+        -font [option get $inner.area.text errorFont Font]
+
+    bind $inner.area.text <KeyPress> \
+        [itcl::code $this command key]
+    bind $inner.area.text <KeyPress-BackSpace> \
+        [itcl::code $this command backspace]
+    bind $inner.area.text <Control-KeyPress-h> \
+        [itcl::code $this command backspace]
+
+    bind $inner.area.text <KeyPress-Return> \
+        [itcl::code $this command execute]
+    bind $inner.area.text <KP_Enter> \
+        [itcl::code $this command execute]
+
+    bind $inner.area.text <KeyPress-Up> \
+        "[itcl::code $this command previous]; break"
+    bind $inner.area.text <Control-KeyPress-p> \
+        "[itcl::code $this command previous]; break"
+
+    bind $inner.area.text <KeyPress-Down> \
+        "[itcl::code $this command next]; break"
+    bind $inner.area.text <Control-KeyPress-n> \
+        "[itcl::code $this command next]; break"
+
+    command prompt
+
+    eval itk_initialize $args
+
+    # this makes it easier to find the magic spot
+    bind $itk_component(hull) <Alt-Enter> [list $itk_component(hull) configure -background $itk_option(-activecolor)]
+    bind $itk_component(hull) <Leave> [list $itk_component(hull) configure -background $itk_option(-background)]
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Postern::destructor {} {
+    if {"" != $_afterid} {
+        after cancel $_afterid
+        set _afterid ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: active ?on|off?
+#
+# Used to query or set the activation state of this widget.  When
+# the widget is "active", it changes color and accepts the magic
+# pass phrase that will open up the debug panel.  A short delay after
+# being activated, it deactivates itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Postern::activate {args} {
+    if {[llength $args] == 0} {
+        return $_active
+    }
+
+    if {"" != $_afterid} {
+        after cancel $_afterid
+        set _afterid ""
+    }
+
+    if {$args} {
+        component hull configure -background $itk_option(-activecolor)
+        set _focus [focus]
+        focus $itk_component(hull)
+        set _active 1
+        set _afterid [after 3000 [itcl::code $this activate off]]
+    } else {
+        focus $_focus
+        set _focus ""
+        component hull configure -background $itk_option(-background)
+
+        if {[info commands _tcl_puts] != ""} {
+            # set puts back to normal
+            rename ::puts ""
+            rename ::_tcl_puts ::puts
+        }
+        set _active 0
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: open
+#
+# Used to open the debug area.  If the widget is active, then the
+# debug area pops up near it.  Otherwise, this method does nothing.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Postern::open {} {
+    if {$_active} {
+        if {"" != $_afterid} {
+            # don't deactivate until we close
+            after cancel $_afterid
+            set _afterid ""
+        }
+
+        $itk_component(hull).popup activate \
+            $itk_component(hull) $itk_option(-popup)
+
+        set text [$itk_component(hull).popup component inner].area.text
+        focus $text
+
+        # make puts send output to this display
+        rename ::puts ::_tcl_puts
+        proc ::puts {args} [format {%s _fake_puts $args} $this]
+    }
+}
+
+itcl::body Rappture::Postern::close {} {
+    $itk_component(hull).popup deactivate
+}
+
+# ----------------------------------------------------------------------
+# USAGE: command prompt
+# USAGE: command execute
+# USAGE: command next
+# USAGE: command previous
+# USAGE: command key
+#
+# Used to handle various editing operations in the text area.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Postern::command {option} {
+    set text [$itk_component(hull).popup component inner].area.text
+
+    switch -- $option {
+        prompt {
+            if {[lindex [split [$text index end-1char] .] 1] != 0} {
+                $text insert end "\n"
+            }
+            $text insert end "% "
+            $text mark set command end-1char
+            $text mark gravity command left
+            $text mark set insert end
+            $text see insert
+        }
+        key {
+            if {[$text compare insert < command]} {
+                $text mark set insert end
+                $text see insert
+            }
+        }
+        backspace {
+            if {[catch {$text index sel.first}] == 0} {
+                if {[$text compare sel.first < command]
+                      || [$text compare sel.last < command]} {
+                    $text tag remove sel 1.0 end
+                }
+            }
+            if {[$text compare insert < command]} {
+                $text mark set insert end
+                $text see insert
+            }
+            if {[$text compare insert == command]} {
+                return -code break  ;# don't erase past start of command
+            }
+        }
+        execute {
+            set cmd [string trim [$text get command end]]
+            if {"" == $cmd} {
+                command prompt
+            } else {
+                lappend _history $cmd
+                if {[llength $_history] > 100} {
+                    set _history [lrange $_history end-100 end]
+                }
+                set _hpos [llength $_history]
+
+                $text insert end "\n"
+                if {[catch {uplevel #0 $cmd} result]} {
+                    $text insert end $result error
+                } else {
+                    $text insert end $result
+                }
+                command prompt
+            }
+            return -code break
+        }
+        next {
+            if {$_hpos < [llength $_history]} {
+                incr _hpos
+                set cmd [lindex $_history $_hpos]
+                $text delete command end
+                $text insert command $cmd
+                $text mark set insert end
+                $text see insert
+            }
+        }
+        previous {
+            if {$_hpos > 0} {
+                incr _hpos -1
+                set cmd [lindex $_history $_hpos]
+                $text delete command end
+                $text insert command $cmd
+                $text mark set insert end
+                $text see insert
+            }
+        }
+        default {
+            error "bad option \"$option\""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fake_puts {?-nonewline? ?<channel>? <string>}
+#
+# This method acts as a replacement for puts.  It sends output
+# to the postern screen, itstead of stdin/stdout.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Postern::_fake_puts {arglist} {
+    Rappture::getopts arglist params {
+        flag group -nonewline
+    }
+    switch -- [llength $arglist] {
+        1 {
+            set channel stdout
+            set string [lindex $arglist 0]
+        }
+        2 {
+            set channel [lindex $arglist 0]
+            set string [lindex $arglist 1]
+        }
+        default {
+            error "wrong # args: should be \"puts ?-nonewline? ?channel? string\""
+        }
+    }
+
+    set text [$itk_component(hull).popup component inner].area.text
+    if {$channel == "stdout" || $channel == "stderr"} {
+        $text insert end $string $channel
+        if {!$params(-nonewline)} {
+            $text insert end "\n"
+        }
+    } else {
+        eval _tcl_puts $arglist
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -size
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Postern::size {
+    component hull configure \
+        -width $itk_option(-size) \
+        -height $itk_option(-size)
+}
Index: /tags/1.6.0/gui/scripts/probdisteditor.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/probdisteditor.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/probdisteditor.tcl	(revision 6168)
@@ -0,0 +1,697 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: ProbDistEditor - probability distribution editor
+#
+#  This widget displays a probability distribution and lets the user
+#  edit it in various flavors.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2010  Purdue University
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *ProbDistEditor.fillColor blue widgetDefault
+option add *ProbDistEditor*Entry.background white widgetDefault
+option add *ProbDistEditor*Entry.width 10 widgetDefault
+
+    itcl::class Rappture::ProbDistEditor {
+    inherit itk::Widget
+
+    itk_option define -fillcolor fillColor FillColor ""
+
+    constructor {args} { # defined below }
+    public method value {{newval ""}}
+    public method mode {{newval ""}}
+    public method reset {}
+
+    protected method _redraw {}
+    protected method _axisLabels {which graph val}
+    protected method _apply {op {widget ""}}
+
+    protected variable _dispatcher ""   ;# dispatcher for !events
+    protected variable _mode ""         ;# type of distribution function
+    protected variable _value           ;# data values for mode-detail
+    protected variable _uvalue          ;# data values for mode-detail with units
+    protected variable _umin             ;# minimum allowed value for tool with units
+    protected variable _umax             ;# maximum allowed value for tool with units
+    protected variable _units           ;# units for min and max
+}
+
+itk::usual ProbDistEditor {
+    keep -cursor -font -foreground -background
+    keep -fillcolor
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ProbDistEditor::constructor {min max units default} {
+    # create a dispatcher for events
+    #puts "PDE::constructor $min $max $default"
+
+    # These are the tool min and max values.  May be empty.
+    set _umin $min
+    set _umax $max
+    set _units $units
+    set _uvalue(central) $default
+
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !redraw
+    $_dispatcher dispatch $this !redraw "[itcl::code $this _redraw]; list"
+
+    itk_component add vals {
+        frame $itk_interior.vals
+    }
+    pack $itk_component(vals) -side left -fill both -padx {0 10}
+    #
+    # EXACT value options
+    #
+    itk_component add exactvals {
+        frame $itk_component(vals).exact
+    }
+    itk_component add evl {
+        label $itk_component(exactvals).l -text "Value:"
+    }
+    entry $itk_component(exactvals).val
+    _apply bindings $itk_component(exactvals).val
+    grid $itk_component(evl) -row 0 -column 0 -sticky e
+    grid $itk_component(exactvals).val -row 0 -column 1 -sticky ew -pady 2
+    grid rowconfigure $itk_component(exactvals) 1 -weight 1
+    #
+    # UNIFORM value options
+    #
+    itk_component add uniformvals {
+        frame $itk_component(vals).uniform
+    }
+    itk_component add uvl0 {
+        label $itk_component(uniformvals).l0 -text "Minimum:"
+    }
+    entry $itk_component(uniformvals).min
+    _apply bindings $itk_component(uniformvals).min
+    grid $itk_component(uvl0) -row 0 -column 0 -sticky e
+    grid $itk_component(uniformvals).min -row 0 -column 1 -sticky ew -pady 2
+
+    itk_component add uvl1 {
+        label $itk_component(uniformvals).l1 -text "Maximum:"
+    }
+    entry $itk_component(uniformvals).max
+    _apply bindings $itk_component(uniformvals).max
+    grid $itk_component(uvl1) -row 1 -column 0 -sticky e
+    grid $itk_component(uniformvals).max -row 1 -column 1 -sticky ew -pady 2
+    grid rowconfigure $itk_component(uniformvals) 2 -weight 1
+
+    #
+    # GAUSSIAN value options
+    #
+    itk_component add gaussianvals {
+        frame $itk_component(vals).gaussian
+    }
+    itk_component add gvlm {
+        label $itk_component(gaussianvals).lm -text "Mean:"
+    }
+    entry $itk_component(gaussianvals).mean
+    _apply bindings $itk_component(gaussianvals).mean
+    grid $itk_component(gvlm) -row 0 -column 0 -sticky e
+    grid $itk_component(gaussianvals).mean -row 0 -column 1 -sticky ew -pady 2
+
+    itk_component add gvls {
+        label $itk_component(gaussianvals).ls -text "Std Deviation:"
+    }
+    entry $itk_component(gaussianvals).stddev
+    _apply bindings $itk_component(gaussianvals).stddev
+    grid $itk_component(gvls) -row 1 -column 0 -sticky e
+    grid $itk_component(gaussianvals).stddev -row 1 -column 1 -sticky ew -pady 2
+
+    itk_component add gvl0 {
+        label $itk_component(gaussianvals).l0 -text "Minimum:" -state disabled
+    }
+    entry $itk_component(gaussianvals).min -state readonly
+    _apply bindings $itk_component(gaussianvals).min
+    grid $itk_component(gvl0) -row 2 -column 0 -sticky e
+    grid $itk_component(gaussianvals).min -row 2 -column 1 -sticky ew -pady 2
+
+    itk_component add gvl1 {
+        label $itk_component(gaussianvals).l1 -text "Maximum:" -state disabled
+    }
+    entry $itk_component(gaussianvals).max -state readonly
+    _apply bindings $itk_component(gaussianvals).max
+    grid $itk_component(gvl1) -row 3 -column 0 -sticky e
+    grid $itk_component(gaussianvals).max -row 3 -column 1 -sticky ew -pady 2
+    grid rowconfigure $itk_component(gaussianvals) 4 -weight 1
+
+    #
+    # Preview graph to display probability density function
+    #
+    itk_component add graph {
+        blt::graph $itk_interior.graph -width 2i -height 1i \
+            -plotborderwidth 1 -plotrelief solid -plotpadx 0 -plotpady 0 \
+            -highlightthickness 0
+    } {
+        keep -background -foreground -cursor -font
+    }
+    pack $itk_component(graph) -expand yes -fill both
+
+    $itk_component(graph) xaxis configure -ticklength 4 \
+        -command [itcl::code $this _axisLabels xaxis]
+    $itk_component(graph) yaxis configure -ticklength 4 \
+        -title "PDF" -command [itcl::code $this _axisLabels yaxis]
+    $itk_component(graph) grid off
+    $itk_component(graph) legend configure -hide yes
+
+    # start in exact mode with default values
+    mode "exact"
+
+    eval itk_initialize
+
+    #
+    # Figure out a good size for all panels of options and for the
+    # overall widget.
+    #
+    update idletasks
+    set maxw 0
+    set maxh 0
+    foreach panel {exact uniform gaussian} {
+        set w [winfo reqwidth $itk_component(${panel}vals)]
+        if {$w > $maxw} { set maxw $w }
+        set h [winfo reqheight $itk_component(${panel}vals)]
+        if {$h > $maxh} { set maxh $h }
+    }
+
+    pack propagate $itk_component(vals) off
+    $itk_component(vals) configure -width $maxw -height $maxh
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?<setValue>?
+#
+# With no arguments, this returns the current value within the widget
+# as a list of key/value pairs:
+#   mode gaussian mean xxx stddev xxx min xxx max xxx
+#
+# Each value always has a "mode" that indicates its type, and other
+# values to characterize the type.
+#
+# If the value is specified, then it is interpreted as the sort of
+# value that is passed back, but used to set the value.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ProbDistEditor::value {{newval ""}} {
+    # puts "PDE::value $newval"
+
+    #FIXME: _value has numerical values _uvalue has value with units
+    if {"" == $newval} {
+        catch {_apply finalize}  ;# apply any outstanding changes
+
+        switch -- $_mode {
+            exact {
+                return $_uvalue(central)
+            }
+            uniform {
+                return [list uniform $_uvalue(min) $_uvalue(max)]
+            }
+            gaussian {
+                return [list gaussian $_uvalue(central) $_uvalue(stddev)]
+            }
+            default {
+                error "don't know how to format value for $_mode"
+            }
+        }
+    }
+
+    set newmode [lindex $newval 0]
+    switch -- $newmode {
+        uniform {
+            foreach {utmp(min) utmp(max)} [lrange $newval 1 2] break
+            if {[catch {Rappture::Units::convert $utmp(min) -units off} tmp(min)]} {
+                set tmp(min) $utmp(min)
+            }
+            if {[catch {Rappture::Units::convert $utmp(max) -units off} tmp(max)]} {
+                set tmp(max) $utmp(max)
+            }
+        }
+        gaussian {
+            foreach {utmp(central) utmp(stddev)} [lrange $newval 1 2] break
+            if {[catch {Rappture::Units::convert $utmp(central) -units off} tmp(central)]} {
+                set tmp(central) $utmp(central)
+            }
+            if {[catch {Rappture::Units::convert $utmp(stddev) -units off} tmp(stddev)]} {
+                set tmp(stddev) $utmp(stddev)
+            }
+            set units [Rappture::Units::Search::for $utmp(central)]
+            if {"" != $_umin} {
+                if {"" != $units} {
+                    set tmp(min) [Rappture::Units::convert $_umin -to $units -context $units -units off]
+                } else {
+                    set tmp(min) $_umin
+                }
+            }
+            if {"" != $_umax} {
+                if {"" != $units} {
+                    set tmp(max) [Rappture::Units::convert $_umax -to $units -context $units -units off]
+                } else {
+                    set tmp(max) $_umax
+                }
+            }
+        }
+        exact {
+            set utmp(central) [lindex $newval 1]
+            if {[catch {Rappture::Units::convert $utmp(central) -units off} tmp(central)]} {
+                set tmp(central) $utmp(central)
+            }
+        }
+        default {
+            set newmode exact
+            set utmp(central) [lindex $newval 0]
+            if {[catch {Rappture::Units::convert $utmp(central) -units off} tmp(central)]} {
+                set tmp(central) $utmp(central)
+            }
+        }
+    }
+    array set _value [array get tmp]
+    array set _uvalue [array get utmp]
+    mode $newmode  ;# assign this mode and copy in values for editing
+}
+
+# ----------------------------------------------------------------------
+# USAGE: mode ?<setMode>?
+#
+# With no arguments, this returns a list of allowed distribution
+# modes.  Otherwise, the value sets the mode of the distribution and
+# loads default or previous values for the distribution.  Note that
+# the mode is also reported as part of the "value" returned from
+# this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ProbDistEditor::mode {{newval ""}} {
+    # puts "PDE::mode mode=$newval min=$_umin max=$_umax units=$_units"
+
+    set modes {exact uniform gaussian custom}
+    if {"" == $newval} {
+        return $modes
+    }
+
+    set check 0
+    if {$newval == "check"} {
+        set newval $_mode
+        set check 1
+    }
+
+    if {[lsearch $modes $newval] < 0} {
+        error "bad value \"$newval\": should be [join $modes {, }]"
+    }
+
+    # discard units from tool min/max
+    if {$_units == ""} {
+        set min $_umin
+        set max $_umax
+    } else {
+        if {$_umin == ""} {
+            set min ""
+        } else {
+            set min [Rappture::Units::convert $_umin -context $_units -units off]
+        }
+        if {$_umax == ""} {
+            set max ""
+        } else {
+            set max [Rappture::Units::convert $_umax -context $_units -units off]
+        }
+    }
+
+    # The mode was changed by the user.  Pick reasonable values.
+    switch -- $newval {
+        exact {
+            if {![info exists _value(central)]} {
+                if {$min != "" && $max != ""} {
+                    set _value(central) [expr {0.5*($max + $min)}]
+                } else {
+                    set _value(central) 0.5
+                }
+                set _uvalue(central) $_value(central)$_units
+            }
+        }
+        uniform {
+            if {![info exists _value(min)] || ![info exists _value(max)]} {
+                set _value(max) [expr $_value(central) * 1.1]
+                set _value(min) [expr $_value(central) * 0.9]
+                if {$_value(central) == 0.0} {
+                    set _value(max) 1.0
+                }
+                if {$min != ""} {
+                    if {$_value(min) < $min} {
+                        set $_value(min) $min
+                    }
+                }
+                if {$max != ""} {
+                    if {$_value(max) > $max} {
+                        set $_value(max) $max
+                    }
+                }
+                set _uvalue(min) $_value(min)$_units
+                set _uvalue(max) $_value(max)$_units
+            }
+        }
+        gaussian {
+            #puts "GAUSSIAN min=$min max=$max"
+            if {![info exists _value(central)]} {
+                if {[info exists _value(min)] && [info exists _value(max)]} {
+                    set _value(central) [expr {0.5*($_value(max) + $_value(min))}]
+                } else {
+                    set _value(central) [expr {0.5*($max + $min)}]
+                }
+            }
+            #puts "central=$_value(central)"
+            if {![info exists _value(stddev)]} {
+                set _value(stddev)  [expr $_value(central) * 0.10]
+            }
+            if {$_value(stddev) <= 0} {
+                set _value(stddev) 1.0
+            }
+            #puts "stddev=$_value(stddev)"
+            # lower bound is -3 deviations or tool min
+            set trunc [expr {$_value(central) - 3*$_value(stddev)}]
+            if {$min == "" || $trunc > $min} {
+                set _value(min) $trunc
+            } else {
+                set _value(min) $min
+            }
+
+            # upper bound is +3 deviations or tool max
+            set trunc [expr {$_value(central) + 3*$_value(stddev)}]
+            if {$max == "" || $trunc < $max} {
+                set _value(max) $trunc
+            } else {
+                set _value(max) $max
+            }
+
+            set _uvalue(min) $_value(min)$_units
+            set _uvalue(max) $_value(max)$_units
+            set _uvalue(central) $_value(central)$_units
+            set _uvalue(stddev) $_value(stddev)$_units
+        }
+    }
+
+    if {$check == 1} {
+        return
+    }
+    # pop up the panel of editing options for this mode
+    foreach w [pack slaves $itk_component(vals)] {
+        pack forget $w
+    }
+    pack $itk_component(${newval}vals) -expand yes -fill both
+
+    switch -- $newval {
+        exact {
+            $itk_component(exactvals).val delete 0 end
+            $itk_component(exactvals).val insert end $_uvalue(central)
+            focus $itk_component(exactvals).val
+        }
+        uniform {
+            $itk_component(uniformvals).min delete 0 end
+            $itk_component(uniformvals).min insert end $_uvalue(min)
+            $itk_component(uniformvals).max delete 0 end
+            $itk_component(uniformvals).max insert end $_uvalue(max)
+            focus $itk_component(uniformvals).min
+        }
+        gaussian {
+            $itk_component(gaussianvals).mean delete 0 end
+            $itk_component(gaussianvals).mean insert end $_uvalue(central)
+            $itk_component(gaussianvals).stddev delete 0 end
+            $itk_component(gaussianvals).stddev insert end $_uvalue(stddev)
+
+            $itk_component(gaussianvals).min configure -state normal
+            $itk_component(gaussianvals).min delete 0 end
+            $itk_component(gaussianvals).min insert end $_uvalue(min)
+            $itk_component(gaussianvals).min configure -state readonly
+
+            $itk_component(gaussianvals).max configure -state normal
+            $itk_component(gaussianvals).max delete 0 end
+            $itk_component(gaussianvals).max insert end $_uvalue(max)
+            $itk_component(gaussianvals).max configure -state readonly
+
+            focus $itk_component(gaussianvals).mean
+        }
+    }
+
+    set _mode $newval
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Clears all value information so that the next value application
+# starts from scratch.  Without a reset, the widget carries information
+# like the "central" value, in case the user changes modes and then
+# changes back.  Reset discards that info and starts fresh.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ProbDistEditor::reset {} {
+    set _mode ""
+    catch {unset _value}
+    catch {unset _uvalue}
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Used internally to reconfigure the graph to display the current
+# distribution plot.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ProbDistEditor::_redraw {} {
+    #puts "PDE::_redraw"
+
+    set g $itk_component(graph)
+    eval $g element delete [$g element names]
+    eval $g mark delete [$g mark names]
+    switch -- $_mode {
+        exact {
+            $g xaxis configure -majorticks {} -min 0 -max 1 -stepsize 0.1
+            $g yaxis configure -min 0 -max 1
+            $g element create delta \
+                -xdata {0 0.48 0.49 0.50 0.51 0.52 1} \
+                -ydata {0    0 0.05 0.93 0.05    0 0} \
+                -color $itk_option(-foreground) -symbol "" \
+                -areaforeground $itk_option(-fillcolor) -areapattern solid
+            # $g marker create image -anchor nw -coords {0.5 0.95} \
+                -xoffset -6 -yoffset -3 -image [Rappture::icon delta]
+        }
+        uniform {
+            $g xaxis configure -majorticks {} -min 0 -max 1 -stepsize 0.1
+            $g yaxis configure -min 0 -max 1
+
+            # uniform distribution throughout
+            $g element create uniform \
+                -xdata {-0.1 -0.1 1.1 1.1} -ydata {-0.1 0.5 0.5 -0.1} \
+                -color $itk_option(-foreground) -symbol "" \
+                -areaforeground $itk_option(-fillcolor) -areapattern solid
+
+            # left/right limits
+            $g marker create polygon \
+                -coords {-0.1 -0.1 0.1 -0.1 0.1 1.1 -0.1 1.1} \
+                -outline gray -linewidth 1 -fill gray -stipple gray25
+            $g marker create polygon \
+                -coords {1.1 -0.1 0.9 -0.1 0.9 1.1 1.1 1.1} \
+                -outline gray -linewidth 1 -fill gray -stipple gray25
+        }
+        gaussian {
+            #puts "min=$_value(min) max=$_value(max)"
+            #puts "mean=$_value(central) dev=$_value(stddev)"
+
+            set min $_value(min)
+            set max $_value(max)
+            set dx [expr {$max - $min}]
+            set realmin [expr {$min - 0.1 * $dx}]
+            set realmax [expr {$max + 0.1 * $dx}]
+            set mean $_value(central)
+            set sig2 [expr {$_value(stddev) * $_value(stddev)}]
+            $g xaxis configure -min $realmin -max $realmax \
+                -majorticks [list $min $mean $max]
+            $g yaxis configure -min 0 -max 1.1
+            set xdata ""
+            set ydata ""
+            for {set n 0} {$n <= 50} {incr n} {
+                set x [expr {($realmax - $realmin) / 50.0 * $n + $realmin}]
+                lappend xdata $x
+                set expon [expr {-0.5 * ($x - $mean) * ($x - $mean) / $sig2}]
+                if {$expon < -200} {
+                    lappend ydata 0.0
+                } else {
+                    lappend ydata [expr {exp($expon)}]
+                }
+            }
+            $g element create bellcurve \
+                -xdata $xdata -ydata $ydata \
+                -color $itk_option(-foreground) -symbol "" \
+                -areaforeground $itk_option(-fillcolor) -areapattern solid
+
+            # left/right limits
+            set x0m [expr {$min - 0.2 * $dx}]
+            set x0 $min
+            set x1 $max
+            set x1p [expr {$max + 0.2 * $dx}]
+            $g marker create polygon \
+                -coords [list $x0m -0.1 $x0 -0.1 $x0 1.2 $x0m 1.2] \
+                -outline gray -linewidth 1 -fill gray -stipple gray25
+            $g marker create polygon \
+                -coords [list $x1p -0.1 $x1 -0.1 $x1 1.2 $x1p 1.2] \
+                -outline gray -linewidth 1 -fill gray -stipple gray25
+
+            # lines for standard deviation
+            set x0 [expr {$_value(central)-$_value(stddev)}]
+            set x1 [expr {$_value(central)+$_value(stddev)}]
+            $g marker create line \
+                -coords [list $x0 -0.1 $x0 1.2] -linewidth 1 \
+                -outline gray -dashes 2
+            $g marker create line \
+                -coords [list $x1 -0.1 $x1 1.2] -linewidth 1 \
+                -outline gray -dashes 2
+        }
+        custom {
+        }
+        default {
+            error "don't know how to redraw for mode \"$_mode\""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _axisLabels <which> <graph> <val>
+#
+# Used internally to generate axis labels for the x- and y-axes of
+# the graph.  The y-axis doesn't usually have labels since the values
+# aren't meaningful.  The x-axis should show values according to the
+# current mode of input.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ProbDistEditor::_axisLabels {which graph val} {
+    switch -- $which {
+        xaxis {
+            switch -- $_mode {
+                exact {
+                    if {$val == 0.5} {
+                        return $_value(central)
+                    }
+                    return ""
+                }
+                uniform {
+                    if {$val == 0.1} {
+                        return [expr {$_value(min) < $_value(max)
+                            ? $_value(min) : $_value(max)}]
+                    } elseif {$val == 0.9} {
+                        return [expr {$_value(min) > $_value(max)
+                            ? $_value(min) : $_value(max)}]
+                    }
+                    return ""
+                }
+                gaussian {
+                    return $val
+                }
+            }
+        }
+        yaxis {
+            return ""  ;# no labels for y-axis values
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _apply bindings <widget>
+# USAGE: _apply value <widget>
+# USAGE: _apply finalize
+#
+# Called automatically whenever a value is edited to check/apply the
+# value and redraw the PDF plot.  If the value is bad, then it is
+# reloaded for editing.  Otherwise, it is applied.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ProbDistEditor::_apply {op {widget ""}} {
+    #puts "PDE::_apply $op $widget"
+    if {$op != "bindings"} {
+        # need this for value/finalize
+        array set w2uvalue [list \
+            $itk_component(exactvals).val _uvalue(central) \
+            $itk_component(uniformvals).min _uvalue(min) \
+            $itk_component(uniformvals).max _uvalue(max) \
+            $itk_component(gaussianvals).mean _uvalue(central) \
+            $itk_component(gaussianvals).stddev _uvalue(stddev) \
+            $itk_component(gaussianvals).min _uvalue(min) \
+            $itk_component(gaussianvals).max _uvalue(max) \
+        ]
+        array set w2value [list \
+            $itk_component(exactvals).val _value(central) \
+            $itk_component(uniformvals).min _value(min) \
+            $itk_component(uniformvals).max _value(max) \
+            $itk_component(gaussianvals).mean _value(central) \
+            $itk_component(gaussianvals).stddev _value(stddev) \
+            $itk_component(gaussianvals).min _value(min) \
+            $itk_component(gaussianvals).max _value(max) \
+        ]
+    }
+
+    if {$op == "finalize"} {
+        # one of our widgets has focus?
+        set widget [focus]
+        if {![info exists w2value($widget)]} {
+            # nope -- nevermind, nothing to do
+            return
+        }
+        # yes -- continue onward trying to finalize the value in that widget
+        set op "value"
+    }
+
+    switch -- $op {
+        bindings {
+            bind $widget <KeyPress-Tab> [itcl::code $this _apply value %W]
+            bind $widget <KeyPress-Return> [itcl::code $this _apply value %W]
+            bind $widget <FocusOut> [itcl::code $this _apply value %W]
+        }
+        value {
+            set var $w2value($widget)
+            set uvar $w2uvalue($widget)
+            if {$_units == ""} {
+                set newval [$widget get]
+            } else {
+                set newval [Rappture::Units::convert [$widget get] -context $_units]
+            }
+            set itk $itk_component(gaussianvals).stddev
+            if {$widget != $itk && [catch {Rappture::Units::mcheck_range $newval $_umin $_umax $_units} err]} {
+                # oops! value is bad -- edit again
+                bell
+                Rappture::Tooltip::cue $widget $err
+                $widget delete 0 end
+                $widget insert end [set $var]
+                $widget select from 0
+                $widget select to end
+                focus $widget
+                return -code break  ;# stop other bindings like tab-traversal
+            }
+            $widget delete 0 end
+            $widget insert end $newval
+            set $uvar $newval
+
+            #if {$widget == $itk_component(gaussianvals).mean} {
+                # need new min and max
+                #set $_uvalue(min)
+                #set $_uvalue(max) ...
+            #}
+
+            if {[catch {Rappture::Units::convert $newval -units off} nvar]} {
+                set nvar $newval
+            }
+            set $var $nvar
+
+            mode check
+            $_dispatcher event -idle !redraw
+        }
+        default {
+            error "bad option \"$opt\": should be bindings, value"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -fillcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::ProbDistEditor::fillcolor {
+    $_dispatcher event -idle !redraw
+}
Index: /tags/1.6.0/gui/scripts/progress.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/progress.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/progress.tcl	(revision 6168)
@@ -0,0 +1,166 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: progress - progress meter for long-running apps
+#
+#  This widget acts as a progress meter for long-running applications.
+#  It accepts progress reports as a combination of a percentage and
+#  a message, and then displays the percentage on a bar 0-100%.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Progress.borderWidth 2 widgetDefault
+option add *Progress.relief sunken widgetDefault
+option add *Progress.length 2i widgetDefault
+option add *Progress.barBackground white widgetDefault
+option add *Progress.barColor blue widgetDefault
+option add *Progress.font -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Progress {
+    inherit itk::Widget
+
+    itk_option define -barcolor barColor BarColor ""
+    itk_option define -barbackground barBackground BarBackground ""
+    itk_option define -length length Length 0
+
+    constructor {args} { # defined below }
+    public method settings {args}
+
+    protected method _redraw {}
+
+    private variable _message ""  ;# status message
+    private variable _percent 0   ;# status percentage
+}
+
+itk::usual Progress {
+    keep -cursor -font -foreground -background
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Progress::constructor {args} {
+    itk_component add bar {
+        canvas $itk_interior.bar -highlightthickness 0
+    } {
+        usual
+        keep -borderwidth -relief
+        ignore -highlightthickness -highlightbackground -highlightcolor
+    }
+    pack $itk_component(bar) -expand yes -fill both
+    bind $itk_component(bar) <Configure> [itcl::code $this _redraw]
+
+    itk_component add message {
+        label $itk_interior.mesg -anchor w -width 1
+    }
+
+    eval itk_initialize $args
+    component hull configure -borderwidth 0
+
+    set h [font metrics $itk_option(-font) -linespace]
+    $itk_component(bar) configure -height [expr {$h+4}]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: settings ?-percent <val>? ?-message <string>?
+#
+# Clients use this to query/set the settings shown in the progress
+# meter.  With no args, it returns a list of the form "-percent v
+# -message str".  Otherwise, it interprets the args and updates
+# the values.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Progress::settings {args} {
+    if {[llength $args] == 0} {
+        return [list -percent $_percent -message $_message]
+    }
+
+    Rappture::getopts args params {
+        value -percent ""
+        value -message "__ignore__"
+    }
+
+    set changed 0
+    if {$params(-percent) != ""} {
+        if {![string is double $params(-percent)]} {
+            error "bad value \"$params(-percent)\": should be 0-100"
+        }
+        if {$params(-percent) < 0} {
+            set params(-percent) 0
+        }
+        if {$params(-percent) > 100} {
+            set params(-percent) 100
+        }
+        set _percent $params(-percent)
+        set changed 1
+    }
+    if {$params(-message) != "__ignore__"} {
+        set _message $params(-message)
+        set changed 1
+    }
+
+    if {$changed} {
+        _redraw
+        update idletasks
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Used internally to redraw the progress meter on the internal canvas.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Progress::_redraw {} {
+    set w [winfo width $itk_component(bar)]
+    set h [winfo height $itk_component(bar)]
+
+    if {[string length $_message] > 0} {
+        $itk_component(message) configure -text $_message
+        pack $itk_component(message) -fill x
+    } else {
+        pack forget $itk_component(message)
+    }
+
+    if {[$itk_component(bar) find all] == ""} {
+        $itk_component(bar) create rectangle 0 0 1 1 \
+            -outline "" -fill $itk_option(-barbackground) -tags barbg
+        $itk_component(bar) create rectangle 0 0 1 1 \
+            -outline "" -fill $itk_option(-barcolor) -tags bar
+        $itk_component(bar) create text 0 0 \
+            -anchor center -text "" -font $itk_option(-font) -tags number
+    }
+
+    set msg [format "%3.0f%%" $_percent]
+    $itk_component(bar) itemconfigure number -text $msg
+
+    set barw [expr {0.01*$_percent*$w}]
+    $itk_component(bar) coords number [expr {$w/2}] [expr {$h/2}]
+    $itk_component(bar) coords bar 0 0 $barw $h
+    $itk_component(bar) coords barbg 0 0 $w $h
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -barcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Progress::barcolor {
+    $itk_component(bar) itemconfigure bar -fill $itk_option(-barcolor)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -barbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Progress::barbackground {
+    $itk_component(bar) itemconfigure barbg -fill $itk_option(-barbackground)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -length
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Progress::length {
+    set w [winfo pixels $itk_component(hull) $itk_option(-length)]
+    $itk_component(bar) configure -width $w
+}
Index: /tags/1.6.0/gui/scripts/pushbutton.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/pushbutton.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/pushbutton.tcl	(revision 6168)
@@ -0,0 +1,197 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: PushButton - widget for entering a choice of strings
+#
+#  This widget represents a <choice> entry on a control panel.
+#  It is used to choose one of several mutually-exclusive strings.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *PushButton.width 16 widgetDefault
+option add *PushButton.height 16 widgetDefault
+
+itcl::class Rappture::PushButton {
+    inherit itk::Widget
+
+    itk_option define -variable variable Variable "normal"
+    itk_option define -command command Command "normal"
+    itk_option define -width width Width "normal"
+    itk_option define -height height Height "normal"
+    itk_option define -onvalue onValue OnValue "normal"
+    itk_option define -offvalue offValue OffValue "normal"
+    itk_option define -onbackground onBackground OnBackground "white"
+    itk_option define -offbackground offBackground OffBackground "grey85"
+
+    constructor {args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method invoke {}
+    public method deselect {}
+    public method select {}
+    public method toggle {}
+    public method disable {}
+    public method enable {}
+
+    protected method _fixValue {args}
+
+    private variable _state 0
+    private variable _enabled 1
+    public variable command "";         # Command to be invoked
+    private variable _variable "";      # Variable to be set.
+    public variable onimage "";         # Image displayed when selected
+    public variable offimage "";        # Image displayed when deselected.
+    public variable disabledimage "";   # Image displayed when deselected.
+    public variable onvalue "1";        # Value set when selected.
+    public variable offvalue "0";       # Value set when deselected.
+    public variable onbackground "white"
+    public variable offbackground "grey85"
+}
+
+itk::usual PushButton {
+    keep -cursor -font
+    keep -foreground -background
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::PushButton::constructor {args} {
+    itk_component add button {
+        label $itk_interior.button -borderwidth 1 -relief sunken
+    } {
+        usual
+        ignore -padx -pady -relief -borderwidth -background
+    }
+    bind $itk_component(button) <ButtonPress> \
+        [itcl::code $this invoke]
+    pack $itk_component(button) -expand yes -fill both -ipadx 1 -ipady 1
+    eval itk_initialize $args
+    deselect
+}
+
+itcl::body Rappture::PushButton::invoke {} {
+    if { !$_enabled } {
+        return
+    }
+    toggle
+    if { $command != "" } {
+        uplevel \#0 $command
+    }
+}
+
+itcl::body Rappture::PushButton::toggle {} {
+    if { !$_enabled } {
+        return
+    }
+    set _state [expr !$_state]
+    if { $_state } {
+        select
+    } else {
+        deselect
+    }
+}
+
+itcl::body Rappture::PushButton::disable {} {
+    if { $_enabled } {
+        set _enabled [expr !$_enabled]
+        $itk_component(button) configure -relief raise \
+            -image $disabledimage -bg grey85
+    }
+}
+
+itcl::body Rappture::PushButton::enable {} {
+    if { !$_enabled } {
+        set _enabled [expr !$_enabled]
+        _fixValue
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue ?<name1> <name2> <op>?
+#
+# Invoked automatically whenever the -variable associated with this
+# widget is modified.  Copies the value to the current settings for
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::PushButton::_fixValue {args} {
+    if {"" == $itk_option(-variable)} {
+        return
+    }
+    upvar #0 $itk_option(-variable) var
+    if { $var != "" && [string is boolean $var] } {
+        set var [expr "$var == 1"]
+    }
+    if { $var == $onvalue } {
+        set _state 1
+        $itk_component(button) configure -relief sunken \
+            -image $onimage -bg $onbackground
+    } else {
+        set _state 0
+        $itk_component(button) configure -relief raise \
+            -image $offimage -bg $offbackground
+    }
+}
+
+itcl::body Rappture::PushButton::select {} {
+    if { !$_enabled } {
+        return
+    }
+    upvar #0 $_variable state
+    set state $onvalue
+}
+
+itcl::body Rappture::PushButton::deselect {} {
+    if { !$_enabled } {
+        return
+    }
+    upvar #0 $_variable state
+    set state $offvalue
+}
+
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -variable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::PushButton::variable {
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace remove variable var write [itcl::code $this _fixValue]
+    }
+    set _variable $itk_option(-variable)
+
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace add variable var write [itcl::code $this _fixValue]
+
+        # sync to the current value of this variable
+        if {[info exists var]} {
+            _fixValue
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -width
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::PushButton::width {
+    $itk_component(button) configure -width $itk_option(-width)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -height
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::PushButton::height {
+    set _height $itk_option(-height)
+    $itk_component(button) configure -height $itk_option(-height)
+}
+
Index: /tags/1.6.0/gui/scripts/radiodial.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/radiodial.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/radiodial.tcl	(revision 6168)
@@ -0,0 +1,836 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: Radiodial - selector, like the dial on a car radio
+#
+#  This widget looks like the dial on an old-fashioned car radio.
+#  It draws a series of values along an axis, and allows a selector
+#  to move back and forth to select the values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Radiodial.thickness 10 widgetDefault
+option add *Radiodial.length 2i widgetDefault
+option add *Radiodial.knobImage knob widgetDefault
+option add *Radiodial.knobPosition n@middle widgetDefault
+option add *Radiodial.dialOutlineColor black widgetDefault
+option add *Radiodial.dialFillColor white widgetDefault
+option add *Radiodial.lineColor gray widgetDefault
+option add *Radiodial.activeLineColor black widgetDefault
+option add *Radiodial.padding 0 widgetDefault
+option add *Radiodial.valueWidth 10 widgetDefault
+option add *Radiodial.valuePadding 0.1 widgetDefault
+option add *Radiodial.foreground black widgetDefault
+option add *Radiodial.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Radiodial {
+    inherit itk::Widget
+
+    itk_option define -min min Min ""
+    itk_option define -max max Max ""
+    itk_option define -variable variable Variable ""
+
+    itk_option define -thickness thickness Thickness 0
+    itk_option define -length length Length 0
+    itk_option define -padding padding Padding 0
+
+    itk_option define -foreground foreground Foreground "black"
+    itk_option define -dialoutlinecolor dialOutlineColor Color "black"
+    itk_option define -dialfillcolor dialFillColor Color "white"
+    itk_option define -dialprogresscolor dialProgressColor Color ""
+    itk_option define -linecolor lineColor Color "black"
+    itk_option define -activelinecolor activeLineColor Color "black"
+    itk_option define -knobimage knobImage KnobImage ""
+    itk_option define -knobposition knobPosition KnobPosition ""
+
+    itk_option define -font font Font ""
+    itk_option define -valuewidth valueWidth ValueWidth 0
+    itk_option define -valuepadding valuePadding ValuePadding 0
+
+    itk_option define -interactcommand interactCommand InteractCommand ""
+
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method add {label {value ""}}
+    public method clear {}
+    public method get {args}
+    public method current {args}
+    public method color {value}
+
+    protected method _setCurrent {val}
+    protected method _redraw {}
+    protected method _click {x y}
+    protected method _navigate {offset}
+    protected method _limits {}
+    protected method _findLabel {str}
+    protected method _fixSize {}
+    protected method _fixValue {args}
+    protected method _doInteract {}
+
+    private variable _values ""       ;# list of all values on the dial
+    private variable _val2label       ;# maps value => string label(s)
+    private variable _current ""      ;# current value (where pointer is)
+    private variable _variable ""     ;# variable associated with -variable
+
+    private variable _knob ""         ;# image for knob
+    private variable _spectrum ""     ;# width allocated for values
+    private variable _activecolor ""  ;# width allocated for values
+    private variable _vwidth 0        ;# width allocated for values
+}
+
+itk::usual Radiodial {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::constructor {args} {
+    itk_component add dial {
+        canvas $itk_interior.dial
+    }
+    pack $itk_component(dial) -expand yes -fill both
+    bind $itk_component(dial) <Configure> [itcl::code $this _redraw]
+
+    bind $itk_component(dial) <ButtonPress-1> [itcl::code $this _click %x %y]
+    bind $itk_component(dial) <B1-Motion> [itcl::code $this _click %x %y]
+    bind $itk_component(dial) <ButtonRelease-1> [itcl::code $this _click %x %y]
+
+    bind $itk_component(hull) <KeyPress-Left> [itcl::code $this _navigate -1]
+    bind $itk_component(hull) <KeyPress-Right> [itcl::code $this _navigate 1]
+
+    eval itk_initialize $args
+
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::destructor {} {
+    configure -variable ""  ;# remove variable trace
+    after cancel [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <label> ?<value>?
+#
+# Clients use this to add new values to the dial.  Values are always
+# sorted in order along the dial.  If the value is not specified,
+# then it is created automatically based on the number of elements
+# on the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::add {label {value ""}} {
+    if {"" == $value} {
+        set value [llength $_values]
+    }
+
+    # Add this value if we've never see it before
+    if {[lsearch -real $_values $value] < 0} {
+        lappend _values $value
+        set _values [lsort -real $_values]
+    }
+
+    # Keep all equivalent strings for this value.
+    # That way, we can later select either "1e18" or "1.0e+18"
+    lappend _val2label($value) $label
+
+    if {"" == $_current} {
+        _setCurrent $value
+    }
+
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: clear
+#
+# Clients use this to remove all existing values from the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::clear {} {
+    set _values ""
+    _setCurrent ""
+    catch {unset _val2label}
+
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-format what? ?current|@index?
+#
+# Clients use this to query values within this radiodial.  With no
+# args, it returns a list of all values stored in the widget.  The
+# "current" arg requests only the current value on the radiodial.
+# The @index syntax can be used to request a particular value at
+# an index within the list of values.
+#
+# By default, this method returns the label for each value.  The
+# format option can be used to request the label, the value, or
+# both.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::get {args} {
+    Rappture::getopts args params {
+        value -format "label"
+    }
+    if {[llength $args] > 1} {
+        error "wrong # args: should be \"get ?-format f? ?current|@index\""
+    }
+    set index [lindex $args 0]
+    if {"" == $index} {
+        set ilist ""
+        for {set i 0} {$i < [llength $_values]} {incr i} {
+            lappend ilist $i
+        }
+    } elseif {"current" == $index} {
+        set ilist [lsearch -exact $_values $_current]
+        if {$ilist < 0} {
+            set ilist ""
+        }
+    } elseif {[regexp {^@([0-9]+|end)$} $index match i]} {
+        set ilist $i
+    }
+    if {[llength $ilist] == 1} {
+        set op set
+    } else {
+        set op lappend
+    }
+
+    set rlist ""
+    foreach i $ilist {
+        switch -- $params(-format) {
+            label {
+                set v [lindex $_values $i]
+                $op rlist [lindex $_val2label($v) 0]
+            }
+            value {
+                $op rlist [lindex $_values $i]
+            }
+            position {
+                foreach {min max} [_limits] break
+                set v [lindex $_values $i]
+                set frac [expr {double($v-$min)/($max-$min)}]
+                $op rlist $frac
+            }
+            all {
+                set v [lindex $_values $i]
+                foreach {min max} [_limits] break
+                set frac [expr {double($v-$min)/($max-$min)}]
+                set l [lindex $_val2label($v) 0]
+                $op rlist [list $l $v $frac]
+            }
+            default {
+                error "bad value \"$v\": should be label, value, position, all"
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: current ?<newval>?
+#
+# Clients use this to get/set the current value for this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::current {args} {
+    if {[llength $args] == 0} {
+        return $_current
+    } elseif {[llength $args] == 1} {
+        set newval [lindex $args 0]
+        set n [_findLabel $newval]
+
+        # Don't use expr (?:) because it evaluates the resulting string.
+        # For example, it changes -0.020 to -0.02.
+        if { $n >= 0 } {
+            set rawval [lindex $_values $n]
+        } else {
+            set rawval ""
+        }
+        _setCurrent $rawval
+
+        after cancel [itcl::code $this _redraw]
+        after idle [itcl::code $this _redraw]
+        event generate $itk_component(hull) <<Value>>
+
+        return $_current
+    }
+    error "wrong # args: should be \"current ?newval?\""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: color <value>
+#
+# Clients use this to query the color associated with a <value>
+# along the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::color {value} {
+    _findLabel $value  ;# make sure this label is recognized
+
+    if {"" != $_spectrum} {
+        foreach {min max} [_limits] break
+        set frac [expr {double($value-$min)/($max-$min)}]
+        set color [$_spectrum get $frac]
+    } else {
+        if {$value == $_current} {
+            set color $_activecolor
+        } else {
+            set color $itk_option(-linecolor)
+        }
+    }
+    return $color
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _setCurrent <value>
+#
+# Called automatically whenever the widget changes size to redraw
+# all elements within it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::_setCurrent {value} {
+    set _current $value
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        if {[info exists _val2label($value)]} {
+            set var [lindex $_val2label($value) 0]
+        } else {
+            set var $value
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Called automatically whenever the widget changes size to redraw
+# all elements within it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::_redraw {} {
+    set c $itk_component(dial)
+    $c delete all
+
+    set fg $itk_option(-foreground)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set p [winfo pixels $c $itk_option(-padding)]
+    set t [expr {$itk_option(-thickness)+1}]
+    set y1 [expr {$h-1}]
+
+    if {"" != $_knob} {
+        set kw [image width $_knob]
+        set kh [image height $_knob]
+
+        switch -- $itk_option(-knobposition) {
+            n@top - nw@top - ne@top {
+                set extra [expr {$t-$kh}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$h-$extra-1}]
+            }
+            n@middle - nw@middle - ne@middle {
+                set extra [expr {int(ceil($kh-0.5*$t))}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$h-$extra-1}]
+            }
+            n@bottom - nw@bottom - ne@bottom {
+                set y1 [expr {$h-$kh-1}]
+            }
+
+            e@top - w@top - center@top -
+            e@bottom - w@bottom - center@bottom {
+                set extra [expr {int(ceil(0.5*$kh))}]
+                set y1 [expr {$h-$extra-1}]
+            }
+            e@middle - w@middle - center@middle {
+                set extra [expr {int(ceil(0.5*($kh-$t)))}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$h-$extra-1}]
+            }
+
+            s@top - sw@top - se@top -
+            s@middle - sw@middle - se@middle -
+            s@bottom - sw@bottom - se@bottom {
+                set y1 [expr {$h-2}]
+            }
+        }
+    }
+    set y0 [expr {$y1-$t}]
+    set x0 [expr {$p+1}]
+    set x1 [expr {$w-$_vwidth-$p-4}]
+    foreach {min max} [_limits] break
+
+    # draw the background rectangle
+    $c create rectangle $x0 $y0 $x1 $y1 \
+        -outline $itk_option(-dialoutlinecolor) \
+        -fill $itk_option(-dialfillcolor)
+
+    # draw the optional progress bar, from start to current
+    if {"" != $itk_option(-dialprogresscolor)
+          && [llength $_values] > 0 && "" != $_current} {
+        if {$max != $min} {
+            set frac [expr {double($_current-$min)/($max-$min)}]
+        } else {
+            set frac 0.
+        }
+        set xx1 [expr {$frac*($x1-$x0) + $x0}]
+        $c create rectangle [expr {$x0+1}] [expr {$y0+3}] $xx1 [expr {$y1-2}] \
+            -outline "" -fill $itk_option(-dialprogresscolor)
+    }
+
+    # draw lines for all values
+    if {$max > $min} {
+        foreach v $_values {
+            set frac [expr {double($v-$min)/($max-$min)}]
+            if {"" != $_spectrum} {
+                set color [$_spectrum get $frac]
+            } else {
+                if {$v == $_current} {
+                    set color $_activecolor
+                } else {
+                    set color $itk_option(-linecolor)
+                }
+            }
+            set thick [expr {($v == $_current) ? 3 : 1}]
+
+            if {"" != $color} {
+                set x [expr {$frac*($x1-$x0) + $x0}]
+                $c create line $x [expr {$y0+1}] $x $y1 \
+                    -fill $color -width $thick
+            }
+        }
+
+        if {"" != $_current} {
+            set x [expr {double($_current-$min)/($max-$min)*($x1-$x0) + $x0}]
+            regexp {([nsew]+|center)@} $itk_option(-knobposition) match anchor
+            switch -glob -- $itk_option(-knobposition) {
+                *@top    { set kpos $y0 }
+                *@middle { set kpos [expr {int(ceil(0.5*($y1+$y0)))}] }
+                *@bottom { set kpos $y1 }
+            }
+            $c create image $x $kpos -anchor $anchor -image $_knob
+        }
+    }
+
+    # if the -valuewidth is > 0, then make room for the value
+    set vw $itk_option(-valuewidth)
+    if {$vw > 0 && "" != $_current} {
+        set str [lindex $_val2label($_current) 0]
+        if {[string length $str] >= $vw} {
+            set str "[string range $str 0 [expr {$vw-3}]]..."
+        }
+
+        set dy [expr {([font metrics $itk_option(-font) -linespace]
+                        - [font metrics $itk_option(-font) -ascent])/2}]
+
+        set id [$c create text [expr {$x1+4}] [expr {($y1+$y0)/2+$dy}] \
+            -anchor w -text $str -font $itk_option(-font) -foreground $fg]
+        foreach {x0 y0 x1 y1} [$c bbox $id] break
+        set x0 [expr {$x0 + 10}]
+
+        # set up a tooltip so you can mouse over truncated values
+        Rappture::Tooltip::text $c [lindex $_val2label($_current) 0]
+        $c bind $id <Enter> \
+            [list ::Rappture::Tooltip::tooltip pending %W +$x0,$y1]
+        $c bind $id <Leave> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+        $c bind $id <ButtonPress> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+        $c bind $id <KeyPress> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _click <x> <y>
+#
+# Called automatically whenever the user clicks or drags on the widget
+# to select a value.  Moves the current value to the one nearest the
+# click point.  If the value actually changes, it generates a <<Value>>
+# event to notify clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::_click {x y} {
+    set c $itk_component(dial)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set x0 1
+    set x1 [expr {$w-$_vwidth-4}]
+
+    focus $itk_component(hull)
+
+    # draw lines for all values
+    foreach {min max} [_limits] break
+    if {$max > $min && $x >= $x0 && $x <= $x1} {
+        set dmin $w
+        set xnearest 0
+        set vnearest ""
+        foreach v $_values {
+            set xv [expr {double($v-$min)/($max-$min)*($x1-$x0) + $x0}]
+            if {abs($xv-$x) < $dmin} {
+                set dmin [expr {abs($xv-$x)}]
+                set xnearest $xv
+                set vnearest $v
+            }
+        }
+
+        if {$vnearest != $_current} {
+            _setCurrent $vnearest
+            _redraw
+
+            event generate $itk_component(hull) <<Value>>
+            _doInteract
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _navigate <offset>
+#
+# Called automatically whenever the user presses left/right keys
+# to nudge the current value left or right by some <offset>.  If the
+# value actually changes, it generates a <<Value>> event to notify
+# clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::_navigate {offset} {
+    set index [lsearch -exact $_values $_current]
+    if {$index >= 0} {
+        incr index $offset
+        if {$index >= [llength $_values]} {
+            set index [expr {[llength $_values]-1}]
+        } elseif {$index < 0} {
+            set index 0
+        }
+
+        set newval [lindex $_values $index]
+        if {$newval != $_current} {
+            _setCurrent $newval
+            _redraw
+
+            event generate $itk_component(hull) <<Value>>
+            _doInteract
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _limits
+#
+# Used internally to compute the overall min/max limits for the
+# radio dial.  Returns {min max}, representing the end values for
+# the scale.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::_limits {} {
+    if {[llength $_values] == 0} {
+        set min 0
+        set max 0
+    } else {
+        set min [lindex $_values 0]
+        set max $min
+        foreach v [lrange $_values 1 end] {
+            if {$v < $min} { set min $v }
+            if {$v > $max} { set max $v }
+        }
+        set del [expr {$max-$min}]
+        set min [expr {$min-$itk_option(-valuepadding)*$del}]
+        set max [expr {$max+$itk_option(-valuepadding)*$del}]
+    }
+
+    if {"" != $itk_option(-min)} {
+        set min $itk_option(-min)
+    }
+    if {"" != $itk_option(-max)} {
+        set max $itk_option(-max)
+    }
+    return [list $min $max]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _findLabel <string>
+#
+# Used internally to search for the given <string> label among the
+# known values.  Returns an index into the _values list, or throws
+# an error if the string is not recognized.  Given the null string,
+# it returns -1, indicating that the value is not in _values, but
+# it is valid.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::_findLabel {str} {
+    if {"" == $str} {
+        return -1
+    }
+    for {set nv 0} {$nv < [llength $_values]} {incr nv} {
+        set v [lindex $_values $nv]
+        if {[lsearch -exact $_val2label($v) $str] >= 0} {
+            return $nv
+        }
+    }
+
+    # didn't match -- build a return string of possible values
+    set labels ""
+    foreach vlist $_values {
+        foreach v $vlist {
+            lappend labels "\"$_val2label($v)\""
+        }
+    }
+    error "bad value \"$str\": should be one of [join $labels ,]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+#
+# Used internally to compute the overall size of the widget based
+# on the -thickness and -length options.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::_fixSize {} {
+    set h [winfo pixels $itk_component(hull) $itk_option(-thickness)]
+
+    if {"" != $_knob} {
+        set kh [image height $_knob]
+
+        switch -- $itk_option(-knobposition) {
+            n@top - nw@top - ne@top -
+            s@bottom - sw@bottom - se@bottom {
+                if {$kh > $h} { set h $kh }
+            }
+            n@middle - nw@middle - ne@middle -
+            s@middle - sw@middle - se@middle {
+                set h [expr {int(ceil(0.5*$h + $kh))}]
+            }
+            n@bottom - nw@bottom - ne@bottom -
+            s@top - sw@top - se@top {
+                set h [expr {$h + $kh}]
+            }
+            e@middle - w@middle - center@middle {
+                set h [expr {(($h > $kh) ? $h : $kh) + 1}]
+            }
+            n@middle - ne@middle - nw@middle -
+            s@middle - se@middle - sw@middle {
+                set extra [expr {int(ceil($kh-0.5*$h))}]
+                if {$extra < 0} { set extra 0 }
+                set h [expr {$h+$extra}]
+            }
+        }
+    }
+    incr h 1
+
+    set w [winfo pixels $itk_component(hull) $itk_option(-length)]
+
+    # if the -valuewidth is > 0, then make room for the value
+    if {$itk_option(-valuewidth) > 0} {
+        set charw [font measure $itk_option(-font) "n"]
+        set _vwidth [expr {$itk_option(-valuewidth)*$charw}]
+        set w [expr {$w+$_vwidth+4}]
+    } else {
+        set _vwidth 0
+    }
+
+    $itk_component(dial) configure -width $w -height $h
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue ?<name1> <name2> <op>?
+#
+# Invoked automatically whenever the -variable associated with this
+# widget is modified.  Copies the value to the current settings for
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::_fixValue {args} {
+    if {"" == $itk_option(-variable)} {
+        return
+    }
+    upvar #0 $itk_option(-variable) var
+
+    set newval $var
+    set n [_findLabel $newval]
+    set rawval [expr {($n >= 0) ? [lindex $_values $n] : ""}]
+    set _current $rawval  ;# set current directly, so we don't trigger again
+
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _doInteract
+#
+# Used internally to call the -interactcommand code whenever the user
+# changes the value of the widget.  This is different from the <<Value>>
+# event, which gets invoked whenever the value changes for any reason,
+# including programmatic changes.  If there is no command code, then
+# this does nothing.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Radiodial::_doInteract {} {
+    if {[string length $itk_option(-interactcommand)] > 0} {
+        uplevel #0 $itk_option(-interactcommand)
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -thickness
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::thickness {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -length
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::length {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -font
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::font {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -valuewidth
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::valuewidth {
+    if {![string is integer $itk_option(-valuewidth)]} {
+        error "bad value \"$itk_option(-valuewidth)\": should be integer"
+    }
+    _fixSize
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -foreground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::foreground {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialoutlinecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::dialoutlinecolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialfillcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::dialfillcolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialprogresscolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::dialprogresscolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -linecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::linecolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -activelinecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::activelinecolor {
+    set val $itk_option(-activelinecolor)
+    if {[catch {$val isa ::Rappture::Spectrum} valid] == 0 && $valid} {
+        set _spectrum $val
+        set _activecolor ""
+    } elseif {[catch {winfo rgb $itk_component(hull) $val}] == 0} {
+        set _spectrum ""
+        set _activecolor $val
+    } elseif {"" != $val} {
+        error "bad value \"$val\": should be Spectrum object or color"
+    }
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -knobimage
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::knobimage {
+    if {[regexp {^image[0-9]+$} $itk_option(-knobimage)]} {
+        set _knob $itk_option(-knobimage)
+    } elseif {"" != $itk_option(-knobimage)} {
+        set _knob [Rappture::icon $itk_option(-knobimage)]
+    } else {
+        set _knob ""
+    }
+    _fixSize
+
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -knobposition
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::knobposition {
+    if {![regexp {^([nsew]+|center)@(top|middle|bottom)$} $itk_option(-knobposition)]} {
+        error "bad value \"$itk_option(-knobposition)\": should be anchor@top|middle|bottom"
+    }
+    _fixSize
+
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -padding
+# This adds padding on left/right side of dial background.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::padding {
+    if {[catch {winfo pixels $itk_component(hull) $itk_option(-padding)}]} {
+        error "bad value \"$itk_option(-padding)\": should be size in pixels"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -valuepadding
+# This shifts min/max limits in by a fraction of the overall size.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::valuepadding {
+    if {![string is double $itk_option(-valuepadding)]
+          || $itk_option(-valuepadding) < 0} {
+        error "bad value \"$itk_option(-valuepadding)\": should be >= 0.0"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -variable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Radiodial::variable {
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace remove variable var write [itcl::code $this _fixValue]
+    }
+
+    set _variable $itk_option(-variable)
+
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace add variable var write [itcl::code $this _fixValue]
+
+        # sync to the current value of this variable
+        if {[info exists var]} {
+            _fixValue
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/response.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/response.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/response.tcl	(revision 6168)
@@ -0,0 +1,94 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+
+# ----------------------------------------------------------------------
+#  COMPONENT: response - extracts data from an XML description of a
+#  response surface (surrogate model).  Makes it available to the
+#  responseviewer.
+#
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+package require BLT
+
+namespace eval Rappture {
+    # forward declaration
+}
+
+itcl::class Rappture::Response {
+    constructor {xmlobj path} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method get {}
+    public method variables {}
+    public method label {}
+    public method vlabels {}
+    public method response {}
+    public method rmse {}
+
+    private variable _xmlobj "";      # ref to lib obj
+    private variable _response "";
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Response::constructor {xmlobj path} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be LibraryObj"
+    }
+    set _xmlobj $xmlobj
+    set _response [$xmlobj element -as object $path]
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Response::destructor {} {
+    # itcl::delete object $_response
+    set _response ""
+}
+
+itcl::body Rappture::Response::variables {} {
+    return [$_response get variables]
+}
+
+itcl::body Rappture::Response::rmse {} {
+    return [$_response get rmse]
+}
+
+itcl::body Rappture::Response::response {} {
+    return [$_response get value]
+}
+
+# Get the response surface label
+itcl::body Rappture::Response::label {} {
+    set lab [$_response get about.label]
+    if {[regexp {([^\(]*)\(([^\)]+)\)} $lab match lab uq_part]} {
+        set lab [string trim $lab]
+    }
+    return $lab
+}
+
+# Get the input variable labels
+itcl::body Rappture::Response::vlabels {} {
+    return [$_response get labels]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of xml objects being plotted.
+# Currently limited to one.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Response::get {} {
+    return $_response
+}
Index: /tags/1.6.0/gui/scripts/responseviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/responseviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/responseviewer.tcl	(revision 6168)
@@ -0,0 +1,203 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: ResponseViewer - Response Surface (surogate Model) Viewer
+#
+# Gets response data from PUQ and displayes it using vtk.
+# ======================================================================
+#  Copyright (c) 2004-2014  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *ResponseViewer.width 4i widgetDefault
+option add *ResponseViewer*cursor crosshair widgetDefault
+option add *ResponseViewer.height 4i widgetDefault
+option add *ResponseViewer.foreground black widgetDefault
+option add *ResponseViewer.controlBackground gray widgetDefault
+option add *ResponseViewer.controlDarkBackground #999999 widgetDefault
+option add *ResponseViewer.plotBackground black widgetDefault
+option add *ResponseViewer.plotForeground white widgetDefault
+option add *ResponseViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+
+itcl::class Rappture::ResponseViewer {
+    inherit itk::Widget
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+
+    constructor {args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method add {dataobj {settings ""}}
+    public method delete {args}
+    public method download {option args}
+
+    private variable _response
+    private variable _settings
+    private variable _label
+    private variable _dobj ""
+    private method _combobox_cb {}
+    private method _plot_response {var1 var2}
+}
+
+itk::usual ResponseViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResponseViewer::constructor {args} {
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) yes
+
+    itk_component add frame {
+        frame $itk_interior.frame
+    }
+
+    itk_component add frame2 {
+        frame $itk_interior.frame2
+    }
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResponseViewer::destructor {} {
+
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a dataobj to the plot.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResponseViewer::add {uqobj {settings ""}} {
+    #puts "ResponseViewer ADD $uqobj ($settings)"
+    set _response [$uqobj response]
+    set vars [$uqobj variables]
+    set labs [$uqobj vlabels]
+    set _settings $settings
+    set _label [$uqobj label]
+
+    if {[llength $vars] > 1} {
+        set cb1 [Rappture::Combobox $itk_interior.frame2.cb1 -width 10 -editable no]
+        set cb2 [Rappture::Combobox $itk_interior.frame2.cb2 -width 10 -editable no]
+
+        foreach v $vars l $labs {
+            $cb1 choices insert end $v $l
+            $cb2 choices insert end $v $l
+        }
+        $cb1 value [$cb1 label [lindex $vars 0]]
+        $cb2 value [$cb2 label [lindex $vars 1]]
+        bind $cb1 <<Value>> [itcl::code $this _combobox_cb]
+        bind $cb2 <<Value>> [itcl::code $this _combobox_cb]
+
+        set vs [label $itk_interior.frame2.desc -text "vs"]
+        grid $cb1 $vs $cb2
+    } else {
+        set label [lindex $labs 0]
+        set lab [label $itk_interior.frame2.desc -text "Response for $label"]
+        grid $lab
+    }
+
+    set rmsep [$uqobj rmse]
+    if {$rmsep > 10} {
+        set color red
+    } elseif {$rmsep > 5} {
+        set color orange
+    } elseif {$rmsep > 2} {
+        set color yellow
+    } else {
+        set color black
+    }
+    set rmse [label $itk_interior.frame2.rmse -text "RMSE: $rmsep%" -foreground $color]
+
+    grid $rmse -row 0 -column 4 -sticky e
+    grid $itk_component(frame) -row 0 -column 0 -sticky nsew
+    grid $itk_component(frame2) -row 1 -column 0 -sticky nsew
+    grid columnconfigure $itk_component(frame) 0 -weight 1
+    grid columnconfigure $itk_component(frame2) 3 -weight 1
+    grid rowconfigure $itk_component(frame) 0 -weight 1
+    grid columnconfigure $itk_component(hull) 0 -weight 1
+    grid rowconfigure $itk_component(hull) 0 -weight 1
+
+    if {[llength $vars] > 1} {
+        _combobox_cb
+    } else {
+        if {$_dobj != ""} {
+            destroy $itk_component(frame).field
+            destroy _dobj
+            set _dobj ""
+        }
+        set vname [lindex $vars 0]
+        after idle [itcl::code $this _plot_response $vname $vname]
+    }
+}
+
+itcl::body Rappture::ResponseViewer::_plot_response {var1 var2} {
+    #puts "plotting $var1 vs $var2"
+
+    set fname response_result.xml
+
+    set rs $_response
+    if {[catch {exec puq get_response $fname $rs $var1 $var2 $_label} res]} {
+        set fp [open "response.err" r]
+        set rdata [read $fp]
+        close $fp
+        puts "Surrogate Model failed: $res\n$rdata"
+        error "Sampling of Surrogate Model failed: $res\n$rdata"
+        # FIXME: Maybe put in text box instead of error()?
+        return
+    }
+
+    set xmlobj [Rappture::library $fname]
+    #puts "xmlobj=$xmlobj"
+    set w $itk_component(frame).field
+
+    if {$var1 == $var2} {
+        set path "output.curve(scatter)"
+        set _dobj [Rappture::Curve ::#auto $xmlobj $path]
+        Rappture::XyResult $w
+        $w add $_dobj {-color red}
+
+        set path "output.curve(response)"
+        set _dobj [Rappture::Curve ::#auto $xmlobj $path]
+
+    } else {
+        set path "output.field(f2d)"
+        set _dobj [Rappture::Field ::#auto $xmlobj $path]
+        Rappture::FieldResult $w -mode heightmap
+    }
+    $w add $_dobj $_settings
+    $w scale $_dobj
+    #puts "added _dobj"
+    #puts "w=$w"
+    pack $w -expand yes -fill both
+}
+
+itcl::body Rappture::ResponseViewer::_combobox_cb {} {
+    if {$_dobj != ""} {
+        destroy $itk_component(frame).field
+        destroy _dobj
+        set _dobj ""
+    }
+    set var1 [$itk_component(frame2).cb1 current]
+    set var2 [$itk_component(frame2).cb2 current]
+    _plot_response $var1 $var2
+}
+
+
+itcl::body Rappture::ResponseViewer::download {option args} {
+    $itk_component(frame).field download $option $args
+}
Index: /tags/1.6.0/gui/scripts/resultselector.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/resultselector.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/resultselector.tcl	(revision 6168)
@@ -0,0 +1,1358 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: ResultSelector - controls for a ResultSet
+#
+#  This widget displays a collection of results stored in a ResultSet
+#  object.  It manages the controls to select and visualize the data.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *ResultSelector.width 4i widgetDefault
+option add *ResultSelector.height 4i widgetDefault
+option add *ResultSelector.missingData skip widgetDefault
+option add *ResultSelector.controlbarBackground gray widgetDefault
+option add *ResultSelector.controlbarForeground white widgetDefault
+option add *ResultSelector.activeControlBackground #ffffcc widgetDefault
+option add *ResultSelector.activeControlForeground black widgetDefault
+option add *ResultSelector.controlActiveForeground blue widgetDefault
+option add *ResultSelector.toggleBackground gray widgetDefault
+option add *ResultSelector.toggleForeground white widgetDefault
+option add *ResultSelector.textFont \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *ResultSelector.boldFont \
+    -*-helvetica-bold-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::ResultSelector {
+    inherit itk::Widget
+
+    itk_option define -resultset resultSet ResultSet ""
+    itk_option define -activecontrolbackground activeControlBackground Background ""
+    itk_option define -activecontrolforeground activeControlForeground Foreground ""
+    itk_option define -controlactiveforeground controlActiveForeground Foreground ""
+    itk_option define -togglebackground toggleBackground Background ""
+    itk_option define -toggleforeground toggleForeground Foreground ""
+    itk_option define -textfont textFont Font ""
+    itk_option define -boldfont boldFont Font ""
+    itk_option define -foreground foreground Foreground ""
+    itk_option define -settingscommand settingsCommand SettingsCommand ""
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method activate {column}
+    public method size {{what -results}}
+
+    protected method _doClear {what}
+    protected method _doSettings {{cmd ""}}
+    protected method _control {option args}
+    protected method _fixControls {args}
+    protected method _fixLayout {args}
+    protected method _fixNumResults {}
+    protected method _fixSettings {args}
+    protected method _fixValue {column why}
+    protected method _drawValue {column widget wmax}
+    protected method _toggleAll {{column "current"}}
+    protected method _getValues {column {which "all"}}
+    protected method _getTooltip {role column}
+    protected method _getParamDesc {which {index "current"}}
+    protected method _log {col}
+
+    private variable _dispatcher ""  ;# dispatchers for !events
+    private variable _resultset ""   ;# object containing results
+    private variable _active ""      ;# name of active control
+    private variable _plotall 0      ;# non-zero => plot all active results
+    private variable _layout         ;# info used in _fixLayout
+    private variable _counter 0      ;# counter for unique control names
+    private variable _settings 0     ;# non-zero => _fixSettings in progress
+
+    private common _cntlInfo         ;# maps column name => control info
+}
+
+itk::usual ResultSelector {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::constructor {args} {
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    # create a dispatcher for events
+    Rappture::dispatcher _dispatcher
+
+    $_dispatcher register !layout
+    $_dispatcher dispatch $this !layout \
+        [itcl::code $this _fixLayout]
+
+    $_dispatcher register !settings
+    $_dispatcher dispatch $this !settings \
+        [itcl::code $this _fixSettings]
+
+    # initialize controls info
+    set _cntlInfo($this-all) ""
+
+    # initialize layout info
+    set _layout(mode) "usual"
+    set _layout(active) ""
+    set _layout(numcntls) 0
+
+    itk_component add cntls {
+        frame $itk_interior.cntls
+    } {
+        usual
+        rename -background -controlbarbackground controlbarBackground Background
+        rename -highlightbackground -controlbarbackground controlbarBackground Background
+    }
+    pack $itk_component(cntls) -fill x -pady {0 2}
+
+    itk_component add clearall {
+        button $itk_component(cntls).clearall -text "Clear" -state disabled \
+            -padx 1 -pady 1 \
+            -relief flat -overrelief raised \
+            -command [itcl::code $this _doClear all]
+    } {
+        usual
+        rename -background -controlbarbackground controlbarBackground Background
+        rename -foreground -controlbarforeground controlbarForeground Foreground
+        rename -highlightbackground -controlbarbackground controlbarBackground Background
+    }
+    pack $itk_component(clearall) -side right -padx 2 -pady 1
+    Rappture::Tooltip::for $itk_component(clearall) \
+        "Clears all results collected so far."
+
+    itk_component add clear {
+        button $itk_component(cntls).clear -text "Clear One" -state disabled \
+            -padx 1 -pady 1 \
+            -relief flat -overrelief raised \
+            -command [itcl::code $this _doClear current]
+    } {
+        usual
+        rename -background -controlbarbackground controlbarBackground Background
+        rename -foreground -controlbarforeground controlbarForeground Foreground
+        rename -highlightbackground -controlbarbackground controlbarBackground Background
+    }
+    pack $itk_component(clear) -side right -padx 2 -pady 1
+    Rappture::Tooltip::for $itk_component(clear) \
+        "Clears the result that is currently selected."
+
+    itk_component add status {
+        label $itk_component(cntls).status -anchor w \
+            -text "No results" -padx 0 -pady 0
+    } {
+        usual
+        rename -background -controlbarbackground controlbarBackground Background
+        rename -foreground -controlbarforeground controlbarForeground Foreground
+        rename -highlightbackground -controlbarbackground controlbarBackground Background
+    }
+    pack $itk_component(status) -side left -padx 2 -pady {2 0}
+
+    itk_component add dials {
+        frame $itk_interior.dials
+    }
+    pack $itk_component(dials) -expand yes -fill both
+    bind $itk_component(dials) <Configure> \
+        [list $_dispatcher event -after 10 !layout why resize]
+
+    # create the permanent controls in the "short list" area
+    set dials $itk_component(dials)
+    frame $dials.bg
+    Rappture::Radiodial $dials.dial -valuewidth 0
+    Rappture::Tooltip::for $dials.dial \
+        "@[itcl::code $this _getTooltip dial active]"
+
+    set fn [option get $itk_component(hull) textFont Font]
+    label $dials.all -text "All" -padx 8 \
+        -borderwidth 1 -relief raised -font $fn
+    Rappture::Tooltip::for $dials.all \
+        "@[itcl::code $this _getTooltip all active]"
+    bind $dials.all <ButtonRelease> [itcl::code $this _toggleAll]
+
+    frame $dials.labelmore
+    label $dials.labelmore.arrow -bitmap [Rappture::icon empty] -borderwidth 0
+    pack $dials.labelmore.arrow -side left -fill y
+    label $dials.labelmore.name -text "more parameters..." -font $fn \
+        -borderwidth 0 -padx 0 -pady 1
+    pack $dials.labelmore.name -side left
+    label $dials.labelmore.value
+    pack $dials.labelmore.value -side left
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::destructor {} {
+    # disconnect any existing resultset to stop notifications
+    configure -resultset ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: activate <column>
+#
+# Clients use this to activate a particular column in the set of
+# controls.  When a column is active, its label is bold and its
+# value has a radiodial in the "short list" area.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::activate {column} {
+    if {$_resultset ne ""} {
+        set allowed [$_resultset diff names]
+        if {[lsearch $allowed $column] < 0} {
+            error "bad value \"$column\": should be one of [join $allowed {, }]"
+        }
+
+        # column is now active
+        set _active $column
+
+        # keep track of usage, so we know which controls are popular
+        incr _cntlInfo($this-$column-usage)
+
+        # fix controls at next idle point
+        $_dispatcher event -idle !layout why data
+        $_dispatcher event -idle !settings column $_active
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: size ?-results|-controls|-controlarea?
+#
+# Returns various measures for the size of this area:
+#   -results ....... number of results loaded
+#   -controls ...... number of distinct control parameters
+#   -controlarea ... minimum size of usable control area, in pixels
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::size {{what -results}} {
+    switch -- $what {
+        -results {
+            if {$_resultset eq ""} {
+                return 0
+            }
+            return [$_resultset size]
+        }
+        -controls {
+            return [expr {[llength [$_resultset diff names]]-1}]
+        }
+        -controlarea {
+            set ht [winfo reqheight $itk_component(cntls)]
+            incr ht 2  ;# padding below controls
+
+            set normalLine [font metrics $itk_option(-textfont) -linespace]
+            incr normalLine 2  ;# padding
+            set boldLine [font metrics $itk_option(-boldfont) -linespace]
+            incr boldLine 2  ;# padding
+
+            set numcntls [expr {[llength [$_resultset diff names]]-1}]
+            switch -- $numcntls {
+                0 - 1 {
+                    # 0 = no controls (no data at all)
+                    # 1 = run control, but only 1 run so far
+                    # add nothing
+                }
+                default {
+                    # non-active controls
+                    incr ht [expr {($numcntls-1)*$normalLine}]
+                    # active control
+                    incr ht $boldLine
+                    # dial for active control
+                    incr ht [winfo reqheight $itk_component(dials).dial]
+                    # padding around active control
+                    incr ht 4
+                }
+            }
+            return $ht
+        }
+        default {
+            error "bad option \"$what\": should be -results, -controls, or -controlarea"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _doClear all|current
+#
+# Invoked automatically when the user presses the "Clear One" or
+# "Clear All" buttons.  Clears results from the ResultSet and then
+# waits for an event to react to the change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_doClear {what} {
+    if {$_resultset ne ""} {
+        switch -- $what {
+            current {
+                set simnum $_cntlInfo($this-simnum-value)
+                foreach xmlobj [$_resultset find simnum $simnum] {
+                    $_resultset clear $xmlobj
+                }
+                Rappture::Logger::log result -clear one
+            }
+            all {
+                $_resultset clear
+                Rappture::Logger::log result -clear all
+            }
+            default { error "bad option \"$what\": should be current or all" }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _doSettings ?<command>?
+#
+# Used internally whenever the result selection changes to invoke
+# the -settingscommand.  This will notify some external widget, which
+# with perform the plotting action specified in the <command>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_doSettings {{cmd ""}} {
+    if {[string length $itk_option(-settingscommand)] > 0} {
+        uplevel #0 $itk_option(-settingscommand) $cmd
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _control bind <widget> <column>
+# USAGE: _control hilite <state> <column> <panel>
+# USAGE: _control load <widget> <column>
+#
+# Used internally to manage the interactivity of controls.  The "bind"
+# operation sets up bindings on the label/value for each control, so
+# you can mouse over and click on a control to activate it.  The
+# "hilite" operation controls highlighting of the control.  The "load"
+# operation loads data into the specified radiodial <widget>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_control {option args} {
+    switch -- $option {
+        bind {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be _control bind widget column"
+            }
+            set widget [lindex $args 0]
+            set col [lindex $args 1]
+
+            set panel [winfo parent $widget]
+            if {[string match label* [winfo name $panel]]} {
+                set panel [winfo parent $panel]
+            }
+
+            bind $widget <Enter> \
+                [itcl::code $this _control hilite on $col $panel]
+            bind $widget <Leave> \
+                [itcl::code $this _control hilite off $col $panel]
+            bind $widget <ButtonRelease> "
+                [itcl::code $this activate $col]
+                [list Rappture::Logger::log result -active $col]
+            "
+        }
+        hilite {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be _control hilite state column panel"
+            }
+            if {$_layout(mode) != "usual"} {
+                # abbreviated controls? then skip highlighting
+                return
+            }
+            set state [lindex $args 0]
+            set col [lindex $args 1]
+            set panel [lindex $args 2]
+
+            if {[string index $col 0] == "@"} {
+                # handle artificial names like "@more"
+                set id [string range $col 1 end]
+            } else {
+                # get id for ordinary columns
+                set id $_cntlInfo($this-$col-id)
+            }
+
+            # highlight any non-active entries
+            if {$col != $_active} {
+                if {$state} {
+                    set fg $itk_option(-controlactiveforeground)
+                    $panel.label$id.name configure -fg $fg
+                    $panel.label$id.value configure -fg $fg
+                    $panel.label$id.arrow configure -fg $fg \
+                        -bitmap [Rappture::icon rarrow2]
+                } else {
+                    set fg $itk_option(-foreground)
+                    $panel.label$id.name configure -fg $fg
+                    $panel.label$id.value configure -fg $fg
+                    $panel.label$id.arrow configure -fg $fg \
+                        -bitmap [Rappture::icon empty]
+                }
+            }
+        }
+        load {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be _control load widget column"
+            }
+            set dial [lindex $args 0]
+            set col [lindex $args 1]
+
+            set shortlist $itk_component(dials)
+            $shortlist.dial configure -variable ""
+            $dial clear
+            foreach {label val} [_getValues $col all] {
+                $dial add $label $val
+            }
+            $shortlist.dial configure -variable \
+                "::Rappture::ResultSelector::_cntlInfo($this-$col-value)" \
+                -interactcommand [itcl::code $this _log $col]
+        }
+        default {
+            error "bad option \"$option\": should be bind, hilite, or load"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixControls ?<eventArgs...>?
+#
+# Called automatically at the idle point after one or more results
+# have been added to this result set.  Scans through all existing
+# data and updates controls used to select the data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_fixControls {args} {
+    array set eventData $args
+    if {![info exists itk_component(dials)]} {
+        # no controls? then nothing to fix
+        # this happens when the widget is being destroyed
+        return
+    }
+    set shortlist $itk_component(dials)
+
+    # added or cleared something -- update number of results
+    _fixNumResults
+
+    if {$_resultset eq ""} {
+        return
+    }
+
+    # cleared something?
+    if {$eventData(op) eq "clear"} {
+        if {[$_resultset size] == 0} {
+            # cleared everything? then reset controls to initial state
+            array unset _cntlInfo $this-*
+            set _cntlInfo($this-all) ""
+            set _active ""
+            set _plotall 0
+            $itk_component(dials).all configure -relief raised \
+                -background $itk_option(-background) \
+                -foreground $itk_option(-foreground)
+
+            # clean up all of the label/value widgets
+            foreach w [winfo children $itk_component(dials)] {
+                if {[string match {label[0-9]*} [winfo name $w]]} {
+                    destroy $w
+                }
+            }
+            set _counter 0
+
+            $_dispatcher event -idle !layout why data
+
+            return
+        }
+
+        # cleared a single value? then move to another one
+        array set params $eventData(what)
+
+        # clear any currently highlighted result
+        _doSettings
+
+        # did the active control go away?  then switch to simnum
+        if {[lsearch -exact [$_resultset diff names] $_active] < 0} {
+            set _cntlInfo($this-$_active-value) ""
+            activate simnum
+        }
+
+        # figure out where we were in the active control, and
+        # what value we should display now that this was deleted
+        if {[info exists params($_active)]} {
+            set current $params($_active)
+            if {$current eq [$shortlist.dial get -format label current]} {
+                # result deleted is the current result
+                set vlist [$shortlist.dial get]
+                set i [lsearch -exact $vlist $current]
+                if {$i >= 0} {
+                    if {$i+1 < [llength $vlist]} {
+                        set newControlValue [lindex $vlist [expr {$i+1}]]
+                    } elseif {$i-1 >= 0} {
+                        set newControlValue [lindex $vlist [expr {$i-1}]]
+                    }
+                }
+            }
+        }
+
+        if {[info exists newControlValue]} {
+            # Set the control to a value we were able to find.
+            # Disconnect the current variable, then plug in the
+            # new (legal) value, then reload the controls.
+            # This will trigger !settings and other adjustments.
+            $shortlist.dial configure -variable ""
+            set _cntlInfo($this-$_active-value) $newControlValue
+            _control load $shortlist.dial $_active
+        } else {
+            # if all else fails, show solution #1
+            set xmlobj0 [lindex [$_resultset find * *] 0]
+            set simnum0 [$_resultset get simnum $xmlobj0]
+            set _cntlInfo($this-simnum-value) $simnum0
+            activate simnum
+        }
+
+        # if clearing this dataset changed the controls, then
+        # fix the layout
+        set numcntls [expr {[llength [$_resultset diff names]]-1}]
+        if {$numcntls != $_layout(numcntls)} {
+            $_dispatcher event -idle !layout why data
+        }
+        return
+    }
+
+    # must have added something...
+    set shortlist $itk_component(dials)
+    grid columnconfigure $shortlist 1 -weight 1
+
+    #
+    # Scan through all columns in the data and create any
+    # controls that just appeared.
+    #
+    set nadded 0
+    foreach col [$_resultset diff names] {
+        if {$col eq "xmlobj"} {
+            continue  ;# never create a control for this column
+        }
+
+        #
+        # If this column doesn't have a control yet, then
+        # create one.
+        #
+        if {![info exists _cntlInfo($this-$col-id)]} {
+            set tip ""
+            if {$col eq "simnum"} {
+                set quantity "Simulation"
+                set tip "List of all simulations that you have performed so far."
+            } else {
+                # search for the first XML object with this element defined
+                foreach xmlobj [$_resultset find * *] {
+                    set quantity [$xmlobj get $col.about.label]
+                    set tip [$xmlobj get $col.about.description]
+                    if {"" != $quantity} {
+                        break
+                    }
+                }
+                if {"" == $quantity && "" != $xmlobj} {
+                    set quantity [$xmlobj element -as id $col]
+                }
+            }
+
+            # Create the controls for the "short list" area.
+            set fn $itk_option(-textfont)
+            set w $shortlist.label$_counter
+            set row [lindex [grid size $shortlist] 1]
+            frame $w
+            grid $w -row $row -column 1 -sticky ew
+            label $w.arrow -bitmap [Rappture::icon empty] -borderwidth 0
+            pack $w.arrow -side left -fill y
+            _control bind $w.arrow $col
+
+            label $w.name -text $quantity -anchor w \
+                -borderwidth 0 -padx 0 -pady 1 -font $fn
+            pack $w.name -side left
+            bind $w.name <Configure> [itcl::code $this _fixValue $col resize]
+            _control bind $w.name $col
+
+            label $w.value -anchor w \
+                -borderwidth 0 -padx 0 -pady 1 -font $fn
+            pack $w.value -side left
+            bind $w.value <Configure> [itcl::code $this _fixValue $col resize]
+            _control bind $w.value $col
+
+            Rappture::Tooltip::for $w \
+                "@[itcl::code $this _getTooltip label $col]"
+
+            # create a record for this control
+            lappend _cntlInfo($this-all) $col
+            set _cntlInfo($this-$col-id) $_counter
+            set _cntlInfo($this-$col-label) $quantity
+            set _cntlInfo($this-$col-tip) $tip
+            set _cntlInfo($this-$col-value) ""
+            set _cntlInfo($this-$col-usage) 0
+            set _cntlInfo($this-$col) ""
+
+            trace add variable _cntlInfo($this-$col-value) write \
+                "[itcl::code $this _fixValue $col value]; list"
+
+            incr _counter
+
+            incr nadded
+        }
+
+        #
+        # Determine the unique values for this column and load
+        # them into the control.
+        #
+        set id $_cntlInfo($this-$col-id)
+
+        if {$col == $_layout(active)} {
+            _control load $shortlist.dial $col
+        }
+    }
+
+    #
+    # Activate the most recent control.  If a bunch of controls
+    # were just added, then activate the "Simulation" control,
+    # since that's the easiest way to page through results.
+    #
+    set numcntls [expr {[llength [$_resultset diff names]]-1}]
+    if {$nadded > 0 || $numcntls != $_layout(numcntls)} {
+        if {$numcntls == 2 || $nadded == 1} {
+            activate [lindex [$_resultset diff names] end]
+        } else {
+            activate simnum
+        }
+
+        # fix the shortlist layout to show as many controls as we can
+        $_dispatcher event -idle !layout why data
+    }
+
+    #
+    # Set all controls to the settings of the most recent addition.
+    # Setting the value slot will trigger the !settings event, which
+    # will then fix all other controls to match the one that changed.
+    #
+    if {[info exists eventData(what)]} {
+        set xmlobj $eventData(what)
+        set simnum [$_resultset get simnum $xmlobj]
+        set _cntlInfo($this-simnum-value) $simnum
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixLayout ?<eventArgs...>?
+#
+# Called automatically at the idle point after the controls have
+# changed, or the size of the window has changed.  Fixes the layout
+# so that the active control is displayed, and other recent controls
+# are shown above and/or below.  At the very least, we must show the
+# "more options..." control.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_fixLayout {args} {
+    array set eventdata $args
+
+    set shortlist $itk_component(dials)
+
+    # clear out the short list area
+    foreach w [grid slaves $shortlist] {
+        grid forget $w
+    }
+
+    # reset all labels back to an ordinary font/background
+    set fn $itk_option(-textfont)
+    set bg $itk_option(-background)
+    set fg $itk_option(-foreground)
+    foreach col $_cntlInfo($this-all) {
+        set id $_cntlInfo($this-$col-id)
+        $shortlist.label$id configure -background $bg
+        $shortlist.label$id.arrow configure -background $bg \
+            -bitmap [Rappture::icon empty]
+        $shortlist.label$id.name configure -font $fn -background $bg
+        $shortlist.label$id.value configure -background $bg
+    }
+
+    # only 1 result? then we don't need any controls
+    if {$_resultset eq "" || [$_resultset size] < 2} {
+        set _layout(active) $_active
+
+        # let clients know that the layout has changed
+        # so they can fix the overall size accordingly
+        if {![info exists eventdata(why)] || $eventdata(why) ne "resize"} {
+            event generate $itk_component(hull) <<Layout>>
+        }
+
+        return
+    }
+
+    # compute the number of controls that will fit in the shortlist area
+    set dials $itk_component(dials)
+    set h [winfo height $dials]
+    set normalLine [font metrics $itk_option(-textfont) -linespace]
+    set boldLine [font metrics $itk_option(-boldfont) -linespace]
+    set active [expr {$boldLine+[winfo reqheight $dials.dial]+4}]
+
+    if {$h < $active+$normalLine} {
+        # active control kinda big? then show parameter values only
+        set _layout(mode) abbreviated
+        set ncntls [expr {int(floor(double($h)/$normalLine))}]
+    } else {
+        set _layout(mode) usual
+        set ncntls [expr {int(floor(double($h-$active)/$normalLine))+1}]
+    }
+
+    # find the controls with the most usage
+    set order ""
+    foreach col [lrange [$_resultset diff names] 1 end] {
+        lappend order [list $col $_cntlInfo($this-$col-usage)]
+    }
+    set order [lsort -integer -decreasing -index 1 $order]
+
+    set mostUsed ""
+    if {[llength $order] <= $ncntls} {
+        # plenty of space? then show all controls
+        foreach item $order {
+            lappend mostUsed [lindex $item 0]
+        }
+    } else {
+        # otherwise, limit to the most-used controls
+        foreach item [lrange $order 0 [expr {$ncntls-1}]] {
+            lappend mostUsed [lindex $item 0]
+        }
+
+        # make sure the active control is included
+        if {"" != $_active && [lsearch -exact $mostUsed $_active] < 0} {
+            set mostUsed [lreplace [linsert $mostUsed 0 $_active] end end]
+        }
+
+        # if there are more controls, add the "more parameters..." entry
+        if {$ncntls >= 2} {
+            set mostUsed [lreplace $mostUsed end end @more]
+            set rest [expr {[llength $order]-($ncntls-1)}]
+            if {$rest == 1} {
+                $dials.labelmore.name configure -text "1 more parameter..."
+            } else {
+                $dials.labelmore.name configure -text "$rest more parameters..."
+            }
+        }
+    }
+
+    # show controls associated with diffs and put up the radiodial
+    # for the "active" column
+    set row 0
+    foreach col [concat [lrange [$_resultset diff names] 1 end] @more] {
+        # this control not on the short list? then ignore it
+        if {[lsearch $mostUsed $col] < 0} {
+            continue
+        }
+
+        if {[string index $col 0] == "@"} {
+            set id [string range $col 1 end]
+        } else {
+            set id $_cntlInfo($this-$col-id)
+        }
+        grid $shortlist.label$id -row $row -column 1 -sticky ew -padx 4
+
+        if {$col == $_active} {
+            if {$_layout(mode) == "usual"} {
+                # put the background behind the active control in the shortlist
+                grid $shortlist.bg -row $row -rowspan 2 \
+                    -column 0 -columnspan 2 -sticky nsew
+                lower $shortlist.bg
+
+                # place the All and dial in the shortlist area
+                grid $shortlist.all -row $row -rowspan 2 -column 0 \
+                    -sticky nsew -padx 2 -pady 2
+                grid $shortlist.dial -row [expr {$row+1}] -column 1 \
+                    -sticky ew -padx 4
+                incr row
+
+                if {$_layout(active) != $_active} {
+                    $shortlist.dial configure -variable ""
+                    _control load $shortlist.dial $col
+                    $shortlist.dial configure -variable \
+                      "::Rappture::ResultSelector::_cntlInfo($this-$col-value)"
+                    set _layout(active) $_active
+                }
+            }
+        }
+        incr row
+    }
+
+    # highlight the active control
+    if {[info exists _cntlInfo($this-$_active-id)]} {
+        set id $_cntlInfo($this-$_active-id)
+        set bf $itk_option(-boldfont)
+        set fg $itk_option(-activecontrolforeground)
+        set bg $itk_option(-activecontrolbackground)
+
+        if {$_layout(mode) == "usual"} {
+            $shortlist.label$id configure -background $bg
+            $shortlist.label$id.arrow configure -foreground $fg \
+                -background $bg -bitmap [Rappture::icon rarrow]
+            $shortlist.label$id.name configure -foreground $fg \
+                -background $bg -font $bf
+            $shortlist.label$id.value configure -foreground $fg \
+                -background $bg
+            $shortlist.dial configure -background $bg
+            $shortlist.bg configure -background $bg
+
+            if {[$shortlist.all cget -relief] == "raised"} {
+                $shortlist.all configure -foreground $fg -background $bg
+            }
+        }
+    }
+
+    # let clients know that the layout has changed
+    # so they can fix the overall size accordingly
+    if {![info exists eventdata(why)] || $eventdata(why) ne "resize"} {
+        event generate $itk_component(hull) <<Layout>>
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixNumResults
+#
+# Used internally to update the number of results displayed near the
+# top of this widget.  If there is only 1 result, then there is also
+# a single "Clear" button.  If there are no results, the clear button
+# is diabled.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_fixNumResults {} {
+    set size 0
+    if {$_resultset ne ""} {
+        set size [$_resultset size]
+    }
+
+    switch $size {
+        0 {
+            $itk_component(status) configure -text "No results"
+            $itk_component(clearall) configure -state disabled -text "Clear"
+            pack forget $itk_component(clear)
+        }
+        1 {
+            $itk_component(status) configure -text "1 result"
+            $itk_component(clearall) configure -state normal -text "Clear"
+            pack forget $itk_component(clear)
+        }
+        default {
+            $itk_component(status) configure -text "$size results"
+            $itk_component(clearall) configure -state normal -text "Clear All"
+            $itk_component(clear) configure -state normal
+            pack $itk_component(clear) -side right \
+                -after $itk_component(clearall) -padx {0 6}
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSettings ?<eventArgs...>?
+#
+# Called automatically at the idle point after a control has changed
+# to load new data into the plotting area at the top of this result
+# set.  Extracts the current tuple of control values from the control
+# area, then finds the corresponding data values.  Loads the data
+# by invoking a -settingscommand callback with parameters that
+# describe what data should be plotted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_fixSettings {args} {
+    array set eventdata $args
+    if {[info exists eventdata(column)]} {
+        set changed $eventdata(column)
+    } else {
+        set changed ""
+    }
+
+    if {[info exists _cntlInfo($this-$_active-label)]} {
+        lappend params $_cntlInfo($this-$_active-label)
+    } else {
+        lappend params "???"
+    }
+    if {$_active == ""} {
+        return   ;# nothing active -- don't do anything
+    }
+    eval lappend params [_getValues $_active all]
+
+    if {$_resultset eq "" || [$_resultset size] == 0} {
+        # no data? then do nothing
+        return
+    } elseif {[$_resultset size] == 1} {
+        # only one data set? then plot it
+        set xmlobj [$_resultset find * *]
+        set simnum [lindex [$_resultset get simnum $xmlobj] 0]
+
+        _doSettings [list \
+            $simnum [list -width 2 \
+                    -param [_getValues $_active current] \
+                    -description [_getParamDesc all] \
+              ] \
+            params $params \
+        ]
+        return
+    }
+
+    #
+    # Find the selected run.  If the run setting changed, then
+    # look at its current value.  Otherwise, search the results
+    # for a tuple that matches the current settings.
+    #
+    if {$changed == "xmlobj" || $changed == "simnum"} {
+        set xmlobj [$_resultset find simnum $_cntlInfo($this-simnum-value)]
+    } else {
+        set format ""
+        set tuple ""
+        foreach col [lrange [$_resultset diff names] 2 end] {
+            lappend format $col
+            lappend tuple $_cntlInfo($this-$col-value)
+        }
+        set xmlobj [lindex [$_resultset find $format $tuple] 0]
+
+        if {$xmlobj eq "" && $changed ne ""} {
+            #
+            # No data for these settings.  Try leaving the next
+            # column open, then the next, and so forth, until
+            # we find some data.
+            #
+            # allcols:  foo bar baz qux
+            #               ^^^changed
+            #
+            # search:   baz qux foo
+            #
+            set val $_cntlInfo($this-$changed-value)
+            set allcols [lrange [$_resultset diff names] 2 end]
+            set i [lsearch -exact $allcols $changed]
+            set search [concat \
+                [lrange $allcols [expr {$i+1}] end] \
+                [lrange $allcols 0 [expr {$i-1}]] \
+            ]
+            set nsearch [llength $search]
+
+            for {set i 0} {$i < $nsearch} {incr i} {
+                set format $changed
+                set tuple [list $val]
+                for {set j [expr {$i+1}]} {$j < $nsearch} {incr j} {
+                    set col [lindex $search $j]
+                    lappend format $col
+                    lappend tuple $_cntlInfo($this-$col-value)
+                }
+                set xmlobj [lindex [$_resultset find $format $tuple] 0]
+                if {$xmlobj ne ""} {
+                    break
+                }
+            }
+        }
+    }
+
+    #
+    # If we found a particular run, then load its values into all
+    # controls.
+    #
+    if {$xmlobj ne ""} {
+        # stop reacting to value changes
+        set _settings 1
+
+        set format [lrange [$_resultset diff names] 2 end]
+        if {[llength $format] == 1} {
+            set data [list [$_resultset get $format $xmlobj]]
+        } else {
+            set data [$_resultset get $format $xmlobj]
+        }
+
+        foreach col $format val $data {
+            set _cntlInfo($this-$col-value) $val
+        }
+
+        set simnum [$_resultset get simnum $xmlobj]
+        set _cntlInfo($this-simnum-value) $simnum
+
+        # okay, react to value changes again
+        set _settings 0
+    }
+
+    #
+    # Search for tuples matching the current setting and
+    # plot them.
+    #
+    if {$_plotall && $_active eq "simnum"} {
+        set format ""
+    } else {
+        set format ""
+        set tuple ""
+        foreach col [lrange [$_resultset diff names] 2 end] {
+            if {!$_plotall || $col ne $_active} {
+                lappend format $col
+                lappend tuple $_cntlInfo($this-$col-value)
+            }
+        }
+    }
+
+    if {$format ne ""} {
+        set xolist [$_resultset find $format $tuple]
+    } else {
+        set xolist [$_resultset find * *]
+    }
+
+    if {[llength $xolist] > 0} {
+        # search for the result for these settings
+        set format ""
+        set tuple ""
+        foreach col [lrange [$_resultset diff names] 2 end] {
+            lappend format $col
+            lappend tuple $_cntlInfo($this-$col-value)
+        }
+        set curr [$_resultset find $format $tuple]
+
+        if {[llength $xolist] == 1} {
+            # single result -- always use active color
+            set xmlobj [lindex $xolist 0]
+            set simnum [$_resultset get simnum $xmlobj]
+            set plist [list \
+                $simnum [list -width 2 \
+                         -param [_getValues $_active $xmlobj] \
+                         -description [_getParamDesc all $xmlobj] \
+                   ] \
+                params $params \
+            ]
+        } else {
+            #
+            # Get the color for all points according to
+            # the color spectrum.
+            #
+            set plist [list params $params]
+            foreach xmlobj $xolist {
+                set simnum [$_resultset get simnum $xmlobj]
+                if {$xmlobj eq $curr} {
+                    lappend plist $simnum [list -width 3 -raise 1 \
+                        -param [_getValues $_active $xmlobj] \
+                        -description [_getParamDesc all $xmlobj]]
+                } else {
+                    lappend plist $simnum [list -brightness 0.7 -width 1 \
+                        -param [_getValues $_active $xmlobj] \
+                        -description [_getParamDesc all $xmlobj]]
+                }
+            }
+        }
+
+        #
+        # Load up the matching plots
+        #
+        _doSettings $plist
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue <columnName> <why>
+#
+# Called automatically whenver a value for a parameter dial changes.
+# Updates the interface to display the new value.  The <why> is a
+# reason for the change, which may be "resize" (draw old value in
+# new size) or "value" (value changed).
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_fixValue {col why} {
+    if {[info exists _cntlInfo($this-$col-id)]} {
+        set id $_cntlInfo($this-$col-id)
+
+        set widget $itk_component(dials).label$id
+        set wmax [winfo width $itk_component(dials).dial]
+        if {$wmax <= 1} {
+            set wmax [expr {round(0.9*[winfo width $itk_component(cntls)])}]
+        }
+        _drawValue $col $widget $wmax
+
+        if {$why == "value" && !$_settings} {
+            # keep track of usage, so we know which controls are popular
+            incr _cntlInfo($this-$col-usage)
+
+            # adjust the settings according to the value in the column
+            $_dispatcher event -idle !settings column $col
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _drawValue <columnName> <widget> <widthMax>
+#
+# Used internally to fix the rendering of a "quantity = value" display.
+# If the name/value in <widget> are smaller than <widthMax>, then the
+# full "quantity = value" string is displayed.  Otherwise, an
+# abbreviated form is displayed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_drawValue {col widget wmax} {
+    set quantity $_cntlInfo($this-$col-label)
+    regsub -all {\n} $quantity " " quantity  ;# take out newlines
+
+    set newval $_cntlInfo($this-$col-value)
+    regsub -all {\n} $newval " " newval  ;# take out newlines
+
+    set lfont [$widget.name cget -font]
+    set vfont [$widget.value cget -font]
+
+    set wn [font measure $lfont $quantity]
+    set wv [font measure $lfont " = $newval"]
+    set w [expr {$wn + $wv}]
+
+    if {$w <= $wmax} {
+        # if the text fits, then shown "quantity = value"
+        $widget.name configure -text $quantity
+        $widget.value configure -text " = $newval"
+    } else {
+        # Otherwise, we'll have to appreviate.
+        # If the value is really long, then just show a little bit
+        # of it.  Otherwise, show as much of the value as we can.
+        if {[string length $newval] > 30} {
+            set frac 0.8
+        } else {
+            set frac 0.2
+        }
+        set wNameSpace [expr {round($frac*$wmax)}]
+        set wValueSpace [expr {$wmax-$wNameSpace}]
+
+        # fit as much of the "quantity" label in the space available
+        if {$wn < $wNameSpace} {
+            $widget.name configure -text $quantity
+            set wValueSpace [expr {$wmax-$wn}]
+        } else {
+            set wDots [font measure $lfont "..."]
+            set wchar [expr {double($wn)/[string length $quantity]}]
+            while {1} {
+                # figure out a good size for the abbreviated string
+                set cmax [expr {round(($wNameSpace-$wDots)/$wchar)}]
+                if {$cmax < 0} {set cmax 0}
+                set str "[string range $quantity 0 $cmax]..."
+                if {[font measure $lfont $str] <= $wNameSpace
+                      || $wDots >= $wNameSpace} {
+                    break
+                }
+                # we're measuring with average chars, so we may have
+                # to shave a little off and do this again
+                set wDots [expr {$wDots+2*$wchar}]
+            }
+            $widget.name configure -text $str
+            set wValueSpace [expr {$wmax-[font measure $lfont $str]}]
+        }
+
+        if {$wv < $wValueSpace} {
+            $widget.value configure -text " = $newval"
+        } else {
+            set wDots [font measure $vfont "..."]
+            set wEq [font measure $vfont " = "]
+            set wchar [expr {double($wv)/[string length " = $newval"]}]
+            while {1} {
+                # figure out a good size for the abbreviated string
+                set cmax [expr {round(($wValueSpace-$wDots-$wEq)/$wchar)}]
+                if {$cmax < 0} {set cmax 0}
+                set str " = [string range $newval 0 $cmax]..."
+                if {[font measure $vfont $str] <= $wValueSpace
+                      || $wDots >= $wValueSpace} {
+                    break
+                }
+                # we're measuring with average chars, so we may have
+                # to shave a little off and do this again
+                set wDots [expr {$wDots+2*$wchar}]
+            }
+            $widget.value configure -text $str
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _toggleAll ?<columnName>?
+#
+# Called automatically whenever the user clicks on an "All" button.
+# Toggles the button between its on/off states.  In the "on" state,
+# all results associated with the current control are sent to the
+# result viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_toggleAll {{col "current"}} {
+    if {$col == "current"} {
+        set col $_active
+    }
+    if {![info exists _cntlInfo($this-$col-id)]} {
+        return
+    }
+    set id $_cntlInfo($this-$col-id)
+    set sbutton $itk_component(dials).all
+    set current [$sbutton cget -relief]
+
+    if {$current == "sunken"} {
+        $sbutton configure -relief raised \
+            -background $itk_option(-activecontrolbackground) \
+            -foreground $itk_option(-activecontrolforeground)
+        set _plotall 0
+        Rappture::Logger::log result -all off
+    } else {
+        $sbutton configure -relief sunken \
+            -background $itk_option(-togglebackground) \
+            -foreground $itk_option(-toggleforeground)
+        set _plotall 1
+        Rappture::Logger::log result -all on
+
+        if {$col != $_active} {
+            # clicked on an inactive "All" button? then activate that column
+            activate $col
+        }
+    }
+    $_dispatcher event -idle !settings
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _getValues <column> ?<which>?
+#
+# Returns one or more value names associated with the given <column>.
+# If the <which> parameter is "all", then it returns values for all
+# results in the ResultSet.  Each value appears as two values in the
+# flattened list: the normalized value and the value label.  If the
+# <which> parameter is "current"
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_getValues {col {which "all"}} {
+    switch -- $which {
+        current {
+            set simnum $_cntlInfo($this-simnum-value)
+            set xmlobj [$_resultset find simnum $simnum]
+            if {$xmlobj ne ""} {
+                return [$_resultset diff values $col $xmlobj]
+            }
+            return ""
+        }
+        all {
+            return [$_resultset diff values $col all]
+        }
+        default {
+            return [$_resultset diff values $col $which]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _getTooltip <role> <column>
+#
+# Called automatically whenever the user hovers on a control within
+# this widget.  Returns the tooltip associated with the control.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_getTooltip {role column} {
+    set label ""
+    set tip ""
+    if {$column eq "active"} {
+        set column $_active
+    }
+    if {[info exists _cntlInfo($this-$column-label)]} {
+        set label $_cntlInfo($this-$column-label)
+    }
+    if {[info exists _cntlInfo($this-$column-tip)]} {
+        set tip $_cntlInfo($this-$column-tip)
+    }
+
+    switch -- $role {
+        label {
+            if {$column ne $_active} {
+                append tip "\n\nClick to activate this control."
+            }
+        }
+        dial {
+            append tip "\n\nClick to change the value of this parameter."
+        }
+        all {
+            if {$label eq ""} {
+                set tip "Plot all values for this quantity."
+            } else {
+                set tip "Plot all values for $label."
+            }
+            if {$_plotall} {
+                set what "all values"
+            } else {
+                set what "one value"
+            }
+            append tip "\n\nCurrently, plotting $what.  Click to toggle."
+        }
+    }
+    return [string trim $tip]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _getParamDesc <which> ?<xmlobj>?
+#
+# Used internally to build a descripton of parameters for the data
+# tuple for the specified <xmlobj>.  This is passed on to the underlying
+# results viewer, so it will know what data is being viewed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_getParamDesc {which {xmlobj "current"}} {
+    if {$_resultset eq ""} {
+        return ""
+    }
+
+    if {$xmlobj eq "current"} {
+        # search for the result for these settings
+        set format ""
+        set tuple ""
+        foreach col [lrange [$_resultset diff names] 2 end] {
+            lappend format $col
+            lappend tuple $_cntlInfo($this-$col-value)
+        }
+        set xmlobj [$_resultset find $format $tuple]
+        if {$xmlobj eq ""} {
+            return ""  ;# somethings wrong -- bail out!
+        }
+    }
+
+    switch -- $which {
+        active {
+            if {$_active eq ""} {
+                return ""
+            }
+        }
+        all {
+            set desc ""
+            foreach col [lrange [$_resultset diff names] 1 end] {
+                set quantity $_cntlInfo($this-$col-label)
+                set val [$_resultset get $col $xmlobj]
+                append desc "$quantity = $val\n"
+            }
+            return [string trim $desc]
+        }
+        default {
+            error "bad value \"$which\": should be active or all"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _log <col>
+#
+# Used internally to log the event when a user switches to a different
+# result in the result selector.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSelector::_log {col} {
+    Rappture::Logger::log result -select $col $_cntlInfo($this-$col-value)
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -resultset
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::ResultSelector::resultset {
+    set obj $itk_option(-resultset)
+    if {$obj ne ""} {
+        if {[catch {$obj isa ::Rappture::ResultSet} valid] || !$valid} {
+            error "bad value \"$obj\": should be Rappture::ResultSet object"
+        }
+    }
+
+    # disconnect the existing ResultSet and install the new one
+    if {$_resultset ne ""} {
+        $_resultset notify remove $this
+        _fixControls op clear
+    }
+    set _resultset $obj
+
+    if {$_resultset ne ""} {
+        $_resultset notify add $this !change \
+            [itcl::code $this _fixControls]
+    }
+
+    _fixControls op add
+    activate simnum
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -activecontrolbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::ResultSelector::activecontrolbackground {
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -activecontrolforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::ResultSelector::activecontrolforeground {
+    $_dispatcher event -idle !layout
+}
+
Index: /tags/1.6.0/gui/scripts/resultset.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/resultset.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/resultset.tcl	(revision 6168)
@@ -0,0 +1,572 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: ResultSet - set of XML objects for simulated results
+#
+#  This data structure collects all of the simulated results
+#  produced by a series of tool runs.  It is used by the Analyzer,
+#  ResultSelector, and other widgets to keep track of all known runs
+#  and visualize the result that is currently selected.  Each run
+#  has an index number ("#1", "#2", "#3", etc.) that can be used to
+#  label the run and refer to it later.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+itcl::class Rappture::ResultSet {
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method add {xmlobj}
+    public method clear {{xmlobj ""}}
+    public method diff {option args}
+    public method find {collist vallist}
+    public method get {collist xmlobj}
+    public method contains {xmlobj}
+    public method size {}
+
+    public method notify {option args}
+    protected method _notifyHandler {args}
+
+    protected method _addOneResult {tuples xmlobj {simnum ""}}
+
+    private variable _dispatcher ""  ;# dispatchers for !events
+    private variable _results ""     ;# tuple of known results
+    private variable _resultnum 0    ;# counter for result #1, #2, etc.
+    private variable _notify         ;# info used for notify command
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::constructor {args} {
+    # create a dispatcher for events
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !change
+    $_dispatcher dispatch $this !change \
+        [itcl::code $this _notifyHandler]
+
+    # create a list of tuples for data
+    set _results [Rappture::Tuples ::#auto]
+    $_results column insert end -name xmlobj -label "top-level XML object"
+    $_results column insert end -name simnum -label "simulation number"
+
+    # clear notification info
+    set _notify(ALL) ""
+
+    eval configure $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::destructor {} {
+    clear
+    itcl::delete object $_results
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <xmlobj>
+#
+# Adds a new result to this result set.  Scans through all existing
+# results to look for a difference compared to previous results.
+# Returns the simulation number (#1, #2, #3, etc.) of this new result
+# to the caller.  The various data objects for this result set should
+# be added to their result viewers at the same index.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::add {xmlobj} {
+    set xmlobj0 [$_results get -format xmlobj end]
+    if {$xmlobj0 eq ""} {
+        #
+        # If this is the first result, then there are no diffs.
+        # Add it right in.
+        #
+        set simnum "#[incr _resultnum]"
+        $_results insert end [list $xmlobj $simnum]
+    } else {
+        #
+        # For all later results, find the diffs and add any new columns
+        # into the results tuple.  The latest result is the most recent.
+        #
+        set simnum [_addOneResult $_results $xmlobj]
+    }
+
+    # make sure we fix up associated controls
+    $_dispatcher event -now !change op add what $xmlobj
+
+    return $simnum
+}
+
+# ----------------------------------------------------------------------
+# USAGE: clear ?<xmlobj>?
+#
+# Clears one or all results in this result set.  If no specific
+# result object is specified, then all results are cleared.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::clear {{xmlobj ""}} {
+    if {$xmlobj ne ""} {
+        #
+        # Delete just one result.  Look for the result among the
+        # tuples and remove it.  Then, rebuild all of the tuples
+        # by scanning back through them and building them back up.
+        # This will rebuild the columns/controls as they should
+        # be now, removing anything that is no longer necessary.
+        #
+        set irun [$_results find -format xmlobj $xmlobj]
+        if {[llength $irun] == 1} {
+            # grab a description of what we're about to delete
+            set dlist [list simnum [$_results get -format simnum $irun]]
+            foreach col [lrange [$_results column names] 2 end] {
+                set raw [lindex [Rappture::LibraryObj::value $xmlobj $col] 0]
+                lappend dlist $col $raw  ;# use "raw" (user-readable) label
+            }
+
+            # delete this from the tuples of all results
+            itcl::delete object $xmlobj
+            $_results delete $irun
+
+            set new [Rappture::Tuples ::#auto]
+            $new column insert end -name xmlobj -label "top-level XML object"
+            $new column insert end -name simnum -label "simulation number"
+
+            for {set n 0} {$n < [$_results size]} {incr n} {
+                set rec [lindex [$_results get -format {xmlobj simnum} $n] 0]
+                foreach {obj num} $rec break
+                if {$n == 0} {
+                    $new insert end [list $obj $num]
+                } else {
+                    _addOneResult $new $obj $num
+                }
+            }
+
+            # plug in the new set of rebuilt tuples
+            itcl::delete object $_results
+            set _results $new
+
+            # make sure we fix up associated controls at some point
+            $_dispatcher event -now !change op clear what $dlist
+        }
+    } else {
+        #
+        # Delete all results.
+        #
+        for {set irun 0} {$irun < [$_results size]} {incr irun} {
+            set xo [$_results get -format xmlobj $irun]
+            itcl::delete object $xo
+        }
+        $_results delete 0 end
+
+        # make sure we fix up associated controls at some point
+        $_dispatcher event -now !change op clear what all
+    }
+
+    if {[$_results size] == 0} {
+        # no results left?  then reset to a clean state
+        eval $_results column delete [lrange [$_results column names] 2 end]
+        set _resultnum 0
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: diff names
+# USAGE: diff values <column> ?<which>?
+#
+# Returns information about the diffs in the current set of known
+# results.  The "diff names" returns a list of column names for
+# parameters that have diffs.  (These are the columns in the tuples.)
+#
+# The "diff values" returns the various values associated with a
+# particular <column> name.  If the optional <which> is specified,
+# then it is treated as an index into the list of values--0 for the
+# first value, 1 for the second, etc.  Each value is returned as
+# a list with two words.  The first is the the label associated with
+# the value.  The second is the normalized (numeric) value, which can
+# be sorted to get a particular ordering.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::diff {option args} {
+    switch -- $option {
+        names {
+            return [$_results column names]
+        }
+        values {
+            if {[llength $args] < 1} {
+                error "wrong # args: should be \"diff values col ?which?\""
+            }
+            set col [lindex $args 0]
+
+            set which "all"
+            if {[llength $args] > 1} {
+                set which [lindex $args 1]
+            }
+
+            set rlist ""
+            # build an array of normalized values and their labels
+            if {$col == "simnum"} {
+                set nruns [$_results size]
+                for {set n 0} {$n < $nruns} {incr n} {
+                    set simnum [$_results get -format simnum $n]
+                    lappend rlist $simnum $n
+                }
+            } else {
+                set havenums 1
+                foreach rec [$_results get -format [list xmlobj $col]] {
+                    set xo [lindex $rec 0]
+                    set v [lindex $rec 1]
+                    foreach {raw norm} \
+                        [Rappture::LibraryObj::value $xo $col] break
+                    if {![info exists unique($v)]} {
+                        # keep only unique label strings
+                        set unique($v) $norm
+                    }
+                    if {$havenums && ![string is double $norm]} {
+                        set havenums 0
+                    }
+                }
+
+                if {!$havenums} {
+                    # don't have normalized nums? then sort and create nums
+                    set rlist ""
+                    set n 0
+                    foreach val [lsort -dictionary [array names unique]] {
+                        lappend rlist $val [incr n]
+                    }
+                } else {
+                    set rlist [array get unique]
+                }
+            }
+
+            if {$which eq "all"} {
+                return $rlist
+            }
+
+            # treat the "which" parameter as an XML object
+            set irun [lindex [$_results find -format xmlobj $which] 0]
+            if {$irun ne ""} {
+                set val [lindex [$_results get -format $col $irun] 0]
+                array set val2norm $rlist
+                if {[info exists val2norm($val)]} {
+                    return [list $val $val2norm($val)]
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be names or values"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: find <columnList> <valueList>
+#
+# Searches through the results for a set of tuple values that match
+# the <valueList> for the given <columnList>.  Returns a list of
+# matching xml objects or "" if there is no match.  If the <valueList>
+# is *, then it returns a list of all xml objects.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::find {collist vallist} {
+    if {$vallist eq "*"} {
+        return [$_results get -format xmlobj]
+    }
+
+    set rlist ""
+    foreach irun [$_results find -format $collist -- $vallist] {
+        lappend rlist [$_results get -format xmlobj $irun]
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get <columnList> <xmlobj>
+#
+# Returns values for the specified <columnList> for the given <xmlobj>.
+# This is a way of querying associated data for the given object.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::get {collist xmlobj} {
+    set irun [lindex [$_results find -format xmlobj $xmlobj] 0]
+    if {$irun ne ""} {
+        return [lindex [$_results get -format $collist $irun] 0]
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: contains <xmlobj>
+#
+# Checks to see if the given <xmlobj> is already represented by
+# some result in this result set.  This comes in handy when checking
+# to see if an input case is already covered.
+#
+# Returns 1 if the result set already contains this result, and
+# 0 otherwise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::contains {xmlobj} {
+    # no results? then this must be new
+    if {[$_results size] == 0} {
+        return 0
+    }
+
+    #
+    # Compare this new object against the last XML object in the
+    # results set.  If it has a difference, make sure that there
+    # is a column to represent the quantity with the difference.
+    #
+    set xmlobj0 [$_results get -format xmlobj end]
+    foreach {op vpath oldval newval} [$xmlobj0 diff $xmlobj] {
+        if {[$xmlobj get $vpath.about.diffs] == "ignore"} {
+            continue
+        }
+        if {$op == "+" || $op == "-"} {
+            # ignore differences where parameters come and go
+            # such differences make it hard to work controls
+            continue
+        }
+        if {[$_results column names $vpath] == ""} {
+            # no column for this quantity yet
+            return 0
+        }
+    }
+
+    #
+    # If we got this far, then look through existing results for
+    # matching tuples, then check each one for diffs.
+    #
+    set format ""
+    set tuple ""
+    foreach col [lrange [$_results column names] 2 end] {
+        lappend format $col
+        set raw [lindex [Rappture::LibraryObj::value $xmlobj $col] 0]
+        lappend tuple $raw  ;# use the "raw" (user-readable) label
+    }
+    if {[llength $format] > 0} {
+        set ilist [$_results find -format $format -- $tuple]
+    } else {
+        set ilist 0  ;# no diffs -- must match first entry
+    }
+
+    foreach i $ilist {
+        set xmlobj0 [$_results get -format xmlobj $i]
+        set diffs [$xmlobj0 diff $xmlobj]
+        if {[llength $diffs] == 0} {
+            # no diffs -- already contained here
+            return 1
+        }
+    }
+
+    # must be some differences
+    return 0
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: size
+#
+# Returns the number of results currently stored in the set.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::size {} {
+    return [$_results size]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: notify add <client> ?!event !event ...? <command>
+# USAGE: notify get ?<client>? ?!event?
+# USAGE: notify remove <client> ?!event !event ...?
+#
+# Clients use this to add/remove requests for notifications about
+# various events that signal changes to the data in each ResultSet.
+#
+# The "notify add" operation takes a <client> name (any unique string
+# identifying the client), an optional list of events, and the <command>
+# that should be called for the callback.
+#
+# The "notify get" command returns information about clients and their
+# registered callbacks.  With no args, it returns a list of <client>
+# names.  If the <client> is specified, it returns a list of !events.
+# If the <client> and !event is specified, it returns the <command>.
+#
+# The "notify remove" command removes any callback associated with
+# a given <client>.  If no particular !events are specified, then it
+# removes callbacks for all events.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::notify {option args} {
+    set allEvents {!change}
+    switch -- $option {
+        add {
+            if {[llength $args] < 2} {
+                error "wrong # args: should be \"notify add caller ?!event !event ...? command"
+            }
+            set caller [lindex $args 0]
+            set command [lindex $args end]
+            if {[llength $args] > 2} {
+                set events [lrange $args 1 end-1]
+            } else {
+                set events $allEvents
+            }
+
+            foreach name $events {
+                if {[lsearch -exact $allEvents $name] < 0} {
+                    error "bad event \"$name\": should be [join $allEvents ,]"
+                }
+                if {[lsearch $_notify(ALL) $caller] < 0} {
+                    lappend _notify(ALL) $caller
+                }
+                set _notify($caller-$name) $command
+            }
+        }
+        get {
+            switch -- [llength $args] {
+                0 {
+                    return $_notify(ALL)
+                }
+                1 {
+                    set caller [lindex $args 0]
+                    set rlist ""
+                    foreach key [array names _notify $caller-*] {
+                        lappend rlist [lindex [split $key -] end]
+                    }
+                    return $rlist
+                }
+                2 {
+                    set caller [lindex $args 0]
+                    set name [lindex $args 1]
+                    if {[info exists _notify($caller-$name)]} {
+                        return $_notify($caller-$name)
+                    }
+                    return ""
+                }
+                default {
+                    error "wrong # args: should be \"notify get ?caller? ?!event?\""
+                }
+            }
+        }
+        remove {
+            if {[llength $args] < 1} {
+                error "wrong # args: should be \"notify remove caller ?!event !event ...?"
+            }
+            set caller [lindex $args 0]
+            if {[llength $args] > 1} {
+                set events [lrange $args 1 end]
+            } else {
+                set events $allEvents
+            }
+
+            foreach name $events {
+                catch {unset _notify($caller-$name)}
+            }
+            if {[llength [array names _notify $caller-*]] == 0} {
+                set i [lsearch $_notify(ALL) $caller]
+                if {$i >= 0} {
+                    set _notify(ALL) [lreplace $_notify(ALL) $i $i]
+                }
+            }
+        }
+        default {
+            error "wrong # args: should be add, get, remove"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _notifyHandler ?<eventArgs>...?
+#
+# Called automatically whenever a !change event is triggered in this
+# object.  Scans through the list of clients that want to receive this
+# event and executes each of their callbacks.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::_notifyHandler {args} {
+    array set data $args
+    set event $data(event)
+
+    foreach caller $_notify(ALL) {
+        if {[info exists _notify($caller-$event)]} {
+            if {[catch {uplevel #0 $_notify($caller-$event) $args} result]} {
+                # anything go wrong? then throw a background error
+                bgerror "$result\n(while dispatching $event to $caller)"
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _addOneResult <tuples> <xmlobj> ?<simNum>?
+#
+# Used internally to add one new <xmlobj> to the given <tuples>
+# object.  If the new xmlobj contains different input parameters
+# that are not already columns in the tuple, then this routine
+# creates the new columns.  If the optional <simNum> is specified,
+# then it is added as the simulation number #1, #2, #3, etc.  If
+# not, then the new object is automatically numbered.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultSet::_addOneResult {tuples xmlobj {simnum ""}} {
+    #
+    # Compare this new object against the last XML object in the
+    # results set.  If it has a difference, make sure that there
+    # is a column to represent the quantity with the difference.
+    #
+    set xmlobj0 [$tuples get -format xmlobj end]
+    foreach {op vpath oldval newval} [$xmlobj0 diff $xmlobj] {
+        if {[$xmlobj get $vpath.about.diffs] == "ignore"} {
+            continue
+        }
+        if {$op == "+" || $op == "-"} {
+            # ignore differences where parameters come and go
+            # such differences make it hard to work controls
+            continue
+        }
+
+        # make sure that these values really are different
+        set oldval [lindex [Rappture::LibraryObj::value $xmlobj0 $vpath] 0]
+        set newval [lindex [Rappture::LibraryObj::value $xmlobj $vpath] 0]
+
+        if {$oldval != $newval && [$tuples column names $vpath] == ""} {
+            # no column for this quantity yet
+            $tuples column insert end -name $vpath -default $oldval
+        }
+    }
+
+    # build a tuple for this new object
+    set cols ""
+    set tuple ""
+    foreach col [lrange [$tuples column names] 2 end] {
+        lappend cols $col
+        set raw [lindex [Rappture::LibraryObj::value $xmlobj $col] 0]
+        lappend tuple $raw  ;# use the "raw" (user-readable) label
+    }
+
+    # find a matching tuple? then replace it -- only need one
+    if {[llength $cols] > 0} {
+        set ilist [$tuples find -format $cols -- $tuple]
+    } else {
+        set ilist 0  ;# no diffs -- must match first entry
+    }
+
+    # add all remaining columns for this new entry
+    set tuple [linsert $tuple 0 $xmlobj]
+    set cols [linsert $cols 0 "xmlobj"]
+
+    if {[llength $ilist] > 0} {
+        if {[llength $ilist] > 1} {
+            error "why so many matching results?"
+        }
+
+        # overwrite the first matching entry
+        # start by freeing the old result
+        set index [lindex $ilist 0]
+        set xo [$tuples get -format xmlobj $index]
+        itcl::delete object $xo
+
+        # put this new result in its place
+        $tuples put -format $cols $index $tuple
+        set simnum [$tuples get -format simnum $index]
+    } else {
+        if {$simnum eq ""} {
+            set simnum "#[incr _resultnum]"
+        }
+        set tuple [linsert $tuple 1 $simnum]
+        $tuples insert end $tuple
+    }
+    return $simnum
+}
Index: /tags/1.6.0/gui/scripts/resultviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/resultviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/resultviewer.tcl	(revision 6168)
@@ -0,0 +1,600 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: ResultViewer - plots a collection of related results
+#
+#  This widget plots a collection of results that all represent
+#  the same quantity, but for various ranges of input values.  It
+#  is normally used as part of an Analyzer, to plot the various
+#  results selected by a ResultSet.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itcl::class Rappture::ResultViewer {
+    inherit itk::Widget
+
+    itk_option define -width width Width 4i
+    itk_option define -height height Height 4i
+    itk_option define -colors colors Colors ""
+    itk_option define -clearcommand clearCommand ClearCommand ""
+    itk_option define -simulatecommand simulateCommand SimulateCommand ""
+
+    constructor {args} {
+	# defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method add {index xmlobj path label {uq_part ""}}
+    public method clear {{index ""}}
+    public method value {xmlobj}
+
+    public method plot {option args}
+    public method download {option args}
+
+    protected method _plotAdd {xmlobj {settings ""}}
+    protected method _fixScale {args}
+    protected method _xml2data {xmlobj path label {uq_part ""}}
+    protected method _cleanIndex {index}
+
+    private variable _dispatcher ""  ;# dispatchers for !events
+    private variable _mode ""        ;# current plotting mode (xy, etc.)
+    private variable _mode2widget    ;# maps plotting mode => widget
+    private variable _dataslots ""   ;# list of all data objects in this widget
+    private variable _xml2data       ;# maps xmlobj => data obj in _dataslots
+}
+
+itk::usual ResultViewer {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultViewer::constructor {args} {
+    #puts "Creating RV $args"
+    # create a dispatcher for events
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !scale
+    $_dispatcher dispatch $this !scale \
+        [itcl::code $this _fixScale]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultViewer::destructor {} {
+    foreach slot $_dataslots {
+        foreach obj $slot {
+            itcl::delete object $obj
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <index> <xmlobj> <path>
+#
+# Adds a new result to this result viewer at the specified <index>.
+# Data is taken from the <xmlobj> object at the <path>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultViewer::add {index xmlobj path label {uq_part ""}} {
+    #puts "RV add index=$index path=$path label=$label uq_part=$uq_part"
+    set index [_cleanIndex $index]
+    set dobj [_xml2data $xmlobj $path $label $uq_part]
+
+    #
+    # If the index doesn't exist, then fill in empty slots and
+    # make it exist.
+    #
+    for {set i [llength $_dataslots]} {$i <= $index} {incr i} {
+        lappend _dataslots ""
+    }
+
+    set slot [lindex $_dataslots $index]
+
+    # only add dobj if it isn't already there.
+    if {[lsearch -exact $slot $dobj] < 0} {
+        lappend slot $dobj
+        #puts "slot=$slot"
+        set _dataslots [lreplace $_dataslots $index $index $slot]
+        $_dispatcher event -idle !scale
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: clear ?<index>|<xmlobj>?
+#
+# Clears one or all results in this result viewer.  If a particular
+# <index> is specified, then all data objects at that index are
+# deleted.  If a particular <xmlobj> is specified, then all data
+# objects related to that <xmlobj> are removed--regardless of whether
+# they reside at one or more indices.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultViewer::clear {{index ""}} {
+    #puts "RV::clear $index"
+    if {$index ne ""} {
+        # clear one result
+        if {[catch {_cleanIndex $index} i] == 0} {
+            if {$i >= 0 && $i < [llength $_dataslots]} {
+                set slot [lindex $_dataslots $i]
+                foreach dobj $slot {
+                    if {"" != $_mode} {
+                        $_mode2widget($_mode) delete $dobj
+                    }
+                    itcl::delete object $dobj
+                }
+                set _dataslots [lreplace $_dataslots $i $i ""]
+                $_dispatcher event -idle !scale
+            }
+        } else {
+            foreach key [array names _xml2data $index-*] {
+                set dobj $_xml2data($key)
+
+                # search for and remove all references to this data object
+                for {set n 0} {$n < [llength $_dataslots]} {incr n} {
+                    set slot [lindex $_dataslots $n]
+                    set pos [lsearch -exact $slot $dobj]
+                    if {$pos >= 0} {
+                        set slot [lreplace $slot $pos $pos]
+                        set _dataslots [lreplace $_dataslots $n $n $slot]
+                        $_dispatcher event -idle !scale
+                    }
+                }
+
+                if {"" != $_mode} {
+                    $_mode2widget($_mode) delete $dobj
+                }
+                # destroy the object and forget it
+                itcl::delete object $dobj
+                unset _xml2data($key)
+            }
+        }
+    } else {
+        # clear all results
+        plot clear
+        foreach slot $_dataslots {
+            foreach dobj $slot {
+                itcl::delete object $dobj
+            }
+        }
+        set _dataslots ""
+        catch {unset _xml2data}
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value <xmlobj>
+#
+# Convenience method for showing a single value.  Loads the value
+# into the widget via add/clear, then immediately plots the value.
+# This makes the widget consistent with other widgets, such as
+# the DeviceEditor, etc.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultViewer::value {xmlobj} {
+    clear
+    if {"" != $xmlobj} {
+        add 0 $xmlobj ""
+        plot add 0 ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: plot add ?<simnum> <settings> <simnum> <settings> ...?
+# USAGE: plot clear
+#
+# Used to manipulate the contents of this viewer.  The "plot clear"
+# command clears the current viewer.  Data is still stored in the
+# widget, but the results are not shown on screen.  The "plot add"
+# command adds the data at the specified <simnum> to the plot.  Each
+# <simnum> is the simulation number, like "#1", "#2", "#3", etc.  If
+# the optional <settings> are specified, then they are applied
+# to the plot; otherwise, default settings are used.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultViewer::plot {option args} {
+    #puts "RV plot option=$option args=$args"
+    switch -- $option {
+        add {
+            set params ""
+            foreach {index opts} $args {
+                if {$index == "params"} {
+                    set params $opts
+                    continue
+                }
+
+                set index [_cleanIndex $index]
+                lappend opts "-simulation" [expr $index + 1]
+                set reset "-color autoreset"
+                set slot [lindex $_dataslots $index]
+                foreach dobj $slot {
+                    set settings ""
+                    # start with color reset, only for first object in series
+                    if {"" != $reset} {
+                        set settings $reset
+                        set reset ""
+                    }
+                    # add default settings from data object
+                    if {[catch {$dobj hints style} style] == 0} {
+                        eval lappend settings $style
+                    }
+                    if {[catch {$dobj hints type} type] == 0} {
+                        if {"" != $type} {
+                            eval lappend settings "-type $type"
+                        }
+                    }
+                    # add override settings passed in here
+                    eval lappend settings $opts
+                    _plotAdd $dobj $settings
+                }
+            }
+            if {"" != $params && "" != $_mode} {
+                eval $_mode2widget($_mode) parameters $params
+            }
+        }
+        clear {
+            # clear the contents of the current mode
+            if {"" != $_mode} {
+                $_mode2widget($_mode) delete
+            }
+        }
+        default {
+            error "bad option \"$option\": should be add or clear"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _plotAdd <dataobj> <settings>
+#
+# Used internally to add a <dataobj> representing some data to
+# the plot at the top of this widget.  The data is added to the
+# current plot.  Use the "clear" function to clear before adding
+# new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultViewer::_plotAdd {dataobj {settings ""}} {
+    #puts "RV _plotAdd $dataobj : [$dataobj info class] : $settings"
+    switch -- [$dataobj info class] {
+        ::Rappture::UqInfo {
+            set mode "uq"
+            if {![info exists _mode2widget($mode)]} {
+                set w $itk_interior.uq
+                Rappture::UqNotebook $w
+                set _mode2widget($mode) $w
+            }
+        }
+        ::Rappture::DataTable {
+            set mode "datatable"
+            if {![info exists _mode2widget($mode)]} {
+                set w $itk_interior.datatable
+                Rappture::DataTableResult $w
+                set _mode2widget($mode) $w
+            }
+        }
+        ::Rappture::Drawing {
+            set mode "vtkviewer"
+            if {![info exists _mode2widget($mode)]} {
+                set w $itk_interior.vtkviewer
+                Rappture::VtkViewer $w
+                set _mode2widget($mode) $w
+            }
+        }
+        ::Rappture::Histogram {
+            set mode "histogram"
+            if {![info exists _mode2widget($mode)]} {
+                set w $itk_interior.histogram
+                Rappture::HistogramResult $w
+                set _mode2widget($mode) $w
+            }
+        }
+        ::Rappture::Curve {
+            set type [$dataobj hints type]
+            set mode "xy"
+            if { $type == "bars" } {
+                if {![info exists _mode2widget($mode)]} {
+                    set w $itk_interior.xy
+                    Rappture::BarchartResult $w
+                    set _mode2widget($mode) $w
+                }
+            } else {
+                if {![info exists _mode2widget($mode)]} {
+                    set w $itk_interior.xy
+                    Rappture::XyResult $w
+                    set _mode2widget($mode) $w
+                }
+            }
+        }
+        ::Rappture::Field {
+            if { ![$dataobj isvalid] } {
+                return;                 # Ignore invalid field objects.
+            }
+            set dims [lindex [lsort [$dataobj components -dimensions]] end]
+            switch -- $dims {
+                1D {
+                    set mode "xy"
+                    if {![info exists _mode2widget($mode)]} {
+                        set w $itk_interior.xy
+                        Rappture::XyResult $w
+                        set _mode2widget($mode) $w
+                    }
+                }
+                default {
+                    set mode [$dataobj viewer]
+                    if {![info exists _mode2widget($mode)]} {
+                        set w $itk_interior.$mode
+                        if { ![winfo exists $w] } {
+                            Rappture::FieldResult $w -mode $mode
+                        }
+                        set _mode2widget($mode) $w
+                    }
+                }
+            }
+        }
+        ::Rappture::Mesh {
+            if { ![$dataobj isvalid] } {
+                return;                 # Ignore invalid mesh objects.
+            }
+            set mode "vtkmeshviewer"
+            if {![info exists _mode2widget($mode)]} {
+                set w $itk_interior.$mode
+                Rappture::VtkMeshViewer $w
+                set _mode2widget($mode) $w
+            }
+        }
+        ::Rappture::Table {
+            set cols [Rappture::EnergyLevels::columns $dataobj]
+            if {"" != $cols} {
+                set mode "energies"
+                if {![info exists _mode2widget($mode)]} {
+                    set w $itk_interior.energies
+                    Rappture::EnergyLevels $w
+                    set _mode2widget($mode) $w
+                }
+            }
+        }
+        ::Rappture::LibraryObj {
+            switch -- [$dataobj element -as type] {
+                string - log {
+                    set mode "log"
+                    if {![info exists _mode2widget($mode)]} {
+                        set w $itk_interior.log
+                        Rappture::TextResult $w
+                        set _mode2widget($mode) $w
+                    }
+                }
+                structure {
+                    set mode "structure"
+                    if {![info exists _mode2widget($mode)]} {
+                        set w $itk_interior.struct
+                        Rappture::DeviceResult $w
+                        set _mode2widget($mode) $w
+                    }
+                }
+                number - integer {
+                    set mode "number"
+                    if {![info exists _mode2widget($mode)]} {
+                        set w $itk_interior.number
+                        Rappture::NumberResult $w
+                        set _mode2widget($mode) $w
+                    }
+                }
+                boolean - choice {
+                    set mode "value"
+                    if {![info exists _mode2widget($mode)]} {
+                        set w $itk_interior.value
+                        Rappture::ValueResult $w
+                        set _mode2widget($mode) $w
+                    }
+                }
+            }
+        }
+        ::Rappture::Image {
+            set mode "image"
+            if {![info exists _mode2widget($mode)]} {
+                set w $itk_interior.image
+                Rappture::ImageResult $w
+                set _mode2widget($mode) $w
+            }
+        }
+        ::Rappture::Sequence {
+            set mode "sequence"
+            if {![info exists _mode2widget($mode)]} {
+                set w $itk_interior.image
+                Rappture::SequenceResult $w
+                set _mode2widget($mode) $w
+            }
+        }
+        default {
+            error "don't know how to plot <$type> data [$dataobj info class]"
+        }
+    }
+
+    # Are we plotting in a new mode? then change widgets
+    if {$_mode2widget($mode) != [pack slaves $itk_interior]} {
+        # remove any current window
+        foreach w [pack slaves $itk_interior] {
+            pack forget $w
+        }
+        pack $_mode2widget($mode) -expand yes -fill both
+
+        set _mode $mode
+        $_dispatcher event -idle !scale
+    }
+    $_mode2widget($mode) add $dataobj $settings
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixScale ?<eventArgs>...?
+#
+# Invoked automatically whenever a new dataset is added to fix the
+# overall scales of the viewer.  This makes the visualizer consistent
+# across all <dataobj> in this widget, so that it can plot all
+# available data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultViewer::_fixScale {args} {
+    if {"" != $_mode} {
+        set dlist ""
+        set objclass ""
+        foreach slot $_dataslots {
+            foreach dobj $slot {
+                if {$objclass == ""} {
+                    set objclass [$dobj info class]
+                } else {
+                    if {$objclass != [$dobj info class]} {
+                        # If some of the objects are different classes
+                        # then we cannot use the same scale, so give up.
+                        return
+                    }
+                }
+                lappend dlist $dobj
+            }
+        }
+        eval $_mode2widget($_mode) scale $dlist
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultViewer::download {option args} {
+    if {"" == $_mode} {
+        return ""
+    }
+    return [eval $_mode2widget($_mode) download $option $args]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _xml2data <xmlobj> <path>
+#
+# Used internally to create a data object for the data at the
+# specified <path> in the <xmlobj>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultViewer::_xml2data {xmlobj path label {uq_part ""}} {
+    #puts "RV:_xml2data $path ([$xmlobj element -as type $path]) label=$label uq_part=$uq_part"
+
+    if {$uq_part != ""} {
+        if {[info exists _xml2data($xmlobj-$label)]} {
+            $_xml2data($xmlobj-$label) add $xmlobj $path $uq_part
+            return $_xml2data($xmlobj-$label)
+        }
+    } elseif {[info exists _xml2data($xmlobj-$path]} {
+        return $_xml2data($xmlobj-$path)
+    }
+
+    if {$uq_part != ""} {
+        set type "UQ"
+    } else {
+        set type [$xmlobj element -as type $path]
+    }
+
+    switch -- $type {
+        UQ {
+            set dobj [Rappture::UqInfo ::#auto $xmlobj $path $uq_part]
+            set path $label
+        }
+        curve {
+            set dobj [Rappture::Curve ::#auto $xmlobj $path]
+        }
+        datatable {
+            set dobj [Rappture::DataTable ::#auto $xmlobj $path]
+        }
+        histogram {
+            set dobj [Rappture::Histogram ::#auto $xmlobj $path]
+        }
+        field {
+            set dobj [Rappture::Field ::#auto $xmlobj $path]
+        }
+        mesh {
+            set dobj [Rappture::Mesh ::#auto $xmlobj $path]
+        }
+        table {
+            set dobj [Rappture::Table ::#auto $xmlobj $path]
+        }
+        image {
+            set dobj [Rappture::Image ::#auto $xmlobj $path]
+        }
+        sequence {
+            set dobj [Rappture::Sequence ::#auto $xmlobj $path]
+        }
+        string - log {
+            set dobj [$xmlobj element -as object $path]
+        }
+        structure {
+            set dobj [$xmlobj element -as object $path]
+        }
+        number - integer - boolean - choice {
+            set dobj [$xmlobj element -as object $path]
+        }
+        drawing3d - drawing {
+            set dobj [Rappture::Drawing ::#auto $xmlobj $path]
+        }
+        time - status {
+            set dobj ""
+        }
+        default {
+            error "don't know how to plot <$type> data path=$path"
+        }
+    }
+
+    # store the mapping xmlobj=>dobj so we can find this result later
+    if {$dobj ne ""} {
+        set _xml2data($xmlobj-$path) $dobj
+    }
+    return $dobj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _cleanIndex <index>
+#
+# Used internally to create a data object for the data at the
+# specified <path> in the <xmlobj>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultViewer::_cleanIndex {index} {
+    set index [lindex $index 0]
+    if {[regexp {^#([0-9]+)} $index match num]} {
+        return [expr {$num-1}]  ;# start from 0 instead of 1
+    } elseif {[string is integer -strict $index]} {
+        return $index
+    }
+    error "bad plot index \"$index\": should be 0,1,2,... or #1,#2,#3,..."
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -width
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::ResultViewer::width {
+    set w [winfo pixels $itk_component(hull) $itk_option(-width)]
+    set h [winfo pixels $itk_component(hull) $itk_option(-height)]
+    if {$w == 0 || $h == 0} {
+        pack propagate $itk_component(hull) yes
+    } else {
+        component hull configure -width $w -height $h
+        pack propagate $itk_component(hull) no
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -height
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::ResultViewer::height {
+    set h [winfo pixels $itk_component(hull) $itk_option(-height)]
+    set w [winfo pixels $itk_component(hull) $itk_option(-width)]
+    if {$w == 0 || $h == 0} {
+        pack propagate $itk_component(hull) yes
+    } else {
+        component hull configure -width $w -height $h
+        pack propagate $itk_component(hull) no
+    }
+}
Index: /tags/1.6.0/gui/scripts/scroller.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/scroller.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/scroller.tcl	(revision 6168)
@@ -0,0 +1,434 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: scroller - adds scrollbars to any standard Tk widget
+#
+#  This widget provides automatic scrollbars for any standard Tk
+#  widget.  The scrolled widget should be created as a child of this
+#  widget, and is connected by calling the "contents" method.  Calling
+#  contents with the keyword "frame" creates an internal frame that
+#  allows any collection of widgets to be scrolled.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Scroller.xScrollMode off widgetDefault
+option add *Scroller.yScrollMode auto widgetDefault
+option add *Scroller.xScrollSide bottom widgetDefault
+option add *Scroller.yScrollSide right widgetDefault
+option add *Scroller.width 0 widgetDefault
+option add *Scroller.height 0 widgetDefault
+
+itcl::class Rappture::Scroller {
+    inherit itk::Widget
+
+    itk_option define -xscrollmode xScrollMode XScrollMode ""
+    itk_option define -yscrollmode yScrollMode YScrollMode ""
+    itk_option define -xscrollside xScrollSide XScrollSide ""
+    itk_option define -yscrollside yScrollSide YScrollSide ""
+    itk_option define -width width Width 0
+    itk_option define -height height Height 0
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method contents {{frame "!@#query"}}
+
+    protected method _widget2sbar {which args}
+    protected method _fixsbar {which {state ""}}
+    protected method _fixframe {which}
+    protected method _fixsize {}
+    protected method _lock {option which}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+    private variable _contents ""   ;# widget being controlled
+    private variable _frame ""      ;# for "contents frame" calls
+    private variable _lock          ;# for _lock on x/y scrollbar
+}
+
+itk::usual Scroller {
+    keep -background -activebackground -activerelief
+    keep -cursor
+    keep -highlightcolor -highlightthickness
+    keep -troughcolor
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Scroller::constructor {args} {
+    array set _lock { x 0 y 0 }
+
+    Rappture::dispatcher _dispatcher
+
+    $_dispatcher register !fixframe-inner
+    $_dispatcher dispatch $this !fixframe-inner \
+        "[itcl::code $this _fixframe inner]; list"
+
+    $_dispatcher register !fixframe-outer
+    $_dispatcher dispatch $this !fixframe-outer \
+        "[itcl::code $this _fixframe outer]; list"
+
+    $_dispatcher register !fixsize
+    $_dispatcher dispatch $this !fixsize \
+        "[itcl::code $this _fixsize]; list"
+
+    itk_component add xsbar {
+        scrollbar $itk_interior.xsbar -orient horizontal
+    }
+    itk_component add ysbar {
+        scrollbar $itk_interior.ysbar -orient vertical
+    }
+
+    # we don't fix scrollbars when window is withdrawn, so
+    # fix them whenever a window pops up
+    bind $itk_component(hull) <Map> "
+        [itcl::code $this _fixsbar x]
+        [itcl::code $this _fixsbar y]
+    "
+
+    grid rowconfigure $itk_component(hull) 1 -weight 1
+    grid columnconfigure $itk_component(hull) 1 -weight 1
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Scroller::destructor {} {
+    after cancel [itcl::code $this _lock reset x]
+    after cancel [itcl::code $this _lock reset y]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: contents ?<widget>|frame?
+#
+# Used to get/set the widget that is being scrolled.  With no args,
+# it returns the name of the widget currently connected to the
+# scrollbars.  Otherwise, the argument specifies a widget to be
+# controlled by the scrollbar.  If the argument is the keyword
+# "frame", then this method creates its own internal frame, which
+# can be packed with other widgets, and returns its name.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Scroller::contents {{widget "!@#query"}} {
+    if {$widget == "!@#query"} {
+        if {$_contents == $_frame} {
+            return $_frame.f
+        }
+        return $_contents
+    }
+
+    #
+    # If the widget is "", then unhook any existing widget.
+    #
+    if {$widget == ""} {
+        if {$_contents != ""} {
+            $_contents configure -xscrollcommand "" -yscrollcommand ""
+            grid forget $_contents
+        }
+        $itk_component(xsbar) configure -command ""
+        $itk_component(ysbar) configure -command ""
+        set _contents ""
+
+        return ""
+    }
+
+    #
+    # For the "frame" keyword, create a canvas that can be scrolled
+    # and return it as the frame being scrolled.
+    #
+    if {$widget == "frame"} {
+        if {$_frame == ""} {
+            set _frame [canvas $itk_component(hull).ifr -highlightthickness 0]
+            frame $_frame.f
+            $_frame create window 0 0 -anchor nw -window $_frame.f -tags frame
+            bind $_frame.f <Map> \
+                [itcl::code $_dispatcher event -idle !fixframe-inner]
+            bind $_frame.f <Configure> \
+                [itcl::code $_dispatcher event -idle !fixframe-inner]
+            bind $_frame <Configure> \
+                [itcl::code $_dispatcher event -idle !fixframe-outer]
+        }
+        set widget $_frame
+    }
+
+    #
+    # Plug the specified widget into the scrollbars for this widget.
+    #
+    contents ""
+    grid $widget -row 1 -column 1 -sticky nsew
+    $widget configure \
+        -xscrollcommand [itcl::code $this _widget2sbar x] \
+        -yscrollcommand [itcl::code $this _widget2sbar y]
+
+    $itk_component(xsbar) configure -command [list $widget xview]
+    $itk_component(ysbar) configure -command [list $widget yview]
+    set _contents $widget
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        bind ${widget} <4> { %W yview scroll -5 units }
+        bind ${widget} <5> { %W yview scroll 5 units }
+    } else {
+        bind ${widget} <MouseWheel> {
+            %W yview scroll [expr {- (%D / 120) * 4}] units
+        }
+    }
+    if {$widget == $_frame} {
+        return $_frame.f
+    }
+    return $widget
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _widget2sbar <which> ?args...?
+#
+# Used internally to handle communication from the widget to the
+# scrollbar.  If the scrollbars are in "auto" mode, this provides a
+# hook where we can fix their display.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Scroller::_widget2sbar {which args} {
+    if {$itk_option(-xscrollmode) == "auto"} {
+        _fixsbar x
+    }
+    if {$itk_option(-yscrollmode) == "auto"} {
+        _fixsbar y
+    }
+    eval $itk_component(${which}sbar) set $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixsbar <which> ?<state>?
+#
+# Used internally to show/hide the scrollbar in the <which> direction,
+# which is either "x" or "y".  If the scrollbar is "on", then it is
+# always displayed.  If "off", never displayed.  And if "auto", then
+# it is displayed if needed for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Scroller::_fixsbar {which {state ""}} {
+    if {![winfo ismapped $itk_component(hull)]} {
+        #
+        # If we're not on yet screen, bail out!  This keeps bad
+        # numbers (from an empty or partially constructed widget)
+        # from prematurely influencing the scrollbar.
+        #
+        return
+    }
+
+    if {$state == ""} {
+        switch -- [string tolower $itk_option(-${which}scrollmode)] {
+            on - 1 - true - yes  { set state 1 }
+            off - 0 - false - no { set state 0 }
+            auto {
+                set state 0
+                if {$_contents != ""} {
+                    set lims [$_contents ${which}view]
+                    if {[lindex $lims 0] != 0 || [lindex $lims 1] != 1} {
+                        set state 1
+                    }
+                }
+            }
+            default {
+                set state 0
+            }
+        }
+    }
+
+    set row 0
+    set col 0
+    switch -- [string tolower $itk_option(-${which}scrollside)] {
+        top {
+            set row 0
+            set col 1
+        }
+        bottom {
+            set row 2
+            set col 1
+        }
+        left {
+            set row 1
+            set col 0
+        }
+        right {
+            set row 1
+            set col 2
+        }
+        default {
+            set row 0
+            set col 0
+        }
+    }
+
+    # show/hide the scrollbar depending on the desired state
+    switch -- $which {
+        x {
+            if {$state} {
+                if {$col == 1} {
+                    grid $itk_component(xsbar) -row $row -column $col -sticky ew
+                }
+            } else {
+                # handle the lock on the "forget" side, so scrollbar
+                # tends to appear, rather than disappear
+                if {![_lock active x]} {
+                    grid forget $itk_component(xsbar)
+                    _lock set x
+                }
+            }
+        }
+        y {
+            if {$state} {
+                if {$row == 1} {
+                    grid $itk_component(ysbar) -row $row -column $col -sticky ns
+                }
+            } else {
+                # handle the lock on the "forget" side, so scrollbar
+                # tends to appear, rather than disappear
+                if {![_lock active y]} {
+                    grid forget $itk_component(ysbar)
+                    _lock set y
+                }
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixframe <which>
+#
+# Invoked automatically whenever the canvas representing the "frame"
+# keyword is resized.  Updates the scrolling limits for the canvas
+# to the new size.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Scroller::_fixframe {which} {
+    switch -- $which {
+        inner {
+            set w [winfo reqwidth $_frame.f]
+            set h [winfo reqheight $_frame.f]
+            $_frame configure -scrollregion [list 0 0 $w $h]
+            _fixframe outer
+            _lock reset x
+            _lock reset y
+            $_dispatcher event -idle !fixsize
+        }
+        outer {
+            if {[winfo width $_frame] > [winfo reqwidth $_frame.f]} {
+                $_frame itemconfigure frame -width [winfo width $_frame]
+            } else {
+                $_frame itemconfigure frame -width 0
+            }
+            if {[winfo height $_frame] > [winfo reqheight $_frame.f]} {
+                $_frame itemconfigure frame -height [winfo height $_frame]
+            } else {
+                $_frame itemconfigure frame -height 0
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixsize
+#
+# Used internally to update the size options for the widget
+# whenever the -width/-height options change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Scroller::_fixsize {} {
+    if {$itk_option(-width) == "0" && $itk_option(-height) == "0"} {
+        # for default size, let the frame being controlled set the size
+        grid propagate $itk_component(hull) yes
+        if {$_frame == "$itk_component(hull).ifr"} {
+            set w [expr {[winfo reqwidth $_frame.f]+2}]
+            set h [winfo reqheight $_frame.f]
+            $_frame configure -width $w -height $h
+        }
+    } else {
+        # for specific size, set the overall size of the widget
+        grid propagate $itk_component(hull) no
+        set w $itk_option(-width); if {$w == "0"} { set w 1i }
+        set h $itk_option(-height); if {$h == "0"} { set h 1i }
+        component hull configure -width $w -height $h
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _lock set <which>
+# USAGE: _lock reset <which>
+# USAGE: _lock active <which>
+#
+# Used internally to lock out vibrations when the x-scrollbar pops
+# into view.  When the x-scrollbar pops up, it reduces the space
+# available for the widget.  For some widgets (e.g., text widget)
+# this changes the view.  A long line may fall off screen, and the
+# x-scrollbar will no longer be necessary.  If the x-scrollbar just
+# appeared, then its lock is active, signalling that it should stay
+# up.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Scroller::_lock {option which} {
+    switch -- $option {
+        set {
+            set _lock($which) 1
+            after cancel [itcl::code $this _lock reset $which]
+            after 50 [itcl::code $this _lock reset $which]
+        }
+        reset {
+            set _lock($which) 0
+        }
+        active {
+            return $_lock($which)
+        }
+        default {
+            error "bad option \"$option\": should be set, reset, active"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -xscrollmode
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Scroller::xscrollmode {
+    _fixsbar x
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -yscrollmode
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Scroller::yscrollmode {
+    _fixsbar y
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -xscrollside
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Scroller::xscrollside {
+    _fixsbar x
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -yscrollside
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Scroller::yscrollside {
+    _fixsbar y
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -width
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Scroller::width {
+    # check for proper value
+    winfo pixels $itk_component(hull) $itk_option(-width)
+
+    $_dispatcher event -idle !fixsize
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -height
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Scroller::height {
+    # check for proper value
+    winfo pixels $itk_component(hull) $itk_option(-height)
+
+    $_dispatcher event -idle !fixsize
+}
Index: /tags/1.6.0/gui/scripts/sequence.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/sequence.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/sequence.tcl	(revision 6168)
@@ -0,0 +1,265 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: sequence - represents a sequence of output results
+#
+#  This object represents a sequence of other output results.  Each
+#  element in the sequence has an index and a value.  All values in
+#  the sequence must have the same type, but they can all be curves,
+#  images, or other results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+package require BLT
+
+namespace eval Rappture { # forward declaration }
+
+itcl::class Rappture::Sequence {
+    constructor {xmlobj path} { # defined below }
+    destructor { # defined below }
+
+    public method value {pos}
+    public method label {pos}
+    public method index {pos}
+    public method size {}
+    public method hints {{keyword ""}}
+
+    private variable _xmlobj ""  ;# ref to lib obj with sequence data
+    private variable _dataobjs   ;# maps index => data object
+    private variable _labels     ;# maps index => labels
+    private variable _indices    ;# list of sorted index values
+    private variable _hints      ;# cache of hints stored in XML
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Sequence::constructor {xmlobj path} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be LibraryObj"
+    }
+    set _xmlobj [$xmlobj element -as object $path]
+
+    #
+    # Extract data values from the element definitions.
+    #
+    foreach name [$_xmlobj children -type element] {
+        set index [$xmlobj get $path.$name.index]
+        if {"" == $index} {
+            continue
+        }
+
+        # check for an element about.label stanza
+        set elelabel [$xmlobj get $path.$name.about.label]
+
+        set ctype ""
+        set _dataobjs($index) ""
+        set _labels($index) ""
+        foreach cname [$_xmlobj children $name] {
+            set type [$xmlobj element -as type $path.$name.$cname]
+            switch -- $type {
+                index {
+                    # ignore this
+                    continue
+                }
+                about {
+                    # ignore this
+                    continue
+                }
+                curve {
+                    set obj [Rappture::Curve ::\#auto $xmlobj $path.$name.$cname]
+                }
+                drawing {
+                    set obj [Rappture::Drawing ::\#auto $xmlobj $path.$name.$cname]
+                }
+                datatable {
+                    set obj [Rappture::DataTable ::\#auto $xmlobj $path.$name.$cname]
+                }
+                histogram {
+                    set obj [Rappture::Histogram ::\#auto $xmlobj $path.$name.$cname]
+                }
+                field {
+                    set obj [Rappture::Field ::\#auto $xmlobj $path.$name.$cname]
+                }
+                image {
+                    set obj [Rappture::Image ::\#auto $xmlobj $path.$name.$cname]
+                }
+                structure {
+                    # extract unique result set prefix
+                    scan $xmlobj "::libraryObj%d" rset
+
+                    # object rooted at x.sequence(y).element(z).structure
+                    set obj [$xmlobj element -as object $path.$name.$cname]
+
+                    # scene id (sequence id)
+                    set sceneid [$xmlobj element -as id $path]-$rset
+
+                    # sequence/element/frame number starting at 1
+                    set frameid [expr [$xmlobj element -as id $path.$name] + 1]
+
+                    # only supporting one molecule per structure at the moment
+                    # otherwise should go through all children that are molecules
+                    # and insert scene/frame data.
+                    $obj put "components.molecule.state" $frameid
+                    $obj put "components.molecule.model" $sceneid
+                }
+                default {
+                    error "don't know how to handle sequences of $type"
+                }
+            }
+            if {"" == $ctype} {
+                set ctype $type
+            }
+            if {$type == $ctype} {
+                lappend _dataobjs($index) $obj
+                set _labels($index) $elelabel
+            } else {
+                itcl::delete object $obj
+            }
+        }
+    }
+    #
+    # Generate a list of sorted index values.
+    #
+    set units [$xmlobj get $path.index.units]
+    if {"" != $units} {
+        # build up a list:  {10m 10} {10cm 0.1} ...
+        set vals ""
+        foreach key [array names _dataobjs] {
+            lappend vals [list $key [Rappture::Units::convert $key \
+                -context $units -to $units -units off]]
+        }
+
+        # sort according to raw values; store both values
+        set _indices [lsort -real -index 1 $vals]
+    } else {
+        # are the indices integers, reals, or strings?
+        set how -integer
+        foreach key [array names _dataobjs] {
+            if {[regexp {^[0-9]+[eE][-+]?[0-9]+|([0-9]+)?\.[0-9]+([eE][-+]?[0-9]+)?$} $key]} {
+                set how -real
+                break
+            } elseif {![regexp {^[0-9]+$} $key]} {
+                set how -dictionary
+                break
+            }
+        }
+
+        # keep a list of indices sorted in order
+        set _indices ""
+        if {[string equal $how -dictionary]} {
+            set n 0
+            foreach val [lsort $how [array names _dataobjs]] {
+                lappend _indices [list $val $n]
+                incr n
+            }
+        } else {
+            foreach val [lsort $how [array names _dataobjs]] {
+                lappend _indices [list $val $val]
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Sequence::destructor {} {
+    foreach key [array names _dataobjs] {
+        eval itcl::delete object $_dataobjs($key)
+    }
+    itcl::delete object $_xmlobj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value <pos>
+#
+# Returns the value for the element as position <pos> in the
+# list of all elements.  Here, <pos> runs from 0 to size-1.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Sequence::value {pos} {
+    set i [lindex [lindex $_indices $pos] 0]
+
+    # FIXME:  This is a bandaid on what appears to be a timing problem.
+    # This "dataobjs" method is now called before any sequence frames
+    # have been added.
+    if { ![info exists _dataobjs($i)] } {
+        return ""
+    }
+
+    return $_dataobjs($i)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label <pos>
+#
+# Returns the label for the element as position <pos> in the
+# list of all elements.  Here, <pos> runs from 0 to size-1.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Sequence::label {pos} {
+    set i [lindex [lindex $_indices $pos] 0]
+
+    # FIXME:  This is a bandaid on what appears to be a timing problem.
+    # This "label" method is now called before any sequence frames
+    # have been added.
+    if { ![info exists _labels($i)] } {
+        return ""
+    }
+
+    return $_labels($i)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: index <pos>
+#
+# Returns information about the index value for the element at
+# position <pos> in the list of all elements.  The return value is
+# a list of two elements:  {string rawNumberValue}.  Here, <pos>
+# runs from 0 to size-1.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Sequence::index {pos} {
+    return [lindex $_indices $pos]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: size
+#
+# Returns the number of elements in this sequence.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Sequence::size {} {
+    return [llength $_indices]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about showing
+# this image.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Sequence::hints {{keyword ""}} {
+    if {![info exists _hints]} {
+        foreach {key path} {
+            label        about.label
+            indexlabel   index.label
+            indexdesc    index.description
+        } {
+            set str [$_xmlobj get $path]
+            if {"" != $str} {
+                set _hints($key) $str
+            }
+        }
+    }
+
+    if {$keyword != ""} {
+        if {[info exists _hints($keyword)]} {
+            return $_hints($keyword)
+        }
+        return ""
+    }
+    return [array get _hints]
+}
Index: /tags/1.6.0/gui/scripts/sequencedial.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/sequencedial.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/sequencedial.tcl	(revision 6168)
@@ -0,0 +1,844 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: Sequencedial - selector, like the dial on a car radio
+#
+#  This widget looks like the dial on an old-fashioned car radio.
+#  It draws a series of values along an axis, and allows a selector
+#  to move back and forth to select the values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *SequenceDial.thickness 10 widgetDefault
+option add *SequenceDial.length 2i widgetDefault
+option add *SequenceDial.knobImage knob widgetDefault
+option add *SequenceDial.knobPosition n@middle widgetDefault
+option add *SequenceDial.dialOutlineColor black widgetDefault
+option add *SequenceDial.dialFillColor white widgetDefault
+option add *SequenceDial.lineColor gray widgetDefault
+option add *SequenceDial.activeLineColor black widgetDefault
+option add *SequenceDial.padding 0 widgetDefault
+option add *SequenceDial.valueWidth 10 widgetDefault
+option add *SequenceDial.valuePadding 0.1 widgetDefault
+option add *SequenceDial.foreground black widgetDefault
+option add *SequenceDial.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::SequenceDial {
+    inherit itk::Widget
+
+    itk_option define -min min Min ""
+    itk_option define -max max Max ""
+    itk_option define -variable variable Variable ""
+
+    itk_option define -thickness thickness Thickness 0
+    itk_option define -length length Length 0
+    itk_option define -padding padding Padding 0
+
+    itk_option define -foreground foreground Foreground "black"
+    itk_option define -dialoutlinecolor dialOutlineColor Color "black"
+    itk_option define -dialfillcolor dialFillColor Color "white"
+    itk_option define -dialprogresscolor dialProgressColor Color ""
+    itk_option define -linecolor lineColor Color "black"
+    itk_option define -activelinecolor activeLineColor Color "black"
+    itk_option define -knobimage knobImage KnobImage ""
+    itk_option define -knobposition knobPosition KnobPosition ""
+
+    itk_option define -font font Font ""
+    itk_option define -valuewidth valueWidth ValueWidth 0
+    itk_option define -valuepadding valuePadding ValuePadding 0
+
+    itk_option define -interactcommand interactCommand InteractCommand ""
+
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method add {label {value ""}}
+    public method clear {}
+    public method get {args}
+    public method current {args}
+    public method color {value}
+
+    protected method _setCurrent {val}
+    protected method _redraw {}
+    protected method _click {x y}
+    protected method _navigate {offset}
+    protected method _limits {}
+    protected method _findLabel {str}
+    protected method _fixSize {}
+    protected method _fixValue {args}
+    protected method _doInteract {}
+
+    private method EventuallyRedraw {}
+    private variable _redrawPending 0
+    private variable _afterId -1
+    private variable _values ""       ;# list of all values on the dial
+    private variable _val2label       ;# maps value => string label(s)
+    private variable _current ""      ;# current value (where pointer is)
+    private variable _variable ""     ;# variable associated with -variable
+
+    private variable _knob ""         ;# image for knob
+    private variable _spectrum ""     ;# width allocated for values
+    private variable _activecolor ""  ;# width allocated for values
+    private variable _vwidth 0        ;# width allocated for values
+}
+
+itk::usual SequenceDial {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::constructor {args} {
+    itk_component add dial {
+        canvas $itk_interior.dial
+    }
+    pack $itk_component(dial) -expand yes -fill both
+    bind $itk_component(dial) <Configure> [itcl::code $this EventuallyRedraw]
+
+#    bind $itk_component(dial) <ButtonPress-1> [itcl::code $this _click %x %y]
+    bind $itk_component(dial) <B1-Motion> [itcl::code $this _click %x %y]
+#    bind $itk_component(dial) <ButtonRelease-1> [itcl::code $this _click %x %y]
+
+    bind $itk_component(hull) <KeyPress-Left> [itcl::code $this _navigate -1]
+    bind $itk_component(hull) <KeyPress-Right> [itcl::code $this _navigate 1]
+
+    eval itk_initialize $args
+
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::destructor {} {
+    configure -variable ""  ;# remove variable trace
+    after cancel $_afterId
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <label> ?<value>?
+#
+# Clients use this to add new values to the dial.  Values are always
+# sorted in order along the dial.  If the value is not specified,
+# then it is created automatically based on the number of elements
+# on the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::add {label {value ""}} {
+    if {"" == $value} {
+        set value [llength $_values]
+    }
+
+    # Add this value if we've never see it before
+    if {[lsearch -real $_values $value] < 0} {
+        lappend _values $value
+        set _values [lsort -real $_values]
+    }
+
+    # Keep all equivalent strings for this value.
+    # That way, we can later select either "1e18" or "1.0e+18"
+    lappend _val2label($value) $label
+
+    if {"" == $_current} {
+        _setCurrent $value
+    }
+    EventuallyRedraw
+}
+
+itcl::body Rappture::SequenceDial::EventuallyRedraw {} {
+    if { !$_redrawPending } {
+        set _afterId [after 150 [itcl::code $this _redraw]]
+        event generate $itk_component(hull) <<Value>>
+        set _resizePending 1
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: clear
+#
+# Clients use this to remove all existing values from the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::clear {} {
+    set _values ""
+    _setCurrent ""
+    catch {unset _val2label}
+
+    EventuallyRedraw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-format what? ?current|@index?
+#
+# Clients use this to query values within this radiodial.  With no
+# args, it returns a list of all values stored in the widget.  The
+# "current" arg requests only the current value on the radiodial.
+# The @index syntax can be used to request a particular value at
+# an index within the list of values.
+#
+# By default, this method returns the label for each value.  The
+# format option can be used to request the label, the value, or
+# both.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::get {args} {
+    Rappture::getopts args params {
+        value -format "label"
+    }
+    if {[llength $args] > 1} {
+        error "wrong # args: should be \"get ?-format f? ?current|@index\""
+    }
+    set index [lindex $args 0]
+    if {"" == $index} {
+        set ilist ""
+        for {set i 0} {$i < [llength $_values]} {incr i} {
+            lappend ilist $i
+        }
+    } elseif {"current" == $index} {
+        set ilist [lsearch -exact $_values $_current]
+        if {$ilist < 0} {
+            set ilist ""
+        }
+    } elseif {[regexp {^@([0-9]+|end)$} $index match i]} {
+        set ilist $i
+    }
+    if {[llength $ilist] == 1} {
+        set op set
+    } else {
+        set op lappend
+    }
+
+    set rlist ""
+    foreach i $ilist {
+        switch -- $params(-format) {
+            label {
+                set v [lindex $_values $i]
+                $op rlist [lindex $_val2label($v) 0]
+            }
+            value {
+                $op rlist [lindex $_values $i]
+            }
+            position {
+                foreach {min max} [_limits] break
+                set v [lindex $_values $i]
+                set frac [expr {double($v-$min)/($max-$min)}]
+                $op rlist $frac
+            }
+            all {
+                set v [lindex $_values $i]
+                foreach {min max} [_limits] break
+                set frac [expr {double($v-$min)/($max-$min)}]
+                set l [lindex $_val2label($v) 0]
+                $op rlist [list $l $v $frac]
+            }
+            default {
+                error "bad value \"$v\": should be label, value, position, all"
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: current ?<newval>?
+#
+# Clients use this to get/set the current value for this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::current {args} {
+    if {[llength $args] == 0} {
+        return $_current
+    } elseif {[llength $args] == 1} {
+        set newval [lindex $args 0]
+        set n [_findLabel $newval]
+
+        # Don't use expr (?:) because it evaluates the resulting string.
+        # For example, it changes -0.020 to -0.02.
+        if { $n >= 0 } {
+            set rawval [lindex $_values $n]
+        } else {
+            set rawval ""
+        }
+        _setCurrent $rawval
+
+        EventuallyRedraw
+        event generate $itk_component(hull) <<Value>>
+
+        return $_current
+    }
+    error "wrong # args: should be \"current ?newval?\""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: color <value>
+#
+# Clients use this to query the color associated with a <value>
+# along the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::color {value} {
+    _findLabel $value  ;# make sure this label is recognized
+
+    if {"" != $_spectrum} {
+        foreach {min max} [_limits] break
+        set frac [expr {double($value-$min)/($max-$min)}]
+        set color [$_spectrum get $frac]
+    } else {
+        if {$value == $_current} {
+            set color $_activecolor
+        } else {
+            set color $itk_option(-linecolor)
+        }
+    }
+    return $color
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _setCurrent <value>
+#
+# Called automatically whenever the widget changes size to redraw
+# all elements within it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::_setCurrent {value} {
+    set _current $value
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        if {[info exists _val2label($value)]} {
+            set var [lindex $_val2label($value) 0]
+        } else {
+            set var $value
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Called automatically whenever the widget changes size to redraw
+# all elements within it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::_redraw {} {
+
+    set _redrawPending 0
+
+    set c $itk_component(dial)
+    $c delete all
+
+    set fg $itk_option(-foreground)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set p [winfo pixels $c $itk_option(-padding)]
+    set t [expr {$itk_option(-thickness)+1}]
+    set y1 [expr {$h-1}]
+
+    if {"" != $_knob} {
+        set kw [image width $_knob]
+        set kh [image height $_knob]
+
+        switch -- $itk_option(-knobposition) {
+            n@top - nw@top - ne@top {
+                set extra [expr {$t-$kh}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$h-$extra-1}]
+            }
+            n@middle - nw@middle - ne@middle {
+                set extra [expr {int(ceil($kh-0.5*$t))}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$h-$extra-1}]
+            }
+            n@bottom - nw@bottom - ne@bottom {
+                set y1 [expr {$h-$kh-1}]
+            }
+
+            e@top - w@top - center@top -
+            e@bottom - w@bottom - center@bottom {
+                set extra [expr {int(ceil(0.5*$kh))}]
+                set y1 [expr {$h-$extra-1}]
+            }
+            e@middle - w@middle - center@middle {
+                set extra [expr {int(ceil(0.5*($kh-$t)))}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$h-$extra-1}]
+            }
+
+            s@top - sw@top - se@top -
+            s@middle - sw@middle - se@middle -
+            s@bottom - sw@bottom - se@bottom {
+                set y1 [expr {$h-2}]
+            }
+        }
+    }
+    set y0 [expr {$y1-$t}]
+    set x0 [expr {$p+1}]
+    set x1 [expr {$w-$_vwidth-$p-4}]
+    foreach {min max} [_limits] break
+
+    # draw the background rectangle
+    $c create rectangle $x0 $y0 $x1 $y1 \
+        -outline $itk_option(-dialoutlinecolor) \
+        -fill $itk_option(-dialfillcolor) -tags "range"
+
+    # draw the optional progress bar, from start to current
+    if {"" != $itk_option(-dialprogresscolor)
+          && [llength $_values] > 0 && "" != $_current} {
+        if {$max != $min} {
+            set frac [expr {double($_current-$min)/($max-$min)}]
+        } else {
+            set frac 0.
+        }
+        set xx1 [expr {$frac*($x1-$x0) + $x0}]
+        $c create rectangle [expr {$x0+1}] [expr {$y0+3}] $xx1 [expr {$y1-2}] \
+            -outline "" -fill $itk_option(-dialprogresscolor)
+    }
+
+    $c create rectangle $x0 $y0 $x1 $y1 -outline "" -fill "" -tags "range"
+
+    # draw lines for all values
+    if {$max > $min} {
+        foreach v $_values {
+            set frac [expr {double($v-$min)/($max-$min)}]
+            if {"" != $_spectrum} {
+                set color [$_spectrum get $frac]
+            } else {
+                if {$v == $_current} {
+                    set color $_activecolor
+                } else {
+                    set color $itk_option(-linecolor)
+                }
+            }
+            set thick [expr {($v == $_current) ? 3 : 1}]
+
+            if {"" != $color} {
+                set x [expr {$frac*($x1-$x0) + $x0}]
+                $c create line $x [expr {$y0+1}] $x $y1 \
+                    -fill $color -width $thick
+            }
+        }
+
+        if {"" != $_current} {
+            set x [expr {double($_current-$min)/($max-$min)*($x1-$x0) + $x0}]
+            regexp {([nsew]+|center)@} $itk_option(-knobposition) match anchor
+            switch -glob -- $itk_option(-knobposition) {
+                *@top    { set kpos $y0 }
+                *@middle { set kpos [expr {int(ceil(0.5*($y1+$y0)))}] }
+                *@bottom { set kpos $y1 }
+            }
+            $c create image $x $kpos -anchor $anchor -image $_knob -tags "knob"
+        }
+    }
+
+    $c bind range <ButtonPress-1> [itcl::code $this _click %x %y]
+    $c bind range <ButtonRelease-1> [itcl::code $this _click %x %y]
+
+    # Only need release event for knob.
+    $c bind knob <ButtonRelease-1> [itcl::code $this _click %x %y]
+
+    # if the -valuewidth is > 0, then make room for the value
+    set vw $itk_option(-valuewidth)
+    if {$vw > 0 && "" != $_current} {
+        set str [lindex $_val2label($_current) 0]
+        if {[string length $str] >= $vw} {
+            set str "[string range $str 0 [expr {$vw-3}]]..."
+        }
+
+        set dy [expr {([font metrics $itk_option(-font) -linespace]
+                        - [font metrics $itk_option(-font) -ascent])/2}]
+
+        set id [$c create text [expr {$x1+4}] [expr {($y1+$y0)/2+$dy}] \
+            -anchor w -text $str -font $itk_option(-font) -foreground $fg]
+        foreach {x0 y0 x1 y1} [$c bbox $id] break
+        set x0 [expr {$x0 + 10}]
+
+        # set up a tooltip so you can mouse over truncated values
+        Rappture::Tooltip::text $c [lindex $_val2label($_current) 0]
+        $c bind $id <Enter> \
+            [list ::Rappture::Tooltip::tooltip pending %W +$x0,$y1]
+        $c bind $id <Leave> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+        $c bind $id <ButtonPress> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+        $c bind $id <KeyPress> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _click <x> <y>
+#
+# Called automatically whenever the user clicks or drags on the widget
+# to select a value.  Moves the current value to the one nearest the
+# click point.  If the value actually changes, it generates a <<Value>>
+# event to notify clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::_click {x y} {
+    set c $itk_component(dial)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set x0 1
+    set x1 [expr {$w-$_vwidth-4}]
+
+    focus $itk_component(hull)
+
+    # draw lines for all values
+    foreach {min max} [_limits] break
+    if {$max > $min && $x >= $x0 && $x <= $x1} {
+        set dmin $w
+        set xnearest 0
+        set vnearest ""
+        foreach v $_values {
+            set xv [expr {double($v-$min)/($max-$min)*($x1-$x0) + $x0}]
+            if {abs($xv-$x) < $dmin} {
+                set dmin [expr {abs($xv-$x)}]
+                set xnearest $xv
+                set vnearest $v
+            }
+        }
+
+        if {$vnearest != $_current} {
+            _setCurrent $vnearest
+            EventuallyRedraw
+
+            #event generate $itk_component(hull) <<Value>>
+            _doInteract
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _navigate <offset>
+#
+# Called automatically whenever the user presses left/right keys
+# to nudge the current value left or right by some <offset>.  If the
+# value actually changes, it generates a <<Value>> event to notify
+# clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::_navigate {offset} {
+    set index [lsearch -exact $_values $_current]
+    if {$index >= 0} {
+        incr index $offset
+        if {$index >= [llength $_values]} {
+            set index [expr {[llength $_values]-1}]
+        } elseif {$index < 0} {
+            set index 0
+        }
+
+        set newval [lindex $_values $index]
+        if {$newval != $_current} {
+            _setCurrent $newval
+            EventuallyRedraw
+
+            event generate $itk_component(hull) <<Value>>
+            _doInteract
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _limits
+#
+# Used internally to compute the overall min/max limits for the
+# radio dial.  Returns {min max}, representing the end values for
+# the scale.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::_limits {} {
+    if {[llength $_values] == 0} {
+        set min 0
+        set max 0
+    } else {
+        set min [lindex $_values 0]
+        set max $min
+        foreach v [lrange $_values 1 end] {
+            if {$v < $min} { set min $v }
+            if {$v > $max} { set max $v }
+        }
+        set del [expr {$max-$min}]
+        set min [expr {$min-$itk_option(-valuepadding)*$del}]
+        set max [expr {$max+$itk_option(-valuepadding)*$del}]
+    }
+
+    if {"" != $itk_option(-min)} {
+        set min $itk_option(-min)
+    }
+    if {"" != $itk_option(-max)} {
+        set max $itk_option(-max)
+    }
+    return [list $min $max]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _findLabel <string>
+#
+# Used internally to search for the given <string> label among the
+# known values.  Returns an index into the _values list, or throws
+# an error if the string is not recognized.  Given the null string,
+# it returns -1, indicating that the value is not in _values, but
+# it is valid.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::_findLabel {str} {
+    if {"" == $str} {
+        return -1
+    }
+    for {set nv 0} {$nv < [llength $_values]} {incr nv} {
+        set v [lindex $_values $nv]
+        if {[lsearch -exact $_val2label($v) $str] >= 0} {
+            return $nv
+        }
+    }
+
+    # didn't match -- build a return string of possible values
+    set labels ""
+    foreach vlist $_values {
+        foreach v $vlist {
+            lappend labels "\"$_val2label($v)\""
+        }
+    }
+    error "bad value \"$str\": should be one of [join $labels ,]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+#
+# Used internally to compute the overall size of the widget based
+# on the -thickness and -length options.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::_fixSize {} {
+    set h [winfo pixels $itk_component(hull) $itk_option(-thickness)]
+
+    if {"" != $_knob} {
+        set kh [image height $_knob]
+
+        switch -- $itk_option(-knobposition) {
+            n@top - nw@top - ne@top -
+            s@bottom - sw@bottom - se@bottom {
+                if {$kh > $h} { set h $kh }
+            }
+            n@middle - nw@middle - ne@middle -
+            s@middle - sw@middle - se@middle {
+                set h [expr {int(ceil(0.5*$h + $kh))}]
+            }
+            n@bottom - nw@bottom - ne@bottom -
+            s@top - sw@top - se@top {
+                set h [expr {$h + $kh}]
+            }
+            e@middle - w@middle - center@middle {
+                set h [expr {(($h > $kh) ? $h : $kh) + 1}]
+            }
+            n@middle - ne@middle - nw@middle -
+            s@middle - se@middle - sw@middle {
+                set extra [expr {int(ceil($kh-0.5*$h))}]
+                if {$extra < 0} { set extra 0 }
+                set h [expr {$h+$extra}]
+            }
+        }
+    }
+    incr h 1
+
+    set w [winfo pixels $itk_component(hull) $itk_option(-length)]
+
+    # if the -valuewidth is > 0, then make room for the value
+    if {$itk_option(-valuewidth) > 0} {
+        set charw [font measure $itk_option(-font) "n"]
+        set _vwidth [expr {$itk_option(-valuewidth)*$charw}]
+        set w [expr {$w+$_vwidth+4}]
+    } else {
+        set _vwidth 0
+    }
+
+    $itk_component(dial) configure -width $w -height $h
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue ?<name1> <name2> <op>?
+#
+# Invoked automatically whenever the -variable associated with this
+# widget is modified.  Copies the value to the current settings for
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::_fixValue {args} {
+    if {"" == $itk_option(-variable)} {
+        return
+    }
+    upvar #0 $itk_option(-variable) var
+
+    set newval $var
+    set n [_findLabel $newval]
+    set rawval [expr {($n >= 0) ? [lindex $_values $n] : ""}]
+    set _current $rawval  ;# set current directly, so we don't trigger again
+
+    EventuallyRedraw
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _doInteract
+#
+# Used internally to call the -interactcommand code whenever the user
+# changes the value of the widget.  This is different from the <<Value>>
+# event, which gets invoked whenever the value changes for any reason,
+# including programmatic changes.  If there is no command code, then
+# this does nothing.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceDial::_doInteract {} {
+    if {[string length $itk_option(-interactcommand)] > 0} {
+        uplevel #0 $itk_option(-interactcommand)
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -thickness
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::thickness {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -length
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::length {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -font
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::font {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -valuewidth
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::valuewidth {
+    if {![string is integer $itk_option(-valuewidth)]} {
+        error "bad value \"$itk_option(-valuewidth)\": should be integer"
+    }
+    _fixSize
+    EventuallyRedraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -foreground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::foreground {
+    EventuallyRedraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialoutlinecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::dialoutlinecolor {
+    EventuallyRedraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialfillcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::dialfillcolor {
+    EventuallyRedraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialprogresscolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::dialprogresscolor {
+    EventuallyRedraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -linecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::linecolor {
+    EventuallyRedraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -activelinecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::activelinecolor {
+    set val $itk_option(-activelinecolor)
+    if {[catch {$val isa ::Rappture::Spectrum} valid] == 0 && $valid} {
+        set _spectrum $val
+        set _activecolor ""
+    } elseif {[catch {winfo rgb $itk_component(hull) $val}] == 0} {
+        set _spectrum ""
+        set _activecolor $val
+    } elseif {"" != $val} {
+        error "bad value \"$val\": should be Spectrum object or color"
+    }
+    EventuallyRedraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -knobimage
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::knobimage {
+    if {[regexp {^image[0-9]+$} $itk_option(-knobimage)]} {
+        set _knob $itk_option(-knobimage)
+    } elseif {"" != $itk_option(-knobimage)} {
+        set _knob [Rappture::icon $itk_option(-knobimage)]
+    } else {
+        set _knob ""
+    }
+    _fixSize
+
+    EventuallyRedraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -knobposition
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::knobposition {
+    if {![regexp {^([nsew]+|center)@(top|middle|bottom)$} $itk_option(-knobposition)]} {
+        error "bad value \"$itk_option(-knobposition)\": should be anchor@top|middle|bottom"
+    }
+    _fixSize
+
+    EventuallyRedraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -padding
+# This adds padding on left/right side of dial background.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::padding {
+    if {[catch {winfo pixels $itk_component(hull) $itk_option(-padding)}]} {
+        error "bad value \"$itk_option(-padding)\": should be size in pixels"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -valuepadding
+# This shifts min/max limits in by a fraction of the overall size.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::valuepadding {
+    if {![string is double $itk_option(-valuepadding)]
+          || $itk_option(-valuepadding) < 0} {
+        error "bad value \"$itk_option(-valuepadding)\": should be >= 0.0"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -variable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SequenceDial::variable {
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace remove variable var write [itcl::code $this _fixValue]
+    }
+
+    set _variable $itk_option(-variable)
+
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace add variable var write [itcl::code $this _fixValue]
+
+        # sync to the current value of this variable
+        if {[info exists var]} {
+            _fixValue
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/sequenceresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/sequenceresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/sequenceresult.tcl	(revision 6168)
@@ -0,0 +1,603 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: sequenceresult - series of results forming an animation
+#
+#  This widget displays a series of results of the same type that are
+#  grouped together and displayed as an animation.  The user can play
+#  through the results, or single step through individual values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *SequenceResult.width 3i widgetDefault
+option add *SequenceResult.height 3i widgetDefault
+option add *SequenceResult.controlBackground gray widgetDefault
+option add *SequenceResult.dialProgressColor #ccccff widgetDefault
+option add *SequenceResult.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *SequenceResult.boldFont \
+    -*-helvetica-bold-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::SequenceResult {
+    inherit itk::Widget
+
+    constructor {args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method download {option args}
+
+    public method play {{why -program}}
+    public method pause {{why -program}}
+    public method goto {{newval ""}}
+
+    protected method _rebuild {args}
+    protected method _playFrame {}
+    protected method _fixValue {}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+    private variable _dlist ""      ;# list of data objects
+    private variable _topmost ""    ;# topmost data object in _dlist
+    private variable _indices ""    ;# list of active indices
+    private variable _pos 0         ;# current position in the animation
+    private variable _afterId ""    ;# current "after" event for play op
+
+    private common _play            ;# options for "play" operation
+    set _play(speed) 60
+    set _play(loop) 0
+}
+
+itk::usual SequenceResult {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild [itcl::code $this _rebuild]
+
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    itk_component add player {
+        frame $itk_interior.player
+    }
+    pack $itk_component(player) -side bottom -fill x
+    grid columnconfigure $itk_component(player) 1 -weight 1
+
+    itk_component add play {
+        button $itk_component(player).play \
+            -bitmap [Rappture::icon play] \
+            -command [itcl::code $this play -user]
+    }
+    grid $itk_component(play) -row 0 -rowspan 2 -column 0 \
+        -ipadx 2 -padx {0 4} -pady 4 -sticky nsew
+
+    itk_component add dial {
+        Rappture::SequenceDial $itk_component(player).dial \
+            -length 10 -valuewidth 0 -valuepadding 0 -padding 6 \
+            -linecolor "" -activelinecolor "" \
+            -knobimage [Rappture::icon knob2] -knobposition center@middle
+    } {
+        usual
+        keep -dialprogresscolor
+    }
+    grid $itk_component(dial) -row 1 -column 1 -sticky ew
+    bind $itk_component(dial) <<Value>> [itcl::code $this _fixValue]
+
+    # use this command for logging "goto" interactions
+    $itk_component(dial) configure -interactcommand \
+        [format {Rappture::Logger::log sequence goto [%s get -format label current]} $itk_component(dial)]
+
+    itk_component add info {
+        frame $itk_component(player).info
+    }
+    grid $itk_component(info) -row 0 -column 1 -columnspan 2 -sticky ew
+
+    itk_component add indexLabel {
+        label $itk_component(info).ilabel
+    } {
+        usual
+        rename -font -boldfont boldFont Font
+    }
+    pack $itk_component(indexLabel) -side left
+
+    itk_component add indexValue {
+        label $itk_component(info).ivalue -padx 0
+    }
+    pack $itk_component(indexValue) -side left
+
+    # add an element.about.label stanza
+    itk_component add eleLabel {
+        label $itk_component(info).elabel -padx 10
+    }
+    pack $itk_component(eleLabel) -side left
+
+    itk_component add options {
+        button $itk_component(player).options -text "Options..." \
+            -padx 1 -pady 0 -relief flat -overrelief raised
+    }
+    grid $itk_component(options) -row 1 -column 2 -sticky sw
+
+    #
+    # Popup option panel
+    #
+    set fn [option get $itk_component(hull) font Font]
+    set bfn [option get $itk_component(hull) boldFont Font]
+
+    Rappture::Balloon $itk_component(hull).popup \
+        -title "Player Settings" -padx 4 -pady 4
+    set inner [$itk_component(hull).popup component inner]
+
+    label $inner.loopl -text "Loop:" -font $bfn
+    grid $inner.loopl -row 0 -column 0 -sticky e
+    radiobutton $inner.loopOn -text "Play once and stop" -font $fn \
+        -variable ::Rappture::SequenceResult::_play(loop) -value 0
+    grid $inner.loopOn -row 0 -column 1 -sticky w
+    radiobutton $inner.loopOff -text "Play continuously" -font $fn \
+        -variable ::Rappture::SequenceResult::_play(loop) -value 1
+    grid $inner.loopOff -row 1 -column 1 -sticky w
+    grid rowconfigure $inner 2 -minsize 8
+
+    label $inner.speedl -text "Speed:" -font $bfn
+    grid $inner.speedl -row 3 -column 0 -sticky e
+    frame $inner.speed
+    grid $inner.speed -row 3 -column 1 -sticky ew
+    label $inner.speed.slowl -text "Slower" -font $fn
+    pack $inner.speed.slowl -side left
+    ::scale $inner.speed.value -from 100 -to 1 \
+        -showvalue 0 -orient horizontal \
+        -variable ::Rappture::SequenceResult::_play(speed)
+    pack $inner.speed.value -side left
+    label $inner.speed.fastl -text "Faster" -font $fn
+    pack $inner.speed.fastl -side left
+
+    $itk_component(options) configure -command \
+        [list $itk_component(hull).popup activate $itk_component(options) above]
+
+    #
+    # Main viewer
+    #
+    itk_component add area {
+        frame $itk_interior.area
+    }
+    pack $itk_component(area) -expand yes -fill both
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::destructor {} {
+    pause  ;# stop any animation that might be playing
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <sequence> ?<settings>?
+#
+# Clients use this to add a data sequence to the viewer.  The optional
+# <settings> are used to configure the display of the data.  Allowed
+# settings are -color, -brightness, -width, -linestyle and -raise.
+# The only setting used here is -raise, which indicates the current
+# object.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::add {dataobj {settings ""}} {
+    array set params {
+        -color auto
+        -brightness 0
+        -width 1
+        -raise 0
+        -linestyle solid
+        -description ""
+        -param ""
+    }
+    array set params $settings
+
+    if {$params(-raise) && "" == $_topmost} {
+        set _topmost $dataobj
+    }
+    lappend _dlist $dataobj
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of data objects being displayed,
+# in order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::get {} {
+    # put the dataobj list in order according to -raise options
+    set dlist $_dlist
+
+    set i [lsearch $_dlist $_topmost]
+    if {$i >= 0} {
+        set dlist [lreplace $dlist $i $i]
+        set dlist [linsert $dlist 0 $_topmost]
+    }
+    return $dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a data object from the viewer.  If no
+# data objects are specified, then all data objects are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::delete {args} {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+    pause
+
+    # delete all specified curves
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if {$pos >= 0} {
+            set _dlist [lreplace $_dlist $pos $pos]
+            set changed 1
+
+            if {$dataobj == $_topmost} {
+                set _topmost ""
+            }
+        }
+    }
+
+    # if anything changed, then rebuild the plot
+    if {$changed} {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<dataobj1> <dataobj2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <dataobj> objects.  This
+# accounts for all data objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all data objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::scale {args} {
+    # do nothing
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::download {option args} {
+    if { ![winfo exists $itk_component(area).viewer] } {
+        return "";      # No data, no viewer, no download.
+    }
+    switch $option {
+        coming {
+            return [$itk_component(area).viewer download coming]
+        }
+        controls {
+            return [eval $itk_component(area).viewer download controls $args]
+        }
+        now {
+            if {0} {
+                # produce a movie of results
+                set rval ""
+                if {"" != $_topmost} {
+                    set max [$_topmost size]
+                    set all ""
+                    for {set i 0} {$i < $max} {incr i} {
+                        set dataobj [lindex [$_topmost value $i] 0]
+                        if {[catch {$dataobj tkimage} imh] == 0} {
+                            lappend all $imh
+                        }
+                    }
+                    if {[llength $all] > 0} {
+                        set delay [expr {int(ceil(pow($_play(speed)/10.0+2,2.0)*15))}]
+                        set rval [eval Rappture::icon::gif_animate $delay $all]
+                    }
+                }
+                if {[string length $rval] > 0} {
+                    return [list .gif $rval]
+                }
+                return ""
+            }
+            # otherwise, return download of single frame
+            return [eval $itk_component(area).viewer download now $args]
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: play ?-user|-program?
+#
+# Invoked when the user hits the "play" button to play the current
+# sequence of frames as a movie.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::play {{why -program}} {
+    if { [llength $_indices] == 0 } {
+        return;                         # No frames (i.e. no data).
+    }
+
+    if {$why eq "-user"} {
+        Rappture::Logger::log sequence play -loop $_play(loop) -speed $_play(speed)
+    }
+
+    # Stop any existing animation.
+    pause
+
+    # At the end? then restart fresh
+    if {$_pos >= [llength $_indices]-1} {
+        goto 0
+    }
+
+    # Toggle the button to "pause" mode
+    $itk_component(play) configure \
+        -bitmap [Rappture::icon pause] \
+        -command [itcl::code $this pause -user]
+
+    global readyForNextFrame
+    set readyForNextFrame 1;            # By default, always ready
+    # Schedule the first frame
+    set delay [expr {int(ceil(pow($_play(speed)/10.0+2,2.0)*15))}]
+    set _afterId [after $delay [itcl::code $this _playFrame]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: pause ?-user|-program?
+#
+# Invoked when the user hits the "pause" button to stop playing the
+# current sequence of frames as a movie.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::pause {{why -program}} {
+    if {$why eq "-user"} {
+        Rappture::Logger::log sequence pause
+    }
+
+    if {"" != $_afterId} {
+        catch {after cancel $_afterId}
+        set _afterId ""
+    }
+    global readyForNextFrame
+    set readyForNextFrame 1;            # By default, always ready
+
+    # Check if the play button still exists. We may be in the process
+    # of destroying the widget.
+    if { [info exists itk_component(play)] } {
+        # toggle the button to "play" mode
+        $itk_component(play) configure \
+            -bitmap [Rappture::icon play] \
+            -command [itcl::code $this play -user]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: goto ?<index>?
+#
+# Used internally to move the current position of the animation to
+# the frame at a particular <index>.  If the <index> is not specified,
+# then it returns the current position.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::goto {{newval ""}} {
+    if {"" == $newval} {
+        return $_pos
+    }
+    set _pos $newval
+    set val [$itk_component(dial) get -format label @$_pos]
+    $itk_component(dial) current $val
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _rebuild
+#
+# Invoked automatically whenever the data displayed in this viewer
+# changes.  Loads the data from the topmost (current) value into
+# the viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::_rebuild {args} {
+    if {"" == $_topmost && [llength $_dlist] > 0} {
+        set _topmost [lindex $_dlist 0]
+    }
+
+    #
+    # If we have any data, then show the viewer.
+    # Otherwise, hide it.
+    #
+    set w $itk_component(area).viewer
+    if {[winfo exists $w]} {
+        if {"" == $_topmost} {
+            pack forget $w
+            pack forget $itk_component(player)
+            return
+        } else {
+            pack $w -expand yes -fill both
+            pack $itk_component(player) -side bottom -fill x
+        }
+    } else {
+        if {"" == $_topmost} {
+            return
+        }
+
+        set type ""
+        if {[$_topmost size] > 0} {
+            set dataobj [lindex [$_topmost value 0] 0]
+            set type [$dataobj info class]
+        }
+        switch -- $type {
+            ::Rappture::Drawing {
+                Rappture::VtkViewer $w
+                pack $w -expand yes -fill both
+            }
+            ::Rappture::Curve {
+                Rappture::XyResult $w
+                pack $w -expand yes -fill both
+            }
+            ::Rappture::Histogram {
+                Rappture::HistogramResult $w
+                pack $w -expand yes -fill both
+            }
+            ::Rappture::DataTable {
+                Rappture::DataTable $w
+                pack $w -expand yes -fill both
+            }
+            ::Rappture::Image {
+                Rappture::ImageResult $w
+                pack $w -expand yes -fill both
+            }
+            ::Rappture::Field {
+                set dimensions ""
+                set dim ""
+                foreach dim [$dataobj components -dimensions] {
+                    # check to see if the dimensions are the same
+                    # for all elements of the field. i dont think
+                    # we can display fields of differing dimensions
+                    # within the same field object.
+                    if {"" != $dimensions} {
+                        if {$dimensions != $dim} {
+                            error "don't know how to view sequences of $type\
+                                with dimensions as follows:\
+                                [$dataobj components -dimensions]"
+                        }
+                    } else {
+                        set dimensions $dim
+                    }
+                }
+                set mode [$dataobj viewer]
+                Rappture::FieldResult $w -mode $mode
+                pack $w -expand yes -fill both
+            }
+            ::Rappture::LibraryObj {
+                switch -- [$dataobj element -as type] {
+                    structure {
+                        Rappture::DeviceResult $w
+                        pack $w -expand yes -fill both
+                    }
+                    default {
+                        error "don't know how to view sequences of [$dataobj element -as type]"
+                    }
+                }
+            }
+            default {
+                puts stderr "don't know how to view sequences of type \"$type\""
+                puts stderr "Is the sequence empty?"
+                return
+            }
+        }
+    }
+    #
+    # Load the current sequence info the viewer.
+    #
+    $itk_component(indexLabel) configure -text [$_topmost hints indexlabel]
+
+    $w delete
+    $itk_component(dial) clear
+
+    set max [$_topmost size]
+    set all ""
+    for {set i 0} {$i < $max} {incr i} {
+        eval lappend all [$_topmost value $i]
+    }
+    eval $w scale $all
+
+    set _indices ""
+    for {set i 0} {$i < $max} {incr i} {
+        set index [$_topmost index $i]
+        eval $itk_component(dial) add $index
+        lappend _indices [lindex $index 0]
+    }
+    _fixValue
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _playFrame
+#
+# Used internally to advance each frame in the animation.  Advances
+# the frame and displays it.  When we reach the end of the animation,
+# we either loop back or stop.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::_playFrame {} {
+    global readyForNextFrame
+    if { $readyForNextFrame } {
+        set _pos [expr {$_pos+1}]
+        set last [expr {[llength $_indices]-1}]
+
+        if {$_pos > $last} {
+            if {$_play(loop)} {
+                set _pos 0
+            } else {
+                set _pos $last
+                pause
+                return
+            }
+        }
+        goto $_pos
+        set delay [expr {int(ceil(pow($_play(speed)/10.0+2,2.0)*15))}]
+    } else {
+        set delay 50;                   # Poll for completion
+    }
+    set _afterId [after $delay [itcl::code $this _playFrame]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue
+#
+# Invoked automatically whenever the value on the dial changes.
+# Updates the viewer to display the value for the selected result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SequenceResult::_fixValue {} {
+    set w $itk_component(area).viewer
+    if {![winfo exists $w]} {
+        return
+    }
+    $w delete
+    if { $_topmost == "" } {
+        return
+    }
+    set val [$itk_component(dial) get -format label current]
+    set _pos [lsearch -glob $_indices $val*]
+
+    # populate the label for this element
+    if { "" != [$_topmost hints indexlabel] } {
+        $itk_component(indexValue) configure -text "= $val"
+    }
+    $itk_component(eleLabel) configure -text "[$_topmost label $_pos]"
+    foreach dataobj [$_topmost value $_pos] {
+        set settings "-color autoreset -width 2"
+        if {[catch {$dataobj hints style} style] == 0} {
+            eval lappend settings $style
+        }
+        if { [catch {$dataobj hints type} type] == 0} {
+            if {"" != $type} {
+                lappend settings -type $type
+            }
+        }
+        $w add $dataobj $settings
+    }
+}
Index: /tags/1.6.0/gui/scripts/service.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/service.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/service.tcl	(revision 6168)
@@ -0,0 +1,316 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: service - represents a tool embedded within another tool
+#
+#  The tool.xml description for a Rappture tool can contain one or
+#  more embedded <tool> references.  Each Rappture::Service object
+#  represents an embedded <tool> and manages its operation,
+#  contributing some service to the overall tool.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require BLT
+
+itcl::class Rappture::Service {
+    constructor {owner path args} { # defined below }
+    destructor { # defined below }
+
+    public method control {}
+    public method input {}
+    public method output {args}
+
+    public method run {}
+    public method abort {}
+    public method clear {}
+
+    protected method _link {from to}
+
+    private variable _owner ""    ;# thing managing this service
+    private variable _path ""     ;# path to the <tool> description in _owner
+    private variable _tool ""     ;# underlying tool for this service
+    private variable _control ""  ;# control: auto/manual
+    private variable _show        ;# <show> info for input/output methods
+    private variable _obj2path    ;# maps object in _show => service path
+    private variable _path2widget ;# maps path for object in _show => widget
+    private variable _path2path   ;# maps path for object in _show => link path
+    private variable _result ""   ;# result from last run
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Service::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+
+    #
+    # Load up the tool description from the <interface> file.
+    #
+    set intf [string trim [$_owner xml get $path.interface]]
+    if {"" == $intf} {
+        puts "can't find <interface> description for tool at $path"
+    } else {
+        set installdir [[$_owner tool] installdir]
+        regsub -all @tool $intf $installdir intf
+
+        set xmlobj [Rappture::library $intf]
+        set installdir [file dirname $intf]
+        set _tool [Rappture::Tool ::\#auto $xmlobj $installdir]
+        set _control [string trim [$_tool xml get tool.control]]
+
+        #
+        # Scan through the <tool> and establish all of the
+        # relationships:
+        #
+        #   <show> ... Add to list of "input" for this service.
+        #              Caller will add controls to the interface.
+        #
+        #   <link> ... Link this value to another input/output
+        #              that exists in the containing tool.
+        #
+        #   <set> .... Hard-code the value for this input/output.
+        #
+        foreach dir {input output} {
+            set _show($dir) ""
+            foreach cname [$_owner xml children $path.$dir] {
+                set ppath $path.$dir.$cname
+
+                set spath [string trim [$_owner xml get $ppath.path]]
+                if {"" == $spath} {
+                    error "missing <path> at $ppath"
+                }
+
+                set type [$_owner xml element -as type $ppath]
+                switch -- $type {
+                  show {
+puts "show: $spath"
+                      set tpath [string trim [$_owner xml get $ppath.to]]
+                      if {"" == $tpath && $dir == "input"} {
+                          error "missing <to> at $ppath"
+                      }
+                      set obj [$_tool xml element -as object $spath]
+                      puts " => $obj"
+                      lappend _show($dir) $obj
+                      set _obj2path($obj) $spath
+
+                      if {$dir == "input"} {
+                          puts "link: $tpath => $spath"
+                          $_owner notify add $this $tpath \
+                              [itcl::code $this _link $tpath $spath]
+                      }
+                  }
+                  link {
+                      set tpath [string trim [$_owner xml get $ppath.to]]
+                      if {"" == $tpath} {
+                          error "missing <to> at $ppath"
+                      }
+                      if {"" == [$_owner xml element $tpath]} {
+                          error "bad <to> path \"$tpath\" at $ppath"
+                      }
+                      if {$dir == "input"} {
+                          puts "link: $tpath => $spath"
+                          $_owner notify add $this $tpath \
+                              [itcl::code $this _link $tpath $spath]
+                      } else {
+                          puts "path2path: $spath => $tpath"
+                          set _path2path($spath) $tpath
+                      }
+                  }
+                    set {
+                        if {"" == [$_owner xml element $ppath.value]} {
+                        error "missing <value> at $ppath"
+                    }
+puts "set: $spath from $ppath.value"
+                    $_tool xml copy $spath from \
+                        [$_owner xml object] $ppath.value
+                  }
+                }
+            }
+        }
+
+        if {$_control != "auto"} {
+            set _show(control) [$_tool xml element -as object tool.control]
+        } else {
+            set _show(control) ""
+        }
+    }
+
+    eval configure $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Service::destructor {} {
+    foreach dir [array names _show] {
+        foreach obj $_show($dir) {
+            itcl::delete object $obj
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: control
+#
+# Used by the container that displays this service to determine what
+# the control for this service should look like.  Returns "" if
+# there is no control--the service is invoked automatically whenever
+# the inputs change.  Otherwise, it returns a list of the form
+# {key value key value ...} with attributes that configure the button
+# controlling this service.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Service::control {} {
+    return $_show(control)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: input
+#
+# Used by the container that displays this service to describe any
+# inputs for this service that should be added to the main service.
+# Returns a list of XML objects representing various input controls.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Service::input {} {
+    return $_show(input)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: output
+# USAGE: output for <object> <widget>
+#
+# Used by the container that displays this service to describe any
+# outputs for this service that should be added to the main service.
+#
+# With no args, it returns a list of XML objects representing various
+# outputs.  The caller uses this information to create various output
+# widgets.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Service::output {args} {
+    if {[llength $args] == 0} {
+        return $_show(output)
+    }
+    set option [lindex $args 0]
+    switch -- $option {
+        for {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"output for object widget\""
+            }
+            set obj [lindex $args 1]
+            set win [lindex $args 2]
+            if {[info exists _obj2path($obj)]} {
+                set path $_obj2path($obj)
+puts "OUTPUT $path => $win"
+                set _path2widget($path) $win
+            } else {
+                puts "error: don't recognize output object $obj"
+            }
+        }
+        default {
+            error "bad option \"$option\": should be for"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: run
+#
+# This method causes the service to run.  All widgets are synchronized
+# to the current XML representation, and a "driver.xml" file is
+# created as the input for the run.  That file is fed to the tool
+# according to the <tool><command> string, and the job is executed.
+#
+# All outputs are pushed out to the tool containing this service
+# according to the <outputs> directive for the service.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Service::run {} {
+puts "running..."
+    clear
+    foreach {status result} [$_tool run] break
+
+    if {$status == 0 && $result != "ABORT"} {
+        if {[regexp {=RAPPTURE-RUN=>([^\n]+)} $result match file]} {
+            set xmlobj [Rappture::library $file]
+            #
+            # Scan through all outputs and copy them to the final output
+            # for the tool.  If they have widgets associated with them,
+            # set the value for the widget.
+            #
+puts "showing output..."
+            foreach cname [$xmlobj children output] {
+                set path output.$cname
+puts " for $path"
+                $_owner xml copy $path from $xmlobj $path
+
+                if {[info exists _path2widget($path)]} {
+                    set obj [$xmlobj element -as object $path]
+puts " sending $obj to $_path2widget($path)"
+                    $_path2widget($path) value $obj
+                }
+                if {[info exists _path2path($path)]} {
+puts " sending $path to $_path2path($path)"
+                    $_owner xml copy $_path2path($path) from $xmlobj $path
+                    set w [$_owner widgetfor $_path2path($path)]
+                    if {$w != ""} {
+                        set obj [$_owner xml element -as object $_path2path($path)]
+                        $w value $obj
+                    }
+                }
+            }
+            set _result $xmlobj
+        } else {
+            set status 1
+            set result "Can't find result file in output:\n\n$result"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: abort
+#
+# Clients use this during a "run" to abort the current job.
+# Kills the job and forces the "run" method to return.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Service::abort {} {
+    $_tool abort
+}
+
+# ----------------------------------------------------------------------
+# USAGE: clear
+#
+# Clears any result hanging around from the last run.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Service::clear {} {
+    if {"" != $_result} {
+        foreach cname [$_result children output] {
+            set path output.$cname
+
+            if {[info exists _path2widget($path)]} {
+                $_path2widget($path) value ""
+            }
+        }
+        itcl::delete object $_result
+        set _result ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _link <fromPath> <toPath>
+#
+# Used internally to link the value at <fromPath> in the outer tool
+# to the value at <toPath> for this service.  If this service is
+# automatic and <toPath> is an input, this also invokes the service.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Service::_link {from to} {
+    $_tool xml copy $to from [$_owner xml object] $from
+    if {$_control == "auto" && [regexp -nocase {^input\.} $to]} {
+        after cancel [itcl::code $this run]
+        after idle [itcl::code $this run]
+    }
+}
Index: /tags/1.6.0/gui/scripts/sidebarframe.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/sidebarframe.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/sidebarframe.tcl	(revision 6168)
@@ -0,0 +1,622 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: SidebarFrame - pop-out controls for visualization widgets
+#
+#  The sidebar provides a way to put a thin strip of controls along the
+#  side of a visualization widget, with tabs that cause control panels
+#  to pop out.  The SidebarFrame has an empty frame (component "frame")
+#  on the left and a sidebar that pops out on the right.
+# ======================================================================
+#  AUTHOR:  George Howlett, Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *SidebarFrame.width 3i widgetDefault
+option add *SidebarFrame.height 3i widgetDefault
+option add *SidebarFrame.titlebarBackground #6666cc widgetDefault
+option add *SidebarFrame.titlebarForeground white widgetDefault
+option add *SidebarFrame.controlBackground gray widgetDefault
+option add *SidebarFrame*cntls*highlightBackground gray widgetDefault
+option add *SidebarFrame.sashRelief flat widgetDefault
+option add *SidebarFrame.sashActiveRelief solid widgetDefault
+option add *SidebarFrame.sashColor gray widgetDefault
+option add *SidebarFrame.sashWidth 2 widgetDefault
+option add *SidebarFrame.sashPadding 2 widgetDefault
+option add *SidebarFrame.sashCursor sb_h_double_arrow
+
+itcl::class Rappture::SidebarFrame {
+    inherit itk::Widget
+
+    itk_option define -sashrelief sashRelief Relief ""
+    itk_option define -sashactiverelief sashActiveRelief SashActiveRelief ""
+    itk_option define -sashcolor sashColor SashColor ""
+    itk_option define -sashwidth sashWidth SashWidth 0
+    itk_option define -sashpadding sashPadding SashPadding 0
+    itk_option define -sashcursor sashCursor Cursor ""
+
+    public variable resizeframe 1
+    constructor {args} { # defined below }
+
+    public method insert {pos args}
+    public method exists {which}
+    public method panel {which}
+    public method select {which}
+    public method pop {what}
+    public method width { size } {
+        set _width $size
+    }
+    public method enable { which }
+    public method disable { which }
+
+    protected method _toggleTab {which}
+    protected method _sash {op x}
+    protected method _fixLayout {args}
+    protected method TabIndex { which }
+
+    private variable _dispatcher ""  ;# dispatcher for !events
+    private variable _state "closed" ;# sidebar open/closed
+    private variable _panels         ;# maps panel => title, etc.
+    private variable _selected ""    ;# selected panel
+    private variable _width "auto"   ;# width adjusted by sash or "auto"
+    private variable _counter 0      ;# counter for auto-generated names
+    private variable _title2panel
+}
+
+itk::usual SidebarFrame {
+    keep -background -cursor
+    keep -titlebarbackground -titlebarforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::constructor {args} {
+    itk_option add hull.width hull.height
+
+    # create a dispatcher for events
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !layout
+    $_dispatcher dispatch $this !layout [itcl::code $this _fixLayout]
+
+    # fix the layout whenever the window size changes
+    bind SidebarFrame <Configure> [itcl::code %W _fixLayout]
+
+    #
+    # Empty frame for main widget
+    #
+    itk_component add frame {
+        frame $itk_interior.f
+    }
+
+    #
+    # Sash along the left side of sidebar
+    #
+    itk_component add sashbg {
+        frame $itk_interior.sashbg
+    } {
+        usual
+        rename -cursor -sashcursor sashCursor Cursor
+    }
+
+    itk_component add sash {
+        frame $itk_component(sashbg).sash -borderwidth 1
+    } {
+        usual
+        ignore -background -borderwidth
+        rename -relief -sashrelief sashRelief Relief
+        rename -width -sashwidth sashWidth SashWidth
+        rename -cursor -sashcursor sashCursor Cursor
+    }
+    pack $itk_component(sash) -side left -fill y
+
+    foreach c {sash sashbg} {
+        bind $itk_component($c) <Enter> \
+            [itcl::code $this _sash enter %X]
+        bind $itk_component($c) <Leave> \
+            [itcl::code $this _sash leave %X]
+        bind $itk_component($c) <ButtonPress-1> \
+            [itcl::code $this _sash grab %X]
+        bind $itk_component($c) <B1-Motion> \
+            [itcl::code $this _sash drag %X]
+        bind $itk_component($c) <ButtonRelease-1> \
+            [itcl::code $this _sash release %X]
+    }
+
+    itk_component add sidebar {
+        frame $itk_interior.sbar
+    }
+
+    #
+    # Title bar along top of sidebar
+    #
+    itk_component add titlebar {
+        frame $itk_component(sidebar).tbar -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -titlebarbackground titlebarBackground Background
+    }
+    pack $itk_component(titlebar) -side top -fill x
+
+    itk_component add popbutton {
+        button $itk_component(titlebar).popb \
+            -borderwidth 1 -relief flat -overrelief raised \
+            -highlightthickness 0 \
+            -image [Rappture::icon sbar-open] \
+            -command [itcl::code $this pop toggle]
+    } {
+        usual
+        ignore -borderwidth -relief -overrelief -highlightthickness
+        rename -background -titlebarbackground titlebarBackground Background
+        rename -activebackground -titlebarbackground titlebarBackground Background
+    }
+    pack $itk_component(popbutton) -side left -padx 6 -pady 2
+    Rappture::Tooltip::for $itk_component(popbutton) \
+        "Open/close the sidebar"
+
+    itk_component add title {
+        label $itk_component(titlebar).title -anchor w -font "Arial 10"
+    } {
+        usual
+        ignore -font
+        rename -foreground -titlebarforeground titlebarForeground Foreground
+        rename -background -titlebarbackground titlebarBackground Background
+    }
+    pack $itk_component(title) -side left -expand yes -fill both -padx 1 -pady 1
+
+    #
+    # Area for active panel
+    #
+    itk_component add area {
+        Rappture::Scroller $itk_component(sidebar).area \
+            -xscrollmode auto -yscrollmode auto \
+            -highlightthickness 0
+    }
+    $itk_component(area) contents frame
+
+    itk_component add controlbar {
+        frame $itk_component(sidebar).cbar
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+    pack $itk_component(controlbar) -side left -fill y
+
+    #
+    # Control area above the tabs
+    #
+    itk_component add controls {
+        frame $itk_component(controlbar).cntls -height 20
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+    pack $itk_component(controls) -side top -pady {8 20}
+
+    #
+    # Tabs used to select sidebar panels.
+    #
+    # Note:  Bugs in BLT 2.4 tabset/VNC server crashes the server
+    #        when -outerpad is set to 0.
+    #
+    itk_component add tabs {
+        blt::tabset $itk_component(controlbar).tabs \
+            -highlightthickness 0 -tearoff 0 -side left \
+            -bd 0 -gap 0 -tabborderwidth 1 \
+            -outerpad 1
+    } {
+        keep -background -cursor
+        ignore -highlightthickness -borderwidth
+        rename -highlightbackground -controlbackground controlBackground \
+            Background
+        rename -background -controlbackground controlBackground \
+            Background
+    }
+    pack $itk_component(tabs) -side top -expand yes -anchor e -padx {4 0} -fill y
+
+    eval itk_initialize $args
+
+    # make sure we fix up the layout at some point
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <pos> ?-title t? ?-icon i?
+#
+# Adds a new panel into this widget at the given position <pos>.  The
+# panel has a tab with the specified -icon, and is labeled by the
+# -title string in the titlebar area when it is selected.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::insert {pos args} {
+    Rappture::getopts args panel "
+        value -title Options
+        value -icon [Rappture::icon cboff]
+    "
+    if {[llength $args] > 0} {
+        error "wrong # args: should be \"insert pos ?-title t? ?-icon i?\""
+    }
+
+    set f [$itk_component(area) contents]
+    set pname "panel[incr _counter]"
+    itk_component add $pname {
+        frame $f.$pname
+    }
+
+    $itk_component(tabs) insert $pos $pname \
+        -image $panel(-icon) -text "" -padx 0 -pady 0 \
+        -command [itcl::code $this _toggleTab $pname]
+
+    set _title2panel($panel(-title)) $pname
+    Rappture::Tooltip::text $itk_component(tabs)-$pname \
+        "Open/close sidebar for $panel(-title)"
+    $itk_component(tabs) bind $pname <Enter> \
+        [list ::Rappture::Tooltip::tooltip pending %W-$pname @%X,%Y]
+    $itk_component(tabs) bind $pname <Leave> \
+        [list ::Rappture::Tooltip::tooltip cancel]
+    $itk_component(tabs) bind $pname <ButtonPress> \
+        [list ::Rappture::Tooltip::tooltip cancel]
+    $itk_component(tabs) bind $pname <KeyPress> \
+        [list ::Rappture::Tooltip::tooltip cancel]
+
+    set _panels($pname-title) $panel(-title)
+    if { ![info exists _panels(all)] || $pos == "end" } {
+        lappend _panels(all) $pname
+    } else {
+        set _panels(all) [linsert $_panels(all) $pos $pname]
+    }
+    if {$_selected == ""} {
+        set _selected $pname
+        if {$_state == "open"} {
+            $itk_component(title) configure -text $panel(-title)
+        }
+    }
+
+    return $itk_component($pname)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: panel <which>
+#
+# Returns the frame representing the requested panel.  The <which>
+# argument can be a panel index, name, or title, or the keyword
+# "current" for the selected panel.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::panel {which} {
+    switch -glob -- $which {
+        current {
+            return $itk_component($_selected)
+        }
+        [0-9]* {
+            set pname [lindex $_panels(all) $which]
+            return $itk_component($pname)
+        }
+        panel[0-9]* {
+            if {[info exists itk_component($which)]} {
+                return $itk_component($which)
+            }
+            error "bad panel name \"$which\""
+        }
+        default {
+            foreach pname $_panels(all) {
+                if {[string equal $_panels($pname-title) $which]} {
+                    return $itk_component($pname)
+                }
+            }
+            error "bad panel title \"$which\""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: exists <which>
+#
+# Returns the frame representing the requested panel.  The <which>
+# argument can be a panel index, name, or title, or the keyword
+# "current" for the selected panel.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::exists { title } {
+    if { [info exists _title2panel($title)] } {
+        return 1
+    }
+    return 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: select <which>
+#
+# Pops open the sidebar and selects the specified panel.  The <which>
+# argument can be a panel index, name, or title.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::select {which} {
+    set pname ""
+    switch -glob -- $which {
+        [0-9]* {
+            set pname [lindex $_panels(all) $which]
+        }
+        panel[0-9]* {
+            if {[info exists itk_component($which)]} {
+                set pname $which
+            }
+        }
+        default {
+            foreach p $_panels(all) {
+                if {[string equal $_panels($p-title) $which]} {
+                    set pname $p
+                    break
+                }
+            }
+        }
+    }
+    if {$pname == ""} {
+        error "bad panel name \"$which\": should be panel id, title, or index"
+    }
+
+    if {$_state == "closed"} {
+        pop open
+    }
+
+    set minw [winfo reqwidth $itk_component(controlbar)]
+    if {$_width != "auto" && $_width < $minw+50} {
+        set _width [expr {$minw+50}]
+        $_dispatcher event -idle !layout
+    }
+    set n [$itk_component(tabs) index -name $pname]
+    $itk_component(tabs) select $n
+
+    $itk_component(title) configure -text $_panels($pname-title)
+
+    set f [$itk_component(area) contents]
+    foreach w [pack slaves $f] {
+        pack forget $w
+    }
+    pack $itk_component($pname) -expand yes -fill both
+
+    #
+    # HACK ALERT!  Force the scroller to check the size of the
+    # panel that we just slid in under the covers.  Make it
+    # think the panel and the scroller itself have changed size.
+    #
+    event generate [winfo parent $f] <Configure>
+    event generate $f <Configure>
+
+    set _selected $pname
+    return $pname
+}
+
+# ----------------------------------------------------------------------
+# USAGE: pop open|close|toggle
+#
+# Used to open/close the sidebar area.  When open, the selected panel
+# appears and the titlebar shows its name.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::pop {how} {
+    if {$how == "toggle"} {
+        if {$_state == "closed"} {
+            set how "open"
+        } else {
+            set how "close"
+        }
+    }
+
+    switch -- $how {
+        open {
+            $itk_component(popbutton) configure \
+                -image [Rappture::icon sbar-closed]
+            pack $itk_component(area) -side right -expand yes -fill both
+
+            set _state "open"
+            select $_selected
+            $_dispatcher event -idle !layout
+        }
+        close {
+            $itk_component(popbutton) configure \
+                -image [Rappture::icon sbar-open]
+            $itk_component(title) configure -text ""
+            pack forget $itk_component(area)
+
+            set _state "closed"
+            $_dispatcher event -idle !layout
+        }
+        default {
+            error "bad option \"$how\": should be open, close, toggle"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: disable <which>
+#
+# Pops open the sidebar and selects the specified panel.  The <which>
+# argument can be a panel index, name, or title.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::disable {which} {
+    set index [TabIndex $which]
+    set tab [$itk_component(tabs) get $index]
+    $itk_component(tabs) tab configure $tab -state disabled
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: enable <which>
+#
+# Pops open the sidebar and selects the specified panel.  The <which>
+# argument can be a panel index, name, or title.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::enable {which} {
+    set index [TabIndex $which]
+    set tab [$itk_component(tabs) get $index]
+    $itk_component(tabs) tab configure $tab -state normal
+}
+
+# ----------------------------------------------------------------------
+# USAGE: TabIndex <which>
+#
+# Pops open the sidebar and selects the specified panel.  The <which>
+# argument can be a panel index, name, or title.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::TabIndex {which} {
+    set pname ""
+    switch -glob -- $which {
+        [0-9]* {
+            set pname [lindex $_panels(all) $which]
+        }
+        panel[0-9]* {
+            if {[info exists itk_component($which)]} {
+                set pname $which
+            }
+        }
+        default {
+            foreach p $_panels(all) {
+                if {[string equal $_panels($p-title) $which]} {
+                    set pname $p
+                    break
+                }
+            }
+        }
+    }
+    if {$pname == ""} {
+        error "bad panel name \"$which\": should be panel id, title, or index"
+    }
+    set n [$itk_component(tabs) index -name $pname]
+    return $n
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _toggleTab <which>
+#
+# Invoked automatically when the user clicks on a tab for the sidebar.
+# If the sidebar is closed, it is automatically opened and the tab is
+# selected.  If the sidebar is opened, then it's closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::_toggleTab {which} {
+    if {$_state == "closed"} {
+        pop open
+        select $which
+    } elseif {[$itk_component(tabs) index -name $_selected]
+          == [$itk_component(tabs) index -name $which]} {
+        pop close
+    } else {
+        select $which
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _sash <op> <X>
+#
+# Invoked automatically when the user clicks/drags on a sash, to resize
+# the sidebar.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::_sash {op X} {
+    switch -- $op {
+        enter {
+            # mouse over sash -- make it active
+            if {$itk_option(-sashactiverelief) != ""} {
+                $itk_component(sash) configure -relief $itk_option(-sashactiverelief)
+            }
+        }
+        leave {
+            # mouse left sash -- back to normal
+            $itk_component(sash) configure -relief $itk_option(-sashrelief)
+        }
+        grab {
+            if {$_state == "closed"} { pop open }
+            _sash drag $X
+        }
+        drag {
+            set w [winfo width $itk_component(hull)]
+            set minw [winfo reqwidth $itk_component(controlbar)]
+            set dx [expr {$X - [winfo rootx $itk_component(hull)]}]
+            set sashw [winfo reqwidth $itk_component(sashbg)]
+            set _width [expr {$w - $dx - $sashw/2}]
+
+            if {$_width < $minw} { set _width $minw }
+            if {$_width > $w-50} { set _width [expr {$w-50}] }
+            _fixLayout
+        }
+        release {
+            set minw [winfo reqwidth $itk_component(controlbar)]
+            if {$_width-$minw < 40} {
+                set _width "auto"
+                pop close
+            }
+        }
+        default {
+            error "bad option \"$op\": should be enter, leave, grab, drag, release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixLayout ?<eventArgs>...?
+#
+# Used internally to update the layout of panes whenever a new pane
+# is added or a sash is moved.
+# ----------------------------------------------------------------------
+itcl::body Rappture::SidebarFrame::_fixLayout {args} {
+    set w [winfo width $itk_component(hull)]
+    set h [winfo height $itk_component(hull)]
+
+    set sashw [winfo reqwidth $itk_component(sashbg)]
+
+    set tabw [winfo reqwidth $itk_component(tabs)]
+    set btnw [winfo reqwidth $itk_component(controls)]
+    set ctrlw [expr {($tabw > $btnw) ? $tabw : $btnw}]
+
+    if {$_state == "closed"} {
+        set sbarw $ctrlw
+    } else {
+        if {$_width == "auto"} {
+            # pop open to the size of the widest pane
+            set sbarw 0
+            foreach pname $_panels(all) {
+                set pw [winfo reqwidth $itk_component($pname)]
+                if {$pw > $sbarw} {
+                    set sbarw $pw
+                }
+            }
+            set sbarw [expr {$sbarw + $ctrlw + $sashw}]
+        } else {
+            set sbarw $_width
+        }
+    }
+
+    # don't let the sidebar take up too much of the window area
+    if {$sbarw > 0.75*$w} {
+        set sbarw [expr {int(0.75*$w)}]
+    }
+
+    set x1 [expr {$w - $sbarw - $sashw}]
+    set x2 [expr {$w - $sbarw}]
+    if { $resizeframe } {
+        set framew $x1
+    } else {
+        set framew [expr $w - $ctrlw - $sashw]
+    }
+    place $itk_component(frame) -x 0 -y 0 -anchor nw -width $framew -height $h
+    place $itk_component(sashbg) -x $x1 -y 0 -anchor nw -width $sashw -height $h
+    place $itk_component(sidebar) -x $x2 -y 0 -anchor nw \
+        -width $sbarw -height $h
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -sashpadding
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SidebarFrame::sashpadding {
+    pack $itk_component(sash) -padx $itk_option(-sashpadding)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -sashcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::SidebarFrame::sashcolor {
+    if {$itk_option(-sashcolor) != ""} {
+        $itk_component(sash) configure -background $itk_option(-sashcolor)
+    } else {
+        $itk_component(sash) configure -background $itk_option(-background)
+    }
+}
+
Index: /tags/1.6.0/gui/scripts/spectrum.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/spectrum.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/spectrum.tcl	(revision 6168)
@@ -0,0 +1,292 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: spectrum - maps a range of real values onto a color
+#
+#  This data object represents the mapping of a range of real values
+#  onto a range of colors.  It is used in conjunction with other
+#  widgets, such as the Rappture::Gauge.
+#
+#  EXAMPLE:
+#    Rappture::Spectrum #auto {
+#       0.0   red
+#       1.0   green
+#      10.0   #d9d9d9
+#    }
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itcl::class Rappture::Spectrum {
+    inherit Rappture::Dispatcher
+
+    public variable units ""  ;# default units for all real values
+
+    constructor {{sdata ""} args} { # defined below }
+
+    public method insert {args}
+    public method delete {first {last ""}}
+    public method get {args}
+
+    private variable _axis ""       ;# list of real values along axis
+    private variable _rvals ""      ;# list of red components along axis
+    private variable _gvals ""      ;# list of green components along axis
+    private variable _bvals ""      ;# list of blue components along axis
+    private variable _spectrum 0    ;# use continuous visible spectrum
+    private variable _specv0 0      ;# minimum value
+    private variable _specw0 0      ;# wavelength for minimum
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Spectrum::constructor {{sdata ""} args} {
+    register !change  ;# used to signal changes in spectrum
+
+    if {[llength $sdata] > 0} {
+        regsub -all {\n} $sdata { } sdata
+        eval insert $sdata
+    }
+    eval configure $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert ?<value1> <color1> <value2> <color2> ...?
+#
+# Clients use this to insert one or more values into the spectrum.
+# Each value has an associated color.  These values are used in the
+# "get" method to map any incoming value to its interpolated color
+# in the spectrum.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Spectrum::insert {args} {
+    set changed 0
+
+    # special case. Two values in nm, then use
+    # spectrum instead of gradient.
+    if {[llength $args] == 4} {
+        set cnt 0
+        foreach {value color} $args {
+            if {[string match "*nm" $color]} {
+                incr cnt
+            }
+        }
+        if {$cnt == 2} {
+            set val0 [lindex $args 0]
+            set color0 [string trimright [lindex $args 1] "nm"]
+            set val1 [lindex $args 2]
+            set color1 [string trimright [lindex $args 3] "nm"]
+
+            if {"" != $units} {
+                set val0 [Rappture::Units::convert $val0 \
+                              -context $units -to $units -units off]
+                set val1 [Rappture::Units::convert $val1 \
+                              -context $units -to $units -units off]
+            }
+
+            set _spectrum [expr (double($color1) - double($color0)) \
+                           / (double($val1) - double($val0))]
+            set _specv0 $val0
+            set _specw0 $color0
+            return
+        }
+    }
+
+    foreach {value color} $args {
+        if {"" != $units} {
+            set value [Rappture::Units::convert $value \
+                -context $units -to $units -units off]
+        }
+        foreach {r g b} [Rappture::color::RGB $color] { break }
+        set i 0
+        foreach v $_axis {
+            if {$value == $v} {
+                set _rvals [lreplace $_rvals $i $i $r]
+                set _gvals [lreplace $_gvals $i $i $g]
+                set _bvals [lreplace $_bvals $i $i $b]
+                set changed 1
+                break
+            } elseif {$value < $v} {
+                set _axis  [linsert $_axis $i $value]
+                set _rvals [linsert $_rvals $i $r]
+                set _gvals [linsert $_gvals $i $g]
+                set _bvals [linsert $_bvals $i $b]
+                set changed 1
+                break
+            }
+            incr i
+        }
+
+        if {$i >= [llength $_axis]} {
+            lappend _axis $value
+            lappend _rvals $r
+            lappend _gvals $g
+            lappend _bvals $b
+            set changed 1
+        }
+    }
+
+    # let any clients know if something has changed
+    if {$changed} {
+        event !change
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete <first> ?<last>?
+#
+# Clients use this to delete one or more entries from the spectrum.
+# The <first> and <last> represent the integer index of the desired
+# element.  If only <first> is specified, then that one element is
+# deleted.  If <last> is specified, then all elements in the range
+# <first> to <last> are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Spectrum::delete {first {last ""}} {
+    if {$last == ""} {
+        set last $first
+    }
+    if {![regexp {^[0-9]+|end$} $first]} {
+        error "bad index \"$first\": should be integer or \"end\""
+    }
+    if {![regexp {^[0-9]+|end$} $last]} {
+        error "bad index \"$last\": should be integer or \"end\""
+    }
+
+    if {[llength [lrange $_axis $first $last]] > 0} {
+        set _axis [lreplace $_axis $first $last]
+        set _rvals [lreplace $_rvals $first $last]
+        set _gvals [lreplace $_gvals $first $last]
+        set _bvals [lreplace $_bvals $first $last]
+        event !change
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-color|-fraction? ?<value>?
+#
+# Clients use this to get information about the spectrum.  With no args,
+# it returns a list of elements in the form accepted by the "insert"
+# method.  Otherwise, it returns the interpolated value for the given
+# <value>.  By default, it returns the interpolated color, but the
+# -fraction flag can be specified to query the fractional position
+# along the spectrum.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Spectrum::get {args} {
+    if {[llength $args] == 0} {
+        set rlist ""
+        foreach v $_axis r $_rvals g $_gvals b $_bvals {
+            lappend rlist "$v$units" [format {#%.4x%.4x%.4x} $r $g $b]
+        }
+        return $rlist
+    }
+
+    set what "-color"
+    while {[llength $args] > 0} {
+        set first [lindex $args 0]
+        if {[regexp {^-[a-zA-Z]} $first]} {
+            set what $first
+            set args [lrange $args 1 end]
+        } else {
+            break
+        }
+    }
+    if {[llength $args] != 1} {
+        error "wrong # args: should be \"get ?-color|-fraction? ?value?\""
+    }
+
+    set value [lindex $args 0]
+
+    switch -- [lindex $value 0] {
+        gaussian {
+            set value [lindex $value 1]
+            if {$units != ""} {
+                set value [Rappture::Units::convert $value \
+                -context $units -to $units -units off]
+            }
+        }
+        uniform {
+            set min [lindex $value 1]
+            set max [lindex $value 2]
+            if {$units != ""} {
+                set min [Rappture::Units::convert $min \
+                -context $units -to $units -units off]
+                set max [Rappture::Units::convert $max \
+                -context $units -to $units -units off]
+            }
+            set value [expr {0.5 * ($min + $max)}]
+        }
+        default {
+            if {$units != ""} {
+                set value [Rappture::Units::convert $value \
+                -context $units -to $units -units off]
+            }
+        }
+    }
+
+    switch -- $what {
+        -color {
+            if {$_spectrum != 0} {
+                # continuous spectrum. just compute wavelength
+                set waveln [expr ($value - $_specv0) * $_spectrum + $_specw0]
+                return [Rappture::color::wave2RGB $waveln]
+            }
+            set i 0
+            set ilast ""
+            while {$i <= [llength $_axis]} {
+                set v [lindex $_axis $i]
+
+                if {$v == ""} {
+                    set r [lindex $_rvals $ilast]
+                    set g [lindex $_gvals $ilast]
+                    set b [lindex $_bvals $ilast]
+                    return [format {#%.4x%.4x%.4x} $r $g $b]
+                } elseif {$value < $v} {
+                    if {$ilast == ""} {
+                        set r [lindex $_rvals $i]
+                        set g [lindex $_gvals $i]
+                        set b [lindex $_bvals $i]
+                    } else {
+                        set vlast [lindex $_axis $ilast]
+                        set frac [expr {($value-$vlast)/double($v-$vlast)}]
+
+                        set rlast [lindex $_rvals $ilast]
+                        set r [lindex $_rvals $i]
+                        set r [expr {round($frac*($r-$rlast) + $rlast)}]
+
+                        set glast [lindex $_gvals $ilast]
+                        set g [lindex $_gvals $i]
+                        set g [expr {round($frac*($g-$glast) + $glast)}]
+
+                        set blast [lindex $_bvals $ilast]
+                        set b [lindex $_bvals $i]
+                        set b [expr {round($frac*($b-$blast) + $blast)}]
+                    }
+                    return [format {#%.4x%.4x%.4x} $r $g $b]
+                }
+                set ilast $i
+                incr i
+            }
+        }
+        -fraction {
+            set v0 [lindex $_axis 0]
+            set vend [lindex $_axis end]
+            return [expr {($value-$v0)/double($vend-$v0)}]
+        }
+        default {
+            error "bad flag \"$what\": should be -color or -fraction"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTIONS: -units
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Spectrum::units {
+    if {"" != $units && [Rappture::Units::System::for $units] == ""} {
+        error "bad value \"$units\": should be system of units"
+    }
+    event !change
+}
Index: /tags/1.6.0/gui/scripts/spinint.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/spinint.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/spinint.tcl	(revision 6168)
@@ -0,0 +1,162 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: spinint - spinner for integer values
+#
+#  This widget is a spinner with up/down arrows for managing integer
+#  values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Spinint.width 5 widgetDefault
+option add *Spinint.textBackground white widgetDefault
+
+itcl::class Rappture::Spinint {
+    inherit itk::Widget
+
+    itk_option define -min min Min ""
+    itk_option define -max max Max ""
+    itk_option define -delta delta Delta 1
+
+    constructor {args} { # defined below }
+
+    public method value {args}
+    public method bump {{delta up}}
+    protected method _validate {char}
+}
+
+itk::usual Spinint {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textforeground -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Spinint::constructor {args} {
+    itk_component add entry {
+        entry $itk_interior.entry
+    } {
+        usual
+        keep -width
+        rename -background -textbackground textBackground Background
+        rename -foreground -textforeground textForeground Foreground
+        rename -highlightbackground -background background Background
+    }
+    pack $itk_component(entry) -side left -expand yes -fill x
+
+    bind $itk_component(entry) <KeyPress> \
+        [itcl::code $this _validate %A]
+    bind $itk_component(entry) <Return> \
+        "$this value \[$itk_component(entry) get\]"
+    bind $itk_component(entry) <KP_Enter> \
+        "$this value \[$itk_component(entry) get\]"
+
+    itk_component add controls {
+        frame $itk_interior.cntls
+    }
+    pack $itk_component(controls) -side right
+
+    itk_component add up {
+        button $itk_component(controls).spinup \
+            -image [Rappture::icon intplus] \
+            -borderwidth 1 -relief raised -highlightthickness 0 \
+            -command [itcl::code $this bump up]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+        rename -background -buttonbackground buttonBackground Background
+    }
+    pack $itk_component(up) -side left -expand yes -fill both
+
+    itk_component add down {
+        button $itk_component(controls).spindn \
+            -image [Rappture::icon intminus] \
+            -borderwidth 1 -relief raised -highlightthickness 0 \
+            -command [itcl::code $this bump down]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+        rename -background -buttonbackground buttonBackground Background
+    }
+    pack $itk_component(down) -side right -expand yes -fill both
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Spinint::value {args} {
+    if {[llength $args] == 1} {
+        set newval [lindex $args 0]
+
+        if {"" != $newval} {
+            if {"" != $itk_option(-min) && $newval < $itk_option(-min)} {
+                set newval $itk_option(-min)
+            }
+            if {"" != $itk_option(-max) && $newval > $itk_option(-max)} {
+                set newval $itk_option(-max)
+            }
+        }
+
+        $itk_component(entry) delete 0 end
+        $itk_component(entry) insert 0 $newval
+        after 10 [list catch [list event generate $itk_component(hull) <<Value>>]]
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?newval?\""
+    }
+    return [$itk_component(entry) get]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: bump ?<delta>?
+#
+# Used internally when you click on the up/down arrows.  Clients
+# can also use it directly to bump values up/down.  The optional
+# <delta> can be an integer value or the keyword "up" or "down".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Spinint::bump {{delta up}} {
+    if {"up" == $delta} {
+        set delta $itk_option(-delta)
+    } elseif {"down" == $delta} {
+        set delta [expr {-$itk_option(-delta)}]
+    } elseif {![string is integer $delta]} {
+        error "bad delta \"$delta\": should be up, down, or integer"
+    }
+
+    set val [$itk_component(entry) get]
+    if {$val == ""} {
+        set val 0
+    }
+    value [expr {$val+$delta}]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _validate <char>
+#
+# Validates each character as it is typed into the spinner.
+# If the <char> is not a digit, then this procedure beeps and
+# prevents the character from being inserted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Spinint::_validate {char} {
+    if {[string match "\[ -~\]" $char]} {
+        if {![string match "\[0-9\]" $char]} {
+            bell
+            return -code break
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/switch.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/switch.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/switch.tcl	(revision 6168)
@@ -0,0 +1,168 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: switch - on/off switch
+#
+#  This widget is used to control a (boolean) on/off value.
+# It is just a wrapper around a button.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itcl::class Rappture::Switch {
+    inherit itk::Widget
+
+    itk_option define -oncolor onColor Color "#00cc00"
+    itk_option define -state state State "normal"
+    itk_option define -showimage showimage Showimage "true"
+    itk_option define -showtext showtext Showtext "true"
+    itk_option define -interactcommand interactCommand InteractCommand ""
+
+    constructor {args} { # defined below }
+    public method value {args}
+
+    private method _updateText {}
+    private method _toggle {args}
+    private variable _value 0  ;# value for this widget
+}
+
+itk::usual Switch {
+    keep -cursor -background
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Switch::constructor {args} {
+
+    itk_component add button {
+        button $itk_interior.value -compound left \
+            -overrelief flat -relief flat -padx 3 -pady 0 -bd 0 \
+            -command [itcl::code $this _toggle]
+    } {
+        #rename -background -textbackground textBackground Background
+    }
+    pack $itk_component(button) -side left -expand yes -fill both
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Switch::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+    if {[llength $args] == 1} {
+        set newval [lindex $args 0]
+        # I don't like the "string is" commands. They have too many quirks.
+        # If we're calling "expr" anyways, just put a catch on it.
+        if { [catch {expr {($newval) ? 1 : 0}} newval] != 0 } {
+            error "$newval: should be a yes, no, on, off, true, false, 0, or 1."
+        }
+        if {$onlycheck} {
+            return
+        }
+        set _value $newval
+        event generate $itk_component(hull) <<Value>>
+        _updateText
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+    return [expr {($_value) ? "yes" : "no"}]
+}
+
+# ----------------------------------------------------------------------
+# _toggle
+#
+#        Use internally to convert the toggled button into the
+#        proper boolean format.  Yes, right now it's hardcoded to
+#        yes/no.  But in the future it could be some other text.
+#
+#        Can't use old "value" method because _value is already set
+#        be the widget and doesn't pass the value on the command line.
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Switch::_toggle {} {
+    if {$_value} {
+        value off
+    } else {
+        value on
+    }
+    if {[string length $itk_option(-interactcommand)] > 0} {
+        uplevel #0 $itk_option(-interactcommand)
+    }
+}
+
+itcl::body Rappture::Switch::_updateText {} {
+    set image ""
+    set text ""
+    if { $_value } {
+        if {$itk_option(-showimage)} {
+            set image [Rappture::icon switch1]
+        }
+        if {$itk_option(-showtext)} {
+            set text "yes"
+        }
+    } else {
+        if {$itk_option(-showimage)} {
+            set image [Rappture::icon switch0]
+        }
+        if {$itk_option(-showtext)} {
+            set text "no"
+        }
+    }
+    $itk_component(button) configure -text $text -image $image
+}
+
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -oncolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Switch::oncolor {
+    # does nothing now, but may come back soon
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Switch::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    $itk_component(button) configure -state $itk_option(-state)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -showimage
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Switch::showimage {
+    if {[string is boolean $itk_option(-showimage)] != 1} {
+        error "bad value \"$itk_option(-showimage)\": should be a boolean"
+    }
+    _updateText
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -showtext
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Switch::showtext {
+    if {[string is boolean $itk_option(-showtext)] != 1} {
+        error "bad value \"$itk_option(-showtext)\": should be a boolean"
+    }
+    _updateText
+}
Index: /tags/1.6.0/gui/scripts/table.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/table.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/table.tcl	(revision 6168)
@@ -0,0 +1,232 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: table - extracts data from an XML description of a table
+#
+#  This object represents one table in an XML description of a table.
+#  It simplifies the process of extracting data representing columns
+#  in the table.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+namespace eval Rappture { # forward declaration }
+
+itcl::class Rappture::Table {
+    constructor {xmlobj path} { # defined below }
+    destructor { # defined below }
+
+    public method rows {}
+    public method columns {args}
+    public method values {args}
+    public method limits {col}
+    public method hints {{key ""}}
+
+    private variable _xmlobj ""  ;# ref to lib obj with curve data
+    private variable _table ""   ;# lib obj representing this table
+    private variable _tuples ""  ;# list of tuples with table data
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Table::constructor {xmlobj path} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be Rappture::library"
+    }
+    set _table [$xmlobj element -as object $path]
+
+    #
+    # Load data from the table and store in the tuples.
+    #
+    set _tuples [Rappture::Tuples ::#auto]
+    foreach cname [$_table children -type column] {
+        set label [$_table get $cname.label]
+        $_tuples column insert end -name $cname -label $label
+    }
+
+    set cols [llength [$_tuples column names]]
+    set nline 1
+    foreach line [split [$_table get data] \n] {
+        if {[llength $line] == 0} {
+            continue
+        }
+        if {[llength $line] != $cols} {
+            error "bad data at line $nline: expected $cols columns but got \"[string trim $line]\""
+        }
+        $_tuples insert end $line
+        incr nline
+    }
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Table::destructor {} {
+    itcl::delete object $_tuples
+    itcl::delete object $_table
+    # don't destroy the _xmlobj! we don't own it!
+}
+
+# ----------------------------------------------------------------------
+# USAGE: rows
+#
+# Returns the number of rows of information in this table.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Table::rows {} {
+    return [$_tuples size]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: columns ?-component|-label|-units? ?<pos>?
+#
+# Returns information about the columns associated with this table.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Table::columns {args} {
+    Rappture::getopts args params {
+        flag switch -component
+        flag switch -label default
+        flag switch -units
+    }
+    if {[llength $args] == 0} {
+        set cols [llength [$_tuples column names]]
+        set plist ""
+        for {set i 0} {$i < $cols} {incr i} {
+            lappend plist $i
+        }
+    } elseif {[llength $args] == 1} {
+        set p [lindex $args 0]
+        if {[string is integer $p]} {
+            lappend plist $p
+        } else {
+            set pos [lsearch -exact [$_tuples column names] $p]
+            if {$pos < 0} {
+                error "bad column \"$p\": should be column name or integer index"
+            }
+            lappend plist $pos
+        }
+    } else {
+        error "wrong # args: should be \"columns ?-component|-label|-units? ?pos?\""
+    }
+
+    set rlist ""
+    switch -- $params(switch) {
+        -component {
+            set names [$_tuples column names]
+            foreach p $plist {
+                lappend rlist [lindex $names $p]
+            }
+        }
+        -label {
+            set names [$_tuples column names]
+            foreach p $plist {
+                set name [lindex $names $p]
+                catch {unset opts}
+                array set opts [$_tuples column info $name]
+                lappend rlist $opts(-label)
+            }
+        }
+        -units {
+            set names [$_tuples column names]
+            foreach p $plist {
+                set comp [lindex $names $p]
+                lappend rlist [$_table get $comp.units]
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: values ?-row <index>? ?-column <index>?
+#
+# Returns a single value or a list of values for data in this table.
+# If a particular -row and -column is specified, then it returns
+# a single value for that row/column.  If either the -row or the
+# -column is specified, then it returns a list of values in that
+# row or column.  With no args, it returns all values in the table.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Table::values {args} {
+    Rappture::getopts args params {
+        value -row ""
+        value -column ""
+    }
+    if {[llength $args] > 0} {
+        error "wrong # args: should be \"values ?-row r? ?-column c?\""
+    }
+    if {"" == $params(-row) && "" == $params(-column)} {
+        return [$_tuples get]
+    } elseif {"" == $params(-column)} {
+        return [lindex [$_tuples get $params(-row)] 0]
+    }
+
+    if {[string is integer $params(-column)]} {
+        set col [lindex [$_tuples column names] $params(-column)]
+    } else {
+        set col $params(-column)
+        if {"" == [$_tuples column names $col]} {
+            error "bad column name \"$col\": should be [join [$_tuples column names] {, }]"
+        }
+    }
+
+    if {"" == $params(-row)} {
+        # return entire column
+        return [$_tuples get -format $col]
+    }
+    # return a particular cell
+    return [$_tuples get -format $col $params(-row)]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: limits <column>
+#
+# Returns the {min max} limits of the numerical values in the
+# specified <column>, which can be either an integer index to
+# a column or a column name.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Table::limits {column} {
+    set min ""
+    set max ""
+    foreach v [values -column $column] {
+        if {"" == $min} {
+            set min $v
+            set max $v
+        } else {
+            if {$v < $min} { set min $v }
+            if {$v > $max} { set max $v }
+        }
+    }
+    return [list $min $max]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this table.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Table::hints {{keyword ""}} {
+    foreach {key path} {
+        label   about.label
+        color   about.color
+        style   about.style
+    } {
+        set str [$_table get $path]
+        if {"" != $str} {
+            set hints($key) $str
+        }
+    }
+
+    if {$keyword != ""} {
+        if {[info exists hints($keyword)]} {
+            return $hints($keyword)
+        }
+        return ""
+    }
+    return [array get hints]
+}
Index: /tags/1.6.0/gui/scripts/tempgauge.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/tempgauge.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/tempgauge.tcl	(revision 6168)
@@ -0,0 +1,152 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: tempgauge - gauge for temperature values
+#
+#  This is a specialize form of the more general gauge, used for
+#  displaying temperature values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *TemperatureGauge.sampleWidth 30 widgetDefault
+option add *TemperatureGauge.sampleHeight 20 widgetDefault
+option add *TemperatureGauge.borderWidth 2 widgetDefault
+option add *TemperatureGauge.relief sunken widgetDefault
+option add *TemperatureGauge.textBackground #cccccc widgetDefault
+option add *TemperatureGauge.valuePosition "right" widgetDefault
+option add *TemperatureGauge.editable yes widgetDefault
+option add *TemperatureGauge.state normal widgetDefault
+
+itcl::class Rappture::TemperatureGauge {
+    inherit Rappture::Gauge
+
+    constructor {args} {
+        array set attrs $args
+        Rappture::Gauge::constructor -uq $attrs(-uq)
+    } {
+        eval itk_initialize -spectrum $_spectrum -units K $args
+    }
+    protected method _redraw {}
+    protected method _resize {}
+
+    # create a spectrum to use for all temperature widgets
+    private common _spectrum [Rappture::Spectrum [namespace current]::#auto {
+        0.0    blue
+        300.0  red
+        500.0  yellow
+    } -units K]
+}
+
+itk::usual TemperatureGauge {
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Used internally to redraw the gauge on the internal canvas based
+# on the current value and the size of the widget.  For this temperature
+# gauge, we draw something that looks like a thermometer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TemperatureGauge::_redraw {} {
+    set c $itk_component(icon)
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    if {"" == [$c find all]} {
+        # first time around, create the items
+        $c create oval 0 0 1 1 -outline "" -tags bulbfill
+        $c create oval 0 0 1 1 -outline black -tags bulboutline
+        $c create oval 0 0 1 1 -outline "" -fill "" -stipple gray50 -tags {bulbscreen screen}
+        $c create rect 0 0 1 1 -outline black -fill white -tags stickoutline
+        $c create rect 0 0 1 1 -outline "" -tags stickfill
+        $c create rect 0 0 1 1 -outline "" -fill "" -stipple gray50 -tags {stickscreen screen}
+        $c create image 0 0 -anchor w -image "" -tags bimage
+    }
+
+    if {"" != $itk_option(-spectrum)} {
+        set color [$itk_option(-spectrum) get [value]]
+        set frac [$itk_option(-spectrum) get -fraction [value]]
+    } else {
+        set color ""
+        set frac 0
+    }
+
+    # update the items based on current values
+    set x 1
+    set y [expr {0.5*$h}]
+    $c coords bimage 0 $y
+    if {$itk_option(-image) != ""} {
+        set x [expr {$x + [image width $itk_option(-image)] + 2}]
+    }
+
+    set avail [expr {$w-$x}]
+    if {$avail > 0} {
+        #
+        # If we have any space left over, draw the thermometer
+        # as a mercury bulb on the left and a stick to the right.
+        #
+        set bsize [expr {0.2*$avail}]
+        if {$bsize > 0.5*$h-2} {set bsize [expr {0.5*$h-2}]}
+        set ssize [expr {0.5*$bsize}]
+
+        $c coords bulboutline $x [expr {$y-$bsize}] \
+            [expr {$x+2*$bsize}] [expr {$y+$bsize}]
+        $c coords bulbscreen [expr {$x-1}] [expr {$y-$bsize-1}] \
+            [expr {$x+2*$bsize+1}] [expr {$y+$bsize+1}]
+        $c coords bulbfill $x [expr {$y-$bsize}] \
+            [expr {$x+2*$bsize}] [expr {$y+$bsize}]
+
+        set x0 [expr {$x+2*$bsize+1}]
+        set x1 [expr {$w-2}]
+        set xr [expr {($x1-$x0)*$frac + $x0}]
+        $c coords stickoutline [expr {$x0-2}] [expr {$y-$ssize}] \
+            $x1 [expr {$y+$ssize}]
+        $c coords stickscreen [expr {$x0-2}] [expr {$y-$ssize}] \
+            [expr {$x1+1}] [expr {$y+$ssize+1}]
+        $c coords stickfill [expr {$x0-2}] [expr {$y-$ssize+1}] \
+            $xr [expr {$y+$ssize}]
+
+        $c itemconfigure bulbfill -fill $color
+        $c itemconfigure stickfill -fill $color
+    }
+
+    if {$itk_option(-state) == "disabled"} {
+        $c itemconfigure screen -fill white
+    } else {
+        $c itemconfigure screen -fill ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _resize
+#
+# Used internally to resize the internal canvas based on the -image
+# option or the size of the text.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TemperatureGauge::_resize {} {
+    if {$itk_option(-samplewidth) > 0} {
+        set w $itk_option(-samplewidth)
+    } else {
+        set w [winfo reqheight $itk_component(value)]
+    }
+    if {$itk_option(-image) != ""} {
+        set w [expr {$w+[image width $itk_option(-image)]+4}]
+    }
+
+    if {$itk_option(-sampleheight) > 0} {
+        set h $itk_option(-sampleheight)
+    } else {
+        if {$itk_option(-image) != ""} {
+            set h [expr {[image height $itk_option(-image)]+4}]
+        } else {
+            set h [winfo reqheight $itk_component(value)]
+        }
+    }
+
+    $itk_component(icon) configure -width $w -height $h
+}
Index: /tags/1.6.0/gui/scripts/textentry.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/textentry.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/textentry.tcl	(revision 6168)
@@ -0,0 +1,674 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: textentry - general-purpose text entry widget
+#
+#  This widget is a cross between the Tk entry and text widgets.  For
+#  one-line messages, it acts like an entry widget.  For larger
+#  messages, it morphs into a text widget.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *TextEntry.size auto widgetDefault
+option add *TextEntry.width 0 widgetDefault
+option add *TextEntry.height 0 widgetDefault
+option add *TextEntry.textBackground white widgetDefault
+option add *TextEntry*disabledForeground #a3a3a3 widgetDefault
+option add *TextEntry*disabledBackground white widgetDefault
+
+option add *TextEntry.hintForeground gray50 widgetDefault
+option add *TextEntry.hintFont \
+    -*-helvetica-medium-r-normal-*-10-* widgetDefault
+option add *TextEntry.codeFont \
+    -*-courier-medium-r-normal-*-12-* widgetDefault
+
+
+itcl::class Rappture::TextEntry {
+    inherit itk::Widget
+
+    itk_option define -state state State "normal"
+    itk_option define -disabledforeground disabledForeground DisabledForeground ""
+    itk_option define -disabledbackground disabledBackground DisabledBackground ""
+    itk_option define -width width Width 0
+    itk_option define -height height Height 0
+
+    constructor {owner path args} {
+        # defined below
+    }
+
+    public method value {args}
+
+    public method label {}
+    public method tooltip {}
+    public method size {} { return $_size }
+
+    protected method _layout {}
+    protected method _setValue {value}
+    protected method _newValue {}
+    protected method _edit {option args}
+    protected method _uploadValue {args}
+    protected method _downloadValue {}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+    private variable _owner ""      ;# thing managing this control
+    private variable _path ""       ;# path in XML to this number
+
+    private variable _layout ""     ;# entry or full text size
+    private variable _value ""      ;# value inside the widget
+    private variable _size ""       ;# size hint from XML
+    private variable _icon ""       ;# size hint from XML
+}
+
+itk::usual TextEntry {
+    keep -foreground -background -textbackground -font -cursor
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextEntry::constructor {owner path args} {
+    if {[catch {$owner isa Rappture::ControlOwner} valid] != 0 || !$valid} {
+        error "bad object \"$owner\": should be Rappture::ControlOwner"
+    }
+    set _owner $owner
+    set _path $path
+
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !layout
+    $_dispatcher dispatch $this !layout "[itcl::code $this _layout]; list"
+
+    set _size [string trim [$_owner xml get $path.size]]
+
+    set hints [string trim [$_owner xml get $path.about.hints]]
+    set icon  [string trim [$_owner xml get $path.about.icon]]
+    if {[string length $icon] > 0} {
+        set _icon [image create photo -data $icon]
+    }
+    if {[string length $hints] > 0} {
+        itk_component add hints {
+            ::label $itk_interior.hints -anchor w -text $hints
+        } {
+            usual
+            rename -foreground -hintforeground hintForeground Foreground
+            rename -font -hintfont hintFont Font
+        }
+        pack $itk_component(hints) -side bottom -fill x
+    }
+
+    eval itk_initialize $args
+
+    # Trimming for now.  May need a <verbatim> flag to indicate to leave
+    # the string alone.
+    set str [string trim [$_owner xml get $path.default]]
+    if {"" != $str} {
+        value $str
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?-check? ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.  If the -check flag is included, the
+# new value is not actually applied, but just checked for correctness.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextEntry::value {args} {
+    set onlycheck 0
+    set i [lsearch -exact $args -check]
+    if {$i >= 0} {
+        set onlycheck 1
+        set args [lreplace $args $i $i]
+    }
+
+    if {[llength $args] == 1} {
+        if {$onlycheck} {
+            # someday we may add validation...
+            return
+        }
+        set newval [string trim [lindex $args 0]]
+        _setValue $newval
+        _newValue
+
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?-check? ?newval?\""
+    }
+
+    #
+    # Query the value and return.
+    #
+    switch -- $_layout {
+        entry {
+            return [$itk_component(entry) get]
+        }
+        text {
+            return [$itk_component(text) get 1.0 end-1char]
+        }
+        binary {
+            return $_value
+        }
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: label
+#
+# Clients use this to query the label associated with this widget.
+# Reaches into the XML and pulls out the appropriate label string.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextEntry::label {} {
+    set label [string trim [$_owner xml get $_path.about.label]]
+    if {"" == $label} {
+        set label "String"
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip
+#
+# Clients use this to query the tooltip associated with this widget.
+# Reaches into the XML and pulls out the appropriate description
+# string.  Returns the string that should be used with the
+# Rappture::Tooltip facility.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextEntry::tooltip {} {
+    set str [string trim [$_owner xml get $_path.about.description]]
+    return $str
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _layout
+#
+# Used internally to change the layout of this widget depending
+# on the .size hint and its contents.  Switches between an entry
+# and a text widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextEntry::_layout {} {
+    set size $_size
+    if {$size == "" || $size == "auto"} {
+        #
+        # If the size is "auto", then look at the current value
+        # and count its lines/characters.
+        #
+        if {[string length $_value] > 1920} {
+            # if size is really big, don't bother counting lines
+            set size "80x24"
+        } else {
+            set chars 0
+            set lines 0
+            foreach line [split $_value \n] {
+                incr lines
+                if {[string length $line] > $chars} {
+                    set chars [string length $line]
+                }
+            }
+            incr chars
+
+            if {$lines > 1} {
+                set size "${chars}x${lines}"
+            } else {
+                set size $chars
+            }
+        }
+    }
+
+    if {$size == "binary" || [Rappture::encoding::is binary $_value]} {
+        set newlayout "binary"
+    } elseif {[regexp {^[0-9]+$} $size]} {
+        set newlayout "entry"
+    } elseif {[regexp {^([0-9]+)x([0-9]+)$} $size match w h]} {
+        set newlayout "text"
+    }
+
+    if {$newlayout != $_layout} {
+        set oldval ""
+        if {$_layout == "entry"} {
+            set oldval [$itk_component(entry) get]
+        } elseif {$_layout == "text"} {
+            set oldval [$itk_component(text) get 1.0 end-1char]
+        }
+
+        # Set the _layout here because unpacking the widgets triggers
+        # the "_edit finalize" method (focus change).
+
+        set _layout $newlayout
+
+        # take down any existing widget
+        foreach win [pack slaves $itk_interior] {
+            if { [winfo name $win] != "hints" } {
+                pack forget $win
+            }
+        }
+
+        switch -- $newlayout {
+            entry {
+                # don't have the entry widget yet? then create it
+                if {![winfo exists $itk_interior.entry]} {
+                    itk_component add entry {
+                        entry $itk_interior.entry
+                    } {
+                        usual
+                        rename -background -textbackground textBackground Background
+                        rename -foreground -textforeground textForeground Foreground
+                    }
+                    $itk_component(entry) configure \
+                        -background $itk_option(-textbackground) \
+                        -foreground $itk_option(-textforeground)
+
+                    # Make sure these event bindings occur after the class bindings.
+                    # Otherwise you'll always get the entry value before the edit.
+                    bind textentry-$this <KeyPress> \
+                        [itcl::code $this _newValue]
+                    bind textentry-$this <KeyPress-Return> \
+                        [itcl::code $this _edit finalize]
+                    bind textentry-$this <Control-KeyPress-a> \
+                        "[list $itk_component(entry) selection range 0 end]; break"
+                    bind textentry-$this <FocusOut> \
+                        [itcl::code $this _edit finalize]
+                    bind textentry-$this <Unmap> \
+                        [itcl::code $this _edit finalize]
+                    set bindtags [bindtags $itk_component(entry)]
+                    lappend bindtags textentry-$this
+                    bindtags $itk_component(entry) $bindtags
+
+                    itk_component add emenu {
+                        menu $itk_component(entry).menu -tearoff 0
+                    }
+                    $itk_component(emenu) add command \
+                        -label "Cut" -accelerator "^X" \
+                        -command [itcl::code $this _edit action entry cut]
+                    $itk_component(emenu) add command \
+                        -label "Copy" -accelerator "^C" \
+                        -command [itcl::code $this _edit action entry copy]
+                    $itk_component(emenu) add command \
+                        -label "Paste" -accelerator "^V" \
+                        -command [itcl::code $this _edit action entry paste]
+                    $itk_component(emenu) add command \
+                        -label "Select All" -accelerator "^A" \
+                        -command [itcl::code $this _edit action entry selectall]
+                    bind $itk_component(entry) <<PopupMenu>> \
+                        [itcl::code $this _edit menu emenu %X %Y]
+                }
+
+                # show the entry widget
+                pack $itk_component(entry) -expand yes -fill both
+
+                # load any previous value
+                regsub -all "\n" $oldval "" oldval
+                $itk_component(entry) delete 0 end
+                $itk_component(entry) insert end $oldval
+            }
+
+            text {
+                if {![winfo exists $itk_interior.scrl]} {
+                    itk_component add scrollbars {
+                        Rappture::Scroller $itk_interior.scrl \
+                            -xscrollmode auto -yscrollmode auto
+                    }
+
+                    itk_component add text {
+                        text $itk_component(scrollbars).text \
+                            -width 1 -height 1 -wrap char
+                    } {
+                        usual
+                        ignore -highlightthickness -highlightcolor
+                        rename -background -textbackground textBackground Background
+                        rename -foreground -textforeground textForeground Foreground
+                        rename -font -codefont codeFont CodeFont
+                    }
+                    $itk_component(text) configure \
+                        -background $itk_option(-textbackground) \
+                        -foreground $itk_option(-textforeground) \
+                        -font $itk_option(-codefont) \
+                        -highlightthickness 1
+                    $itk_component(scrollbars) contents $itk_component(text)
+
+                    # Make sure these event bindings occur after the class bindings.
+                    # Otherwise you'll always get the text value before the edit.
+                    bind textentry-$this <KeyPress> \
+                        [itcl::code $this _newValue]
+                    # leave [Return] key alone for multi-line text so the user
+                    # can enter newlines and keep editing
+                    bind textentry-$this <Control-KeyPress-a> \
+                        "[list $itk_component(text) tag add sel 1.0 end]; break"
+                    bind textentry-$this <FocusOut> \
+                        [itcl::code $this _edit finalize]
+                    bind textentry-$this <Unmap> \
+                        [itcl::code $this _edit finalize]
+                    set bindtags [bindtags $itk_component(text)]
+                    lappend bindtags textentry-$this
+                    bindtags $itk_component(text) $bindtags
+
+                    itk_component add tmenu {
+                        menu $itk_component(text).menu -tearoff 0
+                    }
+                    $itk_component(tmenu) add command \
+                        -label "Cut" -accelerator "^X" \
+                        -command [itcl::code $this _edit action text cut]
+                    $itk_component(tmenu) add command \
+                        -label "Copy" -accelerator "^C" \
+                        -command [itcl::code $this _edit action text copy]
+                    $itk_component(tmenu) add command \
+                        -label "Paste" -accelerator "^V" \
+                        -command [itcl::code $this _edit action text paste]
+                    $itk_component(tmenu) add command \
+                        -label "Select All" -accelerator "^A" \
+                        -command [itcl::code $this _edit action text selectall]
+                    $itk_component(tmenu) add separator
+
+                    $itk_component(tmenu) add command \
+                        -label [Rappture::filexfer::label upload] \
+                        -command [itcl::code $this _uploadValue -start]
+                    $itk_component(tmenu) add command \
+                        -label [Rappture::filexfer::label download] \
+                        -command [itcl::code $this _downloadValue]
+
+                    bind $itk_component(text) <<PopupMenu>> \
+                        [itcl::code $this _edit menu tmenu %X %Y]
+                }
+
+                # show the text editor widget
+                pack $itk_component(scrollbars) -expand yes -fill both
+                $itk_component(text) configure -width $w -height $h
+
+                # load any previous value
+                $itk_component(text) delete 1.0 end
+                $itk_component(text) insert end $oldval
+            }
+
+            binary {
+                if {![winfo exists $itk_interior.bin]} {
+                    itk_component add binary {
+                        frame $itk_interior.bin
+                    }
+                    set icon $_icon
+                    if { $icon == "" } {
+                        set icon [Rappture::icon binary]
+                    }
+                    itk_component add binicon {
+                        ::label $itk_component(binary).binicon \
+                            -image $icon -borderwidth 0
+                    }
+                    pack $itk_component(binicon) -side left
+
+                    itk_component add bininfo {
+                        ::label $itk_component(binary).bininfo \
+                            -text "Empty\n0 bytes" \
+                            -width 5 -justify left -anchor w -borderwidth 0
+                    }
+                    pack $itk_component(bininfo) -side left -expand yes -fill x -padx 4
+
+                    itk_component add bmenu {
+                        menu $itk_component(binary).menu -tearoff 0
+                    }
+                    $itk_component(bmenu) add command \
+                        -label [Rappture::filexfer::label upload] \
+                        -command [itcl::code $this _uploadValue -start]
+                    $itk_component(bmenu) add command \
+                        -label [Rappture::filexfer::label download] \
+                        -command [itcl::code $this _downloadValue]
+
+                    bind $itk_component(binicon) <<PopupMenu>> \
+                        [itcl::code $this _edit menu bmenu %X %Y]
+                    bind $itk_component(bininfo) <<PopupMenu>> \
+                        [itcl::code $this _edit menu bmenu %X %Y]
+                }
+
+                # show the binary mode rep
+                pack $itk_component(binary) -side top -fill x
+
+            }
+            default {
+                error "don't know how to handle mode \"$newlayout\" for string editor"
+            }
+        }
+    }
+
+    #
+    # Fix the overall widget size according to -width / -height
+    #
+    if {$itk_option(-width) == 0 && $itk_option(-height) == 0} {
+        pack propagate $itk_component(hull) yes
+    } else {
+        pack propagate $itk_component(hull) no
+        component hull configure \
+            -width $itk_option(-width) -height $itk_option(-width)
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _setValue <newValue>
+#
+# Used internally to set the value for this widget.  If the <newValue>
+# string is ASCII, then it is stored directly and the widget is enabled
+# for editing.  Otherwise, the value is cached and a representation of
+# the data is displayed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextEntry::_setValue {newval} {
+    if {[Rappture::encoding::is binary $newval]} {
+        # looks like a binary file
+        set _value $newval
+    } else {
+        # ascii file -- map carriage returns to line feeds
+        regsub -all "\r\n" $newval "\n" newval
+        regsub -all "\r" $newval "\n" newval
+        set _value $newval
+    }
+
+    # fix up the layout so the display widgets exist, then load the new value
+    _layout
+
+    switch -- $_layout {
+        entry {
+            $itk_component(entry) configure -state normal
+            $itk_component(entry) delete 0 end
+            $itk_component(entry) insert end $_value
+            $itk_component(entry) configure -state $itk_option(-state)
+        }
+        text {
+            $itk_component(text) configure -state normal
+            $itk_component(text) delete 1.0 end
+            $itk_component(text) insert end $_value
+            $itk_component(text) configure -state $itk_option(-state)
+        }
+        binary {
+            set desc [Rappture::utils::datatype $_value]
+            append desc "\n[Rappture::utils::binsize [string length $_value]]"
+            $itk_component(bininfo) configure -text $desc
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _newValue
+#
+# Invoked automatically whenever the value in the entry changes.
+# Sends a <<Value>> event to notify clients of the change.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextEntry::_newValue {} {
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _edit action <which> <action>
+# USAGE: _edit menu <which> <X> <Y>
+# USAGE: _edit finalize
+# USAGE: _edit log
+#
+# Used internally to manage edit operations.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextEntry::_edit {option args} {
+    if {$itk_option(-state) == "disabled"} {
+        return  ;# disabled? then bail out here!
+    }
+    switch -- $option {
+        action {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"_edit $option which action\""
+            }
+            set widget [lindex $args 0]
+            set action [lindex $args 1]
+            switch -- $action {
+                cut - copy - paste {
+                    set event "<<[string totitle $action]>>"
+                    event generate $itk_component($widget) $event
+                }
+                selectall {
+                    switch -- $widget {
+                        entry { $itk_component(entry) selection range 0 end }
+                        text  { $itk_component(text) tag add sel 1.0 end }
+                        default { error "don't know how to select for $widget" }
+                    }
+                }
+                default {
+                    error "don't know how to handle action $action"
+                }
+            }
+            Rappture::Logger::log input $_path -action $action
+        }
+        menu {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"_edit $option which x y\""
+            }
+            set mname [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+            tk_popup $itk_component($mname) $x $y
+        }
+        finalize {
+            event generate $itk_component(hull) <<Final>>
+
+            # log each final value
+            set newval [value]
+            if {$newval ne $_value} {
+                Rappture::Logger::log input $_path $newval
+                set _value $newval
+            }
+        }
+        default {
+            error "bad option \"$option\": should be action, menu, log"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _uploadValue -start
+# USAGE: _uploadValue -assign <key> <value> <key> <value> ...
+#
+# Used internally to initiate an upload operation.  Prompts the
+# user to upload into the text area of this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextEntry::_uploadValue {args} {
+    switch -- $_layout {
+        entry   { set widget $itk_component(entry) }
+        text    { set widget $itk_component(text) }
+        default { set widget $itk_component(hull) }
+    }
+
+    set opt [string trim [lindex $args 0]]
+    switch -- $opt {
+        -start {
+            set tool [Rappture::Tool::resources -appname]
+            set cntls [list $_path [label] [tooltip]]
+            Rappture::filexfer::upload \
+                $tool $cntls [itcl::code $this _uploadValue -assign]
+        }
+        -assign {
+            array set data [lrange $args 1 end] ;# skip option
+            if {[info exists data(error)]} {
+                Rappture::Tooltip::cue $widget $data(error)
+                Rappture::Logger::log warning $_path $data(error)
+            }
+            if {[info exists data(data)]} {
+                Rappture::Tooltip::cue hide  ;# take down note about the popup
+                _setValue $data(data)
+                _newValue
+                Rappture::Logger::log upload $_path $data(data)
+            }
+        }
+        default {
+            error "bad option \"$opt\": should be -start or -assign"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _downloadValue
+#
+# Used internally to initiate a download operation.  Takes the current
+# value and downloads it to the user in a new browser window.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextEntry::_downloadValue {} {
+    set mesg [Rappture::filexfer::download [value] input.txt]
+
+    if {$mesg ne ""} {
+        switch -- $_layout {
+            entry   { set widget $itk_component(entry) }
+            text    { set widget $itk_component(text) }
+            default { set widget $itk_component(hull) }
+        }
+        Rappture::Tooltip::cue $widget $mesg
+        Rappture::Logger::log warning $_path $mesg
+    } else {
+        Rappture::Logger::log download $_path
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -state
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::TextEntry::state {
+    set valid {normal disabled}
+    if {[lsearch -exact $valid $itk_option(-state)] < 0} {
+        error "bad value \"$itk_option(-state)\": should be [join $valid {, }]"
+    }
+    if {[info exists itk_component(text)]} {
+        $itk_component(text) configure -state $itk_option(-state)
+        $itk_component(tmenu) entryconfigure "Cut" -state $itk_option(-state)
+        $itk_component(tmenu) entryconfigure "Copy" -state $itk_option(-state)
+        $itk_component(tmenu) entryconfigure "Paste" -state $itk_option(-state)
+        if {$itk_option(-state) == "disabled"} {
+            $itk_component(text) configure \
+                -foreground $itk_option(-disabledforeground) \
+                -background $itk_option(-disabledbackground)
+        } else {
+            $itk_component(text) configure \
+                -foreground $itk_option(-foreground) \
+                -background $itk_option(-textbackground)
+        }
+    }
+    if {[info exists itk_component(entry)]} {
+        $itk_component(entry) configure -state $itk_option(-state)
+        $itk_component(emenu) entryconfigure "Cut" -state $itk_option(-state)
+        $itk_component(emenu) entryconfigure "Copy" -state $itk_option(-state)
+        $itk_component(emenu) entryconfigure "Paste" -state $itk_option(-state)
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -width
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::TextEntry::width {
+    # check size to see if it has the proper form
+    winfo pixels $itk_component(hull) $itk_option(-width)
+    $_dispatcher event -idle !layout
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -height
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::TextEntry::height {
+    # check size to see if it has the proper form
+    winfo pixels $itk_component(hull) $itk_option(-height)
+    $_dispatcher event -idle !layout
+}
+
+
Index: /tags/1.6.0/gui/scripts/textresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/textresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/textresult.tcl	(revision 6168)
@@ -0,0 +1,461 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: TextResult - Log output for ResultSet
+#
+#  This widget is used to show text output in a ResultSet.  The log
+#  output from a tool, for example, is rendered as a TextResult.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *TextResult.width 4i widgetDefault
+option add *TextResult.height 4i widgetDefault
+option add *TextResult.textBackground white widgetDefault
+option add *TextResult.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *TextResult.textFont \
+    -*-courier-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::TextResult {
+    inherit itk::Widget
+
+    constructor {args} {
+        # defined below
+    }
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method download {option args}
+
+    public method select {option args}
+    public method find {option}
+    public method popup {option args}
+
+    private variable _dataobj ""  ;# data object currently being displayed
+    private variable _raised      ;# maps all data objects => -raise param
+}
+
+itk::usual TextResult {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextResult::constructor {args} {
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    #
+    # CONTROL BAR with find/select functions
+    #
+    itk_component add controls {
+        frame $itk_interior.cntls
+    }
+    pack $itk_component(controls) -side bottom -fill x -pady {4 0}
+
+    itk_component add selectall {
+        button $itk_component(controls).selall -text "Select All" \
+            -command [itcl::code $this select all]
+    }
+    pack $itk_component(selectall) -side right -fill y
+
+    itk_component add findl {
+        label $itk_component(controls).findl -text "Find:"
+    }
+    pack $itk_component(findl) -side left
+
+    itk_component add find {
+        entry $itk_component(controls).find -width 20
+    }
+    pack $itk_component(find) -side left
+
+    itk_component add finddown {
+        button $itk_component(controls).finddown \
+            -image [Rappture::icon finddn] \
+            -relief flat -overrelief raised \
+            -command [itcl::code $this find down]
+    } {
+        usual
+        ignore -relief
+    }
+    pack $itk_component(finddown) -side left
+
+    itk_component add findup {
+        button $itk_component(controls).findup \
+            -image [Rappture::icon findup] \
+            -relief flat -overrelief raised \
+            -command [itcl::code $this find up]
+    } {
+        usual
+        ignore -relief
+    }
+    pack $itk_component(findup) -side left
+
+    itk_component add findstatus {
+        label $itk_component(controls).finds -width 10 -anchor w
+    }
+    pack $itk_component(findstatus) -side left -expand yes -fill x
+
+    # shortcut for Return in search field
+    bind $itk_component(find) <KeyPress-Return> "
+        $itk_component(finddown) configure -relief sunken
+        update idletasks
+        after 200
+        $itk_component(finddown) configure -relief flat
+        $itk_component(finddown) invoke
+    "
+    bind $itk_component(find) <KeyPress> \
+        [itcl::code $this find reset]
+
+    #
+    # TEXT AREA
+    #
+    itk_component add scroller {
+        Rappture::Scroller $itk_interior.scroller \
+            -xscrollmode auto -yscrollmode auto
+    }
+    pack $itk_component(scroller) -expand yes -fill both
+
+    itk_component add text {
+        text $itk_component(scroller).text -width 1 -height 1 -wrap none
+    } {
+        usual
+        rename -background -textbackground textBackground Background
+        rename -font -textfont textFont Font
+    }
+    $itk_component(scroller) contents $itk_component(text)
+    $itk_component(text) configure -state disabled
+
+    $itk_component(text) tag configure ERROR -foreground red
+
+    itk_component add emenu {
+        menu $itk_component(text).menu -tearoff 0
+    } {
+        ignore -tearoff
+    }
+    $itk_component(emenu) add command \
+        -label "Select All" -accelerator "Ctrl+A" \
+        -command [itcl::code $this select all]
+    $itk_component(emenu) add command \
+        -label "Select None" -accelerator "Esc" \
+        -command [itcl::code $this select none]
+    bind $itk_component(text) <<PopupMenu>> \
+        [itcl::code $this popup menu emenu %X %Y]
+    $itk_component(emenu) add command \
+        -label "Copy" -accelerator "Ctrl+C" \
+        -command [list event generate $itk_component(text) <<Copy>>]
+
+    bind $itk_component(text) <Control-KeyPress-a> \
+        [list $itk_component(emenu) invoke "Select All"]
+    bind $itk_component(text) <Control-KeyPress-c> \
+        [list $itk_component(emenu) invoke "Copy"]
+    bind $itk_component(text) <Escape> \
+        [list $itk_component(emenu) invoke "Select None" ]
+    bind $itk_component(text) <Enter> [list ::focus $itk_component(text)]
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  If the optional
+# <settings> are specified, then the are applied to the data.  Allowed
+# settings are -color and -brightness, -width, -linestyle and -raise.
+# (Many of these are ignored.)
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextResult::add {dataobj {settings ""}} {
+    array set params {
+        -color ""
+        -brightness ""
+        -width ""
+        -linestyle ""
+        -raise 0
+        -description ""
+        -param ""
+    }
+    array set params $settings
+
+    set replace 0
+    if {"" != $dataobj} {
+        set _raised($dataobj) $params(-raise)
+        if {"" == $_dataobj} {
+            set replace 1
+        } elseif {$_raised($_dataobj) == 0 && $params(-raise)} {
+            set replace 1
+        }
+    }
+
+    if {$replace} {
+        $itk_component(text) configure -state normal
+        $itk_component(text) delete 1.0 end
+
+        if {[$dataobj element -as type] == "log"} {
+            # log output -- remove special =RAPPTURE-???=> messages
+            set message [$dataobj get]
+            while {[regexp -indices \
+                       {=RAPPTURE-([a-zA-Z]+)=>([^\n]*)(\n|$)} $message \
+                        match type mesg]} {
+
+                foreach {i0 i1} $match break
+                set first [string range $message 0 [expr {$i0-1}]]
+                if {[string length $first] > 0} {
+                    $itk_component(text) insert end $first
+                }
+
+                foreach {t0 t1} $type break
+                set type [string range $message $t0 $t1]
+                foreach {m0 m1} $mesg break
+                set mesg [string range $message $m0 $m1]
+                if {[string length $mesg] > 0
+                       && $type != "RUN" && $type != "PROGRESS"} {
+                    $itk_component(text) insert end $mesg $type
+                    $itk_component(text) insert end \n $type
+                }
+                set message [string range $message [expr {$i1+1}] end]
+            }
+
+            if {[string length $message] > 0} {
+                $itk_component(text) insert end $message
+                if {[$itk_component(text) get end-2char] != "\n"} {
+                    $itk_component(text) insert end "\n"
+                }
+            }
+        } elseif {[$dataobj element -as type] == "string"} {
+            # add string values
+            set data [$dataobj get current]
+            if {[Rappture::encoding::is binary $data]} {
+                set data [Rappture::utils::hexdump -lines 1000 $data]
+            }
+            $itk_component(text) insert end $data
+        } else {
+            # any other string output -- add it directly
+            $itk_component(text) insert end [$dataobj get]
+        }
+        $itk_component(text) configure -state disabled
+
+        set _dataobj $dataobj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextResult::get {} {
+    return $_dataobj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<curve1> <curve2> ...?
+#
+# Clients use this to delete a curve from the plot.  If no curves
+# are specified, then all curves are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextResult::delete {args} {
+    if {[llength $args] == 0} {
+        # delete everything
+        catch {unset _raised}
+        set _dataobj ""
+        $itk_component(text) configure -state normal
+        $itk_component(text) delete 1.0 end
+        $itk_component(text) configure -state disabled
+    } else {
+        # delete these specific objects
+        foreach obj $args {
+            catch {unset _raised($obj)}
+            if {$obj == $_dataobj} {
+                set _dataobj ""
+                $itk_component(text) configure -state normal
+                $itk_component(text) delete 1.0 end
+                $itk_component(text) configure -state disabled
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<curve1> <curve2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <curve> objects.  This
+# accounts for all curves--even those not showing on the screen.
+# Because of this, the limits are appropriate for all curves as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextResult::scale {args} {
+    # nothing to do for text
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextResult::download {option args} {
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            # no controls for this download yet
+            return ""
+        }
+        now {
+            if {"" == $_dataobj} {
+                return ""
+            }
+            if {[$_dataobj element -as type] == "log"} {
+                set val [$itk_component(text) get 1.0 end]
+            } elseif {[$_dataobj element -as type] == "string"} {
+                set val [$_dataobj get current]
+            } else {
+                set val [$_dataobj get]
+            }
+
+            set ext [$_dataobj get filetype]
+            if {"" == $ext} {
+                if {[Rappture::encoding::is binary $val]} {
+                    set ext ".dat"
+                } else {
+                    set ext ".txt"
+                }
+            }
+            return [list $ext $val]
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: select all
+#
+# Handles various selection operations within the text.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextResult::select {option args} {
+    switch -- $option {
+        all {
+            $itk_component(text) tag add sel 1.0 end
+        }
+        none {
+            if { [$itk_component(text) tag ranges "sel"] != "" } {
+                selection clear
+            }
+        }
+        default {
+            error "bad option \"$option\": should be all or none"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: find up
+# USAGE: find down
+# USAGE: find reset
+#
+# Handles various find operations within the text.  These find a
+# bit of text and highlight it within the widget.  The find operation
+# starts from the end of the currently highlighted text, or from the
+# beginning if there is no highlight.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextResult::find {option} {
+    # handle the reset case...
+    $itk_component(find) configure \
+        -background $itk_option(-background) \
+        -foreground $itk_option(-foreground)
+    $itk_component(findstatus) configure -text ""
+
+    if {$option == "reset"} {
+        return
+    }
+
+    # handle the up/down cases...
+    set t $itk_component(text)
+    set pattern [string trim [$itk_component(find) get]]
+
+    if {"" == $pattern} {
+        $itk_component(find) configure -background red -foreground white
+        $itk_component(findstatus) configure -text "<< Enter a search string"
+        return
+    }
+
+    # find the starting point for the search
+    set seln [$t tag nextrange sel 1.0]
+    if {$seln == ""} {
+        set t0 1.0
+        set t1 end
+    } else {
+        foreach {t0 t1} $seln break
+    }
+    $t tag remove sel 1.0 end
+
+    # search up or down
+    switch -- $option {
+        up {
+            set start [$t index $t0-1char]
+            set next [$t search -backwards -nocase -- $pattern $start]
+            Rappture::Logger::log text find -up $pattern
+        }
+        down {
+            set start [$t index $t1+1char]
+            set next [$t search -forwards -nocase -- $pattern $start]
+            Rappture::Logger::log text find -down $pattern
+        }
+    }
+
+    if {"" != $next} {
+        set len [string length $pattern]
+        $t tag add sel $next $next+${len}chars
+        $t see $next
+        set lnum [lindex [split $next .] 0]
+        set lines [lindex [split [$t index end] .] 0]
+        set percent [expr {round(100.0*$lnum/$lines)}]
+        set status "line $lnum   --$percent%--"
+    } else {
+        set status "Not found"
+        $itk_component(find) configure -background red -foreground white
+    }
+    $itk_component(findstatus) configure -text $status
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _popup menu <which> <X> <Y>
+#
+# Used internally to manage edit operations.
+# ----------------------------------------------------------------------
+itcl::body Rappture::TextResult::popup {option args} {
+    switch -- $option {
+        menu {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"_popup $option which x y\""
+            }
+            set mname [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+            tk_popup $itk_component($mname) $x $y
+        }
+        default {
+            error "bad option \"$option\": should be menu"
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/tool.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/tool.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/tool.tcl	(revision 6168)
@@ -0,0 +1,81 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: tool - represents an entire tool
+#
+#  This object represents an entire tool defined by Rappture.
+#  Each tool resides in an installation directory with other tool
+#  resources (libraries, examples, etc.).  Each tool is defined by
+#  its inputs and outputs, which are tied to various widgets in the
+#  GUI.  Each tool tracks the inputs, knows when they're changed,
+#  and knows how to run itself to produce new results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2014  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+itcl::class Rappture::Tool {
+    inherit Rappture::ControlOwner
+
+    constructor {xmlobj installdir} {
+        Rappture::ControlOwner::constructor ""
+    } { # defined below }
+
+    destructor { # defined below }
+
+    public method installdir {} {
+        return [$_task installdir]
+    }
+    public method get_uq {args} {
+        sync  ;# sync all widget values to XML
+        return [eval $_task get_uq $args]
+    }
+    public method run {args} {
+        sync  ;# sync all widget values to XML
+
+        foreach {status result} [eval $_task run $args] break
+        if {$status == 0} {
+            # move good results to the data/results directory
+            $_task save $result
+        }
+
+        return [list $status $result]
+    }
+    public method abort {} {
+        $_task abort
+    }
+    public method reset {} {
+        $_task reset
+    }
+
+    private variable _task ""  ;# underlying task for the tool
+
+    # global resources for this tool session (from task)
+    public proc resources {{option ""}} {
+        eval ::Rappture::Task::resources $option
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tool::constructor {xmlobj installdir} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be Rappture::Library"
+    }
+
+    set _task [Rappture::Task ::#auto $xmlobj $installdir \
+        -logger ::Rappture::Logger::log]
+
+    # save a reference to the tool XML in the ControlOwner
+    set _xmlobj $xmlobj
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tool::destructor {} {
+    itcl::delete object $_task
+}
Index: /tags/1.6.0/gui/scripts/tooltip.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/tooltip.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/tooltip.tcl	(revision 6168)
@@ -0,0 +1,478 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: tooltip - help information that pops up beneath a widget
+#
+#  This file provides support for tooltips, which are little bits
+#  of help information that pop up beneath a widget.
+#
+#  Tooltips can be registered for various widgets as follows:
+#
+#    Rappture::Tooltip::for .w "Some help text."
+#    Rappture::Tooltip::for .x.y "Some more help text."
+#
+#  Tooltips can also be popped up as an error cue beneath a widget
+#  with bad information:
+#
+#    Rappture::Tooltip::cue .w "Bad data in this widget."
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+option add *Tooltip.background white widgetDefault
+option add *Tooltip.outline black widgetDefault
+option add *Tooltip.borderwidth 1 widgetDefault
+option add *Tooltip.font -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *Tooltip.wrapLength 4i widgetDefault
+
+itcl::class Rappture::Tooltip {
+    inherit itk::Toplevel
+
+    itk_option define -outline outline Outline ""
+    itk_option define -icon icon Icon ""
+    itk_option define -message message Message ""
+    itk_option define -log log Log ""
+
+    constructor {args} { # defined below }
+
+    public method show {where}
+    public method hide {}
+
+    private variable _showing 0  ;# time when tooltip popped up on screen
+
+    public proc for {widget text args}
+    public proc text {widget args}
+    private common catalog    ;# maps widget => -message and -log
+
+    public proc tooltip {option args}
+    private common pending "" ;# after ID for pending "tooltip show"
+
+    public proc cue {option args}
+
+    bind RapptureTooltip <Enter> \
+        [list ::Rappture::Tooltip::tooltip pending %W]
+    bind RapptureTooltip <Leave> \
+        [list ::Rappture::Tooltip::tooltip cancel]
+    bind RapptureTooltip <ButtonPress> \
+        [list ::Rappture::Tooltip::tooltip cancel]
+    bind RapptureTooltip <KeyPress> \
+        [list ::Rappture::Tooltip::tooltip cancel]
+}
+
+itk::usual Tooltip {
+    keep -background -outline -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tooltip::constructor {args} {
+    wm overrideredirect $itk_component(hull) yes
+    wm withdraw $itk_component(hull)
+
+    component hull configure -borderwidth 1 -background black
+    itk_option remove hull.background hull.borderwidth
+
+    itk_component add icon {
+        label $itk_interior.icon -anchor n
+    }
+
+    itk_component add text {
+        label $itk_interior.text -justify left
+    } {
+        usual
+        keep -wraplength
+    }
+    pack $itk_component(text) -expand yes -fill both -ipadx 4 -ipady 4
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: show @<x>,<y>|<widget>+/-<x>,<y>
+#
+# Clients use this to pop up the tooltip on the screen.  The position
+# should be either a <widget> name with an optional offset +/-<x>,<y>
+# (tooltip pops up beneath widget by default), or a specific root
+# window coordinate of the form @x,y.
+#
+# If the -message has the form "@command", then the command is executed
+# now, just before the tooltip is popped up, to build the message
+# on-the-fly.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tooltip::show {where} {
+    set hull $itk_component(hull)
+    set _showing 0
+
+    set signx "+"
+    set signy "+"
+
+    if {[regexp {^@([0-9]+),([0-9]+)$} $where match x y]} {
+        set xpos $x
+        set ypos $y
+    } elseif {[regexp {^(.*)([-+])([0-9]+),([-+]?)([0-9]+)$} $where match win signx x signy y]} {
+        if {$signy == ""} { set signy $signx }
+        set xpos [expr {[winfo rootx $win] + $x}]
+        set ypos [expr {[winfo rooty $win] + $y}]
+    } elseif {[winfo exists $where]} {
+        set xpos [expr {[winfo rootx $where]+10}]
+        set ypos [expr {[winfo rooty $where]+[winfo height $where]}]
+    } else {
+        error "bad position \"$where\": should be widget+x,y, or @x,y"
+    }
+
+    if {[string index $itk_option(-message) 0] == "@"} {
+        set cmd [string range $itk_option(-message) 1 end]
+        if {[catch $cmd mesg] != 0} {
+            bgerror $mesg
+            return
+        }
+    } else {
+        set mesg $itk_option(-message)
+    }
+
+    # if there's no message to show, forget it
+    if {[string length $mesg] == 0} {
+        return
+    }
+
+    # strings can't be too big, or they'll go off screen!
+    set pos 0
+    ::for {set i 0} {$pos >= 0 && $i < 20} {incr i} {
+        incr pos
+        set pos [string first \n $mesg $pos]
+    }
+    if {$pos > 0} {
+        set mesg "[string range $mesg 0 $pos]..."
+    }
+    if {[string length $mesg] > 1000} {
+        set mesg "[string range $mesg 0 1500]..."
+    }
+    $itk_component(text) configure -text $mesg
+
+    #
+    # Make sure the tooltip doesn't go off screen.
+    #
+    update idletasks
+    if {$signx == "+"} {
+        if {$xpos+[winfo reqwidth $hull] > [winfo screenwidth $hull]} {
+            set xpos [expr {[winfo screenwidth $hull]-[winfo reqwidth $hull]}]
+        }
+        if {$xpos < 0} { set xpos 0 }
+    } else {
+        if {$xpos-[winfo reqwidth $hull] < 0} {
+            set xpos [expr {[winfo screenwidth $hull]-[winfo reqwidth $hull]}]
+        }
+        set xpos [expr {[winfo screenwidth $hull]-$xpos}]
+    }
+
+    if {$signy == "+"} {
+        if {$ypos+[winfo reqheight $hull] > [winfo screenheight $hull]} {
+            set ypos [expr {[winfo screenheight $hull]-[winfo reqheight $hull]}]
+        }
+        if {$ypos < 0} { set ypos 0 }
+    } else {
+        if {$ypos-[winfo reqheight $hull] < 0} {
+            set ypos [expr {[winfo screenheight $hull]-[winfo reqheight $hull]}]
+        }
+        set ypos [expr {[winfo screenheight $hull]-$ypos}]
+    }
+
+    #
+    # Will the tooltip pop up under the mouse pointer?  If so, then
+    # it will just disappear.  Doh!  We should figure out a better
+    # place to pop it up.
+    #
+    set px [winfo pointerx $hull]
+    set py [winfo pointery $hull]
+    if {$px >= $xpos && $px <= $xpos+[winfo reqwidth $hull]
+          && $py >= $ypos && $py <= $ypos+[winfo reqheight $hull]} {
+
+        if {$px > [winfo screenwidth $hull]/2} {
+            set signx "-"
+            set xpos [expr {[winfo screenwidth $hull]-$px+4}]
+        } else {
+            set signx "+"
+            set xpos [expr {$px+4}]
+        }
+        if {$py > [winfo screenheight $hull]/2} {
+            set signy "-"
+            set ypos [expr {[winfo screenheight $hull]-$py+4}]
+        } else {
+            set signy "+"
+            set ypos [expr {$py+4}]
+        }
+    }
+
+    #
+    # Finally, put it up.
+    #
+    wm geometry $hull $signx$xpos$signy$ypos
+    update
+
+    wm deiconify $hull
+    raise $hull
+
+    #
+    # If logging is enabled, grab the start time.  We'll need this
+    # info later during the "hide" step to log activity.
+    #
+    if {$itk_option(-log) ne ""} {
+        set _showing [clock seconds]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hide
+#
+# Takes down the tooltip, if it is showing on the screen.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tooltip::hide {} {
+    wm withdraw $itk_component(hull)
+
+    #
+    # If logging is enabled and the time is non-zero, then log
+    # the activity on this tooltip.
+    #
+    if {$itk_option(-log) ne "" && $_showing > 0} {
+        set dt [expr {[clock seconds] - $_showing}]
+        if {$dt > 0} {
+            Rappture::Logger::log tooltip -for $itk_option(-log) -time $dt
+        }
+    }
+    set _showing 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: for <widget> <text> ?-log <name>?
+#
+# Used to register the tooltip <text> for a particular <widget>.
+# This sets up bindings on the widget so that, when the mouse pointer
+# lingers over the widget, the tooltip pops up automatically after
+# a small delay.  When the mouse pointer leaves the widget or the
+# user clicks on the widget, it cancels the tip.
+#
+# If the <text> has the form "@command", then the command is executed
+# just before the tip pops up to build the message on-the-fly.
+#
+# The -log option turns logging on/off for this tooltip.  Logging is
+# useful when you want to keep track of whether the user is looking at
+# tooltips and for how long.  If the <name> is specified, then any
+# activity on the tooltip is reported with that name on the log line.
+# If the name is not specified or "", then the activity is not logged.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tooltip::for {widget text args} {
+    Rappture::getopts args params {
+        value -log ""
+    }
+    if {[llength $args] > 0} {
+        error "wrong # args: should be \"for widget text ?-log name?\""
+    }
+
+    set catalog($widget-message) $text
+    set catalog($widget-log) $params(-log)
+
+    set btags [bindtags $widget]
+    set i [lsearch $btags RapptureTooltip]
+    if {$i < 0} {
+        set i [lsearch $btags [winfo class $widget]]
+        if {$i < 0} {set i 0}
+        set btags [linsert $btags $i RapptureTooltip]
+        bindtags $widget $btags
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: text <widget> ?<text>? ?-log name?
+#
+# Used to query or set the text used for the tooltip for a widget.
+# This is done automatically when you call the "for" proc, but it
+# is sometimes handy to query or change the text later.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tooltip::text {widget args} {
+    if {[llength $args] == 0} {
+        if {[info exists catalog($widget-message)]} {
+            return $catalog($widget-message)
+        }
+        return ""
+    }
+
+    # set the text for the tooltip
+    set str [lindex $args 0]
+    set args [lrange $args 1 end]
+
+    Rappture::getopts args params {
+        value -log ""
+    }
+    if {[llength $args] > 0} {
+        error "wrong # args: should be \"text widget ?str? ?-log name?\""
+    }
+
+    set catalog($widget-message) $str
+    set catalog($widget-log) $params(-log)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tooltip pending <widget> ?@<x>,<y>|+<x>,<y>?
+# USAGE: tooltip show <widget> ?@<x>,<y>|+<x>,<y>?
+# USAGE: tooltip cancel
+#
+# This is invoked automatically whenever the user clicks somewhere
+# inside or outside of the editor.  If the <X>,<Y> coordinate is
+# outside the editor, then we assume the user is done and wants to
+# take the editor down.  Otherwise, we do nothing, and let the entry
+# bindings take over.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tooltip::tooltip {option args} {
+    switch -- $option {
+        pending {
+            if {[llength $args] < 1 || [llength $args] > 2} {
+                error "wrong # args: should be \"tooltip pending widget ?@x,y?\""
+            }
+            set widget [lindex $args 0]
+            set loc [lindex $args 1]
+
+            if {![info exists catalog($widget-message)]} {
+                return;                        # No tooltip for widget.
+            }
+            if {$pending != ""} {
+                after cancel $pending
+            }
+            set pending [after 750 [itcl::code tooltip show $widget $loc]]
+        }
+        show {
+            if {[llength $args] < 1 || [llength $args] > 2} {
+                error "wrong # args: should be \"tooltip show tag loc\""
+            }
+            set tag [lindex $args 0]
+            set loc [lindex $args 1]
+
+            # tag name may be .g-axis -- get widget ".g" part
+            set widget $tag
+            if {[regexp {^(\.[^-]+)-[^\.]+$} $widget match wname]} {
+                set widget $wname
+            }
+
+            if {[winfo exists $widget] && [info exists catalog($tag-message)]} {
+                .rappturetooltip configure \
+                    -message $catalog($tag-message) \
+                    -log $catalog($tag-log)
+
+                if {[string index $loc 0] == "@"} {
+                    .rappturetooltip show $loc
+                } elseif {[regexp {^[-+]} $loc]} {
+                    .rappturetooltip show $widget$loc
+                } else {
+                    .rappturetooltip show $widget
+                }
+            }
+        }
+        cancel {
+            if {$pending != ""} {
+                after cancel $pending
+                set pending ""
+            }
+            .rappturetooltip hide
+        }
+        default {
+            error "bad option \"$option\": should be show, pending, cancel"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: cue <location> <message>
+# USAGE: cue hide
+#
+# Clients use this to show a <message> in a tooltip cue at the
+# specified <location>, which can be a widget name or a root coordinate
+# at @x,y.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tooltip::cue {option args} {
+    if {"hide" == $option} {
+        grab release .rappturetoolcue
+        .rappturetoolcue hide
+    } elseif {[regexp {^@[0-9]+,[0-9]+$} $option] || [winfo exists $option]} {
+        if {[llength $args] != 1} {
+            error "wrong # args: should be \"cue location message\""
+        }
+        set loc $option
+        set mesg [lindex $args 0]
+
+        .rappturetoolcue configure -message $mesg
+        .rappturetoolcue show $loc
+
+        #
+        # Add a binding to all widgets so that any keypress will
+        # take this cue down.
+        #
+        set cmd [bind all <KeyPress>]
+        if {![regexp {Rappture::Tooltip::cue} $cmd]} {
+            bind all <KeyPress> "+[list ::Rappture::Tooltip::cue hide]"
+            bind all <KeyPress-Return> "+ "
+        }
+
+        #
+        # If nobody has the pointer, then grab it.  Otherwise,
+        # we assume the pop-up editor or someone like that has
+        # the grab, so we don't need to impose a grab here.
+        #
+        if {"" == [grab current]} {
+            update
+            while {[catch {grab set -global .rappturetoolcue}]} {
+                after 100
+            }
+        }
+    } else {
+        error "bad option \"$option\": should be hide, a widget name, or @x,y"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -icon
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Tooltip::icon {
+    if {"" == $itk_option(-icon)} {
+        $itk_component(icon) configure -image ""
+        pack forget $itk_component(icon)
+    } else {
+        $itk_component(icon) configure -image $itk_option(-icon)
+        pack $itk_component(icon) -before $itk_component(text) \
+            -side left -fill y
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -outline
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Tooltip::outline {
+    component hull configure -background $itk_option(-outline)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -log
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Tooltip::log {
+    # logging options changed -- reset showing time
+    set _showing 0
+}
+
+# create a tooltip widget to show tool tips
+Rappture::Tooltip .rappturetooltip
+
+# any click on any widget takes down the tooltip
+bind all <Leave> [list ::Rappture::Tooltip::tooltip cancel]
+bind all <ButtonPress> [list ::Rappture::Tooltip::tooltip cancel]
+
+# create a tooltip widget to show error cues
+Rappture::Tooltip .rappturetoolcue \
+    -icon [Rappture::icon cue24] \
+    -background black -outline #333333 -foreground white
+
+# when cue is up, it has a grab, and any click brings it down
+bind .rappturetoolcue <ButtonPress> [list ::Rappture::Tooltip::cue hide]
Index: /tags/1.6.0/gui/scripts/transferfunctioneditor.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/transferfunctioneditor.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/transferfunctioneditor.tcl	(revision 6168)
@@ -0,0 +1,356 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: transferfunctioneditor - Rudimentary editor for 3D volume
+#                                      transfer functions
+#
+#  This class is used to modify transfer functions used in volume rendering
+#  on 3D scalar/vector datasets.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+package require Img
+
+itcl::class Rappture::TransferFunctionEditor {
+    constructor {c name args} {}
+    destructor {}
+    public method limits { min max }
+    public method names {}
+    public method name {}
+    public method values {}
+    public method absoluteValues {}
+    public method removeMarkers { list }
+    public method addMarkers { values }
+    public method newMarker { x y state }
+    public method deleteMarker { x y }
+    public method hideMarkers { {list {}} }
+    public method showMarkers { {limits {}} }
+
+    public variable command ""
+
+    private method SetAbsoluteValue { name x }
+    private method GetAbsoluteValue { name }
+    private method ContinueDrag { name x y }
+    private method EnterTick { name }
+    private method GetOverlappingMarkers { x y }
+    private method GetScreenPosition { name }
+    private method LeaveTick { name }
+    private method SetRelativeValue  { name x }
+    private method GetRelativeValue  { name }
+    private method RemoveDuplicateMarkers {name x y}
+    private method SetScreenPosition { name }
+    private method SetVisibility { name bool }
+    private method StartDrag { name x y }
+    private method StopDrag { name x y }
+    private method Activate { name }
+    private method Deactivate { name }
+    private method UpdateViewer {}
+
+    private variable _nextId 0;         # Used to create unique marker names
+    private variable _values;           # Relative values for each marker.
+    private variable _limits;           # Over limits of transfer function.
+    private variable _labels;           # Label id for each marker.
+    private variable _ticks;            # Tick id for each marker.
+    private variable _canvas ""
+    private variable _name "";                # Name of transfer function.
+    private variable _activeMotion 0
+    private variable _activePress 0
+    private variable _id2name
+
+    private common _normalIcon [Rappture::icon nvlegendmark]
+    private common _activeIcon [Rappture::icon nvlegendmark2]
+}
+
+itcl::body Rappture::TransferFunctionEditor::constructor {c name args} {
+    set _canvas $c
+    set _name $name
+    set _limits [list 0.0 1.0]
+    eval configure $args
+}
+
+itcl::body Rappture::TransferFunctionEditor::limits { min max } {
+    set _limits [list $min $max]
+}
+
+itcl::body Rappture::TransferFunctionEditor::names {} {
+    return [lsort [array names _values]]
+}
+
+itcl::body Rappture::TransferFunctionEditor::values {} {
+    set list {}
+    foreach name [array names _ticks] {
+        lappend list [GetRelativeValue $name]
+    }
+    return [lsort -real $list]
+}
+
+itcl::body Rappture::TransferFunctionEditor::absoluteValues {} {
+    set list {}
+    foreach name [array names _values] {
+        lappend list [GetAbsoluteValue $name]
+    }
+    return $list
+}
+
+itcl::body Rappture::TransferFunctionEditor::deleteMarker { x y } {
+    foreach marker [GetOverlappingMarkers $x $y] {
+        $_canvas delete $_ticks($marker)
+        $_canvas delete $_labels($marker)
+        array unset _ticks $marker
+        array unset _labels $marker
+        array unset _values $marker
+        bell
+        UpdateViewer
+    }
+}
+
+itcl::body Rappture::TransferFunctionEditor::newMarker { x y state } {
+    foreach id [$_canvas find overlapping \
+                    [expr $x-5] [expr $y-5] [expr $x+5] [expr $y+5]] {
+        if { [info exists _id2name($id)] } {
+            puts stderr "Too close to existing marker"
+            return;                     # Too close to existing marker
+        }
+    }
+    set name "tick[incr _nextId]"
+    set w [winfo width $_canvas]
+    set h [winfo height $_canvas]
+
+    set _ticks($name) [$_canvas create image 0 $h \
+                           -image $_normalIcon -anchor s \
+                           -tags "tick $_name $this" -state $state]
+    set _labels($name) [$_canvas create text 0 $h \
+                            -anchor n -fill white -font "Helvetica 8" \
+                            -tags "labels text $this $_name" -state $state]
+    set _id2name($_ticks($name)) $name
+    $_canvas bind $_ticks($name) <Enter> [itcl::code $this EnterTick $name]
+    $_canvas bind $_ticks($name) <Leave> [itcl::code $this LeaveTick $name]
+    $_canvas bind $_ticks($name) <ButtonPress-1> \
+        [itcl::code $this StartDrag $name %x %y]
+    $_canvas bind $_ticks($name) <B1-Motion> \
+        [itcl::code $this ContinueDrag $name %x %y]
+    $_canvas bind $_ticks($name) <ButtonRelease-1> \
+        [itcl::code $this StopDrag $name %x %y]
+
+    SetRelativeValue $name [expr {double($x-10)/($w-20)}]
+    if { $state == "normal" } {
+        UpdateViewer
+    }
+    return $name
+}
+
+itcl::body Rappture::TransferFunctionEditor::destructor {} {
+    if { [winfo exists $_canvas] } {
+        $_canvas delete $_name
+    }
+}
+
+itcl::body Rappture::TransferFunctionEditor::name {} {
+    return $_name
+}
+
+itcl::body Rappture::TransferFunctionEditor::Activate { name } {
+    if  { $_activePress || $_activeMotion } {
+        $_canvas itemconfigure $_labels($name) -state normal
+        $_canvas itemconfigure $_ticks($name) -image $_activeIcon
+        $_canvas itemconfigure title -state hidden
+    }
+}
+
+itcl::body Rappture::TransferFunctionEditor::Deactivate { name } {
+    if  { $_activePress || $_activeMotion } {
+        #puts stderr "do nothing for Deactivate"
+    } else {
+        $_canvas itemconfigure $_labels($name) -state hidden
+        $_canvas itemconfigure $_ticks($name) -image $_normalIcon
+        $_canvas itemconfigure title -state normal
+    }
+}
+
+itcl::body Rappture::TransferFunctionEditor::SetVisibility { name bool } {
+    if { $bool } {
+        $_canvas itemconfigure $_ticks($name) -state normal
+        $_canvas raise $_ticks($name)
+    } else {
+        $_canvas itemconfigure $_ticks($name) -state hidden
+    }
+}
+
+itcl::body Rappture::TransferFunctionEditor::GetScreenPosition { name } {
+    set x [GetRelativeValue $name]
+    if { $x < 0.0 } {
+        set x 0.0
+    } elseif { $x > 1.0 } {
+        set x 1.0
+    }
+    set low 10
+    set w [winfo width $_canvas]
+    set high [expr {$w  - 10}]
+    set x [expr {round($x*($high - $low) + $low)}]
+    return $x
+}
+
+itcl::body Rappture::TransferFunctionEditor::SetScreenPosition { name } {
+    set value $_values($name)
+    set x [GetScreenPosition $name]
+    set absval [GetAbsoluteValue $name]
+    set y 31
+    $_canvas itemconfigure $_labels($name) -text [format %g $absval]
+    $_canvas coords $_ticks($name) $x [expr {$y+3}]
+    $_canvas coords $_labels($name) $x [expr {$y+5}]
+}
+
+itcl::body Rappture::TransferFunctionEditor::GetAbsoluteValue { name } {
+    foreach {min max} $_limits break
+    return [expr {($_values($name) * ($max - $min)) + $min}]
+}
+
+itcl::body Rappture::TransferFunctionEditor::SetAbsoluteValue { name value } {
+    foreach {min max} $_limits break
+    set absval $value
+    set relval [expr {($absval - $min) / ($max - $min)}]
+    set _values($name) $relval
+    set y 31
+    $_canvas itemconfigure $_label -text [format %g $absval]
+    set x [GetScreenPosition $name]
+    $_canvas coords $_ticks($name) $x [expr {$y+3}]
+    $_canvas coords $_labels($name) $x [expr {$y+5}]
+    return $absval
+}
+
+itcl::body Rappture::TransferFunctionEditor::GetRelativeValue  { name } {
+    return $_values($name)
+}
+
+itcl::body Rappture::TransferFunctionEditor::SetRelativeValue  { name value } {
+    set _values($name) $value
+    set x [GetScreenPosition $name]
+    set y 31
+    set absval [GetAbsoluteValue $name]
+    $_canvas itemconfigure $_labels($name) -text [format %g $absval]
+    $_canvas coords $_ticks($name) $x [expr {$y+3}]
+    $_canvas coords $_labels($name) $x [expr {$y+5}]
+}
+
+itcl::body Rappture::TransferFunctionEditor::EnterTick { name } {
+    set _activeMotion 1
+    Activate $name
+    $_canvas raise $_ticks($name)
+}
+
+itcl::body Rappture::TransferFunctionEditor::LeaveTick { name } {
+    set _activeMotion 0
+    Deactivate $name
+}
+
+itcl::body Rappture::TransferFunctionEditor::StartDrag { name x y } {
+    $_canvas raise $_ticks($name)
+    set _activePress 1
+    Activate $name
+    $_canvas itemconfigure limits -state hidden
+    $_canvas itemconfigure title -state hidden
+}
+
+itcl::body Rappture::TransferFunctionEditor::StopDrag { name x y } {
+    ContinueDrag $name $x $y
+    RemoveDuplicateMarkers $name $x $y
+    set _activePress 0
+    Deactivate $name
+    $_canvas itemconfigure limits -state normal
+    $_canvas itemconfigure title -state normal
+}
+
+itcl::body Rappture::TransferFunctionEditor::ContinueDrag { name x y } {
+    set w [winfo width $_canvas]
+    SetRelativeValue $name [expr {double($x-10)/($w-20)}]
+    UpdateViewer
+    $_canvas raise $_ticks($name)
+    set _activePress 1
+    Activate $name
+    $_canvas itemconfigure limits -state hidden
+    $_canvas itemconfigure title -state hidden
+}
+
+itcl::body Rappture::TransferFunctionEditor::GetOverlappingMarkers { x y } {
+    set list {}
+    foreach id [$_canvas find overlapping $x $y $x $y] {
+        if { [info exists _id2name($id)] } {
+            lappend list $_id2name($id)
+        }
+    }
+    return $list
+}
+
+itcl::body Rappture::TransferFunctionEditor::hideMarkers { {list {}} } {
+    if { $list == "" } {
+        set list [array names _values]
+    }
+    foreach name $list {
+        SetVisibility $name 0
+    }
+}
+
+itcl::body Rappture::TransferFunctionEditor::showMarkers { {limits {}} } {
+    if { $limits != "" } {
+        set _limits $limits
+        foreach name [array names _values] {
+            SetScreenPosition $name
+        }
+    }
+    foreach name [array names _values] {
+        SetVisibility $name 1
+    }
+}
+
+itcl::body Rappture::TransferFunctionEditor::RemoveDuplicateMarkers {name x y} {
+    foreach marker [GetOverlappingMarkers $x $y] {
+        if { $marker != $name } {
+            Activate $marker
+            set markerx [GetScreenPosition $marker]
+            if { ($x < ($markerx-3)) || ($x > ($markerx+3)) } {
+                continue
+            }
+            $_canvas delete $_ticks($marker)
+            $_canvas delete $_labels($marker)
+            array unset _ticks $marker
+            array unset _labels $marker
+            array unset _values $marker
+            bell
+        }
+    }
+}
+
+itcl::body Rappture::TransferFunctionEditor::addMarkers { values } {
+    foreach value $values {
+        set name [newMarker 0 0 hidden]
+        SetRelativeValue $name $value
+    }
+}
+
+itcl::body Rappture::TransferFunctionEditor::removeMarkers { names } {
+    if { $names == "" } {
+        set names [array names _values]
+    }
+    foreach name $names {
+        $_canvas delete $_ticks($name)
+        $_canvas delete $_labels($name)
+        array unset _ticks $name
+        array unset _labels $name
+        array unset _values $name
+    }
+    UpdateViewer
+}
+
+itcl::body Rappture::TransferFunctionEditor::UpdateViewer {} {
+    # Tell the nanovis/flowvis client to update its transfer functions
+    # now that a marker position has changed.
+    if { $command != "" } {
+        eval uplevel \#0 $command
+    }
+}
Index: /tags/1.6.0/gui/scripts/tuples.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/tuples.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/tuples.tcl	(revision 6168)
@@ -0,0 +1,453 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: tuples - represents a series of tuples for arbitrary data
+#
+#  This object represents a series of tuples.  Each tuple can contain
+#  one or more elements--for example, (a) or (a,b,c).  Each column
+#  in the tuple has a well-defined name and metadata.  Columns can
+#  be added even after data has been stored in the tuple list.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+itcl::class Rappture::Tuples {
+    constructor {args} { # defined below }
+
+    public method column {option args}
+    public method insert {pos args}
+    public method delete {{from ""} {to ""}}
+    public method put {args}
+    public method get {args}
+    public method find {args}
+    public method size {}
+
+    protected method _range {{from ""} {to ""}}
+
+    private variable _colnames ""  ;# list of column names
+    private variable _col2info     ;# maps column name => column options
+    private variable _tuples       ;# maps index => tuple data
+
+    private common _counter 0      ;# for auto-generated column names
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tuples::constructor {args} {
+    eval configure $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: column insert <pos> ?-name n? ?-label l? ?-default v?
+# USAGE: column delete ?<name> <name>...?
+# USAGE: column names ?<pattern>?
+# USAGE: column info <name>
+#
+# Used by clients to manipulate the columns associated with this
+# list of tuples.  Each column is identified by a short name.  If
+# a name is not supplied when the column is created, then one is
+# generated automatically.  The column names can be queried back
+# in the order they appear in a tuple by using the "column names"
+# command.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tuples::column {option args} {
+    switch -- $option {
+        insert {
+            # parse the incoming args
+            if {[llength $args] < 1} {
+                error "wrong # args: should be \"column insert pos ?-name n? ?-label l? ?-default v?\""
+            }
+            set pos [lindex $args 0]
+            set args [lrange $args 1 end]
+            Rappture::getopts args params {
+                value -name #auto
+                value -label ""
+                value -default ""
+            }
+
+            # FIXME: This is a band-aid.  The value can be an arbitrary
+            # string and therefore misinterpretered as an invalid list.
+            # Try to parse the value as a list and if that fails make a
+            # list out of it.  Hopefully this doesn't break run file
+            # comparisons.
+            if { [catch {llength $params(-default)}] != 0 } {
+                set params(-default) [list $params(-default)]
+            }
+
+            if {[llength $args] != 0} {
+                error "wrong # args: should be \"column insert pos ?-name n? ?-label l? ?-default v?\""
+            }
+
+            # insert the new column
+            set cname $params(-name)
+            if {$params(-name) == "#auto"} {
+                set cname "column[incr _counter]"
+            }
+            if {[lsearch -exact $_colnames $cname] >= 0} {
+                error "column name \"$cname\" already exists"
+            }
+            set _colnames [linsert $_colnames $pos $cname]
+            set _col2info($cname-label) $params(-label)
+            set _col2info($cname-default) $params(-default)
+
+            # run through all existing tuples and insert the default val
+            set max [array size _tuples]
+            for {set i 0} {$i < $max} {incr i} {
+                set oldval $_tuples($i)
+                set _tuples($i) [linsert $oldval $pos $params(-default)]
+            }
+        }
+        delete {
+            foreach cname $args {
+                set pos [lsearch -exact $_colnames $cname]
+                if {$pos < 0} {
+                    error "bad column name \"$cname\""
+                }
+                set _colnames [lreplace $_colnames $pos $pos]
+                unset _col2info($cname-label)
+                unset _col2info($cname-default)
+
+                # run through all existing tuples and delete the column
+                set max [array size _tuples]
+                for {set i 0} {$i < $max} {incr i} {
+                    set oldval $_tuples($i)
+                    set _tuples($i) [lreplace $oldval $pos $pos]
+                }
+            }
+        }
+        names {
+            if {[llength $args] == 0} {
+                return $_colnames
+            } elseif {[llength $args] == 1} {
+                set pattern [lindex $args 0]
+                set rlist ""
+                foreach cname $_colnames {
+                    if {[string match $pattern $cname]} {
+                        lappend rlist $cname
+                    }
+                }
+                return $rlist
+            } else {
+                error "wrong # args: should be \"column names ?pattern?\""
+            }
+        }
+        info {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"column info name\""
+            }
+            set cname [lindex $args 0]
+            set pos [lsearch -exact $_colnames $cname]
+            if {$pos < 0} {
+                error "bad column name \"$cname\""
+            }
+            return [list -label $_col2info($cname-label) -default $_col2info($cname-default)]
+        }
+        default {
+            error "bad option \"$option\": should be delete, info, insert, names"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <pos> ?<tuple> <tuple> ...?
+#
+# Used by clients to insert one or more tuples into this list at
+# the given position <pos>.  Each <tuple> is a Tcl list of values
+# in order corresponding to the column names.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tuples::insert {pos args} {
+    set cols [llength $_colnames]
+    set max [array size _tuples]
+
+    if {"end" == $pos} {
+        set pos $max
+    } elseif {![string is integer $pos]} {
+        error "bad position \"$pos\": should be integer or \"end\""
+    } elseif {$pos < 0} {
+        set pos 0
+    } elseif {$pos > $max} {
+        set pos $max
+    }
+
+    # make some room to insert these tuples
+    set need [llength $args]
+    for {set i [expr {$max-1}]} {$i >= $pos} {incr i -1} {
+        set _tuples([expr {$i+$need}]) $_tuples($i)
+    }
+
+    # add the tuples at the specified pos
+    foreach t $args {
+        # make sure each tuple has enough columns
+        while {[llength $t] < $cols} {
+            lappend t ""
+        }
+        set _tuples($pos) $t
+        incr pos
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<from>? ?<to>?
+#
+# Used by clients to delete one or more tuples in this list.  With
+# no args, it deletes all tuples.  With a single <from> arg, it deletes
+# the tuple at that number.  With both args, it deletes tuples in the
+# specified range.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tuples::delete {{from ""} {to ""}} {
+    if {"" == $from && "" == $to} {
+        catch {unset _tuples}
+        return
+    }
+    if {[array size _tuples] == 0} {
+        return  ;# nothing to delete
+    }
+
+    set last [expr {[array size _tuples]-1}]
+    foreach {from to} [_range $from $to] break
+
+    # delete all tuples in the specified range
+    set gap [expr {$to-$from+1}]
+    for {set i $from} {$i <= $last-$gap} {incr i} {
+        set _tuples($i) $_tuples([expr {$i+$gap}])
+    }
+    for {} {$i <= $last} {incr i} {
+        unset _tuples($i)
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: put ?-format <columns>? <pos> <tuple>
+#
+# Used by clients to store a different tuple value at the specified
+# position <pos> in this list.  Normally, it stores the entire
+# <tuple> at the specified slot, which must already exist.  (Use
+# insert to create new slots.)  If the -format option is specified,
+# then it interprets <tuple> according to the names in the -format,
+# and updates only specific columns at that slot.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tuples::put {args} {
+    Rappture::getopts args params {
+        value -format ""
+    }
+    if {[llength $args] != 2} {
+        error "wrong # args: should be \"put ?-format cols? pos tuple\""
+    }
+    foreach {pos tuple} $args break
+    foreach {pos dummy} [_range $pos ""] break  ;# fix index
+
+    if {![info exists _tuples($pos)]} {
+        error "index $pos doesn't exist"
+    }
+
+    if {[string length $params(-format)] == 0} {
+        # no format -- add tuple as-is (with proper number of columns)
+        set cols [llength $_colnames]
+        while {[llength $tuple] < $cols} {
+            lappend tuple ""
+        }
+        set _tuples($pos) $tuple
+    } else {
+        # convert column names to indices
+        set nlist ""
+        foreach cname $params(-format) {
+            set n [lsearch -exact $_colnames $cname]
+            if {$n < 0} {
+                error "bad column name \"$cname\""
+            }
+            lappend nlist $n
+        }
+
+        # convert data only for those indices
+        set val $_tuples($pos)
+        foreach n $nlist t $tuple {
+            set val [lreplace $val $n $n $t]
+        }
+        set _tuples($pos) $val
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-format <columns>? ?<from>? ?<to>?
+#
+# Used by clients to query data from this list of tuples.  Returns
+# a list of tuples in the specified range, or a list of all tuples
+# if the range is not specified.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tuples::get {args} {
+    Rappture::getopts args params {
+        value -format ""
+    }
+    if {[llength $args] > 2} {
+        error "wrong # args: should be \"get ?-format cols? ?from? ?to?\""
+    }
+    set from ""
+    set to ""
+    foreach {from to} $args break
+    foreach {from to} [_range $from $to] break
+
+    # empty? then return nothing
+    if {[array size _tuples] == 0} {
+        return ""
+    }
+
+    set rlist ""
+    if {[string length $params(-format)] == 0} {
+        # no format string -- return everything as-is
+        for {set i $from} {$i <= $to} {incr i} {
+            lappend rlist $_tuples($i)
+        }
+    } else {
+        # convert column names to indices
+        set nlist ""
+        foreach cname $params(-format) {
+            set n [lsearch -exact $_colnames $cname]
+            if {$n < 0} {
+                error "bad column name \"$cname\""
+            }
+            lappend nlist $n
+        }
+        set single [expr {[llength $nlist] == 1}]
+
+        # convert data only for those indices
+        for {set i $from} {$i <= $to} {incr i} {
+            set t ""
+            foreach n $nlist {
+                if {$single} {
+                    set t [lindex $_tuples($i) $n]
+                } else {
+                    lappend t [lindex $_tuples($i) $n]
+                }
+            }
+            lappend rlist $t
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: find ?-format <columns>? ?<tuple>?
+#
+# Used by clients to search for all or part of a <tuple> on the
+# list.  Without the extra -format option, this searches for an
+# exact match of the <tuple> and returns a list of indices that
+# match.  With the -format option, it checks the values for only
+# the specified <columns>, and again returns a list of indices
+# with matching values.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tuples::find {args} {
+    Rappture::getopts args params {
+        value -format ""
+    }
+    if {[llength $args] > 1} {
+        error "wrong # args: should be \"find ?-format cols? ?tuple?\""
+    }
+
+    # convert column names to indices
+    set nlist ""
+    foreach cname $params(-format) {
+        set n [lsearch -exact $_colnames $cname]
+        if {$n < 0} {
+            error "bad column name \"$cname\""
+        }
+        lappend nlist $n
+    }
+
+    # scan through all entries and find matching values
+    set rlist ""
+    set last [expr {[array size _tuples]-1}]
+    if {[llength $args] == 0} {
+        # no tuple? then all match
+        for {set i 0} {$i <= $last} {incr i} {
+            lappend rlist $i
+        }
+    } else {
+        set tuple [lindex $args 0]
+        if {[llength $nlist] == 0} {
+            # no format? then look for an exact match
+            for {set i 0} {$i <= $last} {incr i} {
+                if {[string equal $tuple $_tuples($i)]} {
+                    lappend rlist $i
+                }
+            }
+        } else {
+            # match only the columns in the -format
+            for {set i 0} {$i <= $last} {incr i} {
+                set matching 1
+                foreach n $nlist t $tuple {
+                    set val [lindex $_tuples($i) $n]
+                    if {![string equal $t $val]} {
+                        set matching 0
+                        break
+                    }
+                }
+                if {$matching} {
+                    lappend rlist $i
+                }
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: size
+#
+# Used by clients to determine the number of tuples stored on this
+# list.  Returns the size of the list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tuples::size {} {
+    return [array size _tuples]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _range ?<from>? ?<to>?
+#
+# Used internally to convert a <from>/<to> range to a range of real
+# number values.  If both are "", then the range is the entire range
+# of data.  The <from> and <to> values can be integers or the keyword
+# "end".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tuples::_range {{from ""} {to ""}} {
+    set last [expr {[array size _tuples]-1}]
+    if {"" == $from && "" == $to} {
+        return [list 0 $last]
+    }
+
+    if {"end" == $from} {
+        set from $last
+    } elseif {![string is integer $from]} {
+        error "bad position \"$from\": should be integer or \"end\""
+    }
+    if {$from < 0} {
+        set from 0
+    } elseif {$from > $last} {
+        set from $last
+    }
+
+    if {"" == $to} {
+        set to $from
+    } elseif {"end" == $to} {
+        set to $last
+    } elseif {![string is integer $to]} {
+        error "bad position \"$to\": should be integer or \"end\""
+    }
+    if {$to < 0} {
+        set to 0
+    } elseif {$to > $last} {
+        set to $last
+    }
+
+    if {$from > $to} {
+        # make sure to/from are in proper order
+        set tmp $from
+        set from $to
+        set to $tmp
+    }
+    return [list $from $to]
+}
Index: /tags/1.6.0/gui/scripts/tweener.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/tweener.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/tweener.tcl	(revision 6168)
@@ -0,0 +1,114 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: tweener - used for animating smooth movements
+#
+#  Each Tweener executes a command repeatedly through a series of
+#  values from one extreme to another.  For example, the command may
+#  change the size of a rectangle, and the values may go from 10 to
+#  200.  The Tweener will make that happen over a specified interval
+#  of time.  The animation can be stopped or changed at any point,
+#  and if the Tweener is destroyed, the action is cancelled.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+itcl::class Rappture::Tweener {
+    public variable from 0        ;# value goes from this...
+    public variable to   1        ;# ...to this
+    public variable duration 500  ;# during this time interval
+    public variable steps 10      ;# with this many steps
+    public variable command ""    ;# gets executed with %v for value
+    public variable finalize ""   ;# gets executed at the end to finish up
+
+    constructor {args} { eval configure $args }
+    destructor { # defined below }
+
+    public method go {{how "-resume"}}
+    public method stop {}
+
+    private method _next {}
+
+    private variable _nstep 0      ;# current step number
+    private variable _afterid ""   ;# pending after event
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tweener::destructor {} {
+    stop
+}
+
+# ----------------------------------------------------------------------
+# USAGE: go ?-resume|-restart?
+#
+# Causes the current animation to start running, either where it
+# left off (-resume) or fromt the beginning (-restart).
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tweener::go {{how -resume}} {
+    switch -- $how {
+        -resume {
+            # leave _nstep alone
+        }
+        -restart {
+            set _nstep 0
+        }
+        default {
+            error "bad option \"$how\": should be -restart or -resume"
+        }
+    }
+    stop
+    set _afterid [after idle [itcl::code $this _next]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: stop
+#
+# Causes the animation to stop by cancelling any pending after event.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tweener::stop {} {
+    if {"" != $_afterid} {
+        after cancel $_afterid
+        set _afterid ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _next
+#
+# Used internally to advance the animation.  Executes the -command
+# option with the current value substituted in place of any %v values.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tweener::_next {} {
+    set value [expr {($to-$from)/double($steps)*$_nstep + $from}]
+    set cmd $command
+    regsub -all %v $cmd $value cmd
+    if {[catch {uplevel #0 $cmd} result]} {
+        bgerror "$result\n    (while managing tweener $this)"
+    }
+
+    if {[incr _nstep] <= $steps} {
+        set delay [expr {round($duration/double($steps))}]
+        set _afterid [after $delay [itcl::code $this _next]]
+    } elseif {[string length $finalize] > 0} {
+        set cmd $finalize
+        regsub -all %v $cmd $value cmd
+        if {[catch {uplevel #0 $cmd} result]} {
+            bgerror "$result\n    (while finalizing tweener $this)"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -command
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Tweener::command {
+    if {[string length $command] == 0} {
+        stop
+    }
+}
Index: /tags/1.6.0/gui/scripts/unirect2d.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/unirect2d.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/unirect2d.tcl	(revision 6168)
@@ -0,0 +1,300 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: unirect2d - represents a uniform rectangular 2-D mesh.
+#
+#  This object represents one field in an XML description of a device.
+#  It simplifies the process of extracting data vectors that represent
+#  the field.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+package require BLT
+
+namespace eval Rappture { # forward declaration }
+
+itcl::class Rappture::Unirect2d {
+    constructor {xmlobj path} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc fetch {xmlobj path}
+    public proc release {obj}
+
+    public method dimensions {} {
+        return 2
+    }
+    public method hints {{keyword ""}}
+    public method isvalid {} {
+        return $_isValid
+    }
+    public method label { axis }
+    public method limits {axis}
+    public method numpoints {} {
+        return $_numPoints
+    }
+    public method units { axis }
+    public method vtkdata {{what -partial}} {}
+
+    private method GetString { obj path varName }
+    private method GetValue { obj path varName }
+    private method GetSize { obj path varName }
+
+    private variable _xMax       0
+    private variable _xMin       0
+    private variable _xNum       0;     # Number of points along x-axis
+    private variable _yMax       0
+    private variable _yMin       0
+    private variable _yNum       0;     # Number of points along y-axis
+    private variable _hints
+    private variable _vtkdata    ""
+    private variable _numPoints  0
+    private variable _isValid    0;     # Indicates if the data is valid.
+
+    private common _xp2obj       ;      # used for fetch/release ref counting
+    private common _obj2ref      ;      # used for fetch/release ref counting
+}
+
+#
+# fetch <xmlobj> <path>
+#
+#    Clients use this instead of a constructor to fetch the Mesh for a
+#    particular <path> in the <xmlobj>.  When the client is done with the mesh,
+#    he calls "release" to decrement the reference count.  When the mesh is no
+#    longer needed, it is cleaned up automatically.
+#
+itcl::body Rappture::Unirect2d::fetch {xmlobj path} {
+    set handle "$xmlobj|$path"
+    if {[info exists _xp2obj($handle)]} {
+        set obj $_xp2obj($handle)
+        incr _obj2ref($obj)
+        return $obj
+    }
+    set obj [Rappture::Unirect2d ::#auto $xmlobj $path]
+    set _xp2obj($handle) $obj
+    set _obj2ref($obj) 1
+    return $obj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::Unirect2d::release <obj>
+#
+# Clients call this when they're no longer using a Mesh fetched
+# previously by the "fetch" proc.  This decrements the reference
+# count for the mesh and destroys the object when it is no longer
+# in use.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Unirect2d::release { obj } {
+    if { ![info exists _obj2ref($obj)] } {
+        error "can't find reference count for $obj"
+    }
+    incr _obj2ref($obj) -1
+    if {$_obj2ref($obj) <= 0} {
+        unset _obj2ref($obj)
+        foreach handle [array names _xp2obj] {
+            if {$_xp2obj($handle) == $obj} {
+                unset _xp2obj($handle)
+            }
+        }
+        itcl::delete object $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# Constructor
+# ----------------------------------------------------------------------
+itcl::body Rappture::Unirect2d::constructor {xmlobj path} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be Rappture::library"
+    }
+    set m [$xmlobj element -as object $path]
+    GetValue $m "xaxis.min" _xMin
+    GetValue $m "xaxis.max" _xMax
+    GetValue $m "yaxis.min" _yMin
+    GetValue $m "yaxis.max" _yMax
+    GetSize $m "xaxis.numpoints" _xNum
+    GetSize $m "yaxis.numpoints" _yNum
+    foreach {key path} {
+        label   about.label
+        color   about.color
+        style   about.style
+        xlabel  xaxis.label
+        xdesc   xaxis.description
+        xunits  xaxis.units
+        xscale  xaxis.scale
+        xmin    xaxis.min
+        xmax    xaxis.max
+        ylabel  yaxis.label
+        ydesc   yaxis.description
+        yunits  yaxis.units
+        yscale  yaxis.scale
+        ymin    yaxis.min
+        ymax    yaxis.max
+        type    about.type
+    } {
+        set str [$m get $path]
+        if {"" != $str} {
+            set _hints($key) $str
+        }
+    }
+    itcl::delete object $m
+    set _numPoints [expr $_xNum * $_yNum]
+    if { $_numPoints == 0 } {
+        set _vtkdata ""
+        return
+    }
+    append out "DATASET STRUCTURED_POINTS\n"
+    append out "DIMENSIONS $_xNum $_yNum 1\n"
+    append out "ORIGIN $_xMin $_yMin 0\n"
+    if { $_xNum > 1 } {
+        set xSpace [expr (double($_xMax) - double($_xMin))/double($_xNum - 1)]
+    } else {
+        set xSpace 0.0
+    }
+    if { $_yNum > 1 } {
+        set ySpace [expr (double($_yMax) - double($_yMin))/double($_yNum - 1)]
+    } else {
+        set ySpace 0.0
+    }
+    append out "SPACING $xSpace $ySpace 0\n"
+    set _vtkdata $out
+    set _isValid 1
+    puts stderr "WARNING: The <unirect2d> element is deprecated.  Please use a <mesh> instead."
+}
+
+# ----------------------------------------------------------------------
+# Destructor
+# ----------------------------------------------------------------------
+itcl::body Rappture::Unirect2d::destructor {} {
+    # empty
+}
+
+# ----------------------------------------------------------------------
+# method limits <axis>
+#       Returns a list {min max} representing the limits for the
+#       specified axis.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Unirect2d::limits {which} {
+    set min ""
+    set max ""
+
+    switch -- $which {
+        x - xlin - xlog {
+            set min $_xMin
+            set max $_xMax
+        }
+        y - ylin - ylog {
+            set min $_yMin
+            set max $_yMax
+        }
+        z - zlin - zlog {
+            set min 0
+            set max 0
+        }
+        default {
+            error "unknown axis description \"$which\""
+        }
+    }
+    return [list $min $max]
+}
+
+#
+# units --
+#
+#       Returns the units of the given axis.
+#
+itcl::body Rappture::Unirect2d::units { axis } {
+    if { [info exists _hints(${axis}units)] } {
+        return $_hints(${axis}units)
+    }
+    return ""
+}
+
+#
+# label --
+#
+#       Returns the label of the given axis.
+#
+itcl::body Rappture::Unirect2d::label { axis } {
+    if { [info exists _hints(${axis}label)] } {
+        return $_hints(${axis}label)
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this curve.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Unirect2d::hints { {keyword ""} } {
+    if {[info exists _hints(xlabel)] && "" != $_hints(xlabel)
+        && [info exists _hints(xunits)] && "" != $_hints(xunits)} {
+        set _hints(xlabel) "$_hints(xlabel) ($_hints(xunits))"
+    }
+    if {[info exists _hints(ylabel)] && "" != $_hints(ylabel)
+        && [info exists _hints(yunits)] && "" != $_hints(yunits)} {
+        set _hints(ylabel) "$_hints(ylabel) ($_hints(yunits))"
+    }
+    if {[info exists _hints(group)] && [info exists _hints(label)]} {
+        # pop-up help for each curve
+        set _hints(tooltip) $_hints(label)
+    }
+    if {$keyword != ""} {
+        if {[info exists _hints($keyword)]} {
+            return $_hints($keyword)
+        }
+        return ""
+    }
+    return [array get _hints]
+}
+
+itcl::body Rappture::Unirect2d::vtkdata {{what -partial}} {
+    if {$what == "-full"} {
+        append out "# vtk DataFile Version 3.0\n"
+        append out "[hints label]\n"
+        append out "ASCII\n"
+        append out $_vtkdata
+        return $out
+    } else {
+        return $_vtkdata
+    }
+}
+
+itcl::body Rappture::Unirect2d::GetSize { obj path varName } {
+    set string [$obj get $path]
+    if { [scan $string "%d" value] != 1 || $value < 0 } {
+        puts stderr "can't get size \"$string\" of \"$path\""
+        return
+    }
+    upvar $varName size
+    set size $value
+}
+
+itcl::body Rappture::Unirect2d::GetValue { obj path varName } {
+    set string [$obj get $path]
+    if { [scan $string "%g" value] != 1 } {
+        puts stderr "can't get value \"$string\" of \"$path\""
+        return
+    }
+    upvar $varName number
+    set number $value
+}
+
+itcl::body Rappture::Unirect2d::GetString { obj path varName } {
+    set string [$obj get $path]
+    if { $string == "" } {
+        puts stderr "can't get string \"$string\" of \"$path\""
+        return
+    }
+    upvar $varName str
+    set str $string
+}
Index: /tags/1.6.0/gui/scripts/unirect3d.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/unirect3d.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/unirect3d.tcl	(revision 6168)
@@ -0,0 +1,320 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: unirect3d - represents a uniform rectangular 3-D mesh.
+#
+#  This object represents one field in an XML description of a device.
+#  It simplifies the process of extracting data vectors that represent
+#  the field.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+package require BLT
+
+namespace eval Rappture { # forward declaration }
+
+itcl::class Rappture::Unirect3d {
+    constructor {xmlobj path} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc fetch {xmlobj path}
+    public proc release {obj}
+
+    public method dimensions {} {
+        return 3
+    }
+    public method hints {{keyword ""}}
+    public method isvalid {} {
+        return $_isValid
+    }
+    public method label { axis }
+    public method limits {axis}
+    public method numpoints {} {
+        return $_numPoints
+    }
+    public method units { axis }
+    public method vtkdata {{what -partial}} {}
+
+    private method GetString { obj path varName }
+    private method GetValue { obj path varName }
+    private method GetSize { obj path varName }
+
+    private variable _xMax       0
+    private variable _xMin       0
+    private variable _xNum       0;     # Number of points along x-axis
+    private variable _yMax       0
+    private variable _yMin       0
+    private variable _yNum       0;     # Number of points along y-axis
+    private variable _zMax       0
+    private variable _zMin       0
+    private variable _zNum       0;     # Number of points along z-axis
+    private variable _hints
+    private variable _vtkdata    ""
+    private variable _numPoints  0
+    private variable _isValid    0;     # Indicates if the data is valid.
+
+    private common _xp2obj       ;      # used for fetch/release ref counting
+    private common _obj2ref      ;      # used for fetch/release ref counting
+}
+
+#
+# fetch <xmlobj> <path>
+#
+#    Clients use this instead of a constructor to fetch the Mesh for a
+#    particular <path> in the <xmlobj>.  When the client is done with the mesh,
+#    he calls "release" to decrement the reference count.  When the mesh is no
+#    longer needed, it is cleaned up automatically.
+#
+itcl::body Rappture::Unirect3d::fetch {xmlobj path} {
+    set handle "$xmlobj|$path"
+    if {[info exists _xp2obj($handle)]} {
+        set obj $_xp2obj($handle)
+        incr _obj2ref($obj)
+        return $obj
+    }
+    set obj [Rappture::Unirect3d ::#auto $xmlobj $path]
+    set _xp2obj($handle) $obj
+    set _obj2ref($obj) 1
+    return $obj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::Unirect3d::release <obj>
+#
+# Clients call this when they're no longer using a Mesh fetched
+# previously by the "fetch" proc.  This decrements the reference
+# count for the mesh and destroys the object when it is no longer
+# in use.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Unirect3d::release { obj } {
+    if { ![info exists _obj2ref($obj)] } {
+        error "can't find reference count for $obj"
+    }
+    incr _obj2ref($obj) -1
+    if {$_obj2ref($obj) <= 0} {
+        unset _obj2ref($obj)
+        foreach handle [array names _xp2obj] {
+            if {$_xp2obj($handle) == $obj} {
+                unset _xp2obj($handle)
+            }
+        }
+        itcl::delete object $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# Constructor
+# ----------------------------------------------------------------------
+itcl::body Rappture::Unirect3d::constructor {xmlobj path} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be Rappture::library"
+    }
+    set m [$xmlobj element -as object $path]
+    GetValue $m "xaxis.min" _xMin
+    GetValue $m "xaxis.max" _xMax
+    GetValue $m "yaxis.min" _yMin
+    GetValue $m "yaxis.max" _yMax
+    GetValue $m "zaxis.min" _zMin
+    GetValue $m "zaxis.max" _zMax
+    GetSize $m "xaxis.numpoints" _xNum
+    GetSize $m "yaxis.numpoints" _yNum
+    GetSize $m "zaxis.numpoints" _zNum
+    foreach {key path} {
+        label   about.label
+        color   about.color
+        style   about.style
+        xlabel  xaxis.label
+        xdesc   xaxis.description
+        xunits  xaxis.units
+        xscale  xaxis.scale
+        xmin    xaxis.min
+        xmax    xaxis.max
+        ylabel  yaxis.label
+        ydesc   yaxis.description
+        yunits  yaxis.units
+        yscale  yaxis.scale
+        ymin    yaxis.min
+        ymax    yaxis.max
+        zlabel  zaxis.label
+        zdesc   zaxis.description
+        zunits  zaxis.units
+        zscale  zaxis.scale
+        zmin    zaxis.min
+        zmax    zaxis.max
+    } {
+        set str [$m get $path]
+        if {"" != $str} {
+            set _hints($key) $str
+        }
+    }
+    itcl::delete object $m
+    set _numPoints [expr $_xNum * $_yNum * $_zNum]
+    if { $_numPoints == 0 } {
+        set _vtkdata ""
+        return
+    }
+    append out "DATASET STRUCTURED_POINTS\n"
+    append out "DIMENSIONS $_xNum $_yNum $_zNum\n"
+    append out "ORIGIN $_xMin $_yMin $_zMin\n"
+    if { $_xNum > 1 } {
+        set xSpace [expr (double($_xMax) - double($_xMin))/double($_xNum - 1)]
+    } else {
+        set xSpace 0.0
+    }
+    if { $_yNum > 1 } {
+        set ySpace [expr (double($_yMax) - double($_yMin))/double($_yNum - 1)]
+    } else {
+        set ySpace 0.0
+    }
+    if { $_zNum > 1 } {
+        set zSpace [expr (double($_zMax) - double($_zMin))/double($_zNum - 1)]
+    } else {
+        set zSpace 0.0
+    }
+    append out "SPACING $xSpace $ySpace $zSpace\n"
+    set _vtkdata $out
+    set _isValid 1
+    puts stderr "WARNING: The <unirect3d> element is deprecated.  Please use a <mesh> instead."
+}
+
+# ----------------------------------------------------------------------
+# Destructor
+# ----------------------------------------------------------------------
+itcl::body Rappture::Unirect3d::destructor {} {
+    # empty
+}
+
+# ----------------------------------------------------------------------
+# method limits <axis>
+#       Returns a list {min max} representing the limits for the
+#       specified axis.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Unirect3d::limits {which} {
+    set min ""
+    set max ""
+
+    switch -- $which {
+        x - xlin - xlog {
+            set min $_xMin
+            set max $_xMax
+        }
+        y - ylin - ylog {
+            set min $_yMin
+            set max $_yMax
+        }
+        z - zlin - zlog {
+            set min $_zMin
+            set max $_zMax
+        }
+        default {
+            error "unknown axis description \"$which\""
+        }
+    }
+    return [list $min $max]
+}
+
+#
+# units --
+#
+#       Returns the units of the given axis.
+#
+itcl::body Rappture::Unirect3d::units { axis } {
+    if { [info exists _hints(${axis}units)] } {
+        return $_hints(${axis}units)
+    }
+    return ""
+}
+
+#
+# label --
+#
+#       Returns the label of the given axis.
+#
+itcl::body Rappture::Unirect3d::label { axis } {
+    if { [info exists _hints(${axis}label)] } {
+        return $_hints(${axis}label)
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this curve.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Unirect3d::hints { {keyword ""} } {
+    if {[info exists _hints(xlabel)] && "" != $_hints(xlabel)
+        && [info exists _hints(xunits)] && "" != $_hints(xunits)} {
+        set _hints(xlabel) "$_hints(xlabel) ($_hints(xunits))"
+    }
+    if {[info exists _hints(ylabel)] && "" != $_hints(ylabel)
+        && [info exists _hints(yunits)] && "" != $_hints(yunits)} {
+        set _hints(ylabel) "$_hints(ylabel) ($_hints(yunits))"
+    }
+    if {[info exists _hints(zlabel)] && "" != $_hints(zlabel)
+        && [info exists _hints(zunits)] && "" != $_hints(zunits)} {
+        set _hints(ylabel) "$_hints(zlabel) ($_hints(zunits))"
+    }
+    if {[info exists _hints(group)] && [info exists _hints(label)]} {
+        # pop-up help for each curve
+        set _hints(tooltip) $_hints(label)
+    }
+    if {$keyword != ""} {
+        if {[info exists _hints($keyword)]} {
+            return $_hints($keyword)
+        }
+        return ""
+    }
+    return [array get _hints]
+}
+
+itcl::body Rappture::Unirect3d::vtkdata {{what -partial}} {
+    if {$what == "-full"} {
+        append out "# vtk DataFile Version 3.0\n"
+        append out "[hints label]\n"
+        append out "ASCII\n"
+        append out $_vtkdata
+        return $out
+    } else {
+        return $_vtkdata
+    }
+}
+
+itcl::body Rappture::Unirect3d::GetSize { obj path varName } {
+    set string [$obj get $path]
+    if { [scan $string "%d" value] != 1 || $value < 0 } {
+        puts stderr "can't get size \"$string\" of \"$path\""
+        return
+    }
+    upvar $varName size
+    set size $value
+}
+
+itcl::body Rappture::Unirect3d::GetValue { obj path varName } {
+    set string [$obj get $path]
+    if { [scan $string "%g" value] != 1 } {
+        puts stderr "can't get value \"$string\" of \"$path\""
+        return
+    }
+    upvar $varName number
+    set number $value
+}
+
+itcl::body Rappture::Unirect3d::GetString { obj path varName } {
+    set string [$obj get $path]
+    if { $string == "" } {
+        puts stderr "can't get string \"$string\" of \"$path\""
+        return
+    }
+    upvar $varName str
+    set str $string
+}
Index: /tags/1.6.0/gui/scripts/units.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/units.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/units.tcl	(revision 6168)
@@ -0,0 +1,547 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: units - mechanism for converting numbers with units
+#
+#  These routines make it easy to define a system of units, to decode
+#  numbers with units, and convert a number from one set of units to
+#  another.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+namespace eval Rappture { # forward declaration }
+namespace eval Rappture::Units { # forward declaration }
+
+# ----------------------------------------------------------------------
+# USAGE: define units ?-type name? ?-metric boolean?
+# USAGE: define units1->units2 {expr}
+#
+# Used to define a new fundamental type of units, or to define another
+# system of units based on a fundamental type.  Once units are defined
+# in this manner, the "convert" function can be used to convert a number
+# in one system of units to another system.
+# ----------------------------------------------------------------------
+proc Rappture::Units::define {what args} {
+    if {[regexp {(.+)->(.+)} $what match new fndm]} {
+        if {[llength $args] != 2} {
+            error "wrong # args: should be \"define units1->units2 exprTo exprFrom\""
+        }
+        #
+        # Convert the units variables embedded in the conversion
+        # expressions to something that Tcl can handle.  We'll
+        # use ${number} to represent the variables.
+        #
+        foreach {exprTo exprFrom} $args { break }
+        regsub -all $new $exprTo {${number}} exprTo
+        regsub -all $fndm $exprFrom {${number}} exprFrom
+
+        Rappture::Units::System #auto $new \
+            -basis [list $fndm $exprTo $exprFrom]
+
+    } elseif {[regexp {^/?[a-zA-Z]+[0-9]*$} $what]} {
+        array set opts {
+            -type ""
+            -metric 0
+        }
+        foreach {key val} $args {
+            if {![info exists opts($key)]} {
+                error "bad option \"$key\": should be [join [lsort [array names opts]] {, }]"
+            }
+            set opts($key) $val
+        }
+        eval Rappture::Units::System #auto $what [array get opts]
+    } else {
+        error "bad units definition \"$what\": should be something like m or /cm3 or A->m"
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: mcheck_range value {min ""} {max ""}
+#
+# Checks a value or PDF to determine if is is in a required range.
+# Automatically does unit conversion if necessary.
+# Returns value if OK.  Error if out-of-range
+# Examples:
+#    [mcheck_range "gaussian 0C 1C" 200K 500K] returns 1
+#    [mcheck_range "uniform 100 200" 150 250] returns 0
+#    [mcheck_range 100 0 200] returns 1
+# ----------------------------------------------------------------------
+
+proc Rappture::Units::_check_range {value min max units} {
+    # puts "_check_range $value min=$min max=$max units=$units"
+    # make sure the value has units
+    if {$units != ""} {
+        set value [Rappture::Units::convert $value -context $units]
+        # for comparisons, remove units
+        set nv [Rappture::Units::convert $value -context $units -units off]
+        # get the units for the value
+        set newunits [Rappture::Units::Search::for $value]
+    } else {
+        set nv $value
+    }
+
+    if {"" != $min} {
+        if {"" != $units} {
+            # compute the minimum in the new units
+            set minv [Rappture::Units::convert $min -to $newunits -context $units  -units off]
+            # same, but include units for printing
+            set convMinVal [Rappture::Units::convert $min -to $newunits -context $units]
+        } else {
+            set minv $min
+            set convMinVal $min
+        }
+        if {$nv < $minv} {
+            error "Minimum value allowed here is $convMinVal"
+        }
+    }
+    if {"" != $max} {
+        if {"" != $units} {
+            # compute the maximum in the new units
+            set maxv [Rappture::Units::convert $max -to $newunits -context $units -units off]
+            # same, but include units for printing
+            set convMaxVal [Rappture::Units::convert $max -to $newunits -context $units ]
+        } else {
+            set maxv $max
+            set convMaxVal $max
+        }
+        if {$nv > $maxv} {
+            error "Maximum value allowed here is $convMaxVal"
+        }
+    }
+    return $value
+}
+
+proc Rappture::Units::mcheck_range {value {min ""} {max ""} {units ""}} {
+    # puts "mcheck_range $value min=$min max=$max units=$units"
+
+    switch -- [lindex $value 0] {
+        normal -
+        gaussian {
+            # get the mean
+            set mean [_check_range [lindex $value 1] $min $max $units]
+            if {$units == ""} {
+                set dev [lindex $value 2]
+                set ndev $dev
+            } else {
+                set dev [Rappture::Units::convert [lindex $value 2] -context $units]
+                set ndev [Rappture::Units::convert $dev -units off]
+            }
+            if {$ndev <= 0} {
+                error "Deviation must be positive."
+            }
+            return [list gaussian $mean $dev]
+        }
+        uniform {
+            set min [_check_range [lindex $value 1] $min $max $units]
+            set max [_check_range [lindex $value 2] $min $max $units]
+            return [list uniform $min $max]
+        }
+        exact  {
+            return [_check_range [lindex $value 1] $min $max $units]
+        }
+        default {
+            return [_check_range [lindex $value 0] $min $max $units]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: mconvert value ?-context units? ?-to units? ?-units on/off?
+#
+# This version of convert() converts multiple values.  Used when the
+# value could be a range or probability density function (PDF).
+# Examples:
+#    gaussian 100k 1k
+#    uniform 0eV 10eV
+#    42
+#    exact 42
+# ----------------------------------------------------------------------
+
+proc Rappture::Units::mconvert {value args} {
+    # puts "mconvert $value : $args"
+    array set opts {
+        -context ""
+        -to ""
+        -units "on"
+    }
+
+    set value [split $value]
+
+    switch -- [lindex $value 0] {
+        normal - gaussian {
+            set valtype gaussian
+            set vals [lrange $value 1 2]
+            set convtype {0 1}
+        }
+        uniform {
+            set valtype uniform
+            set vals [lrange $value 1 2]
+            set convtype {0 0}
+        }
+        exact  {
+            set valtype ""
+            set vals [lindex $value 1]
+            set convtype {0}
+        }
+        default {
+            set valtype ""
+            set vals $value
+            set convtype {0}
+        }
+    }
+
+    foreach {key val} $args {
+        if {![info exists opts($key)]} {
+            error "bad option \"$key\": should be [join [lsort [array names opts]] {, }]"
+        }
+        set opts($key) $val
+    }
+
+    set newval $valtype
+    foreach val $vals ctype $convtype {
+        if {$ctype == 1} {
+            # This code handles unit conversion for deltas (changes).
+            # For example, if we want a standard deviation of 10C converted
+            # to Kelvin, that is 10K, NOT a standard deviation of 283.15K.
+            set units [Rappture::Units::Search::for $val]
+            set base [eval Rappture::Units::convert 0$units $args -units off]
+            set new [eval Rappture::Units::convert $val $args -units off]
+            set delta [expr $new - $base]
+            set val $delta$opts(-to)
+        }
+        # tcl 8.5 allows us to do this:
+        # lappend newval [Rappture::Units::convert $val {*}$args]
+        # but we are using tcl8.4 so we use eval :^(
+        lappend newval [eval Rappture::Units::convert $val $args]
+    }
+    return $newval
+}
+
+# ----------------------------------------------------------------------
+# USAGE: convert value ?-context units? ?-to units? ?-units on/off?
+#
+# Used to convert one value with units to another value in a different
+# system of units.  If the value has no units, then the units are taken
+# from the -context, if that is supplied.  If the -to system is not
+# specified, then the value is converted to fundamental units for the
+# current system.
+# ----------------------------------------------------------------------
+# proc Rappture::Units::convert {value args} {}
+# Actual implementation is in rappture/lang/tcl/src/RpUnitsTclInterface.cc.
+
+
+# ----------------------------------------------------------------------
+# USAGE: description <units>
+#
+# Returns a description for the specified system of units.  The
+# description includes the abstract type (length, temperature, etc.)
+# along with a list of all compatible systems.
+# ----------------------------------------------------------------------
+# proc Rappture::Units::description {units} {}
+# Actual implementation is in rappture/lang/tcl/src/RpUnitsTclInterface.cc.
+
+
+# ----------------------------------------------------------------------
+itcl::class Rappture::Units::System {
+    public variable basis ""
+    public variable type ""
+    public variable metric 0
+
+    constructor {name args} { # defined below }
+
+    public method basic {}
+    public method fundamental {}
+    public method convert {value units showUnits}
+    private variable _system ""  ;# this system of units
+
+    # These are in rappture/lang/tcl/src/RpUnitsTclInterface.cc.
+    # public proc for {units}
+    # public proc all {units}
+
+    public proc regularize {units}
+
+    private common _base  ;# maps unit name => System obj
+
+    # metric conversion prefixes
+    private common _prefix2factor
+    array set _prefix2factor {
+        c  1e-2
+        m  1e-3
+        u  1e-6
+        n  1e-9
+        p  1e-12
+        f  1e-15
+        a  1e-18
+        k  1e+3
+        M  1e+6
+        G  1e+9
+        T  1e+12
+        P  1e+15
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Units::System::constructor {name args} {
+    if {![regexp {^/?[a-zA-Z]+[0-9]*$} $name]} {
+        error "bad units declaration \"$name\""
+    }
+    eval configure $args
+
+    #
+    # The -basis is a list {units exprTo exprFrom}, indicating the
+    # fundamental system of units that this new system is based on,
+    # and the expressions that can be used to convert this new system
+    # to and from the fundamental system.
+    #
+    if {$basis != ""} {
+        foreach {base exprTo exprFrom} $basis { break }
+        if {![info exists _base($base)]} {
+            error "fundamental system of units \"$base\" not defined"
+        }
+        while {$type == "" && $base != ""} {
+            set obj $_base($base)
+            set type [$obj cget -type]
+            set base [lindex [$obj cget -basis] 0]
+        }
+    }
+    set _system $name
+    set _base($name) $this
+}
+
+# ----------------------------------------------------------------------
+# USAGE: basic
+#
+# Returns the basic system of units for the current system.  The
+# basic units may be the only units in this system.  But if this
+# system has "-metric 1", the basic system is the system without
+# any metric prefixes.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Units::System::basic {} {
+    return $_system
+}
+
+# ----------------------------------------------------------------------
+# USAGE: fundamental
+#
+# Returns the fundamental system of units for the current system.
+# For example, the current units might be degrees F, but the
+# fundamental system might be degrees C.  The fundamental system
+# depends on how each system is defined.  You can see it as the
+# right-hand side of the -> arrow, as in "F->C".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Units::System::fundamental {} {
+    if {$basis != ""} {
+        set sys [Rappture::Units::System::for [lindex $basis 0]]
+        return [$sys fundamental]
+    }
+    return $_system
+}
+
+# ----------------------------------------------------------------------
+# USAGE: convert value newUnits showUnits
+#
+# Converts a value with units to another value with the specified
+# units.  The value must have units that are compatible with the
+# current system.  Returns a string that represented the converted
+# number and its new units.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Units::System::convert {value newUnits showUnits} {
+    if {![regexp {^([-+]?[0-9]+\.?([0-9]+)?([eEdD][-+]?[0-9]+)?) *(/?[a-zA-Z]+[0-9]*)?$} $value match number dummy1 dummy2 units]} {
+        error "bad value \"$value\": should be real number with units"
+    }
+
+    #
+    # Check the base units coming in.  They should match the base units
+    # for the current system, or the base units for the fundamental basis.
+    # If not, something went wrong with the caller.
+    #
+    set slash ""
+    set prefix ""
+    set power "1"
+    if {$metric && [regexp {^(/?)([cmunpfakMGTP])([a-zA-Z]+)([0-9]*)$} $units match slash prefix base power]} {
+        set baseUnits "$slash$base$power"
+    } else {
+        set baseUnits $units
+    }
+    if {![string equal $baseUnits $_system]
+          && ![string equal $baseUnits [lindex $basis 0]]} {
+        error "can't convert value \"$value\": should have units \"$_system\""
+    }
+
+    #
+    # If the number coming in has a metric prefix, convert the number
+    # to the base system.
+    #
+    if {$prefix != ""} {
+        if {$power == ""} {
+            set power 1
+        }
+        if {$slash == "/"} {
+            set number [expr {$number/pow($_prefix2factor($prefix),$power)}]
+        } else {
+            set number [expr {$number*pow($_prefix2factor($prefix),$power)}]
+        }
+    }
+
+    #
+    # If the incoming units are a fundamental basis, then convert
+    # the number from the basis to the current system.
+    #
+    if {[string equal $baseUnits [lindex $basis 0]]} {
+        foreach {base exprTo exprFrom} $basis { break }
+        set number [expr $exprFrom]
+    }
+
+    #
+    # Check the base units for the new system of units.  If they match
+    # the current system, then we're almost done.  Just handle the
+    # metric prefix, if there is one.
+    #
+    set slash ""
+    set prefix ""
+    set power "1"
+    if {$metric && [regexp {^(/?)([cmunpfakMGTP])([a-zA-Z]+)([0-9]*)$} $newUnits match slash prefix base power]} {
+        set baseUnits "$slash$base$power"
+    } else {
+        set baseUnits $newUnits
+    }
+    if {[string equal $baseUnits $_system]} {
+        if {$prefix != ""} {
+            if {$power == ""} {
+                set power 1
+            }
+            if {$slash == "/"} {
+                set number [expr {$number*pow($_prefix2factor($prefix),$power)}]
+            } else {
+                set number [expr {$number/pow($_prefix2factor($prefix),$power)}]
+            }
+        }
+        if {$showUnits} {
+            return "$number$newUnits"
+        }
+        return $number
+    }
+
+    #
+    # If we want a different system of units, then convert this number
+    # to the fundamental basis.  If there is no fundamental basis, we
+    # must already be in the fundamental basis.
+    #
+    set base $_system
+    if {"" != $basis} {
+        foreach {base exprTo exprFrom} $basis { break }
+        set number [expr $exprTo]
+    }
+
+    set newsys [Rappture::Units::System::for $newUnits]
+    return [$newsys convert "$number$base" $newUnits $showUnits]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -basis
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Units::System::basis {
+    if {[llength $basis] != 3} {
+        error "bad basis \"$name\": should be {units exprTo exprFrom}"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -metric
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Units::System::metric {
+    if {![string is boolean -strict $metric]} {
+        error "bad value \"$metric\": should be boolean"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: for units
+#
+# Returns the System object for the given system of units, or ""
+# if there is no system that matches the units string.
+# ----------------------------------------------------------------------
+# itcl::body Rappture::Units::System::for {units} {}
+# Actual implementation is in rappture/lang/tcl/src/RpUnitsTclInterface.cc.
+
+
+# ----------------------------------------------------------------------
+# USAGE: all units
+#
+# Returns a list of all units compatible with the given units string.
+# Compatible units are determined by following all conversion
+# relationships that lead to the same base system.
+# ----------------------------------------------------------------------
+# itcl::body Rappture::Units::System::all {units} {}
+# Actual implementation is in rappture/lang/tcl/src/RpUnitsTclInterface.cc.
+
+
+# ----------------------------------------------------------------------
+# USAGE: regularize units
+#
+# Examines the given expression of units and tries to regularize
+# it so it has the proper capitalization.  For example, units like
+# "/CM3" are converted to "/cm3".  If the units are not recognized,
+# then they are returned as-is.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Units::System::regularize {units} {
+    set sys [for $units]
+    if {$sys == ""} {
+        return $units
+    }
+    # note: case-insensitive matching for metric prefix
+    if {[regexp {^(/?)([cCmMuUnNpPfFaAkKgGtT]?)([a-zA-Z]+[0-9]+|[a-zA-Z]+)$} $units match slash prefix tail]} {
+        if {[regexp {^[CUNFAK]$} $prefix]} {
+            # we know that these should be lower case
+            set prefix [string tolower $prefix]
+        } elseif {[regexp {^[GT]$} $prefix]} {
+            # we know that these should be upper case
+            set prefix [string toupper $prefix]
+        }
+        return "$slash$prefix[string trimleft [$sys basic] /]"
+    }
+    return [$sys basic]
+}
+
+# ----------------------------------------------------------------------
+
+# ----------------------------------------------------------------------
+# Define common units...
+# ----------------------------------------------------------------------
+Rappture::Units::define m -type length -metric yes
+Rappture::Units::define A->m {A*1.0e-10} {m*1.0e10}
+
+Rappture::Units::define /m3 -type density -metric yes
+Rappture::Units::define /m2 -type misc -metric yes
+
+Rappture::Units::define C -type temperature -metric no
+Rappture::Units::define K->C {K-273.15} {C+273.15}
+Rappture::Units::define F->C {(F-32)/1.8} {(1.8*C)+32}
+
+Rappture::Units::define eV -type energy -metric yes
+Rappture::Units::define J->eV {J/1.602177e-19} {eV*1.602177e-19}
+
+Rappture::Units::define V -type voltage -metric yes
+
+Rappture::Units::define s -type seconds -metric yes
+# can't use min becase tcl thinks its milli-in's
+# Rappture::Units::define min->s {min*60.00} {s/60.00}
+Rappture::Units::define h->s {h*3600.00} {s/3600.00}
+Rappture::Units::define d->s {d*86400.00} {s/86400.00}
+
+# can't put mol's in because tcl thinks its milli-ol's
+# Rappture::Units::define mol -type misc -metric yes
+Rappture::Units::define Hz -type misc -metric yes
+Rappture::Units::define Bq -type misc -metric yes
+
+Rappture::Units::define deg -type angle -metric no
+Rappture::Units::define rad -type angle -metric no
+Rappture::Units::define deg->rad {deg*(3.1415926535897931/180.00)} {rad*(180.00/3.1415926535897931)}
Index: /tags/1.6.0/gui/scripts/uq.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/uq.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/uq.tcl	(revision 6168)
@@ -0,0 +1,541 @@
+package require Itk
+namespace eval Rappture {}
+
+itcl::class Rappture::UQ {
+
+    constructor {varlist num type uqargs} {
+        #puts "Rappture::UQ constructor $varlist:$type:$uqargs"
+        set _varlist $varlist
+        set _type $type
+        set _args $uqargs
+        set _num $num
+    }
+
+    destructor {
+        # defined below
+    }
+
+    public method run_dialog {win}
+    public method num_runs {}
+    public method type {} {return $_type}
+    public method args {} {return $_args}
+
+    protected method _setWaitVariable {state}
+    protected method _adjust_level {win}
+    protected method _set_text {win}
+    protected method _init_num_pts_array {}
+    public variable _type "smolyak"
+    private variable _args "2"
+    private variable _varlist {}
+    private variable _wait_uq 0
+    private variable _num_pts {}
+    private variable _go ""
+    private variable _num 0
+}
+
+# ----------------------------------------------------------------------
+# Display a dialog for setting UQ options.
+# Returns 0 to cancel, 1 to continue.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UQ::run_dialog {win} {
+
+    set popup .pop_simulate
+    if {[winfo exists $popup]} {destroy $popup}
+
+    if { ![winfo exists $popup] } {
+
+        Rappture::Balloon $popup -title "UQ Options"
+        set inner [$popup component inner]
+        labelframe  $inner.type -text "UQ Type"
+
+        set _val [Rappture::Combobox $inner.type.val -width 20 -editable no]
+        pack $_val -side top -expand yes -fill x -pady 5
+        $_val choices insert end smolyak "Smolyak"
+        $_val value [$_val label $_type]
+
+        label $inner.type.labeltext -text "Level" -font "Arial 9"
+        Rappture::Spinint $inner.type.level -min 1 -max 20
+        $inner.type.level value $_args
+        bind $inner.type.level <<Value>> [itcl::code $this _adjust_level $inner]
+        pack $inner.type.labeltext $inner.type.level -side left -expand yes -fill x -pady 5
+        pack $inner.type -side top -fill x
+
+        set fr [frame $inner.frame]
+
+        set nr [num_runs]
+        label $fr.text
+
+        #     bind $_val <<Value>> [itcl::code $this _change_param_type $inner]
+
+        button $fr.cancel -text Cancel -command  [itcl::code $this _setWaitVariable 0]
+        set _go $fr.go
+        button $_go -text "Launch Jobs" -command  [itcl::code $this _setWaitVariable 1]
+        _set_text $inner
+
+        pack $fr.text -side top -pady 10
+        pack $_go $fr.cancel -pady 4 -side right
+        pack $fr
+    }
+    update idletasks
+
+    _setWaitVariable -1
+    $popup activate $win below
+    tkwait variable [itcl::scope _wait_uq]
+    $popup deactivate
+
+    return $_wait_uq
+}
+
+itcl::body Rappture::UQ::_setWaitVariable {state} {
+    set _wait_uq $state
+}
+
+itcl::body Rappture::UQ::_set_text {win} {
+    set nr [num_runs]
+
+    switch $_type {
+        smolyak {
+            if {$nr == 0} {
+                set text "ERROR: The number of required jobs exceeds 100,000!\n\  Please\n\
+                adjust the polynomial level or reduce the number of UQ variables."
+                $_go configure -state disabled
+            } else {
+                set text "This method builds a polynomial response\
+                function of degree $_args.\n It will require $nr runs."
+                $_go configure -state normal
+            }
+        }
+        default {
+            set text "This will require $nr runs of the tool."
+            $_go configure -state normal
+        }
+    }
+    $win.frame.text configure -text $text
+}
+
+itcl::body Rappture::UQ::_adjust_level {win} {
+    set _args [$win.type.level value]
+    _set_text $win
+}
+
+itcl::body Rappture::UQ::num_runs {} {
+    #puts "varlist=$_varlist"
+    set numvars  $_num
+    #puts "UQ num_runs $numvars $_type $_args"
+    if {![array exists _num_pts]} { _init_num_pts_array }
+    switch $_type {
+        smolyak {
+            return $_num_pts($numvars,$_args)
+        }
+        default {
+            return $_args
+        }
+    }
+}
+
+itcl::body Rappture::UQ::_init_num_pts_array {} {
+    # array is indexed (dim,level)
+    unset _num_pts
+    array set _num_pts [list \
+        0,0 0 \
+        0,1 0 \
+        0,2 0 \
+        0,3 0 \
+        0,4 0 \
+        0,5 0 \
+        0,6 0 \
+        0,7 0 \
+        0,8 0 \
+        0,9 0 \
+        0,10 0 \
+        0,11 0 \
+        0,12 0 \
+        0,13 0 \
+        0,14 0 \
+        0,15 0 \
+        0,16 0 \
+        0,17 0 \
+        0,18 0 \
+        0,19 0 \
+        1,0 0 \
+        1,1 3 \
+        1,2 5 \
+        1,3 9 \
+        1,4 17 \
+        1,5 33 \
+        1,6 65 \
+        1,7 129 \
+        1,8 257 \
+        1,9 513 \
+        1,10 1025 \
+        1,11 2049 \
+        1,12 4097 \
+        1,13 8193 \
+        1,14 16385 \
+        1,15 32769 \
+        1,16 65537 \
+        1,17 131073 \
+        1,18 0 \
+        1,19 0 \
+        2,0 0 \
+        2,1 5 \
+        2,2 13 \
+        2,3 29 \
+        2,4 65 \
+        2,5 145 \
+        2,6 321 \
+        2,7 705 \
+        2,8 1537 \
+        2,9 3329 \
+        2,10 7169 \
+        2,11 15361 \
+        2,12 32769 \
+        2,13 69633 \
+        2,14 147457 \
+        2,15 0 \
+        2,16 0 \
+        2,17 0 \
+        2,18 0 \
+        2,19 0 \
+        3,0 0 \
+        3,1 7 \
+        3,2 25 \
+        3,3 69 \
+        3,4 177 \
+        3,5 441 \
+        3,6 1073 \
+        3,7 2561 \
+        3,8 6017 \
+        3,9 13953 \
+        3,10 32001 \
+        3,11 72705 \
+        3,12 163841 \
+        3,13 0 \
+        3,14 0 \
+        3,15 0 \
+        3,16 0 \
+        3,17 0 \
+        3,18 0 \
+        3,19 0 \
+        4,0 0 \
+        4,1 9 \
+        4,2 41 \
+        4,3 137 \
+        4,4 401 \
+        4,5 1105 \
+        4,6 2929 \
+        4,7 7537 \
+        4,8 18945 \
+        4,9 46721 \
+        4,10 113409 \
+        4,11 0 \
+        4,12 0 \
+        4,13 0 \
+        4,14 0 \
+        4,15 0 \
+        4,16 0 \
+        4,17 0 \
+        4,18 0 \
+        4,19 0 \
+        5,0 0 \
+        5,1 11 \
+        5,2 61 \
+        5,3 241 \
+        5,4 801 \
+        5,5 2433 \
+        5,6 6993 \
+        5,7 19313 \
+        5,8 51713 \
+        5,9 135073 \
+        5,10 0 \
+        5,11 0 \
+        5,12 0 \
+        5,13 0 \
+        5,14 0 \
+        5,15 0 \
+        5,16 0 \
+        5,17 0 \
+        5,18 0 \
+        5,19 0 \
+        6,0 0 \
+        6,1 13 \
+        6,2 85 \
+        6,3 389 \
+        6,4 1457 \
+        6,5 4865 \
+        6,6 15121 \
+        6,7 44689 \
+        6,8 127105 \
+        6,9 0 \
+        6,10 0 \
+        6,11 0 \
+        6,12 0 \
+        6,13 0 \
+        6,14 0 \
+        6,15 0 \
+        6,16 0 \
+        6,17 0 \
+        6,18 0 \
+        6,19 0 \
+        7,0 0 \
+        7,1 15 \
+        7,2 113 \
+        7,3 589 \
+        7,4 2465 \
+        7,5 9017 \
+        7,6 30241 \
+        7,7 95441 \
+        7,8 287745 \
+        7,9 0 \
+        7,10 0 \
+        7,11 0 \
+        7,12 0 \
+        7,13 0 \
+        7,14 0 \
+        7,15 0 \
+        7,16 0 \
+        7,17 0 \
+        7,18 0 \
+        7,19 0 \
+        8,0 0 \
+        8,1 17 \
+        8,2 145 \
+        8,3 849 \
+        8,4 3937 \
+        8,5 15713 \
+        8,6 56737 \
+        8,7 190881 \
+        8,8 0 \
+        8,9 0 \
+        8,10 0 \
+        8,11 0 \
+        8,12 0 \
+        8,13 0 \
+        8,14 0 \
+        8,15 0 \
+        8,16 0 \
+        8,17 0 \
+        8,18 0 \
+        8,19 0 \
+        9,0 0 \
+        9,1 19 \
+        9,2 181 \
+        9,3 1177 \
+        9,4 6001 \
+        9,5 26017 \
+        9,6 100897 \
+        9,7 0 \
+        9,8 0 \
+        9,9 0 \
+        9,10 0 \
+        9,11 0 \
+        9,12 0 \
+        9,13 0 \
+        9,14 0 \
+        9,15 0 \
+        9,16 0 \
+        9,17 0 \
+        9,18 0 \
+        9,19 0 \
+        10,0 0 \
+        10,1 21 \
+        10,2 221 \
+        10,3 1581 \
+        10,4 8801 \
+        10,5 41265 \
+        10,6 171425 \
+        10,7 0 \
+        10,8 0 \
+        10,9 0 \
+        10,10 0 \
+        10,11 0 \
+        10,12 0 \
+        10,13 0 \
+        10,14 0 \
+        10,15 0 \
+        10,16 0 \
+        10,17 0 \
+        10,18 0 \
+        10,19 0 \
+        11,0 0 \
+        11,1 23 \
+        11,2 265 \
+        11,3 2069 \
+        11,4 12497 \
+        11,5 63097 \
+        11,6 280017 \
+        11,7 0 \
+        11,8 0 \
+        11,9 0 \
+        11,10 0 \
+        11,11 0 \
+        11,12 0 \
+        11,13 0 \
+        11,14 0 \
+        11,15 0 \
+        11,16 0 \
+        11,17 0 \
+        11,18 0 \
+        11,19 0 \
+        12,0 0 \
+        12,1 25 \
+        12,2 313 \
+        12,3 2649 \
+        12,4 17265 \
+        12,5 93489 \
+        12,6 442001 \
+        12,7 0 \
+        12,8 0 \
+        12,9 0 \
+        12,10 0 \
+        12,11 0 \
+        12,12 0 \
+        12,13 0 \
+        12,14 0 \
+        12,15 0 \
+        12,16 0 \
+        12,17 0 \
+        12,18 0 \
+        12,19 0 \
+        13,0 0 \
+        13,1 27 \
+        13,2 365 \
+        13,3 3329 \
+        13,4 23297 \
+        13,5 134785 \
+        13,6 0 \
+        13,7 0 \
+        13,8 0 \
+        13,9 0 \
+        13,10 0 \
+        13,11 0 \
+        13,12 0 \
+        13,13 0 \
+        13,14 0 \
+        13,15 0 \
+        13,16 0 \
+        13,17 0 \
+        13,18 0 \
+        13,19 0 \
+        14,0 0 \
+        14,1 29 \
+        14,2 421 \
+        14,3 4117 \
+        14,4 30801 \
+        14,5 189729 \
+        14,6 0 \
+        14,7 0 \
+        14,8 0 \
+        14,9 0 \
+        14,10 0 \
+        14,11 0 \
+        14,12 0 \
+        14,13 0 \
+        14,14 0 \
+        14,15 0 \
+        14,16 0 \
+        14,17 0 \
+        14,18 0 \
+        14,19 0 \
+        15,0 0 \
+        15,1 31 \
+        15,2 481 \
+        15,3 5021 \
+        15,4 40001 \
+        15,5 261497 \
+        15,6 0 \
+        15,7 0 \
+        15,8 0 \
+        15,9 0 \
+        15,10 0 \
+        15,11 0 \
+        15,12 0 \
+        15,13 0 \
+        15,14 0 \
+        15,15 0 \
+        15,16 0 \
+        15,17 0 \
+        15,18 0 \
+        15,19 0 \
+        16,0 0 \
+        16,1 33 \
+        16,2 545 \
+        16,3 6049 \
+        16,4 51137 \
+        16,5 353729 \
+        16,6 0 \
+        16,7 0 \
+        16,8 0 \
+        16,9 0 \
+        16,10 0 \
+        16,11 0 \
+        16,12 0 \
+        16,13 0 \
+        16,14 0 \
+        16,15 0 \
+        16,16 0 \
+        16,17 0 \
+        16,18 0 \
+        16,19 0 \
+        17,0 0 \
+        17,1 35 \
+        17,2 613 \
+        17,3 7209 \
+        17,4 64465 \
+        17,5 470561 \
+        17,6 0 \
+        17,7 0 \
+        17,8 0 \
+        17,9 0 \
+        17,10 0 \
+        17,11 0 \
+        17,12 0 \
+        17,13 0 \
+        17,14 0 \
+        17,15 0 \
+        17,16 0 \
+        17,17 0 \
+        17,18 0 \
+        17,19 0 \
+        18,0 0 \
+        18,1 37 \
+        18,2 685 \
+        18,3 8509 \
+        18,4 80257 \
+        18,5 616657 \
+        18,6 0 \
+        18,7 0 \
+        18,8 0 \
+        18,9 0 \
+        18,10 0 \
+        18,11 0 \
+        18,12 0 \
+        18,13 0 \
+        18,14 0 \
+        18,15 0 \
+        18,16 0 \
+        18,17 0 \
+        18,18 0 \
+        18,19 0 \
+        19,0 0 \
+        19,1 39 \
+        19,2 761 \
+        19,3 9957 \
+        19,4 98801 \
+        19,5 797241 \
+        19,6 0 \
+        19,7 0 \
+        19,8 0 \
+        19,9 0 \
+        19,10 0 \
+        19,11 0 \
+        19,12 0 \
+        19,13 0 \
+        19,14 0 \
+        19,15 0 \
+        19,16 0 \
+        19,17 0 \
+        19,18 0 \
+        19,19 0 \
+    ]
+}
Index: /tags/1.6.0/gui/scripts/uqcurve.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/uqcurve.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/uqcurve.tcl	(revision 6168)
@@ -0,0 +1,1681 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: UqCurve - Probability Curves in a UQ Notebook
+#
+#  Derived from xyresult.tcl.
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *UqCurve.width 3i widgetDefault
+option add *UqCurve.height 3i widgetDefault
+option add *UqCurve.gridColor #d9d9d9 widgetDefault
+option add *UqCurve.activeColor blue widgetDefault
+option add *UqCurve.dimColor gray widgetDefault
+option add *UqCurve.controlBackground gray widgetDefault
+option add *UqCurve.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+set autocolors {
+    #0000cd
+    #cd0000
+    #00cd00
+    #3a5fcd
+    #cdcd00
+    #cd1076
+    #009acd
+    #00c5cd
+    #a2b5cd
+    #7ac5cd
+    #66cdaa
+    #a2cd5a
+    #cd9b9b
+    #cdba96
+    #cd3333
+    #cd6600
+    #cd8c95
+    #cd00cd
+    #9a32cd
+    #6ca6cd
+    #9ac0cd
+    #9bcd9b
+    #00cd66
+    #cdc673
+    #cdad00
+    #cd5555
+    #cd853f
+    #cd7054
+    #cd5b45
+    #cd6889
+    #cd69c9
+    #551a8b
+}
+
+option add *UqCurve.autoColors $autocolors widgetDefault
+option add *UqCurve*Balloon*Entry.background white widgetDefault
+
+itcl::class Rappture::UqCurve {
+    inherit itk::Widget
+
+    itk_option define -gridcolor gridColor GridColor ""
+    itk_option define -activecolor activeColor ActiveColor ""
+    itk_option define -dimcolor dimColor DimColor ""
+    itk_option define -autocolors autoColors AutoColors ""
+
+    private variable _viewable "";      # Display list for widget.
+    private variable _dispatcher "";    # Dispatcher for !events
+    private variable _dlist "";         # List of dataobj objects
+    private variable _dataobj2raise;    # Maps dataobj => raise flag 0/1
+    private variable _dataobj2desc;     # Maps dataobj => description of data
+    private variable _dataobj2sim;      # Maps dataobj => type of graph element
+    private variable _elem2comp;        # Maps graph element => dataobj
+    private variable _comp2elem;        # Maps graph element => dataobj
+    private variable _label2axis;       # Maps axis label => axis ID
+    private variable _limits;           # Axis limits:  x-min, x-max, etc.
+    private variable _nextColorIndex 0; # Index for next "-color auto"
+    private variable _hilite;           # Info for element currently highlighted
+    private variable _axis;             # Info for axis manipulations
+    private variable _axisPopup;        # Info for axis being edited in popup
+    common _downloadPopup;              # Download options from popup
+    private variable _markers
+    private variable _nextElement 0
+
+    constructor {args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method download {option args}
+
+    protected method Rebuild {}
+    protected method ResetLimits {}
+    protected method ResetLegend {}
+    protected method Zoom {option args}
+    protected method Hilite {state x y}
+    protected method Axis {option args}
+    protected method GetAxes {dataobj}
+    protected method GetLineMarkerOptions { style }
+    protected method GetTextMarkerOptions { style }
+    protected method EnterMarker { g name x y text }
+    protected method LeaveMarker { g name }
+
+
+    private method BuildGraph { dlist }
+    private method BuildMarkers { dataobj elem }
+    private method FormatAxis { axis w value }
+    private method GetFormattedValue { axis g value }
+    private method BuildAxisPopup { popup }
+    private method ShowAxisPopup { axis }
+    private method SetAxis { setting }
+    private method SetElements { dataobj {settings ""} }
+    private method SetAxisRangeState { axis }
+}
+
+itk::usual UqCurve {
+    keep -background -foreground -cursor -font
+}
+
+itk::usual Panedwindow {
+    keep -background -cursor
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::constructor {args} {
+    #puts "UqCurve::Cons $args"
+
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    array set _downloadPopup {
+        format csv
+    }
+
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    itk_component add main {
+        Rappture::SidebarFrame $itk_interior.main
+    }
+    pack $itk_component(main) -expand yes -fill both
+    set f [$itk_component(main) component controls]
+
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    pack $itk_component(reset) -padx 4 -pady 2 -anchor e
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    set f [$itk_component(main) component frame]
+    itk_component add plot {
+        blt::graph $f.plot \
+            -highlightthickness 0 -plotpadx 0 -plotpady 4
+    } {
+        keep -background -foreground -cursor -font
+    }
+    pack $itk_component(plot) -expand yes -fill both
+
+    $itk_component(plot) pen configure activeLine \
+        -symbol square -pixels 3 -linewidth 2 \
+        -outline black -fill red -color black
+
+    # Add bindings so you can mouse over points to see values:
+    #
+    $itk_component(plot) element bind all <Enter> \
+        [itcl::code $this Hilite at %x %y]
+    $itk_component(plot) element bind all <Motion> \
+        [itcl::code $this Hilite at %x %y]
+    $itk_component(plot) element bind all <Leave> \
+        [itcl::code $this Hilite off %x %y]
+
+    $itk_component(plot) legend configure -hide yes
+
+    #
+    # Add legend for editing hidden/elements:
+    #
+    set inner [$itk_component(main) insert end \
+        -title "Legend" \
+        -icon [Rappture::icon wrench]]
+    $inner configure -borderwidth 4
+
+    itk_component add legend {
+        Rappture::XyLegend $inner.legend $itk_component(plot)
+    }
+    pack $itk_component(legend) -expand yes -fill both
+    after idle [itcl::code $this ResetLegend]
+
+    # quick-and-dirty zoom functionality, for now...
+    Blt_ZoomStack $itk_component(plot)
+    eval itk_initialize $args
+
+    set _hilite(elem) ""
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::destructor {} {
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a dataobj to the plot.  The optional <settings>
+# are used to configure the plot.  Allowed settings are -color,
+# -brightness, -width, -linestyle and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::add {dataobj {settings ""}} {
+    #puts "UqCurve::add $dataobj settings=$settings"
+    set g $itk_component(plot)
+    SetElements $dataobj $settings
+
+    array set attrs $settings
+
+    # If Pobability region, nothing to do here.
+    if {[info exists attrs(-probability)]} {
+        return
+    }
+
+    # Colors have to be set/reset here because of "-brightness" and "auto".
+    # Colors can't be overriden by the user.
+
+    # If the color is "auto", then select a color from -autocolors
+    if { ![info exists attrs(-color)] } {
+        set color "auto"
+    } else {
+        set color $attrs(-color)
+    }
+    if { ![info exists attrs(-width)] } {
+        set linewidth 1
+    } else {
+        set linewidth $attrs(-width)
+    }
+    if { $color == "auto" || $color == "autoreset" } {
+        #        if { $color == "autoreset" } {
+        #            set _nextColorIndex 0
+        #        }
+        set color [lindex $itk_option(-autocolors) $_nextColorIndex]
+        if { "" == $color} {
+            set color black
+        }
+        # Set up for next auto color
+        incr _nextColorIndex
+        if { $_nextColorIndex >= [llength $itk_option(-autocolors)] } {
+            set _nextColorIndex 0
+        }
+    }
+    # If -brightness is set, then update the color.
+    if { [info exists attrs(-brightness)] } {
+        set brightness $attrs(-brightness)
+        set color [Rappture::color::brightness $color $brightness]
+        set bg [$itk_component(plot) cget -plotbackground]
+        foreach {h s v} [Rappture::color::RGBtoHSV $bg] break
+        if {$v > 0.5} {
+            set color [Rappture::color::brightness_max $color 0.8]
+        } else {
+            set color [Rappture::color::brightness_min $color 0.2]
+        }
+    }
+    set type [$dataobj hints type]
+
+    set elem ""
+    foreach cname [$dataobj components] {
+        set tag $dataobj-$cname
+        set elem $_comp2elem($tag)
+        switch -- $type {
+            "bar" {
+                $g bar configure $elem -foreground $color -background $color \
+                    -hide no
+            }
+            "scatter" {
+                $g line configure $elem -color $color -hide no
+            }
+            default {
+                $g line configure $elem -color $color -hide no \
+                    -linewidth $linewidth
+            }
+        }
+        if { [lsearch $_viewable $elem] < 0 } {
+            lappend _viewable $elem
+        }
+    }
+    if { [$dataobj info class] == "::Rappture::Curve" } {
+        BuildMarkers $dataobj $elem
+    }
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::get {} {
+    #puts "UqCurve::get"
+    # put the dataobj list in order according to -raise options
+    set bottom {}
+    set top {}
+    foreach obj $_dlist {
+        if {[info exists _dataobj2raise($obj)] && $_dataobj2raise($obj)} {
+            lappend top $obj
+        } else {
+            lappend bottom $obj
+        }
+    }
+    set _dlist [concat $bottom $top]
+    return $_dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::delete {args} {
+    #puts "UqCurve::delete $args"
+    set g $itk_component(plot)
+
+    # First try to create list of elements from the dataobjs specified
+    set elemlist {}
+    foreach dataobj $args {
+        foreach cname [$dataobj components] {
+            set tag $dataobj-$cname
+            if { [info exists _comp2elem($tag)] } {
+                lappend elemlist $_comp2elem($tag)
+            }
+        }
+    }
+    # If no dataobjs were specified then hide all elements.
+    if { [llength $elemlist] == 0 } {
+        set elemlist [$g element names]
+    }
+    # Hide all elements specified by their dataobjs
+    foreach elem $elemlist {
+        $g element configure $elem -hide yes
+        set i [lsearch $_viewable $elem]
+        if { $i >= 0 } {
+            set _viewable [lreplace $_viewable $i $i]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<dataobj1> <dataobj2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <dataobj> objects.  This
+# accounts for all dataobjs--even those not showing on the screen.
+# Because of this, the limits are appropriate for all dataobjs as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::scale {args} {
+    set _dlist $args
+    BuildGraph $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::download {option args} {
+    #puts "UqCurve::download $option : $args"
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            set popup .UqCurvedownload
+            if {![winfo exists .UqCurvedownload]} {
+                # if we haven't created the popup yet, do it now
+                Rappture::Balloon $popup \
+                    -title "[Rappture::filexfer::label downloadWord] as..."
+                set inner [$popup component inner]
+                label $inner.summary -text "" -anchor w
+                pack $inner.summary -side top
+                radiobutton $inner.csv -text "Data as Comma-Separated Values" \
+                    -variable Rappture::UqCurve::_downloadPopup(format) \
+                    -value csv
+                pack $inner.csv -anchor w
+                radiobutton $inner.image -text "Image (PS/PDF/PNG/JPEG)" \
+                    -variable Rappture::UqCurve::_downloadPopup(format) \
+                    -value image
+                pack $inner.image -anchor w
+                button $inner.go -text [Rappture::filexfer::label download] \
+                    -command [lindex $args 0]
+                pack $inner.go -side bottom -pady 4
+            } else {
+                set inner [$popup component inner]
+            }
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            $inner.summary configure -text "[Rappture::filexfer::label downloadWord] $num in the following format:"
+            update idletasks ;# fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .UqCurvedownload
+            if {[winfo exists .UqCurvedownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                csv {
+                    # reverse the objects so the selected data appears on top
+                    set dlist ""
+                    foreach dataobj [get] {
+                        set dlist [linsert $dlist 0 $dataobj]
+                    }
+
+                    # generate the comma-separated value data for these objects
+                    set csvdata ""
+                    foreach dataobj $dlist {
+                        append csvdata "[string repeat - 60]\n"
+                        append csvdata " [$dataobj hints label]\n"
+                        if {[info exists _dataobj2desc($dataobj)]
+                            && [llength [split $_dataobj2desc($dataobj) \n]] > 1} {
+                            set indent "for:"
+                            foreach line [split $_dataobj2desc($dataobj) \n] {
+                                append csvdata " $indent $line\n"
+                                set indent "    "
+                            }
+                        }
+                        append csvdata "[string repeat - 60]\n"
+
+                        append csvdata "[$dataobj hints xlabel], [$dataobj hints ylabel]\n"
+                        set first 1
+                        foreach comp [$dataobj components] {
+                            if {!$first} {
+                                # blank line between components
+                                append csvdata "\n"
+                            }
+                            set xv [$dataobj mesh $comp]
+                            set yv [$dataobj values $comp]
+                            foreach x [$xv range 0 end] y [$yv range 0 end] {
+                                append csvdata [format "%20.15g, %20.15g\n" $x $y]
+                            }
+                            set first 0
+                        }
+                        append csvdata "\n"
+                    }
+                    return [list .txt $csvdata]
+                }
+                image {
+                    set popup .xyprintdownload
+                    if { ![winfo exists $popup] } {
+                        # Create a popup for the print dialog
+                        Rappture::Balloon $popup -title "Save as image..."
+                        set inner [$popup component inner]
+                        # Create the print dialog widget and add it to the
+                        # balloon popup.
+                        Rappture::XyPrint $inner.print
+                        $popup configure \
+                            -deactivatecommand [list $inner.print reset]
+                        blt::table $inner 0,0 $inner.print -fill both
+                    }
+                    update
+                    # Activate the popup and call for the output.
+                    foreach { widget toolName plotName } $args break
+                    $popup activate $widget left
+                    set inner [$popup component inner]
+                    set output [$inner.print print $itk_component(plot) \
+                                    $toolName $plotName]
+                    $popup deactivate
+                    return $output
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+itcl::body Rappture::UqCurve::BuildMarkers { dataobj elem } {
+    #puts "UqCurve::BuildMarkers $dataobj : $elem"
+    return
+    set g $itk_component(plot)
+
+    set ymin -Inf
+    set ymax Inf
+    set xmax Inf
+    set xmin -Inf
+    foreach m [$dataobj xmarkers] {
+        foreach {at label style} $m break
+        set id [$g marker create line -coords [list $at $ymin $at $ymax]]
+        $g marker bind $id <Enter> \
+            [itcl::code $this EnterMarker $g x-$label $at $ymin $at]
+        $g marker bind $id <Leave> \
+            [itcl::code $this LeaveMarker $g x-$label]
+        set options [GetLineMarkerOptions $style]
+        $g marker configure $id -element $elem
+        if { $options != "" } {
+            eval $g marker configure $id $options
+        }
+        if { $label != "" } {
+            set id [$g marker create text -anchor nw \
+                        -text $label -coords [list $at $ymax]]
+            $g marker configure $id -element $elem
+            set options [GetTextMarkerOptions $style]
+            if { $options != "" } {
+                eval $g marker configure $id $options
+            }
+        }
+    }
+    foreach m [$dataobj ymarkers] {
+        foreach {at label style} $m break
+        set id [$g marker create line -coords [list $xmin $at $xmax $at]]
+        $g marker configure $id -element $elem
+        $g marker bind $id <Enter> \
+            [itcl::code $this EnterMarker $g $label $at $xmin $at]
+        $g marker bind $id <Leave> \
+            [itcl::code $this LeaveMarker $g $label]
+        set options [GetLineMarkerOptions $style]
+        if { $options != "" } {
+            eval $g marker configure $id $options
+        }
+        if { $label != "" } {
+            set id [$g marker create text -anchor se \
+                        -text $label -coords [list $xmax $at]]
+            $g marker configure $id -element $elem
+            set options [GetTextMarkerOptions $style]
+            if { $options != "" } {
+                eval $g marker configure $id $options
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+#       Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::Rebuild {} {
+    ResetLegend
+    # Fix raise/lower elements
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ResetLimits
+#
+# Used internally to apply automatic limits to the axes for the
+# current plot.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::ResetLimits {} {
+    set g $itk_component(plot)
+
+    foreach axis [$g axis names] {
+        $g axis configure $axis -min "" -max ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ResetLegend
+#
+# Used internally to apply automatic limits to the axes for the
+# current plot.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::ResetLegend {} {
+    update idletasks
+
+    set g $itk_component(plot)
+    # Fix duplicate labels by appending the simulation number
+    # Collect the labels from all the viewable elements.
+    set above {}
+    set below {}
+    foreach elem $_viewable {
+        foreach {dataobj cname} [split $_elem2comp($elem) -] break
+        set label [$dataobj hints label]
+        lappend label2elem($label) $elem
+        if { $_dataobj2raise($dataobj) } {
+            lappend $g element raise $elem
+        }
+    }
+    # Then relabel elements with the same label, using the simulation number.
+    foreach label [array names label2elem] {
+        foreach elem $label2elem($label) {
+            if { [llength $label2elem($label)] == 1 } {
+                $g element configure $elem -label $label
+                continue
+            }
+            foreach {dataobj cname} [split $_elem2comp($elem) -] break
+            set sim $_dataobj2sim($dataobj)
+            set elabel [format "%s \#%d" $label $sim]
+            $g element configure $elem -label $elabel
+        }
+    }
+    $itk_component(legend) reset $_viewable
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::Zoom {option args} {
+    switch -- $option {
+        reset {
+            ResetLimits
+            Rappture::Logger::log curve zoom -reset
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Hilite <state> <x> <y>
+#
+# Called automatically when the user brushes one of the elements
+# on the plot.  Causes the element to highlight and a tooltip to
+# pop up with element info.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::Hilite {state x y} {
+    set g $itk_component(plot)
+    set elem ""
+
+    # Peek inside of Blt_ZoomStack package to see if we're currently in the
+    # middle of a zoom selection.
+    if {[info exists ::zoomInfo($g,corner)] && $::zoomInfo($g,corner) == "B" } {
+        return;
+    }
+    set tip ""
+    if {$state == "at"} {
+        if {[$g element closest $x $y info -interpolate yes]} {
+            # for dealing with xy line plots
+            set elem $info(name)
+
+            set mapx [$g element cget $elem -mapx]
+            set mapy [$g element cget $elem -mapy]
+
+            # search again for an exact point -- this time don't interpolate
+            set tip ""
+            array unset info
+            if {[$g element closest $x $y info -interpolate no]
+                  && $info(name) == $elem} {
+
+                set x [$g axis transform $mapx $info(x)]
+                set y [$g axis transform $mapy $info(y)]
+                if {[info exists _elem2comp($elem)]} {
+                    foreach {dataobj cname} [split $_elem2comp($elem) -] break
+                    set yunits [$dataobj hints yunits]
+                    set xunits [$dataobj hints xunits]
+                } else {
+                    set xunits ""
+                    set yunits ""
+                }
+                set tip [$g element cget $elem -label]
+                set yval [GetFormattedValue y $g $info(y)]
+                append tip "\n$yval$yunits"
+                set xval [GetFormattedValue x $g $info(x)]
+                append tip " @ $xval$xunits"
+                set tip [string trim $tip]
+            }
+            set state 1
+        } elseif {[$g element closest $x $y info -interpolate no]} {
+            # for dealing with xy scatter plot
+            set elem $info(name)
+
+            set mapx [$g element cget $elem -mapx]
+            set mapy [$g element cget $elem -mapy]
+
+            set tip ""
+            set x [$g axis transform $mapx $info(x)]
+            set y [$g axis transform $mapy $info(y)]
+
+            if {[info exists _elem2comp($elem)]} {
+                foreach {dataobj cname} [split $_elem2comp($elem) -] break
+                set yunits [$dataobj hints yunits]
+                set xunits [$dataobj hints xunits]
+            } else {
+                set xunits ""
+                set yunits ""
+            }
+            set tip [$g element cget $elem -label]
+            set yval [GetFormattedValue y $g $info(y)]
+            append tip "\n$yval$yunits"
+            set xval [GetFormattedValue x $g $info(x)]
+            append tip " @ $xval$xunits"
+            set tip [string trim $tip]
+            set state 1
+        } else {
+            set state 0
+        }
+    }
+
+    if {$state} {
+        #
+        # Highlight ON:
+        # - activate trace
+        # - multiple axes? dim other axes
+        # - pop up tooltip about data
+        #
+        if { [$g element exists $_hilite(elem)] && $_hilite(elem) != $elem } {
+            $g element deactivate $_hilite(elem)
+            $g crosshairs configure -hide yes
+            Rappture::Tooltip::tooltip cancel
+        }
+        #$g element activate $elem
+        set _hilite(elem) $elem
+
+        set mapx [$g element cget $elem -mapx]
+        set mapy [$g element cget $elem -mapy]
+        if {[info exists _elem2comp($elem)]} {
+            foreach {dataobj cname} [split $_elem2comp($elem) -] break
+            foreach {mapx mapy} [GetAxes $dataobj] break
+        }
+        set allx [$g x2axis use]
+        if {[llength $allx] > 0} {
+            lappend allx x  ;           # fix main x-axis too
+            foreach axis $allx {
+                if {$axis == $mapx} {
+                    $g axis configure $axis -color $itk_option(-foreground) \
+                        -titlecolor $itk_option(-foreground)
+                } else {
+                    $g axis configure $axis -color $itk_option(-dimcolor) \
+                        -titlecolor $itk_option(-dimcolor)
+                }
+            }
+        }
+        set ally [$g y2axis use]
+        if {[llength $ally] > 0} {
+            lappend ally y  ;           # fix main y-axis too
+            foreach axis $ally {
+                if {$axis == $mapy} {
+                    $g axis configure $axis -color $itk_option(-foreground) \
+                        -titlecolor $itk_option(-foreground)
+                } else {
+                    $g axis configure $axis -color $itk_option(-dimcolor) \
+                        -titlecolor $itk_option(-dimcolor)
+                }
+            }
+        }
+        if {"" != $tip} {
+            $g crosshairs configure -hide no -position @$x,$y
+
+            if {$x > 0.5*[winfo width $g]} {
+                if {$x < 4} {
+                    set tipx "-0"
+                } else {
+                    set tipx "-[expr {$x-20}]"  ;# move tooltip to the left
+                }
+            } else {
+                if {$x < -4} {
+                    set tipx "+0"
+                } else {
+                    set tipx "+[expr {$x+20}]"  ;# move tooltip to the right
+                }
+            }
+            if {$y > 0.5*[winfo height $g]} {
+                if {$y < 4} {
+                    set tipy "-0"
+                } else {
+                    set tipy "-[expr {$y-20}]"  ;# move tooltip to the top
+                }
+            } else {
+                if {$y < -4} {
+                    set tipy "+0"
+                } else {
+                    set tipy "+[expr {$y+20}]"  ;# move tooltip to the bottom
+                }
+            }
+            Rappture::Tooltip::text $g $tip
+            Rappture::Tooltip::tooltip show $g $tipx,$tipy
+            Rappture::Logger::log tooltip -for "curve probe -- [string map [list \n " // "] $tip]"
+        }
+    } else {
+        #
+        # Highlight OFF:
+        # - deactivate (color back to normal)
+        # - put all axes back to normal color
+        # - take down tooltip
+        #
+        if { [$g element exists $_hilite(elem)] } {
+            $g element deactivate $_hilite(elem)
+        }
+        set allx [$g x2axis use]
+        if {[llength $allx] > 0} {
+            lappend allx x  ;# fix main x-axis too
+            foreach axis $allx {
+                $g axis configure $axis -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+            }
+        }
+
+        set ally [$g y2axis use]
+        if {[llength $ally] > 0} {
+            lappend ally y  ;# fix main y-axis too
+            foreach axis $ally {
+                $g axis configure $axis -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+            }
+        }
+
+        $g crosshairs configure -hide yes
+
+        # only cancel in plotting area or we'll mess up axes
+        if {[$g inside $x $y]} {
+            Rappture::Tooltip::tooltip cancel
+        }
+
+        # There is no currently highlighted element
+        set _hilite(elem) ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Axis hilite <axis> <state>
+#
+# USAGE: Axis click <axis> <x> <y>
+# USAGE: Axis drag <axis> <x> <y>
+# USAGE: Axis release <axis> <x> <y>
+#
+# Used internally to handle editing of the x/y axes.  The hilite
+# operation causes the axis to light up.  The edit operation pops
+# up a panel with editing options.  The changed operation applies
+# changes from the panel.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::Axis {option args} {
+    switch -- $option {
+        hilite {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Axis hilite axis state\""
+            }
+            set g $itk_component(plot)
+            set axis [lindex $args 0]
+            set state [lindex $args 1]
+
+            if {$state} {
+                $g axis configure $axis \
+                    -color $itk_option(-activecolor) \
+                    -titlecolor $itk_option(-activecolor)
+
+                set x [expr {[winfo pointerx $g]+4}]
+                set y [expr {[winfo pointery $g]+4}]
+                Rappture::Tooltip::tooltip pending $g-$axis @$x,$y
+            } else {
+                $g axis configure $axis \
+                    -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+                Rappture::Tooltip::tooltip cancel
+            }
+        }
+        click {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis click axis x y\""
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+            set g $itk_component(plot)
+
+            set _axis(moved) 0
+            set _axis(click-x) $x
+            set _axis(click-y) $y
+            foreach {min max} [$g axis limits $axis] break
+            set _axis(min0) $min
+            set _axis(max0) $max
+            Rappture::Tooltip::tooltip cancel
+        }
+        drag {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis drag axis x y\""
+            }
+            if {![info exists _axis(moved)]} {
+                return  ;# must have skipped click event -- ignore
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+            set g $itk_component(plot)
+
+            if {[info exists _axis(click-x)] && [info exists _axis(click-y)]} {
+                foreach {x0 y0 pw ph} [$g extents plotarea] break
+                switch -glob $axis {
+                  x* {
+                    set pix $x
+                    set pix0 $_axis(click-x)
+                    set pixmin $x0
+                    set pixmax [expr {$x0+$pw}]
+                  }
+                  y* {
+                    set pix $y
+                    set pix0 $_axis(click-y)
+                    set pixmin [expr {$y0+$ph}]
+                    set pixmax $y0
+                  }
+                }
+                set log [$g axis cget $axis -logscale]
+                set min $_axis(min0)
+                set max $_axis(max0)
+                set dpix [expr {abs($pix-$pix0)}]
+                set v0 [$g axis invtransform $axis $pixmin]
+                set v1 [$g axis invtransform $axis [expr {$pixmin+$dpix}]]
+                if {$log} {
+                    set v0 [expr {log10($v0)}]
+                    set v1 [expr {log10($v1)}]
+                    set min [expr {log10($min)}]
+                    set max [expr {log10($max)}]
+                }
+
+                if {$pix > $pix0} {
+                    set delta [expr {$v1-$v0}]
+                } else {
+                    set delta [expr {$v0-$v1}]
+                }
+                set min [expr {$min-$delta}]
+                set max [expr {$max-$delta}]
+                if {$log} {
+                    set min [expr {pow(10.0,$min)}]
+                    set max [expr {pow(10.0,$max)}]
+                }
+                $g axis configure $axis -min $min -max $max
+
+                # move axis, don't edit on release
+                set _axis(move) 1
+            }
+        }
+        release {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis release axis x y\""
+            }
+            if {![info exists _axis(moved)]} {
+                return  ;# must have skipped click event -- ignore
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+
+            if {!$_axis(moved)} {
+                # small movement? then treat as click -- pop up axis editor
+                set dx [expr {abs($x-$_axis(click-x))}]
+                set dy [expr {abs($y-$_axis(click-y))}]
+                if {$dx < 2 && $dy < 2} {
+                    ShowAxisPopup $axis
+                    return
+                }
+            }
+            # one last movement
+            Axis drag $axis $x $y
+
+            # log this change
+            Rappture::Logger::log curve axis $axis \
+                -drag [$itk_component(plot) axis limits $axis]
+
+            catch {unset _axis}
+        }
+        default {
+            error "bad option \"$option\": should be hilite"
+        }
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: GetLineMarkerOptions <style>
+#
+# Used internally to create a list of configuration options specific to the
+# axis line marker.  The input is a list of name value pairs.  Options that
+# are not recognized are ignored.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::GetLineMarkerOptions {style} {
+    array set lineOptions {
+        "-color"  "-outline"
+        "-dashes" "-dashes"
+        "-linecolor" "-outline"
+        "-linewidth" "-linewidth"
+    }
+    set options {}
+    foreach {name value} $style {
+        if { [info exists lineOptions($name)] } {
+            lappend options $lineOptions($name) $value
+        }
+    }
+    return $options
+}
+
+# ----------------------------------------------------------------------
+# USAGE: GetTextMarkerOptions <style>
+#
+# Used internally to create a list of configuration options specific to the
+# axis text marker.  The input is a list of name value pairs.  Options that
+# are not recognized are ignored.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::GetTextMarkerOptions {style} {
+    array set textOptions {
+        "-color"        "-outline"
+        "-textcolor"    "-outline"
+        "-font"         "-font"
+        "-xoffset"      "-xoffset"
+        "-yoffset"      "-yoffset"
+        "-anchor"       "-anchor"
+        "-rotate"       "-rotate"
+    }
+    set options {}
+    foreach {name value} $style {
+        if { [info exists textOptions($name)] } {
+            lappend options $textOptions($name) $value
+        }
+    }
+    return $options
+}
+
+# ----------------------------------------------------------------------
+# USAGE: GetAxes <dataobj>
+#
+# Used internally to figure out the axes used to plot the given
+# <dataobj>.  Returns a list of the form {x y}, where x is the
+# x-axis name (x, x2, x3, etc.), and y is the y-axis name.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqCurve::GetAxes {dataobj} {
+    set xlabel [$dataobj hints xlabel]
+    if {[info exists _label2axis($xlabel)]} {
+        set mapx $_label2axis($xlabel)
+    } else {
+        set mapx "x"
+    }
+
+    set ylabel [$dataobj hints ylabel]
+    if {[info exists _label2axis($ylabel)]} {
+        set mapy $_label2axis($ylabel)
+    } else {
+        set mapy "y"
+    }
+    return [list $mapx $mapy]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -gridcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::UqCurve::gridcolor {
+    if {"" == $itk_option(-gridcolor)} {
+        $itk_component(plot) grid off
+    } else {
+        $itk_component(plot) grid configure -color $itk_option(-gridcolor)
+        $itk_component(plot) grid on
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -autocolors
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::UqCurve::autocolors {
+    foreach c $itk_option(-autocolors) {
+        if {[catch {winfo rgb $itk_component(hull) $c}]} {
+            error "bad color \"$c\""
+        }
+    }
+        incr _nextColorIndex
+    if {$_nextColorIndex >= [llength $itk_option(-autocolors)]} {
+        set _nextColorIndex 0
+    }
+}
+
+itcl::body Rappture::UqCurve::EnterMarker { g name x y text } {
+    LeaveMarker $g $name
+    set id [$g marker create text \
+                -coords [list $x $y] \
+                -yoffset -1 \
+                -anchor s \
+                -text $text]
+    set _markers($name) $id
+}
+
+itcl::body Rappture::UqCurve::LeaveMarker { g name } {
+    if { [info exists _markers($name)] } {
+        set id $_markers($name)
+        $g marker delete $id
+        unset _markers($name)
+    }
+}
+
+#
+# SetAxis --
+#
+#       Configures the graph axis with the designated setting using
+#       the currently stored value.  User-configurable axis settings
+#       are stored in the _axisPopup variable or in the widgets. This
+#       routine syncs the graph with that setting.
+#
+itcl::body Rappture::UqCurve::SetAxis { setting } {
+    set g $itk_component(plot)
+    set axis $_axisPopup(axis)
+    switch -- $setting {
+        "logscale" {
+            set bool $_axisPopup(logscale)
+            $g axis configure $axis -logscale $bool
+        }
+        "loose" {
+            set bool $_axisPopup(loose)
+            $g axis configure $axis -loose $bool
+        }
+        "range" {
+            set auto $_axisPopup(auto)
+            set _axisPopup($axis-auto) $auto
+            if { $auto } {
+                # Set the axis range automatically
+                $g axis configure $axis -min "" -max ""
+            } else {
+                # Set the axis range from the entry values.
+                set label $_axisPopup(label)
+                set min $_axisPopup(${label}-min)
+                set max $_axisPopup(${label}-max)
+                $g axis configure $axis -min $min -max $max
+            }
+            SetAxisRangeState $axis
+        }
+        "format" {
+            set inner [$itk_component(hull).axes component inner]
+            set format [$inner.format translate [$inner.format value]]
+            set _axisPopup($axis-format) $format
+
+            # Force the graph to reformat the ticks
+            set min [$itk_component(plot) axis cget $axis -min]
+            $g axis configure $axis -min $min
+        }
+        "label" {
+            set label $_axisPopup(label)
+            $g axis configure $axis -title $label
+        }
+        "min" {
+            set min $_axisPopup(min)
+            if { [catch { $g axis configure $axis -min $min } msg] != 0 } {
+                set inner [$itk_component(hull).axes component inner]
+                Rappture::Tooltip::cue $inner.max $msg
+                bell
+                return
+            }
+            set label $_axisPopup(label)
+            set _axisPopup(${label}-min) $min
+        }
+        "max" {
+            set max $_axisPopup(max)
+            if { [catch { $g axis configure $axis -max $max } msg] != 0 } {
+                set inner [$itk_component(hull).axes component inner]
+                Rappture::Tooltip::cue $inner.max $msg
+                bell
+                return
+            }
+            set label $_axisPopup(label)
+            set _axisPopup(${label}-max) $max
+        }
+    }
+}
+
+#
+# SetAxisRangeState --
+#
+#       Sets the state of widgets controlling the axis range based
+#       upon whether the automatic or manual setting.  If the
+#       axis is configure to be automatic, the manual setting widgets
+#       are disabled.  And vesa-versa the automatic setting widgets
+#       are dsiabled if the axis is manual.
+#
+itcl::body Rappture::UqCurve::SetAxisRangeState { axis } {
+    set inner [$itk_component(hull).axes component inner]
+    set g $itk_component(plot)
+
+    if { $_axisPopup(auto) } {
+        foreach {min max} [$g axis limits $axis] break
+        $inner.minl configure -state disabled
+        $inner.min configure -state disabled
+        $inner.maxl configure -state disabled
+        $inner.max configure -state disabled
+        $inner.loose configure -state normal
+        $inner.tight configure -state normal
+    } else {
+        foreach {min max} [$g axis limits $axis] break
+        $inner.minl configure -state normal
+        $inner.min configure -state normal
+        set _axisPopup(min) [$g axis cget $axis -min]
+        $inner.maxl configure -state normal
+        $inner.max configure -state normal
+        set _axisPopup(max) [$g axis cget $axis -max]
+        $inner.loose configure -state disabled
+        $inner.tight configure -state disabled
+    }
+}
+
+#
+# BuildAxisPopup --
+#
+#       Creates the popup balloon dialog for axes. This routine is
+#       called only once the first time the user clicks to bring up
+#       an axis dialog.  It is reused for all other axes.
+#
+itcl::body Rappture::UqCurve::BuildAxisPopup { popup } {
+    Rappture::Balloon $popup -title "Axis Options"
+    set inner [$itk_component(hull).axes component inner]
+
+    label $inner.labell -text "Label:"
+    entry $inner.label \
+        -width 15 -highlightbackground $itk_option(-background) \
+        -textvariable [itcl::scope _axisPopup(label)]
+
+    bind $inner.label <Return>   [itcl::code $this SetAxis label]
+    bind $inner.label <KP_Enter> [itcl::code $this SetAxis label]
+    bind $inner.label <FocusOut> [itcl::code $this SetAxis label]
+
+    label $inner.formatl -text "Format:"
+    Rappture::Combobox $inner.format -width 15 -editable no
+    $inner.format choices insert end \
+        "%.6g"  "Auto"         \
+        "%.0f"  "X"          \
+        "%.1f"  "X.X"          \
+        "%.2f"  "X.XX"         \
+        "%.3f"  "X.XXX"        \
+        "%.6f"  "X.XXXXXX"     \
+        "%.1e"  "X.Xe+XX"      \
+        "%.2e"  "X.XXe+XX"     \
+        "%.3e"  "X.XXXe+XX"    \
+        "%.6e"  "X.XXXXXXe+XX"
+
+    bind $inner.format <<Value>> [itcl::code $this SetAxis format]
+
+    label $inner.rangel -text "Axis Range:"
+    radiobutton $inner.auto -text "Automatic" \
+        -variable [itcl::scope _axisPopup(auto)] -value 1 \
+        -command [itcl::code $this SetAxis range]
+    radiobutton $inner.manual -text "Manual" \
+        -variable [itcl::scope _axisPopup(auto)] -value 0 \
+        -command [itcl::code $this SetAxis range]
+
+    radiobutton $inner.loose -text "loose" \
+        -variable [itcl::scope _axisPopup(loose)] -value 1 \
+        -command [itcl::code $this SetAxis loose]
+    radiobutton $inner.tight -text "tight" \
+        -variable [itcl::scope _axisPopup(loose)] -value 0 \
+        -command [itcl::code $this SetAxis loose]
+
+    label $inner.minl -text "min"
+    entry $inner.min \
+        -width 15 -highlightbackground $itk_option(-background) \
+        -textvariable [itcl::scope _axisPopup(min)]
+    bind $inner.min <Return> [itcl::code $this SetAxis min]
+    bind $inner.min <KP_Enter> [itcl::code $this SetAxis min]
+    bind $inner.min <FocusOut> [itcl::code $this SetAxis min]
+
+    label $inner.maxl -text "max"
+    entry $inner.max \
+        -width 15 -highlightbackground $itk_option(-background) \
+        -textvariable [itcl::scope _axisPopup(max)]
+    bind $inner.max <Return> [itcl::code $this SetAxis max]
+    bind $inner.max <KP_Enter> [itcl::code $this SetAxis max]
+    bind $inner.max <FocusOut> [itcl::code $this SetAxis max]
+
+
+    label $inner.scalel -text "Scale:"
+    radiobutton $inner.linear -text "linear" \
+        -variable [itcl::scope _axisPopup(logscale)] -value 0 \
+        -command [itcl::code $this SetAxis logscale]
+    radiobutton $inner.log -text "logarithmic" \
+        -variable [itcl::scope _axisPopup(logscale)] -value 1 \
+        -command [itcl::code $this SetAxis logscale]
+
+    blt::table $inner \
+        0,0 $inner.labell -anchor w \
+        0,1 $inner.label -anchor w -fill x  -cspan 3 \
+        1,0 $inner.formatl -anchor w \
+        1,1 $inner.format -anchor w -fill x  -cspan 3 \
+        2,0 $inner.scalel -anchor w \
+        2,2 $inner.linear -anchor w \
+        2,3 $inner.log -anchor w \
+        3,0 $inner.rangel -anchor w \
+        4,0 $inner.manual -anchor w -padx 4 \
+        4,2 $inner.minl -anchor e \
+        4,3 $inner.min -anchor w \
+        5,2 $inner.maxl -anchor e \
+        5,3 $inner.max -anchor w \
+        6,0 $inner.auto -anchor w -padx 4 \
+        6,2 $inner.tight -anchor w \
+        6,3 $inner.loose -anchor w \
+
+
+    blt::table configure $inner r2 -pady 4
+    blt::table configure $inner c1 -width 20
+    update
+}
+
+#
+# ShowAxisPopup --
+#
+#       Displays the axis dialog for an axis.  It initializes the
+#       _axisInfo variables for that axis if necessary.
+#
+itcl::body Rappture::UqCurve::ShowAxisPopup { axis } {
+    set g $itk_component(plot)
+    set popup $itk_component(hull).axes
+
+    if { ![winfo exists $popup] } {
+        BuildAxisPopup $popup
+    }
+    set _axisPopup(axis)     $axis
+    set _axisPopup(label)    [$g axis cget $axis -title]
+    set _axisPopup(logscale) [$g axis cget $axis -logscale]
+    set _axisPopup(loose)    [$g axis cget $axis -loose]
+    if { ![info exists _axisPopup($axis-format)] } {
+        set inner [$itk_component(hull).axes component inner]
+        set _axisPopup($axis-format) "%.6g"
+        set fmts [$inner.format choices get -value]
+        set i [lsearch -exact $fmts $_axisPopup($axis-format)]
+        if {$i < 0} { set i 0 }  ;# use Auto choice
+        $inner.format value [$inner.format choices get -label $i]
+    }
+    foreach {min max} [$g axis limits $axis] break
+    if { $_axisPopup(logscale) } {
+        set type "log"
+    } else {
+        set type "lin"
+    }
+    set amin ""
+    set label $_axisPopup(label)
+    if { [info exists _limits(${label}-min)] } {
+        set amin $_limits(${label}-min)
+    }
+    set amax ""
+    if { [info exists _limits(${label}-max)] } {
+        set amax $_limits(${label}-max)
+    }
+    set auto 1
+    if { $amin != "" || $amax != "" } {
+        set auto 0
+    }
+    if { ![info exists _axisPopup($axis-auto)] } {
+        set _axisPopup($axis-auto) $auto;# Defaults to automatic
+    }
+    set _axisPopup(auto)  $_axisPopup($axis-auto)
+    SetAxisRangeState $axis
+    if { ![info exists _axisPopup(${label}-min)] } {
+        if { $amin != "" } {
+            set _axisPopup(${label}-min) $amin
+            set _axisPopup(min)   $_axisPopup(${label}-min)
+            SetAxis min
+        } else {
+            set _axisPopup(${label}-min) $min
+        }
+    }
+    if { ![info exists _axisPopup(${label}-max)] } {
+        if { $amax != "" } {
+            set _axisPopup(${label}-max) $amax
+            set _axisPopup(max)   $_axisPopup(${label}-max)
+            SetAxis max
+        } else {
+            set _axisPopup(${label}-max) $max
+        }
+    }
+    set _axisPopup(min)  $_axisPopup(${label}-min)
+    set _axisPopup(max)  $_axisPopup(${label}-max)
+    set _axisPopup(axis) $axis
+
+    #
+    # Figure out where the window should pop up.
+    #
+    set x [winfo rootx $g]
+    set y [winfo rooty $g]
+    set w [winfo width $g]
+    set h [winfo height $g]
+    foreach {x0 y0 pw ph} [$g extents plotarea] break
+    switch -glob -- $axis {
+        x {
+            set x [expr {round($x + $x0+0.5*$pw)}]
+            set y [expr {round($y + $y0+$ph + 0.5*($h-$y0-$ph))}]
+            set dir "above"
+        }
+        x* {
+            set x [expr {round($x + $x0+0.5*$pw)}]
+            set dir "below"
+            set allx [$itk_component(plot) x2axis use]
+            set max [llength $allx]
+            set i [lsearch -exact $allx $axis]
+            set y [expr {round($y + ($i+0.5)*$y0/double($max))}]
+        }
+        y {
+            set x [expr {round($x + 0.5*$x0)}]
+            set y [expr {round($y + $y0+0.5*$ph)}]
+            set dir "right"
+        }
+        y* {
+            set y [expr {round($y + $y0+0.5*$ph)}]
+            set dir "left"
+            set ally [$g y2axis use]
+            set max [llength $ally]
+            set i [lsearch -exact $ally $axis]
+            set y [expr {round($y + ($i+0.5)*$y0/double($max))}]
+            set x [expr {round($x+$x0+$pw + ($i+0.5)*($w-$x0-$pw)/double($max))}]
+        }
+    }
+    $popup activate @$x,$y $dir
+}
+
+#
+# GetFormattedValue --
+#
+#       Callback routine for the axis format procedure.  It formats the
+#       axis tick label according to the selected format.  This routine
+#       is also used to format tooltip values.
+#
+itcl::body Rappture::UqCurve::GetFormattedValue { axis g value } {
+    if { [$g axis cget $axis -logscale] ||
+         ![info exists _axisPopup($axis-format)] } {
+        set fmt "%.6g"
+    } else {
+        set fmt $_axisPopup($axis-format)
+    }
+    return [format $fmt $value]
+}
+
+
+#
+# BuildGraph --
+#
+#       This procedure loads each data objects specified into the
+#       graph.  The data object may already be loaded (from the "add"
+#       method which gets called first).   The graph elements that
+#       are created, are hidden.  This allows the graph to account
+#       for all datasets, even those not currently being displayed.
+#
+itcl::body Rappture::UqCurve::BuildGraph { dlist } {
+    #puts "UqCurve::BuildGraph $dlist"
+
+    set g $itk_component(plot)
+
+    foreach label [array names _label2axis] {
+        set axis $_label2axis($label)
+        switch -- $axis {
+            "x" - "x2" - "y" - "y2" {
+                $g axis configure $axis -hide yes -checklimits no
+            }
+            default {
+                $g axis delete $axis
+            }
+        }
+    }
+    array unset _label2axis
+    array unset _limits
+
+    # Scan through all objects and create a list of all axes.
+    # The first x-axis gets mapped to "x".  The second, to "x2".
+    # Beyond that, we must create new axes "x3", "x4", etc.
+    # We do the same for y.
+
+    set anum(x) 0
+    set anum(y) 0
+    foreach dataobj $dlist {
+        foreach axis {x y} {
+            set label [$dataobj hints ${axis}label]
+            if { $label == "" } {
+                continue
+            }
+            # Collect the limits (if set for the axis)
+            set min [$dataobj hints ${axis}min]
+            set max [$dataobj hints ${axis}max]
+            set tag ${label}-min
+            if { $min != "" && ( ![info exists _limits($tag)] ||
+                                   $_limits($tag) > $min ) } {
+                set _limits($tag) $min
+            }
+            set tag ${label}-max
+            if { $max != "" && (![info exists _limits($tag)] ||
+                                  $_limits($tag) < $max) } {
+                set _limits($tag) $max
+            }
+            if  { [$dataobj hints ${axis}scale] == "log" } {
+                set tag ${label}-log
+                set _limits($tag) 1
+            }
+            if { ![info exists _label2axis($label)] } {
+                switch [incr anum($axis)] {
+                    1 { set axisName $axis }
+                    2 { set axisName ${axis}2 }
+                    default {
+                        set axis $axis$anum($axis)
+                        catch {$g axis create $axisName}
+                    }
+                }
+                $g axis configure $axisName -title $label -hide no \
+                    -checklimits no -showticks yes
+                set _label2axis($label) $axisName
+
+                # If this axis has a description, add it as a tooltip
+                set desc [string trim [$dataobj hints ${axis}desc]]
+                Rappture::Tooltip::text $g-$axisName $desc
+            }
+        }
+    }
+    # Next, set the axes based on what we've found.
+    foreach label [array names _label2axis] {
+        set logscale [info exists _limits(${label}-log)]
+        set amin ""
+        if { [info exists _limits(${label}-min)] } {
+            set amin $_limits(${label}-min)
+        }
+        set amax ""
+        if { [info exists _limits(${label}-max)] } {
+            set amax $_limits(${label}-max)
+        }
+        set axis $_label2axis($label)
+        $g axis configure $axis \
+            -hide no -checklimits no \
+            -command [itcl::code $this GetFormattedValue $axis] \
+            -min $amin -max $amax -logscale $logscale
+        $g axis bind $axis <Enter> \
+            [itcl::code $this Axis hilite $axis on]
+        $g axis bind $axis <Leave> \
+            [itcl::code $this Axis hilite $axis off]
+        $g axis bind $axis <ButtonPress-1> \
+            [itcl::code $this Axis click $axis %x %y]
+        $g axis bind $axis <B1-Motion> \
+            [itcl::code $this Axis drag $axis %x %y]
+        $g axis bind $axis <ButtonRelease-1> \
+            [itcl::code $this Axis release $axis %x %y]
+        $g axis bind $axis <KeyPress> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+    }
+
+    foreach dataobj $dlist {
+        SetElements $dataobj
+    }
+    ResetLegend
+}
+
+#
+# SetElements --
+#
+#       This procedure loads each data objects specified into the
+#       graph.  The data object may already be loaded (from the "add"
+#       method which gets called first).   The graph elements that
+#       are created, are hidden.  This allows the graph to account
+#       for all datasets, even those not currently being displayed.
+#
+itcl::body Rappture::UqCurve::SetElements { dataobj {settings ""} } {
+    #puts "UqCurve::SetElements $dataobj"
+    set g $itk_component(plot)
+
+    array set attrs [$dataobj hints style]
+    array set attrs $settings
+    set type [$dataobj hints type]
+    if { $type == "" } {
+        set type "line"
+    }
+
+    if { ![info exists attrs(-probability)] } {
+        set prob ""
+    } else {
+        set prob $attrs(-probability)
+    }
+
+    # Now fix attributes to a more usable form for the graph.
+
+    # Convert -linestyle to BLT -dashes
+    if { ![info exists attrs(-linestyle)] } {
+        set dashes {}
+    } else {
+        switch -- $attrs(-linestyle) {
+            dashed  { set dashes {4 4} }
+            dotted  { set dashes {2 4} }
+            default { set dashes {}    }
+        }
+    }
+    if { ![info exists attrs(-barwidth)] } {
+        set barwidth 1.0
+    } else {
+        set barwidth $attrs(-barwidth)
+    }
+    if { ![info exists attrs(-width)] } {
+        set linewidth 1
+    } else {
+        set linewidth $attrs(-width)
+    }
+    set _dataobj2raise($dataobj) [info exists attrs(-raise)]
+    if { ![info exists attrs(-simulation)] } {
+        set sim 0
+    } else {
+        set sim $attrs(-simulation)
+    }
+    set _dataobj2sim($dataobj) $sim
+
+    foreach {mapx mapy} [GetAxes $dataobj] break
+    set label [$dataobj hints label]
+
+    foreach cname [$dataobj components] {
+        set tag $dataobj-$cname
+        set xv [$dataobj mesh $cname]
+        set yv [$dataobj values $cname]
+        set xev [$dataobj xErrorValues $cname]
+        set yev [$dataobj yErrorValues $cname]
+        if {([$xv length] <= 1) || ($linewidth == 0)} {
+            set sym square
+            set pixels 2
+        } else {
+            set sym ""
+            set pixels 6
+        }
+        if { ![info exists _comp2elem($tag)] } {
+            set elem "$type[incr _nextElement]"
+            set _elem2comp($elem) $tag
+            set _comp2elem($tag) $elem
+            set found($_comp2elem($tag)) 1
+            lappend label2elem($label) $elem
+            switch -- $type {
+                "line" {
+                    if {$prob != ""} {
+                        set _pts [blt::vector create pts]
+                        $_pts merge $xv $yv
+                        if {$prob == "50"} {
+                            set color gray80
+                        } else {
+                            set color gray50
+                        }
+                        #puts "Probability $prob $color $label"
+                        $g marker create polygon -fill $color -under 1 -coords $pts(0:end)
+                    }
+                    $g line create $elem \
+                        -x $xv -y $yv \
+                        -mapx $mapx \
+                        -mapy $mapy \
+                        -label $label \
+                        -pixels 0
+                }
+                "scatter" {
+                    #puts "SCATTER $xv $yv"
+                    $g line create $elem \
+                        -x $xv -y $yv \
+                        -symbol square \
+                        -pixels 2 \
+                        -linewidth 0 \
+                        -label $label \
+                        -dashes $dashes \
+                        -mapx $mapx \
+                        -mapy $mapy \
+                        -hide yes \
+                        -xerror $xev -yerror $yev
+                }
+                "bar" {
+                    #puts "BAR $xv $yv"
+                    $g bar create $elem \
+                        -x $xv -y $yv \
+                        -barwidth $barwidth \
+                        -label $label \
+                        -mapx $mapx \
+                        -mapy $mapy \
+                        -hide yes \
+                        -xerror $xev -yerror $yev
+                }
+            }
+        } else {
+            $g element configure $_comp2elem($tag) -mapx $mapx -mapy $mapy
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/uqinfo.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/uqinfo.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/uqinfo.tcl	(revision 6168)
@@ -0,0 +1,98 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+
+package require Itcl
+package require BLT
+
+namespace eval Rappture {
+    # forward declaration
+}
+
+itcl::class Rappture::UqInfo {
+    constructor {xmlobj path uq_part} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method add {xmlobj path uq_part}
+    public method get {}
+    public method desc {}
+    public method hints {{key ""}}
+    private method _renumber {}
+    private variable _objlist;      # UQ objects
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqInfo::constructor {xmlobj path uq_part} {
+    #puts "UQ INFO CONST $xmlobj $path $uq_part"
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be LibraryObj"
+    }
+    add $xmlobj $path $uq_part
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqInfo::destructor {} {
+}
+
+itcl::body Rappture::UqInfo::_renumber {} {
+    set numtabs [array size _objlist]
+    set index 0
+
+    foreach name [list PDF Probability Sensitivity Response "All Runs" Sequence ] {
+        if {[info exists _objlist($name)]} {
+            foreach {i items} $_objlist($name) break
+            set _objlist($name) [list $index $items]
+            incr index
+        }
+    }
+}
+
+#
+# _objlist is an array of lists.
+# lindex 0 is the index (tab number)
+# lindex 1 is a list of lists containing the xmlobj and path
+# of each element.
+itcl::body Rappture::UqInfo::add {xmlobj path uq_part} {
+    #puts "\nUQ INFO ADD $xmlobj $path $uq_part"
+
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be LibraryObj"
+    }
+
+    if {![info exists _objlist($uq_part)]} {
+        set _objlist($uq_part)  {0 {}}
+    }
+
+    foreach {index items} $_objlist($uq_part) break
+    lappend items [list $xmlobj $path]
+    set _objlist($uq_part) [list $index $items]
+    _renumber
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqInfo::get {} {
+    #uts "UqInfo::get"
+    return [array get _objlist]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: hints ?<keyword>?
+#
+# Returns a list of key/value pairs for various hints about plotting
+# this curve.  If a particular <keyword> is specified, then it returns
+# the hint for that <keyword>, if it exists.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqInfo::hints {{keyword ""}} {
+    #puts "UqInfo hints $keyword"
+}
Index: /tags/1.6.0/gui/scripts/uqnotebook.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/uqnotebook.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/uqnotebook.tcl	(revision 6168)
@@ -0,0 +1,250 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+
+# ----------------------------------------------------------------------
+#  COMPONENT: UqNotebook - Tabbed Notebook for UQ results.
+#
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+
+itcl::class Rappture::UqNotebook {
+    inherit itk::Widget
+
+    itk_option define -gridcolor gridColor GridColor ""
+    itk_option define -activecolor activeColor ActiveColor ""
+    itk_option define -dimcolor dimColor DimColor ""
+    itk_option define -autocolors autoColors AutoColors ""
+
+    constructor {args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method add {dataobj {settings ""}}
+    public method scale {args}
+    public method download {option args}
+    public method parameters {title args} {}
+    public method delete {args}
+    public method get {}
+    private method _plotit {xmlobj path index settings}
+    private variable _index2widget; #_index2widget($sim,$tab) -> $w
+    private variable _nblist; # _nblist($sim) returns notebook to pack
+    private variable _nbnum 0; # currently displayed notebook number (sim)
+}
+
+itk::usual UqNotebook {
+    keep -background -cursor -font
+}
+itk::usual Tabset {
+    keep -background -cursor -font
+}
+itk::usual Tabnotebook {
+    keep -background -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqNotebook::constructor {args} {
+    #Rappture::dispatcher _dispatcher
+    #$_dispatcher register !rebuild
+    #$_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) yes
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqNotebook::destructor {} {
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a dataobj to the plot.  The optional <settings>
+# are used to configure the plot.  Allowed settings are -color,
+# -brightness, -width, -linestyle and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqNotebook::add {uqobj {settings ""}} {
+    #puts "UqNotebook ADD $uqobj ($settings)"
+    array set attrs $settings
+    array set d [$uqobj get]
+    #puts "SIMULATION $attrs(-simulation)"
+
+    # the notebook number is the same as the simulation number
+    set nbnum $attrs(-simulation)
+
+    # See if we are already displaying the requested notebook
+    if {$nbnum == $_nbnum} {
+        return
+    }
+
+    if {[info exists _nblist($_nbnum)]} {
+        set active [$itk_component(uq_nb_$_nbnum) index select]
+        pack forget $itk_component(uq_nb_$_nbnum)
+    } else  {
+        set active -1
+    }
+
+    set _nbnum $nbnum
+
+    if {![info exists _nblist($nbnum)]} {
+        #puts "Creating notebook #$nbnum"
+        itk_component add uq_nb_$nbnum {
+            blt::tabnotebook $itk_interior.uq_nb_$nbnum -tearoff no
+        }
+
+        set _nblist($nbnum) $itk_component(uq_nb_$nbnum)
+
+        foreach name [list PDF Probability Sensitivity Response "All Runs" Sequence] {
+            if {[info exists d($name)]} {
+                foreach {index items} $d($name) break
+                $itk_component(uq_nb_$nbnum) insert $index -text $name
+                foreach obj $items {
+                    foreach {xmlobj path} $obj break
+                    _plotit $xmlobj $path $index $settings
+                }
+            }
+        }
+    }
+    pack $itk_component(uq_nb_$nbnum) -expand yes -fill both
+    if {$active >= 0} {
+        after 100 $itk_component(uq_nb_$nbnum) select $active
+        after idle $itk_component(uq_nb_$nbnum) select $active
+    }
+}
+
+itcl::body Rappture::UqNotebook::_plotit {xmlobj path index settings} {
+    set type [$xmlobj element -as type $path]
+    #puts "uqNotebook::_plotit: xmlobj=$xmlobj path=$path type=$type"
+
+    if {[regexp {output.curve\(curve_pdf-[^-]*-([0-9]+)\)} $path match prob]} {
+        puts "Probability: $prob"
+    } else {
+        set prob ""
+    }
+
+    array set attrs $settings
+    set sim $attrs(-simulation)
+    # puts "sim=$sim index=$index"
+    set dobj ""
+
+    set w $itk_component(uq_nb_$sim).$index
+    switch -- $type {
+        response {
+            set dobj [Rappture::Response ::#auto $xmlobj $path]
+            if {![info exists _index2widget($sim,$index)]} {
+                Rappture::ResponseViewer $w
+            }
+        }
+        histogram {
+            set dobj [Rappture::Histogram ::#auto $xmlobj $path]
+            if {![info exists _index2widget($sim,$index)]} {
+                Rappture::HistogramResult $w
+            }
+        }
+        curve {
+            set dobj [Rappture::Curve ::#auto $xmlobj $path]
+            set type [$dobj hints type]
+            if {![info exists _index2widget($sim,$index)]} {
+                if {$type == "bars"} {
+                    Rappture::BarchartResult $w
+                } elseif {$prob != ""} {
+                    Rappture::UqCurve $w
+                } else {
+                    Rappture::XyResult $w
+                }
+            }
+        }
+        sequence {
+            set dobj [Rappture::Sequence ::#auto $xmlobj $path]
+            if {![info exists _index2widget($sim,$index)]} {
+                Rappture::SequenceResult $w
+            }
+        }
+        field {
+            set dobj [Rappture::Field ::#auto $xmlobj $path]
+        }
+        mesh {
+            set dobj [Rappture::Mesh ::#auto $xmlobj $path]
+        }
+        default {
+            error "Don't know how to plot $type"
+        }
+    }
+    set _index2widget($sim,$index) $w
+    if {$dobj != ""} {
+        if {$prob != ""} {
+            lappend settings -probability $prob
+        }
+        $w add $dobj $settings
+    }
+    $itk_component(uq_nb_$sim) tab configure $index -window $w -fill both
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqNotebook::delete {args} {
+    # puts "UqNotebook::delete $args"
+    # catch {$itk_component(uq_nb) delete 0 end}
+
+    # foreach index [array name _index2widget] {
+    #     puts "destroying index $index"
+    #     destroy $_index2widget($index)
+    # }
+    # foreach dobj $_objlist {
+    #     puts "destroying $dobj"
+    #     destroy $dobj
+    # }
+    # unset _index2widget
+    # set _objlist {}
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<dataobj1> <dataobj2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <dataobj> objects.  This
+# accounts for all dataobjs--even those not showing on the screen.
+# Because of this, the limits are appropriate for all dataobjs as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::UqNotebook::scale {args} {
+    #puts "UqNotebook::scale $args"
+
+    # get all the tabs and call scale
+    #set num_tabs [$itk_component(uq_nb_$_nbnum) tab names]
+    #for {set i 0} {$i < $num_tabs} {incr i} {
+    #    puts "calling scale for tab $i"
+    #    eval $_index2widget($_nbnum,$i) scale $args
+    #}
+}
+
+itcl::body Rappture::UqNotebook::get {} {
+    #puts "*************** UqNotebook gets"
+}
+
+
+itcl::body Rappture::UqNotebook::download {option args} {
+    #set tab [$itk_component(uq_nb_$_nbnum) index select]
+    #puts "UqNotebook::download $option  : $args -> $_index2widget($_nbnum,$tab)"
+    #eval $_index2widget($_nbnum,$tab) download $option $args
+}
Index: /tags/1.6.0/gui/scripts/utils.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/utils.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/utils.tcl	(revision 6168)
@@ -0,0 +1,164 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: utils - miscellaneous utilities
+#
+#  Misc routines used throughout the GUI.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+namespace eval Rappture { # forward declaration }
+namespace eval Rappture::utils { # forward declaration }
+
+# ----------------------------------------------------------------------
+# USAGE: hexdump ?-lines num? <data>
+#
+# Returns a hex dump for a blob of binary <data>.  This is used to
+# represent the data in an input/output <string> object.  The -lines
+# flag can be used to limit the output to the specified number of
+# lines.
+# ----------------------------------------------------------------------
+proc Rappture::utils::hexdump {args} {
+    Rappture::getopts args params {
+        value -lines unlimited
+    }
+    if {[llength $args] != 1} {
+        error "wrong # args: should be \"hexdump ?-lines num? data\""
+    }
+    set newval [lindex $args 0]
+    set args ""
+
+    set rval "<binary> [Rappture::utils::binsize [string length $newval]]"
+
+    if {$params(-lines) != "unlimited" && $params(-lines) <= 0} {
+        return $rval
+    }
+
+    append rval "\n\n"
+    set len [string length $newval]
+    for {set i 0} {$i < $len} {incr i 8} {
+        append rval [format "%#06x: " $i]
+        set ascii ""
+        for {set j 0} {$j < 8} {incr j} {
+            if {$i+$j < $len} {
+                set char [string index $newval [expr {$i+$j}]]
+                binary scan $char c ichar
+                set hexchar [format "%02x" [expr {0xff & $ichar}]]
+            } else {
+                set char " "
+                set hexchar "  "
+            }
+            append rval "$hexchar "
+            if {[regexp {[\000-\037\177-\377]} $char]} {
+                append ascii "."
+            } else {
+                append ascii $char
+            }
+        }
+        append rval " | $ascii\n"
+
+        if {"unlimited" != $params(-lines) && $i/8+1 >= $params(-lines)} {
+            if {$i < $len-1} {
+                append rval "more..."
+            }
+            break
+        }
+    }
+    return $rval
+}
+
+# ----------------------------------------------------------------------
+# USAGE: binsize <length>
+#
+# Returns a user-friendly expression of data size, like "12 kB" or
+# "144 MB".
+# ----------------------------------------------------------------------
+proc Rappture::utils::binsize {size} {
+    foreach {factor units} {
+        1073741824 GB
+        1048576 MB
+        1024 kB
+        1 bytes
+    } {
+        if {$size/$factor > 0} {
+            if {$factor > 1} {
+                set size [format "%.1f" [expr {double($size)/$factor}]]
+            }
+            break
+        }
+    }
+    return "$size $units"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: datatype <binary>
+#
+# Examines the given <binary> string and returns a description of
+# the data format.
+# ----------------------------------------------------------------------
+proc Rappture::utils::datatype {binary} {
+    set fileprog [auto_execok file]
+    if {[string length $binary] == 0} {
+        set desc "Empty"
+    } elseif {"" != $fileprog} {
+        #
+        # Use Unix "file" program to get info about type
+        # HACK ALERT! must send binary data in by creating a tmp file
+        #   or else it gets corrupted and misunderstood
+        #
+        set id [pid]
+        while {[file exists /tmp/datatype$id]} {
+            incr id
+        }
+        set fname "/tmp/datatype$id"
+        set fid [open $fname w]
+        fconfigure $fid -translation binary -encoding binary
+        puts -nonewline $fid [string range $binary 0 1024]
+        close $fid
+        if {[catch {exec $fileprog -b $fname} desc]} {
+            set desc "Binary data"
+        }
+        catch {file delete $fname}
+    } else {
+        set desc "Binary data"
+    }
+    return $desc
+}
+
+# ----------------------------------------------------------------------
+# USAGE: expandPath <path>
+#
+# Returns the true location of the provided path,
+# automatically expanding links to form an absolute path.
+# ----------------------------------------------------------------------
+proc Rappture::utils::expandPath {args} {
+    set path ""
+    set dirs [file split [lindex $args 0]]
+
+    while {[llength $dirs] > 0} {
+        set d [lindex $dirs 0]
+        set dirs [lrange $dirs 1 end]
+        if {[catch {file link [file join $path $d]} out] == 0} {
+            # directory d is a link, follow it
+            set outdirs [file split $out]
+            if {[string compare "/" [lindex $outdirs 0]] == 0} {
+                # directory leads back to root
+                # clear path
+                # reset dirs list
+                set path ""
+                set dirs $outdirs
+            } else {
+                # relative path for the link
+                # prepend directory to dirs list
+                set dirs [concat $outdirs $dirs]
+            }
+        } else {
+            set path [file join $path $d]
+        }
+    }
+    return $path
+}
+
Index: /tags/1.6.0/gui/scripts/valueresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/valueresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/valueresult.tcl	(revision 6168)
@@ -0,0 +1,267 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: ValueResult - Log output for ResultSet
+#
+#  This widget is used to show text output in a ResultSet.  The log
+#  output from a tool, for example, is rendered as a ValueResult.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *ValueResult.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::ValueResult {
+    inherit itk::Widget
+
+    constructor {args} { # defined below }
+
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method parameters {title args} { # do nothing }
+    public method download {option args}
+
+    protected method _rebuild {}
+
+    private variable _dispatcher "" ;# dispatcher for !events
+
+    private variable _dlist ""    ;# list of data objects being displayed
+    private variable _dobj2color  ;# maps data object => color
+    private variable _dobj2raise  ;# maps data object => raise flag 0/1
+    private variable _dobj2desc   ;# maps data object => description
+}
+
+itk::usual ValueResult {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::ValueResult::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this _rebuild]; list"
+
+    itk_component add scroller {
+        Rappture::Scroller $itk_interior.scroller \
+            -xscrollmode auto -yscrollmode auto
+    }
+    pack $itk_component(scroller) -expand yes -fill both
+
+    itk_component add html {
+        Rappture::HTMLviewer $itk_component(scroller).html
+    }
+    $itk_component(scroller) contents $itk_component(html)
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  If the optional
+# <settings> are specified, then the are applied to the data.  Allowed
+# settings are -color and -brightness, -width, -linestyle and -raise.
+# (Many of these are ignored.)
+# ----------------------------------------------------------------------
+itcl::body Rappture::ValueResult::add {dataobj {settings ""}} {
+    array set params {
+        -color ""
+        -brightness 0
+        -width ""
+        -linestyle ""
+        -raise 0
+        -description ""
+        -param ""
+    }
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) black
+    }
+
+    if {"" != $dataobj} {
+        # find the value and assign it with the proper coloring
+        if {"" != $params(-color) && "" != $params(-brightness)
+              && $params(-brightness) != 0} {
+            set params(-color) [Rappture::color::brightness \
+                $params(-color) $params(-brightness)]
+        }
+
+        set pos [lsearch -exact $_dlist $dataobj]
+        if {$pos < 0} {
+            lappend _dlist $dataobj
+            set _dobj2color($dataobj) $params(-color)
+            set _dobj2raise($dataobj) $params(-raise)
+            set _dobj2desc($dataobj) $params(-description)
+            $_dispatcher event -idle !rebuild
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ValueResult::get {} {
+    # put the dataobj list in order according to -raise options
+    set dlist $_dlist
+    foreach obj $dlist {
+        if {[info exists _dobj2raise($obj)] && $_dobj2raise($obj)} {
+            set i [lsearch -exact $dlist $obj]
+            if {$i >= 0} {
+                set dlist [lreplace $dlist $i $i]
+                lappend dlist $obj
+            }
+        }
+    }
+    return $dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<curve1> <curve2> ...?
+#
+# Clients use this to delete a curve from the plot.  If no curves
+# are specified, then all curves are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ValueResult::delete {args} {
+    if {[llength $args] == 0} {
+        set args $_dlist
+    }
+
+    # delete all specified objects
+    set changed 0
+    foreach obj $args {
+        set pos [lsearch -exact $_dlist $obj]
+        if {$pos >= 0} {
+            set _dlist [lreplace $_dlist $pos $pos]
+            catch {unset _dobj2color($obj)}
+            catch {unset _dobj2raise($obj)}
+            catch {unset _dobj2desc($obj)}
+            set changed 1
+        }
+    }
+
+    # if anything changed, then rebuild the plot
+    if {$changed} {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<curve1> <curve2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <curve> objects.  This
+# accounts for all curves--even those not showing on the screen.
+# Because of this, the limits are appropriate for all curves as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ValueResult::scale {args} {
+    # nothing to do for values
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ValueResult::download {option args} {
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            # no controls for this download yet
+            return ""
+        }
+        now {
+            if {[llength $_dlist] == 1} {
+                set lstr [$_dlist get about.label]
+                set mesg "$lstr [$_dlist get current]"
+            } else {
+                set mesg ""
+                foreach obj $_dlist {
+                    set lstr [$obj get about.label]
+                    append mesg "$lstr [$obj get current]\n"
+                    if {[string length $_dobj2desc($obj)] > 0} {
+                        foreach line [split $_dobj2desc($obj) \n] {
+                            append mesg " * $line\n"
+                        }
+                        append mesg "\n"
+                    }
+                }
+            }
+            return [list .txt $mesg]
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _rebuild
+#
+# Used internally to rebuild the contents of this widget
+# whenever the data within it changes.  Shows the value
+# for the topmost data object in its associated color.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ValueResult::_rebuild {} {
+    set html "<html><body>"
+
+    set obj [lindex $_dlist 0]
+    if {"" != $obj} {
+        set label [$obj get about.label]
+        if {"" != $label && [string index $label end] != ":"} {
+            append label ":"
+        }
+        append html "<h3>$label</h3>\n"
+    }
+
+    foreach obj $_dlist {
+        if {$_dobj2raise($obj)} {
+            set bold0 "<b>"
+            set bold1 "</b>"
+            set bg "background:#ffffcc; border:1px solid #cccccc;"
+        } else {
+            set bold0 ""
+            set bold1 ""
+            set bg ""
+        }
+        if {$_dobj2color($obj) != ""} {
+            set color0 "<font style=\"color: $_dobj2color($obj)\">"
+            set color1 "</font>"
+        } else {
+            set color0 ""
+            set color1 ""
+        }
+
+        append html "<div style=\"margin:8px; padding:4px; $bg\">${bold0}${color0}[$obj get current]${color1}${bold1}"
+        if {$_dobj2raise($obj) && [string length $_dobj2desc($obj)] > 0} {
+            foreach line [split $_dobj2desc($obj) \n] {
+                append html "<li style=\"margin-left:12px;\">$line</li>\n"
+            }
+        }
+        append html "</div>"
+    }
+    append html "</body></html>"
+    $itk_component(html) load $html
+}
Index: /tags/1.6.0/gui/scripts/videochooser.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/videochooser.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/videochooser.tcl	(revision 6168)
@@ -0,0 +1,173 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: videochooser - list videos
+#
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+package require Itk
+package require BLT
+package require Img
+package require Rappture
+package require RapptureGUI
+
+itcl::class Rappture::VideoChooser {
+    inherit itk::Widget
+
+    itk_option define -width width Width 300
+    itk_option define -height height Height 300
+    itk_option define -variable variable Variable ""
+    itk_option define -thumbsdir thumbsdir Thumbsdir ""
+
+    constructor { args } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method load {paths}
+    public method select {id}
+    protected method _fixSize {}
+
+    private variable _vcnt 0            ;# counter of videos
+    private variable _variable ""       ;# variable to pass along to each choice
+    private variable _paths ""          ;# list of choice paths
+    private variable _objs ""           ;# list of choice objects
+}
+
+
+itk::usual VideoChooser {
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooser::constructor {args} {
+
+    itk_component add scroller {
+        Rappture::Scroller $itk_interior.scroller \
+            -xscrollmode auto \
+            -yscrollmode off \
+            -xscrollside bottom
+    }
+
+
+    $itk_component(scroller) contents frame
+
+
+    pack $itk_component(scroller) -fill both -expand yes
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooser::destructor {} {
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooser::load {paths} {
+
+    set f [$itk_component(scroller) contents]
+
+    foreach path $paths {
+        incr _vcnt
+
+        set ci [Rappture::VideoChooserInfo $f.vi${_vcnt} \
+                    -variable ${_variable} \
+                    -thumbsdir $itk_option(-thumbsdir)]
+        $ci load $path ""
+        pack $ci -expand yes -fill both -side left
+
+        # add the object to the list of video info objs
+        lappend _paths $path
+        lappend _objs $ci
+    }
+
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# USAGE: select
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooser::select {id} {
+
+    set obj ""
+
+    if {[string is integer $id] == 1} {
+        # treat $id as the index
+        if {($id < 0) && ($id >= [llength ${_objs}])} {
+            error "invalid id \"$id\": must be in range 0 to [llength ${_objs}]"
+        }
+    } else {
+        # treat $id as a file path
+        set idx [lsearch -exact ${_paths} $id]
+        if {$idx == -1} {
+            error "invalid id \"$id\": not found in list of loaded objects"
+        }
+        set id $idx
+    }
+
+    # grab the object associated with the id
+    # and call it's select function.
+    set obj [lindex ${_objs} $id]
+    $obj select
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooser::_fixSize {} {
+
+    # fix the dimesions of the canvas
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -variable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoChooser::variable {
+    set _variable $itk_option(-variable)
+
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+
+        foreach o ${_objs} {
+            # tell this object's children about the variable change
+            $o configure -variable $var
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -width
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoChooser::width {
+    # $_dispatcher event -idle !fixsize
+    if {[string is integer $itk_option(-width)] == 0} {
+        error "bad value: \"$itk_option(-width)\": width should be an integer"
+    }
+    set _width $itk_option(-width)
+    after idle [itcl::code $this _fixSize]
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -height
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoChooser::height {
+    # $_dispatcher event -idle !fixsize
+    if {[string is integer $itk_option(-height)] == 0} {
+        error "bad value: \"$itk_option(-height)\": height should be an integer"
+    }
+    set _height $itk_option(-height)
+    after idle [itcl::code $this _fixSize]
+}
Index: /tags/1.6.0/gui/scripts/videochooserinfo.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/videochooserinfo.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/videochooserinfo.tcl	(revision 6168)
@@ -0,0 +1,318 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: videochooserinfo - video info
+#
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+package require Itk
+package require BLT
+package require Img
+package require Rappture
+
+itcl::class Rappture::VideoChooserInfo {
+    inherit itk::Widget
+
+    itk_option define -width width Width 96
+    itk_option define -height height Height 54
+    itk_option define -selectedwidth selectedwidth Selectedwidth 112
+    itk_option define -selectedheight selectedheight Selectedheight 63
+    itk_option define -variable variable Variable ""
+    itk_option define -thumbsdir thumbsdir Thumbsdir ""
+
+    constructor { args } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method load {path about}
+    public method select {}
+    public method query {what}
+
+    protected method _fixSize {}
+    protected method _fixValue {args}
+
+    private method _bindings {sequence}
+
+    private variable _preview           ""
+    private variable _selected          ""
+    private variable _path              ""
+    private variable _width             0
+    private variable _height            0
+    private variable _selectedwidth     0
+    private variable _selectedheight    0
+    private variable _variable          "" ;# variable associated with -variable
+}
+
+
+itk::usual VideoChooserInfo {
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooserInfo::constructor {args} {
+
+    itk_component add main {
+        canvas $itk_interior.main
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+    bind $itk_component(main) <Configure> [itcl::code $this _fixSize]
+
+    blt::table $itk_interior \
+        0,0 $itk_component(main) -fill both -pady 2
+
+    blt::table configure $itk_interior c* -resize both
+    blt::table configure $itk_interior r0 -resize both
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooserInfo::destructor {} {
+    image delete ${_preview}
+    image delete ${_selected}
+}
+
+# ----------------------------------------------------------------------
+# USAGE: load
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooserInfo::load {path about} {
+
+    if {![file readable $path]} {
+        error "bad path $path: file not readable"
+    }
+
+    set _path $path
+    set preview_fname ""
+    set selected_fname ""
+
+    set _preview [image create photo]
+    set _selected [image create photo]
+
+    if {[string compare "" $itk_option(-thumbsdir)] != 0} {
+        set root [file tail [file rootname ${_path}]]
+        set preview_fname [file join $itk_option(-thumbsdir) ${root}_${_width}x${_height}.png]
+        set selected_fname [file join $itk_option(-thumbsdir) ${root}_${_selectedwidth}x${_selectedheight}.png]
+
+        if {[file readable $preview_fname] && [file readable $selected_fname]} {
+            set fid [open $preview_fname r]
+            fconfigure $fid -translation binary
+            ${_preview} put [read $fid]
+            close $fid
+
+            set fid [open $selected_fname r]
+            fconfigure $fid -translation binary
+            ${_selected} put [read $fid]
+            close $fid
+        }
+    } else {
+        # there are some incomplete movies that don't open up
+        set err [catch {
+            set movie [Rappture::Video file ${_path}]
+            $movie seek 60
+
+            ${_preview} put [$movie get image ${_width} ${_height}]
+            ${_selected} put [$movie get image ${_selectedwidth} ${_selectedheight}]
+
+            $movie release
+        }]
+        if {$err} {
+            puts stderr "Error while opening movie: $movie"
+            return
+        }
+    }
+
+    set cw [expr round(${_selectedwidth}/2.0)]
+    set ch [expr round(${_selectedheight}/2.0)]
+    $itk_component(main) create image $cw $ch \
+        -anchor center \
+        -image ${_preview} \
+        -activeimage ${_selected} \
+        -tags preview
+
+    $itk_component(main) bind preview <ButtonPress-1> [itcl::code $this _bindings b1press]
+    $itk_component(main) bind preview <Enter> [itcl::code $this _bindings enter]
+    $itk_component(main) bind preview <Leave> [itcl::code $this _bindings leave]
+
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# USAGE: select
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooserInfo::select {} {
+    if {"" == $_variable} {
+        return
+    }
+    # send this object's movie to the preview window
+
+    upvar #0 $_variable var
+    set var ${_path}
+
+    foreach {x0 y0 x1 y1} [$itk_component(main) bbox preview] break
+    set x0 [expr 0]
+    set y0 [expr 2]
+    set x1 [expr [$itk_component(main) cget -width]-2]
+    set y1 [expr [$itk_component(main) cget -height]-2]
+
+    # there is something wrong with the way we place the
+    # images on the canvas, or how the canvas is shapeed.
+    # the placement of the small image seems to be off
+    # by a pixel or two. for now we fudge the numbers to
+    # make the red line accesnts look decent.
+
+    $itk_component(main) create line $x0 $y0 $x1 $y0 \
+        -fill red \
+        -width 3 \
+        -tags previewselected
+
+    $itk_component(main) create line $x0 $y1 $x1 $y1 \
+        -fill red \
+        -width 3 \
+        -tags previewselected
+
+#    $itk_component(main) create rectangle \
+        [$itk_component(main) bbox preview] \
+        -outline red \
+        -width 4 \
+        -tags previewselected
+#    $itk_component(main) configure -background red
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _bindings
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooserInfo::_bindings {sequence} {
+    switch -- $sequence {
+        "b1press" {
+            select
+        }
+        "enter" {
+            $itk_component(main) itemconfigure previewselected -state hidden
+        }
+        "leave" {
+            $itk_component(main) itemconfigure previewselected -state normal
+        }
+        default {}
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue ?<name1> <name2> <op>?
+#
+# Invoked automatically whenever the -variable associated with this
+# widget is modified.  Copies the value to the current settings for
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooserInfo::_fixValue {args} {
+    if {"" == $itk_option(-variable)} {
+        return
+    }
+    upvar #0 $itk_option(-variable) var
+    if {[string compare $var ${_path}] != 0} {
+        # unselect this object
+        $itk_component(main) delete previewselected
+        #$itk_component(main) configure -background black
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooserInfo::_fixSize {} {
+    $itk_component(main) configure -width ${_selectedwidth} -height ${_selectedheight}
+}
+
+# ----------------------------------------------------------------------
+# USAGE: query
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoChooserInfo::query {what} {
+    switch -- $what {
+        "preview" {return ${_preview}}
+        "selected" {return ${_selected}}
+        "file" {return ${_path}}
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -variable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoChooserInfo::variable {
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace remove variable var write [itcl::code $this _fixValue]
+    }
+
+    set _variable $itk_option(-variable)
+
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace add variable var write [itcl::code $this _fixValue]
+
+        # sync to the current value of this variable
+        if {[info exists var]} {
+            _fixValue
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -width
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoChooserInfo::width {
+    # $_dispatcher event -idle !fixsize
+    if {[string is integer $itk_option(-width)] == 0} {
+        error "bad value: \"$itk_option(-width)\": width should be an integer"
+    }
+    set _width $itk_option(-width)
+    after idle [itcl::code $this _fixSize]
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -height
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoChooserInfo::height {
+    # $_dispatcher event -idle !fixsize
+    if {[string is integer $itk_option(-height)] == 0} {
+        error "bad value: \"$itk_option(-height)\": height should be an integer"
+    }
+    set _height $itk_option(-height)
+    after idle [itcl::code $this _fixSize]
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -selectedwidth
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoChooserInfo::selectedwidth {
+    # $_dispatcher event -idle !fixsize
+    if {[string is integer $itk_option(-selectedwidth)] == 0} {
+        error "bad value: \"$itk_option(-selectedwidth)\": selectedwidth should be an integer"
+    }
+    set _selectedwidth $itk_option(-selectedwidth)
+    after idle [itcl::code $this _fixSize]
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -selectedheight
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoChooserInfo::selectedheight {
+    # $_dispatcher event -idle !fixsize
+    if {[string is integer $itk_option(-selectedheight)] == 0} {
+        error "bad value: \"$itk_option(-selectedheight)\": selectedheight should be an integer"
+    }
+    set _selectedheight $itk_option(-selectedheight)
+    after idle [itcl::code $this _fixSize]
+}
Index: /tags/1.6.0/gui/scripts/videodial.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/videodial.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/videodial.tcl	(revision 6168)
@@ -0,0 +1,1338 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: Videodial - selector, like the dial on a flow
+#
+#  This widget looks like the dial on an old-fashioned car flow.
+#  It draws a series of values along an axis, and allows a selector
+#  to move back and forth to select the values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Videodial.dialProgressColor #6666cc widgetDefault
+option add *Videodial.thickness 10 widgetDefault
+option add *Videodial.length 2i widgetDefault
+option add *Videodial.knobImage knob widgetDefault
+option add *Videodial.knobPosition n@middle widgetDefault
+option add *Videodial.dialOutlineColor black widgetDefault
+option add *Videodial.dialFillColor white widgetDefault
+option add *Videodial.lineColor gray widgetDefault
+option add *Videodial.activeLineColor black widgetDefault
+option add *Videodial.padding 0 widgetDefault
+option add *Videodial.valueWidth 10 widgetDefault
+option add *Videodial.valuePadding 0.1 widgetDefault
+option add *Videodial.foreground black widgetDefault
+option add *Videodial.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Videodial {
+    inherit itk::Widget
+
+    itk_option define -min min Min 0
+    itk_option define -max max Max 1
+    itk_option define -minortick minortick Minortick 1
+    itk_option define -majortick majortick Majortick 5
+    itk_option define -variable variable Variable ""
+    itk_option define -offset offset Offset 1
+
+    itk_option define -thickness thickness Thickness 0
+    itk_option define -length length Length 0
+    itk_option define -padding padding Padding 0
+
+    itk_option define -foreground foreground Foreground "black"
+    itk_option define -dialoutlinecolor dialOutlineColor Color "black"
+    itk_option define -dialfillcolor dialFillColor Color "white"
+    itk_option define -dialprogresscolor dialProgressColor Color ""
+    itk_option define -linecolor lineColor Color "black"
+    itk_option define -activelinecolor activeLineColor Color "black"
+    itk_option define -knobimage knobImage KnobImage ""
+    itk_option define -knobposition knobPosition KnobPosition ""
+
+    itk_option define -font font Font ""
+    itk_option define -valuewidth valueWidth ValueWidth 0
+    itk_option define -valuepadding valuePadding ValuePadding 0
+
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method current {value}
+    public method clear {}
+    public method mark {args}
+    public method bball {}
+
+    protected method _bindings {type args}
+    protected method _redraw {}
+    protected method _marker {tag action x y}
+    protected method _setmark {type args}
+    protected method _move {action x y}
+    protected method _knob {x y}
+    protected method _navigate {offset}
+    protected method _fixSize {}
+    protected method _fixMinorSize {}
+    protected method _fixValue {args}
+    protected method _fixOffsets {}
+
+    private method _current {value}
+    private method _see {item}
+    private method _draw_major_timeline {}
+    private method _draw_minor_timeline {}
+    private method _offsetx {x}
+    private method ms2rel {value}
+    private method rel2ms {value}
+    private common _click             ;# x,y point where user clicked
+    private common _marks             ;# list of marks
+    private variable _values ""       ;# list of all values on the dial
+    private variable _val2label       ;# maps value => string label(s)
+    private variable _current 0       ;# current value (where pointer is)
+    private variable _variable ""     ;# variable associated with -variable
+    private variable _knob ""         ;# image for knob
+    private variable _spectrum ""     ;# width allocated for values
+    private variable _activecolor ""  ;# width allocated for values
+    private variable _vwidth 0        ;# width allocated for values
+    private variable _offset_pos 1    ;#
+    private variable _offset_neg -1   ;#
+    private variable _imspace 10      ;# pixels between intermediate marks
+    private variable _pmcnt 0         ;# particle marker count
+    private variable _min 0
+    private variable _max 1
+    private variable _minortick 1
+    private variable _majortick 5
+}
+
+itk::usual Videodial {
+    keep -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::constructor {args} {
+
+    # bind $itk_component(hull) <<Frame>> [itcl::code $this _updateCurrent]
+
+    # ----------------------------------------------------------------------
+    # controls for the major timeline.
+    # ----------------------------------------------------------------------
+    itk_component add majordial {
+        canvas $itk_interior.majordial
+    }
+
+    bind $itk_component(majordial) <Configure> [itcl::code $this _draw_major_timeline]
+
+    bind $itk_component(majordial) <ButtonPress-1> [itcl::code $this _knob %x %y]
+    bind $itk_component(majordial) <B1-Motion> [itcl::code $this _knob %x %y]
+    bind $itk_component(majordial) <ButtonRelease-1> [itcl::code $this _knob %x %y]
+
+    #bind $itk_component(hull) <KeyPress-Left> [itcl::code $this _navigate $_offset_neg]
+    #bind $itk_component(hull) <KeyPress-Right> [itcl::code $this _navigate $_offset_pos]
+
+    $itk_component(majordial) bind  "knob" <Enter> \
+        [list $itk_component(majordial) configure -cursor sb_h_double_arrow]
+    $itk_component(majordial) bind  "knob" <Leave> \
+        [list $itk_component(majordial) configure -cursor ""]
+
+    # ----------------------------------------------------------------------
+    # controls for the minor timeline.
+    # ----------------------------------------------------------------------
+    itk_component add minordial {
+        canvas $itk_interior.minordial -background blue
+    }
+
+
+    bind $itk_component(minordial) <Configure> [itcl::code $this _draw_minor_timeline]
+
+    bind $itk_component(minordial) <ButtonPress-1> [itcl::code $this _move click %x %y]
+    bind $itk_component(minordial) <B1-Motion> [itcl::code $this _move drag %x %y]
+    bind $itk_component(minordial) <ButtonRelease-1> [itcl::code $this _move release %x %y]
+
+    # ----------------------------------------------------------------------
+    # place controls in widget.
+    # ----------------------------------------------------------------------
+
+    blt::table $itk_interior \
+        0,0 $itk_component(majordial) -fill x \
+        1,0 $itk_component(minordial) -fill x
+
+    blt::table configure $itk_interior c* -resize both
+    blt::table configure $itk_interior r0 -resize none
+    blt::table configure $itk_interior r1 -resize none
+
+
+    eval itk_initialize $args
+
+    $itk_component(majordial) configure -background green
+    $itk_component(minordial) configure -background cyan
+
+    #$itk_component(majordial) configure -relief sunken -borderwidth 1
+    #$itk_component(minordial) configure -relief sunken -borderwidth 1
+
+    _fixSize
+    _fixOffsets
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::destructor {} {
+    configure -variable ""  ;# remove variable trace
+    after cancel [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: current ?<value>?
+#
+# Clients use this to set a new value for the dial.  Values are always
+# sorted in order along the dial.  If the value is not specified,
+# then it is created automatically based on the number of elements
+# on the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::current {value} {
+    if {"" == $value} {
+        return
+    }
+    _current [ms2rel $value]
+    # event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _current ?<value>?
+#
+# Clients use this to set a new value for the dial.  Values are always
+# sorted in order along the dial.  If the value is not specified,
+# then it is created automatically based on the number of elements
+# on the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_current {relval} {
+    if { $relval < 0.0 } {
+        set relval 0.0
+    }
+    if { $relval > 1.0 } {
+        set relval 1.0
+    }
+    set _current $relval
+
+    after cancel [itcl::code $this _draw_major_timeline]
+    after idle [itcl::code $this _draw_major_timeline]
+
+    # update the current marker and move the canvas so current is centered
+    set framenum [expr round([rel2ms $_current])]
+    #_see "frame$framenum"
+    #mark current $framenum
+    after idle [itcl::code $this _see "frame$framenum"]
+    after idle [_setmark current $framenum]
+
+    # update the upvar variable
+    if { $_variable != "" } {
+        upvar #0 $_variable var
+        set var $framenum
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _bindings <type> ?args?
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_bindings {type args} {
+    switch -- $type {
+        "marker" {
+            set tag [lindex $args 0]
+            bind $itk_component(minordial) <ButtonPress-1> [itcl::code $this _marker $tag click %x %y]
+            bind $itk_component(minordial) <B1-Motion> [itcl::code $this _marker $tag drag %x %y]
+            bind $itk_component(minordial) <ButtonRelease-1> [itcl::code $this _marker $tag release %x %y]
+            $itk_component(minordial) configure -cursor hand2
+        }
+        "timeline" {
+            bind $itk_component(minordial) <ButtonPress-1> [itcl::code $this _move click %x %y]
+            bind $itk_component(minordial) <B1-Motion> [itcl::code $this _move drag %x %y]
+            bind $itk_component(minordial) <ButtonRelease-1> [itcl::code $this _move release %x %y]
+            $itk_component(minordial) configure -cursor ""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: mark <property> <args>
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::mark {property args} {
+    set retval 0
+
+    switch -- $property {
+        add {
+            set retval [eval _setmark $args]
+        }
+        remove {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"mark remove <type>\""
+            }
+            set type [lindex $args 0]
+            if {[info exists _marks($type)]} {
+                $itk_component(minordial) delete $type
+                array unset _marks $type
+            }
+        }
+        position {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"mark position <type>\""
+            }
+            set type [lindex $args 0]
+            if {[info exists _marks($type)]} {
+                return $_marks($type)
+            }
+            set retval [expr ${_min}-1]
+        }
+        default {
+            error "bad value \"$property\": should be one of add, remove, position"
+        }
+    }
+
+    return $retval
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _setmark <type> ?[-xcoord|-tag]? <where>
+#
+# Clients use this to add a mark to the timeline
+#   type can be any one of loopstart, loopend, particle, arrow
+#   where is interpreted based on the preceeding flag if available.
+#       in the default case, <where> is interpreted as a frame number
+#       or "current". if the -xcoord flag is provided, where is
+#       interpreted as the x coordinate of where to center the marker.
+#       -xcoord should only be used for temporary placement of a
+#       marker. when -xcoord is used, the marker is placed exactly at
+#       the provided x coordinate, and is not associated with any
+#       frame. It's purpose is mainly for <B1-Motion> events.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_setmark {type args} {
+
+    set c $itk_component(minordial)
+
+    set cx0 0
+    set cy0 0
+    set cx1 0
+    set cy1 0
+    foreach {cx0 cy0 cx1 cy1} [$c bbox "imbox"] break
+
+    # get coords of where to place the marker
+    set frx0 0
+    set fry0 0
+    set frx1 0
+    set fry1 0
+
+    set where ""
+    set largs [llength $args]
+    if {$largs == 1} {
+        set where [lindex $args 0]
+        if {[string compare "current" $where] == 0} {
+            set where [expr round([rel2ms ${_current}])]
+        } elseif {[string is integer $where] == 0} {
+            error "bad value \"$where\": while trying to place marker \"$type\": <where> should be an integer value"
+        }
+
+        # restrict <where> to valid frames between min and max
+        if {$where < ${_min}} {
+            set where ${_min}
+        }
+        if {$where > ${_max}} {
+            set where ${_max}
+        }
+
+        set coords [$c coords "frame$where"]
+        if {![llength $coords]} {
+            # frame marker does not exist
+            # estimate where to put the marker
+            # use frame0 marker as a x=0 point
+            foreach {frx0 fry0 frx1 fry1} [$c coords "frame0"] break
+            set frx0 [expr {$frx0 + ((1.0*$where/${_minortick})*${_imspace})}]
+        } else {
+            foreach {frx0 fry0 frx1 fry1} $coords break
+        }
+        # where already contains the frame number
+    } elseif {$largs == 2} {
+        set flag [lindex $args 0]
+        switch -- $flag {
+            "-xcoord" {
+                set frx0 [lindex $args 1]
+                # where is not set for the -xcoord flag
+            }
+            "-tag" {
+                set id [lindex $args 1]
+                # find the frame# tag to associate with the marker with
+                if {[regexp {frame([0-9]+)} $id] == 0} {
+                    foreach tags [$c gettags $id] {
+                        if {"" != [set tmp [lsearch -inline -regexp $tags {frame[0-9]+}]]} {
+                            set where $tmp
+                            break
+                        }
+                    }
+                } else {
+                    set where $id
+                }
+                # store the frame number in where
+                regexp {frame([0-9]+)} $where match where
+
+                # restrict <where> to valid frames between min and max
+                if {$where < ${_min}} {
+                    set where ${_min}
+                }
+                if {$where > ${_max}} {
+                    set where ${_max}
+                }
+
+                foreach {frx0 fry0 frx1 fry1} [$c coords frame$where] break
+            }
+            default {
+                error "bad value \"$flag\": should be -xcoord or -tag"
+            }
+        }
+        if {[string is double $frx0] == 0} {
+            error "bad value \"$frx0\": <where> should be a double value"
+        }
+    } else {
+        error "wrong # args: should be \"mark <type> ?-xcoord? <where>\""
+    }
+
+    # add/remove the marker
+
+    switch -glob -- $type {
+        "loopstart" {
+            # add start marker
+
+            set smx0 $frx0                              ;# loopstart marker x0
+            set smy0 $cy0                               ;# loopstart marker y0
+
+            # polygon's outline adds a border to only one
+            # side of the object? so we have weird +1 in
+            # the triangle base in loopstart marker
+
+            # marker stem is 3 pixels thick
+            set smx1 [expr {$smx0+1}]                   ;# triangle top x
+            set smy1 [expr {$smy0-10}]                  ;# triangle top y
+            set smx2 $smx1                              ;# stem bottom right x
+            set smy2 $cy1                               ;# stem bottom right y
+            set smx3 [expr {$smx0-1}]                   ;# stem bottom left x
+            set smy3 $smy2                              ;# stem bottom left y
+            set smx4 $smx3                              ;# stem middle left x
+            set smy4 $smy0                              ;# stem middle left y
+            set smx5 [expr {$smx0-10+1}]                ;# triangle bottom left x
+            set smy5 $smy0                              ;# triangle bottom left y
+
+            set tag $type
+            $c delete $tag
+            $c create polygon \
+                $smx1 $smy1 \
+                $smx2 $smy2 \
+                $smx3 $smy3 \
+                $smx4 $smy4 \
+                $smx5 $smy5 \
+                -outline black -fill black -tags $tag
+
+            $c bind $tag <Enter> [itcl::code $this _bindings marker $tag]
+            $c bind $tag <Leave> [itcl::code $this _bindings timeline]
+
+            if {[string compare "" $where] != 0} {
+                set _marks($type) $where
+
+                # make sure loopstart marker is before loopend marker
+                if {[info exists _marks(loopend)]} {
+                    set endFrNum $_marks(loopend)
+                    if {$endFrNum < $where} {
+                        _setmark loopend -tag frame[expr $where+1]
+                    }
+                }
+            }
+
+            _fixMinorSize
+        }
+        "loopend" {
+            # add loopend marker
+
+            set emx0 $frx0                              ;# loopend marker x0
+            set emy0 $cy0                               ;# loopend marker y0
+
+            set emx1 [expr {$emx0-1}]                   ;# triangle top x
+            set emy1 [expr {$emy0-10}]                  ;# triangle top y
+            set emx2 $emx1                              ;# stem bottom left x
+            set emy2 $cy1                               ;# stem bottom left y
+            set emx3 [expr {$emx0+1}]                   ;# stem bottom right x
+            set emy3 $emy2                              ;# stem bottom right y
+            set emx4 $emx3                              ;# stem middle right x
+            set emy4 $emy0                              ;# stem middle right  y
+            set emx5 [expr {$emx0+10-1}]                ;# triangle bottom right x
+            set emy5 $emy0                              ;# triangle bottom right y
+
+            set tag $type
+            $c delete $tag
+            $c create polygon \
+                $emx1 $emy1 \
+                $emx2 $emy2 \
+                $emx3 $emy3 \
+                $emx4 $emy4 \
+                $emx5 $emy5 \
+                -outline black -fill black -tags $tag
+
+            $c bind $tag <Enter> [itcl::code $this _bindings marker $tag]
+            $c bind $tag <Leave> [itcl::code $this _bindings timeline]
+
+            if {[string compare "" $where] != 0} {
+                set _marks($type) $where
+
+                # make sure loopend marker is after loopstart marker
+                if {[info exists _marks(loopstart)]} {
+                    set startFrNum $_marks(loopstart)
+                    if {$startFrNum > $where} {
+                        _setmark loopstart -tag frame[expr $where-1]
+                    }
+                }
+            }
+
+            _fixMinorSize
+        }
+        "particle*" {
+            set radius 3
+            set pmx0 $frx0
+            set pmy0 [expr {$cy1+5}]
+            set coords [list [expr $pmx0-$radius] [expr $pmy0-$radius] \
+                             [expr $pmx0+$radius] [expr $pmy0+$radius]]
+
+            set tag $type
+            $c create oval $coords \
+                -fill green \
+                -outline black \
+                -width 1 \
+                -tags $tag
+
+            #$c bind $tag <Enter> [itcl::code $this _bindings marker $tag]
+            #$c bind $tag <Leave> [itcl::code $this _bindings timeline]
+
+            if {[string compare "" $where] != 0} {
+                set _marks($type) $where
+            }
+
+            _fixMinorSize
+
+        }
+        "arrow" {
+            set radius 3
+            set amx0 $frx0
+            set amy0 [expr {$cy1+15}]
+            set coords [list [expr $amx0-$radius] [expr $amy0-$radius] \
+                             [expr $amx0+$radius] [expr $amy0+$radius]]
+
+            set tag $type
+            $c create line $coords \
+                -fill red \
+                -width 3  \
+                -tags $tag
+
+            #$c bind $tag <Enter> [itcl::code $this _bindings marker $tag]
+            #$c bind $tag <Leave> [itcl::code $this _bindings timeline]
+
+            if {[string compare "" $where] != 0} {
+                set _marks($type) $where
+            }
+
+            _fixMinorSize
+        }
+        "current" {
+
+            set cmx0 $frx0                              ;# current marker x0
+            set cmy0 $cy0                               ;# current marker y0
+
+            set cmx1 [expr {$cmx0+5}]                   ;# lower right diagonal edge x
+            set cmy1 [expr {$cmy0-5}]                   ;# lower right diagonal edge y
+            set cmx2 $cmx1                              ;# right top x
+            set cmy2 [expr {$cmy1-5}]                   ;# right top y
+            set cmx3 [expr {$cmx0-5}]                   ;# left top x
+            set cmy3 $cmy2                              ;# left top y
+            set cmx4 $cmx3                              ;# lower left diagonal edge x
+            set cmy4 $cmy1                              ;# lower left diagonal edge y
+
+            set tag $type
+            $c delete $tag
+            $c create polygon \
+                $cmx0 $cmy0 \
+                $cmx1 $cmy1 \
+                $cmx2 $cmy2 \
+                $cmx3 $cmy3 \
+                $cmx4 $cmy4 \
+                -outline black -fill red -tags $tag
+            $c create line $cmx0 $cmy0 $cmx0 $cy1 -fill red -tags $tag
+
+            if {[string compare "" $where] != 0} {
+                set _marks($type) $where
+            }
+
+        }
+        default {
+            error "bad value \"$type\": should be \"loopstart\" or \"loopend\""
+        }
+    }
+    return
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _draw_major_timeline
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_draw_major_timeline {} {
+    set c $itk_component(majordial)
+    $c delete all
+
+    set fg $itk_option(-foreground)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set p [winfo pixels $c $itk_option(-padding)]
+    set t [expr {$itk_option(-thickness)+1}]
+    # FIXME: hack to get the reduce spacing in widget
+    set y1 [expr {$h-2}]
+
+    if {"" != $_knob} {
+        set kw [image width $_knob]
+        set kh [image height $_knob]
+
+        # anchor refers to where on knob
+        # top/middle/bottom refers to where on the dial
+        # leave room for the bottom of the knob if needed
+        switch -- $itk_option(-knobposition) {
+            n@top - nw@top - ne@top {
+                set extra [expr {$t-$kh}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$y1-$extra}]
+            }
+            n@middle - nw@middle - ne@middle {
+                set extra [expr {int(ceil($kh-0.5*$t))}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$y1-$extra}]
+            }
+            n@bottom - nw@bottom - ne@bottom {
+               set y1 [expr {$y1-$kh}]
+            }
+
+            e@top - w@top - center@top -
+            e@bottom - w@bottom - center@bottom {
+                set extra [expr {int(ceil(0.5*$kh))}]
+                set y1 [expr {$y1-$extra}]
+            }
+            e@middle - w@middle - center@middle {
+                set extra [expr {int(ceil(0.5*($kh-$t)))}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$y1-$extra}]
+            }
+
+            s@top - sw@top - se@top -
+            s@middle - sw@middle - se@middle -
+            s@bottom - sw@bottom - se@bottom {
+                set y1 [expr {$y1-1}]
+            }
+        }
+    }
+    set y0 [expr {$y1-$t}]
+    set x0 [expr {$p+1}]
+    set x1 [expr {$w-$_vwidth-$p-4}]
+
+    # draw the background rectangle for the major time line
+    $c create rectangle $x0 $y0 $x1 $y1 \
+        -outline $itk_option(-dialoutlinecolor) \
+        -fill $itk_option(-dialfillcolor) \
+        -tags "majorbg"
+
+    # draw the optional progress bar for the major time line,
+    # from start to current
+    if {"" != $itk_option(-dialprogresscolor) } {
+        set xx1 [expr {$_current*($x1-$x0) + $x0}]
+        $c create rectangle [expr {$x0+1}] [expr {$y0+3}] $xx1 [expr {$y1-2}] \
+            -outline "" -fill $itk_option(-dialprogresscolor)
+    }
+
+    regexp {([nsew]+|center)@} $itk_option(-knobposition) match anchor
+    switch -glob -- $itk_option(-knobposition) {
+        *@top    { set kpos $y0 }
+        *@middle { set kpos [expr {int(ceil(0.5*($y1+$y0)))}] }
+        *@bottom { set kpos $y1 }
+    }
+
+    set x [expr {$_current*($x1-$x0) + $x0}]
+
+    set color $_activecolor
+    set thick 3
+    if {"" != $color} {
+        $c create line $x [expr {$y0+1}] $x $y1 -fill $color -width $thick
+    }
+
+    $c create image $x $kpos -anchor $anchor -image $_knob -tags "knob"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: bball
+#   debug function to print out the bounding box information for
+#   minor dial
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::bball {} {
+    set c $itk_component(minordial)
+    foreach item [$c find all] {
+        foreach {x0 y0 x1 y1} [$c bbox $item] break
+        if {! [info exists y1]} continue
+        puts stderr "$item : [expr $y1-$y0]: $y0 $y1"
+        lappend q $y0 $y1
+    }
+    set q [lsort -real $q]
+    puts stderr "q [lindex $q 0] [lindex $q end]"
+    puts stderr "height [winfo height $c]"
+    puts stderr "bbox all [$c bbox all]"
+    puts stderr "parent height [winfo height [winfo parent $c]]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _draw_minor_timeline
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_draw_minor_timeline {} {
+    set c $itk_component(minordial)
+    $c delete all
+
+    set fg $itk_option(-foreground)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set p [winfo pixels $c $itk_option(-padding)]
+    set t [expr {$itk_option(-thickness)+1}]
+    set y1 [expr {$h-1}]
+    set y0 [expr {$y1-$t}]
+    set x0 [expr {$p+1}]
+    set x1 [expr {$w-$_vwidth-$p-4}]
+
+
+    # draw the background rectangle for the minor time line
+    $c create rectangle $x0 $y0 $x1 $y1 \
+        -outline $itk_option(-dialoutlinecolor) \
+        -fill $itk_option(-dialfillcolor) \
+        -tags "imbox"
+
+    # add intermediate marks between markers
+    set imw 1.0                                 ;# intermediate mark width
+
+    set imsh [expr {$t/3.0}]                    ;# intermediate mark short height
+    set imsy0 [expr {$y0+(($t-$imsh)/2.0)}]     ;# precalc'd imark short y0 coord
+    set imsy1 [expr {$imsy0+$imsh}]             ;# precalc'd imark short y1 coord
+
+    set imlh [expr {$t*2.0/3.0}]                ;# intermediate mark long height
+    set imly0 [expr {$y0+(($t-$imlh)/2.0)}]     ;# precalc'd imark long y0 coord
+    set imly1 [expr {$imly0+$imlh}]             ;# precalc'd imark long y1 coord
+
+    set imty [expr {$y0-5}]                     ;# height of marker value
+
+    set imx $x0
+    for {set i [expr {int(${_min})}]} {$i <= ${_max}} {incr i} {
+        if {($i%${_majortick}) == 0} {
+            # draw major tick
+            $c create line $imx $imly0 $imx $imly1 \
+                -fill red \
+                -width $imw \
+                -tags [list longmark-c imark-c "frame$i"]
+
+            $c create text $imx $imty -anchor center -text $i \
+                -font $itk_option(-font) -tags "frame$i"
+
+            set imx [expr $imx+${_imspace}]
+        } elseif {($i%${_minortick}) == 0 } {
+            # draw minor tick
+            $c create line $imx $imsy0 $imx $imsy1 \
+                -fill blue \
+                -width $imw \
+                -tags [list shortmark-c imark-c "frame$i"]
+
+            set imx [expr $imx+${_imspace}]
+        }
+    }
+
+
+    # calculate the height of the intermediate tick marks
+    # and frame numbers on our canvas, resize the imbox
+    # to include both of them.
+    set box [$c bbox "all"]
+    if {![llength $box]} {
+        set box [list 0 0 0 0]
+    }
+    foreach {x0 y0 x1 y1} $box break
+    $c coords "imbox" $box
+
+    # add any marks that the user previously specified
+    foreach n [array names _marks] {
+        # mark $n -tag $_marks($n)
+        _setmark $n $_marks($n)
+    }
+
+    _fixMinorSize
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _fixMinorSize
+#
+# Used internally to compute the height of the minor dial based
+# on the items placed on the canvas
+#
+# FIXME: instead of calling this in the mark command, figure out how to
+#   make the canvas the correct size to start with
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_fixMinorSize {} {
+    # resize the height of the minor timeline canvas
+    # to include everything we know about
+
+    set c $itk_component(minordial)
+
+    set box [$c bbox "all"]
+    if {![llength $box]} {
+        set box [list 0 0 0 0]
+    }
+
+    foreach {x0 y0 x1 y1} $box break
+    set h [expr $y1-$y0]
+
+    $c configure -height $h -scrollregion $box -xscrollincrement 1p
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Called automatically whenever the widget changes size to redraw
+# all elements within it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_redraw {} {
+#    _draw_major_timeline
+#    _draw_minor_timeline
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _knob <x> <y>
+#
+# Called automatically whenever the user clicks or drags on the widget
+# to select a value.  Moves the current value to the one nearest the
+# click point.  If the value actually changes, it generates a <<Value>>
+# event to notify clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_knob {x y} {
+    set c $itk_component(majordial)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set x0 1
+    set x1 [expr {$w-$_vwidth-4}]
+    focus $itk_component(hull)
+    if {$x >= $x0 && $x <= $x1} {
+        current [rel2ms [expr double($x - $x0) / double($x1 - $x0)]]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _offsetx <x>
+#
+# Calculate an x coordinate that has been offsetted by a scrolled canvas
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_offsetx {x} {
+    set c $itk_component(minordial)
+    set w [lindex [$c cget -scrollregion] 2]
+    set x0 [lindex [$c xview] 0]
+    set offset [expr {$w*$x0}]
+    set x [expr {$x+$offset}]
+    return $x
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _marker <tag> click <x> <y>
+#        _marker <tag> drag <x> <y>
+#        _marker <tag> release <x> <y>
+#
+# Called automatically whenever the user clicks or drags on a marker
+# widget.  Moves the selected marker to the next nearest tick mark.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_marker {tag action x y} {
+    set c $itk_component(minordial)
+    set x [_offsetx $x]
+    switch $action {
+        "click" {
+        }
+        "drag" {
+            _setmark $tag -xcoord $x
+            # if we are too close to the edge, scroll the canvas.
+            # $c xview scroll $dist "unit"
+        }
+        "release" {
+            # on release, snap to the closest imark
+            foreach {junk y0 junk y1} [$c bbox "imark-c"] break
+            set id ""
+            foreach item [$c find enclosed [expr {$x-((${_imspace}+1)/2.0)}] $y0 \
+                                           [expr {$x+((${_imspace}+1)/2.0)}] $y1] {
+                set itemtags [$c gettags $item]
+                if {[lsearch -exact $itemtags "imark-c"] != -1} {
+                    set id [lsearch -inline -regexp $itemtags {frame[0-9]}]
+                    break
+                }
+            }
+            if {[string compare "" $id] == 0} {
+                # something went wrong
+                # we should have found an imark with
+                # an associated "frame#" tag to snap to
+                # bailout
+                error "could not find an intermediate mark to snap marker to"
+            }
+
+            _setmark $tag -tag $id
+
+            # take care of cases where the mouse leaves the marker's boundries
+            # before the button-1 has been released. we check if the last
+            # coord was within the bounds of the marker. if not, we manually
+            # generate the "Leave" event.
+            set leave 1
+            foreach item [$c find overlapping $x $y $x $y] {
+                if {[lsearch -exact [$c gettags $item] $tag] != -1} {
+                    set leave 0
+                }
+            }
+            if {$leave == 1} {
+                # FIXME:
+                # i want to generate the event rather than
+                # calling the function myself...
+                # event generate $c <Leave>
+                _bindings timeline
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _move click <x> <y>
+#        _move drag <x> <y>
+#        _move release <x> <y>
+#
+# Called automatically whenever the user clicks or drags on the widget
+# to select a value.  Moves the current value to the one nearest the
+# click point.  If the value actually changes, it generates a <<Value>>
+# event to notify clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_move {action x y} {
+    switch $action {
+        "click" {
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "drag" {
+            set c $itk_component(minordial)
+            set dist [expr $_click(x)-$x]
+            $c xview scroll $dist "units"
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "release" {
+            _move drag $x $y
+            catch {unset _click}
+        }
+    }
+}
+
+## from http://tcl.sourceforge.net/faqs/tk/#canvas/see
+## "see" method alternative for canvas
+## Aligns the named item as best it can in the middle of the screen
+##
+## item - a canvas tagOrId
+itcl::body Rappture::Videodial::_see {item} {
+    set c $itk_component(minordial)
+    set box [$c bbox $item]
+    if {![llength $box]} return
+    ## always properly set -scrollregion
+    foreach {x y x1 y1}     $box \
+            {top btm}       [$c yview] \
+            {left right}    [$c xview] \
+            {p q xmax ymax} [$c cget -scrollregion] {
+        set xpos [expr {(($x1+$x)/2.0)/$xmax - ($right-$left)/2.0}]
+        #set ypos [expr {(($y1+$y)/2.0)/$ymax - ($btm-$top)/2.0}]
+    }
+    $c xview moveto $xpos
+    #$c yview moveto $ypos
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _navigate <offset>
+#
+# Called automatically whenever the user presses left/right keys
+# to nudge the current value left or right by some <offset>.  If the
+# value actually changes, it generates a <<Value>> event to notify
+# clients.
+# ----------------------------------------------------------------------
+#itcl::body Rappture::Videodial::_navigate {offset} {
+#    set index [lsearch -exact $_values $_current]
+#    if {$index >= 0} {
+#        incr index $offset
+#        if {$index >= [llength $_values]} {
+#            set index [expr {[llength $_values]-1}]
+#        } elseif {$index < 0} {
+#            set index 0
+#        }
+#
+#        set newval [lindex $_values $index]
+#        if {$newval != $_current} {
+#            current $newval
+#            _redraw
+#
+#            event generate $itk_component(hull) <<Value>>
+#        }
+#    }
+#}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _navigate <offset>
+#
+# Called automatically whenever the user presses left/right keys
+# to nudge the current value left or right by some <offset>.  If the
+# value actually changes, it generates a <<Value>> event to notify
+# clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_navigate {offset} {
+    _current [ms2rel [expr $_current + $offset]]
+    event generate $itk_component(hull) <<Value>>
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+#
+# Used internally to compute the overall size of the widget based
+# on the -thickness and -length options.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_fixSize {} {
+    set h [winfo pixels $itk_component(hull) $itk_option(-thickness)]
+
+    if {"" != $_knob} {
+        set kh [image height $_knob]
+
+        switch -- $itk_option(-knobposition) {
+            n@top - nw@top - ne@top -
+            s@bottom - sw@bottom - se@bottom {
+                if {$kh > $h} { set h $kh }
+            }
+            n@middle - nw@middle - ne@middle -
+            s@middle - sw@middle - se@middle {
+                set h [expr {int(ceil(0.5*$h + $kh))}]
+            }
+            n@bottom - nw@bottom - ne@bottom -
+            s@top - sw@top - se@top {
+                set h [expr {$h + $kh}]
+            }
+            e@middle - w@middle - center@middle {
+                set h [expr {(($h > $kh) ? $h : ($kh+1))}]
+            }
+            n@middle - ne@middle - nw@middle -
+            s@middle - se@middle - sw@middle {
+                set extra [expr {int(ceil($kh-0.5*$h))}]
+                if {$extra < 0} { set extra 0 }
+                set h [expr {$h+$extra}]
+            }
+        }
+    }
+    # FIXME: hack to get the reduce spacing in widget
+    incr h -1
+
+    set w [winfo pixels $itk_component(hull) $itk_option(-length)]
+
+    # if the -valuewidth is > 0, then make room for the value
+    if {$itk_option(-valuewidth) > 0} {
+        set charw [font measure $itk_option(-font) "n"]
+        set _vwidth [expr {$itk_option(-valuewidth)*$charw}]
+        set w [expr {$w+$_vwidth+4}]
+    } else {
+        set _vwidth 0
+    }
+
+    $itk_component(majordial) configure -width $w -height $h
+
+#    # resize the height of the minor canvas to include everything we know about
+#    set box [$itk_component(minordial) bbox "all"]
+#    if {![llength $box]} {
+#        set box [list 0 0 0 0]
+#    }
+#    foreach {cx0 cy0 cx1 cy1} $box break
+#    set h [expr $cy1-$cy0+1]
+#    $itk_component(minordial) configure -height $h
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue ?<name1> <name2> <op>?
+#
+# Invoked automatically whenever the -variable associated with this
+# widget is modified.  Copies the value to the current settings for
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_fixValue {args} {
+    if {"" == $itk_option(-variable)} {
+        return
+    }
+    upvar #0 $itk_option(-variable) var
+    _current [ms2rel $var]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixOffsets
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial::_fixOffsets {} {
+    if {0 == $itk_option(-offset)} {
+        return
+    }
+    set _offset_pos $itk_option(-offset)
+    set _offset_neg [expr -1*$_offset_pos]
+    bind $itk_component(hull) <KeyPress-Left> [itcl::code $this _navigate $_offset_neg]
+    bind $itk_component(hull) <KeyPress-Right> [itcl::code $this _navigate $_offset_pos]
+}
+
+itcl::body Rappture::Videodial::ms2rel { value } {
+    if { ${_max} > ${_min} } {
+        return [expr {1.0 * ($value - ${_min}) / (${_max} - ${_min})}]
+    }
+    return 0
+}
+
+itcl::body Rappture::Videodial::rel2ms { value } {
+    return [expr $value * (${_max} - ${_min}) + ${_min}]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -thickness
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::thickness {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -length
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::length {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -font
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::font {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -valuewidth
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::valuewidth {
+    if {![string is integer $itk_option(-valuewidth)]} {
+        error "bad value \"$itk_option(-valuewidth)\": should be integer"
+    }
+    _fixSize
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -foreground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::foreground {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialoutlinecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::dialoutlinecolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialfillcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::dialfillcolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialprogresscolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::dialprogresscolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -linecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::linecolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -activelinecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::activelinecolor {
+    set val $itk_option(-activelinecolor)
+    if {[catch {$val isa ::Rappture::Spectrum} valid] == 0 && $valid} {
+        set _spectrum $val
+        set _activecolor ""
+    } elseif {[catch {winfo rgb $itk_component(hull) $val}] == 0} {
+        set _spectrum ""
+        set _activecolor $val
+    } elseif {"" != $val} {
+        error "bad value \"$val\": should be Spectrum object or color"
+    }
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -knobimage
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::knobimage {
+    if {[regexp {^image[0-9]+$} $itk_option(-knobimage)]} {
+        set _knob $itk_option(-knobimage)
+    } elseif {"" != $itk_option(-knobimage)} {
+        set _knob [Rappture::icon $itk_option(-knobimage)]
+    } else {
+        set _knob ""
+    }
+    _fixSize
+
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -knobposition
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::knobposition {
+    if {![regexp {^([nsew]+|center)@(top|middle|bottom)$} $itk_option(-knobposition)]} {
+        error "bad value \"$itk_option(-knobposition)\": should be anchor@top|middle|bottom"
+    }
+    _fixSize
+
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -padding
+# This adds padding on left/right side of dial background.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::padding {
+    if {[catch {winfo pixels $itk_component(hull) $itk_option(-padding)}]} {
+        error "bad value \"$itk_option(-padding)\": should be size in pixels"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -valuepadding
+# This shifts min/max limits in by a fraction of the overall size.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::valuepadding {
+    if {![string is double $itk_option(-valuepadding)]
+          || $itk_option(-valuepadding) < 0} {
+        error "bad value \"$itk_option(-valuepadding)\": should be >= 0.0"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -variable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::variable {
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace remove variable var write [itcl::code $this _fixValue]
+    }
+
+    set _variable $itk_option(-variable)
+
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace add variable var write [itcl::code $this _fixValue]
+
+        # sync to the current value of this variable
+        if {[info exists var]} {
+            _fixValue
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -offset
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::offset {
+    if {![string is double $itk_option(-offset)]} {
+        error "bad value \"$itk_option(-offset)\": should be >= 0.0"
+    }
+    _fixOffsets
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -min
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::min {
+    if {![string is integer $itk_option(-min)]} {
+        error "bad value \"$itk_option(-min)\": should be an integer"
+    }
+    if {$itk_option(-min) < 0} {
+        error "bad value \"$itk_option(-min)\": should be >= 0"
+    }
+    set _min $itk_option(-min)
+    _draw_minor_timeline
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -max
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::max {
+    if {![string is integer $itk_option(-max)]} {
+        error "bad value \"$itk_option(-max)\": should be an integer"
+    }
+    if {$itk_option(-max) < 0} {
+        error "bad value \"$itk_option(-max)\": should be >= 0"
+    }
+    set _max $itk_option(-max)
+    _draw_minor_timeline
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -minortick
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::minortick {
+    if {![string is integer $itk_option(-minortick)]} {
+        error "bad value \"$itk_option(-minortick)\": should be an integer"
+    }
+    if {$itk_option(-minortick) <= 0} {
+        error "bad value \"$itk_option(-minortick)\": should be > 0"
+    }
+    set _minortick $itk_option(-minortick)
+    _draw_minor_timeline
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -majortick
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial::majortick {
+    if {![string is integer $itk_option(-majortick)]} {
+        error "bad value \"$itk_option(-majortick)\": should be an integer"
+    }
+    if {$itk_option(-majortick) <= 0} {
+        error "bad value \"$itk_option(-majortick)\": should be > 0"
+    }
+    set _majortick $itk_option(-majortick)
+    _draw_minor_timeline
+}
Index: /tags/1.6.0/gui/scripts/videodial1.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/videodial1.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/videodial1.tcl	(revision 6168)
@@ -0,0 +1,663 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: Videodial1 - selector, like the dial on a flow
+#
+#  This widget looks like the dial on an old-fashioned car flow.
+#  It draws a series of values along an axis, and allows a selector
+#  to move back and forth to select the values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Videodial1.dialProgressColor #6666cc widgetDefault
+option add *Videodial1.thickness 10 widgetDefault
+option add *Videodial1.length 2i widgetDefault
+option add *Videodial1.knobImage knob widgetDefault
+option add *Videodial1.knobPosition n@middle widgetDefault
+option add *Videodial1.dialOutlineColor black widgetDefault
+option add *Videodial1.dialFillColor white widgetDefault
+option add *Videodial1.lineColor gray widgetDefault
+option add *Videodial1.activeLineColor black widgetDefault
+option add *Videodial1.padding 0 widgetDefault
+option add *Videodial1.valueWidth 10 widgetDefault
+option add *Videodial1.valuePadding 0.1 widgetDefault
+option add *Videodial1.foreground black widgetDefault
+option add *Videodial1.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Videodial1 {
+    inherit itk::Widget
+
+    itk_option define -min min Min 0
+    itk_option define -max max Max 1
+    itk_option define -variable variable Variable ""
+    itk_option define -offset offset Offset 1
+
+    itk_option define -thickness thickness Thickness 0
+    itk_option define -length length Length 0
+    itk_option define -padding padding Padding 0
+
+    itk_option define -foreground foreground Foreground "black"
+    itk_option define -dialoutlinecolor dialOutlineColor Color "black"
+    itk_option define -dialfillcolor dialFillColor Color "white"
+    itk_option define -dialprogresscolor dialProgressColor Color ""
+    itk_option define -linecolor lineColor Color "black"
+    itk_option define -activelinecolor activeLineColor Color "black"
+    itk_option define -knobimage knobImage KnobImage ""
+    itk_option define -knobposition knobPosition KnobPosition ""
+
+    itk_option define -font font Font ""
+    itk_option define -valuewidth valueWidth ValueWidth 0
+    itk_option define -valuepadding valuePadding ValuePadding 0
+
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method current {value}
+    public method clear {}
+
+    protected method _redraw {}
+    protected method _knob {x y}
+    protected method _navigate {offset}
+    protected method _fixSize {}
+    protected method _fixValue {args}
+    protected method _fixOffsets {}
+
+    private method _current {value}
+    private method _draw_major_timeline {}
+    private method ms2rel {value}
+    private method rel2ms {value}
+    private common _click             ;# x,y point where user clicked
+    private variable _values ""       ;# list of all values on the dial
+    private variable _val2label       ;# maps value => string label(s)
+    private variable _current 0       ;# current value (where pointer is)
+    private variable _variable ""     ;# variable associated with -variable
+    private variable _knob ""         ;# image for knob
+    private variable _spectrum ""     ;# width allocated for values
+    private variable _activecolor ""  ;# width allocated for values
+    private variable _vwidth 0        ;# width allocated for values
+    private variable _offset_pos 1    ;#
+    private variable _offset_neg -1   ;#
+    private variable _imspace 10      ;# pixels between intermediate marks
+    private variable _pmcnt 0         ;# particle marker count
+    private variable _min 0
+    private variable _max 1
+}
+
+itk::usual Videodial1 {
+    keep -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::constructor {args} {
+
+    # bind $itk_component(hull) <<Frame>> [itcl::code $this _updateCurrent]
+
+    # ----------------------------------------------------------------------
+    # controls for the major timeline.
+    # ----------------------------------------------------------------------
+    itk_component add majordial {
+        canvas $itk_interior.majordial
+    }
+
+    bind $itk_component(majordial) <Configure> [itcl::code $this _draw_major_timeline]
+
+    bind $itk_component(majordial) <ButtonPress-1> [itcl::code $this _knob %x %y]
+    bind $itk_component(majordial) <B1-Motion> [itcl::code $this _knob %x %y]
+    bind $itk_component(majordial) <ButtonRelease-1> [itcl::code $this _knob %x %y]
+
+    #bind $itk_component(hull) <KeyPress-Left> [itcl::code $this _navigate $_offset_neg]
+    #bind $itk_component(hull) <KeyPress-Right> [itcl::code $this _navigate $_offset_pos]
+
+    $itk_component(majordial) bind  "knob" <Enter> \
+        [list $itk_component(majordial) configure -cursor sb_h_double_arrow]
+    $itk_component(majordial) bind  "knob" <Leave> \
+        [list $itk_component(majordial) configure -cursor ""]
+
+    # ----------------------------------------------------------------------
+    # place controls in widget.
+    # ----------------------------------------------------------------------
+
+    blt::table $itk_interior \
+        0,0 $itk_component(majordial) -fill x
+
+    blt::table configure $itk_interior c* -resize both
+    blt::table configure $itk_interior r0 -resize none
+
+
+    eval itk_initialize $args
+
+    $itk_component(majordial) configure -background green
+
+    _fixSize
+    _fixOffsets
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::destructor {} {
+    configure -variable ""  ;# remove variable trace
+    after cancel [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: current ?<value>?
+#
+# Clients use this to set a new value for the dial.  Values are always
+# sorted in order along the dial.  If the value is not specified,
+# then it is created automatically based on the number of elements
+# on the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::current {value} {
+    if {"" == $value} {
+        return
+    }
+    _current [ms2rel $value]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _current ?<value>?
+#
+# Clients use this to set a new value for the dial.  Values are always
+# sorted in order along the dial.  If the value is not specified,
+# then it is created automatically based on the number of elements
+# on the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::_current {relval} {
+    if { $relval < 0.0 } {
+        set relval 0.0
+    }
+    if { $relval > 1.0 } {
+        set relval 1.0
+    }
+    set _current $relval
+
+    after cancel [itcl::code $this _draw_major_timeline]
+    after idle [itcl::code $this _draw_major_timeline]
+
+    set framenum [expr round([rel2ms $_current])]
+
+    # update the upvar variable
+    if { $_variable != "" } {
+        upvar #0 $_variable var
+        set var $framenum
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _draw_major_timeline
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::_draw_major_timeline {} {
+    set c $itk_component(majordial)
+    $c delete all
+
+    set fg $itk_option(-foreground)
+
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set p [winfo pixels $c $itk_option(-padding)]
+    set t [expr {$itk_option(-thickness)+1}]
+    # FIXME: hack to get the reduce spacing in widget
+    set y1 [expr {$h-2}]
+
+    if {"" != $_knob} {
+        set kw [image width $_knob]
+        set kh [image height $_knob]
+
+        # anchor refers to where on knob
+        # top/middle/bottom refers to where on the dial
+        # leave room for the bottom of the knob if needed
+        switch -- $itk_option(-knobposition) {
+            n@top - nw@top - ne@top {
+                set extra [expr {$t-$kh}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$y1-$extra}]
+            }
+            n@middle - nw@middle - ne@middle {
+                set extra [expr {int(ceil($kh-0.5*$t))}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$y1-$extra}]
+            }
+            n@bottom - nw@bottom - ne@bottom {
+               set y1 [expr {$y1-$kh}]
+            }
+
+            e@top - w@top - center@top -
+            e@bottom - w@bottom - center@bottom {
+                set extra [expr {int(ceil(0.5*$kh))}]
+                set y1 [expr {$y1-$extra}]
+            }
+            e@middle - w@middle - center@middle {
+                set extra [expr {int(ceil(0.5*($kh-$t)))}]
+                if {$extra < 0} {set extra 0}
+                set y1 [expr {$y1-$extra}]
+            }
+
+            s@top - sw@top - se@top -
+            s@middle - sw@middle - se@middle -
+            s@bottom - sw@bottom - se@bottom {
+                set y1 [expr {$y1-1}]
+            }
+        }
+    }
+    set y0 [expr {$y1-$t}]
+    set x0 [expr {$p+1}]
+    set x1 [expr {$w-$_vwidth-$p-4}]
+
+    # draw the background rectangle for the major time line
+    $c create rectangle $x0 $y0 $x1 $y1 \
+        -outline $itk_option(-dialoutlinecolor) \
+        -fill $itk_option(-dialfillcolor) \
+        -tags "majorbg"
+
+    # draw the optional progress bar for the major time line,
+    # from start to current
+    if {"" != $itk_option(-dialprogresscolor) } {
+        set xx1 [expr {$_current*($x1-$x0) + $x0}]
+        $c create rectangle [expr {$x0+1}] [expr {$y0+3}] $xx1 [expr {$y1-2}] \
+            -outline "" -fill $itk_option(-dialprogresscolor)
+    }
+
+    regexp {([nsew]+|center)@} $itk_option(-knobposition) match anchor
+    switch -glob -- $itk_option(-knobposition) {
+        *@top    { set kpos $y0 }
+        *@middle { set kpos [expr {int(ceil(0.5*($y1+$y0)))}] }
+        *@bottom { set kpos $y1 }
+    }
+
+    set x [expr {$_current*($x1-$x0) + $x0}]
+
+    set color $_activecolor
+    set thick 3
+    if {"" != $color} {
+        $c create line $x [expr {$y0+1}] $x $y1 -fill $color -width $thick
+    }
+
+    $c create image $x $kpos -anchor $anchor -image $_knob -tags "knob"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Called automatically whenever the widget changes size to redraw
+# all elements within it.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::_redraw {} {
+    _draw_major_timeline
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _knob <x> <y>
+#
+# Called automatically whenever the user clicks or drags on the widget
+# to select a value.  Moves the current value to the one nearest the
+# click point.  If the value actually changes, it generates a <<Value>>
+# event to notify clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::_knob {x y} {
+    set c $itk_component(majordial)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set x0 1
+    set x1 [expr {$w-$_vwidth-4}]
+    focus $itk_component(hull)
+    if {$x >= $x0 && $x <= $x1} {
+        current [rel2ms [expr double($x - $x0) / double($x1 - $x0)]]
+    }
+    event generate $itk_component(hull) <<Value>>
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _navigate <offset>
+#
+# Called automatically whenever the user presses left/right keys
+# to nudge the current value left or right by some <offset>.  If the
+# value actually changes, it generates a <<Value>> event to notify
+# clients.
+# ----------------------------------------------------------------------
+#itcl::body Rappture::Videodial1::_navigate {offset} {
+#    set index [lsearch -exact $_values $_current]
+#    if {$index >= 0} {
+#        incr index $offset
+#        if {$index >= [llength $_values]} {
+#            set index [expr {[llength $_values]-1}]
+#        } elseif {$index < 0} {
+#            set index 0
+#        }
+#
+#        set newval [lindex $_values $index]
+#        if {$newval != $_current} {
+#            current $newval
+#            _redraw
+#
+#            event generate $itk_component(hull) <<Value>>
+#        }
+#    }
+#}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _navigate <offset>
+#
+# Called automatically whenever the user presses left/right keys
+# to nudge the current value left or right by some <offset>.  If the
+# value actually changes, it generates a <<Value>> event to notify
+# clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::_navigate {offset} {
+    _current [ms2rel [expr [rel2ms ${_current}] + $offset]]
+    event generate $itk_component(hull) <<Value>>
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+#
+# Used internally to compute the overall size of the widget based
+# on the -thickness and -length options.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::_fixSize {} {
+    set h [winfo pixels $itk_component(hull) $itk_option(-thickness)]
+
+    if {"" != $_knob} {
+        set kh [image height $_knob]
+
+        switch -- $itk_option(-knobposition) {
+            n@top - nw@top - ne@top -
+            s@bottom - sw@bottom - se@bottom {
+                if {$kh > $h} { set h $kh }
+            }
+            n@middle - nw@middle - ne@middle -
+            s@middle - sw@middle - se@middle {
+                set h [expr {int(ceil(0.5*$h + $kh))}]
+            }
+            n@bottom - nw@bottom - ne@bottom -
+            s@top - sw@top - se@top {
+                set h [expr {$h + $kh}]
+            }
+            e@middle - w@middle - center@middle {
+                set h [expr {(($h > $kh) ? $h : ($kh+1))}]
+            }
+            n@middle - ne@middle - nw@middle -
+            s@middle - se@middle - sw@middle {
+                set extra [expr {int(ceil($kh-0.5*$h))}]
+                if {$extra < 0} { set extra 0 }
+                set h [expr {$h+$extra}]
+            }
+        }
+    }
+    # FIXME: hack to get the reduce spacing in widget
+    incr h -1
+
+    set w [winfo pixels $itk_component(hull) $itk_option(-length)]
+
+    # if the -valuewidth is > 0, then make room for the value
+    if {$itk_option(-valuewidth) > 0} {
+        set charw [font measure $itk_option(-font) "n"]
+        set _vwidth [expr {$itk_option(-valuewidth)*$charw}]
+        set w [expr {$w+$_vwidth+4}]
+    } else {
+        set _vwidth 0
+    }
+
+    $itk_component(majordial) configure -width $w -height $h
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue ?<name1> <name2> <op>?
+#
+# Invoked automatically whenever the -variable associated with this
+# widget is modified.  Copies the value to the current settings for
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::_fixValue {args} {
+    if {"" == $itk_option(-variable)} {
+        return
+    }
+    upvar #0 $itk_option(-variable) var
+    _current [ms2rel $var]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixOffsets
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::_fixOffsets {} {
+    if {0 == $itk_option(-offset)} {
+        return
+    }
+    set _offset_pos $itk_option(-offset)
+    set _offset_neg [expr -1*$_offset_pos]
+    bind $itk_component(hull) <KeyPress-Left> [itcl::code $this _navigate $_offset_neg]
+    bind $itk_component(hull) <KeyPress-Right> [itcl::code $this _navigate $_offset_pos]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ms2rel
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::ms2rel { value } {
+    if { ${_max} > ${_min} } {
+        return [expr {1.0 * ($value - ${_min}) / (${_max} - ${_min})}]
+    }
+    return 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: rel2ms
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial1::rel2ms { value } {
+    return [expr $value * (${_max} - ${_min}) + ${_min}]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -thickness
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::thickness {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -length
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::length {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -font
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::font {
+    _fixSize
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -valuewidth
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::valuewidth {
+    if {![string is integer $itk_option(-valuewidth)]} {
+        error "bad value \"$itk_option(-valuewidth)\": should be integer"
+    }
+    _fixSize
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -foreground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::foreground {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialoutlinecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::dialoutlinecolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialfillcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::dialfillcolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialprogresscolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::dialprogresscolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -linecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::linecolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -activelinecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::activelinecolor {
+    set val $itk_option(-activelinecolor)
+    if {[catch {$val isa ::Rappture::Spectrum} valid] == 0 && $valid} {
+        set _spectrum $val
+        set _activecolor ""
+    } elseif {[catch {winfo rgb $itk_component(hull) $val}] == 0} {
+        set _spectrum ""
+        set _activecolor $val
+    } elseif {"" != $val} {
+        error "bad value \"$val\": should be Spectrum object or color"
+    }
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -knobimage
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::knobimage {
+    if {[regexp {^image[0-9]+$} $itk_option(-knobimage)]} {
+        set _knob $itk_option(-knobimage)
+    } elseif {"" != $itk_option(-knobimage)} {
+        set _knob [Rappture::icon $itk_option(-knobimage)]
+    } else {
+        set _knob ""
+    }
+    _fixSize
+
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -knobposition
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::knobposition {
+    if {![regexp {^([nsew]+|center)@(top|middle|bottom)$} $itk_option(-knobposition)]} {
+        error "bad value \"$itk_option(-knobposition)\": should be anchor@top|middle|bottom"
+    }
+    _fixSize
+
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -padding
+# This adds padding on left/right side of dial background.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::padding {
+    if {[catch {winfo pixels $itk_component(hull) $itk_option(-padding)}]} {
+        error "bad value \"$itk_option(-padding)\": should be size in pixels"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -valuepadding
+# This shifts min/max limits in by a fraction of the overall size.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::valuepadding {
+    if {![string is double $itk_option(-valuepadding)]
+          || $itk_option(-valuepadding) < 0} {
+        error "bad value \"$itk_option(-valuepadding)\": should be >= 0.0"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -variable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::variable {
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace remove variable var write [itcl::code $this _fixValue]
+    }
+
+    set _variable $itk_option(-variable)
+
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace add variable var write [itcl::code $this _fixValue]
+
+        # sync to the current value of this variable
+        if {[info exists var]} {
+            _fixValue
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -offset
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::offset {
+    if {![string is double $itk_option(-offset)]} {
+        error "bad value \"$itk_option(-offset)\": should be >= 0.0"
+    }
+    _fixOffsets
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -min
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::min {
+    if {![string is integer $itk_option(-min)]} {
+        error "bad value \"$itk_option(-min)\": should be an integer"
+    }
+    if {$itk_option(-min) < 0} {
+        error "bad value \"$itk_option(-min)\": should be >= 0"
+    }
+    set _min $itk_option(-min)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -max
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial1::max {
+    if {![string is integer $itk_option(-max)]} {
+        error "bad value \"$itk_option(-max)\": should be an integer"
+    }
+    if {$itk_option(-max) < 0} {
+        error "bad value \"$itk_option(-max)\": should be >= 0"
+    }
+    set _max $itk_option(-max)
+}
Index: /tags/1.6.0/gui/scripts/videodial2.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/videodial2.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/videodial2.tcl	(revision 6168)
@@ -0,0 +1,1343 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: Videodial2 - selector, like the dial on a flow
+#
+#  This widget looks like the dial on an old-fashioned car flow.
+#  It draws a series of values along an axis, and allows a selector
+#  to move back and forth to select the values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Videodial2.thickness 10 widgetDefault
+option add *Videodial2.padding 0 widgetDefault
+option add *Videodial2.foreground black widgetDefault
+option add *Videodial2.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Videodial2 {
+    inherit itk::Widget
+
+    itk_option define -min min Min 0
+    itk_option define -max max Max 1
+    itk_option define -minortick minortick Minortick 1
+    itk_option define -majortick majortick Majortick 5
+    itk_option define -variable variable Variable ""
+    itk_option define -offset offset Offset 1
+
+    itk_option define -thickness thickness Thickness 0
+    itk_option define -padding padding Padding 0
+
+    itk_option define -dialoutlinecolor dialOutlineColor Color "black"
+    itk_option define -dialfillcolor dialFillColor Color "white"
+    itk_option define -foreground foreground Foreground "black"
+
+    itk_option define -font font Font ""
+
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method current {value}
+    public method clear {}
+    public method mark {args}
+    public method bball {}
+    public method loop {action args}
+
+    protected method _bindings {type args}
+    protected method _redraw {args}
+    protected method _marker {tag action x y}
+    protected method _setmark {type args}
+    protected method _move {action x y}
+    protected method _navigate {offset}
+    protected method _fixSize {}
+    protected method _fixValue {args}
+    protected method _fixOffsets {}
+
+    private method _calculateDialDimensions {}
+    private method _calculateDisplayRange {args}
+    private method _drawDial {disp_min disp_max}
+    private method _getFramenumFromId {id}
+    private method _nearestFrameMarker {x y}
+    private method _current {value}
+    private method _see {item}
+    private method _offsetx {x}
+    private method ms2rel {value}
+    private method rel2ms {value}
+    private method _goToFrame {framenum}
+
+    private common _click             ;# x,y point where user clicked
+    private common _marks             ;# list of marks
+    private common _dd                ;# holds the dimensions of the dial
+    private variable _values ""       ;# list of all values on the dial
+    private variable _val2label       ;# maps value => string label(s)
+    private variable _current 0       ;# current value (where pointer is)
+    private variable _variable ""     ;# variable associated with -variable
+    private variable _offset_pos 1    ;#
+    private variable _offset_neg -1   ;#
+    private variable _imspace 10      ;# pixels between intermediate marks
+    private variable _min 0
+    private variable _max 1
+    private variable _minortick 1
+    private variable _majortick 5
+    private variable _lockdial ""
+    private variable _displayMin 0
+    private variable _displayMax 0
+}
+
+itk::usual Videodial2 {
+    keep -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::constructor {args} {
+
+    # bind $itk_component(hull) <<Frame>> [itcl::code $this _updateCurrent]
+
+    # ----------------------------------------------------------------------
+    # controls for the minor timeline.
+    # ----------------------------------------------------------------------
+    itk_component add minordial {
+        canvas $itk_interior.minordial -background blue
+    }
+
+
+    bind $itk_component(minordial) <Configure> [itcl::code $this _redraw]
+
+    _bindings timeline
+
+    # ----------------------------------------------------------------------
+    # place controls in widget.
+    # ----------------------------------------------------------------------
+
+    blt::table $itk_interior \
+        0,0 $itk_component(minordial) -fill x
+
+    blt::table configure $itk_interior c* -resize both
+    blt::table configure $itk_interior r0 -resize none
+
+
+    eval itk_initialize $args
+
+    $itk_component(minordial) configure -background cyan
+
+    _fixOffsets
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::destructor {} {
+    configure -variable ""  ;# remove variable trace
+    after cancel [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: current ?<value>?
+#
+# Clients use this to set a new value for the dial.  Values are always
+# sorted in order along the dial.  If the value is not specified,
+# then it is created automatically based on the number of elements
+# on the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::current {value} {
+    if {"" == $value} {
+        return
+    }
+
+    if {$value < ${_min}} {
+        set value ${_min}
+    }
+
+    if {$value > ${_max}} {
+        set value ${_max}
+    }
+
+    _current [ms2rel $value]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _current ?<value>?
+#
+# Clients use this to set a new value for the dial.  Values are always
+# sorted in order along the dial.  If the value is not specified,
+# then it is created automatically based on the number of elements
+# on the dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_current {relval} {
+
+    if {[string is double $relval] == 0} {
+        error "bad value \"$relval\": expected relval to be a double"
+    }
+    if {${_current} == $relval} {
+        # nothing to do
+        return
+    }
+
+    if { $relval < 0.0 } {
+        set relval 0.0
+    }
+    if { $relval > 1.0 } {
+        set relval 1.0
+    }
+
+    set _current $relval
+    set framenum [expr round([rel2ms $_current])]
+
+    set updated 0
+    if {[llength ${_lockdial}] != 0} {
+        # the dial is "locked" this means we don't center the dial
+        # on the current value. we only move the dial if the
+        # current value is less than or greater than the marks alredy
+        # shown on the dial.
+        if {[expr ${_displayMin}+${_majortick}] >= $framenum} {
+            set newdmin [expr $framenum-${_majortick}]
+            foreach {dmin dmax} [_calculateDisplayRange -min $newdmin] break
+            incr updated
+        } elseif {[expr ${_displayMax}-${_majortick}] <= $framenum} {
+            set newdmax [expr $framenum+${_majortick}]
+            foreach {dmin dmax} [_calculateDisplayRange -max $newdmax] break
+            incr updated
+        }
+    } else {
+        # center the current marker
+        foreach {dmin dmax} [_calculateDisplayRange] break
+        incr updated
+    }
+
+    if {$updated == 1} {
+        _drawDial $dmin $dmax
+    }
+
+    after idle [_setmark currentmark $framenum]
+
+    # update the upvar variable
+    if { $_variable != "" } {
+        upvar #0 $_variable var
+        set var $framenum
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _bindings <type> ?args?
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_bindings {type args} {
+    set c $itk_component(minordial)
+    switch -- $type {
+        "marker" {
+            set tag [lindex $args 0]
+            bind $c <ButtonPress-1> [itcl::code $this _marker $tag click %x %y]
+            bind $c <B1-Motion> [itcl::code $this _marker $tag drag %x %y]
+            bind $c <ButtonRelease-1> [itcl::code $this _marker $tag release %x %y]
+            $c configure -cursor sb_h_double_arrow
+        }
+        "timeline" {
+            # bind $c <ButtonPress-1> [itcl::code $this _move click %x %y]
+            # bind $c <B1-Motion> [itcl::code $this _move drag %x %y]
+            # bind $c <ButtonRelease-1> [itcl::code $this _move release %x %y]
+            bind $c <ButtonPress-1> { }
+            bind $c <B1-Motion> { }
+            bind $c <ButtonRelease-1> { }
+            $c configure -cursor ""
+        }
+        "toolmark" {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be _bindings toolmark \[enter|leave\] <tag>"
+            }
+
+            foreach {mode tag} $args break
+
+            switch -- $mode {
+                "enter" {
+                    #$c create rectangle [$c bbox $tag] \
+                        -outline red \
+                        -tags "highlight"
+                    bind $c <ButtonPress-1> [itcl::code $this _goToFrame $_marks($tag)]
+                }
+                "leave" {
+                    #$c delete "highlight"
+                    _bindings timeline
+                }
+                default {
+                    error "bad argument \"$mode\": should be enter or leave"
+                }
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: mark <property> <args>
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::mark {property args} {
+    set retval 0
+
+    switch -- $property {
+        add {
+            set retval [eval _setmark $args]
+        }
+        remove {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"mark remove <type>\""
+            }
+            set type [lindex $args 0]
+            if {[info exists _marks($type)]} {
+                $itk_component(minordial) delete $type
+                array unset _marks $type
+            }
+        }
+        position {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"mark position <type>\""
+            }
+            set type [lindex $args 0]
+            if {[info exists _marks($type)]} {
+                return $_marks($type)
+            }
+            set retval [expr ${_min}-1]
+        }
+        default {
+            error "bad value \"$property\": should be one of add, remove, position"
+        }
+    }
+
+    return $retval
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _getFramenumFromId <id>
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_getFramenumFromId {id} {
+    set where 0
+
+    # find the frame# tag to associate with the marker with
+    if {[regexp {frame([0-9]+)} $id] == 0} {
+        foreach tags [$c gettags $id] {
+            if {"" != [set tmp [lsearch -inline -regexp $tags {frame[0-9]+}]]} {
+                set where $tmp
+                break
+            }
+        }
+    } else {
+        set where $id
+    }
+    # store the frame number in where
+    regexp {frame([0-9]+)} $where match where
+
+    # restrict <where> to valid frames between min and max
+    if {$where < ${_min}} {
+        set where ${_min}
+    }
+    if {$where > ${_max}} {
+        set where ${_max}
+    }
+
+    return $where
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _setmark <type> ?[-xcoord|-tag]? <where>
+#
+# Clients use this to add a mark to the timeline
+#   type can be any of loopstart, loopend, particle, measure, currentmark
+#   where is interpreted based on the preceeding flag if available.
+#       in the default case, <where> is interpreted as a frame number
+#       or "current". if the -xcoord flag is provided, where is
+#       interpreted as the x coordinate of where to center the marker.
+#       -xcoord should only be used for temporary placement of a
+#       marker. when -xcoord is used, the marker is placed exactly at
+#       the provided x coordinate, and is not associated with any
+#       frame. It's purpose is mainly for <B1-Motion> events.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_setmark {type args} {
+
+    set c $itk_component(minordial)
+
+    set cx0 0
+    set cy0 0
+    set cx1 0
+    set cy1 0
+    foreach {cx0 cy0 cx1 cy1} [$c bbox "imbox"] break
+
+    # get coords of where to place the marker
+    set frx0 0
+    set fry0 0
+    set frx1 0
+    set fry1 0
+
+    set where ""
+    set largs [llength $args]
+    if {$largs == 1} {
+        set where [lindex $args 0]
+        if {[string compare "current" $where] == 0} {
+            set where [expr round([rel2ms ${_current}])]
+        } elseif {[string is integer $where] == 0} {
+            error "bad value \"$where\": while trying to place marker \"$type\": <where> should be an integer value"
+        }
+
+        # restrict <where> to valid frames between min and max
+        if {$where < ${_min}} {
+            set where ${_min}
+        }
+        if {$where > ${_max}} {
+            set where ${_max}
+        }
+
+        set coords [$c coords "frame$where"]
+        if {![llength $coords]} {
+            # frame marker does not exist
+            # estimate where to put the marker
+            # use frame0 marker as a x=0 point
+            foreach {frx0 fry0 frx1 fry1} [$c coords "frame0"] break
+            set frx0 [expr {$frx0 + ((1.0*$where/${_minortick})*${_imspace})}]
+        } else {
+            foreach {frx0 fry0 frx1 fry1} $coords break
+        }
+        # where already contains the frame number
+    } elseif {$largs == 2} {
+        set flag [lindex $args 0]
+        switch -- $flag {
+            "-xcoord" {
+                set frx0 [lindex $args 1]
+                # where is not set for the -xcoord flag
+            }
+            "-tag" {
+                set id [lindex $args 1]
+                set where [_getFramenumFromId $id]
+                foreach {frx0 fry0 frx1 fry1} [$c coords frame$where] break
+            }
+            default {
+                error "bad value \"$flag\": should be -xcoord or -tag"
+            }
+        }
+        if {[string is double $frx0] == 0} {
+            error "bad value \"$frx0\": <where> should be a double value"
+        }
+    } else {
+        error "wrong # args: should be \"mark <type> ?-xcoord? <where>\""
+    }
+
+    # add/remove the marker
+
+    switch -glob -- $type {
+        "loopstart" {
+            # add start marker
+
+            if {($where >= ${_displayMin}) && ($where < ${_displayMax})} {
+                set smx0 $frx0                              ;# loopstart marker x0
+                set smy0 $cy0                               ;# loopstart marker y0
+
+                # polygon's outline adds a border to only one
+                # side of the object? so we have weird +1 in
+                # the triangle base in loopstart marker
+
+                # marker stem is 3 pixels thick
+                set smx1 [expr {$smx0+1}]                   ;# triangle top x
+                set smy1 [expr {$smy0-10}]                  ;# triangle top y
+                set smx2 $smx1                              ;# stem bottom right x
+                set smy2 $cy1                               ;# stem bottom right y
+                set smx3 [expr {$smx0-1}]                   ;# stem bottom left x
+                set smy3 $smy2                              ;# stem bottom left y
+                set smx4 $smx3                              ;# stem middle left x
+                set smy4 $smy0                              ;# stem middle left y
+                set smx5 [expr {$smx0-10+1}]                ;# triangle bottom left x
+                set smy5 $smy0                              ;# triangle bottom left y
+
+                set tag $type
+                $c delete $tag
+                $c create polygon \
+                    $smx1 $smy1 \
+                    $smx2 $smy2 \
+                    $smx3 $smy3 \
+                    $smx4 $smy4 \
+                    $smx5 $smy5 \
+                    -outline black -fill black -tags [list $tag dialval]
+
+                $c bind $tag <Enter> [itcl::code $this _bindings marker $tag]
+                $c bind $tag <Leave> [itcl::code $this _bindings timeline]
+            }
+
+            if {[string compare "" $where] != 0} {
+                set _marks($type) $where
+
+                # make sure loopstart marker is before loopend marker
+                if {[info exists _marks(loopend)]} {
+                    set endFrNum $_marks(loopend)
+                    if {$endFrNum < $where} {
+                        _setmark loopend -tag frame[expr $where+1]
+                    }
+                }
+            }
+
+        }
+        "loopend" {
+            # add loopend marker
+
+            if {($where >= ${_displayMin}) && ($where < ${_displayMax})} {
+                set emx0 $frx0                              ;# loopend marker x0
+                set emy0 $cy0                               ;# loopend marker y0
+
+                set emx1 [expr {$emx0-1}]                   ;# triangle top x
+                set emy1 [expr {$emy0-10}]                  ;# triangle top y
+                set emx2 $emx1                              ;# stem bottom left x
+                set emy2 $cy1                               ;# stem bottom left y
+                set emx3 [expr {$emx0+1}]                   ;# stem bottom right x
+                set emy3 $emy2                              ;# stem bottom right y
+                set emx4 $emx3                              ;# stem middle right x
+                set emy4 $emy0                              ;# stem middle right  y
+                set emx5 [expr {$emx0+10-1}]                ;# triangle bottom right x
+                set emy5 $emy0                              ;# triangle bottom right y
+
+                set tag $type
+                $c delete $tag
+                $c create polygon \
+                    $emx1 $emy1 \
+                    $emx2 $emy2 \
+                    $emx3 $emy3 \
+                    $emx4 $emy4 \
+                    $emx5 $emy5 \
+                    -outline black -fill black -tags [list $tag dialval]
+
+                $c bind $tag <Enter> [itcl::code $this _bindings marker $tag]
+                $c bind $tag <Leave> [itcl::code $this _bindings timeline]
+            }
+
+            if {[string compare "" $where] != 0} {
+                set _marks($type) $where
+
+                # make sure loopend marker is after loopstart marker
+                if {[info exists _marks(loopstart)]} {
+                    set startFrNum $_marks(loopstart)
+                    if {$startFrNum > $where} {
+                        _setmark loopstart -tag frame[expr $where-1]
+                    }
+                }
+            }
+        }
+        "particle*" {
+            if {($where >= ${_displayMin}) && ($where < ${_displayMax})} {
+                set radius 3
+                set pmx0 $frx0
+                set pmy0 [expr {$cy1+5}]
+                set coords [list [expr $pmx0-$radius] [expr $pmy0-$radius] \
+                                 [expr $pmx0+$radius] [expr $pmy0+$radius]]
+
+                set tag $type
+                $c delete $tag
+                $c create oval $coords \
+                    -fill green \
+                    -outline black \
+                    -width 1 \
+                    -tags [list $tag dialval]
+
+                $c bind $tag <Enter> [itcl::code $this _bindings toolmark enter $tag]
+                $c bind $tag <Leave> [itcl::code $this _bindings toolmark leave $tag]
+            }
+
+            if {[string compare "" $where] != 0} {
+                set _marks($type) $where
+            }
+        }
+        "measure*" {
+            if {($where >= ${_displayMin}) && ($where < ${_displayMax})} {
+                set radius 3
+                set amx0 $frx0
+                set amy0 [expr {$cy1+15}]
+                set coords [list [expr $amx0-$radius] [expr $amy0-$radius] \
+                                 [expr $amx0+$radius] [expr $amy0+$radius]]
+
+                set tag $type
+                $c delete $tag
+                $c create line $coords \
+                    -fill red \
+                    -width 3  \
+                    -tags [list $tag dialval]
+
+                $c bind $tag <Enter> [itcl::code $this _bindings toolmark enter $tag]
+                $c bind $tag <Leave> [itcl::code $this _bindings toolmark leave $tag]
+            }
+
+            if {[string compare "" $where] != 0} {
+                set _marks($type) $where
+            }
+        }
+        "currentmark" {
+
+            if {($where >= ${_displayMin}) && ($where < ${_displayMax})} {
+                set cmx0 $frx0                              ;# current marker x0
+                set cmy0 $cy0                               ;# current marker y0
+
+                set cmx1 [expr {$cmx0+5}]                   ;# lower right diagonal edge x
+                set cmy1 [expr {$cmy0-5}]                   ;# lower right diagonal edge y
+                set cmx2 $cmx1                              ;# right top x
+                set cmy2 [expr {$cmy1-5}]                   ;# right top y
+                set cmx3 [expr {$cmx0-5}]                   ;# left top x
+                set cmy3 $cmy2                              ;# left top y
+                set cmx4 $cmx3                              ;# lower left diagonal edge x
+                set cmy4 $cmy1                              ;# lower left diagonal edge y
+
+                set tag $type
+                $c delete $tag
+                $c create polygon \
+                    $cmx0 $cmy0 \
+                    $cmx1 $cmy1 \
+                    $cmx2 $cmy2 \
+                    $cmx3 $cmy3 \
+                    $cmx4 $cmy4 \
+                    -outline black \
+                    -fill red \
+                    -tags [list $tag dialval]
+                $c create line $cmx0 $cmy0 $cmx0 $cy1 \
+                    -fill red \
+                    -tags [list $tag dialval]
+
+                $c bind $tag <Enter> [itcl::code $this _bindings marker $tag]
+                $c bind $tag <Leave> [itcl::code $this _bindings timeline]
+            }
+
+            if {[string compare "" $where] != 0} {
+                set _marks($type) $where
+            }
+        }
+        default {
+            error "bad value \"$type\": should be \"loopstart\" or \"loopend\""
+        }
+    }
+    return
+}
+
+# ----------------------------------------------------------------------
+# USAGE: bball
+#   debug function to print out the bounding box information for
+#   minor dial
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::bball {} {
+    set c $itk_component(minordial)
+    foreach item [$c find all] {
+        foreach {x0 y0 x1 y1} [$c bbox $item] break
+        if {! [info exists y1]} continue
+        puts stderr "$item : [expr $y1-$y0]: $y0 $y1"
+        lappend q $y0 $y1
+    }
+    set q [lsort -real $q]
+    puts stderr "q [lindex $q 0] [lindex $q end]"
+    puts stderr "height [winfo height $c]"
+    puts stderr "bbox all [$c bbox all]"
+    puts stderr "parent height [winfo height [winfo parent $c]]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: loop
+#   loop between <start> <end> - setup looping between frames <start> and <end>
+#   loop disable - disable looping
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::loop {action args} {
+    switch -- $action {
+        "between" {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be loop between <start> <end>"
+            }
+            foreach {startframe endframe} $args break
+            mark add loopstart $startframe
+            mark add loopend $endframe
+            lappend _lockdial "loop"
+        }
+        "disable" {
+            if {[llength $args] != 0} {
+                error "wrong # args: should be loop disable"
+            }
+            mark remove loopstart
+            mark remove loopend
+            set idx [lsearch -exact ${_lockdial} "loop"]
+            set _lockdial [lreplace ${_lockdial} $idx $idx]
+        }
+        default {
+            error "bad value \"$action\": should be \"between\" or \"disable\""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _calculateDisplayRange
+#   calculate the minimum and maximum values to display on the dial
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_calculateDisplayRange {args} {
+
+    Rappture::getopts args params {
+        value -min 0
+        value -max 0
+    }
+
+    set disp_min $params(-min)
+    set disp_max $params(-max)
+
+    if {($disp_min == 0) && ($disp_max == 0)} {
+        # calculate the display min and max by
+        # centering the current value on the dial
+        set framenum [expr round([rel2ms ${_current}])]
+        set disp_min [expr ($framenum-$_dd(ni))]
+        set disp_max [expr ($framenum+$_dd(ni))]
+    } elseif {($disp_min != 0) && ($disp_max == 0)} {
+        # user supplied disp_min value
+        # calculate disp_max
+        set disp_max [expr round($disp_min+($_dd(ni)*2.0))]
+    } elseif {($disp_min == 0) && ($disp_max != 0)} {
+        # user supplied disp_max value
+        # calculate disp_min
+        set disp_min [expr round($disp_max-($_dd(ni)*2.0))]
+    }
+
+    # deal with edge cases
+
+    if {($disp_min < ${_min})} {
+        # don't display marks less than ${_min}
+        set disp_min ${_min}
+        set disp_max [expr round(${_min}+($_dd(ni)*2.0))]
+        if {$disp_max > ${_max}} {
+            set disp_max ${_max}
+        }
+    }
+
+    if {($disp_max > ${_max})} {
+        # don't display marks greater than ${_max}
+        set disp_min [expr round(${_max}-($_dd(ni)*2.0))]
+        if {$disp_min < ${_min}} {
+            set disp_min ${_min}
+        }
+        set disp_max ${_max}
+    }
+
+    return [list $disp_min $disp_max]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _calculateDialDimensions
+#   calculate dimensions used to draw the dial
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_calculateDialDimensions {} {
+    set c $itk_component(minordial)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set p [winfo pixels $c $itk_option(-padding)]
+    set t [expr {$itk_option(-thickness)+1}]
+    set y1 [expr {$h-1}]
+    set y0 [expr {$y1-$t}]
+    set x0 [expr {$p+1}]
+    set x1 [expr {$w-$p-4}]
+
+
+    # add intermediate marks between markers
+    set imw 1.0                                 ;# intermediate mark width
+
+    set imsh [expr {$t/3.0}]                    ;# intermediate mark short height
+    set imsy0 [expr {$y0+(($t-$imsh)/2.0)}]     ;# precalc'd imark short y0 coord
+    set imsy1 [expr {$imsy0+$imsh}]             ;# precalc'd imark short y1 coord
+
+    set imlh [expr {$t*2.0/3.0}]                ;# intermediate mark long height
+    set imly0 [expr {$y0+(($t-$imlh)/2.0)}]     ;# precalc'd imark long y0 coord
+    set imly1 [expr {$imly0+$imlh}]             ;# precalc'd imark long y1 coord
+
+    set imty [expr {$y0-5}]                     ;# height of marker value
+
+    set x [expr ($x1-$x0)/2.0]
+    set ni [expr int(($x-$x0)/${_imspace})]
+
+    set _dd(x0) $x0
+    set _dd(y0) $y0
+    set _dd(x1) $x1
+    set _dd(y1) $y1
+    set _dd(ni) $ni
+    set _dd(imly0) $imly0
+    set _dd(imly1) $imly1
+    set _dd(imw) $imw
+    set _dd(imty) $imty
+    set _dd(imsy0) $imsy0
+    set _dd(imsy1) $imsy1
+
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#   calculate dimensions, display range, and draw the dial, again
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_redraw {args} {
+
+    _calculateDialDimensions
+
+    foreach {disp_min disp_max} [_calculateDisplayRange] break
+
+    set c $itk_component(minordial)
+    $c delete all
+
+    # draw the background rectangle for the minor time line
+    $c create rectangle $_dd(x0) $_dd(y0) $_dd(x1) $_dd(y1) \
+        -outline $itk_option(-dialoutlinecolor) \
+        -fill $itk_option(-dialfillcolor) \
+        -tags "imbox"
+
+    _drawDial $disp_min $disp_max
+
+    # calculate the height of the intermediate tick marks
+    # and frame numbers on our canvas, resize the imbox
+    # to include both of them.
+    set box [$c bbox "all"]
+    if {![llength $box]} {
+        set box [list 0 0 0 0]
+    }
+    $c coords "imbox" $box
+
+    # add an invisible box 20 pixels above and below imbox
+    # to keep the canvas from changing sizes when the we add
+    # particle, loopstart, loopend, and line markers
+    foreach {x0 y0 x1 y1} $box break
+    $c create rectangle $x0 [expr $y0-20] $x1 [expr $y1+20] \
+        -outline "" \
+        -fill "" \
+        -tags "markerbox"
+
+    # re-add any marks that the user previously specified
+    # do it again because we changed the size of imbox
+    foreach n [array names _marks] {
+        if {($_marks($n) > ${_displayMin}) && ($_marks($n) < ${_displayMax})} {
+            _setmark $n $_marks($n)
+        }
+    }
+
+    _fixSize
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _drawDial
+#   draw the dial
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_drawDial {dmin dmax} {
+    set c $itk_component(minordial)
+    $c delete dialval
+
+    set _displayMin [expr int($dmin)]
+    set _displayMax [expr int($dmax)]
+
+    set imx [expr $_dd(x0)+5]
+    for {set i ${_displayMin}} {$i <= ${_displayMax}} {incr i} {
+        if {($i%${_majortick}) == 0} {
+            # draw major tick
+            $c create line $imx $_dd(imly0) $imx $_dd(imly1) \
+                -fill red \
+                -width $_dd(imw) \
+                -tags [list dialval longmark imark "frame$i"]
+
+            $c create text $imx $_dd(imty) \
+                -anchor center \
+                -text $i \
+                -font $itk_option(-font) \
+                -tags [list dialval frame$i frame$i-text]
+
+            set imx [expr $imx+${_imspace}]
+        } elseif {($i%${_minortick}) == 0 } {
+            # draw minor tick
+            $c create line $imx $_dd(imsy0) $imx $_dd(imsy1) \
+                -fill blue \
+                -width $_dd(imw) \
+                -tags [list dialval shortmark imark "frame$i"]
+
+            set imx [expr $imx+${_imspace}]
+        }
+    }
+
+    if {(${_displayMin}%${_majortick}) == 0} {
+        # first tick is numbered, delete the text if
+        # it shows up outside of our desired imbox
+        foreach {dmx0 dmy0 dmx1 dmy1} [$c bbox frame${_displayMin}-text] break
+        # need to check for if dmx0 exists because there
+        # are some cases when the widget is first being
+        # created where _calculateDisplayRange gives
+        # back bad values, dmin > dmax.
+        if {[info exists dmx0] && ($dmx0 < $_dd(x0))} {
+            $c delete frame${_displayMin}-text
+        }
+    }
+    if {(${_displayMax}%${_majortick}) == 0} {
+        # last tick is numbered, delete the text if
+        # it shows up outside of our desired imbox
+        foreach {dmx0 dmy0 dmx1 dmy1} [$c bbox frame${_displayMax}-text] break
+        # need to check for if dmx1 exists because there
+        # are some cases when the widget is first being
+        # created where _calculateDisplayRange gives
+        # back bad values, dmin > dmax.
+        if {[info exists dmx1] && ($dmx1 > $_dd(x1))} {
+            $c delete frame${_displayMax}-text
+        }
+    }
+
+    # add any marks that the user previously specified
+    foreach n [array names _marks] {
+        if {($_marks($n) > ${_displayMin}) && ($_marks($n) < ${_displayMax})} {
+            _setmark $n $_marks($n)
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixSize
+#
+# Used internally to compute the height of the minor dial based
+# on the items placed on the canvas
+#
+# FIXME: instead of calling this in the mark command, figure out how to
+#   make the canvas the correct size to start with
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_fixSize {} {
+    # resize the height of the minor timeline canvas
+    # to include everything we know about
+
+    set c $itk_component(minordial)
+
+    set box [$c bbox "all"]
+    if {![llength $box]} {
+        set box [list 0 0 0 0]
+    }
+
+    foreach {x0 y0 x1 y1} $box break
+    set h [expr $y1-$y0]
+
+    $c configure -height $h -scrollregion $box -xscrollincrement 1p
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _goToFrame <framenum>
+#
+# lock the dial and go to frame <framenum>
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_goToFrame {framenum} {
+    lappend _lockdial "_goToFrame"
+    current $framenum
+    event generate $itk_component(hull) <<Value>>
+    set idx [lsearch -exact ${_lockdial} "_goToFrame"]
+    set _lockdial [lreplace ${_lockdial} $idx $idx]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _offsetx <x>
+#
+# Calculate an x coordinate that has been offsetted by a scrolled canvas
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_offsetx {x} {
+    set c $itk_component(minordial)
+    set w [lindex [$c cget -scrollregion] 2]
+    set x0 [lindex [$c xview] 0]
+    set offset [expr {$w*$x0}]
+    set x [expr {$x+$offset}]
+    return $x
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _nearestFrameMarker <x> <y>
+#
+# Called automatically whenever the user clicks or drags on a marker
+# widget.  Moves the selected marker to the next nearest tick mark.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_nearestFrameMarker {x y} {
+
+    set c $itk_component(minordial)
+
+    foreach {junk y0 junk y1} [$c bbox "imark"] break
+    set id ""
+    # FIXME:
+    # the amount added to _imspace should be 1
+    # but for some reason the dial is slightly shifted
+    # on the canvas by 2 or 3 pixels. so we have to
+    # add a larger value like 3 to _imspace to find
+    # the next frame marker
+    set x0 [expr {$x-round((${_imspace}+3)/2.0)}]
+    set x1 [expr {$x+round((${_imspace}+3)/2.0)}]
+
+    #$c delete scrap
+    #$c create rectangle $x0 $y0 $x1 $y1 \
+        -outline green -tags "scrap"
+
+    foreach item [$c find enclosed $x0 $y0 $x1 $y1] {
+        set itemtags [$c gettags $item]
+
+        foreach {x00 junk x11 junk} [$c bbox $item] break
+
+        if {[lsearch -exact $itemtags "imark"] != -1} {
+            set id [lsearch -inline -regexp $itemtags {frame[0-9]}]
+            break
+        }
+    }
+    if {[string compare "" $id] == 0} {
+        # something went wrong
+        # we should have found an imark with
+        # an associated "frame#" tag to snap to
+        # bailout
+        #error "could not find an intermediate mark to snap marker to"
+        puts stderr "could not find an intermediate mark to snap marker to"
+    }
+
+    return $id
+
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _marker <tag> click <x> <y>
+#        _marker <tag> drag <x> <y>
+#        _marker <tag> release <x> <y>
+#
+# Called automatically whenever the user clicks or drags on a marker
+# widget.  Moves the selected marker to the next nearest tick mark.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_marker {tag action x y} {
+    set c $itk_component(minordial)
+    switch $action {
+        "click" {
+            if {"currentmark" == $tag} {
+                focus $itk_component(hull)
+                lappend _lockdial "currentmark"
+            }
+        }
+        "drag" {
+            set x [_offsetx $x]
+
+            # as the marker passes over frame marks, snap to the closest frame mark
+            set id [_nearestFrameMarker $x $y]
+            if {"" == $id} {
+                return
+            }
+
+            if {"currentmark" == $tag} {
+                # update the current frame shown on the screen
+                # this doesn't quite work yet, i think because
+                # the seek requests are buffered until the gui
+                # is idle
+                set newfn [_getFramenumFromId $id]
+                set oldfn [expr round([rel2ms ${_current}])]
+                if {$newfn != $oldfn} {
+                    _goToFrame $newfn
+                }
+            } else {
+                _setmark $tag -tag $id
+            }
+        }
+        "release" {
+
+            _marker $tag drag $x $y
+
+            if {"currentmark" == $tag} {
+                set idx [lsearch -exact ${_lockdial} "currentmark"]
+                set _lockdial [lreplace ${_lockdial} $idx $idx]
+            }
+
+            # take care of cases where the mouse leaves the marker's boundries
+            # before the button-1 has been released. we check if the last
+            # coord was within the bounds of the marker. if not, we manually
+            # generate the "Leave" event.
+            set leave 1
+            set x [_offsetx $x]
+            foreach item [$c find overlapping $x $y $x $y] {
+                if {[lsearch -exact [$c gettags $item] $tag] != -1} {
+                    set leave 0
+                }
+            }
+            if {$leave == 1} {
+                # FIXME:
+                # i want to generate the event rather than
+                # calling the function myself...
+                # event generate $c <Leave>
+                _bindings timeline
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _move click <x> <y>
+#        _move drag <x> <y>
+#        _move release <x> <y>
+#
+# Scroll the timeline canvas based on user's b1 click, drag, and release
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_move {action x y} {
+    switch $action {
+        "click" {
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "drag" {
+            set c $itk_component(minordial)
+            set dist [expr $_click(x)-$x]
+            #$c xview scroll $dist "units"
+            set _click(x) $x
+            set _click(y) $y
+
+
+            #set disp_min
+            #set disp_max
+            #_redraw $disp_min $disp_max
+        }
+        "release" {
+            _move drag $x $y
+            catch {unset _click}
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _see <item>
+#
+# from http://tcl.sourceforge.net/faqs/tk/#canvas/see
+# "see" method alternative for canvas
+# Aligns the named item as best it can in the middle of the screen
+#
+# item - a canvas tagOrId
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_see {item} {
+    set c $itk_component(minordial)
+    set box [$c bbox $item]
+    if {![llength $box]} return
+    ## always properly set -scrollregion
+    foreach {x y x1 y1}     $box \
+            {top btm}       [$c yview] \
+            {left right}    [$c xview] \
+            {p q xmax ymax} [$c cget -scrollregion] {
+        set xpos [expr {(($x1+$x)/2.0)/$xmax - ($right-$left)/2.0}]
+        #set ypos [expr {(($y1+$y)/2.0)/$ymax - ($btm-$top)/2.0}]
+    }
+    $c xview moveto $xpos
+    #$c yview moveto $ypos
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _navigate <offset>
+#
+# Called automatically whenever the user presses left/right keys
+# to nudge the current value left or right by some <offset>.  If the
+# value actually changes, it generates a <<Value>> event to notify
+# clients.
+# ----------------------------------------------------------------------
+#itcl::body Rappture::Videodial2::_navigate {offset} {
+#    set index [lsearch -exact $_values $_current]
+#    if {$index >= 0} {
+#        incr index $offset
+#        if {$index >= [llength $_values]} {
+#            set index [expr {[llength $_values]-1}]
+#        } elseif {$index < 0} {
+#            set index 0
+#        }
+#
+#        set newval [lindex $_values $index]
+#        if {$newval != $_current} {
+#            current $newval
+#            _redraw
+#
+#            event generate $itk_component(hull) <<Value>>
+#        }
+#    }
+#}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _navigate <offset>
+#
+# Called automatically whenever the user presses left/right keys
+# to nudge the current value left or right by some <offset>.  If the
+# value actually changes, it generates a <<Value>> event to notify
+# clients.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_navigate {offset} {
+    _goToFrame [expr [rel2ms ${_current}] + $offset]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue ?<name1> <name2> <op>?
+#
+# Invoked automatically whenever the -variable associated with this
+# widget is modified.  Copies the value to the current settings for
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_fixValue {args} {
+    if {"" == $itk_option(-variable)} {
+        return
+    }
+    upvar #0 $itk_option(-variable) var
+    _current [ms2rel $var]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixOffsets
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::_fixOffsets {} {
+    if {0 == $itk_option(-offset)} {
+        return
+    }
+    set _offset_pos $itk_option(-offset)
+    set _offset_neg [expr -1*$_offset_pos]
+    bind $itk_component(hull) <KeyPress-Left> [itcl::code $this _navigate $_offset_neg]
+    bind $itk_component(hull) <KeyPress-Right> [itcl::code $this _navigate $_offset_pos]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ms2rel
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::ms2rel { value } {
+    if { ${_max} > ${_min} } {
+        return [expr {1.0 * ($value - ${_min}) / (${_max} - ${_min})}]
+    }
+    return 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: rel2ms
+#
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videodial2::rel2ms { value } {
+    return [expr $value * (${_max} - ${_min}) + ${_min}]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -thickness
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::thickness {
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -font
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::font {
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -foreground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::foreground {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialoutlinecolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::dialoutlinecolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -dialfillcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::dialfillcolor {
+    after cancel [itcl::code $this _redraw]
+    after idle [itcl::code $this _redraw]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -padding
+# This adds padding on left/right side of dial background.
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::padding {
+    if {[catch {winfo pixels $itk_component(hull) $itk_option(-padding)}]} {
+        error "bad value \"$itk_option(-padding)\": should be size in pixels"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -variable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::variable {
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace remove variable var write [itcl::code $this _fixValue]
+    }
+
+    set _variable $itk_option(-variable)
+
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace add variable var write [itcl::code $this _fixValue]
+
+        # sync to the current value of this variable
+        if {[info exists var]} {
+            _fixValue
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -offset
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::offset {
+    if {![string is integer $itk_option(-offset)] &&
+        ($itk_option(-offset) < 0)} {
+        error "bad value \"$itk_option(-offset)\": should be >= 1"
+    }
+    _fixOffsets
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -min
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::min {
+    if {![string is integer $itk_option(-min)]} {
+        error "bad value \"$itk_option(-min)\": should be an integer"
+    }
+    if {$itk_option(-min) < 0} {
+        error "bad value \"$itk_option(-min)\": should be >= 0"
+    }
+    set _min $itk_option(-min)
+    _redraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -max
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::max {
+    if {![string is integer $itk_option(-max)]} {
+        error "bad value \"$itk_option(-max)\": should be an integer"
+    }
+    if {$itk_option(-max) < 0} {
+        error "bad value \"$itk_option(-max)\": should be >= 0"
+    }
+    set _max $itk_option(-max)
+    _redraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -minortick
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::minortick {
+    if {![string is integer $itk_option(-minortick)]} {
+        error "bad value \"$itk_option(-minortick)\": should be an integer"
+    }
+    if {$itk_option(-minortick) <= 0} {
+        error "bad value \"$itk_option(-minortick)\": should be > 0"
+    }
+    set _minortick $itk_option(-minortick)
+    _redraw
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -majortick
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Videodial2::majortick {
+    if {![string is integer $itk_option(-majortick)]} {
+        error "bad value \"$itk_option(-majortick)\": should be an integer"
+    }
+    if {$itk_option(-majortick) <= 0} {
+        error "bad value \"$itk_option(-majortick)\": should be > 0"
+    }
+    set _majortick $itk_option(-majortick)
+    _redraw
+}
Index: /tags/1.6.0/gui/scripts/videodistance.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/videodistance.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/videodistance.tcl	(revision 6168)
@@ -0,0 +1,609 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: videodistance - specify a distance in a video canvas
+#
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+package require Itk
+package require BLT
+package require Img
+package require Rappture
+package require RapptureGUI
+
+itcl::class Rappture::VideoDistance {
+    inherit itk::Widget
+
+    itk_option define -color color Color "green"
+    itk_option define -fncallback fncallback Fncallback ""
+    itk_option define -bindentercb bindentercb Bindentercb ""
+    itk_option define -bindleavecb bindleavecb Bindleavecb ""
+    itk_option define -writetextcb writetextcb Writetextcb ""
+    itk_option define -px2dist px2dist Px2dist ""
+    itk_option define -units units Units "m"
+    itk_option define -bindings bindings Bindings "enable"
+    itk_option define -ondelete ondelete Ondelete ""
+    itk_option define -onframe onframe Onframe ""
+
+
+    constructor { name win args } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method Show {args}
+    public method Hide {args}
+    public method Coords {args}
+    public method Frame {args}
+    public method Move {status x y}
+    public method Menu {args}
+
+
+    public variable  fncallback ""      ;# framenumber callback - tells what frame we are on
+    public variable  bindentercb ""     ;# enter binding callback - call this when entering the object
+    public variable  bindleavecb ""     ;# leave binding callback - call this when leaving the object
+    public variable  writetextcb ""     ;# write text callback - call this to write text to the canvas
+
+    protected method Enter {}
+    protected method Leave {}
+    protected method CatchEvent {event}
+
+    protected method _fixValue {args}
+    protected method _fixPx2Dist {px2dist}
+    protected method _fixBindings {status}
+
+    private variable _canvas        ""  ;# canvas which owns the object
+    private variable _name          ""  ;# id of the object
+    private variable _color         ""  ;# color of the object
+    private variable _frame         0   ;# frame number where the object lives
+    private variable _coords        ""  ;# coords of the object, x0 y0 x1 y1
+    private variable _x             0   ;# x coord when "pressed" for motion
+    private variable _y             0   ;# y coord when "pressed" for motion
+    private variable _px2dist       ""  ;# variable associated with -px2dist
+    private variable _units         ""  ;#
+    private variable _dist          0   ;# distance of the measured space
+}
+
+itk::usual VideoDistance {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::constructor {name win args} {
+
+    set _name $name
+    set _canvas $win
+
+    # setup the control menu
+    set menu $itk_component(hull).distancecontrols
+    itk_component add menu {
+        Rappture::Balloon $itk_interior.menu -title "Controls"
+    }
+    set controls [$itk_component(menu) component inner]
+
+    set fg [option get $itk_component(hull) font Font]
+    label $controls.propertiesl -text "Properties" -font $fg \
+        -highlightthickness 0
+
+    # Measurement control
+    label $controls.measurementl -text "Value" -font $fg \
+        -highlightthickness 0
+    entry $controls.measuremente -width 5 -background white
+
+    # Frame number control
+    label $controls.framenuml -text "Frame" -font "Arial 9"\
+         -highlightthickness 0
+    Rappture::Spinint $controls.framenume \
+        -min 0 -width 5 -font "arial 9"
+
+    # x0
+    label $controls.x0l -text "x0" -font $fg -highlightthickness 0
+    #FIXME: if the canvas width increases after the distance widget is created,
+    #       this max is not updated.
+    Rappture::Spinint $controls.x0e \
+            -min 0 -max [winfo width ${_canvas}] -width 4 -font "arial 9"
+
+    # y0
+    label $controls.y0l -text "y0" -font $fg -highlightthickness 0
+    #FIXME: if the canvas height increases after the distance widget is created,
+    #       this max is not updated.
+    Rappture::Spinint $controls.y0e \
+            -min 0 -max [winfo height ${_canvas}] -width 4 -font "arial 9"
+
+    # x1
+    label $controls.x1l -text "x1" -font $fg -highlightthickness 0
+    #FIXME: if the canvas width increases after the distance widget is created,
+    #       this max is not updated.
+    Rappture::Spinint $controls.x1e \
+            -min 0 -max [winfo width ${_canvas}] -width 4 -font "arial 9"
+
+    # y1
+    label $controls.y1l -text "y1" -font $fg -highlightthickness 0
+    #FIXME: if the canvas height increases after the distance widget is created,
+    #       this max is not updated.
+    Rappture::Spinint $controls.y1e \
+            -min 0 -max [winfo height ${_canvas}] -width 4 -font "arial 9"
+
+    # Delete control
+    label $controls.deletel -text "Delete" -font $fg \
+        -highlightthickness 0
+    Rappture::Switch $controls.deleteb -showtext "false"
+    $controls.deleteb value false
+
+    button $controls.saveb -text Save \
+        -relief raised -pady 0 -padx 0  -font "Arial 9" \
+        -command [itcl::code $this Menu deactivate save] \
+        -activebackground grey90
+
+    button $controls.cancelb -text Cancel \
+        -relief raised -pady 0 -padx 0  -font "Arial 9" \
+        -command [itcl::code $this Menu deactivate cancel] \
+        -activebackground grey90
+
+    grid $controls.measurementl    -column 0 -row 0 -sticky e
+    grid $controls.measuremente    -column 1 -row 0 -sticky w
+    grid $controls.framenuml       -column 2 -row 0 -sticky e
+    grid $controls.framenume       -column 3 -row 0 -sticky w
+    grid $controls.x0l             -column 0 -row 1 -sticky e
+    grid $controls.x0e             -column 1 -row 1 -sticky w
+    grid $controls.y0l             -column 2 -row 1 -sticky e
+    grid $controls.y0e             -column 3 -row 1 -sticky w
+    grid $controls.x1l             -column 0 -row 2 -sticky e
+    grid $controls.x1e             -column 1 -row 2 -sticky w
+    grid $controls.y1l             -column 2 -row 2 -sticky e
+    grid $controls.y1e             -column 3 -row 2 -sticky w
+    grid $controls.deletel         -column 2 -row 3 -sticky e
+    grid $controls.deleteb         -column 3 -row 3 -sticky w
+    grid $controls.saveb           -column 0 -row 4 -sticky e -columnspan 2
+    grid $controls.cancelb         -column 2 -row 4 -sticky w -columnspan 2
+
+
+    # finish configuring the object
+    eval itk_initialize $args
+
+    # set the frame for the particle
+    Frame [uplevel \#0 $fncallback]
+    bind ${_name}-FrameEvent <<Frame>> [itcl::code $this CatchEvent Frame]
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::destructor {} {
+    configure -px2dist ""  ;# remove variable trace
+
+    Hide object
+    _fixBindings disable
+
+    if {"" != $itk_option(-ondelete)} {
+        uplevel \#0 $itk_option(-ondelete)
+    }
+
+}
+
+# ----------------------------------------------------------------------
+#   Frame ?<frameNum>? - update the frame this object is in
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::Frame {args} {
+    if {[llength $args] == 1} {
+        set val [lindex $args 0]
+        if {([string is integer $val] != 1)} {
+            error "bad value: \"$val\": frame number should be an integer"
+        }
+
+        set _frame $val
+
+        if {"" != $itk_option(-onframe)} {
+            uplevel \#0 $itk_option(-onframe) ${_frame}
+        }
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"Frame ?<frameNumber>?\""
+    }
+    return ${_frame}
+}
+
+# ----------------------------------------------------------------------
+#   Coords ?<x0> <y0> <x1> <y1>? - update the coordinates of this object
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::Coords {args} {
+    if {[llength $args] == 0} {
+        return ${_coords}
+    } elseif {[llength $args] == 1} {
+        foreach {x0 y0 x1 y1} [lindex $args 0] break
+    } elseif {[llength $args] == 4} {
+        foreach {x0 y0 x1 y1} $args break
+    } else {
+        error "wrong # args: should be \"Coords ?<x0> <y0> <x1> <y1>?\""
+    }
+
+    if {([string is double $x0] != 1)} {
+        error "bad value: \"$x0\": x coordinate should be a double"
+    }
+    if {([string is double $y0] != 1)} {
+        error "bad value: \"$y0\": y coordinate should be a double"
+    }
+    if {([string is double $x1] != 1)} {
+        error "bad value: \"$x1\": x coordinate should be a double"
+    }
+    if {([string is double $y1] != 1)} {
+        error "bad value: \"$y1\": y coordinate should be a double"
+    }
+
+    set _coords [list $x0 $y0 $x1 $y1]
+
+    if {[llength [${_canvas} find withtag ${_name}-line]] > 0} {
+        eval ${_canvas} coords ${_name}-line ${_coords}
+    }
+
+    _fixValue
+    return ${_coords}
+}
+
+# ----------------------------------------------------------------------
+#   Enter - bindings if the mouse enters the object's space
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::Enter {} {
+    uplevel \#0 $bindentercb
+}
+
+# ----------------------------------------------------------------------
+#   Leave - bindings if the mouse leaves the object's space
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::Leave {} {
+    uplevel \#0 $bindleavecb
+}
+
+
+# ----------------------------------------------------------------------
+#   CatchEvent - bindings for caught events
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::CatchEvent {event} {
+    switch -- $event {
+        "Frame" {
+            if {[uplevel \#0 $fncallback] == ${_frame}} {
+                ${_canvas} itemconfigure ${_name}-line -fill red
+            } else {
+                ${_canvas} itemconfigure ${_name}-line -fill ${_color}
+            }
+        }
+        default {
+            error "bad event \"$event\": should be one of Frame."
+        }
+
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# Show - put properties of the object on the canvas
+#   object - draw the object on the canvas
+#   name - popup a ballon with the name of this object
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::Show {args} {
+    set option [lindex $args 0]
+    switch -- $option {
+        "object" {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"object\""
+            }
+            ${_canvas} create line ${_coords} \
+                -fill ${_color}\
+                -width 2  \
+                -tags "measure ${_name} ${_name}-line" \
+                -dash {4 4} \
+                -arrow both
+        }
+        "name" {
+
+        }
+        default {
+            error "bad option \"$option\": should be one of object, name."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Hide
+#   object - remove the particle from where it is drawn
+#   name - remove the popup with the name
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::Hide {args} {
+    set option [lindex $args 0]
+    switch -- $option {
+        "object" {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"object\""
+            }
+            ${_canvas} delete "${_name}"
+        }
+        "name" {
+
+        }
+        default {
+            error "bad option \"$option\": should be one of object, name."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Move - move the object to a new location
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::Move {status x y} {
+    switch -- $status {
+        "press" {
+            set _x $x
+            set _y $y
+        }
+        "motion" {
+            ${_canvas} move ${_name} [expr $x-${_x}] [expr $y-${_y}]
+            set _coords [${_canvas} coords ${_name}-line]
+            set _x $x
+            set _y $y
+        }
+        "release" {
+        }
+        default {
+            error "bad option \"$option\": should be one of press, motion, release."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Menu - popup a menu with the particle controls
+#   create
+#   activate x y
+#   deactivate status
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::Menu {args} {
+    set option [lindex $args 0]
+    switch -- $option {
+        "activate" {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"activate <x> <y>\""
+            }
+            foreach {x y} [lrange $args 1 end] break
+            set dir "left"
+            set x0 [winfo rootx ${_canvas}]
+            set y0 [winfo rooty ${_canvas}]
+            set w0 [winfo width ${_canvas}]
+            set h0 [winfo height ${_canvas}]
+            set x [expr $x0+$x]
+            set y [expr $y0+$y]
+            $itk_component(menu) activate @$x,$y $dir
+
+            # update the values in the menu
+            set controls [$itk_component(menu) component inner]
+            foreach {x0 y0 x1 y1} ${_coords} break
+            $controls.measuremente delete 0 end
+            $controls.measuremente insert 0 "${_dist} ${_units}"
+            $controls.framenume value ${_frame}
+            $controls.x0e value $x0
+            $controls.y0e value $y0
+            $controls.x1e value $x1
+            $controls.y1e value $y1
+            $controls.deleteb value false
+        }
+        "deactivate" {
+            $itk_component(menu) deactivate
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"deactivate <status>\""
+            }
+            set status [lindex $args 1]
+            switch -- $status {
+                "save" {
+                    set controls [$itk_component(menu) component inner]
+
+                    set newframenum [$controls.framenume value]
+                    if {${_frame} != $newframenum} {
+                        Frame $newframenum
+                    }
+
+                    foreach {oldx0 oldy0 oldx1 oldy1} ${_coords} break
+                    set newx0 [$controls.x0e value]
+                    set newy0 [$controls.y0e value]
+                    set newx1 [$controls.x1e value]
+                    set newy1 [$controls.y1e value]
+
+                    if {$oldx0 != $newx0 ||
+                        $oldy0 != $newy0 ||
+                        $oldx1 != $newx1 ||
+                        $oldy1 != $newy1} {
+
+                        Coords $newx0 $newy0 $newx1 $newy1
+                    }
+
+                    set newdist [Rappture::Units::convert \
+                        [$controls.measuremente get] \
+                        -context ${_units} -units off]
+
+                    if {$newdist != ${_dist}} {
+                        # update the distance displayed
+
+                        set px [expr sqrt(pow(($newx1-$newx0),2)+pow(($newy1-$newy0),2))]
+                        set px2dist [expr $newdist/$px]
+
+                        _fixPx2Dist $px2dist
+                    }
+
+                    if {[$controls.deleteb value]} {
+                        itcl::delete object $this
+                    }
+                }
+                "cancel" {
+                }
+                "default" {
+                    error "bad value \"$status\": should be one of save, cancel"
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be one of activate, deactivate."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# _fixBindings - enable/disable bindings
+#   enable
+#   disable
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::_fixBindings {status} {
+    switch -- $status {
+        "enable" {
+            ${_canvas} bind ${_name} <ButtonPress-1>   [itcl::code $this Move press %x %y]
+            ${_canvas} bind ${_name} <B1-Motion>       [itcl::code $this Move motion %x %y]
+            ${_canvas} bind ${_name} <ButtonRelease-1> [itcl::code $this Move release %x %y]
+
+            ${_canvas} bind ${_name} <ButtonPress-3>   [itcl::code $this Menu activate %x %y]
+
+            ${_canvas} bind ${_name} <Enter>           [itcl::code $this Enter]
+            ${_canvas} bind ${_name} <Leave>           [itcl::code $this Leave]
+
+            ${_canvas} bind ${_name} <B1-Enter>        { }
+            ${_canvas} bind ${_name} <B1-Leave>        { }
+            bindtags ${_canvas} [concat "${_name}-FrameEvent" [bindtags ${_canvas}]]
+        }
+        "disable" {
+            ${_canvas} bind ${_name} <ButtonPress-1>   { }
+            ${_canvas} bind ${_name} <B1-Motion>       { }
+            ${_canvas} bind ${_name} <ButtonRelease-1> { }
+
+            ${_canvas} bind ${_name} <ButtonPress-3>   { }
+
+            ${_canvas} bind ${_name} <Enter>           { }
+            ${_canvas} bind ${_name} <Leave>           { }
+
+            ${_canvas} bind ${_name} <B1-Enter>        { }
+            ${_canvas} bind ${_name} <B1-Leave>        { }
+            set tagnum [lsearch [bindtags ${_canvas}] "${_name}-FrameEvent"]
+            if {$tagnum >= 0} {
+                bindtags ${_canvas} [lreplace [bindtags ${_canvas}] $tagnum $tagnum]
+            }
+        }
+        default {
+            error "bad option \"$status\": should be one of enable, disable."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixPx2Dist
+# Invoked whenever the value for this object is changed by the user
+# via the popup menu.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::_fixPx2Dist {px2dist} {
+    if {"" == $itk_option(-px2dist)} {
+        return
+    }
+    upvar #0 $itk_option(-px2dist) var
+    set var $px2dist
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue
+# Invoked automatically whenever the -px2dist associated with this
+# widget is modified.  Copies the value to the current settings for
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoDistance::_fixValue {args} {
+    if {"" == $itk_option(-px2dist)} {
+        return
+    }
+    upvar #0 $itk_option(-px2dist) var
+
+    if {"" == ${_coords}} {
+        # no coords, skip calculation
+        return
+    }
+
+    # calculate the length
+    foreach {x0 y0 x1 y1} ${_coords} break
+    set px [expr sqrt(pow(($x1-$x0),2)+pow(($y1-$y0),2))]
+    set _dist [expr $px*$var]
+
+    # run the new value through units conversion to round
+    # it off so when we show it in the menu and compare it
+    # to the value that comes back from the menu, we don't
+    # get differences in value due to rounding.
+    set _dist [Rappture::Units::convert ${_dist} -context ${_units} -units off]
+
+    set x [expr "$x0 + (($x1-$x0)/2)"]
+    set y [expr "$y0 + (($y1-$y0)/2)"]
+
+    set tt "${_dist} ${_units}"
+    set tags "meastext ${_name} ${_name}-val"
+    set width [expr sqrt(pow(abs($x1-$x0),2)+pow(abs($y1-$y0),2))]
+    set args [list $x $y "$tt" "${_color}" "$tags" $width]
+
+    # remove old text
+    ${_canvas} delete ${_name}-val
+
+    set controls [$itk_component(menu) component inner]
+    if {![$controls.deleteb value]} {
+        # if the object is not hidden, write _dist to the canvas
+        uplevel \#0 $writetextcb $args
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -color
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoDistance::color {
+    if {[string compare "" $itk_option(-color)] != 0} {
+        # FIXME how to tell if the color is valid?
+        set _color $itk_option(-color)
+    } else {
+        error "bad value: \"$itk_option(-color)\": should be a valid color"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -px2dist
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoDistance::px2dist {
+    if {"" != $_px2dist} {
+        upvar #0 $_px2dist var
+        trace remove variable var write [itcl::code $this _fixValue]
+    }
+
+    set _px2dist $itk_option(-px2dist)
+
+    if {"" != $_px2dist} {
+        upvar #0 $_px2dist var
+        trace add variable var write [itcl::code $this _fixValue]
+
+        # sync to the current value of this variable
+        if {[info exists var]} {
+            _fixValue
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -units
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoDistance::units {
+    set _units $itk_option(-units)
+    # _fixValue
+}
+
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -bindings
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoDistance::bindings {
+    _fixBindings $itk_option(-bindings)
+}
+# ----------------------------------------------------------------------
Index: /tags/1.6.0/gui/scripts/videoparticle.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/videoparticle.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/videoparticle.tcl	(revision 6168)
@@ -0,0 +1,612 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: videoparticle - mark a particle on a video frame
+#
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+package require Img
+package require Rappture
+package require RapptureGUI
+
+itcl::class Rappture::VideoParticle {
+    inherit itk::Widget
+
+    itk_option define -halo halo Halo "10"
+    itk_option define -color color Color "green"
+    itk_option define -fncallback fncallback Fncallback ""
+    itk_option define -bindentercb bindentercb Bindentercb ""
+    itk_option define -bindleavecb bindleavecb Bindleavecb ""
+    itk_option define -trajcallback trajcallback Trajcallback ""
+    itk_option define -px2dist px2dist Px2dist ""
+    itk_option define -units units Units "m/s"
+    itk_option define -bindings bindings Bindings "enable"
+    itk_option define -ondelete ondelete Ondelete ""
+    itk_option define -onframe onframe Onframe ""
+    itk_option define -framerange framerange Framerange ""
+
+    constructor { name win args } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method Show {args}
+    public method Hide {args}
+    public method Link {args}
+    public method Coords {args}
+    public method Frame {args}
+    public method drawVectors {}
+    public method next {args}
+    public method prev {args}
+    public method name {}
+
+    public variable  fncallback ""      ;# framenumber callback - tells what frame we are on
+    public variable  bindentercb ""     ;# enter binding callback - call this when entering the object
+    public variable  bindleavecb ""     ;# leave binding callback - call this when leaving the object
+    public variable  trajcallback ""    ;# trajectory callback - calculates and draws trajectory
+
+    public method Move {status x y}
+    public method Menu {args}
+
+    protected method Enter {}
+    protected method Leave {}
+    protected method CatchEvent {event}
+
+    protected method _fixValue {args}
+    protected method _fixPx2Dist {px2dist}
+    protected method _fixBindings {status}
+
+    private variable _canvas        ""  ;# canvas which owns the particle
+    private variable _name          ""  ;# id of the particle
+    private variable _color         ""  ;# color of the particle
+    private variable _frame          0  ;# frame number where this object lives
+    private variable _coords        ""  ;# list of coords where the object lives
+    private variable _halo           0  ;# about the diameter of the particle
+    private variable _x              0  ;# x coord when "pressed" for motion
+    private variable _y              0  ;# y coord when "pressed" for motion
+    private variable _nextnode      ""  ;# particle this particle points to
+    private variable _prevnode      ""  ;# particle this particle is pointed to by
+    private variable _link          ""  ;# tag of vector linking this and nextnode
+    private variable _units         ""  ;#
+    private variable _px2dist       ""  ;# variable associated with -px2dist
+}
+
+itk::usual VideoParticle {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::constructor {name win args} {
+
+    set _name $name
+    set _canvas $win
+
+    # setup the particle control menu
+    itk_component add menu {
+        Rappture::Balloon $itk_interior.particlecontrols -title "Particle Controls"
+    }
+
+    set controls [$itk_component(menu) component inner]
+
+    # Frame number control
+    label $controls.framenuml -text "Frame" -font "Arial 9"\
+         -highlightthickness 0
+    Rappture::Spinint $controls.framenume \
+        -min 0 -width 5 -font "arial 9"
+
+    # Delete control
+    label $controls.deletel -text "Delete" -font "Arial 9" \
+        -highlightthickness 0
+    Rappture::Switch $controls.deleteb -showtext "false"
+    $controls.deleteb value false
+
+    # Save button
+    button $controls.saveb -text Save \
+        -relief raised -pady 0 -padx 0  -font "Arial 9" \
+        -command [itcl::code $this Menu deactivate save] \
+        -activebackground grey90
+
+    # Cancel button
+    button $controls.cancelb -text Cancel \
+        -relief raised -pady 0 -padx 0  -font "Arial 9" \
+        -command [itcl::code $this Menu deactivate cancel] \
+        -activebackground grey90
+
+
+    grid $controls.framenuml -column 0 -row 0 -sticky e
+    grid $controls.framenume -column 1 -row 0 -sticky w
+    grid $controls.deletel   -column 0 -row 1 -sticky e
+    grid $controls.deleteb   -column 1 -row 1 -sticky w
+    grid $controls.saveb     -column 0 -row 2 -sticky e
+    grid $controls.cancelb   -column 1 -row 2 -sticky w
+
+
+    grid columnconfigure $controls 0 -weight 1
+
+    # finish configuring the particle
+    eval itk_initialize $args
+
+    # set the frame for the particle
+    Frame [uplevel \#0 $fncallback]
+    bind ${_name}-FrameEvent <<Frame>> [itcl::code $this CatchEvent Frame]
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::destructor {} {
+    configure -px2dist ""  ;# remove variable trace
+
+    Hide object
+
+    # delete the vectors originating from this particle
+    if {[string compare "" ${_nextnode}] != 0} {
+        ${_canvas} delete ${_link}
+        ${_nextnode} prev ${_prevnode}
+    }
+
+    # delete the vectors pointing to this particle
+    if {[string compare "" ${_prevnode}] != 0} {
+        ${_prevnode} next ${_nextnode}
+        ${_prevnode} drawVectors
+    }
+
+    _fixBindings disable
+
+    if {"" != $itk_option(-ondelete)} {
+        uplevel \#0 $itk_option(-ondelete)
+    }
+}
+
+# ----------------------------------------------------------------------
+#   Enter - bindings if the mouse enters the object's space
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::Enter {} {
+    uplevel \#0 $bindentercb
+}
+
+
+# ----------------------------------------------------------------------
+#   Leave - bindings if the mouse leaves the object's space
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::Leave {} {
+    uplevel \#0 $bindleavecb
+}
+
+
+# ----------------------------------------------------------------------
+#   CatchEvent - bindings for caught events
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::CatchEvent {event} {
+    switch -- $event {
+        "Frame" {
+            if {[uplevel \#0 $fncallback] == ${_frame}} {
+                ${_canvas} itemconfigure ${_name}-particle -fill red
+            } else {
+                ${_canvas} itemconfigure ${_name}-particle -fill ${_color}
+            }
+        }
+        default {
+            error "bad event \"$event\": should be one of Frame."
+        }
+
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# Show - draw the particle
+#   particle - draw the particle on the canvas
+#   name - popup a ballon with the name of this object
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::Show {args} {
+    set option [lindex $args 0]
+    switch -- $option {
+        "object" {
+            foreach {x y} ${_coords} break
+            set coords [list [expr $x-${_halo}] [expr $y-${_halo}] \
+                             [expr $x+${_halo}] [expr $y+${_halo}]]
+            ${_canvas} create oval $coords \
+                -fill ${_color} \
+                -width 0 \
+                -tags "particle ${_name} ${_name}-particle"
+        }
+        "name" {
+
+        }
+        default {
+            error "bad option \"$option\": should be one of object, name."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Hide
+#   particle - remove the particle from where it is drawn
+#   name - remove the popup with the name
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::Hide {args} {
+    set option [lindex $args 0]
+    switch -- $option {
+        "object" {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"particle\""
+            }
+            ${_canvas} delete "${_name}"
+        }
+        "name" {
+
+        }
+        default {
+            error "bad option \"$option\": should be one of object, name."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Move - move the object to a new location
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::Move {status x y} {
+    switch -- $status {
+        "press" {
+            set _x $x
+            set _y $y
+        }
+        "motion" {
+            ${_canvas} move ${_name} [expr $x-${_x}] [expr $y-${_y}]
+            foreach {x0 y0 x1 y1} [${_canvas} coords ${_name}-particle] break
+            set _coords [list [expr $x0+${_halo}] [expr $y0+${_halo}]]
+            set _x $x
+            set _y $y
+            drawVectors
+            if {[string compare "" ${_prevnode}] != 0} {
+                ${_prevnode} drawVectors
+            }
+        }
+        "release" {
+        }
+        default {
+            error "bad option \"$option\": should be one of press, motion, release."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Menu - popup a menu with the particle controls
+#   create
+#   activate x y
+#   deactivate status
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::Menu {args} {
+    set option [lindex $args 0]
+    switch -- $option {
+        "activate" {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"activate <x> <y>\""
+            }
+            foreach {x y} [lrange $args 1 end] break
+            set dir "left"
+            set x0 [winfo rootx ${_canvas}]
+            set y0 [winfo rooty ${_canvas}]
+            set w0 [winfo width ${_canvas}]
+            set h0 [winfo height ${_canvas}]
+            set x [expr $x0+$x]
+            set y [expr $y0+$y]
+            $itk_component(menu) activate @$x,$y $dir
+
+            # update the values in the menu
+            set controls [$itk_component(menu) component inner]
+            $controls.framenume value ${_frame}
+            $controls.deleteb value false
+        }
+        "deactivate" {
+            $itk_component(menu) deactivate
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"deactivate <status>\""
+            }
+            set status [lindex $args 1]
+            switch -- $status {
+                "save" {
+                    set controls [$itk_component(menu) component inner]
+
+                    set newframenum [$controls.framenume value]
+                    if {${_frame} != $newframenum} {
+                        Frame $newframenum
+                    }
+
+                    if {[$controls.deleteb value]} {
+                        itcl::delete object $this
+                    }
+                }
+                "cancel" {
+                }
+                "default" {
+                    error "bad value \"$status\": should be one of save, cancel"
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be one of activate, deactivate."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Link - move the particle to a new location
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::Link {args} {
+    # add a new particle list of linked particles
+    foreach {p} $args break
+    $p prev $this
+    next $p
+    drawVectors
+}
+
+# ----------------------------------------------------------------------
+# drawVectors - draw vectors from this particle
+#               to all particles it is linked to.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::drawVectors {} {
+
+    if {[string compare "" $trajcallback] != 0} {
+        set _link [uplevel \#0 $trajcallback $this ${_nextnode}]
+    }
+}
+
+
+# ----------------------------------------------------------------------
+#   Coords ?<x0> <y0>? - update the coordinates of this object
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::Coords {args} {
+    if {[llength $args] == 0} {
+        return ${_coords}
+    } elseif {[llength $args] == 1} {
+        foreach {x0 y0} [lindex $args 0] break
+    } elseif {[llength $args] == 2} {
+        foreach {x0 y0} $args break
+    } else {
+        error "wrong # args: should be \"Coords ?<x0> <y0>?\""
+    }
+
+    if {([string is double $x0] != 1)} {
+        error "bad value: \"$x0\": x coordinate should be a double"
+    }
+    if {([string is double $y0] != 1)} {
+        error "bad value: \"$y0\": y coordinate should be a double"
+    }
+
+    set _coords [list $x0 $y0]
+    set coords [list [expr $x0-${_halo}] [expr $y0-${_halo}] \
+                     [expr $x0+${_halo}] [expr $y0+${_halo}]]
+
+    if {[llength [${_canvas} find withtag ${_name}-particle]] > 0} {
+        eval ${_canvas} coords ${_name}-particle $coords
+    }
+
+    _fixValue
+    return ${_coords}
+}
+
+# ----------------------------------------------------------------------
+#   Frame ?<frameNum>? - update the frame this object is in
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::Frame {args} {
+    if {[llength $args] == 1} {
+        set val [lindex $args 0]
+        if {([string is integer $val] != 1)} {
+            error "bad value: \"$val\": frame number should be an integer"
+        }
+
+        set _frame $val
+
+        if {"" != $itk_option(-onframe)} {
+            uplevel \#0 $itk_option(-onframe) ${_frame}
+        }
+
+        drawVectors
+        if {[string compare "" ${_prevnode}] != 0} {
+            ${_prevnode} drawVectors
+        }
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"Frame ?<number>?\""
+    }
+    return ${_frame}
+}
+
+
+# ----------------------------------------------------------------------
+# next - get/set the next particle
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::next {args} {
+    if {[llength $args] == 1} {
+        # set the next node
+        set _nextnode [lindex $args 0]
+        # drawVectors
+    }
+    return ${_nextnode}
+}
+
+# ----------------------------------------------------------------------
+# prev - get/set the prev particle
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::prev {args} {
+    if {[llength $args] == 1} {
+        # set the prev node
+        set _prevnode [lindex $args 0]
+    }
+    return ${_prevnode}
+}
+
+# ----------------------------------------------------------------------
+# name - get the name of the particle
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::name {} {
+    return ${_name}
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue
+# Invoked automatically whenever the -px2dist associated with this
+# widget is modified.  Copies the value to the current settings for
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::_fixValue {args} {
+    if {"" == $itk_option(-px2dist)} {
+        return
+    }
+    upvar #0 $itk_option(-px2dist) var
+
+    drawVectors
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixPx2Dist
+# Invoked whenever the length part of the trajectory for this object
+# is changed by the user via the popup menu.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::_fixPx2Dist {px2dist} {
+    if {"" == $itk_option(-px2dist)} {
+        return
+    }
+    upvar #0 $itk_option(-px2dist) var
+    set var $px2dist
+}
+
+# ----------------------------------------------------------------------
+# _fixBindings - enable/disable bindings
+#   enable
+#   disable
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoParticle::_fixBindings {status} {
+    switch -- $status {
+        "enable" {
+            ${_canvas} bind ${_name} <ButtonPress-1>   [itcl::code $this Move press %x %y]
+            ${_canvas} bind ${_name} <B1-Motion>       [itcl::code $this Move motion %x %y]
+            ${_canvas} bind ${_name} <ButtonRelease-1> [itcl::code $this Move release %x %y]
+
+            ${_canvas} bind ${_name} <ButtonPress-3>   [itcl::code $this Menu activate %x %y]
+
+            ${_canvas} bind ${_name} <Enter>           [itcl::code $this Enter]
+            ${_canvas} bind ${_name} <Leave>           [itcl::code $this Leave]
+
+            ${_canvas} bind ${_name} <B1-Enter>        { }
+            ${_canvas} bind ${_name} <B1-Leave>        { }
+            # bind ${_canvas} <<Frame>>                  +[itcl::code $this CatchEvent Frame]
+            bindtags ${_canvas} [concat ${_name}-FrameEvent [bindtags ${_canvas}]]
+        }
+        "disable" {
+            ${_canvas} bind ${_name} <ButtonPress-1>   { }
+            ${_canvas} bind ${_name} <B1-Motion>       { }
+            ${_canvas} bind ${_name} <ButtonRelease-1> { }
+
+            ${_canvas} bind ${_name} <ButtonPress-3>   { }
+
+            ${_canvas} bind ${_name} <Enter>           { }
+            ${_canvas} bind ${_name} <Leave>           { }
+
+            ${_canvas} bind ${_name} <B1-Enter>        { }
+            ${_canvas} bind ${_name} <B1-Leave>        { }
+            set tagnum [lsearch [bindtags ${_canvas}] "${_name}-FrameEvent"]
+            if {$tagnum >= 0} {
+                bindtags ${_canvas} [lreplace [bindtags ${_canvas}] $tagnum $tagnum]
+            }
+        }
+        default {
+            error "bad option \"$status\": should be one of enable, disable."
+        }
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -halo
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoParticle::halo {
+    if {[string is double $itk_option(-halo)] == 1} {
+        set _halo $itk_option(-halo)
+    } else {
+        error "bad value: \"$itk_option(-halo)\": halo should be a number"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -color
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoParticle::color {
+    if {[string compare "" $itk_option(-color)] != 0} {
+        # FIXME how to tell if the color is valid?
+        set _color $itk_option(-color)
+    } else {
+        error "bad value: \"$itk_option(-color)\": should be a valid color"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -px2dist
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoParticle::px2dist {
+    if {"" != $_px2dist} {
+        upvar #0 $_px2dist var
+        trace remove variable var write [itcl::code $this _fixValue]
+    }
+
+    set _px2dist $itk_option(-px2dist)
+
+    if {"" != $_px2dist} {
+        upvar #0 $_px2dist var
+        trace add variable var write [itcl::code $this _fixValue]
+
+        # sync to the current value of this variable
+        if {[info exists var]} {
+            _fixValue
+        }
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -units
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoParticle::units {
+    set _units $itk_option(-units)
+    # _fixValue
+}
+
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -bindings
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoParticle::bindings {
+    _fixBindings $itk_option(-bindings)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -framerange
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoParticle::framerange {
+    if {"" == $itk_option(-framerange)} {
+        return
+    }
+    if {[llength $itk_option(-framerange)] != 2} {
+        error "bad value \"$itk_option(-framerange)\": should be 2 integers"
+    }
+    foreach {min max} $itk_option(-framerange) break
+    if {!([string is integer $min]) || !([string is integer $max])} {
+        error "bad value \"$itk_option(-framerange)\": should be 2 integers"
+    }
+    set controls [$itk_component(menu) component inner]
+    $controls.framenume configure -min $min -max $max
+}
+
+# ----------------------------------------------------------------------
Index: /tags/1.6.0/gui/scripts/videopreview.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/videopreview.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/videopreview.tcl	(revision 6168)
@@ -0,0 +1,568 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: videopreview - previewing movies
+#
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+package require Itk
+package require BLT
+package require Img
+package require Rappture
+package require RapptureGUI
+
+option add *Video.width 300 widgetDefault
+option add *Video.height 300 widgetDefault
+option add *Video.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::VideoPreview {
+    inherit itk::Widget
+
+    itk_option define -width width Width -1
+    itk_option define -height height Height -1
+    itk_option define -variable variable Variable ""
+
+    constructor { args } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method load {type data}
+    public method loadcb {args}
+    public method video {args}
+    public method query {type}
+
+    protected method Play {}
+    protected method Seek {n}
+    protected method fixSize {}
+    protected method _fixValue {args}
+    protected method Upload {args}
+    protected method eventually {args}
+
+
+    private common   _settings
+    private common   _pendings
+
+    private variable _variable ""   ;# quick way to change movie
+    private variable _path  ""      ;# path of movie
+    private variable _width -1      ;# start x for rubberbanding
+    private variable _height -1     ;# start x for rubberbanding
+    private variable _movie ""      ;# movie we grab images from
+    private variable _lastFrame 0   ;# last frame in the movie
+    private variable _imh ""        ;# current image being displayed
+    private variable _id ""         ;# id of the next play command from after
+    private variable _framerate 30  ;# video frame rate
+    private variable _mspf  7       ;# milliseconds per frame wait time
+    private variable _ofrd  19      ;# observed frame retrieval delay of
+                                    ;# underlying c lib in milliseconds
+    private variable _delay  0      ;# milliseconds between play calls
+    private variable _nextframe 0   ;#
+}
+
+
+itk::usual VideoPreview {
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::constructor {args} {
+
+    array set _settings [subst {
+        $this-framenum          0
+        $this-play              0
+    }]
+
+    array set _pendings [subst {
+        play 0
+    }]
+
+    itk_component add main {
+        canvas $itk_interior.main \
+            -background black
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+    bind $itk_component(main) <Configure> [itcl::code $this fixSize]
+
+    # hold the video frames in an image on the canvas
+    set _imh [image create photo]
+    $itk_component(main) create image 0 0 -anchor nw -image $_imh
+
+    # setup movie controls
+    itk_component add moviecontrols {
+        frame $itk_interior.moviecontrols
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+
+    # setup frame number frame
+    itk_component add frnumfr {
+        frame $itk_component(moviecontrols).frnumfr
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+
+    set imagesDir [file join $RapptureGUI::library scripts images]
+
+
+    # Play
+    itk_component add play {
+        Rappture::PushButton $itk_component(moviecontrols).play \
+            -onimage [Rappture::icon flow-pause] \
+            -offimage [Rappture::icon flow-play] \
+            -disabledimage [Rappture::icon flow-play] \
+            -variable [itcl::scope _settings($this-play)] \
+            -command [itcl::code $this video play]
+    }
+    set fg [option get $itk_component(hull) font Font]
+    Rappture::Tooltip::for $itk_component(play) \
+        "Play/Pause movie"
+    $itk_component(play) disable
+
+    # Video Dial Major
+    itk_component add dialmajor {
+        Rappture::Videodial1 $itk_component(moviecontrols).dialmajor \
+            -length 10 -valuewidth 0 -valuepadding 0 -padding 6 \
+            -linecolor "" -activelinecolor "" \
+            -min 0 -max 1 \
+            -variable [itcl::scope _settings($this-framenum)] \
+            -dialoutlinecolor black \
+            -knobimage [Rappture::icon knob2] -knobposition center@middle
+    } {
+        usual
+        ignore -dialprogresscolor
+        rename -background -controlbackground controlBackground Background
+    }
+    $itk_component(dialmajor) current 0
+    bind $itk_component(dialmajor) <<Value>> [itcl::code $this video update]
+
+    itk_component add framenumlabel {
+        label $itk_component(frnumfr).framenuml -text "Frame:" -font $fg \
+            -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -controlbackground controlBackground Background
+    }
+
+    # Current Frame Number
+    itk_component add framenum {
+        label $itk_component(frnumfr).framenum \
+            -width 5 -font "arial 9" \
+            -textvariable [itcl::scope _settings($this-framenum)]
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -controlbackground controlBackground Background
+    }
+    Rappture::Tooltip::for $itk_component(framenum) \
+        "Current frame number"
+
+
+    pack $itk_component(framenumlabel) -side left
+    pack $itk_component(framenum) -side right
+
+
+    blt::table $itk_component(moviecontrols) \
+        0,0 $itk_component(play) -padx {2 0} \
+        0,1 $itk_component(dialmajor) -fill x -padx {2 2} \
+        0,2 $itk_component(frnumfr) -padx {2 4}
+
+    blt::table configure $itk_component(moviecontrols) c* -resize none
+    blt::table configure $itk_component(moviecontrols) c1 -resize both
+    blt::table configure $itk_component(moviecontrols) r0 -pady 1
+
+
+    blt::table $itk_interior \
+        0,0 $itk_component(main) -fill both \
+        1,0 $itk_component(moviecontrols) -fill x
+    blt::table configure $itk_interior c* -resize both
+    blt::table configure $itk_interior r0 -resize both
+    blt::table configure $itk_interior r1 -resize both
+
+    eval itk_initialize $args
+
+    $itk_component(main) configure -background black
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::destructor {} {
+    array unset _settings $this-*
+    if {[info exists _imh]} {
+        image delete $_imh
+    }
+}
+
+# ----------------------------------------------------------------------
+# load - load a video file
+#   type - type of data, "data" or "file"
+#   data - what to load.
+#       if type == "data", data is treated like binary data
+#       if type == "file", data is treated like the name of a file
+#           and is opened and then loaded.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::load {type data} {
+
+    # open the file
+
+    set fname ""
+    switch $type {
+        "data" {
+            set fname "/tmp/tmpVV[pid].video"
+            set fid [open $fname "w"]
+            fconfigure $fid -translation binary -encoding binary
+            puts $fid $data
+            close $fid
+            set type "file"
+            set data $fname
+        }
+        "file" {
+            # do nothing
+        }
+        default {
+            error "bad value: \"$type\": should be \"load \[data|file\] <data>\""
+        }
+    }
+
+    video stop
+
+    if {([info exists _movie]) && ("" != ${_movie})} {
+        ${_movie} release
+    }
+
+    set _movie [Rappture::Video $type $data]
+    file delete $fname
+    set _framerate [${_movie} framerate]
+    set _mspf [expr round(((1.0/${_framerate})*1000))]
+    set _delay [expr {${_mspf} - ${_ofrd}}]
+
+    video seek 0
+
+    # update the dial and framenum widgets
+    set _settings($this-framenum) 0
+
+    # setup the image display
+
+    foreach {w h} [query dimensions] break
+    if {${_width} == -1} {
+        set _width $w
+    }
+    if {${_height} == -1} {
+        set _height $h
+    }
+
+    set _lastFrame [${_movie} get position end]
+
+    # update the dial with video information
+    $itk_component(dialmajor) configure -min 0 -max ${_lastFrame}
+    $itk_component(play) enable
+
+    fixSize
+}
+
+# ----------------------------------------------------------------------
+# loadcb - load callback
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::loadcb {args} {
+    video stop
+    Rappture::filexfer::upload {piv tool} {id label desc} [itcl::code $this Upload]
+}
+
+# ----------------------------------------------------------------------
+# Upload -
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::Upload {args} {
+    array set data $args
+    video stop
+
+    if {[info exists data(error)]} {
+        Rappture::Tooltip::cue $itk::component(main) $data(error)
+        puts stderr $data(error)
+    }
+
+    if {[info exists data(path)] && [info exists data(data)]} {
+        Rappture::Tooltip::cue hide  ;# take down note about the popup window
+
+        # load data
+        load "data" $data(data)
+    }
+
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _fixValue ?<name1> <name2> <op>?
+#
+# Invoked automatically whenever the -variable associated with this
+# widget is modified.  Copies the value to the current settings for
+# the widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::_fixValue {args} {
+    if {"" == $itk_option(-variable)} {
+        return
+    }
+    upvar #0 $itk_option(-variable) var
+    if {[file readable $var]} {
+        # load and start playing the video
+        set _path $var
+        load file ${_path}
+        set _settings($this-play) 1
+        video play
+    }
+}
+
+# ----------------------------------------------------------------------
+# fixSize
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::fixSize {} {
+
+    if {[string compare "" ${_movie}] == 0} {
+        return
+    }
+
+    if {![winfo ismapped $itk_component(hull)]} {
+        return
+    }
+
+    set cw [winfo width $itk_component(main)]
+    set ch [winfo height $itk_component(main)]
+
+    # FIXME: right now we only deal with 16:9 ratio videos
+    # always keep the aspect ratio correct
+    set _width [expr int(int($cw/16.0)*16.0)]
+    set _height [expr int(${_width}/(16.0/9.0))]
+    if {${_height} > $ch} {
+        # if height is limiting us, shrink some more
+        set _height [expr int(int($ch/9.0)*9.0)]
+        set _width [expr int(${_height}*(16.0/9.0))]
+    }
+
+    # get an image with the new size
+    ${_imh} blank
+    ${_imh} put [${_movie} get image ${_width} ${_height}]
+
+    # make the canvas fit the image
+    $itk_component(main) configure -width ${_width} -height ${_height}
+}
+
+# ----------------------------------------------------------------------
+# video - play, stop, rewind, fastforward the video
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::video { args } {
+    set option [lindex $args 0]
+    switch -- $option {
+        "play" {
+            if {$_settings($this-play) == 1} {
+                eventually play
+            } else {
+                # pause/stop
+                after cancel $_id
+                set _pendings(play) 0
+                set _settings($this-play) 0
+            }
+        }
+        "seek" {
+            Seek [lreplace $args 0 0]
+        }
+        "stop" {
+            after cancel $_id
+            set _settings($this-play) 0
+        }
+        "update" {
+            # eventually seek [expr round($_settings($this-framenum))]
+            Seek [expr round($_settings($this-framenum))]
+        }
+        default {
+            error "bad option \"$option\": should be play, stop, toggle, position, or reset."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# query - query things about the video
+#
+#   dimensions  - returns width and height as a list
+#   frames      - number of frames in video (last frame + 1)
+#   framenum    - current position
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::query { type } {
+    set ret ""
+    switch -- $type {
+        "dimensions" {
+            set ret [${_movie} size]
+        }
+        "frames" {
+            set ret [expr [${_movie} get position end] + 1]
+        }
+        "framenum" {
+            set ret [${_movie} get position cur]
+        }
+        default {
+            error "bad type \"$type\": should be dimensions, frames, framenum."
+        }
+    }
+    return $ret
+}
+
+# ----------------------------------------------------------------------
+# Play - get the next video frame
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::Play {} {
+
+    set cur ${_nextframe}
+
+    # time how long it takes to retrieve the next frame
+    set _ofrd [time {
+        # use seek instead of next fxn incase the ${_nextframe} is
+        # not the current frame+1. this happens when we skip frames
+        # because the underlying c lib is too slow at reading.
+        $_movie seek $cur
+        $_imh put [${_movie} get image ${_width} ${_height}]
+    } 1]
+    regexp {(\d+\.?\d*) microseconds per iteration} ${_ofrd} match _ofrd
+    set _ofrd [expr {round(${_ofrd}/1000)}]
+
+    # calculate the delay we shoud see
+    # between frames being placed on screen
+    # taking into account the cost of retrieving the frame
+    set _delay [expr {${_mspf}-${_ofrd}}]
+    if {0 > ${_delay}} {
+        set _delay 0
+    }
+
+    set cur [${_movie} get position cur]
+
+    # update the dial and framenum widgets
+    set _settings($this-framenum) $cur
+
+    # no play cmds pending
+    set _pendings(play) 0
+
+    # schedule the next frame to be displayed
+    if {$cur < ${_lastFrame}} {
+        set _id [after ${_delay} [itcl::code $this eventually play]]
+    } else {
+        video stop
+    }
+
+    event generate $itk_component(hull) <<Frame>>
+}
+
+
+# ----------------------------------------------------------------------
+# Seek - go to a frame in the video
+#   Seek +5
+#   Seek -5
+#   Seek 35
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::Seek {args} {
+    set val [lindex $args 0]
+    if {"" == $val} {
+        error "bad value: \"$val\": should be \"seek value\""
+    }
+    set cur [${_movie} get position cur]
+    if {[string compare $cur $val] == 0} {
+        # already at the frame to seek to
+        return
+    }
+    ${_movie} seek $val
+    ${_imh} put [${_movie} get image ${_width} ${_height}]
+
+    # update the dial and framenum widgets
+    set _settings($this-framenum) [${_movie} get position cur]
+    event generate $itk_component(main) <<Frame>>
+
+}
+
+
+# ----------------------------------------------------------------------
+# eventually -
+#   seek
+#   play
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoPreview::eventually {args} {
+    set option [lindex $args 0]
+    switch -- $option {
+        "seek" {
+            if {$_pendings(seek) == 0} {
+                # no seek pending, schedule one
+                set $_pendings(seek) 1
+                after idle [itcl::code $this Seek [lindex $args 1]]
+            } else {
+                # there is a seek pending, update its seek value
+            }
+        }
+        "play" {
+            if {0 == $_pendings(play)} {
+                # no play pending schedule one
+                set _pendings(play) 1
+                set _nextframe [expr {[${_movie} get position cur] + 1}]
+                after idle [itcl::code $this Play]
+            } else {
+                # there is a play pending, update its frame value
+                incr _nextframe
+            }
+        }
+        default {
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURE: -variable
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoPreview::variable {
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace remove variable var write [itcl::code $this _fixValue]
+    }
+
+    set _variable $itk_option(-variable)
+
+    if {"" != $_variable} {
+        upvar #0 $_variable var
+        trace add variable var write [itcl::code $this _fixValue]
+
+        # sync to the current value of this variable
+        if {[info exists var]} {
+            _fixValue
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -width
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoPreview::width {
+    # $_dispatcher event -idle !fixsize
+    if {[string is integer $itk_option(-width)] == 0} {
+        error "bad value: \"$itk_option(-width)\": width should be an integer"
+    }
+    set _width $itk_option(-width)
+    after idle [itcl::code $this fixSize]
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -height
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoPreview::height {
+    # $_dispatcher event -idle !fixsize
+    if {[string is integer $itk_option(-height)] == 0} {
+        error "bad value: \"$itk_option(-height)\": height should be an integer"
+    }
+    set _height $itk_option(-height)
+    after idle [itcl::code $this fixSize]
+}
Index: /tags/1.6.0/gui/scripts/videoscreen.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/videoscreen.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/videoscreen.tcl	(revision 6168)
@@ -0,0 +1,1297 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: video - viewing movies
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+package require Itk
+package require BLT
+package require Img
+package require Rappture
+package require RapptureGUI
+
+option add *Video.width -1 widgetDefault
+option add *Video.height -1 widgetDefault
+option add *Video.foreground black widgetDefault
+option add *Video.controlBackground gray widgetDefault
+option add *Video.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::VideoScreen {
+    inherit itk::Widget
+
+    itk_option define -width width Width -1
+    itk_option define -height height Height -1
+    itk_option define -fileopen fileopen Fileopen ""
+
+    constructor { args } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+
+    public method load {type data}
+    public method loadcb {args}
+    public method video {args}
+    public method query {type}
+
+    protected method Play {}
+    protected method Seek {n}
+    protected method fixSize {}
+    protected method Upload {args}
+    protected method eventually {args}
+
+    private method togglePtrCtrl {pbvar}
+    private method whatPtrCtrl {}
+    private method togglePtrBind {pbvar}
+
+    # drawing tools
+    private method Rubberband {status win x y}
+    private method updateMeasurements {}
+    private method Measure {status win x y}
+    private method Particle {status win x y}
+    private method Trajectory {args}
+    private method calculateTrajectory {args}
+    private method writeText {x y text color tags width}
+    private method clearDrawings {}
+
+    # video dial tools
+    private method toggleloop {}
+
+    private common   _settings
+    private common   _pendings
+    private common   _pbvars
+    private common   _counters
+
+    private variable _width -1      ;# width of the movie
+    private variable _height -1     ;# height of the movie
+    private variable _movie ""      ;# movie we grab images from
+    private variable _lastFrame 0   ;# last frame in the movie
+    private variable _imh ""        ;# current image being displayed
+    private variable _id ""         ;# id of the next play command from after
+    private variable _framerate 30  ;# video frame rate
+    private variable _mspf  7       ;# milliseconds per frame wait time
+    private variable _ofrd  19      ;# observed frame retrieval delay of
+                                    ;# underlying c lib in milliseconds
+    private variable _delay  0      ;# milliseconds between play calls
+    private variable _nextframe 0   ;#
+
+    private variable _px2dist 0     ;# conversion for pixels to user specified distance
+    private variable _particles ""  ;# list of particles
+    private variable _measurements "" ;# list of all measurement lines
+    private variable _obj ""        ;# temp var holding the last created object
+}
+
+
+itk::usual VideoScreen {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::constructor {args} {
+
+    array set _settings [subst {
+        framenum          0
+        loop              0
+        play              0
+        speed             1
+    }]
+
+    array set _pendings {
+        seek 0
+        play 0
+    }
+
+    array set _counters {
+        particle 0
+        measure 0
+    }
+
+    # Create flow controls...
+
+    itk_component add main {
+        canvas $itk_interior.main
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+    bind $itk_component(main) <Configure> [itcl::code $this fixSize]
+
+    # setup the image display
+    # hold the video frames in an image on the canvas
+    set _imh [image create photo]
+
+    $itk_component(main) create image 0 0 \
+        -anchor center \
+        -image ${_imh} \
+        -tags videoframe
+
+    # setup movie controls
+    itk_component add moviecontrols {
+        frame $itk_interior.moviecontrols
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+
+    # setup frame number frame
+    itk_component add frnumfr {
+        frame $itk_component(moviecontrols).frnumfr
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+
+    set imagesDir [file join $RapptureGUI::library scripts images]
+
+    # ==== fileopen ====
+    itk_component add fileopen {
+        button $itk_component(moviecontrols).fileopen \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -image [Rappture::icon upload] \
+            -command [itcl::code $this loadcb]
+    } {
+        usual
+    }
+    Rappture::Tooltip::for $itk_component(fileopen) \
+        "Open file"
+
+    # ==== measuring tool ====
+    set measImg [image create photo -file [file join $imagesDir "line_darrow_green.png"]]
+    itk_component add measure {
+        Rappture::PushButton $itk_component(moviecontrols).measurepb \
+            -onimage $measImg \
+            -offimage $measImg \
+            -disabledimage $measImg \
+            -command [itcl::code $this togglePtrCtrl "measure"] \
+            -variable [itcl::scope _pbvars(measure)]
+    } {
+        usual
+    }
+    $itk_component(measure) disable
+    Rappture::Tooltip::for $itk_component(measure) \
+        "Measure the distance of a structure"
+
+    # ==== particle mark tool ====
+    set particleImg [image create photo -file [file join $imagesDir "volume-on.gif"]]
+    itk_component add particle {
+        Rappture::PushButton $itk_component(moviecontrols).particlepb \
+            -onimage $particleImg \
+            -offimage $particleImg \
+            -disabledimage $particleImg \
+            -command [itcl::code $this togglePtrCtrl "particle"] \
+            -variable [itcl::scope _pbvars(particle)]
+    } {
+        usual
+    }
+    $itk_component(particle) disable
+    Rappture::Tooltip::for $itk_component(particle) \
+        "Mark the location of a particle to follow"
+
+
+    # Rewind
+    itk_component add rewind {
+        button $itk_component(moviecontrols).rewind \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -image [Rappture::icon video-rewind] \
+            -command [itcl::code $this video seek 0]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground \
+            Background
+    }
+    $itk_component(rewind) configure -state disabled
+    Rappture::Tooltip::for $itk_component(rewind) \
+        "Rewind movie"
+
+    # Seek back
+    itk_component add seekback {
+        button $itk_component(moviecontrols).seekback \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -image [Rappture::icon flow-rewind] \
+            -command [itcl::code $this video seek -1]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground \
+            Background
+    }
+    $itk_component(seekback) configure -state disabled
+    Rappture::Tooltip::for $itk_component(rewind) \
+        "Seek backwards 1 frame"
+
+    # Play
+    itk_component add play {
+        Rappture::PushButton $itk_component(moviecontrols).play \
+            -onimage [Rappture::icon flow-pause] \
+            -offimage [Rappture::icon flow-play] \
+            -disabledimage [Rappture::icon flow-play] \
+            -variable [itcl::scope _settings(play)] \
+            -command [itcl::code $this video play]
+    }
+    $itk_component(play) disable
+    Rappture::Tooltip::for $itk_component(play) \
+        "Play/Pause movie"
+
+    # Seek forward
+    itk_component add seekforward {
+        button $itk_component(moviecontrols).seekforward \
+            -borderwidth 1 -padx 1 -pady 1 \
+            -image [Rappture::icon flow-forward] \
+            -command [itcl::code $this video seek +1]
+    } {
+        usual
+        ignore -borderwidth
+        rename -highlightbackground -controlbackground controlBackground \
+            Background
+    }
+    $itk_component(seekforward) configure -state disabled
+    Rappture::Tooltip::for $itk_component(seekforward) \
+        "Seek forward 1 frame"
+
+    # Loop
+    itk_component add loop {
+        Rappture::PushButton $itk_component(moviecontrols).loop \
+            -onimage [Rappture::icon flow-loop] \
+            -offimage [Rappture::icon flow-loop] \
+            -disabledimage [Rappture::icon flow-loop] \
+            -variable [itcl::scope _settings(loop)] \
+            -command [itcl::code $this toggleloop]
+    }
+    $itk_component(loop) disable
+    Rappture::Tooltip::for $itk_component(loop) \
+        "Play continuously between marked sections"
+
+    itk_component add dial {
+        frame $itk_interior.dial
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+
+    # Video Dial Major
+    itk_component add dialmajor {
+        Rappture::Videodial1 $itk_component(dial).dialmajor \
+            -length 10 -valuewidth 0 -valuepadding 0 -padding 6 \
+            -linecolor "" -activelinecolor "" \
+            -min 0 -max 1 \
+            -variable [itcl::scope _settings(framenum)] \
+            -dialoutlinecolor black \
+            -knobimage [Rappture::icon knob2] -knobposition center@middle
+    } {
+        usual
+        ignore -dialprogresscolor
+        rename -background -controlbackground controlBackground Background
+    }
+    $itk_component(dialmajor) current 0
+    bind $itk_component(dialmajor) <<Value>> [itcl::code $this video update]
+
+    # Video Dial Minor
+    itk_component add dialminor {
+        Rappture::Videodial2 $itk_component(dial).dialminor \
+            -padding 0 \
+            -min 0 -max 1 \
+            -minortick 1 -majortick 5 \
+            -variable [itcl::scope _settings(framenum)] \
+            -dialoutlinecolor black
+    } {
+        usual
+        rename -background -controlbackground controlBackground Background
+    }
+    $itk_component(dialminor) current 0
+    bind $itk_component(dialminor) <<Value>> [itcl::code $this video update]
+
+    set fg [option get $itk_component(hull) font Font]
+
+    itk_component add framenumlabel {
+        label $itk_component(frnumfr).framenuml -text "Frame:" -font "arial 9" \
+            -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -controlbackground controlBackground Background
+    }
+
+    # Current Frame Number
+    itk_component add framenum {
+        label $itk_component(frnumfr).framenum \
+            -background white -font "arial 9" \
+            -textvariable [itcl::scope _settings(framenum)]
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -controlbackground controlBackground Background
+    }
+    Rappture::Tooltip::for $itk_component(framenum) \
+        "Current frame number"
+
+
+    pack $itk_component(framenumlabel) -side left
+    pack $itk_component(framenum) -side right
+
+
+    itk_component add speedlabel {
+        label $itk_component(moviecontrols).speedl -text "Speed:" -font $fg \
+            -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -controlbackground controlBackground Background
+    }
+
+    # Speed
+    itk_component add speed {
+        Rappture::Videospeed $itk_component(moviecontrols).speed \
+            -min 0 -max 1 -width 4 -font "arial 9" -factor 2
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -controlbackground controlBackground Background
+    }
+    Rappture::Tooltip::for $itk_component(speed) \
+        "Change speed of movie"
+
+    $itk_component(speed) value 0.25
+    bind $itk_component(speed) <<Value>> [itcl::code $this video speed]
+
+
+    blt::table $itk_component(dial) \
+        0,0 $itk_component(dialmajor) -fill x \
+        1,0 $itk_component(dialminor) -fill x
+
+    blt::table $itk_component(moviecontrols) \
+        0,0 $itk_component(fileopen) -padx {2 0}  \
+        0,1 $itk_component(measure) -padx {4 0}  \
+        0,2 $itk_component(particle) -padx {4 0} \
+        0,5 $itk_component(dial) -fill x -padx {2 4} -rowspan 3 \
+        1,0 $itk_component(rewind) -padx {2 0} \
+        1,1 $itk_component(seekback) -padx {4 0} \
+        1,2 $itk_component(play) -padx {4 0} \
+        1,3 $itk_component(seekforward) -padx {4 0} \
+        1,4 $itk_component(loop) -padx {4 0} \
+        2,0 $itk_component(frnumfr) -padx {0 0} -cspan 3 \
+        2,3 $itk_component(speed) -padx {2 0} -cspan 2
+
+    blt::table configure $itk_component(moviecontrols) c* -resize none
+    blt::table configure $itk_component(moviecontrols) c5 -resize both
+    blt::table configure $itk_component(moviecontrols) r0 -pady 1
+
+
+    blt::table $itk_interior \
+        0,0 $itk_component(main) -fill both \
+        1,0 $itk_component(moviecontrols) -fill x
+    blt::table configure $itk_interior c* -resize both
+    blt::table configure $itk_interior r0 -resize both
+    blt::table configure $itk_interior r1 -resize none
+
+    eval itk_initialize $args
+
+    $itk_component(main) configure -background black
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::destructor {} {
+    array unset _settings *
+    array unset _pendings *
+    array unset _pbvars *
+    array unset _counters *
+
+
+    if {[info exists _imh] && ("" != ${_imh})} {
+        image delete ${_imh}
+        set _imh ""
+    }
+
+    if {[info exists measImg]} {
+        image delete $measImg
+        set measImg ""
+    }
+
+    if {[info exists particleImg]} {
+        image delete $particleImg
+        set particleImg ""
+    }
+
+    if {("" != [info commands ${_movie}])} {
+        # clear the movie if it is still open
+        ${_movie} release
+        set _movie ""
+    }
+
+    clearDrawings
+}
+
+# ----------------------------------------------------------------------
+# clearDrawings - delete all particle and measurement objects
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::clearDrawings {} {
+
+    # delete all previously placed particles
+    set obj [lindex ${_particles} end]
+    while {"" != [info commands $obj]} {
+        itcl::delete object $obj
+        set _particles [lreplace ${_particles} end end]
+        if {[llength ${_particles}] == 0} {
+            break
+        }
+        set obj [lindex ${_particles} end]
+    }
+
+    # delete all previously placed measurements
+    set obj [lindex ${_measurements} end]
+    while {"" != [info commands $obj]} {
+        itcl::delete object $obj
+        set _measurements [lreplace ${_measurements} end end]
+        if {[llength ${_measurements}] == 0} {
+            break
+        }
+        set obj [lindex ${_measurements} end]
+    }
+}
+
+# ----------------------------------------------------------------------
+# load - load a video file
+#   type - type of data, "data" or "file"
+#   data - what to load.
+#       if type == "data", data is treated like binary data
+#       if type == "file", data is treated like the name of a file
+#           and is opened and then loaded.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::load {type data} {
+
+    video stop
+
+    # open the file
+    set fname ""
+    switch $type {
+        "data" {
+            if {"" == $data} {
+                error "bad value \"$data\": data should be a movie"
+            }
+
+            set fname "/tmp/tmpVV[pid].video"
+            set fid [open $fname "w"]
+            fconfigure $fid -translation binary -encoding binary
+            puts $fid $data
+            close $fid
+            set type "file"
+            set data $fname
+        }
+        "file" {
+            if {"" == $data} {
+                error "bad value \"$data\": data should be a movie file path"
+            }
+            # do nothing
+        }
+        default {
+            error "bad value: \"$type\": should be \"load \[data|file\] <data>\""
+        }
+    }
+
+    if {"file" == $type} {
+        if {("" != [info commands ${_movie}])} {
+            # compare the new file name to the name of the file
+            # we already have open in our _movie object.
+            # if they are the same, do not reopen the video.
+            # if they are different, close the old movie
+            # and clear out all old drawings from the canvas.
+            set err [catch {${_movie} filename} filename]
+            if {($err == 0)&& ($data == $filename)} {
+                # video file already open, don't reopen it.
+                return
+            } else {
+                # clear the old movie
+                ${_movie} release
+                set _width -1
+                set _height -1
+
+                # delete drawings objects from canvas
+                clearDrawings
+            }
+        }
+    }
+
+    set _movie [Rappture::Video $type $data]
+    if {"" != $fname} {
+        file delete $fname
+    }
+    set _framerate [${_movie} framerate]
+    video speed
+    puts stderr "framerate: ${_framerate}"
+
+    set _lastFrame [${_movie} get position end]
+
+    # update the dial with video information
+    $itk_component(dialmajor) configure -min 0 -max ${_lastFrame}
+    $itk_component(dialminor) configure -min 0 -max ${_lastFrame}
+
+    # turn on the buttons and dials
+    $itk_component(measure) enable
+    $itk_component(particle) enable
+    $itk_component(rewind) configure -state normal
+    $itk_component(seekback) configure -state normal
+    $itk_component(play) enable
+    $itk_component(seekforward) configure -state normal
+    $itk_component(loop) enable
+
+    # make sure looping is off
+    set _settings(loop) 0
+    $itk_component(dialminor) loop disable
+
+    fixSize
+
+    # goto the first frame
+    # update the dial and framenum widgets
+    video seek 0
+    set _settings(framenum) 0
+}
+
+# ----------------------------------------------------------------------
+# loadcb - load callback
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::loadcb {args} {
+    video stop
+    Rappture::filexfer::upload {piv tool} {id label desc} [itcl::code $this Upload]
+}
+
+# ----------------------------------------------------------------------
+# Upload -
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::Upload {args} {
+    array set data $args
+    video stop
+
+    if {[info exists data(error)]} {
+        Rappture::Tooltip::cue $itk::component(main) $data(error)
+        puts stderr $data(error)
+    }
+
+    if {[info exists data(path)] && [info exists data(data)]} {
+        Rappture::Tooltip::cue hide  ;# take down note about the popup window
+
+        # load data
+        load "data" $data(data)
+    }
+
+}
+
+
+# ----------------------------------------------------------------------
+# fixSize
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::fixSize {} {
+
+    if {[string compare "" ${_movie}] == 0} {
+        return
+    }
+
+    if {![winfo ismapped $itk_component(hull)]} {
+        return
+    }
+
+    # get dimensions for the new image
+    # adjust the aspect ratio, if necessary
+
+    puts stderr "aspect ratio: [query aspectratio]"
+
+    foreach {w h} [query dimensions] break
+    foreach {num den} [query aspectratio] break
+
+    if {[expr 1.0*$w/$h] != [expr 1.0*$num/$den]} {
+        # we need to adjust the frame height and width
+        # to keep the correct aspect ratio
+        # hold the height constant,
+        # adjust the width as close as we can
+        # to the correct aspect ratio
+        set w [expr int(1.0*$num/$den*$h)]
+    }
+
+    if {-1 == ${_width}} {
+        set _width $w
+    }
+    if {-1 == ${_height}} {
+        set _height $h
+    }
+
+    # get an image with the new size
+    ${_imh} blank
+    ${_imh} configure -width 1 -height 1
+    ${_imh} configure -width 0 -height 0
+    ${_imh} put [${_movie} get image ${_width} ${_height}]
+
+    # place the image in the center of the canvas
+    set ccw [winfo width $itk_component(main)]
+    set cch [winfo height $itk_component(main)]
+    $itk_component(main) coords videoframe [expr $ccw/2.0] [expr $cch/2.0]
+
+    puts stderr "----------------------------"
+    puts stderr "adjusted = $w $h"
+    puts stderr "data     = ${_width} ${_height}"
+    puts stderr "image    = [image width ${_imh}] [image height ${_imh}]"
+    foreach {x0 y0 x1 y1} [$itk_component(main) bbox videoframe] break
+    puts stderr "bbox     = $x0 $y0 $x1 $y1"
+    puts stderr "ccw cch  = [expr $ccw/2.0] [expr $cch/2.0]"
+    puts stderr "main     = [winfo width $itk_component(main)] [winfo height $itk_component(main)]"
+    puts stderr "hull     = [winfo width $itk_component(hull)] [winfo height $itk_component(hull)]"
+}
+
+# ----------------------------------------------------------------------
+# video - play, stop, rewind, fastforward the video
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::video { args } {
+    set option [lindex $args 0]
+    switch -- $option {
+        "play" {
+            if {$_settings(play) == 1} {
+                eventually play
+            } else {
+                # pause/stop
+                after cancel $_id
+                set _pendings(play) 0
+                set _settings(play) 0
+            }
+        }
+        "seek" {
+            Seek [lreplace $args 0 0]
+        }
+        "stop" {
+            after cancel $_id
+            set _settings(play) 0
+        }
+        "speed" {
+            set speed [$itk_component(speed) value]
+            set _mspf [expr round(((1.0/${_framerate})*1000)/$speed)]
+            set _delay [expr {${_mspf} - ${_ofrd}}]
+            puts stderr "_mspf = ${_mspf} | $speed | ${_ofrd} | ${_delay}"
+        }
+        "update" {
+            eventually seek [expr round($_settings(framenum))]
+            # Seek [expr round($_settings(framenum))]
+        }
+        default {
+            error "bad option \"$option\": should be play, stop, toggle, position, or reset."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# query - query things about the video
+#
+#   dimensions  - returns width and height as a list
+#   frames      - number of frames in video (last frame + 1)
+#   framenum    - current position
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::query { type } {
+    set ret ""
+    switch -- $type {
+        "aspectratio" {
+            set ret [${_movie} aspect display]
+        }
+        "dimensions" {
+            set ret [${_movie} size]
+        }
+        "frames" {
+            set ret [expr [${_movie} get position end] + 1]
+        }
+        "framenum" {
+            set ret [${_movie} get position cur]
+        }
+        default {
+            error "bad type \"$type\": should be dimensions, frames, framenum."
+        }
+    }
+    return $ret
+}
+
+# ----------------------------------------------------------------------
+# Play - get the next video frame
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::Play {} {
+
+    set cur ${_nextframe}
+
+    # time how long it takes to retrieve the next frame
+    set _ofrd [time {
+        # use seek instead of next fxn incase the ${_nextframe} is
+        # not the current frame+1. this happens when we skip frames
+        # because the underlying c lib is too slow at reading.
+        ${_movie} seek $cur
+        ${_imh} put [${_movie} get image ${_width} ${_height}]
+    } 1]
+    regexp {(\d+\.?\d*) microseconds per iteration} ${_ofrd} match _ofrd
+    set _ofrd [expr {round(${_ofrd}/1000)}]
+
+    # calculate the delay we shoud see
+    # between frames being placed on screen
+    # taking into account the cost of retrieving the frame
+    set _delay [expr {${_mspf}-${_ofrd}}]
+    if {0 > ${_delay}} {
+        set _delay 0
+    }
+
+    set cur [${_movie} get position cur]
+
+    # update the dial and framenum widgets
+    set _settings(framenum) $cur
+
+
+    # no play cmds pending
+    set _pendings(play) 0
+
+    # if looping is turned on and markers setup,
+    # then loop back to loopstart when cur hits loopend
+    if {$_settings(loop)} {
+        if {$cur == [$itk_component(dialminor) mark position loopend]} {
+            Seek [$itk_component(dialminor) mark position loopstart]
+        }
+    }
+
+    # schedule the next frame to be displayed
+    if {$cur < ${_lastFrame}} {
+        set _id [after ${_delay} [itcl::code $this eventually play]]
+    } else {
+        video stop
+    }
+
+    event generate $itk_component(hull) <<Frame>>
+}
+
+
+# ----------------------------------------------------------------------
+# Seek - go to a frame in the video
+#   Seek +5
+#   Seek -5
+#   Seek 35
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::Seek {args} {
+    set val [lindex $args 0]
+    if {"" == $val} {
+        error "bad value: \"$val\": should be \"seek value\""
+    }
+    set cur [${_movie} get position cur]
+    if {[string compare $cur $val] == 0} {
+        # already at the frame to seek to
+        set _pendings(seek) 0
+        return
+    }
+    ${_movie} seek $val
+    ${_imh} put [${_movie} get image ${_width} ${_height}]
+
+    # update the dial and framenum widgets
+    set _settings(framenum) [${_movie} get position cur]
+    event generate $itk_component(main) <<Frame>>
+
+    # removing pending
+    set _pendings(seek) 0
+}
+
+
+# ----------------------------------------------------------------------
+# eventually -
+#   seek
+#   play
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::eventually {args} {
+    set option [lindex $args 0]
+    switch -- $option {
+        "seek" {
+            if {0 == $_pendings(seek)} {
+                # no seek pending, schedule one
+                set _pendings(seek) 1
+                after idle [itcl::code $this Seek [lindex $args 1]]
+            } else {
+                # there is a seek pending, update its seek value
+            }
+        }
+        "play" {
+            if {0 == $_pendings(play)} {
+                # no play pending schedule one
+                set _pendings(play) 1
+                set _nextframe [expr {[${_movie} get position cur] + 1}]
+                after idle [itcl::code $this Play]
+            } else {
+                # there is a play pending, update its frame value
+                incr _nextframe
+            }
+        }
+        default {
+        }
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# togglePtrCtrl - choose pointer mode:
+#                 rectangle, measure, particlemark
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::togglePtrCtrl {tool} {
+
+    if {[info exists _pbvars($tool)] == 0} {
+        return
+    }
+
+    if {$_pbvars($tool) == 1} {
+        # unpush previously pushed buttons
+        foreach pbv [array names _pbvars] {
+            if {[string compare $tool $pbv] != 0} {
+                set _pbvars($pbv) 0
+            }
+        }
+    }
+    togglePtrBind $tool
+}
+
+
+# ----------------------------------------------------------------------
+# whatPtrCtrl - figure out the current pointer mode:
+#                 rectangle,  measure, particlemark
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::whatPtrCtrl {} {
+    foreach pbv [array names _pbvars] {
+        if {$_pbvars($pbv) != 0} {
+            return $pbv
+        }
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# togglePtrBind - update the bindings based on pointer controls
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::togglePtrBind {pbvar} {
+
+    if {[string compare $pbvar current] == 0} {
+        set pbvar [whatPtrCtrl]
+    }
+
+    if {[string compare $pbvar rectangle] == 0} {
+
+        # Bindings for selecting rectangle
+        $itk_component(main) configure -cursor ""
+
+        bind $itk_component(main) <ButtonPress-1> \
+            [itcl::code $this Rubberband new %W %x %y]
+        bind $itk_component(main) <B1-Motion> \
+            [itcl::code $this Rubberband drag %W %x %y]
+        bind $itk_component(main) <ButtonRelease-1> \
+            [itcl::code $this Rubberband release %W %x %y]
+
+    } elseif {[string compare $pbvar measure] == 0} {
+
+        # Bindings for measuring distance
+        $itk_component(main) configure -cursor ""
+
+        bind $itk_component(main) <ButtonPress-1> \
+            [itcl::code $this Measure new %W %x %y]
+        bind $itk_component(main) <B1-Motion> \
+            [itcl::code $this Measure drag %W %x %y]
+        bind $itk_component(main) <ButtonRelease-1> \
+            [itcl::code $this Measure release %W %x %y]
+
+    } elseif {[string compare $pbvar particle] == 0} {
+
+        # Bindings for marking particle locations
+        $itk_component(main) configure -cursor ""
+
+        bind $itk_component(main) <ButtonPress-1> \
+            [itcl::code $this Particle new %W %x %y]
+        bind $itk_component(main) <B1-Motion> ""
+        bind $itk_component(main) <ButtonRelease-1> ""
+
+
+    } elseif {[string compare $pbvar object] == 0} {
+
+        # Bindings for interacting with objects
+        $itk_component(main) configure -cursor hand2
+
+        bind $itk_component(main) <ButtonPress-1> { }
+        bind $itk_component(main) <B1-Motion> { }
+        bind $itk_component(main) <ButtonRelease-1> { }
+
+    } else {
+
+        # invalid pointer mode
+
+    }
+}
+
+
+
+
+
+###### DRAWING TOOLS #####
+
+
+
+
+
+# ----------------------------------------------------------------------
+# Rubberband - draw a rubberband around something in the canvas
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::Rubberband {status win x y} {
+    switch -- $status {
+        "new" {
+            $win delete "rubbershape"
+            set _x0 $x
+            set _y0 $y
+            $win create rectangle \
+                $x $y $x $y -outline white -width 2  \
+                -tags "rubbershape" -dash {4 4}
+        }
+        "drag" {
+            foreach { x0 y0 x1 y1 } [$win coords "rubbershape"] break
+
+            if {$_x0 > $x} {
+                # backward direction
+                set x0 $x
+                set x1 $_x0
+            } else {
+                set x1 $x
+            }
+
+            if {$_y0 >= $y} {
+                # backward direction
+                set y0 $y
+                set y1 $_y0
+            } else {
+                set y1 $y
+            }
+
+            eval $win coords "rubbershape" [list $x0 $y0 $x1 $y1]
+        }
+        "release" {
+            Rubberband drag $win $x $y
+        }
+        default {
+            error "bad status \"$status\": should be new, drag, or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Measure - draw a line to measure something on the canvas,
+#           when user releases the line, user is given the
+#           calculated measurement.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::Measure {status win x y} {
+    switch -- $status {
+        "new" {
+            set name "measure[incr _counters(measure)]"
+
+            set _obj [Rappture::VideoDistance $itk_component(main).$name $name $win \
+                        -fncallback [itcl::code $this query framenum] \
+                        -bindentercb [itcl::code $this togglePtrBind object] \
+                        -bindleavecb [itcl::code $this togglePtrBind current] \
+                        -writetextcb [itcl::code $this writeText] \
+                        -ondelete [itcl::code $itk_component(dialminor) mark remove $name] \
+                        -onframe [itcl::code $itk_component(dialminor) mark add $name] \
+                        -px2dist [itcl::scope _px2dist] \
+                        -units "m" \
+                        -color green \
+                        -bindings disable]
+            ${_obj} Coords $x $y $x $y
+            ${_obj} Show object
+            lappend _measurements ${_obj}
+        }
+        "drag" {
+            # FIXME: something wrong with the bindings, if the objects menu is
+            #        open, and you click on the canvas off the menu, a "drag"
+            #        or "release" call is made. need to figure out how to
+            #        disable bindings while obj's menu is open. for now
+            #        we set _obj to "" when we are finished creating it and
+            #        check to see if it's valid when we do a drag or release
+
+            if {"" == ${_obj}} {
+                return
+            }
+
+            ${_obj} Coords [lreplace [${_obj} Coords] 2 3 $x $y]
+        }
+        "release" {
+            # if we enable ${_obj}'s bindings when we create it,
+            # probably never entered because the object's <Enter>
+            # bindings kick in before the window's release bindings do
+
+            if {"" == ${_obj}} {
+                return
+            }
+
+            Measure drag $win $x $y
+
+            if {${_px2dist} == 0} {
+                ${_obj} Menu activate $x $y
+            }
+            ${_obj} configure -bindings enable
+
+            set _obj ""
+        }
+        default {
+            error "bad status \"$status\": should be new, drag, or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Particle - mark a particle in the video, a new particle object is
+#            created from information like the name, which video
+#            frames it lives in, it's coords in the canvas in each
+#            frame, it's color...
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::Particle {status win x y} {
+    switch -- $status {
+        "new" {
+            set name "particle[incr _counters(particle)]"
+            set _obj [Rappture::VideoParticle $itk_component(main).$name $name $win \
+                        -fncallback [itcl::code $this query framenum] \
+                        -bindentercb [itcl::code $this togglePtrBind object] \
+                        -bindleavecb [itcl::code $this togglePtrBind current] \
+                        -trajcallback [itcl::code $this Trajectory] \
+                        -ondelete [itcl::code $itk_component(dialminor) mark remove $name] \
+                        -onframe [itcl::code $itk_component(dialminor) mark add $name] \
+                        -framerange "0 ${_lastFrame}" \
+                        -halo 5 \
+                        -color green \
+                        -px2dist [itcl::scope _px2dist] \
+                        -units "m/s"]
+            ${_obj} Coords $x $y
+            ${_obj} Show object
+            #$itk_component(dialminor) mark add $name current
+            # bind $itk_component(hull) <<Frame>> [itcl::code $itk_component(main).$name UpdateFrame]
+
+            # link the new particle to the last particle added, if it exists
+            set lastp [lindex ${_particles} end]
+            while {"" == [info commands $lastp]} {
+                set _particles [lreplace ${_particles} end end]
+                if {[llength ${_particles}] == 0} {
+                    break
+                }
+                set lastp [lindex ${_particles} end]
+            }
+            if {"" != [info commands $lastp]} {
+                $lastp Link ${_obj}
+            }
+
+            # add the particle to the list
+            lappend _particles ${_obj}
+        }
+        default {
+            error "bad status \"$status\": should be new"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# Trajectory - draw a trajectory between two particles
+#
+#   Trajectory $p0 $p1
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::Trajectory {args} {
+
+    set nargs [llength $args]
+    if {($nargs != 1) && ($nargs != 2)} {
+        error "wrong # args: should be \"Trajectory p0 p1\""
+    }
+
+    set p0 ""
+    set p1 ""
+    foreach {p0 p1} $args break
+
+    if {[string compare "" $p0] == 0} {
+        # p0 does not exist
+        return
+    }
+
+    # remove any old trajectory links from p0
+    set p0name [$p0 name]
+    set oldlink "vec-$p0name"
+    $itk_component(main) delete $oldlink
+
+    # check to see if p1 exists anymore
+    if {[string compare "" $p1] == 0} {
+        # p1 does not exist
+        return
+    }
+
+    foreach {x0 y0} [$p0 Coords] break
+    foreach {x1 y1} [$p1 Coords] break
+    set p1name [$p1 name]
+    set link "vec-$p0name-$p1name"
+    $itk_component(main) create line $x0 $y0 $x1 $y1 \
+        -fill green \
+        -width 2 \
+        -tags "vector $link vec-$p0name" \
+        -dash {4 4} \
+        -arrow last
+    $itk_component(main) lower $link $p0name
+
+    # calculate trajectory, truncate it after 4 sigdigs
+    set t [calculateTrajectory [$p0 Frame] $x0 $y0 [$p1 Frame] $x1 $y1]
+    set tt [string range $t 0 [expr [string first . $t] + 4]]
+
+
+    # calculate coords for text
+    foreach { x0 y0 x1 y1 } [$itk_component(main) bbox $link] break
+    set x [expr "$x0 + (abs($x1-$x0)/2)"]
+    set y [expr "$y0 + (abs($y1-$y0)/2)"]
+
+    set tt "$tt m/s"
+    set tags "vectext $link vec-$p0name"
+    set width [expr sqrt(pow(abs($x1-$x0),2)+pow(abs($y1-$y0),2))]
+
+    writeText $x $y $tt green $tags $width
+    return $link
+}
+
+
+# ----------------------------------------------------------------------
+# writeText - write text to the canvas
+#   writes text to the canvas in the color <color> at <x>,<y>
+#   writes text twice more offset up-left and down right,
+#   to add a shadowing effect so colors can be seen
+#
+#   FIXME: Not sure how the text wrapped due to -width collides with the
+#          offset text.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::writeText {x y text color tags width} {
+    $itk_component(main) create text [expr $x-1] [expr $y] \
+        -tags $tags \
+        -justify center \
+        -text $text \
+        -fill black \
+        -width $width
+
+    $itk_component(main) create text [expr $x+1] [expr $y] \
+        -tags $tags \
+        -justify center \
+        -text $text \
+        -fill black \
+        -width $width
+
+    $itk_component(main) create text [expr $x] [expr $y-1] \
+        -tags $tags \
+        -justify center \
+        -text $text \
+        -fill black \
+        -width $width
+
+    $itk_component(main) create text [expr $x] [expr $y+1] \
+        -tags $tags \
+        -justify center \
+        -text $text \
+        -fill black \
+        -width $width
+
+#    # write text up-left
+#    $itk_component(main) create text [expr $x-1] [expr $y-1] \
+#        -tags $tags \
+#        -justify center \
+#        -text $text \
+#        -fill black \
+#        -width $width
+#
+#    # write text down-right
+#    $itk_component(main) create text [expr $x+1] [expr $y+1] \
+#        -tags $tags \
+#        -justify center \
+#        -text $text \
+#        -fill black \
+#        -width $width
+
+    # write text at x,y
+    $itk_component(main) create text $x $y \
+        -tags $tags \
+        -justify center \
+        -text $text \
+        -fill $color \
+        -width $width
+
+}
+
+# ----------------------------------------------------------------------
+# calculateTrajectory - calculate the value of the trajectory
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::calculateTrajectory {args} {
+    # set framerate 29.97         ;# frames per second
+    # set px2dist    8.00         ;# px per meter
+
+    foreach {f0 x0 y0 f1 x1 y1} $args break
+    set px [expr sqrt(pow(abs($x1-$x0),2)+pow(abs($y1-$y0),2))]
+    set frames [expr $f1 - $f0]
+
+    if {($frames != 0) && (${_px2dist} != 0)} {
+        set t [expr 1.0*$px/$frames*${_px2dist}*${_framerate}]
+    } else {
+        set t 0.0
+    }
+
+    return $t
+}
+
+# ----------------------------------------------------------------------
+# toggleloop - add/remove a start/end loop mark to video dial.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VideoScreen::toggleloop {} {
+    if {$_settings(loop) == 0} {
+        $itk_component(dialminor) loop disable
+    } else {
+        set cur [${_movie} get position cur]
+        set end [${_movie} get position end]
+
+        set startframe [expr $cur-10]
+        if {$startframe < 0} {
+            set startframe 0
+        }
+
+        set endframe [expr $cur+10]
+        if {$endframe > $end} {
+            set endframe $end
+        }
+
+        $itk_component(dialminor) loop between $startframe $endframe
+    }
+
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -width - width of the video
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoScreen::width {
+    # $_dispatcher event -idle !fixsize
+    if {[string is integer $itk_option(-width)] == 0} {
+        error "bad value: \"$itk_option(-width)\": width should be an integer"
+    }
+    set _width $itk_option(-width)
+    after idle [itcl::code $this fixSize]
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -height - height of the video
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoScreen::height {
+    # $_dispatcher event -idle !fixsize
+    if {[string is integer $itk_option(-height)] == 0} {
+        error "bad value: \"$itk_option(-height)\": height should be an integer"
+    }
+    set _height $itk_option(-height)
+    after idle [itcl::code $this fixSize]
+}
+
+# ----------------------------------------------------------------------
+# OPTION: -fileopen
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VideoScreen::fileopen {
+    $itk_component(fileopen) configure -command $itk_option(-fileopen)
+}
Index: /tags/1.6.0/gui/scripts/videospeed.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/videospeed.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/videospeed.tcl	(revision 6168)
@@ -0,0 +1,180 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: spinint - spinner for integer values
+#
+#  This widget is a spinner with up/down arrows for managing integer
+#  values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Videospeed.width 5 widgetDefault
+option add *Videospeed.textBackground white widgetDefault
+
+blt::bitmap define Videospeed-up {
+#define up_width 8
+#define up_height 4
+static unsigned char up_bits[] = {
+   0x10, 0x38, 0x7c, 0xfe};
+}
+
+blt::bitmap define Videospeed-down {
+#define arrow_width 8
+#define arrow_height 4
+static unsigned char arrow_bits[] = {
+   0xfe, 0x7c, 0x38, 0x10};
+}
+
+itcl::class Rappture::Videospeed {
+    inherit itk::Widget
+
+    itk_option define -min min Min ""
+    itk_option define -max max Max ""
+    itk_option define -factor factor Factor 1
+
+    constructor {args} { # defined below }
+
+    public method value {args}
+    public method bump {{factor up}}
+    protected method _validate {char}
+    protected variable _value ""
+}
+
+itk::usual Videospeed {
+    keep -cursor -font
+    keep -foreground -background
+    keep -textforeground -textbackground
+    keep -selectbackground -selectforeground -selectborderwidth
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videospeed::constructor {args} {
+    itk_component add entry {
+        entry $itk_interior.entry
+    } {
+        usual
+        keep -width
+        rename -background -textbackground textBackground Background
+        rename -foreground -textforeground textForeground Foreground
+        rename -highlightbackground -background background Background
+    }
+    pack $itk_component(entry) -side left -expand yes -fill x
+
+    bind $itk_component(entry) <KeyPress> \
+        [itcl::code $this _validate %A]
+    bind $itk_component(entry) <KeyPress-Return> \
+        "$this value \[$itk_component(entry) get\]"
+    bind $itk_component(entry) <KeyPress-Tab> \
+        "$this value \[$itk_component(entry) get\]"
+
+    itk_component add controls {
+        frame $itk_interior.cntls
+    }
+    pack $itk_component(controls) -side right
+
+    itk_component add up {
+        button $itk_component(controls).spinup -bitmap Videospeed-up \
+            -borderwidth 1 -relief raised -highlightthickness 0 \
+            -command [itcl::code $this bump up]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    pack $itk_component(up) -side top -expand yes -fill both
+
+    itk_component add down {
+        button $itk_component(controls).spindn -bitmap Videospeed-down \
+            -borderwidth 1 -relief raised -highlightthickness 0 \
+            -command [itcl::code $this bump down]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    pack $itk_component(down) -side bottom -expand yes -fill both
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value ?<newval>?
+#
+# Clients use this to query/set the value for this widget.  With
+# no args, it returns the current value for the widget.  If the
+# <newval> is specified, it sets the value of the widget and
+# sends a <<Value>> event.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videospeed::value {args} {
+    if {[llength $args] == 1} {
+        set string [lindex $args 0]
+        # allow for floating point values
+        if { [regexp {^ *([0-9]+\.?[0-9]*|\.[0-9]+)x *$} $string match newval] } {
+        } elseif { [regexp {^ *([0-9]+\.?[0-9]*|\.[0-9]+) *$} $string match newval] } {
+        } else {
+            bell
+            return
+        }
+        if {"" != $newval} {
+            if {"" != $itk_option(-min) && $newval < $itk_option(-min)} {
+                set newval $itk_option(-min)
+            }
+            if {"" != $itk_option(-max) && $newval > $itk_option(-max)} {
+                set newval $itk_option(-max)
+            }
+        }
+        set _value $newval
+        $itk_component(entry) delete 0 end
+        $itk_component(entry) insert 0 ${newval}x
+        after 10 \
+            [list catch [list event generate $itk_component(hull) <<Value>>]]
+    } elseif {[llength $args] != 0} {
+        error "wrong # args: should be \"value ?newval?\""
+    }
+    return $_value
+}
+
+# ----------------------------------------------------------------------
+# USAGE: bump ?<factor>?
+#
+# Used internally when you click on the up/down arrows.  Clients
+# can also use it directly to bump values up/down.  The optional
+# <factor> can be an integer value or the keyword "up" or "down".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videospeed::bump {{factor up}} {
+    if {"up" == $factor} {
+        set factor $itk_option(-factor)
+    } elseif {"down" == $factor} {
+        set factor [expr {1.0/$itk_option(-factor)}]
+    } elseif {![string is integer $factor]} {
+        error "bad factor \"$factor\": should be up, down, or integer"
+    }
+
+    set val [$itk_component(entry) get]
+    if {$val == ""} {
+        set val 0
+    }
+    value [expr {$_value*$factor}]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _validate <char>
+#
+# Validates each character as it is typed into the spinner.
+# If the <char> is not a digit, then this procedure beeps and
+# prevents the character from being inserted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Videospeed::_validate {char} {
+    if {[string match "\[ -~\]" $char]} {
+        if {![string match "\[0-9\]" $char]} {
+            bell
+            return -code break
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/visviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/visviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/visviewer.tcl	(revision 6168)
@@ -0,0 +1,1249 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  VisViewer -
+#
+#  This class is the base class for the various visualization viewers
+#  that use the nanoserver render farm.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+itcl::class ::Rappture::VisViewer {
+    inherit itk::Widget
+
+    itk_option define -sendcommand sendCommand SendCommand ""
+    itk_option define -receivecommand receiveCommand ReceiveCommand ""
+
+    private common _servers         ;# array of visualization server lists
+    set _servers(nanovis) "localhost:2000"
+    set _servers(pymol)   "localhost:2020"
+    set _servers(vmdmds)  "localhost:2018"
+    set _servers(vtkvis)  "localhost:2010"
+
+    private common _done            ;   # Used to indicate status of send.
+    private variable _buffer        ;   # buffer for incoming/outgoing commands
+    private variable _outbuf       ;    # buffer for outgoing commands
+    private variable _blockOnWrite 0;   # Should writes to socket block?
+    private variable _initialized
+    private variable _isOpen 0
+    private variable _afterId -1
+    private variable _icon 0
+    private variable _trace 0        ;    # Protocol tracing for console
+    private variable _logging 0      ;    # Command logging to file
+    # Number of milliseconds to wait before idle timeout.  If greater than 0,
+    # automatically disconnect from the visualization server when idle timeout
+    # is reached.
+    private variable _idleTimeout 43200000; # 12 hours
+    #private variable _idleTimeout 5000;    # 5 seconds
+    #private variable _idleTimeout 0;       # No timeout
+
+    protected variable _debug 0
+    protected variable _serverType "???";# Type of server.
+    protected variable _sid ""      ;   # socket connection to server
+    protected variable _maxConnects 100
+    protected variable _buffering 0
+    protected variable _cmdSeq 0     ;    # Command sequence number
+    protected variable _dispatcher "";  # dispatcher for !events
+    protected variable _hosts ""    ;   # list of hosts for server
+    protected variable _parser ""   ;   # interpreter for incoming commands
+    protected variable _image
+    protected variable _hostname
+    protected variable _numConnectTries 0
+    protected variable _debugConsole 0
+    protected variable _reportClientInfo 1
+    # Number of milliscends to wait for server reply before displaying wait
+    # dialog.  If set to 0, dialog is never displayed.
+    protected variable _waitTimeout 0
+
+    constructor { args } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    # Used internally only.
+    private method BuildConsole {}
+    private method DebugConsole {}
+    private method HideConsole {}
+    private method ReceiveHelper {}
+    private method SendDebugCommand {}
+    private method SendHelper {}
+    private method SendHelper.old {}
+    private method ServerDown {}
+    private method Shuffle { servers }
+    private method TraceComm { channel {data {}} }
+    private method WaitDialog { state }
+    private method Waiting { option widget }
+
+    protected method CheckConnection {}
+    protected method Color2RGB { color }
+    protected method ColorsToColormap { colors }
+    protected method Connect { servers }
+    protected method DebugOff {} {
+        set _debug 0
+    }
+    protected method DebugOn {} {
+        set _debug 1
+    }
+    protected method DebugTrace { args } {
+        if { $_debug } {
+            puts stderr "[info level -1]: $args"
+        }
+    }
+    protected method DisableWaitDialog {}
+    protected method Disconnect {}
+    protected method EnableWaitDialog { timeout }
+    protected method Euler2XYZ { theta phi psi }
+    protected method Flush {}
+    protected method GetColormapList { args }
+    protected method HandleError { args }
+    protected method HandleOk { args }
+    protected method IsConnected {}
+    protected method ReceiveBytes { nbytes }
+    protected method ReceiveEcho { channel {data ""} }
+    protected method SendBytes { bytes }
+    protected method SendCmd { string }
+    protected method SendData { bytes }
+    protected method SendEcho { channel {data ""} }
+    protected method StartBufferingCommands {}
+    protected method StartWaiting {}
+    protected method StopBufferingCommands {}
+    protected method StopWaiting {}
+    protected method ToggleConsole {}
+
+    private proc CheckNameList { namelist }  {
+        foreach host $namelist {
+            set pattern {^[a-zA-Z0-9\.]+:[0-9]}
+            if { ![regexp $pattern $host match] } {
+                error "bad visualization server address \"$host\": should be host:port,host:port,..."
+            }
+        }
+    }
+    public proc GetServerList { type } {
+        return $_servers($type)
+    }
+    public proc SetServerList { type namelist } {
+        # Convert the comma separated list into a Tcl list.  OGRE also adds
+        # a trailing comma that we want to ignore.
+        regsub -all "," $namelist " " namelist
+        CheckNameList $namelist
+        set _servers($type) $namelist
+    }
+    public proc RemoveServerFromList { type server } {
+        if { ![info exists _servers($type)] } {
+            error "unknown server type \"$type\""
+        }
+        set i [lsearch $_servers($type) $server]
+        if { $i < 0 } {
+            return
+        }
+        set _servers($type) [lreplace $_servers($type) $i $i]
+    }
+    public proc SetPymolServerList { namelist } {
+        SetServerList "pymol" $namelist
+    }
+    public proc SetNanovisServerList { namelist } {
+        SetServerList "nanovis" $namelist
+    }
+    public proc SetVtkServerList { namelist } {
+        SetServerList "vtk" $namelist
+    }
+}
+
+itk::usual Panedwindow {
+    keep -background -cursor
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VisViewer::constructor { args } {
+
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !serverDown
+    $_dispatcher dispatch $this !serverDown "[itcl::code $this ServerDown]; list"
+    $_dispatcher register !timeout
+    $_dispatcher dispatch $this !timeout "[itcl::code $this Disconnect]; list"
+
+    $_dispatcher register !waiting
+
+    set _buffer(in) ""
+    set _buffer(out) ""
+    #
+    # Create a parser to handle incoming requests
+    #
+    set _parser [interp create -safe]
+    foreach cmd [$_parser eval {info commands}] {
+        $_parser hide $cmd
+    }
+    # Add default handlers for "ok" acknowledgement and server errors.
+    $_parser alias ok       [itcl::code $this HandleOk]
+    $_parser alias viserror [itcl::code $this HandleError]
+
+    #
+    # Set up the widgets in the main body
+    #
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    itk_component add main {
+        Rappture::SidebarFrame $itk_interior.main -resizeframe 1
+    }
+    pack $itk_component(main) -expand yes -fill both
+    set f [$itk_component(main) component frame]
+
+    itk_component add plotarea {
+        frame $f.plotarea -highlightthickness 0 -background black
+    } {
+        ignore -background
+    }
+    pack $itk_component(plotarea) -fill both -expand yes
+    set _image(plot) [image create photo]
+
+    global env
+    if { [info exists env(VISRECORDER)] } {
+        set _logging 1
+        if { [file exists /tmp/recording.log] } {
+            file delete /tmp/recording.log
+        }
+    }
+    if { [info exists env(VISTRACE)] } {
+        set _trace 1
+    }
+    eval itk_initialize $args
+}
+
+#
+# destructor --
+#
+itcl::body Rappture::VisViewer::destructor {} {
+    $_dispatcher cancel !timeout
+    interp delete $_parser
+    array unset _done $this
+}
+
+#
+# Shuffle --
+#
+#   Shuffle the list of server hosts.
+#
+itcl::body Rappture::VisViewer::Shuffle { hosts } {
+    set randomHosts {}
+    set ticks [clock clicks]
+    expr {srand($ticks)}
+    for { set i [llength $hosts] } { $i > 0 } { incr i -1 } {
+        set index [expr {round(rand()*$i - 0.5)}]
+        if { $index == $i } {
+            set index [expr $i - 1]
+        }
+        lappend randomHosts [lindex $hosts $index]
+        set hosts [lreplace $hosts $index $index]
+    }
+    return $randomHosts
+}
+
+#
+# ServerDown --
+#
+#    Used internally to let the user know when the connection to the
+#    visualization server has been lost.  Puts up a tip encouraging the
+#    user to press any control to reconnect.
+#
+itcl::body Rappture::VisViewer::ServerDown {} {
+    if { [info exists itk_component(plotarea)] } {
+        set x [expr {[winfo rootx $itk_component(plotarea)]+10}]
+        set y [expr {[winfo rooty $itk_component(plotarea)]+10}]
+    } else {
+        set x 0; set y 0
+    }
+    Rappture::Tooltip::cue @$x,$y "Lost connection to visualization server.  This happens sometimes when there are too many users and the system runs out of memory.\n\nTo reconnect, reset the view or press any other control.  Your picture should come right back up."
+}
+
+#
+# Connect --
+#
+#    Connect to the visualization server (e.g. nanovis, pymolproxy).
+#    Creates an event callback that is triggered when we are idle
+#    (no I/O with the server) for some specified time.
+#
+itcl::body Rappture::VisViewer::Connect { servers } {
+    blt::busy hold $itk_component(hull) -cursor watch
+
+    if { $_numConnectTries > $_maxConnects } {
+        blt::busy release $itk_component(hull)
+        set x [expr {[winfo rootx $itk_component(hull)]+10}]
+        set y [expr {[winfo rooty $itk_component(hull)]+10}]
+        Rappture::Tooltip::cue @$x,$y "Exceeded maximum number of connection attmepts to any $_serverType visualization server. Please contact support."
+        return 0;
+    }
+    foreach server [Shuffle $servers] {
+        puts stderr "connecting to $server..."
+        foreach {hostname port} [split $server ":"] break
+        if { [catch {socket $hostname $port} _sid] != 0 } {
+            set _sid ""
+            RemoveServerFromList $_serverType $server
+            continue
+        }
+        incr _numConnectTries
+        set _hostname $server
+        fconfigure $_sid -translation binary -encoding binary
+
+        # Read back the server identification string.
+        if { [gets $_sid data] <= 0 } {
+            set _sid ""
+            puts stderr "ERORR reading from server data=($data)"
+            RemoveServerFromList $_serverType $server
+            continue
+        }
+        puts stderr "Render server is $data"
+        # We're connected. Cancel any pending serverDown events and
+        # release the busy window over the hull.
+        $_dispatcher cancel !serverDown
+        if { $_idleTimeout > 0 } {
+            $_dispatcher event -after $_idleTimeout !timeout
+        }
+        blt::busy release $itk_component(hull)
+        fconfigure $_sid -buffering line
+        fileevent $_sid readable [itcl::code $this ReceiveHelper]
+        return 1
+    }
+    blt::busy release $itk_component(hull)
+    set x [expr {[winfo rootx $itk_component(hull)]+10}]
+    set y [expr {[winfo rooty $itk_component(hull)]+10}]
+    Rappture::Tooltip::cue @$x,$y "Can't connect to any $_serverType visualization server.  This may be a network problem.  Wait a few moments and try resetting the view."
+    return 0
+}
+
+#
+# Disconnect --
+#
+#    Clients use this method to disconnect from the current rendering
+#    server.  Cancel any pending idle timeout events.
+#
+itcl::body Rappture::VisViewer::Disconnect {} {
+    after cancel $_afterId
+    $_dispatcher cancel !timeout
+    catch {close $_sid}
+    set _sid ""
+    set _buffer(in) ""
+    set _outbuf ""
+    set _cmdSeq 0
+}
+
+#
+# IsConnected --
+#
+#    Indicates if we are currently connected to a server.
+#
+itcl::body Rappture::VisViewer::IsConnected {} {
+    if { $_sid == "" } {
+        return 0
+    }
+    if { [eof $_sid] } {
+        set _sid ""
+        return 0
+    }
+    return 1
+}
+
+#
+# CheckConection --
+#
+#   This routine is called whenever we're about to send/receive data on
+#   the socket connection to the visualization server.  If we're connected,
+#   then reset the timeout event.  Otherwise try to reconnect to the
+#   visualization server.
+#
+itcl::body Rappture::VisViewer::CheckConnection {} {
+    $_dispatcher cancel !timeout
+    if { $_idleTimeout > 0 } {
+        $_dispatcher event -after $_idleTimeout !timeout
+    }
+    if { [IsConnected] } {
+        return 1
+    }
+    if { $_sid != "" } {
+        fileevent $_sid writable ""
+    }
+    # If we aren't connected, assume it's because the connection to the
+    # visualization server broke. Try to open a connection and trigger a
+    # rebuild.
+    $_dispatcher cancel !serverDown
+    set x [expr {[winfo rootx $itk_component(plotarea)]+10}]
+    set y [expr {[winfo rooty $itk_component(plotarea)]+10}]
+    Rappture::Tooltip::cue @$x,$y "Connecting..."
+    set code [catch { Connect } ok]
+    if { $code == 0 && $ok} {
+        $_dispatcher event -idle !rebuild
+        Rappture::Tooltip::cue hide
+    } else {
+        Rappture::Tooltip::cue @$x,$y "Can't connect to any $_serverType visualization server.  This may be a network problem.  Wait a few moments and try resetting the view."
+        return 0
+    }
+    return 1
+}
+
+#
+# Flush --
+#
+#    Flushes the socket.
+#
+itcl::body Rappture::VisViewer::Flush {} {
+    if { [CheckConnection] } {
+        flush $_sid
+    }
+}
+
+
+#
+# SendHelper --
+#
+#   Helper routine called from a file event to send data when the
+#   connection is writable (i.e. not blocked).  Sets a magic variable
+#   _done($this) when we're done.
+#
+itcl::body Rappture::VisViewer::SendHelper {} {
+    if { ![CheckConnection] } {
+        return 0
+    }
+    puts -nonewline $_sid $_buffer(out)
+    flush $_sid
+    set _buffer(out) ""
+    set _done($this) 1;                 # Success
+}
+
+#
+# SendHelper.old --
+#
+#   Helper routine called from a file event to send data when the
+#   connection is writable (i.e. not blocked).  Sends data in chunks of 8k
+#   (or less).  Sets magic variable _done($this) to indicate that we're
+#   either finished (success) or could not send bytes to the server
+#   (failure).
+#
+itcl::body Rappture::VisViewer::SendHelper.old {} {
+    if { ![CheckConnection] } {
+        return 0
+    }
+    set bytesLeft [string length $_buffer(out)]
+    if { $bytesLeft > 0} {
+        set chunk [string range $_buffer(out) 0 8095]
+        set _buffer(out)  [string range $_buffer(out) 8096 end]
+        incr bytesLeft -8096
+        set code [catch {
+            if { $bytesLeft > 0 } {
+                puts -nonewline $_sid $chunk
+            } else {
+                puts $_sid $chunk
+            }
+        } err]
+        if { $code != 0 } {
+            puts stderr "error sending data to $_sid: $err"
+            Disconnect
+            set _done($this) 0;     # Failure
+        }
+    } else {
+        set _done($this) 1;     # Success
+    }
+}
+
+#
+# SendBytes --
+#
+#   Send a a string to the visualization server.
+#
+itcl::body Rappture::VisViewer::SendBytes { bytes } {
+    SendEcho >>line $bytes
+    if { ![CheckConnection] } {
+        return 0
+    }
+    StartWaiting
+    # Even though the data is sent in only 1 "puts", we need to verify that
+    # the server is ready first.  Wait for the socket to become writable
+    # before sending anything.
+    set _done($this) 1
+    if {$_trace && $_buffer(out) != ""} {
+        puts stderr "ERROR: re-entered SendBytes: buffer=([string range $_buffer(out) 0 70]...)"
+        puts stderr "New cmd $_cmdSeq: [string range $bytes 0 70]..."
+    }
+    set _buffer(out) $bytes
+    # There's problem when the user is interacting with the GUI at the
+    # same time we're trying to write to the server.  Don't want to
+    # block because, the GUI will look like it's dead.  We can start
+    # by putting a busy window over plot so that inadvertent things like
+    # mouse movements aren't received.
+    if {$_blockOnWrite} {
+        # Let's try this approach: allow a write to block so we don't
+        # re-enter SendBytes
+        SendHelper
+    } else {
+        # This can cause us to re-enter SendBytes during the tkwait, which
+        # is not safe because the _buffer will be clobbered
+        if { [info exists itk_component(main)] } {
+            blt::busy hold $itk_component(main) -cursor ""
+        }
+        fileevent $_sid writable [itcl::code $this SendHelper]
+        tkwait variable ::Rappture::VisViewer::_done($this)
+        if { [info exists itk_component(main)] } {
+            blt::busy release $itk_component(main)
+        }
+    }
+    set _buffer(out) ""
+    if { [IsConnected] } {
+        # The connection may have closed while we were writing to the server.
+        # This can happen if what we sent the server caused it to barf.
+        fileevent $_sid writable ""
+        flush $_sid
+    }
+    return $_done($this)
+}
+
+#
+# StartWaiting --
+#
+#    Display a waiting dialog after a timeout has passed
+#
+itcl::body Rappture::VisViewer::StartWaiting {} {
+    if { $_waitTimeout > 0 } {
+        after cancel $_afterId
+        set _afterId [after $_waitTimeout [itcl::code $this WaitDialog on]]
+    }
+}
+
+#
+# StopWaiting --
+#
+#    Take down waiting dialog
+#
+itcl::body Rappture::VisViewer::StopWaiting {} {
+    if { $_waitTimeout > 0 } {
+        WaitDialog off
+    }
+}
+
+itcl::body Rappture::VisViewer::EnableWaitDialog { value } {
+    set _waitTimeout $value
+}
+
+itcl::body Rappture::VisViewer::DisableWaitDialog {} {
+    set _waitTimeout 0
+}
+
+#
+# ReceiveBytes --
+#
+#    Read some number of bytes from the visualization server.
+#
+itcl::body Rappture::VisViewer::ReceiveBytes { size } {
+    if { ![CheckConnection] } {
+        return 0
+    }
+    set bytes [read $_sid $size]
+    ReceiveEcho <<line "<read $size bytes"
+    StopWaiting
+    return $bytes
+}
+
+#
+# ReceiveHelper --
+#
+#   Helper routine called from a file event when the connection is readable
+#   (i.e. a command response has been sent by the rendering server.  Reads
+#   the incoming command and executes it in a safe interpreter to handle the
+#   action.
+#
+#       Note: This routine currently only handles command responses from
+#         the visualization server.  It doesn't handle non-blocking
+#         reads from the visualization server.
+#
+#       nv>image -bytes 100000      yes
+#       ...following 100000 bytes...    no
+#
+#   Note: All commands from the render server are on one line.
+#         This is because the render server can send anything
+#         as an error message (restricted again to one line).
+#
+itcl::body Rappture::VisViewer::ReceiveHelper {} {
+    if { ![CheckConnection] } {
+        return 0
+    }
+    set n [gets $_sid line]
+
+    if { $n < 0 } {
+        Disconnect
+        return 0
+    }
+    set line [string trim $line]
+    if { $line == "" } {
+        return
+    }
+    if { [string compare -length 3 $line "nv>"] == 0 } {
+        ReceiveEcho <<line $line
+        if ($_trace) {
+            puts stderr "<<[string range $line 0 70]"
+        }
+        append _buffer(in) [string range $line 3 end]
+        append _buffer(in) "\n"
+        if {[info complete $_buffer(in)]} {
+            set request $_buffer(in)
+            set _buffer(in) ""
+            if { [catch {$_parser eval $request} err]  != 0 } {
+                global errorInfo
+                puts stderr "err=$err errorInfo=$errorInfo"
+            }
+        }
+    } elseif { [string compare -length 21 $line "NanoVis Server Error:"] == 0 ||
+               [string compare -length 20 $line "VtkVis Server Error:"] == 0} {
+        # this shows errors coming back from the engine
+        ReceiveEcho <<error $line
+        puts stderr "Render Server Error: $line\n"
+    } else {
+        # this shows errors coming back from the engine
+        ReceiveEcho <<error $line
+        puts stderr "Garbled message: $line\n"
+    }
+}
+
+#
+# Color2RGB --
+#
+#   Converts a color name to a list of r,g,b values needed for the engine.
+#   Each r/g/b component is scaled in the # range 0-1.
+#
+itcl::body Rappture::VisViewer::Color2RGB {color} {
+    foreach {r g b} [winfo rgb $itk_component(hull) $color] break
+    set r [expr {$r/65535.0}]
+    set g [expr {$g/65535.0}]
+    set b [expr {$b/65535.0}]
+    return [list $r $g $b]
+}
+
+#
+# Euler2XYZ --
+#
+#   Converts euler angles for the camera placement the to angles of
+#   rotation about the x/y/z axes, used by the engine.  Returns a list:
+#   {xangle, yangle, zangle}.
+#
+itcl::body Rappture::VisViewer::Euler2XYZ {theta phi psi} {
+    set xangle [expr {$theta-90.0}]
+    set yangle [expr {180.0-$phi}]
+    set zangle $psi
+    return [list $xangle $yangle $zangle]
+}
+
+#
+# SendEcho --
+#
+#     Used internally to echo sent data to clients interested in this widget.
+#     If the -sendcommand option is set, then it is invoked in the global scope
+#     with the <channel> and <data> values as arguments.  Otherwise, this does
+#     nothing.
+#
+itcl::body Rappture::VisViewer::SendEcho {channel {data ""}} {
+    if { $_logging }  {
+        set f [open "/tmp/recording.log" "a"]
+        fconfigure $f -translation binary -encoding binary
+        puts -nonewline $f $data
+        close $f
+    }
+    #puts stderr ">>($data)"
+    if {[string length $itk_option(-sendcommand)] > 0} {
+        uplevel #0 $itk_option(-sendcommand) [list $channel $data]
+    }
+}
+
+#
+# ReceiveEcho --
+#
+#     Echoes received data to clients interested in this widget.  If the
+#     -receivecommand option is set, then it is invoked in the global scope
+#     with the <channel> and <data> values as arguments.  Otherwise, this
+#     does nothing.
+#
+itcl::body Rappture::VisViewer::ReceiveEcho {channel {data ""}} {
+    #puts stderr "<<line $data"
+    if {[string length $itk_option(-receivecommand)] > 0} {
+        uplevel #0 $itk_option(-receivecommand) [list $channel $data]
+    }
+}
+
+itcl::body Rappture::VisViewer::WaitDialog { state } {
+    after cancel $_afterId
+    set _afterId -1
+    if { $state } {
+        if { [winfo exists $itk_component(plotarea).view.splash] } {
+            return
+        }
+        set inner [frame $itk_component(plotarea).view.splash]
+        $inner configure -relief raised -bd 2
+        label $inner.text1 -text "Working...\nPlease wait." \
+            -font "Arial 10"
+        label $inner.icon
+        pack $inner -expand yes -anchor c
+        blt::table $inner \
+            0,0 $inner.text1 -anchor w \
+            0,1 $inner.icon
+        Waiting start $inner.icon
+    } else {
+        if { ![winfo exists $itk_component(plotarea).view.splash] } {
+            return
+        }
+        Waiting stop $itk_component(plotarea).view.splash
+        destroy $itk_component(plotarea).view.splash
+    }
+}
+
+itcl::body Rappture::VisViewer::Waiting { option widget } {
+    switch -- $option {
+        "start" {
+            $_dispatcher dispatch $this !waiting \
+                "[itcl::code $this Waiting "next" $widget] ; list"
+            set _icon 0
+            $widget configure -image [Rappture::icon bigroller${_icon}]
+            $_dispatcher event -after 150 !waiting
+        }
+        "next" {
+            incr _icon
+            if { $_icon >= 8 } {
+                set _icon 0
+            }
+            $widget configure -image [Rappture::icon bigroller${_icon}]
+            $_dispatcher event -after 150 !waiting
+        }
+        "stop" {
+            $_dispatcher cancel !waiting
+        }
+    }
+}
+
+#
+# HideConsole --
+#
+#    Hide the debug console by withdrawing its toplevel window.
+#
+itcl::body Rappture::VisViewer::HideConsole {} {
+    set _debugConsole 0
+    DebugConsole
+}
+
+#
+# BuildConsole --
+#
+#    Create and pack the widgets that make up the debug console: a text
+#    widget to display the communication and an entry widget to type
+#    in commands to send to the render server.
+#
+itcl::body Rappture::VisViewer::BuildConsole {} {
+    toplevel .renderconsole
+    wm protocol .renderconsole WM_DELETE_WINDOW [itcl::code $this HideConsole]
+    set f .renderconsole
+    frame $f.send
+    pack $f.send -side bottom -fill x
+    label $f.send.l -text "Send:"
+    pack $f.send.l -side left
+    itk_component add command {
+        entry $f.send.e -background white
+    } {
+        ignore -background
+    }
+    pack $f.send.e -side left -expand yes -fill x
+    bind $f.send.e <Return> [itcl::code $this SendDebugCommand]
+    bind $f.send.e <KP_Enter> [itcl::code $this SendDebugCommand]
+    scrollbar $f.sb -orient vertical -command "$f.comm yview"
+    pack $f.sb -side right -fill y
+    itk_component add trace {
+        text $f.comm -wrap char -yscrollcommand "$f.sb set" -background white
+    } {
+        ignore -background
+    }
+    pack $f.comm -expand yes -fill both
+    bind $f.comm <Control-F1> [itcl::code $this ToggleConsole]
+    bind $f.comm <Enter> [list focus %W]
+    bind $f.send.e <Control-F1> [itcl::code $this ToggleConsole]
+
+    $itk_component(trace) tag configure error -foreground red \
+        -font -*-courier-medium-o-normal-*-*-120-*
+    $itk_component(trace) tag configure incoming -foreground blue
+}
+
+#
+# ToggleConsole --
+#
+#    This is used by derived classes to turn on/off debuging.  It's
+#    up the to derived class to decide how to turn on/off debugging.
+#
+itcl::body Rappture::VisViewer::ToggleConsole {} {
+    if { $_debugConsole } {
+        set _debugConsole 0
+    } else {
+        set _debugConsole 1
+    }
+    DebugConsole
+}
+
+#
+# DebugConsole --
+#
+#    Based on the value of the variable _debugConsole, turns on/off
+#    debugging. This is done by setting/unsetting a procedure that
+#    is called whenever new characters are received or sent on the
+#    socket to the render server.  Additionally, the debug console
+#    is created if necessary and hidden/shown.
+#
+itcl::body Rappture::VisViewer::DebugConsole {} {
+    if { ![winfo exists .renderconsole] } {
+        BuildConsole
+    }
+    if { $_debugConsole } {
+        $this configure -sendcommand [itcl::code $this TraceComm]
+        $this configure -receivecommand [itcl::code $this TraceComm]
+        wm deiconify .renderconsole
+    } else {
+        $this configure -sendcommand ""
+        $this configure -receivecommand ""
+        wm withdraw .renderconsole
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: TraceComm <channel> <data>
+#
+# Invoked automatically whenever there is communication between
+# the rendering widget and the server.  Eavesdrops on the communication
+# and posts the commands in a text viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VisViewer::TraceComm {channel {data ""}} {
+    $itk_component(trace) configure -state normal
+    switch -- $channel {
+        closed {
+            $itk_component(trace) insert end "--CLOSED--\n" error
+        }
+        <<line {
+            $itk_component(trace) insert end $data incoming "\n" incoming
+        }
+        >>line {
+            $itk_component(trace) insert end $data outgoing "\n" outgoing
+        }
+        error {
+            $itk_component(trace) insert end $data error "\n" error
+        }
+        default {
+            $itk_component(trace) insert end "$data\n"
+        }
+    }
+    $itk_component(trace) configure -state disabled
+    $itk_component(trace) see end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: SendDebugCommand
+#
+# Invoked automatically whenever the user enters a command and
+# presses <Return>.  Sends the command along to the rendering
+# widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VisViewer::SendDebugCommand {} {
+    incr _cmdSeq
+    set cmd [$itk_component(command) get]
+    append cmd "\n"
+    if {$_trace} {
+        puts stderr "$_cmdSeq>>[string range $cmd 0 70]"
+    }
+    SendBytes $cmd
+    $itk_component(command) delete 0 end
+}
+
+#
+# HandleOk --
+#
+#       This handles the "ok" response from the server that acknowledges
+#       the reception of a server command, but does not produce an image.
+#       It may pass an argument such as "-token 9" that could be used to
+#       determine how many commands have been processed by the server.
+#
+itcl::body Rappture::VisViewer::HandleOk { args } {
+    if { $_waitTimeout > 0 } {
+        StopWaiting
+    }
+}
+
+#
+# HandleError --
+#
+#       This handles the "viserror" response from the server that reports
+#       that a client-initiated error has occurred on the server.
+#
+itcl::body Rappture::VisViewer::HandleError { args } {
+    array set info {
+        -token "???"
+        -bytes 0
+        -type "???"
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    if { $info(-type) == "error" } {
+        set popup $itk_component(hull).error
+        if { ![winfo exists $popup] } {
+            Rappture::Balloon $popup \
+                -title "Render Server Error"
+            set inner [$popup component inner]
+            label $inner.summary -text "" -anchor w
+
+            Rappture::Scroller $inner.scrl \
+                -xscrollmode auto -yscrollmode auto
+            text $inner.scrl.text \
+                -font "Arial 9 " -background white -relief sunken -bd 1 \
+                -height 5 -wrap word -width 60
+            $inner.scrl contents $inner.scrl.text
+            button $inner.ok -text "Dismiss" -command [list $popup deactivate] \
+                -font "Arial 9"
+            blt::table $inner \
+                0,0 $inner.scrl -fill both \
+                1,0 $inner.ok
+            $inner.scrl.text tag configure normal -font "Arial 9"
+            $inner.scrl.text tag configure italic -font "Arial 9 italic"
+            $inner.scrl.text tag configure bold -font "Arial 10 bold"
+            $inner.scrl.text tag configure code -font "Courier 10 bold"
+        } else {
+            $popup deactivate
+        }
+        update
+        set inner [$popup component inner]
+        $inner.scrl.text delete 0.0 end
+
+        $inner.scrl.text configure -state normal
+        $inner.scrl.text insert end "The following error was reported by the render server:\n\n" bold
+        $inner.scrl.text insert end $bytes code
+        $inner.scrl.text configure -state disabled
+        update
+        $popup activate $itk_component(hull) below
+    } else {
+        ReceiveEcho <<error $bytes
+        puts stderr "Render server error:\n$bytes"
+    }
+}
+
+itcl::body Rappture::VisViewer::GetColormapList { args } {
+    array set opts {
+        -includeDefault 0
+        -includeElementDefault 0
+        -includeNone 0
+    }
+    if {[llength $args] > 0} {
+        foreach opt $args {
+            set opts($opt) 1
+        }
+    }
+    set colormaps [list]
+    if {$opts(-includeDefault)} {
+        lappend colormaps "default" "default"
+    }
+    if {$opts(-includeElementDefault)} {
+        lappend colormaps "elementDefault" "elementDefault"
+    }
+    lappend colormaps \
+        "BCGYR"              "BCGYR"            \
+        "BGYOR"              "BGYOR"            \
+        "blue-to-brown"      "blue-to-brown"    \
+        "blue-to-orange"     "blue-to-orange"   \
+        "blue-to-grey"       "blue-to-grey"     \
+        "green-to-magenta"   "green-to-magenta" \
+        "greyscale"          "greyscale"        \
+        "nanohub"            "nanohub"          \
+        "rainbow"            "rainbow"          \
+        "spectral"           "spectral"         \
+        "ROYGB"              "ROYGB"            \
+        "RYGCB"              "RYGCB"            \
+        "white-to-blue"      "white-to-blue"    \
+        "brown-to-blue"      "brown-to-blue"    \
+        "grey-to-blue"       "grey-to-blue"     \
+        "orange-to-blue"     "orange-to-blue"
+    if {$opts(-includeNone)} {
+        lappend colormaps "none" "none"
+    }
+    return $colormaps
+}
+
+itcl::body Rappture::VisViewer::ColorsToColormap { colors } {
+    set cmap {}
+    switch -- $colors {
+        "grey-to-blue" {
+            set cmap {
+                0.0                      0.200 0.200 0.200
+                0.14285714285714285      0.400 0.400 0.400
+                0.2857142857142857       0.600 0.600 0.600
+                0.42857142857142855      0.900 0.900 0.900
+                0.5714285714285714       0.800 1.000 1.000
+                0.7142857142857143       0.600 1.000 1.000
+                0.8571428571428571       0.400 0.900 1.000
+                1.0                      0.000 0.600 0.800
+            }
+        }
+        "blue-to-grey" {
+            set cmap {
+                0.0                     0.000 0.600 0.800
+                0.14285714285714285     0.400 0.900 1.000
+                0.2857142857142857      0.600 1.000 1.000
+                0.42857142857142855     0.800 1.000 1.000
+                0.5714285714285714      0.900 0.900 0.900
+                0.7142857142857143      0.600 0.600 0.600
+                0.8571428571428571      0.400 0.400 0.400
+                1.0                     0.200 0.200 0.200
+            }
+        }
+        "white-to-blue" {
+            set cmap {
+                0.0                     0.900 1.000 1.000
+                0.1111111111111111      0.800 0.983 1.000
+                0.2222222222222222      0.700 0.950 1.000
+                0.3333333333333333      0.600 0.900 1.000
+                0.4444444444444444      0.500 0.833 1.000
+                0.5555555555555556      0.400 0.750 1.000
+                0.6666666666666666      0.300 0.650 1.000
+                0.7777777777777778      0.200 0.533 1.000
+                0.8888888888888888      0.100 0.400 1.000
+                1.0                     0.000 0.250 1.000
+            }
+        }
+        "brown-to-blue" {
+            set cmap {
+                0.0                             0.200   0.100   0.000
+                0.09090909090909091             0.400   0.187   0.000
+                0.18181818181818182             0.600   0.379   0.210
+                0.2727272727272727              0.800   0.608   0.480
+                0.36363636363636365             0.850   0.688   0.595
+                0.45454545454545453             0.950   0.855   0.808
+                0.5454545454545454              0.800   0.993   1.000
+                0.6363636363636364              0.600   0.973   1.000
+                0.7272727272727273              0.400   0.940   1.000
+                0.8181818181818182              0.200   0.893   1.000
+                0.9090909090909091              0.000   0.667   0.800
+                1.0                             0.000   0.480   0.600
+            }
+        }
+        "blue-to-brown" {
+            set cmap {
+                0.0                             0.000   0.480   0.600
+                0.09090909090909091             0.000   0.667   0.800
+                0.18181818181818182             0.200   0.893   1.000
+                0.2727272727272727              0.400   0.940   1.000
+                0.36363636363636365             0.600   0.973   1.000
+                0.45454545454545453             0.800   0.993   1.000
+                0.5454545454545454              0.950   0.855   0.808
+                0.6363636363636364              0.850   0.688   0.595
+                0.7272727272727273              0.800   0.608   0.480
+                0.8181818181818182              0.600   0.379   0.210
+                0.9090909090909091              0.400   0.187   0.000
+                1.0                             0.200   0.100   0.000
+            }
+        }
+        "blue-to-orange" {
+            set cmap {
+                0.0                             0.000   0.167   1.000
+                0.09090909090909091             0.100   0.400   1.000
+                0.18181818181818182             0.200   0.600   1.000
+                0.2727272727272727              0.400   0.800   1.000
+                0.36363636363636365             0.600   0.933   1.000
+                0.45454545454545453             0.800   1.000   1.000
+                0.5454545454545454              1.000   1.000   0.800
+                0.6363636363636364              1.000   0.933   0.600
+                0.7272727272727273              1.000   0.800   0.400
+                0.8181818181818182              1.000   0.600   0.200
+                0.9090909090909091              1.000   0.400   0.100
+                1.0                             1.000   0.167   0.000
+            }
+        }
+        "orange-to-blue" {
+            set cmap {
+                0.0                             1.000   0.167   0.000
+                0.09090909090909091             1.000   0.400   0.100
+                0.18181818181818182             1.000   0.600   0.200
+                0.2727272727272727              1.000   0.800   0.400
+                0.36363636363636365             1.000   0.933   0.600
+                0.45454545454545453             1.000   1.000   0.800
+                0.5454545454545454              0.800   1.000   1.000
+                0.6363636363636364              0.600   0.933   1.000
+                0.7272727272727273              0.400   0.800   1.000
+                0.8181818181818182              0.200   0.600   1.000
+                0.9090909090909091              0.100   0.400   1.000
+                1.0                             0.000   0.167   1.000
+            }
+        }
+        "rainbow" {
+            set clist {
+                "#EE82EE"
+                "#4B0082"
+                "blue"
+                "#008000"
+                "yellow"
+                "#FFA500"
+                "red"
+            }
+        }
+        "BGYOR" {
+            set clist {
+                "blue"
+                "#008000"
+                "yellow"
+                "#FFA500"
+                "red"
+            }
+        }
+        "ROYGB" {
+            set clist {
+                "red"
+                "#FFA500"
+                "yellow"
+                "#008000"
+                "blue"
+            }
+        }
+        "RYGCB" {
+            set clist {
+                "red"
+                "yellow"
+                "green"
+                "cyan"
+                "blue"
+            }
+        }
+        "BCGYR" {
+            set clist {
+                "blue"
+                "cyan"
+                "green"
+                "yellow"
+                "red"
+            }
+        }
+        "spectral" {
+            set cmap {
+                0.0 0.150 0.300 1.000
+                0.1 0.250 0.630 1.000
+                0.2 0.450 0.850 1.000
+                0.3 0.670 0.970 1.000
+                0.4 0.880 1.000 1.000
+                0.5 1.000 1.000 0.750
+                0.6 1.000 0.880 0.600
+                0.7 1.000 0.680 0.450
+                0.8 0.970 0.430 0.370
+                0.9 0.850 0.150 0.196
+                1.0 0.650 0.000 0.130
+            }
+        }
+        "green-to-magenta" {
+            set cmap {
+                0.0 0.000 0.316 0.000
+                0.06666666666666667 0.000 0.526 0.000
+                0.13333333333333333 0.000 0.737 0.000
+                0.2 0.000 0.947 0.000
+                0.26666666666666666 0.316 1.000 0.316
+                0.3333333333333333 0.526 1.000 0.526
+                0.4 0.737 1.000 0.737
+                0.4666666666666667 1.000 1.000 1.000
+                0.5333333333333333 1.000 0.947 1.000
+                0.6 1.000 0.737 1.000
+                0.6666666666666666 1.000 0.526 1.000
+                0.7333333333333333 1.000 0.316 1.000
+                0.8 0.947 0.000 0.947
+                0.8666666666666667 0.737 0.000 0.737
+                0.9333333333333333 0.526 0.000 0.526
+                1.0 0.316 0.000 0.316
+            }
+        }
+        "greyscale" {
+            set cmap {
+                0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0
+            }
+        }
+        "nanohub" {
+            set clist "white yellow green cyan blue magenta"
+        }
+        default {
+            set clist [split $colors ":"]
+        }
+    }
+    if {$cmap == ""} {
+        if { [llength $clist] == 1 } {
+            set rgb [Color2RGB $clist]
+            append cmap "0.0 $rgb 1.0 $rgb"
+        } else {
+            for {set i 0} {$i < [llength $clist]} {incr i} {
+                set x [expr {double($i)/([llength $clist]-1)}]
+                set color [lindex $clist $i]
+                append cmap "$x [Color2RGB $color] "
+            }
+        }
+    } else {
+        regsub -all "\[ \t\r\n\]+" [string trim $cmap] " " cmap
+    }
+    return $cmap
+}
+
+
+#
+# StartBufferingCommands --
+#
+itcl::body Rappture::VisViewer::StartBufferingCommands { } {
+    incr _buffering
+    if { $_buffering == 1 } {
+        set _outbuf ""
+    }
+}
+
+#
+# StopBufferingCommands --
+#
+#       This gets called when we want to stop buffering the commands for
+#       the server and actually send then to the server.  Note that there's
+#       a reference count on buffering.  This is so that you can can
+#       Start/Stop multiple times without worrying about the current state.
+#
+itcl::body Rappture::VisViewer::StopBufferingCommands { } {
+    incr _buffering -1
+    if { $_buffering == 0 } {
+        SendBytes $_outbuf
+        set _outbuf ""
+    }
+}
+
+#
+# SendCmd
+#
+#       Send command off to the rendering server.  If we're currently
+#       buffering, the command is queued to be sent later.
+#
+itcl::body Rappture::VisViewer::SendCmd {string} {
+    incr _cmdSeq
+    if {$_trace} {
+        puts stderr "$_cmdSeq>>[string range $string 0 70]"
+    }
+    if { $_buffering } {
+        append _outbuf $string "\n"
+    } else {
+        SendBytes "$string\n"
+    }
+}
+
+#
+# SendData
+#
+#       Send data off to the rendering server.  If we're currently
+#       buffering, the data is queued to be sent later.
+#
+itcl::body Rappture::VisViewer::SendData {bytes} {
+    if {$_trace} {
+        puts stderr "$_cmdSeq>>data payload"
+    }
+    if { $_buffering } {
+        append _outbuf $bytes
+    } else {
+        SendBytes $bytes
+    }
+}
Index: /tags/1.6.0/gui/scripts/vtkglyphviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/vtkglyphviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/vtkglyphviewer.tcl	(revision 6168)
@@ -0,0 +1,2596 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: vtkglyphviewer - Vtk 3D glyphs object viewer
+#
+#  It connects to the Vtkvis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+#package require Img
+
+option add *VtkGlyphViewer.width 4i widgetDefault
+option add *VtkGlyphViewer*cursor crosshair widgetDefault
+option add *VtkGlyphViewer.height 4i widgetDefault
+option add *VtkGlyphViewer.foreground black widgetDefault
+option add *VtkGlyphViewer.controlBackground gray widgetDefault
+option add *VtkGlyphViewer.controlDarkBackground #999999 widgetDefault
+option add *VtkGlyphViewer.plotBackground black widgetDefault
+option add *VtkGlyphViewer.plotForeground white widgetDefault
+option add *VtkGlyphViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc VtkGlyphViewer_init_resources {} {
+    Rappture::resources::register \
+        vtkvis_server Rappture::VtkGlyphViewer::SetServerList
+}
+
+itcl::class Rappture::VtkGlyphViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "vtkvis" $namelist
+    }
+    public method add {dataobj {settings ""}}
+    public method camera {option args}
+    public method delete {args}
+    public method disconnect {}
+    public method download {option args}
+    public method get {args}
+    public method isconnected {}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method scale {args}
+
+    # The following methods are only used by this class.
+    private method AdjustSetting {what {value ""}}
+    private method BuildAxisTab {}
+    private method BuildCameraTab {}
+    private method BuildColormap { name }
+    private method BuildCutplanesTab {}
+    private method BuildDownloadPopup { widget command }
+    private method BuildGlyphTab {}
+    private method Combo { option }
+    private method Connect {}
+    private method CurrentDatasets {args}
+    private method Disconnect {}
+    private method DoResize {}
+    private method DoRotate {}
+    private method DrawLegend {}
+    private method EnterLegend { x y }
+    private method EventuallyRequestLegend {}
+    private method EventuallyResize { w h }
+    private method EventuallyRotate { q }
+    private method EventuallySetCutplane { axis args }
+    private method GetImage { args }
+    private method GetVtkData { args }
+    private method InitSettings { args }
+    private method IsValidObject { dataobj }
+    private method LeaveLegend {}
+    private method MotionLegend { x y }
+    private method Pan {option x y}
+    private method PanCamera {}
+    private method Pick {x y}
+    private method QuaternionToView { q } {
+        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
+    }
+    private method Rebuild {}
+    private method ReceiveDataset { args }
+    private method ReceiveImage { args }
+    private method ReceiveLegend { colormap title vmin vmax size }
+    private method RequestLegend {}
+    private method Rotate {option x y}
+    private method SetCurrentColormap { color }
+    private method SetCurrentFieldName { dataobj }
+    private method SetLegendTip { x y }
+    private method SetObjectStyle { dataobj comp }
+    private method SetOrientation { side }
+    private method Slice {option args}
+    private method ViewToQuaternion {} {
+        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
+    }
+    private method Zoom {option}
+
+    private variable _arcball ""
+
+    private variable _dlist ""     ;    # list of data objects
+    private variable _obj2ovride   ;    # maps dataobj => style override
+    private variable _datasets     ;    # contains all the dataobj-component
+                                   ;    # datasets in the server
+    private variable _colormaps    ;    # contains all the colormaps
+                                   ;    # in the server.
+    # The name of the current colormap used.  The colormap is global to all
+    # heightmaps displayed.
+    private variable _currentColormap ""
+
+    private variable _click        ;    # info used for rotate operations
+    private variable _limits       ;    # autoscale min/max for all axes
+    private variable _view         ;    # view params for 3D view
+    private variable _settings
+    private variable _changed
+    private variable _reset 1;          # Connection to server has been reset.
+
+    private variable _first ""     ;    # This is the topmost dataset.
+    private variable _start 0
+    private variable _title ""
+    private variable _width 0
+    private variable _height 0
+    private variable _resizePending 0
+    private variable _legendPending 0
+    private variable _rotatePending 0
+    private variable _cutplanePending 0
+    private variable _field      ""
+    private variable _colorMode "vmag"; # Mode of colormap (vmag or scalar)
+    private variable _fields
+    private variable _curFldName ""
+    private variable _curFldLabel ""
+
+    private common _downloadPopup;      # download options from popup
+    private common _hardcopy
+}
+
+itk::usual VtkGlyphViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::constructor {args} {
+    set _serverType "vtkvis"
+
+    #DebugOn
+    EnableWaitDialog 900
+
+    # Rebuild event
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Legend event
+    $_dispatcher register !legend
+    $_dispatcher dispatch $this !legend "[itcl::code $this RequestLegend]; list"
+
+    # Rotate event
+    $_dispatcher register !rotate
+    $_dispatcher dispatch $this !rotate "[itcl::code $this DoRotate]; list"
+
+    # X-Cutplane event
+    $_dispatcher register !xcutplane
+    $_dispatcher dispatch $this !xcutplane \
+        "[itcl::code $this AdjustSetting -xcutplaneposition]; list"
+
+    # Y-Cutplane event
+    $_dispatcher register !ycutplane
+    $_dispatcher dispatch $this !ycutplane \
+        "[itcl::code $this AdjustSetting -ycutplaneposition]; list"
+
+    # Z-Cutplane event
+    $_dispatcher register !zcutplane
+    $_dispatcher dispatch $this !zcutplane \
+        "[itcl::code $this AdjustSetting -zcutplaneposition]; list"
+
+    #
+    # Populate parser with commands handle incoming requests
+    #
+    $_parser alias image [itcl::code $this ReceiveImage]
+    $_parser alias legend [itcl::code $this ReceiveLegend]
+    $_parser alias dataset [itcl::code $this ReceiveDataset]
+
+    # Initialize the view to some default parameters.
+    array set _view {
+        -ortho    0
+        -qw       0.853553
+        -qx       -0.353553
+        -qy       0.353553
+        -qz       0.146447
+        -xpan     0
+        -ypan     0
+        -zoom     1.0
+    }
+    set _arcball [blt::arcball create 100 100]
+    $_arcball quaternion [ViewToQuaternion]
+
+    array set _settings {
+        -axesvisible            1
+        -axislabels             1
+        -axisminorticks         1
+        -axismode               "static"
+        -background             black
+        -colormap               BCGYR
+        -colormapvisible        1
+        -cutplaneedges          0
+        -cutplanelighting       1
+        -cutplaneopacity        100
+        -cutplanepreinterp      1
+        -cutplanesvisible       0
+        -cutplanewireframe      0
+        -field                  "Default"
+        -glyphedges             0
+        -glyphlighting          1
+        -glyphnormscale         1
+        -glyphopacity           100
+        -glyphorient            1
+        -glyphscale             1
+        -glyphscalemode         "vmag"
+        -glyphshape             "arrow"
+        -glyphvisible           1
+        -glyphwireframe         0
+        -legendvisible          1
+        -outline                0
+        -saveglyphopacity       100
+        -xcutplaneposition      50
+        -xcutplanevisible       1
+        -xgrid                  0
+        -ycutplaneposition      50
+        -ycutplanevisible       1
+        -ygrid                  0
+        -zcutplaneposition      50
+        -zcutplanevisible       1
+        -zgrid                  0
+    }
+    array set _changed {
+        -colormap               0
+        -glyphopacity           0
+    }
+
+    itk_component add view {
+        canvas $itk_component(plotarea).view \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth -background
+    }
+
+    itk_component add fieldmenu {
+        menu $itk_component(plotarea).menu -bg black -fg white -relief flat \
+            -tearoff 0
+    } {
+        usual
+        ignore -background -foreground -relief -tearoff
+    }
+    set c $itk_component(view)
+    bind $c <Configure> [itcl::code $this EventuallyResize %w %h]
+    bind $c <4> [itcl::code $this Zoom in 0.25]
+    bind $c <5> [itcl::code $this Zoom out 0.25]
+    bind $c <KeyPress-Left>  [list %W xview scroll 10 units]
+    bind $c <KeyPress-Right> [list %W xview scroll -10 units]
+    bind $c <KeyPress-Up>    [list %W yview scroll 10 units]
+    bind $c <KeyPress-Down>  [list %W yview scroll -10 units]
+    bind $c <Enter> "focus %W"
+    bind $c <Control-F1> [itcl::code $this ToggleConsole]
+
+    # Fix the scrollregion in case we go off screen
+    $c configure -scrollregion [$c bbox all]
+
+    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
+    set _map(cwidth) -1
+    set _map(cheight) -1
+    set _map(zoom) 1.0
+    set _map(original) ""
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    itk_component add glyphs {
+        Rappture::PushButton $f.glyphs \
+            -onimage [Rappture::icon volume-on] \
+            -offimage [Rappture::icon volume-off] \
+            -variable [itcl::scope _settings(-glyphvisible)] \
+            -command [itcl::code $this AdjustSetting -glyphvisible]
+    }
+    $itk_component(glyphs) select
+    Rappture::Tooltip::for $itk_component(glyphs) \
+        "Hide the glyphs"
+    pack $itk_component(glyphs) -padx 2 -pady 2
+
+    if {0} {
+    itk_component add cutplane {
+        Rappture::PushButton $f.cutplane \
+            -onimage [Rappture::icon cutbutton] \
+            -offimage [Rappture::icon cutbutton] \
+            -variable [itcl::scope _settings(-cutplanesvisible)] \
+            -command [itcl::code $this AdjustSetting -cutplanesvisible]
+    }
+    Rappture::Tooltip::for $itk_component(cutplane) \
+        "Show the cutplanes"
+    pack $itk_component(cutplane) -padx 2 -pady 2
+    }
+
+    if { [catch {
+        BuildGlyphTab
+        #BuildCutplanesTab
+        BuildAxisTab
+        BuildCameraTab
+    } errs] != 0 } {
+        puts stderr errs=$errs
+    }
+
+    # Legend
+    set _image(legend) [image create photo]
+    itk_component add legend {
+        canvas $itk_component(plotarea).legend -width 50 -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -plotbackground plotBackground Background
+    }
+
+    # Hack around the Tk panewindow.  The problem is that the requested
+    # size of the 3d view isn't set until an image is retrieved from
+    # the server.  So the panewindow uses the tiny size.
+    set w 10000
+    pack forget $itk_component(view)
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth $w
+    blt::table configure $itk_component(plotarea) c1 -resize none
+
+    # Bindings for rotation via mouse
+    bind $itk_component(view) <ButtonPress-1> \
+        [itcl::code $this Rotate click %x %y]
+    bind $itk_component(view) <B1-Motion> \
+        [itcl::code $this Rotate drag %x %y]
+    bind $itk_component(view) <ButtonRelease-1> \
+        [itcl::code $this Rotate release %x %y]
+
+    # Bindings for panning via mouse
+    bind $itk_component(view) <ButtonPress-2> \
+        [itcl::code $this Pan click %x %y]
+    bind $itk_component(view) <B2-Motion> \
+        [itcl::code $this Pan drag %x %y]
+    bind $itk_component(view) <ButtonRelease-2> \
+        [itcl::code $this Pan release %x %y]
+
+    #bind $itk_component(view) <ButtonRelease-3> \
+    #    [itcl::code $this Pick %x %y]
+
+    # Bindings for panning via keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -2 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 2 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -2]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 2]
+
+    # Bindings for zoom via keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        # Bindings for zoom via mouse
+        bind $itk_component(view) <4> [itcl::code $this Zoom out]
+        bind $itk_component(view) <5> [itcl::code $this Zoom in]
+    }
+
+    set _image(download) [image create photo]
+
+    eval itk_initialize $args
+
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::destructor {} {
+    Disconnect
+    image delete $_image(plot)
+    image delete $_image(download)
+    catch { blt::arcball destroy $_arcball }
+}
+
+itcl::body Rappture::VtkGlyphViewer::DoResize {} {
+    if { $_width < 2 } {
+        set _width 500
+    }
+    if { $_height < 2 } {
+        set _height 500
+    }
+    set _start [clock clicks -milliseconds]
+    SendCmd "screen size $_width $_height"
+
+    EventuallyRequestLegend
+    set _resizePending 0
+}
+
+itcl::body Rappture::VtkGlyphViewer::DoRotate {} {
+    SendCmd "camera orient [ViewToQuaternion]"
+    set _rotatePending 0
+}
+
+itcl::body Rappture::VtkGlyphViewer::EventuallyRequestLegend {} {
+    if { !$_legendPending } {
+        set _legendPending 1
+        $_dispatcher event -idle !legend
+    }
+}
+
+itcl::body Rappture::VtkGlyphViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    $_arcball resize $w $h
+    if { !$_resizePending } {
+        set _resizePending 1
+        $_dispatcher event -after 400 !resize
+    }
+}
+
+set rotate_delay 100
+
+itcl::body Rappture::VtkGlyphViewer::EventuallyRotate { q } {
+    QuaternionToView $q
+    if { !$_rotatePending } {
+        set _rotatePending 1
+        global rotate_delay
+        $_dispatcher event -after $rotate_delay !rotate
+    }
+}
+
+itcl::body Rappture::VtkGlyphViewer::EventuallySetCutplane { axis args } {
+    if { !$_cutplanePending } {
+        set _cutplanePending 1
+        $_dispatcher event -after 100 !${axis}cutplane
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::add {dataobj {settings ""}} {
+    if { ![$dataobj isvalid] } {
+        return;                         # Object doesn't contain valid data.
+    }
+    array set params {
+        -color auto
+        -width 1
+        -linestyle solid
+        -brightness 0
+        -raise 0
+        -description ""
+        -param ""
+        -type ""
+    }
+    array set params $settings
+    set params(-description) ""
+    set params(-param) ""
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) black
+    }
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+    }
+    set _obj2ovride($dataobj-color) $params(-color)
+    set _obj2ovride($dataobj-width) $params(-width)
+    set _obj2ovride($dataobj-raise) $params(-raise)
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.  No data objects are
+# deleted.  They are only removed from the display list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::delete {args} {
+    if { [llength $args] == 0} {
+        set args $_dlist
+    }
+    # Delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if { $pos < 0 } {
+            continue;                   # Don't know anything about it.
+        }
+        # Remove it from the dataobj list.
+        set _dlist [lreplace $_dlist $pos $pos]
+        array unset _obj2ovride $dataobj-*
+        array unset _settings $dataobj-*
+        set changed 1
+    }
+    # If anything changed, then rebuild the plot
+    if { $changed } {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-objects?
+# USAGE: get ?-visible?
+# USAGE: get ?-image view?
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.  The optional "-image"
+# flag can also request the internal images being shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::get {args} {
+    if {[llength $args] == 0} {
+        set args "-objects"
+    }
+
+    set op [lindex $args 0]
+    switch -- $op {
+        "-objects" {
+            # put the dataobj list in order according to -raise options
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if {[info exists _obj2ovride($dataobj-raise)] &&
+                    $_obj2ovride($dataobj-raise)} {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        "-visible" {
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if { ![info exists _obj2ovride($dataobj-raise)] } {
+                    # No setting indicates that the object isn't visible.
+                    continue
+                }
+                # Otherwise use the -raise parameter to put the object to
+                # the front of the list.
+                if { $_obj2ovride($dataobj-raise) } {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        -image {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"get -image view\""
+            }
+            switch -- [lindex $args end] {
+                view {
+                    return $_image(plot)
+                }
+                default {
+                    error "bad image name \"[lindex $args end]\": should be view"
+                }
+            }
+        }
+        default {
+            error "bad option \"$op\": should be -objects or -image"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<data1> <data2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <data> objects.  This
+# accounts for all objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::scale { args } {
+    foreach dataobj $args {
+        if { ![$dataobj isvalid] } {
+            continue;                   # Object doesn't contain valid data.
+        }
+        foreach axis { x y z } {
+            set lim [$dataobj limits $axis]
+            if { ![info exists _limits($axis)] } {
+                set _limits($axis) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {amin amax} $_limits($axis) break
+            if { $amin > $min } {
+                set amin $min
+            }
+            if { $amax < $max } {
+                set amax $max
+            }
+            set _limits($axis) [list $amin $amax]
+        }
+        foreach { fname lim } [$dataobj fieldlimits] {
+            if { ![info exists _limits($fname)] } {
+                set _limits($fname) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {fmin fmax} $_limits($fname) break
+            if { $fmin > $min } {
+                set fmin $min
+            }
+            if { $fmax < $max } {
+                set fmax $max
+            }
+            set _limits($fname) [list $fmin $fmax]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::download {option args} {
+    switch $option {
+        coming {
+            if {[catch {
+                blt::winop snap $itk_component(plotarea) $_image(download)
+            }]} {
+                $_image(download) configure -width 1 -height 1
+                $_image(download) put #000000
+            }
+        }
+        controls {
+            set popup .vtkviewerdownload
+            if { ![winfo exists .vtkviewerdownload] } {
+                set inner [BuildDownloadPopup $popup [lindex $args 0]]
+            } else {
+                set inner [$popup component inner]
+            }
+            set _downloadPopup(image_controls) $inner.image_frame
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks            ;# Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .vtkviewerdownload
+            if {[winfo exists .vtkviewerdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "image" {
+                    return [$this GetImage [lindex $args 0]]
+                }
+                "vtk" {
+                    return [$this GetVtkData [lindex $args 0]]
+                }
+            }
+            return ""
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Connect ?<host:port>,<host:port>...?
+#
+# Clients use this method to establish a connection to a new
+# server, or to reestablish a connection to the previous server.
+# Any existing connection is automatically closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::Connect {} {
+    set _hosts [GetServerList "vtkvis"]
+    if { "" == $_hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $_hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "vtkglyphviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        EventuallyResize $w $h
+    }
+    return $result
+}
+
+#
+# isconnected --
+#
+# Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::VtkGlyphViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# disconnect --
+#
+itcl::body Rappture::VtkGlyphViewer::disconnect {} {
+    Disconnect
+    set _reset 1
+}
+
+#
+# Disconnect --
+#
+# Clients use this method to disconnect from the current rendering server.
+#
+itcl::body Rappture::VtkGlyphViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    $_dispatcher cancel !rebuild
+    $_dispatcher cancel !resize
+    $_dispatcher cancel !rotate
+    $_dispatcher cancel !xcutplane
+    $_dispatcher cancel !ycutplane
+    $_dispatcher cancel !zcutplane
+    $_dispatcher cancel !legend
+    # disconnected -- no more data sitting on server
+    array unset _datasets
+    array unset _colormaps
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveImage -bytes <size> -type <type> -token <token>
+#
+# Invoked automatically whenever the "image" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::ReceiveImage { args } {
+    array set info {
+        -token "???"
+        -bytes 0
+        -type image
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    if { $info(-type) == "image" } {
+        if 0 {
+            set f [open "last.ppm" "w"]
+            fconfigure $f -encoding binary
+            puts -nonewline $f $bytes
+            close $f
+        }
+        $_image(plot) configure -data $bytes
+        #set time [clock seconds]
+        #set date [clock format $time]
+        #set w [image width $_image(plot)]
+        #set h [image height $_image(plot)]
+        #puts stderr "$date: received image ${w}x${h} image"
+        if { $_start > 0 } {
+            set finish [clock clicks -milliseconds]
+            #puts stderr "round trip time [expr $finish -$_start] milliseconds"
+            set _start 0
+        }
+    } elseif { $info(type) == "print" } {
+        set tag $this-print-$info(-token)
+        set _hardcopy($tag) $bytes
+    }
+}
+
+#
+# ReceiveDataset --
+#
+itcl::body Rappture::VtkGlyphViewer::ReceiveDataset { args } {
+    if { ![isconnected] } {
+        return
+    }
+    set option [lindex $args 0]
+    switch -- $option {
+        "scalar" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z value tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y value tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "vector" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z vx vy vz tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y vx vy vz tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "names" {
+            foreach { name } [lindex $args 1] {
+                #puts stderr "Dataset: $name"
+            }
+        }
+        default {
+            error "unknown dataset option \"$option\" from server"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::Rebuild {} {
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $w < 2 || $h < 2 } {
+        update
+        $_dispatcher event -idle !rebuild
+        return
+    }
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (which automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+
+    if { $_reset } {
+        set _width $w
+        set _height $h
+        $_arcball resize $w $h
+        DoResize
+
+        # Reset the camera and other view parameters
+        $_arcball quaternion [ViewToQuaternion]
+        InitSettings -ortho
+        DoRotate
+        PanCamera
+        set _first ""
+        InitSettings -background \
+            -xgrid -ygrid -zgrid -axismode \
+            -axesvisible -axislabels -axisminorticks
+        #SendCmd "axis lformat all %g"
+        StopBufferingCommands
+        SendCmd "imgflush"
+        StartBufferingCommands
+    }
+    set _first ""
+    SendCmd "dataset visible 0"
+    eval scale $_dlist
+    foreach dataobj [get -objects] {
+        if { [info exists _obj2ovride($dataobj-raise)] &&  $_first == "" } {
+            set _first $dataobj
+            SetCurrentFieldName $dataobj
+        }
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { ![info exists _datasets($tag)] } {
+                set bytes [$dataobj vtkdata $comp]
+                if 0 {
+                    set f [open "/tmp/glyph.vtk" "w"]
+                    fconfigure $f -translation binary -encoding binary
+                    puts -nonewline $f $bytes
+                    close $f
+                }
+                set length [string length $bytes]
+                if { $_reportClientInfo }  {
+                    set info {}
+                    lappend info "tool_id"       [$dataobj hints toolid]
+                    lappend info "tool_name"     [$dataobj hints toolname]
+                    lappend info "tool_title"    [$dataobj hints tooltitle]
+                    lappend info "tool_command"  [$dataobj hints toolcommand]
+                    lappend info "tool_revision" [$dataobj hints toolrevision]
+                    lappend info "dataset_label" [$dataobj hints label]
+                    lappend info "dataset_size"  $length
+                    lappend info "dataset_tag"   $tag
+                    SendCmd "clientinfo [list $info]"
+                }
+                SendCmd "dataset add $tag data follows $length"
+                SendData $bytes
+                set _datasets($tag) 1
+                SetObjectStyle $dataobj $comp
+            }
+            if { [info exists _obj2ovride($dataobj-raise)] } {
+                SendCmd "glyphs visible 1 $tag"
+            }
+        }
+    }
+
+    InitSettings -glyphvisible -outline
+        #-cutplanesvisible
+    if { $_reset } {
+        # These are settings that rely on a dataset being loaded.
+        InitSettings \
+            -field \
+            -glyphedges -glyphlighting -glyphnormscale -glyphopacity \
+            -glyphorient -glyphscale -glyphscalemode -glyphshape -glyphwireframe
+
+        #-xcutplaneposition -ycutplaneposition -zcutplaneposition \
+            -xcutplanevisible -ycutplanevisible -zcutplanevisible \
+            -cutplanepreinterp
+
+        Zoom reset
+        foreach axis { x y z } {
+            set label ""
+            if { $_first != "" } {
+                set label [$_first hints ${axis}label]
+            }
+            if { $label == "" } {
+                set label [string toupper $axis]
+            }
+            # There may be a space in the axis label.
+            SendCmd [list axis name $axis $label]
+        }
+        if { [array size _fields] < 2 } {
+            catch {blt::table forget $itk_component(field) $itk_component(field_l)}
+        }
+        set _reset 0
+    }
+
+    # Actually write the commands to the server socket.  If it fails, we don't
+    # care.  We're finished here.
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands;              # Turn off buffering and send commands.
+    blt::busy release $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CurrentDatasets ?-all -visible? ?dataobjs?
+#
+# Returns a list of server IDs for the current datasets being displayed.  This
+# is normally a single ID, but it might be a list of IDs if the current data
+# object has multiple components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::CurrentDatasets {args} {
+    set flag [lindex $args 0]
+    switch -- $flag {
+        "-all" {
+            if { [llength $args] > 1 } {
+                error "CurrentDatasets: can't specify dataobj after \"-all\""
+            }
+            set dlist [get -objects]
+        }
+        "-visible" {
+            if { [llength $args] > 1 } {
+                set dlist {}
+                set args [lrange $args 1 end]
+                foreach dataobj $args {
+                    if { [info exists _obj2ovride($dataobj-raise)] } {
+                        lappend dlist $dataobj
+                    }
+                }
+            } else {
+                set dlist [get -visible]
+            }
+        }
+        default {
+            set dlist $args
+        }
+    }
+    set rlist ""
+    foreach dataobj $dlist {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { [info exists _datasets($tag)] && $_datasets($tag) } {
+                lappend rlist $tag
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::Zoom {option} {
+    switch -- $option {
+        "in" {
+            set _view(-zoom) [expr {$_view(-zoom)*1.25}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "out" {
+            set _view(-zoom) [expr {$_view(-zoom)*0.8}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "reset" {
+            array set _view {
+                -qw      0.853553
+                -qx      -0.353553
+                -qy      0.353553
+                -qz      0.146447
+                -xpan    0
+                -ypan    0
+                -zoom    1.0
+            }
+            if { $_first != "" } {
+                set location [$_first hints camera]
+                if { $location != "" } {
+                    array set _view $location
+                }
+            }
+            $_arcball quaternion [ViewToQuaternion]
+            DoRotate
+            SendCmd "camera reset"
+        }
+    }
+}
+
+itcl::body Rappture::VtkGlyphViewer::PanCamera {} {
+    set x $_view(-xpan)
+    set y $_view(-ypan)
+    SendCmd "camera pan $x $y"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::Rotate {option x y} {
+    switch -- $option {
+        "click" {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "drag" {
+            if {[array size _click] == 0} {
+                Rotate click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+                if { $dx == 0 && $dy == 0 } {
+                    return
+                }
+                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
+                EventuallyRotate $q
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        "release" {
+            Rotate drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
+
+itcl::body Rappture::VtkGlyphViewer::Pick {x y} {
+    foreach tag [CurrentDatasets -visible] {
+        SendCmd "dataset getscalar pixel $x $y $tag"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::Pan {option x y} {
+    switch -- $option {
+        "set" {
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set x [expr $x / double($w)]
+            set y [expr $y / double($h)]
+            set _view(-xpan) [expr $_view(-xpan) + $x]
+            set _view(-ypan) [expr $_view(-ypan) + $y]
+            PanCamera
+            return
+        }
+        "click" {
+            set _click(x) $x
+            set _click(y) $y
+            $itk_component(view) configure -cursor hand1
+        }
+        "drag" {
+            if { ![info exists _click(x)] } {
+                set _click(x) $x
+            }
+            if { ![info exists _click(y)] } {
+                set _click(y) $y
+            }
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set dx [expr ($_click(x) - $x)/double($w)]
+            set dy [expr ($_click(y) - $y)/double($h)]
+            set _click(x) $x
+            set _click(y) $y
+            set _view(-xpan) [expr $_view(-xpan) - $dx]
+            set _view(-ypan) [expr $_view(-ypan) - $dy]
+            PanCamera
+        }
+        "release" {
+            Pan drag $x $y
+            $itk_component(view) configure -cursor ""
+        }
+        default {
+            error "unknown option \"$option\": should set, click, drag, or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitSettings <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::InitSettings { args } {
+    foreach spec $args {
+        if { [info exists _settings($_first${spec})] } {
+            # Reset global setting with dataobj specific setting
+            set _settings($spec) $_settings($_first${spec})
+        }
+        AdjustSetting $spec
+    }
+}
+
+#
+# AdjustSetting --
+#
+# Changes/updates a specific setting in the widget.  There are
+# usually user-setable option.  Commands are sent to the render
+# server.
+#
+itcl::body Rappture::VtkGlyphViewer::AdjustSetting {what {value ""}} {
+    DebugTrace "Enter"
+    if { ![isconnected] } {
+        DebugTrace "Not connected"
+        return
+    }
+    switch -- $what {
+        "-axesvisible" {
+            set bool $_settings($what)
+            SendCmd "axis visible all $bool"
+        }
+        "-axislabels" {
+            set bool $_settings($what)
+            SendCmd "axis labels all $bool"
+        }
+        "-axisminorticks" {
+            set bool $_settings($what)
+            SendCmd "axis minticks all $bool"
+        }
+        "-axismode" {
+            set mode [$itk_component(axisMode) value]
+            set mode [$itk_component(axisMode) translate $mode]
+            set _settings($what) $mode
+            SendCmd "axis flymode $mode"
+        }
+        "-background" {
+            set bgcolor [$itk_component(background) value]
+            array set fgcolors {
+                "black" "white"
+                "white" "black"
+                "grey"  "black"
+            }
+            configure -plotbackground $bgcolor \
+                -plotforeground $fgcolors($bgcolor)
+            $itk_component(view) delete "legend"
+            DrawLegend
+        }
+        "-colormap" {
+            set _changed($what) 1
+            StartBufferingCommands
+            set color [$itk_component(colormap) value]
+            set _settings($what) $color
+            if { $color == "none" } {
+                if { $_settings(-colormapvisible) } {
+                    SendCmd "glyphs colormode constant {}"
+                    set _settings(-colormapvisible) 0
+                }
+            } else {
+                if { !$_settings(-colormapvisible) } {
+                    SendCmd "glyphs colormode $_colorMode $_curFldName"
+                    set _settings(-colormapvisible) 1
+                }
+                SetCurrentColormap $color
+            }
+            StopBufferingCommands
+            EventuallyRequestLegend
+        }
+        "-cutplaneedges" {
+            set bool $_settings($what)
+            SendCmd "cutplane edges $bool"
+        }
+        "-cutplanelighting" {
+            set bool $_settings($what)
+            SendCmd "cutplane lighting $bool"
+        }
+        "-cutplaneopacity" {
+            set val $_settings($what)
+            set sval [expr { 0.01 * double($val) }]
+            SendCmd "cutplane opacity $sval"
+        }
+        "-cutplanepreinterp" {
+            set bool $_settings($what)
+            SendCmd "cutplane preinterp $bool"
+        }
+        "-cutplanesvisible" {
+            set bool $_settings($what)
+            SendCmd "cutplane visible 0"
+            if { $bool } {
+                foreach tag [CurrentDatasets -visible] {
+                    SendCmd "cutplane visible $bool $tag"
+                }
+            }
+            if { $bool } {
+                Rappture::Tooltip::for $itk_component(cutplane) \
+                    "Hide the cutplanes"
+            } else {
+                Rappture::Tooltip::for $itk_component(cutplane) \
+                    "Show the cutplanes"
+            }
+        }
+        "-cutplanewireframe" {
+            set bool $_settings($what)
+            SendCmd "cutplane wireframe $bool"
+        }
+        "-field" {
+            set label [$itk_component(field) value]
+            set fname [$itk_component(field) translate $label]
+            set _settings($what) $fname
+            if { [info exists _fields($fname)] } {
+                foreach { label units components } $_fields($fname) break
+                if { $components > 1 } {
+                    set _colorMode vmag
+                } else {
+                    set _colorMode scalar
+                }
+                set _curFldName $fname
+                set _curFldLabel $label
+            } else {
+                puts stderr "unknown field \"$fname\""
+                return
+            }
+            #if { ![info exists _limits($_curFldName)] } {
+            #    SendCmd "dataset maprange all"
+            #} else {
+            #    SendCmd "dataset maprange explicit $_limits($_curFldName) $_curFldName"
+            #}
+            #SendCmd "cutplane colormode $_colorMode $_curFldName"
+            SendCmd "glyphs colormode $_colorMode $_curFldName"
+            DrawLegend
+        }
+        "-glyphedges" {
+            set bool $_settings($what)
+            SendCmd "glyphs edges $bool"
+        }
+        "-glyphlighting" {
+            set bool $_settings($what)
+            SendCmd "glyphs lighting $bool"
+        }
+        "-glyphnormscale" {
+            set bool $_settings($what)
+            SendCmd "glyphs normscale $bool"
+        }
+        "-glyphopacity" {
+            set val $_settings($what)
+            set sval [expr { 0.01 * double($val) }]
+            SendCmd "glyphs opacity $sval"
+        }
+        "-glyphorient" {
+            set bool $_settings($what)
+            SendCmd "glyphs gorient $bool {}"
+        }
+        "-glyphscale" {
+            set val $_settings($what)
+            if { [string is double $val] } {
+                SendCmd "glyphs gscale $val"
+            }
+        }
+        "-glyphscalemode" {
+            set label [$itk_component(scaleMode) value]
+            set mode [$itk_component(scaleMode) translate $label]
+            set _settings($what) $mode
+            SendCmd "glyphs smode $mode {}"
+        }
+        "-glyphshape" {
+            set label [$itk_component(gshape) value]
+            set shape [$itk_component(gshape) translate $label]
+            set _settings($what) $shape
+            SendCmd "glyphs shape $shape"
+        }
+        "-glyphvisible" {
+            set bool $_settings($what)
+            SendCmd "glyphs visible 0"
+            if { $bool } {
+                foreach tag [CurrentDatasets -visible] {
+                    SendCmd "glyphs visible $bool $tag"
+                }
+            }
+            if { $bool } {
+                Rappture::Tooltip::for $itk_component(glyphs) \
+                    "Hide the glyphs"
+            } else {
+                Rappture::Tooltip::for $itk_component(glyphs) \
+                    "Show the glyphs"
+            }
+            DrawLegend
+        }
+        "-glyphwireframe" {
+            set bool $_settings($what)
+            SendCmd "glyphs wireframe $bool"
+        }
+        "-legendvisible" {
+            if { !$_settings($what) } {
+                $itk_component(view) delete legend
+            }
+            DrawLegend
+        }
+        "-ortho" {
+            set bool $_view($what)
+            if { $bool } {
+                SendCmd "camera mode ortho"
+            } else {
+                SendCmd "camera mode persp"
+            }
+        }
+        "-outline" {
+            set bool $_settings($what)
+            SendCmd "outline visible 0"
+            if { $bool } {
+                foreach tag [CurrentDatasets -visible] {
+                    SendCmd "outline visible $bool $tag"
+                }
+            }
+        }
+        "-xcutplanevisible" - "-ycutplanevisible" - "-zcutplanevisible" {
+            set axis [string tolower [string range $what 1 1]]
+            set bool $_settings($what)
+            if { $bool } {
+                $itk_component(${axis}position) configure -state normal \
+                    -troughcolor white
+            } else {
+                $itk_component(${axis}position) configure -state disabled \
+                    -troughcolor grey82
+            }
+            SendCmd "cutplane axis $axis $bool"
+        }
+        "-xcutplaneposition" - "-ycutplaneposition" - "-zcutplaneposition" {
+            set axis [string tolower [string range $what 1 1]]
+            set pos [expr $_settings($what) * 0.01]
+            SendCmd "cutplane slice ${axis} ${pos}"
+            set _cutplanePending 0
+        }
+        "-xgrid" - "-ygrid" - "-zgrid" {
+            set axis [string tolower [string range $what 1 1]]
+            set bool $_settings($what)
+            SendCmd "axis grid $axis $bool"
+        }
+        default {
+            error "don't know how to fix $what"
+        }
+    }
+}
+
+#
+# RequestLegend --
+#
+# Request a new legend from the server.  The size of the legend
+# is determined from the height of the canvas.
+#
+# This should be called when
+#   1.  A new current colormap is set.
+#   2.  Window is resized.
+#   3.  The limits of the data have changed.  (Just need a redraw).
+#   4.  Legend becomes visible (Just need a redraw).
+#
+itcl::body Rappture::VtkGlyphViewer::RequestLegend {} {
+    set _legendPending 0
+    if { ![info exists _fields($_curFldName)] } {
+        return
+    }
+    set fname $_curFldName
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+    set w 12
+    set h [expr {$_height - 2 * ($lineht + 2)}]
+    if { $h < 1 } {
+        return
+    }
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    # If there's a title too, subtract one more line
+    if { $title != "" } {
+        incr h -$lineht
+    }
+    # Set the legend on the first dataset.
+    if { $_currentColormap != "" } {
+        set cmap $_currentColormap
+        if { ![info exists _colormaps($cmap)] } {
+            BuildColormap $cmap
+            set _colormaps($cmap) 1
+        }
+        #SendCmd "legend $cmap $_colorMode $_curFldName {} $w $h 0"
+        SendCmd "legend2 $cmap $w $h"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkGlyphViewer::plotbackground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotbackground)]
+        SendCmd "screen bgcolor $rgb"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkGlyphViewer::plotforeground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotforeground)]
+        SendCmd "axis color all $rgb"
+        SendCmd "outline color $rgb"
+        #SendCmd "cutplane color $rgb"
+    }
+}
+
+itcl::body Rappture::VtkGlyphViewer::BuildGlyphTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Glyph Settings" \
+        -icon [Rappture::icon volume-on]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.glyphs \
+        -text "Glyphs" \
+        -variable [itcl::scope _settings(-glyphvisible)] \
+        -command [itcl::code $this AdjustSetting -glyphvisible] \
+        -font "Arial 9"
+
+    label $inner.gshape_l -text "Glyph shape" -font "Arial 9"
+    itk_component add gshape {
+        Rappture::Combobox $inner.gshape -width 10 -editable 0
+    }
+    $inner.gshape choices insert end \
+        "arrow"              "arrow"           \
+        "cone"               "cone"            \
+        "cube"               "cube"            \
+        "cylinder"           "cylinder"        \
+        "dodecahedron"       "dodecahedron"    \
+        "icosahedron"        "icosahedron"     \
+        "line"               "line"            \
+        "octahedron"         "octahedron"      \
+        "point"              "point"           \
+        "sphere"             "sphere"          \
+        "tetrahedron"        "tetrahedron"
+
+    $itk_component(gshape) value $_settings(-glyphshape)
+    bind $inner.gshape <<Value>> [itcl::code $this AdjustSetting -glyphshape]
+
+    label $inner.scaleMode_l -text "Scale by" -font "Arial 9"
+    itk_component add scaleMode {
+        Rappture::Combobox $inner.scaleMode -width 10 -editable 0
+    }
+    $inner.scaleMode choices insert end \
+        "scalar" "Scalar"            \
+        "vmag"   "Vector magnitude"  \
+        "vcomp"  "Vector components" \
+        "off"    "Constant size"
+
+    $itk_component(scaleMode) value "[$itk_component(scaleMode) label $_settings(-glyphscalemode)]"
+    bind $inner.scaleMode <<Value>> [itcl::code $this AdjustSetting -glyphscalemode]
+
+    checkbutton $inner.normscale \
+        -text "Normalize scaling" \
+        -variable [itcl::scope _settings(-glyphnormscale)] \
+        -command [itcl::code $this AdjustSetting -glyphnormscale] \
+        -font "Arial 9"
+    Rappture::Tooltip::for $inner.normscale "If enabled, field values are normalized to \[0,1\] before scaling and scale factor is relative to a default size"
+
+    checkbutton $inner.gorient \
+        -text "Orient" \
+        -variable [itcl::scope _settings(-glyphorient)] \
+        -command [itcl::code $this AdjustSetting -glyphorient] \
+        -font "Arial 9"
+    Rappture::Tooltip::for $inner.gorient "Orient glyphs by vector field directions"
+
+    checkbutton $inner.wireframe \
+        -text "Wireframe" \
+        -variable [itcl::scope _settings(-glyphwireframe)] \
+        -command [itcl::code $this AdjustSetting -glyphwireframe] \
+        -font "Arial 9"
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(-glyphlighting)] \
+        -command [itcl::code $this AdjustSetting -glyphlighting] \
+        -font "Arial 9"
+
+    checkbutton $inner.edges \
+        -text "Edges" \
+        -variable [itcl::scope _settings(-glyphedges)] \
+        -command [itcl::code $this AdjustSetting -glyphedges] \
+        -font "Arial 9"
+
+    checkbutton $inner.outline \
+        -text "Outline" \
+        -variable [itcl::scope _settings(-outline)] \
+        -command [itcl::code $this AdjustSetting -outline] \
+        -font "Arial 9"
+
+    checkbutton $inner.legend \
+        -text "Legend" \
+        -variable [itcl::scope _settings(-legendvisible)] \
+        -command [itcl::code $this AdjustSetting -legendvisible] \
+        -font "Arial 9"
+
+    label $inner.background_l -text "Background" -font "Arial 9"
+    itk_component add background {
+        Rappture::Combobox $inner.background -width 10 -editable 0
+    }
+    $inner.background choices insert end \
+        "black"              "black"            \
+        "white"              "white"            \
+        "grey"               "grey"
+
+    $itk_component(background) value $_settings(-background)
+    bind $inner.background <<Value>> \
+        [itcl::code $this AdjustSetting -background]
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9"
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-glyphopacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -glyphopacity]
+
+    label $inner.gscale_l -text "Scale factor" -font "Arial 9"
+    if {0} {
+    ::scale $inner.gscale -from 1 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-glyphscale)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -glyphscale]
+    } else {
+    itk_component add gscale {
+        entry $inner.gscale -font "Arial 9" -bg white \
+            -textvariable [itcl::scope _settings(-glyphscale)]
+    } {
+        ignore -font -background
+    }
+    bind $inner.gscale <Return> \
+        [itcl::code $this AdjustSetting -glyphscale]
+    bind $inner.gscale <KP_Enter> \
+        [itcl::code $this AdjustSetting -glyphscale]
+    }
+    Rappture::Tooltip::for $inner.gscale "Set scaling multiplier (or constant size)"
+
+    itk_component add field_l {
+        label $inner.field_l -text "Color By" -font "Arial 9"
+    } {
+        ignore -font
+    }
+    itk_component add field {
+        Rappture::Combobox $inner.field -width 10 -editable 0
+    }
+    bind $inner.field <<Value>> \
+        [itcl::code $this AdjustSetting -field]
+
+    label $inner.colormap_l -text "Colormap" -font "Arial 9"
+    itk_component add colormap {
+        Rappture::Combobox $inner.colormap -width 10 -editable 0
+    }
+
+    $inner.colormap choices insert end [GetColormapList]
+    $itk_component(colormap) value "BCGYR"
+    bind $inner.colormap <<Value>> \
+        [itcl::code $this AdjustSetting -colormap]
+
+    blt::table $inner \
+        0,0 $inner.field_l      -anchor w -pady 2 \
+        0,1 $inner.field        -anchor w -pady 2 -fill x \
+        1,0 $inner.colormap_l   -anchor w -pady 2 \
+        1,1 $inner.colormap     -anchor w -pady 2 -fill x \
+        2,0 $inner.gshape_l     -anchor w -pady 2 \
+        2,1 $inner.gshape       -anchor w -pady 2 -fill x \
+        3,0 $inner.background_l -anchor w -pady 2 \
+        3,1 $inner.background   -anchor w -pady 2 -fill x \
+        4,0 $inner.scaleMode_l  -anchor w -pady 2 \
+        4,1 $inner.scaleMode    -anchor w -pady 2 -fill x \
+        5,0 $inner.gscale_l     -anchor w -pady 2 \
+        5,1 $inner.gscale       -anchor w -pady 2 -fill x \
+        6,0 $inner.normscale    -anchor w -pady 2 -cspan 2 \
+        7,0 $inner.gorient      -anchor w -pady 2 -cspan 2 \
+        8,0 $inner.wireframe    -anchor w -pady 2 -cspan 2 \
+        9,0 $inner.lighting     -anchor w -pady 2 -cspan 2 \
+        10,0 $inner.edges       -anchor w -pady 2 -cspan 2 \
+        11,0 $inner.outline     -anchor w -pady 2 -cspan 2 \
+        12,0 $inner.legend      -anchor w -pady 2 \
+        13,0 $inner.opacity_l   -anchor w -pady 2 \
+        13,1 $inner.opacity     -anchor w -pady 2 -fill x
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r14 c1 -resize expand
+}
+
+itcl::body Rappture::VtkGlyphViewer::BuildAxisTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Axis Settings" \
+        -icon [Rappture::icon axis2]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Axes" \
+        -variable [itcl::scope _settings(-axesvisible)] \
+        -command [itcl::code $this AdjustSetting -axesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.labels \
+        -text "Axis Labels" \
+        -variable [itcl::scope _settings(-axislabels)] \
+        -command [itcl::code $this AdjustSetting -axislabels] \
+        -font "Arial 9"
+    label $inner.grid_l -text "Grid" -font "Arial 9"
+    checkbutton $inner.xgrid \
+        -text "X" \
+        -variable [itcl::scope _settings(-xgrid)] \
+        -command [itcl::code $this AdjustSetting -xgrid] \
+        -font "Arial 9"
+    checkbutton $inner.ygrid \
+        -text "Y" \
+        -variable [itcl::scope _settings(-ygrid)] \
+        -command [itcl::code $this AdjustSetting -ygrid] \
+        -font "Arial 9"
+    checkbutton $inner.zgrid \
+        -text "Z" \
+        -variable [itcl::scope _settings(-zgrid)] \
+        -command [itcl::code $this AdjustSetting -zgrid] \
+        -font "Arial 9"
+    checkbutton $inner.minorticks \
+        -text "Minor Ticks" \
+        -variable [itcl::scope _settings(-axisminorticks)] \
+        -command [itcl::code $this AdjustSetting -axisminorticks] \
+        -font "Arial 9"
+
+    label $inner.mode_l -text "Mode" -font "Arial 9"
+
+    itk_component add axisMode {
+        Rappture::Combobox $inner.mode -width 10 -editable 0
+    }
+    $inner.mode choices insert end \
+        "static_triad"    "static" \
+        "closest_triad"   "closest" \
+        "furthest_triad"  "farthest" \
+        "outer_edges"     "outer"
+    $itk_component(axisMode) value $_settings(-axismode)
+    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -axismode]
+
+    blt::table $inner \
+        0,0 $inner.visible    -anchor w -cspan 4 \
+        1,0 $inner.labels     -anchor w -cspan 4 \
+        2,0 $inner.minorticks -anchor w -cspan 4 \
+        4,0 $inner.grid_l     -anchor w \
+        4,1 $inner.xgrid      -anchor w \
+        4,2 $inner.ygrid      -anchor w \
+        4,3 $inner.zgrid      -anchor w \
+        5,0 $inner.mode_l     -anchor w -padx { 2 0 } \
+        5,1 $inner.mode       -fill x   -cspan 3
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c6 -resize expand
+    blt::table configure $inner r3 -height 0.125i
+}
+
+itcl::body Rappture::VtkGlyphViewer::BuildCameraTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Camera Settings" \
+        -icon [Rappture::icon camera]]
+    $inner configure -borderwidth 4
+
+    label $inner.view_l -text "view" -font "Arial 9"
+    set f [frame $inner.view]
+    foreach side { front back left right top bottom } {
+        button $f.$side  -image [Rappture::icon view$side] \
+            -command [itcl::code $this SetOrientation $side]
+        Rappture::Tooltip::for $f.$side "Change the view to $side"
+        pack $f.$side -side left
+    }
+
+    blt::table $inner \
+        0,0 $inner.view_l -anchor e -pady 2 \
+        0,1 $inner.view -anchor w -pady 2
+    blt::table configure $inner r0 -resize none
+
+    set labels { qx qy qz qw xpan ypan zoom }
+    set row 1
+    foreach tag $labels {
+        label $inner.${tag}label -text $tag -font "Arial 9"
+        entry $inner.${tag} -font "Arial 9"  -bg white \
+            -textvariable [itcl::scope _view(-$tag)]
+        bind $inner.${tag} <Return> \
+            [itcl::code $this camera set -${tag}]
+        bind $inner.${tag} <KP_Enter> \
+            [itcl::code $this camera set -${tag}]
+        blt::table $inner \
+            $row,0 $inner.${tag}label -anchor e -pady 2 \
+            $row,1 $inner.${tag} -anchor w -pady 2
+        blt::table configure $inner r$row -resize none
+        incr row
+    }
+    checkbutton $inner.ortho \
+        -text "Orthographic Projection" \
+        -variable [itcl::scope _view(-ortho)] \
+        -command [itcl::code $this AdjustSetting -ortho] \
+        -font "Arial 9"
+    blt::table $inner \
+            $row,0 $inner.ortho -cspan 2 -anchor w -pady 2
+    blt::table configure $inner r$row -resize none
+    incr row
+
+    blt::table configure $inner c* -resize none
+    blt::table configure $inner c2 -resize expand
+    blt::table configure $inner r$row -resize expand
+}
+
+itcl::body Rappture::VtkGlyphViewer::BuildCutplanesTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Cutplane Settings" \
+        -icon [Rappture::icon cutbutton]]
+
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Cutplanes" \
+        -variable [itcl::scope _settings(-cutplanesvisible)] \
+        -command [itcl::code $this AdjustSetting -cutplanesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.wireframe \
+        -text "Wireframe" \
+        -variable [itcl::scope _settings(-cutplanewireframe)] \
+        -command [itcl::code $this AdjustSetting -cutplanewireframe] \
+        -font "Arial 9"
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(-cutplanelighting)] \
+        -command [itcl::code $this AdjustSetting -cutplanelighting] \
+        -font "Arial 9"
+
+    checkbutton $inner.edges \
+        -text "Edges" \
+        -variable [itcl::scope _settings(-cutplaneedges)] \
+        -command [itcl::code $this AdjustSetting -cutplaneedges] \
+        -font "Arial 9"
+
+    checkbutton $inner.preinterp \
+        -text "Interpolate Scalars" \
+        -variable [itcl::scope _settings(-cutplanepreinterp)] \
+        -command [itcl::code $this AdjustSetting -cutplanepreinterp] \
+        -font "Arial 9"
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9"
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-cutplaneopacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -cutplaneopacity]
+    $inner.opacity set $_settings(-cutplaneopacity)
+
+    # X-value slicer...
+    itk_component add xbutton {
+        Rappture::PushButton $inner.xbutton \
+            -onimage [Rappture::icon x-cutplane-red] \
+            -offimage [Rappture::icon x-cutplane-red] \
+            -command [itcl::code $this AdjustSetting -xcutplanevisible] \
+            -variable [itcl::scope _settings(-xcutplanevisible)] \
+    }
+    Rappture::Tooltip::for $itk_component(xbutton) \
+        "Toggle the X-axis cutplane on/off"
+    $itk_component(xbutton) select
+    itk_component add xposition {
+        ::scale $inner.xval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane x] \
+            -variable [itcl::scope _settings(-xcutplaneposition)] \
+            -foreground red2 -font "Arial 9 bold"
+    } {
+        usual
+        ignore -borderwidth -highlightthickness -foreground -font -background
+    }
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(xposition) set 50
+    $itk_component(xposition) configure -state disabled
+    Rappture::Tooltip::for $itk_component(xposition) \
+        "@[itcl::code $this Slice tooltip x]"
+
+    # Y-value slicer...
+    itk_component add ybutton {
+        Rappture::PushButton $inner.ybutton \
+            -onimage [Rappture::icon y-cutplane-green] \
+            -offimage [Rappture::icon y-cutplane-green] \
+            -command [itcl::code $this AdjustSetting -ycutplanevisible] \
+            -variable [itcl::scope _settings(-ycutplanevisible)] \
+    }
+    Rappture::Tooltip::for $itk_component(ybutton) \
+        "Toggle the Y-axis cutplane on/off"
+    $itk_component(ybutton) select
+
+    itk_component add yposition {
+        ::scale $inner.yval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane y] \
+            -variable [itcl::scope _settings(-ycutplaneposition)] \
+            -foreground green3 -font "Arial 9 bold"
+    } {
+        usual
+        ignore -borderwidth -highlightthickness -foreground -font
+    }
+    Rappture::Tooltip::for $itk_component(yposition) \
+        "@[itcl::code $this Slice tooltip y]"
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(yposition) set 50
+    $itk_component(yposition) configure -state disabled
+
+    # Z-value slicer...
+    itk_component add zbutton {
+        Rappture::PushButton $inner.zbutton \
+            -onimage [Rappture::icon z-cutplane-blue] \
+            -offimage [Rappture::icon z-cutplane-blue] \
+            -command [itcl::code $this AdjustSetting -zcutplanevisible] \
+            -variable [itcl::scope _settings(-zcutplanevisible)] \
+    } {
+        usual
+        ignore -foreground
+    }
+    Rappture::Tooltip::for $itk_component(zbutton) \
+        "Toggle the Z-axis cutplane on/off"
+    $itk_component(zbutton) select
+
+    itk_component add zposition {
+        ::scale $inner.zval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane z] \
+            -variable [itcl::scope _settings(-zcutplaneposition)] \
+            -foreground blue3 -font "Arial 9 bold"
+    } {
+        usual
+        ignore -borderwidth -highlightthickness -foreground -font
+    }
+    $itk_component(zposition) set 50
+    $itk_component(zposition) configure -state disabled
+    Rappture::Tooltip::for $itk_component(zposition) \
+        "@[itcl::code $this Slice tooltip z]"
+
+    blt::table $inner \
+        0,0 $inner.visible   -anchor w -pady 2 -cspan 3 \
+        1,0 $inner.lighting  -anchor w -pady 2 -cspan 3 \
+        2,0 $inner.wireframe -anchor w -pady 2 -cspan 3 \
+        3,0 $inner.edges     -anchor w -pady 2 -cspan 3 \
+        4,0 $inner.preinterp -anchor w -pady 2 -cspan 3 \
+        5,0 $inner.opacity_l -anchor w -pady 2 -cspan 1 \
+        5,1 $inner.opacity   -fill x   -pady 2 -cspan 3 \
+        6,0 $inner.xbutton   -anchor w -padx 2 -pady 2 \
+        7,0 $inner.ybutton   -anchor w -padx 2 -pady 2 \
+        8,0 $inner.zbutton   -anchor w -padx 2 -pady 2 \
+        6,1 $inner.xval      -fill y -rspan 4 \
+        6,2 $inner.yval      -fill y -rspan 4 \
+        6,3 $inner.zval      -fill y -rspan 4 \
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r9 c4 -resize expand
+}
+
+#
+# camera --
+#
+itcl::body Rappture::VtkGlyphViewer::camera {option args} {
+    switch -- $option {
+        "show" {
+            puts [array get _view]
+        }
+        "set" {
+            set what [lindex $args 0]
+            set x $_view($what)
+            set code [catch { string is double $x } result]
+            if { $code != 0 || !$result } {
+                return
+            }
+            switch -- $what {
+                "-ortho" {
+                    if {$_view($what)} {
+                        SendCmd "camera mode ortho"
+                    } else {
+                        SendCmd "camera mode persp"
+                    }
+                }
+                "-xpan" - "-ypan" {
+                    PanCamera
+                }
+                "-qx" - "-qy" - "-qz" - "-qw" {
+                    set q [ViewToQuaternion]
+                    $_arcball quaternion $q
+                    EventuallyRotate $q
+                }
+                "-zoom" {
+                    SendCmd "camera zoom $_view($what)"
+                }
+             }
+        }
+    }
+}
+
+itcl::body Rappture::VtkGlyphViewer::GetVtkData { args } {
+    set bytes ""
+    foreach dataobj [get] {
+        foreach cname [$dataobj components] {
+            set tag $dataobj-$cname
+            set contents [$dataobj vtkdata $cname]
+            append bytes "$contents\n"
+        }
+    }
+    return [list .vtk $bytes]
+}
+
+itcl::body Rappture::VtkGlyphViewer::GetImage { args } {
+    if { [image width $_image(download)] > 0 &&
+         [image height $_image(download)] > 0 } {
+        set bytes [$_image(download) data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        return [list .jpg $bytes]
+    }
+    return ""
+}
+
+itcl::body Rappture::VtkGlyphViewer::BuildDownloadPopup { popup command } {
+    Rappture::Balloon $popup \
+        -title "[Rappture::filexfer::label downloadWord] as..."
+    set inner [$popup component inner]
+    label $inner.summary -text "" -anchor w
+    radiobutton $inner.vtk_button -text "VTK data file" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value vtk
+    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
+    radiobutton $inner.image_button -text "Image File" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value image
+    Rappture::Tooltip::for $inner.image_button \
+        "Save as digital image."
+
+    button $inner.ok -text "Save" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command $command \
+        -compound left \
+        -image [Rappture::icon download]
+
+    button $inner.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command [list $popup deactivate] \
+        -compound left \
+        -image [Rappture::icon cancel]
+
+    blt::table $inner \
+        0,0 $inner.summary -cspan 2  \
+        1,0 $inner.vtk_button -anchor w -cspan 2 -padx { 4 0 } \
+        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
+        4,1 $inner.cancel -width .9i -fill y \
+        4,0 $inner.ok -padx 2 -width .9i -fill y
+    blt::table configure $inner r3 -height 4
+    blt::table configure $inner r4 -pady 4
+    raise $inner.image_button
+    $inner.vtk_button invoke
+    return $inner
+}
+
+itcl::body Rappture::VtkGlyphViewer::SetObjectStyle { dataobj comp } {
+    # Parse style string.
+    set tag $dataobj-$comp
+    array set style {
+        -color BCGYR
+        -edgecolor black
+        -edges 0
+        -gscale 1
+        -lighting 1
+        -linewidth 1.0
+        -normscale 1
+        -opacity 1.0
+        -orientglyphs 1
+        -outline 0
+        -ptsize 1.0
+        -quality 1
+        -scalemode vmag
+        -shape arrow
+        -wireframe 0
+    }
+    set numComponents [$dataobj numComponents $comp]
+    if {$numComponents == 3} {
+        set style(-shape) "arrow"
+        set style(-orientglyphs) 1
+        set style(-scalemode) "vmag"
+    } else {
+        set style(-shape) "sphere"
+        set style(-orientglyphs) 0
+        set style(-scalemode) "scalar"
+    }
+    array set style [$dataobj style $comp]
+    # Backwards compat with camel case style option
+    if { [info exists style(-orientGlyphs)] } {
+        set style(-orientglyphs) $style(-orientGlyphs)
+        array unset style -orientGlyphs
+    }
+    # Backwards compat with camel case style option
+    if { [info exists style(-scaleMode)] } {
+        set style(-scalemode) $style(-scaleMode)
+        array unset style -scaleMode
+    }
+
+    # This is too complicated.  We want to set the colormap and opacity
+    # for the dataset.  They can be the default values,
+    # the style hints loaded with the dataset, or set by user controls.  As
+    # datasets get loaded, they first use the defaults that are overidden
+    # by the style hints.  If the user changes the global controls, then that
+    # overrides everything else.  I don't know what it means when global
+    # controls are specified as style hints by each dataset.  It complicates
+    # the code to handle aberrant cases.
+
+    if { $_changed(-glyphopacity) } {
+        set style(-opacity) [expr $_settings(-glyphopacity) * 0.01]
+    }
+    if { $_changed(-colormap) } {
+        set style(-color) $_settings(-colormap)
+    }
+    if { $_currentColormap == "" } {
+        $itk_component(colormap) value $style(-color)
+    }
+
+    if 0 {
+    SendCmd "cutplane add $tag"
+    SendCmd "cutplane visible 0 $tag"
+    }
+
+    SendCmd "outline add $tag"
+    SendCmd "outline color [Color2RGB $itk_option(-plotforeground)] $tag"
+    SendCmd "outline visible $style(-outline) $tag"
+    set _settings(-outline) $style(-outline)
+
+    SendCmd "glyphs add $style(-shape) $tag"
+    set _settings(-glyphshape) $style(-shape)
+    $itk_component(gshape) value $style(-shape)
+    SendCmd "glyphs edges $style(-edges) $tag"
+    set _settings(-glyphedges) $style(-edges)
+
+    # normscale=1 and gscale=1 are defaults
+    if {$style(-normscale) != 1} {
+        SendCmd "glyphs normscale $style(-normscale) $tag"
+    }
+    if {$style(-gscale) != 1} {
+        SendCmd "glyphs gscale $style(-gscale) $tag"
+    }
+    set _settings(-glyphnormscale) $style(-normscale)
+    set _settings(-glyphscale) $style(-gscale)
+
+    # constant color only used if colormode set to constant
+    SendCmd "glyphs color [Color2RGB $itk_option(-plotforeground)] $tag"
+    # Omitting field name for gorient and smode commands
+    # defaults to active scalars or vectors depending on mode
+    SendCmd "glyphs gorient $style(-orientglyphs) {} $tag"
+    set _settings(-glyphorient) $style(-orientglyphs)
+    SendCmd "glyphs smode $style(-scalemode) {} $tag"
+    set _settings(-glyphscalemode) $style(-scalemode)
+    $itk_component(scaleMode) value "[$itk_component(scaleMode) label $style(-scalemode)]"
+    SendCmd "glyphs quality $style(-quality) $tag"
+    SendCmd "glyphs lighting $style(-lighting) $tag"
+    set _settings(-glyphlighting) $style(-lighting)
+    SendCmd "glyphs linecolor [Color2RGB $style(-edgecolor)] $tag"
+    SendCmd "glyphs linewidth $style(-linewidth) $tag"
+    SendCmd "glyphs ptsize $style(-ptsize) $tag"
+    SendCmd "glyphs opacity $style(-opacity) $tag"
+    set _settings(-glyphopacity) [expr $style(-opacity) * 100.0]
+    SetCurrentColormap $style(-color) 
+    SendCmd "glyphs wireframe $style(-wireframe) $tag"
+    set _settings(-glyphwireframe) $style(-wireframe)
+}
+
+itcl::body Rappture::VtkGlyphViewer::IsValidObject { dataobj } {
+    if {[catch {$dataobj isa Rappture::Field} valid] != 0 || !$valid} {
+        return 0
+    }
+    return 1
+}
+
+#
+# EnterLegend --
+#
+itcl::body Rappture::VtkGlyphViewer::EnterLegend { x y } {
+    SetLegendTip $x $y
+}
+
+#
+# MotionLegend --
+#
+itcl::body Rappture::VtkGlyphViewer::MotionLegend { x y } {
+    Rappture::Tooltip::tooltip cancel
+    set c $itk_component(view)
+    set cw [winfo width $c]
+    set ch [winfo height $c]
+    if { $x >= 0 && $x < $cw && $y >= 0 && $y < $ch } {
+        SetLegendTip $x $y
+    }
+}
+
+#
+# LeaveLegend --
+#
+itcl::body Rappture::VtkGlyphViewer::LeaveLegend { } {
+    Rappture::Tooltip::tooltip cancel
+    .rappturetooltip configure -icon ""
+}
+
+#
+# SetLegendTip --
+#
+itcl::body Rappture::VtkGlyphViewer::SetLegendTip { x y } {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    set ih [image height $_image(legend)]
+    set iy [expr $y - ($lineht + 2)]
+
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    # If there's a legend title, increase the offset by the line height.
+    if { $title != "" } {
+        incr iy -$lineht
+    }
+    # Make a swatch of the selected color
+    if { [catch { $_image(legend) get 10 $iy } pixel] != 0 } {
+        return
+    }
+    if { ![info exists _image(swatch)] } {
+        set _image(swatch) [image create photo -width 24 -height 24]
+    }
+    set color [eval format "\#%02x%02x%02x" $pixel]
+    $_image(swatch) put black  -to 0 0 23 23
+    $_image(swatch) put $color -to 1 1 22 22
+    .rappturetooltip configure -icon $_image(swatch)
+
+    # Compute the value of the point
+    if { [info exists _limits($_curFldName)] } {
+        foreach { vmin vmax } $_limits($_curFldName) break
+        set t [expr 1.0 - (double($iy) / double($ih-1))]
+        set value [expr $t * ($vmax - $vmin) + $vmin]
+    } else {
+        set value 0.0
+    }
+    set tx [expr $x + 15]
+    set ty [expr $y - 5]
+    Rappture::Tooltip::text $c [format "$title %g" $value]
+    Rappture::Tooltip::tooltip show $c +$tx,+$ty
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Slice move x|y|z <newval>
+#
+# Called automatically when the user drags the slider to move the
+# cut plane that slices 3D data.  Gets the current value from the
+# slider and moves the cut plane to the appropriate point in the
+# data set.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::Slice {option args} {
+    switch -- $option {
+        "move" {
+            set axis [lindex $args 0]
+            set newval [lindex $args 1]
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Slice move x|y|z newval\""
+            }
+            set newpos [expr {0.01*$newval}]
+            SendCmd "cutplane slice $axis $newpos"
+        }
+        "tooltip" {
+            set axis [lindex $args 0]
+            set val [$itk_component(${axis}position) get]
+            return "Move the [string toupper $axis] cut plane.\nCurrently:  $axis = $val%"
+        }
+        default {
+            error "bad option \"$option\": should be axis, move, or tooltip"
+        }
+    }
+}
+
+#
+# ReceiveLegend --
+#
+# Invoked automatically whenever the "legend" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+#
+itcl::body Rappture::VtkGlyphViewer::ReceiveLegend { colormap title min max size } {
+    DebugTrace "Enter"
+    set _title $title
+    regsub {\(mag\)} $title "" _title
+    if { [IsConnected] } {
+        set bytes [ReceiveBytes $size]
+        if { ![info exists _image(legend)] } {
+            set _image(legend) [image create photo]
+        }
+        $_image(legend) configure -data $bytes
+        #puts stderr "read $size bytes for [image width $_image(legend)]x[image height $_image(legend)] legend>"
+        if { [catch {DrawLegend} errs] != 0 } {
+            global errorInfo
+            puts stderr "errs=$errs errorInfo=$errorInfo"
+        }
+    }
+}
+
+#
+# DrawLegend --
+#
+# Draws the legend on the canvas on the right side of the plot area.
+#
+itcl::body Rappture::VtkGlyphViewer::DrawLegend {} {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    set x [expr $w - 2]
+    if { !$_settings(-legendvisible) } {
+        $c delete legend
+        return
+    }
+    if { [$c find withtag "legend"] == "" } {
+        set y 2
+        # If there's a legend title, create a text item for the title.
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "title legend" \
+            -font $font
+        if { $title != "" } {
+            incr y $lineht
+        }
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "vmax legend" \
+            -font $font
+        incr y $lineht
+        $c create image $x $y \
+            -anchor ne \
+            -image $_image(legend) -tags "colormap legend"
+        $c create rectangle $x $y 1 1 \
+            -fill "" -outline "" -tags "sensor legend"
+        $c create text $x [expr {$h-2}] \
+            -anchor se \
+            -fill $itk_option(-plotforeground) -tags "vmin legend" \
+            -font $font
+        $c bind sensor <Enter> [itcl::code $this EnterLegend %x %y]
+        $c bind sensor <Leave> [itcl::code $this LeaveLegend]
+        $c bind sensor <Motion> [itcl::code $this MotionLegend %x %y]
+    }
+    set x2 $x
+    set iw [image width $_image(legend)]
+    set ih [image height $_image(legend)]
+    set x1 [expr $x2 - ($iw*12)/10]
+
+    $c bind title <ButtonPress> [itcl::code $this Combo post]
+    $c bind title <Enter> [itcl::code $this Combo activate]
+    $c bind title <Leave> [itcl::code $this Combo deactivate]
+    # Reset the item coordinates according the current size of the plot.
+    $c itemconfigure title -text $title
+    if { [info exists _limits($_curFldName)] } {
+        foreach { vmin vmax } $_limits($_curFldName) break
+        $c itemconfigure vmin -text [format %g $vmin]
+        $c itemconfigure vmax -text [format %g $vmax]
+    }
+    set y 2
+    # If there's a legend title, move the title to the correct position
+    if { $title != "" } {
+        $c itemconfigure title -text $title
+        $c coords title $x $y
+        incr y $lineht
+        $c raise title
+    }
+    $c coords vmax $x $y
+    incr y $lineht
+    $c coords colormap $x $y
+    $c coords sensor [expr $x - $iw] $y $x [expr $y + $ih]
+    $c raise sensor
+    $c coords vmin $x [expr {$h - 2}]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _dropdown post
+# USAGE: _dropdown unpost
+# USAGE: _dropdown select
+#
+# Used internally to handle the dropdown list for this combobox.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkGlyphViewer::Combo {option} {
+    set c $itk_component(view)
+    switch -- $option {
+        post {
+            foreach { x1 y1 x2 y2 } [$c bbox title] break
+            set cw [winfo width $itk_component(view)]
+            set mw [winfo reqwidth $itk_component(fieldmenu)]
+            set x1 [expr $cw - $mw]
+            set x [expr $x1 + [winfo rootx $itk_component(view)]]
+            set y [expr $y2 + [winfo rooty $itk_component(view)]]
+            tk_popup $itk_component(fieldmenu) $x $y
+        }
+        activate {
+            $c itemconfigure title -fill red
+        }
+        deactivate {
+            $c itemconfigure title -fill $itk_option(-plotforeground)
+        }
+        invoke {
+            $itk_component(field) value $_curFldLabel
+            AdjustSetting -field
+        }
+        default {
+            error "bad option \"$option\": should be post, unpost, select"
+        }
+    }
+}
+
+#
+# SetCurrentColormap --
+#
+itcl::body Rappture::VtkGlyphViewer::SetCurrentColormap { name } {
+    # Keep track of the colormaps that we build.
+    if { ![info exists _colormaps($name)] } {
+        BuildColormap $name
+        set _colormaps($name) 1
+    }
+    set _currentColormap $name
+    SendCmd "glyphs colormap $_currentColormap"
+}
+
+#
+# BuildColormap --
+#
+# Build the designated colormap on the server.
+#
+itcl::body Rappture::VtkGlyphViewer::BuildColormap { name } {
+    set cmap [ColorsToColormap $name]
+    if { [llength $cmap] == 0 } {
+        set cmap "0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0"
+    }
+    set amap "0.0 1.0 1.0 1.0"
+    SendCmd "colormap add $name { $cmap } { $amap }"
+}
+
+itcl::body Rappture::VtkGlyphViewer::SetOrientation { side } {
+    array set positions {
+        front "1 0 0 0"
+        back  "0 0 1 0"
+        left  "0.707107 0 -0.707107 0"
+        right "0.707107 0 0.707107 0"
+        top   "0.707107 -0.707107 0 0"
+        bottom "0.707107 0.707107 0 0"
+    }
+    foreach name { -qw -qx -qy -qz } value $positions($side) {
+        set _view($name) $value
+    }
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    set _view(-xpan) 0
+    set _view(-ypan) 0
+    set _view(-zoom) 1.0
+}
+
+itcl::body Rappture::VtkGlyphViewer::SetCurrentFieldName { dataobj } {
+    set _first $dataobj
+    $itk_component(field) choices delete 0 end
+    $itk_component(fieldmenu) delete 0 end
+    array unset _fields
+    set _curFldName ""
+    foreach cname [$_first components] {
+        foreach fname [$_first fieldnames $cname] {
+            if { [info exists _fields($fname)] } {
+                continue
+            }
+            foreach { label units components } \
+                [$_first fieldinfo $fname] break
+            $itk_component(field) choices insert end "$fname" "$label"
+            $itk_component(fieldmenu) add radiobutton -label "$label" \
+                -value $label -variable [itcl::scope _curFldLabel] \
+                -selectcolor red \
+                -activebackground $itk_option(-plotbackground) \
+                -activeforeground $itk_option(-plotforeground) \
+                -font "Arial 8" \
+                -command [itcl::code $this Combo invoke]
+            set _fields($fname) [list $label $units $components]
+            if { $_curFldName == "" } {
+                set _curFldName $fname
+                set _curFldLabel $label
+            }
+        }
+    }
+    $itk_component(field) value $_curFldLabel
+}
Index: /tags/1.6.0/gui/scripts/vtkheightmapviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/vtkheightmapviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/vtkheightmapviewer.tcl	(revision 6168)
@@ -0,0 +1,2645 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: vtkheightmapviewer - Vtk heightmap viewer
+#
+#  It connects to the Vtkvis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+#package require Img
+
+option add *VtkHeightmapViewer.width 4i widgetDefault
+option add *VtkHeightmapViewer*cursor crosshair widgetDefault
+option add *VtkHeightmapViewer.height 4i widgetDefault
+option add *VtkHeightmapViewer.foreground black widgetDefault
+option add *VtkHeightmapViewer.controlBackground gray widgetDefault
+option add *VtkHeightmapViewer.controlDarkBackground #999999 widgetDefault
+option add *VtkHeightmapViewer.plotBackground black widgetDefault
+option add *VtkHeightmapViewer.plotForeground white widgetDefault
+option add *VtkHeightmapViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc VtkHeightmapViewer_init_resources {} {
+    Rappture::resources::register \
+        vtkvis_server Rappture::VtkHeightmapViewer::SetServerList
+}
+
+itcl::class Rappture::VtkHeightmapViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+    itk_option define -mode mode Mode "contour"
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "vtkvis" $namelist
+    }
+    public method add {dataobj {settings ""}}
+    public method camera {option args}
+    public method delete {args}
+    public method disconnect {}
+    public method download {option args}
+    public method get {args}
+    public method isconnected {}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method scale {args}
+
+    # The following methods are only used by this class.
+    private method AdjustSetting {what {value ""}}
+    private method BuildAxisTab {}
+    private method BuildCameraTab {}
+    private method BuildColormap { name }
+    private method BuildContourTab {}
+    private method BuildDownloadPopup { widget command }
+    private method CameraReset {}
+    private method Combo { option }
+    private method Connect {}
+    private method CurrentDatasets {args}
+    private method Disconnect {}
+    private method DoResize {}
+    private method DoRotate {}
+    private method DrawLegend {}
+    private method EnterLegend { x y }
+    private method EventuallyRequestLegend {}
+    private method EventuallyResize { w h }
+    private method EventuallyRotate { q }
+    private method GetHeightmapScale {}
+    private method GetImage { args }
+    private method GetVtkData { args }
+    private method InitSettings { args }
+    private method IsValidObject { dataobj }
+    private method LeaveLegend {}
+    private method MotionLegend { x y }
+    private method Pan {option x y}
+    private method PanCamera {}
+    private method Pick {x y}
+    private method QuaternionToView { q } {
+        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
+    }
+    private method Rebuild {}
+    private method ReceiveDataset { args }
+    private method ReceiveImage { args }
+    private method ReceiveLegend { colormap title min max size }
+    private method RequestLegend {}
+    private method ResetAxes {}
+    private method Rotate {option x y}
+    private method SetCurrentColormap { color }
+    private method SetLegendTip { x y }
+    private method SetObjectStyle { dataobj comp }
+    private method SetOrientation { side }
+    private method UpdateContourList {}
+    private method ViewToQuaternion {} {
+        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
+    }
+    private method Zoom {option}
+
+    private variable _arcball ""
+    private variable _dlist ""     ;    # list of data objects
+    private variable _obj2ovride   ;    # maps dataobj => style override
+    private variable _comp2scale;       # maps dataset to the heightmap scale.
+    private variable _datasets     ;    # contains all the dataobj-component
+                                   ;    # datasets in the server
+    private variable _colormaps    ;    # contains all the colormaps
+                                   ;    # in the server.
+
+    # The name of the current colormap used.  The colormap is global to all
+    # heightmaps displayed.
+    private variable _currentColormap ""
+    private variable _currentNumIsolines -1
+
+    private variable _maxScale 100;     # This is the # of times the x-axis
+                                        # and y-axis ranges can differ before
+                                        # automatically turning on
+                                        # -stretchtofit
+
+    private variable _click        ;    # info used for rotate operations
+    private variable _limits       ;    # Holds overall limits for all dataobjs
+                                        # using the viewer.
+    private variable _view         ;    # view params for 3D view
+    private variable _settings
+    private variable _changed
+    private variable _reset 1;          # Connection to server has been reset.
+
+    private variable _first ""     ;    # This is the topmost dataset.
+    private variable _start 0
+    private variable _isolines
+    private variable _contourList ""
+    private variable _width 0
+    private variable _height 0
+    private variable _legendWidth 0
+    private variable _legendHeight 0
+    private variable _resizePending 0
+    private variable _legendPending 0
+    private variable _rotatePending 0
+    private variable _fields
+    private variable _curFldName ""
+    private variable _curFldLabel ""
+    private variable _colorMode "scalar";# Mode of colormap (vmag or scalar)
+
+    private common _downloadPopup;      # download options from popup
+    private common _hardcopy
+}
+
+itk::usual VtkHeightmapViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground -mode
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::constructor {args} {
+    set _serverType "vtkvis"
+
+    #DebugOn
+    EnableWaitDialog 900
+
+    # Rebuild event
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Legend event
+    $_dispatcher register !legend
+    $_dispatcher dispatch $this !legend "[itcl::code $this RequestLegend]; list"
+
+    # Rotate event
+    $_dispatcher register !rotate
+    $_dispatcher dispatch $this !rotate "[itcl::code $this DoRotate]; list"
+
+    #
+    # Populate parser with commands handle incoming requests
+    #
+    $_parser alias image [itcl::code $this ReceiveImage]
+    $_parser alias dataset [itcl::code $this ReceiveDataset]
+    $_parser alias legend [itcl::code $this ReceiveLegend]
+
+    # Create image for legend colorbar.
+    set _image(legend) [image create photo]
+
+    # Initialize the view to some default parameters.
+    array set _view {
+        -ortho    0
+        -qw       0.36
+        -qx       0.25
+        -qy       0.50
+        -qz       0.70
+        -xpan     0
+        -ypan     0
+        -zoom     1.0
+    }
+    set _arcball [blt::arcball create 100 100]
+    $_arcball quaternion [ViewToQuaternion]
+
+    array set _settings {
+        -axisflymode            "static"
+        -axislabels             1
+        -axisminorticks         1
+        -axisvisible            1
+        -colormap               BCGYR
+        -colormapdiscrete       0
+        -colormapvisible        1
+        -edges                  0
+        -field                  "Default"
+        -heightmapscale         50
+        -isheightmap            0
+        -isolinecolor           black
+        -isolinesvisible        1
+        -legendvisible          1
+        -lighting               1
+        -numisolines            10
+        -opacity                100
+        -outline                0
+        -savelighting           1
+        -saveopacity            100
+        -saveoutline            0
+        -stretchtofit           0
+        -wireframe              0
+        -xgrid                  0
+        -ygrid                  0
+        -zgrid                  0
+    }
+    array set _changed {
+        -colormap               0
+        -numisolines            0
+        -opacity                0
+    }
+    itk_component add view {
+        canvas $itk_component(plotarea).view \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth -background
+    }
+
+    itk_component add fieldmenu {
+        menu $itk_component(plotarea).menu \
+            -relief flat \
+            -tearoff 0
+    } {
+        usual
+        ignore -background -foreground -relief -tearoff
+    }
+    set c $itk_component(view)
+    bind $c <Configure> [itcl::code $this EventuallyResize %w %h]
+    bind $c <4> [itcl::code $this Zoom in 0.25]
+    bind $c <5> [itcl::code $this Zoom out 0.25]
+    bind $c <KeyPress-Left>  [list %W xview scroll 10 units]
+    bind $c <KeyPress-Right> [list %W xview scroll -10 units]
+    bind $c <KeyPress-Up>    [list %W yview scroll 10 units]
+    bind $c <KeyPress-Down>  [list %W yview scroll -10 units]
+    bind $c <Enter> "focus %W"
+    bind $c <Control-F1> [itcl::code $this ToggleConsole]
+
+    # Fix the scrollregion in case we go off screen
+    $c configure -scrollregion [$c bbox all]
+
+    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
+    set _map(cwidth) -1
+    set _map(cheight) -1
+    set _map(zoom) 1.0
+    set _map(original) ""
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this CameraReset]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -side top -padx 2 -pady { 2 0 }
+    Rappture::Tooltip::for $itk_component(reset) "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -side top -padx 2 -pady { 2 0 }
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -side top -padx 2 -pady { 2 0 }
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    itk_component add mode {
+        Rappture::PushButton $f.mode \
+            -onimage [Rappture::icon surface] \
+            -offimage [Rappture::icon surface] \
+            -variable [itcl::scope _settings(-isheightmap)] \
+            -command [itcl::code $this AdjustSetting -isheightmap] \
+    }
+    Rappture::Tooltip::for $itk_component(mode) \
+        "Toggle the surface/contour on/off"
+    pack $itk_component(mode) -padx 2 -pady { 2 0 }
+
+    itk_component add stretchtofit {
+        Rappture::PushButton $f.stretchtofit \
+            -onimage [Rappture::icon stretchtofit] \
+            -offimage [Rappture::icon stretchtofit] \
+            -variable [itcl::scope _settings(-stretchtofit)] \
+            -command [itcl::code $this AdjustSetting -stretchtofit] \
+    }
+    Rappture::Tooltip::for $itk_component(stretchtofit) \
+        "Stretch plot to fit window on/off"
+    pack $itk_component(stretchtofit) -padx 2 -pady 2
+
+    if { [catch {
+        BuildContourTab
+        BuildAxisTab
+        BuildCameraTab
+    } errs] != 0 } {
+        global errorInfo
+        puts stderr "errs=$errs errorInfo=$errorInfo"
+    }
+
+    # Hack around the Tk panewindow.  The problem is that the requested
+    # size of the 3d view isn't set until an image is retrieved from
+    # the server.  So the panewindow uses the tiny size.
+    set w 10000
+    pack forget $itk_component(view)
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth $w
+    blt::table configure $itk_component(plotarea) c1 -resize none
+
+    # Bindings for panning via mouse
+    bind $itk_component(view) <ButtonPress-2> \
+        [itcl::code $this Pan click %x %y]
+    bind $itk_component(view) <B2-Motion> \
+        [itcl::code $this Pan drag %x %y]
+    bind $itk_component(view) <ButtonRelease-2> \
+        [itcl::code $this Pan release %x %y]
+
+    #bind $itk_component(view) <ButtonRelease-3> \
+    #    [itcl::code $this Pick %x %y]
+
+    # Bindings for panning via keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -2 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 2 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -2]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 2]
+
+    # Bindings for zoom via keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        # Bindings for zoom via mouse
+        bind $itk_component(view) <4> [itcl::code $this Zoom out]
+        bind $itk_component(view) <5> [itcl::code $this Zoom in]
+    }
+
+    set _image(download) [image create photo]
+    eval itk_initialize $args
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::destructor {} {
+    Disconnect
+    image delete $_image(plot)
+    image delete $_image(download)
+    catch { blt::arcball destroy $_arcball }
+}
+
+itcl::body Rappture::VtkHeightmapViewer::DoResize {} {
+    if { $_width < 2 } {
+        set _width 500
+    }
+    if { $_height < 2 } {
+        set _height 500
+    }
+    set _start [clock clicks -milliseconds]
+    SendCmd "screen size [expr $_width - 20] $_height"
+
+    set font "Arial 8"
+    set lh [font metrics $font -linespace]
+    set h [expr {$_height - 2 * ($lh + 2)}]
+    if { $h != $_legendHeight } {
+        EventuallyRequestLegend
+    } else {
+        DrawLegend
+    }
+    set _resizePending 0
+}
+
+itcl::body Rappture::VtkHeightmapViewer::DoRotate {} {
+    SendCmd "camera orient [ViewToQuaternion]"
+    set _rotatePending 0
+}
+
+itcl::body Rappture::VtkHeightmapViewer::EventuallyRequestLegend {} {
+    if { !$_legendPending } {
+        set _legendPending 1
+        $_dispatcher event -idle !legend
+    }
+}
+
+itcl::body Rappture::VtkHeightmapViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    $_arcball resize $w $h
+    if { !$_resizePending } {
+        set _resizePending 1
+        $_dispatcher event -after 250 !resize
+    }
+}
+
+set rotate_delay 100
+
+itcl::body Rappture::VtkHeightmapViewer::EventuallyRotate { q } {
+    QuaternionToView $q
+    if { !$_rotatePending } {
+        set _rotatePending 1
+        global rotate_delay
+        $_dispatcher event -after $rotate_delay !rotate
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::add {dataobj {settings ""}} {
+    if { ![$dataobj isvalid] } {
+        return;                         # Object doesn't contain valid data.
+    }
+    array set params {
+        -color auto
+        -width 1
+        -linestyle solid
+        -brightness 0
+        -raise 0
+        -description ""
+        -param ""
+        -type ""
+    }
+    array set params $settings
+    set params(-description) ""
+    set params(-param) ""
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) white
+    }
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+    }
+    set _obj2ovride($dataobj-color) $params(-color)
+    set _obj2ovride($dataobj-width) $params(-width)
+    set _obj2ovride($dataobj-raise) $params(-raise)
+    $_dispatcher event -idle !rebuild
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.  No data objects are
+# deleted.  They are only removed from the display list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::delete {args} {
+    if { [llength $args] == 0} {
+        set args $_dlist
+    }
+    # Delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if { $pos < 0 } {
+            continue;                   # Don't know anything about it.
+        }
+        # Remove it from the dataobj list.
+        set _dlist [lreplace $_dlist $pos $pos]
+        array unset _obj2ovride $dataobj-*
+        array unset _settings $dataobj-*
+        set changed 1
+    }
+    # If anything changed, then rebuild the plot
+    if { $changed } {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-objects?
+# USAGE: get ?-visible?
+# USAGE: get ?-image view?
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.  The optional "-image"
+# flag can also request the internal images being shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::get {args} {
+    if {[llength $args] == 0} {
+        set args "-objects"
+    }
+    set op [lindex $args 0]
+    switch -- $op {
+        "-objects" {
+            # put the dataobj list in order according to -raise options
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if {[info exists _obj2ovride($dataobj-raise)] &&
+                    $_obj2ovride($dataobj-raise)} {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        "-visible" {
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if { ![info exists _obj2ovride($dataobj-raise)] } {
+                    # No setting indicates that the object isn't visible.
+                    continue
+                }
+                # Otherwise use the -raise parameter to put the object to
+                # the front of the list.
+                if { $_obj2ovride($dataobj-raise) } {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        -image {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"get -image view\""
+            }
+            switch -- [lindex $args end] {
+                view {
+                    return $_image(plot)
+                }
+                default {
+                    error "bad image name \"[lindex $args end]\": should be view"
+                }
+            }
+        }
+        default {
+            error "bad option \"$op\": should be -objects or -image"
+        }
+    }
+}
+
+#
+# scale  --
+#
+# This gets called either incrementally as new simulations are
+# added or all at once as a sequence of heightmaps.
+# This  accounts for all objects--even those not showing on the
+# screen.  Because of this, the limits are appropriate for all
+# objects as the user scans through data in the ResultSet viewer.
+#
+itcl::body Rappture::VtkHeightmapViewer::scale {args} {
+    foreach dataobj $args {
+        if { ![$dataobj isvalid] } {
+            continue;                   # Object doesn't contain valid data.
+        }
+        foreach axis { x y } {
+            set units [$dataobj hints ${axis}units]
+            set found($units) 1
+            set lim [$dataobj limits $axis]
+            if { ![info exists _limits($axis)] } {
+                set _limits($axis) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {amin amax} $_limits($axis) break
+            if { $amin > $min } {
+                set amin $min
+            }
+            if { $amax < $max } {
+                set amax $max
+            }
+            set _limits($axis) [list $amin $amax]
+        }
+        foreach { fname lim } [$dataobj fieldlimits] {
+            if { ![info exists _limits($fname)] } {
+                set _limits($fname) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {fmin fmax} $_limits($fname) break
+            if { $fmin > $min } {
+                set fmin $min
+            }
+            if { $fmax < $max } {
+                set fmax $max
+            }
+            set _limits($fname) [list $fmin $fmax]
+        }
+    }
+    if { [array size found] > 1 } {
+        set _settings(-stretchtofit) 1
+    } else {
+        # Check if the range of the x and y axes requires that we stretch
+        # the contour to fit the plotting area.  This can happen when the
+        # x and y scales differ greatly (> 100x)
+        foreach {xmin xmax} $_limits(x) break
+        foreach {ymin ymax} $_limits(y) break
+        if { (($xmax - $xmin) > (($ymax -$ymin) * $_maxScale)) ||
+             ((($xmax - $xmin) * $_maxScale) < ($ymax -$ymin)) } {
+            set _settings(-stretchtofit) 1
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::download {option args} {
+    switch $option {
+        coming {
+            if {[catch {
+                blt::winop snap $itk_component(plotarea) $_image(download)
+            }]} {
+                $_image(download) configure -width 1 -height 1
+                $_image(download) put #000000
+            }
+        }
+        controls {
+            set popup .vtkviewerdownload
+            if { ![winfo exists .vtkviewerdownload] } {
+                set inner [BuildDownloadPopup $popup [lindex $args 0]]
+            } else {
+                set inner [$popup component inner]
+            }
+            set _downloadPopup(image_controls) $inner.image_frame
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks            ;# Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .vtkviewerdownload
+            if {[winfo exists .vtkviewerdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "image" {
+                    return [$this GetImage [lindex $args 0]]
+                }
+                "vtk" {
+                    return [$this GetVtkData [lindex $args 0]]
+                }
+            }
+            return ""
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Connect ?<host:port>,<host:port>...?
+#
+# Clients use this method to establish a connection to a new
+# server, or to reestablish a connection to the previous server.
+# Any existing connection is automatically closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::Connect {} {
+    global readyForNextFrame
+    set readyForNextFrame 1
+    set _hosts [GetServerList "vtkvis"]
+    if { "" == $_hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $_hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "vtkheightmapviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        EventuallyResize $w $h
+    }
+    return $result
+}
+
+#
+# isconnected --
+#
+# Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::VtkHeightmapViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# disconnect --
+#
+itcl::body Rappture::VtkHeightmapViewer::disconnect {} {
+    Disconnect
+    set _reset 1
+}
+
+#
+# Disconnect --
+#
+# Clients use this method to disconnect from the current rendering server.
+#
+itcl::body Rappture::VtkHeightmapViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    $_dispatcher cancel !rebuild
+    $_dispatcher cancel !resize
+    $_dispatcher cancel !rotate
+    $_dispatcher cancel !legend
+    # disconnected -- no more data sitting on server
+    array unset _datasets
+    array unset _colormaps
+    global readyForNextFrame
+    set readyForNextFrame 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveImage -bytes <size> -type <type> -token <token>
+#
+# Invoked automatically whenever the "image" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::ReceiveImage { args } {
+    global readyForNextFrame
+    set readyForNextFrame 1
+    array set info {
+        -token "???"
+        -bytes 0
+        -type image
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    if { $info(-type) == "image" } {
+        if 0 {
+            set f [open "last.ppm" "w"]
+            fconfigure $f -encoding binary
+            puts -nonewline $f $bytes
+            close $f
+        }
+        $_image(plot) configure -data $bytes
+        set time [clock seconds]
+        set date [clock format $time]
+        #puts stderr "$date: received image [image width $_image(plot)]x[image height $_image(plot)] image>"
+        if { $_start > 0 } {
+            set finish [clock clicks -milliseconds]
+            #puts stderr "round trip time [expr $finish -$_start] milliseconds"
+            set _start 0
+        }
+    } elseif { $info(type) == "print" } {
+        set tag $this-print-$info(-token)
+        set _hardcopy($tag) $bytes
+    }
+}
+
+#
+# ReceiveDataset --
+#
+itcl::body Rappture::VtkHeightmapViewer::ReceiveDataset { args } {
+    if { ![isconnected] } {
+        return
+    }
+    set option [lindex $args 0]
+    switch -- $option {
+        "scalar" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z value tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y value tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "vector" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z vx vy vz tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y vx vy vz tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "names" {
+            foreach { name } [lindex $args 1] {
+                #puts stderr "Dataset: $name"
+            }
+        }
+        default {
+            error "unknown dataset option \"$option\" from server"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::Rebuild {} {
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $w < 2 || $h < 2 } {
+        update
+        $_dispatcher event -idle !rebuild
+        return
+    }
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (which automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+
+    if { $_width != $w || $_height != $h || $_reset } {
+        set _width $w
+        set _height $h
+        $_arcball resize $w $h
+        DoResize
+        if { $_settings(-stretchtofit) } {
+            AdjustSetting -stretchtofit
+        }
+    }
+    if { $_reset } {
+        #
+        # Reset the camera and other view parameters
+        #
+        InitSettings -isheightmap -background
+
+        # Setting a custom exponent and label format for axes is causing
+        # a problem with rounding.  Near zero ticks aren't rounded by
+        # the %g format.  The VTK CubeAxes seem to currently work best
+        # when allowed to automatically set the exponent and precision
+        # based on the axis ranges.  This does tend to result in less
+        # visual clutter, so I think it is best to use the automatic
+        # settings by default.  We can test more fine-grained
+        # controls on the axis settings tab if necessary.
+        # -Leif
+        #SendCmd "axis exp 0 0 0 1"
+
+        SendCmd "axis lrot z 90"
+        $_arcball quaternion [ViewToQuaternion]
+        if {$_settings(-isheightmap) } {
+            if { $_view(-ortho)} {
+                SendCmd "camera mode ortho"
+            } else {
+                SendCmd "camera mode persp"
+            }
+            DoRotate
+            SendCmd "camera reset"
+        }
+        PanCamera
+        StopBufferingCommands
+        SendCmd "imgflush"
+        StartBufferingCommands
+    }
+
+    set _first ""
+    # Start off with no datasets are visible.
+    SendCmd "dataset visible 0"
+    set scale [GetHeightmapScale]
+    foreach dataobj [get -objects] {
+        if { [info exists _obj2ovride($dataobj-raise)] &&  $_first == "" } {
+            set _first $dataobj
+        }
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { ![info exists _datasets($tag)] } {
+                set bytes [$dataobj vtkdata $comp]
+                if 0 {
+                    set f [open /tmp/vtkheightmap.vtk "w"]
+                    fconfigure $f -translation binary -encoding binary
+                    puts -nonewline $f $bytes
+                    close $f
+                }
+                set length [string length $bytes]
+                if { $_reportClientInfo }  {
+                    set info {}
+                    lappend info "tool_id"       [$dataobj hints toolid]
+                    lappend info "tool_name"     [$dataobj hints toolname]
+                    lappend info "tool_title"    [$dataobj hints tooltitle]
+                    lappend info "tool_command"  [$dataobj hints toolcommand]
+                    lappend info "tool_revision" [$dataobj hints toolrevision]
+                    lappend info "dataset_label" [$dataobj hints label]
+                    lappend info "dataset_size"  $length
+                    lappend info "dataset_tag"   $tag
+                    SendCmd "clientinfo [list $info]"
+                }
+                SendCmd "dataset add $tag data follows $length"
+                SendData $bytes
+                set _datasets($tag) 1
+                SetObjectStyle $dataobj $comp
+            }
+            if { [info exists _obj2ovride($dataobj-raise)] } {
+                # Setting dataset visible enables outline
+                # and heightmap
+                SendCmd "dataset visible 1 $tag"
+            }
+            if { ![info exists _comp2scale($tag)] ||
+                 $_comp2scale($tag) != $scale } {
+                SendCmd "heightmap heightscale $scale $tag"
+                set _comp2scale($tag) $scale
+            }
+        }
+    }
+    if { $_first != "" } {
+        $itk_component(field) choices delete 0 end
+        $itk_component(fieldmenu) delete 0 end
+        array unset _fields
+        set _curFldName ""
+        foreach cname [$_first components] {
+            foreach fname [$_first fieldnames $cname] {
+                if { [info exists _fields($fname)] } {
+                    continue
+                }
+                foreach { label units components } \
+                    [$_first fieldinfo $fname] break
+                $itk_component(field) choices insert end "$fname" "$label"
+                $itk_component(fieldmenu) add radiobutton -label "$label" \
+                    -value $label -variable [itcl::scope _curFldLabel] \
+                    -selectcolor red \
+                    -activebackground $itk_option(-plotbackground) \
+                    -activeforeground $itk_option(-plotforeground) \
+                    -font "Arial 8" \
+                    -command [itcl::code $this Combo invoke]
+                set _fields($fname) [list $label $units $components]
+                if { $_curFldName == "" } {
+                    set _curFldName $fname
+                    set _curFldLabel $label
+                }
+            }
+        }
+        $itk_component(field) value $_curFldLabel
+    }
+    InitSettings -stretchtofit -outline
+
+    if { $_reset } {
+        SendCmd "axis tickpos outside"
+        #SendCmd "axis lformat all %g"
+
+        foreach axis { x y z } {
+            set label ""
+            if { $_first != "" } {
+                if { $axis == "z" } {
+                    set label [$_first hints label]
+                } else {
+                    set label [$_first hints ${axis}label]
+                }
+            }
+            if { $label == "" } {
+                if {$axis == "z"} {
+                    if { [string match "component*" $_curFldName] } {
+                        set label [string toupper $axis]
+                    } else {
+                        set label $_curFldLabel
+                    }
+                } else {
+                    set label [string toupper $axis]
+                }
+            }
+            # May be a space in the axis label.
+            SendCmd [list axis name $axis $label]
+
+            set units ""
+            if { $_first != "" } {
+                if { $axis == "z" } {
+                    set units [$_first hints units]
+                } else {
+                    set units [$_first hints ${axis}units]
+                }
+            }
+            if { $units == "" && $axis == "z" } {
+                if { $_first != "" && [$_first hints zunits] != "" } {
+                    set units [$_first hints zunits]
+                } elseif { [info exists _fields($_curFldName)] } {
+                    set units [lindex $_fields($_curFldName) 1]
+                }
+            }
+            # May be a space in the axis units.
+            SendCmd [list axis units $axis $units]
+        }
+        #
+        # Reset the camera and other view parameters
+        #
+        ResetAxes
+        $_arcball quaternion [ViewToQuaternion]
+        if {$_settings(-isheightmap) } {
+            if { $_view(-ortho)} {
+                SendCmd "camera mode ortho"
+            } else {
+                SendCmd "camera mode persp"
+            }
+            DoRotate
+            SendCmd "camera reset"
+        }
+        PanCamera
+        InitSettings -xgrid -ygrid -zgrid \
+            -axisvisible -axislabels -heightmapscale -field -isheightmap \
+            -numisolines
+        if { [array size _fields] < 2 } {
+            catch {blt::table forget $itk_component(field) $itk_component(field_l)}
+        }
+        RequestLegend
+        set _reset 0
+    }
+    global readyForNextFrame
+    set readyForNextFrame 0;                # Don't advance to the next frame
+
+    # Actually write the commands to the server socket.  If it fails, we don't
+    # care.  We're finished here.
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands
+    blt::busy release $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CurrentDatasets ?-all -visible? ?dataobjs?
+#
+# Returns a list of server IDs for the current datasets being displayed.  This
+# is normally a single ID, but it might be a list of IDs if the current data
+# object has multiple components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::CurrentDatasets {args} {
+    set flag [lindex $args 0]
+    switch -- $flag {
+        "-all" {
+            if { [llength $args] > 1 } {
+                error "CurrentDatasets: can't specify dataobj after \"-all\""
+            }
+            set dlist [get -objects]
+        }
+        "-visible" {
+            if { [llength $args] > 1 } {
+                set dlist {}
+                set args [lrange $args 1 end]
+                foreach dataobj $args {
+                    if { [info exists _obj2ovride($dataobj-raise)] } {
+                        lappend dlist $dataobj
+                    }
+                }
+            } else {
+                set dlist [get -visible]
+            }
+        }
+        default {
+            set dlist $args
+        }
+    }
+    set rlist ""
+    foreach dataobj $dlist {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { [info exists _datasets($tag)] && $_datasets($tag) } {
+                lappend rlist $tag
+            }
+        }
+    }
+    return $rlist
+}
+
+itcl::body Rappture::VtkHeightmapViewer::CameraReset {} {
+    array set _view {
+        -qw      0.36
+        -qx      0.25
+        -qy      0.50
+        -qz      0.70
+        -xpan    0
+        -ypan    0
+        -zoom    1.0
+    }
+    if { $_first != "" } {
+        set location [$_first hints camera]
+        if { $location != "" } {
+            array set _view $location
+        }
+    }
+    $_arcball quaternion [ViewToQuaternion]
+    if {$_settings(-isheightmap) } {
+        DoRotate
+    }
+    SendCmd "camera reset"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::Zoom {option} {
+    switch -- $option {
+        "in" {
+            set _view(-zoom) [expr {$_view(-zoom)*1.25}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "out" {
+            set _view(-zoom) [expr {$_view(-zoom)*0.8}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "reset" {
+            array set _view {
+                -xpan    0
+                -ypan    0
+                -zoom    1.0
+            }
+            SendCmd "camera reset"
+        }
+    }
+}
+
+itcl::body Rappture::VtkHeightmapViewer::PanCamera {} {
+    set x $_view(-xpan)
+    set y $_view(-ypan)
+    SendCmd "camera pan $x $y"
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::Rotate {option x y} {
+    switch -- $option {
+        "click" {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "drag" {
+            if {[array size _click] == 0} {
+                Rotate click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+                if { $dx == 0 && $dy == 0 } {
+                    return
+                }
+                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
+                EventuallyRotate $q
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        "release" {
+            Rotate drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
+
+itcl::body Rappture::VtkHeightmapViewer::Pick {x y} {
+    foreach tag [CurrentDatasets -visible] {
+        SendCmd "dataset getscalar pixel $x $y $tag"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::Pan {option x y} {
+    switch -- $option {
+        "set" {
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set x [expr $x / double($w)]
+            set y [expr $y / double($h)]
+            set _view(-xpan) [expr $_view(-xpan) + $x]
+            set _view(-ypan) [expr $_view(-ypan) + $y]
+            PanCamera
+            return
+        }
+        "click" {
+            set _click(x) $x
+            set _click(y) $y
+            $itk_component(view) configure -cursor hand1
+        }
+        "drag" {
+            if { ![info exists _click(x)] } {
+                set _click(x) $x
+            }
+            if { ![info exists _click(y)] } {
+                set _click(y) $y
+            }
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set dx [expr ($_click(x) - $x)/double($w)]
+            set dy [expr ($_click(y) - $y)/double($h)]
+            set _click(x) $x
+            set _click(y) $y
+            set _view(-xpan) [expr $_view(-xpan) - $dx]
+            set _view(-ypan) [expr $_view(-ypan) - $dy]
+            PanCamera
+        }
+        "release" {
+            Pan drag $x $y
+            $itk_component(view) configure -cursor ""
+        }
+        default {
+            error "unknown option \"$option\": should set, click, drag, or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitSettings <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::InitSettings { args } {
+    foreach spec $args {
+        if { [info exists _settings($_first${spec})] } {
+            # Reset global setting with dataobj specific setting
+            set _settings($spec) $_settings($_first${spec})
+        }
+        AdjustSetting $spec
+    }
+}
+
+#
+# AdjustSetting --
+#
+# Changes/updates a specific setting in the widget.  There are
+# usually user-setable option.  Commands are sent to the render
+# server.
+#
+itcl::body Rappture::VtkHeightmapViewer::AdjustSetting {what {value ""}} {
+    if { ![isconnected] } {
+        return
+    }
+    switch -- $what {
+        "-axisflymode" {
+            set mode [$itk_component(axisflymode) value]
+            set mode [$itk_component(axisflymode) translate $mode]
+            set _settings($what) $mode
+            SendCmd "axis flymode $mode"
+        }
+        "-axislabels" {
+            set bool $_settings($what)
+            SendCmd "axis labels all $bool"
+        }
+        "-axisminorticks" {
+            set bool $_settings($what)
+            SendCmd "axis minticks all $bool"
+        }
+        "-axisvisible" {
+            set bool $_settings($what)
+            SendCmd "axis visible all $bool"
+        }
+        "-background" {
+            set bg [$itk_component(background) value]
+            array set fgcolors {
+                "black" "white"
+                "white" "black"
+                "grey"  "black"
+            }
+            set fg $fgcolors($bg)
+            configure -plotbackground $bg -plotforeground $fg
+            $itk_component(view) delete "legend"
+            SendCmd "screen bgcolor [Color2RGB $bg]"
+            SendCmd "outline color [Color2RGB $fg]"
+            SendCmd "axis color all [Color2RGB $fg]"
+            DrawLegend
+        }
+        "-colormap" {
+            set _changed($what) 1
+            StartBufferingCommands
+            set color [$itk_component(colormap) value]
+            set _settings($what) $color
+            if { $color == "none" } {
+                if { $_settings(-colormapvisible) } {
+                    SendCmd "heightmap surface 0"
+                    set _settings(-colormapvisible) 0
+                }
+            } else {
+                if { !$_settings(-colormapvisible) } {
+                    SendCmd "heightmap surface 1"
+                    set _settings(-colormapvisible) 1
+                }
+                SetCurrentColormap $color
+                if {$_settings(-colormapdiscrete)} {
+                    set numColors [expr $_settings(-numisolines) + 1]
+                    SendCmd "colormap res $numColors $color"
+                }
+            }
+            StopBufferingCommands
+            EventuallyRequestLegend
+        }
+        "-colormapvisible" {
+            set bool $_settings($what)
+            SendCmd "heightmap surface $bool"
+        }
+        "-colormapdiscrete" {
+            set bool $_settings($what)
+            set numColors [expr $_settings(-numisolines) + 1]
+            StartBufferingCommands
+            if {$bool} {
+                SendCmd "colormap res $numColors"
+                # Discrete colormap requires preinterp on
+                SendCmd "heightmap preinterp on"
+            } else {
+                SendCmd "colormap res default"
+                # FIXME: add setting for preinterp (default on)
+                SendCmd "heightmap preinterp on"
+            }
+            StopBufferingCommands
+            EventuallyRequestLegend
+        }
+        "-edges" {
+            set bool $_settings($what)
+            SendCmd "heightmap edges $bool"
+        }
+        "-field" {
+            set label [$itk_component(field) value]
+            set fname [$itk_component(field) translate $label]
+            set _settings($what) $fname
+            if { [info exists _fields($fname)] } {
+                foreach { label units components } $_fields($fname) break
+                if { $components > 1 } {
+                    set _colorMode vmag
+                } else {
+                    set _colorMode scalar
+                }
+                set _curFldName $fname
+                set _curFldLabel $label
+            } else {
+                puts stderr "unknown field \"$fname\""
+                return
+            }
+            set label ""
+            if { $_first != "" } {
+                set label [$_first hints label]
+            }
+            if { $label == "" } {
+                if { [string match "component*" $_curFldName] } {
+                    set label Z
+                } else {
+                    set label $_curFldLabel
+                }
+            }
+            # May be a space in the axis label.
+            SendCmd [list axis name z $label]
+
+            set units ""
+            if { $_first != "" } {
+                set units [$_first hints units]
+            }
+            if { $units == "" } {
+                if { $_first != "" && [$_first hints zunits] != "" } {
+                    set units [$_first hints zunits]
+                } elseif { [info exists _fields($_curFldName)] } {
+                    set units [lindex $_fields($_curFldName) 1]
+                }
+            }
+            # May be a space in the axis units.
+            SendCmd [list axis units z $units]
+            # Get the new limits because the field changed.
+            ResetAxes
+            SendCmd "dataset scalar $_curFldName"
+            SendCmd "heightmap colormode $_colorMode $_curFldName"
+            UpdateContourList
+            SendCmd "heightmap contourlist [list $_contourList]"
+            Zoom reset
+            DrawLegend
+        }
+        "-heightmapscale" {
+            if { $_settings(-isheightmap) } {
+                set scale [GetHeightmapScale]
+                # Have to set the datasets individually because we are
+                # tracking them in _comp2scale.
+                foreach dataset [CurrentDatasets -all] {
+                    SendCmd "heightmap heightscale $scale $dataset"
+                    set _comp2scale($dataset) $scale
+                }
+                ResetAxes
+            }
+        }
+        "-isheightmap" {
+            set bool $_settings($what)
+            set c $itk_component(view)
+            StartBufferingCommands
+            # Fix heightmap scale: 0 for contours, 1 for heightmaps.
+            if { $bool } {
+                set _settings(-heightmapscale) 50
+                set _settings(-opacity) $_settings(-saveopacity)
+                set _settings(-lighting) $_settings(-savelighting)
+                set _settings(-outline) 0
+            } else {
+                set _settings(-heightmapscale) 0
+                set _settings(-lighting) 0
+                set _settings(-opacity) 100
+                set _settings(-outline)  $_settings(-saveoutline)
+            }
+            InitSettings -lighting -opacity -outline
+            set scale [GetHeightmapScale]
+            # Have to set the datasets individually because we are
+            # tracking them in _comp2scale.
+            foreach dataset [CurrentDatasets -all] {
+                SendCmd "heightmap heightscale $scale $dataset"
+                set _comp2scale($dataset) $scale
+            }
+            if { $bool } {
+                $itk_component(lighting) configure -state normal
+                $itk_component(opacity) configure -state normal
+                $itk_component(scale) configure -state normal
+                $itk_component(opacity_l) configure -state normal
+                $itk_component(scale_l) configure -state normal
+                $itk_component(outline) configure -state disabled
+                if {$_view(-ortho)} {
+                    SendCmd "camera mode ortho"
+                } else {
+                    SendCmd "camera mode persp"
+                }
+            } else {
+                $itk_component(lighting) configure -state disabled
+                $itk_component(opacity) configure -state disabled
+                $itk_component(scale) configure -state disabled
+                $itk_component(opacity_l) configure -state disabled
+                $itk_component(scale_l) configure -state disabled
+                $itk_component(outline) configure -state normal
+                SendCmd "camera mode image"
+            }
+            if {$_settings(-stretchtofit)} {
+                if {$scale == 0} {
+                    SendCmd "camera aspect window"
+                } else {
+                    SendCmd "camera aspect square"
+                }
+            }
+            ResetAxes
+            if { $bool } {
+                set q [ViewToQuaternion]
+                $_arcball quaternion $q
+                SendCmd "camera orient $q"
+            } else {
+                bind $c <ButtonPress-1> {}
+                bind $c <B1-Motion> {}
+                bind $c <ButtonRelease-1> {}
+            }
+            Zoom reset
+            # Fix the mouse bindings for rotation/panning and the
+            # camera mode. Ideally we'd create a bindtag for these.
+            if { $bool } {
+                # Bindings for rotation via mouse
+                bind $c <ButtonPress-1> \
+                    [itcl::code $this Rotate click %x %y]
+                bind $c <B1-Motion> \
+                    [itcl::code $this Rotate drag %x %y]
+                bind $c <ButtonRelease-1> \
+                    [itcl::code $this Rotate release %x %y]
+            }
+            StopBufferingCommands
+        }
+        "-isolinecolor" {
+            set color [$itk_component(isolinecolor) value]
+            if { $color == "none" } {
+                if { $_settings(-isolinesvisible) } {
+                    SendCmd "heightmap isolines 0"
+                    set _settings(-isolinesvisible) 0
+                }
+            } else {
+                if { !$_settings(-isolinesvisible) } {
+                    SendCmd "heightmap isolines 1"
+                    set _settings(-isolinesvisible) 1
+                }
+                SendCmd "heightmap isolinecolor [Color2RGB $color]"
+            }
+            DrawLegend
+        }
+        "-isolinesvisible" {
+            set bool $_settings($what)
+            SendCmd "heightmap isolines $bool"
+            DrawLegend
+        }
+        "-legendvisible" {
+            if { !$_settings($what) } {
+                $itk_component(view) delete legend
+            }
+            DrawLegend
+        }
+        "-lighting" {
+            if { $_settings(-isheightmap) } {
+                set _settings(-savelighting) $_settings($what)
+                set bool $_settings($what)
+                SendCmd "heightmap lighting $bool"
+            } else {
+                SendCmd "heightmap lighting 0"
+            }
+        }
+        "-numisolines" {
+            set _settings($what) [$itk_component(numisolines) value]
+            set _currentNumIsolines $_settings($what)
+            UpdateContourList
+            set _changed($what) 1
+            SendCmd "heightmap contourlist [list $_contourList]"
+            if {$_settings(-colormapdiscrete)} {
+                set numColors [expr $_settings($what) + 1]
+                SendCmd "colormap res $numColors"
+                EventuallyRequestLegend
+            } else {
+                DrawLegend
+            }
+        }
+        "-opacity" {
+            set _changed($what) 1
+            set val [expr $_settings($what) * 0.01]
+            if { $_settings(-isheightmap) } {
+                set _settings(-saveopacity) $_settings($what)
+                SendCmd "heightmap opacity $val"
+            } else {
+                SendCmd "heightmap opacity 1.0"
+            }
+        }
+        "-outline" {
+            if { $_settings(-isheightmap) } {
+                SendCmd "outline visible 0"
+            } else {
+                set _settings(-saveoutline) $_settings($what)
+                set bool $_settings($what)
+                SendCmd "outline visible $bool"
+            }
+        }
+        "-stretchtofit" {
+            set bool $_settings($what)
+            if { $bool } {
+                set heightScale [GetHeightmapScale]
+                if {$heightScale == 0} {
+                    SendCmd "camera aspect window"
+                } else {
+                    SendCmd "camera aspect square"
+                }
+            } else {
+                SendCmd "camera aspect native"
+            }
+            Zoom reset
+        }
+        "-wireframe" {
+            set bool $_settings($what)
+            SendCmd "heightmap wireframe $bool"
+        }
+        "-xgrid" - "-ygrid" - "-zgrid" {
+            set axis [string tolower [string range $what 1 1]]
+            set bool $_settings($what)
+            SendCmd "axis grid $axis $bool"
+        }
+        default {
+            error "don't know how to fix $what"
+        }
+    }
+}
+
+#
+# RequestLegend --
+#
+# Request a new legend from the server.  The size of the legend
+# is determined from the height of the canvas.
+#
+# This should be called when
+#   1.  A new current colormap is set.
+#   2.  Window is resized.
+#   3.  The limits of the data have changed.  (Just need a redraw).
+#   4.  Number of isolines have changed. (Just need a redraw).
+#   5.  Legend becomes visible (Just need a redraw).
+#
+itcl::body Rappture::VtkHeightmapViewer::RequestLegend {} {
+    set _legendPending 0
+    set font "Arial 8"
+    set w 12
+    set lineht [font metrics $font -linespace]
+    # color ramp height = (canvas height) - (min and max value lines) - 2
+    set h [expr {$_height - 2 * ($lineht + 2)}]
+    set _legendHeight $h
+
+    set fname $_curFldName
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    # If there's a title too, subtract one more line
+    if { $title != "" } {
+        incr h -$lineht
+    }
+    if { $h < 1 } {
+        return
+    }
+    # Set the legend on the first dataset.
+    if { $_currentColormap != "" } {
+        set cmap $_currentColormap
+        if { ![info exists _colormaps($cmap)] } {
+           BuildColormap $cmap
+           set _colormaps($cmap) 1
+        }
+        #SendCmd "legend $cmap scalar $_curFldName {} $w $h 0"
+        SendCmd "legend2 $cmap $w $h"
+    }
+}
+
+#
+# ResetAxes --
+#
+# Set axis z bounds and range
+#
+itcl::body Rappture::VtkHeightmapViewer::ResetAxes {} {
+    if { ![info exists _limits($_curFldName)]} {
+        SendCmd "dataset maprange all"
+        SendCmd "axis autorange z on"
+        SendCmd "axis autobounds z on"
+        return
+    }
+    foreach { xmin xmax } $_limits(x) break
+    foreach { ymin ymax } $_limits(y) break
+    foreach { vmin vmax } $_limits($_curFldName) break
+
+    global tcl_precision
+    set tcl_precision 17
+    set xr [expr $xmax - $xmin]
+    set yr [expr $ymax - $ymin]
+    set vr [expr $vmax - $vmin]
+    set r  [expr ($yr > $xr) ? $yr : $xr]
+    if { $vr < 1.0e-17 } {
+        set dataScale 1.0
+    } else {
+        set dataScale [expr $r / $vr]
+    }
+    set heightScale [GetHeightmapScale]
+    set bmin [expr $heightScale * $dataScale * $vmin]
+    set bmax [expr $heightScale * $dataScale * $vmax]
+    if {$heightScale > 0} {
+        set zpos [expr - $bmin]
+        SendCmd "heightmap pos 0 0 $zpos"
+    } else {
+        SendCmd "heightmap pos 0 0 0"
+    }
+    set bmax [expr $bmax - $bmin]
+    set bmin 0
+    SendCmd "dataset maprange explicit $_limits($_curFldName) $_curFldName"
+    SendCmd "axis bounds z $bmin $bmax"
+    SendCmd "axis range z $_limits($_curFldName)"
+}
+
+#
+# SetCurrentColormap --
+#
+itcl::body Rappture::VtkHeightmapViewer::SetCurrentColormap { name } {
+    # Keep track of the colormaps that we build.
+    if { $name != "none" && ![info exists _colormaps($name)] } {
+        BuildColormap $name
+        set _colormaps($name) 1
+    }
+    set _currentColormap $name
+    SendCmd "heightmap colormap $_currentColormap"
+}
+
+#
+# BuildColormap --
+#
+# Build the designated colormap on the server.
+#
+itcl::body Rappture::VtkHeightmapViewer::BuildColormap { name } {
+    set cmap [ColorsToColormap $name]
+    if { [llength $cmap] == 0 } {
+        set cmap "0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0"
+    }
+    set amap "0.0 1.0 1.0 1.0"
+    SendCmd "colormap add $name { $cmap } { $amap }"
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -mode
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkHeightmapViewer::mode {
+    switch -- $itk_option(-mode) {
+        "heightmap" {
+            set _settings(-isheightmap) 1
+        }
+        "contour" {
+            set _settings(-isheightmap) 0
+        }
+        default {
+            error "unknown mode settings \"$itk_option(-mode)\""
+        }
+    }
+    if { !$_reset } {
+        AdjustSetting -isheightmap
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkHeightmapViewer::plotbackground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotbackground)]
+        if { !$_reset } {
+            SendCmd "screen bgcolor $rgb"
+        }
+        $itk_component(view) configure -background $itk_option(-plotbackground)
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkHeightmapViewer::plotforeground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotforeground)]
+        if { !$_reset } {
+            SendCmd "axis color all $rgb"
+            SendCmd "outline color $rgb"
+        }
+    }
+}
+
+itcl::body Rappture::VtkHeightmapViewer::BuildContourTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Contour/Surface Settings" \
+        -icon [Rappture::icon contour2]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.legend \
+        -text "Legend" \
+        -variable [itcl::scope _settings(-legendvisible)] \
+        -command [itcl::code $this AdjustSetting -legendvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.wireframe \
+        -text "Wireframe" \
+        -variable [itcl::scope _settings(-wireframe)] \
+        -command [itcl::code $this AdjustSetting -wireframe] \
+        -font "Arial 9"
+
+    itk_component add lighting {
+        checkbutton $inner.lighting \
+            -text "Enable Lighting" \
+            -variable [itcl::scope _settings(-lighting)] \
+            -command [itcl::code $this AdjustSetting -lighting] \
+            -font "Arial 9"
+    } {
+        ignore -font
+    }
+    checkbutton $inner.edges \
+        -text "Edges" \
+        -variable [itcl::scope _settings(-edges)] \
+        -command [itcl::code $this AdjustSetting -edges] \
+        -font "Arial 9"
+
+    itk_component add outline {
+        checkbutton $inner.outline \
+            -text "Outline" \
+            -variable [itcl::scope _settings(-outline)] \
+            -command [itcl::code $this AdjustSetting -outline] \
+            -font "Arial 9"
+    } {
+        ignore -font
+    }
+    checkbutton $inner.stretch \
+        -text "Stretch to fit" \
+        -variable [itcl::scope _settings(-stretchtofit)] \
+        -command [itcl::code $this AdjustSetting -stretchtofit] \
+        -font "Arial 9"
+
+    checkbutton $inner.isolines \
+        -text "Isolines" \
+        -variable [itcl::scope _settings(-isolinesvisible)] \
+        -command [itcl::code $this AdjustSetting -isolinesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.colormapDiscrete \
+        -text "Discrete Colormap" \
+        -variable [itcl::scope _settings(-colormapdiscrete)] \
+        -command [itcl::code $this AdjustSetting -colormapdiscrete] \
+        -font "Arial 9"
+
+    itk_component add field_l {
+        label $inner.field_l -text "Field" -font "Arial 9"
+    } {
+        ignore -font
+    }
+    itk_component add field {
+        Rappture::Combobox $inner.field -width 10 -editable 0
+    }
+    bind $inner.field <<Value>> \
+        [itcl::code $this AdjustSetting -field]
+
+    label $inner.colormap_l -text "Colormap" -font "Arial 9"
+    itk_component add colormap {
+        Rappture::Combobox $inner.colormap -width 10 -editable 0
+    }
+    $inner.colormap choices insert end [GetColormapList -includeNone]
+    $itk_component(colormap) value $_settings(-colormap)
+    bind $inner.colormap <<Value>> \
+        [itcl::code $this AdjustSetting -colormap]
+
+    label $inner.isolinecolor_l -text "Isolines Color" -font "Arial 9"
+    itk_component add isolinecolor {
+        Rappture::Combobox $inner.isolinecolor -width 10 -editable 0
+    }
+    $inner.isolinecolor choices insert end \
+        "black"              "black"            \
+        "blue"               "blue"             \
+        "cyan"               "cyan"             \
+        "green"              "green"            \
+        "grey"               "grey"             \
+        "magenta"            "magenta"          \
+        "orange"             "orange"           \
+        "red"                "red"              \
+        "white"              "white"            \
+        "none"               "none"
+
+    $itk_component(isolinecolor) value $_settings(-isolinecolor)
+    bind $inner.isolinecolor <<Value>> \
+        [itcl::code $this AdjustSetting -isolinecolor]
+
+    label $inner.background_l -text "Background Color" -font "Arial 9"
+    itk_component add background {
+        Rappture::Combobox $inner.background -width 10 -editable 0
+    }
+    $inner.background choices insert end \
+        "black"              "black"            \
+        "white"              "white"            \
+        "grey"               "grey"
+
+    $itk_component(background) value "white"
+    bind $inner.background <<Value>> \
+        [itcl::code $this AdjustSetting -background]
+
+    itk_component add opacity_l {
+        label $inner.opacity_l -text "Opacity" -font "Arial 9"
+    } {
+        ignore -font
+    }
+    itk_component add opacity {
+        ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+            -variable [itcl::scope _settings(-opacity)] \
+            -showvalue off \
+            -command [itcl::code $this AdjustSetting -opacity]
+    }
+    itk_component add scale_l {
+        label $inner.scale_l -text "Scale" -font "Arial 9"
+    } {
+        ignore -font
+    }
+    itk_component add scale {
+        ::scale $inner.scale -from 0 -to 100 -orient horizontal \
+            -variable [itcl::scope _settings(-heightmapscale)] \
+            -showvalue off \
+            -command [itcl::code $this AdjustSetting -heightmapscale]
+    }
+    label $inner.numisolines_l -text "Number of Isolines" -font "Arial 9"
+    itk_component add numisolines {
+        Rappture::Spinint $inner.numisolines \
+            -min 0 -max 50 -font "arial 9"
+    }
+    $itk_component(numisolines) value $_settings(-numisolines)
+    bind $itk_component(numisolines) <<Value>> \
+        [itcl::code $this AdjustSetting -numisolines]
+
+    frame $inner.separator1 -height 2 -relief sunken -bd 1
+    frame $inner.separator2 -height 2 -relief sunken -bd 1
+
+    blt::table $inner \
+        0,0 $inner.field_l -anchor w -pady 2 \
+        0,1 $inner.field -anchor w -pady 2 -fill x \
+        1,0 $inner.colormap_l -anchor w -pady 2  \
+        1,1 $inner.colormap   -anchor w -pady 2 -fill x  \
+        2,0 $inner.isolinecolor_l  -anchor w -pady 2  \
+        2,1 $inner.isolinecolor    -anchor w -pady 2 -fill x  \
+        3,0 $inner.background_l -anchor w -pady 2 \
+        3,1 $inner.background -anchor w -pady 2  -fill x \
+        4,0 $inner.numisolines_l -anchor w -pady 2 \
+        4,1 $inner.numisolines -anchor w -pady 2 \
+        5,0 $inner.stretch    -anchor w -pady 2 -cspan 2 \
+        6,0 $inner.edges      -anchor w -pady 2 -cspan 2 \
+        7,0 $inner.legend     -anchor w -pady 2 -cspan 2 \
+        8,0 $inner.colormapDiscrete -anchor w -pady 2 -cspan 2 \
+        9,0 $inner.wireframe  -anchor w -pady 2 -cspan 2\
+        10,0 $inner.isolines   -anchor w -pady 2 -cspan 2 \
+        11,0 $inner.separator1 -padx 2 -fill x -cspan 2 \
+        12,0 $inner.outline    -anchor w -pady 2 -cspan 2 \
+        13,0 $inner.separator2 -padx 2 -fill x -cspan 2 \
+        14,0 $inner.lighting   -anchor w -pady 2 -cspan 2 \
+        15,0 $inner.opacity_l -anchor w -pady 2 \
+        15,1 $inner.opacity   -fill x   -pady 2 \
+        16,0 $inner.scale_l   -anchor w -pady 2 -cspan 2 \
+        16,1 $inner.scale     -fill x   -pady 2 -cspan 2 \
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r17 c1 -resize expand
+}
+
+itcl::body Rappture::VtkHeightmapViewer::BuildAxisTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Axis Settings" \
+        -icon [Rappture::icon axis2]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Axes" \
+        -variable [itcl::scope _settings(-axisvisible)] \
+        -command [itcl::code $this AdjustSetting -axisvisible] \
+        -font "Arial 9"
+    checkbutton $inner.labels \
+        -text "Axis Labels" \
+        -variable [itcl::scope _settings(-axislabels)] \
+        -command [itcl::code $this AdjustSetting -axislabels] \
+        -font "Arial 9"
+    label $inner.grid_l -text "Grid" -font "Arial 9"
+    checkbutton $inner.xgrid \
+        -text "X" \
+        -variable [itcl::scope _settings(-xgrid)] \
+        -command [itcl::code $this AdjustSetting -xgrid] \
+        -font "Arial 9"
+    checkbutton $inner.ygrid \
+        -text "Y" \
+        -variable [itcl::scope _settings(-ygrid)] \
+        -command [itcl::code $this AdjustSetting -ygrid] \
+        -font "Arial 9"
+    checkbutton $inner.zgrid \
+        -text "Z" \
+        -variable [itcl::scope _settings(-zgrid)] \
+        -command [itcl::code $this AdjustSetting -zgrid] \
+        -font "Arial 9"
+    checkbutton $inner.minorticks \
+        -text "Minor Ticks" \
+        -variable [itcl::scope _settings(-axisminorticks)] \
+        -command [itcl::code $this AdjustSetting -axisminorticks] \
+        -font "Arial 9"
+
+    label $inner.mode_l -text "Mode" -font "Arial 9"
+
+    itk_component add axisflymode {
+        Rappture::Combobox $inner.mode -width 10 -editable 0
+    }
+    $inner.mode choices insert end \
+        "static_triad"    "static" \
+        "closest_triad"   "closest" \
+        "furthest_triad"  "farthest" \
+        "outer_edges"     "outer"
+    $itk_component(axisflymode) value $_settings(-axisflymode)
+    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -axisflymode]
+
+    blt::table $inner \
+        0,0 $inner.visible -anchor w -cspan 4 \
+        1,0 $inner.labels  -anchor w -cspan 4 \
+        2,0 $inner.minorticks  -anchor w -cspan 4 \
+        4,0 $inner.grid_l  -anchor w \
+        4,1 $inner.xgrid   -anchor w \
+        4,2 $inner.ygrid   -anchor w \
+        4,3 $inner.zgrid   -anchor w \
+        5,0 $inner.mode_l  -anchor w -padx { 2 0 } \
+        5,1 $inner.mode    -fill x -cspan 3
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c6 -resize expand
+    blt::table configure $inner r3 -height 0.125i
+}
+
+itcl::body Rappture::VtkHeightmapViewer::BuildCameraTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Camera Settings" \
+        -icon [Rappture::icon camera]]
+    $inner configure -borderwidth 4
+
+    label $inner.view_l -text "view" -font "Arial 9"
+    set f [frame $inner.view]
+    foreach side { front back left right top bottom } {
+        button $f.$side  -image [Rappture::icon view$side] \
+            -command [itcl::code $this SetOrientation $side]
+        Rappture::Tooltip::for $f.$side "Change the view to $side"
+        pack $f.$side -side left
+    }
+
+    blt::table $inner \
+        0,0 $inner.view_l -anchor e -pady 2 \
+        0,1 $inner.view -anchor w -pady 2
+    blt::table configure $inner r0 -resize none
+
+    set labels { qx qy qz qw xpan ypan zoom }
+    set row 1
+    foreach tag $labels {
+        label $inner.${tag}label -text $tag -font "Arial 9"
+        entry $inner.${tag} -font "Arial 9"  -bg white \
+            -textvariable [itcl::scope _view(-$tag)]
+        bind $inner.${tag} <Return> \
+            [itcl::code $this camera set -${tag}]
+        bind $inner.${tag} <KP_Enter> \
+            [itcl::code $this camera set -${tag}]
+        blt::table $inner \
+            $row,0 $inner.${tag}label -anchor e -pady 2 \
+            $row,1 $inner.${tag} -anchor w -pady 2
+        blt::table configure $inner r$row -resize none
+        incr row
+    }
+    checkbutton $inner.ortho \
+        -text "Orthographic Projection" \
+        -variable [itcl::scope _view(-ortho)] \
+        -command [itcl::code $this camera set -ortho] \
+        -font "Arial 9"
+    blt::table $inner \
+            $row,0 $inner.ortho -cspan 2 -anchor w -pady 2
+    blt::table configure $inner r$row -resize none
+    incr row
+
+    blt::table configure $inner c* -resize none
+    blt::table configure $inner c2 -resize expand
+    blt::table configure $inner r$row -resize expand
+}
+
+#
+# camera --
+#
+itcl::body Rappture::VtkHeightmapViewer::camera {option args} {
+    switch -- $option {
+        "show" {
+            puts [array get _view]
+        }
+        "set" {
+            set what [lindex $args 0]
+            set x $_view($what)
+            set code [catch { string is double $x } result]
+            if { $code != 0 || !$result } {
+                return
+            }
+            switch -- $what {
+                "-ortho" {
+                    if {$_view($what)} {
+                        SendCmd "camera mode ortho"
+                    } else {
+                        SendCmd "camera mode persp"
+                    }
+                }
+                "-xpan" - "-ypan" {
+                    PanCamera
+                }
+                "-qx" - "-qy" - "-qz" - "-qw" {
+                    set q [ViewToQuaternion]
+                    $_arcball quaternion $q
+                    EventuallyRotate $q
+                }
+                "-zoom" {
+                    SendCmd "camera zoom $_view($what)"
+                }
+            }
+        }
+    }
+}
+
+itcl::body Rappture::VtkHeightmapViewer::GetVtkData { args } {
+    set bytes ""
+    foreach dataobj [get] {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            set contents [$dataobj vtkdata $comp]
+            append bytes "$contents\n"
+        }
+    }
+    return [list .vtk $bytes]
+}
+
+itcl::body Rappture::VtkHeightmapViewer::GetImage { args } {
+    if { [image width $_image(download)] > 0 &&
+         [image height $_image(download)] > 0 } {
+        set bytes [$_image(download) data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        return [list .jpg $bytes]
+    }
+    return ""
+}
+
+itcl::body Rappture::VtkHeightmapViewer::BuildDownloadPopup { popup command } {
+    Rappture::Balloon $popup \
+        -title "[Rappture::filexfer::label downloadWord] as..."
+    set inner [$popup component inner]
+    label $inner.summary -text "" -anchor w
+    radiobutton $inner.vtk_button -text "VTK data file" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value vtk
+    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
+    radiobutton $inner.image_button -text "Image File" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value image
+    Rappture::Tooltip::for $inner.image_button \
+        "Save as digital image."
+
+    button $inner.ok -text "Save" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command $command \
+        -compound left \
+        -image [Rappture::icon download]
+
+    button $inner.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command [list $popup deactivate] \
+        -compound left \
+        -image [Rappture::icon cancel]
+
+    blt::table $inner \
+        0,0 $inner.summary -cspan 2  \
+        1,0 $inner.vtk_button -anchor w -cspan 2 -padx { 4 0 } \
+        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
+        4,1 $inner.cancel -width .9i -fill y \
+        4,0 $inner.ok -padx 2 -width .9i -fill y
+    blt::table configure $inner r3 -height 4
+    blt::table configure $inner r4 -pady 4
+    raise $inner.image_button
+    $inner.vtk_button invoke
+    return $inner
+}
+
+#
+# SetObjectStyle --
+#
+# Set the style of the heightmap/contour object.  This gets calls
+# for each dataset once as it is loaded.  It can overridden by
+# the user controls.
+#
+itcl::body Rappture::VtkHeightmapViewer::SetObjectStyle { dataobj comp } {
+    # Parse style string.
+    set tag $dataobj-$comp
+    array set style {
+        -color BCGYR
+        -levels 10
+        -opacity 1.0
+    }
+    set stylelist [$dataobj style $comp]
+    if { $stylelist != "" } {
+        array set style $stylelist
+    }
+    # This is too complicated.  We want to set the colormap, number of
+    # isolines and opacity for the dataset.  They can be the default values,
+    # the style hints loaded with the dataset, or set by user controls.  As
+    # datasets get loaded, they first use the defaults that are overidden
+    # by the style hints.  If the user changes the global controls, then that
+    # overrides everything else.  I don't know what it means when global
+    # controls are specified as style hints by each dataset.  It complicates
+    # the code to handle aberrant cases.
+
+    if { $_changed(-opacity) } {
+        set style(-opacity) [expr $_settings(-opacity) * 0.01]
+    }
+    if { $_changed(-numisolines) } {
+        set style(-levels) $_settings(-numisolines)
+    }
+    if { $_changed(-colormap) } {
+        set style(-color) $_settings(-colormap)
+    }
+    if { $_currentColormap == "" } {
+        $itk_component(colormap) value $style(-color)
+    }
+    if { [info exists style(-stretchtofit)] } {
+        set _settings(-stretchtofit) $style(-stretchtofit)
+        AdjustSetting -stretchtofit
+    }
+    if { $_currentNumIsolines != $style(-levels) } {
+        set _currentNumIsolines $style(-levels)
+        set _settings(-numisolines) $_currentNumIsolines
+        $itk_component(numisolines) value $_currentNumIsolines
+        UpdateContourList
+        DrawLegend
+    }
+    SendCmd "outline add $tag"
+    SendCmd "outline color [Color2RGB $itk_option(-plotforeground)] $tag"
+    SendCmd "outline visible $_settings(-outline) $tag"
+    set scale [GetHeightmapScale]
+    SendCmd "[list heightmap add contourlist $_contourList $scale $tag]"
+    set _comp2scale($tag) $_settings(-heightmapscale)
+    SendCmd "heightmap edges $_settings(-edges) $tag"
+    SendCmd "heightmap wireframe $_settings(-wireframe) $tag"
+    SetCurrentColormap $style(-color)
+    set color [$itk_component(isolinecolor) value]
+    SendCmd "heightmap isolinecolor [Color2RGB $color] $tag"
+    SendCmd "heightmap lighting $_settings(-isheightmap) $tag"
+    SendCmd "heightmap isolines $_settings(-isolinesvisible) $tag"
+    SendCmd "heightmap surface $_settings(-colormapvisible) $tag"
+    SendCmd "heightmap opacity $style(-opacity) $tag"
+    set _settings(-opacity) [expr $style(-opacity) * 100.0]
+}
+
+itcl::body Rappture::VtkHeightmapViewer::IsValidObject { dataobj } {
+    if {[catch {$dataobj isa Rappture::Field} valid] != 0 || !$valid} {
+        return 0
+    }
+    return 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveLegend <colormap> <title> <min> <max> <size>
+#
+# Invoked automatically whenever the "legend" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::ReceiveLegend { colormap title min max size } {
+    #puts stderr "ReceiveLegend colormap=$colormap title=$title range=$min,$max size=$size"
+    if { [isconnected] } {
+        set bytes [ReceiveBytes $size]
+        if { ![info exists _image(legend)] } {
+            set _image(legend) [image create photo]
+        }
+        $_image(legend) configure -data $bytes
+        #puts stderr "read $size bytes for [image width $_image(legend)]x[image height $_image(legend)] legend>"
+        if { [catch {DrawLegend} errs] != 0 } {
+            global errorInfo
+            puts stderr "errs=$errs errorInfo=$errorInfo"
+        }
+    }
+}
+
+#
+# DrawLegend --
+#
+# Draws the legend in the own canvas on the right side of the plot area.
+#
+itcl::body Rappture::VtkHeightmapViewer::DrawLegend {} {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    set x [expr $w - 2]
+    if { !$_settings(-legendvisible) } {
+        $c delete legend
+        return
+    }
+    if { [$c find withtag "legend"] == "" } {
+        set y 2
+        # If there's a legend title, create a text item for the title.
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "title legend" \
+            -font $font
+        if { $title != "" } {
+            incr y $lineht
+        }
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "vmax legend" \
+            -font $font
+        incr y $lineht
+        $c create image $x $y \
+            -anchor ne \
+            -image $_image(legend) -tags "colormap legend"
+        $c create rectangle $x $y 1 1 \
+            -fill "" -outline "" -tags "sensor legend"
+        $c create text $x [expr {$h-2}] \
+            -anchor se \
+            -fill $itk_option(-plotforeground) -tags "vmin legend" \
+            -font $font
+        $c bind sensor <Enter> [itcl::code $this EnterLegend %x %y]
+        $c bind sensor <Leave> [itcl::code $this LeaveLegend]
+        $c bind sensor <Motion> [itcl::code $this MotionLegend %x %y]
+    }
+    $c delete isoline
+    set x2 $x
+    set iw [image width $_image(legend)]
+    set ih [image height $_image(legend)]
+    set x1 [expr $x2 - ($iw*12)/10]
+    set color [$itk_component(isolinecolor) value]
+
+    # Draw the isolines on the legend.
+    array unset _isolines
+    if { $color != "none"  && [info exists _limits($_curFldName)] &&
+         $_settings(-isolinesvisible) && $_currentNumIsolines > 0 } {
+
+        foreach { vmin vmax } $_limits($_curFldName) break
+        set range [expr double($vmax - $vmin)]
+        if { $range <= 0.0 } {
+            set range 1.0;              # Min is greater or equal to max.
+        }
+        set tags "isoline legend"
+        set offset [expr 2 + $lineht]
+        if { $title != "" } {
+            incr offset $lineht
+        }
+        foreach value $_contourList {
+            set norm [expr 1.0 - (($value - $vmin) / $range)]
+            set y1 [expr int(round(($norm * $ih) + $offset))]
+            for { set off 0 } { $off < 3 } { incr off } {
+                set _isolines([expr $y1 + $off]) $value
+                set _isolines([expr $y1 - $off]) $value
+            }
+            $c create line $x1 $y1 $x2 $y1 -fill $color -tags $tags
+        }
+    }
+
+    $c bind title <ButtonPress> [itcl::code $this Combo post]
+    $c bind title <Enter> [itcl::code $this Combo activate]
+    $c bind title <Leave> [itcl::code $this Combo deactivate]
+    # Reset the item coordinates according the current size of the plot.
+    if { [info exists _limits($_curFldName)] } {
+        foreach { vmin vmax } $_limits($_curFldName) break
+        $c itemconfigure vmin -text [format %g $vmin]
+        $c itemconfigure vmax -text [format %g $vmax]
+    }
+    set y 2
+    # If there's a legend title, move the title to the correct position
+    if { $title != "" } {
+        $c itemconfigure title -text $title
+        $c coords title $x $y
+        incr y $lineht
+    }
+    $c coords vmax $x $y
+    incr y $lineht
+    $c coords colormap $x $y
+    $c coords sensor [expr $x - $iw] $y $x [expr $y + $ih]
+    $c raise sensor
+    $c coords vmin $x [expr {$h - 2}]
+}
+
+#
+# EnterLegend --
+#
+itcl::body Rappture::VtkHeightmapViewer::EnterLegend { x y } {
+    SetLegendTip $x $y
+}
+
+#
+# MotionLegend --
+#
+itcl::body Rappture::VtkHeightmapViewer::MotionLegend { x y } {
+    Rappture::Tooltip::tooltip cancel
+    set c $itk_component(view)
+    set cw [winfo width $c]
+    set ch [winfo height $c]
+    if { $x >= 0 && $x < $cw && $y >= 0 && $y < $ch } {
+        SetLegendTip $x $y
+    }
+}
+
+#
+# LeaveLegend --
+#
+itcl::body Rappture::VtkHeightmapViewer::LeaveLegend { } {
+    Rappture::Tooltip::tooltip cancel
+    .rappturetooltip configure -icon ""
+}
+
+#
+# SetLegendTip --
+#
+itcl::body Rappture::VtkHeightmapViewer::SetLegendTip { x y } {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    set ih [image height $_image(legend)]
+    # Subtract off the offset of the color ramp from the top of the canvas
+    set iy [expr $y - ($lineht + 2)]
+
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    # If there's a legend title, increase the offset by the line height.
+    if { $title != "" } {
+        incr iy -$lineht
+    }
+
+    # Make a swatch of the selected color
+    if { [catch { $_image(legend) get 10 $iy } pixel] != 0 } {
+        return
+    }
+
+    if { ![info exists _image(swatch)] } {
+        set _image(swatch) [image create photo -width 24 -height 24]
+    }
+    set color [eval format "\#%02x%02x%02x" $pixel]
+    $_image(swatch) put black  -to 0 0 23 23
+    $_image(swatch) put $color -to 1 1 22 22
+
+    # Compute the value of the point
+    if { [info exists _limits($fname)] } {
+        foreach { vmin vmax } $_limits($fname) break
+        set t [expr 1.0 - (double($iy) / double($ih-1))]
+        set value [expr $t * ($vmax - $vmin) + $vmin]
+    } else {
+        set value 0.0
+    }
+    set tipx [expr $x + 15]
+    set tipy [expr $y - 5]
+    .rappturetooltip configure -icon $_image(swatch)
+    if { [info exists _isolines($y)] } {
+        Rappture::Tooltip::text $c [format "$title %g (isoline)" $_isolines($y)]
+    } else {
+        Rappture::Tooltip::text $c [format "$title %g" $value]
+    }
+    Rappture::Tooltip::tooltip show $c +$tipx,+$tipy
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _dropdown post
+# USAGE: _dropdown unpost
+# USAGE: _dropdown select
+#
+# Used internally to handle the dropdown list for this combobox.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkHeightmapViewer::Combo {option} {
+    set c $itk_component(view)
+    switch -- $option {
+        post {
+            foreach { x1 y1 x2 y2 } [$c bbox title] break
+            set x1 [expr [winfo width $itk_component(view)] - [winfo reqwidth $itk_component(fieldmenu)]]
+            set x [expr $x1 + [winfo rootx $itk_component(view)]]
+            set y [expr $y2 + [winfo rooty $itk_component(view)]]
+            tk_popup $itk_component(fieldmenu) $x $y
+        }
+        activate {
+            $c itemconfigure title -fill red
+        }
+        deactivate {
+            $c itemconfigure title -fill $itk_option(-plotforeground)
+        }
+        invoke {
+            $itk_component(field) value $_curFldLabel
+            AdjustSetting -field
+        }
+        default {
+            error "bad option \"$option\": should be post, unpost, select"
+        }
+    }
+}
+
+itcl::body Rappture::VtkHeightmapViewer::GetHeightmapScale {} {
+    if {  $_settings(-isheightmap) } {
+        set val $_settings(-heightmapscale)
+        set sval [expr { $val >= 50 ? double($val)/50.0 : 1.0/(2.0-(double($val)/50.0)) }]
+        return $sval
+    }
+    return 0
+}
+
+itcl::body Rappture::VtkHeightmapViewer::SetOrientation { side } {
+    array set positions {
+        front  "0.707107 0.707107 0 0"
+        back   "0 0 0.707107 0.707107"
+        left   "0.5 0.5 -0.5 -0.5"
+        right  "0.5 0.5 0.5 0.5"
+        top    "1 0 0 0"
+        bottom "0 1 0 0"
+    }
+    foreach name { -qw -qx -qy -qz } value $positions($side) {
+        set _view($name) $value
+    }
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    set _view(-xpan) 0
+    set _view(-ypan) 0
+    set _view(-zoom) 1.0
+}
+
+itcl::body Rappture::VtkHeightmapViewer::UpdateContourList {} {
+    if {$_currentNumIsolines == 0} {
+        set _contourList ""
+        return
+    }
+    if { ![info exists _limits($_curFldName)] } {
+        return
+    }
+    foreach { vmin vmax } $_limits($_curFldName) break
+    set v [blt::vector create \#auto]
+    $v seq $vmin $vmax [expr $_currentNumIsolines+2]
+    $v delete end 0
+    set _contourList [$v range 0 end]
+    blt::vector destroy $v
+}
Index: /tags/1.6.0/gui/scripts/vtkimageviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/vtkimageviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/vtkimageviewer.tcl	(revision 6168)
@@ -0,0 +1,2339 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: vtkimageviewer - Vtk image viewer
+#
+#  It connects to the Vtkvis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+#package require Img
+
+option add *VtkImageViewer.width 4i widgetDefault
+option add *VtkImageViewer*cursor crosshair widgetDefault
+option add *VtkImageViewer.height 4i widgetDefault
+option add *VtkImageViewer.foreground black widgetDefault
+option add *VtkImageViewer.controlBackground gray widgetDefault
+option add *VtkImageViewer.controlDarkBackground #999999 widgetDefault
+option add *VtkImageViewer.plotBackground black widgetDefault
+option add *VtkImageViewer.plotForeground white widgetDefault
+option add *VtkImageViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc VtkImageViewer_init_resources {} {
+    Rappture::resources::register \
+        vtkvis_server Rappture::VtkImageViewer::SetServerList
+}
+
+itcl::class Rappture::VtkImageViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+    itk_option define -mode mode Mode "vtkimage"
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "vtkvis" $namelist
+    }
+    public method add {dataobj {settings ""}}
+    public method camera {option args}
+    public method delete {args}
+    public method disconnect {}
+    public method download {option args}
+    public method get {args}
+    public method isconnected {}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method scale {args}
+
+    # The following methods are only used by this class.
+    private method AdjustSetting {what {value ""}}
+    private method BuildAxisTab {}
+    private method BuildCameraTab {}
+    private method BuildColormap { name }
+    private method BuildImageTab {}
+    private method BuildDownloadPopup { widget command }
+    private method Combo { option }
+    private method Connect {}
+    private method CurrentDatasets {args}
+    private method Disconnect {}
+    private method DoResize {}
+    private method DoRotate {}
+    private method DrawLegend {}
+    private method EnterLegend { x y }
+    private method EventuallyRequestLegend {}
+    private method EventuallyResize { w h }
+    private method EventuallyRotate { q }
+    private method GetImage { args }
+    private method GetVtkData { args }
+    private method InitSettings { args }
+    private method IsValidObject { dataobj }
+    private method LeaveLegend {}
+    private method MotionLegend { x y }
+    private method Pan {option x y}
+    private method PanCamera {}
+    private method Pick {x y}
+    private method QuaternionToView { q } {
+        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
+    }
+    private method Rebuild {}
+    private method ReceiveDataset { args }
+    private method ReceiveImage { args }
+    private method ReceiveLegend { colormap title min max size }
+    private method RequestLegend {}
+    private method Rotate {option x y}
+    private method SetCurrentColormap { color }
+    private method SetLegendTip { x y }
+    private method SetObjectStyle { dataobj comp }
+    private method SetOrientation { side }
+    private method ViewToQuaternion {} {
+        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
+    }
+    private method Zoom {option}
+
+    private variable _arcball ""
+    private variable _dlist ""     ;    # list of data objects
+    private variable _obj2ovride   ;    # maps dataobj => style override
+    private variable _datasets     ;    # contains all the dataobj-component
+                                   ;    # datasets in the server
+    private variable _colormaps    ;    # contains all the colormaps
+                                   ;    # in the server.
+
+    # The name of the current colormap used.  The colormap is global to all
+    # images displayed.
+    private variable _currentColormap ""
+    private variable _currentNumIsolines -1
+
+    private variable _maxScale 100;     # This is the # of times the x-axis
+                                        # and y-axis ranges can differ before
+                                        # automatically turning on
+                                        # -stretchtofit
+
+    private variable _click        ;    # info used for rotate operations
+    private variable _limits       ;    # Holds overall limits for all dataobjs
+                                        # using the viewer.
+    private variable _view         ;    # view params for 3D view
+    private variable _settings
+    private variable _changed
+    private variable _reset 1;          # Connection to server has been reset.
+
+    private variable _first ""     ;    # This is the topmost dataset.
+    private variable _start 0
+    private variable _isolines
+    private variable _contourList ""
+    private variable _width 0
+    private variable _height 0
+    private variable _legendWidth 0
+    private variable _legendHeight 0
+    private variable _resizePending 0
+    private variable _legendPending 0
+    private variable _rotatePending 0
+    private variable _fields
+    private variable _curFldName ""
+    private variable _curFldLabel ""
+    private variable _colorMode "scalar";#  Mode of colormap (vmag or scalar)
+
+    private common _downloadPopup;      # download options from popup
+    private common _hardcopy
+}
+
+itk::usual VtkImageViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground -mode
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::constructor {args} {
+    set _serverType "vtkvis"
+
+    #DebugOn
+    EnableWaitDialog 900
+
+    # Rebuild event
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Legend event
+    $_dispatcher register !legend
+    $_dispatcher dispatch $this !legend "[itcl::code $this RequestLegend]; list"
+
+    # Rotate event
+    $_dispatcher register !rotate
+    $_dispatcher dispatch $this !rotate "[itcl::code $this DoRotate]; list"
+
+    #
+    # Populate parser with commands handle incoming requests
+    #
+    $_parser alias image [itcl::code $this ReceiveImage]
+    $_parser alias dataset [itcl::code $this ReceiveDataset]
+    $_parser alias legend [itcl::code $this ReceiveLegend]
+
+    # Create image for legend colorbar.
+    set _image(legend) [image create photo]
+
+    # Initialize the view to some default parameters.
+    array set _view {
+        -ortho    0
+        -qw       0.36
+        -qx       0.25
+        -qy       0.50
+        -qz       0.70
+        -xpan     0
+        -ypan     0
+        -zoom     1.0
+    }
+    set _arcball [blt::arcball create 100 100]
+    $_arcball quaternion [ViewToQuaternion]
+
+    array set _settings {
+        -axisflymode            "static"
+        -axislabels             1
+        -axisminorticks         1
+        -axisvisible            1
+        -backingcolor           white
+        -backingvisible         1
+        -colormapdiscrete       0
+        -field                  "Default"
+        -legendvisible          0
+        -level                  127.5
+        -numcolors              256
+        -opacity                100
+        -outline                0
+        -saveopacity            100
+        -stretchtofit           0
+        -view3d                 0
+        -window                 255.0
+        -xgrid                  0
+        -ygrid                  0
+        -zgrid                  0
+    }
+    array set _changed {
+        -colormap               0
+        -opacity                0
+    }
+    itk_component add view {
+        canvas $itk_component(plotarea).view \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth -background
+    }
+
+    itk_component add fieldmenu {
+        menu $itk_component(plotarea).menu \
+            -relief flat \
+            -tearoff 0
+    } {
+        usual
+        ignore -background -foreground -relief -tearoff
+    }
+    set c $itk_component(view)
+    bind $c <Configure> [itcl::code $this EventuallyResize %w %h]
+    bind $c <4> [itcl::code $this Zoom in 0.25]
+    bind $c <5> [itcl::code $this Zoom out 0.25]
+    bind $c <KeyPress-Left>  [list %W xview scroll 10 units]
+    bind $c <KeyPress-Right> [list %W xview scroll -10 units]
+    bind $c <KeyPress-Up>    [list %W yview scroll 10 units]
+    bind $c <KeyPress-Down>  [list %W yview scroll -10 units]
+    bind $c <Enter> "focus %W"
+    bind $c <Control-F1> [itcl::code $this ToggleConsole]
+
+    # Fix the scrollregion in case we go off screen
+    $c configure -scrollregion [$c bbox all]
+
+    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
+    set _map(cwidth) -1
+    set _map(cheight) -1
+    set _map(zoom) 1.0
+    set _map(original) ""
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -side top -padx 2 -pady { 2 0 }
+    Rappture::Tooltip::for $itk_component(reset) "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -side top -padx 2 -pady { 2 0 }
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -side top -padx 2 -pady { 2 0 }
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    itk_component add mode {
+        Rappture::PushButton $f.mode \
+            -onimage [Rappture::icon surface] \
+            -offimage [Rappture::icon surface] \
+            -variable [itcl::scope _settings(-view3d)] \
+            -command [itcl::code $this AdjustSetting -view3d] \
+    }
+    Rappture::Tooltip::for $itk_component(mode) \
+        "Toggle the surface/contour on/off"
+    pack $itk_component(mode) -padx 2 -pady { 2 0 }
+
+    itk_component add stretchtofit {
+        Rappture::PushButton $f.stretchtofit \
+            -onimage [Rappture::icon stretchtofit] \
+            -offimage [Rappture::icon stretchtofit] \
+            -variable [itcl::scope _settings(-stretchtofit)] \
+            -command [itcl::code $this AdjustSetting -stretchtofit] \
+    }
+    Rappture::Tooltip::for $itk_component(stretchtofit) \
+        "Stretch plot to fit window on/off"
+    pack $itk_component(stretchtofit) -padx 2 -pady 2
+
+    if { [catch {
+        BuildImageTab
+        BuildAxisTab
+        BuildCameraTab
+    } errs] != 0 } {
+        global errorInfo
+        puts stderr "errs=$errs errorInfo=$errorInfo"
+    }
+
+    # Hack around the Tk panewindow.  The problem is that the requested
+    # size of the 3d view isn't set until an image is retrieved from
+    # the server.  So the panewindow uses the tiny size.
+    set w 10000
+    pack forget $itk_component(view)
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth $w
+    blt::table configure $itk_component(plotarea) c1 -resize none
+
+    # Bindings for panning via mouse
+    bind $itk_component(view) <ButtonPress-2> \
+        [itcl::code $this Pan click %x %y]
+    bind $itk_component(view) <B2-Motion> \
+        [itcl::code $this Pan drag %x %y]
+    bind $itk_component(view) <ButtonRelease-2> \
+        [itcl::code $this Pan release %x %y]
+
+    #bind $itk_component(view) <ButtonRelease-3> \
+    #    [itcl::code $this Pick %x %y]
+
+    # Bindings for panning via keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -2 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 2 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -2]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 2]
+
+    # Bindings for zoom via keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        # Bindings for zoom via mouse
+        bind $itk_component(view) <4> [itcl::code $this Zoom out]
+        bind $itk_component(view) <5> [itcl::code $this Zoom in]
+    }
+
+    set _image(download) [image create photo]
+
+    eval itk_initialize $args
+
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::destructor {} {
+    Disconnect
+    image delete $_image(plot)
+    image delete $_image(download)
+    catch { blt::arcball destroy $_arcball }
+}
+
+itcl::body Rappture::VtkImageViewer::DoResize {} {
+    if { $_width < 2 } {
+        set _width 500
+    }
+    if { $_height < 2 } {
+        set _height 500
+    }
+    set _start [clock clicks -milliseconds]
+    SendCmd "screen size [expr $_width - 20] $_height"
+
+    set font "Arial 8"
+    set lh [font metrics $font -linespace]
+    set h [expr {$_height - 2 * ($lh + 2)}]
+    if { $h != $_legendHeight } {
+        EventuallyRequestLegend
+    } else {
+        DrawLegend
+    }
+    set _resizePending 0
+}
+
+itcl::body Rappture::VtkImageViewer::DoRotate {} {
+    SendCmd "camera orient [ViewToQuaternion]"
+    set _rotatePending 0
+}
+
+itcl::body Rappture::VtkImageViewer::EventuallyRequestLegend {} {
+    if { !$_legendPending } {
+        set _legendPending 1
+        $_dispatcher event -idle !legend
+    }
+}
+
+itcl::body Rappture::VtkImageViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    $_arcball resize $w $h
+    if { !$_resizePending } {
+        set _resizePending 1
+        $_dispatcher event -after 250 !resize
+    }
+}
+
+set rotate_delay 100
+
+itcl::body Rappture::VtkImageViewer::EventuallyRotate { q } {
+    QuaternionToView $q
+    if { !$_rotatePending } {
+        set _rotatePending 1
+        global rotate_delay
+        $_dispatcher event -after $rotate_delay !rotate
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::add {dataobj {settings ""}} {
+    if { ![$dataobj isvalid] } {
+        return;                         # Object doesn't contain valid data.
+    }
+    array set params {
+        -color auto
+        -width 1
+        -linestyle solid
+        -brightness 0
+        -raise 0
+        -description ""
+        -param ""
+        -type ""
+    }
+    array set params $settings
+    set params(-description) ""
+    set params(-param) ""
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) white
+    }
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+    }
+    set _obj2ovride($dataobj-color) $params(-color)
+    set _obj2ovride($dataobj-width) $params(-width)
+    set _obj2ovride($dataobj-raise) $params(-raise)
+    $_dispatcher event -idle !rebuild
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.  No data objects are
+# deleted.  They are only removed from the display list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::delete {args} {
+    if { [llength $args] == 0} {
+        set args $_dlist
+    }
+    # Delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if { $pos < 0 } {
+            continue;                   # Don't know anything about it.
+        }
+        # Remove it from the dataobj list.
+        set _dlist [lreplace $_dlist $pos $pos]
+        array unset _obj2ovride $dataobj-*
+        array unset _settings $dataobj-*
+        set changed 1
+    }
+    # If anything changed, then rebuild the plot
+    if { $changed } {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-objects?
+# USAGE: get ?-visible?
+# USAGE: get ?-image view?
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.  The optional "-image"
+# flag can also request the internal images being shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::get {args} {
+    if {[llength $args] == 0} {
+        set args "-objects"
+    }
+    set op [lindex $args 0]
+    switch -- $op {
+        "-objects" {
+            # put the dataobj list in order according to -raise options
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if {[info exists _obj2ovride($dataobj-raise)] &&
+                    $_obj2ovride($dataobj-raise)} {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        "-visible" {
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if { ![info exists _obj2ovride($dataobj-raise)] } {
+                    # No setting indicates that the object isn't visible.
+                    continue
+                }
+                # Otherwise use the -raise parameter to put the object to
+                # the front of the list.
+                if { $_obj2ovride($dataobj-raise) } {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        -image {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"get -image view\""
+            }
+            switch -- [lindex $args end] {
+                view {
+                    return $_image(plot)
+                }
+                default {
+                    error "bad image name \"[lindex $args end]\": should be view"
+                }
+            }
+        }
+        default {
+            error "bad option \"$op\": should be -objects or -image"
+        }
+    }
+}
+
+#
+# scale  --
+#
+# This gets called either incrementally as new simulations are
+# added or all at once as a sequence of images.
+# This  accounts for all objects--even those not showing on the
+# screen.  Because of this, the limits are appropriate for all
+# objects as the user scans through data in the ResultSet viewer.
+#
+itcl::body Rappture::VtkImageViewer::scale {args} {
+    foreach dataobj $args {
+        if { ![$dataobj isvalid] } {
+            continue;                   # Object doesn't contain valid data.
+        }
+        foreach axis { x y } {
+            set lim [$dataobj limits $axis]
+            if { ![info exists _limits($axis)] } {
+                set _limits($axis) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {amin amax} $_limits($axis) break
+            if { $amin > $min } {
+                set amin $min
+            }
+            if { $amax < $max } {
+                set amax $max
+            }
+            set _limits($axis) [list $amin $amax]
+            set units [$dataobj hints ${axis}units]
+            set found($units) 1
+        }
+        foreach { fname lim } [$dataobj fieldlimits] {
+            if { ![info exists _limits($fname)] } {
+                set _limits($fname) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {fmin fmax} $_limits($fname) break
+            if { $fmin > $min } {
+                set fmin $min
+            }
+            if { $fmax < $max } {
+                set fmax $max
+            }
+            set _limits($fname) [list $fmin $fmax]
+        }
+    }
+    if { [array size found] > 1 } {
+        set _settings(-stretchtofit) 1
+    } else {
+        # Check if the range of the x and y axes requires that we stretch
+        # the contour to fit the plotting area.  This can happen when the
+        # x and y scales differ greatly (> 100x)
+        foreach {xmin xmax} $_limits(x) break
+        foreach {ymin ymax} $_limits(y) break
+        if { (($xmax - $xmin) > (($ymax -$ymin) * $_maxScale)) ||
+             ((($xmax - $xmin) * $_maxScale) < ($ymax -$ymin)) } {
+            set _settings(-stretchtofit) 1
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::download {option args} {
+    switch $option {
+        coming {
+            if {[catch {
+                blt::winop snap $itk_component(plotarea) $_image(download)
+            }]} {
+                $_image(download) configure -width 1 -height 1
+                $_image(download) put #000000
+            }
+        }
+        controls {
+            set popup .vtkviewerdownload
+            if { ![winfo exists .vtkviewerdownload] } {
+                set inner [BuildDownloadPopup $popup [lindex $args 0]]
+            } else {
+                set inner [$popup component inner]
+            }
+            set _downloadPopup(image_controls) $inner.image_frame
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks            ;# Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .vtkviewerdownload
+            if {[winfo exists .vtkviewerdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "image" {
+                    return [$this GetImage [lindex $args 0]]
+                }
+                "vtk" {
+                    return [$this GetVtkData [lindex $args 0]]
+                }
+            }
+            return ""
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Connect ?<host:port>,<host:port>...?
+#
+# Clients use this method to establish a connection to a new
+# server, or to reestablish a connection to the previous server.
+# Any existing connection is automatically closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::Connect {} {
+    global readyForNextFrame
+    set readyForNextFrame 1
+    set _hosts [GetServerList "vtkvis"]
+    if { "" == $_hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $_hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "vtkimageviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        EventuallyResize $w $h
+    }
+    return $result
+}
+
+#
+# isconnected --
+#
+# Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::VtkImageViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# disconnect --
+#
+itcl::body Rappture::VtkImageViewer::disconnect {} {
+    Disconnect
+    set _reset 1
+}
+
+#
+# Disconnect --
+#
+# Clients use this method to disconnect from the current rendering server.
+#
+itcl::body Rappture::VtkImageViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    $_dispatcher cancel !rebuild
+    $_dispatcher cancel !resize
+    $_dispatcher cancel !rotate
+    $_dispatcher cancel !legend
+    # disconnected -- no more data sitting on server
+    array unset _datasets
+    array unset _colormaps
+    global readyForNextFrame
+    set readyForNextFrame 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveImage -bytes <size> -type <type> -token <token>
+#
+# Invoked automatically whenever the "image" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::ReceiveImage { args } {
+    global readyForNextFrame
+    set readyForNextFrame 1
+    array set info {
+        -token "???"
+        -bytes 0
+        -type image
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    if { $info(-type) == "image" } {
+        if 0 {
+            set f [open "last.ppm" "w"]
+            fconfigure $f -encoding binary
+            puts -nonewline $f $bytes
+            close $f
+        }
+        $_image(plot) configure -data $bytes
+        set time [clock seconds]
+        set date [clock format $time]
+        #puts stderr "$date: received image [image width $_image(plot)]x[image height $_image(plot)] image>"
+        if { $_start > 0 } {
+            set finish [clock clicks -milliseconds]
+            #puts stderr "round trip time [expr $finish -$_start] milliseconds"
+            set _start 0
+        }
+    } elseif { $info(type) == "print" } {
+        set tag $this-print-$info(-token)
+        set _hardcopy($tag) $bytes
+    }
+}
+
+#
+# ReceiveDataset --
+#
+itcl::body Rappture::VtkImageViewer::ReceiveDataset { args } {
+    if { ![isconnected] } {
+        return
+    }
+    set option [lindex $args 0]
+    switch -- $option {
+        "scalar" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z value tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y value tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "vector" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z vx vy vz tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y vx vy vz tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "names" {
+            foreach { name } [lindex $args 1] {
+                #puts stderr "Dataset: $name"
+            }
+        }
+        default {
+            error "unknown dataset option \"$option\" from server"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::Rebuild {} {
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $w < 2 || $h < 2 } {
+        update
+        $_dispatcher event -idle !rebuild
+        return
+    }
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (which automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+
+    if { $_width != $w || $_height != $h || $_reset } {
+        set _width $w
+        set _height $h
+        $_arcball resize $w $h
+        DoResize
+        if { $_settings(-stretchtofit) } {
+            AdjustSetting -stretchToFit
+        }
+    }
+    if { $_reset } {
+        #
+        # Reset the camera and other view parameters
+        #
+        InitSettings -view3d -background
+
+        SendCmd "axis lrot z 90"
+        $_arcball quaternion [ViewToQuaternion]
+        if {$_settings(-view3d) } {
+            if { $_view(-ortho)} {
+                SendCmd "camera mode ortho"
+            } else {
+                SendCmd "camera mode persp"
+            }
+            DoRotate
+            SendCmd "camera reset"
+        }
+        PanCamera
+        StopBufferingCommands
+        SendCmd "imgflush"
+        StartBufferingCommands
+    }
+
+    set _first ""
+    # Start off with no datasets are visible.
+    SendCmd "dataset visible 0"
+    foreach dataobj [get -objects] {
+        if { [info exists _obj2ovride($dataobj-raise)] &&  $_first == "" } {
+            set _first $dataobj
+        }
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { ![info exists _datasets($tag)] } {
+                set bytes [$dataobj vtkdata $comp]
+                if 0 {
+                    set f [open /tmp/vtkimage.vtk "w"]
+                    fconfigure $f -translation binary -encoding binary
+                    puts -nonewline $f $bytes
+                    close $f
+                }
+                set length [string length $bytes]
+                if { $_reportClientInfo }  {
+                    set info {}
+                    lappend info "tool_id"       [$dataobj hints toolid]
+                    lappend info "tool_name"     [$dataobj hints toolname]
+                    lappend info "tool_title"    [$dataobj hints tooltitle]
+                    lappend info "tool_command"  [$dataobj hints toolcommand]
+                    lappend info "tool_revision" [$dataobj hints toolrevision]
+                    lappend info "dataset_label" [$dataobj hints label]
+                    lappend info "dataset_size"  $length
+                    lappend info "dataset_tag"   $tag
+                    SendCmd "clientinfo [list $info]"
+                }
+                SendCmd "dataset add $tag data follows $length"
+                SendData $bytes
+                set _datasets($tag) 1
+                SetObjectStyle $dataobj $comp
+            }
+            if { [info exists _obj2ovride($dataobj-raise)] } {
+                # Setting dataset visible enables outline
+                # and image
+                SendCmd "dataset visible 1 $tag"
+            }
+        }
+    }
+    if { $_first != ""  } {
+        $itk_component(field) choices delete 0 end
+        $itk_component(fieldmenu) delete 0 end
+        array unset _fields
+        set _curFldName ""
+        foreach cname [$_first components] {
+            foreach fname [$_first fieldnames $cname] {
+                if { [info exists _fields($fname)] } {
+                    continue
+                }
+                foreach { label units components } \
+                    [$_first fieldinfo $fname] break
+                $itk_component(field) choices insert end "$fname" "$label"
+                $itk_component(fieldmenu) add radiobutton -label "$label" \
+                    -value $label -variable [itcl::scope _curFldLabel] \
+                    -selectcolor red \
+                    -activebackground $itk_option(-plotbackground) \
+                    -activeforeground $itk_option(-plotforeground) \
+                    -font "Arial 8" \
+                    -command [itcl::code $this Combo invoke]
+                set _fields($fname) [list $label $units $components]
+                if { $_curFldName == "" } {
+                    set _curFldName $fname
+                    set _curFldLabel $label
+                }
+            }
+        }
+        $itk_component(field) value $_curFldLabel
+    }
+    InitSettings -stretchtofit -outline
+
+    if { $_reset } {
+        SendCmd "axis tickpos outside"
+        #SendCmd "axis lformat all %g"
+
+        foreach axis { x y z } {
+            set label ""
+            if { $_first != "" } {
+                set label [$_first hints ${axis}label]
+            }
+            if { $label == "" } {
+                set label [string toupper $axis]
+            }
+            # May be a space in the axis label.
+            SendCmd [list axis name $axis $label]
+
+            set units ""
+            if { $_first != "" } {
+                if {$axis == "z" && [$_first hints ${axis}units] == ""} {
+                    if {$_curFldName != ""} {
+                        set units [lindex $_fields($_curFldName) 1]
+                    }
+                } else {
+                    set units [$_first hints ${axis}units]
+                }
+            }
+            if { $units != "" } {
+                # May be a space in the axis units.
+                SendCmd [list axis units $axis $units]
+            }
+        }
+        #
+        # Reset the camera and other view parameters
+        #
+        $_arcball quaternion [ViewToQuaternion]
+        if {$_settings(-view3d) } {
+            if { $_view(-ortho)} {
+                SendCmd "camera mode ortho"
+            } else {
+                SendCmd "camera mode persp"
+            }
+            DoRotate
+            SendCmd "camera reset"
+        }
+        PanCamera
+        InitSettings -xgrid -ygrid -zgrid \
+            -axisvisible -axislabels -field -view3d
+        if { [array size _fields] < 2 } {
+            catch {blt::table forget $itk_component(field) $itk_component(field_l)}
+        }
+        RequestLegend
+        set _reset 0
+    }
+    global readyForNextFrame
+    set readyForNextFrame 0;                # Don't advance to the next frame
+
+    # Actually write the commands to the server socket.  If it fails, we don't
+    # care.  We're finished here.
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands
+    blt::busy release $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CurrentDatasets ?-all -visible? ?dataobjs?
+#
+# Returns a list of server IDs for the current datasets being displayed.  This
+# is normally a single ID, but it might be a list of IDs if the current data
+# object has multiple components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::CurrentDatasets {args} {
+    set flag [lindex $args 0]
+    switch -- $flag {
+        "-all" {
+            if { [llength $args] > 1 } {
+                error "CurrentDatasets: can't specify dataobj after \"-all\""
+            }
+            set dlist [get -objects]
+        }
+        "-visible" {
+            if { [llength $args] > 1 } {
+                set dlist {}
+                set args [lrange $args 1 end]
+                foreach dataobj $args {
+                    if { [info exists _obj2ovride($dataobj-raise)] } {
+                        lappend dlist $dataobj
+                    }
+                }
+            } else {
+                set dlist [get -visible]
+            }
+        }
+        default {
+            set dlist $args
+        }
+    }
+    set rlist ""
+    foreach dataobj $dlist {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { [info exists _datasets($tag)] && $_datasets($tag) } {
+                lappend rlist $tag
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::Zoom {option} {
+    switch -- $option {
+        "in" {
+            set _view(-zoom) [expr {$_view(-zoom)*1.25}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "out" {
+            set _view(-zoom) [expr {$_view(-zoom)*0.8}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "reset" {
+            array set _view {
+                -qw      0.36
+                -qx      0.25
+                -qy      0.50
+                -qz      0.70
+                -xpan    0
+                -ypan    0
+                -zoom    1.0
+            }
+            if { $_first != "" } {
+                set location [$_first hints camera]
+                if { $location != "" } {
+                    array set _view $location
+                }
+            }
+            $_arcball quaternion [ViewToQuaternion]
+            if {$_settings(-view3d) } {
+                DoRotate
+            }
+            SendCmd "camera reset"
+        }
+    }
+}
+
+itcl::body Rappture::VtkImageViewer::PanCamera {} {
+    set x $_view(-xpan)
+    set y $_view(-ypan)
+    SendCmd "camera pan $x $y"
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::Rotate {option x y} {
+    switch -- $option {
+        "click" {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "drag" {
+            if {[array size _click] == 0} {
+                Rotate click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+                if { $dx == 0 && $dy == 0 } {
+                    return
+                }
+                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
+                EventuallyRotate $q
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        "release" {
+            Rotate drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
+
+itcl::body Rappture::VtkImageViewer::Pick {x y} {
+    foreach tag [CurrentDatasets -visible] {
+        SendCmd "dataset getscalar pixel $x $y $tag"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::Pan {option x y} {
+    switch -- $option {
+        "set" {
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set x [expr $x / double($w)]
+            set y [expr $y / double($h)]
+            set _view(-xpan) [expr $_view(-xpan) + $x]
+            set _view(-ypan) [expr $_view(-ypan) + $y]
+            PanCamera
+            return
+        }
+        "click" {
+            set _click(x) $x
+            set _click(y) $y
+            $itk_component(view) configure -cursor hand1
+        }
+        "drag" {
+            if { ![info exists _click(x)] } {
+                set _click(x) $x
+            }
+            if { ![info exists _click(y)] } {
+                set _click(y) $y
+            }
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set dx [expr ($_click(x) - $x)/double($w)]
+            set dy [expr ($_click(y) - $y)/double($h)]
+            set _click(x) $x
+            set _click(y) $y
+            set _view(-xpan) [expr $_view(-xpan) - $dx]
+            set _view(-ypan) [expr $_view(-ypan) - $dy]
+            PanCamera
+        }
+        "release" {
+            Pan drag $x $y
+            $itk_component(view) configure -cursor ""
+        }
+        default {
+            error "unknown option \"$option\": should set, click, drag, or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitSettings <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::InitSettings { args } {
+    foreach spec $args {
+        if { [info exists _settings($_first${spec})] } {
+            # Reset global setting with dataobj specific setting
+            set _settings($spec) $_settings($_first${spec})
+        }
+        AdjustSetting $spec
+    }
+}
+
+#
+# AdjustSetting --
+#
+# Changes/updates a specific setting in the widget.  There are
+# usually user-setable option.  Commands are sent to the render
+# server.
+#
+itcl::body Rappture::VtkImageViewer::AdjustSetting {what {value ""}} {
+    if { ![isconnected] } {
+        return
+    }
+    switch -- $what {
+        "-axisflymode" {
+            set mode [$itk_component(axisflymode) value]
+            set mode [$itk_component(axisflymode) translate $mode]
+            set _settings($what) $mode
+            SendCmd "axis flymode $mode"
+        }
+        "-axislabels" {
+            set bool $_settings($what)
+            SendCmd "axis labels all $bool"
+        }
+        "-axisminorticks" {
+            set bool $_settings($what)
+            SendCmd "axis minticks all $bool"
+        }
+        "-axisvisible" {
+            set bool $_settings($what)
+            SendCmd "axis visible all $bool"
+        }
+        "-background" {
+            set bg [$itk_component(background) value]
+            array set fgcolors {
+                "black" "white"
+                "white" "black"
+                "grey"  "black"
+            }
+            set fg $fgcolors($bg)
+            configure -plotbackground $bg -plotforeground $fg
+            $itk_component(view) delete "legend"
+            SendCmd "screen bgcolor [Color2RGB $bg]"
+            SendCmd "outline color [Color2RGB $fg]"
+            SendCmd "axis color all [Color2RGB $fg]"
+            DrawLegend
+        }
+        "-backingcolor" {
+            set color [$itk_component(backingcolor) value]
+            if { $color == "none" } {
+                if { $_settings(-backingvisible) } {
+                    SendCmd "image backing 0"
+                    set _settings(-backingvisible) 0
+                }
+            } else {
+                if { !$_settings(-backingvisible) } {
+                    SendCmd "image backing 1"
+                    set _settings(-backingvisible) 1
+                }
+                SendCmd "image color [Color2RGB $color]"
+            }
+        }
+        "-backingvisible" {
+            set bool $_settings($what)
+            SendCmd "image backing $bool"
+        }
+        "-colormap" {
+            set _changed($what) 1
+            StartBufferingCommands
+            set color [$itk_component(colormap) value]
+            set _settings($what) $color
+            SetCurrentColormap $color
+            if {$_settings(-colormapdiscrete)} {
+                 SendCmd "colormap res $_settings(-numcolors) $color"
+            }
+            StopBufferingCommands
+            EventuallyRequestLegend
+        }
+        "-colormapdiscrete" {
+            set bool $_settings($what)
+            StartBufferingCommands
+            if {$bool} {
+                SendCmd "colormap res $_settings(-numcolors)"
+            } else {
+                SendCmd "colormap res default"
+            }
+            StopBufferingCommands
+            EventuallyRequestLegend
+        }
+        "-field" {
+            set label [$itk_component(field) value]
+            set fname [$itk_component(field) translate $label]
+            set _settings($what) $fname
+            if { [info exists _fields($fname)] } {
+                foreach { label units components } $_fields($fname) break
+                if { $components > 1 } {
+                    set _colorMode vmag
+                } else {
+                    set _colorMode scalar
+                }
+                set _curFldName $fname
+                set _curFldLabel $label
+            } else {
+                puts stderr "unknown field \"$fname\""
+                return
+            }
+
+            # Get the new limits because the field changed.
+            SendCmd "dataset scalar $_curFldName"
+            #SendCmd "image colormode scalar $_curFldName"
+            SendCmd "camera reset"
+            DrawLegend
+        }
+        "-view3d" {
+            set bool $_settings($what)
+            set c $itk_component(view)
+            StartBufferingCommands
+            # Fix image scale: 0 for contours, 1 for images.
+            if { $bool } {
+                set _settings(-opacity) $_settings(-saveopacity)
+            } else {
+                set _settings(-opacity) 100
+            }
+            AdjustSetting -opacity
+            if { $bool } {
+                $itk_component(opacity) configure -state normal
+                $itk_component(opacity_l) configure -state normal
+                if {$_view(-ortho)} {
+                    SendCmd "camera mode ortho"
+                } else {
+                    SendCmd "camera mode persp"
+                }
+                SendCmd "camera aspect native"
+            } else {
+                $itk_component(opacity) configure -state disabled
+                $itk_component(opacity_l) configure -state disabled
+                SendCmd "camera mode image"
+                if {$_settings(-stretchtofit)} {
+                    SendCmd "camera aspect window"
+                }
+            }
+            if { $bool } {
+                set q [ViewToQuaternion]
+                $_arcball quaternion $q
+                SendCmd "camera orient $q"
+            } else {
+                bind $c <ButtonPress-1> {}
+                bind $c <B1-Motion> {}
+                bind $c <ButtonRelease-1> {}
+            }
+            SendCmd "camera reset"
+            # Fix the mouse bindings for rotation/panning and the
+            # camera mode. Ideally we'd create a bindtag for these.
+            if { $bool } {
+                # Bindings for rotation via mouse
+                bind $c <ButtonPress-1> \
+                    [itcl::code $this Rotate click %x %y]
+                bind $c <B1-Motion> \
+                    [itcl::code $this Rotate drag %x %y]
+                bind $c <ButtonRelease-1> \
+                    [itcl::code $this Rotate release %x %y]
+            }
+            StopBufferingCommands
+        }
+        "-window" {
+            set val $_settings($what)
+            SendCmd "image window $val"
+        }
+        "-level" {
+            set val $_settings($what)
+            SendCmd "image level $val"
+        }
+        "-legendvisible" {
+            if { !$_settings($what) } {
+                $itk_component(view) delete legend
+            }
+            DrawLegend
+        }
+        "-opacity" {
+            set _changed($what) 1
+            if { $_settings(-view3d) } {
+                set _settings(-saveopacity) $_settings($what)
+                set val [expr $_settings($what) * 0.01]
+                SendCmd "image opacity $val"
+            } else {
+                SendCmd "image opacity 1.0"
+            }
+        }
+        "-outline" {
+            set bool $_settings($what)
+            SendCmd "outline visible $bool"
+        }
+        "-stretchtofit" {
+            set bool $_settings($what)
+            if { $bool } {
+                if { $_settings(-view3d) } {
+                    SendCmd "camera aspect native"
+                } else {
+                    SendCmd "camera aspect window"
+                }
+            } else {
+                SendCmd "camera aspect native"
+            }
+        }
+        "-xgrid" - "-ygrid" - "-zgrid" {
+            set axis [string tolower [string range $what 1 1]]
+            set bool $_settings($what)
+            SendCmd "axis grid $axis $bool"
+        }
+        default {
+            error "don't know how to fix $what"
+        }
+    }
+}
+
+#
+# RequestLegend --
+#
+# Request a new legend from the server.  The size of the legend
+# is determined from the height of the canvas.
+#
+# This should be called when
+#   1.  A new current colormap is set.
+#   2.  Window is resized.
+#   3.  The limits of the data have changed.  (Just need a redraw).
+#   4.  Number of isolines have changed. (Just need a redraw).
+#   5.  Legend becomes visible (Just need a redraw).
+#
+itcl::body Rappture::VtkImageViewer::RequestLegend {} {
+    set _legendPending 0
+    set font "Arial 8"
+    set w 12
+    set lineht [font metrics $font -linespace]
+    # color ramp height = (canvas height) - (min and max value lines) - 2
+    set h [expr {$_height - 2 * ($lineht + 2)}]
+    set _legendHeight $h
+
+    set fname $_curFldName
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    # If there's a title too, subtract one more line
+    if { $title != "" } {
+        incr h -$lineht
+    }
+    if { $h < 1 } {
+        return
+    }
+    # Set the legend on the first dataset.
+    if { $_currentColormap != "" && $_currentColormap != "none" } {
+        set cmap $_currentColormap
+        if { ![info exists _colormaps($cmap)] } {
+            BuildColormap $cmap
+            set _colormaps($cmap) 1
+        }
+        #SendCmd "legend $cmap scalar $_curFldName {} $w $h 0"
+        SendCmd "legend2 $cmap $w $h"
+    }
+}
+
+#
+# SetCurrentColormap --
+#
+itcl::body Rappture::VtkImageViewer::SetCurrentColormap { name } {
+    # Keep track of the colormaps that we build.
+    if { $name != "none" && ![info exists _colormaps($name)] } {
+        BuildColormap $name
+        set _colormaps($name) 1
+    }
+    set _currentColormap $name
+    SendCmd "image colormap $_currentColormap"
+}
+
+
+#
+# BuildColormap --
+#
+# Build the designated colormap on the server.
+#
+itcl::body Rappture::VtkImageViewer::BuildColormap { name } {
+    set cmap [ColorsToColormap $name]
+    if { [llength $cmap] == 0 } {
+        set cmap "0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0"
+    }
+    set amap "0.0 1.0 1.0 1.0"
+    SendCmd "colormap add $name { $cmap } { $amap }"
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -mode
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkImageViewer::mode {
+    switch -- $itk_option(-mode) {
+        "volume" {
+            set _settings(-view3d) 1
+        }
+        "vtkimage" {
+            set _settings(-view3d) 0
+        }
+        default {
+            error "unknown mode settings \"$itk_option(-mode)\""
+        }
+    }
+    if { !$_reset } {
+        AdjustSetting -view3d
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkImageViewer::plotbackground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotbackground)]
+        if { !$_reset } {
+            SendCmd "screen bgcolor $rgb"
+        }
+        $itk_component(view) configure -background $itk_option(-plotbackground)
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkImageViewer::plotforeground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotforeground)]
+        if { !$_reset } {
+            SendCmd "axis color all $rgb"
+            SendCmd "outline color $rgb"
+        }
+    }
+}
+
+itcl::body Rappture::VtkImageViewer::BuildImageTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Image Settings" \
+        -icon [Rappture::icon contour2]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.legend \
+        -text "Legend" \
+        -variable [itcl::scope _settings(-legendvisible)] \
+        -command [itcl::code $this AdjustSetting -legendvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.outline \
+        -text "Outline" \
+        -variable [itcl::scope _settings(-outline)] \
+        -command [itcl::code $this AdjustSetting -outline] \
+        -font "Arial 9"
+
+    checkbutton $inner.backing \
+        -text "Backing" \
+        -variable [itcl::scope _settings(-backingvisible)] \
+        -command [itcl::code $this AdjustSetting -backingvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.stretch \
+        -text "Stretch to fit" \
+        -variable [itcl::scope _settings(-stretchtofit)] \
+        -command [itcl::code $this AdjustSetting -stretchtofit] \
+        -font "Arial 9"
+
+    checkbutton $inner.colormapDiscrete \
+        -text "Discrete Colormap" \
+        -variable [itcl::scope _settings(-colormapdiscrete)] \
+        -command [itcl::code $this AdjustSetting -colormapdiscrete] \
+        -font "Arial 9"
+
+    itk_component add field_l {
+        label $inner.field_l -text "Field" -font "Arial 9"
+    } {
+        ignore -font
+    }
+    itk_component add field {
+        Rappture::Combobox $inner.field -width 10 -editable 0
+    }
+    bind $inner.field <<Value>> \
+        [itcl::code $this AdjustSetting -field]
+
+    label $inner.colormap_l -text "Colormap" -font "Arial 9"
+    itk_component add colormap {
+        Rappture::Combobox $inner.colormap -width 10 -editable 0
+    }
+    $inner.colormap choices insert end [GetColormapList -includeNone]
+
+    $itk_component(colormap) value "BCGYR"
+    bind $inner.colormap <<Value>> \
+        [itcl::code $this AdjustSetting -colormap]
+
+    label $inner.backingcolor_l -text "Backing Color" -font "Arial 9"
+    itk_component add backingcolor {
+        Rappture::Combobox $inner.backingcolor -width 10 -editable 0
+    }
+    $inner.backingcolor choices insert end \
+        "black"              "black"            \
+        "blue"               "blue"             \
+        "cyan"               "cyan"             \
+        "green"              "green"            \
+        "grey"               "grey"             \
+        "magenta"            "magenta"          \
+        "orange"             "orange"           \
+        "red"                "red"              \
+        "white"              "white"            \
+        "none"               "none"
+
+    $itk_component(backingcolor) value $_settings(-backingcolor)
+    bind $inner.backingcolor <<Value>> \
+        [itcl::code $this AdjustSetting -backingcolor]
+
+    label $inner.background_l -text "Background Color" -font "Arial 9"
+    itk_component add background {
+        Rappture::Combobox $inner.background -width 10 -editable 0
+    }
+    $inner.background choices insert end \
+        "black"              "black"            \
+        "white"              "white"            \
+        "grey"               "grey"
+
+    $itk_component(background) value "white"
+    bind $inner.background <<Value>> \
+        [itcl::code $this AdjustSetting -background]
+
+    itk_component add opacity_l {
+        label $inner.opacity_l -text "Opacity" -font "Arial 9"
+    } {
+        ignore -font
+    }
+    itk_component add opacity {
+        ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+            -variable [itcl::scope _settings(-opacity)] \
+            -showvalue off \
+            -command [itcl::code $this AdjustSetting -opacity]
+    }
+
+    itk_component add window_l {
+        label $inner.window_l -text "Window" -font "Arial 9"
+    } {
+        ignore -font
+    }
+    itk_component add window {
+        ::scale $inner.window -from 0 -to 255 -orient horizontal \
+            -variable [itcl::scope _settings(-window)] \
+            -showvalue off \
+            -command [itcl::code $this AdjustSetting -window]
+    }
+    itk_component add level_l {
+        label $inner.level_l -text "Level" -font "Arial 9"
+    } {
+        ignore -font
+    }
+    itk_component add level {
+        ::scale $inner.level -from 0 -to 255 -orient horizontal \
+            -variable [itcl::scope _settings(-level)] \
+            -showvalue off \
+            -command [itcl::code $this AdjustSetting -level]
+    }
+
+    frame $inner.separator1 -height 2 -relief sunken -bd 1
+    frame $inner.separator2 -height 2 -relief sunken -bd 1
+
+    blt::table $inner \
+        0,0 $inner.field_l -anchor w -pady 2 \
+        0,1 $inner.field -anchor w -pady 2 -fill x \
+        1,0 $inner.colormap_l -anchor w -pady 2  \
+        1,1 $inner.colormap   -anchor w -pady 2 -fill x  \
+        2,0 $inner.backingcolor_l  -anchor w -pady 2  \
+        2,1 $inner.backingcolor    -anchor w -pady 2 -fill x  \
+        3,0 $inner.background_l -anchor w -pady 2 \
+        3,1 $inner.background -anchor w -pady 2  -fill x \
+        4,0 $inner.backing -anchor w -pady 2 -cspan 2 \
+        5,0 $inner.stretch    -anchor w -pady 2 -cspan 2 \
+        7,0 $inner.legend     -anchor w -pady 2 -cspan 2 \
+        8,0 $inner.colormapDiscrete -anchor w -pady 2 -cspan 2 \
+        11,0 $inner.separator1 -padx 2 -fill x -cspan 2 \
+        12,0 $inner.outline    -anchor w -pady 2 -cspan 2 \
+        13,0 $inner.separator2 -padx 2 -fill x -cspan 2 \
+        15,0 $inner.opacity_l -anchor w -pady 2 \
+        15,1 $inner.opacity   -fill x   -pady 2 \
+        16,0 $inner.window_l -anchor w -pady 2 \
+        16,1 $inner.window   -fill x   -pady 2 \
+        17,0 $inner.level_l -anchor w -pady 2 \
+        17,1 $inner.level   -fill x   -pady 2
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r19 c1 -resize expand
+}
+
+itcl::body Rappture::VtkImageViewer::BuildAxisTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Axis Settings" \
+        -icon [Rappture::icon axis2]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Axes" \
+        -variable [itcl::scope _settings(-axisvisible)] \
+        -command [itcl::code $this AdjustSetting -axisvisible] \
+        -font "Arial 9"
+    checkbutton $inner.labels \
+        -text "Axis Labels" \
+        -variable [itcl::scope _settings(-axislabels)] \
+        -command [itcl::code $this AdjustSetting -axislabels] \
+        -font "Arial 9"
+    label $inner.grid_l -text "Grid" -font "Arial 9"
+    checkbutton $inner.xgrid \
+        -text "X" \
+        -variable [itcl::scope _settings(-xgrid)] \
+        -command [itcl::code $this AdjustSetting -xgrid] \
+        -font "Arial 9"
+    checkbutton $inner.ygrid \
+        -text "Y" \
+        -variable [itcl::scope _settings(-ygrid)] \
+        -command [itcl::code $this AdjustSetting -ygrid] \
+        -font "Arial 9"
+    checkbutton $inner.zgrid \
+        -text "Z" \
+        -variable [itcl::scope _settings(-zgrid)] \
+        -command [itcl::code $this AdjustSetting -zgrid] \
+        -font "Arial 9"
+    checkbutton $inner.minorticks \
+        -text "Minor Ticks" \
+        -variable [itcl::scope _settings(-axisminorticks)] \
+        -command [itcl::code $this AdjustSetting -axisminorticks] \
+        -font "Arial 9"
+
+    label $inner.mode_l -text "Mode" -font "Arial 9"
+
+    itk_component add axisflymode {
+        Rappture::Combobox $inner.mode -width 10 -editable 0
+    }
+    $inner.mode choices insert end \
+        "static_triad"    "static" \
+        "closest_triad"   "closest" \
+        "furthest_triad"  "farthest" \
+        "outer_edges"     "outer"
+    $itk_component(axisflymode) value $_settings(-axisflymode)
+    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -axisflymode]
+
+    blt::table $inner \
+        0,0 $inner.visible -anchor w -cspan 4 \
+        1,0 $inner.labels  -anchor w -cspan 4 \
+        2,0 $inner.minorticks  -anchor w -cspan 4 \
+        4,0 $inner.grid_l  -anchor w \
+        4,1 $inner.xgrid   -anchor w \
+        4,2 $inner.ygrid   -anchor w \
+        4,3 $inner.zgrid   -anchor w \
+        5,0 $inner.mode_l  -anchor w -padx { 2 0 } \
+        5,1 $inner.mode    -fill x -cspan 3
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c6 -resize expand
+    blt::table configure $inner r3 -height 0.125i
+}
+
+itcl::body Rappture::VtkImageViewer::BuildCameraTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Camera Settings" \
+        -icon [Rappture::icon camera]]
+    $inner configure -borderwidth 4
+
+    label $inner.view_l -text "view" -font "Arial 9"
+    set f [frame $inner.view]
+    foreach side { front back left right top bottom } {
+        button $f.$side  -image [Rappture::icon view$side] \
+            -command [itcl::code $this SetOrientation $side]
+        Rappture::Tooltip::for $f.$side "Change the view to $side"
+        pack $f.$side -side left
+    }
+
+    blt::table $inner \
+        0,0 $inner.view_l -anchor e -pady 2 \
+        0,1 $inner.view -anchor w -pady 2
+    blt::table configure $inner r0 -resize none
+
+    set labels { qx qy qz qw xpan ypan zoom }
+    set row 1
+    foreach tag $labels {
+        label $inner.${tag}label -text $tag -font "Arial 9"
+        entry $inner.${tag} -font "Arial 9"  -bg white \
+            -textvariable [itcl::scope _view(-$tag)]
+        bind $inner.${tag} <Return> \
+            [itcl::code $this camera set -${tag}]
+        bind $inner.${tag} <KP_Enter> \
+            [itcl::code $this camera set -${tag}]
+        blt::table $inner \
+            $row,0 $inner.${tag}label -anchor e -pady 2 \
+            $row,1 $inner.${tag} -anchor w -pady 2
+        blt::table configure $inner r$row -resize none
+        incr row
+    }
+    checkbutton $inner.ortho \
+        -text "Orthographic Projection" \
+        -variable [itcl::scope _view(-ortho)] \
+        -command [itcl::code $this camera set -ortho] \
+        -font "Arial 9"
+    blt::table $inner \
+            $row,0 $inner.ortho -cspan 2 -anchor w -pady 2
+    blt::table configure $inner r$row -resize none
+    incr row
+
+    blt::table configure $inner c* -resize none
+    blt::table configure $inner c2 -resize expand
+    blt::table configure $inner r$row -resize expand
+}
+
+#
+# camera --
+#
+itcl::body Rappture::VtkImageViewer::camera {option args} {
+    switch -- $option {
+        "show" {
+            puts [array get _view]
+        }
+        "set" {
+            set what [lindex $args 0]
+            set x $_view($what)
+            set code [catch { string is double $x } result]
+            if { $code != 0 || !$result } {
+                return
+            }
+            switch -- $what {
+                "-ortho" {
+                    if {$_view($what)} {
+                        SendCmd "camera mode ortho"
+                    } else {
+                        SendCmd "camera mode persp"
+                    }
+                }
+                "-xpan" - "-ypan" {
+                    PanCamera
+                }
+                "-qx" - "-qy" - "-qz" - "-qw" {
+                    set q [ViewToQuaternion]
+                    $_arcball quaternion $q
+                    EventuallyRotate $q
+                }
+                "-zoom" {
+                    SendCmd "camera zoom $_view($what)"
+                }
+            }
+        }
+    }
+}
+
+itcl::body Rappture::VtkImageViewer::GetVtkData { args } {
+    set bytes ""
+    foreach dataobj [get] {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            set contents [$dataobj vtkdata $comp]
+            append bytes "$contents\n"
+        }
+    }
+    return [list .vtk $bytes]
+}
+
+itcl::body Rappture::VtkImageViewer::GetImage { args } {
+    if { [image width $_image(download)] > 0 &&
+         [image height $_image(download)] > 0 } {
+        set bytes [$_image(download) data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        return [list .jpg $bytes]
+    }
+    return ""
+}
+
+itcl::body Rappture::VtkImageViewer::BuildDownloadPopup { popup command } {
+    Rappture::Balloon $popup \
+        -title "[Rappture::filexfer::label downloadWord] as..."
+    set inner [$popup component inner]
+    label $inner.summary -text "" -anchor w
+    radiobutton $inner.vtk_button -text "VTK data file" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value vtk
+    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
+    radiobutton $inner.image_button -text "Image File" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value image
+    Rappture::Tooltip::for $inner.image_button \
+        "Save as digital image."
+
+    button $inner.ok -text "Save" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command $command \
+        -compound left \
+        -image [Rappture::icon download]
+
+    button $inner.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command [list $popup deactivate] \
+        -compound left \
+        -image [Rappture::icon cancel]
+
+    blt::table $inner \
+        0,0 $inner.summary -cspan 2  \
+        1,0 $inner.vtk_button -anchor w -cspan 2 -padx { 4 0 } \
+        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
+        4,1 $inner.cancel -width .9i -fill y \
+        4,0 $inner.ok -padx 2 -width .9i -fill y
+    blt::table configure $inner r3 -height 4
+    blt::table configure $inner r4 -pady 4
+    raise $inner.image_button
+    $inner.vtk_button invoke
+    return $inner
+}
+
+#
+# SetObjectStyle --
+#
+# Set the style of the image/contour object.  This gets calls
+# for each dataset once as it is loaded.  It can overridden by
+# the user controls.
+#
+itcl::body Rappture::VtkImageViewer::SetObjectStyle { dataobj comp } {
+    # Parse style string.
+    set tag $dataobj-$comp
+    array set style {
+        -color none
+        -opacity 1.0
+    }
+    set stylelist [$dataobj style $comp]
+    if { $stylelist != "" } {
+        array set style $stylelist
+    }
+    # This is too complicated.  We want to set the colormap, number of
+    # isolines and opacity for the dataset.  They can be the default values,
+    # the style hints loaded with the dataset, or set by user controls.  As
+    # datasets get loaded, they first use the defaults that are overidden
+    # by the style hints.  If the user changes the global controls, then that
+    # overrides everything else.  I don't know what it means when global
+    # controls are specified as style hints by each dataset.  It complicates
+    # the code to handle aberrant cases.
+
+    if { $_changed(-opacity) } {
+        set style(-opacity) [expr $_settings(-opacity) * 0.01]
+    }
+    if { $_changed(-colormap) } {
+        set style(-color) $_settings(-colormap)
+    }
+    if { $_currentColormap == "" } {
+        $itk_component(colormap) value $style(-color)
+    }
+    if { [info exists style(-stretchtofit)] } {
+        set _settings(-stretchtofit) $style(-stretchtofit)
+        AdjustSetting -stretchToFit
+    }
+    SendCmd "outline add $tag"
+    SendCmd "outline color [Color2RGB $itk_option(-plotforeground)] $tag"
+    SendCmd "outline visible $_settings(-outline) $tag"
+    SendCmd "image add $tag"
+    SetCurrentColormap $style(-color)
+    set color [$itk_component(backingcolor) value]
+    SendCmd "image color [Color2RGB $color] $tag"
+    SendCmd "image opacity $style(-opacity) $tag"
+    set _settings(-opacity) [expr $style(-opacity) * 100.0]
+}
+
+itcl::body Rappture::VtkImageViewer::IsValidObject { dataobj } {
+    if {[catch {$dataobj isa Rappture::Field} valid] != 0 || !$valid} {
+        return 0
+    }
+    return 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveLegend <colormap> <title> <min> <max> <size>
+#
+# Invoked automatically whenever the "legend" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::ReceiveLegend { colormap title min max size } {
+    #puts stderr "ReceiveLegend colormap=$colormap title=$title range=$min,$max size=$size"
+    if { [isconnected] } {
+        set bytes [ReceiveBytes $size]
+        if { ![info exists _image(legend)] } {
+            set _image(legend) [image create photo]
+        }
+        $_image(legend) configure -data $bytes
+        #puts stderr "read $size bytes for [image width $_image(legend)]x[image height $_image(legend)] legend>"
+        if { [catch {DrawLegend} errs] != 0 } {
+            global errorInfo
+            puts stderr "errs=$errs errorInfo=$errorInfo"
+        }
+    }
+}
+
+#
+# DrawLegend --
+#
+#       Draws the legend in the own canvas on the right side of the plot area.
+#
+itcl::body Rappture::VtkImageViewer::DrawLegend {} {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    set x [expr $w - 2]
+    if { !$_settings(-legendvisible) } {
+        $c delete legend
+        return
+    }
+    if { [$c find withtag "legend"] == "" } {
+        set y 2
+        # If there's a legend title, create a text item for the title.
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "title legend" \
+            -font $font
+        if { $title != "" } {
+            incr y $lineht
+        }
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "vmax legend" \
+            -font $font
+        incr y $lineht
+        $c create image $x $y \
+            -anchor ne \
+            -image $_image(legend) -tags "colormap legend"
+        $c create rectangle $x $y 1 1 \
+            -fill "" -outline "" -tags "sensor legend"
+        $c create text $x [expr {$h-2}] \
+            -anchor se \
+            -fill $itk_option(-plotforeground) -tags "vmin legend" \
+            -font $font
+        $c bind sensor <Enter> [itcl::code $this EnterLegend %x %y]
+        $c bind sensor <Leave> [itcl::code $this LeaveLegend]
+        $c bind sensor <Motion> [itcl::code $this MotionLegend %x %y]
+    }
+
+    set x2 $x
+    set iw [image width $_image(legend)]
+    set ih [image height $_image(legend)]
+    set x1 [expr $x2 - ($iw*12)/10]
+
+    $c bind title <ButtonPress> [itcl::code $this Combo post]
+    $c bind title <Enter> [itcl::code $this Combo activate]
+    $c bind title <Leave> [itcl::code $this Combo deactivate]
+    # Reset the item coordinates according the current size of the plot.
+    if { [info exists _limits($_curFldName)] } {
+        foreach { vmin vmax } $_limits($_curFldName) break
+        $c itemconfigure vmin -text [format %g $vmin]
+        $c itemconfigure vmax -text [format %g $vmax]
+    }
+    set y 2
+    # If there's a legend title, move the title to the correct position
+    if { $title != "" } {
+        $c itemconfigure title -text $title
+        $c coords title $x $y
+        incr y $lineht
+    }
+    $c coords vmax $x $y
+    incr y $lineht
+    $c coords colormap $x $y
+    $c coords sensor [expr $x - $iw] $y $x [expr $y + $ih]
+    $c raise sensor
+    $c coords vmin $x [expr {$h - 2}]
+}
+
+#
+# EnterLegend --
+#
+itcl::body Rappture::VtkImageViewer::EnterLegend { x y } {
+    SetLegendTip $x $y
+}
+
+#
+# MotionLegend --
+#
+itcl::body Rappture::VtkImageViewer::MotionLegend { x y } {
+    Rappture::Tooltip::tooltip cancel
+    set c $itk_component(view)
+    set cw [winfo width $c]
+    set ch [winfo height $c]
+    if { $x >= 0 && $x < $cw && $y >= 0 && $y < $ch } {
+        SetLegendTip $x $y
+    }
+}
+
+#
+# LeaveLegend --
+#
+itcl::body Rappture::VtkImageViewer::LeaveLegend { } {
+    Rappture::Tooltip::tooltip cancel
+    .rappturetooltip configure -icon ""
+}
+
+#
+# SetLegendTip --
+#
+itcl::body Rappture::VtkImageViewer::SetLegendTip { x y } {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    set ih [image height $_image(legend)]
+    # Subtract off the offset of the color ramp from the top of the canvas
+    set iy [expr $y - ($lineht + 2)]
+
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    # If there's a legend title, increase the offset by the line height.
+    if { $title != "" } {
+        incr iy -$lineht
+    }
+
+    # Make a swatch of the selected color
+    if { [catch { $_image(legend) get 10 $iy } pixel] != 0 } {
+        return
+    }
+
+    if { ![info exists _image(swatch)] } {
+        set _image(swatch) [image create photo -width 24 -height 24]
+    }
+    set color [eval format "\#%02x%02x%02x" $pixel]
+    $_image(swatch) put black  -to 0 0 23 23
+    $_image(swatch) put $color -to 1 1 22 22
+
+    # Compute the value of the point
+    if { [info exists _limits($fname)] } {
+        foreach { vmin vmax } $_limits($fname) break
+        set t [expr 1.0 - (double($iy) / double($ih-1))]
+        set value [expr $t * ($vmax - $vmin) + $vmin]
+    } else {
+        set value 0.0
+    }
+    set tipx [expr $x + 15]
+    set tipy [expr $y - 5]
+    .rappturetooltip configure -icon $_image(swatch)
+    if { [info exists _isolines($y)] } {
+        Rappture::Tooltip::text $c [format "$title %g (isoline)" $_isolines($y)]
+    } else {
+        Rappture::Tooltip::text $c [format "$title %g" $value]
+    }
+    Rappture::Tooltip::tooltip show $c +$tipx,+$tipy
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _dropdown post
+# USAGE: _dropdown unpost
+# USAGE: _dropdown select
+#
+# Used internally to handle the dropdown list for this combobox.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkImageViewer::Combo {option} {
+    set c $itk_component(view)
+    switch -- $option {
+        post {
+            foreach { x1 y1 x2 y2 } [$c bbox title] break
+            set x1 [expr [winfo width $itk_component(view)] - [winfo reqwidth $itk_component(fieldmenu)]]
+            set x [expr $x1 + [winfo rootx $itk_component(view)]]
+            set y [expr $y2 + [winfo rooty $itk_component(view)]]
+            tk_popup $itk_component(fieldmenu) $x $y
+        }
+        activate {
+            $c itemconfigure title -fill red
+        }
+        deactivate {
+            $c itemconfigure title -fill $itk_option(-plotforeground)
+        }
+        invoke {
+            $itk_component(field) value $_curFldLabel
+            AdjustSetting -field
+        }
+        default {
+            error "bad option \"$option\": should be post, unpost, select"
+        }
+    }
+}
+
+itcl::body Rappture::VtkImageViewer::SetOrientation { side } {
+    array set positions {
+        front  "0.707107 0.707107 0 0"
+        back   "0 0 0.707107 0.707107"
+        left   "0.5 0.5 -0.5 -0.5"
+        right  "0.5 0.5 0.5 0.5"
+        top    "1 0 0 0"
+        bottom "0 1 0 0"
+    }
+    foreach name { -qw -qx -qy -qz } value $positions($side) {
+        set _view($name) $value
+    }
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    set _view(-xpan) 0
+    set _view(-ypan) 0
+    set _view(-zoom) 1.0
+}
Index: /tags/1.6.0/gui/scripts/vtkisosurfaceviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/vtkisosurfaceviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/vtkisosurfaceviewer.tcl	(revision 6168)
@@ -0,0 +1,3179 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: vtkisosurfaceviewer - Vtk 3D contour object viewer
+#
+#  It connects to the Vtkvis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+#package require Img
+
+option add *VtkIsosurfaceViewer.width 4i widgetDefault
+option add *VtkIsosurfaceViewer*cursor crosshair widgetDefault
+option add *VtkIsosurfaceViewer.height 4i widgetDefault
+option add *VtkIsosurfaceViewer.foreground black widgetDefault
+option add *VtkIsosurfaceViewer.controlBackground gray widgetDefault
+option add *VtkIsosurfaceViewer.controlDarkBackground #999999 widgetDefault
+option add *VtkIsosurfaceViewer.plotBackground black widgetDefault
+option add *VtkIsosurfaceViewer.plotForeground white widgetDefault
+option add *VtkIsosurfaceViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc VtkIsosurfaceViewer_init_resources {} {
+    Rappture::resources::register \
+        vtkvis_server Rappture::VtkIsosurfaceViewer::SetServerList
+}
+
+itcl::class Rappture::VtkIsosurfaceViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "vtkvis" $namelist
+    }
+    public method add {dataobj {settings ""}}
+    public method camera {option args}
+    public method delete {args}
+    public method disconnect {}
+    public method download {option args}
+    public method get {args}
+    public method isconnected {}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method scale {args}
+
+    # The following methods are only used by this class.
+    private method AdjustSetting {what {value ""}}
+    private method BuildAxisTab {}
+    private method BuildCameraTab {}
+    private method BuildColormap { name }
+    private method BuildCutplanesTab {}
+    private method BuildDownloadPopup { widget command }
+    private method BuildIsosurfaceTab {}
+    private method Connect {}
+    private method CurrentDatasets {args}
+    private method DisableMouseRotationBindings {}
+    private method Disconnect {}
+    private method DoChangeContourLevels {}
+    private method DoResize {}
+    private method DoRotate {}
+    private method DrawLegend {}
+    private method EnterLegend { x y }
+    private method EventuallyChangeContourLevels {}
+    private method EventuallyRequestLegend {}
+    private method EventuallyResize { w h }
+    private method EventuallyRotate { q }
+    private method EventuallySetCutplane { axis args }
+    private method GenerateContourList {}
+    private method GetImage { args }
+    private method GetVtkData { args }
+    private method InitSettings { args }
+    private method IsValidObject { dataobj }
+    private method LeaveLegend {}
+    private method LegendB1Motion {status x y}
+    private method LegendPointToValue { x y }
+    private method LegendProbeSingleContour { x y }
+    private method LegendRangeAction { option args }
+    private method LegendRangeValidate { widget which value }
+    private method LegendTitleAction { option }
+    private method MotionLegend { x y }
+    private method MouseOver2Which {}
+    private method Pan {option x y}
+    private method PanCamera {}
+    private method Pick {x y}
+    private method QuaternionToView { q } {
+        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
+    }
+    private method Rebuild {}
+    private method ReceiveDataset { args }
+    private method ReceiveImage { args }
+    private method ReceiveLegend { colormap title vmin vmax size }
+    private method RequestLegend {}
+    private method Rotate {option x y}
+    private method SetCurrentColormap { color }
+    private method SetCurrentFieldName { dataobj }
+    private method SetLegendTip { x y }
+    private method SetMinMaxGauges { min max }
+    private method SetObjectStyle { dataobj comp }
+    private method SetOrientation { side }
+    private method SetupMouseRotationBindings {}
+    private method SetupMousePanningBindings {}
+    private method SetupKeyboardBindings {}
+    private method Slice {option args}
+    private method ToggleCustomRange { args }
+    private method ViewToQuaternion {} {
+        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
+    }
+    private method Zoom {option}
+
+    private variable _arcball ""
+
+    private variable _dlist ""     ;    # list of data objects
+    private variable _obj2ovride   ;    # maps dataobj => style override
+    private variable _datasets     ;    # contains all the dataobj-component
+                                   ;    # datasets in the server
+    private variable _colormaps    ;    # contains all the colormaps
+                                   ;    # in the server.
+    # The name of the current colormap used.  The colormap is global to all
+    # heightmaps displayed.
+    private variable _currentColormap ""
+    private variable _currentNumContours -1
+
+    private variable _click        ;    # info used for rotate operations
+    private variable _limits       ;    # autoscale min/max for all axes
+    private variable _view         ;    # view params for 3D view
+    private variable _settings
+    private variable _changed
+    private variable _reset 1;          # Connection to server has been reset.
+
+    private variable _first ""     ;    # This is the topmost dataset.
+    private variable _start 0
+    private variable _title ""
+    private variable _isolines
+    private variable _contourList
+    private variable _currentLimits ""
+    private variable _widget
+    private variable _width 0
+    private variable _height 0
+    private variable _resizePending 0
+    private variable _legendPending 0
+    private variable _rotatePending 0
+    private variable _cutplanePending 0
+    private variable _field      ""
+    private variable _colorMode "scalar";   # Mode of colormap (vmag or scalar)
+    private variable _fields
+    private variable _curFldName ""
+    private variable _curFldLabel ""
+    private variable _mouseOver "";     # what called LegendRangeAction, vmin or vmax
+    private variable _customRangeClick 1;   # what called ToggleCustomRange
+
+    private common _downloadPopup;      # download options from popup
+    private common _hardcopy
+}
+
+itk::usual VtkIsosurfaceViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::constructor {args} {
+    set _serverType "vtkvis"
+
+    #DebugOn
+    EnableWaitDialog 900
+
+    # Rebuild event
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Legend event
+    $_dispatcher register !legend
+    $_dispatcher dispatch $this !legend "[itcl::code $this RequestLegend]; list"
+
+    # Rotate event
+    $_dispatcher register !rotate
+    $_dispatcher dispatch $this !rotate "[itcl::code $this DoRotate]; list"
+
+    # Contour levels event
+    $_dispatcher register !contours
+    $_dispatcher dispatch $this !contours \
+        "[itcl::code $this DoChangeContourLevels]; list"
+
+    # X-Cutplane event
+    $_dispatcher register !xcutplane
+    $_dispatcher dispatch $this !xcutplane \
+        "[itcl::code $this AdjustSetting -xcutplaneposition]; list"
+
+    # Y-Cutplane event
+    $_dispatcher register !ycutplane
+    $_dispatcher dispatch $this !ycutplane \
+        "[itcl::code $this AdjustSetting -ycutplaneposition]; list"
+
+    # Z-Cutplane event
+    $_dispatcher register !zcutplane
+    $_dispatcher dispatch $this !zcutplane \
+        "[itcl::code $this AdjustSetting -zcutplaneposition]; list"
+
+    #
+    # Populate parser with commands handle incoming requests
+    #
+    $_parser alias image [itcl::code $this ReceiveImage]
+    $_parser alias legend [itcl::code $this ReceiveLegend]
+    $_parser alias dataset [itcl::code $this ReceiveDataset]
+
+    # Initialize the view to some default parameters.
+    array set _view {
+        -ortho    0
+        -qw       0.853553
+        -qx       -0.353553
+        -qy       0.353553
+        -qz       0.146447
+        -xpan     0
+        -ypan     0
+        -zoom     1.0
+    }
+    set _arcball [blt::arcball create 100 100]
+    $_arcball quaternion [ViewToQuaternion]
+
+    array set _contourList {
+        numLevels       10
+        reqValues       ""
+        updatePending   0
+        values          ""
+    }
+    array set _settings {
+        -axesvisible            1
+        -axislabels             1
+        -axisminorticks         1
+        -axismode               "static"
+        -background             black
+        -colormap               BCGYR
+        -colormapvisible        1
+        -customrange            0
+        -customrangemin         0
+        -customrangemax         1
+        -cutplaneedges          0
+        -cutplanelighting       1
+        -cutplaneopacity        1.0
+        -cutplanepreinterp      1
+        -cutplanesvisible       0
+        -cutplanewireframe      0
+        -field                  "Default"
+        -isolinecolor           white
+        -isosurfaceedges        0
+        -isosurfacelighting     1
+        -isosurfaceopacity      0.6
+        -isosurfacevisible      1
+        -isosurfacewireframe    0
+        -legendvisible          1
+        -numcontours            10
+        -outline                0
+        -xcutplaneposition      50
+        -xcutplanevisible       1
+        -xgrid                  0
+        -ycutplaneposition      50
+        -ycutplanevisible       1
+        -ygrid                  0
+        -zcutplaneposition      50
+        -zcutplanevisible       1
+        -zgrid                  0
+    }
+    array set _changed {
+        -colormap               0
+        -cutplaneedges          0
+        -cutplanelighting       0
+        -cutplaneopacity        0
+        -cutplanepreinterp      0
+        -cutplanesvisible       0
+        -cutplanewireframe      0
+        -isosurfaceedges        0
+        -isosurfacelighting     0
+        -isosurfaceopacity      0
+        -isosurfacevisible      0
+        -isosurfacewireframe    0
+        -numcontours            0
+        -outline                0
+        -xcutplaneposition      0
+        -xcutplanevisible       0
+        -ycutplaneposition      0
+        -ycutplanevisible       0
+        -zcutplaneposition      0
+        -zcutplanevisible       0
+    }
+    array set _widget {
+        -isosurfaceopacity      60
+        -cutplaneopacity        100
+    }
+
+    itk_component add view {
+        canvas $itk_component(plotarea).view \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth -background
+    }
+
+    itk_component add fieldmenu {
+        menu $itk_component(plotarea).menu -bg black -fg white -relief flat \
+            -tearoff 0
+    } {
+        usual
+        ignore -background -foreground -relief -tearoff
+    }
+
+    # add an editor for adjusting the legend min and max values
+    itk_component add editor {
+        Rappture::Editor $itk_interior.editor \
+            -activatecommand [itcl::code $this LegendRangeAction activate] \
+            -validatecommand [itcl::code $this LegendRangeAction validate] \
+            -applycommand [itcl::code $this LegendRangeAction apply]
+    }
+
+    set c $itk_component(view)
+    bind $c <Configure> [itcl::code $this EventuallyResize %w %h]
+    bind $c <4> [itcl::code $this Zoom in 0.25]
+    bind $c <5> [itcl::code $this Zoom out 0.25]
+    bind $c <KeyPress-Left>  [list %W xview scroll 10 units]
+    bind $c <KeyPress-Right> [list %W xview scroll -10 units]
+    bind $c <KeyPress-Up>    [list %W yview scroll 10 units]
+    bind $c <KeyPress-Down>  [list %W yview scroll -10 units]
+    bind $c <Enter> "focus %W"
+    bind $c <Control-F1> [itcl::code $this ToggleConsole]
+
+    # Fix the scrollregion in case we go off screen
+    $c configure -scrollregion [$c bbox all]
+
+    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
+    set _map(cwidth) -1
+    set _map(cheight) -1
+    set _map(zoom) 1.0
+    set _map(original) ""
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    itk_component add contour {
+        Rappture::PushButton $f.contour \
+            -onimage [Rappture::icon volume-on] \
+            -offimage [Rappture::icon volume-off] \
+            -variable [itcl::scope _settings(-isosurfacevisible)] \
+            -command [itcl::code $this AdjustSetting -isosurfacevisible]
+    }
+    $itk_component(contour) select
+    Rappture::Tooltip::for $itk_component(contour) \
+        "Hide the isosurface"
+    pack $itk_component(contour) -padx 2 -pady 2
+
+    itk_component add cutplane {
+        Rappture::PushButton $f.cutplane \
+            -onimage [Rappture::icon cutbutton] \
+            -offimage [Rappture::icon cutbutton] \
+            -variable [itcl::scope _settings(-cutplanesvisible)] \
+            -command [itcl::code $this AdjustSetting -cutplanesvisible]
+    }
+    Rappture::Tooltip::for $itk_component(cutplane) \
+        "Show the cutplanes"
+    pack $itk_component(cutplane) -padx 2 -pady 2
+
+
+    if { [catch {
+        BuildIsosurfaceTab
+        BuildCutplanesTab
+        BuildAxisTab
+        BuildCameraTab
+    } errs] != 0 } {
+        puts stderr errs=$errs
+    }
+
+    # Legend
+    set _image(legend) [image create photo]
+    itk_component add legend {
+        canvas $itk_component(plotarea).legend -width 50 -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -plotbackground plotBackground Background
+    }
+
+    # Hack around the Tk panewindow.  The problem is that the requested
+    # size of the 3d view isn't set until an image is retrieved from
+    # the server.  So the panewindow uses the tiny size.
+    set w 10000
+    pack forget $itk_component(view)
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth $w
+    blt::table configure $itk_component(plotarea) c1 -resize none
+
+    SetupMouseRotationBindings
+    SetupMousePanningBindings
+    SetupKeyboardBindings
+
+
+    #bind $itk_component(view) <ButtonRelease-3> \
+    #    [itcl::code $this Pick %x %y]
+
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        # Bindings for zoom via mouse
+        bind $itk_component(view) <4> [itcl::code $this Zoom out]
+        bind $itk_component(view) <5> [itcl::code $this Zoom in]
+    }
+
+    set _image(download) [image create photo]
+
+    eval itk_initialize $args
+
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::destructor {} {
+    Disconnect
+    image delete $_image(plot)
+    image delete $_image(download)
+    catch { blt::arcball destroy $_arcball }
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::SetupMouseRotationBindings {} {
+    # Bindings for rotation via mouse
+    bind $itk_component(view) <ButtonPress-1> \
+        [itcl::code $this Rotate click %x %y]
+    bind $itk_component(view) <B1-Motion> \
+        [itcl::code $this Rotate drag %x %y]
+    bind $itk_component(view) <ButtonRelease-1> \
+        [itcl::code $this Rotate release %x %y]
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::DisableMouseRotationBindings {} {
+    # Bindings for rotation via mouse
+    bind $itk_component(view) <ButtonPress-1> ""
+    bind $itk_component(view) <B1-Motion> ""
+    bind $itk_component(view) <ButtonRelease-1> ""
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::SetupMousePanningBindings {} {
+    # Bindings for panning via mouse
+    bind $itk_component(view) <ButtonPress-2> \
+        [itcl::code $this Pan click %x %y]
+    bind $itk_component(view) <B2-Motion> \
+        [itcl::code $this Pan drag %x %y]
+    bind $itk_component(view) <ButtonRelease-2> \
+        [itcl::code $this Pan release %x %y]
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::SetupKeyboardBindings {} {
+    # Bindings for panning via keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -2 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 2 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -2]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 2]
+
+    # Bindings for zoom via keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::DoResize {} {
+    if { $_width < 2 } {
+        set _width 500
+    }
+    if { $_height < 2 } {
+        set _height 500
+    }
+    set _start [clock clicks -milliseconds]
+    SendCmd "screen size $_width $_height"
+
+    EventuallyRequestLegend
+    set _resizePending 0
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::DoChangeContourLevels {} {
+    GenerateContourList
+    SendCmd [list contour3d contourlist $_contourList(values)]
+    SendCmd [list camera reset]
+    DrawLegend
+    set _contourList(updatePending) 0
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::DoRotate {} {
+    SendCmd "camera orient [ViewToQuaternion]"
+    set _rotatePending 0
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::EventuallyRequestLegend {} {
+    if { !$_legendPending } {
+        set _legendPending 1
+        $_dispatcher event -idle !legend
+    }
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    $_arcball resize $w $h
+    if { !$_resizePending } {
+        set _resizePending 1
+        $_dispatcher event -after 400 !resize
+    }
+}
+
+set rotate_delay 100
+
+itcl::body Rappture::VtkIsosurfaceViewer::EventuallyRotate { q } {
+    QuaternionToView $q
+    if { !$_rotatePending } {
+        set _rotatePending 1
+        global rotate_delay
+        $_dispatcher event -after $rotate_delay !rotate
+    }
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::EventuallySetCutplane { axis args } {
+    if { !$_cutplanePending } {
+        set _cutplanePending 1
+        $_dispatcher event -after 100 !${axis}cutplane
+    }
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::EventuallyChangeContourLevels {} {
+    set n $_contourList(numLevels)
+    set _contourList(values) ""
+    if { !$_contourList(updatePending) } {
+        set _contourList(updatePending) 1
+        global rotate_delay
+        $_dispatcher event -after $rotate_delay !contours
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::add {dataobj {settings ""}} {
+    if { ![$dataobj isvalid] } {
+        return;                         # Object doesn't contain valid data.
+    }
+    array set params {
+        -color auto
+        -width 1
+        -linestyle solid
+        -brightness 0
+        -raise 0
+        -description ""
+        -param ""
+        -type ""
+    }
+    array set params $settings
+    set params(-description) ""
+    set params(-param) ""
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) black
+    }
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+    }
+    set _obj2ovride($dataobj-color) $params(-color)
+    set _obj2ovride($dataobj-width) $params(-width)
+    set _obj2ovride($dataobj-raise) $params(-raise)
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.  No data objects are
+# deleted.  They are only removed from the display list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::delete {args} {
+    if { [llength $args] == 0} {
+        set args $_dlist
+    }
+    # Delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if { $pos < 0 } {
+            continue;                   # Don't know anything about it.
+        }
+        # Remove it from the dataobj list.
+        set _dlist [lreplace $_dlist $pos $pos]
+        array unset _obj2ovride $dataobj-*
+        array unset _settings $dataobj-*
+        set changed 1
+    }
+    # If anything changed, then rebuild the plot
+    if { $changed } {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-objects?
+# USAGE: get ?-visible?
+# USAGE: get ?-image view?
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.  The optional "-image"
+# flag can also request the internal images being shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::get {args} {
+    if {[llength $args] == 0} {
+        set args "-objects"
+    }
+
+    set op [lindex $args 0]
+    switch -- $op {
+        "-objects" {
+            # put the dataobj list in order according to -raise options
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if {[info exists _obj2ovride($dataobj-raise)] &&
+                    $_obj2ovride($dataobj-raise)} {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        "-visible" {
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if { ![info exists _obj2ovride($dataobj-raise)] } {
+                    # No setting indicates that the object isn't visible.
+                    continue
+                }
+                # Otherwise use the -raise parameter to put the object to
+                # the front of the list.
+                if { $_obj2ovride($dataobj-raise) } {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        -image {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"get -image view\""
+            }
+            switch -- [lindex $args end] {
+                view {
+                    return $_image(plot)
+                }
+                default {
+                    error "bad image name \"[lindex $args end]\": should be view"
+                }
+            }
+        }
+        default {
+            error "bad option \"$op\": should be -objects or -image"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<data1> <data2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <data> objects.  This
+# accounts for all objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::scale { args } {
+    foreach dataobj $args {
+        if { ![$dataobj isvalid] } {
+            continue;                   # Object doesn't contain valid data.
+        }
+        foreach axis { x y z } {
+            set lim [$dataobj limits $axis]
+            if { ![info exists _limits($axis)] } {
+                set _limits($axis) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {amin amax} $_limits($axis) break
+            if { $amin > $min } {
+                set amin $min
+            }
+            if { $amax < $max } {
+                set amax $max
+            }
+            set _limits($axis) [list $amin $amax]
+        }
+        foreach { fname lim } [$dataobj fieldlimits] {
+            if { ![info exists _limits($fname)] } {
+                set _limits($fname) $lim
+
+                # set reasonable defaults for
+                # customrangevmin and customrangevmax
+                foreach {min max} $lim break
+                SetMinMaxGauges $min $max
+                set _settings(-customrangemin) $min
+                set _settings(-customrangemax) $max
+
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {fmin fmax} $_limits($fname) break
+            if { ! $_settings(-customrange) } {
+                SetMinMaxGauges $fmin $fmax
+            }
+            if { $fmin > $min } {
+                set fmin $min
+            }
+            if { $fmax < $max } {
+                set fmax $max
+            }
+            set _limits($fname) [list $fmin $fmax]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::download {option args} {
+    switch $option {
+        coming {
+            if {[catch {
+                blt::winop snap $itk_component(plotarea) $_image(download)
+            }]} {
+                $_image(download) configure -width 1 -height 1
+                $_image(download) put #000000
+            }
+        }
+        controls {
+            set popup .vtkviewerdownload
+            if { ![winfo exists .vtkviewerdownload] } {
+                set inner [BuildDownloadPopup $popup [lindex $args 0]]
+            } else {
+                set inner [$popup component inner]
+            }
+            set _downloadPopup(image_controls) $inner.image_frame
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks            ;# Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .vtkviewerdownload
+            if {[winfo exists .vtkviewerdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "image" {
+                    return [$this GetImage [lindex $args 0]]
+                }
+                "vtk" {
+                    return [$this GetVtkData [lindex $args 0]]
+                }
+            }
+            return ""
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Connect ?<host:port>,<host:port>...?
+#
+# Clients use this method to establish a connection to a new
+# server, or to reestablish a connection to the previous server.
+# Any existing connection is automatically closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::Connect {} {
+    set _hosts [GetServerList "vtkvis"]
+    if { "" == $_hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $_hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "vtkisosurfaceviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        EventuallyResize $w $h
+    }
+    return $result
+}
+
+#
+# isconnected --
+#
+# Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::VtkIsosurfaceViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# disconnect --
+#
+itcl::body Rappture::VtkIsosurfaceViewer::disconnect {} {
+    Disconnect
+    set _reset 1
+}
+
+#
+# Disconnect --
+#
+# Clients use this method to disconnect from the current rendering server.
+#
+itcl::body Rappture::VtkIsosurfaceViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    $_dispatcher cancel !rebuild
+    $_dispatcher cancel !resize
+    $_dispatcher cancel !rotate
+    $_dispatcher cancel !xcutplane
+    $_dispatcher cancel !ycutplane
+    $_dispatcher cancel !zcutplane
+    $_dispatcher cancel !legend
+    # disconnected -- no more data sitting on server
+    array unset _datasets
+    array unset _colormaps
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveImage -bytes <size> -type <type> -token <token>
+#
+# Invoked automatically whenever the "image" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::ReceiveImage { args } {
+    array set info {
+        -token "???"
+        -bytes 0
+        -type image
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    if { $info(-type) == "image" } {
+        if 0 {
+            set f [open "last.ppm" "w"]
+            fconfigure $f -encoding binary
+            puts -nonewline $f $bytes
+            close $f
+        }
+        $_image(plot) configure -data $bytes
+        #set time [clock seconds]
+        #set date [clock format $time]
+        #set w [image width $_image(plot)]
+        #set h [image height $_image(plot)]
+        #puts stderr "$date: received image ${w}x${h} image"
+        if { $_start > 0 } {
+            set finish [clock clicks -milliseconds]
+            #puts stderr "round trip time [expr $finish -$_start] milliseconds"
+            set _start 0
+        }
+    } elseif { $info(type) == "print" } {
+        set tag $this-print-$info(-token)
+        set _hardcopy($tag) $bytes
+    }
+}
+
+#
+# ReceiveDataset --
+#
+itcl::body Rappture::VtkIsosurfaceViewer::ReceiveDataset { args } {
+    if { ![isconnected] } {
+        return
+    }
+    set option [lindex $args 0]
+    switch -- $option {
+        "scalar" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z value tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y value tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "vector" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z vx vy vz tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y vx vy vz tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "names" {
+            foreach { name } [lindex $args 1] {
+                #puts stderr "Dataset: $name"
+            }
+        }
+        default {
+            error "unknown dataset option \"$option\" from server"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::Rebuild {} {
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $w < 2 || $h < 2 } {
+        update
+        $_dispatcher event -idle !rebuild
+        return
+    }
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (which automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+
+    if { $_reset } {
+        set _width $w
+        set _height $h
+        $_arcball resize $w $h
+        DoResize
+
+        # Reset the camera and other view parameters
+        $_arcball quaternion [ViewToQuaternion]
+        InitSettings -ortho
+        DoRotate
+        PanCamera
+        set _first ""
+        InitSettings -background \
+            -xgrid -ygrid -zgrid -axismode \
+            -axesvisible -axislabels -axisminorticks
+        #SendCmd "axis lformat all %g"
+        StopBufferingCommands
+        SendCmd "imgflush"
+        StartBufferingCommands
+    }
+    set _first ""
+    SendCmd "dataset visible 0"
+    eval scale $_dlist
+    foreach dataobj [get -objects] {
+        if { [info exists _obj2ovride($dataobj-raise)] &&  $_first == "" } {
+            set _first $dataobj
+            SetCurrentFieldName $dataobj
+        }
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { ![info exists _datasets($tag)] } {
+                set bytes [$dataobj vtkdata $comp]
+                if 0 {
+                    set f [open "/tmp/isosurface.vtk" "w"]
+                    fconfigure $f -translation binary -encoding binary
+                    puts -nonewline $f $bytes
+                    close $f
+                }
+                set length [string length $bytes]
+                if { $_reportClientInfo }  {
+                    set info {}
+                    lappend info "tool_id"       [$dataobj hints toolid]
+                    lappend info "tool_name"     [$dataobj hints toolname]
+                    lappend info "tool_title"    [$dataobj hints tooltitle]
+                    lappend info "tool_command"  [$dataobj hints toolcommand]
+                    lappend info "tool_revision" [$dataobj hints toolrevision]
+                    lappend info "dataset_label" [$dataobj hints label]
+                    lappend info "dataset_size"  $length
+                    lappend info "dataset_tag"   $tag
+                    SendCmd "clientinfo [list $info]"
+                }
+                SendCmd "dataset add $tag data follows $length"
+                SendData $bytes
+                set _datasets($tag) 1
+                SetObjectStyle $dataobj $comp
+            }
+            if { [info exists _obj2ovride($dataobj-raise)] } {
+                SendCmd "contour3d visible 1 $tag"
+            }
+        }
+    }
+
+    InitSettings -cutplanesvisible -isosurfacevisible -outline
+    if { $_reset } {
+        # These are settings that rely on a dataset being loaded.
+        InitSettings \
+            -field -range \
+            -isosurfaceedges -isosurfacelighting -isosurfaceopacity \
+            -isosurfacewireframe \
+            -xcutplaneposition -ycutplaneposition -zcutplaneposition \
+            -xcutplanevisible -ycutplanevisible -zcutplanevisible \
+            -cutplanepreinterp -numcontours
+
+        Zoom reset
+        foreach axis { x y z } {
+            set label ""
+            if { $_first != "" } {
+                set label [$_first hints ${axis}label]
+            }
+            if { $label == "" } {
+                set label [string toupper $axis]
+            }
+            # There may be a space in the axis label.
+            SendCmd [list axis name $axis $label]
+        }
+        if { [array size _fields] < 2 } {
+            catch {blt::table forget $itk_component(field) $itk_component(field_l)}
+        }
+        set _reset 0
+    }
+    # Redraw the legend even if we're using the same colormap. The position
+    # of the isolines may have changed because the range of data changed.
+    DrawLegend
+
+    # Actually write the commands to the server socket.  If it fails, we don't
+    # care.  We're finished here.
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands;              # Turn off buffering and send commands.
+    blt::busy release $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CurrentDatasets ?-all -visible? ?dataobjs?
+#
+# Returns a list of server IDs for the current datasets being displayed.  This
+# is normally a single ID, but it might be a list of IDs if the current data
+# object has multiple components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::CurrentDatasets {args} {
+    set flag [lindex $args 0]
+    switch -- $flag {
+        "-all" {
+            if { [llength $args] > 1 } {
+                error "CurrentDatasets: can't specify dataobj after \"-all\""
+            }
+            set dlist [get -objects]
+        }
+        "-visible" {
+            if { [llength $args] > 1 } {
+                set dlist {}
+                set args [lrange $args 1 end]
+                foreach dataobj $args {
+                    if { [info exists _obj2ovride($dataobj-raise)] } {
+                        lappend dlist $dataobj
+                    }
+                }
+            } else {
+                set dlist [get -visible]
+            }
+        }
+        default {
+            set dlist $args
+        }
+    }
+    set rlist ""
+    foreach dataobj $dlist {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { [info exists _datasets($tag)] && $_datasets($tag) } {
+                lappend rlist $tag
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::Zoom {option} {
+    switch -- $option {
+        "in" {
+            set _view(-zoom) [expr {$_view(-zoom)*1.25}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "out" {
+            set _view(-zoom) [expr {$_view(-zoom)*0.8}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "reset" {
+            array set _view {
+                -qw      0.853553
+                -qx      -0.353553
+                -qy      0.353553
+                -qz      0.146447
+                -xpan    0
+                -ypan    0
+                -zoom    1.0
+            }
+            if { $_first != "" } {
+                set location [$_first hints camera]
+                if { $location != "" } {
+                    array set _view $location
+                }
+            }
+            $_arcball quaternion [ViewToQuaternion]
+            DoRotate
+            SendCmd "camera reset"
+        }
+    }
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::PanCamera {} {
+    set x $_view(-xpan)
+    set y $_view(-ypan)
+    SendCmd "camera pan $x $y"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::Rotate {option x y} {
+    switch -- $option {
+        "click" {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "drag" {
+            if {[array size _click] == 0} {
+                Rotate click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+                if { $dx == 0 && $dy == 0 } {
+                    return
+                }
+                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
+                EventuallyRotate $q
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        "release" {
+            Rotate drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::Pick {x y} {
+    foreach tag [CurrentDatasets -visible] {
+        SendCmd "dataset getscalar pixel $x $y $tag"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::Pan {option x y} {
+    switch -- $option {
+        "set" {
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set x [expr $x / double($w)]
+            set y [expr $y / double($h)]
+            set _view(-xpan) [expr $_view(-xpan) + $x]
+            set _view(-ypan) [expr $_view(-ypan) + $y]
+            PanCamera
+            return
+        }
+        "click" {
+            set _click(x) $x
+            set _click(y) $y
+            $itk_component(view) configure -cursor hand1
+        }
+        "drag" {
+            if { ![info exists _click(x)] } {
+                set _click(x) $x
+            }
+            if { ![info exists _click(y)] } {
+                set _click(y) $y
+            }
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set dx [expr ($_click(x) - $x)/double($w)]
+            set dy [expr ($_click(y) - $y)/double($h)]
+            set _click(x) $x
+            set _click(y) $y
+            set _view(-xpan) [expr $_view(-xpan) - $dx]
+            set _view(-ypan) [expr $_view(-ypan) - $dy]
+            PanCamera
+        }
+        "release" {
+            Pan drag $x $y
+            $itk_component(view) configure -cursor ""
+        }
+        default {
+            error "unknown option \"$option\": should set, click, drag, or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitSettings <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::InitSettings { args } {
+    foreach spec $args {
+        if { [info exists _settings($_first${spec})] } {
+            # Reset global setting with dataobj specific setting
+            set _settings($spec) $_settings($_first${spec})
+        }
+        AdjustSetting $spec
+    }
+}
+
+#
+# AdjustSetting --
+#
+# Changes/updates a specific setting in the widget.  There are
+# usually user-setable option.  Commands are sent to the render
+# server.
+#
+itcl::body Rappture::VtkIsosurfaceViewer::AdjustSetting {what {value ""}} {
+    DebugTrace "Enter"
+    if { ![isconnected] } {
+        DebugTrace "Not connected"
+        return
+    }
+    switch -- $what {
+        "-axesvisible" {
+            set bool $_settings($what)
+            SendCmd "axis visible all $bool"
+        }
+        "-axislabels" {
+            set bool $_settings($what)
+            SendCmd "axis labels all $bool"
+        }
+        "-axisminorticks" {
+            set bool $_settings($what)
+            SendCmd "axis minticks all $bool"
+        }
+        "-axismode" {
+            set mode [$itk_component(axisMode) value]
+            set mode [$itk_component(axisMode) translate $mode]
+            set _settings($what) $mode
+            SendCmd "axis flymode $mode"
+        }
+        "-background" {
+            set bgcolor [$itk_component(background) value]
+            array set fgcolors {
+                "black" "white"
+                "white" "black"
+                "grey"  "black"
+            }
+            configure -plotbackground $bgcolor \
+                -plotforeground $fgcolors($bgcolor)
+            $itk_component(view) delete "legend"
+            DrawLegend
+        }
+        "-colormap" {
+            set _changed($what) 1
+            StartBufferingCommands
+            set color [$itk_component(colormap) value]
+            set _settings($what) $color
+            if { $color == "none" } {
+                if { $_settings(-colormapvisible) } {
+                    SendCmd "contour3d colormode constant {}"
+                    set _settings(-colormapvisible) 0
+                }
+            } else {
+                if { !$_settings(-colormapvisible) } {
+                    SendCmd "contour3d colormode $_colorMode $_curFldName"
+                    set _settings(-colormapvisible) 1
+                }
+                SetCurrentColormap $color
+            }
+            StopBufferingCommands
+            EventuallyRequestLegend
+        }
+        "-cutplaneedges" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "cutplane edges $bool"
+        }
+        "-cutplanelighting" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "cutplane lighting $bool"
+        }
+        "-cutplaneopacity" {
+            set _changed($what) 1
+            set _settings($what) [expr $_widget($what) * 0.01]
+            SendCmd "cutplane opacity $_settings($what)"
+        }
+        "-cutplanepreinterp" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "cutplane preinterp $bool"
+        }
+        "-cutplanesvisible" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "cutplane visible 0"
+            if { $bool } {
+                foreach tag [CurrentDatasets -visible] {
+                    SendCmd "cutplane visible $bool $tag"
+                }
+            }
+            if { $bool } {
+                Rappture::Tooltip::for $itk_component(cutplane) \
+                    "Hide the cutplanes"
+            } else {
+                Rappture::Tooltip::for $itk_component(cutplane) \
+                    "Show the cutplanes"
+            }
+        }
+        "-cutplanewireframe" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "cutplane wireframe $bool"
+        }
+        "-field" {
+            set label [$itk_component(field) value]
+            set fname [$itk_component(field) translate $label]
+            set _settings($what) $fname
+            if { [info exists _fields($fname)] } {
+                foreach { label units components } $_fields($fname) break
+                if { $components > 1 } {
+                    set _colorMode vmag
+                } else {
+                    set _colorMode scalar
+                }
+                set _curFldName $fname
+                set _curFldLabel $label
+            } else {
+                puts stderr "unknown field \"$fname\""
+                return
+            }
+            SendCmd "dataset scalar $_curFldName"
+            if { ![info exists _limits($_curFldName)] } {
+                SendCmd "dataset maprange all"
+            } else {
+                if { $_settings(-customrange) } {
+                    set vmin [$itk_component(min) value]
+                    set vmax [$itk_component(max) value]
+                } else {
+                    foreach { vmin vmax } $_limits($_curFldName) break
+                    # set the min / max gauges with limits from the field
+                    # the legend's min and max text will be updated
+                    # when the legend is redrawn in DrawLegend
+                    SetMinMaxGauges $vmin $vmax
+                }
+                SendCmd "dataset maprange explicit $vmin $vmax $_curFldName"
+            }
+            SendCmd "cutplane colormode $_colorMode $_curFldName"
+            SendCmd "contour3d colormode $_colorMode $_curFldName"
+            GenerateContourList
+            SendCmd [list contour3d contourlist $_contourList(values)]
+            SendCmd "camera reset"
+            DrawLegend
+        }
+        "-isolinecolor" {
+            set color [$itk_component(isolineColor) value]
+            set _settings($what) $color
+            DrawLegend
+        }
+        "-isosurfaceedges" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "contour3d edges $bool"
+        }
+        "-isosurfacelighting" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "contour3d lighting $bool"
+        }
+        "-isosurfaceopacity" {
+            set _changed($what) 1
+            set _settings($what) [expr $_widget($what) * 0.01]
+            SendCmd "contour3d opacity $_settings($what)"
+        }
+        "-isosurfacevisible" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "contour3d visible 0"
+            if { $bool } {
+                foreach tag [CurrentDatasets -visible] {
+                    SendCmd "contour3d visible $bool $tag"
+                }
+                Rappture::Tooltip::for $itk_component(contour) \
+                    "Hide the isosurface"
+            } else {
+                Rappture::Tooltip::for $itk_component(contour) \
+                    "Show the isosurface"
+            }
+        }
+        "-isosurfacewireframe" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "contour3d wireframe $bool"
+        }
+        "-legendvisible" {
+            if { !$_settings($what) } {
+                $itk_component(view) delete legend
+            }
+            DrawLegend
+        }
+        "-numcontours" {
+            set _changed($what) 1
+            set _settings($what) [$itk_component(numcontours) value]
+            if { $_contourList(numLevels) != $_settings($what) } {
+                set _contourList(numLevels) $_settings($what)
+                EventuallyChangeContourLevels
+            }
+        }
+        "-ortho" {
+            set bool $_view($what)
+            if { $bool } {
+                SendCmd "camera mode ortho"
+            } else {
+                SendCmd "camera mode persp"
+            }
+        }
+        "-outline" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "outline visible 0"
+            if { $bool } {
+                foreach tag [CurrentDatasets -visible] {
+                    SendCmd "outline visible $bool $tag"
+                }
+            }
+        }
+        "-range" {
+            if { $_settings(-customrange) } {
+                set vmin [$itk_component(min) value]
+                set vmax [$itk_component(max) value]
+            } else {
+                foreach { vmin vmax } $_limits($_curFldName) break
+            }
+            GenerateContourList
+            SendCmd [list contour3d contourlist $_contourList(values)]
+            SendCmd "dataset maprange explicit $vmin $vmax $_curFldName"
+            DrawLegend
+        }
+        "-xcutplanevisible" - "-ycutplanevisible" - "-zcutplanevisible" {
+            set _changed($what) 1
+            set axis [string tolower [string range $what 1 1]]
+            set bool $_settings($what)
+            if { $bool } {
+                $itk_component(${axis}position) configure -state normal \
+                    -troughcolor white
+            } else {
+                $itk_component(${axis}position) configure -state disabled \
+                    -troughcolor grey82
+            }
+            SendCmd "cutplane axis $axis $bool"
+        }
+        "-xcutplaneposition" - "-ycutplaneposition" - "-zcutplaneposition" {
+            set _changed($what) 1
+            set axis [string tolower [string range $what 1 1]]
+            set pos [expr $_settings($what) * 0.01]
+            SendCmd "cutplane slice ${axis} ${pos}"
+            set _cutplanePending 0
+        }
+        "-xgrid" - "-ygrid" - "-zgrid" {
+            set axis [string tolower [string range $what 1 1]]
+            set bool $_settings($what)
+            SendCmd "axis grid $axis $bool"
+        }
+        default {
+            error "don't know how to fix $what"
+        }
+    }
+}
+
+#
+# RequestLegend --
+#
+# Request a new legend from the server.  The size of the legend
+# is determined from the height of the canvas.
+#
+# This should be called when
+#   1.  A new current colormap is set.
+#   2.  Window is resized.
+#   3.  The limits of the data have changed.  (Just need a redraw).
+#   4.  Number of isolines have changed. (Just need a redraw).
+#   5.  Legend becomes visible (Just need a redraw).
+#
+itcl::body Rappture::VtkIsosurfaceViewer::RequestLegend {} {
+    set _legendPending 0
+    if { ![info exists _fields($_curFldName)] } {
+        return
+    }
+    set fname $_curFldName
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+    set w 12
+    set h [expr {$_height - 2 * ($lineht + 2)}]
+    if { $h < 1 } {
+        return
+    }
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    # If there's a title too, subtract one more line
+    if { $title != "" } {
+        incr h -$lineht
+    }
+    # Set the legend on the first dataset.
+    if { $_currentColormap != "" } {
+        set cmap $_currentColormap
+        if { ![info exists _colormaps($cmap)] } {
+            BuildColormap $cmap
+            set _colormaps($cmap) 1
+        }
+        #SendCmd "legend $cmap scalar $_curFldName {} $w $h 0"
+        SendCmd "legend2 $cmap $w $h"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkIsosurfaceViewer::plotbackground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotbackground)]
+        SendCmd "screen bgcolor $rgb"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkIsosurfaceViewer::plotforeground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotforeground)]
+        SendCmd "axis color all $rgb"
+        SendCmd "outline color $rgb"
+        SendCmd "cutplane color $rgb"
+    }
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::BuildIsosurfaceTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Isosurface Settings" \
+        -icon [Rappture::icon volume-on]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.contour \
+        -text "Isosurfaces" \
+        -variable [itcl::scope _settings(-isosurfacevisible)] \
+        -command [itcl::code $this AdjustSetting -isosurfacevisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.wireframe \
+        -text "Wireframe" \
+        -variable [itcl::scope _settings(-isosurfacewireframe)] \
+        -command [itcl::code $this AdjustSetting -isosurfacewireframe] \
+        -font "Arial 9"
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(-isosurfacelighting)] \
+        -command [itcl::code $this AdjustSetting -isosurfacelighting] \
+        -font "Arial 9"
+
+    checkbutton $inner.edges \
+        -text "Edges" \
+        -variable [itcl::scope _settings(-isosurfaceedges)] \
+        -command [itcl::code $this AdjustSetting -isosurfaceedges] \
+        -font "Arial 9"
+
+    checkbutton $inner.outline \
+        -text "Outline" \
+        -variable [itcl::scope _settings(-outline)] \
+        -command [itcl::code $this AdjustSetting -outline] \
+        -font "Arial 9"
+
+    checkbutton $inner.legend \
+        -text "Legend" \
+        -variable [itcl::scope _settings(-legendvisible)] \
+        -command [itcl::code $this AdjustSetting -legendvisible] \
+        -font "Arial 9"
+
+    label $inner.linecolor_l -text "Isolines" -font "Arial 9"
+    itk_component add isolineColor {
+        Rappture::Combobox $inner.linecolor -width 10 -editable 0
+    }
+    $inner.linecolor choices insert end \
+        "black"              "black"            \
+        "blue"               "blue"             \
+        "cyan"               "cyan"             \
+        "green"              "green"            \
+        "grey"               "grey"             \
+        "magenta"            "magenta"          \
+        "orange"             "orange"           \
+        "red"                "red"              \
+        "white"              "white"            \
+        "none"               "none"
+
+    $itk_component(isolineColor) value "white"
+    bind $inner.linecolor <<Value>> \
+        [itcl::code $this AdjustSetting -isolinecolor]
+
+    label $inner.background_l -text "Background" -font "Arial 9"
+    itk_component add background {
+        Rappture::Combobox $inner.background -width 10 -editable 0
+    }
+    $inner.background choices insert end \
+        "black"              "black"            \
+        "white"              "white"            \
+        "grey"               "grey"
+
+    $itk_component(background) value $_settings(-background)
+    bind $inner.background <<Value>> \
+        [itcl::code $this AdjustSetting -background]
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9"
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _widget(-isosurfaceopacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -isosurfaceopacity]
+    $inner.opacity set [expr $_settings(-isosurfaceopacity) * 100.0]
+
+    itk_component add field_l {
+        label $inner.field_l -text "Field" -font "Arial 9"
+    } {
+        ignore -font
+    }
+    itk_component add field {
+        Rappture::Combobox $inner.field -width 10 -editable 0
+    }
+    bind $inner.field <<Value>> \
+        [itcl::code $this AdjustSetting -field]
+
+    label $inner.colormap_l -text "Colormap" -font "Arial 9"
+    itk_component add colormap {
+        Rappture::Combobox $inner.colormap -width 10 -editable 0
+    }
+    $inner.colormap choices insert end [GetColormapList]
+
+    $itk_component(colormap) value "BCGYR"
+    bind $inner.colormap <<Value>> \
+        [itcl::code $this AdjustSetting -colormap]
+
+    label $inner.numcontours_l -text "Number of Isosurfaces" -font "Arial 9"
+    itk_component add numcontours {
+        Rappture::Spinint $inner.numcontours \
+            -min 0 -max 50 -font "arial 9"
+    }
+    $itk_component(numcontours) value $_settings(-numcontours)
+    bind $itk_component(numcontours) <<Value>> \
+        [itcl::code $this AdjustSetting -numcontours]
+
+
+    # add widgets for setting a custom range on the legend
+
+    itk_component add crange {
+        checkbutton $inner.crange \
+            -text "Use Custom Range:" \
+            -variable [itcl::scope _settings(-customrange)] \
+            -command [itcl::code $this ToggleCustomRange] \
+            -font "Arial 9"
+    }
+
+    itk_component add l_min {
+        label $inner.l_min -text "Min" -font "Arial 9"
+    }
+    itk_component add min {
+        Rappture::Gauge $inner.min -font "Arial 9" \
+            -validatecommand [itcl::code $this LegendRangeValidate "" vmin]
+    }
+    bind $itk_component(min) <<Value>> \
+        [itcl::code $this AdjustSetting -range]
+
+    itk_component add l_max {
+        label $inner.l_max -text "Max" -font "Arial 9"
+    }
+    itk_component add max {
+        Rappture::Gauge $inner.max -font "Arial 9" \
+            -validatecommand [itcl::code $this LegendRangeValidate "" vmax]
+    }
+    bind $itk_component(max) <<Value>> \
+        [itcl::code $this AdjustSetting -range]
+
+    $itk_component(min) configure -state disabled
+    $itk_component(max) configure -state disabled
+
+
+    blt::table $inner \
+        0,0 $inner.field_l      -anchor w -pady 2 \
+        0,1 $inner.field        -anchor w -pady 2 -fill x \
+        1,0 $inner.colormap_l   -anchor w -pady 2 \
+        1,1 $inner.colormap     -anchor w -pady 2 -fill x \
+        2,0 $inner.linecolor_l  -anchor w -pady 2 \
+        2,1 $inner.linecolor    -anchor w -pady 2 -fill x \
+        3,0 $inner.background_l -anchor w -pady 2 \
+        3,1 $inner.background   -anchor w -pady 2 -fill x \
+        4,0 $inner.numcontours_l -anchor w -pady 2 \
+        4,1 $inner.numcontours  -anchor w -pady 2 \
+        5,0 $inner.wireframe    -anchor w -pady 2 -cspan 2 \
+        6,0 $inner.lighting     -anchor w -pady 2 -cspan 2 \
+        7,0 $inner.edges        -anchor w -pady 2 -cspan 2 \
+        8,0 $inner.outline      -anchor w -pady 2 -cspan 2 \
+        9,0 $inner.legend       -anchor w -pady 2 \
+        10,0 $inner.opacity_l   -anchor w -pady 2 \
+        10,1 $inner.opacity     -fill x   -pady 2 -fill x \
+        11,0 $inner.crange      -anchor w -pady 2 -cspan 2 \
+        12,0 $inner.l_min       -anchor w -pady 2 \
+        12,1 $inner.min         -anchor w -pady 2 -fill x \
+        13,0 $inner.l_max       -anchor w -pady 2 \
+        13,1 $inner.max         -anchor w -pady 2 -fill x \
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r14 c1 -resize expand
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::BuildAxisTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Axis Settings" \
+        -icon [Rappture::icon axis2]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Axes" \
+        -variable [itcl::scope _settings(-axesvisible)] \
+        -command [itcl::code $this AdjustSetting -axesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.labels \
+        -text "Axis Labels" \
+        -variable [itcl::scope _settings(-axislabels)] \
+        -command [itcl::code $this AdjustSetting -axislabels] \
+        -font "Arial 9"
+    label $inner.grid_l -text "Grid" -font "Arial 9"
+    checkbutton $inner.xgrid \
+        -text "X" \
+        -variable [itcl::scope _settings(-xgrid)] \
+        -command [itcl::code $this AdjustSetting -xgrid] \
+        -font "Arial 9"
+    checkbutton $inner.ygrid \
+        -text "Y" \
+        -variable [itcl::scope _settings(-ygrid)] \
+        -command [itcl::code $this AdjustSetting -ygrid] \
+        -font "Arial 9"
+    checkbutton $inner.zgrid \
+        -text "Z" \
+        -variable [itcl::scope _settings(-zgrid)] \
+        -command [itcl::code $this AdjustSetting -zgrid] \
+        -font "Arial 9"
+    checkbutton $inner.minorticks \
+        -text "Minor Ticks" \
+        -variable [itcl::scope _settings(-axisminorticks)] \
+        -command [itcl::code $this AdjustSetting -axisminorticks] \
+        -font "Arial 9"
+
+    label $inner.mode_l -text "Mode" -font "Arial 9"
+
+    itk_component add axisMode {
+        Rappture::Combobox $inner.mode -width 10 -editable 0
+    }
+    $inner.mode choices insert end \
+        "static_triad"    "static" \
+        "closest_triad"   "closest" \
+        "furthest_triad"  "farthest" \
+        "outer_edges"     "outer"
+    $itk_component(axisMode) value $_settings(-axismode)
+    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -axismode]
+
+    blt::table $inner \
+        0,0 $inner.visible    -anchor w -cspan 4 \
+        1,0 $inner.labels     -anchor w -cspan 4 \
+        2,0 $inner.minorticks -anchor w -cspan 4 \
+        4,0 $inner.grid_l     -anchor w \
+        4,1 $inner.xgrid      -anchor w \
+        4,2 $inner.ygrid      -anchor w \
+        4,3 $inner.zgrid      -anchor w \
+        5,0 $inner.mode_l     -anchor w -padx { 2 0 } \
+        5,1 $inner.mode       -fill x   -cspan 3
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c6 -resize expand
+    blt::table configure $inner r3 -height 0.125i
+}
+
+
+itcl::body Rappture::VtkIsosurfaceViewer::BuildCameraTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Camera Settings" \
+        -icon [Rappture::icon camera]]
+    $inner configure -borderwidth 4
+
+    label $inner.view_l -text "view" -font "Arial 9"
+    set f [frame $inner.view]
+    foreach side { front back left right top bottom } {
+        button $f.$side  -image [Rappture::icon view$side] \
+            -command [itcl::code $this SetOrientation $side]
+        Rappture::Tooltip::for $f.$side "Change the view to $side"
+        pack $f.$side -side left
+    }
+
+    blt::table $inner \
+        0,0 $inner.view_l -anchor e -pady 2 \
+        0,1 $inner.view -anchor w -pady 2
+    blt::table configure $inner r0 -resize none
+
+    set labels { qx qy qz qw xpan ypan zoom }
+    set row 1
+    foreach tag $labels {
+        label $inner.${tag}label -text $tag -font "Arial 9"
+        entry $inner.${tag} -font "Arial 9"  -bg white \
+            -textvariable [itcl::scope _view(-$tag)]
+        bind $inner.${tag} <Return> \
+            [itcl::code $this camera set -${tag}]
+        bind $inner.${tag} <KP_Enter> \
+            [itcl::code $this camera set -${tag}]
+        blt::table $inner \
+            $row,0 $inner.${tag}label -anchor e -pady 2 \
+            $row,1 $inner.${tag} -anchor w -pady 2
+        blt::table configure $inner r$row -resize none
+        incr row
+    }
+    checkbutton $inner.ortho \
+        -text "Orthographic Projection" \
+        -variable [itcl::scope _view(-ortho)] \
+        -command [itcl::code $this AdjustSetting -ortho] \
+        -font "Arial 9"
+    blt::table $inner \
+            $row,0 $inner.ortho -cspan 2 -anchor w -pady 2
+    blt::table configure $inner r$row -resize none
+    incr row
+
+    blt::table configure $inner c* -resize none
+    blt::table configure $inner c2 -resize expand
+    blt::table configure $inner r$row -resize expand
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::BuildCutplanesTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Cutplane Settings" \
+        -icon [Rappture::icon cutbutton]]
+
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Cutplanes" \
+        -variable [itcl::scope _settings(-cutplanesvisible)] \
+        -command [itcl::code $this AdjustSetting -cutplanesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.wireframe \
+        -text "Wireframe" \
+        -variable [itcl::scope _settings(-cutplanewireframe)] \
+        -command [itcl::code $this AdjustSetting -cutplanewireframe] \
+        -font "Arial 9"
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(-cutplanelighting)] \
+        -command [itcl::code $this AdjustSetting -cutplanelighting] \
+        -font "Arial 9"
+
+    checkbutton $inner.edges \
+        -text "Edges" \
+        -variable [itcl::scope _settings(-cutplaneedges)] \
+        -command [itcl::code $this AdjustSetting -cutplaneedges] \
+        -font "Arial 9"
+
+    checkbutton $inner.preinterp \
+        -text "Interpolate Scalars" \
+        -variable [itcl::scope _settings(-cutplanepreinterp)] \
+        -command [itcl::code $this AdjustSetting -cutplanepreinterp] \
+        -font "Arial 9"
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9"
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _widget(-cutplaneopacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -cutplaneopacity]
+    $inner.opacity set [expr $_settings(-cutplaneopacity) * 100.0]
+
+    # X-value slicer...
+    itk_component add xbutton {
+        Rappture::PushButton $inner.xbutton \
+            -onimage [Rappture::icon x-cutplane-red] \
+            -offimage [Rappture::icon x-cutplane-red] \
+            -command [itcl::code $this AdjustSetting -xcutplanevisible] \
+            -variable [itcl::scope _settings(-xcutplanevisible)] \
+    }
+    Rappture::Tooltip::for $itk_component(xbutton) \
+        "Toggle the X-axis cutplane on/off"
+    $itk_component(xbutton) select
+    itk_component add xposition {
+        ::scale $inner.xval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane x] \
+            -variable [itcl::scope _settings(-xcutplaneposition)] \
+            -foreground red2 -font "Arial 9 bold"
+    } {
+        usual
+        ignore -borderwidth -highlightthickness -foreground -font -background
+    }
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(xposition) set 50
+    $itk_component(xposition) configure -state disabled
+    Rappture::Tooltip::for $itk_component(xposition) \
+        "@[itcl::code $this Slice tooltip x]"
+
+    # Y-value slicer...
+    itk_component add ybutton {
+        Rappture::PushButton $inner.ybutton \
+            -onimage [Rappture::icon y-cutplane-green] \
+            -offimage [Rappture::icon y-cutplane-green] \
+            -command [itcl::code $this AdjustSetting -ycutplanevisible] \
+            -variable [itcl::scope _settings(-ycutplanevisible)] \
+    }
+    Rappture::Tooltip::for $itk_component(ybutton) \
+        "Toggle the Y-axis cutplane on/off"
+    $itk_component(ybutton) select
+
+    itk_component add yposition {
+        ::scale $inner.yval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane y] \
+            -variable [itcl::scope _settings(-ycutplaneposition)] \
+            -foreground green3 -font "Arial 9 bold"
+    } {
+        usual
+        ignore -borderwidth -highlightthickness -foreground -font
+    }
+    Rappture::Tooltip::for $itk_component(yposition) \
+        "@[itcl::code $this Slice tooltip y]"
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(yposition) set 50
+    $itk_component(yposition) configure -state disabled
+
+    # Z-value slicer...
+    itk_component add zbutton {
+        Rappture::PushButton $inner.zbutton \
+            -onimage [Rappture::icon z-cutplane-blue] \
+            -offimage [Rappture::icon z-cutplane-blue] \
+            -command [itcl::code $this AdjustSetting -zcutplanevisible] \
+            -variable [itcl::scope _settings(-zcutplanevisible)] \
+    } {
+        usual
+        ignore -foreground
+    }
+    Rappture::Tooltip::for $itk_component(zbutton) \
+        "Toggle the Z-axis cutplane on/off"
+    $itk_component(zbutton) select
+
+    itk_component add zposition {
+        ::scale $inner.zval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane z] \
+            -variable [itcl::scope _settings(-zcutplaneposition)] \
+            -foreground blue3 -font "Arial 9 bold"
+    } {
+        usual
+        ignore -borderwidth -highlightthickness -foreground -font
+    }
+    $itk_component(zposition) set 50
+    $itk_component(zposition) configure -state disabled
+    Rappture::Tooltip::for $itk_component(zposition) \
+        "@[itcl::code $this Slice tooltip z]"
+
+    blt::table $inner \
+        0,0 $inner.visible   -anchor w -pady 2 -cspan 3 \
+        1,0 $inner.lighting  -anchor w -pady 2 -cspan 3 \
+        2,0 $inner.wireframe -anchor w -pady 2 -cspan 3 \
+        3,0 $inner.edges     -anchor w -pady 2 -cspan 3 \
+        4,0 $inner.preinterp -anchor w -pady 2 -cspan 3 \
+        5,0 $inner.opacity_l -anchor w -pady 2 -cspan 1 \
+        5,1 $inner.opacity   -fill x   -pady 2 -cspan 3 \
+        6,0 $inner.xbutton   -anchor w -padx 2 -pady 2 \
+        7,0 $inner.ybutton   -anchor w -padx 2 -pady 2 \
+        8,0 $inner.zbutton   -anchor w -padx 2 -pady 2 \
+        6,1 $inner.xval      -fill y -rspan 4 \
+        6,2 $inner.yval      -fill y -rspan 4 \
+        6,3 $inner.zval      -fill y -rspan 4 \
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r9 c4 -resize expand
+}
+
+#
+# camera --
+#
+itcl::body Rappture::VtkIsosurfaceViewer::camera {option args} {
+    switch -- $option {
+        "show" {
+            puts [array get _view]
+        }
+        "set" {
+            set what [lindex $args 0]
+            set x $_view($what)
+            set code [catch { string is double $x } result]
+            if { $code != 0 || !$result } {
+                return
+            }
+            switch -- $what {
+                "-ortho" {
+                    if {$_view($what)} {
+                        SendCmd "camera mode ortho"
+                    } else {
+                        SendCmd "camera mode persp"
+                    }
+                }
+                "-xpan" - "-ypan" {
+                    PanCamera
+                }
+                "-qx" - "-qy" - "-qz" - "-qw" {
+                    set q [ViewToQuaternion]
+                    $_arcball quaternion $q
+                    EventuallyRotate $q
+                }
+                "-zoom" {
+                    SendCmd "camera zoom $_view($what)"
+                }
+             }
+        }
+    }
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::GetVtkData { args } {
+    set bytes ""
+    foreach dataobj [get] {
+        foreach cname [$dataobj components] {
+            set tag $dataobj-$cname
+            set contents [$dataobj vtkdata $cname]
+            append bytes "$contents\n"
+        }
+    }
+    return [list .vtk $bytes]
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::GetImage { args } {
+    if { [image width $_image(download)] > 0 &&
+         [image height $_image(download)] > 0 } {
+        set bytes [$_image(download) data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        return [list .jpg $bytes]
+    }
+    return ""
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::BuildDownloadPopup { popup command } {
+    Rappture::Balloon $popup \
+        -title "[Rappture::filexfer::label downloadWord] as..."
+    set inner [$popup component inner]
+    label $inner.summary -text "" -anchor w
+    radiobutton $inner.vtk_button -text "VTK data file" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value vtk
+    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
+    radiobutton $inner.image_button -text "Image File" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value image
+    Rappture::Tooltip::for $inner.image_button \
+        "Save as digital image."
+
+    button $inner.ok -text "Save" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command $command \
+        -compound left \
+        -image [Rappture::icon download]
+
+    button $inner.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command [list $popup deactivate] \
+        -compound left \
+        -image [Rappture::icon cancel]
+
+    blt::table $inner \
+        0,0 $inner.summary -cspan 2  \
+        1,0 $inner.vtk_button -anchor w -cspan 2 -padx { 4 0 } \
+        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
+        4,1 $inner.cancel -width .9i -fill y \
+        4,0 $inner.ok -padx 2 -width .9i -fill y
+    blt::table configure $inner r3 -height 4
+    blt::table configure $inner r4 -pady 4
+    raise $inner.image_button
+    $inner.vtk_button invoke
+    return $inner
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::SetObjectStyle { dataobj comp } {
+    DebugTrace "Enter"
+    # Parse style string.
+    set tag $dataobj-$comp
+    array set style {
+        -color                  BCGYR
+        -cutplaneedges          0
+        -cutplanelighting       1
+        -cutplaneopacity        1.0
+        -cutplanepreinterp      1
+        -cutplanesvisible       0
+        -cutplanewireframe      0
+        -edgecolor              black
+        -edges                  0
+        -isosurfacevisible      1
+        -levels                 10
+        -lighting               1
+        -linewidth              1.0
+        -opacity                0.6
+        -outline                0
+        -wireframe              0
+        -xcutplaneposition      50
+        -xcutplanevisible       1
+        -ycutplaneposition      50
+        -ycutplanevisible       1
+        -zcutplaneposition      50
+        -zcutplanevisible       1
+    }
+    if { $style(-levels) == 1 } {
+        set style(-opacity) 1.0
+    }
+    array set style [$dataobj style $comp]
+    #DebugTrace [array get style]
+
+    # This is too complicated.  We want to set the colormap, number of
+    # isolines and opacity for the dataset.  They can be the default values,
+    # the style hints loaded with the dataset, or set by user controls.  As
+    # datasets get loaded, they first use the defaults that are overidden
+    # by the style hints.  If the user changes the global controls, then that
+    # overrides everything else.  I don't know what it means when global
+    # controls are specified as style hints by each dataset.  It complicates
+    # the code to handle aberrant cases.
+
+    if { $_changed(-isosurfaceedges) } {
+        set style(-edges) $_settings(-isosurfaceedges)
+    }
+    if { $_changed(-isosurfacelighting) } {
+        set style(-lighting) $_settings(-isosurfacelighting)
+    }
+    if { $_changed(-isosurfaceopacity) } {
+        set style(-opacity) $_settings(-isosurfaceopacity)
+    }
+    if { $_changed(-isosurfacewireframe) } {
+        set style(-wireframe) $_settings(-isosurfacewireframe)
+    }
+    if { $_changed(-numcontours) } {
+        set style(-levels) $_settings(-numcontours)
+    }
+    if { $_changed(-colormap) } {
+        set style(-color) $_settings(-colormap)
+    }
+    if { $_currentColormap == "" } {
+        SetCurrentColormap $style(-color)
+        $itk_component(colormap) value $style(-color)
+    }
+    if { $_contourList(numLevels) != $style(-levels) } {
+        if { [llength $style(-levels)] > 1 } {
+            set _contourList(reqValues) [lsort -real $style(-levels)]
+        } else {
+            set _settings(-numcontours) $style(-levels)
+            $itk_component(numcontours) value $style(-levels)
+            set _contourList(numLevels) $style(-levels)
+        }
+        EventuallyChangeContourLevels
+    }
+    foreach setting {-outline -isosurfacevisible -cutplanesvisible \
+                     -xcutplanevisible -ycutplanevisible -zcutplanevisible \
+                     -xcutplaneposition -ycutplaneposition -zcutplaneposition \
+                     -cutplaneedges -cutplanelighting -cutplaneopacity \
+                     -cutplanepreinterp -cutplanewireframe} {
+        if {$_changed($setting)} {
+            # User-modified UI setting overrides style
+            set style($setting) $_settings($setting)
+        } else {
+            # Set UI control to style setting (tool provided or default)
+            set _settings($setting) $style($setting)
+        }
+    }
+
+    SendCmd "cutplane add $tag"
+    SendCmd "cutplane color [Color2RGB $itk_option(-plotforeground)] $tag"
+    foreach axis {x y z} {
+        set pos [expr $style(-${axis}cutplaneposition) * 0.01]
+        set visible $style(-${axis}cutplanevisible)
+        SendCmd "cutplane slice $axis $pos $tag"
+        SendCmd "cutplane axis $axis $visible $tag"
+    }
+    SendCmd "cutplane edges $style(-cutplaneedges) $tag"
+    SendCmd "cutplane lighting $style(-cutplanelighting) $tag"
+    SendCmd "cutplane opacity $style(-cutplaneopacity) $tag"
+    set _widget(-cutplaneopacity) [expr $style(-cutplaneopacity) * 100]
+    SendCmd "cutplane preinterp $style(-cutplanepreinterp) $tag"
+    SendCmd "cutplane wireframe $style(-cutplanewireframe) $tag"
+    SendCmd "cutplane visible $style(-cutplanesvisible) $tag"
+
+    SendCmd "outline add $tag"
+    SendCmd "outline color [Color2RGB $itk_option(-plotforeground)] $tag"
+    SendCmd "outline visible $style(-outline) $tag"
+
+    GenerateContourList
+    SendCmd [list contour3d add contourlist $_contourList(values) $tag]
+    SendCmd "contour3d visible $style(-isosurfacevisible) $tag"
+    SendCmd "contour3d edges $style(-edges) $tag"
+    set _settings(-isosurfaceedges) $style(-edges)
+    #SendCmd "contour3d color [Color2RGB $style(-color)] $tag"
+    SendCmd "contour3d lighting $style(-lighting) $tag"
+    set _settings(-isosurfacelighting) $style(-lighting)
+    SendCmd "contour3d linecolor [Color2RGB $style(-edgecolor)] $tag"
+    SendCmd "contour3d linewidth $style(-linewidth) $tag"
+    SendCmd "contour3d opacity $style(-opacity) $tag"
+    set _settings(-isosurfaceopacity) $style(-opacity)
+    set _widget(-isosurfaceopacity) [expr $style(-opacity) * 100]
+    SetCurrentColormap $style(-color)
+    SendCmd "contour3d wireframe $style(-wireframe) $tag"
+    set _settings(-isosurfacewireframe) $style(-wireframe)
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::IsValidObject { dataobj } {
+    if {[catch {$dataobj isa Rappture::Field} valid] != 0 || !$valid} {
+        return 0
+    }
+    return 1
+}
+
+#
+# EnterLegend --
+#
+itcl::body Rappture::VtkIsosurfaceViewer::EnterLegend { x y } {
+    SetLegendTip $x $y
+}
+
+#
+# MotionLegend --
+#
+itcl::body Rappture::VtkIsosurfaceViewer::MotionLegend { x y } {
+    Rappture::Tooltip::tooltip cancel
+    set c $itk_component(view)
+    set cw [winfo width $c]
+    set ch [winfo height $c]
+    if { $x >= 0 && $x < $cw && $y >= 0 && $y < $ch } {
+        SetLegendTip $x $y
+    }
+}
+
+#
+# LeaveLegend --
+#
+itcl::body Rappture::VtkIsosurfaceViewer::LeaveLegend { } {
+    Rappture::Tooltip::tooltip cancel
+    .rappturetooltip configure -icon ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: LegendB1Motion press <x> <y>
+# USAGE: LegendB1Motion motion <x> <y>
+# USAGE: LegendB1Motion release <x> <y>
+#
+# Manage actions for Button 1 presses that happen over the legend.
+# Pressing mouse Button 1 on the legend sends a command to the
+# visualization server to show a specific isosurface.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::LegendB1Motion { status x y } {
+
+    switch -- $status {
+        "press" {
+            DisableMouseRotationBindings
+            LegendProbeSingleContour $x $y
+        }
+        "motion" {
+            DisableMouseRotationBindings
+            LegendProbeSingleContour $x $y
+        }
+        "release" {
+            AdjustSetting -range
+            SetupMouseRotationBindings
+        }
+        default {
+            error "bad option \"$option\": should be one of press, motion, release."
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: LegendPointToValue <x> <y>
+#
+# Convert an x,y point on the legend to a numeric isosurface value.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::LegendPointToValue { x y } {
+
+    set fname $_curFldName
+
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    set ih [image height $_image(legend)]
+    set iy [expr $y - ($lineht + 2)]
+
+    # Compute the value of the point
+    if { [info exists _limits($fname)] } {
+        if { $_settings(-customrange) } {
+            set vmin [$itk_component(min) value]
+            set vmax [$itk_component(max) value]
+        } else {
+            foreach { vmin vmax } $_limits($fname) break
+        }
+        set t [expr 1.0 - (double($iy) / double($ih-1))]
+        set value [expr $t * ($vmax - $vmin) + $vmin]
+    } else {
+        set value 0.0
+    }
+    return $value
+}
+
+# ----------------------------------------------------------------------
+# USAGE: LegendProbeSingleContour <x> <y>
+#
+# Calculate the isosurface value for the x,y point and send a commands
+# to the visualization server to show that isosurface.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::LegendProbeSingleContour { x y } {
+
+    set value [LegendPointToValue $x $y]
+    SendCmd [list contour3d contourlist $value]
+}
+
+#
+# SetLegendTip --
+#
+itcl::body Rappture::VtkIsosurfaceViewer::SetLegendTip { x y } {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    set ih [image height $_image(legend)]
+    set iy [expr $y - ($lineht + 2)]
+
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    # If there's a legend title, increase the offset by the line height.
+    if { $title != "" } {
+        incr iy -$lineht
+    }
+    # Make a swatch of the selected color
+    if { [catch { $_image(legend) get 10 $iy } pixel] != 0 } {
+        return
+    }
+    if { ![info exists _image(swatch)] } {
+        set _image(swatch) [image create photo -width 24 -height 24]
+    }
+    set color [eval format "\#%02x%02x%02x" $pixel]
+    $_image(swatch) put black  -to 0 0 23 23
+    $_image(swatch) put $color -to 1 1 22 22
+    .rappturetooltip configure -icon $_image(swatch)
+
+    # Compute the value of the point
+    set value [LegendPointToValue $x $y]
+
+    # Setup the location of the tooltip
+    set tx [expr $x + 15]
+    set ty [expr $y - 5]
+
+    # Setup the text for the tooltip
+    if { [info exists _isolines($y)] } {
+        Rappture::Tooltip::text $c [format "$title %g (isosurface)" $_isolines($y)]
+    } else {
+        Rappture::Tooltip::text $c [format "$title %g" $value]
+    }
+
+    # Show the tooltip
+    Rappture::Tooltip::tooltip show $c +$tx,+$ty
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Slice move x|y|z <newval>
+#
+# Called automatically when the user drags the slider to move the
+# cut plane that slices 3D data.  Gets the current value from the
+# slider and moves the cut plane to the appropriate point in the
+# data set.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::Slice {option args} {
+    switch -- $option {
+        "move" {
+            set axis [lindex $args 0]
+            set newval [lindex $args 1]
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Slice move x|y|z newval\""
+            }
+            set newpos [expr {0.01*$newval}]
+            SendCmd "cutplane slice $axis $newpos"
+        }
+        "tooltip" {
+            set axis [lindex $args 0]
+            set val [$itk_component(${axis}position) get]
+            return "Move the [string toupper $axis] cut plane.\nCurrently:  $axis = $val%"
+        }
+        default {
+            error "bad option \"$option\": should be axis, move, or tooltip"
+        }
+    }
+}
+
+#
+# ReceiveLegend --
+#
+# Invoked automatically whenever the "legend" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+#
+itcl::body Rappture::VtkIsosurfaceViewer::ReceiveLegend { colormap title min max size } {
+    DebugTrace "Enter"
+    set _title $title
+    regsub {\(mag\)} $title "" _title
+    if { [IsConnected] } {
+        set bytes [ReceiveBytes $size]
+        if { ![info exists _image(legend)] } {
+            set _image(legend) [image create photo]
+        }
+        $_image(legend) configure -data $bytes
+        #puts stderr "read $size bytes for [image width $_image(legend)]x[image height $_image(legend)] legend>"
+        if { [catch {DrawLegend} errs] != 0 } {
+            global errorInfo
+            puts stderr "errs=$errs errorInfo=$errorInfo"
+        }
+    }
+}
+
+#
+# DrawLegend --
+#
+# Draws the legend on the canvas on the right side of the plot area.
+#
+itcl::body Rappture::VtkIsosurfaceViewer::DrawLegend {} {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    set x [expr $w - 2]
+    if { !$_settings(-legendvisible) } {
+        $c delete legend
+        return
+    }
+    if { [$c find withtag "legend"] == "" } {
+        set y 2
+        # If there's a legend title, create a text item for the title.
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "title legend" \
+            -font $font
+        if { $title != "" } {
+            incr y $lineht
+        }
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "vmax legend" \
+            -font $font
+        incr y $lineht
+        $c create image $x $y \
+            -anchor ne \
+            -image $_image(legend) -tags "colormap legend"
+        $c create rectangle $x $y 1 1 \
+            -fill "" -outline "" -tags "sensor legend"
+        $c create text $x [expr {$h-2}] \
+            -anchor se \
+            -fill $itk_option(-plotforeground) -tags "vmin legend" \
+            -font $font
+        $c bind sensor <Enter> [itcl::code $this EnterLegend %x %y]
+        $c bind sensor <Leave> [itcl::code $this LeaveLegend]
+        $c bind sensor <Motion> [itcl::code $this MotionLegend %x %y]
+#        $c bind sensor <ButtonPress-1>   [itcl::code $this LegendB1Motion press %x %y]
+#        $c bind sensor <B1-Motion>       [itcl::code $this LegendB1Motion motion %x %y]
+#        $c bind sensor <ButtonRelease-1> [itcl::code $this LegendB1Motion release %x %y]
+    }
+    $c delete isoline
+    set x2 $x
+    set iw [image width $_image(legend)]
+    set ih [image height $_image(legend)]
+    set x1 [expr $x2 - ($iw*12)/10]
+    set color $_settings(-isolinecolor)
+    # Draw the isolines on the legend.
+    array unset _isolines
+    if { $color != "none"  && [info exists _limits($_curFldName)] &&
+         $_settings(-numcontours) > 0 } {
+
+        if { $_settings(-customrange) } {
+            set vmin [$itk_component(min) value]
+            set vmax [$itk_component(max) value]
+        } else {
+            foreach { vmin vmax } $_limits($_curFldName) break
+        }
+        set range [expr double($vmax - $vmin)]
+        if { $range <= 0.0 } {
+            set range 1.0;              # Min is greater or equal to max.
+        }
+        set tags "isoline legend"
+        set offset [expr 2 + $lineht]
+        if { $title != "" } {
+            incr offset $lineht
+        }
+        foreach value $_contourList(values) {
+            set norm [expr 1.0 - (($value - $vmin) / $range)]
+            set y1 [expr int(round(($norm * $ih) + $offset))]
+            for { set off 0 } { $off < 3 } { incr off } {
+                set _isolines([expr $y1 + $off]) $value
+                set _isolines([expr $y1 - $off]) $value
+            }
+            $c create line $x1 $y1 $x2 $y1 -fill $color -tags $tags
+        }
+    }
+
+    $c bind title <ButtonPress> [itcl::code $this LegendTitleAction post]
+    $c bind title <Enter> [itcl::code $this LegendTitleAction enter]
+    $c bind title <Leave> [itcl::code $this LegendTitleAction leave]
+    # Reset the item coordinates according the current size of the plot.
+    $c itemconfigure title -text $title
+    if { [info exists _limits($_curFldName)] } {
+        if { $_settings(-customrange) } {
+            set vmin [$itk_component(min) value]
+            set vmax [$itk_component(max) value]
+        } else {
+            foreach { vmin vmax } $_limits($_curFldName) break
+        }
+        $c itemconfigure vmin -text [format %g $vmin]
+        $c itemconfigure vmax -text [format %g $vmax]
+    }
+    set y 2
+    # If there's a legend title, move the title to the correct position
+    if { $title != "" } {
+        $c itemconfigure title -text $title
+        $c coords title $x $y
+        incr y $lineht
+        $c raise title
+    }
+    $c coords vmax $x $y
+    incr y $lineht
+    $c coords colormap $x $y
+    $c coords sensor [expr $x - $iw] $y $x [expr $y + $ih]
+    $c raise sensor
+    $c coords vmin $x [expr {$h - 2}]
+
+    $c bind vmin <ButtonPress> [itcl::code $this LegendRangeAction popup vmin]
+    $c bind vmin <Enter> [itcl::code $this LegendRangeAction enter vmin]
+    $c bind vmin <Leave> [itcl::code $this LegendRangeAction leave vmin]
+
+    $c bind vmax <ButtonPress> [itcl::code $this LegendRangeAction popup vmax]
+    $c bind vmax <Enter> [itcl::code $this LegendRangeAction enter vmax]
+    $c bind vmax <Leave> [itcl::code $this LegendRangeAction leave vmax]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: LegendTitleAction post
+# USAGE: LegendTitleAction enter
+# USAGE: LegendTitleAction leave
+# USAGE: LegendTitleAction save
+#
+# Used internally to handle the dropdown list for the fields menu combobox.
+# The post option is invoked when the field title is pressed to launch the
+# dropdown. The enter option is invoked when the user mouses over the field
+# title. The leave option is invoked when the user moves the mouse away
+# from the field title.  The save option is invoked whenever there is a
+# selection from the list, to alert the visualization server.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::LegendTitleAction {option} {
+    set c $itk_component(view)
+    switch -- $option {
+        post {
+            foreach { x1 y1 x2 y2 } [$c bbox title] break
+            set cw [winfo width $itk_component(view)]
+            set mw [winfo reqwidth $itk_component(fieldmenu)]
+            set x1 [expr $cw - $mw]
+            set x [expr $x1 + [winfo rootx $itk_component(view)]]
+            set y [expr $y2 + [winfo rooty $itk_component(view)]]
+            tk_popup $itk_component(fieldmenu) $x $y
+        }
+        enter {
+            $c itemconfigure title -fill red
+        }
+        leave {
+            $c itemconfigure title -fill $itk_option(-plotforeground)
+        }
+        save {
+            $itk_component(field) value $_curFldLabel
+            AdjustSetting -field
+        }
+        default {
+            error "bad option \"$option\": should be post, enter, leave, save"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: LegendRangeValidate <widget> <which> <value>
+#
+# Used internally to validate a legend range min/max value.
+# Returns a boolean value telling if <value> was accepted (1) or rejected (0)
+# If the value is rejected, a tooltip/warning message is popped up
+# near the widget that asked for the validation, specified by <widget>
+#
+# <widget> is the widget where a tooltip/warning message should show up on
+# <which> is either "vmin" or "vmax".
+# <value> is the value to be validated.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::LegendRangeValidate {widget which value} {
+
+    #check for a valid value
+    if {[string is double $value] != 1} {
+        set msg "should be valid number"
+        if {$widget != ""} {
+            Rappture::Tooltip::cue $widget $msg
+        } else {
+            # error "bad value \"$value\": $msg"
+            error $msg
+        }
+        return 0
+    }
+
+    switch -- $which {
+        vmin {
+            # check for min > max
+            if {$value > [$itk_component(max) value]} {
+                set msg "min > max, change max first"
+                if {$widget != ""} {
+                    Rappture::Tooltip::cue $widget $msg
+                } else {
+                    # error "bad value \"$value\": $msg"
+                    error $msg
+                }
+                return 0
+            }
+        }
+        vmax {
+            # check for max < min
+            if {$value < [$itk_component(min) value]} {
+                set msg "max < min, change min first"
+                if {$widget != ""} {
+                    Rappture::Tooltip::cue $widget $msg
+                } else {
+                    # error "bad value \"$value\": $msg"
+                    error $msg
+                }
+                return 0
+            }
+        }
+        default {
+            error "bad option \"$which\": should be vmin, vmax"
+        }
+    }
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::MouseOver2Which {} {
+    switch -- $_mouseOver {
+        vmin {
+            set which min
+        }
+        vmax {
+            set which max
+        }
+        default {
+            error "bad _mouseOver \"$_mouseOver\": should be vmin, vmax"
+        }
+    }
+    return $which
+}
+
+# ----------------------------------------------------------------------
+# USAGE: LegendRangeAction enter <which>
+# USAGE: LegendRangeAction leave <which>
+#
+# USAGE: LegendRangeAction popup <which>
+# USAGE: LegendRangeAction activate
+# USAGE: LegendRangeAction validate <value>
+# USAGE: LegendRangeAction apply <value>
+#
+# Used internally to handle the mouseover and popup entry for the field range
+# inputs.  The enter option is invoked when the user moves the mouse over the
+# min or max field range. The leave option is invoked when the user moves the
+# mouse away from the min or max field range. The popup option is invoked when
+# the user click's on a field range. The popup option stores internally which
+# widget is requesting a popup ( in the _mouseOver variable) and calls the
+# activate command of the widget. The widget's activate command calls back to
+# this method to get the xywh dimensions of the popup editor. After the user
+# changes focus or sets the value in the editor, the editor calls this methods
+# validate and apply options to set the value.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::LegendRangeAction {option args} {
+    set c $itk_component(view)
+
+    switch -- $option {
+        enter {
+            set which [lindex $args 0]
+            $c itemconfigure $which -fill red
+        }
+        leave {
+            set which [lindex $args 0]
+            $c itemconfigure $which -fill $itk_option(-plotforeground)
+        }
+        popup {
+            DisableMouseRotationBindings
+            set which [lindex $args 0]
+            set _mouseOver $which
+            $itk_component(editor) activate
+        }
+        activate {
+            foreach { x1 y1 x2 y2 } [$c bbox $_mouseOver] break
+            set which [MouseOver2Which]
+            set info(text) [$itk_component($which) value]
+            set info(x) [expr $x1 + [winfo rootx $c]]
+            set info(y) [expr $y1 + [winfo rooty $c]]
+            set info(w) [expr $x2 - $x1]
+            set info(h) [expr $y2 - $y1]
+            return [array get info]
+        }
+        validate {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"editor validate value\""
+            }
+
+            set value [lindex $args 0]
+            if {[LegendRangeValidate $itk_component(editor) $_mouseOver $value] == 0} {
+                return 0
+            }
+
+            # value was good, apply it
+            # reset the mouse rotation bindings
+            SetupMouseRotationBindings
+        }
+        apply {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"editor apply value\""
+            }
+            set value [string trim [lindex $args 0]]
+
+            set which [MouseOver2Which]
+
+            # only set custom range if value changed
+            if {[$itk_component($which) value] != $value} {
+                # set the flag stating the custom range came from the legend
+                # change the value in the gauge
+                # turn on crange to enable the labels and gauges
+                # call AdjustSetting -range (inside ToggleCustomRange)
+                # to update drawing and legend
+                set _customRangeClick 0
+                $itk_component($which) value $value
+                $itk_component(crange) select
+                ToggleCustomRange
+            }
+        }
+        default {
+            error "bad option \"$option\": should be enter, leave, activate, validate, apply"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ToggleCustomRange
+#
+# Called whenever the custom range is turned on or off. Used to save
+# the custom min and custom max set by the user. When the -customrange
+# setting is turned on, the range min and range max gauges are set
+# with the last value set by the user, or the default range if no
+# previous min and max were set.
+#
+# When the custom range is turned on, we check how it was turned on
+# by querying _customRangeClick. If the variable is 1, this means
+# the user clicked the crange checkbutton and we should pull the
+# custom range values from our backup variables. If the variable is 0,
+# the custom range was enabled through the user manipulating the
+# min and max value in the legend.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::ToggleCustomRange {args} {
+    if { ! $_settings(-customrange) } {
+        # custom range was turned off
+
+        # disable the min/max labels and gauge widgets
+        $itk_component(l_min) configure -state disabled
+        $itk_component(min) configure -state disabled
+        $itk_component(l_max) configure -state disabled
+        $itk_component(max) configure -state disabled
+
+        # backup the custom range
+        set _settings(-customrangemin) [$itk_component(min) value]
+        set _settings(-customrangemax) [$itk_component(max) value]
+
+        # set the gauges to dataset's min and max
+        foreach { vmin vmax } $_limits($_curFldName) break
+        SetMinMaxGauges $vmin $vmax
+    } else {
+        # custom range was turned on
+
+        # enable the min/max labels and gauge widgets
+        $itk_component(l_min) configure -state normal
+        $itk_component(min) configure -state normal
+        $itk_component(l_max) configure -state normal
+        $itk_component(max) configure -state normal
+
+        # if the custom range is being turned on by clicking the
+        # checkbox, restore the min and max gauges from the backup
+        # variables. otherwise, new values for the min and max
+        # widgets will be set later from the legend's editor.
+        if { $_customRangeClick } {
+            SetMinMaxGauges $_settings(-customrangemin) $_settings(-customrangemax)
+        }
+
+        # reset the click flag
+        set _customRangeClick 1
+    }
+    AdjustSetting -range
+}
+
+# ----------------------------------------------------------------------
+# USAGE: SetMinMaxGauges <min> <max>
+#
+# Set the min and max gauges in the correct order, avoiding the
+# error where you try to set the min > max before updating the max or
+# set the max < min before updating the min.
+#
+# There are five range cases to consider with our current range validation.
+# For example:
+# [2,3] -> [0,1]       : update min first, max last
+# [2,3] -> [4,5]       : update max first, min last
+# [2,3] -> [0,2.5]     : update min or max first
+# [2,3] -> [2.5,5]     : update min or max first
+# [2,3] -> [2.25,2.75] : update min or max first
+#
+# In 4 of the cases we can update min first and max last, so we only
+# need to check the case where old max < new min, where we update
+# max first and min last.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkIsosurfaceViewer::SetMinMaxGauges {min max} {
+
+    if { [$itk_component(max) value] < $min} {
+        # old max < new min
+        # shift range toward right
+        # extend max first, then update min
+        $itk_component(max) value $max
+        $itk_component(min) value $min
+    } else {
+        # extend min first, then update max
+        $itk_component(min) value $min
+        $itk_component(max) value $max
+    }
+}
+
+#
+# SetCurrentColormap --
+#
+itcl::body Rappture::VtkIsosurfaceViewer::SetCurrentColormap { name } {
+    # Keep track of the colormaps that we build.
+    if { ![info exists _colormaps($name)] } {
+        BuildColormap $name
+        set _colormaps($name) 1
+    }
+    set _currentColormap $name
+    SendCmd "contour3d colormap $_currentColormap"
+    SendCmd "cutplane colormap $_currentColormap"
+}
+
+#
+# BuildColormap --
+#
+# Build the designated colormap on the server.
+#
+itcl::body Rappture::VtkIsosurfaceViewer::BuildColormap { name } {
+    set cmap [ColorsToColormap $name]
+    if { [llength $cmap] == 0 } {
+        set cmap "0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0"
+    }
+    set amap "0.0 1.0 1.0 1.0"
+    SendCmd "colormap add $name { $cmap } { $amap }"
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::SetOrientation { side } {
+    array set positions {
+        front "1 0 0 0"
+        back  "0 0 1 0"
+        left  "0.707107 0 -0.707107 0"
+        right "0.707107 0 0.707107 0"
+        top   "0.707107 -0.707107 0 0"
+        bottom "0.707107 0.707107 0 0"
+    }
+    foreach name { -qw -qx -qy -qz } value $positions($side) {
+        set _view($name) $value
+    }
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    set _view(-xpan) 0
+    set _view(-ypan) 0
+    set _view(-zoom) 1.0
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::GenerateContourList {} {
+    if { ![info exists _limits($_curFldName)] } {
+        puts stderr "no _curFldName"
+        return ""
+    }
+    if { $_contourList(numLevels) < 1 } {
+        # There are tools that set 0 levels to get cutplanes only
+        #puts stderr "numLevels < 1"
+        return ""
+    }
+    if { [llength $_contourList(reqValues)] > 1 } {
+        set values $_contourList(reqValues)
+    } else {
+        # if custom range has been set, use the custom min and max
+        # to generate contour list values
+        if { $_settings(-customrange) } {
+            set vmin [$itk_component(min) value]
+            set vmax [$itk_component(max) value]
+        } else {
+            # use the field limits to calculate the contour list values
+            foreach { vmin vmax } $_limits($_curFldName) break
+        }
+
+        set v [blt::vector create \#auto]
+        $v seq $vmin $vmax [expr $_contourList(numLevels)+2]
+        $v delete end 0
+        set values [$v range 0 end]
+        blt::vector destroy $v
+    }
+    set _contourList(values) $values
+}
+
+itcl::body Rappture::VtkIsosurfaceViewer::SetCurrentFieldName { dataobj } {
+    set _first $dataobj
+    $itk_component(field) choices delete 0 end
+    $itk_component(fieldmenu) delete 0 end
+    array unset _fields
+    set _curFldName ""
+    foreach cname [$_first components] {
+        foreach fname [$_first fieldnames $cname] {
+            if { [info exists _fields($fname)] } {
+                continue
+            }
+            foreach { label units components } \
+                [$_first fieldinfo $fname] break
+            $itk_component(field) choices insert end "$fname" "$label"
+            $itk_component(fieldmenu) add radiobutton -label "$label" \
+                -value $label -variable [itcl::scope _curFldLabel] \
+                -selectcolor red \
+                -activebackground $itk_option(-plotbackground) \
+                -activeforeground $itk_option(-plotforeground) \
+                -font "Arial 8" \
+                -command [itcl::code $this LegendTitleAction save]
+            set _fields($fname) [list $label $units $components]
+            if { $_curFldName == "" } {
+                set _curFldName $fname
+                set _curFldLabel $label
+            }
+        }
+    }
+    $itk_component(field) value $_curFldLabel
+    if { $_settings(-customrange) } {
+        set limits [list [$itk_component(min) value] [$itk_component(max) value]]
+        SendCmd "dataset maprange explicit $limits $_curFldName"
+        if { $limits != $_currentLimits } {
+            set _currentLimits $limits
+            EventuallyChangeContourLevels
+        }
+    } else {
+        if { ![info exists _limits($_curFldName)] } {
+            SendCmd "dataset maprange all"
+        } else {
+            set limits $_limits($_curFldName)
+            SendCmd "dataset maprange explicit $limits $_curFldName"
+            if { $limits != $_currentLimits } {
+                set _currentLimits $limits
+                EventuallyChangeContourLevels
+            }
+        }
+    }
+}
Index: /tags/1.6.0/gui/scripts/vtkmeshviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/vtkmeshviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/vtkmeshviewer.tcl	(revision 6168)
@@ -0,0 +1,1587 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: vtkmeshviewer - Vtk mesh viewer
+#
+#  It connects to the Vtkvis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+#package require Img
+
+option add *VtkMeshViewer.width 4i widgetDefault
+option add *VtkMeshViewer*cursor crosshair widgetDefault
+option add *VtkMeshViewer.height 4i widgetDefault
+option add *VtkMeshViewer.foreground black widgetDefault
+option add *VtkMeshViewer.controlBackground gray widgetDefault
+option add *VtkMeshViewer.controlDarkBackground #999999 widgetDefault
+option add *VtkMeshViewer.plotBackground black widgetDefault
+option add *VtkMeshViewer.plotForeground white widgetDefault
+option add *VtkMeshViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc VtkMeshViewer_init_resources {} {
+    Rappture::resources::register \
+        vtkvis_server Rappture::VtkMeshViewer::SetServerList
+}
+
+itcl::class Rappture::VtkMeshViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "vtkvis" $namelist
+    }
+    public method add {dataobj {settings ""}}
+    public method camera {option args}
+    public method delete {args}
+    public method disconnect {}
+    public method download {option args}
+    public method get {args}
+    public method isconnected {}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method scale {args}
+
+    # The following methods are only used by this class.
+    private method AdjustSetting {what {value ""}}
+    private method BuildAxisTab {}
+    private method BuildCameraTab {}
+    private method BuildDownloadPopup { widget command }
+    private method BuildPolydataTab {}
+    private method Connect {}
+    private method CurrentDatasets {args}
+    private method Disconnect {}
+    private method DoResize {}
+    private method DoRotate {}
+    private method EventuallyResize { w h }
+    private method EventuallyRotate { q }
+    private method EventuallySetPolydataOpacity {}
+    private method GetImage { args }
+    private method GetVtkData { args }
+    private method InitSettings { args }
+    private method IsValidObject { dataobj }
+    private method Pan {option x y}
+    private method PanCamera {}
+    private method Pick {x y}
+    private method QuaternionToView { q } {
+        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
+    }
+    private method Rebuild {}
+    private method ReceiveDataset { args }
+    private method ReceiveImage { args }
+    private method Rotate {option x y}
+    private method SetObjectStyle { dataobj }
+    private method SetOrientation { side }
+    private method SetPolydataOpacity {}
+    private method ViewToQuaternion {} {
+        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
+    }
+    private method Zoom {option}
+
+    private variable _arcball ""
+    private variable _dlist "";         # list of data objects
+    private variable _obj2ovride;       # maps dataobj => style override
+    private variable _datasets;         # contains all the dataobj-component
+                                        # datasets in the server
+    private variable _click;            # info used for rotate operations
+    private variable _limits;           # autoscale min/max for all axes
+    private variable _view;             # view params for 3D view
+    private variable _settings
+    private variable _widget
+    private variable _reset 1;          # Connection to server has been reset.
+
+    private variable _first "";         # This is the topmost dataset.
+    private variable _start 0
+    private variable _title ""
+    private variable _width 0
+    private variable _height 0
+    private variable _resizePending 0
+    private variable _rotatePending 0
+    private variable _polydataOpacityPending 0
+    private variable _rotateDelay 150
+    private variable _opacityDelay 150
+
+    private common _downloadPopup;      # download options from popup
+    private common _hardcopy
+}
+
+itk::usual VtkMeshViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::constructor {args} {
+    set _serverType "vtkvis"
+
+    #DebugOn
+    EnableWaitDialog 900
+
+    # Rebuild event
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Rotate event
+    $_dispatcher register !rotate
+    $_dispatcher dispatch $this !rotate "[itcl::code $this DoRotate]; list"
+
+    # Polydata opacity event
+    $_dispatcher register !polydataOpacity
+    $_dispatcher dispatch $this !polydataOpacity \
+        "[itcl::code $this SetPolydataOpacity]; list"
+    #
+    # Populate parser with commands handle incoming requests
+    #
+    $_parser alias image [itcl::code $this ReceiveImage]
+    $_parser alias dataset [itcl::code $this ReceiveDataset]
+
+    # Initialize the view to some default parameters.
+    array set _view {
+        -ortho    0
+        -qw       0.853553
+        -qx       -0.353553
+        -qy       0.353553
+        -qz       0.146447
+        -xpan     0
+        -ypan     0
+        -zoom     1.0
+    }
+    set _arcball [blt::arcball create 100 100]
+    $_arcball quaternion [ViewToQuaternion]
+
+    array set _settings {
+        -axesvisible            1
+        -axislabels             1
+        -axisminorticks         1
+        -outline                0
+        -polydataedges          0
+        -polydatalighting       1
+        -polydataopacity        1.0
+        -polydatavisible        1
+        -polydatawireframe      0
+        -xgrid                  0
+        -ygrid                  0
+        -zgrid                  0
+    }
+    array set _widget {
+        -polydataopacity        100
+    }
+    itk_component add view {
+        canvas $itk_component(plotarea).view \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth -background
+    }
+
+    itk_component add fieldmenu {
+        menu $itk_component(plotarea).menu -bg black -fg white -relief flat \
+            -tearoff 0
+    } {
+        usual
+        ignore -background -foreground -relief -tearoff
+    }
+
+    set c $itk_component(view)
+    bind $c <Configure> [itcl::code $this EventuallyResize %w %h]
+    bind $c <4> [itcl::code $this Zoom in 0.25]
+    bind $c <5> [itcl::code $this Zoom out 0.25]
+    bind $c <KeyPress-Left>  [list %W xview scroll 10 units]
+    bind $c <KeyPress-Right> [list %W xview scroll -10 units]
+    bind $c <KeyPress-Up>    [list %W yview scroll 10 units]
+    bind $c <KeyPress-Down>  [list %W yview scroll -10 units]
+    bind $c <Enter> "focus %W"
+    bind $c <Control-F1> [itcl::code $this ToggleConsole]
+
+    # Fix the scrollregion in case we go off screen
+    $c configure -scrollregion [$c bbox all]
+
+    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
+    set _map(cwidth) -1
+    set _map(cheight) -1
+    set _map(zoom) 1.0
+    set _map(original) ""
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    BuildPolydataTab
+    BuildAxisTab
+    BuildCameraTab
+
+    # Hack around the Tk panewindow.  The problem is that the requested
+    # size of the 3d view isn't set until an image is retrieved from
+    # the server.  So the panewindow uses the tiny size.
+    set w 10000
+    pack forget $itk_component(view)
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth $w
+    blt::table configure $itk_component(plotarea) c1 -resize none
+
+    # Bindings for rotation via mouse
+    bind $itk_component(view) <ButtonPress-1> \
+        [itcl::code $this Rotate click %x %y]
+    bind $itk_component(view) <B1-Motion> \
+        [itcl::code $this Rotate drag %x %y]
+    bind $itk_component(view) <ButtonRelease-1> \
+        [itcl::code $this Rotate release %x %y]
+
+    # Bindings for panning via mouse
+    bind $itk_component(view) <ButtonPress-2> \
+        [itcl::code $this Pan click %x %y]
+    bind $itk_component(view) <B2-Motion> \
+        [itcl::code $this Pan drag %x %y]
+    bind $itk_component(view) <ButtonRelease-2> \
+        [itcl::code $this Pan release %x %y]
+
+    #bind $itk_component(view) <ButtonRelease-3> \
+    #    [itcl::code $this Pick %x %y]
+
+    # Bindings for panning via keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -2 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 2 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -2]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 2]
+
+    # Bindings for zoom via keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        # Bindings for zoom via mouse
+        bind $itk_component(view) <4> [itcl::code $this Zoom out]
+        bind $itk_component(view) <5> [itcl::code $this Zoom in]
+    }
+
+    set _image(download) [image create photo]
+
+    eval itk_initialize $args
+
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::destructor {} {
+    Disconnect
+    $_dispatcher cancel !rebuild
+    $_dispatcher cancel !resize
+    $_dispatcher cancel !rotate
+    image delete $_image(plot)
+    image delete $_image(download)
+    catch { blt::arcball destroy $_arcball }
+}
+
+itcl::body Rappture::VtkMeshViewer::DoResize {} {
+    if { $_width < 2 } {
+        set _width 500
+    }
+    if { $_height < 2 } {
+        set _height 500
+    }
+    set _start [clock clicks -milliseconds]
+    SendCmd "screen size $_width $_height"
+
+    set _resizePending 0
+}
+
+itcl::body Rappture::VtkMeshViewer::DoRotate {} {
+    SendCmd "camera orient [ViewToQuaternion]"
+    set _rotatePending 0
+}
+
+itcl::body Rappture::VtkMeshViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    $_arcball resize $w $h
+    if { !$_resizePending } {
+        set _resizePending 1
+        $_dispatcher event -after 200 !resize
+    }
+}
+
+itcl::body Rappture::VtkMeshViewer::EventuallyRotate { q } {
+    QuaternionToView $q
+    if { !$_rotatePending } {
+        set _rotatePending 1
+        $_dispatcher event -after $_rotateDelay !rotate
+    }
+}
+
+itcl::body Rappture::VtkMeshViewer::SetPolydataOpacity {} {
+    set _polydataOpacityPending 0
+    set val $_settings(-polydataopacity)
+    SendCmd "polydata opacity $val"
+}
+
+itcl::body Rappture::VtkMeshViewer::EventuallySetPolydataOpacity {} {
+    if { !$_polydataOpacityPending } {
+        set _polydataOpacityPending 1
+        $_dispatcher event -after $_opacityDelay !polydataOpacity
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::add {dataobj {settings ""}} {
+    array set params {
+        -color auto
+        -width 1
+        -linestyle solid
+        -brightness 0
+        -raise 0
+        -description ""
+        -param ""
+        -type ""
+    }
+    array set params $settings
+    set params(-description) ""
+    set params(-param) ""
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) black
+    }
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+    }
+    set _obj2ovride($dataobj-color) $params(-color)
+    set _obj2ovride($dataobj-width) $params(-width)
+    set _obj2ovride($dataobj-raise) $params(-raise)
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.  No data objects are
+# deleted.  They are only removed from the display list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::delete {args} {
+    if { [llength $args] == 0} {
+        set args $_dlist
+    }
+    # Delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if { $pos < 0 } {
+            continue;                   # Don't know anything about it.
+        }
+        # Remove it from the dataobj list.
+        set _dlist [lreplace $_dlist $pos $pos]
+        array unset _obj2ovride $dataobj-*
+        set changed 1
+    }
+    # If anything changed, then rebuild the plot
+    if { $changed } {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-objects?
+# USAGE: get ?-visible?
+# USAGE: get ?-image view?
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.  The optional "-image"
+# flag can also request the internal images being shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::get {args} {
+    if {[llength $args] == 0} {
+        set args "-objects"
+    }
+
+    set op [lindex $args 0]
+    switch -- $op {
+        "-objects" {
+            # put the dataobj list in order according to -raise options
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if {[info exists _obj2ovride($dataobj-raise)] &&
+                    $_obj2ovride($dataobj-raise)} {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        "-visible" {
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if { ![info exists _obj2ovride($dataobj-raise)] } {
+                    # No setting indicates that the object isn't visible.
+                    continue
+                }
+                # Otherwise use the -raise parameter to put the object to
+                # the front of the list.
+                if { $_obj2ovride($dataobj-raise) } {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        -image {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"get -image view\""
+            }
+            switch -- [lindex $args end] {
+                view {
+                    return $_image(plot)
+                }
+                default {
+                    error "bad image name \"[lindex $args end]\": should be view"
+                }
+            }
+        }
+        default {
+            error "bad option \"$op\": should be -objects or -image"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<data1> <data2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <data> objects.  This
+# accounts for all objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::scale {args} {
+    foreach dataobj $args {
+        if { ![$dataobj isvalid] } {
+            continue;                   # Object doesn't contain valid data.
+        }
+        foreach axis { x y z } {
+            set lim [$dataobj limits $axis]
+            if { ![info exists _limits($axis)] } {
+                set _limits($axis) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {amin amax} $_limits($axis) break
+            if { $amin > $min } {
+                set amin $min
+            }
+            if { $amax < $max } {
+                set amax $max
+            }
+            set _limits($axis) [list $amin $amax]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::download {option args} {
+    switch $option {
+        coming {
+            if {[catch {
+                blt::winop snap $itk_component(plotarea) $_image(download)
+            }]} {
+                $_image(download) configure -width 1 -height 1
+                $_image(download) put #000000
+            }
+        }
+        controls {
+            set popup .vtkviewerdownload
+            if { ![winfo exists .vtkviewerdownload] } {
+                set inner [BuildDownloadPopup $popup [lindex $args 0]]
+            } else {
+                set inner [$popup component inner]
+            }
+            set _downloadPopup(image_controls) $inner.image_frame
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks            ;# Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .vtkviewerdownload
+            if {[winfo exists .vtkviewerdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "image" {
+                    return [$this GetImage [lindex $args 0]]
+                }
+                "vtk" {
+                    return [$this GetVtkData [lindex $args 0]]
+                }
+            }
+            return ""
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Connect ?<host:port>,<host:port>...?
+#
+# Clients use this method to establish a connection to a new
+# server, or to reestablish a connection to the previous server.
+# Any existing connection is automatically closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::Connect {} {
+    global readyForNextFrame
+    set readyForNextFrame 1
+    set _hosts [GetServerList "vtkvis"]
+    if { "" == $_hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $_hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "vtkmeshviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        EventuallyResize $w $h
+    }
+    return $result
+}
+
+#
+# isconnected --
+#
+# Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::VtkMeshViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# disconnect --
+#
+itcl::body Rappture::VtkMeshViewer::disconnect {} {
+    Disconnect
+    set _reset 1
+}
+
+#
+# Disconnect --
+#
+# Clients use this method to disconnect from the current rendering server.
+#
+itcl::body Rappture::VtkMeshViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    # disconnected -- no more data sitting on server
+    array unset _datasets
+    global readyForNextFrame
+    set readyForNextFrame 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveImage -bytes <size> -type <type> -token <token>
+#
+# Invoked automatically whenever the "image" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::ReceiveImage { args } {
+    global readyForNextFrame
+    set readyForNextFrame 1
+    array set info {
+        -token "???"
+        -bytes 0
+        -type image
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    if { $info(-type) == "image" } {
+        if 0 {
+            set f [open "last.ppm" "w"]
+            fconfigure $f -encoding binary
+            puts -nonewline $f $bytes
+            close $f
+        }
+        $_image(plot) configure -data $bytes
+        set time [clock seconds]
+        set date [clock format $time]
+        if { $_start > 0 } {
+            set finish [clock clicks -milliseconds]
+            set _start 0
+        }
+    } elseif { $info(type) == "print" } {
+        set tag $this-print-$info(-token)
+        set _hardcopy($tag) $bytes
+    }
+}
+
+#
+# ReceiveDataset --
+#
+itcl::body Rappture::VtkMeshViewer::ReceiveDataset { args } {
+    if { ![isconnected] } {
+        return
+    }
+    set option [lindex $args 0]
+    switch -- $option {
+        "scalar" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z value tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y value tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "vector" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z vx vy vz tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y vx vy vz tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "names" {
+            foreach { name } [lindex $args 1] {
+                #puts stderr "Dataset: $name"
+            }
+        }
+        default {
+            error "unknown dataset option \"$option\" from server"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::Rebuild {} {
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $w < 2 || $h < 2 } {
+        update
+        $_dispatcher event -idle !rebuild
+        return
+    }
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (which automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+
+    if { $_reset } {
+        set _width $w
+        set _height $h
+        $_arcball resize $w $h
+        DoResize
+        InitSettings -xgrid -ygrid -zgrid -axismode \
+            -axesvisible -axislabels -axisminorticks
+        StopBufferingCommands
+        SendCmd "imgflush"
+        StartBufferingCommands
+    }
+
+    set _first ""
+    SendCmd "dataset visible 0"
+    set count 0
+    foreach dataobj [get -objects] {
+        if { [info exists _obj2ovride($dataobj-raise)] &&  $_first == "" } {
+            set _first $dataobj
+        }
+        set tag $dataobj
+        if { ![info exists _datasets($tag)] } {
+            set bytes [$dataobj vtkdata -full]
+            if { $bytes == "" } {
+                continue
+            }
+            if 0 {
+                set f [open /tmp/vtkmesh.vtk "w"]
+                fconfigure $f -translation binary -encoding binary
+                puts -nonewline $f $bytes
+                close $f
+            }
+            set length [string length $bytes]
+            if { $_reportClientInfo }  {
+                set info {}
+                lappend info "tool_id"       [$dataobj hints toolid]
+                lappend info "tool_name"     [$dataobj hints toolname]
+                lappend info "tool_title"    [$dataobj hints tooltitle]
+                lappend info "tool_command"  [$dataobj hints toolcommand]
+                lappend info "tool_revision" [$dataobj hints toolrevision]
+                lappend info "dataset_label" [$dataobj hints label]
+                lappend info "dataset_size"  $length
+                lappend info "dataset_tag"   $tag
+                SendCmd "clientinfo [list $info]"
+            }
+            SendCmd "dataset add $tag data follows $length"
+            SendData $bytes
+            set _datasets($tag) 1
+            SetObjectStyle $dataobj
+        }
+        if { [info exists _obj2ovride($dataobj-raise)] } {
+            SendCmd "dataset visible 1 $tag"
+            EventuallySetPolydataOpacity
+        }
+    }
+    if {"" != $_first} {
+        foreach axis { x y z } {
+            set label [$_first label ${axis}]
+            if { $label != "" } {
+                SendCmd [list axis name $axis $label]
+            }
+            set units [$_first units ${axis}]
+            if { $units != "" } {
+                SendCmd [list axis units $axis $units]
+            }
+        }
+    }
+    InitSettings -outline
+    if { $_reset } {
+        # These are settings that rely on a dataset being loaded.
+        InitSettings -polydataedges -polydatalighting -polydataopacity \
+            -polydatavisible -polydatawireframe
+
+        #SendCmd "axis lformat all %g"
+
+        $_arcball quaternion [ViewToQuaternion]
+        SendCmd "camera reset"
+        if { $_view(-ortho)} {
+            SendCmd "camera mode ortho"
+        } else {
+            SendCmd "camera mode persp"
+        }
+        DoRotate
+        PanCamera
+        Zoom reset
+    }
+
+    set _reset 0
+    global readyForNextFrame
+    set readyForNextFrame 0;            # Don't advance to the next frame
+                                        # until we get an image.
+
+    # Actually write the commands to the server socket.  If it fails, we don't
+    # care.  We're finished here.
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands
+    blt::busy release $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CurrentDatasets ?-all -visible? ?dataobjs?
+#
+# Returns a list of server IDs for the current datasets being displayed.  This
+# is normally a single ID, but it might be a list of IDs if the current data
+# object has multiple components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::CurrentDatasets {args} {
+    set flag [lindex $args 0]
+    switch -- $flag {
+        "-all" {
+            if { [llength $args] > 1 } {
+                error "CurrentDatasets: can't specify dataobj after \"-all\""
+            }
+            set dlist [get -objects]
+        }
+        "-visible" {
+            if { [llength $args] > 1 } {
+                set dlist {}
+                set args [lrange $args 1 end]
+                foreach dataobj $args {
+                    if { [info exists _obj2ovride($dataobj-raise)] } {
+                        lappend dlist $dataobj
+                    }
+                }
+            } else {
+                set dlist [get -visible]
+            }
+        }
+        default {
+            set dlist $args
+        }
+    }
+    set rlist ""
+    foreach tag $dlist {
+        if { [info exists _datasets($tag)] && $_datasets($tag) } {
+            lappend rlist $tag
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::Zoom {option} {
+    switch -- $option {
+        "in" {
+            set _view(-zoom) [expr {$_view(-zoom)*1.25}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "out" {
+            set _view(-zoom) [expr {$_view(-zoom)*0.8}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "reset" {
+            array set _view {
+                -qw      0.853553
+                -qx      -0.353553
+                -qy      0.353553
+                -qz      0.146447
+                -xpan    0
+                -ypan    0
+                -zoom    1.0
+            }
+            if { $_first != "" } {
+                set location [$_first hints camera]
+                if { $location != "" } {
+                    array set _view $location
+                }
+            }
+            $_arcball quaternion [ViewToQuaternion]
+            DoRotate
+            SendCmd "camera reset"
+        }
+    }
+}
+
+itcl::body Rappture::VtkMeshViewer::PanCamera {} {
+    set x $_view(-xpan)
+    set y $_view(-ypan)
+    SendCmd "camera pan $x $y"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::Rotate {option x y} {
+    switch -- $option {
+        "click" {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "drag" {
+            if {[array size _click] == 0} {
+                Rotate click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+                if { $dx == 0 && $dy == 0 } {
+                    return
+                }
+                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
+                EventuallyRotate $q
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        "release" {
+            Rotate drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
+
+itcl::body Rappture::VtkMeshViewer::Pick {x y} {
+    foreach tag [CurrentDatasets -visible] {
+        SendCmd "dataset getscalar pixel $x $y $tag"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::Pan {option x y} {
+    switch -- $option {
+        "set" {
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set x [expr $x / double($w)]
+            set y [expr $y / double($h)]
+            set _view(-xpan) [expr $_view(-xpan) + $x]
+            set _view(-ypan) [expr $_view(-ypan) + $y]
+            PanCamera
+            return
+        }
+        "click" {
+            set _click(x) $x
+            set _click(y) $y
+            $itk_component(view) configure -cursor hand1
+        }
+        "drag" {
+            if { ![info exists _click(x)] } {
+                set _click(x) $x
+            }
+            if { ![info exists _click(y)] } {
+                set _click(y) $y
+            }
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set dx [expr ($_click(x) - $x)/double($w)]
+            set dy [expr ($_click(y) - $y)/double($h)]
+            set _click(x) $x
+            set _click(y) $y
+            set _view(-xpan) [expr $_view(-xpan) - $dx]
+            set _view(-ypan) [expr $_view(-ypan) - $dy]
+            PanCamera
+        }
+        "release" {
+            Pan drag $x $y
+            $itk_component(view) configure -cursor ""
+        }
+        default {
+            error "unknown option \"$option\": should set, click, drag, or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitSettings <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkMeshViewer::InitSettings { args } {
+    foreach setting $args {
+        AdjustSetting $setting
+    }
+}
+
+#
+# AdjustSetting --
+#
+# Changes/updates a specific setting in the widget.  There are
+# usually user-setable option.  Commands are sent to the render
+# server.
+#
+itcl::body Rappture::VtkMeshViewer::AdjustSetting {what {value ""}} {
+    if { ![isconnected] } {
+        return
+    }
+    switch -- $what {
+        "-outline" {
+            set bool $_settings($what)
+            # Only display a outline for the currently visible sets.
+            SendCmd "outline visible 0"
+            foreach dataset [CurrentDatasets -visible] {
+                SendCmd "outline visible $bool $dataset"
+            }
+        }
+        "-polydataopacity" {
+            set _settings($what) [expr $_widget($what) * 0.01]
+            EventuallySetPolydataOpacity
+        }
+        "-polydatawireframe" {
+            set bool $_settings($what)
+            SendCmd "polydata wireframe $bool"
+        }
+        "-polydatavisible" {
+            set bool $_settings($what)
+            # Only change visibility of data sets marked "visible".
+            foreach dataset [CurrentDatasets -visible] {
+                SendCmd "polydata visible $bool $dataset"
+            }
+        }
+        "-polydatalighting" {
+            set bool $_settings($what)
+            SendCmd "polydata lighting $bool"
+        }
+        "-polydataedges" {
+            set bool $_settings($what)
+            SendCmd "polydata edges $bool"
+        }
+        "-axesvisible" {
+            set bool $_settings($what)
+            SendCmd "axis visible all $bool"
+        }
+        "-axislabels" {
+            set bool $_settings($what)
+            SendCmd "axis labels all $bool"
+        }
+        "-axisminorticks" {
+            set bool $_settings($what)
+            SendCmd "axis minticks all $bool"
+        }
+        "-xgrid" {
+            set bool $_settings($what)
+            SendCmd "axis grid x $bool"
+        }
+        "-ygrid" {
+            set bool $_settings($what)
+            SendCmd "axis grid y $bool"
+        }
+        "-zgrid" {
+            set bool $_settings($what)
+            SendCmd "axis grid z $bool"
+        }
+        "-axismode" {
+            set mode [$itk_component(axismode) value]
+            set mode [$itk_component(axismode) translate $mode]
+            SendCmd "axis flymode $mode"
+        }
+        default {
+            error "don't know how to fix $what"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkMeshViewer::plotbackground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotbackground)]
+        SendCmd "screen bgcolor $rgb"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkMeshViewer::plotforeground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotforeground)]
+        SendCmd "axis color all $rgb"
+        SendCmd "outline color $rgb"
+    }
+}
+
+itcl::body Rappture::VtkMeshViewer::BuildPolydataTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Mesh Settings" \
+        -icon [Rappture::icon mesh]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.mesh \
+        -text "Show Mesh" \
+        -variable [itcl::scope _settings(-polydatavisible)] \
+        -command [itcl::code $this AdjustSetting -polydatavisible] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.outline \
+        -text "Show Outline" \
+        -variable [itcl::scope _settings(-outline)] \
+        -command [itcl::code $this AdjustSetting -outline] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.wireframe \
+        -text "Show Wireframe" \
+        -variable [itcl::scope _settings(-polydatawireframe)] \
+        -command [itcl::code $this AdjustSetting -polydatawireframe] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(-polydatalighting)] \
+        -command [itcl::code $this AdjustSetting -polydatalighting] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.edges \
+        -text "Show Edges" \
+        -variable [itcl::scope _settings(-polydataedges)] \
+        -command [itcl::code $this AdjustSetting -polydataedges] \
+        -font "Arial 9" -anchor w
+
+    itk_component add field_l {
+        label $inner.field_l -text "Field" -font "Arial 9"
+    } {
+        ignore -font
+    }
+    itk_component add field {
+        Rappture::Combobox $inner.field -width 10 -editable 0
+    }
+    bind $inner.field <<Value>> \
+        [itcl::code $this AdjustSetting -field]
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9" -anchor w
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _widget(-polydataopacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -polydataopacity]
+    $inner.opacity set [expr $_settings(-polydataopacity) * 100.0]
+
+    blt::table $inner \
+        0,0 $inner.mesh      -cspan 2  -anchor w -pady 2 \
+        1,0 $inner.outline   -cspan 2  -anchor w -pady 2 \
+        2,0 $inner.wireframe -cspan 2  -anchor w -pady 2 \
+        3,0 $inner.lighting  -cspan 2  -anchor w -pady 2 \
+        4,0 $inner.edges     -cspan 2  -anchor w -pady 2 \
+        5,0 $inner.opacity_l -anchor w -pady 2 \
+        5,1 $inner.opacity   -fill x   -pady 2
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c1 -resize expand
+}
+
+itcl::body Rappture::VtkMeshViewer::BuildAxisTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Axis Settings" \
+        -icon [Rappture::icon axis2]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Axes" \
+        -variable [itcl::scope _settings(-axesvisible)] \
+        -command [itcl::code $this AdjustSetting -axesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.labels \
+        -text "Axis Labels" \
+        -variable [itcl::scope _settings(-axislabels)] \
+        -command [itcl::code $this AdjustSetting -axislabels] \
+        -font "Arial 9"
+    label $inner.grid_l -text "Grid" -font "Arial 9"
+    checkbutton $inner.xgrid \
+        -text "X" \
+        -variable [itcl::scope _settings(-xgrid)] \
+        -command [itcl::code $this AdjustSetting -xgrid] \
+        -font "Arial 9"
+    checkbutton $inner.ygrid \
+        -text "Y" \
+        -variable [itcl::scope _settings(-ygrid)] \
+        -command [itcl::code $this AdjustSetting -ygrid] \
+        -font "Arial 9"
+    checkbutton $inner.zgrid \
+        -text "Z" \
+        -variable [itcl::scope _settings(-zgrid)] \
+        -command [itcl::code $this AdjustSetting -zgrid] \
+        -font "Arial 9"
+    checkbutton $inner.minorticks \
+        -text "Minor Ticks" \
+        -variable [itcl::scope _settings(-axisminorticks)] \
+        -command [itcl::code $this AdjustSetting -axisminorticks] \
+        -font "Arial 9"
+
+    label $inner.mode_l -text "Mode" -font "Arial 9"
+
+    itk_component add axismode {
+        Rappture::Combobox $inner.mode -width 10 -editable 0
+    }
+    $inner.mode choices insert end \
+        "static_triad"    "static" \
+        "closest_triad"   "closest" \
+        "furthest_triad"  "farthest" \
+        "outer_edges"     "outer"
+    $itk_component(axismode) value "static"
+    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -axismode]
+
+    blt::table $inner \
+        0,0 $inner.visible -anchor w -cspan 4 \
+        1,0 $inner.labels  -anchor w -cspan 4 \
+        2,0 $inner.minorticks  -anchor w -cspan 4 \
+        4,0 $inner.grid_l  -anchor w \
+        4,1 $inner.xgrid   -anchor w \
+        4,2 $inner.ygrid   -anchor w \
+        4,3 $inner.zgrid   -anchor w \
+        5,0 $inner.mode_l  -anchor w -padx { 2 0 } \
+        5,1 $inner.mode    -fill x   -cspan 3
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c6 -resize expand
+    blt::table configure $inner r3 -height 0.125i
+}
+
+itcl::body Rappture::VtkMeshViewer::BuildCameraTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Camera Settings" \
+        -icon [Rappture::icon camera]]
+    $inner configure -borderwidth 4
+
+    label $inner.view_l -text "view" -font "Arial 9"
+    set f [frame $inner.view]
+    foreach side { front back left right top bottom } {
+        button $f.$side  -image [Rappture::icon view$side] \
+            -command [itcl::code $this SetOrientation $side]
+        Rappture::Tooltip::for $f.$side "Change the view to $side"
+        pack $f.$side -side left
+    }
+
+    blt::table $inner \
+        0,0 $inner.view_l -anchor e -pady 2 \
+        0,1 $inner.view -anchor w -pady 2
+    blt::table configure $inner r0 -resize none
+
+    set labels { qx qy qz qw xpan ypan zoom }
+    set row 1
+    foreach tag $labels {
+        label $inner.${tag}label -text $tag -font "Arial 9"
+        entry $inner.${tag} -font "Arial 9"  -bg white \
+            -textvariable [itcl::scope _view(-$tag)]
+        bind $inner.${tag} <Return> \
+            [itcl::code $this camera set -${tag}]
+        bind $inner.${tag} <KP_Enter> \
+            [itcl::code $this camera set -${tag}]
+        blt::table $inner \
+            $row,0 $inner.${tag}label -anchor e -pady 2 \
+            $row,1 $inner.${tag} -anchor w -pady 2
+        blt::table configure $inner r$row -resize none
+        incr row
+    }
+    checkbutton $inner.ortho \
+        -text "Orthographic Projection" \
+        -variable [itcl::scope _view(-ortho)] \
+        -command [itcl::code $this camera set -ortho] \
+        -font "Arial 9"
+    blt::table $inner \
+            $row,0 $inner.ortho -cspan 2 -anchor w -pady 2
+    blt::table configure $inner r$row -resize none
+    incr row
+
+    blt::table configure $inner c* -resize none
+    blt::table configure $inner c2 -resize expand
+    blt::table configure $inner r$row -resize expand
+}
+
+#
+# camera --
+#
+itcl::body Rappture::VtkMeshViewer::camera {option args} {
+    switch -- $option {
+        "show" {
+            puts [array get _view]
+        }
+        "set" {
+            set what [lindex $args 0]
+            set x $_view($what)
+            set code [catch { string is double $x } result]
+            if { $code != 0 || !$result } {
+                return
+            }
+            switch -- $what {
+                "-ortho" {
+                    if {$_view($what)} {
+                        SendCmd "camera mode ortho"
+                    } else {
+                        SendCmd "camera mode persp"
+                    }
+                }
+                "-xpan" - "-ypan" {
+                    PanCamera
+                }
+                "-qx" - "-qy" - "-qz" - "-qw" {
+                    set q [ViewToQuaternion]
+                    $_arcball quaternion $q
+                    EventuallyRotate $q
+                }
+                "-zoom" {
+                    SendCmd "camera zoom $_view($what)"
+                }
+            }
+        }
+    }
+}
+
+itcl::body Rappture::VtkMeshViewer::GetVtkData { args } {
+    set bytes ""
+    foreach dataobj [get] {
+        set contents [$dataobj vtkdata -full]
+        append bytes "$contents\n"
+    }
+    return [list .vtk $bytes]
+}
+
+itcl::body Rappture::VtkMeshViewer::GetImage { args } {
+    if { [image width $_image(download)] > 0 &&
+         [image height $_image(download)] > 0 } {
+        set bytes [$_image(download) data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        return [list .jpg $bytes]
+    }
+    return ""
+}
+
+itcl::body Rappture::VtkMeshViewer::BuildDownloadPopup { popup command } {
+    Rappture::Balloon $popup \
+        -title "[Rappture::filexfer::label downloadWord] as..."
+    set inner [$popup component inner]
+    label $inner.summary -text "" -anchor w
+    radiobutton $inner.vtk_button -text "VTK data file" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Helvetica 9 " \
+        -value vtk
+    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
+    radiobutton $inner.image_button -text "Image File" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -value image
+    Rappture::Tooltip::for $inner.image_button \
+        "Save as digital image."
+
+    button $inner.ok -text "Save" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command $command \
+        -compound left \
+        -image [Rappture::icon download]
+
+    button $inner.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command [list $popup deactivate] \
+        -compound left \
+        -image [Rappture::icon cancel]
+
+    blt::table $inner \
+        0,0 $inner.summary -cspan 2  \
+        1,0 $inner.vtk_button -anchor w -cspan 2 -padx { 4 0 } \
+        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
+        4,1 $inner.cancel -width .9i -fill y \
+        4,0 $inner.ok -padx 2 -width .9i -fill y
+    blt::table configure $inner r3 -height 4
+    blt::table configure $inner r4 -pady 4
+    raise $inner.image_button
+    $inner.vtk_button invoke
+    return $inner
+}
+
+itcl::body Rappture::VtkMeshViewer::SetObjectStyle { dataobj } {
+    # Parse style string.
+    set tag $dataobj
+    set type [$dataobj type]
+
+    array set style {
+        -cloudstyle mesh
+        -color white
+        -edgecolor black
+        -edges 1
+        -lighting 1
+        -linewidth 1.0
+        -opacity 1.0
+        -outline 0
+        -visible 1
+        -wireframe 0
+    }
+    if {$type == "cloud"} {
+        set style(-cloudstyle) points
+        set style(-edges) 0
+        set style(-edgecolor) white
+    }
+    array set style [$dataobj hints style]
+
+    if {[$dataobj hints color] != ""} {
+        set style(-color) [$dataobj hints color]
+    }
+    SendCmd "outline add $tag"
+    SendCmd "outline color [Color2RGB $style(-color)] $tag"
+    SendCmd "outline visible $style(-outline) $tag"
+    set _settings(-outline) $style(-outline)
+
+    SendCmd "polydata add $tag"
+    SendCmd "polydata visible $style(-visible) $tag"
+    set _settings(-polydatavisible) $style(-visible)
+    SendCmd "polydata cloudstyle $style(-cloudstyle) $tag"
+    SendCmd "polydata edges $style(-edges) $tag"
+    set _settings(-polydataedges) $style(-edges)
+    SendCmd "polydata color [Color2RGB $style(-color)] $tag"
+    SendCmd "polydata lighting $style(-lighting) $tag"
+    set _settings(-polydatalighting) $style(-lighting)
+    SendCmd "polydata linecolor [Color2RGB $style(-edgecolor)] $tag"
+    SendCmd "polydata linewidth $style(-linewidth) $tag"
+    SendCmd "polydata opacity $style(-opacity) $tag"
+    set _settings(-polydataopacity) $style(-opacity)
+    set _widget(-polydataopacity) [expr 100.0 * $style(-opacity)]
+    SendCmd "polydata wireframe $style(-wireframe) $tag"
+    set _settings(-polydatawireframe) $style(-wireframe)
+    set havePolyData 1
+}
+
+itcl::body Rappture::VtkMeshViewer::IsValidObject { dataobj } {
+    if {[catch {$dataobj isa Rappture::Mesh} valid] != 0 || !$valid} {
+        return 0
+    }
+    return 1
+}
+
+itcl::body Rappture::VtkMeshViewer::SetOrientation { side } {
+    array set positions {
+        front "1 0 0 0"
+        back  "0 0 1 0"
+        left  "0.707107 0 -0.707107 0"
+        right "0.707107 0 0.707107 0"
+        top   "0.707107 -0.707107 0 0"
+        bottom "0.707107 0.707107 0 0"
+    }
+    foreach name { -qw -qx -qy -qz } value $positions($side) {
+        set _view($name) $value
+    }
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    set _view(-xpan) 0
+    set _view(-ypan) 0
+    set _view(-zoom) 1.0
+}
Index: /tags/1.6.0/gui/scripts/vtkstreamlinesviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/vtkstreamlinesviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/vtkstreamlinesviewer.tcl	(revision 6168)
@@ -0,0 +1,2423 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: vtkstreamlinesviewer - Vtk streamlines object viewer
+#
+#  It connects to the Vtkvis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+package require Img
+
+option add *VtkStreamlinesViewer.width 4i widgetDefault
+option add *VtkStreamlinesViewer*cursor crosshair widgetDefault
+option add *VtkStreamlinesViewer.height 4i widgetDefault
+option add *VtkStreamlinesViewer.foreground black widgetDefault
+option add *VtkStreamlinesViewer.controlBackground gray widgetDefault
+option add *VtkStreamlinesViewer.controlDarkBackground #999999 widgetDefault
+option add *VtkStreamlinesViewer.plotBackground black widgetDefault
+option add *VtkStreamlinesViewer.plotForeground white widgetDefault
+option add *VtkStreamlinesViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc VtkStreamlinesViewer_init_resources {} {
+    Rappture::resources::register \
+        vtkvis_server Rappture::VtkStreamlinesViewer::SetServerList
+}
+
+itcl::class Rappture::VtkStreamlinesViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "vtkvis" $namelist
+    }
+    public method add {dataobj {settings ""}}
+    public method camera {option args}
+    public method delete {args}
+    public method disconnect {}
+    public method download {option args}
+    public method get {args}
+    public method isconnected {}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method scale {args}
+
+    # The following methods are only used by this class.
+    private method AdjustSetting {what {value ""}}
+    private method BuildAxisTab {}
+    private method BuildCameraTab {}
+    private method BuildColormap { name }
+    private method BuildCutplanesTab {}
+    private method BuildDownloadPopup { widget command }
+    private method BuildStreamsTab {}
+    private method BuildSurfaceTab {}
+    private method DrawLegend {}
+    private method Combo { option }
+    private method Connect {}
+    private method CurrentDatasets {args}
+    private method Disconnect {}
+    private method DoResize {}
+    private method DoReseed {}
+    private method DoRotate {}
+    private method EnterLegend { x y }
+    private method EventuallyResize { w h }
+    private method EventuallyReseed { numPoints }
+    private method EventuallyRotate { q }
+    private method EventuallySetCutplane { axis args }
+    private method GetImage { args }
+    private method GetVtkData { args }
+    private method InitSettings { args }
+    private method IsValidObject { dataobj }
+    private method LeaveLegend {}
+    private method MotionLegend { x y }
+    private method Pan {option x y}
+    private method PanCamera {}
+    private method Pick {x y}
+    private method QuaternionToView { q } {
+        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
+    }
+    private method Rebuild {}
+    private method ReceiveDataset { args }
+    private method ReceiveImage { args }
+    private method ReceiveLegend { colormap title vmin vmax size }
+    private method RequestLegend {}
+    private method Rotate {option x y}
+    private method SetCurrentColormap { color }
+    private method SetLegendTip { x y }
+    private method SetObjectStyle { dataobj comp }
+    private method Slice {option args}
+    private method SetOrientation { side }
+    private method ViewToQuaternion {} {
+        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
+    }
+    private method Zoom {option}
+
+    private variable _arcball ""
+
+    private variable _dlist ""     ;    # list of data objects
+    private variable _obj2ovride   ;    # maps dataobj => style override
+    private variable _datasets     ;    # contains all the dataobj-component
+                                   ;    # datasets in the server
+    private variable _colormaps    ;    # contains all the colormaps
+                                   ;    # in the server.
+    private variable _currentColormap ""
+
+    private variable _click        ;    # info used for rotate operations
+    private variable _limits       ;    # autoscale min/max for all axes
+    private variable _view         ;    # view params for 3D view
+    private variable _settings
+    private variable _reset 1;          # Connection to server has been reset.
+
+    private variable _first ""     ;    # This is the topmost dataset.
+    private variable _start 0
+    private variable _title ""
+    private variable _seeds
+    private variable _width 0
+    private variable _height 0
+    private variable _resizePending 0
+    private variable _legendPending 0
+    private variable _reseedPending 0
+    private variable _rotatePending 0
+    private variable _cutplanePending 0
+    private variable _fields
+    private variable _curFldName ""
+    private variable _curFldLabel ""
+    private variable _field      ""
+    private variable _numSeeds 200
+    private variable _colorMode "vmag";#  Mode of colormap (vmag or scalar)
+
+    private common _downloadPopup;      # download options from popup
+    private common _hardcopy
+}
+
+itk::usual VtkStreamlinesViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::constructor {args} {
+    set _serverType "vtkvis"
+
+    #DebugOn
+    EnableWaitDialog 2000
+
+    # Rebuild event
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Legend event
+    $_dispatcher register !legend
+    $_dispatcher dispatch $this !legend "[itcl::code $this RequestLegend]; list"
+
+    # Reseed event
+    $_dispatcher register !reseed
+    $_dispatcher dispatch $this !reseed "[itcl::code $this DoReseed]; list"
+
+    # Rotate event
+    $_dispatcher register !rotate
+    $_dispatcher dispatch $this !rotate "[itcl::code $this DoRotate]; list"
+
+    # X-Cutplane event
+    $_dispatcher register !xcutplane
+    $_dispatcher dispatch $this !xcutplane \
+        "[itcl::code $this AdjustSetting -xcutplaneposition]; list"
+
+    # Y-Cutplane event
+    $_dispatcher register !ycutplane
+    $_dispatcher dispatch $this !ycutplane \
+        "[itcl::code $this AdjustSetting -ycutplaneposition]; list"
+
+    # Z-Cutplane event
+    $_dispatcher register !zcutplane
+    $_dispatcher dispatch $this !zcutplane \
+        "[itcl::code $this AdjustSetting -zcutplaneposition]; list"
+
+    #
+    # Populate parser with commands handle incoming requests
+    #
+    $_parser alias image [itcl::code $this ReceiveImage]
+    $_parser alias legend [itcl::code $this ReceiveLegend]
+    $_parser alias dataset [itcl::code $this ReceiveDataset]
+
+    # Initialize the view to some default parameters.
+    array set _view {
+        -ortho    0
+        -qw       0.853553
+        -qx       -0.353553
+        -qy       0.353553
+        -qz       0.146447
+        -xpan     0
+        -ypan     0
+        -zoom     1.0
+    }
+    set _arcball [blt::arcball create 100 100]
+    $_arcball quaternion [ViewToQuaternion]
+
+    array set _settings {
+        -axesvisible              1
+        -axislabelsvisible        1
+        -axisminorticks           1
+        -axismode                 "static"
+        -cutplaneedges            0
+        -cutplanelighting         1
+        -cutplaneopacity          100
+        -cutplanesvisible         0
+        -cutplanewireframe        0
+        -legendvisible            1
+        -streamlineslighting      1
+        -streamlinesmode          lines
+        -streamlinesnumseeds      200
+        -streamlinesopacity       100
+        -streamlineslength        70
+        -streamlinesseedsvisible  0
+        -streamlinesvisible       1
+        -surfaceedges             0
+        -surfacelighting          1
+        -surfaceopacity           40
+        -surfacevisible           1
+        -surfacewireframe         0
+        -xcutplaneposition        50
+        -xcutplanevisible         1
+        -xgrid                    0
+        -ycutplaneposition        50
+        -ycutplanevisible         1
+        -ygrid                    0
+        -zcutplaneposition        50
+        -zcutplanevisible         1
+        -zgrid                    0
+    }
+
+    itk_component add view {
+        canvas $itk_component(plotarea).view \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth -background
+    }
+
+    itk_component add fieldmenu {
+        menu $itk_component(plotarea).menu -bg black -fg white -relief flat \
+            -tearoff 0
+    } {
+        usual
+        ignore -background -foreground -relief -tearoff
+    }
+    set c $itk_component(view)
+    bind $c <Configure> [itcl::code $this EventuallyResize %w %h]
+    bind $c <4> [itcl::code $this Zoom in 0.25]
+    bind $c <5> [itcl::code $this Zoom out 0.25]
+    bind $c <KeyPress-Left>  [list %W xview scroll 10 units]
+    bind $c <KeyPress-Right> [list %W xview scroll -10 units]
+    bind $c <KeyPress-Up>    [list %W yview scroll 10 units]
+    bind $c <KeyPress-Down>  [list %W yview scroll -10 units]
+    bind $c <Enter> "focus %W"
+    bind $c <Control-F1> [itcl::code $this ToggleConsole]
+
+    # Fix the scrollregion in case we go off screen
+    $c configure -scrollregion [$c bbox all]
+
+    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
+    set _map(cwidth) -1
+    set _map(cheight) -1
+    set _map(zoom) 1.0
+    set _map(original) ""
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(reset) "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    itk_component add surface {
+        Rappture::PushButton $f.surface \
+            -onimage [Rappture::icon volume-on] \
+            -offimage [Rappture::icon volume-off] \
+            -variable [itcl::scope _settings(-surfacevisible)] \
+            -command [itcl::code $this AdjustSetting -surfacevisible]
+    }
+    $itk_component(surface) select
+    Rappture::Tooltip::for $itk_component(surface) \
+        "Show/Hide the boundary surface"
+    pack $itk_component(surface) -padx 2 -pady 2
+
+    itk_component add streamlines {
+        Rappture::PushButton $f.streamlines \
+            -onimage [Rappture::icon streamlines-on] \
+            -offimage [Rappture::icon streamlines-off] \
+            -variable [itcl::scope _settings(-streamlinesvisible)] \
+            -command [itcl::code $this AdjustSetting -streamlinesvisible] \
+    }
+    $itk_component(streamlines) select
+    Rappture::Tooltip::for $itk_component(streamlines) \
+        "Show/Hide the streamlines"
+    pack $itk_component(streamlines) -padx 2 -pady 2
+
+    itk_component add cutplane {
+        Rappture::PushButton $f.cutplane \
+            -onimage [Rappture::icon cutbutton] \
+            -offimage [Rappture::icon cutbutton] \
+            -variable [itcl::scope _settings(-cutplanesvisible)] \
+            -command [itcl::code $this AdjustSetting -cutplanesvisible]
+    }
+    Rappture::Tooltip::for $itk_component(cutplane) \
+        "Show/Hide the cutplanes"
+    pack $itk_component(cutplane) -padx 2 -pady 2
+
+    if { [catch {
+        BuildSurfaceTab
+        BuildStreamsTab
+        BuildCutplanesTab
+        BuildAxisTab
+        BuildCameraTab
+    } errs] != 0 } {
+        puts stderr errs=$errs
+    }
+    # Legend
+
+    set _image(legend) [image create photo]
+    itk_component add legend {
+        canvas $itk_component(plotarea).legend -width 50 -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -plotbackground plotBackground Background
+    }
+
+    # Hack around the Tk panewindow.  The problem is that the requested
+    # size of the 3d view isn't set until an image is retrieved from
+    # the server.  So the panewindow uses the tiny size.
+    set w 10000
+    pack forget $itk_component(view)
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth $w
+    blt::table configure $itk_component(plotarea) c1 -resize none
+
+    # Bindings for rotation via mouse
+    bind $itk_component(view) <ButtonPress-1> \
+        [itcl::code $this Rotate click %x %y]
+    bind $itk_component(view) <B1-Motion> \
+        [itcl::code $this Rotate drag %x %y]
+    bind $itk_component(view) <ButtonRelease-1> \
+        [itcl::code $this Rotate release %x %y]
+
+    # Bindings for panning via mouse
+    bind $itk_component(view) <ButtonPress-2> \
+        [itcl::code $this Pan click %x %y]
+    bind $itk_component(view) <B2-Motion> \
+        [itcl::code $this Pan drag %x %y]
+    bind $itk_component(view) <ButtonRelease-2> \
+        [itcl::code $this Pan release %x %y]
+
+    #bind $itk_component(view) <ButtonRelease-3> \
+    #    [itcl::code $this Pick %x %y]
+
+    # Bindings for panning via keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -2 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 2 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -2]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 2]
+
+    # Bindings for zoom via keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        # Bindings for zoom via mouse
+        bind $itk_component(view) <4> [itcl::code $this Zoom out]
+        bind $itk_component(view) <5> [itcl::code $this Zoom in]
+    }
+
+    set _image(download) [image create photo]
+
+    eval itk_initialize $args
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::destructor {} {
+    Disconnect
+    image delete $_image(plot)
+    image delete $_image(download)
+    catch { blt::arcball destroy $_arcball }
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::DoResize {} {
+    if { $_width < 2 } {
+        set _width 500
+    }
+    if { $_height < 2 } {
+        set _height 500
+    }
+    set _start [clock clicks -milliseconds]
+    SendCmd "screen size $_width $_height"
+
+    set _legendPending 1
+    set _resizePending 0
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::DoRotate {} {
+    SendCmd "camera orient [ViewToQuaternion]"
+    set _rotatePending 0
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::DoReseed {} {
+    foreach dataset [CurrentDatasets -visible] {
+        foreach {dataobj comp} [split $dataset -] break
+        # This command works for either random or fmesh seeds
+        SendCmd "streamlines seed numpts $_numSeeds $dataset"
+    }
+    set _reseedPending 0
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    $_arcball resize $w $h
+    if { !$_resizePending } {
+        set _resizePending 1
+        $_dispatcher event -after 400 !resize
+    }
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::EventuallyReseed { numPoints } {
+    set _numSeeds $numPoints
+    if { !$_reseedPending } {
+        set _reseedPending 1
+        $_dispatcher event -after 600 !reseed
+    }
+}
+
+set rotate_delay 100
+
+itcl::body Rappture::VtkStreamlinesViewer::EventuallyRotate { q } {
+    QuaternionToView $q
+    if { !$_rotatePending } {
+        set _rotatePending 1
+        global rotate_delay
+        $_dispatcher event -after $rotate_delay !rotate
+    }
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::EventuallySetCutplane { axis args } {
+    if { !$_cutplanePending } {
+        set _cutplanePending 1
+        $_dispatcher event -after 100 !${axis}cutplane
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::add {dataobj {settings ""}} {
+    array set params {
+        -color auto
+        -width 1
+        -linestyle solid
+        -brightness 0
+        -raise 0
+        -description ""
+        -param ""
+        -type ""
+    }
+    array set params $settings
+    set params(-description) ""
+    set params(-param) ""
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) black
+    }
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+    }
+    set _obj2ovride($dataobj-color) $params(-color)
+    set _obj2ovride($dataobj-width) $params(-width)
+    set _obj2ovride($dataobj-raise) $params(-raise)
+    $_dispatcher event -idle !rebuild
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.  No data objects are
+# deleted.  They are only removed from the display list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::delete {args} {
+    if { [llength $args] == 0} {
+        set args $_dlist
+    }
+    # Delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if { $pos < 0 } {
+            continue;                   # Don't know anything about it.
+        }
+        # Remove it from the dataobj list.
+        set _dlist [lreplace $_dlist $pos $pos]
+        array unset _obj2ovride $dataobj-*
+        array unset _settings $dataobj-*
+        set changed 1
+    }
+    # If anything changed, then rebuild the plot
+    if { $changed } {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-objects?
+# USAGE: get ?-visible?
+# USAGE: get ?-image view?
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.  The optional "-image"
+# flag can also request the internal images being shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::get {args} {
+    if {[llength $args] == 0} {
+        set args "-objects"
+    }
+
+    set op [lindex $args 0]
+    switch -- $op {
+        "-objects" {
+            # put the dataobj list in order according to -raise options
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if {[info exists _obj2ovride($dataobj-raise)] &&
+                    $_obj2ovride($dataobj-raise)} {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        "-visible" {
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if { ![info exists _obj2ovride($dataobj-raise)] } {
+                    # No setting indicates that the object isn't visible.
+                    continue
+                }
+                # Otherwise use the -raise parameter to put the object to
+                # the front of the list.
+                if { $_obj2ovride($dataobj-raise) } {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        -image {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"get -image view\""
+            }
+            switch -- [lindex $args end] {
+                view {
+                    return $_image(plot)
+                }
+                default {
+                    error "bad image name \"[lindex $args end]\": should be view"
+                }
+            }
+        }
+        default {
+            error "bad option \"$op\": should be -objects or -image"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<data1> <data2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <data> objects.  This
+# accounts for all objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::scale {args} {
+    foreach dataobj $args {
+        foreach axis { x y z } {
+            set lim [$dataobj limits $axis]
+            if { ![info exists _limits($axis)] } {
+                set _limits($axis) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {amin amax} $_limits($axis) break
+            if { $amin > $min } {
+                set amin $min
+            }
+            if { $amax < $max } {
+                set amax $max
+            }
+            set _limits($axis) [list $amin $amax]
+        }
+        foreach { fname lim } [$dataobj fieldlimits] {
+            if { ![info exists _limits($fname)] } {
+                set _limits($fname) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {fmin fmax} $_limits($fname) break
+            if { $fmin > $min } {
+                set fmin $min
+            }
+            if { $fmax < $max } {
+                set fmax $max
+            }
+            set _limits($fname) [list $fmin $fmax]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::download {option args} {
+    switch $option {
+        coming {
+            if {[catch {
+                blt::winop snap $itk_component(plotarea) $_image(download)
+            }]} {
+                $_image(download) configure -width 1 -height 1
+                $_image(download) put #000000
+            }
+        }
+        controls {
+            set popup .vtkviewerdownload
+            if { ![winfo exists .vtkviewerdownload] } {
+                set inner [BuildDownloadPopup $popup [lindex $args 0]]
+            } else {
+                set inner [$popup component inner]
+            }
+            set _downloadPopup(image_controls) $inner.image_frame
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks            ;# Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .vtkviewerdownload
+            if {[winfo exists .vtkviewerdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "image" {
+                    return [$this GetImage [lindex $args 0]]
+                }
+                "vtk" {
+                    return [$this GetVtkData [lindex $args 0]]
+                }
+            }
+            return ""
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Connect ?<host:port>,<host:port>...?
+#
+# Clients use this method to establish a connection to a new
+# server, or to reestablish a connection to the previous server.
+# Any existing connection is automatically closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::Connect {} {
+    set _hosts [GetServerList "vtkvis"]
+    if { "" == $_hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $_hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "vtkstreamlinesviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        EventuallyResize $w $h
+    }
+    return $result
+}
+
+#
+# isconnected --
+#
+# Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::VtkStreamlinesViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# disconnect --
+#
+itcl::body Rappture::VtkStreamlinesViewer::disconnect {} {
+    Disconnect
+    set _reset 1
+}
+
+#
+# Disconnect --
+#
+# Clients use this method to disconnect from the current rendering server.
+#
+itcl::body Rappture::VtkStreamlinesViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    $_dispatcher cancel !rebuild
+    $_dispatcher cancel !resize
+    $_dispatcher cancel !reseed
+    $_dispatcher cancel !rotate
+    $_dispatcher cancel !xcutplane
+    $_dispatcher cancel !ycutplane
+    $_dispatcher cancel !zcutplane
+    $_dispatcher cancel !legend
+    # disconnected -- no more data sitting on server
+    array unset _datasets
+    array unset _colormaps
+    array unset _seeds
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveImage -bytes <size> -type <type> -token <token>
+#
+# Invoked automatically whenever the "image" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::ReceiveImage { args } {
+    array set info {
+        -token "???"
+        -bytes 0
+        -type image
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    if { $info(-type) == "image" } {
+        if 0 {
+            set f [open "last.ppm" "w"]
+            fconfigure $f -encoding binary
+            puts -nonewline $f $bytes
+            close $f
+        }
+        $_image(plot) configure -data $bytes
+        set time [clock seconds]
+        set date [clock format $time]
+        #puts stderr "$date: received image [image width $_image(plot)]x[image height $_image(plot)] image>"
+        if { $_start > 0 } {
+            set finish [clock clicks -milliseconds]
+            #puts stderr "round trip time [expr $finish -$_start] milliseconds"
+            set _start 0
+        }
+    } elseif { $info(type) == "print" } {
+        set tag $this-print-$info(-token)
+        set _hardcopy($tag) $bytes
+    }
+    if { $_legendPending } {
+        RequestLegend
+    }
+}
+
+#
+# ReceiveDataset --
+#
+itcl::body Rappture::VtkStreamlinesViewer::ReceiveDataset { args } {
+    if { ![isconnected] } {
+        return
+    }
+    set option [lindex $args 0]
+    switch -- $option {
+        "scalar" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z value tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y value tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "vector" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z vx vy vz tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y vx vy vz tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "names" {
+            foreach { name } [lindex $args 1] {
+                #puts stderr "Dataset: $name"
+            }
+        }
+        default {
+            error "unknown dataset option \"$option\" from server"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::Rebuild {} {
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $w < 2 || $h < 2 } {
+        update
+        $_dispatcher event -idle !rebuild
+        return
+    }
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (which automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+    set _legendPending 1
+
+    set _first ""
+    if { $_reset } {
+        set _width $w
+        set _height $h
+        $_arcball resize $w $h
+        DoResize
+        InitSettings -xgrid -ygrid -zgrid -axismode \
+            -axesvisible -axislabelsvisible -axisminorticks
+        # This "imgflush" is to force an image returned before vtkvis starts
+        # reading a (big) dataset.  This will display an empty plot with axes
+        # at the correct image size.
+        SendCmd "imgflush"
+    }
+
+    set _first ""
+    SendCmd "dataset visible 0"
+    foreach dataobj [get -objects] {
+        if { [info exists _obj2ovride($dataobj-raise)] &&  $_first == "" } {
+            set _first $dataobj
+        }
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { ![info exists _datasets($tag)] } {
+                set bytes [$dataobj vtkdata $comp]
+                set length [string length $bytes]
+                if 0 {
+                    set f [open /tmp/vtkstreamlines.vtk "w"]
+                    fconfigure $f -translation binary -encoding binary
+                    puts -nonewline $f $bytes
+                    close $f
+                }
+                if { $_reportClientInfo }  {
+                    set info {}
+                    lappend info "tool_id"       [$dataobj hints toolid]
+                    lappend info "tool_name"     [$dataobj hints toolname]
+                    lappend info "tool_title"    [$dataobj hints tooltitle]
+                    lappend info "tool_command"  [$dataobj hints toolcommand]
+                    lappend info "tool_revision" [$dataobj hints toolrevision]
+                    lappend info "dataset_label" [$dataobj hints label]
+                    lappend info "dataset_size"  $length
+                    lappend info "dataset_tag"   $tag
+                    SendCmd "clientinfo [list $info]"
+                }
+                SendCmd "dataset add $tag data follows $length"
+                SendData $bytes
+                set _datasets($tag) 1
+                SetObjectStyle $dataobj $comp
+            }
+            if { [info exists _obj2ovride($dataobj-raise)] } {
+                SendCmd "dataset visible 1 $tag"
+            }
+        }
+    }
+    if {"" != $_first} {
+        foreach axis { x y z } {
+            set label [$_first hints ${axis}label]
+            if { $label != "" } {
+                SendCmd [list axis name $axis $label]
+            }
+            set units [$_first hints ${axis}units]
+            if { $units != "" } {
+                SendCmd [list axis units $axis $units]
+            }
+        }
+        $itk_component(field) choices delete 0 end
+        $itk_component(fieldmenu) delete 0 end
+        array unset _fields
+        set _curFldName ""
+        set _curFldLabel ""
+        foreach cname [$_first components] {
+            foreach fname [$_first fieldnames $cname] {
+                if { [info exists _fields($fname)] } {
+                    continue
+                }
+                foreach { label units components } \
+                    [$_first fieldinfo $fname] break
+                $itk_component(field) choices insert end "$fname" "$label"
+                $itk_component(fieldmenu) add radiobutton -label "$label" \
+                    -value $label -variable [itcl::scope _curFldLabel] \
+                    -selectcolor red \
+                    -activebackground $itk_option(-plotbackground) \
+                    -activeforeground $itk_option(-plotforeground) \
+                    -font "Arial 8" \
+                    -command [itcl::code $this Combo invoke]
+                set _fields($fname) [list $label $units $components]
+                if { $_curFldName == "" && $components == 3 } {
+                    set _curFldName $fname
+                    set _curFldLabel $label
+                }
+            }
+        }
+        $itk_component(field) value $_curFldLabel
+    }
+
+    if { $_reset } {
+        InitSettings -streamlinesseedsvisible -streamlinesopacity \
+            -streamlinesvisible \
+            -streamlineslighting \
+            -streamlinescolormap -field \
+            -surfacevisible -surfaceedges -surfacelighting -surfaceopacity \
+            -surfacewireframe \
+            -cutplanesvisible \
+            -xcutplaneposition -ycutplaneposition -zcutplaneposition \
+            -xcutplanevisible -ycutplanevisible -zcutplanevisible
+
+        # Reset the camera and other view parameters
+        $_arcball quaternion [ViewToQuaternion]
+        if {$_view(-ortho)} {
+            SendCmd "camera mode ortho"
+        } else {
+            SendCmd "camera mode persp"
+        }
+        DoRotate
+        PanCamera
+        Zoom reset
+        SendCmd "camera reset"
+        set _reset 0
+    }
+    # Actually write the commands to the server socket.  If it fails, we don't
+    # care.  We're finished here.
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands
+    blt::busy release $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CurrentDatasets ?-all -visible? ?dataobjs?
+#
+# Returns a list of server IDs for the current datasets being displayed.  This
+# is normally a single ID, but it might be a list of IDs if the current data
+# object has multiple components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::CurrentDatasets {args} {
+    set flag [lindex $args 0]
+    switch -- $flag {
+        "-all" {
+            if { [llength $args] > 1 } {
+                error "CurrentDatasets: can't specify dataobj after \"-all\""
+            }
+            set dlist [get -objects]
+        }
+        "-visible" {
+            if { [llength $args] > 1 } {
+                set dlist {}
+                set args [lrange $args 1 end]
+                foreach dataobj $args {
+                    if { [info exists _obj2ovride($dataobj-raise)] } {
+                        lappend dlist $dataobj
+                    }
+                }
+            } else {
+                set dlist [get -visible]
+            }
+        }
+        default {
+            set dlist $args
+        }
+    }
+    set rlist ""
+    foreach dataobj $dlist {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { [info exists _datasets($tag)] && $_datasets($tag) } {
+                lappend rlist $tag
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::Zoom {option} {
+    switch -- $option {
+        "in" {
+            set _view(-zoom) [expr {$_view(-zoom)*1.25}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "out" {
+            set _view(-zoom) [expr {$_view(-zoom)*0.8}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "reset" {
+            array set _view {
+                -qw      0.853553
+                -qx      -0.353553
+                -qy      0.353553
+                -qz      0.146447
+                -xpan    0
+                -ypan    0
+                -zoom    1.0
+            }
+            if { $_first != "" } {
+                set location [$_first hints camera]
+                if { $location != "" } {
+                    array set _view $location
+                }
+            }
+            $_arcball quaternion [ViewToQuaternion]
+            DoRotate
+            SendCmd "camera reset"
+        }
+    }
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::PanCamera {} {
+    set x $_view(-xpan)
+    set y $_view(-ypan)
+    SendCmd "camera pan $x $y"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::Rotate {option x y} {
+    switch -- $option {
+        "click" {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "drag" {
+            if {[array size _click] == 0} {
+                Rotate click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+                if { $dx == 0 && $dy == 0 } {
+                    return
+                }
+                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
+                EventuallyRotate $q
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        "release" {
+            Rotate drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::Pick {x y} {
+    foreach tag [CurrentDatasets -visible] {
+        SendCmd "dataset getscalar pixel $x $y $tag"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::Pan {option x y} {
+    switch -- $option {
+        "set" {
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set x [expr $x / double($w)]
+            set y [expr $y / double($h)]
+            set _view(-xpan) [expr $_view(-xpan) + $x]
+            set _view(-ypan) [expr $_view(-ypan) + $y]
+            PanCamera
+            return
+        }
+        "click" {
+            set _click(x) $x
+            set _click(y) $y
+            $itk_component(view) configure -cursor hand1
+        }
+        "drag" {
+            if { ![info exists _click(x)] } {
+                set _click(x) $x
+            }
+            if { ![info exists _click(y)] } {
+                set _click(y) $y
+            }
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set dx [expr ($_click(x) - $x)/double($w)]
+            set dy [expr ($_click(y) - $y)/double($h)]
+            set _click(x) $x
+            set _click(y) $y
+            set _view(-xpan) [expr $_view(-xpan) - $dx]
+            set _view(-ypan) [expr $_view(-ypan) - $dy]
+            PanCamera
+        }
+        "release" {
+            Pan drag $x $y
+            $itk_component(view) configure -cursor ""
+        }
+        default {
+            error "unknown option \"$option\": should set, click, drag, or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitSettings <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::InitSettings { args } {
+    foreach spec $args {
+        if { [info exists _settings($_first${spec})] } {
+            # Reset global setting with dataobj specific setting
+            set _settings($spec) $_settings($_first${spec})
+        }
+        AdjustSetting $spec
+    }
+}
+
+#
+# AdjustSetting --
+#
+# Changes/updates a specific setting in the widget.  There are
+# usually user-setable option.  Commands are sent to the render
+# server.
+#
+itcl::body Rappture::VtkStreamlinesViewer::AdjustSetting {what {value ""}} {
+    if { ![isconnected] } {
+        return
+    }
+    switch -- $what {
+        "-axesvisible" {
+            set bool $_settings($what)
+            SendCmd "axis visible all $bool"
+        }
+        "-axislabelsvisible" {
+            set bool $_settings($what)
+            SendCmd "axis labels all $bool"
+        }
+        "-axisminorticks" {
+            set bool $_settings($what)
+            SendCmd "axis minticks all $bool"
+        }
+        "-axismode" {
+            set mode [$itk_component(axismode) value]
+            set mode [$itk_component(axismode) translate $mode]
+            set _settings($what) $mode
+            SendCmd "axis flymode $mode"
+        }
+        "-cutplaneedges" {
+            set bool $_settings($what)
+            SendCmd "cutplane edges $bool"
+        }
+        "-cutplanesvisible" {
+            set bool $_settings($what)
+            SendCmd "cutplane visible $bool"
+            if { $bool } {
+                Rappture::Tooltip::for $itk_component(cutplane) \
+                    "Hide the cutplanes"
+            } else {
+                Rappture::Tooltip::for $itk_component(cutplane) \
+                    "Show the cutplanes"
+            }
+        }
+        "-cutplanewireframe" {
+            set bool $_settings($what)
+            SendCmd "cutplane wireframe $bool"
+        }
+        "-cutplanelighting" {
+            set bool $_settings($what)
+            SendCmd "cutplane lighting $bool"
+        }
+        "-cutplaneopacity" {
+            set val $_settings($what)
+            set sval [expr { 0.01 * double($val) }]
+            SendCmd "cutplane opacity $sval"
+        }
+        "-field" {
+            set label [$itk_component(field) value]
+            set fname [$itk_component(field) translate $label]
+            set _settings($what) $fname
+            if { [info exists _fields($fname)] } {
+                foreach { label units components } $_fields($fname) break
+                if { $components > 1 } {
+                    set _colorMode vmag
+                } else {
+                    set _colorMode scalar
+                }
+                set _curFldName $fname
+                set _curFldLabel $label
+            } else {
+                puts stderr "unknown field \"$fname\""
+                return
+            }
+            # Get the new limits because the field changed.
+            if { ![info exists _limits($_curFldName)] } {
+                SendCmd "dataset maprange all"
+            } else {
+                SendCmd "dataset maprange explicit $_limits($_curFldName) $_curFldName"
+            }
+            SendCmd "streamlines colormode $_colorMode $_curFldName"
+            SendCmd "cutplane colormode $_colorMode $_curFldName"
+            DrawLegend
+        }
+        "-streamlinesseedsvisible" {
+            set bool $_settings($what)
+            SendCmd "streamlines seed visible $bool"
+        }
+        "-streamlinesnumseeds" {
+            set density $_settings($what)
+            EventuallyReseed $density
+        }
+        "-streamlinesvisible" {
+            set bool $_settings($what)
+            SendCmd "streamlines visible $bool"
+            if { $bool } {
+                Rappture::Tooltip::for $itk_component(streamlines) \
+                    "Hide the streamlines"
+            } else {
+                Rappture::Tooltip::for $itk_component(streamlines) \
+                    "Show the streamlines"
+            }
+        }
+        "-streamlinesmode" {
+            set mode [$itk_component(streammode) value]
+            set _settings($what) $mode
+            switch -- $mode {
+                "lines" {
+                    SendCmd "streamlines lines"
+                }
+                "ribbons" {
+                    SendCmd "streamlines ribbons 3 0"
+                }
+                "tubes" {
+                    SendCmd "streamlines tubes 5 3"
+                }
+            }
+        }
+        "-streamlinescolormap" {
+            set colormap [$itk_component(colormap) value]
+            set _settings($what) $colormap
+            SetCurrentColormap $colormap
+            set _legendPending 1
+        }
+        "-streamlinesopacity" {
+            set val $_settings($what)
+            set sval [expr { 0.01 * double($val) }]
+            SendCmd "streamlines opacity $sval"
+        }
+        "-streamlineslength" {
+            set val $_settings($what)
+            set sval [expr { (0.01 * double($val)) / 0.7 }]
+            foreach axis {x y z} {
+                foreach {min max} $_limits($axis) break
+                set ${axis}len [expr double($max) - double($min)]
+            }
+            set length [expr { $sval * ($xlen + $ylen + $zlen) } ]
+            SendCmd "streamlines length $length"
+        }
+        "-streamlineslighting" {
+            set bool $_settings($what)
+            SendCmd "streamlines lighting $bool"
+        }
+        "-surfaceopacity" {
+            set val $_settings($what)
+            set sval [expr { 0.01 * double($val) }]
+            SendCmd "polydata opacity $sval"
+        }
+        "-surfacewireframe" {
+            set bool $_settings($what)
+            SendCmd "polydata wireframe $bool"
+        }
+        "-surfacevisible" {
+            set bool $_settings($what)
+            SendCmd "polydata visible $bool"
+            if { $bool } {
+                Rappture::Tooltip::for $itk_component(surface) \
+                    "Hide the boundary surface"
+            } else {
+                Rappture::Tooltip::for $itk_component(surface) \
+                    "Show the boundary surface"
+            }
+        }
+        "-surfacelighting" {
+            set bool $_settings($what)
+            SendCmd "polydata lighting $bool"
+        }
+        "-surfaceedges" {
+            set bool $_settings($what)
+            SendCmd "polydata edges $bool"
+        }
+        "-xcutplanevisible" - "-ycutplanevisible" - "-zcutplanevisible" {
+            set axis [string range $what 1 1]
+            set bool $_settings($what)
+            if { $bool } {
+                $itk_component(${axis}CutScale) configure -state normal \
+                    -troughcolor white
+            } else {
+                $itk_component(${axis}CutScale) configure -state disabled \
+                    -troughcolor grey82
+            }
+            SendCmd "cutplane axis $axis $bool"
+        }
+        "-xcutplaneposition" - "-ycutplaneposition" - "-zcutplaneposition" {
+            set axis [string range $what 1 1]
+            set pos [expr $_settings($what) * 0.01]
+            SendCmd "cutplane slice ${axis} ${pos}"
+            set _cutplanePending 0
+        }
+        "-xgrid" - "-ygrid" - "-zgrid" {
+            set axis [string range $what 1 1]
+            set bool $_settings($what)
+            SendCmd "axis grid $axis $bool"
+        }
+        default {
+            error "don't know how to fix $what"
+        }
+    }
+}
+
+#
+# RequestLegend --
+#
+# Request a new legend from the server.  The size of the legend
+# is determined from the height of the canvas.  It will be rotated
+# to be vertical when drawn.
+#
+itcl::body Rappture::VtkStreamlinesViewer::RequestLegend {} {
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+    set w 12
+    set h [expr {$_height - 3 * ($lineht + 2)}]
+    if { $h < 1 } {
+        return
+    }
+    # Set the legend on the first dataset.
+    if { $_currentColormap != "" } {
+        set cmap $_currentColormap
+        if { ![info exists _colormaps($cmap)] } {
+            BuildColormap $cmap
+            set _colormaps($cmap) 1
+        }
+        #SendCmd "legend $cmap $_colorMode $_curFldName {} $w $h 0"
+        SendCmd "legend2 $cmap $w $h"
+    }
+}
+
+#
+# SetCurrentColormap --
+#
+itcl::body Rappture::VtkStreamlinesViewer::SetCurrentColormap { name } {
+    # Keep track of the colormaps that we build.
+    if { ![info exists _colormaps($name)] } {
+        BuildColormap $name
+        set _colormaps($name) 1
+    }
+    set _currentColormap $name
+    SendCmd "streamlines colormap $_currentColormap"
+    SendCmd "cutplane colormap $_currentColormap"
+}
+
+#
+# BuildColormap --
+#
+itcl::body Rappture::VtkStreamlinesViewer::BuildColormap { name } {
+    set cmap [ColorsToColormap $name]
+    if { [llength $cmap] == 0 } {
+        set cmap "0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0"
+    }
+    set amap "0.0 1.0 1.0 1.0"
+    SendCmd "colormap add $name { $cmap } { $amap }"
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkStreamlinesViewer::plotbackground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotbackground)]
+        SendCmd "screen bgcolor $rgb"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkStreamlinesViewer::plotforeground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotforeground)]
+        SendCmd "axis color all $rgb"
+        SendCmd "outline color $rgb"
+        SendCmd "cutplane color $rgb"
+    }
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::BuildSurfaceTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Boundary Surface Settings" \
+        -icon [Rappture::icon volume-on]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.surface \
+        -text "Show Surface" \
+        -variable [itcl::scope _settings(-surfacevisible)] \
+        -command [itcl::code $this AdjustSetting -surfacevisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.wireframe \
+        -text "Show Wireframe" \
+        -variable [itcl::scope _settings(-surfacewireframe)] \
+        -command [itcl::code $this AdjustSetting -surfacewireframe] \
+        -font "Arial 9"
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(-surfacelighting)] \
+        -command [itcl::code $this AdjustSetting -surfacelighting] \
+        -font "Arial 9"
+
+    checkbutton $inner.edges \
+        -text "Show Edges" \
+        -variable [itcl::scope _settings(-surfaceedges)] \
+        -command [itcl::code $this AdjustSetting -surfaceedges] \
+        -font "Arial 9"
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9"
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-surfaceopacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -surfaceopacity]
+
+    blt::table $inner \
+        0,0 $inner.wireframe -anchor w -pady 2 -cspan 2 \
+        1,0 $inner.lighting  -anchor w -pady 2 -cspan 2 \
+        2,0 $inner.edges     -anchor w -pady 2 -cspan 3 \
+        3,0 $inner.opacity_l -anchor w -pady 2 \
+        3,1 $inner.opacity   -fill x   -pady 2
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r4 c1 -resize expand
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::BuildStreamsTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Streams Settings" \
+        -icon [Rappture::icon streamlines-on]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.streamlines \
+        -text "Show Streamlines" \
+        -variable [itcl::scope _settings(-streamlinesvisible)] \
+        -command [itcl::code $this AdjustSetting -streamlinesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(-streamlineslighting)] \
+        -command [itcl::code $this AdjustSetting -streamlineslighting] \
+        -font "Arial 9"
+
+    checkbutton $inner.seeds \
+        -text "Show Seeds" \
+        -variable [itcl::scope _settings(-streamlinesseedsvisible)] \
+        -command [itcl::code $this AdjustSetting -streamlinesseedsvisible] \
+        -font "Arial 9"
+
+    label $inner.mode_l -text "Mode" -font "Arial 9"
+    itk_component add streammode {
+        Rappture::Combobox $inner.mode -width 10 -editable 0
+    }
+    $inner.mode choices insert end \
+        "lines"    "lines" \
+        "ribbons"   "ribbons" \
+        "tubes"     "tubes"
+    $itk_component(streammode) value $_settings(-streamlinesmode)
+    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -streamlinesmode]
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9"
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-streamlinesopacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -streamlinesopacity]
+
+    label $inner.density_l -text "No. Seeds" -font "Arial 9"
+    ::scale $inner.density -from 1 -to 1000 -orient horizontal \
+        -variable [itcl::scope _settings(-streamlinesnumseeds)] \
+        -width 10 \
+        -showvalue on \
+        -command [itcl::code $this AdjustSetting -streamlinesnumseeds]
+
+    label $inner.scale_l -text "Length" -font "Arial 9"
+    ::scale $inner.scale -from 1 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-streamlineslength)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -streamlineslength]
+
+    label $inner.field_l -text "Color by" -font "Arial 9"
+    itk_component add field {
+        Rappture::Combobox $inner.field -width 10 -editable 0
+    }
+    bind $inner.field <<Value>> \
+        [itcl::code $this AdjustSetting -field]
+
+    label $inner.colormap_l -text "Colormap" -font "Arial 9"
+    itk_component add colormap {
+        Rappture::Combobox $inner.colormap -width 10 -editable 0
+    }
+    $inner.colormap choices insert end [GetColormapList]
+
+    $itk_component(colormap) value "BCGYR"
+    bind $inner.colormap <<Value>> \
+        [itcl::code $this AdjustSetting -streamlinescolormap]
+
+    blt::table $inner \
+        0,0 $inner.field_l     -anchor w -pady 2  \
+        0,1 $inner.field       -fill x   -pady 2  \
+        1,0 $inner.colormap_l  -anchor w -pady 2  \
+        1,1 $inner.colormap    -fill x   -pady 2  \
+        2,0 $inner.mode_l      -anchor w -pady 2  \
+        2,1 $inner.mode        -fill x   -pady 2  \
+        3,0 $inner.opacity_l   -anchor w -pady 2  \
+        3,1 $inner.opacity     -fill x -pady 2 \
+        4,0 $inner.lighting    -anchor w -pady 2 -cspan 2 \
+        5,0 $inner.seeds       -anchor w -pady 2 -cspan 2 \
+        6,0 $inner.density_l   -anchor w -pady 2  \
+        6,1 $inner.density     -fill x   -pady 2  \
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c1 c2 -resize expand
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::BuildAxisTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Axis Settings" \
+        -icon [Rappture::icon axis2]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Axes" \
+        -variable [itcl::scope _settings(-axesvisible)] \
+        -command [itcl::code $this AdjustSetting -axesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.labels \
+        -text "Axis Labels" \
+        -variable [itcl::scope _settings(-axislabelsvisible)] \
+        -command [itcl::code $this AdjustSetting -axislabelsvisible] \
+        -font "Arial 9"
+    label $inner.grid_l -text "Grid" -font "Arial 9"
+    checkbutton $inner.xgrid \
+        -text "X" \
+        -variable [itcl::scope _settings(-xgrid)] \
+        -command [itcl::code $this AdjustSetting -xgrid] \
+        -font "Arial 9"
+    checkbutton $inner.ygrid \
+        -text "Y" \
+        -variable [itcl::scope _settings(-ygrid)] \
+        -command [itcl::code $this AdjustSetting -ygrid] \
+        -font "Arial 9"
+    checkbutton $inner.zgrid \
+        -text "Z" \
+        -variable [itcl::scope _settings(-zgrid)] \
+        -command [itcl::code $this AdjustSetting -zgrid] \
+        -font "Arial 9"
+    checkbutton $inner.minorticks \
+        -text "Minor Ticks" \
+        -variable [itcl::scope _settings(-axisminorticks)] \
+        -command [itcl::code $this AdjustSetting -axisminorticks] \
+        -font "Arial 9"
+
+    label $inner.mode_l -text "Mode" -font "Arial 9"
+
+    itk_component add axismode {
+        Rappture::Combobox $inner.mode -width 10 -editable 0
+    }
+    $inner.mode choices insert end \
+        "static_triad"    "static" \
+        "closest_triad"   "closest" \
+        "furthest_triad"  "farthest" \
+        "outer_edges"     "outer"
+    $itk_component(axismode) value $_settings(-axismode)
+    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -axismode]
+
+    blt::table $inner \
+        0,0 $inner.visible -anchor w -cspan 4 \
+        1,0 $inner.labels  -anchor w -cspan 4 \
+        2,0 $inner.minorticks  -anchor w -cspan 4 \
+        4,0 $inner.grid_l  -anchor w \
+        4,1 $inner.xgrid   -anchor w \
+        4,2 $inner.ygrid   -anchor w \
+        4,3 $inner.zgrid   -anchor w \
+        5,0 $inner.mode_l  -anchor w -padx { 2 0 } \
+        5,1 $inner.mode    -fill x   -cspan 3
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c6 -resize expand
+    blt::table configure $inner r3 -height 0.125i
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::BuildCameraTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Camera Settings" \
+        -icon [Rappture::icon camera]]
+    $inner configure -borderwidth 4
+
+    label $inner.view_l -text "view" -font "Arial 9"
+    set f [frame $inner.view]
+    foreach side { front back left right top bottom } {
+        button $f.$side  -image [Rappture::icon view$side] \
+            -command [itcl::code $this SetOrientation $side]
+        Rappture::Tooltip::for $f.$side "Change the view to $side"
+        pack $f.$side -side left
+    }
+
+    blt::table $inner \
+        0,0 $inner.view_l -anchor e -pady 2 \
+        0,1 $inner.view -anchor w -pady 2
+    blt::table configure $inner r0 -resize none
+
+    set labels { qx qy qz qw xpan ypan zoom }
+    set row 1
+    foreach tag $labels {
+        label $inner.${tag}label -text $tag -font "Arial 9"
+        entry $inner.${tag} -font "Arial 9"  -bg white \
+            -textvariable [itcl::scope _view(-$tag)]
+        bind $inner.${tag} <Return> \
+            [itcl::code $this camera set -${tag}]
+        bind $inner.${tag} <KP_Enter> \
+            [itcl::code $this camera set -${tag}]
+        blt::table $inner \
+            $row,0 $inner.${tag}label -anchor e -pady 2 \
+            $row,1 $inner.${tag} -anchor w -pady 2
+        blt::table configure $inner r$row -resize none
+        incr row
+    }
+    checkbutton $inner.ortho \
+        -text "Orthographic Projection" \
+        -variable [itcl::scope _view(-ortho)] \
+        -command [itcl::code $this camera set -ortho] \
+        -font "Arial 9"
+    blt::table $inner \
+            $row,0 $inner.ortho -cspan 2 -anchor w -pady 2
+    blt::table configure $inner r$row -resize none
+    incr row
+
+    blt::table configure $inner c* -resize none
+    blt::table configure $inner c2 -resize expand
+    blt::table configure $inner r$row -resize expand
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::BuildCutplanesTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Cutplane Settings" \
+        -icon [Rappture::icon cutbutton]]
+
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Show Cutplanes" \
+        -variable [itcl::scope _settings(-cutplanesvisible)] \
+        -command [itcl::code $this AdjustSetting -cutplanesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.wireframe \
+        -text "Show Wireframe" \
+        -variable [itcl::scope _settings(-cutplanewireframe)] \
+        -command [itcl::code $this AdjustSetting -cutplanewireframe] \
+        -font "Arial 9"
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(-cutplanelighting)] \
+        -command [itcl::code $this AdjustSetting -cutplanelighting] \
+        -font "Arial 9"
+
+    checkbutton $inner.edges \
+        -text "Show Edges" \
+        -variable [itcl::scope _settings(-cutplaneedges)] \
+        -command [itcl::code $this AdjustSetting -cutplaneedges] \
+        -font "Arial 9"
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9"
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-cutplaneopacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -cutplaneopacity]
+    $inner.opacity set $_settings(-cutplaneopacity)
+
+    # X-value slicer...
+    itk_component add xCutButton {
+        Rappture::PushButton $inner.xbutton \
+            -onimage [Rappture::icon x-cutplane-red] \
+            -offimage [Rappture::icon x-cutplane-red] \
+            -command [itcl::code $this AdjustSetting -xcutplanevisible] \
+            -variable [itcl::scope _settings(-xcutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(xCutButton) \
+        "Toggle the X-axis cutplane on/off"
+    $itk_component(xCutButton) select
+
+    itk_component add xCutScale {
+        ::scale $inner.xval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane x] \
+            -variable [itcl::scope _settings(-xcutplaneposition)] \
+            -foreground red3 -font "Arial 9 bold"
+    } {
+        usual
+        ignore -borderwidth -highlightthickness -foreground -font
+    }
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(xCutScale) set 50
+    $itk_component(xCutScale) configure -state disabled
+    Rappture::Tooltip::for $itk_component(xCutScale) \
+        "@[itcl::code $this Slice tooltip x]"
+
+    # Y-value slicer...
+    itk_component add yCutButton {
+        Rappture::PushButton $inner.ybutton \
+            -onimage [Rappture::icon y-cutplane-green] \
+            -offimage [Rappture::icon y-cutplane-green] \
+            -command [itcl::code $this AdjustSetting -ycutplanevisible] \
+            -variable [itcl::scope _settings(-ycutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(yCutButton) \
+        "Toggle the Y-axis cutplane on/off"
+    $itk_component(yCutButton) select
+
+    itk_component add yCutScale {
+        ::scale $inner.yval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane y] \
+            -variable [itcl::scope _settings(-ycutplaneposition)] \
+            -foreground green3 -font "Arial 9 bold"
+    } {
+        usual
+        ignore -borderwidth -highlightthickness -foreground -font
+    }
+    Rappture::Tooltip::for $itk_component(yCutScale) \
+        "@[itcl::code $this Slice tooltip y]"
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(yCutScale) set 50
+    $itk_component(yCutScale) configure -state disabled
+
+    # Z-value slicer...
+    itk_component add zCutButton {
+        Rappture::PushButton $inner.zbutton \
+            -onimage [Rappture::icon z-cutplane-blue] \
+            -offimage [Rappture::icon z-cutplane-blue] \
+            -command [itcl::code $this AdjustSetting -zcutplanevisible] \
+            -variable [itcl::scope _settings(-zcutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(zCutButton) \
+        "Toggle the Z-axis cutplane on/off"
+    $itk_component(zCutButton) select
+
+    itk_component add zCutScale {
+        ::scale $inner.zval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane z] \
+            -variable [itcl::scope _settings(-zcutplaneposition)] \
+            -foreground blue3 -font "Arial 9 bold"
+    } {
+        usual
+        ignore -borderwidth -highlightthickness -foreground -font
+    }
+    $itk_component(zCutScale) set 50
+    $itk_component(zCutScale) configure -state disabled
+    Rappture::Tooltip::for $itk_component(zCutScale) \
+        "@[itcl::code $this Slice tooltip z]"
+
+    blt::table $inner \
+        0,0 $inner.lighting             -anchor w -pady 2 -cspan 4 \
+        1,0 $inner.wireframe            -anchor w -pady 2 -cspan 4 \
+        2,0 $inner.edges                -anchor w -pady 2 -cspan 4 \
+        3,0 $inner.opacity_l            -anchor w -pady 2 -cspan 1 \
+        3,1 $inner.opacity              -fill x   -pady 2 -cspan 3 \
+        4,0 $itk_component(xCutButton)  -anchor w -padx 2 -pady 2 \
+        5,0 $itk_component(yCutButton)  -anchor w -padx 2 -pady 2 \
+        6,0 $itk_component(zCutButton)  -anchor w -padx 2 -pady 2 \
+        4,1 $itk_component(xCutScale)   -fill y -rspan 4 \
+        4,2 $itk_component(yCutScale)   -fill y -rspan 4 \
+        4,3 $itk_component(zCutScale)   -fill y -rspan 4 \
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c4 -resize expand
+}
+
+#
+# camera --
+#
+itcl::body Rappture::VtkStreamlinesViewer::camera {option args} {
+    switch -- $option {
+        "show" {
+            puts [array get _view]
+        }
+        "set" {
+            set what [lindex $args 0]
+            set x $_view($what)
+            set code [catch { string is double $x } result]
+            if { $code != 0 || !$result } {
+                return
+            }
+            switch -- $what {
+                "-ortho" {
+                    if {$_view($what)} {
+                        SendCmd "camera mode ortho"
+                    } else {
+                        SendCmd "camera mode persp"
+                    }
+                }
+                "-xpan" - "-ypan" {
+                    PanCamera
+                }
+                "-qx" - "-qy" - "-qz" - "-qw" {
+                    set q [ViewToQuaternion]
+                    $_arcball quaternion $q
+                    EventuallyRotate $q
+                }
+                "-zoom" {
+                    SendCmd "camera zoom $_view($what)"
+                }
+            }
+        }
+    }
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::GetVtkData { args } {
+    set bytes ""
+    foreach dataobj [get] {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            set contents [$dataobj vtkdata $comp]
+            append bytes "$contents\n"
+        }
+    }
+    return [list .vtk $bytes]
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::GetImage { args } {
+    if { [image width $_image(download)] > 0 &&
+         [image height $_image(download)] > 0 } {
+        set bytes [$_image(download) data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        return [list .jpg $bytes]
+    }
+    return ""
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::BuildDownloadPopup { popup command } {
+    Rappture::Balloon $popup \
+        -title "[Rappture::filexfer::label downloadWord] as..."
+    set inner [$popup component inner]
+    label $inner.summary -text "" -anchor w
+    radiobutton $inner.vtk_button -text "VTK data file" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Helvetica 9 " \
+        -value vtk
+    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
+    radiobutton $inner.image_button -text "Image File" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -value image
+    Rappture::Tooltip::for $inner.image_button \
+        "Save as digital image."
+
+    button $inner.ok -text "Save" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command $command \
+        -compound left \
+        -image [Rappture::icon download]
+
+    button $inner.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command [list $popup deactivate] \
+        -compound left \
+        -image [Rappture::icon cancel]
+
+    blt::table $inner \
+        0,0 $inner.summary -cspan 2  \
+        1,0 $inner.vtk_button -anchor w -cspan 2 -padx { 4 0 } \
+        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
+        4,1 $inner.cancel -width .9i -fill y \
+        4,0 $inner.ok -padx 2 -width .9i -fill y
+    blt::table configure $inner r3 -height 4
+    blt::table configure $inner r4 -pady 4
+    raise $inner.image_button
+    $inner.vtk_button invoke
+    return $inner
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::SetObjectStyle { dataobj comp } {
+    # Parse style string.
+    set tag $dataobj-$comp
+    array set style {
+        -color BCGYR
+        -constcolor white
+        -edgecolor black
+        -edges 0
+        -lighting 1
+        -linewidth 1.0
+        -mode lines
+        -numseeds 200
+        -opacity 1.0
+        -seeds 1
+        -seedcolor white
+        -streamlineslength 0.7
+        -surfacecolor white
+        -surfaceedgecolor black
+        -surfaceedges 0
+        -surfacelighting 1
+        -surfaceopacity 0.4
+        -surfacevisible 1
+        -surfacewireframe 0
+        -visible 1
+    }
+    array set style [$dataobj style $comp]
+
+    StartBufferingCommands
+    SendCmd "streamlines add $tag"
+    SendCmd "streamlines color [Color2RGB $style(-constcolor)] $tag"
+    SendCmd "streamlines edges $style(-edges) $tag"
+    SendCmd "streamlines linecolor [Color2RGB $style(-edgecolor)] $tag"
+    SendCmd "streamlines linewidth $style(-linewidth) $tag"
+    SendCmd "streamlines lighting $style(-lighting) $tag"
+    SendCmd "streamlines opacity $style(-opacity) $tag"
+    SendCmd "streamlines seed color [Color2RGB $style(-seedcolor)] $tag"
+    SendCmd "streamlines seed visible $style(-seeds) $tag"
+    SendCmd "streamlines visible $style(-visible) $tag"
+    set seeds [$dataobj hints seeds]
+    if { $seeds != "" && ![info exists _seeds($dataobj)] } {
+        set length [string length $seeds]
+        SendCmd "streamlines seed fmesh $style(-numseeds) data follows $length $tag"
+        SendData $seeds
+        set _seeds($dataobj) 1
+    }
+    set _settings(-streamlineslighting) $style(-lighting)
+    $itk_component(streammode) value $style(-mode)
+    AdjustSetting -streamlinesmode
+    set _settings(-streamlinesnumseeds) $style(-numseeds)
+    set _settings(-streamlinesopacity) [expr $style(-opacity) * 100.0]
+    set _settings(-streamlineslength) [expr $style(-streamlineslength) * 100.0]
+    set _settings(-streamlinesseedsvisible) $style(-seeds)
+    set _settings(-streamlinesvisible) $style(-visible)
+
+    SendCmd "cutplane add $tag"
+
+    SendCmd "polydata add $tag"
+    SendCmd "polydata color [Color2RGB $style(-surfacecolor)] $tag"
+    SendCmd "polydata colormode constant {} $tag"
+    SendCmd "polydata edges $style(-surfaceedges) $tag"
+    SendCmd "polydata linecolor [Color2RGB $style(-surfaceedgecolor)] $tag"
+    SendCmd "polydata lighting $style(-surfacelighting) $tag"
+    SendCmd "polydata opacity $style(-surfaceopacity) $tag"
+    SendCmd "polydata wireframe $style(-surfacewireframe) $tag"
+    SendCmd "polydata visible $style(-surfacevisible) $tag"
+    set _settings(-surfaceedges) $style(-surfaceedges)
+    set _settings(-surfacelighting) $style(-surfacelighting)
+    set _settings(-surfaceopacity) [expr $style(-surfaceopacity) * 100.0]
+    set _settings(-surfacewireframe) $style(-surfacewireframe)
+    set _settings(-surfacevisible) $style(-surfacevisible)
+    StopBufferingCommands
+    SetCurrentColormap $style(-color)
+    $itk_component(colormap) value $style(-color)
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::IsValidObject { dataobj } {
+    if {[catch {$dataobj isa Rappture::Field} valid] != 0 || !$valid} {
+        return 0
+    }
+    return 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveLegend <colormap> <title> <vmin> <vmax> <size>
+#
+# Invoked automatically whenever the "legend" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::ReceiveLegend { colormap title vmin vmax size } {
+    set _legendPending 0
+    set _title $title
+    regsub {\(mag\)} $title "" _title
+    if { [IsConnected] } {
+        set bytes [ReceiveBytes $size]
+        if { ![info exists _image(legend)] } {
+            set _image(legend) [image create photo]
+        }
+        $_image(legend) configure -data $bytes
+        #puts stderr "read $size bytes for [image width $_image(legend)]x[image height $_image(legend)] legend>"
+        if { [catch {DrawLegend} errs] != 0 } {
+            puts stderr errs=$errs
+        }
+    }
+}
+
+#
+# DrawLegend --
+#
+# Draws the legend in it's own canvas which resides to the right
+# of the contour plot area.
+#
+itcl::body Rappture::VtkStreamlinesViewer::DrawLegend {} {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    if { [info exists _fields($fname)] } {
+        foreach { title units } $_fields($fname) break
+        if { $units != "" } {
+            set title [format "%s (%s)" $title $units]
+        }
+    } else {
+        set title $fname
+    }
+    if { $_settings(-legendvisible) } {
+        set x [expr $w - 2]
+        if { [$c find withtag "legend"] == "" } {
+            set y 2
+            $c create text $x $y \
+                -anchor ne \
+                -fill $itk_option(-plotforeground) -tags "title legend" \
+                -font $font
+            incr y $lineht
+            $c create text $x $y \
+                -anchor ne \
+                -fill $itk_option(-plotforeground) -tags "vmax legend" \
+                -font $font
+            incr y $lineht
+            $c create image $x $y \
+                -anchor ne \
+                -image $_image(legend) -tags "colormap legend"
+            $c create text $x [expr {$h-2}] \
+                -anchor se \
+                -fill $itk_option(-plotforeground) -tags "vmin legend" \
+                -font $font
+            #$c bind colormap <Enter> [itcl::code $this EnterLegend %x %y]
+            $c bind colormap <Leave> [itcl::code $this LeaveLegend]
+            $c bind colormap <Motion> [itcl::code $this MotionLegend %x %y]
+        }
+        $c bind title <ButtonPress> [itcl::code $this Combo post]
+        $c bind title <Enter> [itcl::code $this Combo activate]
+        $c bind title <Leave> [itcl::code $this Combo deactivate]
+        # Reset the item coordinates according the current size of the plot.
+        $c itemconfigure title -text $title
+        if { [info exists _limits($_curFldName)] } {
+            foreach {vmin vmax} $_limits($_curFldName) break
+            $c itemconfigure vmin -text [format %g $vmin]
+            $c itemconfigure vmax -text [format %g $vmax]
+        }
+        set y 2
+        $c coords title $x $y
+        incr y $lineht
+        $c coords vmax $x $y
+        incr y $lineht
+        $c coords colormap $x $y
+        $c coords vmin $x [expr {$h - 2}]
+    }
+}
+
+#
+# EnterLegend --
+#
+itcl::body Rappture::VtkStreamlinesViewer::EnterLegend { x y } {
+    SetLegendTip $x $y
+}
+
+#
+# MotionLegend --
+#
+itcl::body Rappture::VtkStreamlinesViewer::MotionLegend { x y } {
+    Rappture::Tooltip::tooltip cancel
+    set c $itk_component(view)
+    SetLegendTip $x $y
+}
+
+#
+# LeaveLegend --
+#
+itcl::body Rappture::VtkStreamlinesViewer::LeaveLegend { } {
+    Rappture::Tooltip::tooltip cancel
+    .rappturetooltip configure -icon ""
+}
+
+#
+# SetLegendTip --
+#
+itcl::body Rappture::VtkStreamlinesViewer::SetLegendTip { x y } {
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    set imgHeight [image height $_image(legend)]
+    set coords [$c coords colormap]
+    set imgX [expr $w - [image width $_image(legend)] - 2]
+    set imgY [expr $y - 2 * ($lineht + 2)]
+
+    if { [info exists _fields($_title)] } {
+        foreach { title units } $_fields($_title) break
+        if { $units != "" } {
+            set title [format "%s (%s)" $title $units]
+        }
+    } else {
+        set title $_title
+    }
+    # Make a swatch of the selected color
+    if { [catch { $_image(legend) get 10 $imgY } pixel] != 0 } {
+        #puts stderr "out of range: $imgY"
+        return
+    }
+    if { ![info exists _image(swatch)] } {
+        set _image(swatch) [image create photo -width 24 -height 24]
+    }
+    set color [eval format "\#%02x%02x%02x" $pixel]
+    $_image(swatch) put black  -to 0 0 23 23
+    $_image(swatch) put $color -to 1 1 22 22
+    .rappturetooltip configure -icon $_image(swatch)
+
+    # Compute the value of the point
+    if { [info exists _limits($_curFldName)] } {
+        foreach {vmin vmax} $_limits($_curFldName) break
+        set t [expr 1.0 - (double($imgY) / double($imgHeight-1))]
+        set value [expr $t * ($vmax - $vmin) + $vmin]
+    } else {
+        set value 0.0
+    }
+    set tipx [expr $x + 15]
+    set tipy [expr $y - 5]
+    Rappture::Tooltip::text $c "$title $value"
+    Rappture::Tooltip::tooltip show $c +$tipx,+$tipy
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Slice move x|y|z <newval>
+#
+# Called automatically when the user drags the slider to move the
+# cut plane that slices 3D data.  Gets the current value from the
+# slider and moves the cut plane to the appropriate point in the
+# data set.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::Slice {option args} {
+    switch -- $option {
+        "move" {
+            set axis [lindex $args 0]
+            set newval [lindex $args 1]
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Slice move x|y|z newval\""
+            }
+            set newpos [expr {0.01*$newval}]
+            SendCmd "cutplane slice $axis $newpos"
+        }
+        "tooltip" {
+            set axis [lindex $args 0]
+            set val [$itk_component(${axis}CutScale) get]
+            return "Move the [string toupper $axis] cut plane.\nCurrently:  $axis = $val%"
+        }
+        default {
+            error "bad option \"$option\": should be axis, move, or tooltip"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _dropdown post
+# USAGE: _dropdown unpost
+# USAGE: _dropdown select
+#
+# Used internally to handle the dropdown list for this combobox.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkStreamlinesViewer::Combo {option} {
+    set c $itk_component(view)
+    switch -- $option {
+        post {
+            foreach { x1 y1 x2 y2 } [$c bbox title] break
+            set x1 [expr [winfo width $itk_component(view)] - [winfo reqwidth $itk_component(fieldmenu)]]
+            set x [expr $x1 + [winfo rootx $itk_component(view)]]
+            set y [expr $y2 + [winfo rooty $itk_component(view)]]
+            tk_popup $itk_component(fieldmenu) $x $y
+        }
+        activate {
+            $c itemconfigure title -fill red
+        }
+        deactivate {
+            $c itemconfigure title -fill white
+        }
+        invoke {
+            $itk_component(field) value $_curFldLabel
+            AdjustSetting -field
+        }
+        default {
+            error "bad option \"$option\": should be post, unpost, select"
+        }
+    }
+}
+
+itcl::body Rappture::VtkStreamlinesViewer::SetOrientation { side } {
+    array set positions {
+        front "1 0 0 0"
+        back  "0 0 1 0"
+        left  "0.707107 0 -0.707107 0"
+        right "0.707107 0 0.707107 0"
+        top   "0.707107 -0.707107 0 0"
+        bottom "0.707107 0.707107 0 0"
+    }
+    foreach name { -qw -qx -qy -qz } value $positions($side) {
+        set _view($name) $value
+    }
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    set _view(-xpan) 0
+    set _view(-ypan) 0
+    set _view(-zoom) 1.0
+}
Index: /tags/1.6.0/gui/scripts/vtksurfaceviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/vtksurfaceviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/vtksurfaceviewer.tcl	(revision 6168)
@@ -0,0 +1,2341 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: vtksurfaceviewer - Vtk 3D boundary surface viewer
+#
+#  It connects to the Vtkvis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+#package require Img
+
+option add *VtkSurfaceViewer.width 4i widgetDefault
+option add *VtkSurfaceViewer*cursor crosshair widgetDefault
+option add *VtkSurfaceViewer.height 4i widgetDefault
+option add *VtkSurfaceViewer.foreground black widgetDefault
+option add *VtkSurfaceViewer.controlBackground gray widgetDefault
+option add *VtkSurfaceViewer.controlDarkBackground #999999 widgetDefault
+option add *VtkSurfaceViewer.plotBackground black widgetDefault
+option add *VtkSurfaceViewer.plotForeground white widgetDefault
+option add *VtkSurfaceViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc VtkSurfaceViewer_init_resources {} {
+    Rappture::resources::register \
+        vtkvis_server Rappture::VtkSurfaceViewer::SetServerList
+}
+
+itcl::class Rappture::VtkSurfaceViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "vtkvis" $namelist
+    }
+    public method add {dataobj {settings ""}}
+    public method camera {option args}
+    public method delete {args}
+    public method disconnect {}
+    public method download {option args}
+    public method get {args}
+    public method isconnected {}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method scale {args}
+
+    # The following methods are only used by this class.
+    private method AdjustSetting {what {value ""}}
+    private method BuildAxisTab {}
+    private method BuildCameraTab {}
+    private method BuildColormap { name }
+    private method BuildDownloadPopup { widget command }
+    private method BuildSurfaceTab {}
+    private method Combo { option }
+    private method Connect {}
+    private method CurrentDatasets {args}
+    private method Disconnect {}
+    private method DoResize {}
+    private method DoRotate {}
+    private method DrawLegend {}
+    private method EnterLegend { x y }
+    private method EventuallyRequestLegend {}
+    private method EventuallyResize { w h }
+    private method EventuallyRotate { q }
+    private method GetImage { args }
+    private method GetVtkData { args }
+    private method InitSettings { args }
+    private method IsValidObject { dataobj }
+    private method LeaveLegend {}
+    private method MotionLegend { x y }
+    private method Pan {option x y}
+    private method PanCamera {}
+    private method Pick {x y}
+    private method QuaternionToView { q } {
+        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
+    }
+    private method Rebuild {}
+    private method ReceiveDataset { args }
+    private method ReceiveImage { args }
+    private method ReceiveLegend { colormap title vmin vmax size }
+    private method RequestLegend {}
+    private method Rotate {option x y}
+    private method SetCurrentColormap { color }
+    private method SetCurrentFieldName { dataobj }
+    private method SetLegendTip { x y }
+    private method SetObjectStyle { dataobj comp }
+    private method SetOrientation { side }
+    private method UpdateContourList {}
+    private method ViewToQuaternion {} {
+        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
+    }
+    private method Zoom {option}
+
+    private variable _arcball ""
+
+    private variable _dlist ""     ;    # list of data objects
+    private variable _obj2ovride   ;    # maps dataobj => style override
+    private variable _datasets     ;    # contains all the dataobj-component
+                                   ;    # datasets in the server
+    private variable _colormaps    ;    # contains all the colormaps
+                                   ;    # in the server.
+    # The name of the current colormap used.  The colormap is global to all
+    # heightmaps displayed.
+    private variable _currentColormap ""
+    private variable _currentNumContours -1
+
+    private variable _click        ;    # info used for rotate operations
+    private variable _limits       ;    # autoscale min/max for all axes
+    private variable _view         ;    # view params for 3D view
+    private variable _settings
+    private variable _changed
+    private variable _reset 1;          # Connection to server has been reset.
+
+    private variable _first ""     ;    # This is the topmost dataset.
+    private variable _start 0
+    private variable _title ""
+    private variable _isolines
+    private variable _contourList ""
+    private variable _width 0
+    private variable _height 0
+    private variable _resizePending 0
+    private variable _legendPending 0
+    private variable _rotatePending 0
+    private variable _field      ""
+    private variable _colorMode "scalar"; #  Mode of colormap (vmag or scalar)
+    private variable _fields
+    private variable _curFldName ""
+    private variable _curFldLabel ""
+
+    private common _downloadPopup;      # download options from popup
+    private common _hardcopy
+}
+
+itk::usual VtkSurfaceViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::constructor {args} {
+    set _serverType "vtkvis"
+    #DebugOn
+
+    # Rebuild event
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Legend event
+    $_dispatcher register !legend
+    $_dispatcher dispatch $this !legend "[itcl::code $this RequestLegend]; list"
+
+    # Rotate event
+    $_dispatcher register !rotate
+    $_dispatcher dispatch $this !rotate "[itcl::code $this DoRotate]; list"
+
+    #
+    # Populate parser with commands handle incoming requests
+    #
+    $_parser alias image [itcl::code $this ReceiveImage]
+    $_parser alias legend [itcl::code $this ReceiveLegend]
+    $_parser alias dataset [itcl::code $this ReceiveDataset]
+
+    # Initialize the view to some default parameters.
+    array set _view {
+        -ortho    0
+        -qw       0.853553
+        -qx       -0.353553
+        -qy       0.353553
+        -qz       0.146447
+        -xpan     0
+        -ypan     0
+        -zoom     1.0
+    }
+    set _arcball [blt::arcball create 100 100]
+    $_arcball quaternion [ViewToQuaternion]
+
+    array set _settings {
+        -axesvisible            1
+        -axislabels             1
+        -axisminorticks         1
+        -axismode               "static"
+        -background             black
+        -colormap               BCGYR
+        -colormapvisible        1
+        -field                  "Default"
+        -isolinecolor           white
+        -isolinesvisible        0
+        -legendvisible          1
+        -numcontours            10
+        -outline                0
+        -surfaceedges           0
+        -surfacelighting        1
+        -surfaceopacity         100
+        -surfacevisible         1
+        -surfacewireframe       0
+        -xgrid                  0
+        -ygrid                  0
+        -zgrid                  0
+    }
+    array set _changed {
+        -colormap               0
+        -isolinecolor           0
+        -isolinesvisible        0
+        -numcontours            0
+        -outline                0
+        -surfaceedges           0
+        -surfacelighting        0
+        -surfaceopacity         0
+        -surfacevisible         0
+        -surfacewireframe       0
+    }
+
+    itk_component add view {
+        canvas $itk_component(plotarea).view \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth -background
+    }
+
+    itk_component add fieldmenu {
+        menu $itk_component(plotarea).menu -bg black -fg white -relief flat \
+            -tearoff 0
+    } {
+        usual
+        ignore -background -foreground -relief -tearoff
+    }
+    set c $itk_component(view)
+    bind $c <Configure> [itcl::code $this EventuallyResize %w %h]
+    bind $c <4> [itcl::code $this Zoom in 0.25]
+    bind $c <5> [itcl::code $this Zoom out 0.25]
+    bind $c <KeyPress-Left>  [list %W xview scroll 10 units]
+    bind $c <KeyPress-Right> [list %W xview scroll -10 units]
+    bind $c <KeyPress-Up>    [list %W yview scroll 10 units]
+    bind $c <KeyPress-Down>  [list %W yview scroll -10 units]
+    bind $c <Enter> "focus %W"
+    bind $c <Control-F1> [itcl::code $this ToggleConsole]
+
+    # Fix the scrollregion in case we go off screen
+    $c configure -scrollregion [$c bbox all]
+
+    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
+    set _map(cwidth) -1
+    set _map(cheight) -1
+    set _map(zoom) 1.0
+    set _map(original) ""
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    itk_component add surface {
+        Rappture::PushButton $f.surface \
+            -onimage [Rappture::icon volume-on] \
+            -offimage [Rappture::icon volume-off] \
+            -variable [itcl::scope _settings(-surfacevisible)] \
+            -command [itcl::code $this AdjustSetting -surfacevisible]
+    }
+    $itk_component(surface) select
+    Rappture::Tooltip::for $itk_component(surface) \
+        "Hide the surface"
+    pack $itk_component(surface) -padx 2 -pady 2
+
+    if { [catch {
+        BuildSurfaceTab
+        BuildAxisTab
+        BuildCameraTab
+    } errs] != 0 } {
+        puts stderr errs=$errs
+    }
+
+    # Legend
+    set _image(legend) [image create photo]
+    itk_component add legend {
+        canvas $itk_component(plotarea).legend -width 50 -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -plotbackground plotBackground Background
+    }
+
+    # Hack around the Tk panewindow.  The problem is that the requested
+    # size of the 3d view isn't set until an image is retrieved from
+    # the server.  So the panewindow uses the tiny size.
+    set w 10000
+    pack forget $itk_component(view)
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth $w
+    blt::table configure $itk_component(plotarea) c1 -resize none
+
+    # Bindings for rotation via mouse
+    bind $itk_component(view) <ButtonPress-1> \
+        [itcl::code $this Rotate click %x %y]
+    bind $itk_component(view) <B1-Motion> \
+        [itcl::code $this Rotate drag %x %y]
+    bind $itk_component(view) <ButtonRelease-1> \
+        [itcl::code $this Rotate release %x %y]
+
+    # Bindings for panning via mouse
+    bind $itk_component(view) <ButtonPress-2> \
+        [itcl::code $this Pan click %x %y]
+    bind $itk_component(view) <B2-Motion> \
+        [itcl::code $this Pan drag %x %y]
+    bind $itk_component(view) <ButtonRelease-2> \
+        [itcl::code $this Pan release %x %y]
+
+    #bind $itk_component(view) <ButtonRelease-3> \
+    #    [itcl::code $this Pick %x %y]
+
+    # Bindings for panning via keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -2 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 2 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -2]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 2]
+
+    # Bindings for zoom via keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        # Bindings for zoom via mouse
+        bind $itk_component(view) <4> [itcl::code $this Zoom out]
+        bind $itk_component(view) <5> [itcl::code $this Zoom in]
+    }
+
+    set _image(download) [image create photo]
+
+    eval itk_initialize $args
+
+    EnableWaitDialog 900
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::destructor {} {
+    Disconnect
+    image delete $_image(plot)
+    image delete $_image(download)
+    catch { blt::arcball destroy $_arcball }
+}
+
+itcl::body Rappture::VtkSurfaceViewer::DoResize {} {
+    if { $_width < 2 } {
+        set _width 500
+    }
+    if { $_height < 2 } {
+        set _height 500
+    }
+    set _start [clock clicks -milliseconds]
+    SendCmd "screen size $_width $_height"
+
+    EventuallyRequestLegend
+    set _resizePending 0
+}
+
+itcl::body Rappture::VtkSurfaceViewer::DoRotate {} {
+    SendCmd "camera orient [ViewToQuaternion]"
+    set _rotatePending 0
+}
+
+itcl::body Rappture::VtkSurfaceViewer::EventuallyRequestLegend {} {
+    if { !$_legendPending } {
+        set _legendPending 1
+        $_dispatcher event -idle !legend
+    }
+}
+
+itcl::body Rappture::VtkSurfaceViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    $_arcball resize $w $h
+    if { !$_resizePending } {
+        set _resizePending 1
+        $_dispatcher event -after 400 !resize
+    }
+}
+
+set rotate_delay 100
+
+itcl::body Rappture::VtkSurfaceViewer::EventuallyRotate { q } {
+    QuaternionToView $q
+    if { !$_rotatePending } {
+        set _rotatePending 1
+        global rotate_delay
+        $_dispatcher event -after $rotate_delay !rotate
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::add {dataobj {settings ""}} {
+    if { ![$dataobj isvalid] } {
+        return;                         # Object doesn't contain valid data.
+    }
+    array set params {
+        -color auto
+        -width 1
+        -linestyle solid
+        -brightness 0
+        -raise 0
+        -description ""
+        -param ""
+        -type ""
+    }
+    array set params $settings
+    set params(-description) ""
+    set params(-param) ""
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) black
+    }
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+    }
+    set _obj2ovride($dataobj-color) $params(-color)
+    set _obj2ovride($dataobj-width) $params(-width)
+    set _obj2ovride($dataobj-raise) $params(-raise)
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.  No data objects are
+# deleted.  They are only removed from the display list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::delete {args} {
+    if { [llength $args] == 0} {
+        set args $_dlist
+    }
+    # Delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if { $pos < 0 } {
+            continue;                   # Don't know anything about it.
+        }
+        # Remove it from the dataobj list.
+        set _dlist [lreplace $_dlist $pos $pos]
+        array unset _obj2ovride $dataobj-*
+        array unset _settings $dataobj-*
+        set changed 1
+    }
+    # If anything changed, then rebuild the plot
+    if { $changed } {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-objects?
+# USAGE: get ?-visible?
+# USAGE: get ?-image view?
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.  The optional "-image"
+# flag can also request the internal images being shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::get {args} {
+    if {[llength $args] == 0} {
+        set args "-objects"
+    }
+
+    set op [lindex $args 0]
+    switch -- $op {
+        "-objects" {
+            # put the dataobj list in order according to -raise options
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if {[info exists _obj2ovride($dataobj-raise)] &&
+                    $_obj2ovride($dataobj-raise)} {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        "-visible" {
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if { ![info exists _obj2ovride($dataobj-raise)] } {
+                    # No setting indicates that the object isn't visible.
+                    continue
+                }
+                # Otherwise use the -raise parameter to put the object to
+                # the front of the list.
+                if { $_obj2ovride($dataobj-raise) } {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        -image {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"get -image view\""
+            }
+            switch -- [lindex $args end] {
+                view {
+                    return $_image(plot)
+                }
+                default {
+                    error "bad image name \"[lindex $args end]\": should be view"
+                }
+            }
+        }
+        default {
+            error "bad option \"$op\": should be -objects or -image"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<data1> <data2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <data> objects.  This
+# accounts for all objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::scale { args } {
+    foreach dataobj $args {
+        if { ![$dataobj isvalid] } {
+            continue;                   # Object doesn't contain valid data.
+        }
+        foreach axis { x y z } {
+            set lim [$dataobj limits $axis]
+            if { ![info exists _limits($axis)] } {
+                set _limits($axis) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {amin amax} $_limits($axis) break
+            if { $amin > $min } {
+                set amin $min
+            }
+            if { $amax < $max } {
+                set amax $max
+            }
+            set _limits($axis) [list $amin $amax]
+        }
+        foreach { fname lim } [$dataobj fieldlimits] {
+            if { ![info exists _limits($fname)] } {
+                set _limits($fname) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {fmin fmax} $_limits($fname) break
+            if { $fmin > $min } {
+                set fmin $min
+            }
+            if { $fmax < $max } {
+                set fmax $max
+            }
+            set _limits($fname) [list $fmin $fmax]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::download {option args} {
+    switch $option {
+        coming {
+            if {[catch {
+                blt::winop snap $itk_component(plotarea) $_image(download)
+            }]} {
+                $_image(download) configure -width 1 -height 1
+                $_image(download) put #000000
+            }
+        }
+        controls {
+            set popup .vtkviewerdownload
+            if { ![winfo exists .vtkviewerdownload] } {
+                set inner [BuildDownloadPopup $popup [lindex $args 0]]
+            } else {
+                set inner [$popup component inner]
+            }
+            set _downloadPopup(image_controls) $inner.image_frame
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks            ;# Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .vtkviewerdownload
+            if {[winfo exists .vtkviewerdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "image" {
+                    return [$this GetImage [lindex $args 0]]
+                }
+                "vtk" {
+                    return [$this GetVtkData [lindex $args 0]]
+                }
+            }
+            return ""
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Connect ?<host:port>,<host:port>...?
+#
+# Clients use this method to establish a connection to a new
+# server, or to reestablish a connection to the previous server.
+# Any existing connection is automatically closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::Connect {} {
+    set _hosts [GetServerList "vtkvis"]
+    if { "" == $_hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $_hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "vtksurfaceviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        EventuallyResize $w $h
+    }
+    return $result
+}
+
+#
+# isconnected --
+#
+# Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::VtkSurfaceViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# disconnect --
+#
+itcl::body Rappture::VtkSurfaceViewer::disconnect {} {
+    Disconnect
+    set _reset 1
+}
+
+#
+# Disconnect --
+#
+# Clients use this method to disconnect from the current rendering server.
+#
+itcl::body Rappture::VtkSurfaceViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    $_dispatcher cancel !rebuild
+    $_dispatcher cancel !resize
+    $_dispatcher cancel !rotate
+    $_dispatcher cancel !legend
+    # disconnected -- no more data sitting on server
+    array unset _datasets
+    array unset _colormaps
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveImage -bytes <size> -type <type> -token <token>
+#
+# Invoked automatically whenever the "image" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::ReceiveImage { args } {
+    array set info {
+        -token "???"
+        -bytes 0
+        -type image
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    if { $info(-type) == "image" } {
+        if 0 {
+            set f [open "last.ppm" "w"]
+            fconfigure $f -encoding binary
+            puts -nonewline $f $bytes
+            close $f
+        }
+        $_image(plot) configure -data $bytes
+        #set time [clock seconds]
+        #set date [clock format $time]
+        #set w [image width $_image(plot)]
+        #set h [image height $_image(plot)]
+        #puts stderr "$date: received image ${w}x${h} image"
+        if { $_start > 0 } {
+            set finish [clock clicks -milliseconds]
+            #puts stderr "round trip time [expr $finish -$_start] milliseconds"
+            set _start 0
+        }
+    } elseif { $info(type) == "print" } {
+        set tag $this-print-$info(-token)
+        set _hardcopy($tag) $bytes
+    }
+}
+
+#
+# ReceiveDataset --
+#
+itcl::body Rappture::VtkSurfaceViewer::ReceiveDataset { args } {
+    if { ![isconnected] } {
+        return
+    }
+    set option [lindex $args 0]
+    switch -- $option {
+        "scalar" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z value tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y value tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "vector" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z vx vy vz tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y vx vy vz tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "names" {
+            foreach { name } [lindex $args 1] {
+                #puts stderr "Dataset: $name"
+            }
+        }
+        default {
+            error "unknown dataset option \"$option\" from server"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::Rebuild {} {
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $w < 2 || $h < 2 } {
+        update
+        $_dispatcher event -idle !rebuild
+        return
+    }
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (which automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+
+    if { $_reset } {
+        set _width $w
+        set _height $h
+        $_arcball resize $w $h
+        DoResize
+        # Reset the camera and other view parameters
+        $_arcball quaternion [ViewToQuaternion]
+        if {$_view(-ortho)} {
+            SendCmd "camera mode ortho"
+        } else {
+            SendCmd "camera mode persp"
+        }
+        DoRotate
+        PanCamera
+        set _first ""
+        InitSettings -background \
+            -xgrid -ygrid -zgrid -axismode \
+            -axesvisible -axislabels -axisminorticks
+        #SendCmd "axis lformat all %g"
+        StopBufferingCommands
+        SendCmd "imgflush"
+        StartBufferingCommands
+    }
+    set _first ""
+    SendCmd "dataset visible 0"
+    eval scale $_dlist
+    foreach dataobj [get -objects] {
+        if { [info exists _obj2ovride($dataobj-raise)] &&  $_first == "" } {
+            set _first $dataobj
+            SetCurrentFieldName $dataobj
+        }
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { ![info exists _datasets($tag)] } {
+                set bytes [$dataobj vtkdata $comp]
+                if 0 {
+                    set f [open "/tmp/surface.vtk" "w"]
+                    fconfigure $f -translation binary -encoding binary
+                    puts -nonewline $f $bytes
+                    close $f
+                }
+                set length [string length $bytes]
+                if { $_reportClientInfo }  {
+                    set info {}
+                    lappend info "tool_id"       [$dataobj hints toolid]
+                    lappend info "tool_name"     [$dataobj hints toolname]
+                    lappend info "tool_title"    [$dataobj hints tooltitle]
+                    lappend info "tool_command"  [$dataobj hints toolcommand]
+                    lappend info "tool_revision" [$dataobj hints toolrevision]
+                    lappend info "dataset_label" [$dataobj hints label]
+                    lappend info "dataset_size"  $length
+                    lappend info "dataset_tag"   $tag
+                    SendCmd "clientinfo [list $info]"
+                }
+                SendCmd "dataset add $tag data follows $length"
+                SendData $bytes
+                set _datasets($tag) 1
+                SetObjectStyle $dataobj $comp
+            }
+            if { [info exists _obj2ovride($dataobj-raise)] } {
+                SendCmd "polydata visible 1 $tag"
+            }
+        }
+    }
+
+    InitSettings -isolinesvisible -surfacevisible -outline
+    if { $_reset } {
+        # These are settings that rely on a dataset being loaded.
+        InitSettings \
+            -surfacelighting \
+            -field \
+            -surfaceedges -surfacelighting -surfaceopacity \
+            -surfacewireframe \
+            -numcontours
+
+        Zoom reset
+        foreach axis { x y z } {
+            set label ""
+            if { $_first != "" } {
+                set label [$_first hints ${axis}label]
+            }
+            if { $label == "" } {
+                set label [string toupper $axis]
+            }
+            # There may be a space in the axis label.
+            SendCmd [list axis name $axis $label]
+        }
+        if { [array size _fields] < 2 } {
+            catch {blt::table forget $itk_component(field) $itk_component(field_l)}
+        }
+        set _reset 0
+    }
+    # Redraw the legend even if we're using the same colormap. The position
+    # of the isolines may have changed because the range of data changed.
+    DrawLegend
+
+    # Actually write the commands to the server socket.  If it fails, we don't
+    # care.  We're finished here.
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands;              # Turn off buffering and send commands.
+    blt::busy release $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CurrentDatasets ?-all -visible? ?dataobjs?
+#
+# Returns a list of server IDs for the current datasets being displayed.  This
+# is normally a single ID, but it might be a list of IDs if the current data
+# object has multiple components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::CurrentDatasets {args} {
+    set flag [lindex $args 0]
+    switch -- $flag {
+        "-all" {
+            if { [llength $args] > 1 } {
+                error "CurrentDatasets: can't specify dataobj after \"-all\""
+            }
+            set dlist [get -objects]
+        }
+        "-visible" {
+            if { [llength $args] > 1 } {
+                set dlist {}
+                set args [lrange $args 1 end]
+                foreach dataobj $args {
+                    if { [info exists _obj2ovride($dataobj-raise)] } {
+                        lappend dlist $dataobj
+                    }
+                }
+            } else {
+                set dlist [get -visible]
+            }
+        }
+        default {
+            set dlist $args
+        }
+    }
+    set rlist ""
+    foreach dataobj $dlist {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { [info exists _datasets($tag)] && $_datasets($tag) } {
+                lappend rlist $tag
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::Zoom {option} {
+    switch -- $option {
+        "in" {
+            set _view(-zoom) [expr {$_view(-zoom)*1.25}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "out" {
+            set _view(-zoom) [expr {$_view(-zoom)*0.8}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "reset" {
+            array set _view {
+                -qw      0.853553
+                -qx      -0.353553
+                -qy      0.353553
+                -qz      0.146447
+                -xpan    0
+                -ypan    0
+                -zoom    1.0
+            }
+            if { $_first != "" } {
+                set location [$_first hints camera]
+                if { $location != "" } {
+                    array set _view $location
+                }
+            }
+            $_arcball quaternion [ViewToQuaternion]
+            DoRotate
+            SendCmd "camera reset"
+        }
+    }
+}
+
+itcl::body Rappture::VtkSurfaceViewer::PanCamera {} {
+    set x $_view(-xpan)
+    set y $_view(-ypan)
+    SendCmd "camera pan $x $y"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::Rotate {option x y} {
+    switch -- $option {
+        "click" {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "drag" {
+            if {[array size _click] == 0} {
+                Rotate click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+                if { $dx == 0 && $dy == 0 } {
+                    return
+                }
+                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
+                EventuallyRotate $q
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        "release" {
+            Rotate drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
+
+itcl::body Rappture::VtkSurfaceViewer::Pick {x y} {
+    foreach tag [CurrentDatasets -visible] {
+        SendCmd "dataset getscalar pixel $x $y $tag"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::Pan {option x y} {
+    switch -- $option {
+        "set" {
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set x [expr $x / double($w)]
+            set y [expr $y / double($h)]
+            set _view(-xpan) [expr $_view(-xpan) + $x]
+            set _view(-ypan) [expr $_view(-ypan) + $y]
+            PanCamera
+            return
+        }
+        "click" {
+            set _click(x) $x
+            set _click(y) $y
+            $itk_component(view) configure -cursor hand1
+        }
+        "drag" {
+            if { ![info exists _click(x)] } {
+                set _click(x) $x
+            }
+            if { ![info exists _click(y)] } {
+                set _click(y) $y
+            }
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set dx [expr ($_click(x) - $x)/double($w)]
+            set dy [expr ($_click(y) - $y)/double($h)]
+            set _click(x) $x
+            set _click(y) $y
+            set _view(-xpan) [expr $_view(-xpan) - $dx]
+            set _view(-ypan) [expr $_view(-ypan) - $dy]
+            PanCamera
+        }
+        "release" {
+            Pan drag $x $y
+            $itk_component(view) configure -cursor ""
+        }
+        default {
+            error "unknown option \"$option\": should set, click, drag, or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitSettings <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::InitSettings { args } {
+    foreach spec $args {
+        if { [info exists _settings($_first${spec})] } {
+            # Reset global setting with dataobj specific setting
+            set _settings($spec) $_settings($_first${spec})
+        }
+        AdjustSetting $spec
+    }
+}
+
+#
+# AdjustSetting --
+#
+# Changes/updates a specific setting in the widget.  There are
+# usually user-setable option.  Commands are sent to the render
+# server.
+#
+itcl::body Rappture::VtkSurfaceViewer::AdjustSetting {what {value ""}} {
+    if { ![isconnected] } {
+        return
+    }
+    switch -- $what {
+        "-axesvisible" {
+            set bool $_settings($what)
+            SendCmd "axis visible all $bool"
+        }
+        "-axislabels" {
+            set bool $_settings($what)
+            SendCmd "axis labels all $bool"
+        }
+        "-axisminorticks" {
+            set bool $_settings($what)
+            SendCmd "axis minticks all $bool"
+        }
+        "-axismode" {
+            set mode [$itk_component(axisMode) value]
+            set mode [$itk_component(axisMode) translate $mode]
+            set _settings($what) $mode
+            SendCmd "axis flymode $mode"
+        }
+        "-background" {
+            set bgcolor [$itk_component(background) value]
+            array set fgcolors {
+                "black" "white"
+                "white" "black"
+                "grey"  "black"
+            }
+            configure -plotbackground $bgcolor \
+                -plotforeground $fgcolors($bgcolor)
+            $itk_component(view) delete "legend"
+            DrawLegend
+        }
+        "-colormap" {
+            set _changed($what) 1
+            StartBufferingCommands
+            set color [$itk_component(colormap) value]
+            set _settings($what) $color
+            if { $color == "none" } {
+                if { $_settings(-colormapvisible) } {
+                    SendCmd "contour2d colormode constant {}"
+                    SendCmd "polydata colormode constant {}"
+                    set _settings(-colormapvisible) 0
+                }
+            } else {
+                if { !$_settings(-colormapvisible) } {
+                    #SendCmd "contour2d colormode $_colorMode $_curFldName"
+                    SendCmd "polydata colormode $_colorMode $_curFldName"
+                    set _settings(-colormapvisible) 1
+                }
+                SetCurrentColormap $color
+                if {$_settings(-colormapdiscrete)} {
+                    set numColors [expr $_settings(-numcontours) + 1]
+                    SendCmd "colormap res $numColors $color"
+                }
+            }
+            StopBufferingCommands
+            EventuallyRequestLegend
+        }
+        "-colormapdiscrete" {
+            set bool $_settings($what)
+            set numColors [expr $_settings(-numcontours) + 1]
+            StartBufferingCommands
+            if {$bool} {
+                SendCmd "colormap res $numColors"
+                # Discrete colormap requires preinterp on
+                SendCmd "polydata preinterp on"
+            } else {
+                SendCmd "colormap res default"
+                # FIXME: add setting for preinterp (default on)
+                SendCmd "polydata preinterp on"
+            }
+            StopBufferingCommands
+            EventuallyRequestLegend
+        }
+        "-field" {
+            set label [$itk_component(field) value]
+            set fname [$itk_component(field) translate $label]
+            set _settings($what) $fname
+            if { [info exists _fields($fname)] } {
+                foreach { label units components } $_fields($fname) break
+                if { $components > 1 } {
+                    set _colorMode vmag
+                } else {
+                    set _colorMode scalar
+                }
+                set _curFldName $fname
+                set _curFldLabel $label
+            } else {
+                puts stderr "unknown field \"$fname\""
+                return
+            }
+            SendCmd "dataset scalar $_curFldName"
+            if { ![info exists _limits($_curFldName)] } {
+                SendCmd "dataset maprange all"
+            } else {
+                SendCmd "dataset maprange explicit $_limits($_curFldName) $_curFldName"
+            }
+            #SendCmd "contour2d colormode $_colorMode $_curFldName"
+            SendCmd "polydata colormode $_colorMode $_curFldName"
+            UpdateContourList
+            SendCmd "contour2d contourlist [list $_contourList]"
+            SendCmd "camera reset"
+            DrawLegend
+        }
+        "-isolinecolor" {
+            set _changed($what) 1
+            set color [$itk_component(isolineColor) value]
+            set _settings($what) $color
+            SendCmd "contour2d linecolor [Color2RGB $color]"
+            DrawLegend
+        }
+        "-isolinesvisible" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "contour2d visible 0"
+            if { $bool } {
+                foreach tag [CurrentDatasets -visible] {
+                    SendCmd "contour2d visible $bool $tag"
+                }
+            }
+            DrawLegend
+        }
+        "-legendvisible" {
+            if { !$_settings($what) } {
+                $itk_component(view) delete legend
+            }
+            DrawLegend
+        }
+        "-numcontours" {
+            set _settings($what) [$itk_component(numcontours) value]
+            set _currentNumContours $_settings($what)
+            UpdateContourList
+            set _changed($what) 1
+            SendCmd "contour2d contourlist [list $_contourList]"
+            if {$_settings(-colormapdiscrete)} {
+                set numColors [expr $_settings($what) + 1]
+                SendCmd "colormap res $numColors"
+                EventuallyRequestLegend
+            } else {
+                DrawLegend
+            }
+        }
+        "-outline" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "outline visible 0"
+            if { $bool } {
+                foreach tag [CurrentDatasets -visible] {
+                    SendCmd "outline visible $bool $tag"
+                }
+            }
+        }
+        "-surfaceedges" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "polydata edges $bool"
+        }
+        "-surfacelighting" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "polydata lighting $bool"
+        }
+        "-surfaceopacity" {
+            set _changed($what) 1
+            set val $_settings($what)
+            set sval [expr { 0.01 * double($val) }]
+            SendCmd "polydata opacity $sval"
+        }
+        "-surfacevisible" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "polydata visible 0"
+            if { $bool } {
+                foreach tag [CurrentDatasets -visible] {
+                    SendCmd "polydata visible $bool $tag"
+                }
+                Rappture::Tooltip::for $itk_component(surface) \
+                    "Hide the surface"
+            } else {
+                Rappture::Tooltip::for $itk_component(surface) \
+                    "Show the surface"
+            }
+            DrawLegend
+        }
+        "-surfacewireframe" {
+            set _changed($what) 1
+            set bool $_settings($what)
+            SendCmd "polydata wireframe $bool"
+        }
+        "-xgrid" - "-ygrid" - "-zgrid" {
+            set axis [string tolower [string range $what 1 1]]
+            set bool $_settings($what)
+            SendCmd "axis grid $axis $bool"
+        }
+        default {
+            error "don't know how to fix $what"
+        }
+    }
+}
+
+#
+# RequestLegend --
+#
+# Request a new legend from the server.  The size of the legend
+# is determined from the height of the canvas.
+#
+# This should be called when
+#   1.  A new current colormap is set.
+#   2.  Window is resized.
+#   3.  The limits of the data have changed.  (Just need a redraw).
+#   4.  Number of isolines have changed. (Just need a redraw).
+#   5.  Legend becomes visible (Just need a redraw).
+#
+itcl::body Rappture::VtkSurfaceViewer::RequestLegend {} {
+    set _legendPending 0
+    if { ![info exists _fields($_curFldName)] } {
+        return
+    }
+    set fname $_curFldName
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+    set w 12
+    set h [expr {$_height - 2 * ($lineht + 2)}]
+    if { $h < 1 } {
+        return
+    }
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    # If there's a title too, subtract one more line
+    if { $title != "" } {
+        incr h -$lineht
+    }
+    # Set the legend on the first dataset.
+    if { $_currentColormap != "" } {
+        set cmap $_currentColormap
+        if { ![info exists _colormaps($cmap)] } {
+            BuildColormap $cmap
+            set _colormaps($cmap) 1
+        }
+        #SendCmd "legend $cmap scalar $_curFldName {} $w $h 0"
+        SendCmd "legend2 $cmap $w $h"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkSurfaceViewer::plotbackground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotbackground)]
+        SendCmd "screen bgcolor $rgb"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkSurfaceViewer::plotforeground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotforeground)]
+        SendCmd "axis color all $rgb"
+        SendCmd "outline color $rgb"
+    }
+}
+
+itcl::body Rappture::VtkSurfaceViewer::BuildSurfaceTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Surface Settings" \
+        -icon [Rappture::icon volume-on]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.surface \
+        -text "Surface" \
+        -variable [itcl::scope _settings(-surfacevisible)] \
+        -command [itcl::code $this AdjustSetting -surfacevisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.isolines \
+        -text "Isolines" \
+        -variable [itcl::scope _settings(-isolinesvisible)] \
+        -command [itcl::code $this AdjustSetting -isolinesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.colormapDiscrete \
+        -text "Discrete Colormap" \
+        -variable [itcl::scope _settings(-colormapdiscrete)] \
+        -command [itcl::code $this AdjustSetting -colormapdiscrete] \
+        -font "Arial 9"
+
+    checkbutton $inner.wireframe \
+        -text "Wireframe" \
+        -variable [itcl::scope _settings(-surfacewireframe)] \
+        -command [itcl::code $this AdjustSetting -surfacewireframe] \
+        -font "Arial 9"
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(-surfacelighting)] \
+        -command [itcl::code $this AdjustSetting -surfacelighting] \
+        -font "Arial 9"
+
+    checkbutton $inner.edges \
+        -text "Edges" \
+        -variable [itcl::scope _settings(-surfaceedges)] \
+        -command [itcl::code $this AdjustSetting -surfaceedges] \
+        -font "Arial 9"
+
+    checkbutton $inner.outline \
+        -text "Outline" \
+        -variable [itcl::scope _settings(-outline)] \
+        -command [itcl::code $this AdjustSetting -outline] \
+        -font "Arial 9"
+
+    checkbutton $inner.legend \
+        -text "Legend" \
+        -variable [itcl::scope _settings(-legendvisible)] \
+        -command [itcl::code $this AdjustSetting -legendvisible] \
+        -font "Arial 9"
+
+    label $inner.linecolor_l -text "Isolines" -font "Arial 9"
+    itk_component add isolineColor {
+        Rappture::Combobox $inner.linecolor -width 10 -editable 0
+    }
+    $inner.linecolor choices insert end \
+        "black"              "black"            \
+        "blue"               "blue"             \
+        "cyan"               "cyan"             \
+        "green"              "green"            \
+        "grey"               "grey"             \
+        "magenta"            "magenta"          \
+        "orange"             "orange"           \
+        "red"                "red"              \
+        "white"              "white"            \
+        "none"               "none"
+
+    $itk_component(isolineColor) value "white"
+    bind $inner.linecolor <<Value>> \
+        [itcl::code $this AdjustSetting -isolinecolor]
+
+    label $inner.background_l -text "Background" -font "Arial 9"
+    itk_component add background {
+        Rappture::Combobox $inner.background -width 10 -editable 0
+    }
+    $inner.background choices insert end \
+        "black"              "black"            \
+        "white"              "white"            \
+        "grey"               "grey"
+
+    $itk_component(background) value $_settings(-background)
+    bind $inner.background <<Value>> \
+        [itcl::code $this AdjustSetting -background]
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9"
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-surfaceopacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -surfaceopacity]
+
+    itk_component add field_l {
+        label $inner.field_l -text "Field" -font "Arial 9"
+    } {
+        ignore -font
+    }
+    itk_component add field {
+        Rappture::Combobox $inner.field -width 10 -editable 0
+    }
+    bind $inner.field <<Value>> \
+        [itcl::code $this AdjustSetting -field]
+
+    label $inner.colormap_l -text "Colormap" -font "Arial 9"
+    itk_component add colormap {
+        Rappture::Combobox $inner.colormap -width 10 -editable 0
+    }
+    $inner.colormap choices insert end [GetColormapList]
+
+    $itk_component(colormap) value "BCGYR"
+    bind $inner.colormap <<Value>> \
+        [itcl::code $this AdjustSetting -colormap]
+
+    label $inner.numcontours_l -text "Number of Isolines" -font "Arial 9"
+    itk_component add numcontours {
+        Rappture::Spinint $inner.numcontours \
+            -min 0 -max 50 -font "arial 9"
+    }
+    $itk_component(numcontours) value $_settings(-numcontours)
+    bind $itk_component(numcontours) <<Value>> \
+        [itcl::code $this AdjustSetting -numcontours]
+
+    blt::table $inner \
+        0,0 $inner.field_l      -anchor w -pady 2 \
+        0,1 $inner.field        -anchor w -pady 2 -fill x \
+        1,0 $inner.colormap_l   -anchor w -pady 2 \
+        1,1 $inner.colormap     -anchor w -pady 2 -fill x \
+        2,0 $inner.linecolor_l  -anchor w -pady 2 \
+        2,1 $inner.linecolor    -anchor w -pady 2 -fill x \
+        3,0 $inner.background_l -anchor w -pady 2 \
+        3,1 $inner.background   -anchor w -pady 2 -fill x \
+        4,0 $inner.numcontours_l -anchor w -pady 2 \
+        4,1 $inner.numcontours  -anchor w -pady 2 \
+        5,0 $inner.colormapDiscrete -anchor w -pady 2 -cspan 2 \
+        6,0 $inner.isolines     -anchor w -pady 2 -cspan 2 \
+        7,0 $inner.wireframe    -anchor w -pady 2 -cspan 2 \
+        8,0 $inner.lighting     -anchor w -pady 2 -cspan 2 \
+        9,0 $inner.edges        -anchor w -pady 2 -cspan 2 \
+        10,0 $inner.outline     -anchor w -pady 2 -cspan 2 \
+        11,0 $inner.legend      -anchor w -pady 2 \
+        12,0 $inner.opacity_l   -anchor w -pady 2 \
+        12,1 $inner.opacity     -fill x   -pady 2 -fill x \
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r13 c1 -resize expand
+}
+
+itcl::body Rappture::VtkSurfaceViewer::BuildAxisTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Axis Settings" \
+        -icon [Rappture::icon axis2]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Axes" \
+        -variable [itcl::scope _settings(-axesvisible)] \
+        -command [itcl::code $this AdjustSetting -axesvisible] \
+        -font "Arial 9"
+
+    checkbutton $inner.labels \
+        -text "Axis Labels" \
+        -variable [itcl::scope _settings(-axislabels)] \
+        -command [itcl::code $this AdjustSetting -axislabels] \
+        -font "Arial 9"
+    label $inner.grid_l -text "Grid" -font "Arial 9"
+    checkbutton $inner.xgrid \
+        -text "X" \
+        -variable [itcl::scope _settings(-xgrid)] \
+        -command [itcl::code $this AdjustSetting -xgrid] \
+        -font "Arial 9"
+    checkbutton $inner.ygrid \
+        -text "Y" \
+        -variable [itcl::scope _settings(-ygrid)] \
+        -command [itcl::code $this AdjustSetting -ygrid] \
+        -font "Arial 9"
+    checkbutton $inner.zgrid \
+        -text "Z" \
+        -variable [itcl::scope _settings(-zgrid)] \
+        -command [itcl::code $this AdjustSetting -zgrid] \
+        -font "Arial 9"
+    checkbutton $inner.minorticks \
+        -text "Minor Ticks" \
+        -variable [itcl::scope _settings(-axisminorticks)] \
+        -command [itcl::code $this AdjustSetting -axisminorticks] \
+        -font "Arial 9"
+
+    label $inner.mode_l -text "Mode" -font "Arial 9"
+
+    itk_component add axisMode {
+        Rappture::Combobox $inner.mode -width 10 -editable 0
+    }
+    $inner.mode choices insert end \
+        "static_triad"    "static" \
+        "closest_triad"   "closest" \
+        "furthest_triad"  "farthest" \
+        "outer_edges"     "outer"
+    $itk_component(axisMode) value $_settings(-axismode)
+    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -axismode]
+
+    blt::table $inner \
+        0,0 $inner.visible    -anchor w -cspan 4 \
+        1,0 $inner.labels     -anchor w -cspan 4 \
+        2,0 $inner.minorticks -anchor w -cspan 4 \
+        4,0 $inner.grid_l     -anchor w \
+        4,1 $inner.xgrid      -anchor w \
+        4,2 $inner.ygrid      -anchor w \
+        4,3 $inner.zgrid      -anchor w \
+        5,0 $inner.mode_l     -anchor w -padx { 2 0 } \
+        5,1 $inner.mode       -fill x   -cspan 3
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c6 -resize expand
+    blt::table configure $inner r3 -height 0.125i
+}
+
+itcl::body Rappture::VtkSurfaceViewer::BuildCameraTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Camera Settings" \
+        -icon [Rappture::icon camera]]
+    $inner configure -borderwidth 4
+
+    label $inner.view_l -text "view" -font "Arial 9"
+    set f [frame $inner.view]
+    foreach side { front back left right top bottom } {
+        button $f.$side  -image [Rappture::icon view$side] \
+            -command [itcl::code $this SetOrientation $side]
+        Rappture::Tooltip::for $f.$side "Change the view to $side"
+        pack $f.$side -side left
+    }
+
+    blt::table $inner \
+        0,0 $inner.view_l -anchor e -pady 2 \
+        0,1 $inner.view -anchor w -pady 2
+    blt::table configure $inner r0 -resize none
+
+    set labels { qx qy qz qw xpan ypan zoom }
+    set row 1
+    foreach tag $labels {
+        label $inner.${tag}label -text $tag -font "Arial 9"
+        entry $inner.${tag} -font "Arial 9"  -bg white \
+            -textvariable [itcl::scope _view(-$tag)]
+        bind $inner.${tag} <Return> \
+            [itcl::code $this camera set -${tag}]
+        bind $inner.${tag} <KP_Enter> \
+            [itcl::code $this camera set -${tag}]
+        blt::table $inner \
+            $row,0 $inner.${tag}label -anchor e -pady 2 \
+            $row,1 $inner.${tag} -anchor w -pady 2
+        blt::table configure $inner r$row -resize none
+        incr row
+    }
+    checkbutton $inner.ortho \
+        -text "Orthographic Projection" \
+        -variable [itcl::scope _view(-ortho)] \
+        -command [itcl::code $this camera set -ortho] \
+        -font "Arial 9"
+    blt::table $inner \
+            $row,0 $inner.ortho -cspan 2 -anchor w -pady 2
+    blt::table configure $inner r$row -resize none
+    incr row
+
+    blt::table configure $inner c* -resize none
+    blt::table configure $inner c2 -resize expand
+    blt::table configure $inner r$row -resize expand
+}
+
+#
+# camera --
+#
+itcl::body Rappture::VtkSurfaceViewer::camera {option args} {
+    switch -- $option {
+        "show" {
+            puts [array get _view]
+        }
+        "set" {
+            set what [lindex $args 0]
+            set x $_view($what)
+            set code [catch { string is double $x } result]
+            if { $code != 0 || !$result } {
+                return
+            }
+            switch -- $what {
+                "-ortho" {
+                    if {$_view($what)} {
+                        SendCmd "camera mode ortho"
+                    } else {
+                        SendCmd "camera mode persp"
+                    }
+                }
+                "-xpan" - "-ypan" {
+                    PanCamera
+                }
+                "-qx" - "-qy" - "-qz" - "-qw" {
+                    set q [ViewToQuaternion]
+                    $_arcball quaternion $q
+                    EventuallyRotate $q
+                }
+                "-zoom" {
+                    SendCmd "camera zoom $_view($what)"
+                }
+             }
+        }
+    }
+}
+
+itcl::body Rappture::VtkSurfaceViewer::GetVtkData { args } {
+    set bytes ""
+    foreach dataobj [get] {
+        foreach cname [$dataobj components] {
+            set tag $dataobj-$cname
+            set contents [$dataobj vtkdata $cname]
+            append bytes "$contents\n"
+        }
+    }
+    return [list .vtk $bytes]
+}
+
+itcl::body Rappture::VtkSurfaceViewer::GetImage { args } {
+    if { [image width $_image(download)] > 0 &&
+         [image height $_image(download)] > 0 } {
+        set bytes [$_image(download) data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        return [list .jpg $bytes]
+    }
+    return ""
+}
+
+itcl::body Rappture::VtkSurfaceViewer::BuildDownloadPopup { popup command } {
+    Rappture::Balloon $popup \
+        -title "[Rappture::filexfer::label downloadWord] as..."
+    set inner [$popup component inner]
+    label $inner.summary -text "" -anchor w
+    radiobutton $inner.vtk_button -text "VTK data file" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value vtk
+    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
+    radiobutton $inner.image_button -text "Image File" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Arial 9 " \
+        -value image
+    Rappture::Tooltip::for $inner.image_button \
+        "Save as digital image."
+
+    button $inner.ok -text "Save" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command $command \
+        -compound left \
+        -image [Rappture::icon download]
+
+    button $inner.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command [list $popup deactivate] \
+        -compound left \
+        -image [Rappture::icon cancel]
+
+    blt::table $inner \
+        0,0 $inner.summary -cspan 2  \
+        1,0 $inner.vtk_button -anchor w -cspan 2 -padx { 4 0 } \
+        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
+        4,1 $inner.cancel -width .9i -fill y \
+        4,0 $inner.ok -padx 2 -width .9i -fill y
+    blt::table configure $inner r3 -height 4
+    blt::table configure $inner r4 -pady 4
+    raise $inner.image_button
+    $inner.vtk_button invoke
+    return $inner
+}
+
+itcl::body Rappture::VtkSurfaceViewer::SetObjectStyle { dataobj comp } {
+    # Parse style string.
+    set tag $dataobj-$comp
+    array set style {
+        -color           BCGYR
+        -edgecolor       black
+        -edges           0
+        -isolinecolor    white
+        -isolinesvisible 0
+        -levels          10
+        -lighting        1
+        -linewidth       1.0
+        -opacity         1.0
+        -outline         0
+        -surfacevisible  1
+        -wireframe       0
+    }
+    array set style [$dataobj style $comp]
+
+    # This is too complicated.  We want to set the colormap, number of
+    # isolines and opacity for the dataset.  They can be the default values,
+    # the style hints loaded with the dataset, or set by user controls.  As
+    # datasets get loaded, they first use the defaults that are overidden
+    # by the style hints.  If the user changes the global controls, then that
+    # overrides everything else.  I don't know what it means when global
+    # controls are specified as style hints by each dataset.  It complicates
+    # the code to handle aberrant cases.
+
+    if { $_changed(-surfaceedges) } {
+        set style(-edges) $_settings(-surfaceedges)
+    }
+    if { $_changed(-surfacelighting) } {
+        set style(-lighting) $_settings(-surfacelighting)
+    }
+    if { $_changed(-surfaceopacity) } {
+        set style(-opacity) [expr $_settings(-surfaceopacity) * 0.01]
+    }
+    if { $_changed(-surfacewireframe) } {
+        set style(-wireframe) $_settings(-surfacewireframe)
+    }
+    if { $_changed(-numcontours) } {
+        set style(-levels) $_settings(-numcontours)
+    }
+    if { $_changed(-colormap) } {
+        set style(-color) $_settings(-colormap)
+    }
+    if { $_currentColormap == "" } {
+        SetCurrentColormap $style(-color)
+        $itk_component(colormap) value $style(-color)
+    }
+    if { $_currentNumContours != $style(-levels) } {
+        set _currentNumContours $style(-levels)
+        set _settings(-numcontours) $_currentNumContours
+        $itk_component(numcontours) value $_currentNumContours
+        UpdateContourList
+        DrawLegend
+    }
+    foreach setting {-outline -isolinesvisible -surfacevisible -isolinecolor} {
+        if {$_changed($setting)} {
+            # User-modified UI setting overrides style
+            set style($setting) $_settings($setting)
+        } else {
+            # Set UI control to style setting (tool provided or default)
+            set _settings($setting) $style($setting)
+        }
+    }
+
+    SendCmd "outline add $tag"
+    SendCmd "outline color [Color2RGB $itk_option(-plotforeground)] $tag"
+    SendCmd "outline visible $style(-outline) $tag"
+
+    SendCmd "polydata add $tag"
+    if { $_curFldName != "" } {
+        SendCmd "polydata colormode $_colorMode $_curFldName $tag"
+    }
+    SendCmd "polydata edges $style(-edges) $tag"
+    set _settings(-surfaceedges) $style(-edges)
+    #SendCmd "polydata color [Color2RGB $settings(-color)] $tag"
+    SendCmd "polydata lighting $style(-lighting) $tag"
+    set _settings(-surfacelighting) $style(-lighting)
+    SendCmd "polydata linecolor [Color2RGB $style(-edgecolor)] $tag"
+    SendCmd "polydata linewidth $style(-linewidth) $tag"
+    SendCmd "polydata opacity $style(-opacity) $tag"
+    set _settings(-surfaceopacity) [expr $style(-opacity) * 100.0]
+    SetCurrentColormap $style(-color)
+    SendCmd "polydata wireframe $style(-wireframe) $tag"
+    set _settings(-surfacewireframe) $style(-wireframe)
+
+    SendCmd [list contour2d add contourlist $_contourList $tag]
+    SendCmd "contour2d colormode constant {} $tag"
+    SendCmd "contour2d color [Color2RGB $style(-isolinecolor)] $tag"
+}
+
+itcl::body Rappture::VtkSurfaceViewer::IsValidObject { dataobj } {
+    if {[catch {$dataobj isa Rappture::Field} valid] != 0 || !$valid} {
+        return 0
+    }
+    return 1
+}
+
+#
+# EnterLegend --
+#
+itcl::body Rappture::VtkSurfaceViewer::EnterLegend { x y } {
+    SetLegendTip $x $y
+}
+
+#
+# MotionLegend --
+#
+itcl::body Rappture::VtkSurfaceViewer::MotionLegend { x y } {
+    Rappture::Tooltip::tooltip cancel
+    set c $itk_component(view)
+    set cw [winfo width $c]
+    set ch [winfo height $c]
+    if { $x >= 0 && $x < $cw && $y >= 0 && $y < $ch } {
+        SetLegendTip $x $y
+    }
+}
+
+#
+# LeaveLegend --
+#
+itcl::body Rappture::VtkSurfaceViewer::LeaveLegend { } {
+    Rappture::Tooltip::tooltip cancel
+    .rappturetooltip configure -icon ""
+}
+
+#
+# SetLegendTip --
+#
+itcl::body Rappture::VtkSurfaceViewer::SetLegendTip { x y } {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    set ih [image height $_image(legend)]
+    set iy [expr $y - ($lineht + 2)]
+
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    # If there's a legend title, increase the offset by the line height.
+    if { $title != "" } {
+        incr iy -$lineht
+    }
+    # Make a swatch of the selected color
+    if { [catch { $_image(legend) get 10 $iy } pixel] != 0 } {
+        return
+    }
+    if { ![info exists _image(swatch)] } {
+        set _image(swatch) [image create photo -width 24 -height 24]
+    }
+    set color [eval format "\#%02x%02x%02x" $pixel]
+    $_image(swatch) put black  -to 0 0 23 23
+    $_image(swatch) put $color -to 1 1 22 22
+    .rappturetooltip configure -icon $_image(swatch)
+
+    # Compute the value of the point
+    if { [info exists _limits($_curFldName)] } {
+        foreach { vmin vmax } $_limits($_curFldName) break
+        set t [expr 1.0 - (double($iy) / double($ih-1))]
+        set value [expr $t * ($vmax - $vmin) + $vmin]
+    } else {
+        set value 0.0
+    }
+    set tx [expr $x + 15]
+    set ty [expr $y - 5]
+    if { [info exists _isolines($y)] } {
+        Rappture::Tooltip::text $c [format "$title %g (isoline)" $_isolines($y)]
+    } else {
+        Rappture::Tooltip::text $c [format "$title %g" $value]
+    }
+    Rappture::Tooltip::tooltip show $c +$tx,+$ty
+}
+
+#
+# ReceiveLegend --
+#
+# Invoked automatically whenever the "legend" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+#
+itcl::body Rappture::VtkSurfaceViewer::ReceiveLegend { colormap title min max size } {
+    DebugTrace "Enter"
+    set _title $title
+    regsub {\(mag\)} $title "" _title
+    if { [IsConnected] } {
+        set bytes [ReceiveBytes $size]
+        if { ![info exists _image(legend)] } {
+            set _image(legend) [image create photo]
+        }
+        $_image(legend) configure -data $bytes
+        #puts stderr "read $size bytes for [image width $_image(legend)]x[image height $_image(legend)] legend>"
+        if { [catch {DrawLegend} errs] != 0 } {
+            global errorInfo
+            puts stderr "errs=$errs errorInfo=$errorInfo"
+        }
+    }
+}
+
+#
+# DrawLegend --
+#
+# Draws the legend on the canvas on the right side of the plot area.
+#
+itcl::body Rappture::VtkSurfaceViewer::DrawLegend {} {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    if { [string match "component*" $fname] } {
+        set title ""
+    } else {
+        if { [info exists _fields($fname)] } {
+            foreach { title units } $_fields($fname) break
+            if { $units != "" } {
+                set title [format "%s (%s)" $title $units]
+            }
+        } else {
+            set title $fname
+        }
+    }
+    set x [expr $w - 2]
+    if { !$_settings(-legendvisible) } {
+        $c delete legend
+        return
+    }
+    if { [$c find withtag "legend"] == "" } {
+        set y 2
+        # If there's a legend title, create a text item for the title.
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "title legend" \
+            -font $font
+        if { $title != "" } {
+            incr y $lineht
+        }
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "vmax legend" \
+            -font $font
+        incr y $lineht
+        $c create image $x $y \
+            -anchor ne \
+            -image $_image(legend) -tags "colormap legend"
+        $c create rectangle $x $y 1 1 \
+            -fill "" -outline "" -tags "sensor legend"
+        $c create text $x [expr {$h-2}] \
+            -anchor se \
+            -fill $itk_option(-plotforeground) -tags "vmin legend" \
+            -font $font
+        $c bind sensor <Enter> [itcl::code $this EnterLegend %x %y]
+        $c bind sensor <Leave> [itcl::code $this LeaveLegend]
+        $c bind sensor <Motion> [itcl::code $this MotionLegend %x %y]
+    }
+    $c delete isoline
+    set x2 $x
+    set iw [image width $_image(legend)]
+    set ih [image height $_image(legend)]
+    set x1 [expr $x2 - ($iw*12)/10]
+    set color $_settings(-isolinecolor)
+    # Draw the isolines on the legend.
+    array unset _isolines
+    if { $color != "none"  && [info exists _limits($_curFldName)] &&
+         $_settings(-isolinesvisible) && $_settings(-numcontours) > 0 } {
+
+        foreach { vmin vmax } $_limits($_curFldName) break
+        set range [expr double($vmax - $vmin)]
+        if { $range <= 0.0 } {
+            set range 1.0;              # Min is greater or equal to max.
+        }
+        set tags "isoline legend"
+        set offset [expr 2 + $lineht]
+        if { $title != "" } {
+            incr offset $lineht
+        }
+        foreach value $_contourList {
+            set norm [expr 1.0 - (($value - $vmin) / $range)]
+            set y1 [expr int(round(($norm * $ih) + $offset))]
+            for { set off 0 } { $off < 3 } { incr off } {
+                set _isolines([expr $y1 + $off]) $value
+                set _isolines([expr $y1 - $off]) $value
+            }
+            $c create line $x1 $y1 $x2 $y1 -fill $color -tags $tags
+        }
+    }
+
+    $c bind title <ButtonPress> [itcl::code $this Combo post]
+    $c bind title <Enter> [itcl::code $this Combo activate]
+    $c bind title <Leave> [itcl::code $this Combo deactivate]
+    # Reset the item coordinates according the current size of the plot.
+    $c itemconfigure title -text $title
+    if { [info exists _limits($_curFldName)] } {
+        foreach { vmin vmax } $_limits($_curFldName) break
+        $c itemconfigure vmin -text [format %g $vmin]
+        $c itemconfigure vmax -text [format %g $vmax]
+    }
+    set y 2
+    # If there's a legend title, move the title to the correct position
+    if { $title != "" } {
+        $c itemconfigure title -text $title
+        $c coords title $x $y
+        incr y $lineht
+        $c raise title
+    }
+    $c coords vmax $x $y
+    incr y $lineht
+    $c coords colormap $x $y
+    $c coords sensor [expr $x - $iw] $y $x [expr $y + $ih]
+    $c raise sensor
+    $c coords vmin $x [expr {$h - 2}]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _dropdown post
+# USAGE: _dropdown unpost
+# USAGE: _dropdown select
+#
+# Used internally to handle the dropdown list for this combobox.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkSurfaceViewer::Combo {option} {
+    set c $itk_component(view)
+    switch -- $option {
+        post {
+            foreach { x1 y1 x2 y2 } [$c bbox title] break
+            set cw [winfo width $itk_component(view)]
+            set mw [winfo reqwidth $itk_component(fieldmenu)]
+            set x1 [expr $cw - $mw]
+            set x [expr $x1 + [winfo rootx $itk_component(view)]]
+            set y [expr $y2 + [winfo rooty $itk_component(view)]]
+            tk_popup $itk_component(fieldmenu) $x $y
+        }
+        activate {
+            $c itemconfigure title -fill red
+        }
+        deactivate {
+            $c itemconfigure title -fill $itk_option(-plotforeground)
+        }
+        invoke {
+            $itk_component(field) value $_curFldLabel
+            AdjustSetting -field
+        }
+        default {
+            error "bad option \"$option\": should be post, unpost, select"
+        }
+    }
+}
+
+#
+# SetCurrentColormap --
+#
+itcl::body Rappture::VtkSurfaceViewer::SetCurrentColormap { name } {
+    # Keep track of the colormaps that we build.
+    if { ![info exists _colormaps($name)] } {
+        BuildColormap $name
+        set _colormaps($name) 1
+    }
+    set _currentColormap $name
+    SendCmd "contour2d colormap $_currentColormap"
+    SendCmd "polydata colormap $_currentColormap"
+}
+
+#
+# BuildColormap --
+#
+# Build the designated colormap on the server.
+#
+itcl::body Rappture::VtkSurfaceViewer::BuildColormap { name } {
+    set cmap [ColorsToColormap $name]
+    if { [llength $cmap] == 0 } {
+        set cmap "0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0"
+    }
+    set amap "0.0 1.0 1.0 1.0"
+    SendCmd "colormap add $name { $cmap } { $amap }"
+}
+
+itcl::body Rappture::VtkSurfaceViewer::SetOrientation { side } {
+    array set positions {
+        front "1 0 0 0"
+        back  "0 0 1 0"
+        left  "0.707107 0 -0.707107 0"
+        right "0.707107 0 0.707107 0"
+        top   "0.707107 -0.707107 0 0"
+        bottom "0.707107 0.707107 0 0"
+    }
+    foreach name { -qw -qx -qy -qz } value $positions($side) {
+        set _view($name) $value
+    }
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    set _view(-xpan) 0
+    set _view(-ypan) 0
+    set _view(-zoom) 1.0
+}
+
+itcl::body Rappture::VtkSurfaceViewer::UpdateContourList {} {
+    if { ![info exists _limits($_curFldName)] } {
+        return
+    }
+    if { $_currentNumContours < 1 } {
+        set _contourList ""
+        return
+    }
+    foreach { vmin vmax } $_limits($_curFldName) break
+    set v [blt::vector create \#auto]
+    $v seq $vmin $vmax [expr $_currentNumContours+2]
+    $v delete end 0
+    set _contourList [$v range 0 end]
+    blt::vector destroy $v
+}
+
+itcl::body Rappture::VtkSurfaceViewer::SetCurrentFieldName { dataobj } {
+    set _first $dataobj
+    $itk_component(field) choices delete 0 end
+    $itk_component(fieldmenu) delete 0 end
+    array unset _fields
+    set _curFldName ""
+    foreach cname [$_first components] {
+        foreach fname [$_first fieldnames $cname] {
+            if { [info exists _fields($fname)] } {
+                continue
+            }
+            foreach { label units components } \
+                [$_first fieldinfo $fname] break
+            $itk_component(field) choices insert end "$fname" "$label"
+            $itk_component(fieldmenu) add radiobutton -label "$label" \
+                -value $label -variable [itcl::scope _curFldLabel] \
+                -selectcolor red \
+                -activebackground $itk_option(-plotbackground) \
+                -activeforeground $itk_option(-plotforeground) \
+                -font "Arial 8" \
+                -command [itcl::code $this Combo invoke]
+            set _fields($fname) [list $label $units $components]
+            if { $_curFldName == "" } {
+                set _curFldName $fname
+                set _curFldLabel $label
+            }
+        }
+    }
+    $itk_component(field) value $_curFldLabel
+}
Index: /tags/1.6.0/gui/scripts/vtkviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/vtkviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/vtkviewer.tcl	(revision 6168)
@@ -0,0 +1,3060 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: vtkviewer - Vtk drawing object viewer
+#
+#  It connects to the Vtkvis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+#package require Img
+
+option add *VtkViewer.width 4i widgetDefault
+option add *VtkViewer*cursor crosshair widgetDefault
+option add *VtkViewer.height 4i widgetDefault
+option add *VtkViewer.foreground black widgetDefault
+option add *VtkViewer.controlBackground gray widgetDefault
+option add *VtkViewer.controlDarkBackground #999999 widgetDefault
+option add *VtkViewer.plotBackground black widgetDefault
+option add *VtkViewer.plotForeground white widgetDefault
+option add *VtkViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc VtkViewer_init_resources {} {
+    Rappture::resources::register \
+        vtkvis_server Rappture::VtkViewer::SetServerList
+}
+
+itcl::class Rappture::VtkViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "vtkvis" $namelist
+    }
+    public method add {dataobj {settings ""}}
+    public method camera {option args}
+    public method delete {args}
+    public method disconnect {}
+    public method download {option args}
+    public method get {args}
+    public method isconnected {}
+    public method limits { dataobj }
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method scale {args}
+
+    # The following methods are only used by this class.
+    private method AdjustSetting {what {value ""}}
+    private method BuildAxisTab {}
+    private method BuildCameraTab {}
+    private method BuildColormap { name }
+    private method BuildCutawayTab {}
+    private method BuildDownloadPopup { widget command }
+    private method BuildGlyphsTab {}
+    private method BuildMoleculeTab {}
+    private method BuildPolydataTab {}
+    private method ChangeColormap { dataobj comp color }
+    private method Connect {}
+    private method CurrentDatasets {args}
+    private method Disconnect {}
+    private method DoResize {}
+    private method DoRotate {}
+    private method DrawLegend {}
+    private method EnterLegend { x y }
+    private method EventuallyResize { w h }
+    private method EventuallyRotate { q }
+    private method EventuallySetAtomScale { args }
+    private method EventuallySetBondScale { args }
+    private method EventuallySetGlyphsOpacity { args }
+    private method EventuallySetMoleculeOpacity { args }
+    private method EventuallySetMoleculeQuality { args }
+    private method EventuallySetPolydataOpacity { args }
+    private method GetImage { args }
+    private method GetVtkData { args }
+    private method InitSettings { args }
+    private method IsValidObject { dataobj }
+    private method LeaveLegend {}
+    private method MotionLegend { x y }
+    private method Pan {option x y}
+    private method PanCamera {}
+    private method Pick {x y}
+    private method QuaternionToView { q } {
+        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
+    }
+    private method Rebuild {}
+    private method ReceiveDataset { args }
+    private method ReceiveImage { args }
+    private method ReceiveLegend { colormap title vmin vmax size }
+    private method RequestLegend {}
+    private method Rotate {option x y}
+    private method SetAtomScale {}
+    private method SetBondScale {}
+    private method SetColormap { dataobj comp }
+    private method SetGlyphsOpacity {}
+    private method SetLegendTip { x y }
+    private method SetMoleculeOpacity {}
+    private method SetMoleculeQuality {}
+    private method SetObjectStyle { dataobj comp }
+    private method SetOpacity { dataset }
+    private method SetOrientation { side }
+    private method SetPolydataOpacity {}
+    private method Slice {option args}
+    private method ViewToQuaternion {} {
+        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
+    }
+    private method Zoom {option}
+
+    private variable _arcball ""
+    private variable _dlist "";         # list of data objects
+    private variable _obj2ovride;       # maps dataobj => style override
+    private variable _datasets;         # contains all the dataobj-component
+                                        # datasets in the server
+    private variable _colormaps;        # contains all the colormaps
+                                        # in the server.
+    private variable _dataset2style;    # maps dataobj-component to transfunc
+    private variable _click;            # info used for rotate operations
+    private variable _limits;           # autoscale min/max for all axes
+    private variable _view;             # view params for 3D view
+    private variable _settings
+    private variable _style;            # Array of current component styles.
+    private variable _initialStyle;     # Array of initial component styles.
+    private variable _axis
+    private variable _reset 1;          # Connection to server has been reset.
+    private variable _haveGlyphs 0
+    private variable _haveMolecules 0
+    private variable _havePolydata 0
+
+    private variable _first "";         # This is the topmost dataset.
+    private variable _start 0
+    private variable _title ""
+    private variable _width 0
+    private variable _height 0
+    private variable _resizePending 0
+    private variable _rotatePending 0
+    private variable _atomScalePending 0
+    private variable _bondScalePending 0
+    private variable _moleculeOpacityPending 0
+    private variable _moleculeQualityPending 0
+    private variable _polydataOpacityPending 0
+    private variable _glyphsOpacityPending 0
+    private variable _rotateDelay 150
+    private variable _scaleDelay 100
+
+    private common _downloadPopup;      # download options from popup
+    private common _hardcopy
+}
+
+itk::usual VtkViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::constructor {args} {
+    package require vtk
+    set _serverType "vtkvis"
+
+    #DebugOn
+    EnableWaitDialog 900
+
+    # Rebuild event
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Rotate event
+    $_dispatcher register !rotate
+    $_dispatcher dispatch $this !rotate "[itcl::code $this DoRotate]; list"
+
+    # Atom scale event
+    $_dispatcher register !atomscale
+    $_dispatcher dispatch $this !atomscale \
+        "[itcl::code $this SetAtomScale]; list"
+
+    # Bond scale event
+    $_dispatcher register !bondscale
+    $_dispatcher dispatch $this !bondscale \
+        "[itcl::code $this SetBondScale]; list"
+
+    # Molecule opacity event
+    $_dispatcher register !moleculeOpacity
+    $_dispatcher dispatch $this !moleculeOpacity \
+        "[itcl::code $this SetMoleculeOpacity]; list"
+
+    # Molecule quality event
+    $_dispatcher register !moleculeQuality
+    $_dispatcher dispatch $this !moleculeQuality \
+        "[itcl::code $this SetMoleculeQuality]; list"
+
+    # Polydata opacity event
+    $_dispatcher register !polydataOpacity
+    $_dispatcher dispatch $this !polydataOpacity \
+        "[itcl::code $this SetPolydataOpacity]; list"
+
+    # Glyphs opacity event
+    $_dispatcher register !glyphsOpacity
+    $_dispatcher dispatch $this !glyphsOpacity \
+        "[itcl::code $this SetGlyphsOpacity]; list"
+
+    #
+    # Populate parser with commands handle incoming requests
+    #
+    $_parser alias image [itcl::code $this ReceiveImage]
+    $_parser alias dataset [itcl::code $this ReceiveDataset]
+    $_parser alias legend [itcl::code $this ReceiveLegend]
+
+    # Initialize the view to some default parameters.
+    array set _view {
+        -ortho    0
+        -qw       0.853553
+        -qx       -0.353553
+        -qy       0.353553
+        -qz       0.146447
+        -xpan     0
+        -ypan     0
+        -zoom     1.0
+    }
+    set _arcball [blt::arcball create 100 100]
+    $_arcball quaternion [ViewToQuaternion]
+
+    set _limits(zmin) 0.0
+    set _limits(zmax) 1.0
+
+    array set _axis [subst {
+        labels          1
+        minorticks      1
+        visible         1
+        xgrid           0
+        ygrid           0
+        zgrid           0
+        xcutaway        0
+        ycutaway        0
+        zcutaway        0
+        xposition       0
+        yposition       0
+        zposition       0
+        xdirection      -1
+        ydirection      -1
+        zdirection      -1
+    }]
+    array set _settings [subst {
+        glyphs-edges            0
+        glyphs-lighting         1
+        glyphs-opacity          100
+        glyphs-outline          0
+        glyphs-palette          BCGYR
+        glyphs-visible          1
+        glyphs-wireframe        0
+        legend                  1
+        molecule-atoms-visible  1
+        molecule-atomscale      0.3
+        molecule-bonds-visible  1
+        molecule-bondscale      0.075
+        molecule-bondstyle      "cylinder"
+        molecule-edges          0
+        molecule-labels         0
+        molecule-lighting       1
+        molecule-opacity        100
+        molecule-outline        0
+        molecule-palette        elementDefault
+        molecule-quality        1.0
+        molecule-representation "Ball and Stick"
+        molecule-rscale         "covalent"
+        molecule-visible        1
+        molecule-wireframe      0
+        polydata-edges          0
+        polydata-lighting       1
+        polydata-opacity        100
+        polydata-outline        0
+        polydata-palette        BCGYR
+        polydata-visible        1
+        polydata-wireframe      0
+    }]
+    itk_component add view {
+        canvas $itk_component(plotarea).view \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth -background
+    }
+
+    set c $itk_component(view)
+    bind $c <Configure> [itcl::code $this EventuallyResize %w %h]
+    bind $c <4> [itcl::code $this Zoom in 0.25]
+    bind $c <5> [itcl::code $this Zoom out 0.25]
+    bind $c <KeyPress-Left>  [list %W xview scroll 10 units]
+    bind $c <KeyPress-Right> [list %W xview scroll -10 units]
+    bind $c <KeyPress-Up>    [list %W yview scroll 10 units]
+    bind $c <KeyPress-Down>  [list %W yview scroll -10 units]
+    bind $c <Enter> "focus %W"
+    bind $c <Control-F1> [itcl::code $this ToggleConsole]
+
+    # Fix the scrollregion in case we go off screen
+    $c configure -scrollregion [$c bbox all]
+
+    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
+    set _map(cwidth) -1
+    set _map(cheight) -1
+    set _map(zoom) 1.0
+    set _map(original) ""
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    if { [catch {
+        BuildAxisTab
+        #BuildCutawayTab
+        BuildCameraTab
+    } errs] != 0 } {
+        puts stderr errs=$errs
+    }
+
+    # Legend
+    set _image(legend) [image create photo]
+    itk_component add legend {
+        canvas $itk_component(plotarea).legend -width 50 -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -plotbackground plotBackground Background
+    }
+
+    # Hack around the Tk panewindow.  The problem is that the requested
+    # size of the 3d view isn't set until an image is retrieved from
+    # the server.  So the panewindow uses the tiny size.
+    set w 10000
+    pack forget $itk_component(view)
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth $w
+    blt::table configure $itk_component(plotarea) c1 -resize none
+
+    # Bindings for rotation via mouse
+    bind $itk_component(view) <ButtonPress-1> \
+        [itcl::code $this Rotate click %x %y]
+    bind $itk_component(view) <B1-Motion> \
+        [itcl::code $this Rotate drag %x %y]
+    bind $itk_component(view) <ButtonRelease-1> \
+        [itcl::code $this Rotate release %x %y]
+
+    # Bindings for panning via mouse
+    bind $itk_component(view) <ButtonPress-2> \
+        [itcl::code $this Pan click %x %y]
+    bind $itk_component(view) <B2-Motion> \
+        [itcl::code $this Pan drag %x %y]
+    bind $itk_component(view) <ButtonRelease-2> \
+        [itcl::code $this Pan release %x %y]
+
+    #bind $itk_component(view) <ButtonRelease-3> \
+    #    [itcl::code $this Pick %x %y]
+
+    # Bindings for panning via keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -2 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 2 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -2]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 2]
+
+    # Bindings for zoom via keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        # Bindings for zoom via mouse
+        bind $itk_component(view) <4> [itcl::code $this Zoom out]
+        bind $itk_component(view) <5> [itcl::code $this Zoom in]
+    }
+
+    set _image(download) [image create photo]
+
+    eval itk_initialize $args
+
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::destructor {} {
+    Disconnect
+    $_dispatcher cancel !rebuild
+    $_dispatcher cancel !resize
+    $_dispatcher cancel !rotate
+    image delete $_image(plot)
+    image delete $_image(download)
+    catch { blt::arcball destroy $_arcball }
+}
+
+itcl::body Rappture::VtkViewer::DoResize {} {
+    if { $_width < 2 } {
+        set _width 500
+    }
+    if { $_height < 2 } {
+        set _height 500
+    }
+    set _start [clock clicks -milliseconds]
+    SendCmd "screen size $_width $_height"
+
+    set _resizePending 0
+}
+
+itcl::body Rappture::VtkViewer::DoRotate {} {
+    SendCmd "camera orient [ViewToQuaternion]"
+    set _rotatePending 0
+}
+
+itcl::body Rappture::VtkViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    $_arcball resize $w $h
+    if { !$_resizePending } {
+        set _resizePending 1
+        $_dispatcher event -after 200 !resize
+    }
+}
+
+itcl::body Rappture::VtkViewer::EventuallyRotate { q } {
+    QuaternionToView $q
+    if { !$_rotatePending } {
+        set _rotatePending 1
+        $_dispatcher event -after $_rotateDelay !rotate
+    }
+}
+
+itcl::body Rappture::VtkViewer::SetAtomScale {} {
+    SendCmd "molecule ascale $_settings(molecule-atomscale)"
+    set _atomScalePending 0
+}
+
+itcl::body Rappture::VtkViewer::SetBondScale {} {
+    SendCmd "molecule bscale $_settings(molecule-bondscale)"
+    set _bondScalePending 0
+}
+
+itcl::body Rappture::VtkViewer::SetMoleculeOpacity {} {
+    set _moleculeOpacityPending 0
+    foreach dataset [CurrentDatasets -visible $_first] {
+        foreach { dataobj comp } [split $dataset -] break
+        if { [$dataobj type $comp] == "molecule" } {
+            SetOpacity $dataset
+        }
+    }
+}
+
+itcl::body Rappture::VtkViewer::SetMoleculeQuality {} {
+    SendCmd [subst {molecule aquality $_settings(molecule-quality)
+molecule bquality $_settings(molecule-quality)}]
+    set _moleculeQualityPending 0
+}
+
+itcl::body Rappture::VtkViewer::SetGlyphsOpacity {} {
+    set _glyphsOpacityPending 0
+    foreach dataset [CurrentDatasets -visible $_first] {
+        foreach { dataobj comp } [split $dataset -] break
+        if { [$dataobj type $comp] == "glyphs" } {
+            SetOpacity $dataset
+        }
+    }
+}
+
+itcl::body Rappture::VtkViewer::SetPolydataOpacity {} {
+    set _polydataOpacityPending 0
+    foreach dataset [CurrentDatasets -visible $_first] {
+        foreach { dataobj comp } [split $dataset -] break
+        if { [$dataobj type $comp] == "polydata" } {
+            SetOpacity $dataset
+        }
+    }
+}
+
+itcl::body Rappture::VtkViewer::EventuallySetAtomScale { args } {
+    if { !$_atomScalePending } {
+        set _atomScalePending 1
+        $_dispatcher event -after $_scaleDelay !atomscale
+    }
+}
+
+itcl::body Rappture::VtkViewer::EventuallySetBondScale { args } {
+    if { !$_bondScalePending } {
+        set _bondScalePending 1
+        $_dispatcher event -after $_scaleDelay !bondscale
+    }
+}
+
+itcl::body Rappture::VtkViewer::EventuallySetMoleculeOpacity { args } {
+    if { !$_moleculeOpacityPending } {
+        set _moleculeOpacityPending 1
+        $_dispatcher event -after $_scaleDelay !moleculeOpacity
+    }
+}
+
+itcl::body Rappture::VtkViewer::EventuallySetMoleculeQuality { args } {
+    if { !$_moleculeQualityPending } {
+        set _moleculeQualityPending 1
+        $_dispatcher event -after $_scaleDelay !moleculeQuality
+    }
+}
+
+itcl::body Rappture::VtkViewer::EventuallySetPolydataOpacity { args } {
+    if { !$_polydataOpacityPending } {
+        set _polydataOpacityPending 1
+        $_dispatcher event -after $_scaleDelay !polydataOpacity
+    }
+}
+
+itcl::body Rappture::VtkViewer::EventuallySetGlyphsOpacity { args } {
+    if { !$_glyphsOpacityPending } {
+        set _glyphsOpacityPending 1
+        $_dispatcher event -after $_scaleDelay !glyphsOpacity
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::add {dataobj {settings ""}} {
+    array set params {
+        -color auto
+        -width 1
+        -linestyle solid
+        -brightness 0
+        -raise 0
+        -description ""
+        -param ""
+        -type ""
+    }
+    array set params $settings
+    set params(-description) ""
+    set params(-param) ""
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) black
+    }
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+    }
+    set _obj2ovride($dataobj-color) $params(-color)
+    set _obj2ovride($dataobj-width) $params(-width)
+    set _obj2ovride($dataobj-raise) $params(-raise)
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.  No data objects are
+# deleted.  They are only removed from the display list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::delete {args} {
+    if { [llength $args] == 0} {
+        set args $_dlist
+    }
+    # Delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if { $pos < 0 } {
+            continue;                   # Don't know anything about it.
+        }
+        # Remove it from the dataobj list.
+        set _dlist [lreplace $_dlist $pos $pos]
+        array unset _obj2ovride $dataobj-*
+        array unset _settings $dataobj-*
+        set changed 1
+    }
+    # If anything changed, then rebuild the plot
+    if { $changed } {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-objects?
+# USAGE: get ?-visible?
+# USAGE: get ?-image view?
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.  The optional "-image"
+# flag can also request the internal images being shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::get {args} {
+    if {[llength $args] == 0} {
+        set args "-objects"
+    }
+
+    set op [lindex $args 0]
+    switch -- $op {
+        "-objects" {
+            # put the dataobj list in order according to -raise options
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if {[info exists _obj2ovride($dataobj-raise)] &&
+                    $_obj2ovride($dataobj-raise)} {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        "-visible" {
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if { ![info exists _obj2ovride($dataobj-raise)] } {
+                    # No setting indicates that the object isn't visible.
+                    continue
+                }
+                # Otherwise use the -raise parameter to put the object to
+                # the front of the list.
+                if { $_obj2ovride($dataobj-raise) } {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        -image {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"get -image view\""
+            }
+            switch -- [lindex $args end] {
+                view {
+                    return $_image(plot)
+                }
+                default {
+                    error "bad image name \"[lindex $args end]\": should be view"
+                }
+            }
+        }
+        default {
+            error "bad option \"$op\": should be -objects or -image"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<data1> <data2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <data> objects.  This
+# accounts for all objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::scale {args} {
+    foreach dataobj $args {
+        foreach comp [$dataobj components] {
+            set type [$dataobj type $comp]
+            switch -- $type {
+                "polydata" {
+                    set _havePolydata 1
+                }
+                "glyphs" {
+                    set _haveGlyphs 1
+                }
+                "molecule" {
+                    set _haveMolecules 1
+                }
+            }
+        }
+        array set bounds [limits $dataobj]
+        if {[info exists bounds(xmin)] && (![info exists _limits(xmin)] || $_limits(xmin) > $bounds(xmin))} {
+            set _limits(xmin) $bounds(xmin)
+        }
+        if {[info exists bounds(xmax)] && (![info exists _limits(xmax)] || $_limits(xmax) < $bounds(xmax))} {
+            set _limits(xmax) $bounds(xmax)
+        }
+
+        if {[info exists bounds(ymin)] && (![info exists _limits(ymin)] || $_limits(ymin) > $bounds(ymin))} {
+            set _limits(ymin) $bounds(ymin)
+        }
+        if {[info exists bounds(ymax)] && (![info exists _limits(ymax)] || $_limits(ymax) < $bounds(ymax))} {
+            set _limits(ymax) $bounds(ymax)
+        }
+
+        if {[info exists bounds(zmin)] && (![info exists _limits(zmin)] || $_limits(zmin) > $bounds(zmin))} {
+            set _limits(zmin) $bounds(zmin)
+        }
+        if {[info exists bounds(zmax)] && (![info exists _limits(zmax)] || $_limits(zmax) < $bounds(zmax))} {
+            set _limits(zmax) $bounds(zmax)
+        }
+    }
+    if { $_haveGlyphs } {
+        if { ![$itk_component(main) exists "Glyphs Settings"] } {
+            if { [catch { BuildGlyphsTab } errs ]  != 0 } {
+                puts stderr "errs=$errs"
+            }
+        }
+    }
+    if { $_havePolydata } {
+        if { ![$itk_component(main) exists "Mesh Settings"] } {
+            if { [catch { BuildPolydataTab } errs ]  != 0 } {
+                puts stderr "errs=$errs"
+            }
+        }
+    }
+    if { $_haveMolecules } {
+        if { ![$itk_component(main) exists "Molecule Settings"]} {
+            if { [catch { BuildMoleculeTab } errs ]  != 0 } {
+                global errorInfo
+                puts stderr "errs=$errs\nerrorInfo=$errorInfo"
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::download {option args} {
+    switch $option {
+        coming {
+            if {[catch {
+                blt::winop snap $itk_component(plotarea) $_image(download)
+            }]} {
+                $_image(download) configure -width 1 -height 1
+                $_image(download) put #000000
+            }
+        }
+        controls {
+            set popup .vtkviewerdownload
+            if { ![winfo exists .vtkviewerdownload] } {
+                set inner [BuildDownloadPopup $popup [lindex $args 0]]
+            } else {
+                set inner [$popup component inner]
+            }
+            set _downloadPopup(image_controls) $inner.image_frame
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks            ;# Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .vtkviewerdownload
+            if {[winfo exists .vtkviewerdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "image" {
+                    return [$this GetImage [lindex $args 0]]
+                }
+                "vtk" {
+                    return [$this GetVtkData [lindex $args 0]]
+                }
+            }
+            return ""
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Connect ?<host:port>,<host:port>...?
+#
+# Clients use this method to establish a connection to a new
+# server, or to reestablish a connection to the previous server.
+# Any existing connection is automatically closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::Connect {} {
+    global readyForNextFrame
+    set readyForNextFrame 1
+    set _hosts [GetServerList "vtkvis"]
+    if { "" == $_hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $_hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "vtkviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        EventuallyResize $w $h
+    }
+    return $result
+}
+
+#
+# isconnected --
+#
+# Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::VtkViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# disconnect --
+#
+itcl::body Rappture::VtkViewer::disconnect {} {
+    Disconnect
+    set _reset 1
+}
+
+#
+# Disconnect --
+#
+# Clients use this method to disconnect from the current rendering server.
+#
+itcl::body Rappture::VtkViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    # disconnected -- no more data sitting on server
+    array unset _datasets
+    array unset _colormaps
+    global readyForNextFrame
+    set readyForNextFrame 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveImage -bytes <size> -type <type> -token <token>
+#
+# Invoked automatically whenever the "image" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::ReceiveImage { args } {
+    global readyForNextFrame
+    set readyForNextFrame 1
+    array set info {
+        -token "???"
+        -bytes 0
+        -type image
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    if { $info(-type) == "image" } {
+        if 0 {
+            set f [open "last.ppm" "w"]
+            fconfigure $f -encoding binary
+            puts -nonewline $f $bytes
+            close $f
+        }
+        $_image(plot) configure -data $bytes
+        set time [clock seconds]
+        set date [clock format $time]
+        if { $_start > 0 } {
+            set finish [clock clicks -milliseconds]
+            set _start 0
+        }
+    } elseif { $info(type) == "print" } {
+        set tag $this-print-$info(-token)
+        set _hardcopy($tag) $bytes
+    }
+}
+
+#
+# ReceiveDataset --
+#
+itcl::body Rappture::VtkViewer::ReceiveDataset { args } {
+    if { ![isconnected] } {
+        return
+    }
+    set option [lindex $args 0]
+    switch -- $option {
+        "scalar" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z value tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y value tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "vector" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z vx vy vz tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y vx vy vz tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "names" {
+            foreach { name } [lindex $args 1] {
+                #puts stderr "Dataset: $name"
+            }
+        }
+        default {
+            error "unknown dataset option \"$option\" from server"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::Rebuild {} {
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $w < 2 || $h < 2 } {
+        update
+        $_dispatcher event -idle !rebuild
+        return
+    }
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (which automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+
+    if { $_reset } {
+        set _width $w
+        set _height $h
+        $_arcball resize $w $h
+        DoResize
+        InitSettings axis-xgrid axis-ygrid axis-zgrid axis-mode \
+            axis-visible axis-labels axis-minorticks
+
+        StopBufferingCommands
+        SendCmd "imgflush"
+        StartBufferingCommands
+    }
+
+    set _limits(zmin) ""
+    set _limits(zmax) ""
+    set _first ""
+    SendCmd "dataset visible 0"
+    set count 0
+    foreach dataobj [get -objects] {
+        if { [info exists _obj2ovride($dataobj-raise)] &&  $_first == "" } {
+            set _first $dataobj
+        }
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { ![info exists _datasets($tag)] } {
+                set bytes [$dataobj data $comp]
+                if { $bytes == "" } {
+                    continue
+                }
+                if 0 {
+                    set f [open /tmp/vtkviewer.vtk "w"]
+                    fconfigure $f -translation binary -encoding binary
+                    puts -nonewline $f $bytes
+                    close $f
+                }
+                set length [string length $bytes]
+                if { $_reportClientInfo }  {
+                    set info {}
+                    lappend info "tool_id"       [$dataobj hints toolid]
+                    lappend info "tool_name"     [$dataobj hints toolname]
+                    lappend info "tool_title"    [$dataobj hints tooltitle]
+                    lappend info "tool_command"  [$dataobj hints toolcommand]
+                    lappend info "tool_revision" [$dataobj hints toolrevision]
+                    lappend info "dataset_label" [$dataobj hints label]
+                    lappend info "dataset_size"  $length
+                    lappend info "dataset_tag"   $tag
+                    SendCmd "clientinfo [list $info]"
+                }
+                SendCmd "dataset add $tag data follows $length"
+                SendData $bytes
+                set _datasets($tag) 1
+                SetObjectStyle $dataobj $comp
+            }
+            set type [$dataobj type $comp]
+            if { [info exists _obj2ovride($dataobj-raise)] } {
+                SendCmd "$type visible 1 $tag"
+                SetOpacity $tag
+            }
+        }
+    }
+    if {"" != $_first} {
+        foreach axis { x y z } {
+            set label [$_first hints ${axis}label]
+            if { $label != "" } {
+                SendCmd [list axis name $axis $label]
+            }
+            set units [$_first hints ${axis}units]
+            if { $units != "" } {
+                SendCmd [list axis units $axis $units]
+            }
+        }
+    }
+    if { $_haveGlyphs } {
+        InitSettings glyphs-outline
+    }
+    if { $_haveMolecules } {
+        InitSettings molecule-outline
+    }
+    if { $_havePolydata } {
+        InitSettings polydata-outline
+    }
+    if { $_reset } {
+        if { $_haveGlyphs } {
+            InitSettings glyphs-edges glyphs-lighting glyphs-opacity \
+                glyphs-visible glyphs-wireframe
+        }
+        if { $_havePolydata } {
+            InitSettings polydata-edges polydata-lighting polydata-opacity \
+                polydata-visible polydata-wireframe
+        }
+        if { $_haveMolecules } {
+            InitSettings molecule-edges molecule-lighting molecule-opacity \
+                molecule-visible molecule-wireframe molecule-labels
+        }
+
+        $_arcball quaternion [ViewToQuaternion]
+        SendCmd "camera reset"
+        if { $_view(-ortho)} {
+            SendCmd "camera mode ortho"
+        } else {
+            SendCmd "camera mode persp"
+        }
+        DoRotate
+        PanCamera
+        Zoom reset
+    }
+
+    if { $_haveMolecules } {
+        #InitSettings molecule-representation
+    }
+    set _reset 0
+    global readyForNextFrame
+    set readyForNextFrame 0;            # Don't advance to the next frame
+                                        # until we get an image.
+
+    # Actually write the commands to the server socket.  If it fails, we don't
+    # care.  We're finished here.
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands
+    blt::busy release $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CurrentDatasets ?-all -visible? ?dataobjs?
+#
+# Returns a list of server IDs for the current datasets being displayed.  This
+# is normally a single ID, but it might be a list of IDs if the current data
+# object has multiple components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::CurrentDatasets {args} {
+    set flag [lindex $args 0]
+    switch -- $flag {
+        "-all" {
+            if { [llength $args] > 1 } {
+                error "CurrentDatasets: can't specify dataobj after \"-all\""
+            }
+            set dlist [get -objects]
+        }
+        "-visible" {
+            if { [llength $args] > 1 } {
+                set dlist {}
+                set args [lrange $args 1 end]
+                foreach dataobj $args {
+                    if { [info exists _obj2ovride($dataobj-raise)] } {
+                        lappend dlist $dataobj
+                    }
+                }
+            } else {
+                set dlist [get -visible]
+            }
+        }
+        default {
+            set dlist $args
+        }
+    }
+    set rlist ""
+    foreach dataobj $dlist {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { [info exists _datasets($tag)] && $_datasets($tag) } {
+                lappend rlist $tag
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::Zoom {option} {
+    switch -- $option {
+        "in" {
+            set _view(-zoom) [expr {$_view(-zoom)*1.25}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "out" {
+            set _view(-zoom) [expr {$_view(-zoom)*0.8}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "reset" {
+            array set _view {
+                -qw      0.853553
+                -qx      -0.353553
+                -qy      0.353553
+                -qz      0.146447
+                -xpan    0
+                -ypan    0
+                -zoom    1.0
+            }
+            if { $_first != "" } {
+                set location [$_first hints camera]
+                if { $location != "" } {
+                    array set _view $location
+                }
+            }
+            $_arcball quaternion [ViewToQuaternion]
+            DoRotate
+            SendCmd "camera reset"
+        }
+    }
+}
+
+itcl::body Rappture::VtkViewer::PanCamera {} {
+    set x $_view(-xpan)
+    set y $_view(-ypan)
+    SendCmd "camera pan $x $y"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::Rotate {option x y} {
+    switch -- $option {
+        "click" {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "drag" {
+            if {[array size _click] == 0} {
+                Rotate click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+                if { $dx == 0 && $dy == 0 } {
+                    return
+                }
+                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
+                EventuallyRotate $q
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        "release" {
+            Rotate drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
+
+itcl::body Rappture::VtkViewer::Pick {x y} {
+    foreach tag [CurrentDatasets -visible] {
+        SendCmd "dataset getscalar pixel $x $y $tag"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::Pan {option x y} {
+    switch -- $option {
+        "set" {
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set x [expr $x / double($w)]
+            set y [expr $y / double($h)]
+            set _view(-xpan) [expr $_view(-xpan) + $x]
+            set _view(-ypan) [expr $_view(-ypan) + $y]
+            PanCamera
+            return
+        }
+        "click" {
+            set _click(x) $x
+            set _click(y) $y
+            $itk_component(view) configure -cursor hand1
+        }
+        "drag" {
+            if { ![info exists _click(x)] } {
+                set _click(x) $x
+            }
+            if { ![info exists _click(y)] } {
+                set _click(y) $y
+            }
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set dx [expr ($_click(x) - $x)/double($w)]
+            set dy [expr ($_click(y) - $y)/double($h)]
+            set _click(x) $x
+            set _click(y) $y
+            set _view(-xpan) [expr $_view(-xpan) - $dx]
+            set _view(-ypan) [expr $_view(-ypan) - $dy]
+            PanCamera
+        }
+        "release" {
+            Pan drag $x $y
+            $itk_component(view) configure -cursor ""
+        }
+        default {
+            error "unknown option \"$option\": should set, click, drag, or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitSettings <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::InitSettings { args } {
+    foreach setting $args {
+        AdjustSetting $setting
+    }
+}
+
+#
+# AdjustSetting --
+#
+# Changes/updates a specific setting in the widget.  There are
+# usually user-setable option.  Commands are sent to the render
+# server.
+#
+itcl::body Rappture::VtkViewer::AdjustSetting {what {value ""}} {
+    if { ![isconnected] } {
+        return
+    }
+    switch -- $what {
+        "glyphs-opacity" {
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                if { [$dataobj type $comp] == "glyphs" } {
+                    SetOpacity $dataset
+                }
+            }
+        }
+        "glyphs-outline" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "glyphs" } {
+                    SendCmd "outline visible $bool $dataset"
+                }
+            }
+        }
+        "glyphs-wireframe" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "glyphs" } {
+                    SendCmd "$type wireframe $bool $dataset"
+                }
+            }
+        }
+        "glyphs-visible" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "glyphs" } {
+                    SendCmd "$type visible $bool $dataset"
+                }
+            }
+        }
+        "glyphs-lighting" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "glyphs" } {
+                    SendCmd "$type lighting $bool $dataset"
+                }
+            }
+        }
+        "glyphs-edges" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "glyphs" } {
+                    SendCmd "$type edges $bool $dataset"
+                }
+            }
+        }
+        "glyphs-palette" {
+            set palette [$itk_component(glyphspalette) value]
+            set _settings($what) $palette
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach {dataobj comp} [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "glyphs" } {
+                    ChangeColormap $dataobj $comp $palette
+                    # FIXME: fill in current selected fieldname
+                    #SendCmd "glyphs colormode scalar {} $dataset"
+                }
+            }
+            set _legendPending 1
+        }
+        "polydata-opacity" {
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                if { [$dataobj type $comp] == "polydata" } {
+                    SetOpacity $dataset
+                }
+            }
+        }
+        "polydata-outline" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "polydata" } {
+                    SendCmd "outline visible $bool $dataset"
+                }
+            }
+        }
+        "polydata-wireframe" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "polydata" } {
+                    SendCmd "$type wireframe $bool $dataset"
+                }
+            }
+        }
+        "polydata-visible" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "polydata" } {
+                    SendCmd "$type visible $bool $dataset"
+                }
+            }
+        }
+        "polydata-lighting" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "polydata" } {
+                    SendCmd "$type lighting $bool $dataset"
+                }
+            }
+        }
+        "polydata-edges" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "polydata" } {
+                    SendCmd "$type edges $bool $dataset"
+                }
+            }
+        }
+        "polydata-palette" {
+            set palette [$itk_component(meshpalette) value]
+            set _settings($what) $palette
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach {dataobj comp} [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "polydata" } {
+                    ChangeColormap $dataobj $comp $palette
+                    # FIXME: fill in current selected fieldname
+                    #SendCmd "polydata colormode scalar {} $dataset"
+                }
+            }
+            set _legendPending 1
+        }
+        "molecule-opacity" {
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                if { [$dataobj type $comp] == "molecule" } {
+                    SetOpacity $dataset
+                }
+            }
+        }
+        "molecule-outline" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "molecule" } {
+                    SendCmd "outline visible $bool $dataset"
+                }
+            }
+        }
+        "molecule-wireframe" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "molecule" } {
+                    SendCmd "molecule wireframe $bool $dataset"
+                }
+            }
+        }
+        "molecule-visible" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "molecule" } {
+                    SendCmd "molecule visible $bool $dataset"
+                }
+            }
+        }
+        "molecule-lighting" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "molecule" } {
+                    SendCmd "molecule lighting $bool $dataset"
+                }
+            }
+        }
+        "molecule-edges" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach { dataobj comp } [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "molecule" } {
+                    SendCmd "molecule edges $bool $dataset"
+                }
+            }
+        }
+        "molecule-palette" {
+            set palette [$itk_component(moleculepalette) value]
+            set _settings($what) $palette
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach {dataobj comp} [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "molecule" } {
+                    ChangeColormap $dataobj $comp $palette
+                    if { $palette == "elementDefault" } {
+                        SendCmd "molecule colormode by_elements element $dataset"
+                    } else {
+                        # FIXME: Set the chosen scalar field name here
+                        SendCmd "molecule colormode scalar {} $dataset"
+                    }
+                }
+            }
+            set _legendPending 1
+        }
+        "molecule-representation" {
+            set value [$itk_component(representation) value]
+            set value [$itk_component(representation) translate $value]
+            switch -- $value {
+                "ballandstick" {
+                    set _settings(molecule-rscale) covalent
+                    set _settings(molecule-atoms-visible) 1
+                    set _settings(molecule-bonds-visible) 1
+                    set _settings(molecule-bondstyle) cylinder
+                    set _settings(molecule-atomscale) 0.3
+                    set _settings(molecule-bondscale) 0.075
+                }
+                "balls" - "spheres" {
+                    set _settings(molecule-rscale) covalent
+                    set _settings(molecule-atoms-visible) 1
+                    set _settings(molecule-bonds-visible) 0
+                    set _settings(molecule-bondstyle) cylinder
+                    set _settings(molecule-atomscale) 0.3
+                    set _settings(molecule-bondscale) 0.075
+                }
+                "sticks" {
+                    set _settings(molecule-rscale) none
+                    set _settings(molecule-atoms-visible) 1
+                    set _settings(molecule-bonds-visible) 1
+                    set _settings(molecule-bondstyle) cylinder
+                    set _settings(molecule-atomscale) 0.075
+                    set _settings(molecule-bondscale) 0.075
+                }
+                "spacefilling" {
+                    set _settings(molecule-rscale) van_der_waals
+                    set _settings(molecule-atoms-visible) 1
+                    set _settings(molecule-bonds-visible) 0
+                    set _settings(molecule-bondstyle) cylinder
+                    set _settings(molecule-atomscale) 1.0
+                    set _settings(molecule-bondscale) 0.075
+                }
+                "rods"  {
+                    set _settings(molecule-rscale) none
+                    set _settings(molecule-atoms-visible) 1
+                    set _settings(molecule-bonds-visible) 1
+                    set _settings(molecule-bondstyle) cylinder
+                    set _settings(molecule-atomscale) 0.1
+                    set _settings(molecule-bondscale) 0.1
+                }
+                "wireframe" - "lines" {
+                    set _settings(molecule-rscale) none
+                    set _settings(molecule-atoms-visible) 0
+                    set _settings(molecule-bonds-visible) 1
+                    set _settings(molecule-bondstyle) line
+                    set _settings(molecule-atomscale) 1.0
+                    set _settings(molecule-bondscale) 1.0
+                }
+                default {
+                    error "unknown representation $value"
+                }
+            }
+            $itk_component(rscale) value [$itk_component(rscale) label $_settings(molecule-rscale)]
+            switch -- $value {
+                "ballandstick" - "balls" - "spheres" {
+                    $itk_component(rscale) configure -state normal
+                }
+                default {
+                    $itk_component(rscale) configure -state disabled
+                }
+            }
+            foreach dataset [CurrentDatasets -all] {
+                foreach {dataobj comp} [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "molecule" } {
+                    StartBufferingCommands
+                    SendCmd [subst {molecule rscale $_settings(molecule-rscale) $dataset}]
+                    SendCmd [subst {molecule ascale $_settings(molecule-atomscale) $dataset}]
+                    SendCmd [subst {molecule bscale $_settings(molecule-bondscale) $dataset}]
+                    SendCmd [subst {molecule bstyle $_settings(molecule-bondstyle) $dataset}]
+                    SendCmd [subst {molecule atoms $_settings(molecule-atoms-visible) $dataset}]
+                    SendCmd [subst {molecule bonds $_settings(molecule-bonds-visible) $dataset}]
+                    StopBufferingCommands
+                }
+            }
+        }
+        "molecule-rscale" {
+            set value [$itk_component(rscale) value]
+            set value [$itk_component(rscale) translate $value]
+            set _settings($what) $value
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach {dataobj comp} [split $dataset -] break
+                set type [$dataobj type $comp]
+                if { $type == "molecule" } {
+                    SendCmd [subst {molecule rscale $_settings($what) $dataset}]
+                }
+            }
+        }
+        "molecule-labels" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible $_first] {
+               foreach { dataobj comp } [split $dataset -] break
+               set type [$dataobj type $comp]
+               if { $type == "molecule" } {
+                   SendCmd "molecule labels $bool $dataset"
+               }
+            }
+        }
+        "axis-visible" {
+            set bool $_axis(visible)
+            SendCmd "axis visible all $bool"
+        }
+        "axis-labels" {
+            set bool $_axis(labels)
+            SendCmd "axis labels all $bool"
+        }
+        "axis-minorticks" {
+            set bool $_axis(minorticks)
+            SendCmd "axis minticks all $bool"
+        }
+        "axis-xgrid" {
+            set bool $_axis(xgrid)
+            SendCmd "axis grid x $bool"
+        }
+        "axis-ygrid" {
+            set bool $_axis(ygrid)
+            SendCmd "axis grid y $bool"
+        }
+        "axis-zgrid" {
+            set bool $_axis(zgrid)
+            SendCmd "axis grid z $bool"
+        }
+        "axis-mode" {
+            set mode [$itk_component(axismode) value]
+            set mode [$itk_component(axismode) translate $mode]
+            SendCmd "axis flymode $mode"
+        }
+        "axis-xcutaway" - "axis-ycutaway" - "axis-zcutaway" {
+            set axis [string range $what 5 5]
+            set bool $_axis(${axis}cutaway)
+            if { $bool } {
+                set pos [expr $_axis(${axis}position) * 0.01]
+                set dir $_axis(${axis}direction)
+                $itk_component(${axis}CutScale) configure -state normal \
+                    -troughcolor white
+                SendCmd "renderer clipplane $axis $pos $dir"
+            } else {
+                $itk_component(${axis}CutScale) configure -state disabled \
+                    -troughcolor grey82
+                SendCmd "renderer clipplane $axis 1 -1"
+            }
+        }
+        "axis-xposition" - "axis-yposition" - "axis-zposition" -
+        "axis-xdirection" - "axis-ydirection" - "axis-zdirection" {
+            set axis [string range $what 5 5]
+            #set dir $_axis(${axis}direction)
+            set pos [expr $_axis(${axis}position) * 0.01]
+            SendCmd "renderer clipplane ${axis} $pos -1"
+        }
+        default {
+            error "don't know how to fix $what"
+        }
+    }
+}
+
+#
+# RequestLegend --
+#
+# Request a new legend from the server.  The size of the legend
+# is determined from the height of the canvas.  It will be rotated
+# to be vertical when drawn.
+#
+itcl::body Rappture::VtkViewer::RequestLegend {} {
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+    set w 12
+    set h [expr {$_height - 2 * ($lineht + 2)}]
+    if { $h < 1 } {
+        return
+    }
+    # Set the legend on the first dataset.
+    foreach dataset [CurrentDatasets -visible] {
+        foreach {dataobj comp} [split $dataset -] break
+        if { [info exists _dataset2style($dataset)] } {
+            #SendCmd "legend $_dataset2style($dataset) vmag {} {} $w $h 0"
+            SendCmd "legend2 $_dataset2style($dataset) $w $h"
+            break;
+        }
+    }
+}
+
+#
+# ChangeColormap --
+#
+itcl::body Rappture::VtkViewer::ChangeColormap {dataobj comp color} {
+    set tag $dataobj-$comp
+    if { ![info exist _style($tag)] } {
+        error "no initial colormap"
+    }
+    array set style $_style($tag)
+    set style(-color) $color
+    set _style($tag) [array get style]
+    SetColormap $dataobj $comp
+}
+
+#
+# SetColormap --
+#
+itcl::body Rappture::VtkViewer::SetColormap { dataobj comp } {
+    array set style {
+        -color BCGYR
+    }
+    if {[$dataobj type $comp] == "molecule"} {
+        set style(-color) elementDefault
+    }
+    set tag $dataobj-$comp
+    if { ![info exists _initialStyle($tag)] } {
+        # Save the initial component style.
+        set _initialStyle($tag) [$dataobj style $comp]
+    }
+
+    # Override defaults with initial style defined in xml.
+    array set style $_initialStyle($tag)
+
+    if { ![info exists _style($tag)] } {
+        set _style($tag) [array get style]
+    }
+    # Override initial style with current style.
+    array set style $_style($tag)
+
+    set name "$style(-color)"
+    if { ![info exists _colormaps($name)] } {
+        BuildColormap $name
+        set _colormaps($name) 1
+    }
+    if { ![info exists _dataset2style($tag)] ||
+         $_dataset2style($tag) != $name } {
+        set _dataset2style($tag) $name
+        switch -- [$dataobj type $comp] {
+            "polydata" {
+                SendCmd "polydata colormap $name $tag"
+            }
+            "glyphs" {
+                SendCmd "glyphs colormap $name $tag"
+            }
+            "molecule" {
+                SendCmd "molecule colormap $name $tag"
+            }
+        }
+    }
+}
+
+#
+# BuildColormap --
+#
+itcl::body Rappture::VtkViewer::BuildColormap { name } {
+    if { $name == "elementDefault" } {
+        return
+    }
+    set cmap [ColorsToColormap $name]
+    if { [llength $cmap] == 0 } {
+        set cmap "0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0"
+    }
+    set amap "0.0 1.0 1.0 1.0"
+    SendCmd "colormap add $name { $cmap } { $amap }"
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkViewer::plotbackground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotbackground)]
+        SendCmd "screen bgcolor $rgb"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkViewer::plotforeground {
+    if { [isconnected] } {
+        set rgb [Color2RGB $itk_option(-plotforeground)]
+        SendCmd "axis color all $rgb"
+        SendCmd "outline color $rgb"
+    }
+}
+
+itcl::body Rappture::VtkViewer::limits { dataobj } {
+    foreach comp [$dataobj components] {
+        set tag $dataobj-$comp
+        if { ![info exists _limits($tag)] } {
+            set data [$dataobj data $comp]
+            if { $data == "" } {
+                continue
+            }
+            set tmpfile file[pid].vtk
+            set f [open "$tmpfile" "w"]
+            fconfigure $f -translation binary -encoding binary
+            puts $f $data
+            close $f
+            set reader [vtkDataSetReader $tag-xvtkDataSetReader]
+            $reader SetFileName $tmpfile
+set debug 0
+            if {$debug} {
+                # Only needed for debug output below
+                $reader ReadAllNormalsOn
+                $reader ReadAllTCoordsOn
+                $reader ReadAllScalarsOn
+                $reader ReadAllColorScalarsOn
+                $reader ReadAllVectorsOn
+                $reader ReadAllTensorsOn
+                $reader ReadAllFieldsOn
+            }
+            $reader Update
+            file delete $tmpfile
+            set output [$reader GetOutput]
+            if { $output == "" } {
+                # Invalid VTK file -- loader failed to parse
+                continue
+            }
+            set _limits($tag) [$output GetBounds]
+            if {$debug} {
+                puts stderr "\#scalars=[$reader GetNumberOfScalarsInFile]"
+                puts stderr "\#vectors=[$reader GetNumberOfVectorsInFile]"
+                puts stderr "\#tensors=[$reader GetNumberOfTensorsInFile]"
+                puts stderr "\#normals=[$reader GetNumberOfNormalsInFile]"
+                puts stderr "\#tcoords=[$reader GetNumberOfTCoordsInFile]"
+                puts stderr "\#fielddata=[$reader GetNumberOfFieldDataInFile]"
+                puts stderr "fielddataname=[$reader GetFieldDataNameInFile 0]"
+                set pointData [$output GetPointData]
+                if { $pointData != ""} {
+                    puts stderr "point \#arrays=[$pointData GetNumberOfArrays]"
+                    puts stderr "point \#components=[$pointData GetNumberOfComponents]"
+                    puts stderr "point \#tuples=[$pointData GetNumberOfTuples]"
+                    puts stderr "point scalars=[$pointData GetScalars]"
+                    puts stderr "point vectors=[$pointData GetVectors]"
+                }
+                set cellData [$output GetCellData]
+                if { $cellData != ""} {
+                    puts stderr "cell \#arrays=[$cellData GetNumberOfArrays]"
+                    puts stderr "cell \#components=[$cellData GetNumberOfComponents]"
+                    puts stderr "cell \#tuples=[$cellData GetNumberOfTuples]"
+                    puts stderr "cell scalars=[$cellData GetScalars]"
+                    puts stderr "cell vectors=[$cellData GetVectors]"
+                }
+                set fieldData [$output GetFieldData]
+                if { $fieldData != ""} {
+                    puts stderr "field \#arrays=[$fieldData GetNumberOfArrays]"
+                    puts stderr "field \#components=[$fieldData GetNumberOfComponents]"
+                    puts stderr "field \#tuples=[$fieldData GetNumberOfTuples]"
+                }
+            }
+            rename $output ""
+            rename $reader ""
+        }
+        foreach { xMin xMax yMin yMax zMin zMax} $_limits($tag) break
+        if {![info exists limits(xmin)] || $limits(xmin) > $xMin} {
+            set limits(xmin) $xMin
+        }
+        if {![info exists limits(xmax)] || $limits(xmax) < $xMax} {
+            set limits(xmax) $xMax
+        }
+        if {![info exists limits(ymin)] || $limits(ymin) > $yMin} {
+            set limits(ymin) $xMin
+        }
+        if {![info exists limits(ymax)] || $limits(ymax) < $yMax} {
+            set limits(ymax) $yMax
+        }
+        if {![info exists limits(zmin)] || $limits(zmin) > $zMin} {
+            set limits(zmin) $zMin
+        }
+        if {![info exists limits(zmax)] || $limits(zmax) < $zMax} {
+            set limits(zmax) $zMax
+        }
+    }
+    return [array get limits]
+}
+
+itcl::body Rappture::VtkViewer::BuildGlyphsTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert 0 \
+        -title "Glyph Settings" \
+        -icon [Rappture::icon volume-on]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.glyphs \
+        -text "Show Glyphs" \
+        -variable [itcl::scope _settings(glyphs-visible)] \
+        -command [itcl::code $this AdjustSetting glyphs-visible] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.outline \
+        -text "Show Outline" \
+        -variable [itcl::scope _settings(glyphs-outline)] \
+        -command [itcl::code $this AdjustSetting glyphs-outline] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.wireframe \
+        -text "Show Wireframe" \
+        -variable [itcl::scope _settings(glyphs-wireframe)] \
+        -command [itcl::code $this AdjustSetting glyphs-wireframe] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(glyphs-lighting)] \
+        -command [itcl::code $this AdjustSetting glyphs-lighting] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.edges \
+        -text "Show Edges" \
+        -variable [itcl::scope _settings(glyphs-edges)] \
+        -command [itcl::code $this AdjustSetting glyphs-edges] \
+        -font "Arial 9" -anchor w
+
+    label $inner.palette_l -text "Palette" -font "Arial 9" -anchor w
+    itk_component add glyphspalette {
+        Rappture::Combobox $inner.palette -width 10 -editable 0
+    }
+    $inner.palette choices insert end [GetColormapList]
+    $itk_component(glyphspalette) value "BCGYR"
+    bind $inner.palette <<Value>> \
+        [itcl::code $this AdjustSetting glyphs-palette]
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9" -anchor w
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(glyphs-opacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this EventuallySetGlyphsOpacity]
+    $inner.opacity set $_settings(glyphs-opacity)
+
+    blt::table $inner \
+        0,0 $inner.glyphs    -cspan 2  -anchor w -pady 2 \
+        1,0 $inner.outline   -cspan 2  -anchor w -pady 2 \
+        2,0 $inner.wireframe -cspan 2  -anchor w -pady 2 \
+        3,0 $inner.lighting  -cspan 2  -anchor w -pady 2 \
+        4,0 $inner.edges     -cspan 2  -anchor w -pady 2 \
+        5,0 $inner.opacity_l -anchor w -pady 2 \
+        5,1 $inner.opacity   -fill x   -pady 2 \
+        6,0 $inner.palette_l -anchor w -pady 2 \
+        6,1 $inner.palette   -fill x   -pady 2
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r8 c1 -resize expand
+}
+
+itcl::body Rappture::VtkViewer::BuildPolydataTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert 0 \
+        -title "Mesh Settings" \
+        -icon [Rappture::icon mesh]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.mesh \
+        -text "Show Mesh" \
+        -variable [itcl::scope _settings(polydata-visible)] \
+        -command [itcl::code $this AdjustSetting polydata-visible] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.outline \
+        -text "Show Outline" \
+        -variable [itcl::scope _settings(polydata-outline)] \
+        -command [itcl::code $this AdjustSetting polydata-outline] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.wireframe \
+        -text "Show Wireframe" \
+        -variable [itcl::scope _settings(polydata-wireframe)] \
+        -command [itcl::code $this AdjustSetting polydata-wireframe] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(polydata-lighting)] \
+        -command [itcl::code $this AdjustSetting polydata-lighting] \
+        -font "Arial 9" -anchor w
+
+    checkbutton $inner.edges \
+        -text "Show Edges" \
+        -variable [itcl::scope _settings(polydata-edges)] \
+        -command [itcl::code $this AdjustSetting polydata-edges] \
+        -font "Arial 9" -anchor w
+
+    label $inner.palette_l -text "Palette" -font "Arial 9" -anchor w
+    itk_component add meshpalette {
+        Rappture::Combobox $inner.palette -width 10 -editable 0
+    }
+    $inner.palette choices insert end [GetColormapList]
+    $itk_component(meshpalette) value "BCGYR"
+    bind $inner.palette <<Value>> \
+        [itcl::code $this AdjustSetting polydata-palette]
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9" -anchor w
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(polydata-opacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this EventuallySetPolydataOpacity]
+    $inner.opacity set $_settings(polydata-opacity)
+
+    blt::table $inner \
+        0,0 $inner.mesh      -cspan 2  -anchor w -pady 2 \
+        1,0 $inner.outline   -cspan 2  -anchor w -pady 2 \
+        2,0 $inner.wireframe -cspan 2  -anchor w -pady 2 \
+        3,0 $inner.lighting  -cspan 2  -anchor w -pady 2 \
+        4,0 $inner.edges     -cspan 2  -anchor w -pady 2 \
+        5,0 $inner.opacity_l -anchor w -pady 2 \
+        5,1 $inner.opacity   -fill x   -pady 2 \
+        6,0 $inner.palette_l -anchor w -pady 2 \
+        6,1 $inner.palette   -fill x   -pady 2
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r8 c1 -resize expand
+}
+
+itcl::body Rappture::VtkViewer::BuildAxisTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+    #set bfg [option get $itk_component(hull) boldFont Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Axis Settings" \
+        -icon [Rappture::icon axis2]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Axes" \
+        -variable [itcl::scope _axis(visible)] \
+        -command [itcl::code $this AdjustSetting axis-visible] \
+        -font "Arial 9"
+
+    checkbutton $inner.labels \
+        -text "Axis Labels" \
+        -variable [itcl::scope _axis(labels)] \
+        -command [itcl::code $this AdjustSetting axis-labels] \
+        -font "Arial 9"
+    label $inner.grid_l -text "Grid" -font "Arial 9"
+    checkbutton $inner.xgrid \
+        -text "X" \
+        -variable [itcl::scope _axis(xgrid)] \
+        -command [itcl::code $this AdjustSetting axis-xgrid] \
+        -font "Arial 9"
+    checkbutton $inner.ygrid \
+        -text "Y" \
+        -variable [itcl::scope _axis(ygrid)] \
+        -command [itcl::code $this AdjustSetting axis-ygrid] \
+        -font "Arial 9"
+    checkbutton $inner.zgrid \
+        -text "Z" \
+        -variable [itcl::scope _axis(zgrid)] \
+        -command [itcl::code $this AdjustSetting axis-zgrid] \
+        -font "Arial 9"
+    checkbutton $inner.minorticks \
+        -text "Minor Ticks" \
+        -variable [itcl::scope _axis(minorticks)] \
+        -command [itcl::code $this AdjustSetting axis-minorticks] \
+        -font "Arial 9"
+
+    label $inner.mode_l -text "Mode" -font "Arial 9"
+
+    itk_component add axismode {
+        Rappture::Combobox $inner.mode -width 10 -editable 0
+    }
+    $inner.mode choices insert end \
+        "static_triad"    "static" \
+        "closest_triad"   "closest" \
+        "furthest_triad"  "farthest" \
+        "outer_edges"     "outer"
+    $itk_component(axismode) value "static"
+    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting axis-mode]
+
+    blt::table $inner \
+        0,0 $inner.visible -anchor w -cspan 4 \
+        1,0 $inner.labels  -anchor w -cspan 4 \
+        2,0 $inner.minorticks  -anchor w -cspan 4 \
+        4,0 $inner.grid_l  -anchor w \
+        4,1 $inner.xgrid   -anchor w \
+        4,2 $inner.ygrid   -anchor w \
+        4,3 $inner.zgrid   -anchor w \
+        5,0 $inner.mode_l  -anchor w -padx { 2 0 } \
+        5,1 $inner.mode    -fill x   -cspan 3
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c6 -resize expand
+    blt::table configure $inner r3 -height 0.125i
+}
+
+itcl::body Rappture::VtkViewer::BuildCameraTab {} {
+    set inner [$itk_component(main) insert end \
+        -title "Camera Settings" \
+        -icon [Rappture::icon camera]]
+    $inner configure -borderwidth 4
+
+    label $inner.view_l -text "view" -font "Arial 9"
+    set f [frame $inner.view]
+    foreach side { front back left right top bottom } {
+        button $f.$side  -image [Rappture::icon view$side] \
+            -command [itcl::code $this SetOrientation $side]
+        Rappture::Tooltip::for $f.$side "Change the view to $side"
+        pack $f.$side -side left
+    }
+
+    blt::table $inner \
+        0,0 $inner.view_l -anchor e -pady 2 \
+        0,1 $inner.view -anchor w -pady 2
+    blt::table configure $inner r0 -resize none
+
+    set labels { qx qy qz qw xpan ypan zoom }
+    set row 1
+    foreach tag $labels {
+        label $inner.${tag}label -text $tag -font "Arial 9"
+        entry $inner.${tag} -font "Arial 9"  -bg white \
+            -textvariable [itcl::scope _view(-$tag)]
+        bind $inner.${tag} <Return> \
+            [itcl::code $this camera set -${tag}]
+        bind $inner.${tag} <KP_Enter> \
+            [itcl::code $this camera set -${tag}]
+        blt::table $inner \
+            $row,0 $inner.${tag}label -anchor e -pady 2 \
+            $row,1 $inner.${tag} -anchor w -pady 2
+        blt::table configure $inner r$row -resize none
+        incr row
+    }
+    checkbutton $inner.ortho \
+        -text "Orthographic Projection" \
+        -variable [itcl::scope _view(-ortho)] \
+        -command [itcl::code $this camera set -ortho] \
+        -font "Arial 9"
+    blt::table $inner \
+            $row,0 $inner.ortho -cspan 2 -anchor w -pady 2
+    blt::table configure $inner r$row -resize none
+    incr row
+
+    blt::table configure $inner c* -resize none
+    blt::table configure $inner c2 -resize expand
+    blt::table configure $inner r$row -resize expand
+}
+
+itcl::body Rappture::VtkViewer::BuildCutawayTab {} {
+
+    set fg [option get $itk_component(hull) font Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Cutaway Along Axis" \
+        -icon [Rappture::icon cutbutton]]
+
+    $inner configure -borderwidth 4
+
+    # X-value slicer...
+    itk_component add xCutButton {
+        Rappture::PushButton $inner.xbutton \
+            -onimage [Rappture::icon x-cutplane] \
+            -offimage [Rappture::icon x-cutplane] \
+            -command [itcl::code $this AdjustSetting axis-xcutaway] \
+            -variable [itcl::scope _axis(xcutaway)]
+    }
+    Rappture::Tooltip::for $itk_component(xCutButton) \
+        "Toggle the X-axis cutaway on/off"
+
+    itk_component add xCutScale {
+        ::scale $inner.xval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this Slice move x] \
+            -variable [itcl::scope _axis(xposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    # Set the default cutaway value before disabling the scale.
+    $itk_component(xCutScale) set 100
+    $itk_component(xCutScale) configure -state disabled
+    Rappture::Tooltip::for $itk_component(xCutScale) \
+        "@[itcl::code $this Slice tooltip x]"
+
+    itk_component add xDirButton {
+        Rappture::PushButton $inner.xdir \
+            -onimage [Rappture::icon arrow-down] \
+            -onvalue -1 \
+            -offimage [Rappture::icon arrow-up] \
+            -offvalue 1 \
+            -command [itcl::code $this AdjustSetting axis-xdirection] \
+            -variable [itcl::scope _axis(xdirection)]
+    }
+    set _axis(xdirection) -1
+    Rappture::Tooltip::for $itk_component(xDirButton) \
+        "Toggle the direction of the X-axis cutaway"
+
+    # Y-value slicer...
+    itk_component add yCutButton {
+        Rappture::PushButton $inner.ybutton \
+            -onimage [Rappture::icon y-cutplane] \
+            -offimage [Rappture::icon y-cutplane] \
+            -command [itcl::code $this AdjustSetting axis-ycutaway] \
+            -variable [itcl::scope _axis(ycutaway)]
+    }
+    Rappture::Tooltip::for $itk_component(yCutButton) \
+        "Toggle the Y-axis cutaway on/off"
+
+    itk_component add yCutScale {
+        ::scale $inner.yval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this Slice move y] \
+            -variable [itcl::scope _axis(yposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    Rappture::Tooltip::for $itk_component(yCutScale) \
+        "@[itcl::code $this Slice tooltip y]"
+    # Set the default cutaway value before disabling the scale.
+    $itk_component(yCutScale) set 100
+    $itk_component(yCutScale) configure -state disabled
+
+    itk_component add yDirButton {
+        Rappture::PushButton $inner.ydir \
+            -onimage [Rappture::icon arrow-down] \
+            -onvalue -1 \
+            -offimage [Rappture::icon arrow-up] \
+            -offvalue 1 \
+            -command [itcl::code $this AdjustSetting axis-ydirection] \
+            -variable [itcl::scope _axis(ydirection)]
+    }
+    Rappture::Tooltip::for $itk_component(yDirButton) \
+        "Toggle the direction of the Y-axis cutaway"
+    set _axis(ydirection) -1
+
+    # Z-value slicer...
+    itk_component add zCutButton {
+        Rappture::PushButton $inner.zbutton \
+            -onimage [Rappture::icon z-cutplane] \
+            -offimage [Rappture::icon z-cutplane] \
+            -command [itcl::code $this AdjustSetting axis-zcutaway] \
+            -variable [itcl::scope _axis(zcutaway)]
+    }
+    Rappture::Tooltip::for $itk_component(zCutButton) \
+        "Toggle the Z-axis cutaway on/off"
+
+    itk_component add zCutScale {
+        ::scale $inner.zval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this Slice move z] \
+            -variable [itcl::scope _axis(zposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    $itk_component(zCutScale) set 100
+    $itk_component(zCutScale) configure -state disabled
+    Rappture::Tooltip::for $itk_component(zCutScale) \
+        "@[itcl::code $this Slice tooltip z]"
+
+    itk_component add zDirButton {
+        Rappture::PushButton $inner.zdir \
+            -onimage [Rappture::icon arrow-down] \
+            -onvalue -1 \
+            -offimage [Rappture::icon arrow-up] \
+            -offvalue 1 \
+            -command [itcl::code $this AdjustSetting axis-zdirection] \
+            -variable [itcl::scope _axis(zdirection)]
+    }
+    set _axis(zdirection) -1
+    Rappture::Tooltip::for $itk_component(zDirButton) \
+        "Toggle the direction of the Z-axis cutaway"
+
+    blt::table $inner \
+        0,0 $itk_component(xCutButton)  -anchor e -padx 2 -pady 2 \
+        1,0 $itk_component(xCutScale)   -fill y \
+        0,1 $itk_component(yCutButton)  -anchor e -padx 2 -pady 2 \
+        1,1 $itk_component(yCutScale)   -fill y \
+        0,2 $itk_component(zCutButton)  -anchor e -padx 2 -pady 2 \
+        1,2 $itk_component(zCutScale)   -fill y \
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r1 c3 -resize expand
+}
+
+itcl::body Rappture::VtkViewer::BuildMoleculeTab {} {
+    set fg [option get $itk_component(hull) font Font]
+
+    set inner [$itk_component(main) insert 0 \
+        -title "Molecule Settings" \
+        -icon [Rappture::icon molecule]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.molecule \
+        -text "Show Molecule" \
+        -variable [itcl::scope _settings(molecule-visible)] \
+        -command [itcl::code $this AdjustSetting molecule-visible] \
+        -font "Arial 9"
+
+    checkbutton $inner.outline \
+        -text "Show Outline" \
+        -variable [itcl::scope _settings(molecule-outline)] \
+        -command [itcl::code $this AdjustSetting molecule-outline] \
+        -font "Arial 9"
+
+    checkbutton $inner.label \
+        -text "Show Atom Labels" \
+        -variable [itcl::scope _settings(molecule-labels)] \
+        -command [itcl::code $this AdjustSetting molecule-labels] \
+        -font "Arial 9"
+
+    checkbutton $inner.wireframe \
+        -text "Show Wireframe" \
+        -variable [itcl::scope _settings(molecule-wireframe)] \
+        -command [itcl::code $this AdjustSetting molecule-wireframe] \
+        -font "Arial 9"
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(molecule-lighting)] \
+        -command [itcl::code $this AdjustSetting molecule-lighting] \
+        -font "Arial 9"
+
+    checkbutton $inner.edges \
+        -text "Show Edges" \
+        -variable [itcl::scope _settings(molecule-edges)] \
+        -command [itcl::code $this AdjustSetting molecule-edges] \
+        -font "Arial 9"
+
+    label $inner.rep_l -text "Molecule Representation" \
+        -font "Arial 9"
+
+    itk_component add representation {
+        Rappture::Combobox $inner.rep -width 20 -editable 0
+    }
+    $inner.rep choices insert end \
+        "ballandstick"  "Ball and Stick" \
+        "spheres"       "Spheres"        \
+        "sticks"        "Sticks"         \
+        "rods"          "Rods"           \
+        "wireframe"     "Wireframe"      \
+        "spacefilling"  "Space Filling"
+
+    bind $inner.rep <<Value>> \
+        [itcl::code $this AdjustSetting molecule-representation]
+    $inner.rep value "Ball and Stick"
+
+    label $inner.rscale_l -text "Atom Radii" \
+        -font "Arial 9"
+
+    itk_component add rscale {
+        Rappture::Combobox $inner.rscale -width 20 -editable 0
+    }
+    $inner.rscale choices insert end \
+        "atomic"        "Atomic"   \
+        "covalent"      "Covalent" \
+        "van_der_waals" "VDW"      \
+        "none"          "Constant"
+
+    bind $inner.rscale <<Value>> \
+        [itcl::code $this AdjustSetting molecule-rscale]
+    $inner.rscale value "Covalent"
+
+    label $inner.palette_l -text "Palette" -font "Arial 9"
+    itk_component add moleculepalette {
+        Rappture::Combobox $inner.palette -width 10 -editable 0
+    }
+    $inner.palette choices insert end [GetColormapList -includeElementDefault]
+    $itk_component(moleculepalette) value "elementDefault"
+    bind $inner.palette <<Value>> \
+        [itcl::code $this AdjustSetting molecule-palette]
+
+    label $inner.atomscale_l -text "Atom Scale" -font "Arial 9"
+    ::scale $inner.atomscale -width 15 -font "Arial 7" \
+        -from 0.025 -to 2.0 -resolution 0.025 -label "" \
+        -showvalue true -orient horizontal \
+        -command [itcl::code $this EventuallySetAtomScale] \
+        -variable [itcl::scope _settings(molecule-atomscale)]
+    $inner.atomscale set $_settings(molecule-atomscale)
+    Rappture::Tooltip::for $inner.atomscale \
+        "Adjust relative scale of atoms (spheres or balls)."
+
+    label $inner.bondscale_l -text "Bond Scale" -font "Arial 9"
+    ::scale $inner.bondscale -width 15 -font "Arial 7" \
+        -from 0.005 -to 0.3 -resolution 0.005 -label "" \
+        -showvalue true -orient horizontal \
+        -command [itcl::code $this EventuallySetBondScale] \
+        -variable [itcl::scope _settings(molecule-bondscale)]
+    Rappture::Tooltip::for $inner.bondscale \
+        "Adjust scale of bonds (sticks)."
+    $inner.bondscale set $_settings(molecule-bondscale)
+
+    label $inner.opacity_l -text "Opacity" -font "Arial 9"
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(molecule-opacity)] \
+        -width 15 -font "Arial 7" \
+        -showvalue on \
+        -command [itcl::code $this EventuallySetMoleculeOpacity]
+
+    label $inner.quality_l -text "Quality" -font "Arial 9"
+    ::scale $inner.quality -width 15 -font "Arial 7" \
+        -from 0.0 -to 10.0 -resolution 0.1 -label "" \
+        -showvalue true -orient horizontal \
+        -command [itcl::code $this EventuallySetMoleculeQuality] \
+        -variable [itcl::scope _settings(molecule-quality)]
+    Rappture::Tooltip::for $inner.quality \
+        "Adjust tesselation quality"
+    $inner.quality set $_settings(molecule-quality)
+
+    blt::table $inner \
+        0,0 $inner.molecule     -anchor w -pady {1 0} \
+        1,0 $inner.outline      -anchor w -pady {1 0} \
+        2,0 $inner.label        -anchor w -pady {1 0} \
+        3,0 $inner.edges        -anchor w -pady {1 0} \
+        4,0 $inner.rep_l        -anchor w -pady { 2 0 } \
+        5,0 $inner.rep          -fill x    -pady 2 \
+        6,0 $inner.rscale_l     -anchor w -pady { 2 0 } \
+        7,0 $inner.rscale       -fill x    -pady 2 \
+        8,0 $inner.palette_l    -anchor w  -pady 0 \
+        9,0 $inner.palette      -fill x    -padx 2 \
+        10,0 $inner.atomscale_l  -anchor w -pady {3 0} \
+        11,0 $inner.atomscale   -fill x    -padx 2 \
+        12,0 $inner.bondscale_l -anchor w -pady {3 0} \
+        13,0 $inner.bondscale   -fill x   -padx 2 \
+        14,0 $inner.opacity_l   -anchor w -pady {3 0} \
+        15,0 $inner.opacity     -fill x    -padx 2 \
+        16,0 $inner.quality_l   -anchor w -pady {3 0} \
+        17,0 $inner.quality     -fill x    -padx 2
+
+    blt::table configure $inner r* -resize none
+    blt::table configure $inner r18 -resize expand
+}
+
+#
+# camera --
+#
+itcl::body Rappture::VtkViewer::camera {option args} {
+    switch -- $option {
+        "show" {
+            puts [array get _view]
+        }
+        "set" {
+            set what [lindex $args 0]
+            set x $_view($what)
+            set code [catch { string is double $x } result]
+            if { $code != 0 || !$result } {
+                return
+            }
+            switch -- $what {
+                "-ortho" {
+                    if {$_view($what)} {
+                        SendCmd "camera mode ortho"
+                    } else {
+                        SendCmd "camera mode persp"
+                    }
+                }
+                "-xpan" - "-ypan" {
+                    PanCamera
+                }
+                "-qx" - "-qy" - "-qz" - "-qw" {
+                    set q [ViewToQuaternion]
+                    $_arcball quaternion $q
+                    EventuallyRotate $q
+                }
+                "-zoom" {
+                    SendCmd "camera zoom $_view($what)"
+                }
+            }
+        }
+    }
+}
+
+itcl::body Rappture::VtkViewer::GetVtkData { args } {
+    set bytes ""
+    foreach dataobj [get] {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            set contents [$dataobj data $comp]
+            append bytes "$contents\n"
+        }
+    }
+    return [list .vtk $bytes]
+}
+
+itcl::body Rappture::VtkViewer::GetImage { args } {
+    if { [image width $_image(download)] > 0 &&
+         [image height $_image(download)] > 0 } {
+        set bytes [$_image(download) data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        return [list .jpg $bytes]
+    }
+    return ""
+}
+
+itcl::body Rappture::VtkViewer::BuildDownloadPopup { popup command } {
+    Rappture::Balloon $popup \
+        -title "[Rappture::filexfer::label downloadWord] as..."
+    set inner [$popup component inner]
+    label $inner.summary -text "" -anchor w
+    radiobutton $inner.vtk_button -text "VTK data file" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Helvetica 9 " \
+        -value vtk
+    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
+    radiobutton $inner.image_button -text "Image File" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -value image
+    Rappture::Tooltip::for $inner.image_button \
+        "Save as digital image."
+
+    button $inner.ok -text "Save" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command $command \
+        -compound left \
+        -image [Rappture::icon download]
+
+    button $inner.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command [list $popup deactivate] \
+        -compound left \
+        -image [Rappture::icon cancel]
+
+    blt::table $inner \
+        0,0 $inner.summary -cspan 2  \
+        1,0 $inner.vtk_button -anchor w -cspan 2 -padx { 4 0 } \
+        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
+        4,1 $inner.cancel -width .9i -fill y \
+        4,0 $inner.ok -padx 2 -width .9i -fill y
+    blt::table configure $inner r3 -height 4
+    blt::table configure $inner r4 -pady 4
+    raise $inner.image_button
+    $inner.vtk_button invoke
+    return $inner
+}
+
+itcl::body Rappture::VtkViewer::SetObjectStyle { dataobj comp } {
+    # Parse style string.
+    set tag $dataobj-$comp
+    set type [$dataobj type $comp]
+    set style [$dataobj style $comp]
+    switch -- $type {
+        "glyphs" {
+            array set settings {
+                -color white
+                -edgecolor black
+                -edges 0
+                -gscale 1
+                -lighting 1
+                -linewidth 1.0
+                -normscale 0
+                -opacity 1.0
+                -orientglyphs 0
+                -outline 0
+                -ptsize 1.0
+                -quality 1
+                -scalemode "vcomp"
+                -shape "sphere"
+                -visible 1
+                -wireframe 0
+            }
+            array set settings $style
+            set shape [$dataobj shape $comp]
+            if {$shape != ""} {
+                set settings(-shape) $shape
+            }
+            # Backwards compat with camel case style option
+            if { [info exists settings(-orientGlyphs)] } {
+                set settings(-orientglyphs) $settings(-orientGlyphs)
+                array unset settings -orientGlyphs
+            }
+            # Backwards compat with camel case style option
+            if { [info exists settings(-scaleMode)] } {
+                set settings(-scalemode) $settings(-scaleMode)
+                array unset settings -scaleMode
+            }
+            SendCmd "outline add $tag"
+            SendCmd "outline color [Color2RGB $settings(-color)] $tag"
+            SendCmd "outline visible $settings(-outline) $tag"
+            set _settings(glyphs-outline) $settings(-outline)
+
+            SendCmd "glyphs add $settings(-shape) $tag"
+            SendCmd "glyphs normscale $settings(-normscale) $tag"
+            SendCmd "glyphs gscale $settings(-gscale) $tag"
+            SendCmd "glyphs wireframe $settings(-wireframe) $tag"
+            SendCmd "glyphs color [Color2RGB $settings(-color)] $tag"
+            #SendCmd "glyphs colormode constant {} $tag"
+            # Omitting field name for gorient and smode commands
+            # defaults to active scalars or vectors depending on mode
+            SendCmd "glyphs gorient $settings(-orientglyphs) {} $tag"
+            SendCmd "glyphs smode $settings(-scalemode) {} $tag"
+            SendCmd "glyphs edges $settings(-edges) $tag"
+            SendCmd "glyphs linecolor [Color2RGB $settings(-edgecolor)] $tag"
+            SendCmd "glyphs linewidth $settings(-linewidth) $tag"
+            SendCmd "glyphs ptsize $settings(-ptsize) $tag"
+            SendCmd "glyphs quality $settings(-quality) $tag"
+            SendCmd "glyphs lighting $settings(-lighting) $tag"
+            SendCmd "glyphs opacity $settings(-opacity) $tag"
+            set _settings(glyphs-opacity) [expr 100.0 * $settings(-opacity)]
+            SendCmd "glyphs visible $settings(-visible) $tag"
+            set _settings(glyphs-wireframe) $settings(-wireframe)
+        }
+        "molecule" {
+            array set settings {
+                -atomscale 0.3
+                -atomsvisible 1
+                -bondscale 0.075
+                -bondstyle "cylinder"
+                -bondsvisible 1
+                -color "elementDefault"
+                -edgecolor black
+                -edges 0
+                -labels 0
+                -lighting 1
+                -linewidth 1.0
+                -opacity 1.0
+                -outline 0
+                -quality 1.0
+                -representation ""
+                -rscale "covalent"
+                -visible 1
+                -wireframe 0
+            }
+            array set settings $style
+
+            SendCmd "outline add $tag"
+            SendCmd "outline color [Color2RGB white] $tag"
+            SendCmd "outline visible $settings(-outline) $tag"
+            set _settings(molecule-outline) $settings(-outline)
+
+            SendCmd "molecule add $tag"
+            if {$settings(-representation) != ""} {
+                switch -- $settings(-representation) {
+                    "ballandstick" {
+                        set _settings(molecule-rscale) covalent
+                        set _settings(molecule-atoms-visible) 1
+                        set _settings(molecule-bonds-visible) 1
+                        set _settings(molecule-bondstyle) cylinder
+                        set _settings(molecule-atomscale) 0.3
+                        set _settings(molecule-bondscale) 0.075
+                    }
+                    "balls" - "spheres" {
+                        set _settings(molecule-rscale) covalent
+                        set _settings(molecule-atoms-visible) 1
+                        set _settings(molecule-bonds-visible) 0
+                        set _settings(molecule-bondstyle) cylinder
+                        set _settings(molecule-atomscale) 0.3
+                        set _settings(molecule-bondscale) 0.075
+                    }
+                    "sticks" {
+                        set _settings(molecule-rscale) none
+                        set _settings(molecule-atoms-visible) 1
+                        set _settings(molecule-bonds-visible) 1
+                        set _settings(molecule-bondstyle) cylinder
+                        set _settings(molecule-atomscale) 0.075
+                        set _settings(molecule-bondscale) 0.075
+                    }
+                    "spacefilling" {
+                        set _settings(molecule-rscale) van_der_waals
+                        set _settings(molecule-atoms-visible) 1
+                        set _settings(molecule-bonds-visible) 0
+                        set _settings(molecule-bondstyle) cylinder
+                        set _settings(molecule-atomscale) 1.0
+                        set _settings(molecule-bondscale) 0.075
+                    }
+                    "rods"  {
+                        set _settings(molecule-rscale) none
+                        set _settings(molecule-atoms-visible) 1
+                        set _settings(molecule-bonds-visible) 1
+                        set _settings(molecule-bondstyle) cylinder
+                        set _settings(molecule-atomscale) 0.1
+                        set _settings(molecule-bondscale) 0.1
+                    }
+                    "wireframe" - "lines" {
+                        set _settings(molecule-rscale) none
+                        set _settings(molecule-atoms-visible) 0
+                        set _settings(molecule-bonds-visible) 1
+                        set _settings(molecule-bondstyle) line
+                        set _settings(molecule-atomscale) 1.0
+                        set _settings(molecule-bondscale) 1.0
+                    }
+                    default {
+                        error "unknown representation $value"
+                    }
+                }
+                SendCmd "molecule rscale $_settings(molecule-rscale) $tag"
+                SendCmd "molecule atoms $_settings(molecule-atoms-visible) $tag"
+                SendCmd "molecule bonds $_settings(molecule-bonds-visible) $tag"
+                SendCmd "molecule bstyle $_settings(molecule-bondstyle) $tag"
+                SendCmd "molecule ascale $_settings(molecule-atomscale) $tag"
+                SendCmd "molecule bscale $_settings(molecule-bondscale) $tag"
+                $itk_component(representation) value [$itk_component(representation) label $settings(-representation)]
+                $itk_component(rscale) value [$itk_component(rscale) label $_settings(molecule-rscale)]
+                switch -- $settings(-representation) {
+                    "ballandstick" - "balls" - "spheres" {
+                        $itk_component(rscale) configure -state normal
+                    }
+                    default {
+                        $itk_component(rscale) configure -state disabled
+                    }
+                }
+            } else {
+                SendCmd "molecule rscale $settings(-rscale) $tag"
+                set _settings(molecule-rscale) $settings(-rscale)
+                SendCmd "molecule atoms $settings(-atomsvisible) $tag"
+                set _settings(molecule-atoms-visible) $settings(-atomsvisible)
+                SendCmd "molecule bonds $settings(-bondsvisible) $tag"
+                set _settings(molecule-bonds-visible) $settings(-bondsvisible)
+                SendCmd "molecule bstyle $settings(-bondstyle) $tag"
+                set _settings(molecule-bondstyle) $settings(-bondstyle)
+                SendCmd "molecule ascale $settings(-atomscale) $tag"
+                set _settings(molecule-atomscale) $settings(-atomscale)
+                SendCmd "molecule bscale $settings(-bondscale) $tag"
+                set _settings(molecule-bondscale) $settings(-bondscale)
+            }
+            SendCmd "molecule labels $settings(-labels) $tag"
+            set _settings(molecule-labels) $settings(-labels)
+            SendCmd "molecule linecolor [Color2RGB $settings(-edgecolor)] $tag"
+            SendCmd "molecule linewidth $settings(-linewidth) $tag"
+            SendCmd "molecule edges $settings(-edges) $tag"
+            set _settings(molecule-edges) $settings(-edges)
+            SendCmd "molecule lighting $settings(-lighting) $tag"
+            set _settings(molecule-lighting) $settings(-lighting)
+            SendCmd "molecule aquality $settings(-quality) $tag"
+            SendCmd "molecule bquality $settings(-quality) $tag"
+            set _settings(molecule-quality) $settings(-quality)
+            SendCmd "molecule visible $settings(-visible) $tag"
+            set _settings(molecule-visible) $settings(-visible)
+            set _haveMolecules 1
+        }
+        "polydata" {
+            array set settings {
+                -cloudstyle "mesh"
+                -color white
+                -edgecolor black
+                -edges 1
+                -lighting 1
+                -linewidth 1.0
+                -opacity 1.0
+                -outline 0
+                -visible 1
+                -wireframe 0
+            }
+            array set settings $style
+
+            SendCmd "outline add $tag"
+            SendCmd "outline color [Color2RGB $settings(-color)] $tag"
+            SendCmd "outline visible $settings(-outline) $tag"
+            set _settings(polydata-outline) $settings(-outline)
+
+            SendCmd "polydata add $tag"
+            SendCmd "polydata visible $settings(-visible) $tag"
+            set _settings(polydata-visible) $settings(-visible)
+            SendCmd "polydata edges $settings(-edges) $tag"
+            set _settings(polydata-edges) $settings(-edges)
+            SendCmd "polydata cloudstyle $settings(-cloudstyle) $tag"
+            SendCmd "polydata color [Color2RGB $settings(-color)] $tag"
+            #SendCmd "polydata colormode constant {} $tag"
+            SendCmd "polydata lighting $settings(-lighting) $tag"
+            set _settings(polydata-lighting) $settings(-lighting)
+            SendCmd "polydata linecolor [Color2RGB $settings(-edgecolor)] $tag"
+            SendCmd "polydata linewidth $settings(-linewidth) $tag"
+            SendCmd "polydata opacity $settings(-opacity) $tag"
+            set _settings(polydata-opacity) [expr 100.0 * $settings(-opacity)]
+            SendCmd "polydata wireframe $settings(-wireframe) $tag"
+            set _settings(polydata-wireframe) $settings(-wireframe)
+            set havePolyData 1
+        }
+    }
+    SetColormap $dataobj $comp
+}
+
+itcl::body Rappture::VtkViewer::IsValidObject { dataobj } {
+    if {[catch {$dataobj isa Rappture::Drawing} valid] != 0 || !$valid} {
+        return 0
+    }
+    return 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveLegend <colormap> <title> <vmin> <vmax> <size>
+#
+# Invoked automatically whenever the "legend" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::ReceiveLegend { colormap title vmin vmax size } {
+    set _limits(vmin) $vmin
+    set _limits(vmax) $vmax
+    set _title $title
+    if { [IsConnected] } {
+        set bytes [ReceiveBytes $size]
+        if { ![info exists _image(legend)] } {
+            set _image(legend) [image create photo]
+        }
+        $_image(legend) configure -data $bytes
+        DrawLegend
+    }
+}
+
+#
+# DrawLegend --
+#
+# Draws the legend in it's own canvas which resides to the right
+# of the contour plot area.
+#
+itcl::body Rappture::VtkViewer::DrawLegend {} {
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    if { $_settings(legend) } {
+        set x [expr $w - 2]
+        if { [$c find withtag "legend"] == "" } {
+            $c create image $x [expr {$lineht+2}] \
+                -anchor ne \
+                -image $_image(legend) -tags "colormap legend"
+            $c create text $x 2 \
+                -anchor ne \
+                -fill $itk_option(-plotforeground) -tags "vmax legend" \
+                -font $font
+            $c create text $x [expr {$h-2}] \
+                -anchor se \
+                -fill $itk_option(-plotforeground) -tags "vmin legend" \
+                -font $font
+            #$c bind colormap <Enter> [itcl::code $this EnterLegend %x %y]
+            $c bind colormap <Leave> [itcl::code $this LeaveLegend]
+            $c bind colormap <Motion> [itcl::code $this MotionLegend %x %y]
+        }
+        # Reset the item coordinates according the current size of the plot.
+        $c coords colormap $x [expr {$lineht+2}]
+        if { $_limits(vmin) != "" } {
+            $c itemconfigure vmin -text [format %g $_limits(vmin)]
+        }
+        if { $_limits(vmax) != "" } {
+            $c itemconfigure vmax -text [format %g $_limits(vmax)]
+        }
+        $c coords vmin $x [expr {$h-2}]
+        $c coords vmax $x 2
+    }
+}
+
+#
+# EnterLegend --
+#
+itcl::body Rappture::VtkViewer::EnterLegend { x y } {
+    SetLegendTip $x $y
+}
+
+#
+# MotionLegend --
+#
+itcl::body Rappture::VtkViewer::MotionLegend { x y } {
+    Rappture::Tooltip::tooltip cancel
+    set c $itk_component(view)
+    SetLegendTip $x $y
+}
+
+#
+# LeaveLegend --
+#
+itcl::body Rappture::VtkViewer::LeaveLegend { } {
+    Rappture::Tooltip::tooltip cancel
+    .rappturetooltip configure -icon ""
+}
+
+#
+# SetLegendTip --
+#
+itcl::body Rappture::VtkViewer::SetLegendTip { x y } {
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    set imgHeight [image height $_image(legend)]
+    set coords [$c coords colormap]
+    set imgX [expr $w - [image width $_image(legend)] - 2]
+    set imgY [expr $y - $lineht - 2]
+
+    # Make a swatch of the selected color
+    if { [catch { $_image(legend) get 10 $imgY } pixel] != 0 } {
+        return
+    }
+    if { ![info exists _image(swatch)] } {
+        set _image(swatch) [image create photo -width 24 -height 24]
+    }
+    set color [eval format "\#%02x%02x%02x" $pixel]
+    $_image(swatch) put black  -to 0 0 23 23
+    $_image(swatch) put $color -to 1 1 22 22
+    .rappturetooltip configure -icon $_image(swatch)
+
+    # Compute the value of the point
+    set t [expr 1.0 - (double($imgY) / double($imgHeight-1))]
+    set value [expr $t * ($_limits(vmax) - $_limits(vmin)) + $_limits(vmin)]
+    set tipx [expr $x + 15]
+    set tipy [expr $y - 5]
+    Rappture::Tooltip::text $c "$_title $value"
+    Rappture::Tooltip::tooltip show $c +$tipx,+$tipy
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Slice move x|y|z <newval>
+#
+# Called automatically when the user drags the slider to move the
+# cut plane that slices 3D data.  Gets the current value from the
+# slider and moves the cut plane to the appropriate point in the
+# data set.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkViewer::Slice {option args} {
+    switch -- $option {
+        "move" {
+            set axis [lindex $args 0]
+            set newval [lindex $args 1]
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Slice move x|y|z newval\""
+            }
+            set newpos [expr {0.01*$newval}]
+            SendCmd "renderer clipplane $axis $newpos -1"
+        }
+        "tooltip" {
+            set axis [lindex $args 0]
+            set val [$itk_component(${axis}CutScale) get]
+            return "Move the [string toupper $axis] cut plane.\nCurrently:  $axis = $val%"
+        }
+        default {
+            error "bad option \"$option\": should be axis, move, or tooltip"
+        }
+    }
+}
+
+itcl::body Rappture::VtkViewer::SetOrientation { side } {
+    array set positions {
+        front "1 0 0 0"
+        back  "0 0 1 0"
+        left  "0.707107 0 -0.707107 0"
+        right "0.707107 0 0.707107 0"
+        top   "0.707107 -0.707107 0 0"
+        bottom "0.707107 0.707107 0 0"
+    }
+    foreach name { -qw -qx -qy -qz } value $positions($side) {
+        set _view($name) $value
+    }
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    set _view(-xpan) 0
+    set _view(-ypan) 0
+    set _view(-zoom) 1.0
+}
+
+itcl::body Rappture::VtkViewer::SetOpacity { dataset } {
+    foreach {dataobj comp} [split $dataset -] break
+    set type [$dataobj type $comp]
+    set val $_settings($type-opacity)
+    set sval [expr { 0.01 * double($val) }]
+    if { !$_obj2ovride($dataobj-raise) } {
+        # This is wrong.  Need to figure out why raise isn't set with 1
+        #set sval [expr $sval * .6]
+    }
+    SendCmd "$type opacity $sval $dataset"
+}
Index: /tags/1.6.0/gui/scripts/vtkvolumeviewer.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/vtkvolumeviewer.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/vtkvolumeviewer.tcl	(revision 6168)
@@ -0,0 +1,2426 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: vtkvolumeviewer - Vtk volume viewer
+#
+#  This widget performs volume rendering on 3D scalar/vector datasets.
+#  It connects to the Vtkvis server running on a rendering farm,
+#  transmits data, and displays the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+#package require Img
+
+option add *VtkVolumeViewer.width 4i widgetDefault
+option add *VtkVolumeViewer*cursor crosshair widgetDefault
+option add *VtkVolumeViewer.height 4i widgetDefault
+option add *VtkVolumeViewer.foreground black widgetDefault
+option add *VtkVolumeViewer.controlBackground gray widgetDefault
+option add *VtkVolumeViewer.controlDarkBackground #999999 widgetDefault
+option add *VtkVolumeViewer.plotBackground black widgetDefault
+option add *VtkVolumeViewer.plotForeground white widgetDefault
+option add *VtkVolumeViewer.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+# must use this name -- plugs into Rappture::resources::load
+proc VtkVolumeViewer_init_resources {} {
+    Rappture::resources::register \
+        vtkvis_server Rappture::VtkVolumeViewer::SetServerList
+}
+
+itcl::class Rappture::VtkVolumeViewer {
+    inherit Rappture::VisViewer
+
+    itk_option define -plotforeground plotForeground Foreground ""
+    itk_option define -plotbackground plotBackground Background ""
+
+    constructor { args } {
+        Rappture::VisViewer::constructor
+    } {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public proc SetServerList { namelist } {
+        Rappture::VisViewer::SetServerList "vtkvis" $namelist
+    }
+    public method add {dataobj {settings ""}}
+    public method camera {option args}
+    public method delete {args}
+    public method disconnect {}
+    public method download {option args}
+    public method get {args}
+    public method isconnected {}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method scale {args}
+
+    # The following methods are only used by this class.
+    private method AdjustSetting {what {value ""}}
+    private method BuildAxisTab {}
+    private method BuildCameraTab {}
+    private method BuildColormap { name colors }
+    private method BuildCutplanesTab {}
+    private method BuildDownloadPopup { widget command }
+    private method BuildViewTab {}
+    private method BuildVolumeTab {}
+    private method ChangeColormap { dataobj comp color }
+    private method Combo { option }
+    private method Connect {}
+    private method CurrentDatasets {args}
+    private method Disconnect {}
+    private method DoResize {}
+    private method DoRotate {}
+    private method DrawLegend {}
+    private method EnterLegend { x y }
+    private method EventuallyRequestLegend {}
+    private method EventuallyResize { w h }
+    private method EventuallyRotate { q }
+    private method EventuallySetCutplane { axis args }
+    private method GetDatasetsWithComponent { cname }
+    private method GetImage { args }
+    private method GetVtkData { args }
+    private method InitSettings { args }
+    private method IsValidObject { dataobj }
+    private method LeaveLegend {}
+    private method MotionLegend { x y }
+    private method Pan {option x y}
+    private method PanCamera {}
+    private method Pick {x y}
+    private method QuaternionToView { q } {
+        foreach { _view(-qw) _view(-qx) _view(-qy) _view(-qz) } $q break
+    }
+    private method Rebuild {}
+    private method ReceiveDataset { args }
+    private method ReceiveImage { args }
+    private method ReceiveLegend { colormap title vmin vmax size }
+    private method RequestLegend {}
+    private method Rotate {option x y}
+    private method SetColormap { dataobj comp }
+    private method SetLegendTip { x y }
+    private method SetObjectStyle { dataobj cname }
+    private method SetOrientation { side }
+    private method Slice {option args}
+    private method ViewToQuaternion {} {
+        return [list $_view(-qw) $_view(-qx) $_view(-qy) $_view(-qz)]
+    }
+    private method Zoom {option}
+
+    private variable _arcball ""
+    private variable _dlist "";         # list of data objects
+    private variable _obj2ovride;       # maps dataobj => style override
+    private variable _datasets;         # contains all the dataobj-component
+                                        # datasets in the server
+    private variable _colormaps;        # contains all the colormaps
+                                        # in the server.
+    private variable _dataset2style;    # maps dataobj-component to transfunc
+
+    private variable _reset 1;          # Connection to server has been reset.
+    private variable _click;            # Info used for rotate operations.
+    private variable _limits;           # Autoscale min/max for all axes
+    private variable _view;             # View params for 3D view
+    private variable _settings
+    private variable _style;            # Array of current component styles.
+    private variable _initialStyle;     # Array of initial component styles.
+
+    private variable _start 0
+    private variable _title ""
+    private variable _fields
+    private variable _curFldName ""
+    private variable _curFldLabel ""
+    private variable _colorMode "scalar"; # Mode of colormap (vmag or scalar)
+    private variable _cutplaneCmd "imgcutplane"
+    private variable _allowMultiComponent 0
+
+    private variable _first "";         # This is the topmost dataset.
+    private variable _volcomponents;    # Maps component name to list of
+                                        # dataobj-component tags
+    private variable _componentsList;   # List of components found
+
+    private variable _width 0
+    private variable _height 0
+    private variable _resizePending 0
+    private variable _legendPending 0
+    private variable _rotatePending 0
+    private variable _cutplanePending 0
+
+    private common _downloadPopup;      # download options from popup
+    private common _hardcopy
+}
+
+itk::usual VtkVolumeViewer {
+    keep -background -foreground -cursor -font
+    keep -plotbackground -plotforeground
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::constructor {args} {
+    set _serverType "vtkvis"
+
+    #DebugOn
+    EnableWaitDialog 900
+
+    # Rebuild event
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    # Resize event
+    $_dispatcher register !resize
+    $_dispatcher dispatch $this !resize "[itcl::code $this DoResize]; list"
+
+    # Legend event
+    $_dispatcher register !legend
+    $_dispatcher dispatch $this !legend "[itcl::code $this RequestLegend]; list"
+
+    # Rotate event
+    $_dispatcher register !rotate
+    $_dispatcher dispatch $this !rotate "[itcl::code $this DoRotate]; list"
+
+    # X-Cutplane event
+    $_dispatcher register !xcutplane
+    $_dispatcher dispatch $this !xcutplane \
+        "[itcl::code $this AdjustSetting -xcutplaneposition]; list"
+
+    # Y-Cutplane event
+    $_dispatcher register !ycutplane
+    $_dispatcher dispatch $this !ycutplane \
+        "[itcl::code $this AdjustSetting -ycutplaneposition]; list"
+
+    # Z-Cutplane event
+    $_dispatcher register !zcutplane
+    $_dispatcher dispatch $this !zcutplane \
+        "[itcl::code $this AdjustSetting -zcutplaneposition]; list"
+
+    #
+    # Populate parser with commands handle incoming requests
+    #
+    $_parser alias image [itcl::code $this ReceiveImage]
+    $_parser alias legend [itcl::code $this ReceiveLegend]
+    $_parser alias dataset [itcl::code $this ReceiveDataset]
+
+    # Initialize the view to some default parameters.
+    array set _view {
+        -ortho    0
+        -qw       0.853553
+        -qx       -0.353553
+        -qy       0.353553
+        -qz       0.146447
+        -xpan     0
+        -ypan     0
+        -zoom     1.0
+    }
+    set _arcball [blt::arcball create 100 100]
+    $_arcball quaternion [ViewToQuaternion]
+
+    array set _settings {
+        -axesvisible            1
+        -axisflymode            static
+        -axislabels             1
+        -axisminorticks         1
+        -background             black
+        -color                  BCGYR
+        -cutplanelighting       1
+        -cutplaneopacity        100
+        -cutplanesvisible       0
+        -legendvisible          1
+        -volumelighting         1
+        -volumematerial         80
+        -volumeopacity          50
+        -volumeoutline          0
+        -volumequality          80
+        -volumevisible          1
+        -xcutplaneposition      50
+        -xcutplanevisible       1
+        -xgrid                  0
+        -ycutplaneposition      50
+        -ycutplanevisible       1
+        -ygrid                  0
+        -zcutplaneposition      50
+        -zcutplanevisible       1
+        -zgrid                  0
+    }
+
+    itk_component add view {
+        canvas $itk_component(plotarea).view \
+            -highlightthickness 0 -borderwidth 0
+    } {
+        usual
+        ignore -highlightthickness -borderwidth -background
+    }
+
+    itk_component add fieldmenu {
+        menu $itk_component(plotarea).menu -bg black -fg white -relief flat \
+            -tearoff 0
+    } {
+        usual
+        ignore -background -foreground -relief -tearoff
+    }
+    set c $itk_component(view)
+    bind $c <Configure> [itcl::code $this EventuallyResize %w %h]
+    bind $c <4> [itcl::code $this Zoom in 0.25]
+    bind $c <5> [itcl::code $this Zoom out 0.25]
+    bind $c <KeyPress-Left>  [list %W xview scroll 10 units]
+    bind $c <KeyPress-Right> [list %W xview scroll -10 units]
+    bind $c <KeyPress-Up>    [list %W yview scroll 10 units]
+    bind $c <KeyPress-Down>  [list %W yview scroll -10 units]
+    bind $c <Enter> "focus %W"
+    bind $c <Control-F1> [itcl::code $this ToggleConsole]
+
+    # Fixes the scrollregion in case we go off screen
+    $c configure -scrollregion [$c bbox all]
+
+    set _map(id) [$c create image 0 0 -anchor nw -image $_image(plot)]
+    set _map(cwidth) -1
+    set _map(cheight) -1
+    set _map(zoom) 1.0
+    set _map(original) ""
+
+    set f [$itk_component(main) component controls]
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(reset) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    itk_component add zoomin {
+        button $f.zin -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-in] \
+            -command [itcl::code $this Zoom in]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomin) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomin) "Zoom in"
+
+    itk_component add zoomout {
+        button $f.zout -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon zoom-out] \
+            -command [itcl::code $this Zoom out]
+    } {
+        usual
+        ignore -highlightthickness
+    }
+    pack $itk_component(zoomout) -side top -padx 2 -pady 2
+    Rappture::Tooltip::for $itk_component(zoomout) "Zoom out"
+
+    itk_component add volume {
+        Rappture::PushButton $f.volume \
+            -onimage [Rappture::icon volume-on] \
+            -offimage [Rappture::icon volume-off] \
+            -variable [itcl::scope _settings(-volumevisible)] \
+            -command [itcl::code $this AdjustSetting -volumevisible]
+    }
+    $itk_component(volume) select
+    Rappture::Tooltip::for $itk_component(volume) \
+        "Don't display the volume"
+    pack $itk_component(volume) -padx 2 -pady 2
+
+    itk_component add cutplane {
+        Rappture::PushButton $f.cutplane \
+            -onimage [Rappture::icon cutbutton] \
+            -offimage [Rappture::icon cutbutton] \
+            -variable [itcl::scope _settings(-cutplanesvisible)] \
+            -command [itcl::code $this AdjustSetting -cutplanesvisible]
+    }
+    Rappture::Tooltip::for $itk_component(cutplane) \
+        "Show/Hide cutplanes"
+    pack $itk_component(cutplane) -padx 2 -pady 2
+
+    if { [catch {
+        BuildViewTab
+        BuildVolumeTab
+        BuildCutplanesTab
+        BuildAxisTab
+        BuildCameraTab
+    } errs] != 0 } {
+        puts stderr errs=$errs
+    }
+
+    # Legend
+    set _image(legend) [image create photo]
+    itk_component add legend {
+        canvas $itk_component(plotarea).legend -width 50 -highlightthickness 0
+    } {
+        usual
+        ignore -highlightthickness
+        rename -background -plotbackground plotBackground Background
+    }
+
+    # Hack around the Tk panewindow.  The problem is that the requested
+    # size of the 3d view isn't set until an image is retrieved from
+    # the server.  So the panewindow uses the tiny size.
+    set w 10000
+    pack forget $itk_component(view)
+    blt::table $itk_component(plotarea) \
+        0,0 $itk_component(view) -fill both -reqwidth $w
+    blt::table configure $itk_component(plotarea) c1 -resize none
+
+    # Bindings for rotation via mouse
+    bind $itk_component(view) <ButtonPress-1> \
+        [itcl::code $this Rotate click %x %y]
+    bind $itk_component(view) <B1-Motion> \
+        [itcl::code $this Rotate drag %x %y]
+    bind $itk_component(view) <ButtonRelease-1> \
+        [itcl::code $this Rotate release %x %y]
+
+    # Bindings for panning via mouse
+    bind $itk_component(view) <ButtonPress-2> \
+        [itcl::code $this Pan click %x %y]
+    bind $itk_component(view) <B2-Motion> \
+        [itcl::code $this Pan drag %x %y]
+    bind $itk_component(view) <ButtonRelease-2> \
+        [itcl::code $this Pan release %x %y]
+
+    #bind $itk_component(view) <ButtonRelease-3> \
+    #    [itcl::code $this Pick %x %y]
+
+    # Bindings for panning via keyboard
+    bind $itk_component(view) <KeyPress-Left> \
+        [itcl::code $this Pan set -10 0]
+    bind $itk_component(view) <KeyPress-Right> \
+        [itcl::code $this Pan set 10 0]
+    bind $itk_component(view) <KeyPress-Up> \
+        [itcl::code $this Pan set 0 -10]
+    bind $itk_component(view) <KeyPress-Down> \
+        [itcl::code $this Pan set 0 10]
+    bind $itk_component(view) <Shift-KeyPress-Left> \
+        [itcl::code $this Pan set -2 0]
+    bind $itk_component(view) <Shift-KeyPress-Right> \
+        [itcl::code $this Pan set 2 0]
+    bind $itk_component(view) <Shift-KeyPress-Up> \
+        [itcl::code $this Pan set 0 -2]
+    bind $itk_component(view) <Shift-KeyPress-Down> \
+        [itcl::code $this Pan set 0 2]
+
+    # Bindings for zoom via keyboard
+    bind $itk_component(view) <KeyPress-Prior> \
+        [itcl::code $this Zoom out]
+    bind $itk_component(view) <KeyPress-Next> \
+        [itcl::code $this Zoom in]
+
+    bind $itk_component(view) <Enter> "focus $itk_component(view)"
+
+    if {[string equal "x11" [tk windowingsystem]]} {
+        # Bindings for zoom via mouse
+        bind $itk_component(view) <4> [itcl::code $this Zoom out]
+        bind $itk_component(view) <5> [itcl::code $this Zoom in]
+    }
+
+    set _image(download) [image create photo]
+
+    eval itk_initialize $args
+    Connect
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::destructor {} {
+    Disconnect
+    image delete $_image(plot)
+    image delete $_image(download)
+    catch { blt::arcball destroy $_arcball }
+}
+
+itcl::body Rappture::VtkVolumeViewer::DoResize {} {
+    if { $_width < 2 } {
+        set _width 500
+    }
+    if { $_height < 2 } {
+        set _height 500
+    }
+    set _start [clock clicks -milliseconds]
+    SendCmd "screen size $_width $_height"
+
+    EventuallyRequestLegend
+    set _resizePending 0
+}
+
+itcl::body Rappture::VtkVolumeViewer::DoRotate {} {
+    SendCmd "camera orient [ViewToQuaternion]"
+    set _rotatePending 0
+}
+
+itcl::body Rappture::VtkVolumeViewer::EventuallyResize { w h } {
+    set _width $w
+    set _height $h
+    $_arcball resize $w $h
+    if { !$_resizePending } {
+        set _resizePending 1
+        $_dispatcher event -after 400 !resize
+    }
+}
+
+itcl::body Rappture::VtkVolumeViewer::EventuallyRequestLegend {} {
+    if { !$_legendPending } {
+        set _legendPending 1
+        $_dispatcher event -idle !legend
+    }
+}
+
+set rotate_delay 100
+
+itcl::body Rappture::VtkVolumeViewer::EventuallyRotate { q } {
+    QuaternionToView $q
+    if { !$_rotatePending } {
+        set _rotatePending 1
+        global rotate_delay
+        $_dispatcher event -after $rotate_delay !rotate
+    }
+}
+
+itcl::body Rappture::VtkVolumeViewer::EventuallySetCutplane { axis args } {
+    if { !$_cutplanePending } {
+        set _cutplanePending 1
+        $_dispatcher event -after 100 !${axis}cutplane
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a data object to the plot.  The optional
+# <settings> are used to configure the plot.  Allowed settings are
+# -color, -brightness, -width, -linestyle, and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::add {dataobj {settings ""}} {
+    DebugTrace "Enter"
+    if { ![IsValidObject $dataobj] } {
+        DebugTrace "Invalid"
+        return;                         # Ignore invalid objects.
+    }
+    array set params {
+        -color auto
+        -width 1
+        -linestyle solid
+        -brightness 0
+        -raise 0
+        -description ""
+        -param ""
+        -type ""
+    }
+    array set params $settings
+    set params(-description) ""
+    set params(-param) ""
+    array set params $settings
+
+    if {$params(-color) == "auto" || $params(-color) == "autoreset"} {
+        # can't handle -autocolors yet
+        set params(-color) black
+    }
+    set pos [lsearch -exact $_dlist $dataobj]
+    if {$pos < 0} {
+        lappend _dlist $dataobj
+    }
+    set _obj2ovride($dataobj-color) $params(-color)
+    set _obj2ovride($dataobj-width) $params(-width)
+    set _obj2ovride($dataobj-raise) $params(-raise)
+    $_dispatcher event -idle !rebuild
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.  No data objects are
+# deleted.  They are only removed from the display list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::delete {args} {
+    DebugTrace "Enter"
+    if { [llength $args] == 0} {
+        set args $_dlist
+    }
+    # Delete all specified dataobjs
+    set changed 0
+    foreach dataobj $args {
+        set pos [lsearch -exact $_dlist $dataobj]
+        if { $pos < 0 } {
+            continue;                   # Don't know anything about it.
+        }
+        # Remove it from the dataobj list.
+        set _dlist [lreplace $_dlist $pos $pos]
+        array unset _obj2ovride $dataobj-*
+        array unset _settings $dataobj-*
+        set changed 1
+    }
+    # If anything changed, then rebuild the plot
+    if { $changed } {
+        $_dispatcher event -idle !rebuild
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-objects?
+# USAGE: get ?-visible?
+# USAGE: get ?-image view?
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.  The optional "-image"
+# flag can also request the internal images being shown.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::get {args} {
+    if {[llength $args] == 0} {
+        set args "-objects"
+    }
+
+    set op [lindex $args 0]
+    switch -- $op {
+        "-objects" {
+            # put the dataobj list in order according to -raise options
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if {[info exists _obj2ovride($dataobj-raise)] &&
+                    $_obj2ovride($dataobj-raise)} {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        "-visible" {
+            set dlist {}
+            foreach dataobj $_dlist {
+                if { ![IsValidObject $dataobj] } {
+                    continue
+                }
+                if { ![info exists _obj2ovride($dataobj-raise)] } {
+                    # No setting indicates that the object isn't visible.
+                    continue
+                }
+                # Otherwise use the -raise parameter to put the object to
+                # the front of the list.
+                if { $_obj2ovride($dataobj-raise) } {
+                    set dlist [linsert $dlist 0 $dataobj]
+                } else {
+                    lappend dlist $dataobj
+                }
+            }
+            return $dlist
+        }
+        -image {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"get -image view\""
+            }
+            switch -- [lindex $args end] {
+                view {
+                    return $_image(plot)
+                }
+                default {
+                    error "bad image name \"[lindex $args end]\": should be view"
+                }
+            }
+        }
+        default {
+            error "bad option \"$op\": should be -objects or -image"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<data1> <data2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <data> objects.  This
+# accounts for all objects--even those not showing on the screen.
+# Because of this, the limits are appropriate for all objects as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::scale {args} {
+    DebugTrace "Enter"
+    array unset _limits
+    array unset _volcomponents
+    set _componentsList ""
+
+    foreach dataobj $args {
+        if { ![$dataobj isvalid] } {
+            continue;                     # Object doesn't contain valid data.
+        }
+        # Determine limits for each axis.
+        foreach axis { x y z } {
+            set lim [$dataobj limits $axis]
+            if { ![info exists _limits($axis)] } {
+                set _limits($axis) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {amin amax} $_limits($axis) break
+            if { $amin > $min } {
+                set amin $min
+            }
+            if { $amax < $max } {
+                set amax $max
+            }
+            set _limits($axis) [list $amin $amax]
+        }
+        # Determine limits for each field.
+        foreach { fname lim } [$dataobj fieldlimits] {
+            if { ![info exists _limits($fname)] } {
+                set _limits($fname) $lim
+                continue
+            }
+            foreach {min max} $lim break
+            foreach {fmin fmax} $_limits($fname) break
+            if { $fmin > $min } {
+                set fmin $min
+            }
+            if { $fmax < $max } {
+                set fmax $max
+            }
+            set _limits($fname) [list $fmin $fmax]
+        }
+        # Get limits for each component.
+        foreach cname [$dataobj components] {
+            if { ![info exists _volcomponents($cname)] } {
+                lappend _componentsList $cname
+            }
+            lappend _volcomponents($cname) $dataobj-$cname
+            array unset limits
+            array set limits [$dataobj valueLimits $cname]
+            if { ![info exists _limits($cname)] } {
+                set _limits($cname) $limits(v)
+                continue
+            }
+            foreach {min max} $limits(v) break
+            foreach {vmin vmax} $_limits($cname) break
+            if { $vmin > $min } {
+                set vmin $min
+            }
+            if { $vmax < $max } {
+                set vmax $max
+            }
+            set _limits($cname) [list $vmin $vmax]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::download {option args} {
+    switch $option {
+        coming {
+            if {[catch {
+                blt::winop snap $itk_component(plotarea) $_image(download)
+            }]} {
+                $_image(download) configure -width 1 -height 1
+                $_image(download) put #000000
+            }
+        }
+        controls {
+            set popup .vtkviewerdownload
+            if { ![winfo exists .vtkviewerdownload] } {
+                set inner [BuildDownloadPopup $popup [lindex $args 0]]
+            } else {
+                set inner [$popup component inner]
+            }
+            set _downloadPopup(image_controls) $inner.image_frame
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            set word [Rappture::filexfer::label downloadWord]
+            $inner.summary configure -text "$word $num in the following format:"
+            update idletasks            ;# Fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .vtkviewerdownload
+            if {[winfo exists .vtkviewerdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                "image" {
+                    return [$this GetImage [lindex $args 0]]
+                }
+                "vtk" {
+                    return [$this GetVtkData [lindex $args 0]]
+                }
+            }
+            return ""
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Connect ?<host:port>,<host:port>...?
+#
+# Clients use this method to establish a connection to a new
+# server, or to reestablish a connection to the previous server.
+# Any existing connection is automatically closed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::Connect {} {
+    set _hosts [GetServerList "vtkvis"]
+    if { "" == $_hosts } {
+        return 0
+    }
+    set _reset 1
+    set result [VisViewer::Connect $_hosts]
+    if { $result } {
+        if { $_reportClientInfo }  {
+            # Tell the server the viewer, hub, user and session.
+            # Do this immediately on connect before buffering any commands
+            global env
+
+            set info {}
+            set user "???"
+            if { [info exists env(USER)] } {
+                set user $env(USER)
+            }
+            set session "???"
+            if { [info exists env(SESSION)] } {
+                set session $env(SESSION)
+            }
+            lappend info "version" "$Rappture::version"
+            lappend info "build" "$Rappture::build"
+            lappend info "svnurl" "$Rappture::svnurl"
+            lappend info "installdir" "$Rappture::installdir"
+            lappend info "hub" [exec hostname]
+            lappend info "client" "vtkvolumeviewer"
+            lappend info "user" $user
+            lappend info "session" $session
+            SendCmd "clientinfo [list $info]"
+        }
+
+        set w [winfo width $itk_component(view)]
+        set h [winfo height $itk_component(view)]
+        EventuallyResize $w $h
+    }
+    return $result
+}
+
+#
+# isconnected --
+#
+# Indicates if we are currently connected to the visualization server.
+#
+itcl::body Rappture::VtkVolumeViewer::isconnected {} {
+    return [VisViewer::IsConnected]
+}
+
+#
+# disconnect --
+#
+itcl::body Rappture::VtkVolumeViewer::disconnect {} {
+    Disconnect
+    set _reset 1
+}
+
+#
+# Disconnect --
+#
+# Clients use this method to disconnect from the current rendering server.
+#
+itcl::body Rappture::VtkVolumeViewer::Disconnect {} {
+    VisViewer::Disconnect
+
+    $_dispatcher cancel !rebuild
+    $_dispatcher cancel !resize
+    $_dispatcher cancel !rotate
+    $_dispatcher cancel !xcutplane
+    $_dispatcher cancel !ycutplane
+    $_dispatcher cancel !zcutplane
+    $_dispatcher cancel !legend
+    # disconnected -- no more data sitting on server
+    array unset _datasets
+    array unset _colormaps
+    array unset _dataset2style
+
+    set _resizePending 0
+    set _rotatePending 0
+    set _cutplanePending 0
+    set _legendPending 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveImage -bytes <size> -type <type> -token <token>
+#
+# Invoked automatically whenever the "image" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::ReceiveImage { args } {
+    array set info {
+        -token "???"
+        -bytes 0
+        -type image
+    }
+    array set info $args
+    set bytes [ReceiveBytes $info(-bytes)]
+    StopWaiting
+    if { $info(-type) == "image" } {
+        if 0 {
+            set f [open "last.ppm" "w"]
+            fconfigure $f -encoding binary
+            puts -nonewline $f $bytes
+            close $f
+        }
+        $_image(plot) configure -data $bytes
+        #puts stderr "[clock format [clock seconds]]: received image [image width $_image(plot)]x[image height $_image(plot)] image>"
+        if { $_start > 0 } {
+            set finish [clock clicks -milliseconds]
+            #puts stderr "round trip time [expr $finish -$_start] milliseconds"
+            set _start 0
+        }
+    } elseif { $info(type) == "print" } {
+        set tag $this-print-$info(-token)
+        set _hardcopy($tag) $bytes
+    }
+}
+
+#
+# ReceiveDataset --
+#
+itcl::body Rappture::VtkVolumeViewer::ReceiveDataset { args } {
+    if { ![isconnected] } {
+        return
+    }
+    set option [lindex $args 0]
+    switch -- $option {
+        "scalar" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z value tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y value tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "vector" {
+            set option [lindex $args 1]
+            switch -- $option {
+                "world" {
+                    foreach { x y z vx vy vz tag } [lrange $args 2 end] break
+                }
+                "pixel" {
+                    foreach { x y vx vy vz tag } [lrange $args 2 end] break
+                }
+            }
+        }
+        "names" {
+            foreach { name } [lindex $args 1] {
+                #puts stderr "Dataset: $name"
+            }
+        }
+        default {
+            error "unknown dataset option \"$option\" from server"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+# Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::Rebuild {} {
+    set w [winfo width $itk_component(view)]
+    set h [winfo height $itk_component(view)]
+    if { $w < 2 || $h < 2 } {
+        update
+        $_dispatcher event -idle !rebuild
+        return
+    }
+
+    # Turn on buffering of commands to the server.  We don't want to
+    # be preempted by a server disconnect/reconnect (which automatically
+    # generates a new call to Rebuild).
+    StartBufferingCommands
+
+    if { $_width != $w || $_height != $h || $_reset } {
+        set _width $w
+        set _height $h
+        $_arcball resize $w $h
+        DoResize
+    }
+    if { $_reset } {
+        #
+        # Reset the camera and other view parameters
+        #
+        $_arcball quaternion [ViewToQuaternion]
+        if {$_view(-ortho)} {
+            SendCmd "camera mode ortho"
+        } else {
+            SendCmd "camera mode persp"
+        }
+        DoRotate
+        PanCamera
+        set _first ""
+        InitSettings -background \
+            -xgrid -ygrid -zgrid -axisflymode \
+            -axesvisible -axislabels -axisminorticks
+        StopBufferingCommands
+        SendCmd "imgflush"
+        StartBufferingCommands
+    }
+
+    set _first ""
+    # No volumes are active (i.e. in the working set of displayed volumes).
+    # A volume is always invisible if it's not in the working set.  A
+    # volume in the working set may be visible/invisible depending upon the
+    # global visibility value.
+    SendCmd "dataset visible 0"
+    foreach dataobj [get -objects] {
+        if { [info exists _obj2ovride($dataobj-raise)] &&  $_first == "" } {
+            set _first $dataobj
+        }
+        foreach cname [$dataobj components] {
+            set tag $dataobj-$cname
+            if { ![info exists _datasets($tag)] } {
+                set bytes [$dataobj vtkdata $cname]
+                if 0 {
+                    set f [open /tmp/vtkvolume.vtk "w"]
+                    fconfigure $f -translation binary -encoding binary
+                    puts -nonewline $f $bytes
+                    close $f
+                }
+                set length [string length $bytes]
+                if { $_reportClientInfo }  {
+                    set info {}
+                    lappend info "tool_id"       [$dataobj hints toolid]
+                    lappend info "tool_name"     [$dataobj hints toolname]
+                    lappend info "tool_title"    [$dataobj hints tooltitle]
+                    lappend info "tool_command"  [$dataobj hints toolcommand]
+                    lappend info "tool_revision" [$dataobj hints toolrevision]
+                    lappend info "dataset_label" [$dataobj hints label]
+                    lappend info "dataset_size"  $length
+                    lappend info "dataset_tag"   $tag
+                    SendCmd "clientinfo [list $info]"
+                }
+                SendCmd "dataset add $tag data follows $length"
+                SendData $bytes
+                set _datasets($tag) 1
+                SetObjectStyle $dataobj $cname
+            }
+            if { [info exists _obj2ovride($dataobj-raise)] } {
+                SendCmd "volume visible 1 $tag"
+            }
+            break
+        }
+    }
+    if {"" != $_first} {
+        foreach axis { x y z } {
+            set label [$_first hints ${axis}label]
+            if { $label != "" } {
+                SendCmd [list axis name $axis $label]
+            }
+            set units [$_first hints ${axis}units]
+            if { $units != "" } {
+                SendCmd [list axis units $axis $units]
+            }
+        }
+        $itk_component(field) choices delete 0 end
+        $itk_component(fieldmenu) delete 0 end
+        array unset _fields
+        set _curFldName ""
+        foreach cname [$_first components] {
+            foreach fname [$_first fieldnames $cname] {
+                if { [info exists _fields($fname)] } {
+                    continue
+                }
+                foreach { label units components } \
+                    [$_first fieldinfo $fname] break
+                # Only scalar fields are valid
+                if {$_allowMultiComponent || $components == 1} {
+                    $itk_component(field) choices insert end "$fname" "$label"
+                    $itk_component(fieldmenu) add radiobutton -label "$label" \
+                        -value $label -variable [itcl::scope _curFldLabel] \
+                        -selectcolor red \
+                        -activebackground $itk_option(-plotbackground) \
+                        -activeforeground $itk_option(-plotforeground) \
+                        -font "Arial 8" \
+                        -command [itcl::code $this Combo invoke]
+                    set _fields($fname) [list $label $units $components]
+                    if { $_curFldName == "" } {
+                        set _curFldName $fname
+                        set _curFldLabel $label
+                    }
+                }
+            }
+        }
+        $itk_component(field) value $_curFldLabel
+    }
+
+    InitSettings -color \
+        -volumevisible \
+        -volumematerial \
+        -volumelighting -volumeopacity -volumequality -volumeoutline \
+        -cutplanesvisible \
+        -xcutplaneposition -ycutplaneposition -zcutplaneposition \
+        -xcutplanevisible -ycutplanevisible -zcutplanevisible
+
+    if { $_reset } {
+        SendCmd "camera reset"
+        SendCmd "camera zoom $_view(-zoom)"
+        RequestLegend
+        set _reset 0
+    }
+    # Actually write the commands to the server socket.  If it fails, we don't
+    # care.  We're finished here.
+    blt::busy hold $itk_component(hull)
+    StopBufferingCommands
+    blt::busy release $itk_component(hull)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: CurrentDatasets ?-all -visible? ?dataobjs?
+#
+# Returns a list of server IDs for the current datasets being displayed.  This
+# is normally a single ID, but it might be a list of IDs if the current data
+# object has multiple components.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::CurrentDatasets {args} {
+    set flag [lindex $args 0]
+    switch -- $flag {
+        "-all" {
+            if { [llength $args] > 1 } {
+                error "CurrentDatasets: can't specify dataobj after \"-all\""
+            }
+            set dlist [get -objects]
+        }
+        "-visible" {
+            if { [llength $args] > 1 } {
+                set dlist {}
+                set args [lrange $args 1 end]
+                foreach dataobj $args {
+                    if { [info exists _obj2ovride($dataobj-raise)] } {
+                        lappend dlist $dataobj
+                    }
+                }
+            } else {
+                set dlist [get -visible]
+            }
+        }
+        default {
+            set dlist $args
+        }
+    }
+    set rlist ""
+    foreach dataobj $dlist {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            if { [info exists _datasets($tag)] && $_datasets($tag) } {
+                lappend rlist $tag
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom in
+# USAGE: Zoom out
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::Zoom {option} {
+    switch -- $option {
+        "in" {
+            set _view(-zoom) [expr {$_view(-zoom)*1.25}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "out" {
+            set _view(-zoom) [expr {$_view(-zoom)*0.8}]
+            SendCmd "camera zoom $_view(-zoom)"
+        }
+        "reset" {
+            array set _view {
+                -qw      0.853553
+                -qx      -0.353553
+                -qy      0.353553
+                -qz      0.146447
+                -xpan    0
+                -ypan    0
+                -zoom    1.0
+            }
+            if { $_first != "" } {
+                set location [$_first hints camera]
+                if { $location != "" } {
+                    array set _view $location
+                }
+            }
+            $_arcball quaternion [ViewToQuaternion]
+            DoRotate
+            SendCmd "camera reset"
+        }
+    }
+}
+
+itcl::body Rappture::VtkVolumeViewer::PanCamera {} {
+    set x $_view(-xpan)
+    set y $_view(-ypan)
+    SendCmd "camera pan $x $y"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rotate click <x> <y>
+# USAGE: Rotate drag <x> <y>
+# USAGE: Rotate release <x> <y>
+#
+# Called automatically when the user clicks/drags/releases in the
+# plot area.  Moves the plot according to the user's actions.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::Rotate {option x y} {
+    switch -- $option {
+        "click" {
+            $itk_component(view) configure -cursor fleur
+            set _click(x) $x
+            set _click(y) $y
+        }
+        "drag" {
+            if {[array size _click] == 0} {
+                Rotate click $x $y
+            } else {
+                set w [winfo width $itk_component(view)]
+                set h [winfo height $itk_component(view)]
+                if {$w <= 0 || $h <= 0} {
+                    return
+                }
+
+                if {[catch {
+                    # this fails sometimes for no apparent reason
+                    set dx [expr {double($x-$_click(x))/$w}]
+                    set dy [expr {double($y-$_click(y))/$h}]
+                }]} {
+                    return
+                }
+                if { $dx == 0 && $dy == 0 } {
+                    return
+                }
+                set q [$_arcball rotate $x $y $_click(x) $_click(y)]
+                EventuallyRotate $q
+                set _click(x) $x
+                set _click(y) $y
+            }
+        }
+        "release" {
+            Rotate drag $x $y
+            $itk_component(view) configure -cursor ""
+            catch {unset _click}
+        }
+        default {
+            error "bad option \"$option\": should be click, drag, release"
+        }
+    }
+}
+
+itcl::body Rappture::VtkVolumeViewer::Pick {x y} {
+    foreach tag [CurrentDatasets -visible] {
+        SendCmd "dataset getscalar pixel $x $y $tag"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: $this Pan click x y
+#        $this Pan drag x y
+#        $this Pan release x y
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::Pan {option x y} {
+    switch -- $option {
+        "set" {
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set x [expr $x / double($w)]
+            set y [expr $y / double($h)]
+            set _view(-xpan) [expr $_view(-xpan) + $x]
+            set _view(-ypan) [expr $_view(-ypan) + $y]
+            PanCamera
+            return
+        }
+        "click" {
+            set _click(x) $x
+            set _click(y) $y
+            $itk_component(view) configure -cursor hand1
+        }
+        "drag" {
+            if { ![info exists _click(x)] } {
+                set _click(x) $x
+            }
+            if { ![info exists _click(y)] } {
+                set _click(y) $y
+            }
+            set w [winfo width $itk_component(view)]
+            set h [winfo height $itk_component(view)]
+            set dx [expr ($_click(x) - $x)/double($w)]
+            set dy [expr ($_click(y) - $y)/double($h)]
+            set _click(x) $x
+            set _click(y) $y
+            set _view(-xpan) [expr $_view(-xpan) - $dx]
+            set _view(-ypan) [expr $_view(-ypan) - $dy]
+            PanCamera
+        }
+        "release" {
+            Pan drag $x $y
+            $itk_component(view) configure -cursor ""
+        }
+        default {
+            error "unknown option \"$option\": should set, click, drag, or release"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: InitSettings <what> ?<value>?
+#
+# Used internally to update rendering settings whenever parameters
+# change in the popup settings panel.  Sends the new settings off
+# to the back end.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::InitSettings { args } {
+    foreach spec $args {
+        if { [info exists _settings($_first${spec})] } {
+            # Reset global setting with dataobj specific setting
+            set _settings($spec) $_settings($_first${spec})
+        }
+        AdjustSetting $spec
+    }
+}
+
+#
+# AdjustSetting --
+#
+# Changes/updates a specific setting in the widget.  There are
+# usually user-setable option.  Commands are sent to the render
+# server.
+#
+itcl::body Rappture::VtkVolumeViewer::AdjustSetting {what {value ""}} {
+    if { ![isconnected] } {
+        return
+    }
+    switch -- $what {
+        "-background" {
+            set bgcolor [$itk_component(background) value]
+            set _settings($what) $bgcolor
+            array set fgcolors {
+                "black" "white"
+                "white" "black"
+                "grey"  "black"
+            }
+            configure -plotbackground $bgcolor \
+                -plotforeground $fgcolors($bgcolor)
+            $itk_component(view) delete "legend"
+            DrawLegend
+        }
+        "-volumeoutline" {
+            set bool $_settings($what)
+            SendCmd "outline visible 0"
+            foreach tag [CurrentDatasets -visible] {
+                SendCmd "outline visible $bool $tag"
+            }
+        }
+        "-legendvisible" {
+            DrawLegend
+        }
+        "-volumevisible" {
+            set bool $_settings($what)
+            foreach tag [CurrentDatasets -visible] {
+                SendCmd "volume visible $bool $tag"
+            }
+            if { $bool } {
+                Rappture::Tooltip::for $itk_component(volume) \
+                    "Hide the volume"
+            } else {
+                Rappture::Tooltip::for $itk_component(volume) \
+                    "Show the volume"
+            }
+        }
+        "-volumematerial" {
+            set val $_settings($what)
+            set diffuse [expr {0.01*$val}]
+            set specular [expr {0.01*$val}]
+            #set power [expr {sqrt(160*$val+1.0)}]
+            set power [expr {$val+1.0}]
+            foreach tag [CurrentDatasets -visible] {
+                SendCmd "volume shading diffuse $diffuse $tag"
+                SendCmd "volume shading specular $specular $power $tag"
+            }
+        }
+        "-volumelighting" {
+            set bool $_settings($what)
+            foreach tag [CurrentDatasets -visible] {
+                SendCmd "volume lighting $bool $tag"
+            }
+        }
+        "-volumeopacity" {
+            set val $_settings($what)
+            set val [expr {0.01*$val}]
+            foreach tag [CurrentDatasets -visible] {
+                SendCmd "volume opacity $val $tag"
+            }
+        }
+        "-volumequality" {
+            set val $_settings($what)
+            set val [expr {0.01*$val}]
+            foreach tag [CurrentDatasets -visible] {
+                SendCmd "volume quality $val $tag"
+            }
+        }
+        "-axesvisible" {
+            set bool $_settings($what)
+            SendCmd "axis visible all $bool"
+        }
+        "-axislabels" {
+            set bool $_settings($what)
+            SendCmd "axis labels all $bool"
+        }
+        "-axisminorticks" {
+            set bool $_settings($what)
+            SendCmd "axis minticks all $bool"
+        }
+        "-xgrid" - "-ygrid" - "-zgrid" {
+            set axis [string range $what 1 1]
+            set bool $_settings($what)
+            SendCmd "axis grid $axis $bool"
+        }
+        "-axisflymode" {
+            set mode [$itk_component(axismode) value]
+            set mode [$itk_component(axismode) translate $mode]
+            set _settings($what) $mode
+            SendCmd "axis flymode $mode"
+        }
+        "-cutplanesvisible" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible] {
+                SendCmd "$_cutplaneCmd visible $bool $dataset"
+            }
+        }
+        "-cutplanelighting" {
+            set bool $_settings($what)
+            foreach dataset [CurrentDatasets -visible] {
+                if {$_cutplaneCmd != "imgcutplane"} {
+                    SendCmd "$_cutplaneCmd lighting $bool $dataset"
+                } else {
+                    if {$bool} {
+                        set ambient 0.0
+                        set diffuse 1.0
+                    } else {
+                        set ambient 1.0
+                        set diffuse 0.0
+                    }
+                    SendCmd "imgcutplane material $ambient $diffuse $dataset"
+                }
+            }
+        }
+        "-cutplaneopacity" {
+            set val $_settings($what)
+            set sval [expr { 0.01 * double($val) }]
+            foreach dataset [CurrentDatasets -visible] {
+                SendCmd "$_cutplaneCmd opacity $sval $dataset"
+            }
+        }
+        "-xcutplanevisible" - "-ycutplanevisible" - "-zcutplanevisible" {
+            set axis [string range $what 1 1]
+            set bool $_settings($what)
+            if { $bool } {
+                $itk_component(${axis}CutScale) configure -state normal \
+                    -troughcolor white
+            } else {
+                $itk_component(${axis}CutScale) configure -state disabled \
+                    -troughcolor grey82
+            }
+            foreach dataset [CurrentDatasets -visible] {
+                SendCmd "$_cutplaneCmd axis $axis $bool $dataset"
+            }
+        }
+        "-xcutplaneposition" - "-ycutplaneposition" - "-zcutplaneposition" {
+            set axis [string range $what 1 1]
+            set pos [expr $_settings($what) * 0.01]
+            foreach dataset [CurrentDatasets -visible] {
+                SendCmd "$_cutplaneCmd slice ${axis} ${pos} $dataset"
+            }
+            set _cutplanePending 0
+        }
+        "-color" {
+            set color [$itk_component(colormap) value]
+            set _settings($what) $color
+            foreach dataset [CurrentDatasets -visible $_first] {
+                foreach {dataobj comp} [split $dataset -] break
+                ChangeColormap $dataobj $comp $color
+            }
+            EventuallyRequestLegend
+        }
+        "-field" {
+            set label [$itk_component(field) value]
+            set fname [$itk_component(field) translate $label]
+            set _settings($what) $fname
+            if { [info exists _fields($fname)] } {
+                foreach { label units components } $_fields($fname) break
+                if { !$_allowMultiComponent && $components > 1 } {
+                    puts stderr "Can't use a vector field in a volume"
+                    return
+                } else {
+                    if { $components > 1 } {
+                        set _colorMode vmag
+                    } else {
+                        set _colorMode scalar
+                    }
+                }
+                set _curFldName $fname
+                set _curFldLabel $label
+            } else {
+                puts stderr "unknown field \"$fname\""
+                return
+            }
+            foreach dataset [CurrentDatasets -visible $_first] {
+                #SendCmd "$_cutplaneCmd colormode $_colorMode $_curFldName $dataset"
+                SendCmd "dataset scalar $_curFldName $dataset"
+            }
+            SendCmd "camera reset"
+            DrawLegend
+        }
+        default {
+            error "don't know how to fix $what"
+        }
+    }
+}
+
+#
+# RequestLegend --
+#
+# Request a new legend from the server.  The size of the legend
+# is determined from the height of the canvas.
+#
+itcl::body Rappture::VtkVolumeViewer::RequestLegend {} {
+    set _legendPending 0
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+    set w 12
+    set h [expr {$_height - 3 * ($lineht + 2)}]
+    if { $h < 1 } {
+        return
+    }
+    # Set the legend on the first dataset.
+    foreach dataset [CurrentDatasets -visible $_first] {
+        foreach {dataobj comp} [split $dataset -] break
+        if { [info exists _dataset2style($dataset)] } {
+            #SendCmd "legend $_dataset2style($dataset) $_colorMode $_curFldName {} $w $h 0"
+            SendCmd "legend2 $_dataset2style($dataset) $w $h"
+            break;
+        }
+    }
+}
+
+#
+# ChangeColormap --
+#
+itcl::body Rappture::VtkVolumeViewer::ChangeColormap {dataobj comp color} {
+    set tag $dataobj-$comp
+    if { ![info exist _style($tag)] } {
+        error "no initial colormap"
+    }
+    array set style $_style($tag)
+    set style(-color) $color
+    set _style($tag) [array get style]
+    SetColormap $dataobj $comp
+}
+
+#
+# SetColormap --
+#
+itcl::body Rappture::VtkVolumeViewer::SetColormap { dataobj comp } {
+    array set style {
+        -color BCGYR
+        -levels 6
+    }
+    set tag $dataobj-$comp
+    if { ![info exists _initialStyle($tag)] } {
+        # Save the initial component style.
+        set _initialStyle($tag) [$dataobj style $comp]
+    }
+
+    # Override defaults with initial style defined in xml.
+    array set style $_initialStyle($tag)
+
+    if { ![info exists _style($tag)] } {
+        set _style($tag) [array get style]
+    }
+    # Override initial style with current style.
+    array set style $_style($tag)
+
+    set name "$style(-color):$style(-levels)"
+    if { ![info exists _colormaps($name)] } {
+        BuildColormap $name [array get style]
+        set _colormaps($name) 1
+    }
+    if { ![info exists _dataset2style($tag)] ||
+         $_dataset2style($tag) != $name } {
+        SendCmd "volume colormap $name $tag"
+        SendCmd "$_cutplaneCmd colormap $name-opaque $tag"
+        set _dataset2style($tag) $name
+    }
+}
+
+#
+# BuildColormap --
+#
+# Alpha map is in the format: normalized_value opacity midpoint sharpness
+#
+itcl::body Rappture::VtkVolumeViewer::BuildColormap { name styles } {
+    array set style $styles
+    set cmap [ColorsToColormap $style(-color)]
+    if { [llength $cmap] == 0 } {
+        set cmap "0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0"
+    }
+
+    set amap "0.0 0.0 0.5 0.0 1.0 1.0 0.5 0.0"
+    set opaqueAmap "0.0 1.0 1.0 1.0"
+    SendCmd [list colormap define $name $cmap -spline $amap]
+    SendCmd [list colormap define $name-opaque $cmap $opaqueAmap]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotbackground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkVolumeViewer::plotbackground {
+    if { [isconnected] } {
+        set color $itk_option(-plotbackground)
+        set rgb [Color2RGB $color]
+        SendCmd "screen bgcolor $rgb"
+        $itk_component(legend) configure -background $color
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -plotforeground
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::VtkVolumeViewer::plotforeground {
+    if { [isconnected] } {
+        set color $itk_option(-plotforeground)
+        set rgb [Color2RGB $color]
+        SendCmd "axis color all $rgb"
+        SendCmd "outline color $rgb"
+        SendCmd "$_cutplaneCmd color $rgb"
+        $itk_component(legend) itemconfigure labels -fill $color
+        $itk_component(legend) itemconfigure limits -fill $color
+    }
+}
+
+itcl::body Rappture::VtkVolumeViewer::BuildViewTab {} {
+    set font [option get $itk_component(hull) font Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "View Settings" \
+        -icon [Rappture::icon wrench]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.axes \
+        -text "Axes" \
+        -variable [itcl::scope _settings(-axesvisible)] \
+        -command [itcl::code $this AdjustSetting -axesvisible] \
+        -font $font
+
+    checkbutton $inner.outline \
+        -text "Outline" \
+        -variable [itcl::scope _settings(-volumeoutline)] \
+        -command [itcl::code $this AdjustSetting -volumeoutline] \
+        -font $font
+
+    checkbutton $inner.legend \
+        -text "Legend" \
+        -variable [itcl::scope _settings(-legendvisible)] \
+        -command [itcl::code $this AdjustSetting -legendvisible] \
+        -font $font
+
+    checkbutton $inner.volume \
+        -text "Volume" \
+        -variable [itcl::scope _settings(-volumevisible)] \
+        -command [itcl::code $this AdjustSetting -volumevisible] \
+        -font $font
+
+    label $inner.background_l -text "Background" -font $font
+    itk_component add background {
+        Rappture::Combobox $inner.background -width 10 -editable 0
+    }
+    $inner.background choices insert end \
+        "black" "black" \
+        "white" "white" \
+        "grey"  "grey"
+
+    $itk_component(background) value $_settings(-background)
+    bind $inner.background <<Value>> \
+        [itcl::code $this AdjustSetting -background]
+
+    blt::table $inner \
+        0,0 $inner.axes -cspan 2 -anchor w \
+        1,0 $inner.outline -cspan 2 -anchor w \
+        2,0 $inner.volume -cspan 2 -anchor w \
+        3,0 $inner.legend -cspan 2 -anchor w \
+        4,0 $inner.background_l -anchor e -pady 2 \
+        4,1 $inner.background -fill x
+
+    blt::table configure $inner r* -resize none
+    blt::table configure $inner r5 -resize expand
+}
+
+itcl::body Rappture::VtkVolumeViewer::BuildVolumeTab {} {
+    set font [option get $itk_component(hull) font Font]
+    #set bfont [option get $itk_component(hull) boldFont Font]
+    set bfont "Arial 9 bold"
+
+    set inner [$itk_component(main) insert end \
+        -title "Volume Settings" \
+        -icon [Rappture::icon volume-on]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visibility \
+        -text "Visible" \
+        -font $font \
+        -variable [itcl::scope _settings(-volumevisible)] \
+        -command [itcl::code $this AdjustSetting -volumevisible]
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -font $font \
+        -variable [itcl::scope _settings(-volumelighting)] \
+        -command [itcl::code $this AdjustSetting -volumelighting]
+
+    label $inner.dim_l -text "Dim" -font $font
+    ::scale $inner.material -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-volumematerial)] \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -volumematerial]
+    label $inner.bright_l -text "Bright" -font $font
+
+    label $inner.opacity_l -text "Opacity" -font $font
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-volumeopacity)] \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -volumeopacity]
+
+    label $inner.quality_l -text "Quality" -font $font
+    ::scale $inner.quality -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-volumequality)] \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -volumequality]
+
+    label $inner.field_l -text "Field" -font $font
+    itk_component add field {
+        Rappture::Combobox $inner.field -editable 0
+    }
+    bind $inner.field <<Value>> \
+        [itcl::code $this AdjustSetting -field]
+
+    label $inner.colormap_l -text "Colormap" -font $font
+    itk_component add colormap {
+        Rappture::Combobox $inner.colormap -editable 0
+    }
+    $inner.colormap choices insert end [GetColormapList]
+    bind $inner.colormap <<Value>> \
+        [itcl::code $this AdjustSetting -color]
+    $itk_component(colormap) value $_settings(-color)
+
+    blt::table $inner \
+        0,0 $inner.field_l -anchor w -pady 2 \
+        0,1 $inner.field -fill x -pady 2 -cspan 3 \
+        1,0 $inner.visibility -anchor w -pady 2 -cspan 4 \
+        2,0 $inner.lighting -anchor w -pady 2 -cspan 4 \
+        3,0 $inner.dim_l -anchor e -pady 2 \
+        3,1 $inner.material -fill x -pady 2 -cspan 2 \
+        3,3 $inner.bright_l -anchor w -pady 2 \
+        4,0 $inner.opacity_l -anchor w -pady 2 -cspan 4 \
+        5,0 $inner.opacity -fill x -pady 2 -cspan 4 \
+        6,0 $inner.quality_l -anchor w -pady 2 -cspan 4 \
+        7,0 $inner.quality -fill x -pady 2 -cspan 4 \
+        8,0 $inner.colormap_l -anchor w -pady 2 \
+        8,1 $inner.colormap -fill x -pady 2 -cspan 3
+
+    blt::table configure $inner r* c0 c1 c3 -resize none
+    blt::table configure $inner r9 c2 -resize expand
+}
+
+itcl::body Rappture::VtkVolumeViewer::BuildAxisTab {} {
+    set font [option get $itk_component(hull) font Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Axis Settings" \
+        -icon [Rappture::icon axis2]]
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Axes" \
+        -variable [itcl::scope _settings(-axesvisible)] \
+        -command [itcl::code $this AdjustSetting -axesvisible] \
+        -font $font
+
+    checkbutton $inner.labels \
+        -text "Axis Labels" \
+        -variable [itcl::scope _settings(-axislabels)] \
+        -command [itcl::code $this AdjustSetting -axislabels] \
+        -font $font
+    label $inner.grid_l -text "Grid" -font $font
+    checkbutton $inner.xgrid \
+        -text "X" \
+        -variable [itcl::scope _settings(-xgrid)] \
+        -command [itcl::code $this AdjustSetting -xgrid] \
+        -font $font
+    checkbutton $inner.ygrid \
+        -text "Y" \
+        -variable [itcl::scope _settings(-ygrid)] \
+        -command [itcl::code $this AdjustSetting -ygrid] \
+        -font $font
+    checkbutton $inner.zgrid \
+        -text "Z" \
+        -variable [itcl::scope _settings(-zgrid)] \
+        -command [itcl::code $this AdjustSetting -zgrid] \
+        -font $font
+    checkbutton $inner.minorticks \
+        -text "Minor Ticks" \
+        -variable [itcl::scope _settings(-axisminorticks)] \
+        -command [itcl::code $this AdjustSetting -axisminorticks] \
+        -font $font
+
+    label $inner.mode_l -text "Mode" -font $font
+
+    itk_component add axismode {
+        Rappture::Combobox $inner.mode -width 10 -editable 0
+    }
+    $inner.mode choices insert end \
+        "static_triad"    "static" \
+        "closest_triad"   "closest" \
+        "furthest_triad"  "farthest" \
+        "outer_edges"     "outer"
+    $itk_component(axismode) value $_settings(-axisflymode)
+    bind $inner.mode <<Value>> [itcl::code $this AdjustSetting -axisflymode]
+
+    blt::table $inner \
+        0,0 $inner.visible -anchor w -cspan 4 \
+        1,0 $inner.labels -anchor w -cspan 4 \
+        2,0 $inner.minorticks -anchor w -cspan 4 \
+        4,0 $inner.grid_l -anchor w \
+        4,1 $inner.xgrid -anchor w \
+        4,2 $inner.ygrid -anchor w \
+        4,3 $inner.zgrid -anchor w \
+        5,0 $inner.mode_l -anchor w -padx { 2 0 } \
+        5,1 $inner.mode -fill x -cspan 3
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r7 c6 -resize expand
+    blt::table configure $inner r3 -height 0.125i
+}
+
+itcl::body Rappture::VtkVolumeViewer::BuildCameraTab {} {
+    set font [option get $itk_component(hull) font Font]
+    set inner [$itk_component(main) insert end \
+        -title "Camera Settings" \
+        -icon [Rappture::icon camera]]
+    $inner configure -borderwidth 4
+
+    label $inner.view_l -text "view" -font $font
+    set f [frame $inner.view]
+    foreach side { front back left right top bottom } {
+        button $f.$side  -image [Rappture::icon view$side] \
+            -command [itcl::code $this SetOrientation $side]
+        Rappture::Tooltip::for $f.$side "Change the view to $side"
+        pack $f.$side -side left
+    }
+    blt::table $inner \
+        0,0 $inner.view_l -anchor e -pady 2 \
+        0,1 $inner.view -anchor w -pady 2
+    blt::table configure $inner r0 -resize none
+
+    set row 1
+    set labels { qx qy qz qw xpan ypan zoom }
+    foreach tag $labels {
+        label $inner.${tag}label -text $tag -font $font
+        entry $inner.${tag} -font $font  -bg white \
+            -textvariable [itcl::scope _view(-$tag)]
+        bind $inner.${tag} <Return> \
+            [itcl::code $this camera set -${tag}]
+        bind $inner.${tag} <KP_Enter> \
+            [itcl::code $this camera set -${tag}]
+        blt::table $inner \
+            $row,0 $inner.${tag}label -anchor e -pady 2 \
+            $row,1 $inner.${tag} -anchor w -pady 2
+        blt::table configure $inner r$row -resize none
+        incr row
+    }
+    checkbutton $inner.ortho \
+        -text "Orthographic Projection" \
+        -variable [itcl::scope _view(-ortho)] \
+        -command [itcl::code $this camera set -ortho] \
+        -font $font
+    blt::table $inner \
+            $row,0 $inner.ortho -cspan 2 -anchor w -pady 2
+    blt::table configure $inner r$row -resize none
+    incr row
+
+    blt::table configure $inner c0 c1 -resize none
+    blt::table configure $inner c2 -resize expand
+    blt::table configure $inner r$row -resize expand
+}
+
+itcl::body Rappture::VtkVolumeViewer::BuildCutplanesTab {} {
+    set font [option get $itk_component(hull) font Font]
+
+    set inner [$itk_component(main) insert end \
+        -title "Cutplane Settings" \
+        -icon [Rappture::icon cutbutton]]
+
+    $inner configure -borderwidth 4
+
+    checkbutton $inner.visible \
+        -text "Show Cutplanes" \
+        -variable [itcl::scope _settings(-cutplanesvisible)] \
+        -command [itcl::code $this AdjustSetting -cutplanesvisible] \
+        -font $font
+
+    checkbutton $inner.lighting \
+        -text "Enable Lighting" \
+        -variable [itcl::scope _settings(-cutplanelighting)] \
+        -command [itcl::code $this AdjustSetting -cutplanelighting] \
+        -font $font
+
+    label $inner.opacity_l -text "Opacity" -font $font
+    ::scale $inner.opacity -from 0 -to 100 -orient horizontal \
+        -variable [itcl::scope _settings(-cutplaneopacity)] \
+        -width 10 \
+        -showvalue off \
+        -command [itcl::code $this AdjustSetting -cutplaneopacity]
+    $inner.opacity set $_settings(-cutplaneopacity)
+
+    # X-value slicer...
+    itk_component add xCutButton {
+        Rappture::PushButton $inner.xbutton \
+            -onimage [Rappture::icon x-cutplane] \
+            -offimage [Rappture::icon x-cutplane] \
+            -command [itcl::code $this AdjustSetting -xcutplanevisible] \
+            -variable [itcl::scope _settings(-xcutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(xCutButton) \
+        "Toggle the X-axis cutplane on/off"
+    $itk_component(xCutButton) select
+
+    itk_component add xCutScale {
+        ::scale $inner.xval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane x] \
+            -variable [itcl::scope _settings(-xcutplaneposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(xCutScale) set 50
+    $itk_component(xCutScale) configure -state disabled
+    Rappture::Tooltip::for $itk_component(xCutScale) \
+        "@[itcl::code $this Slice tooltip x]"
+
+    # Y-value slicer...
+    itk_component add yCutButton {
+        Rappture::PushButton $inner.ybutton \
+            -onimage [Rappture::icon y-cutplane] \
+            -offimage [Rappture::icon y-cutplane] \
+            -command [itcl::code $this AdjustSetting -ycutplanevisible] \
+            -variable [itcl::scope _settings(-ycutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(yCutButton) \
+        "Toggle the Y-axis cutplane on/off"
+    $itk_component(yCutButton) select
+
+    itk_component add yCutScale {
+        ::scale $inner.yval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane y] \
+            -variable [itcl::scope _settings(-ycutplaneposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    Rappture::Tooltip::for $itk_component(yCutScale) \
+        "@[itcl::code $this Slice tooltip y]"
+    # Set the default cutplane value before disabling the scale.
+    $itk_component(yCutScale) set 50
+    $itk_component(yCutScale) configure -state disabled
+
+    # Z-value slicer...
+    itk_component add zCutButton {
+        Rappture::PushButton $inner.zbutton \
+            -onimage [Rappture::icon z-cutplane] \
+            -offimage [Rappture::icon z-cutplane] \
+            -command [itcl::code $this AdjustSetting -zcutplanevisible] \
+            -variable [itcl::scope _settings(-zcutplanevisible)]
+    }
+    Rappture::Tooltip::for $itk_component(zCutButton) \
+        "Toggle the Z-axis cutplane on/off"
+    $itk_component(zCutButton) select
+
+    itk_component add zCutScale {
+        ::scale $inner.zval -from 100 -to 0 \
+            -width 10 -orient vertical -showvalue 1 \
+            -borderwidth 1 -highlightthickness 0 \
+            -command [itcl::code $this EventuallySetCutplane z] \
+            -variable [itcl::scope _settings(-zcutplaneposition)]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    $itk_component(zCutScale) set 50
+    $itk_component(zCutScale) configure -state disabled
+    Rappture::Tooltip::for $itk_component(zCutScale) \
+        "@[itcl::code $this Slice tooltip z]"
+
+    blt::table $inner \
+        0,0 $inner.visible              -anchor w -pady 2 -cspan 4 \
+        1,0 $inner.lighting             -anchor w -pady 2 -cspan 4 \
+        2,0 $inner.opacity_l            -anchor w -pady 2 -cspan 3 \
+        3,0 $inner.opacity              -fill x   -pady 2 -cspan 3 \
+        4,0 $itk_component(xCutButton)  -anchor e -padx 2 -pady 2 \
+        5,0 $itk_component(xCutScale)   -fill y \
+        4,1 $itk_component(yCutButton)  -anchor e -padx 2 -pady 2 \
+        5,1 $itk_component(yCutScale)   -fill y \
+        4,2 $itk_component(zCutButton)  -anchor e -padx 2 -pady 2 \
+        5,2 $itk_component(zCutScale)   -fill y
+
+    blt::table configure $inner r* c* -resize none
+    blt::table configure $inner r5 c3 -resize expand
+}
+
+#
+# camera --
+#
+itcl::body Rappture::VtkVolumeViewer::camera {option args} {
+    switch -- $option {
+        "show" {
+            puts [array get _view]
+        }
+        "set" {
+            set what [lindex $args 0]
+            set x $_view($what)
+            set code [catch { string is double $x } result]
+            if { $code != 0 || !$result } {
+                return
+            }
+            switch -- $what {
+                "-ortho" {
+                    if {$_view($what)} {
+                        SendCmd "camera mode ortho"
+                    } else {
+                        SendCmd "camera mode persp"
+                    }
+                }
+                "-xpan" - "-ypan" {
+                    PanCamera
+                }
+                "-qx" - "-qy" - "-qz" - "-qw" {
+                    set q [ViewToQuaternion]
+                    $_arcball quaternion $q
+                    EventuallyRotate $q
+                }
+                "-zoom" {
+                    SendCmd "camera zoom $_view($what)"
+                }
+            }
+        }
+    }
+}
+
+itcl::body Rappture::VtkVolumeViewer::GetVtkData { args } {
+    set bytes ""
+    foreach dataobj [get] {
+        foreach comp [$dataobj components] {
+            set tag $dataobj-$comp
+            set contents [$dataobj vtkdata $comp]
+            append bytes "$contents\n"
+        }
+    }
+    return [list .vtk $bytes]
+}
+
+itcl::body Rappture::VtkVolumeViewer::GetImage { args } {
+    if { [image width $_image(download)] > 0 &&
+         [image height $_image(download)] > 0 } {
+        set bytes [$_image(download) data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        return [list .jpg $bytes]
+    }
+    return ""
+}
+
+itcl::body Rappture::VtkVolumeViewer::BuildDownloadPopup { popup command } {
+    Rappture::Balloon $popup \
+        -title "[Rappture::filexfer::label downloadWord] as..."
+    set inner [$popup component inner]
+    label $inner.summary -text "" -anchor w
+    radiobutton $inner.vtk_button -text "VTK data file" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -font "Helvetica 9 " \
+        -value vtk
+    Rappture::Tooltip::for $inner.vtk_button "Save as VTK data file."
+    radiobutton $inner.image_button -text "Image File" \
+        -variable [itcl::scope _downloadPopup(format)] \
+        -value image
+    Rappture::Tooltip::for $inner.image_button \
+        "Save as digital image."
+
+    button $inner.ok -text "Save" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command $command \
+        -compound left \
+        -image [Rappture::icon download]
+
+    button $inner.cancel -text "Cancel" \
+        -highlightthickness 0 -pady 2 -padx 3 \
+        -command [list $popup deactivate] \
+        -compound left \
+        -image [Rappture::icon cancel]
+
+    blt::table $inner \
+        0,0 $inner.summary -cspan 2  \
+        1,0 $inner.vtk_button -anchor w -cspan 2 -padx { 4 0 } \
+        2,0 $inner.image_button -anchor w -cspan 2 -padx { 4 0 } \
+        4,1 $inner.cancel -width .9i -fill y \
+        4,0 $inner.ok -padx 2 -width .9i -fill y
+    blt::table configure $inner r3 -height 4
+    blt::table configure $inner r4 -pady 4
+    raise $inner.image_button
+    $inner.vtk_button invoke
+    return $inner
+}
+
+itcl::body Rappture::VtkVolumeViewer::SetObjectStyle { dataobj cname } {
+    # Parse style string.
+    set tag $dataobj-$cname
+    array set style {
+        -color      BCGYR
+        -lighting   1
+        -opacity    0.5
+        -outline    0
+        -visible    1
+    }
+    array set style [$dataobj style $cname]
+    set _settings(-volumelighting) $style(-lighting)
+    set _settings(-volumeopacity) [expr $style(-opacity) * 100.0]
+    set _settings(-volumeoutline) $style(-outline)
+    set _settings(-volumevisible) $style(-visible)
+
+    $itk_component(colormap) value $style(-color)
+
+    SendCmd "outline add $tag"
+    SendCmd "outline color [Color2RGB $itk_option(-plotforeground)] $tag"
+    SendCmd "outline visible $style(-outline) $tag"
+
+    SendCmd "$_cutplaneCmd add $tag"
+    SendCmd "$_cutplaneCmd color [Color2RGB $itk_option(-plotforeground)] $tag"
+    SendCmd "$_cutplaneCmd visible 0 $tag"
+
+    SendCmd "volume add $tag"
+    SendCmd "volume lighting $style(-lighting) $tag"
+    SendCmd "volume opacity $style(-opacity) $tag"
+    SendCmd "volume visible $style(-visible) $tag"
+    SetColormap $dataobj $cname
+}
+
+itcl::body Rappture::VtkVolumeViewer::IsValidObject { dataobj } {
+    if {[catch {$dataobj isa Rappture::Field} valid] != 0 || !$valid} {
+        return 0
+    }
+    return 1
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ReceiveLegend <colormap> <title> <vmin> <vmax> <size>
+#
+# Invoked automatically whenever the "legend" command comes in from
+# the rendering server.  Indicates that binary image data with the
+# specified <size> will follow.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::ReceiveLegend { colormap title vmin vmax size } {
+    if { [isconnected] } {
+        set bytes [ReceiveBytes $size]
+        if { ![info exists _image(legend)] } {
+            set _image(legend) [image create photo]
+        }
+        $_image(legend) configure -data $bytes
+        #puts stderr "read $size bytes for [image width $_image(legend)]x[image height $_image(legend)] legend>"
+        if { [catch {DrawLegend} errs] != 0 } {
+            puts stderr errs=$errs
+        }
+    }
+}
+
+#
+# DrawLegend --
+#
+itcl::body Rappture::VtkVolumeViewer::DrawLegend {} {
+    set fname $_curFldName
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    if { !$_settings(-legendvisible) } {
+        $c delete legend
+        return
+    }
+
+    if { [info exists _fields($fname)] } {
+        foreach { title units } $_fields($fname) break
+        if { $units != "" } {
+            set title [format "%s (%s)" $title $units]
+        }
+    } else {
+        set title $fname
+    }
+
+    set x [expr $w - 2]
+    if { [$c find withtag "legend"] == "" } {
+        set y 2
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "title legend" \
+            -font $font
+        incr y $lineht
+        $c create text $x $y \
+            -anchor ne \
+            -fill $itk_option(-plotforeground) -tags "vmax legend" \
+            -font $font
+        incr y $lineht
+        $c create image $x $y \
+            -anchor ne \
+            -image $_image(legend) -tags "colormap legend"
+        $c create text $x [expr {$h-2}] \
+            -anchor se \
+            -fill $itk_option(-plotforeground) -tags "vmin legend" \
+            -font $font
+        #$c bind colormap <Enter> [itcl::code $this EnterLegend %x %y]
+        $c bind colormap <Leave> [itcl::code $this LeaveLegend]
+        $c bind colormap <Motion> [itcl::code $this MotionLegend %x %y]
+    }
+    $c bind title <ButtonPress> [itcl::code $this Combo post]
+    $c bind title <Enter> [itcl::code $this Combo activate]
+    $c bind title <Leave> [itcl::code $this Combo deactivate]
+    # Reset the item coordinates according the current size of the plot.
+    $c itemconfigure title -text $title
+    if { [info exists _limits($_curFldName)] } {
+        foreach { vmin vmax } $_limits($_curFldName) break
+        $c itemconfigure vmin -text [format %g $vmin]
+        $c itemconfigure vmax -text [format %g $vmax]
+    }
+    set y 2
+    $c coords title $x $y
+    incr y $lineht
+    $c coords vmax $x $y
+    incr y $lineht
+    $c coords colormap $x $y
+    $c coords vmin $x [expr {$h - 2}]
+}
+
+#
+# EnterLegend --
+#
+itcl::body Rappture::VtkVolumeViewer::EnterLegend { x y } {
+    SetLegendTip $x $y
+}
+
+#
+# MotionLegend --
+#
+itcl::body Rappture::VtkVolumeViewer::MotionLegend { x y } {
+    Rappture::Tooltip::tooltip cancel
+    set c $itk_component(view)
+    SetLegendTip $x $y
+}
+
+#
+# LeaveLegend --
+#
+itcl::body Rappture::VtkVolumeViewer::LeaveLegend { } {
+    Rappture::Tooltip::tooltip cancel
+    .rappturetooltip configure -icon ""
+}
+
+#
+# SetLegendTip --
+#
+itcl::body Rappture::VtkVolumeViewer::SetLegendTip { x y } {
+    set c $itk_component(view)
+    set w [winfo width $c]
+    set h [winfo height $c]
+    set font "Arial 8"
+    set lineht [font metrics $font -linespace]
+
+    set imgHeight [image height $_image(legend)]
+    set coords [$c coords colormap]
+    set imgX [expr $w - [image width $_image(legend)] - 2]
+    set imgY [expr $y - 2 * ($lineht + 2)]
+
+    if { [info exists _fields($_title)] } {
+        foreach { title units } $_fields($_title) break
+        if { $units != "" } {
+            set title [format "%s (%s)" $title $units]
+        }
+    } else {
+        set title $_title
+    }
+    # Make a swatch of the selected color
+    if { [catch { $_image(legend) get 10 $imgY } pixel] != 0 } {
+        #puts stderr "out of range: $imgY"
+        return
+    }
+    if { ![info exists _image(swatch)] } {
+        set _image(swatch) [image create photo -width 24 -height 24]
+    }
+    set color [eval format "\#%02x%02x%02x" $pixel]
+    $_image(swatch) put black  -to 0 0 23 23
+    $_image(swatch) put $color -to 1 1 22 22
+    .rappturetooltip configure -icon $_image(swatch)
+
+    # Compute the value of the point
+    if { [info exists _limits($_curFldName)] } {
+        foreach { vmin vmax } $_limits($_curFldName) break
+        set t [expr 1.0 - (double($imgY) / double($imgHeight-1))]
+        set value [expr $t * ($vmax - $vmin) + $vmin]
+    } else {
+        set value 0.0
+    }
+    set tipx [expr $x + 15]
+    set tipy [expr $y - 5]
+    Rappture::Tooltip::text $c "$title $value"
+    Rappture::Tooltip::tooltip show $c +$tipx,+$tipy
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Slice move x|y|z <newval>
+#
+# Called automatically when the user drags the slider to move the
+# cut plane that slices 3D data.  Gets the current value from the
+# slider and moves the cut plane to the appropriate point in the
+# data set.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::Slice {option args} {
+    switch -- $option {
+        "move" {
+            set axis [lindex $args 0]
+            set newval [lindex $args 1]
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Slice move x|y|z newval\""
+            }
+            set newpos [expr {0.01*$newval}]
+            SendCmd "$_cutplaneCmd slice $axis $newpos"
+        }
+        "tooltip" {
+            set axis [lindex $args 0]
+            set val [$itk_component(${axis}CutScale) get]
+            return "Move the [string toupper $axis] cut plane.\nCurrently:  $axis = $val%"
+        }
+        default {
+            error "bad option \"$option\": should be axis, move, or tooltip"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _dropdown post
+# USAGE: _dropdown unpost
+# USAGE: _dropdown select
+#
+# Used internally to handle the dropdown list for this combobox.  The
+# post/unpost options are invoked when the list is posted or unposted
+# to manage the relief of the controlling button.  The select option
+# is invoked whenever there is a selection from the list, to assign
+# the value back to the gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::VtkVolumeViewer::Combo {option} {
+    set c $itk_component(view)
+    switch -- $option {
+        post {
+            foreach { x1 y1 x2 y2 } [$c bbox title] break
+            set x1 [expr [winfo width $itk_component(view)] - [winfo reqwidth $itk_component(fieldmenu)]]
+            set x [expr $x1 + [winfo rootx $itk_component(view)]]
+            set y [expr $y2 + [winfo rooty $itk_component(view)]]
+            tk_popup $itk_component(fieldmenu) $x $y
+        }
+        activate {
+            $c itemconfigure title -fill red
+        }
+        deactivate {
+            $c itemconfigure title -fill $itk_option(-plotforeground)
+        }
+        invoke {
+            $itk_component(field) value $_curFldLabel
+            AdjustSetting -field
+        }
+        default {
+            error "bad option \"$option\": should be post, unpost, select"
+        }
+    }
+}
+
+itcl::body Rappture::VtkVolumeViewer::SetOrientation { side } {
+    array set positions {
+        front "1 0 0 0"
+        back  "0 0 1 0"
+        left  "0.707107 0 -0.707107 0"
+        right "0.707107 0 0.707107 0"
+        top   "0.707107 -0.707107 0 0"
+        bottom "0.707107 0.707107 0 0"
+    }
+    foreach name { -qw -qx -qy -qz } value $positions($side) {
+        set _view($name) $value
+    }
+    set q [ViewToQuaternion]
+    $_arcball quaternion $q
+    SendCmd "camera orient $q"
+    SendCmd "camera reset"
+    set _view(-xpan) 0
+    set _view(-ypan) 0
+    set _view(-zoom) 1.0
+}
+
+#
+# GetDatasetsWithComponent --
+#
+# Returns a list of all the datasets (known by the combination of
+# their data object and component name) that match the given
+# component name.  For example, this is used where we want to change
+# the settings of volumes that have the current component.
+#
+itcl::body Rappture::VtkVolumeViewer::GetDatasetsWithComponent { cname } {
+    if { ![info exists _volcomponents($cname)] } {
+        return ""
+    }
+    return $_volcomponents($cname)
+}
Index: /tags/1.6.0/gui/scripts/xylegend.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/xylegend.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/xylegend.tcl	(revision 6168)
@@ -0,0 +1,634 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: xylegend - X/Y plot legend.
+#
+#  This widget is a legend for an X/Y plot, meant to view line graphs produced
+#  as output from the run of a Rappture tool.  Use the "add" and
+#  "delete" methods to control the curves showing on the plot.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *Xylegend.font \
+    -*-helvetica-medium-r-normal-*-8-* widgetDefault
+
+option add *Xylegend.Button.font \
+    -*-helvetica-medium-r-normal-*-9-* widgetDefault
+
+itcl::class ::Rappture::XyLegend {
+    inherit itk::Widget
+
+    private variable _autocolors {
+        #0000cd
+        #cd0000
+        #00cd00
+        #3a5fcd
+        #cdcd00
+        #cd1076
+        #009acd
+        #00c5cd
+        #a2b5cd
+        #7ac5cd
+        #66cdaa
+        #a2cd5a
+        #cd9b9b
+        #cdba96
+        #cd3333
+        #cd6600
+        #cd8c95
+        #cd00cd
+        #9a32cd
+        #6ca6cd
+        #9ac0cd
+        #9bcd9b
+        #00cd66
+        #cdc673
+        #cdad00
+        #cd5555
+        #cd853f
+        #cd7054
+        #cd5b45
+        #cd6889
+        #cd69c9
+        #551a8b
+    }
+    private variable _lastColorIndex ""
+    private variable _dispatcher "" ;# dispatcher for !events
+    private variable _graph     ""
+    private variable _tree      ""
+    private variable _diff      "";     # Polygon marker used for difference.
+    private variable _rename    "";     # Node selected to be renamed.
+    private variable _diffelements
+    private variable _unmapHidden 0
+
+    constructor {graph args} {}
+    destructor {}
+
+    public method reset { list }
+
+    private method Add { elem label {flags ""}}
+    private method Average {}
+    private method BuildPopup { popup }
+    private method Check {}
+    private method Delete { args }
+    private method Difference {}
+    private method Editor { option args }
+    private method GetData { elem what }
+    private method Hide { args }
+    private method Lower { args }
+    private method Raise { args }
+    private method Recolor {}
+    private method PopupMenu { x y }
+    private method Rename {}
+    private method SelectAll {}
+    private method Show { args }
+    private method Toggle { args }
+    private method UnmapHidden {}
+}
+
+itk::usual XyLegend {
+    keep -background -foreground -cursor
+}
+
+itk::usual TreeView {
+    keep -background -foreground -cursor
+}
+
+blt::bitmap define dot1 {
+#define dot1_width 8
+#define dot1_height 8
+static unsigned char dot1_bits[] = {
+   0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa};
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyLegend::constructor { graph args } {
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+    itk_component add scrollbars {
+        Rappture::Scroller $itk_interior.scrl \
+            -xscrollmode auto -yscrollmode auto \
+            -width 200 -height 100
+    }
+    set _tree [blt::tree create]
+    itk_component add legend {
+        blt::treeview $itk_component(scrollbars).legend -linewidth 0 \
+            -bg white -selectmode multiple \
+            -highlightthickness 0 \
+            -tree $_tree \
+            -font "Arial 9" \
+            -flat yes -separator /
+    }
+    $itk_component(scrollbars) contents $itk_component(legend)
+    $itk_component(legend) column insert 0 "show" \
+        -text "" -weight 0.0 -pad 0 -borderwidth 0
+    $itk_component(legend) style checkbox "check" -showvalue no \
+        -onvalue 0 -offvalue 1 \
+        -boxcolor grey50 -checkcolor black -activebackground grey90
+    $itk_component(legend) column configure "treeView" -justify left \
+        -weight 1.0 -text "" -pad 0 -borderwidth 0 -edit no
+    $itk_component(legend) column configure "show" -style "check" -pad {0 0} \
+        -edit yes
+    itk_component add controls {
+        frame $itk_component(hull).controls -width 100 -relief sunken -bd 2
+    }
+    set controls $itk_component(controls)
+    grid $itk_component(controls) -column 0 -row 1 -sticky nsew
+    grid columnconfigure $itk_component(hull) 0 -weight 1
+    grid rowconfigure $itk_component(hull) 1 \
+        -minsize [winfo reqheight $itk_component(scrollbars)]
+    grid rowconfigure $itk_component(hull) 0 -weight 1
+    grid $itk_component(scrollbars) -column 0 -row 0 -sticky nsew
+    set commands {
+        hide    ""
+        show    ""
+        toggle  ""
+        raise        findup
+        lower   finddn
+        average ""
+        difference ""
+        delete ""
+        rename ""
+        recolor ""
+    }
+    foreach { but icon} $commands {
+        set title [string totitle $but]
+        button $controls.$but -text $title \
+            -relief flat -pady 0 -padx 0  -font "Arial 9" \
+            -command [itcl::code $this $title]  -overrelief flat \
+            -activebackground grey90
+    }
+    grid $controls.hide       -column 0 -row 0 -sticky w
+    grid $controls.show       -column 0 -row 1 -sticky w
+    grid $controls.toggle     -column 0 -row 2 -sticky w
+    grid $controls.raise      -column 0 -row 3 -sticky w
+    grid $controls.lower      -column 0 -row 4 -sticky w
+    grid $controls.difference -column 1 -row 0 -sticky w
+    grid $controls.average    -column 1 -row 1 -sticky w
+    grid $controls.rename     -column 1 -row 2 -sticky w
+    grid $controls.recolor    -column 1 -row 3 -sticky w
+    grid $controls.delete     -column 1 -row 4 -sticky w
+
+    grid columnconfigure $controls 0  -weight 1
+    grid columnconfigure $controls 1 -weight 1
+
+    set _graph $graph
+    set cmd [itcl::code $this Toggle current]
+    $itk_component(legend) bind CheckBoxStyle <ButtonRelease-1> \
+        [itcl::code [subst -nocommands {
+            if { [%W edit -root -test %X %Y] } {
+                %W edit -root %X %Y
+                $this Toggle [%W nearest -root %X %Y]
+                break
+            }
+        }]]
+    bind $itk_component(legend) <Enter> { focus %W }
+    $itk_component(legend) bind Entry <Control-KeyRelease-a> \
+        [itcl::code $this SelectAll]
+    $itk_component(legend) bind Entry <KeyRelease-Return> \
+        +[itcl::code $this Toggle focus]
+    $itk_component(legend) bind Entry <Escape> \
+        "$itk_component(legend) selection clearall"
+    $itk_component(legend) configure -selectcommand \
+        [itcl::code $this Check]
+
+    itk_component add editor {
+        Rappture::Editor $itk_interior.editor \
+            -activatecommand [itcl::code $this Editor activate] \
+            -validatecommand [itcl::code $this Editor validate] \
+            -applycommand [itcl::code $this Editor apply]
+    }
+    set _lastColorIndex [llength $_autocolors]
+    Check
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyLegend::destructor {} {
+    foreach node [$_tree children root] {
+        $_tree delete $node
+    }
+    if { $_diff != "" } {
+        catch { $_graph marker delete $_diff }
+    }
+}
+
+itcl::body Rappture::XyLegend::Add { elem label {flags ""} } {
+    set hide [$_graph element cget $elem -hide]
+    set im [image create photo]
+    $_graph legend icon $elem $im
+    set data(show) $hide
+    set data(delete) [expr { $flags == "-delete" }]
+    set node [$_tree insert root -at 0 -label $elem -data [array get data]]
+    $itk_component(legend) entry configure $node -label $label -icon $im \
+        -activeicon $im
+    update idletasks
+    return $node
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Clients use this to add a curve to the plot.  The optional <settings>
+# are used to configure the plot.  Allowed settings are -color,
+# -brightness, -width, -linestyle and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyLegend::reset { list } {
+    foreach node [$_tree children root] {
+        $_tree delete $node
+    }
+    foreach elem $list {
+        if {[catch {$_graph element cget $elem -label} label] == 0} {
+            if {$label eq ""} {
+                set label $elem
+            }
+            Add $elem $label
+        }
+    }
+    $itk_component(legend) open -recurse root
+    Check
+}
+
+itcl::body Rappture::XyLegend::Hide { args } {
+    if { $args == "" } {
+        set nodes [$itk_component(legend) curselection]
+    } else {
+        set nodes $args
+    }
+    foreach node $nodes {
+        set elem [$_tree label $node]
+        if { ![$_graph element exists $elem] } {
+            continue
+        }
+        $_graph element configure $elem -hide yes
+        $_tree set $node "show" 1
+    }
+}
+
+itcl::body Rappture::XyLegend::Show { args } {
+    if { $args == "" } {
+        set nodes [$itk_component(legend) curselection]
+    } else {
+        set nodes $args
+    }
+    foreach node $nodes {
+        set elem [$_tree label $node]
+        if { ![$_graph element exists $elem] } {
+            continue
+        }
+        $_graph element configure $elem -hide no
+        $_tree set $node "show" 0
+    }
+}
+
+itcl::body Rappture::XyLegend::Toggle { args } {
+    if { $args == "" } {
+        set nodes [$itk_component(legend) curselection]
+    } else {
+        set nodes $args
+    }
+    foreach node $nodes {
+        set elem [$_tree label $node]
+        if { ![$_graph element exists $elem] } {
+            continue
+        }
+        set hide [$_graph element cget $elem -hide]
+        set hide [expr $hide==0]
+        $_tree set $node "show" $hide
+        $_graph element configure $elem -hide $hide
+    }
+}
+
+itcl::body Rappture::XyLegend::Raise { args } {
+    if { $args == "" } {
+        set nodes [$itk_component(legend) curselection]
+    } else {
+        set nodes $args
+    }
+    set elements {}
+    foreach node $nodes {
+        set elem [$_tree label $node]
+        set found($elem) 1
+        set elements [linsert $elements 0 $elem]
+    }
+    foreach elem $elements {
+        $_tree move [$_tree index $elem] 0 -at 0
+    }
+    set list {}
+    foreach elem [$_graph element show] {
+        if { [info exists found($elem)] }  {
+            continue
+        }
+        lappend list $elem
+    }
+    $_graph element show [concat $list $elements]
+}
+
+itcl::body Rappture::XyLegend::Lower { args } {
+    if { $args == "" } {
+        set nodes [$itk_component(legend) curselection]
+    } else {
+        set nodes $args
+    }
+    set elements {}
+    foreach node $nodes {
+        set elem [$_tree label $node]
+        set found($elem) 1
+        set elements [linsert $elements 0 $elem]
+    }
+    set pos [$_tree degree 0]
+
+    foreach elem $elements {
+        incr pos -1
+        $_tree move [$_tree index $elem] 0 -at $pos
+    }
+
+    set list {}
+    foreach elem [$_graph element show] {
+        if { [info exists found($elem)] }  {
+            continue
+        }
+        lappend list $elem
+    }
+    $_graph element show [concat $elements $list]
+}
+
+itcl::body Rappture::XyLegend::Delete { args } {
+    if { $args == "" } {
+        set nodes [$itk_component(legend) curselection]
+    } else {
+        set nodes $args
+    }
+    set elements {}
+    set delnodes {}
+    foreach node $nodes {
+        if { ![$_tree get $node "delete" 0] } {
+            continue
+        }
+        set elem [$_tree label $node]
+        lappend elements $elem
+        lappend delnodes $node
+        if { $_diff != "" && [info exists _diffelements($elem)] } {
+            $_graph marker delete $_diff
+            array unset _diffelements
+            set _diff ""
+        }
+    }
+    if { [llength $delnodes] > 0 } {
+        eval $_tree delete $delnodes
+    }
+    $itk_component(legend) selection clearall
+    eval $_graph element delete $elements
+}
+
+itcl::body Rappture::XyLegend::Check {} {
+    set nodes [$itk_component(legend) curselection]
+    foreach n { hide show toggle raise lower
+        rename average difference delete recolor } {
+        $itk_component(controls).$n configure -state disabled
+    }
+    foreach node $nodes {
+        if { [$_tree get $node "delete" 0] } {
+            $itk_component(controls).delete configure -state normal
+            break
+        }
+    }
+    if { [$_tree degree 0] > 1  && [llength $nodes] > 0 } {
+        foreach n { raise lower } {
+            $itk_component(controls).$n configure -state normal
+        }
+    }
+    switch -- [llength $nodes] {
+        0 {
+        }
+        1 {
+            foreach n { hide show toggle rename recolor } {
+                $itk_component(controls).$n configure -state normal
+            }
+        }
+        2 {
+            foreach n { hide show toggle difference average recolor } {
+                $itk_component(controls).$n configure -state normal
+            }
+        }
+        default {
+            foreach n { hide show toggle average recolor } {
+                $itk_component(controls).$n configure -state normal
+            }
+        }
+    }
+}
+
+itcl::body Rappture::XyLegend::GetData { elem what } {
+    set y [$_graph element cget $elem $what]
+    if { [blt::vector names $y] == $y } {
+        set y [$y range 0 end]
+    }
+    return $y
+}
+
+itcl::body Rappture::XyLegend::Average {} {
+    set nodes [$itk_component(legend) curselection]
+    if { $nodes == "" } {
+        return
+    }
+    set elements {}
+    set sum [blt::vector create \#auto -command ""]
+
+    set xcoords [blt::vector create \#auto -command ""]
+    set ycoords [blt::vector create \#auto -command ""]
+
+    blt::busy hold $itk_component(hull)
+    update
+    # Step 1. Get the x-values for each curve, then sort them to get the
+    #         unique values.
+
+    set labels {}
+    foreach node $nodes {
+        set elem [$_tree label $node]
+        set label [$_graph element cget $elem -label]
+        $xcoords append [GetData $elem -x]
+        set elements [linsert $elements 0 $elem]
+        set labels [linsert $labels 0 $label]
+    }
+    # Sort the abscissas keeping unique values.
+    $xcoords sort -uniq
+
+    # Step 2. Now for each curve, generate a cubic spline of that curve
+    #         and interpolate to get the corresponding y-values for each
+    #         abscissa.  Normally the abscissa are the same, so we're
+    #         interpolation the knots.
+
+    set x [blt::vector create \#auto -command ""]
+    set y [blt::vector create \#auto -command ""]
+    $sum length [$xcoords length]
+
+    foreach node $nodes {
+        set elem [$_tree label $node]
+        $x set [GetData $elem -x]
+        $y set [GetData $elem -y]
+        blt::spline natural $x $y $xcoords $ycoords
+
+        # Sum the interpolated y-coordinate values.
+        $sum expr "$sum + $ycoords"
+    }
+    blt::vector destroy $x $y
+
+    # Get the average
+    $sum expr "$sum / [llength $elements]"
+
+    # Step 3.  Create a new curve which is the average. Append it to the
+    #          the end.
+
+    set count 0
+    while {[$_graph element exists avg$count] } {
+        incr count
+    }
+    set labels [lsort -dictionary $labels]
+    set name "avg$count"
+    set label "Avg. [join $labels ,]"
+
+    # Don't use the vector because we don't know when it will be cleaned up.
+
+    if { $_lastColorIndex == 0 } {
+        set _lastColorIndex [llength $_autocolors]
+    }
+    incr _lastColorIndex -1
+    set color [lindex $_autocolors $_lastColorIndex]
+    $_graph element create $name -label $label -x [$xcoords range 0 end]\
+        -y [$sum range 0 end] -symbol scross -pixels 3 -color $color
+    blt::vector destroy $xcoords $ycoords $sum
+    set node [Add $name $label -delete]
+    Raise $node
+    blt::busy forget $itk_component(hull)
+}
+
+itcl::body Rappture::XyLegend::Difference {} {
+
+    if { $_diff != "" } {
+        $_graph marker delete $_diff
+        set _diff ""
+    }
+    set nodes [$itk_component(legend) curselection]
+    set elem1 [$_tree label [lindex $nodes 0]]
+    set elem2 [$_tree label [lindex $nodes 1]]
+    if { [info exists _diffelements($elem1)] &&
+         [info exists _diffelements($elem2)] } {
+        array unset _diffelements;      # Toggle the difference.
+        return;
+    }
+    array unset _diffelements
+    set x [blt::vector create \#auto -command ""]
+    set y [blt::vector create \#auto -command ""]
+    set m [blt::vector create \#auto -command ""]
+
+    $x append [GetData $elem1 -x]
+    $y append [GetData $elem1 -y]
+    $x sort -reverse $y
+    $x append [GetData $elem2 -x]
+    $y append [GetData $elem2 -y]
+    $m merge $x $y
+    set _diff [$_graph marker create polygon \
+                   -coords [$m range 0 end] \
+                   -element $elem1 \
+                   -stipple dot1 \
+                   -outline "" -fill "#cd69c9"]
+    blt::vector destroy $m $x $y
+    set _diffelements($elem1) 1
+    set _diffelements($elem2) 1
+}
+
+
+itcl::body Rappture::XyLegend::UnmapHidden {} {
+    $_graph configure -unmaphiddenelements $_unmapHidden
+}
+
+itcl::body Rappture::XyLegend::SelectAll { } {
+    foreach node [$_tree children 0] {
+        $itk_component(legend) selection set $node
+    }
+}
+
+itcl::body Rappture::XyLegend::Rename {} {
+    Editor popup
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Editor popup
+# USAGE: Editor activate
+# USAGE: Editor validate <value>
+# USAGE: Editor apply <value>
+# USAGE: Editor menu <rootx> <rooty>
+#
+# Used internally to handle the various functions of the pop-up
+# editor for the value of this gauge.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyLegend::Editor {option args} {
+    switch -- $option {
+        popup {
+            $itk_component(editor) activate
+        }
+        activate {
+            set _rename [$itk_component(legend) curselection]
+            if { $_rename == "" } {
+                return;
+            }
+            set label [$itk_component(legend) entry cget $_rename -label]
+            foreach { l r w h } [$itk_component(legend) bbox $_rename] break
+            set info(text) $label
+            set info(x) [expr $l + [winfo rootx $itk_component(legend)]]
+            set info(y) [expr $r + [winfo rooty $itk_component(legend)]]
+            set info(w) $w
+            set info(h) $h
+            return [array get info]
+        }
+        validate {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"editor validate value\""
+            }
+        }
+        apply {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"editor apply value\""
+            }
+            set label [lindex $args 0]
+            $itk_component(legend) entry configure $_rename -label $label
+            set elem [$_tree label $_rename]
+            $_graph element configure $elem -label $label
+        }
+        menu {
+            eval tk_popup $itk_component(emenu) $args
+        }
+        default {
+            error "bad option \"$option\": should be popup, activate, validate, apply, and menu"
+        }
+    }
+}
+
+itcl::body Rappture::XyLegend::Recolor {} {
+    set nodes [$itk_component(legend) curselection]
+    if { $nodes == "" } {
+        return
+    }
+    foreach node $nodes {
+        set elem [$_tree label $node]
+        if { $_lastColorIndex == 0 } {
+            set _lastColorIndex [llength $_autocolors]
+        }
+        incr _lastColorIndex -1
+        set color [lindex $_autocolors $_lastColorIndex]
+        $_graph element configure $elem -color $color
+        set im [$itk_component(legend) entry cget $node -icon]
+        $_graph legend icon $elem $im
+    }
+}
Index: /tags/1.6.0/gui/scripts/xyprint.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/xyprint.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/xyprint.tcl	(revision 6168)
@@ -0,0 +1,1471 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: xyprint - Print X-Y plot.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+#option add *XyPrint.width 3i widgetDefault
+#option add *XyPrint.height 3i widgetDefault
+option add *XyPrint.gridColor #d9d9d9 widgetDefault
+option add *XyPrint.activeColor blue widgetDefault
+option add *XyPrint.dimColor gray widgetDefault
+option add *XyPrint.controlBackground gray widgetDefault
+option add *XyPrint*Font "Arial 9" widgetDefault
+option add *XyPrint*Entry*width "6" widgetDefault
+option add *XyPrint*Entry*background "white" widgetDefault
+
+itcl::class Rappture::XyPrint {
+    inherit itk::Widget
+
+    constructor {args} {}
+    destructor {}
+
+    private variable _graph "";         # Original graph.
+    private variable _clone "";         # Cloned graph.
+    private variable _preview "";       # Preview image.
+    private variable _savedSettings;    # Array of settings.
+
+    private common _oldSettingsFile "~/.rpsettings"
+    private common _settingsFile "~/.rp_settings"
+
+    public method print { graph toolName plotName }
+    public method reset {}
+
+    private method CopyOptions { cmd orig clone {exclude {}}}
+    private method CloneGraph { orig }
+
+    private method BuildGeneralTab {}
+    private method BuildLayoutTab {}
+    private method BuildLegendTab {}
+    private method BuildAxisTab {}
+    private method SetOption { opt }
+    private method SetComponentOption { comp opt }
+    private method SetNamedComponentOption { comp name opt }
+    private method GetAxis {}
+    private method GetElement { args }
+    private method RegeneratePreview {}
+    private method InitClone {}
+    private method Pixels2Inches { pixels }
+    private method Inches2Pixels { inches {defValue ""}}
+    private method Color2RGB { color }
+
+    private method ApplyGeneralSettings {}
+    private method ApplyLegendSettings {}
+    private method ApplyAxisSettings {}
+    private method ApplyElementSettings {}
+    private method ApplyLayoutSettings {}
+    private method InitializeSettings {}
+    private method CreateSettings { toolName plotName }
+    private method RestoreSettings { toolName plotName }
+    private method SaveSettings { toolName plotName }
+    private method DestroySettings {}
+    private method ResetSettings { }
+    private method GetOutput {}
+    private method SetWaitVariable { state }
+    private method SetLayoutOption { option }
+    private method GetAxisType { axis }
+    private method restore { toolName plotName data }
+
+    # Same dialog may be used for different graphs
+    private common _settings
+    private common _wait
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyPrint::constructor { args } {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    set w [winfo pixels . 2.5i]
+    set h [winfo pixels . 2i]
+    set _preview [image create photo -width $w -height $h]
+    itk_component add tabs {
+        blt::tabset $itk_interior.tabs \
+            -highlightthickness 0 -tearoff 0 -side top \
+            -bd 0 -gap 0 -tabborderwidth 1 \
+            -outerpad 1 -background grey
+    } {
+        keep -cursor
+        ignore -highlightthickness -borderwidth -background
+    }
+    set inner [frame $itk_interior.frame -bg grey]
+    itk_component add preview {
+        label $inner.preview \
+            -highlightthickness 0 -bd 0 -image $_preview -width 2.5i \
+                -height 2.5i -background grey
+    } {
+        ignore -background
+    }
+    itk_component add ok {
+        button $itk_interior.ok -text "Save" \
+            -highlightthickness 0 -pady 2 -padx 0 \
+            -command [itcl::code $this SetWaitVariable 1] \
+            -compound left \
+            -image [Rappture::icon download]
+    }
+    itk_component add cancel {
+        button $itk_interior.cancel -text "Cancel" \
+            -highlightthickness 0 -pady 2 -padx 0 \
+            -command [itcl::code $this SetWaitVariable 0] \
+            -compound left \
+            -image [Rappture::icon cancel]
+    }
+    blt::table $itk_interior \
+        0,0 $inner -fill both \
+        0,1 $itk_component(tabs) -fill both -cspan 2 \
+        1,2 $itk_component(cancel) -padx 2 -pady 2 -width .9i -fill y \
+        1,1 $itk_component(ok) -padx 2 -pady 2 -width .9i -fill y
+    blt::table $inner \
+        0,0 $itk_component(preview) -fill both -padx 10 -pady 10
+
+    #blt::table configure $itk_interior c1 c2 -resize none
+    blt::table configure $itk_interior c0 -resize both
+    BuildGeneralTab
+    BuildAxisTab
+    BuildLegendTab
+    BuildLayoutTab
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyPrint::destructor {} {
+    destroy $_clone
+    image delete $_preview
+    array unset _settings $this-*
+}
+
+itcl::body Rappture::XyPrint::DestroySettings {} {
+    destroy $_clone
+    set _clone ""
+    set _graph ""
+}
+
+itcl::body Rappture::XyPrint::reset {} {
+    SetWaitVariable 0
+}
+
+itcl::body Rappture::XyPrint::SetWaitVariable { state } {
+    set _wait($this) $state
+}
+
+itcl::body Rappture::XyPrint::print { graph toolName plotName } {
+    set _graph $graph
+    CloneGraph $graph
+    InitClone
+    RestoreSettings $toolName $plotName
+    InitializeSettings
+    SetWaitVariable 0
+    tkwait variable [itcl::scope _wait($this)]
+    SaveSettings $toolName $plotName
+    set output ""
+    if { $_wait($this) } {
+        set output [GetOutput]
+    }
+    DestroySettings
+    return $output
+}
+
+itcl::body Rappture::XyPrint::GetOutput {} {
+    # Get the selected format of the download.
+    set page $itk_component(graph_page)
+    set format [$page.format current]
+
+    if { $format == "jpg" } {
+        set img [image create photo]
+        $_clone snap $img
+        set bytes [$img data -format "jpeg -quality 100"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        image delete $img
+        return [list .jpg $bytes]
+    } elseif { $format == "png" } {
+        set img [image create photo]
+        $_clone snap $img
+        set bytes [$img data -format "png"]
+        set bytes [Rappture::encoding::decode -as b64 $bytes]
+        image delete $img
+        return [list .png $bytes]
+    }
+
+    # Handle encapsulated postscript or portable document format.
+
+    # Append an "i" for the graph postscript component.
+    set w $_settings($this-layout-width)i
+    set h $_settings($this-layout-height)i
+
+    $_clone postscript configure \
+        -maxpect false \
+        -decoration yes \
+        -center yes \
+        -width $w -height $h
+
+    set psdata [$_clone postscript output]
+
+    if 0 {
+        set f [open "junk.raw" "w"]
+        puts -nonewline $f $psdata
+        close $f
+    }
+    if { $format == "eps" } {
+        return [list .$format $psdata]
+    }
+
+    set cmd ""
+    # | eps2eps << $psdata
+    lappend cmd "|" "/usr/bin/gs" \
+        "-q" "-sDEVICE=epswrite" "-sstdout=%stderr" \
+        "-sOutputFile=-" "-dNOPAUSE" "-dBATCH" "-dSAFER" \
+        "-dDEVICEWIDTH=250000" "-dDEVICEHEIGHT=250000" "-" "<<" "$psdata"
+    if { $format == "pdf" } {
+        # | eps2eps << $psdata | ps2pdf
+        lappend cmd "|" "/usr/bin/gs" \
+            "-q" "-sDEVICE=pdfwrite" "-sstdout=%stderr" \
+            "-sOutputFile=-" "-dNOPAUSE" "-dBATCH" "-dSAFER" \
+            "-dCompatibilityLevel=1.4" "-c" ".setpdfwrite" "-f" "-"
+    }
+    if { [catch {
+        set f [open $cmd "r"]
+        fconfigure $f -translation binary -encoding binary
+        set output [read $f]
+        close $f
+    } err ] != 0 } {
+        global errorInfo
+        puts stderr "failed to generate file: $err\n$errorInfo"
+        return ""
+    }
+    if 0 {
+        set f [open "junk.$format" "w"]
+        fconfigure $f -translation binary -encoding binary
+        puts -nonewline $f $output
+        close $f
+    }
+    return [list .$format $output]
+}
+
+itcl::body Rappture::XyPrint::CopyOptions { cmd orig clone {exclude {}} } {
+    set all [eval $orig $cmd]
+    set configLine $clone
+    foreach name $exclude {
+        set ignore($name) 1
+    }
+    foreach arg $cmd {
+        lappend configLine $arg
+    }
+    foreach option $all {
+        if { [llength $option] != 5 } {
+            continue
+        }
+        set switch [lindex $option 0]
+        set initial [lindex $option 3]
+        set current [lindex $option 4]
+        if { [info exists ignore($switch)] } {
+            continue
+        }
+        if { [string compare $initial $current] == 0 } {
+            continue
+        }
+        lappend configLine $switch $current
+    }
+    eval $configLine
+}
+
+itcl::body Rappture::XyPrint::CloneGraph { orig } {
+    set top $itk_interior
+    if { [winfo exists $top.graph] } {
+        destroy $top.graph
+    }
+    set _clone [blt::graph $top.graph]
+    CopyOptions "configure" $orig $_clone
+    # Axis component
+    foreach axis [$orig axis names] {
+        if { $axis == "z" } {
+            continue
+        }
+        if { [$orig axis cget $axis -hide] } {
+            continue
+        }
+        if { [$_clone axis name $axis] == "" } {
+            $_clone axis create $axis
+        }
+        CopyOptions [list axis configure $axis] $orig $_clone
+    }
+    foreach axis { x y x2 y2 } {
+        $_clone ${axis}axis use [$orig ${axis}axis use]
+    }
+    # Pen component
+    foreach pen [$orig pen names] {
+        if { [$_clone pen name $pen] == "" } {
+            $_clone pen create $pen
+        }
+        CopyOptions [list pen configure $pen] $orig $_clone
+    }
+    # Marker component
+    foreach marker [$orig marker names] {
+        $_clone marker create [$orig marker type $marker] -name $marker
+        CopyOptions [list marker configure $marker] $orig $_clone -name
+    }
+    # Element component
+    foreach elem [$orig element names] {
+        set oper [$orig element type $elem]
+        $_clone $oper create $elem
+        CopyOptions [list $oper configure $elem] $orig $_clone -data
+        if { [$_clone $oper cget $elem -hide] } {
+            $_clone $oper configure $elem -label ""
+        }
+    }
+    # Fix element display list
+    $_clone element show [$orig element show]
+    # Legend component
+    CopyOptions {legend configure} $orig $_clone
+    # Postscript component
+    CopyOptions {postscript configure} $orig $_clone
+    # Crosshairs component
+    CopyOptions {crosshairs configure} $orig $_clone
+    # Grid component
+    CopyOptions {grid configure} $orig $_clone
+
+    # Create markers representing lines at zero for the x and y axis.
+    $_clone marker create line -name x-zero \
+        -coords "0 -Inf 0 Inf" -dashes 1 -hide yes
+    $_clone marker create line -name y-zero \
+        -coords "-Inf 0 Inf 0" -dashes 1 -hide yes
+}
+
+itcl::body Rappture::XyPrint::InitClone {} {
+
+    $_clone configure -width 3.4i -height 3.4i -background white \
+        -borderwidth 0 \
+        -leftmargin 0 \
+        -rightmargin 0 \
+        -topmargin 0 \
+        -bottommargin 0
+
+    # Kill the title and create a border around the plot
+    $_clone configure \
+        -title "" \
+        -plotborderwidth 1 -plotrelief solid  \
+        -plotbackground white -plotpadx 0 -plotpady 0
+
+    set _settings($this-layout-width) [Pixels2Inches [$_clone cget -width]]
+    set _settings($this-layout-height) [Pixels2Inches [$_clone cget -height]]
+
+    set _settings($this-legend-fontfamily) helvetica
+    set _settings($this-legend-fontsize)   10
+    set _settings($this-legend-fontweight) normal
+    set _settings($this-legend-fontslant)  roman
+    set font "helvetica 10 normal roman"
+    $_clone legend configure \
+        -position right \
+        -font $font \
+        -hide yes -borderwidth 0 -background white -relief solid \
+        -anchor nw -activeborderwidth 0
+    #
+    set _settings($this-axis-ticks-fontfamily) helvetica
+    set _settings($this-axis-ticks-fontsize)   10
+    set _settings($this-axis-ticks-fontweight) normal
+    set _settings($this-axis-ticks-fontslant)  roman
+    set _settings($this-axis-title-fontfamily) helvetica
+    set _settings($this-axis-title-fontsize)   10
+    set _settings($this-axis-title-fontweight) normal
+    set _settings($this-axis-title-fontslant)  roman
+    foreach axis [$_clone axis names] {
+        if { $axis == "z" } {
+            continue
+        }
+        if { [$_clone axis cget $axis -hide] } {
+            continue
+        }
+        set _settings($this-$axis-ticks-fontfamily) helvetica
+        set _settings($this-$axis-ticks-fontsize)   10
+        set _settings($this-$axis-ticks-fontweight) normal
+        set _settings($this-$axis-ticks-fontslant)  roman
+        set _settings($this-$axis-title-fontfamily) helvetica
+        set _settings($this-$axis-title-fontsize)   10
+        set _settings($this-$axis-title-fontweight) normal
+        set _settings($this-$axis-title-fontslant)  roman
+        set tickfont "helvetica 10 normal roman"
+        set titlefont "helvetica 10 normal roman"
+        $_clone axis configure $axis -ticklength 5  \
+            -majorticks {} -minorticks {}
+        $_clone axis configure $axis \
+            -tickfont $tickfont \
+            -titlefont $titlefont
+    }
+    set count 0
+    foreach elem [$_clone element names] {
+        if { [$_clone element type $elem] == "bar" } {
+            continue
+        }
+        incr count
+        if { [$_clone element cget $elem -linewidth] > 1 } {
+            $_clone element configure $elem -linewidth 1 -pixels 3
+        }
+    }
+    if { $count == 0 } {
+        # There are no "line" elements in the graph.
+        # Remove the symbol and dashes controls.
+        set page $itk_component(legend_page)
+        # May have already been forgotten.
+        catch {
+            blt::table forget $page.symbol_l
+            blt::table forget $page.symbol
+            blt::table forget $page.dashes_l
+            blt::table forget $page.dashes
+        }
+    }
+}
+
+itcl::body Rappture::XyPrint::SetOption { opt } {
+    set new $_settings($this$opt)
+    set old [$_clone cget $opt]
+    set code [catch [list $_clone configure $opt $new] err]
+    if { $code != 0 } {
+        bell
+        global errorInfo
+        puts stderr "$err: $errorInfo"
+        set _settings($this$opt) $old
+        $_clone configure $opt $old
+    }
+}
+
+itcl::body Rappture::XyPrint::SetComponentOption { comp opt } {
+    set new $_settings($this-$comp$opt)
+    set old [$_clone $comp cget $opt]
+    set code [catch [list $_clone $comp configure $opt $new] err]
+    if { $code != 0 } {
+        bell
+        global errorInfo
+        puts stderr "$err: $errorInfo"
+        set _settings($this-$comp$opt) $old
+        $_clone $comp configure $opt $old
+    }
+}
+
+itcl::body Rappture::XyPrint::SetNamedComponentOption { comp name opt } {
+    set new $_settings($this-$comp$opt)
+    set old [$_clone $comp cget $name $opt]
+    set code [catch [list $_clone $comp configure $name $opt $new] err]
+    if { $code != 0 } {
+        bell
+        global errorInfo
+        puts stderr "$err: $errorInfo"
+        set _settings($this-$comp$opt) $old
+        $_clone $comp configure $name $opt $old
+    }
+}
+
+itcl::body Rappture::XyPrint::RegeneratePreview {} {
+    update
+    set img [image create photo]
+    set w [Inches2Pixels $_settings($this-layout-width) 3.4]
+    set h [Inches2Pixels $_settings($this-layout-height) 3.4]
+    $_clone snap $img -width $w -height $h
+
+    set pixelsPerInch [winfo pixels . 1i]
+    set cw [winfo width $itk_component(preview)]
+    set ch [winfo height $itk_component(preview)]
+    set rw [expr 2.5*$pixelsPerInch]
+    set rh [expr 2.5*$pixelsPerInch]
+    set maxwidth $rw
+    set maxheight $rh
+    if { $maxwidth > $cw } {
+        set maxwidth $cw
+    }
+    if { $maxheight > $ch } {
+        set maxheight $ch
+    }
+    set sx [expr double($maxwidth)/$w]
+    set sy [expr double($maxheight)/$h]
+    set s [expr min($sx,$sy)]
+
+    set pw [expr int(round($s * $w))]
+    set ph [expr int(round($s * $h))]
+    $_preview configure -width $pw -height $ph
+    blt::winop resample $img $_preview box
+    image delete $img
+}
+
+itcl::body Rappture::XyPrint::Pixels2Inches { pixels } {
+    if { [llength $pixels] == 2 } {
+        set pixels [lindex $pixels 0]
+    }
+    set pixelsPerInch [winfo pixels . 1i]
+    set inches [expr { double($pixels) / $pixelsPerInch }]
+    return [format %.3g ${inches}]
+}
+
+itcl::body Rappture::XyPrint::Inches2Pixels { inches {defValue ""}} {
+    set n [scan $inches %g dummy]
+    if { $n != 1  && $defValue != "" } {
+        set inches $defValue
+    }
+    return  [winfo pixels . ${inches}i]
+}
+
+itcl::body Rappture::XyPrint::Color2RGB { color } {
+    foreach { r g b } [winfo rgb $_clone $color] {
+        set r [expr round($r / 257.0)]
+        set g [expr round($g / 257.0)]
+        set b [expr round($b / 257.0)]
+    }
+    return [format "\#%02x%02x%02x" $r $g $b]
+}
+
+itcl::body Rappture::XyPrint::GetAxisType { axis } {
+    foreach type { x y x2 y2 } {
+        set axes [$_clone ${type}axis use]
+        if { [lsearch $axes $axis] >= 0 } {
+            return [string range $type 0 0]
+        }
+    }
+    return ""
+}
+
+itcl::body Rappture::XyPrint::GetAxis {} {
+    set axis [$itk_component(axis_combo) current]
+    foreach option { -min -max -loose -title -stepsize -subdivisions } {
+        set _settings($this-axis$option) [$_clone axis cget $axis $option]
+    }
+    foreach attr { fontfamily fontsize fontweight fontslant } {
+        set specific $this-$axis-ticks
+        set general $this-axis-ticks
+        set _settings(${general}-${attr}) $_settings(${specific}-${attr})
+        set specific $this-$axis-title
+        set general $this-axis-title
+        set _settings(${general}-${attr}) $_settings(${specific}-${attr})
+    }
+    set type [GetAxisType $axis]
+    if { [$_clone grid cget -map${type}] == $axis } {
+        set _settings($this-axis-grid) 1
+    }  else {
+        set _settings($this-axis-grid) 0
+    }
+    set _settings($this-axis-plotpad${type}) \
+        [Pixels2Inches [$_clone cget -plotpad${type}]]
+    set _settings($this-axis-zero) [$_clone marker cget ${type}-zero -hide]
+}
+
+itcl::body Rappture::XyPrint::GetElement { args } {
+    set index 1
+    array unset _settings $this-element-*
+    foreach elem [$_clone element show] {
+        set _settings($this-element-$index) $elem
+        incr index
+    }
+    set index [$itk_component(element_slider) get]
+    set elem $_settings($this-element-$index)
+    set _settings($this-element-label) [$_clone element cget $elem -label]
+    set _settings($this-element-color) [$_clone element cget $elem -color]
+    if { [$_clone element type $elem] != "bar" } {
+        set _settings($this-element-symbol) [$_clone element cget $elem -symbol]
+        set _settings($this-element-dashes) [$_clone element cget $elem -dashes]
+    }
+    set page $itk_component(legend_page)
+    set color [$page.color label $_settings($this-element-color)]
+    if { $color == "" } {
+        set color [Color2RGB $_settings($this-element-color)]
+        $page.color choices insert end $color $color
+        $page.color value $color
+    } else {
+        $page.color value [$page.color label $_settings($this-element-color)]
+    }
+    if { [$_clone element type $elem] != "bar" } {
+        $page.symbol value [$page.symbol label $_settings($this-element-symbol)]
+        $page.dashes value [$page.dashes label $_settings($this-element-dashes)]
+    }
+    #FixElement
+}
+
+itcl::body Rappture::XyPrint::BuildLayoutTab {} {
+    itk_component add layout_page {
+        frame $itk_component(tabs).layout_page
+    }
+    set page $itk_component(layout_page)
+    $itk_component(tabs) insert end "layout" \
+        -text "Layout" -padx 2 -pady 2 -window $page -fill both
+
+    label $page.width_l -text "width"
+    entry $page.width -width 6 \
+        -textvariable [itcl::scope _settings($this-layout-width)]
+    bind  $page.width <KeyPress-Return> [itcl::code $this ApplyLayoutSettings]
+    Rappture::Tooltip::for $page.width \
+        "Set the width (inches) of the output image. Must be a positive number."
+
+    label $page.height_l -text "height"
+    entry $page.height -width 6 \
+        -textvariable [itcl::scope _settings($this-layout-height)]
+    bind  $page.height <KeyPress-Return> [itcl::code $this ApplyLayoutSettings]
+    Rappture::Tooltip::for $page.height \
+        "Set the height (inches) of the output image. Must be a positive number"
+
+    label $page.margin_l -text "Margins"
+
+    label $page.left_l -text "left"
+    entry $page.left -width 6 \
+        -textvariable [itcl::scope _settings($this-layout-leftmargin)]
+    bind  $page.left <KeyPress-Return> [itcl::code $this ApplyLayoutSettings]
+    Rappture::Tooltip::for $page.left \
+        "Set the size (inches) of the left margin. If zero, the size is automatically determined."
+
+    label $page.right_l -text "right"
+    entry $page.right -width 6 \
+        -textvariable [itcl::scope _settings($this-layout-rightmargin)]
+    bind  $page.right <KeyPress-Return> [itcl::code $this ApplyLayoutSettings]
+    Rappture::Tooltip::for $page.right \
+        "Set the size (inches) of the right margin. If zero, the size is automatically determined."
+
+
+    label $page.top_l -text "top"
+    entry $page.top -width 6 \
+        -textvariable [itcl::scope _settings($this-layout-topmargin)]
+    bind  $page.top <KeyPress-Return> [itcl::code $this ApplyLayoutSettings]
+    Rappture::Tooltip::for $page.top \
+        "Set the size (inches) of the top margin. If zero, the size is automatically determined."
+
+    label $page.bottom_l -text "bottom"
+    entry $page.bottom -width 6 \
+        -textvariable [itcl::scope _settings($this-layout-bottommargin)]
+    bind  $page.bottom <KeyPress-Return> [itcl::code $this ApplyLayoutSettings]
+    Rappture::Tooltip::for $page.bottom \
+        "Set the size (inches) of the bottom margin. If zero, the size is automatically determined."
+
+
+    label $page.map -image [Rappture::icon graphmargins]
+    blt::table $page \
+        0,0 $page.width_l -anchor e \
+        0,1 $page.width -fill x  \
+        1,0 $page.height_l -anchor e \
+        1,1 $page.height -fill x \
+        3,0 $page.left_l -anchor e \
+        3,1 $page.left -fill x  \
+        4,0 $page.right_l -anchor e \
+        4,1 $page.right -fill x \
+        5,0 $page.top_l -anchor e \
+        5,1 $page.top -fill x \
+        6,0 $page.bottom_l -anchor e \
+        6,1 $page.bottom -fill x  \
+        0,2 $page.map -fill both -rspan 7 -padx 2
+
+    blt::table configure $page c0 r* -resize none
+    blt::table configure $page c1 r2 -resize both
+}
+
+
+itcl::body Rappture::XyPrint::BuildGeneralTab {} {
+    itk_component add graph_page {
+        frame $itk_component(tabs).graph_page
+    }
+    set page $itk_component(graph_page)
+    $itk_component(tabs) insert end "graph" \
+        -text "General" -padx 2 -pady 2 -window $page -fill both
+
+    label $page.format_l -text "format"
+    Rappture::Combobox $page.format -width 30 -editable no
+    $page.format choices insert end \
+        "pdf" "PDF Portable Document Format" \
+        "ps"  "PS PostScript Format"  \
+        "eps" "EPS Encapsulated PostScript"  \
+        "jpg" "JPEG Joint Photographic Experts Group Format" \
+        "png" "PNG Portable Network Graphics Format"
+
+    bind $page.format <<Value>> [itcl::code $this ApplyGeneralSettings]
+    Rappture::Tooltip::for $page.format \
+        "Set the format of the image."
+
+    label $page.style_l -text "style"
+    Rappture::Combobox $page.style -width 20 -editable no
+    $page.style choices insert end \
+        "ieee" "IEEE Journal"  \
+        "gekco" "G Klimeck"
+    bind $page.style <<Value>> [itcl::code $this ApplyGeneralSettings]
+    Rappture::Tooltip::for $page.format \
+        "Set the style template."
+
+    checkbutton $page.remember -text "remember settings" \
+        -variable [itcl::scope _settings($this-general-remember)]
+    Rappture::Tooltip::for $page.remember \
+        "Remember the settings. They will be override the default settings."
+
+    button $page.revert -text "revert" -image [Rappture::icon revert] \
+        -compound left -padx 3 -pady 1 -overrelief raised -relief flat \
+        -command [itcl::code $this ResetSettings]
+    Rappture::Tooltip::for $page.revert \
+        "Revert to the default settings."
+
+    blt::table $page \
+        2,0 $page.format_l -anchor e \
+        2,1 $page.format -fill x -cspan 2 \
+        3,0 $page.style_l -anchor e \
+        3,1 $page.style -fill x -cspan 2 \
+        5,0 $page.remember -cspan 2 -anchor w \
+        5,2 $page.revert -anchor e
+    blt::table configure $page r* -resize none  -pady { 0 2 }
+    blt::table configure $page r4 -resize both
+
+}
+
+itcl::body Rappture::XyPrint::ApplyLegendSettings {} {
+    set page $itk_component(legend_page)
+    set _settings($this-legend-anchor)    [$page.anchor current]
+    if { $_clone != "" } {
+        lappend font $_settings($this-legend-fontfamily)
+        lappend font $_settings($this-legend-fontsize)
+        lappend font $_settings($this-legend-fontweight)
+        lappend font $_settings($this-legend-fontslant)
+        foreach option { -hide -position -anchor -borderwidth } {
+            SetComponentOption legend $option
+        }
+        $_clone legend configure -font fixed -font $font
+    }
+    ApplyElementSettings
+}
+
+itcl::body Rappture::XyPrint::BuildLegendTab {} {
+    itk_component add legend_page {
+        frame $itk_component(tabs).legend_page
+    }
+    set page $itk_component(legend_page)
+    $itk_component(tabs) insert end "legend" \
+        -text "Legend" -padx 2 -pady 2 -window $page -fill both
+
+    checkbutton $page.show -text "show legend" \
+        -offvalue 1 -onvalue 0 \
+        -variable [itcl::scope _settings($this-legend-hide)]  \
+        -command [itcl::code $this ApplyLegendSettings]
+    Rappture::Tooltip::for $page.show \
+        "Display the legend."
+
+    label $page.position_l -text "position"
+    Rappture::Combobox $page.position -width 15 -editable no
+    $page.position choices insert end \
+        "leftmargin" "left margin"  \
+        "rightmargin" "right margin"  \
+        "bottommargin" "bottom margin"  \
+        "topmargin" "top margin"  \
+        "plotarea" "inside plot"
+    bind $page.position <<Value>> [itcl::code $this ApplyLegendSettings]
+    Rappture::Tooltip::for $page.position \
+        "Set the position of the legend.  This option and the anchor determine the legend's location."
+
+    Rappture::Combobox $page.anchor -width 10 -editable no
+    $page.anchor choices insert end \
+        "nw" "northwest"  \
+        "n" "north"  \
+        "ne" "northeast"  \
+        "sw" "southwest"  \
+        "s" "south"  \
+        "se" "southeast"  \
+        "c" "center"  \
+        "e" "east"  \
+        "w" "west"
+    bind $page.anchor <<Value>> [itcl::code $this ApplyLegendSettings]
+    Rappture::Tooltip::for $page.anchor \
+        "Set the anchor of the legend.  This option and the anchor determine the legend's location."
+
+    checkbutton $page.border -text "border" \
+        -variable [itcl::scope _settings($this-legend-borderwidth)] \
+        -onvalue 1 -offvalue 0 \
+        -command [itcl::code $this ApplyLegendSettings]
+    Rappture::Tooltip::for $page.border \
+        "Display a solid border around the legend."
+
+    label $page.slider_l -text "legend\nentry"  -justify right
+    itk_component add element_slider {
+        ::scale $page.slider -from 1 -to 1 \
+            -orient horizontal -width 12 \
+            -command [itcl::code $this GetElement]
+    }
+    Rappture::Tooltip::for $page.slider \
+        "Select the current entry."
+
+    label $page.label_l -text "label"
+    entry $page.label \
+        -background white \
+        -textvariable [itcl::scope _settings($this-element-label)]
+    bind  $page.label <KeyPress-Return> [itcl::code $this ApplyElementSettings]
+    Rappture::Tooltip::for $page.label \
+        "Set the label of the current entry in the legend."
+
+    label $page.color_l -text "color "
+    Rappture::Combobox $page.color -width 15 -editable no
+    $page.color choices insert end \
+        "#000000" "black" \
+        "#ffffff" "white" \
+        "#0000cd" "blue" \
+        "#cd0000" "red" \
+        "#00cd00" "green" \
+        "#3a5fcd" "royal blue" \
+        "#cdcd00" "yellow" \
+        "#cd1076" "deep pink" \
+        "#009acd" "deep sky blue" \
+        "#00c5cd" "torquise" \
+        "#a2b5cd" "light steel blue" \
+        "#7ac5cd" "cadet blue" \
+        "#66cdaa" "aquamarine" \
+        "#a2cd5a" "dark olive green" \
+        "#cd9b9b" "rosy brown" \
+        "#0000ff" "blue1" \
+        "#ff0000" "red1" \
+        "#00ff00" "green1"
+    bind $page.color <<Value>> [itcl::code $this ApplyElementSettings]
+    Rappture::Tooltip::for $page.color \
+        "Set the color of the current entry."
+
+    label $page.dashes_l -text "line style"
+    Rappture::Combobox $page.dashes -width 15 -editable no
+    $page.dashes choices insert end \
+        "" "solid"  \
+        "1" "dot" \
+        "5 2" "dash" \
+        "2 4 2" "dashdot" \
+        "2 4 2 2" "dashdotdot"
+    bind $page.dashes <<Value>> [itcl::code $this ApplyElementSettings]
+    Rappture::Tooltip::for $page.dashes \
+        "Set the line style of the current entry."
+
+    label $page.symbol_l -text "symbol"
+    Rappture::Combobox $page.symbol -editable no
+    $page.symbol choices insert end \
+        "none" "none"  \
+        "square" "square" \
+        "circle" "circle" \
+        "diamond" "diamond" \
+        "plus" "plus" \
+        "cross" "cross" \
+        "splus" "skinny plus"  \
+        "scross" "skinny cross" \
+        "triangle" "triangle"
+    bind $page.symbol <<Value>> [itcl::code $this ApplyElementSettings]
+    Rappture::Tooltip::for $page.symbol \
+        "Set the symbol of the current entry. \"none\" display no symbols."
+
+    label $page.font_l -text "font"
+    Rappture::Combobox $page.fontfamily -width 10 -editable no
+    $page.fontfamily choices insert end \
+        "courier" "courier" \
+        "helvetica" "helvetica"  \
+        "new*century*schoolbook"  "new century schoolbook" \
+        "symbol"  "symbol" \
+        "times"  "times"
+    bind $page.fontfamily <<Value>> [itcl::code $this ApplyLegendSettings]
+    Rappture::Tooltip::for $page.fontfamily \
+        "Set the font of entries in the legend."
+
+    Rappture::Combobox $page.fontsize -width 4 -editable no
+    $page.fontsize choices insert end \
+        "8" "8" \
+        "9" "9" \
+        "10" "10" \
+        "11" "11" \
+        "12" "12" \
+        "14" "14" \
+        "17" "17" \
+        "18" "18" \
+        "20" "20"
+    bind  $page.fontsize <<Value>> [itcl::code $this ApplyLegendSettings]
+    Rappture::Tooltip::for $page.fontsize \
+        "Set the size (points) of the font."
+
+    Rappture::PushButton $page.fontweight \
+        -onimage [Rappture::icon font-bold] \
+        -offimage [Rappture::icon font-bold] \
+        -onvalue "bold" -offvalue "normal" \
+        -command [itcl::code $this ApplyLegendSettings] \
+        -variable [itcl::scope _settings($this-legend-fontweight)]
+    Rappture::Tooltip::for $page.fontweight \
+        "Use the bold version of the font."
+
+    Rappture::PushButton $page.fontslant \
+        -onimage [Rappture::icon font-italic] \
+        -offimage [Rappture::icon font-italic] \
+        -onvalue "italic" -offvalue "roman" \
+        -command [itcl::code $this ApplyLegendSettings] \
+        -variable [itcl::scope _settings($this-legend-fontslant)]
+    Rappture::Tooltip::for $page.fontslant \
+        "Use the italic version of the font."
+
+    blt::table $page \
+        1,0 $page.show -cspan 2 -anchor w \
+        1,2 $page.border -cspan 2 -anchor w \
+        2,0 $page.position_l -anchor e \
+        2,1 $page.position -fill x \
+        2,2 $page.anchor -fill x  -cspan 3 \
+        3,0 $page.font_l -anchor e \
+        3,1 $page.fontfamily -fill x \
+        3,2 $page.fontsize -fill x \
+        3,3 $page.fontweight -anchor e \
+        3,4 $page.fontslant -anchor e \
+        4,0 $page.slider_l -anchor e \
+        4,1 $page.slider -fill x -cspan 5 \
+        5,0 $page.label_l -anchor e \
+        5,1 $page.label -fill x -cspan 5 \
+        6,0 $page.color_l -anchor e \
+        6,1 $page.color -fill x \
+        6,2 $page.symbol_l -anchor e \
+        6,3 $page.symbol -fill both -cspan 3 \
+        7,0 $page.dashes_l -anchor e \
+        7,1 $page.dashes -fill x \
+
+    blt::table configure $page r* -resize none -pady { 0 2 }
+    blt::table configure $page c3 c4 -resize none
+    blt::table configure $page r8 -resize both
+
+}
+
+itcl::body Rappture::XyPrint::BuildAxisTab {} {
+    itk_component add axis_page {
+        frame $itk_component(tabs).axis_page
+    }
+    set page $itk_component(axis_page)
+    $itk_component(tabs) insert end "axis" \
+        -text "Axis" -padx 2 -pady 2 -window $page -fill both
+
+    label $page.axis_l -text "axis"
+    itk_component add axis_combo {
+        Rappture::Combobox $page.axis -width 20 -editable no
+    }
+    bind $itk_component(axis_combo) <<Value>> [itcl::code $this GetAxis]
+    Rappture::Tooltip::for $page.axis \
+        "Select the current axis."
+
+    label $page.title_l -text "title"
+    entry $page.title \
+        -textvariable [itcl::scope _settings($this-axis-title)]
+    bind  $page.title <KeyPress-Return> [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.title \
+        "Set the title of the current axis."
+
+    label $page.min_l -text "min"
+    entry $page.min -width 10 \
+        -textvariable [itcl::scope _settings($this-axis-min)]
+    bind  $page.min <KeyPress-Return> [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.min \
+        "Set the minimum limit for the current axis. If empty, the minimum is automatically determined."
+
+    label $page.max_l -text "max"
+    entry $page.max -width 10 \
+        -textvariable [itcl::scope _settings($this-axis-max)]
+    bind  $page.max <KeyPress-Return> [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.max \
+        "Set the maximum limit for the current axis. If empty, the maximum is automatically determined."
+
+    label $page.subdivisions_l -text "subdivisions"
+    entry $page.subdivisions \
+        -textvariable [itcl::scope _settings($this-axis-subdivisions)]
+    bind  $page.subdivisions <KeyPress-Return> \
+        [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.subdivisions \
+        "Set the number of subdivisions (minor ticks) for the current axis."
+
+    label $page.stepsize_l -text "step size"
+    entry $page.stepsize \
+        -textvariable [itcl::scope _settings($this-axis-stepsize)]
+    bind  $page.stepsize <KeyPress-Return> [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.stepsize \
+        "Set the interval between major ticks for the current axis. If zero, the interval is automatically determined."
+
+    checkbutton $page.loose -text "loose limits" \
+        -onvalue "always" -offvalue "0" \
+        -variable [itcl::scope _settings($this-axis-loose)] \
+        -command [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.loose \
+        "Set major ticks outside of the limits for the current axis."
+
+    label $page.plotpad_l -text "pad"
+    entry $page.plotpad -width 6 \
+        -textvariable [itcl::scope _settings($this-axis-plotpad)]
+    bind  $page.plotpad <KeyPress-Return> [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.plotpad \
+        "Set padding (points) between the current axis and the plot."
+
+    checkbutton $page.grid -text "show grid lines" \
+        -variable [itcl::scope _settings($this-axis-grid)] \
+        -command [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.grid \
+        "Display grid lines for the current axis."
+
+    checkbutton $page.zero -text "mark zero" \
+        -offvalue 1 -onvalue 0 \
+        -variable [itcl::scope _settings($this-axis-zero)] \
+        -command [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.zero \
+        "Display a line at zero for the current axis."
+
+    label $page.tickfont_l -text "tick font"
+    Rappture::Combobox $page.tickfontfamily -width 10 -editable no
+    $page.tickfontfamily choices insert end \
+        "courier" "courier" \
+        "helvetica" "helvetica"  \
+        "new*century*schoolbook"  "new century schoolbook" \
+        "symbol"  "symbol" \
+        "times"  "times"
+    bind $page.tickfontfamily <<Value>> [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.tickfontfamily \
+        "Set the font of the ticks for the current axis."
+
+    Rappture::Combobox $page.tickfontsize -width 4 -editable no
+    $page.tickfontsize choices insert end \
+        "8" "8" \
+        "9" "9" \
+        "10" "10" \
+        "11" "11" \
+        "12" "12" \
+        "14" "14" \
+        "17" "17" \
+        "18" "18" \
+        "20" "20"
+    bind $page.tickfontsize <<Value>> [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.tickfontsize \
+        "Set the size (points) of the tick font."
+
+    Rappture::PushButton $page.tickfontweight \
+        -onimage [Rappture::icon font-bold] \
+        -offimage [Rappture::icon font-bold] \
+        -onvalue "bold" -offvalue "normal" \
+        -command [itcl::code $this ApplyAxisSettings] \
+        -variable [itcl::scope _settings($this-axis-ticks-fontweight)]
+    Rappture::Tooltip::for $page.tickfontweight \
+        "Use the bold version of the tick font."
+
+    Rappture::PushButton $page.tickfontslant \
+        -onimage [Rappture::icon font-italic] \
+        -offimage [Rappture::icon font-italic] \
+        -onvalue "italic" -offvalue "roman" \
+        -command [itcl::code $this ApplyAxisSettings] \
+        -variable [itcl::scope _settings($this-axis-ticks-fontslant)]
+    Rappture::Tooltip::for $page.tickfontslant \
+        "Use the italic version of the tick font."
+
+    label $page.titlefont_l -text "title font"
+    Rappture::Combobox $page.titlefontfamily -width 10 -editable no
+    $page.titlefontfamily choices insert end \
+        "courier" "courier" \
+        "helvetica" "helvetica"  \
+        "new*century*schoolbook"  "new century schoolbook" \
+        "symbol"  "symbol" \
+        "times"  "times"
+    bind $page.titlefontfamily <<Value>> [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.titlefontfamily \
+        "Set the font of the title for the current axis."
+
+    Rappture::Combobox $page.titlefontsize -width 4 -editable no
+    $page.titlefontsize choices insert end \
+        "8" "8" \
+        "9" "9" \
+        "10" "10" \
+        "11" "11" \
+        "12" "12" \
+        "14" "14" \
+        "17" "17" \
+        "18" "18" \
+        "20" "20"
+    bind $page.titlefontsize <<Value>> [itcl::code $this ApplyAxisSettings]
+    Rappture::Tooltip::for $page.titlefontsize \
+        "Set the size (point) of the title font."
+
+    Rappture::PushButton $page.titlefontweight \
+        -onimage [Rappture::icon font-bold] \
+        -offimage [Rappture::icon font-bold] \
+        -onvalue "bold" -offvalue "normal" \
+        -command [itcl::code $this ApplyAxisSettings] \
+        -variable [itcl::scope _settings($this-axis-title-fontweight)]
+    Rappture::Tooltip::for $page.titlefontweight \
+        "Use the bold version of the title font."
+
+    Rappture::PushButton $page.titlefontslant \
+        -onimage [Rappture::icon font-italic] \
+        -offimage [Rappture::icon font-italic] \
+        -onvalue "italic" -offvalue "roman" \
+        -command [itcl::code $this ApplyAxisSettings] \
+        -variable [itcl::scope _settings($this-axis-title-fontslant)]
+    Rappture::Tooltip::for $page.titlefontslant \
+        "Use the italic version of the title font."
+
+    blt::table $page \
+        1,1 $page.axis_l -anchor e  -pady 6 \
+        1,2 $page.axis -fill x -cspan 6 \
+        2,1 $page.title_l -anchor e \
+        2,2 $page.title -fill x -cspan 5 \
+        3,1 $page.min_l -anchor e \
+        3,2 $page.min -fill x \
+        3,3 $page.stepsize_l -anchor e \
+        3,4 $page.stepsize -fill both -cspan 3 \
+        4,1 $page.max_l -anchor e \
+        4,2 $page.max -fill both \
+        4,3 $page.subdivisions_l -anchor e \
+        4,4 $page.subdivisions -fill both -cspan 3  \
+        5,1 $page.titlefont_l -anchor e \
+        5,2 $page.titlefontfamily -fill x -cspan 2 \
+        5,4 $page.titlefontsize -fill x \
+        5,5 $page.titlefontweight -anchor e \
+        5,6 $page.titlefontslant -anchor e \
+        6,1 $page.tickfont_l -anchor e \
+        6,2 $page.tickfontfamily -fill x -cspan 2 \
+        6,4 $page.tickfontsize -fill x \
+        6,5 $page.tickfontweight -anchor e \
+        6,6 $page.tickfontslant -anchor e \
+        7,1 $page.loose -cspan 2 -anchor w \
+        7,3 $page.grid -anchor w -cspan 2 \
+        8,1 $page.zero -cspan 2 -anchor w \
+        8,3 $page.plotpad_l -anchor e \
+        8,4 $page.plotpad -fill both -cspan 3
+
+    blt::table configure $page  c0 c4 c5 c6 c7 c8 -resize none
+}
+
+itcl::body Rappture::XyPrint::ApplyGeneralSettings {} {
+    RegeneratePreview
+}
+
+itcl::body Rappture::XyPrint::ApplyLegendSettings {} {
+    set page $itk_component(legend_page)
+    set _settings($this-legend-position)  [$page.position current]
+    set _settings($this-legend-anchor)    [$page.anchor current]
+
+    foreach option { -hide -position -anchor -borderwidth } {
+        SetComponentOption legend $option
+    }
+    set _settings($this-legend-fontfamily)  [$page.fontfamily value]
+    set _settings($this-legend-fontsize)    [$page.fontsize value]
+    lappend font $_settings($this-legend-fontfamily)
+    lappend font $_settings($this-legend-fontsize)
+    lappend font $_settings($this-legend-fontweight)
+    lappend font $_settings($this-legend-fontslant)
+    $_clone legend configure -font fixed -font $font
+    ApplyElementSettings
+}
+
+itcl::body Rappture::XyPrint::ApplyAxisSettings {} {
+    set axis [$itk_component(axis_combo) current]
+    set type [GetAxisType $axis]
+    set page $itk_component(axis_page)
+    if { $_settings($this-axis-grid) } {
+        $_clone grid configure -hide no -map${type} ${axis}
+    } else {
+        $_clone grid configure -hide no -map${type} ""
+    }
+    $_clone configure -plotpad${type} $_settings($this-axis-plotpad)
+    foreach option { -min -max -loose -title -stepsize -subdivisions } {
+        SetNamedComponentOption axis $axis $option
+    }
+    set _settings($this-axis-ticks-fontfamily)  [$page.tickfontfamily value]
+    set _settings($this-axis-ticks-fontsize)    [$page.tickfontsize value]
+    set _settings($this-axis-title-fontfamily)  [$page.titlefontfamily value]
+    set _settings($this-axis-title-fontsize)    [$page.titlefontsize value]
+
+    set tickfont {}
+    set titlefont {}
+
+    foreach attr { fontfamily fontsize fontweight fontslant } {
+        set specific $this-$axis-ticks
+        set general  $this-axis-ticks
+        set _settings(${specific}-${attr}) $_settings(${general}-${attr})
+        lappend tickfont $_settings(${general}-${attr})
+        set specific $this-$axis-title
+        set general  $this-axis-title
+        set _settings(${specific}-${attr}) $_settings(${general}-${attr})
+        lappend titlefont $_settings(${general}-${attr})
+    }
+    $_clone axis configure $axis -tickfont $tickfont -titlefont $titlefont
+    $_clone marker configure ${type}-zero -hide $_settings($this-axis-zero)
+    GetAxis
+    RegeneratePreview
+}
+
+itcl::body Rappture::XyPrint::ApplyElementSettings {} {
+    set index [$itk_component(element_slider) get]
+    set page $itk_component(legend_page)
+    set _settings($this-element-color)  [$page.color current]
+    if { $_clone != "" } {
+        set elem $_settings($this-element-$index)
+        if { [$_clone element type $elem] != "bar" } {
+            set _settings($this-element-symbol) [$page.symbol current]
+            set _settings($this-element-dashes) [$page.dashes current]
+            foreach option { -symbol -dashes } {
+                SetNamedComponentOption element $elem $option
+            }
+        }
+        foreach option { -color -label } {
+            SetNamedComponentOption element $elem $option
+        }
+        RegeneratePreview
+    }
+}
+
+itcl::body Rappture::XyPrint::SetLayoutOption { opt } {
+    set new [Inches2Pixels $_settings($this-layout$opt)]
+    $_clone configure $opt $new
+}
+
+itcl::body Rappture::XyPrint::ApplyLayoutSettings {} {
+    foreach opt { -width -height -leftmargin -rightmargin -topmargin
+        -bottommargin } {
+        set old [$_clone cget $opt]
+        set code [catch { SetLayoutOption $opt } err]
+        if { $code != 0 } {
+            bell
+            global errorInfo
+            puts stderr "$err: $errorInfo"
+            set _settings($this-layout$opt) [Pixels2Inches $old]
+            $_clone configure $opt [Pixels2Inches $old]
+        }
+    }
+    RegeneratePreview
+}
+
+
+itcl::body Rappture::XyPrint::InitializeSettings {} {
+    # General settings
+
+    # Always set to "ps" "ieee"
+    set _settings($this-general-format) ps
+    set _settings($this-general-style) ieee
+    set _settings($this-general-remember) 0
+    set page $itk_component(graph_page)
+    $page.format value [$page.format label $_settings($this-general-format)]
+    $page.style value [$page.style label $_settings($this-general-style)]
+
+    # Layout settings
+    set _settings($this-layout-width) [Pixels2Inches [$_clone cget -width]]
+    set _settings($this-layout-height) [Pixels2Inches [$_clone cget -height]]
+    set _settings($this-layout-leftmargin) \
+        [Pixels2Inches [$_clone cget -leftmargin]]
+    set _settings($this-layout-rightmargin) \
+        [Pixels2Inches [$_clone cget -rightmargin]]
+    set _settings($this-layout-topmargin) \
+        [Pixels2Inches [$_clone cget -topmargin]]
+    set _settings($this-layout-bottommargin) \
+        [Pixels2Inches [$_clone cget -bottommargin]]
+
+    # Legend settings
+    set page $itk_component(legend_page)
+
+    set names [$_clone element show]
+    $itk_component(element_slider) configure -from 1 -to [llength $names]
+    set state [expr  { ([llength $names] < 2) ? "disabled" : "normal" } ]
+    $page.slider configure -state $state
+    $page.slider_l configure -state $state
+    # Always initialize the slider to the first entry in the element list.
+    $itk_component(element_slider) set 1
+    # Always set the borderwidth to be not displayed
+    set _settings($this-legend-borderwidth) 0
+
+    $page.fontfamily value $_settings($this-legend-fontfamily)
+    $page.fontsize value $_settings($this-legend-fontsize)
+    if { $_settings($this-legend-fontweight) == "bold" } {
+        set _settings($this-legend-font-bold) 1
+    }
+    set _settings($this-legend-hide) [$_clone legend cget -hide]
+    set _settings($this-legend-position) [$_clone legend cget -position]
+    set _settings($this-legend-anchor) [$_clone legend cget -anchor]
+    $page.position value \
+        [$page.position label $_settings($this-legend-position)]
+    $page.anchor value [$page.anchor label $_settings($this-legend-anchor)]
+    GetElement
+
+    # Axis settings
+    set page $itk_component(axis_page)
+    set names [lsort [$_clone axis names]]
+    $itk_component(axis_combo) choices delete 0 end
+    foreach axis $names {
+        if { $axis == "z" } {
+            continue
+        }
+        if { ![$_clone axis cget $axis -hide] } {
+            $itk_component(axis_combo) choices insert end $axis $axis
+        }
+        lappend axisnames $axis
+    }
+    set axis [lindex $names 0]
+
+    $page.titlefontfamily value $_settings($this-$axis-title-fontfamily)
+    $page.titlefontsize value   $_settings($this-$axis-title-fontsize)
+    $page.tickfontfamily value  $_settings($this-$axis-ticks-fontfamily)
+    $page.tickfontsize value    $_settings($this-$axis-ticks-fontsize)
+
+    # Always hide the zero line.
+    set _settings($this-axis-zero) 1
+    set _settings($this-axis-plotpad) [Pixels2Inches [$_clone cget -plotpadx]]
+    # Pick the first axis to initially display
+    set axis [lindex $axisnames 0]
+    $itk_component(axis_combo) value $axis
+    GetAxis
+    RegeneratePreview
+}
+
+
+itcl::body Rappture::XyPrint::restore { toolName plotName data } {
+    set key [list $toolName $plotName]
+    set _savedSettings($key) $data
+}
+
+itcl::body Rappture::XyPrint::RestoreSettings { toolName plotName } {
+    if { ![file readable $_settingsFile] } {
+        return;                         # No file or not readable
+    }
+    if { [file exists $_oldSettingsFile] } {
+        file delete $_oldSettingsFile
+    }
+    # Read the file by sourcing it into a safe interpreter The only commands
+    # executed will be "xyprint" which will simply add the data into an array
+    # _savedSettings.
+    set parser [interp create -safe]
+    $parser alias xyprint [itcl::code $this restore]
+    set f [open $_settingsFile "r"]
+    set code [read $f]
+    close $f
+    if { [catch { $parser eval $code }] != 0 } {
+        file delete $_settingsFile
+    }
+    # Now see if there's an entry for this tool/plot combination.  The data
+    # associated with the variable is itself code to update the graph (clone).
+    set key [list $toolName $plotName]
+    if { [info exists _savedSettings($key)] }  {
+        $parser alias "preview" $_clone
+        $parser eval $_savedSettings($key)
+    }
+    # Restore settings to this instance
+    foreach {name value} [$parser eval "array get settings"] {
+        set _settings($this-$name) $value
+    }
+    interp delete $parser
+}
+
+itcl::body Rappture::XyPrint::ResetSettings {} {
+    set graph $_graph
+    DestroySettings
+    set _graph $graph
+    CloneGraph $graph
+    InitClone
+    InitializeSettings
+}
+
+itcl::body Rappture::XyPrint::SaveSettings { toolName plotName } {
+    if { !$_settings($this-general-remember) } {
+        return
+    }
+    if { [catch { open $_settingsFile "w" 0600 } f ] != 0 } {
+        puts stderr "$_settingsFile isn't writable: $f"
+        bell
+        return
+    }
+    set key [list $toolName $plotName]
+    set _savedSettings($key) [CreateSettings $toolName $plotName]
+    # Write the settings out
+    foreach key [lsort [array names _savedSettings]] {
+        set tool [lindex $key 0]
+        set plot [lindex $key 1]
+        puts $f "xyprint \"$tool\" \"$plot\" \{"
+        set settings [string trim $_savedSettings($key) \n]
+        puts $f "$settings"
+        puts $f "\}\n"
+    }
+    close $f
+}
+
+itcl::body Rappture::XyPrint::CreateSettings { toolName plotName } {
+    # Create stanza associated with tool and plot title.
+    # General settings
+    set length [string length "${this}-"]
+    append out "    array set settings {\n"
+    foreach item [array names _settings ${this}-*] {
+        set field [string range $item $length end]
+        if { [regexp {^element-[0-9]+$} $field] } {
+            continue
+        }
+        set value $_settings($item)
+        append out "        [list $field] [list $value]\n"
+    }
+    append out "    }\n"
+    # Legend font
+    lappend legendfont $_settings($this-legend-fontfamily)
+    lappend legendfont $_settings($this-legend-fontsize)
+    lappend legendfont $_settings($this-legend-fontweight)
+    lappend legendfont $_settings($this-legend-fontslant)
+    # Axis tick font
+    lappend axistickfont $_settings($this-axis-ticks-fontfamily)
+    lappend axistickfont $_settings($this-axis-ticks-fontsize)
+    lappend axistickfont $_settings($this-axis-ticks-fontweight)
+    lappend axistickfont $_settings($this-axis-ticks-fontslant)
+    # Axis title font
+    lappend axistitlefont $_settings($this-axis-title-fontfamily)
+    lappend axistitlefont $_settings($this-axis-title-fontsize)
+    lappend axistitlefont $_settings($this-axis-title-fontweight)
+    lappend axistitlefont $_settings($this-axis-title-fontslant)
+    append out "\n"
+
+    # Layout settings
+    append out "    preview configure"
+    foreach opt { -width -height -leftmargin -rightmargin -topmargin
+        -bottommargin -plotpadx -plotpady } {
+        set value [$_clone cget $opt]
+        append out " $opt [list $value]"
+    }
+    append out "\n"
+
+    # Legend settings
+    append out "    preview legend configure"
+    foreach opt { -position -anchor -borderwidth -hide } {
+        set value [$_clone legend cget $opt]
+        append out " $opt [list $value]"
+    }
+    append out " -font [list $legendfont]\n"
+
+    # Element settings
+    foreach elem [$_clone element show] {
+        set label [$_clone element cget $elem -label]
+        if { $label == "" } {
+            continue
+        }
+        set label [list $label]
+        append out "    if \{ \[preview element exists $label] \} \{\n"
+        append out "        preview element configure $label"
+        if { [$_clone element type $elem] != "bar" } {
+            set options { -symbol -color -dashes -label }
+        } else {
+            set options { -color -label }
+        }
+        foreach opt $options {
+            set value [$_clone element cget $elem $opt]
+            append out " $opt [list $value]"
+        }
+        append out "    \}\n"
+    }
+
+    # Axis settings
+    foreach axis [$_clone axis names] {
+        if { [$_clone axis cget $axis -hide] } {
+            continue
+        }
+        set axis [list $axis]
+        append out "    if \{ \[llength \[preview axis names $axis\]\] == 1 \} \{\n"
+        append out "        preview axis configure $axis"
+        foreach opt { -hide -min -max -loose -title -stepsize -subdivisions } {
+            set value [$_clone axis cget $axis $opt]
+            append out " $opt [list $value]"
+        }
+        append out " -tickfont [list $axistickfont]"
+        append out " -titlefont [list $axistitlefont]\n"
+        set hide [$_clone marker cget ${axis}-zero -hide]
+        append out "        preview marker configure ${axis}-zero -hide $hide\n"
+        append out "    \}\n"
+    }
+
+    append out "    preview grid configure"
+    append out " -hide \"[$_clone grid cget -hide]\""
+    append out " -mapx \"[$_clone grid cget -mapx]\""
+    append out " -mapy \"[$_clone grid cget -mapy]\""
+    return $out
+}
Index: /tags/1.6.0/gui/scripts/xyresult.tcl
===================================================================
--- /tags/1.6.0/gui/scripts/xyresult.tcl	(revision 6168)
+++ /tags/1.6.0/gui/scripts/xyresult.tcl	(revision 6168)
@@ -0,0 +1,1682 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: xyresult - X/Y plot in a ResultSet
+#
+#  This widget is an X/Y plot, meant to view line graphs produced
+#  as output from the run of a Rappture tool.  Use the "add" and
+#  "delete" methods to control the data objects showing on the plot.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+
+option add *XyResult.width 3i widgetDefault
+option add *XyResult.height 3i widgetDefault
+option add *XyResult.gridColor #d9d9d9 widgetDefault
+option add *XyResult.activeColor blue widgetDefault
+option add *XyResult.dimColor gray widgetDefault
+option add *XyResult.controlBackground gray widgetDefault
+option add *XyResult.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+
+set autocolors {
+    #0000cd
+    #cd0000
+    #00cd00
+    #3a5fcd
+    #cdcd00
+    #cd1076
+    #009acd
+    #00c5cd
+    #a2b5cd
+    #7ac5cd
+    #66cdaa
+    #a2cd5a
+    #cd9b9b
+    #cdba96
+    #cd3333
+    #cd6600
+    #cd8c95
+    #cd00cd
+    #9a32cd
+    #6ca6cd
+    #9ac0cd
+    #9bcd9b
+    #00cd66
+    #cdc673
+    #cdad00
+    #cd5555
+    #cd853f
+    #cd7054
+    #cd5b45
+    #cd6889
+    #cd69c9
+    #551a8b
+}
+
+option add *XyResult.autoColors $autocolors widgetDefault
+option add *XyResult*Balloon*Entry.background white widgetDefault
+
+itcl::class Rappture::XyResult {
+    inherit itk::Widget
+
+    itk_option define -gridcolor gridColor GridColor ""
+    itk_option define -activecolor activeColor ActiveColor ""
+    itk_option define -dimcolor dimColor DimColor ""
+    itk_option define -autocolors autoColors AutoColors ""
+
+    private variable _viewable "";      # Display list for widget.
+    private variable _dispatcher "";    # Dispatcher for !events
+    private variable _dlist "";         # List of dataobj objects
+    private variable _dataobj2raise;    # Maps dataobj => raise flag 0/1
+    private variable _dataobj2desc;     # Maps dataobj => description of data
+    private variable _dataobj2sim;      # Maps dataobj => type of graph element
+    private variable _elem2comp;        # Maps graph element => dataobj
+    private variable _comp2elem;        # Maps graph element => dataobj
+    private variable _label2axis;       # Maps axis label => axis ID
+    private variable _limits;           # Axis limits:  x-min, x-max, etc.
+    private variable _nextColorIndex 0; # Index for next "-color auto"
+    private variable _hilite;           # Info for element currently highlighted
+    private variable _axis;             # Info for axis manipulations
+    private variable _axisPopup;        # Info for axis being edited in popup
+    common _downloadPopup;              # Download options from popup
+    private variable _markers
+    private variable _nextElement 0
+
+    constructor {args} {
+        # defined below
+    }
+    destructor {
+        # defined below
+    }
+    public method add {dataobj {settings ""}}
+    public method get {}
+    public method delete {args}
+    public method scale {args}
+    public method parameters {title args} {
+        # do nothing
+    }
+    public method download {option args}
+
+    protected method Rebuild {}
+    protected method ResetLimits {}
+    protected method ResetLegend {}
+    protected method Zoom {option args}
+    protected method Hilite {state x y}
+    protected method Axis {option args}
+    protected method GetAxes {dataobj}
+    protected method GetLineMarkerOptions { style }
+    protected method GetTextMarkerOptions { style }
+    protected method EnterMarker { g name x y text }
+    protected method LeaveMarker { g name }
+
+
+    private method BuildGraph { dlist }
+    private method BuildMarkers { dataobj elem }
+    private method FormatAxis { axis w value }
+    private method GetFormattedValue { axis g value }
+    private method BuildAxisPopup { popup }
+    private method ShowAxisPopup { axis }
+    private method SetAxis { setting }
+    private method SetElements { dataobj {settings ""} }
+    private method SetAxisRangeState { axis }
+}
+
+itk::usual XyResult {
+    keep -background -foreground -cursor -font
+}
+
+itk::usual Panedwindow {
+    keep -background -cursor
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !rebuild
+    $_dispatcher dispatch $this !rebuild "[itcl::code $this Rebuild]; list"
+
+    array set _downloadPopup {
+        format csv
+    }
+
+    option add hull.width hull.height
+    pack propagate $itk_component(hull) no
+
+    itk_component add main {
+        Rappture::SidebarFrame $itk_interior.main
+    }
+    pack $itk_component(main) -expand yes -fill both
+    set f [$itk_component(main) component controls]
+
+    itk_component add reset {
+        button $f.reset -borderwidth 1 -padx 1 -pady 1 \
+            -highlightthickness 0 \
+            -image [Rappture::icon reset-view] \
+            -command [itcl::code $this Zoom reset]
+    } {
+        usual
+        ignore -borderwidth -highlightthickness
+    }
+    pack $itk_component(reset) -padx 4 -pady 2 -anchor e
+    Rappture::Tooltip::for $itk_component(reset) \
+        "Reset the view to the default zoom level"
+
+    set f [$itk_component(main) component frame]
+    itk_component add plot {
+        blt::graph $f.plot \
+            -highlightthickness 0 -plotpadx 0 -plotpady 4
+    } {
+        keep -background -foreground -cursor -font
+    }
+    pack $itk_component(plot) -expand yes -fill both
+
+    $itk_component(plot) pen configure activeLine \
+        -symbol square -pixels 3 -linewidth 2 \
+        -outline black -fill red -color black
+
+    # Add bindings so you can mouse over points to see values:
+    #
+    $itk_component(plot) element bind all <Enter> \
+        [itcl::code $this Hilite at %x %y]
+    $itk_component(plot) element bind all <Motion> \
+        [itcl::code $this Hilite at %x %y]
+    $itk_component(plot) element bind all <Leave> \
+        [itcl::code $this Hilite off %x %y]
+
+    $itk_component(plot) legend configure -hide yes
+
+    #
+    # Add legend for editing hidden/elements:
+    #
+    set inner [$itk_component(main) insert end \
+        -title "Legend" \
+        -icon [Rappture::icon wrench]]
+    $inner configure -borderwidth 4
+
+    itk_component add legend {
+        Rappture::XyLegend $inner.legend $itk_component(plot)
+    }
+    pack $itk_component(legend) -expand yes -fill both
+    after idle [itcl::code $this ResetLegend]
+
+    # quick-and-dirty zoom functionality, for now...
+    Blt_ZoomStack $itk_component(plot)
+    eval itk_initialize $args
+
+    set _hilite(elem) ""
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::destructor {} {
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add <dataobj> ?<settings>?
+#
+# Clients use this to add a dataobj to the plot.  The optional <settings>
+# are used to configure the plot.  Allowed settings are -color,
+# -brightness, -width, -linestyle and -raise.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::add {dataobj {settings ""}} {
+    set g $itk_component(plot)
+    SetElements $dataobj $settings
+
+    array set attrs $settings
+
+    # Colors have to be set/reset here because of "-brightness" and "auto".
+    # Colors can't be overriden by the user.
+
+    # If the color is "auto", then select a color from -autocolors
+    if { ![info exists attrs(-color)] } {
+        set color "auto"
+    } else {
+        set color $attrs(-color)
+    }
+    if { ![info exists attrs(-width)] } {
+        set linewidth 1
+    } else {
+        set linewidth $attrs(-width)
+    }
+    if { $color == "auto" || $color == "autoreset" } {
+        if { $color == "autoreset" } {
+            set _nextColorIndex 0
+        }
+        set color [lindex $itk_option(-autocolors) $_nextColorIndex]
+        if { "" == $color} {
+            set color black
+        }
+        # Set up for next auto color
+        incr _nextColorIndex
+        if { $_nextColorIndex >= [llength $itk_option(-autocolors)] } {
+            set _nextColorIndex 0
+        }
+    }
+    # If -brightness is set, then update the color.
+    if { [info exists attrs(-brightness)] } {
+        set brightness $attrs(-brightness)
+        set color [Rappture::color::brightness $color $brightness]
+        set bg [$itk_component(plot) cget -plotbackground]
+        foreach {h s v} [Rappture::color::RGBtoHSV $bg] break
+        if {$v > 0.5} {
+            set color [Rappture::color::brightness_max $color 0.8]
+        } else {
+            set color [Rappture::color::brightness_min $color 0.2]
+        }
+    }
+    set type [$dataobj hints type]
+
+    set elem ""
+    foreach cname [$dataobj components] {
+        set tag $dataobj-$cname
+        set elem $_comp2elem($tag)
+        switch -- $type {
+            "bar" {
+                $g bar configure $elem -foreground $color -background $color \
+                    -hide no
+            }
+            "scatter" {
+                $g line configure $elem -color $color -hide no
+            }
+            default {
+                $g line configure $elem -color $color -hide no \
+                    -linewidth $linewidth
+            }
+        }
+        if { [lsearch $_viewable $elem] < 0 } {
+            lappend _viewable $elem
+        }
+    }
+    if { [$dataobj info class] == "::Rappture::Curve" } {
+        BuildMarkers $dataobj $elem
+    }
+    $_dispatcher event -idle !rebuild
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get
+#
+# Clients use this to query the list of objects being plotted, in
+# order from bottom to top of this result.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::get {} {
+    # put the dataobj list in order according to -raise options
+    set bottom {}
+    set top {}
+    foreach obj $_dlist {
+        if {[info exists _dataobj2raise($obj)] && $_dataobj2raise($obj)} {
+            lappend top $obj
+        } else {
+            lappend bottom $obj
+        }
+    }
+    set _dlist [concat $bottom $top]
+    return $_dlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete ?<dataobj1> <dataobj2> ...?
+#
+# Clients use this to delete a dataobj from the plot.  If no dataobjs
+# are specified, then all dataobjs are deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::delete {args} {
+    set g $itk_component(plot)
+
+    # First try to create list of elements from the dataobjs specified
+    set elemlist {}
+    foreach dataobj $args {
+        foreach cname [$dataobj components] {
+            set tag $dataobj-$cname
+            if { [info exists _comp2elem($tag)] } {
+                lappend elemlist $_comp2elem($tag)
+            }
+        }
+    }
+    # If no dataobjs were specified then hide all elements.
+    if { [llength $elemlist] == 0 } {
+        set elemlist [$g element names]
+    }
+    # Hide all elements specified by their dataobjs
+    foreach elem $elemlist {
+        $g element configure $elem -hide yes
+        set i [lsearch $_viewable $elem]
+        if { $i >= 0 } {
+            set _viewable [lreplace $_viewable $i $i]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: scale ?<dataobj1> <dataobj2> ...?
+#
+# Sets the default limits for the overall plot according to the
+# limits of the data for all of the given <dataobj> objects.  This
+# accounts for all dataobjs--even those not showing on the screen.
+# Because of this, the limits are appropriate for all dataobjs as
+# the user scans through data in the ResultSet viewer.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::scale {args} {
+    set _dlist $args
+    BuildGraph $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: download coming
+# USAGE: download controls <downloadCommand>
+# USAGE: download now
+#
+# Clients use this method to create a downloadable representation
+# of the plot.  Returns a list of the form {ext string}, where
+# "ext" is the file extension (indicating the type of data) and
+# "string" is the data itself.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::download {option args} {
+    switch $option {
+        coming {
+            # nothing to do
+        }
+        controls {
+            set popup .xyresultdownload
+            if {![winfo exists .xyresultdownload]} {
+                # if we haven't created the popup yet, do it now
+                Rappture::Balloon $popup \
+                    -title "[Rappture::filexfer::label downloadWord] as..."
+                set inner [$popup component inner]
+                label $inner.summary -text "" -anchor w
+                pack $inner.summary -side top
+                radiobutton $inner.csv -text "Data as Comma-Separated Values" \
+                    -variable Rappture::XyResult::_downloadPopup(format) \
+                    -value csv
+                pack $inner.csv -anchor w
+                radiobutton $inner.image -text "Image (PS/PDF/PNG/JPEG)" \
+                    -variable Rappture::XyResult::_downloadPopup(format) \
+                    -value image
+                pack $inner.image -anchor w
+                button $inner.go -text [Rappture::filexfer::label download] \
+                    -command [lindex $args 0]
+                pack $inner.go -side bottom -pady 4
+            } else {
+                set inner [$popup component inner]
+            }
+            set num [llength [get]]
+            set num [expr {($num == 1) ? "1 result" : "$num results"}]
+            $inner.summary configure -text "[Rappture::filexfer::label downloadWord] $num in the following format:"
+            update idletasks ;# fix initial sizes
+            return $popup
+        }
+        now {
+            set popup .xyresultdownload
+            if {[winfo exists .xyresultdownload]} {
+                $popup deactivate
+            }
+            switch -- $_downloadPopup(format) {
+                csv {
+                    set dlist ""
+                    set g $itk_component(plot)
+
+                    # Build up a list of download-able dataobjs. Add
+                    # objects that are currently viewable (selected by the
+                    # simulation selector) and visible in the graph
+                    # (selected by the legend).
+                    foreach elem $_viewable {
+                        foreach {dataobj cname} \
+                            [split $_elem2comp($elem) -] break
+
+                        # Build a lookup table of graph elements associated
+                        # with each label. There will be more than one
+                        # element for each entry if there is more than one
+                        # simulation currently being downloaded.
+
+                        set label [$dataobj hints label]
+                        lappend label2elem($label) $elem
+
+                        # Ignore hidden graph elements.
+                        if { [$g element cget $elem -hide] } {
+                            continue
+                        }
+                        lappend dlist $dataobj
+
+                    }
+
+                    # Generate the comma-separated value data for these
+                    # objects.
+                    set csvdata ""
+                    foreach dataobj $dlist {
+                        append csvdata "[string repeat - 60]\n"
+                        append csvdata " [$dataobj hints label]\n"
+                        if { [info exists _dataobj2desc($dataobj)] } {
+                            set indent "for:"
+                            foreach line [split $_dataobj2desc($dataobj) \n] {
+                                append csvdata " $indent $line\n"
+                                set indent "    "
+                            }
+                        }
+                        append csvdata "[string repeat - 60]\n"
+                        set sim $_dataobj2sim($dataobj)
+                        set xlabel [$dataobj hints xlabel]
+                        set ylabel [$dataobj hints ylabel]
+                        set label [$dataobj hints label]
+                        if { [llength $label2elem($label)] > 1 } {
+                            set xlabel [format "%s (\#%d)" $xlabel $sim]
+                            set ylabel [format "%s (\#%d)" $ylabel $sim]
+                        }
+                        append csvdata "$xlabel, $ylabel\n"
+                        set first 1
+                        foreach comp [$dataobj components] {
+                            if {!$first} {
+                                # blank line between components
+                                append csvdata "\n"
+                            }
+                            set xv [$dataobj mesh $comp]
+                            set yv [$dataobj values $comp]
+                            foreach x [$xv range 0 end] y [$yv range 0 end] {
+                                append csvdata [format "%20.15g, %20.15g\n" $x $y]
+                            }
+                            set first 0
+                        }
+                        append csvdata "\n"
+                    }
+                    return [list .txt $csvdata]
+                }
+                image {
+                    set popup .xyprintdownload
+                    if { ![winfo exists $popup] } {
+                        # Create a popup for the print dialog
+                        Rappture::Balloon $popup -title "Save as image..."
+                        set inner [$popup component inner]
+                        # Create the print dialog widget and add it to the
+                        # balloon popup.
+                        Rappture::XyPrint $inner.print
+                        $popup configure \
+                            -deactivatecommand [list $inner.print reset]
+                        blt::table $inner 0,0 $inner.print -fill both
+                    }
+                    update
+                    # Activate the popup and call for the output.
+                    foreach { widget toolName plotName } $args break
+                    $popup activate $widget left
+                    set inner [$popup component inner]
+                    set output [$inner.print print $itk_component(plot) \
+                                    $toolName $plotName]
+                    $popup deactivate
+                    return $output
+                }
+            }
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now"
+        }
+    }
+}
+
+itcl::body Rappture::XyResult::BuildMarkers { dataobj elem } {
+    set g $itk_component(plot)
+
+    set ymin -Inf
+    set ymax Inf
+    set xmax Inf
+    set xmin -Inf
+    foreach m [$dataobj xmarkers] {
+        foreach {at label style} $m break
+        set id [$g marker create line -coords [list $at $ymin $at $ymax]]
+        $g marker bind $id <Enter> \
+            [itcl::code $this EnterMarker $g x-$label $at $ymin $at]
+        $g marker bind $id <Leave> \
+            [itcl::code $this LeaveMarker $g x-$label]
+        set options [GetLineMarkerOptions $style]
+        $g marker configure $id -element $elem
+        if { $options != "" } {
+            eval $g marker configure $id $options
+        }
+        if { $label != "" } {
+            set id [$g marker create text -anchor nw \
+                        -text $label -coords [list $at $ymax]]
+            $g marker configure $id -element $elem
+            set options [GetTextMarkerOptions $style]
+            if { $options != "" } {
+                eval $g marker configure $id $options
+            }
+        }
+    }
+    foreach m [$dataobj ymarkers] {
+        foreach {at label style} $m break
+        set id [$g marker create line -coords [list $xmin $at $xmax $at]]
+        $g marker configure $id -element $elem
+        $g marker bind $id <Enter> \
+            [itcl::code $this EnterMarker $g $label $at $xmin $at]
+        $g marker bind $id <Leave> \
+            [itcl::code $this LeaveMarker $g $label]
+        set options [GetLineMarkerOptions $style]
+        if { $options != "" } {
+            eval $g marker configure $id $options
+        }
+        if { $label != "" } {
+            set id [$g marker create text -anchor se \
+                        -text $label -coords [list $xmax $at]]
+            $g marker configure $id -element $elem
+            set options [GetTextMarkerOptions $style]
+            if { $options != "" } {
+                eval $g marker configure $id $options
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rebuild
+#
+#       Called automatically whenever something changes that affects the
+# data in the widget.  Clears any existing data and rebuilds the
+# widget to display new data.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::Rebuild {} {
+    ResetLegend
+    # Fix raise/lower elements
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ResetLimits
+#
+# Used internally to apply automatic limits to the axes for the
+# current plot.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::ResetLimits {} {
+    set g $itk_component(plot)
+
+    foreach axis [$g axis names] {
+        $g axis configure $axis -min "" -max ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: ResetLegend
+#
+# Used internally to apply automatic limits to the axes for the
+# current plot.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::ResetLegend {} {
+    update idletasks
+
+    set g $itk_component(plot)
+    # Fix duplicate labels by appending the simulation number
+    # Collect the labels from all the viewable elements.
+    set above {}
+    set below {}
+    foreach elem $_viewable {
+        foreach {dataobj cname} [split $_elem2comp($elem) -] break
+        set label [$dataobj hints label]
+        lappend label2elem($label) $elem
+        if { $_dataobj2raise($dataobj) } {
+            lappend $g element raise $elem
+        }
+    }
+    # Then relabel elements with the same label, using the simulation number.
+    foreach label [array names label2elem] {
+        foreach elem $label2elem($label) {
+            if { [llength $label2elem($label)] == 1 } {
+                $g element configure $elem -label $label
+                continue
+            }
+            foreach {dataobj cname} [split $_elem2comp($elem) -] break
+            set sim $_dataobj2sim($dataobj)
+            set elabel [format "%s (\#%d)" $label $sim]
+            $g element configure $elem -label $elabel
+        }
+    }
+    $itk_component(legend) reset $_viewable
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: Zoom reset
+#
+# Called automatically when the user clicks on one of the zoom
+# controls for this widget.  Changes the zoom for the current view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::Zoom {option args} {
+    switch -- $option {
+        reset {
+            ResetLimits
+            Rappture::Logger::log curve zoom -reset
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Hilite <state> <x> <y>
+#
+# Called automatically when the user brushes one of the elements
+# on the plot.  Causes the element to highlight and a tooltip to
+# pop up with element info.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::Hilite {state x y} {
+    set g $itk_component(plot)
+    set elem ""
+
+    # Peek inside of Blt_ZoomStack package to see if we're currently in the
+    # middle of a zoom selection.
+    if {[info exists ::zoomInfo($g,corner)] && $::zoomInfo($g,corner) == "B" } {
+        return;
+    }
+    set tip ""
+    if {$state == "at"} {
+        if {[$g element closest $x $y info -interpolate yes]} {
+            # for dealing with xy line plots
+            set elem $info(name)
+
+            set mapx [$g element cget $elem -mapx]
+            set mapy [$g element cget $elem -mapy]
+
+            # search again for an exact point -- this time don't interpolate
+            set tip ""
+            array unset info
+            if {[$g element closest $x $y info -interpolate no]
+                  && $info(name) == $elem} {
+
+                set x [$g axis transform $mapx $info(x)]
+                set y [$g axis transform $mapy $info(y)]
+                if {[info exists _elem2comp($elem)]} {
+                    foreach {dataobj cname} [split $_elem2comp($elem) -] break
+                    set yunits [$dataobj hints yunits]
+                    set xunits [$dataobj hints xunits]
+                } else {
+                    set xunits ""
+                    set yunits ""
+                }
+                set tip [$g element cget $elem -label]
+                set yval [GetFormattedValue y $g $info(y)]
+                append tip "\n$yval$yunits"
+                set xval [GetFormattedValue x $g $info(x)]
+                append tip " @ $xval$xunits"
+                set tip [string trim $tip]
+            }
+            set state 1
+        } elseif {[$g element closest $x $y info -interpolate no]} {
+            # for dealing with xy scatter plot
+            set elem $info(name)
+
+            set mapx [$g element cget $elem -mapx]
+            set mapy [$g element cget $elem -mapy]
+
+            set tip ""
+            set x [$g axis transform $mapx $info(x)]
+            set y [$g axis transform $mapy $info(y)]
+
+            if {[info exists _elem2comp($elem)]} {
+                foreach {dataobj cname} [split $_elem2comp($elem) -] break
+                set yunits [$dataobj hints yunits]
+                set xunits [$dataobj hints xunits]
+            } else {
+                set xunits ""
+                set yunits ""
+            }
+            set tip [$g element cget $elem -label]
+            set yval [GetFormattedValue y $g $info(y)]
+            append tip "\n$yval$yunits"
+            set xval [GetFormattedValue x $g $info(x)]
+            append tip " @ $xval$xunits"
+            set tip [string trim $tip]
+            set state 1
+        } else {
+            set state 0
+        }
+    }
+
+    if {$state} {
+        #
+        # Highlight ON:
+        # - activate trace
+        # - multiple axes? dim other axes
+        # - pop up tooltip about data
+        #
+        if { [$g element exists $_hilite(elem)] && $_hilite(elem) != $elem } {
+            $g element deactivate $_hilite(elem)
+            $g crosshairs configure -hide yes
+            Rappture::Tooltip::tooltip cancel
+        }
+        $g element activate $elem
+        set _hilite(elem) $elem
+
+        set mapx [$g element cget $elem -mapx]
+        set mapy [$g element cget $elem -mapy]
+        if {[info exists _elem2comp($elem)]} {
+            foreach {dataobj cname} [split $_elem2comp($elem) -] break
+            foreach {mapx mapy} [GetAxes $dataobj] break
+        }
+        set allx [$g x2axis use]
+        if {[llength $allx] > 0} {
+            lappend allx x  ;           # fix main x-axis too
+            foreach axis $allx {
+                if {$axis == $mapx} {
+                    $g axis configure $axis -color $itk_option(-foreground) \
+                        -titlecolor $itk_option(-foreground)
+                } else {
+                    $g axis configure $axis -color $itk_option(-dimcolor) \
+                        -titlecolor $itk_option(-dimcolor)
+                }
+            }
+        }
+        set ally [$g y2axis use]
+        if {[llength $ally] > 0} {
+            lappend ally y  ;           # fix main y-axis too
+            foreach axis $ally {
+                if {$axis == $mapy} {
+                    $g axis configure $axis -color $itk_option(-foreground) \
+                        -titlecolor $itk_option(-foreground)
+                } else {
+                    $g axis configure $axis -color $itk_option(-dimcolor) \
+                        -titlecolor $itk_option(-dimcolor)
+                }
+            }
+        }
+        if {"" != $tip} {
+            $g crosshairs configure -hide no -position @$x,$y
+
+            if {$x > 0.5*[winfo width $g]} {
+                if {$x < 4} {
+                    set tipx "-0"
+                } else {
+                    set tipx "-[expr {$x-20}]"  ;# move tooltip to the left
+                }
+            } else {
+                if {$x < -4} {
+                    set tipx "+0"
+                } else {
+                    set tipx "+[expr {$x+20}]"  ;# move tooltip to the right
+                }
+            }
+            if {$y > 0.5*[winfo height $g]} {
+                if {$y < 4} {
+                    set tipy "-0"
+                } else {
+                    set tipy "-[expr {$y-20}]"  ;# move tooltip to the top
+                }
+            } else {
+                if {$y < -4} {
+                    set tipy "+0"
+                } else {
+                    set tipy "+[expr {$y+20}]"  ;# move tooltip to the bottom
+                }
+            }
+            Rappture::Tooltip::text $g $tip
+            Rappture::Tooltip::tooltip show $g $tipx,$tipy
+            Rappture::Logger::log tooltip -for "curve probe -- [string map [list \n " // "] $tip]"
+        }
+    } else {
+        #
+        # Highlight OFF:
+        # - deactivate (color back to normal)
+        # - put all axes back to normal color
+        # - take down tooltip
+        #
+        if { [$g element exists $_hilite(elem)] } {
+            $g element deactivate $_hilite(elem)
+        }
+        set allx [$g x2axis use]
+        if {[llength $allx] > 0} {
+            lappend allx x  ;# fix main x-axis too
+            foreach axis $allx {
+                $g axis configure $axis -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+            }
+        }
+
+        set ally [$g y2axis use]
+        if {[llength $ally] > 0} {
+            lappend ally y  ;# fix main y-axis too
+            foreach axis $ally {
+                $g axis configure $axis -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+            }
+        }
+
+        $g crosshairs configure -hide yes
+
+        # only cancel in plotting area or we'll mess up axes
+        if {[$g inside $x $y]} {
+            Rappture::Tooltip::tooltip cancel
+        }
+
+        # There is no currently highlighted element
+        set _hilite(elem) ""
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Axis hilite <axis> <state>
+#
+# USAGE: Axis click <axis> <x> <y>
+# USAGE: Axis drag <axis> <x> <y>
+# USAGE: Axis release <axis> <x> <y>
+#
+# Used internally to handle editing of the x/y axes.  The hilite
+# operation causes the axis to light up.  The edit operation pops
+# up a panel with editing options.  The changed operation applies
+# changes from the panel.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::Axis {option args} {
+    switch -- $option {
+        hilite {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"Axis hilite axis state\""
+            }
+            set g $itk_component(plot)
+            set axis [lindex $args 0]
+            set state [lindex $args 1]
+
+            if {$state} {
+                $g axis configure $axis \
+                    -color $itk_option(-activecolor) \
+                    -titlecolor $itk_option(-activecolor)
+
+                set x [expr {[winfo pointerx $g]+4}]
+                set y [expr {[winfo pointery $g]+4}]
+                Rappture::Tooltip::tooltip pending $g-$axis @$x,$y
+            } else {
+                $g axis configure $axis \
+                    -color $itk_option(-foreground) \
+                    -titlecolor $itk_option(-foreground)
+                Rappture::Tooltip::tooltip cancel
+            }
+        }
+        click {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis click axis x y\""
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+            set g $itk_component(plot)
+
+            set _axis(moved) 0
+            set _axis(click-x) $x
+            set _axis(click-y) $y
+            foreach {min max} [$g axis limits $axis] break
+            set _axis(min0) $min
+            set _axis(max0) $max
+            Rappture::Tooltip::tooltip cancel
+        }
+        drag {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis drag axis x y\""
+            }
+            if {![info exists _axis(moved)]} {
+                return  ;# must have skipped click event -- ignore
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+            set g $itk_component(plot)
+
+            if {[info exists _axis(click-x)] && [info exists _axis(click-y)]} {
+                foreach {x0 y0 pw ph} [$g extents plotarea] break
+                switch -glob $axis {
+                  x* {
+                    set pix $x
+                    set pix0 $_axis(click-x)
+                    set pixmin $x0
+                    set pixmax [expr {$x0+$pw}]
+                  }
+                  y* {
+                    set pix $y
+                    set pix0 $_axis(click-y)
+                    set pixmin [expr {$y0+$ph}]
+                    set pixmax $y0
+                  }
+                }
+                set log [$g axis cget $axis -logscale]
+                set min $_axis(min0)
+                set max $_axis(max0)
+                set dpix [expr {abs($pix-$pix0)}]
+                set v0 [$g axis invtransform $axis $pixmin]
+                set v1 [$g axis invtransform $axis [expr {$pixmin+$dpix}]]
+                if {$log} {
+                    set v0 [expr {log10($v0)}]
+                    set v1 [expr {log10($v1)}]
+                    set min [expr {log10($min)}]
+                    set max [expr {log10($max)}]
+                }
+
+                if {$pix > $pix0} {
+                    set delta [expr {$v1-$v0}]
+                } else {
+                    set delta [expr {$v0-$v1}]
+                }
+                set min [expr {$min-$delta}]
+                set max [expr {$max-$delta}]
+                if {$log} {
+                    set min [expr {pow(10.0,$min)}]
+                    set max [expr {pow(10.0,$max)}]
+                }
+                $g axis configure $axis -min $min -max $max
+
+                # move axis, don't edit on release
+                set _axis(move) 1
+            }
+        }
+        release {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"Axis release axis x y\""
+            }
+            if {![info exists _axis(moved)]} {
+                return  ;# must have skipped click event -- ignore
+            }
+            set axis [lindex $args 0]
+            set x [lindex $args 1]
+            set y [lindex $args 2]
+
+            if {!$_axis(moved)} {
+                # small movement? then treat as click -- pop up axis editor
+                set dx [expr {abs($x-$_axis(click-x))}]
+                set dy [expr {abs($y-$_axis(click-y))}]
+                if {$dx < 2 && $dy < 2} {
+                    ShowAxisPopup $axis
+                    return
+                }
+            }
+            # one last movement
+            Axis drag $axis $x $y
+
+            # log this change
+            Rappture::Logger::log curve axis $axis \
+                -drag [$itk_component(plot) axis limits $axis]
+
+            catch {unset _axis}
+        }
+        default {
+            error "bad option \"$option\": should be hilite"
+        }
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: GetLineMarkerOptions <style>
+#
+# Used internally to create a list of configuration options specific to the
+# axis line marker.  The input is a list of name value pairs.  Options that
+# are not recognized are ignored.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::GetLineMarkerOptions {style} {
+    array set lineOptions {
+        "-color"  "-outline"
+        "-dashes" "-dashes"
+        "-linecolor" "-outline"
+        "-linewidth" "-linewidth"
+    }
+    set options {}
+    foreach {name value} $style {
+        if { [info exists lineOptions($name)] } {
+            lappend options $lineOptions($name) $value
+        }
+    }
+    return $options
+}
+
+# ----------------------------------------------------------------------
+# USAGE: GetTextMarkerOptions <style>
+#
+# Used internally to create a list of configuration options specific to the
+# axis text marker.  The input is a list of name value pairs.  Options that
+# are not recognized are ignored.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::GetTextMarkerOptions {style} {
+    array set textOptions {
+        "-color"        "-outline"
+        "-textcolor"    "-outline"
+        "-font"         "-font"
+        "-xoffset"      "-xoffset"
+        "-yoffset"      "-yoffset"
+        "-anchor"       "-anchor"
+        "-rotate"       "-rotate"
+    }
+    set options {}
+    foreach {name value} $style {
+        if { [info exists textOptions($name)] } {
+            lappend options $textOptions($name) $value
+        }
+    }
+    return $options
+}
+
+# ----------------------------------------------------------------------
+# USAGE: GetAxes <dataobj>
+#
+# Used internally to figure out the axes used to plot the given
+# <dataobj>.  Returns a list of the form {x y}, where x is the
+# x-axis name (x, x2, x3, etc.), and y is the y-axis name.
+# ----------------------------------------------------------------------
+itcl::body Rappture::XyResult::GetAxes {dataobj} {
+    set xlabel [$dataobj hints xlabel]
+    if {[info exists _label2axis($xlabel)]} {
+        set mapx $_label2axis($xlabel)
+    } else {
+        set mapx "x"
+    }
+
+    set ylabel [$dataobj hints ylabel]
+    if {[info exists _label2axis($ylabel)]} {
+        set mapy $_label2axis($ylabel)
+    } else {
+        set mapy "y"
+    }
+    return [list $mapx $mapy]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -gridcolor
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::XyResult::gridcolor {
+    if {"" == $itk_option(-gridcolor)} {
+        $itk_component(plot) grid off
+    } else {
+        $itk_component(plot) grid configure -color $itk_option(-gridcolor)
+        $itk_component(plot) grid on
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -autocolors
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::XyResult::autocolors {
+    foreach c $itk_option(-autocolors) {
+        if {[catch {winfo rgb $itk_component(hull) $c}]} {
+            error "bad color \"$c\""
+        }
+    }
+        incr _nextColorIndex
+    if {$_nextColorIndex >= [llength $itk_option(-autocolors)]} {
+        set _nextColorIndex 0
+    }
+}
+
+itcl::body Rappture::XyResult::EnterMarker { g name x y text } {
+    LeaveMarker $g $name
+    set id [$g marker create text \
+                -coords [list $x $y] \
+                -yoffset -1 \
+                -anchor s \
+                -text $text]
+    set _markers($name) $id
+}
+
+itcl::body Rappture::XyResult::LeaveMarker { g name } {
+    if { [info exists _markers($name)] } {
+        set id $_markers($name)
+        $g marker delete $id
+        unset _markers($name)
+    }
+}
+
+#
+# SetAxis --
+#
+#       Configures the graph axis with the designated setting using
+#       the currently stored value.  User-configurable axis settings
+#       are stored in the _axisPopup variable or in the widgets. This
+#       routine syncs the graph with that setting.
+#
+itcl::body Rappture::XyResult::SetAxis { setting } {
+    set g $itk_component(plot)
+    set axis $_axisPopup(axis)
+    switch -- $setting {
+        "logscale" {
+            set bool $_axisPopup(logscale)
+            $g axis configure $axis -logscale $bool
+        }
+        "loose" {
+            set bool $_axisPopup(loose)
+            $g axis configure $axis -loose $bool
+        }
+        "range" {
+            set auto $_axisPopup(auto)
+            set _axisPopup($axis-auto) $auto
+            if { $auto } {
+                # Set the axis range automatically
+                $g axis configure $axis -min "" -max ""
+            } else {
+                # Set the axis range from the entry values.
+                set label $_axisPopup(label)
+                set min $_axisPopup(${label}-min)
+                set max $_axisPopup(${label}-max)
+                $g axis configure $axis -min $min -max $max
+            }
+            SetAxisRangeState $axis
+        }
+        "format" {
+            set inner [$itk_component(hull).axes component inner]
+            set format [$inner.format translate [$inner.format value]]
+            set _axisPopup($axis-format) $format
+
+            # Force the graph to reformat the ticks
+            set min [$itk_component(plot) axis cget $axis -min]
+            $g axis configure $axis -min $min
+        }
+        "label" {
+            set label $_axisPopup(label)
+            $g axis configure $axis -title $label
+        }
+        "min" {
+            set min $_axisPopup(min)
+            if { [catch { $g axis configure $axis -min $min } msg] != 0 } {
+                set inner [$itk_component(hull).axes component inner]
+                Rappture::Tooltip::cue $inner.max $msg
+                bell
+                return
+            }
+            set label $_axisPopup(label)
+            set _axisPopup(${label}-min) $min
+        }
+        "max" {
+            set max $_axisPopup(max)
+            if { [catch { $g axis configure $axis -max $max } msg] != 0 } {
+                set inner [$itk_component(hull).axes component inner]
+                Rappture::Tooltip::cue $inner.max $msg
+                bell
+                return
+            }
+            set label $_axisPopup(label)
+            set _axisPopup(${label}-max) $max
+        }
+    }
+}
+
+#
+# SetAxisRangeState --
+#
+#       Sets the state of widgets controlling the axis range based
+#       upon whether the automatic or manual setting.  If the
+#       axis is configure to be automatic, the manual setting widgets
+#       are disabled.  And vesa-versa the automatic setting widgets
+#       are dsiabled if the axis is manual.
+#
+itcl::body Rappture::XyResult::SetAxisRangeState { axis } {
+    set inner [$itk_component(hull).axes component inner]
+    set g $itk_component(plot)
+
+    if { $_axisPopup(auto) } {
+        foreach {min max} [$g axis limits $axis] break
+        $inner.minl configure -state disabled
+        $inner.min configure -state disabled
+        $inner.maxl configure -state disabled
+        $inner.max configure -state disabled
+        $inner.loose configure -state normal
+        $inner.tight configure -state normal
+    } else {
+        foreach {min max} [$g axis limits $axis] break
+        $inner.minl configure -state normal
+        $inner.min configure -state normal
+        set _axisPopup(min) [$g axis cget $axis -min]
+        $inner.maxl configure -state normal
+        $inner.max configure -state normal
+        set _axisPopup(max) [$g axis cget $axis -max]
+        $inner.loose configure -state disabled
+        $inner.tight configure -state disabled
+    }
+}
+
+#
+# BuildAxisPopup --
+#
+#       Creates the popup balloon dialog for axes. This routine is
+#       called only once the first time the user clicks to bring up
+#       an axis dialog.  It is reused for all other axes.
+#
+itcl::body Rappture::XyResult::BuildAxisPopup { popup } {
+    Rappture::Balloon $popup -title "Axis Options"
+    set inner [$itk_component(hull).axes component inner]
+
+    label $inner.labell -text "Label:"
+    entry $inner.label \
+        -width 15 -highlightbackground $itk_option(-background) \
+        -textvariable [itcl::scope _axisPopup(label)]
+
+    bind $inner.label <Return>   [itcl::code $this SetAxis label]
+    bind $inner.label <KP_Enter> [itcl::code $this SetAxis label]
+    bind $inner.label <FocusOut> [itcl::code $this SetAxis label]
+
+    label $inner.formatl -text "Format:"
+    Rappture::Combobox $inner.format -width 15 -editable no
+    $inner.format choices insert end \
+        "%.6g"  "Auto"         \
+        "%.0f"  "X"          \
+        "%.1f"  "X.X"          \
+        "%.2f"  "X.XX"         \
+        "%.3f"  "X.XXX"        \
+        "%.6f"  "X.XXXXXX"     \
+        "%.1e"  "X.Xe+XX"      \
+        "%.2e"  "X.XXe+XX"     \
+        "%.3e"  "X.XXXe+XX"    \
+        "%.6e"  "X.XXXXXXe+XX"
+
+    bind $inner.format <<Value>> [itcl::code $this SetAxis format]
+
+    label $inner.rangel -text "Axis Range:"
+    radiobutton $inner.auto -text "Automatic" \
+        -variable [itcl::scope _axisPopup(auto)] -value 1 \
+        -command [itcl::code $this SetAxis range]
+    radiobutton $inner.manual -text "Manual" \
+        -variable [itcl::scope _axisPopup(auto)] -value 0 \
+        -command [itcl::code $this SetAxis range]
+
+    radiobutton $inner.loose -text "loose" \
+        -variable [itcl::scope _axisPopup(loose)] -value 1 \
+        -command [itcl::code $this SetAxis loose]
+    radiobutton $inner.tight -text "tight" \
+        -variable [itcl::scope _axisPopup(loose)] -value 0 \
+        -command [itcl::code $this SetAxis loose]
+
+    label $inner.minl -text "min"
+    entry $inner.min \
+        -width 15 -highlightbackground $itk_option(-background) \
+        -textvariable [itcl::scope _axisPopup(min)]
+    bind $inner.min <Return> [itcl::code $this SetAxis min]
+    bind $inner.min <KP_Enter> [itcl::code $this SetAxis min]
+    bind $inner.min <FocusOut> [itcl::code $this SetAxis min]
+
+    label $inner.maxl -text "max"
+    entry $inner.max \
+        -width 15 -highlightbackground $itk_option(-background) \
+        -textvariable [itcl::scope _axisPopup(max)]
+    bind $inner.max <Return> [itcl::code $this SetAxis max]
+    bind $inner.max <KP_Enter> [itcl::code $this SetAxis max]
+    bind $inner.max <FocusOut> [itcl::code $this SetAxis max]
+
+
+    label $inner.scalel -text "Scale:"
+    radiobutton $inner.linear -text "linear" \
+        -variable [itcl::scope _axisPopup(logscale)] -value 0 \
+        -command [itcl::code $this SetAxis logscale]
+    radiobutton $inner.log -text "logarithmic" \
+        -variable [itcl::scope _axisPopup(logscale)] -value 1 \
+        -command [itcl::code $this SetAxis logscale]
+
+    blt::table $inner \
+        0,0 $inner.labell -anchor w \
+        0,1 $inner.label -anchor w -fill x  -cspan 3 \
+        1,0 $inner.formatl -anchor w \
+        1,1 $inner.format -anchor w -fill x  -cspan 3 \
+        2,0 $inner.scalel -anchor w \
+        2,2 $inner.linear -anchor w \
+        2,3 $inner.log -anchor w \
+        3,0 $inner.rangel -anchor w \
+        4,0 $inner.manual -anchor w -padx 4 \
+        4,2 $inner.minl -anchor e \
+        4,3 $inner.min -anchor w \
+        5,2 $inner.maxl -anchor e \
+        5,3 $inner.max -anchor w \
+        6,0 $inner.auto -anchor w -padx 4 \
+        6,2 $inner.tight -anchor w \
+        6,3 $inner.loose -anchor w \
+
+
+    blt::table configure $inner r2 -pady 4
+    blt::table configure $inner c1 -width 20
+    update
+}
+
+#
+# ShowAxisPopup --
+#
+#       Displays the axis dialog for an axis.  It initializes the
+#       _axisInfo variables for that axis if necessary.
+#
+itcl::body Rappture::XyResult::ShowAxisPopup { axis } {
+    set g $itk_component(plot)
+    set popup $itk_component(hull).axes
+
+    if { ![winfo exists $popup] } {
+        BuildAxisPopup $popup
+    }
+    set _axisPopup(axis)     $axis
+    set _axisPopup(label)    [$g axis cget $axis -title]
+    set _axisPopup(logscale) [$g axis cget $axis -logscale]
+    set _axisPopup(loose)    [$g axis cget $axis -loose]
+    if { ![info exists _axisPopup($axis-format)] } {
+        set inner [$itk_component(hull).axes component inner]
+        set _axisPopup($axis-format) "%.6g"
+        set fmts [$inner.format choices get -value]
+        set i [lsearch -exact $fmts $_axisPopup($axis-format)]
+        if {$i < 0} { set i 0 }  ;# use Auto choice
+        $inner.format value [$inner.format choices get -label $i]
+    }
+    foreach {min max} [$g axis limits $axis] break
+    if { $_axisPopup(logscale) } {
+        set type "log"
+    } else {
+        set type "lin"
+    }
+    set amin ""
+    set label $_axisPopup(label)
+    if { [info exists _limits(${label}-min)] } {
+        set amin $_limits(${label}-min)
+    }
+    set amax ""
+    if { [info exists _limits(${label}-max)] } {
+        set amax $_limits(${label}-max)
+    }
+    set auto 1
+    if { $amin != "" || $amax != "" } {
+        set auto 0
+    }
+    if { ![info exists _axisPopup($axis-auto)] } {
+        set _axisPopup($axis-auto) $auto;# Defaults to automatic
+    }
+    set _axisPopup(auto)  $_axisPopup($axis-auto)
+    SetAxisRangeState $axis
+    if { ![info exists _axisPopup(${label}-min)] } {
+        if { $amin != "" } {
+            set _axisPopup(${label}-min) $amin
+            set _axisPopup(min)   $_axisPopup(${label}-min)
+            SetAxis min
+        } else {
+            set _axisPopup(${label}-min) $min
+        }
+    }
+    if { ![info exists _axisPopup(${label}-max)] } {
+        if { $amax != "" } {
+            set _axisPopup(${label}-max) $amax
+            set _axisPopup(max)   $_axisPopup(${label}-max)
+            SetAxis max
+        } else {
+            set _axisPopup(${label}-max) $max
+        }
+    }
+    set _axisPopup(min)  $_axisPopup(${label}-min)
+    set _axisPopup(max)  $_axisPopup(${label}-max)
+    set _axisPopup(axis) $axis
+
+    #
+    # Figure out where the window should pop up.
+    #
+    set x [winfo rootx $g]
+    set y [winfo rooty $g]
+    set w [winfo width $g]
+    set h [winfo height $g]
+    foreach {x0 y0 pw ph} [$g extents plotarea] break
+    switch -glob -- $axis {
+        x {
+            set x [expr {round($x + $x0+0.5*$pw)}]
+            set y [expr {round($y + $y0+$ph + 0.5*($h-$y0-$ph))}]
+            set dir "above"
+        }
+        x* {
+            set x [expr {round($x + $x0+0.5*$pw)}]
+            set dir "below"
+            set allx [$itk_component(plot) x2axis use]
+            set max [llength $allx]
+            set i [lsearch -exact $allx $axis]
+            set y [expr {round($y + ($i+0.5)*$y0/double($max))}]
+        }
+        y {
+            set x [expr {round($x + 0.5*$x0)}]
+            set y [expr {round($y + $y0+0.5*$ph)}]
+            set dir "right"
+        }
+        y* {
+            set y [expr {round($y + $y0+0.5*$ph)}]
+            set dir "left"
+            set ally [$g y2axis use]
+            set max [llength $ally]
+            set i [lsearch -exact $ally $axis]
+            set y [expr {round($y + ($i+0.5)*$y0/double($max))}]
+            set x [expr {round($x+$x0+$pw + ($i+0.5)*($w-$x0-$pw)/double($max))}]
+        }
+    }
+    $popup activate @$x,$y $dir
+}
+
+#
+# GetFormattedValue --
+#
+#       Callback routine for the axis format procedure.  It formats the
+#       axis tick label according to the selected format.  This routine
+#       is also used to format tooltip values.
+#
+itcl::body Rappture::XyResult::GetFormattedValue { axis g value } {
+    if { [$g axis cget $axis -logscale] ||
+         ![info exists _axisPopup($axis-format)] } {
+        set fmt "%.6g"
+    } else {
+        set fmt $_axisPopup($axis-format)
+    }
+    return [format $fmt $value]
+}
+
+
+#
+# BuildGraph --
+#
+#       This procedure loads each data objects specified into the
+#       graph.  The data object may already be loaded (from the "add"
+#       method which gets called first).   The graph elements that
+#       are created, are hidden.  This allows the graph to account
+#       for all datasets, even those not currently being displayed.
+#
+itcl::body Rappture::XyResult::BuildGraph { dlist } {
+    set g $itk_component(plot)
+
+    foreach label [array names _label2axis] {
+        set axis $_label2axis($label)
+        switch -- $axis {
+            "x" - "x2" - "y" - "y2" {
+                $g axis configure $axis -hide yes -checklimits no
+            }
+            default {
+                $g axis delete $axis
+            }
+        }
+    }
+    array unset _label2axis
+    array unset _limits
+
+    # Scan through all objects and create a list of all axes.
+    # The first x-axis gets mapped to "x".  The second, to "x2".
+    # Beyond that, we must create new axes "x3", "x4", etc.
+    # We do the same for y.
+
+    set anum(x) 0
+    set anum(y) 0
+    foreach dataobj $dlist {
+        foreach axis {x y} {
+            set label [$dataobj hints ${axis}label]
+            if { $label == "" } {
+                continue
+            }
+            # Collect the limits (if set for the axis)
+            set min [$dataobj hints ${axis}min]
+            set max [$dataobj hints ${axis}max]
+            set tag ${label}-min
+            if { $min != "" && ( ![info exists _limits($tag)] ||
+                                   $_limits($tag) > $min ) } {
+                set _limits($tag) $min
+            }
+            set tag ${label}-max
+            if { $max != "" && (![info exists _limits($tag)] ||
+                                  $_limits($tag) < $max) } {
+                set _limits($tag) $max
+            }
+            if  { [$dataobj hints ${axis}scale] == "log" } {
+                set tag ${label}-log
+                set _limits($tag) 1
+            }
+            if { ![info exists _label2axis($label)] } {
+                switch [incr anum($axis)] {
+                    1 { set axisName $axis }
+                    2 { set axisName ${axis}2 }
+                    default {
+                        set axis $axis$anum($axis)
+                        catch {$g axis create $axisName}
+                    }
+                }
+                $g axis configure $axisName -title $label -hide no \
+                    -checklimits no -showticks yes
+                set _label2axis($label) $axisName
+
+                # If this axis has a description, add it as a tooltip
+                set desc [string trim [$dataobj hints ${axis}desc]]
+                Rappture::Tooltip::text $g-$axisName $desc
+            }
+        }
+    }
+    # Next, set the axes based on what we've found.
+    foreach label [array names _label2axis] {
+        set logscale [info exists _limits(${label}-log)]
+        set amin ""
+        if { [info exists _limits(${label}-min)] } {
+            set amin $_limits(${label}-min)
+        }
+        set amax ""
+        if { [info exists _limits(${label}-max)] } {
+            set amax $_limits(${label}-max)
+        }
+        set axis $_label2axis($label)
+        $g axis configure $axis \
+            -hide no -checklimits no \
+            -command [itcl::code $this GetFormattedValue $axis] \
+            -min $amin -max $amax -logscale $logscale
+        $g axis bind $axis <Enter> \
+            [itcl::code $this Axis hilite $axis on]
+        $g axis bind $axis <Leave> \
+            [itcl::code $this Axis hilite $axis off]
+        $g axis bind $axis <ButtonPress-1> \
+            [itcl::code $this Axis click $axis %x %y]
+        $g axis bind $axis <B1-Motion> \
+            [itcl::code $this Axis drag $axis %x %y]
+        $g axis bind $axis <ButtonRelease-1> \
+            [itcl::code $this Axis release $axis %x %y]
+        $g axis bind $axis <KeyPress> \
+            [list ::Rappture::Tooltip::tooltip cancel]
+    }
+
+    foreach dataobj $dlist {
+        SetElements $dataobj
+    }
+    ResetLegend
+}
+
+#
+# SetElements --
+#
+#       This procedure loads each data objects specified into the
+#       graph.  The data object may already be loaded (from the "add"
+#       method which gets called first).   The graph elements that
+#       are created, are hidden.  This allows the graph to account
+#       for all datasets, even those not currently being displayed.
+#
+itcl::body Rappture::XyResult::SetElements { dataobj {settings ""} } {
+    set g $itk_component(plot)
+
+    array set attrs [$dataobj hints style]
+    array set attrs $settings
+    set type [$dataobj hints type]
+    if { $type == "" } {
+        set type "line"
+    }
+
+    # Now fix attributes to a more usable form for the graph.
+
+    # Convert -linestyle to BLT -dashes
+    if { ![info exists attrs(-linestyle)] } {
+        set dashes {}
+    } else {
+        switch -- $attrs(-linestyle) {
+            dashed  { set dashes {4 4} }
+            dotted  { set dashes {2 4} }
+            default { set dashes {}    }
+        }
+    }
+    if { ![info exists attrs(-barwidth)] } {
+        set barwidth 1.0
+    } else {
+        set barwidth $attrs(-barwidth)
+    }
+    if { ![info exists attrs(-width)] } {
+        set linewidth 1
+    } else {
+        set linewidth $attrs(-width)
+    }
+    set _dataobj2raise($dataobj) [info exists attrs(-raise)]
+    if { ![info exists attrs(-simulation)] } {
+        set sim 0
+    } else {
+        set sim $attrs(-simulation)
+    }
+    set _dataobj2sim($dataobj) $sim
+
+    foreach {mapx mapy} [GetAxes $dataobj] break
+    set label [$dataobj hints label]
+
+    foreach cname [$dataobj components] {
+        set tag $dataobj-$cname
+        set xv [$dataobj mesh $cname]
+        set yv [$dataobj values $cname]
+        set xev [$dataobj xErrorValues $cname]
+        set yev [$dataobj yErrorValues $cname]
+        if {([$xv length] <= 1) || ($linewidth == 0)} {
+            set sym square
+            set pixels 2
+        } else {
+            set sym ""
+            set pixels 6
+        }
+        if { ![info exists _comp2elem($tag)] } {
+            set elem "$type[incr _nextElement]"
+            set _elem2comp($elem) $tag
+            set _comp2elem($tag) $elem
+            set found($_comp2elem($tag)) 1
+            lappend label2elem($label) $elem
+            switch -- $type {
+                "line" {
+                    $g line create $elem \
+                        -x $xv -y $yv \
+                        -symbol $sym \
+                        -pixels $pixels \
+                        -linewidth $linewidth \
+                        -label $label \
+                        -dashes $dashes \
+                        -mapx $mapx \
+                        -mapy $mapy \
+                        -hide yes \
+                        -xerror $xev -yerror $yev
+                }
+                "scatter" {
+                    $g line create $elem \
+                        -x $xv -y $yv \
+                        -symbol square \
+                        -pixels 2 \
+                        -linewidth 0 \
+                        -label $label \
+                        -dashes $dashes \
+                        -mapx $mapx \
+                        -mapy $mapy \
+                        -hide yes \
+                        -xerror $xev -yerror $yev
+                }
+                "bar" {
+                    $g bar create $elem \
+                        -x $xv -y $yv \
+                        -barwidth $barwidth \
+                        -label $label \
+                        -mapx $mapx \
+                        -mapy $mapy \
+                        -hide yes \
+                        -xerror $xev -yerror $yev
+                }
+            }
+        } else {
+            $g element configure $_comp2elem($tag) -mapx $mapx -mapy $mapy
+        }
+    }
+}
+
Index: /tags/1.6.0/gui/src/Makefile.in
===================================================================
--- /tags/1.6.0/gui/src/Makefile.in	(revision 6168)
+++ /tags/1.6.0/gui/src/Makefile.in	(revision 6168)
@@ -0,0 +1,109 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+SHELL           = @SHELL@
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CXX             = @CXX@
+CC              = @CC@
+CFLAGS_DEBUG    = @TCL_CFLAGS_DEBUG@ -Wall
+CFLAGS_OPTIMIZE = @TCL_CFLAGS_OPTIMIZE@
+STLIB_LD        = @TCL_STLIB_LD@
+SHLIB_LD        = @TCL_SHLIB_LD@
+SHLIB_CFLAGS    = @TCL_SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @TCL_SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @TCL_SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @TCL_CFLAGS_DEFAULT@
+LIB_RUNTIME_DIR = @LIB_RUNTIME_DIR@
+CFLAGS          = @CFLAGS@ -fPIC
+TCL_SRC_DIR     = @TCL_SRC_DIR@
+TCL_VERSION     = @TCL_VERSION@
+TCL_LIB_SPEC    = @TCL_LIB_SPEC@
+TK_SRC_DIR      = @TK_SRC_DIR@
+TK_LIB_SPEC     = @TK_LIB_SPEC@
+TK_XLIBSW       = @TK_XLIBSW@
+TCLTK_INCLUDES  = -I$(TCL_SRC_DIR)/generic -I$(TK_SRC_DIR)/generic -I$(TK_SRC_DIR)/unix
+VTK_VERSION     = @VTK_VERSION@
+VTK_TCL_DIR     = @VTK_TCL_DIR@
+ENABLE_VTK      = @ENABLE_VTK@
+ENABLE_VTK_DICOM= @ENABLE_VTK_DICOM@
+VTK_LIB_SPEC    = 
+
+CC_SWITCHES     = $(SHLIB_CFLAGS) $(CFLAGS) $(CFLAGS_DEBUG) $(INCLUDES) $(DEFINES)
+CXX_SWITCHES    = $(SHLIB_CFLAGS) $(CFLAGS) $(CFLAGS_DEBUG) $(INCLUDES) $(DEFINES)
+
+INCLUDES	= -I$(srcdir) \
+		  -I$(includedir)
+version 	= @PACKAGE_VERSION@
+DEFINES 	= -DPACKAGE_VERSION=\"$(version)\"
+
+RANLIB 		= @RANLIB@
+AR 		= ar
+VPATH		= $(srcdir)
+RM		= rm -f
+
+CDEBUGFLAGS     = -g -Wall
+
+LIBS		= \
+		-L$(libdir) $(VTK_LIB_SPEC) $(TCL_LIB_SPEC) $(TK_LIB_SPEC) $(TK_XLIBSW) -lm
+
+OBJS 		= \
+		RapptureGUI_Init.o \
+		RpCanvHotspot.o \
+		RpCanvPlacard.o \
+		RpDiffview.o \
+		RpDxToVtk.o \
+		RpPdbToVtk.o \
+		RpReadPoints.o \
+		RpListbox.o \
+		RpSqueezer.o
+
+ifeq ($(ENABLE_VTK),yes)
+  INCLUDES += -I$(includedir)/vtk-$(VTK_VERSION)
+  OBJS += RpDicomToVtk.o
+  VTK_LIB_SPEC += -lvtkIOCore-$(VTK_VERSION) -lvtkIOLegacy-$(VTK_VERSION) -lvtkIOImage-$(VTK_VERSION) -lvtkCommonCore-$(VTK_VERSION)
+  DEFINES      += -DENABLE_VTK
+
+  ifeq ($(ENABLE_VTK_DICOM),yes)
+    VTK_LIB_SPEC += -lvtkDICOM
+    DEFINES      += -DENABLE_VTK_DICOM -DUSE_VTK_DICOM_PACKAGE
+  endif
+endif
+
+
+name		= RapptureGUI$(version)
+libname 	= $(name)
+lib		= $(libname)$(SHLIB_SUFFIX)
+destdir		= $(libdir)/$(name)
+
+all: $(lib)
+
+$(lib): $(OBJS)
+	$(SHLIB_LD) $(SHLIB_LDFLAGS) -o $@ $(OBJS) \
+		$(LIB_SEARCH_DIRS) $(LIBS) 
+
+install: $(lib)
+	$(MKDIR_P) $(destdir)
+	$(INSTALL) -m 555 $(lib) $(destdir) 
+
+RpListbox.o: RpListbox.c
+	$(CC) $(CC_SWITCHES) $(TCLTK_INCLUDES) -c $? 
+.cc.o:
+	$(CXX) $(CXX_SWITCHES) -c $?
+.c.o:
+	$(CC) $(CC_SWITCHES) -c $? 
+
+clean: 
+	$(RM) $(OBJS) $(lib)
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/gui/src/RapptureGUI_Init.c
===================================================================
--- /tags/1.6.0/gui/src/RapptureGUI_Init.c	(revision 6168)
+++ /tags/1.6.0/gui/src/RapptureGUI_Init.c	(revision 6168)
@@ -0,0 +1,82 @@
+/*
+ * ----------------------------------------------------------------------
+ *  RapptureGUI_Init
+ *
+ *  This file contains the function that initializes all of the various
+ *  extensions in this package.
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <tcl.h>
+#include <tk.h>
+
+#ifdef BUILD_rappture
+#undef TCL_STORAGE_CLASS
+#define TCL_STORAGE_CLASS DLLEXPORT
+#endif
+
+extern Tcl_AppInitProc Rappturegui_Init;
+extern Tcl_AppInitProc RpCanvHotspot_Init;
+extern Tcl_AppInitProc RpCanvPlacard_Init;
+extern Tcl_AppInitProc RpDiffview_Init;
+extern Tcl_AppInitProc RpListbox_Init;
+extern Tcl_AppInitProc RpReadPoints_Init;
+extern Tcl_AppInitProc RpSqueezer_Init;
+
+extern Tcl_AppInitProc RpDxToVtk_Init;
+extern Tcl_AppInitProc RpPdbToVtk_Init;
+#ifdef ENABLE_VTK
+extern Tcl_AppInitProc RpDicomToVtk_Init;
+#endif
+
+#ifdef BUILD_Rappture
+__declspec( dllexport )
+#endif
+
+int
+Rappturegui_Init( Tcl_Interp * interp)
+{
+    if (Tcl_InitStubs(interp, "8.4", 0) == NULL) {
+        return TCL_ERROR;
+    }
+    if (Tk_InitStubs(interp, "8.4", 0) == NULL) {
+        return TCL_ERROR;
+    }
+    if (RpDiffview_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpCanvPlacard_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpListbox_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpReadPoints_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpSqueezer_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpCanvHotspot_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpDxToVtk_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpPdbToVtk_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+#ifdef ENABLE_VTK
+    if (RpDicomToVtk_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+#endif
+    return TCL_OK;
+}
+
Index: /tags/1.6.0/gui/src/RpCanvHotspot.c
===================================================================
--- /tags/1.6.0/gui/src/RpCanvHotspot.c	(revision 6168)
+++ /tags/1.6.0/gui/src/RpCanvHotspot.c	(revision 6168)
@@ -0,0 +1,1846 @@
+
+/*
+ * ----------------------------------------------------------------------
+ *  RpCanvHotspot - canvas item with text and background box
+ *
+ *  This canvas item makes it easy to create a box with text inside.
+ *  The box is normally stretched around the text, but can be given
+ *  a max size and causing text to be clipped.
+ *
+ *    .c create hotspot <x> <y> -anchor <nsew> \
+ *        -text <text>         << text to be displayed
+ *        -font <name>         << font used for text
+ *        -image <image>       << image displayed on the right of text
+ *        -maxwidth <size>     << maximum size
+ *        -textcolor <color>   << text color
+ *        -substtextcolor <color>   << substituted text color
+ *        -background <color>  << fill for rect behind text
+ *        -outline <color>     << outline around text
+ *        -borderwidth <size>  << for 3D border
+ *        -relief <value>      << for 3D border (drawn under -outline)
+ *        -tags <taglist>      << usual Tk canvas tags
+ *	  -interp interp	Interpreter containing substitution variables.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <string.h>
+#include <math.h>
+#include "tk.h"
+
+#define SEGMENT_TEXT	0
+#define SEGMENT_VALUE	1
+#define VAR_FLAGS (TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS)
+
+#define REDRAW_PENDING		(1<<0)
+#define LAYOUT_PENDING		(1<<1)
+#define SUBSTITUTIONS_PENDING	(1<<2)
+
+#define TRUE		1
+#define FALSE		0
+#undef MAX
+#define MAX(a,b)	(((a)>(b))?(a):(b))
+
+#undef ROUND
+#define ROUND(x) 	((int)(((double)(x)) + (((x)<0.0) ? -0.5 : 0.5)))
+
+#define IMAGE_PAD	3
+#define TEXT_PADX	3
+#define TEXT_PADY	1
+
+typedef struct _ItemSegment ItemSegment;
+typedef struct _HotspotItem HotspotItem;
+
+/*
+ * ItemSegment 
+ *
+ */
+struct _ItemSegment {
+    HotspotItem *itemPtr;
+    ItemSegment *nextPtr;
+    int type;				/* Image, normal text, or substituted
+					 * value. */
+    short int x, y;			/* Location of segment on canvas. */
+    short int width, height;		/* Dimension of segment. */
+    Tk_TextLayout layout;		/* Layout of normal or substituted 
+					 * value */
+    int length;				/* # of bytes in below string. */
+    int lineNum;			/* Line where segment if located. */
+    char *value;			/* Substitututed value. */
+    char text[1];
+};
+
+/*
+ * Record for each hotspot item:
+ */
+struct _HotspotItem  {
+    Tk_Item base;			/* Generic stuff that's the same for
+					 * all types.  MUST BE FIRST IN
+					 * STRUCTURE. */
+    unsigned int flags;
+    Tcl_Interp *interp;			/* Interp that owns this item */
+    Display *display;
+    Tk_Window tkwin;			/* Window that represents this
+					 * canvas */
+    Tk_Canvas canvas;			/* Canvas that owns this item */
+
+    /*
+     * Fields that are set by widget commands other than "configure":
+     */
+    double x, y;			/* Positioning point for item. This in
+					 * conjunction with -anchor determine
+					 * where the item is drawn on the
+					 * canvas. */
+    double x1, y1, x2, y2;
+    /*
+     * Configuration settings that are updated by Tk_ConfigureWidget:
+     */
+    Tcl_Interp *valueInterp;		/* If non-NULL, interpreter containing
+					 * substituted variables.   */
+    const char *text;			/* Text to be displayed */
+    Tk_Anchor anchor;			/* Where to anchor text relative to
+					 * (x,y) */
+    XColor *textColor;			/* Color for normal text */
+    XColor *valueColor;			/* Color for substitututed values. */
+    XColor *activeColor;		/* Color for active substitututed
+					 * values */
+    Tk_3DBorder activeBorder;		/* Background color for active
+					 * substitututed values */
+    XColor *outlineColor;		/* Color for outline of rectangle */
+    Tk_3DBorder border;			/* If non-NULL, background color of
+					 * rectangle enclosing the entire
+					 * hotspot item. */
+    int borderWidth;			/* 3D border width (drawn under
+					 * -outline) */
+    int relief;				/* Indicates whether hotspot as a
+					 * whole is raised, sunken, or flat */
+    Tk_Font font;			/* Font for drawing normal text. */
+    Tk_Font valueFont;			/* Font for drawing substituted
+					 * values. */
+
+    const char *imageName;		/* Name of normal hotspot image. */
+    const char *activeImageName;	/* Name of active hotspot image. */
+  
+    Tk_Image image;			/* The normal icon for a hotspot. */
+    Tk_Image activeImage;		/* If non-NULL, active icon. */
+
+    /*
+     * Fields whose values are derived from the current values of the
+     * configuration settings above:
+     */
+    GC normalGC;			/* Graphics context for drawing
+					 * text. */
+    GC valueGC;				/* GC for substituted values. */
+    GC activeGC;			/* Gc for active substituted
+					 * values. */
+    GC outlineGC;			/* GC for outline? */
+    ItemSegment *firstPtr, *lastPtr;	/* List of hotspot segments. */
+    int width, height;			/* Dimension of bounding box. */
+    const char *activeValue;		/* Active segment. */
+    short int maxImageWidth, maxImageHeight;
+    int numLines;
+    int showIcons;			/* Indicates whether to draw icons. */
+};
+
+/*
+ * Information used for parsing configuration specs:
+ */
+static Tk_CustomOption tagsOption = {
+    (Tk_OptionParseProc *) Tk_CanvasTagsParseProc,
+    Tk_CanvasTagsPrintProc, (ClientData) NULL
+};
+
+static Tk_OptionParseProc ValueInterpParseProc;
+static Tk_OptionPrintProc ValueInterpPrintProc;
+static Tk_CustomOption interpOption = {
+    (Tk_OptionParseProc *)ValueInterpParseProc, ValueInterpPrintProc, 
+    (ClientData) NULL
+};
+
+static Tk_ConfigSpec configSpecs[] = {
+    {TK_CONFIG_BORDER, "-activebackground", (char *)NULL, (char*)NULL,
+        "white", Tk_Offset(HotspotItem, activeBorder), TK_CONFIG_NULL_OK},
+    {TK_CONFIG_COLOR, "-activeforeground", (char*)NULL, (char*)NULL,
+        "black", Tk_Offset(HotspotItem, activeColor), 0},
+    {TK_CONFIG_STRING, "-activeimage", "activeImage", (char*)NULL, (char*)NULL, 
+	Tk_Offset(HotspotItem, activeImageName), TK_CONFIG_NULL_OK},
+    {TK_CONFIG_STRING, "-activevalue", "activeValue", (char*)NULL, (char*)NULL, 
+	Tk_Offset(HotspotItem, activeValue), TK_CONFIG_NULL_OK},
+    {TK_CONFIG_ANCHOR, "-anchor", "anchor", (char*)NULL,
+        "center", Tk_Offset(HotspotItem, anchor), TK_CONFIG_DONT_SET_DEFAULT},
+    {TK_CONFIG_BORDER, "-background", (char *)NULL, (char*)NULL,
+        "", Tk_Offset(HotspotItem, border), TK_CONFIG_NULL_OK},
+    {TK_CONFIG_PIXELS, "-borderwidth", "borderWidth", (char*)NULL,
+        "0", Tk_Offset(HotspotItem, borderWidth), TK_CONFIG_DONT_SET_DEFAULT},
+    {TK_CONFIG_BORDER, "-fill", (char *)NULL, (char*)NULL,
+        "", Tk_Offset(HotspotItem, border), TK_CONFIG_NULL_OK},
+    {TK_CONFIG_FONT, "-font", "font", (char*)NULL,
+        "helvetica -12", Tk_Offset(HotspotItem, font), 0},
+    {TK_CONFIG_COLOR, "-foreground", "foreground", (char*)NULL,
+        "black", Tk_Offset(HotspotItem, textColor), 0},
+    {TK_CONFIG_CUSTOM, "-interp", (char*)NULL, (char*)NULL, (char*)NULL, 
+	Tk_Offset(HotspotItem, valueInterp), TK_CONFIG_NULL_OK, &interpOption},
+    {TK_CONFIG_FONT, "-valuefont", (char*)NULL, (char*)NULL,
+        "helvetica -12 bold", Tk_Offset(HotspotItem, valueFont), 0},
+    {TK_CONFIG_COLOR, "-valueforeground", (char*)NULL, (char*)NULL,
+        "blue", Tk_Offset(HotspotItem, valueColor), 0},
+    {TK_CONFIG_STRING, "-image", (char*)NULL, (char*)NULL, (char*)NULL, 
+	Tk_Offset(HotspotItem, imageName), 0},
+    {TK_CONFIG_COLOR, "-outline", (char*)NULL, (char*)NULL,
+        "", Tk_Offset(HotspotItem, outlineColor), TK_CONFIG_NULL_OK},
+    {TK_CONFIG_RELIEF, "-relief", (char*)NULL, (char*)NULL,
+        "flat", Tk_Offset(HotspotItem, relief), TK_CONFIG_DONT_SET_DEFAULT},
+    {TK_CONFIG_BOOLEAN, "-showicons", (char*)NULL, (char*)NULL,
+        "0", Tk_Offset(HotspotItem, showIcons), TK_CONFIG_DONT_SET_DEFAULT},
+    {TK_CONFIG_CUSTOM, "-tags", (char*)NULL, (char*)NULL,
+        (char*)NULL, 0, TK_CONFIG_NULL_OK, &tagsOption},
+    {TK_CONFIG_STRING, "-text", (char*)NULL, (char*)NULL,
+        "", Tk_Offset(HotspotItem, text), 0},
+    {TK_CONFIG_END, (char*)NULL, (char*)NULL, (char*)NULL,
+        (char*)NULL, 0, 0}
+};
+
+/*
+ * Prototypes for procedures defined in this file
+ */
+static Tk_ItemConfigureProc ConfigureProc;
+static Tk_ItemCreateProc CreateProc;
+static Tk_ItemDeleteProc DeleteProc;
+static Tk_ItemDisplayProc DisplayProc;
+static Tk_ItemScaleProc ScaleProc;
+static Tk_ItemTranslateProc TranslateProc;
+static Tk_ItemCoordProc CoordsProc;
+static Tk_ItemAreaProc AreaProc;
+static Tk_ItemPointProc PointProc;
+static Tk_ItemPostscriptProc PostscriptProc;
+
+static Tk_ImageChangedProc ImageChangedProc;
+
+/*
+ * The structures below defines the canvas item type:
+ */
+static Tk_ItemType hotspotType = {
+    "hotspot",                          /* name */
+    sizeof(HotspotItem),                /* itemSize */
+    CreateProc,
+    configSpecs,                        /* configSpecs */
+    ConfigureProc,
+    CoordsProc,			
+    DeleteProc,				
+    DisplayProc,			
+    TK_CONFIG_OBJS,                     /* flags */
+    PointProc,				
+    AreaProc,				
+    PostscriptProc,			
+    ScaleProc,				
+    TranslateProc,			
+    NULL,				/* indexProc */
+    NULL,				/* icursorProc */
+    NULL,				/* selectionProc */
+    NULL,				/* insertProc */
+    NULL,				/* dTextProc */
+    NULL,				/* nextPtr */
+};
+
+/*
+ * The record below describes a canvas widget.  It is made available
+ * to the item procedures so they can access certain shared fields such
+ * as the overall displacement and scale factor for the canvas.
+ */
+
+typedef struct TkCanvas {
+    Tk_Window tkwin;		/* Window that embodies the canvas.  NULL
+				 * means that the window has been destroyed
+				 * but the data structures haven't yet been
+				 * cleaned up.*/
+    Display *display;		/* Display containing widget;  needed, among
+				 * other things, to release resources after
+				 * tkwin has already gone away. */
+    Tcl_Interp *interp;		/* Interpreter associated with canvas. */
+    Tcl_Command widgetCmd;	/* Token for canvas's widget command. */
+    Tk_Item *firstItemPtr;	/* First in list of all items in canvas,
+				 * or NULL if canvas empty. */
+    Tk_Item *lastItemPtr;	/* Last in list of all items in canvas,
+				 * or NULL if canvas empty. */
+
+    /*
+     * Information used when displaying widget:
+     */
+
+    int borderWidth;		/* Width of 3-D border around window. */
+    Tk_3DBorder border;		/* Used for canvas background. */
+    int relief;			/* Indicates whether window as a whole is
+				 * raised, sunken, or flat. */
+    int highlightWidth;		/* Width in pixels of highlight to draw
+				 * around widget when it has the focus.
+				 * <= 0 means don't draw a highlight. */
+    XColor *highlightBgColorPtr;
+				/* Color for drawing traversal highlight
+				 * area when highlight is off. */
+    XColor *highlightColorPtr;	/* Color for drawing traversal highlight. */
+    int inset;			/* Total width of all borders, including
+				 * traversal highlight and 3-D border.
+				 * Indicates how much interior stuff must
+				 * be offset from outside edges to leave
+				 * room for borders. */
+    GC pixmapGC;		/* Used to copy bits from a pixmap to the
+				 * screen and also to clear the pixmap. */
+    int width, height;		/* Dimensions to request for canvas window,
+				 * specified in pixels. */
+    int redrawX1, redrawY1;	/* Upper left corner of area to redraw,
+				 * in pixel coordinates.  Border pixels
+				 * are included.  Only valid if
+				 * REDRAW_PENDING flag is set. */
+    int redrawX2, redrawY2;	/* Lower right corner of area to redraw,
+				 * in integer canvas coordinates.  Border
+				 * pixels will *not* be redrawn. */
+    int confine;		/* Non-zero means constrain view to keep
+				 * as much of canvas visible as possible. */
+
+    /*
+     * Information used to manage the selection and insertion cursor:
+     */
+
+    Tk_CanvasTextInfo textInfo; /* Contains lots of fields;  see tk.h for
+				 * details.  This structure is shared with
+				 * the code that implements individual items. */
+    int insertOnTime;		/* Number of milliseconds cursor should spend
+				 * in "on" state for each blink. */
+    int insertOffTime;		/* Number of milliseconds cursor should spend
+				 * in "off" state for each blink. */
+    Tcl_TimerToken insertBlinkHandler;
+				/* Timer handler used to blink cursor on and
+				 * off. */
+
+    /*
+     * Transformation applied to canvas as a whole:  to compute screen
+     * coordinates (X,Y) from canvas coordinates (x,y), do the following:
+     *
+     * X = x - xOrigin;
+     * Y = y - yOrigin;
+     */
+
+    int xOrigin, yOrigin;	/* Canvas coordinates corresponding to
+				 * upper-left corner of window, given in
+				 * canvas pixel units. */
+    int drawableXOrigin, drawableYOrigin;
+				/* During redisplay, these fields give the
+				 * canvas coordinates corresponding to
+				 * the upper-left corner of the drawable
+				 * where items are actually being drawn
+				 * (typically a pixmap smaller than the
+				 * whole window). */
+
+    /*
+     * Information used for event bindings associated with items.
+     */
+
+    Tk_BindingTable bindingTable;
+				/* Table of all bindings currently defined
+				 * for this canvas.  NULL means that no
+				 * bindings exist, so the table hasn't been
+				 * created.  Each "object" used for this
+				 * table is either a Tk_Uid for a tag or
+				 * the address of an item named by id. */
+    Tk_Item *currentItemPtr;	/* The item currently containing the mouse
+				 * pointer, or NULL if none. */
+    Tk_Item *newCurrentPtr;	/* The item that is about to become the
+				 * current one, or NULL.  This field is
+				 * used to detect deletions  of the new
+				 * current item pointer that occur during
+				 * Leave processing of the previous current
+				 * item.  */
+    double closeEnough;		/* The mouse is assumed to be inside an
+				 * item if it is this close to it. */
+    XEvent pickEvent;		/* The event upon which the current choice
+				 * of currentItem is based.  Must be saved
+				 * so that if the currentItem is deleted,
+				 * can pick another. */
+    int state;			/* Last known modifier state.  Used to
+				 * defer picking a new current object
+				 * while buttons are down. */
+
+    /*
+     * Information used for managing scrollbars:
+     */
+
+    char *xScrollCmd;		/* Command prefix for communicating with
+				 * horizontal scrollbar.  NULL means no
+				 * horizontal scrollbar.  Malloc'ed*/
+    char *yScrollCmd;		/* Command prefix for communicating with
+				 * vertical scrollbar.  NULL means no
+				 * vertical scrollbar.  Malloc'ed*/
+    int scrollX1, scrollY1, scrollX2, scrollY2;
+				/* These four coordinates define the region
+				 * that is the 100% area for scrolling (i.e.
+				 * these numbers determine the size and
+				 * location of the sliders on scrollbars).
+				 * Units are pixels in canvas coords. */
+    char *regionString;		/* The option string from which scrollX1
+				 * etc. are derived.  Malloc'ed. */
+    int xScrollIncrement;	/* If >0, defines a grid for horizontal
+				 * scrolling.  This is the size of the "unit",
+				 * and the left edge of the screen will always
+				 * lie on an even unit boundary. */
+    int yScrollIncrement;	/* If >0, defines a grid for horizontal
+				 * scrolling.  This is the size of the "unit",
+				 * and the left edge of the screen will always
+				 * lie on an even unit boundary. */
+
+    /*
+     * Information used for scanning:
+     */
+
+    int scanX;			/* X-position at which scan started (e.g.
+				 * button was pressed here). */
+    int scanXOrigin;		/* Value of xOrigin field when scan started. */
+    int scanY;			/* Y-position at which scan started (e.g.
+				 * button was pressed here). */
+    int scanYOrigin;		/* Value of yOrigin field when scan started. */
+
+    /*
+     * Information used to speed up searches by remembering the last item
+     * created or found with an item id search.
+     */
+
+    Tk_Item *hotPtr;		/* Pointer to "hot" item (one that's been
+				 * recently used.  NULL means there's no
+				 * hot item. */
+    Tk_Item *hotPrevPtr;	/* Pointer to predecessor to hotPtr (NULL
+				 * means item is first in list).  This is
+				 * only a hint and may not really be hotPtr's
+				 * predecessor. */
+
+    /*
+     * Miscellaneous information:
+     */
+
+    Tk_Cursor cursor;		/* Current cursor for window, or None. */
+    char *takeFocus;		/* Value of -takefocus option;  not used in
+				 * the C code, but used by keyboard traversal
+				 * scripts.  Malloc'ed, but may be NULL. */
+    double pixelsPerMM;		/* Scale factor between MM and pixels;
+				 * used when converting coordinates. */
+    int flags;			/* Various flags;  see below for
+				 * definitions. */
+    int nextId;			/* Number to use as id for next item
+				 * created in widget. */
+    Tk_PostscriptInfo psInfo;
+				/* Pointer to information used for generating
+				 * Postscript for the canvas.  NULL means
+				 * no Postscript is currently being
+				 * generated. */
+    Tcl_HashTable idTable;	/* Table of integer indices. */
+    /*
+     * Additional information, added by the 'dash'-patch
+     */
+    VOID *reserved1;
+    Tk_State canvas_state;	/* state of canvas */
+    VOID *reserved2;
+    VOID *reserved3;
+    Tk_TSOffset tsoffset;
+#ifndef USE_OLD_TAG_SEARCH
+    void *bindTagExprs; /* linked list of tag expressions used in bindings */
+#endif
+} TkCanvas;
+
+/* Forward declarations. */
+static void ComputeBbox(HotspotItem *itemPtr);
+
+
+static void
+EventuallyRedraw(HotspotItem *itemPtr)
+{
+    if ((itemPtr->flags & REDRAW_PENDING) == 0) {
+	itemPtr->flags |= REDRAW_PENDING;
+	Tk_CanvasEventuallyRedraw(itemPtr->canvas, itemPtr->base.x1, 
+		itemPtr->base.y1, itemPtr->base.x2, itemPtr->base.y2);
+    }
+}
+
+static int
+GetCoordFromObj(Tcl_Interp *interp, HotspotItem *itemPtr, Tcl_Obj *objPtr, 
+		double *valuePtr)
+{
+    const char *string;
+
+    string = Tcl_GetString(objPtr);
+    return Tk_CanvasGetCoord(interp, itemPtr->canvas, string, valuePtr);
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * ValueInterpParseProc --
+ *
+ *	Converts the name of an axis to a pointer to its axis structure.
+ *
+ * Results:
+ *	The return value is a standard Tcl result.  The axis flags are
+ *	written into the widget record.
+ *
+ *----------------------------------------------------------------------
+ */
+/*ARGSUSED*/
+static int
+ValueInterpParseProc(ClientData clientData, Tcl_Interp *interp, Tk_Window tkwin,
+		     CONST84 char *string, char *widgRec, int offset)
+{
+    HotspotItem *itemPtr = (HotspotItem *)widgRec;
+
+    if (string[0] == '\0') {
+	itemPtr->valueInterp = NULL;
+	return TCL_OK;
+    }
+    itemPtr->valueInterp = Tcl_GetSlave(interp, string);
+    if (itemPtr->valueInterp == NULL) {
+	return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * ValueInterpParseProc --
+ *
+ *	Convert the window coordinates into a string.
+ *
+ * Results:
+ *	The string representing the coordinate position is returned.
+ *
+ *----------------------------------------------------------------------
+ */
+/*ARGSUSED*/
+static char *
+ValueInterpPrintProc(ClientData clientData, Tk_Window tkwin, char *widgRec,
+		     int offset, Tcl_FreeProc **freeProcPtr)
+{
+    HotspotItem *itemPtr = (HotspotItem *)widgRec;
+
+    if (itemPtr->valueInterp != NULL) {
+	Tcl_Obj *objPtr;
+
+	Tcl_GetInterpPath(itemPtr->interp, itemPtr->valueInterp);
+	objPtr = Tcl_GetObjResult(itemPtr->interp);
+	*freeProcPtr = TCL_VOLATILE;
+	return Tcl_GetString(objPtr);
+    }
+    return "";
+}
+
+/*
+ *---------------------------------------------------------------------------
+ * 
+ * TraceVarProc --
+ *
+ *	This procedure is invoked when someone changes the state variable
+ *	associated with a radiobutton or checkbutton entry.  The entry's
+ *	selected state is set to match the value of the variable.
+ *
+ * Results:
+ *	NULL is always returned.
+ *
+ * Side effects:
+ *	The combobox entry may become selected or deselected.
+ *
+ *---------------------------------------------------------------------------
+ */
+static char *
+TraceVarProc(
+    ClientData clientData,		/* Information about the item. */
+    Tcl_Interp *interp,			/* Interpreter containing variable. */
+    const char *name1,			/* First part of variable's name. */
+    const char *name2,			/* Second part of variable's name. */
+    int flags)				/* Describes what just happened. */
+{
+    HotspotItem *itemPtr = clientData;
+
+    if (flags & TCL_INTERP_DESTROYED) {
+    	return NULL;			/* Interpreter is going away. */
+
+    }
+    /*
+     * If the variable is being unset, then re-establish the trace.
+     */
+    if (flags & TCL_TRACE_UNSETS) {
+	if (flags & TCL_TRACE_DESTROYED) {
+	    Tcl_TraceVar(interp, name1, VAR_FLAGS, TraceVarProc, itemPtr);
+	}
+    }
+    itemPtr->flags |= SUBSTITUTIONS_PENDING;
+    EventuallyRedraw(itemPtr);
+    return NULL;			/* Done. */
+}
+
+/*
+ * ----------------------------------------------------------------------
+ *
+ * ImageChangedProc --
+ *
+ *      This procedure is invoked by the image code whenever the manager
+ *      for an image does something that affects the image's size or
+ *      how it is displayed.
+ *
+ * Results:
+ *      None.
+ *
+ * Side effects:
+ *      Arranges for the canvas to get redisplayed.
+ *
+ * ----------------------------------------------------------------------
+ */
+static void
+ImageChangedProc(clientData, x, y, width, height, imgWidth, imgHeight)
+    ClientData clientData;              /* Pointer to canvas item for image. */
+    int x, y;                           /* Upper left pixel (within image)
+                                         * that must be redisplayed. */
+    int width, height;                  /* Dimensions of area to redisplay
+                                         * (may be <= 0). */
+    int imgWidth, imgHeight;            /* New dimensions of image. */
+{      
+    HotspotItem *itemPtr = (HotspotItem *) clientData;
+    
+    itemPtr->flags |= LAYOUT_PENDING;
+    EventuallyRedraw(itemPtr);
+    return;
+}
+
+static void
+AddTextSegment(HotspotItem *itemPtr, const char *text, int length)
+{
+    ItemSegment *segPtr;
+
+    segPtr = (ItemSegment *)Tcl_Alloc(sizeof(ItemSegment) + length + 1);
+    memset(segPtr, 0, sizeof(ItemSegment) + length + 1);
+    segPtr->itemPtr = itemPtr;
+    segPtr->lineNum = itemPtr->numLines;
+    segPtr->type = SEGMENT_TEXT;
+    strncpy(segPtr->text, text, length);
+    segPtr->text[length] = '\0';
+    segPtr->length = length;
+    segPtr->x = segPtr->y = 0;
+    segPtr->nextPtr = NULL;
+    if (itemPtr->firstPtr == NULL) {
+	itemPtr->firstPtr = segPtr;
+    }
+    if (itemPtr->lastPtr == NULL) {
+	itemPtr->lastPtr = segPtr;
+    } else {
+	itemPtr->lastPtr->nextPtr = segPtr;
+	itemPtr->lastPtr = segPtr;
+    }
+}
+
+static void
+AddValueSegment(HotspotItem *itemPtr, const char *varName, int length)
+{
+    ItemSegment *segPtr;
+    Tcl_Interp *interp;
+
+    segPtr = (ItemSegment *)Tcl_Alloc(sizeof(ItemSegment) + length + 1);
+    memset(segPtr, 0, sizeof(ItemSegment) + length + 1);
+    segPtr->itemPtr = itemPtr;
+    segPtr->lineNum = itemPtr->numLines;
+    segPtr->type = SEGMENT_VALUE;
+    strncpy(segPtr->text, varName, length);
+    segPtr->text[length] = '\0';
+    segPtr->length = length;
+    interp = itemPtr->valueInterp;
+    if (interp == NULL) {
+	interp = itemPtr->interp;
+    }
+    Tcl_TraceVar(interp, varName, VAR_FLAGS, TraceVarProc, itemPtr);
+    segPtr->value = NULL;
+    segPtr->x = segPtr->y = 0;
+    segPtr->nextPtr = NULL;
+    if (itemPtr->firstPtr == NULL) {
+	itemPtr->firstPtr = segPtr;
+    }
+    if (itemPtr->lastPtr == NULL) {
+	itemPtr->lastPtr = segPtr;
+    } else {
+	itemPtr->lastPtr->nextPtr = segPtr;
+	itemPtr->lastPtr = segPtr;
+    }
+}
+
+static void
+DestroySegment(ItemSegment *segPtr)
+{
+    HotspotItem *itemPtr;
+
+    itemPtr = segPtr->itemPtr;
+    if (segPtr->layout != NULL) {
+	Tk_FreeTextLayout(segPtr->layout);
+    }
+    if (segPtr->type == SEGMENT_VALUE) {
+	Tcl_UntraceVar(itemPtr->interp, segPtr->text, VAR_FLAGS, TraceVarProc, 
+		itemPtr);
+    }
+    if (segPtr->value != NULL) {
+	Tcl_Free((char *)segPtr->value);
+    }
+    Tcl_Free((char *)segPtr);
+}
+
+static void
+DestroySegments(HotspotItem *itemPtr)
+{
+    ItemSegment *segPtr, *nextPtr;
+
+    for (segPtr = itemPtr->firstPtr; segPtr != NULL; segPtr = nextPtr) {
+	nextPtr = segPtr->nextPtr;
+	DestroySegment(segPtr);
+    }
+    itemPtr->firstPtr = itemPtr->lastPtr = NULL;
+}
+
+static void
+DoSubstitutions(HotspotItem *itemPtr)
+{
+    ItemSegment *segPtr;
+    Tcl_Interp *interp;
+
+    itemPtr->flags &= ~SUBSTITUTIONS_PENDING;
+    interp = itemPtr->valueInterp;
+    if (interp == NULL) {
+	interp = itemPtr->interp;
+    }
+    for (segPtr = itemPtr->firstPtr; segPtr != NULL; segPtr = segPtr->nextPtr) {
+	const char *value;
+
+	if (segPtr->type != SEGMENT_VALUE) {
+	    continue;
+	}
+	value = Tcl_GetVar(interp, segPtr->text, TCL_GLOBAL_ONLY);
+	if (value == NULL) {
+	    value = "???";
+	}
+	if (segPtr->value != NULL) {
+	    Tcl_Free((char *)segPtr->value);
+	}
+	segPtr->value = Tcl_Alloc(strlen(value) + 1);
+	strcpy(segPtr->value, value);
+    }
+    itemPtr->flags |= LAYOUT_PENDING;
+}
+
+static void
+ComputeGeometry(HotspotItem *itemPtr)
+{
+    int x, y, w, h;
+    ItemSegment *segPtr;
+    int imgWidth, imgHeight;
+    int maxWidth, maxHeight;
+    int justify;
+    int wrapLength;
+    int flags;
+
+    justify = TK_JUSTIFY_LEFT;
+    wrapLength = 0;
+    flags = 0;
+    /* Collect the individual segment sizes. */
+    imgWidth = itemPtr->maxImageWidth + IMAGE_PAD;
+    imgHeight = itemPtr->maxImageHeight + 2 * IMAGE_PAD;
+    for (segPtr = itemPtr->firstPtr; segPtr != NULL; segPtr = segPtr->nextPtr) {
+	if (segPtr->layout != NULL) {
+	    Tk_FreeTextLayout(segPtr->layout);
+	}
+	w = h = 0;
+	switch (segPtr->type) {
+	case SEGMENT_VALUE:
+	    segPtr->layout = Tk_ComputeTextLayout(itemPtr->valueFont, 
+			segPtr->value, -1, wrapLength, justify, flags, &w, &h);
+	    w += TEXT_PADX * 2;
+	    h += TEXT_PADY * 2;
+	    if (itemPtr->showIcons) {
+		w += imgWidth, h = MAX(h, imgHeight);
+	    }
+	    break;
+	case SEGMENT_TEXT:
+	    segPtr->layout = Tk_ComputeTextLayout(itemPtr->font, segPtr->text, 
+			-1, wrapLength, justify, flags, &w, &h);
+	    w += TEXT_PADX * 2;
+	    h += TEXT_PADY * 2;
+	    break;
+	default:
+	    Tcl_Panic("unknown hotspot segment type");
+	}
+	segPtr->width = w;
+	segPtr->height = h;
+#ifdef notdef
+	fprintf(stderr, "ComputeGeometry: item=(%s) segment=%x (%s) type=%d w=%d h=%d lineNum=%d nextPtr=%x\n",
+		itemPtr->text, segPtr, segPtr->text, segPtr->type, segPtr->width, 
+		segPtr->height, segPtr->lineNum, segPtr->nextPtr);
+#endif
+    }
+    /* Compute the relative positions of the segments. */
+    x = y = 0;
+    maxWidth = maxHeight = 0;
+    for (segPtr = itemPtr->firstPtr; segPtr != NULL; /*empty*/) {
+	int maxHeight, lineNum;
+	ItemSegment *startPtr;
+
+	maxHeight = 0;
+	lineNum = segPtr->lineNum;
+	startPtr = segPtr;
+	x = 0;
+
+	while ((segPtr != NULL) && (segPtr->lineNum == lineNum)) {
+	    if (segPtr->height > maxHeight) {
+		maxHeight = segPtr->height;
+	    }
+	    segPtr->x = x;
+	    x += segPtr->width;
+	    segPtr = segPtr->nextPtr;
+	}
+	if (x > maxWidth) {
+	    maxWidth = x;
+	}
+	segPtr = startPtr;
+	while ((segPtr != NULL) && (segPtr->lineNum == lineNum)) {
+	    segPtr->y = y + (maxHeight - segPtr->height) / 2;
+	    segPtr = segPtr->nextPtr;
+	}
+	y += maxHeight;
+    }
+    itemPtr->width = maxWidth;
+    itemPtr->height = y;
+    ComputeBbox(itemPtr);
+}
+
+static int
+ParseDescription(Tcl_Interp *interp, HotspotItem *itemPtr, 
+		const char *description)
+{
+    const char *p, *start;
+
+    if (itemPtr->firstPtr != NULL) {
+	DestroySegments(itemPtr);
+    }
+    start = description;
+    itemPtr->numLines = 1;
+    for (p = description; *p != '\0'; p++) {
+	if ((p[0] == '$') && (p[1] == '{')) {
+	    const char *varName;
+	    const char *q;
+
+	    if (p > start) {
+		/* Save the leading text. */
+		AddTextSegment(itemPtr, start, p - start);
+		start = p;
+	    }
+	    /* Start of substitution variable. */
+	    varName = p + 2;
+	    for (q = varName; q != '\0'; q++) {
+		if (*q == '}') {
+		    AddValueSegment(itemPtr, varName, q - varName);
+		    p = q;
+		    start = p + 1;
+		    goto next;
+		}
+	    }
+	    Tcl_AppendResult(interp, "back variable specification in \"",
+			     description, "\"", (char *)NULL);
+	    return TCL_ERROR;
+	} else if (p[0] == '\n') {
+	    if (p > start) {
+		AddTextSegment(itemPtr, start, p - start);
+		start = p + 1;
+		itemPtr->numLines++;
+	    }
+	}
+    next:
+	;
+    }
+    if (p > start) {
+	/* Save the trailing text. */
+	AddTextSegment(itemPtr, start, p - start);
+    }
+    itemPtr->flags |= SUBSTITUTIONS_PENDING;
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *
+ *  CreateProc --
+ *
+ *    This procedure is invoked to create a new hotspot item
+ *    in a canvas.  A hotspot is a text item with a box behind it.
+ *
+ *  Results:
+ *    A standard Tcl return name.  If an error occurred in creating
+ *    the item then an error message is left in the interp's result.
+ *    In this case itemPtr is left uninitialized so it can be safely
+ *    freed by the caller.
+ *
+ *  Side effects:
+ *    A new item is created.
+ *
+ * ------------------------------------------------------------------------
+ */
+static int
+CreateProc(Tcl_Interp *interp, Tk_Canvas canvas, Tk_Item *canvItemPtr,
+	   int objc, Tcl_Obj *const *objv)
+{
+    HotspotItem *itemPtr = (HotspotItem *)canvItemPtr;
+    double x, y;
+    Tk_Window tkwin;
+
+    tkwin = Tk_CanvasTkwin(canvas);
+    if (objc < 2) {
+	Tcl_AppendResult(interp, "wrong # args: should be \"",
+	    Tk_PathName(tkwin), " create ", canvItemPtr->typePtr->name,
+	    " x y ?options?\"", (char *)NULL);
+	return TCL_ERROR;
+    }
+
+    /* Initialize all HotspotItem fields, expect for the the base. */
+    memset((char *)itemPtr + sizeof(Tk_Item), 0, 
+	   sizeof(HotspotItem) - sizeof(Tk_Item));
+    /*
+     * Carry out initialization that is needed in order to clean up after
+     * errors during the the remainder of this procedure.
+     */
+    itemPtr->anchor = TK_ANCHOR_CENTER;
+    itemPtr->canvas = canvas;
+    itemPtr->display = Tk_Display(tkwin);
+    itemPtr->interp = interp;
+    itemPtr->relief = TK_RELIEF_FLAT;
+    itemPtr->tkwin = tkwin;
+    itemPtr->valueInterp = interp;
+    itemPtr->showIcons = FALSE;
+
+    /* Process the arguments to fill in the item record. */
+    if ((GetCoordFromObj(interp, itemPtr, objv[0], &x) != TCL_OK) ||
+	(GetCoordFromObj(interp, itemPtr, objv[1], &y) != TCL_OK)) {
+	DeleteProc(canvas, canvItemPtr, itemPtr->display);
+	return TCL_ERROR;
+    }
+    itemPtr->x = x;
+    itemPtr->y = y;
+    ComputeBbox(itemPtr);
+    if (ConfigureProc(interp, canvas, canvItemPtr, objc - 2, objv + 2, 0) 
+	!= TCL_OK) {
+	DeleteProc(canvas, canvItemPtr, itemPtr->display);
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *
+ *  CoordsProc --
+ *
+ *    This procedure is invoked to process the "coords" widget command on
+ *    hotspot items.  See the user documentation for details on what
+ *    it does.
+ *
+ *  Results:
+ *    Returns TCL_OK or TCL_ERROR, and sets the interp's result.
+ *
+ *  Side effects:
+ *    The coordinates for the given item may be changed.
+ *
+ * ------------------------------------------------------------------------
+ */
+static int
+CoordsProc(Tcl_Interp *interp, Tk_Canvas canvas, Tk_Item *canvItemPtr, 
+	   int objc, Tcl_Obj *const *objv)
+{
+    HotspotItem *itemPtr = (HotspotItem *) canvItemPtr;
+    double x, y;
+
+    if (objc == 0) {
+        Tcl_Obj *listObjPtr;
+
+	listObjPtr = Tcl_NewListObj(0, (Tcl_Obj **)NULL);
+        Tcl_ListObjAppendElement(interp, listObjPtr,
+		Tcl_NewDoubleObj(itemPtr->x));
+        Tcl_ListObjAppendElement(interp, listObjPtr,
+		Tcl_NewDoubleObj(itemPtr->y));
+        Tcl_SetObjResult(interp, listObjPtr);
+	return TCL_OK;
+    }
+    if (objc == 1) {
+	int elc;
+	Tcl_Obj **elv;
+
+	if (Tcl_ListObjGetElements(interp, objv[0], &elc, &elv) != TCL_OK) {
+	    return TCL_ERROR;
+        }
+        if ((GetCoordFromObj(interp, itemPtr, elv[0], &x) != TCL_OK) || 
+	    (GetCoordFromObj(interp, itemPtr, elv[1], &y) != TCL_OK)) {
+            return TCL_ERROR;
+        }
+    } else if (objc == 3) {
+        if ((GetCoordFromObj(interp, itemPtr, objv[0], &x) != TCL_OK) ||
+	    (GetCoordFromObj(interp, itemPtr, objv[1], &y) != TCL_OK)) {
+            return TCL_ERROR;
+        }
+    } else {
+	char buf[64 + TCL_INTEGER_SPACE];
+
+        sprintf(buf, "wrong # coordinates: expected 0 or 2, got %d", objc);
+        Tcl_AppendResult(interp, buf, (char *)NULL);
+        return TCL_ERROR;
+    }
+    itemPtr->x = x;
+    itemPtr->y = y;
+    ComputeBbox(itemPtr);
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  ConfigureProc --
+ *
+ *    This procedure is invoked to configure various aspects of a
+ *    hotspot item, such as its color and font.
+ *
+ *  Results:
+ *    A standard Tcl result code.  If an error occurs, then an error
+ *    message is left in the interp's result.
+ *
+ *  Side effects:
+ *    Configuration information, such as colors and GCs, may be set
+ *    for itemPtr.
+ * ------------------------------------------------------------------------
+ */
+static int
+ConfigureProc(Tcl_Interp *interp, Tk_Canvas canvas, Tk_Item *canvItemPtr,
+	      int objc, Tcl_Obj *CONST *objv, int flags)
+{
+    HotspotItem *itemPtr = (HotspotItem *)canvItemPtr;
+    XGCValues gcValues;
+    GC newGC;
+    unsigned long mask;
+    Tk_Window tkwin;
+    Tk_Image tkImage;
+
+    tkwin = Tk_CanvasTkwin(canvas);
+    if (Tk_ConfigureWidget(interp, tkwin, configSpecs, objc, 
+	(CONST char **)objv, (char*)itemPtr, flags|TK_CONFIG_OBJS) != TCL_OK) {
+        return TCL_ERROR;
+    }
+
+    /* Normal text GC. */
+    mask = GCFont | GCForeground;
+    gcValues.font = Tk_FontId(itemPtr->font);
+    gcValues.foreground = itemPtr->textColor->pixel;
+    newGC = Tk_GetGC(tkwin, mask, &gcValues);
+    if (itemPtr->normalGC != None) {
+        Tk_FreeGC(Tk_Display(tkwin), itemPtr->normalGC);
+    }
+    itemPtr->normalGC = newGC;
+
+    /* Outline GC */
+    if (itemPtr->outlineColor != NULL) {
+	mask = GCLineWidth | GCForeground;
+	gcValues.foreground = itemPtr->outlineColor->pixel;
+	gcValues.line_width = 1;
+	newGC = Tk_GetGC(tkwin, mask, &gcValues);
+	if (itemPtr->outlineGC != None) {
+	    Tk_FreeGC(Tk_Display(tkwin), itemPtr->outlineGC);
+	}
+	itemPtr->outlineGC = newGC;
+    }
+
+    /* Substituted value GC. */
+    mask = GCFont | GCForeground;
+    gcValues.font = Tk_FontId(itemPtr->valueFont);
+    gcValues.foreground = itemPtr->valueColor->pixel;
+    newGC = Tk_GetGC(tkwin, mask, &gcValues);
+    if (itemPtr->valueGC != None) {
+        Tk_FreeGC(Tk_Display(tkwin), itemPtr->valueGC);
+    }
+    itemPtr->valueGC = newGC;
+
+    /* Active substituted value GC. */
+    mask = GCFont | GCForeground;
+    gcValues.font = Tk_FontId(itemPtr->valueFont);
+    gcValues.foreground = itemPtr->activeColor->pixel;
+    newGC = Tk_GetGC(tkwin, mask, &gcValues);
+    if (itemPtr->activeGC != None) {
+        Tk_FreeGC(Tk_Display(tkwin), itemPtr->activeGC);
+    }
+    itemPtr->activeGC = newGC;
+
+    itemPtr->maxImageWidth = itemPtr->maxImageHeight = 0;
+    /* Normal hotspot image. */
+    if (itemPtr->imageName != NULL) {
+	int iw, ih;
+
+        tkImage = Tk_GetImage(interp, tkwin, itemPtr->imageName,
+                ImageChangedProc, (ClientData)itemPtr);
+        if (tkImage == NULL) {
+            return TCL_ERROR;
+        }
+	Tk_SizeOfImage(tkImage, &iw, &ih);
+	if (iw > itemPtr->maxImageWidth) {
+	    itemPtr->maxImageWidth = iw;
+	}
+	if (ih > itemPtr->maxImageHeight) {
+	    itemPtr->maxImageHeight = ih;
+	}
+    } else {
+	tkImage = NULL;
+    }
+	
+    if (itemPtr->image != NULL) {
+        Tk_FreeImage(itemPtr->image);
+    }
+    itemPtr->image = tkImage;
+
+    /* Active hotspot image. */
+    if (itemPtr->activeImageName != NULL) {
+	int iw, ih;
+	
+        tkImage = Tk_GetImage(interp, tkwin, itemPtr->activeImageName,
+                ImageChangedProc, (ClientData)itemPtr);
+        if (tkImage == NULL) {
+            return TCL_ERROR;
+        }
+	Tk_SizeOfImage(tkImage, &iw, &ih);
+	if (iw > itemPtr->maxImageWidth) {
+	    itemPtr->maxImageWidth = iw;
+	}
+	if (ih > itemPtr->maxImageHeight) {
+	    itemPtr->maxImageHeight = ih;
+	}
+    } else {
+	tkImage = NULL;
+    } 
+    if (itemPtr->activeImage != NULL) {
+        Tk_FreeImage(itemPtr->activeImage);
+    }
+    itemPtr->activeImage = tkImage;
+
+    if (itemPtr->text != NULL) {
+	if (ParseDescription(interp, itemPtr, itemPtr->text) != TCL_OK) {
+	    return TCL_ERROR;
+	}
+    }
+    ComputeBbox(itemPtr);
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  DeleteHotspot --
+ *
+ *    This procedure is called to clean up the data structure
+ *    associated with a hotspot item.
+ *
+ *  Results:
+ *    None.
+ *
+ *  Side effects:
+ *    Resources associated with itemPtr are released.
+ * ------------------------------------------------------------------------
+ */
+static void
+DeleteProc(Tk_Canvas canvas, Tk_Item *canvItemPtr, Display *display)
+{
+    HotspotItem *itemPtr = (HotspotItem *)canvItemPtr;
+
+    if (itemPtr->textColor != NULL) {
+        Tk_FreeColor(itemPtr->textColor);
+    }
+    if (itemPtr->valueColor != NULL) {
+        Tk_FreeColor(itemPtr->valueColor);
+    }
+    if (itemPtr->activeColor != NULL) {
+        Tk_FreeColor(itemPtr->activeColor);
+    }
+    if (itemPtr->outlineColor != NULL) {
+        Tk_FreeColor(itemPtr->outlineColor);
+    }
+    if (itemPtr->border != NULL) {
+        Tk_Free3DBorder(itemPtr->border);
+    }
+    if (itemPtr->activeBorder != NULL) {
+        Tk_Free3DBorder(itemPtr->activeBorder);
+    }
+    if (itemPtr->text != NULL) {
+        Tcl_Free((char *)itemPtr->text);
+    }
+    if (itemPtr->imageName != NULL) {
+        Tcl_Free((char *)itemPtr->imageName);
+    }
+    if (itemPtr->activeImageName != NULL) {
+        Tcl_Free((char *)itemPtr->activeImageName);
+    }
+    if (itemPtr->image != NULL ) {
+        Tk_FreeImage(itemPtr->image);
+    }
+    if (itemPtr->activeImage != NULL ) {
+        Tk_FreeImage(itemPtr->activeImage);
+    }
+    if (itemPtr->font != NULL) {
+	Tk_FreeFont(itemPtr->font);
+    }
+    if (itemPtr->valueFont != NULL) {
+	Tk_FreeFont(itemPtr->valueFont);
+    }
+    if (itemPtr->normalGC != None) {
+        Tk_FreeGC(display, itemPtr->normalGC);
+    }
+    if (itemPtr->activeGC != None) {
+        Tk_FreeGC(display, itemPtr->activeGC);
+    }
+    if (itemPtr->outlineGC != None) {
+        Tk_FreeGC(display, itemPtr->outlineGC);
+    }
+    if (itemPtr->valueGC != None) {
+        Tk_FreeGC(display, itemPtr->valueGC);
+    }
+    DestroySegments(itemPtr);
+}
+
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * TranslateAnchor --
+ *
+ * 	Translate the coordinates of a given bounding box based upon the
+ * 	anchor specified.  The anchor indicates where the given xy position
+ * 	is in relation to the bounding box.
+ *
+ *  		nw --- n --- ne
+ *  		|            |     x,y ---+
+ *  		w   center   e      |     |
+ *  		|            |      +-----+
+ *  		sw --- s --- se
+ *
+ * Results:
+ *	The translated coordinates of the bounding box are returned.
+ *
+ *---------------------------------------------------------------------------
+ */
+static void
+TranslateAnchor(HotspotItem *itemPtr, double *xPtr, double *yPtr)
+{
+    double x, y;
+
+    x = *xPtr, y = *yPtr;
+    switch (itemPtr->anchor) {
+    case TK_ANCHOR_NW:		/* Upper left corner */
+	break;
+    case TK_ANCHOR_W:		/* Left center */
+	y -= (itemPtr->height * 0.5);
+	break;
+    case TK_ANCHOR_SW:		/* Lower left corner */
+	y -= itemPtr->height;
+	break;
+    case TK_ANCHOR_N:		/* Top center */
+	x -= (itemPtr->width * 0.5);
+	break;
+    case TK_ANCHOR_CENTER:	/* Centered */
+	x -= (itemPtr->width * 0.5);
+	y -= (itemPtr->height * 0.5);
+	break;
+    case TK_ANCHOR_S:		/* Bottom center */
+	x -= (itemPtr->width * 0.5);
+	y -= itemPtr->height;
+	break;
+    case TK_ANCHOR_NE:		/* Upper right corner */
+	x -= itemPtr->width;
+	break;
+    case TK_ANCHOR_E:		/* Right center */
+	x -= itemPtr->width;
+	y -= (itemPtr->height * 0.5);
+	break;
+    case TK_ANCHOR_SE:		/* Lower right corner */
+	x -= itemPtr->width;
+	y -= itemPtr->height;
+	break;
+    }
+    *xPtr = x;
+    *yPtr = y;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *
+ *  ComputeBbox --
+ *
+ *    This procedure is invoked to compute the bounding box of all the pixels
+ *    that may be drawn as part of a text item.  In addition, it recomputes
+ *    all of the geometry information used to display a text item or check for
+ *    mouse hits.
+ *
+ *  Results:
+ *    None.
+ *
+ *  Side effects:
+ *    The fields x1, y1, x2, and y2 are updated in the base structure
+ *    for itemPtr, and the linePtr structure is regenerated
+ *    for itemPtr.
+ *
+ * ------------------------------------------------------------------------
+ */
+static void
+ComputeBbox(HotspotItem *itemPtr)
+{
+    double x, y;
+
+    x = itemPtr->x, y = itemPtr->y;
+    TranslateAnchor(itemPtr, &x, &y);
+    itemPtr->x1 = x;
+    itemPtr->x2 = x + itemPtr->width;
+    itemPtr->y1 = y;
+    itemPtr->y2 = y + itemPtr->height;
+    itemPtr->base.x1 = ROUND(itemPtr->x1);
+    itemPtr->base.y1 = ROUND(itemPtr->y1);
+    itemPtr->base.x2 = ROUND(itemPtr->x2);
+    itemPtr->base.y2 = ROUND(itemPtr->y2);
+}
+
+static void 
+DrawSegment(ItemSegment *segPtr, Drawable drawable, int x, int y)
+{
+    HotspotItem *itemPtr;
+    GC gc;
+    int isActive;
+
+    itemPtr = segPtr->itemPtr;
+    if (segPtr->type == SEGMENT_TEXT) {
+	Tk_DrawTextLayout(Tk_Display(itemPtr->tkwin), drawable, 
+		itemPtr->normalGC, segPtr->layout, x + segPtr->x + TEXT_PADX, 
+		y + segPtr->y + TEXT_PADY, 0, -1);
+	return;
+    } 
+    isActive = ((itemPtr->activeValue != NULL) &&
+		(strcmp(itemPtr->activeValue, segPtr->text) == 0));
+	
+    if ((itemPtr->activeBorder != NULL) && (isActive)) {
+	Tk_Fill3DRectangle(itemPtr->tkwin, drawable, itemPtr->activeBorder, 
+		x + segPtr->x, y + segPtr->y, segPtr->width, segPtr->height, 
+		1, TK_RELIEF_SOLID);
+    }
+    if (itemPtr->showIcons) {
+	Tk_Image tkImage;
+	int w, h;
+	int ix, iy, ih, iw;
+
+	ih = itemPtr->maxImageHeight * 2 * IMAGE_PAD;
+	iw = itemPtr->maxImageWidth + IMAGE_PAD;
+	ix = x + segPtr->x + IMAGE_PAD;
+	iy = y + segPtr->y + IMAGE_PAD;
+	if (segPtr->height > ih) {
+	    iy += (segPtr->height - ih) / 2;
+	}
+	tkImage = (isActive) ? itemPtr->activeImage : itemPtr->image;
+	Tk_SizeOfImage(tkImage, &w, &h);
+	Tk_RedrawImage(tkImage, 0, 0, w, h, drawable, ix, iy);
+	x += iw;
+    }
+    gc = (isActive) ? itemPtr->activeGC : itemPtr->valueGC;
+    Tk_DrawTextLayout(Tk_Display(itemPtr->tkwin), drawable, gc, segPtr->layout,
+	 x + segPtr->x + TEXT_PADX, y + segPtr->y + TEXT_PADY, 0, -1);
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *
+ *  DisplayProc --
+ *
+ *    This procedure is invoked to draw a text item in a given drawable.
+ *
+ *  Results:
+ *    None.
+ *
+ *  Side effects:
+ *    ItemPtr is drawn in drawable using the transformation information
+ *    in canvas.
+ *
+ * ------------------------------------------------------------------------
+ */
+static void
+DisplayProc(Tk_Canvas canvas, Tk_Item *canvItemPtr, Display *display,
+	    Drawable drawable, int x, int y, int width, int height)
+{
+    HotspotItem *itemPtr = (HotspotItem *) canvItemPtr;
+    ItemSegment *segPtr;
+    short int drawX, drawY;
+    double tx, ty;
+
+    itemPtr->flags &= ~REDRAW_PENDING;
+    if (itemPtr->flags & SUBSTITUTIONS_PENDING) {
+	DoSubstitutions(itemPtr);
+    }
+    if (itemPtr->flags & LAYOUT_PENDING) {
+	ComputeGeometry(itemPtr);
+    }
+    tx = itemPtr->x, ty = itemPtr->y;
+    TranslateAnchor(itemPtr, &tx, &ty);
+
+    /* Convert canvas coordinates to drawable coordinates. */
+    Tk_CanvasDrawableCoords(canvas, tx, ty, &drawX, &drawY);
+    x = drawX, y = drawY;
+
+    if (itemPtr->border != NULL) {
+        Tk_Fill3DRectangle(itemPtr->tkwin, drawable, itemPtr->border, x, y, 
+		itemPtr->width, itemPtr->height, itemPtr->borderWidth, 
+		itemPtr->relief);
+    }
+    if (itemPtr->outlineColor != NULL) {
+        XDrawRectangle(display, drawable, itemPtr->outlineGC, x, y, 
+		itemPtr->width, itemPtr->height);
+    }
+    for (segPtr = itemPtr->firstPtr; segPtr != NULL; segPtr = segPtr->nextPtr) {
+	DrawSegment(segPtr, drawable, x, y);
+    }
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *
+ *  PointProc --
+ *
+ *    Computes the distance from a given point to a given hotspot item, in
+ *    canvas units.
+ *
+ *  Results:
+ *    The return value is 0 if the point whose x and y coordinates
+ *    are pointPtr[0] and pointPtr[1] is inside the text item.  If
+ *    the point isn't inside the text item then the return value
+ *    is the distance from the point to the text item.
+ *
+ *  Side effects:
+ *    None.
+ *
+ * ------------------------------------------------------------------------
+ */
+static double
+PointProc(Tk_Canvas canvas, Tk_Item *canvItemPtr, double *pointPtr)
+{
+    HotspotItem *itemPtr = (HotspotItem *)canvItemPtr;
+    double dx, dy;
+
+    if (pointPtr[0] < itemPtr->x1) {
+        dx = itemPtr->x1 - pointPtr[0];
+    } else if (pointPtr[0] >= itemPtr->x2)  {
+        dx = pointPtr[0] + 1 - itemPtr->x2;
+    } else {
+        dx = 0;
+    }
+    if (pointPtr[1] < itemPtr->y1) {
+        dy = itemPtr->y1 - pointPtr[1];
+    } else if (pointPtr[1] >= itemPtr->y2)  {
+        dy = pointPtr[1] + 1 - itemPtr->y2;
+    } else {
+        dy = 0;
+    }
+    return hypot(dx, dy);
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *
+ *  AreaProc --
+ *
+ *    This procedure is called to determine whether an item lies
+ *    entirely inside, entirely outside, or overlapping a given
+ *    rectangle.
+ *
+ *  Results:
+ *    -1 is returned if the item is entirely outside the area given
+ *    by rectPtr, 0 if it overlaps, and 1 if it is entirely inside
+ *    the given area.
+ *
+ *  Side effects:
+ *    None.
+ *
+ * ------------------------------------------------------------------------
+ */
+static int
+AreaProc(Tk_Canvas canvas, Tk_Item *canvItemPtr, double *rectPtr)
+{
+    HotspotItem *itemPtr = (HotspotItem *)canvItemPtr;
+
+    if ((rectPtr[2] <= itemPtr->x1) || (rectPtr[0] >= itemPtr->x2) || 
+	(rectPtr[3] <= itemPtr->y1) || (rectPtr[1] >= itemPtr->y2)) {
+	return -1;
+    }
+    if ((rectPtr[0] <= itemPtr->x1) && (rectPtr[1] <= itemPtr->y1) && 
+	(rectPtr[2] >= itemPtr->x2) && (rectPtr[3] >= itemPtr->y2)) {
+	return 1;
+    }
+    return 0;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *
+ *  ScaleProc --
+ *
+ *    This procedure is invoked to rescale a text item.
+ *
+ * Results:
+ *    None.
+ *
+ * Side effects:
+ *    Scales the position of the text, but not the size of the font
+ *    for the text.
+ *
+ * ------------------------------------------------------------------------
+ */
+/* ARGSUSED */
+static void
+ScaleProc(Tk_Canvas canvas, Tk_Item *canvItemPtr, double x, double y, 
+	  double scaleX, double scaleY)
+{
+    HotspotItem *itemPtr = (HotspotItem *)canvItemPtr;
+
+    itemPtr->x = x + scaleX * (itemPtr->x - x);
+    itemPtr->y = y + scaleY * (itemPtr->y - y);
+    ComputeBbox(itemPtr);
+    return;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *
+ *  TranslateProc --
+ *
+ *    This procedure is called to move a text item by a given amount.
+ *
+ *  Results:
+ *    None.
+ *
+ *  Side effects:
+ *    The position of the text item is offset by (xDelta, yDelta),
+ *    and the bounding box is updated in the generic part of the
+ *    item structure.
+ *
+ * ------------------------------------------------------------------------
+ */
+static void
+TranslateProc(Tk_Canvas canvas, Tk_Item *canvItemPtr, double dx,  double dy)
+{
+    HotspotItem *itemPtr = (HotspotItem *)canvItemPtr;
+
+    itemPtr->x += dx;
+    itemPtr->y += dy;
+    ComputeBbox(itemPtr);
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *
+ *  PostscriptProc --
+ *
+ *    This procedure is called to generate Postscript for hotspot items.
+ *
+ *  Results:
+ *    The return value is a standard Tcl result.  If an error occurs in
+ *    generating Postscript then an error message is left in the interp's
+ *    result, replacing whatever used to be there.  If no error occurs, then
+ *    Postscript for the item is appended to the result.
+ *
+ *  Side effects:
+ *    None.
+ *
+ * ------------------------------------------------------------------------
+ */
+static int
+PostscriptProc(Tcl_Interp *interp, Tk_Canvas canvas, Tk_Item *canvItemPtr, 
+	       int prepass)
+{
+#ifdef notdef
+    HotspotItem *itemPtr = (HotspotItem *)canvItemPtr;
+    Tk_Window canvasWin = Tk_CanvasTkwin(canvas);
+
+    int x, y;
+    double xpos;
+    Tk_FontMetrics fm;
+    char *justify;
+    char buffer[500];
+    int delta;
+
+    if (itemPtr->textColor == NULL || itemPtr->text == NULL
+          || *itemPtr->text == 0) {
+        return TCL_OK;
+    }
+
+    if (Tk_CanvasPsFont(interp, canvas, itemPtr->font) != TCL_OK) {
+        return TCL_ERROR;
+    }
+
+
+    if (!prepass && 
+	Tk_CanvasPsColor(interp, canvas, itemPtr->textColor) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    xpos = itemPtr->x;
+
+    /*
+     * Check for an image to print.
+     */
+
+    if (itemPtr->imageLeft) {
+      if(!prepass) {
+	delta = (itemPtr->base.y2 - itemPtr->base.y1)/2 - itemPtr->imageLeftH/2;
+	sprintf(buffer, "%.15g %.15g", xpos,
+		Tk_CanvasPsY(canvas, itemPtr->y+delta+2));
+	Tcl_AppendResult(interp, buffer, " translate\n", (char *) NULL);
+      }
+
+      Tk_PostscriptImage(itemPtr->imageLeft, interp, canvasWin,
+			 ((TkCanvas*)canvas)->psInfo, 0, 0,
+                         itemPtr->imageLeftW, itemPtr->imageLeftH, prepass);
+
+      if ( !prepass ) {
+	/*
+	 * This PS code is needed in order for the label to display
+	 * correctly
+	 */
+	
+	Tcl_AppendResult(interp,"grestore\ngsave\n",(char *)NULL);
+      }
+
+      xpos += itemPtr->imageLeftW + itemPtr->padding;
+    }
+
+    
+    if (prepass != 0 ) {
+      return TCL_OK;
+    }
+
+    /*
+     * Before drawing the text, reset the font and color information.
+     * Otherwise the text won't appear.
+     */
+
+    if ( itemPtr->imageLeft ){
+      if (Tk_CanvasPsFont(interp, canvas, itemPtr->font) != TCL_OK) {
+        return TCL_ERROR;
+      }
+      
+      if (Tk_CanvasPsColor(interp, canvas, itemPtr->textColor) != TCL_OK) {
+        return TCL_ERROR;
+      }
+    }
+
+
+    /*
+     * Draw the text for the hotspot.
+     */
+    sprintf(buffer, "%.15g %.15g [\n", xpos,
+        Tk_CanvasPsY(canvas, itemPtr->y));
+    Tcl_AppendResult(interp, buffer, (char *) NULL);
+
+    Tk_TextLayoutToPostscript(interp, itemPtr->textLayout);
+
+    x = 0;  y = 0;  justify = NULL;
+    switch (itemPtr->anchor) {
+        case TK_ANCHOR_NW:        x = 0; y = 0;        break;
+        case TK_ANCHOR_N:         x = 1; y = 0;        break;
+        case TK_ANCHOR_NE:        x = 2; y = 0;        break;
+        case TK_ANCHOR_E:         x = 2; y = 1;        break;
+        case TK_ANCHOR_SE:        x = 2; y = 2;        break;
+        case TK_ANCHOR_S:         x = 1; y = 2;        break;
+        case TK_ANCHOR_SW:        x = 0; y = 2;        break;
+        case TK_ANCHOR_W:         x = 0; y = 1;        break;
+        case TK_ANCHOR_CENTER:    x = 1; y = 1;        break;
+    }
+    justify = "0"; /* TK_JUSTIFY_LEFT */
+
+    Tk_GetFontMetrics(itemPtr->font, &fm);
+    sprintf(buffer, "] %d %g %g %s %s DrawText\n",
+            fm.linespace, x / -2.0, y / 2.0, justify,
+            "false" /* stipple */);
+    Tcl_AppendResult(interp, buffer, (char *) NULL);
+#endif
+    return TCL_OK;
+}
+
+static HotspotItem *
+GetHotspotItem(Tcl_Interp *interp, Tcl_Obj *canvasObjPtr, Tcl_Obj *itemObjPtr)
+{
+    const char *string;
+    Tk_Item *canvItemPtr;
+    HotspotItem *itemPtr;
+    Tcl_CmdInfo cmdInfo;
+    TkCanvas *canvasPtr;
+    int id;
+    long lid;
+    Tcl_HashEntry *hPtr;
+    Tk_Window tkwin;
+
+    /* See if we can find the canvas window associated by the name. */
+    string = Tcl_GetString(canvasObjPtr);
+    tkwin = Tk_NameToWindow(interp, string, Tk_MainWindow(interp));
+    if (tkwin == NULL) {
+	Tcl_AppendResult(interp, "can't find canvas \"", string, "\"",
+			 (char *)NULL);
+	return NULL;
+    }
+    if (strcmp(Tk_Class(tkwin), "Canvas") != 0) {
+	Tcl_AppendResult(interp, "window \"", string, "\" isn't a canvas.",
+			 (char *)NULL);
+	return NULL;
+    }
+    /* If we're this far, then we can try to get the clientData. If the widget
+    * command was renamed, we're out of luck. */
+    if (!Tcl_GetCommandInfo(interp, string, &cmdInfo)) {
+	Tcl_AppendResult(interp, "can't find canvas \"", string, "\"",
+			 (char *)NULL);
+	return NULL;
+    }
+    canvasPtr = cmdInfo.objClientData;
+    if (Tcl_GetIntFromObj(interp, itemObjPtr, &id) != TCL_OK) {
+	return NULL;
+    }
+    string = Tcl_GetString(itemObjPtr);
+
+    lid = id;
+    hPtr = Tcl_FindHashEntry(&canvasPtr->idTable, (char *)lid);
+    if (hPtr == NULL) {
+	Tcl_AppendResult(interp, "can't find canvas item \"", string,
+		"\"", (char *)NULL);
+	return NULL;
+
+    }
+    canvItemPtr = Tcl_GetHashValue(hPtr);
+    /* The canvas item we find has to be a hotspot. */
+    if (canvItemPtr->typePtr != &hotspotType) {
+	Tcl_AppendResult(interp, "bad canvas item \"", string, 
+		"\": must be a hotspot", (char *)NULL);
+	return NULL;
+
+    }
+    return itemPtr = (HotspotItem *)canvItemPtr;
+}
+
+static Tcl_Obj *
+Identify(Tcl_Interp *interp, HotspotItem *itemPtr, double x, double y)
+{
+    Tcl_Obj* resultPtr = NULL;
+    ItemSegment *segPtr;
+    Tcl_Obj* objPtr;
+
+    x -= itemPtr->x1;
+    y -= itemPtr->y1;
+    for (segPtr = itemPtr->firstPtr; segPtr != NULL; segPtr = segPtr->nextPtr) {
+	if (segPtr->type == SEGMENT_TEXT) {
+	    continue;			/* Ignore text segments. */
+	}
+	if ((x >= segPtr->x) && (x < (segPtr->x + segPtr->width)) && 
+	    (y >= segPtr->y) && (y < (segPtr->y + segPtr->height))) {
+
+            /* build return list: {string x0 y0 x1 y1} */
+	    resultPtr = Tcl_NewListObj(0, (Tcl_Obj **)NULL);
+
+            objPtr = Tcl_NewStringObj(segPtr->text, -1);
+            Tcl_ListObjAppendElement(interp, resultPtr, objPtr);
+
+            objPtr = Tcl_NewIntObj(itemPtr->x1 + segPtr->x);
+            Tcl_ListObjAppendElement(interp, resultPtr, objPtr);
+            objPtr = Tcl_NewIntObj(itemPtr->y1 + segPtr->y);
+            Tcl_ListObjAppendElement(interp, resultPtr, objPtr);
+
+            objPtr = Tcl_NewIntObj(itemPtr->x1 + segPtr->x + segPtr->width);
+            Tcl_ListObjAppendElement(interp, resultPtr, objPtr);
+            objPtr = Tcl_NewIntObj(itemPtr->y1 + segPtr->y + segPtr->height);
+            Tcl_ListObjAppendElement(interp, resultPtr, objPtr);
+
+	    return resultPtr;
+	}
+    }
+    return NULL;
+}
+
+static int
+HotspotCmd(ClientData clientData, Tcl_Interp *interp, int objc, 
+	   Tcl_Obj *const *objv)
+{
+    const char *string;
+    HotspotItem *itemPtr;
+    int length;
+    char c;
+
+    if (objc < 3) {
+	return TCL_ERROR;
+    }
+    itemPtr = GetHotspotItem(interp, objv[2], objv[3]);
+    if (itemPtr == NULL) {
+	return TCL_ERROR;
+    }
+    string = Tcl_GetStringFromObj(objv[1], &length);
+    c = string[0];
+    if ((c == 'a') && (strncmp(string, "activate", length) == 0)) {
+	/* hotspot activate .c 0 varName */
+    } else if ((c == 'd') && (strncmp(string, "deactivate", length) == 0)) {
+	/* hotspot deactivate .c 0 */
+	itemPtr->activeValue = NULL;
+    } else if ((c == 'i') && (strncmp(string, "identify", length) == 0)) {
+	double x, y;
+	Tcl_Obj *objPtr;
+
+	/* hotspot identify .c 0 x y */
+	if ((Tcl_GetDoubleFromObj(interp, objv[4], &x) != TCL_OK) ||
+	    (Tcl_GetDoubleFromObj(interp, objv[5], &y) != TCL_OK)) {
+	    return TCL_ERROR;
+	}
+	objPtr = Identify(interp, itemPtr, x, y);
+        if (objPtr != NULL) {
+            Tcl_SetObjResult(interp, objPtr);
+        }
+    } else if ((c == 'v') && (strncmp(string, "variables", length) == 0)) {
+        Tcl_Obj *listObjPtr;
+	ItemSegment *segPtr;
+
+	/* hotspot variables .c 0 */
+	listObjPtr = Tcl_NewListObj(0, (Tcl_Obj **)NULL);
+	for (segPtr = itemPtr->firstPtr; segPtr != NULL; 
+	     segPtr = segPtr->nextPtr) {
+	    if (segPtr->type == SEGMENT_VALUE) {
+		Tcl_Obj *objPtr;
+
+		objPtr = Tcl_NewStringObj(segPtr->text, -1);
+		Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
+	    }
+	}
+        Tcl_SetObjResult(interp, listObjPtr);
+    } else {
+	Tcl_AppendResult(interp, "unknown hotspot option \"", string, 
+		"\": should be either activate, deactivate, identity, ",
+		"or variables", (char *)NULL);
+	return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpCanvHotspot_Init --
+ *
+ *  Invoked when the Rappture GUI library is being initialized
+ *  to install the "hotspot" item on the Tk canvas widget.
+ *
+ *  Returns TCL_OK if successful, or TCL_ERROR (along with an error
+ *  message in the interp) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+int
+RpCanvHotspot_Init(interp)
+    Tcl_Interp *interp;         /* interpreter being initialized */
+{
+    Tk_CreateItemType(&hotspotType);
+    Tcl_CreateObjCommand(interp, "Rappture::hotspot", HotspotCmd, NULL, NULL);
+    return TCL_OK;
+}
+
Index: /tags/1.6.0/gui/src/RpCanvPlacard.c
===================================================================
--- /tags/1.6.0/gui/src/RpCanvPlacard.c	(revision 6168)
+++ /tags/1.6.0/gui/src/RpCanvPlacard.c	(revision 6168)
@@ -0,0 +1,1460 @@
+/*
+ * ----------------------------------------------------------------------
+ *  RpCanvPlacard - canvas item with text and background box
+ *
+ *  This canvas item makes it easy to create a box with text inside.
+ *  The box is normally stretched around the text, but can be given
+ *  a max size and causing text to be clipped.
+ *
+ *    .c create placard <x> <y> -anchor <nsew> \
+ *        -text <text>         << text to be displayed
+ *        -font <name>         << font used for text
+ *        -imageleft <image>   << image displayed on the left of text
+ *        -imageright <image>  << image displayed on the right of text
+ *        -maxwidth <size>     << maximum size
+ *        -textcolor <color>   << text color
+ *        -background <color>  << fill for rect behind text
+ *        -outline <color>     << outline around text
+ *        -borderwidth <size>  << for 3D border
+ *        -relief <value>      << for 3D border (drawn under -outline)
+ *        -tags <taglist>      << usual Tk canvas tags
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <string.h>
+#include <math.h>
+#include "tk.h"
+
+/* used for text within the placard that needs to be truncated */
+#define ellipsis_width 9
+#define ellipsis_height 1
+static unsigned char ellipsis_bits[] = {
+   0x92, 0x00};
+
+/*
+ * Record for each placard item:
+ */
+typedef struct PlacardItem  {
+    Tk_Item header;             /* Generic stuff that's the same for all
+                                 * types.  MUST BE FIRST IN STRUCTURE. */
+    Tcl_Interp *interp;         /* Interp that owns this item */
+    Tk_Window tkwin;            /* Window that represents this canvas */
+    Tk_Canvas canvas;           /* Canvas that owns this item */
+    Pixmap dots;                /* ellipsis used for truncated text */
+
+    /*
+     * Fields that are set by widget commands other than "configure":
+     */
+    double x, y;                /* Positioning point for text */
+
+    /*
+     * Configuration settings that are updated by Tk_ConfigureWidget:
+     */
+    char *text;                 /* text to be displayed */
+    Tk_Anchor anchor;           /* Where to anchor text relative to (x,y) */
+    XColor *textColor;          /* Color for text */
+    XColor *lineColor;          /* Color for outline of rectangle */
+    Tk_3DBorder bgBorder;       /* used for drawing background rectangle */
+    Tk_Font tkfont;             /* Font for drawing text */
+    int width;                  /* Fixed width for placard (0 = not set) */
+    int maxWidth;               /* Maximum overall width for placard */
+    int borderWidth;            /* supports 3D border (drawn under -outline) */
+    int relief;                 /* indicates whether placard as a whole is
+                                 * raised, sunken, or flat */
+    int padding;                /* Padding around text and images */
+
+    char *imageLeftString;      /* Name of image displayed on the left */
+    char *imageRightString;     /* Name of image displayed on the right */
+  
+    /*
+     * Fields whose values are derived from the current values of the
+     * configuration settings above:
+     */
+    int textNumChars;           /* Length of text in characters. */
+    int textNumBytes;           /* Length of text in bytes. */
+    int textDrawChars;          /* Same as textNumChars or shorter, if
+                                 * text is too long for -maxwidth */
+    int textWidth;              /* Overall width of text (perhaps truncated)
+                                 * in pixels */
+    Tk_TextLayout textLayout;   /* Cached text layout information for value */
+
+    Tk_Image imageLeft;         /* icon drawn to left of text */
+    int imageLeftW;             /* width of image (if image is not NULL) */
+    int imageLeftH;             /* height of image (if image is not NULL) */
+
+    Tk_Image imageRight;        /* icon drawn to right of text */
+    int imageRightW;            /* width of image (if image is not NULL) */
+    int imageRightH;            /* height of image (if image is not NULL) */
+
+    int leftEdge;               /* Pixel location of the left edge of the
+                                 * item. (Where the left border of the
+                                 * text layout is drawn.) */
+    int rightEdge;              /* Pixel just to right of right edge of
+                                 * area of text item. */
+    GC gcText;                  /* Graphics context for drawing text. */
+    GC gcLineRect;              /* Graphics context for rectangle outline. */
+} PlacardItem;
+
+/*
+ * Information used for parsing configuration specs:
+ */
+static Tk_CustomOption tagsOption = {
+    (Tk_OptionParseProc *) Tk_CanvasTagsParseProc,
+    Tk_CanvasTagsPrintProc, (ClientData) NULL
+};
+
+static Tk_ConfigSpec configSpecs[] = {
+    {TK_CONFIG_ANCHOR, "-anchor", (char*)NULL, (char*)NULL,
+        "center", Tk_Offset(PlacardItem, anchor),
+        TK_CONFIG_DONT_SET_DEFAULT},
+    {TK_CONFIG_BORDER, "-background", (char*)NULL, (char*)NULL,
+        "", Tk_Offset(PlacardItem, bgBorder), TK_CONFIG_NULL_OK},
+    {TK_CONFIG_PIXELS, "-borderwidth", (char*)NULL, (char*)NULL,
+        "0", Tk_Offset(PlacardItem, borderWidth), 0},
+    {TK_CONFIG_FONT, "-font", (char*)NULL, (char*)NULL,
+        "helvetica -12", Tk_Offset(PlacardItem, tkfont), 0},
+    {TK_CONFIG_COLOR, "-foreground", (char*)NULL, (char*)NULL,
+        "black", Tk_Offset(PlacardItem, textColor), TK_CONFIG_NULL_OK},
+    {TK_CONFIG_STRING, "-imageleft", (char*)NULL, (char*)NULL,
+        (char*)NULL, Tk_Offset(PlacardItem, imageLeftString),
+        TK_CONFIG_NULL_OK},
+    {TK_CONFIG_STRING, "-imageright", (char*)NULL, (char*)NULL,
+        (char*)NULL, Tk_Offset(PlacardItem, imageRightString),
+        TK_CONFIG_NULL_OK},
+    {TK_CONFIG_PIXELS, "-maxwidth", (char*)NULL, (char*)NULL,
+        "0", Tk_Offset(PlacardItem, maxWidth), 0},
+    {TK_CONFIG_COLOR, "-outline", (char*)NULL, (char*)NULL,
+        "", Tk_Offset(PlacardItem, lineColor), TK_CONFIG_NULL_OK},
+    {TK_CONFIG_PIXELS, "-padding", (char*)NULL, (char*)NULL,
+        "4", Tk_Offset(PlacardItem, padding), 0},
+    {TK_CONFIG_RELIEF, "-relief", (char*)NULL, (char*)NULL,
+        "flat", Tk_Offset(PlacardItem, relief), 0},
+    {TK_CONFIG_CUSTOM, "-tags", (char*)NULL, (char*)NULL,
+        (char*)NULL, 0, TK_CONFIG_NULL_OK, &tagsOption},
+    {TK_CONFIG_STRING, "-text", (char*)NULL, (char*)NULL,
+        "", Tk_Offset(PlacardItem, text), 0},
+    {TK_CONFIG_PIXELS, "-width", (char*)NULL, (char*)NULL,
+        "0", Tk_Offset(PlacardItem, width), 0},
+    {TK_CONFIG_END, (char*)NULL, (char*)NULL, (char*)NULL,
+        (char*)NULL, 0, 0}
+};
+
+/*
+ * Prototypes for procedures defined in this file
+ */
+static void ComputePlacardBbox _ANSI_ARGS_((Tk_Canvas canvas,
+    PlacardItem *plPtr));
+static int ConfigurePlacard _ANSI_ARGS_((Tcl_Interp *interp,
+    Tk_Canvas canvas, Tk_Item *itemPtr, int argc,
+    Tcl_Obj *CONST argv[], int flags));
+static int CreatePlacard _ANSI_ARGS_((Tcl_Interp *interp,
+    Tk_Canvas canvas, struct Tk_Item *itemPtr,
+    int argc, Tcl_Obj *CONST argv[]));
+static void DeletePlacard _ANSI_ARGS_((Tk_Canvas canvas,
+    Tk_Item *itemPtr, Display *display));
+static void DisplayCanvPlacard _ANSI_ARGS_((Tk_Canvas canvas,
+    Tk_Item *itemPtr, Display *display, Drawable dst,
+    int x, int y, int width, int height));
+static void ScalePlacard _ANSI_ARGS_((Tk_Canvas canvas,
+    Tk_Item *itemPtr, double originX, double originY,
+    double scaleX, double scaleY));
+static void TranslatePlacard _ANSI_ARGS_((Tk_Canvas canvas,
+    Tk_Item *itemPtr, double deltaX, double deltaY));
+static int PlacardCoords _ANSI_ARGS_((Tcl_Interp *interp,
+    Tk_Canvas canvas, Tk_Item *itemPtr,
+    int argc, Tcl_Obj *CONST argv[]));
+static int PlacardToArea _ANSI_ARGS_((Tk_Canvas canvas,
+    Tk_Item *itemPtr, double *rectPtr));
+static double PlacardToPoint _ANSI_ARGS_((Tk_Canvas canvas,
+    Tk_Item *itemPtr, double *pointPtr));
+static int PlacardToPostscript _ANSI_ARGS_((Tcl_Interp *interp,
+    Tk_Canvas canvas, Tk_Item *itemPtr, int prepass));
+
+static void ImageLeftChangedProc _ANSI_ARGS_((ClientData clientData,
+    int x, int y, int width, int height, int imgWidth,
+    int imgHeight));
+static void ImageRightChangedProc _ANSI_ARGS_((ClientData clientData,
+    int x, int y, int width, int height, int imgWidth,
+    int imgHeight));
+
+/*
+ * The structures below defines the canvas item type:
+ */
+Tk_ItemType rpPlacardType = {
+    "placard",                          /* name */
+    sizeof(PlacardItem),                /* itemSize */
+    CreatePlacard,                      /* createProc */
+    configSpecs,                        /* configSpecs */
+    ConfigurePlacard,                   /* configureProc */
+    PlacardCoords,                      /* coordProc */
+    DeletePlacard,                      /* deleteProc */
+    DisplayCanvPlacard,                 /* displayProc */
+    TK_CONFIG_OBJS,                     /* flags */
+    PlacardToPoint,                     /* pointProc */
+    PlacardToArea,                      /* areaProc */
+    PlacardToPostscript,                /* postscriptProc */
+    ScalePlacard,                       /* scaleProc */
+    TranslatePlacard,                   /* translateProc */
+    (Tk_ItemIndexProc *) NULL,          /* indexProc */
+    (Tk_ItemCursorProc *) NULL,         /* icursorProc */
+    (Tk_ItemSelectionProc *) NULL,      /* selectionProc */
+    (Tk_ItemInsertProc *) NULL,         /* insertProc */
+    (Tk_ItemDCharsProc *) NULL,         /* dTextProc */
+    (Tk_ItemType *) NULL,               /* nextPtr */
+};
+
+/*
+ * The record below describes a canvas widget.  It is made available
+ * to the item procedures so they can access certain shared fields such
+ * as the overall displacement and scale factor for the canvas.
+ */
+
+typedef struct TkCanvas {
+    Tk_Window tkwin;		/* Window that embodies the canvas.  NULL
+				 * means that the window has been destroyed
+				 * but the data structures haven't yet been
+				 * cleaned up.*/
+    Display *display;		/* Display containing widget;  needed, among
+				 * other things, to release resources after
+				 * tkwin has already gone away. */
+    Tcl_Interp *interp;		/* Interpreter associated with canvas. */
+    Tcl_Command widgetCmd;	/* Token for canvas's widget command. */
+    Tk_Item *firstItemPtr;	/* First in list of all items in canvas,
+				 * or NULL if canvas empty. */
+    Tk_Item *lastItemPtr;	/* Last in list of all items in canvas,
+				 * or NULL if canvas empty. */
+
+    /*
+     * Information used when displaying widget:
+     */
+
+    int borderWidth;		/* Width of 3-D border around window. */
+    Tk_3DBorder bgBorder;	/* Used for canvas background. */
+    int relief;			/* Indicates whether window as a whole is
+				 * raised, sunken, or flat. */
+    int highlightWidth;		/* Width in pixels of highlight to draw
+				 * around widget when it has the focus.
+				 * <= 0 means don't draw a highlight. */
+    XColor *highlightBgColorPtr;
+				/* Color for drawing traversal highlight
+				 * area when highlight is off. */
+    XColor *highlightColorPtr;	/* Color for drawing traversal highlight. */
+    int inset;			/* Total width of all borders, including
+				 * traversal highlight and 3-D border.
+				 * Indicates how much interior stuff must
+				 * be offset from outside edges to leave
+				 * room for borders. */
+    GC pixmapGC;		/* Used to copy bits from a pixmap to the
+				 * screen and also to clear the pixmap. */
+    int width, height;		/* Dimensions to request for canvas window,
+				 * specified in pixels. */
+    int redrawX1, redrawY1;	/* Upper left corner of area to redraw,
+				 * in pixel coordinates.  Border pixels
+				 * are included.  Only valid if
+				 * REDRAW_PENDING flag is set. */
+    int redrawX2, redrawY2;	/* Lower right corner of area to redraw,
+				 * in integer canvas coordinates.  Border
+				 * pixels will *not* be redrawn. */
+    int confine;		/* Non-zero means constrain view to keep
+				 * as much of canvas visible as possible. */
+
+    /*
+     * Information used to manage the selection and insertion cursor:
+     */
+
+    Tk_CanvasTextInfo textInfo; /* Contains lots of fields;  see tk.h for
+				 * details.  This structure is shared with
+				 * the code that implements individual items. */
+    int insertOnTime;		/* Number of milliseconds cursor should spend
+				 * in "on" state for each blink. */
+    int insertOffTime;		/* Number of milliseconds cursor should spend
+				 * in "off" state for each blink. */
+    Tcl_TimerToken insertBlinkHandler;
+				/* Timer handler used to blink cursor on and
+				 * off. */
+
+    /*
+     * Transformation applied to canvas as a whole:  to compute screen
+     * coordinates (X,Y) from canvas coordinates (x,y), do the following:
+     *
+     * X = x - xOrigin;
+     * Y = y - yOrigin;
+     */
+
+    int xOrigin, yOrigin;	/* Canvas coordinates corresponding to
+				 * upper-left corner of window, given in
+				 * canvas pixel units. */
+    int drawableXOrigin, drawableYOrigin;
+				/* During redisplay, these fields give the
+				 * canvas coordinates corresponding to
+				 * the upper-left corner of the drawable
+				 * where items are actually being drawn
+				 * (typically a pixmap smaller than the
+				 * whole window). */
+
+    /*
+     * Information used for event bindings associated with items.
+     */
+
+    Tk_BindingTable bindingTable;
+				/* Table of all bindings currently defined
+				 * for this canvas.  NULL means that no
+				 * bindings exist, so the table hasn't been
+				 * created.  Each "object" used for this
+				 * table is either a Tk_Uid for a tag or
+				 * the address of an item named by id. */
+    Tk_Item *currentItemPtr;	/* The item currently containing the mouse
+				 * pointer, or NULL if none. */
+    Tk_Item *newCurrentPtr;	/* The item that is about to become the
+				 * current one, or NULL.  This field is
+				 * used to detect deletions  of the new
+				 * current item pointer that occur during
+				 * Leave processing of the previous current
+				 * item.  */
+    double closeEnough;		/* The mouse is assumed to be inside an
+				 * item if it is this close to it. */
+    XEvent pickEvent;		/* The event upon which the current choice
+				 * of currentItem is based.  Must be saved
+				 * so that if the currentItem is deleted,
+				 * can pick another. */
+    int state;			/* Last known modifier state.  Used to
+				 * defer picking a new current object
+				 * while buttons are down. */
+
+    /*
+     * Information used for managing scrollbars:
+     */
+
+    char *xScrollCmd;		/* Command prefix for communicating with
+				 * horizontal scrollbar.  NULL means no
+				 * horizontal scrollbar.  Malloc'ed*/
+    char *yScrollCmd;		/* Command prefix for communicating with
+				 * vertical scrollbar.  NULL means no
+				 * vertical scrollbar.  Malloc'ed*/
+    int scrollX1, scrollY1, scrollX2, scrollY2;
+				/* These four coordinates define the region
+				 * that is the 100% area for scrolling (i.e.
+				 * these numbers determine the size and
+				 * location of the sliders on scrollbars).
+				 * Units are pixels in canvas coords. */
+    char *regionString;		/* The option string from which scrollX1
+				 * etc. are derived.  Malloc'ed. */
+    int xScrollIncrement;	/* If >0, defines a grid for horizontal
+				 * scrolling.  This is the size of the "unit",
+				 * and the left edge of the screen will always
+				 * lie on an even unit boundary. */
+    int yScrollIncrement;	/* If >0, defines a grid for horizontal
+				 * scrolling.  This is the size of the "unit",
+				 * and the left edge of the screen will always
+				 * lie on an even unit boundary. */
+
+    /*
+     * Information used for scanning:
+     */
+
+    int scanX;			/* X-position at which scan started (e.g.
+				 * button was pressed here). */
+    int scanXOrigin;		/* Value of xOrigin field when scan started. */
+    int scanY;			/* Y-position at which scan started (e.g.
+				 * button was pressed here). */
+    int scanYOrigin;		/* Value of yOrigin field when scan started. */
+
+    /*
+     * Information used to speed up searches by remembering the last item
+     * created or found with an item id search.
+     */
+
+    Tk_Item *hotPtr;		/* Pointer to "hot" item (one that's been
+				 * recently used.  NULL means there's no
+				 * hot item. */
+    Tk_Item *hotPrevPtr;	/* Pointer to predecessor to hotPtr (NULL
+				 * means item is first in list).  This is
+				 * only a hint and may not really be hotPtr's
+				 * predecessor. */
+
+    /*
+     * Miscellaneous information:
+     */
+
+    Tk_Cursor cursor;		/* Current cursor for window, or None. */
+    char *takeFocus;		/* Value of -takefocus option;  not used in
+				 * the C code, but used by keyboard traversal
+				 * scripts.  Malloc'ed, but may be NULL. */
+    double pixelsPerMM;		/* Scale factor between MM and pixels;
+				 * used when converting coordinates. */
+    int flags;			/* Various flags;  see below for
+				 * definitions. */
+    int nextId;			/* Number to use as id for next item
+				 * created in widget. */
+    Tk_PostscriptInfo psInfo;
+				/* Pointer to information used for generating
+				 * Postscript for the canvas.  NULL means
+				 * no Postscript is currently being
+				 * generated. */
+    Tcl_HashTable idTable;	/* Table of integer indices. */
+    /*
+     * Additional information, added by the 'dash'-patch
+     */
+    VOID *reserved1;
+    Tk_State canvas_state;	/* state of canvas */
+    VOID *reserved2;
+    VOID *reserved3;
+    Tk_TSOffset tsoffset;
+#ifndef USE_OLD_TAG_SEARCH
+    void *bindTagExprs; /* linked list of tag expressions used in bindings */
+#endif
+} TkCanvas;
+
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpCanvPlacard_Init --
+ *
+ *  Invoked when the Rappture GUI library is being initialized
+ *  to install the "placard" item on the Tk canvas widget.
+ *
+ *  Returns TCL_OK if successful, or TCL_ERROR (along with an error
+ *  message in the interp) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+int
+RpCanvPlacard_Init(interp)
+    Tcl_Interp *interp;         /* interpreter being initialized */
+{
+    Tk_CreateItemType(&rpPlacardType);
+
+    Tk_DefineBitmap(interp, Tk_GetUid("rp_ellipsis"),
+        (char*)ellipsis_bits, ellipsis_width, ellipsis_height);
+
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  CreatePlacard --
+ *
+ *    This procedure is invoked to create a new placard item
+ *    in a canvas.  A placard is a text item with a box behind it.
+ *
+ *  Results:
+ *    A standard Tcl return name.  If an error occurred in creating
+ *    the item then an error message is left in the interp's result.
+ *    In this case itemPtr is left uninitialized so it can be safely
+ *    freed by the caller.
+ *
+ *  Side effects:
+ *    A new item is created.
+ * ------------------------------------------------------------------------
+ */
+static int
+CreatePlacard(interp, canvas, itemPtr, argc, argv)
+    Tcl_Interp *interp;           /* interpreter for error reporting */
+    Tk_Canvas canvas;             /* canvas to hold new item */
+    Tk_Item *itemPtr;             /* record to hold new item; header has been
+                                   * initialized by caller */
+    int argc;                     /* number of arguments in argv */
+    Tcl_Obj *CONST argv[];        /* arguments describing item */
+{
+    PlacardItem *plPtr = (PlacardItem *) itemPtr;
+    int i;
+
+    if (argc == 1) {
+        i = 1;
+    } else {
+        char *arg = Tcl_GetStringFromObj(argv[1], NULL);
+        if ((argc > 1) && (arg[0] == '-')
+                && (arg[1] >= 'a') && (arg[1] <= 'z')) {
+            i = 1;
+        } else {
+            i = 2;
+        }
+    }
+
+    if (argc < i) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"",
+            Tk_PathName(Tk_CanvasTkwin(canvas)), " create ",
+            itemPtr->typePtr->name, " x y ?options?\"", (char *) NULL);
+        return TCL_ERROR;
+    }
+
+    /*
+     * Carry out initialization that is needed in order to clean up after
+     * errors during the the remainder of this procedure.
+     */
+    plPtr->interp           = interp;
+    plPtr->tkwin            = Tk_CanvasTkwin(canvas);
+    plPtr->canvas           = canvas;
+    plPtr->dots             = Tk_GetBitmap(interp, plPtr->tkwin,
+                                  Tk_GetUid("rp_ellipsis"));
+    plPtr->text             = NULL;
+    plPtr->anchor           = TK_ANCHOR_CENTER;
+    plPtr->textColor        = NULL;
+    plPtr->bgBorder         = NULL;
+    plPtr->lineColor        = NULL;
+    plPtr->tkfont           = NULL;
+    plPtr->width            = 0;
+    plPtr->maxWidth         = 0;
+    plPtr->borderWidth      = 0;
+    plPtr->relief           = TK_RELIEF_FLAT;
+    plPtr->padding          = 0;
+    plPtr->imageLeftString  = NULL;
+    plPtr->imageRightString = NULL;
+    plPtr->imageLeft        = NULL;
+    plPtr->imageRight       = NULL;
+    plPtr->textNumChars     = 0;
+    plPtr->textNumBytes     = 0;
+    plPtr->textDrawChars    = 0;
+    plPtr->textWidth        = 0;
+    plPtr->textLayout       = NULL;
+    plPtr->leftEdge         = 0;
+    plPtr->rightEdge        = 0;
+    plPtr->gcText           = None;
+    plPtr->gcLineRect       = None;
+
+    /*
+     * Process the arguments to fill in the item record.
+     */
+    if ((PlacardCoords(interp, canvas, itemPtr, i, argv) != TCL_OK)) {
+        goto error;
+    }
+    if (ConfigurePlacard(interp, canvas, itemPtr,
+            argc-i, argv+i, 0) == TCL_OK) {
+
+        return TCL_OK;
+    }
+
+error:
+    DeletePlacard(canvas, itemPtr, Tk_Display(plPtr->tkwin));
+    return TCL_ERROR;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  PlacardCoords --
+ *
+ *    This procedure is invoked to process the "coords" widget command on
+ *    placard items.  See the user documentation for details on what
+ *    it does.
+ *
+ *  Results:
+ *    Returns TCL_OK or TCL_ERROR, and sets the interp's result.
+ *
+ *  Side effects:
+ *    The coordinates for the given item may be changed.
+ * ------------------------------------------------------------------------
+ */
+static int
+PlacardCoords(interp, canvas, itemPtr, argc, argv)
+    Tcl_Interp *interp;     /* Used for error reporting. */
+    Tk_Canvas canvas;       /* Canvas containing item. */
+    Tk_Item *itemPtr;       /* Item whose coordinates are to be read or
+                             * modified. */
+    int argc;               /* Number of coordinates supplied in argv. */
+    Tcl_Obj *CONST argv[];  /* Array of coordinates: x1, y1, x2, y2, ... */
+{
+    PlacardItem *plPtr = (PlacardItem *) itemPtr;
+    char buf[64 + TCL_INTEGER_SPACE];
+
+    if (argc == 0) {
+        Tcl_Obj *obj = Tcl_NewObj();
+        Tcl_Obj *subobj = Tcl_NewDoubleObj(plPtr->x);
+        Tcl_ListObjAppendElement(interp, obj, subobj);
+        subobj = Tcl_NewDoubleObj(plPtr->y);
+        Tcl_ListObjAppendElement(interp, obj, subobj);
+        Tcl_SetObjResult(interp, obj);
+    }
+    else if (argc < 3) {
+        if (argc == 1) {
+            if (Tcl_ListObjGetElements(interp, argv[0], &argc,
+                    (Tcl_Obj ***) &argv) != TCL_OK) {
+                return TCL_ERROR;
+            } else if (argc != 2) {
+
+                sprintf(buf, "wrong # coordinates: expected 2, got %d", argc);
+                Tcl_SetResult(interp, buf, TCL_VOLATILE);
+                return TCL_ERROR;
+            }
+        }
+        if ((Tk_CanvasGetCoordFromObj(interp, canvas, argv[0],
+                   &plPtr->x) != TCL_OK)
+                || (Tk_CanvasGetCoordFromObj(interp, canvas, argv[1],
+                          &plPtr->y) != TCL_OK)) {
+            return TCL_ERROR;
+        }
+        ComputePlacardBbox(canvas, plPtr);
+    } else {
+        sprintf(buf, "wrong # coordinates: expected 0 or 2, got %d", argc);
+        Tcl_SetResult(interp, buf, TCL_VOLATILE);
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  ConfigurePlacard --
+ *
+ *    This procedure is invoked to configure various aspects of a
+ *    placard item, such as its color and font.
+ *
+ *  Results:
+ *    A standard Tcl result code.  If an error occurs, then an error
+ *    message is left in the interp's result.
+ *
+ *  Side effects:
+ *    Configuration information, such as colors and GCs, may be set
+ *    for itemPtr.
+ * ------------------------------------------------------------------------
+ */
+static int
+ConfigurePlacard(interp, canvas, itemPtr, argc, argv, flags)
+    Tcl_Interp *interp;           /* Interpreter for error reporting. */
+    Tk_Canvas canvas;             /* Canvas containing itemPtr. */
+    Tk_Item *itemPtr;             /* Rectangle item to reconfigure. */
+    int argc;                     /* Number of elements in argv.  */
+    Tcl_Obj *CONST argv[];        /* Args describing things to configure. */
+    int flags;                    /* Flags to pass to Tk_ConfigureWidget. */
+{
+    PlacardItem *plPtr = (PlacardItem *) itemPtr;
+    XGCValues gcValues;
+    GC newGC;
+    unsigned long mask;
+    Tk_Window tkwin;
+    XColor *color;
+    Tk_Image image;
+
+    tkwin = Tk_CanvasTkwin(canvas);
+    if (Tk_ConfigureWidget(interp, tkwin, configSpecs,
+            argc, (CONST char **) argv,
+            (char*)plPtr, flags|TK_CONFIG_OBJS) != TCL_OK) {
+        return TCL_ERROR;
+    }
+
+    /*
+     * A few of the options require additional processing, such as
+     * graphics contexts.
+     */
+    color = plPtr->textColor;
+    newGC = None;
+    if (plPtr->tkfont != NULL) {
+        gcValues.font = Tk_FontId(plPtr->tkfont);
+        mask = GCFont;
+        if (color != NULL) {
+            gcValues.foreground = color->pixel;
+            mask |= GCForeground;
+            newGC = Tk_GetGC(tkwin, mask, &gcValues);
+        }
+    }
+    if (plPtr->gcText != None) {
+        Tk_FreeGC(Tk_Display(tkwin), plPtr->gcText);
+    }
+    plPtr->gcText = newGC;
+
+
+    newGC = None;
+    if (plPtr->lineColor != NULL) {
+        gcValues.foreground = plPtr->lineColor->pixel;
+        gcValues.line_width = 1;
+        mask = GCForeground | GCLineWidth;
+        newGC = Tk_GetGC(tkwin, mask, &gcValues);
+    }
+    if (plPtr->gcLineRect != None) {
+        Tk_FreeGC(Tk_Display(tkwin), plPtr->gcLineRect);
+    }
+    plPtr->gcLineRect = newGC;
+
+
+    if (plPtr->imageLeftString != NULL) {
+        image = Tk_GetImage(interp, tkwin, plPtr->imageLeftString,
+                ImageLeftChangedProc, (ClientData)plPtr);
+        if (image == NULL) {
+            return TCL_ERROR;
+        }
+    } else {
+        image = NULL;
+    }
+    if (plPtr->imageLeft != NULL) {
+        Tk_FreeImage(plPtr->imageLeft);
+    }
+    plPtr->imageLeft = image;
+
+    if (image != NULL) {
+        Tk_SizeOfImage(image,&plPtr->imageLeftW, &plPtr->imageLeftH);
+    }
+
+
+    if (plPtr->imageRightString != NULL) {
+        image = Tk_GetImage(interp, tkwin, plPtr->imageRightString,
+                ImageRightChangedProc, (ClientData)plPtr);
+        if (image == NULL) {
+            return TCL_ERROR;
+        }
+    } else {
+        image = NULL;
+    }
+    if (plPtr->imageRight != NULL) {
+        Tk_FreeImage(plPtr->imageRight);
+    }
+    plPtr->imageRight = image;
+
+    if (image != NULL) {
+        Tk_SizeOfImage(image,&plPtr->imageRightW, &plPtr->imageRightH);
+    }
+
+
+    if (plPtr->text != NULL) {
+        plPtr->textNumBytes = strlen(plPtr->text);
+        plPtr->textNumChars = Tcl_NumUtfChars(plPtr->text, plPtr->textNumBytes);
+    };
+
+    ComputePlacardBbox(canvas, plPtr);
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  DeletePlacard --
+ *
+ *    This procedure is called to clean up the data structure
+ *    associated with a placard item.
+ *
+ *  Results:
+ *    None.
+ *
+ *  Side effects:
+ *    Resources associated with itemPtr are released.
+ * ------------------------------------------------------------------------
+ */
+static void
+DeletePlacard(canvas, itemPtr, display)
+    Tk_Canvas canvas;          /* Info about overall canvas widget. */
+    Tk_Item *itemPtr;          /* Item that is being deleted. */
+    Display *display;          /* Display containing window for canvas. */
+{
+    PlacardItem *plPtr = (PlacardItem *) itemPtr;
+
+    if (plPtr->textColor != NULL) {
+        Tk_FreeColor(plPtr->textColor);
+    }
+    if (plPtr->lineColor != NULL) {
+        Tk_FreeColor(plPtr->lineColor);
+    }
+    if (plPtr->text != NULL) {
+        ckfree(plPtr->text);
+    }
+
+
+    if (plPtr->imageLeftString != NULL) {
+        ckfree(plPtr->imageLeftString);
+    }
+    if (plPtr->imageLeft != NULL ) {
+        Tk_FreeImage(plPtr->imageLeft);
+    }
+    if (plPtr->imageRightString != NULL) {
+        ckfree(plPtr->imageRightString);
+    }
+    if (plPtr->imageRight != NULL ) {
+        Tk_FreeImage(plPtr->imageRight);
+    }
+
+    Tk_FreeTextLayout(plPtr->textLayout);
+
+    Tk_FreeFont(plPtr->tkfont);
+
+    if (plPtr->gcText != None) {
+        Tk_FreeGC(display, plPtr->gcText);
+    }
+    if (plPtr->gcLineRect != None) {
+        Tk_FreeGC(display, plPtr->gcLineRect);
+    }
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  ComputePlacardBbox --
+ *
+ *    This procedure is invoked to compute the bounding box of
+ *    all the pixels that may be drawn as part of a text item.
+ *    In addition, it recomputes all of the geometry information
+ *    used to display a text item or check for mouse hits.
+ *
+ *  Results:
+ *    None.
+ *
+ *  Side effects:
+ *    The fields x1, y1, x2, and y2 are updated in the header
+ *    for itemPtr, and the linePtr structure is regenerated
+ *    for itemPtr.
+ * ------------------------------------------------------------------------
+ */
+static void
+ComputePlacardBbox(canvas, plPtr)
+    Tk_Canvas canvas;           /* Canvas that contains item. */
+    PlacardItem *plPtr;       /* Item whose bbox is to be recomputed. */
+{
+    int leftX, topY, width, height, maxwidth, ellw, ellh;
+
+    /*
+     * Get the layout for the placard text.
+     */
+    plPtr->textDrawChars = plPtr->textNumChars;
+
+    Tk_FreeTextLayout(plPtr->textLayout);
+    plPtr->textLayout = Tk_ComputeTextLayout(plPtr->tkfont,
+            plPtr->text, plPtr->textNumChars, -1,
+            TK_JUSTIFY_LEFT, 0, &width, &height);
+
+    plPtr->textWidth = width;
+
+    if (plPtr->textColor == NULL) {
+        width = height = 0;
+    } else {
+        width += 2*plPtr->padding;
+        height += 2*plPtr->padding;
+    }
+
+    /*
+     * If the current value has an image, add on its width.
+     */
+    if (plPtr->imageLeft) {
+        width += plPtr->imageLeftW;
+        if (plPtr->textWidth > 0) {
+            width += plPtr->padding;
+        }
+        if (plPtr->imageLeftH > height) {
+            height = plPtr->imageLeftH;
+        }
+    }
+    if (plPtr->imageRight) {
+        width += plPtr->imageRightW;
+        if (plPtr->textWidth > 0) {
+            width += plPtr->padding;
+        }
+        if (plPtr->imageRightH > height) {
+            height = plPtr->imageRightH;
+        }
+    }
+
+    /*
+     * Add on extra size for the 3D border (if there is one).
+     */
+    if (plPtr->borderWidth > 0) {
+        width += 2*plPtr->borderWidth;
+        height += 2*plPtr->borderWidth;
+    }
+
+    /*
+     * If the overall width exceeds the -maxwidth, then we must
+     * truncate the text to make it fit.
+     */
+    maxwidth = 0;
+    if (plPtr->maxWidth > 0 && plPtr->width > 0) {
+        maxwidth = (plPtr->width < plPtr->maxWidth) ? plPtr->width : plPtr->maxWidth;
+    } else if (plPtr->maxWidth > 0) {
+        maxwidth = plPtr->maxWidth;
+    } else if (plPtr->width > 0) {
+        maxwidth = plPtr->width;
+    }
+
+    if (maxwidth > 0 && width > maxwidth) {
+        Tk_SizeOfBitmap(Tk_Display(plPtr->tkwin), plPtr->dots, &ellw, &ellh);
+        width = maxwidth - 2*plPtr->padding - 2*plPtr->borderWidth - ellw;
+        if (plPtr->imageLeft) {
+            width -= plPtr->imageLeftW + plPtr->padding;
+        }
+        if (plPtr->imageRight) {
+            width -= plPtr->imageRightW + plPtr->padding;
+        }
+        if (width < 0) { width = 0; }
+
+        plPtr->textDrawChars = Tk_MeasureChars(plPtr->tkfont,
+            plPtr->text, plPtr->textNumChars, width, /*flags*/ 0,
+            &plPtr->textWidth);
+
+        /* recompute layout for truncated text */
+        Tk_FreeTextLayout(plPtr->textLayout);
+        plPtr->textLayout = Tk_ComputeTextLayout(plPtr->tkfont,
+                plPtr->text, plPtr->textDrawChars, -1,
+                TK_JUSTIFY_LEFT, 0, NULL, NULL);
+
+        width = maxwidth;  /* fit everything in this width */
+    }
+
+    /*
+     * If there's a fixed -width, then use that instead.
+     */
+    if (plPtr->width > 0) {
+        width = plPtr->width;
+    }
+
+    /*
+     * Use overall geometry information to compute the top-left corner
+     * of the bounding box for the text item.
+     */
+    leftX = (int) (plPtr->x + 0.5);
+    topY = (int) (plPtr->y + 0.5);
+    switch (plPtr->anchor) {
+        case TK_ANCHOR_NW:
+        case TK_ANCHOR_N:
+        case TK_ANCHOR_NE:
+            break;
+
+        case TK_ANCHOR_W:
+        case TK_ANCHOR_CENTER:
+        case TK_ANCHOR_E:
+            topY -= height / 2;
+            break;
+
+        case TK_ANCHOR_SW:
+        case TK_ANCHOR_S:
+        case TK_ANCHOR_SE:
+            topY -= height;
+            break;
+    }
+    switch (plPtr->anchor) {
+        case TK_ANCHOR_NW:
+        case TK_ANCHOR_W:
+        case TK_ANCHOR_SW:
+            break;
+
+        case TK_ANCHOR_N:
+        case TK_ANCHOR_CENTER:
+        case TK_ANCHOR_S:
+            leftX -= width / 2;
+            break;
+
+        case TK_ANCHOR_NE:
+        case TK_ANCHOR_E:
+        case TK_ANCHOR_SE:
+            leftX -= width;
+            break;
+    }
+
+    plPtr->leftEdge  = leftX;
+    plPtr->rightEdge = leftX + width;
+
+    /*
+     * Last of all, update the bounding box for the item.
+     */
+    plPtr->header.x1 = leftX;
+    plPtr->header.y1 = topY;
+    plPtr->header.x2 = leftX + width;
+    plPtr->header.y2 = topY + height;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  DisplayCanvPlacard --
+ *
+ *    This procedure is invoked to draw a text item in a given drawable.
+ *
+ *  Results:
+ *    None.
+ *
+ *  Side effects:
+ *    ItemPtr is drawn in drawable using the transformation information
+ *    in canvas.
+ * ------------------------------------------------------------------------
+ */
+static void
+DisplayCanvPlacard(canvas, itemPtr, display, drawable, x, y, width, height)
+    Tk_Canvas canvas;           /* Canvas that contains item. */
+    Tk_Item *itemPtr;           /* Item to be displayed. */
+    Display *display;           /* Display on which to draw item. */
+    Drawable drawable;          /* Pixmap or window in which to draw item. */
+    int x, y, width, height;    /* Describes region of canvas that must be
+                                 * redisplayed (not used). */
+{
+    PlacardItem *plPtr = (PlacardItem *) itemPtr;
+    int imagew, delta, ellx, elly, ellw, ellh;
+    short drawableX, drawableY;
+    Tk_FontMetrics fm;
+
+    if (plPtr->gcText == None) {
+        return;
+    }
+
+    /*
+     * If there's a background rectangle, draw it first.
+     */
+    Tk_CanvasDrawableCoords(canvas, (double)plPtr->leftEdge,
+            (double)plPtr->header.y1, &drawableX, &drawableY);
+
+    if (plPtr->bgBorder) {
+        Tk_Fill3DRectangle(plPtr->tkwin, drawable, plPtr->bgBorder,
+            (int)drawableX, (int)drawableY,
+            (int)(plPtr->rightEdge - plPtr->leftEdge),
+            (int)(plPtr->header.y2 - plPtr->header.y1),
+            plPtr->borderWidth, plPtr->relief);
+    }
+
+    if (plPtr->gcLineRect) {
+        XDrawRectangle(display, drawable, plPtr->gcLineRect,
+            (int)drawableX, (int)drawableY,
+            (unsigned int)(plPtr->rightEdge - plPtr->leftEdge - 1),
+            (unsigned int)(plPtr->header.y2 - plPtr->header.y1 - 1));
+    }
+
+    /*
+     * If there's a right-hand image, draw it first.
+     */
+    imagew = 0;
+    if (plPtr->imageRight) {
+        Tk_CanvasDrawableCoords(canvas, (double)plPtr->rightEdge,
+                (double)plPtr->header.y1, &drawableX, &drawableY);
+
+        delta = (plPtr->header.y2 - plPtr->header.y1)/2 - plPtr->imageRightH/2;
+        drawableX -= plPtr->imageRightW + plPtr->padding + plPtr->borderWidth;
+        Tk_RedrawImage(plPtr->imageRight, 0, 0,
+                       plPtr->imageRightW, plPtr->imageRightH,
+                       drawable,
+                       (int)drawableX, (int)(drawableY+delta));
+        imagew += plPtr->imageRightW;
+    }
+
+    /*
+     * If there's a left-hand image, draw it next.
+     */
+    Tk_CanvasDrawableCoords(canvas, (double)plPtr->leftEdge,
+            (double)plPtr->header.y1, &drawableX, &drawableY);
+
+    drawableX += plPtr->padding + plPtr->borderWidth;
+    drawableY += plPtr->padding + plPtr->borderWidth;
+
+    if (plPtr->imageLeft) {
+        delta = (plPtr->header.y2 - plPtr->header.y1)/2
+                       - plPtr->imageLeftH/2 - plPtr->padding
+                       - plPtr->borderWidth;
+
+        Tk_RedrawImage(plPtr->imageLeft, 0, 0,
+                       plPtr->imageLeftW, plPtr->imageLeftH,
+                       drawable,
+                       (int)drawableX, (int)(drawableY+delta));
+        drawableX += plPtr->imageLeftW + plPtr->padding;
+        imagew += plPtr->imageLeftW;
+    }
+
+    /*
+     * Draw the text.
+     */
+    Tk_DrawTextLayout(display, drawable, plPtr->gcText, plPtr->textLayout,
+            drawableX, drawableY, 0, -1);
+
+    if (plPtr->textDrawChars < plPtr->textNumChars
+          && plPtr->rightEdge - plPtr->leftEdge - imagew > ellw) {
+        Tk_SizeOfBitmap(Tk_Display(plPtr->tkwin), plPtr->dots, &ellw, &ellh);
+        Tk_GetFontMetrics(plPtr->tkfont, &fm);
+        ellx = drawableX+plPtr->textWidth;
+        elly = drawableY+fm.ascent-1;
+
+        XSetClipMask(display, plPtr->gcText, plPtr->dots);
+        XSetClipOrigin(display, plPtr->gcText, ellx, elly);
+
+        XCopyPlane(display, plPtr->dots, drawable, plPtr->gcText, 0, 0,
+            (unsigned int)ellw, (unsigned int)ellh, ellx, elly, 1);
+
+        XSetClipOrigin(display, plPtr->gcText, 0, 0);
+        XSetClipMask(display, plPtr->gcText, None);
+    }
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  PlacardToPoint --
+ *
+ *    Computes the distance from a given point to a given placard
+ *    item, in canvas units.
+ *
+ *  Results:
+ *    The return value is 0 if the point whose x and y coordinates
+ *    are pointPtr[0] and pointPtr[1] is inside the text item.  If
+ *    the point isn't inside the text item then the return value
+ *    is the distance from the point to the text item.
+ *
+ *  Side effects:
+ *    None.
+ * ------------------------------------------------------------------------
+ */
+static double
+PlacardToPoint(canvas, itemPtr, pointPtr)
+    Tk_Canvas canvas;                /* Canvas containing itemPtr. */
+    Tk_Item *itemPtr;                /* Item to check against point. */
+    double *pointPtr;                /* Pointer to x and y coordinates. */
+{
+    PlacardItem *plPtr = (PlacardItem *) itemPtr;
+    double value, x0, y0, x1, y1, xDiff, yDiff;
+
+    if (plPtr->bgBorder || plPtr->lineColor) {
+        /* have a rectangle -- compare directly against that */
+        x0 = plPtr->leftEdge;
+        y0 = plPtr->header.y1;
+        x1 = plPtr->rightEdge;
+        y1 = plPtr->header.y2;
+    }
+    else if (plPtr->imageLeft || plPtr->imageRight) {
+        /* have images -- compare against a rectangle around image/text */
+        x0 = plPtr->leftEdge + plPtr->padding + plPtr->borderWidth;
+        y0 = plPtr->header.y1 + plPtr->padding + plPtr->borderWidth;
+        x1 = plPtr->rightEdge - plPtr->padding - plPtr->borderWidth;
+        y1 = plPtr->header.y2 - plPtr->padding - plPtr->borderWidth;
+    }
+    else {
+        value = (double) Tk_DistanceToTextLayout(plPtr->textLayout,
+                    (int) pointPtr[0] - plPtr->leftEdge,
+                    (int) pointPtr[1] - plPtr->header.y1);
+
+        if ((plPtr->textColor == NULL) || (plPtr->text == NULL)
+              || (*plPtr->text == 0)) {
+            value = 1.0e36;
+        }
+        return value;
+    }
+
+    if (pointPtr[0] < x0) {
+        xDiff = x0 - pointPtr[0];
+    } else if (pointPtr[0] >= x1)  {
+        xDiff = pointPtr[0] + 1 - x1;
+    } else {
+        xDiff = 0;
+    }
+
+    if (pointPtr[1] < y0) {
+        yDiff = y0 - pointPtr[1];
+    } else if (pointPtr[1] >= y1)  {
+        yDiff = pointPtr[1] + 1 - y1;
+    } else {
+        yDiff = 0;
+    }
+
+    return hypot(xDiff, yDiff);
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  PlacardToArea --
+ *
+ *    This procedure is called to determine whether an item lies
+ *    entirely inside, entirely outside, or overlapping a given
+ *    rectangle.
+ *
+ *  Results:
+ *    -1 is returned if the item is entirely outside the area given
+ *    by rectPtr, 0 if it overlaps, and 1 if it is entirely inside
+ *    the given area.
+ *
+ *  Side effects:
+ *    None.
+ * ------------------------------------------------------------------------
+ */
+static int
+PlacardToArea(canvas, itemPtr, rectPtr)
+    Tk_Canvas canvas;       /* Canvas containing itemPtr. */
+    Tk_Item *itemPtr;       /* Item to check against rectangle. */
+    double *rectPtr;        /* Pointer to array of four coordinates
+                             * (x1, y1, x2, y2) describing rectangular
+                             * area.  */
+{
+    PlacardItem *plPtr = (PlacardItem *) itemPtr;
+    int x0, y0, x1, y1;
+
+    if (plPtr->bgBorder || plPtr->lineColor) {
+        /* have a rectangle -- compare directly against that */
+        x0 = plPtr->leftEdge;
+        y0 = plPtr->header.y1;
+        x1 = plPtr->rightEdge;
+        y1 = plPtr->header.y2;
+    }
+    else if (plPtr->imageLeft || plPtr->imageRight) {
+        /* have images -- compare against a rectangle around image/text */
+        x0 = plPtr->leftEdge + plPtr->padding + plPtr->borderWidth;
+        y0 = plPtr->header.y1 + plPtr->padding + plPtr->borderWidth;
+        x1 = plPtr->rightEdge - plPtr->padding - plPtr->borderWidth;
+        y1 = plPtr->header.y2 - plPtr->padding - plPtr->borderWidth;
+    }
+    else {
+        /* have only text -- compare against text layout */
+        return Tk_IntersectTextLayout(plPtr->textLayout,
+            (int) (rectPtr[0] + 0.5) - (plPtr->leftEdge + plPtr->padding + plPtr->borderWidth),
+            (int) (rectPtr[1] + 0.5) - (plPtr->header.y1 + plPtr->padding + plPtr->borderWidth),
+            (int) (rectPtr[2] - rectPtr[0] + 0.5),
+            (int) (rectPtr[3] - rectPtr[1] + 0.5));
+    }
+
+    /* compare against rectangle... */
+    if (rectPtr[0] > x1 || rectPtr[1] > y1
+          || rectPtr[2] < x0 || rectPtr[3] < y0) {
+        return -1;  /* completely outside */
+    }
+    if (rectPtr[0] >= x0 && rectPtr[1] >= y0
+          && rectPtr[2] <= x1 && rectPtr[3] <= y1) {
+        return 1;  /* completely inside */
+    }
+    return 0;  /* must be overlapping */
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  ScalePlacard --
+ *
+ *    This procedure is invoked to rescale a text item.
+ *
+ * Results:
+ *    None.
+ *
+ * Side effects:
+ *    Scales the position of the text, but not the size of the font
+ *    for the text.
+ * ------------------------------------------------------------------------
+ */
+        /* ARGSUSED */
+static void
+ScalePlacard(canvas, itemPtr, originX, originY, scaleX, scaleY)
+    Tk_Canvas canvas;             /* Canvas containing rectangle. */
+    Tk_Item *itemPtr;             /* Rectangle to be scaled. */
+    double originX, originY;      /* Origin about which to scale rect. */
+    double scaleX;                /* Amount to scale in X direction. */
+    double scaleY;                /* Amount to scale in Y direction. */
+{
+    PlacardItem *plPtr = (PlacardItem *) itemPtr;
+
+    plPtr->x = originX + scaleX*(plPtr->x - originX);
+    plPtr->y = originY + scaleY*(plPtr->y - originY);
+    ComputePlacardBbox(canvas, plPtr);
+    return;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  TranslatePlacard --
+ *
+ *    This procedure is called to move a text item by a given amount.
+ *
+ *  Results:
+ *    None.
+ *
+ *  Side effects:
+ *    The position of the text item is offset by (xDelta, yDelta),
+ *    and the bounding box is updated in the generic part of the
+ *    item structure.
+ * ------------------------------------------------------------------------
+ */
+static void
+TranslatePlacard(canvas, itemPtr, deltaX, deltaY)
+    Tk_Canvas canvas;             /* Canvas containing item. */
+    Tk_Item *itemPtr;             /* Item that is being moved. */
+    double deltaX, deltaY;        /* Amount by which item is to be moved. */
+{
+    PlacardItem *plPtr = (PlacardItem *) itemPtr;
+
+    plPtr->x += deltaX;
+    plPtr->y += deltaY;
+    ComputePlacardBbox(canvas, plPtr);
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  PlacardToPostscript --
+ *
+ *    This procedure is called to generate Postscript for placard
+ *    items.
+ *
+ *  Results:
+ *    The return value is a standard Tcl result.  If an error
+ *    occurs in generating Postscript then an error message is
+ *    left in the interp's result, replacing whatever used
+ *    to be there.  If no error occurs, then Postscript for the
+ *    item is appended to the result.
+ *
+ *  Side effects:
+ *    None.
+ * ------------------------------------------------------------------------
+ */
+static int
+PlacardToPostscript(interp, canvas, itemPtr, prepass)
+    Tcl_Interp *interp;         /* Leave Postscript or error message here. */
+    Tk_Canvas canvas;           /* Information about overall canvas. */
+    Tk_Item *itemPtr;           /* Item for which Postscript is wanted. */
+    int prepass;                /* 1 means this is a prepass to collect
+                                 * font information; 0 means final Postscript
+                                 * is being created. */
+{
+    PlacardItem *plPtr = (PlacardItem *) itemPtr;
+    Tk_Window canvasWin = Tk_CanvasTkwin(canvas);
+
+    int x, y;
+    double xpos;
+    Tk_FontMetrics fm;
+    char *justify;
+    char buffer[500];
+    int delta;
+
+    if (plPtr->textColor == NULL || plPtr->text == NULL
+          || *plPtr->text == 0) {
+        return TCL_OK;
+    }
+
+    if (Tk_CanvasPsFont(interp, canvas, plPtr->tkfont) != TCL_OK) {
+        return TCL_ERROR;
+    }
+
+
+    if (!prepass && 
+	Tk_CanvasPsColor(interp, canvas, plPtr->textColor) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    xpos = plPtr->x;
+
+    /*
+     * Check for an image to print.
+     */
+
+    if (plPtr->imageLeft) {
+      if(!prepass) {
+	delta = (plPtr->header.y2 - plPtr->header.y1)/2 - plPtr->imageLeftH/2;
+	sprintf(buffer, "%.15g %.15g", xpos,
+		Tk_CanvasPsY(canvas, plPtr->y+delta+2));
+	Tcl_AppendResult(interp, buffer, " translate\n", (char *) NULL);
+      }
+
+      Tk_PostscriptImage(plPtr->imageLeft, interp, canvasWin,
+			 ((TkCanvas*)canvas)->psInfo, 0, 0,
+                         plPtr->imageLeftW, plPtr->imageLeftH, prepass);
+
+      if ( !prepass ) {
+	/*
+	 * This PS code is needed in order for the label to display
+	 * correctly
+	 */
+	
+	Tcl_AppendResult(interp,"grestore\ngsave\n",(char *)NULL);
+      }
+
+      xpos += plPtr->imageLeftW + plPtr->padding;
+    }
+
+    
+    if (prepass != 0 ) {
+      return TCL_OK;
+    }
+
+    /*
+     * Before drawing the text, reset the font and color information.
+     * Otherwise the text won't appear.
+     */
+
+    if ( plPtr->imageLeft ){
+      if (Tk_CanvasPsFont(interp, canvas, plPtr->tkfont) != TCL_OK) {
+        return TCL_ERROR;
+      }
+      
+      if (Tk_CanvasPsColor(interp, canvas, plPtr->textColor) != TCL_OK) {
+        return TCL_ERROR;
+      }
+    }
+
+
+    /*
+     * Draw the text for the placard.
+     */
+    sprintf(buffer, "%.15g %.15g [\n", xpos,
+        Tk_CanvasPsY(canvas, plPtr->y));
+    Tcl_AppendResult(interp, buffer, (char *) NULL);
+
+    Tk_TextLayoutToPostscript(interp, plPtr->textLayout);
+
+    x = 0;  y = 0;  justify = NULL;
+    switch (plPtr->anchor) {
+        case TK_ANCHOR_NW:        x = 0; y = 0;        break;
+        case TK_ANCHOR_N:         x = 1; y = 0;        break;
+        case TK_ANCHOR_NE:        x = 2; y = 0;        break;
+        case TK_ANCHOR_E:         x = 2; y = 1;        break;
+        case TK_ANCHOR_SE:        x = 2; y = 2;        break;
+        case TK_ANCHOR_S:         x = 1; y = 2;        break;
+        case TK_ANCHOR_SW:        x = 0; y = 2;        break;
+        case TK_ANCHOR_W:         x = 0; y = 1;        break;
+        case TK_ANCHOR_CENTER:    x = 1; y = 1;        break;
+    }
+    justify = "0"; /* TK_JUSTIFY_LEFT */
+
+    Tk_GetFontMetrics(plPtr->tkfont, &fm);
+    sprintf(buffer, "] %d %g %g %s %s DrawText\n",
+            fm.linespace, x / -2.0, y / 2.0, justify,
+            "false" /* stipple */);
+    Tcl_AppendResult(interp, buffer, (char *) NULL);
+
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ *
+ * ImageLeftChangedProc --
+ *
+ *      This procedure is invoked by the image code whenever the manager
+ *      for an image does something that affects the image's size or
+ *      how it is displayed.
+ *
+ * Results:
+ *      None.
+ *
+ * Side effects:
+ *      Arranges for the canvas to get redisplayed.
+ *
+ * ----------------------------------------------------------------------
+ */
+static void
+ImageLeftChangedProc(clientData, x, y, width, height, imgWidth, imgHeight)
+    ClientData clientData;              /* Pointer to canvas item for image. */
+    int x, y;                           /* Upper left pixel (within image)
+                                         * that must be redisplayed. */
+    int width, height;                  /* Dimensions of area to redisplay
+                                         * (may be <= 0). */
+    int imgWidth, imgHeight;            /* New dimensions of image. */
+{      
+    PlacardItem *plPtr = (PlacardItem *) clientData;
+    
+    plPtr->imageLeftW = imgWidth;
+    plPtr->imageLeftH = imgHeight;
+    ComputePlacardBbox(plPtr->canvas, plPtr);
+    return;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ *
+ * ImageRightChangedProc --
+ *
+ *      This procedure is invoked by the image code whenever the manager
+ *      for an image does something that affects the image's size or
+ *      how it is displayed.
+ *
+ * Results:
+ *      None.
+ *
+ * Side effects:
+ *      Arranges for the canvas to get redisplayed.
+ *
+ * ----------------------------------------------------------------------
+ */
+static void
+ImageRightChangedProc(clientData, x, y, width, height, imgWidth, imgHeight)
+    ClientData clientData;              /* Pointer to canvas item for image. */
+    int x, y;                           /* Upper left pixel (within image)
+                                         * that must be redisplayed. */
+    int width, height;                  /* Dimensions of area to redisplay
+                                         * (may be <= 0). */
+    int imgWidth, imgHeight;            /* New dimensions of image. */
+{      
+    PlacardItem *plPtr = (PlacardItem *) clientData;
+    
+    plPtr->imageRightW = imgWidth;
+    plPtr->imageRightH = imgHeight;
+    ComputePlacardBbox(plPtr->canvas, plPtr);
+    return;
+}
Index: /tags/1.6.0/gui/src/RpDicomToVtk.cc
===================================================================
--- /tags/1.6.0/gui/src/RpDicomToVtk.cc	(revision 6168)
+++ /tags/1.6.0/gui/src/RpDicomToVtk.cc	(revision 6168)
@@ -0,0 +1,287 @@
+/* 
+ * ----------------------------------------------------------------------
+ *  RpDicomToVtk - 
+ *
+ * ======================================================================
+ *  AUTHOR:  Leif Delgass, Purdue University
+ *  Copyright (c) 2014  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <vtkSmartPointer.h>
+#include <vtkStringArray.h>
+#include <vtkIntArray.h>
+#include <vtkDataSetWriter.h>
+#include <vtkDirectory.h>
+#ifdef USE_VTK_DICOM_PACKAGE
+#include <vtkDICOMSorter.h>
+#include <vtkDICOMReader.h>
+#include <vtkDICOMMetaData.h>
+#else
+#include <vtkDICOMImageReader.h>
+#endif
+
+#include <stdio.h>
+#include "tcl.h"
+
+// #define RP_DICOM_TRACE
+
+static int
+DicomToVtkCmd(ClientData clientData, Tcl_Interp *interp, int objc, 
+              Tcl_Obj *const *objv)
+{
+    if (objc != 3) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"",
+                         Tcl_GetString(objv[0]), " dir|files fileList\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+    bool isDir = false;
+    char *arg = Tcl_GetString(objv[1]);
+    if (arg[0] == 'd' && strcmp(arg, "dir") == 0) {
+        isDir = true;
+    }
+
+    char *dirName = NULL;
+    vtkSmartPointer<vtkStringArray> pathArray = vtkSmartPointer<vtkStringArray>::New();
+    if (isDir) {
+        dirName = Tcl_GetString(objv[2]); 
+    } else {
+        // Get path array from Tcl list
+        int pathListc;
+        Tcl_Obj **pathListv = NULL;
+        if (Tcl_ListObjGetElements(interp, objv[2], &pathListc, &pathListv) != TCL_OK) {
+            return TCL_ERROR;
+        }
+        pathArray->SetNumberOfValues(pathListc);
+        for (int i = 0; i < pathListc; i++) {
+            pathArray->SetValue(i, Tcl_GetString(pathListv[i]));
+        }
+    }
+
+#ifdef USE_VTK_DICOM_PACKAGE
+    vtkSmartPointer<vtkDICOMReader> reader = vtkSmartPointer<vtkDICOMReader>::New();
+    vtkSmartPointer<vtkDICOMSorter> sorter = vtkSmartPointer<vtkDICOMSorter>::New();
+    if (isDir) {
+        vtkSmartPointer<vtkDirectory> dir = vtkSmartPointer<vtkDirectory>::New();
+        if (!dir->Open(dirName)) {
+            return TCL_ERROR;
+        }
+
+        int numFiles = dir->GetNumberOfFiles();
+        for (int i = 0; i < numFiles; i++) {
+            if (dir->GetFile(i)[0] == '.') {
+                continue;
+            }
+
+            std::string path(dirName);
+            path += "/";
+            path += dir->GetFile(i);
+
+            if (!dir->FileIsDirectory(path.c_str()) &&
+                reader->CanReadFile(path.c_str())) {
+                pathArray->InsertNextValue(path);
+            } else {
+                fprintf(stderr, "Skipping file %s\n", path.c_str());
+            }
+        }
+    }
+
+    sorter->SetInputFileNames(pathArray);
+    sorter->Update();
+
+    int numStudies = sorter->GetNumberOfStudies();
+    int study = 0;
+    int series = 0;
+
+#ifdef RP_DICOM_TRACE
+    fprintf(stderr, "Num Studies: %d\n", numStudies);
+#endif
+    vtkStringArray *files;
+#if 0
+    for (int i = 0; i < numStudies; i++) {
+        int numSeries = sorter->GetNumberOfSeriesInStudy(i);
+#ifdef RP_DICOM_TRACE
+        fprintf(stderr, "Study %d: %d series\n", i, numSeries);
+#endif
+        int k = sorter->GetFirstSeriesInStudy(i);
+        for (int j = 0; j < numSeries; j++) {
+            files = sorter->GetFileNamesForSeries(k+j);
+        }
+    }
+#else
+    if (study < 0 || study > sorter->GetNumberOfStudies()-1) {
+        return TCL_ERROR;
+    }
+    if (series < 0 || series > sorter->GetNumberOfSeriesInStudy(study)-1) {
+        return TCL_ERROR;
+    }
+    files = sorter->GetFileNamesForSeries(sorter->GetFirstSeriesInStudy(study)+series);
+#endif
+
+    Tcl_Obj *objPtr = Tcl_NewListObj(0, NULL);
+    Tcl_Obj *metaDataObj = Tcl_NewListObj(0, NULL);
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("num_studies", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(numStudies));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("study", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(study));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("num_series", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(sorter->GetNumberOfSeriesInStudy(study)));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("series", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(series));
+
+    reader->SetFileNames(files);
+#else
+    Tcl_Obj *objPtr = Tcl_NewListObj(0, NULL);
+    Tcl_Obj *metaDataObj = Tcl_NewListObj(0, NULL);
+
+    vtkSmartPointer<vtkDICOMImageReader> reader = vtkSmartPointer<vtkDICOMImageReader>::New();
+    if (isDir) {
+        reader->SetDirectoryName(dirName);
+    } else {
+        reader->SetFileName(pathArray->GetValue(0));
+    }
+#endif
+    reader->Update();
+
+    Tcl_Obj *eltObj;
+#ifdef USE_VTK_DICOM_PACKAGE
+    vtkStringArray *ids = reader->GetStackIDs();
+#ifdef RP_DICOM_TRACE
+    for (int i = 0; i < ids->GetNumberOfValues(); i++) {
+        fprintf(stderr, "Stack: %s\n", ids->GetValue(i).c_str());
+    }
+#endif
+    vtkIntArray *fidxArray = reader->GetFileIndexArray();
+    vtkDICOMMetaData *md = reader->GetMetaData();
+    int numComp = fidxArray->GetNumberOfComponents();
+#if 0
+    for (int i = 0; i < fidxArray->GetNumberOfTuples(); i++) {
+        fprintf(stderr, "%d:", i);
+        for (int j = 0; j < fidxArray->GetNumberOfComponents(); j++) {
+            int idx = (int)fidxArray->GetComponent(i, j);
+            fprintf(stderr, " %d", idx);
+        }
+        fprintf(stderr, "\n");
+    }
+#endif
+#ifdef RP_DICOM_TRACE
+    fprintf(stderr, "Number of data elements: %d\n", md->GetNumberOfDataElements());
+#endif
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("num_files", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(md->GetNumberOfInstances()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("num_components", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(numComp));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("modality", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::Modality).AsString().c_str(), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("patient_name", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::PatientName).AsString().c_str(), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("transfer_syntax_uid", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::TransferSyntaxUID).AsString().c_str(), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("study_uid", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::StudyInstanceUID).AsString().c_str(), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("study_id", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::StudyID).AsString().c_str(), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("series_number", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(md->GetAttributeValue(DC::SeriesNumber).AsInt()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("series_in_study", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(md->GetAttributeValue(DC::SeriesInStudy).AsInt()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("series_uid", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::SeriesInstanceUID).AsString().c_str(), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("bits_allocated", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(md->GetAttributeValue(DC::BitsAllocated).AsInt()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("bits_stored", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(md->GetAttributeValue(DC::BitsStored).AsInt()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("pixel_representation", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::PixelRepresentation).AsString().c_str(), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("rescale_slope", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewDoubleObj(md->GetAttributeValue(DC::RescaleSlope).AsDouble()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("rescale_intercept", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewDoubleObj(md->GetAttributeValue(DC::RescaleIntercept).AsDouble()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("time_dimension", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(reader->GetTimeDimension()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("time_spacing", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewDoubleObj(reader->GetTimeSpacing()));
+#else
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("patient_name", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(reader->GetPatientName(), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("transfer_syntax_uid", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(reader->GetTransferSyntaxUID(), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("study_uid", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(reader->GetStudyUID(), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("study_id", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(reader->GetStudyID(), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("num_components", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(reader->GetNumberOfComponents()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("bits_allocated", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(reader->GetBitsAllocated()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("pixel_representation", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj,
+                             Tcl_NewStringObj((reader->GetPixelRepresentation() ? "signed" : "unsigned"), -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("rescale_slope", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewDoubleObj(reader->GetRescaleSlope()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("rescale_offset", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewDoubleObj(reader->GetRescaleOffset()));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("gantry_angle", -1));
+    Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewDoubleObj(reader->GetGantryAngle()));
+#if 0
+    fprintf(stderr, "Position: %g %g %g\n",
+            reader->GetImagePositionPatient()[0],
+            reader->GetImagePositionPatient()[1],
+            reader->GetImagePositionPatient()[2]);
+    fprintf(stderr, "Orientation: %g %g %g, %g %g %g\n",
+            reader->GetImageOrientationPatient()[0], 
+            reader->GetImageOrientationPatient()[1], 
+            reader->GetImageOrientationPatient()[2], 
+            reader->GetImageOrientationPatient()[3], 
+            reader->GetImageOrientationPatient()[4], 
+            reader->GetImageOrientationPatient()[5]);
+#endif
+#endif
+
+    Tcl_ListObjAppendList(interp, objPtr, metaDataObj);
+#ifdef RP_DICOM_TRACE
+    fprintf(stderr, "writing VTK\n");
+#endif
+    vtkSmartPointer<vtkDataSetWriter> writer = vtkSmartPointer<vtkDataSetWriter>::New();
+    writer->SetInputConnection(reader->GetOutputPort());
+    writer->SetFileTypeToBinary();
+    writer->WriteToOutputStringOn();
+    writer->Update();
+#ifdef RP_DICOM_TRACE
+    fprintf(stderr, "writing VTK...done\n");
+#endif
+    Tcl_ListObjAppendElement(interp, objPtr, Tcl_NewStringObj("vtkdata", -1));
+
+    eltObj = Tcl_NewByteArrayObj((unsigned char *)writer->GetBinaryOutputString(),
+                                 writer->GetOutputStringLength());
+    Tcl_ListObjAppendElement(interp, objPtr, eltObj);
+
+    Tcl_SetObjResult(interp, objPtr);
+    return TCL_OK;
+}
+
+extern "C" {
+/*
+ * ------------------------------------------------------------------------
+ *  RpDicomToVtk_Init --
+ *
+ *  Invoked when the Rappture GUI library is being initialized
+ *  to install the "DicomToVtk" command into the interpreter.
+ *
+ *  Returns TCL_OK if successful, or TCL_ERROR (along with an error
+ *  message in the interp) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+int
+RpDicomToVtk_Init(Tcl_Interp *interp)
+{
+    /* install the widget command */
+    Tcl_CreateObjCommand(interp, "Rappture::DicomToVtk", DicomToVtkCmd,
+                         NULL, NULL);
+    return TCL_OK;
+}
+
+}
Index: /tags/1.6.0/gui/src/RpDiffview.c
===================================================================
--- /tags/1.6.0/gui/src/RpDiffview.c	(revision 6168)
+++ /tags/1.6.0/gui/src/RpDiffview.c	(revision 6168)
@@ -0,0 +1,2797 @@
+/* 
+ * ----------------------------------------------------------------------
+ *  RpDiffview - like a textbox, but for showing diffs
+ *
+ *  Loads two strings, performs a diff, and shows the results.  Use
+ *  it as follows:
+ *
+ *  Rappture::Diffview .dv \
+ *      -addedbackground blue -addedforeground white \
+ *      -deletedbackground red -deletedforeground white -overstrike true \
+ *      -changedbackground black -changedforeground yellow \
+ *      -xscrollcommand {.x set} -yscrollcommand {.y set}
+ *  
+ *  scrollbar .x -orient horizontal -command {.dv xview}
+ *  scrollbar .y -orient vertical -command {.dv yview}
+ *  
+ *  .dv text 1 [exec cat /tmp/file1]
+ *  .dv text 2 [exec cat /tmp/file2]
+ *  .dv configure -diff 2->1 -layout sidebyside
+ *  
+ *  puts "DIFF OUTPUT:"
+ *  puts [.dv diffs -std]
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "tk.h"
+#include <string.h>
+#include <stdlib.h>
+
+/*
+ * Special options for controlling diffs.
+ */
+enum diffdir {
+    DIFF_1TO2, DIFF_2TO1
+};
+static char *diffdirStrings[] = {
+    "1->2", "2->1", (char*)NULL
+};
+
+enum layoutStyle {
+    LAYOUT_INLINE, LAYOUT_SIDEBYSIDE
+};
+static char *layoutStyleStrings[] = {
+    "inline", "sidebyside", (char*)NULL
+};
+
+enum scancommand {
+    SCAN_MARK, SCAN_DRAGTO
+};
+static CONST char *scanCommandNames[] = {
+    "mark", "dragto", (char *) NULL
+};
+
+
+/*
+ * Data structure for line start/end for all lines in a buffer.
+ */
+typedef struct {
+    int numLines;		/* number of lines */
+    int maxLines;		/* max size of storage in startPtr/endPtr */
+    char **startPtr;		/* array of start pointers for each line */
+    int *lenPtr;		/* array of lengths for each line */
+} DiffviewLines;
+
+/*
+ * Data structure for text buffers within the widget:
+ */
+typedef struct {
+    Tcl_Obj *textObj;		/* actual text within this buffer */
+    DiffviewLines *lineLimits;	/* breakdown of textObj into line starts/ends */
+} DiffviewBuffer;
+
+/*
+ * Data structure used internally by diff routine:
+ */
+typedef struct subseq {
+    int index1;			/* index in buffer #1 */
+    int index2;			/* index in buffer #2 */
+    int next;			/* next candidate match in the chain */
+} DiffviewSubseq;
+
+/*
+ * Data structure returned by diff routine:
+ */
+typedef struct {
+    int op;			/* operation: 'a'=add 'd'=del 'c'=change */
+    int fromIndex1;		/* starts at this line in buffer 1 */
+    int toIndex1;		/* ends at this line in buffer 1 */
+    int fromIndex2;		/* starts at this line in buffer 2 */
+    int toIndex2;		/* ends at this line in buffer 2 */
+    int fromWorld;		/* starts at this line in world view */
+    int toWorld;		/* ends at this line in world view */
+} DiffviewDiffOp;
+
+typedef struct {
+    int maxDiffs;		/* maximum storage space for diffs */
+    int numDiffs;		/* number of diffs stored in ops */
+    DiffviewDiffOp *ops;	/* list of diffs */
+} DiffviewDiffs;
+
+/*
+ * Data structure used for each line of the final layout:
+ */
+typedef struct {
+    char style;			/* layout style: 'a'=add, 'd'=del, etc. */
+    char bnum;			/* show line from this buffer */
+    int bline;			/* line number in buffer bnum */
+    int diffNum;		/* line is part of this diff */
+} DiffviewLayoutLine;
+
+typedef struct {
+    int maxLines;		/* maximum number of lines allocated */
+    int numLines;		/* current number of lines in layout */
+    DiffviewLayoutLine *lines;	/* info for all lines in world view */
+} DiffviewLayout;
+
+/*
+ * Data structure for the widget:
+ */
+typedef struct {
+    Tk_Window tkwin;		/* tk window for the widget */
+    Display *display;		/* display containing the widget */
+    Tcl_Interp *interp;		/* interpreter containing the widget command */
+    Tcl_Command widgetCmd;	/* token for the widget command */
+    Tk_OptionTable optionTable;	/* configuration options */
+
+    /*
+     * Used to display the widget:
+     */
+    Tk_Cursor cursor;		/* cursor for the widget */
+    Tk_3DBorder normalBorder;	/* border around the widget */
+    int borderWidth;		/* width of the border in pixels */
+    int relief;			/* relief: raised, sunken, etc. */
+    int highlightWidth;		/* width of border showing focus highlight */
+    XColor *highlightBgColor;	/* color for focus highlight bg */
+    XColor *highlightColor;	/* color for focus highlight */
+    int inset;			/* width of all borders--offset to ul corner */
+
+    DiffviewBuffer buffer[2];	/* text to diff -- buffers #1 and #2 */
+    DiffviewDiffs *diffsPtr;    /* diff: longest common subseq btwn buffers */
+    DiffviewLayout worldview;   /* array mapping each real line in world
+				 * coordinates to the corresponding line
+				 * in buffer #1/#2, along with its style */
+
+    enum diffdir diffdir;	/* diff between these buffers */
+    enum layoutStyle layout;	/* layout style (side-by-side or inline) */
+    int maxWidth;		/* maximum width of world view in pixels */
+    int maxHeight;		/* maximum height of world view in pixels */
+    int lineHeight;		/* height of a line with current font */
+    int lineAscent;		/* ascent of a line with current font */
+    int topLine;		/* index of topmost line in view */
+    int btmLine;		/* index of bottommost line in view */
+    int fullLines;		/* number of full lines that fit in view */
+
+    int xOffset;		/* offset in pixels to left edge of view */
+    int xScrollUnit;		/* num pixels for one unit of horizontal
+				 * scrolling (one average character) */
+    int yOffset;		/* offset in pixels to top edge of view */
+    int yScrollUnit;		/* num pixels for one unit of vertical
+				 * scrolling (one average line) */
+    char *takeFocus;		/* value of -takefocus option */
+    char *yScrollCmd;		/* command prefix for scrolling */
+    char *xScrollCmd;		/* command prefix for scrolling */
+
+    int scanMarkX;		/* x-coord for "scan mark" */
+    int scanMarkY;		/* y-coord for "scan mark" */
+    int scanMarkXStart;		/* xOffset at start of scan */
+    int scanMarkYStart;		/* yOffset at start of scan */
+
+
+    Tk_Font tkfont;		/* text font for content of widget */
+    Tk_Font tklastfont;		/* previous text font (so we detect changes) */
+    XColor *fgColorPtr;		/* normal foreground color */
+    XColor *addBgColorPtr;	/* background for "added" text in diff */
+    XColor *addFgColorPtr;	/* foreground for "added" text in diff */
+    XColor *delBgColorPtr;	/* background for "deleted" text in diff */
+    XColor *delFgColorPtr;	/* foreground for "deleted" text in diff */
+    XColor *chgBgColorPtr;	/* background for "changed" text in diff */
+    XColor *chgFgColorPtr;	/* foreground for "changed" text in diff */
+    int overStrDel;		/* non-zero => overstrike deleted text */
+    GC normGC;			/* GC for drawing normal text */
+    GC addFgGC;			/* GC for drawing "added" text in diff */
+    GC delFgGC;			/* GC for drawing "deleted" text in diff */
+    GC chgFgGC;			/* GC for drawing "changed" text in diff */
+    int width;			/* overall width of widget, in pixels */
+    int height;			/* overall height of widget, in pixels */
+
+    int flags;			/* flag bits for redraw, etc. */
+} Diffview;
+
+/*
+ * Tk widget flag bits:
+ *
+ * REDRAW_PENDING:	DoWhenIdle handler has been queued to redraw
+ * UPDATE_V_SCROLLBAR:	non-zero => vertical scrollbar needs updating
+ * UPDATE_H_SCROLLBAR:	non-zero => horizontal scrollbar needs updating
+ * GOT_FOCUS:		non-zero => widget has input focus
+ * FONT_CHANGED:	font changed, so layout needs to be recomputed
+ * WIDGET_DELETED:	widget has been destroyed, so don't update
+ */
+
+#define REDRAW_PENDING		1
+#define UPDATE_V_SCROLLBAR	2
+#define UPDATE_H_SCROLLBAR	4
+#define GOT_FOCUS		8
+#define FONT_CHANGED		16
+#define WIDGET_DELETED		32
+
+
+/*
+ * Default option values.
+ */
+#define BLACK				"#000000"
+#define WHITE				"#ffffff"
+#define NORMAL_BG			"#d9d9d9"
+
+#define DEF_DIFFVIEW_ADDBG		"#ccffcc"
+#define DEF_DIFFVIEW_ADDFG		BLACK
+#define DEF_DIFFVIEW_BG_COLOR		NORMAL_BG
+#define DEF_DIFFVIEW_BG_MONO		WHITE
+#define DEF_DIFFVIEW_BORDERWIDTH	"2"
+#define DEF_DIFFVIEW_CHGBG		"#ffffcc"
+#define DEF_DIFFVIEW_CHGFG		BLACK
+#define DEF_DIFFVIEW_CURSOR		""
+#define DEF_DIFFVIEW_DELBG		"#ffcccc"
+#define DEF_DIFFVIEW_DELFG		"#666666"
+#define DEF_DIFFVIEW_DIFF		"1->2"
+#define DEF_DIFFVIEW_FG			BLACK
+#define DEF_DIFFVIEW_FONT		"Courier -12"
+#define DEF_DIFFVIEW_HEIGHT		"2i"
+#define DEF_DIFFVIEW_HIGHLIGHT_BG	NORMAL_BG
+#define DEF_DIFFVIEW_HIGHLIGHT		BLACK
+#define DEF_DIFFVIEW_HIGHLIGHT_WIDTH	"1"
+#define DEF_DIFFVIEW_LAYOUT		"inline"
+#define DEF_DIFFVIEW_OVERSTRDEL		"true"
+#define DEF_DIFFVIEW_RELIEF		"sunken"
+#define DEF_DIFFVIEW_TAKE_FOCUS		(char*)NULL
+#define DEF_DIFFVIEW_WIDTH		"2i"
+#define DEF_DIFFVIEW_SCROLL_CMD		""
+
+/*
+ * Configuration options for this widget.
+ * (must be in alphabetical order)
+ */
+static Tk_OptionSpec optionSpecs[] = {
+    {TK_OPTION_COLOR, "-addedbackground", "addedBackground", "Background",
+	 DEF_DIFFVIEW_ADDBG, -1, Tk_Offset(Diffview, addBgColorPtr),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_COLOR, "-addedforeground", "addedForeground", "Foreground",
+	 DEF_DIFFVIEW_ADDFG, -1, Tk_Offset(Diffview, addFgColorPtr),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_BORDER, "-background", "background", "Background",
+	 DEF_DIFFVIEW_BG_COLOR, -1, Tk_Offset(Diffview, normalBorder),
+	 0, (ClientData) DEF_DIFFVIEW_BG_MONO, 0},
+    {TK_OPTION_SYNONYM, "-bd", (char*)NULL, (char*)NULL,
+	 (char*)NULL, 0, -1, 0, (ClientData) "-borderwidth", 0},
+    {TK_OPTION_SYNONYM, "-bg", (char*)NULL, (char*)NULL,
+	 (char*)NULL, 0, -1, 0, (ClientData) "-background", 0},
+    {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth",
+	 DEF_DIFFVIEW_BORDERWIDTH, -1, Tk_Offset(Diffview, borderWidth),
+	 0, 0, 0},
+    {TK_OPTION_COLOR, "-changedbackground", "changedBackground", "Background",
+	 DEF_DIFFVIEW_CHGBG, -1, Tk_Offset(Diffview, chgBgColorPtr),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_COLOR, "-changedforeground", "changedForeground", "Foreground",
+	 DEF_DIFFVIEW_CHGFG, -1, Tk_Offset(Diffview, chgFgColorPtr),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor",
+	 DEF_DIFFVIEW_CURSOR, -1, Tk_Offset(Diffview, cursor),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_COLOR, "-deletedbackground", "deletedBackground", "Background",
+	 DEF_DIFFVIEW_DELBG, -1, Tk_Offset(Diffview, delBgColorPtr),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_COLOR, "-deletedforeground", "deletedForeground", "Foreground",
+	 DEF_DIFFVIEW_DELFG, -1, Tk_Offset(Diffview, delFgColorPtr),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_STRING_TABLE, "-diff", "diff", "Diff",
+        DEF_DIFFVIEW_DIFF, -1, Tk_Offset(Diffview, diffdir),
+        0, (ClientData)diffdirStrings, 0},
+    {TK_OPTION_SYNONYM, "-fg", "foreground", (char*)NULL,
+	 (char*)NULL, 0, -1, 0, (ClientData) "-foreground", 0},
+    {TK_OPTION_FONT, "-font", "font", "Font",
+	 DEF_DIFFVIEW_FONT, -1, Tk_Offset(Diffview, tkfont), 0, 0, 0},
+    {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground",
+	 DEF_DIFFVIEW_FG, -1, Tk_Offset(Diffview, fgColorPtr), 0, 0, 0},
+    {TK_OPTION_PIXELS, "-height", "height", "Height",
+	 DEF_DIFFVIEW_HEIGHT, -1, Tk_Offset(Diffview, height), 0, 0, 0},
+    {TK_OPTION_COLOR, "-highlightbackground", "highlightBackground",
+	 "HighlightBackground", DEF_DIFFVIEW_HIGHLIGHT_BG, -1, 
+	 Tk_Offset(Diffview, highlightBgColor), 0, 0, 0},
+    {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor",
+	 DEF_DIFFVIEW_HIGHLIGHT, -1, Tk_Offset(Diffview, highlightColor),
+	 0, 0, 0},
+    {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness",
+	 "HighlightThickness", DEF_DIFFVIEW_HIGHLIGHT_WIDTH, -1,
+	 Tk_Offset(Diffview, highlightWidth), 0, 0, 0},
+    {TK_OPTION_STRING_TABLE, "-layout", "layout", "Layout",
+        DEF_DIFFVIEW_LAYOUT, -1, Tk_Offset(Diffview, layout),
+        0, (ClientData)layoutStyleStrings, 0},
+    {TK_OPTION_BOOLEAN, "-overstrike", "overstrike", "Overstrike",
+	 DEF_DIFFVIEW_OVERSTRDEL, -1, Tk_Offset(Diffview, overStrDel), 0, 0, 0},
+    {TK_OPTION_RELIEF, "-relief", "relief", "Relief",
+	 DEF_DIFFVIEW_RELIEF, -1, Tk_Offset(Diffview, relief), 0, 0, 0},
+    {TK_OPTION_STRING, "-takefocus", "takeFocus", "TakeFocus",
+	 DEF_DIFFVIEW_TAKE_FOCUS, -1, Tk_Offset(Diffview, takeFocus),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_PIXELS, "-width", "width", "Width",
+	 DEF_DIFFVIEW_WIDTH, -1, Tk_Offset(Diffview, width), 0, 0, 0},
+    {TK_OPTION_STRING, "-xscrollcommand", "xScrollCommand", "ScrollCommand",
+	 DEF_DIFFVIEW_SCROLL_CMD, -1, Tk_Offset(Diffview, xScrollCmd),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_STRING, "-yscrollcommand", "yScrollCommand", "ScrollCommand",
+	 DEF_DIFFVIEW_SCROLL_CMD, -1, Tk_Offset(Diffview, yScrollCmd),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_END, (char*)NULL, (char*)NULL, (char*)NULL,
+	(char*)NULL, 0, -1, 0, 0, 0}
+};
+
+/*
+ * Widget commands:
+ */
+static CONST char *commandNames[] = {
+    "bbox", "cget", "configure",
+    "diffs", "scan", "see",
+    "text", "xview", "yview",
+    (char*)NULL
+};
+
+enum command {
+    COMMAND_BBOX, COMMAND_CGET, COMMAND_CONFIGURE,
+    COMMAND_DIFFS, COMMAND_SCAN, COMMAND_SEE,
+    COMMAND_TEXT, COMMAND_XVIEW, COMMAND_YVIEW
+};
+
+/*
+ * Forward declarations for remaining procedures.
+ */
+static int		DiffviewObjCmd _ANSI_ARGS_((ClientData clientData,
+			    Tcl_Interp *interp, int objc,
+			    Tcl_Obj *CONST objv[]));
+static int		DiffviewWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
+	                    Tcl_Interp *interp, int objc,
+	                    Tcl_Obj *CONST objv[]));
+static int		DiffviewBboxSubCmd _ANSI_ARGS_ ((Tcl_Interp *interp,
+			    Diffview *dvPtr, int objc, Tcl_Obj *CONST objv[]));
+static int		DiffviewDiffsSubCmd _ANSI_ARGS_ ((Tcl_Interp *interp,
+	                    Diffview *dvPtr, int objc, Tcl_Obj *CONST objv[]));
+static int		DiffviewTextSubCmd _ANSI_ARGS_ ((Tcl_Interp *interp,
+			    Diffview *dvPtr, int objc, Tcl_Obj *CONST objv[]));
+static int		DiffviewXviewSubCmd _ANSI_ARGS_ ((Tcl_Interp *interp,
+			    Diffview *dvPtr, int objc, Tcl_Obj *CONST objv[]));
+static int		DiffviewYviewSubCmd _ANSI_ARGS_ ((Tcl_Interp *interp,
+			    Diffview *dvPtr, int objc, Tcl_Obj *CONST objv[]));
+static int		DiffviewGetIndex _ANSI_ARGS_ ((Tcl_Interp *interp,
+			    Diffview *dvPtr, Tcl_Obj *objPtr, int *linePtr,
+			    DiffviewDiffOp **diffOpPtrPtr));
+
+static void		DestroyDiffview _ANSI_ARGS_((char *memPtr));
+static int		ConfigureDiffview _ANSI_ARGS_((Tcl_Interp *interp,
+			    Diffview *dvPtr, int objc, Tcl_Obj *CONST objv[],
+			    int flags));
+static void		DiffviewWorldChanged _ANSI_ARGS_((
+			    ClientData instanceData));
+static void		EventuallyRedraw _ANSI_ARGS_((Diffview *dvPtr));
+static void		DisplayDiffview _ANSI_ARGS_((ClientData clientData));
+static void		DiffviewComputeGeometry _ANSI_ARGS_((Diffview *dvPtr));
+static void		DiffviewEventProc _ANSI_ARGS_((ClientData clientData,
+			    XEvent *eventPtr));
+static void		DiffviewCmdDeletedProc _ANSI_ARGS_((
+			    ClientData clientData));
+static void		ChangeDiffviewView _ANSI_ARGS_((Diffview *dvPtr,
+			    int lnum));
+static void		DiffviewScanTo _ANSI_ARGS_((Diffview *dvPtr,
+			    int x, int y));
+static void		DiffviewUpdateLayout _ANSI_ARGS_((
+    			    Diffview *dvPtr));
+static void		DiffviewUpdateVScrollbar _ANSI_ARGS_((
+			    Diffview *dvPtr));
+static void		DiffviewUpdateHScrollbar _ANSI_ARGS_((
+    			    Diffview *dvPtr));
+static DiffviewLines*	DiffviewLinesCreate _ANSI_ARGS_((char *textPtr,
+			    int textLen));
+static void		DiffviewLinesFree _ANSI_ARGS_((
+			    DiffviewLines *lineLimitsPtr));
+static DiffviewDiffs*	DiffviewDiffsCreate _ANSI_ARGS_((
+			    char *textPtr1, DiffviewLines *limsPtr1,
+			    char *textPtr2, DiffviewLines *limsPtr2));
+static void		DiffviewDiffsAppend _ANSI_ARGS_((
+			    DiffviewDiffs *diffsPtr, int op,
+			    int fromIndex1, int toIndex1,
+			    int fromIndex2, int toIndex2));
+static void		DiffviewDiffsFree _ANSI_ARGS_((
+			    DiffviewDiffs *diffsPtr));
+static void		DiffviewLayoutAdd _ANSI_ARGS_((
+			    DiffviewLayout *layoutPtr,
+			    DiffviewLayoutLine *linePtr));
+static void		DiffviewLayoutClear _ANSI_ARGS_((
+			    DiffviewLayout *layoutPtr));
+static void		DiffviewLayoutFree _ANSI_ARGS_((
+			    DiffviewLayout *layoutPtr));
+
+/*
+ * Standard Tk procs invoked from generic window code.
+ */
+static Tk_ClassProcs diffviewClass = {
+    sizeof(Tk_ClassProcs),	/* size */
+    DiffviewWorldChanged,	/* worldChangedProc */
+};
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpDiffview_Init --
+ *
+ *  Invoked when the Rappture GUI library is being initialized
+ *  to install the "diffview" widget into the interpreter.
+ *
+ *  Returns TCL_OK if successful, or TCL_ERROR (along with an error
+ *  message in the interp) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+int
+RpDiffview_Init(interp)
+    Tcl_Interp *interp;         /* interpreter being initialized */
+{
+    static char *script = "source [file join $RapptureGUI::library scripts diffview.tcl]";
+
+    /* install the widget command */
+    Tcl_CreateObjCommand(interp, "Rappture::Diffview", DiffviewObjCmd,
+        NULL, NULL);
+
+    /* load the default bindings */
+    if (Tcl_Eval(interp, script) != TCL_OK) {
+        return TCL_ERROR;
+    }
+
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewObjCmd()
+ *
+ * Called whenever a Diffview object is created to create the widget
+ * and install the Tcl access command.
+ * ----------------------------------------------------------------------
+ */
+static int
+DiffviewObjCmd(clientData, interp, objc, objv)
+    ClientData clientData;        /* not used */
+    Tcl_Interp *interp;                /* current interpreter */
+    int objc;                        /* number of command arguments */
+    Tcl_Obj *CONST objv[];        /* command argument objects */
+{
+    Diffview *dvPtr;
+    Tk_Window tkwin;
+
+    if (objc < 2) {
+        Tcl_WrongNumArgs(interp, 1, objv, "pathName ?options?");
+        return TCL_ERROR;
+    }
+
+    tkwin = Tk_CreateWindowFromPath(interp, Tk_MainWindow(interp),
+                Tcl_GetString(objv[1]), (char*)NULL);
+
+    if (tkwin == NULL) {
+        return TCL_ERROR;
+    }
+
+    /*
+     * Create a data structure for the widget objects and set good
+     * initial values.
+     */
+    dvPtr = (Diffview*)ckalloc(sizeof(Diffview));
+    memset((void*)dvPtr, 0, (sizeof(Diffview)));
+
+    dvPtr->tkwin   = tkwin;
+    dvPtr->display = Tk_Display(tkwin);
+    dvPtr->interp  = interp;
+    dvPtr->widgetCmd = Tcl_CreateObjCommand(interp,
+            Tk_PathName(dvPtr->tkwin), DiffviewWidgetObjCmd,
+            (ClientData)dvPtr, DiffviewCmdDeletedProc);
+    dvPtr->optionTable = Tk_CreateOptionTable(interp, optionSpecs);
+
+    dvPtr->buffer[0].textObj = NULL;
+    dvPtr->buffer[0].lineLimits = NULL;
+    dvPtr->buffer[1].textObj = NULL;
+    dvPtr->buffer[1].lineLimits = NULL;
+    dvPtr->diffdir = DIFF_1TO2;
+
+    dvPtr->cursor = None;
+    dvPtr->relief = TK_RELIEF_SUNKEN;
+    dvPtr->normGC = None;
+    dvPtr->addFgGC = None;
+    dvPtr->delFgGC = None;
+    dvPtr->chgFgGC = None;
+    dvPtr->xScrollUnit = 1;
+    dvPtr->yScrollUnit = 1;
+
+    /*
+     * Use reference counting to decide when this data should be
+     * cleaned up.
+     */
+    Tcl_Preserve((ClientData) dvPtr->tkwin);
+
+    Tk_SetClass(dvPtr->tkwin, "Diffview");
+    Tk_SetClassProcs(dvPtr->tkwin, &diffviewClass, (ClientData)dvPtr);
+
+    Tk_CreateEventHandler(dvPtr->tkwin,
+            ExposureMask|StructureNotifyMask|FocusChangeMask,
+            DiffviewEventProc, (ClientData)dvPtr);
+
+    if (Tk_InitOptions(interp, (char*)dvPtr, dvPtr->optionTable, tkwin)
+            != TCL_OK) {
+        Tk_DestroyWindow(dvPtr->tkwin);
+        return TCL_ERROR;
+    }
+
+    if (ConfigureDiffview(interp, dvPtr, objc-2, objv+2, 0) != TCL_OK) {
+        Tk_DestroyWindow(dvPtr->tkwin);
+        return TCL_ERROR;
+    }
+
+    Tcl_SetResult(interp, Tk_PathName(dvPtr->tkwin), TCL_STATIC);
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewWidgetObjCmd()
+ *
+ * Called to process the operations associated with the widget.  Handles
+ * the widget access command, using the operations defined in the
+ * commandNames[] array.
+ * ----------------------------------------------------------------------
+ */
+static int
+DiffviewWidgetObjCmd(clientData, interp, objc, objv)
+    ClientData clientData;    /* widget data */
+    Tcl_Interp *interp;       /* interp handling this command */
+    int objc;                 /* number of command arguments */
+    Tcl_Obj *CONST objv[];    /* command arguments */
+{
+    Diffview *dvPtr = (Diffview*)clientData;
+    int result = TCL_OK;
+    int cmdToken;
+    
+    if (objc < 2) {
+        Tcl_WrongNumArgs(interp, 1, objv, "option ?arg arg ...?");
+        return TCL_ERROR;
+    }
+
+    /*
+     * Look up the command option and map it to an enumerated value.
+     */
+    result = Tcl_GetIndexFromObj(interp, objv[1], commandNames,
+            "option", 0, &cmdToken);
+
+    if (result != TCL_OK) {
+        return result;
+    }
+
+    /* hang on to the widget data until we exit... */
+    Tcl_Preserve((ClientData)dvPtr);
+
+    switch (cmdToken) {
+        case COMMAND_BBOX: {
+            result = DiffviewBboxSubCmd(interp, dvPtr, objc, objv);
+            break;
+        }
+
+        case COMMAND_CGET: {
+            Tcl_Obj *objPtr;
+            if (objc != 3) {
+                Tcl_WrongNumArgs(interp, 2, objv, "option");
+                result = TCL_ERROR;
+                break;
+            }
+
+            objPtr = Tk_GetOptionValue(interp, (char*)dvPtr,
+                    dvPtr->optionTable, objv[2], dvPtr->tkwin);
+            if (objPtr == NULL) {
+                result = TCL_ERROR;
+                break;
+            }
+            Tcl_SetObjResult(interp, objPtr);
+            result = TCL_OK;
+            break;
+        }
+        
+        case COMMAND_CONFIGURE: {
+            Tcl_Obj *objPtr;
+            if (objc <= 3) {
+                /* query the value of an option */
+                objPtr = Tk_GetOptionInfo(interp, (char*)dvPtr,
+                        dvPtr->optionTable,
+                        (objc == 3) ? objv[2] : (Tcl_Obj*)NULL,
+                        dvPtr->tkwin);
+                if (objPtr == NULL) {
+                    result = TCL_ERROR;
+                    break;
+                } else {
+                    Tcl_SetObjResult(interp, objPtr);
+                    result = TCL_OK;
+                }
+            } else {
+                /* set one or more configuration options */
+                result = ConfigureDiffview(interp, dvPtr, objc-2, objv+2, 0);
+            }
+            break;
+        }
+
+        case COMMAND_DIFFS: {
+            result = DiffviewDiffsSubCmd(interp, dvPtr, objc, objv);
+            break;
+        }
+
+        case COMMAND_SCAN: {
+            int x, y, scanCmdIndex;
+
+            if (objc != 5) {
+                Tcl_WrongNumArgs(interp, 2, objv, "mark|dragto x y");
+                result = TCL_ERROR;
+                break;
+            }
+
+            if (Tcl_GetIntFromObj(interp, objv[3], &x) != TCL_OK
+                    || Tcl_GetIntFromObj(interp, objv[4], &y) != TCL_OK) {
+                result = TCL_ERROR;
+                break;
+            }
+
+            result = Tcl_GetIndexFromObj(interp, objv[2], scanCommandNames,
+                    "option", 0, &scanCmdIndex);
+            if (result != TCL_OK) {
+                break;
+            }
+            switch (scanCmdIndex) {
+                case SCAN_MARK: {
+                    dvPtr->scanMarkX = x;
+                    dvPtr->scanMarkY = y;
+                    dvPtr->scanMarkXStart = dvPtr->xOffset;
+                    dvPtr->scanMarkYStart = dvPtr->yOffset;
+                    break;
+                }
+                case SCAN_DRAGTO: {
+                    DiffviewScanTo(dvPtr, x, y);
+                    break;
+                }
+            }
+            result = TCL_OK;
+            break;
+        }
+
+        case COMMAND_SEE: {
+            DiffviewDiffOp *diffOpPtr;
+            int line1, line2, topline;
+
+            if (objc != 3) {
+                Tcl_WrongNumArgs(interp, 2, objv, "index");
+                result = TCL_ERROR;
+                break;
+            }
+            result = DiffviewGetIndex(interp, dvPtr, objv[2],
+                &line1, &diffOpPtr);
+            if (result != TCL_OK) {
+                break;
+            }
+
+            if (line1 < 0 && diffOpPtr != NULL) {
+                line1 = diffOpPtr->fromWorld;
+                line2 = diffOpPtr->toWorld;
+            } else {
+                line2 = line1;
+            }
+
+            if (line1 >= dvPtr->worldview.numLines) {
+                line1 = line2 = dvPtr->worldview.numLines-1;
+            }
+            if (line1 < 0) {
+                line1 = line2 = 0;
+            }
+
+            if (line1 < dvPtr->topLine || line1 > dvPtr->btmLine) {
+                /* location off screen? then center it in y-view */
+                if (line2-line1 >= dvPtr->fullLines) {
+                    topline = line1;
+                } else {
+                    topline = (line1+line2)/2 - dvPtr->fullLines/2;
+                    if (topline < 0) topline = 0;
+                }
+                ChangeDiffviewView(dvPtr, topline);
+            }
+            result = TCL_OK;
+            break;
+        }
+
+        case COMMAND_TEXT: {
+            result = DiffviewTextSubCmd(interp, dvPtr, objc, objv);
+            break;
+        }
+
+        case COMMAND_XVIEW: {
+            result = DiffviewXviewSubCmd(interp, dvPtr, objc, objv);
+            break;
+        }
+        
+        case COMMAND_YVIEW: {
+            result = DiffviewYviewSubCmd(interp, dvPtr, objc, objv);
+            break;
+        }
+    }
+
+    /* okay, release the widget data and return */
+    Tcl_Release((ClientData)dvPtr);
+    return result;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewBboxSubCmd()
+ *
+ * Handles the "bbox" operation on the widget.  Returns a bounding
+ * box for the specified part of the widget.
+ * ----------------------------------------------------------------------
+ */
+static int
+DiffviewBboxSubCmd(interp, dvPtr, objc, objv)
+    Tcl_Interp *interp;       /* interp handling this command */
+    Diffview *dvPtr;          /* widget data */
+    int objc;                 /* number of command arguments */
+    Tcl_Obj *CONST objv[];    /* command arguments */
+{
+    char *opt, buf[256];
+    DiffviewDiffOp *diffOpPtr;
+    int line, bnum, bline, x1, y0, y1, wd;
+    char *textPtr; int textLen;
+
+    if (objc != 3) {
+        Tcl_WrongNumArgs(interp, 2, objv, "index");
+        return TCL_ERROR;
+    }
+
+    /* make sure that our layout info is up to date for queries below */
+    DiffviewUpdateLayout(dvPtr);
+
+    opt = Tcl_GetString(objv[2]);
+    if (*opt == 'a' && strcmp(opt,"all") == 0) {
+        sprintf(buf, "0 0 %d %d", dvPtr->maxWidth, dvPtr->maxHeight);
+        Tcl_SetResult(interp, buf, TCL_VOLATILE);
+        return TCL_OK;
+    }
+
+    if (DiffviewGetIndex(interp, dvPtr, objv[2], &line, &diffOpPtr) != TCL_OK) {
+        Tcl_AppendResult(interp, " or all", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    /* return the bounding box for a line in world coords */
+    if (line >= 0) {
+        y0 = line*dvPtr->lineHeight;
+        y1 = (line+1)*dvPtr->lineHeight;
+        x1 = 0;
+        if (line < dvPtr->worldview.numLines) {
+            bnum = dvPtr->worldview.lines[line].bnum;
+            bline = dvPtr->worldview.lines[line].bline;
+            if (bline >= 0) {
+                textPtr = dvPtr->buffer[bnum].lineLimits->startPtr[bline];
+                textLen = dvPtr->buffer[bnum].lineLimits->lenPtr[bline];
+                x1 = Tk_TextWidth(dvPtr->tkfont, textPtr, textLen);
+            }
+        }
+        sprintf(buf, "0 %d %d %d", y0, x1, y1);
+        Tcl_SetResult(interp, buf, TCL_VOLATILE);
+        return TCL_OK;
+    }
+
+    /* return the bounding box for a diff in world coords */
+    if (diffOpPtr) {
+        y0 = diffOpPtr->fromWorld*dvPtr->lineHeight;
+        y1 = (diffOpPtr->toWorld+1)*dvPtr->lineHeight;
+        x1 = 0;
+
+        for (line=diffOpPtr->fromWorld; line <= diffOpPtr->toWorld; line++) {
+            if (line < dvPtr->worldview.numLines) {
+                bnum = dvPtr->worldview.lines[line].bnum;
+                bline = dvPtr->worldview.lines[line].bline;
+                if (bline >= 0) {
+                    textPtr = dvPtr->buffer[bnum].lineLimits->startPtr[bline];
+                    textLen = dvPtr->buffer[bnum].lineLimits->lenPtr[bline];
+                    wd = Tk_TextWidth(dvPtr->tkfont, textPtr, textLen);
+                    if (wd > x1) {
+                        x1 = wd;
+                    }
+                }
+            }
+        }
+        sprintf(buf, "0 %d %d %d", y0, x1, y1);
+        Tcl_SetResult(interp, buf, TCL_VOLATILE);
+    }
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewDiffsSubCmd()
+ *
+ * Handles the "diffs" operation on the widget with the following
+ * syntax:
+ *
+ *   widget diffs ?-std|-debug|-number?
+ *
+ * The default is "diffs -std", which returns the usual output from
+ * the Unix "diff" command.  The -debug option returns a more detailed
+ * output that is useful for testing/debugging.  The -number option
+ * returns the total number of diffs.  This is useful for commands
+ * such as "see #2", where you can bring a particular diff into view.
+ * ----------------------------------------------------------------------
+ */
+static int
+DiffviewDiffsSubCmd(interp, dvPtr, objc, objv)
+    Tcl_Interp *interp;       /* interp handling this command */
+    Diffview *dvPtr;          /* widget data */
+    int objc;                 /* number of command arguments */
+    Tcl_Obj *CONST objv[];    /* command arguments */
+{
+    Tcl_Obj *resultPtr;
+    char range1[128], range2[128];
+    int i, n;
+
+    static CONST char *options[] = {
+        "-std",		"-debug",	"-number",	(char*)NULL
+    };
+    enum options {
+        DIFFS_STD,	DIFFS_DEBUG,	DIFFS_NUMBER
+    };
+    int op = DIFFS_STD;
+
+
+    if (objc > 3) {
+        Tcl_WrongNumArgs(interp, 2, objv, "?-std? ?-debug? ?-number?");
+        return TCL_ERROR;
+    }
+
+    /* decode the option that controls the return result */
+    if (objc > 2) {
+        if (Tcl_GetIndexFromObj(interp, objv[2], options, "option", 0,
+                &op) != TCL_OK) {
+            return TCL_ERROR;
+        }
+    }
+
+    /* make sure that our layout info is up to date for queries below */
+    DiffviewUpdateLayout(dvPtr);
+
+    switch ((enum options)op) {
+        case DIFFS_STD: {
+            DiffviewDiffOp curr, *currOpPtr;
+            DiffviewLines *lines1, *lines2;
+
+            if (dvPtr->diffsPtr) {
+                resultPtr = Tcl_GetObjResult(interp);
+                for (i=0; i < dvPtr->diffsPtr->numDiffs; i++) {
+                    currOpPtr = &dvPtr->diffsPtr->ops[i];
+
+                    /* if we're diff'ing the other way, reverse the diff */
+                    if (dvPtr->diffdir == DIFF_1TO2) {
+                        memcpy((VOID*)&curr, (VOID*)currOpPtr,
+                            sizeof(DiffviewDiffOp));
+                        lines1 = dvPtr->buffer[0].lineLimits;
+                        lines2 = dvPtr->buffer[1].lineLimits;
+                    } else {
+                        switch (currOpPtr->op) {
+                            case 'a': curr.op = 'd'; break;
+                            case 'd': curr.op = 'a'; break;
+                            default:  curr.op = currOpPtr->op; break;
+                        }
+                        curr.fromIndex1 = currOpPtr->fromIndex2;
+                        curr.toIndex1   = currOpPtr->toIndex2;
+                        curr.fromIndex2 = currOpPtr->fromIndex1;
+                        curr.toIndex2   = currOpPtr->toIndex1;
+                        lines1 = dvPtr->buffer[1].lineLimits;
+                        lines2 = dvPtr->buffer[0].lineLimits;
+                    }
+
+                    /* append the diff info onto the output */
+                    if (curr.fromIndex1 == curr.toIndex1) {
+                        if (curr.op == 'a') {
+                            /* for append, use first index at raw value */
+                            sprintf(range1, "%d", curr.fromIndex1);
+                        } else {
+                            sprintf(range1, "%d", curr.fromIndex1+1);
+                        }
+                    } else {
+                        sprintf(range1, "%d,%d", curr.fromIndex1+1,
+                            curr.toIndex1+1);
+                    }
+
+                    if (curr.fromIndex2 == curr.toIndex2) {
+                        if (curr.op == 'd') {
+                            /* for delete, use second index at raw value */
+                            sprintf(range2, "%d", curr.fromIndex2);
+                        } else {
+                            sprintf(range2, "%d", curr.fromIndex2+1);
+                        }
+                    } else {
+                        sprintf(range2, "%d,%d", curr.fromIndex2+1,
+                            curr.toIndex2+1);
+                    }
+
+                    switch (curr.op) {
+                        case 'a': {
+                            Tcl_AppendToObj(resultPtr, range1, -1);
+                            Tcl_AppendToObj(resultPtr, "a", 1);
+                            Tcl_AppendToObj(resultPtr, range2, -1);
+                            Tcl_AppendToObj(resultPtr, "\n", 1);
+                            for (n=curr.fromIndex2; n <= curr.toIndex2; n++) {
+                                Tcl_AppendToObj(resultPtr, "> ", 2);
+                                Tcl_AppendToObj(resultPtr, lines2->startPtr[n],
+                                    lines2->lenPtr[n]);
+                                Tcl_AppendToObj(resultPtr, "\n", 1);
+                            }
+                            break;
+                        }
+                        case 'd': {
+                            Tcl_AppendToObj(resultPtr, range1, -1);
+                            Tcl_AppendToObj(resultPtr, "d", 1);
+                            Tcl_AppendToObj(resultPtr, range2, -1);
+                            Tcl_AppendToObj(resultPtr, "\n", 1);
+                            for (n=curr.fromIndex1; n <= curr.toIndex1; n++) {
+                                Tcl_AppendToObj(resultPtr, "< ", 2);
+                                Tcl_AppendToObj(resultPtr, lines1->startPtr[n],
+                                    lines1->lenPtr[n]);
+                                Tcl_AppendToObj(resultPtr, "\n", 1);
+                            }
+                            break;
+                        }
+                        case 'c': {
+                            Tcl_AppendToObj(resultPtr, range1, -1);
+                            Tcl_AppendToObj(resultPtr, "c", 1);
+                            Tcl_AppendToObj(resultPtr, range2, -1);
+                            Tcl_AppendToObj(resultPtr, "\n", 1);
+                            for (n=curr.fromIndex1; n <= curr.toIndex1; n++) {
+                                Tcl_AppendToObj(resultPtr, "< ", 2);
+                                Tcl_AppendToObj(resultPtr, lines1->startPtr[n],
+                                    lines1->lenPtr[n]);
+                                Tcl_AppendToObj(resultPtr, "\n", 1);
+                            }
+                            Tcl_AppendToObj(resultPtr, "---\n", 4);
+                            for (n=curr.fromIndex2; n <= curr.toIndex2; n++) {
+                                Tcl_AppendToObj(resultPtr, "> ", 2);
+                                Tcl_AppendToObj(resultPtr, lines2->startPtr[n],
+                                    lines2->lenPtr[n]);
+                                Tcl_AppendToObj(resultPtr, "\n", 1);
+                            }
+                            break;
+                        }
+                    }
+                }
+            }
+            break;
+        }
+        case DIFFS_DEBUG: {
+            DiffviewDiffOp *c;
+            char elem[256];
+
+            if (dvPtr->diffsPtr) {
+                for (i=0; i < dvPtr->diffsPtr->numDiffs; i++) {
+                    c = &dvPtr->diffsPtr->ops[i];
+
+                    /* append the diff info onto the output */
+                    if (c->fromIndex1 == c->toIndex1) {
+                        sprintf(range1, "%d", c->fromIndex1);
+                    } else {
+                        sprintf(range1, "%d,%d", c->fromIndex1, c->toIndex1);
+                    }
+
+                    if (c->fromIndex2 == c->toIndex2) {
+                        sprintf(range2, "%d", c->fromIndex2);
+                    } else {
+                        sprintf(range2, "%d,%d", c->fromIndex2, c->toIndex2);
+                    }
+
+                    sprintf(elem, "%c %s %s", c->op, range1, range2);
+                    Tcl_AppendElement(interp, elem);
+                }
+            }
+            break;
+        }
+        case DIFFS_NUMBER: {
+            int num = 0;
+            if (dvPtr->diffsPtr) {
+                num = dvPtr->diffsPtr->numDiffs;
+            }
+            resultPtr = Tcl_NewIntObj(num);
+            Tcl_SetObjResult(interp, resultPtr);
+            break;
+        }
+    }
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewTextSubCmd()
+ *
+ * Handles the "text" operation on the widget with the following
+ * syntax:
+ *
+ *   widget text 1 ?string?
+ *   widget text 2 ?string?
+ *
+ * Used to get/set the text being diff'd and displayed in the widget.
+ * ----------------------------------------------------------------------
+ */
+static int
+DiffviewTextSubCmd(interp, dvPtr, objc, objv)
+    Tcl_Interp *interp;       /* interp handling this command */
+    Diffview *dvPtr;          /* widget data */
+    int objc;                 /* number of command arguments */
+    Tcl_Obj *CONST objv[];    /* command arguments */
+{
+    int bufferNum;
+    DiffviewBuffer *slotPtr;
+
+    if (objc < 2 || objc > 4) {
+        Tcl_WrongNumArgs(interp, 2, objv, "bufferNum ?string?");
+        return TCL_ERROR;
+    }
+
+    /* decode the buffer number -- right now only buffers 1 & 2 */
+    if (Tcl_GetIntFromObj(interp, objv[2], &bufferNum) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (bufferNum < 1 || bufferNum > 2) {
+        Tcl_AppendResult(interp, "bad buffer number \"",
+            Tcl_GetString(objv[2]), "\": should be 1 or 2",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+    slotPtr = &dvPtr->buffer[bufferNum-1];
+
+    if (objc == 3) {
+        /* return current contents of the buffer */
+        if (slotPtr->textObj != NULL) {
+            Tcl_SetObjResult(interp, slotPtr->textObj);
+        } else {
+            Tcl_ResetResult(interp);
+        }
+        return TCL_OK;
+    }
+
+    /* set and return the new contents of the buffer */
+    if (slotPtr->textObj != NULL) {
+        Tcl_DecrRefCount(slotPtr->textObj);
+        DiffviewLinesFree(slotPtr->lineLimits);
+        slotPtr->lineLimits = NULL;
+    }
+    slotPtr->textObj = objv[3];
+    Tcl_IncrRefCount(slotPtr->textObj);
+
+    EventuallyRedraw(dvPtr);
+
+    Tcl_SetObjResult(interp, slotPtr->textObj);
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewXviewSubCmd()
+ *
+ * Handles the "xview" operation on the widget.  Adjusts the x-axis view
+ * according to some request, which usually comes from a scrollbar.
+ * Supports the standard Tk operations for "xview".
+ * ----------------------------------------------------------------------
+ */
+static int
+DiffviewXviewSubCmd(interp, dvPtr, objc, objv)
+    Tcl_Interp *interp;       /* interp handling this command */
+    Diffview *dvPtr;          /* widget data */
+    int objc;                 /* number of command arguments */
+    Tcl_Obj *CONST objv[];    /* command arguments */
+{
+
+    int offset = 0;
+    int index, count, type, viewWidth, windowUnits, maxOffset;
+    double fraction, fraction2;
+    
+    viewWidth = Tk_Width(dvPtr->tkwin) - 2*dvPtr->inset;
+
+    if (objc == 2) {
+        /*
+         * COMMAND: widget xview
+         * return current limits as fractions 0-1
+         */
+        if (dvPtr->maxWidth == 0) {
+            Tcl_SetResult(interp, "0 1", TCL_STATIC);
+        } else {
+            char buf[TCL_DOUBLE_SPACE*2+2];
+
+            fraction = dvPtr->xOffset/((double)dvPtr->maxWidth);
+            fraction2 = (dvPtr->xOffset + viewWidth)
+                /((double)dvPtr->maxWidth);
+            if (fraction2 > 1.0) {
+                fraction2 = 1.0;
+            }
+            sprintf(buf, "%g %g", fraction, fraction2);
+            Tcl_SetResult(interp, buf, TCL_VOLATILE);
+        }
+    } else {
+        if (objc == 3) {
+            /*
+             * COMMAND: widget xview index
+             * set left edge to character at index
+             */
+            if (Tcl_GetIntFromObj(interp, objv[2], &index) != TCL_OK) {
+                return TCL_ERROR;
+            }
+            offset = index*dvPtr->xScrollUnit;
+        } else {
+            /*
+             * COMMAND: widget xview moveto fraction
+             * COMMAND: widget xview scroll number what
+             * handles more complex scrolling movements
+             */
+            type = Tk_GetScrollInfoObj(interp, objc, objv, &fraction, &count);
+            switch (type) {
+                case TK_SCROLL_ERROR:
+                    return TCL_ERROR;
+                case TK_SCROLL_MOVETO:
+                    offset = (int)(fraction*dvPtr->maxWidth + 0.5);
+                    break;
+                case TK_SCROLL_PAGES:
+                    windowUnits = viewWidth/dvPtr->xScrollUnit;
+                    if (windowUnits > 2) {
+                        offset = dvPtr->xOffset
+                            + count*dvPtr->xScrollUnit*(windowUnits-2);
+                    } else {
+                        offset = dvPtr->xOffset + count*dvPtr->xScrollUnit;
+                    }
+                    break;
+                case TK_SCROLL_UNITS:
+                    offset = dvPtr->xOffset + count*dvPtr->xScrollUnit;
+                    break;
+            }
+        }
+        maxOffset = dvPtr->maxWidth
+            - (Tk_Width(dvPtr->tkwin) - 2*dvPtr->inset)
+            + (dvPtr->xScrollUnit - 1);
+        if (offset > maxOffset) { offset = maxOffset; }
+        if (offset < 0) { offset = 0; }
+
+        /* nudge back to an even boundary */
+        offset -= offset % dvPtr->xScrollUnit;
+
+        if (offset != dvPtr->xOffset) {
+            dvPtr->xOffset = offset;
+            dvPtr->flags |= UPDATE_H_SCROLLBAR;
+            EventuallyRedraw(dvPtr);
+        }
+    }
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewYviewSubCmd()
+ *
+ * Handles the "yview" operation on the widget.  Adjusts the y-axis view
+ * according to some request, which usually comes from a scrollbar.
+ * Supports the standard Tk operations for "yview".
+ * ----------------------------------------------------------------------
+ */
+static int
+DiffviewYviewSubCmd(interp, dvPtr, objc, objv)
+    Tcl_Interp *interp;       /* interp handling this command */
+    Diffview *dvPtr;          /* widget data */
+    int objc;                 /* number of command arguments */
+    Tcl_Obj *CONST objv[];    /* command arguments */
+{
+    int index, yLines, count, type;
+    double fraction, fraction2;
+
+    /* make sure that our layout info is up to date */
+    DiffviewUpdateLayout(dvPtr);
+
+    if (objc == 2) {
+        /*
+         * COMMAND: widget yview
+         * return current limits as fractions 0-1
+         */
+        if (dvPtr->maxHeight == 0) {
+            Tcl_SetResult(interp, "0 1", TCL_STATIC);
+        } else {
+            char buf[TCL_DOUBLE_SPACE * 2+2];
+
+            yLines = dvPtr->maxHeight/dvPtr->lineHeight;
+            fraction = dvPtr->topLine/((double)yLines);
+            fraction2 = (dvPtr->topLine+dvPtr->fullLines)/((double)yLines);
+            if (fraction2 > 1.0) {
+                fraction2 = 1.0;
+            }
+            sprintf(buf, "%g %g", fraction, fraction2);
+            Tcl_SetResult(interp, buf, TCL_VOLATILE);
+        }
+    } else if (objc == 3) {
+        /*
+         * COMMAND: widget yview index
+         * set top edge to line at index
+         */
+        if (Tcl_GetIntFromObj(interp, objv[2], &index) != TCL_OK) {
+            return TCL_ERROR;
+        }
+        ChangeDiffviewView(dvPtr, index);
+    } else {
+        /*
+         * COMMAND: widget yview moveto fraction
+         * COMMAND: widget yview scroll number what
+         * handles more complex scrolling movements
+         */
+        type = Tk_GetScrollInfoObj(interp, objc, objv, &fraction, &count);
+        switch (type) {
+            case TK_SCROLL_ERROR:
+                return TCL_ERROR;
+            case TK_SCROLL_MOVETO:
+                yLines = dvPtr->maxHeight/dvPtr->lineHeight;
+                index = (int)(yLines*fraction + 0.5);
+                break;
+            case TK_SCROLL_PAGES:
+                yLines = dvPtr->maxHeight/dvPtr->lineHeight;
+                if (dvPtr->fullLines > 2) {
+                    index = dvPtr->topLine + count*(dvPtr->fullLines-2);
+                } else {
+                    index = dvPtr->topLine + count;
+                }
+                break;
+            case TK_SCROLL_UNITS:
+                index = dvPtr->topLine + count;
+                break;
+        }
+        ChangeDiffviewView(dvPtr, index);
+    }
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewGetIndex()
+ *
+ * Used by many of the widget operations to parse an index into the
+ * widget view.  Handles the following syntax:
+ *   #NN ...... particular diff number, starting from 1
+ *   NN ....... particular line number in world view, starting from 0
+ *
+ * Returns TCL_OK if successful, and TCL_ERROR (along with an error
+ * message) if anything goes wrong.
+ * ----------------------------------------------------------------------
+ */
+static int
+DiffviewGetIndex(interp, dvPtr, objPtr, linePtr, diffOpPtrPtr)
+    Tcl_Interp *interp;             /* interp handling this command */
+    Diffview *dvPtr;                /* widget data */
+    Tcl_Obj *objPtr;                /* argument being parsed */
+    int *linePtr;                   /* returns: line number or -1 */
+    DiffviewDiffOp **diffOpPtrPtr;  /* returns: specific diff or NULL */
+{
+    int result = TCL_OK;
+    char *opt = Tcl_GetString(objPtr);
+    char *tail;
+    int dnum;
+
+    /* clear the return values */
+    if (linePtr) *linePtr = -1;
+    if (diffOpPtrPtr) *diffOpPtrPtr = NULL;
+
+    if (*opt == '#') {
+        dnum = strtol(opt+1, &tail, 10);
+        if (*tail != '\0' || dnum <= 0) {
+           result = TCL_ERROR;
+        }
+        else if (dvPtr->diffsPtr == NULL
+                   || dnum > dvPtr->diffsPtr->numDiffs) {
+           Tcl_AppendResult(interp, "diff \"", opt, "\" doesn't exist",
+               (char*)NULL);
+           return TCL_ERROR;
+        }
+        *diffOpPtrPtr = &dvPtr->diffsPtr->ops[dnum-1];
+    } else {
+        result = Tcl_GetIntFromObj(interp, objPtr, linePtr);
+    }
+
+    if (result != TCL_OK) {
+        Tcl_ResetResult(interp);
+        Tcl_AppendResult(interp, "bad index \"", opt, "\": should be "
+            "\"#n\" for diff, or an integer value for line number",
+            (char*)NULL);
+    }
+    return result;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DestroyDiffview()
+ *
+ * Used by Tcl_Release/Tcl_EventuallyFree to clean up the data associated
+ * with a widget when it is no longer being used.  This happens at the
+ * end of a widget destruction sequence.
+ * ----------------------------------------------------------------------
+ */
+static void
+DestroyDiffview(memPtr)
+    char *memPtr;             /* widget data */
+{
+    Diffview *dvPtr = (Diffview*)memPtr;
+    int bnum;
+
+    /*
+     * Clean up text associated with the diffs.
+     */
+    for (bnum=0; bnum < 2; bnum++) {
+        if (dvPtr->buffer[bnum].textObj != NULL) {
+            Tcl_DecrRefCount(dvPtr->buffer[bnum].textObj);
+        }
+        if (dvPtr->buffer[bnum].lineLimits != NULL) {
+            DiffviewLinesFree(dvPtr->buffer[bnum].lineLimits);
+        }
+    }
+
+    if (dvPtr->diffsPtr) {
+        DiffviewDiffsFree(dvPtr->diffsPtr);
+    }
+    DiffviewLayoutFree(&dvPtr->worldview);
+
+    /*
+     * Free up GCs and configuration options.
+     */
+    if (dvPtr->normGC != None) {
+        Tk_FreeGC(dvPtr->display, dvPtr->normGC);
+    }
+    if (dvPtr->addFgGC != None) {
+        Tk_FreeGC(dvPtr->display, dvPtr->addFgGC);
+    }
+    if (dvPtr->delFgGC != None) {
+        Tk_FreeGC(dvPtr->display, dvPtr->delFgGC);
+    }
+    if (dvPtr->chgFgGC != None) {
+        Tk_FreeGC(dvPtr->display, dvPtr->chgFgGC);
+    }
+
+    Tk_FreeConfigOptions((char*)dvPtr, dvPtr->optionTable, dvPtr->tkwin);
+    Tcl_Release((ClientData) dvPtr->tkwin);
+    dvPtr->tkwin = NULL;
+    ckfree((char*)dvPtr);
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * ConfigureDiffview()
+ *
+ * Takes a list of configuration options in objc/objv format and applies
+ * the settings to the widget.  This is the underlying "configure"
+ * operation for the widget.
+ * ----------------------------------------------------------------------
+ */
+static int
+ConfigureDiffview(interp, dvPtr, objc, objv, flags)
+    Tcl_Interp *interp;       /* interp handling this command */
+    Diffview *dvPtr;          /* widget data */
+    int objc;                 /* number of configuration option words */
+    Tcl_Obj *CONST objv[];    /* configuration option words */
+    int flags;                /* flags for Tk_ConfigureWidget */
+{
+    Tcl_Obj *errorResult = NULL;
+    int status;
+    Tk_SavedOptions savedOptions;
+
+    status = Tk_SetOptions(interp, (char*)dvPtr, dvPtr->optionTable,
+        objc, objv, dvPtr->tkwin, &savedOptions, (int*)NULL);
+
+    if (status != TCL_OK) {
+        errorResult = Tcl_GetObjResult(interp);
+        Tcl_IncrRefCount(errorResult);
+        Tk_RestoreSavedOptions(&savedOptions);
+
+        Tcl_SetObjResult(interp, errorResult);
+        Tcl_DecrRefCount(errorResult);
+        return TCL_ERROR;
+    }
+
+    /*
+     * Fix up the widget to react to any new configuration values.
+     */
+    Tk_SetBackgroundFromBorder(dvPtr->tkwin, dvPtr->normalBorder);
+
+    if (dvPtr->highlightWidth < 0) {
+        dvPtr->highlightWidth = 0;
+    }
+    dvPtr->inset = dvPtr->highlightWidth + dvPtr->borderWidth;
+
+    if (dvPtr->tklastfont != dvPtr->tkfont) {
+        /* the font changed, so re-measure everything */
+        dvPtr->flags |= FONT_CHANGED;
+        dvPtr->tklastfont = dvPtr->tkfont;
+    }
+
+    Tk_FreeSavedOptions(&savedOptions);
+
+    DiffviewWorldChanged((ClientData)dvPtr);
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewWorldChanged()
+ *
+ * Called by Tk when the world has changed in some way that causes
+ * all GCs and other things to be recomputed.  Reinitializes the
+ * widget and gets it ready to draw.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewWorldChanged(cdata)
+    ClientData cdata;        /* widget data */
+{
+    Diffview *dvPtr = (Diffview*)cdata;
+    GC gc; XGCValues gcValues;
+    unsigned long mask;
+
+    /* GC for normal widget text */
+    gcValues.foreground = dvPtr->fgColorPtr->pixel;
+    gcValues.graphics_exposures = False;
+    gcValues.font = Tk_FontId(dvPtr->tkfont);
+    mask = GCForeground | GCFont | GCGraphicsExposures;
+
+    gc = Tk_GetGC(dvPtr->tkwin, mask, &gcValues);
+    if (dvPtr->normGC != None) {
+        Tk_FreeGC(dvPtr->display, dvPtr->normGC);
+    }
+    dvPtr->normGC = gc;
+
+    /* GC for added diff text */
+    gcValues.foreground = dvPtr->addFgColorPtr->pixel;
+    gcValues.graphics_exposures = False;
+    gcValues.font = Tk_FontId(dvPtr->tkfont);
+    mask = GCForeground | GCFont | GCGraphicsExposures;
+
+    gc = Tk_GetGC(dvPtr->tkwin, mask, &gcValues);
+    if (dvPtr->addFgGC != None) {
+        Tk_FreeGC(dvPtr->display, dvPtr->addFgGC);
+    }
+    dvPtr->addFgGC = gc;
+
+    /* GC for deleted diff text */
+    gcValues.foreground = dvPtr->delFgColorPtr->pixel;
+    gcValues.graphics_exposures = False;
+    gcValues.font = Tk_FontId(dvPtr->tkfont);
+    mask = GCForeground | GCFont | GCGraphicsExposures;
+
+    gc = Tk_GetGC(dvPtr->tkwin, mask, &gcValues);
+    if (dvPtr->delFgGC != None) {
+        Tk_FreeGC(dvPtr->display, dvPtr->delFgGC);
+    }
+    dvPtr->delFgGC = gc;
+
+    /* GC for changed diff text */
+    gcValues.foreground = dvPtr->chgFgColorPtr->pixel;
+    gcValues.graphics_exposures = False;
+    gcValues.font = Tk_FontId(dvPtr->tkfont);
+    mask = GCForeground | GCFont | GCGraphicsExposures;
+
+    gc = Tk_GetGC(dvPtr->tkwin, mask, &gcValues);
+    if (dvPtr->chgFgGC != None) {
+        Tk_FreeGC(dvPtr->display, dvPtr->chgFgGC);
+    }
+    dvPtr->chgFgGC = gc;
+
+    /* this call comes when the font changes -- fix the layout */
+    dvPtr->flags |= FONT_CHANGED;
+
+    /* get ready to redraw */
+    DiffviewComputeGeometry(dvPtr);
+    dvPtr->flags |= UPDATE_V_SCROLLBAR|UPDATE_H_SCROLLBAR;
+    EventuallyRedraw(dvPtr);
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * EventuallyRedraw()
+ *
+ * Arranges for the widget to redraw itself at the next idle point.
+ * ----------------------------------------------------------------------
+ */
+static void
+EventuallyRedraw(dvPtr)
+    Diffview *dvPtr;          /* widget data */
+{
+    if ((dvPtr->flags & REDRAW_PENDING) || (dvPtr->flags & WIDGET_DELETED)
+            || !Tk_IsMapped(dvPtr->tkwin)) {
+        return;  /* no need to redraw */
+    }
+
+    dvPtr->flags |= REDRAW_PENDING;
+    Tcl_DoWhenIdle(DisplayDiffview, (ClientData)dvPtr);
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DisplayDiffview()
+ *
+ * Redraws the widget based on the current view and all data.
+ * ----------------------------------------------------------------------
+ */
+static void
+DisplayDiffview(cdata)
+    ClientData cdata;        /* widget data */
+{
+    Diffview *dvPtr = (Diffview*)cdata;
+    Tk_Window tkwin = dvPtr->tkwin;
+
+    int i, bnum, bline, x, xw, y, ymid, width;
+    char *textPtr; int textLen;
+    Pixmap pixmap;
+    GC bg, fg;
+
+    /* handling redraw now -- no longer pending */
+    dvPtr->flags &= ~REDRAW_PENDING;
+
+    if (dvPtr->flags & WIDGET_DELETED) {
+        /* widget is being torn down -- bail out! */
+        return;
+    }
+
+    /* handle any pending layout changes */
+    DiffviewUpdateLayout(dvPtr);
+
+    /*
+     * Hang onto the widget data until we're done updating scrollbars.
+     * The -xscrollcommand and -yscrollcommand options may take us into
+     * code that deletes the widget.
+     */
+    Tcl_Preserve((ClientData)dvPtr);
+
+    if (dvPtr->flags & UPDATE_V_SCROLLBAR) {
+        DiffviewUpdateVScrollbar(dvPtr);
+        if ((dvPtr->flags & WIDGET_DELETED) || !Tk_IsMapped(tkwin)) {
+            Tcl_Release((ClientData)dvPtr);
+            return;
+        }
+    }
+    if (dvPtr->flags & UPDATE_H_SCROLLBAR) {
+        DiffviewUpdateHScrollbar(dvPtr);
+        if ((dvPtr->flags & WIDGET_DELETED) || !Tk_IsMapped(tkwin)) {
+            Tcl_Release((ClientData)dvPtr);
+            return;
+        }
+    }
+    dvPtr->flags &= ~(REDRAW_PENDING|UPDATE_V_SCROLLBAR|UPDATE_H_SCROLLBAR);
+    Tcl_Release((ClientData)dvPtr);
+
+#ifndef TK_NO_DOUBLE_BUFFERING
+    /*
+     * Best solution is to draw everything into a temporary pixmap
+     * and copy that to the screen in one shot.  That avoids flashing.
+     */
+    pixmap = Tk_GetPixmap(dvPtr->display, Tk_WindowId(tkwin),
+            Tk_Width(tkwin), Tk_Height(tkwin), Tk_Depth(tkwin));
+#else
+    pixmap = Tk_WindowId(tkwin);
+#endif
+
+    Tk_Fill3DRectangle(tkwin, pixmap, dvPtr->normalBorder, 0, 0,
+            Tk_Width(tkwin), Tk_Height(tkwin), 0, TK_RELIEF_FLAT);
+
+    /*
+     * Find the top line in the view in each buffer
+     */
+    y = dvPtr->inset + dvPtr->topLine*dvPtr->lineHeight + dvPtr->lineAscent
+          - dvPtr->yOffset;
+    x = dvPtr->inset - dvPtr->xOffset;
+
+    if (Tk_Width(tkwin) > dvPtr->maxWidth) {
+        width = Tk_Width(tkwin)+10;
+    } else {
+        width = dvPtr->maxWidth+10;
+    }
+
+    for (i=dvPtr->topLine;
+         i <= dvPtr->btmLine && i < dvPtr->worldview.numLines;
+         i++) {
+
+        /* draw any diff rectangle for this line */
+        fg = dvPtr->normGC;
+        bg = None;
+
+        switch (dvPtr->worldview.lines[i].style) {
+            case 'a': {
+                fg = dvPtr->addFgGC;
+                bg = Tk_GCForColor(dvPtr->addBgColorPtr, pixmap);
+                break;
+            }
+            case 'd': {
+                fg = dvPtr->delFgGC;
+                bg = Tk_GCForColor(dvPtr->delBgColorPtr, pixmap);
+                break;
+            }
+            case 'c': {
+                fg = dvPtr->chgFgGC;
+                bg = Tk_GCForColor(dvPtr->chgBgColorPtr, pixmap);
+                break;
+            }
+        }
+
+        if (bg != None) {
+            XFillRectangle(Tk_Display(tkwin), pixmap, bg,
+                x, y - dvPtr->lineAscent,
+                (unsigned int)width, (unsigned int)dvPtr->lineHeight);
+        }
+
+        bnum = dvPtr->worldview.lines[i].bnum;
+        bline = dvPtr->worldview.lines[i].bline;
+
+        /* a negative number means "leave the line blank" */
+        if (bline >= 0) {
+            textPtr = dvPtr->buffer[bnum].lineLimits->startPtr[bline];
+            textLen = dvPtr->buffer[bnum].lineLimits->lenPtr[bline];
+
+            /* Draw the actual text of this item */
+            Tk_DrawChars(dvPtr->display, pixmap, fg, dvPtr->tkfont,
+                textPtr, textLen, x, y);
+
+            /* Draw an overstrike on deleted text */
+            if (dvPtr->worldview.lines[i].style == 'd' && dvPtr->overStrDel) {
+                xw = Tk_TextWidth(dvPtr->tkfont, textPtr, textLen) + 5;
+                ymid = y - dvPtr->lineAscent/2;
+                XDrawLine(Tk_Display(tkwin), pixmap, fg, 0, ymid, xw, ymid);
+            }
+        }
+
+        y += dvPtr->lineHeight;
+    }
+
+    /*
+     * Draw the border on top so that it covers any characters that
+     * have scrolled off screen.
+     */
+    Tk_Draw3DRectangle(tkwin, pixmap, dvPtr->normalBorder,
+            dvPtr->highlightWidth, dvPtr->highlightWidth,
+            Tk_Width(tkwin) - 2*dvPtr->highlightWidth,
+            Tk_Height(tkwin) - 2*dvPtr->highlightWidth,
+            dvPtr->borderWidth, dvPtr->relief);
+
+    if (dvPtr->highlightWidth > 0) {
+        XColor *color; GC gc;
+
+        color = (dvPtr->flags & GOT_FOCUS)
+            ? dvPtr->highlightColor : dvPtr->highlightBgColor;
+        gc = Tk_GCForColor(color, pixmap);
+        Tk_DrawFocusHighlight(dvPtr->tkwin, gc, dvPtr->highlightWidth, pixmap);
+    }
+
+#ifndef TK_NO_DOUBLE_BUFFERING
+    XCopyArea(dvPtr->display, pixmap, Tk_WindowId(tkwin),
+            dvPtr->normGC, 0, 0, (unsigned) Tk_Width(tkwin),
+            (unsigned) Tk_Height(tkwin), 0, 0);
+    Tk_FreePixmap(dvPtr->display, pixmap);
+#endif
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewComputeGeometry()
+ *
+ * Recomputes the overall dimensions of the widget when the overall
+ * size or the borderwidth is changed.  Registers a new size for the
+ * widget.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewComputeGeometry(dvPtr)
+    Diffview *dvPtr;          /* widget data */
+{
+    int pixelWidth, pixelHeight;
+
+    dvPtr->xScrollUnit = Tk_TextWidth(dvPtr->tkfont, "0", 1);
+    if (dvPtr->xScrollUnit == 0) {
+        dvPtr->xScrollUnit = 1;
+    }
+
+    pixelWidth = dvPtr->width + 2*dvPtr->inset;
+    pixelHeight = dvPtr->height + 2*dvPtr->inset;
+    Tk_GeometryRequest(dvPtr->tkwin, pixelWidth, pixelHeight);
+    Tk_SetInternalBorder(dvPtr->tkwin, dvPtr->inset);
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewEventProc()
+ *
+ * Catches important events on the widget and causes it to redraw
+ * itself and react to focus changes.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewEventProc(cdata, eventPtr)
+    ClientData cdata;        /* widget data */
+    XEvent *eventPtr;        /* event information coming from X11 */
+{
+    Diffview *dvPtr = (Diffview*)cdata;
+    
+    if (eventPtr->type == Expose) {
+        EventuallyRedraw(dvPtr);
+    }
+    else if (eventPtr->type == DestroyNotify) {
+        if (!(dvPtr->flags & WIDGET_DELETED)) {
+            dvPtr->flags |= WIDGET_DELETED;
+            Tcl_DeleteCommandFromToken(dvPtr->interp, dvPtr->widgetCmd);
+            if (dvPtr->flags & REDRAW_PENDING) {
+                Tcl_CancelIdleCall(DisplayDiffview, cdata);
+            }
+            Tcl_EventuallyFree(cdata, DestroyDiffview);
+        }
+    }
+    else if (eventPtr->type == ConfigureNotify) {
+        dvPtr->flags |= UPDATE_V_SCROLLBAR|UPDATE_H_SCROLLBAR;
+        ChangeDiffviewView(dvPtr, dvPtr->topLine);
+        EventuallyRedraw(dvPtr);
+    }
+    else if (eventPtr->type == FocusIn) {
+        if (eventPtr->xfocus.detail != NotifyInferior) {
+            dvPtr->flags |= GOT_FOCUS;
+            EventuallyRedraw(dvPtr);
+        }
+    }
+    else if (eventPtr->type == FocusOut) {
+        if (eventPtr->xfocus.detail != NotifyInferior) {
+            dvPtr->flags &= ~GOT_FOCUS;
+            EventuallyRedraw(dvPtr);
+        }
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewCmdDeletedProc --
+ *
+ * Invoked whenever the command associated with the widget is deleted.
+ * If the widget is not already being destroyed, this starts the process.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewCmdDeletedProc(cdata)
+    ClientData cdata;        /* widget data */
+{
+    Diffview *dvPtr = (Diffview*)cdata;
+
+    /*
+     * This gets invoked whenever the command is deleted.  If we haven't
+     * started destroying the widget yet, then do it now to clean up.
+     */
+    if (!(dvPtr->flags & WIDGET_DELETED)) {
+        Tk_DestroyWindow(dvPtr->tkwin);
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * ChangeDiffviewView()
+ *
+ * Changes the y-view of the widget for scrolling operations.  Sets the
+ * given line to the top of the view.
+ * ----------------------------------------------------------------------
+ */
+static void
+ChangeDiffviewView(dvPtr, lnum)
+    Diffview *dvPtr;          /* widget data */
+    int lnum;                 /* this line should appear at the top */
+{
+    int maxLines, ySize, yLines;
+
+    DiffviewUpdateLayout(dvPtr);
+    ySize = Tk_Height(dvPtr->tkwin) - 2*dvPtr->inset;
+    yLines = ySize/dvPtr->lineHeight;
+    maxLines = dvPtr->maxHeight/dvPtr->lineHeight;
+
+    if (lnum >= (maxLines - yLines)) {
+        lnum = maxLines - yLines;
+    }
+    if (lnum < 0) {
+        lnum = 0;
+    }
+    if (dvPtr->topLine != lnum) {
+        dvPtr->topLine = lnum;
+        dvPtr->yOffset = lnum * dvPtr->lineHeight;
+        EventuallyRedraw(dvPtr);
+        dvPtr->flags |= UPDATE_V_SCROLLBAR;
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewScanTo()
+ *
+ * Implements the "scan dragto" operation on the widget.  Given a
+ * starting point from the "scan mark" operation, this adjusts the
+ * view to the given location.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewScanTo(dvPtr, x, y)
+    Diffview *dvPtr;          /* widget data */
+    int x;                    /* x-coord for drag-to location */
+    int y;                    /* y-coord for drag-to location */
+{
+    int newTopLine, newOffset, maxLine, maxOffset;
+
+    /*
+     * Compute the top line for the display by amplifying the difference
+     * between the current "drag" point and the original "start" point.
+     */
+    maxLine = dvPtr->maxHeight/dvPtr->lineHeight - dvPtr->fullLines;
+
+    newTopLine = dvPtr->scanMarkYStart
+            - (10*(y - dvPtr->scanMarkY))/dvPtr->lineHeight;
+
+    if (newTopLine > maxLine) {
+        newTopLine = dvPtr->scanMarkYStart = maxLine;
+        dvPtr->scanMarkY = y;
+    }
+    else if (newTopLine < 0) {
+        newTopLine = dvPtr->scanMarkYStart = 0;
+        dvPtr->scanMarkY = y;
+    }
+    ChangeDiffviewView(dvPtr, newTopLine);
+
+    /*
+     * Compute the left edge for the display by amplifying the difference
+     * between the current "drag" point and the original "start" point.
+     */
+    maxOffset = dvPtr->maxWidth - (Tk_Width(dvPtr->tkwin) - 2*dvPtr->inset);
+    newOffset = dvPtr->scanMarkXStart - (10*(x - dvPtr->scanMarkX));
+    if (newOffset > maxOffset) {
+        newOffset = dvPtr->scanMarkXStart = maxOffset;
+        dvPtr->scanMarkX = x;
+    } else if (newOffset < 0) {
+        newOffset = dvPtr->scanMarkXStart = 0;
+        dvPtr->scanMarkX = x;
+    }
+    newOffset -= newOffset % dvPtr->xScrollUnit;
+
+    if (newOffset != dvPtr->xOffset) {
+        dvPtr->xOffset = newOffset;
+        dvPtr->flags |= UPDATE_H_SCROLLBAR;
+        EventuallyRedraw(dvPtr);
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewUpdateLayout()
+ *
+ * Called whenever the widget is about to access layout information
+ * to make sure that the latest info is in place and up-to-date.
+ * Computes the line start/end for each line in each buffer, then
+ * computes the diffs and figures out how many lines to show.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewUpdateLayout(dvPtr)
+    Diffview *dvPtr;          /* widget data */
+{
+    int changes = 0;   /* no layout changes yet */
+    DiffviewBuffer* bufferPtr;
+    DiffviewDiffOp *currOp;
+    DiffviewLayoutLine line;
+    int i, bnum, bline, pixelWidth, maxWidth, ySize;
+    int numLines1, numLines2, lnum1, lnum2, dnum, lastdnum, pastDiff;
+    char *textPtr, *textPtr2; int textLen;
+    Tk_FontMetrics fm;
+
+    /* if the font changed, then re-measure everything */
+    changes = ((dvPtr->flags & FONT_CHANGED) != 0);
+
+    /* fill in line limits for any new data */
+    for (bnum=0; bnum < 2; bnum++) {
+        bufferPtr = &dvPtr->buffer[bnum];
+
+        if (bufferPtr->textObj != NULL && bufferPtr->lineLimits == NULL) {
+            textPtr = Tcl_GetStringFromObj(bufferPtr->textObj, &textLen);
+            bufferPtr->lineLimits = DiffviewLinesCreate(textPtr, textLen);
+            changes = 1;
+        }
+    }
+
+    if (changes) {
+        /* recompute the diffs between the buffers */
+        if (dvPtr->diffsPtr) {
+            DiffviewDiffsFree(dvPtr->diffsPtr);
+            dvPtr->diffsPtr = NULL;
+        }
+
+        if (dvPtr->buffer[0].textObj && dvPtr->buffer[1].textObj) {
+            textPtr = Tcl_GetStringFromObj(dvPtr->buffer[0].textObj, &textLen);
+            textPtr2 = Tcl_GetStringFromObj(dvPtr->buffer[1].textObj, &textLen);
+
+            dvPtr->diffsPtr = DiffviewDiffsCreate(
+                textPtr, dvPtr->buffer[0].lineLimits,
+                textPtr2, dvPtr->buffer[1].lineLimits);
+        }
+
+        /*
+         * Compute the layout of all lines according to the current
+         * view mode.  Each line in the world view is stored in the
+         * array dvPtr->worldview.lines.  Each line has a style (color
+         * for normal, add, delete, etc.) and an indication of which
+         * buffer it comes from.
+         */
+        DiffviewLayoutClear(&dvPtr->worldview);
+
+        /*
+         * March through the lines and figure out the source and style
+         * of each line based on the diffs:
+         *   'n' = normal (common) line
+         *   'a' = draw with the "added" style
+         *   'd' = draw with the "deleted" style
+         *   'c' = draw with the "changed" style
+         */
+        numLines1 = (dvPtr->buffer[0].lineLimits)
+                       ? dvPtr->buffer[0].lineLimits->numLines : 0;
+        numLines2 = (dvPtr->buffer[1].lineLimits)
+                       ? dvPtr->buffer[1].lineLimits->numLines : 0;
+
+        dnum = 0;  /* current difference in diffsPtr */
+        lnum1 = lnum2 = 0;
+
+        while (lnum1 < numLines1 || lnum2 < numLines2) {
+            /* assume it's a normal-looking line (buffers are the same) */
+            line.style = 'n';
+            line.bnum = 0;
+            line.bline = lnum1;
+            line.diffNum = -1;
+
+            /* is there a diff that contains this line? */
+            if (dvPtr->diffsPtr && dnum < dvPtr->diffsPtr->numDiffs) {
+              currOp = &dvPtr->diffsPtr->ops[dnum];
+
+              if ( (lnum1 >= currOp->fromIndex1
+                     && lnum1 <= currOp->toIndex1)
+                || (lnum2 >= currOp->fromIndex2
+                     && lnum2 <= currOp->toIndex2) ) {
+
+                line.diffNum = dnum;  /* line is part of this diff */
+
+                switch (currOp->op) {
+                    case 'c': {
+                        if (dvPtr->layout == LAYOUT_INLINE) {
+                            if (dvPtr->diffdir == DIFF_1TO2) {
+                                /* show the buffer #1 lines first, then #2 */
+                                if (lnum1 <= currOp->toIndex1) {
+                                    line.style = 'd';
+                                    line.bnum = 0;
+                                    line.bline = lnum1++;
+                                } else {
+                                    line.style = 'a';
+                                    line.bnum = 1;
+                                    line.bline = lnum2++;
+                                }
+                            } else {
+                                /* reverse -- show #2 lines first, then #1 */
+                                if (lnum2 <= currOp->toIndex2) {
+                                    line.style = 'd';
+                                    line.bnum = 1;
+                                    line.bline = lnum2++;
+                                } else {
+                                    line.style = 'a';
+                                    line.bnum = 0;
+                                    line.bline = lnum1++;
+                                }
+                            }
+                        } else {
+                            if (dvPtr->diffdir == DIFF_1TO2) {
+                                /* show final lines in buf #2 as "changed" */
+                                line.style = 'c';
+                                line.bnum = 1;
+                                line.bline = lnum2++;
+                                lnum1 = currOp->toIndex1+1;
+                            } else {
+                                /* show final lines in buf #1 as "changed" */
+                                line.style = 'c';
+                                line.bnum = 0;
+                                line.bline = lnum1++;
+                                lnum2 = currOp->toIndex2+1;
+                            }
+                        }
+                        break;
+                    }
+                    case 'a': {
+                        if (dvPtr->diffdir == DIFF_1TO2) {
+                            /* show lines in buffer #2 as 'added' */
+                            line.style = 'a';
+                            line.bnum = 1;
+                            line.bline = lnum2++;
+                            lnum1 = currOp->toIndex1;
+                        } else {
+                            /* reverse diff -- like we're deleting lines */
+                            if (dvPtr->layout == LAYOUT_INLINE) {
+                                line.style = 'd';
+                                line.bnum = 1;
+                                line.bline = lnum2++;
+                                lnum1 = currOp->toIndex1;
+                            } else {
+                                /* show lines from buffer #2 as empty */
+                                line.style = 'd';
+                                line.bnum = 0;
+                                line.bline = -1;
+                                lnum2++;
+                                lnum1 = currOp->toIndex1;
+                            }
+                        }
+                        break;
+                    }
+                    case 'd': {
+                        if (dvPtr->diffdir == DIFF_1TO2) {
+                            if (dvPtr->layout == LAYOUT_INLINE) {
+                                line.style = 'd';
+                                line.bnum = 0;
+                                line.bline = lnum1++;
+                                lnum2 = currOp->toIndex2;
+                            } else {
+                                /* show lines from buffer #2 as empty */
+                                line.style = 'd';
+                                line.bnum = 0;
+                                line.bline = -1;
+                                lnum1++;
+                                lnum2 = currOp->toIndex2;
+                            }
+                        } else {
+                            /* reverse diff -- like we're adding lines */
+                            line.style = 'a';
+                            line.bnum = 0;
+                            line.bline = lnum1++;
+                            lnum2 = currOp->toIndex2;
+                        }
+                        break;
+                    }
+                    default: {
+                        Tcl_Panic("bad diff type '%c' found in layout",
+                            currOp->op);
+                        break;
+                    }
+                }
+              } else {
+                /* normal line -- keep moving forward */
+                lnum1++; lnum2++;
+              }
+
+              /* have we reached the end of the diff? then move on */
+              pastDiff = 0;
+              switch (currOp->op) {
+                  case 'c':
+                      pastDiff = (lnum1 > currOp->toIndex1
+                               && lnum2 > currOp->toIndex2);
+                      break;
+                  case 'a':
+                      pastDiff = (lnum2 > currOp->toIndex2);
+                      break;
+                  case 'd':
+                      pastDiff = (lnum1 > currOp->toIndex1);
+                      break;
+              }
+              if (pastDiff) {
+                  dnum++;
+              }
+            } else {
+                /* no more diffs -- keep moving forward */
+                lnum1++; lnum2++;
+            }
+
+            /* add this new line to the layout */
+            DiffviewLayoutAdd(&dvPtr->worldview, &line);
+        }
+
+        /*
+         * Figure out where the diffs are located, and put that info
+         * back into the diffs.  This makes it easy later to refer to
+         * diff "#3" and understand what lines we're talking about.
+         */
+        lastdnum = -1;
+        for (i=0; i < dvPtr->worldview.numLines; i++) {
+            dnum = dvPtr->worldview.lines[i].diffNum;
+            if (dnum != lastdnum) {
+                if (lastdnum < 0) {
+                    /* leading edge -- catch the "from" line */
+                    lnum1 = i;
+                } else {
+                    /* trailing edge -- save diff info */
+                    dvPtr->diffsPtr->ops[lastdnum].fromWorld = lnum1;
+                    dvPtr->diffsPtr->ops[lastdnum].toWorld = i-1;
+                }
+            }
+            lastdnum = dnum;
+        }
+        if (lastdnum >= 0) {
+            dvPtr->diffsPtr->ops[lastdnum].fromWorld = lnum1;
+            dvPtr->diffsPtr->ops[lastdnum].toWorld = i-1;
+        }
+
+        /* compute overall text width for all lines */
+        maxWidth = 0;
+        for (i=0; i < dvPtr->worldview.numLines; i++) {
+            bline = dvPtr->worldview.lines[i].bline;
+            if (bline >= 0) {
+                bnum = dvPtr->worldview.lines[i].bnum;
+                bufferPtr = &dvPtr->buffer[bnum];
+
+                if (bufferPtr->lineLimits) {
+                    textPtr = bufferPtr->lineLimits->startPtr[bline];
+                    textLen = bufferPtr->lineLimits->lenPtr[bline];
+                    pixelWidth = Tk_TextWidth(dvPtr->tkfont, textPtr, textLen);
+
+                    if (pixelWidth > maxWidth) {
+                        maxWidth = pixelWidth;
+                    }
+                }
+            }
+        }
+        dvPtr->maxWidth = maxWidth;
+
+        /* compute overall height of the widget */
+        Tk_GetFontMetrics(dvPtr->tkfont, &fm);
+        dvPtr->lineHeight = fm.linespace;
+        dvPtr->lineAscent = fm.ascent;
+        dvPtr->maxHeight = dvPtr->worldview.numLines * fm.linespace;
+
+        /* figure out the limits of the current view */
+        ySize = Tk_Height(dvPtr->tkwin) - 2*dvPtr->inset;
+        dvPtr->topLine = dvPtr->yOffset/fm.linespace;
+        dvPtr->btmLine = (dvPtr->yOffset + ySize)/fm.linespace + 1;
+        dvPtr->fullLines = ySize/fm.linespace;
+
+        dvPtr->flags &= ~FONT_CHANGED;
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewUpdateVScrollbar()
+ *
+ * Used to invoke the -yscrollcommand whenever the y-view has changed.
+ * This updates the scrollbar so that it shows the proper bubble.
+ * If there is no -yscrollcommand option, this does nothing.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewUpdateVScrollbar(dvPtr)
+    Diffview *dvPtr;          /* widget data */
+{
+    char string[TCL_DOUBLE_SPACE*2 + 2];
+    double first, last;
+    int result, ySize;
+
+    /* make sure the layout info is up to date */
+    DiffviewUpdateLayout(dvPtr);
+
+    /* update the limits of the current view */
+    ySize = Tk_Height(dvPtr->tkwin) - 2*dvPtr->inset;
+    if (dvPtr->lineHeight > 0) {
+        dvPtr->topLine = dvPtr->yOffset/dvPtr->lineHeight;
+        dvPtr->btmLine = (dvPtr->yOffset + ySize)/dvPtr->lineHeight + 1;
+        dvPtr->fullLines = ySize/dvPtr->lineHeight;
+    }
+
+    /* if there's no scroll command, then there's nothing left to do */
+    if (dvPtr->yScrollCmd == NULL) {
+        return;
+    }
+
+    if (dvPtr->maxHeight == 0) {
+        first = 0.0;
+        last = 1.0;
+    } else {
+        first = dvPtr->yOffset/((double)dvPtr->maxHeight);
+        last = (dvPtr->yOffset + ySize)/((double)dvPtr->maxHeight);
+        if (last > 1.0) {
+            last = 1.0;
+        }
+    }
+    sprintf(string, " %g %g", first, last);
+
+    /* preserve/release the interp, in case it gets destroyed during the call */
+    Tcl_Preserve((ClientData)dvPtr->interp);
+
+    result = Tcl_VarEval(dvPtr->interp, dvPtr->yScrollCmd, string,
+            (char*)NULL);
+    if (result != TCL_OK) {
+        Tcl_AddErrorInfo(dvPtr->interp,
+                "\n    (vertical scrolling command executed by diffview)");
+        Tcl_BackgroundError(dvPtr->interp);
+    }
+
+    Tcl_Release((ClientData)dvPtr->interp);
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewUpdateHScrollbar()
+ *
+ * Used to invoke the -xscrollcommand whenever the x-view has changed.
+ * This updates the scrollbar so that it shows the proper bubble.
+ * If there is no -xscrollcommand option, this does nothing.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewUpdateHScrollbar(dvPtr)
+    Diffview *dvPtr;          /* widget data */
+{
+    char string[TCL_DOUBLE_SPACE*2 + 3];
+    int result, viewWidth;
+    double first, last;
+
+    /* make sure the layout info is up to date */
+    DiffviewUpdateLayout(dvPtr);
+
+    /* if there's no scroll command, then there's nothing left to do */
+    if (dvPtr->xScrollCmd == NULL) {
+        return;
+    }
+
+    viewWidth = Tk_Width(dvPtr->tkwin) - 2*dvPtr->inset;
+    if (dvPtr->maxWidth == 0) {
+        first = 0;
+        last = 1.0;
+    } else {
+        first = dvPtr->xOffset/((double)dvPtr->maxWidth);
+        last = (dvPtr->xOffset + viewWidth)/((double) dvPtr->maxWidth);
+        if (last > 1.0) {
+            last = 1.0;
+        }
+    }
+    sprintf(string, " %g %g", first, last);
+
+    /* preserve/release the interp, in case it gets destroyed during the call */
+    Tcl_Preserve((ClientData)dvPtr->interp);
+
+    result = Tcl_VarEval(dvPtr->interp, dvPtr->xScrollCmd, string,
+            (char*)NULL);
+    if (result != TCL_OK) {
+        Tcl_AddErrorInfo(dvPtr->interp,
+                "\n    (horizontal scrolling command executed by diffview)");
+        Tcl_BackgroundError(dvPtr->interp);
+    }
+
+    Tcl_Release((ClientData)dvPtr->interp);
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewLinesCreate()
+ *
+ * Used to breakup a Tcl string object into the indices for the start
+ * and end of each line.  This is the first step in the computation
+ * of diffs and the world view of the widget.
+ *
+ * Returns a pointer to a description of the line geometry, which should
+ * be freed by calling DiffviewLinesFree() when it is no longer needed.
+ * ----------------------------------------------------------------------
+ */
+static DiffviewLines*
+DiffviewLinesCreate(textPtr, textLen)
+    char *textPtr;                  /* text string being broken up */
+    int textLen;                    /* length of the string */
+{
+    int numLines = 0;
+    DiffviewLines *lineLimitsPtr;
+    char **newStarts;
+    int *newLens;
+    unsigned int len;
+
+    lineLimitsPtr = (DiffviewLines*)ckalloc(sizeof(DiffviewLines));
+    lineLimitsPtr->maxLines = 0;
+    lineLimitsPtr->startPtr = NULL;
+    lineLimitsPtr->lenPtr = NULL;
+
+    while (textLen > 0) {
+        /*
+         * If we're out of space, double the size and copy existing
+         * info over.
+         */
+        if (numLines >= lineLimitsPtr->maxLines) {
+            if (lineLimitsPtr->maxLines == 0) {
+                lineLimitsPtr->maxLines = 100;
+            } else {
+                lineLimitsPtr->maxLines *= 2;
+            }
+
+            /* resize the start point array */
+            newStarts = (char**)ckalloc(lineLimitsPtr->maxLines*sizeof(char*));
+            if (lineLimitsPtr->startPtr) {
+                memcpy((VOID*)newStarts, (VOID*)lineLimitsPtr->startPtr,
+                    numLines*sizeof(char*));
+                ckfree((char*)lineLimitsPtr->startPtr);
+            }
+            lineLimitsPtr->startPtr = newStarts;
+
+            /* resize the end point array */
+            newLens = (int*)ckalloc(lineLimitsPtr->maxLines*sizeof(int));
+            if (lineLimitsPtr->lenPtr) {
+                memcpy((VOID*)newLens, (VOID*)lineLimitsPtr->lenPtr,
+                    numLines*sizeof(int));
+                ckfree((char*)lineLimitsPtr->lenPtr);
+            }
+            lineLimitsPtr->lenPtr = newLens;
+        }
+
+        /* mark the start of this line, then search for the end */
+        lineLimitsPtr->startPtr[numLines] = textPtr;
+        lineLimitsPtr->lenPtr[numLines] = 0;
+
+        while (*textPtr != '\n' && textLen > 0) {
+            textPtr++;  textLen--;
+        }
+        if (textPtr > lineLimitsPtr->startPtr[numLines]) {
+            len = textPtr - lineLimitsPtr->startPtr[numLines];
+            lineLimitsPtr->lenPtr[numLines] = len;
+        }
+        numLines++;
+
+        /* skip over the newline and start with next line */
+        if (*textPtr == '\n') {
+            textPtr++;  textLen--;
+        }
+    }
+    lineLimitsPtr->numLines = numLines;
+
+    return lineLimitsPtr;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewLinesFree()
+ *
+ * Used to free up the data structure created by DiffviewLinesCreate().
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewLinesFree(lineLimitsPtr)
+    DiffviewLines *lineLimitsPtr;   /* data structure being freed */
+{
+    if (lineLimitsPtr) {
+        if (lineLimitsPtr->startPtr) {
+            ckfree((char*)lineLimitsPtr->startPtr);
+        }
+        if (lineLimitsPtr->lenPtr) {
+            ckfree((char*)lineLimitsPtr->lenPtr);
+        }
+        ckfree((char*)lineLimitsPtr);
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewDiffsCreate()
+ *
+ * Considers two strings textPtr1 and textPtr2 (divided into segments
+ * according to limsPtr1 and limsPtr2), and computes the longest common
+ * subsequences between the two strings.  This is the first step in
+ * computing the differences between the two strings.
+ *
+ * Returns a data structure that contains a series of "diff" operations.
+ * This should be freed when it is no longer needed by calling
+ * DiffviewDiffsFree().
+ *
+ *   REFERENCE:
+ *   J. W. Hunt and M. D. McIlroy, "An algorithm for differential
+ *   file comparison," Comp. Sci. Tech. Rep. #41, Bell Telephone
+ *   Laboratories (1976). Available on the Web at the second
+ *   author's personal site: http://www.cs.dartmouth.edu/~doug/
+ *
+ * ----------------------------------------------------------------------
+ */
+static DiffviewDiffs*
+DiffviewDiffsCreate(textPtr1, limsPtr1, textPtr2, limsPtr2)
+    char *textPtr1;           /* text from buffer #1 */
+    DiffviewLines *limsPtr1;  /* limits of individual strings in textPtr1 */
+    char *textPtr2;           /* text from buffer #2 */
+    DiffviewLines *limsPtr2;  /* limits of individual strings in textPtr2 */
+{
+    DiffviewDiffs *diffPtr = NULL;
+
+    Tcl_HashTable eqv;
+    Tcl_HashSearch iter;
+    Tcl_HashEntry *entryPtr;
+    Tcl_DString buffer;
+    DiffviewSubseq *K, *newK, newCandidate; 
+    int Kmax; int Klen;
+    Tcl_Obj *listPtr, **objv;
+    int i, j, candidateIdx, subseqLen, longestMatch;
+    int max, min, mid, midval, sLen, del;
+    int len, created, o, objc, index1, *lcsIndex1, index2, *lcsIndex2;
+    char *key;
+
+    newCandidate.index1 = -1;		/* Suppress compiler warning. */
+    newCandidate.index2 = -1;
+    newCandidate.next = -1;
+
+    /*
+     * Build a set of equivalence classes.  Scan through all of
+     * buffer #2 and map each string to a list of indices for the
+     * lines that have that string.
+     */
+    Tcl_DStringInit(&buffer);
+    Tcl_InitHashTable(&eqv, TCL_STRING_KEYS);
+    for (i=0; i < limsPtr2->numLines; i++) {
+        len = limsPtr2->lenPtr[i];
+        Tcl_DStringSetLength(&buffer, len);
+        key = Tcl_DStringValue(&buffer);
+        memcpy((VOID*)key, (VOID*)limsPtr2->startPtr[i], len);
+
+        entryPtr = Tcl_CreateHashEntry(&eqv, key, &created);
+        if (created) {
+            listPtr = Tcl_NewListObj(0, (Tcl_Obj**)NULL);
+            Tcl_IncrRefCount(listPtr);
+            Tcl_SetHashValue(entryPtr, (ClientData)listPtr);
+        }
+
+        listPtr = (Tcl_Obj*)Tcl_GetHashValue(entryPtr);
+        Tcl_ListObjAppendElement((Tcl_Interp*)NULL, listPtr, Tcl_NewIntObj(i));
+    }
+
+    /*
+     * Build a list K that holds the descriptions of the common
+     * subsequences.  At first, there is one common subsequence of
+     * length 0 with a fence that includes line -1 of both files.
+     */
+    Kmax = 10;
+    K = (DiffviewSubseq*)ckalloc(Kmax*sizeof(DiffviewSubseq));
+    K[0].index1 = -1;
+    K[0].index2 = -1;
+    K[0].next = -1;
+    K[1].index1 = limsPtr1->numLines;
+    K[1].index2 = limsPtr2->numLines;
+    K[1].next = -1;
+    Klen = 2;
+    longestMatch = 0;
+
+    /*
+     * Step through the first buffer line by line.
+     */
+    for (i=0; i < limsPtr1->numLines; i++) {
+        len = limsPtr1->lenPtr[i];
+        Tcl_DStringSetLength(&buffer, len);
+        key = Tcl_DStringValue(&buffer);
+        memcpy((VOID*)key, (VOID*)limsPtr1->startPtr[i], len);
+
+        /* look at each possible line j in second buffer */
+        entryPtr = Tcl_FindHashEntry(&eqv, key);
+        if (entryPtr) {
+            subseqLen = 0;
+            candidateIdx = 0;
+
+            listPtr = (Tcl_Obj*)Tcl_GetHashValue(entryPtr);
+            Tcl_ListObjGetElements((Tcl_Interp*)NULL, listPtr, &objc, &objv);
+            for (o=0; o < objc; o++) {
+                Tcl_GetIntFromObj((Tcl_Interp*)NULL, objv[o], &j);
+
+                /*
+                 * Binary search to find a candidate common subsequence.
+                 * This match may get appended to that.
+                 */
+                max  = longestMatch;
+                min  = subseqLen;
+                mid  = subseqLen;
+                sLen = longestMatch + 1;
+                while (max >= min) {
+                    mid = (max+min)/2;
+                    midval = K[mid].index2;
+                    if (j == midval) {
+                        break;
+                    } else if (j < midval) {
+                        max = mid-1;
+                    } else {
+                        sLen = mid;
+                        min = mid+1;
+                    }
+                }
+
+                /* no good candidate? then go to the next match point */
+                if (j == K[mid].index2 || sLen > longestMatch) {
+                    continue;
+                }
+
+                /*
+                 * sLen = sequence length of the longest sequence that
+                 *        this match point can be appended to
+                 *
+                 * Make a new candidate match and store the old on in K.
+                 * Set subseqLen to the length of the new candidate match.
+                 */
+                if (subseqLen >= 0) {
+                    if (candidateIdx >= 0) {
+                        K[subseqLen].index1 = K[candidateIdx].index1;
+                        K[subseqLen].index2 = K[candidateIdx].index2;
+                        K[subseqLen].next   = K[candidateIdx].next;
+                    } else {
+                        K[subseqLen].index1 = newCandidate.index1;
+                        K[subseqLen].index2 = newCandidate.index2;
+                        K[subseqLen].next   = newCandidate.next;
+                    }
+                }
+                newCandidate.index1 = i;
+                newCandidate.index2 = j;
+                newCandidate.next = sLen;
+                candidateIdx = -1;  /* use newCandidate info */
+                subseqLen = sLen + 1;
+
+                /*
+                 * If we've extended the length of the longest match,
+                 * we don't need to keep checking candidate lines.
+                 * We're done.  Move the fence.
+                 */
+                if (sLen >= longestMatch) {
+                    if (Klen >= Kmax) {
+                        Kmax *= 2;
+                        newK = (DiffviewSubseq*)ckalloc(Kmax*sizeof(DiffviewSubseq));
+                        memcpy((VOID*)newK, (VOID*)K, Klen*sizeof(DiffviewSubseq));
+                        ckfree((char*)K);
+                        K = newK;
+                    }
+                    K[Klen].index1 = K[Klen-1].index1;
+                    K[Klen].index2 = K[Klen-1].index2;
+                    K[Klen].next   = K[Klen-1].next;
+                    Klen++;
+
+                    longestMatch++;
+                    break;
+                }
+            }
+
+            /* put the last candidate into the array */
+            if (candidateIdx >= 0) {
+                K[subseqLen].index1 = K[candidateIdx].index1;
+                K[subseqLen].index2 = K[candidateIdx].index2;
+                K[subseqLen].next   = K[candidateIdx].next;
+            } else {
+                K[subseqLen].index1 = newCandidate.index1;
+                K[subseqLen].index2 = newCandidate.index2;
+                K[subseqLen].next   = newCandidate.next;
+            }
+        }
+    }
+
+    /*
+     * Translate the resulting info into a list of common subseq indices.
+     */
+    lcsIndex1 = (int*)ckalloc(longestMatch*sizeof(int));
+    memset((void*)lcsIndex1, 0, (longestMatch*sizeof(int)));
+    lcsIndex2 = (int*)ckalloc(longestMatch*sizeof(int));
+    memset((void*)lcsIndex2, 0, (longestMatch*sizeof(int)));
+    len = longestMatch;
+
+    candidateIdx = longestMatch;
+    while (K[candidateIdx].index1 >= 0) {
+        if (longestMatch-- < 0) {
+            Tcl_Panic("internal mismatch in diff algorithm");
+        }
+        lcsIndex1[longestMatch] = K[candidateIdx].index1;
+        lcsIndex2[longestMatch] = K[candidateIdx].index2;
+        candidateIdx = K[candidateIdx].next;
+    }
+
+    /*
+     * Now, march through all lines in both buffers and convert the
+     * lcs indices into a sequence of diff-style operations.
+     */
+    diffPtr = (DiffviewDiffs*)ckalloc(sizeof(DiffviewDiffs));
+    diffPtr->maxDiffs = 0;
+    diffPtr->numDiffs = 0;
+    diffPtr->ops = NULL;
+
+    i = j = 0;
+    for (o=0; o < len; o++) {
+        index1 = lcsIndex1[o];
+        index2 = lcsIndex2[o];
+
+        if (index1-i == index2-j && index1-i > 0) {
+            del = index1-i;
+            DiffviewDiffsAppend(diffPtr, 'c', i, i+del-1, j, j+del-1);
+            i += del; j += del;
+        } else {
+            del = index1-i;
+            if (del > 0) {
+                DiffviewDiffsAppend(diffPtr, 'd', i, i+del-1, j, j);
+                i += del;
+            }
+
+            del = index2-j;
+            if (del > 0) {
+                DiffviewDiffsAppend(diffPtr, 'a', i, i, j, j+del-1);
+                j += del;
+            }
+        }
+        i++; j++;
+    }
+
+    /* lines left over? mark as many "changed" as possible */
+    if (limsPtr1->numLines-i > 0 && limsPtr2->numLines-j > 0) {
+        del = (limsPtr1->numLines-i < limsPtr2->numLines-j)
+                ? limsPtr1->numLines-i : limsPtr2->numLines-j;
+        DiffviewDiffsAppend(diffPtr, 'c', i, i+del-1, j, j+del-1);
+        i += del;
+        j += del;
+    }
+
+    /* still have lines left over? then mark them added or deleted */
+    if (i < limsPtr1->numLines) {
+        del = limsPtr1->numLines - i;
+        DiffviewDiffsAppend(diffPtr, 'd', i, i+del-1, j, j);
+        i += del;
+    }
+    if (j < limsPtr2->numLines) {
+        del = limsPtr2->numLines - j;
+        DiffviewDiffsAppend(diffPtr, 'a', i, i, j, j+del-1);
+        j += del;
+    }
+
+    /*
+     * Clean up all memory used during the diff.
+     */
+    ckfree((char*)K);
+    ckfree((char*)lcsIndex1);
+    ckfree((char*)lcsIndex2);
+
+    entryPtr = Tcl_FirstHashEntry(&eqv, &iter);
+    while (entryPtr) {
+        listPtr = (Tcl_Obj*)Tcl_GetHashValue(entryPtr);
+        Tcl_DecrRefCount(listPtr);
+        entryPtr = Tcl_NextHashEntry(&iter);
+    }
+    Tcl_DeleteHashTable(&eqv);
+
+    return diffPtr;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewDiffsAppend()
+ *
+ * Appends a "diff" operation onto a list of diffs.  The list is extended
+ * automatically, if need be, to store the new element.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewDiffsAppend(diffsPtr, op, fromIndex1, toIndex1, fromIndex2, toIndex2)
+    DiffviewDiffs *diffsPtr;  /* diffs being updated */
+    int op;                   /* diff operation: a/d/c */
+    int fromIndex1;           /* starts at this line in buffer 1 */
+    int toIndex1;             /* ends at this line in buffer 1 */
+    int fromIndex2;           /* starts at this line in buffer 2 */
+    int toIndex2;             /* ends at this line in buffer 2 */
+{
+    DiffviewDiffOp *newOpArray;
+    int last;
+
+    if (diffsPtr->numDiffs >= diffsPtr->maxDiffs) {
+        if (diffsPtr->maxDiffs == 0) {
+            diffsPtr->maxDiffs = 10;
+        } else {
+            diffsPtr->maxDiffs *= 2;
+        }
+        newOpArray = (DiffviewDiffOp*)ckalloc(
+            diffsPtr->maxDiffs*sizeof(DiffviewDiffOp));
+
+        if (diffsPtr->ops) {
+            memcpy((VOID*)newOpArray, (VOID*)diffsPtr->ops,
+                diffsPtr->numDiffs*sizeof(DiffviewDiffOp));
+            ckfree((char*)diffsPtr->ops);
+        }
+        diffsPtr->ops = newOpArray;
+    }
+
+    last = diffsPtr->numDiffs;
+    diffsPtr->ops[last].op         = op;
+    diffsPtr->ops[last].fromIndex1 = fromIndex1;
+    diffsPtr->ops[last].toIndex1   = toIndex1;
+    diffsPtr->ops[last].fromIndex2 = fromIndex2;
+    diffsPtr->ops[last].toIndex2   = toIndex2;
+    diffsPtr->numDiffs++;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewDiffsFree()
+ *
+ * Frees up the storage previously created by calling
+ * DiffviewDiffsAppend().
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewDiffsFree(diffsPtr)
+    DiffviewDiffs *diffsPtr;  /* diffs being freed */
+{
+    if (diffsPtr->ops) {
+        ckfree((char*)diffsPtr->ops);
+    }
+    ckfree((char*)diffsPtr);
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewLayoutAdd()
+ *
+ * Clears out the layout storage in preparation for building another
+ * layout.  If the previous number of lines was much less than the
+ * maximum allocated, then this routine reallocates a smaller storage
+ * space.  This provides a way to give back a large chunk of memory
+ * if the contents of the widget is nulled out, for example.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewLayoutAdd(layoutPtr, linePtr)
+    DiffviewLayout *layoutPtr;    /* line layout being updated */
+    DiffviewLayoutLine *linePtr;  /* line being added to layout */
+{
+    DiffviewLayoutLine *newLineArray;
+
+    /* expand the array as needed */
+    if (layoutPtr->numLines >= layoutPtr->maxLines) {
+        if (layoutPtr->maxLines == 0) {
+            layoutPtr->maxLines = 100;
+        } else {
+            layoutPtr->maxLines *= 2;
+        }
+        newLineArray = (DiffviewLayoutLine*)ckalloc(
+            (unsigned)(layoutPtr->maxLines*sizeof(DiffviewLayoutLine)));
+
+        if (layoutPtr->lines) {
+            memcpy((VOID*)newLineArray, (VOID*)layoutPtr->lines,
+                layoutPtr->numLines*sizeof(DiffviewLayoutLine));
+            ckfree((char*)layoutPtr->lines);
+        }
+        layoutPtr->lines = newLineArray;
+    }
+
+    /* copy the latest line in and bump the count */
+    memcpy((VOID*)&layoutPtr->lines[layoutPtr->numLines],
+        (VOID*)linePtr, sizeof(DiffviewLayoutLine));
+
+    layoutPtr->numLines++;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewLayoutClear()
+ *
+ * Clears out the layout storage in preparation for building another
+ * layout.  If the previous number of lines was much less than the
+ * maximum allocated, then this routine reallocates a smaller storage
+ * space.  This provides a way to give back a large chunk of memory
+ * if the contents of the widget is nulled out, for example.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewLayoutClear(layoutPtr)
+    DiffviewLayout *layoutPtr;  /* line layout being freed */
+{
+    if (layoutPtr->numLines > 0
+          && layoutPtr->numLines < layoutPtr->maxLines/3
+          && layoutPtr->maxLines > 100) {
+        ckfree((char*)layoutPtr->lines);
+        layoutPtr->lines = (DiffviewLayoutLine*)ckalloc(
+            (unsigned)(layoutPtr->numLines * sizeof(DiffviewLayoutLine)));
+        layoutPtr->maxLines = layoutPtr->numLines;
+    }
+    layoutPtr->numLines = 0;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * DiffviewLayoutFree()
+ *
+ * Frees the storage associated with the layout of all lines within
+ * the widget.
+ * ----------------------------------------------------------------------
+ */
+static void
+DiffviewLayoutFree(layoutPtr)
+    DiffviewLayout *layoutPtr;  /* line layout being freed */
+{
+    if (layoutPtr->lines) {
+        ckfree((char*)layoutPtr->lines);
+        layoutPtr->lines = NULL;
+    }
+}
Index: /tags/1.6.0/gui/src/RpDxToVtk.c
===================================================================
--- /tags/1.6.0/gui/src/RpDxToVtk.c	(revision 6168)
+++ /tags/1.6.0/gui/src/RpDxToVtk.c	(revision 6168)
@@ -0,0 +1,819 @@
+ /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/* 
+ * ----------------------------------------------------------------------
+ *  RpDxToVtk - 
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <math.h>
+#include <limits.h>
+#include <float.h>
+#include "tcl.h"
+
+#define DO_WEDGES
+//#define CHECK_WINDINGS
+
+static INLINE char *
+SkipSpaces(char *string) 
+{
+    while (isspace(*string)) {
+        string++;
+    }
+    return string;
+}
+
+static INLINE char *
+GetLine(char **stringPtr, const char *endPtr) 
+{
+    char *line, *p;
+
+    line = SkipSpaces(*stringPtr);
+    for (p = line; p < endPtr; p++) {
+        if (*p == '\n') {
+            *stringPtr = p + 1;
+            return line;
+        }
+    }
+    *stringPtr = p;
+    return line;
+}
+
+static int
+GetUniformFieldValues(Tcl_Interp *interp, int nPoints, int *counts, char **stringPtr, 
+                      const char *endPtr, Tcl_Obj *objPtr) 
+{
+    int i;
+    const char *p;
+    char mesg[2000];
+    double *array;
+    int iX, iY, iZ;
+
+    p = *stringPtr;
+    array = malloc(sizeof(double) * nPoints);
+    if (array == NULL) {
+        return TCL_ERROR;
+    }
+    iX = iY = iZ = 0;
+    for (i = 0; i < nPoints; i++) {
+        double value;
+        char *nextPtr;
+        int loc;
+
+        if (p >= endPtr) {
+            Tcl_AppendResult(interp, "unexpected EOF in reading field values",
+                             (char *)NULL);
+            free(array);
+            return TCL_ERROR;
+        }
+        value = strtod(p, &nextPtr);
+        if (nextPtr == p) {
+            Tcl_AppendResult(interp, "bad value found in reading field values",
+                             (char *)NULL);
+            free(array);
+            return TCL_ERROR;
+        }
+        p = nextPtr;
+        loc = iZ*counts[0]*counts[1] + iY*counts[0] + iX;
+        if (++iZ >= counts[2]) {
+            iZ = 0;
+            if (++iY >= counts[1]) {
+                iY = 0;
+                ++iX;
+            }
+        }
+        array[loc] = value;
+    }
+    for (i = 0; i < nPoints; i++) {
+        sprintf(mesg, "%g\n", array[i]);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+    }
+    free(array);
+    *stringPtr = (char *)p;
+    return TCL_OK;
+}
+
+static int
+GetStructuredGridFieldValues(Tcl_Interp *interp, int nPoints, char **stringPtr, 
+                             const char *endPtr, Tcl_Obj *objPtr) 
+{
+    int i;
+    const char *p;
+    char mesg[2000];
+    double *array;
+
+    p = *stringPtr;
+    array = malloc(sizeof(double) * nPoints);
+    if (array == NULL) {
+        return TCL_ERROR;
+    }
+    for (i = 0; i < nPoints; i++) {
+        double value;
+        char *nextPtr;
+
+        if (p >= endPtr) {
+            Tcl_AppendResult(interp, "unexpected EOF in reading field values",
+                             (char *)NULL);
+            free(array);
+            return TCL_ERROR;
+        }
+        value = strtod(p, &nextPtr);
+        if (nextPtr == p) {
+            Tcl_AppendResult(interp, "bad value found in reading field values",
+                             (char *)NULL);
+            free(array);
+            return TCL_ERROR;
+        }
+        p = nextPtr;
+        array[i] = value;
+    }
+    for (i = 0; i < nPoints; i++) {
+        sprintf(mesg, "%g\n", array[i]);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+    }
+    free(array);
+    *stringPtr = (char *)p;
+    return TCL_OK;
+}
+
+static int
+GetCloudFieldValues(Tcl_Interp *interp, int nXYPoints, int nZPoints, char **stringPtr, 
+                    const char *endPtr, Tcl_Obj *objPtr) 
+{
+    int i;
+    const char *p;
+    char mesg[2000];
+    double *array;
+    int iXY, iZ;
+    int nPoints;
+
+    nPoints = nXYPoints * nZPoints;
+
+    p = *stringPtr;
+    array = malloc(sizeof(double) * nPoints);
+    if (array == NULL) {
+        return TCL_ERROR;
+    }
+    iXY = iZ = 0;
+    for (i = 0; i < nPoints; i++) {
+        double value;
+        char *nextPtr;
+        int loc;
+
+        if (p >= endPtr) {
+            Tcl_AppendResult(interp, "unexpected EOF in reading field values",
+                             (char *)NULL);
+            free(array);
+            return TCL_ERROR;
+        }
+        value = strtod(p, &nextPtr);
+        if (nextPtr == p) {
+            Tcl_AppendResult(interp, "bad value found in reading field values",
+                             (char *)NULL);
+            free(array);
+            return TCL_ERROR;
+        }
+        p = nextPtr;
+        loc = nXYPoints * iZ + iXY;
+        if (++iZ >= nZPoints) {
+            iZ = 0;
+            ++iXY;
+        }
+        array[loc] = value;
+    }
+    for (i = 0; i < nPoints; i++) {
+        sprintf(mesg, "%g\n", array[i]);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+    }
+    free(array);
+    *stringPtr = (char *)p;
+    return TCL_OK;
+}
+
+static int
+GetPoints(Tcl_Interp *interp, double *array, int nXYPoints,
+          char **stringPtr, const char *endPtr) 
+{
+    int i;
+    const char *p;
+
+    p = *stringPtr;
+    if (array == NULL) {
+        return TCL_ERROR;
+    }
+    for (i = 0; i < nXYPoints; i++) {
+        double x, y;
+        char *nextPtr;
+
+        if (p >= endPtr) {
+            Tcl_AppendResult(interp, "unexpected EOF in reading points",
+                             (char *)NULL);
+            return TCL_ERROR;
+        }
+        x = strtod(p, &nextPtr);
+        if (nextPtr == p) {
+            Tcl_AppendResult(interp, "bad value found in reading points",
+                             (char *)NULL);
+            return TCL_ERROR;
+        }
+        p = nextPtr;
+        y = strtod(p, &nextPtr);
+        if (nextPtr == p) {
+            Tcl_AppendResult(interp, "bad value found in reading points",
+                             (char *)NULL);
+            return TCL_ERROR;
+        }
+        p = nextPtr;
+        /* z is unused */
+        strtod(p, &nextPtr);
+        if (nextPtr == p) {
+            Tcl_AppendResult(interp, "bad value found in reading points",
+                             (char *)NULL);
+            return TCL_ERROR;
+        }
+        p = nextPtr;
+
+        array[i*2  ] = x;
+        array[i*2+1] = y;
+    }
+
+    *stringPtr = (char *)p;
+    return TCL_OK;
+}
+
+static int
+GetUniformFieldVectors(Tcl_Interp *interp, int nPoints, int *counts,
+                       char **stringPtr, const char *endPtr, Tcl_Obj *objPtr) 
+{
+    int i;
+    const char *p;
+    char mesg[2000];
+    double *array;
+    int iX, iY, iZ;
+
+    p = *stringPtr;
+    array = malloc(sizeof(double) * nPoints * 3);
+    if (array == NULL) {
+        return TCL_ERROR;
+    }
+    iX = iY = iZ = 0;
+    for (i = 0; i < nPoints; i++) {
+        double x, y, z;
+        char *nextPtr;
+        int loc;
+
+        if (p >= endPtr) {
+            Tcl_AppendResult(interp, "unexpected EOF in reading vectors",
+                             (char *)NULL);
+            free(array);
+            return TCL_ERROR;
+        }
+        x = strtod(p, &nextPtr);
+        if (nextPtr == p) {
+            Tcl_AppendResult(interp, "bad value found in reading vectors",
+                             (char *)NULL);
+            free(array);
+            return TCL_ERROR;
+        }
+        p = nextPtr;
+        y = strtod(p, &nextPtr);
+        if (nextPtr == p) {
+            Tcl_AppendResult(interp, "bad value found in reading vectors",
+                             (char *)NULL);
+            free(array);
+            return TCL_ERROR;
+        }
+        p = nextPtr;
+        z = strtod(p, &nextPtr);
+        if (nextPtr == p) {
+            Tcl_AppendResult(interp, "bad value found in reading vectors",
+                             (char *)NULL);
+            free(array);
+            return TCL_ERROR;
+        }
+        p = nextPtr;
+        loc = iZ*counts[0]*counts[1] + iY*counts[0] + iX;
+        if (++iZ >= counts[2]) {
+            iZ = 0;
+            if (++iY >= counts[1]) {
+                iY = 0;
+                ++iX;
+            }
+        }
+        array[loc*3  ] = x;
+        array[loc*3+1] = y;
+        array[loc*3+2] = z;
+    }
+    for (i = 0; i < nPoints; i++) {
+        sprintf(mesg, "%g %g %g\n", array[i*3], array[i*3+1], array[i*3+2]);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+    }
+    free(array);
+    *stringPtr = (char *)p;
+    return TCL_OK;
+}
+
+#if defined(DO_WEDGES) && defined(CHECK_WINDINGS)
+static void
+Normalize(double v[3])
+{
+    double len = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
+    v[0] /= len;
+    v[1] /= len;
+    v[2] /= len;
+}
+
+static double
+Dot(double v1[3], double v2[3])
+{
+    return (v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]);
+}
+
+static void
+Cross(double v1[3], double v2[3], double vout[3])
+{
+    vout[0] = v1[1]*v2[2] - v1[2]*v2[1];
+    vout[1] = v1[2]*v2[0] - v1[0]*v2[2];
+    vout[2] = v1[0]*v2[1] - v1[1]*v2[0];
+}
+#endif
+/* 
+ *  DxToVtk string
+ *
+ * In DX format:
+ *  rank 0 means scalars,
+ *  rank 1 means vectors,
+ *  rank 2 means matrices,
+ *  rank 3 means tensors
+ * 
+ *  For rank 1, shape is a single number equal to the number of dimensions.
+ *  e.g. rank 1 shape 3 means a 3-component vector field
+ *
+ */
+
+static int
+DxToVtkCmd(ClientData clientData, Tcl_Interp *interp, int objc, 
+           Tcl_Obj *const *objv) 
+{
+    double *points;
+    Tcl_Obj *objPtr, *pointsObjPtr, *fieldObjPtr, *cellsObjPtr;
+    char *p, *pend;
+    char *string;
+    char mesg[2000];
+    double dv0[3], dv1[3], dv2[3];
+    double dx, dy, dz;
+    double origin[3];
+    int count[3];
+    int length, nAxes, nPoints, nXYPoints, nCells;
+    char *name;
+    int isUniform;
+    int isStructuredGrid;
+    int hasVectors;
+    int i, ix, iy, iz;
+
+    name = "component";
+    points = NULL;
+    nAxes = nPoints = nXYPoints = nCells = 0;
+    dx = dy = dz = 0.0;
+    origin[0] = origin[1] = origin[2] = 0.0; /* May not have an origin line. */
+    dv0[0] = dv0[1] = dv0[2] = 0.0;
+    dv1[0] = dv1[1] = dv1[2] = 0.0;
+    dv2[0] = dv2[1] = dv2[2] = 0.0;
+    count[0] = count[1] = count[2] = 0;
+    isUniform = 0;
+    isStructuredGrid = 0;
+    hasVectors = 0;
+
+    if (objc != 2) {
+        Tcl_AppendResult(interp, "wrong # arguments: should be \"",
+                         Tcl_GetString(objv[0]), " string\"", (char *)NULL);
+        return TCL_ERROR;
+    }
+    string = Tcl_GetStringFromObj(objv[1], &length);
+    if (strncmp("<ODX>", string, 5) == 0) {
+        string += 5;
+        length -= 5;
+    } else if (strncmp("<DX>", string, 4) == 0) {
+        string += 4;
+        length -= 4;
+    }
+    pointsObjPtr = Tcl_NewStringObj("", -1);
+    cellsObjPtr = Tcl_NewStringObj("", -1);
+    fieldObjPtr = Tcl_NewStringObj("", -1);
+    for (p = string, pend = p + length; p < pend; /*empty*/) {
+        char *line;
+        double ddx, ddy, ddz;
+
+        line = GetLine(&p, pend);
+        if (line >= pend) {
+            break;                        /* EOF */
+        }
+        if ((line[0] == '#') || (line[0] == '\n')) {
+            continue;                        /* Skip blank or comment lines. */
+        }
+        if (sscanf(line, "object %*d class gridpositions counts %d %d %d", 
+                   count, count + 1, count + 2) == 3) {
+            isUniform = 1;
+            if ((count[0] < 0) || (count[1] < 0) || (count[2] < 0)) {
+                sprintf(mesg, "Invalid grid size: x=%d, y=%d, z=%d", 
+                        count[0], count[1], count[2]);
+                Tcl_AppendResult(interp, mesg, (char *)NULL);
+                return TCL_ERROR;
+            }
+#ifdef notdef
+            fprintf(stderr, "found gridpositions counts %d %d %d\n",
+                    count[0], count[1], count[2]);
+#endif
+        } else if (sscanf(line, "origin %lg %lg %lg", origin, origin + 1, 
+                origin + 2) == 3) {
+            /* Found origin. */
+#ifdef notdef
+            fprintf(stderr, "found origin %g %g %g\n",
+                    origin[0], origin[1], origin[2]);
+#endif
+        } else if (sscanf(line, "delta %lg %lg %lg", &ddx, &ddy, &ddz) == 3) {
+            if (nAxes == 3) {
+                Tcl_AppendResult(interp, "too many delta statements", 
+                                 (char *)NULL);
+                return TCL_ERROR;
+            }
+            switch (nAxes) {
+            case 0:
+                dv0[0] = ddx;
+                dv0[1] = ddy;
+                dv0[2] = ddz;
+                break;
+            case 1:
+                dv1[0] = ddx;
+                dv1[1] = ddy;
+                dv1[2] = ddz;
+                break;
+            case 2:
+                dv2[0] = ddx;
+                dv2[1] = ddy;
+                dv2[2] = ddz;
+                break;
+            default:
+                break;
+            }
+
+            if (ddx != 0.0) {
+                if (ddy != 0.0 || ddz != 0.0) {
+                    /* Not axis aligned or skewed grid */
+                    isUniform = 0;
+                    isStructuredGrid = 1;
+                }
+                dx = ddx;
+            } else if (ddy != 0.0) {
+                if (ddx != 0.0 || ddz != 0.0) {
+                    /* Not axis aligned or skewed grid */
+                    isUniform = 0;
+                    isStructuredGrid = 1;
+                }
+                dy = ddy;
+            } else if (ddz != 0.0) {
+                if (ddx != 0.0 || ddy != 0.0) {
+                    /* Not axis aligned or skewed grid */
+                    isUniform = 0;
+                    isStructuredGrid = 1;
+                }
+                dz = ddz;
+            }
+            nAxes++;
+#ifdef notdef
+            fprintf(stderr, "found delta %g %g %g\n", ddx, ddy, ddx);
+#endif
+        } else if (sscanf(line, "object %*d class regulararray count %d", 
+                          &count[2]) == 1) {
+            // Z grid
+            isUniform = 0;
+        } else if (sscanf(line, "object %*d class array type %*s shape 3 rank 1"
+                          " items %d data follows", &nPoints) == 1) {
+            // XXX: Deprecated, invalid ordering of keywords
+            Tcl_AppendResult(interp, "Invalid DX: 'rank' keyword should precede 'shape'.", 
+                             (char *)NULL);
+            return TCL_ERROR;
+        } else if (sscanf(line, "object %*d class array type %*s rank 1 shape 3"
+                          " items %d data follows", &nPoints) == 1) {
+#ifdef notdef
+                fprintf(stderr, "found class array type shape 3 nPoints=%d\n",
+                        nPoints);
+#endif
+            if (isUniform) {
+                hasVectors = 1;
+                if (GetUniformFieldVectors(interp, nPoints, count, &p, pend, fieldObjPtr)
+                    != TCL_OK) {
+                    return TCL_ERROR;
+                }
+            } else {
+                // This is a 2D point cloud in xy with a uniform zgrid
+                isUniform = 0;
+                nXYPoints = nPoints;
+                if (nXYPoints < 0) {
+                    sprintf(mesg, "bad # points %d", nXYPoints);
+                    Tcl_AppendResult(interp, mesg, (char *)NULL);
+                    return TCL_ERROR;
+                }
+                points = malloc(sizeof(double) * nXYPoints * 2);
+                if (GetPoints(interp, points, nXYPoints, &p, pend) != TCL_OK) {
+                    return TCL_ERROR;
+                }
+            }
+        } else if (sscanf(line, "object %*d class array type %*s rank 0"
+                          " items %d data follows", &nPoints) == 1) {
+#ifdef notdef
+            fprintf(stderr, "found class array type rank 0 nPoints=%d\n", 
+                nPoints);
+#endif
+            if ((isUniform || isStructuredGrid) &&
+                nPoints != count[0]*count[1]*count[2]) {
+                sprintf(mesg, "inconsistent data: expected %d points"
+                        " but found %d points", count[0]*count[1]*count[2], 
+                        nPoints);
+                Tcl_AppendResult(interp, mesg, (char *)NULL);
+                return TCL_ERROR;
+            } else if (!(isUniform || isStructuredGrid) &&
+                       nPoints != nXYPoints * count[2]) {
+                sprintf(mesg, "inconsistent data: expected %d points"
+                        " but found %d points", nXYPoints * count[2], 
+                        nPoints);
+                Tcl_AppendResult(interp, mesg, (char *)NULL);
+                return TCL_ERROR;
+            }
+            if (isUniform) {
+                if (GetUniformFieldValues(interp, nPoints, count, &p, pend, fieldObjPtr) 
+                    != TCL_OK) {
+                    return TCL_ERROR;
+                }
+            } else if (isStructuredGrid) {
+                if (GetStructuredGridFieldValues(interp, nPoints, &p, pend, fieldObjPtr) 
+                    != TCL_OK) {
+                    return TCL_ERROR;
+                }
+            } else {
+                if (GetCloudFieldValues(interp, nXYPoints, count[2], &p, pend, fieldObjPtr) 
+                    != TCL_OK) {
+                    return TCL_ERROR;
+                }
+            }
+        } else if (sscanf(line, "object %*d class array type %*s rank 0"
+                          " times %d data follows", &nPoints) == 1) {
+            /* Handle incorrect keyword: Do any tools make this mistake? */
+            Tcl_AppendResult(interp, "Invalid DX: found 'times' where 'items' keyword was expected.", 
+                             (char *)NULL);
+            return TCL_ERROR; 
+#ifdef notdef
+        } else {
+            fprintf(stderr, "unknown line (%.80s)\n", line);
+#endif
+        }
+    }
+
+    if (isUniform) {
+        if (nPoints > 1 && nAxes == 0) {
+            Tcl_AppendResult(interp, "Invalid DX file: uniform grid with no deltas found",
+                             (char *)NULL);
+            return TCL_ERROR;
+        }
+        if (nPoints > 1 && ((dx == dy) && (dx == dz) && (dx == 0.0))) {
+            sprintf(mesg, "Invalid deltas in DX file: %g %g %g", dx, dy, dz);
+            Tcl_AppendResult(interp, mesg, (char *)NULL);
+            return TCL_ERROR;
+        }
+        if (dx < 0.0 || dy < 0.0 || dz < 0.0) {
+            sprintf(mesg, "Negative deltas not supported in DX file: %g %g %g",
+                    dx, dy, dz);
+            Tcl_AppendResult(interp, mesg, (char *)NULL);
+            return TCL_ERROR;
+        }
+        objPtr = Tcl_NewStringObj("# vtk DataFile Version 2.0\n", -1);
+        Tcl_AppendToObj(objPtr, "Converted from DX file\n", -1);
+        Tcl_AppendToObj(objPtr, "ASCII\n", -1);
+        Tcl_AppendToObj(objPtr, "DATASET STRUCTURED_POINTS\n", -1);
+        sprintf(mesg, "DIMENSIONS %d %d %d\n", count[0], count[1], count[2]);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        sprintf(mesg, "ORIGIN %g %g %g\n", origin[0], origin[1], origin[2]);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        sprintf(mesg, "SPACING %g %g %g\n", dx, dy, dz);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        sprintf(mesg, "POINT_DATA %d\n", nPoints);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        if (hasVectors) {
+            sprintf(mesg, "VECTORS %s double\n", name);
+            Tcl_AppendToObj(objPtr, mesg, -1);
+        } else {
+            sprintf(mesg, "SCALARS %s double 1\n", name);
+            Tcl_AppendToObj(objPtr, mesg, -1);
+            sprintf(mesg, "LOOKUP_TABLE default\n");
+            Tcl_AppendToObj(objPtr, mesg, -1);
+        }
+        Tcl_AppendObjToObj(objPtr, fieldObjPtr);
+    } else if (isStructuredGrid) {
+#ifdef notdef
+        fprintf(stderr, "dv0 %g %g %g\n", dv0[0], dv0[1], dv0[2]);
+        fprintf(stderr, "dv1 %g %g %g\n", dv1[0], dv1[1], dv1[2]);
+        fprintf(stderr, "dv2 %g %g %g\n", dv2[0], dv2[1], dv2[2]);
+#endif
+        objPtr = Tcl_NewStringObj("# vtk DataFile Version 2.0\n", -1);
+        Tcl_AppendToObj(objPtr, "Converted from DX file\n", -1);
+        Tcl_AppendToObj(objPtr, "ASCII\n", -1);
+        Tcl_AppendToObj(objPtr, "DATASET STRUCTURED_GRID\n", -1);
+        sprintf(mesg, "DIMENSIONS %d %d %d\n", count[0], count[1], count[2]);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        for (iz = 0; iz < count[2]; iz++) {
+            for (iy = 0; iy < count[1]; iy++) {
+                for (ix = 0; ix < count[0]; ix++) {
+                    double x, y, z;
+                    x = origin[0] + dv2[0] * iz + dv1[0] * iy + dv0[0] * ix;
+                    y = origin[1] + dv2[1] * iz + dv1[1] * iy + dv0[1] * ix;
+                    z = origin[2] + dv2[2] * iz + dv1[2] * iy + dv0[2] * ix;
+                    sprintf(mesg, "%g %g %g\n", x, y, z);
+                    Tcl_AppendToObj(pointsObjPtr, mesg, -1);
+                }
+            }
+        }
+        sprintf(mesg, "POINTS %d double\n", nPoints);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        Tcl_AppendObjToObj(objPtr, pointsObjPtr);
+        sprintf(mesg, "POINT_DATA %d\n", nPoints);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        sprintf(mesg, "SCALARS %s double 1\n", name);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        sprintf(mesg, "LOOKUP_TABLE default\n");
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        Tcl_AppendObjToObj(objPtr, fieldObjPtr);
+    } else {
+        /* Fill points.  Have to wait to do this since origin, delta can come after
+         * the point list in the file.
+         */
+        for (iz = 0; iz < count[2]; iz++) {
+            for (i = 0; i < nXYPoints; i++) {
+                sprintf(mesg, "%g %g %g\n", points[i*2], points[i*2+1], (origin[2] + dz * iz));
+                Tcl_AppendToObj(pointsObjPtr, mesg, -1);
+            }
+        }
+
+        objPtr = Tcl_NewStringObj("# vtk DataFile Version 2.0\n", -1);
+        Tcl_AppendToObj(objPtr, "Converted from DX file\n", -1);
+        Tcl_AppendToObj(objPtr, "ASCII\n", -1);
+        Tcl_AppendToObj(objPtr, "DATASET UNSTRUCTURED_GRID\n", -1);
+        sprintf(mesg, "POINTS %d double\n", nPoints);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        Tcl_AppendObjToObj(objPtr, pointsObjPtr);
+#ifdef DO_WEDGES
+        {
+            double xmin, xmax, ymin, ymax;
+            xmin = xmax = points[0];
+            ymin = ymax = points[1];
+            for (i = 1; i < nXYPoints; i++) {
+                double x, y;
+                x = points[i*2];
+                y = points[i*2+1];
+                if (x < xmin) xmin = x;
+                if (x > xmax) xmax = x;
+                if (y < ymin) ymin = y;
+                if (y > ymax) ymax = y;
+            }
+
+            char fpts[128];
+            sprintf(fpts, "/tmp/tmppts%d", getpid());
+            char fcells[128];
+            sprintf(fcells, "/tmp/tmpcells%d", getpid());
+
+            FILE *ftmp = fopen(fpts, "w");
+            // save corners of bounding box first, to work around meshing
+            // problems in voronoi utility
+            int numBoundaryPoints = 4;
+
+            // Bump out the bounds by an epsilon to avoid problem when
+            // corner points are already nodes
+            double XEPS = (xmax - xmin) / 10.0f;
+            double YEPS = (ymax - ymin) / 10.0f;
+
+            fprintf(ftmp, "%g %g\n", xmin - XEPS, ymin - YEPS);
+            fprintf(ftmp, "%g %g\n", xmax + XEPS, ymin - YEPS);
+            fprintf(ftmp, "%g %g\n", xmax + XEPS, ymax + YEPS);
+            fprintf(ftmp, "%g %g\n", xmin - XEPS, ymax + YEPS);
+
+            for (i = 0; i < nXYPoints; i++) {
+                fprintf(ftmp, "%g %g\n", points[i*2], points[i*2+1]);
+            }
+            fclose(ftmp);
+#ifdef CHECK_WINDINGS
+            double normal[3];
+            normal[0] = normal[1] = 0.0;
+            if (dx >= 0) {
+                normal[2] = 1.0;
+            } else {
+                normal[2] = -1.0;
+            }
+#endif
+            char cmdstr[512];
+            sprintf(cmdstr, "voronoi -t < %s > %s", fpts, fcells);
+            if (system(cmdstr) == 0) {
+                int c0, c1, c2;
+                ftmp = fopen(fcells, "r");
+                while (!feof(ftmp)) {
+                    if (fscanf(ftmp, "%d %d %d", &c0, &c1, &c2) == 3) {
+                        c0 -= numBoundaryPoints;
+                        c1 -= numBoundaryPoints;
+                        c2 -= numBoundaryPoints;
+                        // skip boundary points we added
+                        if (c0 >= 0 && c1 >= 0 && c2 >= 0) {
+#ifdef CHECK_WINDINGS
+                            /* Winding of base triangle should point to 
+                               outside of cell using right hand rule */
+                            double v1[3], v2[3], c[3];
+                            v1[0] = points[c1*2] - points[c0*2];
+                            v1[1] = points[c1*2+1] - points[c0*2+1];
+                            v1[2] = 0;
+                            v2[0] = points[c2*2] - points[c0*2];
+                            v2[1] = points[c2*2+1] - points[c0*2+1];
+                            v2[2] = 0;
+                            Cross(v1, v2, c);
+                            if (Dot(normal, c) > 0) {
+                                int tmp = c0;
+                                c0 = c2;
+                                c2 = tmp;
+                            }
+#endif
+                            for (iz = 0; iz < count[2] - 1; iz++) {
+                                int base = nXYPoints * iz;
+                                int top = base + nXYPoints;
+                                nCells++;
+                                sprintf(mesg, "%d %d %d %d %d %d %d\n", 6,
+                                        base + c0, base + c1, base + c2,
+                                        top + c0, top + c1, top + c2);
+                                Tcl_AppendToObj(cellsObjPtr, mesg, -1);
+                            }
+                        }
+                    } else {
+                        break;
+                    }
+                }
+                fclose(ftmp);
+             } else {
+                fprintf(stderr, "voronoi mesher failed");
+            }
+            unlink(fpts);
+            unlink(fcells);
+        }
+        sprintf(mesg, "CELLS %d %d\n", nCells, 7*nCells);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        Tcl_AppendObjToObj(objPtr, cellsObjPtr);
+        sprintf(mesg, "CELL_TYPES %d\n", nCells);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        sprintf(mesg, "%d\n", 13);
+        for (i = 0; i < nCells; i++) {
+            Tcl_AppendToObj(objPtr, mesg, -1);
+        }
+#endif
+        if (points != NULL) {
+            free(points);
+        }
+        sprintf(mesg, "POINT_DATA %d\n", nPoints);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        sprintf(mesg, "SCALARS %s double 1\n", name);
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        sprintf(mesg, "LOOKUP_TABLE default\n");
+        Tcl_AppendToObj(objPtr, mesg, -1);
+        Tcl_AppendObjToObj(objPtr, fieldObjPtr);
+    }
+
+    Tcl_DecrRefCount(pointsObjPtr);
+    Tcl_DecrRefCount(cellsObjPtr);
+    Tcl_DecrRefCount(fieldObjPtr);
+    Tcl_SetObjResult(interp, objPtr);
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpDxToVtk_Init --
+ *
+ *  Invoked when the Rappture GUI library is being initialized
+ *  to install the "DxToVtk" command into the interpreter.
+ *
+ *  Returns TCL_OK if successful, or TCL_ERROR (along with an error
+ *  message in the interp) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+int
+RpDxToVtk_Init(Tcl_Interp *interp)
+{
+    /* install the widget command */
+    Tcl_CreateObjCommand(interp, "Rappture::DxToVtk", DxToVtkCmd,
+        NULL, NULL);
+    return TCL_OK;
+}
Index: /tags/1.6.0/gui/src/RpListbox.c
===================================================================
--- /tags/1.6.0/gui/src/RpListbox.c	(revision 6168)
+++ /tags/1.6.0/gui/src/RpListbox.c	(revision 6168)
@@ -0,0 +1,3811 @@
+/* 
+ * ----------------------------------------------------------------------
+ *  RpListbox - listbox with a few extra features
+ *
+ *  Upgrade of the usual Tk listbox, to handle special icons and indents
+ *  for each item.  This makes it more useful as a file selection box.
+ *
+ *  Rappture::listbox .lb
+ *  .lb insert end "text" -image icon -indent num -data xyz
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  Purdue Research Foundation
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ *  Based on the original Tk listbox widget, which is licensed as
+ *  follows...
+ *
+ * tkListbox.c --
+ *
+ *	This module implements listbox widgets for the Tk
+ *	toolkit.  A listbox displays a collection of strings,
+ *	one per line, and provides scrolling and selection.
+ *
+ * Copyright (c) 1990-1994 The Regents of the University of California.
+ * Copyright (c) 1994-1997 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * RCS: @(#) $Id: tkListbox.c,v 1.29.2.5 2007/04/29 02:24:02 das Exp $
+ */
+#include "tkPort.h"
+#include "default.h"
+#include "tkInt.h"
+
+#ifdef WIN32
+#include "tkWinInt.h"
+#endif
+
+typedef struct {
+    Tk_OptionTable listboxOptionTable;	/* Table defining configuration options
+					 * available for the listbox */
+    Tk_OptionTable itemAttrOptionTable;	/* Table definining configuration
+					 * options available for listbox
+					 * items */
+} ListboxOptionTables;
+
+/*
+ * A data structure of the following type is kept for each listbox
+ * widget managed by this file:
+ */
+
+typedef struct {
+    Tk_Window tkwin;		/* Window that embodies the listbox.  NULL
+				 * means that the window has been destroyed
+				 * but the data structures haven't yet been
+				 * cleaned up.*/
+    Display *display;		/* Display containing widget.  Used, among
+				 * other things, so that resources can be
+				 * freed even after tkwin has gone away. */
+    Tcl_Interp *interp;		/* Interpreter associated with listbox. */
+    Tcl_Command widgetCmd;	/* Token for listbox's widget command. */
+    Tk_OptionTable optionTable;	/* Table that defines configuration options
+				 * available for this widget. */
+    Tk_OptionTable itemAttrOptionTable;	/* Table that defines configuration
+					 * options available for listbox
+					 * items */
+    Tcl_Obj *listObj;           /* Pointer to the list object being used */
+    int nElements;              /* Holds the current count of elements */
+    Tcl_HashTable *selection;   /* Tracks selection */
+    Tcl_HashTable *itemAttrTable;	/* Tracks item attributes */
+
+    /*
+     * Information used when displaying widget:
+     */
+
+    Tk_3DBorder normalBorder;	/* Used for drawing border around whole
+				 * window, plus used for background. */
+    int borderWidth;		/* Width of 3-D border around window. */
+    int relief;			/* 3-D effect: TK_RELIEF_RAISED, etc. */
+    int highlightWidth;		/* Width in pixels of highlight to draw
+				 * around widget when it has the focus.
+				 * <= 0 means don't draw a highlight. */
+    XColor *highlightBgColorPtr;
+				/* Color for drawing traversal highlight
+				 * area when highlight is off. */
+    XColor *highlightColorPtr;	/* Color for drawing traversal highlight. */
+    int inset;			/* Total width of all borders, including
+				 * traversal highlight and 3-D border.
+				 * Indicates how much interior stuff must
+				 * be offset from outside edges to leave
+				 * room for borders. */
+    Tk_Font tkfont;		/* Information about text font, or NULL. */
+    XColor *fgColorPtr;		/* Text color in normal mode. */
+    XColor *dfgColorPtr;	/* Text color in disabled mode. */
+    GC textGC;			/* For drawing normal text. */
+    Tk_3DBorder selBorder;	/* Borders and backgrounds for selected
+				 * elements. */
+    int selBorderWidth;		/* Width of border around selection. */
+    XColor *selFgColorPtr;	/* Foreground color for selected elements. */
+    GC selTextGC;		/* For drawing selected text. */
+    int width;			/* Desired width of window, in characters. */
+    int height;			/* Desired height of window, in lines. */
+    int lineHeight;		/* Number of pixels allocated for each line
+				 * in display. */
+    int topIndex;		/* Index of top-most element visible in
+				 * window. */
+    int setGrid;		/* Non-zero means pass gridding information
+				 * to window manager. */
+
+    int orient;			/* Orientation: horizontal (multi columns)
+				 * or vertical (single vertical column) */
+    int elemsPerColumn;         /* number of elements in each column
+                                 * (in horizontal orientation) */
+    int numColumns;             /* number of horizontal columns */
+    int *xColumnMax;            /* x-coord for right edge of each column */
+    int xColumnSpace[10];       /* built-in space for xColumnMax */
+
+    /*
+     * Information to support horizontal scrolling:
+     */
+
+    int maxWidth;		/* Width (in pixels) of widest string in
+				 * listbox. */
+    int imageWidth;		/* Width (in pixels) of widest icon in
+				 * listbox. */
+    int imageHeight;		/* Height (in pixels) of tallest icon in
+				 * listbox. */
+    int xScrollUnit;		/* Number of pixels in one "unit" for
+				 * horizontal scrolling (window scrolls
+				 * horizontally in increments of this size).
+				 * This is an average character size. */
+    int xOffset;		/* The left edge of each string in the
+				 * listbox is offset to the left by this
+				 * many pixels (0 means no offset, positive
+				 * means there is an offset). */
+    int yOffset;		/* The top edge of all elements in the
+				 * listbox is offset to the bottom by this
+				 * many pixels (0 means no offset, positive
+				 * means there is an offset). */
+
+    /*
+     * Information about what's selected or active, if any.
+     */
+
+    Tk_Uid selectMode;		/* Selection style: single, browse, multiple,
+				 * or extended.  This value isn't used in C
+				 * code, but the Tcl bindings use it. */
+    int numSelected;		/* Number of elements currently selected. */
+    int selectAnchor;		/* Fixed end of selection (i.e. element
+				 * at which selection was started.) */
+    int exportSelection;	/* Non-zero means tie internal listbox
+				 * to X selection. */
+    int active;			/* Index of "active" element (the one that
+				 * has been selected by keyboard traversal).
+				 * -1 means none. */
+    int activeStyle;		/* style in which to draw the active element.
+				 * One of: underline, none, dotbox */
+
+    /*
+     * Information for scanning:
+     */
+
+    int scanMarkX;		/* X-position at which scan started (e.g.
+				 * button was pressed here). */
+    int scanMarkY;		/* Y-position at which scan started (e.g.
+				 * button was pressed here). */
+    int scanMarkXOffset;	/* Value of "xOffset" field when scan
+				 * started. */
+    int scanMarkYOffset;	/* Value of "yOffset" field when scan
+				 * started. */
+
+    /*
+     * Miscellaneous information:
+     */
+
+    Tk_Cursor cursor;		/* Current cursor for window, or None. */
+    char *takeFocus;		/* Value of -takefocus option;  not used in
+				 * the C code, but used by keyboard traversal
+				 * scripts.  Malloc'ed, but may be NULL. */
+    char *yScrollCmd;		/* Command prefix for communicating with
+				 * vertical scrollbar.  NULL means no command
+				 * to issue.  Malloc'ed. */
+    char *xScrollCmd;		/* Command prefix for communicating with
+				 * horizontal scrollbar.  NULL means no command
+				 * to issue.  Malloc'ed. */
+    int state;			/* Listbox state. */
+    Pixmap gray;		/* Pixmap for displaying disabled text. */
+    int flags;			/* Various flag bits:  see below for
+				 * definitions. */
+} Listbox;
+
+/*
+ * ItemAttr structures are used to store item configuration information for
+ * the items in a listbox
+ */
+typedef struct {
+    Tk_3DBorder border;		/* Used for drawing background around text */
+    Tk_3DBorder selBorder;	/* Used for selected text */
+    XColor *fgColor;		/* Text color in normal mode. */
+    XColor *selFgColor;		/* Text color in selected mode. */
+    char *data;      		/* Extra data string for this item */
+    char *imagePtr;		/* Value of -image option (icon for item) */
+    Tk_Image image;    		/* Derived from imagePtr for actual image */
+    int indent;      		/* Indent item by this many pixels */
+} ItemAttr;    
+
+/*
+ * Flag bits for listboxes:
+ *
+ * REDRAW_PENDING:		Non-zero means a DoWhenIdle handler
+ *				has already been queued to redraw
+ *				this window.
+ * UPDATE_V_SCROLLBAR:		Non-zero means vertical scrollbar needs
+ *				to be updated.
+ * UPDATE_H_SCROLLBAR:		Non-zero means horizontal scrollbar needs
+ *				to be updated.
+ * GOT_FOCUS:			Non-zero means this widget currently
+ *				has the input focus.
+ * GEOMETRY_IS_STALE:           Stored maxWidth/imageWidth/imageHeight
+ * 				and lineHeight may be out-of-date
+ * LISTBOX_DELETED:		This listbox has been effectively destroyed.
+ */
+
+#define REDRAW_PENDING		1
+#define UPDATE_V_SCROLLBAR	2
+#define UPDATE_H_SCROLLBAR	4
+#define GOT_FOCUS		8
+#define GEOMETRY_IS_STALE	16
+#define LISTBOX_DELETED		32
+
+/*
+ * The following enum is used to define a type for the -state option
+ * of the Entry widget.  These values are used as indices into the 
+ * string table below.
+ */
+
+enum state {
+    STATE_DISABLED, STATE_NORMAL
+};
+
+static char *stateStrings[] = {
+    "disabled", "normal", (char *) NULL
+};
+
+enum activeStyle {
+    ACTIVE_STYLE_DOTBOX, ACTIVE_STYLE_NONE, ACTIVE_STYLE_UNDERLINE
+};
+
+static char *activeStyleStrings[] = {
+    "dotbox", "none", "underline", (char *) NULL
+};
+
+enum orientation {
+    ORIENT_VERTICAL, ORIENT_HORIZONTAL
+};
+
+static char *orientStrings[] = {
+    "vertical", "horizontal", (char*)NULL
+};
+
+
+/*
+ * The optionSpecs table defines the valid configuration options for the
+ * listbox widget
+ */
+static Tk_OptionSpec optionSpecs[] = {
+    {TK_OPTION_STRING_TABLE, "-activestyle", "activeStyle", "ActiveStyle",
+	DEF_LISTBOX_ACTIVE_STYLE, -1, Tk_Offset(Listbox, activeStyle),
+        0, (ClientData) activeStyleStrings, 0},
+    {TK_OPTION_BORDER, "-background", "background", "Background",
+	 DEF_LISTBOX_BG_COLOR, -1, Tk_Offset(Listbox, normalBorder),
+	 0, (ClientData) DEF_LISTBOX_BG_MONO, 0},
+    {TK_OPTION_SYNONYM, "-bd", (char *) NULL, (char *) NULL,
+	 (char *) NULL, 0, -1, 0, (ClientData) "-borderwidth", 0},
+    {TK_OPTION_SYNONYM, "-bg", (char *) NULL, (char *) NULL,
+	 (char *) NULL, 0, -1, 0, (ClientData) "-background", 0},
+    {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth",
+	 DEF_LISTBOX_BORDER_WIDTH, -1, Tk_Offset(Listbox, borderWidth),
+	 0, 0, 0},
+    {TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor",
+	 DEF_LISTBOX_CURSOR, -1, Tk_Offset(Listbox, cursor),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_COLOR, "-disabledforeground", "disabledForeground",
+	 "DisabledForeground", DEF_LISTBOX_DISABLED_FG, -1,
+	 Tk_Offset(Listbox, dfgColorPtr), TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_BOOLEAN, "-exportselection", "exportSelection",
+	 "ExportSelection", DEF_LISTBOX_EXPORT_SELECTION, -1,
+	 Tk_Offset(Listbox, exportSelection), 0, 0, 0},
+    {TK_OPTION_SYNONYM, "-fg", "foreground", (char *) NULL,
+	 (char *) NULL, 0, -1, 0, (ClientData) "-foreground", 0},
+    {TK_OPTION_FONT, "-font", "font", "Font",
+	 DEF_LISTBOX_FONT, -1, Tk_Offset(Listbox, tkfont), 0, 0, 0},
+    {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground",
+	 DEF_LISTBOX_FG, -1, Tk_Offset(Listbox, fgColorPtr), 0, 0, 0},
+    {TK_OPTION_INT, "-height", "height", "Height",
+	 DEF_LISTBOX_HEIGHT, -1, Tk_Offset(Listbox, height), 0, 0, 0},
+    {TK_OPTION_COLOR, "-highlightbackground", "highlightBackground",
+	 "HighlightBackground", DEF_LISTBOX_HIGHLIGHT_BG, -1, 
+	 Tk_Offset(Listbox, highlightBgColorPtr), 0, 0, 0},
+    {TK_OPTION_COLOR, "-highlightcolor", "highlightColor", "HighlightColor",
+	 DEF_LISTBOX_HIGHLIGHT, -1, Tk_Offset(Listbox, highlightColorPtr),
+	 0, 0, 0},
+    {TK_OPTION_PIXELS, "-highlightthickness", "highlightThickness",
+	 "HighlightThickness", DEF_LISTBOX_HIGHLIGHT_WIDTH, -1,
+	 Tk_Offset(Listbox, highlightWidth), 0, 0, 0},
+    {TK_OPTION_STRING_TABLE, "-orient", "orient", "Orient", "vertical", -1,
+	 Tk_Offset(Listbox, orient), 0, (ClientData)orientStrings, 0},
+    {TK_OPTION_RELIEF, "-relief", "relief", "Relief",
+	 DEF_LISTBOX_RELIEF, -1, Tk_Offset(Listbox, relief), 0, 0, 0},
+    {TK_OPTION_BORDER, "-selectbackground", "selectBackground", "Foreground",
+	 DEF_LISTBOX_SELECT_COLOR, -1, Tk_Offset(Listbox, selBorder),
+	 0, (ClientData) DEF_LISTBOX_SELECT_MONO, 0},
+    {TK_OPTION_PIXELS, "-selectborderwidth", "selectBorderWidth",
+	 "BorderWidth", DEF_LISTBOX_SELECT_BD, -1,
+	 Tk_Offset(Listbox, selBorderWidth), 0, 0, 0},
+    {TK_OPTION_COLOR, "-selectforeground", "selectForeground", "Background",
+	 DEF_LISTBOX_SELECT_FG_COLOR, -1, Tk_Offset(Listbox, selFgColorPtr),
+	 TK_CONFIG_NULL_OK, (ClientData) DEF_LISTBOX_SELECT_FG_MONO, 0},
+    {TK_OPTION_STRING, "-selectmode", "selectMode", "SelectMode",
+	 DEF_LISTBOX_SELECT_MODE, -1, Tk_Offset(Listbox, selectMode),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_BOOLEAN, "-setgrid", "setGrid", "SetGrid",
+	 DEF_LISTBOX_SET_GRID, -1, Tk_Offset(Listbox, setGrid), 0, 0, 0},
+    {TK_OPTION_STRING_TABLE, "-state", "state", "State",
+	DEF_LISTBOX_STATE, -1, Tk_Offset(Listbox, state), 
+        0, (ClientData) stateStrings, 0},
+    {TK_OPTION_STRING, "-takefocus", "takeFocus", "TakeFocus",
+	 DEF_LISTBOX_TAKE_FOCUS, -1, Tk_Offset(Listbox, takeFocus),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_INT, "-width", "width", "Width",
+	 DEF_LISTBOX_WIDTH, -1, Tk_Offset(Listbox, width), 0, 0, 0},
+    {TK_OPTION_STRING, "-xscrollcommand", "xScrollCommand", "ScrollCommand",
+	 DEF_LISTBOX_SCROLL_COMMAND, -1, Tk_Offset(Listbox, xScrollCmd),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_STRING, "-yscrollcommand", "yScrollCommand", "ScrollCommand",
+	 DEF_LISTBOX_SCROLL_COMMAND, -1, Tk_Offset(Listbox, yScrollCmd),
+	 TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_END, (char *) NULL, (char *) NULL, (char *) NULL,
+	 (char *) NULL, 0, -1, 0, 0, 0}
+};
+
+/*
+ * The itemAttrOptionSpecs table defines the valid configuration options for
+ * listbox items
+ */
+static Tk_OptionSpec itemAttrOptionSpecs[] = {
+    {TK_OPTION_BORDER, "-background", "background", "Background",
+     (char *)NULL, -1, Tk_Offset(ItemAttr, border),
+     TK_OPTION_NULL_OK|TK_OPTION_DONT_SET_DEFAULT,
+     (ClientData) DEF_LISTBOX_BG_MONO, 0},
+    {TK_OPTION_SYNONYM, "-bg", (char *) NULL, (char *) NULL,
+     (char *) NULL, 0, -1, 0, (ClientData) "-background", 0},
+    {TK_OPTION_STRING, "-data", "data", "Data",
+     (char *) NULL, -1, Tk_Offset(ItemAttr, data),
+     TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_SYNONYM, "-fg", "foreground", (char *) NULL,
+     (char *) NULL, 0, -1, 0, (ClientData) "-foreground", 0},
+    {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground",
+     (char *) NULL, -1, Tk_Offset(ItemAttr, fgColor),
+     TK_OPTION_NULL_OK|TK_OPTION_DONT_SET_DEFAULT, 0, 0},
+    {TK_OPTION_STRING, "-image", "image", "Image",
+     (char *) NULL, -1, Tk_Offset(ItemAttr, imagePtr),
+     TK_OPTION_NULL_OK, 0, 0},
+    {TK_OPTION_INT, "-indent", "indent", "Indent",
+      "0", -1, Tk_Offset(ItemAttr, indent), 0, 0, 0},
+    {TK_OPTION_BORDER, "-selectbackground", "selectBackground", "Foreground",
+     (char *) NULL, -1, Tk_Offset(ItemAttr, selBorder),
+     TK_OPTION_NULL_OK|TK_OPTION_DONT_SET_DEFAULT,
+     (ClientData) DEF_LISTBOX_SELECT_MONO, 0},
+    {TK_OPTION_COLOR, "-selectforeground", "selectForeground", "Background",
+     (char *) NULL, -1, Tk_Offset(ItemAttr, selFgColor),
+     TK_OPTION_NULL_OK|TK_OPTION_DONT_SET_DEFAULT,
+     (ClientData) DEF_LISTBOX_SELECT_FG_MONO, 0},
+    {TK_OPTION_END, (char *) NULL, (char *) NULL, (char *) NULL,
+     (char *) NULL, 0, -1, 0, 0, 0}
+};
+
+/*
+ * The following tables define the listbox widget commands (and sub-
+ * commands) and map the indexes into the string tables into 
+ * enumerated types used to dispatch the listbox widget command.
+ */
+static CONST char *commandNames[] = {
+    "activate", "bbox", "cget", "configure", "curselection", "delete", "get",
+    "index", "insert", "itemcget", "itemconfigure", "nearest", "scan",
+    "see", "selection", "size", "xview", "yview",
+    (char *) NULL
+};
+
+enum command {
+    COMMAND_ACTIVATE, COMMAND_BBOX, COMMAND_CGET, COMMAND_CONFIGURE,
+    COMMAND_CURSELECTION, COMMAND_DELETE, COMMAND_GET, COMMAND_INDEX,
+    COMMAND_INSERT, COMMAND_ITEMCGET, COMMAND_ITEMCONFIGURE,
+    COMMAND_NEAREST, COMMAND_SCAN, COMMAND_SEE, COMMAND_SELECTION,
+    COMMAND_SIZE, COMMAND_XVIEW, COMMAND_YVIEW
+};
+
+static CONST char *selCommandNames[] = {
+    "anchor", "clear", "includes", "set", (char *) NULL
+};
+
+enum selcommand {
+    SELECTION_ANCHOR, SELECTION_CLEAR, SELECTION_INCLUDES, SELECTION_SET
+};
+
+static CONST char *scanCommandNames[] = {
+    "mark", "dragto", (char *) NULL
+};
+
+enum scancommand {
+    SCAN_MARK, SCAN_DRAGTO
+};
+
+static CONST char *indexNames[] = {
+    "active", "anchor", "end", (char *)NULL
+};
+
+enum indices {
+    INDEX_ACTIVE, INDEX_ANCHOR, INDEX_END
+};
+
+static CONST char *bboxOptionNames[] = {
+    "-all", "-icon", "-text", (char *) NULL
+};
+
+enum bboxoption {
+    BBOX_ALL, BBOX_ICON, BBOX_TEXT
+};
+
+
+/* Declarations for procedures defined later in this file */
+static void		RpChangeListboxXOffset _ANSI_ARGS_((Listbox *listPtr,
+			    int offset));
+static void		RpChangeListboxYOffset _ANSI_ARGS_((Listbox *listPtr,
+			    int offset));
+static void		RpChangeListboxView _ANSI_ARGS_((Listbox *listPtr,
+			    int index));
+static int		RpConfigureListbox _ANSI_ARGS_((Tcl_Interp *interp,
+			    Listbox *listPtr, int objc, Tcl_Obj *CONST objv[],
+			    int flags));
+static int		RpConfigureListboxItem _ANSI_ARGS_ ((Tcl_Interp *interp,
+			    Listbox *listPtr, ItemAttr *attrs, int objc,
+			    Tcl_Obj *CONST objv[], int index));
+static int		RpListboxDeleteSubCmd _ANSI_ARGS_((Listbox *listPtr,
+			    int first, int last));
+static void		RpDestroyListbox _ANSI_ARGS_((char *memPtr));
+static void		RpDestroyListboxOptionTables _ANSI_ARGS_ (
+			    (ClientData clientData, Tcl_Interp *interp));
+static void		RpDisplayListbox _ANSI_ARGS_((ClientData clientData));
+static void		RpDisplayImage _ANSI_ARGS_((Pixmap pixmap,
+			    int w, int h, Tk_Image image, int x, int y));
+static void		RpListboxImageProc _ANSI_ARGS_((ClientData clientData,
+			    int x, int y, int width, int height,
+			    int imgWidth, int imgHeight));
+static int		RpGetListboxIndex _ANSI_ARGS_((Tcl_Interp *interp,
+			    Listbox *listPtr, Tcl_Obj *index, int endIsSize,
+			    int *indexPtr));
+static void		RpGetListboxPos _ANSI_ARGS_((Listbox *listPtr,
+			    int index, int *rowPtr, int *colPtr));
+static int		RpListboxInsertSubCmd _ANSI_ARGS_((Listbox *listPtr,
+			    int index, int objc, Tcl_Obj *CONST objv[]));
+static void		RpListboxCmdDeletedProc _ANSI_ARGS_((
+			    ClientData clientData));
+static void		RpListboxComputeGeometry _ANSI_ARGS_((Listbox *listPtr,
+			    int fontChanged, int maxIsStale, int updateGrid));
+static void		RpListboxEventProc _ANSI_ARGS_((ClientData clientData,
+			    XEvent *eventPtr));
+static int		RpListboxFetchSelection _ANSI_ARGS_((
+			    ClientData clientData, int offset, char *buffer,
+			    int maxBytes));
+static void		RpListboxLostSelection _ANSI_ARGS_((
+			    ClientData clientData));
+static void		RpEventuallyRedrawRange _ANSI_ARGS_((Listbox *listPtr,
+			    int first, int last));
+static void		RpListboxScanTo _ANSI_ARGS_((Listbox *listPtr,
+			    int x, int y));
+static int		RpListboxSelect _ANSI_ARGS_((Listbox *listPtr,
+			    int first, int last, int select));
+static void		RpListboxUpdateHScrollbar _ANSI_ARGS_(
+    			    (Listbox *listPtr));
+static void		RpListboxUpdateVScrollbar _ANSI_ARGS_(
+			    (Listbox *listPtr));
+static int		RpListboxWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
+	                    Tcl_Interp *interp, int objc,
+	                    Tcl_Obj *CONST objv[]));
+static int		RpListboxBboxSubCmd _ANSI_ARGS_ ((Tcl_Interp *interp,
+	                    Listbox *listPtr, int index, int what));
+static int		RpListboxSelectionSubCmd _ANSI_ARGS_ (
+			    (Tcl_Interp *interp, Listbox *listPtr, int objc,
+			    Tcl_Obj *CONST objv[]));
+static int		RpListboxXviewSubCmd _ANSI_ARGS_ ((Tcl_Interp *interp,
+			    Listbox *listPtr, int objc,
+			    Tcl_Obj *CONST objv[]));
+static int		RpListboxYviewSubCmd _ANSI_ARGS_ ((Tcl_Interp *interp,
+			    Listbox *listPtr, int objc,
+			    Tcl_Obj *CONST objv[]));
+static ItemAttr *	RpListboxGetItemAttributes _ANSI_ARGS_ (
+    			    (Tcl_Interp *interp, Listbox *listPtr, int index));
+static void		RpListboxWorldChanged _ANSI_ARGS_((
+			    ClientData instanceData));
+static int		RpNearestListboxElement _ANSI_ARGS_((Listbox *listPtr,
+			    int x, int y));
+static void		RpMigrateHashEntries _ANSI_ARGS_ ((Tcl_HashTable *table,
+			    int first, int last, int offset));
+/*
+ * The structure below defines button class behavior by means of procedures
+ * that can be invoked from generic window code.
+ */
+
+static Tk_ClassProcs listboxClass = {
+    sizeof(Tk_ClassProcs),	/* size */
+    RpListboxWorldChanged,	/* worldChangedProc */
+};
+
+extern Tcl_ObjCmdProc RpListboxObjCmd;
+
+
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpListbox_Init --
+ *
+ *  Invoked when the Rappture GUI library is being initialized
+ *  to install the Rappture "listbox" widget.
+ *
+ *  Returns TCL_OK if successful, or TCL_ERROR (along with an error
+ *  message in the interp) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+int
+RpListbox_Init(interp)
+    Tcl_Interp *interp;         /* interpreter being initialized */
+{
+    Tcl_CreateObjCommand(interp, "Rappture::listbox", RpListboxObjCmd,
+        (ClientData)NULL, NULL);
+
+    return TCL_OK;
+}
+
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * RpListboxObjCmd --
+ *
+ *	This procedure is invoked to process the "listbox" Tcl
+ *	command.  See the user documentation for details on what
+ *	it does.
+ *
+ * Results:
+ *	A standard Tcl result.
+ *
+ * Side effects:
+ *	See the user documentation.
+ *
+ *--------------------------------------------------------------
+ */
+
+int
+RpListboxObjCmd(clientData, interp, objc, objv)
+    ClientData clientData;	/* NULL. */
+    Tcl_Interp *interp;		/* Current interpreter. */
+    int objc;			/* Number of arguments. */
+    Tcl_Obj *CONST objv[];	/* Argument objects. */
+{
+    register Listbox *listPtr;
+    Tk_Window tkwin;
+    ListboxOptionTables *optionTables;
+
+    if (objc < 2) {
+	Tcl_WrongNumArgs(interp, 1, objv, "pathName ?options?");
+	return TCL_ERROR;
+    }
+
+    tkwin = Tk_CreateWindowFromPath(interp, Tk_MainWindow(interp),
+	    Tcl_GetString(objv[1]), (char *) NULL);
+    if (tkwin == NULL) {
+	return TCL_ERROR;
+    }
+
+    optionTables = (ListboxOptionTables *)
+	Tcl_GetAssocData(interp, "RpListboxOptionTables", NULL);
+    if (optionTables == NULL) {
+	/*
+	 * We haven't created the option tables for this widget class yet.
+	 * Do it now and save the a pointer to them as the ClientData for
+	 * the command, so future invocations will have access to it.
+	 */
+
+	optionTables = (ListboxOptionTables *)
+	    ckalloc(sizeof(ListboxOptionTables));
+	/* Set up an exit handler to free the optionTables struct */
+	Tcl_SetAssocData(interp, "RpListboxOptionTables",
+		RpDestroyListboxOptionTables, (ClientData) optionTables);
+
+	/* Create the listbox option table and the listbox item option table */
+	optionTables->listboxOptionTable =
+	    Tk_CreateOptionTable(interp, optionSpecs);
+	optionTables->itemAttrOptionTable =
+	    Tk_CreateOptionTable(interp, itemAttrOptionSpecs);
+    }
+
+    /*
+     * Initialize the fields of the structure that won't be initialized
+     * by RpConfigureListbox, or that RpConfigureListbox requires to be
+     * initialized already (e.g. resource pointers).
+     */
+    listPtr 				= (Listbox *) ckalloc(sizeof(Listbox));
+    memset((void *) listPtr, 0, (sizeof(Listbox)));
+
+    listPtr->tkwin 			= tkwin;
+    listPtr->display 			= Tk_Display(tkwin);
+    listPtr->interp 			= interp;
+    listPtr->widgetCmd 			= Tcl_CreateObjCommand(interp,
+	    Tk_PathName(listPtr->tkwin), RpListboxWidgetObjCmd,
+	    (ClientData) listPtr, RpListboxCmdDeletedProc);
+    listPtr->optionTable 		= optionTables->listboxOptionTable;
+    listPtr->itemAttrOptionTable	= optionTables->itemAttrOptionTable;
+    listPtr->selection 			=
+	(Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable));
+    Tcl_InitHashTable(listPtr->selection, TCL_ONE_WORD_KEYS);
+    listPtr->itemAttrTable 		=
+	(Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable));
+    Tcl_InitHashTable(listPtr->itemAttrTable, TCL_ONE_WORD_KEYS);
+    listPtr->relief 			= TK_RELIEF_RAISED;
+    listPtr->textGC 			= None;
+    listPtr->selFgColorPtr 		= None;
+    listPtr->selTextGC 			= None;
+    listPtr->xScrollUnit 		= 1;
+    listPtr->exportSelection 		= 1;
+    listPtr->cursor 			= None;
+    listPtr->state			= STATE_NORMAL;
+    listPtr->gray			= None;
+    listPtr->orient			= ORIENT_VERTICAL;
+
+    /*
+     * Keep a hold of the associated tkwin until we destroy the listbox,
+     * otherwise Tk might free it while we still need it.
+     */
+
+    Tcl_Preserve((ClientData) listPtr->tkwin);
+
+    Tk_SetClass(listPtr->tkwin, "Listbox");
+    Tk_SetClassProcs(listPtr->tkwin, &listboxClass, (ClientData) listPtr);
+    Tk_CreateEventHandler(listPtr->tkwin,
+	    ExposureMask|StructureNotifyMask|FocusChangeMask,
+	    RpListboxEventProc, (ClientData) listPtr);
+    Tk_CreateSelHandler(listPtr->tkwin, XA_PRIMARY, XA_STRING,
+	    RpListboxFetchSelection, (ClientData) listPtr, XA_STRING);
+    if (Tk_InitOptions(interp, (char *)listPtr,
+	    optionTables->listboxOptionTable, tkwin) != TCL_OK) {
+	Tk_DestroyWindow(listPtr->tkwin);
+	return TCL_ERROR;
+    }
+
+    if (RpConfigureListbox(interp, listPtr, objc-2, objv+2, 0) != TCL_OK) {
+	Tk_DestroyWindow(listPtr->tkwin);
+	return TCL_ERROR;
+    }
+
+    Tcl_SetResult(interp, Tk_PathName(listPtr->tkwin), TCL_STATIC);
+    return TCL_OK;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxWidgetObjCmd --
+ *
+ *	This Tcl_Obj based procedure is invoked to process the Tcl command
+ *      that corresponds to a widget managed by this module.  See the user
+ *      documentation for details on what it does.
+ *
+ * Results:
+ *	A standard Tcl result.
+ *
+ * Side effects:
+ *	See the user documentation.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpListboxWidgetObjCmd(clientData, interp, objc, objv)
+    ClientData clientData;		/* Information about listbox widget. */
+    Tcl_Interp *interp;			/* Current interpreter. */
+    int objc;				/* Number of arguments. */
+    Tcl_Obj *CONST objv[];		/* Arguments as Tcl_Obj's. */
+{
+    register Listbox *listPtr = (Listbox *) clientData;
+    int cmdIndex, index;
+    int result = TCL_OK;
+    
+    if (objc < 2) {
+	Tcl_WrongNumArgs(interp, 1, objv, "option ?arg arg ...?");
+	return TCL_ERROR;
+    }
+
+    /*
+     * Parse the command by looking up the second argument in the list
+     * of valid subcommand names
+     */
+    result = Tcl_GetIndexFromObj(interp, objv[1], commandNames,
+	    "option", 0, &cmdIndex);
+    if (result != TCL_OK) {
+	return result;
+    }
+
+    Tcl_Preserve((ClientData)listPtr);
+    /* The subcommand was valid, so continue processing */
+    switch (cmdIndex) {
+	case COMMAND_ACTIVATE: {
+	    if (objc != 3) {
+		Tcl_WrongNumArgs(interp, 2, objv, "index");
+		result = TCL_ERROR;
+		break;
+	    }
+	    result = RpGetListboxIndex(interp, listPtr, objv[2], 0, &index);
+	    if (result != TCL_OK) {
+		break;
+	    }
+
+	    if (!(listPtr->state & STATE_NORMAL)) {
+		break;
+	    }
+
+	    if (index >= listPtr->nElements) {
+		index = listPtr->nElements-1;
+	    }
+	    if (index < 0) {
+		index = 0;
+	    }
+	    listPtr->active = index;
+	    RpEventuallyRedrawRange(listPtr, listPtr->active, listPtr->active);
+	    result = TCL_OK;
+	    break;
+	}
+
+	case COMMAND_BBOX: {
+            int bboxOpt = BBOX_ALL;
+	    if (objc < 3 || objc > 4) {
+		Tcl_WrongNumArgs(interp, 2, objv, "index ?what?");
+		result = TCL_ERROR;
+		break;
+	    }
+	    result = RpGetListboxIndex(interp, listPtr, objv[2], 0, &index);
+	    if (result != TCL_OK) {
+		break;
+	    }
+
+            if (objc > 3) {
+	        result = Tcl_GetIndexFromObj(interp, objv[3], bboxOptionNames,
+		        "what", 0, &bboxOpt);
+	        if (result != TCL_OK) {
+		    break;
+	        }
+            }
+	    result = RpListboxBboxSubCmd(interp, listPtr, index, bboxOpt);
+	    break;
+	}
+
+	case COMMAND_CGET: {
+	    Tcl_Obj *objPtr;
+	    if (objc != 3) {
+		Tcl_WrongNumArgs(interp, 2, objv, "option");
+		result = TCL_ERROR;
+		break;
+	    }
+
+	    objPtr = Tk_GetOptionValue(interp, (char *)listPtr,
+		    listPtr->optionTable, objv[2], listPtr->tkwin);
+	    if (objPtr == NULL) {
+		result = TCL_ERROR;
+		break;
+	    }
+	    Tcl_SetObjResult(interp, objPtr);
+	    result = TCL_OK;
+	    break;
+	}
+	
+	case COMMAND_CONFIGURE: {
+	    Tcl_Obj *objPtr;
+	    if (objc <= 3) {
+		objPtr = Tk_GetOptionInfo(interp, (char *) listPtr,
+			listPtr->optionTable,
+			(objc == 3) ? objv[2] : (Tcl_Obj *) NULL,
+			listPtr->tkwin);
+		if (objPtr == NULL) {
+		    result = TCL_ERROR;
+		    break;
+		} else {
+		    Tcl_SetObjResult(interp, objPtr);
+		    result = TCL_OK;
+		}
+	    } else {
+		result = RpConfigureListbox(interp, listPtr, objc-2, objv+2, 0);
+	    }
+	    break;
+	}
+
+	case COMMAND_CURSELECTION: {
+	    char indexStringRep[TCL_INTEGER_SPACE];
+	    int i;
+	    if (objc != 2) {
+		Tcl_WrongNumArgs(interp, 2, objv, NULL);
+		result = TCL_ERROR;
+		break;
+	    }
+	    /*
+	     * Of course, it would be more efficient to use the Tcl_HashTable
+	     * search functions (Tcl_FirstHashEntry, Tcl_NextHashEntry), but
+	     * then the result wouldn't be in sorted order.  So instead we
+	     * loop through the indices in order, adding them to the result
+	     * if they are selected
+	     */
+	    for (i = 0; i < listPtr->nElements; i++) {
+		if (Tcl_FindHashEntry(listPtr->selection, (char *)i) != NULL) {
+		    sprintf(indexStringRep, "%d", i);
+		    Tcl_AppendElement(interp, indexStringRep);
+		}
+	    }
+	    result = TCL_OK;
+	    break;
+	}
+	
+	case COMMAND_DELETE: {
+	    int first, last;
+	    if ((objc < 3) || (objc > 4)) {
+		Tcl_WrongNumArgs(interp, 2, objv,
+			"firstIndex ?lastIndex?");
+		result = TCL_ERROR;
+		break;
+	    }
+
+	    result = RpGetListboxIndex(interp, listPtr, objv[2], 0, &first);
+	    if (result != TCL_OK) {
+		break;
+	    }
+
+	    if (!(listPtr->state & STATE_NORMAL)) {
+		break;
+	    }
+
+	    if (first < listPtr->nElements) {
+		/*
+		 * if a "last index" was given, get it now; otherwise, use the
+		 * first index as the last index
+		 */
+		if (objc == 4) {
+		    result = RpGetListboxIndex(interp, listPtr,
+			    objv[3], 0, &last);
+		    if (result != TCL_OK) {
+			break;
+		    }
+		} else {
+		    last = first;
+		}
+		if (last >= listPtr->nElements) {
+		    last = listPtr->nElements - 1;
+		}
+		result = RpListboxDeleteSubCmd(listPtr, first, last);
+	    } else {
+		result = TCL_OK;
+	    }
+	    break;
+	}
+
+	case COMMAND_GET: {
+	    int first, last;
+	    Tcl_Obj **elemPtrs;
+	    int listLen;
+	    if (objc != 3 && objc != 4) {
+		Tcl_WrongNumArgs(interp, 2, objv, "firstIndex ?lastIndex?");
+		result = TCL_ERROR;
+		break;
+	    }
+	    result = RpGetListboxIndex(interp, listPtr, objv[2], 0, &first);
+	    if (result != TCL_OK) {
+		break;
+	    }
+	    last = first;
+	    if (objc == 4) {
+		result = RpGetListboxIndex(interp, listPtr, objv[3], 0, &last);
+		if (result != TCL_OK) {
+		    break;
+		}
+	    }
+	    if (first >= listPtr->nElements) {
+		result = TCL_OK;
+		break;
+	    }
+	    if (last >= listPtr->nElements) {
+		last = listPtr->nElements - 1;
+	    }
+	    if (first < 0) {
+		first = 0;
+	    }
+	    if (first > last) {
+		result = TCL_OK;
+		break;
+	    }
+	    result = Tcl_ListObjGetElements(interp, listPtr->listObj, &listLen,
+		    &elemPtrs);
+	    if (result != TCL_OK) {
+		break;
+	    }
+	    if (objc == 3) {
+		/*
+		 * One element request - we return a string
+		 */
+		Tcl_SetObjResult(interp, elemPtrs[first]);
+	    } else {
+		Tcl_SetListObj(Tcl_GetObjResult(interp), (last - first + 1),
+			&(elemPtrs[first]));
+	    }
+	    result = TCL_OK;
+	    break;
+	}
+
+	case COMMAND_INDEX:{
+	    char buf[TCL_INTEGER_SPACE];
+	    if (objc != 3) {
+		Tcl_WrongNumArgs(interp, 2, objv, "index");
+		result = TCL_ERROR;
+		break;
+	    }
+	    result = RpGetListboxIndex(interp, listPtr, objv[2], 1, &index);
+	    if (result != TCL_OK) {
+		break;
+	    }
+	    sprintf(buf, "%d", index);
+	    Tcl_SetResult(interp, buf, TCL_VOLATILE);
+	    result = TCL_OK;
+	    break;
+	}
+
+	case COMMAND_INSERT: {
+	    if (objc < 3) {
+		Tcl_WrongNumArgs(interp, 2, objv,
+			"index ?element element ...?");
+		result = TCL_ERROR;
+		break;
+	    }
+
+	    result = RpGetListboxIndex(interp, listPtr, objv[2], 1, &index);
+	    if (result != TCL_OK) {
+		break;
+	    }
+
+	    if (!(listPtr->state & STATE_NORMAL)) {
+		break;
+	    }
+
+	    result = RpListboxInsertSubCmd(listPtr, index, objc-3, objv+3);
+	    break;
+	}
+
+	case COMMAND_ITEMCGET: {
+	    Tcl_Obj *objPtr;
+	    ItemAttr *attrPtr;
+	    if (objc != 4) {
+		Tcl_WrongNumArgs(interp, 2, objv, "index option");
+		result = TCL_ERROR;
+		break;
+	    }
+
+	    result = RpGetListboxIndex(interp, listPtr, objv[2], 0, &index);
+	    if (result != TCL_OK) {
+		break;
+	    }
+
+	    if (index < 0 || index >= listPtr->nElements) {
+		Tcl_AppendResult(interp, "item number \"",
+			Tcl_GetString(objv[2]), "\" out of range",
+			(char *)NULL);
+		result = TCL_ERROR;
+		break;
+	    }
+	    
+	    attrPtr = RpListboxGetItemAttributes(interp, listPtr, index);
+
+	    objPtr = Tk_GetOptionValue(interp, (char *)attrPtr,
+		    listPtr->itemAttrOptionTable, objv[3], listPtr->tkwin);
+	    if (objPtr == NULL) {
+		result = TCL_ERROR;
+		break;
+	    }
+	    Tcl_SetObjResult(interp, objPtr);
+	    result = TCL_OK;
+	    break;
+	}
+
+	case COMMAND_ITEMCONFIGURE: {
+	    Tcl_Obj *objPtr;
+	    ItemAttr *attrPtr;
+	    if (objc < 3) {
+		Tcl_WrongNumArgs(interp, 2, objv,
+			"index ?option? ?value? ?option value ...?");
+		result = TCL_ERROR;
+		break;
+	    }
+
+	    result = RpGetListboxIndex(interp, listPtr, objv[2], 0, &index);
+	    if (result != TCL_OK) {
+		break;
+	    }
+	    
+	    if (index < 0 || index >= listPtr->nElements) {
+		Tcl_AppendResult(interp, "item number \"",
+			Tcl_GetString(objv[2]), "\" out of range",
+			(char *)NULL);
+		result = TCL_ERROR;
+		break;
+	    }
+	    
+	    attrPtr = RpListboxGetItemAttributes(interp, listPtr, index);
+	    if (objc <= 4) {
+		objPtr = Tk_GetOptionInfo(interp, (char *)attrPtr,
+			listPtr->itemAttrOptionTable,
+			(objc == 4) ? objv[3] : (Tcl_Obj *) NULL,
+			listPtr->tkwin);
+		if (objPtr == NULL) {
+		    result = TCL_ERROR;
+		    break;
+		} else {
+		    Tcl_SetObjResult(interp, objPtr);
+		    result = TCL_OK;
+		}
+	    } else {
+		result = RpConfigureListboxItem(interp, listPtr, attrPtr,
+			objc-3, objv+3, index);
+	    }
+	    break;
+	}
+	
+	case COMMAND_NEAREST: {
+	    char buf[TCL_INTEGER_SPACE];
+	    int x, y;
+	    if (objc != 4) {
+		Tcl_WrongNumArgs(interp, 2, objv, "x y");
+		result = TCL_ERROR;
+		break;
+	    }
+	    
+	    result = Tcl_GetIntFromObj(interp, objv[2], &x);
+	    if (result != TCL_OK) {
+		break;
+	    }
+	    result = Tcl_GetIntFromObj(interp, objv[3], &y);
+	    if (result != TCL_OK) {
+		break;
+	    }
+
+	    index = RpNearestListboxElement(listPtr, x, y);
+	    sprintf(buf, "%d", index);
+	    Tcl_SetResult(interp, buf, TCL_VOLATILE);
+	    result = TCL_OK;
+	    break;
+	}
+	
+	case COMMAND_SCAN: {
+	    int x, y, scanCmdIndex;
+
+	    if (objc != 5) {
+		Tcl_WrongNumArgs(interp, 2, objv, "mark|dragto x y");
+		result = TCL_ERROR;
+		break;
+	    }
+
+	    if (Tcl_GetIntFromObj(interp, objv[3], &x) != TCL_OK
+		    || Tcl_GetIntFromObj(interp, objv[4], &y) != TCL_OK) {
+		result = TCL_ERROR;
+		break;
+	    }
+
+	    result = Tcl_GetIndexFromObj(interp, objv[2], scanCommandNames,
+		    "option", 0, &scanCmdIndex);
+	    if (result != TCL_OK) {
+		break;
+	    }
+	    switch (scanCmdIndex) {
+		case SCAN_MARK: {
+		    listPtr->scanMarkX = x;
+		    listPtr->scanMarkY = y;
+		    listPtr->scanMarkXOffset = listPtr->xOffset;
+		    listPtr->scanMarkYOffset = listPtr->yOffset;
+		    break;
+		}
+		case SCAN_DRAGTO: {
+		    RpListboxScanTo(listPtr, x, y);
+		    break;
+		}
+	    }
+	    result = TCL_OK;
+	    break;
+	}
+
+	case COMMAND_SEE: {
+	    int first, last, nrow, ncol, x0, y0, x1, y1;
+	    if (objc != 3) {
+		Tcl_WrongNumArgs(interp, 2, objv, "index");
+		result = TCL_ERROR;
+		break;
+	    }
+	    result = RpGetListboxIndex(interp, listPtr, objv[2], 0, &index);
+	    if (result != TCL_OK) {
+		break;
+	    }
+	    if (index >= listPtr->nElements) {
+		index = listPtr->nElements - 1;
+	    }
+	    if (index < 0) {
+		index = 0;
+	    }
+
+            /* find the first element that is completely on screen */
+            first = RpNearestListboxElement(listPtr,
+                listPtr->inset, listPtr->inset);
+
+            RpGetListboxPos(listPtr, first, &nrow, &ncol);
+            x0 = (ncol > 0) ? listPtr->xColumnMax[ncol-1] : 0;
+            y0 = nrow*listPtr->lineHeight;
+            if (x0 < listPtr->xOffset) {
+                first += listPtr->elemsPerColumn;
+            }
+            if (y0 < listPtr->yOffset) {
+                first++;
+            }
+
+            last = RpNearestListboxElement(listPtr,
+                Tk_Width(listPtr->tkwin)-listPtr->inset,
+                Tk_Height(listPtr->tkwin)-listPtr->inset);
+
+            RpGetListboxPos(listPtr, last, &nrow, &ncol);
+            x1 = listPtr->xColumnMax[ncol];
+            y1 = (nrow+1)*listPtr->lineHeight;
+            if (x1 > listPtr->xOffset + Tk_Width(listPtr->tkwin)) {
+                last -= listPtr->elemsPerColumn;
+            }
+            if (y1 > listPtr->yOffset + Tk_Height(listPtr->tkwin)) {
+                last--;
+            }
+
+            if (index < first || index > last) {
+                if (listPtr->orient == ORIENT_VERTICAL) {
+                    /* center requested element in view */
+                    if (listPtr->lineHeight > 0) {
+                        index -= Tk_Height(listPtr->tkwin)
+                                  / listPtr->lineHeight / 2;
+                    }
+                }
+		RpChangeListboxView(listPtr, index);
+	    }
+	    result = TCL_OK;
+	    break;
+	}
+
+	case COMMAND_SELECTION: {
+	    result = RpListboxSelectionSubCmd(interp, listPtr, objc, objv);
+	    break;
+	}
+
+	case COMMAND_SIZE: {
+	    char buf[TCL_INTEGER_SPACE];
+	    if (objc != 2) {
+		Tcl_WrongNumArgs(interp, 2, objv, NULL);
+		result = TCL_ERROR;
+		break;
+	    }
+	    sprintf(buf, "%d", listPtr->nElements);
+	    Tcl_SetResult(interp, buf, TCL_VOLATILE);
+	    result = TCL_OK;
+	    break;
+	}
+
+	case COMMAND_XVIEW: {
+	    result = RpListboxXviewSubCmd(interp, listPtr, objc, objv);
+	    break;
+	}
+	
+	case COMMAND_YVIEW: {
+	    result = RpListboxYviewSubCmd(interp, listPtr, objc, objv);
+	    break;
+	}
+    }
+    Tcl_Release((ClientData)listPtr);
+    return result;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxBboxSubCmd --
+ *
+ *	This procedure is invoked to process a listbox bbox request.
+ *      See the user documentation for more information.
+ *
+ * Results:
+ *	A standard Tcl result.
+ *
+ * Side effects:
+ *	For valid indices, places the bbox of the requested element in
+ *      the interpreter's result.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpListboxBboxSubCmd(interp, listPtr, index, what)
+    Tcl_Interp *interp;          /* Pointer to the calling Tcl interpreter */
+    Listbox *listPtr;            /* Information about the listbox */
+    int index;                   /* Index of the element to get bbox info on */
+    int what;                    /* Return bbox around icon, text, or all */
+{
+    int nrow, ncol, x0, y0, width, height;
+    ItemAttr *attrPtr;
+    char buf[TCL_INTEGER_SPACE * 4];
+    Tcl_Obj *el;
+    char *stringRep;
+    int stringLen, result;
+    Tk_FontMetrics fm;
+
+    result = Tcl_ListObjIndex(interp, listPtr->listObj, index, &el);
+    if (result != TCL_OK) {
+        return result;
+    }
+    stringRep = Tcl_GetStringFromObj(el, &stringLen);
+
+    RpGetListboxPos(listPtr, index, &nrow, &ncol);
+    x0 = listPtr->inset + ((ncol > 0) ? listPtr->xColumnMax[ncol-1] : 0);
+    y0 = listPtr->inset + nrow*listPtr->lineHeight;
+    width = 0;
+    height = listPtr->lineHeight;
+
+    Tk_GetFontMetrics(listPtr->tkfont, &fm);
+
+    attrPtr = RpListboxGetItemAttributes((Tcl_Interp*)NULL, listPtr, index);
+    if (attrPtr) {
+        x0 += attrPtr->indent;
+    }
+
+    switch (what) {
+        case BBOX_ICON:
+            if (attrPtr->image) {
+                width = listPtr->imageWidth;
+            } else {
+                width = height = 0;
+            }
+            break;
+
+        case BBOX_TEXT:
+            /* Compute the pixel width of the requested element */
+            x0 += listPtr->imageWidth+1;
+            width += Tk_TextWidth(listPtr->tkfont, stringRep, stringLen)+2;
+            height = fm.linespace;
+            y0 += (listPtr->lineHeight - fm.linespace)/2;
+            break;
+
+        case BBOX_ALL:
+            if (attrPtr->image) {
+                width += listPtr->imageWidth + 4;
+            } else if (listPtr->imageWidth > 0) {
+                x0 += listPtr->imageWidth + 2;
+            }
+
+            /* Compute the pixel width of the requested element */
+            width += Tk_TextWidth(listPtr->tkfont, stringRep, stringLen)+2;
+            break;
+    }
+
+    sprintf(buf, "%d %d %d %d", x0-listPtr->xOffset, y0-listPtr->yOffset,
+        width, height);
+    Tcl_SetResult(interp, buf, TCL_VOLATILE);
+
+    return TCL_OK;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxSelectionSubCmd --
+ *
+ *	This procedure is invoked to process the selection sub command
+ *      for listbox widgets.
+ *
+ * Results:
+ *	Standard Tcl result.
+ *
+ * Side effects:
+ *	May set the interpreter's result field.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpListboxSelectionSubCmd(interp, listPtr, objc, objv)
+    Tcl_Interp *interp;          /* Pointer to the calling Tcl interpreter */
+    Listbox *listPtr;            /* Information about the listbox */
+    int objc;                    /* Number of arguments in the objv array */
+    Tcl_Obj *CONST objv[];       /* Array of arguments to the procedure */
+{
+    int selCmdIndex, first, last;
+    int result = TCL_OK;
+    if (objc != 4 && objc != 5) {
+	Tcl_WrongNumArgs(interp, 2, objv, "option index ?index?");
+	return TCL_ERROR;
+    }
+    result = RpGetListboxIndex(interp, listPtr, objv[3], 0, &first);
+    if (result != TCL_OK) {
+	return result;
+    }
+    last = first;
+    if (objc == 5) {
+	result = RpGetListboxIndex(interp, listPtr, objv[4], 0, &last);
+	if (result != TCL_OK) {
+	    return result;
+	}
+    }
+    result = Tcl_GetIndexFromObj(interp, objv[2], selCommandNames,
+	    "option", 0, &selCmdIndex);
+    if (result != TCL_OK) {
+	return result;
+    }
+
+    /*
+     * Only allow 'selection includes' to respond if disabled. [Bug #632514]
+     */
+
+    if ((listPtr->state == STATE_DISABLED)
+	    && (selCmdIndex != SELECTION_INCLUDES)) {
+	return TCL_OK;
+    }
+
+    switch (selCmdIndex) {
+	case SELECTION_ANCHOR: {
+	    if (objc != 4) {
+		Tcl_WrongNumArgs(interp, 3, objv, "index");
+		return TCL_ERROR;
+	    }
+	    if (first >= listPtr->nElements) {
+		first = listPtr->nElements - 1;
+	    }
+	    if (first < 0) {
+		first = 0;
+	    }
+	    listPtr->selectAnchor = first;
+	    result = TCL_OK;
+	    break;
+	}
+	case SELECTION_CLEAR: {
+	    result = RpListboxSelect(listPtr, first, last, 0);
+	    break;
+	}
+	case SELECTION_INCLUDES: {
+	    if (objc != 4) {
+		Tcl_WrongNumArgs(interp, 3, objv, "index");
+		return TCL_ERROR;
+	    }
+	    Tcl_SetObjResult(interp,
+		    Tcl_NewBooleanObj((Tcl_FindHashEntry(listPtr->selection,
+			    (char *)first) != NULL)));
+	    result = TCL_OK;
+	    break;
+	}
+	case SELECTION_SET: {
+	    result = RpListboxSelect(listPtr, first, last, 1);
+	    break;
+	}
+    }
+    return result;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxXviewSubCmd --
+ *
+ *	Process the listbox "xview" subcommand.
+ *
+ * Results:
+ *	Standard Tcl result.
+ *
+ * Side effects:
+ *	May change the listbox viewing area; may set the interpreter's result.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpListboxXviewSubCmd(interp, listPtr, objc, objv)
+    Tcl_Interp *interp;          /* Pointer to the calling Tcl interpreter */
+    Listbox *listPtr;            /* Information about the listbox */
+    int objc;                    /* Number of arguments in the objv array */
+    Tcl_Obj *CONST objv[];       /* Array of arguments to the procedure */
+{
+
+    int index, count, type, windowWidth, windowUnits;
+    int offset = 0;		/* Initialized to stop gcc warnings. */
+    double fraction, fraction2;
+    
+    windowWidth = Tk_Width(listPtr->tkwin) - 2*listPtr->inset;
+
+    if (objc == 2) {
+	if (listPtr->maxWidth < 5) {
+	    Tcl_SetResult(interp, "0 1", TCL_STATIC);
+	} else {
+	    char buf[TCL_DOUBLE_SPACE * 2];
+	    
+	    fraction = listPtr->xOffset/((double)listPtr->maxWidth);
+	    fraction2 = (listPtr->xOffset + windowWidth)
+		/((double)listPtr->maxWidth);
+	    if (fraction2 > 1.0) {
+		fraction2 = 1.0;
+	    }
+	    sprintf(buf, "%g %g", fraction, fraction2);
+	    Tcl_SetResult(interp, buf, TCL_VOLATILE);
+	}
+    } else if (objc == 3) {
+	if (Tcl_GetIntFromObj(interp, objv[2], &index) != TCL_OK) {
+	    return TCL_ERROR;
+	}
+	RpChangeListboxXOffset(listPtr, index*listPtr->xScrollUnit);
+    } else {
+	type = Tk_GetScrollInfoObj(interp, objc, objv, &fraction, &count);
+	switch (type) {
+	    case TK_SCROLL_ERROR:
+		return TCL_ERROR;
+	    case TK_SCROLL_MOVETO:
+		offset = (int) (fraction*listPtr->maxWidth + 0.5);
+		break;
+	    case TK_SCROLL_PAGES:
+		windowUnits = windowWidth/listPtr->xScrollUnit;
+		if (windowUnits > 2) {
+		    offset = listPtr->xOffset
+			+ count*listPtr->xScrollUnit*(windowUnits-2);
+		} else {
+		    offset = listPtr->xOffset + count*listPtr->xScrollUnit;
+		}
+		break;
+	    case TK_SCROLL_UNITS:
+		offset = listPtr->xOffset + count*listPtr->xScrollUnit;
+		break;
+	}
+	RpChangeListboxXOffset(listPtr, offset);
+    }
+    return TCL_OK;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxYviewSubCmd --
+ *
+ *	Process the listbox "yview" subcommand.
+ *
+ * Results:
+ *	Standard Tcl result.
+ *
+ * Side effects:
+ *	May change the listbox viewing area; may set the interpreter's result.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpListboxYviewSubCmd(interp, listPtr, objc, objv)
+    Tcl_Interp *interp;          /* Pointer to the calling Tcl interpreter */
+    Listbox *listPtr;            /* Information about the listbox */
+    int objc;                    /* Number of arguments in the objv array */
+    Tcl_Obj *CONST objv[];       /* Array of arguments to the procedure */
+{
+    int index, count, type, worldHeight, yOffset;
+    double fraction, fraction2;
+
+    /* make sure that layout is fresh -- we'll need it below */
+    if (listPtr->flags & GEOMETRY_IS_STALE) {
+        RpListboxComputeGeometry(listPtr, 0, 1, 0);
+        listPtr->flags &= ~GEOMETRY_IS_STALE;
+    }
+    worldHeight = listPtr->elemsPerColumn*listPtr->lineHeight;
+
+    if (objc == 2) {
+	if (listPtr->nElements == 0) {
+	    Tcl_SetResult(interp, "0 1", TCL_STATIC);
+	} else {
+	    char buf[TCL_DOUBLE_SPACE * 2];
+
+	    fraction = listPtr->yOffset/((double)worldHeight);
+	    fraction2 = (listPtr->yOffset+Tk_Height(listPtr->tkwin))
+                          / ((double)worldHeight);
+	    if (fraction2 > 1.0) {
+		fraction2 = 1.0;
+	    }
+	    sprintf(buf, "%g %g", fraction, fraction2);
+	    Tcl_SetResult(interp, buf, TCL_VOLATILE);
+	}
+    } else if (objc == 3) {
+	if (RpGetListboxIndex(interp, listPtr, objv[2], 0, &index) != TCL_OK) {
+	    return TCL_ERROR;
+	}
+	RpChangeListboxView(listPtr, index);
+    } else {
+        yOffset = 0;
+	type = Tk_GetScrollInfoObj(interp, objc, objv, &fraction, &count);
+	switch (type) {
+	    case TK_SCROLL_ERROR:
+		return TCL_ERROR;
+	    case TK_SCROLL_MOVETO:
+                yOffset = fraction*worldHeight;
+		break;
+	    case TK_SCROLL_PAGES:
+                yOffset = listPtr->yOffset + count*Tk_Height(listPtr->tkwin);
+		break;
+	    case TK_SCROLL_UNITS:
+		yOffset = listPtr->yOffset + count*listPtr->lineHeight;
+		break;
+	}
+        RpChangeListboxYOffset(listPtr, yOffset);
+    }
+    return TCL_OK;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxGetItemAttributes --
+ *
+ *	Returns a pointer to the ItemAttr record for a given index,
+ *	creating one if it does not already exist.
+ *
+ * Results:
+ *	Pointer to an ItemAttr record.
+ *
+ * Side effects:
+ *	Memory may be allocated for the ItemAttr record.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static ItemAttr *
+RpListboxGetItemAttributes(interp, listPtr, index)
+    Tcl_Interp *interp;          /* Pointer to the calling Tcl interpreter */
+    Listbox *listPtr;            /* Information about the listbox */
+    int index;                   /* Index of the item to retrieve attributes
+				  * for */
+{
+    int new;
+    Tcl_HashEntry *entry;
+    ItemAttr *attrs;
+
+    entry = Tcl_CreateHashEntry(listPtr->itemAttrTable, (char *)index, &new);
+    if (new) {
+	attrs = (ItemAttr *) ckalloc(sizeof(ItemAttr));
+	attrs->border = NULL;
+	attrs->selBorder = NULL;
+	attrs->fgColor = NULL;
+	attrs->selFgColor = NULL;
+	attrs->data = NULL;
+	attrs->indent = 0;
+	attrs->imagePtr = NULL;
+	attrs->image = NULL;
+	Tk_InitOptions(interp, (char *)attrs, listPtr->itemAttrOptionTable,
+		listPtr->tkwin);
+	Tcl_SetHashValue(entry, (ClientData) attrs);
+    }
+    attrs = (ItemAttr *)Tcl_GetHashValue(entry);
+    return attrs;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpDestroyListbox --
+ *
+ *	This procedure is invoked by Tcl_EventuallyFree or Tcl_Release
+ *	to clean up the internal structure of a listbox at a safe time
+ *	(when no-one is using it anymore).
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	Everything associated with the listbox is freed up.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpDestroyListbox(memPtr)
+    char *memPtr;	/* Info about listbox widget. */
+{
+    register Listbox *listPtr = (Listbox *) memPtr;
+    Tcl_HashEntry *entry;
+    Tcl_HashSearch search;
+    ItemAttr *attrPtr;
+
+    /* If we have an internal list object, free it */
+    if (listPtr->listObj != NULL) {
+	Tcl_DecrRefCount(listPtr->listObj);
+	listPtr->listObj = NULL;
+    }
+
+    /* Free the selection hash table */
+    Tcl_DeleteHashTable(listPtr->selection);
+    ckfree((char *)listPtr->selection);
+
+    /* Free the item attribute hash table */
+    for (entry = Tcl_FirstHashEntry(listPtr->itemAttrTable, &search);
+	 entry != NULL; entry = Tcl_NextHashEntry(&search)) {
+
+        attrPtr = (ItemAttr *)Tcl_GetHashValue(entry);
+
+        Tk_FreeConfigOptions((char*)attrPtr, listPtr->itemAttrOptionTable,
+            listPtr->tkwin);
+
+        if (attrPtr->image != NULL) {
+            Tk_FreeImage(attrPtr->image);
+        }
+	ckfree((char *)attrPtr);
+    }
+    Tcl_DeleteHashTable(listPtr->itemAttrTable);
+    ckfree((char *)listPtr->itemAttrTable);
+
+    /*
+     * Free up all the stuff that requires special handling, then
+     * let Tk_FreeOptions handle all the standard option-related
+     * stuff.
+     */
+
+    if (listPtr->textGC != None) {
+	Tk_FreeGC(listPtr->display, listPtr->textGC);
+    }
+    if (listPtr->selTextGC != None) {
+	Tk_FreeGC(listPtr->display, listPtr->selTextGC);
+    }
+    if (listPtr->gray != None) {
+	Tk_FreeBitmap(Tk_Display(listPtr->tkwin), listPtr->gray);
+    }
+
+    Tk_FreeConfigOptions((char *)listPtr, listPtr->optionTable,
+	    listPtr->tkwin);
+    Tcl_Release((ClientData) listPtr->tkwin);
+    listPtr->tkwin = NULL;
+    ckfree((char *) listPtr);
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpDestroyListboxOptionTables --
+ *
+ *	This procedure is registered as an exit callback when the listbox
+ *	command is first called.  It cleans up the OptionTables structure
+ *	allocated by that command.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	Frees memory.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpDestroyListboxOptionTables(clientData, interp)
+    ClientData clientData;	/* Pointer to the OptionTables struct */
+    Tcl_Interp *interp;		/* Pointer to the calling interp */
+{
+    ckfree((char *)clientData);
+    return;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpConfigureListbox --
+ *
+ *	This procedure is called to process an objv/objc list, plus
+ *	the Tk option database, in order to configure (or reconfigure)
+ *	a listbox widget.
+ *
+ * Results:
+ *	The return value is a standard Tcl result.  If TCL_ERROR is
+ *	returned, then the interp's result contains an error message.
+ *
+ * Side effects:
+ *	Configuration information, such as colors, border width,
+ *	etc. get set for listPtr;  old resources get freed,
+ *	if there were any.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpConfigureListbox(interp, listPtr, objc, objv, flags)
+    Tcl_Interp *interp;		/* Used for error reporting. */
+    register Listbox *listPtr;	/* Information about widget;  may or may
+				 * not already have values for some fields. */
+    int objc;			/* Number of valid entries in argv. */
+    Tcl_Obj *CONST objv[];	/* Arguments. */
+    int flags;			/* Flags to pass to Tk_ConfigureWidget. */
+{
+    Tk_SavedOptions savedOptions;
+    Tcl_Obj *errorResult = NULL;
+    int oldExport, error;
+
+    oldExport = listPtr->exportSelection;
+
+    for (error = 0; error <= 1; error++) {
+	if (!error) {
+	    /*
+	     * First pass: set options to new values.
+	     */
+
+	    if (Tk_SetOptions(interp, (char *) listPtr,
+		    listPtr->optionTable, objc, objv,
+		    listPtr->tkwin, &savedOptions, (int *) NULL) != TCL_OK) {
+		continue;
+	    }
+	} else {
+	    /*
+	     * Second pass: restore options to old values.
+	     */
+
+	    errorResult = Tcl_GetObjResult(interp);
+	    Tcl_IncrRefCount(errorResult);
+	    Tk_RestoreSavedOptions(&savedOptions);
+	}
+
+	/*
+	 * A few options need special processing, such as setting the
+	 * background from a 3-D border.
+	 */
+
+	Tk_SetBackgroundFromBorder(listPtr->tkwin, listPtr->normalBorder);
+
+	if (listPtr->highlightWidth < 0) {
+	    listPtr->highlightWidth = 0;
+	}
+	listPtr->inset = listPtr->highlightWidth + listPtr->borderWidth;
+
+	/*
+	 * Claim the selection if we've suddenly started exporting it and
+	 * there is a selection to export.
+	 */
+
+	if (listPtr->exportSelection && !oldExport
+		&& (listPtr->numSelected != 0)) {
+	    Tk_OwnSelection(listPtr->tkwin, XA_PRIMARY, RpListboxLostSelection,
+		    (ClientData) listPtr);
+	}
+
+	if (listPtr->listObj == NULL) {
+	    listPtr->listObj = Tcl_NewObj();
+	}
+	Tcl_IncrRefCount(listPtr->listObj);
+	break;
+    }
+    if (!error) {
+	Tk_FreeSavedOptions(&savedOptions);
+    }
+
+    /* Make sure that the list length is correct */
+    Tcl_ListObjLength(listPtr->interp, listPtr->listObj, &listPtr->nElements);
+    
+    if (error) {
+        Tcl_SetObjResult(interp, errorResult);
+	Tcl_DecrRefCount(errorResult);
+	return TCL_ERROR;
+    } else {
+	RpListboxWorldChanged((ClientData) listPtr);
+	return TCL_OK;
+    }
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpConfigureListboxItem --
+ *
+ *	This procedure is called to process an objv/objc list, plus
+ *	the Tk option database, in order to configure (or reconfigure)
+ *	a listbox item.
+ *
+ * Results:
+ *	The return value is a standard Tcl result.  If TCL_ERROR is
+ *	returned, then the interp's result contains an error message.
+ *
+ * Side effects:
+ *	Configuration information, such as colors, border width,
+ *	etc. get set for a listbox item;  old resources get freed,
+ *	if there were any.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpConfigureListboxItem(interp, listPtr, attrs, objc, objv, index)
+    Tcl_Interp *interp;		/* Used for error reporting. */
+    register Listbox *listPtr;	/* Information about widget;  may or may
+				 * not already have values for some fields. */
+    ItemAttr *attrs;		/* Information about the item to configure */
+    int objc;			/* Number of valid entries in argv. */
+    Tcl_Obj *CONST objv[];	/* Arguments. */
+    int index;			/* Index of the listbox item being configure */
+{
+    Tk_SavedOptions savedOptions;
+    Tk_Image image;
+
+    if (Tk_SetOptions(interp, (char *)attrs,
+	    listPtr->itemAttrOptionTable, objc, objv, listPtr->tkwin,
+	    &savedOptions, (int *)NULL) != TCL_OK) {
+	Tk_RestoreSavedOptions(&savedOptions);
+	return TCL_ERROR;
+    }
+    Tk_FreeSavedOptions(&savedOptions);
+
+    /*
+     *  If this item has an image name, then translate it to an
+     *  image that we can draw.
+     */
+    if (attrs->imagePtr != NULL) {
+        image = Tk_GetImage(interp, listPtr->tkwin,
+                attrs->imagePtr, RpListboxImageProc,
+                (ClientData) attrs);
+    } else {
+        image = NULL;
+    }
+    if (attrs->image != NULL) {
+        Tk_FreeImage(attrs->image);
+    }
+    attrs->image = image;
+
+    /*
+     * If this item has an image or an indent, then we should recompute
+     * the geometry and all bets are off.
+     */
+    if (attrs->image || attrs->indent > 0) {
+        listPtr->flags |= GEOMETRY_IS_STALE;
+        RpEventuallyRedrawRange(listPtr, 0, listPtr->nElements-1);
+    } else {
+        /* okay to redraw just this index */
+        RpEventuallyRedrawRange(listPtr, index, index);
+    }
+    return TCL_OK;
+}
+
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * RpListboxWorldChanged --
+ *
+ *      This procedure is called when the world has changed in some
+ *      way and the widget needs to recompute all its graphics contexts
+ *	and determine its new geometry.
+ *
+ * Results:
+ *      None.
+ *
+ * Side effects:
+ *      Listbox will be relayed out and redisplayed.
+ *
+ *---------------------------------------------------------------------------
+ */
+ 
+static void
+RpListboxWorldChanged(instanceData)
+    ClientData instanceData;	/* Information about widget. */
+{
+    XGCValues gcValues;
+    GC gc;
+    unsigned long mask;
+    Listbox *listPtr;
+    
+    listPtr = (Listbox *) instanceData;
+
+    if (listPtr->state & STATE_NORMAL) {
+	gcValues.foreground = listPtr->fgColorPtr->pixel;
+	gcValues.graphics_exposures = False;
+	mask = GCForeground | GCFont | GCGraphicsExposures;
+    } else {
+	if (listPtr->dfgColorPtr != NULL) {
+	    gcValues.foreground = listPtr->dfgColorPtr->pixel;
+	    gcValues.graphics_exposures = False;
+	    mask = GCForeground | GCFont | GCGraphicsExposures;
+	} else {
+	    gcValues.foreground = listPtr->fgColorPtr->pixel;
+	    mask = GCForeground | GCFont;
+	    if (listPtr->gray == None) {
+		listPtr->gray = Tk_GetBitmap(NULL, listPtr->tkwin, "gray50");
+	    }
+	    if (listPtr->gray != None) {
+		gcValues.fill_style = FillStippled;
+		gcValues.stipple = listPtr->gray;
+		mask |= GCFillStyle | GCStipple;
+	    }
+	}
+    }
+
+    gcValues.font = Tk_FontId(listPtr->tkfont);
+    gc = Tk_GetGC(listPtr->tkwin, mask, &gcValues);
+    if (listPtr->textGC != None) {
+	Tk_FreeGC(listPtr->display, listPtr->textGC);
+    }
+    listPtr->textGC = gc;
+
+    if (listPtr->selFgColorPtr != NULL) {
+	gcValues.foreground = listPtr->selFgColorPtr->pixel;
+    }
+    gcValues.font = Tk_FontId(listPtr->tkfont);
+    mask = GCForeground | GCFont;
+    gc = Tk_GetGC(listPtr->tkwin, mask, &gcValues);
+    if (listPtr->selTextGC != None) {
+	Tk_FreeGC(listPtr->display, listPtr->selTextGC);
+    }
+    listPtr->selTextGC = gc;
+
+    /*
+     * Register the desired geometry for the window and arrange for
+     * the window to be redisplayed.
+     */
+
+    RpListboxComputeGeometry(listPtr, 1, 1, 1);
+    listPtr->flags |= UPDATE_V_SCROLLBAR|UPDATE_H_SCROLLBAR;
+    RpEventuallyRedrawRange(listPtr, 0, listPtr->nElements-1);
+}
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * RpDisplayListbox --
+ *
+ *	This procedure redraws the contents of a listbox window.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	Information appears on the screen.
+ *
+ *--------------------------------------------------------------
+ */
+
+static void
+RpDisplayListbox(clientData)
+    ClientData clientData;	/* Information about window. */
+{
+    register Listbox *listPtr = (Listbox *) clientData;
+    register Tk_Window tkwin = listPtr->tkwin;
+    GC gc;
+    int i, first, last, ncol, nrow, x0, y0, x, y, width, freeGC;
+    int indent, imageWidth, imageHeight;
+    Tk_FontMetrics fm;
+    Tcl_Obj *curElement;
+    char *stringRep;
+    int stringLen;
+    ItemAttr *attrs;
+    Tk_3DBorder selectedBg;
+    XGCValues gcValues;
+    unsigned long mask;
+    Pixmap pixmap;
+
+    listPtr->flags &= ~REDRAW_PENDING;
+    if (listPtr->flags & LISTBOX_DELETED) {
+	return;
+    }
+
+    if (listPtr->flags & GEOMETRY_IS_STALE) {
+	RpListboxComputeGeometry(listPtr, 0, 1, 0);
+	listPtr->flags &= ~GEOMETRY_IS_STALE;
+	listPtr->flags |= UPDATE_H_SCROLLBAR;
+    }
+
+    Tcl_Preserve((ClientData) listPtr);
+    if (listPtr->flags & UPDATE_V_SCROLLBAR) {
+	RpListboxUpdateVScrollbar(listPtr);
+	if ((listPtr->flags & LISTBOX_DELETED) || !Tk_IsMapped(tkwin)) {
+	    Tcl_Release((ClientData) listPtr);
+	    return;
+	}
+    }
+    if (listPtr->flags & UPDATE_H_SCROLLBAR) {
+	RpListboxUpdateHScrollbar(listPtr);
+	if ((listPtr->flags & LISTBOX_DELETED) || !Tk_IsMapped(tkwin)) {
+	    Tcl_Release((ClientData) listPtr);
+	    return;
+	}
+    }
+    listPtr->flags &= ~(REDRAW_PENDING|UPDATE_V_SCROLLBAR|UPDATE_H_SCROLLBAR);
+    Tcl_Release((ClientData) listPtr);
+
+#ifndef TK_NO_DOUBLE_BUFFERING
+    /*
+     * Redrawing is done in a temporary pixmap that is allocated
+     * here and freed at the end of the procedure.  All drawing is
+     * done to the pixmap, and the pixmap is copied to the screen
+     * at the end of the procedure.  This provides the smoothest
+     * possible visual effects (no flashing on the screen).
+     */
+
+    pixmap = Tk_GetPixmap(listPtr->display, Tk_WindowId(tkwin),
+	    Tk_Width(tkwin), Tk_Height(tkwin), Tk_Depth(tkwin));
+#else
+    pixmap = Tk_WindowId(tkwin);
+#endif /* TK_NO_DOUBLE_BUFFERING */
+    Tk_Fill3DRectangle(tkwin, pixmap, listPtr->normalBorder, 0, 0,
+	    Tk_Width(tkwin), Tk_Height(tkwin), 0, TK_RELIEF_FLAT);
+
+    /* Display each item in the current view */
+    first = RpNearestListboxElement(listPtr, listPtr->inset, listPtr->inset);
+    last = RpNearestListboxElement(listPtr,
+        Tk_Width(tkwin)-listPtr->inset, Tk_Height(tkwin)-listPtr->inset);
+
+    for (i=first; i <= last; i++) {
+        if (listPtr->elemsPerColumn == 0) {
+            ncol = nrow = 0;
+        } else {
+            ncol = i / listPtr->elemsPerColumn;
+            nrow = i % listPtr->elemsPerColumn;
+        }
+	x0 = listPtr->inset + ((ncol > 0) ? listPtr->xColumnMax[ncol-1] : 0)
+                 - listPtr->xOffset;
+	y0 = listPtr->inset + nrow*listPtr->lineHeight
+                 - listPtr->yOffset;
+
+        if (ncol == listPtr->numColumns-1) {
+            width = Tk_Width(listPtr->tkwin) - listPtr->inset - x0;
+        } else if (ncol > 0) {
+            width = listPtr->xColumnMax[ncol] - listPtr->xColumnMax[ncol-1];
+        } else {
+            width = listPtr->xColumnMax[0];
+        }
+
+	gc = listPtr->textGC;
+	freeGC = 0;
+
+	/*
+	 * Lookup this item in the item attributes table, to see if it has
+	 * special foreground/background colors
+	 */
+        attrs = RpListboxGetItemAttributes((Tcl_Interp*)NULL, listPtr, i);
+
+	/*
+	 * If the listbox is enabled, items may be drawn differently;
+	 * they may be drawn selected, or they may have special foreground
+	 * or background colors.
+	 */
+	if (listPtr->state & STATE_NORMAL) {
+            if (Tcl_FindHashEntry(listPtr->selection, (char *)i) != NULL) {
+		/* Selected items are drawn differently. */
+		gc = listPtr->selTextGC;
+		selectedBg = listPtr->selBorder;
+		
+		/* If there is attribute information for this item,
+		 * adjust the drawing accordingly */
+		if (attrs) {
+		    /* Default GC has the values from the widget at large */
+		    if (listPtr->selFgColorPtr) {
+			gcValues.foreground = listPtr->selFgColorPtr->pixel;
+		    } else {
+			gcValues.foreground = listPtr->fgColorPtr->pixel;
+		    }
+		    gcValues.font = Tk_FontId(listPtr->tkfont);
+		    gcValues.graphics_exposures = False;
+		    mask = GCForeground | GCFont | GCGraphicsExposures;
+		    
+		    if (attrs->selBorder != NULL) {
+			selectedBg = attrs->selBorder;
+		    }
+		    
+		    if (attrs->selFgColor != NULL) {
+			gcValues.foreground = attrs->selFgColor->pixel;
+			gc = Tk_GetGC(listPtr->tkwin, mask, &gcValues);
+			freeGC = 1;
+		    }
+		}
+
+                /*
+                 * Don't bother joining the selection rectangles around
+                 * multiple selected elements.  Just put a beveled
+                 * rectangle around each one.
+                 */
+		Tk_Fill3DRectangle(tkwin, pixmap, selectedBg, x0, y0,
+		    width, listPtr->lineHeight,
+                    listPtr->selBorderWidth, TK_RELIEF_RAISED);
+	    } else {
+		/*
+		 * If there is an item attributes record for this item, draw
+		 * the background box and set the foreground color accordingly
+		 */
+		if (attrs) {
+		    gcValues.foreground = listPtr->fgColorPtr->pixel;
+		    gcValues.font = Tk_FontId(listPtr->tkfont);
+		    gcValues.graphics_exposures = False;
+		    mask = GCForeground | GCFont | GCGraphicsExposures;
+		    
+		    /*
+		     * If the item has its own background color, draw it now.
+		     */
+		    
+		    if (attrs->border != NULL) {
+			Tk_Fill3DRectangle(tkwin, pixmap, attrs->border,
+                            x0, y0, width, listPtr->lineHeight,
+                            0, TK_RELIEF_FLAT);
+		    }
+		    
+		    /*
+		     * If the item has its own foreground, use it to override
+		     * the value in the gcValues structure.
+		     */
+		    
+		    if ((listPtr->state & STATE_NORMAL)
+			    && attrs->fgColor != NULL) {
+			gcValues.foreground = attrs->fgColor->pixel;
+			gc = Tk_GetGC(listPtr->tkwin, mask, &gcValues);
+			freeGC = 1;
+		    }
+		}
+	    }
+	}
+
+	/* Find any extra indent */
+        indent = 0;
+        if (attrs && attrs->indent > 0) {
+            indent = attrs->indent;
+        }
+
+	/* Draw any icon for the item */
+	x = x0 + indent + listPtr->imageWidth + listPtr->selBorderWidth;
+        if (attrs && attrs->image) {
+            Tk_SizeOfImage(attrs->image, &imageWidth, &imageHeight);
+
+            RpDisplayImage(pixmap, Tk_Width(tkwin), Tk_Height(tkwin),
+                attrs->image,
+                x-imageWidth-2, y0+(listPtr->lineHeight-imageHeight)/2);
+        }
+
+	/* Draw the actual text of this item */
+	Tk_GetFontMetrics(listPtr->tkfont, &fm);
+	y = y0 + (listPtr->lineHeight-fm.linespace)/2
+               + fm.ascent + listPtr->selBorderWidth;
+
+        stringRep = NULL;
+	Tcl_ListObjIndex(listPtr->interp, listPtr->listObj, i, &curElement);
+        if (curElement) {
+	    stringRep = Tcl_GetStringFromObj(curElement, &stringLen);
+	    Tk_DrawChars(listPtr->display, pixmap, gc, listPtr->tkfont,
+		stringRep, stringLen, x+2, y);
+        }
+
+	/* If this is the active element, apply the activestyle to it. */
+	if ((i == listPtr->active) && (listPtr->flags & GOT_FOCUS) && stringRep) {
+	    if (listPtr->activeStyle == ACTIVE_STYLE_UNDERLINE) {
+		/* Underline the text. */
+		Tk_UnderlineChars(listPtr->display, pixmap, gc,
+			listPtr->tkfont, stringRep, x+2, y, 0, stringLen);
+	    } else if (listPtr->activeStyle == ACTIVE_STYLE_DOTBOX) {
+#ifdef WIN32
+		/*
+		 * This provides for exact default look and feel on Windows.
+		 */
+		TkWinDCState state;
+		HDC dc;
+		RECT rect;
+
+		dc = TkWinGetDrawableDC(listPtr->display, pixmap, &state);
+		rect.left   = listPtr->inset;
+		rect.top    = y0;
+		rect.right  = rect.left + width;
+		rect.bottom = rect.top + listPtr->lineHeight;
+		DrawFocusRect(dc, &rect);
+		TkWinReleaseDrawableDC(pixmap, dc, &state);
+#else
+		/*
+		 * Draw a dotted box around the text.
+		 */
+		x = x0 + indent + listPtr->imageWidth;
+		y = y0 + listPtr->lineHeight;
+
+		gcValues.line_style  = LineOnOffDash;
+		gcValues.line_width  = listPtr->selBorderWidth;
+		if (gcValues.line_width <= 0) {
+		    gcValues.line_width  = 1;
+		}
+		gcValues.dash_offset = 0;
+		gcValues.dashes      = 1;
+		/*
+		 * You would think the XSetDashes was necessary, but it
+		 * appears that the default dotting for just saying we
+		 * want dashes appears to work correctly.
+		 static char dashList[] = { 1 };
+		 static int  dashLen    = sizeof(dashList);
+		 XSetDashes(listPtr->display, gc, 0, dashList, dashLen);
+		 */
+		mask = GCLineWidth | GCLineStyle | GCDashList | GCDashOffset;
+		XChangeGC(listPtr->display, gc, mask, &gcValues);
+		XDrawRectangle(listPtr->display, pixmap, gc, x, y,
+			(unsigned) width, (unsigned) listPtr->lineHeight - 1);
+		if (!freeGC) {
+		    /* Don't bother changing if it is about to be freed. */
+		    gcValues.line_style = LineSolid;
+		    XChangeGC(listPtr->display, gc, GCLineStyle, &gcValues);
+		}
+#endif
+	    }
+	}
+
+	if (freeGC) {
+	    Tk_FreeGC(listPtr->display, gc);
+	}
+    }
+
+    /*
+     * Redraw the border for the listbox to make sure that it's on top
+     * of any of the text of the listbox entries.
+     */
+
+    Tk_Draw3DRectangle(tkwin, pixmap, listPtr->normalBorder,
+	    listPtr->highlightWidth, listPtr->highlightWidth,
+	    Tk_Width(tkwin) - 2*listPtr->highlightWidth,
+	    Tk_Height(tkwin) - 2*listPtr->highlightWidth,
+	    listPtr->borderWidth, listPtr->relief);
+    if (listPtr->highlightWidth > 0) {
+	GC fgGC, bgGC;
+
+	bgGC = Tk_GCForColor(listPtr->highlightBgColorPtr, pixmap);
+	if (listPtr->flags & GOT_FOCUS) {
+	    fgGC = Tk_GCForColor(listPtr->highlightColorPtr, pixmap);
+	    TkpDrawHighlightBorder(tkwin, fgGC, bgGC, 
+	            listPtr->highlightWidth, pixmap);
+	} else {
+	    TkpDrawHighlightBorder(tkwin, bgGC, bgGC, 
+	            listPtr->highlightWidth, pixmap);
+	}
+    }
+#ifndef TK_NO_DOUBLE_BUFFERING
+    XCopyArea(listPtr->display, pixmap, Tk_WindowId(tkwin),
+	    listPtr->textGC, 0, 0, (unsigned) Tk_Width(tkwin),
+	    (unsigned) Tk_Height(tkwin), 0, 0);
+    Tk_FreePixmap(listPtr->display, pixmap);
+#endif /* TK_NO_DOUBLE_BUFFERING */
+}
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * RpDisplayImage --
+ *
+ *	This procedure draws a Tk image at the given (x,y)
+ *	coordinate, being careful to clip the image if it
+ *	falls off an edge.  If we're not careful, then Tk
+ *	simply ignores the drawing command and the whole
+ *	image disappears.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	Draws the image into the pixmap.
+ *
+ *--------------------------------------------------------------
+ */
+
+static void
+RpDisplayImage(pixmap, w, h, image, x, y)
+    Pixmap pixmap;	/* Draw into this drawable */
+    int w, h;           /* overall size of pixmap */
+    Tk_Image image;	/* Draw this image into drawable */
+    int x, y;		/* put upper-left corner at this (x,y) */
+{
+    int xoffs, yoffs, imageWidth, imageHeight;
+
+    xoffs = yoffs = 0;
+    Tk_SizeOfImage(image, &imageWidth, &imageHeight);
+
+    if (x+imageWidth < 0 || x > w || y+imageHeight < 0 || y > h) {
+        return;  /* completely off screen */
+    }
+
+    if (x < 0) {                  /* falling off on the left side */
+        xoffs = -x;
+        imageWidth -= xoffs;
+        x = 0;
+    }
+    else if (x+imageWidth > w) {  /* falling off on the right side */
+        imageWidth = w-x;
+    }
+
+    if (y < 0) {                  /* falling off on the top side */
+        yoffs = -y;
+        imageHeight -= yoffs;
+        y = 0;
+    }
+    else if (y+imageHeight > h) { /* falling off on the bottom side */
+        imageHeight = h-y;
+    }
+
+    Tk_RedrawImage(image, xoffs, yoffs, imageWidth, imageHeight, pixmap, x, y);
+}
+
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxImageProc --
+ *
+ *	This procedure is invoked by the image code whenever the manager
+ *	for an image does something that affects the size or contents
+ *	of an image displayed in a listbox entry.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	Arranges for the listbox to get redisplayed.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpListboxImageProc(clientData, x, y, width, height, imgWidth, imgHeight)
+    ClientData clientData;		/* Pointer to widget record. */
+    int x, y;				/* Upper left pixel (within image)
+					 * that must be redisplayed. */
+    int width, height;			/* Dimensions of area to redisplay
+					 * (may be <= 0). */
+    int imgWidth, imgHeight;		/* New dimensions of image. */
+{
+    register Listbox *listPtr = (Listbox *) clientData;
+
+    if (listPtr->tkwin != NULL) {
+        RpListboxComputeGeometry(listPtr, 1, 1, 0);
+	if (Tk_IsMapped(listPtr->tkwin) && !(listPtr->flags & REDRAW_PENDING)) {
+            Tcl_DoWhenIdle(RpDisplayListbox, (ClientData) listPtr);
+	    listPtr->flags |= REDRAW_PENDING;
+	}
+    }
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxComputeGeometry --
+ *
+ *	This procedure is invoked to recompute geometry information
+ *	such as the sizes of the elements and the overall dimensions
+ *	desired for the listbox.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	Geometry information is updated and a new requested size is
+ *	registered for the widget.  Internal border and gridding
+ *	information is also set.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpListboxComputeGeometry(listPtr, fontChanged, maxIsStale, updateGrid)
+    Listbox *listPtr;		/* Listbox whose geometry is to be
+				 * recomputed. */
+    int fontChanged;		/* Non-zero means the font may have changed
+				 * so per-element width information also
+				 * has to be computed. */
+    int maxIsStale;		/* Non-zero means the "maxWidth" field may
+				 * no longer be up-to-date and must
+				 * be recomputed.  If fontChanged is 1 then
+				 * this must be 1. */
+    int updateGrid;		/* Non-zero means call Tk_SetGrid or
+				 * Tk_UnsetGrid to update gridding for
+				 * the window. */
+{
+    int width, height, pixelWidth, pixelHeight;
+    int imageWidth, imageHeight, maxWidth, reqHeight, nrow, ncol;
+    Tk_FontMetrics fm;
+    Tcl_Obj *element;
+    int textLength;
+    char *text;
+    int i, result;
+    ItemAttr *attrPtr;
+
+    if (listPtr->flags & LISTBOX_DELETED) {
+        return;
+    }
+
+    Tk_GetFontMetrics(listPtr->tkfont, &fm);
+
+    /*
+     * Figure out max icon size and the overall height of each line
+     */
+    if (fontChanged || maxIsStale) {
+	listPtr->xScrollUnit = Tk_TextWidth(listPtr->tkfont, "0", 1);
+	if (listPtr->xScrollUnit == 0) {
+	    listPtr->xScrollUnit = 1;
+	}
+
+	listPtr->imageWidth = 0;
+	listPtr->imageHeight = 0;
+	for (i = 0; i < listPtr->nElements; i++) {
+	    /* Compute the pixel width of the current element */
+	    result = Tcl_ListObjIndex(listPtr->interp, listPtr->listObj, i,
+		    &element);
+	    if (result != TCL_OK) {
+		continue;
+	    }
+	    attrPtr = RpListboxGetItemAttributes(listPtr->interp, listPtr, i);
+
+            /* compute the max image width/height */
+            if (attrPtr && attrPtr->image) {
+                Tk_SizeOfImage(attrPtr->image, &imageWidth, &imageHeight);
+                imageWidth += 4;  /* add padding on either side */
+                imageHeight += 4;
+                if (imageWidth > listPtr->imageWidth) {
+                    listPtr->imageWidth = imageWidth;
+                }
+                if (imageHeight > listPtr->imageHeight) {
+                    listPtr->imageHeight = imageHeight;
+                }
+            }
+	}
+    }
+
+    listPtr->lineHeight = fm.linespace + 1 + 2*listPtr->selBorderWidth;
+    if (listPtr->imageHeight > listPtr->lineHeight) {
+        listPtr->lineHeight = listPtr->imageHeight;
+    }
+
+    /*
+     * Compute a new layout -- either vertical or horizontal
+     */
+    if (fontChanged  || maxIsStale) {
+        if (listPtr->xColumnMax
+              && listPtr->xColumnMax != listPtr->xColumnSpace) {
+            ckfree((char*)listPtr->xColumnMax);
+            listPtr->xColumnMax = NULL;
+        }
+        if (listPtr->orient == ORIENT_HORIZONTAL) {
+            reqHeight = listPtr->height * listPtr->lineHeight;
+            if (Tk_Height(listPtr->tkwin) > reqHeight) {
+                reqHeight = Tk_Height(listPtr->tkwin);
+            }
+            listPtr->elemsPerColumn = reqHeight / listPtr->lineHeight;
+            if (listPtr->elemsPerColumn == 0) {
+                listPtr->elemsPerColumn = 1;
+            }
+
+            listPtr->numColumns = listPtr->nElements / listPtr->elemsPerColumn;
+            if (listPtr->nElements % listPtr->elemsPerColumn != 0) {
+                listPtr->numColumns++;
+            }
+
+            if (listPtr->numColumns <= 10) {
+                listPtr->xColumnMax = listPtr->xColumnSpace;
+            } else {
+                listPtr->xColumnMax = (int*)ckalloc(listPtr->numColumns*sizeof(int));
+            }
+        } else {
+            listPtr->elemsPerColumn = listPtr->nElements;
+            listPtr->numColumns = 1;
+            listPtr->xColumnMax = listPtr->xColumnSpace;
+        }
+
+	maxWidth = 0;
+        nrow = ncol = 0;
+	for (i = 0; i < listPtr->nElements; i++) {
+	    /* Compute the pixel width of the current element */
+	    result = Tcl_ListObjIndex(listPtr->interp, listPtr->listObj, i,
+		    &element);
+	    if (result != TCL_OK) {
+		continue;
+	    }
+	    text = Tcl_GetStringFromObj(element, &textLength);
+	    attrPtr = RpListboxGetItemAttributes(listPtr->interp, listPtr, i);
+
+	    pixelWidth = Tk_TextWidth(listPtr->tkfont, text, textLength);
+            if (attrPtr && attrPtr->indent > 0) {
+                pixelWidth += attrPtr->indent;
+            }
+	    if (pixelWidth > maxWidth) {
+		maxWidth = pixelWidth;
+	    }
+
+            if (++nrow >= listPtr->elemsPerColumn) {
+                listPtr->xColumnMax[ncol] =
+                    ((ncol > 0) ? listPtr->xColumnMax[ncol-1] : 0)
+                    + maxWidth + listPtr->imageWidth + 10;
+
+                maxWidth = 0;
+                nrow = 0; ncol++;
+            }
+	}
+
+        if (nrow > 0) {
+            /* finalize last column if it was in progress */
+            listPtr->xColumnMax[ncol] =
+                ((ncol > 0) ? listPtr->xColumnMax[ncol-1] : 0)
+                + maxWidth + listPtr->imageWidth + 4;
+        }
+
+        listPtr->maxWidth = listPtr->xColumnMax[listPtr->numColumns-1];
+
+        /*
+         * If the scroll offsets are outside the view, reset them.
+         */
+        if (listPtr->xOffset > 0.8*listPtr->xOffset) {
+            listPtr->xOffset = 0;
+            RpEventuallyRedrawRange(listPtr, 0, listPtr->nElements-1);
+        }
+        if (listPtr->orient == ORIENT_HORIZONTAL) {
+            listPtr->yOffset = 0;
+        } else {
+            height = listPtr->nElements*listPtr->lineHeight
+                       - Tk_Height(listPtr->tkwin) + 2*listPtr->inset;
+            if (height < 0) {
+                height = 0;
+            }
+            if (listPtr->yOffset > height) {
+                listPtr->yOffset = height;
+            }
+        }
+    }
+
+    /*
+     * Make sure that topIndex is still at top of column.
+     */
+    if (listPtr->elemsPerColumn == 0) {
+        ncol = 0;
+    } else {
+        ncol = listPtr->topIndex / listPtr->elemsPerColumn;
+    }
+    listPtr->topIndex = ncol*listPtr->elemsPerColumn;
+
+    /*
+     * Snap to nearest scroll increment and request geometry size.
+     */
+    width = listPtr->width;
+    if (width <= 0) {
+	width = (listPtr->maxWidth + listPtr->xScrollUnit - 1)
+		/listPtr->xScrollUnit;
+	if (width < 1) {
+	    width = 1;
+	}
+    }
+    pixelWidth = width*listPtr->xScrollUnit + 2*listPtr->inset
+	    + 2*listPtr->selBorderWidth;
+
+    height = listPtr->height;
+    if (listPtr->height <= 0) {
+	height = listPtr->elemsPerColumn;
+	if (height < 1) {
+	    height = 1;
+	}
+    }
+    pixelHeight = height*listPtr->lineHeight + 2*listPtr->inset;
+
+    Tk_GeometryRequest(listPtr->tkwin, pixelWidth, pixelHeight);
+    Tk_SetInternalBorder(listPtr->tkwin, listPtr->inset);
+    if (updateGrid) {
+	if (listPtr->setGrid) {
+	    Tk_SetGrid(listPtr->tkwin, width, height, listPtr->xScrollUnit,
+		    listPtr->lineHeight);
+	} else {
+	    Tk_UnsetGrid(listPtr->tkwin);
+	}
+    }
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxInsertSubCmd --
+ *
+ *	This procedure is invoked to handle the listbox "insert"
+ *      subcommand.  It's a little different from the usual Listbox
+ *	insert.  It takes a single value and all configuration options
+ *	for that one value.
+ *
+ * Results:
+ *	Standard Tcl result.
+ *
+ * Side effects:
+ *	New elements are added to the listbox pointed to by listPtr;
+ *      a refresh callback is registered for the listbox.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpListboxInsertSubCmd(listPtr, index, objc, objv)
+    register Listbox *listPtr;	/* Listbox that is to get the new
+				 * elements. */
+    int index;			/* Add the new elements before this
+				 * element. */
+    int objc;			/* Number of new elements to add. */
+    Tcl_Obj *CONST objv[];	/* New elements (one per entry). */
+{
+    Tcl_Obj *newListObj;
+    int result;
+    ItemAttr *attrPtr;
+    
+    /* Adjust selection and attribute information beyond the current index */
+    RpMigrateHashEntries(listPtr->selection, index, listPtr->nElements-1, 1);
+    RpMigrateHashEntries(listPtr->itemAttrTable, index, listPtr->nElements-1, 1);
+    
+    /* If the object is shared, duplicate it before writing to it */
+    if (Tcl_IsShared(listPtr->listObj)) {
+        newListObj = Tcl_DuplicateObj(listPtr->listObj);
+    } else {
+        newListObj = listPtr->listObj;
+    }
+
+    /* insert the specified element (first arg to command) */
+    result = Tcl_ListObjReplace(listPtr->interp, newListObj,
+        index, 0, 1, objv);
+
+    if (result != TCL_OK) {
+	return result;
+    }
+
+    /*
+     * Replace the current object and set attached listvar, if any.
+     * This may error if listvar points to a var in a deleted namespace, but
+     * we ignore those errors.  If the namespace is recreated, it will
+     * auto-sync with the current value. [Bug 1424513]
+     */
+    Tcl_IncrRefCount(newListObj);
+    Tcl_DecrRefCount(listPtr->listObj);
+    listPtr->listObj = newListObj;
+    listPtr->nElements++;
+
+    /*
+     * Update the "special" indices (anchor, topIndex, active) to account
+     * for the renumbering that just occurred.  Then arrange for the new
+     * information to be displayed.
+     */
+    listPtr->active = listPtr->nElements-1;
+    if (index <= listPtr->selectAnchor) {
+	listPtr->selectAnchor += 1;
+    }
+    if (index < listPtr->topIndex) {
+	listPtr->topIndex += 1;
+    }
+    if (index <= listPtr->active) {
+	listPtr->active += 1;
+	if ((listPtr->active >= listPtr->nElements) &&
+		(listPtr->nElements > 0)) {
+	    listPtr->active = listPtr->nElements-1;
+	}
+    }
+    listPtr->flags |= UPDATE_V_SCROLLBAR | UPDATE_H_SCROLLBAR;
+    RpListboxComputeGeometry(listPtr, 0, 1, 0);
+    RpEventuallyRedrawRange(listPtr, index, listPtr->nElements-1);
+
+    /* apply any additional options as configuration options */
+    if (objc > 1) {
+        attrPtr = RpListboxGetItemAttributes(listPtr->interp, listPtr, index);
+        result = RpConfigureListboxItem(listPtr->interp, listPtr, attrPtr,
+            objc-1, objv+1, index);
+
+        if (result != TCL_OK) {
+	    return result;
+        }
+    }
+
+    /* return the index of the new item */
+    Tcl_SetObjResult(listPtr->interp, Tcl_NewIntObj(index));
+    return TCL_OK;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxDeleteSubCmd --
+ *
+ *	Process a listbox "delete" subcommand by removing one or more
+ *      elements from a listbox widget.
+ *
+ * Results:
+ *	Standard Tcl result.
+ *
+ * Side effects:
+ *	The listbox will be modified and (eventually) redisplayed.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpListboxDeleteSubCmd(listPtr, first, last)
+    register Listbox *listPtr;	/* Listbox widget to modify. */
+    int first;			/* Index of first element to delete. */
+    int last;			/* Index of last element to delete. */
+{
+    int count, i, pageLines;
+    Tcl_Obj *newListObj;
+    int result;
+    Tcl_HashEntry *entry;
+    
+    /*
+     * Adjust the range to fit within the existing elements of the
+     * listbox, and make sure there's something to delete.
+     */
+
+    if (first < 0) {
+	first = 0;
+    }
+    if (last >= listPtr->nElements) {
+	last = listPtr->nElements-1;
+    }
+    count = last + 1 - first;
+    if (count <= 0) {
+	return TCL_OK;
+    }
+
+    /*
+     * Foreach deleted index we must:
+     * a) remove selection information
+     * b) clean up attributes
+     */
+    for (i = first; i <= last; i++) {
+	/* Remove selection information */
+	entry = Tcl_FindHashEntry(listPtr->selection, (char *)i);
+	if (entry != NULL) {
+	    listPtr->numSelected--;
+	    Tcl_DeleteHashEntry(entry);
+	}
+
+	entry = Tcl_FindHashEntry(listPtr->itemAttrTable, (char *)i);
+	if (entry != NULL) {
+	    ckfree((char *)Tcl_GetHashValue(entry));
+	    Tcl_DeleteHashEntry(entry);
+	}
+    }
+
+    /* Adjust selection and attribute info for indices after lastIndex */
+    RpMigrateHashEntries(listPtr->selection, last+1,
+	    listPtr->nElements-1, count*-1);
+    RpMigrateHashEntries(listPtr->itemAttrTable, last+1,
+	    listPtr->nElements-1, count*-1);
+
+    /* Delete the requested elements */
+    if (Tcl_IsShared(listPtr->listObj)) {
+	newListObj = Tcl_DuplicateObj(listPtr->listObj);
+    } else {
+	newListObj = listPtr->listObj;
+    }
+    result = Tcl_ListObjReplace(listPtr->interp,
+	    newListObj, first, count, 0, NULL);
+    if (result != TCL_OK) {
+	return result;
+    }
+
+    /*
+     * Replace the current object and set attached listvar, if any.
+     * This may error if listvar points to a var in a deleted namespace, but
+     * we ignore those errors.  If the namespace is recreated, it will
+     * auto-sync with the current value. [Bug 1424513]
+     */
+
+    Tcl_IncrRefCount(newListObj);
+    Tcl_DecrRefCount(listPtr->listObj);
+    listPtr->listObj = newListObj;
+
+    /* Get the new list length */
+    Tcl_ListObjLength(listPtr->interp, listPtr->listObj, &listPtr->nElements);
+
+    /*
+     * Update the selection and viewing information to reflect the change
+     * in the element numbering, and redisplay to slide information up over
+     * the elements that were deleted.
+     */
+
+    if (first <= listPtr->selectAnchor) {
+	listPtr->selectAnchor -= count;
+	if (listPtr->selectAnchor < first) {
+	    listPtr->selectAnchor = first;
+	}
+    }
+    if (first <= listPtr->topIndex) {
+	listPtr->topIndex -= count;
+	if (listPtr->topIndex < first) {
+	    listPtr->topIndex = first;
+	}
+    }
+    if (listPtr->orient == ORIENT_VERTICAL) {
+        pageLines = Tk_Height(listPtr->tkwin)/listPtr->lineHeight;
+        if (listPtr->topIndex > (listPtr->nElements - pageLines)) {
+	    listPtr->topIndex = listPtr->nElements - pageLines;
+	    if (listPtr->topIndex < 0) {
+	        listPtr->topIndex = 0;
+	    }
+        }
+    }
+    if (listPtr->active > last) {
+	listPtr->active -= count;
+    } else if (listPtr->active >= first) {
+	listPtr->active = first;
+	if ((listPtr->active >= listPtr->nElements) &&
+		(listPtr->nElements > 0)) {
+	    listPtr->active = listPtr->nElements-1;
+	}
+    }
+    listPtr->flags |= UPDATE_V_SCROLLBAR|UPDATE_H_SCROLLBAR;
+    RpListboxComputeGeometry(listPtr, 0, 1, 0);
+    RpEventuallyRedrawRange(listPtr, first, listPtr->nElements-1);
+    return TCL_OK;
+}
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * RpListboxEventProc --
+ *
+ *	This procedure is invoked by the Tk dispatcher for various
+ *	events on listboxes.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	When the window gets deleted, internal structures get
+ *	cleaned up.  When it gets exposed, it is redisplayed.
+ *
+ *--------------------------------------------------------------
+ */
+
+static void
+RpListboxEventProc(clientData, eventPtr)
+    ClientData clientData;	/* Information about window. */
+    XEvent *eventPtr;		/* Information about event. */
+{
+    Listbox *listPtr = (Listbox *) clientData;
+    int height;
+    
+    if (eventPtr->type == Expose) {
+	RpEventuallyRedrawRange(listPtr,
+		RpNearestListboxElement(listPtr,
+                    eventPtr->xexpose.x, eventPtr->xexpose.y),
+		RpNearestListboxElement(listPtr,
+                    eventPtr->xexpose.x + eventPtr->xexpose.width,
+                    eventPtr->xexpose.y + eventPtr->xexpose.height));
+    } else if (eventPtr->type == DestroyNotify) {
+	if (!(listPtr->flags & LISTBOX_DELETED)) {
+	    listPtr->flags |= LISTBOX_DELETED;
+	    Tcl_DeleteCommandFromToken(listPtr->interp, listPtr->widgetCmd);
+	    if (listPtr->setGrid) {
+		Tk_UnsetGrid(listPtr->tkwin);
+	    }
+	    if (listPtr->flags & REDRAW_PENDING) {
+		Tcl_CancelIdleCall(RpDisplayListbox, clientData);
+	    }
+	    Tcl_EventuallyFree(clientData, RpDestroyListbox);
+	}
+    } else if (eventPtr->type == ConfigureNotify) {
+        if (listPtr->orient == ORIENT_HORIZONTAL) {
+            /* size can change layout in horizontal mode */
+            RpListboxComputeGeometry(listPtr, 0, 1, 0);
+        } else {
+            height = listPtr->nElements*listPtr->lineHeight
+                       - Tk_Height(listPtr->tkwin) + 2*listPtr->inset;
+            if (height < 0) {
+                height = 0;
+            }
+            if (listPtr->yOffset > height) {
+                listPtr->yOffset = height;
+            }
+        }
+	listPtr->flags |= UPDATE_V_SCROLLBAR|UPDATE_H_SCROLLBAR;
+	RpChangeListboxView(listPtr, listPtr->topIndex);
+	RpChangeListboxXOffset(listPtr, listPtr->xOffset);
+
+	/*
+	 * Redraw the whole listbox.  It's hard to tell what needs
+	 * to be redrawn (e.g. if the listbox has shrunk then we
+	 * may only need to redraw the borders), so just redraw
+	 * everything for safety.
+	 */
+
+	RpEventuallyRedrawRange(listPtr, 0, listPtr->nElements-1);
+    } else if (eventPtr->type == FocusIn) {
+	if (eventPtr->xfocus.detail != NotifyInferior) {
+	    listPtr->flags |= GOT_FOCUS;
+	    RpEventuallyRedrawRange(listPtr, 0, listPtr->nElements-1);
+	}
+    } else if (eventPtr->type == FocusOut) {
+	if (eventPtr->xfocus.detail != NotifyInferior) {
+	    listPtr->flags &= ~GOT_FOCUS;
+	    RpEventuallyRedrawRange(listPtr, 0, listPtr->nElements-1);
+	}
+    }
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxCmdDeletedProc --
+ *
+ *	This procedure is invoked when a widget command is deleted.  If
+ *	the widget isn't already in the process of being destroyed,
+ *	this command destroys it.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	The widget is destroyed.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpListboxCmdDeletedProc(clientData)
+    ClientData clientData;	/* Pointer to widget record for widget. */
+{
+    Listbox *listPtr = (Listbox *) clientData;
+
+    /*
+     * This procedure could be invoked either because the window was
+     * destroyed and the command was then deleted (in which case tkwin
+     * is NULL) or because the command was deleted, and then this procedure
+     * destroys the widget.
+     */
+
+    if (!(listPtr->flags & LISTBOX_DELETED)) {
+	Tk_DestroyWindow(listPtr->tkwin);
+    }
+}
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * RpGetListboxIndex --
+ *
+ *	Parse an index into a listbox and return either its value
+ *	or an error.
+ *
+ * Results:
+ *	A standard Tcl result.  If all went well, then *indexPtr is
+ *	filled in with the index (into listPtr) corresponding to
+ *	string.  Otherwise an error message is left in the interp's result.
+ *
+ * Side effects:
+ *	None.
+ *
+ *--------------------------------------------------------------
+ */
+
+static int
+RpGetListboxIndex(interp, listPtr, indexObj, endIsSize, indexPtr)
+    Tcl_Interp *interp;		/* For error messages. */
+    Listbox *listPtr;		/* Listbox for which the index is being
+				 * specified. */
+    Tcl_Obj *indexObj;		/* Specifies an element in the listbox. */
+    int endIsSize;		/* If 1, "end" refers to the number of
+				 * entries in the listbox.  If 0, "end"
+				 * refers to 1 less than the number of
+				 * entries. */
+    int *indexPtr;		/* Where to store converted index. */
+{
+    int result;
+    int index;
+    char *stringRep;
+    
+    /* First see if the index is one of the named indices */
+    result = Tcl_GetIndexFromObj(NULL, indexObj, indexNames, "", 0, &index);
+    if (result == TCL_OK) {
+	switch (index) {
+	    case INDEX_ACTIVE: {
+		/* "active" index */
+		*indexPtr = listPtr->active;
+		break;
+	    }
+
+	    case INDEX_ANCHOR: {
+		/* "anchor" index */
+		*indexPtr = listPtr->selectAnchor;
+		break;
+	    }
+
+	    case INDEX_END: {
+		/* "end" index */
+		if (endIsSize) {
+		    *indexPtr = listPtr->nElements;
+		} else {
+		    *indexPtr = listPtr->nElements - 1;
+		}
+		break;
+	    }
+	}
+	return TCL_OK;
+    }
+
+    /* The index didn't match any of the named indices; maybe it's an @x,y */
+    stringRep = Tcl_GetString(indexObj);
+    if (stringRep[0] == '@') {
+	/* @x,y index */
+	int x, y;
+	char *start, *end;
+	start = stringRep + 1;
+	x = strtol(start, &end, 0);
+	if ((start == end) || (*end != ',')) {
+	    Tcl_AppendResult(interp, "bad listbox index \"", stringRep,
+		    "\": must be active, anchor, end, @x,y, or a number",
+		    (char *)NULL);
+	    return TCL_ERROR;
+	}
+	start = end+1;
+	y = strtol(start, &end, 0);
+	if ((start == end) || (*end != '\0')) {
+	    Tcl_AppendResult(interp, "bad listbox index \"", stringRep,
+		    "\": must be active, anchor, end, @x,y, or a number",
+		    (char *)NULL);
+	    return TCL_ERROR;
+	}
+	*indexPtr = RpNearestListboxElement(listPtr, x, y);
+	return TCL_OK;
+    }
+    
+    /* Maybe the index is just an integer */
+    if (Tcl_GetIntFromObj(interp, indexObj, indexPtr) == TCL_OK) {
+	return TCL_OK;
+    }
+
+    /* Everything failed, nothing matched.  Throw up an error message */
+    Tcl_ResetResult(interp);
+    Tcl_AppendResult(interp, "bad listbox index \"",
+	    Tcl_GetString(indexObj), "\": must be active, anchor, ",
+	    "end, @x,y, or a number", (char *) NULL);
+    return TCL_ERROR;
+}
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * RpGetListboxPos --
+ *
+ *	Computes the row/col index for the given listbox element.
+ *
+ * Results:
+ *	Returns the row/col values in the pointers provided.
+ *
+ * Side effects:
+ *	Computes geometry/layout if it is stale.
+ *
+ *--------------------------------------------------------------
+ */
+
+static void
+RpGetListboxPos(listPtr, index, rowPtr, colPtr)
+    Listbox *listPtr;		/* Listbox for which the index is being
+				 * specified. */
+    int index;			/* Specifies an element in the listbox. */
+    int *rowPtr;		/* Returns: row in listbox layout */
+    int *colPtr;		/* Returns: col in listbox layout */
+{
+    if (listPtr->flags & GEOMETRY_IS_STALE) {
+        RpListboxComputeGeometry(listPtr, 0, 1, 0);
+        listPtr->flags &= ~GEOMETRY_IS_STALE;
+    }
+
+    if (listPtr->elemsPerColumn == 0) {
+        *rowPtr = *colPtr = 0;
+    } else {
+        *colPtr = index / listPtr->elemsPerColumn;
+        *rowPtr = index % listPtr->elemsPerColumn;
+    }
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpChangeListboxView --
+ *
+ *	Change the view on a listbox widget so that a given element
+ *	is displayed at the top/left.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	What's displayed on the screen is changed.  If there is a
+ *	scrollbar associated with this widget, then the scrollbar
+ *	is instructed to change its display too.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpChangeListboxView(listPtr, index)
+    register Listbox *listPtr;		/* Information about widget. */
+    int index;				/* Index of element in listPtr
+					 * that should now appear at the
+					 * top of the listbox. */
+{
+    int nrow, ncol, xOffset, yOffset;
+
+    /* keep the view in bounds */
+    if (index > listPtr->nElements) {
+        index = listPtr->nElements;
+    }
+    if (index < 0) {
+        index = 0;
+    }
+
+    RpGetListboxPos(listPtr, index, &nrow, &ncol);
+
+    xOffset = (ncol > 0) ? listPtr->xColumnMax[ncol-1] : 0;
+
+    if (listPtr->orient == ORIENT_VERTICAL) {
+        yOffset = nrow*listPtr->lineHeight;
+    } else {
+        yOffset = 0;
+    }
+
+    RpChangeListboxXOffset(listPtr, xOffset);
+    RpChangeListboxYOffset(listPtr, yOffset);
+
+    /* topIndex is top of column */
+    listPtr->topIndex = ncol*listPtr->elemsPerColumn;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpChangeListboxXOffset --
+ *
+ *	Change the horizontal offset for a listbox.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	The listbox may be redrawn to reflect its new horizontal
+ *	offset.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpChangeListboxXOffset(listPtr, offset)
+    register Listbox *listPtr;		/* Information about widget. */
+    int offset;				/* Desired new "xOffset" for
+					 * listbox. */
+{
+    int windowWidth;
+    
+    windowWidth = Tk_Width(listPtr->tkwin) - 2*listPtr->inset - 10;
+    if (offset > listPtr->maxWidth-windowWidth) {
+	offset = listPtr->maxWidth-windowWidth;
+    }
+    if (offset < 0) {
+	offset = 0;
+    }
+    if (offset != listPtr->xOffset) {
+	listPtr->xOffset = offset;
+	listPtr->flags |= UPDATE_H_SCROLLBAR;
+	RpEventuallyRedrawRange(listPtr, 0, listPtr->nElements-1);
+    }
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpChangeListboxYOffset --
+ *
+ *	Change the vertical offset for a listbox.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	The listbox may be redrawn to reflect its new vertical
+ *	offset.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpChangeListboxYOffset(listPtr, offset)
+    register Listbox *listPtr;		/* Information about widget. */
+    int offset;				/* Desired new "yOffset" for
+					 * listbox. */
+{
+    int windowHeight;
+    
+    windowHeight = Tk_Height(listPtr->tkwin) - 2*listPtr->inset;
+    if (offset > listPtr->elemsPerColumn*listPtr->lineHeight - windowHeight) {
+	offset = listPtr->elemsPerColumn*listPtr->lineHeight - windowHeight;
+    }
+    if (offset < 0) {
+	offset = 0;
+    }
+    if (offset != listPtr->yOffset) {
+	listPtr->yOffset = offset;
+	listPtr->flags |= UPDATE_V_SCROLLBAR;
+	RpEventuallyRedrawRange(listPtr, 0, listPtr->nElements-1);
+    }
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxScanTo --
+ *
+ *	Given a point (presumably of the curent mouse location)
+ *	drag the view in the window to implement the scan operation.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	The view in the window may change.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpListboxScanTo(listPtr, x, y)
+    register Listbox *listPtr;		/* Information about widget. */
+    int x;				/* X-coordinate to use for scan
+					 * operation. */
+    int y;				/* Y-coordinate to use for scan
+					 * operation. */
+{
+    int ncol, newx, newy, maxx, maxy;
+
+    ncol = listPtr->numColumns;
+    maxx = (ncol > 0) ? listPtr->xColumnMax[ncol] : listPtr->xColumnMax[0];
+    maxy = listPtr->elemsPerColumn*listPtr->lineHeight;
+
+    /*
+     * Compute new top line for screen by amplifying the difference
+     * between the current position and the place where the scan
+     * started (the "mark" position).  If we run off the top or bottom
+     * of the list, then reset the mark point so that the current
+     * position continues to correspond to the edge of the window.
+     * This means that the picture will start dragging as soon as the
+     * mouse reverses direction (without this reset, might have to slide
+     * mouse a long ways back before the picture starts moving again).
+     */
+    newx = listPtr->scanMarkXOffset - (10*(x - listPtr->scanMarkX));
+    if (newx > maxx) {
+	newx = listPtr->scanMarkXOffset = maxx;
+	listPtr->scanMarkX = x;
+    } else if (newx < 0) {
+	newx = listPtr->scanMarkXOffset = 0;
+	listPtr->scanMarkX = x;
+    }
+    RpChangeListboxXOffset(listPtr, newx);
+
+    newy = listPtr->scanMarkYOffset - (10*(y - listPtr->scanMarkY));
+    if (newy > maxy) {
+	newy = listPtr->scanMarkYOffset = maxy;
+	listPtr->scanMarkY = y;
+    } else if (newy < 0) {
+	newy = listPtr->scanMarkYOffset = 0;
+	listPtr->scanMarkY = y;
+    }
+    RpChangeListboxYOffset(listPtr, newy);
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpNearestListboxElement --
+ *
+ *	Given an (x,y) coordinate inside a listbox, compute the index
+ *	of the element under that point or closest to it.
+ *
+ * Results:
+ *	The return value is an index of an element of listPtr.  If
+ *	listPtr has no elements, then 0 is always returned.
+ *
+ * Side effects:
+ *	None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpNearestListboxElement(listPtr, x, y)
+    register Listbox *listPtr;		/* Information about widget. */
+    int x;				/* X-coordinate in listPtr's window. */
+    int y;				/* Y-coordinate in listPtr's window. */
+{
+    int index, ncol, x0, x1, colIndex;
+
+    /* need to update geometry/layout to figure out where point sits */
+    if (listPtr->flags & GEOMETRY_IS_STALE) {
+        RpListboxComputeGeometry(listPtr, 1, 1, 1);
+        listPtr->flags &= ~GEOMETRY_IS_STALE;
+        listPtr->flags |= UPDATE_H_SCROLLBAR;
+    }
+
+    /* if we're scrolled over, adjust the x/y coordinates */
+    x += listPtr->xOffset;
+    y += listPtr->yOffset;
+
+    /* find the column containing this point */
+    if (x > listPtr->maxWidth) {
+        ncol = listPtr->numColumns-1;
+    } else {
+        for (ncol=0; ncol < listPtr->numColumns; ncol++) {
+            x0 = (ncol > 0) ? listPtr->xColumnMax[ncol-1]+1 : 0;
+            x1 = listPtr->xColumnMax[ncol];
+
+            if (x >= x0 && x <= x1) {
+                break;
+            }
+        }
+    }
+    colIndex = ncol*listPtr->elemsPerColumn;
+
+    index = (y - listPtr->inset)/listPtr->lineHeight;
+    if (index >= listPtr->elemsPerColumn) {
+	index = listPtr->elemsPerColumn;
+    }
+    if (index < 0) {
+	index = 0;
+    }
+    index += colIndex;
+    if (index >= listPtr->nElements) {
+	index = listPtr->nElements-1;
+    }
+    return index;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxSelect --
+ *
+ *	Select or deselect one or more elements in a listbox..
+ *
+ * Results:
+ *	Standard Tcl result.
+ *
+ * Side effects:
+ *	All of the elements in the range between first and last are
+ *	marked as either selected or deselected, depending on the
+ *	"select" argument.  Any items whose state changes are redisplayed.
+ *	The selection is claimed from X when the number of selected
+ *	elements changes from zero to non-zero.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpListboxSelect(listPtr, first, last, select)
+    register Listbox *listPtr;		/* Information about widget. */
+    int first;				/* Index of first element to
+					 * select or deselect. */
+    int last;				/* Index of last element to
+					 * select or deselect. */
+    int select;				/* 1 means select items, 0 means
+					 * deselect them. */
+{
+    int i, firstRedisplay, oldCount;
+    Tcl_HashEntry *entry;
+    int new;
+    
+    if (last < first) {
+	i = first;
+	first = last;
+	last = i;
+    }
+    if ((last < 0) || (first >= listPtr->nElements)) {
+	return TCL_OK;
+    }
+    if (first < 0) {
+	first = 0;
+    }
+    if (last >= listPtr->nElements) {
+	last = listPtr->nElements - 1;
+    }
+    oldCount = listPtr->numSelected;
+    firstRedisplay = -1;
+
+    /*
+     * For each index in the range, find it in our selection hash table.
+     * If it's not there but should be, add it.  If it's there but shouldn't
+     * be, remove it.
+     */
+    for (i = first; i <= last; i++) {
+	entry = Tcl_FindHashEntry(listPtr->selection, (char *)i);
+	if (entry != NULL) {
+	    if (!select) {
+		Tcl_DeleteHashEntry(entry);
+		listPtr->numSelected--;
+		if (firstRedisplay < 0) {
+		    firstRedisplay = i;
+		}
+	    }
+	} else {
+	    if (select) {
+		entry = Tcl_CreateHashEntry(listPtr->selection,
+			(char *)i, &new);
+		Tcl_SetHashValue(entry, (ClientData) NULL);
+		listPtr->numSelected++;
+		if (firstRedisplay < 0) {
+		    firstRedisplay = i;
+		}
+	    }
+	}
+    }
+
+    if (firstRedisplay >= 0) {
+	RpEventuallyRedrawRange(listPtr, first, last);
+    }
+    if ((oldCount == 0) && (listPtr->numSelected > 0)
+	    && (listPtr->exportSelection)) {
+	Tk_OwnSelection(listPtr->tkwin, XA_PRIMARY, RpListboxLostSelection,
+		(ClientData) listPtr);
+    }
+    return TCL_OK;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxFetchSelection --
+ *
+ *	This procedure is called back by Tk when the selection is
+ *	requested by someone.  It returns part or all of the selection
+ *	in a buffer provided by the caller.
+ *
+ * Results:
+ *	The return value is the number of non-NULL bytes stored
+ *	at buffer.  Buffer is filled (or partially filled) with a
+ *	NULL-terminated string containing part or all of the selection,
+ *	as given by offset and maxBytes.  The selection is returned
+ *	as a Tcl list with one list element for each element in the
+ *	listbox.
+ *
+ * Side effects:
+ *	None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+RpListboxFetchSelection(clientData, offset, buffer, maxBytes)
+    ClientData clientData;		/* Information about listbox widget. */
+    int offset;				/* Offset within selection of first
+					 * byte to be returned. */
+    char *buffer;			/* Location in which to place
+					 * selection. */
+    int maxBytes;			/* Maximum number of bytes to place
+					 * at buffer, not including terminating
+					 * NULL character. */
+{
+    register Listbox *listPtr = (Listbox *) clientData;
+    Tcl_DString selection;
+    int length, count, needNewline;
+    Tcl_Obj *curElement;
+    char *stringRep;
+    int stringLen;
+    Tcl_HashEntry *entry;
+    int i;
+    
+    if (!listPtr->exportSelection) {
+	return -1;
+    }
+
+    /*
+     * Use a dynamic string to accumulate the contents of the selection.
+     */
+
+    needNewline = 0;
+    Tcl_DStringInit(&selection);
+    for (i = 0; i < listPtr->nElements; i++) {
+	entry = Tcl_FindHashEntry(listPtr->selection, (char *)i);
+	if (entry != NULL) {
+	    if (needNewline) {
+		Tcl_DStringAppend(&selection, "\n", 1);
+	    }
+	    Tcl_ListObjIndex(listPtr->interp, listPtr->listObj, i,
+		    &curElement);
+	    stringRep = Tcl_GetStringFromObj(curElement, &stringLen);
+	    Tcl_DStringAppend(&selection, stringRep, stringLen);
+	    needNewline = 1;
+	}
+    }
+
+    length = Tcl_DStringLength(&selection);
+    if (length == 0) {
+	return -1;
+    }
+
+    /*
+     * Copy the requested portion of the selection to the buffer.
+     */
+
+    count = length - offset;
+    if (count <= 0) {
+	count = 0;
+    } else {
+	if (count > maxBytes) {
+	    count = maxBytes;
+	}
+	memcpy((VOID *) buffer,
+		(VOID *) (Tcl_DStringValue(&selection) + offset),
+		(size_t) count);
+    }
+    buffer[count] = '\0';
+    Tcl_DStringFree(&selection);
+    return count;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxLostSelection --
+ *
+ *	This procedure is called back by Tk when the selection is
+ *	grabbed away from a listbox widget.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	The existing selection is unhighlighted, and the window is
+ *	marked as not containing a selection.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpListboxLostSelection(clientData)
+    ClientData clientData;		/* Information about listbox widget. */
+{
+    register Listbox *listPtr = (Listbox *) clientData;
+    
+    if ((listPtr->exportSelection) && (listPtr->nElements > 0)) {
+	RpListboxSelect(listPtr, 0, listPtr->nElements-1, 0);
+    }
+}
+
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpEventuallyRedrawRange --
+ *
+ *	Ensure that a given range of elements is eventually redrawn on
+ *	the display (if those elements in fact appear on the display).
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	Information gets redisplayed.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpEventuallyRedrawRange(listPtr, first, last)
+    register Listbox *listPtr;		/* Information about widget. */
+    int first;				/* Index of first element in list
+					 * that needs to be redrawn. */
+    int last;				/* Index of last element in list
+					 * that needs to be redrawn.  May
+					 * be less than first;
+					 * these just bracket a range. */
+{
+    /* We don't have to register a redraw callback if one is already pending,
+     * or if the window doesn't exist, or if the window isn't mapped */
+    if ((listPtr->flags & REDRAW_PENDING)
+	    || (listPtr->flags & LISTBOX_DELETED)
+	    || !Tk_IsMapped(listPtr->tkwin)) {
+	return;
+    }
+    listPtr->flags |= REDRAW_PENDING;
+    Tcl_DoWhenIdle(RpDisplayListbox, (ClientData) listPtr);
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxUpdateVScrollbar --
+ *
+ *	This procedure is invoked whenever information has changed in
+ *	a listbox in a way that would invalidate a vertical scrollbar
+ *	display.  If there is an associated scrollbar, then this command
+ *	updates it by invoking a Tcl command.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	A Tcl command is invoked, and an additional command may be
+ *	invoked to process errors in the command.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpListboxUpdateVScrollbar(listPtr)
+    register Listbox *listPtr;		/* Information about widget. */
+{
+    char string[TCL_DOUBLE_SPACE * 2];
+    double first, last, worldHeight;
+    int result;
+    Tcl_Interp *interp;
+    
+    if (listPtr->yScrollCmd == NULL) {
+	return;
+    }
+    if (listPtr->nElements == 0) {
+	first = 0.0;
+	last = 1.0;
+    } else {
+        /* need to update geometry/layout to figure out scrollbar bubble */
+        if (listPtr->flags & GEOMETRY_IS_STALE) {
+            RpListboxComputeGeometry(listPtr, 0, 1, 0);
+            listPtr->flags &= ~GEOMETRY_IS_STALE;
+        }
+        worldHeight = listPtr->elemsPerColumn*listPtr->lineHeight;
+
+	first = listPtr->yOffset/((double)worldHeight);
+	last  = (listPtr->yOffset+Tk_Height(listPtr->tkwin))
+                  / ((double)worldHeight);
+	if (last > 1.0) {
+	    last = 1.0;
+	}
+    }
+    sprintf(string, " %g %g", first, last);
+
+    /*
+     * We must hold onto the interpreter from the listPtr because the data
+     * at listPtr might be freed as a result of the Tcl_VarEval.
+     */
+    
+    interp = listPtr->interp;
+    Tcl_Preserve((ClientData) interp);
+    result = Tcl_VarEval(interp, listPtr->yScrollCmd, string,
+	    (char *) NULL);
+    if (result != TCL_OK) {
+	Tcl_AddErrorInfo(interp,
+		"\n    (vertical scrolling command executed by listbox)");
+	Tcl_BackgroundError(interp);
+    }
+    Tcl_Release((ClientData) interp);
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpListboxUpdateHScrollbar --
+ *
+ *	This procedure is invoked whenever information has changed in
+ *	a listbox in a way that would invalidate a horizontal scrollbar
+ *	display.  If there is an associated horizontal scrollbar, then
+ *	this command updates it by invoking a Tcl command.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	A Tcl command is invoked, and an additional command may be
+ *	invoked to process errors in the command.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpListboxUpdateHScrollbar(listPtr)
+    register Listbox *listPtr;		/* Information about widget. */
+{
+    char string[TCL_DOUBLE_SPACE * 2];
+    int result, windowWidth;
+    double first, last;
+    Tcl_Interp *interp;
+
+    if (listPtr->xScrollCmd == NULL) {
+	return;
+    }
+    windowWidth = Tk_Width(listPtr->tkwin) - 2*listPtr->inset;
+
+    if (listPtr->maxWidth < 5) {
+	first = 0;
+	last = 1.0;
+    } else {
+	first = listPtr->xOffset/((double)listPtr->maxWidth);
+	last = (listPtr->xOffset + windowWidth)
+		/((double)listPtr->maxWidth);
+	if (last > 1.0) {
+	    last = 1.0;
+	}
+    }
+    sprintf(string, " %g %g", first, last);
+
+    /*
+     * We must hold onto the interpreter because the data referred to at
+     * listPtr might be freed as a result of the call to Tcl_VarEval.
+     */
+    
+    interp = listPtr->interp;
+    Tcl_Preserve((ClientData) interp);
+    result = Tcl_VarEval(interp, listPtr->xScrollCmd, string,
+	    (char *) NULL);
+    if (result != TCL_OK) {
+	Tcl_AddErrorInfo(interp,
+		"\n    (horizontal scrolling command executed by listbox)");
+	Tcl_BackgroundError(interp);
+    }
+    Tcl_Release((ClientData) interp);
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RpMigrateHashEntries --
+ *
+ *	Given a hash table with entries keyed by a single integer value,
+ *	move all entries in a given range by a fixed amount, so that
+ *	if in the original table there was an entry with key n and
+ *	the offset was i, in the new table that entry would have key n + i.
+ *
+ * Results:
+ *	None.
+ *
+ * Side effects:
+ *	Rekeys some hash table entries.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+RpMigrateHashEntries(table, first, last, offset)
+    Tcl_HashTable *table;
+    int first;
+    int last;
+    int offset;
+{
+    int i, new;
+    Tcl_HashEntry *entry;
+    ClientData clientData;
+
+    if (offset == 0) {
+	return;
+    }
+    /* It's more efficient to do one if/else and nest the for loops inside,
+     * although we could avoid some code duplication if we nested the if/else
+     * inside the for loops */
+    if (offset > 0) {
+	for (i = last; i >= first; i--) {
+	    entry = Tcl_FindHashEntry(table, (char *)i);
+	    if (entry != NULL) {
+		clientData = Tcl_GetHashValue(entry);
+		Tcl_DeleteHashEntry(entry);
+		entry = Tcl_CreateHashEntry(table, (char *)(i + offset), &new);
+		Tcl_SetHashValue(entry, clientData);
+	    }
+	}
+    } else {
+	for (i = first; i <= last; i++) {
+	    entry = Tcl_FindHashEntry(table, (char *)i);
+	    if (entry != NULL) {
+		clientData = Tcl_GetHashValue(entry);
+		Tcl_DeleteHashEntry(entry);
+		entry = Tcl_CreateHashEntry(table, (char *)(i + offset), &new);
+		Tcl_SetHashValue(entry, clientData);
+	    }
+	}
+    }
+    return;
+}
+
+
Index: /tags/1.6.0/gui/src/RpPdbToVtk.c
===================================================================
--- /tags/1.6.0/gui/src/RpPdbToVtk.c	(revision 6168)
+++ /tags/1.6.0/gui/src/RpPdbToVtk.c	(revision 6168)
@@ -0,0 +1,740 @@
+
+/* 
+ * ----------------------------------------------------------------------
+ *  RpPdbToVtk - 
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <math.h>
+#include <limits.h>
+#include <float.h>
+#include "tcl.h"
+
+#define BOND_NONE	(0)
+#define BOND_CONECT	(1<<0)
+#define BOND_COMPUTE	(1<<1)
+#define BOND_BOTH	(BOND_CONECT|BOND_COMPUTE)
+
+typedef struct {
+    int from, to;
+} ConnectKey;
+
+typedef struct {
+    double x, y, z;			/* Coordinates of atom. */
+    int number;				/* Atomic number */
+    int ordinal;			/* Index of the atom in VTK. */
+    int numConnections;			/*  */
+} PdbAtom;
+
+typedef struct {
+    const char *symbol;			/* Atom symbol. */
+    float radius;			/* Covalent radius of atom. */
+} PeriodicElement;
+
+static PeriodicElement elements[] = {
+    {    "X",	    0.1f,	},	/* 0 */
+    {    "H",	    0.32f,	},	/* 1 */		
+    {    "He", 	    0.93f,	},	/* 2 */		
+    {    "Li", 	    1.23f,	},	/* 3 */		
+    {    "Be", 	    0.90f,	},	/* 4 */		
+    {    "B", 	    0.82f,	},	/* 5 */		
+    {    "C", 	    0.77f,	},	/* 6 */		
+    {    "N", 	    0.75f,	},	/* 7 */		
+    {    "O", 	    0.73f,	},	/* 8 */		
+    {    "F", 	    0.72f,	},	/* 9 */		
+    {    "Ne", 	    0.71f, 	},	/* 10 */	
+    {    "Na", 	    1.54f, 	},	/* 11 */	
+    {    "Mg", 	    1.36f, 	},	/* 12 */	
+    {    "Al", 	    1.18f, 	},	/* 13 */	
+    {    "Si", 	    1.11f, 	},	/* 14 */	
+    {    "P", 	    1.06f, 	},	/* 15 */	
+    {    "S", 	    1.02f, 	},	/* 16 */	
+    {    "Cl", 	    0.99f, 	},	/* 17 */	
+    {    "Ar", 	    0.98f, 	},	/* 18 */	
+    {    "K", 	    2.03f, 	},	/* 19 */	
+    {    "Ca", 	    1.74f, 	},	/* 20 */	
+    {    "Sc", 	    1.44f, 	},	/* 21 */	
+    {    "Ti", 	    1.32f, 	},	/* 22 */	
+    {    "V", 	    1.22f, 	},	/* 23 */	
+    {    "Cr", 	    1.18f, 	},	/* 24 */	
+    {    "Mn", 	    1.17f, 	},	/* 25 */	
+    {    "Fe", 	    1.17f, 	},	/* 26 */	
+    {    "Co", 	    1.16f, 	},	/* 27 */	
+    {    "Ni", 	    1.15f, 	},	/* 28 */	
+    {    "Cu", 	    1.17f, 	},	/* 29 */	
+    {    "Zn", 	    1.25f, 	},	/* 30 */	
+    {    "Ga", 	    1.26f, 	},	/* 31 */	
+    {    "Ge", 	    1.22f, 	},	/* 32 */	
+    {    "As", 	    1.20f, 	},	/* 33 */	
+    {    "Se", 	    1.16f, 	},	/* 34 */	
+    {    "Br", 	    1.14f, 	},	/* 35 */	
+    {    "Kr", 	    1.12f, 	},	/* 36 */	
+    {    "Rb", 	    2.16f, 	},	/* 37 */	
+    {    "Sr", 	    1.91f, 	},	/* 38 */	
+    {    "Y", 	    1.62f, 	},	/* 39 */	
+    {    "Zr", 	    1.45f, 	},	/* 40 */	
+    {    "Nb", 	    1.34f, 	},	/* 41 */	
+    {    "Mo", 	    1.30f, 	},	/* 42 */	
+    {    "Tc", 	    1.27f, 	},	/* 43 */	
+    {    "Ru", 	    1.25f, 	},	/* 44 */	
+    {    "Rh", 	    1.25f, 	},	/* 45 */	
+    {    "Pd", 	    1.28f, 	},	/* 46 */	
+    {    "Ag", 	    1.34f, 	},	/* 47 */	
+    {    "Cd", 	    1.48f, 	},	/* 48 */	
+    {    "In", 	    1.44f, 	},	/* 49 */	
+    {    "Sn", 	    1.41f, 	},	/* 50 */	
+    {    "Sb", 	    1.40f, 	},	/* 51 */	
+    {    "Te", 	    1.36f, 	},	/* 52 */	
+    {    "I", 	    1.33f, 	},	/* 53 */	
+    {    "Xe", 	    1.31f, 	},	/* 54 */	
+    {    "Cs", 	    2.35f, 	},	/* 55 */	
+    {    "Ba", 	    1.98f, 	},	/* 56 */	
+    {    "La", 	    1.69f, 	},	/* 57 */	
+    {    "Ce", 	    1.65f, 	},	/* 58 */	
+    {    "Pr", 	    1.65f, 	},	/* 59 */	
+    {    "Nd", 	    1.64f, 	},	/* 60 */	
+    {    "Pm", 	    1.63f, 	},	/* 61 */	
+    {    "Sm", 	    1.62f, 	},	/* 62 */	
+    {    "Eu", 	    1.85f, 	},	/* 63 */	
+    {    "Gd", 	    1.61f, 	},	/* 64 */	
+    {    "Tb", 	    1.59f, 	},	/* 65 */	
+    {    "Dy", 	    1.59f, 	},	/* 66 */	
+    {    "Ho", 	    1.58f, 	},	/* 67 */	
+    {    "Er", 	    1.57f, 	},	/* 68 */	
+    {    "Tm", 	    1.56f, 	},	/* 69 */	
+    {    "Yb", 	    1.74f, 	},	/* 70 */	
+    {    "Lu", 	    1.56f, 	},	/* 71 */	
+    {    "Hf", 	    1.44f, 	},	/* 72 */	
+    {    "Ta", 	    1.34f, 	},	/* 73 */	
+    {    "W", 	    1.30f, 	},	/* 74 */	
+    {    "Re", 	    1.28f, 	},	/* 75 */	
+    {    "Os", 	    1.26f, 	},	/* 76 */	
+    {    "Ir", 	    1.27f, 	},	/* 77 */	
+    {    "Pt", 	    1.30f, 	},	/* 78 */	
+    {    "Au", 	    1.34f, 	},	/* 79 */	
+    {    "Hg", 	    1.49f, 	},	/* 80 */	
+    {    "Tl", 	    1.48f, 	},	/* 81 */	
+    {    "Pb", 	    1.47f, 	},	/* 82 */	
+    {    "Bi", 	    1.46f, 	},	/* 83 */	
+    {    "Po", 	    1.46f, 	},	/* 84 */	
+    {    "At", 	    1.45f, 	},	/* 85 */	
+    {    "Rn", 	    1.50f, 	},	/* 86 */	
+    {    "Fr", 	    2.60f, 	},	/* 87 */	
+    {    "Ra", 	    2.21f, 	},	/* 88 */	
+    {    "Ac", 	    2.15f, 	},	/* 89 */	
+    {    "Th", 	    2.06f, 	},	/* 90 */	
+    {    "Pa", 	    2.00f, 	},	/* 91 */	
+    {    "U", 	    1.96f, 	},	/* 92 */	
+    {    "Np", 	    1.90f, 	},	/* 93 */	
+    {    "Pu", 	    1.87f, 	},	/* 94 */	
+    {    "Am", 	    1.80f, 	},	/* 95 */	
+    {    "Cm", 	    1.69f, 	},	/* 96 */	
+    {    "Bk", 	    0.1f, 	},	/* 97 */	
+    {    "Cf", 	    0.1f, 	},	/* 98 */	
+    {    "Es", 	    0.1f, 	},	/* 99 */	
+    {    "Fm", 	    0.1f, 	},	/* 100 */	
+    {    "Md", 	    0.1f, 	},	/* 101 */	
+    {    "No", 	    0.1f, 	},	/* 102 */	
+    {    "Lr", 	    0.1f, 	},	/* 103 */	
+    {    "Rf", 	    0.1f, 	},	/* 104 */	
+    {    "Db", 	    0.1f, 	},	/* 105 */	
+    {    "Sg", 	    0.1f, 	},	/* 106 */	
+    {    "Bh", 	    0.1f, 	},	/* 107 */	
+    {    "Hs", 	    0.1f, 	},	/* 108 */	
+    {    "Mt", 	    0.1f, 	},	/* 109 */	
+    {    "Ds",	    0.1f, 	},	/* 110 */	
+    {    "Rg",	    0.1f, 	},	/* 111 */	
+    {    "Cn",	    0.1f, 	},	/* 112 */	
+    {    "Uut",	    0.1f, 	},	/* 113 */	
+    {    "Fl",	    0.1f, 	},	/* 114 */	
+    {    "Uup",	    0.1f, 	},	/* 115 */	
+    {    "Lv", 	    0.1f, 	},	/* 116 */	
+    {    "Uus",	    0.1f, 	},	/* 117 */	
+    {    "Uuo",     0.1f,	}	/* 118 */	
+};
+
+static int numPeriodicElements = sizeof(elements) / sizeof(PeriodicElement);
+
+static int lineNum = 0;
+
+static const char *
+Itoa(int number) 
+{
+    static char buf[200];
+    sprintf(buf, "%d", number);
+    return buf;
+}
+
+static void
+ComputeBonds(Tcl_HashTable *atomTablePtr, Tcl_HashTable *conectTablePtr)
+{
+    PdbAtom **array;
+    int i;
+    Tcl_HashEntry *hPtr;
+    Tcl_HashSearch iter;
+
+#define TOLERANCE 0.45			/* Fuzz factor for comparing distances
+					 * (in angstroms) */
+    array = calloc(atomTablePtr->numEntries, sizeof(PdbAtom *));
+    if (array == NULL) {
+	return;
+    }
+    for (i = 0, hPtr = Tcl_FirstHashEntry(atomTablePtr, &iter); hPtr != NULL;
+	 hPtr = Tcl_NextHashEntry(&iter), i++) {
+	PdbAtom *atomPtr = Tcl_GetHashValue(hPtr);
+	array[i] = atomPtr;
+    }
+    for (i = 0; i < atomTablePtr->numEntries; i++) {
+	PdbAtom *atom1Ptr;
+	double r1;
+	int j;
+
+	atom1Ptr = array[i];
+        r1 = elements[atom1Ptr->number].radius;
+        for (j = i+1; j < atomTablePtr->numEntries; j++) {
+	    PdbAtom *atom2Ptr;
+            double ds2, cut;
+	    double r2;
+
+	    atom2Ptr  = array[j];
+            if ((atom2Ptr->number == 1) && (atom1Ptr->number == 1)) {
+                continue;
+	    }
+	    r2 = elements[atom2Ptr->number].radius;
+	    cut = (r1 + r2 + TOLERANCE);
+	    ds2 = (((atom1Ptr->x - atom2Ptr->x) * (atom1Ptr->x - atom2Ptr->x)) +
+		   ((atom1Ptr->y - atom2Ptr->y) * (atom1Ptr->y - atom2Ptr->y)) +
+		   ((atom1Ptr->z - atom2Ptr->z) * (atom1Ptr->z - atom2Ptr->z)));
+
+	    // perform distance test, but ignore pairs between atoms
+	    // with nearly identical coords
+	    if (ds2 < 0.16) {
+		continue;
+	    }
+	    if (ds2 < (cut*cut)) {
+		ConnectKey key;
+		int isNew;
+
+		if (atom1Ptr->ordinal > atom2Ptr->ordinal) {
+		    key.from = atom2Ptr->ordinal;
+		    key.to = atom1Ptr->ordinal;
+		} else {
+		    key.from = atom1Ptr->ordinal;
+		    key.to = atom2Ptr->ordinal;
+		}
+		Tcl_CreateHashEntry(conectTablePtr, (char *)&key, &isNew);
+		if (isNew) {
+		    atom1Ptr->numConnections++;
+		    atom2Ptr->numConnections++;
+		}
+            }
+        }
+    }
+    free(array);
+}
+
+int 
+GetAtomicNumber(Tcl_Interp *interp, PdbAtom *atomPtr, const char *atomName, 
+		const char *symbolName, const char *residueName)
+{
+    char name[5], *namePtr;
+    int elemIndex, symbolIndex;
+    int count;
+    const char *p;
+
+    symbolIndex = elemIndex = -1;
+
+    /* 
+     * The atomic symbol may be found the atom name in various locations
+     *	"C   "
+     *  " C  "
+     *  "  C "
+     "  "   C"
+     "  "C 12"
+     "  " C12"
+     */
+    count = 0;
+    for (p = atomName; *p != '\0'; p++) {
+	if (isspace(*p) || isdigit(*p)) {
+	    continue;
+	}
+	name[count] = *p;
+	count++;
+    }
+    name[count] = '\0';
+    if (count > 0) {
+	int i;
+
+	namePtr = name;
+	if (name[0] == ' ') {
+	    namePtr++;
+	}
+	if (name[1] == ' ') {
+	    name[1] = '\0';
+	}
+	for (i = 0; i < numPeriodicElements; i++) {
+	    if (strcasecmp(namePtr, elements[i].symbol) == 0) {
+		elemIndex = i;
+		break;
+	    }
+	}
+	if ((elemIndex == -1) && (count > 1)) {
+	    name[1] = '\0';
+	    for (i = 0; i < numPeriodicElements; i++) {
+		if (strcasecmp(namePtr, elements[i].symbol) == 0) {
+		    elemIndex = i;
+		    break;
+		}
+	    }
+	}
+    }
+    name[0] = symbolName[0];
+    name[1] = symbolName[1];
+    name[2] = '\0';
+    if (isdigit(name[1])) {
+	sscanf(name, "%d", &atomPtr->number);
+	return TCL_OK;
+    }
+    if ((name[0] != ' ') || (name[1] != ' ')) {
+	int i;
+
+	namePtr = name;
+	if (name[0] == ' ') {
+	    namePtr++;
+	}
+	if (name[1] == ' ') {
+	    name[1] = '\0';
+	}
+	for (i = 0; i < numPeriodicElements; i++) {
+	    if (strcasecmp(namePtr, elements[i].symbol) == 0) {
+		symbolIndex = i;
+		break;
+	    }
+	}
+    }
+    if (symbolIndex > 0) {
+	if (elemIndex < 0) {
+	    atomPtr->number = symbolIndex;
+	    return TCL_OK;
+	}
+	if (symbolIndex != elemIndex) {
+	    fprintf(stderr, "atomName %s and symbolName %s don't match\n",
+		    atomName, symbolName);
+	    atomPtr->number = symbolIndex;
+	    return TCL_OK;
+	}
+	atomPtr->number = elemIndex;
+	return TCL_OK;
+    } else if (elemIndex > 0) {
+	atomPtr->number = elemIndex;
+	return TCL_OK;
+    }
+    Tcl_AppendResult(interp, "line ", Itoa(lineNum), ": bad atom \"", 
+		     atomName, "\" or element \"", 
+		     symbolName, "\"", (char *)NULL);
+    return TCL_ERROR;
+}
+
+static PdbAtom *
+NewAtom(Tcl_Interp *interp, int ordinal, const char *line, int lineLength)
+{
+    PdbAtom *atomPtr;
+    char buf[200];
+    char atomName[6];			/* Atom name.  */
+    char symbolName[3];			/* Symbol name.  */
+    char residueName[4];		/* Residue name. */
+    double value;
+
+    atomPtr = calloc(1, sizeof(PdbAtom));
+    if (atomPtr == NULL) {
+	return NULL;
+    }
+    atomPtr->ordinal = ordinal;
+    strncpy(atomName, line + 12, 4);
+    atomName[4] = '\0';
+    strncpy(residueName, line + 17, 3);
+    residueName[3] = '\0';
+
+    strncpy(buf, line + 30, 8);
+    buf[8] = '\0';
+    if (Tcl_GetDouble(interp, buf, &value) != TCL_OK) {
+	Tcl_AppendResult(interp, "bad x-coordinate \"", buf,
+			 "\"", (char *)NULL);
+	return NULL;
+    }
+    atomPtr->x = value;
+    strncpy(buf, line + 38, 8);
+    buf[8] = '\0';
+    if (Tcl_GetDouble(interp, buf, &value) != TCL_OK) {
+	Tcl_AppendResult(interp, "bad y-coordinate \"", buf,
+			 "\"", (char *)NULL);
+	return NULL;
+    }
+    atomPtr->y = value;
+    strncpy(buf, line + 46, 8);
+    buf[8] = '\0';
+    if (Tcl_GetDouble(interp, buf, &value) != TCL_OK) {
+	Tcl_AppendResult(interp, "bad z-coordinate \"", buf,
+			 "\"", (char *)NULL);
+	return NULL;
+    }
+    atomPtr->z = value;
+    symbolName[2] = symbolName[1]  = symbolName[0] = '\0';
+    if (lineLength >= 77) {
+	symbolName[0] = line[76];
+	symbolName[1] = line[77];
+	symbolName[2] = '\0';
+    }
+    if (GetAtomicNumber(interp, atomPtr, atomName, symbolName, residueName) 
+	!= TCL_OK) {
+	return NULL;
+    }
+    return atomPtr;
+}
+
+static void
+FreeAtoms(Tcl_HashTable *tablePtr)
+{
+    Tcl_HashEntry *hPtr;
+    Tcl_HashSearch iter;
+
+    for (hPtr = Tcl_FirstHashEntry(tablePtr, &iter); hPtr != NULL;
+	 hPtr = Tcl_NextHashEntry(&iter)) {
+	PdbAtom *atomPtr;
+	
+	atomPtr = Tcl_GetHashValue(hPtr);
+	free(atomPtr);
+    }
+    Tcl_DeleteHashTable(tablePtr);
+}
+
+
+static INLINE const char *
+SkipSpaces(const char *string) 
+{
+    while (isspace(*string)) {
+	string++;
+    }
+    return string;
+}
+
+static int
+IsSpaces(const char *string) 
+{
+    const char *p;
+    for (p = string; *p != '\0'; p++) {
+	if (!isspace(*p)) {
+	    return 0;
+	}
+    }
+    return 1;
+}
+
+static INLINE const char *
+GetLine(const char **stringPtr, const char *endPtr, int *lengthPtr) 
+{
+    const char *line;
+    const char *p;
+
+    line = SkipSpaces(*stringPtr);
+    for (p = line; p < endPtr; p++) {
+	if (*p == '\n') {
+	    *stringPtr = p + 1;
+	    *lengthPtr = p - line;
+	    return line;
+	}
+    }
+    *lengthPtr = (p - line) - 1;
+    *stringPtr = p;
+    return line;
+}
+
+
+static int 
+SerialToAtom(Tcl_Interp *interp, Tcl_HashTable *tablePtr, const char *string,
+             PdbAtom **atomPtrPtr)
+{
+    int serial;
+    long lserial;
+    Tcl_HashEntry *hPtr;
+
+    string = SkipSpaces(string);
+    if (Tcl_GetInt(interp, string, &serial) != TCL_OK) {
+	Tcl_AppendResult(interp, ": line ", Itoa(lineNum), 
+		": invalid serial number \"", string, 
+		"\" in CONECT record", (char *)NULL);
+	return TCL_ERROR;
+    }
+    lserial = (long)serial;
+    hPtr = Tcl_FindHashEntry(tablePtr, (char *)lserial);
+    if (hPtr == NULL) {
+	Tcl_AppendResult(interp, "serial number \"", string, 
+			 "\" not found in table", (char *)NULL);
+	return TCL_ERROR;
+    }
+    *atomPtrPtr = Tcl_GetHashValue(hPtr);
+    return TCL_OK;
+}
+
+/* 
+ *  PdbToVtk string ?-bonds none|both|auto|conect?
+ */
+static int
+PdbToVtkCmd(ClientData clientData, Tcl_Interp *interp, int objc, 
+	   Tcl_Obj *const *objv) 
+{
+    Tcl_Obj *objPtr, *pointsObjPtr, *atomsObjPtr;
+    const char *p, *pend;
+    const char *string;
+    char mesg[2000];
+    int length, nextOrdinal;
+    Tcl_HashTable atomTable, conectTable;
+    Tcl_HashEntry *hPtr;
+    Tcl_HashSearch iter;
+    int isNew;
+    int bondFlags;
+
+    bondFlags = BOND_BOTH;
+    lineNum = nextOrdinal = 0;
+    if ((objc != 2) && (objc != 4)) {
+	Tcl_AppendResult(interp, "wrong # arguments: should be \"",
+		Tcl_GetString(objv[0]), 
+		" string ?-bonds none|both|auto|conect\"", (char *)NULL);
+	return TCL_ERROR;
+    }
+    if (objc == 4) {
+	const char *string;
+	char c;
+
+	string = Tcl_GetString(objv[2]);
+	if ((string[0] != '-') || (strcmp(string, "-bonds") != 0)) {
+	    Tcl_AppendResult(interp, "bad switch \"", string, 
+			     "\": should be \"-bonds\"", (char *)NULL);
+	    return TCL_ERROR;
+	}
+	string = Tcl_GetString(objv[3]);
+	c = string[0];
+	if ((c == 'n') && (strcmp(string, "none") == 0)) {
+	    bondFlags = BOND_NONE;
+	} else if ((c == 'b') && (strcmp(string, "both") == 0)) {
+	    bondFlags = BOND_BOTH;
+	} else if ((c == 'a') && (strcmp(string, "auto") == 0)) {
+	    bondFlags = BOND_COMPUTE;
+	} else if ((c == 'c') && (strcmp(string, "conect") == 0)) {
+	    bondFlags = BOND_CONECT;
+	} else {
+	    Tcl_AppendResult(interp, "bad value \"", string, 
+		"\" for -bonds switch: should be none, both, manual, or auto",
+		(char *)NULL);
+	    return TCL_ERROR;
+	}
+    }
+    Tcl_InitHashTable(&atomTable, TCL_ONE_WORD_KEYS);
+    Tcl_InitHashTable(&conectTable, sizeof(ConnectKey) / sizeof(int));
+    string = Tcl_GetStringFromObj(objv[1], &length);
+    pointsObjPtr = Tcl_NewStringObj("", -1);
+    atomsObjPtr = Tcl_NewStringObj("", -1);
+    Tcl_IncrRefCount(pointsObjPtr);
+    Tcl_IncrRefCount(atomsObjPtr);
+    objPtr = NULL;
+    for (p = string, pend = p + length; p < pend; /*empty*/) {
+	const char *line;
+	char c;
+	int lineLength;
+
+	lineLength = 0;			/* Suppress compiler warning. */
+	lineNum++;
+	line = GetLine(&p, pend, &lineLength);
+        if (line >= pend) {
+	    break;			/* EOF */
+	}
+        if ((line[0] == '#') || (line[0] == '\n')) {
+	    continue;			/* Skip blank or comment lines. */
+	}
+	c = line[0];
+	if (((c == 'A') && (strncmp(line, "ATOM  ", 6) == 0)) ||
+	    ((c == 'H') && (strncmp(line, "HETATM", 6) == 0))) {
+	    char buf[200];
+	    int serialNum;
+	    long lserial;
+	    PdbAtom *atomPtr;
+
+	    if (lineLength < 47) {
+		char *msg;
+
+		msg = (char *)line;
+		msg[lineLength] = '\0';
+		Tcl_AppendResult(interp, "line ", Itoa(lineNum), 
+			" short ATOM line \"", line, "\"", (char *)NULL);
+		return TCL_ERROR;
+	    }		
+	    strncpy(buf, line + 6, 5);
+	    buf[5] = '\0';
+	    if (Tcl_GetInt(interp, buf, &serialNum) != TCL_OK) {
+		Tcl_AppendResult(interp, "line ", Itoa(lineNum), 
+			": bad serial number \"", buf, "\"", (char *)NULL);
+		goto error;
+	    }
+	    lserial = (long)serialNum;
+	    hPtr = Tcl_CreateHashEntry(&atomTable, (char *)lserial, &isNew);
+	    if (!isNew) {
+		Tcl_AppendResult(interp, "line ", Itoa(lineNum), 
+			": serial number \"", buf, "\" found more than once", 
+			(char *)NULL);
+		goto error;
+	    }
+	    atomPtr = NewAtom(interp, nextOrdinal, line, lineLength);
+	    if (atomPtr == NULL) {
+		goto error;
+	    }
+	    Tcl_SetHashValue(hPtr, atomPtr);
+	    Tcl_ListObjAppendElement(interp, pointsObjPtr, 
+				     Tcl_NewDoubleObj(atomPtr->x));
+	    Tcl_ListObjAppendElement(interp, pointsObjPtr, 
+				     Tcl_NewDoubleObj(atomPtr->y));
+	    Tcl_ListObjAppendElement(interp, pointsObjPtr, 
+				     Tcl_NewDoubleObj(atomPtr->z));
+	    Tcl_ListObjAppendElement(interp, atomsObjPtr, 
+				     Tcl_NewIntObj(atomPtr->number));
+	    nextOrdinal++;
+	} else if ((c == 'C') && (strncmp(line, "CONECT", 6) == 0)) {
+	    PdbAtom *atom1Ptr;
+	    int i, n;
+	    char buf[200];
+
+	    if ((bondFlags & BOND_CONECT) == 0) {
+		continue;
+	    }
+	    strncpy(buf, line + 6, 5);
+	    buf[5] = '\0';
+	    if (lineLength < 11) {
+		char *msg;
+
+		msg = (char *)line;
+		msg[lineLength] = '\0';
+		Tcl_AppendResult(interp, "line ", Itoa(lineNum), 
+			": bad CONECT record \"", msg, "\"",
+			(char *)NULL);
+		goto error;
+	    }
+	    if (SerialToAtom(interp, &atomTable, buf, &atom1Ptr) != TCL_OK) {
+		goto error;
+	    }
+	    /* Allow basic maximum of 4 connections. */
+	    for (n = 11, i = 0; i < 4; i++, n += 5) {
+		ConnectKey key;
+		PdbAtom *atom2Ptr;
+
+		if (n >= lineLength) {
+		    break;		
+		}
+		strncpy(buf, line + n, 5);
+		buf[5] = '\0';
+		if (IsSpaces(buf)) {
+		    break;		/* No more entries */
+		}
+		if (SerialToAtom(interp, &atomTable, buf, &atom2Ptr) !=TCL_OK) {
+		    goto error;
+		}
+		if (atom1Ptr->ordinal > atom2Ptr->ordinal) {
+		    key.from = atom2Ptr->ordinal;
+		    key.to = atom1Ptr->ordinal;
+		} else {
+		    key.from = atom1Ptr->ordinal;
+		    key.to = atom2Ptr->ordinal;
+		}
+		Tcl_CreateHashEntry(&conectTable, (char *)&key, &isNew);
+		if (isNew) {
+		    atom1Ptr->numConnections++;
+		    atom2Ptr->numConnections++;
+		}
+	    }
+	}
+    }
+    if (bondFlags & BOND_COMPUTE) {
+	ComputeBonds(&atomTable, &conectTable);
+    }
+    objPtr = Tcl_NewStringObj("# vtk DataFile Version 2.0\n", -1);
+    Tcl_AppendToObj(objPtr, "Converted from PDB format\n", -1);
+    Tcl_AppendToObj(objPtr, "ASCII\n", -1);
+    Tcl_AppendToObj(objPtr, "DATASET POLYDATA\n", -1);
+    sprintf(mesg, "POINTS %d float\n", atomTable.numEntries);
+    Tcl_AppendToObj(objPtr, mesg, -1);
+    Tcl_AppendObjToObj(objPtr, pointsObjPtr);
+    sprintf(mesg, "\n");
+    Tcl_AppendToObj(objPtr, mesg, -1);
+
+    if (conectTable.numEntries > 0) {
+	sprintf(mesg, "LINES %d %d\n", conectTable.numEntries, 
+		conectTable.numEntries * 3);
+	Tcl_AppendToObj(objPtr, mesg, -1);
+	for (hPtr = Tcl_FirstHashEntry(&conectTable, &iter); hPtr != NULL;
+	     hPtr = Tcl_NextHashEntry(&iter)) {
+	    ConnectKey *keyPtr;
+
+	    keyPtr = (ConnectKey *)Tcl_GetHashKey(&conectTable, hPtr);
+	    sprintf(mesg, "2 %d %d\n", keyPtr->from, keyPtr->to);
+	    Tcl_AppendToObj(objPtr, mesg, -1);
+	}
+	sprintf(mesg, "\n");
+	Tcl_AppendToObj(objPtr, mesg, -1);
+    }
+#if 0
+    for (hPtr = Tcl_FirstHashEntry(&atomTable, &iter); hPtr != NULL;
+	 hPtr = Tcl_NextHashEntry(&iter)) {
+	PdbAtom *atomPtr = Tcl_GetHashValue(hPtr);
+	fprintf(stderr, "%d %s %d connections\n", atomPtr->ordinal,
+		elements[atomPtr->number].symbol, atomPtr->numConnections);
+    }
+#endif
+    sprintf(mesg, "POINT_DATA %d\n", atomTable.numEntries);
+    Tcl_AppendToObj(objPtr, mesg, -1);
+    sprintf(mesg, "SCALARS element int\n");
+    Tcl_AppendToObj(objPtr, mesg, -1);
+    sprintf(mesg, "LOOKUP_TABLE default\n");
+    Tcl_AppendToObj(objPtr, mesg, -1);
+    Tcl_AppendObjToObj(objPtr, atomsObjPtr);
+    FreeAtoms(&atomTable);
+    Tcl_DeleteHashTable(&conectTable);
+    Tcl_DecrRefCount(pointsObjPtr);
+    Tcl_DecrRefCount(atomsObjPtr);
+    if (objPtr != NULL) {
+	Tcl_SetObjResult(interp, objPtr);
+    }
+    return TCL_OK;
+ error:
+    Tcl_DeleteHashTable(&conectTable);
+    FreeAtoms(&atomTable);
+    Tcl_DecrRefCount(pointsObjPtr);
+    Tcl_DecrRefCount(atomsObjPtr);
+    return TCL_ERROR;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpPdbToVtk_Init --
+ *
+ *  Invoked when the Rappture GUI library is being initialized
+ *  to install the "PdbToVtk" command into the interpreter.
+ *
+ *  Returns TCL_OK if successful, or TCL_ERROR (along with an error
+ *  message in the interp) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+int
+RpPdbToVtk_Init(Tcl_Interp *interp)
+{
+    /* install the widget command */
+    Tcl_CreateObjCommand(interp, "Rappture::PdbToVtk", PdbToVtkCmd,
+        NULL, NULL);
+    return TCL_OK;
+}
Index: /tags/1.6.0/gui/src/RpReadPoints.c
===================================================================
--- /tags/1.6.0/gui/src/RpReadPoints.c	(revision 6168)
+++ /tags/1.6.0/gui/src/RpReadPoints.c	(revision 6168)
@@ -0,0 +1,185 @@
+
+/* 
+ * ----------------------------------------------------------------------
+ *  RpReadPoints - 
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <math.h>
+#include <limits.h>
+#include <errno.h>
+#include <float.h>
+#include "tcl.h"
+
+#define UCHAR(c) ((unsigned char) (c))
+
+static INLINE const char *
+SkipSpaces(const char *s, const char *endPtr) 
+{
+    while ((s < endPtr) && ((*s == ' ') || (*s == '\t'))) {
+	s++;
+    }
+    return s;
+}
+
+static INLINE const char *
+GetLine(Tcl_DString *dsPtr, const char *s, const char *endPtr) 
+{
+    const char *line, *p;
+    Tcl_DStringSetLength(dsPtr, 0);
+    line = SkipSpaces(s, endPtr);
+    for (p = line; p < endPtr; p++) {
+	if (*p == '\n') {
+	    if (p == line) {
+		line++;
+		continue;
+	    }
+	    Tcl_DStringAppend(dsPtr, line, p - line);
+	    return p + 1;
+	}
+    }
+    Tcl_DStringAppend(dsPtr, line, p - line);
+    return p;
+}
+
+int
+GetDouble(Tcl_Interp *interp, const char *s, double *valuePtr)
+{
+    char *end;
+    double d;
+    
+    errno = 0;
+    d = strtod(s, &end); /* INTL: TCL source. */
+    if (end == s) {
+	badDouble:
+        if (interp != (Tcl_Interp *) NULL) {
+            Tcl_AppendResult(interp,
+		"expected floating-point number but got \"", s, "\"", 
+		(char *) NULL);
+        }
+	return TCL_ERROR;
+    }
+    if (errno != 0 && (d == HUGE_VAL || d == -HUGE_VAL || d == 0)) {
+        if (interp != (Tcl_Interp *) NULL) {
+	    char msg[64 + TCL_INTEGER_SPACE];
+	
+	    sprintf(msg, "unknown floating-point error, errno = %d", errno);
+	    Tcl_AppendToObj(Tcl_GetObjResult(interp), msg, -1);
+	    Tcl_SetErrorCode(interp, "ARITH", "UNKNOWN", msg, (char *) NULL);
+        }
+	return TCL_ERROR;
+    }
+    while ((*end != 0) && isspace(UCHAR(*end))) { /* INTL: ISO space. */
+	end++;
+    }
+    if (*end != 0) {
+	goto badDouble;
+    }
+    *valuePtr = d;
+    return TCL_OK;
+}
+
+/* 
+ *  ReadPoints string dimVar pointsVar
+ */
+static int
+ReadPoints(ClientData clientData, Tcl_Interp *interp, int objc,
+	   Tcl_Obj *const *objv) 
+{
+    Tcl_Obj *listObjPtr;
+    const char *p, *pend;
+    const char *string;
+    int count, length, dim;
+    Tcl_DString ds;
+
+    if (objc != 4) {
+	Tcl_AppendResult(interp, "wrong # arguments: should be \"",
+		Tcl_GetString(objv[0]), " string dimVar pointsVar\"", 
+		(char *)NULL);
+	return TCL_ERROR;
+    }
+    dim = 0;
+    string = Tcl_GetStringFromObj(objv[1], &length);
+    count = 0;
+    Tcl_DStringInit(&ds);
+    listObjPtr = Tcl_NewListObj(0, (Tcl_Obj **)NULL);
+    for (p = string, pend = p + length; p < pend; /*empty*/) {
+	int i, argc;
+	const char **argv;
+	int result;
+
+	p = GetLine(&ds, p, pend);
+	if (Tcl_DStringLength(&ds) == 0) {
+	    break;			/* EOF */
+	}
+	result = Tcl_SplitList(interp, Tcl_DStringValue(&ds), &argc, &argv);
+	if (result != TCL_OK) {
+	    goto error;
+	}
+	if (argc == 0) {
+	    Tcl_Free((char *)argv);
+	    goto error;
+	}
+	if (dim == 0) {
+	    dim = argc;
+	}
+	if (dim != argc) {
+	    Tcl_AppendResult(interp, "wrong # of elements on line", (char *)NULL);
+	    Tcl_Free((char *)argv);
+	    goto error;
+	}
+	for (i = 0; i < argc; i++) {
+	    double d;
+
+	    if (GetDouble(interp, argv[i], &d) != TCL_OK) {
+		Tcl_Free((char *)argv);
+		goto error;
+	    }
+	    Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewDoubleObj(d));
+	    count++;
+	}
+	Tcl_Free((char *)argv);
+    }
+    Tcl_DStringFree(&ds);
+    if (Tcl_ObjSetVar2(interp, objv[2], NULL, Tcl_NewIntObj(dim),
+		      TCL_LEAVE_ERR_MSG) == NULL) {
+	return TCL_ERROR;
+    }
+    if (Tcl_ObjSetVar2(interp, objv[3], NULL, listObjPtr, 
+		      TCL_LEAVE_ERR_MSG) == NULL) {
+	return TCL_ERROR;
+    }
+    return TCL_OK;
+ error:
+    Tcl_DStringFree(&ds);
+    return TCL_ERROR;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpReadPoints_Init --
+ *
+ *  Invoked when the Rappture GUI library is being initialized
+ *  to install the "ConvertDxToVtk" command into the interpreter.
+ *
+ *  Returns TCL_OK if successful, or TCL_ERROR (along with an error
+ *  message in the interp) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+int
+RpReadPoints_Init(Tcl_Interp *interp)
+{
+    /* install the widget command */
+    Tcl_CreateObjCommand(interp, "Rappture::ReadPoints", ReadPoints,
+        NULL, NULL);
+    return TCL_OK;
+}
Index: /tags/1.6.0/gui/src/RpSqueezer.c
===================================================================
--- /tags/1.6.0/gui/src/RpSqueezer.c	(revision 6168)
+++ /tags/1.6.0/gui/src/RpSqueezer.c	(revision 6168)
@@ -0,0 +1,207 @@
+/*
+ * ----------------------------------------------------------------------
+ *  RpSqueezer - image distortion for "cover flow" effect.
+ *
+ *  Modifies a Tk image to squeeze one side or the other and perhaps
+ *  foreshorten the image.
+ *
+ *    squeezer ?options...? <original> <newImage>
+ *        -side left|right     << which side to squeeze
+ *        -amount <fraction>   << squeeze down to this size (0-1)
+ *        -shorten <fraction>  << squeeze horizontally to this size (0-1)
+ *        -shadow <fraction>   << apply shadow horizontally (strength 0-1)
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <string.h>
+#include <math.h>
+#include "tk.h"
+
+/*
+ * Forward declarations.
+ */
+static int RpSqueezerCmd _ANSI_ARGS_((ClientData clientData,
+    Tcl_Interp *interp, int argc, CONST char **argv));
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpSqueezer_Init --
+ *
+ *  Installs the "squeezer" command in a Tcl interpreter.
+ *
+ *  Returns TCL_OK if successful, or TCL_ERROR (along with an error
+ *  message in the interp) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+int
+RpSqueezer_Init(interp)
+    Tcl_Interp *interp;         /* interpreter being initialized */
+{
+    /* install the widget command */
+    Tcl_CreateCommand(interp, "squeezer", RpSqueezerCmd,
+        NULL, NULL);
+
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * RpSqueezerCmd()
+ *
+ * Called to handle the "squeezer" command.  Returns TCL_OK on success
+ * and TCL_ERROR otherwise.
+ * ----------------------------------------------------------------------
+ */
+static int
+RpSqueezerCmd(clientData, interp, argc, argv)
+    ClientData clientData;        /* not used */
+    Tcl_Interp *interp;           /* current interpreter */
+    int argc;                     /* number of command arguments */
+    CONST char **argv;            /* command argument strings */
+{
+    int sideRight = 1;
+    double amount = 0.8;
+    double shorten = 0.7;
+    double shadow = 0.0;
+
+    int i, j, j0, j1, p, srcw, srch, destw, desth, nbytes;
+    int srci, srcj, rval, gval, bval, aval;
+    double shfac;
+    Tk_PhotoHandle srcPhoto, destPhoto;
+    Tk_PhotoImageBlock srcBlock, destBlock;
+    unsigned char* pixelPtr;
+
+   /* parse command line options */
+    i = 1;
+    while (i < argc) {
+        if (*argv[i] != '-') {
+            break;
+        }
+        if (i+1 >= argc) {
+            Tcl_AppendResult(interp, "missing value for option \"",
+                argv[i], "\"", (char*)NULL);
+            return TCL_ERROR;
+        }
+
+        if (strcmp(argv[i],"-side") == 0) {
+            if (strcmp(argv[i+1],"left") == 0) {
+                sideRight = 0;
+            } else if (strcmp(argv[i+1],"right") == 0) {
+                sideRight = 1;
+            } else {
+                Tcl_AppendResult(interp, "bad value \"",
+                    argv[i+1], "\": should be left or right", (char*)NULL);
+                return TCL_ERROR;
+            }
+        }
+        else if (strcmp(argv[i],"-amount") == 0) {
+            if (Tcl_GetDouble(interp, argv[i+1], &amount) != TCL_OK) {
+                return TCL_ERROR;
+            }
+        }
+        else if (strcmp(argv[i],"-shorten") == 0) {
+            if (Tcl_GetDouble(interp, argv[i+1], &shorten) != TCL_OK) {
+                return TCL_ERROR;
+            }
+        }
+        else if (strcmp(argv[i],"-shadow") == 0) {
+            if (Tcl_GetDouble(interp, argv[i+1], &shadow) != TCL_OK) {
+                return TCL_ERROR;
+            }
+        }
+        else {
+            Tcl_AppendResult(interp, "bad option \"", argv[i],
+                "\": should be -side, -amount, -shorten, -shadow",
+                (char*)NULL);
+            return TCL_ERROR;
+        }
+
+        i += 2;
+    }
+
+    if (i+2 != argc) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"",
+            argv[0], " ?options? origImg newImg\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    /* get the last two args... source and destination images */
+    srcPhoto = Tk_FindPhoto(interp, argv[i]);
+    if (srcPhoto == NULL) {
+        Tcl_AppendResult(interp, "image \"", argv[i], "doesn't exist",
+            " or isn't a photo image", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    destPhoto = Tk_FindPhoto(interp, argv[i+1]);
+    if (destPhoto == NULL) {
+        Tcl_AppendResult(interp, "image \"", argv[i+1], "doesn't exist",
+            " or isn't a photo image", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    /*
+     * Update the destination image to the proper size.
+     */
+    Tk_PhotoGetSize(srcPhoto, &srcw, &srch);
+    destw = round(srcw * shorten);
+
+    /*
+     * Scan through each column along the width.  Compute the height
+     * of the shortened column and then compute the pixels along the
+     * height.
+     */
+    Tk_PhotoGetImage(srcPhoto, &srcBlock);
+
+    destBlock.width = destw;
+    destBlock.height = srch;
+    destBlock.pixelSize = 4;
+    destBlock.offset[0] = 0;
+    destBlock.offset[1] = 1;
+    destBlock.offset[2] = 2;
+    destBlock.offset[3] = 3;
+    destBlock.pitch = destBlock.pixelSize * destw;
+    nbytes = destBlock.pitch * srch;
+    destBlock.pixelPtr = (unsigned char*)ckalloc((unsigned)nbytes);
+    memset(destBlock.pixelPtr, 0, (size_t)nbytes);
+
+    for (p=0; p < destw; p++) {
+        i = (sideRight) ? p : destw-p-1;
+        desth = round(srch - srch*(1.0-amount)*p/(double)destw);
+        j0 = (srch-desth)/2;
+        j1 = j0 + desth;
+
+        /* strength of shadow */
+        shfac = 1.0 - shadow * p/(double)destw;
+
+        for (j=j0; j < j1; j++) {
+            srci = srcw * i/(double)destw;
+            srcj = srch * (j-j0)/(double)desth;
+            pixelPtr = srcBlock.pixelPtr + srcj*srcBlock.pitch 
+                + srci*srcBlock.pixelSize;
+            rval = *(pixelPtr+srcBlock.offset[0]);
+            gval = *(pixelPtr+srcBlock.offset[1]);
+            bval = *(pixelPtr+srcBlock.offset[2]);
+            aval = *(pixelPtr+srcBlock.offset[3]);
+
+            pixelPtr = destBlock.pixelPtr + j*destBlock.pitch 
+                + i*destBlock.pixelSize;
+            *(pixelPtr+0) = round(rval*shfac);
+            *(pixelPtr+1) = round(gval*shfac);
+            *(pixelPtr+2) = round(bval*shfac);
+            *(pixelPtr+3) = aval;
+        }
+    }
+    Tk_PhotoSetSize(destPhoto, destw, srch);
+    Tk_PhotoPutBlock(destPhoto, &destBlock, 0, 0,
+        destBlock.width, destBlock.height, TK_PHOTO_COMPOSITE_SET);
+
+    ckfree((char*)destBlock.pixelPtr);
+    return TCL_OK;
+}
Index: /tags/1.6.0/gui/test/all.tcl
===================================================================
--- /tags/1.6.0/gui/test/all.tcl	(revision 6168)
+++ /tags/1.6.0/gui/test/all.tcl	(revision 6168)
@@ -0,0 +1,26 @@
+# all.tcl --
+#
+# This file contains a top-level script to run all of the Tcl
+# tests.  Execute it by invoking "source all.test" when running tcltest
+# in this directory.
+#
+# Copyright (c) 1998-1999 by Scriptics Corporation.
+# Copyright (c) 2000 by Ajuba Solutions
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# 
+# RCS: @(#) $Id: all.tcl,v 1.16 2002/04/10 19:57:15 hobbs Exp $
+
+set tcltestVersion [package require tcltest]
+namespace import -force tcltest::*
+
+if {$tcl_platform(platform) == "macintosh"} {
+	tcltest::singleProcess 1
+}
+
+tcltest::configure -verbose bpstel
+tcltest::testsDirectory [file dir [info script]]
+tcltest::runAllTests
+
+return
Index: /tags/1.6.0/gui/test/gauge.test
===================================================================
--- /tags/1.6.0/gui/test/gauge.test	(revision 6168)
+++ /tags/1.6.0/gui/test/gauge.test	(revision 6168)
@@ -0,0 +1,100 @@
+# Commands covered:
+# Rappture::Gauge
+# Rappture::Gauge::value
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require RapptureGUI
+    namespace import -force ::tcltest::*
+}
+
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# value command
+#
+# value
+# value <newval>
+# value -check <newval>
+#----------------------------------------------------------
+test gauge.value.1 {value command, 0 args, default value is 0} \
+-setup {
+    set w [Rappture::Gauge .#auto]
+} -body  {
+    $w value
+} -cleanup {
+    destroy $w
+    catch {unset w}
+} -result {0}
+
+test gauge.value.2 {value command, 0 args, set value is returned} \
+-setup {
+    set w [Rappture::Gauge .#auto]
+    $w value 4
+} -body  {
+    $w value
+} -cleanup {
+    destroy $w
+    catch {unset w}
+} -result {4}
+
+test gauge.value.3 {value command, 1 args, set value, value is returned} \
+-setup {
+    set w [Rappture::Gauge .#auto]
+} -body  {
+    $w value 4
+} -cleanup {
+    destroy $w
+    catch {unset w}
+} -result {4}
+
+test gauge.value.4 {value command, just -check flag, error is returned} \
+-setup {
+    set w [Rappture::Gauge .#auto]
+} -body  {
+    $w value -check
+} -cleanup {
+    destroy $w
+    catch {unset w}
+} -returnCodes {
+    error
+} -result {wrong # args: should be "value ?-check? ?newval?"}
+
+test gauge.value.5 {value command, -check flag, orig value is unchanged} \
+-setup {
+    set w [Rappture::Gauge .#auto]
+    $w value 2
+} -body  {
+    $w value -check 4
+    $w value
+} -cleanup {
+    destroy $w
+    catch {unset w}
+} -result {2}
+
+test gauge.value.6 {value command, invalid flag, return error} \
+-setup {
+    set w [Rappture::Gauge .#auto]
+} -body  {
+    $w value -chcek
+} -cleanup {
+    destroy $w
+    catch {unset w}
+} -returnCodes {
+    error
+} -result {bad value "-chcek": should be a real number}
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/gui/test/vtkisosurfaceviewer.test
===================================================================
--- /tags/1.6.0/gui/test/vtkisosurfaceviewer.test	(revision 6168)
+++ /tags/1.6.0/gui/test/vtkisosurfaceviewer.test	(revision 6168)
@@ -0,0 +1,80 @@
+# Commands covered:
+# Rappture::VtkIsosurfaceViewer
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHORS:
+#   Derrick Kearney, Purdue University
+#   Leif Delgass, Purdue University
+# Copyright (c) 2004-2016  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    package require RapptureGUI
+    namespace import -force ::tcltest::*
+}
+
+Rappture::resources::load
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# constructor
+#
+# Rappture::VtkIsosurfaceViewer <name> <servers>
+#----------------------------------------------------------
+test vtkisosurfaceviewer.constructor.0 {
+    constructor, 0 args, auto named
+} -setup {
+} -body  {
+    Rappture::VtkIsosurfaceViewer .#auto
+} -cleanup {
+} -match glob \
+-result {.vtkIsosurfaceViewer*} \
+-errorOutput {connecting to *:2010...
+Render server is VtkVis * (build *)
+}
+
+test vtkisosurfaceviewer.constructor.1 {
+    constructor, 0 args, explicit name
+} -setup {
+} -body  {
+    Rappture::VtkIsosurfaceViewer .foo
+} -cleanup {
+} -match glob \
+-result {.foo} \
+-errorOutput {connecting to *:2010...
+Render server is VtkVis * (build *)
+}
+
+test vtkisosurfaceviewer.constructor.2 {
+    value command, auto name, -plotbackground option
+} -setup {
+} -body  {
+    Rappture::VtkIsosurfaceViewer .#auto -plotbackground red
+} -cleanup {
+} -match glob \
+-result {.vtkIsosurfaceViewer*} \
+-errorOutput {connecting to *:2010...
+Render server is VtkVis * (build *)
+}
+
+test vtkisosurfaceviewer.constructor.3 {
+    value command, bad option
+} -setup {
+} -body  {
+    Rappture::VtkIsosurfaceViewer .#auto -nonexistent foo
+} -cleanup {
+} -returnCodes {
+    error
+} -result {unknown option "-nonexistent"}
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/Makefile.in
===================================================================
--- /tags/1.6.0/lang/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/Makefile.in	(revision 6168)
@@ -0,0 +1,81 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+
+INSTALL         = @INSTALL@
+
+SHELL           = @SHELL@
+F77             = @F77@
+CC              = @CC@
+CXX             = @CXX@
+HAVE_RUBY_H     = @HAVE_RUBY_H@
+RUBY		= @RUBY@
+PERL            = @PERL@
+TCLSH           = @TCLSH@
+PYTHON          = @PYTHON_DISTUTILS@
+MEX             = @MEX@
+OCTAVE          = @OCTAVE_VERSION@
+JAVA_INC_DIR    = @JAVA_INC_DIR@
+R               = @R@
+
+# Rappture requires it. We always build a Tcl language API.
+LANGS = tcl
+
+ifneq ($(PERL),)
+  LANGS += perl
+endif
+ifeq ($(PYTHON),yes)
+  LANGS += python
+endif
+ifneq ($(RUBY),)
+  ifeq ($(HAVE_RUBY_H),yes)
+    LANGS += ruby
+  endif
+endif
+ifneq ($(MEX),)
+  LANGS += matlab
+endif
+ifneq ($(OCTAVE),)
+  LANGS += octave
+endif
+ifneq ($(JAVA_INC_DIR),)
+  LANGS += java
+endif
+ifneq ($(R),)
+  LANGS += R
+endif
+
+.PHONY:	all install test clean distclean $(LANGS)
+
+all:
+	make -C ../src install
+	for i in $(LANGS) ; do \
+	  $(MAKE) -C $$i all || exit 1 ;\
+	done
+
+install:
+	for i in $(LANGS) ; do \
+	  $(MAKE) -C $$i install || exit 1 ;\
+	done
+
+test:
+	for i in $(LANGS) ; do \
+	  $(MAKE) -C $$i test || exit 1 ;\
+	done
+
+clean:
+	for i in $(LANGS) ; do \
+	  $(MAKE) -C $$i clean ;\
+	done
+
+distclean:
+	for i in $(LANGS) ; do \
+	  $(MAKE) -C $$i distclean ;\
+	done
+	$(RM) Makefile *~
Index: /tags/1.6.0/lang/R/Makefile.in
===================================================================
--- /tags/1.6.0/lang/R/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/R/Makefile.in	(revision 6168)
@@ -0,0 +1,50 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+LN_S            = @LN_S@
+INSTALL_PROGRAM = ${INSTALL} -m 755
+INSTALL_DATA    = ${INSTALL} -m 644
+INSTALL_SCRIPT  = ${INSTALL} -m 644
+RM              = rm -f
+VPATH           = $(srcdir)
+
+R               = @R@
+
+coresrcdir      = `pwd`/$(srcdir)/../../src/core
+corelibdir      = `pwd`/../../src/core
+R_flags         = --configure-args='--with-rappture-include=$(includedir)  \
+                                    --with-rappture-lib=$(libdir)'
+
+RLIB            = R
+
+#	$(MKDIR_P) -m 0755 ${PWD}/build
+#	tar -C ${PWD}/build -clf - . | tar -C $(Rlib) -xpf -
+
+all: $(RLIB)
+
+$(RLIB): 
+	tar -C $(srcdir) -clf - Rappture | tar -xpf - 
+	$(MKDIR_P) -m 0755 $(RLIB)
+	$(R) CMD build Rappture
+	LD_LIBRARY_PATH=$(libdir) $(R) CMD INSTALL $(R_flags) --library=$(RLIB) Rappture
+
+install: $(RLIB)
+	$(RM) -rf $(libdir)/$(RLIB)
+	$(MKDIR_P) -m 0755 $(RLIB)
+	tar -clf - $(RLIB) | tar -C $(libdir) -xpf -  
+
+clean:
+	$(RM) -r $(RLIB)
+	$(RM) -rf Rappture Rappture_1.0.tar.gz
+
+distclean: clean
Index: /tags/1.6.0/lang/R/Rappture/DESCRIPTION
===================================================================
--- /tags/1.6.0/lang/R/Rappture/DESCRIPTION	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/DESCRIPTION	(revision 6168)
@@ -0,0 +1,9 @@
+Package: Rappture
+Type: Package
+Title: Rappture bindings for R
+Version: 1.0
+Date: 2011-11-09
+Author: Derrick Kearney
+Maintainer: <rappture@nanohub.org>
+Description: Rappture toolkit
+License: see http://rappture.org/wiki/LicenseTerms
Index: /tags/1.6.0/lang/R/Rappture/NAMESPACE
===================================================================
--- /tags/1.6.0/lang/R/Rappture/NAMESPACE	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/NAMESPACE	(revision 6168)
@@ -0,0 +1,16 @@
+useDynLib(Rappture)
+
+export( rp_lib,
+        rp_lib_get_string,
+        rp_lib_get_double,
+        rp_lib_get_integer,
+        rp_lib_get_boolean,
+        rp_lib_get_file,
+        rp_lib_put_string,
+        rp_lib_put_double,
+        rp_lib_put_file,
+        rp_lib_result,
+        rp_units_convert_double,
+        rp_units_convert_string,
+        rp_utils_progress )
+ 
Index: /tags/1.6.0/lang/R/Rappture/R/Rappture.R
===================================================================
--- /tags/1.6.0/lang/R/Rappture/R/Rappture.R	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/R/Rappture.R	(revision 6168)
@@ -0,0 +1,56 @@
+.packageName <- 'Rappture'
+
+rp_lib <- function(lib) {
+    .Call("RPRLib",lib)
+}
+
+rp_lib_get_string <- function(handle, path) {
+    .Call("RPRLibGetString",handle,path)
+}
+
+rp_lib_get_double <- function(handle, path) {
+    .Call("RPRLibGetDouble",handle,path)
+}
+
+rp_lib_get_integer <- function(handle, path) {
+    .Call("RPRLibGetInteger",handle,path)
+}
+
+rp_lib_get_boolean <- function(handle, path) {
+    .Call("RPRLibGetBoolean",handle,path)
+}
+
+rp_lib_get_file <- function(handle, path, fname) {
+    .Call("RPRLibGetFile",handle,path,fname)
+}
+
+rp_lib_put_string <- function(handle, path, value, append) {
+    .Call("RPRLibPutString",handle,path,value,append)
+}
+
+rp_lib_put_double <- function(handle, path, value, append) {
+    .Call("RPRLibPutDouble",handle,path,value,append)
+}
+
+rp_lib_put_file <- function(handle, path, fname, compress, append) {
+    .Call("RPRLibPutFile",handle,path,fname,compress,append)
+}
+
+rp_lib_result <- function(handle) {
+    .Call("RPRLibResult",handle)
+}
+
+rp_units_convert_double <- function(from,to) {
+    .Call("RPRUnitsConvertDouble",from,to)
+}
+
+rp_units_convert_string <- function(from,to,showUnits) {
+    .Call("RPRUnitsConvertString",from,to,showUnits)
+}
+
+rp_utils_progress <- function(percent,message) {
+    .Call("RPRUtilsProgress",percent,message)
+}
+
+.onLoad <- function(lib,pkg) {
+}
Index: /tags/1.6.0/lang/R/Rappture/configure
===================================================================
--- /tags/1.6.0/lang/R/Rappture/configure	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/configure	(revision 6168)
@@ -0,0 +1,4828 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for Rappture 1.0.
+#
+# Report bugs to <rappture@nanohub.org>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: rappture@nanohub.org about your system, including any
+$0: error possibly output before this message. Then install
+$0: a modern shell, or manually run the script under such a
+$0: shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='Rappture'
+PACKAGE_TARNAME='rappture'
+PACKAGE_VERSION='1.0'
+PACKAGE_STRING='Rappture 1.0'
+PACKAGE_BUGREPORT='rappture@nanohub.org'
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+RAPPTURE_CPPFLAGS
+EGREP
+GREP
+CPP
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_rappture_include
+with_rappture_lib
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures Rappture 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 \`..']
+
+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]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/rappture]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of Rappture 1.0:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-rappture-include=INCLUDE_PATH
+                          the location of Rappture header files
+  --with-rappture-lib=LIB_PATH
+                          the location of Rappture libraries
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+
+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 <rappture@nanohub.org>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+Rappture configure 1.0
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ----------------------------------- ##
+## Report this to rappture@nanohub.org ##
+## ----------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Rappture $as_me 1.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+# Check whether --with-rappture-include was given.
+if test "${with_rappture_include+set}" = set; then :
+  withval=$with_rappture_include; rappture_include_path=$withval
+fi
+
+RAPPTURE_CPPFLAGS="-I."
+if test  -n "$rappture_include_path"  ; then
+   RAPPTURE_CPPFLAGS="-I. -I${rappture_include_path}"
+else
+  if test  -n "${RAPPTURE_INCLUDE}"  ; then
+     RAPPTURE_CPPFLAGS="-I. -I${RAPPTURE_INCLUDE}"
+  fi
+fi
+
+
+# Check whether --with-rappture-lib was given.
+if test "${with_rappture_lib+set}" = set; then :
+  withval=$with_rappture_lib; rappture_lib_path=$withval
+fi
+
+if test  -n "$rappture_lib_path"  ; then
+   LIBS="-L${rappture_lib_path} ${LIBS}"
+else
+  if test  -n "${RAPPTURE_LIBS}"  ; then
+     LIBS="-L${RAPPTURE_LIBS} ${LIBS}"
+  fi
+fi
+
+: ${R_HOME=`R RHOME`}
+if test -z "${R_HOME}"; then
+  echo "could not determine R_HOME"
+  exit 1
+fi
+CC=`"${R_HOME}/bin/R" CMD config CC`
+CPP=`"${R_HOME}/bin/R" CMD config CPP`
+CFLAGS=`"${R_HOME}/bin/R" CMD config CFLAGS`
+CPPFLAGS=`"${R_HOME}/bin/R" CMD config CPPFLAGS`
+
+CPPFLAGS="${CPPFLAGS} ${RAPPTURE_CPPFLAGS}"
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in RpLibrary.h RpUnits.h RpUtils.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+if test "${ac_cv_header_RpLibrary_h}" = no ||
+   test "${ac_cv_header_RpUnits_h}" = no ||
+   test "${ac_cv_header_RpUtils_h}" = no; then
+   as_fn_error RpUnits.h "\"Rappture headers RpLibrary.h" "$LINENO" 5
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing rpLibrary" >&5
+$as_echo_n "checking for library containing rpLibrary... " >&6; }
+if ${ac_cv_search_rpLibrary+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char rpLibrary ();
+int
+main ()
+{
+return rpLibrary ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' rappture; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_rpLibrary=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_rpLibrary+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_rpLibrary+:} false; then :
+
+else
+  ac_cv_search_rpLibrary=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_rpLibrary" >&5
+$as_echo "$ac_cv_search_rpLibrary" >&6; }
+ac_res=$ac_cv_search_rpLibrary
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+  as_fn_error $? "\"no librappture with RpLibrary found\"" "$LINENO" 5
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing rpConvert" >&5
+$as_echo_n "checking for library containing rpConvert... " >&6; }
+if ${ac_cv_search_rpConvert+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char rpConvert ();
+int
+main ()
+{
+return rpConvert ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' rappture; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_rpConvert=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_rpConvert+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_rpConvert+:} false; then :
+
+else
+  ac_cv_search_rpConvert=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_rpConvert" >&5
+$as_echo "$ac_cv_search_rpConvert" >&6; }
+ac_res=$ac_cv_search_rpConvert
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+  as_fn_error $? "\"no librappture with RpUnits found\"" "$LINENO" 5
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing rpUtilsProgress" >&5
+$as_echo_n "checking for library containing rpUtilsProgress... " >&6; }
+if ${ac_cv_search_rpUtilsProgress+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char rpUtilsProgress ();
+int
+main ()
+{
+return rpUtilsProgress ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' rappture; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_rpUtilsProgress=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_rpUtilsProgress+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_rpUtilsProgress+:} false; then :
+
+else
+  ac_cv_search_rpUtilsProgress=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_rpUtilsProgress" >&5
+$as_echo "$ac_cv_search_rpUtilsProgress" >&6; }
+ac_res=$ac_cv_search_rpUtilsProgress
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+  as_fn_error $? "\"no librappture with RpUtils found\"" "$LINENO" 5
+fi
+
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if ${ac_cv_sizeof_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_long=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+
+
+
+ac_config_files="$ac_config_files src/Makevars"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+	g
+	s/^\n//
+	s/\n/ /g
+	p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by Rappture $as_me 1.0, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <rappture@nanohub.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+Rappture config.status 1.0
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "src/Makevars") CONFIG_FILES="$CONFIG_FILES src/Makevars" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES      "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+
+  esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
Index: /tags/1.6.0/lang/R/Rappture/configure.in
===================================================================
--- /tags/1.6.0/lang/R/Rappture/configure.in	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/configure.in	(revision 6168)
@@ -0,0 +1,70 @@
+
+AC_INIT([Rappture], 1.0, [rappture@nanohub.org])
+
+dnl Select an optional include path, from a configure option
+dnl or from an environment variable.
+AC_ARG_WITH([rappture-include],
+            AC_HELP_STRING([--with-rappture-include=INCLUDE_PATH],
+                           [the location of Rappture header files]),
+            [rappture_include_path=$withval])
+RAPPTURE_CPPFLAGS="-I."
+if test [ -n "$rappture_include_path" ] ; then
+   RAPPTURE_CPPFLAGS="-I. -I${rappture_include_path}"
+else
+  if test [ -n "${RAPPTURE_INCLUDE}" ] ; then
+     RAPPTURE_CPPFLAGS="-I. -I${RAPPTURE_INCLUDE}"
+  fi
+fi
+
+dnl ditto for a library path
+AC_ARG_WITH([rappture-lib],
+            AC_HELP_STRING([--with-rappture-lib=LIB_PATH],
+                           [the location of Rappture libraries]),
+            [rappture_lib_path=$withval])
+if test [ -n "$rappture_lib_path" ] ; then
+   LIBS="-L${rappture_lib_path} ${LIBS}"
+else 
+  if test [ -n "${RAPPTURE_LIBS}" ] ; then
+     LIBS="-L${RAPPTURE_LIBS} ${LIBS}"
+  fi
+fi
+
+dnl Now find the compiler and compiler flags to use
+: ${R_HOME=`R RHOME`}
+if test -z "${R_HOME}"; then
+  echo "could not determine R_HOME"
+  exit 1
+fi
+CC=`"${R_HOME}/bin/R" CMD config CC`
+CPP=`"${R_HOME}/bin/R" CMD config CPP`
+CFLAGS=`"${R_HOME}/bin/R" CMD config CFLAGS`
+CPPFLAGS=`"${R_HOME}/bin/R" CMD config CPPFLAGS`
+
+CPPFLAGS="${CPPFLAGS} ${RAPPTURE_CPPFLAGS}"
+
+dnl Check the headers can be found
+AC_CHECK_HEADERS(RpLibrary.h RpUnits.h RpUtils.h)
+if test "${ac_cv_header_RpLibrary_h}" = no ||
+   test "${ac_cv_header_RpUnits_h}" = no ||
+   test "${ac_cv_header_RpUtils_h}" = no; then
+   AC_MSG_ERROR("Rappture headers RpLibrary.h, RpUnits.h, RpUtils.h not found")
+fi
+
+dnl search for a library containing Rappture functions
+AC_SEARCH_LIBS(rpLibrary, rappture, ,
+         AC_MSG_ERROR("no librappture with RpLibrary found"))
+AC_SEARCH_LIBS(rpConvert, rappture, ,
+         AC_MSG_ERROR("no librappture with RpUnits found"))
+AC_SEARCH_LIBS(rpUtilsProgress, rappture, ,
+         AC_MSG_ERROR("no librappture with RpUtils found"))
+
+
+AC_CHECK_SIZEOF(long, 4)
+
+dnl substitute RODBC_CPPFLAGS and LIBS
+AC_SUBST(RAPPTURE_CPPFLAGS)
+AC_SUBST(LIBS)
+dnl AC_CONFIG_HEADERS([src/config.h])
+dnl and do subsitution in the src/Makevars.in and src/config.h
+AC_CONFIG_FILES([src/Makevars])
+AC_OUTPUT
Index: /tags/1.6.0/lang/R/Rappture/man/Rappture-package.Rd
===================================================================
--- /tags/1.6.0/lang/R/Rappture/man/Rappture-package.Rd	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/man/Rappture-package.Rd	(revision 6168)
@@ -0,0 +1,40 @@
+\name{rappture-package}
+\alias{rappture-package}
+\alias{rappture}
+\docType{package}
+\title{
+What the package does (short line)
+~~ Rappture Toolkit R bindings ~~
+}
+\description{
+More about what it does (maybe more than one line)
+~~ A concise (1-5 lines) description of the package ~~
+}
+\details{
+\tabular{ll}{
+Package: \tab Rappture\cr
+Type: \tab Package\cr
+Version: \tab 1.0\cr
+Date: \tab 2011-11-09\cr
+License: \tab see http://rappture.org/wiki/LicenseTerms\cr
+}
+~~ An overview of how to use the package, including the most important ~~
+~~ functions ~~
+}
+\author{
+Who wrote it
+
+Maintainer: Who to complain to <yourfault@somewhere.net>
+~~ The author and/or maintainer of the package ~~
+}
+\references{
+~~ Literature or other references for background information ~~
+}
+\keyword{ package }
+\seealso{
+~~ Optional links to other man pages, e.g. ~~
+~~ \code{\link[<pkg>:<pkg>-package]{<pkg>}} ~~
+}
+\examples{
+~~ simple examples of the most important functions ~~
+}
Index: /tags/1.6.0/lang/R/Rappture/man/Rappture.Rd
===================================================================
--- /tags/1.6.0/lang/R/Rappture/man/Rappture.Rd	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/man/Rappture.Rd	(revision 6168)
@@ -0,0 +1,58 @@
+\name{Rappture}
+\alias{Rappture}
+%- Also NEED an '\alias' for EACH other topic documented here.
+\title{
+Rappture
+}
+\description{
+%%  ~~ A concise (1-5 lines) description of what the function does. ~~
+}
+\usage{
+Rappture(n)
+}
+%- maybe also 'usage' for other objects documented here.
+\arguments{
+  \item{n}{
+%%     ~~Describe \code{n} here~~
+}
+}
+\details{
+%%  ~~ If necessary, more details than the description above ~~
+}
+\value{
+%%  ~Describe the value returned
+%%  If it is a LIST, use
+%%  \item{comp1 }{Description of 'comp1'}
+%%  \item{comp2 }{Description of 'comp2'}
+%% ...
+}
+\references{
+%% ~put references to the literature/web site here ~
+}
+\author{
+%%  ~~who you are~~
+}
+\note{
+%%  ~~further notes~~
+}
+
+%% ~Make other sections like Warning with \section{Warning }{....} ~
+
+\seealso{
+%% ~~objects to See Also as \code{\link{help}}, ~~~
+}
+\examples{
+##---- Should be DIRECTLY executable !! ----
+##-- ==>  Define data, use random,
+##--	or do  help(data=index)  for the standard data sets.
+
+## The function is currently defined as
+function (n) 
+{
+    return(n)
+  }
+}
+% Add one or more standard keywords, see file 'KEYWORDS' in the
+% R documentation directory.
+\keyword{ ~kwd1 }
+\keyword{ ~kwd2 }% __ONLY ONE__ keyword per line
Index: /tags/1.6.0/lang/R/Rappture/src/Makevars.in
===================================================================
--- /tags/1.6.0/lang/R/Rappture/src/Makevars.in	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/src/Makevars.in	(revision 6168)
@@ -0,0 +1,3 @@
+PKG_CPPFLAGS=@RAPPTURE_CPPFLAGS@
+PKG_LIBS=@LIBS@
+
Index: /tags/1.6.0/lang/R/Rappture/src/RpLibraryRInterface.cc
===================================================================
--- /tags/1.6.0/lang/R/Rappture/src/RpLibraryRInterface.cc	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/src/RpLibraryRInterface.cc	(revision 6168)
@@ -0,0 +1,804 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: R Rappture Library Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpLibrary.h"
+#include "RpBindingsDict.h"
+
+#include "RpLibraryRInterface.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+static void
+rp_lib_finalizer(SEXP ptr)
+{
+    if (!R_ExternalPtrAddr(ptr)) {
+        return;
+    }
+#ifdef notdef
+    /* Until we figure this out, don't delete the library object.  R is
+     * calling the finalizer on every method of the library object.  This is a
+     * problem only if someone explicitly deletes the library object from
+     * R. */
+    RpLibrary* lib;
+    lib = (RpLibrary *)R_ExternalPtrAddr(ptr);
+    if (lib != NULL) {
+        delete lib;
+    }
+#endif
+    R_ClearExternalPtr(ptr);
+}
+
+
+
+/**********************************************************************/
+// FUNCTION: rp_lib(const char* filePath, int handle)
+/// Open the file at 'filePath' and return Rappture Library Object.
+/**
+ */
+
+SEXP
+RPRLib(SEXP fname)
+{
+    RpLibrary* lib = NULL;
+    int handle = -1;
+    SEXP ans, ptr;
+
+    ans = allocVector(INTSXP,1);
+    PROTECT(ans);
+    INTEGER(ans)[0] = -1;
+
+    if (!isString(fname) || length(fname) != 1) {
+        error("fname is not a single string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    // create a RapptureIO object and store in dictionary
+    lib = new RpLibrary(CHAR(STRING_ELT(fname, 0)));
+    if (lib == NULL) {
+        error("could not allocate new RpLibrary object");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    ptr = R_MakeExternalPtr((void *)lib,install("RapptureLib"),R_NilValue);
+    PROTECT(ptr);
+    R_RegisterCFinalizerEx(ptr, rp_lib_finalizer, TRUE);
+
+    handle = storeObject_Void((void*)lib);
+
+    INTEGER(ans)[0] = handle;
+    UNPROTECT(2);
+
+    return(ans);
+}
+
+/**********************************************************************/
+// FUNCTION: RPRLibGetString()
+/// Get data located at 'path' and return it as a string value.
+/**
+ */
+SEXP
+RPRLibGetString(
+    SEXP handle,            // integer handle of library
+    SEXP path)              // null terminated path
+{
+    RpLibrary* lib;
+    SEXP ans;
+    int handleVal = -1;
+    std::string data;
+
+    ans = allocVector(STRSXP,1);
+    PROTECT(ans);
+
+    SET_STRING_ELT(ans,0,mkChar(""));
+
+    if (!isInteger(handle) || length(handle) != 1) {
+        error("handle is not an integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(path) || length(path) != 1) {
+        error("path is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    handleVal = asInteger(handle);
+
+    if (handleVal == 0) {
+        error("invalid handle");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib = (RpLibrary*) getObject_Void(handleVal);
+    if (lib == NULL) {
+        error("invalid Rappture Library Object");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    data = lib->getString(CHAR(STRING_ELT(path, 0)));
+
+    SET_STRING_ELT(ans, 0, mkChar(data.c_str()));
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+
+/**********************************************************************/
+// FUNCTION: RPRLibGetDouble()
+/// Get data located at 'path' and return it as a double precision value.
+/**
+ */
+SEXP
+RPRLibGetDouble(
+    SEXP handle,            // integer handle of library
+    SEXP path)              // null terminated path
+{
+    RpLibrary* lib = NULL;
+    SEXP ans;
+    int handleVal = -1;
+    double data;
+
+    ans = allocVector(REALSXP,1);
+    PROTECT(ans);
+
+    REAL(ans)[0] = 0.0;
+
+    if (!isInteger(handle) || length(handle) != 1) {
+        error("handle is not a single integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(path) || length(path) != 1) {
+        error("path is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    handleVal = asInteger(handle);
+
+    if (handleVal == 0) {
+        error("invalid handle");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib = (RpLibrary*) getObject_Void(handleVal);
+
+    if (lib == NULL) {
+        error("invalid Rappture Library Object");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    data = lib->getDouble(CHAR(STRING_ELT(path, 0)));
+
+    REAL(ans)[0] = data;
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+
+/**********************************************************************/
+// FUNCTION: RPRLibInteger()
+/// Get data located at 'path' and return it as an integer value.
+/**
+ */
+SEXP
+RPRLibGetInteger(
+    SEXP handle,            // integer handle of library
+    SEXP path)              // null terminated path
+{
+    RpLibrary* lib = NULL;
+    SEXP ans;
+    int handleVal = -1;
+    int data;
+
+    ans = allocVector(INTSXP,1);
+    PROTECT(ans);
+
+    INTEGER(ans)[0] = 0;
+
+    if (!isInteger(handle) || length(handle) != 1) {
+        error("handle is not a single integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(path) || length(path) != 1) {
+        error("path is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    handleVal = asInteger(handle);
+
+    if (handleVal == 0) {
+        error("invalid handle");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib = (RpLibrary*) getObject_Void(handleVal);
+
+    if (lib == NULL) {
+        error("invalid Rappture Library Object");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    data = lib->getInt(CHAR(STRING_ELT(path, 0)));
+
+    INTEGER(ans)[0] = data;
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+
+/**********************************************************************/
+// FUNCTION: RPRLibGetBoolean()
+/// Get data located at 'path' and return it as an integer value.
+/**
+ */
+SEXP
+RPRLibGetBoolean(
+    SEXP handle,            // integer handle of library
+    SEXP path)              // null terminated path
+{
+    RpLibrary* lib = NULL;
+    SEXP ans;
+    int handleVal = -1;
+    bool data;
+
+    ans = allocVector(LGLSXP,1);
+    PROTECT(ans);
+
+    LOGICAL(ans)[0] = false;
+
+    if (!isInteger(handle) || length(handle) != 1) {
+        error("handle is not a single integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(path) || length(path) != 1) {
+        error("path is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    handleVal = asInteger(handle);
+
+    if (handleVal == 0) {
+        error("invalid handle");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib = (RpLibrary*) getObject_Void(handleVal);
+
+    if (lib == NULL) {
+        error("invalid Rappture Library Object");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    data = lib->getBool(CHAR(STRING_ELT(path, 0)));
+
+    LOGICAL(ans)[0] = data;
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+
+/**********************************************************************/
+// FUNCTION: RPRLibGetFile()
+/// Get data located at 'path' and write it to the file 'fileName'.
+/**
+ * Returns if any bytes were written to the file
+ */
+SEXP
+RPRLibGetFile (
+    SEXP handle,            // integer handle of library
+    SEXP path,              // null terminated path
+    SEXP fileName)          // name of file to write data to
+{
+    RpLibrary* lib = NULL;
+    SEXP ans;
+    int handleVal = -1;
+    int nbytes = 0;
+
+    ans = allocVector(INTSXP,1);
+    PROTECT(ans);
+
+    INTEGER(ans)[0] = -1;
+
+    if (!isInteger(handle) || length(handle) != 1) {
+        error("handle is not a single integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(path) || length(path) != 1) {
+        error("path is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(fileName) || length(fileName) != 1) {
+        error("fileName is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    handleVal = asInteger(handle);
+
+    if (handleVal == 0) {
+        error("invalid handle");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib = (RpLibrary*) getObject_Void(handleVal);
+
+    if (lib == NULL) {
+        error("invalid Rappture Library Object");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    nbytes = lib->getFile(  CHAR(STRING_ELT(path, 0)),
+                            CHAR(STRING_ELT(fileName, 0)));
+
+    INTEGER(ans)[0] = nbytes;
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+
+
+/**********************************************************************/
+// FUNCTION: RPRLibPutString()
+/// Put string into Rappture Library Object at location 'path'.
+/**
+ */
+SEXP
+RPRLibPutString(
+    SEXP handle,
+    SEXP path,
+    SEXP value,
+    SEXP append)
+{
+    RpLibrary* lib = NULL;
+    SEXP ans;
+    int handleVal = -1;
+    int nbytes = 0;
+    unsigned int appendVal;
+
+    ans = allocVector(INTSXP,1);
+    PROTECT(ans);
+
+    INTEGER(ans)[0] = -1;
+
+    if (!isInteger(handle) || length(handle) != 1) {
+        error("handle is not an integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(path) || length(path) != 1) {
+        error("path is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(value) || length(value) != 1) {
+        error("value is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isLogical(append) || length(append) != 1) {
+        error("append is not a logical");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    handleVal = asInteger(handle);
+
+    if (handleVal == 0) {
+        error("invalid handle");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib = (RpLibrary*) getObject_Void(handleVal);
+
+    if (lib == NULL) {
+        error("invalid Rappture Library Object");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    appendVal = asLogical(append);
+    if (appendVal == 1) {
+        appendVal = RPLIB_APPEND;
+    } else if (appendVal == 0) {
+        appendVal = RPLIB_OVERWRITE;
+    } else {
+        // NA_LOGICAL was returned?
+        error("invalid append value");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib->put(CHAR(STRING_ELT(path, 0)),
+             CHAR(STRING_ELT(value, 0)),
+             "",
+             appendVal,
+             RPLIB_TRANSLATE);
+
+
+    INTEGER(ans)[0] = 0;
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+
+/**********************************************************************/
+// FUNCTION: RPRLibPutData()
+/// Put string into Rappture Library Object at location 'path'.
+/**
+ */
+/*
+SEXP
+RPRLibPutData(
+    SEXP handle,
+    SEXP path,
+    SEXP bytes,
+    SEXP nbytes,
+    SEXP append)
+{
+    RpLibrary* lib = NULL;
+    SEXP ans;
+    int handleVal = -1;
+    int nbytes = 0;
+    unsigned int appendVal;
+
+    ans = allocVector(INTSXP,1);
+    PROTECT(ans);
+
+    INTEGER(ans)[0] = -1;
+
+    if (!isInteger(handle) || length(handle) != 1) {
+        error("handle is not an integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(path) || length(path) != 1) {
+        error("path is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(bytes) || length(bytes) != 1) {
+        error("bytes is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isInteger(nbytes) || length(nbytes) != 1) {
+        error("nbytes is not an integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isLogical(append) || length(append) != 1) {
+        error("append is not a logical");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    handleVal = asInteger(handle);
+
+    if (handleVal == 0) {
+        error("invalid handle");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib = (RpLibrary*) getObject_Void(handleVal);
+
+    if (lib == NULL) {
+        error("invalid Rappture Library Object");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (asLogical(append)) {
+        appendVal = RPLIB_APPEND;
+    } else {
+        appendVal = RPLIB_OVERWRITE;
+    }
+
+    lib->putData(CHAR(STRING_ELT(path, 0)),
+                 CHAR(STRING_ELT(value, 0)),
+                 INTEGER(nbytes),
+                 appendVal);
+
+    INTEGER(ans)[0] = 0;
+
+    UNPROTECT(1);
+
+    return ans;
+}
+*/
+
+/**********************************************************************/
+// FUNCTION: RPRLibPutDouble()
+/// Put double value into Rappture Library Object at location 'path'.
+/**
+ */
+SEXP
+RPRLibPutDouble(
+    SEXP handle,
+    SEXP path,
+    SEXP value,
+    SEXP append)
+{
+    RpLibrary* lib = NULL;
+    SEXP ans;
+    int handleVal = -1;
+    int nbytes = 0;
+    unsigned int appendVal;
+
+    ans = allocVector(INTSXP,1);
+    PROTECT(ans);
+
+    INTEGER(ans)[0] = -1;
+
+    if (!isInteger(handle) || length(handle) != 1) {
+        error("handle is not an integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(path) || length(path) != 1) {
+        error("path is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isReal(value) || length(value) != 1) {
+        error("value is not a real");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isLogical(append) || length(append) != 1) {
+        error("append is not a logical");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    handleVal = asInteger(handle);
+
+    if (handleVal == 0) {
+        error("invalid handle");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib = (RpLibrary*) getObject_Void(handleVal);
+
+    if (lib == NULL) {
+        error("invalid Rappture Library Object");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    appendVal = asLogical(append);
+    if (appendVal == 1) {
+        appendVal = RPLIB_APPEND;
+    } else if (appendVal == 0) {
+        appendVal = RPLIB_OVERWRITE;
+    } else {
+        // NA_LOGICAL was returned?
+        error("invalid append value");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib->put(CHAR(STRING_ELT(path, 0)),
+             asReal(value),
+             "",
+             appendVal);
+
+    INTEGER(ans)[0] = 0;
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+
+/**********************************************************************/
+// FUNCTION: RPRLibPutFile()
+/// Put double value into Rappture Library Object at location 'path'.
+/**
+ */
+SEXP
+RPRLibPutFile(
+    SEXP handle,
+    SEXP path,
+    SEXP fname,
+    SEXP compress,
+    SEXP append)
+{
+    RpLibrary* lib = NULL;
+    SEXP ans;
+    int handleVal = -1;
+    unsigned int appendVal;
+    unsigned int compressVal;
+
+    ans = allocVector(INTSXP,1);
+    PROTECT(ans);
+
+    INTEGER(ans)[0] = -1;
+
+    if (!isInteger(handle) || length(handle) != 1) {
+        error("handle is not an integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(path) || length(path) != 1) {
+        error("path is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(fname) || length(fname) != 1) {
+        error("fileName is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isLogical(compress) || length(compress) != 1) {
+        error("compress is not a logical");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isLogical(append) || length(append) != 1) {
+        error("append is not a logical");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    handleVal = asInteger(handle);
+
+    if (handleVal == 0) {
+        error("invalid handle");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib = (RpLibrary*) getObject_Void(handleVal);
+
+    if (lib == NULL) {
+        error("invalid Rappture Library Object");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    compressVal = asLogical(compress);
+    if (compressVal == 1) {
+        compressVal = RPLIB_COMPRESS;
+    } else {
+        compressVal = RPLIB_NO_COMPRESS;
+    }
+
+    appendVal = asLogical(append);
+    if (appendVal == 1) {
+        appendVal = RPLIB_APPEND;
+    } else {
+        appendVal = RPLIB_OVERWRITE;
+    }
+
+    lib->putFile(CHAR(STRING_ELT(path, 0)),
+                 CHAR(STRING_ELT(fname,0)),
+                 compressVal,
+                 appendVal);
+
+    INTEGER(ans)[0] = 0;
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_result()
+/// Write xml text to a run.xml file and signal the program has completed
+/**
+ */
+SEXP
+RPRLibResult(
+    SEXP handle)
+{
+    RpLibrary* lib = NULL;
+    SEXP ans;
+    int handleVal = -1;
+
+    ans = allocVector(INTSXP,1);
+    PROTECT(ans);
+
+    INTEGER(ans)[0] = -1;
+
+    if (!isInteger(handle) || length(handle) != 1) {
+        error("handle is not an integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    handleVal = asInteger(handle);
+
+    if (handleVal == 0) {
+        error("invalid handle");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib = (RpLibrary*) getObject_Void(handleVal);
+
+    if (lib == NULL) {
+        error("invalid Rappture Library Object");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    lib->put("tool.version.rappture.language", "R");
+    lib->result();
+
+    INTEGER(ans)[0] = 1;
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
Index: /tags/1.6.0/lang/R/Rappture/src/RpLibraryRInterface.h
===================================================================
--- /tags/1.6.0/lang/R/Rappture/src/RpLibraryRInterface.h	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/src/RpLibraryRInterface.h	(revision 6168)
@@ -0,0 +1,36 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: R Rappture Library Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <R.h>
+#include <Rinternals.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SEXP RPRLib (SEXP fname) ;
+SEXP RPRLibGetString (SEXP handle, SEXP path) ;
+SEXP RPRLibGetDouble (SEXP handle, SEXP path) ;
+SEXP RPRLibGetInteger (SEXP handle, SEXP path) ;
+SEXP RPRLibGetBoolean (SEXP handle, SEXP path) ;
+SEXP RPRLibGetFile (SEXP handle, SEXP path, SEXP fileName) ;
+SEXP RPRLibPutString (SEXP handle, SEXP path, SEXP value, SEXP append);
+// SEXP RPRLibPutData (SEXP handle, SEXP path, SEXP bytes, SEXP nbytes, SEXP append) ;
+SEXP RPRLibPutDouble (SEXP handle, SEXP path, SEXP value, SEXP append) ;
+SEXP RPRLibPutFile (SEXP handle, SEXP path, SEXP fname, SEXP compress, SEXP append) ;
+SEXP RPRLibResult (SEXP handle) ;
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
Index: /tags/1.6.0/lang/R/Rappture/src/RpRBindings.c
===================================================================
--- /tags/1.6.0/lang/R/Rappture/src/RpRBindings.c	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/src/RpRBindings.c	(revision 6168)
@@ -0,0 +1,48 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: R Rappture Bindings
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpLibraryRInterface.h"
+#include "RpUnitsRInterface.h"
+#include "RpUtilsRInterface.h"
+
+#include <R_ext/Rdynload.h>
+
+static const R_CallMethodDef CallEntries[] = {
+    {"RPRLib", (DL_FUNC) &RPRLib, 1},
+    {"RPRLibGetString", (DL_FUNC) &RPRLibGetString, 2},
+    {"RPRLibGetDouble", (DL_FUNC) &RPRLibGetDouble, 2},
+    {"RPRLibGetInteger", (DL_FUNC) &RPRLibGetInteger, 2},
+    {"RPRLibGetBoolean", (DL_FUNC) &RPRLibGetBoolean, 2},
+    {"RPRLibGetFile", (DL_FUNC) &RPRLibGetFile, 3},
+    {"RPRLibPutString", (DL_FUNC) &RPRLibPutString, 4},
+//    {"RPRLibPutData", (DL_FUNC) &RPRLibPutData, 5},
+    {"RPRLibPutDouble", (DL_FUNC) &RPRLibPutDouble, 4},
+    {"RPRLibPutFile", (DL_FUNC) &RPRLibPutFile, 5},
+    {"RPRLibResult", (DL_FUNC) &RPRLibResult, 1},
+    {"RPRUnitsConvertDouble", (DL_FUNC) &RPRUnitsConvertDouble, 2},
+    {"RPRUnitsConvertString", (DL_FUNC) &RPRUnitsConvertString, 3},
+    {"RPRUtilsProgress", (DL_FUNC) &RPRUtilsProgress, 2},
+    {NULL, NULL, 0}
+};
+
+void R_init_Rappture(DllInfo *dll)
+{
+    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
+    R_useDynamicSymbols(dll, FALSE);
+}
+
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
Index: /tags/1.6.0/lang/R/Rappture/src/RpUnitsRInterface.cc
===================================================================
--- /tags/1.6.0/lang/R/Rappture/src/RpUnitsRInterface.cc	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/src/RpUnitsRInterface.cc	(revision 6168)
@@ -0,0 +1,147 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: R Rappture Units Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpUnits.h"
+#include "RpBindingsDict.h"
+
+# include "RpUnitsRInterface.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**********************************************************************/
+// FUNCTION: RPRUnitsConvertDouble(fromVal,toUnitsName)
+/// Perform units convertion on fromVal, return a double
+/**
+ */
+
+SEXP
+RPRUnitsConvertDouble(
+    SEXP fromVal,
+    SEXP toUnitsName)
+{
+    SEXP ans;
+    std::string convStr = "";
+    int showUnitsFlag = 0;
+    double convResult = 0.0;
+    int err = 0;
+
+    ans = allocVector(REALSXP,1);
+    PROTECT(ans);
+
+    REAL(ans)[0] = 0.0;
+
+    if (!isString(fromVal) || length(fromVal) != 1) {
+        error("fromVal is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(toUnitsName) || length(toUnitsName) != 1) {
+        error("toUnitsName is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    // the call to RpUnits::convert() populates the result flag
+    convStr = RpUnits::convert(CHAR(STRING_ELT(fromVal,0)),
+                               CHAR(STRING_ELT(toUnitsName,0)),
+                               showUnitsFlag,
+                               &err);
+
+    if (err) {
+        error("unrecognized unit conversion");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    REAL(ans)[0] = atof(convStr.c_str());
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+
+/**********************************************************************/
+// FUNCTION: RPRUnitsConvertString(fromVal,toUnitsName,showUnits)
+/// Perform units convertion on fromVal, return a string
+/**
+ */
+
+SEXP
+RPRUnitsConvertString(
+    SEXP fromVal,
+    SEXP toUnitsName,
+    SEXP showUnits)
+{
+    SEXP ans;
+    std::string convStr = "";
+    int showUnitsFlag = 1;
+    double convResult = 0.0;
+    int err = 0;
+
+    ans = allocVector(STRSXP,1);
+    PROTECT(ans);
+
+    SET_STRING_ELT(ans,0,mkChar(""));
+
+    if (!isString(fromVal) || length(fromVal) != 1) {
+        error("fromVal is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(toUnitsName) || length(toUnitsName) != 1) {
+        error("toUnitsName is not a string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isLogical(showUnits) || length(showUnits) != 1) {
+        error("showUnits is not a logical");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    showUnitsFlag = asLogical(showUnits);
+    if (showUnitsFlag == 1) {
+        showUnitsFlag = RPUNITS_UNITS_ON;
+    } else {
+        showUnitsFlag = RPUNITS_UNITS_OFF;
+    }
+
+    // the call to RpUnits::convert() populates the result flag
+    convStr = RpUnits::convert(CHAR(STRING_ELT(fromVal,0)),
+                               CHAR(STRING_ELT(toUnitsName,0)),
+                               showUnitsFlag,
+                               &err);
+
+    if (err) {
+        error("unrecognized unit conversion");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    SET_STRING_ELT(ans,0,mkChar(convStr.c_str()));
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
Index: /tags/1.6.0/lang/R/Rappture/src/RpUnitsRInterface.h
===================================================================
--- /tags/1.6.0/lang/R/Rappture/src/RpUnitsRInterface.h	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/src/RpUnitsRInterface.h	(revision 6168)
@@ -0,0 +1,27 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: R Rappture Units Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <R.h>
+#include <Rinternals.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SEXP RPRUnitsConvertDouble( SEXP fromVal, SEXP toUnitsName) ;
+SEXP RPRUnitsConvertString( SEXP fromVal, SEXP toUnitsName, SEXP showUnits) ;
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
Index: /tags/1.6.0/lang/R/Rappture/src/RpUtilsRInterface.cc
===================================================================
--- /tags/1.6.0/lang/R/Rappture/src/RpUtilsRInterface.cc	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/src/RpUtilsRInterface.cc	(revision 6168)
@@ -0,0 +1,73 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: R Rappture Utils Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpUtils.h"
+#include "RpUtilsRInterface.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**********************************************************************/
+// FUNCTION: RPRUtilsProgress(percent,handle)
+/// Send the =RAPPTURE-PROGRESS=> message to stdout for the progress widget
+/**
+ */
+
+SEXP
+RPRUtilsProgress(SEXP percent, SEXP message)
+{
+    SEXP ans;
+    int err = 0;
+    int percentInt = 0;
+
+    ans = allocVector(INTSXP,1);
+    PROTECT(ans);
+
+    INTEGER(ans)[0] = -1;
+
+    if (length(percent) != 1) {
+        error("percent is not a scalar value");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (isReal(percent)) {
+        percentInt = (int) asReal(percent);
+    } else if (isInteger(percent)) {
+        percentInt = asInteger(percent);
+    } else {
+        error("percent is not an integer");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    if (!isString(message) || length(message) != 1) {
+        error("message is not a single string");
+        UNPROTECT(1);
+        return ans;
+    }
+
+    err = Rappture::Utils::progress(percentInt,CHAR(STRING_ELT(message,0)));
+
+    INTEGER(ans)[0] = err;
+
+    UNPROTECT(1);
+
+    return ans;
+}
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
Index: /tags/1.6.0/lang/R/Rappture/src/RpUtilsRInterface.h
===================================================================
--- /tags/1.6.0/lang/R/Rappture/src/RpUtilsRInterface.h	(revision 6168)
+++ /tags/1.6.0/lang/R/Rappture/src/RpUtilsRInterface.h	(revision 6168)
@@ -0,0 +1,26 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: R Rappture Utils Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <R.h>
+#include <Rinternals.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SEXP RPRUtilsProgress (SEXP percent, SEXP message) ;
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
Index: /tags/1.6.0/lang/java/Library.java
===================================================================
--- /tags/1.6.0/lang/java/Library.java	(revision 6168)
+++ /tags/1.6.0/lang/java/Library.java	(revision 6168)
@@ -0,0 +1,130 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Ben Rafferty, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+/*
+ * This file defines a Java class that implemements the rappture XML library.
+ * The class methods call the corresponding native code through c++ glue code
+ * located in jRpLibrary.cc.
+ */
+
+package rappture;
+
+public class Library{
+  static {
+    System.loadLibrary("JRappture");
+  }
+
+  // Constructor---------------------------------------------------------------
+  public Library(String path){
+    libPtr = jRpLibrary(path);
+  }
+
+  public Library(){
+    libPtr = jRpLibrary(null);
+  }
+
+  // Pseudo-Destructor.  Called when the object is garbage collected.----------
+  protected void finalize() throws Throwable {
+    try {
+      jRpDeleteLibrary(libPtr);
+    } finally {
+        super.finalize();
+    }
+  }
+
+  // Public Methods------------------------------------------------------------
+  
+  public byte[] getData(String path){
+    return jRpGetData(libPtr, path);
+  }
+
+  public double getDouble(String path){
+    return jRpGetDouble(libPtr, path);
+  }
+
+  public String getString(String path){
+    return jRpGetString(libPtr, path);
+  }
+
+  public int getInt(String path){
+    return jRpGetInt(libPtr, path);
+  }
+
+  public String get(String path){  // alias for getString
+    return jRpGetString(libPtr, path);
+  }
+
+  public void put(String path, Object value, boolean append){
+    // convert generic object to string 
+    jRpPut(libPtr, path, value.toString(), append);
+  }
+
+  public void put(String path, Object value){
+    jRpPut(libPtr, path, value.toString(), false);
+  }
+
+  public void putData(String path, byte[] b, boolean append){
+    jRpPutData(libPtr, path, b, b.length, append);
+  }
+
+  public void putData(String path, byte[] b){
+    jRpPutData(libPtr, path, b, b.length, false);
+  }
+
+  public void putFile(String path, String fileName,
+                      boolean compress, boolean append){
+    jRpPutFile(libPtr, path, fileName, compress, append);
+  }
+
+  public void putFile(String path, String fileName, boolean compress){
+    jRpPutFile(libPtr, path, fileName, compress, false);
+  }
+
+  public void putFile(String path, String fileName){
+    jRpPutFile(libPtr, path, fileName, true, false);
+  }
+
+  public void result(int exitStatus){
+    jRpResult(libPtr, exitStatus);
+  }
+
+  public void result(){
+    jRpResult(libPtr, 0);
+  }
+
+  public String xml(){
+    return jRpXml(libPtr);
+  }
+
+
+  // Native Functions----------------------------------------------------------
+  private native long jRpLibrary(String path);
+  private native void jRpDeleteLibrary(long libPtr);
+
+  private native byte[] jRpGetData(long libPtr, String path);
+  private native double jRpGetDouble(long libPtr, String path);
+  private native int jRpGetInt(long libPtr, String path);
+  private native String jRpGetString(long libPtr, String path);
+
+  private native void jRpPut(long libPtr, String path,
+                             String value, boolean append);
+  private native void jRpPutData(long libPtr, String path,
+                                 byte[] b, int nbytes, boolean append);
+  private native void jRpPutFile(long libPtr, String path, String fileName,
+                                 boolean compress, boolean append);
+
+  private native void jRpResult(long libPtr, int exitStatus);  
+  private native String jRpXml(long libPtr);
+
+  // Private Attributes--------------------------------------------------------
+  private long libPtr;  //pointer to c++ RpLibrary 
+
+}
+
Index: /tags/1.6.0/lang/java/Makefile.in
===================================================================
--- /tags/1.6.0/lang/java/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/java/Makefile.in	(revision 6168)
@@ -0,0 +1,117 @@
+
+.SUFFIXES:	.class .java
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+destdir		= $(libdir)/java
+packagedir	= $(destdir)/rappture
+VPATH           = $(srcdir):rappture
+
+INSTALL         = @INSTALL@
+SOEXT           = @SHLIB_SUFFIX@
+
+JAVA_HOME	= @JAVA_HOME@
+JAVA_INCLUDES	= @JAVA_INC_SPEC@
+JAVA		= @JAVA@
+JAVAC		= @JAVAC@
+JAVAH		= @JAVAH@
+
+CXX             = @CXX@
+CC              = @CXX@
+
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@ -Wall
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD        = @STLIB_LD@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+CFLAGS          = ${CFLAGS_DEFAULT} ${CFLAGS_WARNING} ${SHLIB_CFLAGS}
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+
+MKDIR_P		= @MKDIR_P@
+RM		= rm -f
+
+INCLUDES	= $(JAVA_INCLUDES) -I $(srcdir)/../../src/core -I .
+LIBS		= -L../../src/core -lrappture
+
+CC_SWITCHES     = $(CFLAGS) $(CFLAGS_DEBUG) $(SHLIB_CFLAGS) $(INCLUDES) $(DEFINES)
+CXX_SWITCHES    = $(CFLAGS) $(CFLAGS_DEBUG) $(SHLIB_CFLAGS) $(INCLUDES) $(DEFINES)
+
+CLASSPATH	= .:..
+JAVAC_SWITCHES	= -cp $(CLASSPATH) -d .
+JAVAH_SWITCHES	= -jni -classpath $(CLASSPATH) 
+
+CLASSFILES	= \
+		rappture/Library.class \
+		rappture/Units.class \
+		rappture/Utils.class 
+
+HEADERS		= \
+		jRpLibrary.h \
+		jRpUnits.h \
+		jRpUtils.h 
+
+OBJS		= \
+		jRpLibrary.o \
+		jRpUnits.o \
+		jRpUtils.o 
+
+name        = JRappture
+libname     = lib$(name)
+lib         = $(libname).a
+shared_lib  = $(libname)$(SHLIB_SUFFIX)
+
+all: $(shared_lib)
+
+$(shared_lib): $(OBJS)
+	$(SHLIB_LD) $(SHLIB_LDFLAGS) -o $@ $(OBJS) \
+		$(LIB_SEARCH_DIRS) $(LIBS)
+
+jRpLibrary.o: $(srcdir)/jRpLibrary.cc jRpLibrary.h
+	$(CXX) -c $(CXX_SWITCHES) -o $@ $<
+
+jRpUnits.o: $(srcdir)/jRpUnits.cc jRpUnits.h
+	$(CXX) -c $(CXX_SWITCHES) -o $@ $<
+
+jRpUtils.o: $(srcdir)/jRpUtils.cc jRpUtils.h
+	$(CXX) -c $(CXX_SWITCHES) -o $@ $<
+
+.java.class:
+	$(JAVAC) $(JAVAC_SWITCHES) $<
+
+jRpLibrary.h: Library.class
+	$(JAVAH) $(JAVAH_SWITCHES) -o $@ rappture.Library
+
+jRpUnits.h: Units.class
+	$(JAVAH) $(JAVAH_SWITCHES) -o $@ rappture.Units
+
+jRpUtils.h: Utils.class
+	$(JAVAH) $(JAVAH_SWITCHES) -o $@ rappture.Utils
+
+install: install-library install-classfiles
+
+install-library:  $(shared_lib) 
+	$(MKDIR_P) -m 0755 $(libdir)
+	$(INSTALL) -m 0555 $(shared_lib) $(libdir)
+
+install-classfiles: 
+	$(MAKE) -C rappture install || exit 1
+
+clean:
+	$(MAKE) -C rappture clean || exit 1
+	$(RM) $(CLASSFILES) $(OBJS) $(HEADERS) $(lib) $(shared_lib) 
+
+distclean: clean
+	$(MAKE) -C rappture distclean || exit 1
+	$(RM) Makefile
+
Index: /tags/1.6.0/lang/java/Units.java
===================================================================
--- /tags/1.6.0/lang/java/Units.java	(revision 6168)
+++ /tags/1.6.0/lang/java/Units.java	(revision 6168)
@@ -0,0 +1,45 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Ben Rafferty, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+/*
+ * This file defines a java class that implemements the rappture units module.
+ * The class methods call the corresponding native code through c++ glue code
+ * located in jRpUnits.cc.
+ */
+
+
+package rappture;
+
+public class Units{
+  static {
+    System.loadLibrary("JRappture");
+  }
+
+  // Public Methods------------------------------------------------------------
+  public static double convertDouble(double fromVal, String to){
+    return Double.parseDouble(
+      jRpUnitsConvert(Double.toString(fromVal), to, false));
+  }
+
+  public static String convertString(String fromVal, String to, boolean units){
+    return jRpUnitsConvert(fromVal, to, units);
+  }
+
+  public static String convertString(String fromVal, String to){
+    return jRpUnitsConvert(fromVal, to, true);
+  }
+
+  // Native Functions----------------------------------------------------------
+  private static native String jRpUnitsConvert(String fromVal, String to,
+    boolean units);
+}
+
+
+
Index: /tags/1.6.0/lang/java/Utils.java
===================================================================
--- /tags/1.6.0/lang/java/Utils.java	(revision 6168)
+++ /tags/1.6.0/lang/java/Utils.java	(revision 6168)
@@ -0,0 +1,35 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Ben Rafferty, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+/*
+ * This file defines a java class that implemements the rappture utils module.
+ * The class methods call the corresponding native code through c++ glue code
+ * located in jRpUtils.cc.
+ */
+
+package rappture;
+
+public class Utils{
+  static{
+    System.loadLibrary("JRappture");
+  }
+
+  public static void progress(int percent, String text){
+    jRpUtilsProgress(percent, text);
+  }
+
+  public static void progress(int percent){
+    jRpUtilsProgress(percent, "");
+  }
+
+  private static native void jRpUtilsProgress(int percent, String text);
+
+}
+
Index: /tags/1.6.0/lang/java/jRpLibrary.cc
===================================================================
--- /tags/1.6.0/lang/java/jRpLibrary.cc	(revision 6168)
+++ /tags/1.6.0/lang/java/jRpLibrary.cc	(revision 6168)
@@ -0,0 +1,153 @@
+/* * ======================================================================
+ *  AUTHOR:  Ben Rafferty, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+/*
+ * This file defines the native functions which are called by the java Library
+ * class methods, and in turn call the corresponding rappture RpLibrary methods.
+ */
+
+#include "jRpLibrary.h"
+#include "rappture.h"
+
+/*
+ * Constructor.  Creates a C++ RpLibrary object and returns its address to 
+ * java as a long int.
+ */
+JNIEXPORT jlong JNICALL Java_rappture_Library_jRpLibrary
+  (JNIEnv *env, jobject obj, jstring javaPath){
+  RpLibrary* lib = NULL;
+  const char* nativePath;
+  jclass ex;
+  
+  if (javaPath == NULL){
+    lib = new RpLibrary();
+  }
+  else{
+    nativePath = env->GetStringUTFChars(javaPath, 0);
+    lib = new RpLibrary(nativePath);
+    env->ReleaseStringUTFChars(javaPath, nativePath);
+  }
+
+  if (lib == NULL){
+    ex = env->FindClass("java/lang/NullPointerException");
+    if (ex){
+      env->ThrowNew(ex, "Could not create rappture library.");
+    }
+    env->DeleteLocalRef(ex);
+  }
+
+  return (jlong)lib;
+}
+
+/*
+ * Destructor.  This function is called by the java Library class's
+ * finalizer.  Deletes the C++ RpLibrary object when the java Library
+ * is garbage collected.
+ */
+JNIEXPORT void JNICALL Java_rappture_Library_jRpDeleteLibrary
+  (JNIEnv *env, jobject obj, jlong libPtr){
+  delete (RpLibrary*) libPtr;
+  return;
+}
+
+// getData 
+JNIEXPORT jbyteArray JNICALL Java_rappture_Library_jRpGetData
+  (JNIEnv *env, jobject obj, jlong libPtr, jstring javaPath){
+  const char* nativePath = env->GetStringUTFChars(javaPath, 0);
+  Rappture::Buffer buf = ((RpLibrary*)libPtr)->getData(nativePath);
+  size_t size = buf.size();
+  _jbyteArray* jbuf = env->NewByteArray(size);
+  env->SetByteArrayRegion(jbuf, 0, size, (const jbyte*)buf.bytes());
+  env->ReleaseStringUTFChars(javaPath, nativePath);
+  return jbuf;
+}
+
+// getDouble
+JNIEXPORT jdouble JNICALL Java_rappture_Library_jRpGetDouble
+  (JNIEnv *env, jobject obj, jlong libPtr, jstring javaPath){
+  const char* nativePath = env->GetStringUTFChars(javaPath, 0);
+  double retDVal = ((RpLibrary*)libPtr)->getDouble(nativePath);
+  env->ReleaseStringUTFChars(javaPath, nativePath);
+  return (jdouble)retDVal;
+}
+
+// getInt
+JNIEXPORT jint JNICALL Java_rappture_Library_jRpGetInt
+  (JNIEnv *env, jobject obj, jlong libPtr, jstring javaPath){
+  const char* nativePath = env->GetStringUTFChars(javaPath, 0);
+  int retIVal = ((RpLibrary*)libPtr)->getInt(nativePath);
+  env->ReleaseStringUTFChars(javaPath, nativePath);
+  return (jint)retIVal;
+}
+
+// getString
+JNIEXPORT jstring JNICALL Java_rappture_Library_jRpGetString
+  (JNIEnv *env, jobject obj, jlong libPtr, jstring javaPath){
+  const char* nativePath = env->GetStringUTFChars(javaPath, 0);
+  std::string retStr = ((RpLibrary*)libPtr)->getString(nativePath);
+  env->ReleaseStringUTFChars(javaPath, nativePath);
+  return(env->NewStringUTF(retStr.c_str()));
+}
+
+// putDouble
+JNIEXPORT void JNICALL Java_rappture_Library_jRpPutDouble
+  (JNIEnv *env, jobject obj, jlong libPtr, jstring javaPath, 
+   jdouble value, jboolean append){
+  const char* nativePath = env->GetStringUTFChars(javaPath, 0);
+  ((RpLibrary*)libPtr)->put(nativePath, value, "", (int)append);
+  env->ReleaseStringUTFChars(javaPath, nativePath);
+}
+
+// put
+JNIEXPORT void JNICALL Java_rappture_Library_jRpPut
+  (JNIEnv *env, jobject obj, jlong libPtr, jstring javaPath, jstring javaValue, jboolean append){
+  const char* nativePath = env->GetStringUTFChars(javaPath, 0);
+  const char* nativeValue = env->GetStringUTFChars(javaValue, 0);
+  ((RpLibrary*)libPtr)->put(nativePath, nativeValue, "", (int)append);
+  env->ReleaseStringUTFChars(javaPath, nativePath);
+  env->ReleaseStringUTFChars(javaValue, nativeValue);
+}
+
+// putData
+JNIEXPORT void JNICALL Java_rappture_Library_jRpPutData
+  (JNIEnv *env, jobject obj, jlong libPtr, jstring javaPath,
+    jbyteArray jb, jint nbytes, jboolean append){
+  const char* nativePath = env->GetStringUTFChars(javaPath, 0);
+  jbyte* b = env->GetByteArrayElements(jb, NULL);
+  ((RpLibrary*)libPtr)->putData(nativePath, (const char*)b, 
+                                nbytes, (int)append);
+  env->ReleaseByteArrayElements(jb, b, 0);
+  env->ReleaseStringUTFChars(javaPath, nativePath);
+}
+
+// putFile
+JNIEXPORT void JNICALL Java_rappture_Library_jRpPutFile
+  (JNIEnv *env, jobject obj, jlong libPtr, jstring javaPath, 
+   jstring javaFileName, jboolean compress, jboolean append){
+  const char* nativePath = env->GetStringUTFChars(javaPath, 0);
+  const char* nativeFileName = env->GetStringUTFChars(javaFileName, 0);
+  ((RpLibrary*)libPtr)->putFile(nativePath, nativeFileName, 
+                                (int)compress, (int)append);
+  env->ReleaseStringUTFChars(javaPath, nativePath);
+  env->ReleaseStringUTFChars(javaFileName, nativeFileName);
+}
+
+// result
+JNIEXPORT void JNICALL Java_rappture_Library_jRpResult
+  (JNIEnv *env, jobject obj, jlong libPtr, jint exitStatus){
+  ((RpLibrary*)libPtr)->result(exitStatus);
+}
+
+// xml
+JNIEXPORT jstring JNICALL Java_rappture_Library_jRpXml
+  (JNIEnv *env, jobject obj, jlong libPtr) {
+  std::string retStr = ((RpLibrary*)libPtr)->xml();
+  return(env->NewStringUTF(retStr.c_str()));
+}
+
Index: /tags/1.6.0/lang/java/jRpUnits.cc
===================================================================
--- /tags/1.6.0/lang/java/jRpUnits.cc	(revision 6168)
+++ /tags/1.6.0/lang/java/jRpUnits.cc	(revision 6168)
@@ -0,0 +1,51 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Ben Rafferty, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+/*
+ * This file defines the native functions which are called by the java Units
+ * class methods, and in turn call the corresponding rappture RpUnits methods.
+ */
+
+#include "jRpUnits.h"
+#include "rappture.h"
+
+// convertString
+JNIEXPORT jstring JNICALL Java_rappture_Units_jRpUnitsConvert
+  (JNIEnv *env, jclass cls, jstring javaFromVal, jstring javaTo, jboolean units){
+  const char* nativeFromVal = env->GetStringUTFChars(javaFromVal, 0);
+  const char* nativeTo = env->GetStringUTFChars(javaTo, 0);
+  int err;
+  jclass ex;
+  std::string errorMsg;
+
+  // perform conversion
+  std::string retStr = RpUnits::convert(nativeFromVal, nativeTo,
+                                       (int)units, &err);
+
+  // raise a runtime exception on error
+  if (err){
+    ex = env->FindClass("java/lang/RuntimeException");
+    if (ex){
+      errorMsg = "Cannot convert ";
+      errorMsg += nativeFromVal;
+      errorMsg += " to ";
+      errorMsg += nativeTo;
+      env->ThrowNew(ex, errorMsg.c_str());
+    }
+    env->DeleteLocalRef(ex);
+  }
+
+  env->ReleaseStringUTFChars(javaFromVal, nativeFromVal);
+  env->ReleaseStringUTFChars(javaTo, nativeTo);
+
+  // create new java string and return
+  return (env->NewStringUTF(retStr.c_str()));
+} 
+
Index: /tags/1.6.0/lang/java/jRpUtils.cc
===================================================================
--- /tags/1.6.0/lang/java/jRpUtils.cc	(revision 6168)
+++ /tags/1.6.0/lang/java/jRpUtils.cc	(revision 6168)
@@ -0,0 +1,35 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Ben Rafferty, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+/*
+ * This file defines the native functions which are called by the java Utils
+ * class methods, and in turn call the corresponding rappture RpUtils methods.
+ */
+
+#include "jRpUtils.h"
+#include "rappture.h"
+
+// progress
+JNIEXPORT void JNICALL Java_rappture_Utils_jRpUtilsProgress
+  (JNIEnv *env, jclass cls, jint percent, jstring javaText){
+  const char* nativeText = env->GetStringUTFChars(javaText, 0);
+  int err = Rappture::Utils::progress(percent, nativeText);
+  jclass ex;
+  if (err){
+    ex = env->FindClass("java/lang/RuntimeException");
+    if (ex){
+      env->ThrowNew(ex, "rappture.Utils.progress failed.");
+    }
+    env->DeleteLocalRef(ex);
+  }
+  env->ReleaseStringUTFChars(javaText, nativeText);
+  return;
+}
+
Index: /tags/1.6.0/lang/java/rappture/Makefile.in
===================================================================
--- /tags/1.6.0/lang/java/rappture/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/java/rappture/Makefile.in	(revision 6168)
@@ -0,0 +1,69 @@
+
+.SUFFIXES:	.class .java
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+destdir		= $(libdir)/java
+packagedir	= $(destdir)/rappture
+VPATH           = $(srcdir):rappture
+
+INSTALL         = @INSTALL@
+SOEXT           = @SHLIB_SUFFIX@
+
+JAVA_HOME	= @JAVA_HOME@
+JAVA_INCLUDES	= @JAVA_INC_SPEC@
+JAVA		= @JAVA@
+JAVAC		= @JAVAC@
+JAVAH		= @JAVAH@
+
+CXX             = @CXX@
+CC              = @CXX@
+
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@ -Wall
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD        = @STLIB_LD@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+CFLAGS          = ${CFLAGS_DEFAULT} ${CFLAGS_WARNING} ${SHLIB_CFLAGS}
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+
+MKDIR_P		= @MKDIR_P@
+RM		= rm -f
+
+INCLUDES	= $(JAVA_INCLUDES) -I $(srcdir)/../../src/core -I .
+LIBS		= -L../../src/core -lrappture
+
+CLASSPATH	= .:..
+JAVAC_SWITCHES	= -cp $(CLASSPATH) -d .
+JAVAH_SWITCHES	= -jni -classpath $(CLASSPATH) 
+
+CLASSFILES	= \
+		Library.class \
+		Units.class \
+		Utils.class 
+
+all:
+
+install: $(CLASSFILES)
+	$(MKDIR_P) -m 0755 $(packagedir)
+	for i in $(CLASSFILES) ; do \
+	    $(INSTALL) -m 0444 $$i $(packagedir) ; \
+	done
+
+clean:
+	$(RM) $(CLASSFILES)  
+
+distclean: clean
+	$(RM) Makefile
+
Index: /tags/1.6.0/lang/matlab/Makefile.in
===================================================================
--- /tags/1.6.0/lang/matlab/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/matlab/Makefile.in	(revision 6168)
@@ -0,0 +1,95 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+destdir 	= $(libdir)/matlab 
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+MEX             = @MEX@ 
+MEX_ARCH	= @MEX_ARCH@
+MEXEXT		= @MEXEXT@
+EXT		= .$(MEXEXT)
+
+matlabdir	= $$RAPPTURE_INSTALL_DIR/lib/matlab
+
+INCLUDES  	= \
+		-I$(srcdir)/../../src/core \
+		-I$(prefix)/include 
+DEFINES		= -g 
+LIBS		=  -L../../src/core -L$(libdir) -lrappture
+
+MEX_FLAGS	= $(MEX_ARCH) $(INCLUDES) $(DEFINES)
+
+OBJS		= \
+		rpAddPresets$(EXT) \
+		rpLib$(EXT) \
+		rpLibChildren$(EXT) \
+		rpLibChildrenByType$(EXT) \
+		rpLibElement$(EXT) \
+		rpLibElementAsComp$(EXT) \
+		rpLibElementAsId$(EXT) \
+		rpLibElementAsObject$(EXT) \
+		rpLibElementAsType$(EXT) \
+		rpLibGet$(EXT) \
+		rpLibGetDouble$(EXT) \
+		rpLibGetString$(EXT) \
+		rpLibNodeComp$(EXT) \
+		rpLibNodeId$(EXT) \
+		rpLibNodeType$(EXT) \
+		rpLibPut$(EXT) \
+		rpLibPutData$(EXT) \
+		rpLibPutDouble$(EXT) \
+		rpLibPutFile$(EXT) \
+		rpLibPutString$(EXT) \
+		rpLibResult$(EXT) \
+		rpLibXml$(EXT) \
+		rpUnitsConvert$(EXT) \
+		rpUnitsConvertDbl$(EXT) \
+		rpUnitsConvertObjDbl$(EXT) \
+		rpUnitsConvertObjStr$(EXT) \
+		rpUnitsConvertStr$(EXT) \
+		rpUnitsDefineUnit$(EXT) \
+		rpUnitsFind$(EXT) \
+		rpUnitsGetBasis$(EXT) \
+		rpUnitsGetExponent$(EXT) \
+		rpUnitsGetUnits$(EXT) \
+		rpUnitsGetUnitsName$(EXT) \
+		rpUtilsProgress$(EXT) \
+		rpExec$(EXT)
+
+# MEX can't be run in parallel since it generates temporary files
+# that collide with further compilations.
+.NOTPARALLEL:
+
+all: $(OBJS) 
+
+.SUFFIXES: .cc $(EXT)
+
+.c$(EXT):
+	$(MEX) $(MEX_FLAGS) $<
+
+.cc$(EXT):
+	$(MEX) $(MEX_FLAGS) $< $(srcdir)/RpMatlabInterface.cc $(LIBS)
+
+install: $(OBJS) 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(OBJS) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean: 
+	$(RM) $(OBJS) 
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/lang/matlab/RpMatlabInterface.cc
===================================================================
--- /tags/1.6.0/lang/matlab/RpMatlabInterface.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/RpMatlabInterface.cc	(revision 6168)
@@ -0,0 +1,91 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Interface Helper Functions
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpMatlabInterface.h"
+
+int
+getIntInput ( const mxArray* prhs ) {
+
+    int retVal = -1;
+    retVal = (int) getDoubleInput(prhs);
+    return retVal;
+}
+
+double
+getDoubleInput ( const mxArray* prhs ) {
+
+    double retVal = -1;
+
+    /* Input must be a double. */
+    if (mxIsDouble(prhs) != 1) {
+        mexErrMsgTxt("Input must be a double.");
+        return retVal;
+    }
+
+    /* Input must be a scalar. */
+    if ( (mxGetN(prhs)*mxGetM(prhs)) != 1) {
+        mexErrMsgTxt("Input must be a scalar.");
+        return retVal;
+    }
+
+    retVal = *mxGetPr(prhs);
+
+    return retVal;
+}
+
+char*
+getStringInput ( const mxArray* prhs ) {
+
+    int         buflen = 0;
+    int         status = 0;
+    char*       path = NULL;
+
+    /* Input must be a string. */
+    if (mxIsChar(prhs) != 1)
+        mexErrMsgTxt("Input must be a string.");
+
+    /* Input must be a row vector. */
+    if ( (mxGetM(prhs) == 0) && (mxGetN(prhs) == 0)) {
+        // do nothin, accept empty strings
+    } else if ( (mxGetM(prhs)) != 1) {
+        mexErrMsgTxt("Input must be a row vector.");
+    }
+
+    /* Get the length of the input string. */
+    buflen = (mxGetM(prhs) * mxGetN(prhs)) + 1;
+
+    /* Allocate memory for input and output strings. */
+    path = (char*) mxCalloc(buflen, sizeof(char));
+
+    /* Copy the string data from prhs[0] into a C string
+     * path. */
+    status = mxGetString(prhs, path, buflen);
+    if (status != 0)
+        mexWarnMsgTxt("Not enough space. String is truncated.");
+
+    return path;
+}
+
+void
+freeStringInput (void* ptr) {
+    if (ptr != NULL) {
+        mxFree(ptr);
+    }
+    ptr = NULL;
+}
+
+void
+rpmxFlush() {
+    mxArray * emptyStr = mxCreateString("");
+    mexCallMATLAB(0,0,1,&emptyStr,"fprintf");
+}
+
Index: /tags/1.6.0/lang/matlab/RpMatlabInterface.h
===================================================================
--- /tags/1.6.0/lang/matlab/RpMatlabInterface.h	(revision 6168)
+++ /tags/1.6.0/lang/matlab/RpMatlabInterface.h	(revision 6168)
@@ -0,0 +1,37 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Rappture-Matlab Bindings Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _Rp_MATLAB_HELPER_H
+#define _Rp_MATLAB_HELPER_H
+
+#include "rappture.h"
+#include "RpBindingsDict.h"
+
+// include the matlab api header
+#include "mex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    int     getIntInput     ( const mxArray* prhs );
+    double  getDoubleInput  ( const mxArray* prhs );
+    char*   getStringInput  ( const mxArray* prhs );
+    void    freeStringInput ( void* ptr);
+    void    rpmxFlush       ();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _Rp_MATLAB_HELPER_H
Index: /tags/1.6.0/lang/matlab/rpAddPresets.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpAddPresets.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpAddPresets.cc	(revision 6168)
@@ -0,0 +1,41 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    result = rpAddPresets(presetName)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    std::string presetName  = "";
+    int result = -1;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 1)
+        mexErrMsgTxt("Too many output arguments.");
+
+    presetName = getStringInput(prhs[0]);
+
+    /* Call the C subroutine. */
+    if ( !presetName.empty() ) {
+        result = RpUnits::addPresets(presetName);
+    }
+
+    /* Set output to MATLAB mexFunction output */
+    plhs[0] = mxCreateDoubleScalar((double)result);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpExec.c
===================================================================
--- /tags/1.6.0/lang/matlab/rpExec.c	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpExec.c	(revision 6168)
@@ -0,0 +1,266 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Interface Helper Functions
+ *
+ * ======================================================================
+ *  AUTHOR:  Steven Clark, Purdue University
+ *  Copyright (c) 2015-2015  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <stdarg.h>
+#include <string.h>
+
+int pid;
+int parentSignal = 0;
+
+void sighup(int sigNum) {
+   if(pid != 0) {
+      parentSignal = SIGHUP;
+      kill(pid,SIGHUP);
+   }
+}
+
+void sigint(int sigNum) {
+   if(pid != 0) {
+      parentSignal = SIGINT;
+      kill(pid,SIGINT);
+   }
+}
+
+void sigterm(int sigNum) {
+   if(pid != 0) {
+      parentSignal = SIGTERM;
+      kill(pid,SIGTERM);
+   }
+}
+
+#define MAXBUFFER 1024
+
+struct stdResults {
+   int streamOutput;
+   char *stdoutBuffer;
+   char *stderrBuffer;
+};
+
+int systemCommand(char *commandExe,
+                  char **commandArgs,
+                  struct stdResults *commandOutput)
+{
+   int             exitPid;
+   int             status;
+   int             exitStatus = 0;
+   int             termSignal = 0;
+   int             signalStatus = 1<<7;
+   sighandler_t    matlabSighup;
+   sighandler_t    matlabSigint;
+   sighandler_t    matlabSigterm;
+   int             stdoutPipe[2];
+   int             stderrPipe[2];
+   fd_set          fdSet;
+   struct timeval  timeout;
+   int             selectReturn;
+   char            buffer[MAXBUFFER+1];
+   int             stdoutEOF;
+   int             stderrEOF;
+   int             nRead;
+   int             stdoutBufferSize = 32*MAXBUFFER;
+   int             stderrBufferSize = 32*MAXBUFFER;
+   char           *stdoutBuffer;
+   char           *stderrBuffer;
+   int             error;
+
+   error = pipe(stdoutPipe);
+   error = pipe(stderrPipe);
+
+   if((pid = fork()) < 0) {
+      perror("fork");
+      return(1);
+   }
+
+   matlabSighup = signal(SIGHUP,sighup);
+   matlabSigint = signal(SIGINT,sigint);
+   matlabSigterm = signal(SIGTERM,sigterm);
+
+   if(pid == 0) { /* child */
+      dup2(stdoutPipe[1],STDOUT_FILENO);
+      dup2(stderrPipe[1],STDERR_FILENO);
+      close(stdoutPipe[0]);
+      close(stderrPipe[0]);
+
+      signal(SIGHUP,SIG_DFL);
+      signal(SIGINT,SIG_DFL);
+      signal(SIGTERM,SIG_DFL);
+
+      execvp(commandExe,commandArgs);
+   } else {       /* parent */
+      close(stdoutPipe[1]);
+      close(stderrPipe[1]);
+
+      stdoutBuffer = (char *)calloc(stdoutBufferSize,sizeof(char));
+      stderrBuffer = (char *)calloc(stderrBufferSize,sizeof(char));
+
+      stdoutEOF = 0;
+      stderrEOF = 0;
+      while(!stdoutEOF || !stderrEOF) {
+         FD_ZERO(&fdSet);
+         if(!stdoutEOF)
+            FD_SET(stdoutPipe[0],&fdSet);
+         if(!stderrEOF)
+            FD_SET(stderrPipe[0],&fdSet);
+         timeout.tv_sec = 0;
+         timeout.tv_usec = 500000;
+
+         selectReturn = select(FD_SETSIZE,&fdSet,NULL,NULL,&timeout);
+         if(selectReturn > 0) {
+            if(FD_ISSET(stdoutPipe[0],&fdSet)) {
+               nRead = read(stdoutPipe[0],buffer,MAXBUFFER);
+               if(nRead > 0) {
+                  buffer[nRead] = '\0';
+                  if(strlen(stdoutBuffer)+nRead > stdoutBufferSize) {
+                     stdoutBufferSize = 2*stdoutBufferSize;
+                     stdoutBuffer = (char *)realloc(stdoutBuffer,stdoutBufferSize);
+                  }
+                  strcat(stdoutBuffer,buffer);
+                  if(commandOutput->streamOutput)
+                     fprintf(stdout,"%s",buffer);
+               } else {
+                  stdoutEOF = 1;
+               }
+            }
+            if(FD_ISSET(stderrPipe[0],&fdSet)) {
+               nRead = read(stderrPipe[0],buffer,MAXBUFFER);
+               if(nRead > 0) {
+                  buffer[nRead] = '\0';
+                  if(strlen(stderrBuffer)+nRead > stderrBufferSize) {
+                     stderrBufferSize = 2*stderrBufferSize;
+                     stderrBuffer = (char *)realloc(stderrBuffer,stderrBufferSize);
+                  }
+                  strcat(stderrBuffer,buffer);
+                  if(commandOutput->streamOutput)
+                     fprintf(stderr,"%s",buffer);
+               } else {
+                  stderrEOF = 1;
+               }
+            }
+         }
+      }
+
+      commandOutput->stdoutBuffer = stdoutBuffer;
+      commandOutput->stderrBuffer = stderrBuffer;
+
+      exitPid = waitpid(pid,&status,0);
+      if       (WIFSIGNALED(status)) {
+         termSignal = WTERMSIG(status);
+         exitStatus = signalStatus + termSignal;
+      } else if(WIFSTOPPED(status)) {
+         termSignal = WSTOPSIG(status);
+         exitStatus = signalStatus + termSignal;
+      } else if(WIFEXITED(status)) {
+         if(parentSignal > 0) {
+            termSignal = parentSignal;
+            exitStatus = signalStatus + termSignal;
+         } else {
+            exitStatus = WEXITSTATUS(status);
+         }
+      }
+   }
+   signal(SIGHUP,matlabSighup);
+   signal(SIGINT,matlabSigint);
+   signal(SIGTERM,matlabSigterm);
+
+   return(exitStatus);
+}
+
+#include "mex.h"
+
+void mexFunction( int nlhs, mxArray *plhs[],
+                  int nrhs, const mxArray *prhs[] )
+{
+   const mxArray      *cellArray;
+   const mwSize       *dims;
+   mwIndex             i1;
+   char               *tmp;
+   char              **commandArgs;
+   int                 exitStatus = 0;
+   int                *return1;
+   int                 streamOutput;
+   struct stdResults   commandOutput;
+
+   commandOutput.stdoutBuffer = NULL;
+   commandOutput.stderrBuffer = NULL;
+
+   /* check proper input and output */
+   if(nrhs != 2) {
+      mexErrMsgIdAndTxt("rpExec:invalidNumInputs","Two input arguments required.");
+      exitStatus = 1;
+   }
+   if(nlhs > 3) {
+      mexErrMsgIdAndTxt("rpExec:maxlhs","Too many output arguments.");
+      exitStatus = 1;
+   }
+
+   if(exitStatus == 0) {
+      if       (!mxIsCell(prhs[0])) {
+         mexErrMsgIdAndTxt("rpExec:inputNotCell","Command must be a cell array.");
+         exitStatus = 1;
+      } else if(mxGetNumberOfDimensions(prhs[0]) != 2) {
+         mexErrMsgIdAndTxt("rpExec:inputNot2DCell","Command must be a 2 dimensional cell array.");
+         exitStatus = 1;
+      } else if(mxGetM(prhs[0]) != 1) {
+         mexErrMsgIdAndTxt("rpExec:inputNotVector","Command must be a row vector.");
+         exitStatus = 1;
+      }
+   }
+
+   if(exitStatus == 0) {
+      if(mxGetNumberOfElements(prhs[1]) != 1) {
+         mexErrMsgIdAndTxt("rpExec:inputNotScalar","streamOutput must be a scaler.");
+         exitStatus = 1;
+      }
+   }
+
+   if(exitStatus == 0) {
+      dims = mxGetDimensions(prhs[0]);
+      commandArgs = mxCalloc(dims[1]+1,sizeof(char *));
+      for(i1=0; i1<dims[1]; i1++) {
+         cellArray = mxGetCell(prhs[0],i1);
+         commandArgs[i1] = mxArrayToString(cellArray);
+      }
+      commandArgs[dims[1]] = NULL;
+
+      commandOutput.streamOutput = mxGetScalar(prhs[1]);
+      exitStatus = systemCommand(commandArgs[0],commandArgs,&commandOutput);
+
+      for(i1=0; i1<dims[1]; i1++) {
+         mxFree(commandArgs[i1]);
+      }
+      mxFree(commandArgs);
+   }
+
+   if(nlhs > 0) {
+      plhs[0] = mxCreateNumericMatrix(1,1,mxINT32_CLASS,mxREAL);
+      return1 = (int *)mxGetData(plhs[0]);
+      return1[0] = exitStatus;
+   }
+
+   if(nlhs > 1) {
+      plhs[1] = mxCreateString(commandOutput.stdoutBuffer);
+   }
+
+   if(nlhs > 2) {
+      plhs[2] = mxCreateString(commandOutput.stderrBuffer);
+   }
+
+   free(commandOutput.stdoutBuffer);
+   free(commandOutput.stderrBuffer);
+}
+
+
Index: /tags/1.6.0/lang/matlab/rpLib.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLib.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLib.cc	(revision 6168)
@@ -0,0 +1,56 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [libHandle,err] = rpLib(fileName)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [libHandle,err] = rpLib (fileName)
+/// Opens a Rappture Library Object based on the xml file 'fileName'.
+/**
+ * Usually called in the beginning of a program to load an xml file
+ * for future reading.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    std::string path;
+    RpLibrary* lib = NULL;
+    int libIndex = 0;
+    int err = 1;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1) {
+        mexErrMsgTxt("One input required.");
+    }
+
+    path = getStringInput(prhs[0]);
+
+    /* Call the C++ subroutine. */
+    lib = new RpLibrary(path);
+    if (lib) {
+        // store the library and return a dictionary key
+        libIndex = storeObject_Void((void*)lib);
+        if (libIndex) {
+            err = 0;
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(libIndex);
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibChildren.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibChildren.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibChildren.cc	(revision 6168)
@@ -0,0 +1,79 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [nodeHandle,err] = rpLibChildren(libHandle,path,prevNodeHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [nodeHandle,err] = rpLibChildren(libHandle,path,prevNodeHandle)
+/// Retrieve the children of the node described by 'path'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns its
+ * children. If 'prevNodeHandle' = 0, then the`
+ * first child is returned, else, the next child is retrieved.
+ * If 'prevNodeHandle' is an invalid child handle, an error will be returned.
+ * Subsequent calls to rpLibChildren() should use previously`
+ * returned 'nodeHandle's for it 'prevNodeHandle' argument.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex = 0;
+    int         childIndex = 0;
+    int         retLibIndex = 0;
+    int         err = 1;
+    RpLibrary*  lib = NULL;
+    RpLibrary*  child = NULL;
+    RpLibrary*  retLib = NULL;
+    std::string  path = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 3) {
+        mexErrMsgTxt("Three input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+    childIndex = getIntInput(prhs[2]);
+
+    /* Call the C++ subroutine. */
+    if ( (libIndex > 0)     &&
+         (!path.empty())      &&
+         (childIndex >= 0)      ) {
+
+        lib = (RpLibrary*) getObject_Void(libIndex);
+
+        if (childIndex > 0) {
+            child = (RpLibrary*) getObject_Void(childIndex);
+        }
+
+        if (lib) {
+            retLib = lib->children(path,child);
+            retLibIndex = storeObject_Void((void*)retLib);
+            if (retLibIndex) {
+                err = 0;
+            }
+        }
+    }
+
+    /* Set double scalar node handle to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retLibIndex);
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibChildrenByType.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibChildrenByType.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibChildrenByType.cc	(revision 6168)
@@ -0,0 +1,78 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [nodeHandle,err] = rpLibChildrenByType(libHandle,path,prevNodeHandle,type)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [nodeHandle,err] = rpLibChildrenByType(libHandle,path,prevNodeHandle,type)
+/// Retrieve the children of the node described by 'path' of type 'type'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns its
+ * children that match the type 'type'. If 'prevNodeHandle' = 0, then the`
+ * first child is returned, else, the next child is retrieved.
+ * If 'prevNodeHandle' is an invalid child handle, an error will be returned.
+ * Subsequent calls to rpLibChildrenByType() should use previously`
+ * returned 'nodeHandle's for it 'prevNodeHandle' argument.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex = 0;
+    int         childIndex = 0;
+    int         retLibIndex = 0;
+    int         err = 1;
+    RpLibrary*  lib = NULL;
+    RpLibrary*  child = NULL;
+    RpLibrary*  retLib = NULL;
+    std::string path = "";
+    std::string type = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 4) {
+        mexErrMsgTxt("Four input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+    childIndex = getIntInput(prhs[2]);
+    type = getStringInput(prhs[3]);
+
+    /* Call the C++ subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) && (!type.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+
+        if (childIndex > 0) {
+            child = (RpLibrary*) getObject_Void(childIndex);
+        }
+
+        if (lib) {
+            retLib = lib->children(path,child,type);
+            retLibIndex = storeObject_Void((void*)retLib);
+            if (retLibIndex) {
+                err = 0;
+            }
+        }
+    }
+
+    /* Set double scalar node handle to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retLibIndex);
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibElement.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibElement.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibElement.cc	(revision 6168)
@@ -0,0 +1,66 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [nodeHandle,err] = rpLibElement(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retVal,err] = rpLibElement(libHandle,path)
+/// Return a handle to the element at location 'path' in 'libHandle'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns
+ * a handle to it.
+ *
+ * If path is an empty string, the root of the node is used. 'libHandle'
+ * is the handle representing the instance of the RpLibrary object.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex = 0;
+    int         retLibIndex = 0;
+    int         err = 1;
+    RpLibrary*  lib = NULL;
+    RpLibrary*  retLib = NULL;
+    std::string path = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 2) {
+        mexErrMsgTxt("Two input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+
+    /* Call the C++ subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+        if (lib) {
+            retLib = lib->element(path);
+            retLibIndex = storeObject_Void((void*)retLib);
+            if (retLibIndex) {
+                err = 0;
+            }
+        }
+    }
+
+    /* Set double scalar node handle to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retLibIndex);
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibElementAsComp.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibElementAsComp.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibElementAsComp.cc	(revision 6168)
@@ -0,0 +1,68 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpLibElementAsComp(lib,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibElementAsComp(libHandle,path)
+/// Return the component name of the element at location 'path' in 'libHandle'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns its
+ * component name, a concatination of the type, id, and index.
+ * If path is an empty string, the root of the node is used. 'libHandle'
+ * is the handle representing the instance of the RpLibrary object.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex = 0;
+    int         retLibIndex = 0;
+    int         err = 0;
+    RpLibrary*  lib = NULL;
+    RpLibrary*  eleLib = NULL;
+    std::string path = "";
+    std::string retStr = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 2) {
+        mexErrMsgTxt("Two input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+
+    /* Call the C++ subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+        if (lib) {
+            eleLib = lib->element(path);
+            if (eleLib) {
+                retStr = eleLib->nodeComp();
+                if (!retStr.empty()) {
+                    err = 0;
+                }
+            }
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retStr.c_str());
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibElementAsId.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibElementAsId.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibElementAsId.cc	(revision 6168)
@@ -0,0 +1,68 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpLibElementAsId(lib,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibElementAsId(libHandle,path)
+/// Return the id attribute of the element at location 'path' in 'libHandle'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns its
+ * id attribute.
+ *
+ * If path is an empty string, the root of the node is used. 'libHandle'
+ * is the handle representing the instance of the RpLibrary object.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex = 0;
+    int         retLibIndex = 0;
+    int         err = 1;
+    RpLibrary*  lib = NULL;
+    RpLibrary*  eleLib = NULL;
+    std::string path = "";
+    std::string retStr = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 2) {
+        mexErrMsgTxt("Two input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+
+    /* Call the C subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+        if (lib) {
+            eleLib = lib->element(path);
+            if (eleLib) {
+                retStr = eleLib->nodeId();
+                // an empty id field is valid
+                err = 0;
+            }
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retStr.c_str());
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibElementAsObject.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibElementAsObject.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibElementAsObject.cc	(revision 6168)
@@ -0,0 +1,66 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [nodeHandle,err] = rpLibElementAsObject(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibElementAsObject(libHandle,path)
+/// Return a handle to the element at location 'path' in 'libHandle'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns
+ * a handle to it.
+ *
+ * If path is an empty string, the root of the node is used. 'libHandle'
+ * is the handle representing the instance of the RpLibrary object.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex = 0;
+    int         retLibIndex = 0;
+    int         err = 1;
+    RpLibrary*  lib = NULL;
+    RpLibrary*  retLib = NULL;
+    std::string path = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 2) {
+        mexErrMsgTxt("Two input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+
+    /* Call the C++ subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+        if (lib) {
+            retLib = lib->element(path);
+            retLibIndex = storeObject_Void((void*)retLib);
+            if (retLibIndex) {
+                err = 0;
+            }
+        }
+    }
+
+    /* Set double scalar node handle to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retLibIndex);
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibElementAsType.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibElementAsType.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibElementAsType.cc	(revision 6168)
@@ -0,0 +1,69 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpLibElementAsType(lib,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibElementAsType(libHandle,path)
+/// Return the type name of the element at location 'path' in 'libHandle'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns its
+ * type name.
+ *
+ * If path is an empty string, the root of the node is used. 'libHandle'
+ * is the handle representing the instance of the RpLibrary object.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex = 0;
+    int         retLibIndex = 0;
+    int         err = 1;
+    RpLibrary*  lib = NULL;
+    RpLibrary*  eleLib = NULL;
+    std::string path = "";
+    std::string retStr = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 2) {
+        mexErrMsgTxt("Two input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+
+    /* Call the C++ subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+        if (lib) {
+            eleLib = lib->element(path);
+            if (eleLib) {
+                retStr = eleLib->nodeType();
+                if (!retStr.empty()) {
+                    err = 0;
+                }
+            }
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retStr.c_str());
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibGet.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibGet.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibGet.cc	(revision 6168)
@@ -0,0 +1,63 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpLibGet(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibGet(libHandle,path)
+/// Query the value of a node.
+/**
+ * Clients use this to query the value of a node.  If the path
+ * is not specified, it returns the value associated with the
+ * root node.  Otherwise, it returns the value for the element
+ * specified by the path. Values are returned as strings.
+ *
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex    = 0;
+    int         retLibIndex = 0;
+    int         err         = 1;
+    RpLibrary*  lib         = NULL;
+    std::string path        = "";
+    std::string retStr      = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 2) {
+        mexErrMsgTxt("Two input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+
+    /* Call the C subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+
+        if (lib) {
+            retStr = lib->get(path);
+            err = 0;
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retStr.c_str());
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibGetDouble.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibGetDouble.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibGetDouble.cc	(revision 6168)
@@ -0,0 +1,63 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retVal,err] = rpLibGetDouble(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retVal,err] = rpLibGetDouble(libHandle,path)
+/// Query the value of a node.
+/**
+ * Clients use this to query the value of a node.  If the path
+ * is not specified, it returns the value associated with the
+ * root node.  Otherwise, it returns the value for the element
+ * specified by the path. The return value is returned as a double.
+ *
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex    = 0;
+    int         retLibIndex = 0;
+    int         err         = 1;
+    RpLibrary*  lib         = NULL;
+    std::string path        = "";
+    double      retVal      = 0.0;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 2) {
+        mexErrMsgTxt("Two input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+
+    /* Call the C subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+
+        if (lib) {
+            retVal = lib->getDouble(path);
+            err = 0;
+        }
+    }
+
+    /* Set double scalar to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retVal);
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibGetString.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibGetString.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibGetString.cc	(revision 6168)
@@ -0,0 +1,76 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpLibGetString(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibGetString(libHandle,path)
+/// Query the value of a node.
+/**
+ * Clients use this to query the value of a node.  If the path
+ * is not specified, it returns the value associated with the
+ * root node.  Otherwise, it returns the value for the element
+ * specified by the path. Values are returned as strings.
+ *
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+
+void 
+mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
+{
+    int libIndex;
+    int err = 1;
+    std::string path;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 2) {
+        mexErrMsgTxt("wrong # of arguments: "
+		     "should be rpLibGetString(lib, path)");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+
+    /* Call the C subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+	RpLibrary*  lib;
+
+        lib = (RpLibrary*)getObject_Void(libIndex);
+        if (lib != NULL) {
+	    std::string contents;
+            contents = lib->getString(path);
+
+	    mwSize dims[2];
+	    dims[0] = 1;			/* Treat as a row vector. */
+	    dims[1] = contents.length();
+	    plhs[0] = mxCreateCharArray(2, dims);
+	    
+	    /* Copy character array (may include NULs) into the matlab
+	     * array. */
+	    const char *src = contents.c_str();
+	    mxChar *dest = (mxChar *)mxGetPr(plhs[0]);
+	    for (int i = 0; i < contents.length(); i++) {
+		dest[i] = src[i];
+	    }
+	    plhs[1] = mxCreateDoubleScalar(0);
+	    return;
+	}
+    }
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString("");
+    plhs[1] = mxCreateDoubleScalar(err);
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibNodeComp.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibNodeComp.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibNodeComp.cc	(revision 6168)
@@ -0,0 +1,60 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpLibNodeComp(nodeHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibNodeComp(nodeHandle)
+/// Return the component name of the node represented by 'nodeHandle'
+/**
+ * This method returns the component name of the node represented`
+ * by 'nodeHandle'. The component name is a concatination of the``
+ * type, id, and index.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int libIndex = 0;
+    int err = 1;
+    RpLibrary* lib = NULL;
+    std::string retStr = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1) {
+        mexErrMsgTxt("One input required.");
+    }
+
+    // grab the integer value of the library handle
+    libIndex = getIntInput(prhs[0]);
+
+    /* Call the C subroutine. */
+    if (libIndex > 0) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+        if (lib) {
+            retStr = lib->nodeComp();
+            if (!retStr.empty()) {
+                err = 0;
+            }
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retStr.c_str());
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibNodeId.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibNodeId.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibNodeId.cc	(revision 6168)
@@ -0,0 +1,57 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpLibNodeId(lib)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibNodeId(nodeHandle)
+/// Return the id name of the node represented by 'nodeHandle'
+/**
+ * This method returns the id name of the node represented`
+ * by 'nodeHandle'.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int libIndex = 0;
+    int err = 1;
+    RpLibrary* lib = NULL;
+    std::string retStr = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1) {
+        mexErrMsgTxt("One input required.");
+    }
+
+    // grab the integer value of the library handle
+    libIndex = getIntInput(prhs[0]);
+
+    /* Call the C subroutine. */
+    if (libIndex > 0) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+        if (lib) {
+            retStr = lib->nodeId();
+            err = 0;
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retStr.c_str());
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibNodeType.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibNodeType.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibNodeType.cc	(revision 6168)
@@ -0,0 +1,60 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpLibNodeType(lib)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibNodeType(nodeHandle)
+/// Return the type name of the node represented by 'nodeHandle'
+/**
+ * This method returns the type name of the node represented`
+ * by 'nodeHandle'.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int libIndex = 0;
+    int err = 1;
+    RpLibrary* lib = NULL;
+    std::string retStr = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1) {
+        mexErrMsgTxt("One input required.");
+    }
+
+    // grab the integer value of the library handle
+    libIndex = getIntInput(prhs[0]);
+
+    /* Call the C subroutine. */
+    if (libIndex > 0) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+        if (lib) {
+            retStr = lib->nodeComp();
+            if (!retStr.empty()) {
+                err = 0;
+            }
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retStr.c_str());
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibPut.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibPut.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibPut.cc	(revision 6168)
@@ -0,0 +1,67 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [err] = rpLibPut(libHandle,path,value,append)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibPut (libHandle,path,value,append)
+/// Set the value of a node.
+/**
+ * Clients use this to set the value of a node.  If the path
+ * is not specified, it sets the value for the root node.
+ * Otherwise, it sets the value for the element specified
+ * by the path.  The value is treated as the text within the`
+ * tag at the tail of the path.
+ *
+ * If the append flag is set to 1, then the`
+ * value is appended to the current value.  Otherwise, the`
+ * value specified in the function call replaces the current value.
+ *
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex = 0;
+    int         append = 0;
+    int         err    = 1;
+    RpLibrary*  lib = NULL;
+    std::string path = "";
+    std::string value = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 4) {
+        mexErrMsgTxt("Two input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+    value = getStringInput(prhs[2]);
+    append = getIntInput(prhs[3]);
+
+    /* Call the C++ subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+
+        if (lib) {
+            lib->put(path,value,"",append);
+            err = 0;
+        }
+    }
+
+    plhs[0] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibPutData.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibPutData.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibPutData.cc	(revision 6168)
@@ -0,0 +1,71 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [err] = rpLibPutData (libHandle,path,bytes,nbytes,append)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibPutData (libHandle,path,bytes,nbytes,append)
+/// Set the value of a node.
+/**
+ * Clients use this to set the value of a node.  If the path
+ * is not specified, it sets the value for the root node.
+ * Otherwise, it sets the value for the element specified
+ * by the path.  The value is treated as the text within the
+ * tag at the tail of the path.
+ *
+ * FileName is the name of the file to import into the rappture object
+ * Compress is an integer telling if you want the data compressed (use 1)
+ * or uncompressed (use 0).
+ * Append is an integer telling if this new data should overwrite
+ * (use 0) or be appended (use 1) to previous data in this node.
+ *
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex = 0;
+    int         append = 0;
+    int         nbytes = 0;
+    int         err = 1;
+    RpLibrary*  lib = NULL;
+    std::string path = "";
+    std::string bytes = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 5) {
+        mexErrMsgTxt("Five inputs required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+    bytes = getStringInput(prhs[2]);
+    nbytes = getIntInput(prhs[3]);
+    append = getIntInput(prhs[4]);
+
+    /* Call the C++ subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+
+        if (lib) {
+            lib->putData(path,bytes.c_str(),nbytes,append);
+            err = 0;
+        }
+    }
+
+    plhs[0] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibPutDouble.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibPutDouble.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibPutDouble.cc	(revision 6168)
@@ -0,0 +1,68 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [err] = rpLibPutDouble(libHandle,path,value,append)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibPutDouble (libHandle,path,value,append)
+/// Set the value of a node.
+/**
+ * Clients use this to set the value of a node.  If the path
+ * is not specified, it sets the value for the root node.
+ * Otherwise, it sets the value for the element specified
+ * by the path.  The value is treated as the text within the`
+ * tag at the tail of the path.
+ *
+ * If the append flag is set to 1, then the`
+ * value is appended to the current value.  Otherwise, the`
+ * value specified in the function call replaces the current value.
+ *
+ */
+
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex = 0;
+    int         append = 0;
+    int         err = 1;
+    RpLibrary*  lib = NULL;
+    std::string path = "";
+    double       value = 0.0;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 4) {
+        mexErrMsgTxt("Two input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+    value = getDoubleInput(prhs[2]);
+    append = getIntInput(prhs[3]);
+
+    /* Call the C subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+
+        if (lib) {
+            lib->put(path,value,"",append);
+            err = 0;
+        }
+    }
+
+    plhs[0] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibPutFile.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibPutFile.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibPutFile.cc	(revision 6168)
@@ -0,0 +1,71 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [err] = rpLibPutFile(libHandle,path,fileName,compress,append)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibPutFile (libHandle,path,fileName,compress,append)
+/// Set the value of a node.
+/**
+ * Clients use this to set the value of a node to the contents of a file.
+ * If the path is not specified, it sets the value for the root node.
+ * Otherwise, it sets the value for the element specified
+ * by the path.  The value is treated as the text within the
+ * tag at the tail of the path.
+ *
+ * FileName is the name of the file to import into the rappture object
+ * Compress is an integer telling if you want the data compressed (use 1)
+ * or uncompressed (use 0).
+ * Append is an integer telling if this new data should overwrite
+ * (use 0) or be appended (use 1) to previous data in this node.
+ *
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int          libIndex = 0;
+    unsigned int append = 0;
+    unsigned int compress = 0;
+    int          err = 1;
+    RpLibrary*   lib = NULL;
+    std::string  path = "";
+    std::string  fileName = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 5) {
+        mexErrMsgTxt("Five inputs required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path     = getStringInput(prhs[1]);
+    fileName = getStringInput(prhs[2]);
+    compress = (unsigned int) getIntInput(prhs[3]);
+    append   = (unsigned int) getIntInput(prhs[4]);
+
+    /* Call the C++ subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+
+        if (lib) {
+            lib->putFile(path,fileName,compress,append);
+            err = 0;
+        }
+    }
+
+    plhs[0] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibPutString.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibPutString.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibPutString.cc	(revision 6168)
@@ -0,0 +1,67 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [err] = rpLibPutString(libHandle,path,value,append)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibPutString (libHandle,path,value,append)
+/// Set the value of a node.
+/**
+ * Clients use this to set the value of a node.  If the path
+ * is not specified, it sets the value for the root node.
+ * Otherwise, it sets the value for the element specified
+ * by the path.  The value is treated as the text within the`
+ * tag at the tail of the path.
+ *
+ * If the append flag is set to 1, then the`
+ * value is appended to the current value.  Otherwise, the`
+ * value specified in the function call replaces the current value.
+ *
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         libIndex = 0;
+    int         append = 0;
+    int         err = 1;
+    RpLibrary*  lib = NULL;
+    std::string path = "";
+    std::string value = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 4) {
+        mexErrMsgTxt("Two input required.");
+    }
+
+    libIndex = getIntInput(prhs[0]);
+    path = getStringInput(prhs[1]);
+    value = getStringInput(prhs[2]);
+    append = getIntInput(prhs[3]);
+
+    /* Call the C++ subroutine. */
+    if ( (libIndex > 0) && (!path.empty()) ) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+
+        if (lib) {
+            lib->put(path,value,"",append);
+            err = 0;
+        }
+    }
+
+    plhs[0] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibResult.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibResult.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibResult.cc	(revision 6168)
@@ -0,0 +1,65 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [err] = rpLibResult(lib,status)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibResult (libHandle,status)
+/// Write Rappture Library to run.xml and signal end of processing.
+/**
+ * Usually the last call of the program, this function signals to the gui
+ * that processing has completed and the output is ready to be
+ * displayed
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int libIndex = 0;
+    int err = 1;
+    int status = 0;
+    RpLibrary* lib = NULL;
+
+    /* Check for proper number of arguments. */
+    if (nrhs > 2) {
+        mexErrMsgTxt("At most two input allowed.");
+    }
+
+    if (nrhs < 1) {
+        mexErrMsgTxt("One input required.");
+    }
+
+    // grab the integer value of the library handle
+    libIndex = getIntInput(prhs[0]);
+
+    if (nrhs == 2) {
+        status = getIntInput(prhs[1]);
+    }
+
+    /* Call the C subroutine. */
+    if (libIndex > 0) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+        if (lib) {
+            lib->put("tool.version.rappture.language", "matlab");
+            lib->result(status);
+            err = 0;
+            // cleanLibDict();
+        }
+    }
+
+    plhs[0] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpLibXml.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpLibXml.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpLibXml.cc	(revision 6168)
@@ -0,0 +1,59 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpLibXml(lib)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibXml (libHandle)
+/// Returns the xml from the Rappture Object represented by 'libHandle'.
+/**
+ * Usually called by user when they need to retrieve the character`
+ * representation of the xml being stored in the Rappture Library Object
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int libIndex = 0;
+    int err = 1;
+    RpLibrary* lib = NULL;
+    std::string retStr = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1) {
+        mexErrMsgTxt("One input required.");
+    }
+
+    // grab the integer value of the library handle
+    libIndex = getIntInput(prhs[0]);
+
+    /* Call the C subroutine. */
+    if (libIndex > 0) {
+        lib = (RpLibrary*) getObject_Void(libIndex);
+        if (lib) {
+            retStr = lib->xml();
+            if (!retStr.empty()) {
+                err = 0;
+            }
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retStr.c_str());
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsConvert.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsConvert.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsConvert.cc	(revision 6168)
@@ -0,0 +1,59 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,result] = rpUnitsConvert(fromVal, toUnitsName, showUnits)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpUnitsConvert(fromVal,toUnitsName,showUnits)
+/// Convert between RpUnits return a string value with or without units
+/**
+ * Convert the value and units in the string @var{fromVal} to units specified
+ * in string @var{toUnitsName}. If @var{showUnits} is set to 1, then show the
+ * units in the returned string @var{retStr}, else leave the units off.
+ * The second return value @var{err} specifies whether there was an error
+ * during conversion.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    const char* fromVal     = NULL;
+    const char* toUnitsName  = NULL;
+    int         showUnits   = 0;
+    int         result      = 0;
+    std::string retStr      = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 3)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 2)
+        mexErrMsgTxt("Too many output arguments.");
+
+    fromVal      = getStringInput(prhs[0]);
+    toUnitsName  = getStringInput(prhs[1]);
+    showUnits    = getIntInput(prhs[2]);
+
+    /* Call the C subroutine. */
+    if (fromVal && toUnitsName) {
+        retStr = RpUnits::convert(fromVal,toUnitsName,showUnits,&result);
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retStr.c_str());
+    plhs[1] = mxCreateDoubleScalar((double)result);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsConvertDbl.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsConvertDbl.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsConvertDbl.cc	(revision 6168)
@@ -0,0 +1,62 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retVal,result] = rpUnitsConvertDbl(fromVal, toUnitsName)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retVal,err] = rpUnitsConvertDbl(fromVal,toUnitsName)
+/// Convert between RpUnits return a double value without units
+/**
+ * Convert the value and units in the string @var{fromVal} to units specified
+ * in string @var{toUnitsName}. Units will not be shown in @var{retVal}.
+ * The second return value @var{err} specifies whether there was an error
+ * during conversion.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    const char* fromVal     = NULL;
+    const char* toUnitsName  = NULL;
+    int         showUnits   = 0;
+    int         result      = 0;
+    std::string retStr      = "";
+    double      retVal      = 0;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 2)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 2)
+        mexErrMsgTxt("Too many output arguments.");
+
+    fromVal      = getStringInput(prhs[0]);
+    toUnitsName  = getStringInput(prhs[1]);
+
+    /* Call the C subroutine. */
+    if (fromVal && toUnitsName) {
+        retStr = RpUnits::convert(fromVal,toUnitsName,showUnits,&result);
+
+        if ( !retStr.empty() ) {
+            retVal = atof(retStr.c_str());
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retVal);
+    plhs[1] = mxCreateDoubleScalar((double)result);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsConvertObjDbl.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsConvertObjDbl.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsConvertObjDbl.cc	(revision 6168)
@@ -0,0 +1,67 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retVal,result] = rpUnitsConvertObjDbl(fromObjHandle, toObjHandle, value)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retVal,err] = rpUnitsConvertObjDbl(fromObjHandle,toObjHandle,value)
+/// Convert between RpUnits return a double value without units
+/**
+ * Convert @var{value} from the units represented by the RpUnits object
+ * @var{fromObjHandle} to the units represented by the RpUnits object
+ * @var{toObjHandle}. On success, the converted value is returned through
+ * @var{retVal}. The second return value, @var{err}, specifies whether`
+ * there was an error during conversion.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int               result        = 0;
+    double            retVal        = 0;
+    int               fromObjHandle = 0;
+    int               toObjHandle   = 0;
+    const RpUnits*    fromObj       = NULL;
+    const RpUnits*    toObj         = NULL;
+    double            value         = 0;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 3)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 2)
+        mexErrMsgTxt("Too many output arguments.");
+
+    fromObjHandle = getIntInput(prhs[0]);
+    toObjHandle   = getIntInput(prhs[1]);
+    value         = getDoubleInput(prhs[2]);
+
+    // grab the RpUnits objects from the dictionary
+    if ( (fromObjHandle > 0) && (toObjHandle > 0) ){
+        fromObj       = getObject_UnitsStr(fromObjHandle);
+        toObj         = getObject_UnitsStr(toObjHandle);
+
+        /* Call the C subroutine. */
+        if (fromObj && toObj) {
+            retVal = fromObj->convert(toObj,value,&result);
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retVal);
+    plhs[1] = mxCreateDoubleScalar((double)result);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsConvertObjStr.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsConvertObjStr.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsConvertObjStr.cc	(revision 6168)
@@ -0,0 +1,70 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,result] = 
+ *          rpUnitsConvertObjStr(fromObjHandle, toObjHandle, value, showUnits)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpUnitsConvertObjStr(fromObjHandle,toObjHandle,value,showUnits)
+/// Convert between RpUnits return a string value with or without units
+/**
+ * Convert @var{value} from the units represented by the RpUnits object
+ * @var{fromObjHandle} to the units represented by the RpUnits object
+ * @var{toObjHandle}. If @var{showUnits} is set to 0, no units will be
+ * displayed in @var{retStr}, else units are displayed.`
+ * On success, the converted value is returned through
+ * @var{retStr}. The second return value, @var{err}, specifies whether`
+ * there was an error during conversion.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int            result        = 0;
+    std::string    retStr        = "";
+    int            fromObjHandle = 0;
+    int            toObjHandle   = 0;
+    const RpUnits* fromObj       = NULL;
+    const RpUnits* toObj         = NULL;
+    double         value         = 0;
+    int            showUnits     = 0;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 4)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 2)
+        mexErrMsgTxt("Too many output arguments.");
+
+    fromObjHandle = getIntInput(prhs[0]);
+    toObjHandle   = getIntInput(prhs[1]);
+    value         = getDoubleInput(prhs[2]);
+    showUnits     = getIntInput(prhs[3]);
+
+    // grab the RpUnits objects from the dictionary
+    fromObj       = getObject_UnitsStr(fromObjHandle);
+    toObj         = getObject_UnitsStr(toObjHandle);
+
+    /* Call the C subroutine. */
+    if (fromObj && toObj) {
+        retStr = fromObj->convert(toObj,value,showUnits,&result);
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retStr.c_str());
+    plhs[1] = mxCreateDoubleScalar((double)result);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsConvertStr.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsConvertStr.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsConvertStr.cc	(revision 6168)
@@ -0,0 +1,59 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,result] = rpUnitsConvertStr(fromVal, toUnitsName, showUnits)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpUnitsConvertStr(fromVal,toUnitsName,showUnits)
+/// Convert between RpUnits return a string value with or without units
+/**
+ * Convert the value and units in the string @var{fromVal} to units specified
+ * in string @var{toUnitsName}. If @var{showUnits} is set to 1, then show the
+ * units in the returned string @var{retStr}, else leave the units off.
+ * The second return value @var{err} specifies whether there was an error
+ * during conversion.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    const char* fromVal     = NULL;
+    const char* toUnitsName  = NULL;
+    int         showUnits   = 0;
+    int         result      = 0;
+    std::string retStr      = "";
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 3)
+        mexErrMsgTxt("Three input required.");
+    else if (nlhs > 2)
+        mexErrMsgTxt("Too many output arguments.");
+
+    fromVal      = getStringInput(prhs[0]);
+    toUnitsName  = getStringInput(prhs[1]);
+    showUnits    = getIntInput(prhs[2]);
+
+    /* Call the C subroutine. */
+    if (fromVal && toUnitsName) {
+        retStr = RpUnits::convert(fromVal,toUnitsName,showUnits,&result);
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retStr.c_str());
+    plhs[1] = mxCreateDoubleScalar((double)result);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsDefineUnit.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsDefineUnit.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsDefineUnit.cc	(revision 6168)
@@ -0,0 +1,80 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [unitsHandle,err] = rpUnitsDefineUnit(unitSymbol, basisHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [unitsHandle,err] = rpUnitsDefineUnit(unitSymbol, basisHandle)
+/// Define a new Rappture Units type.
+/**
+ * Define a new Rappture Units type which can be searched for using
+ * @var{unitSymbol} and has a basis of @var{basisHandle}. Because of
+ * the way the Rappture Units module parses unit names, complex units must
+ * be defined as multiple basic units. See the RpUnits Howto for more
+ * information on this topic. A @var{basisHandle} equal to 0 means that
+ * the unit being defined should be considered as a basis. Unit names must
+ * not be empty strings.
+ *
+ * The first return value, @var{unitsHandle} represents the handle of the
+ * instance of the RpUnits object inside the internal dictionary. On
+ * success this value will be greater than zero (0), any other value is
+ * represents failure within the function. The second return value
+ * @var{err} represents the error code returned from the function.
+ *
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    char *unitSymbol = NULL;
+    const RpUnits* basis = NULL;
+    RpUnits* myUnit = NULL;
+    int retHandle = 0;
+    int basisHandle = 0;
+    int retIndex = 0;
+    int err = 1;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 2)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 2)
+        mexErrMsgTxt("Too many output arguments.");
+
+    unitSymbol = getStringInput(prhs[0]);
+    basisHandle = getIntInput(prhs[1]);
+
+    /* Call the C subroutine. */
+    if (basisHandle > 0) {
+        basis = getObject_UnitsStr(basisHandle);
+    }
+
+    if (unitSymbol) {
+        myUnit = RpUnits::define(unitSymbol,basis);
+
+        if (myUnit) {
+            retHandle = storeObject_UnitsStr(myUnit->getUnitsName());
+            if (retHandle) {
+                err = 0;
+            }
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retHandle);
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsFind.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsFind.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsFind.cc	(revision 6168)
@@ -0,0 +1,65 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [unitsHandle,err] = rpUnitsFind(unitSymbol)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [unitHandle,err] = rpUnitsFind(unitSymbol)
+/// Search the dictionary of Rappture Units for an instance named 'unitSymbol'
+/**
+ * This method searches the Rappture Units Dictionary for the
+ * RpUnit named 'unitSymbol'. If it is found, its handle is`
+ * returned, as a non-negative integer, to the caller for further use,
+ * else a negative integer is returned signifying no unit of that`
+ * name was found.
+ * If unitSymbol is an empty string, unitHandle will be set to zero and err
+ * will be set to a positive value.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    char *unitSymbol = NULL;
+    const RpUnits* myUnit = NULL;
+    int retHandle = 0;
+    int err = 1;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 2)
+        mexErrMsgTxt("Too many output arguments.");
+
+    unitSymbol = getStringInput(prhs[0]);
+
+    /* Call the C subroutine. */
+    if (unitSymbol) {
+        myUnit = RpUnits::find(unitSymbol);
+
+        if (myUnit) {
+            retHandle = storeObject_UnitsStr(myUnit->getUnitsName());
+            if (retHandle) {
+                err = 0;
+            }
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retHandle);
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsGetBasis.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsGetBasis.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsGetBasis.cc	(revision 6168)
@@ -0,0 +1,73 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [unitsHandle,err] = rpUnitsGetBasis(unitsHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [basisHandle,err] = rpUnitsGetBasis(unitHandle)
+/// Return a handle to the basis of the provided instance of a Rappture Unit.
+/**
+ * Retrieve the basis of the Rappture Units object with the handle`
+ * 'unitHandle'. Return the handle of the basis if it exists. If there`
+ * is no basis, then return a negative integer.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    char *unitSymbol = NULL;
+    const RpUnits* myBasis = NULL;
+    const RpUnits* myUnit = NULL;
+    int retHandle = 0;
+    int unitsHandle = 0;
+    int err = 1;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 2)
+        mexErrMsgTxt("Too many output arguments.");
+
+    unitsHandle = getIntInput(prhs[0]);
+
+    /* Call the C subroutine. */
+    if (unitsHandle > 0) {
+        myUnit = getObject_UnitsStr(unitsHandle);
+
+        if (myUnit) {
+
+            myBasis = myUnit->getBasis();
+            if (myBasis) {
+                // there was a basis, store it an return
+                retHandle = storeObject_UnitsStr(myBasis->getUnitsName());
+                if (retHandle) {
+                    err = 0;
+                }
+            }
+            else {
+                // there was no basis for this unit
+                // return negative handle and set err = 0
+                retHandle = -1;
+                err = 0;
+            }
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retHandle);
+    plhs[1] = mxCreateDoubleScalar(err);
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsGetExponent.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsGetExponent.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsGetExponent.cc	(revision 6168)
@@ -0,0 +1,58 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retVal,err] = rpUnitsGetExponent(unitsHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retVal,err] = rpUnitsGetExponent(unitHandle)
+/// Return the exponent of the Rappture Unit represented by unitHandle.
+/**
+ * Retrieve the exponent of the Rappture Units object with the handle`
+ * 'unitHandle'. Return the exponent as a double.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int            unitsHandle = 0;
+    const RpUnits* unitsObj    = NULL;
+    const char*    retString   = NULL;
+    double         retVal      = 0.0;
+    int            err         = 1;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 2)
+        mexErrMsgTxt("Too many output arguments.");
+
+    unitsHandle = getIntInput(prhs[0]);
+
+    /* Call the C subroutine. */
+    if (unitsHandle > 0) {
+        unitsObj = getObject_UnitsStr(unitsHandle);
+        if (unitsObj) {
+            retVal = unitsObj->getExponent();
+            err = 0;
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retVal);
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsGetUnits.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsGetUnits.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsGetUnits.cc	(revision 6168)
@@ -0,0 +1,61 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpUnitsGetUnits(unitsHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpUnitsGetUnits(unitHandle)
+/// Return the units of the Rappture Unit represented by unitHandle.
+/**
+ * Retrieve the units of the Rappture Units object with the handle`
+ * 'unitHandle'. Note this does not include the exponent.
+ * For units and exponent in one string see rpUnitsGetUnitsName().
+ * Return the units as a string.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int            unitsHandle = 0;
+    int            err         = 1;
+    const RpUnits* unitsObj    = NULL;
+    const char*    retString   = NULL;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 2)
+        mexErrMsgTxt("Too many output arguments.");
+
+    unitsHandle = getIntInput(prhs[0]);
+
+    /* Call the C subroutine. */
+    if (unitsHandle > 0) {
+        unitsObj = getObject_UnitsStr(unitsHandle);
+        if (unitsObj) {
+            retString = unitsObj->getUnits().c_str();
+            if (retString) {
+                err = 0;
+            }
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retString);
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsGetUnitsName.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsGetUnitsName.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsGetUnitsName.cc	(revision 6168)
@@ -0,0 +1,60 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpUnitsGetUnitsName(unitsHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpUnitsGetUnitsName(unitHandle)
+/// Return the unit and exponent of the Rappture Unit represented by unitHandle.
+/**
+ * Retrieve the unit and exponent of the Rappture Units object with`
+ * the handle 'unitHandle'.
+ * Return the unit and exponent as one concatinated string.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int            unitsHandle = 0;
+    int            err         = 1;
+    const RpUnits* unitsObj    = NULL;
+    const char*    retString   = NULL;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 2)
+        mexErrMsgTxt("Too many output arguments.");
+
+    unitsHandle = getIntInput(prhs[0]);
+
+    /* Call the C subroutine. */
+    if (unitsHandle > 0) {
+        unitsObj = getObject_UnitsStr(unitsHandle);
+        if (unitsObj) {
+            retString = unitsObj->getUnitsName().c_str();
+            if (retString) {
+                err = 0;
+            }
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateString(retString);
+    plhs[1] = mxCreateDoubleScalar(err);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUnitsMakeMetric.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUnitsMakeMetric.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUnitsMakeMetric.cc	(revision 6168)
@@ -0,0 +1,62 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [error] = rpUnitsMakeMetric(basisHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpUnitsMakeMetric(basisHandle)
+/// Create metric extensions for the Rappture Unit referenced by basisHandle
+/**
+ * Create the metric extensions for the Rappture Unit, referenced`
+ * by basisHandle, within Rappture's internal units dictionary.
+ * Return an error code, err, to specify success or failure.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    const RpUnits* basis       = NULL;
+    int            retVal      = 0;
+    int            basisHandle = 0;
+    int            retIndex    = 0;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 1)
+        mexErrMsgTxt("Two input required.");
+    else if (nlhs > 1)
+        mexErrMsgTxt("Too many output arguments.");
+
+    basisHandle = getIntInput(prhs[0]);
+
+    /* Call the C subroutine. */
+    if (basisHandle > 0) {
+        basis = getObject_UnitsStr(basisHandle);
+
+        if (basis) {
+             retVal = RpUnits::makeMetric(basis);
+        }
+        else {
+            std::string errMsg = "Error while retrieving basis handle.\n";
+            errMsg += "Possibly invalid handle?\n";
+            mexErrMsgTxt(errMsg.c_str());
+        }
+    }
+
+    /* Set C-style string output_buf to MATLAB mexFunction output*/
+    plhs[0] = mxCreateDoubleScalar(retVal);
+
+    return;
+}
Index: /tags/1.6.0/lang/matlab/rpUtilsProgress.cc
===================================================================
--- /tags/1.6.0/lang/matlab/rpUtilsProgress.cc	(revision 6168)
+++ /tags/1.6.0/lang/matlab/rpUtilsProgress.cc	(revision 6168)
@@ -0,0 +1,50 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Progress Source
+ *
+ *    [err] = rpUtilsProgress(percent,message)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpMatlabInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpUtilsProgress (percent,message)
+/// Print the Rappture Progress message.
+/**
+ * Clients use this to generate the super secret Rappture
+ * Progress message, and generate a progress bar in the
+ * Rappture graphical user interface.
+ */
+
+void mexFunction(int nlhs, mxArray *plhs[],
+                 int nrhs, const mxArray *prhs[])
+{
+    int         err = 1;
+    int         percent = 0;
+    const char* message = NULL;
+
+    /* Check for proper number of arguments. */
+    if (nrhs != 2) {
+        mexErrMsgTxt("Two input required.");
+    }
+
+    percent = getIntInput(prhs[0]);
+    message = getStringInput(prhs[1]);
+
+    /* Call the C++ subroutine. */
+    err = Rappture::Utils::progress(percent,message);
+
+    plhs[0] = mxCreateDoubleScalar(err);
+
+    freeStringInput((void*)message);
+    rpmxFlush();
+    return;
+}
Index: /tags/1.6.0/lang/octave/Makefile.in
===================================================================
--- /tags/1.6.0/lang/octave/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/octave/Makefile.in	(revision 6168)
@@ -0,0 +1,52 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+RM              = rm -f
+MKOCTFILE2	= @MKOCTFILE2@
+MKOCTFILE3	= @MKOCTFILE3@
+
+LANGS		= 
+ifneq ($(MKOCTFILE3),)
+  LANGS += octave3
+endif
+ifneq ($(MKOCTFILE2),)
+  LANGS += octave2
+endif
+
+.PHONY:	all install test clean distclean octave2 octave3
+
+all:
+	for i in $(LANGS) ; do \
+	  $(MAKE) -C $$i all || exit 1 ;\
+	done
+
+install:
+	for i in $(LANGS) ; do \
+	  $(MAKE) -C $$i install || exit 1 ;\
+	done
+
+test:
+	for i in $(LANGS) ; do \
+	  $(MAKE) -C $$i test || exit 1 ;\
+	done
+
+clean:
+	for i in $(LANGS) ; do \
+	  $(MAKE) -C $$i clean ;\
+	done
+
+distclean:
+	for i in $(LANGS) ; do \
+	  $(MAKE) -C $$i distclean ;\
+	done
+	$(RM) Makefile *~
+
Index: /tags/1.6.0/lang/octave/RpOctaveInterface.h.in
===================================================================
--- /tags/1.6.0/lang/octave/RpOctaveInterface.h.in	(revision 6168)
+++ /tags/1.6.0/lang/octave/RpOctaveInterface.h.in	(revision 6168)
@@ -0,0 +1,42 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Rappture-Octave Bindings Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005-2007
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#ifndef _Rp_OCTAVE_HELPER_H
+#define _Rp_OCTAVE_HELPER_H
+
+#include "rappture.h"
+#include "RpBindingsDict.h"
+
+// include the octave api header
+#include "octave/oct.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+// octave versions before 3.0 used a version of the
+// print_usage function that accepted a parameter
+// telling the name of the function to print the
+// usage of. octave 3.0 introduced a print_usage()
+// function that automatically finds the name of
+// the function it is being called from.
+#define OCTAVE_VERSION_MAJOR @OCTAVE_VERSION_MAJOR@
+#if (OCTAVE_VERSION_MAJOR >= 3)
+    #define _PRINT_USAGE(x) print_usage()
+#else
+    #define _PRINT_USAGE(x) print_usage(x)
+#endif // (OCTAVE_VERSION_MAJOR >= 3)
+
+#endif // _Rp_OCTAVE_HELPER_H
Index: /tags/1.6.0/lang/octave/octave2/Makefile.in
===================================================================
--- /tags/1.6.0/lang/octave/octave2/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/octave/octave2/Makefile.in	(revision 6168)
@@ -0,0 +1,87 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+destdir         = $(libdir)/octave2
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+VPATH           = $(srcdir)/../src
+RM              = rm -f
+
+OCT             = @MKOCTFILE2@
+INCLUDES    = \
+		-I$(srcdir) \
+		-I$(srcdir)/../../../src/core \
+		-I$(prefix)/include
+DEFINES     =
+LIBS        = -L../../../src/core -lrappture
+OCT_FLAGS   = $(INCLUDES) $(DEFINES)
+
+OBJS        = \
+		rpAddPresets.oct \
+		rpUtilsProgress.oct \
+		rpLib.oct \
+		rpLibChildrenByType.oct \
+		rpLibChildren.oct \
+		rpLibElementAsComp.oct \
+		rpLibElementAsId.oct \
+		rpLibElementAsObject.oct \
+		rpLibElementAsType.oct \
+		rpLibElement.oct \
+		rpLibGet.oct \
+		rpLibGetData.oct \
+		rpLibGetString.oct \
+		rpLibGetDouble.oct \
+		rpLibNodeComp.oct \
+		rpLibNodeId.oct \
+		rpLibNodeType.oct \
+		rpLibPut.oct \
+		rpLibPutDouble.oct \
+		rpLibPutString.oct \
+		rpLibPutFile.oct \
+		rpLibResult.oct \
+		rpLibXml.oct \
+		rpUnitsConvert.oct \
+		rpUnitsConvertDbl.oct \
+		rpUnitsConvertStr.oct \
+		rpUnitsConvertObjDbl.oct \
+		rpUnitsConvertObjStr.oct \
+		rpUnitsDefineUnit.oct \
+		rpUnitsFind.oct \
+		rpUnitsGetBasis.oct \
+		rpUnitsGetExponent.oct \
+		rpUnitsGetUnits.oct \
+		rpUnitsGetUnitsName.oct
+
+.PHONY: all install clean distclean
+
+all: $(OBJS)
+
+.SUFFIXES: .cc .o .oct
+
+.o.oct:
+	$(OCT) $(OCT_FLAGS) $< -o $@ $(LIBS)
+
+.cc.o:
+	$(OCT) $(OCT_FLAGS) -c $< -o $@
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(OBJS) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(OBJS)
+
+distclean: clean
+	$(RM) Makefile *~
+
Index: /tags/1.6.0/lang/octave/octave2/RpOctaveInterface.h
===================================================================
--- /tags/1.6.0/lang/octave/octave2/RpOctaveInterface.h	(revision 6168)
+++ /tags/1.6.0/lang/octave/octave2/RpOctaveInterface.h	(revision 6168)
@@ -0,0 +1,42 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Rappture-Octave Bindings Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005-2007
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#ifndef _Rp_OCTAVE_HELPER_H
+#define _Rp_OCTAVE_HELPER_H
+
+#include "rappture.h"
+#include "RpBindingsDict.h"
+
+// include the octave api header
+#include "octave/oct.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+// octave versions before 3.0 used a version of the
+// print_usage function that accepted a parameter
+// telling the name of the function to print the
+// usage of. octave 3.0 introduced a print_usage()
+// function that automatically finds the name of
+// the function it is being called from.
+#define OCTAVE_VERSION_MAJOR 2
+#if (OCTAVE_VERSION_MAJOR >= 3)
+    #define _PRINT_USAGE(x) print_usage()
+#else
+    #define _PRINT_USAGE(x) print_usage(x)
+#endif // (OCTAVE_VERSION_MAJOR >= 3)
+
+#endif // _Rp_OCTAVE_HELPER_H
Index: /tags/1.6.0/lang/octave/octave3/Makefile.in
===================================================================
--- /tags/1.6.0/lang/octave/octave3/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/octave/octave3/Makefile.in	(revision 6168)
@@ -0,0 +1,88 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+destdir         = $(libdir)/octave3
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+VPATH           = $(srcdir)/../src
+RM              = rm -f
+
+OCT             = @MKOCTFILE3@
+INCLUDES    = \
+		-I$(srcdir) \
+		-I$(srcdir)/../../../src/core \
+		-I$(prefix)/include
+DEFINES     =
+LIBS        = -L../../../src/core -lrappture
+OCT_FLAGS   = $(INCLUDES) $(DEFINES)
+
+OBJS        = \
+		rpAddPresets.oct \
+		rpUtilsProgress.oct \
+		rpLib.oct \
+		rpLibChildrenByType.oct \
+		rpLibChildren.oct \
+		rpLibElementAsComp.oct \
+		rpLibElementAsId.oct \
+		rpLibElementAsObject.oct \
+		rpLibElementAsType.oct \
+		rpLibElement.oct \
+		rpLibGet.oct \
+		rpLibGetData.oct \
+		rpLibGetString.oct \
+		rpLibGetDouble.oct \
+		rpLibNodeComp.oct \
+		rpLibNodeId.oct \
+		rpLibNodeType.oct \
+		rpLibPut.oct \
+		rpLibPutDouble.oct \
+		rpLibPutString.oct \
+		rpLibPutFile.oct \
+		rpLibResult.oct \
+		rpLibXml.oct \
+		rpUnitsConvert.oct \
+		rpUnitsConvertDbl.oct \
+		rpUnitsConvertStr.oct \
+		rpUnitsConvertObjDbl.oct \
+		rpUnitsConvertObjStr.oct \
+		rpUnitsDefineUnit.oct \
+		rpUnitsFind.oct \
+		rpUnitsGetBasis.oct \
+		rpUnitsGetExponent.oct \
+		rpUnitsGetUnits.oct \
+		rpUnitsGetUnitsName.oct \
+		rpExec.oct
+
+.PHONY: all install clean distclean
+
+all: $(OBJS)
+
+.SUFFIXES: .cc .o .oct
+
+.o.oct:
+	$(OCT) $(OCT_FLAGS) $< -o $@ $(LIBS)
+
+.cc.o:
+	$(OCT) $(OCT_FLAGS) -c $< -o $@
+
+install: all
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(OBJS) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+	$(RM) $(OBJS)
+
+distclean: clean
+	$(RM) Makefile *~
+
Index: /tags/1.6.0/lang/octave/octave3/RpOctaveInterface.h
===================================================================
--- /tags/1.6.0/lang/octave/octave3/RpOctaveInterface.h	(revision 6168)
+++ /tags/1.6.0/lang/octave/octave3/RpOctaveInterface.h	(revision 6168)
@@ -0,0 +1,42 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Rappture-Octave Bindings Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005-2007
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#ifndef _Rp_OCTAVE_HELPER_H
+#define _Rp_OCTAVE_HELPER_H
+
+#include "rappture.h"
+#include "RpBindingsDict.h"
+
+// include the octave api header
+#include "octave/oct.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+// octave versions before 3.0 used a version of the
+// print_usage function that accepted a parameter
+// telling the name of the function to print the
+// usage of. octave 3.0 introduced a print_usage()
+// function that automatically finds the name of
+// the function it is being called from.
+#define OCTAVE_VERSION_MAJOR 3
+#if (OCTAVE_VERSION_MAJOR >= 3)
+    #define _PRINT_USAGE(x) print_usage()
+#else
+    #define _PRINT_USAGE(x) print_usage(x)
+#endif // (OCTAVE_VERSION_MAJOR >= 3)
+
+#endif // _Rp_OCTAVE_HELPER_H
Index: /tags/1.6.0/lang/octave/src/RpOctaveInterface.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/RpOctaveInterface.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/RpOctaveInterface.cc	(revision 6168)
@@ -0,0 +1,52 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    libHandle = rpLib(fileName)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+DEFUN_DLD (rpLib, args, ,
+  "[libHandle, err] = rpLib (fileName)\n\
+\n\
+Opens a Rappture Library Object based on the xml file 'fileName'.\n\
+Returns a handle to the Rappture Library Object and an error flag.\n\
+err = 0 is success, anything else is failure.")
+{
+    static std::string who = "rpLib";
+
+    // The list of values to return.
+    octave_value_list retval;
+
+    int nargin = args.length ();
+    std::string path = "";
+    RpLibrary* lib = NULL;
+    int libIndex = 0;
+
+    retval(1) = 1;
+    retval(0) = -1;
+
+    if (nargin == 1) {
+        if (args(0).is_string ()) {
+            path = args(0).string_value ();
+            if (!path.empty()) {
+                lib = new RpLibrary(path);
+                retval(1) = 0;
+            }
+        }
+    }
+    else {
+        _PRINT_USAGE ("fopen");
+    }
+
+    retval(0) = storeObject_Void((void*)lib);
+
+  return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpAddPresets.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpAddPresets.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpAddPresets.cc	(revision 6168)
@@ -0,0 +1,66 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Units Source
+ *
+ *    [err] = rpAddPresets (presetName)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpAddPresets (presetName)
+/// Adds the units associated with the group 'presetName' to the list of
+/// available units within the Rappture Units Module.
+/**
+ * Usually called in the beginning of the program to seed the Rappture Units
+ * Module with default units. Available valid presets include 'all',
+ * 'energy', 'length', 'temp', 'time', 'volume'. To find out more 
+ * check out the Rappture Units Howto.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpAddPresets, args, ,
+"-*- texinfo -*-\n\
+[err] = rpAddPresets (@var{presetName})\n\
+\n\
+Adds the units associated with the group @var{presetName} to the list of\n\
+available units within the Rappture Units Module.\n\
+Usually called in the beginning of the program to seed the Rappture Units\n\
+Module with default units. Available valid presets include 'all',\n\
+'energy', 'length', 'temp', 'time', 'volume'. To find out more\n\
+check out the Rappture Units Howto.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpAddPresets";
+
+    // The list of values to return.
+    octave_value_list retval;
+
+    int nargin = args.length ();
+    std::string presetName = "";
+    RpLibrary* lib = NULL;
+    int libIndex = 0;
+
+    retval(0) = 1;
+
+    if (nargin == 1) {
+        if (args(0).is_string ()) {
+            presetName = args(0).string_value ();
+            /* Call the C subroutine. */
+            if ( !presetName.empty() ) {
+                retval(0) = RpUnits::addPresets(presetName);
+            }
+        }
+    }
+    else {
+        _PRINT_USAGE ("rpAddPresets");
+    }
+
+  return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpExec.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpExec.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpExec.cc	(revision 6168)
@@ -0,0 +1,295 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Interface Helper Functions
+ *
+ * ======================================================================
+ *  AUTHOR:  Steven Clark, Purdue University
+ *  Copyright (c) 2015-2015  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <stdarg.h>
+#include <string.h>
+
+int pid;
+int parentSignal = 0;
+
+void sighup(int sigNum) {
+   if(pid != 0) {
+      parentSignal = SIGHUP;
+      kill(pid,SIGHUP);
+   }
+}
+
+void sigint(int sigNum) {
+   if(pid != 0) {
+      parentSignal = SIGINT;
+      kill(pid,SIGINT);
+   }
+}
+
+void sigterm(int sigNum) {
+   if(pid != 0) {
+      parentSignal = SIGTERM;
+      kill(pid,SIGTERM);
+   }
+}
+
+#define MAXBUFFER 1024
+
+struct stdResults {
+   int streamOutput;
+   char *stdoutBuffer;
+   char *stderrBuffer;
+};
+
+int systemCommand(char *commandExe,
+                  char **commandArgs,
+                  struct stdResults *commandOutput)
+{
+   int             exitPid;
+   int             status;
+   int             exitStatus = 0;
+   int             termSignal = 0;
+   int             signalStatus = 1<<7;
+   sighandler_t    matlabSighup;
+   sighandler_t    matlabSigint;
+   sighandler_t    matlabSigterm;
+   int             stdoutPipe[2];
+   int             stderrPipe[2];
+   fd_set          fdSet;
+   struct timeval  timeout;
+   int             selectReturn;
+   char            buffer[MAXBUFFER+1];
+   int             stdoutEOF;
+   int             stderrEOF;
+   int             nRead;
+   int             stdoutBufferSize = 32*MAXBUFFER;
+   int             stderrBufferSize = 32*MAXBUFFER;
+   char           *stdoutBuffer;
+   char           *stderrBuffer;
+   int             error;
+
+   error = pipe(stdoutPipe);
+   error = pipe(stderrPipe);
+
+   if((pid = fork()) < 0) {
+      perror("fork");
+      return(1);
+   }
+
+   matlabSighup = signal(SIGHUP,sighup);
+   matlabSigint = signal(SIGINT,sigint);
+   matlabSigterm = signal(SIGTERM,sigterm);
+
+   if(pid == 0) { /* child */
+      dup2(stdoutPipe[1],STDOUT_FILENO);
+      dup2(stderrPipe[1],STDERR_FILENO);
+      close(stdoutPipe[0]);
+      close(stderrPipe[0]);
+
+      signal(SIGHUP,SIG_DFL);
+      signal(SIGINT,SIG_DFL);
+      signal(SIGTERM,SIG_DFL);
+
+      execvp(commandExe,commandArgs);
+   } else {       /* parent */
+      close(stdoutPipe[1]);
+      close(stderrPipe[1]);
+
+      stdoutBuffer = (char *)calloc(stdoutBufferSize,sizeof(char));
+      stderrBuffer = (char *)calloc(stderrBufferSize,sizeof(char));
+
+      stdoutEOF = 0;
+      stderrEOF = 0;
+      while(!stdoutEOF || !stderrEOF) {
+         FD_ZERO(&fdSet);
+         if(!stdoutEOF)
+            FD_SET(stdoutPipe[0],&fdSet);
+         if(!stderrEOF)
+            FD_SET(stderrPipe[0],&fdSet);
+         timeout.tv_sec = 0;
+         timeout.tv_usec = 500000;
+
+         selectReturn = select(FD_SETSIZE,&fdSet,NULL,NULL,&timeout);
+         if(selectReturn > 0) {
+            if(FD_ISSET(stdoutPipe[0],&fdSet)) {
+               nRead = read(stdoutPipe[0],buffer,MAXBUFFER);
+               if(nRead > 0) {
+                  buffer[nRead] = '\0';
+                  if(strlen(stdoutBuffer)+nRead > stdoutBufferSize) {
+                     stdoutBufferSize = 2*stdoutBufferSize;
+                     stdoutBuffer = (char *)realloc(stdoutBuffer,stdoutBufferSize);
+                  }
+                  strcat(stdoutBuffer,buffer);
+                  if(commandOutput->streamOutput)
+                     fprintf(stdout,"%s",buffer);
+               } else {
+                  stdoutEOF = 1;
+               }
+            }
+            if(FD_ISSET(stderrPipe[0],&fdSet)) {
+               nRead = read(stderrPipe[0],buffer,MAXBUFFER);
+               if(nRead > 0) {
+                  buffer[nRead] = '\0';
+                  if(strlen(stderrBuffer)+nRead > stderrBufferSize) {
+                     stderrBufferSize = 2*stderrBufferSize;
+                     stderrBuffer = (char *)realloc(stderrBuffer,stderrBufferSize);
+                  }
+                  strcat(stderrBuffer,buffer);
+                  if(commandOutput->streamOutput)
+                     fprintf(stderr,"%s",buffer);
+               } else {
+                  stderrEOF = 1;
+               }
+            }
+         }
+      }
+
+      commandOutput->stdoutBuffer = stdoutBuffer;
+      commandOutput->stderrBuffer = stderrBuffer;
+
+      exitPid = waitpid(pid,&status,0);
+      if       (WIFSIGNALED(status)) {
+         termSignal = WTERMSIG(status);
+         exitStatus = signalStatus + termSignal;
+      } else if(WIFSTOPPED(status)) {
+         termSignal = WSTOPSIG(status);
+         exitStatus = signalStatus + termSignal;
+      } else if(WIFEXITED(status)) {
+         if(parentSignal > 0) {
+            termSignal = parentSignal;
+            exitStatus = signalStatus + termSignal;
+         } else {
+            exitStatus = WEXITSTATUS(status);
+         }
+      }
+   }
+   signal(SIGHUP,matlabSighup);
+   signal(SIGINT,matlabSigint);
+   signal(SIGTERM,matlabSigterm);
+
+   return(exitStatus);
+}
+
+#include "octave/oct.h"
+#include "octave/Cell.h"
+
+#include "RpOctaveInterface.h"
+
+DEFUN_DLD(rpExec,args,nlhs,
+"-*- texinfo -*-\n\
+@deftypefn {Function} {[@var{exitStatus}]} = rpExec(@var{command},@var{streamOutput})\n\
+@deftypefnx {Function} {[@var{exitStatus}, @var{stdOutput}]} = rpExec(@var{command},@var{streamOutput})\n\
+@deftypefnx {Function} {[@var{exitStatus}, @var{stdOutput}, @var{stdError}]} = rpExec(@var{command},@var{streamOutput})\n\
+\n\
+Execute @var{command} with the ability to terminate the\n\
+process upon reception of a interrupt, hangup, or terminate\n\
+signal. Doing so allows the process to terminated when the\n\
+Rappture \"Abort\" button is pressed.  @var{command} should\n\
+contain a set of strings that comprise the command to be\n\
+executed.  If @var{streamOutput} equals 1 the stdout and\n\
+stderr from @var{command} are piped back to the current process\n\
+stdout and stderr descriptors as @var{command} executes.\n\n\
+On output @var{exitStatus} indicates whether or not an error\n\
+occurred.  @var{exitStatus} equals 0 indicates that no error\n\
+occurred. If @var{stdOutput} is supplied it will contain a\n\
+copy of stdout from @var{command}.  In the same manner if\n\
+@var{stdError} is supplied it will contain a copy of stderr\n\
+from @var{command}.\n\n\
+Example:\n\n\
+[exitStatus,stdOutput,stdError] = rpExec(@{\"submit\",\"--wallTime\",\"30\",\"lammps-12Feb14-serial\",\"-in\",\"lmp.in\"@},1);\n\
+@end deftypefn")
+{
+   static std::string   who = "rpExec";
+   int                  exitStatus = 0;
+   octave_value_list    retval;
+   int                  nrhs = args.length();
+   Cell                 commandCell;
+   char               **commandArgs;
+   const char          *commandArg;
+   struct stdResults    commandOutput;
+   octave_idx_type      i1;
+
+   commandOutput.stdoutBuffer = NULL;
+   commandOutput.stderrBuffer = NULL;
+
+   /* check proper input and output */
+   if(nrhs != 2) {
+      _PRINT_USAGE (who.c_str());
+      exitStatus = 1;
+   }
+   if(nlhs > 3) {
+      _PRINT_USAGE (who.c_str());
+      exitStatus = 1;
+   }
+
+   if(exitStatus == 0) {
+      if(!args(0).is_cell()) {
+         _PRINT_USAGE (who.c_str());
+         exitStatus = 1;
+      }
+   }
+
+   if(exitStatus == 0) {
+      if(!args(1).is_real_scalar()) {
+         _PRINT_USAGE (who.c_str());
+         exitStatus = 1;
+      }
+   }
+
+   if(exitStatus == 0) {
+      commandCell = args(0).cell_value();
+      if(!error_state) {
+         commandArgs = (char **)calloc(commandCell.numel()+1,sizeof(char *));
+         for(i1=0; i1<commandCell.numel(); i1++) {
+            commandArg = commandCell(i1).string_value().c_str();
+            commandArgs[i1] = (char *)calloc(strlen(commandArg)+1,sizeof(char));
+            strcpy(commandArgs[i1],commandArg);
+         }
+         commandArgs[commandCell.numel()] = NULL;
+
+         commandOutput.streamOutput = args(1).int_value();
+         exitStatus = systemCommand(commandArgs[0],commandArgs,&commandOutput);
+
+         for(i1=0; i1<commandCell.numel(); i1++) {
+            free(commandArgs[i1]);
+         }
+         free(commandArgs);
+      }
+   }
+
+   if(nlhs > 0) {
+      retval(0) = octave_value(exitStatus);
+   }
+
+   if(nlhs > 1) {
+      if(commandOutput.stdoutBuffer == NULL) {
+         retval(1) = octave_value("",'"');
+      } else {
+         retval(1) = octave_value(commandOutput.stdoutBuffer,'"');
+      }
+   }
+
+   if(nlhs > 2) {
+      if(commandOutput.stderrBuffer == NULL) {
+         retval(2) = octave_value("",'"');
+      } else {
+         retval(2) = octave_value(commandOutput.stderrBuffer,'"');
+      }
+   }
+
+   free(commandOutput.stdoutBuffer);
+   free(commandOutput.stderrBuffer);
+
+   return retval;
+}
+
+
Index: /tags/1.6.0/lang/octave/src/rpLib.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLib.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLib.cc	(revision 6168)
@@ -0,0 +1,63 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [libHandle,err] = rpLib(fileName)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [libHandle,err] = rpLib (fileName)
+/// Opens a Rappture Library Object based on the xml file 'fileName'.
+/**
+ * Usually called in the beginning of a program to load an xml file
+ * for future reading.
+ */
+
+DEFUN_DLD (rpLib, args, ,
+"-*- texinfo -*-\n\
+[libHandle, err] = rpLib (@var{fileName})\n\
+\n\
+Opens a Rappture Library Object based on the xml file @var{fileName}.\n\
+Returns a handle to the Rappture Library Object and an error flag.\n\
+err = 0 is success, anything else is failure.")
+{
+    static std::string who = "rpLib";
+
+    // The list of values to return.
+    octave_value_list retval;
+
+    int nargin = args.length ();
+    std::string path = "";
+    RpLibrary* lib = NULL;
+    int libIndex = 0;
+    int err = 1;
+
+    retval(0) = -1;
+    retval(1) = err;
+
+    if (nargin == 1) {
+        if (args(0).is_string ()) {
+            path = args(0).string_value ();
+            lib = new RpLibrary(path);
+            if (lib != NULL) {
+                err = 0;
+            }
+        }
+    }
+    else {
+        _PRINT_USAGE ("rpLib");
+    }
+
+    retval(0) = storeObject_Void((void*)lib);
+    retval(1) = err;
+
+  return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibChildren.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibChildren.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibChildren.cc	(revision 6168)
@@ -0,0 +1,93 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [nodeHandle,err] = rpLibChildren(libHandle,path,prevNodeHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [nodeHandle,err] = rpLibChildren(libHandle,path,prevNodeHandle)
+/// Retrieve the children of the node described by 'path'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns its
+ * children. If 'prevNodeHandle' = 0, then the 
+ * first child is returned, else, the next child is retrieved.
+ * If 'prevNodeHandle' is an invalid child handle, an error will be returned.
+ * Subsequent calls to rpLibChildren() should use previously 
+ * returned 'nodeHandle's for it 'prevNodeHandle' argument.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibChildren, args, ,
+"-*- texinfo -*-\n\
+[nodeHandle,err] = rpLibChildren(@var{libHandle},@var{path},@var{prevNodeHandle})\n\
+\n\
+Retrieve the children of the node described by @var{path} \n\
+This method searches the Rappture Library Object 'libHandle' \n\
+for the node at the location described by @var{path} and returns its \n\
+children. If @var{prevNodeHandle} = 0, then the·\n\
+first child is returned, else, the next child is retrieved.\n\
+If @var{prevNodeHandle} is an invalid child handle, an error will be \n\
+returned. Subsequent calls to @code{rpLibChildren} should use \n\
+previously returned 'nodeHandle's for it var{prevNodeHandle}. \n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibChildren";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string path = "";
+    int prevNodeIndex = 0;
+    int libIndex = 0;
+    RpLibrary* lib = NULL;
+    RpLibrary* prevLib = NULL;
+    RpLibrary* newLib = NULL;
+
+    if (nargin == 3) {
+
+        if (    args(0).is_real_scalar () &&
+                args(1).is_string      () &&
+                args(2).is_real_scalar ()   ) {
+
+            libIndex = args(0).int_value ();
+            path = args(1).string_value ();
+            prevNodeIndex = args(2).int_value ();
+
+            /* Call the C subroutine. */
+            if (    (libIndex != 0)      &&
+                    !path.empty()        &&
+                    (prevNodeIndex >= 0)    ) {
+
+                lib = (RpLibrary*) getObject_Void(libIndex);
+                prevLib = (RpLibrary*) getObject_Void(prevNodeIndex);
+
+                if (lib) {
+                    newLib = lib->children(path,prevLib);
+                    err = 0;
+                }
+
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = storeObject_Void((void*)newLib,prevNodeIndex);
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibChildrenByType.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibChildrenByType.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibChildrenByType.cc	(revision 6168)
@@ -0,0 +1,98 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [nodeHandle,err] = rpLibChildrenByType(libHandle,path,prevNodeHandle,type)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [nodeHandle,err] = rpLibChildrenByType(libHandle,path,prevNodeHandle,type)
+/// Retrieve the children of the node described by 'path' of type 'type'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns its
+ * children that match the type 'type'. If 'prevNodeHandle' = 0, then the 
+ * first child is returned, else, the next child is retrieved.
+ * If 'prevNodeHandle' is an invalid child handle, an error will be returned.
+ * Subsequent calls to rpLibChildrenByType() should use previously 
+ * returned 'nodeHandle's for it 'prevNodeHandle' argument.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibChildrenByType, args, ,
+"-*- texinfo -*-\n\
+[nodeHandle,err] = rpLibChildrenByType(@var{libHandle},@var{path},@var{prevNodeHandle},@var{type})\n\
+\n\
+Retrieve the children of the node described by @var{path} of type\n\
+@var{type} This method searches the Rappture Library Object 'libHandle' \n\
+for the node at the location described by @var{path} and returns its \n\
+children that match @var{type}. If @var{prevNodeHandle} = 0, then the·\n\
+first child is returned, else, the next child is retrieved.\n\
+If @var{prevNodeHandle} is an invalid child handle, an error will be \n\
+returned. Subsequent calls to @code{rpLibChildrenByType} should use \n\
+previously returned 'nodeHandle's for it var{prevNodeHandle}. \n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibChildrenByType";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string path = "";
+    std::string type = "";
+    int prevNodeIndex = 0;
+    int libIndex = 0;
+    RpLibrary* lib = NULL;
+    RpLibrary* prevLib = NULL;
+    RpLibrary* newLib = NULL;
+
+    retval(0) = 1;
+
+    if (nargin == 4) {
+
+        if (    args(0).is_real_scalar () &&
+                args(1).is_string      () &&
+                args(2).is_real_scalar () &&
+                args(3).is_string      ()       ) {
+
+            libIndex = args(0).int_value ();
+            path = args(1).string_value ();
+            prevNodeIndex = args(2).int_value ();
+            type = args(3).string_value ();
+
+            /* Call the C subroutine. */
+            // path and type can be empty strings.
+            if (    (libIndex != 0)      &&
+                    (prevNodeIndex >= 0)    ) {
+
+                lib = (RpLibrary*) getObject_Void(libIndex);
+                prevLib = (RpLibrary*) getObject_Void(prevNodeIndex);
+
+                if (lib) {
+                    newLib = lib->children(path,prevLib,type);
+                    err = 0;
+                }
+
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = storeObject_Void((void*)newLib,prevNodeIndex);
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibElement.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibElement.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibElement.cc	(revision 6168)
@@ -0,0 +1,88 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retVal,err] = rpLibElement(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retVal,err] = rpLibElement(libHandle,path)
+/// Return a handle to the element at location 'path' in 'libHandle'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns
+ * a handle to it.
+ *
+ * If path is an empty string, the root of the node is used. 'libHandle'
+ * is the handle representing the instance of the RpLibrary object.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibElement, args, ,
+"-*- texinfo -*-\n\
+[retVal,err] = rpLibElement(@var{libHandle},@var{path})\n\
+\n\
+This method searches the Rappture Library Object @var{libHandle} for the\n\
+node at the location described by the path @var{path} and returns\n\
+a handle to it.\n\
+If path is an empty string, the root of the node is used. @var{libHandle}\n\
+is the handle representing the instance of the RpLibrary object.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibElement";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string path = "";
+    int libHandle = 0;
+    RpLibrary* lib = NULL;
+    RpLibrary* eleLib = NULL;
+
+    if (nargin == 2) {
+
+        if (    args(0).is_real_scalar () &&
+                args(1).is_string      ()   ) {
+
+            libHandle = args(0).int_value ();
+            path = args(1).string_value ();
+
+            /* Call the C subroutine. */
+            // path can be an empty string
+            if ( (libHandle != 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+
+                if (lib) {
+                    eleLib = lib->element(path);
+                    err = 0;
+                }
+                else {
+                    //error message
+                } 
+            }
+            else {
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = storeObject_Void((void*)eleLib);
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibElementAsComp.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibElementAsComp.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibElementAsComp.cc	(revision 6168)
@@ -0,0 +1,93 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpLibElementAsComp(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibElementAsComp(libHandle,path)
+/// Return the component name of the element at location 'path' in 'libHandle'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns its
+ * component name, a concatination of the type, id, and index.
+ * If path is an empty string, the root of the node is used. 'libHandle'
+ * is the handle representing the instance of the RpLibrary object.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibElementAsComp, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpLibElementAsComp(@var{libHandle},@var{path})\n\
+\n\
+This method searches the Rappture Library Object @var{libHandle} for the\n\
+node at the location described by the path @var{path} and returns its\n\
+component name, a concatination of the type, id, and index.\n\
+If path is an empty string, the root of the node is used. @var{libHandle}\n\
+is the handle representing the instance of the RpLibrary object.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibElementAsComp";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string path = "";
+    int libHandle = 0;
+    RpLibrary* lib = NULL;
+    RpLibrary* eleLib = NULL;
+    std::string retStr = "";
+
+    if (nargin == 2) {
+
+        if (    args(0).is_real_scalar () &&
+                args(1).is_string      ()   ) {
+
+            libHandle = args(0).int_value ();
+            path = args(1).string_value ();
+
+            /* Call the C subroutine. */
+            // path can be an empty string
+            if ( (libHandle != 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+
+                if (lib) {
+                    eleLib = lib->element(path);
+                    if (eleLib) {
+                        retStr = eleLib->nodeComp();
+                        if (!retStr.empty()) {
+                            err = 0;
+                        }
+                    }
+                }
+                else {
+                    //error message
+                } 
+            }
+            else {
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retStr;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibElementAsId.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibElementAsId.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibElementAsId.cc	(revision 6168)
@@ -0,0 +1,92 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpLibElementAsId(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibElementAsId(libHandle,path)
+/// Return the id attribute of the element at location 'path' in 'libHandle'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns its
+ * id attribute.
+ * 
+ * If path is an empty string, the root of the node is used. 'libHandle'
+ * is the handle representing the instance of the RpLibrary object.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibElementAsId, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpLibElementAsId(@var{libHandle},@var{path})\n\
+\n\
+This method searches the Rappture Library Object @var{libHandle} for the\n\
+node at the location described by the path @var{path} and returns its\n\
+id attribute.\n\
+If path is an empty string, the root of the node is used. @var{libHandle}\n\
+is the handle representing the instance of the RpLibrary object.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibElementAsId";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string path = "";
+    int libHandle = 0;
+    RpLibrary* lib = NULL;
+    RpLibrary* eleLib = NULL;
+    std::string retStr = "";
+
+    if (nargin == 2) {
+
+        if (    args(0).is_real_scalar () &&
+                args(1).is_string      ()   ) {
+
+            libHandle = args(0).int_value ();
+            path = args(1).string_value ();
+
+            /* Call the C subroutine. */
+            // path can be an empty string
+            if ( (libHandle != 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+
+                if (lib) {
+                    eleLib = lib->element(path);
+                    if (eleLib) {
+                        retStr = eleLib->nodeId();
+                        err = 0;
+                    }
+                }
+                else {
+                    //error message
+                } 
+            }
+            else {
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retStr;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibElementAsObject.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibElementAsObject.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibElementAsObject.cc	(revision 6168)
@@ -0,0 +1,88 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpLibElementAsObject(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibElementAsObject(libHandle,path)
+/// Return a handle to the element at location 'path' in 'libHandle'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns
+ * a handle to it.
+ *
+ * If path is an empty string, the root of the node is used. 'libHandle'
+ * is the handle representing the instance of the RpLibrary object.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibElementAsObject, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpLibElementAsObject(@var{libHandle},@var{path})\n\
+\n\
+This method searches the Rappture Library Object @var{libHandle} for the\n\
+node at the location described by the path @var{path} and returns\n\
+a handle to it.\n\
+If path is an empty string, the root of the node is used. @var{libHandle}\n\
+is the handle representing the instance of the RpLibrary object.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibElementAsObject";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string path = "";
+    int libHandle = 0;
+    RpLibrary* lib = NULL;
+    RpLibrary* eleLib = NULL;
+
+    if (nargin == 2) {
+
+        if (    args(0).is_real_scalar () &&
+                args(1).is_string      ()   ) {
+
+            libHandle = args(0).int_value ();
+            path = args(1).string_value ();
+
+            /* Call the C subroutine. */
+            // path can be an empty string
+            if ( (libHandle != 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+
+                if (lib) {
+                    eleLib = lib->element(path);
+                    err = 0;
+                }
+                else {
+                    //error message
+                } 
+            }
+            else {
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = storeObject_Lib(eleLib);
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibElementAsType.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibElementAsType.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibElementAsType.cc	(revision 6168)
@@ -0,0 +1,92 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpLibElementAsType(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibElementAsType(libHandle,path)
+/// Return the type name of the element at location 'path' in 'libHandle'
+/**
+ * This method searches the Rappture Library Object 'libHandle' for the
+ * node at the location described by the path 'path' and returns its
+ * type name.
+ *
+ * If path is an empty string, the root of the node is used. 'libHandle'
+ * is the handle representing the instance of the RpLibrary object.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibElementAsType, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpLibElementAsType(@var{libHandle},@var{path})\n\
+\n\
+This method searches the Rappture Library Object @var{libHandle} for the\n\
+node at the location described by the path @var{path} and returns its\n\
+type name.\n\
+If path is an empty string, the root of the node is used. @var{libHandle}\n\
+is the handle representing the instance of the RpLibrary object.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibElementAsType";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string path = "";
+    int libHandle = 0;
+    RpLibrary* lib = NULL;
+    RpLibrary* eleLib = NULL;
+    std::string retStr = "";
+
+    if (nargin == 2) {
+
+        if (    args(0).is_real_scalar () &&
+                args(1).is_string      ()   ) {
+
+            libHandle = args(0).int_value ();
+            path = args(1).string_value ();
+
+            /* Call the C subroutine. */
+            // path can be an empty string
+            if ( (libHandle != 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+
+                if (lib) {
+                    eleLib = lib->element(path);
+                    if (eleLib) {
+                        retStr = eleLib->nodeType();
+                    }
+                    err = 0;
+                }
+                else {
+                    //error message
+                } 
+            }
+            else {
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retStr;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibGet.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibGet.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibGet.cc	(revision 6168)
@@ -0,0 +1,89 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpLibGet(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibGet(libHandle,path)
+/// Query the value of a node.
+/**
+ * Clients use this to query the value of a node.  If the path
+ * is not specified, it returns the value associated with the
+ * root node.  Otherwise, it returns the value for the element
+ * specified by the path. Values are returned as strings.
+ *
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibGet, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpLibGet(@var{libHandle},@var{path})\n\
+\n\
+Clients use this to query the value of a node.  If the path\n\
+is not specified, it returns the value associated with the\n\
+root node.  Otherwise, it returns the value for the element\n\
+specified by the path. Values are returned as strings.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibGet";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string path = "";
+    int libHandle = 0;
+    RpLibrary* lib = NULL;
+    std::string retStr = "";
+
+    if (nargin == 2) {
+
+        if (    args(0).is_real_scalar () &&
+                args(1).is_string      ()   ) {
+
+            libHandle = args(0).int_value ();
+            path = args(1).string_value ();
+
+            /* Call the C subroutine. */
+            // path can be an empty string
+            if ( (libHandle >= 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+
+                if (lib) {
+                    retStr = lib->get(path);
+                    err = 0;
+                }
+                else {
+                    // lib was null (not found in dictionary)
+                }
+            }
+            else {
+                // invalid libHandle
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            // wrong arg types
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        // wrong number of args.
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retStr;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibGetData.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibGetData.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibGetData.cc	(revision 6168)
@@ -0,0 +1,129 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retData,size,err] = rpLibGetData(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005-2010
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+#include "RpEncode.h"
+
+/**********************************************************************/
+// METHOD: [retData,size,err] = rpLibGetData(libHandle,path)
+/// Query the value of a node.
+/**
+ * Clients use this to query the value of a node.  If the path
+ * is not specified, it returns the value associated with the
+ * root node.  Otherwise, it returns the value for the element
+ * specified by the path. Values are returned as strings.
+ *
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibGetData, args, ,
+"-*- texinfo -*-\n\
+[retData,size,err] = rpLibGetData(@var{libHandle},@var{path})\n\
+\n\
+Clients use this to query the value of a node.  If the path\n\
+is not specified, it returns the value associated with the\n\
+root node.  Otherwise, it returns the value for the element\n\
+specified by the path. Values are returned as strings.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibGetData";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string path = "";
+    int libHandle = 0;
+    RpLibrary* lib = NULL;
+    Rappture::Buffer retBuf = "";
+    Rappture::Outcome status;
+
+    if (nargin != 2) {
+        // wrong number of args.
+        _PRINT_USAGE (who.c_str());
+
+        retval(0) = std::string("wrong number args");
+        retval(1) = 0;
+        retval(2) = err;
+        return retval;
+    }
+
+    if (!args(0).is_real_scalar() || !args(1).is_string()) {
+        // wrong arg types
+        _PRINT_USAGE (who.c_str());
+
+        retval(0) = std::string("wrong arg types");
+        retval(1) = 0;
+        retval(2) = err;
+        return retval;
+    }
+
+    libHandle = args(0).int_value ();
+    path = args(1).string_value ();
+
+    /* Call the C subroutine. */
+    // path can be an empty string
+    if ( (libHandle < 0) ) {
+        // invalid libHandle
+        _PRINT_USAGE (who.c_str());
+
+        retval(0) = std::string("invalid libHandle");
+        retval(1) = 0;
+        retval(2) = err;
+        return retval;
+    }
+
+    lib = (RpLibrary*) getObject_Void(libHandle);
+
+    if (lib == NULL) {
+        // lib was null (not found in dictionary)
+        _PRINT_USAGE (who.c_str());
+
+        retval(0) = std::string("lib was null (not found in dictionary)");
+        retval(1) = 0;
+        retval(2) = err;
+        return retval;
+    }
+
+    retBuf = lib->getData(path);
+    if (retBuf.bad()) {
+        retval(0) = std::string("error reading data from library");
+        retval(1) = 0;
+        retval(2) = err;
+        return retval;
+    }
+
+    if (Rappture::encoding::headerFlags(retBuf.bytes(),retBuf.size()) != 0) {
+        // data is encoded, decode it
+        if (!Rappture::encoding::decode(status, retBuf, 0)) {
+            // error decoding
+            err = status;
+            retval(0) = std::string(status.remark());
+            retval(1) = 0;
+            retval(2) = err;
+            return retval;
+        }
+    }
+
+    uint8NDArray out(dim_vector(1,retBuf.size()));
+    octave_uint8* tmp = out.fortran_vec();
+    memcpy(tmp,retBuf.bytes(),retBuf.size());
+    out.transpose();
+    err = status;
+
+    retval(0) = out;
+    retval(1) = retBuf.size();
+    retval(2) = err;
+
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibGetDouble.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibGetDouble.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibGetDouble.cc	(revision 6168)
@@ -0,0 +1,89 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpLibGetDouble(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibGetDouble(libHandle,path)
+/// Query the value of a node.
+/**
+ * Clients use this to query the value of a node.  If the path
+ * is not specified, it returns the value associated with the
+ * root node.  Otherwise, it returns the value for the element
+ * specified by the path. The return value is returned as a double.
+ *
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibGetDouble, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpLibGetDouble(@var{libHandle},@var{path})\n\
+\n\
+Clients use this to query the value of a node.  If the path\n\
+is not specified, it returns the value associated with the\n\
+root node.  Otherwise, it returns the value for the element\n\
+specified by the path. The return value is returned as a double.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibGetDouble";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string path = "";
+    int libHandle = 0;
+    RpLibrary* lib = NULL;
+    double retVal = 0;
+
+    if (nargin == 2) {
+
+        if (    args(0).is_real_scalar () &&
+                args(1).is_string      ()   ) {
+
+            libHandle = args(0).int_value ();
+            path = args(1).string_value ();
+
+            /* Call the C subroutine. */
+            // path can be an empty string
+            if ( (libHandle >= 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+
+                if (lib) {
+                    retVal = lib->getDouble(path);
+                    err = 0;
+                }
+                else {
+                    // lib was null (not found in dictionary)
+                }
+            }
+            else {
+                // invalid libHandle
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            // wrong arg types
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        // wrong number of args.
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retVal;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibGetString.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibGetString.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibGetString.cc	(revision 6168)
@@ -0,0 +1,81 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpLibGetString(libHandle,path)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibGetString(libHandle,path)
+/// Query the value of a node.
+/**
+ * Clients use this to query the value of a node.  If the path
+ * is not specified, it returns the value associated with the
+ * root node.  Otherwise, it returns the value for the element
+ * specified by the path. Values are returned as strings.
+ *
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibGetString, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpLibGetString(@var{libHandle},@var{path})\n\
+\n\
+Clients use this to query the value of a node.  If the path\n\
+is not specified, it returns the value associated with the\n\
+root node.  Otherwise, it returns the value for the element\n\
+specified by the path. Values are returned as strings.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibGetString";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int argc;
+    std::string retStr = "";
+
+    argc = args.length();
+    if (argc == 2) {
+        if ((args(0).is_real_scalar()) && (args(1).is_string())) {
+	    std::string path;
+	    int libHandle;
+
+            libHandle = args(0).int_value ();
+
+            path = args(1).string_value ();
+            /* Call the C subroutine. */
+            // path can be an empty string
+            if (libHandle >= 0) {
+		RpLibrary* lib;
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+                if (lib != NULL) {
+		    retval(0) = lib->getString(path);
+		    retval(1) = 0;
+		    return retval;
+                }
+            } else {
+                // invalid libHandle
+                _PRINT_USAGE(who.c_str());
+            }
+        } else {
+            // wrong arg types
+            _PRINT_USAGE(who.c_str());
+        }
+    } else {
+        // wrong number of args.
+        _PRINT_USAGE(who.c_str());
+    }
+    retval(0) = retStr;
+    retval(1) = 1;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibNodeComp.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibNodeComp.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibNodeComp.cc	(revision 6168)
@@ -0,0 +1,84 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpLibNodeComp(nodeHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibNodeComp(nodeHandle)
+/// Return the component name of the node represented by 'nodeHandle'
+/**
+ * This method returns the component name of the node represented 
+ * by 'nodeHandle'. The component name is a concatination of the  
+ * type, id, and index.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibNodeComp, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpLibNodeComp(@var{nodeHandle})\n\
+\n\
+This method returns the component name of the node represented \n\
+by @var{nodeHandle}. The component name is a concatination of the \n\
+type, id, and index.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibNodeComp";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    int libHandle = 0;
+    RpLibrary* lib = NULL;
+    std::string retStr = "";
+
+    if (nargin == 1) {
+
+        if ( args(0).is_real_scalar() ) { 
+
+            libHandle = args(0).int_value ();
+
+            /* Call the C subroutine. */
+            if ( (libHandle >= 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+                if (lib) {
+                    retStr = lib->nodeComp();
+                    if (!retStr.empty()) {
+                        err = 0;
+                    }
+                }
+                else {
+                    // lib is NULL, not found in dictionary
+                    // std::cout << "lib was NULL" << std::endl;
+                }
+            }
+            else {
+                // libHandle is negative
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            // wrong argument types
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        // wrong number of arguments
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retStr;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibNodeId.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibNodeId.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibNodeId.cc	(revision 6168)
@@ -0,0 +1,79 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpLibNodeId(nodeHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibNodeId(nodeHandle)
+/// Return the id name of the node represented by 'nodeHandle'
+/**
+ * This method returns the id name of the node represented 
+ * by 'nodeHandle'.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibNodeId, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpLibNodeId(@var{nodeHandle})\n\
+\n\
+This method returns the id name of the node represented \n\
+by @var{nodeHandle}.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibNodeId";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    int libHandle = 0;
+    RpLibrary* lib = NULL;
+    std::string retStr = "";
+
+    if (nargin == 1) {
+
+        if ( args(0).is_real_scalar() ) { 
+
+            libHandle = args(0).int_value ();
+
+            /* Call the C subroutine. */
+            if ( (libHandle >= 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+                if (lib) {
+                    retStr = lib->nodeId();
+                    err = 0;
+                }
+                else {
+                    // lib is NULL, not found in dictionary
+                }
+            }
+            else {
+                // libHandle is negative
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            // wrong argument types
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        // wrong number of arguments
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retStr;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibNodeType.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibNodeType.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibNodeType.cc	(revision 6168)
@@ -0,0 +1,79 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpLibNodeType(nodeHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibNodeType(nodeHandle)
+/// Return the type name of the node represented by 'nodeHandle'
+/**
+ * This method returns the type name of the node represented 
+ * by 'nodeHandle'.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibNodeType, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpLibNodeType(@var{nodeHandle})\n\
+\n\
+This method returns the type name of the node represented \n\
+by @var{nodeHandle}.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpLibNodeType";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    int libHandle = 0;
+    RpLibrary* lib = NULL;
+    std::string retStr = "";
+
+    if (nargin == 1) {
+
+        if ( args(0).is_real_scalar() ) { 
+
+            libHandle = args(0).int_value ();
+
+            /* Call the C subroutine. */
+            if ( (libHandle >= 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+                if (lib) {
+                    retStr = lib->nodeType();
+                    err = 0;
+                }
+                else {
+                    // lib is NULL, not found in dictionary
+                }
+            }
+            else {
+                // libHandle is negative
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            // wrong argument types
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        // wrong number of arguments
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retStr;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibPut.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibPut.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibPut.cc	(revision 6168)
@@ -0,0 +1,104 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [err] = rpLibPut(libHandle,path,value,append)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibPut (libHandle,path,value,id,append)
+/// Set the value of a node.
+/**
+ * Clients use this to set the value of a node.  If the path
+ * is not specified, it sets the value for the root node.
+ * Otherwise, it sets the value for the element specified
+ * by the path.  The value is treated as the text within the 
+ * tag at the tail of the path.
+ *
+ * 'id' is used to set the identifier field for the tag at the 
+ * tail of the path.  If the append flag is set to 1, then the 
+ * value is appended to the current value.  Otherwise, the 
+ * value specified in the function call replaces the current value.
+ *
+ */
+
+DEFUN_DLD (rpLibPut, args, ,
+"-*- texinfo -*-\n\
+[err] = rpLibPut(@var{libHandle},@var{path},@var{value},@var{append})\n\
+\n\
+Clients use this to set the value of a node.  If the @var{path}\n\
+is not specified (ie. empty string ""), it sets the value for the\n\
+root node.  Otherwise, it sets the value for the element specified\n\
+by the path.  The @var{value} is treated as the text within the \n\
+tag at the tail of the @var{path}.\n\
+\n\
+If the @var{append} flag is set to 1, then the \n\
+@var{value} is appended to the current value.  Otherwise, the \n\
+@var{value} specified in the function call replaces the current value.\n\
+Error Codes: err = 0 is success, anything else is failure.")
+{
+    static std::string who = "rpLibPut";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err           = 1;
+    int nargin        = args.length ();
+    int libHandle     = 0;
+    std::string path  = "";
+    std::string value = "";
+    std::string id    = ""; // not used, kept for compatibility dsk-20060131
+    int append        = 0;
+    RpLibrary* lib    = NULL;
+
+    if (nargin == 4) {
+
+        if ( args(0).is_real_scalar() &&
+             args(1).is_string()      &&
+             args(2).is_string()      &&
+             args(3).is_real_scalar()   ) {
+
+            libHandle = args(0).int_value ();
+            path      = args(1).string_value ();
+            value     = args(2).string_value ();
+            append    = args(3).int_value ();
+
+            /* Call the C subroutine. */
+            // the only input that has restrictions is libHandle
+            // all other inputs may be empty strings or any integer value
+            if ( (libHandle >= 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+                if (lib) {
+                    lib->put(path,value,id,append);
+                    err = 0;
+                }
+                else {
+                    // lib is NULL, not found in dictionary
+                }
+            }
+            else {
+                // libHandle is negative
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            // wrong argument types
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        // wrong number of arguments
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibPutData.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibPutData.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibPutData.cc	(revision 6168)
@@ -0,0 +1,117 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [err] = rpLibPutData(libHandle,path,bytes,nbytes,append)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005-2007
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibPutFile (libHandle,path,bytes,nbytes,append)
+/// Set the value of a node.
+/**
+ * Clients use this to set the value of a node.  If the path
+ * is not specified, it sets the value for the root node.
+ * Otherwise, it sets the value for the element specified
+ * by the path.  The value is treated as the text within the 
+ * tag at the tail of the path.
+ *
+ * Bytes is the data to be added to the rappture library object in the
+ * form of a string.
+ * NBytes is an integer telling the size of Bytes in bytes.
+ * Append is an integer telling if this new data should overwrite
+ * (use 0) or be appended (use 1) to previous data in this node.
+ *
+ */
+
+DEFUN_DLD (rpLibPutString, args, ,
+"-*- texinfo -*-\n\
+[err] = rpLibPutData(@var{libHandle},@var{path},@var{bytes},@var{nbytes},@var{append})\n\
+\n\
+Clients use this to set the value of a node.  If the @var{path}\n\
+is not specified (ie. empty string ""), it sets the value for the\n\
+root node.  Otherwise, it sets the value for the element specified\n\
+by the path.  The added data is treated as the text within the \n\
+tag at the tail of the @var{path}.\n\
+\n\
+@var{bytes} is the name of the file to import into the rappture object\n\
+@var{nbytes} is an integer telling the size of bytes in bytes.\n\
+@var{append} is an integer telling if this new data should overwrite\n\
+(use 0) or be appended (use 1) to previous data in this node.\n\
+\n\
+Error Codes: err = 0 is success, anything else is failure.")
+{
+    static std::string who = "rpLibPutData";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err               = 1;
+    int nargin            = args.length ();
+    int libHandle         = 0;
+    std::string path      = "";
+    const char* bytes     = NULL;
+    unsigned int nbytes   = 0;
+    unsigned int append   = 0;
+    unsigned int bufferSize = 0;
+    RpLibrary* lib        = NULL;
+
+    if (nargin == 5) {
+
+        if ( args(0).is_real_scalar() &&
+             args(1).is_string()      &&
+             args(2).is_string()      &&
+             args(3).is_real_scalar() &&
+             args(4).is_real_scalar()   ) {
+
+            libHandle = args(0).int_value();
+            path      = args(1).string_value();
+            bytes     = args(2).string_value().data();
+            nbytes    = (unsigned int) args(3).int_value();
+            append    = (unsigned int) args(4).int_value();
+
+            if (args(2).string_value().length() < nbytes) {
+                bufferSize = (unsigned int) args(2).string_value().length();
+            }
+            else {
+                bufferSize = nbytes;
+            }
+
+            /* Call the C subroutine. */
+            // the only input that has restrictions is libHandle
+            // all other inputs may be empty strings or any integer value
+            if ( (libHandle >= 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+                if (lib) {
+                    lib->putData(path,bytes,nbytes,append);
+                    err = 0;
+                }
+                else {
+                    // lib is NULL, not found in dictionary
+                }
+            }
+            else {
+                // libHandle is negative
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            // wrong argument types
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        // wrong number of arguments
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibPutDouble.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibPutDouble.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibPutDouble.cc	(revision 6168)
@@ -0,0 +1,102 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [err] = rpLibPutDouble(libHandle,path,value,append)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibPutDouble (libHandle,path,value,append)
+/// Set the value of a node.
+/**
+ * Clients use this to set the value of a node.  If the path
+ * is not specified, it sets the value for the root node.
+ * Otherwise, it sets the value for the element specified
+ * by the path.  The value is treated as the text within the 
+ * tag at the tail of the path.
+ *
+ * If the append flag is set to 1, then the 
+ * value is appended to the current value.  Otherwise, the 
+ * value specified in the function call replaces the current value.
+ *
+ */
+
+DEFUN_DLD (rpLibPutDouble, args, ,
+"-*- texinfo -*-\n\
+[err] = rpLibPutDouble(@var{libHandle},@var{path},@var{value},@var{append})\n\
+\n\
+Clients use this to set the value of a node.  If the @var{path}\n\
+is not specified (ie. empty string ""), it sets the value for the\n\
+root node.  Otherwise, it sets the value for the element specified\n\
+by the path.  The @var{value} is treated as the text within the \n\
+tag at the tail of the @var{path}.\n\
+\n\
+If the @var{append} flag is set to 1, then the \n\
+@var{value} is appended to the current value.  Otherwise, the \n\
+@var{value} specified in the function call replaces the current value.\n\
+Error Codes: err = 0 is success, anything else is failure.")
+{
+    static std::string who = "rpLibPutDouble";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err           = 1;
+    int nargin        = args.length ();
+    int libHandle     = 0;
+    std::string path  = "";
+    double value      = 0;
+    int append        = 0;
+    RpLibrary* lib    = NULL;
+
+    if (nargin == 4) {
+
+        if ( args(0).is_real_scalar() &&
+             args(1).is_string()      &&
+             args(2).is_real_scalar() &&
+             args(3).is_real_scalar()   ) {
+
+            libHandle = args(0).int_value ();
+            path      = args(1).string_value ();
+            value     = args(2).double_value ();
+            append    = args(3).int_value ();
+
+            /* Call the C subroutine. */
+            // the only input that has restrictions is libHandle
+            // all other inputs may be empty strings or any integer value
+            if ( (libHandle >= 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+                if (lib) {
+                    lib->put(path,value,"",append);
+                    err = 0;
+                }
+                else {
+                    // lib is NULL, not found in dictionary
+                }
+            }
+            else {
+                // libHandle is negative
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            // wrong argument types
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        // wrong number of arguments
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibPutFile.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibPutFile.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibPutFile.cc	(revision 6168)
@@ -0,0 +1,110 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [err] = rpLibPutFile(libHandle,path,fileName,compress,append)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005-2007
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibPutFile (libHandle,path,fileName,fileType,append)
+/// Set the value of a node.
+/**
+ * Clients use this to set the value of a node.  If the path
+ * is not specified, it sets the value for the root node.
+ * Otherwise, it sets the value for the element specified
+ * by the path.  The value is treated as the text within the 
+ * tag at the tail of the path.
+ *
+ * FileName is the name of the file to import into the rappture object
+ * Compress is an integer telling if the provided data should be compressed
+ * (use 1) or left uncompressed (use 0).
+ * Append is an integer telling if this new data should overwrite
+ * (use 0) or be appended (use 1) to previous data in this node.
+ *
+ */
+
+DEFUN_DLD (rpLibPutFile, args, ,
+"-*- texinfo -*-\n\
+[err] = rpLibPutFile(@var{libHandle},@var{path},@var{fileName},@var{compress},@var{append})\n\
+\n\
+Clients use this to set the value of a node.  If the @var{path}\n\
+is not specified (ie. empty string ""), it sets the value for the\n\
+root node.  Otherwise, it sets the value for the element specified\n\
+by the path.  The added data is treated as the text within the \n\
+tag at the tail of the @var{path}.\n\
+\n\
+@var{fileName} is the name of the file to import into the rappture object\n\
+@var{compress} is an integer telling if the provided data should be compressed\n\
+(use 1) or left uncompressed (use 0).\n\
+@var{append} is an integer telling if this new data should overwrite\n\
+(use 0) or be appended (use 1) to previous data in this node.\n\
+\n\
+Error Codes: err = 0 is success, anything else is failure.")
+{
+    static std::string who = "rpLibPutFile";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err               = 1;
+    int nargin            = args.length ();
+    int libHandle         = 0;
+    std::string path      = "";
+    std::string fileName  = "";
+    unsigned int compress = 0;
+    unsigned int append   = 0;
+    RpLibrary* lib        = NULL;
+
+    if (nargin == 5) {
+
+        if ( args(0).is_real_scalar() &&
+             args(1).is_string()      &&
+             args(2).is_string()      &&
+             args(3).is_real_scalar() &&
+             args(4).is_real_scalar()   ) {
+
+            libHandle = args(0).int_value ();
+            path      = args(1).string_value ();
+            fileName  = args(2).string_value ();
+            compress  = (unsigned int) args(3).int_value ();
+            append    = (unsigned int) args(4).int_value ();
+
+            /* Call the C subroutine. */
+            // the only input that has restrictions is libHandle
+            // all other inputs may be empty strings or any integer value
+            if ( (libHandle >= 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+                if (lib) {
+                    lib->putFile(path,fileName,compress,append);
+                    err = 0;
+                }
+                else {
+                    // lib is NULL, not found in dictionary
+                }
+            }
+            else {
+                // libHandle is negative
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            // wrong argument types
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        // wrong number of arguments
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibPutString.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibPutString.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibPutString.cc	(revision 6168)
@@ -0,0 +1,103 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [err] = rpLibPutString(libHandle,path,value,append)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibPutString (libHandle,path,value,append)
+/// Set the value of a node.
+/**
+ * Clients use this to set the value of a node.  If the path
+ * is not specified, it sets the value for the root node.
+ * Otherwise, it sets the value for the element specified
+ * by the path.  The value is treated as the text within the 
+ * tag at the tail of the path.
+ *
+ * If the append flag is set to 1, then the 
+ * value is appended to the current value.  Otherwise, the 
+ * value specified in the function call replaces the current value.
+ *
+ */
+
+DEFUN_DLD (rpLibPutString, args, ,
+"-*- texinfo -*-\n\
+[err] = rpLibPutString(@var{libHandle},@var{path},@var{value},@var{append})\n\
+\n\
+Clients use this to set the value of a node.  If the @var{path}\n\
+is not specified (ie. empty string ""), it sets the value for the\n\
+root node.  Otherwise, it sets the value for the element specified\n\
+by the path.  The @var{value} is treated as the text within the \n\
+tag at the tail of the @var{path}.\n\
+\n\
+If the @var{append} flag is set to 1, then the \n\
+@var{value} is appended to the current value.  Otherwise, the \n\
+@var{value} specified in the function call replaces the current value.\n\
+Error Codes: err = 0 is success, anything else is failure.")
+{
+    static std::string who = "rpLibPutString";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err           = 1;
+    int nargin        = args.length ();
+    int libHandle     = 0;
+    std::string path  = "";
+    std::string value = "";
+    std::string id    = "";
+    int append        = 0;
+    RpLibrary* lib    = NULL;
+
+    if (nargin == 4) {
+
+        if ( args(0).is_real_scalar() &&
+             args(1).is_string()      &&
+             args(2).is_string()      &&
+             args(3).is_real_scalar()   ) {
+
+            libHandle = args(0).int_value ();
+            path      = args(1).string_value ();
+            value     = args(2).string_value ();
+            append    = args(3).int_value ();
+
+            /* Call the C subroutine. */
+            // the only input that has restrictions is libHandle
+            // all other inputs may be empty strings or any integer value
+            if ( (libHandle >= 0) ) {
+
+                lib = (RpLibrary*) getObject_Void(libHandle);
+                if (lib) {
+                    lib->put(path,value,id,append);
+                    err = 0;
+                }
+                else {
+                    // lib is NULL, not found in dictionary
+                }
+            }
+            else {
+                // libHandle is negative
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            // wrong argument types
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        // wrong number of arguments
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibResult.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibResult.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibResult.cc	(revision 6168)
@@ -0,0 +1,83 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [err] = rpLibResult(libHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2005-2008
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpLibResult (libHandle,status)
+/// Write Rappture Library to run.xml and signal end of processing.
+/** 
+ * Usually the last call of the program, this function signals to the gui
+ * that processing has completed and the output is ready to be
+ * displayed
+ */
+
+DEFUN_DLD (rpLibResult, args, ,
+"-*- texinfo -*-\n\
+[err] = rpLibResult (@var{libHandle},@var{status})\n\
+\n\
+Usually the last call of the program, this function signals to the gui\n\
+that processing has completed and the output is ready to be\n\
+displayed\n\
+Error Codes: @var{err} = 0 is success, anything else is failure.")
+{
+    static std::string who = "rpLibResult";
+
+    // The list of values to return.
+    octave_value_list retval;
+
+    int nargin = args.length();
+    RpLibrary* lib = NULL;
+    int libHandle = 0;
+    int status = 0;
+    int err = 0;
+
+    if ((nargin < 1) || (nargin > 2)) {
+        // wrong number of arguments
+        _PRINT_USAGE ("rpLibResult");
+        goto done;
+    }
+
+    if (! args(0).is_real_scalar()) {
+        // wrong argument type
+        _PRINT_USAGE ("rpLibResult");
+        goto done;
+    }
+
+    libHandle = args(0).int_value();
+
+    if (nargin == 2) {
+        if (! args(1).is_real_scalar()) {
+            // wrong argument type
+            _PRINT_USAGE ("rpLibResult");
+            goto done;
+        }
+
+        status = args(1).int_value();
+    }
+
+    /* Call the C subroutine. */
+    if (libHandle > 0) {
+        lib = (RpLibrary*) getObject_Void(libHandle);
+        if (lib) {
+            lib->put("tool.version.rappture.language", "octave");
+            lib->result(status);
+            // cleanLibDict();
+            err = 0;
+        }
+    }
+
+done:
+    retval(0) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpLibXml.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpLibXml.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpLibXml.cc	(revision 6168)
@@ -0,0 +1,66 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpLibXml(libHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpLibXml (libHandle)
+/// Returns the xml from the Rappture Object represented by 'libHandle'.
+/**
+ * Usually called by user when they need to retrieve the character 
+ * representation of the xml being stored in the Rappture Library Object
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpLibXml, args, ,
+"-*- texinfo -*-\n\
+[retText, err] = rpLibXml (@var{libHandle})\n\
+\n\
+Returns the xml text of the Rappture Object represented by the\n\
+handle @var{libHandle}. Also returns an error code,\n\
+err = 0 is success, anything else is failure.")
+{
+    static std::string who = "rpLibXml";
+
+    // The list of values to return.
+    octave_value_list retval;
+
+    int nargin = args.length ();
+    std::string output_buf = "";
+    RpLibrary* lib = NULL;
+    int libIndex = 0;
+
+    retval(0) = "";
+    retval(1) = 1;
+
+    if (nargin == 1) {
+        if (args(0).is_real_scalar ()) {
+            libIndex = args(0).int_value ();
+            if (libIndex > 0) {
+                lib = (RpLibrary*) getObject_Void(libIndex);
+                if (lib) {
+                    output_buf = lib->xml();
+                    if (output_buf.length() > 0) {
+                        retval(1) = 0;
+                    }
+                    retval(0) = output_buf;
+                }
+            }
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+  return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUnitsConvert.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsConvert.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsConvert.cc	(revision 6168)
@@ -0,0 +1,83 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpUnitsConvert(fromVal, toUnitsName, showUnits)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpUnitsConvert(fromVal,toUnitsName,showUnits)
+/// Convert between RpUnits return a string value with or without units
+/**
+ * Convert the value and units in the string @var{fromVal} to units specified
+ * in string @var{toUnitsName}. If @var{showUnits} is set to 1, then show the
+ * units in the returned string @var{retStr}, else leave the units off.
+ * The second return value @var{err} specifies whether there was an error
+ * during conversion.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsConvert, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpUnitsConvert(@var{fromVal},@var{toUnitsName},@var{showUnits})\n\
+\n\
+Convert the value and units in the string @var{fromVal} to units specified\n\
+in string @var{toUnitsName}. If @var{showUnits} is set to 1, then show the\n\
+units in the returned string @var{retStr}, else leave the units off.\n\
+The second return value @var{err} specifies whether there was an error\n\
+during conversion. \n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsConvert";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string fromVal = "";
+    std::string toUnitsName = "";
+    int showUnits = 0;
+    std::string retStr = "";
+
+    if (nargin == 3) {
+
+        if (    args(0).is_string      () &&
+                args(1).is_string      () &&
+                args(2).is_real_scalar ()    ) {
+
+            fromVal = args(0).string_value ();
+            toUnitsName = args(1).string_value ();
+            showUnits = args(2).int_value ();
+
+            // Call the C++ subroutine.
+            // we allow toUnitsName to be an empty string
+            // to let the user not change the units of fromVal
+            // but still remove the units from being shown.
+            if ( !fromVal.empty() ) {
+
+                retStr = RpUnits::convert(fromVal,toUnitsName,showUnits,&err);
+            }
+            else {
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retStr;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUnitsConvertDbl.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsConvertDbl.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsConvertDbl.cc	(revision 6168)
@@ -0,0 +1,83 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retVal,err] = rpUnitsConvertDbl(fromVal, toUnitsName)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retVal,err] = rpUnitsConvertDbl(fromVal,toUnitsName)
+/// Convert between RpUnits return a double value without units
+/**
+ * Convert the value and units in the string @var{fromVal} to units specified
+ * in string @var{toUnitsName}. Units will not be shown in @var{retVal}.
+ * The second return value @var{err} specifies whether there was an error
+ * during conversion.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsConvertDbl, args, ,
+"-*- texinfo -*-\n\
+[retVal,err] = rpUnitsConvertDbl(@var{fromVal},@var{toUnitsName})\n\
+\n\
+Convert the value and units in the string @var{fromVal} to units specified\n\
+in string @var{toUnitsName}. Units will not be shown in @var{retVal}.\n\
+The second return value @var{err} specifies whether there was an error\n\
+during conversion. \n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsConvertDbl";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string fromVal = "";
+    std::string toUnitsName = "";
+    int showUnits = 0;
+    std::string retStr = "";
+    double retVal = 0;
+
+    if (nargin == 2) {
+
+        if (    args(0).is_string      () &&
+                args(1).is_string      ()   ) {
+
+            fromVal = args(0).string_value ();
+            toUnitsName = args(1).string_value ();
+
+            // Call the C++ subroutine.
+            // we allow toUnitsName to be an empty string
+            // to let the user not change the units of fromVal
+            // but still remove the units from being shown.
+            if ( !fromVal.empty() ) {
+
+                retStr = RpUnits::convert(fromVal,toUnitsName,showUnits,&err);
+                if ( !err && !retStr.empty() ) {
+                    retVal = atof(retStr.c_str());
+                }
+            }
+            else {
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retVal;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUnitsConvertObjDbl.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsConvertObjDbl.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsConvertObjDbl.cc	(revision 6168)
@@ -0,0 +1,90 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retVal,err] = rpUnitsConvertObjDbl(fromObjHandle, toObjHandle, value)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retVal,err] = rpUnitsConvertObjDbl(fromObjHandle,toObjHandle,value)
+/// Convert between RpUnits return a double value without units
+/**
+ * Convert @var{value} from the units represented by the RpUnits object
+ * @var{fromObjHandle} to the units represented by the RpUnits object
+ * @var{toObjHandle}. On success, the converted value is returned through
+ * @var{retVal}. The second return value, @var{err}, specifies whether 
+ * there was an error during conversion.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsConvertObjDbl, args, ,
+"-*- texinfo -*-\n\
+[retVal,err] = rpUnitsConvertObjDbl(@var{fromObjHandle},@var{toObjHandle},@var{value})\n\
+\n\
+Convert @var{value} from the units represented by the RpUnits object\n\
+@var{fromObjHandle} to the units represented by the RpUnits object\n\
+@var{toObjHandle}. On success, the converted value is returned through\n\
+@var{retVal}. The second return value, @var{err}, specifies whether \n\
+there was an error during conversion.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsConvertObjDbl";
+
+    // The list of values to return.
+    octave_value_list retval;
+
+    int err            = 1;
+    int nargin         = args.length ();
+    int fromObjHandle  = 0;
+    int toObjHandle    = 0;
+    double value       = 0;
+
+    const RpUnits* fromObj = NULL;
+    const RpUnits* toObj   = NULL;
+
+    if (nargin == 3) {
+
+        if (    args(0).is_real_scalar () &&
+                args(1).is_real_scalar () &&
+                args(2).is_real_scalar ()   ) {
+
+            fromObjHandle = args(0).int_value ();
+            toObjHandle   = args(1).int_value ();
+            value         = args(2).double_value ();
+
+            /* Call the C subroutine. */
+            if (    (fromObjHandle != 0) &&
+                    (toObjHandle != 0)    ) {
+
+                fromObj = getObject_UnitsStr(fromObjHandle);
+                toObj   = getObject_UnitsStr(toObjHandle);
+
+                if ( fromObj && toObj) {
+                    value = fromObj->convert(toObj,value,&err);
+                }
+
+            }
+            else {
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = value;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUnitsConvertObjStr.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsConvertObjStr.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsConvertObjStr.cc	(revision 6168)
@@ -0,0 +1,85 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Matlab Rappture Library Source
+ *
+ *    [retStr,err] = rpUnitsConvertObjStr(fromObjHandle,toObjHandle,value,showUnits)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpUnitsConvertObjStr(fromObjHandle,toObjHandle,value,showUnits)
+/// Convert between RpUnits return a string value with or without units
+/**
+ * Convert @var{value} from the units represented by the RpUnits object
+ * @var{fromObjHandle} to the units represented by the RpUnits object
+ * @var{toObjHandle}. If @var{showUnits} is set to 0, no units will be
+ * displayed in @var{retStr}, else units are displayed. 
+ * On success, the converted value is returned through
+ * @var{retStr}. The second return value, @var{err}, specifies whether 
+ * there was an error during conversion.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsConvertObjStr, args, ,
+"-*- texinfo -*-\n\
+[retStr,err] = rpUnitsConvertObjStr(@var{fromObjHandle},@var{toObjHandle},@var{value},@var{showUnits})\n\
+\n\
+Convert @var{value} from the units represented by the RpUnits object\n\
+@var{fromObjHandle} to the units represented by the RpUnits object\n\
+@var{toObjHandle}. If @var{showUnits} is set to 0, no units will be\n\
+displayed in @var{retStr}, else units are displayed.\n\
+On success, the converted value is returned through\n\
+@var{retStr}. The second return value, @var{err}, specifies whether \n\
+there was an error during conversion.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsConvertObjStr";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    std::string outVal = "";
+    if (args.length() == 4) {
+        if ((args(0).is_real_scalar()) && (args(1).is_real_scalar()) &&
+	    (args(2).is_real_scalar()) && (args(3).is_real_scalar())) {
+	    int fromObjHandle;
+	    int toObjHandle;
+	    int showUnits;
+	    double inVal;
+
+            fromObjHandle = args(0).int_value();
+            toObjHandle   = args(1).int_value();
+            inVal         = args(2).double_value();
+            showUnits     = args(3).int_value();
+
+            /* Call the C subroutine. */
+            if ((fromObjHandle != 0) && (toObjHandle != 0)) {
+		const RpUnits* fromObj;
+		const RpUnits* toObj;
+
+                fromObj = getObject_UnitsStr(fromObjHandle);
+                toObj = getObject_UnitsStr(toObjHandle);
+                if (fromObj && toObj) {
+                    outVal = fromObj->convert(toObj, inVal, showUnits, &err);
+                }
+            } else {
+                _PRINT_USAGE(who.c_str());
+            }
+        } else {
+            _PRINT_USAGE(who.c_str());
+        }
+    } else {
+        _PRINT_USAGE(who.c_str());
+    }
+    retval(0) = outVal;
+    retval(1) = err;
+    return retval;
+}
+
Index: /tags/1.6.0/lang/octave/src/rpUnitsConvertStr.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsConvertStr.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsConvertStr.cc	(revision 6168)
@@ -0,0 +1,83 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpUnitsConvertStr(fromVal, toUnitsName, showUnits)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpUnitsConvertStr(fromVal,toUnitsName,showUnits)
+/// Convert between RpUnits return a string value with or without units
+/**
+ * Convert the value and units in the string @var{fromVal} to units specified
+ * in string @var{toUnitsName}. If @var{showUnits} is set to 1, then show the
+ * units in the returned string @var{retStr}, else leave the units off.
+ * The second return value @var{err} specifies whether there was an error
+ * during conversion.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsConvertStr, args, ,
+"-*- texinfo -*-\n\
+[retStr,result] = rpUnitsConvertStr(@var{fromVal},@var{toUnitsName},@var{showUnits})\n\
+\n\
+Convert the value and units in the string @var{fromVal} to units specified\n\
+in string @var{toUnitsName}. If @var{showUnits} is set to 1, then show the\n\
+units in the returned string @var{retStr}, else leave the units off.\n\
+The second return value @var{err} specifies whether there was an error\n\
+during conversion. \n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsConvertStr";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string fromVal = "";
+    std::string toUnitsName = "";
+    int showUnits = 0;
+    std::string retStr = "";
+
+    if (nargin == 3) {
+
+        if (    args(0).is_string      () &&
+                args(1).is_string      () &&
+                args(2).is_real_scalar ()    ) {
+
+            fromVal = args(0).string_value ();
+            toUnitsName = args(1).string_value ();
+            showUnits = args(2).int_value ();
+
+            // Call the C++ subroutine.
+            // we allow toUnitsName to be an empty string
+            // to let the user not change the units of fromVal
+            // but still remove the units from being shown.
+            if ( !fromVal.empty() ) {
+
+                retStr = RpUnits::convert(fromVal,toUnitsName,showUnits,&err);
+            }
+            else {
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retStr;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUnitsDefineUnit.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsDefineUnit.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsDefineUnit.cc	(revision 6168)
@@ -0,0 +1,100 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [unitsHandle,err] = rpUnitsDefineUnit(unitSymbol, basisHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [unitsHandle,err] = rpUnitsDefineUnit(unitSymbol, basisHandle)
+/// Define a new Rappture Units type.
+/**
+ * Define a new Rappture Units type which can be searched for using
+ * @var{unitSymbol} and has a basis of @var{basisHandle}. Because of
+ * the way the Rappture Units module parses unit names, complex units must
+ * be defined as multiple basic units. See the RpUnits Howto for more
+ * information on this topic. A @var{basisHandle} equal to 0 means that
+ * the unit being defined should be considered as a basis. Unit names must
+ * not be empty strings.
+ *
+ * The first return value, @var{unitsHandle} represents the handle of the
+ * instance of the RpUnits object inside the internal dictionary. On
+ * success this value will be greater than zero (0), any other value is
+ * represents failure within the function. The second return value
+ * @var{err} represents the error code returned from the function.
+ *
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsDefineUnit, args, ,
+"-*- texinfo -*-\n\
+[unitsHandle,err] = rpUnitsDefineUnit(@var{unitSymbol},@var{basisHandle})\n\
+\n\
+Define a new Rappture Units type which can be searched for using\n\
+@var{unitSymbol} and has a basis of @var{basisHandle}. Because of\n\
+the way the Rappture Units module parses unit names, complex units must\n\
+be defined as multiple basic units. See the RpUnits Howto for more\n\
+information on this topic. A @var{basisHandle} equal to 0 means that\n\
+the unit being defined should be considered as a basis. Unit names must\n\
+not be empty strings.\n\
+\n\
+The first return value, @var{unitsHandle} represents the handle of the\n\
+instance of the RpUnits object inside the internal dictionary. On\n\
+success this value will be greater than zero (0), any other value is\n\
+represents failure within the function. The second return value\n\
+@var{err} represents the error code returned from the function.\n\
+\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsDefineUnit";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err                  = 1;
+    int nargin               = args.length ();
+    std::string unitSymbol   = "";
+    int basisHandle          = 0;
+    RpUnits* newUnit         = NULL;
+    const RpUnits* basisUnit = NULL;
+
+    if (nargin == 2) {
+
+        if (    args(0).is_string      () &&
+                args(1).is_real_scalar ()    ) {
+
+            unitSymbol  = args(0).string_value ();
+            basisHandle = args(1).int_value ();
+
+            // Call the C++ subroutine.
+            if ( !unitSymbol.empty() ) {
+
+                basisUnit = getObject_UnitsStr(basisHandle);
+                newUnit = RpUnits::define(unitSymbol,basisUnit);
+                if (newUnit) {
+                    err = 0;
+                }
+            }
+            else {
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = storeObject_UnitsStr(newUnit->getUnitsName());
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUnitsFind.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsFind.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsFind.cc	(revision 6168)
@@ -0,0 +1,88 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [unitHandle,err] = rpUnitsFind(unitSymbol)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [unitHandle,err] = rpUnitsFind(unitSymbol)
+/// Search the dictionary of Rappture Units for an instance named 'unitSymbol'
+/**
+ * This method searches the Rappture Units Dictionary for the
+ * RpUnit named 'unitSymbol'. If it is found, its handle is 
+ * returned, as a non-negative integer, to the caller for further use,
+ * else a negative integer is returned signifying no unit of that 
+ * name was found.
+ * If unitSymbol is an empty string, unitHandle will be set to zero and err
+ * will be set to a positive value.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsFind, args, ,
+"-*- texinfo -*-\n\
+[unitHandle,err] = rpUnitsFind(@var{unitSymbol})\n\
+\n\
+This method searches the Rappture Units Dictionary for the\n\
+RpUnit named @var{unitSymbol}. If it is found, its handle is \n\
+returned, as a non-negative integer, to the caller for further use,\n\
+else a negative integer is returned signifying no unit of that \n\
+name was found.\n\
+If @var{unitSymbol} is an empty string, @var{unitHandle} will be set to\n\
+zero and @var{err} will be set to a positive value.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsFind";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+    std::string unitSymbol = "";
+    int retHandle = -1;
+    const RpUnits* retUnit = NULL;
+
+    if (nargin == 1) {
+
+        if ( args(0).is_string() ) {
+
+            unitSymbol = args(0).string_value ();
+
+            /* Call the C subroutine. */
+            if ( !unitSymbol.empty() ) {
+
+                retUnit = RpUnits::find(unitSymbol);
+                // store the returned unit
+                if (retUnit) {
+                    // store the unit
+                    retHandle = storeObject_UnitsStr(retUnit->getUnitsName());
+                    // adjust error code
+                    if (retHandle >= 0) {
+                        err = 0;
+                    }
+                }
+            }
+            else {
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retHandle;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUnitsGetBasis.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsGetBasis.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsGetBasis.cc	(revision 6168)
@@ -0,0 +1,102 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [basisHandle,err] = rpUnitsGetBasis(unitHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [basisHandle,err] = rpUnitsGetBasis(unitHandle)
+/// Return a handle to the basis of the provided instance of a Rappture Unit.
+/**
+ * Retrieve the basis of the Rappture Units object with the handle 
+ * 'unitHandle'. Return the handle of the basis if it exists. If there 
+ * is no basis, then return a negative integer.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsGetBasis, args, ,
+"-*- texinfo -*-\n\
+[basisHandle,err] = rpUnitsGetBasis(@var{unitHandle})\n\
+\n\
+Retrieve the basis of the Rappture Units object with the handle \n\
+'unitHandle'. Return the handle of the basis if it exists. If there \n\
+is no basis, then return a negative integer.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsGetBasis";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+
+    const RpUnits* myBasis = NULL;
+    const RpUnits* myUnit = NULL;
+    int retHandle = -1;
+    int unitHandle = 0;
+
+    if (nargin == 1) {
+
+        if ( args(0).is_real_scalar() ) {
+
+            unitHandle = args(0).int_value ();
+
+            /* Call the C subroutine. */
+            if ( unitHandle >= 0 ) {
+
+                // get the original unit
+                myUnit = getObject_UnitsStr(unitHandle);
+                if (myUnit) {
+                    // get the basis
+                    myBasis = myUnit->getBasis();
+                    if (myBasis) {
+                        // this unit has a basis
+                        // store the basis
+                        retHandle = 
+                            storeObject_UnitsStr(myBasis->getUnitsName());
+                    }
+                    else {
+                        // this unit does not have a basis
+                        // this unit is a basis
+                        // set handle to -1
+                        retHandle = -1;
+                    }
+
+                    // adjust error code
+                    // if there is a basis retHandle will be a positive value
+                    // if storing was successful. retHandle will be zero if
+                    // storing failed. 
+                    // if there is no basis, myBasis will be null and
+                    // retHandle will not change from its original negative 
+                    // value
+                    if (retHandle != 0) {
+                        err = 0;
+                    }
+                }
+            }
+            else {
+                // invalid unitHandle
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retHandle;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUnitsGetExponent.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsGetExponent.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsGetExponent.cc	(revision 6168)
@@ -0,0 +1,78 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retVal,err] = rpUnitsGetExponent(unitHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retVal,err] = rpUnitsGetExponent(unitHandle)
+/// Return the exponent of the Rappture Unit represented by unitHandle.
+/**
+ * Retrieve the exponent of the Rappture Units object with the handle 
+ * 'unitHandle'. Return the exponent as a double.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsGetExponent, args, ,
+"-*- texinfo -*-\n\
+[retVal,err] = rpUnitsGetExponent(@var{unitHandle})\n\
+\n\
+Retrieve the exponent of the Rappture Units object with the handle \n\
+'unitHandle'. Return the exponent as a double.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsGetExponent";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+
+    const RpUnits* myUnit = NULL;
+    int unitHandle = 0;
+    double exponent = 0;
+
+    if (nargin == 1) {
+
+        if ( args(0).is_real_scalar() ) {
+
+            unitHandle = args(0).int_value ();
+
+            /* Call the C subroutine. */
+            if ( unitHandle >= 0 ) {
+
+                // get the original unit
+                myUnit = getObject_UnitsStr(unitHandle);
+                if (myUnit) {
+                    // get the basis
+                    exponent = myUnit->getExponent();
+                    // adjust error code
+                    err = 0;
+                }
+            }
+            else {
+                // invalid unitHandle
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = exponent;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUnitsGetUnits.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsGetUnits.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsGetUnits.cc	(revision 6168)
@@ -0,0 +1,82 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpUnitsGetUnits(unitHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpUnitsGetUnits(unitHandle)
+/// Return the units of the Rappture Unit represented by unitHandle.
+/**
+ * Retrieve the units of the Rappture Units object with the handle 
+ * 'unitHandle'. Note this does not include the exponent.
+ * For units and exponent in one string see rpUnitsGetUnitsName().
+ * Return the units as a string.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsGetUnits, args, ,
+"-*- texinfo -*-\n\
+[retVal,err] = rpUnitsGetUnits(@var{unitHandle})\n\
+\n\
+Retrieve the units of the Rappture Units object with the handle \n\
+'unitHandle'. Note this does not include the exponent.\n\
+For units and exponent in one string see rpUnitsGetUnitsName().\n\
+Return the units as a string.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsGetUnits";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+
+    const RpUnits* myUnit = NULL;
+    int unitHandle = 0;
+    std::string retStr = "";
+
+    if (nargin == 1) {
+
+        if ( args(0).is_real_scalar() ) {
+
+            unitHandle = args(0).int_value ();
+
+            /* Call the C subroutine. */
+            if ( unitHandle >= 0 ) {
+
+                // get the original unit
+                myUnit = getObject_UnitsStr(unitHandle);
+                if (myUnit) {
+                    // get the basis
+                    retStr = myUnit->getUnits();
+                    // adjust error code
+                    err = 0;
+                }
+            }
+            else {
+                // invalid unitHandle
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retStr;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUnitsGetUnitsName.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsGetUnitsName.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsGetUnitsName.cc	(revision 6168)
@@ -0,0 +1,80 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [retStr,err] = rpUnitsGetUnitsName(unitHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [retStr,err] = rpUnitsGetUnitsName(unitHandle)
+/// Return the unit and exponent of the Rappture Unit represented by unitHandle.
+/**
+ * Retrieve the unit and exponent of the Rappture Units object with 
+ * the handle 'unitHandle'.
+ * Return the unit and exponent as one concatinated string.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsGetUnitsName, args, ,
+"-*- texinfo -*-\n\
+[retVal,err] = rpUnitsGetUnitsName(@var{unitHandle})\n\
+\n\
+Retrieve the unit and exponent of the Rappture Units object with \n\
+the handle 'unitHandle'.\n\
+Return the unit and exponent as one concatinated string.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsGetUnitsName";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+
+    const RpUnits* myUnit = NULL;
+    int unitHandle = 0;
+    std::string retStr = "";
+
+    if (nargin == 1) {
+
+        if ( args(0).is_real_scalar() ) {
+
+            unitHandle = args(0).int_value ();
+
+            /* Call the C subroutine. */
+            if ( unitHandle >= 0 ) {
+
+                // get the original unit
+                myUnit = getObject_UnitsStr(unitHandle);
+                if (myUnit) {
+                    // get the basis
+                    retStr = myUnit->getUnitsName();
+                    // adjust error code
+                    err = 0;
+                }
+            }
+            else {
+                // invalid unitHandle
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = retStr;
+    retval(1) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUnitsMakeMetric.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUnitsMakeMetric.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUnitsMakeMetric.cc	(revision 6168)
@@ -0,0 +1,82 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Library Source
+ *
+ *    [err] = rpUnitsMakeMetric(basisHandle)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpUnitsMakeMetric(basisHandle)
+/// Create metric extensions for the Rappture Unit referenced by basisHandle
+/**
+ * Create the metric extensions for the Rappture Unit, referenced 
+ * by basisHandle, within Rappture's internal units dictionary.
+ * Return an error code, err, to specify success or failure.
+ * Error code, err=0 on success, anything else is failure.
+ */
+
+DEFUN_DLD (rpUnitsMakeMetric, args, ,
+"-*- texinfo -*-\n\
+[err] = rpUnitsMakeMetric(@var{basisHandle})\n\
+\n\
+Create the metric extensions for the Rappture Unit, referenced \n\
+by @var{basisHandle}, within Rappture's internal units dictionary.\n\
+Return an error code, @var{err}, to specify success or failure.\n\
+Error code, err=0 on success, anything else is failure.")
+{
+    static std::string who = "rpUnitsMakeMetric";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err = 1;
+    int nargin = args.length ();
+
+    const RpUnits* myUnit = NULL;
+    int unitHandle = 0;
+
+    if (nargin == 1) {
+
+        if ( args(0).is_real_scalar() ) {
+
+            unitHandle = args(0).int_value ();
+
+            /* Call the C subroutine. */
+            if ( unitHandle >= 0 ) {
+
+                // get the original unit
+                myUnit = getObject_UnitsStr(unitHandle);
+                if (myUnit) {
+                    // make the metric extensions.
+                    err = RpUnits::makeMetric(myUnit);
+                    // adjust error code, because makeMetric returns 
+                    // 0 on failure and 1 on success. need to fix this 
+                    // in RpUnits.cc
+                    if (err) {
+                        err = 0;
+                    }
+                }
+            }
+            else {
+                // invalid unitHandle
+                _PRINT_USAGE (who.c_str());
+            }
+        }
+        else {
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/octave/src/rpUtilsProgress.cc
===================================================================
--- /tags/1.6.0/lang/octave/src/rpUtilsProgress.cc	(revision 6168)
+++ /tags/1.6.0/lang/octave/src/rpUtilsProgress.cc	(revision 6168)
@@ -0,0 +1,64 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Octave Rappture Progress Source
+ *
+ *    [err] = rpUtilsProgress(percent,message)
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2005-2007
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+
+#include "RpOctaveInterface.h"
+
+/**********************************************************************/
+// METHOD: [err] = rpUtilsProgress (percent,message)
+/// Print the Rappture Progress message.
+/**
+ * Clients use this to generate the super secret Rappture
+ * Progress message, and generate a progress bar in the
+ * Rappture graphical user interface.
+ */
+
+DEFUN_DLD (rpUtilsProgress, args, ,
+"-*- texinfo -*-\n\
+[err] = rpUtilsProgress(@var{percent},@var{message})\n\
+\n\
+Clients use this to generate the super secret Rappture\n\
+Progress message, and generate a progress bar in the\n\
+Rappture graphical user interface.")
+{
+    static std::string who = "rpUtilsProgress";
+
+    // The list of values to return.
+    octave_value_list retval;
+    int err           = 1;
+    int nargin        = args.length ();
+    int percent       = 0;
+    std::string message  = "";
+
+    if (nargin == 2) {
+        if ( args(0).is_real_scalar() &&
+             args(1).is_string()   ) {
+
+            percent   = args(0).int_value ();
+            message   = args(1).string_value ();
+
+            /* Call the C subroutine. */
+            err = Rappture::Utils::progress(percent,message.c_str());
+        }
+        else {
+            // wrong argument types
+            _PRINT_USAGE (who.c_str());
+        }
+    }
+    else {
+        // wrong number of arguments
+        _PRINT_USAGE (who.c_str());
+    }
+
+    retval(0) = err;
+    return retval;
+}
Index: /tags/1.6.0/lang/perl/MANIFEST
===================================================================
--- /tags/1.6.0/lang/perl/MANIFEST	(revision 6168)
+++ /tags/1.6.0/lang/perl/MANIFEST	(revision 6168)
@@ -0,0 +1,8 @@
+Makefile.PL
+MANIFEST
+ppport.h
+Rappture.xs
+README
+typemap
+t/Rappture.t
+lib/Rappture.pm
Index: /tags/1.6.0/lang/perl/Makefile.PL.in
===================================================================
--- /tags/1.6.0/lang/perl/Makefile.PL.in	(revision 6168)
+++ /tags/1.6.0/lang/perl/Makefile.PL.in	(revision 6168)
@@ -0,0 +1,149 @@
+use 5.008;
+use ExtUtils::MakeMaker;
+use Config;
+use File::Spec;
+
+$CC = $Config{"cc"};
+$LD = $Config{"ld"};
+
+if ($ARGV[0] eq "DEBUG") {
+    shift @ARGV;
+    $DEBUG = 1;
+}
+
+if ($^O ne "MSWin32") {
+    $CC = '@CXX@';
+    $LD = '@CXX@';
+    if ($^O eq 'darwin') {
+        @LDDLFLAGS = ( q[-bundle],
+                       q[-bundle_loader /usr/bin/perl],
+                       q[-L$(PERL_INC) -lperl]
+                     );
+    }
+    @RAPPTURE_INC_SEARCHPATH = ( "@srcdir@/../../src/core", "@prefix@/include",
+        "../include", "/usr/local/include", "/opt/include");
+    $RAPPTURE_INC = "rappture.h";
+    @EXPAT_INC_SEARCHPATH = ( "@prefix@/include",
+        "/usr/local/include", "/opt/include", "../../expat-2.0.0/lib",
+        "../../expat/lib", "/apps/expat-2.0.0/lib", "/apps/expat/lib",
+        "/opt/expat-2.0.0/lib", "/opt/expat/lib" );
+    $EXPAT_INC="expat.h";
+    @RAPPTURE_LIB_SEARCHPATH = ( "../../../src/core", "@prefix@/lib",
+        "@libdir@",
+        "../src", "/usr/local/lib", "/opt/lib" );
+    @RAPPTURE_LIBS=("librappture.so","librappture.a");
+    @EXPAT_LIB_SEARCHPATH = ( "@prefix@/lib",
+        "@libdir@",
+        "/usr/local/lib", "/opt/lib", "../../expat-2.0.0/lib",
+        "../../expat/lib", "/apps/expat-2.0.0/lib", "/apps/expat/lib",
+        "/opt/expat-2.0.0/lib", "/opt/expat/lib" );
+    @EXPAT_LIBS=("libexpat.so", "libexpat.a");
+}
+else {
+    if ($Config{"cc"} eq "cl") {
+        $CFLAGS = "/TP /EHsc";
+        @LIBS = ("msvcprt.lib");
+    }
+
+    @EXPAT_INC_SEARCHPATH = ( "C:\\Program Files\\Rappture\\include",
+        "C:\\opt\\rappture\\include", "C:\\opt\\include",
+        "..\\..\\expat-2.0.0\\lib", "..\\..\\expat\\lib",
+        "C:\\Program Files\\Expat-2.0.0\\Source\\lib",
+        "C:\\Program Files\\Expat\\Source\\lib",
+        "C:\\opt\\expat-2.0.0\\lib", "C:\\opt\\expat\\lib" );
+    $EXPAT_INC="expat.h";
+    @RAPPTURE_INC_SEARCHPATH = ( "C:\\Program Files\\Rappture\\include",
+        "C:\\opt\\rappture\\include", "C:\\opt\\include", "..\\include" );
+    $RAPPTURE_INC = "rappture.h";
+    @EXPAT_LIB_SEARCHPATH = ( "C:\\Program Files\\Rappture\\lib",
+        "C:\\opt\\rappture\\lib", "C:\\opt\\lib",
+        "..\\..\\expat-2.0.0\\lib\\Release_static",
+        "..\\..\\expat\\lib\\Release_static",
+        "C:\\Program Files\\Expat-2.0.0\\StaticLibs",
+        "C:\\Program Files\\Expat\\StaticLibs",
+        "C:\\opt\\expat-2.0.0\\lib\\Release_static",
+        "C:\\opt\\expat\\lib\\Release_static" );
+    @EXPAT_LIBS=("libexpat.lib", "libexpatMT.lib");
+    @RAPPTURE_LIB_SEARCHPATH = ( "C:\\Program Files\\Rappture\\lib",
+        "C:\\opt\\rappture\\lib", "C:\\opt\\lib", "..\\src" );
+    @RAPPTURE_LIBS=("librappture.lib");
+}
+
+sub
+find_include {
+    my ($dirs, $filename, $incref) = @_;
+    foreach $component (@$dirs) {
+        if (-e File::Spec->catfile($component, $filename)) {
+            ($sdir = $component) =~ s/\\/\\\\/g;
+            if (!(grep /^-I$sdir/, @$incref)) { 
+                push @$incref, "-I$component"; 
+            }
+            return 1;
+            last;
+        }
+    }
+    return 0;
+}
+
+sub
+find_lib {
+    my ($dirs, $filenames, $libref) = @_;
+
+    SEARCH: foreach $component (@$dirs) {
+        foreach $lib (@$filenames) {
+            $file = File::Spec->catfile($component, $lib);
+            if (-e $file) {
+                if ($lib =~ /^lib(.+)(.a|.so)$/) {
+                    if (grep /^-L$component/, @$libref) {
+                        push @$libref, "-l$1";
+                    }
+                    else {
+                        push @$libref, "-L$component -l$1";
+                    }
+                }
+                else {
+                    push @$libref, $file;
+                }
+                return 1;
+                last SEARCH;
+            }
+        }
+    }
+    return 0;
+}
+
+find_include(\@RAPPTURE_INC_SEARCHPATH, $RAPPTURE_INC, \@INCLUDES);
+find_include(\@EXPAT_INC_SEARCHPATH, $EXPAT_INC, \@INCLUDES);
+find_lib(\@RAPPTURE_LIB_SEARCHPATH, \@RAPPTURE_LIBS, \@LIBS);
+find_lib(\@EXPAT_LIB_SEARCHPATH, \@EXPAT_LIBS, \@LIBS);
+
+WriteMakefile(
+    NAME              => 'Rappture',
+    PREFIX	      => '@prefix@',
+    VERSION_FROM      => './lib/Rappture.pm', # finds $VERSION
+    PREREQ_PM         => {}, # e.g., Module::Name => 1.1
+    ($] >= 5.005 ?     ## Add these new keywords supported since 5.005
+      (ABSTRACT_FROM  => './lib/Rappture.pm', # retrieve abstract from module
+       AUTHOR         => 'Nicholas J. Kisseberth') : ()),
+    LIBS              => ["@LIBS"],
+    DEFINE            => "$CFLAGS", 
+    INC               => "@INCLUDES", 
+    CC                => $CC,
+    LD                => $LD,
+    LDDLFLAGS         => "@LDDLFLAGS",
+    XSOPT             => '-C++',
+);
+
+package MY;
+use Config;
+
+sub dynamic_lib {
+    my $inherited = shift->SUPER::dynamic_lib(@_);
+    if (($^O eq "MSWin32") && ($Config{'cc'} eq "cl")) {
+        $inherited .= "\tMT.EXE -manifest \$@.manifest -outputresource:\$@;2\n";
+        $inherited .= "\t\$(RM_F) \$@.manifest\n";
+    }
+    return($inherited);
+}
+
+
Index: /tags/1.6.0/lang/perl/Makefile.in
===================================================================
--- /tags/1.6.0/lang/perl/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/perl/Makefile.in	(revision 6168)
@@ -0,0 +1,130 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+CC              = $(CXX)
+CCC		= @CC@
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@ -Wall
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD        = @STLIB_LD@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+CFLAGS          = @CFLAGS@ -fPIC
+
+AR 		= ar
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+RANLIB 		= @RANLIB@
+RM		= rm -f
+VPATH		= $(srcdir)
+
+CDEBUGFLAGS     = -g -Wall
+
+PERL            = @PERL@
+PERL_ARCHLIB    = @PERL_ARCHLIB@
+PERL_VERSION    = @PERL_VERSION@
+PERL_VERSION_RV = @PERL_VERSION_RV@
+PERL_LIBSPEC	= @PERL_LIBSPEC@
+MAN3EXT		= .3pm
+perl5dir        = $$RAPPTURE_INSTALL_DIR/lib/perl/$(PERL_VERSION_RV)
+includes	= @PERL_INCLUDES@
+ccflags        	= @PERL_CCFLAGS@
+cppflags	= @PERL_CPPFLAGS@
+vendorlib	= @PERL_VENDORLIB@
+privlib		= @PERL_PRIVLIB@
+archlib		= @PERL_ARCHLIB@
+archlibexp	= @PERL_ARCHLIBEXP@
+XSUBPP		= @XSUBPP@
+
+name 		= Rappture
+lib		= $(name)$(SHLIB_SUFFIX)
+man		= $(name)$(MAN3EXT)
+bootstrap	= $(name).bs
+pod		= perllocal.pod
+
+destdir		= $(libdir)/perl
+
+CXX_SWITCHES	= $(CFLAGS) $(cppflags) $(CFLAGS_DEBUG) $(INCLUDES) $(DEFINES)
+
+INCLUDES	= \
+		-I$(srcdir) \
+		-I$(srcdir)/../../src/core \
+		-I$(archlibexp)/CORE
+
+LIBS		= \
+		-L../../src/core -lrappture \
+		$(PERL_LIBSPEC) \
+		-lexpat 
+
+all: $(lib) $(bootstrap) $(man) $(pod) 
+
+Rappture.cc: $(srcdir)/Rappture.xs
+	$(XSUBPP) -C++ -typemap $(privlib)/ExtUtils/typemap -typemap typemap \
+		$? > $@
+
+Rappture.o: Rappture.cc
+	$(CXX) -c $(CXX_SWITCHES) $? 
+
+$(bootstrap):
+	$(PERL) "-MExtUtils::Mkbootstrap" \
+		-e "Mkbootstrap('Rappture','rappture');"
+
+$(lib): Rappture.o
+	$(SHLIB_LD) $(SHLIB_CFLAGS) -o $@ $< $(LIB_SEARCH_DIRS) $(LIBS)
+
+$(man): $(srcdir)/lib/Rappture.pm 
+	$(PERL) "-MExtUtils::Command::MM" -e "pod2man" -- \
+		--section=3 --perm_rw=444 $? $@
+$(pod):
+	$(PERL) "-MExtUtils::Command::MM" -e perllocal_install \
+		"Module" "Rappture" \
+                "installed into" "$(destdir)" \
+                LINKTYPE "dynamic" \
+                VERSION "0.01" \
+                EXE_FILES "" >> $@
+
+install: $(lib) $(bootstrap) $(man) $(pod) 
+	$(MKDIR_P) -m 0755 $(destdir)
+	$(INSTALL) -m 0555 $(lib) $(destdir)
+	$(INSTALL) -m 0444 $(srcdir)/lib/Rappture.pm $(destdir)
+	$(INSTALL) -m 0444 $(bootstrap) $(destdir)
+	$(INSTALL) -m 0444 $(man) $(destdir)
+	$(INSTALL) -m 0444 $(pod) $(destdir)
+
+clean: 
+	$(RM) $(lib) $(bootstrap) $(man) $(pod) Rappture.o Rappture.cc 
+	$(RM) -r $(pkg_build_dir)
+
+distclean: clean
+
+# Package build procedure
+
+pkg_build_dir       = build
+
+pkg: pkgtmp 
+	$(MAKE) -C $(pkg_build_dir)
+
+pkgtmp:
+	$(RM) -r $(pkg_build_dir)
+	$(MKDIR_P) -m 0755 $(pkg_build_dir)
+	cp -p Makefile.PL $(pkg_build_dir)/Makefile.PL
+	tar -C $(srcdir) -clf - . | tar -C $(pkg_build_dir) -xpf -
+	(cd $(pkg_build_dir); $(PERL) Makefile.PL)
+
+pkginstall: 
+	$(MAKE) -C $(pkg_build_dir) install_perl
+
+pkgclean: 
+	$(MAKE) -C $(pkg_build_dir) clean
+	$(RM) -rf $(pkg_build_dir)
Index: /tags/1.6.0/lang/perl/README
===================================================================
--- /tags/1.6.0/lang/perl/README	(revision 6168)
+++ /tags/1.6.0/lang/perl/README	(revision 6168)
@@ -0,0 +1,67 @@
+Rappture version 0.01
+=====================
+
+Rappture/Perl API, these are Perl bindings to the Rappture Development Toolkit. 
+
+Summary:
+
+$library = Rappture::RpLibrary( $path ) 
+$library->get( $path ) 
+$library->put( $path, $value, $append ) 
+$library->result( ) 
+RpUnits::convert( $fromVal, $to, $units ) 
+
+
+INSTALLATION
+
+To install this module type the following:
+
+   perl Makefile.PL
+   make
+   make test
+   make install
+
+DEPENDENCIES
+
+This module requires these other modules and libraries:
+
+  Rappture Toolkit
+
+COPYRIGHT AND LICENCE
+
+Copyright (c) 2004-2012  HUBzero Foundation, LLC
+All rights reserved.
+
+Developed by:  Network for Computational Nanotechnology
+               Purdue University, West Lafayette, Indiana
+               http://www.rappture.org
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal with 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:
+
+    * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimers
+        in the documentation and/or other materials provided with the
+        distribution.
+
+    * Neither the names of the Network for Computational Nanotechnology,
+        Purdue University, nor the names of its contributors may be used
+        to endorse or promote products derived from this Software without
+        specific prior written permission. 
+
+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 CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
+
Index: /tags/1.6.0/lang/perl/Rappture.xs
===================================================================
--- /tags/1.6.0/lang/perl/Rappture.xs	(revision 6168)
+++ /tags/1.6.0/lang/perl/Rappture.xs	(revision 6168)
@@ -0,0 +1,102 @@
+#include "rappture.h"
+#include <string>
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#include "ppport.h"
+
+using namespace std;
+
+MODULE = Rappture        PACKAGE = Rappture::RpLibrary
+PROTOTYPES: ENABLE
+
+RpLibrary *
+RpLibrary::new(filename = "")
+const char *filename
+    CODE:
+        RpLibrary *library;
+        if ((filename == NULL) || (*filename == '\0'))
+            library = new RpLibrary();
+        else
+            library = new RpLibrary(filename);
+
+        if (library->isNull())
+                {
+                        delete library;
+            XSRETURN_UNDEF;
+                }
+        else
+            RETVAL = library;
+    OUTPUT:
+        RETVAL
+
+void *
+RpLibrary::DESTROY()
+    CODE:
+        RETVAL = 0;
+    OUTPUT:
+	RETVAL
+
+SV *
+RpLibrary::get( path )
+const char *path
+    CODE:
+        string result;
+        result = THIS->get(path);
+        RETVAL = newSVpvn(result.data(),result.length());
+    OUTPUT:
+        RETVAL
+
+void
+RpLibrary::put( path, value, append )
+const char *path
+const char *value
+int append
+    CODE:
+        THIS->put(path,value,"",append);
+
+void
+RpLibrary::putFile( path, fileName, compress, append )
+const char *path
+const char *fileName
+int compress
+int append
+    CODE:
+        THIS->putFile(path,fileName,compress,append);
+
+void
+RpLibrary::result()
+    CODE:
+        THIS->put("tool.version.rappture.language", "perl");
+        THIS->result();
+
+MODULE = Rappture        PACKAGE = Rappture::RpUnits
+
+const char *
+convert( fromVal, toUnitsName, showUnits = 1 )
+const char *fromVal
+const char *toUnitsName
+int showUnits
+    CODE:
+        string result;
+        result = RpUnits::convert(fromVal,toUnitsName,showUnits);
+
+                if (result.empty())
+                    XSRETURN_UNDEF;
+
+        RETVAL = result.c_str();
+    OUTPUT:
+        RETVAL
+
+MODULE = Rappture        PACKAGE = Rappture::Utils
+
+int
+progress( percent, message )
+int percent
+const char *message
+    CODE:
+        RETVAL = Rappture::Utils::progress(percent,message);
+    OUTPUT:
+        RETVAL
Index: /tags/1.6.0/lang/perl/lib/Rappture.pm
===================================================================
--- /tags/1.6.0/lang/perl/lib/Rappture.pm	(revision 6168)
+++ /tags/1.6.0/lang/perl/lib/Rappture.pm	(revision 6168)
@@ -0,0 +1,131 @@
+package Rappture;
+
+use 5.008;
+use strict;
+use warnings;
+
+require Exporter;
+
+our @ISA = qw(Exporter);
+
+# Items to export into callers namespace by default. Note: do not export
+# names by default without a very good reason. Use EXPORT_OK instead.
+# Do not simply export all your public functions/methods/constants.
+
+# This allows declaration	use Rappture ':all';
+# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
+# will save memory.
+our %EXPORT_TAGS = ( 'all' => [ qw(
+	
+) ] );
+
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+
+our @EXPORT = qw(
+	
+);
+
+our $VERSION = '0.01';
+
+require XSLoader;
+XSLoader::load('Rappture', $VERSION);
+
+# Preloaded methods go here.
+
+1;
+__END__
+
+=head1 NAME
+
+Rappture - Rappture/Perl API, Bindings to the Rappture Development Toolkit.
+
+=head1 SYNOPSIS
+
+  use Rappture;
+
+  # open the XML file containing the run parameters
+
+  $driver = Rappture::RpLibrary->new($ARGV[0]);
+
+  $Tstr = $driver->get("input.(temperature).current");
+  $T = Rappture::RpUnits::convert($Tstr, "K", "off");
+
+  $Efstr = $driver->get("input.(Ef).current");
+  $Ef = Rappture::RpUnits::convert($Efstr, "eV", "off");
+
+  $kT = 8.61734e-5 * $T;
+  $Emin = $Ef - 10 * $kT;
+  $Emax = $Ef + 10 * $kT;
+
+  $E = $Emin;
+  $dE = 0.005*($Emax - $Emin);
+
+  while( $E < $Emax ) {
+    $f = 1.0 / ( 1.0 + exp(($E - $Ef) / $kT));
+    $driver->put("output.curve(f12).component.xy", "$f $E\n", 1);
+    $E = $E + $dE;
+  }
+
+  $driver->result(); 
+
+=head1 DESCRIPTION
+
+This module provides an interface to the RAPPTURE (Rapid APPlication 
+infrastrucTURE) Toolkit. 
+
+=head2 EXPORT
+
+None by default.
+
+
+
+=head1 SEE ALSO
+
+See 
+http://developer.nanohub.org/projects/rappture
+http://developer.nanohub.org/projects/rappture/wiki/Documentation
+http://developer.nanohub.org/projects/rappture/wiki/rappture_perl_api
+
+=head1 AUTHOR
+
+Nicholas J. Kisseberth
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (c) 2004-2012  HUBzero Foundation, LLC
+All rights reserved.
+
+Developed by:  Network for Computational Nanotechnology
+               Purdue University, West Lafayette, Indiana
+               http://www.rappture.org
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal with 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:
+
+    * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimers
+        in the documentation and/or other materials provided with the
+        distribution.
+
+    * Neither the names of the Network for Computational Nanotechnology,
+        Purdue University, nor the names of its contributors may be used
+        to endorse or promote products derived from this Software without
+        specific prior written permission. 
+
+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 CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
+
+=cut
Index: /tags/1.6.0/lang/perl/ppport.h
===================================================================
--- /tags/1.6.0/lang/perl/ppport.h	(revision 6168)
+++ /tags/1.6.0/lang/perl/ppport.h	(revision 6168)
@@ -0,0 +1,4954 @@
+#if 0
+<<'SKIP';
+#endif
+/*
+----------------------------------------------------------------------
+
+    ppport.h -- Perl/Pollution/Portability Version 3.06_01
+
+    Automatically created by Devel::PPPort running under
+    perl 5.008008 on Thu Jun 29 11:55:50 2006.
+
+    Do NOT edit this file directly! -- Edit PPPort_pm.PL and the
+    includes in parts/inc/ instead.
+
+    Use 'perldoc ppport.h' to view the documentation below.
+
+----------------------------------------------------------------------
+
+SKIP
+
+=pod
+
+=head1 NAME
+
+ppport.h - Perl/Pollution/Portability version 3.06_01
+
+=head1 SYNOPSIS
+
+  perl ppport.h [options] [source files]
+
+  Searches current directory for files if no [source files] are given
+
+  --help                      show short help
+
+  --patch=file                write one patch file with changes
+  --copy=suffix               write changed copies with suffix
+  --diff=program              use diff program and options
+
+  --compat-version=version    provide compatibility with Perl version
+  --cplusplus                 accept C++ comments
+
+  --quiet                     don't output anything except fatal errors
+  --nodiag                    don't show diagnostics
+  --nohints                   don't show hints
+  --nochanges                 don't suggest changes
+  --nofilter                  don't filter input files
+
+  --list-provided             list provided API
+  --list-unsupported          list unsupported API
+  --api-info=name             show Perl API portability information
+
+=head1 COMPATIBILITY
+
+This version of F<ppport.h> is designed to support operation with Perl
+installations back to 5.003, and has been tested up to 5.9.3.
+
+=head1 OPTIONS
+
+=head2 --help
+
+Display a brief usage summary.
+
+=head2 --patch=I<file>
+
+If this option is given, a single patch file will be created if
+any changes are suggested. This requires a working diff program
+to be installed on your system.
+
+=head2 --copy=I<suffix>
+
+If this option is given, a copy of each file will be saved with
+the given suffix that contains the suggested changes. This does
+not require any external programs.
+
+If neither C<--patch> or C<--copy> are given, the default is to
+simply print the diffs for each file. This requires either
+C<Text::Diff> or a C<diff> program to be installed.
+
+=head2 --diff=I<program>
+
+Manually set the diff program and options to use. The default
+is to use C<Text::Diff>, when installed, and output unified
+context diffs.
+
+=head2 --compat-version=I<version>
+
+Tell F<ppport.h> to check for compatibility with the given
+Perl version. The default is to check for compatibility with Perl
+version 5.003. You can use this option to reduce the output
+of F<ppport.h> if you intend to be backward compatible only
+up to a certain Perl version.
+
+=head2 --cplusplus
+
+Usually, F<ppport.h> will detect C++ style comments and
+replace them with C style comments for portability reasons.
+Using this option instructs F<ppport.h> to leave C++
+comments untouched.
+
+=head2 --quiet
+
+Be quiet. Don't print anything except fatal errors.
+
+=head2 --nodiag
+
+Don't output any diagnostic messages. Only portability
+alerts will be printed.
+
+=head2 --nohints
+
+Don't output any hints. Hints often contain useful portability
+notes.
+
+=head2 --nochanges
+
+Don't suggest any changes. Only give diagnostic output and hints
+unless these are also deactivated.
+
+=head2 --nofilter
+
+Don't filter the list of input files. By default, files not looking
+like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped.
+
+=head2 --list-provided
+
+Lists the API elements for which compatibility is provided by
+F<ppport.h>. Also lists if it must be explicitly requested,
+if it has dependencies, and if there are hints for it.
+
+=head2 --list-unsupported
+
+Lists the API elements that are known not to be supported by
+F<ppport.h> and below which version of Perl they probably
+won't be available or work.
+
+=head2 --api-info=I<name>
+
+Show portability information for API elements matching I<name>.
+If I<name> is surrounded by slashes, it is interpreted as a regular
+expression.
+
+=head1 DESCRIPTION
+
+In order for a Perl extension (XS) module to be as portable as possible
+across differing versions of Perl itself, certain steps need to be taken.
+
+=over 4
+
+=item *
+
+Including this header is the first major one. This alone will give you
+access to a large part of the Perl API that hasn't been available in
+earlier Perl releases. Use
+
+    perl ppport.h --list-provided
+
+to see which API elements are provided by ppport.h.
+
+=item *
+
+You should avoid using deprecated parts of the API. For example, using
+global Perl variables without the C<PL_> prefix is deprecated. Also,
+some API functions used to have a C<perl_> prefix. Using this form is
+also deprecated. You can safely use the supported API, as F<ppport.h>
+will provide wrappers for older Perl versions.
+
+=item *
+
+If you use one of a few functions that were not present in earlier
+versions of Perl, and that can't be provided using a macro, you have
+to explicitly request support for these functions by adding one or
+more C<#define>s in your source code before the inclusion of F<ppport.h>.
+
+These functions will be marked C<explicit> in the list shown by
+C<--list-provided>.
+
+Depending on whether you module has a single or multiple files that
+use such functions, you want either C<static> or global variants.
+
+For a C<static> function, use:
+
+    #define NEED_function
+
+For a global function, use:
+
+    #define NEED_function_GLOBAL
+
+Note that you mustn't have more than one global request for one
+function in your project.
+
+    Function                  Static Request               Global Request
+    -----------------------------------------------------------------------------------------
+    eval_pv()                 NEED_eval_pv                 NEED_eval_pv_GLOBAL
+    grok_bin()                NEED_grok_bin                NEED_grok_bin_GLOBAL
+    grok_hex()                NEED_grok_hex                NEED_grok_hex_GLOBAL
+    grok_number()             NEED_grok_number             NEED_grok_number_GLOBAL
+    grok_numeric_radix()      NEED_grok_numeric_radix      NEED_grok_numeric_radix_GLOBAL
+    grok_oct()                NEED_grok_oct                NEED_grok_oct_GLOBAL
+    newCONSTSUB()             NEED_newCONSTSUB             NEED_newCONSTSUB_GLOBAL
+    newRV_noinc()             NEED_newRV_noinc             NEED_newRV_noinc_GLOBAL
+    sv_2pv_nolen()            NEED_sv_2pv_nolen            NEED_sv_2pv_nolen_GLOBAL
+    sv_2pvbyte()              NEED_sv_2pvbyte              NEED_sv_2pvbyte_GLOBAL
+    sv_catpvf_mg()            NEED_sv_catpvf_mg            NEED_sv_catpvf_mg_GLOBAL
+    sv_catpvf_mg_nocontext()  NEED_sv_catpvf_mg_nocontext  NEED_sv_catpvf_mg_nocontext_GLOBAL
+    sv_setpvf_mg()            NEED_sv_setpvf_mg            NEED_sv_setpvf_mg_GLOBAL
+    sv_setpvf_mg_nocontext()  NEED_sv_setpvf_mg_nocontext  NEED_sv_setpvf_mg_nocontext_GLOBAL
+    vnewSVpvf()               NEED_vnewSVpvf               NEED_vnewSVpvf_GLOBAL
+
+To avoid namespace conflicts, you can change the namespace of the
+explicitly exported functions using the C<DPPP_NAMESPACE> macro.
+Just C<#define> the macro before including C<ppport.h>:
+
+    #define DPPP_NAMESPACE MyOwnNamespace_
+    #include "ppport.h"
+
+The default namespace is C<DPPP_>.
+
+=back
+
+The good thing is that most of the above can be checked by running
+F<ppport.h> on your source code. See the next section for
+details.
+
+=head1 EXAMPLES
+
+To verify whether F<ppport.h> is needed for your module, whether you
+should make any changes to your code, and whether any special defines
+should be used, F<ppport.h> can be run as a Perl script to check your
+source code. Simply say:
+
+    perl ppport.h
+
+The result will usually be a list of patches suggesting changes
+that should at least be acceptable, if not necessarily the most
+efficient solution, or a fix for all possible problems.
+
+If you know that your XS module uses features only available in
+newer Perl releases, if you're aware that it uses C++ comments,
+and if you want all suggestions as a single patch file, you could
+use something like this:
+
+    perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff
+
+If you only want your code to be scanned without any suggestions
+for changes, use:
+
+    perl ppport.h --nochanges
+
+You can specify a different C<diff> program or options, using
+the C<--diff> option:
+
+    perl ppport.h --diff='diff -C 10'
+
+This would output context diffs with 10 lines of context.
+
+To display portability information for the C<newSVpvn> function,
+use:
+
+    perl ppport.h --api-info=newSVpvn
+
+Since the argument to C<--api-info> can be a regular expression,
+you can use
+
+    perl ppport.h --api-info=/_nomg$/
+
+to display portability information for all C<_nomg> functions or
+
+    perl ppport.h --api-info=/./
+
+to display information for all known API elements.
+
+=head1 BUGS
+
+If this version of F<ppport.h> is causing failure during
+the compilation of this module, please check if newer versions
+of either this module or C<Devel::PPPort> are available on CPAN
+before sending a bug report.
+
+If F<ppport.h> was generated using the latest version of
+C<Devel::PPPort> and is causing failure of this module, please
+file a bug report using the CPAN Request Tracker at L<http://rt.cpan.org/>.
+
+Please include the following information:
+
+=over 4
+
+=item 1.
+
+The complete output from running "perl -V"
+
+=item 2.
+
+This file.
+
+=item 3.
+
+The name and version of the module you were trying to build.
+
+=item 4.
+
+A full log of the build that failed.
+
+=item 5.
+
+Any other information that you think could be relevant.
+
+=back
+
+For the latest version of this code, please get the C<Devel::PPPort>
+module from CPAN.
+
+=head1 COPYRIGHT
+
+Version 3.x, Copyright (c) 2004-2005, Marcus Holland-Moritz.
+
+Version 2.x, Copyright (C) 2001, Paul Marquess.
+
+Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+See L<Devel::PPPort>.
+
+=cut
+
+use strict;
+
+my %opt = (
+  quiet     => 0,
+  diag      => 1,
+  hints     => 1,
+  changes   => 1,
+  cplusplus => 0,
+  filter    => 1,
+);
+
+my($ppport) = $0 =~ /([\w.]+)$/;
+my $LF = '(?:\r\n|[\r\n])';   # line feed
+my $HS = "[ \t]";             # horizontal whitespace
+
+eval {
+  require Getopt::Long;
+  Getopt::Long::GetOptions(\%opt, qw(
+    help quiet diag! filter! hints! changes! cplusplus
+    patch=s copy=s diff=s compat-version=s
+    list-provided list-unsupported api-info=s
+  )) or usage();
+};
+
+if ($@ and grep /^-/, @ARGV) {
+  usage() if "@ARGV" =~ /^--?h(?:elp)?$/;
+  die "Getopt::Long not found. Please don't use any options.\n";
+}
+
+usage() if $opt{help};
+
+if (exists $opt{'compat-version'}) {
+  my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) };
+  if ($@) {
+    die "Invalid version number format: '$opt{'compat-version'}'\n";
+  }
+  die "Only Perl 5 is supported\n" if $r != 5;
+  die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000;
+  $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s;
+}
+else {
+  $opt{'compat-version'} = 5;
+}
+
+# Never use C comments in this file!!!!!
+my $ccs  = '/'.'*';
+my $cce  = '*'.'/';
+my $rccs = quotemeta $ccs;
+my $rcce = quotemeta $cce;
+
+my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/
+                ? ( $1 => {
+                      ($2                  ? ( base     => $2 ) : ()),
+                      ($3                  ? ( todo     => $3 ) : ()),
+                      (index($4, 'v') >= 0 ? ( varargs  => 1  ) : ()),
+                      (index($4, 'p') >= 0 ? ( provided => 1  ) : ()),
+                      (index($4, 'n') >= 0 ? ( nothxarg => 1  ) : ()),
+                    } )
+                : die "invalid spec: $_" } qw(
+AvFILLp|5.004050||p
+AvFILL|||
+CLASS|||n
+CX_CURPAD_SAVE|||
+CX_CURPAD_SV|||
+CopFILEAV|5.006000||p
+CopFILEGV_set|5.006000||p
+CopFILEGV|5.006000||p
+CopFILESV|5.006000||p
+CopFILE_set|5.006000||p
+CopFILE|5.006000||p
+CopSTASHPV_set|5.006000||p
+CopSTASHPV|5.006000||p
+CopSTASH_eq|5.006000||p
+CopSTASH_set|5.006000||p
+CopSTASH|5.006000||p
+CopyD|5.009002||p
+Copy|||
+CvPADLIST|||
+CvSTASH|||
+CvWEAKOUTSIDE|||
+DEFSV|5.004050||p
+END_EXTERN_C|5.005000||p
+ENTER|||
+ERRSV|5.004050||p
+EXTEND|||
+EXTERN_C|5.005000||p
+FREETMPS|||
+GIMME_V||5.004000|n
+GIMME|||n
+GROK_NUMERIC_RADIX|5.007002||p
+G_ARRAY|||
+G_DISCARD|||
+G_EVAL|||
+G_NOARGS|||
+G_SCALAR|||
+G_VOID||5.004000|
+GetVars|||
+GvSV|||
+Gv_AMupdate|||
+HEf_SVKEY||5.004000|
+HeHASH||5.004000|
+HeKEY||5.004000|
+HeKLEN||5.004000|
+HePV||5.004000|
+HeSVKEY_force||5.004000|
+HeSVKEY_set||5.004000|
+HeSVKEY||5.004000|
+HeVAL||5.004000|
+HvNAME|||
+INT2PTR|5.006000||p
+IN_LOCALE_COMPILETIME|5.007002||p
+IN_LOCALE_RUNTIME|5.007002||p
+IN_LOCALE|5.007002||p
+IN_PERL_COMPILETIME|5.008001||p
+IS_NUMBER_GREATER_THAN_UV_MAX|5.007002||p
+IS_NUMBER_INFINITY|5.007002||p
+IS_NUMBER_IN_UV|5.007002||p
+IS_NUMBER_NAN|5.007003||p
+IS_NUMBER_NEG|5.007002||p
+IS_NUMBER_NOT_INT|5.007002||p
+IVSIZE|5.006000||p
+IVTYPE|5.006000||p
+IVdf|5.006000||p
+LEAVE|||
+LVRET|||
+MARK|||
+MY_CXT_CLONE|5.009002||p
+MY_CXT_INIT|5.007003||p
+MY_CXT|5.007003||p
+MoveD|5.009002||p
+Move|||
+NEWSV|||
+NOOP|5.005000||p
+NUM2PTR|5.006000||p
+NVTYPE|5.006000||p
+NVef|5.006001||p
+NVff|5.006001||p
+NVgf|5.006001||p
+Newc|||
+Newz|||
+New|||
+Nullav|||
+Nullch|||
+Nullcv|||
+Nullhv|||
+Nullsv|||
+ORIGMARK|||
+PAD_BASE_SV|||
+PAD_CLONE_VARS|||
+PAD_COMPNAME_FLAGS|||
+PAD_COMPNAME_GEN_set|||
+PAD_COMPNAME_GEN|||
+PAD_COMPNAME_OURSTASH|||
+PAD_COMPNAME_PV|||
+PAD_COMPNAME_TYPE|||
+PAD_RESTORE_LOCAL|||
+PAD_SAVE_LOCAL|||
+PAD_SAVE_SETNULLPAD|||
+PAD_SETSV|||
+PAD_SET_CUR_NOSAVE|||
+PAD_SET_CUR|||
+PAD_SVl|||
+PAD_SV|||
+PERL_BCDVERSION|5.009003||p
+PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p
+PERL_INT_MAX|5.004000||p
+PERL_INT_MIN|5.004000||p
+PERL_LONG_MAX|5.004000||p
+PERL_LONG_MIN|5.004000||p
+PERL_MAGIC_arylen|5.007002||p
+PERL_MAGIC_backref|5.007002||p
+PERL_MAGIC_bm|5.007002||p
+PERL_MAGIC_collxfrm|5.007002||p
+PERL_MAGIC_dbfile|5.007002||p
+PERL_MAGIC_dbline|5.007002||p
+PERL_MAGIC_defelem|5.007002||p
+PERL_MAGIC_envelem|5.007002||p
+PERL_MAGIC_env|5.007002||p
+PERL_MAGIC_ext|5.007002||p
+PERL_MAGIC_fm|5.007002||p
+PERL_MAGIC_glob|5.007002||p
+PERL_MAGIC_isaelem|5.007002||p
+PERL_MAGIC_isa|5.007002||p
+PERL_MAGIC_mutex|5.007002||p
+PERL_MAGIC_nkeys|5.007002||p
+PERL_MAGIC_overload_elem|5.007002||p
+PERL_MAGIC_overload_table|5.007002||p
+PERL_MAGIC_overload|5.007002||p
+PERL_MAGIC_pos|5.007002||p
+PERL_MAGIC_qr|5.007002||p
+PERL_MAGIC_regdata|5.007002||p
+PERL_MAGIC_regdatum|5.007002||p
+PERL_MAGIC_regex_global|5.007002||p
+PERL_MAGIC_shared_scalar|5.007003||p
+PERL_MAGIC_shared|5.007003||p
+PERL_MAGIC_sigelem|5.007002||p
+PERL_MAGIC_sig|5.007002||p
+PERL_MAGIC_substr|5.007002||p
+PERL_MAGIC_sv|5.007002||p
+PERL_MAGIC_taint|5.007002||p
+PERL_MAGIC_tiedelem|5.007002||p
+PERL_MAGIC_tiedscalar|5.007002||p
+PERL_MAGIC_tied|5.007002||p
+PERL_MAGIC_utf8|5.008001||p
+PERL_MAGIC_uvar_elem|5.007003||p
+PERL_MAGIC_uvar|5.007002||p
+PERL_MAGIC_vec|5.007002||p
+PERL_MAGIC_vstring|5.008001||p
+PERL_QUAD_MAX|5.004000||p
+PERL_QUAD_MIN|5.004000||p
+PERL_REVISION|5.006000||p
+PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p
+PERL_SCAN_DISALLOW_PREFIX|5.007003||p
+PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p
+PERL_SCAN_SILENT_ILLDIGIT|5.008001||p
+PERL_SHORT_MAX|5.004000||p
+PERL_SHORT_MIN|5.004000||p
+PERL_SUBVERSION|5.006000||p
+PERL_UCHAR_MAX|5.004000||p
+PERL_UCHAR_MIN|5.004000||p
+PERL_UINT_MAX|5.004000||p
+PERL_UINT_MIN|5.004000||p
+PERL_ULONG_MAX|5.004000||p
+PERL_ULONG_MIN|5.004000||p
+PERL_UNUSED_DECL|5.007002||p
+PERL_UQUAD_MAX|5.004000||p
+PERL_UQUAD_MIN|5.004000||p
+PERL_USHORT_MAX|5.004000||p
+PERL_USHORT_MIN|5.004000||p
+PERL_VERSION|5.006000||p
+PL_DBsingle|||pn
+PL_DBsub|||pn
+PL_DBtrace|||n
+PL_Sv|5.005000||p
+PL_compiling|5.004050||p
+PL_copline|5.005000||p
+PL_curcop|5.004050||p
+PL_curstash|5.004050||p
+PL_debstash|5.004050||p
+PL_defgv|5.004050||p
+PL_diehook|5.004050||p
+PL_dirty|5.004050||p
+PL_dowarn|||pn
+PL_errgv|5.004050||p
+PL_hexdigit|5.005000||p
+PL_hints|5.005000||p
+PL_last_in_gv|||n
+PL_modglobal||5.005000|n
+PL_na|5.004050||pn
+PL_no_modify|5.006000||p
+PL_ofs_sv|||n
+PL_perl_destruct_level|5.004050||p
+PL_perldb|5.004050||p
+PL_ppaddr|5.006000||p
+PL_rsfp_filters|5.004050||p
+PL_rsfp|5.004050||p
+PL_rs|||n
+PL_stack_base|5.004050||p
+PL_stack_sp|5.004050||p
+PL_stdingv|5.004050||p
+PL_sv_arenaroot|5.004050||p
+PL_sv_no|5.004050||pn
+PL_sv_undef|5.004050||pn
+PL_sv_yes|5.004050||pn
+PL_tainted|5.004050||p
+PL_tainting|5.004050||p
+POPi|||n
+POPl|||n
+POPn|||n
+POPpbytex||5.007001|n
+POPpx||5.005030|n
+POPp|||n
+POPs|||n
+PTR2IV|5.006000||p
+PTR2NV|5.006000||p
+PTR2UV|5.006000||p
+PTR2ul|5.007001||p
+PTRV|5.006000||p
+PUSHMARK|||
+PUSHi|||
+PUSHmortal|5.009002||p
+PUSHn|||
+PUSHp|||
+PUSHs|||
+PUSHu|5.004000||p
+PUTBACK|||
+PerlIO_clearerr||5.007003|
+PerlIO_close||5.007003|
+PerlIO_eof||5.007003|
+PerlIO_error||5.007003|
+PerlIO_fileno||5.007003|
+PerlIO_fill||5.007003|
+PerlIO_flush||5.007003|
+PerlIO_get_base||5.007003|
+PerlIO_get_bufsiz||5.007003|
+PerlIO_get_cnt||5.007003|
+PerlIO_get_ptr||5.007003|
+PerlIO_read||5.007003|
+PerlIO_seek||5.007003|
+PerlIO_set_cnt||5.007003|
+PerlIO_set_ptrcnt||5.007003|
+PerlIO_setlinebuf||5.007003|
+PerlIO_stderr||5.007003|
+PerlIO_stdin||5.007003|
+PerlIO_stdout||5.007003|
+PerlIO_tell||5.007003|
+PerlIO_unread||5.007003|
+PerlIO_write||5.007003|
+Poison|5.008000||p
+RETVAL|||n
+Renewc|||
+Renew|||
+SAVECLEARSV|||
+SAVECOMPPAD|||
+SAVEPADSV|||
+SAVETMPS|||
+SAVE_DEFSV|5.004050||p
+SPAGAIN|||
+SP|||
+START_EXTERN_C|5.005000||p
+START_MY_CXT|5.007003||p
+STMT_END|||p
+STMT_START|||p
+ST|||
+SVt_IV|||
+SVt_NV|||
+SVt_PVAV|||
+SVt_PVCV|||
+SVt_PVHV|||
+SVt_PVMG|||
+SVt_PV|||
+Safefree|||
+Slab_Alloc|||
+Slab_Free|||
+StructCopy|||
+SvCUR_set|||
+SvCUR|||
+SvEND|||
+SvGETMAGIC|5.004050||p
+SvGROW|||
+SvIOK_UV||5.006000|
+SvIOK_notUV||5.006000|
+SvIOK_off|||
+SvIOK_only_UV||5.006000|
+SvIOK_only|||
+SvIOK_on|||
+SvIOKp|||
+SvIOK|||
+SvIVX|||
+SvIV_nomg|5.009001||p
+SvIV_set|||
+SvIVx|||
+SvIV|||
+SvIsCOW_shared_hash||5.008003|
+SvIsCOW||5.008003|
+SvLEN_set|||
+SvLEN|||
+SvLOCK||5.007003|
+SvMAGIC_set||5.009003|
+SvNIOK_off|||
+SvNIOKp|||
+SvNIOK|||
+SvNOK_off|||
+SvNOK_only|||
+SvNOK_on|||
+SvNOKp|||
+SvNOK|||
+SvNVX|||
+SvNV_set|||
+SvNVx|||
+SvNV|||
+SvOK|||
+SvOOK|||
+SvPOK_off|||
+SvPOK_only_UTF8||5.006000|
+SvPOK_only|||
+SvPOK_on|||
+SvPOKp|||
+SvPOK|||
+SvPVX|||
+SvPV_force_nomg|5.007002||p
+SvPV_force|||
+SvPV_nolen|5.006000||p
+SvPV_nomg|5.007002||p
+SvPV_set|||
+SvPVbyte_force||5.009002|
+SvPVbyte_nolen||5.006000|
+SvPVbytex_force||5.006000|
+SvPVbytex||5.006000|
+SvPVbyte|5.006000||p
+SvPVutf8_force||5.006000|
+SvPVutf8_nolen||5.006000|
+SvPVutf8x_force||5.006000|
+SvPVutf8x||5.006000|
+SvPVutf8||5.006000|
+SvPVx|||
+SvPV|||
+SvREFCNT_dec|||
+SvREFCNT_inc|||
+SvREFCNT|||
+SvROK_off|||
+SvROK_on|||
+SvROK|||
+SvRV_set||5.009003|
+SvRV|||
+SvSETMAGIC|||
+SvSHARE||5.007003|
+SvSTASH_set||5.009003|
+SvSTASH|||
+SvSetMagicSV_nosteal||5.004000|
+SvSetMagicSV||5.004000|
+SvSetSV_nosteal||5.004000|
+SvSetSV|||
+SvTAINTED_off||5.004000|
+SvTAINTED_on||5.004000|
+SvTAINTED||5.004000|
+SvTAINT|||
+SvTRUE|||
+SvTYPE|||
+SvUNLOCK||5.007003|
+SvUOK||5.007001|
+SvUPGRADE|||
+SvUTF8_off||5.006000|
+SvUTF8_on||5.006000|
+SvUTF8||5.006000|
+SvUVXx|5.004000||p
+SvUVX|5.004000||p
+SvUV_nomg|5.009001||p
+SvUV_set||5.009003|
+SvUVx|5.004000||p
+SvUV|5.004000||p
+SvVOK||5.008001|
+THIS|||n
+UNDERBAR|5.009002||p
+UVSIZE|5.006000||p
+UVTYPE|5.006000||p
+UVXf|5.007001||p
+UVof|5.006000||p
+UVuf|5.006000||p
+UVxf|5.006000||p
+XCPT_CATCH|5.009002||p
+XCPT_RETHROW|5.009002||p
+XCPT_TRY_END|5.009002||p
+XCPT_TRY_START|5.009002||p
+XPUSHi|||
+XPUSHmortal|5.009002||p
+XPUSHn|||
+XPUSHp|||
+XPUSHs|||
+XPUSHu|5.004000||p
+XSRETURN_EMPTY|||
+XSRETURN_IV|||
+XSRETURN_NO|||
+XSRETURN_NV|||
+XSRETURN_PV|||
+XSRETURN_UNDEF|||
+XSRETURN_UV|5.008001||p
+XSRETURN_YES|||
+XSRETURN|||
+XST_mIV|||
+XST_mNO|||
+XST_mNV|||
+XST_mPV|||
+XST_mUNDEF|||
+XST_mUV|5.008001||p
+XST_mYES|||
+XS_VERSION_BOOTCHECK|||
+XS_VERSION|||
+XS|||
+ZeroD|5.009002||p
+Zero|||
+_aMY_CXT|5.007003||p
+_pMY_CXT|5.007003||p
+aMY_CXT_|5.007003||p
+aMY_CXT|5.007003||p
+aTHX_|5.006000||p
+aTHX|5.006000||p
+add_data|||
+allocmy|||
+amagic_call|||
+any_dup|||
+ao|||
+append_elem|||
+append_list|||
+apply_attrs_my|||
+apply_attrs_string||5.006001|
+apply_attrs|||
+apply|||
+asIV|||
+asUV|||
+atfork_lock||5.007003|n
+atfork_unlock||5.007003|n
+av_arylen_p||5.009003|
+av_clear|||
+av_delete||5.006000|
+av_exists||5.006000|
+av_extend|||
+av_fake|||
+av_fetch|||
+av_fill|||
+av_len|||
+av_make|||
+av_pop|||
+av_push|||
+av_reify|||
+av_shift|||
+av_store|||
+av_undef|||
+av_unshift|||
+ax|||n
+bad_type|||
+bind_match|||
+block_end|||
+block_gimme||5.004000|
+block_start|||
+boolSV|5.004000||p
+boot_core_PerlIO|||
+boot_core_UNIVERSAL|||
+boot_core_xsutils|||
+bytes_from_utf8||5.007001|
+bytes_to_utf8||5.006001|
+cache_re|||
+call_argv|5.006000||p
+call_atexit||5.006000|
+call_body|||
+call_list_body|||
+call_list||5.004000|
+call_method|5.006000||p
+call_pv|5.006000||p
+call_sv|5.006000||p
+calloc||5.007002|n
+cando|||
+cast_i32||5.006000|
+cast_iv||5.006000|
+cast_ulong||5.006000|
+cast_uv||5.006000|
+check_uni|||
+checkcomma|||
+checkposixcc|||
+ck_anoncode|||
+ck_bitop|||
+ck_concat|||
+ck_defined|||
+ck_delete|||
+ck_die|||
+ck_eof|||
+ck_eval|||
+ck_exec|||
+ck_exists|||
+ck_exit|||
+ck_ftst|||
+ck_fun|||
+ck_glob|||
+ck_grep|||
+ck_index|||
+ck_join|||
+ck_lengthconst|||
+ck_lfun|||
+ck_listiob|||
+ck_match|||
+ck_method|||
+ck_null|||
+ck_open|||
+ck_repeat|||
+ck_require|||
+ck_retarget|||
+ck_return|||
+ck_rfun|||
+ck_rvconst|||
+ck_sassign|||
+ck_select|||
+ck_shift|||
+ck_sort|||
+ck_spair|||
+ck_split|||
+ck_subr|||
+ck_substr|||
+ck_svconst|||
+ck_trunc|||
+ck_unpack|||
+cl_and|||
+cl_anything|||
+cl_init_zero|||
+cl_init|||
+cl_is_anything|||
+cl_or|||
+closest_cop|||
+convert|||
+cop_free|||
+cr_textfilter|||
+croak_nocontext|||vn
+croak|||v
+csighandler||5.007001|n
+custom_op_desc||5.007003|
+custom_op_name||5.007003|
+cv_ckproto|||
+cv_clone|||
+cv_const_sv||5.004000|
+cv_dump|||
+cv_undef|||
+cx_dump||5.005000|
+cx_dup|||
+cxinc|||
+dAXMARK||5.009003|
+dAX|5.007002||p
+dITEMS|5.007002||p
+dMARK|||
+dMY_CXT_SV|5.007003||p
+dMY_CXT|5.007003||p
+dNOOP|5.006000||p
+dORIGMARK|||
+dSP|||
+dTHR|5.004050||p
+dTHXa|5.006000||p
+dTHXoa|5.006000||p
+dTHX|5.006000||p
+dUNDERBAR|5.009002||p
+dXCPT|5.009002||p
+dXSARGS|||
+dXSI32|||
+dXSTARG|5.006000||p
+deb_curcv|||
+deb_nocontext|||vn
+deb_stack_all|||
+deb_stack_n|||
+debop||5.005000|
+debprofdump||5.005000|
+debprof|||
+debstackptrs||5.007003|
+debstack||5.007003|
+deb||5.007003|v
+del_he|||
+del_sv|||
+delimcpy||5.004000|
+depcom|||
+deprecate_old|||
+deprecate|||
+despatch_signals||5.007001|
+die_nocontext|||vn
+die_where|||
+die|||v
+dirp_dup|||
+div128|||
+djSP|||
+do_aexec5|||
+do_aexec|||
+do_aspawn|||
+do_binmode||5.004050|
+do_chomp|||
+do_chop|||
+do_close|||
+do_dump_pad|||
+do_eof|||
+do_exec3|||
+do_execfree|||
+do_exec|||
+do_gv_dump||5.006000|
+do_gvgv_dump||5.006000|
+do_hv_dump||5.006000|
+do_ipcctl|||
+do_ipcget|||
+do_join|||
+do_kv|||
+do_magic_dump||5.006000|
+do_msgrcv|||
+do_msgsnd|||
+do_oddball|||
+do_op_dump||5.006000|
+do_open9||5.006000|
+do_openn||5.007001|
+do_open||5.004000|
+do_pipe|||
+do_pmop_dump||5.006000|
+do_print|||
+do_readline|||
+do_seek|||
+do_semop|||
+do_shmio|||
+do_spawn_nowait|||
+do_spawn|||
+do_sprintf|||
+do_sv_dump||5.006000|
+do_sysseek|||
+do_tell|||
+do_trans_complex_utf8|||
+do_trans_complex|||
+do_trans_count_utf8|||
+do_trans_count|||
+do_trans_simple_utf8|||
+do_trans_simple|||
+do_trans|||
+do_vecget|||
+do_vecset|||
+do_vop|||
+docatch_body|||
+docatch|||
+doeval|||
+dofile|||
+dofindlabel|||
+doform|||
+doing_taint||5.008001|n
+dooneliner|||
+doopen_pm|||
+doparseform|||
+dopoptoeval|||
+dopoptolabel|||
+dopoptoloop|||
+dopoptosub_at|||
+dopoptosub|||
+dounwind|||
+dowantarray|||
+dump_all||5.006000|
+dump_eval||5.006000|
+dump_fds|||
+dump_form||5.006000|
+dump_indent||5.006000|v
+dump_mstats|||
+dump_packsubs||5.006000|
+dump_sub||5.006000|
+dump_vindent||5.006000|
+dumpuntil|||
+dup_attrlist|||
+emulate_eaccess|||
+eval_pv|5.006000||p
+eval_sv|5.006000||p
+expect_number|||
+fbm_compile||5.005000|
+fbm_instr||5.005000|
+fd_on_nosuid_fs|||
+filter_add|||
+filter_del|||
+filter_gets|||
+filter_read|||
+find_beginning|||
+find_byclass|||
+find_in_my_stash|||
+find_runcv|||
+find_rundefsvoffset||5.009002|
+find_script|||
+find_uninit_var|||
+fold_constants|||
+forbid_setid|||
+force_ident|||
+force_list|||
+force_next|||
+force_version|||
+force_word|||
+form_nocontext|||vn
+form||5.004000|v
+fp_dup|||
+fprintf_nocontext|||vn
+free_global_struct|||
+free_tied_hv_pool|||
+free_tmps|||
+gen_constant_list|||
+get_av|5.006000||p
+get_context||5.006000|n
+get_cv|5.006000||p
+get_db_sub|||
+get_debug_opts|||
+get_hash_seed|||
+get_hv|5.006000||p
+get_mstats|||
+get_no_modify|||
+get_num|||
+get_op_descs||5.005000|
+get_op_names||5.005000|
+get_opargs|||
+get_ppaddr||5.006000|
+get_sv|5.006000||p
+get_vtbl||5.005030|
+getcwd_sv||5.007002|
+getenv_len|||
+gp_dup|||
+gp_free|||
+gp_ref|||
+grok_bin|5.007003||p
+grok_hex|5.007003||p
+grok_number|5.007002||p
+grok_numeric_radix|5.007002||p
+grok_oct|5.007003||p
+group_end|||
+gv_AVadd|||
+gv_HVadd|||
+gv_IOadd|||
+gv_autoload4||5.004000|
+gv_check|||
+gv_dump||5.006000|
+gv_efullname3||5.004000|
+gv_efullname4||5.006001|
+gv_efullname|||
+gv_ename|||
+gv_fetchfile|||
+gv_fetchmeth_autoload||5.007003|
+gv_fetchmethod_autoload||5.004000|
+gv_fetchmethod|||
+gv_fetchmeth|||
+gv_fetchpvn_flags||5.009002|
+gv_fetchpv|||
+gv_fetchsv||5.009002|
+gv_fullname3||5.004000|
+gv_fullname4||5.006001|
+gv_fullname|||
+gv_handler||5.007001|
+gv_init_sv|||
+gv_init|||
+gv_share|||
+gv_stashpvn|5.006000||p
+gv_stashpv|||
+gv_stashsv|||
+he_dup|||
+hek_dup|||
+hfreeentries|||
+hsplit|||
+hv_assert||5.009001|
+hv_auxinit|||
+hv_clear_placeholders||5.009001|
+hv_clear|||
+hv_delayfree_ent||5.004000|
+hv_delete_common|||
+hv_delete_ent||5.004000|
+hv_delete|||
+hv_eiter_p||5.009003|
+hv_eiter_set||5.009003|
+hv_exists_ent||5.004000|
+hv_exists|||
+hv_fetch_common|||
+hv_fetch_ent||5.004000|
+hv_fetch|||
+hv_free_ent||5.004000|
+hv_iterinit|||
+hv_iterkeysv||5.004000|
+hv_iterkey|||
+hv_iternext_flags||5.008000|
+hv_iternextsv|||
+hv_iternext|||
+hv_iterval|||
+hv_ksplit||5.004000|
+hv_magic_check|||
+hv_magic|||
+hv_name_set||5.009003|
+hv_notallowed|||
+hv_placeholders_get||5.009003|
+hv_placeholders_p||5.009003|
+hv_placeholders_set||5.009003|
+hv_riter_p||5.009003|
+hv_riter_set||5.009003|
+hv_scalar||5.009001|
+hv_store_ent||5.004000|
+hv_store_flags||5.008000|
+hv_store|||
+hv_undef|||
+ibcmp_locale||5.004000|
+ibcmp_utf8||5.007003|
+ibcmp|||
+incl_perldb|||
+incline|||
+incpush|||
+ingroup|||
+init_argv_symbols|||
+init_debugger|||
+init_global_struct|||
+init_i18nl10n||5.006000|
+init_i18nl14n||5.006000|
+init_ids|||
+init_interp|||
+init_lexer|||
+init_main_stash|||
+init_perllib|||
+init_postdump_symbols|||
+init_predump_symbols|||
+init_stacks||5.005000|
+init_tm||5.007002|
+instr|||
+intro_my|||
+intuit_method|||
+intuit_more|||
+invert|||
+io_close|||
+isALNUM|||
+isALPHA|||
+isDIGIT|||
+isLOWER|||
+isSPACE|||
+isUPPER|||
+is_an_int|||
+is_gv_magical_sv|||
+is_gv_magical|||
+is_handle_constructor|||
+is_list_assignment|||
+is_lvalue_sub||5.007001|
+is_uni_alnum_lc||5.006000|
+is_uni_alnumc_lc||5.006000|
+is_uni_alnumc||5.006000|
+is_uni_alnum||5.006000|
+is_uni_alpha_lc||5.006000|
+is_uni_alpha||5.006000|
+is_uni_ascii_lc||5.006000|
+is_uni_ascii||5.006000|
+is_uni_cntrl_lc||5.006000|
+is_uni_cntrl||5.006000|
+is_uni_digit_lc||5.006000|
+is_uni_digit||5.006000|
+is_uni_graph_lc||5.006000|
+is_uni_graph||5.006000|
+is_uni_idfirst_lc||5.006000|
+is_uni_idfirst||5.006000|
+is_uni_lower_lc||5.006000|
+is_uni_lower||5.006000|
+is_uni_print_lc||5.006000|
+is_uni_print||5.006000|
+is_uni_punct_lc||5.006000|
+is_uni_punct||5.006000|
+is_uni_space_lc||5.006000|
+is_uni_space||5.006000|
+is_uni_upper_lc||5.006000|
+is_uni_upper||5.006000|
+is_uni_xdigit_lc||5.006000|
+is_uni_xdigit||5.006000|
+is_utf8_alnumc||5.006000|
+is_utf8_alnum||5.006000|
+is_utf8_alpha||5.006000|
+is_utf8_ascii||5.006000|
+is_utf8_char_slow|||
+is_utf8_char||5.006000|
+is_utf8_cntrl||5.006000|
+is_utf8_digit||5.006000|
+is_utf8_graph||5.006000|
+is_utf8_idcont||5.008000|
+is_utf8_idfirst||5.006000|
+is_utf8_lower||5.006000|
+is_utf8_mark||5.006000|
+is_utf8_print||5.006000|
+is_utf8_punct||5.006000|
+is_utf8_space||5.006000|
+is_utf8_string_loclen||5.009003|
+is_utf8_string_loc||5.008001|
+is_utf8_string||5.006001|
+is_utf8_upper||5.006000|
+is_utf8_xdigit||5.006000|
+isa_lookup|||
+items|||n
+ix|||n
+jmaybe|||
+keyword|||
+leave_scope|||
+lex_end|||
+lex_start|||
+linklist|||
+listkids|||
+list|||
+load_module_nocontext|||vn
+load_module||5.006000|v
+localize|||
+looks_like_number|||
+lop|||
+mPUSHi|5.009002||p
+mPUSHn|5.009002||p
+mPUSHp|5.009002||p
+mPUSHu|5.009002||p
+mXPUSHi|5.009002||p
+mXPUSHn|5.009002||p
+mXPUSHp|5.009002||p
+mXPUSHu|5.009002||p
+magic_clear_all_env|||
+magic_clearenv|||
+magic_clearpack|||
+magic_clearsig|||
+magic_dump||5.006000|
+magic_existspack|||
+magic_freearylen_p|||
+magic_freeovrld|||
+magic_freeregexp|||
+magic_getarylen|||
+magic_getdefelem|||
+magic_getglob|||
+magic_getnkeys|||
+magic_getpack|||
+magic_getpos|||
+magic_getsig|||
+magic_getsubstr|||
+magic_gettaint|||
+magic_getuvar|||
+magic_getvec|||
+magic_get|||
+magic_killbackrefs|||
+magic_len|||
+magic_methcall|||
+magic_methpack|||
+magic_nextpack|||
+magic_regdata_cnt|||
+magic_regdatum_get|||
+magic_regdatum_set|||
+magic_scalarpack|||
+magic_set_all_env|||
+magic_setamagic|||
+magic_setarylen|||
+magic_setbm|||
+magic_setcollxfrm|||
+magic_setdbline|||
+magic_setdefelem|||
+magic_setenv|||
+magic_setfm|||
+magic_setglob|||
+magic_setisa|||
+magic_setmglob|||
+magic_setnkeys|||
+magic_setpack|||
+magic_setpos|||
+magic_setregexp|||
+magic_setsig|||
+magic_setsubstr|||
+magic_settaint|||
+magic_setutf8|||
+magic_setuvar|||
+magic_setvec|||
+magic_set|||
+magic_sizepack|||
+magic_wipepack|||
+magicname|||
+make_trie|||
+malloced_size|||n
+malloc||5.007002|n
+markstack_grow|||
+measure_struct|||
+memEQ|5.004000||p
+memNE|5.004000||p
+mem_collxfrm|||
+mess_alloc|||
+mess_nocontext|||vn
+mess||5.006000|v
+method_common|||
+mfree||5.007002|n
+mg_clear|||
+mg_copy|||
+mg_dup|||
+mg_find|||
+mg_free|||
+mg_get|||
+mg_length||5.005000|
+mg_localize|||
+mg_magical|||
+mg_set|||
+mg_size||5.005000|
+mini_mktime||5.007002|
+missingterm|||
+mode_from_discipline|||
+modkids|||
+mod|||
+moreswitches|||
+mul128|||
+mulexp10|||n
+my_atof2||5.007002|
+my_atof||5.006000|
+my_attrs|||
+my_bcopy|||n
+my_betoh16|||n
+my_betoh32|||n
+my_betoh64|||n
+my_betohi|||n
+my_betohl|||n
+my_betohs|||n
+my_bzero|||n
+my_chsize|||
+my_exit_jump|||
+my_exit|||
+my_failure_exit||5.004000|
+my_fflush_all||5.006000|
+my_fork||5.007003|n
+my_htobe16|||n
+my_htobe32|||n
+my_htobe64|||n
+my_htobei|||n
+my_htobel|||n
+my_htobes|||n
+my_htole16|||n
+my_htole32|||n
+my_htole64|||n
+my_htolei|||n
+my_htolel|||n
+my_htoles|||n
+my_htonl|||
+my_kid|||
+my_letoh16|||n
+my_letoh32|||n
+my_letoh64|||n
+my_letohi|||n
+my_letohl|||n
+my_letohs|||n
+my_lstat|||
+my_memcmp||5.004000|n
+my_memset|||n
+my_ntohl|||
+my_pclose||5.004000|
+my_popen_list||5.007001|
+my_popen||5.004000|
+my_setenv|||
+my_socketpair||5.007003|n
+my_stat|||
+my_strftime||5.007002|
+my_swabn|||n
+my_swap|||
+my_unexec|||
+my|||
+newANONATTRSUB||5.006000|
+newANONHASH|||
+newANONLIST|||
+newANONSUB|||
+newASSIGNOP|||
+newATTRSUB||5.006000|
+newAVREF|||
+newAV|||
+newBINOP|||
+newCONDOP|||
+newCONSTSUB|5.006000||p
+newCVREF|||
+newDEFSVOP|||
+newFORM|||
+newFOROP|||
+newGVOP|||
+newGVREF|||
+newGVgen|||
+newHVREF|||
+newHVhv||5.005000|
+newHV|||
+newIO|||
+newLISTOP|||
+newLOGOP|||
+newLOOPEX|||
+newLOOPOP|||
+newMYSUB||5.006000|
+newNULLLIST|||
+newOP|||
+newPADOP||5.006000|
+newPMOP|||
+newPROG|||
+newPVOP|||
+newRANGE|||
+newRV_inc|5.004000||p
+newRV_noinc|5.006000||p
+newRV|||
+newSLICEOP|||
+newSTATEOP|||
+newSUB|||
+newSVOP|||
+newSVREF|||
+newSVhek||5.009003|
+newSViv|||
+newSVnv|||
+newSVpvf_nocontext|||vn
+newSVpvf||5.004000|v
+newSVpvn_share||5.007001|
+newSVpvn|5.006000||p
+newSVpv|||
+newSVrv|||
+newSVsv|||
+newSVuv|5.006000||p
+newSV|||
+newUNOP|||
+newWHILEOP||5.009003|
+newXSproto||5.006000|
+newXS||5.006000|
+new_collate||5.006000|
+new_constant|||
+new_ctype||5.006000|
+new_he|||
+new_logop|||
+new_numeric||5.006000|
+new_stackinfo||5.005000|
+new_version||5.009000|
+next_symbol|||
+nextargv|||
+nextchar|||
+ninstr|||
+no_bareword_allowed|||
+no_fh_allowed|||
+no_op|||
+not_a_number|||
+nothreadhook||5.008000|
+nuke_stacks|||
+num_overflow|||n
+oopsAV|||
+oopsCV|||
+oopsHV|||
+op_clear|||
+op_const_sv|||
+op_dump||5.006000|
+op_free|||
+op_null||5.007002|
+op_refcnt_lock||5.009002|
+op_refcnt_unlock||5.009002|
+open_script|||
+pMY_CXT_|5.007003||p
+pMY_CXT|5.007003||p
+pTHX_|5.006000||p
+pTHX|5.006000||p
+pack_cat||5.007003|
+pack_rec|||
+package|||
+packlist||5.008001|
+pad_add_anon|||
+pad_add_name|||
+pad_alloc|||
+pad_block_start|||
+pad_check_dup|||
+pad_compname_type|||
+pad_findlex|||
+pad_findmy|||
+pad_fixup_inner_anons|||
+pad_free|||
+pad_leavemy|||
+pad_new|||
+pad_push|||
+pad_reset|||
+pad_setsv|||
+pad_sv|||
+pad_swipe|||
+pad_tidy|||
+pad_undef|||
+parse_body|||
+parse_unicode_opts|||
+path_is_absolute|||
+peep|||
+pending_ident|||
+perl_alloc_using|||n
+perl_alloc|||n
+perl_clone_using|||n
+perl_clone|||n
+perl_construct|||n
+perl_destruct||5.007003|n
+perl_free|||n
+perl_parse||5.006000|n
+perl_run|||n
+pidgone|||
+pmflag|||
+pmop_dump||5.006000|
+pmruntime|||
+pmtrans|||
+pop_scope|||
+pregcomp|||
+pregexec|||
+pregfree|||
+prepend_elem|||
+printf_nocontext|||vn
+ptr_table_clear|||
+ptr_table_fetch|||
+ptr_table_free|||
+ptr_table_new|||
+ptr_table_split|||
+ptr_table_store|||
+push_scope|||
+put_byte|||
+pv_display||5.006000|
+pv_uni_display||5.007003|
+qerror|||
+re_croak2|||
+re_dup|||
+re_intuit_start||5.006000|
+re_intuit_string||5.006000|
+realloc||5.007002|n
+reentrant_free|||
+reentrant_init|||
+reentrant_retry|||vn
+reentrant_size|||
+refkids|||
+refto|||
+ref|||
+reg_node|||
+reganode|||
+regatom|||
+regbranch|||
+regclass_swash||5.007003|
+regclass|||
+regcp_set_to|||
+regcppop|||
+regcppush|||
+regcurly|||
+regdump||5.005000|
+regexec_flags||5.005000|
+reghop3|||
+reghopmaybe3|||
+reghopmaybe|||
+reghop|||
+reginclass|||
+reginitcolors||5.006000|
+reginsert|||
+regmatch|||
+regnext||5.005000|
+regoptail|||
+regpiece|||
+regpposixcc|||
+regprop|||
+regrepeat_hard|||
+regrepeat|||
+regtail|||
+regtry|||
+reguni|||
+regwhite|||
+reg|||
+repeatcpy|||
+report_evil_fh|||
+report_uninit|||
+require_errno|||
+require_pv||5.006000|
+rninstr|||
+rsignal_restore|||
+rsignal_save|||
+rsignal_state||5.004000|
+rsignal||5.004000|
+run_body|||
+runops_debug||5.005000|
+runops_standard||5.005000|
+rvpv_dup|||
+rxres_free|||
+rxres_restore|||
+rxres_save|||
+safesyscalloc||5.006000|n
+safesysfree||5.006000|n
+safesysmalloc||5.006000|n
+safesysrealloc||5.006000|n
+same_dirent|||
+save_I16||5.004000|
+save_I32|||
+save_I8||5.006000|
+save_aelem||5.004050|
+save_alloc||5.006000|
+save_aptr|||
+save_ary|||
+save_bool||5.008001|
+save_clearsv|||
+save_delete|||
+save_destructor_x||5.006000|
+save_destructor||5.006000|
+save_freeop|||
+save_freepv|||
+save_freesv|||
+save_generic_pvref||5.006001|
+save_generic_svref||5.005030|
+save_gp||5.004000|
+save_hash|||
+save_hek_flags|||
+save_helem||5.004050|
+save_hints||5.005000|
+save_hptr|||
+save_int|||
+save_item|||
+save_iv||5.005000|
+save_lines|||
+save_list|||
+save_long|||
+save_magic|||
+save_mortalizesv||5.007001|
+save_nogv|||
+save_op|||
+save_padsv||5.007001|
+save_pptr|||
+save_re_context||5.006000|
+save_scalar_at|||
+save_scalar|||
+save_set_svflags||5.009000|
+save_shared_pvref||5.007003|
+save_sptr|||
+save_svref|||
+save_threadsv||5.005000|
+save_vptr||5.006000|
+savepvn|||
+savepv|||
+savesharedpv||5.007003|
+savestack_grow_cnt||5.008001|
+savestack_grow|||
+savesvpv||5.009002|
+sawparens|||
+scalar_mod_type|||
+scalarboolean|||
+scalarkids|||
+scalarseq|||
+scalarvoid|||
+scalar|||
+scan_bin||5.006000|
+scan_commit|||
+scan_const|||
+scan_formline|||
+scan_heredoc|||
+scan_hex|||
+scan_ident|||
+scan_inputsymbol|||
+scan_num||5.007001|
+scan_oct|||
+scan_pat|||
+scan_str|||
+scan_subst|||
+scan_trans|||
+scan_version||5.009001|
+scan_vstring||5.008001|
+scan_word|||
+scope|||
+screaminstr||5.005000|
+seed|||
+set_context||5.006000|n
+set_csh|||
+set_numeric_local||5.006000|
+set_numeric_radix||5.006000|
+set_numeric_standard||5.006000|
+setdefout|||
+setenv_getix|||
+share_hek_flags|||
+share_hek|||
+si_dup|||
+sighandler|||n
+simplify_sort|||
+skipspace|||
+sortsv||5.007003|
+ss_dup|||
+stack_grow|||
+start_glob|||
+start_subparse||5.004000|
+stashpv_hvname_match||5.009003|
+stdize_locale|||
+strEQ|||
+strGE|||
+strGT|||
+strLE|||
+strLT|||
+strNE|||
+str_to_version||5.006000|
+strnEQ|||
+strnNE|||
+study_chunk|||
+sub_crush_depth|||
+sublex_done|||
+sublex_push|||
+sublex_start|||
+sv_2bool|||
+sv_2cv|||
+sv_2io|||
+sv_2iuv_non_preserve|||
+sv_2iv_flags||5.009001|
+sv_2iv|||
+sv_2mortal|||
+sv_2nv|||
+sv_2pv_flags||5.007002|
+sv_2pv_nolen|5.006000||p
+sv_2pvbyte_nolen|||
+sv_2pvbyte|5.006000||p
+sv_2pvutf8_nolen||5.006000|
+sv_2pvutf8||5.006000|
+sv_2pv|||
+sv_2uv_flags||5.009001|
+sv_2uv|5.004000||p
+sv_add_arena|||
+sv_add_backref|||
+sv_backoff|||
+sv_bless|||
+sv_cat_decode||5.008001|
+sv_catpv_mg|5.006000||p
+sv_catpvf_mg_nocontext|||pvn
+sv_catpvf_mg|5.006000|5.004000|pv
+sv_catpvf_nocontext|||vn
+sv_catpvf||5.004000|v
+sv_catpvn_flags||5.007002|
+sv_catpvn_mg|5.006000||p
+sv_catpvn_nomg|5.007002||p
+sv_catpvn|||
+sv_catpv|||
+sv_catsv_flags||5.007002|
+sv_catsv_mg|5.006000||p
+sv_catsv_nomg|5.007002||p
+sv_catsv|||
+sv_chop|||
+sv_clean_all|||
+sv_clean_objs|||
+sv_clear|||
+sv_cmp_locale||5.004000|
+sv_cmp|||
+sv_collxfrm|||
+sv_compile_2op||5.008001|
+sv_copypv||5.007003|
+sv_dec|||
+sv_del_backref|||
+sv_derived_from||5.004000|
+sv_dump|||
+sv_dup|||
+sv_eq|||
+sv_force_normal_flags||5.007001|
+sv_force_normal||5.006000|
+sv_free2|||
+sv_free_arenas|||
+sv_free|||
+sv_gets||5.004000|
+sv_grow|||
+sv_inc|||
+sv_insert|||
+sv_isa|||
+sv_isobject|||
+sv_iv||5.005000|
+sv_len_utf8||5.006000|
+sv_len|||
+sv_magicext||5.007003|
+sv_magic|||
+sv_mortalcopy|||
+sv_newmortal|||
+sv_newref|||
+sv_nolocking||5.007003|
+sv_nosharing||5.007003|
+sv_nounlocking||5.007003|
+sv_nv||5.005000|
+sv_peek||5.005000|
+sv_pos_b2u||5.006000|
+sv_pos_u2b||5.006000|
+sv_pvbyten_force||5.006000|
+sv_pvbyten||5.006000|
+sv_pvbyte||5.006000|
+sv_pvn_force_flags||5.007002|
+sv_pvn_force|||p
+sv_pvn_nomg|5.007003||p
+sv_pvn|5.006000||p
+sv_pvutf8n_force||5.006000|
+sv_pvutf8n||5.006000|
+sv_pvutf8||5.006000|
+sv_pv||5.006000|
+sv_recode_to_utf8||5.007003|
+sv_reftype|||
+sv_release_COW|||
+sv_release_IVX|||
+sv_replace|||
+sv_report_used|||
+sv_reset|||
+sv_rvweaken||5.006000|
+sv_setiv_mg|5.006000||p
+sv_setiv|||
+sv_setnv_mg|5.006000||p
+sv_setnv|||
+sv_setpv_mg|5.006000||p
+sv_setpvf_mg_nocontext|||pvn
+sv_setpvf_mg|5.006000|5.004000|pv
+sv_setpvf_nocontext|||vn
+sv_setpvf||5.004000|v
+sv_setpviv_mg||5.008001|
+sv_setpviv||5.008001|
+sv_setpvn_mg|5.006000||p
+sv_setpvn|||
+sv_setpv|||
+sv_setref_iv|||
+sv_setref_nv|||
+sv_setref_pvn|||
+sv_setref_pv|||
+sv_setref_uv||5.007001|
+sv_setsv_cow|||
+sv_setsv_flags||5.007002|
+sv_setsv_mg|5.006000||p
+sv_setsv_nomg|5.007002||p
+sv_setsv|||
+sv_setuv_mg|5.006000||p
+sv_setuv|5.006000||p
+sv_tainted||5.004000|
+sv_taint||5.004000|
+sv_true||5.005000|
+sv_unglob|||
+sv_uni_display||5.007003|
+sv_unmagic|||
+sv_unref_flags||5.007001|
+sv_unref|||
+sv_untaint||5.004000|
+sv_upgrade|||
+sv_usepvn_mg|5.006000||p
+sv_usepvn|||
+sv_utf8_decode||5.006000|
+sv_utf8_downgrade||5.006000|
+sv_utf8_encode||5.006000|
+sv_utf8_upgrade_flags||5.007002|
+sv_utf8_upgrade||5.007001|
+sv_uv|5.006000||p
+sv_vcatpvf_mg|5.006000|5.004000|p
+sv_vcatpvfn||5.004000|
+sv_vcatpvf|5.006000|5.004000|p
+sv_vsetpvf_mg|5.006000|5.004000|p
+sv_vsetpvfn||5.004000|
+sv_vsetpvf|5.006000|5.004000|p
+svtype|||
+swallow_bom|||
+swash_fetch||5.007002|
+swash_init||5.006000|
+sys_intern_clear|||
+sys_intern_dup|||
+sys_intern_init|||
+taint_env|||
+taint_proper|||
+tmps_grow||5.006000|
+toLOWER|||
+toUPPER|||
+to_byte_substr|||
+to_uni_fold||5.007003|
+to_uni_lower_lc||5.006000|
+to_uni_lower||5.007003|
+to_uni_title_lc||5.006000|
+to_uni_title||5.007003|
+to_uni_upper_lc||5.006000|
+to_uni_upper||5.007003|
+to_utf8_case||5.007003|
+to_utf8_fold||5.007003|
+to_utf8_lower||5.007003|
+to_utf8_substr|||
+to_utf8_title||5.007003|
+to_utf8_upper||5.007003|
+tokeq|||
+tokereport|||
+too_few_arguments|||
+too_many_arguments|||
+unlnk|||
+unpack_rec|||
+unpack_str||5.007003|
+unpackstring||5.008001|
+unshare_hek_or_pvn|||
+unshare_hek|||
+unsharepvn||5.004000|
+upg_version||5.009000|
+usage|||
+utf16_textfilter|||
+utf16_to_utf8_reversed||5.006001|
+utf16_to_utf8||5.006001|
+utf16rev_textfilter|||
+utf8_distance||5.006000|
+utf8_hop||5.006000|
+utf8_length||5.007001|
+utf8_mg_pos_init|||
+utf8_mg_pos|||
+utf8_to_bytes||5.006001|
+utf8_to_uvchr||5.007001|
+utf8_to_uvuni||5.007001|
+utf8n_to_uvchr||5.007001|
+utf8n_to_uvuni||5.007001|
+utilize|||
+uvchr_to_utf8_flags||5.007003|
+uvchr_to_utf8||5.007001|
+uvuni_to_utf8_flags||5.007003|
+uvuni_to_utf8||5.007001|
+validate_suid|||
+varname|||
+vcmp||5.009000|
+vcroak||5.006000|
+vdeb||5.007003|
+vdie|||
+vform||5.006000|
+visit|||
+vivify_defelem|||
+vivify_ref|||
+vload_module||5.006000|
+vmess||5.006000|
+vnewSVpvf|5.006000|5.004000|p
+vnormal||5.009002|
+vnumify||5.009000|
+vstringify||5.009000|
+vwarner||5.006000|
+vwarn||5.006000|
+wait4pid|||
+warn_nocontext|||vn
+warner_nocontext|||vn
+warner||5.006000|v
+warn|||v
+watch|||
+whichsig|||
+write_to_stderr|||
+yyerror|||
+yylex|||
+yyparse|||
+yywarn|||
+);
+
+if (exists $opt{'list-unsupported'}) {
+  my $f;
+  for $f (sort { lc $a cmp lc $b } keys %API) {
+    next unless $API{$f}{todo};
+    print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n";
+  }
+  exit 0;
+}
+
+# Scan for possible replacement candidates
+
+my(%replace, %need, %hints, %depends);
+my $replace = 0;
+my $hint = '';
+
+while (<DATA>) {
+  if ($hint) {
+    if (m{^\s*\*\s(.*?)\s*$}) {
+      $hints{$hint} ||= '';  # suppress warning with older perls
+      $hints{$hint} .= "$1\n";
+    }
+    else {
+      $hint = '';
+    }
+  }
+  $hint = $1 if m{^\s*$rccs\sHint:\s+(\w+)\s*$};
+
+  $replace     = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$};
+  $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)};
+  $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce};
+  $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$};
+
+  if (m{^\s*$rccs\s+(\w+)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) {
+    push @{$depends{$1}}, map { s/\s+//g; $_ } split /,/, $2;
+  }
+
+  $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)};
+}
+
+if (exists $opt{'api-info'}) {
+  my $f;
+  my $count = 0;
+  my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$";
+  for $f (sort { lc $a cmp lc $b } keys %API) {
+    next unless $f =~ /$match/;
+    print "\n=== $f ===\n\n";
+    my $info = 0;
+    if ($API{$f}{base} || $API{$f}{todo}) {
+      my $base = format_version($API{$f}{base} || $API{$f}{todo});
+      print "Supported at least starting from perl-$base.\n";
+      $info++;
+    }
+    if ($API{$f}{provided}) {
+      my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003";
+      print "Support by $ppport provided back to perl-$todo.\n";
+      print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f};
+      print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f};
+      print "$hints{$f}" if exists $hints{$f};
+      $info++;
+    }
+    unless ($info) {
+      print "No portability information available.\n";
+    }
+    $count++;
+  }
+  if ($count > 0) {
+    print "\n";
+  }
+  else {
+    print "Found no API matching '$opt{'api-info'}'.\n";
+  }
+  exit 0;
+}
+
+if (exists $opt{'list-provided'}) {
+  my $f;
+  for $f (sort { lc $a cmp lc $b } keys %API) {
+    next unless $API{$f}{provided};
+    my @flags;
+    push @flags, 'explicit' if exists $need{$f};
+    push @flags, 'depend'   if exists $depends{$f};
+    push @flags, 'hint'     if exists $hints{$f};
+    my $flags = @flags ? '  ['.join(', ', @flags).']' : '';
+    print "$f$flags\n";
+  }
+  exit 0;
+}
+
+my @files;
+my @srcext = qw( xs c h cc cpp );
+my $srcext = join '|', @srcext;
+
+if (@ARGV) {
+  my %seen;
+  @files = grep { -f && !exists $seen{$_} } map { glob $_ } @ARGV;
+}
+else {
+  eval {
+    require File::Find;
+    File::Find::find(sub {
+      $File::Find::name =~ /\.($srcext)$/i
+          and push @files, $File::Find::name;
+    }, '.');
+  };
+  if ($@) {
+    @files = map { glob "*.$_" } @srcext;
+  }
+}
+
+if (!@ARGV || $opt{filter}) {
+  my(@in, @out);
+  my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files;
+  for (@files) {
+    my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/\.($srcext)$/i;
+    push @{ $out ? \@out : \@in }, $_;
+  }
+  if (@ARGV && @out) {
+    warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out);
+  }
+  @files = @in;
+}
+
+unless (@files) {
+  die "No input files given!\n";
+}
+
+my(%files, %global, %revreplace);
+%revreplace = reverse %replace;
+my $filename;
+my $patch_opened = 0;
+
+for $filename (@files) {
+  unless (open IN, "<$filename") {
+    warn "Unable to read from $filename: $!\n";
+    next;
+  }
+
+  info("Scanning $filename ...");
+
+  my $c = do { local $/; <IN> };
+  close IN;
+
+  my %file = (orig => $c, changes => 0);
+
+  # temporarily remove C comments from the code
+  my @ccom;
+  $c =~ s{
+    (
+        [^"'/]+
+      |
+        (?:"[^"\\]*(?:\\.[^"\\]*)*" [^"'/]*)+
+      |
+        (?:'[^'\\]*(?:\\.[^'\\]*)*' [^"'/]*)+
+    )
+  |
+    (/ (?:
+        \*[^*]*\*+(?:[^$ccs][^*]*\*+)* /
+        |
+        /[^\r\n]*
+      ))
+  }{
+    defined $2 and push @ccom, $2;
+    defined $1 ? $1 : "$ccs$#ccom$cce";
+  }egsx;
+
+  $file{ccom} = \@ccom;
+  $file{code} = $c;
+  $file{has_inc_ppport} = ($c =~ /#.*include.*\Q$ppport\E/);
+
+  my $func;
+
+  for $func (keys %API) {
+    my $match = $func;
+    $match .= "|$revreplace{$func}" if exists $revreplace{$func};
+    if ($c =~ /\b(?:Perl_)?($match)\b/) {
+      $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func};
+      $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/;
+      if (exists $API{$func}{provided}) {
+        if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) {
+          $file{uses}{$func}++;
+          my @deps = rec_depend($func);
+          if (@deps) {
+            $file{uses_deps}{$func} = \@deps;
+            for (@deps) {
+              $file{uses}{$_} = 0 unless exists $file{uses}{$_};
+            }
+          }
+          for ($func, @deps) {
+            if (exists $need{$_}) {
+              $file{needs}{$_} = 'static';
+            }
+          }
+        }
+      }
+      if (exists $API{$func}{todo} && $API{$func}{todo} > $opt{'compat-version'}) {
+        if ($c =~ /\b$func\b/) {
+          $file{uses_todo}{$func}++;
+        }
+      }
+    }
+  }
+
+  while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) {
+    if (exists $need{$2}) {
+      $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++;
+    }
+    else {
+      warning("Possibly wrong #define $1 in $filename");
+    }
+  }
+
+  for (qw(uses needs uses_todo needed_global needed_static)) {
+    for $func (keys %{$file{$_}}) {
+      push @{$global{$_}{$func}}, $filename;
+    }
+  }
+
+  $files{$filename} = \%file;
+}
+
+# Globally resolve NEED_'s
+my $need;
+for $need (keys %{$global{needs}}) {
+  if (@{$global{needs}{$need}} > 1) {
+    my @targets = @{$global{needs}{$need}};
+    my @t = grep $files{$_}{needed_global}{$need}, @targets;
+    @targets = @t if @t;
+    @t = grep /\.xs$/i, @targets;
+    @targets = @t if @t;
+    my $target = shift @targets;
+    $files{$target}{needs}{$need} = 'global';
+    for (@{$global{needs}{$need}}) {
+      $files{$_}{needs}{$need} = 'extern' if $_ ne $target;
+    }
+  }
+}
+
+for $filename (@files) {
+  exists $files{$filename} or next;
+
+  info("=== Analyzing $filename ===");
+
+  my %file = %{$files{$filename}};
+  my $func;
+  my $c = $file{code};
+
+  for $func (sort keys %{$file{uses_Perl}}) {
+    if ($API{$func}{varargs}) {
+      my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))}
+                            { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge);
+      if ($changes) {
+        warning("Doesn't pass interpreter argument aTHX to Perl_$func");
+        $file{changes} += $changes;
+      }
+    }
+    else {
+      warning("Uses Perl_$func instead of $func");
+      $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*}
+                                {$func$1(}g);
+    }
+  }
+
+  for $func (sort keys %{$file{uses_replace}}) {
+    warning("Uses $func instead of $replace{$func}");
+    $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g);
+  }
+
+  for $func (sort keys %{$file{uses}}) {
+    next unless $file{uses}{$func};   # if it's only a dependency
+    if (exists $file{uses_deps}{$func}) {
+      diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}}));
+    }
+    elsif (exists $replace{$func}) {
+      warning("Uses $func instead of $replace{$func}");
+      $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g);
+    }
+    else {
+      diag("Uses $func");
+    }
+    hint($func);
+  }
+
+  for $func (sort keys %{$file{uses_todo}}) {
+    warning("Uses $func, which may not be portable below perl ",
+            format_version($API{$func}{todo}));
+  }
+
+  for $func (sort keys %{$file{needed_static}}) {
+    my $message = '';
+    if (not exists $file{uses}{$func}) {
+      $message = "No need to define NEED_$func if $func is never used";
+    }
+    elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') {
+      $message = "No need to define NEED_$func when already needed globally";
+    }
+    if ($message) {
+      diag($message);
+      $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg);
+    }
+  }
+
+  for $func (sort keys %{$file{needed_global}}) {
+    my $message = '';
+    if (not exists $global{uses}{$func}) {
+      $message = "No need to define NEED_${func}_GLOBAL if $func is never used";
+    }
+    elsif (exists $file{needs}{$func}) {
+      if ($file{needs}{$func} eq 'extern') {
+        $message = "No need to define NEED_${func}_GLOBAL when already needed globally";
+      }
+      elsif ($file{needs}{$func} eq 'static') {
+        $message = "No need to define NEED_${func}_GLOBAL when only used in this file";
+      }
+    }
+    if ($message) {
+      diag($message);
+      $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg);
+    }
+  }
+
+  $file{needs_inc_ppport} = keys %{$file{uses}};
+
+  if ($file{needs_inc_ppport}) {
+    my $pp = '';
+
+    for $func (sort keys %{$file{needs}}) {
+      my $type = $file{needs}{$func};
+      next if $type eq 'extern';
+      my $suffix = $type eq 'global' ? '_GLOBAL' : '';
+      unless (exists $file{"needed_$type"}{$func}) {
+        if ($type eq 'global') {
+          diag("Files [@{$global{needs}{$func}}] need $func, adding global request");
+        }
+        else {
+          diag("File needs $func, adding static request");
+        }
+        $pp .= "#define NEED_$func$suffix\n";
+      }
+    }
+
+    if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) {
+      $pp = '';
+      $file{changes}++;
+    }
+
+    unless ($file{has_inc_ppport}) {
+      diag("Needs to include '$ppport'");
+      $pp .= qq(#include "$ppport"\n)
+    }
+
+    if ($pp) {
+      $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms)
+                     || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m)
+                     || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m)
+                     || ($c =~ s/^/$pp/);
+    }
+  }
+  else {
+    if ($file{has_inc_ppport}) {
+      diag("No need to include '$ppport'");
+      $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m);
+    }
+  }
+
+  # put back in our C comments
+  my $ix;
+  my $cppc = 0;
+  my @ccom = @{$file{ccom}};
+  for $ix (0 .. $#ccom) {
+    if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) {
+      $cppc++;
+      $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/;
+    }
+    else {
+      $c =~ s/$rccs$ix$rcce/$ccom[$ix]/;
+    }
+  }
+
+  if ($cppc) {
+    my $s = $cppc != 1 ? 's' : '';
+    warning("Uses $cppc C++ style comment$s, which is not portable");
+  }
+
+  if ($file{changes}) {
+    if (exists $opt{copy}) {
+      my $newfile = "$filename$opt{copy}";
+      if (-e $newfile) {
+        error("'$newfile' already exists, refusing to write copy of '$filename'");
+      }
+      else {
+        local *F;
+        if (open F, ">$newfile") {
+          info("Writing copy of '$filename' with changes to '$newfile'");
+          print F $c;
+          close F;
+        }
+        else {
+          error("Cannot open '$newfile' for writing: $!");
+        }
+      }
+    }
+    elsif (exists $opt{patch} || $opt{changes}) {
+      if (exists $opt{patch}) {
+        unless ($patch_opened) {
+          if (open PATCH, ">$opt{patch}") {
+            $patch_opened = 1;
+          }
+          else {
+            error("Cannot open '$opt{patch}' for writing: $!");
+            delete $opt{patch};
+            $opt{changes} = 1;
+            goto fallback;
+          }
+        }
+        mydiff(\*PATCH, $filename, $c);
+      }
+      else {
+fallback:
+        info("Suggested changes:");
+        mydiff(\*STDOUT, $filename, $c);
+      }
+    }
+    else {
+      my $s = $file{changes} == 1 ? '' : 's';
+      info("$file{changes} potentially required change$s detected");
+    }
+  }
+  else {
+    info("Looks good");
+  }
+}
+
+close PATCH if $patch_opened;
+
+exit 0;
+
+
+sub mydiff
+{
+  local *F = shift;
+  my($file, $str) = @_;
+  my $diff;
+
+  if (exists $opt{diff}) {
+    $diff = run_diff($opt{diff}, $file, $str);
+  }
+
+  if (!defined $diff and can_use('Text::Diff')) {
+    $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' });
+    $diff = <<HEADER . $diff;
+--- $file
++++ $file.patched
+HEADER
+  }
+
+  if (!defined $diff) {
+    $diff = run_diff('diff -u', $file, $str);
+  }
+
+  if (!defined $diff) {
+    $diff = run_diff('diff', $file, $str);
+  }
+
+  if (!defined $diff) {
+    error("Cannot generate a diff. Please install Text::Diff or use --copy.");
+    return;
+  }
+
+  print F $diff;
+
+}
+
+sub run_diff
+{
+  my($prog, $file, $str) = @_;
+  my $tmp = 'dppptemp';
+  my $suf = 'aaa';
+  my $diff = '';
+  local *F;
+
+  while (-e "$tmp.$suf") { $suf++ }
+  $tmp = "$tmp.$suf";
+
+  if (open F, ">$tmp") {
+    print F $str;
+    close F;
+
+    if (open F, "$prog $file $tmp |") {
+      while (<F>) {
+        s/\Q$tmp\E/$file.patched/;
+        $diff .= $_;
+      }
+      close F;
+      unlink $tmp;
+      return $diff;
+    }
+
+    unlink $tmp;
+  }
+  else {
+    error("Cannot open '$tmp' for writing: $!");
+  }
+
+  return undef;
+}
+
+sub can_use
+{
+  eval "use @_;";
+  return $@ eq '';
+}
+
+sub rec_depend
+{
+  my $func = shift;
+  my %seen;
+  return () unless exists $depends{$func};
+  grep !$seen{$_}++, map { ($_, rec_depend($_)) } @{$depends{$func}};
+}
+
+sub parse_version
+{
+  my $ver = shift;
+
+  if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) {
+    return ($1, $2, $3);
+  }
+  elsif ($ver !~ /^\d+\.[\d_]+$/) {
+    die "cannot parse version '$ver'\n";
+  }
+
+  $ver =~ s/_//g;
+  $ver =~ s/$/000000/;
+
+  my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
+
+  $v = int $v;
+  $s = int $s;
+
+  if ($r < 5 || ($r == 5 && $v < 6)) {
+    if ($s % 10) {
+      die "cannot parse version '$ver'\n";
+    }
+  }
+
+  return ($r, $v, $s);
+}
+
+sub format_version
+{
+  my $ver = shift;
+
+  $ver =~ s/$/000000/;
+  my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
+
+  $v = int $v;
+  $s = int $s;
+
+  if ($r < 5 || ($r == 5 && $v < 6)) {
+    if ($s % 10) {
+      die "invalid version '$ver'\n";
+    }
+    $s /= 10;
+
+    $ver = sprintf "%d.%03d", $r, $v;
+    $s > 0 and $ver .= sprintf "_%02d", $s;
+
+    return $ver;
+  }
+
+  return sprintf "%d.%d.%d", $r, $v, $s;
+}
+
+sub info
+{
+  $opt{quiet} and return;
+  print @_, "\n";
+}
+
+sub diag
+{
+  $opt{quiet} and return;
+  $opt{diag} and print @_, "\n";
+}
+
+sub warning
+{
+  $opt{quiet} and return;
+  print "*** ", @_, "\n";
+}
+
+sub error
+{
+  print "*** ERROR: ", @_, "\n";
+}
+
+my %given_hints;
+sub hint
+{
+  $opt{quiet} and return;
+  $opt{hints} or return;
+  my $func = shift;
+  exists $hints{$func} or return;
+  $given_hints{$func}++ and return;
+  my $hint = $hints{$func};
+  $hint =~ s/^/   /mg;
+  print "   --- hint for $func ---\n", $hint;
+}
+
+sub usage
+{
+  my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms;
+  my %M = ( 'I' => '*' );
+  $usage =~ s/^\s*perl\s+\S+/$^X $0/;
+  $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g;
+
+  print <<ENDUSAGE;
+
+Usage: $usage
+
+See perldoc $0 for details.
+
+ENDUSAGE
+
+  exit 2;
+}
+
+__DATA__
+*/
+
+#ifndef _P_P_PORTABILITY_H_
+#define _P_P_PORTABILITY_H_
+
+#ifndef DPPP_NAMESPACE
+#  define DPPP_NAMESPACE DPPP_
+#endif
+
+#define DPPP_CAT2(x,y) CAT2(x,y)
+#define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)
+
+#ifndef PERL_REVISION
+#  if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION))
+#    define PERL_PATCHLEVEL_H_IMPLICIT
+#    include <patchlevel.h>
+#  endif
+#  if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL)))
+#    include <could_not_find_Perl_patchlevel.h>
+#  endif
+#  ifndef PERL_REVISION
+#    define PERL_REVISION       (5)
+     /* Replace: 1 */
+#    define PERL_VERSION        PATCHLEVEL
+#    define PERL_SUBVERSION     SUBVERSION
+     /* Replace PERL_PATCHLEVEL with PERL_VERSION */
+     /* Replace: 0 */
+#  endif
+#endif
+
+#define PERL_BCDVERSION ((PERL_REVISION * 0x1000000L) + (PERL_VERSION * 0x1000L) + PERL_SUBVERSION)
+
+/* It is very unlikely that anyone will try to use this with Perl 6
+   (or greater), but who knows.
+ */
+#if PERL_REVISION != 5
+#  error ppport.h only works with Perl version 5
+#endif /* PERL_REVISION != 5 */
+
+#ifdef I_LIMITS
+#  include <limits.h>
+#endif
+
+#ifndef PERL_UCHAR_MIN
+#  define PERL_UCHAR_MIN ((unsigned char)0)
+#endif
+
+#ifndef PERL_UCHAR_MAX
+#  ifdef UCHAR_MAX
+#    define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX)
+#  else
+#    ifdef MAXUCHAR
+#      define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR)
+#    else
+#      define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0)
+#    endif
+#  endif
+#endif
+
+#ifndef PERL_USHORT_MIN
+#  define PERL_USHORT_MIN ((unsigned short)0)
+#endif
+
+#ifndef PERL_USHORT_MAX
+#  ifdef USHORT_MAX
+#    define PERL_USHORT_MAX ((unsigned short)USHORT_MAX)
+#  else
+#    ifdef MAXUSHORT
+#      define PERL_USHORT_MAX ((unsigned short)MAXUSHORT)
+#    else
+#      ifdef USHRT_MAX
+#        define PERL_USHORT_MAX ((unsigned short)USHRT_MAX)
+#      else
+#        define PERL_USHORT_MAX ((unsigned short)~(unsigned)0)
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifndef PERL_SHORT_MAX
+#  ifdef SHORT_MAX
+#    define PERL_SHORT_MAX ((short)SHORT_MAX)
+#  else
+#    ifdef MAXSHORT    /* Often used in <values.h> */
+#      define PERL_SHORT_MAX ((short)MAXSHORT)
+#    else
+#      ifdef SHRT_MAX
+#        define PERL_SHORT_MAX ((short)SHRT_MAX)
+#      else
+#        define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1))
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifndef PERL_SHORT_MIN
+#  ifdef SHORT_MIN
+#    define PERL_SHORT_MIN ((short)SHORT_MIN)
+#  else
+#    ifdef MINSHORT
+#      define PERL_SHORT_MIN ((short)MINSHORT)
+#    else
+#      ifdef SHRT_MIN
+#        define PERL_SHORT_MIN ((short)SHRT_MIN)
+#      else
+#        define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3))
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifndef PERL_UINT_MAX
+#  ifdef UINT_MAX
+#    define PERL_UINT_MAX ((unsigned int)UINT_MAX)
+#  else
+#    ifdef MAXUINT
+#      define PERL_UINT_MAX ((unsigned int)MAXUINT)
+#    else
+#      define PERL_UINT_MAX (~(unsigned int)0)
+#    endif
+#  endif
+#endif
+
+#ifndef PERL_UINT_MIN
+#  define PERL_UINT_MIN ((unsigned int)0)
+#endif
+
+#ifndef PERL_INT_MAX
+#  ifdef INT_MAX
+#    define PERL_INT_MAX ((int)INT_MAX)
+#  else
+#    ifdef MAXINT    /* Often used in <values.h> */
+#      define PERL_INT_MAX ((int)MAXINT)
+#    else
+#      define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1))
+#    endif
+#  endif
+#endif
+
+#ifndef PERL_INT_MIN
+#  ifdef INT_MIN
+#    define PERL_INT_MIN ((int)INT_MIN)
+#  else
+#    ifdef MININT
+#      define PERL_INT_MIN ((int)MININT)
+#    else
+#      define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3))
+#    endif
+#  endif
+#endif
+
+#ifndef PERL_ULONG_MAX
+#  ifdef ULONG_MAX
+#    define PERL_ULONG_MAX ((unsigned long)ULONG_MAX)
+#  else
+#    ifdef MAXULONG
+#      define PERL_ULONG_MAX ((unsigned long)MAXULONG)
+#    else
+#      define PERL_ULONG_MAX (~(unsigned long)0)
+#    endif
+#  endif
+#endif
+
+#ifndef PERL_ULONG_MIN
+#  define PERL_ULONG_MIN ((unsigned long)0L)
+#endif
+
+#ifndef PERL_LONG_MAX
+#  ifdef LONG_MAX
+#    define PERL_LONG_MAX ((long)LONG_MAX)
+#  else
+#    ifdef MAXLONG
+#      define PERL_LONG_MAX ((long)MAXLONG)
+#    else
+#      define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1))
+#    endif
+#  endif
+#endif
+
+#ifndef PERL_LONG_MIN
+#  ifdef LONG_MIN
+#    define PERL_LONG_MIN ((long)LONG_MIN)
+#  else
+#    ifdef MINLONG
+#      define PERL_LONG_MIN ((long)MINLONG)
+#    else
+#      define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3))
+#    endif
+#  endif
+#endif
+
+#if defined(HAS_QUAD) && (defined(convex) || defined(uts))
+#  ifndef PERL_UQUAD_MAX
+#    ifdef ULONGLONG_MAX
+#      define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX)
+#    else
+#      ifdef MAXULONGLONG
+#        define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG)
+#      else
+#        define PERL_UQUAD_MAX (~(unsigned long long)0)
+#      endif
+#    endif
+#  endif
+
+#  ifndef PERL_UQUAD_MIN
+#    define PERL_UQUAD_MIN ((unsigned long long)0L)
+#  endif
+
+#  ifndef PERL_QUAD_MAX
+#    ifdef LONGLONG_MAX
+#      define PERL_QUAD_MAX ((long long)LONGLONG_MAX)
+#    else
+#      ifdef MAXLONGLONG
+#        define PERL_QUAD_MAX ((long long)MAXLONGLONG)
+#      else
+#        define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1))
+#      endif
+#    endif
+#  endif
+
+#  ifndef PERL_QUAD_MIN
+#    ifdef LONGLONG_MIN
+#      define PERL_QUAD_MIN ((long long)LONGLONG_MIN)
+#    else
+#      ifdef MINLONGLONG
+#        define PERL_QUAD_MIN ((long long)MINLONGLONG)
+#      else
+#        define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3))
+#      endif
+#    endif
+#  endif
+#endif
+
+/* This is based on code from 5.003 perl.h */
+#ifdef HAS_QUAD
+#  ifdef cray
+#ifndef IVTYPE
+#  define IVTYPE                         int
+#endif
+
+#ifndef IV_MIN
+#  define IV_MIN                         PERL_INT_MIN
+#endif
+
+#ifndef IV_MAX
+#  define IV_MAX                         PERL_INT_MAX
+#endif
+
+#ifndef UV_MIN
+#  define UV_MIN                         PERL_UINT_MIN
+#endif
+
+#ifndef UV_MAX
+#  define UV_MAX                         PERL_UINT_MAX
+#endif
+
+#    ifdef INTSIZE
+#ifndef IVSIZE
+#  define IVSIZE                         INTSIZE
+#endif
+
+#    endif
+#  else
+#    if defined(convex) || defined(uts)
+#ifndef IVTYPE
+#  define IVTYPE                         long long
+#endif
+
+#ifndef IV_MIN
+#  define IV_MIN                         PERL_QUAD_MIN
+#endif
+
+#ifndef IV_MAX
+#  define IV_MAX                         PERL_QUAD_MAX
+#endif
+
+#ifndef UV_MIN
+#  define UV_MIN                         PERL_UQUAD_MIN
+#endif
+
+#ifndef UV_MAX
+#  define UV_MAX                         PERL_UQUAD_MAX
+#endif
+
+#      ifdef LONGLONGSIZE
+#ifndef IVSIZE
+#  define IVSIZE                         LONGLONGSIZE
+#endif
+
+#      endif
+#    else
+#ifndef IVTYPE
+#  define IVTYPE                         long
+#endif
+
+#ifndef IV_MIN
+#  define IV_MIN                         PERL_LONG_MIN
+#endif
+
+#ifndef IV_MAX
+#  define IV_MAX                         PERL_LONG_MAX
+#endif
+
+#ifndef UV_MIN
+#  define UV_MIN                         PERL_ULONG_MIN
+#endif
+
+#ifndef UV_MAX
+#  define UV_MAX                         PERL_ULONG_MAX
+#endif
+
+#      ifdef LONGSIZE
+#ifndef IVSIZE
+#  define IVSIZE                         LONGSIZE
+#endif
+
+#      endif
+#    endif
+#  endif
+#ifndef IVSIZE
+#  define IVSIZE                         8
+#endif
+
+#ifndef PERL_QUAD_MIN
+#  define PERL_QUAD_MIN                  IV_MIN
+#endif
+
+#ifndef PERL_QUAD_MAX
+#  define PERL_QUAD_MAX                  IV_MAX
+#endif
+
+#ifndef PERL_UQUAD_MIN
+#  define PERL_UQUAD_MIN                 UV_MIN
+#endif
+
+#ifndef PERL_UQUAD_MAX
+#  define PERL_UQUAD_MAX                 UV_MAX
+#endif
+
+#else
+#ifndef IVTYPE
+#  define IVTYPE                         long
+#endif
+
+#ifndef IV_MIN
+#  define IV_MIN                         PERL_LONG_MIN
+#endif
+
+#ifndef IV_MAX
+#  define IV_MAX                         PERL_LONG_MAX
+#endif
+
+#ifndef UV_MIN
+#  define UV_MIN                         PERL_ULONG_MIN
+#endif
+
+#ifndef UV_MAX
+#  define UV_MAX                         PERL_ULONG_MAX
+#endif
+
+#endif
+
+#ifndef IVSIZE
+#  ifdef LONGSIZE
+#    define IVSIZE LONGSIZE
+#  else
+#    define IVSIZE 4 /* A bold guess, but the best we can make. */
+#  endif
+#endif
+#ifndef UVTYPE
+#  define UVTYPE                         unsigned IVTYPE
+#endif
+
+#ifndef UVSIZE
+#  define UVSIZE                         IVSIZE
+#endif
+
+#ifndef sv_setuv
+#  define sv_setuv(sv, uv)                  \
+   STMT_START {                             \
+       UV TeMpUv = uv;                      \
+       if (TeMpUv <= IV_MAX)                \
+           sv_setiv(sv, TeMpUv);            \
+       else                                 \
+           sv_setnv(sv, (double)TeMpUv);    \
+   } STMT_END
+#endif
+
+#ifndef newSVuv
+#  define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv))
+#endif
+#ifndef sv_2uv
+#  define sv_2uv(sv)                     ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv)))
+#endif
+
+#ifndef SvUVX
+#  define SvUVX(sv)                      ((UV)SvIVX(sv))
+#endif
+
+#ifndef SvUVXx
+#  define SvUVXx(sv)                     SvUVX(sv)
+#endif
+
+#ifndef SvUV
+#  define SvUV(sv)                       (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv))
+#endif
+
+#ifndef SvUVx
+#  define SvUVx(sv)                      ((PL_Sv = (sv)), SvUV(PL_Sv))
+#endif
+
+/* Hint: sv_uv
+ * Always use the SvUVx() macro instead of sv_uv().
+ */
+#ifndef sv_uv
+#  define sv_uv(sv)                      SvUVx(sv)
+#endif
+#ifndef XST_mUV
+#  define XST_mUV(i,v)                   (ST(i) = sv_2mortal(newSVuv(v))  )
+#endif
+
+#ifndef XSRETURN_UV
+#  define XSRETURN_UV(v)                 STMT_START { XST_mUV(0,v);  XSRETURN(1); } STMT_END
+#endif
+#ifndef PUSHu
+#  define PUSHu(u)                       STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG;  } STMT_END
+#endif
+
+#ifndef XPUSHu
+#  define XPUSHu(u)                      STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END
+#endif
+
+#if (PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5))
+/* Replace: 1 */
+#  define PL_DBsingle               DBsingle
+#  define PL_DBsub                  DBsub
+#  define PL_Sv                     Sv
+#  define PL_compiling              compiling
+#  define PL_copline                copline
+#  define PL_curcop                 curcop
+#  define PL_curstash               curstash
+#  define PL_debstash               debstash
+#  define PL_defgv                  defgv
+#  define PL_diehook                diehook
+#  define PL_dirty                  dirty
+#  define PL_dowarn                 dowarn
+#  define PL_errgv                  errgv
+#  define PL_hexdigit               hexdigit
+#  define PL_hints                  hints
+#  define PL_na	                    na
+#  define PL_no_modify              no_modify
+#  define PL_perl_destruct_level    perl_destruct_level
+#  define PL_perldb                 perldb
+#  define PL_ppaddr                 ppaddr
+#  define PL_rsfp_filters           rsfp_filters
+#  define PL_rsfp                   rsfp
+#  define PL_stack_base             stack_base
+#  define PL_stack_sp               stack_sp
+#  define PL_stdingv                stdingv
+#  define PL_sv_arenaroot           sv_arenaroot
+#  define PL_sv_no                  sv_no
+#  define PL_sv_undef               sv_undef
+#  define PL_sv_yes                 sv_yes
+#  define PL_tainted                tainted
+#  define PL_tainting               tainting
+/* Replace: 0 */
+#endif
+
+#ifndef PERL_UNUSED_DECL
+#  ifdef HASATTRIBUTE
+#    if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER)
+#      define PERL_UNUSED_DECL
+#    else
+#      define PERL_UNUSED_DECL __attribute__((unused))
+#    endif
+#  else
+#    define PERL_UNUSED_DECL
+#  endif
+#endif
+#ifndef NOOP
+#  define NOOP                           (void)0
+#endif
+
+#ifndef dNOOP
+#  define dNOOP                          extern int Perl___notused PERL_UNUSED_DECL
+#endif
+
+#ifndef NVTYPE
+#  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
+#    define NVTYPE long double
+#  else
+#    define NVTYPE double
+#  endif
+typedef NVTYPE NV;
+#endif
+
+#ifndef INT2PTR
+
+#  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
+#    define PTRV                  UV
+#    define INT2PTR(any,d)        (any)(d)
+#  else
+#    if PTRSIZE == LONGSIZE
+#      define PTRV                unsigned long
+#    else
+#      define PTRV                unsigned
+#    endif
+#    define INT2PTR(any,d)        (any)(PTRV)(d)
+#  endif
+
+#  define NUM2PTR(any,d)  (any)(PTRV)(d)
+#  define PTR2IV(p)       INT2PTR(IV,p)
+#  define PTR2UV(p)       INT2PTR(UV,p)
+#  define PTR2NV(p)       NUM2PTR(NV,p)
+
+#  if PTRSIZE == LONGSIZE
+#    define PTR2ul(p)     (unsigned long)(p)
+#  else
+#    define PTR2ul(p)     INT2PTR(unsigned long,p)
+#  endif
+
+#endif /* !INT2PTR */
+
+#undef START_EXTERN_C
+#undef END_EXTERN_C
+#undef EXTERN_C
+#ifdef __cplusplus
+#  define START_EXTERN_C extern "C" {
+#  define END_EXTERN_C }
+#  define EXTERN_C extern "C"
+#else
+#  define START_EXTERN_C
+#  define END_EXTERN_C
+#  define EXTERN_C extern
+#endif
+
+#ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN
+#  if defined(__STRICT_ANSI__) && defined(PERL_GCC_PEDANTIC)
+#    define PERL_GCC_BRACE_GROUPS_FORBIDDEN
+#  endif
+#endif
+
+#undef STMT_START
+#undef STMT_END
+#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus)
+#  define STMT_START	(void)(	/* gcc supports ``({ STATEMENTS; })'' */
+#  define STMT_END	)
+#else
+#  if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__)
+#    define STMT_START	if (1)
+#    define STMT_END	else (void)0
+#  else
+#    define STMT_START	do
+#    define STMT_END	while (0)
+#  endif
+#endif
+#ifndef boolSV
+#  define boolSV(b)                      ((b) ? &PL_sv_yes : &PL_sv_no)
+#endif
+
+/* DEFSV appears first in 5.004_56 */
+#ifndef DEFSV
+#  define DEFSV                          GvSV(PL_defgv)
+#endif
+
+#ifndef SAVE_DEFSV
+#  define SAVE_DEFSV                     SAVESPTR(GvSV(PL_defgv))
+#endif
+
+/* Older perls (<=5.003) lack AvFILLp */
+#ifndef AvFILLp
+#  define AvFILLp                        AvFILL
+#endif
+#ifndef ERRSV
+#  define ERRSV                          get_sv("@",FALSE)
+#endif
+#ifndef newSVpvn
+#  define newSVpvn(data,len)             ((data)                                              \
+                                    ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \
+                                    : newSV(0))
+#endif
+
+/* Hint: gv_stashpvn
+ * This function's backport doesn't support the length parameter, but
+ * rather ignores it. Portability can only be ensured if the length
+ * parameter is used for speed reasons, but the length can always be
+ * correctly computed from the string argument.
+ */
+#ifndef gv_stashpvn
+#  define gv_stashpvn(str,len,create)    gv_stashpv(str,create)
+#endif
+
+/* Replace: 1 */
+#ifndef get_cv
+#  define get_cv                         perl_get_cv
+#endif
+
+#ifndef get_sv
+#  define get_sv                         perl_get_sv
+#endif
+
+#ifndef get_av
+#  define get_av                         perl_get_av
+#endif
+
+#ifndef get_hv
+#  define get_hv                         perl_get_hv
+#endif
+
+/* Replace: 0 */
+
+#ifdef HAS_MEMCMP
+#ifndef memNE
+#  define memNE(s1,s2,l)                 (memcmp(s1,s2,l))
+#endif
+
+#ifndef memEQ
+#  define memEQ(s1,s2,l)                 (!memcmp(s1,s2,l))
+#endif
+
+#else
+#ifndef memNE
+#  define memNE(s1,s2,l)                 (bcmp(s1,s2,l))
+#endif
+
+#ifndef memEQ
+#  define memEQ(s1,s2,l)                 (!bcmp(s1,s2,l))
+#endif
+
+#endif
+#ifndef MoveD
+#  define MoveD(s,d,n,t)                 memmove((char*)(d),(char*)(s), (n) * sizeof(t))
+#endif
+
+#ifndef CopyD
+#  define CopyD(s,d,n,t)                 memcpy((char*)(d),(char*)(s), (n) * sizeof(t))
+#endif
+
+#ifdef HAS_MEMSET
+#ifndef ZeroD
+#  define ZeroD(d,n,t)                   memzero((char*)(d), (n) * sizeof(t))
+#endif
+
+#else
+#ifndef ZeroD
+#  define ZeroD(d,n,t)                   ((void)memzero((char*)(d), (n) * sizeof(t)),d)
+#endif
+
+#endif
+#ifndef Poison
+#  define Poison(d,n,t)                  (void)memset((char*)(d), 0xAB, (n) * sizeof(t))
+#endif
+#ifndef dUNDERBAR
+#  define dUNDERBAR                      dNOOP
+#endif
+
+#ifndef UNDERBAR
+#  define UNDERBAR                       DEFSV
+#endif
+#ifndef dAX
+#  define dAX                            I32 ax = MARK - PL_stack_base + 1
+#endif
+
+#ifndef dITEMS
+#  define dITEMS                         I32 items = SP - MARK
+#endif
+#ifndef dXSTARG
+#  define dXSTARG                        SV * targ = sv_newmortal()
+#endif
+#ifndef dTHR
+#  define dTHR                           dNOOP
+#endif
+#ifndef dTHX
+#  define dTHX                           dNOOP
+#endif
+
+#ifndef dTHXa
+#  define dTHXa(x)                       dNOOP
+#endif
+#ifndef pTHX
+#  define pTHX                           void
+#endif
+
+#ifndef pTHX_
+#  define pTHX_
+#endif
+
+#ifndef aTHX
+#  define aTHX
+#endif
+
+#ifndef aTHX_
+#  define aTHX_
+#endif
+#ifndef dTHXoa
+#  define dTHXoa(x)                      dTHXa(x)
+#endif
+#ifndef PUSHmortal
+#  define PUSHmortal                     PUSHs(sv_newmortal())
+#endif
+
+#ifndef mPUSHp
+#  define mPUSHp(p,l)                    sv_setpvn_mg(PUSHmortal, (p), (l))
+#endif
+
+#ifndef mPUSHn
+#  define mPUSHn(n)                      sv_setnv_mg(PUSHmortal, (NV)(n))
+#endif
+
+#ifndef mPUSHi
+#  define mPUSHi(i)                      sv_setiv_mg(PUSHmortal, (IV)(i))
+#endif
+
+#ifndef mPUSHu
+#  define mPUSHu(u)                      sv_setuv_mg(PUSHmortal, (UV)(u))
+#endif
+#ifndef XPUSHmortal
+#  define XPUSHmortal                    XPUSHs(sv_newmortal())
+#endif
+
+#ifndef mXPUSHp
+#  define mXPUSHp(p,l)                   STMT_START { EXTEND(sp,1); sv_setpvn_mg(PUSHmortal, (p), (l)); } STMT_END
+#endif
+
+#ifndef mXPUSHn
+#  define mXPUSHn(n)                     STMT_START { EXTEND(sp,1); sv_setnv_mg(PUSHmortal, (NV)(n)); } STMT_END
+#endif
+
+#ifndef mXPUSHi
+#  define mXPUSHi(i)                     STMT_START { EXTEND(sp,1); sv_setiv_mg(PUSHmortal, (IV)(i)); } STMT_END
+#endif
+
+#ifndef mXPUSHu
+#  define mXPUSHu(u)                     STMT_START { EXTEND(sp,1); sv_setuv_mg(PUSHmortal, (UV)(u)); } STMT_END
+#endif
+
+/* Replace: 1 */
+#ifndef call_sv
+#  define call_sv                        perl_call_sv
+#endif
+
+#ifndef call_pv
+#  define call_pv                        perl_call_pv
+#endif
+
+#ifndef call_argv
+#  define call_argv                      perl_call_argv
+#endif
+
+#ifndef call_method
+#  define call_method                    perl_call_method
+#endif
+#ifndef eval_sv
+#  define eval_sv                        perl_eval_sv
+#endif
+
+/* Replace: 0 */
+
+/* Replace perl_eval_pv with eval_pv */
+/* eval_pv depends on eval_sv */
+
+#ifndef eval_pv
+#if defined(NEED_eval_pv)
+static SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error);
+static
+#else
+extern SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error);
+#endif
+
+#ifdef eval_pv
+#  undef eval_pv
+#endif
+#define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b)
+#define Perl_eval_pv DPPP_(my_eval_pv)
+
+#if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL)
+
+SV*
+DPPP_(my_eval_pv)(char *p, I32 croak_on_error)
+{
+    dSP;
+    SV* sv = newSVpv(p, 0);
+
+    PUSHMARK(sp);
+    eval_sv(sv, G_SCALAR);
+    SvREFCNT_dec(sv);
+
+    SPAGAIN;
+    sv = POPs;
+    PUTBACK;
+
+    if (croak_on_error && SvTRUE(GvSV(errgv)))
+	croak(SvPVx(GvSV(errgv), na));
+
+    return sv;
+}
+
+#endif
+#endif
+#ifndef newRV_inc
+#  define newRV_inc(sv)                  newRV(sv)   /* Replace */
+#endif
+
+#ifndef newRV_noinc
+#if defined(NEED_newRV_noinc)
+static SV * DPPP_(my_newRV_noinc)(SV *sv);
+static
+#else
+extern SV * DPPP_(my_newRV_noinc)(SV *sv);
+#endif
+
+#ifdef newRV_noinc
+#  undef newRV_noinc
+#endif
+#define newRV_noinc(a) DPPP_(my_newRV_noinc)(aTHX_ a)
+#define Perl_newRV_noinc DPPP_(my_newRV_noinc)
+
+#if defined(NEED_newRV_noinc) || defined(NEED_newRV_noinc_GLOBAL)
+SV *
+DPPP_(my_newRV_noinc)(SV *sv)
+{
+  SV *rv = (SV *)newRV(sv);
+  SvREFCNT_dec(sv);
+  return rv;
+}
+#endif
+#endif
+
+/* Hint: newCONSTSUB
+ * Returns a CV* as of perl-5.7.1. This return value is not supported
+ * by Devel::PPPort.
+ */
+
+/* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */
+#if ((PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION < 63))) && ((PERL_VERSION != 4) || (PERL_SUBVERSION != 5))
+#if defined(NEED_newCONSTSUB)
+static void DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv);
+static
+#else
+extern void DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv);
+#endif
+
+#ifdef newCONSTSUB
+#  undef newCONSTSUB
+#endif
+#define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c)
+#define Perl_newCONSTSUB DPPP_(my_newCONSTSUB)
+
+#if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL)
+
+void
+DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv)
+{
+	U32 oldhints = PL_hints;
+	HV *old_cop_stash = PL_curcop->cop_stash;
+	HV *old_curstash = PL_curstash;
+	line_t oldline = PL_curcop->cop_line;
+	PL_curcop->cop_line = PL_copline;
+
+	PL_hints &= ~HINT_BLOCK_SCOPE;
+	if (stash)
+		PL_curstash = PL_curcop->cop_stash = stash;
+
+	newSUB(
+
+#if   ((PERL_VERSION < 3) || ((PERL_VERSION == 3) && (PERL_SUBVERSION < 22)))
+		start_subparse(),
+#elif ((PERL_VERSION == 3) && (PERL_SUBVERSION == 22))
+     		start_subparse(0),
+#else  /* 5.003_23  onwards */
+     		start_subparse(FALSE, 0),
+#endif
+
+		newSVOP(OP_CONST, 0, newSVpv(name,0)),
+		newSVOP(OP_CONST, 0, &PL_sv_no),   /* SvPV(&PL_sv_no) == "" -- GMB */
+		newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
+	);
+
+	PL_hints = oldhints;
+	PL_curcop->cop_stash = old_cop_stash;
+	PL_curstash = old_curstash;
+	PL_curcop->cop_line = oldline;
+}
+#endif
+#endif
+
+/*
+ * Boilerplate macros for initializing and accessing interpreter-local
+ * data from C.  All statics in extensions should be reworked to use
+ * this, if you want to make the extension thread-safe.  See ext/re/re.xs
+ * for an example of the use of these macros.
+ *
+ * Code that uses these macros is responsible for the following:
+ * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts"
+ * 2. Declare a typedef named my_cxt_t that is a structure that contains
+ *    all the data that needs to be interpreter-local.
+ * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t.
+ * 4. Use the MY_CXT_INIT macro such that it is called exactly once
+ *    (typically put in the BOOT: section).
+ * 5. Use the members of the my_cxt_t structure everywhere as
+ *    MY_CXT.member.
+ * 6. Use the dMY_CXT macro (a declaration) in all the functions that
+ *    access MY_CXT.
+ */
+
+#if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \
+    defined(PERL_CAPI)    || defined(PERL_IMPLICIT_CONTEXT)
+
+#ifndef START_MY_CXT
+
+/* This must appear in all extensions that define a my_cxt_t structure,
+ * right after the definition (i.e. at file scope).  The non-threads
+ * case below uses it to declare the data as static. */
+#define START_MY_CXT
+
+#if (PERL_VERSION < 4 || (PERL_VERSION == 4 && PERL_SUBVERSION < 68 ))
+/* Fetches the SV that keeps the per-interpreter data. */
+#define dMY_CXT_SV \
+	SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE)
+#else /* >= perl5.004_68 */
+#define dMY_CXT_SV \
+	SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY,		\
+				  sizeof(MY_CXT_KEY)-1, TRUE)
+#endif /* < perl5.004_68 */
+
+/* This declaration should be used within all functions that use the
+ * interpreter-local data. */
+#define dMY_CXT	\
+	dMY_CXT_SV;							\
+	my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv))
+
+/* Creates and zeroes the per-interpreter data.
+ * (We allocate my_cxtp in a Perl SV so that it will be released when
+ * the interpreter goes away.) */
+#define MY_CXT_INIT \
+	dMY_CXT_SV;							\
+	/* newSV() allocates one more than needed */			\
+	my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
+	Zero(my_cxtp, 1, my_cxt_t);					\
+	sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
+
+/* This macro must be used to access members of the my_cxt_t structure.
+ * e.g. MYCXT.some_data */
+#define MY_CXT		(*my_cxtp)
+
+/* Judicious use of these macros can reduce the number of times dMY_CXT
+ * is used.  Use is similar to pTHX, aTHX etc. */
+#define pMY_CXT		my_cxt_t *my_cxtp
+#define pMY_CXT_	pMY_CXT,
+#define _pMY_CXT	,pMY_CXT
+#define aMY_CXT		my_cxtp
+#define aMY_CXT_	aMY_CXT,
+#define _aMY_CXT	,aMY_CXT
+
+#endif /* START_MY_CXT */
+
+#ifndef MY_CXT_CLONE
+/* Clones the per-interpreter data. */
+#define MY_CXT_CLONE \
+	dMY_CXT_SV;							\
+	my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
+	Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\
+	sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
+#endif
+
+#else /* single interpreter */
+
+#ifndef START_MY_CXT
+
+#define START_MY_CXT	static my_cxt_t my_cxt;
+#define dMY_CXT_SV	dNOOP
+#define dMY_CXT		dNOOP
+#define MY_CXT_INIT	NOOP
+#define MY_CXT		my_cxt
+
+#define pMY_CXT		void
+#define pMY_CXT_
+#define _pMY_CXT
+#define aMY_CXT
+#define aMY_CXT_
+#define _aMY_CXT
+
+#endif /* START_MY_CXT */
+
+#ifndef MY_CXT_CLONE
+#define MY_CXT_CLONE	NOOP
+#endif
+
+#endif
+
+#ifndef IVdf
+#  if IVSIZE == LONGSIZE
+#    define	IVdf      "ld"
+#    define	UVuf      "lu"
+#    define	UVof      "lo"
+#    define	UVxf      "lx"
+#    define	UVXf      "lX"
+#  else
+#    if IVSIZE == INTSIZE
+#      define	IVdf      "d"
+#      define	UVuf      "u"
+#      define	UVof      "o"
+#      define	UVxf      "x"
+#      define	UVXf      "X"
+#    endif
+#  endif
+#endif
+
+#ifndef NVef
+#  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \
+      defined(PERL_PRIfldbl) /* Not very likely, but let's try anyway. */
+#    define NVef          PERL_PRIeldbl
+#    define NVff          PERL_PRIfldbl
+#    define NVgf          PERL_PRIgldbl
+#  else
+#    define NVef          "e"
+#    define NVff          "f"
+#    define NVgf          "g"
+#  endif
+#endif
+
+#ifndef SvPV_nolen
+
+#if defined(NEED_sv_2pv_nolen)
+static char * DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv);
+static
+#else
+extern char * DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv);
+#endif
+
+#ifdef sv_2pv_nolen
+#  undef sv_2pv_nolen
+#endif
+#define sv_2pv_nolen(a) DPPP_(my_sv_2pv_nolen)(aTHX_ a)
+#define Perl_sv_2pv_nolen DPPP_(my_sv_2pv_nolen)
+
+#if defined(NEED_sv_2pv_nolen) || defined(NEED_sv_2pv_nolen_GLOBAL)
+
+char *
+DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv)
+{
+  STRLEN n_a;
+  return sv_2pv(sv, &n_a);
+}
+
+#endif
+
+/* Hint: sv_2pv_nolen
+ * Use the SvPV_nolen() macro instead of sv_2pv_nolen().
+ */
+
+/* SvPV_nolen depends on sv_2pv_nolen */
+#define SvPV_nolen(sv) \
+          ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
+           ? SvPVX(sv) : sv_2pv_nolen(sv))
+
+#endif
+
+#ifdef SvPVbyte
+
+/* Hint: SvPVbyte
+ * Does not work in perl-5.6.1, ppport.h implements a version
+ * borrowed from perl-5.7.3.
+ */
+
+#if ((PERL_VERSION < 7) || ((PERL_VERSION == 7) && (PERL_SUBVERSION < 0)))
+
+#if defined(NEED_sv_2pvbyte)
+static char * DPPP_(my_sv_2pvbyte)(pTHX_ register SV *sv, STRLEN *lp);
+static
+#else
+extern char * DPPP_(my_sv_2pvbyte)(pTHX_ register SV *sv, STRLEN *lp);
+#endif
+
+#ifdef sv_2pvbyte
+#  undef sv_2pvbyte
+#endif
+#define sv_2pvbyte(a,b) DPPP_(my_sv_2pvbyte)(aTHX_ a,b)
+#define Perl_sv_2pvbyte DPPP_(my_sv_2pvbyte)
+
+#if defined(NEED_sv_2pvbyte) || defined(NEED_sv_2pvbyte_GLOBAL)
+
+char *
+DPPP_(my_sv_2pvbyte)(pTHX_ register SV *sv, STRLEN *lp)
+{
+  sv_utf8_downgrade(sv,0);
+  return SvPV(sv,*lp);
+}
+
+#endif
+
+/* Hint: sv_2pvbyte
+ * Use the SvPVbyte() macro instead of sv_2pvbyte().
+ */
+
+#undef SvPVbyte
+
+/* SvPVbyte depends on sv_2pvbyte */
+#define SvPVbyte(sv, lp)                                                \
+        ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK)                \
+         ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp))
+
+#endif
+
+#else
+
+#  define SvPVbyte          SvPV
+#  define sv_2pvbyte        sv_2pv
+
+#endif
+
+/* sv_2pvbyte_nolen depends on sv_2pv_nolen */
+#ifndef sv_2pvbyte_nolen
+#  define sv_2pvbyte_nolen               sv_2pv_nolen
+#endif
+
+/* Hint: sv_pvn
+ * Always use the SvPV() macro instead of sv_pvn().
+ */
+#ifndef sv_pvn
+#  define sv_pvn(sv, len)                SvPV(sv, len)
+#endif
+
+/* Hint: sv_pvn_force
+ * Always use the SvPV_force() macro instead of sv_pvn_force().
+ */
+#ifndef sv_pvn_force
+#  define sv_pvn_force(sv, len)          SvPV_force(sv, len)
+#endif
+
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(vnewSVpvf)
+#if defined(NEED_vnewSVpvf)
+static SV * DPPP_(my_vnewSVpvf)(pTHX_ const char * pat, va_list * args);
+static
+#else
+extern SV * DPPP_(my_vnewSVpvf)(pTHX_ const char * pat, va_list * args);
+#endif
+
+#ifdef vnewSVpvf
+#  undef vnewSVpvf
+#endif
+#define vnewSVpvf(a,b) DPPP_(my_vnewSVpvf)(aTHX_ a,b)
+#define Perl_vnewSVpvf DPPP_(my_vnewSVpvf)
+
+#if defined(NEED_vnewSVpvf) || defined(NEED_vnewSVpvf_GLOBAL)
+
+SV *
+DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args)
+{
+  register SV *sv = newSV(0);
+  sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));
+  return sv;
+}
+
+#endif
+#endif
+
+/* sv_vcatpvf depends on sv_vcatpvfn */
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vcatpvf)
+#  define sv_vcatpvf(sv, pat, args)  sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))
+#endif
+
+/* sv_vsetpvf depends on sv_vsetpvfn */
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vsetpvf)
+#  define sv_vsetpvf(sv, pat, args)  sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))
+#endif
+
+/* sv_catpvf_mg depends on sv_vcatpvfn, sv_catpvf_mg_nocontext */
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_catpvf_mg)
+#if defined(NEED_sv_catpvf_mg)
+static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV * sv, const char * pat, ...);
+static
+#else
+extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV * sv, const char * pat, ...);
+#endif
+
+#define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg)
+
+#if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL)
+
+void
+DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...)
+{
+  va_list args;
+  va_start(args, pat);
+  sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
+  SvSETMAGIC(sv);
+  va_end(args);
+}
+
+#endif
+#endif
+
+/* sv_catpvf_mg_nocontext depends on sv_vcatpvfn */
+#ifdef PERL_IMPLICIT_CONTEXT
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_catpvf_mg_nocontext)
+#if defined(NEED_sv_catpvf_mg_nocontext)
+static void DPPP_(my_sv_catpvf_mg_nocontext)(SV * sv, const char * pat, ...);
+static
+#else
+extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV * sv, const char * pat, ...);
+#endif
+
+#define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext)
+#define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext)
+
+#if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL)
+
+void
+DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...)
+{
+  dTHX;
+  va_list args;
+  va_start(args, pat);
+  sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
+  SvSETMAGIC(sv);
+  va_end(args);
+}
+
+#endif
+#endif
+#endif
+
+#ifndef sv_catpvf_mg
+#  ifdef PERL_IMPLICIT_CONTEXT
+#    define sv_catpvf_mg   Perl_sv_catpvf_mg_nocontext
+#  else
+#    define sv_catpvf_mg   Perl_sv_catpvf_mg
+#  endif
+#endif
+
+/* sv_vcatpvf_mg depends on sv_vcatpvfn */
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vcatpvf_mg)
+#  define sv_vcatpvf_mg(sv, pat, args)                                     \
+   STMT_START {                                                            \
+     sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));  \
+     SvSETMAGIC(sv);                                                       \
+   } STMT_END
+#endif
+
+/* sv_setpvf_mg depends on sv_vsetpvfn, sv_setpvf_mg_nocontext */
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_setpvf_mg)
+#if defined(NEED_sv_setpvf_mg)
+static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV * sv, const char * pat, ...);
+static
+#else
+extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV * sv, const char * pat, ...);
+#endif
+
+#define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg)
+
+#if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL)
+
+void
+DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...)
+{
+  va_list args;
+  va_start(args, pat);
+  sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
+  SvSETMAGIC(sv);
+  va_end(args);
+}
+
+#endif
+#endif
+
+/* sv_setpvf_mg_nocontext depends on sv_vsetpvfn */
+#ifdef PERL_IMPLICIT_CONTEXT
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_setpvf_mg_nocontext)
+#if defined(NEED_sv_setpvf_mg_nocontext)
+static void DPPP_(my_sv_setpvf_mg_nocontext)(SV * sv, const char * pat, ...);
+static
+#else
+extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV * sv, const char * pat, ...);
+#endif
+
+#define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext)
+#define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext)
+
+#if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL)
+
+void
+DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...)
+{
+  dTHX;
+  va_list args;
+  va_start(args, pat);
+  sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
+  SvSETMAGIC(sv);
+  va_end(args);
+}
+
+#endif
+#endif
+#endif
+
+#ifndef sv_setpvf_mg
+#  ifdef PERL_IMPLICIT_CONTEXT
+#    define sv_setpvf_mg   Perl_sv_setpvf_mg_nocontext
+#  else
+#    define sv_setpvf_mg   Perl_sv_setpvf_mg
+#  endif
+#endif
+
+/* sv_vsetpvf_mg depends on sv_vsetpvfn */
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vsetpvf_mg)
+#  define sv_vsetpvf_mg(sv, pat, args)                                     \
+   STMT_START {                                                            \
+     sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));  \
+     SvSETMAGIC(sv);                                                       \
+   } STMT_END
+#endif
+#ifndef SvGETMAGIC
+#  define SvGETMAGIC(x)                  STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END
+#endif
+#ifndef PERL_MAGIC_sv
+#  define PERL_MAGIC_sv                  '\0'
+#endif
+
+#ifndef PERL_MAGIC_overload
+#  define PERL_MAGIC_overload            'A'
+#endif
+
+#ifndef PERL_MAGIC_overload_elem
+#  define PERL_MAGIC_overload_elem       'a'
+#endif
+
+#ifndef PERL_MAGIC_overload_table
+#  define PERL_MAGIC_overload_table      'c'
+#endif
+
+#ifndef PERL_MAGIC_bm
+#  define PERL_MAGIC_bm                  'B'
+#endif
+
+#ifndef PERL_MAGIC_regdata
+#  define PERL_MAGIC_regdata             'D'
+#endif
+
+#ifndef PERL_MAGIC_regdatum
+#  define PERL_MAGIC_regdatum            'd'
+#endif
+
+#ifndef PERL_MAGIC_env
+#  define PERL_MAGIC_env                 'E'
+#endif
+
+#ifndef PERL_MAGIC_envelem
+#  define PERL_MAGIC_envelem             'e'
+#endif
+
+#ifndef PERL_MAGIC_fm
+#  define PERL_MAGIC_fm                  'f'
+#endif
+
+#ifndef PERL_MAGIC_regex_global
+#  define PERL_MAGIC_regex_global        'g'
+#endif
+
+#ifndef PERL_MAGIC_isa
+#  define PERL_MAGIC_isa                 'I'
+#endif
+
+#ifndef PERL_MAGIC_isaelem
+#  define PERL_MAGIC_isaelem             'i'
+#endif
+
+#ifndef PERL_MAGIC_nkeys
+#  define PERL_MAGIC_nkeys               'k'
+#endif
+
+#ifndef PERL_MAGIC_dbfile
+#  define PERL_MAGIC_dbfile              'L'
+#endif
+
+#ifndef PERL_MAGIC_dbline
+#  define PERL_MAGIC_dbline              'l'
+#endif
+
+#ifndef PERL_MAGIC_mutex
+#  define PERL_MAGIC_mutex               'm'
+#endif
+
+#ifndef PERL_MAGIC_shared
+#  define PERL_MAGIC_shared              'N'
+#endif
+
+#ifndef PERL_MAGIC_shared_scalar
+#  define PERL_MAGIC_shared_scalar       'n'
+#endif
+
+#ifndef PERL_MAGIC_collxfrm
+#  define PERL_MAGIC_collxfrm            'o'
+#endif
+
+#ifndef PERL_MAGIC_tied
+#  define PERL_MAGIC_tied                'P'
+#endif
+
+#ifndef PERL_MAGIC_tiedelem
+#  define PERL_MAGIC_tiedelem            'p'
+#endif
+
+#ifndef PERL_MAGIC_tiedscalar
+#  define PERL_MAGIC_tiedscalar          'q'
+#endif
+
+#ifndef PERL_MAGIC_qr
+#  define PERL_MAGIC_qr                  'r'
+#endif
+
+#ifndef PERL_MAGIC_sig
+#  define PERL_MAGIC_sig                 'S'
+#endif
+
+#ifndef PERL_MAGIC_sigelem
+#  define PERL_MAGIC_sigelem             's'
+#endif
+
+#ifndef PERL_MAGIC_taint
+#  define PERL_MAGIC_taint               't'
+#endif
+
+#ifndef PERL_MAGIC_uvar
+#  define PERL_MAGIC_uvar                'U'
+#endif
+
+#ifndef PERL_MAGIC_uvar_elem
+#  define PERL_MAGIC_uvar_elem           'u'
+#endif
+
+#ifndef PERL_MAGIC_vstring
+#  define PERL_MAGIC_vstring             'V'
+#endif
+
+#ifndef PERL_MAGIC_vec
+#  define PERL_MAGIC_vec                 'v'
+#endif
+
+#ifndef PERL_MAGIC_utf8
+#  define PERL_MAGIC_utf8                'w'
+#endif
+
+#ifndef PERL_MAGIC_substr
+#  define PERL_MAGIC_substr              'x'
+#endif
+
+#ifndef PERL_MAGIC_defelem
+#  define PERL_MAGIC_defelem             'y'
+#endif
+
+#ifndef PERL_MAGIC_glob
+#  define PERL_MAGIC_glob                '*'
+#endif
+
+#ifndef PERL_MAGIC_arylen
+#  define PERL_MAGIC_arylen              '#'
+#endif
+
+#ifndef PERL_MAGIC_pos
+#  define PERL_MAGIC_pos                 '.'
+#endif
+
+#ifndef PERL_MAGIC_backref
+#  define PERL_MAGIC_backref             '<'
+#endif
+
+#ifndef PERL_MAGIC_ext
+#  define PERL_MAGIC_ext                 '~'
+#endif
+
+/* That's the best we can do... */
+#ifndef SvPV_force_nomg
+#  define SvPV_force_nomg                SvPV_force
+#endif
+
+#ifndef SvPV_nomg
+#  define SvPV_nomg                      SvPV
+#endif
+
+#ifndef sv_catpvn_nomg
+#  define sv_catpvn_nomg                 sv_catpvn
+#endif
+
+#ifndef sv_catsv_nomg
+#  define sv_catsv_nomg                  sv_catsv
+#endif
+
+#ifndef sv_setsv_nomg
+#  define sv_setsv_nomg                  sv_setsv
+#endif
+
+#ifndef sv_pvn_nomg
+#  define sv_pvn_nomg                    sv_pvn
+#endif
+
+#ifndef SvIV_nomg
+#  define SvIV_nomg                      SvIV
+#endif
+
+#ifndef SvUV_nomg
+#  define SvUV_nomg                      SvUV
+#endif
+
+#ifndef sv_catpv_mg
+#  define sv_catpv_mg(sv, ptr)          \
+   STMT_START {                         \
+     SV *TeMpSv = sv;                   \
+     sv_catpv(TeMpSv,ptr);              \
+     SvSETMAGIC(TeMpSv);                \
+   } STMT_END
+#endif
+
+#ifndef sv_catpvn_mg
+#  define sv_catpvn_mg(sv, ptr, len)    \
+   STMT_START {                         \
+     SV *TeMpSv = sv;                   \
+     sv_catpvn(TeMpSv,ptr,len);         \
+     SvSETMAGIC(TeMpSv);                \
+   } STMT_END
+#endif
+
+#ifndef sv_catsv_mg
+#  define sv_catsv_mg(dsv, ssv)         \
+   STMT_START {                         \
+     SV *TeMpSv = dsv;                  \
+     sv_catsv(TeMpSv,ssv);              \
+     SvSETMAGIC(TeMpSv);                \
+   } STMT_END
+#endif
+
+#ifndef sv_setiv_mg
+#  define sv_setiv_mg(sv, i)            \
+   STMT_START {                         \
+     SV *TeMpSv = sv;                   \
+     sv_setiv(TeMpSv,i);                \
+     SvSETMAGIC(TeMpSv);                \
+   } STMT_END
+#endif
+
+#ifndef sv_setnv_mg
+#  define sv_setnv_mg(sv, num)          \
+   STMT_START {                         \
+     SV *TeMpSv = sv;                   \
+     sv_setnv(TeMpSv,num);              \
+     SvSETMAGIC(TeMpSv);                \
+   } STMT_END
+#endif
+
+#ifndef sv_setpv_mg
+#  define sv_setpv_mg(sv, ptr)          \
+   STMT_START {                         \
+     SV *TeMpSv = sv;                   \
+     sv_setpv(TeMpSv,ptr);              \
+     SvSETMAGIC(TeMpSv);                \
+   } STMT_END
+#endif
+
+#ifndef sv_setpvn_mg
+#  define sv_setpvn_mg(sv, ptr, len)    \
+   STMT_START {                         \
+     SV *TeMpSv = sv;                   \
+     sv_setpvn(TeMpSv,ptr,len);         \
+     SvSETMAGIC(TeMpSv);                \
+   } STMT_END
+#endif
+
+#ifndef sv_setsv_mg
+#  define sv_setsv_mg(dsv, ssv)         \
+   STMT_START {                         \
+     SV *TeMpSv = dsv;                  \
+     sv_setsv(TeMpSv,ssv);              \
+     SvSETMAGIC(TeMpSv);                \
+   } STMT_END
+#endif
+
+#ifndef sv_setuv_mg
+#  define sv_setuv_mg(sv, i)            \
+   STMT_START {                         \
+     SV *TeMpSv = sv;                   \
+     sv_setuv(TeMpSv,i);                \
+     SvSETMAGIC(TeMpSv);                \
+   } STMT_END
+#endif
+
+#ifndef sv_usepvn_mg
+#  define sv_usepvn_mg(sv, ptr, len)    \
+   STMT_START {                         \
+     SV *TeMpSv = sv;                   \
+     sv_usepvn(TeMpSv,ptr,len);         \
+     SvSETMAGIC(TeMpSv);                \
+   } STMT_END
+#endif
+
+#ifdef USE_ITHREADS
+#ifndef CopFILE
+#  define CopFILE(c)                     ((c)->cop_file)
+#endif
+
+#ifndef CopFILEGV
+#  define CopFILEGV(c)                   (CopFILE(c) ? gv_fetchfile(CopFILE(c)) : Nullgv)
+#endif
+
+#ifndef CopFILE_set
+#  define CopFILE_set(c,pv)              ((c)->cop_file = savepv(pv))
+#endif
+
+#ifndef CopFILESV
+#  define CopFILESV(c)                   (CopFILE(c) ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv)
+#endif
+
+#ifndef CopFILEAV
+#  define CopFILEAV(c)                   (CopFILE(c) ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav)
+#endif
+
+#ifndef CopSTASHPV
+#  define CopSTASHPV(c)                  ((c)->cop_stashpv)
+#endif
+
+#ifndef CopSTASHPV_set
+#  define CopSTASHPV_set(c,pv)           ((c)->cop_stashpv = ((pv) ? savepv(pv) : Nullch))
+#endif
+
+#ifndef CopSTASH
+#  define CopSTASH(c)                    (CopSTASHPV(c) ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv)
+#endif
+
+#ifndef CopSTASH_set
+#  define CopSTASH_set(c,hv)             CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch)
+#endif
+
+#ifndef CopSTASH_eq
+#  define CopSTASH_eq(c,hv)              ((hv) && (CopSTASHPV(c) == HvNAME(hv) \
+					|| (CopSTASHPV(c) && HvNAME(hv) \
+					&& strEQ(CopSTASHPV(c), HvNAME(hv)))))
+#endif
+
+#else
+#ifndef CopFILEGV
+#  define CopFILEGV(c)                   ((c)->cop_filegv)
+#endif
+
+#ifndef CopFILEGV_set
+#  define CopFILEGV_set(c,gv)            ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv))
+#endif
+
+#ifndef CopFILE_set
+#  define CopFILE_set(c,pv)              CopFILEGV_set((c), gv_fetchfile(pv))
+#endif
+
+#ifndef CopFILESV
+#  define CopFILESV(c)                   (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv)
+#endif
+
+#ifndef CopFILEAV
+#  define CopFILEAV(c)                   (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav)
+#endif
+
+#ifndef CopFILE
+#  define CopFILE(c)                     (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch)
+#endif
+
+#ifndef CopSTASH
+#  define CopSTASH(c)                    ((c)->cop_stash)
+#endif
+
+#ifndef CopSTASH_set
+#  define CopSTASH_set(c,hv)             ((c)->cop_stash = (hv))
+#endif
+
+#ifndef CopSTASHPV
+#  define CopSTASHPV(c)                  (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch)
+#endif
+
+#ifndef CopSTASHPV_set
+#  define CopSTASHPV_set(c,pv)           CopSTASH_set((c), gv_stashpv(pv,GV_ADD))
+#endif
+
+#ifndef CopSTASH_eq
+#  define CopSTASH_eq(c,hv)              (CopSTASH(c) == (hv))
+#endif
+
+#endif /* USE_ITHREADS */
+#ifndef IN_PERL_COMPILETIME
+#  define IN_PERL_COMPILETIME            (PL_curcop == &PL_compiling)
+#endif
+
+#ifndef IN_LOCALE_RUNTIME
+#  define IN_LOCALE_RUNTIME              (PL_curcop->op_private & HINT_LOCALE)
+#endif
+
+#ifndef IN_LOCALE_COMPILETIME
+#  define IN_LOCALE_COMPILETIME          (PL_hints & HINT_LOCALE)
+#endif
+
+#ifndef IN_LOCALE
+#  define IN_LOCALE                      (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME)
+#endif
+#ifndef IS_NUMBER_IN_UV
+#  define IS_NUMBER_IN_UV                0x01
+#endif
+
+#ifndef IS_NUMBER_GREATER_THAN_UV_MAX
+#  define IS_NUMBER_GREATER_THAN_UV_MAX  0x02
+#endif
+
+#ifndef IS_NUMBER_NOT_INT
+#  define IS_NUMBER_NOT_INT              0x04
+#endif
+
+#ifndef IS_NUMBER_NEG
+#  define IS_NUMBER_NEG                  0x08
+#endif
+
+#ifndef IS_NUMBER_INFINITY
+#  define IS_NUMBER_INFINITY             0x10
+#endif
+
+#ifndef IS_NUMBER_NAN
+#  define IS_NUMBER_NAN                  0x20
+#endif
+
+/* GROK_NUMERIC_RADIX depends on grok_numeric_radix */
+#ifndef GROK_NUMERIC_RADIX
+#  define GROK_NUMERIC_RADIX(sp, send)   grok_numeric_radix(sp, send)
+#endif
+#ifndef PERL_SCAN_GREATER_THAN_UV_MAX
+#  define PERL_SCAN_GREATER_THAN_UV_MAX  0x02
+#endif
+
+#ifndef PERL_SCAN_SILENT_ILLDIGIT
+#  define PERL_SCAN_SILENT_ILLDIGIT      0x04
+#endif
+
+#ifndef PERL_SCAN_ALLOW_UNDERSCORES
+#  define PERL_SCAN_ALLOW_UNDERSCORES    0x01
+#endif
+
+#ifndef PERL_SCAN_DISALLOW_PREFIX
+#  define PERL_SCAN_DISALLOW_PREFIX      0x02
+#endif
+
+#ifndef grok_numeric_radix
+#if defined(NEED_grok_numeric_radix)
+static bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send);
+static
+#else
+extern bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send);
+#endif
+
+#ifdef grok_numeric_radix
+#  undef grok_numeric_radix
+#endif
+#define grok_numeric_radix(a,b) DPPP_(my_grok_numeric_radix)(aTHX_ a,b)
+#define Perl_grok_numeric_radix DPPP_(my_grok_numeric_radix)
+
+#if defined(NEED_grok_numeric_radix) || defined(NEED_grok_numeric_radix_GLOBAL)
+bool
+DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char *send)
+{
+#ifdef USE_LOCALE_NUMERIC
+#ifdef PL_numeric_radix_sv
+    if (PL_numeric_radix_sv && IN_LOCALE) {
+        STRLEN len;
+        char* radix = SvPV(PL_numeric_radix_sv, len);
+        if (*sp + len <= send && memEQ(*sp, radix, len)) {
+            *sp += len;
+            return TRUE;
+        }
+    }
+#else
+    /* older perls don't have PL_numeric_radix_sv so the radix
+     * must manually be requested from locale.h
+     */
+#include <locale.h>
+    dTHR;  /* needed for older threaded perls */
+    struct lconv *lc = localeconv();
+    char *radix = lc->decimal_point;
+    if (radix && IN_LOCALE) {
+        STRLEN len = strlen(radix);
+        if (*sp + len <= send && memEQ(*sp, radix, len)) {
+            *sp += len;
+            return TRUE;
+        }
+    }
+#endif /* PERL_VERSION */
+#endif /* USE_LOCALE_NUMERIC */
+    /* always try "." if numeric radix didn't match because
+     * we may have data from different locales mixed */
+    if (*sp < send && **sp == '.') {
+        ++*sp;
+        return TRUE;
+    }
+    return FALSE;
+}
+#endif
+#endif
+
+/* grok_number depends on grok_numeric_radix */
+
+#ifndef grok_number
+#if defined(NEED_grok_number)
+static int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep);
+static
+#else
+extern int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep);
+#endif
+
+#ifdef grok_number
+#  undef grok_number
+#endif
+#define grok_number(a,b,c) DPPP_(my_grok_number)(aTHX_ a,b,c)
+#define Perl_grok_number DPPP_(my_grok_number)
+
+#if defined(NEED_grok_number) || defined(NEED_grok_number_GLOBAL)
+int
+DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep)
+{
+  const char *s = pv;
+  const char *send = pv + len;
+  const UV max_div_10 = UV_MAX / 10;
+  const char max_mod_10 = UV_MAX % 10;
+  int numtype = 0;
+  int sawinf = 0;
+  int sawnan = 0;
+
+  while (s < send && isSPACE(*s))
+    s++;
+  if (s == send) {
+    return 0;
+  } else if (*s == '-') {
+    s++;
+    numtype = IS_NUMBER_NEG;
+  }
+  else if (*s == '+')
+  s++;
+
+  if (s == send)
+    return 0;
+
+  /* next must be digit or the radix separator or beginning of infinity */
+  if (isDIGIT(*s)) {
+    /* UVs are at least 32 bits, so the first 9 decimal digits cannot
+       overflow.  */
+    UV value = *s - '0';
+    /* This construction seems to be more optimiser friendly.
+       (without it gcc does the isDIGIT test and the *s - '0' separately)
+       With it gcc on arm is managing 6 instructions (6 cycles) per digit.
+       In theory the optimiser could deduce how far to unroll the loop
+       before checking for overflow.  */
+    if (++s < send) {
+      int digit = *s - '0';
+      if (digit >= 0 && digit <= 9) {
+        value = value * 10 + digit;
+        if (++s < send) {
+          digit = *s - '0';
+          if (digit >= 0 && digit <= 9) {
+            value = value * 10 + digit;
+            if (++s < send) {
+              digit = *s - '0';
+              if (digit >= 0 && digit <= 9) {
+                value = value * 10 + digit;
+		if (++s < send) {
+                  digit = *s - '0';
+                  if (digit >= 0 && digit <= 9) {
+                    value = value * 10 + digit;
+                    if (++s < send) {
+                      digit = *s - '0';
+                      if (digit >= 0 && digit <= 9) {
+                        value = value * 10 + digit;
+                        if (++s < send) {
+                          digit = *s - '0';
+                          if (digit >= 0 && digit <= 9) {
+                            value = value * 10 + digit;
+                            if (++s < send) {
+                              digit = *s - '0';
+                              if (digit >= 0 && digit <= 9) {
+                                value = value * 10 + digit;
+                                if (++s < send) {
+                                  digit = *s - '0';
+                                  if (digit >= 0 && digit <= 9) {
+                                    value = value * 10 + digit;
+                                    if (++s < send) {
+                                      /* Now got 9 digits, so need to check
+                                         each time for overflow.  */
+                                      digit = *s - '0';
+                                      while (digit >= 0 && digit <= 9
+                                             && (value < max_div_10
+                                                 || (value == max_div_10
+                                                     && digit <= max_mod_10))) {
+                                        value = value * 10 + digit;
+                                        if (++s < send)
+                                          digit = *s - '0';
+                                        else
+                                          break;
+                                      }
+                                      if (digit >= 0 && digit <= 9
+                                          && (s < send)) {
+                                        /* value overflowed.
+                                           skip the remaining digits, don't
+                                           worry about setting *valuep.  */
+                                        do {
+                                          s++;
+                                        } while (s < send && isDIGIT(*s));
+                                        numtype |=
+                                          IS_NUMBER_GREATER_THAN_UV_MAX;
+                                        goto skip_value;
+                                      }
+                                    }
+                                  }
+				}
+                              }
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+	}
+      }
+    }
+    numtype |= IS_NUMBER_IN_UV;
+    if (valuep)
+      *valuep = value;
+
+  skip_value:
+    if (GROK_NUMERIC_RADIX(&s, send)) {
+      numtype |= IS_NUMBER_NOT_INT;
+      while (s < send && isDIGIT(*s))  /* optional digits after the radix */
+        s++;
+    }
+  }
+  else if (GROK_NUMERIC_RADIX(&s, send)) {
+    numtype |= IS_NUMBER_NOT_INT | IS_NUMBER_IN_UV; /* valuep assigned below */
+    /* no digits before the radix means we need digits after it */
+    if (s < send && isDIGIT(*s)) {
+      do {
+        s++;
+      } while (s < send && isDIGIT(*s));
+      if (valuep) {
+        /* integer approximation is valid - it's 0.  */
+        *valuep = 0;
+      }
+    }
+    else
+      return 0;
+  } else if (*s == 'I' || *s == 'i') {
+    s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
+    s++; if (s == send || (*s != 'F' && *s != 'f')) return 0;
+    s++; if (s < send && (*s == 'I' || *s == 'i')) {
+      s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
+      s++; if (s == send || (*s != 'I' && *s != 'i')) return 0;
+      s++; if (s == send || (*s != 'T' && *s != 't')) return 0;
+      s++; if (s == send || (*s != 'Y' && *s != 'y')) return 0;
+      s++;
+    }
+    sawinf = 1;
+  } else if (*s == 'N' || *s == 'n') {
+    /* XXX TODO: There are signaling NaNs and quiet NaNs. */
+    s++; if (s == send || (*s != 'A' && *s != 'a')) return 0;
+    s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
+    s++;
+    sawnan = 1;
+  } else
+    return 0;
+
+  if (sawinf) {
+    numtype &= IS_NUMBER_NEG; /* Keep track of sign  */
+    numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT;
+  } else if (sawnan) {
+    numtype &= IS_NUMBER_NEG; /* Keep track of sign  */
+    numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT;
+  } else if (s < send) {
+    /* we can have an optional exponent part */
+    if (*s == 'e' || *s == 'E') {
+      /* The only flag we keep is sign.  Blow away any "it's UV"  */
+      numtype &= IS_NUMBER_NEG;
+      numtype |= IS_NUMBER_NOT_INT;
+      s++;
+      if (s < send && (*s == '-' || *s == '+'))
+        s++;
+      if (s < send && isDIGIT(*s)) {
+        do {
+          s++;
+        } while (s < send && isDIGIT(*s));
+      }
+      else
+      return 0;
+    }
+  }
+  while (s < send && isSPACE(*s))
+    s++;
+  if (s >= send)
+    return numtype;
+  if (len == 10 && memEQ(pv, "0 but true", 10)) {
+    if (valuep)
+      *valuep = 0;
+    return IS_NUMBER_IN_UV;
+  }
+  return 0;
+}
+#endif
+#endif
+
+/*
+ * The grok_* routines have been modified to use warn() instead of
+ * Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit,
+ * which is why the stack variable has been renamed to 'xdigit'.
+ */
+
+#ifndef grok_bin
+#if defined(NEED_grok_bin)
+static UV DPPP_(my_grok_bin)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result);
+static
+#else
+extern UV DPPP_(my_grok_bin)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result);
+#endif
+
+#ifdef grok_bin
+#  undef grok_bin
+#endif
+#define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d)
+#define Perl_grok_bin DPPP_(my_grok_bin)
+
+#if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL)
+UV
+DPPP_(my_grok_bin)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result)
+{
+    const char *s = start;
+    STRLEN len = *len_p;
+    UV value = 0;
+    NV value_nv = 0;
+
+    const UV max_div_2 = UV_MAX / 2;
+    bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
+    bool overflowed = FALSE;
+
+    if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) {
+        /* strip off leading b or 0b.
+           for compatibility silently suffer "b" and "0b" as valid binary
+           numbers. */
+        if (len >= 1) {
+            if (s[0] == 'b') {
+                s++;
+                len--;
+            }
+            else if (len >= 2 && s[0] == '0' && s[1] == 'b') {
+                s+=2;
+                len-=2;
+            }
+        }
+    }
+
+    for (; len-- && *s; s++) {
+        char bit = *s;
+        if (bit == '0' || bit == '1') {
+            /* Write it in this wonky order with a goto to attempt to get the
+               compiler to make the common case integer-only loop pretty tight.
+               With gcc seems to be much straighter code than old scan_bin.  */
+          redo:
+            if (!overflowed) {
+                if (value <= max_div_2) {
+                    value = (value << 1) | (bit - '0');
+                    continue;
+                }
+                /* Bah. We're just overflowed.  */
+                warn("Integer overflow in binary number");
+                overflowed = TRUE;
+                value_nv = (NV) value;
+            }
+            value_nv *= 2.0;
+	    /* If an NV has not enough bits in its mantissa to
+	     * represent a UV this summing of small low-order numbers
+	     * is a waste of time (because the NV cannot preserve
+	     * the low-order bits anyway): we could just remember when
+	     * did we overflow and in the end just multiply value_nv by the
+	     * right amount. */
+            value_nv += (NV)(bit - '0');
+            continue;
+        }
+        if (bit == '_' && len && allow_underscores && (bit = s[1])
+            && (bit == '0' || bit == '1'))
+	    {
+		--len;
+		++s;
+                goto redo;
+	    }
+        if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
+            warn("Illegal binary digit '%c' ignored", *s);
+        break;
+    }
+
+    if (   ( overflowed && value_nv > 4294967295.0)
+#if UVSIZE > 4
+	|| (!overflowed && value > 0xffffffff  )
+#endif
+	) {
+	warn("Binary number > 0b11111111111111111111111111111111 non-portable");
+    }
+    *len_p = s - start;
+    if (!overflowed) {
+        *flags = 0;
+        return value;
+    }
+    *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
+    if (result)
+        *result = value_nv;
+    return UV_MAX;
+}
+#endif
+#endif
+
+#ifndef grok_hex
+#if defined(NEED_grok_hex)
+static UV DPPP_(my_grok_hex)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result);
+static
+#else
+extern UV DPPP_(my_grok_hex)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result);
+#endif
+
+#ifdef grok_hex
+#  undef grok_hex
+#endif
+#define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d)
+#define Perl_grok_hex DPPP_(my_grok_hex)
+
+#if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL)
+UV
+DPPP_(my_grok_hex)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result)
+{
+    const char *s = start;
+    STRLEN len = *len_p;
+    UV value = 0;
+    NV value_nv = 0;
+
+    const UV max_div_16 = UV_MAX / 16;
+    bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
+    bool overflowed = FALSE;
+    const char *xdigit;
+
+    if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) {
+        /* strip off leading x or 0x.
+           for compatibility silently suffer "x" and "0x" as valid hex numbers.
+        */
+        if (len >= 1) {
+            if (s[0] == 'x') {
+                s++;
+                len--;
+            }
+            else if (len >= 2 && s[0] == '0' && s[1] == 'x') {
+                s+=2;
+                len-=2;
+            }
+        }
+    }
+
+    for (; len-- && *s; s++) {
+	xdigit = strchr((char *) PL_hexdigit, *s);
+        if (xdigit) {
+            /* Write it in this wonky order with a goto to attempt to get the
+               compiler to make the common case integer-only loop pretty tight.
+               With gcc seems to be much straighter code than old scan_hex.  */
+          redo:
+            if (!overflowed) {
+                if (value <= max_div_16) {
+                    value = (value << 4) | ((xdigit - PL_hexdigit) & 15);
+                    continue;
+                }
+                warn("Integer overflow in hexadecimal number");
+                overflowed = TRUE;
+                value_nv = (NV) value;
+            }
+            value_nv *= 16.0;
+	    /* If an NV has not enough bits in its mantissa to
+	     * represent a UV this summing of small low-order numbers
+	     * is a waste of time (because the NV cannot preserve
+	     * the low-order bits anyway): we could just remember when
+	     * did we overflow and in the end just multiply value_nv by the
+	     * right amount of 16-tuples. */
+            value_nv += (NV)((xdigit - PL_hexdigit) & 15);
+            continue;
+        }
+        if (*s == '_' && len && allow_underscores && s[1]
+		&& (xdigit = strchr((char *) PL_hexdigit, s[1])))
+	    {
+		--len;
+		++s;
+                goto redo;
+	    }
+        if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
+            warn("Illegal hexadecimal digit '%c' ignored", *s);
+        break;
+    }
+
+    if (   ( overflowed && value_nv > 4294967295.0)
+#if UVSIZE > 4
+	|| (!overflowed && value > 0xffffffff  )
+#endif
+	) {
+	warn("Hexadecimal number > 0xffffffff non-portable");
+    }
+    *len_p = s - start;
+    if (!overflowed) {
+        *flags = 0;
+        return value;
+    }
+    *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
+    if (result)
+        *result = value_nv;
+    return UV_MAX;
+}
+#endif
+#endif
+
+#ifndef grok_oct
+#if defined(NEED_grok_oct)
+static UV DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result);
+static
+#else
+extern UV DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result);
+#endif
+
+#ifdef grok_oct
+#  undef grok_oct
+#endif
+#define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d)
+#define Perl_grok_oct DPPP_(my_grok_oct)
+
+#if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL)
+UV
+DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result)
+{
+    const char *s = start;
+    STRLEN len = *len_p;
+    UV value = 0;
+    NV value_nv = 0;
+
+    const UV max_div_8 = UV_MAX / 8;
+    bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
+    bool overflowed = FALSE;
+
+    for (; len-- && *s; s++) {
+         /* gcc 2.95 optimiser not smart enough to figure that this subtraction
+            out front allows slicker code.  */
+        int digit = *s - '0';
+        if (digit >= 0 && digit <= 7) {
+            /* Write it in this wonky order with a goto to attempt to get the
+               compiler to make the common case integer-only loop pretty tight.
+            */
+          redo:
+            if (!overflowed) {
+                if (value <= max_div_8) {
+                    value = (value << 3) | digit;
+                    continue;
+                }
+                /* Bah. We're just overflowed.  */
+                warn("Integer overflow in octal number");
+                overflowed = TRUE;
+                value_nv = (NV) value;
+            }
+            value_nv *= 8.0;
+	    /* If an NV has not enough bits in its mantissa to
+	     * represent a UV this summing of small low-order numbers
+	     * is a waste of time (because the NV cannot preserve
+	     * the low-order bits anyway): we could just remember when
+	     * did we overflow and in the end just multiply value_nv by the
+	     * right amount of 8-tuples. */
+            value_nv += (NV)digit;
+            continue;
+        }
+        if (digit == ('_' - '0') && len && allow_underscores
+            && (digit = s[1] - '0') && (digit >= 0 && digit <= 7))
+	    {
+		--len;
+		++s;
+                goto redo;
+	    }
+        /* Allow \octal to work the DWIM way (that is, stop scanning
+         * as soon as non-octal characters are seen, complain only iff
+         * someone seems to want to use the digits eight and nine). */
+        if (digit == 8 || digit == 9) {
+            if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
+                warn("Illegal octal digit '%c' ignored", *s);
+        }
+        break;
+    }
+
+    if (   ( overflowed && value_nv > 4294967295.0)
+#if UVSIZE > 4
+	|| (!overflowed && value > 0xffffffff  )
+#endif
+	) {
+	warn("Octal number > 037777777777 non-portable");
+    }
+    *len_p = s - start;
+    if (!overflowed) {
+        *flags = 0;
+        return value;
+    }
+    *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
+    if (result)
+        *result = value_nv;
+    return UV_MAX;
+}
+#endif
+#endif
+
+#ifdef NO_XSLOCKS
+#  ifdef dJMPENV
+#    define dXCPT             dJMPENV; int rEtV = 0
+#    define XCPT_TRY_START    JMPENV_PUSH(rEtV); if (rEtV == 0)
+#    define XCPT_TRY_END      JMPENV_POP;
+#    define XCPT_CATCH        if (rEtV != 0)
+#    define XCPT_RETHROW      JMPENV_JUMP(rEtV)
+#  else
+#    define dXCPT             Sigjmp_buf oldTOP; int rEtV = 0
+#    define XCPT_TRY_START    Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0)
+#    define XCPT_TRY_END      Copy(oldTOP, top_env, 1, Sigjmp_buf);
+#    define XCPT_CATCH        if (rEtV != 0)
+#    define XCPT_RETHROW      Siglongjmp(top_env, rEtV)
+#  endif
+#endif
+
+#endif /* _P_P_PORTABILITY_H_ */
+
+/* End of File ppport.h */
Index: /tags/1.6.0/lang/perl/t/Rappture.t
===================================================================
--- /tags/1.6.0/lang/perl/t/Rappture.t	(revision 6168)
+++ /tags/1.6.0/lang/perl/t/Rappture.t	(revision 6168)
@@ -0,0 +1,15 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl Rappture.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use Test::More tests => 1;
+BEGIN { use_ok('Rappture') };
+
+#########################
+
+# Insert your test code below, the Test::More module is use()ed here so read
+# its man page ( perldoc Test::More ) for help writing this test script.
+
Index: /tags/1.6.0/lang/perl/typemap
===================================================================
--- /tags/1.6.0/lang/perl/typemap	(revision 6168)
+++ /tags/1.6.0/lang/perl/typemap	(revision 6168)
@@ -0,0 +1,15 @@
+TYPEMAP
+	RpLibrary * ANY_OBJECT
+
+OUTPUT
+ANY_OBJECT
+	sv_setref_pv( $arg, CLASS, (void *)$var );
+
+INPUT
+ANY_OBJECT
+	if ( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
+		$var = ($type)SvIV((SV*)SvRV( $arg ));
+	else {
+		warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
+		XSRETURN_UNDEF;
+	}
Index: /tags/1.6.0/lang/python/Makefile.in
===================================================================
--- /tags/1.6.0/lang/python/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/python/Makefile.in	(revision 6168)
@@ -0,0 +1,56 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+srcdir2         := $(shell cd $(srcdir); pwd)
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+LN_S            = @LN_S@
+INSTALL_PROGRAM = ${INSTALL} -m 755
+INSTALL_DATA    = ${INSTALL} -m 644
+INSTALL_SCRIPT  = ${INSTALL} -m 644
+RM              = rm -f
+VPATH           = $(srcdir)
+
+PYTHON          = @PYTHON@
+PYTHON_INCDIR	= @PYTHON_INCDIR@
+PYTHON_VERSION  = @PYTHON_VERSION@
+
+python_flags    = --library-dirs=$(libdir):../../src/core \
+                  --include-dirs=$(srcdir)/../../src/core:$(PYTHON_INCDIR)
+pythonlib       = $(libdir)/python$(PYTHON_VERSION)/site-packages
+envfile         = python.env
+
+ARCHFLAGS       =
+export ARCHFLAGS
+
+.PHONY: all install clean distclean
+
+#
+# Python distutils doesn't handle VPATH correctly. So copy the sources
+# into a temporary directory.
+#
+all: build/tmp
+	$(PYTHON) setup.py build_ext $(python_flags) build
+
+build/tmp:
+	$(MKDIR_P) -m 0755 build/tmp
+	$(LN_S) $(srcdir2)/Rappture/*.cc build/tmp
+
+install: all
+	$(MKDIR_P) -m 0755 $(pythonlib)
+	$(PYTHON) setup.py install --install-lib=$(pythonlib)
+
+clean:
+	$(PYTHON) setup.py clean
+	$(RM) -rf build
+
+distclean: clean
+	$(RM) Makefile setup.py *~
Index: /tags/1.6.0/lang/python/README
===================================================================
--- /tags/1.6.0/lang/python/README	(revision 6168)
+++ /tags/1.6.0/lang/python/README	(revision 6168)
@@ -0,0 +1,99 @@
+------------------------------------------------------------------------
+ Rappture - Rapid APPlication infrastrucTURE
+------------------------------------------------------------------------
+ The Rappture toolkit provides the basic building blocks for many
+ scientific applications.  These blocks can be composed using C++, or
+ a high-level language, such as Python.  Having a set of blocks for
+ basic I/O, meshing, and numerical methods, a scientist can then
+ focus on developing his core algorithm.
+------------------------------------------------------------------------
+ AUTHORS:
+   Michael J. McLennan, Purdue University
+   Copyright (c) 2004-2012  HUBzero Foundation, LLC
+
+ See the file "license.terms" for information on usage and
+ redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+------------------------------------------------------------------------
+
+
+ INSTALLATION
+------------------------------------------------------------------------
+ This part of the Rappture toolkit works with Python.  If you need to
+ install Python on your system, visit the Download section of the site
+ http://www.python.org.
+
+ Assuming you already have Python installed, you can install Rappture
+ as follows:
+
+   % cd rappture/python
+   % python setup.py install
+
+ This will make Rappture a part of your normal Python installation, so
+ you can use it in your own Python scripts, as shown below.
+
+
+ GETTING STARTED
+------------------------------------------------------------------------
+ Here is a quick tutorial to get you started using Rappture in your
+ Python scripts.
+
+ Rappture applications load their data from a an XML driver file.
+ In the tool.xml file, you should have something like
+
+ <command> @tool/path/to/executable @driver </command>
+
+The "@driver" pattern is replaced by the driver xml file generated by
+Rappture.  This driver file will contain the values to use for the
+parameters in your application.  See
+https://nanohub.org/infrastructure/rappture/wiki/rappture_xml_elements
+for more information.
+
+The first thing your application should do is load the driver file.
+
+   import Rappture
+   rx = Rappture.PyXml('example.xml')
+
+You can see the xml contents by doing
+   print rx.xml()
+
+ The "import" statement loads the Rappture toolkit into your Python
+ application.  The next line creates a library object representing
+ the data in the "example.xml" file.  The last line prints the
+ contents of the XML library to the screen.
+
+ You can access values within the XML by using the get() method.
+ For example,
+
+   import Rappture
+   lib = Rappture.PyXml('example.xml')
+   tval = lib.get('group(ambient).number(temp).current')
+or alternatively
+   tval = lib['group(ambient).number(temp).current'].value
+
+ The get() method follows a path through the XML.  In this example,
+ it looks for a <group id="ambient"> tag, and then finds the
+ <number id="temp"> tag within it, then finds the <current> tag
+ within it, and then returns the text between that and the closing
+ </current> tag.
+
+ You can also add new data to the XML by using the put() method.
+ For example, we could change the temperature value that we queried
+ above as follows:
+
+   tval += 10
+   lib.put('group(ambient).number(temp).current', tval)
+or
+   lib[group(ambient).number(temp).current'] = tval
+
+ This changes the text within the <current>...</current> tag,
+ replacing it with the new value, converted to a string if necessary.
+
+ You can also append to an existing value.  For example,
+
+   lib.put('group(ambient).number(temp).current', 'more text', append=1)
+
+ This adds the string 'more text' after the value (tval) within the
+ <current>...</current> tag.  Use of append in a loop is not
+ recommended because it can be very slow.  It is faster to collect
+ data in python and put it all at once.
+
Index: /tags/1.6.0/lang/python/Rappture/PyRpEncode.cc
===================================================================
--- /tags/1.6.0/lang/python/Rappture/PyRpEncode.cc	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/PyRpEncode.cc	(revision 6168)
@@ -0,0 +1,184 @@
+
+/*
+ * Rappture Encode Python Interface
+ *
+ * ======================================================================
+ *  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <Python.h>
+#include <RpEncode.h>
+
+static PyObject *ErrorObject;
+
+PyDoc_STRVAR(RpEncode_isbinary_doc,
+"isbinary(data)\n\
+\n\
+Check to see if there are binary characters\n\
+in the provided data.");
+
+static PyObject*
+RpEncode_isbinary(PyObject *self, PyObject *args, PyObject *keywds)
+{
+    const char* data = NULL;
+    int dlen = 0;
+    PyObject* rv = NULL;
+
+    static char *kwlist[] = {
+        (char *)"data", 
+        NULL
+    };
+
+    if (PyTuple_Size(args) != 1) {
+        PyErr_SetString(PyExc_TypeError,"isbinary() takes exactly 1 argument");
+        return NULL;
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, keywds, "s#",
+            kwlist, &data, &dlen)) {
+        PyErr_SetString(PyExc_TypeError,"isbinary() takes exactly 1 argument");
+        return NULL;
+    }
+
+    rv = PyFloat_FromDouble(Rappture::encoding::isBinary(data,dlen));
+    return rv;
+}
+
+PyDoc_STRVAR(RpEncode_encode_doc,
+"encode(data,flags)\n\
+\n\
+Encode the provided data with gzip compression and base64 \n\
+according to the provided flags");
+
+static PyObject*
+RpEncode_encode(PyObject *self, PyObject *args, PyObject *keywds)
+{
+    const char* data = NULL;
+    int dlen = 0;
+    int flags = 0;
+    PyObject* rv = NULL;
+    Rappture::Outcome err;
+
+    static char *kwlist[] = {
+        (char *)"data",
+        (char *)"flags",
+        NULL
+    };
+
+    if (PyTuple_Size(args) != 2) {
+        PyErr_SetString(PyExc_TypeError,"encode() takes exactly 2 arguments");
+        return NULL;
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, keywds, "s#i",
+            kwlist, &data, &dlen, &flags)) {
+        PyErr_SetString(PyExc_TypeError,"encode() takes exactly 2 arguments");
+        return NULL;
+    }
+
+    Rappture::Buffer buf(data, dlen);
+    if (!Rappture::encoding::encode(err, buf, flags)) {
+        std::string outStr;
+
+        outStr = err.remark();
+        outStr += "\n";
+        outStr += err.context();
+        PyErr_SetString(PyExc_RuntimeError, outStr.c_str());
+        buf.clear();
+        return NULL;
+    }
+    rv = PyString_FromStringAndSize(buf.bytes(),buf.size());
+    return rv;
+}
+
+PyDoc_STRVAR(RpEncode_decode_doc,
+"decode(data,flags)\n\
+\n\
+Decode the provided data with gzip compression and base64 \n\
+according to the provided flags");
+
+static PyObject*
+RpEncode_decode(PyObject *self, PyObject *args, PyObject *keywds)
+{
+    const char* data = NULL;
+    int dlen = 0;
+    int flags = 0;
+    PyObject* rv = NULL;
+    Rappture::Outcome err;
+
+    static char *kwlist[] = {
+        (char *)"data",
+        (char *)"flags",
+        NULL
+    };
+
+    if (PyTuple_Size(args) != 2) {
+        PyErr_SetString(PyExc_TypeError,"decode() takes exactly 2 arguments");
+        return NULL;
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, keywds, "s#i",
+            kwlist, &data, &dlen, &flags)) {
+        PyErr_SetString(PyExc_TypeError,"decode() takes exactly 2 arguments");
+        return NULL;
+    }
+
+    Rappture::Buffer buf(data, dlen);
+    if (!Rappture::encoding::decode(err, buf, flags)) {
+        std::string outStr;
+
+        outStr = err.remark();
+        outStr += "\n";
+        outStr += err.context();
+        PyErr_SetString(PyExc_RuntimeError,outStr.c_str());
+        return NULL;
+    }
+    rv = PyString_FromStringAndSize(buf.bytes(),buf.size());
+    return rv;
+}
+
+/* ---------- */
+
+
+/* List of functions defined in the module */
+
+static PyMethodDef RpEncode_Methods[] = {
+
+    {"isbinary", (PyCFunction)RpEncode_isbinary, METH_VARARGS|METH_KEYWORDS,
+        RpEncode_isbinary_doc},
+    {"encode", (PyCFunction)RpEncode_encode, METH_VARARGS|METH_KEYWORDS,
+        RpEncode_encode_doc},
+    {"decode", (PyCFunction)RpEncode_decode, METH_VARARGS|METH_KEYWORDS,
+        RpEncode_decode_doc},
+
+    {NULL,        NULL}        /* sentinel */
+};
+
+PyDoc_STRVAR(module_doc, "Rappture Encode Module for Python.");
+
+/* Initialization function for the module */
+
+PyMODINIT_FUNC
+initencoding(void)
+{
+    PyObject *m;
+
+    /* Create the module and add the functions */
+    m = Py_InitModule3("encoding", RpEncode_Methods, module_doc);
+
+    if (ErrorObject == NULL) {
+        ErrorObject = PyErr_NewException((char *)"Rappture.encoding.error", 
+                NULL, NULL);
+        if (ErrorObject == NULL) {
+            return;
+        }
+    }
+    Py_INCREF(ErrorObject);
+    PyModule_AddObject(m, "error", ErrorObject);
+
+    return;
+}
Index: /tags/1.6.0/lang/python/Rappture/PyRpLibrary.cc
===================================================================
--- /tags/1.6.0/lang/python/Rappture/PyRpLibrary.cc	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/PyRpLibrary.cc	(revision 6168)
@@ -0,0 +1,949 @@
+
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <Python.h>
+#include <RpLibrary.h>
+#include <ctype.h>
+
+#define TRUE 1
+#define FALSE 0
+
+#define RP_OK	0
+#define RP_ERROR 1
+
+#ifndef Py_RETURN_NONE
+#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
+#endif
+
+/*
+ * As suggested by PEP353
+ * http://www.python.org/dev/peps/pep-0353/
+ */
+
+#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
+typedef int Py_ssize_t;
+#define PY_SSIZE_T_MAX INT_MAX
+#define PY_SSIZE_T_MIN INT_MIN
+#endif
+
+static PyObject *ErrorObject;
+static RpLibrary * RpLibraryObject_AsLibrary(PyObject *lib);
+static PyObject * RpLibraryObject_FromLibrary(RpLibrary *lib);
+static int StringToBoolean(const char *inVal, int *resultPtr);
+static int PyObjectToBoolean(PyObject *objPtr, const char *defaultVal,
+	const char *argName, int *resultPtr);
+static int getArgCount(PyObject *args, PyObject *keywds, int *argc);
+
+typedef struct {
+    PyObject_HEAD
+    RpLibrary *lib;
+} RpLibraryObject;
+
+
+static int
+getArgCount(PyObject *args, PyObject *keywds, int *argc)
+{
+    int args_cnt = 0;
+    int keywds_cnt = 0;
+
+    if (argc == NULL) {
+        // incorrect use of function
+        // argc cannot be null
+        PyErr_Format(PyExc_ValueError,"getArgCount(): argc is NULL");
+        return RP_ERROR;
+    }
+    if (args != NULL) {
+        if (!PyTuple_Check(args)) {
+            PyErr_Format(PyExc_TypeError,
+                "getArgCount(): \'args\' should be a PyTuple");
+            return RP_ERROR;
+        }
+        args_cnt = PyTuple_Size(args);
+    }
+    if (keywds != NULL) {
+        if (!PyDict_Check(keywds)) {
+            PyErr_Format(PyExc_TypeError,
+                "getArgCount(): \'keywds\' should be a PyDict");
+            return RP_ERROR;
+        }
+        keywds_cnt = PyDict_Size(keywds);
+    }
+    *argc = args_cnt + keywds_cnt;
+    return RP_OK;
+}
+
+/*
+ *  StringToBoolean --
+ *
+ *  represent a boolean string as an integer.
+ *
+ *  outVal set to 1 if the boolean value inVal could
+ *  be associated with any of the following strings:
+ *  "yes", "on", "true", "1".
+ *
+ *  outVal set to 0 if the boolean value inVal could
+ *  be associated with any of the following strings:
+ *  "no", "off", "false", "0".
+ *
+ *  returns a status integer to tell if the operation
+ *  was successful (0) of if there was an error (!0)
+ *
+ *  note: string comparisons are case insensitive.
+ */
+
+static int
+StringToBoolean(const char *string, int *resultPtr)
+{
+    char c;
+
+    if ((string == NULL) || (resultPtr == NULL) ) {
+        PyErr_Format(PyExc_TypeError,
+		     "incorrect use of StringToBoolean(inVal,outVal)");
+        return RP_ERROR;
+    }
+    c = tolower(string[0]);
+    if (((c == 'y') && (strcasecmp(string, "yes") == 0)) ||
+	((c == 'o') && (strcasecmp(string, "on") == 0)) ||
+	((c == 't') && (strcasecmp(string, "true") == 0)) ||
+	((c == '1') && (strcasecmp(string, "1") == 0))) {
+	*resultPtr = TRUE;
+    } else if (((c == 'n') && (strcasecmp(string, "no") == 0)) ||
+	       ((c == 'o') && (strcasecmp(string, "off") == 0)) ||
+	       ((c == 'f') && (strcasecmp(string, "false") == 0)) ||
+	       ((c == '0') && (strcasecmp(string, "0") == 0))) {
+	*resultPtr = FALSE;
+    } else {
+        PyErr_Format(PyExc_ValueError,
+            "unrecognized input: %s: should be one of: \'yes\',\'true\',\'on\',\'1\',1,True,\'no\',\'false\',\'off\',\'0\',0,False", string);
+        return RP_ERROR;
+    }
+    return RP_OK;
+}
+
+static int
+PyObjectToBoolean(PyObject *objPtr, const char *defValue, const char *argName,
+		  int *resultPtr)
+{
+    int value;
+
+    value = FALSE;			// Suppress compiler warning.
+    if ((defValue == NULL) || (argName == NULL) || (resultPtr == NULL)) {
+        // incorrect use of function
+        PyErr_Format(PyExc_ValueError,
+            "PyObjectToBoolean: defValue or argName or resultPtr is NULL");
+        return RP_ERROR;
+    }
+    if (objPtr == NULL) {
+        return StringToBoolean(defValue, resultPtr);
+    }
+    if (PyBool_Check(objPtr)) {
+	value = PyObject_IsTrue(objPtr);
+	if (value < 0) {
+             PyErr_Format(PyExc_ValueError,
+		"PyObjectToBoolean: bad boolean object");
+	    return RP_ERROR;
+	}
+    } else if (PyLong_Check(objPtr)) {
+	long l;
+
+	l = PyLong_AsLong(objPtr);
+	value = (l == 0) ? FALSE : TRUE;
+    } else if (PyInt_Check(objPtr)) {
+	long l;
+
+	l = PyInt_AsLong(objPtr);
+	value = (l == 0) ? FALSE : TRUE;
+    } else if (PyFloat_Check(objPtr)) {
+	double d;
+
+	d = PyFloat_AS_DOUBLE(objPtr);
+	value = (d == 0.0) ? FALSE : TRUE;
+    } else if (PyString_Check(objPtr)) {
+	const char *string;
+
+        string = PyString_AsString(objPtr);
+        if (string == NULL) {
+            PyErr_Format(PyExc_TypeError,
+                "bad value: %s: cannot convert to string",argName);
+            return RP_ERROR;
+        }
+        return StringToBoolean(string, resultPtr);
+    } else {
+	PyErr_Format(PyExc_TypeError,
+		"unknown python type for %s", argName);
+	return RP_ERROR;
+    }
+    *resultPtr = value;
+    return RP_OK;
+}
+
+/*
+ * Check to see if this object is a Rappture.library object.
+ * This does not check to see if the object is correctly
+ * initialized. To check for correct object type and
+ * correct initialization, use RpLibraryObject_IsValid.
+ */
+static int
+RpLibraryObject_Check(PyObject *objPtr)
+{
+    if (objPtr == NULL) {
+	return FALSE;
+    }
+    if (strcmp(objPtr->ob_type->tp_name, "Rappture.library") != 0) {
+	return FALSE;
+    }
+    return TRUE;
+}
+
+/*
+ * Check to see if this object is a Rappture.library object
+ * and is correctly initialized
+ *
+ * This function calls RpLibraryObject_Check internally, and is used
+ * in most of the internal functions to check if an object being passed
+ * in by the user is a valid Rappture.library object
+ */
+static int
+RpLibraryObject_IsValid(PyObject *objPtr)
+{
+    if (objPtr == NULL) {
+	return FALSE;			// Passed a NULL pointer. Should
+					// probably segfault.
+    }
+    if (!RpLibraryObject_Check(objPtr)) {
+	return FALSE;			// Not a rappture library object type.
+    }
+    if (((RpLibraryObject *)objPtr)->lib == NULL) {
+	return FALSE;			// Is a rappture library object, but
+					// doesn't contain a valid library.
+    }
+    return TRUE;
+}
+
+static PyObject *
+NewProc(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+    RpLibraryObject *self = NULL;
+
+    self = (RpLibraryObject *)type->tp_alloc(type,0);
+    if (self != NULL) {
+        self->lib = NULL;
+    } else {
+        PyErr_SetString(PyExc_RuntimeError,
+		"trouble creating new RpLibraryObject");
+    }
+    return (PyObject *)self;
+}
+
+static int
+InitProc(RpLibraryObject *self, PyObject *args, PyObject *kwds)
+{
+    PyObject *objPtr;
+
+    objPtr = NULL;
+    if (!PyArg_ParseTuple(args, "|O", &objPtr)) {
+        PyErr_Format(PyExc_TypeError,
+            "library() takes at most 1 argument, a file name or a Rappture Library Object");
+        return -1;
+    }
+
+    if (objPtr != NULL) {
+        if (PyString_Check(objPtr)) {
+	    char *filename;
+
+            filename = PyString_AsString(objPtr);
+            if (filename == NULL) {
+                PyErr_Format(PyExc_ValueError,"a file name is required");
+            }
+            self->lib = new RpLibrary(std::string(filename));
+        } else if (RpLibraryObject_IsValid(objPtr)) {
+            self->lib = new RpLibrary( *(RpLibraryObject_AsLibrary(objPtr)) );
+        } else if (RpLibraryObject_Check(objPtr)) {
+            self->lib = new RpLibrary();
+        } else {
+            PyErr_Format(PyExc_TypeError,"unrecognized object type");
+            return -1;
+        }
+    } else {
+        self->lib = new RpLibrary();
+    }
+
+    return 1;
+}
+
+static void
+FreeProc(RpLibraryObject *self)
+{
+    if (self) {
+        if (self->lib){
+            delete(self->lib);
+        }
+        self->ob_type->tp_free((PyObject *) self);
+    }
+}
+
+PyDoc_STRVAR(CopyProcDoc,
+"copy (topath, frompath [, fromobj=$self]) -> None, copies data\n\
+\n\
+Copy an xml element to \'topath\' of the current this object\n\
+from \'frompath\' of the Rappture Library Object \'fromobj\'.\n\
+\n\
+\'topath\' is the path (in this object) where the data should\n\
+be copied to\n\
+\'frompath\' is an path (in fromobj) where the data should be\n\
+copied from\n\
+\'fromobj\' is the Rappture Library Object to copy the data from\n\
+if fromobj is not set, the data is copied from the same object\n\
+the data will be copied to (this object).\n\
+\n\
+");
+
+static PyObject *
+CopyProc(RpLibraryObject *self, PyObject *args, PyObject *keywds)
+{
+    char *topath = (char *)"";
+    char *frompath = (char *)"";
+    int argc = 0;
+    PyObject *fromobj = (PyObject *) self;
+
+    static char *kwlist[] = {
+        (char *)"topath",
+        (char *)"frompath",
+        (char *)"fromobj",
+        NULL
+    };
+
+    if (self->lib == NULL) {
+        PyErr_SetString(PyExc_RuntimeError,
+            "self is uninitialized Rappture Library Object");
+        return NULL;
+    }
+
+    if (getArgCount(args,keywds,&argc) != RP_OK) {
+        // trouble ensues
+        // error message was set in getArgCount()
+        return NULL;
+    }
+
+    if (argc > 3) {
+        // tested with CopyTests.testArguments_TooManyArgs()
+        PyErr_Format(PyExc_TypeError,
+            "copy() takes at most 3 arguments (%i given)",argc);
+        return NULL;
+    }
+
+    if (argc < 2) {
+        // tested with CopyTests.testArguments_NotEnoughArgs()
+        PyErr_Format(PyExc_TypeError,
+            "copy() takes at least 2 arguments (%i given)",argc);
+        return NULL;
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, keywds, "ss|O",
+            kwlist, &topath, &frompath, &fromobj)) {
+        // tested with CopyTests.testArguments_ArgsWrongType2()
+        PyErr_Format(PyExc_TypeError,
+            "copy() takes 2 sting and 1 Rappture Library Object as arguments");
+        return NULL;
+    }
+
+    if (!RpLibraryObject_IsValid(fromobj)) {
+        // tested with CopyTests.testArguments_ArgsWrongType3()
+        PyErr_SetString(PyExc_RuntimeError,
+            "incorrectly initialized Rappture Library Object");
+        return NULL;
+    }
+
+    self->lib->copy(std::string(topath),
+        RpLibraryObject_AsLibrary(fromobj),
+        std::string(frompath));
+
+    Py_RETURN_NONE;
+}
+
+PyDoc_STRVAR(ElementProcDoc,
+"element ([path=\'\'][, type=\'object\']) -> returns string or Rappture Library Object\n\
+\n\
+Clients use this to query a particular element within the \n\
+entire data structure.  The path is a string of the form \n\
+\"structure.box(source).corner\".  This example represents \n\
+the tag <corner> within a tag <box id=\"source\"> within a \n\
+a tag <structure>, which must be found at the top level \n\
+within this document. \n\
+\n\
+By default, this method returns an object representing the \n\
+DOM node referenced by the path.  This is changed by setting \n\
+the \"type\" argument to \"id\" (for name of the tail element), \n\
+to \"type\" (for the type of the tail element), to \"component\" \n\
+(for the component name \"type(id)\"), or to \"object\" \n\
+for the default (an object representing the tail element).\n\
+");
+
+static PyObject *
+ElementProc(RpLibraryObject *self, PyObject *args, PyObject *keywds)
+{
+    char* path = (char *)"";
+    char* type = (char *)"object";
+    RpLibrary* retlib = NULL;
+    PyObject* retVal = NULL;
+    int argc = 0;
+
+    static char *kwlist[] = {
+        (char *)"path",
+        (char *)"type",
+        NULL
+    };
+
+    if (self->lib == NULL) {
+        PyErr_Format(PyExc_RuntimeError,
+            "self is uninitialized Rappture Library Object");
+        return retVal;
+    }
+
+    if (getArgCount(args,keywds,&argc) != RP_OK) {
+        // trouble ensues
+        // error message was set in getArgCount()
+        return NULL;
+    }
+
+    if (argc > 2) {
+        // tested with ElementTests.testArguments_TooManyArgs()
+        PyErr_Format(PyExc_TypeError,
+            "element() takes at most 2 arguments (%i given)", argc);
+        return retVal;
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, keywds, "|ss",
+                kwlist, &path, &type)) {
+        /* incorrect input values */
+        // tested with ElementTests.testArguments_ArgsWrongType2()
+        PyErr_Format(PyExc_TypeError,"element ([path=\'\'][, type=\'object\'])");
+        return retVal;
+    }
+
+    retlib = self->lib->element(std::string(path));
+
+    if (retlib != NULL) {
+        if ((type == NULL) || ((*type == 'o') && (strcmp("object",type) == 0)) ) {
+            // tested with ElementTests.testArguments_PathArg()
+            retVal = RpLibraryObject_FromLibrary(retlib);
+        } else if ((*type == 'c') && (strcmp("component",type) == 0)) {
+            // tested with ElementTests.testArguments_TwoArgs()
+            retVal = PyString_FromString(retlib->nodeComp().c_str());
+        } else if ((*type == 'i') && (strcmp("id",type) == 0)) {
+            // tested with ElementTests.testArguments_typeId()
+            retVal = PyString_FromString(retlib->nodeId().c_str());
+        } else if ((*type == 't') && (strcmp("type",type) == 0)) {
+            // tested with ElementTests.testArguments_typeKeywordArgs()
+            retVal = PyString_FromString(retlib->nodeType().c_str());
+        } else if ((*type == 'p') && (strcmp("path",type) == 0)) {
+            // tested with ElementTests.testArguments_TwoKeywordArgs()
+            retVal = PyString_FromString(retlib->nodePath().c_str());
+        } else {
+            // tested with ElementTests.testArguments_Unrecognizedtype()
+            PyErr_Format(PyExc_ValueError,
+                "element() \'type\' arg must be \'object\' or \'component\' or \'id\' or \'type\' or \'path\'");
+        }
+    }
+
+    return (PyObject *)retVal;
+}
+
+
+PyDoc_STRVAR(GetProcDoc,
+"get ([path=\'\'][, decode=\'True\']) -> returns data at \'path\' as string\n\
+\n\
+Clients use this to query the value of a node.  If the path\n\
+is not specified, it returns the value associated with the\n\
+root node.  Otherwise, it returns the value for the element\n\
+specified by the path.\n\
+");
+
+static PyObject *
+GetProc(RpLibraryObject *self, PyObject *args, PyObject *keywds)
+{
+    char* path = (char *)"";
+    PyObject* decode = NULL;
+    int decodeFlag;
+    PyObject *resultPtr = NULL;
+    int argc = 0;
+
+    static char *kwlist[] = {
+        (char *)"path",
+        (char *)"decode",
+        NULL
+    };
+
+    if (self->lib == NULL) {
+        PyErr_SetString(PyExc_RuntimeError,
+            "self uninitialized Rappture Library Object");
+        return NULL;
+    }
+
+    if (getArgCount(args,keywds,&argc) != RP_OK) {
+        // trouble ensues
+        // error message was set in getArgCount()
+        return NULL;
+    }
+
+    if (argc > 2) {
+        // tested with GetTests.testArguments_TooManyArgs()
+        PyErr_Format(PyExc_TypeError,
+            "get() takes at most 2 arguments (%i given)",argc);
+        return NULL;
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, keywds, "|sO",
+            kwlist, &path, &decode)) {
+        // tested with GetTests.testArguments_ArgsWrongType2()
+        PyErr_Format(PyExc_TypeError,"get ([path=\'\'][, decode=\'True\'])");
+        return NULL;
+    }
+    if (PyObjectToBoolean(decode,"yes", "decode", &decodeFlag) != RP_OK) {
+        // tested with GetTests.testArgumentsDecodeError()
+        return NULL;
+    }
+    if (decodeFlag) {
+	std::string s;
+
+        s = self->lib->get(std::string(path));
+        resultPtr = PyString_FromStringAndSize(s.c_str(), s.size());
+    } else {
+	Rappture::Buffer out;
+
+        out = self->lib->getData(std::string(path));
+        resultPtr = PyString_FromStringAndSize(out.bytes(), out.size());
+    }
+    return (PyObject *)resultPtr;
+}
+
+#ifdef notdef
+PyDoc_STRVAR(ParentProcDoc,
+"parent ([path=\'\'][, as=\'object\']) -> returns string or Rappture Library Object\n\
+\n\
+Clients use this to query the parent of a particular element \n\
+This is just like the \'element()\' method, but it returns the parent \n\
+of the element instead of the element itself. \n\
+\n\
+By default, this method returns an object representing the \n\
+DOM node referenced by the path.  This is changed by setting \n\
+the \"as\" argument to \"id\" (for name of the tail element), \n\
+to \"type\" (for the type of the tail element), to \"component\" \n\
+(for the component name \"type(id)\"), or to \"object\" \n\
+for the default (an object representing the tail element).\n\
+");
+
+static PyObject *
+ParentProc(RpLibraryObject *self, PyObject *args, PyObject *keywds)
+{
+    char* path = (char *)"";
+    char* as = (char *)"object";
+    RpLibrary* retlib = NULL;
+    PyObject* retVal = NULL;
+    int argc = 0;
+
+    static char *kwlist[] = {
+        (char *)"path",
+        (char *)"as",
+        NULL
+    };
+
+    if (getArgCount(args,keywds,&argc) != RP_OK) {
+        // trouble ensues
+        // error message was set in getArgCount()
+        return NULL;
+    }
+
+    if (argc > 3) {
+        PyErr_SetString(PyExc_TypeError,"parent() takes at most 2 arguments");
+        return NULL;
+    }
+    if (!PyArg_ParseTupleAndKeywords(args, keywds, "|ss",
+            kwlist, &path, &as)) {
+        /* incorrect input values */
+        PyErr_SetString(PyExc_TypeError,
+			"parent ([path=\'\'][, as=\'object\'])");
+        return NULL;
+    }
+    if (self->lib) {
+        retlib = self->lib->parent(std::string(path));
+    } else {
+        PyErr_SetString(PyExc_RuntimeError,
+            "incorrectly initialized Rappture Library Object");
+        return NULL;
+    }
+
+    if (retlib != NULL) {
+        if ((as == NULL) || ((*as == 'o') && (strcmp("object",as) == 0))) {
+            retVal = RpLibraryObject_FromLibrary(retlib);
+        } else if ((*as == 'c') && (strcmp("component",as) == 0)) {
+            retVal = PyString_FromString(retlib->nodeComp().c_str());
+        } else if ((*as == 'i') && (strcmp("id",as) == 0)) {
+            retVal = PyString_FromString(retlib->nodeId().c_str());
+        } else if ((*as == 't') && (strcmp("type",as) == 0)) {
+            retVal = PyString_FromString(retlib->nodeType().c_str());
+        } else if ((*as == 'p') && (strcmp("path",as) == 0)) {
+            retVal = PyString_FromString(retlib->nodePath().c_str());
+        } else {
+            PyErr_Format(PyExc_ValueError,
+                "parent() \'as\' arg must be \'object\' or \'component\' or \'id\' or \'type\' or \'path\'");
+        }
+    }
+    return (PyObject *)retVal;
+}
+#endif
+
+PyDoc_STRVAR(PutProcDoc,
+"put (path=\'\', value=\'\'[,id=None][,append=False][,type=\'string\'][,compress=False]) -> None\n\
+\n\
+Clients use this to set the value of a node.  If the path\n\
+is not specified, it sets the value for the root node.\n\
+Otherwise, it sets the value for the element specified\n\
+by the path.  If the value is a string, then it is treated\n\
+as the text within the tag at the tail of the path.  If it\n\
+is a DOM node or a library, then it is inserted into the\n\
+tree at the specified path.\n\
+\n\
+The optional id input has no effect and is available for\n\
+backwards compatibility.\n\
+\n\
+If the optional append flag is specified, then the value\n\
+is appended to the current value. Otherwise, the value\n\
+replaces the current value.\n\
+\n\
+The optional type flag specifies whether the value should be\n\
+treated as string data (type=\"string\"), or the name of a\n\
+file (type=\"file\"). The default behavior is to treat the\n\
+value as string data.\n\
+\n\
+If the optional compress flag is specified, then the append\n\
+flag will be evaluated upon the data at path and the result\n\
+will be compressed.\n\
+");
+
+static PyObject *
+PutProc(RpLibraryObject *self, PyObject *args, PyObject *keywds)
+{
+    char *path = (char *)"";
+
+    PyObject *valueObjPtr, *compressObjPtr, *appendObjPtr, *strObjPtr;
+    char *id = NULL;
+    int appendFlag, compressFlag;
+    char *type = (char *)"string";
+    int argc = 0;
+
+    static char *kwlist[] = {
+        (char *)"path",
+        (char *)"value",
+        (char *)"id",
+        (char *)"append",
+        (char *)"type",
+        (char *)"compress",
+        NULL
+    };
+
+    appendFlag = compressFlag = FALSE;
+    strObjPtr = appendObjPtr = valueObjPtr = compressObjPtr = NULL;
+    if (self->lib == NULL) {
+        PyErr_Format(PyExc_RuntimeError,
+            "self uninitialized Rappture Library Object");
+        return NULL;
+    }
+
+    if (getArgCount(args,keywds,&argc) != RP_OK) {
+        return NULL;
+    }
+    if (argc > 6) {
+        PyErr_Format(PyExc_TypeError,
+            "put() takes at most 6 arguments (%i given)",argc);
+        return NULL;
+    }
+    if (argc < 2) {
+        PyErr_Format(PyExc_TypeError,
+            "put() takes at least 2 arguments (%i given)",argc);
+        return NULL;
+    }
+    if (!PyArg_ParseTupleAndKeywords(args, keywds, "sO|sOsO", kwlist, &path,
+	&valueObjPtr, &id, &appendObjPtr, &type, &compressObjPtr)) {
+        return NULL;
+    }
+
+    if (valueObjPtr == NULL) {
+        PyErr_Format(PyExc_ValueError, "put()'s \'value\' arg is required");
+        return NULL;
+    }
+
+    if (PyObjectToBoolean(appendObjPtr, "no"," append", &appendFlag) != RP_OK){
+        return NULL;
+    }
+    if (PyObjectToBoolean(compressObjPtr, "no", "compress", &compressFlag)
+	!= RP_OK) {
+        return NULL;
+    }
+
+    strObjPtr = PyObject_Str(valueObjPtr);
+    if (RpLibraryObject_IsValid(valueObjPtr)) {
+        self->lib->put( std::string(path),
+		RpLibraryObject_AsLibrary(valueObjPtr), "", appendFlag);
+    } else if (strObjPtr != NULL) {
+	char *string;
+	Py_ssize_t length;
+
+        if (PyString_AsStringAndSize(strObjPtr, &string, &length) == -1) {
+            return NULL;
+        }
+        if ((type == NULL) || ((*type=='s') && (strcmp("string", type) == 0))){
+            if (compressFlag == 0) {
+                self->lib->put( std::string(path),
+                                std::string(string), "", appendFlag);
+            } else {
+                self->lib->putData( std::string(path), string, length,
+			appendFlag);
+            }
+        } else if ((*type == 'f') && (strcmp("file",type) == 0)) {
+            self->lib->putFile( std::string(path),
+                                std::string(PyString_AsString(strObjPtr)),
+                                compressFlag, appendFlag);
+        } else {
+            PyErr_Format(PyExc_ValueError,
+                "\'type\' arg must be \'string\' or \'file\'");
+            return NULL;
+        }
+    } else {
+        PyErr_Format(PyExc_TypeError,
+            "put()'s \'value\' arg must be a string or Rappture Library Object");
+        return NULL;
+    }
+    Py_RETURN_NONE;
+}
+
+PyDoc_STRVAR(XmlProcDoc,
+"xml () -> returns xml string\n\
+\n\
+Clients use this to query the XML representation for this\n\
+object.\n\
+");
+
+static PyObject*
+XmlProc(RpLibraryObject *self)
+{
+    if (self->lib == NULL) {
+        PyErr_Format(PyExc_RuntimeError,
+            "self uninitialized Rappture Library Object");
+    }
+    return PyString_FromString(self->lib->xml().c_str());
+}
+
+PyDoc_STRVAR(ResultProcDoc,
+"result ([status=0]) -> None, send results back to graphical user interface\n\
+\n\
+Use this function to report the result of a Rappture simulation.\n\
+Pass in the optional exit status. Default is 0\n\
+");
+
+static PyObject*
+ResultProc(RpLibraryObject *self, PyObject *args, PyObject *keywds)
+{
+    int argc = 0;
+    int status = 0;
+
+    static char *kwlist[] = {
+	(char *)"status",
+	NULL
+    };
+
+    if (self->lib == NULL) {
+        PyErr_Format(PyExc_RuntimeError,
+            "self uninitialized Rappture Library Object");
+        return NULL;
+    }
+
+    if (getArgCount(args,keywds,&argc) != RP_OK) {
+        // trouble ensues
+        // error message was set in getArgCount()
+        return NULL;
+    }
+
+    if (argc > 2) {
+        PyErr_Format(PyExc_TypeError,
+            "result() takes at most 1 argument (%i given)",argc);
+        return NULL;
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, keywds, "|i", kwlist, &status)) {
+        // tested with ResultTests.testArguments_InvalidStatusArg()
+        PyErr_Format(PyExc_TypeError, "an integer is required");
+        return NULL;
+    }
+
+    self->lib->put("tool.version.rappture.language","python");
+    self->lib->result(status);
+
+    Py_RETURN_NONE;
+}
+
+static PyMethodDef RpLibraryObject_methods[] = {
+
+    {"copy", (PyCFunction)CopyProc, METH_VARARGS|METH_KEYWORDS, CopyProcDoc},
+
+#ifdef notdef
+    {"children", (PyCFunction)ChildrenProc, METH_VARARGS|METH_KEYWORDS,
+        ChildrenProcDoc},
+#endif
+
+    {"element", (PyCFunction)ElementProc, METH_VARARGS|METH_KEYWORDS,
+        ElementProcDoc},
+
+    {"get", (PyCFunction)GetProc, METH_VARARGS|METH_KEYWORDS,
+        GetProcDoc},
+
+#ifdef notdef
+    {"parent", (PyCFunction)ParentProc, METH_VARARGS|METH_KEYWORDS,
+		ParentProcDoc},
+#endif
+
+    {"put", (PyCFunction)PutProc, METH_VARARGS|METH_KEYWORDS, PutProcDoc},
+
+#ifdef notdef
+    {"remove", (PyCFunction)RemoveProc, METH_VARARGS|METH_KEYWORDS,
+        RemoveProcDoc},
+#endif
+
+    {"xml", (PyCFunction)XmlProc, METH_NOARGS, XmlProcDoc},
+
+    {"result", (PyCFunction)ResultProc, METH_VARARGS|METH_KEYWORDS,
+        ResultProcDoc},
+
+    {NULL,        NULL}        /* sentinel */
+};
+
+static PyTypeObject RpLibraryObjectType = {
+    /* The ob_type field must be initialized in the module init function
+     * to be portable to Windows without using C++. */
+    PyObject_HEAD_INIT(NULL)
+    0,                                    /*ob_size*/
+    "Rappture.library",                   /*tp_name*/
+    sizeof(RpLibraryObject),              /*tp_basicsize*/
+    0,                                    /*tp_itemsize*/
+    /* methods */
+    (destructor)FreeProc,		/*tp_dealloc*/
+    0,                                    /*tp_print*/
+    0,                                    /*tp_getattr*/
+    0,                                    /*tp_setattr*/
+    0,                                    /*tp_compare*/
+    0,                                    /*tp_repr*/
+    0,                                    /*tp_as_number*/
+    0,                                    /*tp_as_sequence*/
+    0,                                    /*tp_as_mapping*/
+    0,                                    /*tp_hash*/
+    0,                                    /*tp_call*/
+    0,                                    /*tp_str*/
+    0,                                    /*tp_getattro*/
+    0,                                    /*tp_setattro*/
+    0,                                    /*tp_as_buffer*/
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,   /*tp_flags*/
+    "Rappture.library Object",            /*tp_doc*/
+    0,                                    /*tp_traverse*/
+    0,                                    /*tp_clear*/
+    0,                                    /*tp_richcompare*/
+    0,                                    /*tp_weaklistoffset*/
+    0,                                    /*tp_iter*/
+    0,                                    /*tp_iternext*/
+    RpLibraryObject_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*/
+    (initproc)InitProc,			/*tp_init*/
+    0,                                    /*tp_alloc*/
+    NewProc,				/*tp_new*/
+    0,                                    /*tp_new*/
+};
+
+/*
+ * used to create a RpLibrary object from a PyObject
+ */
+static RpLibrary *
+RpLibraryObject_AsLibrary(PyObject *lib)
+{
+    RpLibrary *retval = NULL;
+
+    if (lib != NULL) {
+        if (RpLibraryObject_IsValid(lib)) {
+            retval = ((RpLibraryObject *)lib)->lib;
+        }
+    }
+    return retval;
+}
+
+/*
+ * used to create a PyObject from a RpLibrary object
+ */
+PyObject *
+RpLibraryObject_FromLibrary(RpLibrary *lib)
+{
+    RpLibraryObject *self = NULL;
+
+    if (lib != NULL) {
+        self = PyObject_New(RpLibraryObject, &RpLibraryObjectType);
+        if (self != NULL) {
+            self->lib = lib;
+        } else {
+            // raise error
+            PyErr_SetString(PyExc_RuntimeError,
+		"trouble creating new RpLibraryObject");
+        }
+    }
+    return (PyObject *)self;
+}
+
+/* ---------- */
+
+/* List of functions defined in the module */
+
+static PyMethodDef Library_Methods[] = {
+    {NULL,        NULL}        /* sentinel */
+};
+
+PyDoc_STRVAR(module_doc, "Rappture Library Module for Python.");
+
+/* Initialization function for the module */
+
+PyMODINIT_FUNC
+initlibrary(void)
+{
+    PyObject *m;
+
+    /* Finalize the type object including setting type of the new type
+     * object; doing it here is required for portability to Windows
+     * without requiring C++. */
+    if (PyType_Ready(&RpLibraryObjectType) < 0)
+        return;
+
+    /* Create the module and add the functions */
+    m = Py_InitModule3("library", Library_Methods, module_doc);
+
+    /* Add some symbolic constants to the module */
+    if (ErrorObject == NULL) {
+        ErrorObject = PyErr_NewException((char *)"RpLibrary.error", NULL, NULL);
+        if (ErrorObject == NULL)
+            return;
+    }
+
+    Py_INCREF(&RpLibraryObjectType);
+    PyModule_AddObject(m, "library", (PyObject*) &RpLibraryObjectType);
+
+    Py_XINCREF(ErrorObject);
+    PyModule_AddObject(m, "error", ErrorObject);
+
+}
Index: /tags/1.6.0/lang/python/Rappture/PyRpUnits.cc
===================================================================
--- /tags/1.6.0/lang/python/Rappture/PyRpUnits.cc	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/PyRpUnits.cc	(revision 6168)
@@ -0,0 +1,530 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <Python.h>
+#include <RpUnits.h>
+
+static PyObject *ErrorObject;
+
+typedef struct {
+    PyObject_HEAD
+    const RpUnits* rp_unit;
+} RpUnitsObject;
+
+static void
+RpUnitsObject_dealloc(RpUnitsObject *self)
+{
+    if (self) {
+        if (self->rp_unit){
+            // cant call this right now because destructor is private
+            // delete(self->rp_unit);
+        }
+        PyObject_Del(self);
+    }
+}
+
+static PyObject*
+RpUnitsObject_getUnits(RpUnitsObject *self)
+{
+    PyObject* rv = NULL;
+
+    if (self->rp_unit){ 
+        rv = PyString_FromString(self->rp_unit->getUnits().c_str());
+    }
+
+    return rv;
+}
+
+static PyObject*
+RpUnitsObject_getUnitsName(RpUnitsObject *self)
+{
+    PyObject* rv = NULL;
+
+    if (self->rp_unit){
+        rv = PyString_FromString(self->rp_unit->getUnitsName().c_str());
+    }
+
+    return rv;
+}
+
+static PyObject*
+RpUnitsObject_getExponent(RpUnitsObject *self)
+{
+    PyObject* rv = NULL;
+
+    if (self->rp_unit){
+        rv = PyFloat_FromDouble(self->rp_unit->getExponent());
+    }
+
+    return rv;
+}
+
+static PyObject * RpUnitsObject_convert(RpUnitsObject *self, PyObject *args);
+
+static PyObject *
+RpUnitsObject_makeBasis(RpUnitsObject *self, PyObject *args)
+{
+    PyObject* rv = NULL;
+    double inVal = 0;
+    double outVal = 0;
+    int result = 0;
+
+    if (PyTuple_Size(args) > 0) {
+        PyArg_ParseTuple(args, "d", &inVal);
+    }
+    else {
+        PyErr_SetString(PyExc_AttributeError, "incorrect input arguments");
+        return NULL;
+    }
+
+    if (self->rp_unit){
+        outVal = self->rp_unit->makeBasis(inVal, &result);
+        if (result) {
+            rv = PyFloat_FromDouble(outVal);
+        }
+        else {
+            PyErr_SetString(PyExc_StandardError, "could not convert to basis");
+        }
+    }
+    else {
+        PyErr_SetString(PyExc_AttributeError, "rp_unit is NULL");
+    }
+
+    return rv;
+}
+
+static PyMethodDef RpUnitsObject_methods[] = {
+    {"getUnits", (PyCFunction)RpUnitsObject_getUnits, METH_NOARGS,
+     "Return the base name of the RpUnitsObject" },
+    {"getUnitsName", (PyCFunction)RpUnitsObject_getUnitsName, METH_NOARGS,
+     "Return the whole (base and exponent) name of the RpUnitsObject" },
+    {"getExponent", (PyCFunction)RpUnitsObject_getExponent, METH_NOARGS,
+     "Return the exponent of the RpUnitsObject" },
+    {"convert", (PyCFunction)RpUnitsObject_convert, METH_VARARGS,
+     "convert a value from one RpUnits Object to another" },
+    {"makeBasis", (PyCFunction)RpUnitsObject_makeBasis, METH_VARARGS,
+     "return the basis value of the value provided" },
+
+    {NULL}  /* Sentinel */
+};
+
+static PyTypeObject RpUnitsObjectType = {
+    /* The ob_type field must be initialized in the module init function
+     * to be portable to Windows without using C++. */
+    PyObject_HEAD_INIT(NULL)
+    0,                                    /*ob_size*/
+    "RpUnits.RpUnitsObject",              /*tp_name*/
+    sizeof(RpUnitsObject),                /*tp_basicsize*/
+    0,                                    /*tp_itemsize*/
+    /* methods */
+    (destructor)RpUnitsObject_dealloc,    /*tp_dealloc*/
+    0,                                    /*tp_print*/
+    0,                                    /*tp_getattr*/
+    0,                                    /*tp_setattr*/
+    0,                                    /*tp_compare*/
+    0,                                    /*tp_repr*/
+    0,                                    /*tp_as_number*/
+    0,                                    /*tp_as_sequence*/
+    0,                                    /*tp_as_mapping*/
+    0,                                    /*tp_hash*/
+    0,                                    /*tp_call*/
+    0,                                    /*tp_str*/
+    0,                                    /*tp_getattro*/
+    0,                                    /*tp_setattro*/
+    0,                                    /*tp_as_buffer*/
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,   /*tp_flags*/
+    "Rappture.Units Object",              /*tp_doc*/
+    0,                                    /*tp_traverse*/
+    0,                                    /*tp_clear*/
+    0,                                    /*tp_richcompare*/
+    0,                                    /*tp_weaklistoffset*/
+    0,                                    /*tp_iter*/
+    0,                                    /*tp_iternext*/
+    RpUnitsObject_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*/
+    // RpUnitsObject_new,                 /*tp_new*/
+    0,                                    /*tp_new*/
+    0,                                    /*tp_free*/
+    0,                                    /*tp_is_gc*/
+};
+
+static RpUnitsObject*
+newRpUnitsObject(PyObject *arg)
+{
+    RpUnitsObject* self;
+    self = PyObject_New(RpUnitsObject, &RpUnitsObjectType);
+    if (self == NULL)
+        return NULL;
+    self->rp_unit = NULL;
+    return self;
+}
+
+static PyObject *
+RpUnitsObject_convert(RpUnitsObject *self, PyObject *args)
+{
+    PyObject* rv = NULL;
+    // PyObject* toUnits = NULL;
+    RpUnitsObject* toUnits = NULL;
+    PyObject* inVal = NULL;
+    PyObject* argList = NULL;
+    PyObject* outVal = NULL;
+    int result = 0;
+    int argTupleSize = PyTuple_Size(args);
+
+    if (argTupleSize > 0) {
+        PyArg_ParseTuple(args, "O!O", &RpUnitsObjectType, &toUnits, &inVal);
+        argList = PyTuple_New(1);
+        PyTuple_SetItem(argList, 0, inVal);
+        /*
+         * need to make it so user can give any number of variables in arglist
+         * because the new argList is sent to the python conversion fxn where it
+         * will be parsed in python when c++ calls the conv fxn.
+        PyArg_ParseTuple(args, "O!", &RpUnitsObjectType, &toUnits);
+        if (argTupleSize > 1) {
+            argTupleSize--;
+            inVal = PyTuple_New(argTupleSize);
+            while (argTupleSize)
+            inVal = PyTuple_GetSlice(args,0,argTupleSize);
+        }
+        else {
+            // convertion function needs no arguments???
+            inVal = PyTuple_New(0);
+        }
+        */
+    }
+    else {
+        PyErr_SetString(PyExc_AttributeError, "Not enough arguments");
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+
+    if (self->rp_unit){ 
+        outVal = (PyObject*) self->rp_unit->convert(toUnits->rp_unit,
+                                                    // (void*)&inVal,
+                                                    (void*)argList,
+                                                    &result );
+        if (result) {
+            rv = outVal;
+        }
+    }
+
+    return rv;
+}
+
+/* --------------------------------------------------------------------- */
+
+PyDoc_STRVAR(RpUnits_define_doc, 
+"define(name, basis) -> RpUnitsObject \n\
+\n\
+define RpUnits Object where 'name' is the string name of the units \n\
+and 'basis' is an RpUnitsObject pointer for the basis of the unit \n\
+being created");
+
+static PyObject *
+RpUnits_define(PyObject *self, PyObject *args)
+{
+    RpUnitsObject* newRpUnit;
+    RpUnitsObject* basis = NULL;
+    char* unitsName;
+
+    if (PyTuple_Size(args) > 0) {
+        PyArg_ParseTuple(args, "s|O!", &unitsName, &RpUnitsObjectType,&basis);
+    }
+    else {
+        PyErr_SetString(PyExc_AttributeError, "Not enough arguments");
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+
+    newRpUnit = newRpUnitsObject(args);
+
+    if (newRpUnit == NULL)
+        return NULL;
+
+
+    if (basis && basis->rp_unit) {
+        newRpUnit->rp_unit = RpUnits::define(unitsName, basis->rp_unit);
+    }
+    else {
+        newRpUnit->rp_unit = RpUnits::define(unitsName, NULL);
+    }
+
+    if (newRpUnit->rp_unit == NULL) {
+        // rp_unit was not allocated. 
+        RpUnitsObject_dealloc(newRpUnit);
+        PyErr_SetString(PyExc_AttributeError, "allocating rp_unit failed");
+        return NULL;
+    }
+
+    return (PyObject *)newRpUnit;
+}
+
+void* PyCallback (void* fxnPtr, void* args)
+{
+    PyObject* retVal = NULL;
+
+    if ((PyObject*)fxnPtr != NULL) {
+        retVal = PyObject_CallObject((PyObject*)fxnPtr,(PyObject*)args);
+    }
+
+    return (void*) retVal;
+
+}
+
+PyDoc_STRVAR(RpUnits_defineConv_doc, 
+"defineConv(fromUnits,toUnits, forwConvFxn, backConvFxn) -> RpUnitsObject\n\
+\n\
+define RpUnits Object where 'name' is the string name of the units \n\
+and 'basis' is an RpUnitsObject pointer for the basis of the unit \n\
+being created");
+
+static PyObject *
+RpUnits_defineConv(PyObject *self, PyObject *args)
+{
+    RpUnitsObject* fromUnit = NULL;
+    RpUnitsObject* toUnit = NULL;
+    PyObject* forwConvFxnStr = NULL;
+    PyObject* backConvFxnStr = NULL;
+
+    RpUnitsObject* newRpUnit = NULL;
+    const RpUnits* newConv = NULL;
+
+    if (PyTuple_Size(args) > 0) {
+        PyArg_ParseTuple(args, "O!O!O!O!",&RpUnitsObjectType, &fromUnit,
+                                          &RpUnitsObjectType, &toUnit,
+                                          &PyFunction_Type, &forwConvFxnStr,
+                                          &PyFunction_Type, &backConvFxnStr);
+    }
+    else {
+        PyErr_SetString(PyExc_AttributeError, "incorrect input arguments");
+        return NULL;
+    }
+
+    // check to make sure fromUnit and toUnit are populated
+    if ( (fromUnit == NULL) ||
+         (toUnit == NULL) ) {
+        PyErr_SetString(PyExc_AttributeError,
+                "could not retrieve fromUnit or toUnit from argument list");
+    }
+
+    // check to make sure forwConvFxnStr and backConvFxnStr are populated
+    if ( (forwConvFxnStr == NULL) || (backConvFxnStr == NULL) ) {
+        PyErr_SetString(PyExc_AttributeError, 
+                "could not retrieve conversion function argument");
+        return NULL;
+    }
+
+    // make sure we get callable functions and non-null RpUnit Objects
+    if ( PyCallable_Check(forwConvFxnStr) &&
+         PyCallable_Check(backConvFxnStr) &&
+         fromUnit->rp_unit &&
+         toUnit->rp_unit) {
+
+        Py_INCREF(forwConvFxnStr);
+        Py_INCREF(backConvFxnStr);
+        newConv = RpUnits::define(  fromUnit->rp_unit,
+                                    toUnit->rp_unit,
+                                    PyCallback,
+                                    (void*)forwConvFxnStr,
+                                    PyCallback,
+                                    (void*)backConvFxnStr );
+    }
+    else {
+        PyErr_SetString(PyExc_AttributeError, 
+                "could not retrieve conversion function argument");
+        return NULL;
+    }
+
+    if (newConv) {
+        newRpUnit = newRpUnitsObject(args);
+
+        if (newRpUnit) {
+            newRpUnit->rp_unit = newConv;
+        }
+    }
+
+    return (PyObject *)newRpUnit;
+}
+
+PyDoc_STRVAR(RpUnits_find_doc,
+"find(name) -> RpUnitsObject \n\
+\n\
+search the dictionary of created RpUnits for a unit matching \n\
+the string 'name'");
+
+static PyObject *
+RpUnits_find(PyObject *self, PyObject *args)
+{
+    char* searchUnits = NULL;
+    const RpUnits* foundUnits = NULL;
+    RpUnitsObject* returnUnits = NULL;
+
+    if (PyTuple_Size(args) > 0) {
+        PyArg_ParseTuple(args, "s", &searchUnits);
+    }
+    else {
+        PyErr_SetString(PyExc_AttributeError, "incorrect input arguments");
+        return NULL;
+    }
+
+    foundUnits = RpUnits::find(searchUnits);
+
+    if (foundUnits) {
+        returnUnits = newRpUnitsObject(args);
+
+        if (returnUnits == NULL)
+            return NULL;
+
+        returnUnits->rp_unit = foundUnits;
+    }
+
+    return (PyObject*) returnUnits;
+
+}
+
+PyDoc_STRVAR(RpUnits_convert_doc,
+"convert (fromVal, to, units) -> PyString \n\
+\n\
+Convert the value 'fromVal', to the units listed in 'to', \n\
+and return the value as a string. The string 'fromVal' must have a \n\
+numeric value with units attached to the end. If 'units' is set to \n\
+'off' then the returned string will not have units. The default \n\
+behavior is to show units.");
+
+static PyObject*
+RpUnits_convert(PyObject *self, PyObject *args, PyObject *keywds)
+{
+    // RpUnitsObject* units = NULL;
+    char* fromVal = NULL;
+    char* to = NULL;
+    char* units = NULL;
+    // char* tmpRetStr = NULL;
+    std::string fromVal_S = "";
+    std::string to_S = "";
+    std::string tmpUnits_S = "";
+    int unitsVal = 1;
+    int result = 0;
+    std::string retStr = "";
+    PyObject* retVal = NULL;
+    PyObject* tmpPyStr = NULL;
+
+    static char *kwlist[] = {
+        (char *)"fromVal",
+        (char *)"to",
+        (char *)"units",
+        NULL
+    };
+
+    if (PyTuple_Size(args) > 0) {
+        // PyArg_ParseTuple(args, "ss|s", &fromVal, &to, &units);
+        if (!PyArg_ParseTupleAndKeywords(args, keywds, "ss|s", 
+                    kwlist, &fromVal, &to, &units)) {
+            return NULL;
+        }
+    }
+    else {
+        return NULL;
+    }
+
+    fromVal_S = std::string(fromVal);
+    to_S = std::string(to);
+    if (units) {
+        tmpUnits_S = std::string(units);
+        if(tmpUnits_S.compare("off") == 0) {
+            unitsVal = 0;
+        }
+        else {
+            unitsVal = 1;
+        }
+    }
+
+    retStr = RpUnits::convert(fromVal_S,to_S,unitsVal,&result);
+
+    if ( (!retStr.empty()) && (result == 0) ) {
+        if (unitsVal) {
+            retVal = PyString_FromString(retStr.c_str());
+        }
+        else {
+            // convert to a double and return that if
+            // the units were turned off
+            tmpPyStr = PyString_FromString(retStr.c_str());
+            if (tmpPyStr) {
+                    Py_INCREF(tmpPyStr);
+                    retVal = PyFloat_FromString(tmpPyStr,NULL);
+                    Py_DECREF(tmpPyStr);
+            }
+        }
+    }
+    else {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+
+    return retVal;
+}
+
+/* ---------- */
+
+
+/* List of functions defined in the module */
+
+static PyMethodDef RpUnits_Methods[] = {
+
+    {"define", RpUnits_define, METH_VARARGS,
+        RpUnits_define_doc},
+
+    {"defineConv", RpUnits_defineConv, METH_VARARGS,
+        RpUnits_defineConv_doc},
+
+    {"find", RpUnits_find, METH_VARARGS,
+        RpUnits_find_doc},
+
+    {"convert", (PyCFunction)RpUnits_convert, METH_VARARGS|METH_KEYWORDS,
+        RpUnits_convert_doc},
+
+    {NULL,        NULL}        /* sentinel */
+};
+
+PyDoc_STRVAR(module_doc, "Rappture Units Module for Python.");
+
+/* Initialization function for the module */
+
+PyMODINIT_FUNC
+initUnits(void)
+{
+    PyObject *m;
+
+    /* Finalize the type object including setting type of the new type
+     * object; doing it here is required for portability to Windows
+     * without requiring C++. */
+    if (PyType_Ready(&RpUnitsObjectType) < 0)
+        return;
+
+    /* Create the module and add the functions */
+    m = Py_InitModule3("Units", RpUnits_Methods, module_doc);
+
+    /* Add some symbolic constants to the module */
+    if (ErrorObject == NULL) {
+        ErrorObject = PyErr_NewException((char *)"RpUnits.error", NULL, NULL);
+        if (ErrorObject == NULL)
+            return;
+    }
+    Py_INCREF(ErrorObject);
+    PyModule_AddObject(m, "error", ErrorObject);
+
+    // add some standard units definitions and conversions.
+    // RpUnits::addPresets("all");
+}
Index: /tags/1.6.0/lang/python/Rappture/PyRpUtils.cc
===================================================================
--- /tags/1.6.0/lang/python/Rappture/PyRpUtils.cc	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/PyRpUtils.cc	(revision 6168)
@@ -0,0 +1,85 @@
+
+/*
+ * Rappture Utils Python Interface
+ *
+ * ======================================================================
+ *  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <Python.h>
+#include <rappture.h>
+
+static PyObject *ErrorObject;
+
+PyDoc_STRVAR(RpUtils_progress_doc,
+"progress (percent,message)\n\
+\n\
+Send progress messages to Rappture for updating the\n\
+graphical user interface's progress bar.");
+
+static PyObject*
+RpUtils_progress(PyObject *self, PyObject *args, PyObject *keywds)
+{
+    double pct;
+    char *msg;
+    static char *kwlist[] = { 
+	(char *)"percent", (char *)"message", NULL 
+    };
+    if (PyTuple_Size(args) != 2) {
+        PyErr_Format(PyExc_ValueError,
+		"progress() takes exactly 2 arguments, got %ld", 
+		PyTuple_Size(args));
+        return NULL;
+    }
+    if (!PyArg_ParseTupleAndKeywords(args, keywds, "ds", kwlist, 
+		&pct, &msg)) {
+        return NULL;
+    }
+    if (Rappture::Utils::progress((int)pct, msg) != 0) {
+        PyErr_SetString(PyExc_RuntimeError, "Error while writing to stdout");
+	return NULL;
+    }
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+/* ---------- */
+
+
+/* List of functions defined in the module */
+
+static PyMethodDef RpUtils_Methods[] = {
+
+    {"progress", (PyCFunction)RpUtils_progress, METH_VARARGS|METH_KEYWORDS,
+        RpUtils_progress_doc},
+
+    {NULL,        NULL}        /* sentinel */
+};
+
+PyDoc_STRVAR(module_doc, "Rappture Utils Module for Python.");
+
+/* Initialization function for the module */
+
+PyMODINIT_FUNC
+initUtils(void)
+{
+    PyObject *m;
+
+    /* Create the module and add the functions */
+    m = Py_InitModule3("Utils", RpUtils_Methods, module_doc);
+
+    if (ErrorObject == NULL) {
+        ErrorObject = PyErr_NewException((char *)"Rappture.Utils.error", 
+		NULL, NULL);
+        if (ErrorObject == NULL)
+            return;
+    }
+    Py_INCREF(ErrorObject);
+    PyModule_AddObject(m, "error", ErrorObject);
+
+    return;
+}
Index: /tags/1.6.0/lang/python/Rappture/__init__.py
===================================================================
--- /tags/1.6.0/lang/python/Rappture/__init__.py	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/__init__.py	(revision 6168)
@@ -0,0 +1,17 @@
+# Rappture package
+from library import library
+from pyxml import PyXml
+from interface import interface
+from number import number
+from result import result
+import queue as queue
+import tools as tools
+import Units
+import Utils
+import encoding
+
+# encoding/decoding flags
+RPENC_Z   = 1
+RPENC_B64 = 2
+RPENC_ZB64 = 3
+RPENC_RAW = 8
Index: /tags/1.6.0/lang/python/Rappture/interface.py
===================================================================
--- /tags/1.6.0/lang/python/Rappture/interface.py	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/interface.py	(revision 6168)
@@ -0,0 +1,97 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: interface - used in the main program of a simulator
+#
+#  Rappture.interface() is called at the start of a simulator.  You pass
+#  in arguments and one or more interface packages.  If the -gui flag
+#  is included, then the interfaces are loaded and interrogated, and
+#  interface() writes out a tool.xml file, then invokes the Rappture GUI
+#  to collect input.  The Rappture GUI writes out a driver.xml file,
+#  and then invokes this tool again with the -driver flag to process
+#  the input.
+#  
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+import getopt, sys, os
+import atexit
+import Rappture
+
+def interface(argv,*args):
+    """
+    Clients call this near the top of their simulator.  It looks
+    at command line arguments and decides whether the Rappture GUI
+    should be invoked, or perhaps the GUI has already been invoked
+    and the simulator should process a driver file.
+
+    The argv is a list of command-line arguments.  All remaining
+    arguments represent packages that should be imported and
+    interrogated for Rappture components, to feed the GUI.
+    """
+
+    try:
+        opts,rest = getopt.getopt(argv[1:],'d:g',["driver","gui"])
+    except getopt.GetoptError:
+        print 'usage:'
+        print '  %s --gui (launch the graphical interface)' % argv[0]
+        print '  %s --driver file (use the input stored in file)' % argv[0]
+        sys.exit(2)
+
+    for opt,val in opts:
+        if opt in ('-g','--gui'):
+            #
+            # Launch the GUI.  Start by loading the various modules
+            # and interrogating them for symbols.
+            #
+            lib = Rappture.library('<?xml version="1.0"?><run><tool>' +
+                    '<about>Press Simulate to view results.</about>' +
+                    '<command>python ' +argv[0]+ ' -d @driver</command></tool></run>')
+
+            for module in args:
+                for symbol in dir(module):
+                    s = module.__dict__[symbol]
+                    if isinstance(s, Rappture.number):
+                        s.put(lib)
+
+            toolFileName = "tool.xml"
+            f = open(toolFileName,"w")
+            f.write( lib.xml() )
+            f.close()
+
+            print 'launch the gui...'
+            #
+            # this doesnt work, but needs to. when we 
+            # os.execvp('driver', driverArgs ) with following definition of 
+            # driverArgs (and we change the name of toolFileName), program
+            # does not send the driver program the arguments as expected.
+            #
+            #driverArgs = ('-tool', toolFileName)
+            driverArgs = ()
+            os.execvp('driver', driverArgs )
+            sys.exit(0)
+
+        elif opt in ('-d','--driver'):
+            #
+            # Continue, using input from the driver file.
+            # Register a hook to write out results upon exit.
+            #
+            Rappture.driver = Rappture.library(val)
+
+            atexit.register(finish)
+            return
+
+
+def finish():
+    """
+    Called automatically whenever the program exits.  Writes out
+    any results in the global driver to the "run.xml" file
+    representing the entire run.
+    """
+#    f = open("run.xml","w")
+#    f.write( Rappture.driver.xml() )
+#    f.close()
+
+    Rappture.result(Rappture.driver)
Index: /tags/1.6.0/lang/python/Rappture/library.py
===================================================================
--- /tags/1.6.0/lang/python/Rappture/library.py	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/library.py	(revision 6168)
@@ -0,0 +1,442 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: library - provides access to the XML library
+#
+#  These routines make it easy to load the XML description for a
+#  series of tool parameters and browse through the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+from xml.dom import minidom
+import re, string, time
+
+class library:
+    """
+    A Rappture library object represents an entire XML document or
+    part of an XML tree.  It simplifies the interface to the XML
+    package, giving the caller an easier mechanism for finding,
+    querying, and setting values in the tree.
+    """
+
+    re_xml = re.compile('<\?[Xx][Mm][Ll]')
+    re_dots = re.compile('(\([^\)]*)\.([^\)]*\))')
+    re_pathElem = re.compile('^(([a-zA-Z_]+#?)([0-9]*))?(\(([^\)]+)\))?$')
+    re_pathCreateElem = re.compile('^([^\(]+)\(([^\)]+)\)$')
+
+    # ------------------------------------------------------------------
+    def __init__(self, elem):
+        if isinstance(elem, minidom.Node):
+            # if the input is a node, then wrap up this node
+            self.doc = elem.ownerDocument
+            self.node = elem
+        elif self.re_xml.match(elem):
+            # if the input is a string, then parse the string
+            self.doc = minidom.parseString(elem)
+            self.node = self.doc.documentElement
+        else:
+            # if the input is a file, then parse the file
+            self.doc = minidom.parse(elem)
+            self.node = self.doc.documentElement
+
+    # ------------------------------------------------------------------
+    def element(self, path="", type="object"):
+        """
+        Clients use this to query a particular element within the
+        entire data structure.  The path is a string of the form
+        "structure.box(source).corner".  This example represents
+        the tag <corner> within a tag <box id="source"> within a
+        a tag <structure>, which must be found at the top level
+        within this document.
+
+        By default, this method returns an object representing the
+        DOM node referenced by the path.  This is changed by setting
+        the "type" argument to "id" (for name of the tail element),
+        to "type" (for the type of the tail element), to "component"
+        (for the component name "type(id)"), or to "object"
+        for the default (an object representing the tail element).
+        """
+
+        node = self._find(path)
+        if not node:
+            return None
+
+        if type == 'object':
+            return library(node)
+        elif type == 'component':
+            return self._node2comp(node)
+        elif type == 'id':
+            return self._node2name(node)
+        elif type == 'type':
+            return node.tagName
+
+        raise ValueError, "bad type value '%s': should be component, id, object, type" % type
+
+    # ------------------------------------------------------------------
+    def children(self, path="", type="object", rtype=None):
+        """
+        Clients use this to query the children of a particular element
+        within the entire data structure.  This is just like the
+        element() method, but it returns the children of the element
+        instead of the element itself.  If the optional rtype argument
+        is specified, then the return list is restricted to children
+        of the specified type.
+
+        By default, this method returns a list of objects representing
+        the children.  This is changed by setting the "type" argument
+        to "id" (for tail names of all children), to "type" (for the
+        types of all children), to "component" (for the path component
+        names of all children), or to "object" for the default (a list
+        child objects).
+        """
+
+        node = self._find(path)
+        if not node:
+            return None
+
+        nlist = [n for n in node.childNodes if not n.nodeName.startswith('#')]
+
+        if rtype:
+            nlist = [n for n in nlist if n.nodeName == rtype]
+
+        if type == 'object':
+            return [library(n) for n in nlist]
+        elif type == 'component':
+            return [self._node2comp(n) for n in nlist]
+        elif type == 'id':
+            return [self._node2name(n) for n in nlist]
+        elif type == 'type':
+            return [n.tagName for n in nlist]
+
+        raise ValueError, "bad type value '%s': should be component, id, object, type" % type
+
+    # ------------------------------------------------------------------
+    def get(self, path=""):
+        """
+        Clients use this to query the value of a node.  If the path
+        is not specified, it returns the value associated with the
+        root node.  Otherwise, it returns the value for the element
+        specified by the path.
+        """
+
+        node = self._find(path)
+        if not node:
+            return None
+
+        clist = node.childNodes
+        rval = None
+        for node in [n for n in clist if isinstance(n,minidom.Text)]:
+            if rval == None:
+                rval = node.nodeValue
+            else:
+                rval += node.nodeValue
+        if rval:
+            rval = rval.strip()
+        return rval
+
+    # ------------------------------------------------------------------
+    def put(self, path="", value="", id=None, append=0):
+        """
+        Clients use this to set the value of a node.  If the path
+        is not specified, it sets the value for the root node.
+        Otherwise, it sets the value for the element specified
+        by the path.  If the value is a string, then it is treated
+        as the text within the tag at the tail of the path.  If it
+        is a DOM node or a library, then it is inserted into the
+        tree at the specified path.
+
+        If the optional id is specified, then it sets the identifier
+        for the tag at the tail of the path.  If the optional append
+        flag is specified, then the value is appended to the current
+        value.  Otherwise, the value replaces the current value.
+        """
+
+        node = self._find(path,create=1)
+
+        if append:
+            nlist = [n for n in node.childNodes
+                       if not n.nodeType == n.TEXT_NODE]
+        else:
+            nlist = node.childNodes
+
+        for n in nlist:
+            node.removeChild(n)
+
+        if value:
+            # if there's a value, then add it to the node
+            if isinstance(value, library):
+                node.appendChild(value.node.cloneNode(1))
+            elif isinstance(value, minidom.Node):
+                node.appendChild(value)
+            elif value and value != '':
+                n = self.doc.createTextNode(value)
+                node.appendChild(n)
+
+        # if there's an id, then set it on the node
+        if id:
+            node.setAttribute("id",id)
+
+    # ------------------------------------------------------------------
+    def remove(self, path=""):
+        """
+        Clients use this to remove the specified node.  Removes the
+        node from the tree and returns it as an element, so you can
+        put it somewhere else if you like.
+        """
+
+        node = self._find(path)
+        if not node:
+            return None
+
+        rval = library('<?xml version="1.0"?>' + node.toxml())
+        node.parentNode.removeChild(node)
+
+        return rval
+
+    # ------------------------------------------------------------------
+    def xml(self):
+        """
+        Clients use this to query the XML representation for this
+        object.
+        """
+        return self.doc.toxml()
+
+    # ------------------------------------------------------------------
+    def _node2name(self, node):
+        """
+        Used internally to create a name for the specified node.
+        If the node doesn't have a specific name ("id" attribute)
+        then a name of the form "type123" is constructed.
+        """
+
+        try:
+            # node has a name? then return it
+            name = node.getAttribute("id")
+        except AttributeError:
+            name = ''
+
+        if name == '':
+            # try to build a name like "type123"
+            type = node.tagName
+            siblings = node.parentNode.getElementsByTagName(type)
+            index = siblings.index(node)
+            if index == 0:
+                name = type
+            else:
+                name = "%s%d" % (type,index)
+
+        return name
+
+    # ------------------------------------------------------------------
+    def _node2comp(self, node):
+        """
+        Used internally to create a path component name for the
+        specified node.  A path component name has the form "type(id)"
+        or just "type##" if the node doesn't have a name.  This name
+        can be used in a path to uniquely address the component.
+        """
+
+        try:
+            # node has a name? then return it
+            name = node.getAttribute("id")
+            if name != '':
+                name = "%s(%s)" % (node.tagName, name)
+        except AttributeError:
+            name = ''
+
+        if name == '':
+            # try to build a name like "type123"
+            type = node.tagName
+            siblings = node.parentNode.getElementsByTagName(type)
+            index = siblings.index(node)
+            if index == 0:
+                name = type
+            else:
+                name = "%s%d" % (type,index)
+
+        return name
+
+    # ------------------------------------------------------------------
+    def _find(self, path, create=0):
+        """
+        Used internally to find a particular element within the
+        root node according to the path, which is a string of
+        the form "typeNN(id).typeNN(id). ...", where each
+        "type" is a tag <type>; if the optional NN is specified,
+        it indicates an index for the <type> tag within its parent;
+        if the optional (id) part is included, it indicates a
+        tag of the form <type id="id">.
+
+        By default, it looks for an element along the path and
+        returns None if not found.  If the create flag is set,
+        it creates various elements along the path as it goes.
+        This is useful for "put" operations.
+
+        If you include "#" instead of a specific number, a node
+        will be created automatically with a new number.  For example,
+        the path "foo.bar#" called the first time will create "foo.bar",
+        the second time "foo.bar1", the third time "foo.bar2" and
+        so forth.
+
+        Returns an object representing the element indicated by
+        the path, or None if the path is not found.
+        """
+
+        if path == "":
+            return self.node
+
+        path = self._path2list(path)
+
+        #
+        # Follow the given path and look for all of the parts.
+        #
+        node = lastnode = self.node
+        for part in path:
+            #
+            # Pick apart "type123(id)" for this part.
+            #
+            match = self.re_pathElem.search(part)
+            if not match:
+                raise ValueError, "bad path component '%s': should have the form 'type123(id)'" % part
+
+            (dummy, type, index, dummy, name) = match.groups()
+
+            if not name:
+                #
+                # If the name is like "type2", then look for elements with
+                # the type name and return the one with the given index.
+                # If the name is like "type", then assume the index is 0.
+                #
+                if not index or index == "":
+                    index = 0
+                else:
+                    index = int(index)
+
+                nlist = node.getElementsByTagName(type)
+                if index < len(nlist):
+                    node = nlist[index]
+                else:
+                    node = None
+            else:
+                #
+                # If the name is like "type(id)", then look for elements
+                # that match the type and see if one has the requested name.
+                # if the name is like "(id)", then look for any elements
+                # with the requested name.
+                #
+                if type:
+                    nlist = node.getElementsByTagName(type)
+                else:
+                    nlist = node.childNodes
+
+                node = None
+                for n in nlist:
+                    try:
+                        tag = n.getAttribute("id")
+                    except AttributeError:
+                        tag = ""
+
+                    if tag == name:
+                        node = n
+                        break
+
+            if not node:
+                if not create:
+                    return None
+
+                #
+                # If the "create" flag is set, then create a node
+                # with the specified "type(id)" and continue on.
+                # If the type is "type#", then create a node with
+                # an automatic number.
+                #
+                match = self.re_pathCreateElem.search(part)
+                if match:
+                    (type, name) = match.groups()
+                else:
+                    type = part
+                    name = ""
+
+                if type.endswith('#'):
+                    type = type.rstrip('#')
+                    node = self.doc.createElement(type)
+
+                    # find the last node of same type and append there
+                    pos = None
+                    for n in lastnode.childNodes:
+                        if n.nodeName == type:
+                            pos = n
+
+                    if pos:
+                        pos = pos.nextSibling
+
+                    if pos:
+                        lastnode.insertBefore(node,pos)
+                    else:
+                        lastnode.appendChild(node)
+                else:
+                    node = self.doc.createElement(type)
+                    lastnode.appendChild(node)
+
+                if name:
+                    node.setAttribute("id",name)
+
+            lastnode = node
+
+        # last node is the desired element
+        return node
+
+    # ------------------------------------------------------------------
+    def _path2list(self, path):
+        """
+        Used internally to convert a path name of the form
+        "foo.bar(x.y).baz" to a list of the form ['foo',
+        'bar(x.y)','baz'].  Note that it's careful to preserve
+        dots within ()'s but splits on those outside ()'s.
+        """
+
+        #
+        # Normally, we just split on .'s within the path.  But there
+        # might be some .'s embedded within ()'s in the path.  Change
+        # any embedded .'s to an out-of-band character, then split on
+        # the .'s, and change the embedded .'s back.
+        #
+        while self.re_dots.search(path):
+            path = self.re_dots.sub('\\1\007\\2',path)
+
+        path = re.split('\.', path)
+        return [re.sub('\007','.',elem) for elem in path]
+
+if __name__ == "__main__":
+    lib = library("""<?xml version="1.0"?>
+<device>
+<label>Heterojunction</label>
+
+<recipe>
+  <slab>
+    <thickness>0.1um</thickness>
+    <material>GaAs</material>
+  </slab>
+  <slab>
+    <thickness>0.1um</thickness>
+    <material>Al(0.3)Ga(0.7)As</material>
+  </slab>
+</recipe>
+<field id="donors">
+  <label>Doping</label>
+  <units>/cm3</units>
+  <scale>log</scale>
+  <color>green</color>
+  <component id="Nd+">
+    <constant>1.0e19/cm3</constant>
+    <domain>slab0</domain>
+  </component>
+</field>
+</device>
+""")
+    print lib.get('label')
+    print lib.get('recipe.slab1.thickness')
+    print lib.get('field(donors).component(Nd+).domain')
+    print lib.get('field(donors).component.domain')
Index: /tags/1.6.0/lang/python/Rappture/number.py
===================================================================
--- /tags/1.6.0/lang/python/Rappture/number.py	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/number.py	(revision 6168)
@@ -0,0 +1,47 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: number
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+import Rappture
+
+class number:
+    def __init__(self,path,id,**kwargs):
+        """
+        Blah, blah...
+        """
+
+        self.basePath = path
+        self.path = path + ".number(" + id + ")"
+        self.id = id
+        self.attribs = kwargs
+
+    def put(self,lib):
+        lib.put(self.path)
+        for key,val in self.attribs.items():
+            lib.put(self.path+'.'+key, str(val))
+
+    def __coerce__(self,other):
+        attrList = Rappture.driver.children(self.path, "id")
+        attrName = 'default'
+        for attr in attrList:
+            if attr == 'current':
+                attrName = attr
+        s = Rappture.driver.get(self.path+'.'+attrName)
+        # return (float(s),other)
+        #
+        # the following code doesnt work if the <units> tag does not exist
+        # becasue it sends an empty string to convert and it fails there
+        toUnit = Rappture.driver.get(self.path+'.units')
+        if (toUnit != None):
+            val = Rappture.Units.convert(s,to=toUnit,units="off")
+        else :
+            # you have to hope the user didn't put units onto the <default>
+            # value (which is unlikely in most cases, btw)
+            val = float(s)
+        return (val,other)
Index: /tags/1.6.0/lang/python/Rappture/python_api.rst
===================================================================
--- /tags/1.6.0/lang/python/Rappture/python_api.rst	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/python_api.rst	(revision 6168)
@@ -0,0 +1,392 @@
+=======================
+New Rappture Python API
+=======================
+
+This is a new Python API, which extends the old API, improving
+readability and providing a more "Pythonic" feel.  It is an extension
+to the old API, which is located `here <https://nanohub.org/infrastructure/rappture/wiki/rappture_python_api>`_
+
+Opening an XML File
+-------------------
+
+Tools written in Python will be typically called with the name of the output XML file
+as the first command line argument. You will need to open the file with the
+PyXml() function.
+
+.. code-block:: python
+
+    import Rappture
+    io = Rappture.PyXml(sys.argv[1])
+
+.. note::
+
+    If you get "AttributeError: 'module' object has no attribute 'PyXml'"
+    that means you are using an older version of Rappture without the new
+    API.
+
+Closing the XML File
+--------------------
+
+When your tool is finished, before it exits, the PyXml instance must
+call close().
+
+.. code-block:: python
+
+    io.close()
+
+
+Getting Started
+---------------
+
+Here is a simple xml input file we will use for the examples.  Save
+it into 'driver.xml'
+
+.. code-block:: xml
+
+    <run>
+        <input>
+            <number id="Ef">
+                <units>eV</units>
+                <min>-10eV</min>
+                <max>10eV</max>
+                <default>0eV</default>
+                <current>3eV</current>
+            </number>
+        </input>
+    </run>
+
+Now save this code into a file 'my_tool.py'
+
+.. code-block:: python
+
+    import Rappture
+    import sys
+
+    rx = Rappture.PyXml(sys.argv[1])
+    print rx['input.number(Ef).current'].value
+    rx.close()
+
+Running it, we get::
+
+    > python my_tool.py driver.xml
+    3eV
+    =RAPPTURE-RUN=>run1431956733728770.xml
+
+The last line came from Rappture.  It is the output xml filename. This file
+is the driver file, plus any changes your tool made (in this case, none) and
+some additional information about the run, including username, hostname, and time.
+
+Reading Values
+--------------
+
+The previous example showed the simplest case of reading from the driver file.
+The driver file is in XML format.  Each node in an XML file can contain either
+information or other nodes.  Nodes are specified by their path relative to the
+root or other nodes.  If you try this:
+
+.. code-block:: python
+
+    print io['input.number(Ef).current']
+
+You will get a node reference, which looks something like::
+
+    <Rappture.library object at 0x7fa9c3c3e168>['input.number(Ef).current']
+
+If you want the value at that path, you must ask for it by using the "value" method.
+
+.. code-block:: python
+
+    print io['input.number(Ef).current'].value
+
+Outputs::
+
+    3eV
+
+Nodes are very useful because the allow us to use shorter, more readable
+path names.  For example if you want to read all the information about
+variable 'Ef' from the driver file:
+
+.. code-block:: python
+
+    ef = io['input.number(Ef)']
+    print ef['units'].value
+    print ef['min'].value
+    print ef['max'].value
+    print ef['default'].value
+    print ef['current'].value
+
+Outputs::
+
+    eV
+    -10eV
+    10eV
+    0eV
+    3eV
+
+You can also ask for the pathname of the node.
+
+.. code-block:: python
+
+    ef = io['input.number(Ef)']
+    print ef['current'].name
+
+::
+
+    input.number(Ef).current
+
+
+Converting Values
+-----------------
+
+All values read from the driver file are strings.  Most will have units.
+To use them in your simulation, you will need integers or floating point numbers.
+And you must be sure they are in the required units.
+We do this by calling Rappture.Units.convert().
+
+.. code-block:: python
+
+    ef = io['input.number(Ef)']
+    ef_str = ef['current'].value
+
+    ev = Rappture.Units.convert(ef_str, to="eV", units="off")
+    print "ev=", ev
+
+    mev = Rappture.Units.convert(ef_str, to="meV", units="off")
+    print "mev=", mev
+
+::
+
+    ev= 3.0
+    mev= 3000.0
+
+
+Writing Values
+--------------
+
+As with reading, we use nodes and pathnames.  Values are automatically
+converted into apropriate strings.  You can check this by reading the value
+or inspecting the generated xml.  The generated xml is available in the
+output xml file, or you can call the xml() method.
+
+.. code-block:: python
+
+    h1 = io['output.histogram(example1)']
+    h1['about.label'] = 'Name Value Histogram'
+
+    labels = ['Tigers', 'Bears', 'Lions', 'Monkeys', 'Hawks',
+              'Elephants', 'Foxes', 'Geckos', 'Zebras', 'Giraffes']
+    values = [5, 7, 3, 15, 8, 6, 18, 4, 9, 2]
+
+    h1['component.xy'] = (labels, values)
+
+    # read back the values to see that the (labels, values)
+    # tuple has been converted into interleaved strings as required
+    # by https://nanohub.org/infrastructure/rappture/wiki/rp_xml_ele_histogram
+    #
+    print h1['component.xy'].value
+
+    # If we want to see all the generated xml...
+    print h1.xml()
+
+::
+
+    "Tigers" 5
+    "Bears" 7
+    "Lions" 3
+    "Monkeys" 15
+    "Hawks" 8
+    "Elephants" 6
+    "Foxes" 18
+    "Geckos" 4
+    "Zebras" 9
+    "Giraffes" 2
+
+
+And the xml part looks like this:
+
+.. code-block:: xml
+
+   <histogram id="example1">
+        <about>
+            <label>Name Value Histogram</label>
+        </about>
+        <component>
+            <xy>&quot;Tigers&quot; 5
+    &quot;Bears&quot; 7
+    &quot;Lions&quot; 3
+    &quot;Monkeys&quot; 15
+    &quot;Hawks&quot; 8
+    &quot;Elephants&quot; 6
+    &quot;Foxes&quot; 18
+    &quot;Geckos&quot; 4
+    &quot;Zebras&quot; 9
+    &quot;Giraffes&quot; 2</xy>
+        </component>
+    </histogram>
+
+
+In general, ints and floats are converted to strings, and lists, tuples, and arrays are converted into interleaved
+strings.  If x and y are lists or arrays, then (x, y) or [x, y] would be inserted into the xml as strings
+representing x[0], y[0], x[1], y[1], ...
+
+If the argument is a multidimensional array, it is flattened (serialized)
+in the Fortran order, where the first ('x') index changes fastest.  This is
+what Rappture normally requires for fields and meshes.
+
+See the rappture examples for more information.
+
+.. note::
+
+    Many of the old examples showed writing values by iterating through lists and appending values
+    to the node.  That will still work, although it is extremely slow.  The more efficient,
+    and easier way is to write out entire lists or arrays at once.
+
+Debugging
+---------
+
+When debugging a tool that is started by the Rappture GUI(instead of running from the command
+line as we have in these examples), the Rappture GUI will not display output from prints.  You can
+redirect output to files for easier debugging by putting this at the top of your code.
+
+.. code-block:: python
+
+    import sys
+    sys.stderr = open('tool.err', 'w')
+    sys.stdout = open('tool.out', 'w')
+
+
+
+REFERENCE
+=========
+
+Opening
+-------
+
+- node = Rappture.PyXml(driver_filename)
+    *driver_filename*
+        The XML driver file.
+    *Returns*
+        A node reference set to the root (top) of the xml.
+
+Closing
+-------
+
+- node.close()
+    Writes out the XML.
+
+Reading
+-------
+
+- node[path]
+    *node*
+        A node reference
+    *path*
+        A string indicating an XML path.
+    *Returns*
+        A new node reference.
+
+- node[path].value
+    *node*
+        A node reference
+    *path*
+        A string indicating an XML path.
+    *Returns*
+        A string representing the value at the node.
+
+- node[path].name
+    *node*
+        A node reference
+    *path*
+        A string indicating an XML path.
+    *Returns*
+        The xml path as a string.
+
+- node.get(path)
+    [Deprecated. For compatibility with the old API.]
+
+    *node*
+        A node reference
+    *path*
+        A string indicating an XML path.
+    *Returns*
+        A string representing the value at the node.
+
+Writing
+-------
+
+- node[path] = value
+    Encodes *value* as a string and writes it to the
+    xml path *path* relative to *node*.
+
+    *node*
+        A node reference
+    *path*
+        A string indicating an XML path.
+    *value*
+        Data to write.
+
+- node.put(path, value, append, type, compress)
+    Encodes *value* as a string and writes it to the
+    xml path *path* relative to *node*. This syntax
+    allows some rare additional options.  The previous
+    syntax is prefered for readability.
+
+    *node*
+        A node reference
+    *path*
+        A string indicating an XML path.
+    *value*
+        Data to write.
+    *append*
+        Append this to the current value at the node, if there
+        is one.  Not recommended. It is far more efficient to
+        build strings and lists in Python and write them in one
+        operation.
+    *type*
+        'string' (default) or 'file'.  If set to 'file', then *value*
+        is a filename and the data from it is copied to the xml node.
+    *compress*
+        True or False (default). If True, data is gzipped
+        and base64 encoded.
+
+Examples:
+
+.. code-block:: python
+
+    rx.put('current', 'results.txt', type='file')
+    rx.put('current', 'results.txt', type='file', compress=True)
+
+
+Progress Bar
+------------
+
+- Rappture.Utils.progress(percent, message)
+    Updates the Rappture GUI progress bar.
+
+    *percent*
+        Int or float from 0 to 100 indicating completion percentage.
+    *message*
+        String. Message to display.
+
+
+Encoding/Decoding
+-----------------
+
+Some special tools may require manipulation of external binary data.
+
+
+.. code-block:: python
+
+    from Rappture import PyXml, RPENC_Z, RPENC_B64, RPENC_ZB64
+    from Rappture.encoding import encode, decode, isbinary
+
+    # string with embedded non-ascii char
+    instr = "foobar\n012\0"
+
+    # compress and uncompress, for testing
+    x = encode(instr, RPENC_Z)
+    outstr = decode(x, 0)
+
+    # check
+    assert instr == outstr
+    assert isbinary(instr) == True
Index: /tags/1.6.0/lang/python/Rappture/pyxml.py
===================================================================
--- /tags/1.6.0/lang/python/Rappture/pyxml.py	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/pyxml.py	(revision 6168)
@@ -0,0 +1,82 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: PyXml - Python access to the Rappture XML library
+#
+# ======================================================================
+#  AUTHOR:  Martin Hunt, Purdue University
+#  Copyright (c) 2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+from library import library
+from result import result
+import numpy as np
+
+"""
+This library provides a simpler way to read and write Rappture
+XML for Python tools.  It is backwards-compatible with the old
+library API.
+
+See python_api.rst for docs.
+"""
+
+
+def PyXml(path):
+    '''
+    Open the Rappture xml file located at 'path' and return a node
+    reference to the root.
+    '''
+    lib = library(path)
+    return Node(lib, '')
+
+
+class Node:
+    def __init__(self, library, path):
+        self.lib = library
+        self.path = path
+
+    def __setitem__(self, path, val):
+        self.put(path, val)
+
+    def __getitem__(self, path):
+        if self.path != '':
+            path = self.path + '.' + path
+        return Node(self.lib, path)
+
+    def get(self, path):
+        return self.__getitem__(path).value
+
+    def put(self, path, val, **kwargs):
+        if self.path != '':
+            path = self.path + '.' + path
+
+        if type(val) == np.ndarray:
+            val = ' '.join(map(str, val.ravel('F').tolist()))
+        elif type(val) == list or type(val) == tuple:
+            val = '\n'.join([' '.join(map(repr, x)) for x in zip(*val)])
+            # we need the strings double quoted for tcl
+            val = val.replace("'", '"')
+        self.lib.put(path, val, **kwargs)
+
+    @property
+    def value(self):
+        return self.lib.get(self.path)
+
+    @property
+    def name(self):
+        return self.path
+
+    def __str__(self):
+        if self.path != '':
+            return("%s['%s']" % (self.lib, self.path))
+        return str(self.lib)
+
+    def copy(self, dest, src):
+        return self.lib.copy(dest, src)
+
+    def xml(self):
+        elem = self.lib.element(self.path)
+        return elem.xml()
+
+    def close(self):
+        result(self.lib)
Index: /tags/1.6.0/lang/python/Rappture/queue.py
===================================================================
--- /tags/1.6.0/lang/python/Rappture/queue.py	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/queue.py	(revision 6168)
@@ -0,0 +1,682 @@
+# ----------------------------------------------------------------------
+#
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+# ======================================================================
+
+import sys,os
+import re
+import time
+import shutil
+import datetime
+
+# import Rappture Related libs
+from tools import *
+
+#######################################################################
+
+# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52235
+class CallbaseError(AttributeError):
+    pass
+
+def callbase(obj, base, methodname='__init__', args=(), raiseIfMissing=None):
+    try: method = getattr(base, methodname)
+    except AttributeError:
+        if raiseIfMissing:
+            raise CallbaseError, methodname
+        return None
+    if args is None: args = ()
+    return method(obj, *args)
+
+class RpQueueError(Exception):
+    pass
+
+class queue:
+
+    def __init__(self):
+
+        # initialize the general queue variable with safe, default values
+        self._queue_vars = {}
+        self.__initQueueVars__()
+
+    def __initQueueVars__(self):
+        self._queue_vars['walltime'] = 1
+        self._queue_vars['resultsDir'] = ""
+        self._queue_vars['executable'] = ""
+        self._queue_vars['execArgs'] = ""
+        self._queue_vars['nodes'] = 1
+        self._queue_vars['ppn'] = 1
+        self._queue_vars['queue'] = ""
+        self._queue_vars['outFile'] = ""
+        self._queue_vars['errFile'] = ""
+        self._queue_vars['logFile'] = ""
+        self._queue_vars['jobName'] = ""
+
+    def walltime(self,walltime=''):
+        walltime = str(walltime)
+        if (walltime == '') or (walltime == 'None'):
+            return self._queue_vars['walltime']
+        elif re.match(r'^\d{2}:\d{2}:\d{2}',walltime):
+            self._queue_vars['walltime'] = walltime
+        else:
+            error = "Incorrect walltime format: should be 00:00:00"
+            raise RpQueueError,error
+
+#        walltime = str(walltime)
+#        if re.match(r'^\d{2}:\d{2}:\d{2}',walltime):
+#        else:
+#            try:
+#                walltime = int(walltime)
+#            except:
+#                error = "walltime must match format"
+#        if (walltime <= 0):
+#            return self._queue_vars['walltime']
+#        else:
+#            self._queue_vars['walltime'] = walltime
+
+    def resultsDir(self,resultsDir=''):
+        resultsDir = str(resultsDir)
+        if (resultsDir == 'None') or (resultsDir == ''):
+            return self._queue_vars['resultsDir']
+        else:
+            self._queue_vars['resultsDir'] = resultsDir
+
+    def executable(self,executable=''):
+        executable = str(executable)
+        if (executable == 'None') or (executable == ''):
+            return self._queue_vars['executable']
+        else:
+            self._queue_vars['executable'] = executable
+
+    def execArgs(self,execArgs=''):
+        execArgs = str(execArgs)
+        if (execArgs == 'None') or (execArgs == ''):
+            return self._queue_vars['execArgs']
+        else:
+            self._queue_vars['execArgs'] = execArgs
+
+    def nodes(self,nodes=''):
+        if nodes == '':
+            return self._queue_vars['nodes']
+        nodes = int(nodes)
+        if nodes > 0:
+            self._queue_vars['nodes'] = nodes
+        else:
+            error = 'nodes must be a positive integer'
+            raise RpQueueError, error
+
+    def ppn(self,ppn=''):
+        if ppn == '':
+            return self._queue_vars['ppn']
+        ppn = int(ppn)
+        if ppn > 0:
+            self._queue_vars['ppn'] = ppn
+        else:
+            error = 'ppn must be a positive integer'
+            raise RpQueueError, error
+
+    def queue(self,queue=''):
+        queue = str(queue)
+        if (queue == 'None') or (queue == ''):
+            return self._queue_vars['queue']
+        else :
+            self._queue_vars['queue'] = queue
+
+    def outFile(self,outFile=''):
+        outFile = str(outFile)
+        if (outFile == 'None') or (outFile == ''):
+            return self._queue_vars['outFile']
+        else:
+            self._queue_vars['outFile'] = outFile
+
+    def errFile(self,errFile=''):
+        errFile = str(errFile)
+        if (errFile == 'None') or (errFile == ''):
+            return self._queue_vars['errFile']
+        else:
+            self._queue_vars['errFile'] = errFile
+
+    def logFile(self,logFile=''):
+        logFile = str(logFile)
+        if (logFile == 'None') or (logFile == ''):
+            return self._queue_vars['logFile']
+        else:
+            self._queue_vars['logFile'] = logFile
+
+    def jobName(self,jobName=''):
+        jobName = str(jobName)
+        if jobName == 'None' or (jobName == ''):
+            return self._queue_vars['jobName']
+        else: 
+            self._queue_vars['jobName'] = jobName
+
+    def __convertWalltime__(self):
+        pass
+
+    def submit(self):
+        pass
+
+    def __checkFiles__(self,chkFileName):
+        retVal = False
+        if not os.path.isfile(chkFileName):
+            retVal = True
+        return retVal
+
+    def status(self):
+        min = 0
+        tCount = 0
+        sleepTime = 10
+
+        while self.__checkFiles__(self.errFile()):
+            if tCount == 60 :
+                min += 1
+                tCount = 0
+
+            self._currStatus = self.getCurrentStatus()
+            if (self._currStatus != self._prevStatus):
+                sys.stdout.write("%s: %s\n" % ( self._currStatus, time.ctime() ) )
+                sys.stdout.flush()
+                self._prevStatus = self._currStatus
+
+            time.sleep(sleepTime)
+            tCount += sleepTime
+
+class pbs(queue):
+    """the pbs class organizes the information needed to submit jobs to 
+nanohub's pbs queues through Rappture"""
+
+    def __init__(   self,
+                    jobName,
+                    resultsDir,
+                    nodes,
+                    executable,
+                    execArgs='',
+                    walltime='00:01:00' ):
+
+        # call the base class's init
+        for base in self.__class__.__bases__:
+            callbase(self, base)
+
+        self._pbs_msgs = {}
+        self.__fillStatusDict__()
+
+        # initialize pbs script vars
+        self._pbs_vars = {}
+        self.__initPbsScriptVars__()
+
+        # initialize jobId for this object
+        self._jobId = ""
+
+        # set vars based on user input
+        self.resultsDir(resultsDir)
+        self.jobName(jobName)
+        self.nodes(nodes)
+        self.walltime(walltime)
+        self.executable(executable)
+        self.execArgs(execArgs)
+        nanoHUBQ = os.getenv("NANOHUB_PBS_QUEUE")
+        if nanoHUBQ is not None :
+            self.queue(nanoHUBQ)
+
+    def __initPbsScriptVars__(self):
+        self._pbs_vars['cmd'] = ""
+
+    def __fillStatusDict__(self):
+        # Possible PBS Job States 
+        # From qstat manpage on hamlet.rcac.purdue.edu
+        #   E -  Job is exiting after having run.
+        #   H -  Job is held.
+        #   Q -  job is queued, eligible to run or routed.
+        #   R -  job is running.
+        #   T -  job is being moved to new location.
+        #   W -  job is waiting for its execution time
+        #         (-a option) to be reached.
+        #   S -  job is suspended.
+
+        self._pbs_msgs['E'] = 'Job is exiting after having run'
+        self._pbs_msgs['H'] = 'Job is held'
+        self._pbs_msgs['Q'] = 'Simulation Queued'
+        self._pbs_msgs['R'] = 'Running Simulation'
+        self._pbs_msgs['T'] = 'Job is being moved to new location. Please Wait...'
+        self._pbs_msgs['W'] = 'Job is waiting for its execution time. Please Wait...'
+        self._pbs_msgs['S'] = 'Job is suspended'
+        self._pbs_msgs['DEFAULT'] = 'Returning Results...'
+
+    def __makePbsScript__(self):
+        # create the directory where output should be placed
+        self._resultDirPath = os.path.join(os.getcwd(),self.resultsDir())
+
+        # if os.path.exists(self._resultDirPath):
+        #     shutil.rmtree(self._resultDirPath)
+        # os.mkdir(self._resultDirPath)
+
+        # set the out and err files
+        if self.outFile() == '':
+            self.outFile(os.path.join(self.resultsDir(),self.jobName()+".out"))
+
+        if self.errFile() == '':
+            self.errFile(os.path.join(self.resultsDir(),self.jobName()+".err"))
+
+        # remove existing "FLAG" files if they exist
+        if os.path.isfile(self.outFile()):
+            os.remove(self.outFile())
+        if os.path.isfile(self.errFile()):
+            os.remove(self.errFile())
+
+        if self.cmd() == '':
+            # find the mpirun command
+            mpiCommand = getCommandOutput('which mpirun')
+            if mpiCommand == '':
+                # command not found?
+                error = 'mpirun command not found'
+                raise RpQueueError, error
+            else :
+                mpiCommand = mpiCommand.strip()
+
+            # check to make sure user specified an executable
+            if self._queue_vars['executable'] == '':
+                error = 'executable not set within pbs queue'
+                raise RpQueueError, error
+
+            self.cmd('%s -np %d -machinefile $PBS_NODEFILE %s %s' % \
+                (mpiCommand, self.nodes(), self.executable(), self.execArgs()))
+
+        script = """#PBS -S /bin/bash
+#PBS -l nodes=%s:ppn=%s
+#PBS -l walltime=%s
+""" % (self.nodes(),self.ppn(),self.walltime())
+        if self.queue() :
+            script += "#PBS -q %s" % (self.queue())
+        script += """
+#PBS -o %s
+#PBS -e %s
+#PBS -mn
+#PBS -N %s
+#PBS -V
+cd $PBS_O_WORKDIR
+
+cmd="%s"
+echo == running from $HOSTNAME:
+echo $cmd
+$cmd
+
+touch %s
+""" % (self.outFile(),self.errFile(),self.jobName(),self.cmd(),self.errFile())
+
+        return script
+
+    def cmd(self,cmd=''):
+        cmd = str(cmd)
+        if (cmd == 'None') or (cmd == ''):
+            return self._pbs_vars['cmd']
+        else :
+            self._pbs_vars['cmd'] = cmd
+
+    def getCurrentStatus(self):
+        pbsServer = ''
+        nanoHUBQ = ''
+        retVal = self._pbs_msgs['DEFAULT']
+        if self._jobId:
+            nanoHUBQ = self.queue()
+            if (nanoHUBQ != "") and (nanoHUBQ is not None):
+                atLocation = nanoHUBQ.find('@')
+                if atLocation > -1:
+                    pbsServer = nanoHUBQ[atLocation+1:]
+
+            cmd = ''
+            if pbsServer == '':
+                cmd = "qstat -a | grep \'^ *%s\'" % (self._jobId)
+            else:
+                cmd = "qstat @%s -a | grep \'^ *%s\'" % (pbsServer,self._jobId)
+            cmdOutput = getCommandOutput(cmd)
+
+            # parse a string that should look like this: 
+            # 32049.hamlet.rc kearneyd ncn      run.21557.   6104   8   8    --  24:00 R 00:00
+            parseResults = cmdOutput.split() # re.compile(r'\W+').split(cmdOutput)
+            # results should look like this:
+            # ['32049.hamlet.rc','kearneyd','ncn','run.21557.','6104','8','8','--','24:00','R','00:00']
+
+            if len(parseResults) > 9:
+                qstat = parseResults[9]
+                retVal = self._pbs_msgs[qstat]
+
+        return '('+self._jobId+') '+retVal
+
+    def submit(self):
+        submitFileData = self.__makePbsScript__()
+        submitFileName = self._resultDirPath+'/'+self.jobName()+'.pbs'
+        writeFile(submitFileName,submitFileData)
+
+        myCWD = os.getcwd()
+        os.chdir(self._resultDirPath)
+        cmdOutData = getCommandOutput('qsub %s' % (submitFileName))
+        os.chdir(myCWD)
+
+        self._prevStatus = ''
+        self._currStatus = ''
+
+        # a successful submission (on hamlet/lear) follows this regexp
+        if re.match(r'[0-9]+',cmdOutData):
+            self._jobId = re.search(r'[0-9]+',cmdOutData).group()
+        else:
+            error = 'Submission to PBS Queue Failed'
+            raise RpQueueError, error
+
+#    def status(self):
+#        min = 0
+#        tCount = 0
+#        sleepTime = 10
+#
+#        while self.__checkFiles__(self.errFile()):
+#            if tCount == 60 :
+#                min += 1
+#                tCount = 0
+#
+#            self._currStatus = self.getCurrentStatus()
+#            if (self._currStatus != self._prevStatus):
+#                sys.stdout.write("%s: %s\n" % ( self._currStatus, time.ctime() ) )
+#                sys.stdout.flush()
+#                self._prevStatus = self._currStatus
+#
+#            time.sleep(sleepTime)
+#            tCount += sleepTime
+
+
+
+class condor (queue):
+    # this class is not working!
+
+    USE_MPI = 1
+
+    def __init__(   self,
+                    jobName,
+                    resultsDir,
+                    nodes,
+                    executable,
+                    ppn=2,
+                    execArgs='',
+                    walltime='00:01:00',
+                    flags=0             ):
+
+        # call the base class's init
+        for base in self.__class__.__bases__:
+            callbase(self, base)
+
+        self._condor_msgs = {}
+        self.__fillStatusDict__()
+
+        self._flags = flags
+        self.__setWorkingDir__()
+
+        # setup the empty process lists
+        self._processList = []
+
+        # set vars based on user input
+        self.resultsDir(resultsDir)
+        self.jobName(jobName)
+        self.nodes(nodes)
+        self.ppn(ppn)
+        self.walltime(walltime)
+        self.executable(executable)
+        self.execArgs(execArgs)
+        self.queue("tg_workq@lear")
+        self.outFile("out.$(cluster).$(process)")
+        self.errFile("err.$(cluster).$(process)")
+        self.logFile("log.$(cluster)")
+
+    def __fillStatusDict__(self):
+        self._condor_msgs['I'] = 'Simulation Queued'
+        self._condor_msgs['H'] = 'Simulation Held'
+        self._condor_msgs['R'] = 'Running Simulation'
+        self._condor_msgs['C'] = 'Simulation Complete'
+        self._condor_msgs['X'] = 'Simulation Marked For Deletion'
+        self._condor_msgs['DEFAULT'] = 'Returning Results...'
+
+    def __setWorkingDir__(self):
+        session = os.getenv("SESSION","00000X")
+        epoch = int(time.mktime(datetime.datetime.utcnow().timetuple()))
+        self._workingdir = str(epoch) + "_" + session
+
+    def __makeCondorScript__(self):
+#        return """universe=grid
+#    gridresource = gt2 tg-gatekeeper.purdue.teragrid.org:2120/jobmanager-pbs
+#    executable = EXECUTABLE
+#    output = out.$(cluster).$(process)
+#    error = err.$(cluster).$(process)
+#    should_transfer_files = YES
+#    when_to_transfer_output = ON_EXIT
+#    initialDir = MY_RESULT_DIR
+#    log = log.$(cluster)
+#    #globusrsl = (project=TG-ECD060000N)(jobType=mpi)(count=2)(hostcount=2)(maxWallTime=WALLTIME)
+#    globusrsl = (project=TG-ECD060000N)(maxWallTime=WALLTIME)MPIRSL(queue=tg_workq@lear)
+#    notification = never
+#    """
+
+        self._resultDirPath = os.path.join(os.getcwd(),self.resultsDir())
+
+        self._mpirsl = ""
+        if (self._flags & self.USE_MPI):
+            # host_xcount is the number of machines
+            # xcount is the number of procs per machine
+            self._mpirsl = "(jobType=mpi)(xcount=%d)(host_xcount=%d)" % \
+                            (self.ppn(), self.nodes())
+
+        (wall_hr,wall_min,wall_sec) = self.walltime().split(":")
+        walltime =  int(wall_hr)*60 + int(wall_min) + int(wall_sec)/60.00
+
+        return """universe=grid
+    gridresource = gt2 tg-gatekeeper.purdue.teragrid.org/jobmanager-pbs
+    executable = %s
+    output = %s
+    error = %s
+    should_transfer_files = YES
+    when_to_transfer_output = ON_EXIT
+    initialDir = %s
+    log = %s
+    #globusrsl = (project=TG-ECD060000N)(jobType=mpi)(xcount=2)(hostxcount=2)(maxWallTime=WALLTIME)
+    globusrsl = (project=TG-ECD060000N)(maxWallTime=%g)%s(queue=%s)
+    notification = never
+    """ % ( self.executable(),
+            self.outFile(),
+            self.errFile(),
+            self.resultsDir(),
+            self.logFile(),
+            walltime,
+            self._mpirsl,
+            self.queue()    )
+
+    def addProcess(self,argsList=[],inputFiles=[]):
+#    return """arguments = ARGUMENT resultsID.tar.gz WORKINGDIR_ID
+# transfer_input_files = INFILE,\\
+#                        APPROOT/grid.1.poly,\\
+#                        APPROOT/grid.1.node,\\
+#                        APPROOT/grid.1.ele,\\
+#                        APPROOT/grid.1.edge
+# transfer_output_files = resultsID.tar.gz
+# Queue
+# """
+        args = " ".join(argsList)
+        transInFiles = ",\\\\\n\t\t".join(inputFiles)
+        nextProcId = len(self._processList)
+        resultsTarName = "%s%d.tar.gz" % (self.jobName(),nextProcId)
+        newProcess = """arguments = %s %s %s_%d
+    transfer_input_files = %s
+    transfer_output_files = %s
+    Queue
+
+    """ % ( args,
+            resultsTarName,
+            self._workingdir,
+            nextProcId,
+            transInFiles,
+            resultsTarName  )
+        self._processList.append(newProcess)
+
+
+    def getCurrentStatus(self):
+        if self._jobId:
+            chkCmd = "condor_q | grep \'^ *%s\'" % (self._jobId)
+            cmdOutput = getCommandOutput(chkCmd)
+
+            # parse a string that should look like this: 
+            # 61.0   dkearney       12/9  22:47   0+00:00:00 I  0   0.0  nanowire.sh input-
+
+            parseResults = cmdOutput.split() # re.compile(r'\W+').split(cmdOutput)
+
+            # results should look like this:
+            # ['61.0', 'dkearney', '12/9', '22:47', '0+00:00:00', 'I', '0', '0.0', 'nanowire.sh', 'input-']
+
+            retVal = ''
+
+            if len(parseResults) > 6:
+                qstat = parseResults[5]
+                retVal = self._condor_msgs[qstat]
+
+            if retVal == '':
+                retVal = self._condor_msgs['DEFAULT']
+
+        return retVal
+
+    def __checkFiles__(self):
+        numJobs = len(self._processList)
+        retVal = numJobs
+        for i in xrange(numJobs):
+            resultTarPath = self.resultsDir() + "/" + self.jobName() + str(i) + ".tar.gz"
+
+            # this might be the point of a race condition,
+            # might need to change this to a try/catch statement.
+            # check to see that the result file exists, if not raise error
+            if (not os.path.exists(resultTarPath)):
+                error = 'Condor Result file not created: %s' % (resultTarPath)
+                raise RuntimeError, error
+                sys.exit(-1)
+
+            # check to see that the result tar size is greater than 0
+            resultTarSize = os.path.getsize(resultTarPath)
+            if (resultTarSize):
+                retVal -= 1
+
+        return retVal
+
+    def status(self):
+        min = 0
+        tCount = 0
+        sleepTime = 10
+
+        while self.__checkFiles__():
+            if tCount == 60 :
+                min += 1
+                tCount = 0
+
+            self._currStatus = self.getCurrentStatus()
+            if (self._currStatus != self._prevStatus):
+                sys.stdout.write("%s: %s\n" % ( self._currStatus, time.ctime() ) )
+                sys.stdout.flush()
+                self._prevStatus = self._currStatus
+
+            time.sleep(sleepTime)
+            tCount += sleepTime
+
+    def submit(self):
+
+        if len(self._processList) == 0:
+            self.addProcess()
+
+        submitFileData = self.__makeCondorScript__() + "\n".join(self._processList)
+        submitFileName = self._resultDirPath+'/'+self.jobName()+'.condor'
+        writeFile(submitFileName,submitFileData)
+
+        # submit the condor job
+        myCWD = os.getcwd()
+        os.chdir(self._resultDirPath)
+        condorCmd = 'condor_submit %s 2> condor_submit.error' % (submitFileName)
+        cmdOutData = getCommandOutput(condorCmd)
+        os.chdir(myCWD)
+
+        self._prevStatus = ''
+        self._currStatus = ''
+
+        # a successful submission (on hamlet/lear) follows this regexp
+        if re.search(r'cluster ([0-9]+)',cmdOutData):
+            self._jobId = re.search(r'cluster ([0-9]+)',cmdOutData).group(1)
+        else:
+            print "cmdOutData returned :%s:" % cmdOutData
+            error = 'Submission to Condor Queue Failed'
+            # raise RpQueueError, error
+
+#######################################################################
+# main python script
+#######################################################################
+
+#######################################################################
+
+def createDir(dirName):
+    resultDirPath = os.getcwd() + "/" + dirName
+    if os.path.exists(resultDirPath):
+        shutil.rmtree(resultDirPath)
+    os.mkdir(resultDirPath)
+    return resultDirPath
+
+if __name__ == '__main__':
+
+    nodes = 5
+    walltime = '01:00:00'
+    mpiCommand = getCommandOutput('which mpirun')
+
+    if mpiCommand == '':
+        # command not found?
+        sys.exit(-1)
+    else :
+        mpiCommand = mpiCommand.strip()
+
+    sys.stdout.write("testing hello with condor\n")
+    jobName = 'helloMPITest'
+    resultsDir = createDir('4321')
+    executable = './hello.sh'
+    shutil.copy('hello/hello.sh',resultsDir)
+    shutil.copy('hello/hello',resultsDir)
+    myCondorObj = condor(jobName,resultsDir,2,executable,walltime=walltime,flags=condor.USE_MPI)
+    myCondorObj.submit()
+    myCondorObj.status()
+    sys.stdout.flush()
+
+    sys.stdout.write("testing hello\n")
+    jobName = 'helloRP_MPITest'
+    resultsDir = createDir('abab')
+    executable = 'helloRP'
+    driver = "driver7878.xml"
+    shutil.copy('hello/helloRP',resultsDir)
+    shutil.copy(driver,resultsDir)
+    myPBSObj =  pbs(jobName,resultsDir,nodes,executable,driver)
+    myPBSObj.submit()
+    myPBSObj.status()
+    sys.stdout.flush()
+
+
+    sys.stdout.write("testing hello\n")
+    jobName = 'helloMPITest'
+    resultsDir = createDir('1234')
+    executable = 'hello'
+    shutil.copy('hello/hello',resultsDir)
+    myPBSObj =  pbs(jobName,resultsDir,nodes,executable)
+    myPBSObj.submit()
+    myPBSObj.status()
+    sys.stdout.flush()
+
+    sys.stdout.write("testing cycle\n")
+    jobName = 'cycleMPITest'
+    resultsDir = createDir('5678')
+    cmd = '%s -np %d -machinefile $PBS_NODEFILE cycle' % (mpiCommand,nodes)
+    shutil.copy('cycle/cycle',resultsDir)
+    myPBSObj =  pbs(jobName,resultsDir,nodes,"")
+    myPBSObj.cmd(cmd)
+    myPBSObj.walltime('00:02:00')
+    myPBSObj.submit()
+    myPBSObj.status()
+    sys.stdout.flush()
+
+    # exit the program
+    sys.exit()
+
+#######################################################################
Index: /tags/1.6.0/lang/python/Rappture/result.py
===================================================================
--- /tags/1.6.0/lang/python/Rappture/result.py	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/result.py	(revision 6168)
@@ -0,0 +1,23 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: result - provides a simple way to report results
+#
+#  This routine encapsulates the action of reporting results
+#  back to Rappture.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+import time
+
+def result(lib):
+    """
+    Use this function to report the result of a Rappture simulation.
+    Pass in the XML object representing the initial driver with
+    results substituted into it.
+    """
+
+    lib.put("tool.version.rappture.language", "python")
+    lib.result()
Index: /tags/1.6.0/lang/python/Rappture/signalHandler.py
===================================================================
--- /tags/1.6.0/lang/python/Rappture/signalHandler.py	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/signalHandler.py	(revision 6168)
@@ -0,0 +1,78 @@
+# ----------------------------------------------------------------------
+#
+# ======================================================================
+#  AUTHOR:  Derrick Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+# ======================================================================
+
+import sys
+import signal
+
+qID = []
+queue_type = ''
+
+def sigGEN_handler(signal, frame):
+    global qID
+    global queue_type
+    if qID :
+        for id in xrange(len(qID)):
+            sys.stdout.write("Killing job with qID = :%s:\n" % (qID[id]))
+            sys.stdout.flush()
+            if queue_type == 'PBS':
+                rmCmdOut = getCommandOutput('qdel %s' % (qID[id]))
+            elif queue_type == 'Condor':
+                rmCmdOut = getCommandOutput('condor_rm %s' % (qID[id]))
+            else:
+                # unrecognized queue_type
+                break
+            sys.stdout.write("\n%s\n" % rmCmdOut)
+            sys.stdout.flush()
+            time.sleep(10)
+    sys.stdout.write("\nEXITING...\n")
+    sys.stdout.flush()
+    sys.exit(-1)
+
+
+def sigINT_handler(signal, frame):
+    sys.stdout.write('Received SIGINT!\n')
+    sys.stdout.flush()
+    sigGEN_handler(signal, frame)
+
+def sigHUP_handler(signal, frame):
+    sys.stdout.write('Received SIGHUP!\n')
+    sys.stdout.flush()
+    sigGEN_handler(signal, frame)
+
+def sigQUIT_handler(signal, frame):
+    sys.stdout.write('Received SIGQUIT!\n')
+    sys.stdout.flush()
+    sigGEN_handler(signal, frame)
+
+def sigABRT_handler(signal, frame):
+    sys.stdout.write('Received SIGABRT!\n')
+    sys.stdout.flush()
+    sigGEN_handler(signal, frame)
+
+def sigTERM_handler(signal, frame):
+    sys.stdout.write('Received SIGTERM!\n')
+    sys.stdout.flush()
+    sigGEN_handler(signal, frame)
+
+def sigSTOP_handler(signal, frame):
+    sys.stdout.write('Received SIGSTOP!\n')
+    sys.stdout.flush()
+    sigGEN_handler(signal, frame)
+
+def sigKILL_handler(signal, frame):
+    sys.stdout.write('Received SIGKILL!\n')
+    sys.stdout.flush()
+    sigGEN_handler(signal, frame)
+
+signal.signal(signal.SIGINT, sigINT_handler)
+signal.signal(signal.SIGHUP, sigHUP_handler)
+signal.signal(signal.SIGQUIT, sigQUIT_handler)
+signal.signal(signal.SIGABRT, sigABRT_handler)
+signal.signal(signal.SIGTERM, sigTERM_handler)
+#signal.signal(signal.SIGSTOP, sigSTOP_handler)
+#signal.signal(signal.SIGKILL, sigKILL_handler)
+
Index: /tags/1.6.0/lang/python/Rappture/test.xml
===================================================================
--- /tags/1.6.0/lang/python/Rappture/test.xml	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/test.xml	(revision 6168)
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <repository>
+            <rappture>
+                <date>$Date: 2007-03-08 15:27:02 -0500 (Thu, 08 Mar 2007) $</date>
+                <revision>$Rev: 613 $</revision>
+                <url>$URL: https://kearneyd@repo.nanohub.org/svn/rappture/trunk/src/core/RpLibrary.cc $</url>
+            </rappture>
+        </repository>
+    </tool>
+    <input>
+        <string id="test">
+            <current>&lt;sdfsfs&gt;sdfs</current>
+        </string>
+        <time>Thu Mar 15 02:03:39 2007 EDT</time>
+        <image>
+            <current>@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==</current>
+        </image>
+    </input>
+</run>
Index: /tags/1.6.0/lang/python/Rappture/test/pyxml_test.py
===================================================================
--- /tags/1.6.0/lang/python/Rappture/test/pyxml_test.py	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/test/pyxml_test.py	(revision 6168)
@@ -0,0 +1,214 @@
+# PyXml Unit Tests
+
+from Rappture import PyXml, RPENC_Z, RPENC_B64, RPENC_ZB64
+from Rappture.encoding import encode, decode, isbinary
+import numpy as np
+
+rx = PyXml('test.xml')
+
+
+def test_input1():
+    global rx
+    temp = rx['input.number(temperature).current'].value
+    assert temp == '300K'
+
+
+def test_input2():
+    global rx
+    temp = rx['input.number(temperature)']
+    assert temp['current'].value == '300K'
+
+
+def test_input2a():
+    global rx
+    temp = rx['input.number(temperature)']
+    assert temp.get('current') == '300K'
+
+
+def test_input2b():
+    global rx
+    temp = rx['input.number(temperature).current']
+    assert temp.value == '300K'
+
+
+def test_input3():
+    global rx
+    inp = rx['input']
+    assert inp['number(temperature).current'].value == '300K'
+
+
+def test_input4():
+    global rx
+    inp = rx['input']
+    temp = inp['number(temperature)']
+    assert temp['current'].value == '300K'
+
+
+def test_input_old1():
+    global rx
+    temp = rx.get('input.number(temperature).current')
+    assert temp == '300K'
+
+
+def test_input_curve():
+    global rx
+    curve = rx['output.curve(f12).component.xy'].value
+    curve = map(int, curve.split())
+    assert curve == [0, 0, 1, 1, 2, 4, 3, 9, 4, 16]
+
+
+def test_output_1():
+    global rx
+    curve = rx['output.curve(temp).component']
+    curve['xy'] = "1 2"
+    assert curve['xy'].value == "1 2"
+
+
+def test_output_2():
+    global rx
+    curve = rx['output.curve(temp).component']
+    curve['xy'] = [[1], [2]]
+    assert curve['xy'].value == "1 2"
+
+
+def test_output_3():
+    global rx
+    curve = rx['output.curve(temp).component']
+    curve['xy'] = [[1.1], [2.2]]
+    assert curve['xy'].value == "1.1 2.2"
+
+
+def test_output_4():
+    global rx
+    curve = rx['output.curve(temp).component']
+    curve['xy'] = ([1], [2])
+    assert curve['xy'].value == "1 2"
+
+
+def test_output_5():
+    global rx
+    curve = rx['output.curve(temp).component']
+    curve['xy'] = [[1, 2, 3], [4, 5, 6]]
+    assert curve['xy'].value == "1 4\n2 5\n3 6"
+
+
+def test_output_6():
+    global rx
+    curve = rx['output.curve(temp).component']
+    curve['xy'] = ([1, 2, 3], [4, 5, 6])
+    assert curve['xy'].value == "1 4\n2 5\n3 6"
+
+
+def test_output_7():
+    global rx
+    curve = rx['output.curve(temp).component']
+    curve['xy'] = ((1, 2, 3), (4, 5, 6))
+    assert curve['xy'].value == "1 4\n2 5\n3 6"
+
+
+def test_output_8():
+    global rx
+    curve = rx['output.curve(temp).component']
+    curve['xy'] = np.row_stack([[1, 2, 3], [4, 5, 6]])
+    assert curve['xy'].value == "1 4 2 5 3 6"
+
+
+def test_output_9():
+    global rx
+    rx.put('output.string(temp).current', 'xyzzy')
+    assert rx['output.string(temp).current'].value == "xyzzy"
+
+
+def test_output_10():
+    global rx
+    data = rx['output.string(temp)']
+    data.put('current', 'xyzzy')
+    assert rx['output.string(temp).current'].value == "xyzzy"
+
+
+def test_output_11():
+    global rx
+    data = rx['output.string(temp)']
+    data.put('current', 'xyzzy')
+    assert data['current'].value == "xyzzy"
+
+
+def test_output_12():
+    global rx
+    data = rx['output.string(temp)']
+    data.put('current', 'xyzzy', compress=True)
+    assert data['current'].value == "xyzzy"
+
+
+def test_output_13():
+    global rx
+    data = rx['output.string(temp)']
+    data.put('current', 'results.txt', type='file')
+    assert data['current'].value == "These are the results of our test.\n"
+
+
+def test_output_14():
+    global rx
+    data = rx['output.string(temp)']
+    data.put('current', 'results.txt', type='file', compress=True)
+    assert data['current'].value == "These are the results of our test.\n"
+
+
+def test_encode_decode_Z():
+    instr = "foobar\n012\0"
+    x = encode(instr, RPENC_Z)
+    outstr = decode(x, 0)
+    assert instr == outstr
+
+
+def test_encode_decode_B64():
+    instr = "foobar\n012\0"
+    x = encode(instr, RPENC_B64)
+    outstr = decode(x, 0)
+    assert instr == outstr
+
+
+def test_encode_decode_ZB64():
+    instr = "foobar\n012\0"
+    x = encode(instr, RPENC_ZB64)
+    outstr = decode(x, 0)
+    assert instr == outstr
+
+
+def test_isbinary_1():
+    instr = "foobar\n012\0"
+    assert isbinary(instr) == True
+
+
+def test_isbinary_2():
+    instr = "foobar\n"
+    assert isbinary(instr) == False
+
+
+def test_name0():
+    global rx
+    path = ''
+    data = rx[path]
+    assert data.name == path
+
+
+def test_name1():
+    global rx
+    path = ''
+    data = rx
+    assert data.name == path
+
+
+def test_name2():
+    global rx
+    path = 'output.string(temp)'
+    data = rx[path]
+    assert data.name == path
+
+
+def test_name3():
+    global rx
+    path = 'output.string(temp)'
+    out = rx['output']
+    assert out['string(temp)'].name == path
+
Index: /tags/1.6.0/lang/python/Rappture/test/results.txt
===================================================================
--- /tags/1.6.0/lang/python/Rappture/test/results.txt	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/test/results.txt	(revision 6168)
@@ -0,0 +1,1 @@
+These are the results of our test.
Index: /tags/1.6.0/lang/python/Rappture/test/test.xml
===================================================================
--- /tags/1.6.0/lang/python/Rappture/test/test.xml	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/test/test.xml	(revision 6168)
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>python @tool/fermi.py @driver</command>
+        <version>
+            <rappture>
+                <language>python</language>
+                <version>1.3</version>
+                <revision>4960M</revision>
+                <modified>$LastChangedDate: 2014-03-11 12:20:33 -0400 (Tue, 11 Mar 2014) $</modified>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+            <current>300K</current>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0 0 1 1 2 4 3 9 4 16</xy>
+            </component>
+        </curve>
+        <time>Sun Feb  8 00:11:27 2015 EST</time>
+        <status>ok</status>
+        <user>mmh</user>
+        <host/>
+        <walltime>0.021388</walltime>
+        <cputime>0.021129</cputime>
+    </output>
+</run>
+
Index: /tags/1.6.0/lang/python/Rappture/tools.py
===================================================================
--- /tags/1.6.0/lang/python/Rappture/tools.py	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/tools.py	(revision 6168)
@@ -0,0 +1,203 @@
+# ----------------------------------------------------------------------
+#
+# ======================================================================
+#  AUTHOR:  Derrick S. Kearney, Purdue University
+#  AUTHOR:  Steve Clark, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+# ======================================================================
+
+import sys
+import os
+import re
+import subprocess
+import shlex
+import select
+import signal
+import traceback
+import time
+
+commandPid = 0
+
+def sig_handler(signalType, frame):
+    global commandPid
+    if commandPid:
+        os.kill(commandPid,signal.SIGTERM)
+
+
+def executeCommand(command,
+                   stdin=None,
+                   streamOutput=False):
+    global commandPid
+
+    exitStatus = 0
+    fpStdin = None
+    outData = []
+    errData = []
+
+    try:
+       sig_INT_handler = signal.signal(signal.SIGINT,sig_handler)
+       sig_HUP_handler = signal.signal(signal.SIGHUP,sig_handler)
+       sig_TERM_handler = signal.signal(signal.SIGTERM,sig_handler)
+    except ValueError:
+#      happens when used in a thread
+       pass
+    except:
+       print traceback.format_exc()
+
+    if stdin == None:
+       commandStdin = None
+    else:
+       if   isinstance(stdin,file):
+          commandStdin = stdin
+       elif isinstance(stdin,int):
+          commandStdin = stdin
+       else:
+          try:
+             stdinPath = str(stdin)
+          except UnicodeEncodeError:
+             try:
+                stdinPath = unicode(stdin).encode('unicode_escape')
+             except:
+                stdinPath = None
+          except:
+             stdinPath = None
+          if stdinPath:
+             if os.path.isfile(stdinPath):
+                try:
+                   fpStdin = open(stdinPath,'r')
+                except (IOError,OSError):
+                   exitStatus = 1
+                   errData.append("File %s could not be opened.\n" % (stdinPath))
+                   if streamOutput:
+                      sys.stderr.write("File %s could not be opened.\n" % (stdinPath))
+                      sys.stderr.flush()
+                else:
+                   commandStdin = fpStdin
+             else:
+                exitStatus = 1
+                errData.append("File %s does not exist.\n" % (stdinPath))
+                if streamOutput:
+                   sys.stderr.write("File %s does not exist.\n" % (stdinPath))
+                   sys.stderr.flush()
+          else:
+             exitStatus = 1
+             errData.append("Bad argument type specified for stdin.\n")
+             if streamOutput:
+                sys.stderr.write("Bad argument type specified for stdin.\n")
+                sys.stderr.flush()
+
+    if not exitStatus:
+       BUFSIZ = 4096
+       if isinstance(command,list):
+          child = subprocess.Popen(command,bufsize=BUFSIZ, \
+                                   stdin=commandStdin, \
+                                   stdout=subprocess.PIPE, \
+                                   stderr=subprocess.PIPE, \
+                                   close_fds=True)
+       else:
+          try:
+             commandStr = str(command)
+          except UnicodeEncodeError:
+             commandStr = unicode(command).encode('unicode_escape')
+          commandArgs = shlex.split(commandStr)
+          child = subprocess.Popen(commandArgs,bufsize=BUFSIZ, \
+                                   stdin=commandStdin, \
+                                   stdout=subprocess.PIPE, \
+                                   stderr=subprocess.PIPE, \
+                                   close_fds=True)
+       commandPid = child.pid
+       childout   = child.stdout
+       childoutFd = childout.fileno()
+       childerr   = child.stderr
+       childerrFd = childerr.fileno()
+
+       outEOF = False
+       errEOF = False
+
+       while True:
+           toCheck = []
+           if not outEOF:
+               toCheck.append(childoutFd)
+           if not errEOF:
+               toCheck.append(childerrFd)
+           try:
+               readyRead,readyWrite,readyException = select.select(toCheck,[],[]) # wait for input
+           except select.error,err:
+               readyRead = []
+               readyWrite = []
+               readyException = []
+           if childoutFd in readyRead:
+               outChunk = os.read(childoutFd,BUFSIZ)
+               if outChunk == '':
+                   outEOF = True
+               outData.append(outChunk)
+               if streamOutput:
+                   sys.stdout.write(outChunk)
+                   sys.stdout.flush()
+
+           if childerrFd in readyRead:
+               errChunk = os.read(childerrFd,BUFSIZ)
+               if errChunk == '':
+                   errEOF = True
+               errData.append(errChunk)
+               if streamOutput:
+                   sys.stderr.write(errChunk)
+                   sys.stderr.flush()
+
+           if outEOF and errEOF:
+               break
+
+       pid,exitStatus = os.waitpid(commandPid,0)
+       commandPid = 0
+       if fpStdin:
+          try:
+             fpStdin.close()
+          except:
+             pass
+
+       try:
+          signal.signal(signal.SIGINT,sig_INT_handler)
+          signal.signal(signal.SIGHUP,sig_HUP_handler)
+          signal.signal(signal.SIGTERM,sig_TERM_handler)
+       except UnboundLocalError:
+   #      happens when used in a thread
+          pass
+       except:
+          print traceback.format_exc()
+
+       if exitStatus != 0:
+           if   os.WIFSIGNALED(exitStatus):
+              sys.stderr.write("%s failed w/ signal %d\n" % (command,os.WTERMSIG(exitStatus)))
+           else:
+              if os.WIFEXITED(exitStatus):
+                  exitStatus = os.WEXITSTATUS(exitStatus)
+              sys.stderr.write("%s failed w/ exit code %d\n" % (command,exitStatus))
+           if not streamOutput:
+              sys.stderr.write("%s\n" % ("".join(errData)))
+
+    return exitStatus,"".join(outData),"".join(errData)
+
+
+def getCommandOutput(command,
+                     streamOutput=False):
+    exitStatus,stdOut,stdErr = executeCommand(command,
+                                              streamOutput=streamOutput)
+
+    return exitStatus,stdOut,stdErr
+
+
+def getDriverNumber(driverFileName):
+    driverNumRslt = re.search(r'[0-9]+',os.path.split(driverFileName)[1])
+    if driverNumRslt == None:
+        return None
+    return driverNumRslt.group()
+
+
+def writeFile(fileName,text):
+    file_object = open(fileName, "w")
+    if file_object:
+        file_object.write(text)
+        file_object.close()
+    else:
+        raise RuntimeError, 'could not open %s for writing' % (fileName)
+
Index: /tags/1.6.0/lang/python/Rappture/unittest_library.py
===================================================================
--- /tags/1.6.0/lang/python/Rappture/unittest_library.py	(revision 6168)
+++ /tags/1.6.0/lang/python/Rappture/unittest_library.py	(revision 6168)
@@ -0,0 +1,559 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: library unit test - provides tests for Rappture Library
+#
+#  Unit tests for the python bindings of Rappture's Library module
+# ======================================================================
+#  AUTHOR:  Derrick S. Kearney, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+import unittest
+import Rappture
+
+class CopyTests(unittest.TestCase):
+
+    def setUp(self):
+        self.lib  = Rappture.library("test.xml")
+        self.lib2 = Rappture.library("test.xml")
+        # self.lib3 = Rappture.library()
+
+    def tearDown(self):
+        return
+
+    # def testArguments_UninitializedLib(self):
+    #     print self.lib3.xml()
+    #     self.assertRaises(RuntimeError,self.lib.copy,"input","output",self.lib3)
+
+    def testArguments_TooMaryArgs(self):
+        self.assertRaises(TypeError,self.lib.copy,1,2,3,4)
+
+    def testArguments_NotEnoughArgs(self):
+        self.assertRaises(TypeError,self.lib.copy,1)
+
+    def testArguments_ArgsWrongType2(self):
+        self.assertRaises(TypeError,self.lib.copy,1,2)
+
+    def testArguments_ArgsWrongType3(self):
+        self.assertRaises(RuntimeError,self.lib.copy,"input","output",3)
+
+    def testArguments_ToPathRootCopyElement(self):
+        self.lib.copy("","input")
+        self.assertEqual(self.lib.xml(),'''<?xml version="1.0"?>
+<run>
+    <string id="test">
+        <current>&lt;sdfsfs&gt;sdfs</current>
+    </string>
+    <time>Thu Mar 15 02:03:39 2007 EDT</time>
+    <image>
+        <current>@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==</current>
+    </image>
+</run>
+''')
+
+    def testArguments_ToPathRootCopyContents(self):
+        self.lib.copy("","input.time")
+        self.assertEqual(self.lib.xml(),'''<?xml version="1.0"?>
+<run>Thu Mar 15 02:03:39 2007 EDT</run>
+''')
+
+    def testArguments_ToPathElementCopyContents(self):
+        self.lib.copy("output","input.time")
+        self.assertEqual(self.lib.xml(),'''<?xml version="1.0"?>
+<run>
+    <tool>
+        <repository>
+            <rappture>
+                <date>$Date: 2007-03-08 15:27:02 -0500 (Thu, 08 Mar 2007) $</date>
+                <revision>$Rev: 613 $</revision>
+                <url>$URL: https://kearneyd@repo.nanohub.org/svn/rappture/trunk/src/core/RpLibrary.cc $</url>
+            </rappture>
+        </repository>
+    </tool>
+    <input>
+        <string id="test">
+            <current>&lt;sdfsfs&gt;sdfs</current>
+        </string>
+        <time>Thu Mar 15 02:03:39 2007 EDT</time>
+        <image>
+            <current>@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==</current>
+        </image>
+    </input>
+    <output>Thu Mar 15 02:03:39 2007 EDT</output>
+</run>
+''')
+
+    def testArguments_ToPathElementCopyElementsFromLib2(self):
+        self.lib.copy("lib2input","input",self.lib2)
+        self.assertEqual(self.lib.xml(),'''<?xml version="1.0"?>
+<run>
+    <tool>
+        <repository>
+            <rappture>
+                <date>$Date: 2007-03-08 15:27:02 -0500 (Thu, 08 Mar 2007) $</date>
+                <revision>$Rev: 613 $</revision>
+                <url>$URL: https://kearneyd@repo.nanohub.org/svn/rappture/trunk/src/core/RpLibrary.cc $</url>
+            </rappture>
+        </repository>
+    </tool>
+    <input>
+        <string id="test">
+            <current>&lt;sdfsfs&gt;sdfs</current>
+        </string>
+        <time>Thu Mar 15 02:03:39 2007 EDT</time>
+        <image>
+            <current>@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==</current>
+        </image>
+    </input>
+    <lib2input>
+        <string id="test">
+            <current>&lt;sdfsfs&gt;sdfs</current>
+        </string>
+        <time>Thu Mar 15 02:03:39 2007 EDT</time>
+        <image>
+            <current>@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==</current>
+        </image>
+    </lib2input>
+</run>
+''')
+
+#    def testToPathRootCopyElementsFromElementObj(self):
+#        e = self.lib.element("input.string",as="object")
+#        self.lib.copy("","",e)
+#        self.assertEqual(self.lib.xml(),'''<?xml version="1.0"?>
+#<run>
+#    <current>&lt;sdfsfs&gt;sdfs</current>
+#</run>
+#''')
+
+#    def testToPathRootIdCopyElementsFromElementObj(self):
+#        e = self.lib.element("input.string",as="object")
+#        self.lib.copy("(qqq)","",e)
+#        self.assertEqual(self.lib.xml(),'''<?xml version="1.0"?>
+#<run>
+#    <current>&lt;sdfsfs&gt;sdfs</current>
+#</run>
+#''')
+
+    def testToPathId(self):
+        e = self.lib.element("input.string", type="object")
+        self.lib.copy("estring(qqq)","",e)
+        self.assertEqual(self.lib.xml(),'''<?xml version="1.0"?>
+<run>
+    <tool>
+        <repository>
+            <rappture>
+                <date>$Date: 2007-03-08 15:27:02 -0500 (Thu, 08 Mar 2007) $</date>
+                <revision>$Rev: 613 $</revision>
+                <url>$URL: https://kearneyd@repo.nanohub.org/svn/rappture/trunk/src/core/RpLibrary.cc $</url>
+            </rappture>
+        </repository>
+    </tool>
+    <input>
+        <string id="test">
+            <current>&lt;sdfsfs&gt;sdfs</current>
+        </string>
+        <time>Thu Mar 15 02:03:39 2007 EDT</time>
+        <image>
+            <current>@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==</current>
+        </image>
+    </input>
+    <estring id="qqq">
+        <current>&lt;sdfsfs&gt;sdfs</current>
+    </estring>
+</run>
+''')
+
+    def testToPathNoIdFromPathId(self):
+        e = self.lib.element("input.string",type="object")
+        self.lib.copy("estring","",e)
+        self.assertEqual(self.lib.xml(),'''<?xml version="1.0"?>
+<run>
+    <tool>
+        <repository>
+            <rappture>
+                <date>$Date: 2007-03-08 15:27:02 -0500 (Thu, 08 Mar 2007) $</date>
+                <revision>$Rev: 613 $</revision>
+                <url>$URL: https://kearneyd@repo.nanohub.org/svn/rappture/trunk/src/core/RpLibrary.cc $</url>
+            </rappture>
+        </repository>
+    </tool>
+    <input>
+        <string id="test">
+            <current>&lt;sdfsfs&gt;sdfs</current>
+        </string>
+        <time>Thu Mar 15 02:03:39 2007 EDT</time>
+        <image>
+            <current>@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==</current>
+        </image>
+    </input>
+    <estring>
+        <current>&lt;sdfsfs&gt;sdfs</current>
+    </estring>
+</run>
+''')
+
+class ElementTests(unittest.TestCase):
+
+    def setUp(self):
+        self.lib = Rappture.library("test.xml")
+
+    def tearDown(self):
+        return
+
+    def testArguments_TooMaryArgs(self):
+        self.assertRaises(TypeError,self.lib.element,1,2,3,4)
+
+    def testArguments_ArgsWrongType2(self):
+        self.assertRaises(TypeError,self.lib.element,1,2)
+
+    def testArguments_NoArgs(self):
+        ele = self.lib.element()
+        self.assertEqual(type(ele),type(self.lib))
+
+    def testArguments_PathArg(self):
+        ele = self.lib.element("tool.repository")
+        self.assertEqual(type(ele),type(self.lib))
+
+    def testArguments_TwoArgs(self):
+        ele = self.lib.element("input.string","component")
+        self.assertEqual(ele,"string(test)")
+
+    def testArguments_TwoKeywordArgs(self):
+        ele = self.lib.element(path="input.string",type="path")
+        self.assertEqual(ele,"input.string(test)")
+
+    def testArguments_AsKeywordArgs(self):
+        ele = self.lib.element("input.string",type="type")
+        self.assertEqual(ele,"string")
+
+    def testArguments_AsId(self):
+        ele = self.lib.element(path="input.string",type="id")
+        self.assertEqual(ele,"test")
+
+    def testArguments_UnrecognizedAs(self):
+        self.assertRaises(ValueError,self.lib.element,"input.string","blahh")
+
+class GetTests(unittest.TestCase):
+
+    def setUp(self):
+        self.lib = Rappture.library("test.xml")
+
+    def tearDown(self):
+        return
+
+    def testArguments_TooMaryArgs(self):
+        self.assertRaises(TypeError,self.lib.get,1,2,3,4)
+
+    def testArguments_ArgsWrongType2(self):
+        self.assertRaises(TypeError,self.lib.get,1,2)
+
+    def testArgumentBlank(self):
+        self.assertEqual(self.lib.get(),"")
+
+    def testArgumentPath(self):
+        self.assertEqual(self.lib.get("input.time"),"Thu Mar 15 02:03:39 2007 EDT")
+
+    def testArgumentDecode(self):
+        # grabs the decoded binary data
+        self.assertEqual(self.lib.get("input.image.current"),"\x47\x49\x46\x38\x39\x61\x1a\x00\x12\x00\xa1\x01\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\xfe\x15\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\x00\x01\x00\x2c\x00\x00\x00\x00\x1a\x00\x12\x00\x00\x02\x2e\x8c\x8f\xa9\xcb\xed\x0f\xc0\x91\x8f\xc5\x59\xad\x8c\x3c\x87\xfb\x51\x9f\x67\x80\xe0\x48\x9a\xa2\xc6\xb5\xaa\xdb\x42\xd4\x49\x96\xf3\x5a\xab\xb5\xb6\x2f\x74\x6f\x03\x0a\x87\x44\x45\x01\x00\x3b")
+
+    def testArgumentDecodeYes(self):
+        # grabs the decoded binary data
+        self.assertEqual(self.lib.get("input.image.current", decode="yes"),"\x47\x49\x46\x38\x39\x61\x1a\x00\x12\x00\xa1\x01\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\xfe\x15\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\x00\x01\x00\x2c\x00\x00\x00\x00\x1a\x00\x12\x00\x00\x02\x2e\x8c\x8f\xa9\xcb\xed\x0f\xc0\x91\x8f\xc5\x59\xad\x8c\x3c\x87\xfb\x51\x9f\x67\x80\xe0\x48\x9a\xa2\xc6\xb5\xaa\xdb\x42\xd4\x49\x96\xf3\x5a\xab\xb5\xb6\x2f\x74\x6f\x03\x0a\x87\x44\x45\x01\x00\x3b")
+
+    def testArgumentDecodeTrue(self):
+        # grabs the decoded binary data
+        self.assertEqual(self.lib.get("input.image.current", decode="true"),"\x47\x49\x46\x38\x39\x61\x1a\x00\x12\x00\xa1\x01\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\xfe\x15\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\x00\x01\x00\x2c\x00\x00\x00\x00\x1a\x00\x12\x00\x00\x02\x2e\x8c\x8f\xa9\xcb\xed\x0f\xc0\x91\x8f\xc5\x59\xad\x8c\x3c\x87\xfb\x51\x9f\x67\x80\xe0\x48\x9a\xa2\xc6\xb5\xaa\xdb\x42\xd4\x49\x96\xf3\x5a\xab\xb5\xb6\x2f\x74\x6f\x03\x0a\x87\x44\x45\x01\x00\x3b")
+
+    def testArgumentDecodeOn(self):
+        # grabs the decoded binary data
+        self.assertEqual(self.lib.get("input.image.current", decode="on"),"\x47\x49\x46\x38\x39\x61\x1a\x00\x12\x00\xa1\x01\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\xfe\x15\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\x00\x01\x00\x2c\x00\x00\x00\x00\x1a\x00\x12\x00\x00\x02\x2e\x8c\x8f\xa9\xcb\xed\x0f\xc0\x91\x8f\xc5\x59\xad\x8c\x3c\x87\xfb\x51\x9f\x67\x80\xe0\x48\x9a\xa2\xc6\xb5\xaa\xdb\x42\xd4\x49\x96\xf3\x5a\xab\xb5\xb6\x2f\x74\x6f\x03\x0a\x87\x44\x45\x01\x00\x3b")
+
+    def testArgumentDecode1Str(self):
+        # grabs the decoded binary data
+        self.assertEqual(self.lib.get("input.image.current", decode="1"),"\x47\x49\x46\x38\x39\x61\x1a\x00\x12\x00\xa1\x01\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\xfe\x15\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\x00\x01\x00\x2c\x00\x00\x00\x00\x1a\x00\x12\x00\x00\x02\x2e\x8c\x8f\xa9\xcb\xed\x0f\xc0\x91\x8f\xc5\x59\xad\x8c\x3c\x87\xfb\x51\x9f\x67\x80\xe0\x48\x9a\xa2\xc6\xb5\xaa\xdb\x42\xd4\x49\x96\xf3\x5a\xab\xb5\xb6\x2f\x74\x6f\x03\x0a\x87\x44\x45\x01\x00\x3b")
+
+    def testArgumentDecode1Int(self):
+        # grabs the decoded binary data
+        self.assertEqual(self.lib.get("input.image.current", decode=1),"\x47\x49\x46\x38\x39\x61\x1a\x00\x12\x00\xa1\x01\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\xfe\x15\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\x00\x01\x00\x2c\x00\x00\x00\x00\x1a\x00\x12\x00\x00\x02\x2e\x8c\x8f\xa9\xcb\xed\x0f\xc0\x91\x8f\xc5\x59\xad\x8c\x3c\x87\xfb\x51\x9f\x67\x80\xe0\x48\x9a\xa2\xc6\xb5\xaa\xdb\x42\xd4\x49\x96\xf3\x5a\xab\xb5\xb6\x2f\x74\x6f\x03\x0a\x87\x44\x45\x01\x00\x3b")
+
+    def testArgumentNoDecodeNo(self):
+        # grabs the undecoded data
+        self.assertEqual(self.lib.get("input.image.current", decode="no"),"""@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==""")
+
+    def testArgumentNoDecodeFalse(self):
+        # grabs the undecoded data
+        self.assertEqual(self.lib.get("input.image.current", decode="FalSe"),"""@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==""")
+
+    def testArgumentNoDecodeOff(self):
+        # grabs the undecoded data
+        self.assertEqual(self.lib.get("input.image.current", decode="OFF"),"""@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==""")
+
+    def testArgumentNoDecode0Str(self):
+        # grabs the undecoded data
+        self.assertEqual(self.lib.get("input.image.current", decode="0"),"""@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==""")
+
+    def testArgumentNoDecode0Int(self):
+        # grabs the undecoded data
+        self.assertEqual(self.lib.get("input.image.current", decode=0),"""@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==""")
+
+    def testArgumentDecodeError(self):
+        self.assertRaises(ValueError,self.lib.get,"input.image.current","blahh")
+
+#    def testGetEncodedData(self):
+#
+#        self.assertEqual()
+
+class PutTests(unittest.TestCase):
+
+    def setUp(self):
+        self.lib = Rappture.library("test.xml")
+
+    def tearDown(self):
+        return
+
+    def testArguments_TooMaryArgs(self):
+        self.assertRaises(TypeError,self.lib.put,1,2,3,4,5,6,7)
+
+    def testArguments_NotEnoughArgs(self):
+        self.assertRaises(TypeError,self.lib.put,1)
+
+    def testArguments_ArgsWrongType2(self):
+        self.assertRaises(TypeError,self.lib.put,1,2)
+
+    def testArguments_ValueIsNone(self):
+        self.lib.put("input.none",None)
+        self.assertEqual(self.lib.get("input.none"),"None")
+
+    def testArgumentAppendValError(self):
+        self.assertRaises(ValueError,self.lib.put,"output.blah","val","","blahhhh")
+
+    def testArgumentCompressValError(self):
+        self.assertRaises(ValueError,self.lib.put,"output.blah","vl","","no","","blh")
+
+    def testArgumentBlank(self):
+        self.assertRaises(TypeError,self.lib.put,None)
+
+    def testArgumentPathValue(self):
+        self.lib.put("output.string","43eV")
+        self.assertEqual(self.lib.get("output.string"),"43eV")
+
+    def testArgumentPathValueIdAppendTypeCompress(self):
+        self.lib.put("output.string","43eV","id",0,"string",0)
+        self.assertEqual(self.lib.get("output.string"),"43eV")
+
+    def testArgumentCheckId(self):
+        # this test checks that the id argument is no longer in use
+        self.lib.put("output.string","43eV","id",0,"string",0)
+        self.assertEqual(self.lib.get("output.string(id)"),"")
+
+    def testArgumentAllNamedArgs(self):
+        self.lib.put(path="output.string",value="43eV",id="id",append=0,type="string",compress=0)
+        self.assertEqual(self.lib.get("output.string"),"43eV")
+
+    def testArgumentCheckAppend(self):
+        self.lib.put("input.string.current","43eV",append=1)
+        self.assertEqual(self.lib.get("input.string.current"),"&lt;sdfsfs&gt;sdfs43eV")
+
+    def testArgumentCheckAppendYes(self):
+        self.lib.put("input.string.current","43eV",append="yes")
+        self.assertEqual(self.lib.get("input.string.current"),"&lt;sdfsfs&gt;sdfs43eV")
+
+    def testArgumentCheckTypeStringCompressYes(self):
+        self.lib.put("input.string.current","43eV",type="string",compress="yes")
+        self.assertEqual(self.lib.get("input.string.current",decode=False),\
+"""@@RP-ENC:zb64
+H4sIAAAAAAAAAzMxTg0DAACAouIEAAAA
+""")
+
+    def testArgumentCheckTypeFile(self):
+        self.lib.put("output.file","test.xml",type="file")
+        self.assertEqual(self.lib.get("output.file"),"""<?xml version="1.0"?>
+<run>
+    <tool>
+        <repository>
+            <rappture>
+                <date>$Date: 2007-03-08 15:27:02 -0500 (Thu, 08 Mar 2007) $</date>
+                <revision>$Rev: 613 $</revision>
+                <url>$URL: https://kearneyd@repo.nanohub.org/svn/rappture/trunk/src/core/RpLibrary.cc $</url>
+            </rappture>
+        </repository>
+    </tool>
+    <input>
+        <string id="test">
+            <current>&lt;sdfsfs&gt;sdfs</current>
+        </string>
+        <time>Thu Mar 15 02:03:39 2007 EDT</time>
+        <image>
+            <current>@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==</current>
+        </image>
+    </input>
+</run>
+""")
+
+    def testArgumentCheckTypeFileCompressTrue(self):
+        self.lib.put("output.file","test.xml",type="file",compress=True)
+        self.assertEqual(self.lib.get("output.file"),"""<?xml version="1.0"?>
+<run>
+    <tool>
+        <repository>
+            <rappture>
+                <date>$Date: 2007-03-08 15:27:02 -0500 (Thu, 08 Mar 2007) $</date>
+                <revision>$Rev: 613 $</revision>
+                <url>$URL: https://kearneyd@repo.nanohub.org/svn/rappture/trunk/src/core/RpLibrary.cc $</url>
+            </rappture>
+        </repository>
+    </tool>
+    <input>
+        <string id="test">
+            <current><sdfsfs>sdfs</current>
+        </string>
+        <time>Thu Mar 15 02:03:39 2007 EDT</time>
+        <image>
+            <current>@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==</current>
+        </image>
+    </input>
+</run>
+""")
+
+    def testArgumentCheckTypeFileCompressTrueNoDecode(self):
+        self.lib.put("output.file","test.xml",type="file",compress=True)
+        self.assertEqual(self.lib.get("output.file",decode=False),"""@@RP-ENC:zb64
+H4sIAAAAAAAAA3VTXW/aMBR951dYCFWbOrATSptlIcUkKZXGKGTNUHkziZtkDXGwnbD8++VD
+HTC2+2D5nnvP/TiWjftfuwQUlIuYpeOuMkDde7Nj8Dw1O6AyQzKWtNfG5TRjIpaMl0ewDZAs
+kzmn53ATCoikZs+uTh2oCN310bCPNKCMdPVORyrooxFC4MNzlH8CFf6N8CbtI+gZsOFeluS0
+iOuJzZ5LCx3cKsM6+Q96Sch5YvY8d66DSMpM6BC+UcJTWgaTeqVBSlIW5dsB4yEURQrf14Gy
+kuINCu5Dn1Wum83jLSe8HPh+3bKuey4EvFSinuxcNgMedTXiNMvlSbaQPE5DEAfjrqRCdv9q
+4Oec01SaV4n8IoJX8SquwvZmwPfYSeu22gki4x01K7EboZURQKqOhvrwcyM6cOznarg65ciI
+dySk/5liMnGXfWdh6dvbm46LktmTnUSzEH/HX50prm0Jj1Y+Xj94i3KzfkCb9SoM1AQRa+qR
+mRdW3IWHcXS9Wk2tEE872Do0/KYYxtaclcu9X0hbs9yf2o8NfzloEZRuqlJ848SECaLspbQU
+Z7fWlD2X25cimGm2xQKn464c/HQYj/8p0cl+ldO+RvVm9R/4DWcyEdUgAwAA
+""")
+
+    def testArgumentCheckTypeError(self):
+        self.assertRaises(ValueError,self.lib.put,"output.file","vl","","","type","")
+
+    def testPutObject(self):
+        e = self.lib.element("input.string",type="object")
+        self.lib.put("output.estring(qqq)",e)
+        self.assertEqual(self.lib.get("output.estring(qqq).current"),'<sdfsfs>sdfs')
+
+class XmlTests(unittest.TestCase):
+
+    def setUp(self):
+        self.lib = Rappture.library("test.xml")
+
+    def tearDown(self):
+        return
+
+    def testArguments_NoArgs(self):
+        xml = self.lib.xml()
+        self.assertEqual(xml,'''<?xml version="1.0"?>
+<run>
+    <tool>
+        <repository>
+            <rappture>
+                <date>$Date: 2007-03-08 15:27:02 -0500 (Thu, 08 Mar 2007) $</date>
+                <revision>$Rev: 613 $</revision>
+                <url>$URL: https://kearneyd@repo.nanohub.org/svn/rappture/trunk/src/core/RpLibrary.cc $</url>
+            </rappture>
+        </repository>
+    </tool>
+    <input>
+        <string id="test">
+            <current>&lt;sdfsfs&gt;sdfs</current>
+        </string>
+        <time>Thu Mar 15 02:03:39 2007 EDT</time>
+        <image>
+            <current>@@RP-ENC:b64
+R0lGODlhGgASAKEBAAAAAP///////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgAB
+ACwAAAAAGgASAAACLoyPqcvtD8CRj8VZrYw8h/tRn2eA4Eiaosa1qttC1EmW81qrtbYvdG8DCodE
+RQEAOw==</current>
+        </image>
+    </input>
+</run>
+''')
+
+    def testArguments_Args(self):
+        self.assertRaises(TypeError,self.lib.xml,"arg1")
+
+class ResultTests(unittest.TestCase):
+
+    class redirectedOutput:
+        # this class doesn't work yet
+        # the stdout from the c++ result function is not
+        # sent through python's sys.stdout
+        def write(self,text):
+            import re
+            pattern = re.compile('run\d+\.xml')
+            match = pattern.search(text)
+            if not match == None:
+                checkFile(match.group())
+        def checkFile(filename):
+            lib2 = Rappture.library(filename)
+            self.assertEqual(self.lib.xml(),lib2.xml())
+
+    def setUp(self):
+        self.lib = Rappture.library("test.xml")
+
+    def tearDown(self):
+        return
+
+# tests commented out because i dont like to keep deleting the files they create
+#    def testArguments_NoArgs(self):
+#        import sys
+#        sys.stdout = self.redirectedOutput()
+#        self.lib.result()
+#
+#    def testArguments_ValidStatusArg(self):
+#        import sys
+#        sys.stdout = self.redirectedOutput()
+#        self.lib.result(status=0)
+
+    def testArguments_InvalidStatusArg(self):
+        self.assertRaises(TypeError,self.lib.result,"0")
+
+if __name__ == '__main__':
+    unittest.main()
Index: /tags/1.6.0/lang/python/setup.py.in
===================================================================
--- /tags/1.6.0/lang/python/setup.py.in	(revision 6168)
+++ /tags/1.6.0/lang/python/setup.py.in	(revision 6168)
@@ -0,0 +1,49 @@
+from distutils.core import setup, Extension
+
+rp_install_dir = '@prefix@'
+tmpdir = 'build/tmp/'
+srcdir = '@srcdir@/Rappture/'
+incdir = '@srcdir@/../../src/core'
+libdir = '@srcdir@/../../src/core'
+
+library_module = Extension('Rappture.library',
+                           include_dirs = [incdir, '../include'],
+                           sources = [ tmpdir+'PyRpLibrary.cc' ],
+                           library_dirs = [ libdir, '../src' ],
+                           libraries = [ 'rappture' ] )
+
+units_module = Extension('Rappture.Units',
+                         include_dirs = [incdir, '../include'],
+                         sources = [ tmpdir+'PyRpUnits.cc' ],
+                         library_dirs = [ libdir, '../src' ],
+                         libraries = [ 'rappture' ] )
+
+utils_module = Extension('Rappture.Utils',
+                         include_dirs = [ incdir, '../include'],
+                         sources = [ tmpdir+'PyRpUtils.cc' ],
+                         library_dirs = [ libdir, '../src' ],
+                         libraries = [ 'rappture' ] )
+
+encode_module = Extension('Rappture.encoding',
+                          include_dirs = [ incdir, '../include'],
+                          sources = [ tmpdir+'PyRpEncode.cc' ],
+                          library_dirs = [ libdir, '../src' ],
+                          libraries = [ 'rappture' ] )
+
+setup(  name='Rappture',
+        version='0.1',
+        description='Rapid Application Infrastructure library for nanoHUB.org',
+        url='http://www.nanohub.org/',
+        package_dir={ 'Rappture' : srcdir },
+        py_modules=[ 'Rappture.interface',
+                     'Rappture.number',
+                     'Rappture.queue',
+                     'Rappture.signalHandler',
+                     'Rappture.tools',
+                     'Rappture.result',
+                     'Rappture.pyxml'],
+        ext_modules=[ encode_module,
+                      library_module,
+                      units_module,
+                      utils_module ]
+  )
Index: /tags/1.6.0/lang/ruby/Makefile.in
===================================================================
--- /tags/1.6.0/lang/ruby/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/ruby/Makefile.in	(revision 6168)
@@ -0,0 +1,85 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL         = @INSTALL@
+SOEXT           = @SHLIB_SUFFIX@
+
+
+RUBY            = @RUBY@
+RUBY_CPPFLAGS   = @RUBY_CPPFLAGS@
+RUBY_LDFLAGS    = @RUBY_LDFLAGS@
+RUBY_LIBRUBYARG = @RUBY_LIBRUBYARG@
+destdir         = $(libdir)/ruby
+rubydir         = $$RAPPTURE_INSTALL_DIR/lib/ruby
+
+CXX             = @CXX@
+CC              = @CXX@
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD        = @STLIB_LD@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@ 
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@ 
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+
+DEFINES         = -Wall -DRAISE_EXCEPTIONS
+CFLAGS          = @CFLAGS@ @SHLIB_CFLAGS@
+INCLUDES        = -I$(srcdir) \
+		  -I$(srcdir)/../../src/core \
+		  -I$(includedir) \
+		  $(RUBY_CPPFLAGS)
+
+RANLIB          = @RANLIB@
+MKDIR_P         = @MKDIR_P@
+AR              = ar
+VPATH           = $(srcdir)
+RM              = rm -f
+
+CDEBUGFLAGS     = -g -Wall
+
+LIBS            = \
+		-L../../src/core -lrappture \
+		$(RUBY_LIBRUBYARG)
+
+CXX_SWITCHES    = $(CFLAGS) $(CFLAGS_DEBUG) $(INCLUDES) $(DEFINES)
+
+
+OBJS            = \
+		Ruby_Rappture.o
+
+lib             = Rappture$(SOEXT)
+
+all: $(lib) 
+
+$(lib): $(OBJS)
+	$(SHLIB_LD) $(SHLIB_LDFLAGS) -o $@ $(OBJS) \
+		$(LIB_SEARCH_DIRS) $(LIBS) 
+
+.cc.o:
+	$(CXX) $(CXX_SWITCHES) -c $?
+
+install: $(lib) 
+	$(MKDIR_P) -m 0755 $(destdir)
+	$(INSTALL) -m 0555 $(lib) $(destdir)
+
+clean:
+	$(RM) $(lib) $(OBJS)
+
+distclean: clean
+	$(RM) Makefile *~ build.rb 
+
+Makefile.ruby: build.rb
+	$(RUBY) build.rb
+
+old: Makefile.ruby
+	$(MAKE) -f Makefile.ruby all
Index: /tags/1.6.0/lang/ruby/Ruby_Rappture.cc
===================================================================
--- /tags/1.6.0/lang/ruby/Ruby_Rappture.cc	(revision 6168)
+++ /tags/1.6.0/lang/ruby/Ruby_Rappture.cc	(revision 6168)
@@ -0,0 +1,561 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Ruby Rappture Extension Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Benjamin Haley, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+/* This file uses Ruby's C API to create a new Ruby class named Rappture 
+ *  as a wrapper around the Rappture library C++ API. 
+ *
+ * Define RAISE_EXCEPTIONS (see Makefile) to raise Ruby Exceptions on errors.
+ * Without this, those methods which return a Ruby object on success return
+ *  Qnil on errors.  For those methods which return Qnil on either success or 
+ *  failure, there is no way to check for errors without an Exception.
+ */
+
+#include <string>        /* std::string */
+#include <stdlib.h>      /* atof() */
+#include "RpLibrary.h"   /* RpLibrary, Rappture::Buffer */
+#include "RpUtils.h"     /* Rappture::Utils::progress() */
+#include "RpUnits.h"     /* RpUnits::convert() */
+#include "ruby.h"        /* VALUE, rb_*(), Data_*_Struct(), NUM2INT(), 
+                            INT2NUM(), NUM2DBL(), Str2Cstr(), ANYARGS */
+
+#ifndef RSTRING_PTR
+#define RSTRING_PTR(s) (RSTRING(s)->ptr)
+#endif
+#ifndef RSTRING_LEN
+#define RSTRING_LEN(s) (RSTRING(s)->len)
+#endif
+
+/******************************************************************************
+ * File scope variables
+ ******************************************************************************/
+
+
+/* The new Rappture class */
+VALUE classRappture;
+
+
+
+extern "C" void Init_Rappture(void);
+
+static std::string
+GetStdString(VALUE value)
+{
+    VALUE strValue;
+
+    strValue = StringValue(value);
+    return std::string(RSTRING_PTR(strValue), RSTRING_LEN(strValue));
+}
+
+static const char *
+GetString(VALUE value)
+{
+    return StringValuePtr(value);
+}
+
+/******************************************************************************
+ * RbRp_GetString()
+ *
+ * Implement the get() public method of the Rappture class.
+ * Return a Ruby String from the location path in the Rappture object self.
+ *
+ * The original plan was to convert the returned std::string to a Ruby String, 
+ *  then try calling the to_f and to_i methods on the Ruby String, to see if 
+ *  we should return a Float (double) or a Fixnum (integer).  The problem with 
+ *  this approach is that these methods (to_f and to_i) return 0.0 and 0, 
+ *  respectively, on error,  **without raising an Exception**, so there is no 
+ *  way to  distinguish between an error and legitimate zero values.  The user 
+ *  will have to call the appropriate Ruby conversion functions on the returned
+ *  String, for now. 
+ ******************************************************************************/
+
+static VALUE
+RbRp_GetString(VALUE self, VALUE path)
+{
+   RpLibrary *lib;
+   std::string result;
+
+   /* Extract the pointer to the Rappture object, lib, from the Ruby object, 
+      self */
+   Data_Get_Struct(self, RpLibrary, lib);
+
+
+   /* Read the data from path in lib as a C++ std::string. */
+   result = lib->getString(GetStdString(path));
+      
+   /* Return a Ruby VALUE */
+   return rb_str_new(result.c_str(), result.length());
+
+}  /* end RbRp_GetString */
+
+
+
+/******************************************************************************
+ * RbRp_GetData()
+ *
+ * Implement the getdata() public method of the Rappture class.
+ * Return a Ruby String from the location path in the Rappture object self.
+ ******************************************************************************/
+
+static VALUE
+RbRp_GetData(VALUE self, VALUE path)
+{
+   RpLibrary *lib;
+   Rappture::Buffer buf;
+
+   /* Extract the pointer to the Rappture object, lib, from the Ruby object, 
+      self */
+   Data_Get_Struct(self, RpLibrary, lib);
+
+   /* Read the data from path in lib as a C++ std::string. */
+   buf = lib->getData(GetStdString(path));
+      
+   /* Return a Ruby VALUE */
+   return rb_str_new2(buf.bytes());
+
+}  /* end RbRp_GetData */
+
+
+
+/******************************************************************************
+ * RbRp_PutObject()
+ *
+ * Implement the put() public method of the Rappture class.
+ * Put a Ruby String, Float (double), or Fixnum (integer) object into the
+ *  location path in the Rappture object self.
+ * Return Qnil.
+ * On error, if RAISE_EXCEPTIONS is defined, raise a Ruby RuntimeError 
+ *  Exception.
+ ******************************************************************************/
+
+static VALUE
+RbRp_PutObject(VALUE self, VALUE path, VALUE value, VALUE append)
+{
+#ifdef RAISE_EXCEPTIONS
+   /* Get the Ruby ID of the "to_s" method. */
+   ID id_to_s = rb_intern("to_s");
+
+   /* Call the "to_s" method on value to get a Ruby String representation of
+      the value, in case we need to compose an error message below.  The final 
+      argument 0 indicates no further arguments.*/
+   VALUE rbStrName = rb_funcall(value, id_to_s, 0);
+#endif
+
+   RpLibrary *lib;
+   int intVal;
+
+   /* Extract the pointer to the Rappture object, lib, from the Ruby 
+      object, self */
+   Data_Get_Struct(self, RpLibrary, lib);
+
+   /* Check the type of the Ruby object value.  If the type if one we are
+      prepared to handle, call the appropriate put() function.  If the type
+      is unexpected, raise a RuntimeError Exception, if RAISE_EXCEPTIONS is
+      defined.*/ 
+   switch (TYPE(value))
+   {
+      case T_STRING:
+	  /* Read the data from path in lib as a C++ std::string. */
+	  lib->put(GetStdString(path), GetStdString(value), "", 
+		NUM2INT(append));
+         break;
+      case T_FIXNUM:
+         intVal = NUM2INT(value);
+         lib->putData(GetStdString(path), (const char *)&intVal, sizeof(int),
+                      NUM2INT(append));
+         break;
+      case T_FLOAT:
+         lib->put(GetStdString(path), NUM2DBL(value), "", NUM2INT(append));
+         break;
+      default:
+#ifdef RAISE_EXCEPTIONS
+         rb_raise(rb_eRuntimeError, 
+                  "Unable to put object %s to Rappture: unknown type", 
+                  GetString(rbStrName));
+#endif
+         break;
+   }  /* end switch */
+
+   /* Return a Ruby VALUE */
+   return Qnil;
+
+}  /* end RbRp_PutObject */
+
+
+
+/******************************************************************************
+ * RbRp_PutData()
+ *
+ * Implement the putdata() public method of the Rappture class.
+ * Put a Ruby String into the location path in the Rappture object self.
+ * Return Qnil.
+ * On error, if RAISE_EXCEPTIONS is defined, raise a Ruby RuntimeError 
+ *  Exception.
+ ******************************************************************************/
+
+static VALUE
+RbRp_PutData(VALUE self, VALUE path, VALUE value, VALUE append)
+{
+#ifdef RAISE_EXCEPTIONS
+   /* Get the Ruby ID of the "to_s" method. */
+   ID id_to_s = rb_intern("to_s");
+
+   /* Call the "to_s" method on value to get a Ruby String representation of
+      the value, in case we need to compose an error message below.  The final 
+      argument 0 indicates no further arguments.*/
+   VALUE rbStrName = rb_funcall(value, id_to_s, 0);
+#endif
+
+   RpLibrary *lib;
+
+   /* Extract the pointer to the Rappture object, lib, from the Ruby 
+      object, self */
+   Data_Get_Struct(self, RpLibrary, lib);
+
+   if (T_STRING == TYPE(value))
+   {
+       VALUE strValue;
+
+       strValue = StringValue(value);
+       lib->putData(GetStdString(path), 
+		    RSTRING_PTR(strValue), RSTRING_LEN(strValue), 
+		    NUM2INT(append));
+   }
+#ifdef RAISE_EXCEPTIONS
+   else
+   {
+      rb_raise(rb_eRuntimeError, 
+               "Unable to put data \"%s\" to Rappture: unknown type", 
+               GetString(rbStrName));
+   }
+#endif
+
+   /* Return a Ruby VALUE */
+   return Qnil;
+
+}  /* end RbRp_PutData */
+
+
+
+/******************************************************************************
+ * RbRp_PutFile()
+ *
+ * Implement the putfile() public method of the Rappture class.
+ * Put a file into the location path in the Rappture object self.
+ * Return Qnil.
+ * On error, if RAISE_EXCEPTIONS is defined, raise a Ruby RuntimeError 
+ *  Exception.
+ ******************************************************************************/
+
+static VALUE
+RbRp_PutFile(VALUE self, VALUE path, VALUE filename, VALUE append, 
+             VALUE compress)
+{
+#ifdef RAISE_EXCEPTIONS
+   /* Get the Ruby ID of the "to_s" method. */
+   ID id_to_s = rb_intern("to_s");
+
+   /* Call the "to_s" method on value to get a Ruby String representation of
+      the value, in case we need to compose an error message below.  The final 
+      argument 0 indicates no further arguments.*/
+   VALUE rbStrName = rb_funcall(filename, id_to_s, 0);
+#endif
+
+   RpLibrary *lib;
+
+   /* Extract the pointer to the Rappture object, lib, from the Ruby 
+      object, self */
+   Data_Get_Struct(self, RpLibrary, lib);
+
+   if (T_STRING == TYPE(filename))
+   {
+      VALUE ft = rb_const_get(rb_cObject, rb_intern("FileTest")); 
+      ID id_filetest = rb_intern("file?");
+
+      if (Qtrue == rb_funcall(ft, id_filetest, 1, filename))  /* valid filename */
+      {
+         lib->putFile(GetStdString(path), GetStdString(filename), 
+		NUM2INT(compress), NUM2INT(append));
+      }
+#ifdef RAISE_EXCEPTIONS
+      else
+      {
+         rb_raise(rb_eRuntimeError, "%s is not a valid file", 
+                  GetString(rbStrName));
+      }
+#endif
+   }
+#ifdef RAISE_EXCEPTIONS
+   else
+       rb_raise(rb_eRuntimeError, "Bad file name: %s", 
+		GetString(rbStrName));
+#endif
+
+   /* Return a Ruby VALUE */
+   return Qnil;
+
+}  /* end RbRp_PutFile */
+
+
+
+/******************************************************************************
+ * RbRp_Result()
+ *
+ * Implement the result() public method of the Rappture class.
+ * Write the XML of the Rappture object self to disk.
+ * Return Qnil.
+ ******************************************************************************/
+
+static VALUE
+RbRp_Result(VALUE self, VALUE status)
+{
+   RpLibrary *lib;
+
+   /* Extract the pointer to the Rappture object, lib, from the Ruby 
+      object, self */
+   Data_Get_Struct(self, RpLibrary, lib);
+
+   /* Write the Rappture XML to disk. */
+   lib->result(NUM2INT(status));
+
+   /* Return a Ruby VALUE */
+   return Qnil;
+
+}  /* end RbRp_Result */
+
+
+
+/******************************************************************************
+ * RbRp_Xml()
+ *
+ * Impelement the xml() public method of the Rappture class.
+ * Return a Ruby String with the XML of the Rappture object self.
+ * Return Qnil on error, or, if RAISE_EXCEPTIONS is defined, raise a 
+ *  RuntimeError Exception.
+ ******************************************************************************/
+   
+static VALUE
+RbRp_Xml(VALUE self)
+{
+   RpLibrary *lib;
+   std::string str;
+
+   /* Extract the pointer to the Rappture object, lib, from the Ruby 
+      object, self */
+   Data_Get_Struct(self, RpLibrary, lib);
+
+   /* Get the Rappture object's XML */
+   str = lib->xml();
+
+   /* Return a Ruby VALUE */
+   if (str.empty())
+   {
+#ifdef RAISE_EXCEPTIONS
+      rb_raise(rb_eRuntimeError, "Unable to retrieve XML");
+#else
+      return Qnil;
+#endif
+   }
+   else
+      return rb_str_new2(str.c_str());
+
+}  /* end RbRp_Xml */
+
+
+
+/******************************************************************************
+ * RbRp_Progress()
+ *
+ * Implement the progress() public method for the Rappture class.
+ * Write a progress message to stdout, using the Ruby Fixnum percent and the
+ *  Ruby String message.
+ * Return Qnil.
+ ******************************************************************************/
+
+static VALUE
+RbRp_Progress(VALUE self, VALUE percent, VALUE message)
+{
+   /* Note: self is a dummy here */
+
+   /* Write the message */
+    (void)Rappture::Utils::progress(NUM2INT(percent), 
+				    GetString(message));
+
+   /* Return a Ruby VALUE */
+   return Qnil;
+
+}  /* end RbRp_Progress */
+
+
+
+/******************************************************************************
+ * RbRp_Convert()
+ *
+ * Implement the convert() public method for the Rappture class.
+ * Convert the Ruby String fromVal, containing a numeric value and optional
+ *  units, to the units specified by the Ruby String toUnitsName.
+ * If the Ruby Fixnum showUnits is 1, return a Ruby String with units appended,
+ *  else return a Ruby Float (double).
+ * On error, return Qnil, or, if RAISE_EXCEPTIONS is defined, raise a 
+ *  RuntimeError Exception.
+ ******************************************************************************/
+
+static VALUE
+RbRp_Convert(VALUE self, VALUE fromVal, VALUE toUnitsName, VALUE showUnits) 
+{
+   VALUE retVal = Qnil;
+   std::string strRetVal;
+   int result;
+
+   /* Convert */
+   strRetVal = RpUnits::convert(GetStdString(fromVal), 
+		GetStdString(toUnitsName), NUM2INT(showUnits), &result);
+   /* Return value */
+   if (0 == result)
+   {
+      const char *retCStr = strRetVal.c_str();
+
+      if (NUM2INT(showUnits))  /* Ruby String */
+         retVal = rb_str_new2(retCStr);
+      else                     /* Ruby Float */
+         retVal = rb_float_new(atof(retCStr));
+   }
+#ifdef RAISE_EXCEPTIONS
+   else
+      rb_raise(rb_eRuntimeError, "Unable to convert \"%s\" to \"%s\"", 
+               GetString(fromVal), GetString(toUnitsName));
+#endif
+   return retVal;
+
+}  /* end RbRp_Convert */
+
+
+
+/******************************************************************************
+ * RbRp_Delete()
+ *
+ * Implement the destructor for the Rappture class.
+ * This function is registered with Ruby's garbage collector, which requires
+ *  the void * argument.
+ ******************************************************************************/
+   
+static void
+RbRp_Delete(void *ptr)
+{
+   delete ((RpLibrary *)ptr);
+
+}  /* end RbRp_Delete */
+
+
+
+/******************************************************************************
+ * RbRp_Init()
+ *
+ * Implement the initialize method, called from the new() method, for the 
+ *  Rappture class.
+ * Set the instance variable @driver (the name of the driver XML file).
+ * Return self.
+ ******************************************************************************/
+
+static VALUE
+RbRp_Init(VALUE self, VALUE driver)
+{
+   /* Set instance variable */
+   rb_iv_set(self, "@driver", driver);
+
+   /* Return a Ruby VALUE */
+   return self;
+
+}  /* end RbRp_Init */
+
+
+
+/******************************************************************************
+ * RbRp_New()
+ *
+ * Implement the new() method for the Rappture class.
+ * Create a Rappture I/O object from the XML file driver.
+ * Create a new Ruby object.
+ * Associate the Rappture object and the Ruby object with the class value 
+ *  classval, and garbage collection functions (mark and sweep).
+ * Pass driver to the initialize method.
+ * Return the new Ruby object.
+ * Note this method is not static.
+ ******************************************************************************/
+
+VALUE
+RbRp_New(VALUE classval, VALUE driver)
+{
+   /* Create the Rappture object from the XML driver file. */
+   RpLibrary *lib = new RpLibrary(GetStdString(driver));
+      
+   /* Data_Wrap_Struct() creates a new Ruby object which associates the
+      Rappture object, lib, with the class type classval, and registers 0
+      as the marking function and RbRp_Delete() as the freeing function for
+      Ruby's mark and sweep garbage collector. */
+   VALUE rbLib = Data_Wrap_Struct(classval, 0, RbRp_Delete, lib);
+
+   /* Call the initialize method; rb_obj_call_init() requires an argument
+      array. */
+   VALUE argv[1] = {driver};
+   rb_obj_call_init(rbLib, 1, argv);
+
+   /* Return a Ruby VALUE */
+   return rbLib;
+
+}  /* end RbRp_New */
+
+
+
+/******************************************************************************
+ * Init_Rappture()
+ *
+ * This is the first function called when Ruby loads the Rappture extension.
+ * Create the Rappture class, add constants, and register methods.
+ ******************************************************************************/
+
+void
+Init_Rappture(void)
+{
+   /* Create the Rappture class as a sublcass of Ruby's Object class. */
+   classRappture = rb_define_class("Rappture", rb_cObject);
+
+   /* Add constants to the Rappture class, accessible via, e.g., 
+      "Rappture::APPEND"*/
+   rb_define_const(classRappture, "APPEND", INT2NUM(RPLIB_APPEND));
+   rb_define_const(classRappture, "OVERWRITE", INT2NUM(RPLIB_OVERWRITE));
+   rb_define_const(classRappture, "UNITS_ON", INT2NUM(RPUNITS_UNITS_ON));
+   rb_define_const(classRappture, "UNITS_OFF", INT2NUM(RPUNITS_UNITS_OFF));
+   rb_define_const(classRappture, "COMPRESS", INT2NUM(RPLIB_COMPRESS));
+   rb_define_const(classRappture, "NO_COMPRESS", INT2NUM(RPLIB_NO_COMPRESS));
+
+   /* Function pointer cast necessary for C++ (but not C) */
+#  define RB_FUNC(func)  (VALUE (*)(ANYARGS))func
+
+   /* Register methods; last argument gives the expected number of arguments, 
+      not counting self (i.e. number of arguments from Ruby code) */
+   rb_define_singleton_method(classRappture, "new", RB_FUNC(RbRp_New),    1);
+   rb_define_method(classRappture, "initialize", RB_FUNC(RbRp_Init),      1);
+   rb_define_method(classRappture, "get",        RB_FUNC(RbRp_GetString), 1);
+   rb_define_method(classRappture, "getdata",    RB_FUNC(RbRp_GetData),   1);
+   rb_define_method(classRappture, "put",        RB_FUNC(RbRp_PutObject), 3);
+   rb_define_method(classRappture, "putdata",    RB_FUNC(RbRp_PutData),   3);
+   rb_define_method(classRappture, "putfile",    RB_FUNC(RbRp_PutFile),   4);
+   rb_define_method(classRappture, "result",     RB_FUNC(RbRp_Result),    1);
+   rb_define_method(classRappture, "xml",        RB_FUNC(RbRp_Xml),       0);
+   rb_define_method(classRappture, "convert",    RB_FUNC(RbRp_Convert),   3);
+   rb_define_method(classRappture, "progress",   RB_FUNC(RbRp_Progress),  2);
+
+}  /* end Init_Rappture */
+
+/* TODO rpElement*(), rpChildren*() */
+
Index: /tags/1.6.0/lang/ruby/build.rb.in
===================================================================
--- /tags/1.6.0/lang/ruby/build.rb.in	(revision 6168)
+++ /tags/1.6.0/lang/ruby/build.rb.in	(revision 6168)
@@ -0,0 +1,80 @@
+#
+# build.rb
+# Configure and build Rappture extension
+
+##############################################################################
+# The configure script should set these local configuration options.
+# These are options which Ruby would not know (e.g. Rappture, C++).
+
+rappture_dir  = "@prefix@"
+cxx           = "@CXX@"
+cxxflags      = "@CXXFLAGS@"
+srcdir	      = "@srcdir@"
+install	      = "@INSTALL@"
+shlib_cflags  = "@SHLIB_CFLAGS@"
+shlib_ldflags  = "@SHLIB_LDFLAGS@"
+
+##############################################################################
+# Get the remaining configuration options from the Config module, created
+# during the Ruby installation process.
+
+require 'rbconfig'
+
+objext        = Config::CONFIG["OBJEXT"]
+dlext         = Config::CONFIG["DLEXT"]
+rubydir       = Config::CONFIG["prefix"]
+rb_archdir    = Config::CONFIG["archdir"]
+sitedir       = Config::CONFIG["sitedir"]
+ldshared      = Config::CONFIG["LDSHARED"]
+ldflags       = Config::CONFIG["LDFLAGS"]
+libs          = Config::CONFIG["LIBS"]
+cxx_dlflags   = Config::CONFIG["CCDLFLAGS"]  # XXX This is for CC, not CXX
+
+##############################################################################
+# Values needed in Makefile
+
+source        = "Ruby_Rappture"
+target        = "Rappture"
+exceptions    = "-DRAISE_EXCEPTIONS"
+
+##############################################################################
+# Create Makefile
+
+f = File.new("Makefile.ruby", "w")
+f.printf("\n")
+f.printf("srcdir        = #{srcdir}\n")
+f.printf("incdir        = $(RAPPTURE_DIR)/include\n")
+f.printf("archdir       = #{rb_archdir}\n")
+f.printf("SOURCE        = #{source}\n")
+f.printf("TARGET        = #{target}\n\n")
+f.printf("OBJEXT        = #{objext}\n")
+f.printf("DLEXT         = #{dlext}\n\n")
+f.printf("RAPPTURE_DIR  = #{rappture_dir}\n")
+f.printf("RUBY_DIR      = #{rubydir}\n")
+f.printf("SITE_DIR      = #{sitedir}\n\n")
+f.printf("SITE_DIR      = $(RAPPTURE_DIR)/lib/ruby/ruby_site\n\n")
+f.printf("CXX           = #{cxx}\n")
+f.printf("CFLAGS        = #{cxxflags}\n")
+f.printf("CXX_DLFLAGS   = #{cxx_dlflags}\n")
+f.printf("INCLUDES      = -I$(incdir) -I#{srcdir}/../../src/core -I$(archdir)/\n")
+f.printf("INSTALL       = #{install}\n")
+f.printf("SHLIB_FLAGS   = $(CFLAGS) $(CXX_DLFLAGS) $(LDFLAGS) $(INCLUDES)\n\n")
+f.printf("EXCEPTIONS    = #{exceptions}\n\n")
+f.printf("SHLIB_LD      = #{ldshared}\n")
+f.printf("LDFLAGS	= #{ldflags}\n")
+f.printf("LIBS          = -L../../src/core -lrappture #{libs}\n\n")
+f.printf("package	= $(TARGET).$(DLEXT)\n\n")
+f.printf("all: extension\n\n")
+f.printf("extension: $(package)\n")
+f.printf("$(package): $(srcdir)/$(SOURCE).cc\n")
+f.printf("	$(SHLIB_LD) $(SHLIB_FLAGS) $(EXCEPTIONS) $< -o $@ $(LIBS)\n\n")
+f.printf("install: $(package)\n")
+f.printf("	$(INSTALL) -m 0755 $(package) $(SITE_DIR)\n\n")
+f.close
+ 
+##############################################################################
+# Build the extension
+
+#`make extension`
+#`make install`
+
Index: /tags/1.6.0/lang/tcl/Makefile.in
===================================================================
--- /tags/1.6.0/lang/tcl/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/tcl/Makefile.in	(revision 6168)
@@ -0,0 +1,71 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+
+destdir         = $(libdir)/Rappture$(PACKAGE_VERSION)
+
+PACKAGE_VERSION = @PACKAGE_VERSION@
+
+INSTALL         = @INSTALL@
+
+CXX             = @CXX@
+CC              = @CC@
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD        = @STLIB_LD@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+CFLAGS          = @CFLAGS@
+TCL_VERSION     = @TCL_VERSION@
+TK_VERSION      = @TK_VERSION@
+
+RANLIB          = @RANLIB@
+MKDIR_P         = @MKDIR_P@
+AR              = ar
+LN_S            = @LN_S@
+RM              = rm -f
+
+# The script directory is moved from src/tcl.
+
+.PHONY: src scripts tests
+
+all:
+	$(MAKE) -C src all
+	$(MAKE) -C scripts all
+
+links:
+
+install:
+	$(MKDIR_P) -m 0755 $(destdir)
+	$(INSTALL) -m 0444 pkgIndex.tcl $(destdir)
+	$(MAKE) -C src install
+	$(MAKE) -C scripts install
+	$(RM) $(bindir)/tclsh
+	(cd $(bindir); $(LN_S) tclsh$(TCL_VERSION) tclsh)
+	$(RM) $(bindir)/wish
+	(cd $(bindir); $(LN_S) wish$(TK_VERSION) wish)
+
+test:
+	$(MAKE) -C tests all
+
+clean:
+	$(MAKE) -C src clean
+	$(MAKE) -C tests clean
+	$(MAKE) -C scripts clean
+
+distclean: clean
+	$(MAKE) -C src distclean
+	$(MAKE) -C tests distclean
+	$(MAKE) -C scripts distclean
+	$(RM) Makefile
+
Index: /tags/1.6.0/lang/tcl/README
===================================================================
--- /tags/1.6.0/lang/tcl/README	(revision 6168)
+++ /tags/1.6.0/lang/tcl/README	(revision 6168)
@@ -0,0 +1,6 @@
+to compile:
+./configure CC=g++ --prefix=/opt/rappture --with-tcl=/opt/rappture/lib --with-tclinclude=/opt/rappture/include
+make all install
+
+within tclsh
+    package require Rappture
Index: /tags/1.6.0/lang/tcl/cf/config.guess
===================================================================
--- /tags/1.6.0/lang/tcl/cf/config.guess	(revision 6168)
+++ /tags/1.6.0/lang/tcl/cf/config.guess	(revision 6168)
@@ -0,0 +1,1391 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-02-22'
+
+# 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 <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  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 <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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) ; } ||
+ { 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
+
+# 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 ;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-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 ;;
+    pmax:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sgi:OpenBSD:*:*)
+	echo mipseb-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    *:OpenBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    alpha:OSF1:*:*)
+	if test $UNAME_RELEASE = "V4.0"; then
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+	fi
+	# 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 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/^[VTX]//' | 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 ;;
+    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_SV: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 ;;
+    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 <stdio.h>  /* 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 <sys/systemcfg.h>
+
+		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 <stdlib.h>
+              #include <unistd.h>
+
+              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 <unistd.h>
+	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 nv1-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 ;;
+    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:*:*)
+	# Determine whether the default compiler uses glibc.
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#if __GLIBC__ >= 2
+	LIBC=gnu
+	#else
+	LIBC=
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+	exit 0 ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit 0 ;;
+    i*:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit 0 ;;
+    i*:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit 0 ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit 0 ;;
+    x86:Interix*:3*)
+	echo i586-pc-interix3
+	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 ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit 0 ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    *:GNU:*:*)
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit 0 ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit 0 ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	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}-unknown-linux-gnu" && 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}-unknown-linux-gnu" && exit 0
+	;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit 0 ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	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}-unknown-linux-gnu${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-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit 0 ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	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}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit 0 ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit 0 ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit 0 ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#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
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && 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: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' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/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[567]*:*)
+	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*: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)
+	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 <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# 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:*:*)
+	case `uname -p` in
+	    *86) UNAME_PROCESSOR=i686 ;;
+	    powerpc) 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 ;;
+    NSR-[DGKLNPTVW]: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 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#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 <sys/param.h>
+  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 <sys/param.h>
+#  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 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> 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:
Index: /tags/1.6.0/lang/tcl/cf/config.sub
===================================================================
--- /tags/1.6.0/lang/tcl/cf/config.sub	(revision 6168)
+++ /tags/1.6.0/lang/tcl/cf/config.sub	(revision 6168)
@@ -0,0 +1,1493 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-02-22'
+
+# 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 <config-patches@gnu.org>.  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 <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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* | freebsd*-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)
+		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] \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k \
+	| m32r | m68000 | m68k | m88k | 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 \
+	| 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 | sparcv9 | sparcv9b \
+	| strongarm \
+	| tahoe | thumb | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | 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-* | 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-* \
+	| m32r-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | 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-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| msp430-* \
+	| none-* | np1-* | nv1-* | 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-* \
+	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | 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
+		;;
+	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
+		;;
+	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
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	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
+		;;
+	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=i686-pc
+		os=-mingw32
+		;;
+	msys)
+		basic_machine=i686-pc
+		os=-msys
+		;;
+	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
+		;;
+	mmix*)
+		basic_machine=mmix-knuth
+		os=-mmixware
+		;;
+	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
+		;;
+	nv1)
+		basic_machine=nv1-cray
+		os=-unicosmp
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	or32 | or32-*)
+		basic_machine=or32-unknown
+		os=-coff
+		;;
+	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)
+		basic_machine=i686-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-*)
+		basic_machine=i686-`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
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	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
+		;;
+        tic4x | c4x*)
+		basic_machine=tic4x-unknown
+		os=-coff
+		;;
+	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
+		;;
+	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
+		;;
+	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
+		;;
+	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 | 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* | -netbsd* | -openbsd* | -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* | -msys* | -linux-gnu* | -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*)
+	# 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*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-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
+		;;
+	-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
+		;;
+	-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
+		;;
+	# 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
+		;;
+	*-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
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-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:
Index: /tags/1.6.0/lang/tcl/cf/install-sh
===================================================================
--- /tags/1.6.0/lang/tcl/cf/install-sh	(revision 6168)
+++ /tags/1.6.0/lang/tcl/cf/install-sh	(revision 6168)
@@ -0,0 +1,310 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2004-01-12.10
+
+# 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}"
+
+transformbasename=
+transform_arg=
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+
+usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 -d DIRECTORIES...
+
+In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
+In the second, create the directory path DIR.
+
+Options:
+-b=TRANSFORMBASENAME
+-c         copy source (using $cpprog) instead of moving (using $mvprog).
+-d         create directories instead of installing files.
+-g GROUP   $chgrp installed files to GROUP.
+-m MODE    $chmod installed files to MODE.
+-o USER    $chown installed files to USER.
+-s         strip installed files (using $stripprog).
+-t=TRANSFORM
+--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
+    -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+        shift
+        continue;;
+
+    -c) instcmd=$cpprog
+        shift
+        continue;;
+
+    -d) dir_arg=true
+        shift
+        continue;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift
+        shift
+        continue;;
+
+    --help) echo "$usage"; exit 0;;
+
+    -m) chmodcmd="$chmodprog $2"
+        shift
+        shift
+        continue;;
+
+    -o) chowncmd="$chownprog $2"
+        shift
+        shift
+        continue;;
+
+    -s) stripcmd=$stripprog
+        shift
+        continue;;
+
+    -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+        shift
+        continue;;
+
+    --version) echo "$0 $scriptversion"; exit 0;;
+
+    *)  # When -d is used, all remaining arguments are directories to create.
+	test -n "$dir_arg" && 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
+      instcmd=:
+      chmodcmd=
+    else
+      instcmd=$mkdirprog
+    fi
+  else
+    # Waiting for this to be detected by the "$instcmd $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
+      dst=$dst/`basename "$src"`
+    fi
+  fi
+
+  # This sed command emulates the dirname command.
+  dstdir=`echo "$dst" | sed -e '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 - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    IFS=$oIFS
+
+    pathcomp=
+
+    while test $# -ne 0 ; do
+      pathcomp=$pathcomp$1
+      shift
+      test -d "$pathcomp" || $mkdirprog "$pathcomp"
+      pathcomp=$pathcomp/
+    done
+  fi
+
+  if test -n "$dir_arg"; then
+    $doit $instcmd "$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
+    # If we're going to rename the final executable, determine the name now.
+    if test -z "$transformarg"; then
+      dstfile=`basename "$dst"`
+    else
+      dstfile=`basename "$dst" $transformbasename \
+               | sed $transformarg`$transformbasename
+    fi
+
+    # don't allow the sed command to completely eliminate the filename.
+    test -z "$dstfile" && 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 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+    trap '(exit $?); exit' 1 2 13 15
+
+    # Move or copy the file name to the temp name
+    $doit $instcmd "$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 $instcmd $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 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
+        }
+      else
+        :
+      fi
+    } &&
+
+    # Now rename the file to the real destination.
+    $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+  fi || { (exit 1); exit; }
+done
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+  (exit 0); exit
+}
+
+# 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:
Index: /tags/1.6.0/lang/tcl/cf/mkindex.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/cf/mkindex.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/cf/mkindex.tcl	(revision 6168)
@@ -0,0 +1,77 @@
+# ----------------------------------------------------------------------
+#  mkindex.tcl
+#
+#  This utility freshens up the tclIndex file in a scripts directory.
+#    USAGE:  tclsh mkindex.tcl ?<directory> <directory> ...?
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl  ;# include itcl constructs in the index
+
+proc auto_mkindex { srcdir outfile patterns } {
+    global errorCode errorInfo
+
+    if {[interp issafe]} {
+        error "can't generate index within safe interpreter"
+    }
+
+    set fid [open $outfile w]
+
+    set oldDir [pwd]
+    cd $srcdir
+    set srcdir [pwd]
+
+    append index "# Tcl autoload index file, version 2.0\n"
+    append index "# This file is generated by the \"auto_mkindex\" command\n"
+    append index "# and sourced to set up indexing information for one or\n"
+    append index "# more commands.  Typically each line is a command that\n"
+    append index "# sets an element in the auto_index array, where the\n"
+    append index "# element name is the name of a command and the value is\n"
+    append index "# a script that loads the command.\n\n"
+    if {$patterns == ""} {
+        set patterns *.tcl
+    }
+    auto_mkindex_parser::init
+    foreach file [eval glob $patterns] {
+        if {[catch {auto_mkindex_parser::mkindex $file} msg] == 0} {
+            append index $msg
+        } else {
+            set code $errorCode
+            set info $errorInfo
+            cd $oldDir
+            error $msg $info $code
+        }
+    }
+    auto_mkindex_parser::cleanup
+    puts -nonewline $fid $index
+    close $fid
+    cd $oldDir
+}
+
+set outfile "tclIndex"
+set srcdir  "."
+set args {}
+for {set i 0} { $i < [llength $argv] } { incr i } {
+    set arg [lindex $argv $i]
+    if { $arg == "--outfile" } {
+	incr i
+	set outfile [lindex $argv $i]
+	continue
+    } elseif { $arg == "--srcdir" } {
+	incr i
+	set srcdir [lindex $argv $i]
+	continue
+    }
+    lappend args $arg
+}
+
+auto_mkindex $srcdir $outfile $args
+if { ![file exists $outfile] } {
+    exit 1
+} 
+exit 0
Index: /tags/1.6.0/lang/tcl/cf/mkinstalldirs
===================================================================
--- /tags/1.6.0/lang/tcl/cf/mkinstalldirs	(revision 6168)
+++ /tags/1.6.0/lang/tcl/cf/mkinstalldirs	(revision 6168)
@@ -0,0 +1,143 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2003-11-08.23
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage"
+      exit 0
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit 0
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+case $dirmode in
+  '')
+    if mkdir -p -- . 2>/dev/null; then
+      echo "mkdir -p -- $*"
+      exec 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.
+      test -d ./-p && rmdir ./-p
+      test -d ./-- && rmdir ./--
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./-- "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
+    fi
+    ;;
+esac
+
+for file
+do
+  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+  shift
+
+  pathcomp=
+  for d
+  do
+    pathcomp="$pathcomp$d"
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+	errstatus=$lasterr
+      else
+	if test ! -z "$dirmode"; then
+	  echo "chmod $dirmode $pathcomp"
+	  lasterr=""
+	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+	  if test ! -z "$lasterr"; then
+	    errstatus=$lasterr
+	  fi
+	fi
+      fi
+    fi
+
+    pathcomp="$pathcomp/"
+  done
+done
+
+exit $errstatus
+
+# 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:
Index: /tags/1.6.0/lang/tcl/cf/mkobjects.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/cf/mkobjects.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/cf/mkobjects.tcl	(revision 6168)
@@ -0,0 +1,47 @@
+# ----------------------------------------------------------------------
+#  mkobjects.tcl
+#
+#  This utility is similar to mkindex.tcl, but it searches for files
+#  associated with Rappture object classes and adds them to the
+#  existing tclIndex file, which should have been built by mkindex.tcl
+#    USAGE:  tclsh mkobjects.tcl --srcdir <dir> <type> <type> ...
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+set outfile "tclIndex"
+set srcdir  "."
+set args {}
+for {set i 0} {$i < [llength $argv]} {incr i} {
+    set arg [lindex $argv $i]
+    if {$arg eq "--srcdir"} {
+	incr i
+	set srcdir [lindex $argv $i]
+	continue
+    }
+    lappend args $arg
+}
+
+if {![file exists $outfile]} {
+    puts stderr "can't find tclIndex file to update"
+    exit 1
+}
+
+set fid [open $outfile a]
+puts $fid "\n# object viewers"
+foreach type $args {
+    foreach dir {input output} {
+        set fname "$type$dir.tcl"
+        set class "::Rappture::objects::[string totitle $type][string totitle $dir]"
+        if {[file exists [file join $srcdir objects $type $fname]]} {
+            puts $fid "set auto_index($class) \[list source \[file join \$dir objects $type $fname\]\]"
+        }
+    }
+}
+close $fid
+
+exit 0
Index: /tags/1.6.0/lang/tcl/cf/patchlevel.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/cf/patchlevel.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/cf/patchlevel.tcl	(revision 6168)
@@ -0,0 +1,19 @@
+# ----------------------------------------------------------------------
+#  patchlevel.tcl
+#
+#  This utility determines the current patchlevel for this package
+#  by querying the revision level from Subversion.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+if {[catch {exec svn info} result] == 0
+      && [regexp {Revision: +([0-9]+)} $result match num]} {
+    puts "r$num"
+} else {
+    puts "r?"
+}
+exit 0
Index: /tags/1.6.0/lang/tcl/cf/tcl.m4
===================================================================
--- /tags/1.6.0/lang/tcl/cf/tcl.m4	(revision 6168)
+++ /tags/1.6.0/lang/tcl/cf/tcl.m4	(revision 6168)
@@ -0,0 +1,3240 @@
+#------------------------------------------------------------------------
+# SC_PATH_TCLCONFIG --
+#
+#	Locate the tclConfig.sh file and perform a sanity check on
+#	the Tcl compile flags
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--with-tcl=...
+#
+#	Defines the following vars:
+#		TCL_BIN_DIR	Full path to the directory containing
+#				the tclConfig.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_PATH_TCLCONFIG], [
+    #
+    # Ok, lets find the tcl configuration
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-tcl
+    #
+
+    if test x"${no_tcl}" = x ; then
+	# we reset no_tcl in case something fails here
+	no_tcl=true
+	AC_ARG_WITH(tcl, [  --with-tcl              directory containing tcl configuration (tclConfig.sh)], with_tclconfig=${withval})
+	AC_MSG_CHECKING([for Tcl configuration])
+	AC_CACHE_VAL(ac_cv_c_tclconfig,[
+
+	    # First check to see if --with-tcl was specified.
+	    if test x"${with_tclconfig}" != x ; then
+		if test -f "${with_tclconfig}/tclConfig.sh" ; then
+		    ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)`
+		else
+		    AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh])
+		fi
+	    fi
+
+	    # then check for a private Tcl installation
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in \
+			../tcl \
+			`ls -dr ../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../tcl \
+			`ls -dr ../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../../tcl \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Darwin, check in Framework installation locations
+	    if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+			`ls -d /Library/Frameworks 2>/dev/null` \
+			`ls -d /Network/Library/Frameworks 2>/dev/null` \
+			`ls -d /System/Library/Frameworks 2>/dev/null` \
+			; do
+		    if test -f "$i/Tcl.framework/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i/Tcl.framework; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few common install locations
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d ${libdir} 2>/dev/null` \
+			`ls -d ${exec_prefix}/lib 2>/dev/null` \
+			`ls -d ${prefix}/lib 2>/dev/null` \
+			`ls -d /usr/local/lib 2>/dev/null` \
+			`ls -d /usr/contrib/lib 2>/dev/null` \
+			`ls -d /usr/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few other private locations
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in \
+			${srcdir}/../tcl \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tclConfig.sh" ; then
+		    ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+		    break
+		fi
+		done
+	    fi
+	])
+
+	if test x"${ac_cv_c_tclconfig}" = x ; then
+	    TCL_BIN_DIR="# no Tcl configs found"
+	    AC_MSG_WARN([Can't find Tcl configuration definitions])
+	    exit 0
+	else
+	    no_tcl=
+	    TCL_BIN_DIR=${ac_cv_c_tclconfig}
+	    AC_MSG_RESULT([found ${TCL_BIN_DIR}/tclConfig.sh])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_PATH_TKCONFIG --
+#
+#	Locate the tkConfig.sh file
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--with-tk=...
+#
+#	Defines the following vars:
+#		TK_BIN_DIR	Full path to the directory containing
+#				the tkConfig.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_PATH_TKCONFIG], [
+    #
+    # Ok, lets find the tk configuration
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-tk
+    #
+
+    if test x"${no_tk}" = x ; then
+	# we reset no_tk in case something fails here
+	no_tk=true
+	AC_ARG_WITH(tk, [  --with-tk               directory containing tk configuration (tkConfig.sh)], with_tkconfig=${withval})
+	AC_MSG_CHECKING([for Tk configuration])
+	AC_CACHE_VAL(ac_cv_c_tkconfig,[
+
+	    # First check to see if --with-tkconfig was specified.
+	    if test x"${with_tkconfig}" != x ; then
+		if test -f "${with_tkconfig}/tkConfig.sh" ; then
+		    ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)`
+		else
+		    AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh])
+		fi
+	    fi
+
+	    # then check for a private Tk library
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in \
+			../tk \
+			`ls -dr ../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../tk[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../tk \
+			`ls -dr ../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../../tk \
+			`ls -dr ../../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Darwin, check in Framework installation locations
+	    if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then
+		for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+			`ls -d /Library/Frameworks 2>/dev/null` \
+			`ls -d /Network/Library/Frameworks 2>/dev/null` \
+			`ls -d /System/Library/Frameworks 2>/dev/null` \
+			; do
+		    if test -f "$i/Tk.framework/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/Tk.framework; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few common install locations
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in `ls -d ${libdir} 2>/dev/null` \
+			`ls -d ${exec_prefix}/lib 2>/dev/null` \
+			`ls -d ${prefix}/lib 2>/dev/null` \
+			`ls -d /usr/local/lib 2>/dev/null` \
+			`ls -d /usr/contrib/lib 2>/dev/null` \
+			`ls -d /usr/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+	    # check in a few other private locations
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in \
+			${srcdir}/../tk \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+	])
+
+	if test x"${ac_cv_c_tkconfig}" = x ; then
+	    TK_BIN_DIR="# no Tk configs found"
+	    AC_MSG_WARN([Can't find Tk configuration definitions])
+	    exit 0
+	else
+	    no_tk=
+	    TK_BIN_DIR=${ac_cv_c_tkconfig}
+	    AC_MSG_RESULT([found ${TK_BIN_DIR}/tkConfig.sh])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_LOAD_TCLCONFIG --
+#
+#	Load the tclConfig.sh file
+#
+# Arguments:
+#	
+#	Requires the following vars to be set:
+#		TCL_BIN_DIR
+#
+# Results:
+#
+#	Subst the following vars:
+#		TCL_BIN_DIR
+#		TCL_SRC_DIR
+#		TCL_LIB_FILE
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_LOAD_TCLCONFIG], [
+    AC_MSG_CHECKING([for existence of ${TCL_BIN_DIR}/tclConfig.sh])
+
+    if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then
+        AC_MSG_RESULT([loading])
+	. ${TCL_BIN_DIR}/tclConfig.sh
+    else
+        AC_MSG_RESULT([could not find ${TCL_BIN_DIR}/tclConfig.sh])
+    fi
+
+    # eval is required to do the TCL_DBGX substitution
+    eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+    eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
+
+    # If the TCL_BIN_DIR is the build directory (not the install directory),
+    # then set the common variable name to the value of the build variables.
+    # For example, the variable TCL_LIB_SPEC will be set to the value
+    # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
+    # instead of TCL_BUILD_LIB_SPEC since it will work with both an
+    # installed and uninstalled version of Tcl.
+    if test -f ${TCL_BIN_DIR}/Makefile ; then
+        TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
+        TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
+        TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
+    elif test "`uname -s`" = "Darwin"; then
+	# If Tcl was built as a framework, attempt to use the libraries
+	# from the framework at the given location so that linking works
+	# against Tcl.framework installed in an arbitary location.
+	case ${TCL_DEFS} in
+	    *TCL_FRAMEWORK*)
+		if test -f ${TCL_BIN_DIR}/${TCL_LIB_FILE}; then
+		    for i in "`cd ${TCL_BIN_DIR}; pwd`" \
+			     "`cd ${TCL_BIN_DIR}/../..; pwd`"; do
+			if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then
+			    TCL_LIB_SPEC="-F`dirname "$i"` -framework ${TCL_LIB_FILE}"
+			    break
+			fi
+		    done
+		fi
+		if test -f ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}; then
+		    TCL_STUB_LIB_SPEC="-L${TCL_BIN_DIR} ${TCL_STUB_LIB_FLAG}"
+		    TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"
+		fi
+		;;
+	esac
+    fi
+
+    # eval is required to do the TCL_DBGX substitution
+    eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
+    eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
+    eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
+    eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
+
+    AC_SUBST(TCL_VERSION)
+    AC_SUBST(TCL_PATCH_LEVEL)
+    AC_SUBST(TCL_BIN_DIR)
+    AC_SUBST(TCL_SRC_DIR)
+
+    AC_SUBST(TCL_LIB_FILE)
+    AC_SUBST(TCL_LIB_FLAG)
+    AC_SUBST(TCL_LIB_SPEC)
+
+    AC_SUBST(TCL_STUB_LIB_FILE)
+    AC_SUBST(TCL_STUB_LIB_FLAG)
+    AC_SUBST(TCL_STUB_LIB_SPEC)
+])
+
+#------------------------------------------------------------------------
+# SC_LOAD_TKCONFIG --
+#
+#	Load the tkConfig.sh file
+#
+# Arguments:
+#	
+#	Requires the following vars to be set:
+#		TK_BIN_DIR
+#
+# Results:
+#
+#	Sets the following vars that should be in tkConfig.sh:
+#		TK_BIN_DIR
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_LOAD_TKCONFIG], [
+    AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh])
+
+    if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then
+        AC_MSG_RESULT([loading])
+	. ${TK_BIN_DIR}/tkConfig.sh
+    else
+        AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh])
+    fi
+
+    # eval is required to do the TK_DBGX substitution
+    eval "TK_LIB_FILE=\"${TK_LIB_FILE}\""
+    eval "TK_STUB_LIB_FILE=\"${TK_STUB_LIB_FILE}\""
+
+    # If the TK_BIN_DIR is the build directory (not the install directory),
+    # then set the common variable name to the value of the build variables.
+    # For example, the variable TK_LIB_SPEC will be set to the value
+    # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC
+    # instead of TK_BUILD_LIB_SPEC since it will work with both an
+    # installed and uninstalled version of Tcl.
+    if test -f ${TK_BIN_DIR}/Makefile ; then
+        TK_LIB_SPEC=${TK_BUILD_LIB_SPEC}
+        TK_STUB_LIB_SPEC=${TK_BUILD_STUB_LIB_SPEC}
+        TK_STUB_LIB_PATH=${TK_BUILD_STUB_LIB_PATH}
+    elif test "`uname -s`" = "Darwin"; then
+	# If Tk was built as a framework, attempt to use the libraries
+	# from the framework at the given location so that linking works
+	# against Tk.framework installed in an arbitary location.
+	case ${TK_DEFS} in
+	    *TK_FRAMEWORK*)
+		if test -f ${TK_BIN_DIR}/${TK_LIB_FILE}; then
+		    for i in "`cd ${TK_BIN_DIR}; pwd`" \
+			     "`cd ${TK_BIN_DIR}/../..; pwd`"; do
+			if test "`basename "$i"`" = "${TK_LIB_FILE}.framework"; then
+			    TK_LIB_SPEC="-F`dirname "$i"` -framework ${TK_LIB_FILE}"
+			    break
+			fi
+		    done
+		fi
+		if test -f ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}; then
+		    TK_STUB_LIB_SPEC="-L${TK_BIN_DIR} ${TK_STUB_LIB_FLAG}"
+		    TK_STUB_LIB_PATH="${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"
+		fi
+		;;
+	esac
+    fi
+
+    # eval is required to do the TK_DBGX substitution
+    eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}\""
+    eval "TK_LIB_SPEC=\"${TK_LIB_SPEC}\""
+    eval "TK_STUB_LIB_FLAG=\"${TK_STUB_LIB_FLAG}\""
+    eval "TK_STUB_LIB_SPEC=\"${TK_STUB_LIB_SPEC}\""
+
+    AC_SUBST(TK_VERSION)
+    AC_SUBST(TK_BIN_DIR)
+    AC_SUBST(TK_SRC_DIR)
+
+    AC_SUBST(TK_LIB_FILE)
+    AC_SUBST(TK_LIB_FLAG)
+    AC_SUBST(TK_LIB_SPEC)
+
+    AC_SUBST(TK_STUB_LIB_FILE)
+    AC_SUBST(TK_STUB_LIB_FLAG)
+    AC_SUBST(TK_STUB_LIB_SPEC)
+])
+
+#------------------------------------------------------------------------
+# SC_PROG_TCLSH
+#	Locate a tclsh shell installed on the system path. This macro
+#	will only find a Tcl shell that already exists on the system.
+#	It will not find a Tcl shell in the Tcl build directory or
+#	a Tcl shell that has been installed from the Tcl build directory.
+#	If a Tcl shell can't be located on the PATH, then TCLSH_PROG will
+#	be set to "". Extensions should take care not to create Makefile
+#	rules that are run by default and depend on TCLSH_PROG. An
+#	extension can't assume that an executable Tcl shell exists at
+#	build time.
+#
+# Arguments
+#	none
+#
+# Results
+#	Subst's the following values:
+#		TCLSH_PROG
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_PROG_TCLSH], [
+    AC_MSG_CHECKING([for tclsh])
+    AC_CACHE_VAL(ac_cv_path_tclsh, [
+	search_path=`echo ${PATH} | sed -e 's/:/ /g'`
+	for dir in $search_path ; do
+	    for j in `ls -r $dir/tclsh[[8-9]]* 2> /dev/null` \
+		    `ls -r $dir/tclsh* 2> /dev/null` ; do
+		if test x"$ac_cv_path_tclsh" = x ; then
+		    if test -f "$j" ; then
+			ac_cv_path_tclsh=$j
+			break
+		    fi
+		fi
+	    done
+	done
+    ])
+
+    if test -f "$ac_cv_path_tclsh" ; then
+	TCLSH_PROG="$ac_cv_path_tclsh"
+	AC_MSG_RESULT([$TCLSH_PROG])
+    else
+	# It is not an error if an installed version of Tcl can't be located.
+	TCLSH_PROG=""
+	AC_MSG_RESULT([No tclsh found on PATH])
+    fi
+    AC_SUBST(TCLSH_PROG)
+])
+
+#------------------------------------------------------------------------
+# SC_BUILD_TCLSH
+#	Determine the fully qualified path name of the tclsh executable
+#	in the Tcl build directory. This macro will correctly determine
+#	the name of the tclsh executable even if tclsh has not yet
+#	been built in the build directory. The build tclsh must be used
+#	when running tests from an extension build directory. It is not
+#	correct to use the TCLSH_PROG in cases like this.
+#
+# Arguments
+#	none
+#
+# Results
+#	Subst's the following values:
+#		BUILD_TCLSH
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_BUILD_TCLSH], [
+    AC_MSG_CHECKING([for tclsh in Tcl build directory])
+    BUILD_TCLSH=${TCL_BIN_DIR}/tclsh
+    AC_MSG_RESULT([$BUILD_TCLSH])
+    AC_SUBST(BUILD_TCLSH)
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_SHARED --
+#
+#	Allows the building of shared libraries
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-shared=yes|no
+#
+#	Defines the following vars:
+#		STATIC_BUILD	Used for building import/export libraries
+#				on Windows.
+#
+#	Sets the following vars:
+#		SHARED_BUILD	Value of 1 or 0
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_SHARED], [
+    AC_MSG_CHECKING([how to build libraries])
+    AC_ARG_ENABLE(shared,
+	[  --enable-shared         build and link with shared libraries [--enable-shared]],
+	[tcl_ok=$enableval], [tcl_ok=yes])
+
+    if test "${enable_shared+set}" = set; then
+	enableval="$enable_shared"
+	tcl_ok=$enableval
+    else
+	tcl_ok=yes
+    fi
+
+    if test "$tcl_ok" = "yes" ; then
+	AC_MSG_RESULT([shared])
+	SHARED_BUILD=1
+    else
+	AC_MSG_RESULT([static])
+	SHARED_BUILD=0
+	AC_DEFINE(STATIC_BUILD)
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_FRAMEWORK --
+#
+#	Allows the building of shared libraries into frameworks
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-framework=yes|no
+#
+#	Sets the following vars:
+#		FRAMEWORK_BUILD	Value of 1 or 0
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_FRAMEWORK], [
+    if test "`uname -s`" = "Darwin" ; then
+	AC_MSG_CHECKING([how to package libraries])
+	AC_ARG_ENABLE(framework,
+	    [  --enable-framework      package shared libraries in MacOSX frameworks [--disable-framework]],
+	    [enable_framework=$enableval], [enable_framework=no])
+	if test $enable_framework = yes; then
+	    if test $SHARED_BUILD = 0; then
+		AC_MSG_WARN([Frameworks can only be built if --enable-shared is yes])
+		enable_framework=no
+	    fi
+	    if test $tcl_corefoundation = no; then
+		AC_MSG_WARN([Frameworks can only be used when CoreFoundation is available])
+		enable_framework=no
+	    fi
+	fi
+	if test $enable_framework = yes; then
+	    AC_MSG_RESULT([framework])
+	    FRAMEWORK_BUILD=1
+	else
+	    if test $SHARED_BUILD = 1; then
+		AC_MSG_RESULT([shared library])
+	    else
+		AC_MSG_RESULT([static library])
+	    fi
+	    FRAMEWORK_BUILD=0
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_THREADS --
+#
+#	Specify if thread support should be enabled.  TCL_THREADS is
+#	checked so that if you are compiling an extension against a
+#	threaded core, your extension must be compiled threaded as well.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-threads
+#
+#	Sets the following vars:
+#		THREADS_LIBS	Thread library(s)
+#
+#	Defines the following vars:
+#		TCL_THREADS
+#		_REENTRANT
+#		_THREAD_SAFE
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_THREADS], [
+    AC_ARG_ENABLE(threads, [  --enable-threads        build with threads],
+	[tcl_ok=$enableval], [tcl_ok=no])
+
+    if test "${TCL_THREADS}" = 1; then
+	tcl_threaded_core=1;
+    fi
+
+    if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then
+	TCL_THREADS=1
+	# USE_THREAD_ALLOC tells us to try the special thread-based
+	# allocator that significantly reduces lock contention
+	AC_DEFINE(USE_THREAD_ALLOC)
+	AC_DEFINE(_REENTRANT)
+	if test "`uname -s`" = "SunOS" ; then
+	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
+	fi
+	AC_DEFINE(_THREAD_SAFE)
+	AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
+	if test "$tcl_ok" = "no"; then
+	    # Check a little harder for __pthread_mutex_init in the same
+	    # library, as some systems hide it there until pthread.h is
+	    # defined.  We could alternatively do an AC_TRY_COMPILE with
+	    # pthread.h, but that will work with libpthread really doesn't
+	    # exist, like AIX 4.2.  [Bug: 4359]
+	    AC_CHECK_LIB(pthread, __pthread_mutex_init,
+		tcl_ok=yes, tcl_ok=no)
+	fi
+
+	if test "$tcl_ok" = "yes"; then
+	    # The space is needed
+	    THREADS_LIBS=" -lpthread"
+	else
+	    AC_CHECK_LIB(pthreads, pthread_mutex_init,
+		tcl_ok=yes, tcl_ok=no)
+	    if test "$tcl_ok" = "yes"; then
+		# The space is needed
+		THREADS_LIBS=" -lpthreads"
+	    else
+		AC_CHECK_LIB(c, pthread_mutex_init,
+		    tcl_ok=yes, tcl_ok=no)
+		if test "$tcl_ok" = "no"; then
+		    AC_CHECK_LIB(c_r, pthread_mutex_init,
+			tcl_ok=yes, tcl_ok=no)
+		    if test "$tcl_ok" = "yes"; then
+			# The space is needed
+			THREADS_LIBS=" -pthread"
+		    else
+			TCL_THREADS=0
+			AC_MSG_WARN([Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile...])
+		    fi
+		fi
+	    fi
+	fi
+
+	# Does the pthread-implementation provide
+	# 'pthread_attr_setstacksize' ?
+
+	ac_saved_libs=$LIBS
+	LIBS="$LIBS $THREADS_LIBS"
+	AC_CHECK_FUNCS(pthread_attr_setstacksize)
+	AC_CHECK_FUNCS(pthread_atfork)
+	LIBS=$ac_saved_libs
+    else
+	TCL_THREADS=0
+    fi
+    # Do checking message here to not mess up interleaved configure output
+    AC_MSG_CHECKING([for building with threads])
+    if test "${TCL_THREADS}" = 1; then
+	AC_DEFINE(TCL_THREADS, 1, [Are we building with threads enabled?])
+	if test "${tcl_threaded_core}" = 1; then
+	    AC_MSG_RESULT([yes (threaded core)])
+	else
+	    AC_MSG_RESULT([yes])
+	fi
+    else
+	AC_MSG_RESULT([no (default)])
+    fi
+
+    AC_SUBST(TCL_THREADS)
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_SYMBOLS --
+#
+#	Specify if debugging symbols should be used.
+#	Memory (TCL_MEM_DEBUG) and compile (TCL_COMPILE_DEBUG) debugging
+#	can also be enabled.
+#
+# Arguments:
+#	none
+#	
+#	Requires the following vars to be set in the Makefile:
+#		CFLAGS_DEBUG
+#		CFLAGS_OPTIMIZE
+#		LDFLAGS_DEBUG
+#		LDFLAGS_OPTIMIZE
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-symbols
+#
+#	Defines the following vars:
+#		CFLAGS_DEFAULT	Sets to $(CFLAGS_DEBUG) if true
+#				Sets to $(CFLAGS_OPTIMIZE) if false
+#		LDFLAGS_DEFAULT	Sets to $(LDFLAGS_DEBUG) if true
+#				Sets to $(LDFLAGS_OPTIMIZE) if false
+#		DBGX		Debug library extension
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_SYMBOLS], [
+    AC_MSG_CHECKING([for build with symbols])
+    AC_ARG_ENABLE(symbols, [  --enable-symbols        build with debugging symbols [--disable-symbols]],    [tcl_ok=$enableval], [tcl_ok=no])
+# FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT.
+    if test "$tcl_ok" = "no"; then
+	CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)'
+	LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)'
+	DBGX=""
+	AC_MSG_RESULT([no])
+    else
+	CFLAGS_DEFAULT='$(CFLAGS_DEBUG)'
+	LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)'
+	DBGX=g
+	if test "$tcl_ok" = "yes"; then
+	    AC_MSG_RESULT([yes (standard debugging)])
+	fi
+    fi
+    AC_SUBST(CFLAGS_DEFAULT)
+    AC_SUBST(LDFLAGS_DEFAULT)
+
+    if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
+	AC_DEFINE(TCL_MEM_DEBUG)
+    fi
+
+    if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then
+	AC_DEFINE(TCL_COMPILE_DEBUG)
+	AC_DEFINE(TCL_COMPILE_STATS)
+    fi
+
+    if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
+	if test "$tcl_ok" = "all"; then
+	    AC_MSG_RESULT([enabled symbols mem compile debugging])
+	else
+	    AC_MSG_RESULT([enabled $tcl_ok debugging])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# SC_ENABLE_LANGINFO --
+#
+#	Allows use of modern nl_langinfo check for better l10n.
+#	This is only relevant for Unix.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-langinfo=yes|no (default is yes)
+#
+#	Defines the following vars:
+#		HAVE_LANGINFO	Triggers use of nl_langinfo if defined.
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([SC_ENABLE_LANGINFO], [
+    AC_ARG_ENABLE(langinfo,
+	[  --enable-langinfo	  use nl_langinfo if possible to determine
+			  encoding at startup, otherwise use old heuristic],
+	[langinfo_ok=$enableval], [langinfo_ok=yes])
+
+    HAVE_LANGINFO=0
+    if test "$langinfo_ok" = "yes"; then
+	AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no])
+    fi
+    AC_MSG_CHECKING([whether to use nl_langinfo])
+    if test "$langinfo_ok" = "yes"; then
+	AC_CACHE_VAL(tcl_cv_langinfo_h, [
+	    AC_TRY_COMPILE([#include <langinfo.h>], [nl_langinfo(CODESET);],
+		    [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no])])
+	AC_MSG_RESULT([$tcl_cv_langinfo_h])
+	if test $tcl_cv_langinfo_h = yes; then
+	    AC_DEFINE(HAVE_LANGINFO)
+	fi
+    else 
+	AC_MSG_RESULT([$langinfo_ok])
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_MANPAGES
+#	
+#	Decide whether to use symlinks for linking the manpages,
+#	whether to compress the manpages after installation, and
+#	whether to add a package name suffix to the installed
+#	manpages to avoidfile name clashes.
+#	If compression is enabled also find out what file name suffix
+#	the given compression program is using.
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-man-symlinks
+#		--enable-man-compression=PROG
+#		--enable-man-suffix[=STRING]
+#
+#	Defines the following variable:
+#
+#	MAN_FLAGS -	The apropriate flags for installManPage
+#			according to the user's selection.
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_MANPAGES], [
+    AC_MSG_CHECKING([whether to use symlinks for manpages])
+    AC_ARG_ENABLE(man-symlinks,
+	    [  --enable-man-symlinks   use symlinks for the manpages],
+	test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks",
+	enableval="no")
+    AC_MSG_RESULT([$enableval])
+
+    AC_MSG_CHECKING([whether to compress the manpages])
+    AC_ARG_ENABLE(man-compression,
+	    [  --enable-man-compression=PROG
+		      compress the manpages with PROG],
+	[case $enableval in
+	    yes) AC_MSG_ERROR([missing argument to --enable-man-compression]);;
+	    no)  ;;
+	    *)   MAN_FLAGS="$MAN_FLAGS --compress $enableval";;
+	esac],
+	enableval="no")
+    AC_MSG_RESULT([$enableval])
+    if test "$enableval" != "no"; then
+	AC_MSG_CHECKING([for compressed file suffix])
+	touch TeST
+	$enableval TeST
+	Z=`ls TeST* | sed 's/^....//'`
+	rm -f TeST*
+	MAN_FLAGS="$MAN_FLAGS --extension $Z"
+	AC_MSG_RESULT([$Z])
+    fi
+
+    AC_MSG_CHECKING([whether to add a package name suffix for the manpages])
+    AC_ARG_ENABLE(man-suffix,
+	    [  --enable-man-suffix=STRING
+		      use STRING as a suffix to manpage file names
+		      (default: $1)],
+	[case $enableval in
+	    yes) enableval="$1" MAN_FLAGS="$MAN_FLAGS --suffix $enableval";;
+	    no)  ;;
+	    *)   MAN_FLAGS="$MAN_FLAGS --suffix $enableval";;
+	esac],
+	enableval="no")
+    AC_MSG_RESULT([$enableval])
+
+    AC_SUBST(MAN_FLAGS)
+])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_SYSTEM
+#
+#	Determine what the system is (some things cannot be easily checked
+#	on a feature-driven basis, alas). This can usually be done via the
+#	"uname" command, but there are a few systems, like Next, where
+#	this doesn't work.
+#
+# Arguments:
+#	none
+#
+# Results:
+#	Defines the following var:
+#
+#	system -	System/platform/version identification code.
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_SYSTEM], [
+    AC_CACHE_CHECK([system version], tcl_cv_sys_version, [
+	if test -f /usr/lib/NextStep/software_version; then
+	    tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
+	else
+	    tcl_cv_sys_version=`uname -s`-`uname -r`
+	    if test "$?" -ne 0 ; then
+		AC_MSG_WARN([can't find uname command])
+		tcl_cv_sys_version=unknown
+	    else
+		# Special check for weird MP-RAS system (uname returns weird
+		# results, and the version is kept in special file).
+
+		if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
+		    tcl_cv_sys_version=MP-RAS-`awk '{print $[3]}' /etc/.relid`
+		fi
+		if test "`uname -s`" = "AIX" ; then
+		    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
+		fi
+	    fi
+	fi
+    ])
+    system=$tcl_cv_sys_version
+])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_CFLAGS
+#
+#	Try to determine the proper flags to pass to the compiler
+#	for building shared libraries and other such nonsense.
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Defines and substitutes the following vars:
+#
+#       DL_OBJS -       Name of the object file that implements dynamic
+#                       loading for Tcl on this system.
+#       DL_LIBS -       Library file(s) to include in tclsh and other base
+#                       applications in order for the "load" command to work.
+#       LDFLAGS -      Flags to pass to the compiler when linking object
+#                       files into an executable application binary such
+#                       as tclsh.
+#       LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib",
+#                       that tell the run-time dynamic linker where to look
+#                       for shared libraries such as libtcl.so.  Depends on
+#                       the variable LIB_RUNTIME_DIR in the Makefile. Could
+#                       be the same as CC_SEARCH_FLAGS if ${CC} is used to link.
+#       CC_SEARCH_FLAGS-Flags to pass to ${CC}, such as "-Wl,-rpath,/usr/local/tcl/lib",
+#                       that tell the run-time dynamic linker where to look
+#                       for shared libraries such as libtcl.so.  Depends on
+#                       the variable LIB_RUNTIME_DIR in the Makefile.
+#       MAKE_LIB -      Command to execute to build the a library;
+#                       differs when building shared or static.
+#       MAKE_STUB_LIB -
+#                       Command to execute to build a stub library.
+#       INSTALL_LIB -   Command to execute to install a library;
+#                       differs when building shared or static.
+#       INSTALL_STUB_LIB -
+#                       Command to execute to install a stub library.
+#       STLIB_LD -      Base command to use for combining object files
+#                       into a static library.
+#       SHLIB_CFLAGS -  Flags to pass to cc when compiling the components
+#                       of a shared library (may request position-independent
+#                       code, among other things).
+#       SHLIB_LD -      Base command to use for combining object files
+#                       into a shared library.
+#       SHLIB_LD_LIBS - Dependent libraries for the linker to scan when
+#                       creating shared libraries.  This symbol typically
+#                       goes at the end of the "ld" commands that build
+#                       shared libraries. The value of the symbol is
+#                       "${LIBS}" if all of the dependent libraries should
+#                       be specified when creating a shared library.  If
+#                       dependent libraries should not be specified (as on
+#                       SunOS 4.x, where they cause the link to fail, or in
+#                       general if Tcl and Tk aren't themselves shared
+#                       libraries), then this symbol has an empty string
+#                       as its value.
+#       SHLIB_SUFFIX -  Suffix to use for the names of dynamically loadable
+#                       extensions.  An empty string means we don't know how
+#                       to use shared libraries on this platform.
+# TCL_SHLIB_LD_EXTRAS - Additional element which are added to SHLIB_LD_LIBS
+#  TK_SHLIB_LD_EXTRAS   for the build of Tcl and Tk, but not recorded in the
+#                       tclConfig.sh, since they are only used for the build
+#                       of Tcl and Tk. 
+#                       Examples: MacOS X records the library version and
+#                       compatibility version in the shared library.  But
+#                       of course the Tcl version of this is only used for Tcl.
+#       LIB_SUFFIX -    Specifies everything that comes after the "libfoo"
+#                       in a static or shared library name, using the $VERSION variable
+#                       to put the version in the right place.  This is used
+#                       by platforms that need non-standard library names.
+#                       Examples:  ${VERSION}.so.1.1 on NetBSD, since it needs
+#                       to have a version after the .so, and ${VERSION}.a
+#                       on AIX, since a shared library needs to have
+#                       a .a extension whereas shared objects for loadable
+#                       extensions have a .so extension.  Defaults to
+#                       ${VERSION}${SHLIB_SUFFIX}.
+#       TCL_NEEDS_EXP_FILE -
+#                       1 means that an export file is needed to link to a
+#                       shared library.
+#       TCL_EXP_FILE -  The name of the installed export / import file which
+#                       should be used to link to the Tcl shared library.
+#                       Empty if Tcl is unshared.
+#       TCL_BUILD_EXP_FILE -
+#                       The name of the built export / import file which
+#                       should be used to link to the Tcl shared library.
+#                       Empty if Tcl is unshared.
+#	CFLAGS_DEBUG -
+#			Flags used when running the compiler in debug mode
+#	CFLAGS_OPTIMIZE -
+#			Flags used when running the compiler in optimize mode
+#	CFLAGS -	Additional CFLAGS added as necessary (usually 64-bit)
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_CFLAGS], [
+
+    # Step 0.a: Enable 64 bit support?
+
+    AC_MSG_CHECKING([if 64bit support is requested])
+    AC_ARG_ENABLE(64bit,[  --enable-64bit          enable 64bit support (where applicable)],
+	[do64bit=$enableval], [do64bit=no])
+    AC_MSG_RESULT([$do64bit])
+
+    # Step 0.b: Enable Solaris 64 bit VIS support?
+
+    AC_MSG_CHECKING([if 64bit Sparc VIS support is requested])
+    AC_ARG_ENABLE(64bit-vis,[  --enable-64bit-vis      enable 64bit Sparc VIS support],
+	[do64bitVIS=$enableval], [do64bitVIS=no])
+    AC_MSG_RESULT([$do64bitVIS])
+
+    if test "$do64bitVIS" = "yes"; then
+	# Force 64bit on with VIS
+	do64bit=yes
+    fi
+
+    # Step 1: set the variable "system" to hold the name and version number
+    # for the system.
+
+    SC_CONFIG_SYSTEM
+
+    # Step 2: check for existence of -ldl library.  This is needed because
+    # Linux can use either -ldl or -ldld for dynamic loading.
+
+    AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
+
+    # Require ranlib early so we can override it in special cases below.
+
+    AC_REQUIRE([AC_PROG_RANLIB])
+
+    # Step 3: set configuration options based on system name and version.
+
+    do64bit_ok=no
+    LDFLAGS_ORIG="$LDFLAGS"
+    TCL_EXPORT_FILE_SUFFIX=""
+    UNSHARED_LIB_SUFFIX=""
+    TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`'
+    ECHO_VERSION='`echo ${VERSION}`'
+    TCL_LIB_VERSIONS_OK=ok
+    CFLAGS_DEBUG=-g
+    CFLAGS_OPTIMIZE=-O
+    if test "$GCC" = "yes" ; then
+	CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing"
+    else
+	CFLAGS_WARNING=""
+    fi
+    TCL_NEEDS_EXP_FILE=0
+    TCL_BUILD_EXP_FILE=""
+    TCL_EXP_FILE=""
+dnl FIXME: Replace AC_CHECK_PROG with AC_CHECK_TOOL once cross compiling is fixed.
+dnl AC_CHECK_TOOL(AR, ar)
+    AC_CHECK_PROG(AR, ar, ar)
+    if test "${AR}" = "" ; then
+	AC_MSG_ERROR([Required archive tool 'ar' not found on PATH.])
+    fi
+    STLIB_LD='${AR} cr'
+    LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
+    PLAT_OBJS=""
+    PLAT_SRCS=""
+    case $system in
+	AIX-*)
+	    if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
+		# AIX requires the _r compiler when gcc isn't being used
+		case "${CC}" in
+		    *_r)
+			# ok ...
+			;;
+		    *)
+			CC=${CC}_r
+			;;
+		esac
+		AC_MSG_RESULT([Using $CC for compiling with threads])
+	    fi
+	    LIBS="$LIBS -lc"
+	    SHLIB_CFLAGS=""
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    DL_OBJS="tclLoadDl.o"
+	    LD_LIBRARY_PATH_VAR="LIBPATH"
+
+	    # Check to enable 64-bit flags for compiler/linker on AIX 4+
+	    if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then
+		if test "$GCC" = "yes" ; then
+		    AC_MSG_WARN([64bit mode not supported with GCC on $system])
+		else 
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS -q64"
+		    LDFLAGS="$LDFLAGS -q64"
+		    RANLIB="${RANLIB} -X64"
+		    AR="${AR} -X64"
+		    SHLIB_LD_FLAGS="-b64"
+		fi
+	    fi
+
+	    if test "`uname -m`" = "ia64" ; then
+		# AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		# AIX-5 has dl* in libc.so
+		DL_LIBS=""
+		if test "$GCC" = "yes" ; then
+		    CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		else
+		    CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
+		fi
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    else
+		if test "$GCC" = "yes" ; then
+		    SHLIB_LD="gcc -shared"
+		else
+		    SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
+		fi
+		SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}"
+		DL_LIBS="-ldl"
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		TCL_NEEDS_EXP_FILE=1
+		TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp'
+	    fi
+
+	    # AIX v<=4.1 has some different flags than 4.2+
+	    if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then
+		LIBOBJS="$LIBOBJS tclLoadAix.o"
+		DL_LIBS="-lld"
+	    fi
+
+	    # On AIX <=v4 systems, libbsd.a has to be linked in to support
+	    # non-blocking file IO.  This library has to be linked in after
+	    # the MATH_LIBS or it breaks the pow() function.  The way to
+	    # insure proper sequencing, is to add it to the tail of MATH_LIBS.
+	    # This library also supplies gettimeofday.
+	    #
+	    # AIX does not have a timezone field in struct tm. When the AIX
+	    # bsd library is used, the timezone global and the gettimeofday
+	    # methods are to be avoided for timezone deduction instead, we
+	    # deduce the timezone by comparing the localtime result on a
+	    # known GMT value.
+
+	    AC_CHECK_LIB(bsd, gettimeofday, libbsd=yes, libbsd=no)
+	    if test $libbsd = yes; then
+	    	MATH_LIBS="$MATH_LIBS -lbsd"
+	    	AC_DEFINE(USE_DELTA_FOR_TZ)
+	    fi
+	    ;;
+	BeOS*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="${CC} -nostart"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+
+	    #-----------------------------------------------------------
+	    # Check for inet_ntoa in -lbind, for BeOS (which also needs
+	    # -lsocket, even if the network functions are in -lnet which
+	    # is always linked to, for compatibility.
+	    #-----------------------------------------------------------
+	    AC_CHECK_LIB(bind, inet_ntoa, [LIBS="$LIBS -lbind -lsocket"])
+	    ;;
+	BSD/OS-2.1*|BSD/OS-3*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="shlicc -r"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	BSD/OS-4.*)
+	    SHLIB_CFLAGS="-export-dynamic -fPIC"
+	    SHLIB_LD="cc -shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	dgux*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	HP-UX-*.11.*)
+	    # Use updated header definitions where possible
+	    AC_DEFINE(_XOPEN_SOURCE)          # Use the XOPEN network library
+	    AC_DEFINE(_XOPEN_SOURCE_EXTENDED) # Use the XOPEN network library
+	    LIBS="$LIBS -lxnet"               # Use the XOPEN network library
+
+	    if test "`uname -m`" = "ia64" ; then
+		SHLIB_SUFFIX=".so"
+	    else
+		SHLIB_SUFFIX=".sl"
+	    fi
+	    AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS='${LIBS}'
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="gcc -shared"
+		SHLIB_LD_LIBS='${LIBS}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+
+	    # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc
+	    #CFLAGS="$CFLAGS +DAportable"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		if test "$GCC" = "yes" ; then
+		    hpux_arch=`${CC} -dumpmachine`
+		    case $hpux_arch in
+			hppa64*)
+			    # 64-bit gcc in use.  Fix flags for GNU ld.
+			    do64bit_ok=yes
+			    SHLIB_LD="${CC} -shared"
+			    SHLIB_LD_LIBS='${LIBS}'
+			    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+			    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+			    ;;
+			*)
+			    AC_MSG_WARN([64bit mode not supported with GCC on $system])
+			    ;;
+		    esac
+		else
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS +DD64"
+		    LDFLAGS="$LDFLAGS +DD64"
+		fi
+	    fi
+	    ;;
+	HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
+	    SHLIB_SUFFIX=".sl"
+	    AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS=""
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    ;;
+	IRIX-4.*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_SUFFIX=".a"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a'
+	    ;;
+	IRIX-5.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    ;;
+	IRIX-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mabi=n32"
+		LDFLAGS="$LDFLAGS -mabi=n32"
+	    else
+		case $system in
+		    IRIX-6.3)
+			# Use to build 6.2 compatible binaries on 6.3.
+			CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS"
+			;;
+		    *)
+			CFLAGS="$CFLAGS -n32"
+			;;
+		esac
+		LDFLAGS="$LDFLAGS -n32"
+	    fi
+	    ;;
+	IRIX64-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+
+	    # Check to enable 64-bit flags for compiler/linker
+
+	    if test "$do64bit" = "yes" ; then
+	        if test "$GCC" = "yes" ; then
+	            AC_MSG_WARN([64bit mode not supported by gcc])
+	        else
+	            do64bit_ok=yes
+	            SHLIB_LD="ld -64 -shared -rdata_shared"
+	            CFLAGS="$CFLAGS -64"
+	            LDFLAGS="$LDFLAGS -64"
+	        fi
+	    fi
+	    ;;
+	Linux*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    CFLAGS_OPTIMIZE=-O2
+	    # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings 
+	    # when you inline the string and math operations.  Turn this off to
+	    # get rid of the warnings.
+	    #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
+
+	    if test "$have_dl" = yes; then
+		SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS}'
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS="-ldl"
+		LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    else
+		AC_CHECK_HEADER(dld.h, [
+		    SHLIB_LD="ld -shared"
+		    DL_OBJS="tclLoadDld.o"
+		    DL_LIBS="-ldld"
+		    CC_SEARCH_FLAGS=""
+		    LD_SEARCH_FLAGS=""])
+	    fi
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+	    if test $do64bit = yes; then
+		AC_CACHE_CHECK([if compiler accepts -m64 flag], tcl_cv_cc_m64, [
+		    hold_cflags=$CFLAGS
+		    CFLAGS="$CFLAGS -m64"
+		    AC_TRY_LINK(,, tcl_cv_cc_m64=yes, tcl_cv_cc_m64=no)
+		    CFLAGS=$hold_cflags])
+		if test $tcl_cv_cc_m64 = yes; then
+		    CFLAGS="$CFLAGS -m64"
+		    do64bit_ok=yes
+		fi
+	    fi
+
+	    # The combo of gcc + glibc has a bug related
+	    # to inlining of functions like strtod(). The
+	    # -fno-builtin flag should address this problem
+	    # but it does not work. The -fno-inline flag
+	    # is kind of overkill but it works.
+	    # Disable inlining only when one of the
+	    # files in compat/*.c is being linked in.
+	    if test x"${LIBOBJS}" != x ; then
+	        CFLAGS="$CFLAGS -fno-inline"
+	    fi
+
+	    # XIM peeking works under XFree86.
+	    AC_DEFINE(PEEK_XCLOSEIM)
+
+	    ;;
+	GNU*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    if test "$have_dl" = yes; then
+		SHLIB_LD="${CC} -shared"
+		DL_OBJS=""
+		DL_LIBS="-ldl"
+		LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+		CC_SEARCH_FLAGS=""
+		LD_SEARCH_FLAGS=""
+	    else
+		AC_CHECK_HEADER(dld.h, [
+		    SHLIB_LD="ld -shared"
+		    DL_OBJS=""
+		    DL_LIBS="-ldld"
+		    CC_SEARCH_FLAGS=""
+		    LD_SEARCH_FLAGS=""])
+	    fi
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+	    ;;
+	Lynx*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    CFLAGS_OPTIMIZE=-02
+	    SHLIB_LD="${CC} -shared "
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-mshared -ldl"
+	    LD_FLAGS="-Wl,--export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    ;;
+	MP-RAS-02*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	MP-RAS-*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	NetBSD-*|FreeBSD-[[1-2]].*)
+	    # Not available on all versions:  check for include file.
+	    AC_CHECK_HEADER(dlfcn.h, [
+		# NetBSD/SPARC needs -fPIC, -fpic will not do.
+		SHLIB_CFLAGS="-fPIC"
+		SHLIB_LD="ld -Bshareable -x"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".so"
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+		AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
+		    AC_EGREP_CPP(yes, [
+#ifdef __ELF__
+	yes
+#endif
+		    ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
+		if test $tcl_cv_ld_elf = yes; then
+		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+		else
+		    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+		fi
+	    ], [
+		SHLIB_CFLAGS=""
+		SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".a"
+		DL_OBJS="tclLoadAout.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    ])
+
+	    # FreeBSD doesn't handle version numbers with dots.
+
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	OpenBSD-*)
+	    case `arch -s` in
+	    m88k|vax)
+		SHLIB_CFLAGS=""
+		SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".a"
+		DL_OBJS="tclLoadAout.o"
+		DL_LIBS=""
+		LDFLAGS=""
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+		;;
+	    *)
+		# OpenBSD/SPARC[64] needs -fPIC, -fpic will not do.
+		case `machine` in
+		sparc|sparc64)
+		    SHLIB_CFLAGS="-fPIC";;
+	        *)
+		    SHLIB_CFLAGS="-fpic";;
+	        esac
+		SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}"
+		SHLIB_LD_LIBS='${LIBS}'
+		SHLIB_SUFFIX=".so"
+		DL_OBJS="tclLoadDl.o"
+		DL_LIBS=""
+		CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+		AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
+		    AC_EGREP_CPP(yes, [
+#ifdef __ELF__
+	yes
+#endif
+		    ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
+		if test $tcl_cv_ld_elf = yes; then
+		    LDFLAGS=-Wl,-export-dynamic
+		else
+		    LDFLAGS=""
+	        fi
+		;;
+	    esac
+
+	    # OpenBSD doesn't do version numbers with dots.
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	FreeBSD-*)
+	    # FreeBSD 3.* and greater have ELF.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "${TCL_THREADS}" = "1" ; then
+		# The -pthread needs to go in the CFLAGS, not LIBS
+		LIBS=`echo $LIBS | sed s/-pthread//`
+		CFLAGS="$CFLAGS -pthread"
+	    	LDFLAGS="$LDFLAGS -pthread"
+	    fi
+	    case $system in
+	    FreeBSD-3.*)
+	    	# FreeBSD-3 doesn't handle version numbers with dots.
+	    	UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    	SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
+	    	TCL_LIB_VERSIONS_OK=nodots
+		;;
+	    esac
+	    ;;
+	Darwin-*)
+	    CFLAGS_OPTIMIZE="-Os"
+	    SHLIB_CFLAGS="-fno-common"
+	    # To avoid discrepancies between what headers configure sees during
+	    # preprocessing tests and compiling tests, move any -isysroot and
+	    # -mmacosx-version-min flags from CFLAGS to CPPFLAGS:
+	    CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \
+		awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
+		if ([$]i~/^(isysroot|mmacosx-version-min)/) print "-"[$]i}'`"
+	    CFLAGS="`echo " ${CFLAGS}" | \
+		awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
+		if (!([$]i~/^(isysroot|mmacosx-version-min)/)) print "-"[$]i}'`"
+	    if test $do64bit = yes; then
+		case `arch` in
+		    ppc)
+			AC_CACHE_CHECK([if compiler accepts -arch ppc64 flag],
+				tcl_cv_cc_arch_ppc64, [
+			    hold_cflags=$CFLAGS
+			    CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+			    AC_TRY_LINK(,, tcl_cv_cc_arch_ppc64=yes,
+				    tcl_cv_cc_arch_ppc64=no)
+			    CFLAGS=$hold_cflags])
+			if test $tcl_cv_cc_arch_ppc64 = yes; then
+			    CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+			    do64bit_ok=yes
+			fi;;
+		    i386)
+			AC_CACHE_CHECK([if compiler accepts -arch x86_64 flag],
+				tcl_cv_cc_arch_x86_64, [
+			    hold_cflags=$CFLAGS
+			    CFLAGS="$CFLAGS -arch x86_64"
+			    AC_TRY_LINK(,, tcl_cv_cc_arch_x86_64=yes,
+				    tcl_cv_cc_arch_x86_64=no)
+			    CFLAGS=$hold_cflags])
+			if test $tcl_cv_cc_arch_x86_64 = yes; then
+			    CFLAGS="$CFLAGS -arch x86_64"
+			    do64bit_ok=yes
+			fi;;
+		    *)
+			AC_MSG_WARN([Don't know how enable 64-bit on architecture `arch`]);;
+		esac
+	    else
+		# Check for combined 32-bit and 64-bit fat build
+		echo "$CFLAGS " | grep -E -q -- '-arch (ppc64|x86_64) ' && \
+		    echo "$CFLAGS " | grep -E -q -- '-arch (ppc|i386) ' && \
+		    fat_32_64=yes
+	    fi
+	    SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}'
+	    AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
+		AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no)
+		LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_single_module = yes; then
+		SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
+	    fi
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".dylib"
+	    DL_OBJS="tclLoadDyld.o"
+	    DL_LIBS=""
+	    # Don't use -prebind when building for Mac OS X 10.4 or later only:
+	    test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\\.' '{print int([$]2)}'`" -lt 4 -a \
+		"`echo "${CPPFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int([$]2)}'`" -lt 4 && \
+		LDFLAGS="$LDFLAGS -prebind"
+	    LDFLAGS="$LDFLAGS -headerpad_max_install_names"
+	    AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+		AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes, tcl_cv_ld_search_paths_first=no)
+		LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_search_paths_first = yes; then
+		LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
+	    PLAT_OBJS=\$\(MAC\_OSX_OBJS\)
+	    PLAT_SRCS=\$\(MAC\_OSX_SRCS\)
+	    AC_MSG_CHECKING([whether to use CoreFoundation])
+	    AC_ARG_ENABLE(corefoundation, [  --enable-corefoundation use CoreFoundation API [--enable-corefoundation]],
+		[tcl_corefoundation=$enableval], [tcl_corefoundation=yes])
+	    AC_MSG_RESULT([$tcl_corefoundation])
+	    if test $tcl_corefoundation = yes; then
+		AC_CACHE_CHECK([for CoreFoundation.framework], tcl_cv_lib_corefoundation, [
+		    hold_libs=$LIBS
+		    if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
+			# On Tiger there is no 64-bit CF, so remove 64-bit archs
+			# from CFLAGS et al. while testing for presence of CF.
+			# 64-bit CF is disabled in tclUnixPort.h if necessary.
+			eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc64 / /g" -e "s/-arch x86_64 / /g"`"'
+		    done; fi
+		    LIBS="$LIBS -framework CoreFoundation"
+		    AC_TRY_LINK([#include <CoreFoundation/CoreFoundation.h>], 
+			[CFBundleRef b = CFBundleGetMainBundle();], 
+			tcl_cv_lib_corefoundation=yes, tcl_cv_lib_corefoundation=no)
+		    if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
+			eval $v'="$hold_'$v'"'
+		    done; fi; LIBS=$hold_libs])
+		if test $tcl_cv_lib_corefoundation = yes; then
+		    LIBS="$LIBS -framework CoreFoundation"
+		    AC_DEFINE(HAVE_COREFOUNDATION)
+		else
+		    tcl_corefoundation=no
+		fi
+		if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then
+		    AC_CACHE_CHECK([for 64-bit CoreFoundation], tcl_cv_lib_corefoundation_64, [
+			for v in CFLAGS CPPFLAGS LDFLAGS; do
+			    eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"'
+			done
+			AC_TRY_LINK([#include <CoreFoundation/CoreFoundation.h>], 
+			    [CFBundleRef b = CFBundleGetMainBundle();], 
+			    tcl_cv_lib_corefoundation_64=yes, tcl_cv_lib_corefoundation_64=no)
+			for v in CFLAGS CPPFLAGS LDFLAGS; do
+			    eval $v'="$hold_'$v'"'
+			done])
+		    if test $tcl_cv_lib_corefoundation_64 = no; then
+			AC_DEFINE(NO_COREFOUNDATION_64)
+		    fi
+		fi
+	    fi
+	    AC_DEFINE(MAC_OSX_TCL)
+	    ;;
+	NEXTSTEP-*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="cc -nostdlib -r"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadNext.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OS/390-*)
+	    CFLAGS_OPTIMIZE=""		# Optimizer is buggy
+	    AC_DEFINE(_OE_SOCKETS)	# needed in sys/socket.h
+	    ;;      
+	OSF1-1.0|OSF1-1.1|OSF1-1.2)
+	    # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1
+	    SHLIB_CFLAGS=""
+	    # Hack: make package name same as library name
+	    SHLIB_LD='ld -R -export $@:'
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadOSF.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-1.*)
+	    # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
+	    SHLIB_CFLAGS="-fPIC"
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD="ld -shared"
+	    else
+	        SHLIB_LD="ld -non_shared"
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-V*)
+	    # Digital OSF/1
+	    SHLIB_CFLAGS=""
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD='ld -shared -expect_unresolved "*"'
+	    else
+	        SHLIB_LD='ld -non_shared -expect_unresolved "*"'
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mieee"
+            else
+		CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"
+	    fi
+	    # see pthread_intro(3) for pthread support on osf1, k.furukawa
+	    if test "${TCL_THREADS}" = "1" ; then
+		CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
+		CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
+		LIBS=`echo $LIBS | sed s/-lpthreads//`
+		if test "$GCC" = "yes" ; then
+		    LIBS="$LIBS -lpthread -lmach -lexc"
+		else
+		    CFLAGS="$CFLAGS -pthread"
+		    LDFLAGS="$LDFLAGS -pthread"
+		fi
+	    fi
+
+	    ;;
+	QNX-6*)
+	    # QNX RTP
+	    # This may work for all QNX, but it was only reported for v6.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    # dlopen is in -lc on QNX
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	RISCos-*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".a"
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    ;;
+	SCO_SV-3.2*)
+	    # Note, dlopen is available only on SCO 3.2.5 and greater. However,
+	    # this test works, since "uname -s" was non-standard in 3.2.4 and
+	    # below.
+	    if test "$GCC" = "yes" ; then
+	    	SHLIB_CFLAGS="-fPIC -melf"
+	    	LDFLAGS="$LDFLAGS -melf -Wl,-Bexport"
+	    else
+	    	SHLIB_CFLAGS="-Kpic -belf"
+	    	LDFLAGS="$LDFLAGS -belf -Wl,-Bexport"
+	    fi
+	    SHLIB_LD="ld -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SINIX*5.4*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SunOS-4*)
+	    SHLIB_CFLAGS="-PIC"
+	    SHLIB_LD="ld"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+
+	    # SunOS can't handle version numbers with dots in them in library
+	    # specs, like -ltcl7.5, so use -ltcl75 instead.  Also, it
+	    # requires an extra version number at the end of .so file names.
+	    # So, the library has to have a name like libtcl75.so.1.0
+
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	SunOS-5.[[0-6]])
+	    # Careful to not let 5.10+ fall into this case
+
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+	    AC_DEFINE(_REENTRANT)
+	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    else
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+	    ;;
+	SunOS-5*)
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+	    AC_DEFINE(_REENTRANT)
+	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		arch=`isainfo`
+		if test "$arch" = "sparcv9 sparc" ; then
+			if test "$GCC" = "yes" ; then
+			    if test "`gcc -dumpversion | awk -F. '{print [$]1}'`" -lt "3" ; then
+				AC_MSG_WARN([64bit mode not supported with GCC < 3.2 on $system])
+			    else
+				do64bit_ok=yes
+				CFLAGS="$CFLAGS -m64 -mcpu=v9"
+				LDFLAGS="$LDFLAGS -m64 -mcpu=v9"
+				SHLIB_CFLAGS="-fPIC"
+			    fi
+			else
+			    do64bit_ok=yes
+			    if test "$do64bitVIS" = "yes" ; then
+				CFLAGS="$CFLAGS -xarch=v9a"
+			    	LDFLAGS="$LDFLAGS -xarch=v9a"
+			    else
+				CFLAGS="$CFLAGS -xarch=v9"
+			    	LDFLAGS="$LDFLAGS -xarch=v9"
+			    fi
+			    # Solaris 64 uses this as well
+			    #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64"
+			fi
+		elif test "$arch" = "amd64 i386" ; then
+		    if test "$GCC" = "yes" ; then
+			AC_MSG_WARN([64bit mode not supported with GCC on $system])
+		    else
+			do64bit_ok=yes
+			CFLAGS="$CFLAGS -xarch=amd64"
+			LDFLAGS="$LDFLAGS -xarch=amd64"
+		    fi
+		else
+		    AC_MSG_WARN([64bit mode not supported for $arch])
+		fi
+	    fi
+	    
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		if test "$do64bit_ok" = "yes" ; then
+		    # We need to specify -static-libgcc or we need to
+		    # add the path to the sparv9 libgcc.
+		    SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc"
+		    # for finding sparcv9 libgcc, get the regular libgcc
+		    # path, remove so name and append 'sparcv9'
+		    #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..."
+		    #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir"
+		fi
+	    else
+		case $system in
+		    SunOS-5.[[1-9]][[0-9]]*)
+			SHLIB_LD='${CC} -G -z text ${LDFLAGS}';;
+		    *)
+			SHLIB_LD="/usr/ccs/bin/ld -G -z text";;
+		esac
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    fi
+	    ;;
+	ULTRIX-4.*)
+	    SHLIB_CFLAGS="-G 0"
+	    SHLIB_SUFFIX=".a"
+	    SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    DL_OBJS="tclLoadAout.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -Wl,-D,08000000"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    if test "$GCC" != "yes" ; then
+		CFLAGS="$CFLAGS -DHAVE_TZSET -std1"
+	    fi
+	    ;;
+	UNIX_SV* | UnixWare-5*)
+	    SHLIB_CFLAGS="-KPIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
+	    # that don't grok the -Bexport option.  Test that it does.
+	    AC_CACHE_CHECK([for ld accepts -Bexport flag], tcl_cv_ld_Bexport, [
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+		AC_TRY_LINK(, [int i;], tcl_cv_ld_Bexport=yes, tcl_cv_ld_Bexport=no)
+	        LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_Bexport = yes; then
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+    esac
+
+    if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then
+	AC_MSG_WARN([64bit support being disabled -- don't know magic for this platform])
+    fi
+
+dnl # Add any CPPFLAGS set in the environment to our CFLAGS, but delay doing so
+dnl # until the end of configure, as configure's compile and link tests use
+dnl # both CPPFLAGS and CFLAGS (unlike our compile and link) but configure's
+dnl # preprocessing tests use only CPPFLAGS.
+    SC_CONFIG_COMMANDS_PRE([CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS=""])
+
+    # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic
+    # Loading for Tcl -- What Became of It?".  Proc. 2nd Tcl/Tk Workshop,
+    # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need
+    # to determine which of several header files defines the a.out file
+    # format (a.out.h, sys/exec.h, or sys/exec_aout.h).  At present, we
+    # support only a file format that is more or less version-7-compatible. 
+    # In particular,
+    #	- a.out files must begin with `struct exec'.
+    #	- the N_TXTOFF on the `struct exec' must compute the seek address
+    #	  of the text segment
+    #	- The `struct exec' must contain a_magic, a_text, a_data, a_bss
+    #	  and a_entry fields.
+    # The following compilation should succeed if and only if either sys/exec.h
+    # or a.out.h is usable for the purpose.
+    #
+    # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the
+    # `struct exec' includes a second header that contains information that
+    # duplicates the v7 fields that are needed.
+
+    if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
+	AC_CACHE_CHECK([sys/exec.h], tcl_cv_sysexec_h, [
+	AC_TRY_COMPILE([#include <sys/exec.h>],[
+	    struct exec foo;
+	    unsigned long seek;
+	    int flag;
+#if defined(__mips) || defined(mips)
+	    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+	    seek = N_TXTOFF (foo);
+#endif
+	    flag = (foo.a_magic == OMAGIC);
+	    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+    ], tcl_cv_sysexec_h=usable, tcl_cv_sysexec_h=unusable)])
+	if test $tcl_cv_sysexec_h = usable; then
+	    AC_DEFINE(USE_SYS_EXEC_H)
+	else
+	    AC_CACHE_CHECK([a.out.h], tcl_cv_aout_h, [
+	    AC_TRY_COMPILE([#include <a.out.h>],[
+		struct exec foo;
+		unsigned long seek;
+		int flag;
+#if defined(__mips) || defined(mips)
+		seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+		seek = N_TXTOFF (foo);
+#endif
+		flag = (foo.a_magic == OMAGIC);
+		return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+	    ], tcl_cv_aout_h=usable, tcl_cv_aout_h=unusable)])
+	    if test $tcl_cv_aout_h = usable; then
+		AC_DEFINE(USE_A_OUT_H)
+	    else
+		AC_CACHE_CHECK([sys/exec_aout.h], tcl_cv_sysexecaout_h, [
+		AC_TRY_COMPILE([#include <sys/exec_aout.h>],[
+		    struct exec foo;
+		    unsigned long seek;
+		    int flag;
+#if defined(__mips) || defined(mips)
+		    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
+#else
+		    seek = N_TXTOFF (foo);
+#endif
+		    flag = (foo.a_midmag == OMAGIC);
+		    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
+		], tcl_cv_sysexecaout_h=usable, tcl_cv_sysexecaout_h=unusable)])
+		if test $tcl_cv_sysexecaout_h = usable; then
+		    AC_DEFINE(USE_SYS_EXEC_AOUT_H)
+		else
+		    DL_OBJS=""
+		fi
+	    fi
+	fi
+    fi
+
+    # Step 5: disable dynamic loading if requested via a command-line switch.
+
+    AC_ARG_ENABLE(load, [  --disable-load          disallow dynamic loading and "load" command],
+	[tcl_ok=$enableval], [tcl_ok=yes])
+    if test "$tcl_ok" = "no"; then
+	DL_OBJS=""
+    fi
+
+    if test "x$DL_OBJS" != "x" ; then
+	BUILD_DLTEST="\$(DLTEST_TARGETS)"
+    else
+	echo "Can't figure out how to do dynamic loading or shared libraries"
+	echo "on this system."
+	SHLIB_CFLAGS=""
+	SHLIB_LD=""
+	SHLIB_SUFFIX=""
+	DL_OBJS="tclLoadNone.o"
+	DL_LIBS=""
+	LDFLAGS="$LDFLAGS_ORIG"
+	CC_SEARCH_FLAGS=""
+	LD_SEARCH_FLAGS=""
+	BUILD_DLTEST=""
+    fi
+
+    # If we're running gcc, then change the C flags for compiling shared
+    # libraries to the right flags for gcc, instead of those for the
+    # standard manufacturer compiler.
+
+    if test "$DL_OBJS" != "tclLoadNone.o" ; then
+	if test "$GCC" = "yes" ; then
+	    case $system in
+		AIX-*)
+		    ;;
+		BSD/OS*)
+		    ;;
+		IRIX*)
+		    ;;
+		NetBSD-*|FreeBSD-*|OpenBSD-*)
+		    ;;
+		Darwin-*)
+		    ;;
+		RISCos-*)
+		    ;;
+		SCO_SV-3.2*)
+		    ;;
+		ULTRIX-4.*)
+		    ;;
+		*)
+		    SHLIB_CFLAGS="-fPIC"
+		    ;;
+	    esac
+	fi
+    fi
+
+    if test "$SHARED_LIB_SUFFIX" = "" ; then
+	SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}${SHLIB_SUFFIX}'
+    fi
+    if test "$UNSHARED_LIB_SUFFIX" = "" ; then
+	UNSHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a'
+    fi
+
+    if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then
+        LIB_SUFFIX=${SHARED_LIB_SUFFIX}
+        MAKE_LIB='${SHLIB_LD} -o [$]@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}'
+        INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
+    else
+        LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}
+
+        if test "$RANLIB" = "" ; then
+            MAKE_LIB='$(STLIB_LD) [$]@ ${OBJS}'
+            INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
+        else
+            MAKE_LIB='${STLIB_LD} [$]@ ${OBJS} ; ${RANLIB} [$]@'
+            INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(LIB_FILE))'
+        fi
+
+dnl        Not at all clear what this was doing in Tcl's configure.in
+dnl        or why it was needed was needed. In any event, this sort of
+dnl        things needs to be done in the big loop above.
+dnl        REMOVE THIS BLOCK LATER! (mdejong)
+dnl        case $system in
+dnl            BSD/OS*)
+dnl                ;;
+dnl            AIX-[[1-4]].*)
+dnl                ;;
+dnl            *)
+dnl                SHLIB_LD_LIBS=""
+dnl                ;;
+dnl        esac
+    fi
+
+
+    # Stub lib does not depend on shared/static configuration
+    if test "$RANLIB" = "" ; then
+        MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS}'
+        INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)'
+    else
+        MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS} ; ${RANLIB} [$]@'
+        INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(STUB_LIB_FILE))'
+    fi
+
+
+    AC_SUBST(DL_LIBS)
+
+    AC_SUBST(DL_OBJS)
+    AC_SUBST(PLAT_OBJS)
+    AC_SUBST(PLAT_SRCS)
+    AC_SUBST(CFLAGS)
+    AC_SUBST(CFLAGS_DEBUG)
+    AC_SUBST(CFLAGS_OPTIMIZE)
+    AC_SUBST(CFLAGS_WARNING)
+
+    AC_SUBST(LDFLAGS)
+    AC_SUBST(LDFLAGS_DEBUG)
+    AC_SUBST(LDFLAGS_OPTIMIZE)
+    AC_SUBST(CC_SEARCH_FLAGS)
+    AC_SUBST(LD_SEARCH_FLAGS)
+
+    AC_SUBST(STLIB_LD)
+    AC_SUBST(SHLIB_LD)
+    AC_SUBST(TCL_SHLIB_LD_EXTRAS)
+    AC_SUBST(TK_SHLIB_LD_EXTRAS)
+    AC_SUBST(SHLIB_LD_LIBS)
+    AC_SUBST(SHLIB_CFLAGS)
+    AC_SUBST(SHLIB_SUFFIX)
+
+    AC_SUBST(MAKE_LIB)
+    AC_SUBST(MAKE_STUB_LIB)
+    AC_SUBST(INSTALL_LIB)
+    AC_SUBST(INSTALL_STUB_LIB)
+    AC_SUBST(RANLIB)
+])
+
+#--------------------------------------------------------------------
+# SC_SERIAL_PORT
+#
+#	Determine which interface to use to talk to the serial port.
+#	Note that #include lines must begin in leftmost column for
+#	some compilers to recognize them as preprocessor directives,
+#	and some build environments have stdin not pointing at a
+#	pseudo-terminal (usually /dev/null instead.)
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines only one of the following vars:
+#		HAVE_SYS_MODEM_H
+#		USE_TERMIOS
+#		USE_TERMIO
+#		USE_SGTTY
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_SERIAL_PORT], [
+    AC_CHECK_HEADERS(sys/modem.h)
+    AC_CACHE_CHECK([termios vs. termio vs. sgtty], tcl_cv_api_serial, [
+    AC_TRY_RUN([
+#include <termios.h>
+
+int main() {
+    struct termios t;
+    if (tcgetattr(0, &t) == 0) {
+	cfsetospeed(&t, 0);
+	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <termio.h>
+
+int main() {
+    struct termio t;
+    if (ioctl(0, TCGETA, &t) == 0) {
+	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <sgtty.h>
+
+int main() {
+    struct sgttyb t;
+    if (ioctl(0, TIOCGETP, &t) == 0) {
+	t.sg_ospeed = 0;
+	t.sg_flags |= ODDP | EVENP | RAW;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <termios.h>
+#include <errno.h>
+
+int main() {
+    struct termios t;
+    if (tcgetattr(0, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	cfsetospeed(&t, 0);
+	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no; then
+	AC_TRY_RUN([
+#include <termio.h>
+#include <errno.h>
+
+int main() {
+    struct termio t;
+    if (ioctl(0, TCGETA, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+    }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no; then
+	AC_TRY_RUN([
+#include <sgtty.h>
+#include <errno.h>
+
+int main() {
+    struct sgttyb t;
+    if (ioctl(0, TIOCGETP, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	t.sg_ospeed = 0;
+	t.sg_flags |= ODDP | EVENP | RAW;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
+    fi])
+    case $tcl_cv_api_serial in
+	termios) AC_DEFINE(USE_TERMIOS);;
+	termio)  AC_DEFINE(USE_TERMIO);;
+	sgtty)   AC_DEFINE(USE_SGTTY);;
+    esac
+])
+
+#--------------------------------------------------------------------
+# SC_MISSING_POSIX_HEADERS
+#
+#	Supply substitutes for missing POSIX header files.  Special
+#	notes:
+#	    - stdlib.h doesn't define strtol, strtoul, or
+#	      strtod insome versions of SunOS
+#	    - some versions of string.h don't declare procedures such
+#	      as strstr
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		NO_DIRENT_H
+#		NO_ERRNO_H
+#		NO_VALUES_H
+#		HAVE_LIMITS_H or NO_LIMITS_H
+#		NO_STDLIB_H
+#		NO_STRING_H
+#		NO_SYS_WAIT_H
+#		NO_DLFCN_H
+#		HAVE_UNISTD_H
+#		HAVE_SYS_PARAM_H
+#
+#		HAVE_STRING_H ?
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_MISSING_POSIX_HEADERS], [
+    AC_CACHE_CHECK([dirent.h], tcl_cv_dirent_h, [
+    AC_TRY_LINK([#include <sys/types.h>
+#include <dirent.h>], [
+#ifndef _POSIX_SOURCE
+#   ifdef __Lynx__
+	/*
+	 * Generate compilation error to make the test fail:  Lynx headers
+	 * are only valid if really in the POSIX environment.
+	 */
+
+	missing_procedure();
+#   endif
+#endif
+DIR *d;
+struct dirent *entryPtr;
+char *p;
+d = opendir("foobar");
+entryPtr = readdir(d);
+p = entryPtr->d_name;
+closedir(d);
+], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no)])
+
+    if test $tcl_cv_dirent_h = no; then
+	AC_DEFINE(NO_DIRENT_H)
+    fi
+
+    AC_CHECK_HEADER(errno.h, , [AC_DEFINE(NO_ERRNO_H)])
+    AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H)])
+    AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H)])
+    AC_CHECK_HEADER(limits.h,
+	[AC_DEFINE(HAVE_LIMITS_H)], [AC_DEFINE(NO_LIMITS_H)])
+    AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0)
+    AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strtoul, stdlib.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strtod, stdlib.h, , tcl_ok=0)
+    if test $tcl_ok = 0; then
+	AC_DEFINE(NO_STDLIB_H)
+    fi
+    AC_CHECK_HEADER(string.h, tcl_ok=1, tcl_ok=0)
+    AC_EGREP_HEADER(strstr, string.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strerror, string.h, , tcl_ok=0)
+
+    # See also memmove check below for a place where NO_STRING_H can be
+    # set and why.
+
+    if test $tcl_ok = 0; then
+	AC_DEFINE(NO_STRING_H)
+    fi
+
+    AC_CHECK_HEADER(sys/wait.h, , [AC_DEFINE(NO_SYS_WAIT_H)])
+    AC_CHECK_HEADER(dlfcn.h, , [AC_DEFINE(NO_DLFCN_H)])
+
+    # OS/390 lacks sys/param.h (and doesn't need it, by chance).
+    AC_HAVE_HEADERS(unistd.h sys/param.h)
+])
+
+#--------------------------------------------------------------------
+# SC_PATH_X
+#
+#	Locate the X11 header files and the X11 library archive.  Try
+#	the ac_path_x macro first, but if it doesn't find the X stuff
+#	(e.g. because there's no xmkmf program) then check through
+#	a list of possible directories.  Under some conditions the
+#	autoconf macro will return an include directory that contains
+#	no include files, so double-check its result just to be safe.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Sets the the following vars:
+#		XINCLUDES
+#		XLIBSW
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_PATH_X], [
+    AC_PATH_X
+    not_really_there=""
+    if test "$no_x" = ""; then
+	if test "$x_includes" = ""; then
+	    AC_TRY_CPP([#include <X11/XIntrinsic.h>], , not_really_there="yes")
+	else
+	    if test ! -r $x_includes/X11/Intrinsic.h; then
+		not_really_there="yes"
+	    fi
+	fi
+    fi
+    if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
+	AC_MSG_CHECKING([for X11 header files])
+	found_xincludes="no"
+	AC_TRY_CPP([#include <X11/Intrinsic.h>], found_xincludes="yes", found_xincludes="no")
+	if test "$found_xincludes" = "no"; then
+	    dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include"
+	    for i in $dirs ; do
+		if test -r $i/X11/Intrinsic.h; then
+		    AC_MSG_RESULT([$i])
+		    XINCLUDES=" -I$i"
+		    found_xincludes="yes"
+		    break
+		fi
+	    done
+	fi
+    else
+	if test "$x_includes" != ""; then
+	    XINCLUDES="-I$x_includes"
+	    found_xincludes="yes"
+	fi
+    fi
+    if test found_xincludes = "no"; then
+	AC_MSG_RESULT([couldn't find any!])
+    fi
+
+    if test "$no_x" = yes; then
+	AC_MSG_CHECKING([for X11 libraries])
+	XLIBSW=nope
+	dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
+	for i in $dirs ; do
+	    if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then
+		AC_MSG_RESULT([$i])
+		XLIBSW="-L$i -lX11"
+		x_libraries="$i"
+		break
+	    fi
+	done
+    else
+	if test "$x_libraries" = ""; then
+	    XLIBSW=-lX11
+	else
+	    XLIBSW="-L$x_libraries -lX11"
+	fi
+    fi
+    if test "$XLIBSW" = nope ; then
+	AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow)
+    fi
+    if test "$XLIBSW" = nope ; then
+	AC_MSG_RESULT([could not find any!  Using -lX11.])
+	XLIBSW=-lX11
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_BLOCKING_STYLE
+#
+#	The statements below check for systems where POSIX-style
+#	non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. 
+#	On these systems (mostly older ones), use the old BSD-style
+#	FIONBIO approach instead.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		HAVE_SYS_IOCTL_H
+#		HAVE_SYS_FILIO_H
+#		USE_FIONBIO
+#		O_NONBLOCK
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_BLOCKING_STYLE], [
+    AC_CHECK_HEADERS(sys/ioctl.h)
+    AC_CHECK_HEADERS(sys/filio.h)
+    SC_CONFIG_SYSTEM
+    AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O])
+    case $system in
+	# There used to be code here to use FIONBIO under AIX.  However, it
+	# was reported that FIONBIO doesn't work under AIX 3.2.5.  Since
+	# using O_NONBLOCK seems fine under AIX 4.*, I removed the FIONBIO
+	# code (JO, 5/31/97).
+
+	OSF*)
+	    AC_DEFINE(USE_FIONBIO)
+	    AC_MSG_RESULT([FIONBIO])
+	    ;;
+	SunOS-4*)
+	    AC_DEFINE(USE_FIONBIO)
+	    AC_MSG_RESULT([FIONBIO])
+	    ;;
+	ULTRIX-4.*)
+	    AC_DEFINE(USE_FIONBIO)
+	    AC_MSG_RESULT([FIONBIO])
+	    ;;
+	*)
+	    AC_MSG_RESULT([O_NONBLOCK])
+	    ;;
+    esac
+])
+
+#--------------------------------------------------------------------
+# SC_TIME_HANLDER
+#
+#	Checks how the system deals with time.h, what time structures
+#	are used on the system, and what fields the structures have.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		USE_DELTA_FOR_TZ
+#		HAVE_TM_GMTOFF
+#		HAVE_TM_TZADJ
+#		HAVE_TIMEZONE_VAR
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TIME_HANDLER], [
+    AC_CHECK_HEADERS(sys/time.h)
+    AC_HEADER_TIME
+    AC_STRUCT_TIMEZONE
+
+    AC_CHECK_FUNCS(gmtime_r localtime_r)
+
+    AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, [
+	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;],
+	    tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no)])
+    if test $tcl_cv_member_tm_tzadj = yes ; then
+	AC_DEFINE(HAVE_TM_TZADJ)
+    fi
+
+    AC_CACHE_CHECK([tm_gmtoff in struct tm], tcl_cv_member_tm_gmtoff, [
+	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_gmtoff;],
+	    tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no)])
+    if test $tcl_cv_member_tm_gmtoff = yes ; then
+	AC_DEFINE(HAVE_TM_GMTOFF)
+    fi
+
+    #
+    # Its important to include time.h in this check, as some systems
+    # (like convex) have timezone functions, etc.
+    #
+    AC_CACHE_CHECK([long timezone variable], tcl_cv_timezone_long, [
+	AC_TRY_COMPILE([#include <time.h>],
+	    [extern long timezone;
+	    timezone += 1;
+	    exit (0);],
+	    tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no)])
+    if test $tcl_cv_timezone_long = yes ; then
+	AC_DEFINE(HAVE_TIMEZONE_VAR)
+    else
+	#
+	# On some systems (eg IRIX 6.2), timezone is a time_t and not a long.
+	#
+	AC_CACHE_CHECK([time_t timezone variable], tcl_cv_timezone_time, [
+	    AC_TRY_COMPILE([#include <time.h>],
+		[extern time_t timezone;
+		timezone += 1;
+		exit (0);],
+		tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no)])
+	if test $tcl_cv_timezone_time = yes ; then
+	    AC_DEFINE(HAVE_TIMEZONE_VAR)
+	fi
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_BUGGY_STRTOD
+#
+#	Under Solaris 2.4, strtod returns the wrong value for the
+#	terminating character under some conditions.  Check for this
+#	and if the problem exists use a substitute procedure
+#	"fixstrtod" (provided by Tcl) that corrects the error.
+#	Also, on Compaq's Tru64 Unix 5.0,
+#	strtod(" ") returns 0.0 instead of a failure to convert.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Might defines some of the following vars:
+#		strtod (=fixstrtod)
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_BUGGY_STRTOD], [
+    AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0)
+    if test "$tcl_strtod" = 1; then
+	AC_CACHE_CHECK([for Solaris2.4/Tru64 strtod bugs], tcl_cv_strtod_buggy,[
+	    AC_TRY_RUN([
+		extern double strtod();
+		int main() {
+		    char *infString="Inf", *nanString="NaN", *spaceString=" ";
+		    char *term;
+		    double value;
+		    value = strtod(infString, &term);
+		    if ((term != infString) && (term[-1] == 0)) {
+			exit(1);
+		    }
+		    value = strtod(nanString, &term);
+		    if ((term != nanString) && (term[-1] == 0)) {
+			exit(1);
+		    }
+		    value = strtod(spaceString, &term);
+		    if (term == (spaceString+1)) {
+			exit(1);
+		    }
+		    exit(0);
+		}], tcl_cv_strtod_buggy=ok, tcl_cv_strtod_buggy=buggy,
+		    tcl_cv_strtod_buggy=buggy)])
+	if test "$tcl_cv_strtod_buggy" = buggy; then
+	    LIBOBJS="$LIBOBJS fixstrtod.o"
+	    AC_DEFINE(strtod, fixstrtod)
+	fi
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_LINK_LIBS
+#
+#	Search for the libraries needed to link the Tcl shell.
+#	Things like the math library (-lm) and socket stuff (-lsocket vs.
+#	-lnsl) are dealt with here.
+#
+# Arguments:
+#	Requires the following vars to be set in the Makefile:
+#		DL_LIBS
+#		LIBS
+#		MATH_LIBS
+#	
+# Results:
+#
+#	Subst's the following var:
+#		TCL_LIBS
+#		MATH_LIBS
+#
+#	Might append to the following vars:
+#		LIBS
+#
+#	Might define the following vars:
+#		HAVE_NET_ERRNO_H
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_LINK_LIBS], [
+    #--------------------------------------------------------------------
+    # On a few very rare systems, all of the libm.a stuff is
+    # already in libc.a.  Set compiler flags accordingly.
+    # Also, Linux requires the "ieee" library for math to work
+    # right (and it must appear before "-lm").
+    #--------------------------------------------------------------------
+
+    AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm")
+    AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"])
+
+    #--------------------------------------------------------------------
+    # Interactive UNIX requires -linet instead of -lsocket, plus it
+    # needs net/errno.h to define the socket-related error codes.
+    #--------------------------------------------------------------------
+
+    AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"])
+    AC_CHECK_HEADER(net/errno.h, [AC_DEFINE(HAVE_NET_ERRNO_H)])
+
+    #--------------------------------------------------------------------
+    #	Check for the existence of the -lsocket and -lnsl libraries.
+    #	The order here is important, so that they end up in the right
+    #	order in the command line generated by make.  Here are some
+    #	special considerations:
+    #	1. Use "connect" and "accept" to check for -lsocket, and
+    #	   "gethostbyname" to check for -lnsl.
+    #	2. Use each function name only once:  can't redo a check because
+    #	   autoconf caches the results of the last check and won't redo it.
+    #	3. Use -lnsl and -lsocket only if they supply procedures that
+    #	   aren't already present in the normal libraries.  This is because
+    #	   IRIX 5.2 has libraries, but they aren't needed and they're
+    #	   bogus:  they goof up name resolution if used.
+    #	4. On some SVR4 systems, can't use -lsocket without -lnsl too.
+    #	   To get around this problem, check for both libraries together
+    #	   if -lsocket doesn't work by itself.
+    #--------------------------------------------------------------------
+
+    tcl_checkBoth=0
+    AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)
+    if test "$tcl_checkSocket" = 1; then
+	AC_CHECK_FUNC(setsockopt, , [AC_CHECK_LIB(socket, setsockopt,
+	    LIBS="$LIBS -lsocket", tcl_checkBoth=1)])
+    fi
+    if test "$tcl_checkBoth" = 1; then
+	tk_oldLibs=$LIBS
+	LIBS="$LIBS -lsocket -lnsl"
+	AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs])
+    fi
+    AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname,
+	    [LIBS="$LIBS -lnsl"])])
+    
+    # Don't perform the eval of the libraries here because DL_LIBS
+    # won't be set until we call SC_CONFIG_CFLAGS
+
+    TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
+    AC_SUBST(TCL_LIBS)
+    AC_SUBST(MATH_LIBS)
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_EARLY_FLAGS
+#
+#	Check for what flags are needed to be passed so the correct OS
+#	features are available.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		_ISOC99_SOURCE
+#		_LARGEFILE64_SOURCE
+#		_LARGEFILE_SOURCE64
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_EARLY_FLAG],[
+    AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]),
+	AC_TRY_COMPILE([$2], $3, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no,
+	    AC_TRY_COMPILE([[#define ]$1[ 1
+]$2], $3,
+		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=yes,
+		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=no)))
+    if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then
+	AC_DEFINE($1)
+	tcl_flags="$tcl_flags $1"
+    fi
+])
+
+AC_DEFUN([SC_TCL_EARLY_FLAGS],[
+    AC_MSG_CHECKING([for required early compiler flags])
+    tcl_flags=""
+    SC_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include <stdlib.h>],
+	[char *p = (char *)strtoll; char *q = (char *)strtoull;])
+    SC_TCL_EARLY_FLAG(_LARGEFILE64_SOURCE,[#include <sys/stat.h>],
+	[struct stat64 buf; int i = stat64("/", &buf);])
+    SC_TCL_EARLY_FLAG(_LARGEFILE_SOURCE64,[#include <sys/stat.h>],
+	[char *p = (char *)open64;])
+    if test "x${tcl_flags}" = "x" ; then
+	AC_MSG_RESULT([none])
+    else
+	AC_MSG_RESULT([${tcl_flags}])
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_64BIT_FLAGS
+#
+#	Check for what is defined in the way of 64-bit features.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		TCL_WIDE_INT_IS_LONG
+#		TCL_WIDE_INT_TYPE
+#		HAVE_STRUCT_DIRENT64
+#		HAVE_STRUCT_STAT64
+#		HAVE_TYPE_OFF64_T
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_64BIT_FLAGS], [
+    AC_MSG_CHECKING([for 64-bit integer type])
+    AC_CACHE_VAL(tcl_cv_type_64bit,[
+	tcl_cv_type_64bit=none
+	# See if the compiler knows natively about __int64
+	AC_TRY_COMPILE(,[__int64 value = (__int64) 0;],
+	    tcl_type_64bit=__int64, tcl_type_64bit="long long")
+	# See if we should use long anyway  Note that we substitute in the
+	# type that is our current guess for a 64-bit type inside this check
+	# program, so it should be modified only carefully...
+        AC_TRY_COMPILE(,[switch (0) { 
+            case 1: case (sizeof(]${tcl_type_64bit}[)==sizeof(long)): ; 
+        }],tcl_cv_type_64bit=${tcl_type_64bit})])
+    if test "${tcl_cv_type_64bit}" = none ; then
+	AC_DEFINE(TCL_WIDE_INT_IS_LONG)
+	AC_MSG_RESULT([using long])
+    else
+	AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit})
+	AC_MSG_RESULT([${tcl_cv_type_64bit}])
+
+	# Now check for auxiliary declarations
+	AC_CACHE_CHECK([for struct dirent64], tcl_cv_struct_dirent64,[
+	    AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/dirent.h>],[struct dirent64 p;],
+		tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)])
+	if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_STRUCT_DIRENT64)
+	fi
+
+	AC_CACHE_CHECK([for struct stat64], tcl_cv_struct_stat64,[
+	    AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat64 p;
+],
+		tcl_cv_struct_stat64=yes,tcl_cv_struct_stat64=no)])
+	if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_STRUCT_STAT64)
+	fi
+
+	AC_CHECK_FUNCS(open64 lseek64)
+	AC_MSG_CHECKING([for off64_t])
+	AC_CACHE_VAL(tcl_cv_type_off64_t,[
+	    AC_TRY_COMPILE([#include <sys/types.h>],[off64_t offset;
+],
+		tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)])
+	dnl Define HAVE_TYPE_OFF64_T only when the off64_t type and the
+	dnl functions lseek64 and open64 are defined.
+	if test "x${tcl_cv_type_off64_t}" = "xyes" && \
+	        test "x${ac_cv_func_lseek64}" = "xyes" && \
+	        test "x${ac_cv_func_open64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_TYPE_OFF64_T)
+	    AC_MSG_RESULT([yes])
+	else
+	    AC_MSG_RESULT([no])
+	fi
+    fi
+])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETHOSTBYADDR_R
+#
+#	Check if we have MT-safe variant of gethostbyaddr().
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETHOSTBYADDR_R
+#		HAVE_GETHOSTBYADDR_R_7
+#		HAVE_GETHOSTBYADDR_R_8
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETHOSTBYADDR_R], [AC_CHECK_FUNC(gethostbyaddr_r, [
+    AC_CACHE_CHECK([for gethostbyaddr_r with 7 args], tcl_cv_api_gethostbyaddr_r_7, [
+    AC_TRY_COMPILE([
+	#include <netdb.h>
+    ], [
+	char *addr;
+	int length;
+	int type;
+	struct hostent *result;
+	char buffer[2048];
+	int buflen = 2048;
+	int h_errnop;
+
+	(void) gethostbyaddr_r(addr, length, type, result, buffer, buflen,
+			       &h_errnop);
+    ], tcl_cv_api_gethostbyaddr_r_7=yes, tcl_cv_api_gethostbyaddr_r_7=no)])
+    tcl_ok=$tcl_cv_api_gethostbyaddr_r_7
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYADDR_R_7)
+    else
+	AC_CACHE_CHECK([for gethostbyaddr_r with 8 args], tcl_cv_api_gethostbyaddr_r_8, [
+	AC_TRY_COMPILE([
+	    #include <netdb.h>
+	], [
+	    char *addr;
+	    int length;
+	    int type;
+	    struct hostent *result, *resultp;
+	    char buffer[2048];
+	    int buflen = 2048;
+	    int h_errnop;
+
+	    (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen,
+				   &resultp, &h_errnop);
+	], tcl_cv_api_gethostbyaddr_r_8=yes, tcl_cv_api_gethostbyaddr_r_8=no)])
+	tcl_ok=$tcl_cv_api_gethostbyaddr_r_8
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETHOSTBYADDR_R_8)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYADDR_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETHOSTBYNAME_R
+#
+#	Check to see what variant of gethostbyname_r() we have.
+#	Based on David Arnold's example from the comp.programming.threads
+#	FAQ Q213
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETHOSTBYADDR_R
+#		HAVE_GETHOSTBYADDR_R_3
+#		HAVE_GETHOSTBYADDR_R_5
+#		HAVE_GETHOSTBYADDR_R_6
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETHOSTBYNAME_R], [AC_CHECK_FUNC(gethostbyname_r, [
+    AC_CACHE_CHECK([for gethostbyname_r with 6 args], tcl_cv_api_gethostbyname_r_6, [
+    AC_TRY_COMPILE([
+	#include <netdb.h>
+    ], [
+	char *name;
+	struct hostent *he, *res;
+	char buffer[2048];
+	int buflen = 2048;
+	int h_errnop;
+
+	(void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop);
+    ], tcl_cv_api_gethostbyname_r_6=yes, tcl_cv_api_gethostbyname_r_6=no)])
+    tcl_ok=$tcl_cv_api_gethostbyname_r_6
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYNAME_R_6)
+    else
+	AC_CACHE_CHECK([for gethostbyname_r with 5 args], tcl_cv_api_gethostbyname_r_5, [
+	AC_TRY_COMPILE([
+	    #include <netdb.h>
+	], [
+	    char *name;
+	    struct hostent *he;
+	    char buffer[2048];
+	    int buflen = 2048;
+	    int h_errnop;
+
+	    (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop);
+	], tcl_cv_api_gethostbyname_r_5=yes, tcl_cv_api_gethostbyname_r_5=no)])
+	tcl_ok=$tcl_cv_api_gethostbyname_r_5
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETHOSTBYNAME_R_5)
+	else
+	    AC_CACHE_CHECK([for gethostbyname_r with 3 args], tcl_cv_api_gethostbyname_r_3, [
+	    AC_TRY_COMPILE([
+		#include <netdb.h>
+	    ], [
+		char *name;
+		struct hostent *he;
+		struct hostent_data data;
+
+		(void) gethostbyname_r(name, he, &data);
+	    ], tcl_cv_api_gethostbyname_r_3=yes, tcl_cv_api_gethostbyname_r_3=no)])
+	    tcl_ok=$tcl_cv_api_gethostbyname_r_3
+	    if test "$tcl_ok" = yes; then
+		AC_DEFINE(HAVE_GETHOSTBYNAME_R_3)
+	    fi
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETHOSTBYNAME_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETPWUID_R
+#
+#	Check if we have MT-safe variant of getpwuid() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETPWUID_R
+#		HAVE_GETPWUID_R_4
+#		HAVE_GETPWUID_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETPWUID_R], [AC_CHECK_FUNC(getpwuid_r, [
+    AC_CACHE_CHECK([for getpwuid_r with 5 args], tcl_cv_api_getpwuid_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <pwd.h>
+    ], [
+	uid_t uid;
+	struct passwd pw, *pwp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getpwuid_r(uid, &pw, buf, buflen, &pwp);
+    ], tcl_cv_api_getpwuid_r_5=yes, tcl_cv_api_getpwuid_r_5=no)])
+    tcl_ok=$tcl_cv_api_getpwuid_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWUID_R_5)
+    else
+	AC_CACHE_CHECK([for getpwuid_r with 4 args], tcl_cv_api_getpwuid_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <pwd.h>
+	], [
+	    uid_t uid;
+	    struct passwd pw;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getpwnam_r(uid, &pw, buf, buflen);
+	], tcl_cv_api_getpwuid_r_4=yes, tcl_cv_api_getpwuid_r_4=no)])
+	tcl_ok=$tcl_cv_api_getpwuid_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETPWUID_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWUID_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETPWNAM_R
+#
+#	Check if we have MT-safe variant of getpwnam() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETPWNAM_R
+#		HAVE_GETPWNAM_R_4
+#		HAVE_GETPWNAM_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETPWNAM_R], [AC_CHECK_FUNC(getpwnam_r, [
+    AC_CACHE_CHECK([for getpwnam_r with 5 args], tcl_cv_api_getpwnam_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <pwd.h>
+    ], [
+	char *name;
+	struct passwd pw, *pwp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getpwnam_r(name, &pw, buf, buflen, &pwp);
+    ], tcl_cv_api_getpwnam_r_5=yes, tcl_cv_api_getpwnam_r_5=no)])
+    tcl_ok=$tcl_cv_api_getpwnam_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWNAM_R_5)
+    else
+	AC_CACHE_CHECK([for getpwnam_r with 4 args], tcl_cv_api_getpwnam_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <pwd.h>
+	], [
+	    char *name;
+	    struct passwd pw;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getpwnam_r(name, &pw, buf, buflen);
+	], tcl_cv_api_getpwnam_r_4=yes, tcl_cv_api_getpwnam_r_4=no)])
+	tcl_ok=$tcl_cv_api_getpwnam_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETPWNAM_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETPWNAM_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETGRGID_R
+#
+#	Check if we have MT-safe variant of getgrgid() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETGRGID_R
+#		HAVE_GETGRGID_R_4
+#		HAVE_GETGRGID_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETGRGID_R], [AC_CHECK_FUNC(getgrgid_r, [
+    AC_CACHE_CHECK([for getgrgid_r with 5 args], tcl_cv_api_getgrgid_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <grp.h>
+    ], [
+	gid_t gid;
+	struct group gr, *grp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getgrgid_r(gid, &gr, buf, buflen, &grp);
+    ], tcl_cv_api_getgrgid_r_5=yes, tcl_cv_api_getgrgid_r_5=no)])
+    tcl_ok=$tcl_cv_api_getgrgid_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRGID_R_5)
+    else
+	AC_CACHE_CHECK([for getgrgid_r with 4 args], tcl_cv_api_getgrgid_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <grp.h>
+	], [
+	    gid_t gid;
+	    struct group gr;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getgrgid_r(gid, &gr, buf, buflen);
+	], tcl_cv_api_getgrgid_r_4=yes, tcl_cv_api_getgrgid_r_4=no)])
+	tcl_ok=$tcl_cv_api_getgrgid_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETGRGID_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRGID_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_TCL_GETGRNAM_R
+#
+#	Check if we have MT-safe variant of getgrnam() and if yes,
+#	which one exactly.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		HAVE_GETGRNAM_R
+#		HAVE_GETGRNAM_R_4
+#		HAVE_GETGRNAM_R_5
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_TCL_GETGRNAM_R], [AC_CHECK_FUNC(getgrnam_r, [
+    AC_CACHE_CHECK([for getgrnam_r with 5 args], tcl_cv_api_getgrnam_r_5, [
+    AC_TRY_COMPILE([
+	#include <sys/types.h>
+	#include <grp.h>
+    ], [
+	char *name;
+	struct group gr, *grp;
+	char buf[512];
+	int buflen = 512;
+
+	(void) getgrnam_r(name, &gr, buf, buflen, &grp);
+    ], tcl_cv_api_getgrnam_r_5=yes, tcl_cv_api_getgrnam_r_5=no)])
+    tcl_ok=$tcl_cv_api_getgrnam_r_5
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRNAM_R_5)
+    else
+	AC_CACHE_CHECK([for getgrnam_r with 4 args], tcl_cv_api_getgrnam_r_4, [
+	AC_TRY_COMPILE([
+	    #include <sys/types.h>
+	    #include <grp.h>
+	], [
+	    char *name;
+	    struct group gr;
+	    char buf[512];
+	    int buflen = 512;
+
+	    (void)getgrnam_r(name, &gr, buf, buflen);
+	], tcl_cv_api_getgrnam_r_4=yes, tcl_cv_api_getgrnam_r_4=no)])
+	tcl_ok=$tcl_cv_api_getgrnam_r_4
+	if test "$tcl_ok" = yes; then
+	    AC_DEFINE(HAVE_GETGRNAM_R_4)
+	fi
+    fi
+    if test "$tcl_ok" = yes; then
+	AC_DEFINE(HAVE_GETGRNAM_R)
+    fi
+])])
+
+#--------------------------------------------------------------------
+# SC_CONFIG_COMMANDS_PRE(CMDS)
+#
+#	Replacement for autoconf 2.5x AC_COMMANDS_PRE:
+#		Commands to run right before config.status is
+#		created. Accumulates.
+#
+#	Requires presence of SC_OUTPUT_COMMANDS_PRE at the end
+#	of configure.in (right before AC_OUTPUT).
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([SC_CONFIG_COMMANDS_PRE], [
+    define([SC_OUTPUT_COMMANDS_PRE], defn([SC_OUTPUT_COMMANDS_PRE])[$1
+])])
+AC_DEFUN([SC_OUTPUT_COMMANDS_PRE])
+
Index: /tags/1.6.0/lang/tcl/pkgIndex.tcl.in
===================================================================
--- /tags/1.6.0/lang/tcl/pkgIndex.tcl.in	(revision 6168)
+++ /tags/1.6.0/lang/tcl/pkgIndex.tcl.in	(revision 6168)
@@ -0,0 +1,18 @@
+package ifneeded Rappture @PACKAGE_VERSION@ [format {
+    set dir "%s"
+    set version @PACKAGE_VERSION@
+    lappend auto_path [file join $dir scripts]
+    namespace eval Rappture {
+	variable version $version
+	variable build "@SVN_VERSION@"
+	variable svnurl "@SVN_URL@"
+	variable installdir [file normalize $dir]
+    }
+    namespace eval Rappture::LibraryObj {
+	#empty
+    }
+    set ext [info sharedlibextension] 
+    load [file join $dir "Rappture${version}${ext}"]
+    package provide Rappture $version
+} $dir]
+
Index: /tags/1.6.0/lang/tcl/rplib_test.xml
===================================================================
--- /tags/1.6.0/lang/tcl/rplib_test.xml	(revision 6168)
+++ /tags/1.6.0/lang/tcl/rplib_test.xml	(revision 6168)
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>Graphing Calculator</title>
+        <about>Press Simulate to view results.</about>
+        <command> @tool/graph @driver</command>
+    </tool>
+    <input>
+        <string id="formula">
+            <about>
+                <label>Formula</label>
+                <hints>Example: 2*x + 1</hints>
+            </about>
+            <size>30x5</size>
+        </string>
+        <number id="min">
+            <about> <label>From x</label> </about>
+            <default>0</default>
+            <current>1</current>
+        </number>
+        <number id="max">
+            <about> <label>To x</label> </about>
+            <default>2</default>
+            <current>3</current>
+        </number>
+    </input>
+    <output>
+        <curve id="result">
+            <about> <label>Formula: Y vs X</label> </about>
+        </curve>
+    </output>
+</run>
+
Index: /tags/1.6.0/lang/tcl/scripts/Makefile.in
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/Makefile.in	(revision 6168)
@@ -0,0 +1,130 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+INSTALL		= @INSTALL@
+INSTALL_PROGRAM	= ${INSTALL} -m 755
+INSTALL_DATA	= ${INSTALL} -m 644
+INSTALL_SCRIPT	= ${INSTALL}
+TCL_VERSION     = @TCL_VERSION@
+TCLSH		= $(bindir)/tclsh$(TCL_VERSION)
+VERSION		= @PACKAGE_VERSION@
+VPATH		= $(srcdir)
+
+CXX             = @CXX@
+CC              = @CC@
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+CFLAGS          = @CFLAGS@
+
+RANLIB 		= @RANLIB@
+MKDIR_P		= @MKDIR_P@
+AR 		= ar
+RM		= rm -f
+
+destdir		= $(prefix)/lib/Rappture$(VERSION)/scripts
+
+FILES		= \
+		$(srcdir)/exec.tcl \
+		$(srcdir)/getopts.tcl \
+		$(srcdir)/library.tcl \
+		$(srcdir)/objects.tcl \
+		$(srcdir)/resources.tcl \
+		$(srcdir)/result.tcl \
+		$(srcdir)/task.tcl \
+		$(srcdir)/units.tcl \
+		$(srcdir)/xauth.tcl
+
+OBJECTS		= \
+		boolean \
+		choice \
+		curve \
+		group \
+		histogram \
+		image \
+		integer \
+		note \
+		number \
+		periodicelement \
+		phase \
+		string
+
+TYPEFILES	= \
+		$(srcdir)/types/atomactive.tcl \
+		$(srcdir)/types/atomelem.tcl \
+		$(srcdir)/types/atomprops.tcl \
+		$(srcdir)/types/boolean.tcl \
+		$(srcdir)/types/choices.tcl \
+		$(srcdir)/types/color.tcl \
+		$(srcdir)/types/file.tcl \
+		$(srcdir)/types/image.tcl \
+		$(srcdir)/types/language.tcl \
+		$(srcdir)/types/string.tcl \
+		$(srcdir)/types/units.tcl
+
+VALIDATEFILES	= \
+		$(srcdir)/validations/enable.tcl \
+		$(srcdir)/validations/int.tcl \
+		$(srcdir)/validations/imformat.tcl \
+		$(srcdir)/validations/imresize.tcl \
+		$(srcdir)/validations/number.tcl \
+		$(srcdir)/validations/size.tcl
+
+all: tclIndex
+
+tclIndex: install-objects install-types install-validations $(FILES)
+	$(TCLSH) $(srcdir)/../cf/mkindex.tcl --srcdir $(srcdir) \
+		--outfile tclIndex
+	$(TCLSH) $(srcdir)/../cf/mkobjects.tcl --srcdir $(srcdir) \
+		$(OBJECTS)
+
+install: tclIndex
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES); do \
+	    $(INSTALL) -m 0444 $$i $(destdir) ; \
+	done 
+	$(INSTALL) -m 0444 tclIndex $(destdir)
+
+install-objects:
+	$(MKDIR_P) -m 0755 $(destdir)/objects
+	$(INSTALL) -m 0444 $(srcdir)/objects/base.rp $(destdir)/objects
+	for i in $(OBJECTS); do \
+	    echo "Installing object definition: $$i" ; \
+	    $(MKDIR_P) -m 0755 $(destdir)/objects/$$i ; \
+	    for j in $(srcdir)/objects/$$i/*; do \
+		$(INSTALL) -m 0444 $$j $(destdir)/objects/$$i ; \
+	    done \
+	done
+
+install-types: $(TYPEFILES)
+	$(MKDIR_P) -m 0755 $(destdir)/types
+	@for i in $(TYPEFILES); do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 555 $$i $(destdir)/types ; \
+	done
+
+install-validations: $(VALIDATEFILES)
+	$(MKDIR_P) -m 0755 $(destdir)/validations
+	@for i in $(VALIDATEFILES); do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 555 $$i $(destdir)/validations ; \
+	done
+
+clean: 
+	$(RM) tclIndex
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/lang/tcl/scripts/exec.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/exec.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/exec.tcl	(revision 6168)
@@ -0,0 +1,146 @@
+
+# ----------------------------------------------------------------------
+#  COMPONENT: exec - simple way to exec with streaming output
+#
+#  This utility makes it easy to exec another tool and get streaming
+#  output from stdout and stderr.  Any stderr messages are specially
+#  encoded with the =RAPPTURE-ERROR=> tag, so they show up in red
+#  in the execution output.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require BLT
+
+namespace eval Rappture { 
+    # Forward declaration 
+    variable execout
+    variable execctl
+
+    set execout(error) ""
+    set execout(output) ""
+    set execout(channel) ""
+    set execout(extra) ""
+    set execctl ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: exec <arg> <arg>...
+#
+# This utility acts like the standard Tcl "exec" command, but it also
+# streams stdout and stderr messages while the command is executing,
+# instead of waiting till the end.  Any error messages are prefixed
+# with the special =RAPPTURE-ERROR=> tag, so they are recognized as
+# errors within Rappture.
+# ----------------------------------------------------------------------
+proc Rappture::exec {args} {
+    variable execout
+    variable execctl
+
+    set execout(error) ""
+    set execout(output) ""
+    set execout(channel) ""
+    set execout(extra) ""
+    set execctl ""
+
+    set status [catch {eval blt::bgexec ::Rappture::execctl \
+        -keepnewline yes \
+        -killsignal SIGTERM \
+        -onoutput {{::Rappture::_exec_out stdout}} \
+        -onerror {{::Rappture::_exec_out stderr}} \
+        $args} result]
+
+    # add any extra stuff pending from the last stdout/stderr change
+    append execout(output) $execout(extra)
+
+    if { $status != 0 } {
+	# We're here because the exec-ed program failed 
+	if { $execctl != "" } {
+	    foreach { token pid code mesg } $execctl break
+	    if { $token == "EXITED" } {
+		# This means that the program exited normally but
+		# returned a non-zero exitcode.  Consider this an
+		# invalid result from the program.  Append the stderr
+		# from the program to the message.
+		set result \
+		    "Program finished: exit code is $code\n\n"
+		append result $execout(error)
+	    } elseif { $token == "abort" }  {
+		# The user pressed the abort button.
+		set result "Program terminated by user.\n\n"
+		append result $execout(output)
+	    } else {
+		# Abnormal termination
+		set result "Abnormal program termination: $mesg\n\n"
+		append result $execout(output)
+	    }
+	}
+	puts stderr $result
+        error $result
+    }
+    return $execout(output)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _exec_out <channel> <message>
+#
+# Called automatically whenever output comes in from the Rappture::exec
+# utility.  Streams the output to stdout and adds it to the "execout"
+# variable, so it can be returned as one large string at the end of
+# the exec.
+# ----------------------------------------------------------------------
+proc Rappture::_exec_out {channel message} {
+    variable execout
+
+    #
+    # If this message is being written to the stderr channel, then
+    # add the =RAPPTURE-ERROR=> prefix to each line.
+    #
+    if {$channel == "stderr"} {
+	append execout(error) $message
+        set newmesg ""
+        foreach line [split $message \n] {
+            append newmesg "=RAPPTURE-ERROR=>$line\n"
+        }
+        set message $newmesg
+    }
+    #
+    # If this message is coming in on the same channel as the
+    # last, then fine, add it on.  But if it's coming in on a
+    # different channel, we must make sure that we're at a good
+    # breakpoint.  If there's not a line break at the end of the
+    # current output, then add the extra stuff onto a buffer
+    # that we will merge in later once we get to a good point.
+    #
+    if {$execout(channel) == ""} {
+        set execout(channel) $channel
+    }
+
+    set ready [expr {[string length $execout(output)] == 0
+        || [string index $execout(output) end] == "\n"}]
+
+    if {$channel != $execout(channel)} {
+        if {$ready} {
+            # changing channels...
+            if {[string length $execout(extra)] > 0} {
+                # any extra stuff on this new channel? put it out now
+                puts -nonewline $execout(extra)
+                append execout(output) $execout(extra)
+                set execout(extra) ""
+            }
+            puts -nonewline $message
+            append execout(output) $message
+            set execout(channel) $channel
+        } else {
+            # not ready to change channels -- keep this for later
+            append execout(extra) $message
+        }
+    } else {
+        # no need to change channels -- keep printing
+        puts -nonewline $message
+        append execout(output) $message
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/getopts.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/getopts.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/getopts.tcl	(revision 6168)
@@ -0,0 +1,151 @@
+
+# ----------------------------------------------------------------------
+#  COMPONENT: getopts - simple argument parser
+#
+#  This utility makes it easy to process arguments for various
+#  commands.  You give a description of arguments, and it will
+#  parse and return the values.
+#
+#    getopts args params {
+#        value -foo foo_default
+#        flag group -bar default
+#        flag group -baz
+#    }
+#
+#  Note that both args and params are passed by name, not by
+#  value (not $args or $params).  This function initializes the
+#  params variable according to the values in the spec list.
+#  It then loops through all args, matching as many as possible
+#  from the list.  It throws an error on the first error
+#  encountered.  If there are extra arguments that don't match
+#  the flags and don't start with -, they are left in args, and
+#  processing stops.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+namespace eval Rappture { # forward declaration }
+
+# ----------------------------------------------------------------------
+# USAGE: getopts <listvar> <returnvar> <spec>
+#
+# Processes options in <listvar>, storing results in <returnvar>.
+# Throws an exception if an error is encountered.  Leaves any remaining
+# arguments (after flags) in <listvar>.
+# ----------------------------------------------------------------------
+proc Rappture::getopts {listVar returnVar spec} {
+    upvar $listVar args
+    upvar $returnVar params
+    catch {unset params}
+    set opts ""
+
+    #
+    # Pick apart the info in the <spec> and set up flags/params
+    #
+    foreach line [split $spec \n] {
+        if {[llength $line] == 0} {
+            continue  ;# ignore blank lines
+        }
+
+        set type [lindex $line 0]
+        switch -- $type {
+            value {
+                if {[llength $line] < 3} {
+                    error "bad value spec \"$line\": should be \"value -flag default\""
+                }
+                set name [lindex $line 1]
+                set flags($name) $type
+                set params($name) [lindex $line 2]
+                lappend opts $name
+            }
+            flag {
+                if {[llength $line] < 3 || [llength $line] > 4} {
+                    error "bad value spec \"$line\": should be \"flag group -flag ?default?\""
+                }
+                set group [lindex $line 1]
+                set name [lindex $line 2]
+                set flags($name) [list $type $group]
+                if {[llength $line] > 3} {
+                    set params($group) $name
+                    set params($name) 1
+                } else {
+                    if {![info exists params($group)]} {
+                        set params($group) ""
+                    }
+                    set params($name) 0
+                }
+                lappend opts $name
+            }
+            list {
+                if {[llength $line] < 3} {
+                    error "bad value spec \"$line\": should be \"list -flag default\""
+                }
+                set name [lindex $line 1]
+                set flags($name) $type
+                set params($name) [lindex $line 2]
+                lappend opts $name
+            }
+            default {
+                error "bad arg type \"$type\": should be flag or value"
+            }
+        }
+    }
+
+    #
+    # Now, walk through the values in $args and extract parameters.
+    #
+    while {[llength $args] > 0} {
+        set first [lindex $args 0]
+        if {[string index $first 0] != "-"} {
+            break
+        }
+        if {"--" == $first} {
+            set args [lrange $args 1 end]
+            break
+        }
+        if {![info exists params($first)]} {
+            error "bad option \"$first\": should be [join [lsort $opts] {, }]"
+        }
+        switch -- [lindex $flags($first) 0] {
+            value {
+                if {[llength $args] < 2} {
+                    error "missing value for option $first"
+                }
+                set params($first) [lindex $args 1]
+                set args [lrange $args 2 end]
+            }
+            flag {
+                set group [lindex $flags($first) 1]
+                set params($group) $first
+                set params($first) 1
+                set args [lrange $args 1 end]
+            }
+            list {
+                if {[llength $args] < 2} {
+                    error "missing value for option $first"
+                }
+                foreach arg [lrange $args 1 end] {
+                    if {[string index $arg 0] == "-"} {
+                        break
+                    }
+                }
+                set idx [lsearch -exact $args $arg]
+                if {$idx == [expr [llength $args] - 1]} {
+                    # reached the end of the $args list
+                    # with no other -'d arguments
+                    set params($first) [lrange $args 1 end]
+                    set args ""
+                } else {
+                    # there are further -'d arguments to process
+                    set params($first) [lrange $args 1 [expr $idx-1]]
+                    set args [lrange $args $idx end]
+                }
+            }
+        }
+    }
+    return ""
+}
Index: /tags/1.6.0/lang/tcl/scripts/library.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/library.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/library.tcl	(revision 6168)
@@ -0,0 +1,1164 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: library - provides access to the XML library
+#
+#  These routines make it easy to load the XML description for a
+#  series of tool parameters and browse through the results.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require tdom
+package require Itcl
+
+namespace eval Rappture {
+    variable stdlib ""
+}
+
+# load the object system along with the XML library code
+Rappture::objects::init
+encoding system utf-8
+
+# ----------------------------------------------------------------------
+# USAGE: library <file>
+# USAGE: library standard
+# USAGE: library isvalid <object>
+#
+# Used to open a <file> containing an XML description of tool
+# parameters.  Loads the file and returns the name of the LibraryObj
+# file that represents it.
+#
+# If you use the word "standard" in place of the file name, this
+# function returns the standard Rappture library object, which
+# contains material definitions.
+#
+# The isvalid operation checks an <object> to see if it is a valid
+# library object.  Returns 1 if so, and 0 otherwise.
+# ----------------------------------------------------------------------
+proc Rappture::library {args} {
+    # handle the isvalid operation...
+    if {[llength $args] > 1 && [lindex $args 0] == "isvalid"} {
+        if {[llength $args] != 2} {
+            error "wrong # args: should be \"library isvalid object\""
+        }
+        set obj [lindex $args 1]
+        #
+        # BE CAREFUL with the object test:
+        # The command should look like a LibraryObj formed by #auto.
+        # We want to avoid things like "split" or "set", which are
+        # valid Tcl commands but won't respond well to isa.
+        #
+        if {[regexp {libraryObj[0-9]+$} $obj]
+              && [catch {$obj isa ::Rappture::LibraryObj} valid] == 0
+              && $valid} {
+            return 1
+        }
+        return 0
+    }
+
+    if {[llength $args] != 1} {
+        error "wrong # args: should be \"library file\" or \"library isvalid object\""
+    }
+    set fname [lindex $args 0]
+
+    if {$fname == "standard"} {
+        variable stdlib
+        if {$stdlib != ""} {
+            return $stdlib
+        }
+        set fname [file join $Rappture::installdir lib library.xml]
+        if { [catch {
+            set fid [::open $fname r]
+            set info [read $fid]
+            close $fid
+        } errs] != 0 } {
+            puts stderr "can't open \"$fname\": errs=$errs errorInfo=$errorInfo"
+        }
+        set stdlib [Rappture::LibraryObj ::#auto $info]
+        return $stdlib
+    }
+
+    if {[regexp {^<\?[Xx][Mm][Ll]} $fname]} {
+        set info $fname
+    } else {
+        # otherwise, try to open the file and create its LibraryObj
+        if { [catch {
+            set fid [::open $fname r]
+            set info [read $fid]
+            close $fid
+        } errs] != 0 } {
+            puts stderr "can't open \"$fname\": errs=$errs errorInfo=$errorInfo"
+        }
+    }
+
+    set obj [Rappture::LibraryObj ::#auto $info]
+    return $obj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: entities ?-as <fval>? <object> <path>
+#
+# Used to sift through an XML <object> for "entities" within the
+# Rappture description.  Entities are things like strings, numbers,
+# etc., which show up in the GUI as controls.
+#
+# Returns a list of all entities found beneath <path>.
+#
+# By default, this method returns the component name "type(id)".
+# This is changed by setting the -as argument to "id" (for name
+# of the tail element), to "type" (for the type of the tail element),
+# to "object" (for an object representing the DOM node referenced by
+# the path.
+# ----------------------------------------------------------------------
+proc Rappture::entities {args} {
+    array set params {
+        -as component
+    }
+    while {[llength $args] > 1} {
+        set first [lindex $args 0]
+        if {[string index $first 0] == "-"} {
+            set choices [array names params]
+            if {[lsearch $choices $first] < 0} {
+                error "bad option \"$first\": should be [join [lsort $choices] {, }]"
+            }
+            set params($first) [lindex $args 1]
+            set args [lrange $args 2 end]
+        } else {
+            break
+        }
+    }
+    if {[llength $args] > 2} {
+        error "wrong # args: should be \"entities ?-as fval? obj ?path?\""
+    }
+    set xmlobj [lindex $args 0]
+    set path [lindex $args 1]
+
+    set rlist ""
+    lappend queue $path
+    while {[llength $queue] > 0} {
+        set path [lindex $queue 0]
+        set queue [lrange $queue 1 end]
+
+        foreach cpath [$xmlobj children -as path $path] {
+            set type [$xmlobj element -as type $cpath]
+            switch -- $type {
+                group - phase {
+                    lappend queue $cpath
+                }
+                structure {
+                    # add this to the return list with the right flavor
+                    if {$params(-as) == "component"} {
+                        lappend rlist $cpath
+                    } else {
+                        lappend rlist [$xmlobj element -as $params(-as) $cpath]
+                    }
+
+                    if {[$xmlobj element $cpath.current.parameters] != ""} {
+                        lappend queue $cpath.current.parameters
+                    }
+                }
+                drawing {
+                    # add this to the return list with the right flavor
+                    if {$params(-as) == "component"} {
+                        lappend rlist $cpath
+                    } else {
+                        lappend rlist [$xmlobj element -as $params(-as) $cpath]
+                    }
+
+                    foreach child [$xmlobj children $cpath.current] {
+                        if {[string match about* $child]} {
+                            continue
+                        }
+                        if {[$xmlobj element $cpath.current.$child.parameters] != ""} {
+                            lappend queue $cpath.current.$child.parameters
+                        }
+                    }
+                }
+                loader {
+                    if {$params(-as) == "component"} {
+                        lappend rlist $cpath
+                    } else {
+                        lappend rlist [$xmlobj element -as $params(-as) $cpath]
+                    }
+		}
+                default {
+                    if {[catch {Rappture::objects::get $type}] == 0} {
+                        # add this to the return list with the right flavor
+                        if {$params(-as) == "component"} {
+                            lappend rlist $cpath
+                        } else {
+                            lappend rlist [$xmlobj element -as $params(-as) $cpath]
+                        }
+                    }
+
+                    # if this element has embedded groups, add them to the queue
+                    foreach ccpath [$xmlobj children -as path $cpath] {
+                        set cctype [$xmlobj element -as type $ccpath]
+                        if {$cctype == "group" || $cctype == "phase"} {
+                            lappend queue $ccpath
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+itcl::class Rappture::LibraryObj {
+    constructor {info} { # defined below }
+    destructor { # defined below }
+
+    public method element {args}
+    public method parent {args}
+    public method children {args}
+    public method get {args}
+    public method put {args}
+    public method copy {path from args}
+    public method remove {{path ""}}
+    public method xml {{path ""}}
+    public method uq_get_vars {{tfile ""}}
+
+    public method diff {libobj}
+    public proc value {libobj path}
+
+    public proc path2list {path}
+    protected method find {path}
+    protected method node2name {node}
+    protected method node2comp {node}
+    protected method node2path {node}
+    protected method childnodes {node type}
+
+    private variable _root 0       ;# non-zero => this obj owns document
+    private variable _document ""  ;# XML DOM tree
+    private variable _node ""      ;# node within
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::constructor {info} {
+    if {[regexp {<?[Xx][Mm][Ll]} $info]} {
+        set _root 1
+        set _document [dom parse $info]
+        set _node [$_document documentElement]
+    } elseif {[regexp {^domNode} $info]} {
+        set _root 0
+        set _document [$info ownerDocument]
+        set _node $info
+    } else {
+        error "bad info: should be XML text or DOM node"
+    }
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::destructor {} {
+    if {$_root && $_document != ""} {
+        $_document delete
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: element ?-as <fval>? ?<path>?
+#
+# Clients use this to query a particular element within the entire
+# data structure.  The path is a string of the form
+# "structure.box(source).corner".  This example represents the tag
+# <corner> within a tag <box id="source"> within a tag <structure>,
+# which must be found at the top level within this document.
+#
+# By default, this method returns the component name "type(id)".
+# This is changed by setting the -as argument to "id" (for name
+# of the tail element), to "type" (for the type of the tail element),
+# to "object" (for an object representing the DOM node referenced by
+# the path).
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::element {args} {
+    array set params {
+        -as component
+    }
+    while {[llength $args] > 1} {
+        set first [lindex $args 0]
+        if {[string index $first 0] == "-"} {
+            set choices [array names params]
+            if {[lsearch $choices $first] < 0} {
+                error "bad option \"$first\": should be [join [lsort $choices] {, }]"
+            }
+            set params($first) [lindex $args 1]
+            set args [lrange $args 2 end]
+        } else {
+            break
+        }
+    }
+    if {[llength $args] > 1} {
+        error "wrong # args: should be \"element ?-as fval? ?path?\""
+    }
+    set path [lindex $args 0]
+
+    set node [find $path]
+    if {$node == ""} {
+        return ""
+    }
+
+    switch -- $params(-as) {
+      object {
+          return [::Rappture::LibraryObj ::#auto $node]
+      }
+      component {
+          return [node2comp $node]
+      }
+      id {
+          return [node2name $node]
+      }
+      path {
+          return [node2path $node]
+      }
+      type {
+          return [$node nodeName]
+      }
+      default {
+          error "bad flavor \"$params(-as)\": should be component, id, object, path, type"
+      }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: parent ?-as <fval>? ?<path>?
+#
+# Clients use this to query the parent of a particular element.
+# This is just like the "element" method, but it returns the parent
+# of the element instead of the element itself.
+#
+# By default, this method returns a list of component names "type(id)".
+# This is changed by setting the -as argument to "id" (for tail
+# names of all children), to "type" (for the types of all children),
+# to "object" (for a list of objects representing the DOM nodes for
+# all children).
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::parent {args} {
+    array set params {
+        -as component
+    }
+    while {[llength $args] > 1} {
+        set first [lindex $args 0]
+        if {[string index $first 0] == "-"} {
+            set choices [array names params]
+            if {[lsearch $choices $first] < 0} {
+                error "bad option \"$first\": should be [join [lsort $choices] {, }]"
+            }
+            set params($first) [lindex $args 1]
+            set args [lrange $args 2 end]
+        } else {
+            break
+        }
+    }
+    if {[llength $args] > 1} {
+        error "wrong # args: should be \"parent ?-as fval? ?path?\""
+    }
+    set path [lindex $args 0]
+
+    set node [find $path]
+    if {$node == ""} {
+        return ""
+    }
+    set node [$node parentNode]
+    if {$node == ""} {
+        return ""
+    }
+
+    switch -- $params(-as) {
+      object {
+          return [::Rappture::LibraryObj ::#auto $node]
+      }
+      component {
+          return [node2comp $node]
+      }
+      id {
+          return [node2name $node]
+      }
+      path {
+          return [node2path $node]
+      }
+      type {
+          return [$node nodeName]
+      }
+      default {
+          error "bad flavor \"$params(-as)\": should be component, id, object, path, type"
+      }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: children ?-as <fval>? ?-type <name>? ?<path>?
+#
+# Clients use this to query the children of a particular element
+# within the entire data structure.  This is just like the "element"
+# method, but it returns the children of the element instead of the
+# element itself.  If the optional -type argument is specified, then
+# the return list is restricted to children of the specified type.
+#
+# By default, this method returns a list of component names "type(id)".
+# This is changed by setting the -as argument to "id" (for tail
+# names of all children), to "type" (for the types of all children),
+# to "object" (for a list of objects representing the DOM nodes for
+# all children).
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::children {args} {
+    array set params {
+        -as component
+        -type ""
+    }
+    while {[llength $args] > 1} {
+        set first [lindex $args 0]
+        if {[string index $first 0] == "-"} {
+            set choices [array names params]
+            if {[lsearch $choices $first] < 0} {
+                error "bad option \"$first\": should be [join [lsort $choices] {, }]"
+            }
+            set params($first) [lindex $args 1]
+            set args [lrange $args 2 end]
+        } else {
+            break
+        }
+    }
+    if {[llength $args] > 1} {
+        error "wrong # args: should be \"children ?-as fval? ?-type name? ?path?\""
+    }
+    set path [lindex $args 0]
+    set node [find $path]
+    if {$node == ""} {
+        return ""
+    }
+
+    set nlist ""
+    foreach n [$node childNodes] {
+        set type [$n nodeName]
+        if {[regexp {^#} $type]} {
+            continue
+        }
+        if {$params(-type) != "" && $params(-type) != $type} {
+            continue
+        }
+        lappend nlist $n
+    }
+
+    set rlist ""
+    switch -- $params(-as) {
+      object {
+          foreach n $nlist {
+              lappend rlist [::Rappture::LibraryObj ::#auto $n]
+          }
+      }
+      component {
+          foreach n $nlist {
+              lappend rlist [node2comp $n]
+          }
+      }
+      id {
+          foreach n $nlist {
+              lappend rlist [node2name $n]
+          }
+      }
+      path {
+          foreach n $nlist {
+              lappend rlist [node2path $n]
+          }
+      }
+      type {
+          foreach n $nlist {
+              lappend rlist [$n nodeName]
+          }
+      }
+      default {
+          error "bad flavor \"$params(-as)\": should be component, id, object, path, type"
+      }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get ?-decode yes? ?<path>?
+#
+# Clients use this to query the value of a node. Clients can specify
+# if they want the data to be automatically decoded or no using the
+# -decode flag. This is useful for situations where you want to keep
+# the data encoded to pass to another system, like dx data in fields
+# sending data to nanovis. If the path is not
+# specified, it returns the value associated with the root node.
+# Otherwise, it returns the value for the element specified by the
+# path.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::get {args} {
+    array set params {
+        -decode yes
+    }
+    while {[llength $args] > 0} {
+        set first [lindex $args 0]
+        if {[string index $first 0] == "-"} {
+            set choices [array names params]
+            if {[lsearch $choices $first] < 0} {
+                error "bad option \"$first\": should be [join [lsort $choices] {, }]"
+            }
+            set params($first) [lindex $args 1]
+            set args [lrange $args 2 end]
+        } else {
+            break
+        }
+    }
+    if {[llength $args] > 1} {
+        error "wrong # args: should be \"get ?-decode yes? ?path?\""
+    }
+    if {[llength $args] == 1} {
+        set path [lindex $args 0]
+    } else {
+        set path ""
+    }
+
+    set node [find $path]
+    if {$node == ""} {
+        return ""
+    }
+    set string [string trim [$node text]]
+    if {$params(-decode)} {
+	set string [Rappture::encoding::decode -- $string]
+    }
+    return $string
+}
+
+# ----------------------------------------------------------------------
+# USAGE: put ?-append yes? ?-id num? ?-type string|file? ?-compress no? ?<path>? <string>
+#
+# Clients use this to set the value of a node.  If the path is not
+# specified, it sets the value for the root node.  Otherwise, it sets
+# the value for the element specified by the path.  If the value is a
+# string, then it is treated as the text within the tag at the tail
+# of the path.  If it is a DOM node or a library, then it is inserted
+# into the tree at the specified path.
+#
+# If the optional id is specified, then it sets the identifier for
+# the tag at the tail of the path.  If the optional append flag is
+# specified, then the value is appended to the current value.
+# Otherwise, the value replaces the current value.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::put {args} {
+    array set params {
+        -id ""
+        -append no
+        -type string
+        -compress no
+    }
+    while {[llength $args] > 1} {
+        set first [lindex $args 0]
+        if {[string index $first 0] == "-"} {
+            set choices [array names params]
+            if {[lsearch $choices $first] < 0} {
+                error "bad option \"$first\": should be [join [lsort $choices] {, }]"
+            }
+            set params($first) [lindex $args 1]
+            set args [lrange $args 2 end]
+        } else {
+            break
+        }
+    }
+    if {[llength $args] < 1 || [llength $args] > 2} {
+        error "wrong # args: should be \"put ?-append bval? ?-id num? ?-type string|file? ?-compress bval? ?path? string\""
+    }
+    if {[llength $args] == 2} {
+        set path [lindex $args 0]
+        set str [lindex $args 1]
+    } else {
+        set path ""
+        set str [lindex $args 0]
+    }
+
+    if {$params(-type) == "file"} {
+        set fileName $str
+        set fid [open $fileName r]
+        fconfigure $fid -translation binary -encoding binary
+        set str [read $fid]
+        close $fid
+    }
+
+    if {$params(-compress) || [Rappture::encoding::is binary $str]} {
+        set str [Rappture::encoding::encode -- $str]
+    }
+
+    set node [find -create $path]
+
+    #
+    # Clean up any nodes that don't belong.  If we're appending
+    # the value, then clean up only child <tag> nodes.  Otherwise,
+    # clean up all nodes.
+    #
+    set nlist ""
+    if {$params(-append)} {
+        foreach n [$node childNodes] {
+            if {[$n nodeType] != "TEXT_NODE"} {
+                lappend nlist $n
+            }
+        }
+    } else {
+        set nlist [$node childNodes]
+    }
+    foreach n $nlist {
+        $n delete
+    }
+
+    if {[Rappture::library isvalid $str]} {
+        foreach n [[$str info variable _node -value] childNodes] {
+	    if { [$n nodeType] == "COMMENT_NODE" } {
+		continue
+	    }
+            $node appendXML [$n asXML]
+        }
+    } else {
+        set n [$_document createText $str]
+        $node appendChild $n
+        if {"" != $params(-id)} {
+            $node setAttribute id $params(-id)
+        }
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: copy <path> from ?<xmlobj>? <path>
+#
+# Clients use this to copy the value from one xmlobj/path to another.
+# If the <xmlobj> is not specified, it is assumed to be the same as
+# the current object.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::copy {path from args} {
+    if {[llength $args] == 1} {
+        set xmlobj $this
+        set fpath [lindex $args 0]
+    } elseif {[llength $args] == 2} {
+        set xmlobj [lindex $args 0]
+        set fpath [lindex $args 1]
+    } else {
+        error "wrong # args: should be \"copy path from ?xmlobj? path\""
+    }
+    if {$from != "from"} {
+        error "bad syntax: should be \"copy path from ?xmlobj? path\""
+    }
+
+    if {[llength [$xmlobj children $fpath]] == 0} {
+        set val [$xmlobj get $fpath]
+        put $path $val
+    } else {
+        set obj [$xmlobj element -as object $fpath]
+        put $path $obj
+        itcl::delete object $obj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: remove ?<path>?
+#
+# Clients use this to remove the specified node.  Removes the node
+# from the tree.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::remove {{path ""}} {
+    set node [find $path]
+    if {$node != ""} {
+        $node delete
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: xml ?<path>?
+#
+# Returns a string representing the XML information for the information
+# in this library.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::xml {{path ""}} {
+    if {"" != $path} {
+        set n [find $path]
+    } else {
+        set n $_node
+    }
+    return [$n asXML]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: diff <libobj>
+#
+# Compares the entities in this object to those in another and
+# returns a list of differences.  The result is a list of the form:
+# {op1 path1 oldval1 newval1 ...} where each "op" is +/-/c for
+# added/subtracted/changed, "path" is the path within the library
+# that is different, and "oldval"/"newval" give the values for the
+# object at the path.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::diff {libobj} {
+    set rlist ""
+
+    # query the values for all entities in both objects
+    set thisv [Rappture::entities $this input]
+    set otherv [Rappture::entities $libobj input]
+
+    # add UQ checking
+    lappend thisv uq.type uq.args
+    lappend otherv uq.type uq.args
+
+    # scan through values for this object, and compare against other one
+    foreach path $thisv {
+        set i [lsearch -exact $otherv $path]
+        if {$i < 0} {
+            foreach {raw norm} [value $this $path] break
+            lappend rlist - $path $raw ""
+        } else {
+            foreach {traw tnorm} [value $this $path] break
+            foreach {oraw onorm} [value $libobj $path] break
+            if {![string equal $tnorm $onorm]} {
+                lappend rlist c $path $traw $oraw
+            }
+            set otherv [lreplace $otherv $i $i]
+        }
+    }
+
+    # add any values left over in the other object
+    foreach path $otherv {
+        foreach {oraw onorm} [value $libobj $path] break
+        lappend rlist + $path "" $oraw
+    }
+
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: value <object> <path>
+#
+# Used to query the "value" associated with the <path> in an XML
+# <object>.  This is a little more complicated than the object's
+# "get" method.  It handles things like structures and values
+# with normalized units.
+#
+# Returns a list of two items:  {raw norm} where "raw" is the raw
+# value from the "get" method and "norm" is the normalized value
+# produced by this routine.  Example:  {300K 300}
+#
+# Right now, it is a handy little utility used by the "diff" method.
+# Eventually, it should be moved to a better object-oriented
+# implementation, where each Rappture type could overload the
+# various bits of processing below.  So we leave it as a "proc"
+# now instead of a method, since it should be deprecated soon.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::value {libobj path} {
+    switch -- [$libobj element -as type $path] {
+        structure {
+            set raw $path
+            # try to find a label to represent the structure
+            set val [$libobj get $path.about.label]
+            if {"" == $val} {
+                set val [$libobj get $path.current.about.label]
+            }
+            if {"" == $val} {
+                if {[$libobj element $path.current] != ""} {
+                    set comps [$libobj children $path.current.components]
+                    set val "<structure> with [llength $comps] components"
+                } else {
+                    set val "<structure>"
+                }
+            }
+            return [list $raw $val]
+        }
+        number {
+            # get the usual value...
+            set raw ""
+            set val ""
+            if {"" != [$libobj element $path.current]} {
+                set raw [$libobj get $path.current]
+            } elseif {"" != [$libobj element $path.default]} {
+                set raw [$libobj get $path.default]
+            }
+            if {"" != $raw} {
+                set val $raw
+                # then normalize to default units
+                set units [$libobj get $path.units]
+                if {"" != $units} {
+                    set val [Rappture::Units::mconvert $val \
+                        -context $units -to $units -units off]
+                }
+            }
+            return [list $raw $val]
+        }
+    }
+
+    # for all other types, get the value (current, or maybe default)
+    set raw ""
+    if {"" != [$libobj element $path.current]} {
+        set raw [$libobj get $path.current]
+    } elseif {"" != [$libobj element $path.default]} {
+        set raw [$libobj get $path.default]
+    }
+    return [list $raw $raw]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: find ?-create? <path>
+#
+# Used internally to find a particular element within the root node
+# according to the path, which is a string of the form
+# "typeNN(id).typeNN(id). ...", where each "type" is a tag <type>;
+# if the optional NN is specified, it indicates an index for the
+# <type> tag within its parent; if the optional (id) part is included,
+# it indicates a tag of the form <type id="id">.
+#
+# By default, it looks for an element along the path and returns None
+# if not found.  If the create flag is set, it creates various elements
+# along the path as it goes.  This is useful for "put" operations.
+#
+# If you include "#" instead of a specific number, a node will be
+# created automatically with a new number.  For example, the path
+# "foo.bar#" called the first time will create "foo.bar", the second
+# time "foo.bar1", the third time "foo.bar2" and so forth.
+#
+# Returns an object representing the element indicated by the path,
+# or "" if the path is not found.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::find {args} {
+    set create 0
+    while {[llength $args] > 1} {
+        set first [lindex $args 0]
+        set args [lrange $args 1 end]
+        if {$first == "-create"} {
+            set create 1
+        } else {
+            error "bad option \"$first\": should be -create"
+        }
+    }
+    if {[llength $args] != 1} {
+        error "wrong # args: should be \"find ?-create? path\""
+    }
+    set path [lindex $args 0]
+
+    if {$path == ""} {
+        return $_node
+    }
+    set path [path2list $path]
+
+    #
+    # Follow the given path and look for all of the parts.
+    #
+    set lastnode $_node
+    set node $lastnode
+    foreach part $path {
+        if {![regexp {^(([a-zA-Z0-9_]*[a-zA-Z_]+#?)([0-9]*))?(\((.*)\))?$} $part \
+               match dummy type index dummy name]} {
+            error "bad path component \"$part\""
+        }
+        #
+        # If the name is like "type2", then look for elements with
+        # the type name and return the one with the given index.
+        # If the name is like "type", then assume the index is 0.
+        #
+        if {$name == ""} {
+            if {$index == ""} {
+                set index 0
+            }
+            set nlist [childnodes $node $type]
+            set node [lindex $nlist $index]
+        } else {
+            #
+            # If the name is like "type(id)", then look for elements
+            # that match the type and see if one has the requested name.
+            # if the name is like "(id)", then look for any elements
+            # with the requested name.
+            #
+            if {$type != ""} {
+                set nlist [childnodes $node $type]
+            } else {
+                set nlist [$node childNodes]
+            }
+            set found 0
+            foreach n $nlist {
+                if {[catch {$n getAttribute id} tag]} { set tag "" }
+                if {$tag == $name} {
+                    set found 1
+                    break
+                }
+            }
+            set node [expr {($found) ? $n : ""}]
+        }
+
+        if {$node == ""} {
+            if {!$create} {
+                return ""
+            }
+
+            #
+            # If the "create" flag is set, then create a node
+            # with the specified "type(id)" and continue on.
+            # If the type is "type#", then create a node with
+            # an automatic number.
+            #
+            if {![regexp {^([^\(]+)\(([^\)]+)\)$} $part match type name]} {
+                set type $part
+                set name ""
+            }
+
+            if {[string match *# $type]} {
+                set type [string trimright $type #]
+                set node [$_document createElement $type]
+
+                # find the last node of same type and append there
+                set pos ""
+                foreach n [$lastnode childNodes] {
+                    if {[$n nodeName] == $type} {
+                        set pos $n
+                    }
+                }
+                if {$pos != ""} {
+                    set pos [$pos nextSibling]
+                }
+                if {$pos != ""} {
+                    $lastnode insertBefore $node $pos
+                } else {
+                    $lastnode appendChild $node
+                }
+            } else {
+                set node [$_document createElement $type]
+                $lastnode appendChild $node
+            }
+            if {"" != $name} {
+                $node setAttribute id $name
+            }
+        }
+        set lastnode $node
+    }
+    return $node
+}
+
+# ----------------------------------------------------------------------
+# USAGE: path2list <path>
+#
+# Converts a path of the form "foo(a).bar.baz" into a list of the
+# form "foo(a) bar baz".  This is a little more complicated than
+# splitting on the .'s, since the stuff in ()'s might have embedded
+# .'s.  Returns a proper Tcl list for all elements of the path.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::path2list {path} {
+    #
+    # Normally, we just split on .'s within the path.  But there
+    # might be some .'s embedded within ()'s in the path.  Change
+    # any embedded .'s to an out-of-band character, then split on
+    # the .'s, and change the embedded .'s back.
+    #
+    if {[regexp {(\([^\)]*)\.([^\)]*\))} $path]} {
+        while {[regsub -all {(\([^\)]*)\.([^\)]*\))} $path "\\1\007\\2" path]} {
+            # keep fixing...
+        }
+    }
+    set path [split $path .]
+    regsub -all {\007} $path {.} path
+
+    return $path
+}
+
+# ----------------------------------------------------------------------
+# USAGE: node2name <node>
+#
+# Used internally to create a name for the specified node.  If the
+# node doesn't have a specific name ("id" attribute) then a name of
+# the form "type123" is constructed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::node2name {node} {
+    if {[catch {$node getAttribute id} name]} { set name "" }
+    if {$name == ""} {
+        set pnode [$node parentNode]
+        if {$pnode == ""} {
+            return ""
+        }
+        set type [$node nodeName]
+        set siblings [childnodes $pnode $type]
+        set index [lsearch $siblings $node]
+        if {$index == 0} {
+            set name $type
+        } else {
+            set name "$type$index"
+        }
+    }
+    return $name
+}
+
+# ----------------------------------------------------------------------
+# USAGE: node2comp <node>
+#
+# Used internally to create a path component name for the specified
+# node.  A path component name has the form "type(id)" or just
+# "type##" if the node doesn't have a name.  This name can be used
+# in a path to uniquely address the component.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::node2comp {node} {
+    set type [$node nodeName]
+    if {[catch {$node getAttribute id} name]} { set name "" }
+    if {$name == ""} {
+        set pnode [$node parentNode]
+        if {$pnode == ""} {
+            return ""
+        }
+        set siblings [childnodes $pnode $type]
+        set index [lsearch $siblings $node]
+        if {$index == 0} {
+            set name $type
+        } else {
+            set name "$type$index"
+        }
+    } else {
+        set name "${type}($name)"
+    }
+    return $name
+}
+
+# ----------------------------------------------------------------------
+# USAGE: node2path <node>
+#
+# Used internally to create a full path name for the specified node.
+# The path is relative to the current object, so it stops when the
+# parent is the root node for this object.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::node2path {node} {
+    set path [node2comp $node]
+    set node [$node parentNode]
+    while {$node != "" && $node != $_node} {
+        set path "[node2comp $node].$path"
+        set node [$node parentNode]
+    }
+    return $path
+}
+
+# ----------------------------------------------------------------------
+# USAGE: childnodes <node> <type>
+#
+# Used internally to return a list of children for the given <node>
+# that match a specified <type>.  Similar to XML getElementsByTagName,
+# but returns only direct children of the <node>.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::childnodes {node type} {
+    set rlist ""
+    foreach cnode [$node childNodes] {
+        if {[$cnode nodeName] == $type} {
+            lappend rlist $cnode
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: uq_get_vars [$tfile]
+#
+# Scans number nodes in the input section for UQ parameters.
+#
+# Returns a string in JSON so it can easily be passed to PUQ. Strips units
+# because PUQ does not need or recognize them.
+#
+# For example, 2 parameters, one gaussian and one uniform might return:
+# [["height","m",["gaussian",100,10,{"min":0}]],["velocity","m/s",["uniform",80,90]]]
+#
+# Returns "" if there are no UQ parameters.
+#
+# If tfile is specified, write a template file out.
+# ----------------------------------------------------------------------
+itcl::body Rappture::LibraryObj::uq_get_vars {{tfile ""}} {
+    set varout \[
+    set varlist []
+
+    if {$tfile == ""} {
+        set node $_node
+    } else {
+        set fid [::open $tfile r]
+        set doc [dom parse [read $fid]]
+        set node [$doc documentElement]
+        close $fid
+    }
+
+    set count 0
+    set n [$node selectNodes /run/input//number]
+    foreach _n $n {
+        set x [$_n selectNodes current/text()]
+        set val [$x nodeValue]
+        if {[string equal -length 8 $val "uniform "] ||
+            [string equal -length 9 $val "gaussian "]} {
+
+            set vname [$_n getAttribute id]
+            if {[lsearch $varlist $vname] >= 0} {
+                continue
+            } else {
+                lappend varlist $vname
+            }
+
+            if {$count > 0} {
+                append varout ,
+            }
+            incr count
+
+            set units ""
+            set unode [$_n selectNodes units/text()]
+            if {"" != $unode} {
+                set units [$unode nodeValue]
+                set val [Rappture::Units::mconvert $val \
+                -context $units -to $units -units off]
+            }
+
+            set v \[\"$vname\",\"$units\",
+            set fmt "\[\"%s\",%.16g,%.16g"
+            set val [format $fmt [lindex $val 0] [lindex $val 1] [lindex $val 2]]
+            append v $val
+
+            if {[string equal -length 9 [$x nodeValue] "gaussian "]} {
+                set minv ""
+                set min_node [$_n selectNodes min/text()]
+                if {"" != $min_node} {
+                    set minv [$min_node nodeValue]
+                    if {$units != ""} {
+                        set minv [Rappture::Units::convert $minv -context $units -units off]
+                    }
+                }
+
+                set maxv ""
+                set max_node [$_n selectNodes max/text()]
+                if {"" != $max_node} {
+                    set maxv [$max_node nodeValue]
+                    if {$units != ""} {
+                        set maxv [Rappture::Units::convert $maxv -context $units -units off]
+                    }
+                }
+
+                if {$minv != "" || $maxv != ""} {
+                    append v ",{"
+                    if {$minv != ""} {
+                        append v "\"min\":$minv"
+                        if {$maxv != ""} {append v ,}
+                    }
+                    if {$maxv != ""} {
+                        append v "\"max\":$maxv"
+                    }
+                    append v "}"
+                }
+            }
+
+            if {$tfile != ""} {
+                $x nodeValue @@[$_n getAttribute id]
+            }
+            append varout $v\]\]
+        }
+    }
+    append varout \]
+
+    if {$tfile != ""} {
+        set fid [open $tfile w]
+        puts $fid "<?xml version=\"1.0\"?>"
+        puts $fid [$node asXML]
+        close $fid
+        $doc delete
+    }
+    if {$varout == "\[\]"} {set varout ""}
+    #puts "uq_get_vars returning $varout"
+    return [list $varout $count]
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects.tcl	(revision 6168)
@@ -0,0 +1,1038 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: objects
+#
+#  This file contains routines to parse object data from files in
+#  the "objects" directory.  Each file defines a Rappture object and
+#  all information needed to specify the object in a tool.xml file.
+#
+#    object NAME ?-extends BASE? {
+#        attr NAME -title XX -type TYPE -path PATH
+#        check attr { code... }
+#        palettes NAME NAME ...
+#        help URL
+#        terminal yes|no
+#        ...
+#    }
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+namespace eval Rappture { # forward declaration }
+namespace eval Rappture::objects {
+    # location of system object info
+    variable installdir [file dirname [file normalize [info script]]]
+
+    #
+    # Set up a safe interpreter for loading object defn files...
+    #
+    variable objParser [interp create -safe]
+    foreach cmd [$objParser eval {info commands}] {
+	$objParser hide $cmd
+    }
+    $objParser alias object Rappture::objects::parse_object
+    $objParser alias unknown Rappture::objects::parse_obj_unknown
+    proc ::Rappture::objects::parse_obj_unknown {args} {
+        error "bad option \"[lindex $args 0]\": should be object"
+    }
+
+    #
+    # Set up a safe interpreter for loading object attributes...
+    #
+    variable attrParser [interp create -safe]
+    foreach cmd [$attrParser eval {info commands}] {
+	$attrParser hide $cmd
+    }
+    $attrParser alias attr Rappture::objects::parse_attr
+    $attrParser alias check Rappture::objects::parse_check
+    $attrParser alias clear Rappture::objects::parse_clear
+    $attrParser alias compare Rappture::objects::parse_compare
+    $attrParser alias export Rappture::objects::parse_export
+    $attrParser alias help Rappture::objects::parse_help
+    $attrParser alias import Rappture::objects::parse_import
+    $attrParser alias method Rappture::objects::parse_method
+    $attrParser alias palettes Rappture::objects::parse_palettes
+    $attrParser alias storage Rappture::objects::parse_storage
+    $attrParser alias terminal Rappture::objects::parse_terminal
+    $attrParser alias unknown Rappture::objects::parse_attr_unknown
+    proc ::Rappture::objects::parse_attr_unknown {args} {
+        error "bad option \"[lindex $args 0]\": should be attr, check, clear, compare, export, help, import, method, palettes, storage, terminal"
+    }
+
+    # this variable will hold ObjDef object as it is being built
+    variable currObjDef ""
+
+    # this variable will hold storage/import/export for object defn
+    variable currObjValDef
+
+    # this variable will hold the name of the object file being parsed
+    variable currFile ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::objects::init
+#
+# Called at the beginning of a Rappture program to initialize the
+# object system.  Loads all object definitions in the "objects"
+# directory found at the system location.  Object types can be
+# queried by calling Rappture::objects::get.
+# ----------------------------------------------------------------------
+proc Rappture::objects::init {} {
+    variable installdir
+
+    # load supporting type definitions
+    foreach fname [glob [file join $installdir types *.tcl]] {
+        uplevel #0 source $fname
+    }
+
+    # load supporting validation procs
+    foreach fname [glob [file join $installdir validations *.tcl]] {
+        uplevel #0 source $fname
+    }
+
+    # load the base class
+    Rappture::objects::load [file join $installdir objects base.rp]
+
+    # load any other classes found
+    foreach dir [glob -nocomplain -types d [file join $installdir objects *]] {
+        Rappture::objects::load [file join $dir *.rp]
+    }
+
+    # if anyone tries to load again, do nothing
+    proc ::Rappture::objects::init {} { # already loaded }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::objects::load ?<filePattern> <filePattern> ...?
+#
+# Clients call this to load object definitions from all files that
+# match the given set of file patterns.  These may be specific
+# file names or patterns of the form "dir/*.rp".  Each object is
+# loaded and Rappture::ObjDef objects are created as a side effect
+# to represent them.  Object types can be queried by calling
+# Rappture::objects::get.
+# ----------------------------------------------------------------------
+proc Rappture::objects::load {args} {
+    variable objParser
+    variable objDefs
+    variable currFile
+
+    # scan through all matching files and load their definitions
+    foreach pattern $args {
+        foreach fname [glob -nocomplain $pattern] {
+            set currFile $fname
+            set fid [open $fname r]
+            set info [read $fid]
+            close $fid
+
+            if {[catch {$objParser eval $info} err] != 0} {
+                error $err "$err\n    (while loading object definition from file \"$fname\")"
+            }
+        }
+    }
+
+    # look at all inheritance relationships and make sure they're satisfied
+    foreach name [array names objDefs] {
+        set ilist [$objDefs($name) cget -inherit]
+        set newilist ""
+        foreach obj $ilist {
+            if {[string index $obj 0] == "@"} {
+                set tname [string range $obj 1 end]
+                if {[info exists objDefs($tname)]} {
+                    lappend newilist $objDefs($tname)
+                } else {
+                    set errs($tname) 1
+                }
+            } else {
+                lappend newilist $obj
+            }
+            $objDefs($name) configure -inherit $newilist
+        }
+    }
+
+    if {[array size errs] > 0} {
+        error "missing definition for base class: [join [lsort [array names errs]] {, }]"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::objects::get ?<name>? ?-what?
+#
+# Returns information about the known Rappture object types.
+# With no args, it returns a list of object class names.  With a
+# specified <name>, it returns all information for that object in
+# a key/value format:
+#
+#   -image xxx -palettes {xx xx xx} -attributes {{...} {...} ...}
+#   -help URL -terminal bool
+#
+# Otherwise, the -what indicates which specific value should be
+# returned.
+# ----------------------------------------------------------------------
+proc Rappture::objects::get {{name ""} {what ""}} {
+    variable objDefs
+
+    if {"" == $name} {
+        return [array names objDefs]
+    }
+
+    set name [string tolower $name]  ;# doesn't matter: Tool or tool
+    if {![info exists objDefs($name)]} {
+        error "bad object type \"$name\": should be one of [join [lsort [array names objDefs]] {, }]"
+    }
+
+    set info(-image) [$objDefs($name) cget -image]
+    set info(-help) [$objDefs($name) cget -help]
+    set info(-palettes) [$objDefs($name) cget -palettes]
+    set info(-terminal) [$objDefs($name) cget -terminal]
+
+    set rlist ""
+    foreach aname [$objDefs($name) getAttr] {
+        lappend rlist [$objDefs($name) getAttr $aname]
+    }
+    set info(-attributes) $rlist
+
+    if {"" == $what} {
+        return [array get info]
+    } elseif {[info exists info($what)]} {
+        return $info($what)
+    }
+    error "bad option \"$what\": should be [join [lsort [array names info]] {, }]"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::objects::import <xmlobj> <path>
+#
+# Tries to extract a value from the given <xmlobj> at the <path>.
+# ----------------------------------------------------------------------
+proc Rappture::objects::import {xmlobj path} {
+    set type [$xmlobj element -as type $path]
+    set ovclass "::Rappture::objects::[string totitle $type]Value"
+
+    # does this object type have a value class?
+    if {[catch {$ovclass ::#auto} obj]} {
+        return ""
+    }
+
+    # try to load the object via its xml scheme
+    if {[catch {$obj import xml $xmlobj $path} result] == 0} {
+        return $obj
+    }
+
+    # can't seem to load anything -- return null
+    itcl::delete object $obj
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::objects::viewer <objVal>|<objDef>|<type> \
+    ?-for input|output? ?-parent win?
+#
+# Used to find/create a viewer for the given object.  The object can
+# be specified by an ObjVal object, an ObjDef object definition, or
+# a string name <type>.  The -for flag indicates whether the viewer
+# widget is for input or output.  The -parent indicates the parent
+# containing the widget.  If the widget already exists, it is returned
+# directly.  Otherwise, it is created and returned.
+# ----------------------------------------------------------------------
+proc Rappture::objects::viewer {what args} {
+    variable objDefs
+
+    # figure out the name of the desired object type
+    if {[catch {$what isa ::Rappture::objects::ObjVal} valid] == 0 && $valid} {
+        set type [[$what definition] type]
+    } elseif {[catch {$what isa ::Rappture::objects::ObjDef} valid] == 0
+                        && $valid} {
+        set type [$what type]
+    } else {
+        set type [string tolower $what]  ;# doesn't matter: Number or number
+        if {![info exists objDefs($type)]} {
+            error "bad object type \"$type\": should be one of [join [lsort [array names objDefs]] {, }]"
+        }
+    }
+
+    # process additional options
+    array set opt {
+        -for output
+        -parent "."
+    }
+    foreach {key val} $args {
+        if {![info exists opt($key)]} {
+            error "bad option \"$key\": should be [join [array names opt] {, }]"
+        }
+        set opt($key) $val
+    }
+    if {![winfo exists $opt(-parent)]} {
+        error "bad parent window \"$opt(-parent)\""
+    }
+    if {$opt(-parent) eq "."} {
+        set opt(-parent) ""  ;# avoid ".." below when we say: $parent.foo
+    }
+    if {[lsearch {input output} $opt(-for)] < 0} {
+        error "bad value \"$opt(-for)\": should be input, output"
+    }
+
+    # build the class name and widget name:
+    #   class: Rappture::objects::CurveOutput
+    #  widget: .foo.bar.curveOutput
+    set which [string totitle $opt(-for)]
+    set class "::Rappture::objects::[string totitle $type]$which"
+    set win "$opt(-parent).v$type$opt(-for)"
+
+    if {[winfo exists $win]} {
+        return $win
+    }
+    if {[catch {$class $win} err] == 0} {
+        return $win
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::objects::palettes
+#
+# Returns a list of unique palette names from all known types.
+# ----------------------------------------------------------------------
+proc Rappture::objects::palettes {} {
+    variable objDefs
+
+    foreach name [array names objDefs] {
+        foreach pname [$objDefs($name) cget -palettes] {
+            set unique($pname) 1
+        }
+    }
+    return [lsort -dictionary [array names unique]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::objects::check <type> <side> {<key> <val>...} <debugInfo>
+#
+# Checks the definition for an object of the given <type> to see if
+# there are any errors in the values.  The <side> indicates whether
+# it is an input or an output.  Some attributes don't apply when an
+# object is an output.  The current attribute values are specified as
+# a key/value list.  Returns a list of the form:
+#   error "something went wrong"
+#   warning "might check this"
+# ----------------------------------------------------------------------
+proc Rappture::objects::check {type side attrinfo debug} {
+    variable objDefs
+
+    set type [string tolower $type]  ;# doesn't matter: Tool or tool
+
+    if {[info exists objDefs($type)]} {
+        return [$objDefs($type) check $side $attrinfo $debug]
+    }
+    return ""
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_object
+#
+# Used internally to parse the definition of a Rappture object type:
+#
+#   object <name> ?-extends <type>? {
+#     attr <name> <args>...
+#     attr <name> <args>...
+#     ...
+#   }
+#
+# Builds an object in currObjDef and then registers the completed
+# object in the objDefs array.
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_object {args} {
+    variable currObjDef
+    variable currObjValDef
+    variable currFile
+    variable objDefs
+    variable attrParser
+
+    set name [lindex $args 0]
+    set args [lrange $args 1 end]
+
+    set ilist ""
+    while {1} {
+        set first [lindex $args 0]
+        if {[string index $first 0] != "-"} {
+            break
+        }
+        if {"-extends" == $first} {
+            set base [lindex $args 1]
+            set args [lrange $args 2 end]
+            lappend ilist @$base
+        } else {
+            error "bad option \"$first\": should be -extends"
+        }
+    }
+
+    if {[llength $args] != 1} {
+        error "wrong # args: should be \"object name ?-extends base? {...definition...}\""
+    }
+    set body [lindex $args end]
+
+    # create an object definition and add attributes to it
+    catch {unset currObjValDef}
+    array set currObjValDef {
+        clear ""
+        compare ""
+        storage ""
+        import ""
+        export ""
+        method ""
+    }
+
+    set currObjDef [Rappture::objects::ObjDef ::#auto $name -inherit $ilist]
+
+    set cmds {
+        # parse attribute definitions
+        $attrParser eval $body
+
+        # look for an image for this object
+        set rootf [file rootname $currFile]
+        foreach ext {png jpg gif} {
+            if {[file readable $rootf.$ext] && 
+		[catch {package present Tk}] == 0 && 
+		[catch {package present Img}] == 0} {
+                set imh [image create photo -file $rootf.$ext]
+                $currObjDef configure -image $imh
+                break
+            }
+        }
+
+        #
+        # Create a class to manage the object's value...
+        #
+        set ovdefn "inherit ::Rappture::objects::ObjVal\n"
+        append ovdefn $currObjValDef(storage) "\n"
+        append ovdefn "destructor { clear }\n"
+        append ovdefn "public method clear {} [list $currObjValDef(clear)]\n"
+        append ovdefn "public method definition {} {return $currObjDef}\n"
+
+        # define extra methods added specially to this object
+        foreach mn $currObjValDef(method) {
+            append ovdefn [list public method $mn $currObjValDef(m-$mn-arglist) $currObjValDef(m-$mn-body)] "\n"
+        }
+
+        append ovdefn [format "private method importTypes {} { return %s }\n" [list $currObjValDef(import)]]
+        append ovdefn [format "private method exportTypes {} { return %s }\n" [list $currObjValDef(export)]]
+
+        # define methods to handle each import type
+        foreach fmt $currObjValDef(import) {
+            append ovdefn [list public method import_$fmt $currObjValDef(im-$fmt-arglist) $currObjValDef(im-$fmt-body)] "\n"
+        }
+
+        # define methods to handle each export type
+        foreach fmt $currObjValDef(export) {
+            append ovdefn [list public method export_$fmt $currObjValDef(ex-$fmt-arglist) $currObjValDef(ex-$fmt-body)] "\n"
+        }
+
+        # define the "compare" method
+        set varcode ""
+        foreach line [split $currObjValDef(storage) \n] {
+            if {[regexp {(?:variable|common) +([a-zA-Z0-9_]+)} $line match var]} {
+                append varcode "_linkvar import \$obj $var\n"
+            }
+        }
+        if {$currObjValDef(compare) eq ""} {
+            set currObjValDef(compare) "return 1"
+        }
+        append ovdefn [format { public method compare {obj} { %s %s }
+            } $varcode $currObjValDef(compare)] "\n"
+
+        append ovdefn {
+            # utility used in "compare" method
+            # this must be defined in each derived class at the most
+            # specific scope, so that it has access to all of the storage
+            # variables for the class.  If it's defined in the base class,
+            # then it sees only the base class variables.
+            protected method _linkvar {option args} {
+              switch -- $option {
+                export {
+                    #
+                    # Look for the variable in the current object scope
+                    # and return a command that can be used to rebuild it.
+                    #
+                    set vname [lindex $args 0]
+                    set suffix [lindex $args 1]
+                    if {[array exists $vname]} {
+                        return [list array set ${vname}${suffix} [array get $vname]]
+                    } elseif {[info exists $vname]} {
+                        return [list set ${vname}${suffix} [set $vname]]
+                    } else {
+                        return [list set ${vname}${suffix} ""]
+                    }
+                }
+                import {
+                    #
+                    # The "_linkvar export" command produces a script that
+                    # will replicate the variable.  Invoke this script in
+                    # the calling context (uplevel) to copy the variable
+                    # to the proper call stack.
+                    #
+                    set obj [lindex $args 0]
+                    set vname [lindex $args 1]
+                    uplevel [$obj _linkvar export $vname 2]
+                }
+                default {
+                    error "bad option \"$option\": should be import, export"
+                }
+              }
+            }
+        }
+
+        # create the object value class
+        itcl::class "::Rappture::objects::[string totitle $name]Value" $ovdefn
+    }
+
+    if {[catch $cmds err] != 0} {
+        itcl::delete object $currObjDef
+        set currObjDef ""
+        error $err "\n    (while loading object definition for \"$name\")"
+    }
+
+    set objDefs($name) $currObjDef
+    set currObjDef ""
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_attr
+#
+# Used internally to parse the definition of an attribute within a
+# Rappture object definition:
+#
+#   attr <name> -title <string> -type <string> -path <string>
+#
+# Adds an attribute definition to the object in currObjDef.
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_attr {args} {
+    variable currObjDef
+
+    set name [lindex $args 0]
+    eval $currObjDef add attr $name [lrange $args 1 end]
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_check
+#
+# Used internally to register a bit of code that's used to check the
+# integrity of a value.
+#
+#   check attr { code... }
+#
+# The code assumes that attribute values are stored in an attr(...)
+# array.  It checks the values and returns errors in the following
+# format:
+#   error "something went wrong" {-node 2 -counter 7 -attr label}
+#   warning "watch out for this" {-node 8 -counter 1 -attr description}
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_check {attr code} {
+    variable currObjDef
+    $currObjDef add check $attr $code
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_clear
+#
+# Used internally to parse the definition of a clear block within a
+# Rappture object definition:
+#
+#   clear <body>
+#
+# The clear block is a block of code that clears the storage variables
+# before a new import operation, or whenever the object is destroyed.
+# Frees any objects stored in the storage variables.
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_clear {body} {
+    variable currObjValDef
+
+    if {$currObjValDef(clear) ne ""} {
+        error "clear block already defined"
+    }
+    set currObjValDef(clear) $body
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_compare
+#
+# Used internally to parse the definition of a compare block for the
+# object value within a Rappture object definition:
+#
+#   compare <body>
+#
+# The compare block is a block of code that compares the value of
+# the current object to another object, and returns -1/0/1, similar
+# to str_cmp.
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_compare {body} {
+    variable currObjValDef
+
+    if {$currObjValDef(compare) ne ""} {
+        error "compare block already defined"
+    }
+    set currObjValDef(compare) $body
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_export
+#
+# Used internally to parse the definition of an export scheme within
+# a Rappture object definition:
+#
+#   export <name> <arglist> <body>
+#
+# The export <name> defines a data type that the object's value can
+# be exported to.  The <arglist> arguments include the XML object, the
+# file handle, etc, depending on the export type.  The <body> is a
+# body of code invoked to handle the export operation.
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_export {name arglist body} {
+    variable currObjValDef
+
+    set i [lsearch $currObjValDef(export) $name]
+    if {$i >= 0} {
+        error "export type \"$name\" already defined"
+    }
+    lappend currObjValDef(export) $name
+    set currObjValDef(ex-$name-arglist) $arglist
+    set currObjValDef(ex-$name-body) $body
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_help
+#
+# Used internally to parse the definition of the help page URL for a
+# Rappture object definition:
+#
+#   help <url>
+#
+# Keeps the <url> around so it can be displayed later in a "Help"
+# button on the attribute editor.
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_help {url} {
+    variable currObjDef
+    if {![regexp {^https?://} $url]} {
+        error "bad value \"$url\": should be a URL for the help page"
+    }
+    $currObjDef configure -help $url
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_import
+#
+# Used internally to parse the definition of an import scheme within
+# a Rappture object definition:
+#
+#   import <name> <arglist> <body>
+#
+# The import <name> defines a data type that the object's value can
+# be imported to.  The <arglist> arguments include the XML object, the
+# file handle, etc, depending on the import type.  The <body> is a
+# body of code invoked to handle the import operation.
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_import {name arglist body} {
+    variable currObjValDef
+
+    set i [lsearch $currObjValDef(import) $name]
+    if {$i >= 0} {
+        error "import type \"$name\" already defined"
+    }
+    lappend currObjValDef(import) $name
+    set currObjValDef(im-$name-arglist) $arglist
+    set currObjValDef(im-$name-body) $body
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_method
+#
+# Used internally to parse the definition of an object method within
+# a Rappture object definition:
+#
+#   method <name> <arglist> <body>
+#
+# A method is an extra function supported by this object, used to
+# query or modify the object value (usually by the GUI viewer).
+# The <arglist> defines the arguments to the method, and the <body>
+# is the body of code invoked to implement the method.
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_method {name arglist body} {
+    variable currObjValDef
+
+    set i [lsearch $currObjValDef(method) $name]
+    if {$i >= 0} {
+        error "method \"$name\" already defined"
+    }
+    lappend currObjValDef(method) $name
+    set currObjValDef(m-$name-arglist) $arglist
+    set currObjValDef(m-$name-body) $body
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_palettes
+#
+# Used internally to parse the definition of the palettes for a
+# Rappture object definition:
+#
+#   palettes <name> <name> ...
+#
+# Adds the list of palettes to the object definition.  This determines
+# what palettes of controls will contain this object.
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_palettes {args} {
+    variable currObjDef
+    $currObjDef configure -palettes $args
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_storage
+#
+# Used internally to parse the definition of a storage block for the
+# object value within a Rappture object definition:
+#
+#   storage {
+#       private variable ...
+#   }
+#
+# The storage block is added directly to a class defined to hold the
+# object value.  Import/export code moves values into and out of the
+# storage area.
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_storage {body} {
+    variable currObjValDef
+
+    if {$currObjValDef(storage) ne ""} {
+        error "storage block already defined"
+    }
+    set currObjValDef(storage) $body
+}
+
+# ----------------------------------------------------------------------
+# PARSER:  Rappture::objects::parse_terminal
+#
+# Used internally to parse the "terminal" setting within a Rappture
+# object definition:
+#
+#   terminal yes|no
+#
+# Sets the Boolean value, which determines whether or not this object
+# can have other objects embedded within it.  If it is "terminal",
+# an object is a leaf node.
+# ----------------------------------------------------------------------
+proc Rappture::objects::parse_terminal {val} {
+    variable currObjDef
+    if {![string is boolean -strict $val]} {
+        error "bad value \"$val\": should be boolean"
+    }
+    $currObjDef configure -terminal $val
+}
+
+# ----------------------------------------------------------------------
+#  CLASS: ObjDef
+# ----------------------------------------------------------------------
+itcl::class Rappture::objects::ObjDef {
+    public variable inherit ""
+    public variable image ""
+    public variable help ""
+    public variable terminal "yes"
+    public variable palettes ""
+
+    constructor {type args} {
+        set _type $type
+        set _checks(num) 0
+        eval configure $args
+    }
+
+    public method type {} {
+        return $_type
+    }
+
+    public method add {what name args} {
+        switch -- $what {
+            attr {
+                if {[info exists _attr2def($name)]} {
+                    error "attribute \"$name\" already defined"
+                }
+                set obj [Rappture::objects::ObjAttr #auto]
+                if {[catch {eval $obj configure $args} err] != 0} {
+                    itcl::delete object $obj
+                    error $err
+                }
+                lappend _attrs $name
+                set _attr2def($name) $obj
+            }
+            check {
+                set n [incr _checks(num)]
+                set _checks($n-attr) $name
+                set _checks($n-code) [lindex $args 0]
+            }
+        }
+    }
+
+    public method getAttr {args} {
+        if {[llength $args] == 0} {
+            set rlist ""
+            foreach baseobj [cget -inherit] {
+                eval lappend rlist [$baseobj getAttr]
+            }
+            eval lappend rlist $_attrs
+            return $rlist
+        } elseif {[llength $args] > 2} {
+            error "wrong # args: should be \"getAttr ?name? ?-part?\""
+        }
+
+        set name [lindex $args 0]
+        set part [lindex $args 1]
+
+        # handle attributes defined right in this class
+        if {[info exists _attr2def($name)]} {
+            set rlist $name
+            foreach opt [$_attr2def($name) configure] {
+                if {[lindex $opt 0] eq $part} {
+                    return [lindex $opt 2]
+                }
+                lappend rlist [lindex $opt 0] [lindex $opt 2]
+            }
+            return $rlist
+        }
+
+        # handle attributes defined in a base class
+        foreach baseobj [cget -inherit] {
+            set rval [eval $baseobj getAttr $name $part]
+            if {$rval ne ""} {
+                return $rval
+            }
+        }
+        return ""
+    }
+
+    # call this to check the integrity of all values
+    public method check {side data debug {extra ""}} {
+        set rlist ""
+        array set attr $data
+
+        # code snippets sometimes use this object info
+        if {$extra ne ""} {
+            array set object $extra
+        } else {
+            array set object [list type [type] palettes $palettes help $help checked ""]
+        }
+
+        # do checks defined in the current class
+        for {set n 1} {$n <= $_checks(num)} {incr n} {
+            set aname $_checks($n-attr)
+
+            # if we already did this check on a derived class, then skip it
+            # derived classes override the base class
+            if {[lsearch $object(checked) $aname] >= 0} {
+                continue
+            }
+
+            # look at the -only option and see if the check applies here
+            set only [getAttr $aname -only]
+            if {$only ne "" && [lsearch $only $side] < 0} {
+                continue
+            }
+
+            # execute the code to look for errors in the value
+            set status [catch $_checks($n-code) result]
+            lappend object(checked) $aname
+
+            if {$status != 0 && $status != 2} {
+                puts stderr "ERROR DURING VALUE CHECK:\n$result"
+            } elseif {[llength $result] > 0} {
+                set class [lindex $result 0]
+                set mesg [lindex $result 1]
+                set dinfo $debug
+                lappend dinfo -attribute $aname
+                lappend rlist [list $class $mesg $dinfo]
+            }
+        }
+
+        # handle checks defined in a base class
+        foreach baseobj [cget -inherit] {
+            eval lappend rlist [$baseobj check $side $data $debug [array get object]]
+        }
+
+        return $rlist
+    }
+
+    private variable _type ""   ;# type name (lowercase) for object type
+    private variable _attrs ""  ;# list of attr names in order
+    private variable _attr2def  ;# maps attr name => ObjAttr object
+    private variable _checks    ;# bits of code used for checks
+}
+
+# ----------------------------------------------------------------------
+#  CLASS: ObjAttr
+# ----------------------------------------------------------------------
+itcl::class Rappture::objects::ObjAttr {
+    public variable title ""
+    public variable type ""
+    public variable path ""
+    public variable only ""
+    public variable expand "no"
+    public variable tooltip ""
+
+    constructor {args} {
+        eval configure $args
+    }
+}
+
+# ----------------------------------------------------------------------
+#  CLASS: ObjVal
+#  Able to import/export the value for a particular object class.
+# ----------------------------------------------------------------------
+itcl::class Rappture::objects::ObjVal {
+    public method definition {} { # returns the ObjDef class for this value }
+
+    public method attr {option args} {
+        switch -- $option {
+            get {
+                if {[llength $args] == 0} {
+                    return [[$this definition] getAttr]
+                } elseif {[llength $args] == 1} {
+                    set name [lindex $args 0]
+                    if {[catch {[$this definition] getAttr $name}]} {
+                        error "attribute \"$name\" not defined on $this"
+                    }
+                    if {[info exists attr($name)]} {
+                        return $attr($name)
+                    }
+                    return ""
+                } else {
+                    error "wrong # args: should be \"attr get ?name?\""
+                }
+            }
+            set {
+                if {[llength $args] != 2} {
+                    error "wrong # args: should be \"attr set name value\""
+                }
+                set name [lindex $args 0]
+                set val [lindex $args 1]
+                if {[catch {[$this definition] getAttr $name}] == 0} {
+                    set attr($name) $val
+                }
+                return $val
+            }
+            info {
+                if {[llength $args] == 1} {
+                    set name [lindex $args 0]
+                    return [[$this definition] getAttr $name]
+                } else {
+                    error "wrong # args: should be \"attr info name\""
+                }
+            }
+            import {
+                if {[llength $args] != 2} {
+                    error "wrong # args: should be \"attr import xmlobj path\""
+                }
+                set xmlobj [lindex $args 0]
+                set path [lindex $args 1]
+
+                set odef [$this definition]
+                foreach name [$odef getAttr] {
+                    set tail [$odef getAttr $name -path]
+                    set apath $path.$tail
+                    if {[$xmlobj element -as type $apath] ne ""} {
+                        set attr($name) [$xmlobj get $apath]
+                    }
+                }
+            }
+            export {
+                if {[llength $args] != 2} {
+                    error "wrong # args: should be \"attr export xmlobj path\""
+                }
+                set xmlobj [lindex $args 0]
+                set path [lindex $args 1]
+
+                set odef [$this definition]
+                foreach name [$odef getAttr] {
+                    if {[info exists attr($name)]} {
+                        set tail [$odef getAttr $name -path]
+                        $xmlobj put $path.$tail $attr($name)
+                    }
+                }
+            }
+            default {
+                error "bad option \"$option\": should be get, set, info, import, export"
+            }
+        }
+    }
+    protected variable attr  ;# maps attribute name => value
+
+    public method clear {} { # nothing to do for base class }
+
+    public method import {pattern args} {
+        clear
+        set errs ""
+
+        # scan through all matching types and try to import the value
+        foreach type [importTypes] {
+            if {[string match $pattern $type]} {
+                set cmd [format {eval $this import_%s $args} $type]
+                if {[catch $cmd result] == 0} {
+                    return 1
+                }
+                lappend errs "not $type: $result"
+            }
+        }
+        return [concat 0 $errs]
+    }
+
+    public method export {pattern args} {
+        set errs ""
+
+        # scan through all matching types and try to export the value
+        foreach type [exportTypes] {
+            if {[string match $pattern $type]} {
+                set cmd {uplevel $this export_$type $args}
+                if {[catch $cmd result] == 0} {
+                    return 1
+                }
+                lappend errs "not $type: $result"
+            }
+        }
+        return [concat 0 $errs]
+    }
+
+    private method importTypes {} { # derived classes override this }
+    private method exportTypes {} { # derived classes override this }
+
+    # utility used in "compare" method
+    # links a variable $vname from object $obj into the current scope
+    # with a similar variable name, but with $suffix on the end
+    #
+    # usage: _linkvar import _foo 2
+    #
+    # this triggers a call to "$obj _linkvar export" to produce a command
+    # that can be used to rebuild the desired variable from $obj into the
+    # local context.
+    #
+    # the _linkvar method must be defined in each derived class so that
+    # it has access to variables in the most-specific object context.
+    protected method _linkvar {option args} {
+        error "derived classes should override this method"
+    }
+
+    # utility to compare two double-prec numbers within a tolerance
+    proc cmpdbl {num1 num2 {max ""}} {
+        set mag [expr {0.5*(abs($num1)+abs($num2))}]
+        set diff [expr {abs($num1-$num2)}]
+
+        if {$diff <= 1e-6*$mag} {
+            # very small difference
+            return 0
+        } elseif {$max ne "" && $mag <= 1e-6*abs($max)} {
+            # very small numbers -- treat them as zero
+            return 0
+        } elseif {$num1 < $num2} {
+            return -1
+        } else {
+            return 1
+        }
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/base.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/base.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/base.rp	(revision 6168)
@@ -0,0 +1,27 @@
+object base {
+    attr label -title "Label" -type string -path about.label -tooltip "Short label for the object, indicating what it represents."
+
+    attr description -title "Description" -type string:lines=3 -expand yes -path about.description -tooltip "Brief description of the object, which appears in a tooltip when the user mouses over the value.  Avoid repeating the label.  Instead, add information about what the object represents for your simulator, what it affects as an input, or what it means as an output."
+
+    attr enable -title "Enable" -type string:validate=enable -path about.enable -only input -tooltip "Use this to enable/disable an input.  A value of \"false\" permanently disables the input.  More commonly, the value is an expression that indicates when the input should be enabled.\nEXAMPLE: input.choice(model) == \"dd\""
+
+
+    check label {
+        set lbl [string trim $attr(label)]
+        if {[string length $lbl] == 0} {
+            return [list warning "You should set a label that describes this value."]
+        }
+        if {[string equal -nocase $lbl $object(type)]} {
+            return [list warning "You should change the label to something that describes this value better than just its type."]
+        }
+    }
+
+    check description {
+        set desc [string trim $attr(description)]
+        if {[string length $desc] == 0} {
+            return [list warning "You should include a description of what this value represents, typical settings, etc."]
+        } elseif {[string equal $desc $attr(label)]} {
+            return [list warning "The description should be different from the label and give additional information about the value."]
+        }
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/boolean/boolean.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/boolean/boolean.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/boolean/boolean.rp	(revision 6168)
@@ -0,0 +1,63 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: boolean
+#
+#  A logical on/off value.  It is usually used as an input, but it
+#  can also be an output from a simulation.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object boolean -extends base {
+    palettes "Inputs" "Outputs"
+
+    help http://rappture.org/wiki/rp_xml_ele_boolean
+
+    attr default -title "Default Value" -type boolean -path default -only input -tooltip "Sets the value that this input has when the program first starts.  This value is used by default unless the user explicitly changes it."
+
+    check default {
+        if {[string length [string trim $attr(default)]] == 0} {
+            return [list error "Must have a default value for this boolean value."]
+        }
+    }
+
+    storage {
+        private variable _val   ;# boolean value
+    }
+
+    import xml {xmlobj path} {
+        attr import $xmlobj $path
+        import_string [$xmlobj get $path.current]
+    }
+
+    export xml {xmlobj path} {
+        set v [expr {($_val) ? "true" : "false"}]
+        $xmlobj put $path $v
+    }
+
+    import string {val} {
+        if {[string is boolean -strict $val]} {
+            set _val $val
+        } else {
+            error "don't recognize value"
+        }
+    }
+
+    export string {var} {
+        upvar $var v
+        set v [expr {($_val) ? "true" : "false"}]
+    }
+
+    compare {
+        if {$_val && !$_val2} {
+            return 1
+        } elseif {!$_val && $_val2} {
+            return -1
+        }
+        return 0
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/choice/choice.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/choice/choice.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/choice/choice.rp	(revision 6168)
@@ -0,0 +1,78 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: choice
+#
+#  A set of mutually-exclusive choices, as in Model A or Model B.
+#  Usually used as an input to a simulation.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object choice -extends base {
+    palettes "Inputs"
+
+    help http://rappture.org/wiki/rp_xml_ele_choice
+
+    attr options -title "Options" -type choices -path option -tooltip "List of choices that will appear on the drop-down menu in your program."
+
+    attr default -title "Default Value" -type string -path default -only input -tooltip "Sets the value that this input has when the program first starts.  This value is used by default unless the user explicitly changes it."
+
+    check options {
+        if {[llength $attr(options)] < 2} {
+            return [list warning "Should have at least two options for this choice, or it's not really a choice at all."]
+        }
+    }
+
+    check default {
+        if {[llength $attr(options)] > 0} {
+            if {[string length [string trim $attr(default)]] == 0} {
+                return [list error "Must have a default value for this choice."]
+            }
+
+            # make sure that the default is really a choice
+            set defval [string trim $attr(default)]
+            set found 0
+            foreach rec $attr(options) {
+                set label [string trim [lindex $rec 0]]
+                set value [string trim [lindex $rec 1]]
+                if {$defval eq $label || $defval eq $value} {
+                    set found 1
+                    break
+                }
+            }
+            if {!$found} {
+                return [list error "Default value must be a label or value for one of the current choices."]
+            }
+        }
+    }
+
+    storage {
+        private variable _val   ;# current choice
+    }
+
+    import xml {xmlobj path} {
+        attr import $xmlobj $path
+        import_string [$xmlobj get $path.current]
+    }
+
+    export xml {xmlobj path} {
+        $xmlobj put $path $_val
+    }
+
+    import string {val} {
+        set _val $val
+    }
+
+    export string {var} {
+        upvar $var v
+        set v $_val
+    }
+
+    compare {
+        return [string compare $_val $_val2]
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/curve/curve.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/curve/curve.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/curve/curve.rp	(revision 6168)
@@ -0,0 +1,472 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: curve
+#
+#  A set of (x,y) points.  Usually used as the output from a simulation,
+#  although it could also be an input if we create an input editor
+#  to specify values.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object curve -extends base {
+    palettes "Outputs"
+
+    help http://rappture.org/wiki/rp_xml_ele_curve
+
+    attr group -title "Plotting Group" -type string -path about.group -tooltip "If two or more curves share the same name for their plotting group, they are overlayed on the same plot.  The name for the plotting group becomes the name of the overall output, and the label for each curve appears in a tooltip when you mouse over its points."
+
+    attr xlabel -title "X-axis Label" -type string -path xaxis.label -tooltip "Label shown on the x-axis for the plot."
+
+    attr xdesc  -title "X-axis Description" -type string -path xaxis.description -tooltip "Description of the x-axis that appears in a tooltip window when you mouse over the x-axis.  This should not merely repeat what the label says, but explain what it means."
+
+    attr xunits -title "X-axis Units" -type units -path xaxis.units -tooltip "Units for the physical quantity that the x-axis represents."
+
+    attr ylabel -title "Y-axis Label" -type string -path yaxis.label -tooltip "Label shown on the y-axis for the plot."
+
+    attr ydesc  -title "Y-axis Description" -type string -path yaxis.description -tooltip "Description of the y-axis that appears in a tooltip window when you mouse over the y-axis.  This should not merely repeat what the label says, but explain what it means."
+
+    attr yunits -title "Y-axis Units" -type units -path yaxis.units -tooltip "Units for the physical quantity that the y-axis represents."
+
+
+    check xlabel {
+        if {[string length [string trim $attr(xlabel)]] == 0} {
+            return [list warning "Should set a label that describes the x-axis of this plot."]
+        }
+    }
+    check xdesc {
+        if {[string length [string trim $attr(xdesc)]] == 0} {
+            return [list warning "Should include a description of what the x-axis represents, physical meaning, expected range, etc."]
+        }
+    }
+
+    check ylabel {
+        if {[string length [string trim $attr(ylabel)]] == 0} {
+            return [list warning "Should set a label that describes the y-axis of this plot."]
+        }
+    }
+    check ydesc {
+        if {[string length [string trim $attr(ydesc)]] == 0} {
+            return [list warning "Should include a description of what the y-axis represents, physical meaning, expected range, etc."]
+        }
+    }
+
+    storage {
+        private variable _xvecs       ;# maps comp name => x-axis vector
+        private variable _yvecs       ;# maps comp name => y-axis vector
+        private variable _hints       ;# store "hints" based on attributes
+        private variable _xmarkers "" ;# list of {x,label,options} for markers
+        private variable _ymarkers "" ;# list of {y,label,options} for markers
+    }
+    clear {
+        foreach comp [array names _xvecs] {
+            blt::vector destroy $_xvecs($comp)
+            blt::vector destroy $_yvecs($comp)
+        }
+        catch {unset _xvecs}
+        catch {unset _yvecs}
+        catch {unset _hints}
+        set _xmarkers ""
+        set _ymarkers ""
+    }
+
+    # ------------------------------------------------------------------
+    # IMPORT: string
+    # ------------------------------------------------------------------
+    import string {val} {
+        set xv [blt::vector create \#auto]
+        set yv [blt::vector create \#auto]
+
+        set num 0
+        foreach line [split $val \n] {
+            if {[string index $line 0] eq "#"} {
+                # skip over lines that start with hash mark
+                continue
+            }
+
+            if {[string trim $line] eq ""} {
+                # blank line means new component
+                if {[$xv length] > 0} {
+                    # if we have something stored, save this and start another
+                    set cname "c[incr num]"
+                    set _xvecs($cname) $xv
+                    set _yvecs($cname) $yv
+                    set xv [blt::vector create \#auto]
+                    set yv [blt::vector create \#auto]
+                }
+                continue
+            }
+
+            set x [lindex $line 0]
+            if {![string is double -strict $x]} {
+                blt::vector destroy $xv $yv
+                error "bad value \"$x\": should be double number"
+            }
+
+            set y [lindex $line 1]; if {$y eq ""} { set y 0 }
+            if {![string is double -strict $y]} {
+                blt::vector destroy $xv $yv
+                error "bad value \"$y\": should be double number"
+            }
+
+            $xv append $x
+            $yv append $y
+        }
+
+        if {[$xv length] > 0} {
+            # if we have something stored, save the last component
+            set cname "c[incr num]"
+            set _xvecs($cname) $xv
+            set _yvecs($cname) $yv
+        }
+    }
+
+    # ------------------------------------------------------------------
+    # EXPORT: string
+    # ------------------------------------------------------------------
+    export string {var} {
+        upvar $var v
+        set v ""
+        set nseparators [expr {[array size _xvecs] - 1}]
+
+        foreach cname [array names _xvecs] {
+            foreach x [$_xvecs($cname) range 0 end] y [$_yvecs($cname) range 0 end] {
+                append v "$x\t$y\n"
+            }
+
+            # add blank lines between components
+            if {$nseparators > 0} {
+                append v "\n"
+                incr nseparators -1
+            }
+        }
+    }
+
+    # ------------------------------------------------------------------
+    # IMPORT: xml
+    # ------------------------------------------------------------------
+    import xml {xmlobj path} {
+        attr import $xmlobj $path
+
+        foreach cname [$xmlobj children -type component $path] {
+            set xv [blt::vector create \#auto]
+            set yv [blt::vector create \#auto]
+
+            set xydata [$xmlobj get $path.$cname.xy]
+            if {[string length $xydata] > 0} {
+                set tmp [blt::vector create \#auto]
+                $tmp set $xydata
+                $tmp split $xv $yv
+                blt::vector destroy $tmp
+            } else {
+                $xv set [$xmlobj get $path.$cname.xvector]
+                $yv set [$xmlobj get $path.$cname.yvector]
+            }
+
+            if {[string length [$xmlobj get $path.$cname.xerrorbars]] > 0} {
+                error "xerrorbars not fully implemented"
+            }
+            if {[string length [$xmlobj get $path.$cname.yerrorbars]] > 0} {
+                error "yerrorbars not fully implemented"
+            }
+
+            set xlen [$xv length]
+            set ylen [$yv length]
+            if {$xlen == 0 && $ylen == 0} {
+                blt::vector destroy $xv $yv
+                error "can't find any data at $path.$cname"
+            } elseif {[$xv length] != [$yv length]} {
+                blt::vector destroy $xv $yv
+                error "mismatch between x- and y-axes: $xlen x values, versus $ylen y values"
+            }
+            set _xvecs($cname) $xv
+            set _yvecs($cname) $yv
+        }
+
+        foreach elem [$xmlobj children -type "marker" $path.xaxis] {
+            set at     [$xmlobj get $path.xaxis.$elem.at]
+            set label  [$xmlobj get $path.xaxis.$elem.label]
+            set styles [$xmlobj get $path.xaxis.$elem.style]
+            lappend _xmarkers [list $at $label $styles]
+        }
+        foreach elem [$xmlobj children -type "marker" $path.yaxis] {
+            set at     [$xmlobj get $path.yaxis.$elem.at]
+            set label  [$xmlobj get $path.yaxis.$elem.label]
+            set styles [$xmlobj get $path.yaxis.$elem.style]
+            lappend _ymarkers [list $at $label $styles]
+        }
+    }
+
+    # ------------------------------------------------------------------
+    # EXPORT: xml
+    # ------------------------------------------------------------------
+    export xml {xmlobj path} {
+        foreach cname [array names _xvecs] {
+            set data ""
+            foreach x [$_xvecs($cname) range 0 end] y [$_yvecs($cname) range 0 end] {
+                append data "$x $y\n"
+            }
+            if {$cname ne ""} {
+                set elem "component($cname)"
+            } else {
+                set elem "component"
+            }
+            $xmlobj put $path.$elem.xy $data
+        }
+    }
+
+    # ------------------------------------------------------------------
+    # COMPARE
+    # ------------------------------------------------------------------
+    compare {
+        if {[array size _xvecs] != [array size _xvecs2]} {
+            return 1  ;# different numbers of components
+        }
+        foreach cname [array names _xvecs] cname2 [array names _xvecs2] {
+            # take a quick look at the x vector
+            set xvlen [$_xvecs($cname) length]
+            if {$xvlen != [$_xvecs2($cname2) length]} {
+                return 1  ;# different lengths of this component
+            }
+
+            # take a quick look at the y vector
+            set yvlen [$_yvecs($cname) length]
+            if {$yvlen != [$_yvecs2($cname2) length]} {
+                return 1  ;# different lengths of this component
+            }
+
+            # scan through all values and see if they match
+            set xv $_xvecs($cname)
+            set xv2 $_xvecs2($cname2)
+            set scale [blt::vector expr {0.5*(abs(max($xv)-min($xv))
+                + abs(max($xv2)-min($xv2)))}]
+            foreach num [$xv range 0 end] num2 [$xv2 range 0 end] {
+                set result [cmpdbl $num $num2 $scale]
+                if {$result != 0} {
+                    return $result
+                }
+            }
+
+            # scan through all values and see if they match
+            set yv $_yvecs($cname)
+            set yv2 $_yvecs2($cname2)
+            set scale [blt::vector expr {0.5*(abs(max($yv)-min($yv))
+                + abs(max($yv2)-min($yv2)))}]
+            foreach num [$yv range 0 end] num2 [$yv2 range 0 end] {
+                set result [cmpdbl $num $num2 $scale]
+                if {$result != 0} {
+                    return $result
+                }
+            }
+        }
+        return 0  ;# same!
+    }
+
+    # ------------------------------------------------------------------
+    # USAGE: components ?<pattern>?
+    #
+    # Returns a list of names for the various components of this
+    # curve.  If the optional glob-style <pattern> is specified, then
+    # it returns only the component names matching the pattern.
+    # ------------------------------------------------------------------
+    method components {{pattern *}} {
+        set rlist ""
+        foreach cname [array names _xvecs] {
+            if {[string match $pattern $cname]} {
+                lappend rlist $cname
+            }
+        }
+        return $rlist
+    }
+
+    # ------------------------------------------------------------------
+    # USAGE: mesh <name>
+    #
+    # Returns the xvec for the specified curve component <name>.
+    # ------------------------------------------------------------------
+    method mesh {cname} {
+        if {[info exists _xvecs($cname)]} {
+            return $_xvecs($cname)  ;# return xv
+        }
+        error "bad option \"$cname\": should be [join [lsort [array names _xvecs]] {, }]"
+    }
+
+    # ------------------------------------------------------------------
+    # USAGE: values <name>
+    #
+    # Returns the yvec for the specified curve component <name>.
+    # ------------------------------------------------------------------
+    method values {cname} {
+        if {[info exists _yvecs($cname)]} {
+            return $_yvecs($cname)  ;# return yv
+        }
+        error "bad option \"$cname\": should be [join [lsort [array names _yvecs]] {, }]"
+    }
+
+    # ------------------------------------------------------------------
+    # USAGE: xErrorValues <cname>
+    #
+    # Returns the x-axis error values for the specified curve
+    # component <name>.
+    # ------------------------------------------------------------------
+    method xErrorValues {cname} {
+        # Having this prevents errors, but this feature isn't really
+        # implemented.  To be implemented, we must be able to import
+        # and export error values in strings and xml objects.  We must
+        # also be able to diff curves with error values, and also
+        # visualize differences in error values.
+    }
+
+    # ------------------------------------------------------------------
+    # USAGE: yErrorValues <cname>
+    #
+    # Returns the y-axis error values for the specified curve
+    # component <name>.
+    # ------------------------------------------------------------------
+    method yErrorValues {cname} {
+        # Having this prevents errors, but this feature isn't really
+        # implemented.  To be implemented, we must be able to import
+        # and export error values in strings and xml objects.  We must
+        # also be able to diff curves with error values, and also
+        # visualize differences in error values.
+    }
+
+    # ------------------------------------------------------------------
+    # USAGE: limits x|xlin|xlog|y|ylin|ylog
+    #
+    # Returns the {min max} limits for the specified axis.
+    # ------------------------------------------------------------------
+    method limits {which} {
+        set min ""
+        set max ""
+        switch -- $which {
+            x - xlin { set pos 0; set log 0; set axis xaxis }
+            xlog { set pos 0; set log 1; set axis xaxis }
+            y - ylin - v - vlin { set pos 1; set log 0; set axis yaxis }
+            ylog - vlog { set pos 1; set log 1; set axis yaxis }
+            default {
+                error "bad option \"$which\": should be x, xlin, xlog, y, ylin, ylog, v, vlin, vlog"
+            }
+        }
+
+        blt::vector create tmp zero
+        foreach comp [array names _xvecs] {
+            set arrvar [lindex {_xvecs _yvecs} $pos]
+            set vname [set ${arrvar}($comp)]
+            $vname variable vec
+
+            if {$log} {
+                # on a log scale, use abs value and ignore 0's
+                $vname dup tmp
+                $vname dup zero
+                zero expr {tmp == 0}            ;# find the 0's
+                tmp expr {abs(tmp)}             ;# get the abs value
+                tmp expr {tmp + zero*max(tmp)}  ;# replace 0's with abs max
+                set vmin [blt::vector expr min(tmp)]
+                set vmax [blt::vector expr max(tmp)]
+            } else {
+                set vmin $vec(min)
+                set vmax $vec(max)
+            }
+
+            if {"" == $min} {
+                set min $vmin
+            } elseif {$vmin < $min} {
+                set min $vmin
+            }
+            if {"" == $max} {
+                set max $vmax
+            } elseif {$vmax > $max} {
+                set max $vmax
+            }
+        }
+        blt::vector destroy tmp zero
+
+        set val [attr get min]
+        if {$val ne "" && $min ne ""} {
+            if {$val > $min} {
+                # tool specified this min -- don't go any lower
+                set min $val
+            }
+        }
+
+        set val [attr get max]
+        if {$val ne "" && $max ne ""} {
+            if {$val < $max} {
+                # tool specified this max -- don't go any higher
+                set max $val
+            }
+        }
+
+        return [list $min $max]
+    }
+
+    # ------------------------------------------------------------------
+    # USAGE: xmarkers
+    #
+    # Returns the list of settings for each marker on the x-axis.
+    # If no markers have been specified the empty string is returned.
+    # ------------------------------------------------------------------
+    method xmarkers {} {
+        return $_xmarkers
+    }
+
+    # ------------------------------------------------------------------
+    # USAGE: ymarkers
+    #
+    # Returns the list of settings for each marker on the y-axis.
+    # If no markers have been specified the empty string is returned.
+    # ------------------------------------------------------------------
+    method ymarkers {} {
+        return $_ymarkers
+    }
+
+    # ------------------------------------------------------------------
+    # USAGE: hints ?keyword?
+    #
+    # This has been replaced by the "attrs" method in the ObjVal
+    # base class, but is provided here for backward-compatibility
+    # with the XyResult viewer.
+    #
+    # With no args, it returns a list of keywords and corresponding
+    # values for all attributes in this object.  If a particular
+    # keyword is specified, then it returns the value for that
+    # attribute.  There are a few more "hints" defined here beyond
+    # the object attributes.
+    # ------------------------------------------------------------------
+    method hints {{keyword ""}} {
+        # first time through, build all of these hint values
+        if {![info exists _hints]} {
+            # start with all of the usual attributes
+            foreach key [attr get] {
+                set _hints($key) [attr get $key]
+            }
+
+            # tweak them a little to produce the values needed for XyResult
+            if {[info exists _hints(xlabel)] && "" != $_hints(xlabel)
+                  && [info exists _hints(xunits)] && "" != $_hints(xunits)} {
+                set _hints(xlabel) "$_hints(xlabel) ($_hints(xunits))"
+            }
+            if {[info exists _hints(ylabel)] && "" != $_hints(ylabel)
+                  && [info exists _hints(yunits)] && "" != $_hints(yunits)} {
+                set _hints(ylabel) "$_hints(ylabel) ($_hints(yunits))"
+            }
+
+            if {[info exists _hints(group)] && [info exists _hints(label)]} {
+                # pop-up help for each curve
+                set _hints(tooltip) $_hints(label)
+            }
+        }
+        if {$keyword != ""} {
+            if {[info exists _hints($keyword)]} {
+                return $_hints($keyword)
+            }
+            return ""
+        }
+        return [array get _hints]
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/curve/curveoutput.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/curve/curveoutput.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/curve/curveoutput.tcl	(revision 6168)
@@ -0,0 +1,54 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: CurveOutput - output viewer for curves (x/y plots)
+#
+#  This widget is able to visualize Rappture ObjVal objects of type
+#  CurveValue.  It produces X/Y plots showing the curve.  Use the "add"
+#  and "delete" methods to control the data objects shown on the plot.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+itcl::class Rappture::objects::CurveOutput {
+    inherit itk::Widget
+
+    constructor {args} { # defined below }
+
+    public method add {dataobj {settings ""}} {
+        return [$itk_component(xy) add $dataobj $settings]
+    }
+    public method get {} {
+        return [$itk_component(xy) get]
+    }
+    public method delete {args} {
+        return [eval $itk_component(xy) delete $args]
+    }
+    public method scale {args} {
+        return [eval $itk_component(xy) scale $args]
+    }
+    public method parameters {title args} {
+        return [eval $itk_component(xy) parameters [list $title] $args]
+    }
+    public method download {option args} {
+        return [eval $itk_component(xy) download $option $args]
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::objects::CurveOutput::constructor {args} {
+    itk_component add xy {
+        ::Rappture::XyResult $itk_interior.xy
+    } {
+        keep -background -foreground -cursor -font
+        keep -autocolors -gridcolor -activecolor -dimcolor
+    }
+    pack $itk_component(xy) -expand yes -fill both
+
+    eval itk_initialize $args
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/group/group.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/group/group.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/group/group.rp	(revision 6168)
@@ -0,0 +1,37 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: group
+#
+#  A group keeps values together.  Right now, it is only recognized
+#  on the input side, but it should be recognized on the output side
+#  in the future.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object group -extends base {
+    palettes "Inputs" "Grouping"
+    help http://rappture.org/wiki/rp_xml_ele_group
+    terminal no
+
+    check label {
+        # it's okay to have a blank label for invisible groups
+    }
+
+    check description {
+        set label [string trim $attr(label)]
+        set desc [string trim $attr(description)]
+        if {$label ne ""} {
+            # label is set, so must have a good description
+            if {$desc eq ""} {
+                return [list warning "You should include a description of what this group represents."]
+            } elseif {$desc eq $label} {
+                return [list warning "The description should be different from the label and give additional information about this group."]
+            }
+        }
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/histogram/histogram.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/histogram/histogram.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/histogram/histogram.rp	(revision 6168)
@@ -0,0 +1,55 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: histogram
+#
+#  A histogram is like a curve but in bar chart form.  Right now, it
+#  is only used as an output, but it could become an input in the
+#  future if we create an input editor for it.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object histogram -extends base {
+    palettes "Outputs"
+
+    help http://rappture.org/wiki/rp_xml_ele_histogram
+
+    attr xlabel -title "X-axis Label" -type string -path xaxis.label -tooltip "Label shown on the x-axis for the plot."
+
+    attr xdesc  -title "X-axis Description" -type string -path xaxis.description -tooltip "Description of the x-axis that appears in a tooltip window when you mouse over the x-axis.  This should not merely repeat what the label says, but explain what it means."
+
+    attr xunits -title "X-axis Units" -type units -path xaxis.units -tooltip "Units for the physical quantity that the x-axis represents."
+
+    attr ylabel -title "Y-axis Label" -type string -path yaxis.label -tooltip "Label shown on the y-axis for the plot."
+
+    attr ydesc  -title "Y-axis Description" -type string -path yaxis.description -tooltip "Description of the y-axis that appears in a tooltip window when you mouse over the y-axis.  This should not merely repeat what the label says, but explain what it means."
+
+    attr yunits -title "Y-axis Units" -type units -path yaxis.units -tooltip "Units for the physical quantity that the y-axis represents."
+
+
+    check xlabel {
+        if {[string length [string trim $attr(xlabel)]] == 0} {
+            return [list warning "Should set a label that describes the x-axis of this plot."]
+        }
+    }
+    check xdesc {
+        if {[string length [string trim $attr(xdesc)]] == 0} {
+            return [list warning "Should include a description of what the x-axis represents, physical meaning, expected range, etc."]
+        }
+    }
+
+    check ylabel {
+        if {[string length [string trim $attr(ylabel)]] == 0} {
+            return [list warning "Should set a label that describes the y-axis of this plot."]
+        }
+    }
+    check ydesc {
+        if {[string length [string trim $attr(ydesc)]] == 0} {
+            return [list warning "Should include a description of what the y-axis represents, physical meaning, expected range, etc."]
+        }
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/image/image.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/image/image.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/image/image.rp	(revision 6168)
@@ -0,0 +1,92 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: image
+#
+#  An image is a picture of some sort.  It is usually used as an
+#  output, but could also be an input to an image manipulation program.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object image -extends base {
+    palettes "Inputs" "Outputs"
+
+    help http://rappture.org/wiki/rp_xml_ele_image
+
+    attr default -title "Default Value" -type image -path default -tooltip "Sets the value that this input has when the program first starts.  This value is used by default unless the user explicitly changes it."
+
+    attr resize -title "Resize" -type string:validate=imresize -path resize -only input -tooltip "Limits the size of the thumbnail shown for any image uploaded into this input.  Valid options are:  auto, none, width=XX, height=XX"
+
+    attr convert -title "Convert" -type string:validate=imformat -path convert -only input -tooltip "Causes the image to be converted to a particular image format before being passed along to your simulation program.  Valid options are:  bmp, gif, ico, jpeg, pcx, png, pgm, ppm, ps, pdf, sgi, sun, tga, tiff, xbm, xpm"
+
+
+    storage {
+        private variable _img ""  ;# image handle
+    }
+
+    clear {
+        if {$_img ne ""} {
+            image delete $_img
+            set _img ""
+        }
+    }
+
+    import xml {xmlobj path} {
+        attr import $xmlobj $path
+        import_string [$xmlobj get $path.current]
+    }
+
+    export xml {xmlobj path} {
+        export_string bytes
+        $xmlobj put $path $bytes
+    }
+
+    import string {data} {
+        if {![regexp {^[a-zA-Z0-9+/=]+(\n[a-zA-Z0-9+/=]+)*$} $data]
+              || [catch {Rappture::encoding::decode -as b64 $data} bytes]} {
+            # oops! not base64 -- use data directly
+            set bytes $data
+        }
+        if {[string length $bytes] > 0} {
+            set _img [image create photo -data $bytes]
+        }
+    }
+
+    export string {var} {
+        upvar $var bytes
+        switch -- [attr get convert] {
+            bmp - gif - ico - jpeg - pcx - png - ppm -
+            ps - pdf - sgi - sun - tga - tiff - xbm -
+            xpm { set fmt [attr get convert] }
+            pgm { set fmt "ppm -grayscale" }
+            jpg { set fmt "jpeg" }
+            default { set fmt "png" }
+        }
+        set bytes [eval $_img data -format $fmt]
+
+        # image data gets returned in b64 format for binary types
+        # convert back to binary for those types
+        switch -- [attr get convert] {
+            bmp - gif - ico - jpeg - pcx - png - ppm -
+            ps - pdf - sgi - sun - tga - tiff {
+                set bytes [Rappture::encoding::decode -as b64 $bytes]
+            }
+        }
+    }
+
+    compare {
+        set bytes1 [$_img data -format png]
+        set bytes2 [$_img2 data -format png]
+        if {$bytes1 eq $bytes2} {
+            return 0
+        } elseif {[string length $bytes1] < [string length $bytes2]} {
+            return -1
+        } else {
+            return 1
+        }
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/integer/integer.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/integer/integer.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/integer/integer.rp	(revision 6168)
@@ -0,0 +1,80 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: integer
+#
+#  A integer is an integral value.  It is usually used as an input,
+#  but it can also be an output from a simulation.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object integer -extends base {
+    palettes "Inputs" "Outputs"
+
+    help http://rappture.org/wiki/rp_xml_ele_integer
+
+    attr default -title "Default Value" -type string:validate=int -path default -only input -tooltip "Sets the value that this input has when the program first starts.  This value is used by default unless the user explicitly changes it."
+
+    attr min -title "Minimum Value" -type string:validate=int -path min -only input -tooltip "Sets the minimum value for this integer.  The value can be equal to the minimum, but no lower."
+
+    attr max -title "Maximum Value" -type string:validate=int -path max -only input -tooltip "Sets the maximum value for this integer.  The value can be equal to the maximum, but no higher."
+
+
+    check default {
+        if {[string length [string trim $attr(default)]] == 0} {
+            return [list error "Must have a default value for this integer."]
+        }
+        if {"" != $attr(min) && $attr(default) < $attr(min)} {
+            return [list error "Default value is less than the minimum that you've specified for this value."]
+        }
+        if {"" != $attr(max) && $attr(default) > $attr(max)} {
+            return [list error "Default value is greater than the maximum that you've specified for this value."]
+        }
+    }
+
+    check min {
+        if {"" != $attr(min) && "" != $attr(max) && $attr(min) >= $attr(max)} {
+            return [list error "Minimum value should be less than the maximum.  If you don't want to see a min/max range, you can clear out either or both values."]
+        }
+    }
+
+    storage {
+        private variable _val 0     ;# integer value
+    }
+
+    import xml {xmlobj path} {
+        attr import $xmlobj $path
+        import_string [$xmlobj get $path.current]
+    }
+
+    export xml {xmlobj path} {
+        $xmlobj put $path $_val
+    }
+
+    import string {val} {
+        if {[string is integer -strict $val]} {
+            set _val $val
+        } else {
+            error "don't recognize value"
+        }
+    }
+
+    export string {var} {
+        upvar $var v
+        set v $_val
+    }
+
+    compare {
+        if {$_val < $_val2} {
+            return -1
+        } elseif {$_val > $_val2} {
+            return 1
+        } else {
+            return 0
+        }
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/note/note.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/note/note.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/note/note.rp	(revision 6168)
@@ -0,0 +1,31 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: note
+#
+#  A note is not an input or an output, but a documentation element
+#  that can be embedded within the tool--right now, only on the input
+#  side.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object note {
+    palettes "Inputs" "Documentation"
+
+    help http://rappture.org/wiki/rp_xml_ele_note
+
+    attr contents -title "HTML File" -type file -path contents -tooltip "Name of an HTML file loaded into the note area as documentation.  The file may contain embedded images and links, as long as those files reside in the same directory as the HTML file or have explicit http:// paths."
+
+
+    check contents {
+        set fname [string trim $attr(contents)]
+        if {[string length $fname] == 0
+              || [string equal $fname "select a file"]} {
+            return [list warning "Should set an HTML file with the contents of the note, or else delete the element."]
+        }
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/number/number.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/number/number.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/number/number.rp	(revision 6168)
@@ -0,0 +1,161 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: number
+#
+#  A number is a real value with units of measure.  It is usually
+#  used as an input, but it can also be an output from a simulation.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object number -extends base {
+    palettes "Inputs" "Outputs"
+
+    help http://rappture.org/wiki/rp_xml_ele_number
+
+    attr default -title "Default Value" -type string:validate=number -path default -only input -tooltip "Sets the value that this input has when the program first starts.  This value is used by default unless the user explicitly changes it."
+
+    attr units -title "Units of Measurement" -type units -path units -tooltip "Units for the physical quantity that this number represents."
+
+    attr min -title "Minimum Value" -type string:validate=number -path min -only input -tooltip "Sets the minimum value for this number.  The value can be equal to the minimum, but no lower."
+
+    attr max -title "Maximum Value" -type string:validate=number -path max -only input -tooltip "Sets the maximum value for this number.  The value can be equal to the maximum, but no higher."
+
+    attr icon -title "Icon" -type image:maxsize=20,rescale=yes -path about.icon -only input -tooltip "Sets an icon shown next to the number, which is normally used to indicate the quantity that the number represents.  If the icon is transparent, any color set for the number will show through."
+
+    attr color -title "Color" -type color -path color -only input -tooltip "Sets the color shown next to the number to indicate its strength.  If the number is near the minimum, the color will be white; as it nears the maximum, it will be the color selected here."
+
+
+    check default {
+        if {[string length [string trim $attr(default)]] == 0} {
+            return [list error "Must have a default value for this number."]
+        }
+        if {"" != $attr(units)} {
+            set base [Rappture::Units::System::for $attr(units)]
+            if {[validate_number_parse $attr(default) num units]
+               && "" != $units
+               && ![string equal [Rappture::Units::System::for $units] $base]} {
+                return [list error "Units for default value don't match the expected units for this value"]
+            }
+
+            set dval [Rappture::Units::convert $attr(default) -context $attr(units) -to $attr(units) -units off]
+
+            if {[validate_number_parse $attr(min) num units]
+                 && [catch {Rappture::Units::convert $attr(min) -context $attr(units) -to $attr(units) -units off} min] == 0
+                 && $dval < $min} {
+                return [list error "Default value is less than the minimum that you've specified for this value."]
+            }
+
+            if {[validate_number_parse $attr(max) num units]
+                 && [catch {Rappture::Units::convert $attr(max) -context $attr(units) -to $attr(units) -units off} max] == 0
+                 && $dval > $max} {
+                return [list error "Default value is greater than the maximum that you've specified for this value."]
+            }
+        }
+    }
+
+    check min {
+        if {"" != $attr(units)} {
+            set base [Rappture::Units::System::for $attr(units)]
+            if {[validate_number_parse $attr(min) num units]
+               && "" != $units
+               && ![string equal [Rappture::Units::System::for $units] $base]} {
+                return [list error "Units for minimum value don't match the expected units for this value"]
+            }
+        }
+        if {[catch {Rappture::Units::convert $attr(min) -context $attr(units) -to $attr(units) -units off} min] == 0
+              && [catch {Rappture::Units::convert $attr(max) -context $attr(units) -to $attr(units) -units off} max] == 0
+              && $min >= $max} {
+            return [list error "Minimum value should be less than the maximum.  If you don't want to see a min/max range, you can clear out either or both values."]
+        }
+    }
+
+    check max {
+        if {"" != $attr(units)} {
+            set base [Rappture::Units::System::for $attr(units)]
+            if {[validate_number_parse $attr(max) num units]
+               && "" != $units
+               && ![string equal [Rappture::Units::System::for $units] $base]} {
+                return [list error "Units for maximum value don't match the expected units for this value"]
+            }
+        }
+    }
+
+    check color {
+        if {$attr(color) ne ""} {
+            if {$attr(min) eq "" || $attr(max) eq ""} {
+                return [list warning "The color for this number won't show up unless both minimum and maximum values are set.  The color indicates the current value in the range between the min/max limits."]
+            }
+        }
+    }
+
+    storage {
+        private variable _num 0.0   ;# real number value
+        private variable _units ""  ;# physical units
+    }
+
+    import xml {xmlobj path} {
+        attr import $xmlobj $path
+        import_string [$xmlobj get $path.current] [attr get units]
+    }
+
+    export xml {xmlobj path} {
+        $xmlobj put $path "${_num}${_units}"
+    }
+
+    import string {val {defunits ""}} {
+        if {[regexp {^([-+]?(?:[0-9]+\.|\.)?[0-9]+(?:[eE][-+]?[0-9]+)?)( *(?:[a-zA-Z]+[0-9]*)+(?:\/(?:[a-zA-Z]+[0-9]*)+)*)*$} $val match num units]} {
+            set sys [Rappture::Units::System::for $units]
+            set base [Rappture::Units::System::for $defunits]
+            if {$sys eq "" && $base ne ""} {
+                error "don't recognize value"
+            }
+            if {$sys ne $base} {
+                error "bad units \"$sys\": should be $base"
+            }
+            set _num $num
+            set _units $units
+        } elseif {[string is double -strict $val]} {
+            set _num $val
+            set _units $defunits
+        } else {
+            error "don't recognize value"
+        }
+    }
+
+    export string {var} {
+        upvar $var val
+        set val "${_num}${_units}"
+    }
+
+    compare {
+        set sys1 [Rappture::Units::System::for $_units]
+        set sys2 [Rappture::Units::System::for $_units2]
+        if {$sys1 ne $sys2} {
+            # different units systems -- order by physical quantities
+            return [string compare $sys1 $sys2]
+        }
+
+        # normalize the value of num1
+        if {$_units ne ""} {
+            set num1 [Rappture::Units::convert $_num \
+                -context $_units -to $_units -units off]
+        } else {
+            set num1 $_num
+        }
+
+        # normalize the value of num2
+        if {$_units2 ne ""} {
+            set num2 [Rappture::Units::convert $_num2 \
+                -context $_units2 -to $_units -units off]
+        } else {
+            set num2 $_num2
+        }
+
+        return [cmpdbl $num1 $num2]
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/periodicelement/periodicelement.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/periodicelement/periodicelement.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/periodicelement/periodicelement.rp	(revision 6168)
@@ -0,0 +1,79 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: periodicelement
+#
+#  A set of mutually-exclusive choices, as in Model A or Model B.
+#  Usually used as an input to a simulation.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object periodicelement -extends base {
+    palettes "Inputs"
+
+    help http://rappture.org/wiki/rp_xml_ele_periodicelement
+
+    attr default -title "Default Value" -type atomelem -path default -only input -tooltip "Sets the value that this input has when the program first starts.  This value is used by default unless the user explicitly changes it."
+
+    attr returnvalue -title "Return value" -type atomprops -path returnvalue -only input -tooltip "Specifies how the selected element is reported to your program: name, symbol, number, or weight."
+
+    attr active -title "Allowed Elements" \
+	-type atomactive -path active -only input -tooltip "Specifies the set of elements that can be selected.\n\nCan allow or disallow one or more groups of elements on the periodic table: actinoid, alkali-metal, alkaline-earth-metal, halogen, lanthanoid, metalloid, noble-gas, other-non-metal, post-transition-metal, transition-metal, or unknown."
+
+    check default {
+        set defval [string trim $attr(default)]
+        if {[string length $defval] == 0} {
+            return [list error "Must have a default value for this periodicelement."]
+        }
+
+        # make sure that the given value is a valid element type
+        if {[Rappture::PeriodicTable::FindElement $defval] eq ""} {
+            return [list error "Bad value \"$defval\": must be a known element in the periodic table."]
+        }
+
+        # make sure that the given value isn't in conflict with allowed values
+        if {$attr(active) ne "" && [regexp {^(active|inactive): (.+)} $attr(active) match polarity vlist]} {
+            set found [eval Rappture::PeriodicTable::ElementIsType $attr(default) [split $vlist ,]]
+            if { (!$found && $polarity eq "active")
+                  || ($found && $polarity eq "inactive") } {
+                return [list error "Default value \"$attr(default)\" is not one of the allowed values"]
+            }
+        }
+    }
+
+    check returnvalue {
+        if {[string length [string trim $attr(returnvalue)]] == 0} {
+            return [list error "Must choose at least one return value to report the selected element to your program."]
+        }
+    }
+
+    storage {
+        private variable _val   ;# current periodicelement
+    }
+
+    import xml {xmlobj path} {
+        attr import $xmlobj $path
+        import_string [$xmlobj get $path.current]
+    }
+
+    export xml {xmlobj path} {
+        $xmlobj put $path $_val
+    }
+
+    import string {val} {
+        set _val $val
+    }
+
+    export string {var} {
+        upvar $var v
+        set v $_val
+    }
+
+    compare {
+        return [string compare $_val $_val2]
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/phase/phase.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/phase/phase.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/phase/phase.rp	(revision 6168)
@@ -0,0 +1,19 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: phase
+#
+#  A phase is like a group on steroids--used on the input side to
+#  group controls together.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object phase -extends base {
+    palettes "Inputs" "Grouping"
+    help http://rappture.org/wiki/rp_xml_ele_phase
+    terminal no
+}
Index: /tags/1.6.0/lang/tcl/scripts/objects/string/string.rp
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/objects/string/string.rp	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/objects/string/string.rp	(revision 6168)
@@ -0,0 +1,52 @@
+# ----------------------------------------------------------------------
+#  RAPPTURE OBJECT: string
+#
+#  A string is ASCII or binary data.  It can be used as either an
+#  input or an output.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+object string -extends base {
+    palettes "Inputs" "Outputs"
+
+    help http://rappture.org/wiki/rp_xml_ele_string
+
+    attr default -title "Default Value" -type string -path default -only input -tooltip "Sets the value that this input has when the program first starts.  This value is used by default unless the user explicitly changes it."
+
+    attr size -title "Size" -type string:validate=size -path size -only input -tooltip "Sets the desired size for the string.  Strings are normally 1 line of text, but if the size is set to some WxH, then the entry area will be at least W chars wide and H lines tall.  For example, 40x5 says that the string should be 40 chars wide and 5 lines tall."
+
+    attr hints -title "Hint String" -type string -path about.hints -only input -tooltip "Sets a line of text displayed beneath the entry area for the string.  This is used to give a hint to the user about what should be entered in the string area."
+
+
+    storage {
+        private variable _val   ;# string value
+    }
+
+    import xml {xmlobj path} {
+        attr import $xmlobj $path
+        import_string [$xmlobj get $path.current]
+    }
+
+    export xml {xmlobj path} {
+        $xmlobj put $path $_val
+    }
+
+    import string {val} {
+        set _val $val
+    }
+
+    export string {var} {
+        upvar $var v
+        set v $_val
+    }
+
+    compare {
+        return [string compare $_val $_val2]
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/resources.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/resources.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/resources.tcl	(revision 6168)
@@ -0,0 +1,101 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*- 
+# ----------------------------------------------------------------------
+#  COMPONENT: resources
+#
+#  This file contains routines to parse settings from the "resources"
+#  file specified by the middleware.  This file is located via an
+#  environment variable as $SESSIONDIR/resources.  If this file
+#  exists, it is used to load settings that affect the rest of the
+#  application.  It looks something like this:
+#
+#    application_name "My Tool"
+#    results_directory /tmp
+#    filexfer_port 6593
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+namespace eval Rappture { # forward declaration }
+namespace eval Rappture::resources {
+    #
+    # Set up a safe interpreter for loading filexfer options...
+    #
+    variable optionParser [interp create -safe]
+    foreach cmd [$optionParser eval {info commands}] {
+        $optionParser hide $cmd
+    }
+    # this lets us ignore unrecognized commands in the file:
+    $optionParser invokehidden proc unknown {args} {}
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::resources::register ?<name> <proc> ...?
+#
+# Used by other files throughout the Rappture GUI to register their
+# own commands for the resources parser.  Creates a command <name>
+# in the resources interpreter, and registers the <proc> to handle
+# that command.
+# ----------------------------------------------------------------------
+proc Rappture::resources::register {args} {
+    variable optionParser
+    foreach {name proc} $args {
+        $optionParser alias $name $proc
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Rappture::resources::load ?<errorCallback>?
+#
+# Called in the main program to load resources from the file
+# $SESSIONDIR/resources.  As a side effect of loading resources,
+# the data is stored in various variables throughout the package.
+#
+# Returns 1 if successful, and 0 otherwise.  Any errors are passed
+# along to the <errorCallback>.  If not specified, then the default
+# callback pops up a message box.
+# ----------------------------------------------------------------------
+proc Rappture::resources::load {{callback tk_messageBox}} {
+    global env
+    variable optionParser
+
+    #
+    # First, make sure that we've loaded all bits of code that
+    # might register commands with the resources interp.  These
+    # are all in procs named xxx_init_resources.
+    #
+    global auto_index
+    foreach name [array names auto_index *_init_resources] {
+        eval $name
+    }
+
+    #
+    # Look for a $SESSIONDIR variable and a file called
+    # $SESSIONDIR/resources.  If found, then load the settings
+    # from that file.
+    #
+    if {[info exists env(SESSIONDIR)]} {
+        set file $env(SESSIONDIR)/resources
+        if {![file exists $file]} {
+            return 0
+        }
+
+        if {[catch {
+            set fid [open $file r]
+            set info [read $fid]
+            close $fid
+            $optionParser eval $info
+        } result]} {
+            if {"" != $callback} {
+                after 1 [list $callback -title Error -icon error -message "Error in resources file:\n$result"]
+            }
+            return 0
+        }
+    }
+    return 1
+}
Index: /tags/1.6.0/lang/tcl/scripts/result.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/result.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/result.tcl	(revision 6168)
@@ -0,0 +1,69 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: result - use this to report results
+#
+#  This utility makes it easy to report results at the end of a
+#  run within a simulator.  It takes the XML object containing the
+#  inputs and outputs and writes it out to a "run" file with an
+#  automatically generated name.  Then, it writes out the name
+#  of the run file as "=RAPPTURE-RUN=>name" so the Rappture GUI
+#  knows the name of the result file.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+namespace eval Rappture { # forward declaration }
+
+# ----------------------------------------------------------------------
+# USAGE: result <libraryObj> ?<status>?
+#
+# This utility takes the <libraryObj> representing a run (driver file
+# plus outputs) and writes it out to the run file.  It should be called
+# within a simulator at the end of simulation, to communicate back
+# the results.
+#
+# If the optional <status> is specified, then it represents the exit
+# status code for the tool.  "0" means "ok" and anything non-zero means
+# "failed".
+# ----------------------------------------------------------------------
+proc Rappture::result {libobj {status 0}} {
+    global tcl_platform
+
+    $libobj put output.time [clock format [clock seconds]]
+    if {$status != 0} {
+        $libobj put output.status "failed"
+    } else {
+        $libobj put output.status "ok"
+    }
+
+    # I can't stand that there are two versions of this.  I spend more time
+    # tracking down problems that exist in the one version but not the other.
+    # For example, it matters if the tool is running TCL or some other
+    # language.
+
+    $libobj put tool.version.rappture.version $::Rappture::version
+    $libobj put tool.version.rappture.revision $::Rappture::build
+    $libobj put tool.version.rappture.modified "\$LastChangedDate$"
+    $libobj put tool.version.rappture.language "tcl"
+
+    if {[info exists tcl_platform(user)]} {
+        $libobj put output.user $tcl_platform(user)
+    }
+
+    # fake milliseconds by using clock clicks
+    # fake microseconds by using 000
+    # this will be fixed when tcl uses C bindings
+    set timestamp [format %d%03d%03d [clock seconds] [expr [clock clicks -milliseconds]%1000] 0]
+    set oname "run$timestamp.xml"
+    set fid [open $oname w]
+    puts $fid "<?xml version=\"1.0\"?>"
+    puts $fid [$libobj xml]
+    close $fid
+
+    if {$status == 0} {
+        puts "=RAPPTURE-RUN=>$oname"
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/task.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/task.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/task.tcl	(revision 6168)
@@ -0,0 +1,813 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: task - represents the executable part of a tool
+#
+#  This object is an executable version of a Rappture xml file.
+#  A tool is a task plus its graphical user interface.  Each task
+#  resides in an installation directory with other tool resources
+#  (libraries, examples, etc.).  Each task is defined by its inputs
+#  and outputs, and understands the context in which it executes
+#  (via exec, submit, mx, etc.).
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2014  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require BLT
+
+itcl::class Rappture::Task {
+    private method CheckCacheForRunFile { driverFile }
+    private method CollectUQResults {}
+    private method ExecuteSimulationCommand { cmd }
+    private method GetCommand {}
+    private method GetDriverFile {}
+    private method GetSignal { signal }
+    private method GetSimulationCommand { driverFile }
+    private method GetUQSimulationCommand { driverFile }
+    private method GetUQTemplateFile {}
+    private method IsCacheable {}
+    private method LogCachedSimulationUsage {}
+    private method LogSimulationUsage {}
+    private method SetCpuResourceLimit {}
+
+    public variable logger ""
+    public variable jobstats Rappture::Task::MiddlewareTime
+    public variable resultdir "@default"
+
+    constructor {xmlobj installdir args} { # defined below }
+    destructor { # defined below }
+
+    public method installdir {} { return $_installdir }
+
+    public method run {args}
+    public method get_uq {args}
+    public method abort {}
+    public method reset {}
+    public method xml {args}
+    public method save {xmlobj {name ""}}
+
+    protected method _output {data}
+    protected method Log {args}
+    protected method BuildSubmitCommand {cmd tfile params_file}
+    protected method GetParamsForUQ {}
+
+    private variable _xmlobj ""      ;# XML object with inputs/outputs
+    private variable _origxml ""     ;# copy of original XML (for reset)
+    private variable _installdir ""  ;# installation directory for this tool
+    private variable _outputcb ""    ;# callback for tool output
+    private common jobnum 0          ;# counter for unique job number
+    private variable _uq
+    
+    private variable _job
+    
+    # get global resources for this tool session
+    public proc resources {{option ""}}
+
+    public common _resources
+    public proc setAppName {name}   { set _resources(-appname) $name }
+    public proc setHubName {name}   { set _resources(-hubname) $name }
+    public proc setHubURL {name}    { set _resources(-huburl) $name }
+    public proc setSession {name}   { set _resources(-session) $name }
+    public proc setJobPrt {name}    { set _resources(-jobprotocol) $name }
+    public proc setResultDir {name} { set _resources(-resultdir) $name }
+    public proc setCacheHost {name} { set _resources(-cachehost) $name }
+
+    # default method for -jobstats control
+    public proc MiddlewareTime {args}
+}
+
+# must use this name -- plugs into Rappture::resources::load
+proc task_init_resources {} {
+    Rappture::resources::register \
+        application_name  Rappture::Task::setAppName \
+        application_id    Rappture::Task::setAppId \
+        hub_name          Rappture::Task::setHubName \
+        hub_url           Rappture::Task::setHubURL \
+        session_token     Rappture::Task::setSession \
+        job_protocol      Rappture::Task::setJobPrt \
+        results_directory Rappture::Task::setResultDir \
+        cache_host        Rappture::Task::setCacheHost
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::constructor {xmlobj installdir args} {
+    if {![Rappture::library isvalid $xmlobj]} {
+        error "bad value \"$xmlobj\": should be Rappture::Library"
+    }
+    set _xmlobj $xmlobj
+
+    # stash a copy of the original XML for later "reset" operations
+    set _origxml [Rappture::LibraryObj ::#auto "<?xml version=\"1.0\"?><run/>"]
+    $_origxml copy "" from $_xmlobj ""
+
+    if {![file exists $installdir]} {
+        error "directory \"$installdir\" doesn't exist"
+    }
+    set _installdir $installdir
+
+    eval configure $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::destructor {} {
+    itcl::delete object $_origxml
+}
+
+# ----------------------------------------------------------------------
+# USAGE: resources ?-option?
+#
+# Clients use this to query information about the tool.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::resources {{option ""}} {
+    if {$option == ""} {
+        return [array get _resources]
+    }
+    if {[info exists _resources($option)]} {
+        return $_resources($option)
+    }
+    return ""
+}
+
+itcl::body Rappture::Task::GetSignal {code} {
+    set signals {
+	HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV 
+	USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN 
+	TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS 
+	RTMIN RTMIN+1 RTMIN+2 RTMIN+3 RTMAX-3 RTMAX-2 RTMAX-1 RTMAX
+    }
+    set sigNum [expr $code - 128]
+    if { $sigNum > 0 && $sigNum < [llength $signals] } {
+        return [lindex $signals $sigNum]
+    }
+    return "unknown exit code \"$code\""
+}
+
+itcl::body Rappture::Task::get_uq {args} {
+    foreach {path val} $args {
+        if {$path == "-uq_type"} {
+            set _uq(type) $val
+        } elseif {$path == "-uq_args"} {
+            set _uq(args) $val
+        }
+    }
+    #set varlist [$_xmlobj uq_get_vars]
+    foreach {varlist num} [$_xmlobj uq_get_vars] break
+    return [Rappture::UQ ::#auto $varlist $num $_uq(type) $_uq(args)]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: run ?<path1> <value1> <path2> <value2> ...? ?-output <callbk>?
+#
+# This method causes the tool to run.  A "driver.xml" file is created
+# as the input for the run.  That file is fed to the executable
+# according to the <tool><command> string, and the job is executed.
+#
+# Any "<path> <value>" arguments are used to override the current
+# settings from the GUI.  This is useful, for example, when filling
+# in missing simulation results from the analyzer.
+#
+# If the -output argument is included, then the next arg is a
+# callback command for output messages.  Any output that comes in
+# while the tool is running is sent back to the caller, so the user
+# can see progress running the tool.
+#
+# Returns a list of the form {status result}, where status is an
+# integer status code (0=success) and result is the output from the
+# simulator.  Successful output is something like {0 run1293921.xml},
+# where 0=success and run1293921.xml is the name of the file containing
+# results.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::run {args} {
+    global env errorInfo
+
+    #
+    # Make sure that we save the proper application name.  Actually, the
+    # best place to get this information is straight from the "installtool"
+    # script, but just in case we have an older tool, we should insert the
+    # tool name from the resources config file.
+    #
+    if {[info exists _resources(-appname)] && $_resources(-appname) ne "" &&
+        [$_xmlobj get tool.name] eq ""} {
+        $_xmlobj put tool.name $_resources(-appname)
+    }
+
+    # if there are any args, use them to override parameters
+    set _outputcb ""
+    set _uq(type) ""
+    foreach {path val} $args {
+        if {$path == "-output"} {
+            set _outputcb $val
+        } elseif {$path == "-uq_type"} {
+            set _uq(type) $val
+        } elseif {$path == "-uq_args"} {
+            set _uq(args) $val
+        } else {
+            $_xmlobj put $path.current $val
+        }
+    }
+
+    # Initialize job array variables
+    array set _job { 
+        control ""
+        mesg    ""
+        runfile ""
+        stderr  ""
+        stdout  ""
+        success 0
+        xmlobj  ""
+    }
+
+    SetCpuResourceLimit 
+    set driverFile [GetDriverFile]
+    set cached 0
+    if { [IsCacheable] } {
+        set cached [CheckForCachedRunFile $driverFile] 
+    }
+    if { !$cached } {
+        if { $_uq(type) != "" } {
+            set _uq(tfile) [GetUQTemplateFile]
+        }
+        if { $_uq(type) == "" } {
+            set cmd [GetSimulationCommand $driverFile]
+        } else {
+            set cmd [GetUQSimulationCommand $driverFile]
+        }
+        if { $cmd == "" } {
+            puts stderr "cmd is empty"
+            append mesg "There is no command specified by\n\n"
+            append mesg "    <command>\n"
+            append mesg "    </command>\n\n"
+            append mesg "in the tool.xml file."
+            return [list 1 $mesg]
+        }
+        Rappture::rusage mark
+        if { ![ExecuteSimulationCommand $cmd] } {
+            return [list 1 $_job(mesg)]
+        }
+        if { $_uq(type) != "" } {
+            CollectUQResults
+        }
+        if { [resources -jobprotocol] != "submit" } {
+            LogSimulationUsage
+        }
+    } else {
+        LogCachedSimulationUsage
+    }
+    if { $_job(success) } {
+        file delete -force -- $driverFile
+        Log run finished
+        return [list 0 $_job(xmlobj)]
+    } else {
+        # See if the job was aborted.
+        if {[regexp {^KILLED} $_job(control)]} {
+            Log run aborted
+            return [list 1 "ABORT"]
+        }
+        Log run failed [list 0 $_job(mesg)]
+        return [list 1 $_job(mesg)]
+    }
+}
+
+# ----------------------------------------------------------------------
+#  Turn the command string from tool.xml into the proper syntax to use
+#  with a submit parameter sweep with a temlate file.  Proper quoting
+# of the template file is necessary to prevent submit from being too smart
+# and converting it to a full pathname.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::BuildSubmitCommand {cmd tfile params_file} {
+    set quote_next 0
+    set newcmd "submit --progress submit --runName=puq -l -i @:$tfile -d $params_file"
+    set cmds [split $cmd " "]
+    for {set i 0} {$i < [llength $cmds]} {incr i} {
+        set arg [lindex $cmds $i]
+        if {$quote_next == 1} {
+            set nc [string range $arg 0 0]
+            if {$nc != "\""} {
+                set arg "\"\\\"$arg\\\"\""
+            }
+        }
+        if {$arg == "--eval"} {
+            set quote_next 1
+        } else {
+            set quote_next 0
+        }
+        if {$arg == "@driver"} {
+            set arg "\"\\\"$tfile\\\"\""
+        }
+        append newcmd " " $arg
+    }
+    regsub -all @driver $newcmd $tfile newcmd
+    return $newcmd
+}
+
+# ----------------------------------------------------------------------
+# USAGE: abort
+#
+# Clients use this during a "run" to abort the current job.
+# Kills the job and forces the "run" method to return.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::abort {} {
+    Log run abort
+    set _job(control) "abort"
+}
+
+# ----------------------------------------------------------------------
+# USAGE: reset
+#
+# Resets all input values to their defaults.  Sometimes used just
+# before a run to reset to a clean state.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::reset {} {
+    $_xmlobj copy "" from $_origxml ""
+    foreach path [Rappture::entities -as path $_xmlobj input] {
+        if {[$_xmlobj element -as type $path.default] ne ""} {
+            set defval [$_xmlobj get $path.default]
+            $_xmlobj put $path.current $defval
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: xml <subcommand> ?<arg> <arg> ...?
+# USAGE: xml object
+#
+# Used by clients to manipulate the underlying XML data for this
+# tool.  The <subcommand> can be any operation supported by a
+# Rappture::library object.  Clients can also request the XML object
+# directly by using the "object" subcommand.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::xml {args} {
+    if {"object" == $args} {
+        return $_xmlobj
+    }
+    return [eval $_xmlobj $args]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: save <xmlobj> ?<filename>?
+#
+# Used by clients to save the contents of an <xmlobj> representing
+# a run out to the given file.  If <filename> is not specified, then
+# it uses the -resultsdir and other settings to do what Rappture
+# would normally do with the output.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::save {xmlobj {filename ""}} {
+    if {$filename eq ""} {
+
+        # If there's a results_directory defined in the resources file,
+        # then move the run.xml file there for storage.
+
+        set rdir ""
+        if {$resultdir eq "@default"} {
+            if {[info exists _resources(-resultdir)]} {
+                set rdir $_resources(-resultdir)
+            } else {
+                global rapptureInfo
+                set rdir $rapptureInfo(cwd)
+            }
+        } elseif {$resultdir ne ""} {
+            set rdir $resultdir
+        }
+
+        # use the runfile name generated by the last run
+        if {$_job(runfile) ne ""} {
+            set filename [file join $rdir $_job(runfile)]
+        } else {
+            set filename [file join $rdir run.xml]
+        }
+    }
+
+    # add any last-minute metadata
+    $xmlobj put output.time [clock format [clock seconds]]
+
+    $xmlobj put tool.version.rappture.version $::Rappture::version
+    $xmlobj put tool.version.rappture.revision $::Rappture::build
+    $xmlobj put output.filename $filename
+    $xmlobj put output.version $Rappture::version
+    
+    if {[info exists ::tcl_platform(user)]} {
+        $xmlobj put output.user $::tcl_platform(user)
+    }
+
+    # save the output
+    set rdir [file dirname $filename]
+    file mkdir $rdir
+
+    set fid [open $filename w]
+    puts $fid "<?xml version=\"1.0\"?>"
+    puts $fid [$xmlobj xml]
+    close $fid
+
+    Log output saved in $filename
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _output <data>
+#
+# Used internally to send each bit of output <data> coming from the
+# tool onto the caller, so the user can see progress.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::_output {data} {
+    if {[string length $_outputcb] > 0} {
+        uplevel #0 $_outputcb [list $data]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: Log <cmd> <arg> <arg> ...
+#
+# Used internally to log interesting events during the run.  If the
+# -logger option is set (to Rappture::Logger::log, or something like
+# that), then the arguments to this method are passed along to the
+# logger and written out to a log file.  Logging is off by default,
+# so this method does nothing unless -logger is set.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::Log {args} {
+    if {[string length $logger] > 0} {
+        uplevel #0 $logger [list $args]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: MiddlewareTime <key> <value> ...
+#
+# Used as the default method for reporting job status information.
+# Implements the old HUBzero method of reporting job status info to
+# stderr, which can then be picked up by the tool session container.
+# Most tools use the "submit" command, which talks directly to a
+# database to log job information, so this isn't really needed.  But
+# it doesn't hurt to have this and it can be useful in some cases.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Task::MiddlewareTime {args} {
+    set line "MiddlewareTime:"
+    foreach {key val} $args {
+        append line " $key=$val"
+    }
+    puts stderr $line
+}
+
+itcl::body Rappture::Task::IsCacheable {} {
+    if { ![info exists _resources(-cachehost)] ||
+         $_resources(-cachehost) == "" } {
+        return 0
+    }
+    set state [$_xmlobj get "tool.cached"]
+    if { $state == "" } {
+        return 0
+    }
+    if { ![string is boolean $state] } {
+        return 0
+    }
+    return $state
+}
+
+#
+# Send the list of parameters to a python program so it can call PUQ
+# and get a CSV file containing the parameter values to use for the runs.
+itcl::body Rappture::Task::GetParamsForUQ {} {
+    set pid [pid]
+    # puts "puq get_params $pid $_uq(varlist) $_uq(type) $_uq(args)"
+    if {[catch {
+        exec puq get_params $pid $_uq(varlist) $_uq(type) $_uq(args)
+    } errs] != 0 } {
+        set fp [open "uq_debug.err" r]
+        set contents [read $fp]
+        close $fp
+        puts stderr "get_params.py failed: $contents"
+        error "get_params.py: $errs\n$contents"
+    }
+    return "params[pid].csv"
+}
+
+itcl::body Rappture::Task::SetCpuResourceLimit {} {
+    # Set limits for cpu time
+    set limit [$_xmlobj get tool.limits.cputime]
+    if { $limit == "unlimited" } {
+        set limit 43200;                # 12 hours
+    } else {
+        if { [scan $limit "%d" dum] != 1 } {
+            set limit 14400;            # 4 hours by default
+        } elseif { $limit > 43200 } {
+            set limit 43200;            # limit to 12 hrs.
+        } elseif { $limit < 10 } {
+            set limit 10;               # lower bound is 10 seconds.
+        }
+    }
+    Rappture::rlimit set cputime $limit
+}
+
+# Write out the driver.xml file for the tool
+itcl::body Rappture::Task::GetDriverFile {} {
+    global rapptureInfo
+    set fileName [file join $rapptureInfo(cwd) "driver[pid].xml"]
+    if { [catch {
+        set f [open $fileName w]
+        puts $f "<?xml version=\"1.0\"?>"
+        puts $f [$_xmlobj xml]
+        close $f
+    } errs] != 0 } {
+        error "can't create driver file \"$fileName\": $errs"
+    }
+    return $fileName
+}
+
+itcl::body Rappture::Task::GetCommand { } {
+    set cmd [$_xmlobj get tool.command]
+    regsub -all @tool $cmd $_installdir cmd
+    set cmd [string trimleft $cmd " "]
+    return $cmd
+}
+
+itcl::body Rappture::Task::GetSimulationCommand { driverFile } {
+    set cmd [GetCommand]
+    if { $cmd == "" } {
+        return ""
+    }
+    regsub -all @driver $cmd $driverFile cmd
+
+    switch -glob -- [resources -jobprotocol] {
+        "submit*" {
+            # if job_protocol is "submit", then use use submit command
+            set cmd "submit --local $cmd"
+        }
+        "mx" {
+            # metachory submission
+            set cmd "mx $cmd"
+        }
+        "exec" {
+            # default -- nothing special
+        }
+    }
+    return $cmd
+}
+
+itcl::body Rappture::Task::GetUQSimulationCommand { driverFile } {
+    set cmd [GetCommand]
+    if { $cmd == "" } {
+        return ""
+    }
+    set paramsFile [GetParamsForUQ]
+    set cmd [BuildSubmitCommand $cmd $_uq(tfile) $paramsFile]
+    file delete -force puq
+    return $cmd
+}
+
+itcl::body Rappture::Task::GetUQTemplateFile {} {
+    global rapptureInfo
+    # Copy xml into a new file
+    set templateFile [file join $rapptureInfo(cwd) "template[pid].xml"]
+    set fid [open $templateFile w]
+    puts $fid "<?xml version=\"1.0\"?>"
+    puts $fid [$_xmlobj xml]
+    close $fid
+
+    # Return a list of the UQ variables and their PDFs.
+    # Also turns $uq(tfile) into a template file.
+    set _uq(varlist) [lindex [$_xmlobj uq_get_vars $templateFile] 0]
+    set _uq(tfile) $templateFile
+    return $templateFile
+}
+
+itcl::body Rappture::Task::ExecuteSimulationCommand { cmd } {
+
+    set _job(runfile) ""
+    set _job(success) 0
+
+    # Step 1.  Write the command into the run file.
+    $_xmlobj put tool.execute $cmd
+
+    Log run started
+    Rappture::rusage mark
+
+    # Step 2.  Check if it is a special case "ECHO" command which always
+    #          succeeds.
+    if { [string compare -nocase -length 5 $cmd "ECHO "] == 0 } {
+        set _job(stdout) [string range $cmd 5 end]
+        set _job(success) 1
+        set _job(mesg) ""
+        return 1;                       # Success
+    } 
+
+    # Step 3. Execute the command, collecting its stdout and stderr.
+    catch {
+        eval blt::bgexec [list [itcl::scope _job(control)]] \
+            -keepnewline yes \
+            -killsignal  SIGTERM \
+            -onoutput    [list [itcl::code $this _output]] \
+            -output      [list [itcl::scope _job(stdout)]] \
+            -error       [list [itcl::scope _job(stderr)]] \
+            $cmd
+    } result
+
+    # Step 4. Check the token and the exit code.
+    set logmesg $result
+    foreach { token pid code mesg } $_job(control) break
+    if { $token == "EXITED" } {
+        if { $code != 0 } {
+            # This means that the program exited normally but returned a
+            # non-zero exitcode.  Consider this an invalid result from the
+            # program.  Append the stderr from the program to the message.
+            if {$code > 128} {
+                set logmesg "Program signaled: signal was [GetSignal $code]"
+            } else { 
+                set logmesg "Program finished: non-zero exit code is $code"
+            }
+            set _job(mesg) "$logmesg\n\n$_job(stderr)"
+            Log run failed [list $logmesg]
+            return 0;                   # Fail.
+        }
+        # Successful program termination with exit code of 0.
+    } elseif { $token == "abort" }  {
+        # The user pressed the abort button.
+        
+        set logmesg "Program terminated by user."
+        Log run failed [list $logmesg]
+        set _job(mesg) "$logmesg\n\n$_job(stdout)"
+        return 0;                       # Fail
+    } else {
+        # Abnormal termination
+        
+        set logmesg "Abnormal program termination:"
+        Log run failed [list $logmesg]
+        set _job(mesg) "$logmesg\n\n$_job(stdout)"
+        return 0;                       # Fail
+    }
+    
+    # Step 5. Look in stdout for the name of the run file.
+    set pattern {=RAPPTURE-RUN=>([^\n]+)}
+    if {![regexp $pattern $_job(stdout) match fileName]} {
+        set _job(mesg) "Can't find result file in output.\n"
+        append _job(mesg) "Did you call Rappture::result in your simulator?"
+        return 0;                       # Fail
+    }
+    set _job(runfile) $fileName
+    set _job(success) 1
+    set _job(mesg) $_job(stdout)
+    return 1;                           # Success
+}
+
+itcl::body Rappture::Task::LogSimulationUsage {} {
+    array set times [Rappture::rusage measure]
+
+    set toolId     [$_xmlobj get tool.id]
+    set toolVers   [$_xmlobj get tool.version.application.revision]
+    set simulation "simulation"
+    if { $toolId ne "" && $toolVers ne "" } {
+        set simulation "[pid]_${toolId}_r${toolVers}"
+    }
+    
+    # Need to save job info? then invoke the callback
+    if { [string length $jobstats] > 0} {
+        lappend args \
+            "job"      [incr jobnum] \
+            "event"    $simulation \
+            "start"    $times(start) \
+            "walltime" $times(walltime) \
+            "cputime"  $times(cputime) \
+            "status"   $_job(success)
+        uplevel #0 $jobstats $args 
+    }
+        
+    #
+    # Scan through stderr channel and look for statements that
+    # represent grid jobs that were executed.  The statements look
+    # like this:
+    #
+    # MiddlewareTime: job=1 event=simulation start=3.001094 ...
+    #
+    
+    set subjobs 0
+    set pattern {(^|\n)MiddlewareTime:( +[a-z]+=[^ \n]+)+(\n|$)}
+    while { [regexp -indices $pattern $_job(stderr) match] } {
+        foreach {p0 p1} $match break
+        if { [string index $_job(stderr) $p0] == "\n" } {
+            incr p0
+        }
+        array unset data
+        array set data {
+            job 1
+            event simulation
+            start 0
+            walltime 0
+            cputime 0
+            status 0
+        }
+        foreach arg [lrange [string range $_job(stderr) $p0 $p1] 1 end] {
+            foreach {key val} [split $arg =] break
+            set data($key) $val
+        }
+        set data(job)   [expr { $jobnum + $data(job) }]
+        set data(event) "subsimulation"
+        set data(start) [expr { $times(start) + $data(start) }]
+        
+        set details ""
+        foreach key {job event start walltime cputime status} {
+            # Add required keys in a particular order
+            lappend details $key $data($key)
+            unset data($key)
+        }
+        foreach key [array names data] {
+            # Add anything else that the client gave -- venue, etc.
+            lappend details $key $data($key)
+        }
+        
+        if {[string length $jobstats] > 0} {
+            uplevel #0 $jobstats $details
+        }
+        
+        incr subjobs
+        
+        # Done -- remove this statement
+        set _job(stderr) [string replace $_job(stderr) $p0 $p1]
+    }
+    incr jobnum $subjobs
+
+    # Add cputime info to run.xml file
+    if { [catch {
+        Rappture::library $_job(runfile)
+    } xmlobj] != 0 } {
+        error "Can't create rappture library: $xmlobj"
+    }
+    $xmlobj put output.walltime $times(walltime)
+    $xmlobj put output.cputime $times(cputime)
+    global env
+    if {[info exists env(SESSION)]} {
+        $xmlobj put output.session $env(SESSION)
+    }
+    set _job(xmlobj) $xmlobj
+}
+
+itcl::body Rappture::Task::LogCachedSimulationUsage {} {
+    if { [catch {
+        Rappture::library $_job(runfile)
+    } xmlobj] != 0 } {
+        error "Can't create rappture library: $xmlobj"
+    }
+    # Get the session from runfile 
+    set session [$xmlobj get "tool.session"]
+    catch exec {submit --cache $session} result
+    set _job(xmlobj) $xmlobj
+}
+
+
+itcl::body Rappture::Task::CheckCacheForRunFile { driverFile } {
+
+    # Read the driver file and collect its contents as the query.
+    set url http://$_resources(-cachehost)/cache/request
+    set f [open $driverFile "r"]
+    set query [read $f]
+    close $f
+
+    # Make the query
+    if { [catch {
+        http::geturl $url -query $query -timeout 60000 -binary yes
+    } token] != 0 } {
+        puts stderr "can't get query: token=$token"
+        return 0
+    }
+    # If the code isn't 200, we'll assume it's a cache miss.
+    if { [http::ncode $token] != 200} {
+        return 0
+    }
+    # Get contents of the run file. 
+    set contents [http::data $token]
+    if { $contents == "" } {
+        return 0
+    }
+    # Create a new run.xml file and write the results into it. 
+    set secs [clock seconds]
+    set millisecs [expr [clock clicks -milliseconds] % 1000]
+    set timestamp [format %d%03d%03d $secs $millisecs 0]
+
+    global rapptureInfo
+    set fileName [file join $rapptureInfo(cwd) "run${timestamp}.xml"]
+    set f [open $fileName "w"]
+    puts $f $contents
+    close $f
+    set _job(runfile) $fileName
+    return 1
+}
+
+# UQ. Collect data from all jobs and put it in one xml run file.
+itcl::body Rappture::Task::CollectUQResults {} {
+    file delete -force -- "run_uq.xml"
+    global rapptureInfo
+    set puqFileName [file join $rapptureInfo(cwd) puq_[pid].hdf5]
+    if {[catch {
+        exec puq analyze $puqFileName
+    } fileName] != 0 } {
+        set f [open "uq_debug.err" r]
+        set rdata [read $f]
+        close $f
+        puts "PUQ analysis failed: $fileName\n$rdata"
+        error "UQ analysis failed: $fileName\n$rdata"
+    } else {
+        set _job(runfile) $fileName
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/types/atomactive.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/types/atomactive.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/types/atomactive.tcl	(revision 6168)
@@ -0,0 +1,122 @@
+# ----------------------------------------------------------------------
+#  EDITOR: atom active/inactive settings
+#
+#  Used within the Instant Rappture builder to edit the active/inactve
+#  property used by a <periodicelement> object.  This determines what
+#  parts of the periodic table are allowed or forbidden.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+itcl::class AttrAtomactive {
+    constructor {win args} {
+        Rappture::getopts args params {
+            value -tooltip ""
+        }
+
+        Rappture::Combobox $win.how -width 17 -editable no
+        pack $win.how -side left
+        $win.how choices insert end \
+            "all" "All elements" \
+            "active" "Only these:" \
+            "inactive" "Everything except:"
+
+        bind $win.how <<Value>> [itcl::code $this _react]
+        $win.how value [$win.how label "all"]
+
+        Rappture::Combochecks $win.which
+        $win.which choices insert end \
+            "actinoid" "Actinoid" \
+            "alkali-metal" "Alkali metal" \
+            "alkaline-earth-metal" "Alkaline earth metal" \
+            "halogen" "Halogen" \
+            "lanthanoid" "Lanthanoid" \
+            "metalloid" "Metalloid" \
+            "noble-gas" "Noble gas" \
+            "other-non-metal" "Other non-metal" \
+            "post-transition-metal" "Post-transition metal" \
+            "transition-metal" "Transition metal" \
+            "unknown" "Unknown"
+
+        Rappture::Tooltip::for $win.how $params(-tooltip)
+        Rappture::Tooltip::for $win.which $params(-tooltip)
+
+        set _win $win
+    }
+
+    public method check {} {
+        # user can't enter anything bad
+        return ""
+    }
+
+    public method load {val} {
+        if {[regexp {^(active|inactive): (.+)} $val match which vlist]} {
+            $_win.how value [$_win.how label $which]
+            $_win.which value [split $vlist ,]
+        } elseif {$val eq ""} {
+            $_win.how value [$_win.how label "all"]
+        }
+        _react
+    }
+
+    public method save {var} {
+        upvar $var value
+        switch -- [$_win.how translate [$_win.how value]] {
+            active {
+                set value "active: [join [$_win.which value] ,]"
+            }
+            inactive {
+                set value "inactive: [join [$_win.which value] ,]"
+            }
+            default {
+                set value ""
+            }
+        }
+        return 1
+    }
+
+    public method edit {} {
+        focus -force $_win.how
+    }
+
+    public proc import {xmlobj path} {
+        # attribute is associated with .active, but we need to look
+        # at both .active and .inactive
+        set path [join [lrange [split $path .] 0 end-1] .]
+
+        set aval [string trim [$xmlobj get $path.active]]
+        set ival [string trim [$xmlobj get $path.inactive]]
+        if {$aval ne ""} {
+            set val "active: [join $aval ,]"
+        } elseif {$ival ne ""} {
+            set val "inactive: [join $ival ,]"
+        } else {
+            set val ""
+        }
+        return $val
+    }
+
+    public proc export {xmlobj path value} {
+        # attribute is associated with .active, but we need to look
+        # at both .active and .inactive
+        set path [join [lrange [split $path .] 0 end-1] .]
+
+        if {[regexp {^(active|inactive): (.+)} $value match which vlist]} {
+            $xmlobj put $path.$which [split $vlist ,]
+        }
+    }
+
+    private method _react {} {
+        if {[$_win.how translate [$_win.how value]] eq "all"} {
+            pack forget $_win.which
+        } else {
+            pack $_win.which -side left -expand yes -fill x
+        }
+    }
+
+    private variable _win ""       ;# containing frame
+}
Index: /tags/1.6.0/lang/tcl/scripts/types/atomelem.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/types/atomelem.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/types/atomelem.tcl	(revision 6168)
@@ -0,0 +1,57 @@
+# ----------------------------------------------------------------------
+#  EDITOR: atomic element type
+#
+#  Used within the Instant Rappture builder to edit the default value
+#  for a <periodicelement> object.  Uses the PeriodicTable itself to
+#  select the element.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+itcl::class AttrAtomelem {
+    constructor {win args} {
+        Rappture::getopts args params {
+            value -tooltip ""
+        }
+
+        Rappture::PeriodicElement $win.val -editable no
+        pack $win.val -side left -expand yes -fill x
+
+        Rappture::Tooltip::for $win.val $params(-tooltip)
+
+        set _win $win
+    }
+
+    public method check {} {
+        # any value here is okay -- check at the object level
+        return ""
+    }
+
+    public method load {val} {
+        $_win.val value $val
+    }
+
+    public method save {var} {
+        upvar $var value
+        set value [$_win.val value]
+        return 1
+    }
+
+    public method edit {} {
+        focus -force $_win.val
+    }
+
+    public proc import {xmlobj path} {
+        $xmlobj get $path
+    }
+
+    public proc export {xmlobj path value} {
+        $xmlobj put $path $value
+    }
+
+    private variable _win ""       ;# containing frame
+}
Index: /tags/1.6.0/lang/tcl/scripts/types/atomprops.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/types/atomprops.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/types/atomprops.tcl	(revision 6168)
@@ -0,0 +1,82 @@
+# ----------------------------------------------------------------------
+#  EDITOR: atom property attribute values
+#
+#  Used within the Instant Rappture builder to edit the values reported
+#  by a <periodicelement> object.  Includes things like atomic number,
+#  weight, etc.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+itcl::class AttrAtomprops {
+    constructor {win args} {
+        Rappture::getopts args params {
+            value -tooltip ""
+        }
+
+        Rappture::Combochecks $win.val
+        pack $win.val -side left -expand yes -fill x
+        $win.val choices insert end \
+            "name" "Element Name" \
+            "symbol" "Atomic Symbol" \
+            "number" "Atomic Number" \
+            "weight" "Atomic Weight"
+
+        $win.val value "name"
+
+        Rappture::Tooltip::for $win.val $params(-tooltip)
+
+        set _win $win
+    }
+
+    public method check {} {
+        set val [$_win.val value]
+        if {$val eq ""} {
+            return [list error "Need to report something for the selected elment."]
+        }
+        return ""
+    }
+
+    public method load {val} {
+        # ignore comma separators
+        regsub -all {,} $val { } val
+
+        # having a null value is an error -- default to name
+        if {$val eq ""} {
+            set val "name"
+        }
+        if {[catch {$_win.val value $val}]} {
+            $_win.val value "name"
+        }
+    }
+
+    public method save {var} {
+        upvar $var value
+        set value [$_win.val value]
+        return 1
+    }
+
+    public method edit {} {
+        focus -force $_win.val
+    }
+
+    public proc import {xmlobj path} {
+        set val [$xmlobj get $path]
+        if {$val eq ""} {
+            set val "name"
+        } elseif {$val eq "all"} {
+            set val "name symbol number weight"
+        }
+        return $val
+    }
+
+    public proc export {xmlobj path value} {
+        $xmlobj put $path $value
+    }
+
+    private variable _win ""       ;# containing frame
+}
Index: /tags/1.6.0/lang/tcl/scripts/types/boolean.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/types/boolean.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/types/boolean.tcl	(revision 6168)
@@ -0,0 +1,78 @@
+# ----------------------------------------------------------------------
+#  EDITOR: boolean attribute values
+#
+#  Used within the Instant Rappture builder to edit boolean values.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+itcl::class AttrBoolean {
+    constructor {win args} {
+        Rappture::getopts args params {
+            value -tooltip ""
+        }
+
+        Rappture::Combobox $win.val -width 10 -editable no
+        pack $win.val -side left
+        $win.val choices insert end 1 "True" 0 "False"
+
+        Rappture::Tooltip::for $win.val $params(-tooltip)
+
+        set _win $win
+    }
+
+    public method check {} {
+        set val [$_win.val translate [$_win.val value]]
+        if {![string is boolean -strict $val]} {
+            return [list error "Bad value \"$val\": should be Boolean"]
+        }
+        return ""
+    }
+
+    public method load {val} {
+        if {![string is boolean -strict $val] || $val} {
+            $_win.val value "True"
+        } else {
+            $_win.val value "False"
+        }
+    }
+
+    public method save {var} {
+        upvar $var value
+        set str [$_win.val translate [$_win.val value]]
+        if {[string is boolean -strict $str] && $str} {
+            set value "yes"
+        } else {
+            set value "no"
+        }
+        return 1
+    }
+
+    public method edit {} {
+        focus -force $_win.val
+    }
+
+    public proc import {xmlobj path} {
+        set val [$xmlobj get $path]
+        if {[string is boolean -strict $val] && $val} {
+            set val "yes"
+        } else {
+            set val "no"
+        }
+        return $val
+    }
+
+    public proc export {xmlobj path value} {
+        if {$value} {
+            $xmlobj put $path "yes"
+        } else {
+            $xmlobj put $path "no"
+        }
+    }
+
+    private variable _win ""       ;# containing frame
+}
Index: /tags/1.6.0/lang/tcl/scripts/types/choices.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/types/choices.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/types/choices.tcl	(revision 6168)
@@ -0,0 +1,237 @@
+# ----------------------------------------------------------------------
+#  EDITOR: choice option values
+#
+#  Used within the Instant Rappture builder to edit the options
+#  associated with a "choice" object.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+itcl::class AttrChoices {
+    constructor {win args} {
+        Rappture::getopts args params {
+            value -tooltip ""
+        }
+
+        frame $win.cntls
+        pack $win.cntls -fill x
+        button $win.cntls.add -text "Add" -command [itcl::code $this _add]
+        pack $win.cntls.add -side left -padx 2 -pady 2
+        Rappture::Tooltip::for $win.cntls.add "Adds a new option to the list of choices."
+        button $win.cntls.del -text "Delete" -command [itcl::code $this _delete]
+        pack $win.cntls.del -side right -padx 2 -pady 2
+        Rappture::Tooltip::for $win.cntls.del "Removes an option from the list of choices."
+
+        Rappture::Scroller $win.scrl -height 1.5i \
+            -xscrollmode auto -yscrollmode auto
+        pack $win.scrl -fill x
+        listbox $win.scrl.lbox -selectmode single -exportselection off
+        bind $win.scrl.lbox <<ListboxSelect>> [itcl::code $this _edit]
+        $win.scrl contents $win.scrl.lbox
+        Rappture::Tooltip::for $win.scrl.lbox $params(-tooltip)
+
+        frame $win.editelem -borderwidth 4 -relief flat
+        pack $win.editelem -fill x
+        grid columnconfigure $win.editelem 1 -weight 1
+
+        label $win.editelem.title -text "Edit selected entry:"
+        grid $win.editelem.title -row 0 -column 0 -columnspan 3 -sticky w
+        label $win.editelem.l -text "Label:"
+        grid $win.editelem.l -row 1 -column 0 -sticky e
+        entry $win.editelem.label
+        Rappture::Tooltip::for $win.editelem.label "Label for the option that appears in the drop-down list of choices."
+        grid $win.editelem.label -row 1 -column 1 -columnspan 2 -sticky ew
+        label $win.editelem.v -text "Value:"
+        grid $win.editelem.v -row 2 -column 0 -sticky e
+        entry $win.editelem.value
+        Rappture::Tooltip::for $win.editelem.value "Value for the option reported to your program when this choice is selected."
+        grid $win.editelem.value -row 2 -column 1 -sticky ew
+        label $win.editelem.vopt -text "(optional)"
+        grid $win.editelem.vopt -row 2 -column 2 -sticky e
+        label $win.editelem.d -text "Description:"
+        grid $win.editelem.d -row 3 -column 0 -sticky e
+        Rappture::Scroller $win.editelem.scrl -height 1i -yscrollmode auto
+        grid $win.editelem.scrl -row 3 -column 1 -columnspan 2 -sticky nsew
+        text $win.editelem.scrl.desc -wrap char
+        $win.editelem.scrl contents $win.editelem.scrl.desc
+        Rappture::Tooltip::for $win.editelem.scrl.desc "Description of the option that appears in the tooltip when you mouse over the choice when it appears in the combobox."
+
+        bind $win.editelem.label <KeyPress-Return> \
+            "[itcl::code $this _finalize label]; focus \[tk_focusNext %W\]"
+        bind $win.editelem.label <KeyPress-Tab> \
+            "[itcl::code $this _finalize label]; focus \[tk_focusNext %W\]"
+        bind $win.editelem.value <KeyPress-Return> "focus \[tk_focusNext %W\]"
+
+        set _win $win
+    }
+    destructor {
+    }
+
+    public method load {opts} {
+        set _options ""
+        foreach rec $opts {
+            set label [lindex $rec 0]
+            set value [lindex $rec 1]
+            set desc [lindex $rec 2]
+            lappend _options [list $label $value $desc]
+        }
+
+        # display all options and select the first one for editing
+        $_win.scrl.lbox delete 0 end
+        foreach rec $_options {
+            $_win.scrl.lbox insert end [lindex $rec 0]
+        }
+        $_win.scrl.lbox selection set 0
+        _edit
+    }
+
+    public method check {} {
+        # should be okay -- labels/values can be anything
+    }
+
+    public method save {var} {
+        _finalize  ;# apply any pending changes
+
+        upvar $var val
+        set val $_options
+
+        return 1
+    }
+
+    public method edit {} {
+        focus -force $_win.scrl.lbox
+    }
+
+    public proc import {xmlobj path} {
+        # instead of storing within the given path, we must store a
+        # series of <option> tags within the parent on the path
+        set path [join [lrange [split $path .] 0 end-1] .]
+
+        # load the info from various <option> tags
+        set rval ""
+        foreach cpath [$xmlobj children -type option -as path $path] {
+            set label [$xmlobj get $cpath.about.label]
+            set desc  [$xmlobj get $cpath.about.description]
+            set value [$xmlobj get $cpath.value]
+            lappend rval [list $label $value $desc]
+        }
+        return $rval
+    }
+
+    public proc export {xmlobj path value} {
+        # instead of storing within the given path, we must store a
+        # series of <option> tags within the parent on the path
+        set path [join [lrange [split $path .] 0 end-1] .]
+
+        # clear out all existing elements
+        foreach cpath [$xmlobj children -type option -as path $path] {
+            $xmlobj remove $cpath
+        }
+
+        # create new elements for all options
+        set id 0
+        foreach rec $value {
+            foreach {label value desc} $rec break
+            set elem "option([incr id])"
+            $xmlobj put $path.$elem.about.label $label
+            if {$desc ne ""} {
+                $xmlobj put $path.$elem.about.description $desc
+            }
+            if {$value ne ""} {
+                $xmlobj put $path.$elem.value $value
+            }
+        }
+    }
+
+    public method clear {} {
+        set _options ""
+        set _editing ""
+        $_win.editelem.label delete 0 end
+        $_win.editelem.value delete 0 end
+        $_win.editelem.scrl.desc delete 1.0 end
+    }
+
+    # add a new entry into the list and load it for editing
+    private method _add {} {
+        _finalize   ;# apply any pending changes
+        set name "Option #[incr _count]"
+        $_win.scrl.lbox insert end $name
+        lappend _options [list $name "" ""]
+        $_win.scrl.lbox selection clear 0 end
+        $_win.scrl.lbox selection set end
+        $_win.scrl.lbox see end
+        _edit  ;# edit the new entry
+    }
+
+    # delete the selected entry from the list and select the next one
+    private method _delete {} {
+        set i [$_win.scrl.lbox curselection]
+        if {$i ne ""} {
+            _finalize clear  ;# clear editing area
+            set _options [lreplace $_options $i $i]
+            $_win.scrl.lbox delete $i
+
+            # find the next best item to select
+            if {$i >= [llength $_options]} {
+                set i [expr {[llength $_options]-1}]
+            }
+            if {$i >= 0} {
+                $_win.scrl.lbox selection set $i
+                _edit
+            } else {
+                focus $_win.scrl.lbox
+            }
+        }
+    }
+
+    # edit the selected entry
+    private method _edit {} {
+        _finalize   ;# apply any pending changes
+
+        set i [lindex [$_win.scrl.lbox curselection] 0]
+        if {$i ne ""} {
+            set rec [lindex $_options $i]
+            $_win.editelem.label insert 0 [lindex $rec 0]
+            $_win.editelem.value insert 0 [lindex $rec 1]
+            $_win.editelem.scrl.desc insert 1.0 [lindex $rec 2]
+
+            $_win.editelem.label selection from 0
+            $_win.editelem.label selection to end
+            focus $_win.editelem.label
+
+            set _editing $i
+        }
+    }
+
+    # finalize any changes for the entry being edited
+    private method _finalize {{what clear}} {
+        if {$_editing ne "" && $_editing < [llength $_options]} {
+            set lval [string trim [$_win.editelem.label get]]
+            set vval [string trim [$_win.editelem.value get]]
+            set dval [string trim [$_win.editelem.scrl.desc get 1.0 end]]
+            set rec [list $lval $vval $dval]
+            set _options [lreplace $_options $_editing $_editing $rec]
+            $_win.scrl.lbox delete $_editing
+            $_win.scrl.lbox insert $_editing $lval
+            if {$what ne "clear"} {
+                $_win.scrl.lbox selection set $_editing
+            }
+        }
+
+        # no longer editing anything -- clear out
+        if {$what eq "clear"} {
+            set _editing ""
+            $_win.editelem.label delete 0 end
+            $_win.editelem.value delete 0 end
+            $_win.editelem.scrl.desc delete 1.0 end
+        }
+    }
+
+    private variable _win ""       ;# containing frame
+    private variable _count 0      ;# counter for unique numbers
+    private variable _options ""   ;# list of options: {label value desc}
+    private variable _editing ""   ;# index of entry being edited
+}
Index: /tags/1.6.0/lang/tcl/scripts/types/color.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/types/color.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/types/color.tcl	(revision 6168)
@@ -0,0 +1,100 @@
+# ----------------------------------------------------------------------
+#  EDITOR: color attribute values
+#
+#  Used within the Instant Rappture builder to edit color values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+itcl::class AttrColor {
+    constructor {win args} {
+        Rappture::getopts args params {
+            value -tooltip ""
+        }
+        set _icon [image create photo -width 20 -height 20]
+
+        label $win.sample -image $_icon
+        pack $win.sample -side left
+        Rappture::Tooltip::for $win.sample $params(-tooltip)
+
+        button $win.change -text "Choose..." -command [itcl::code $this choose]
+        pack $win.change -side left
+        _redraw ""
+
+        set _win $win
+    }
+    destructor {
+        image delete $_icon
+    }
+
+    public method load {val} {
+        _redraw $val
+    }
+
+    public method check {} {
+        if {"" != $_color && [catch {winfo rgb . $_color} err]} {
+            return [list error "Bad value \"$_color\": should be color name or #RRGGBB"]
+        }
+    }
+
+    public method save {var} {
+        upvar $var value
+
+        set err [lindex [check] 1]
+        if {[string length $err] > 0} {
+            Rappture::Tooltip::cue $_win $err
+            return 0
+        }
+
+        set value $_color
+        return 1
+    }
+
+    public method edit {} {
+        focus -force $_win.change
+    }
+
+    public proc import {xmlobj path} {
+        # trivial import -- just return info as-is from XML
+        return [$xmlobj get $path]
+    }
+
+    public proc export {xmlobj path value} {
+        # trivial export -- just save info as-is into XML
+        if {[string length $value] > 0} {
+            $xmlobj put $path $value
+        }
+    }
+
+    public method choose {} {
+        if {"" != $_color} {
+            _redraw [tk_chooseColor -title "Rappture: Choose Color" -initialcolor $_color]
+        } else {
+            _redraw [tk_chooseColor -title "Rappture: Choose Color"]
+        }
+    }
+
+    private method _redraw {color} {
+        set _color $color
+        set w [image width $_icon]
+        set h [image width $_icon]
+        $_icon put white -to 0 0 $w $h
+        $_icon put black -to 0 0 $w 1
+        $_icon put black -to 0 0 1 $h
+        $_icon put black -to [expr {$w-1}] 0 $w $h
+        $_icon put black -to 0 [expr {$h-1}] $w $h
+
+        if {"" != $color} {
+            $_icon put $color -to 4 4 [expr {$w-4}] [expr {$h-4}]
+        } else {
+            $_icon copy [Rappture::icon diag] -to 4 4 [expr {$w-4}] [expr {$h-4}]
+        }
+    }
+
+    private variable _win ""       ;# containing frame
+    private variable _icon ""      ;# image for color sample
+    private variable _color ""     ;# name of color sample
+}
Index: /tags/1.6.0/lang/tcl/scripts/types/file.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/types/file.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/types/file.tcl	(revision 6168)
@@ -0,0 +1,120 @@
+# ----------------------------------------------------------------------
+#  EDITOR: file attribute values
+#
+#  Used within the Instant Rappture builder to set file paths.
+#  Rappture tries to avoid files, but it's okay for things like the
+#  <note> element, which points to documentation.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+itcl::class AttrFile {
+    constructor {win args} {
+        Rappture::getopts args params {
+            value -tooltip ""
+        }
+        label $win.file -text "select a file" -width 10 -anchor e -fg gray60
+        pack $win.file -side left
+        Rappture::Tooltip::for $win.file $params(-tooltip)
+
+        button $win.getfile -text "Choose..." -command [itcl::code $this _getfile]
+        pack $win.getfile -side left
+
+        set _win $win
+    }
+
+    public method load {val} {
+        if {[string length $val] > 0} {
+            $_win.file configure -text $val -foreground black
+
+            # if the file name is long, then set up to clip and show the tail
+            set w [expr {[winfo width $_win]-[winfo width $_win.getfile]}]
+            set fn [$_win.file cget -font]
+            if {[font measure $fn $val] > $w} {
+                $_win.file configure -width 10
+                pack $_win.file -expand yes -fill x
+            } else {
+                $_win.file configure -width 0
+                pack $_win.file -expand no
+            }
+        }
+    }
+
+    public method check {} {
+        set fname [$_win.file cget -text]
+        if {"" != $fname && ![string equal $fname "select a file"]
+              && ![regexp {^file://(.+)} $fname]} {
+            return [list error "Bad value \"$fname\": should be file://filename"]
+        }
+    }
+
+    public method save {var} {
+        upvar $var value
+
+        set err [lindex [check] 1]
+        if {[string length $err] > 0} {
+            Rappture::Tooltip::cue $_win $err
+            return 0
+        }
+
+        set value [$_win.file cget -text]
+        if {[string equal $value "select a file"]} {
+            set value ""
+        }
+        return 1
+    }
+
+    public method edit {} {
+        focus -force $_win.getfile
+    }
+
+    public proc import {xmlobj path} {
+        # trivial import -- just return info as-is from XML
+        return [$xmlobj get $path]
+    }
+
+    public proc export {xmlobj path value} {
+        global LastToolXmlFile
+
+        # save a relative path to this file
+        if {[regexp {^file://(.+)} $value match fname]} {
+            if {[file pathtype $fname] == "absolute"} {
+                set dir [file dirname $LastToolXmlFile]
+                if {[string match $dir/* $fname]} {
+                    set len [string length "$dir/"]
+                    set value "file://[string range $fname $len end]"
+                } elseif {"" != $LastToolXmlFile} {
+                    error "Can't find file \"$fname\" relative to tool.xml file.  All items for a tool should be bundled together in the same directory, so they can be easily relocated later."
+                }
+            }
+        }
+
+        if {[string length $value] > 0} {
+            $xmlobj put $path $value
+        }
+    }
+
+    protected method _getfile {} {
+        set fname [tk_getOpenFile -title "Rappture: Select HTML File" -defaultextension .html -filetypes { {{HTML files} {.html .htm}} {{All files} *} }]
+        if {"" != $fname} {
+            $_win.file configure -text "file://$fname" -foreground black
+
+            # if the file name is long, then set up to clip and show the tail
+            set w [expr {[winfo width $_win]-[winfo width $_win.getfile]}]
+            set fn [$_win.file cget -font]
+            if {[font measure $fn $fname] > $w} {
+                $_win.file configure -width 10
+                pack $_win.file -expand yes -fill x
+            } else {
+                $_win.file configure -width 0
+                pack $_win.file -expand no
+            }
+        }
+    }
+
+    private variable _win ""       ;# containing frame
+}
Index: /tags/1.6.0/lang/tcl/scripts/types/image.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/types/image.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/types/image.tcl	(revision 6168)
@@ -0,0 +1,231 @@
+# ----------------------------------------------------------------------
+#  EDITOR: image attribute values
+#
+#  Used within the Instant Rappture builder to edit image values.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+itcl::class AttrImage {
+    constructor {win args} {
+        Rappture::getopts args params {
+            value -maxsize ""
+            value -rescale no
+            value -tooltip ""
+        }
+        set _currview [image create photo]
+        set _maxsize $params(-maxsize)
+        set _rescale $params(-rescale)
+
+        label $win.image -image $_currview -borderwidth 1 -relief solid
+        pack $win.image -side left
+        Rappture::Tooltip::for $win.image $params(-tooltip)
+
+        frame $win.btns
+        button $win.btns.load -text "Load..." \
+            -command [itcl::code $this loadFromFile]
+        pack $win.btns.load -side left -padx {8 2}
+        button $win.btns.save -text "Save..." \
+            -command [itcl::code $this saveToFile]
+        pack $win.btns.save -side left -padx 2
+        button $win.btns.clear -text "Clear" \
+            -command [itcl::code $this clear]
+        pack $win.btns.clear -side left -padx 2
+
+        set _win $win
+        _assign image ""  ;# redraw with empty image
+    }
+    destructor {
+        image delete $_currview
+        if {$_actual ne ""} { image delete $_actual }
+    }
+
+    public method load {bytes} {
+        _assign data $bytes
+    }
+
+    public method check {} {
+        # images should be okay -- they get checked when they're loaded
+    }
+
+    public method save {var} {
+        upvar $var bytes
+
+        if {$_actual eq ""} {
+            set bytes ""
+        } else {
+            if {$_rescale} {
+                set bytes [$_currview data -format png]
+            } else {
+                set bytes [$_actual data -format png]
+            }
+        }
+        return 1
+    }
+
+    public method edit {} {
+        focus -force $_win.btns.load
+    }
+
+    public proc import {xmlobj path} {
+        # trivial import -- just return info as-is from XML
+        return [$xmlobj get $path]
+    }
+
+    public proc export {xmlobj path value} {
+        # trivial export -- just save info as-is into XML
+        if {[string length $value] > 0} {
+            $xmlobj put $path $value
+        }
+    }
+
+    public method loadFromFile {} {
+        set fname [tk_getOpenFile -title "Rappture: Load Image From File" \
+            -filetypes {
+                {{Image Files}   {.bmp .gif .ico .jpg .jpeg .pcx .png .pgm .ppm .sgi .sun .tga .tiff .xbm .xpm}}
+                {{BMP Files}     .bmp}
+                {{GIF Files}     .gif}
+                {{JPEG Files}    {.jpg .jpeg}}
+                {{PNG Files}     .png}
+                {{TIFF Files}    .tiff}
+                {{All Files}     *}
+            }]
+        if {$fname != ""} {
+            if {[catch {image create photo -file $fname} result]} {
+                tk_messageBox -title "Rappture: Error" -message "Image load failed:\n$result"
+            } else {
+                _assign image $result
+            }
+        }
+    }
+
+    public method saveToFile {} {
+        set fname [tk_getSaveFile -title "Rappture: Save Image To File" \
+            -defaultextension ".png" -filetypes {
+                {{Image Files}   {.bmp .gif .ico .jpg .jpeg .pcx .png .pgm .ppm .sgi .sun .tga .tiff .xbm .xpm}}
+                {{BMP Files}     .bmp}
+                {{GIF Files}     .gif}
+                {{JPEG Files}    {.jpg .jpeg}}
+                {{PNG Files}     .png}
+                {{TIFF Files}    .tiff}
+                {{All Files}     *}
+            }]
+        if {$fname != ""} {
+            set cmds {
+                set fid [open $fname w]
+                set fmt [string range [file extension $fname] 1 end]
+                if {$fmt eq "jpg"} {set fmt "jpeg"}
+                if {$fmt eq "pgm"} {set fmt "ppm -grayscale"}
+                set data [eval $_actual data -format $fmt]
+                if {![regexp {^[a-zA-Z0-9+/=]+(\n[a-zA-Z0-9+/=]+)*$} $data]
+                      || [catch {Rappture::encoding::decode -as b64 $data} bytes]} {
+                    # oops! not base64 -- use ascii data directly
+                    set bytes $data
+                } else {
+                    # must have decoded binary data from b64
+                    fconfigure $fid -encoding binary -translation binary
+                }
+                puts -nonewline $fid $bytes
+                close $fid
+            }
+            if {[catch $cmds err]} {
+                tk_messageBox -title "Rappture: Error" -message "Image save failed:\n$err"
+            }
+        }
+    }
+
+    public method clear {} {
+        _assign image ""
+    }
+
+    private method _assign {type data} {
+        # assign the new image data into the _actual image
+        switch -- $type {
+            image {
+                if {$_actual ne ""} {
+                    image delete $_actual
+                    set _actual ""
+                }
+                if {$data ne "" && [catch {image type $data}] == 0} {
+                    set _actual $data
+                }
+            }
+            data {
+                if {$data eq ""} {
+                    # nothing to display -- clear out the image
+                    if {$_actual ne ""} {
+                        image delete $_actual
+                        set _actual ""
+                    }
+                } else {
+                    if {$_actual eq ""} {
+                        set _actual [image create photo -data $data]
+                    } else {
+                        $_actual configure -data $data
+                    }
+                }
+            }
+        }
+
+        # redraw the _actual image to _currview based on -maxsize
+        if {$_actual eq ""} {
+            # generate a diagonal cross-hatch image for "no image"
+            if {$_maxsize eq ""} {
+                set size 50
+            } else {
+                set size [expr {2*$_maxsize/3}]
+                if {$size < 10} { set size 10 }
+            }
+            set diag [Rappture::icon diag]
+            set dw [image width $diag]
+            set dh [image height $diag]
+            $_currview configure -width $size -height $size
+            for {set i 0} {$i < $size/$dw+1} {incr i} {
+                for {set j 0} {$j < $size/$dh+1} {incr j} {
+                    set x [expr {$i*$dw}]
+                    set y [expr {$j*$dh}]
+                    $_currview copy $diag -to $x $y
+                }
+            }
+        } elseif {$_maxsize ne ""} {
+            # scale the image to the specified maxsize
+            set w $_maxsize
+            set h $_maxsize
+            set iw [image width $_actual]
+            set ih [image height $_actual]
+            if {$iw > $ih} {
+                set h [expr {round($w/double($iw)*$ih)}]
+            } else {
+                set w [expr {round($h/double($ih)*$iw)}]
+            }
+            $_currview configure -width $w -height $h
+            $_currview blank
+            blt::winop resample $_actual $_currview box
+        } else {
+            # no maxsize -- display the image as-is
+            set iw [image width $_actual]
+            set ih [image height $_actual]
+            $_currview configure -width $iw -height $ih
+            $_currview blank
+            $_currview copy $_actual
+        }
+
+        # fix the position of the buttons based on the image size
+        if {[image width $_currview] > 200} {
+            pack $_win.image -side top -anchor w
+            pack $_win.btns -side top -anchor w
+        } else {
+            pack $_win.image -side left
+            pack $_win.btns -side left
+        }
+    }
+
+    private variable _win ""       ;# containing frame
+    private variable _maxsize ""   ;# integer => max width/height for image
+    private variable _rescale 0    ;# boolean => limit image to maxsize
+    private variable _currview ""  ;# tk image for current image view
+    private variable _actual ""    ;# tk image for actual image
+}
Index: /tags/1.6.0/lang/tcl/scripts/types/language.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/types/language.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/types/language.tcl	(revision 6168)
@@ -0,0 +1,118 @@
+# ----------------------------------------------------------------------
+#  EDITOR: programming language
+#
+#  Used within the Instant Rappture builder to edit the "language"
+#  which is an attribute of the tool.  This control offers any of
+#  the built-in template languages, or the "custom" option (which
+#  allows the user to specify the tool invocation command).
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+itcl::class AttrLanguage {
+    constructor {win args} {
+        Rappture::getopts args params {
+            value -tooltip ""
+        }
+
+        Rappture::Combobox $win.val -width 12 -editable no
+        pack $win.val -side left
+        foreach name [lsort [RapptureBuilder::templates::languages]] {
+            $win.val choices insert end $name $name
+        }
+        $win.val choices insert end "--" "Other"
+
+        bind $win.val <<Value>> [itcl::code $this _react]
+
+        Rappture::Tooltip::for $win.val $params(-tooltip)
+
+        frame $win.custom
+        label $win.custom.l -text "Command:"
+        pack $win.custom.l -side left
+        entry $win.custom.val
+        pack $win.custom.val -side left -expand yes -fill x
+        Rappture::Tooltip::for $win.custom.val "Enter the command line that Rappture should invoke to run your simulation program.  Include @driver somewhere on this line; it will be replaced with the name of the Rappture driver file (usually passed in as the first argument on the command line).  If you include @tool, it will be replaced with the name of the directory where the tool.xml file is installed.  Instead of hard-coding your program path, you can express it as a relative path from @tool."
+
+        set _win $win
+    }
+
+    public method check {} {
+        if {[$_win.val translate [$_win.val value]] eq "--"} {
+            if {[string trim [$_win.custom.val get]] eq ""} {
+                return [list error "Must specify a custom invocation command for this tool"]
+            }
+        }
+        return ""
+    }
+
+    public method load {val} {
+        # If the value is !language, then it may have been saved earlier
+        if {[string index $val 0] eq "!"} {
+            $_win.val value [string range $val 1 end]
+            $_win.custom.val delete 0 end
+            return
+        }
+
+        # It's hard to reload a real command from a tool.xml file.
+        # Scan through all languages and treat @@FILENAME@@ as a wildcard.
+        # See if any of the languages match.
+        foreach lang [RapptureBuilder::templates::languages] {
+            set cmd [RapptureBuilder::templates::generate command \
+                -language $lang -macros {@@FILENAME@@ * @@FILEROOT@@ *}]
+
+            if {[string match $cmd $val]} {
+                $_win.val value $lang
+                $_win.custom.val delete 0 end
+                return
+            }
+        }
+        # must be a custom command
+        $_win.val value "Other"
+        $_win.custom.val delete 0 end
+        $_win.custom.val insert end $val
+    }
+
+    public method save {var} {
+        upvar $var value
+        set str [$_win.val translate [$_win.val value]]
+        if {$str eq "--"} {
+            # save custom command
+            set value [string trim [$_win.custom.val get]]
+        } else {
+            # save !language and substitute proper command later
+            set value "!$str"
+        }
+        return 1
+    }
+
+    public method edit {} {
+        focus -force $_win.val
+    }
+
+    public proc import {xmlobj path} {
+        return [$xmlobj get $path]
+    }
+
+    public proc export {xmlobj path value} {
+        set value [string trim $value]
+        if {$value ne ""} {
+            $xmlobj put $path $value
+        }
+    }
+
+    # invoked whenever the user changes the language choice
+    private method _react {} {
+        if {[$_win.val translate [$_win.val value]] eq "--"} {
+            # custom option -- put up extra controls
+            pack $_win.custom -side left -expand yes -fill x
+        } else {
+            pack forget $_win.custom
+        }
+    }
+
+    private variable _win ""       ;# containing frame
+}
Index: /tags/1.6.0/lang/tcl/scripts/types/string.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/types/string.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/types/string.tcl	(revision 6168)
@@ -0,0 +1,105 @@
+# ----------------------------------------------------------------------
+#  EDITOR: string attribute values
+#
+#  Used within the Instant Rappture builder to edit string values.
+#  Strings can have the following additional options:
+#
+#    -lines N ......... height of editor (default is 1 line)
+#    -validate type ... validation routine applied to string values
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+itcl::class AttrString {
+    constructor {win args} {
+        Rappture::getopts args params {
+            value -lines 1
+            value -validate ""
+            value -tooltip ""
+        }
+
+        if {$params(-lines) > 1} {
+            Rappture::Scroller $win.scrl -xscrollmode none -yscrollmode auto
+            pack $win.scrl -expand yes -fill both
+            text $win.scrl.text -width 10 -height $params(-lines) -wrap word
+            $win.scrl contents $win.scrl.text
+            Rappture::Tooltip::for $win.scrl.text $params(-tooltip)
+        } else {
+            entry $win.str
+            pack $win.str -fill x
+            Rappture::Tooltip::for $win.str $params(-tooltip)
+        }
+        set _win $win
+        set _validate $params(-validate)
+    }
+
+    public method load {val} {
+        if {[winfo exists $_win.str]} {
+            $_win.str delete 0 end
+            $_win.str insert end $val
+        } else {
+            $_win.scrl.text delete 1.0 end
+            $_win.scrl.text insert end $val
+        }
+    }
+
+    public method check {} {
+        if {[string length $_validate] > 0} {
+            if {[winfo exists $_win.str]} {
+                set str [$_win.str get]
+            } else {
+                set str [$_win.scrl.text get 1.0 end-1char]
+            }
+            if {[catch {uplevel #0 $_validate [list $str]} result]} {
+                return [list error "Bad value: $result"]
+            }
+        }
+    }
+
+    public method save {var} {
+        upvar $var value
+
+        set err [lindex [check] 1]
+        if {[string length $err] > 0} {
+            Rappture::Tooltip::cue $_win $err
+            return 0
+        }
+
+        if {[winfo exists $_win.str]} {
+            set value [$_win.str get]
+        } else {
+            set value [$_win.scrl.text get 1.0 end-1char]
+        }
+        return 1
+    }
+
+    public method edit {} {
+        if {[winfo exists $_win.str]} {
+            focus -force $_win.str
+            $_win.str selection from 0
+            $_win.str selection to end
+        } else {
+            focus -force $_win.scrl.text
+            $_win.scrl.text tag add sel 1.0 end
+        }
+    }
+
+    public proc import {xmlobj path} {
+        # trivial import -- just return info as-is from XML
+        return [$xmlobj get $path]
+    }
+
+    public proc export {xmlobj path value} {
+        # trivial export -- just save info as-is into XML
+        if {[string length $value] > 0} {
+            $xmlobj put $path $value
+        }
+    }
+
+    private variable _win ""       ;# containing frame
+    private variable _validate ""  ;# validation command for checking values
+}
Index: /tags/1.6.0/lang/tcl/scripts/types/units.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/types/units.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/types/units.tcl	(revision 6168)
@@ -0,0 +1,125 @@
+# ----------------------------------------------------------------------
+#  EDITOR: units attribute values
+#
+#  Used within the Instant Rappture builder to edit units for numbers.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+itcl::class AttrUnits {
+    constructor {win args} {
+        Rappture::getopts args params {
+            value -tooltip ""
+        }
+
+        Rappture::Combobox $win.val -width 10 -editable yes
+        pack $win.val -side left
+        $win.val choices insert end \
+          m   "Length Units" \
+          m   "  m - meters" \
+          in  "  in - inches" \
+          ft  "  ft - feet" \
+          yd  "  yd - yards" \
+          mi  "  mi - miles" \
+          s   "Time Units" \
+          s   "  s - seconds" \
+          min "  min - minutes" \
+          h   "  h - hours" \
+          d   "  d - days" \
+          Hz  "  Hz - Hertz" \
+          K   "Temperature Units" \
+          K   "  K - Kelvin" \
+          F   "  F - Fahrenheit" \
+          C   "  C - Celcius" \
+          eV  "Energy Units" \
+          eV  "  eV - electron Volts" \
+          J   "  J - Joules" \
+          V   "  V - volts" \
+          m3  "Volume Units" \
+          m3  "  cubic meter" \
+          gal "  gal - US gallon" \
+          L   "  L - liter" \
+          deg "Angle Units" \
+          deg "  deg - degrees" \
+          rad "  rad - radians" \
+          g   "Mass Units" \
+          g   "  g - grams" \
+          N   "Force Units" \
+          N   "  N - Newtons" \
+          Pa  "Pressure Units" \
+          Pa  "  Pa - Pascals" \
+          atm "  atm - atmospheres" \
+          pis "  psi - pounds per square inch" \
+          T   "Magnetic Units" \
+          T   "  T - Teslas" \
+          G   "  G - Gauss"
+
+        Rappture::Tooltip::for $win.val $params(-tooltip)
+
+        set _win $win
+    }
+
+    public method check {} {
+        set val [$_win.val translate [$_win.val value]]
+        if {"" != $val} {
+            return ""
+        }
+        set val [$_win.val value]
+        if {"" != [Rappture::Units::description $val]} {
+            return ""
+        }
+        return [list error "Bad value \"$val\": should be valid system of units"]
+    }
+
+    public method load {val} {
+        set newval [$_win.val translate $val]
+        if {"" != $newval} {
+            $_win.val value $newval
+        } else {
+            $_win.val value $val
+        }
+    }
+
+    public method save {var} {
+        upvar $var value
+
+        set err [lindex [check] 1]
+        if {[string length $err] > 0} {
+            Rappture::Tooltip::cue $_win $err
+            return 0
+        }
+
+        set val [$_win.val value]
+        set newval [$_win.val translate $val]
+        if {"" != $newval} {
+            set value $newval
+        } else {
+            set value $val
+        }
+        return 1
+    }
+
+    public method edit {} {
+        focus -force $_win.val
+        $_win.val component entry selection from 0
+        $_win.val component entry selection to end
+    }
+
+    public proc import {xmlobj path} {
+        set val [$xmlobj get $path]
+        return $val
+    }
+
+    public proc export {xmlobj path value} {
+        set value [string trim $value]
+        if {$value ne ""} {
+            $xmlobj put $path $value
+        }
+    }
+
+    private variable _win ""       ;# containing frame
+}
Index: /tags/1.6.0/lang/tcl/scripts/units.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/units.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/units.tcl	(revision 6168)
@@ -0,0 +1,546 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*-
+# ----------------------------------------------------------------------
+#  COMPONENT: units - mechanism for converting numbers with units
+#
+#  These routines make it easy to define a system of units, to decode
+#  numbers with units, and convert a number from one set of units to
+#  another.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+namespace eval Rappture { # forward declaration }
+namespace eval Rappture::Units { # forward declaration }
+
+# ----------------------------------------------------------------------
+# USAGE: define units ?-type name? ?-metric boolean?
+# USAGE: define units1->units2 {expr}
+#
+# Used to define a new fundamental type of units, or to define another
+# system of units based on a fundamental type.  Once units are defined
+# in this manner, the "convert" function can be used to convert a number
+# in one system of units to another system.
+# ----------------------------------------------------------------------
+proc Rappture::Units::define {what args} {
+    if {[regexp {(.+)->(.+)} $what match new fndm]} {
+        if {[llength $args] != 2} {
+            error "wrong # args: should be \"define units1->units2 exprTo exprFrom\""
+        }
+        #
+        # Convert the units variables embedded in the conversion
+        # expressions to something that Tcl can handle.  We'll
+        # use ${number} to represent the variables.
+        #
+        foreach {exprTo exprFrom} $args { break }
+        regsub -all $new $exprTo {${number}} exprTo
+        regsub -all $fndm $exprFrom {${number}} exprFrom
+
+        Rappture::Units::System #auto $new \
+            -basis [list $fndm $exprTo $exprFrom]
+
+    } elseif {[regexp {^/?[a-zA-Z]+[0-9]*$} $what]} {
+        array set opts {
+            -type ""
+            -metric 0
+        }
+        foreach {key val} $args {
+            if {![info exists opts($key)]} {
+                error "bad option \"$key\": should be [join [lsort [array names opts]] {, }]"
+            }
+            set opts($key) $val
+        }
+        eval Rappture::Units::System #auto $what [array get opts]
+    } else {
+        error "bad units definition \"$what\": should be something like m or /cm3 or A->m"
+    }
+}
+
+
+# ----------------------------------------------------------------------
+# USAGE: mcheck_range value {min ""} {max ""}
+#
+# Checks a value or PDF to determine if is is in a required range.
+# Automatically does unit conversion if necessary.
+# Returns value if OK.  Error if out-of-range
+# Examples:
+#    [mcheck_range "gaussian 0C 1C" 200K 500K] returns 1
+#    [mcheck_range "uniform 100 200" 150 250] returns 0
+#    [mcheck_range 100 0 200] returns 1
+# ----------------------------------------------------------------------
+
+proc Rappture::Units::_check_range {value min max units} {
+    # puts "_check_range $value min=$min max=$max units=$units"
+    # make sure the value has units
+    if {$units != ""} {
+        set value [Rappture::Units::convert $value -context $units]
+        # for comparisons, remove units
+        set nv [Rappture::Units::convert $value -context $units -units off]
+        # get the units for the value
+        set newunits [Rappture::Units::Search::for $value]
+    } else {
+        set nv $value
+    }
+
+    if {"" != $min} {
+        if {"" != $units} {
+            # compute the minimum in the new units
+            set minv [Rappture::Units::convert $min -to $newunits -context $units  -units off]
+            # same, but include units for printing
+            set convMinVal [Rappture::Units::convert $min -to $newunits -context $units]
+        } else {
+            set minv $min
+            set convMinVal $min
+        }
+        if {$nv < $minv} {
+            error "Minimum value allowed here is $convMinVal"
+        }
+    }
+    if {"" != $max} {
+        if {"" != $units} {
+            # compute the maximum in the new units
+            set maxv [Rappture::Units::convert $max -to $newunits -context $units -units off]
+            # same, but include units for printing
+            set convMaxVal [Rappture::Units::convert $max -to $newunits -context $units ]
+        } else {
+            set maxv $max
+            set convMaxVal $max
+        }
+        if {$nv > $maxv} {
+            error "Maximum value allowed here is $convMaxVal"
+        }
+    }
+    return $value
+}
+
+proc Rappture::Units::mcheck_range {value {min ""} {max ""} {units ""}} {
+    # puts "mcheck_range $value min=$min max=$max units=$units"
+
+    switch -- [lindex $value 0] {
+        normal - gaussian {
+            # get the mean
+            set mean [_check_range [lindex $value 1] $min $max $units]
+            if {$units == ""} {
+                set dev [lindex $value 2]
+                set ndev $dev
+            } else {
+                set dev [Rappture::Units::convert [lindex $value 2] -context $units]
+                set ndev [Rappture::Units::convert $dev -units off]
+            }
+            if {$ndev <= 0} {
+                error "Deviation must be positive."
+            }
+            return [list gaussian $mean $dev]
+        }
+        uniform {
+            set min [_check_range [lindex $value 1] $min $max $units]
+            set max [_check_range [lindex $value 2] $min $max $units]
+            return [list uniform $min $max]
+        }
+        exact  {
+            return [_check_range [lindex $value 1] $min $max $units]
+        }
+        default {
+            return [_check_range [lindex $value 0] $min $max $units]
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: mconvert value ?-context units? ?-to units? ?-units on/off?
+#
+# This version of convert() converts multiple values.  Used when the
+# value could be a range or probability density function (PDF).
+# Examples:
+#    gaussian 100k 1k
+#    uniform 0eV 10eV
+#    42
+#    exact 42
+# ----------------------------------------------------------------------
+
+proc Rappture::Units::mconvert {value args} {
+    # puts "mconvert $value : $args"
+    array set opts {
+        -context ""
+        -to ""
+        -units "on"
+    }
+
+    set value [split $value]
+
+    switch -- [lindex $value 0] {
+        normal - gaussian {
+            set valtype gaussian
+            set vals [lrange $value 1 2]
+            set convtype {0 1}
+        }
+        uniform {
+            set valtype uniform
+            set vals [lrange $value 1 2]
+            set convtype {0 0}
+        }
+        exact  {
+            set valtype ""
+            set vals [lindex $value 1]
+            set convtype {0}
+        }
+        default {
+            set valtype ""
+            set vals $value
+            set convtype {0}
+        }
+    }
+
+    foreach {key val} $args {
+        if {![info exists opts($key)]} {
+            error "bad option \"$key\": should be [join [lsort [array names opts]] {, }]"
+        }
+        set opts($key) $val
+    }
+
+    set newval $valtype
+    foreach val $vals ctype $convtype {
+        if {$ctype == 1} {
+            # This code handles unit conversion for deltas (changes).
+            # For example, if we want a standard deviation of 10C converted
+            # to Kelvin, that is 10K, NOT a standard deviation of 283.15K.
+            set units [Rappture::Units::Search::for $val]
+            set base [eval Rappture::Units::convert 0$units $args -units off]
+            set new [eval Rappture::Units::convert $val $args -units off]
+            set delta [expr $new - $base]
+            set val $delta$opts(-to)
+        }
+        # tcl 8.5 allows us to do this:
+        # lappend newval [Rappture::Units::convert $val {*}$args]
+        # but we are using tcl8.4 so we use eval :^(
+        lappend newval [eval Rappture::Units::convert $val $args]
+    }
+    return $newval
+}
+
+# ----------------------------------------------------------------------
+# USAGE: convert value ?-context units? ?-to units? ?-units on/off?
+#
+# Used to convert one value with units to another value in a different
+# system of units.  If the value has no units, then the units are taken
+# from the -context, if that is supplied.  If the -to system is not
+# specified, then the value is converted to fundamental units for the
+# current system.
+# ----------------------------------------------------------------------
+# proc Rappture::Units::convert {value args} {}
+# Actual implementation is in rappture/lang/tcl/src/RpUnitsTclInterface.cc.
+
+
+# ----------------------------------------------------------------------
+# USAGE: description <units>
+#
+# Returns a description for the specified system of units.  The
+# description includes the abstract type (length, temperature, etc.)
+# along with a list of all compatible systems.
+# ----------------------------------------------------------------------
+# proc Rappture::Units::description {units} {}
+# Actual implementation is in rappture/lang/tcl/src/RpUnitsTclInterface.cc.
+
+
+# ----------------------------------------------------------------------
+itcl::class Rappture::Units::System {
+    public variable basis ""
+    public variable type ""
+    public variable metric 0
+
+    constructor {name args} { # defined below }
+
+    public method basic {}
+    public method fundamental {}
+    public method convert {value units showUnits}
+    private variable _system ""  ;# this system of units
+
+    # These are in rappture/lang/tcl/src/RpUnitsTclInterface.cc.
+    # public proc for {units}
+    # public proc all {units}
+
+    public proc regularize {units}
+
+    private common _base  ;# maps unit name => System obj
+
+    # metric conversion prefixes
+    private common _prefix2factor
+    array set _prefix2factor {
+        c  1e-2
+        m  1e-3
+        u  1e-6
+        n  1e-9
+        p  1e-12
+        f  1e-15
+        a  1e-18
+        k  1e+3
+        M  1e+6
+        G  1e+9
+        T  1e+12
+        P  1e+15
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Units::System::constructor {name args} {
+    if {![regexp {^/?[a-zA-Z]+[0-9]*$} $name]} {
+        error "bad units declaration \"$name\""
+    }
+    eval configure $args
+
+    #
+    # The -basis is a list {units exprTo exprFrom}, indicating the
+    # fundamental system of units that this new system is based on,
+    # and the expressions that can be used to convert this new system
+    # to and from the fundamental system.
+    #
+    if {$basis != ""} {
+        foreach {base exprTo exprFrom} $basis { break }
+        if {![info exists _base($base)]} {
+            error "fundamental system of units \"$base\" not defined"
+        }
+        while {$type == "" && $base != ""} {
+            set obj $_base($base)
+            set type [$obj cget -type]
+            set base [lindex [$obj cget -basis] 0]
+        }
+    }
+    set _system $name
+    set _base($name) $this
+}
+
+# ----------------------------------------------------------------------
+# USAGE: basic
+#
+# Returns the basic system of units for the current system.  The
+# basic units may be the only units in this system.  But if this
+# system has "-metric 1", the basic system is the system without
+# any metric prefixes.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Units::System::basic {} {
+    return $_system
+}
+
+# ----------------------------------------------------------------------
+# USAGE: fundamental
+#
+# Returns the fundamental system of units for the current system.
+# For example, the current units might be degrees F, but the
+# fundamental system might be degrees C.  The fundamental system
+# depends on how each system is defined.  You can see it as the
+# right-hand side of the -> arrow, as in "F->C".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Units::System::fundamental {} {
+    if {$basis != ""} {
+        set sys [Rappture::Units::System::for [lindex $basis 0]]
+        return [$sys fundamental]
+    }
+    return $_system
+}
+
+# ----------------------------------------------------------------------
+# USAGE: convert value newUnits showUnits
+#
+# Converts a value with units to another value with the specified
+# units.  The value must have units that are compatible with the
+# current system.  Returns a string that represented the converted
+# number and its new units.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Units::System::convert {value newUnits showUnits} {
+    if {![regexp {^([-+]?[0-9]+\.?([0-9]+)?([eEdD][-+]?[0-9]+)?) *(/?[a-zA-Z]+[0-9]*)?$} $value match number dummy1 dummy2 units]} {
+        error "bad value \"$value\": should be real number with units"
+    }
+
+    #
+    # Check the base units coming in.  They should match the base units
+    # for the current system, or the base units for the fundamental basis.
+    # If not, something went wrong with the caller.
+    #
+    set slash ""
+    set prefix ""
+    set power "1"
+    if {$metric && [regexp {^(/?)([cmunpfakMGTP])([a-zA-Z]+)([0-9]*)$} $units match slash prefix base power]} {
+        set baseUnits "$slash$base$power"
+    } else {
+        set baseUnits $units
+    }
+    if {![string equal $baseUnits $_system]
+          && ![string equal $baseUnits [lindex $basis 0]]} {
+        error "can't convert value \"$value\": should have units \"$_system\""
+    }
+
+    #
+    # If the number coming in has a metric prefix, convert the number
+    # to the base system.
+    #
+    if {$prefix != ""} {
+        if {$power == ""} {
+            set power 1
+        }
+        if {$slash == "/"} {
+            set number [expr {$number/pow($_prefix2factor($prefix),$power)}]
+        } else {
+            set number [expr {$number*pow($_prefix2factor($prefix),$power)}]
+        }
+    }
+
+    #
+    # If the incoming units are a fundamental basis, then convert
+    # the number from the basis to the current system.
+    #
+    if {[string equal $baseUnits [lindex $basis 0]]} {
+        foreach {base exprTo exprFrom} $basis { break }
+        set number [expr $exprFrom]
+    }
+
+    #
+    # Check the base units for the new system of units.  If they match
+    # the current system, then we're almost done.  Just handle the
+    # metric prefix, if there is one.
+    #
+    set slash ""
+    set prefix ""
+    set power "1"
+    if {$metric && [regexp {^(/?)([cmunpfakMGTP])([a-zA-Z]+)([0-9]*)$} $newUnits match slash prefix base power]} {
+        set baseUnits "$slash$base$power"
+    } else {
+        set baseUnits $newUnits
+    }
+    if {[string equal $baseUnits $_system]} {
+        if {$prefix != ""} {
+            if {$power == ""} {
+                set power 1
+            }
+            if {$slash == "/"} {
+                set number [expr {$number*pow($_prefix2factor($prefix),$power)}]
+            } else {
+                set number [expr {$number/pow($_prefix2factor($prefix),$power)}]
+            }
+        }
+        if {$showUnits} {
+            return "$number$newUnits"
+        }
+        return $number
+    }
+
+    #
+    # If we want a different system of units, then convert this number
+    # to the fundamental basis.  If there is no fundamental basis, we
+    # must already be in the fundamental basis.
+    #
+    set base $_system
+    if {"" != $basis} {
+        foreach {base exprTo exprFrom} $basis { break }
+        set number [expr $exprTo]
+    }
+
+    set newsys [Rappture::Units::System::for $newUnits]
+    return [$newsys convert "$number$base" $newUnits $showUnits]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -basis
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Units::System::basis {
+    if {[llength $basis] != 3} {
+        error "bad basis \"$name\": should be {units exprTo exprFrom}"
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTION: -metric
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Units::System::metric {
+    if {![string is boolean -strict $metric]} {
+        error "bad value \"$metric\": should be boolean"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: for units
+#
+# Returns the System object for the given system of units, or ""
+# if there is no system that matches the units string.
+# ----------------------------------------------------------------------
+# itcl::body Rappture::Units::System::for {units} {}
+# Actual implementation is in rappture/lang/tcl/src/RpUnitsTclInterface.cc.
+
+
+# ----------------------------------------------------------------------
+# USAGE: all units
+#
+# Returns a list of all units compatible with the given units string.
+# Compatible units are determined by following all conversion
+# relationships that lead to the same base system.
+# ----------------------------------------------------------------------
+# itcl::body Rappture::Units::System::all {units} {}
+# Actual implementation is in rappture/lang/tcl/src/RpUnitsTclInterface.cc.
+
+
+# ----------------------------------------------------------------------
+# USAGE: regularize units
+#
+# Examines the given expression of units and tries to regularize
+# it so it has the proper capitalization.  For example, units like
+# "/CM3" are converted to "/cm3".  If the units are not recognized,
+# then they are returned as-is.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Units::System::regularize {units} {
+    set sys [for $units]
+    if {$sys == ""} {
+        return $units
+    }
+    # note: case-insensitive matching for metric prefix
+    if {[regexp {^(/?)([cCmMuUnNpPfFaAkKgGtT]?)([a-zA-Z]+[0-9]+|[a-zA-Z]+)$} $units match slash prefix tail]} {
+        if {[regexp {^[CUNFAK]$} $prefix]} {
+            # we know that these should be lower case
+            set prefix [string tolower $prefix]
+        } elseif {[regexp {^[GT]$} $prefix]} {
+            # we know that these should be upper case
+            set prefix [string toupper $prefix]
+        }
+        return "$slash$prefix[string trimleft [$sys basic] /]"
+    }
+    return [$sys basic]
+}
+
+# ----------------------------------------------------------------------
+
+# ----------------------------------------------------------------------
+# Define common units...
+# ----------------------------------------------------------------------
+Rappture::Units::define m -type length -metric yes
+Rappture::Units::define A->m {A*1.0e-10} {m*1.0e10}
+
+Rappture::Units::define /m3 -type density -metric yes
+Rappture::Units::define /m2 -type misc -metric yes
+
+Rappture::Units::define C -type temperature -metric no
+Rappture::Units::define K->C {K-273.15} {C+273.15}
+Rappture::Units::define F->C {(F-32)/1.8} {(1.8*C)+32}
+
+Rappture::Units::define eV -type energy -metric yes
+Rappture::Units::define J->eV {J/1.602177e-19} {eV*1.602177e-19}
+
+Rappture::Units::define V -type voltage -metric yes
+
+Rappture::Units::define s -type seconds -metric yes
+# can't use min becase tcl thinks its milli-in's
+# Rappture::Units::define min->s {min*60.00} {s/60.00}
+Rappture::Units::define h->s {h*3600.00} {s/3600.00}
+Rappture::Units::define d->s {d*86400.00} {s/86400.00}
+
+# can't put mol's in because tcl thinks its milli-ol's
+# Rappture::Units::define mol -type misc -metric yes
+Rappture::Units::define Hz -type misc -metric yes
+Rappture::Units::define Bq -type misc -metric yes
+
+Rappture::Units::define deg -type angle -metric no
+Rappture::Units::define rad -type angle -metric no
+Rappture::Units::define deg->rad {deg*(3.1415926535897931/180.00)} {rad*(180.00/3.1415926535897931)}
Index: /tags/1.6.0/lang/tcl/scripts/validations/enable.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/validations/enable.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/validations/enable.tcl	(revision 6168)
@@ -0,0 +1,17 @@
+# ----------------------------------------------------------------------
+#  VALIDATION: enable
+#
+#  Handles the type:validate=enable setting for an object attribute.
+#  Checks the given string to see if it is a valid Rappture <enable>
+#  settings.  Returns an error if something is wrong.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+proc validate_enable {str} {
+    # punt for now
+    return "ok"
+}
Index: /tags/1.6.0/lang/tcl/scripts/validations/imformat.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/validations/imformat.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/validations/imformat.tcl	(revision 6168)
@@ -0,0 +1,21 @@
+# ----------------------------------------------------------------------
+#  VALIDATION: imformat
+#
+#  Handles the string:validate=imformat setting for an object attribute.
+#  Checks the given string to see if it is one of the allowed image
+#  format strings:  gif, jpeg, png, etc.  Returns an error if something
+#  is wrong.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+proc validate_imformat {str} {
+    set valid {bmp gif ico jpeg pcx png pgm ppm ps pdf sgi sun tga tiff xbm xpm}
+    if {$str ne "" && [lsearch $valid $str] < 0} {
+        error "bad format \"$str\": should be one of [join $valid {, }]"
+    }
+    return "ok"
+}
Index: /tags/1.6.0/lang/tcl/scripts/validations/imresize.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/validations/imresize.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/validations/imresize.tcl	(revision 6168)
@@ -0,0 +1,24 @@
+# ----------------------------------------------------------------------
+#  VALIDATION: imresize
+#
+#  Handles the string:validate=imresize setting for an object attribute.
+#  Checks the given string to see if it is one of the allowed resize
+#  settings:  auto, none, width=XX, height=XX.  Returns an error if
+#  something is wrong.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+proc validate_imresize {str} {
+    switch -regexp -- $str {
+        ^$ - ^auto$ - ^none$ - ^width=[0-9]+$ - ^height=[0-9]+$ {
+            return "ok"
+        }
+        default {
+            error "bad size \"$str\": should be auto, none, width=WW, or height=HH"
+        }
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/validations/int.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/validations/int.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/validations/int.tcl	(revision 6168)
@@ -0,0 +1,18 @@
+# ----------------------------------------------------------------------
+#  VALIDATION: int
+#
+#  Handles the string:validate=int setting for an object attribute.
+#  Checks the given string to see if it is an integer value.  Returns
+#  an error if something is wrong.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+proc validate_int {str} {
+    if {![string is integer $str]} {
+        error "bad value \"$str\": should be an integer"
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/validations/number.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/validations/number.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/validations/number.tcl	(revision 6168)
@@ -0,0 +1,40 @@
+# ----------------------------------------------------------------------
+#  VALIDATION: number
+#
+#  Handles the type:validate=number setting for an object attribute.
+#  Checks the given string to see if it is a valid Rappture "number"
+#  value.  Returns an error if something is wrong.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+proc validate_number_parse {str numvar unitsvar} {
+    upvar $numvar num
+    upvar $unitsvar units
+    if {![regexp {^([-+]?(?:[0-9]+\.|\.)?[0-9]+(?:[eE][-+]?[0-9]+)?)( *[a-zA-Z/]?[a-zA-Z0-9/ \t]*)$} $str match num rest]} {
+        return 0
+    }
+    regsub -all {[ \t]+} $rest "" rest  ;# strip out spaces from units
+    if {$rest eq ""} {
+        set units ""
+    } elseif {![regexp {^(/?[a-zA-Z]+[0-9]*)*$} $rest units]} {
+        return 0  ;# units failed to match
+    }
+    return 1;
+}
+
+proc validate_number {str} {
+    if {"" == $str} {
+        # empty string is okay
+        return "ok"
+    } elseif {[validate_number_parse $str num units]} {
+        if {"" != $units && "" == [Rappture::Units::description $units]} {
+            error "units \"$units\" not recognized"
+        }
+        return "ok"
+    }
+    error "should be a real number with units"
+}
Index: /tags/1.6.0/lang/tcl/scripts/validations/size.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/validations/size.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/validations/size.tcl	(revision 6168)
@@ -0,0 +1,23 @@
+# ----------------------------------------------------------------------
+#  VALIDATION: size
+#
+#  Handles the string:validate=size setting for an object attribute.
+#  Checks the given string to see if it is a valid size for a <string>
+#  object.  Returns an error if something is wrong.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+proc validate_size {str} {
+    switch -regexp -- $str {
+        ^$ - ^[0-9]+$ - ^[0-9]+x[0-9]+$ - binary {
+            return "ok"
+        }
+        default {
+            error "bad size \"$str\": should be WW or WWxHH or binary"
+        }
+    }
+}
Index: /tags/1.6.0/lang/tcl/scripts/xauth.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/scripts/xauth.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/scripts/xauth.tcl	(revision 6168)
@@ -0,0 +1,704 @@
+# -*- mode: tcl; indent-tabs-mode: nil -*- 
+# ----------------------------------------------------------------------
+#  COMPONENT: XAuth - authentication for Twitter/OAuth services
+#
+#  This library is used for XAuth authenication with HUBzero services.
+#  Takes a username/password and obtains a token for other web services
+#  calls.
+#
+#    XAuth::credentials load ~/.xauth
+#    set clientToken [XAuth::credentials get nanoHUB.org -token]
+#    set clientSecret [XAuth::credentials get nanoHUB.org -secret]
+#
+#    XAuth::init $site $clientToken $clientSecret -user $username $password
+#    XAuth::call $site $method $params
+#
+#  Check out this awesome description of the whole XAuth process:
+#    http://weblog.bluedonkey.org/?p=959
+#    https://dev.twitter.com/docs/oauth/xauth
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2015  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+package require http
+package require base64
+package require sha1
+package require tls
+http::register https 443 [list ::tls::socket -tls1 1]
+
+namespace eval XAuth {
+    # stores token/secret info from a file containing site data
+    variable sites
+
+    # parser for managing sites files
+    variable parser [interp create -safe]
+
+    foreach cmd [$parser eval {info commands}] {
+        $parser hide $cmd
+    }
+    $parser alias site ::XAuth::credentials add
+    $parser invokehidden proc unknown {args} {
+        error "bad command \"$args\": should be sites"
+    }
+    $parser expose error
+
+    # maps a web services url prefix to client token/secret
+    variable clients
+
+    # maps a web services url prefix to an authenticated session token
+    variable tokens
+
+    # list of http redirects (so we can detect infinite loops)
+    variable redirects ""
+}
+
+# used to store values from JSON objects
+itcl::class JsonObject {
+    constructor {{parent ""}} {
+        if {$parent ne ""} {
+            if {[catch {$parent is JsonObject} valid] || !$valid} {
+                error "bad value \"$parent\": should be JsonObject"
+            }
+            $parent attach $this
+        }
+    }
+
+    destructor {
+        foreach obj $_children {
+            itcl::delete object $obj
+        }
+    }
+
+    method attach {args} {
+        foreach obj $args {
+            if {[catch {$obj is JsonObject} valid] || !$valid} {
+                error "bad value \"$obj\": should be JsonObject"
+            }
+            lappend _children $obj
+        }
+    }
+
+    method assign {args} {
+        switch -- [llength $args] {
+            1 {
+                catch {unset _dict}
+                set _value [lindex $args 0]
+                set _type "scalar"
+                if {[catch {$_value is JsonObject} valid] == 0 && $valid} {
+                    attach $_value
+                }
+            }
+            2 {
+                set key [lindex $args 0]
+                set value [lindex $args 1]
+                if {[catch {$value is JsonObject} valid] == 0 && $valid} {
+                    attach $value
+                }
+
+                if {$key eq "-element"} {
+                    catch {unset _dict}
+                    lappend _value $value
+                    set _type "vector"
+                } else {
+                    catch {unset _value}
+                    set _dict($key) $value
+                    set _type "struct"
+                }
+            }
+            default {
+                error "wrong # args: should be \"assign value\" or \"assign -element value\" or \"assign key value\""
+            }
+        }
+    }
+
+    method get {{what ""}} {
+        switch -- $_type {
+            scalar {
+                if {$what ne "" && $what ne "-scalar"} {
+                    error "type mismatch -- requested scalar but got $_type"
+                }
+                return $_value
+            }
+            vector {
+                if {$what ne "" && $what ne "-vector"} {
+                    error "type mismatch -- requested vector but got $_type"
+                }
+                return $_value
+            }
+            struct {
+                if {$what eq ""} {
+                    return [array names _dict]
+                } elseif {[info exists _dict($what)]} {
+                    return $_dict($what)
+                } else {
+                    return ""
+                }
+            }
+            default {
+                error "internal error: bad type \"$_type\""
+            }
+        }
+    }
+
+    method type {} {
+        return $_type
+    }
+
+    protected variable _children ""
+    protected variable _type "scalar"
+    protected variable _value ""
+    protected variable _dict
+
+    # decode JSON -- returns a JsonObject
+    proc decode {str {leftoverVar ""}} {
+        # look for opening curly brace (7B)
+        if {[regexp -indices {^[[:space:]]*\x7B} $str match]} {
+            set obj [JsonObject ::#auto]
+            set str [substr $str $match -( >]
+            while {1} {
+                # should set "string":value
+                if {[regexp -indices {^[[:space:]]*"(([^\\\"]|\\.)*)"[[:space:]]*:} $str match key]} {
+                    set key [substr $str $key | |]
+                    set str [substr $str $match -( >]
+                    set val [decode $str str]
+                    $obj assign $key $val
+                    if {[regexp -indices {^[[:space:]]*,} $str match]} {
+                        # found comma -- keep going
+                        set str [substr $str $match -( >]
+                    } elseif {[regexp -indices {^[[:space:]]*\x7D} $str match]} {
+                        # found closing curly brace (7D)
+                        if {$leftoverVar ne ""} {
+                            upvar $leftoverVar rest
+                            set rest [substr $str $match -( >]
+                        }
+                        return $obj
+                    } else {
+                        error "syntax error -- expected , or \x7D but got \"[string range $str 0 20]...\""
+                    }
+                } else {
+                    error "syntax error -- expected \"string\":value but got \"[string range $str 0 20]...\""
+                }
+            }
+        } elseif {[regexp -indices {^[[:space:]]*\x5B} $str match]} {
+            # found opening square bracket (5B) -- start of array...
+            set obj [JsonObject ::#auto]
+            set str [substr $str $match -( >]
+
+            if {[regexp -indices {^[[:space:]]*\x5D} $str match]} {
+                # empty list
+                if {$leftoverVar ne ""} {
+                    upvar $leftoverVar rest
+                    set rest [substr $str $match -( >]
+                }
+                return $obj
+            }
+            while {1} {
+                # decode the element and add to the array
+                set val [decode $str str]
+                $obj assign -element $val
+
+                if {[regexp -indices {^[[:space:]]*,} $str match]} {
+                    # found comma -- keeping going
+                    set str [substr $str $match -( >]
+                } elseif {[regexp -indices {^[[:space:]]*\x5D} $str match]} {
+                    # found closing square bracket (5D)
+                    if {$leftoverVar ne ""} {
+                        upvar $leftoverVar rest
+                        set rest [substr $str $match -( >]
+                    }
+                    return $obj
+                } else {
+                    error "syntax error -- expected , or \x7D but got \"[string range $str 0 20]...\""
+                }
+            }
+        } elseif {[regexp -indices {^[[:space:]]*"(([^\\\"]|\\.)*)"} $str match inner]} {
+            # found quoted string value
+            set val [substr $str $inner | |]
+
+            # convert backslashes and newlines within string
+            regsub -all {\\r\\n} $val "\n" val
+            regsub -all {\\n} $val "\n" val
+            regsub -all {\\(.)} $val {\1} val
+
+            if {$leftoverVar ne ""} {
+                upvar $leftoverVar rest
+                set rest [substr $str $match -( >]
+            }
+            return $val
+        } elseif {[regexp -indices {^[[:space:]]*([-+]?[0-9]+(\.[0-9]*)?([eEdE][-+]?[0-9]+)?)([^0-9eEdD.]|$)} $str match inner]} {
+            # found number value
+            set val [substr $str $inner | |]
+            if {$leftoverVar ne ""} {
+                upvar $leftoverVar rest
+                set rest [substr $str $inner -( >]
+            }
+            return $val
+        } elseif {[regexp -indices {^[[:space:]]*(true|false)} $str match inner]} {
+            # found true/false value
+            set val [substr $str $inner | |]
+            if {$leftoverVar ne ""} {
+                upvar $leftoverVar rest
+                set rest [substr $str $match -( >]
+            }
+            return $val
+        } elseif {[regexp -indices {^[[:space:]]*null} $str match]} {
+            if {$leftoverVar ne ""} {
+                upvar $leftoverVar rest
+                set rest [substr $str $match -( >]
+            }
+            return ""
+        } else {
+            error "syntax error at: [string range $str 0 20]..."
+        }
+    }
+
+    # substr -- given a string an indices from regexp, return a substring
+    #  | | ...... return exactly from one index to another
+    #  (- -) .... return stuff just inside the two indices
+    #  -( > ..... return everything after the last index
+    #  0 )- ..... return everything until before the first index
+    proc substr {str match lim0 lim1} {
+        foreach {m0 m1} $match break
+        switch -- $lim0 {
+            0  { set s0 0 }
+            (- { set s0 [expr {$m0+1}] }
+            -( { set s0 [expr {$m1+1}] }
+            -) { set s0 [expr {$m1-1}] }
+            |  { set s0 $m0 }
+            default { error "don't understand limit \"$lim0\"" }
+        }
+        switch -- $lim1 {
+            >  { set s1 end }
+            -) { set s1 [expr {$m1-1}] }
+            )- { set s0 [expr {$m0-1}] }
+            (- { set s1 [expr {$m0+1}] }
+            -( { set s1 [expr {$m1+1}] }
+            |  { set s1 $m1 }
+            default { error "don't understand limit \"$lim1\"" }
+        }
+        return [string range $str $s0 $s1]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: XAuth::init <site> <clientToken> <clientSecret> -user <u> <p>
+# USAGE: XAuth::init <site> <clientToken> <clientSecret> -session <n> <t>
+#
+# Should be called to initialize this library.  Can be initialized
+# one of two ways:
+#
+#   -user <u> <p> ...... sends username <u> and password <p>
+#   -session <n> <t> ... sends tool session number <n> and token <t>
+#
+# Sends the credentials to the <site> for authentication.  The client
+# token and secret are registered to identify the application.
+# If successful, this call stores an authenticated session token in
+# the tokens array for the <site> URL.  Subsequent calls to XAuth::call
+# use this token to identify the user.
+# ----------------------------------------------------------------------
+proc XAuth::init {site clientToken clientSecret args} {
+    variable clients
+    variable tokens
+
+    set option [lindex $args 0]
+    switch -- $option {
+        -user {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"-user name password\""
+            }
+            set uname [lindex $args 1]
+            set passw [lindex $args 2]
+        }
+        -session {
+            if {[llength $args] != 3} {
+                error "wrong # args: should be \"-session number token\""
+            }
+            set snum [lindex $args 1]
+            set stok [lindex $args 2]
+
+            # store session info for later -- no need for oauth stuff
+            set tokens($site) [list session $snum $stok]
+            set clients($site) [list $clientToken $clientSecret]
+            return
+        }
+        default {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"XAuth::init site token secret ?-option? arg arg\""
+            }
+            set uname [lindex $args 0]
+            set passw [lindex $args 1]
+        }
+    }
+
+    if {![regexp {^https://} $site]} {
+        error "bad site URL \"$site\": should be https://..."
+    }
+    set site [string trimright $site /]
+
+    if {![regexp {^[0-9a-zA-Z]+$} $clientToken]} {
+        error "bad client token \"$clientToken\": should be alphanumeric"
+    }
+
+    set url $site/oauth/access_token
+    set nonce [XAuth::nonce]
+    set tstamp [clock seconds]
+
+
+    # Twitter has this awesome test page:
+    # https://dev.twitter.com/docs/oauth/xauth
+    #
+    # Use these values...
+    #   set url https://api.twitter.com/oauth/access_token
+    #   set clientToken JvyS7DO2qd6NNTsXJ4E7zA
+    #   set clientSecret 9z6157pUbOBqtbm0A0q4r29Y2EYzIHlUwbF4Cl9c
+    #   set nonce 6AN2dKRzxyGhmIXUKSmp1JcB4pckM8rD3frKMTmVAo
+    #   set tstamp 1284565601
+    #   set passw twitter-xauth
+    #   set uname oauth_test_exec
+    #
+    # and the signature should be: 1L1oXQmawZAkQ47FHLwcOV%2Bkjwc%3D
+
+    # BE CAREFUL -- put these parameters in exactly this order
+    set query [http::formatQuery \
+        oauth_consumer_key $clientToken \
+        oauth_nonce $nonce \
+        oauth_signature_method "HMAC-SHA1" \
+        oauth_timestamp $tstamp \
+        oauth_version "1.0" \
+        x_auth_mode "client_auth" \
+        x_auth_password $passw \
+        x_auth_username $uname \
+    ]
+
+    set base "POST&[urlencode $url]&[urlencode $query]"
+    set key "$clientSecret&"
+    set sig [urlencode [base64::encode [sha1::hmac -bin -key $key $base]]]
+
+    # build the header and send the request
+    set auth [format "OAuth oauth_consumer_key=\"%s\", oauth_nonce=\"%s\", oauth_signature_method=\"HMAC-SHA1\", oauth_signature=\"%s\", oauth_timestamp=\"%s\", oauth_version=\"1.0\"" $clientToken $nonce $sig $tstamp]
+
+    set result [XAuth::fetch $url -headers [list Authorization $auth] -query $query]
+
+    # pick apart the result and extra: oauth_token, oauth_token_secret
+    foreach param [split $result &] {
+        if {[regexp {^(oauth[^=]+)=(.+)} $param match name val]} {
+            set got($name) $val
+        }
+    }
+    if {![info exists got(oauth_token)] || ![info exists got(oauth_token_secret)]} {
+        error "authentication failed: $result"
+    }
+
+    # success! store the session token for later
+    set tokens($site) [list oauth $got(oauth_token) $got(oauth_token_secret)]
+    set clients($site) [list $clientToken $clientSecret]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: XAuth::call <site> <method> ?<params>?
+#
+# Called after XAuth::init for each web service request.  Calls the
+# given <site>/<method> with the specified <params>.  Returns the
+# xml result string.
+# ----------------------------------------------------------------------
+proc XAuth::call {site method {params ""}} {
+    variable clients
+    variable tokens
+
+    if {![regexp {^https://} $site]} {
+        error "bad site URL \"$site\": should be https://..."
+    }
+    set site [string trimright $site /]
+    set method [string trimleft $method /]
+
+    if {![info exists tokens($site)]} {
+        error "must call XAuth::init for $site first to authenticate"
+    }
+    foreach {clientToken clientSecret} $clients($site) break
+    foreach {scheme userToken userSecret} $tokens($site) break
+
+    set url $site/$method
+
+    switch -- $scheme {
+        oauth {
+            set nonce [XAuth::nonce]
+            set tstamp [clock seconds]
+
+            # BE CAREFUL -- put all query parameters in alphabetical order
+            array set qparams [list \
+                oauth_consumer_key $clientToken \
+                oauth_nonce $nonce \
+                oauth_signature_method "HMAC-SHA1" \
+                oauth_timestamp $tstamp \
+                oauth_token $userToken \
+                oauth_version "1.0" \
+                x_auth_mode "client_auth" \
+            ]
+            array set qparams $params
+
+            set query ""
+            foreach key [lsort [array names qparams]] {
+                lappend query $key $qparams($key)
+            }
+            set query [eval http::formatQuery $query]
+
+            set base "POST&[urlencode $url]&[urlencode $query]"
+            set key "$clientSecret&$userSecret"
+            set sig [urlencode [base64::encode [sha1::hmac -bin -key $key $base]]]
+
+            # build the header and send the request
+            set auth [format "OAuth oauth_consumer_key=\"%s\", oauth_token=\"%s\", oauth_nonce=\"%s\", oauth_signature_method=\"HMAC-SHA1\", oauth_signature=\"%s\", oauth_timestamp=\"%s\", oauth_version=\"1.0\"" $clientToken $userToken $nonce $sig $tstamp]
+            set hdr [list Authorization $auth]
+        }
+        session {
+            set hdr [list sessionnum $userToken sessiontoken $userSecret]
+            set query ""
+            foreach {key val} $params {
+                lappend query $key $val
+            }
+            set query [eval http::formatQuery $query]
+        }
+        default {
+            error "internal error -- don't understand call scheme \"$scheme\""
+        }
+    }
+    return [XAuth::fetch $url -headers $hdr -query $query]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: XAuth::fetch <url> ?-headers <keyvalList>? ?-query <str>?
+#
+# Sends a GET/POST request off to the specified <url>.  If the -query
+# string is specified, then this is assumed to be an encoded list of
+# parameters and the operation is POST.  Tries a few times in case the
+# web site is busy.
+# ----------------------------------------------------------------------
+proc XAuth::fetch {url args} {
+    variable redirects
+
+    set hdr ""
+    set query ""
+    foreach {key val} $args {
+        switch -- $key {
+            -headers { set hdr $val }
+            -query   { set query $val }
+            default {
+                error "bad option \"$key\": should be -headers or -query"
+            }
+        }
+    }
+
+    # send off the request a few times
+    set ntries 5
+    while {1} {
+        if {[catch {http::geturl $url -headers $hdr -query $query -timeout 30000} token] == 0} {
+            break
+        }
+        if {[incr ntries -1] <= 0} {
+            error "web request \"$url\" failed to load: $token"
+        }
+        after 5000
+    }
+
+    # handle the response
+    upvar #0 $token state
+
+    # look for errors
+    switch -- [http::ncode $token] {
+        200 {
+            set rval [http::data $token]
+
+	    array set meta $state(meta)
+            if {[info exists meta(Transfer-Encoding)]
+                  && $meta(Transfer-Encoding) eq "chunked"} {
+                set rval [XAuth::unchunk $rval]
+            }
+
+            if {[info exists meta(Content-Type)]
+                  && $meta(Content-Type) eq "application/json"} {
+                set rval [JsonObject::decode $rval]
+            }
+
+            http::cleanup $token
+            set redirects ""
+            return $rval
+        }
+        301 - 302 - 303 {
+            lappend redirects $url
+            if {[llength $redirects] > 5} {
+                error "web page redirect loop for $url"
+            }
+	    array set meta $state(meta)
+            if {[info exists meta(Location)]} {
+                set newurl $meta(Location)
+                if {![regexp {^https?://} $newurl] && [regexp -nocase -indices {^https?://[^/]+} $url match]} {
+                    if {[string index $newurl 0] != "/"} {
+                        set newurl "/$newurl"
+                    }
+                    foreach {s0 s1} $match break
+                    set newurl "[string range $url $s0 $s1]$newurl"
+                }
+                return [fetch $newurl -headers $hdr -query $query]
+            }
+            return ""
+        }
+        default {
+            set status [http::code $token]
+            http::cleanup $token
+            set redirects ""
+            error "web request \"$url\" failed to load: $status"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: XAuth::urlencode <str>
+#
+# Encodes a string according to standard HTTP encoding conventions.
+# Punctuation characters are converted to their %XX equivalent.
+# Returns a properly encoded string.
+# ----------------------------------------------------------------------
+proc XAuth::urlencode {str} {
+    set str [http::formatQuery $str]
+    regsub -all {%[a-fA-F0-9][a-fA-F0-9]} $str {[string toupper \0]} str
+    return [subst $str]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: XAuth::nonce
+#
+# Random nonce (number used once) for the OAuth protocol.  Each nonce
+# should be unique when interpreted in conjunction with the timestamp.
+# Any large, random number should work here.
+# ----------------------------------------------------------------------
+proc XAuth::nonce {} {
+    set nonce [expr {round(rand()*1e8)}][clock clicks]
+    return [sha1::sha1 $nonce]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: XAuth::unchunk <string>
+#
+# Used internally to decode a <string> from a web server that has been
+# transferred with "chunk" encoding.  In this case, the string contains
+# a hexadecimal size, a newline, a chunk of text, another hexadecimal
+# size, a newline, another chunk of text, etc.  Returns a clean string
+# with all of the hex values removed.
+# ----------------------------------------------------------------------
+proc XAuth::unchunk {str} {
+    set rval ""
+    while {[string length $str] > 0} {
+        # get the hex string for the length
+        set nlpos [string first "\n" $str]
+        if {$nlpos < 0} {
+            append rval $str
+            break
+        }
+        set hex [string range $str 0 [expr {$nlpos-1}]]
+
+        if {[scan $hex "%x" len] == 1} {
+            # get the next chunk with that length
+            set from [expr {$nlpos+1}]
+            set to [expr {$from+$len}]
+            append rval [string range $str $from [expr {$to-1}]]
+            set nl [string index $str $to]
+
+            if {$nl eq "\r"} {
+                incr to
+                set nl [string index $str $to]
+            }
+            if {$nl ne "\n" && $nl ne ""} {
+                error "garbled text in chunk-encoded string -- missing newline"
+            }
+            set str [string range $str [expr {$to+1}] end]
+        } else {
+            error "garbled text in chunk-encoded string -- missing hex value"
+        }
+    }
+    return $rval
+}
+
+# ----------------------------------------------------------------------
+# USAGE: XAuth::credentials load ?<fileName>?
+# USAGE: XAuth::credentials get <site> ?<what>?
+#
+# Clients use this to load information about the client token/secret
+# from a file and feed it along to XAuth::init.  The "load" operation
+# loads information from a file in the user's home directory.  If not
+# specified, the name "~/.xauth" is assumed.  This file contains a
+# series of lines as follows:
+#
+#   site nanoHUB.org -token abLJdjfks -secret kd18293ksjshdkdjejd
+#   site HUBzero.org -token adckdsjeL -secret dkejdklsje1wlsjd2je
+#   ...
+#
+# The "get" call returns information for the specified <site> name.
+# The optional <what> parameter can be used to request -token or
+# -secret.  Otherwise, it returns a list "-token xxx -secret yyy"
+# ----------------------------------------------------------------------
+proc XAuth::credentials {option args} {
+    variable sites
+    variable parser
+
+    switch -- $option {
+        load {
+            if {[llength $args] == 1} {
+                set fname [lindex $args 0]
+            } elseif {[llength $args] == 0} {
+                if {[file exists ~/.xauth]} {
+                    set fname "~/.xauth"
+                } else {
+                    set fname ""
+                }
+            } else {
+                error "wrong # args: should be \"credentials load ?file?\""
+            }
+
+            if {$fname ne ""} {
+                if {![file readable $fname]} {
+                    error "file \"$fname\" not found"
+                }
+                set fid [open $fname r]
+                set info [read $fid]
+                close $fid
+
+                if {[catch {$parser eval $info} result]} {
+                    error "error in sites file \"$fname\": $result"
+                }
+            }
+        }
+        add {
+            set name [string tolower [lindex $args 0]]
+            foreach {key val} [lrange $args 1 end] {
+                if {$key ne "-token" && $key ne "-secret"} {
+                    error "bad option \"$key\": should be -token or -secret"
+                }
+            }
+            set sites($name) [lrange $args 1 end]
+        }
+        get {
+            set name [string tolower [lindex $args 0]]
+            set what [lindex $args 1]
+            if {$what ne "" && $what ne "-token" && $what ne "-secret"} {
+                error "bad value \"$what\": should be -token or -secret"
+            }
+
+            if {[info exists sites($name)]} {
+                if {$what eq ""} {
+                    return $sites($name)
+                }
+                array set data $sites($name)
+                return $data($what)
+            }
+            return ""
+        }
+        default {
+            error "bad option \"$option\": should be load or get"
+        }
+    }
+}
Index: /tags/1.6.0/lang/tcl/src/Makefile.in
===================================================================
--- /tags/1.6.0/lang/tcl/src/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/Makefile.in	(revision 6168)
@@ -0,0 +1,108 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+SHELL           = @SHELL@
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CXX             = @CXX@
+CC              = @CC@
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@ -Wall
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD        = @STLIB_LD@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+CFLAGS          = @CFLAGS@ -fPIC
+TCL_VERSION     = @TCL_VERSION@
+TCL_LIB_SPEC    = @TCL_LIB_SPEC@
+HAVE_FFMPEG     = @HAVE_FFMPEG_LIBS@
+HAVE_NCURSES    = @HAVE_LIBNCURSES@
+
+CC_SWITCHES     = $(CFLAGS) $(CFLAGS_DEBUG) $(INCLUDES) $(DEFINES)
+CXX_SWITCHES    = $(CFLAGS) $(CFLAGS_DEBUG) $(INCLUDES) $(DEFINES)
+
+INCLUDES    = -I$(srcdir) \
+  -I../../../src/core \
+  -I$(srcdir)/../../../src/core \
+  -I$(srcdir)/../../../src/objects \
+  -I$(includedir)
+RAPPTURE_VERSION = @PACKAGE_VERSION@
+SVN_VERSION     := $(shell readlink -e $(srcdir) | xargs svnversion | sed 's/Unversioned directory/unknown/')
+DEFINES         = -DSVN_VERSION=\"$(SVN_VERSION)\" \
+                  -DRAPPTURE_VERSION=\"$(RAPPTURE_VERSION)\"
+
+RANLIB          = @RANLIB@
+AR              = ar
+VPATH           = $(srcdir)
+RM              = rm -f
+
+CDEBUGFLAGS     = -g -Wall
+
+LIBS = \
+        -L../../../src/core -lrappture \
+        $(TCL_LIB_SPEC) -lncurses -lexpat -lz -lm -lstdc++
+
+OBJS = \
+        Rappture_Init.o \
+        RpCurses.o \
+        RpDaemon.o \
+        RpEncodeTclInterface.o \
+        RpOp.o \
+        RpRlimit.o  \
+        RpRusage.o \
+        RpSignal.o  \
+        RpSlice.o  \
+        RpSysinfo.o  \
+        Switch.o \
+        RpUnitsTclInterface.o \
+        RpUtilsTclInterface.o
+
+ifeq ($(WIN32),"")
+   OBJS += RpWinResource.o
+endif
+
+ifeq ($(HAVE_LIBCURSES),yes)
+   OBJS += RpCurses.o
+   LIBS += -lncurses 
+endif
+
+# Not using     RpLibraryTclInterface.o \
+
+name        = Rappture$(RAPPTURE_VERSION)
+libname     = $(name)
+lib         = $(libname)$(SHLIB_SUFFIX)
+destdir     = $(libdir)/$(name)
+
+all: $(lib)
+
+$(lib): $(OBJS)
+	$(SHLIB_LD) $(SHLIB_LDFLAGS) -o $@ $(OBJS) \
+		$(LIB_SEARCH_DIRS) $(LIBS)
+
+install: $(lib)
+	$(MKDIR_P) -m 0755 $(destdir)
+	$(INSTALL) -m 0555 $(lib) $(destdir)
+
+.cc.o:
+	$(CXX) $(CXX_SWITCHES) -c $?
+.c.o:
+	$(CC) $(CC_SWITCHES) -c $?
+
+clean:
+	$(RM) $(OBJS) $(lib)
+
+distclean: clean
+	$(RM) Makefile *~
+
Index: /tags/1.6.0/lang/tcl/src/Rappture_Init.c
===================================================================
--- /tags/1.6.0/lang/tcl/src/Rappture_Init.c	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/Rappture_Init.c	(revision 6168)
@@ -0,0 +1,92 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture_Init
+ *
+ *  This file contains the function that initializes all of the various
+ *  extensions in this package.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <tcl.h>
+#include "config.h"
+
+#ifdef BUILD_rappture
+#undef TCL_STORAGE_CLASS
+#define TCL_STORAGE_CLASS DLLEXPORT
+#endif
+
+extern Tcl_AppInitProc Rappture_Init;
+extern Tcl_AppInitProc RpRlimit_Init;
+extern Tcl_AppInitProc RpRusage_Init;
+extern Tcl_AppInitProc RpSignal_Init;
+extern Tcl_AppInitProc RpSlice_Init;
+extern Tcl_AppInitProc RpSysinfo_Init;
+extern Tcl_AppInitProc RpDaemon_Init;
+extern Tcl_AppInitProc RpCurses_Init;
+
+#ifdef notdef
+extern Tcl_AppInitProc RpLibrary_Init;
+#endif
+extern Tcl_AppInitProc RpUnits_Init;
+extern Tcl_AppInitProc RpEncoding_Init;
+extern Tcl_AppInitProc RpUtils_Init;
+
+#ifdef BUILD_Rappture
+__declspec( dllexport )
+#endif
+int
+Rappture_Init( Tcl_Interp * interp)
+{
+#ifdef _WIN32
+    rpWinInitJob();
+#endif
+    if (Tcl_InitStubs(interp, "8.4", 0) == NULL) {
+        return TCL_ERROR;
+    }
+    if (Tcl_PkgProvide(interp, "Rappture", RAPPTURE_VERSION) != TCL_OK) {
+        return TCL_ERROR;
+    }
+#ifdef notdef
+    if (RpLibrary_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+#endif
+    if (RpUnits_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpEncoding_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpUtils_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpRlimit_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpRusage_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpSignal_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpSlice_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpSysinfo_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpDaemon_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    if (RpCurses_Init(interp) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
Index: /tags/1.6.0/lang/tcl/src/RpCurses.c
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpCurses.c	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpCurses.c	(revision 6168)
@@ -0,0 +1,303 @@
+/* 
+ * ----------------------------------------------------------------------
+ *  RpCurses - interface to the ncurses library for Rappture apps
+ *
+ *  Provides access to curses functions, so that tty-based programs
+ *  can write out status info to a screen in the manner of "top" or
+ *  "sftp".
+ *
+ *  if {[Rappture::curses isatty]} {
+ *    Rappture::curses start
+ *    Rappture::curses puts ?-at y x? ?-bold? ?-clear? ?-dim? ?-reverse? <str>
+ *    Rappture::curses refresh
+ *    Rappture::curses stop
+ *  }
+ *  
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "tcl.h"
+#include <string.h>
+#include <ncurses.h>
+#include <unistd.h>
+
+static CONST char *commandNames[] = {
+    "beep", "clear", "flash", "getch",
+    "isatty", "puts", "refresh", "screensize",
+    "start", "stop", (char*)NULL
+};
+
+enum command {
+    COMMAND_BEEP, COMMAND_CLEAR, COMMAND_FLASH, COMMAND_GETCH,
+    COMMAND_ISATTY, COMMAND_PUTS, COMMAND_REFRESH, COMMAND_SCREENSIZE,
+    COMMAND_START, COMMAND_STOP
+};
+
+/*
+ * Forward declarations
+ */
+static int		CursesObjCmd _ANSI_ARGS_((ClientData clientData,
+			    Tcl_Interp *interp, int objc,
+			    Tcl_Obj *CONST objv[]));
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpCurses_Init --
+ *
+ *  Invoked when the Rappture GUI library is being initialized
+ *  to install the "curses" command into the interpreter.
+ *
+ *  Returns TCL_OK if successful, or TCL_ERROR (along with an error
+ *  message in the interp) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+int
+RpCurses_Init(interp)
+    Tcl_Interp *interp;         /* interpreter being initialized */
+{
+    /* install the command */
+    Tcl_CreateObjCommand(interp, "Rappture::curses", CursesObjCmd,
+        NULL, NULL);
+
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * CursesObjCmd()
+ *
+ * Called whenever the "curses" command is invoked to access ncurses
+ * library functions.
+ * ----------------------------------------------------------------------
+ */
+static int
+CursesObjCmd(clientData, interp, objc, objv)
+    ClientData clientData;        /* not used */
+    Tcl_Interp *interp;           /* current interpreter */
+    int objc;                     /* number of command arguments */
+    Tcl_Obj *CONST objv[];        /* command argument objects */
+{
+    int result = TCL_OK;
+    int pos, cmdToken;
+    char *opt;
+    
+    if (objc < 2) {
+        Tcl_WrongNumArgs(interp, 1, objv, "option ?arg arg ...?");
+        return TCL_ERROR;
+    }
+
+    /*
+     * Look up the command option and map it to an enumerated value.
+     */
+    result = Tcl_GetIndexFromObj(interp, objv[1], commandNames,
+            "option", 0, &cmdToken);
+
+    if (result != TCL_OK) {
+        return result;
+    }
+
+    switch (cmdToken) {
+        case COMMAND_PUTS: {
+            int flags = 0;  /* attribute flags -- bold, dim, reverse, etc */
+            int clear = 0;  /* non-zero => clear to EOL before printing */
+            int y, x;
+
+            pos = 2;
+            while (pos < objc) {
+                opt = Tcl_GetStringFromObj(objv[pos], (int*)NULL);
+                if (*opt != '-') {
+                    break;
+                }
+                else if (strcmp(opt,"-at") == 0) {
+                    if (objc-pos < 2) {
+                        Tcl_WrongNumArgs(interp, 2, objv, "-at y x string");
+                        return TCL_ERROR;
+                    }
+                    if (Tcl_GetIntFromObj(interp, objv[pos+1], &y) != TCL_OK) {
+                        return TCL_ERROR;
+                    }
+                    if (Tcl_GetIntFromObj(interp, objv[pos+2], &x) != TCL_OK) {
+                        return TCL_ERROR;
+                    }
+                    move(y,x);
+                    pos += 3;
+                }
+                else if (strcmp(opt,"-bold") == 0) {
+                    flags |= A_BOLD;
+                    pos++;
+                }
+                else if (strcmp(opt,"-dim") == 0) {
+                    flags |= A_DIM;
+                    pos++;
+                }
+                else if (strcmp(opt,"-reverse") == 0) {
+                    flags |= A_REVERSE;
+                    pos++;
+                }
+                else if (strcmp(opt,"-underline") == 0) {
+                    flags |= A_UNDERLINE;
+                    pos++;
+                }
+                else if (strcmp(opt,"-clear") == 0) {
+                    clear = 1;
+                    pos++;
+                }
+                else if (strcmp(opt,"--") == 0) {
+                    pos++;
+                    break;
+                }
+                else {
+                    Tcl_AppendResult(interp, "bad option \"", opt,
+                        "\": should be -at, -bold, -clear, -dim, -reverse, -underline", (char*)NULL);
+                    return TCL_ERROR;
+                }
+            }
+            if (pos >= objc) {
+                Tcl_WrongNumArgs(interp, 2, objv, "?-at y x? ?-bold? ?-clear? ?-dim? ?-reverse? ?-underline? string");
+                return TCL_ERROR;
+            }
+
+            if (clear) clrtoeol();
+            if (flags != 0) attron(flags);
+            printw(Tcl_GetStringFromObj(objv[pos],(int*)NULL));
+            if (flags != 0) attroff(flags);
+            break;
+        }
+
+        case COMMAND_GETCH: {
+            int c;
+            char *opt, str[10];
+            int tdelay = 100;  /* time delay for blocking in ms */
+
+            pos = 2;
+            while (pos < objc) {
+                opt = Tcl_GetStringFromObj(objv[pos], (int*)NULL);
+                if (*opt != '-') {
+                    break;
+                }
+                else if (strcmp(opt,"-wait") == 0) {
+                    if (objc-pos < 1) {
+                        Tcl_WrongNumArgs(interp, 2, objv, "-wait ms");
+                        return TCL_ERROR;
+                    }
+                    opt = Tcl_GetStringFromObj(objv[pos+1], (int*)NULL);
+                    if (strcmp(opt,"forever") == 0) {
+                        tdelay = -1;
+                    }
+                    else if (Tcl_GetIntFromObj(interp, objv[pos+1], &tdelay) != TCL_OK) {
+                        return TCL_ERROR;
+                    }
+                    pos += 2;
+                }
+                else {
+                    Tcl_AppendResult(interp, "bad option \"", opt,
+                        "\": should be -wait", (char*)NULL);
+                    return TCL_ERROR;
+                }
+            }
+            if (pos < objc) {
+                Tcl_WrongNumArgs(interp, 2, objv, "?-wait ms?");
+            }
+
+            timeout(tdelay);
+            c = getch();
+
+            /*
+             * BLECH! Some systems don't use the proper termcap info, so
+             *   they don't map special keys the way they should.  Instead,
+             *   they send escape sequences for arrows, such as ^[A.
+             *   Look for this and map to the proper key value here.
+             */
+            if (c == 0x1b) {  /* escape key */
+                timeout(0);   /* look for the next key */
+                c = getch();
+                if (c == 'O' || c == '[') {
+                    c = getch();
+                    if (c == 'A') {
+                        c = KEY_UP;
+                    } else if (c == 'B') {
+                        c = KEY_DOWN;
+                    } else if (c == 'C') {
+                        c = KEY_LEFT;
+                    } else if (c == 'D') {
+                        c = KEY_RIGHT;
+                    } else {
+                        c = 0x1b;
+                    }
+                } else {
+                    c = 0x1b;
+                }
+            }
+
+            if (c == KEY_UP) {
+                Tcl_SetObjResult(interp, Tcl_NewStringObj("up",-1));
+            } else if (c == KEY_DOWN) {
+                Tcl_SetObjResult(interp, Tcl_NewStringObj("down",-1));
+            } else if (c == KEY_LEFT) {
+                Tcl_SetObjResult(interp, Tcl_NewStringObj("left",-1));
+            } else if (c == KEY_RIGHT) {
+                Tcl_SetObjResult(interp, Tcl_NewStringObj("right",-1));
+            } else if (c != ERR) {
+                str[0] = c;
+                str[1] = '\0';
+                Tcl_SetObjResult(interp, Tcl_NewStringObj(str,1));
+            }
+            break;
+        }
+
+        case COMMAND_ISATTY: {
+            Tcl_SetObjResult(interp, Tcl_NewBooleanObj(isatty(0) == 1));
+            break;
+        }
+
+        case COMMAND_CLEAR: {
+            clear();
+            break;
+        }
+
+        case COMMAND_REFRESH: {
+            refresh();
+            break;
+        }
+
+        case COMMAND_SCREENSIZE: {
+            int rows,cols;
+            Tcl_Obj *listPtr;
+
+            getmaxyx(stdscr,rows,cols);
+            listPtr = Tcl_NewListObj(0, (Tcl_Obj**)NULL);
+            Tcl_ListObjAppendElement(interp, listPtr, Tcl_NewIntObj(rows));
+            Tcl_ListObjAppendElement(interp, listPtr, Tcl_NewIntObj(cols));
+            Tcl_SetObjResult(interp, listPtr);
+            break;
+        }
+
+        case COMMAND_BEEP: {
+            beep();
+            break;
+        }
+
+        case COMMAND_FLASH: {
+            flash();
+            break;
+        }
+
+        case COMMAND_START: {
+            initscr();
+            raw();      /* can press keys without Enter to control things */
+            noecho();   /* don't see the control keypresses */
+            break;
+        }
+
+        case COMMAND_STOP: {
+            endwin();
+            break;
+        }
+    }
+    return result;
+}
Index: /tags/1.6.0/lang/tcl/src/RpDaemon.c
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpDaemon.c	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpDaemon.c	(revision 6168)
@@ -0,0 +1,104 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::daemon
+ *
+ *  Programs call this to dissociate themselves from their parents,
+ *  so they can continue to run in the background as a daemon process.
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <tcl.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <assert.h>
+
+static int RpDaemonCmd _ANSI_ARGS_((ClientData cdata,
+    Tcl_Interp *interp, int argc, CONST84 char *argv[]));
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpDaemon_Init()
+ *
+ *  Called in Rappture_Init() to initialize the commands defined
+ *  in this file.
+ * ------------------------------------------------------------------------
+ */
+int
+RpDaemon_Init(interp)
+    Tcl_Interp *interp;  /* interpreter being initialized */
+{
+    /* install the daemon command */
+    Tcl_CreateCommand(interp, "::Rappture::daemon", RpDaemonCmd,
+        (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpDaemonCmd()
+ *
+ *  Invoked whenever someone uses the "daemon" command to fork
+ *  and dissociate this process from its parent.  Handles the
+ *  following syntax:
+ *
+ *      daemon
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ *
+ *  For details, see W. Richard Stevens, "Advanced Programming in
+ *  the Unix Environment," p. 418, Addison Wesley, 1992.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpDaemonCmd(cdata, interp, argc, argv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int argc;                 /* number of command line args */
+    CONST84 char *argv[];     /* strings for command line args */
+{
+    pid_t pid;
+    int result;
+
+    pid = fork();
+    if (pid < 0) {
+        Tcl_AppendResult(interp, "can't fork daemon", (char*)NULL);
+        if (errno == EAGAIN) {
+            Tcl_AppendResult(interp, ": resource limit",
+                (char*)NULL);
+        } else if (errno == ENOMEM) {
+            Tcl_AppendResult(interp, ": out of memory",
+                (char*)NULL);
+        }
+        return TCL_ERROR;
+    }
+    else if (pid != 0) {
+        Tcl_Exit(0);  /* parent exits here */
+    }
+
+    /* child continues... */
+    setsid();    /* become session leader */
+    result = chdir("/");  /* root never goes away, so sit here */
+    assert(result == 0);
+    /* close at least this much, so pipes in exec'ing process get closed */
+    Tcl_UnregisterChannel(interp, Tcl_GetStdChannel(TCL_STDIN));
+    Tcl_UnregisterChannel(interp, Tcl_GetStdChannel(TCL_STDOUT));
+    Tcl_UnregisterChannel(interp, Tcl_GetStdChannel(TCL_STDERR));
+
+    /* make sure that these are really closed */
+    close(0);
+    close(1);
+    close(2);
+
+    Tcl_ResetResult(interp);  /* in case there was an error above */
+    return TCL_OK;
+}
Index: /tags/1.6.0/lang/tcl/src/RpEncodeTclInterface.cc
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpEncodeTclInterface.cc	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpEncodeTclInterface.cc	(revision 6168)
@@ -0,0 +1,316 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::encoding
+ *
+ *  The encoding module for rappture used to zip and b64 encode data.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <tcl.h>
+#include "RpEncode.h"
+extern "C" {
+#include "Switch.h"
+extern Tcl_AppInitProc RpEncoding_Init;
+}
+
+static Tcl_ObjCmdProc IsCmd;
+static Tcl_ObjCmdProc EncodeCmd;
+static Tcl_ObjCmdProc DecodeCmd;
+static Tcl_ObjCmdProc DebugCmd;
+
+/**********************************************************************/
+// FUNCTION: RpEncoding_Init()
+/// Initializes the Rappture Encoding module and commands defined below
+/**
+ * Called in RapptureGUI_Init() to initialize the Rappture Units module.
+ * Initialized commands include:
+ * ::Rappture::encoding::is
+ * ::Rappture::encoding::encode
+ * ::Rappture::encoding::decode
+ */
+
+int
+RpEncoding_Init(Tcl_Interp *interp)
+{
+    Tcl_CreateObjCommand(interp, "::Rappture::encoding::is",
+        IsCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    Tcl_CreateObjCommand(interp, "::Rappture::encoding::encode",
+        EncodeCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    Tcl_CreateObjCommand(interp, "::Rappture::encoding::decode",
+        DecodeCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    Tcl_CreateObjCommand(interp, "::Rappture::encoding::debug",
+	DebugCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: IsCmd()
+/// Rappture::encoding::is checks to see if given string is binary.
+/**
+ * Checks to see <string> is binary
+ * Full function call:
+ * ::Rappture::encoding::is binary <string>
+ *
+ */
+
+static int
+IsCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const *objv)
+{
+    Tcl_ResetResult(interp);
+
+    // parse through command line options
+    if (objc != 3) {
+        Tcl_AppendResult(interp,
+            "wrong # args: should be \"",
+            Tcl_GetString(objv[0])," binary|encoded <string>\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+
+    int bufLen;
+    const char *buf;
+    const char *string;
+    buf = (const char *)Tcl_GetByteArrayFromObj(objv[2], &bufLen);
+    const char *type = Tcl_GetString(objv[1]);
+    if (('b' == *type) && (strcmp(type, "binary") == 0)) {
+        string = (Rappture::encoding::isBinary(buf, bufLen)) ? "yes" : "no";
+    } else if (('e' == *type) && (strcmp(type,"encoded") == 0)) {
+        bool isEncoded;
+
+        isEncoded = (Rappture::encoding::headerFlags(buf, bufLen) != 0);
+        string = (isEncoded) ? "yes" : "no" ;
+    } else {
+        Tcl_AppendResult(interp, "bad option \"", type, 
+                "\": should be binary or encoded", (char*)NULL);
+        return TCL_ERROR;
+    }
+    Tcl_SetResult(interp, (char *)string, TCL_STATIC);
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: EncodeCmd --
+/// Rappture::encoding::encode function in Tcl, encodes provided string
+/**
+ * Encode a string by compressing it with zlib and then base64 encoding it.
+ * If binary data is provided, the data is compressed and base64 encoded.
+ * RpTclEncodingIs is used to qualify binary data.
+ *
+ * If the -as option is not set, zlib compression and base64 encoding 
+ * is performed by default
+ *
+ * Full function call:
+ * ::Rappture::encoding::encode ?-as z|b64|zb64? ?-no-header? <string>
+ */
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * AsSwitch --
+ *
+ *        Convert a string represent a node number into its integer
+ *        value.
+ *
+ * Results:
+ *        The return value is a standard Tcl result.
+ *
+ *---------------------------------------------------------------------------
+ */
+/*ARGSUSED*/
+static int
+AsSwitch(
+    ClientData clientData,        /* Not used. */
+    Tcl_Interp *interp,                /* Interpreter to send results back to */
+    const char *switchName,        /* Not used. */
+    Tcl_Obj *objPtr,                /* String representation */
+    char *record,                /* Structure record */
+    int offset,                        /* Offset to field in structure */
+    int flags)                        /* Not used. */
+{
+    int *flagsPtr = (int *)(record + offset);
+    char c;
+    char *string;
+
+    string = Tcl_GetString(objPtr);
+    c = string[0];
+    if ((c == 'b') && (strcmp(string, "b64") == 0)) {
+        *flagsPtr = RPENC_B64;
+    } else if ((c == 'z') && (strcmp(string, "zb64") == 0)) {
+        *flagsPtr = RPENC_Z  | RPENC_B64;
+    } else if ((c == 'z') && (strcmp(string, "z") == 0)) {
+        *flagsPtr = RPENC_Z;
+    } else {
+        Tcl_AppendResult(interp, "bad value \"", string, 
+                 "\": should be b64, zb64, or z", (char *)NULL);
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+static SwitchParseProc AsSwitch;
+static SwitchCustom asSwitch = {
+    AsSwitch, NULL, 0,
+};
+
+typedef struct {
+    unsigned int flags;
+} EncodeSwitches;
+
+static SwitchSpec encodeSwitches[] = 
+{
+    {SWITCH_CUSTOM, "-as", "z|b64|zb64",
+        offsetof(EncodeSwitches, flags), 0, 0, &asSwitch},
+    {SWITCH_BITMASK, "-noheader", "", 
+        offsetof(EncodeSwitches, flags), 0, RPENC_RAW},
+    {SWITCH_END}
+};
+
+static int
+EncodeCmd(ClientData clientData, Tcl_Interp *interp, int objc, 
+          Tcl_Obj *const *objv)
+{
+    if (objc < 1) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"", 
+                Tcl_GetString(objv[0]), 
+                " ?-as z|b64|zb64? ?-noheader? ?--? string\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+    EncodeSwitches switches;
+    switches.flags = 0;
+    int n;
+    n = Rp_ParseSwitches(interp, encodeSwitches, objc - 1, objv + 1, &switches,
+                         SWITCH_OBJV_PARTIAL);
+    if (n < 0) {
+        return TCL_ERROR;
+    }
+    int last;
+    last = n + 1;
+    if ((objc - last) != 1) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"", 
+                Tcl_GetString(objv[0]), 
+                " ?-as z|b64|zb64? ?-noheader? ?--? string\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+    int nBytes;
+    const char* string;
+    string = (const char*)Tcl_GetByteArrayFromObj(objv[last], &nBytes);
+    if (nBytes <= 0) {
+        return TCL_OK;                // Nothing to encode.
+    }
+    Rappture::Buffer buf(string, nBytes);
+    Rappture::Outcome status;
+    if (!Rappture::encoding::encode(status, buf, switches.flags)) {
+        Tcl_AppendResult(interp, status.remark(), "\n", status.context(), NULL);
+        return TCL_ERROR;
+    }
+    Tcl_SetByteArrayObj(Tcl_GetObjResult(interp), 
+                (const unsigned char*)buf.bytes(), buf.size());
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: DecodeCmd()
+/// Rappture::encoding::decode function in Tcl, decodes provided string
+/**
+ * Decode a string by uncompressing it with zlib and base64 decoding it.
+ * If binary data is provided, the data is base64 decoded and uncompressed.
+ * RpTclEncodingIs is used to qualify binary data.
+ *
+ * Full function call:
+ * ::Rappture::encoding::decode ?-as z|b64|zb64? <string>
+ *
+ *        I'd rather the interface be
+ *        
+ *                decode -b64 -z string 
+ */
+
+typedef struct {
+    unsigned int flags;
+} DecodeSwitches;
+
+static SwitchSpec decodeSwitches[] = 
+{
+    {SWITCH_CUSTOM, "-as", "z|b64|zb64",
+        offsetof(DecodeSwitches, flags), 0, 0, &asSwitch},
+    {SWITCH_BITMASK, "-noheader", "", 
+        offsetof(DecodeSwitches, flags), 0, RPENC_RAW},
+    {SWITCH_END}
+};
+
+static int
+DecodeCmd(ClientData clientData, Tcl_Interp *interp, int objc, 
+          Tcl_Obj *const *objv)
+{
+    if (objc < 1) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"", 
+                Tcl_GetString(objv[0]),
+                " ?-as z|b64|zb64? ?--? <string>\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    DecodeSwitches switches;
+    switches.flags = 0;
+    int n;
+    n = Rp_ParseSwitches(interp, decodeSwitches, objc - 1, objv + 1, &switches,
+	SWITCH_OBJV_PARTIAL);
+    if (n < 0) {
+        return TCL_ERROR;
+    }
+    int last;
+    last = n + 1;
+    if ((objc - last) != 1) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"", 
+                Tcl_GetString(objv[0]), 
+                " ?-as z|b64|zb64? ?--? string\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+    int numBytes;
+    const char *string;
+
+    string = Tcl_GetStringFromObj(objv[last], &numBytes);
+    if ((switches.flags == 0) && (strncmp(string, "@@RP-ENC:", 9) != 0)) {
+	/* This string doesn't have a header, so it's not encoded. 
+	 * Just return the string as-is. */
+	Tcl_SetObjResult(interp, objv[last]);
+	return TCL_OK;
+    }
+    Rappture::Buffer buf(string, numBytes); 
+    Rappture::Outcome status;
+    if (!Rappture::encoding::decode(status, buf, switches.flags)) {
+        Tcl_AppendResult(interp, status.remark(), "\n", status.context(), NULL);
+        return TCL_ERROR;
+    }
+    Tcl_SetByteArrayObj(Tcl_GetObjResult(interp), 
+			(const unsigned char *)buf.bytes(), buf.size());
+    return TCL_OK;
+}
+
+static int
+DebugCmd(ClientData clientData, Tcl_Interp *interp, int objc, 
+          Tcl_Obj *const *objv)
+{
+    if (objc < 1) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"", 
+                Tcl_GetString(objv[0]), " string\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+    int numBytes;
+    const char* string;
+    int i;
+    string = Tcl_GetStringFromObj(objv[objc-1], &numBytes);
+    fprintf(stderr, "string=%s, bytes=", string);
+    for (i = 0; i < numBytes; i++) {
+	fprintf(stderr, "%02x ", string[i]);
+    }
+    fprintf(stderr, "\n");
+    return TCL_OK;
+}
Index: /tags/1.6.0/lang/tcl/src/RpLibraryTclInterface.cc
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpLibraryTclInterface.cc	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpLibraryTclInterface.cc	(revision 6168)
@@ -0,0 +1,1028 @@
+
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::library
+ *
+ *  This is an interface to the rappture library module.
+ *  It allows you to create rappture library objects.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <tcl.h>
+#include <sstream>
+#include "RpLibrary.h"
+
+#define RAPPTURE_OBJ_TYPE "::Rappture::LibraryObj"
+
+extern "C" Tcl_AppInitProc RpLibrary_Init;
+
+#include "RpOp.h"
+
+static Tcl_ObjCmdProc LibraryCmd;
+static Tcl_ObjCmdProc LibCallCmd;
+static Tcl_ObjCmdProc ChildOp;
+static Tcl_ObjCmdProc CopyOp;
+static Tcl_ObjCmdProc DiffOp;
+static Tcl_ObjCmdProc ElemOp;
+static Tcl_ObjCmdProc GetOp;
+static Tcl_ObjCmdProc InfoOp;
+static Tcl_ObjCmdProc IsaOp;
+static Tcl_ObjCmdProc ParentOp;
+static Tcl_ObjCmdProc PutOp;
+static Tcl_ObjCmdProc RemoveOp;
+static Tcl_ObjCmdProc ResultOp;
+static Tcl_ObjCmdProc ValueOp;
+static Tcl_ObjCmdProc XmlOp;
+static Tcl_ObjCmdProc ResultCmd;
+
+static std::string rpLib2command _ANSI_ARGS_((Tcl_Interp *interp,
+    RpLibrary* newRpLibObj));
+static int rpGetLibraryFromObj _ANSI_ARGS_((Tcl_Interp *interp,
+    Tcl_Obj* obj, RpLibrary **rval));
+
+// member function, function pointer mainly used in 'element' implementation
+typedef std::string (RpLibrary::*rpMbrFxnPtr) _ANSI_ARGS_(());
+
+static Rp_OpSpec rpLibOps[] = {
+    {"children", 2, (void *)ChildOp, 2, 7,
+       	"?-as <fval>? ?-type <name>? ?<path>?",},
+    {"copy",     2, (void *)CopyOp, 5, 6,
+        "<path> from ?<xmlobj>? <path>",},
+    {"diff",     1, (void *)DiffOp, 3, 3, "<xmlobj>",},
+    {"element",  1, (void *)ElemOp, 2, 5, "?-as <fval>? ?<path>?",},
+    {"get",      1, (void *)GetOp, 2, 3, "?<path>?",},
+    {"info",     1, (void *)InfoOp, 3, 3, "<objType>",},
+    {"isa",      1, (void *)IsaOp, 3, 3, "<objType>",},
+    {"parent",   2, (void *)ParentOp, 2, 5, "?-as <fval>? ?<path>?",},
+    {"put",      2, (void *)PutOp, 2, 8,
+        "?-append yes? ?-id num? ?<path>? <string>",},
+    {"remove",   3, (void *)RemoveOp, 2, 3, "?<path>?",},
+    {"xml",      1, (void *)XmlOp, 2, 2, "",},
+};
+
+static int nRpLibOps = sizeof(rpLibOps) / sizeof(Rp_OpSpec);
+
+/*
+ * ------------------------------------------------------------------------
+ *  rpLib2command()
+ *
+ *  dsk defined helper function for creating a new command out of a 
+ *  rappture library
+ *
+ * ------------------------------------------------------------------------
+ */
+std::string
+rpLib2command (Tcl_Interp *interp, RpLibrary* newRpLibObj) 
+{
+    static int libCount = 0;
+    std::stringstream libName;
+
+    libName << "::libraryObj" << libCount++;
+
+    Tcl_CreateObjCommand(interp, libName.str().c_str(),
+        LibCallCmd, (ClientData)newRpLibObj, (Tcl_CmdDeleteProc*)NULL);
+
+    return libName.str();
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  rpGetLibraryFromObj()
+ *
+ *  Tries to decode the given argument as a Rappture Library object.
+ *  Returns TCL_OK if successful, along with a pointer to the library
+ *  in rval.  Otherwise, it returns TCL_ERROR, along with an error
+ *  message in the interp.
+ * ------------------------------------------------------------------------
+ */
+static int
+rpGetLibraryFromObj(Tcl_Interp *interp, Tcl_Obj* objPtr, RpLibrary **rval)
+{
+    Tcl_CmdInfo info;
+    char *cmdname = Tcl_GetString(objPtr);
+    if (Tcl_GetCommandInfo(interp, cmdname, &info)) {
+        if (info.objProc == RpLibCallCmd) {
+            *rval = (RpLibrary*)(info.objClientData);
+            return TCL_OK;
+        }
+    }
+    Tcl_AppendResult(interp, "bad value \"", cmdname,
+        "\": should be a Rappture library object", (char*)NULL);
+    return TCL_ERROR;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpLibrary_Init()
+ *
+ *  Called in Rappture_Init() to initialize the commands defined
+ *  in this file.
+ * ------------------------------------------------------------------------
+ */
+int
+RpLibrary_Init(Tcl_Interp *interp)
+{
+
+    Tcl_CreateObjCommand(interp, "::Rappture::library",
+        LibraryCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    Tcl_CreateObjCommand(interp, "::Rappture::result",
+        ResultCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    /*
+    Tcl_CreateObjCommand(interp, "::Rappture::LibraryObj::value",
+        LibValueOp, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+    */
+
+    return TCL_OK;
+}
+
+/*
+ * USAGE: library <file>
+ * USAGE: library standard
+ * USAGE: library isvalid <object>
+ */
+static int
+LibraryCmd(ClientData clientData, Tcl_Interp *interp, int objc, 
+	   Tcl_Obj* const *objv)
+{
+    const char *flag = Tcl_GetString(objv[1]);
+    if (objc > 2 && strcmp(flag,"isvalid") == 0) {
+        if (objc != 3) {
+            Tcl_AppendResult(interp, "wrong # args: should be \"",
+                Tcl_GetString(objv[0]), "\": isvalid object", 
+                (char*)NULL);
+            return TCL_ERROR;
+        }
+
+        //
+        // Check to see if the object is valid.  It should be a
+        // recognized Tcl command with the appropriate handler
+        // function.
+        //
+        int found = 0;
+        RpLibrary *rlib;
+        if (rpGetLibraryFromObj(interp, objv[2], &rlib) == TCL_OK && rlib) {
+            found = 1;
+        }
+        Tcl_SetObjResult(interp, Tcl_NewIntObj(found));
+        return TCL_OK;
+    }
+
+    if (objc != 2) {
+        Tcl_AppendResult(interp, "usage: ", Tcl_GetString(objv[0]),
+            " <xmlfile>",(char*)NULL);
+        return TCL_ERROR;
+    }
+
+    // create a new command
+    RpLibrary *rpptr = new RpLibrary( Tcl_GetString(objv[1]) );
+    std::string libName = rpLib2command(interp,rpptr);
+
+    Tcl_AppendResult(interp, libName.c_str(), (char*)NULL);
+    return TCL_OK;
+}
+
+
+static int
+LibCallCmd(ClientData clientData, Tcl_Interp *interp, int objc, 
+	   Tcl_Obj *const *objv)
+{
+    Tcl_ObjCmdProc *proc;
+
+    proc = (Tcl_ObjCmdProc *)Rp_GetOpFromObj(interp, nRpLibOps, rpLibOps, 
+	RP_OP_ARG1, objc, objv, 0);
+
+    if (proc == NULL) {
+        return TCL_ERROR;
+    }
+    return (*proc)(clientData, interp, objc, objv);
+}
+
+/**********************************************************************/
+// FUNCTION: ChildOp()
+/// children function in Tcl, retrieves a list of children for a given path
+/**
+ * Returns a list of children of the node located at <path>
+ * Full function call:
+ *
+ * children ?-as <fval>? ?-type <name>? ?<path>?
+ * 
+ * -as option specifies how to return the result
+ * <fval> is one of the following:
+ *     component - return the component name of child node, ex: type(id)
+ *     id        - return the id attribute of child node
+ *     type      - return the type attribute of child node 
+ *     path      - return the full path of child node
+ *     object    - return a Rappture Library Object
+ *
+ * -type option tells function to only look for nodes of type <name>
+ *
+ * <path> is the path of the parent node you are requesting the children of
+ *        if <path> is left blank, the current node will be considered the
+ *        parent node and all its children will be returned.
+ */
+static int
+ChildOp (ClientData clientData, Tcl_Interp *interp, int objc, 
+	 Tcl_Obj *const *objv)
+{
+    std::string path   = "";    // path of where to place data inside xml tree
+    std::string type   = "";    // type of nodes to be returned
+    std::string retStr = "";    // path of where to place data inside xml tree
+    int nextarg        = 2;     // start parsing using the '2'th argument
+    int opt_objc       = 2;     // max number of optional parameters
+
+    RpLibrary* node    = NULL;
+    rpMbrFxnPtr asProc = (rpMbrFxnPtr)&RpLibrary::nodeComp;
+
+    // parse through -'d arguments
+    while (opt_objc--) {
+        char *opt = Tcl_GetString(objv[nextarg]);
+        if (nextarg < objc && *opt == '-') {
+            if (strcmp(opt,"-as") == 0) {
+                nextarg++;
+                if (nextarg < objc) {
+                    if (*opt == 'c' && strcmp(opt,"component") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodeComp;
+                        nextarg++;
+                    }
+                    else if (*opt == 'i' && strcmp(opt,"id") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodeId;
+                        nextarg++;
+                    }
+                    else if (*opt == 't' && strcmp(opt,"type") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodeType;
+                        nextarg++;
+                    }
+                    else if (*opt == 'p' && strcmp(opt,"path") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodePath;
+                        nextarg++;
+                    }
+                    else if (*opt == 'o' && strcmp(opt,"object") == 0) {
+                        asProc = (rpMbrFxnPtr)NULL;
+                        nextarg++;
+                    }
+                    else {
+                        Tcl_AppendResult(interp, "bad flavor \"", opt,
+                            "\" for -as: should be component, id, type,",
+                            " path, object", (char*)NULL);
+                        return TCL_ERROR;
+                    }
+                }
+                else {
+                    Tcl_AppendResult(interp, "bad flavor \"\" for -as",
+                        ": should be component, id, type, path, object",
+                        (char*)NULL);
+                    return TCL_ERROR;
+                }
+            }
+            else if (strcmp(opt,"-type") == 0) {
+                nextarg++;
+                if (nextarg < objc) {
+                    type = std::string(opt);
+                    nextarg++;
+                }
+                else {
+                    Tcl_AppendResult(interp, "bad flavor \"\" for -type ",
+                        "option: should be a type of node within the xml",
+                        (char*)NULL);
+                    return TCL_ERROR;
+                }
+            }
+            else {
+                Tcl_AppendResult(interp, "bad option \"", opt,
+                    "\": should be -as, -type", (char*)NULL);
+                return TCL_ERROR;
+            }
+        }
+    }
+
+    int argsLeft = (objc-nextarg);
+    if (argsLeft > 1) {
+        Tcl_AppendResult(interp, 
+                "wrong # args: should be ",
+                "\"children ?-as <fval>? ?-type <name>? ?<path>?\"",
+                (char*)NULL);
+        return TCL_ERROR;
+    }
+    else if (argsLeft == 1) {
+        path = std::string( Tcl_GetString(objv[nextarg++]) );
+    }
+    else {
+        path = "";
+    }
+
+    // call the rappture library children function
+    while ( (node = ((RpLibrary*) clientData)->children(path,node,type)) ) {
+        if (node) {
+            if (asProc) {
+                // evaluate the "-as" flag on the returned node
+                retStr = (node->*asProc)();
+            }
+            else {
+                // create a new command for the new rappture object
+                retStr = rpLib2command(interp, node);
+            }
+
+            // store the new result string in the interpreter
+            Tcl_AppendElement(interp,retStr.c_str());
+        }
+    }
+    return TCL_OK;
+}
+
+static int
+CopyOp (ClientData clientData, Tcl_Interp *interp, int objc, 
+	Tcl_Obj *const *objv)
+{
+    std::string fromPath = "";    // path of where to copy data from
+    std::string toPath   = "";    // path of where to copy data to
+    std::string from     = "";    // string that should == "from"
+    RpLibrary* fromObj   = NULL;
+    int nextarg          = 2;     // start parsing using the '2'th argument
+    int argsLeft         = 0;     // temp variable for calculation
+
+    if (nextarg+2 < objc) {
+        toPath = std::string( Tcl_GetString(objv[nextarg++]) );
+        from = std::string( Tcl_GetString(objv[nextarg++]) );
+    }
+    else {
+        Tcl_AppendResult(interp,
+            "wrong # args: should be \"",
+            Tcl_GetString(objv[0]), " path from ?<xmlobj>? path\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    argsLeft = (objc-nextarg);
+    if (argsLeft == 2) {
+        if (rpGetLibraryFromObj(interp, objv[nextarg++], &fromObj) != TCL_OK) {
+            return TCL_ERROR;
+        }
+        fromPath = std::string( Tcl_GetString(objv[nextarg++]) );
+    }
+    else if (argsLeft == 1) {
+        fromPath = std::string( Tcl_GetString(objv[nextarg++]) );
+    }
+    else {
+        Tcl_ResetResult(interp);
+        Tcl_AppendResult(interp, 
+            "wrong # args: should be \"copy path from ?xmlobj? path\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    if (from != "from") {
+        Tcl_ResetResult(interp);
+        Tcl_AppendResult(interp,
+R            "bad syntax: should be \"copy path from ?xmlobj? path\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    // call the rappture library copy function
+    RpLibrary *libPtr	= (RpLibrary *)clientData;
+    libPtr->copy(toPath, fromObj, fromPath);
+
+    // clear any previous result in the interpreter
+    Tcl_ResetResult(interp);
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: DiffOp()
+/// diff function in Tcl, used to find the difference between two xml objects
+/**
+ * Returns a list of differences between two xml objects.
+ * Full function call:
+ * diff <xmlobj>
+ */
+
+static int
+DiffOp (ClientData clientData, Tcl_Interp *interp, int objc, 
+	Tcl_Obj *const *objv)
+{
+    RpLibrary* otherLibPtr = NULL;
+
+    // parse input arguments
+    if (rpGetLibraryFromObj(interp, objv[2], &otherLibPtr) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    RpLibrary *libPtr	= (RpLibrary *)clientData;
+
+    std::list<std::string> diffList; // list to store the return value 
+                                     // from diff command
+    // perform the diff command
+    diffList = libPtr->diff(otherLibPtr,"input");
+
+    std::list<std::string>::iterator diffListIter;
+    diffListIter = diffList.begin();
+
+    Tcl_ResetResult(interp);
+
+    // parse through the output of the diff command
+    // put it into the return result
+    while (diffListIter != diffList.end()) {
+        Tcl_AppendElement(interp,(*diffListIter).c_str());
+
+        // increment the iterator
+        diffListIter++;
+    }
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: ElemOp()
+/// element function in Tcl, used to retrieve a xml objects
+/**
+ * Returns a xml object.
+ * Full function call:
+ * element ?-as <fval>? ?<path>?
+ */
+static int
+ElemOp (ClientData clientData, Tcl_Interp *interp, int objc, 
+	Tcl_Obj *const *objv)
+{
+    std::string path   = "";    // path of where to place data inside xml tree
+    std::string retStr = "";    // path of where to place data inside xml tree
+    int nextarg        = 2;     // start parsing using the '2'th argument
+    int opt_objc       = 1;     // max number of optional parameters
+
+    RpLibrary* node    = NULL;
+    rpMbrFxnPtr asProc = (rpMbrFxnPtr)&RpLibrary::nodeComp;
+
+    // parse through -'d arguments
+    while (opt_objc--) {
+        char *opt = Tcl_GetString(objv[nextarg]);
+        if (nextarg < objc && *opt == '-') {
+            if (strcmp(opt,"-as") == 0) {
+                nextarg++;
+                if (nextarg < objc) {
+                    if (*opt == 'c' && strcmp(opt,"component") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodeComp;
+                        nextarg++;
+                    }
+                    else if (*opt == 'i' && strcmp(opt,"id") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodeId;
+                        nextarg++;
+                    }
+                    else if (*opt == 't' && strcmp(opt,"type") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodeType;
+                        nextarg++;
+                    }
+                    else if (*opt == 'p' && strcmp(opt,"path") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodePath;
+                        nextarg++;
+                    }
+                    else if (*opt == 'o' && strcmp(opt,"object") == 0) {
+                        asProc = NULL;
+                        nextarg++;
+                    }
+                    else {
+                        Tcl_AppendResult(interp, "bad flavor \"",
+                            Tcl_GetString(objv[nextarg]),
+                            "\" for -as: should be component, id, type,"
+                            " path, object", (char*)NULL);
+                        return TCL_ERROR;
+                    }
+                }
+                else {
+                    Tcl_AppendResult(interp, "bad flavor \"\" for -as:", 
+                           " should be component, id, type, path, object",
+                            (char*)NULL);
+                    return TCL_ERROR;
+                }
+            }
+            else {
+                Tcl_AppendResult(interp, "bad option \"", opt,
+                    "\": should be -as", (char*)NULL);
+                return TCL_ERROR;
+            }
+        }
+    }
+
+    int argsLeft = (objc-nextarg);
+    if (argsLeft > 1) {
+        Tcl_AppendResult(interp,
+            "wrong # args: should be \"element ?-as <fval>? ?<path>?\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+    else if (argsLeft == 1) {
+        path = std::string( Tcl_GetString(objv[nextarg++]) );
+    }
+    else {
+        path = "";
+    }
+
+    // call the rappture library element function
+    node = ((RpLibrary*) clientData)->element(path);
+    if (node) {
+        // clear any previous result in the interpreter
+        Tcl_ResetResult(interp);
+
+        if (asProc) {
+            // evaluate the "-as" flag on the returned node
+            retStr = (node->*asProc)();
+        }
+        else {
+            // create a new command for the new rappture object
+            retStr = rpLib2command(interp, node);
+        }
+        // store the new result string in the interpreter
+        Tcl_AppendResult(interp, retStr.c_str(), (char*)NULL);
+    }
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: GetOp()
+/// get function in Tcl, used to retrieve the value of a xml object
+/**
+ * Returns the value of a xml object.
+ * Full function call:
+ * get ?<path>?
+ */
+static int
+GetOp (ClientData clientData, Tcl_Interp *interp, int objc, 
+       Tcl_Obj *const *objv)
+{
+
+    std::string retStr = ""; // return value of rappture get fxn
+    std::string path = "";
+
+    if (objc == 3) {
+        path = std::string( Tcl_GetString(objv[2]) );
+    }
+    else if (objc != 2) {
+        Tcl_ResetResult(interp);
+        Tcl_AppendResult(interp, 
+            "wrong # args: should be \"get ?path?\"",
+            "\":", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    // call the Rappture Library Get Function
+    retStr = ((RpLibrary*) clientData)->getString(path);
+
+    // clear any previous result in the interpreter
+    // store the new result in the interpreter
+    Tcl_ResetResult(interp);
+    Tcl_AppendResult(interp, retStr.c_str(), (char*)NULL);
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: InfoOp()
+/// info function in Tcl, return specific information about this object's type
+/**
+ * Query the object about its data type.
+ * This function is available for compatibility with old itcl 
+ * Rappture::LibraryObj's
+ *
+ * Full function call:
+ * info <infoType>
+ *
+ * <infoType> must be one of the following:
+ *     class
+ *
+ * Return Values:
+ * class -> ::Rappture::LibraryObj
+ */
+
+static int
+InfoOp (ClientData clientData, Tcl_Interp *interp, int objc, 
+	Tcl_Obj *const *objv)
+{
+
+    std::string infoType = ""; // string value of type of info being requested
+    std::string retStr   = ""; // return value of rappture get fxn
+
+    if (objc == 3) {
+        infoType = std::string( Tcl_GetString(objv[2]) );
+    }
+    else {
+        Tcl_ResetResult(interp);
+        Tcl_AppendResult(interp, 
+            "wrong # args: should be \"info <infoType>\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    if ("class" == infoType) {
+        retStr = RAPPTURE_OBJ_TYPE;
+    }
+    else {
+        retStr = "";
+        Tcl_AppendResult(interp, 
+            "bad flavor: \"", infoType.c_str(), "\" should be \"class\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    // store the new result in the interpreter
+    Tcl_AppendResult(interp, retStr.c_str(), (char*)NULL);
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: IsaOp()
+/// isa function in Tcl, check this objects type against a provided <objType>
+/**
+ * Query the object about its data type.
+ * This function is available for compatibility with old itcl 
+ * Rappture::LibraryObj's
+ *
+ * Full function call:
+ * isa <objType>
+ *
+ * <infoType> must be one of the following:
+ *     class
+ *
+ * Return Value:
+ * if "::Rappture::LibraryObj" == <objType> returns "1"
+ * else returns "0"
+ */
+
+static int
+IsaOp (ClientData clientData, Tcl_Interp *interp, int objc, 
+       Tcl_Obj *const *objv)
+{
+
+    std::string compVal = ""; // string value of object being compared to
+    std::string retStr  = ""; // return value of rappture get fxn
+
+    if (objc == 3) {
+        compVal = std::string( Tcl_GetString(objv[2]) );
+    }
+    else {
+        Tcl_ResetResult(interp);
+        Tcl_AppendResult(interp, 
+            "wrong # args: should be \"isa <objType>\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    if (compVal == RAPPTURE_OBJ_TYPE) {
+        retStr = "1";
+    }
+    else {
+        retStr = "0";
+    }
+
+    // clear any previous result in the interpreter
+    // store the new result in the interpreter
+    Tcl_ResetResult(interp);
+    Tcl_AppendResult(interp, retStr.c_str(), (char*)NULL);
+
+    return TCL_OK;
+}
+
+static int
+ParentOp (ClientData clientData, Tcl_Interp *interp, int objc, 
+	  Tcl_Obj *const *objv)
+{
+    std::string path   = "";    // path of where to place data inside xml tree
+    std::string retStr = "";    // path of where to place data inside xml tree
+    int nextarg        = 2;     // start parsing using the '2'th argument
+    int opt_objc       = 1;     // max number of optional parameters
+
+    RpLibrary* node    = NULL;
+    rpMbrFxnPtr asProc = (rpMbrFxnPtr)&RpLibrary::nodeComp;
+
+    // parse through -'d arguments
+    while (opt_objc--) {
+        char *opt = Tcl_GetString(objv[nextarg]);
+        if (nextarg < objc && *opt == '-') {
+            if (strcmp(opt,"-as") == 0) {
+                nextarg++;
+                if (nextarg < objc) {
+                    if (*opt == 'c' && strcmp(opt,"component") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodeComp;
+                        nextarg++;
+                    }
+                    else if (*opt == 'i' && strcmp(opt,"id") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodeId;
+                        nextarg++;
+                    }
+                    else if (*opt == 't' && strcmp(opt,"type") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodeType;
+                        nextarg++;
+                    }
+                    else if (*opt == 'p' && strcmp(opt,"path") == 0) {
+                        asProc = (rpMbrFxnPtr)&RpLibrary::nodePath;
+                        nextarg++;
+                    }
+                    else if (*opt == 'o' && strcmp(opt,"object") == 0) {
+                        asProc = NULL;
+                        nextarg++;
+                    }
+                    else {
+                        Tcl_AppendResult(interp, "bad flavor \"",
+                            Tcl_GetString(objv[nextarg]),
+                            "\": should be component, id, type, path, object",
+                            (char*)NULL);
+                        return TCL_ERROR;
+                    }
+                }
+                else {
+                    Tcl_AppendResult(interp, "bad flavor \"\" for -as: ",
+                            "should be component, id, type, path, object",
+                            (char*)NULL);
+                    return TCL_ERROR;
+                }
+            }
+            else {
+                Tcl_AppendResult(interp, "bad option \"", opt,
+                    "\": should be -as", (char*)NULL);
+                return TCL_ERROR;
+            }
+        }
+    }
+
+    int argsLeft = (objc-nextarg);
+    if ( argsLeft > 1) {
+        Tcl_AppendResult(interp, 
+            "wrong # args: should be \"parent ?-as <fval>? ?<path>?\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+    else if (argsLeft == 1) {
+        path = std::string( Tcl_GetString(objv[nextarg++]) );
+    }
+    else {
+        path = "";
+    }
+
+    // call the rappture library parent function
+    node = ((RpLibrary*) clientData)->parent(path);
+    if (node) {
+        // clear any previous result in the interpreter
+        Tcl_ResetResult(interp);
+
+        if (asProc) {
+            // evaluate the "-as" flag on the returned node
+            retStr = (node->*asProc)();
+        }
+        else {
+            // create a new command for the new rappture object
+            retStr = rpLib2command(interp, node);
+        }
+        // store the new result string in the interpreter
+        Tcl_AppendResult(interp, retStr.c_str(), (char*)NULL);
+    }
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: PutOp()
+/// put function in Tcl, put a value into a xml node at location <path>
+/**
+ * Put a value into a xml node at location <path>
+ *
+ * Full function call:
+ * put <path>
+ *
+ * Return Value:
+ * On success, None. 
+ * On failure, an error message is returned
+ */
+static int
+PutOp (ClientData clientData, Tcl_Interp *interp, int objc, 
+       Tcl_Obj *const *objv)
+{
+    std::string id     = "";    // id tag for the given path
+    std::string path   = "";    // path of where to place data inside xml tree
+    std::string addStr = "";    // string to be added to data inside xml tree
+    int nextarg        = 2;     // start parsing using the '2'th argument
+    int append         = 0;     // append flag - 0 means no, 1 means yes
+    int opt_objc       = 2;     // max number of optional parameters
+
+    while (opt_objc--) {
+        char *opt = Tcl_GetString(objv[nextarg]);
+        if (nextarg < objc && *opt == '-') {
+            if (strcmp(opt,"-append") == 0) {
+                ++nextarg;
+                if (nextarg < objc) {
+                    if (Tcl_GetBooleanFromObj(interp, objv[nextarg],
+                          &append) != TCL_OK) {
+                        return TCL_ERROR;
+                    }
+                }
+                else {
+                    Tcl_AppendResult(interp, "missing value for -append",
+                        (char*)NULL);
+                    return TCL_ERROR;
+                }
+            }
+            else if (strcmp(opt,"-id") == 0) {
+                id = std::string( Tcl_GetString(objv[++nextarg]) );
+                nextarg++;
+            }
+            else {
+                Tcl_AppendResult(interp, "bad option \"", opt,
+                    "\": should be -append or -id", (char*)NULL);
+                return TCL_ERROR;
+            }
+        }
+    }
+
+    int argsLeft = (objc-nextarg);
+    if (argsLeft == 2) {
+        path = std::string( Tcl_GetString(objv[nextarg++]) );
+        addStr = std::string( Tcl_GetString(objv[nextarg++]) );
+    }
+    else if (argsLeft == 1) {
+        path = "";
+        addStr = std::string( Tcl_GetString(objv[nextarg++]) );
+    }
+    else {
+        Tcl_AppendResult(interp, "wrong # args: should be ",
+            "\"put ?-append yes? ?-id num? ?<path>? <string>\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    // call the rappture library put function
+    ((RpLibrary*) clientData)->put(path, addStr, id, append);
+
+    // return nothing for this operation
+    Tcl_ResetResult(interp);
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: RemoveOp()
+/// remove function in Tcl, used to remove a xml node at location <path>
+/**
+ * Removes the xml node at location <path>, if it exists. Does nothing
+ * if the node does not exist.
+ *
+ * Full function call:
+ * remove ?<path>?
+ *
+ * Return Value:
+ * On success, None. 
+ * On failure, an error message is returned
+ */
+static int
+RemoveOp (ClientData clientData, Tcl_Interp *interp, int objc, 
+	  Tcl_Obj *const *objv)
+{
+    std::string path = std::string("");  // path of where to remove data from
+
+    if (objc == 3) {
+        path = std::string( Tcl_GetString(objv[2]) );
+    }
+
+    // call the rappture library remove function
+    ((RpLibrary*) clientData)->remove(path);
+
+    // clear any previous result in the interpreter
+    Tcl_ResetResult(interp);
+    return TCL_OK;
+}
+
+static int
+ResultOp(ClientData clientData, Tcl_Interp *interp, int objc, 
+	 Tcl_Obj *const *objv)
+{
+    // call the rappture library result function
+    ((RpLibrary*) clientData)->result();
+
+    // clear any previous result in the interpreter
+    Tcl_ResetResult(interp);
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: ValueOp()
+/// Rappture::LibraryObj::value function in Tcl, used to normalize a number.
+/**
+ * Normalizes values located at <path> in <xmlobj>.
+ *
+ * Full function call:
+ * Rappture::LibraryObj::value <xmlobj> <path>
+ *
+ * Return Value:
+ * 2 element list
+ *   - first element is the original value at location <path>
+ *   - second element is the normalization of the value at location <path>
+ */
+static int
+ValueOp (ClientData clientData, Tcl_Interp *interp, int objc, 
+	 Tcl_Obj *const *objv)
+{
+    std::list<std::string> valList;  // list to store the return value 
+                                     // from diff command
+    std::list<std::string>::iterator valListIter;
+
+    if (objc != 3) {
+        Tcl_AppendResult(interp,
+            "wrong # args: should be \"", Tcl_GetString(objv[0]),
+            " <xmlobj> <path>\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    // parse input arguments
+    RpLibrary* lib;
+    if (rpGetLibraryFromObj(interp, objv[1], &lib) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    std::string path = std::string(Tcl_GetString(objv[2]));
+
+    // perform the value command
+    valList = lib->value(path);
+    valListIter = valList.begin();
+
+    // parse through the output of the diff command
+    // put it into the return result
+    while (valListIter != valList.end()) {
+        Tcl_AppendElement(interp,(*valListIter).c_str());
+
+        // increment the iterator
+        valListIter++;
+    }
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: XmlOp()
+/// xml function in Tcl, returns the xml data that this object represents
+/**
+ * Prints the xml text for this object.
+ *
+ * Full function call:
+ * xml
+ *
+ * Return Value:
+ * xml text as a string
+ */
+
+static int
+XmlOp(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const *objv)
+{
+
+    std::string retStr = ""; // return value of rappture get fxn
+
+    if (objc != 2) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"", 
+            Tcl_GetString(objv[0]), " xml\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    // call the Rappture Library xml Function
+    retStr = ((RpLibrary*) clientData)->xml();
+
+    // clear any previous result in the interpreter
+    // store the new result in the interpreter
+    Tcl_ResetResult(interp);
+    Tcl_AppendResult(interp, retStr.c_str(), (char*)NULL);
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: ResultCmd()
+/// Rappture::result function in Tcl, prints xml to file and signals gui.
+/**
+ * Prints xml text representing provided object to a runXXXX.xml file
+ * and sends the '=RAPTURE=RUN=>runXXXX.xml' signal to the graphical
+ * user interface so the data can be visualized.
+ *
+ * Full function call:
+ * Rappture::result <rpObj>
+ *
+ * <rpObj> is a valid rappture object
+ *
+ * Return Value:
+ * None
+ */
+static int
+ResultCmd(ClientData clientData, Tcl_Interp *interp, int objc, 
+	  Tcl_Obj *const *objv)
+{
+    // parse through command line options
+    if (objc != 2) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"", 
+            Tcl_GetString(objv[0]), " <xmlobj>\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    RpLibrary* lib;
+    if (rpGetLibraryFromObj(interp, objv[1], &lib) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    lib->result();
+
+    // returns nothing
+    Tcl_ResetResult(interp);
+    return TCL_OK;
+}
Index: /tags/1.6.0/lang/tcl/src/RpOp.c
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpOp.c	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpOp.c	(revision 6168)
@@ -0,0 +1,249 @@
+
+/*
+ * RpOp.c --
+ *
+ * This module implements utility procedures for the BLT toolkit.
+ *
+ *	Copyright 1991-2004 George A Howlett.
+ *
+ *	Permission is hereby granted, free of charge, to any person
+ *	obtaining a copy of this software and associated documentation
+ *	files (the "Software"), to deal in the Software without
+ *	restriction, including without limitation the rights to use,
+ *	copy, modify, merge, publish, distribute, sublicense, and/or
+ *	sell copies of the Software, and to permit persons to whom the
+ *	Software is furnished to do so, subject to the following
+ *	conditions:
+ *
+ *	The above copyright notice and this permission notice shall be
+ *	included in all copies or substantial portions of the
+ *	Software.
+ *
+ *	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ *	KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ *	WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ *	PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+ *	OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ *	OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ *	OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ *	SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <tcl.h>
+#include <string.h>
+#include "RpOp.h"
+/*
+ *---------------------------------------------------------------------------
+ *
+ * BinaryOpSearch --
+ *
+ *      Performs a binary search on the array of command operation
+ *      specifications to find a partial, anchored match for the given
+ *      operation string.
+ *
+ * Results:
+ *	If the string matches unambiguously the index of the specification in
+ *	the array is returned.  If the string does not match, even as an
+ *	abbreviation, any operation, -1 is returned.  If the string matches,
+ *	but ambiguously -2 is returned.
+ *
+ *---------------------------------------------------------------------------
+ */
+static int
+BinaryOpSearch(
+    Rp_OpSpec *specs, 
+    int nSpecs, 
+    char *string)		/* Name of minor operation to search for */
+{
+    char c;
+    int high, low;
+    size_t length;
+
+    low = 0;
+    high = nSpecs - 1;
+    c = string[0];
+    length = strlen(string);
+    while (low <= high) {
+	Rp_OpSpec *specPtr;
+	int compare;
+	int median;
+	
+	median = (low + high) >> 1;
+	specPtr = specs + median;
+
+	/* Test the first character */
+	compare = c - specPtr->name[0];
+	if (compare == 0) {
+	    /* Now test the entire string */
+	    compare = strncmp(string, specPtr->name, length);
+	    if (compare == 0) {
+		if ((int)length < specPtr->minChars) {
+		    return -2;	/* Ambiguous operation name */
+		}
+	    }
+	}
+	if (compare < 0) {
+	    high = median - 1;
+	} else if (compare > 0) {
+	    low = median + 1;
+	} else {
+	    return median;	/* Op found. */
+	}
+    }
+    return -1;			/* Can't find operation */
+}
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * LinearOpSearch --
+ *
+ *      Performs a binary search on the array of command operation
+ *      specifications to find a partial, anchored match for the given
+ *      operation string.
+ *
+ * Results:
+ *	If the string matches unambiguously the index of the specification in
+ *	the array is returned.  If the string does not match, even as an
+ *	abbreviation, any operation, -1 is returned.  If the string matches,
+ *	but ambiguously -2 is returned.
+ *
+ *---------------------------------------------------------------------------
+ */
+static int
+LinearOpSearch(
+    Rp_OpSpec *specs,
+    int nSpecs,
+    char *string)		/* Name of minor operation to search for */
+{
+    Rp_OpSpec *specPtr;
+    char c;
+    size_t length;
+    int nMatches, last;
+    int i;
+
+    c = string[0];
+    length = strlen(string);
+    nMatches = 0;
+    last = -1;
+    for (specPtr = specs, i = 0; i < nSpecs; i++, specPtr++) {
+	if ((c == specPtr->name[0]) && 
+	    (strncmp(string, specPtr->name, length) == 0)) {
+	    last = i;
+	    nMatches++;
+	    if ((int)length == specPtr->minChars) {
+		break;
+	    }
+	}
+    }
+    if (nMatches > 1) {
+	return -2;		/* Ambiguous operation name */
+    } 
+    if (nMatches == 0) {
+	return -1;		/* Can't find operation */
+    } 
+    return last;		/* Op found. */
+}
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * Rp_GetOpFromObj --
+ *
+ *      Find the command operation given a string name.  This is useful where
+ *      a group of command operations have the same argument signature.
+ *
+ * Results:
+ *      If found, a pointer to the procedure (function pointer) is returned.
+ *      Otherwise NULL is returned and an error message containing a list of
+ *      the possible commands is returned in interp->result.
+ *
+ *---------------------------------------------------------------------------
+ */
+void *
+Rp_GetOpFromObj(
+    Tcl_Interp *interp,		/* Interpreter to report errors to */
+    int nSpecs,			/* Number of specifications in array */
+    Rp_OpSpec *specs,		/* Op specification array */
+    int operPos,		/* Position of operation in argument list. */
+    int objc,			/* Number of arguments in the argument vector.
+				 * This includes any prefixed arguments */
+    Tcl_Obj *const *objv,	/* Argument vector */
+    int flags)
+{
+    Rp_OpSpec *specPtr;
+    char *string;
+    int n;
+
+    if (objc <= operPos) {	/* No operation argument */
+	Tcl_AppendResult(interp, "wrong # args: ", (char *)NULL);
+      usage:
+	Tcl_AppendResult(interp, "should be one of...", (char *)NULL);
+	for (n = 0; n < nSpecs; n++) {
+	    int i;
+
+	    Tcl_AppendResult(interp, "\n  ", (char *)NULL);
+	    for (i = 0; i < operPos; i++) {
+		Tcl_AppendResult(interp, Tcl_GetString(objv[i]), " ", 
+			 (char *)NULL);
+	    }
+	    specPtr = specs + n;
+	    Tcl_AppendResult(interp, specPtr->name, " ", specPtr->usage,
+		(char *)NULL);
+	}
+	return NULL;
+    }
+    string = Tcl_GetString(objv[operPos]);
+    if (flags & RP_OP_LINEAR_SEARCH) {
+	n = LinearOpSearch(specs, nSpecs, string);
+    } else {
+	n = BinaryOpSearch(specs, nSpecs, string);
+    }
+    if (n == -2) {
+	char c;
+	size_t length;
+
+	Tcl_AppendResult(interp, "ambiguous", (char *)NULL);
+	if (operPos > 2) {
+	    Tcl_AppendResult(interp, " ", Tcl_GetString(objv[operPos - 1]), 
+		(char *)NULL);
+	}
+	Tcl_AppendResult(interp, " operation \"", string, "\" matches: ",
+	    (char *)NULL);
+
+	c = string[0];
+	length = strlen(string);
+	for (n = 0; n < nSpecs; n++) {
+	    specPtr = specs + n;
+	    if ((c == specPtr->name[0]) &&
+		(strncmp(string, specPtr->name, length) == 0)) {
+		Tcl_AppendResult(interp, " ", specPtr->name, (char *)NULL);
+	    }
+	}
+	return NULL;
+
+    } else if (n == -1) {	/* Can't find operation, display help */
+	Tcl_AppendResult(interp, "bad", (char *)NULL);
+	if (operPos > 2) {
+	    Tcl_AppendResult(interp, " ", Tcl_GetString(objv[operPos - 1]), 
+		(char *)NULL);
+	}
+	Tcl_AppendResult(interp, " operation \"", string, "\": ", (char *)NULL);
+	goto usage;
+    }
+    specPtr = specs + n;
+    if ((objc < specPtr->minArgs) || 
+	((specPtr->maxArgs > 0) && (objc > specPtr->maxArgs))) {
+	int i;
+
+	Tcl_AppendResult(interp, "wrong # args: should be \"", (char *)NULL);
+	for (i = 0; i < operPos; i++) {
+	    Tcl_AppendResult(interp, Tcl_GetString(objv[i]), " ", 
+		(char *)NULL);
+	}
+	Tcl_AppendResult(interp, specPtr->name, " ", specPtr->usage, "\"",
+	    (char *)NULL);
+	return NULL;
+    }
+    return specPtr->proc;
+}
Index: /tags/1.6.0/lang/tcl/src/RpOp.h
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpOp.h	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpOp.h	(revision 6168)
@@ -0,0 +1,48 @@
+
+#ifndef RPOP_H
+#define RPOP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * Rp_OpSpec --
+ *
+ * 	Structure to specify a set of operations for a Tcl command.
+ *      This is passed to the Rp_GetOpFromObj procedure to look
+ *      for a function pointer associated with the operation name.
+ *
+ *---------------------------------------------------------------------------
+ */
+typedef struct {
+    const char *name;		/* Name of operation */
+    int minChars;		/* Minimum # characters to disambiguate */
+    void *proc;
+    int minArgs;		/* Minimum # args required */
+    int maxArgs;		/* Maximum # args required */
+    const char *usage;		/* Usage message */
+} Rp_OpSpec;
+
+typedef enum {
+    RP_OP_ARG0,		/* Op is the first argument. */
+    RP_OP_ARG1,		/* Op is the second argument. */
+    RP_OP_ARG2,		/* Op is the third argument. */
+    RP_OP_ARG3,		/* Op is the fourth argument. */
+    RP_OP_ARG4		/* Op is the fifth argument. */
+
+} Rp_OpIndex;
+
+#define RP_OP_BINARY_SEARCH	0
+#define RP_OP_LINEAR_SEARCH	1
+
+extern void *Rp_GetOpFromObj _ANSI_ARGS_((Tcl_Interp *interp, 
+	int nSpecs, Rp_OpSpec *specs, int operPos, int objc, 
+	Tcl_Obj *const *objv, int flags));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*RPOBJ_H*/
Index: /tags/1.6.0/lang/tcl/src/RpRlimit.c
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpRlimit.c	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpRlimit.c	(revision 6168)
@@ -0,0 +1,335 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::rlimit
+ *
+ *  This is an interface to the system getrlimit() and setrlimit()
+ *  routines.  It allows you to get/set resource limits for child
+ *  executables.  We use this in Rappture::exec, for example, to make
+ *  sure that jobs don't run forever or fill up the disk.
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <tcl.h>
+#include <string.h>
+#ifndef _WIN32
+#include <sys/time.h>
+#include <sys/resource.h>
+#else
+#include "RpWinResource.h"
+#endif
+
+#include <errno.h>
+#include "RpOp.h"
+
+static Tcl_ObjCmdProc RpRlimitCmd;
+static Tcl_ObjCmdProc RpRlimitGetOp;
+static Tcl_ObjCmdProc RpRlimitSetOp;
+static int RpRlimitOptionError(Tcl_Interp *interp, const char *string);
+
+/*
+ * rlimit subcommands:
+ */
+static Rp_OpSpec rlimitOps[] = {
+    {"get", 1, RpRlimitGetOp, 2, 4, "?-soft|-hard? ?option?",},
+    {"set", 1, RpRlimitSetOp, 2, 0, "?option value ...?",},
+};
+static int nRlimitOps = sizeof(rlimitOps) / sizeof(Rp_OpSpec);
+
+/*
+ * rlimit configuration options:
+ */
+typedef struct RpRlimitNames {
+    char *name;
+    int resid;
+} RpRlimitNames;
+
+static RpRlimitNames rlimitOptions[] = {
+    {"coresize",  RLIMIT_CORE},
+    {"cputime",   RLIMIT_CPU},
+    {"filesize",  RLIMIT_FSIZE},
+    {(char*)NULL, 0}
+};
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRlimit_Init()
+ *
+ *  Called in Rappture_Init() to initialize the commands defined
+ *  in this file.
+ * ------------------------------------------------------------------------
+ */
+int
+RpRlimit_Init(interp)
+    Tcl_Interp *interp;  /* interpreter being initialized */
+{
+    Tcl_CreateObjCommand(interp, "::Rappture::rlimit", RpRlimitCmd, NULL, NULL);
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRlimitCmd()
+ *
+ *  Invoked whenever someone uses the "rlimit" command to get/set
+ *  limits for child processes.  Handles the following syntax:
+ *
+ *      rlimit get ?-soft|-hard? ?<option>?
+ *      rlimit set ?<option> <value> <option> <value> ...?
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpRlimitCmd(cdata, interp, objc, objv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int objc;                 /* number of command line args */
+    Tcl_Obj *const *objv;     /* strings for command line args */
+{
+    Tcl_ObjCmdProc *proc;
+
+    proc = Rp_GetOpFromObj(interp, nRlimitOps, rlimitOps, RP_OP_ARG1,
+        objc, objv, 0);
+    if (proc == NULL) {
+        return TCL_ERROR;
+    }
+    return (*proc)(cdata, interp, objc, objv);
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRlimitGetOp()
+ *
+ *  Invoked whenever someone uses the "rlimit get" command to query
+ *  limits for child processes.  Handles the following syntax:
+ *
+ *      rlimit get ?-soft|-hard? ?<option>?
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpRlimitGetOp(cdata, interp, objc, objv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int objc;                 /* number of command line args */
+    Tcl_Obj *const *objv;     /* strings for command line args */
+{
+    int hardlim = 0;  /* default: use -soft limit */
+    int nextarg = 2;  /* start with this arg */
+    Tcl_Obj *objPtr;
+    int i, status;
+    struct rlimit rvals;
+    rlim_t *rvalptr;
+
+    if (nextarg < objc) {
+        const char *string;
+
+        string = Tcl_GetString(objv[nextarg]);
+        if (string[0] == '-') {
+            if (strcmp(string,"-soft") == 0) {
+                hardlim = 0;
+                nextarg++;
+            } else if (strcmp(string,"-hard") == 0) {
+                hardlim = 1;
+                nextarg++;
+            } else {
+                Tcl_AppendResult(interp, "bad option \"", string,
+                "\": should be -soft or -hard", (char*)NULL);
+                return TCL_ERROR;
+            }
+        }
+    }
+
+    /*
+     * No args?  Then return limits for all options.
+     */
+    if (nextarg >= objc) {
+        Tcl_Obj *listObjPtr;
+
+        listObjPtr = Tcl_NewListObj(0, NULL);
+        for (i=0; rlimitOptions[i].name != NULL; i++) {
+            Tcl_Obj *objPtr;
+            status = getrlimit(rlimitOptions[i].resid, &rvals);
+            if (status != 0) {
+                Tcl_ResetResult(interp);
+                Tcl_AppendResult(interp, "unexpected rlimit failure",
+                    (char*)NULL);
+                return TCL_ERROR;
+            }
+            if (hardlim) {
+                rvalptr = &rvals.rlim_max;
+            } else {
+                rvalptr = &rvals.rlim_cur;
+            }
+            objPtr = Tcl_NewStringObj(rlimitOptions[i].name, -1);
+            Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
+            if (*rvalptr == RLIM_INFINITY) {
+                objPtr = Tcl_NewStringObj("unlimited", -1);
+            } else {
+                objPtr = Tcl_NewLongObj((unsigned long)*rvalptr);
+            }
+            Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
+        }
+        Tcl_SetObjResult(interp, listObjPtr);
+        return TCL_OK;
+    }
+
+    /*
+     * Find the limit for the specified option.
+     */
+    for (i=0; rlimitOptions[i].name != NULL; i++) {
+        const char *string;
+
+        string = Tcl_GetString(objv[nextarg]);
+        if (strcmp(string, rlimitOptions[i].name) == 0) {
+            break;
+        }
+    }
+    if (rlimitOptions[i].name == NULL) {
+        const char *string;
+
+        string = Tcl_GetString(objv[nextarg]);
+        return RpRlimitOptionError(interp, string);
+    }
+
+    status = getrlimit(rlimitOptions[i].resid, &rvals);
+    if (status != 0) {
+        Tcl_ResetResult(interp);
+        Tcl_AppendResult(interp, "unexpected rlimit failure",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+    if (hardlim) {
+        rvalptr = &rvals.rlim_max;
+    } else {
+        rvalptr = &rvals.rlim_cur;
+    }
+
+    if (*rvalptr == RLIM_INFINITY) {
+        objPtr = Tcl_NewStringObj("unlimited", -1);
+    } else {
+        objPtr = Tcl_NewLongObj((unsigned long)*rvalptr);
+    }
+    Tcl_SetObjResult(interp, objPtr);
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRlimitSetOp()
+ *
+ *  Invoked whenever someone uses the "rlimit set" command to query
+ *  limits for child processes.  Handles the following syntax:
+ *
+ *      rlimit set ?<option> <value> <option> <value> ...?
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpRlimitSetOp(cdata, interp, objc, objv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int objc;                 /* number of command line args */
+    Tcl_Obj *const *objv;   /* strings for command line args */
+{
+    int i, n, lim, status;
+    struct rlimit rvals;
+    rlim_t newval;
+
+    for (n=2; n < objc; n += 2) {
+        const char *name, *value;
+
+        name = Tcl_GetString(objv[n]);
+        if (n+1 >= objc) {
+            Tcl_AppendResult(interp, "missing value for option \"",
+                name, "\"", (char*)NULL);
+            return TCL_ERROR;
+        }
+        value = Tcl_GetString(objv[n+1]);
+        if (strcmp(value, "unlimited") == 0) {
+            newval = RLIM_INFINITY;
+        } else if (Tcl_GetIntFromObj(interp, objv[n+1], &lim) == TCL_OK) {
+            if (lim < 0) {
+                Tcl_ResetResult(interp);
+                Tcl_AppendResult(interp, "bad value \"", value,
+                    "\": should be integer >= 0 or \"unlimited\"",
+                    (char*)NULL);
+                return TCL_ERROR;
+            }
+            newval = (rlim_t)lim;
+        } else {
+            Tcl_ResetResult(interp);
+            Tcl_AppendResult(interp, "bad value \"", value,
+                "\": should be integer >= 0 or \"unlimited\"", (char*)NULL);
+            return TCL_ERROR;
+        }
+
+        /*
+         * Find the option being changed and set it.
+         */
+        for (i=0; rlimitOptions[i].name != NULL; i++) {
+            if (strcmp(name, rlimitOptions[i].name) == 0) {
+                break;
+            }
+        }
+        if (rlimitOptions[i].name == NULL) {
+            return RpRlimitOptionError(interp, name);
+        }
+        status = getrlimit(rlimitOptions[i].resid, &rvals);
+        if (status == 0) {
+            rvals.rlim_cur = newval;
+            status = setrlimit(rlimitOptions[i].resid, &rvals);
+        }
+        if (status == EPERM) {
+            Tcl_ResetResult(interp);
+            Tcl_AppendResult(interp, "value \"", value,
+                "\" set too high for option \"", name,
+                (char*)NULL);
+            return TCL_ERROR;
+        } else if (status != 0) {
+            Tcl_ResetResult(interp);
+            Tcl_AppendResult(interp, "unexpected rlimit failure",
+                (char*)NULL);
+            return TCL_ERROR;
+        }
+    }
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRlimitOptionError()
+ *
+ *  Used internally to set an error message in the interpreter
+ *  describing an unrecognized rlimit option.  Sets the result of
+ *  the Tcl interpreter and returns an error status code.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpRlimitOptionError(interp, option)
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    const char *option;       /* bad option supplied by the user */
+{
+    int i;
+
+    Tcl_AppendResult(interp, "bad option \"", option,
+        "\": should be one of ",(char*)NULL);
+
+    for (i=0; rlimitOptions[i].name != NULL; i++) {
+        if (i > 0) {
+            Tcl_AppendResult(interp, ", ", (char*)NULL);
+        }
+        Tcl_AppendResult(interp, rlimitOptions[i].name, (char*)NULL);
+    }
+    return TCL_ERROR;
+}
Index: /tags/1.6.0/lang/tcl/src/RpRusage.c
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpRusage.c	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpRusage.c	(revision 6168)
@@ -0,0 +1,396 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::rusage
+ *
+ *  This is an interface to the system getrusage() routine.  It allows
+ *  you to query resource used by child executables.  We use this in
+ *  Rappture to track the usage during each click of the "Simulate"
+ *  button.
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <tcl.h>
+#include <string.h>
+#ifndef WIN32
+#include <sys/time.h>
+#include <sys/resource.h>
+#else
+#include "RpWinResource.h"
+#endif
+
+#include "RpOp.h"
+
+/*
+ * Store rusage info in this data structure:
+ */
+typedef struct RpRusageStats {
+    struct timeval times;
+    struct rusage resources;
+} RpRusageStats;
+
+static RpRusageStats RpRusage_Start;      /* time at start of program */
+
+static Tcl_ObjCmdProc RpRusageCmd;
+static Tcl_ObjCmdProc RpRusageForgetOp;
+static Tcl_ObjCmdProc RpRusageMarkOp;
+static Tcl_ObjCmdProc RpRusageMeasureOp;
+
+static int RpRusageCapture _ANSI_ARGS_((Tcl_Interp *interp,
+    RpRusageStats *rptr));
+static double RpRusageTimeDiff _ANSI_ARGS_((struct timeval *currptr,
+    struct timeval *prevptr));
+static void RpDestroyMarkNames _ANSI_ARGS_((ClientData cdata,
+    Tcl_Interp *interp));
+
+/*
+ * rusage subcommands:
+ */
+static Rp_OpSpec rusageOps[] = {
+    {"forget", 1, RpRusageForgetOp, 2, 0, "?name...?",},
+    {"mark",    2, RpRusageMarkOp, 2, 3, "?name?",},
+    {"measure", 2, RpRusageMeasureOp, 2, 3, "?name?",},
+};
+static int nRusageOps = sizeof(rusageOps) / sizeof(Rp_OpSpec);
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRusage_Init()
+ *
+ *  Called in Rappture_Init() to initialize the commands defined
+ *  in this file.
+ * ------------------------------------------------------------------------
+ */
+int
+RpRusage_Init(interp)
+    Tcl_Interp *interp;  /* interpreter being initialized */
+{
+    Tcl_HashTable *markNamesPtr;
+
+    Tcl_CreateObjCommand(interp, "::Rappture::rusage", RpRusageCmd, 
+	NULL, NULL);
+
+    /* set up a hash table for different mark names */
+    markNamesPtr = (Tcl_HashTable*)ckalloc(sizeof(Tcl_HashTable));
+    Tcl_InitHashTable(markNamesPtr, TCL_STRING_KEYS);
+
+    Tcl_SetAssocData(interp, "RpRusageMarks",
+        RpDestroyMarkNames, (ClientData)markNamesPtr);
+
+    /* capture the starting time for this program */
+    if (RpRusageCapture(interp, &RpRusage_Start) != TCL_OK) {
+        return TCL_ERROR;
+    }
+
+    /* set an initial "global" mark automatically */
+    if (RpRusageMarkOp(NULL, interp, 0, (Tcl_Obj**)NULL) != TCL_OK) {
+        return TCL_ERROR;
+    }
+
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRusageCmd()
+ *
+ *  Invoked whenever someone uses the "rusage" command to get/set
+ *  limits for child processes.  Handles the following syntax:
+ *
+ *      rusage mark
+ *      rusage measure
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpRusageCmd(cdata, interp, objc, objv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int objc;                 /* number of command line args */
+    Tcl_Obj *const *objv;     /* strings for command line args */
+{
+    Tcl_ObjCmdProc *proc;
+
+    proc = Rp_GetOpFromObj(interp, nRusageOps, rusageOps, RP_OP_ARG1,
+        objc, objv, 0);
+
+    if (proc == NULL) {
+        return TCL_ERROR;
+    }
+    return (*proc)(cdata, interp, objc, objv);
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRusageMarkOp()
+ *
+ *  Invoked whenever someone uses the "rusage mark" command to mark
+ *  the start of an execution.  Handles the following syntax:
+ *
+ *      rusage mark ?name?
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpRusageMarkOp(cdata, interp, objc, objv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int objc;                 /* number of command line args */
+    Tcl_Obj *const *objv;     /* strings for command line args */
+{
+    char *markName;
+    Tcl_HashTable *markNamesPtr;
+    Tcl_HashEntry *entryPtr;
+    int newEntry;
+    RpRusageStats *markPtr;
+
+    markNamesPtr = (Tcl_HashTable *)
+        Tcl_GetAssocData(interp, "RpRusageMarks", NULL);
+
+    markName = (objc > 2) ? Tcl_GetString(objv[2]): "global";
+    entryPtr = Tcl_CreateHashEntry(markNamesPtr, markName, &newEntry);
+    if (newEntry) {
+        markPtr = (RpRusageStats*)ckalloc(sizeof(RpRusageStats));
+        Tcl_SetHashValue(entryPtr, (ClientData)markPtr);
+    } else {
+        markPtr = (RpRusageStats*)Tcl_GetHashValue(entryPtr);
+    }
+
+    return RpRusageCapture(interp, markPtr);
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRusageMeasureOp()
+ *
+ *  Invoked whenever someone uses the "rusage measure" command to
+ *  measure resource usage since the last "mark" operation.  Handles
+ *  the following syntax:
+ *
+ *      rusage measure ?name?
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpRusageMeasureOp(cdata, interp, objc, objv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int objc;                 /* number of command line args */
+    Tcl_Obj *const *objv;     /* strings for command line args */
+{
+    char *markName;
+    Tcl_HashTable *markNamesPtr;
+    Tcl_HashEntry *entryPtr;
+    RpRusageStats *markPtr;
+    double tval;
+    RpRusageStats curstats;
+    Tcl_Obj *listObjPtr, *objPtr;
+
+    if (RpRusageCapture(interp, &curstats) != TCL_OK) {
+        return TCL_ERROR;
+    }
+
+    markNamesPtr = (Tcl_HashTable *)
+        Tcl_GetAssocData(interp, "RpRusageMarks", NULL);
+
+    markName = (objc > 2) ? Tcl_GetString(objv[2]): "global";
+    entryPtr = Tcl_FindHashEntry(markNamesPtr, markName);
+    if (entryPtr == NULL) {
+        Tcl_AppendResult(interp, "mark \"", markName,
+            "\" doesn't exist", NULL);
+        return TCL_ERROR;
+    }
+    markPtr = (RpRusageStats*)Tcl_GetHashValue(entryPtr);
+
+    listObjPtr = Tcl_NewListObj(0, (Tcl_Obj **)NULL);
+    /*
+     * Compute: START TIME
+     */
+    objPtr = Tcl_NewStringObj("start", 5);
+    Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
+    tval = RpRusageTimeDiff(&markPtr->times, &RpRusage_Start.times);
+    objPtr = Tcl_NewDoubleObj(tval);
+    Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
+
+    /*
+     * Compute: WALL TIME
+     */
+    objPtr = Tcl_NewStringObj("walltime", 8);
+    Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
+    tval = RpRusageTimeDiff(&curstats.times, &markPtr->times);
+    objPtr = Tcl_NewDoubleObj(tval);
+    Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
+
+
+    /*
+     * Compute: CPU TIME = user time + system time
+     */
+    objPtr = Tcl_NewStringObj("cputime", 7);
+    Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
+    tval = RpRusageTimeDiff(&curstats.resources.ru_utime,
+             &markPtr->resources.ru_utime)
+         + RpRusageTimeDiff(&curstats.resources.ru_stime,
+             &markPtr->resources.ru_stime);
+    objPtr = Tcl_NewDoubleObj(tval);
+    Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
+    Tcl_SetObjResult(interp, listObjPtr);
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRusageForgetOp()
+ *
+ *  Invoked whenever someone uses the "rusage forget" command to release
+ *  information previous set by "rusage mark".  With no args, it releases
+ *  all known marks; otherwise, it releases just the specified mark
+ *  names.  This isn't usually needed, but if a program creates thousands
+ *  of marks, this gives a way to avoid a huge memory leak.
+ *  Handles the following syntax:
+ *
+ *      rusage forget ?name name...?
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpRusageForgetOp(cdata, interp, objc, objv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int objc;                 /* number of command line args */
+    Tcl_Obj *const *objv;     /* strings for command line args */
+{
+    int i;
+    char *markName;
+    Tcl_HashTable *markNamesPtr;
+    Tcl_HashEntry *entryPtr;
+    Tcl_HashSearch search;
+
+    markNamesPtr = (Tcl_HashTable *)
+        Tcl_GetAssocData(interp, "RpRusageMarks", NULL);
+
+    /*
+     * No args? Then clear all entries in the hash table.
+     */
+    if (objc == 2) {
+        for (entryPtr = Tcl_FirstHashEntry(markNamesPtr, &search);
+             entryPtr != NULL;
+             entryPtr = Tcl_NextHashEntry(&search)) {
+            ckfree((char *)Tcl_GetHashValue(entryPtr));
+        }
+        Tcl_DeleteHashTable(markNamesPtr);
+        Tcl_InitHashTable(markNamesPtr, TCL_STRING_KEYS);
+    }
+
+    /*
+     * Otherwise, delete only the specified marks.  Be forgiving.
+     * If a mark isn't recognized, ignore it.
+     */
+    else {
+        for (i=2; i < objc; i++) {
+            markName = Tcl_GetString(objv[i]);
+            entryPtr = Tcl_FindHashEntry(markNamesPtr, markName);
+            if (entryPtr) {
+                ckfree((char *)Tcl_GetHashValue(entryPtr));
+                Tcl_DeleteHashEntry(entryPtr);
+            }
+        }
+    }
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRusageCapture()
+ *
+ *  Used internally to capture a snapshot of current time and resource
+ *  usage.  Stores the stats in the given data structure.
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpRusageCapture(interp, rptr)
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    RpRusageStats *rptr;      /* returns: snapshot of stats */
+{
+    int status;
+
+    status = getrusage(RUSAGE_CHILDREN, &rptr->resources);
+    if (status != 0) {
+        Tcl_AppendResult(interp, "unexpected error from getrusage()",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    status = gettimeofday(&rptr->times, (struct timezone*)NULL);
+    if (status != 0) {
+        Tcl_AppendResult(interp, "unexpected error from gettimeofday()",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpRusageTimeDiff()
+ *
+ *  Used internally to compute the difference between two timeval
+ *  structures.  Returns a double precision value representing the
+ *  time difference.
+ * ------------------------------------------------------------------------
+ */
+static double
+RpRusageTimeDiff(currptr, prevptr)
+    struct timeval *currptr;  /* current time */
+    struct timeval *prevptr;  /*  - previous time */
+{
+    double tval;
+
+    if (prevptr) {
+        tval = (currptr->tv_sec - prevptr->tv_sec)
+                 + 1.0e-6*(currptr->tv_usec - prevptr->tv_usec);
+    } else {
+        tval = currptr->tv_sec + 1.0e-6*currptr->tv_usec;
+    }
+    return tval;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpDestroyMarkNames()
+ *
+ *  Used internally to clean up the marker names when the interpreter
+ *  that owns them is being destroyed.
+ * ------------------------------------------------------------------------
+ */
+static void
+RpDestroyMarkNames(
+    ClientData cdata,			/* data being destroyed */
+    Tcl_Interp *interp)			/* Interpreter that owned the data */
+{
+    Tcl_HashTable *markNamesPtr = cdata;
+    Tcl_HashEntry *entryPtr;
+    Tcl_HashSearch search;
+
+    for (entryPtr = Tcl_FirstHashEntry(markNamesPtr, &search); entryPtr != NULL;
+         entryPtr = Tcl_NextHashEntry(&search)) {
+        ckfree( (char*)Tcl_GetHashValue(entryPtr) );
+    }
+    Tcl_DeleteHashTable(markNamesPtr);
+    ckfree((char*)markNamesPtr);
+}
Index: /tags/1.6.0/lang/tcl/src/RpSignal.c
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpSignal.c	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpSignal.c	(revision 6168)
@@ -0,0 +1,319 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::signal
+ *
+ *  This is an interface to the system signal() function, which allows
+ *  you to catch and handle system signals.  We use this in Rappture
+ *  to catch a SIGHUP and clean up scratch files.
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <tcl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+
+static Tcl_CmdProc RpSignalCmd;
+static void RpSignalHandler _ANSI_ARGS_((int signum));
+static int RpSignalOptionError _ANSI_ARGS_((Tcl_Interp *interp,
+    CONST84 char *option));
+
+/*
+ * Global table of all known signal handlers:
+ */
+typedef struct RpSignals {
+    Tcl_Interp *interp;
+    Tcl_HashTable *handlers;
+} RpSignals;
+
+static RpSignals *SigInfoPtr = NULL;
+
+/*
+ * signal configuration options:
+ */
+typedef struct RpSignalNames {
+    char *name;
+    int signum;
+} RpSignalNames;
+
+#ifdef _WIN32
+#define SIGHUP -1
+#define SIGQUIT -1
+#define SIGKILL -1
+#define SIGPIPE -1
+#define SIGALRM -1
+#define SIGUSR1 -1
+#define SIGUSR2 -1
+#define SIGCHLD -1
+#define SIGCONT -1
+#define SIGSTOP -1
+#define SIGTSTP -1
+#define SIGTTIN -1
+#define SIGTTOU -1
+#endif
+
+static RpSignalNames signalNames[] = {
+    {"SIGHUP",  SIGHUP},   /* Hangup detected on controlling terminal */
+    {"SIGINT",  SIGINT},   /* Interrupt from keyboard */
+    {"SIGQUIT", SIGQUIT},  /* Quit from keyboard */
+    {"SIGILL",  SIGILL},   /* Illegal Instruction */
+    {"SIGABRT", SIGABRT},  /* Abort signal from abort(3) */
+    {"SIGFPE",  SIGFPE},   /* Floating point exception */
+    {"SIGKILL", SIGKILL},  /* Kill signal */
+    {"SIGSEGV", SIGSEGV},  /* Invalid memory reference */
+    {"SIGPIPE", SIGPIPE},  /* Broken pipe: write to pipe with no readers */
+    {"SIGALRM", SIGALRM},  /* Timer signal from alarm(2) */
+    {"SIGTERM", SIGTERM},  /* Termination signal */
+    {"SIGUSR1", SIGUSR1},  /* User-defined signal 1 */
+    {"SIGUSR2", SIGUSR2},  /* User-defined signal 2 */
+    {"SIGCHLD", SIGCHLD},  /* Child stopped or terminated */
+    {"SIGCONT", SIGCONT},  /* Continue if stopped */
+    {"SIGSTOP", SIGSTOP},  /* Stop process */
+    {"SIGTSTP", SIGTSTP},  /* Stop typed at tty */
+    {"SIGTTIN", SIGTTIN},  /* tty input for background process */
+    {"SIGTTOU", SIGTTOU},  /* tty output for background process */
+    {(char*)NULL, 0}
+};
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpSignal_Init()
+ *
+ *  Called in Rappture_Init() to initialize the commands defined
+ *  in this file.
+ * ------------------------------------------------------------------------
+ */
+int
+RpSignal_Init(interp)
+    Tcl_Interp *interp;  /* interpreter being initialized */
+{
+    int i, isnew;
+    Tcl_HashTable *htPtr;
+    Tcl_HashEntry *entryPtr;
+
+    if (SigInfoPtr != NULL) {
+        Tcl_AppendResult(interp, "signals already being handled ",
+            "by another interpreter", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    /* create the table of signal handlers */
+    SigInfoPtr = (RpSignals*)ckalloc(sizeof(RpSignals));
+    SigInfoPtr->interp = interp;
+    SigInfoPtr->handlers = (Tcl_HashTable*)ckalloc(sizeof(Tcl_HashTable));
+    Tcl_InitHashTable(SigInfoPtr->handlers, TCL_STRING_KEYS);
+
+    for (i=0; signalNames[i].name != NULL; i++) {
+        entryPtr = Tcl_CreateHashEntry(SigInfoPtr->handlers,
+            signalNames[i].name, &isnew);
+
+        htPtr = (Tcl_HashTable*)ckalloc(sizeof(Tcl_HashTable));
+        Tcl_InitHashTable(htPtr, TCL_STRING_KEYS);
+
+        Tcl_SetHashValue(entryPtr, (char*)htPtr);
+    }
+
+    /* install the signal command */
+    Tcl_CreateCommand(interp, "::Rappture::signal", RpSignalCmd,
+        (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpSignalCmd()
+ *
+ *  Invoked whenever someone uses the "signal" command to get/set
+ *  limits for child processes.  Handles the following syntax:
+ *
+ *      signal ?<signal>? ?<handler>? ?<callback>?
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpSignalCmd(cdata, interp, argc, argv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int argc;                 /* number of command line args */
+    CONST84 char *argv[];     /* strings for command line args */
+{
+    Tcl_HashTable *htPtr;
+    Tcl_HashEntry *entryPtr;
+    Tcl_HashSearch pos;
+    int i, isnew, signum;
+
+    /*
+     * HANDLE: signal
+     *   return a list of all signal names
+     */
+    if (argc < 2) {
+        for (i=0; signalNames[i].name != NULL; i++) {
+            Tcl_AppendElement(interp, signalNames[i].name);
+        }
+        return TCL_OK;
+    }
+
+    /*
+     * HANDLE: signal <signal>
+     *   return a list of handler names for one signal
+     */
+    if (argc < 3) {
+        entryPtr = Tcl_FindHashEntry(SigInfoPtr->handlers, argv[1]);
+        if (entryPtr == NULL) {
+            return RpSignalOptionError(interp, argv[1]);
+        }
+
+        htPtr = (Tcl_HashTable*)Tcl_GetHashValue(entryPtr);
+        entryPtr = Tcl_FirstHashEntry(htPtr, &pos);
+        while (entryPtr != NULL) {
+            Tcl_AppendElement(interp, Tcl_GetHashKey(htPtr, entryPtr));
+            entryPtr = Tcl_NextHashEntry(&pos);
+        }
+        return TCL_OK;
+    }
+
+    /*
+     * HANDLE: signal <signal> <handler>
+     *   return the command for a certain handler on a signal
+     */
+    if (argc < 4) {
+        entryPtr = Tcl_FindHashEntry(SigInfoPtr->handlers, argv[1]);
+        if (entryPtr == NULL) {
+            return RpSignalOptionError(interp, argv[1]);
+        }
+
+        htPtr = (Tcl_HashTable*)Tcl_GetHashValue(entryPtr);
+        entryPtr = Tcl_FindHashEntry(htPtr, argv[2]);
+        if (entryPtr == NULL) {
+            Tcl_AppendResult(interp, "handler \"", argv[2],
+                "\" not defined", (char*)NULL);
+            return TCL_ERROR;
+        }
+        Tcl_SetResult(interp, (char*)Tcl_GetHashValue(entryPtr), TCL_VOLATILE);
+        return TCL_OK;
+    }
+
+    /*
+     * HANDLE: signal <signal> <handler> <command>
+     *   define the command handler for a signal
+     */
+    if (argc < 5) {
+        entryPtr = Tcl_FindHashEntry(SigInfoPtr->handlers, argv[1]);
+        if (entryPtr == NULL) {
+            return RpSignalOptionError(interp, argv[1]);
+        }
+
+        htPtr = (Tcl_HashTable*)Tcl_GetHashValue(entryPtr);
+        entryPtr = Tcl_CreateHashEntry(htPtr, argv[2], &isnew);
+        if (*argv[3] == '\0') {
+            if (!isnew) {
+                free((void*)Tcl_GetHashValue(entryPtr));
+            }
+            Tcl_DeleteHashEntry(entryPtr);
+        } else {
+            Tcl_SetHashValue(entryPtr, (ClientData)strdup(argv[3]));
+        }
+
+        /*
+         * If there are any handlers for this signal, then install
+         * a signal handler.  Otherwise, remove the signal handler.
+         */
+        signum = -1;
+        for (i=0; signalNames[i].name != NULL; i++) {
+            if (strcmp(argv[1], signalNames[i].name) == 0) {
+                signum = signalNames[i].signum;
+                break;
+            }
+        }
+        if (Tcl_FirstHashEntry(htPtr, &pos) != NULL) {
+            (void) signal(signum, RpSignalHandler);
+        } else {
+            (void) signal(signum, SIG_DFL);
+        }
+        return TCL_OK;
+    }
+
+    Tcl_AppendResult(interp, "wrong # args: should be \"",
+        argv[0], " ?signal? ?handler? ?command?\"", (char*)NULL);
+    return TCL_ERROR;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpSignalHandler()
+ *
+ *  Invoked whenever the "signal" command is deleted, to clean up
+ *  all storage in the handler table.
+ * ------------------------------------------------------------------------
+ */
+static void
+RpSignalHandler(signum)
+    int signum;               /* signal being handled */
+{
+    int i, status;
+    Tcl_HashTable *htPtr;
+    Tcl_HashEntry *entryPtr;
+    Tcl_HashSearch pos;
+    char *cmd;
+
+    for (i=0; signalNames[i].name != NULL; i++) {
+        if (signalNames[i].signum == signum) {
+            break;
+        }
+    }
+    if (signalNames[i].name != NULL) {
+        entryPtr = Tcl_FindHashEntry(SigInfoPtr->handlers, signalNames[i].name);
+        if (entryPtr) {
+            htPtr = (Tcl_HashTable*)Tcl_GetHashValue(entryPtr);
+
+            /* execute all of the handlers associated with this signal */
+            entryPtr = Tcl_FirstHashEntry(htPtr, &pos);
+            while (entryPtr) {
+                cmd = (char*)Tcl_GetHashValue(entryPtr);
+
+                status = Tcl_Eval(SigInfoPtr->interp, cmd);
+                if (status != TCL_OK) {
+                    Tcl_BackgroundError(SigInfoPtr->interp);
+                }
+                entryPtr = Tcl_NextHashEntry(&pos);
+            }
+        }
+    }
+    Tcl_ResetResult(SigInfoPtr->interp);
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpSignalOptionError()
+ *
+ *  Used internally to set an error message in the interpreter
+ *  describing an unrecognized signal option.  Sets the result of
+ *  the Tcl interpreter and returns an error status code.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpSignalOptionError(interp, option)
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    CONST84 char *option;     /* bad option supplied by the user */
+{
+    int i;
+
+    Tcl_AppendResult(interp, "bad signal \"", option,
+        "\": should be one of ",(char*)NULL);
+
+    for (i=0; signalNames[i].name != NULL; i++) {
+        if (i > 0) {
+            Tcl_AppendResult(interp, ", ", (char*)NULL);
+        }
+        Tcl_AppendResult(interp, signalNames[i].name, (char*)NULL);
+    }
+    return TCL_ERROR;
+}
Index: /tags/1.6.0/lang/tcl/src/RpSlice.c
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpSlice.c	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpSlice.c	(revision 6168)
@@ -0,0 +1,248 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::slice
+ *
+ *  This is similar to the usual Tcl "split" command, in that it
+ *  splits a string into a series of words.  The difference is that
+ *  this command understands quoting characters and will ignore the
+ *  split inside quotes, and it will also treat a bunch of split
+ *  characters as synonymous and group them together, treating any
+ *  combination of them together as a single split.  (Tcl gives you
+ *  a bunch of {} empty strings between such characters.)
+ *
+ *  EXAMPLES:
+ *    Rappture::slice -open { -close } -separators ", \t\n" $string
+ *    Rappture::slice -open \" -close \" -separators ", " $string
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <tcl.h>
+#include <string.h>
+
+static Tcl_ObjCmdProc RpSliceCmd;
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpSlice_Init()
+ *
+ *  Called in Rappture_Init() to initialize the commands defined
+ *  in this file.
+ * ------------------------------------------------------------------------
+ */
+int
+RpSlice_Init(interp)
+    Tcl_Interp *interp;  /* interpreter being initialized */
+{
+    Tcl_CreateObjCommand(interp, "::Rappture::slice", RpSliceCmd, NULL, NULL);
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpSliceCmd()
+ *
+ *  Invoked whenever someone uses the "slice" command to slice a string
+ *  into multiple components.  Handles the following syntax:
+ *
+ *      slice ?-open <char>? ?-close <char>? ?-separators <abc>? <string>
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpSliceCmd(cdata, interp, objc, objv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int objc;                 /* number of command line args */
+    Tcl_Obj *const *objv;     /* strings for command line args */
+{
+    char *openq = ""; int openqLen = 0;
+    char *closeq = ""; int closeqLen = 0;
+    char *sep = " \t\n"; int sepLen = 3;
+
+    Tcl_Obj *resultPtr, *objPtr;
+    char *arg, *str, *token;
+    int len, tlen, pos, quotec;
+
+    /*
+     * Handle any flags on the command line.
+     */
+    pos = 1;
+    while (pos < objc-1) {
+        arg = Tcl_GetStringFromObj(objv[pos], &len);
+        if (*arg == '-') {
+            if (strcmp(arg,"-open") == 0) {
+                if (pos+1 < objc) {
+                    openq = Tcl_GetStringFromObj(objv[pos+1], &openqLen);
+                    pos += 2;
+                } else {
+                    Tcl_AppendResult(interp, "missing value for -open",
+                        (char*)NULL);
+                    return TCL_ERROR;
+                }
+            }
+            else if (strcmp(arg,"-close") == 0) {
+                if (pos+1 < objc) {
+                    closeq = Tcl_GetStringFromObj(objv[pos+1], &closeqLen);
+                    pos += 2;
+                } else {
+                    Tcl_AppendResult(interp, "missing value for -close",
+                        (char*)NULL);
+                    return TCL_ERROR;
+                }
+            }
+            else if (strcmp(arg,"-separators") == 0) {
+                if (pos+1 < objc) {
+                    sep = Tcl_GetStringFromObj(objv[pos+1], &sepLen);
+                    pos += 2;
+                } else {
+                    Tcl_AppendResult(interp, "missing value for -separators",
+                        (char*)NULL);
+                    return TCL_ERROR;
+                }
+            }
+            else if (strcmp(arg,"--") == 0) {
+                pos++;
+                break;
+            }
+            else {
+                Tcl_AppendResult(interp, "bad option \"", arg, "\":",
+                    " should be -open, -close, -separators, --", (char*)NULL);
+                return TCL_ERROR;
+            }
+        } else {
+            break;
+        }
+    }
+
+    /*
+     * Open/close quote strings must match in length.  Each char in openq
+     * corresponds to a close quote in closeq.
+     */
+    if (openqLen != closeqLen) {
+        Tcl_AppendResult(interp, "must have same number of quote characters"
+            " for -open and -close", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    if (pos != objc-1) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"",
+            Tcl_GetString(objv[0]), " ?-open chars? ?-close chars?",
+            " ?-separators chars? ?--? string", (char*)NULL);
+        return TCL_ERROR;
+    }
+    str = Tcl_GetStringFromObj(objv[pos], &len);
+
+    /*
+     * Scan through all characters.  If we find a match with an open quote,
+     * then go into "quotes" mode; keep scanning until we find a matching
+     * close quote.  If we find the start of a token, then mark it and keep
+     * searching.  If we find a separator, then add the token to the list
+     * and skip over remaining separators.
+     */
+    resultPtr = Tcl_NewListObj(0, NULL);
+    token = NULL;
+    quotec = -1;
+
+    while (len > 0) {
+        /*
+         * If we're in a quoted part, then look for a closing quote.
+         */
+        if (quotec >= 0) {
+            if (*str == '\\') {
+                /* ignore the next character no matter what it is */
+                str++; len--;
+                if (len > 0) { str++; len--; }
+                continue;
+            }
+
+            if (*str == closeq[quotec]) {
+                /* found a close quote -- out of quote mode and move on */
+                tlen = str-token;
+                objPtr = Tcl_NewStringObj(token,tlen);
+                Tcl_ListObjAppendElement(interp, resultPtr, objPtr);
+                token = NULL;
+                quotec = -1;
+            }
+        }
+
+        /*
+         * If we're in the middle of a token, then look for the next
+         * separator.  When we find it, add the token to the result
+         * list.
+         */
+        else if (token) {
+            if (*str == '\\') {
+                /* ignore the next character no matter what it is */
+                str++; len--;
+                if (len > 0) { str++; len--; }
+                continue;
+            }
+            for (pos=0; pos < sepLen; pos++) {
+                if (*str == sep[pos]) {
+                    break;
+                }
+            }
+            if (pos < sepLen) {
+                /* found a separator -- add the token */
+                tlen = str-token;
+                objPtr = Tcl_NewStringObj(token,tlen);
+                Tcl_ListObjAppendElement(interp, resultPtr, objPtr);
+                token = NULL;
+                continue;
+            }
+        }
+
+        /*
+         * If we're between tokens, then look for either a separator
+         * or an open quote.  If we don't find either, then we've found
+         * the start of a token.
+         */
+        else {
+            for (pos=0; pos < sepLen; pos++) {
+                if (*str == sep[pos]) {
+                    break;
+                }
+            }
+            if (pos >= sepLen) {
+                /* no separator -- look for an open quote */
+                for (pos=0; pos < openqLen; pos++) {
+                    if (*str == openq[pos]) {
+                        break;
+                    }
+                }
+                if (pos < openqLen) {
+                    /* found an open quote -- start quote mode */
+                    quotec = pos;
+                    token = str+1;
+                } else {
+                    /* not a sep or a quote -- start a token */
+                    token = str;
+                }
+            }
+        }
+
+        /* next character */
+        str++; len--;
+    }
+
+    /*
+     * At the end of the string.  Have a token in progress?  Then add
+     * it onto the result.
+     */
+    if (token) {
+        tlen = str-token;
+        objPtr = Tcl_NewStringObj(token, tlen);
+        Tcl_ListObjAppendElement(interp, resultPtr, objPtr);
+    }
+
+    Tcl_SetObjResult(interp, resultPtr);
+    return TCL_OK;
+}
Index: /tags/1.6.0/lang/tcl/src/RpSysinfo.c
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpSysinfo.c	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpSysinfo.c	(revision 6168)
@@ -0,0 +1,212 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::sysinfo
+ *
+ *  This is an interface to the system sysinfo() function, which gives
+ *  information about system load averages, use of virtual memory, etc.
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "config.h"
+#include <tcl.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+
+static Tcl_CmdProc RpSysinfoCmd;
+
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpSysinfo_Init()
+ *
+ *  Called in Rappture_Init() to initialize the commands defined
+ *  in this file.
+ * ------------------------------------------------------------------------
+ */
+int
+RpSysinfo_Init(interp)
+    Tcl_Interp *interp;  /* interpreter being initialized */
+{
+    /* install the sysinfo command */
+    Tcl_CreateCommand(interp, "::Rappture::sysinfo", RpSysinfoCmd,
+        (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    return TCL_OK;
+}
+
+#ifndef HAVE_SYSINFO
+
+static int
+RpSysinfoCmd(cdata, interp, argc, argv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int argc;                 /* number of command line args */
+    CONST84 char *argv[];     /* strings for command line args */
+{
+    Tcl_SetResult(interp, "command not implemented: no sysinfo", TCL_STATIC);
+    return TCL_ERROR;
+}
+
+#else
+
+#ifdef HAVE_SYS_SYSINFO_H
+#include <sys/sysinfo.h>
+#endif	/* HAVE_SYS_SYSINFO_H */
+
+#define RP_SLOT_LONG   1
+#define RP_SLOT_ULONG  2
+#define RP_SLOT_USHORT 3
+#define RP_SLOT_LOAD   4
+
+struct rpSysinfoList {
+    const char *name;		/* Name of this system parameter */
+    int type;		        /* Parameter type (long, unsigned long,
+				 * etc.) */
+    int offset;			/* Offset into sysinfo struct */
+};
+
+#ifdef offsetof
+#define Offset(type, field) ((int) offsetof(type, field))
+#else
+#define Offset(type, field) ((int) ((char *) &((type *) 0)->field))
+#endif
+
+static struct rpSysinfoList RpSysinfoList [] = {
+    {"freeram",   RP_SLOT_ULONG,  Offset(struct sysinfo, freeram)},
+    {"freeswap",  RP_SLOT_ULONG,  Offset(struct sysinfo, freeswap)},
+    {"load1",     RP_SLOT_LOAD,   Offset(struct sysinfo, loads[0])},
+    {"load5",     RP_SLOT_LOAD,   Offset(struct sysinfo, loads[1])},
+    {"load15",    RP_SLOT_LOAD,   Offset(struct sysinfo, loads[2])},
+    {"procs",     RP_SLOT_USHORT, Offset(struct sysinfo, procs)},
+    {"totalram",  RP_SLOT_ULONG,  Offset(struct sysinfo, totalram)},
+    {"totalswap", RP_SLOT_ULONG,  Offset(struct sysinfo, totalswap)},
+    {"uptime",    RP_SLOT_LONG,   Offset(struct sysinfo, uptime)},
+    {NULL, 0, 0}
+};
+
+static Tcl_Obj* RpSysinfoValue(struct sysinfo *sinfo, int idx);
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpSysinfoCmd()
+ *
+ *  Invoked whenever someone uses the "sysinfo" command to get info
+ *  about system load.  Handles the following syntax:
+ *
+ *      sysinfo ?<keyword>...?
+ *
+ *  With no extra args, it returns a list of the form "key1 val1 key2
+ *  val2 ..." with all known system info.  Otherwise, it treats each
+ *  argument as a desired keyword and returns only the values for the
+ *  specified keywords.
+ *
+ *  Returns TCL_OK on success, and TCL_ERROR (along with an error
+ *  message in the interpreter) if anything goes wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpSysinfoCmd(cdata, interp, argc, argv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int argc;                 /* number of command line args */
+    CONST84 char *argv[];     /* strings for command line args */
+{
+    char c;
+    int n, i;
+    struct sysinfo info;
+    Tcl_Obj *resultPtr;
+
+    if (sysinfo(&info) < 0) {
+        Tcl_SetResult(interp, "oops! can't query system info", TCL_STATIC);
+        return TCL_ERROR;
+    }
+    resultPtr = Tcl_GetObjResult(interp);
+
+    /*
+     *  If no args are given, return all info in the form:
+     *    key1 value1 key2 value2 ...
+     */
+    if (argc < 2) {
+        for (i=0; RpSysinfoList[i].name != NULL; i++) {
+            Tcl_ListObjAppendElement(interp, resultPtr,
+                Tcl_NewStringObj(RpSysinfoList[i].name, -1));
+            Tcl_ListObjAppendElement(interp, resultPtr,
+                RpSysinfoValue(&info, i));
+        }
+        return TCL_OK;
+    }
+
+    /*
+     *  Query and return each of the specified values.
+     */
+    for (n=1; n < argc; n++) {
+        c = *argv[n];
+        for (i=0; RpSysinfoList[i].name != NULL; i++) {
+            if (c == *RpSysinfoList[i].name
+                  && strcmp(argv[n], RpSysinfoList[i].name) == 0) {
+                break;
+            }
+        }
+
+        /* couldn't find the name in the list?  then return an error */
+        if (RpSysinfoList[i].name == NULL) {
+            Tcl_ResetResult(interp);
+            Tcl_AppendResult(interp, "bad parameter \"",
+                argv[n], "\": should be one of ", (char*)NULL);
+            for (i=0; RpSysinfoList[i].name != NULL; i++) {
+                Tcl_AppendResult(interp, (i == 0) ? "" : ", ",
+                    RpSysinfoList[i].name, (char*)NULL);
+            }
+            return TCL_ERROR;
+        }
+        Tcl_ListObjAppendElement(interp, resultPtr, RpSysinfoValue(&info, i));
+    }
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpSysinfoValue()
+ *
+ *  Returns the value for a desired system info parameter, specified as
+ *  as offset into the global RpSysinfoList array.  The value is returned
+ *  as a Tcl_Obj, which should be used or freed by the caller.
+ * ------------------------------------------------------------------------
+ */
+static Tcl_Obj*
+RpSysinfoValue(sinfo, idx)
+    struct sysinfo *sinfo;    /* system load info */
+    int idx;                  /* index for desired sysinfo value */
+{
+    char *ptr;
+    int ival; long lval; double dval, loadscale;
+    ptr = (char*)sinfo + RpSysinfoList[idx].offset;
+
+    switch (RpSysinfoList[idx].type) {
+        case RP_SLOT_LONG:
+            return Tcl_NewLongObj(*(long*)ptr);
+            break;
+        case RP_SLOT_ULONG:
+            lval = *(unsigned long*)ptr;
+            return Tcl_NewLongObj(lval);
+            break;
+        case RP_SLOT_USHORT:
+            ival = *(unsigned short*)ptr;
+            return Tcl_NewIntObj(ival);
+            break;
+        case RP_SLOT_LOAD:
+            loadscale = (double)(1 << SI_LOAD_SHIFT);
+            dval = (double)(*(unsigned long*)ptr)/loadscale;
+            return Tcl_NewDoubleObj(dval);
+            break;
+    }
+    return NULL;
+}
+
+#endif /*HAVE_SYSINFO*/
Index: /tags/1.6.0/lang/tcl/src/RpUnitsTclInterface.cc
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpUnitsTclInterface.cc	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpUnitsTclInterface.cc	(revision 6168)
@@ -0,0 +1,525 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::units
+ *
+ *  This is an interface to the rappture units module.
+ *  It allows you to convert between units and format values.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <tcl.h>
+#include "RpUnits.h"
+
+extern "C" Tcl_AppInitProc RpUnits_Init;
+
+static Tcl_CmdProc RpTclUnitsConvert;
+static Tcl_CmdProc RpTclUnitsDesc;
+static Tcl_CmdProc RpTclUnitsSysFor;
+static Tcl_CmdProc RpTclUnitsSysAll;
+static Tcl_CmdProc RpTclUnitsSearchFor;
+
+
+/**********************************************************************/
+// FUNCTION: RpUnits_Init()
+/// Initializes the Rappture Units module and commands defined below
+/**
+ * Called in Rappture_Init() to initialize the Rappture Units module.
+ * Initialized commands include:
+ * ::Rappture::Units::convert
+ * ::Rappture::Units::description
+ * ::Rappture::Units::System::for
+ * ::Rappture::Units::System::all
+ * ::Rappture::Units::Search::for
+ */
+
+#include <algorithm> 
+#include <functional>
+#include <cctype>
+
+// Trim from start
+static inline std::string &ltrim(std::string &s) 
+{
+    s.erase(s.begin(), 
+	std::find_if(s.begin(), s.end(), 
+		     std::not1(std::ptr_fun<int, int>(std::isspace))));
+    return s;
+}
+
+// Trim from end
+static inline std::string &rtrim(std::string &s) 
+{
+    s.erase(std::find_if(s.rbegin(), s.rend(), 
+	std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end());
+    return s;
+}
+
+// Trim from both ends
+static inline std::string &trim(std::string &s) 
+{
+    return ltrim(rtrim(s));
+}
+
+extern "C" int
+RpUnits_Init(Tcl_Interp *interp)
+{
+
+    Tcl_CreateCommand(interp, "::Rappture::Units::convert",
+        RpTclUnitsConvert, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    Tcl_CreateCommand(interp, "::Rappture::Units::description",
+        RpTclUnitsDesc, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    Tcl_CreateCommand(interp, "::Rappture::Units::System::for",
+        RpTclUnitsSysFor, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    Tcl_CreateCommand(interp, "::Rappture::Units::System::all",
+        RpTclUnitsSysAll, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    Tcl_CreateCommand(interp, "::Rappture::Units::Search::for",
+        RpTclUnitsSearchFor, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: RpTclUnitsConvert()
+/// Rappture::Units::convert function in Tcl, used to convert unit.
+/**
+ * Converts values between recognized units in Rappture.
+ * Full function call:
+ * ::Rappture::Units::convert <value> ?-context units? ?-to units? ?-units on/off?
+ *
+ * units attached to <value> take precedence over units 
+ * provided in -context option.
+ */
+
+
+int
+RpTclUnitsConvert   (   ClientData cdata,
+                        Tcl_Interp *interp,
+                        int argc,
+                        const char *argv[]  )
+{
+    std::string inValue       = ""; // value provided by the user
+    std::string origUnitsName = "";
+    std::string fromUnitsName = ""; // name of the units for user's value
+    std::string toUnitsName   = ""; // name of the units to convert to
+    std::string option        = ""; // tmp var for parsing command line options
+    std::string val           = ""; // inValue + fromUnitsName as one string
+    std::string convertedVal  = ""; // result of conversion
+    int showUnits             = 1;  // flag if we should show units in result
+    int result                = 0;  // flag if the conversion was successful
+
+    int nextarg          = 1; // start parsing using the '2'th argument
+    int argsLeft         = 0; // temp variable for calculation
+    int retVal           = 0; // TCL_OK or TCL_ERROR depending on result val
+    char *endptr         = NULL;
+
+    int err                   = 0;  // err code for validate()
+    std::string type          = ""; // junk variable that validate() needs
+    std::list<std::string> compatList;
+    std::list<std::string>::iterator compatListIter;
+    std::string listStr       = ""; // string version of compatList
+    std::string mesg          = ""; // error mesg text
+
+    Tcl_ResetResult(interp);
+
+    // parse through command line options
+    if (argc < 2) {
+        Tcl_AppendResult(interp,
+            "wrong # args: should be \"",
+            // argv[0]," value args\"",
+            argv[0], 
+            " <value> ?-context units? ?-to units? ?-units on/off?\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    inValue = std::string(argv[nextarg++]);
+
+    argsLeft = (argc-nextarg);
+    while (argsLeft > 0 ) {
+        if (*argv[nextarg] == '-') {
+            option = std::string(argv[nextarg]);
+
+            if ( option == "-context" ) {
+                nextarg++;
+                if (argv[nextarg] != NULL) {
+                    fromUnitsName = std::string(argv[nextarg]);
+                    err = 0;
+                    origUnitsName = fromUnitsName;
+                    err = RpUnits::validate(fromUnitsName,type,&compatList);
+                    if ( err != 0) {
+                        Tcl_AppendResult(interp,
+                            "bad value \"", origUnitsName.c_str(), 
+                            "\": should be a recognized unit for Rappture",
+                            (char*)NULL);
+                        return TCL_ERROR;
+                    }
+                } else {
+                    // if user does not specify wishes for this option,
+                    // set fromUnitsName to an empty string.
+                    fromUnitsName = "";
+                }
+            } else if ( option == "-to" ) {
+                nextarg++;
+                if (argv[nextarg] != NULL) {
+                    toUnitsName = std::string(argv[nextarg]);
+                    err = 0;
+                    origUnitsName = toUnitsName;
+                    err = RpUnits::validate(toUnitsName,type);
+                    if (err != 0) {
+                        Tcl_AppendResult(interp,
+                            "bad value \"", origUnitsName.c_str(), 
+                            "\": should be a recognized unit for Rappture",
+                            (char*)NULL);
+                        return TCL_ERROR;
+                    }
+                } else {
+                    // if user does not specify wishes for this option,
+                    // set toUnitsName to an empty string.
+                    toUnitsName = "";
+                }
+            } else if ( option == "-units" ) {
+                nextarg++;
+                if (argv[nextarg] != NULL) {
+                    if (Tcl_GetBoolean(interp, argv[nextarg], &showUnits)) {
+                        // unrecognized value for -units option
+                        // Tcl_GetBoolean fills in error message
+                        // Tcl_AppendResult(interp,
+                        //     "expected boolean value but got \"", 
+                        //     argv[nextarg], "\"", (char*)NULL);
+                        return TCL_ERROR;
+                    }
+                } else {
+                    // if user does not specify wishes for this option,
+                    // return error.
+                    // unrecognized value for -units option
+                    Tcl_AppendResult(interp,
+                        "expected boolean value but got \"\"", (char*)NULL);
+                    return TCL_ERROR;
+                }
+            } else {
+                // unrecognized option
+                Tcl_AppendResult(interp, "bad option \"", argv[nextarg], 
+                        "\": should be -context, -to, -units",
+                        (char*)NULL);
+                return TCL_ERROR;
+            }
+
+            nextarg++;
+        } else {
+            // unrecognized input
+            Tcl_AppendResult(interp, "bad option \"", argv[nextarg], "\": ",
+                "should be -context, -to, -units",
+                (char*)NULL);
+            return TCL_ERROR;
+
+        }
+
+        argsLeft = (argc-nextarg);
+    }
+
+    // check the inValue to see if it has units
+    // or if we should use those provided in -context option
+
+
+    // Trim away white space from the value.  
+    trim(inValue);
+
+    strtod(inValue.c_str(), &endptr);
+    if (endptr == inValue.c_str()) {
+        // there was no numeric value that could be pulled from inValue
+        // return error
+
+        mesg =  "\": should be a real number with units";
+
+        if (!fromUnitsName.empty()) {
+            list2str(compatList,listStr);
+            mesg = mesg + " of (" + listStr + ")";
+        }
+ 
+        Tcl_AppendResult(interp, "bad value \"", 
+                inValue.c_str(), mesg.c_str(), (char*)NULL);
+        return TCL_ERROR;
+    } else if ( ((unsigned)(endptr - inValue.c_str())) == inValue.length() ) {
+        // add 1 because we are subtracting indicies
+        // there were no units at the end of the inValue string
+        // rappture units convert expects the val variable to be 
+        // the quantity and units in one string
+
+        if (!fromUnitsName.empty()) {
+            val = inValue + fromUnitsName;
+        } else {
+            Tcl_AppendResult(interp, "value: \"", inValue.c_str(),
+                    "\" has unrecognized units", (char*)NULL);
+            return TCL_ERROR;
+        }
+    } else {
+        // there seemed to be units at the end of the inValue string
+        // we will ignore the -context flag and use the units in inValue
+        val = inValue;
+    }
+
+    // call the rappture units convert function
+    convertedVal = RpUnits::convert(val, toUnitsName, showUnits, &result);
+
+    if ( (!convertedVal.empty()) && (result == 0) ) {
+        // store the new result in the interpreter
+        Tcl_AppendResult(interp, convertedVal.c_str(), (char*)NULL);
+        retVal = TCL_OK;
+    } else {
+        // error while converting
+        Tcl_AppendResult(interp, 
+                convertedVal.c_str(),
+                (char*)NULL);
+        retVal = TCL_ERROR;
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: RpTclUnitsDesc()
+/// Rappture::Units::description function in Tcl, returns description of units
+/**
+ * Returns a description for the specified system of units.
+ * The description includes the abstract type (length, temperature, etc.)
+ * along with a list of all compatible systems.
+ *
+ * Full function call:
+ * ::Rappture::Units::description <units>
+ */
+
+int
+RpTclUnitsDesc      (   ClientData cdata,
+                        Tcl_Interp *interp,
+                        int argc,
+                        const char *argv[]  )
+{
+    std::string unitsName     = ""; // name of the units provided by user
+    std::string type          = ""; // name of the units provided by user
+    std::string listStr       = ""; // name of the units provided by user
+    // const RpUnits* unitsObj   = NULL;
+    std::list<std::string> compatList;
+
+    int nextarg               = 1; // start parsing using the '2'th argument
+    int err                   = 0; // err code for validate()
+
+    Tcl_ResetResult(interp);
+
+    // parse through command line options
+    if (argc != 2) {
+        Tcl_AppendResult(interp,
+                "wrong # args: should be \"", argv[0], 
+                " units\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    unitsName = std::string(argv[nextarg]);
+
+    err = RpUnits::validate(unitsName,type,&compatList);
+    if (err) {
+        /*
+         * according to tcl version, in this case we 
+         * should return an empty string. i happen to disagree.
+         * the next few lines is what i think the user should see.
+        Tcl_AppendResult(interp,
+            "bad value \"", unitsName.c_str(), 
+            "\": should be a recognized unit for Rappture",
+            (char*)NULL);
+        return TCL_ERROR;
+        */
+        return TCL_OK;
+    }
+
+    Tcl_AppendResult(interp, type.c_str(), (char*)NULL);
+
+    list2str(compatList,listStr);
+
+    Tcl_AppendResult(interp, " (", listStr.c_str() ,")", (char*)NULL);
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: RpTclUnitsSysFor()
+/// Rappture::Units::System::for fxn in Tcl, returns system for given units
+/**
+ * Returns the system, as a string, for the given system of units, or ""
+ * if there is no system that matches the units string.
+ *
+ * Full function call:
+ * ::Rappture::Units::System::for <units>
+ */
+
+int
+RpTclUnitsSysFor    (   ClientData cdata,
+                        Tcl_Interp *interp,
+                        int argc,
+                        const char *argv[]  )
+{
+    std::string unitsName     = ""; // name of the units provided by user
+    std::string type          = ""; // type/system of units to be returned to user
+    int nextarg               = 1; // start parsing using the '2'th argument
+    int err                   = 0;
+
+    Tcl_ResetResult(interp);
+
+    // parse through command line options
+    if (argc != 2) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"", 
+                argv[0], " units\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    unitsName = std::string(argv[nextarg]);
+
+    // look in our dictionary of units to see if 'unitsName' is a valid unit
+    // if so, return its type (or system) in the variable 'type'.
+    err = RpUnits::validate(unitsName,type);
+    if (err) {
+        /*
+         * according to tcl version, in this case we
+         * should return an empty string. i happen to disagree.
+         * the next few lines is what i think the user should see.
+        Tcl_AppendResult(interp,
+            "The units named: \"", unitsName.c_str(),
+            "\" is not a recognized unit for rappture",
+            (char*)NULL);
+        return TCL_ERROR;
+        */
+        return TCL_OK;
+    }
+
+    Tcl_AppendResult(interp, type.c_str(), (char*)NULL);
+    return TCL_OK;
+
+}
+
+/**********************************************************************/
+// FUNCTION: RpTclUnitsSysAll()
+/// Rappture::Units::System::all fxn in Tcl, returns list of compatible units
+/**
+ * Returns a list of all units compatible with the given units string.
+ * Compatible units are determined by following all conversion
+ * relationships that lead to the same base system.
+ *
+ * Full function call:
+ * ::Rappture::Units::System::all <units>
+ */
+
+int
+RpTclUnitsSysAll    (   ClientData cdata,
+                        Tcl_Interp *interp,
+                        int argc,
+                        const char *argv[]  )
+{
+    std::string unitsName     = ""; // name of the units provided by user
+    std::string type          = ""; // junk variable that validate() needs
+    // const RpUnits* unitsObj   = NULL;
+    std::list<std::string> compatList;
+    std::list<std::string>::iterator compatListIter;
+    int nextarg               = 1; // start parsing using the '2'th argument
+    int err                   = 0; // err code for validate
+
+    Tcl_ResetResult(interp);
+
+    // parse through command line options
+    if (argc != 2) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"", 
+                argv[0], " units\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    unitsName = std::string(argv[nextarg]);
+
+    err = RpUnits::validate(unitsName,type,&compatList);
+    if (err) {
+        /*
+         * according to tcl version, in this case we 
+         * should return an empty string. i happen to disagree.
+         * the next few lines is what i think the user should see.
+        Tcl_AppendResult(interp,
+            "The units named: \"", unitsName.c_str(), 
+            "\" is not a recognized unit for rappture",
+            (char*)NULL);
+        return TCL_ERROR;
+        */
+        return TCL_OK;
+    }
+
+    compatListIter = compatList.begin();
+
+    while (compatListIter != compatList.end()) {
+        Tcl_AppendElement(interp,(*compatListIter).c_str());
+        // increment the iterator
+        compatListIter++;
+    }
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: RpTclUnitsSearchfor()
+/// Rappture::Units::Search::for fxn in Tcl, returns string of found units
+/**
+ * Returns a list of all units from the given units string that
+ * were found within the units dictionary. This function takes in a
+ * string with or without a value. The string at the very least should
+ * contain the units you are searching for in the dictionary. If the
+ * string contains a value as well, the value will be ignored. A value
+ * is considered any numeric sequence as defined by the function
+ * strtod().
+ *
+ * Full function call:
+ * ::Rappture::Units::Search::for <units>
+ */
+
+int
+RpTclUnitsSearchFor (  ClientData cdata,
+                        Tcl_Interp *interp,
+                        int argc,
+                        const char *argv[]  )
+{
+    std::string unitsName     = ""; // name of the units provided by user
+    std::string origUnitsName = ""; // name of the units provided by user
+    std::string type          = ""; // junk variable that validate() needs
+    int nextarg               = 1; // start parsing using the '2'th argument
+    int err                   = 0; // err code for validate
+    double val                = 0;
+
+    Tcl_ResetResult(interp);
+
+    // parse through command line options
+    if (argc != 2) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"", 
+                argv[0], " units\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    // find where the unitsName begins
+    unitSlice(std::string(argv[nextarg]),unitsName,val);
+
+    err = RpUnits::validate(unitsName,type);
+    if (err) {
+        /*
+         * according to tcl version, in this case we
+         * should return an empty string. i happen to disagree.
+         * the next few lines is what i think the user should see.
+        Tcl_AppendResult(interp,
+            "Unrecognized units: \"", origUnitsName.c_str(), "\"", (char*)NULL);
+        return TCL_ERROR;
+        */
+        return TCL_OK;
+    }
+
+    Tcl_AppendResult(interp, unitsName.c_str(), (char*)NULL);
+
+    return TCL_OK;
+}
Index: /tags/1.6.0/lang/tcl/src/RpUtilsTclInterface.cc
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpUtilsTclInterface.cc	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpUtilsTclInterface.cc	(revision 6168)
@@ -0,0 +1,93 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::units
+ *
+ *  This is an interface to the rappture units module.
+ *  It allows you to convert between units and format values.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <tcl.h>
+#include "RpUtils.h"
+#include "stdlib.h"
+#include "string.h"
+
+extern "C" Tcl_AppInitProc RpUtils_Init;
+static Tcl_CmdProc RpTclUtilsProgress;
+
+/**********************************************************************/
+// FUNCTION: RpUtils_Init()
+/// Initializes the Rappture Utils module and commands defined below
+/**
+ * Called in RapptureGUI_Init() to initialize the Rappture Utils module.
+ * Initialized commands include:
+ * ::Rappture::progress
+ */
+
+int
+RpUtils_Init(Tcl_Interp *interp)
+{
+
+    Tcl_CreateCommand(interp, "::Rappture::Utils::progress",
+        RpTclUtilsProgress, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: RpTclUtilsProgress()
+/// Rappture::progress function in Tcl, used to print progress statements in gui.
+/**
+ * Full function call:
+ * ::Rappture::progress <value> ?-mesg mesg?
+ *
+ */
+
+int
+RpTclUtilsProgress  (   ClientData cdata,
+                        Tcl_Interp *interp,
+                        int argc,
+                        const char *argv[]  )
+{
+    int err                   = 0;  // err code for validate()
+    int nextarg               = 1;
+    long int val              = 0; // value
+    const char* mesg          = NULL; // error mesg text
+
+    Tcl_ResetResult(interp);
+
+    // parse through command line options
+    if ( (argc != 2) && (argc != 4) ) {
+        Tcl_AppendResult(interp,
+            "wrong # args: should be \"",argv[0]," <value> ?-mesg message?\"",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    val = (int) strtol(argv[nextarg++],NULL,10);
+
+    if (argc == 4) {
+        if (*(argv[nextarg]) == '-') {
+            if (strncmp("-mesg",argv[nextarg],5) == 0) {
+                nextarg++;
+                mesg = argv[nextarg];
+            }
+        }
+    }
+
+    err = Rappture::Utils::progress((int)val,mesg);
+
+    if (err != 0) {
+        Tcl_AppendResult(interp,
+            "error while printing progress to stdout",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    return TCL_OK;
+}
Index: /tags/1.6.0/lang/tcl/src/RpWinResource.c
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpWinResource.c	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpWinResource.c	(revision 6168)
@@ -0,0 +1,332 @@
+/*
+ * ----------------------------------------------------------------------
+ *  RpWinResource.c
+ *
+ *  This file provides the Windows ports for Rappture of the following 
+ *  resource management functions typically found on a Unix platform:
+ *
+ *      setrlimit(), getrlimit(), getrusage(), gettimeofday(), timeradd()
+ *
+ *  None of the ports are exactly perfect, but they are close enough
+ *  for Rappture's use.
+ * ======================================================================
+ *  AUTHOR:  Nicholas J. Kisseberth, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#define _WIN32_WINNT 0x0500
+
+#include <windows.h>
+#include <stdio.h>
+#include <limits.h>
+#include <psapi.h>
+#include <time.h>
+#include <sys/timeb.h>
+#include <errno.h>
+#include "RpWinResource.h"
+
+static HANDLE currentJob = NULL;
+
+void
+rpWinInitJob()
+{
+    if (currentJob == NULL) {
+        currentJob = CreateJobObject(NULL, NULL);
+        AssignProcessToJobObject(currentJob, GetCurrentProcess());
+    }
+}
+
+HANDLE 
+rpWinGetCurrentJob()
+{
+    return currentJob;
+}
+
+/* add timeval values */
+void
+timeradd(struct timeval *a, struct timeval *b, struct timeval *result)
+{
+    result->tv_sec = a->tv_sec + b->tv_sec;
+    result->tv_usec = a->tv_usec + b->tv_usec;
+    if (result->tv_usec >= 1000000)
+    {
+        result->tv_sec++;
+        result->tv_usec -= 1000000;
+    }
+}
+
+/* add rusage values */
+static void
+rusageadd(struct rusage *a, struct rusage *b, struct rusage *result)
+{
+    timeradd(&a->ru_utime, &b->ru_utime, &result->ru_utime);
+    timeradd(&a->ru_stime, &b->ru_stime, &result->ru_stime);
+    result->ru_maxrss = a->ru_maxrss + b->ru_maxrss;
+    result->ru_ixrss  = a->ru_ixrss  + b->ru_ixrss;
+    result->ru_idrss  = a->ru_idrss  + b->ru_idrss;
+    result->ru_isrss  = a->ru_isrss  + b->ru_isrss;
+    result->ru_minflt = a->ru_minflt + b->ru_minflt;
+    result->ru_majflt = a->ru_majflt + b->ru_majflt;
+    result->ru_nswap  = a->ru_nswap  + b->ru_nswap;
+}
+
+/* convert windows FILETIME structure to unix timeval structure */
+static void
+filetime_to_timeval(struct timeval *dst, FILETIME *src)
+{
+    ULARGE_INTEGER x;
+
+    x.LowPart = src->dwLowDateTime;
+    x.HighPart = src->dwHighDateTime;
+
+    dst->tv_sec  = x.QuadPart / 10000000;
+    dst->tv_usec = (x.QuadPart % 10000000) / 10;
+
+}
+
+/* implement getrusage(RUSAGE_SELF) */
+static void
+fill_rusage_self(struct rusage *r, HANDLE h)
+{
+    FILETIME creationTime, exitTime, kernelTime, userTime;
+    struct timeval tv;
+    PROCESS_MEMORY_COUNTERS pmc;
+
+    if (!GetProcessTimes(h, &creationTime, &exitTime, &kernelTime, &userTime))
+        return;
+
+    filetime_to_timeval(&tv, &kernelTime);
+    timeradd(&r->ru_stime, &tv, &r->ru_stime);
+    filetime_to_timeval(&tv, &userTime);
+    timeradd(&r->ru_utime, &tv, &r->ru_utime);
+  
+    if (GetProcessMemoryInfo(h, &pmc, sizeof(pmc)))
+    {
+        r->ru_maxrss += (long) (pmc.WorkingSetSize /1024);
+        r->ru_majflt += pmc.PageFaultCount;
+    }
+}
+
+/* implement getrusage(RUSAGE_CHILDREN) */
+static void
+fill_rusage_job(struct rusage *r, HANDLE h)
+{
+    BOOL result;
+    JOBOBJECT_BASIC_ACCOUNTING_INFORMATION jbai;
+    PROCESS_MEMORY_COUNTERS pmc;
+
+    if (QueryInformationJobObject(rpWinGetCurrentJob(), 
+               JobObjectBasicAccountingInformation,
+               &jbai, sizeof(JOBOBJECT_BASIC_ACCOUNTING_INFORMATION), NULL))
+    {
+        r->ru_stime.tv_sec = (long)(jbai.TotalKernelTime.QuadPart/10)/1000000;
+        r->ru_stime.tv_usec = (long)(jbai.TotalKernelTime.QuadPart/10)%1000000;
+        r->ru_utime.tv_sec = (long)(jbai.TotalUserTime.QuadPart/10)/1000000;
+        r->ru_utime.tv_usec = (long)(jbai.TotalUserTime.QuadPart/10)%1000000;
+
+        h = GetCurrentProcess();
+
+        memset (&pmc, 0, sizeof (pmc));
+
+        if (GetProcessMemoryInfo (h, &pmc, sizeof (pmc)))
+        {
+            r->ru_maxrss += (long) (pmc.WorkingSetSize /1024);
+            r->ru_majflt += pmc.PageFaultCount;
+        }
+    }
+}
+
+/* get system resource statistics */
+int
+getrusage (int intwho, struct rusage *rusage_in)
+{
+    int res = 0;
+    struct rusage r;
+
+    memset(&r, 0, sizeof(r));
+
+    if (intwho == RUSAGE_SELF)
+    {
+        fill_rusage_self(&r, GetCurrentProcess());
+        *rusage_in = r;
+    }
+    else if (intwho == RUSAGE_CHILDREN)
+    {
+        fill_rusage_job(&r, rpWinGetCurrentJob());
+        *rusage_in = r;
+    }
+    else
+    {
+        errno = EINVAL;
+        res = -1;
+    }
+  
+    return res;
+}
+
+static unsigned long rlim_cpu = RLIM_INFINITY;
+static unsigned long rlim_core = RLIM_INFINITY;
+static unsigned long rlim_fsize = RLIM_INFINITY;
+
+/* get system resource limits */
+int
+getrlimit (int resource, struct rlimit *rlp)
+{
+    MEMORY_BASIC_INFORMATION m;
+
+    rlp->rlim_cur = RLIM_INFINITY;
+    rlp->rlim_max = RLIM_INFINITY;
+
+    switch (resource)
+    {
+        case RLIMIT_CPU:
+            rlp->rlim_cur = rlim_cpu;
+            break;
+        case RLIMIT_FSIZE:
+            rlp->rlim_cur = rlim_fsize;
+            break;
+        case RLIMIT_DATA:
+            break;
+        case RLIMIT_STACK:
+            if (!VirtualQuery ((LPCVOID) &m, &m, sizeof m))
+                /* debug_printf 
+                 * ("couldn't get stack info, returning def.values. %E") */ ;
+            else
+            {
+                rlp->rlim_cur = (DWORD) &m - (DWORD) m.AllocationBase;
+                rlp->rlim_max = (DWORD) m.BaseAddress + m.RegionSize
+                                - (DWORD) m.AllocationBase;
+            }
+            break;
+        case RLIMIT_NOFILE:
+            rlp->rlim_cur = _getmaxstdio();
+            rlp->rlim_max = 2048;
+            break;
+        case RLIMIT_CORE:
+            rlp->rlim_cur = rlim_core;
+            break;
+        case RLIMIT_AS:
+            rlp->rlim_cur = 0x80000000UL;
+            rlp->rlim_max = 0x80000000UL;
+            break;
+        default:
+            errno = EINVAL;
+            return -1;
+    }
+
+    return 0;
+}
+
+/* set system resource limits */
+int
+setrlimit (int resource, const struct rlimit *rlp)
+{
+    struct rlimit oldlimits;
+
+    if (getrlimit (resource, &oldlimits) < 0)
+        return -1;
+
+    if (oldlimits.rlim_cur == rlp->rlim_cur &&
+        oldlimits.rlim_max == rlp->rlim_max)
+        return 0; // No change requested
+
+    switch (resource)
+    {
+        case RLIMIT_CPU:
+            rlim_cpu = rlp->rlim_cur;
+            break;
+        case RLIMIT_FSIZE:
+            rlim_fsize = rlp->rlim_cur;
+            break;
+        case RLIMIT_CORE:
+            rlim_core = rlp->rlim_cur;
+            break;
+        case RLIMIT_NOFILE:
+            if (rlp->rlim_cur != RLIM_INFINITY)
+                return _setmaxstdio(rlp->rlim_cur);
+            break;
+        default:
+            errno = EINVAL;
+            return -1;
+    }
+    return 0;
+}
+
+/* Here are a few implementations of gettimeofday() for windows. */
+/* they vary in short term (subsecond) and absolute accuracy */
+
+#define EPOCHFILETIME (116444736000000000i64)
+
+static int 
+gettimeofday1(struct timeval *tv, void *tz)
+{
+    FILETIME        fileTime;
+    LARGE_INTEGER   li;
+    __int64         t;
+
+    if (tv == NULL)
+        return(-1);
+
+    GetSystemTimeAsFileTime(&fileTime);
+    li.LowPart  = fileTime.dwLowDateTime;
+    li.HighPart = fileTime.dwHighDateTime;
+    t  = (li.QuadPart - EPOCHFILETIME) / 10;       
+    tv->tv_sec  = (long)(t / 1000000);
+    tv->tv_usec = (long)(t % 1000000);
+
+    return 0;
+}
+
+static unsigned __int64 base       = 0;
+static unsigned __int64 frequency  = 0;
+static           double ufrequency = 0.0;
+static           double mfrequency = 0.0;
+
+int
+gettimeofday(struct timeval *tv, void *tz)
+{
+    unsigned __int64 counter = 0;
+
+    QueryPerformanceCounter((LARGE_INTEGER *) &counter);
+
+    if (ufrequency == 0.0)
+    {
+        struct _timeb now, tb;
+        // mutex_lock(L_GETTIMEOFDAY);
+        QueryPerformanceFrequency((LARGE_INTEGER *) &frequency);
+        ufrequency = (double) frequency / 1000000.0f;
+        mfrequency = (double) frequency / 1000.0f;
+        _ftime_s(&tb);
+        _ftime_s(&now);
+        while( (now.time == tb.time) && (now.millitm == tb.millitm))
+            _ftime_s(&now);
+        QueryPerformanceCounter((LARGE_INTEGER *) &counter);
+        base = (__int64) (now.time * frequency) + 
+               (__int64) (now.millitm * mfrequency) - counter;
+        // mutex_unlock(L_GETTIMEOFDAY);
+        QueryPerformanceCounter((LARGE_INTEGER *) &counter);
+    }
+
+    counter += base;
+    tv->tv_sec = (long) (counter / frequency);
+    tv->tv_usec = (long) ((__int64)(counter / ufrequency) % 1000000);
+    return 0;
+}
+
+static int
+gettimeofday2(struct timeval *tv, void *tz)
+{
+    struct _timeb tb;
+
+    _ftime_s(&tb);
+
+    tv->tv_sec =  (long) tb.time;
+    tv->tv_usec = tb.millitm * 1000;
+
+    return(0);
+}
+
Index: /tags/1.6.0/lang/tcl/src/RpWinResource.h
===================================================================
--- /tags/1.6.0/lang/tcl/src/RpWinResource.h	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/RpWinResource.h	(revision 6168)
@@ -0,0 +1,60 @@
+/*
+ * ----------------------------------------------------------------------
+ *  RpWinResource.h
+ *
+ *  This file provides the neccessary structures and function prototypes
+ *  for the Windows ports for Rappture of the following 
+ *  resource management functions typically found on a Unix platform:
+ *
+ *      setrlimit(), getrlimit(), getrusage(), gettimeofday()
+ *
+ *  None of the ports are exactly perfect, but they are close enough
+ *  for Rappture's use.
+ * ======================================================================
+ *  AUTHOR:  Nicholas J. Kisseberth, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <windows.h>
+
+#define OPEN_MAX        512             /* Windows Hard Limit on open files */
+#define RLIMIT_CPU      0               /* CPU time in seconds */
+#define RLIMIT_FSIZE    1               /* Maximum filesize */
+#define RLIMIT_DATA     2               /* max data size */
+#define RLIMIT_STACK    3               /* max stack size */
+#define RLIMIT_CORE     4               /* max core file size */
+#define RLIMIT_NOFILE   5               /* max number of open files */
+#define RLIMIT_AS       6               /* address space (virt. memory) limit */
+#define RLIM_INFINITY   (0xffffffffUL)
+
+typedef unsigned long rlim_t;
+
+struct rlimit {
+        rlim_t  rlim_cur;
+        rlim_t  rlim_max;
+};
+
+#define RUSAGE_SELF     0               /* calling process */
+#define RUSAGE_CHILDREN -1              /* terminated child processes */
+
+struct rusage {
+    struct timeval ru_utime; /* user time used */
+    struct timeval ru_stime; /* system time used */
+    long ru_maxrss;          /* max resident set size */
+    long ru_ixrss;           /* integral  shared  text memory size */
+    long ru_idrss;           /* integral unshared data size */
+    long ru_isrss;           /* integral unshared  stack size */
+    long ru_minflt;          /* page reclaims */
+    long ru_majflt;          /* page faults */
+    long ru_nswap;           /* swaps */
+};
+
+HANDLE rpWinGetCurrentJob(); 
+int getrusage(int intwho, struct rusage *rusage_in);
+int getrlimit(int resource, struct rlimit *rlp);
+int setrlimit(int resource, const struct rlimit *rlp);
+int gettimeofday(struct timeval *tv, void *tz);
Index: /tags/1.6.0/lang/tcl/src/Switch.c
===================================================================
--- /tags/1.6.0/lang/tcl/src/Switch.c	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/Switch.c	(revision 6168)
@@ -0,0 +1,489 @@
+
+/*
+ * Switch.cpp --
+ *
+ * This module implements command/argument switch parsing procedures for the
+ * BLT toolkit.
+ *
+ *	Copyright 1991-2004 George A Howlett.
+ *
+ *	Permission is hereby granted, free of charge, to any person obtaining
+ *	a copy of this software and associated documentation files (the
+ *	"Software"), to deal in the Software without restriction, including
+ *	without limitation the rights to use, copy, modify, merge, publish,
+ *	distribute, sublicense, and/or sell copies of the Software, and to
+ *	permit persons to whom the Software is furnished to do so, subject to
+ *	the following conditions:
+ *
+ *	The above copyright notice and this permission notice shall be
+ *	included in all copies or substantial portions of the Software.
+ *
+ *	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *	EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ *	MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *	NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ *	LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ *	OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ *	WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <assert.h>
+#include <stdarg.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <tcl.h>
+#include "Switch.h"
+
+static void
+DoHelp(Tcl_Interp *interp, SwitchSpec *specs)
+{
+    Tcl_DString ds;
+    SwitchSpec *sp;
+
+    Tcl_DStringInit(&ds);
+    Tcl_DStringAppend(&ds, "following switches are available:", -1);
+    for (sp = specs; sp->type != SWITCH_END; sp++) {
+	Tcl_DStringAppend(&ds, "\n    ", 4);
+	Tcl_DStringAppend(&ds, sp->switchName, -1);
+	Tcl_DStringAppend(&ds, " ", 1);
+	Tcl_DStringAppend(&ds, sp->help, -1);
+    }
+    Tcl_AppendResult(interp, Tcl_DStringValue(&ds), (char *)NULL);
+    Tcl_DStringFree(&ds);
+}
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * FindSwitchSpec --
+ *
+ *	Search through a table of configuration specs, looking for one that
+ *	matches a given argvName.
+ *
+ * Results:
+ *	The return value is a pointer to the matching entry, or NULL if
+ *	nothing matched.  In that case an error message is left in the
+ *	interp's result.
+ *
+ * Side effects:
+ *	None.
+ *
+ *---------------------------------------------------------------------------
+ */
+static SwitchSpec *
+FindSwitchSpec(
+    Tcl_Interp *interp,		/* Used for reporting errors. */
+    SwitchSpec *specs,		/* Pointer to table of configuration
+				 * specifications for a widget. */
+    const char *name,		/* Name identifying a particular switch. */
+    int length,			/* Length of name. */
+    int needFlags,		/* Flags that must be present in matching
+				 * entry. */
+    int hateFlags)		/* Flags that must NOT be present in matching
+				 * entry. */
+{
+    SwitchSpec *sp;
+    char c;			/* First character of current argument. */
+    SwitchSpec *matchPtr;	/* Matching spec, or NULL. */
+
+    c = name[1];
+    matchPtr = NULL;
+    for (sp = specs; sp->type != SWITCH_END; sp++) {
+	if (sp->switchName == NULL) {
+	    continue;
+	}
+	if (((sp->flags & needFlags) != needFlags) || (sp->flags & hateFlags)) {
+	    continue;
+	}
+	if ((sp->switchName[1] != c) || 
+	    (strncmp(sp->switchName, name, length) != 0)) {
+	    continue;
+	}
+	if (sp->switchName[length] == '\0') {
+	    return sp;		/* Stop on a perfect match. */
+	}
+	if (matchPtr != NULL) {
+	    Tcl_AppendResult(interp, "ambiguous switch \"", name, "\"\n", 
+		(char *) NULL);
+	    DoHelp(interp, specs);
+	    return NULL;
+	}
+	matchPtr = sp;
+    }
+    if (strcmp(name, "-help") == 0) {
+	DoHelp(interp, specs);
+	return NULL;
+    }
+    if (matchPtr == NULL) {
+	Tcl_AppendResult(interp, "unknown switch \"", name, "\"\n", 
+			 (char *)NULL);
+	DoHelp(interp, specs);
+	return NULL;
+    }
+    return matchPtr;
+}
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * DoSwitch --
+ *
+ *	This procedure applies a single configuration switch to a widget
+ *	record.
+ *
+ * Results:
+ *	A standard Tcl return value.
+ *
+ * Side effects:
+ *	WidgRec is modified as indicated by specPtr and value.  The old value
+ *	is recycled, if that is appropriate for the value type.
+ *
+ *---------------------------------------------------------------------------
+ */
+static int
+DoSwitch(
+    Tcl_Interp *interp,		/* Interpreter for error reporting. */
+    SwitchSpec *sp,		/* Specifier to apply. */
+    Tcl_Obj *objPtr,		/* Value to use to fill in widgRec. */
+    void *record)		/* Record whose fields are to be modified.
+				 * Values must be properly initialized. */
+{
+    do {
+	char *ptr;
+
+	ptr = (char *)record + sp->offset;
+	switch (sp->type) {
+	case SWITCH_BOOLEAN:
+	    {
+		int value;
+
+		if (Tcl_GetBooleanFromObj(interp, objPtr, &value) != TCL_OK) {
+		    return TCL_ERROR;
+		}
+		if (sp->mask > 0) {
+		    if (value) {
+			*((int *)ptr) |= sp->mask;
+		    } else {
+			*((int *)ptr) &= ~sp->mask;
+		    }
+		} else {
+		    *((int *)ptr) = value;
+		}
+	    }
+	    break;
+
+	case SWITCH_DOUBLE:
+	    if (Tcl_GetDoubleFromObj(interp, objPtr, (double *)ptr) != TCL_OK) {
+		return TCL_ERROR;
+	    }
+	    break;
+
+	case SWITCH_OBJ:
+	    *(Tcl_Obj **)ptr = objPtr;
+	    break;
+
+	case SWITCH_FLOAT:
+	    {
+		double value;
+
+		if (Tcl_GetDoubleFromObj(interp, objPtr, &value) != TCL_OK) {
+		    return TCL_ERROR;
+		}
+		*(float *)ptr = (float)value;
+	    }
+	    break;
+
+	case SWITCH_INT:
+	    if (Tcl_GetIntFromObj(interp, objPtr, (int *)ptr) != TCL_OK) {
+		return TCL_ERROR;
+	    }
+	    break;
+
+	case SWITCH_LIST:
+	    {
+		int argc;
+
+		if (Tcl_SplitList(interp, Tcl_GetString(objPtr), &argc, 
+				  (const char ***)ptr) != TCL_OK) {
+		    return TCL_ERROR;
+		}
+	    }
+	    break;
+
+	case SWITCH_LONG:
+	    if (Tcl_GetLongFromObj(interp, objPtr, (long *)ptr) != TCL_OK) {
+		return TCL_ERROR;
+	    }
+	    break;
+
+	case SWITCH_STRING: 
+	    {
+		char *oldPtr, *newPtr, **strPtr;
+		char *string;
+
+		string = Tcl_GetString(objPtr);
+		strPtr = (char **)ptr;
+		newPtr = ((*string == '\0') && (sp->flags & SWITCH_NULL_OK))
+		    ? NULL : strdup(string);
+		oldPtr = *strPtr;
+		if (oldPtr != NULL) {
+		    free(oldPtr);
+		}
+		*strPtr = newPtr;
+	    }
+	    break;
+
+	case SWITCH_CUSTOM:
+	    assert(sp->customPtr != NULL);
+	    if ((*sp->customPtr->parseProc)(sp->customPtr->clientData, interp,
+		sp->switchName, objPtr, (char *)record, sp->offset, sp->flags) 
+		!= TCL_OK) {
+		return TCL_ERROR;
+	    }
+	    break;
+
+	default: 
+	    Tcl_AppendResult(interp, "bad switch table: unknown type", 
+			     (char *)NULL);
+	    return TCL_ERROR;
+	}
+	sp++;
+    } while ((sp->switchName == NULL) && (sp->type != SWITCH_END));
+    return TCL_OK;
+}
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * Rp_ParseSwitches --
+ *
+ *	Process command-line switches to fill in fields of a record with
+ *	resources and other parameters.
+ *
+ * Results:
+ *	Returns the number of arguments comsumed by parsing the command line.
+ *	If an error occurred, -1 will be returned and an error messages can be
+ *	found as the interpreter result.
+ *
+ * Side effects:
+ *	The fields of widgRec get filled in with information from argc/argv.
+ *	Old information in widgRec's fields gets recycled.
+ *
+ *---------------------------------------------------------------------------
+ */
+int
+Rp_ParseSwitches(
+    Tcl_Interp *interp,		/* Interpreter for error reporting. */
+    SwitchSpec *specs,		/* Describes legal switches. */
+    int objc,			/* Number of elements in argv. */
+    Tcl_Obj *const *objv,	/* Command-line switches. */
+    void *record,		/* Record whose fields are to be modified.
+				 * Values must be properly initialized. */
+    int flags)			/* Used to specify additional flags that must
+				 * be present in switch specs for them to be
+				 * considered.  */
+{
+    SwitchSpec *sp;
+    int count;
+    int needFlags;		/* Specs must contain this set of flags or
+				 * else they are not considered. */
+    int hateFlags;		/* If a spec contains any bits here, it's not
+				 * considered. */
+
+    needFlags = flags & ~(SWITCH_USER_BIT - 1);
+    hateFlags = 0;
+
+    /*
+     * Pass 1:  Clear the change flags on all the specs so that we 
+     *          can check it later.
+     */
+    for (sp = specs; sp->type != SWITCH_END; sp++) {
+	sp->flags &= ~SWITCH_SPECIFIED;
+    }
+    /*
+     * Pass 2:  Process the arguments that match entries in the specs.
+     *		It's an error if the argument doesn't match anything.
+     */
+    for (count = 0; count < objc; count++) {
+	char *arg;
+	int length;
+
+	arg = Tcl_GetStringFromObj(objv[count], &length);
+	if (flags & SWITCH_OBJV_PARTIAL) {
+	    /* 
+	     * If the argument doesn't start with a '-' (not a switch) or is
+	     * '--', stop processing and return the number of arguments
+	     * comsumed.
+	     */
+	    if (arg[0] != '-') {
+		return count;
+	    }
+	    if ((arg[1] == '-') && (arg[2] == '\0')) {
+		return count + 1; /* include the "--" in the count. */
+	    }
+	}
+	sp = FindSwitchSpec(interp, specs, arg, length, needFlags, hateFlags);
+	if (sp == NULL) {
+	    return -1;
+	}
+	if (sp->type == SWITCH_BITMASK) {
+	    char *ptr;
+
+	    ptr = (char *)record + sp->offset;
+	    *((int *)ptr) |= sp->mask;
+	} else if (sp->type == SWITCH_BITMASK_NEG) {
+	    char *ptr;
+	    
+	    ptr = (char *)record + sp->offset;
+	    *((int *)ptr) &= ~sp->mask;
+	} else if (sp->type == SWITCH_VALUE) {
+	    char *ptr;
+	    
+	    ptr = (char *)record + sp->offset;
+	    *((int *)ptr) = sp->mask;
+	} else {
+	    count++;
+	    if (count == objc) {
+		Tcl_AppendResult(interp, "value for \"", arg, "\" missing", 
+				 (char *) NULL);
+		return -1;
+	    }
+	    if (DoSwitch(interp, sp, objv[count], record) != TCL_OK) {
+		char msg[200];
+
+		sprintf(msg, "\n    (processing \"%.40s\" switch)", 
+			sp->switchName);
+		Tcl_AddErrorInfo(interp, msg);
+		return -1;
+	    }
+	}
+	sp->flags |= SWITCH_SPECIFIED;
+    }
+    return count;
+}
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * Rp_FreeSwitches --
+ *
+ *	Free up all resources associated with switches.
+ *
+ * Results:
+ *	None.
+ *
+ *---------------------------------------------------------------------------
+ */
+/* ARGSUSED */
+void
+Rp_FreeSwitches(
+    SwitchSpec *specs,		/* Describes legal switches. */
+    void *record,		/* Record whose fields contain current values
+				 * for switches. */
+    int needFlags)		/* Used to specify additional flags that must
+				 * be present in config specs for them to be
+				 * considered. */
+{
+    SwitchSpec *sp;
+
+    for (sp = specs; sp->type != SWITCH_END; sp++) {
+	if ((sp->flags & needFlags) == needFlags) {
+	    char *ptr;
+
+	    ptr = (char *)record + sp->offset;
+	    switch (sp->type) {
+	    case SWITCH_STRING:
+	    case SWITCH_LIST:
+		if (*((char **) ptr) != NULL) {
+		    free(*((char **) ptr));
+		    *((char **) ptr) = NULL;
+		}
+		break;
+
+	    case SWITCH_CUSTOM:
+		assert(sp->customPtr != NULL);
+		if ((*(char **)ptr != NULL) && 
+		    (sp->customPtr->freeProc != NULL)) {
+		    (*sp->customPtr->freeProc)((char *)record, sp->offset, 
+			sp->flags);
+		}
+		break;
+
+	    default:
+		break;
+	    }
+	}
+    }
+}
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * Rp_SwitchModified --
+ *
+ *      Given the configuration specifications and one or more switch patterns
+ *      (terminated by a NULL), indicate if any of the matching switches has
+ *      been reset.
+ *
+ * Results:
+ *      Returns 1 if one of the switches have changed, 0 otherwise.
+ *
+ *---------------------------------------------------------------------------
+ */
+int 
+Rp_SwitchChanged TCL_VARARGS_DEF(SwitchSpec *, arg1)
+{
+    va_list argList;
+    SwitchSpec *specs;
+    SwitchSpec *sp;
+    char *switchName;
+
+    specs = TCL_VARARGS_START(SwitchSpec *, arg1, argList);
+    while ((switchName = va_arg(argList, char *)) != NULL) {
+	for (sp = specs; sp->type != SWITCH_END; sp++) {
+	    if ((Tcl_StringMatch(sp->switchName, switchName)) &&
+		(sp->flags & SWITCH_SPECIFIED)) {
+		va_end(argList);
+		return 1;
+	    }
+	}
+    }
+    va_end(argList);
+    return 0;
+}
+
+int 
+Rp_ExprDoubleFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, double *valuePtr)
+{
+    /* First try to extract the value as a double precision number. */
+    if (Tcl_GetDoubleFromObj((Tcl_Interp *)NULL, objPtr, valuePtr) == TCL_OK) {
+	return TCL_OK;
+    }
+    /* Then try to parse it as an expression. */
+    if (Tcl_ExprDouble(interp, Tcl_GetString(objPtr), valuePtr) == TCL_OK) {
+	return TCL_OK;
+    }
+    return TCL_ERROR;
+}
+
+int 
+Rp_ExprIntFromObj(
+    Tcl_Interp *interp, 
+    Tcl_Obj *objPtr, 
+    int *valuePtr)
+{
+    long lvalue;
+
+    /* First try to extract the value as a simple integer. */
+    if (Tcl_GetIntFromObj((Tcl_Interp *)NULL, objPtr, valuePtr) == TCL_OK) {
+	return TCL_OK;
+    }
+    /* Otherwise try to parse it as an expression. */
+    if (Tcl_ExprLong(interp, Tcl_GetString(objPtr), &lvalue) == TCL_OK) {
+	*valuePtr = lvalue;
+	return TCL_OK;
+    }
+    return TCL_ERROR;
+}
+
Index: /tags/1.6.0/lang/tcl/src/Switch.h
===================================================================
--- /tags/1.6.0/lang/tcl/src/Switch.h	(revision 6168)
+++ /tags/1.6.0/lang/tcl/src/Switch.h	(revision 6168)
@@ -0,0 +1,137 @@
+
+/*
+ * Switch.h --
+ *
+ *	Copyright 1993-2004 George A Howlett.
+ *
+ *	Permission is hereby granted, free of charge, to any person
+ *	obtaining a copy of this software and associated documentation
+ *	files (the "Software"), to deal in the Software without
+ *	restriction, including without limitation the rights to use,
+ *	copy, modify, merge, publish, distribute, sublicense, and/or
+ *	sell copies of the Software, and to permit persons to whom the
+ *	Software is furnished to do so, subject to the following
+ *	conditions:
+ *
+ *	The above copyright notice and this permission notice shall be
+ *	included in all copies or substantial portions of the
+ *	Software.
+ *
+ *	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ *	KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ *	WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ *	PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+ *	OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ *	OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ *	OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ *	SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef SWITCH_H
+#define SWITCH_H
+
+#ifdef HAVE_STDDEF_H
+#  include <stddef.h>
+#endif /* HAVE_STDDEF_H */
+
+#ifndef Offset
+#ifdef offsetof
+#define Offset(type, field) ((int) offsetof(type, field))
+#else
+#define Offset(type, field) ((int) ((char *) &((type *) 0)->field))
+#endif
+#endif /* Offset */
+
+
+typedef int (SwitchParseProc)(ClientData clientData, Tcl_Interp *interp, 
+	const char *switchName, Tcl_Obj *valueObjPtr, char *record, int offset,
+	int flags);
+typedef void (SwitchFreeProc)(char *record, int offset, int flags);
+
+typedef struct {
+    SwitchParseProc *parseProc; /* Procedure to parse a switch
+				 * value and store it in its *
+				 * converted form in the data *
+				 * record. */
+
+    SwitchFreeProc *freeProc;	/* Procedure to free a switch. */
+
+    ClientData clientData;	/* Arbitrary one-word value used by
+				 * switch parser, passed to
+				 * parseProc. */
+} SwitchCustom;
+
+
+/*
+ * Type values for SwitchSpec structures.  See the user
+ * documentation for details.
+ */
+typedef enum {
+    SWITCH_BOOLEAN, 
+    SWITCH_DOUBLE, 
+    SWITCH_BITMASK, 
+    SWITCH_BITMASK_NEG, 
+    SWITCH_FLOAT, 
+    SWITCH_INT, 
+    SWITCH_INT_NNEG, 
+    SWITCH_INT_POS,
+    SWITCH_LIST, 
+    SWITCH_LONG, 
+    SWITCH_LONG_NNEG, 
+    SWITCH_LONG_POS,
+    SWITCH_OBJ,
+    SWITCH_STRING, 
+    SWITCH_VALUE, 
+    SWITCH_CUSTOM, 
+    SWITCH_END
+} SwitchTypes;
+
+
+typedef struct {
+    SwitchTypes type;		/* Type of option, such as
+				 * SWITCH_COLOR; see definitions
+				 * below.  Last option in table must
+				 * have type SWITCH_END. */
+
+    const char *switchName;	/* Switch used to specify option in
+				 * argv.  NULL means this spec is part
+				 * of a group. */
+
+    const char *help;		/* Help string. */
+    int offset;			/* Where in widget record to store
+				 * value; use Blt_Offset macro to
+				 * generate values for this. */
+
+    int flags;			/* Any combination of the values
+				 * defined below. */
+
+    unsigned int mask;
+
+    SwitchCustom *customPtr;	/* If type is SWITCH_CUSTOM then
+				 * this is a pointer to info about how
+				 * to parse and print the option.
+				 * Otherwise it is irrelevant. */
+} SwitchSpec;
+
+#define SWITCH_DEFAULTS		(0)  
+#define SWITCH_ARGV_PARTIAL	(1<<1)
+#define SWITCH_OBJV_PARTIAL	(1<<1)
+
+/*
+ * Possible flag values for Blt_SwitchSpec structures.  Any bits at or
+ * above BLT_SWITCH_USER_BIT may be used by clients for selecting
+ * certain entries.
+ */
+#define SWITCH_NULL_OK		(1<<0)
+#define SWITCH_DONT_SET_DEFAULT	(1<<3)
+#define SWITCH_SPECIFIED	(1<<4)
+#define SWITCH_USER_BIT		(1<<8)
+
+extern int Rp_ParseSwitches(Tcl_Interp *interp, SwitchSpec *specPtr, 
+	int objc, Tcl_Obj *const *objv, void *rec, int flags);
+
+extern void Rp_FreeSwitches(SwitchSpec *specs, void *rec, int flags);
+
+extern int Rp_SwitchChanged TCL_VARARGS(SwitchSpec *, specs);
+ 
+#endif /* BLT_SWITCH_H */
Index: /tags/1.6.0/lang/tcl/tcl_test.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/tcl_test.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tcl_test.tcl	(revision 6168)
@@ -0,0 +1,112 @@
+package require Rappture
+
+Rappture::library "rplib_test.xml"
+
+puts [library0 get input.(max).current]
+puts [library0 get input.(max)]
+
+library0 put -append yes -id 1 input.(max).current "9"
+
+puts [library0 xml]
+
+set outp "\nTESTING ELEMENT"
+append outp "\nelement -as path input.(max): "
+append outp [library0 element -as path input.(max)]
+append outp "\nelement -as component input.(max): " 
+append outp [library0 element -as component input.(max)]
+append outp "\nelement -as type input.(max): "
+append outp [library0 element -as type input.(max)]
+append outp "\nelement -as id input.(max): "
+append outp [library0 element -as id input.(max)]
+append outp "\nelement -as object input.(max): "
+append outp [library0 element -as object input.(max)]
+puts $outp
+
+set outp "\nTESTING PARENT"
+append outp "\nparent  -as path input.(max).current: "
+append outp [library0 parent  -as path input.(max).current]
+append outp "\nparent  -as component input.(max).current: "
+append outp [library0 parent  -as component input.(max).current]
+append outp "\nparent  -as type input.(max).current: "
+append outp [library0 parent  -as type input.(max).current]
+append outp "\nparent  -as id input.(max).current: "
+append outp [library0 parent  -as id input.(max).current]
+append outp "\nparent  -as object input.(max).current: "
+append outp [library0 parent  -as object input.(max).current]
+
+append outp "\nparent  input.(max): "
+append outp [library0 parent  input.(max)]
+append outp "\nparent  input: "
+append outp [library0 parent  input]
+append outp "\nparent  current: "
+append outp [library0 parent  current]
+puts $outp
+
+set outp "\nTESTING CHILDREN"
+append outp "\nchildren input: "
+append outp [library0 children input]
+append outp "\nchildren -as path input: "
+append outp [library0 children -as path input]
+append outp "\nchildren -as id -type number input: "
+append outp [library0 children -as id -type number input]
+append outp "\nchildren -as object input: "
+append outp [library0 children -as object input]
+puts $outp
+
+puts "Copying min and max"
+library0 copy input.test from input.(min)
+library0 copy input.test from input.(max)
+puts [library0 xml]
+
+puts "Removing min and max"
+library0 remove input.test.(min)
+library0 remove input.test.(max)
+puts [library0 xml]
+
+puts "Removing library0"
+library0 remove
+
+puts "Printing XML"
+puts [library0 xml]
+
+puts "opening new library"
+set libObj1 [Rappture::library "rplib_test.xml"]
+set libObj2 [Rappture::library "rplib_test.xml"]
+puts "libObj1 = "
+puts $libObj1
+
+puts "COPYING BETWEEN LIBS"
+$libObj1 copy "input.test" from $libObj2 "input.(max)"
+puts [$libObj1 xml]
+
+puts "COPYING BETWEEN LIBS - this should fail"
+set err [$libObj1 copy "input.test" from put "input.(max)"]
+puts $err
+
+#puts [$libObj xml]
+puts "isvalid test1: "
+puts [Rappture::library isvalid $libObj1]
+puts "isvalid test2: "
+puts [Rappture::library isvalid library0]
+puts "isvalid test3: "
+puts [Rappture::library isvalid puts]
+puts "testing lib0's xml"
+puts [library0 xml]
+
+puts "TEST ISA"
+puts "$libObj1 isa ::Rappture::LibraryObj : "
+puts [$libObj1 isa ::Rappture::LibraryObj]
+puts "$libObj1 isa ::Rappture::Table : "
+puts [$libObj1 isa ::Rappture::Table]
+#puts "$libObj1 isa ::Rappture::LibraryObj ::Rappture::LibraryObj: "
+#puts [$libObj1 isa ::Rappture::LibraryObj ::Rappture::LibraryObj]
+
+puts "TEST DIFF"
+puts "changing the value of input.number(min) to 4"
+$libObj1 put input.number(min).current "4"
+$libObj2 put input.number(jdjd).current "4"
+puts "$libObj1 diff $libObj2"
+puts [$libObj1 diff $libObj2]
+#foreach {op vpath oldval newval} [$libObj1 diff $libObj2] {
+#    puts "op
+
Index: /tags/1.6.0/lang/tcl/tests/Makefile.in
===================================================================
--- /tags/1.6.0/lang/tcl/tests/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/Makefile.in	(revision 6168)
@@ -0,0 +1,46 @@
+
+SHELL		= @SHELL@
+
+srcdir		= @srcdir@
+prefix		= @prefix@
+exec_prefix	= @exec_prefix@
+bindir		= @bindir@
+libdir		= @libdir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+mandir		= @mandir@
+includedir	= @includedir@
+
+pkgdatadir	= $(datadir)/$(PKG_DIR)
+pkglibdir	= $(libdir)/$(PKG_DIR)
+pkgincludedir	= $(includedir)/$(PKG_DIR)
+top_builddir	= .
+
+INSTALL		= @INSTALL@
+INSTALL_PROGRAM	= @INSTALL_PROGRAM@
+INSTALL_DATA	= @INSTALL_DATA@
+INSTALL_SCRIPT	= @INSTALL_SCRIPT@
+
+VPATH		= $(srcdir)
+PACKAGE_VERSION = @PACKAGE_VERSION@
+TCLSH		= $(bindir)/tclsh
+
+SCRIPTS		= \
+		$(srcdir)/exec.tcl \
+		$(srcdir)/value.tcl 
+
+version 	= $(PACKAGE_VERSION)
+name 		= Rappture$(version)
+scriptdir	= $(pkglibdir)/$(name)/scripts
+
+all:
+	$(INSTALL) -m 0444 $(srcdir)/rplib_test.xml .
+	$(TCLSH) $(srcdir)/all.tcl
+
+clean:
+	$(RM) rplib_test.xml
+
+distclean: clean
+	$(RM) Makefile *~
+
+
Index: /tags/1.6.0/lang/tcl/tests/all.tcl
===================================================================
--- /tags/1.6.0/lang/tcl/tests/all.tcl	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/all.tcl	(revision 6168)
@@ -0,0 +1,26 @@
+# all.tcl --
+#
+# This file contains a top-level script to run all of the Tcl
+# tests.  Execute it by invoking "source all.test" when running tcltest
+# in this directory.
+#
+# Copyright (c) 1998-1999 by Scriptics Corporation.
+# Copyright (c) 2000 by Ajuba Solutions
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# 
+# RCS: @(#) $Id: all.tcl,v 1.16 2002/04/10 19:57:15 hobbs Exp $
+
+set tcltestVersion [package require tcltest]
+namespace import -force tcltest::*
+
+if {$tcl_platform(platform) == "macintosh"} {
+	tcltest::singleProcess 1
+}
+
+tcltest::configure -verbose bpstel
+tcltest::testsDirectory [file dir [info script]]
+tcltest::runAllTests
+
+return
Index: /tags/1.6.0/lang/tcl/tests/children.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/children.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/children.test	(revision 6168)
@@ -0,0 +1,93 @@
+# Commands covered: Rappture::library
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+catch {unset lib}
+
+#----------------------------------------------------------
+# children command
+# children "?-as <fval>? ?-type <name>? ?<path>?"
+#----------------------------------------------------------
+catch {unset lib}
+set lib [Rappture::library rplib_test.xml]
+test library-8.0.1 {children command 0 arg} {
+    $lib children
+} {tool input output}
+test library-8.1.1 {children command path as default type default 1 arg} {
+    $lib children "input"
+} {string(formula) string(name) number(min) number(max)}
+test library-8.1.2 {children command path w/ id as default type default 1 arg} {
+    $lib children "input.number(min)"
+} {about default current}
+test library-8.1.3 {children command non-existant path 1 arg} {
+    $lib children "kdsf.werw(we12)"
+} {}
+test library-8.2.1 {children command path 2 arg} {
+    list [catch {$lib children "input.number(min)" "wreew"} msg] $msg
+} {1 {wrong # args: should be "children ?-as fval? ?-type name? ?path?"}}
+test library-8.3.1 {children command path -as flag  no option} {
+    list [catch {$lib children -as} msg] $msg
+} {1 {bad path component "-as"}}
+test library-8.3.2 {children command path -as flag component path} {
+    $lib children -as component "input"
+} {string(formula) string(name) number(min) number(max)}
+test library-8.3.3 {children command path -as flag id path} {
+    $lib children -as id "input"
+} {formula name min max}
+test library-8.3.4 {children command path -as flag type path} {
+    $lib children -as type "input"
+} {string string number number}
+test library-8.3.5 {children command path -as path type path} {
+    $lib children -as path "input"
+} {input.string(formula) input.string(name) input.number(min) input.number(max)}
+test library-8.3.6 {children command path -as object type path} {
+    $lib children -as object "input"
+} {::libraryObj1 ::libraryObj2 ::libraryObj3 ::libraryObj4}
+test library-8.3.7 {children command path -as junk type path} {
+    list [catch {$lib children -as junk "input"} msg] $msg
+} {1 {bad flavor "junk": should be component, id, object, path, type}}
+test library-8.4.1 {children command path -type number path} {
+    $lib children -type "number" "input"
+} {number(min) number(max)}
+test library-8.4.2 {children command path -type "" path} {
+    $lib children -type "" "input"
+} {string(formula) string(name) number(min) number(max)}
+test library-8.4.2 {children command path -type "blah" path} {
+    $lib children -type "blah" "input"
+} {}
+test library-8.5.1 {children command path -junk path} {
+    list [catch {$lib children -junk "input"} msg] $msg
+} {1 {bad option "-junk": should be -as, -type}}
+test library-8.6.1 {children command 2 opts -as comp -type number, path} {
+    $lib children -as "component" -type "number" "input"
+} {number(min) number(max)}
+test library-8.6.2 {children command 2 opts -as id -type number, path} {
+    $lib children -as "id" -type "number" "input"
+} {min max}
+test library-8.6.3 {children command 2 opts -as type -type number, path} {
+    $lib children -as "type" -type "number" "input"
+} {number number}
+test library-8.6.4 {children command 2 opts -as path -type number, path} {
+    $lib children -as "path" -type "number" "input"
+} {input.number(min) input.number(max)}
+test library-8.6.5 {children command 2 opts -as object -type number, path} {
+    $lib children -as "object" -type "number" "input"
+} {::libraryObj5 ::libraryObj6}
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/tcl/tests/copy.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/copy.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/copy.test	(revision 6168)
@@ -0,0 +1,63 @@
+# Commands covered: Rappture::library
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+catch {unset lib}
+
+#----------------------------------------------------------
+# copy command
+# copy "<path> from ?<xmlobj>? <path>"
+#----------------------------------------------------------
+catch {unset lib}
+set lib [Rappture::library rplib_test.xml]
+test library-9.0.1.1 {copy command, 0 args} {
+    list [catch {$lib copy} msg] $msg
+} {1 {wrong # args: should be "libraryObj0 copy path from ?arg arg ...?"}}
+test library-9.0.2.1 {copy command, 0 args} {
+    list [catch {$lib copy "input.number(min)"} msg] $msg
+} {1 {wrong # args: should be "libraryObj0 copy path from ?arg arg ...?"}}
+test library-9.0.3.1 {copy command, 1 arg} {
+    list [catch {$lib copy "input.number(min)" from } msg] $msg
+} {1 {wrong # args: should be "copy path from ?xmlobj? path"}}
+test library-9.0.4 {copy command not enough arg} {
+    list [catch {$lib copy "input.number(min)" from $lib} msg] $msg
+} {1 {bad path component "::libraryObj0"}}
+test library-9.0.5.1 {copy command not enough arg} {
+    list [catch {$lib copy "input.number(min)" from } msg] $msg
+} {1 {wrong # args: should be "copy path from ?xmlobj? path"}}
+test library-9.1.1 {copy command, bad syntax, switched from -> junk} {
+    list [catch {$lib copy "input.number(blah)" junk "input.number(min)"} msg] $msg
+} {1 {bad syntax: should be "copy path from ?xmlobj? path"}}
+test library-9.2.1 {copy command valid command, no 2nd library} {
+    $lib copy "input.number(blah)" from "input.number(max)"
+    $lib get "input.number(blah).current"
+} {3}
+test library-9.2.2 {copy command valid command} {
+    set libnew [Rappture::library rplib_test.xml]
+    $libnew put "input.image(eye).current" "sdjfslkjflskjfslj"
+    $lib copy "input.image(blahblah)" from $libnew "input.image(eye)"
+    $lib get "input.image(blahblah).current"
+} {sdjfslkjflskjfslj}
+test library-9.2.3 {copy command valid command, fromObj's path does not exist} {
+    set libnew [Rappture::library rplib_test.xml]
+    $lib copy "input.image(blueblah)" from $libnew "input.image(eye)"
+    $lib get "input.image(blueblah).current"
+} {}
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/tcl/tests/diff.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/diff.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/diff.test	(revision 6168)
@@ -0,0 +1,75 @@
+# Commands covered: Rappture::library
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+catch {unset lib}
+
+#----------------------------------------------------------
+# diff command
+# diff "<xmlobj>"
+#----------------------------------------------------------
+catch {unset lib}
+catch {unset libnew}
+catch {unset libDefault}
+catch {unset libFromGet}
+
+set lib [Rappture::library rplib_test.xml]
+set libnew [Rappture::library rplib_test.xml]
+set libDefault [Rappture::library rplib_test.xml]
+set libFromGet [$libDefault element -as object "input.number(max)"]
+
+test library-10.0.1.1 {diff command, no arguments} {
+    list [catch {$lib diff} msg] $msg
+} {1 {wrong # args: should be "libraryObj0 diff libobj"}}
+test library-10.1.1 {diff command, one argument, no difference} {
+    $lib diff $libnew
+} {}
+test library-10.1.2 {diff command, one argument, with difference} {
+    $lib put "input.string(difftest).current" "this is a diff test" 
+    $lib diff $libnew
+} {- input.string(difftest) {this is a diff test} {}}
+test library-10.1.3 {diff command, one argument, no "input" in argument} {
+    $libDefault diff $libFromGet
+} {- input.string(formula) dsd234ssdf3sdf {} - input.string(name) tnerruc {} - input.number(min) 1 {} - input.number(max) 3 {}}
+test library-10.1.4 {diff command, one argument, no "input" in libFromGet} {
+    $libFromGet diff $libDefault
+} {+ input.string(formula) {} dsd234ssdf3sdf + input.string(name) {} tnerruc + input.number(min) {} 1 + input.number(max) {} 3}
+test library-10.2.1 {diff command, one argument} {
+    set lib1021 [Rappture::library rplib_test.xml]
+    $lib1021 put input.number(max).current "5"
+    $libDefault diff $lib1021
+} {c input.number(max) 3 5}
+test library-10.2.2 {diff command, one argument} {
+    set lib1022 [Rappture::library rplib_test.xml]
+    $lib1022 put input.structure.current.parameters.number(w).current "6nm"
+    $libDefault diff $lib1022
+} {+ input.structure {} input.structure + input.structure.current.parameters.number(w) {} 6nm}
+test library-10.3.1 {diff command, two arguments, returns error} {
+    list [catch {$lib diff $libnew $libnew} msg] $msg
+} {1 {wrong # args: should be "libraryObj0 diff libobj"}}
+test library-10.3.2 {diff command, bad second arg, returns error} {
+    list [catch {$lib diff slfd} msg] $msg
+} {1 {invalid command name "slfd"}}
+test library-10.4.1 {diff command, bad second arg, returns error} {
+    set slfd 40
+    list [catch {$lib diff $slfd} msg] $msg
+} {1 {invalid command name "40"}}
+# no tests for xmlobj's that are not Rappture Libraries yet
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/tcl/tests/element.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/element.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/element.test	(revision 6168)
@@ -0,0 +1,85 @@
+# Commands covered: Rappture::library
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+catch {unset lib}
+set lib [Rappture::library rplib_test.xml]
+
+#----------------------------------------------------------
+# element command
+# element "?-as <fval>? ?<path>?"
+#     <fval> can be component, id, type, path, object
+#----------------------------------------------------------
+test library-5.0.1 {element command 0 arg} {
+    $lib element
+} {}
+test library-5.1.1 {element command path as default 1 arg} {
+    $lib element "input"
+} {input}
+test library-5.1.2 {element command path w/ id as default 1 arg} {
+    $lib element "input.number(min)"
+} {number(min)}
+test library-5.1.3 {element command non-existant path 1 arg} {
+    $lib element "kdsf.werw(we12)"
+} {}
+test library-5.2.1 {element command path 2 arg} {
+    list [catch {$lib element "input.number(min)" "wreew"} msg] $msg
+} {1 {wrong # args: should be "element ?-as fval? ?path?"}}
+test library-5.3.1.1 {element command path -as flag  no option} {
+    list [catch {$lib element -as} msg] $msg
+} {1 {bad path component "-as"}}
+test library-5.3.2 {element command path -as component, path with id} {
+    $lib element -as component "input.number(max)"
+} {number(max)}
+test library-5.3.3 {element command path -as id, path with id} {
+    $lib element -as id "input.number(max)"
+} {max}
+test library-5.3.4 {element command path -as type, path with id} {
+    $lib element -as type "input.number(max)"
+} {number}
+test library-5.3.5 {element command path -as path, path with id} {
+    $lib element -as path "input.number(max)"
+} {input.number(max)}
+test library-5.3.6 {element command path -as object, path with id} {
+    set ele [$lib element -as object "input.number(max)"]
+    list [catch {$ele isa ::Rappture::LibraryObj} msg] $msg
+} {0 1}
+test library-5.3.7.1 {element command path -as junk, path with id} {
+    list [catch {$lib element -as junk "input.number(max)"} msg] $msg
+} {1 {bad flavor "junk": should be component, id, object, path, type}}
+test library-5.3.8 {element command path -as component, path does not exist} {
+    $lib element -as component "input.test(we)"
+} {}
+test library-5.3.9 {element command path -as id, path does not exist} {
+    $lib element -as id "input.test(we)"
+} {}
+test library-5.3.10 {element command path -as type, path does not exist} {
+    $lib element -as type "input.test(we)"
+} {}
+test library-5.3.11 {element command path -as path, path does not exist} {
+    $lib element -as path "input.test(we)"
+} {}
+test library-5.3.12 {element command path -as object, path does not exist} {
+    $lib element -as object "input.test(we)"
+} {}
+test library-5.4.1 {element command path -junk path} {
+    list [catch {$lib element -junk "input"} msg] $msg
+} {1 {bad option "-junk": should be -as}}
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/tcl/tests/encode.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/encode.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/encode.test	(revision 6168)
@@ -0,0 +1,361 @@
+# Commands covered: 
+#   Rappture::encoding::is
+#   Rappture::encoding::encode
+#   Rappture::encoding::decode
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# is command
+# Rappture::encoding::is binary <string>
+#----------------------------------------------------------
+test is-1.0.1 {Rappture::encoding::is, 0 arguments} {
+    list [catch {Rappture::encoding::is} msg] $msg
+} {1 {wrong # args: should be "Rappture::encoding::is binary|encoded <string>"}}
+
+test is-1.1.1 {Rappture::encoding::is, 1 incomplete subcommand} {
+    list [catch {Rappture::encoding::is binary} msg] $msg
+} {1 {wrong # args: should be "Rappture::encoding::is binary|encoded <string>"}}
+
+test is-1.1.2 {Rappture::encoding::is, 1 subcommand w/ string} {
+    list [catch {Rappture::encoding::is binary "hi"} msg] $msg
+} {0 no}
+
+test is-1.1.3 {Rappture::encoding::is, 1 subcommand w/ string} {
+    set h "H4sIAAAAAAAAA8vIBACsKpPYAgAAAA=="
+    set b [Rappture::encoding::decode -as b64 $h]
+    list [catch {Rappture::encoding::is binary $b} msg] $msg
+} {0 yes}
+
+test is-1.2.0 {Rappture::encoding::is, 1 invalid subcommand} {
+    list [catch {Rappture::encoding::is binaryy "hi"} msg] $msg
+} {1 {bad option "binaryy": should be binary or encoded}}
+
+test is-1.2.1 {Rappture::encoding::is, too many arguments} {
+    list [catch {Rappture::encoding::is binary binary "hi"} msg] $msg
+} {1 {wrong # args: should be "Rappture::encoding::is binary|encoded <string>"}}
+
+test is-1.2.2.0 {Rappture::encoding::is, with an embedded null} {
+    list [catch {Rappture::encoding::is binary "x\000x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.1 {Rappture::encoding::is, with an embedded start of heading} {
+    list [catch {Rappture::encoding::is binary "x\001x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.2 {Rappture::encoding::is, with an embedded start of text} {
+    list [catch {Rappture::encoding::is binary "x\002x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.3 {Rappture::encoding::is, with an embedded end of text} {
+    list [catch {Rappture::encoding::is binary "x\003x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.4 {Rappture::encoding::is, with an embedded end of transmission} {
+    list [catch {Rappture::encoding::is binary "x\004x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.5 {Rappture::encoding::is, with an embedded enquiry} {
+    list [catch {Rappture::encoding::is binary "x\005x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.6 {Rappture::encoding::is, with an embedded acknowledge} {
+    list [catch {Rappture::encoding::is binary "x\006x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.7 {Rappture::encoding::is, with an embedded bell} {
+    list [catch {Rappture::encoding::is binary "x\007x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.8 {Rappture::encoding::is, with an embedded backspace} {
+    list [catch {Rappture::encoding::is binary "x\010x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.9 {Rappture::encoding::is, with an embedded horizontal tab} {
+    list [catch {Rappture::encoding::is binary "x\011x"} msg] $msg
+} {0 no}
+
+test is-1.2.2.10 {Rappture::encoding::is, with an embedded newlines} {
+    list [catch {Rappture::encoding::is binary "x\012x"} msg] $msg
+} {0 no}
+
+test is-1.2.2.11 {Rappture::encoding::is, with an embedded vertical tab} {
+    list [catch {Rappture::encoding::is binary "x\013x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.12 {Rappture::encoding::is, with an embedded form feed} {
+    # this is encountered in spice, maybe abinit?
+    list [catch {Rappture::encoding::is binary "x\014x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.13 {Rappture::encoding::is, with an embedded carriage return} {
+    list [catch {Rappture::encoding::is binary "x\015x"} msg] $msg
+} {0 no}
+
+test is-1.2.2.14 {Rappture::encoding::is, with an embedded shift out} {
+    list [catch {Rappture::encoding::is binary "x\016x"} msg] $msg
+} {0 yes}
+
+test is-1.2.2.15 {Rappture::encoding::is, with an embedded space} {
+    list [catch {Rappture::encoding::is binary "x\040x"} msg] $msg
+} {0 no}
+
+#test is-1.2.2.16 {Rappture::encoding::is, with an embedded 8bit ascii char } {
+#    list [catch {Rappture::encoding::is binary "x\200x"} msg] $msg
+#} {0 yes}
+
+
+test is-1.3.1 {Rappture::encoding::is, encoded subcommand w/ false string} {
+    list [catch {Rappture::encoding::is encoded "hi"} msg] $msg
+} {0 no}
+
+test is-1.3.2 {Rappture::encoding::is, encoded b64 flag and extra string} {
+    set h "@@RP-ENC:b64\nH4sIAAAAAAAAA8vIBACsKpPYAgAAAA=="
+    list [catch {Rappture::encoding::is encoded $h} msg] $msg
+} {0 yes}
+
+test is-1.3.3 {Rappture::encoding::is, encoded zb64 flag and extra string} {
+    set h "@@RP-ENC:zb64\nH4sIAAAAAAAAA8vIBACsKpPYAgAAAA=="
+    list [catch {Rappture::encoding::is encoded $h} msg] $msg
+} {0 yes}
+
+test is-1.3.4 {Rappture::encoding::is, encoded z flag and extra string} {
+    set h "@@RP-ENC:z\nH4sIAAAAAAAAA8vIBACsKpPYAgAAAA=="
+    list [catch {Rappture::encoding::is encoded $h} msg] $msg
+} {0 yes}
+
+test is-1.3.5 {Rappture::encoding::is, encoded z flag newline no string} {
+    set h "@@RP-ENC:z\n"
+    list [catch {Rappture::encoding::is encoded $h} msg] $msg
+} {0 yes}
+
+test is-1.3.6 {Rappture::encoding::is, encoded b64 flag newline no string} {
+    set h "@@RP-ENC:b64\n"
+    list [catch {Rappture::encoding::is encoded $h} msg] $msg
+} {0 yes}
+
+test is-1.3.7 {Rappture::encoding::is, encoded zb64 flag newline no string} {
+    set h "@@RP-ENC:zb64\n"
+    list [catch {Rappture::encoding::is encoded $h} msg] $msg
+} {0 yes}
+
+test is-1.3.7 {Rappture::encoding::is, encoded z flag no newline no string} {
+    set h "@@RP-ENC:zb64"
+    list [catch {Rappture::encoding::is encoded $h} msg] $msg
+} {0 no}
+
+test is-1.3.8 {Rappture::encoding::is, encoded b64 flag no newline no string} {
+    set h "@@RP-ENC:b64"
+    list [catch {Rappture::encoding::is encoded $h} msg] $msg
+} {0 no}
+
+test is-1.3.9 {Rappture::encoding::is, encoded zb64 flag no newline no string} {
+    set h "@@RP-ENC:zb64"
+    list [catch {Rappture::encoding::is encoded $h} msg] $msg
+} {0 no}
+
+test is-1.3.10 {Rappture::encoding::is, encoded with an embedded null} {
+    list [catch {Rappture::encoding::is encoded "@@RP-ENC:zb64\nx\000x"} msg] $msg
+} {0 yes}
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# encode command
+# Rappture::encoding::encode ?-as z|b64? ?-no-header? <string>
+#----------------------------------------------------------
+
+test encode-2.0.0 {Rappture::encoding::encode, 0 arguments} {
+    list [catch {Rappture::encoding::encode} msg] $msg
+} {1 {wrong # args: should be "Rappture::encoding::encode ?-as z|b64|zb64? ?-noheader? ?--? string"}}
+
+test encode-2.1.0 {Rappture::encoding::encode, ascii string argument} {
+    list [catch {Rappture::encoding::encode "hi"} msg] $msg
+} {0 {@@RP-ENC:zb64
+H4sIAAAAAAAAA8vIBACsKpPYAgAAAA==
+}}
+
+test encode-2.1.1 {Rappture::encoding::encode, binary string argument}  {
+    set h "H4sIAAAAAAAAA8vIBACsKpPYAgAAAA=="
+    set b [Rappture::encoding::decode -as b64 $h]
+    list [catch {Rappture::encoding::encode $b} msg] $msg
+} {0 {@@RP-ENC:zb64
+H4sIAAAAAAAAA5Pv5mAAA+bTJ1gY1mhNvsEE5AAAFVLsvBYAAAA=
+}}
+
+test encode-2.2.0 {Rappture::encoding::encode, -as flag no value} {
+    list [catch {Rappture::encoding::encode -as} msg] $msg
+} {1 {value for "-as" missing}}
+
+test encode-2.2.1 {Rappture::encoding::encode, -as flag bad value } {
+    list [catch {Rappture::encoding::encode -as zz} msg] $msg
+} {1 {bad value "zz": should be b64, zb64, or z}}
+
+test encode-2.2.2 {Rappture::encoding::encode, -as flag correct value z} {
+    list [catch {Rappture::encoding::encode -as z} msg] $msg
+} {1 {wrong # args: should be "Rappture::encoding::encode ?-as z|b64|zb64? ?-noheader? ?--? string"}}
+
+test encode-2.2.3 {Rappture::encoding::encode, -as z w/ string} {
+    list [catch {Rappture::encoding::encode -as z "hi"} msg] $msg
+} [list 0 "@@RP-ENC:z\n\037\213\010\000\000\000\000\000\000\003\313\310\004\000\254\052\223\330\002\000\000\000"]
+
+test encode-2.2.4 {Rappture::encoding::encode, -as b64 w/ string} {
+    list [catch {Rappture::encoding::encode -as b64 "hi"} msg] $msg
+} {0 {@@RP-ENC:b64
+aGk=
+}}
+
+test encode-2.2.5 {Rappture::encoding::encode with --} {
+    list [catch {Rappture::encoding::encode -hi} msg] $msg
+} {1 {unknown switch "-hi"
+following switches are available:
+   -as z|b64|zb64
+   -noheader }}
+
+test encode-2.2.6 {Rappture::encoding::encode with --} {
+    list [catch {Rappture::encoding::encode -- -hi} msg] $msg
+} {0 {@@RP-ENC:zb64
+H4sIAAAAAAAAA9PNyAQA8jSeVgMAAAA=
+}}
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# decode command
+# Rappture::encooding::decode <string>
+#----------------------------------------------------------
+
+test decode-3.0.0 {Rappture::encoding::decode, 0 arguments} {
+    list [catch {Rappture::encoding::decode} msg] $msg
+} {1 {wrong # args: should be "Rappture::encoding::decode ?-as z|b64|zb64? ?--? string"}}
+
+test decode-3.1.0 {Rappture::encoding::decode, 1 arg, b64 encoded} {
+    set h "aGk="
+    list [catch {Rappture::encoding::decode $h} msg] $msg
+} {0 aGk=}
+
+test decode-3.1.1 {Rappture::encoding::decode, 1 arg, zb64 encoded} {
+    set h "@@RP-ENC:zb64\nH4sIAAAAAAAAA8vIBACsKpPYAgAAAA=="
+    list [catch {Rappture::encoding::decode $h} msg] $msg
+} {0 hi}
+
+test decode-3.1.2 {Rappture::encoding::decode, 2 args} {
+    list [catch {Rappture::encoding::decode "hi" "bye"} msg] $msg
+} {1 {wrong # args: should be "Rappture::encoding::decode ?-as z|b64|zb64? ?--? string"}}
+
+test decode-3.2.0 {Rappture::encoding::decode, -as flag, no value} {
+    list [catch {Rappture::encoding::decode -as} msg] $msg
+} {1 {value for "-as" missing}}
+
+test decode-3.2.1 {Rappture::encoding::decode, -as flag, bad value} {
+    list [catch {Rappture::encoding::decode -as zz} msg] $msg
+} {1 {bad value "zz": should be b64, zb64, or z}}
+
+# This test is wrong.  The -as z flag should either 1) be ignored and return
+# "hi" (using the header) or 2) override the header and return an error when
+# attempting to decompress the bogus string (see 3.2.2b)
+
+test decode-3.2.2 {Rappture::encoding::decode, -as flag, zb64 w/ string} {
+    set h "@@RP-ENC:zb64\nH4sIAAAAAAAAA8vIBACsKpPYAgAAAA=="
+    list [catch {Rappture::encoding::decode -as z $h} msg] $msg
+} {1 {:
+decode flags don't match the header
+}}
+	
+test decode-3.2.2b {Rappture::encoding::decode, -as -noheader, zb64 w/ string} {
+    set h "@@RP-ENC:zb64\nH4sIAAAAAAAAA8vIBACsKpPYAgAAAA=="
+    list [catch {Rappture::encoding::decode -as z -noheader $h} msg] $msg
+} {1 {Rappture::Buffer::do_decompress()
+:
+memory error while inflating data
+Rappture::Buffer::do_decompress()
+}}
+
+test decode-3.2.3 {Rappture::encoding::decode, -as flag, b64 w/ string} {
+    set h "@@RP-ENC:b64\naGk="
+    list [catch {Rappture::encoding::decode -as b64 $h} msg] $msg
+} {0 hi}
+
+test decode-3.2.4 {encode/decode reverse each other} {
+    set msg "This is a test"
+    Rappture::encoding::decode [Rappture::encoding::encode $msg]
+} {This is a test}
+
+test encode-3.2.5 {Rappture::encoding::decode with --} {
+    list [catch {Rappture::encoding::decode -hi} msg] $msg
+} {1 {unknown switch "-hi"
+following switches are available:
+   -as z|b64|zb64
+   -noheader }}
+
+
+test encode-3.2.6 {Rappture::encoding::decode with --} {
+    list [catch {Rappture::encoding::decode -- -hi} msg] $msg
+} {0 -hi}
+
+test encode-4.0 {is binary (isxml) test with invalid XML characters} {
+    list [catch {Rappture::encoding::is binary "formfeed \f"} msg] $msg
+} {0 yes}
+test encode-4.1 {is binary (isxml) test with invalid XML characters} {
+    list [catch {Rappture::encoding::is binary "backspace \b"} msg] $msg
+} {0 yes}
+test encode-4.2 {is binary (isxml) test with invalid XML characters} {
+    list [catch {Rappture::encoding::is binary "vertical tab \v"} msg] $msg
+} {0 yes}
+test encode-4.3 {is binary (isxml) test with invalid XML characters} {
+    list [catch {Rappture::encoding::is binary "high-order bit \x80"} msg] $msg
+} {0 yes}
+test encode-4.4 {is binary (isxml) test with invalid XML characters} {
+    list [catch {Rappture::encoding::is binary "high-order bit \xFF"} msg] $msg
+} {0 yes}
+test encode-4.5 {is binary (isxml) test with invalid XML characters} {
+    list [catch {Rappture::encoding::is binary "NUL \0"} msg] $msg
+} {0 yes}
+test encode-4.6 {is binary (isxml) test with invalid XML characters} {
+    list [catch {Rappture::encoding::is binary "BEL \a"} msg] $msg
+} {0 yes}
+test encode-4.7 {is binary (isxml) test with valid XML characters} {
+    list [catch {Rappture::encoding::is binary "tab/cr/nl \t\r\n "} msg] $msg
+} {0 no}
+test encode-4.8 {is binary (isxml) test with valid XML characters} {
+    list [catch {
+	set string "\t\r\n"
+	for { set i 0x20 } { $i <= 0x7F } { incr i } {
+	    append string [format %c $i]
+	}
+	Rappture::encoding::is binary $string
+    } msg] $msg
+} {0 no}
+
+test encode-4.8 {is binary (isxml) test with all characters} {
+    list [catch {
+	set result {}
+	for { set i 0 } { $i <= 0xFF } { incr i } {
+	    set string [format %c $i]
+	    if { ![Rappture::encoding::is binary $string] } {
+		lappend result $i
+	    }
+	}
+	set result
+    } msg] $msg
+} {0 {9 10 13 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127}}
+
+
+::tcltest::cleanupTests
+return
+
Index: /tags/1.6.0/lang/tcl/tests/get.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/get.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/get.test	(revision 6168)
@@ -0,0 +1,79 @@
+# Commands covered: Rappture::library
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+catch {unset lib}
+set lib [Rappture::library rplib_test.xml]
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# get command
+# get ?<path>?
+#----------------------------------------------------------
+test get-1.0.1 {get command, zero arguments } {
+    set val [$lib get]
+} {}
+test get-1.0.2 {get command, two arguments } {
+    list [ catch {$lib get "input.number(min).default" "ggg"} msg] $msg
+} {1 {wrong # args: should be "get ?-decode yes? ?path?"}}
+#----------------------------------------------------------
+test get-1.1 {get command valid path} {
+    set cmd [$lib get "tool.command"]
+} {@tool/graph @driver}
+#----------------------------------------------------------
+test get-1.1.2 {get command valid path, single level path doesnt exist} {
+    set cmd [$lib get "dsffds"]
+} {}
+test get-1.1.3 {get command valid path, multiple levels, path doesnt exist} {
+    set cmd [$lib get "dsffds.sdfsdf"]
+} {}
+test get-1.1.3 {get command valid path, multiple levels, with id, path doesnt exist} {
+    set cmd [$lib get "dsffds.sdfsdf(1234)"]
+} {}
+#----------------------------------------------------------
+test get-1.2.1 {get command valid full path number} {
+    set cmd [$lib get "input.number(min).default"]
+} {0}
+test get-1.2.2 {get command valid partial path number} {
+    set cmd [$lib get "input.(min).default"]
+} {0}
+test get-1.2.3 {get command valid partial path number} {
+    set cmd [$lib get "input.(min).current"]
+} {1}
+test get-3.2.5 {get command valid partial path number} {
+    set cmd [$lib get "input.number.default"]
+    # this should grab the first occurance of number -> number(min)
+} {0}
+test get-3.2.6 {get command valid partial path number} {
+    set cmd [$lib get "input.number.noexist"]
+} {}
+test get-3.2.7 {get command valid partial path number} {
+    set cmd [$lib get "input.(min).noexist"]
+} {}
+test get-3.2.8 {get command invalid path number} {
+    set cmd [$lib get "input..number"]
+} {}
+test get-3.2.9 {get command invalid path number} {
+    set cmd [$lib get "input.().number"]
+} {}
+test get-3.2.10 {get command invalid path number} {
+    set cmd [$lib get "input.(!!).number"]
+} {}
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/tcl/tests/isa.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/isa.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/isa.test	(revision 6168)
@@ -0,0 +1,47 @@
+# Commands covered: Rappture::library
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+catch {unset lib}
+set lib [Rappture::library rplib_test.xml]
+
+itcl::class foo { # used for tests below }
+
+#----------------------------------------------------------
+# isa command
+# isa "<XMLObjType>"
+#----------------------------------------------------------
+test library-7.0.1 {isa command 0 arg} {
+    list [catch {$lib isa} msg] $msg
+} {1 {wrong # args: should be "object isa className"}}
+test library-7.1.1 {isa command 1 valid arg} {
+    $lib isa ::Rappture::LibraryObj
+} {1}
+test library-7.1.2 {isa command 1 invalid arg} {
+    $lib isa ::foo
+} {0}
+test library-7.1.3 {isa command 1 invalid arg} {
+    list [catch {$lib isa sdfsdf} result] $result
+} {1 {class "sdfsdf" not found in context "::Rappture::LibraryObj"}}
+test library-7.2.1 {isa command 2 args} {
+    list [catch {$lib isa ::Rappture::LibraryObj ::Rappture::LibraryObj} msg] $msg
+} {1 {wrong # args: should be "object isa className"}}
+
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/tcl/tests/parent.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/parent.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/parent.test	(revision 6168)
@@ -0,0 +1,85 @@
+# Commands covered: Rappture::library
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+
+catch {unset lib}
+set lib [Rappture::library rplib_test.xml]
+
+#----------------------------------------------------------
+# parent command
+# parent "?-as <fval>? ?<path>?"
+#----------------------------------------------------------
+test library-6.0.1 {parent command 0 arg} {
+    $lib parent
+} {}
+test library-6.1.1 {parent command path as default 1 arg} {
+    $lib parent "input"
+} {}
+test library-6.1.2 {parent command path w/ id as default 1 arg} {
+    $lib parent "input.number(min)"
+} {input}
+test library-6.1.3 {parent command non-existant path 1 arg} {
+    $lib parent "kdsf.werw(we12)"
+} {}
+test library-6.2.1 {parent command path 2 arg} {
+    list [catch {$lib parent "input.number(min)" "wreew"} msg] $msg
+} {1 {wrong # args: should be "parent ?-as fval? ?path?"}}
+test library-6.3.1 {parent command path -as flag  no option} {
+    list [catch {$lib parent -as} msg] $msg
+} {1 {bad path component "-as"}}
+test library-6.3.2 {parent command path -as flag component path with id} {
+    $lib parent -as component "input.number(max).default"
+} {number(max)}
+test library-6.3.3 {parent command path -as flag id path with id} {
+    $lib parent -as id "input.number(max).default"
+} {max}
+test library-6.3.4 {parent command path -as flag type path with id} {
+    $lib parent -as type "input.number(max).default"
+} {number}
+test library-6.3.5 {parent command path -as path type path with id} {
+    $lib parent -as path "input.number(max).default"
+} {input.number(max)}
+test library-6.3.6 {parent command path -as object type path with id} {
+    set libNew [$lib parent -as object "input.number(max).default"]
+    list [catch {$libNew isa ::Rappture::LibraryObj} msg] $msg
+} {0 1}
+test library-6.3.7 {parent command path -as junk type path with id} {
+    list [catch {$lib parent -as junk "input.number(max)"} msg] $msg
+} {1 {bad flavor "junk": should be component, id, object, path, type}}
+test library-6.3.8 {parent command path -as component, path does not exist} {
+    $lib parent -as component "input.test(we).current"
+} {}
+test library-6.3.9 {parent command path -as id, path does not exist} {
+    $lib parent -as id "input.test(we).current"
+} {}
+test library-6.3.10 {parent command path -as type, path does not exist} {
+    $lib parent -as type "input.test(we).current"
+} {}
+test library-6.3.11 {parent command path -as path, path does not exist} {
+    $lib parent -as path "input.test(we).current"
+} {}
+test library-6.3.12 {parent command path -as object, path does not exist} {
+    $lib parent -as object "input.test(we).current"
+} {}
+test library-6.4.1 {parent command path -junk path} {
+    list [catch {$lib parent -junk "input"} msg] $msg
+} {1 {bad option "-junk": should be -as}}
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/tcl/tests/put.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/put.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/put.test	(revision 6168)
@@ -0,0 +1,156 @@
+# Commands covered: Rappture::library
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+catch {unset lib}
+
+#----------------------------------------------------------
+# put command
+# put "?-append yes? ?-id num? ?<path>? <string>"
+#----------------------------------------------------------
+# MMc's original code does not make <string> a required argument
+# even though the command howto makes it seem required
+#test library-4.0.1 {put command valid path 0 arg} {
+#    catch {unset libPut}
+#    set libPut [Rappture::library rplib_test.xml]
+#    $libPut put
+#    $libPut xml
+#} {<run></run>}
+test library-4.0.1 {put command valid path 0 arg} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    list [catch {$libPut put} msg] $msg
+} {1 {wrong # args: should be "put ?-append bval? ?-id num? ?-type string|file? ?-compress bval? ?path? string"}}
+test library-4.1.1 {put command valid path 1 arg} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    list [catch {$libPut put "input.test1" } msg] $msg
+} {0 {}}
+test library-4.1.2 {put command valid path 1 arg with id} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    list [catch {$libPut put "input.test2(withId)"} msg] $msg
+} {0 {}}
+test library-4.1.3 {put command valid path 2 arg} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    $libPut put "input.test" "val1"
+    $libPut get "input.test"
+} {val1}
+test library-4.1.4 {put command valid path 2 arg with id} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    $libPut put "input.test(withId)" "val1"
+    $libPut put "input.test(withNewId)" "val2"
+    $libPut get "input.test"
+} {val1}
+test library-4.1.5 {put command valid path 2 arg} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    $libPut put "input.test(withId)" "val1"
+    $libPut put "input.test(withNewId)" "val2"
+    $libPut get "input.test(withId)"
+} {val1}
+test library-4.1.6 {put command valid path 2 arg} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    $libPut put "input.test(withId)" "val1"
+    $libPut put "input.test(withNewId)" "val2"
+    $libPut get "input.test(withNewId)"
+} {val2}
+test library-4.2.1 {put command test append yes} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    $libPut put "input.test(withId)" "val1"
+    $libPut put -append yes "input.test(withId)" "val2"
+    $libPut get "input.test(withId)"
+} {val1val2}
+test library-4.2.2 {put command test append no} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    $libPut put "input.test(withId)" "val1"
+    $libPut put -append no "input.test(withId)" "val2"
+    $libPut get "input.test(withId)"
+} {val2}
+test library-4.2.3 {put command test append blank} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    $libPut put "input.test(withId)" "val1"
+    list [catch {$libPut put -append "input.test(withId)" "val2"} msg] $msg
+    # $libPut xml
+} {1 {expected boolean value but got "input.test(withId)"}}
+test library-4.2.5 {put command test append junk} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    $libPut put "input.test(withId)" "val1"
+    list [catch {$libPut put -append junk "input.test(withId)" "val2"} msg] $msg
+    # $libPut xml
+} {1 {expected boolean value but got "junk"}}
+test library-4.2.6 {put command test append = "1"} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    set path "input.test(withId)"
+    $libPut put $path "val1"
+    set rslt [list [catch {$libPut put -append 1 $path "val2"} msg] $msg]
+    if {![lrange $rslt 0 0]} {
+        lappend rslt [$libPut get $path]
+    }
+    set rslt
+} {0 {} val1val2}
+test library-4.2.7 {put command test append = "0"} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    set path "input.test(withId)"
+    $libPut put $path "val1"
+    set rslt [list [catch {$libPut put -append 0 $path "val2"} msg] $msg]
+    if {![lrange $rslt 0 0]} {
+        lappend rslt [$libPut get $path]
+    }
+    set rslt
+} {0 {} val2}
+test library-4.2.8 {put command test append = "true"} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    set path "input.test(withId)"
+    $libPut put $path "val1"
+    set rslt [list [catch {$libPut put -append true $path "val2"} msg] $msg]
+    if {![lrange $rslt 0 0]} {
+        lappend rslt [$libPut get $path]
+    }
+    set rslt
+} {0 {} val1val2}
+test library-4.2.9 {put command test append = "false"} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    set path "input.test(withId)"
+    $libPut put $path "val1"
+    set rslt [list [catch {$libPut put -append false $path "val2"} msg] $msg]
+    if {![lrange $rslt 0 0]} {
+        lappend rslt [$libPut get $path]
+    }
+    set rslt
+} {0 {} val2}
+test library-4.3.1 {put command valid path 3 arg} {
+    catch {unset libPut}
+    set libPut [Rappture::library rplib_test.xml]
+    list [catch {$libPut put "input.test" "val1" "val2"} msg] $msg
+} {1 {wrong # args: should be "put ?-append bval? ?-id num? ?-type string|file? ?-compress bval? ?path? string"}}
+
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/tcl/tests/remove.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/remove.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/remove.test	(revision 6168)
@@ -0,0 +1,83 @@
+# Commands covered: Rappture::library
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+catch {unset lib}
+
+#----------------------------------------------------------
+# remove command
+# remove "<path>"
+#----------------------------------------------------------
+catch {unset lib}
+set lib [Rappture::library rplib_test.xml]
+test library-11.0.1 {remove command, 2 arguments} {
+    list [catch {$lib remove output junk} msg] $msg
+} {1 {wrong # args: should be "libraryObj0 remove ?path?"}}
+test library-11.1.1 {remove command, 1 argument, valid path} {
+    $lib remove output
+    $lib xml
+} {<run>
+    <tool>
+        <title>Graphing Calculator</title>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/graph @driver</command>
+    </tool>
+    <input>
+        <string id="formula">
+            <about>
+                <label>Formula</label>
+                <hints>Example: 2*x + 1</hints>
+            </about>
+            <size>30x5</size>
+            <default>dsd234ssdf3sdf</default>
+        </string>
+        <string id="name">
+            <about>
+                <label>Name</label>
+                <hints>some text</hints>
+            </about>
+            <size>5x5</size>
+            <default>tluafed</default>
+            <current>tnerruc</current>
+        </string>
+        <number id="min">
+            <about>
+                <label>From x</label>
+            </about>
+            <default>0</default>
+            <current>1</current>
+        </number>
+        <number id="max">
+            <about>
+                <label>To x</label>
+            </about>
+            <default>2</default>
+            <current>3</current>
+        </number>
+    </input>
+</run>
+}
+test library-11.1.2 {remove command, 1 argument, path does not exist} {
+    list [catch {$lib remove skdfjslkd} msg] $msg
+} {0 {}}
+test library-11.2.1 {remove command, 0 arguments} {
+    list [catch {$lib remove} msg] $msg
+} {0 {}}
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/tcl/tests/rplib_test.xml
===================================================================
--- /tags/1.6.0/lang/tcl/tests/rplib_test.xml	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/rplib_test.xml	(revision 6168)
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>Graphing Calculator</title>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/graph @driver</command>
+    </tool>
+    <input>
+        <string id="formula">
+            <about>
+                <label>Formula</label>
+                <hints>Example: 2*x + 1</hints>
+            </about>
+            <size>30x5</size>
+            <default>dsd234ssdf3sdf</default>
+        </string>
+        <string id="name">
+            <about>
+                <label>Name</label>
+                <hints>some text</hints>
+            </about>
+            <size>5x5</size>
+            <default>tluafed</default>
+            <current>tnerruc</current>
+        </string>
+        <number id="min">
+            <about>
+                <label>From x</label>
+            </about>
+            <default>0</default>
+            <current>1</current>
+        </number>
+        <number id="max">
+            <about>
+                <label>To x</label>
+            </about>
+            <default>2</default>
+            <current>3</current>
+        </number>
+    </input>
+    <output>
+        <curve id="result">
+            <about> <label>Formula: Y vs X</label> </about>
+        </curve>
+    </output>
+</run>
Index: /tags/1.6.0/lang/tcl/tests/slice.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/slice.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/slice.test	(revision 6168)
@@ -0,0 +1,88 @@
+# Commands covered: Rappture::slice
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Michael McLennan, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+
+#----------------------------------------------------------
+# Check command line switches and proper args
+#----------------------------------------------------------
+test slice-1.1 {requires at least one arg} {
+    list [catch {Rappture::slice} msg] $msg
+} {1 {wrong # args: should be "Rappture::slice ?-open chars? ?-close chars? ?-separators chars? ?--? string}}
+
+test slice-1.2 {has certain options} {
+    list [catch {Rappture::slice -foo string} msg] $msg
+} {1 {bad option "-foo": should be -open, -close, -separators, --}}
+
+test slice-1.3 {options require values} {
+    list [catch {Rappture::slice -separators string} msg] $msg
+} {1 {wrong # args: should be "Rappture::slice ?-open chars? ?-close chars? ?-separators chars? ?--? string}}
+
+test slice-1.4 {open/close quote lists must match} {
+    list [catch {Rappture::slice -open 1 -close 12 string} msg] $msg
+} {1 {must have same number of quote characters for -open and -close}}
+
+test slice-1.5 {can't have multiple strings} {
+    list [catch {Rappture::slice -separators ab string1 string2} msg] $msg
+} {1 {wrong # args: should be "Rappture::slice ?-open chars? ?-close chars? ?-separators chars? ?--? string}}
+
+test slice-1.6 {use -- when string starts with -} {
+    list [catch {Rappture::slice -- "-foo -bar"} msg] $msg
+} {0 {-foo -bar}}
+
+#----------------------------------------------------------
+# Check the rules for splitting
+#----------------------------------------------------------
+test slice-2.1 {multiple separator chars are lumped together} {
+    Rappture::slice -separators ", \t\n" "one,  two ,  three  "
+} {one two three}
+
+test slice-2.2 {leading separators are ignored} {
+    Rappture::slice -separators ", \t\n" ",, one,  two,"
+} {one two}
+
+test slice-2.3 {quote characters keep things together} {
+    Rappture::slice -open \" -close \" {"foo bar" "baz"  " qux "}
+} {{foo bar} baz { qux }}
+
+test slice-2.4 {embedded quotes are ignored} {
+    Rappture::slice -open \" -close \" {foo"bar "baz\""  \"qux}
+} {foo\"bar {baz\"} {\"qux}}
+
+test slice-2.5 {trailing quote doesn't dump core} {
+    Rappture::slice -open \" -close \" {foo"bar "baz"  \"qux "}
+} {foo\"bar baz {\"qux} {}}
+
+test slice-2.6 {close quote corresponds to open quote} {
+    Rappture::slice -open \"< -close \"> { <foo bar> <a b " c> "a<>b" }
+} {{foo bar} {a b " c} a<>b}
+
+test slice-2.7 {close quote can be escaped} {
+    Rappture::slice -open \"< -close \"> { <<foo bar\>> <a  b> }
+} {{<foo bar\>} {a  b}}
+
+test slice-2.8 {can override standard separators} {
+    Rappture::slice -separators : { 1eV : 2 eV : 0.1}
+} {{ 1eV } { 2 eV } { 0.1}}
+
+test slice-2.9 {no quotes by default} {
+    Rappture::slice -separators : { "1eV : 2 eV" : 0.1}
+} {{ "1eV } { 2 eV" } { 0.1}}
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/tcl/tests/sysinfo.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/sysinfo.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/sysinfo.test	(revision 6168)
@@ -0,0 +1,41 @@
+# Commands covered: Rappture::sysinfo
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Michael McLennan, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+
+#----------------------------------------------------------
+# Rappture::sysinfo ?<key> <key> ...?
+#----------------------------------------------------------
+test sysinfo-1 {query all system info} {
+    set rval ""
+    foreach {key val} [Rappture::sysinfo] {
+        lappend rval $key
+    }
+} {}
+
+test sysinfo-2 {query just a few parameters} {
+    set info [Rappture::sysinfo uptime freeram totalram]
+    regexp {^[0-9]+ +[0-9]+ +[0-9]+$} $info
+} {1}
+
+test sysinfo-3 {if a key name is not recognized, we get an error} {
+    list [catch {Rappture::sysinfo uptime foo} msg] $msg
+} {1 {bad parameter "foo": should be one of freeram, freeswap, load1, load5, load15, procs, totalram, totalswap, uptime}}
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lang/tcl/tests/units.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/units.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/units.test	(revision 6168)
@@ -0,0 +1,1192 @@
+# Commands covered: 
+#   Rappture::Units::convert
+#   Rappture::Units::description
+#   Rappture::Units::System::for
+#   Rappture::Units::System::all
+#   Rappture::Units::Search::for
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+catch {unset lib}
+
+proc check {var size} {
+    set l [llength $var]
+    if {$l != $size} {
+        return "length mismatch: should have been $size, was $l"
+    }
+    for {set i 0} {$i < $size} {set i [expr $i+1]} {
+        set j [lindex $var $i]
+        if {$j != "item $i"} {
+            return "element $i should have been \"item $i\", was \"$j\""
+        }
+    }
+    return ok
+}
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# convert command
+# Rappture::Units::convert <value> ?-context? ?-to units? ?-units on/off?
+#----------------------------------------------------------
+test convert-1.0.1 {Rappture::Units::convert, 0 arguments} {
+    list [catch {Rappture::Units::convert} msg] $msg
+} {1 {wrong # args: should be "Rappture::Units::convert <value> ?-context units? ?-to units? ?-units on/off?"}}
+
+test convert-1.1.1 {Rappture::Units::convert, 1 invalid argument} {
+    list [catch {Rappture::Units::convert re} msg] $msg
+} {1 {bad value "re": should be a real number with units}}
+
+test convert-1.1.2 {Rappture::Units::convert, invalid value, valid context} {
+    list [catch {Rappture::Units::convert re -context mm} msg] $msg
+} {1 {bad value "re": should be a real number with units of (A,bohr,in,m)}}
+
+test convert-1.1.3 {Rappture::Units::convert, 1 valid argument} {
+    list [catch {Rappture::Units::convert 5} msg] $msg
+} {1 {value: "5" has unrecognized units}}
+
+test convert-1.2.0 {Rappture::Units::convert, 1 valid argument w/ units} {
+    list [catch {Rappture::Units::convert 5m} msg] $msg
+} {0 5m}
+
+test convert-1.3.0 {Rappture::Units::convert, -context blank} {
+    list [catch {Rappture::Units::convert 5m -context} msg] $msg
+} {0 5m}
+
+test convert-1.3.1 {Rappture::Units::convert, -context valid} {
+    list [catch {Rappture::Units::convert 5m -context m} msg] $msg
+} {0 5m}
+
+#test convert-1.3.2.1 {Rappture::Units::convert, -context invalid} {
+## this test passes for old tcl version, fails for new tcl bindings
+#    list [catch {Rappture::Units::convert 5m -context ff} msg] $msg
+#} {0 5m}
+
+test convert-1.3.2.2 {Rappture::Units::convert, -context invalid} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::convert 5m -context xx} msg] $msg
+} {1 {bad value "xx": should be a recognized unit for Rappture}}
+
+test convert-1.4.0 {Rappture::Units::convert, -to blank} {
+    list [catch {Rappture::Units::convert 5m -to} msg] $msg
+} {0 5m}
+
+#test convert-1.4.1.1 {Rappture::Units::convert, -to valid} {
+## this test passes for old tcl version, fails for new tcl bindings
+#    list [catch {Rappture::Units::convert 5m -to A} msg] $msg
+#} {0 50000000000A}
+
+test convert-1.4.1.2 {Rappture::Units::convert, -to valid} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::convert 5m -to A} msg] $msg
+} {0 5e+10A}
+
+#test convert-1.4.2.1 {Rappture::Units::convert, -to invalid} {
+## this test passes for old tcl version, fails for new tcl bindings
+#    list [catch {Rappture::Units::convert 5m -to ff} msg] $msg
+#} {1 {invalid command name ""}}
+
+test convert-1.4.2.2 {Rappture::Units::convert, -to invalid} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::convert 5m -to xx} msg] $msg
+} {1 {bad value "xx": should be a recognized unit for Rappture}}
+
+#test convert-1.5.0 {Rappture::Units::convert, -units blank} {
+## this test passes for old tcl version, fails for new tcl bindings
+#    list [catch {Rappture::Units::convert 5m -units} msg] $msg
+#} {1 {expected boolean value but got ""}}
+
+test convert-1.5.0 {Rappture::Units::convert, -units blank} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::convert 5m -units} msg] $msg
+} {1 {expected boolean value but got ""}}
+
+test convert-1.5.1 {Rappture::Units::convert, -units on} {
+    list [catch {Rappture::Units::convert 5m -units on} msg] $msg
+} {0 5m}
+
+#test convert-1.5.2.1 {Rappture::Units::convert, -units off} {
+## this test passes for old tcl version, fails for new tcl bindings
+## comments for the Rappture::Units::convert function specify that
+## If the -to system is not specified, then the value is converted to 
+## fundamental units for the current system. but the code just returns
+## the value, as specified by lines 115-118 or units.tcl 20060414
+#    list [catch {Rappture::Units::convert 5m -units off} msg] $msg
+#} {0 5m}
+
+test convert-1.5.2.2 {Rappture::Units::convert, -units off} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::convert 5m -units off} msg] $msg
+} {0 5}
+
+test convert-1.5.3 {Rappture::Units::convert, -units invalid} {
+# this test passes for new tcl bindings, fails for old tcl version
+# because tcl version makes -units depend of -to flag being populated.
+    list [catch {Rappture::Units::convert 5m -units sdfsd} msg] $msg
+} {1 {expected boolean value but got "sdfsd"}}
+
+#test convert-1.6.0.1 {Rappture::Units::convert, all flags, all valid} {
+## this test passes for old tcl version, fails for new tcl bindings
+## new bindings return scientific notation.
+#    list [catch {Rappture::Units::convert 5m -context m -to A -units off} msg] $msg
+#} {0 50000000000}
+
+test convert-1.6.0.2 {Rappture::Units::convert, all flags, all valid} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::convert 5m -context m -to A -units off} msg] $msg
+} {0 5e+10}
+
+test convert-1.7.0 {Rappture::Units::convert, val w/o units} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::convert 5 -context m} msg] $msg
+} {0 5m}
+
+#test convert-1.7.1.1 {Rappture::Units::convert, invalid val w/ -context} {
+## this test passes for old tcl version, fails for new tcl bindings
+#    list [catch {Rappture::Units::convert de -context m } msg] $msg
+#} {1 {bad value "de": should be a real number with units of (m,A)}}
+
+test convert-1.7.1.2 {Rappture::Units::convert, invalid val w/ -context} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::convert de -context m } msg] $msg
+} {1 {bad value "de": should be a real number with units of (A,bohr,in,m)}}
+
+test convert-1.8.0 {Rappture::Units::convert, convert undefined unit} {
+    list [catch {Rappture::Units::convert 33Q -to nm } msg] $msg
+} {1 {Unrecognized units: "Q".
+Should be units of type length (A,bohr,in,m)}}
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# description command
+# Rappture::Units::description <units>
+#----------------------------------------------------------
+
+test desc-2.0.0 {Rappture::Units::descption, blank units} {
+    list [catch {Rappture::Units::description} msg] $msg
+} {1 {wrong # args: should be "Rappture::Units::description units"}}
+
+test desc-2.1.0 {Rappture::Units::descption, invalid units} {
+# special note in the tcl bindings code reflects that i think 
+# this behavior is incorrect, but tcl bindings comply with the 
+# tcl version for now.
+    list [catch {Rappture::Units::description qqq} msg] $msg
+} {0 {}}
+
+test desc-2.2.0 {Rappture::Units::descption, valid units} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::description eV} msg] $msg
+} {0 {energy (J,eV)}}
+
+test desc-2.2.1 {Rappture::Units::descption, *cm2*K/Vs} {
+    list [catch {Rappture::Units::description *cm2*K/Vs} msg] $msg
+} {0 {length*temperature/electric_potential*time (/V,/s,A2,C,F,K,R,bohr2,in2,m2)}}
+
+test desc-2.2.2 {Rappture::Units::descption, cm2 areas} {
+    list [catch {Rappture::Units::description cm2} msg] $msg
+} {0 {area (A2,bohr2,in2,m2)}}
+
+test desc-2.2.3 {Rappture::Units::descption, cm3 volumes} {
+    list [catch {Rappture::Units::description cm3} msg] $msg
+} {0 {volume (A3,bohr3,in3,m3)}}
+
+test desc-2.2.4 {Rappture::Units::descption, K temperature} {
+    list [catch {Rappture::Units::description K} msg] $msg
+} {0 {temperature (C,F,K,R)}}
+
+test desc-2.2.5 {Rappture::Units::descption, s time} {
+    list [catch {Rappture::Units::description s} msg] $msg
+} {0 {time (s)}}
+
+test desc-2.3.0 {Rappture::Units::descption, too many args} {
+    list [catch {Rappture::Units::description eV ee} msg] $msg
+} {1 {wrong # args: should be "Rappture::Units::description units"}}
+
+test desc-2.3.1 {Rappture::Units::descption, incorrect input type} {
+    list [catch {Rappture::Units::description 3cm} msg] $msg
+} {0 {}}
+
+test desc-2.4.0 {Rappture::Units::descption, "mm" correct units retrieval} {
+    list [catch {Rappture::Units::description mm} msg] $msg
+} {0 {length (A,bohr,in,m)}}
+
+test desc-2.4.1 {Rappture::Units::descption, "MM" correct units retrieval} {
+    list [catch {Rappture::Units::description MM} msg] $msg
+} {0 {length (A,bohr,in,m)}}
+
+test desc-2.4.2 {Rappture::Units::descption, "mM" correct units retrieval} {
+    list [catch {Rappture::Units::description mM} msg] $msg
+} {0 {length (A,bohr,in,m)}}
+
+test desc-2.4.3 {Rappture::Units::descption, "Mm" correct units retrieval} {
+    list [catch {Rappture::Units::description Mm} msg] $msg
+} {0 {length (A,bohr,in,m)}}
+
+test desc-2.4.4 {Rappture::Units::descption, "mv" correct units retrieval} {
+    list [catch {Rappture::Units::description mv} msg] $msg
+} {0 {electric_potential (V)}}
+
+test desc-2.4.5 {Rappture::Units::descption, "mV" correct units retrieval} {
+    list [catch {Rappture::Units::description mV} msg] $msg
+} {0 {electric_potential (V)}}
+
+test desc-2.4.6 {Rappture::Units::descption, "MV" correct units retrieval} {
+    list [catch {Rappture::Units::description MV} msg] $msg
+} {0 {electric_potential (V)}}
+
+test desc-2.4.7 {Rappture::Units::descption, "Mv" correct units retrieval} {
+    list [catch {Rappture::Units::description Mv} msg] $msg
+} {0 {electric_potential (V)}}
+
+test desc-2.4.8 {Rappture::Units::descption, "ms" correct units retrieval} {
+    list [catch {Rappture::Units::description ms} msg] $msg
+} {0 {time (s)}}
+
+test desc-2.4.9 {Rappture::Units::descption, "mS" correct units retrieval} {
+    list [catch {Rappture::Units::description mS} msg] $msg
+} {0 {time (s)}}
+
+test desc-2.4.10 {Rappture::Units::descption, "MS" correct units retrieval} {
+    list [catch {Rappture::Units::description MS} msg] $msg
+} {0 {time (s)}}
+
+test desc-2.4.11 {Rappture::Units::descption, "Ms" correct units retrieval} {
+    list [catch {Rappture::Units::description Ms} msg] $msg
+} {0 {time (s)}}
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# for command
+# Rappture::Units::System::for <units>
+#----------------------------------------------------------
+
+#test for-3.0.0.1 {Rappture::Units::System::for, blank units} {
+## this test passes for old tcl version, fails for new tcl bindings
+## because of additional "::" prefixed on object name
+#    list [catch {Rappture::Units::System::for} msg] $msg
+#} {1 {wrong # args: should be "::Rappture::Units::System::for units"}}
+
+test for-3.0.0.2 {Rappture::Units::System::for, blank units} {
+    list [catch {Rappture::Units::System::for} msg] $msg
+} {1 {wrong # args: should be "Rappture::Units::System::for units"}}
+
+test for-3.1.0 {Rappture::Units::System::for, invalid units} {
+# special note in the tcl bindings code reflects that i think 
+# this behavior is incorrect, but tcl bindings comply with the 
+# tcl version for now.
+    list [catch {Rappture::Units::System::for qqq} msg] $msg
+} {0 {}}
+
+#test for-3.2.0.1 {Rappture::Units::System::for, valid units} {
+## this test passes for old tcl version, fails for new tcl bindings
+## because different order of units
+#    list [catch {Rappture::Units::System::for eV} msg] $msg
+#} {0 ::Rappture::Units::system6}
+
+test for-3.2.0.2 {Rappture::Units::System::for, valid units} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::System::for eV} msg] $msg
+} {0 energy}
+
+#test for-3.3.0.1 {Rappture::Units::System::for, too many args} {
+## this test passes for old tcl version, fails for new tcl bindings
+## because of additional "::" prefixed on object name
+#    list [catch {Rappture::Units::System::for eV ee} msg] $msg
+#} {1 {wrong # args: should be "::Rappture::Units::System::for units"}}
+
+test for-3.3.0.2 {Rappture::Units::System::for, too many args} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::System::for eV ee} msg] $msg
+} {1 {wrong # args: should be "Rappture::Units::System::for units"}}
+
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# all command
+# Rappture::Units::Sys::all <units>
+#----------------------------------------------------------
+
+#test all-4.0.0.1 {Rappture::Units::System::all, blank} {
+## this test passes for old tcl version, fails for new tcl bindings
+## because of additional "::" prefixed on object name
+#    list [catch {Rappture::Units::System::all} msg] $msg
+#} {1 {wrong # args: should be "::Rappture::Units::System::all units"}}
+
+test all-4.0.0.2 {Rappture::Units::System::all, blank units} {
+    list [catch {Rappture::Units::System::all} msg] $msg
+} {1 {wrong # args: should be "Rappture::Units::System::all units"}}
+
+test all-4.1.0 {Rappture::Units::System::all, invalid units} {
+# special note in the tcl bindings code reflects that i think 
+# this behavior is incorrect, but tcl bindings comply with the 
+# tcl version for now.
+    list [catch {Rappture::Units::System::all qqq} msg] $msg
+} {0 {}}
+
+#test all-4.2.0.1 {Rappture::Units::System::all, valid units} {
+## this test passes for old tcl version, fails for new tcl bindings
+## because different order of units
+#    list [catch {Rappture::Units::System::all eV} msg] $msg
+#} {0 {eV J}}
+
+test all-4.2.0.2 {Rappture::Units::System::all, valid units} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::System::all eV} msg] $msg
+} {0 {J eV}}
+
+#test all-4.3.0.1 {Rappture::Units::System::all, too many args} {
+## this test passes for old tcl version, fails for new tcl bindings
+## because of additional "::" prefixed on object name
+#    list [catch {Rappture::Units::System::all eV ee} msg] $msg
+#} {1 {wrong # args: should be "::Rappture::Units::System::all units"}}
+
+test all-4.3.0.2 {Rappture::Units::System::all, too many args} {
+# this test passes for new tcl bindings, fails for old tcl version
+    list [catch {Rappture::Units::System::all eV ee} msg] $msg
+} {1 {wrong # args: should be "Rappture::Units::System::all units"}}
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# convert command - testing units conversions
+#----------------------------------------------------------
+
+test convert_units-5.4.1.0 {Rappture::Units::convert, m->A} {
+    list [catch {Rappture::Units::convert 5m -to A} msg] $msg
+} {0 5e+10A}
+
+test convert_units-5.4.1.1 {Rappture::Units::convert, m<-A} {
+    list [catch {Rappture::Units::convert 5A -to m} msg] $msg
+} {0 5e-10m}
+
+#--------------------------------------------------------------------
+# Metric Extension Conversions
+#--------------------------------------------------------------------
+
+test convert_units-5.4.2.0 {Rappture::Units::convert, m->dm} {
+    list [catch {Rappture::Units::convert 5m -to dm} msg] $msg
+} {0 50dm}
+
+test convert_units-5.4.2.1 {Rappture::Units::convert, m->cm} {
+    list [catch {Rappture::Units::convert 5m -to cm} msg] $msg
+} {0 500cm}
+
+test convert_units-5.4.2.3 {Rappture::Units::convert, m->mm} {
+    list [catch {Rappture::Units::convert 5m -to mm} msg] $msg
+} {0 5000mm}
+
+test convert_units-5.4.2.4 {Rappture::Units::convert, m->um} {
+    list [catch {Rappture::Units::convert 5m -to um} msg] $msg
+} {0 5e+06um}
+
+test convert_units-5.4.2.5 {Rappture::Units::convert, m->nm} {
+    list [catch {Rappture::Units::convert 5m -to nm} msg] $msg
+} {0 5e+09nm}
+
+test convert_units-5.4.2.6 {Rappture::Units::convert, m->pm} {
+    list [catch {Rappture::Units::convert 5m -to pm} msg] $msg
+} {0 5e+12pm}
+
+test convert_units-5.4.2.7 {Rappture::Units::convert, m->fm} {
+    list [catch {Rappture::Units::convert 5m -to fm} msg] $msg
+} {0 5e+15fm}
+
+test convert_units-5.4.2.8 {Rappture::Units::convert, m->am} {
+    list [catch {Rappture::Units::convert 5m -to am} msg] $msg
+} {0 5e+18am}
+
+test convert_units-5.4.2.9 {Rappture::Units::convert, m->dam} {
+    list [catch {Rappture::Units::convert 5m -to dam} msg] $msg
+} {0 0.5dam}
+
+test convert_units-5.4.2.10 {Rappture::Units::convert, m->hm} {
+    list [catch {Rappture::Units::convert 5m -to hm} msg] $msg
+} {0 0.05hm}
+
+test convert_units-5.4.2.11 {Rappture::Units::convert, m->km} {
+    list [catch {Rappture::Units::convert 5m -to km} msg] $msg
+} {0 0.005km}
+
+test convert_units-5.4.2.12 {Rappture::Units::convert, m->Mm} {
+    list [catch {Rappture::Units::convert 5m -to Mm} msg] $msg
+} {0 5e-06Mm}
+
+test convert_units-5.4.2.13 {Rappture::Units::convert, m->Gm} {
+    list [catch {Rappture::Units::convert 5m -to Gm} msg] $msg
+} {0 5e-09Gm}
+
+test convert_units-5.4.2.14 {Rappture::Units::convert, m->Tm} {
+    list [catch {Rappture::Units::convert 5m -to Tm} msg] $msg
+} {0 5e-12Tm}
+
+test convert_units-5.4.2.15 {Rappture::Units::convert, m->Pm} {
+    list [catch {Rappture::Units::convert 5m -to Pm} msg] $msg
+} {0 5e-15Pm}
+
+test convert_units-5.4.2.16 {Rappture::Units::convert, m->Em} {
+    list [catch {Rappture::Units::convert 5m -to Em} msg] $msg
+} {0 5e-18Em}
+
+test convert_units-5.4.2.17 {Rappture::Units::convert, dm->m} {
+    list [catch {Rappture::Units::convert 5dm -to m} msg] $msg
+} {0 0.5m}
+
+test convert_units-5.4.2.18 {Rappture::Units::convert, cm->m} {
+    list [catch {Rappture::Units::convert 5cm -to m} msg] $msg
+} {0 0.05m}
+
+test convert_units-5.4.2.19 {Rappture::Units::convert, mm->m} {
+    list [catch {Rappture::Units::convert 5mm -to m} msg] $msg
+} {0 0.005m}
+
+test convert_units-5.4.2.20 {Rappture::Units::convert, um->m} {
+    list [catch {Rappture::Units::convert 5um -to m} msg] $msg
+} {0 5e-06m}
+
+test convert_units-5.4.2.21 {Rappture::Units::convert, nm->m} {
+    list [catch {Rappture::Units::convert 5nm -to m} msg] $msg
+} {0 5e-09m}
+
+test convert_units-5.4.2.22 {Rappture::Units::convert, pm->m} {
+    list [catch {Rappture::Units::convert 5pm -to m} msg] $msg
+} {0 5e-12m}
+
+test convert_units-5.4.2.23 {Rappture::Units::convert, fm->m} {
+    list [catch {Rappture::Units::convert 5fm -to m} msg] $msg
+} {0 5e-15m}
+
+test convert_units-5.4.2.24 {Rappture::Units::convert, am->m} {
+    list [catch {Rappture::Units::convert 5am -to m} msg] $msg
+} {0 5e-18m}
+
+test convert_units-5.4.2.25 {Rappture::Units::convert, dam->m} {
+    list [catch {Rappture::Units::convert 5dam -to m} msg] $msg
+} {0 50m}
+
+test convert_units-5.4.2.26 {Rappture::Units::convert, hm->m} {
+    list [catch {Rappture::Units::convert 5hm -to m} msg] $msg
+} {0 500m}
+
+test convert_units-5.4.2.27 {Rappture::Units::convert, km->m} {
+    list [catch {Rappture::Units::convert 5km -to m} msg] $msg
+} {0 5000m}
+
+test convert_units-5.4.2.28 {Rappture::Units::convert, Mm->m} {
+    list [catch {Rappture::Units::convert 5Mm -to m} msg] $msg
+} {0 5e+06m}
+
+test convert_units-5.4.2.29 {Rappture::Units::convert, Gm->G} {
+    list [catch {Rappture::Units::convert 5Gm -to m} msg] $msg
+} {0 5e+09m}
+
+test convert_units-5.4.2.30 {Rappture::Units::convert, Tm->m} {
+    list [catch {Rappture::Units::convert 5Tm -to m} msg] $msg
+} {0 5e+12m}
+
+test convert_units-5.4.2.31 {Rappture::Units::convert, Pm->m} {
+    list [catch {Rappture::Units::convert 5Pm -to m} msg] $msg
+} {0 5e+15m}
+
+test convert_units-5.4.2.32 {Rappture::Units::convert, Em->m} {
+    list [catch {Rappture::Units::convert 5Em -to m} msg] $msg
+} {0 5e+18m}
+
+#--------------------------------------------------------------------
+# Concentration Conversions
+#--------------------------------------------------------------------
+
+test convert_units-5.4.3.0 {Rappture::Units::convert, pH->pOH} {
+    list [catch {Rappture::Units::convert 5pH -to pOH} msg] $msg
+} {0 9pOH}
+
+test convert_units-5.4.3.1 {Rappture::Units::convert, pOH->pH} {
+    list [catch {Rappture::Units::convert 9pOH -to pH} msg] $msg
+} {0 5pH}
+
+#--------------------------------------------------------------------
+# Multiple Unit Conversions
+#--------------------------------------------------------------------
+
+test convert_units-5.4.4.0 {Rappture::Units::convert, cm2/Vs->m2/kVus} {
+    list [catch {Rappture::Units::convert 2cm2/Vs -to m2/kVus} msg] $msg
+} {0 2e-07m2/kVus}
+
+test convert_units-5.4.4.1 {Rappture::Units::convert, cm2/Vs->m2/kQus} {
+    list [catch {Rappture::Units::convert 2cm2/Vs -to m2/kQus} msg] $msg
+} {1 {bad value "m2/kQus": should be a recognized unit for Rappture}}
+
+test convert_units-5.4.4.2 {Rappture::Units::convert, cm2nZ/Vs->m2/us} {
+    list [catch {Rappture::Units::convert 2cm2nZ/Vs -to m2/us} msg] $msg
+} {1 {Unrecognized units: "cm2nZ/Vs".
+Should be units of type length/time (/s,A2,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.3 {Rappture::Units::convert, cm2/s->m2/kVus} {
+    list [catch {Rappture::Units::convert 2cm2/s -to m2/kVus} msg] $msg
+} {1 {unmatched units in conversion: (kV-1)
+Please enter units of type length/electric_potential*time (/V,/s,A2,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.4 {Rappture::Units::convert, cm2/s->m2/uskV} {
+    list [catch {Rappture::Units::convert 2cm2/s -to m2/uskV} msg] $msg
+} {1 {unmatched units in conversion: (kV-1)
+Please enter units of type length/time*electric_potential (/V,/s,A2,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.5 {Rappture::Units::convert, cm2V/s->m2/us} {
+    list [catch {Rappture::Units::convert 2cm2V/s -to m2/us} msg] $msg
+} {1 {unmatched units in conversion: (V)
+Please enter units of type length/time (/s,A2,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.6 {Rappture::Units::convert, cm2V/s->m2/us} {
+    list [catch {Rappture::Units::convert 2cm2V/s -to m2/us} msg] $msg
+} {1 {unmatched units in conversion: (V)
+Please enter units of type length/time (/s,A2,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.7 {Rappture::Units::convert, cm2V->m2} {
+    list [catch {Rappture::Units::convert 2cm2V -to m2} msg] $msg
+} {1 {unmatched units in conversion: (V)
+Please enter units of type length (A2,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.8 {Rappture::Units::convert, Vcm2->m2} {
+    list [catch {Rappture::Units::convert 2Vcm2 -to m2} msg] $msg
+} {1 {unmatched units in conversion: (V)
+Please enter units of type length (A2,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.9 {Rappture::Units::convert, cm2->Vm2} {
+    list [catch {Rappture::Units::convert 2cm2 -to Vm2} msg] $msg
+} {1 {unmatched units in conversion: (V)
+Please enter units of type electric_potential*length (A2,V,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.10 {Rappture::Units::convert, cm2->m2V} {
+    list [catch {Rappture::Units::convert 2cm2 -to m2V} msg] $msg
+} {1 {unmatched units in conversion: (V)
+Please enter units of type length*electric_potential (A2,V,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.11 {Rappture::Units::convert, cm2A->Vm2} {
+    list [catch {Rappture::Units::convert 2cm2A -to Vm2} msg] $msg
+} {1 {unmatched units in conversion: (A) -> (V)
+Please enter units of type electric_potential*length (A2,V,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.12 {Rappture::Units::convert, cm2A->m2V} {
+    list [catch {Rappture::Units::convert 2cm2A -to m2V} msg] $msg
+} {1 {Conversion unavailable: (A) -> (V)
+Please enter units of type length*electric_potential (A2,V,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.13 {Rappture::Units::convert, Acm2->Vm2} {
+    list [catch {Rappture::Units::convert 2Acm2 -to Vm2} msg] $msg
+} {1 {unmatched units in conversion: (A) -> (V)
+Please enter units of type electric_potential*length (A2,V,bohr2,in2,m2)}}
+
+test convert_units-5.4.4.14 {Rappture::Units::convert, Acm2->m2V} {
+    list [catch {Rappture::Units::convert 2Acm2 -to m2V} msg] $msg
+} {1 {Conversion unavailable: (A) -> (V)
+Please enter units of type length*electric_potential (A2,V,bohr2,in2,m2)}}
+
+#--------------------------------------------------------------------
+# Inverse Unit Conversions
+#--------------------------------------------------------------------
+
+test convert_units-5.4.5.0 {Rappture::Units::convert, /cm2->/m2} {
+    list [catch {Rappture::Units::convert 2/cm2 -to /m2} msg] $msg
+} {0 20000/m2}
+
+test convert_units-5.4.5.1 {Rappture::Units::convert, cm2->/m2} {
+    list [catch {Rappture::Units::convert 1cm -to /m2} msg] $msg
+} {1 {Conversion unavailable: (cm) -> (m-2)
+Please enter units of type /area (/A2,/bohr2,/in2,/m2)}}
+
+#--------------------------------------------------------------------
+# Temperature Conversions
+#--------------------------------------------------------------------
+
+test convert_units-5.4.6.0 {Rappture::Units::convert, F->C} {
+    list [catch {Rappture::Units::convert 78.8F -to C} msg] $msg
+} {0 26C}
+
+test convert_units-5.4.6.1 {Rappture::Units::convert, C->F} {
+    list [catch {Rappture::Units::convert 26C -to F} msg] $msg
+} {0 78.8F}
+
+test convert_units-5.4.6.2 {Rappture::Units::convert, C->K} {
+    list [catch {Rappture::Units::convert 26C -to K} msg] $msg
+} {0 299.15K}
+
+test convert_units-5.4.6.3 {Rappture::Units::convert, K->C} {
+    list [catch {Rappture::Units::convert 299.15K -to C} msg] $msg
+} {0 26C}
+
+test convert_units-5.4.6.4 {Rappture::Units::convert, K->F} {
+    list [catch {Rappture::Units::convert 299.15K -to F} msg] $msg
+} {0 78.8F}
+
+test convert_units-5.4.6.5 {Rappture::Units::convert, F->K} {
+    list [catch {Rappture::Units::convert 78.8F -to K} msg] $msg
+} {0 299.15K}
+
+test convert_units-5.4.6.6 {Rappture::Units::convert, F->R} {
+    list [catch {Rappture::Units::convert 78.8F -to R} msg] $msg
+} {0 538.47R}
+
+test convert_units-5.4.6.7 {Rappture::Units::convert, R->F} {
+    list [catch {Rappture::Units::convert 538.47R -to F} msg] $msg
+} {0 78.8F}
+
+test convert_units-5.4.6.8 {Rappture::Units::convert, R->C} {
+    list [catch {Rappture::Units::convert 538.47R -to C} msg] $msg
+} {0 26C}
+
+test convert_units-5.4.6.9 {Rappture::Units::convert, C->R} {
+    list [catch {Rappture::Units::convert 26C -to R} msg] $msg
+} {0 538.47R}
+
+test convert_units-5.4.6.10 {Rappture::Units::convert, R->K} {
+    list [catch {Rappture::Units::convert 538.47R -to K} msg] $msg
+} {0 299.15K}
+
+test convert_units-5.4.6.11 {Rappture::Units::convert, K->R} {
+    list [catch {Rappture::Units::convert 299.15K -to R} msg] $msg
+} {0 538.47R}
+
+test convert_units-5.4.6.12 {Rappture::Units::convert, K->mK} {
+    list [catch {Rappture::Units::convert 299.15K -to mK} msg] $msg
+} {0 299150mK}
+
+test convert_units-5.4.6.13 {Rappture::Units::convert, K->mk} {
+    list [catch {Rappture::Units::convert 299.15K -to mk} msg] $msg
+} {0 299150mK}
+
+test convert_units-5.4.6.14 {Rappture::Units::convert, C->mC} {
+    list [catch {Rappture::Units::convert 100C -to mC} msg] $msg
+} {0 100000mC}
+
+test convert_units-5.4.6.15 {Rappture::Units::convert, C->mc} {
+    list [catch {Rappture::Units::convert 100C -to mc} msg] $msg
+} {0 100000mC}
+
+
+#--------------------------------------------------------------------
+# Energy Conversions
+#--------------------------------------------------------------------
+
+test convert_units-5.4.7.0 {Rappture::Units::convert, eV->J} {
+    list [catch {Rappture::Units::convert 5eV -to J} msg] $msg
+} {0 8.01089e-19J}
+
+test convert_units-5.4.7.1 {Rappture::Units::convert, J->eV} {
+    list [catch {Rappture::Units::convert 8.01088231e-19J -to eV} msg] $msg
+} {0 5eV}
+
+#--------------------------------------------------------------------
+# Time Conversions
+#--------------------------------------------------------------------
+
+test convert_units-5.4.8.0 {Rappture::Units::convert, s->s} {
+    list [catch {Rappture::Units::convert 5s -to s} msg] $msg
+} {0 5s}
+
+test convert_units-5.4.8.1 {Rappture::Units::convert, min->s} {
+    list [catch {Rappture::Units::convert 5min -to s} msg] $msg
+} {0 300s}
+
+test convert_units-5.4.8.2 {Rappture::Units::convert, h->s} {
+    list [catch {Rappture::Units::convert 5h -to s} msg] $msg
+} {0 18000s}
+
+test convert_units-5.4.8.3 {Rappture::Units::convert, d->s} {
+    list [catch {Rappture::Units::convert 5d -to s} msg] $msg
+} {0 432000s}
+
+test convert_units-5.4.8.4 {Rappture::Units::convert, s->min} {
+    list [catch {Rappture::Units::convert 5s -to min} msg] $msg
+} {0 0.0833333min}
+
+test convert_units-5.4.8.5 {Rappture::Units::convert, min->min} {
+    list [catch {Rappture::Units::convert 5min -to min} msg] $msg
+} {0 5min}
+
+test convert_units-5.4.8.6 {Rappture::Units::convert, h->min} {
+    list [catch {Rappture::Units::convert 5h -to min} msg] $msg
+} {0 300min}
+
+test convert_units-5.4.8.7 {Rappture::Units::convert, d->min} {
+    list [catch {Rappture::Units::convert 5d -to min} msg] $msg
+} {0 7200min}
+
+test convert_units-5.4.8.8 {Rappture::Units::convert, s->h} {
+    list [catch {Rappture::Units::convert 5s -to h} msg] $msg
+} {0 0.00138889h}
+
+test convert_units-5.4.8.9 {Rappture::Units::convert, min->h} {
+    list [catch {Rappture::Units::convert 5min -to h} msg] $msg
+} {0 0.0833333h}
+
+test convert_units-5.4.8.10 {Rappture::Units::convert, h->h} {
+    list [catch {Rappture::Units::convert 5h -to h} msg] $msg
+} {0 5h}
+
+test convert_units-5.4.8.11 {Rappture::Units::convert, d->h} {
+    list [catch {Rappture::Units::convert 5d -to h} msg] $msg
+} {0 120h}
+
+test convert_units-5.4.8.12 {Rappture::Units::convert, s->d} {
+    list [catch {Rappture::Units::convert 5s -to d} msg] $msg
+} {0 5.78704e-05d}
+
+test convert_units-5.4.8.13 {Rappture::Units::convert, min->d} {
+    list [catch {Rappture::Units::convert 5min -to d} msg] $msg
+} {0 0.00347222d}
+
+test convert_units-5.4.8.14 {Rappture::Units::convert, h->d} {
+    list [catch {Rappture::Units::convert 5h -to d} msg] $msg
+} {0 0.208333d}
+
+test convert_units-5.4.8.15 {Rappture::Units::convert, d->d} {
+    list [catch {Rappture::Units::convert 5d -to d} msg] $msg
+} {0 5d}
+
+#--------------------------------------------------------------------
+# Pressure Conversions
+#--------------------------------------------------------------------
+
+test convert_units-5.4.9.0 {Rappture::Units::convert, bar->Pa} {
+    list [catch {Rappture::Units::convert 5bar -to Pa} msg] $msg
+} {0 500000Pa}
+
+test convert_units-5.4.9.1 {Rappture::Units::convert, bar->atm} {
+    list [catch {Rappture::Units::convert 5bar -to atm} msg] $msg
+} {0 4.9346atm}
+
+test convert_units-5.4.9.2 {Rappture::Units::convert, bar->torr} {
+    list [catch {Rappture::Units::convert 5bar -to torr} msg] $msg
+} {0 3750.3torr}
+
+test convert_units-5.4.9.3 {Rappture::Units::convert, bar->psi} {
+    list [catch {Rappture::Units::convert 5bar -to psi} msg] $msg
+} {0 72.52psi}
+
+test convert_units-5.4.9.4 {Rappture::Units::convert, bar->bar} {
+    list [catch {Rappture::Units::convert 5bar -to bar} msg] $msg
+} {0 5bar}
+
+test convert_units-5.4.9.5 {Rappture::Units::convert, atm->Pa} {
+    list [catch {Rappture::Units::convert 5atm -to Pa} msg] $msg
+} {0 506625Pa}
+
+test convert_units-5.4.9.6 {Rappture::Units::convert, atm->atm} {
+    list [catch {Rappture::Units::convert 5atm -to atm} msg] $msg
+} {0 5atm}
+
+test convert_units-5.4.9.7 {Rappture::Units::convert, atm->torr} {
+    list [catch {Rappture::Units::convert 5atm -to torr} msg] $msg
+} {0 3800torr}
+
+test convert_units-5.4.9.8 {Rappture::Units::convert, atm->psi} {
+    list [catch {Rappture::Units::convert 5bar -to psi} msg] $msg
+} {0 72.52psi}
+
+test convert_units-5.4.9.9 {Rappture::Units::convert, atm->bar} {
+    list [catch {Rappture::Units::convert 5atm -to bar} msg] $msg
+} {0 5.06627bar}
+
+test convert_units-5.4.9.10 {Rappture::Units::convert, Pa->Pa} {
+    list [catch {Rappture::Units::convert 5Pa -to Pa} msg] $msg
+} {0 5Pa}
+
+test convert_units-5.4.9.11 {Rappture::Units::convert, Pa->atm} {
+    list [catch {Rappture::Units::convert 5Pa -to atm} msg] $msg
+} {0 4.9346e-05atm}
+
+test convert_units-5.4.9.12 {Rappture::Units::convert, Pa->torr} {
+    list [catch {Rappture::Units::convert 5Pa -to torr} msg] $msg
+} {0 0.037503torr}
+
+test convert_units-5.4.9.13 {Rappture::Units::convert, Pa->psi} {
+    list [catch {Rappture::Units::convert 5Pa -to psi} msg] $msg
+} {0 0.0007252psi}
+
+test convert_units-5.4.9.14 {Rappture::Units::convert, Pa->bar} {
+    list [catch {Rappture::Units::convert 5Pa -to bar} msg] $msg
+} {0 5e-05bar}
+
+test convert_units-5.4.9.15 {Rappture::Units::convert, torr->Pa} {
+    list [catch {Rappture::Units::convert 5torr -to Pa} msg] $msg
+} {0 666.613Pa}
+
+test convert_units-5.4.9.16 {Rappture::Units::convert, torr->atm} {
+    list [catch {Rappture::Units::convert 5torr -to atm} msg] $msg
+} {0 0.006579atm}
+
+test convert_units-5.4.9.17 {Rappture::Units::convert, torr->torr} {
+    list [catch {Rappture::Units::convert 5torr -to torr} msg] $msg
+} {0 5torr}
+
+test convert_units-5.4.9.18 {Rappture::Units::convert, torr->psi} {
+    list [catch {Rappture::Units::convert 5torr -to psi} msg] $msg
+} {0 0.096685psi}
+
+test convert_units-5.4.9.19 {Rappture::Units::convert, torr->bar} {
+    list [catch {Rappture::Units::convert 5torr -to bar} msg] $msg
+} {0 0.00666613bar}
+
+test convert_units-5.4.9.20 {Rappture::Units::convert, psi->Pa} {
+    list [catch {Rappture::Units::convert 5psi -to Pa} msg] $msg
+} {0 34473.8Pa}
+
+test convert_units-5.4.9.21 {Rappture::Units::convert, psi->atm} {
+    list [catch {Rappture::Units::convert 5psi -to atm} msg] $msg
+} {0 0.34023atm}
+
+test convert_units-5.4.9.22 {Rappture::Units::convert, psi->torr} {
+    list [catch {Rappture::Units::convert 5psi -to torr} msg] $msg
+} {0 258.575torr}
+
+test convert_units-5.4.9.23 {Rappture::Units::convert, psi->psi} {
+    list [catch {Rappture::Units::convert 5psi -to psi} msg] $msg
+} {0 5psi}
+
+test convert_units-5.4.9.24 {Rappture::Units::convert, psi->bar} {
+    list [catch {Rappture::Units::convert 5psi -to bar} msg] $msg
+} {0 0.344738bar}
+
+test convert_units-5.4.9.25 {Rappture::Units::convert, psi->kPa} {
+    list [catch {Rappture::Units::convert 5psi -to kPa} msg] $msg
+} {0 34.4738kPa}
+
+test convert_units-5.4.9.26 {Rappture::Units::convert, kPa->psi} {
+    list [catch {Rappture::Units::convert 5kPa -to psi} msg] $msg
+} {0 0.7252psi}
+
+test convert_units-5.4.9.27 {Rappture::Units::convert, mmHg->torr} {
+    list [catch {Rappture::Units::convert 5mmHg -to torr} msg] $msg
+} {0 5torr}
+
+test convert_units-5.4.9.28 {Rappture::Units::convert, torr->mmHg} {
+    list [catch {Rappture::Units::convert 5torr -to mmHg} msg] $msg
+} {0 5mmHg}
+
+#--------------------------------------------------------------------
+# Case Insensitive/Sensitive Unit Conversions
+#--------------------------------------------------------------------
+
+test convert_units-5.4.10.1 {Rappture::Units::convert, torr->mmhg} {
+    list [catch {Rappture::Units::convert 5torr -to mmhg} msg] $msg
+} {0 5mmHg}
+
+test convert_units-5.4.10.2 {Rappture::Units::convert, ToRr->mmhg} {
+    list [catch {Rappture::Units::convert 5ToRr -to mmhg} msg] $msg
+} {0 5mmHg}
+
+test convert_units-5.4.10.3 {Rappture::Units::convert, kpa->PSI} {
+    list [catch {Rappture::Units::convert 5kpa -to PSI} msg] $msg
+} {0 0.7252psi}
+
+test convert_units-5.4.10.4 {Rappture::Units::convert, KPA->PsI} {
+    list [catch {Rappture::Units::convert 5KPA -to PsI} msg] $msg
+} {0 0.7252psi}
+
+test convert_units-5.4.10.5 {Rappture::Units::convert, Cm2/vS->M2/KVUS} {
+    list [catch {Rappture::Units::convert 2Cm2/vS -to M2/KVUS} msg] $msg
+} {0 2e-07m2/kVus}
+
+#--------------------------------------------------------------------
+# Magnetic Field Conversions
+#--------------------------------------------------------------------
+
+test convert_units-5.4.11.0 {Rappture::Units::convert, T->G} {
+    list [catch {Rappture::Units::convert 5T -to G} msg] $msg
+} {0 50000G}
+
+test convert_units-5.4.11.1 {Rappture::Units::convert, G->T} {
+    list [catch {Rappture::Units::convert 5G -to T} msg] $msg
+} {0 0.0005T}
+
+test convert_units-5.4.11.2 {Rappture::Units::convert, G->mT} {
+    list [catch {Rappture::Units::convert 50G -to mT} msg] $msg
+} {0 5mT}
+
+test convert_units-5.4.11.3 {Rappture::Units::convert, Mx->Wb} {
+    list [catch {Rappture::Units::convert 5Mx -to Wb} msg] $msg
+} {0 5e-08Wb}
+
+test convert_units-5.4.11.4 {Rappture::Units::convert, Wb->Mx} {
+    list [catch {Rappture::Units::convert 5e-8Wb -to Mx} msg] $msg
+} {0 5Mx}
+
+test convert_units-5.4.11.5 {Rappture::Units::convert, wB->mX} {
+    list [catch {Rappture::Units::convert 5e-8wB -to mX} msg] $msg
+} {0 5Mx}
+
+#--------------------------------------------------------------------
+# Rappture::Units::Search::for <units>
+#--------------------------------------------------------------------
+
+test search-for-6.0.0.1 {Rappture::Units::Search::for, 300K} {
+    list [catch {Rappture::Units::Search::for 300K} msg] $msg
+} {0 K}
+
+test search-for-6.0.0.2 {Rappture::Units::Search::for, 300cm2/Vs} {
+    list [catch {Rappture::Units::Search::for 300cm2/Vs} msg] $msg
+} {0 cm2/Vs}
+
+test search-for-6.0.0.3 {Rappture::Units::Search::for, cm2/Vs} {
+    list [catch {Rappture::Units::Search::for cm2/Vs} msg] $msg
+} {0 cm2/Vs}
+
+test search-for-6.0.1.1 {Rappture::Units::Search::for, 4notaunit} {
+    list [catch {Rappture::Units::Search::for 4notaunit} msg] $msg
+} {0 {}}
+
+test search-for-6.0.1.2 {Rappture::Units::Search::for, notaunit} {
+    list [catch {Rappture::Units::Search::for notaunit} msg] $msg
+} {0 {}}
+
+test search-for-6.0.1.3 {Rappture::Units::Search::for, notaunit} {
+    list [catch {Rappture::Units::Search::for ^&} msg] $msg
+} {0 {}}
+
+test search-for-6.0.1.4 {Rappture::Units::Search::for, notaunit} {
+    list [catch {Rappture::Units::Search::for x44} msg] $msg
+} {0 {}}
+
+test search-for-6.0.1.5 {Rappture::Units::Search::for, notaunit} {
+    list [catch {Rappture::Units::Search::for 3*44eV} msg] $msg
+} {0 {}}
+
+test search-for-6.0.2.0 {Rappture::Units::Search::for, case searches - m} {
+    set unit "m"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 m 0 length}
+
+test search-for-6.0.2.1 {Rappture::Units::Search::for, case searches - M} {
+    set unit "M"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 m 0 length}
+
+test search-for-6.0.2.2 {Rappture::Units::Search::for, case searches - mm} {
+    set unit "mm"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 mm 0 length}
+
+test search-for-6.0.2.3 {Rappture::Units::Search::for, case searches - Mm} {
+    set unit "Mm"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 Mm 0 length}
+
+test search-for-6.0.2.4 {Rappture::Units::Search::for, case searches - MM} {
+    set unit "MM"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 Mm 0 length}
+
+test search-for-6.0.2.5 {Rappture::Units::Search::for, case searches - mM} {
+    set unit "mM"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 mm 0 length}
+
+test search-for-6.0.2.6 {Rappture::Units::Search::for, case searches - ks} {
+    set unit "ks"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 ks 0 time}
+
+test search-for-6.0.2.7 {Rappture::Units::Search::for, case searches - Ks} {
+    set unit "Ks"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 ks 0 time}
+
+test search-for-6.0.2.8 {Rappture::Units::Search::for, case searches - kS} {
+    set unit "kS"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 ks 0 time}
+
+test search-for-6.0.2.9 {Rappture::Units::Search::for, case searches - KS} {
+    set unit "KS"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 ks 0 time}
+
+test search-for-6.0.2.10 {Rappture::Units::Search::for, case searches - sk} {
+    set unit "sk"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 sK 0 time*temperature}
+
+test search-for-6.0.2.11 {Rappture::Units::Search::for, case searches - sK} {
+    set unit "sK"
+    set status1 [catch {Rappture::Units::Search::for $unit} runit]
+    set status2 [catch {Rappture::Units::System::for $unit} type]
+    list $status1 $runit $status2 $type
+} {0 sK 0 time*temperature}
+
+#--------------------------------------------------------------------
+# Allow isspace whitespace in Rappture::Units
+#--------------------------------------------------------------------
+
+test space-7.0.0.1 {check for spaces before value unit string} {
+    list [catch {Rappture::Units::Search::for " 300K"} msg] $msg
+} {0 K}
+
+test space-7.0.0.2 {check for spaces after value unit string} {
+    list [catch {Rappture::Units::Search::for "300K "} msg] $msg
+} {0 K}
+
+test space-7.0.0.3 {check for spaces before and after value unit string} {
+    list [catch {Rappture::Units::Search::for " 300K "} msg] $msg
+} {0 K}
+
+test space-7.0.0.4 {check for spaces between value and unit string} {
+    list [catch {Rappture::Units::Search::for " 300 K "} msg] $msg
+} {0 K}
+
+test space-7.0.0.5 {check for spaces between value and single unit string} {
+    list [catch {Rappture::Units::Search::for "300 K"} msg] $msg
+} {0 K}
+
+test space-7.0.0.6 {check for spaces between value and multiple unit string} {
+    list [catch {Rappture::Units::Search::for "300 Kft"} msg] $msg
+} {0 Kft}
+
+test space-7.0.0.7 {check for spaces around and between value and multiple unit string} {
+    list [catch {Rappture::Units::Search::for " 300 Kft "} msg] $msg
+} {0 Kft}
+
+test space-7.0.0.8 {check for spaces between multiple unit string} {
+    list [catch {Rappture::Units::Search::for "300 K ft"} msg] $msg
+} {0 Kft}
+
+test space-7.0.0.9 {check for spaces around and between multiple unit string} {
+    list [catch {Rappture::Units::Search::for " 300 K ft "} msg] $msg
+} {0 Kft}
+
+test space-7.0.0.10 {check for spaces between multiple unit string with division} {
+    list [catch {Rappture::Units::Search::for "300 K / ft"} msg] $msg
+} {0 K/ft}
+
+test space-7.0.0.11 {check for spaces between multiple unit string with multiplication} {
+    list [catch {Rappture::Units::Search::for "300 K * ft"} msg] $msg
+} {0 Kft}
+
+test space-7.0.1.1 {check for tabs before value unit string} {
+    list [catch {Rappture::Units::Search::for "\t300K"} msg] $msg
+} {0 K}
+
+test space-7.0.1.2 {check for tabs after value unit string} {
+    list [catch {Rappture::Units::Search::for "300K\t"} msg] $msg
+} {0 K}
+
+test space-7.0.1.3 {check for tabs before and after value unit string} {
+    list [catch {Rappture::Units::Search::for "\t300K\t"} msg] $msg
+} {0 K}
+
+test space-7.0.1.4 {check for tabs between value and unit string} {
+    list [catch {Rappture::Units::Search::for "\t300\tK\t"} msg] $msg
+} {0 K}
+
+test space-7.0.1.5 {check for tabs between value and single unit string} {
+    list [catch {Rappture::Units::Search::for "300\tK"} msg] $msg
+} {0 K}
+
+test space-7.0.1.6 {check for tabs between value and multiple unit string} {
+    list [catch {Rappture::Units::Search::for "300\tKft"} msg] $msg
+} {0 Kft}
+
+test space-7.0.1.7 {check for tabs around and between value and multiple unit string} {
+    list [catch {Rappture::Units::Search::for "\t300\tKft\t"} msg] $msg
+} {0 Kft}
+
+test space-7.0.1.8 {check for tabs between multiple unit string} {
+    list [catch {Rappture::Units::Search::for "300\tK\tft"} msg] $msg
+} {0 Kft}
+
+test space-7.0.1.9 {check for tabs around and between multiple unit string} {
+    list [catch {Rappture::Units::Search::for "\t300\tK\tft\t"} msg] $msg
+} {0 Kft}
+
+test space-7.0.1.10 {check for tabs between multiple unit string with division} {
+    list [catch {Rappture::Units::Search::for "300\tK\t/\tft"} msg] $msg
+} {0 K/ft}
+
+test space-7.0.1.11 {check for tabs between multiple unit string with multiplication} {
+    list [catch {Rappture::Units::Search::for "300\tK\t*\tft"} msg] $msg
+} {0 Kft}
+
+test space-7.0.2.1 {check for newlines before value unit string} {
+    list [catch {Rappture::Units::Search::for "\n300K"} msg] $msg
+} {0 K}
+
+test space-7.0.2.2 {check for newlines after value unit string} {
+    list [catch {Rappture::Units::Search::for "300K\n"} msg] $msg
+} {0 K}
+
+test space-7.0.2.3 {check for newlines before and after value unit string} {
+    list [catch {Rappture::Units::Search::for "\n300K\n"} msg] $msg
+} {0 K}
+
+test space-7.0.2.4 {check for newlines between value and unit string} {
+    list [catch {Rappture::Units::Search::for "\n300\nK\n"} msg] $msg
+} {0 K}
+
+test space-7.0.2.5 {check for newlines between value and single unit string} {
+    list [catch {Rappture::Units::Search::for "300\nK"} msg] $msg
+} {0 K}
+
+test space-7.0.2.6 {check for newlines between value and multiple unit string} {
+    list [catch {Rappture::Units::Search::for "300\nKft"} msg] $msg
+} {0 Kft}
+
+test space-7.0.2.7 {check for newlines around and between value and multiple unit string} {
+    list [catch {Rappture::Units::Search::for "\n300\nKft\n"} msg] $msg
+} {0 Kft}
+
+test space-7.0.2.8 {check for newlines between multiple unit string} {
+    list [catch {Rappture::Units::Search::for "300\nK\nft"} msg] $msg
+} {0 Kft}
+
+test space-7.0.2.9 {check for newlines around and between multiple unit string} {
+    list [catch {Rappture::Units::Search::for "\n300\nK\nft\n"} msg] $msg
+} {0 Kft}
+
+test space-7.0.2.10 {check for newlines between multiple unit string with division} {
+    list [catch {Rappture::Units::Search::for "300\nK\n/\nft"} msg] $msg
+} {0 K/ft}
+
+test space-7.0.2.11 {check for newlines between multiple unit string with multiplication} {
+    list [catch {Rappture::Units::Search::for "300\nK\n*\nft"} msg] $msg
+} {0 Kft}
+
+# TODO:
+# add tests for space and tab, space and newline, tab and newline
+# add tests for bad characters &^%$#@!)(~`{}[]:;"'?><,.-_=+\ or |
+
+::tcltest::cleanupTests
+return
+
Index: /tags/1.6.0/lang/tcl/tests/xml.test
===================================================================
--- /tags/1.6.0/lang/tcl/tests/xml.test	(revision 6168)
+++ /tags/1.6.0/lang/tcl/tests/xml.test	(revision 6168)
@@ -0,0 +1,88 @@
+# Commands covered: Rappture::Library::xml
+#
+# This file contains a collection of tests for one of the Rappture Tcl
+# commands.  Sourcing this file into Tcl runs the tests and
+# generates output for errors.  No output means no errors were found.
+#
+# ======================================================================
+# AUTHOR:  Derrick Kearney, Purdue University
+# Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+    package require tcltest
+    package require Rappture
+    namespace import -force ::tcltest::*
+}
+
+catch {unset lib}
+
+#----------------------------------------------------------
+#----------------------------------------------------------
+# xml command
+# xml
+#----------------------------------------------------------
+test xml-1.1 {xml command, 0 args} {
+    catch {unset lib}
+    set lib [Rappture::library rplib_test.xml]
+    set xmltext [$lib xml]
+} {<run>
+    <tool>
+        <title>Graphing Calculator</title>
+        <about>Press Simulate to view results.</about>
+        <command>@tool/graph @driver</command>
+    </tool>
+    <input>
+        <string id="formula">
+            <about>
+                <label>Formula</label>
+                <hints>Example: 2*x + 1</hints>
+            </about>
+            <size>30x5</size>
+            <default>dsd234ssdf3sdf</default>
+        </string>
+        <string id="name">
+            <about>
+                <label>Name</label>
+                <hints>some text</hints>
+            </about>
+            <size>5x5</size>
+            <default>tluafed</default>
+            <current>tnerruc</current>
+        </string>
+        <number id="min">
+            <about>
+                <label>From x</label>
+            </about>
+            <default>0</default>
+            <current>1</current>
+        </number>
+        <number id="max">
+            <about>
+                <label>To x</label>
+            </about>
+            <default>2</default>
+            <current>3</current>
+        </number>
+    </input>
+    <output>
+        <curve id="result">
+            <about>
+                <label>Formula: Y vs X</label>
+            </about>
+        </curve>
+    </output>
+</run>
+}
+test xml-2.1 {xml command, 1 argument} {
+    catch {unset lib}
+    set lib [Rappture::library rplib_test.xml]
+    list [catch {$lib xml "1moreArg"} msg] $msg
+} {1 {wrong # args: should be "libraryObj1 xml"}}
+
+
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/lib/Makefile.in
===================================================================
--- /tags/1.6.0/lib/Makefile.in	(revision 6168)
+++ /tags/1.6.0/lib/Makefile.in	(revision 6168)
@@ -0,0 +1,35 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+srcdir		= @srcdir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH		= $(srcdir)
+RM		= rm -f
+
+version		= @PACKAGE_VERSION@
+
+FILES		= \
+		$(srcdir)/library.xml
+
+destdir		= $(libdir)/Rappture$(version)/lib
+
+all: 
+
+install: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	for i in $(FILES) ; do \
+	  $(INSTALL) -m 0444  $$i $(destdir) ; \
+	done
+
+clean:
+
+distclean: 
+	$(RM) Makefile *~
Index: /tags/1.6.0/lib/library.xml
===================================================================
--- /tags/1.6.0/lib/library.xml	(revision 6168)
+++ /tags/1.6.0/lib/library.xml	(revision 6168)
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<library>
+<parameters>
+  <group id="ambient">
+    <number id="temperature">
+      <label>Ambient temperature</label>
+      <units>K</units>
+      <min>0</min>
+      <max>500K</max>
+      <default>300K</default>
+      <preset>
+        <value>300K</value>
+        <label>300K (room temperature)</label>
+      </preset>
+      <preset>
+        <value>77K</value>
+        <label>77K (liquid nitrogen)</label>
+      </preset>
+      <preset>
+        <value>4.2K</value>
+        <label>4.2K (liquid helium)</label>
+      </preset>
+      <preset>
+        <value>0K</value>
+        <label>0 (absolute zero)</label>
+      </preset>
+    </number>
+  </group>
+</parameters>
+<elements>
+  <atom id="H">
+    <color>white</color>
+    <scale>0.7</scale>
+  </atom>
+  <atom id="C">
+    <color>green</color>
+    <scale>1.0</scale>
+  </atom>
+  <atom id="Ga">
+    <color>#ffccff</color>
+    <scale>1.0</scale>
+  </atom>
+  <atom id="Ge">
+    <color>#999999</color>
+    <scale>1.0</scale>
+  </atom>
+  <atom id="In">
+    <color>#ff99ff</color>
+    <scale>1.0</scale>
+  </atom>
+  <atom id="O">
+    <color>red</color>
+    <scale>1.0</scale>
+  </atom>
+  <atom id="N">
+    <color>blue</color>
+    <scale>1.0</scale>
+  </atom>
+  <atom id="S">
+    <color>yellow</color>
+    <scale>1.0</scale>
+  </atom>
+  <atom id="Si">
+    <color>#cccccc</color>
+    <scale>1.0</scale>
+  </atom>
+  <atom id="As">
+    <color>#ccffcc</color>
+    <scale>1.0</scale>
+  </atom>
+  <atom id="Au">
+    <color>#cccc00</color>
+    <scale>1.5</scale>
+  </atom>
+  <atom id="AU">
+    <color>#cccc00</color>
+    <scale>1.5</scale>
+  </atom>
+</elements>
+<materials>
+  <material id="GaAs">
+    <formula>GaAs</formula>
+    <bandgap>1.422eV</bandgap>
+    <color>#ccccff</color>
+    <electronAffinity>4.070eV</electronAffinity>
+    <dielectricConstant>12.847</dielectricConstant>
+    <NcEffDensityOfStates>0.462e18/cm3</NcEffDensityOfStates>
+    <NvEffDensityOfStates>0.942e19/cm3</NvEffDensityOfStates>
+  </material>
+  <material id="Al(0.3)Ga(0.7)As">
+    <formula>Al(0.3)Ga(0.7)As</formula>
+    <color>#9999ff</color>
+    <bandgap>1.797eV</bandgap>
+    <electronAffinity>3.827eV</electronAffinity>
+    <dielectricConstant>11.9</dielectricConstant>
+    <NcEffDensityOfStates>0.857e18/cm3</NcEffDensityOfStates>
+    <NvEffDensityOfStates>0.111e20/cm3</NvEffDensityOfStates>
+  </material>
+  <material id="Au">
+    <formula>Au</formula>
+    <color>#ffff66</color>
+  </material>
+</materials>
+</library>
Index: /tags/1.6.0/license.terms
===================================================================
--- /tags/1.6.0/license.terms	(revision 6168)
+++ /tags/1.6.0/license.terms	(revision 6168)
@@ -0,0 +1,37 @@
+
+Copyright (c) 2004-2012  HUBzero Foundation, LLC
+All rights reserved.
+
+Developed by:  Network for Computational Nanotechnology
+               Purdue University, West Lafayette, Indiana
+               http://www.rappture.org
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal with 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:
+
+    * Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimers
+        in the documentation and/or other materials provided with the
+        distribution.
+
+    * Neither the names of the Network for Computational Nanotechnology,
+        Purdue University, nor the names of its contributors may be used
+        to endorse or promote products derived from this Software without
+        specific prior written permission. 
+
+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 CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
+
Index: /tags/1.6.0/missing
===================================================================
--- /tags/1.6.0/missing	(revision 6168)
+++ /tags/1.6.0/missing	(revision 6168)
@@ -0,0 +1,198 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+# Copyright (C) 1996, 1997, 2001, 2002 Free Software Foundation, Inc.
+# Franc,ois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# 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.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.in; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+case "$1" in
+
+  -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
+
+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
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing - GNU libit 0.0"
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  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 missing on your system.  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 missing on your system.  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 missing on your system.  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
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  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 missing on your system.  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
+    ;;
+
+  makeinfo)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  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."
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+    fi
+    touch $file
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  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 prerequirements 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
Index: /tags/1.6.0/oldtest/Makefile.in
===================================================================
--- /tags/1.6.0/oldtest/Makefile.in	(revision 6168)
+++ /tags/1.6.0/oldtest/Makefile.in	(revision 6168)
@@ -0,0 +1,43 @@
+# you need to change this to where your version of python is installed.
+# tell make where to find python header files
+RP_INSTALL_BASE = @prefix@
+
+# define the top of the rappture directory structure
+RP_BASE         = @RP_BASE@
+
+
+CC              = @CC@
+CXX             = @CXX@
+DEBUG           = -g -Wall
+DEBUG_PLUS      = -g -DDEBUG
+
+LN              = @LN@
+
+# define our directories
+#
+INCLUDES_DIR    = $(RP_BASE)/src
+BIN_DIR         = $(RP_BASE)/bin
+LIB_DIR         = $(RP_INSTALL_BASE)/lib # $(RP_BASE)/src
+SRC_DIR         = $(RP_BASE)/src
+TEST_DIR        = $(RP_BASE)/test
+
+LIB_RAPPTURE    = -Wl,-rpath,$(LIB_DIR) -L$(LIB_DIR) -lrappture
+
+INCL_CORE       = -I $(INCLUDES_DIR)/core
+INCL_CEE        = -I $(INCLUDES_DIR)/cee
+INCL_FORTRAN    = -I $(INCLUDES_DIR)/fortran
+
+
+.PHONY: all clean distclean src jobs
+
+all: src jobs
+
+src:
+	$(MAKE) -C src all
+jobs:
+	$(MAKE) -C jobs all
+
+clean: 
+
+distclean: clean
+	$(RM) Makefile
Index: /tags/1.6.0/oldtest/buggy_xmls/disabledtabs/readme
===================================================================
--- /tags/1.6.0/oldtest/buggy_xmls/disabledtabs/readme	(revision 6168)
+++ /tags/1.6.0/oldtest/buggy_xmls/disabledtabs/readme	(revision 6168)
@@ -0,0 +1,21 @@
+This is an example from Satoshi Ishii working on PhotonicsDB. He was trying
+to setup tabs in the gui by using groups of groups. He wanted the first and
+last tab to always be enabled. The tabs in between the first and last
+contained enable tests.
+
+Rappture was able to successfully create the tabs, but the last tab always
+contained data from the first disabled tab. The cause of this problem is that
+gui/scripts/control.tcl, which is in charge of setting up the tabs, gets an
+index of which tab was selected and uses this index to access the name and
+value of the tab to be shown. The index is used in a list which contains all
+possible tabs, not a list that contains only the enabled tabs. The result is
+that when we have a list containing five total tabs numbered 1-5, and tabs
+1,2, and 5 are enabled, an index of 3 would choose a disabled tab to show.
+
+This problem was solved by adding an additional private variable to the
+controls object that keeps track of which tabs are enabled and shown. We now
+index into the _showing list instead of the _controls list. In the example
+above the _showing list would contain tabs 1, 2 and 5. When the last tab was
+chosen in the graphical user interface, _changeTabs function would receive
+an index of 3 referencing tab 5 and the correct tab would be displayed to the
+user.
Index: /tags/1.6.0/oldtest/buggy_xmls/disabledtabs/tool.xml
===================================================================
--- /tags/1.6.0/oldtest/buggy_xmls/disabledtabs/tool.xml	(revision 6168)
+++ /tags/1.6.0/oldtest/buggy_xmls/disabledtabs/tool.xml	(revision 6168)
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+    <layout>wizard</layout>
+</tool>
+<input>
+    <integer id="layers">
+        <default>1</default>
+    </integer>
+    <group id="tabs">
+        <group id="front">
+            <about>
+                <label>FRONT</label>
+            </about>
+            <loader>
+                <about>
+                    <label>Front</label>
+                    <description>Specify the material.</description>
+                </about>
+            </loader>
+        </group>
+        <group id="layer1">
+            <about>
+                <label>Layer 1</label>
+            </about>
+            <loader>
+                <about>
+                    <label>Layer 1</label>
+                    <description>Specify the material.</description>
+                </about>
+            </loader>
+        </group>
+        <group id="layer2">
+            <about>
+                <label>Layer 2</label>
+                <enable>input.integer(layers) &gt;=2 </enable>
+            </about>
+            <loader>
+                <about>
+                    <label>Layer 2</label>
+                    <description>Specify the material.</description>
+                    <!-- <enable>input.integer(layers) &gt;=2 </enable> -->
+                </about>
+            </loader>
+        </group>
+        <group id="layer3">
+            <about>
+                <label>Layer 3</label>
+                <enable>input.integer(layers) &gt;=3 </enable>
+            </about>
+            <loader>
+                <about>
+                    <label>Layer 3</label>
+                    <description>Specify the material.</description>
+                    <enable>input.integer(layers) &gt;=3 </enable>
+                </about>
+            </loader>
+        </group>
+        <group id="back">
+            <about>
+                <label>BACK</label>
+                <enable>input.integer(layers) &gt;=0 </enable>
+            </about>
+            <loader>
+                <about>
+                    <label>Back</label>
+                    <description>Specify the material.</description>
+                </about>
+            </loader>
+        </group>
+    </group>
+</input>
+</run>
Index: /tags/1.6.0/oldtest/jobs/coredumps/coredump.tcl
===================================================================
--- /tags/1.6.0/oldtest/jobs/coredumps/coredump.tcl	(revision 6168)
+++ /tags/1.6.0/oldtest/jobs/coredumps/coredump.tcl	(revision 6168)
@@ -0,0 +1,35 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture core dumps
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set type [$driver get input.(jobtype).current]
+set sig [$driver get input.(signal).current]
+
+proc killjob {signal} {
+    set jobs [exec ps uxaw | grep -v grep | grep =[pid]]
+    exec kill -s $signal [lindex $jobs 1]
+}
+
+if {$type == "fail"} {
+    after [expr {int(rand()*5000)}] "killjob $sig"
+}
+
+if {[catch {Rappture::exec tclsh genoutput.tcl =[pid]} result]} {
+    puts $result
+    exit 1
+}
+
+$driver put output.log "Job succeeded:\n$result"
+
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/oldtest/jobs/coredumps/genoutput.tcl
===================================================================
--- /tags/1.6.0/oldtest/jobs/coredumps/genoutput.tcl	(revision 6168)
+++ /tags/1.6.0/oldtest/jobs/coredumps/genoutput.tcl	(revision 6168)
@@ -0,0 +1,16 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Rappture core dumps
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+# spit out a bunch of junk until we get killed
+set n 10
+while {[incr n -1] > 0} {
+    puts [exec fortune]
+    after [expr {int(rand()*rand()*3000)}]
+}
Index: /tags/1.6.0/oldtest/jobs/coredumps/tool.xml
===================================================================
--- /tags/1.6.0/oldtest/jobs/coredumps/tool.xml	(revision 6168)
+++ /tags/1.6.0/oldtest/jobs/coredumps/tool.xml	(revision 6168)
@@ -0,0 +1,114 @@
+<?xml version="1.0"?>
+<run>
+<tool>
+  <title>coredumps</title>
+  <about>Tests what happens when a tool dumps core or gets some other exceptional signal.  Should return an understandable error.
+  </about>
+  <command>
+    tclsh @tool/coredump.tcl @driver
+  </command>
+</tool>
+<input>
+  <choice id="jobtype">
+    <about>
+      <label>Job will</label>
+      <description>Determines whether the job will succeed or fail.</description>
+    </about>
+    <option>
+      <about><label>Succeed</label></about>
+      <value>succeed</value>
+    </option>
+    <option>
+      <about><label>Fail</label></about>
+      <value>fail</value>
+    </option>
+    <default>fail</default>
+  </choice>
+
+  <choice id="signal">
+    <about>
+      <label>Send signal</label>
+      <description>If the job should fail, this determines the signal that we'll send to terminate the job.</description>
+      <enable>input.(jobtype) == "fail"</enable>
+    </about>
+    <option>
+      <about>
+       <label>SIGHUP</label>
+       <description>Hangup detected on controlling terminal</description>
+      </about>
+      <value>1</value>
+    </option>
+    <option>
+      <about>
+       <label>SIGINT</label>
+       <description>Interrupt from keyboard</description>
+      </about>
+      <value>2</value>
+    </option>
+    <option>
+      <about>
+       <label>SIGQUIT</label>
+       <description>Quit from keyboard</description>
+      </about>
+      <value>3</value>
+    </option>
+    <option>
+      <about>
+       <label>SIGILL</label>
+       <description>Illegal Instruction</description>
+      </about>
+      <value>4</value>
+    </option>
+    <option>
+      <about>
+       <label>SIGABRT</label>
+       <description>Abort signal from abort()</description>
+      </about>
+      <value>6</value>
+    </option>
+    <option>
+      <about>
+       <label>SIGFPE</label>
+       <description>Floating point exception</description>
+      </about>
+      <value>8</value>
+    </option>
+    <option>
+      <about>
+       <label>SIGKILL</label>
+       <description>Kill signal</description>
+      </about>
+      <value>9</value>
+    </option>
+    <option>
+      <about>
+       <label>SIGSEGV</label>
+       <description>Invalid memory reference</description>
+      </about>
+      <value>11</value>
+    </option>
+    <option>
+      <about>
+       <label>SIGPIPE</label>
+       <description>Broken pipe: write to pipe with no readers</description>
+      </about>
+      <value>13</value>
+    </option>
+    <option>
+      <about>
+       <label>SIGALRM</label>
+       <description>Timer signal from alarm()</description>
+      </about>
+      <value>14</value>
+    </option>
+    <option>
+      <about>
+       <label>SIGTERM</label>
+       <description>Termination signal</description>
+      </about>
+      <value>15</value>
+    </option>
+    <default>11</default>
+  </choice>
+</input>
+</run>
Index: /tags/1.6.0/oldtest/rplib_test.xml
===================================================================
--- /tags/1.6.0/oldtest/rplib_test.xml	(revision 6168)
+++ /tags/1.6.0/oldtest/rplib_test.xml	(revision 6168)
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <title>Graphing Calculator</title>
+        <about>Press Simulate to view results.</about>
+        <command> @tool/graph @driver</command>
+    </tool>
+    <input>
+        <string id="formula">
+            <about>
+                <label>Formula</label>
+                <hints>Example: 2*x + 1</hints>
+            </about>
+            <size>30x5</size>
+        </string>
+        <number id="min">
+            <about> <label>From x</label> </about>
+            <default>0</default>
+            <current>1</current>
+        </number>
+        <number id="max">
+            <about> <label>To x</label> </about>
+            <default>2</default>
+            <current>3</current>
+        </number>
+    </input>
+    <output>
+        <curve id="result">
+            <about> <label>Formula: Y vs X</label> </about>
+        </curve>
+    </output>
+</run>
+
Index: /tags/1.6.0/oldtest/src/Makefile.in
===================================================================
--- /tags/1.6.0/oldtest/src/Makefile.in	(revision 6168)
+++ /tags/1.6.0/oldtest/src/Makefile.in	(revision 6168)
@@ -0,0 +1,176 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+INSTALL		= @INSTALL@
+INSTALL_PROGRAM	= ${INSTALL} -m 755
+INSTALL_DATA	= ${INSTALL} -m 644
+INSTALL_SCRIPT	= ${INSTALL}
+
+CXX             = @CXX@
+CC              = @CC@
+FC		= @F77@
+OCT		= @MKOCT@
+MEX		= @MEX@
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD        = @STLIB_LD@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+CFLAGS          = @CFLAGS@
+
+INCLUDES	= -I$(srcdir) \
+		  -I$(includedir)
+
+RANLIB 		= @RANLIB@
+AR 		= ar
+VPATH		= $(srcdir)
+RM		= rm -f
+
+# define the top of the rappture directory structure
+RP_BASE   = @RP_BASE@
+
+# you need to change this to where your version of python is installed.
+# tell make where to find python header files
+RP_INSTALL_BASE = @prefix@
+
+# define the top of the rappture directory structure
+RP_BASE         = @RP_BASE@
+
+
+CC              = @CC@
+CXX             = @CXX@
+DEBUG           = -g -Wall
+DEBUG_PLUS      = -g -DDEBUG
+
+LN              = @LN@
+
+# define our directories
+#
+INCLUDES_DIR    = $(RP_BASE)/src
+BIN_DIR         = $(RP_BASE)/bin
+LIB_DIR         = $(RP_INSTALL_BASE)/lib # $(RP_BASE)/src
+SRC_DIR         = $(RP_BASE)/src
+TEST_DIR        = $(RP_BASE)/test
+
+LIB_RAPPTURE    = -Wl,--rpath,$(LIB_DIR) -L$(LIB_DIR) -lrappture
+
+INCL_CORE       = -I $(INCLUDES_DIR)/core
+INCL_CEE        = -I $(INCLUDES_DIR)/cee
+INCL_FORTRAN    = -I $(INCLUDES_DIR)/fortran
+INCLUDES	= \
+		-I../../src/core \
+		-I$(includedir)
+RUN_PATH	= $(PWD)/../../src/core:$(PWD)/../../src/objects
+LIBS 		= \
+		../../src/core/librappture.a  \
+		../../src/objects/libRpObjects.a \
+
+CC_FLAGS	= $(CFLAGS) $(INCLUDES)
+FC_FLAGS	= $(CFLAGS) $(INCLUDES)
+
+.PHONY: all clean distclean src jobs c_tests fortran_tests matlab_tests objs_tests octave_tests
+
+MATLAB_TESTS    = RpMatlab_test
+OCTAVE_TESTS	= RpOctave_test  
+
+FORTRAN_TESTS 	 = \
+		RpLibraryF_test \
+		RpUnitsF_test  \
+		RpFortranDocExamples
+
+OBJS_TESTS	 = \
+		RpBoolean_test  \
+		RpChoice_test \
+		RpLibrary_test \
+		RpNumber_test \
+		RpString_test \
+		RpUnits_test \
+		RpVariable_test 
+
+CC_TESTS 	 = \
+		RpLibraryC_test \
+		RpUnitsC_test 
+F77_TESTS 	 = \
+		RpLibraryF_test.f \
+		RpUnitsF_test.f 
+
+all: src jobs
+
+
+c_tests: $(CC_TESTS)
+fortran_tests: $(FORTRAN_TESTS)
+matlab_tests: $(MATLAB_TESTS)
+objs_tests: $(OBJS_TESTS)
+octave_tests: $(MATLAB_TESTS)
+
+
+RpOctave_test: RpOctave_test.m
+	$(OCT) $(OCT_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+
+RpMatlab_test: RpMatlab_test.m
+	$(MEX) $(MEX_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+
+RpLibraryF_test: RpLibraryF_test.f
+	$(FC) $(FC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+RpUnitsF_test: RpUnitsF_test.f
+	$(FC) $(FC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+RpFortranDocExamples: RpFortranDocExamples.f
+	$(FC) $(FC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+
+RpLibraryC_test: RpLibraryC_test.c  
+	$(CC) $(CC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+RpUnitsC_test: RpUnitsC_test.c  
+	$(CC) $(CC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+
+RpBoolean_test: RpBoolean_test.cc  
+	$(CXX) $(CC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+RpChoice_test: RpChoice_test.cc  
+	$(CXX) $(CC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+RpLibrary_test: RpLibrary_test.cc  
+	$(CXX) $(CC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+RpNumber_test: RpNumber_test.cc  
+	$(CXX) $(CC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+RpString_test: RpString_test.cc  
+	$(CXX) $(CC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+RpUnits_test: RpUnits_test.cc  
+	$(CXX) $(CC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+RpVariable_test: RpVariable_test.cc  
+	$(CXX) $(CC_FLAGS) $< -o $@ $(LIBS)
+	./$@ ../rplib_test.xml > /dev/null
+
+src:
+	$(MAKE) -C src all
+jobs:
+	$(MAKE) -C jobs all
+
+clean: 
+	$(RM) $(OCT_TESTS) $(MATLAB_TESTS) $(CC_TESTS) $(FORTRAN_TESTS) \
+		$(OBJS_TESTS)
+
+distclean: clean
+	$(RM) Makefile
Index: /tags/1.6.0/oldtest/src/RpBoolean_test.cc
===================================================================
--- /tags/1.6.0/oldtest/src/RpBoolean_test.cc	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpBoolean_test.cc	(revision 6168)
@@ -0,0 +1,94 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpBoolean.h"
+
+int test_setPath(RpBoolean* myBoolean);
+int test_setDefaultValue(RpBoolean* myBoolean);
+int test_setCurrentValue(RpBoolean* myBoolean);
+int test_setLabel(RpBoolean* myBoolean);
+int test_setDesc(RpBoolean* myBoolean);
+
+int test_setPath(RpBoolean* myBoolean)
+{
+    std::cout << "Path " << myBoolean->getPath() << std::endl;
+    myBoolean->setPath("input.(ambiant)");
+    std::cout << "Path " << myBoolean->getPath() << std::endl;
+
+    return 1;
+}
+
+
+int test_setDefaultValue(RpBoolean* myBoolean)
+{
+    std::cout << "defaultVal " << myBoolean->getDefaultValue() << std::endl;
+    myBoolean->setDefaultValue("new default value");
+    std::cout << "defaultVal " << myBoolean->getDefaultValue() << std::endl;
+
+    return 1;
+}
+
+int test_setCurrentValue(RpBoolean* myBoolean)
+{
+    std::cout << "currentVal " << myBoolean->getCurrentValue() << std::endl;
+    myBoolean->setCurrentValue("new current value");
+    std::cout << "currentVal " << myBoolean->getCurrentValue() << std::endl;
+
+    return 1;
+}
+
+int test_setLabel(RpBoolean* myBoolean)
+{
+    std::cout << "label " << myBoolean->getLabel() << std::endl;
+    myBoolean->setLabel("newLabel");
+    std::cout << "label " << myBoolean->getLabel() << std::endl;
+
+    return 1;
+}
+
+int test_setDesc(RpBoolean* myBoolean)
+{
+    std::cout << "desc " << myBoolean->getDesc() << std::endl;
+    myBoolean->setDesc("new description");
+    std::cout << "desc " << myBoolean->getDesc() << std::endl;
+
+    return 1;
+}
+
+int main ()
+{
+
+    RpBoolean* T1 = new RpBoolean("input.(ambient).(temperature)","default-string");
+    RpBoolean* T2 = new RpBoolean("input.(ambient).(temperature)",
+                                "default-string",
+                                "boolean2's label",
+                                "boolean2's desc"
+                                );
+    
+
+    std::cout << "T1 run" << std::endl;
+    test_setPath(T1);
+    test_setDefaultValue(T1);
+    test_setCurrentValue(T1);
+    test_setLabel(T1);
+    test_setDesc(T1);
+
+    std::cout << std::endl;
+
+    std::cout << "T2 run" << std::endl;
+    test_setPath(T2);
+    test_setDefaultValue(T2);
+    test_setCurrentValue(T2);
+    test_setLabel(T2);
+    test_setDesc(T2);
+
+    std::cout << std::endl;
+    std::cout << std::endl;
+
+    return 0;
+}
Index: /tags/1.6.0/oldtest/src/RpChoice_test.cc
===================================================================
--- /tags/1.6.0/oldtest/src/RpChoice_test.cc	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpChoice_test.cc	(revision 6168)
@@ -0,0 +1,108 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpChoice.h"
+
+int test_setPath(RpChoice* myChoice);
+int test_setDefaultValue(RpChoice* myChoice);
+int test_setCurrentValue(RpChoice* myChoice);
+int test_setOption(RpChoice* myChoice);
+int test_deleteOption(RpChoice* myChoice);
+
+int test_setPath(RpChoice* myChoice)
+{
+    std::cout << "Path " << myChoice->getPath() << std::endl;
+    myChoice->setPath("input.(ambiant)");
+    std::cout << "Path " << myChoice->getPath() << std::endl;
+
+    return 1;
+}
+
+int test_setDefaultValue(RpChoice* myChoice)
+{
+    std::cout << "defaultVal " << myChoice->getDefaultValue() << std::endl;
+    myChoice->setDefaultValue("new default value");
+    std::cout << "defaultVal " << myChoice->getDefaultValue() << std::endl;
+
+    return 1;
+}
+
+int test_setCurrentValue(RpChoice* myChoice)
+{
+    std::cout << "currentVal " << myChoice->getCurrentValue() << std::endl;
+    myChoice->setCurrentValue("new current value");
+    std::cout << "currentVal " << myChoice->getCurrentValue() << std::endl;
+
+    return 1;
+}
+
+int test_setOption(RpChoice* myChoice)
+{
+    unsigned int optListSize = myChoice->getOptListSize();
+    myChoice->setOption("newOpt");
+    std::string tmpOpt= myChoice->getFirstOption();
+    std::string optList;
+
+    std::cout << "begin setOption optListSize = " << optListSize << std::endl;
+
+    while (tmpOpt != "") {
+        optList += tmpOpt + " ";
+        tmpOpt= myChoice->getNextOption();
+    }
+
+    std::cout << "setOption List = " << optList << std::endl;
+    std::cout << "end setOption optListSize = " << myChoice->getOptListSize() << std::endl;
+
+    return 1;
+}
+
+int test_deleteOption(RpChoice* myChoice)
+{
+    std::string tmpOpt= myChoice->getFirstOption();
+
+    std::cout << "begin deleteOption optListSize = " << myChoice->getOptListSize() << std::endl;
+    myChoice->deleteOption("newOpt");
+    std::cout << "end deleteOption optListSize = " << myChoice->getOptListSize() << std::endl;
+
+    return 1;
+}
+
+int main ()
+{
+
+    RpChoice* T1 = new RpChoice("input.(ambient).(temperature)",
+                                "default-string",
+                                "opt1,opt2,opt3");
+    RpChoice* T2 = new RpChoice("input.(ambient).(temperature)",
+                                "default-string",
+                                "string3's label",
+                                "string3's desc",
+                                "opt4,opt5,opt6");
+    
+
+    std::cout << "T1 run" << std::endl;
+    test_setPath(T1);
+    test_setDefaultValue(T1);
+    test_setCurrentValue(T1);
+    test_setOption(T1);
+    test_deleteOption(T1);
+
+    std::cout << std::endl;
+
+    std::cout << "T2 run" << std::endl;
+    test_setPath(T2);
+    test_setDefaultValue(T2);
+    test_setCurrentValue(T2);
+    test_setOption(T2);
+    test_deleteOption(T2);
+
+    std::cout << std::endl;
+    std::cout << std::endl;
+
+    return 0;
+}
Index: /tags/1.6.0/oldtest/src/RpFortranDocExamples.f
===================================================================
--- /tags/1.6.0/oldtest/src/RpFortranDocExamples.f	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpFortranDocExamples.f	(revision 6168)
@@ -0,0 +1,401 @@
+c ----------------------------------------------------------------------
+c  TEST: Fortran Documentation Examples.
+c
+c  Simple tests of Rappture's Fortran API found on our website
+c https://developer.nanohub.org/projects/rappture/wiki/rappture_fortran_api
+c
+c ======================================================================
+c  AUTHOR:  Derrick S. Kearney, Purdue University
+c  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+c
+c  See the file "license.terms" for information on usage and
+c  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+c ======================================================================
+      SUBROUTINE  test_rp_lib(filename)
+
+        integer handle, rp_lib
+        character*100 filename
+        handle = rp_lib(filename)
+        print *,handle
+
+      END SUBROUTINE  test_rp_lib
+
+      SUBROUTINE  test_rp_lib_element_comp(filename)
+
+        character*100 filename
+        character*100 path,retText
+        integer libHandle, rp_lib
+
+        libHandle = rp_lib(filename)
+
+        path = "input.number(temperature)"
+        call rp_lib_element_comp(libHandle,path,retText)
+
+        print *,retText
+
+      END SUBROUTINE  test_rp_lib_element_comp
+
+      SUBROUTINE  test_rp_lib_element_id(filename)
+
+        character*100 filename
+        character*100 path,retText
+        integer libHandle, rp_lib
+
+        libHandle = rp_lib(filename)
+
+        path = "input.number(temperature)"
+        call rp_lib_element_id(libHandle,path,retText)
+
+        print *,retText
+
+      END SUBROUTINE  test_rp_lib_element_id
+
+      SUBROUTINE  test_rp_lib_element_type(filename)
+
+        character*100 filename
+        character*100 path,retText
+        integer libHandle, rp_lib
+
+        libHandle = rp_lib(filename)
+
+        path = "input.number(temperature)"
+        call rp_lib_element_type(libHandle,path,retText)
+
+        print *,retText
+
+      END SUBROUTINE  test_rp_lib_element_type
+
+      SUBROUTINE  test_rp_lib_element_obj(filename)
+
+        character*100 filename
+        character*100 path
+        integer libHandle, rp_lib, rp_lib_element_obj, newHandle
+
+        libHandle = rp_lib(filename)
+
+        path = "input.number(temperature)"
+        newHandle =  rp_lib_element_obj(libHandle,path)
+
+        print *,newHandle
+
+      END SUBROUTINE  test_rp_lib_element_obj
+
+      SUBROUTINE  test_rp_lib_children(filename)
+
+        character*100 filename
+        character*100 retText
+        integer rp_lib_children, childHandle, prevChildHandle
+        integer libHandle, rp_lib
+
+        libHandle = rp_lib(filename)
+
+        prevChildHandle = 0
+        childHandle = -1
+
+ 10     continue
+            childHandle =
+     +               rp_lib_children(libHandle,"input",prevChildHandle)
+            if (childHandle .gt. 0) then
+                call rp_lib_node_comp(childHandle,retText)
+                print *,"component name: ",retText
+           endif
+            prevChildHandle = childHandle
+        if (childHandle .gt. 0) goto 10
+
+      END SUBROUTINE  test_rp_lib_children
+
+      SUBROUTINE  test_rp_lib_get(filename)
+        character*100 filename
+        character*100 path,retText
+        integer libHandle, rp_lib
+
+        libHandle = rp_lib(filename)
+
+        path = "input.number(temperature).current"
+        call rp_lib_get(libHandle,path,retText)
+
+        print *,retText
+
+      END SUBROUTINE  test_rp_lib_get
+
+      SUBROUTINE  test_rp_lib_put_str(filename)
+        character*100 filename
+        character*500 path,retText
+        integer libHandle, rp_lib
+
+        libHandle = rp_lib(filename)
+
+        path = "input.number(temperature).min"
+        call rp_lib_put_str(libHandle,path,"10",0)
+
+        call rp_lib_xml(libHandle,retText)
+        print *,retText
+
+      END SUBROUTINE  test_rp_lib_put_str
+
+      SUBROUTINE  test_rp_lib_node_comp(filename)
+        character*100 filename
+        character*100 retText,path
+        integer rp_lib_element_obj, newHandle
+        integer libHandle, rp_lib
+
+        libHandle = rp_lib(filename)
+
+        path = "input.number(temperature)"
+        newHandle = rp_lib_element_obj(libHandle,path)
+        call rp_lib_node_comp(newHandle,retText)
+
+        print *,retText
+
+      END SUBROUTINE  test_rp_lib_node_comp
+
+      SUBROUTINE  test_rp_lib_node_type(filename)
+        character*100 filename
+        character*100 retText,path
+        integer rp_lib_element_obj, newHandle
+        integer libHandle, rp_lib
+
+        libHandle = rp_lib(filename)
+
+        path = "input.number(temperature)"
+        newHandle = rp_lib_element_obj(libHandle,path)
+        call rp_lib_node_type(newHandle,retText)
+
+        print *,retText
+
+      END SUBROUTINE  test_rp_lib_node_type
+
+      SUBROUTINE  test_rp_lib_node_id(filename)
+        character*100 filename
+        character*100 retText,path
+        integer rp_lib_element_obj, newHandle
+        integer libHandle, rp_lib
+
+        libHandle = rp_lib(filename)
+
+        path = "input.number(temperature)"
+        newHandle = rp_lib_element_obj(libHandle,path)
+        call rp_lib_node_id(newHandle,retText)
+
+        print *,retText
+
+      END SUBROUTINE  test_rp_lib_node_id
+
+      SUBROUTINE  test_rp_lib_xml(filename)
+        character*100 filename
+        character*500 retText
+        integer libHandle, rp_lib
+
+        libHandle = rp_lib(filename)
+
+        call rp_lib_xml(libHandle,retText)
+        print *,retText
+
+      END SUBROUTINE  test_rp_lib_xml
+
+      SUBROUTINE  test_rp_result(filename)
+        character*100 filename
+        integer libHandle, rp_lib
+
+        libHandle = rp_lib(filename)
+        call rp_result(libHandle)
+
+      END SUBROUTINE  test_rp_result
+
+      SUBROUTINE  test_rp_define_unit()
+
+        integer unitHandle, rp_define_unit
+        unitHandle = rp_define_unit('oir',0)
+        unitHandle = rp_define_unit('oi4',0)
+        print *,"unitHandle = ",unitHandle
+
+      END SUBROUTINE  test_rp_define_unit
+
+      SUBROUTINE  test_rp_find()
+
+        integer unitHandle, rp_find
+        unitHandle = rp_find('oir')
+        print *,"unitHandle = ",unitHandle
+
+      END SUBROUTINE  test_rp_find
+
+      SUBROUTINE  test_rp_make_metric()
+
+        integer unitHandle, rp_find, rp_make_metric, ok
+        unitHandle = rp_find('oir')
+        if (unitHandle .gt. 0) then
+            ok = rp_make_metric(unitHandle)
+            unitHandle = rp_find('coir')
+            print *,"unitHandle = ",unitHandle
+        else
+            print *,"rp_make_metric FAILED!!!"
+        endif
+      END SUBROUTINE  test_rp_make_metric
+
+      SUBROUTINE  test_rp_get_units()
+        integer unitHandle, rp_find, rp_get_units, ok
+        character*100 unitsName
+        unitHandle = rp_find('oir')
+        if (unitHandle .gt. 0) then
+            ok = rp_get_units(unitHandle,unitsName)
+            print *,"units = ",unitsName
+        else
+            print *,"rp_get_units FAILED!!!"
+        endif
+      END SUBROUTINE  test_rp_get_units
+
+      SUBROUTINE  test_rp_get_units_name()
+        integer unitHandle, rp_find, rp_get_units_name, ok
+        character*100 unitsName
+        unitHandle = rp_find('oir')
+        if (unitHandle .gt. 0) then
+            ok = rp_get_units_name(unitHandle,unitsName)
+            print *,"units = ",unitsName
+        else
+            print *,"rp_get_units_name FAILED!!!"
+        endif
+      END SUBROUTINE  test_rp_get_units_name
+
+      SUBROUTINE  test_rp_get_exponent()
+        integer unitHandle, rp_find, ok
+        double precision expon
+        unitHandle = rp_find('oi4')
+        if (unitHandle .gt. 0) then
+            ok = rp_get_exponent(unitHandle,expon)
+            print *,"exponent = ",expon
+        else
+            print *,"rp_get_exponent FAILED!!!"
+        endif
+      END SUBROUTINE  test_rp_get_exponent
+
+      SUBROUTINE  test_rp_get_basis()
+        integer unitHandle, basisHandle
+        integer rp_get_units_name, rp_get_basis,rp_find
+        character*100 unitName, basisName
+        unitHandle = rp_find('oi4')
+        if (unitHandle .gt. 0) then
+            basisHandle = rp_get_basis(unitHandle)
+            ok = rp_get_units_name(unitHandle,unitName)
+            ok = rp_get_units_name(basisHandle,basisName)
+            if (basisHandle .gt. 0) then
+                print *,unitName,"'s basisName = ",basisName
+            else
+                print *,unitName," has no basis"
+            endif
+        else
+            print *,"rp_get_basis FAILED!!!"
+        endif
+
+        unitHandle = rp_find('nm')
+        if (unitHandle .gt. 0) then
+            basisHandle = rp_get_basis(unitHandle)
+            ok = rp_get_units_name(unitHandle,unitName)
+            ok = rp_get_units_name(basisHandle,basisName)
+            if (basisHandle .gt. 0) then
+                print *,unitName,"'s basisName = ",basisName
+            else
+                print *,unitName," has no basis"
+            endif
+        else
+            print *,"rp_get_basis FAILED!!!"
+        endif
+      END SUBROUTINE  test_rp_get_basis
+
+      SUBROUTINE  test_rp_units_convert_dbl()
+        integer rp_units_convert_dbl, ok
+        double precision dblRslt
+        ok = rp_units_convert_dbl("72F","C",dblRslt)
+
+        if (ok .eq. 0) then
+            print *, "72F = ",dblRslt,"C"
+        else
+            print *,"rp_units_convert_dbl FAILED!!!"
+        endif
+      END SUBROUTINE  test_rp_units_convert_dbl
+
+      SUBROUTINE  test_rp_units_convert_str()
+        integer rp_units_convert_str, ok
+        character*100 strRslt
+        ok = rp_units_convert_str("72F","C",strRslt)
+
+        if (ok .eq. 0) then
+            print *, "72F = ",strRslt
+        else
+            print *,"rp_units_convert_str FAILED!!!"
+        endif
+      END SUBROUTINE  test_rp_units_convert_str
+
+      program rplib_f_tests
+        IMPLICIT NONE
+
+        CHARACTER*100 inFile
+
+        call getarg(1,inFile)
+
+        print *,"TESTING LIB"
+        call test_rp_lib(inFile)
+
+        print *,"TESTING ELEMENT COMP"
+        call test_rp_lib_element_comp(inFile)
+
+        print *,"TESTING ELEMENT ID"
+        call test_rp_lib_element_id(inFile)
+
+        print *,"TESTING ELEMENT TYPE"
+        call test_rp_lib_element_type(inFile)
+
+        print *,"TESTING ELEMENT OBJ"
+        call test_rp_lib_element_obj(inFile)
+
+        print *,"TESTING CHILDREN"
+        call test_rp_lib_children(inFile)
+
+        print *,"TESTING GET"
+        call test_rp_lib_get(inFile)
+
+        print *,"TESTING PUT STR"
+        call test_rp_lib_put_str(inFile)
+
+        print *,"TESTING NODE COMP"
+        call test_rp_lib_node_comp(inFile)
+
+        print *,"TESTING NODE TYPE"
+        call test_rp_lib_node_type(inFile)
+
+        print *,"TESTING NODE ID"
+        call test_rp_lib_node_id(inFile)
+
+        print *,"TESTING XML"
+        call test_rp_lib_xml(inFile)
+
+        print *,"TESTING RESULT"
+        call test_rp_result(inFile)
+
+        print *,"TESTING UNITS DEFINE UNIT"
+        call test_rp_define_unit()
+
+        print *,"TESTING UNITS FIND"
+        call test_rp_find()
+
+        print *,"TESTING UNITS MAKE METRIC"
+        call test_rp_make_metric()
+
+        print *,"TESTING UNITS GET UNITS"
+        call test_rp_get_units()
+
+        print *,"TESTING UNITS GET UNITS NAME"
+        call test_rp_get_units_name()
+
+        print *,"TESTING UNITS GET EXPONENT"
+        call test_rp_get_exponent()
+
+        print *,"TESTING UNITS GET BASIS"
+        call test_rp_get_basis()
+
+        print *,"TESTING UNITS CONVERT DOUBLE"
+        call test_rp_units_convert_dbl()
+
+        print *,"TESTING UNITS CONVERT STRING"
+        call test_rp_units_convert_str()
+
+      end program rplib_f_tests
Index: /tags/1.6.0/oldtest/src/RpLibraryC_test.c
===================================================================
--- /tags/1.6.0/oldtest/src/RpLibraryC_test.c	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpLibraryC_test.c	(revision 6168)
@@ -0,0 +1,267 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <stdio.h>
+#include "RpLibraryCInterface.h"
+
+int test_lib(RpLibrary** lib, const char* path);
+int test_element (RpLibrary* lib, const char* path );
+int test_get (RpLibrary* lib, const char* path );
+int test_getString (RpLibrary* lib, const char* path );
+int test_getDouble (RpLibrary* lib, const char* path );
+int test_putString (RpLibrary* lib, 
+                    const char* path, 
+                    const char* value, 
+                    int append );
+int test_putDouble (RpLibrary* lib, 
+                    const char* path, 
+                    double value, 
+                    int append );
+int test_children (RpLibrary* lib, const char* path);
+int test_childrenByType (RpLibrary* lib, const char* path, const char* type );
+
+int test_lib (RpLibrary** lib, const char* path) {
+
+    int retVal = 0;
+
+    *lib = NULL;
+    *lib = rpLibrary(path);
+
+    printf("TESTING LIBRARY: path = %s\n", path);
+
+    if (*lib != NULL) {
+        printf("creation of library successful\n");
+    }
+    else {
+        printf("creation of library failed\n");
+        retVal += 1;
+    }
+
+    printf ("lib = %x\n",(unsigned int)(*lib));
+
+    return retVal;
+}
+
+int test_element (RpLibrary* lib, const char* path )
+{
+    int retVal = 0;
+    RpLibrary* searchEle = NULL;
+    const char* type = NULL;
+    const char* comp = NULL;
+    const char* id = NULL;
+
+    printf("TESTING ELEMENT: path = %s\n", path);
+
+    searchEle = rpElement(lib,path);
+    retVal += rpElementAsType(lib,path,&type);
+    retVal += rpElementAsComp(lib,path,&comp);
+    retVal += rpElementAsId(lib,path,&id);
+
+    if (!searchEle) {
+        printf("searchEle is NULL\n");
+        retVal += 1;
+    }
+    else {
+        printf("searchEle comp = :%s:\n", comp);
+        printf("searchEle   id = :%s:\n", id);
+        printf("searchEle type = :%s:\n", type);
+
+        retVal += rpNodeComp(searchEle,&comp);
+        retVal += rpNodeId(searchEle,&id);
+        retVal += rpNodeType(searchEle,&type);
+
+        printf("searchEle comp = :%s:\n", comp);
+        printf("searchEle   id = :%s:\n", id);
+        printf("searchEle type = :%s:\n", type);
+
+    }
+
+    return retVal;
+}
+
+int test_getString (RpLibrary* lib, const char* path )
+{
+    int retVal = 0;
+    const char* searchVal = NULL;
+
+    printf("TESTING GET String: path = %s\n", path);
+
+    retVal += rpGetString(lib,path,&searchVal);
+
+    if ( (retVal) || !searchVal || *searchVal == '\0') {
+        printf("searchVal is EMPTY STRING\n");
+        retVal += 1;
+    }
+    else {
+        printf("searchVal = :%s:\n", searchVal);
+        retVal = 0;
+    }
+
+    return retVal;
+}
+
+int test_getDouble (RpLibrary* lib, const char* path )
+{
+    int retVal = 0;
+    double searchVal = 0.0;
+
+    printf("TESTING GET Double: path = %s\n", path);
+
+    retVal = rpGetDouble(lib,path,&searchVal);
+
+    if (!retVal) {
+        printf("searchVal = :%f:\n", searchVal);
+    }
+    else {
+        printf("GET Double: FAILED\n");
+    }
+
+    return retVal;
+}
+
+int test_children (RpLibrary* lib, const char* path)
+{
+    int retVal = 0;
+    RpLibrary* childEle = NULL;
+    const char* id = NULL;
+    const char* comp = NULL;
+    const char* type = NULL;
+
+    printf("TESTING CHILDREN: path = %s\n", path);
+
+    while ( (childEle = rpChildren(lib,path,childEle)) ) {
+        retVal += rpNodeComp(childEle,&comp);
+        retVal += rpNodeId(childEle,&id);
+        retVal += rpNodeType(childEle,&type);
+
+        printf("childEle comp = :%s:\n",comp);
+        printf("childEle   id = :%s:\n",id);
+        printf("childEle type = :%s:\n",type);
+    }
+
+    return retVal;
+}
+
+int test_childrenByType (RpLibrary* lib, const char* path, const char* searchType )
+{
+    int retVal = 0;
+    RpLibrary* childEle = NULL;
+    const char* id = NULL;
+    const char* comp = NULL;
+    const char* type = NULL;
+
+    printf("TESTING CHILDREN: path = %s\n", path);
+
+    while ( (childEle = rpChildrenByType(lib,path,childEle,searchType)) ) {
+        retVal += rpNodeComp(childEle,&comp);
+        retVal += rpNodeId(childEle,&id);
+        retVal += rpNodeType(childEle,&type);
+
+        printf("childEle comp = :%s:\n",comp);
+        printf("childEle   id = :%s:\n",id);
+        printf("childEle type = :%s:\n",type);
+    }
+
+    return retVal;
+}
+
+int test_putString (RpLibrary* lib, const char* path, const char* value, int append)
+{
+    int retVal = 0;
+    const char* searchVal = NULL;
+
+    printf("TESTING PUT String: path = %s\n", path);
+
+    retVal += rpPutString(lib,path,value,append);
+    if (!retVal) {
+        retVal += rpGetString(lib, path, &searchVal);
+    }
+
+    if (retVal || !searchVal || *searchVal == '\0') {
+        printf("searchVal is EMPTY STRING, or there was an error\n");
+    }
+    else {
+        printf("searchVal = :%s:\n", searchVal);
+    }
+
+    return retVal;
+}
+
+int test_putDouble (RpLibrary* lib, const char* path, double value, int append)
+{
+    int retVal = 0;
+    double searchVal = 0.0;
+
+    printf("TESTING PUT String: path = %s\n", path);
+
+    retVal += rpPutDouble(lib,path,value,append);
+    if (!retVal) {
+        retVal += rpGetDouble(lib, path,&searchVal);
+    }
+
+    if ( retVal ){
+        printf("ERROR while retrieving searchVal\n");
+    }
+    else {
+        printf("searchVal = :%f:\n", searchVal);
+    }
+
+    return retVal;
+}
+
+int
+main(int argc, char** argv)
+{
+    RpLibrary* lib = NULL;
+    int err = 0;
+    const char* retStr = NULL;
+
+    if (argc < 2)
+    {
+        printf("usage: %s driver.xml\n", argv[0]);
+        return -1;
+    }
+
+    test_lib(&lib,argv[1]);
+
+    test_element(lib,"input.number(min)");
+    test_element(lib,"input.number(max)");
+    test_element(lib,"output.curve(result)");
+
+    test_getString(lib, "input.number(min).default");
+    test_getString(lib, "input.(min).current");
+    test_getString(lib, "input.number(max).current");
+    test_getString(lib, "output.curve.about.label");
+
+    test_putString(lib,"input.number(test).default", "1000", 0);
+    test_putDouble(lib, "input.number(test).preset", 1, 0);
+    test_putDouble(lib, "input.number(test).current", 2000, 0);
+    test_putDouble(lib, "input.number(test).preset(p1)", 100, 0);
+    test_putDouble(lib, "input.number(test).preset(p2)", 200, 0);
+    test_putDouble(lib, "input.number(test).preset(p3)", 300, 0);
+    test_putDouble(lib, "input.number(test).preset(p4)", 400, 0);
+    test_putDouble(lib, "input.number(test).preset(p5)", 500, 0);
+
+
+    test_children(lib,"");
+    test_children(lib,"input.number(test)");
+    test_childrenByType(lib,"input.number(test)","preset");
+
+    err = rpXml(lib,&retStr);
+
+    if ( !err ) {
+        printf("XML = \n%s\n",retStr);
+    }
+    else {
+        printf("rpXML failed\n");
+    }
+
+    rpFreeLibrary(&lib);
+
+    return 0;
+}
Index: /tags/1.6.0/oldtest/src/RpLibraryF_test.f
===================================================================
--- /tags/1.6.0/oldtest/src/RpLibraryF_test.f	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpLibraryF_test.f	(revision 6168)
@@ -0,0 +1,182 @@
+c ----------------------------------------------------------------------
+c  TEST: Fortran Rappture Library Test Source.
+c
+c  Simple tests of the Rappture Library Fortran Bindings
+c
+c ======================================================================
+c  AUTHOR:  Derrick S. Kearney, Purdue University
+c  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+c
+c  See the file "license.terms" for information on usage and
+c  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+c ======================================================================
+      SUBROUTINE  test_element(lib,path)
+        integer rp_lib_element_obj
+        integer retVal, lib
+        character*100 typ, comp, id, path
+
+        print *,"TESTING ELEMENT: path = ",path
+
+        retVal = rp_lib_element_obj(lib, path)
+
+        print *,"dict key = ",retVal
+
+        ! what happens when you get details for lib?
+        call rp_lib_node_comp(retVal,comp)
+        call rp_lib_node_type(retVal,typ)
+        call rp_lib_node_id(retVal,id)
+
+        print *,"comp = ",comp
+        print *,"type = ",typ
+        print *,"id = ",id
+      END SUBROUTINE  test_element
+
+      SUBROUTINE  test_get(lib,path)
+        integer lib
+        character*100 path, retText
+
+        print *,"TESTING GET       : path = ",path
+
+        call rp_lib_get(lib, path, retText)
+
+        print *,"retText = ",retText
+      END SUBROUTINE  test_get
+
+      SUBROUTINE  test_get_str(lib,path)
+        integer lib
+        character*100 path, retText
+
+        print *,"TESTING GET STRING: path = ",path
+
+        call rp_lib_get_str(lib, path, retText)
+
+        print *,"retText = ",retText
+      END SUBROUTINE  test_get_str
+
+      SUBROUTINE  test_get_dbl(lib,path)
+        integer lib
+        double precision rslt, rp_lib_get_double
+        character*100 path
+
+        print *,"TESTING GET DOUBLE: path = ",path
+
+        rslt = rp_lib_get_double(lib, path)
+
+        print *,"rslt = ",rslt
+      END SUBROUTINE  test_get_dbl
+
+      SUBROUTINE  test_get_int(lib,path)
+        integer lib
+        integer rslt, rp_lib_get_integer
+        character*100 path
+
+        print *,"TESTING GET INTEGER: path = ",path
+
+        rslt = rp_lib_get_integer(lib, path)
+
+        print *,"rslt = ",rslt
+      END SUBROUTINE  test_get_int
+
+      SUBROUTINE  test_get_bool(lib,path)
+        integer lib
+        integer rslt, rp_lib_get_boolean
+        character*100 path
+
+        print *,"TESTING GET BOOLEAN: path = ",path
+
+        rslt = rp_lib_get_boolean(lib, path)
+
+        print *,"rslt = ",rslt
+      END SUBROUTINE  test_get_bool
+
+      program rplib_f_tests
+        IMPLICIT NONE
+
+        integer rp_lib
+
+        integer driver
+        CHARACTER*100 inFile, path
+
+        call getarg(1,inFile)
+        driver = rp_lib(inFile)
+        ! print *,"dict key = ",driver
+
+        ! TESTING ELEMENT
+        path = "input.number(min)"
+        call test_element(driver, path)
+
+        ! TESTING GET
+        path = "input.number(min).current"
+        call test_get(driver, path)
+
+        ! TESTING GET STRING
+        path = "input.number(min).current"
+        call test_get_str(driver, path)
+
+        ! TESTING GET DOUBLE
+        path = "input.number(min).current"
+        call test_get_dbl(driver, path)
+
+        ! TESTING GET INT
+        path = "input.integer(try).current"
+        call rp_lib_put_str(driver, path, "12",0)
+        call test_get_int(driver, path)
+        call rp_lib_put_str(driver, path, "15.043",0)
+        call test_get_int(driver, path)
+
+        ! TESTING GET BOOLEAN
+        path = "input.boolean(b).current"
+        call rp_lib_put_str(driver, path, "true",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "false",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "1",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "0",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "on",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "off",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "yes",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "no",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "t",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "f",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "ye",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "n",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "tr",0)
+        call test_get_bool(driver, path)
+        call rp_lib_put_str(driver, path, "of",0)
+        call test_get_bool(driver, path)
+
+        call rp_result(driver)
+      end program rplib_f_tests
+
+!        call rp_lib_get(driver,
+!     +        "input.number(min).current", strVal)
+!        ok = rp_units_convert_dbl(strVal,"K",T)
+!
+!        call rp_lib_get(driver,
+!     +        "input.number(Ef).current", strVal)
+!        ok = rp_units_convert_dbl(strVal,"K",Ef)
+!
+!        kT = 8.61734e-5 * T
+!        Emin = Ef - 10*kT
+!        Emax = Ef + 10*kT
+!
+!        dE = 0.005*(Emax - Emin)
+!
+!        do 10 E=Emin,Emax,dE
+!          f = 1.0/(1.0+exp((E-Ef)/kT))
+!          write(xy,'(E20.12,F13.9,A)') f, E, char(10)
+!          call rp_lib_put_str(driver,
+!     +        "output.curve(f12).component.xy", xy, 1)
+! 10     continue
+!
+!      end program rplib_f_tests
Index: /tags/1.6.0/oldtest/src/RpLibrary_test.cc
===================================================================
--- /tags/1.6.0/oldtest/src/RpLibrary_test.cc	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpLibrary_test.cc	(revision 6168)
@@ -0,0 +1,591 @@
+/**
+ *
+ * RpParser_test.c
+ *
+ * test file for the RpParser.so library based off of the scew
+ * libaray, a simple wrapper around the expat parser
+ *
+ * Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ * See the file "license.terms" for information on usage and
+ * redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ */
+
+#include "RpLibrary.h"
+#include <list>
+#include <string>
+#include <iostream>
+
+using namespace std;
+
+int test_element (RpLibrary* lib, string path);
+int test_parent (RpLibrary* lib, string path);
+int test_get (RpLibrary* lib, string path);
+int test_getString (RpLibrary* lib, string path);
+int test_getDouble (RpLibrary* lib, string path);
+int test_getInt (RpLibrary* lib, string path);
+int test_getBool (RpLibrary* lib, string path);
+int test_putObj (RpLibrary* fromLib, string fromPath,
+                 RpLibrary* toLib, string toPath);
+int test_copy (RpLibrary* fromLib, string fromPath,
+               RpLibrary* toLib, string toPath);
+int test_remove (RpLibrary* lib, string path);
+
+int test_element (RpLibrary* lib, string path)
+{
+    int retVal = 1;
+    RpLibrary* searchEle = lib->element(path);
+
+    cout << "TESTING ELEMENT: path = " << path << endl;
+
+    if (!searchEle) {
+        cout << "searchEle is NULL" << endl;
+        retVal = 1;
+    }
+    else {
+        cout << "searchEle path = :" << searchEle->nodePath() << ":" << endl;
+        cout << "searchEle comp = :" << searchEle->nodeComp() << ":" << endl;
+        cout << "searchEle   id = :" << searchEle->nodeId()   << ":" << endl;
+        cout << "searchEle type = :" << searchEle->nodeType() << ":" << endl;
+        retVal = 0;
+    }
+
+    return retVal;
+}
+
+int test_parent (RpLibrary* lib, string path)
+{
+    int retVal = 1;
+    RpLibrary* searchEle = lib->parent(path);
+
+    cout << "TESTING PARENT: path = " << path << endl;
+
+    if (!searchEle) {
+        cout << "searchEle is NULL" << endl;
+        retVal = 1;
+    } else {
+        cout << "searchParent path = :" << searchEle->nodePath() << ":" << endl;
+        cout << "searchParent comp = :" << searchEle->nodeComp() << ":" << endl;
+        cout << "searchParent   id = :" << searchEle->nodeId()   << ":" << endl;
+        cout << "searchParent type = :" << searchEle->nodeType() << ":" << endl;
+        retVal = 0;
+    }
+
+    return retVal;
+}
+
+int test_get (RpLibrary* lib, string path)
+{
+    int retVal = 1;
+    string searchVal = lib->get(path);
+
+    cout << "TESTING GET       : path = " << path << endl;
+
+    if (searchVal.empty()) {
+        cout << "searchVal is EMPTY STRING" << endl;
+        retVal = 1;
+    }
+    else {
+        cout << "searchVal = :" << searchVal << ":" << endl;
+        retVal = 0;
+    }
+
+    return retVal;
+}
+
+int test_getString (RpLibrary* lib, string path)
+{
+    int retVal = 1;
+    string searchVal = lib->getString(path);
+
+    cout << "TESTING GET String: path = " << path << endl;
+
+    if (searchVal.empty()) {
+        cout << "searchVal is EMPTY STRING" << endl;
+        retVal = 1;
+    }
+    else {
+        cout << "searchVal = :" << searchVal << ":" << endl;
+        retVal = 0;
+    }
+
+    return retVal;
+}
+
+int test_getDouble (RpLibrary* lib, string path)
+{
+    int retVal = 1;
+    double searchVal = lib->getDouble(path);
+
+    cout << "TESTING GET Double: path = " << path << endl;
+
+    cout << "searchVal = :" << searchVal << ":" << endl;
+    retVal = 0;
+
+    return retVal;
+}
+
+int test_getInt (RpLibrary* lib, string path)
+{
+    int retVal = 1;
+    int searchVal = lib->getInt(path);
+
+    cout << "TESTING GET INT: path = " << path << endl;
+
+    cout << "searchVal = :" << searchVal << ":" << endl;
+    retVal = 0;
+
+    return retVal;
+}
+
+int 
+test_getBool (RpLibrary* lib, string path)
+{
+    int retVal = 1;
+    bool searchVal = lib->getBool(path);
+
+    cout << "TESTING GET Bool: path = " << path << endl;
+
+    cout << "searchVal = :" << searchVal << ":" << endl;
+    retVal = 0;
+
+    return retVal;
+}
+
+int 
+test_putObj (   RpLibrary* fromLib, string fromPath,
+                    RpLibrary* toLib, string toPath)
+{
+    int retVal = 1;
+    RpLibrary* fromEle = fromLib->element(fromPath);
+    RpLibrary* foundEle = NULL;
+    string newNodeName = "";
+
+    cout << "TESTING PUT Object:" << endl;
+    cout << "fromPath = " << fromPath << endl;
+    cout << "toPath = " << toPath << endl;
+
+    // put the element into the new library/xmltree
+    toLib->put(toPath,fromEle);
+
+    // check the result
+    // create the name of where the element should be
+    newNodeName = toPath + "." + fromEle->nodeComp();
+    // grab the element
+    if ((foundEle = toLib->element(newNodeName))){
+        cout << "SUCCESS: foundEle was found" << endl;
+        retVal = 0;
+    }
+
+    return retVal;
+}
+
+int test_copy (   RpLibrary* fromLib, string fromPath,
+                    RpLibrary* toLib, string toPath)
+{
+    int retVal = 1;
+    RpLibrary* fromEle = fromLib->element(fromPath);
+    RpLibrary* foundEle = NULL;
+    string newNodeName = "";
+
+    cout << "TESTING COPY:" << endl;
+    cout << "fromPath = " << fromPath << endl;
+    cout << "toPath = " << toPath << endl;
+
+    // put the element into the new library/xmltree
+    toLib->copy(toPath,fromPath);
+
+    // check the result
+    // create the name of where the element should be
+    newNodeName = toPath + "." + fromEle->nodeComp();
+    // grab the element
+    if ((foundEle = toLib->element(newNodeName))){
+        cout << "SUCCESS: foundEle was found" << endl;
+        retVal = 0;
+    }
+    else {
+        cout << "FAILURE: foundEle WAS NOT found" << endl;
+    }
+
+    return retVal;
+}
+
+int test_remove (RpLibrary* lib, string path)
+{
+    RpLibrary* getRslt = NULL;
+    int retVal = 1;
+    cout << "TESTING REMOVE:" << endl;
+    // cout << "lib's xml:" << endl << lib->xml() << endl;
+    if (lib) {
+        lib->remove(path);
+        if (lib) {
+            getRslt = lib->element(path);
+            if (getRslt) {
+                cout << "FAILURE: " << path << " not removed" << endl;
+                cout << "lib's xml:" << endl << lib->xml() << endl;
+            }
+            else {
+                cout << "SUCCESS: " << path << " removed" << endl;
+                retVal = 0;
+            }
+        }
+    }
+
+    return retVal;
+}
+
+int test_entities (RpLibrary* lib)
+{
+    list<string>::iterator iter;
+    list<string> elist = lib->entities();
+
+    iter = elist.begin();
+
+    cout << "TESTING ENTITIES BEGIN" << endl;
+    cout << "path = "<< lib->nodePath() << endl;
+
+    while (iter != elist.end() ) {
+        cout << *iter << endl;
+        iter++;
+    }
+
+    cout << "TESTING ENTITIES END" << endl;
+
+    return 0;
+}
+
+int test_diff (RpLibrary* lib1, RpLibrary* lib2)
+{
+    list<string>::iterator iter;
+    list<string> elist;
+
+    elist = lib1->diff(lib2,"input");
+
+    iter = elist.begin();
+
+    cout << "TESTING DIFF BEGIN" << endl;
+
+    int count = 0;
+    while (iter != elist.end() ) {
+        cout << *iter << " ";
+        iter++;
+        count++;
+        if (count == 4) {
+            cout << endl;
+            count = 0;
+        }
+
+    }
+
+    cout << "TESTING DIFF END" << endl;
+
+    return 0;
+}
+
+/*
+int test_children (RpLibrary* lib, string path, string type )
+{
+    int retVal = 1;
+    int childNum = -1;
+
+    cout << "TESTING CHILDREN: path = " << path << endl;
+    RpLibrary** searchEle = lib->children(path,"",type);
+
+    if (!searchEle || !*searchEle) {
+        cout << "searchEle is NULL -> NO CHILDREN" << endl;
+        retVal = 1;
+    }
+    else {
+
+        while (searchEle[++childNum]) {
+            cout << "searchEle comp = :" << searchEle[childNum]->nodeComp() 
+                << ":" << endl;
+            cout << "searchEle   id = :" << searchEle[childNum]->nodeId()   
+                << ":" << endl;
+            cout << "searchEle type = :" << searchEle[childNum]->nodeType() 
+                << ":" << endl;
+            delete (searchEle[childNum]);
+            searchEle[childNum] = NULL;
+        }
+
+        retVal = 0;
+
+    }
+
+    delete[] searchEle;
+
+    return retVal;
+}
+*/
+
+int test_children (RpLibrary* lib, string path, string type )
+{
+    int retVal = 1;
+    RpLibrary* childEle = NULL;
+
+    cout << "TESTING CHILDREN: path = " << path << endl;
+
+    while ( (childEle = lib->children(path,childEle,type)) ) {
+
+        cout << "childEle path = :" << childEle->nodePath() 
+            << ":" << endl;
+        cout << "childEle comp = :" << childEle->nodeComp() 
+            << ":" << endl;
+        cout << "childEle   id = :" << childEle->nodeId()   
+            << ":" << endl;
+        cout << "childEle type = :" << childEle->nodeType() 
+            << ":" << endl;
+
+        retVal = 0;
+
+    }
+
+    if (!childEle) {
+        cout << "No more children" << endl;
+    }
+
+    return retVal;
+}
+
+int
+main(int argc, char** argv)
+{
+    RpLibrary* lib = NULL;
+    RpLibrary lib2;
+
+    if (argc < 2)
+    {
+        printf("usage: RpLibrary_test infile.xml\n");
+        return EXIT_FAILURE;
+    }
+
+    lib = new RpLibrary(string(argv[1]));
+
+    test_element(lib,"");
+    test_element(lib,"input.number(min)");
+    test_element(lib,"input.number(max)");
+    test_element(lib,"output.curve(result)");
+
+    test_parent(lib,"input.number(min).current");
+    test_parent(lib,"input.number(max)");
+    test_parent(lib,"output");
+
+    test_getString(lib, "input.number(min).default");
+    test_getString(lib, "input.(min).current");
+    test_getString(lib, "input.number(max).current");
+    test_getString(lib, "output.curve.about.label");
+
+    lib->put("input.number(test_one).default", "3000");
+    test_get(lib, "input.number(test_one).default");
+    lib->put("input.number(test).default", "1000");
+    test_getString(lib, "input.number(test).default");
+    lib->put("input.number(test).current", 2000);
+    test_getDouble(lib, "input.number(test).current");
+
+    lib->put("input.number(test).current", 5);
+    test_getInt(lib, "input.number(test).current");
+    lib->put("input.number(test).current", 50);
+    test_getInt(lib, "input.number(test).current");
+    lib->put("input.number(test).current", 53.6);
+    test_getInt(lib, "input.number(test).current");
+    lib->put("input.number(test).current", 52.94);
+    test_getInt(lib, "input.number(test).current");
+
+    lib->put("input.boolean(boolval).current", "yes");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "no");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "true");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "false");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "on");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "off");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "1");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "0");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "ye");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "n");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "tr");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "fa");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "on");
+    test_getBool(lib, "input.boolean(boolval).current");
+    lib->put("input.boolean(boolval).current", "of");
+    test_getBool(lib, "input.boolean(boolval).current");
+
+    test_putObj(lib, "input.number(max)", lib, "input.test");
+    test_copy(lib, "input.number(min)", lib, "input.test.number(min)");
+
+    test_children(lib,"","");
+    test_children(lib,"input.number(test)","");
+    test_children(lib,"input","");
+    test_children(lib,"input","number");
+
+    cout << lib->xml() << endl;
+
+    RpLibrary* remEle = lib->element("input.test.(min)");
+    test_remove(remEle,"");
+    remEle->remove();
+    test_remove(lib, "input.test.(min)");
+    test_remove(lib, "input.test.(max)");
+    cout << lib->xml() << endl;
+
+    RpLibrary* libInput = lib->element("input");
+    test_entities(lib);
+    test_entities(libInput);
+
+    /*
+    list<string> l1 = lib->value("input.number(min)");
+    list<string> l2 = lib->value("input.number(max)");
+    cout << "l1 = " << l1.front() << " " << l1.back() << endl;
+    cout << "l2 = " << l2.front() << " " << l2.back() << endl;
+    */
+
+    RpLibrary* dlib1 = new RpLibrary(string(argv[1]));
+    RpLibrary* dlib2 = new RpLibrary(string(argv[1]));
+    test_diff(dlib1,dlib2);
+    cout << "dlib1-------------------------------------" << endl;
+    cout << dlib1->xml() << endl;
+    cout << "dlib2-------------------------------------" << endl;
+    cout << dlib1->xml() << endl;
+    dlib1 = lib;
+    test_diff(dlib1,dlib2);
+    cout << "dlib1-------------------------------------" << endl;
+    cout << dlib1->xml() << endl;
+    cout << "dlib2-------------------------------------" << endl;
+    cout << dlib2->xml() << endl;
+
+
+
+    // test copy assignment operator
+    lib2 = *lib;
+
+    delete lib;
+
+    lib2.put("input.output.curve(curve1).xy.default", "1e-4 0.0\n");
+    lib2.put("input.output.curve(curve1).xy.default", "1e-2 1.0\n","",1);
+    lib2.put("input.output.curve(curve1).xy.default", "1e-30 2.0\n","",1);
+    lib2.put("input.output.curve(curve1).xy.default", "1e+4 3.0\n","",1);
+    lib2.put("input.output.curve(curve1).xy.default", "1.7e-4 4.0\n","",1);
+    lib2.put("input.output.curve(curve1).xy.default", "15e-4 5.0\n","",1);
+
+
+    // test copy constructor
+    RpLibrary lib3 = lib2;
+
+    lib2.put("input.output.curve(curve2).xy.current", "1e-4 0.0\n");
+    lib2.put("input.output.curve(curve2).xy.current", "1e-2 1.0\n","",1);
+    lib2.put("input.output.curve(curve2).xy.current", "1e-30 2.0\n","",1);
+    lib2.put("input.output.curve(curve2).xy.current", "1e+4 3.0\n","",1);
+    lib2.put("input.output.curve(curve2).xy.current", "1.7e-4 4.0\n","",1);
+    lib2.put("input.output.curve(curve2).xy.current", "15e-4 5.0\n","",1);
+
+
+    cout << "//////////////////// LIB 2 ////////////////////" << endl;
+    cout << lib2.xml() << endl;
+    cout << "//////////////////// LIB 3 ////////////////////" << endl;
+    cout << lib3.xml() << endl;
+
+    lib2.result();
+
+
+    cout << "testing with &lt;number&gt;" << endl;
+    lib2.put("input.dsk.test", "slkdjfs slkdfj lks &lt;number&gt; sdlkfj sdlkjf","",1);
+    cout << lib2.xml() << endl;
+    cout << "testing get &lt;number&gt;" << endl;
+    cout << lib2.get("input.dsk.test") << endl;
+    cout << "testing with <number>" << endl;
+    lib2.put("input.dsk.test2", "slkdjfs slkdfj lks <number> sdlkfj sdlkjf","",1);
+    cout << lib2.xml() << endl;
+
+    /*
+    RpLibrary* childEle  = NULL;
+    RpLibrary* childEle2 = NULL;
+    while ( (childEle = lib2.children("input",childEle)) ) {
+        cout << "childEle path = :" << childEle->nodePath() << ":" << endl;
+        while ( (childEle2 = childEle->children("",childEle2)) ) {
+            cout << "childEle2 path = :" << childEle2->nodePath() << ":" << endl;
+        }
+        childEle2 = NULL;
+        if (!childEle) {
+            cout << "childEle Not null" << endl;
+        }
+    }
+    */
+
+    return 0;
+}
+
+    /*
+    put(lib, "element3.sub_element(value3)", "put_element3", NULL, 1);
+    
+    search_element = _find(lib->element,"element3.sub_element(value3)",0);
+    printf("search_element name = %s\n", scew_element_name(search_element));
+
+    // search_element2 = element(root->element, "element3.sub_element(value3)", "object");
+
+    search_element2 = element(lib, "element3.sub_element(value3)", OBJECT);
+    printf("search_element2 name = %s\n", scew_element_name(search_element2->element));
+    freeRpLibrary(&search_element2);
+
+    search_element2 = element(lib, "element3.sub_element(value3)", COMPONENT);
+    printf("search_element2 comp = %s\n", search_element2->stringVal);
+    freeRpLibrary(&search_element2);
+    
+    search_element2 = element(lib, "element3.sub_element(value3)", ID);
+    printf("search_element2 id = %s\n", search_element2->stringVal);
+    freeRpLibrary(&search_element2);
+    
+    search_element2 = element(lib, "element3.sub_element(value3)", TYPE);
+    printf("search_element2 type = %s\n", search_element2->xml_char);
+    freeRpLibrary(&search_element2);
+    
+    
+    get_element = get(lib, "element");
+    printf("get element's contents = %s\n", get_element->xml_char);
+    freeRpLibrary(&get_element);
+
+
+        
+    put(lib, "element4.sub_element(value)", "put1_element", NULL, 0);
+    put(lib, "element4.sub_element(value2)", "put2_element", NULL, 0);
+    put(lib, "element4.sub_element(value3)", "put3_element", NULL, 0);
+    put(lib, "element4.sub_element(value4)", "put4_element", NULL, 0);
+    get_element = get(lib, "element4.sub_element(value)");
+    printf("put1 element's contents = %s\n", get_element->xml_char);
+    get_element = get(lib, "element4.sub_element(value2)");
+    printf("put2 element's contents = %s\n", get_element->xml_char);
+    get_element = get(lib, "element4.sub_element(value3)");
+    printf("put3 element's contents = %s\n", get_element->xml_char);
+    get_element = get(lib, "element4.sub_element(value4)");
+    printf("put4 element's contents = %s\n", get_element->xml_char);
+
+    */
+    /**
+     * Save an XML tree to a file.
+     */
+    /*
+    if (!scew_writer_tree_file(lib->tree, argv[2]))
+    {
+        printf("Unable to create %s\n", argv[2]);
+        return EXIT_FAILURE;
+    }
+    */
+
+
+    /*
+    
+    freeRpLibrary(&search_element2);
+    freeRpLibrary(&get_element);
+    freeRpLibrary(&lib);
+
+    if (tagName) { free (tagName); }
+    if (id) { free(id); }
+    */
Index: /tags/1.6.0/oldtest/src/RpMatlab_test.m
===================================================================
--- /tags/1.6.0/oldtest/src/RpMatlab_test.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpMatlab_test.m	(revision 6168)
@@ -0,0 +1,64 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+%op = sprintf('%s:%s:%s', path, 'src', 'src/matlab//');
+%op = path(op);
+
+% before you run this script you need to manually start up matlab and
+% add the src and src/matlab directories to your path
+% 
+% or do this:
+%
+% cd test
+% matlab -nodisplay -r path\(path,\'src\'\),path\(path,\'src\/matlab\'\),infile=\'rplib_test.xml\',RpMatlab_test
+
+%path(path,src');
+%path(path,'src/matlab');
+
+lib = rpLib(infile);
+err = test_element(lib,'input.number(min)');
+err = test_element_comp(lib,'input.number(min)');
+err = test_children(lib,'input');
+err = test_children_bytype(lib,'input','number');
+err = test_convert('1m','cm',0);
+err = test_convert('1m','cm',1);
+err = test_convert('1eV','J',1);
+err = test_convert_dbl('1eV','J');
+err = test_convert_str('1eV','J',0);
+err = test_convert_str('1eV','J',1);
+err = test_define_unit('We',0);
+err = test_define_unit('We2',0);
+err = test_find('We');
+err = test_get(lib,'output.curve(result).about.label');
+err = test_get_string(lib,'output.curve(result).about.label');
+err = test_get_basis('cm');
+err = test_get_basis('We');
+err = test_get_double(lib,'input.number(max).current');
+err = test_get_exponent('cm');
+err = test_get_exponent('We2');
+err = test_get_units('We2');
+err = test_get_units_name('We2');
+err = test_make_metric('We2');
+err = test_node_comp(lib,'input.number(min)');
+%err = test_node_comp(0,'input.nur(min)');
+err = test_node_id(lib,'input.number(min)');
+err = test_node_type(lib,'input.number(min)');
+err = test_put(lib,'output.curve(result).xy(f12)','12 13',1);
+err = test_put_dbl(lib,'output.curve(result).xy(f13)',22,1);
+err = test_put_dbl(lib,'output.curve(result).xy(f14)',0,1);
+err = test_put_str(lib,'output.curve(result).xy(f15)','110 111',1);
+err = test_xml(lib);
+err = test_result(lib);
+
+quit;
Index: /tags/1.6.0/oldtest/src/RpNumber_test.cc
===================================================================
--- /tags/1.6.0/oldtest/src/RpNumber_test.cc	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpNumber_test.cc	(revision 6168)
@@ -0,0 +1,152 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpNumber.h"
+
+int test_getPath(RpNumber* myNumber);
+int test_getUnits(RpNumber* myNumber);
+int test_getDefaultValue(RpNumber* myNumber);
+int test_getCurrentValue(RpNumber* myNumber);
+int test_getMin(RpNumber* myNumber);
+int test_getMax(RpNumber* myNumber);
+int test_getLabel(RpNumber* myNumber);
+int test_getDesc(RpNumber* myNumber);
+int test_convert(RpNumber* myNumber);
+
+int test_getPath(RpNumber* myNumber)
+{
+    std::cout << "Path " << myNumber->getPath() << std::endl;
+
+    return 1;
+}
+
+int test_getUnits(RpNumber* myNumber)
+{
+    std::cout << "units " << myNumber->getUnits() << std::endl;
+
+    return 1;
+}
+
+int test_getDefaultValue(RpNumber* myNumber)
+{
+    std::cout << "defaultVal " << myNumber->getDefaultValue() << std::endl;
+
+    return 1;
+}
+
+int test_getCurrentValue(RpNumber* myNumber)
+{
+    std::cout << "currentVal " << myNumber->getCurrentValue() << std::endl;
+
+    return 1;
+}
+
+int test_getMin(RpNumber* myNumber)
+{
+    std::cout << "min " << myNumber->getMin() << std::endl;
+
+    return 1;
+}
+
+int test_getMax(RpNumber* myNumber)
+{
+    std::cout << "max " << myNumber->getMax() << std::endl;
+
+    return 1;
+}
+
+int test_getLabel(RpNumber* myNumber)
+{
+    std::cout << "label " << myNumber->getLabel() << std::endl;
+
+    return 1;
+}
+
+int test_getDesc(RpNumber* myNumber)
+{
+    std::cout << "desc " << myNumber->getDesc() << std::endl;
+
+    return 1;
+}
+
+int test_convert(RpNumber* myNumber)
+{
+    int result = 0;
+    double newVal = myNumber->convert("C",1,&result);
+
+    if (result) {
+        std::cout << "newVal = " << newVal << std::endl;
+    }
+    else {
+        std::cout << "newVal has a bad result" << std::endl;
+    }
+
+    return result;
+}
+
+void define_some_units()
+{
+    const RpUnits * meters = RpUnits::define("m", NULL);
+    RpUnits::makeMetric(meters);
+    RpUnits::define("V", NULL);
+    RpUnits::define("s", NULL);
+    RpUnits::define("cm2/Vs", NULL);
+    const RpUnits* angstrom = RpUnits::define("A", NULL);
+    RpUnits::define(angstrom, meters, angstrom2meter, meter2angstrom);
+    const RpUnits* fahrenheit = RpUnits::define("F", NULL);
+    const RpUnits* celcius = RpUnits::define("C", NULL);
+    const RpUnits* kelvin = RpUnits::define("K", NULL);
+    RpUnits::define(fahrenheit, celcius, fahrenheit2centigrade, centigrade2fahrenheit);
+    RpUnits::define(celcius, kelvin, centigrade2kelvin, kelvin2centigrade);
+}
+
+
+int main ()
+{
+
+    define_some_units();
+
+    RpNumber* T1 = new RpNumber("input.(ambient).(temperature)","K",300.00);
+    RpNumber* T2 = new RpNumber("input.(ambient).(temperature)",
+                                "K",
+                                300.00,
+                                0.00,
+                                1000.00,
+                                "Temperature",
+                                "Ambient Temperature, value between 0 and 1000"
+                                );
+    
+
+    test_getPath(T1);
+    test_getUnits(T1);
+    test_getDefaultValue(T1);
+    test_getCurrentValue(T1);
+    test_getMin(T1);
+    test_getMax(T1);
+    test_getLabel(T1);
+    test_getDesc(T1);
+    test_convert(T1);
+    test_getCurrentValue(T1);
+    test_getUnits(T1);
+
+    std::cout << std::endl;
+
+    test_getPath(T2);
+    test_getUnits(T2);
+    test_getDefaultValue(T2);
+    test_getCurrentValue(T2);
+    test_getMin(T2);
+    test_getMax(T2);
+    test_getLabel(T2);
+    test_getDesc(T2);
+    test_convert(T2);
+
+    std::cout << std::endl;
+
+    return 0;
+}
Index: /tags/1.6.0/oldtest/src/RpOctave_test.m
===================================================================
--- /tags/1.6.0/oldtest/src/RpOctave_test.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpOctave_test.m	(revision 6168)
@@ -0,0 +1,52 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+op = sprintf("%s:%s", path(), 'src/octave//');
+op = path(op);
+
+infile = sprintf("%s",argv(1,:));
+lib = rpLib(infile);
+err = test_element(lib,'input.number(min)');
+err = test_element_comp(lib,'input.number(min)');
+err = test_children(lib,'input');
+err = test_children_bytype(lib,'input','number');
+err = test_convert('1m','cm',0);
+err = test_convert('1m','cm',1);
+err = test_convert('1eV','J',1);
+err = test_convert_dbl('1eV','J');
+err = test_convert_str('1eV','J',0);
+err = test_convert_str('1eV','J',1);
+err = test_define_unit('We',0);
+err = test_define_unit('We2',0);
+err = test_find('We');
+err = test_get(lib,'output.curve(result).about.label');
+err = test_get_string(lib,'output.curve(result).about.label');
+err = test_get_basis('cm');
+err = test_get_basis('We');
+err = test_get_double(lib,'input.number(max).current');
+err = test_get_exponent('cm');
+err = test_get_exponent('We2');
+err = test_get_units('We2');
+err = test_get_units_name('We2');
+err = test_make_metric('We2');
+err = test_node_comp(lib,'input.number(min)');
+%err = test_node_comp(0,'input.nur(min)');
+err = test_node_id(lib,'input.number(min)');
+err = test_node_type(lib,'input.number(min)');
+err = test_put(lib,'output.curve(result).xy(f12)','12 13',1);
+err = test_put_dbl(lib,'output.curve(result).xy(f13)',22,1);
+err = test_put_dbl(lib,'output.curve(result).xy(f14)',0,1);
+err = test_put_str(lib,'output.curve(result).xy(f15)','110 111',1);
+err = test_xml(lib);
+err = test_result(lib);
Index: /tags/1.6.0/oldtest/src/RpString_test.cc
===================================================================
--- /tags/1.6.0/oldtest/src/RpString_test.cc	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpString_test.cc	(revision 6168)
@@ -0,0 +1,145 @@
+/*
+ * ======================================================================
+ *  AUTHOR: Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpString.h"
+
+int test_setPath(RpString* myString);
+int test_setDefaultValue(RpString* myString);
+int test_setCurrentValue(RpString* myString);
+int test_setSize(RpString* myString);
+int test_setHeight(RpString* myString);
+int test_setWidth(RpString* myString);
+int test_setLabel(RpString* myString);
+int test_setDesc(RpString* myString);
+
+int test_setPath(RpString* myString)
+{
+    std::cout << "Path " << myString->getPath() << std::endl;
+    myString->setPath("input.(ambiant)");
+    std::cout << "Path " << myString->getPath() << std::endl;
+
+    return 1;
+}
+
+int test_setSize(RpString* myString)
+{
+    std::cout << "Size " << myString->getSize() << std::endl;
+    myString->setSize("5x3");
+    std::cout << "Size " << myString->getSize() << std::endl;
+
+    return 1;
+}
+
+int test_setDefaultValue(RpString* myString)
+{
+    std::cout << "defaultVal " << myString->getDefaultValue() << std::endl;
+    myString->setDefaultValue("new default value");
+    std::cout << "defaultVal " << myString->getDefaultValue() << std::endl;
+
+    return 1;
+}
+
+int test_setCurrentValue(RpString* myString)
+{
+    std::cout << "currentVal " << myString->getCurrentValue() << std::endl;
+    myString->setCurrentValue("new current value");
+    std::cout << "currentVal " << myString->getCurrentValue() << std::endl;
+
+    return 1;
+}
+
+int test_setHeight(RpString* myString)
+{
+    std::cout << "Height " << myString->getHeight() << std::endl;
+    myString->setHeight(2);
+    std::cout << "Height " << myString->getHeight() << std::endl;
+
+    return 1;
+}
+
+int test_setWidth(RpString* myString)
+{
+    std::cout << "width " << myString->getWidth() << std::endl;
+    myString->setWidth(1);
+    std::cout << "width " << myString->getWidth() << std::endl;
+
+    return 1;
+}
+
+int test_setLabel(RpString* myString)
+{
+    std::cout << "label " << myString->getLabel() << std::endl;
+    myString->setLabel("newLabel");
+    std::cout << "label " << myString->getLabel() << std::endl;
+
+    return 1;
+}
+
+int test_setDesc(RpString* myString)
+{
+    std::cout << "desc " << myString->getDesc() << std::endl;
+    myString->setDesc("new description");
+    std::cout << "desc " << myString->getDesc() << std::endl;
+
+    return 1;
+}
+
+int main ()
+{
+
+    RpString* T1 = new RpString("input.(ambient).(temperature)","default-string");
+    RpString* T2 = new RpString("input.(ambient).(temperature)",
+                                "default-string",
+                                "15x20");
+    RpString* T3 = new RpString("input.(ambient).(temperature)",
+                                "default-string",
+                                "100x200",
+                                "string3's label",
+                                "string3's desc"
+                                );
+    
+
+    std::cout << "T1 run" << std::endl;
+    test_setPath(T1);
+    test_setDefaultValue(T1);
+    test_setCurrentValue(T1);
+    test_setSize(T1);
+    test_setHeight(T1);
+    test_setWidth(T1);
+    test_setLabel(T1);
+    test_setDesc(T1);
+
+    std::cout << std::endl;
+
+    std::cout << "T2 run" << std::endl;
+    test_setPath(T2);
+    test_setDefaultValue(T2);
+    test_setCurrentValue(T2);
+    test_setSize(T2);
+    test_setHeight(T2);
+    test_setWidth(T2);
+    test_setLabel(T2);
+    test_setDesc(T2);
+
+    std::cout << std::endl;
+
+    std::cout << "T3 run" << std::endl;
+    test_setPath(T3);
+    test_setDefaultValue(T3);
+    test_setCurrentValue(T3);
+    test_setSize(T3);
+    test_setHeight(T3);
+    test_setWidth(T3);
+    test_setLabel(T3);
+    test_setDesc(T3);
+
+    std::cout << std::endl;
+
+    return 0;
+}
Index: /tags/1.6.0/oldtest/src/RpUnitsC_test.c
===================================================================
--- /tags/1.6.0/oldtest/src/RpUnitsC_test.c	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpUnitsC_test.c	(revision 6168)
@@ -0,0 +1,186 @@
+/*
+ *----------------------------------------------------------------------
+ * TEST: Cee's interface to RpUnits.
+ *
+ * Basic units conversion tests for the RpUnits portion of Rappture
+ * written in Cee.
+ *======================================================================
+ * AUTHOR:  Derrick Kearney, Purdue University
+ * Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ * See the file "license.terms" for information on usage and
+ * redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *======================================================================
+ */
+#include "RpUnitsCInterface.h"
+#include <stdio.h>
+
+double fahrenheit2centigrade (double F);
+double centigrade2fahrenheit (double C);
+double centigrade2kelvin (double C);
+double kelvin2centigrade (double K);
+
+double angstrom2meter (double angstrom)
+{
+    return angstrom*1.0e-10;
+}
+
+double meter2angstrom (double meters)
+{
+    return meters*1.0e10;
+}
+
+double fahrenheit2centigrade (double F)
+{
+    return ((F-32.0)/(9.0/5.0));
+}
+
+double centigrade2fahrenheit (double C)
+{
+    return ((C*(9.0/5.0))+32.0);
+}
+
+double centigrade2kelvin (double C)
+{
+    return (C+273.15);
+}
+
+double kelvin2centigrade (double K)
+{
+    return (K-273.15);
+}
+
+int main()
+{
+
+    const RpUnits* meters = rpDefineUnit("m",NULL);
+
+    const RpUnits* centimeters = NULL;
+    const RpUnits* nanometers = NULL;
+    const RpUnits* cm_basis = NULL;
+
+    const RpUnits* angstrom = rpDefineUnit("A",NULL);
+    const RpUnits* fahrenheit = rpDefineUnit("F",NULL);
+    const RpUnits* celcius = rpDefineUnit("C",NULL);
+    const RpUnits* kelvin = rpDefineUnit("K",NULL);
+
+    rpDefineConv(angstrom, meters, angstrom2meter, meter2angstrom);
+    rpDefineConv(fahrenheit, celcius, fahrenheit2centigrade, centigrade2fahrenheit);
+    rpDefineConv(celcius, kelvin, centigrade2kelvin, kelvin2centigrade);
+
+
+    double cm_exp = 0;
+    double nm_conv = 0;
+    double value = 0;
+
+    int result = 0;
+    int showUnits = 0;
+
+    const char* nm_conv_str = NULL;
+    const char* retStr = NULL;
+
+    rpMakeMetric(meters);
+    centimeters = rpFind("cm");
+
+    if (meters) {
+        printf("meters sign is :%s:\n",rpGetUnitsName(meters));
+    }
+
+    if (centimeters) {
+        cm_exp = rpGetExponent(centimeters);
+        cm_basis = rpGetBasis(centimeters);
+
+        printf("centimeters sign is :%s:\n",rpGetUnits(centimeters));
+        printf("cm_exp is :%f:\n",cm_exp);
+
+        if (cm_basis) {
+            printf("cm_basis sign is :%s:\n",rpGetUnitsName(cm_basis));
+        }
+        else {
+            printf("cm_basis is NULL\n");
+        }
+
+    }
+
+    nanometers = rpFind("nm");
+
+    if (nanometers) {
+
+        nm_conv = rpConvert_ObjDbl(nanometers,meters,1.0e9,&result);
+        printf("1.0e9 nm = %f m\tresult = %d\n",nm_conv,result);
+
+        nm_conv = rpConvert_ObjDbl(nanometers,meters,1.0e9, NULL);
+        printf("1.0e9 nm = %f m\n",nm_conv);
+
+        showUnits = 1;
+        nm_conv_str = rpConvert_ObjStr(nanometers,meters,1.588e9,showUnits,NULL);
+        printf("1.588e9 nm = %s\n",nm_conv_str);
+
+        showUnits = 0;
+        nm_conv_str = rpConvert_ObjStr(nanometers,meters,1.588e9,showUnits,NULL);
+        printf("1.588e9 nm = %s\n",nm_conv_str);
+    }
+    else {
+        printf("nanometers is NULL\n");
+    }
+
+    if (meters && angstrom && centimeters) {
+        value = rpConvert_ObjDbl(angstrom,meters,1.0,&result);
+        printf("1 angstrom = %e meters\n",value);
+
+        value = rpConvert_ObjDbl(centimeters,angstrom,1e-8,&result);
+        printf("1.0e-8 centimeter = %f angstroms\n",value);
+    }
+    else {
+        printf("meters or angstrom or centimeters is NULL\n");
+    }
+
+
+    if (fahrenheit && celcius) {
+        value = rpConvert_ObjDbl(fahrenheit,celcius,72,&result);
+        printf("72 degrees fahrenheit = %f degrees celcius\n",value);
+
+        value = rpConvert_ObjDbl(celcius,fahrenheit,value,&result);
+        printf("22.222 degrees celcius = %f degrees fahrenheit\n",value);
+    }
+    else {
+        printf("fahrenheit or celcius is NULL\n");
+    }
+
+    if (celcius && kelvin) {
+        value = rpConvert_ObjDbl(celcius,kelvin,20,&result);
+        printf("20 degrees celcius = %f kelvin\n",value);
+
+        value = rpConvert_ObjDbl(kelvin,celcius,300,&result);
+        printf("300 kelvin = %f degrees celcius\n", value);
+    }
+    else {
+        printf("celcius or kelvin is NULL\n");
+    }
+
+    printf("====== adding all preset units ======\n");
+    rpAddPresets("all");
+
+    printf("====== TESTING STATIC CONVERT FXNS ======\n");
+
+    retStr = rpConvert("72F","C",1,&result);
+    printf("72F = %s\tresult = %d\n", retStr,result);
+
+    retStr = rpConvert("300K","F",1,&result);
+    printf("300K = %s\tresult = %d\n", retStr,result);
+
+    retStr = rpConvert("1eV","J",0,&result);
+    printf("1eV = %s (no units)\tresult = %d\n", retStr,result);
+
+    retStr = rpConvertStr("300K","R",1,&result);
+    printf("300K = %s\tresult = %d\n", retStr,result);
+
+    retStr = rpConvertStr("5m","ft",1,&result);
+    printf("5m = %s\tresult = %d\n", retStr,result);
+
+    value = rpConvertDbl("5000mV","V",&result);
+    printf("5V = %f (double value)\n", value);
+
+
+    return 0;
+}
Index: /tags/1.6.0/oldtest/src/RpUnitsF_test.f
===================================================================
--- /tags/1.6.0/oldtest/src/RpUnitsF_test.f	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpUnitsF_test.f	(revision 6168)
@@ -0,0 +1,34 @@
+c ----------------------------------------------------------------------
+c  TEST: Fortran's interface to RpUnits.
+c
+c  Basic units conversion tests for the RpUnits portion of Rappture
+c  written in Fortran.
+c ======================================================================
+c  AUTHOR:  Derrick Kearney, Purdue University
+c  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+c
+c  See the file "license.terms" for information on usage and
+c  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+c ======================================================================
+      program units_test
+        IMPLICIT NONE
+
+        integer rp_units_convert_str
+        integer rp_units_convert_dbl
+
+        double precision dblVal
+        character*40 retStr
+        integer retVal
+
+        retVal = rp_units_convert_str("72F","C",retStr)
+        print *,"72F = ",retStr
+        print *,"correct retVal = 22.222C",retVal
+        print *,"retVal = ",retVal
+
+        retVal = rp_units_convert_dbl("72F","C",dblVal)
+        print *,"72F = ",dblVal, " (no units)"
+        print *,"correct retVal = 22.222",retVal
+        print *,"retVal = ",retVal
+
+      end program units_test
+
Index: /tags/1.6.0/oldtest/src/RpUnits_test.cc
===================================================================
--- /tags/1.6.0/oldtest/src/RpUnits_test.cc	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpUnits_test.cc	(revision 6168)
@@ -0,0 +1,511 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpUnits.h"
+#include <list>
+#include <string>
+#include <cassert>
+
+
+void success() 
+{
+    printf ("Test Successful\n");
+}
+
+void fail() 
+{
+    printf ("Test FAILED !!!!!!!!!!!!!!!!!\n");
+    exit(-1);
+}
+
+// compare_numbers()
+
+int main()
+{
+    double value = 0.0;
+    std::string strValue;
+    int result = 0;
+
+    //
+    // use main to test class functionality
+    // 
+
+    // test define(units,basis)
+    // this should create an object of type RpUnits
+    // with the units of "m" and basis should be NULL 
+    // which tells us that this object represents a fundamental system
+    // of units
+    //
+    printf ("=============== TEST 1 ===============\n");
+
+    const RpUnits* meters = RpUnits::find("m");
+    const RpUnits* cmeters = RpUnits::find("cm");
+    const RpUnits* angstrom = RpUnits::find("A");
+
+    value = angstrom->convert(meters,1.0,&result);
+    std::cout << "1 angstrom = " << value << " meters" << std::endl;
+    std::cout << "result = " << result << std::endl;
+
+    result = 0;
+    value = cmeters->convert(angstrom,1e-8,&result);
+    std::cout << "1.0e-8 centimeter = " << value << " angstroms" << std::endl;
+
+
+    const RpUnits* fahrenheit  = RpUnits::find("F");
+    const RpUnits* celcius  = RpUnits::find("C");
+    const RpUnits* kelvin  = RpUnits::find("K");
+
+    value = fahrenheit->convert(celcius,72,&result);
+    std::cout << "72 degrees fahrenheit = " << value << " degrees celcius" << std::endl;
+
+    value = celcius->convert(fahrenheit,value,&result);
+    std::cout << "22.222 degrees celcius = " << value << " degrees fahrenheit" << std::endl;
+
+    value = celcius->convert(kelvin,20,&result);
+    std::cout << "20 degrees celcius = " << value << " kelvin" << std::endl;
+
+    value = kelvin->convert(celcius,300,&result);
+    std::cout << "300 kelvin = " << value << " degrees celcius" << std::endl;
+
+/*
+    // test getUnits() member function of objects of type RpUnits
+    // this test should return the units of "m" for the oject
+    // meters
+    //
+    printf ("=============== TEST 2 ===============\n");
+    (meters->getUnits().c_str()) ? success() : fail();
+    printf("meters units = :%s:\n", meters->getUnits().c_str());
+    
+    // test getBasis() functionality of objects of type RpUnits
+    // create an object of type RpUnits and associate it with the 
+    // meters RpUnits object as its basis.
+    // print out what it reports its basis is.
+    //
+    printf ("=============== TEST 3 ===============\n");
+    std::string t3units = "cm";
+    // RpUnits * centimeters = RpUnits::define("cm", meters);
+    RpUnits * centimeters = RpUnits::define(t3units, meters);
+    (centimeters) ? success() : fail();
+    printf("cm units = :%s:\n", centimeters->getUnits().c_str() );
+    printf("cm basis = :%s:\n", centimeters->getBasis()->getUnits().c_str() );
+
+    // test makeBasis()
+    //
+    printf ("=============== TEST 4.1 ===============\n");
+    // value = centimeters->makeBasis(100.00);
+    value = 100.00;
+    failTest = centimeters->makeBasis(&value);
+    (value == 1 && !failTest) ? success() : fail();
+    printf("100 cm = :%f: meters\n", value);
+
+    // test makeBasis() with a list of values, all the same units
+    // 
+    printf ("=============== TEST 4.2 ===============\n");
+//    
+//    double * valueArr = (double *) calloc(12,sizeof(double));
+//    if (!valueArr) {
+//        // complain that malloc failed
+//        exit(-2);
+//    }
+//
+//    valueArr = centimeters->makeBasis(100.00);
+//
+    // (value == 1) ? success() : fail();
+    // printf("100 cm = :%f: meters\n", value);
+
+    // test makeBasis() with a list of values, all different units
+    // 
+    printf ("=============== TEST 4.3 ===============\n");
+    // value = centimeters->makeBasis(100.00);
+    // (value == 1) ? success() : fail();
+    // printf("100 cm = :%f: meters\n", value);
+
+*/
+
+    printf ("=============== TEST 4.4 ===============\n");
+
+    const RpUnits * millimeter = RpUnits::find("mm");
+    const RpUnits * micrometer = RpUnits::find("um");
+    const RpUnits * nanometer  = RpUnits::find("nm");
+    const RpUnits * picometer  = RpUnits::find("pm");
+    const RpUnits * femtometer = RpUnits::find("fm");
+    const RpUnits * attometer  = RpUnits::find("am");
+    const RpUnits * kilometer  = RpUnits::find("km");
+    const RpUnits * megameter  = RpUnits::find("Mm");
+    const RpUnits * gigameter  = RpUnits::find("Gm");
+    const RpUnits * terameter  = RpUnits::find("Tm");
+    const RpUnits * petameter  = RpUnits::find("Pm");
+
+    value = 1.0e+3;
+    millimeter->makeBasis(&value);
+    (value == 1) ? success() : fail();
+    printf("1.0e3 mm = :%f: meters\n", value);
+
+    value = 1.0e+6; 
+    micrometer->makeBasis(&value);
+    (value == 1) ? success() : fail();
+    printf("1.0e6 um = :%f: meters\n", value);
+
+    value = 1.0e+9;
+    nanometer->makeBasis(&value);
+    (value == 1) ? success() : fail();
+    printf("1.0e9 nm = :%f: meters\n", value);
+
+    value = 1.0e+12;
+    picometer->makeBasis(&value);
+    (value == 1) ? success() : fail();
+    printf("1.0e12 pm = :%f: meters\n", value);
+
+    value = 1.0e+15;
+    femtometer->makeBasis(&value);
+    (value == 1) ? success() : fail();
+    printf("1.0e15 fm = :%f: meters\n", value);
+
+    value = 1.0e+18;
+    attometer->makeBasis(&value);
+    (value == 1) ? success() : fail();
+    printf("1.0e18 am = :%f: meters\n", value);
+
+    value = 1.0e-3;
+    kilometer->makeBasis(&value);
+    (value == 1) ? success() : fail();
+    printf("1.0e-3 km = :%f: meters\n", value);
+
+    value = 1.0e-6;
+    megameter->makeBasis(&value);
+    (value == 1) ? success() : fail();
+    printf("1.0e-6 Mm = :%f: meters\n", value);
+
+    value = 1.0e-9;
+    gigameter->makeBasis(&value);
+    (value == 1) ? success() : fail();
+    printf("1.0e-9 Gm = :%f: meters\n", value);
+
+    value = 1.0e-12;
+    terameter->makeBasis(&value);
+    (value == 1) ? success() : fail();
+    printf("1.0e-12 Gm = :%f: meters\n", value);
+
+    value = 1.0e-15;
+    petameter->makeBasis(&value);
+    (value == 1) ? success() : fail();
+    printf("1.0e-15 Pm = :%f: meters\n", value);
+
+    value = 2;
+    meters->makeBasis(&value);
+    (value == 2) ? success() : fail();
+    printf("2 m = :%f: meters\n", value);
+
+    printf ("=============== TEST 5 ===============\n");
+
+    strValue = RpUnits::convert("72F","C",1);
+    std::cout << "result = " << result << std::endl;
+    std::cout << "strValue convert(72F,C,1) = " << strValue << std::endl;
+
+    strValue = RpUnits::convert("72F","C",0);
+    std::cout << "result = " << result << std::endl;
+    std::cout << "strValue convert(72F,C,0) = " << strValue << std::endl;
+
+    strValue = RpUnits::convert("20C","K",1);
+    std::cout << "result = " << result << std::endl;
+    std::cout << "strValue convert(20C,K,1) = " << strValue << std::endl;
+
+    strValue = RpUnits::convert("20C","K",0);
+    std::cout << "result = " << result << std::endl;
+    std::cout << "strValue convert(20C,K,1) = " << strValue << std::endl;
+
+    strValue = RpUnits::convert("300K","C",1);
+    std::cout << "result = " << result << std::endl;
+    std::cout << "strValue convert(300K,C,1) = " << strValue << std::endl;
+
+    strValue = RpUnits::convert("300K","C",0);
+    std::cout << "result = " << result << std::endl;
+    std::cout << "strValue convert(300K,C,0) = " << strValue << std::endl;
+
+
+
+
+    const RpUnits* eV  = RpUnits::find("eV");
+    const RpUnits* joules  = RpUnits::find("J");
+
+    value = joules->convert(eV,1,&result);
+    std::cout << "1 joule = " << value << " electronVolts" << std::endl;
+
+    value = eV->convert(joules,1,&result);
+    std::cout << "1 electronVolt = " << value << " joules" << std::endl;
+
+    strValue = RpUnits::convert("10eV","J",1);
+    std::cout << "strValue convert(10eV,J,1) = " << strValue << std::endl;
+
+    strValue = RpUnits::convert("1eV","J",0);
+    std::cout << "strValue convert(1eV,J,0) = " << strValue << std::endl;
+
+    strValue = RpUnits::convert("10J","eV",1);
+    std::cout << "strValue convert(10J,eV,1) = " << strValue << std::endl;
+
+    strValue = RpUnits::convert("1J","eV",0);
+    std::cout << "strValue convert(1J,eV,0) = " << strValue << std::endl;
+
+
+
+
+
+
+    std::cout << "TESTING COPY CONSTRUCTOR" << std::endl;
+
+    RpUnits *origRpUnits = RpUnits::define("obj2", NULL, "");
+    RpUnits copyRpUnits = *origRpUnits;
+
+    std::cout << "origRpUnits = " << origRpUnits->getUnitsName() << std::endl;
+    std::cout << "copyRpUnits = " << copyRpUnits.getUnitsName() << std::endl;
+    std::cout << "modifying origRpUnits" << std::endl;
+    delete origRpUnits;
+    origRpUnits = RpUnits::define("obj3",NULL, "");
+    std::cout << "origRpUnits = " << origRpUnits->getUnitsName() << std::endl;
+    std::cout << "copyRpUnits = " << copyRpUnits.getUnitsName() << std::endl;
+    std::cout << "deleting origRpUnits" << std::endl;
+    delete origRpUnits;
+    std::cout << "copyRpUnits = " << copyRpUnits.getUnitsName() << std::endl;
+
+    std::cout << "TESTING COPY ASSIGNMENT OPERATOR" << std::endl;
+
+    RpUnits *testRpUnits = RpUnits::define("test2", NULL, "");
+    copyRpUnits = *testRpUnits;
+
+    std::cout << "testRpUnits = " << testRpUnits->getUnitsName() << std::endl;
+    std::cout << "copyRpUnits = " << copyRpUnits.getUnitsName() << std::endl;
+    std::cout << "modifying testRpUnits" << std::endl;
+    delete testRpUnits;
+    testRpUnits = RpUnits::define("test3",NULL, "");
+    std::cout << "testRpUnits = " << testRpUnits->getUnitsName() << std::endl;
+    std::cout << "copyRpUnits = " << copyRpUnits.getUnitsName() << std::endl;
+    std::cout << "deleting testRpUnits" << std::endl;
+    delete testRpUnits;
+    std::cout << "copyRpUnits = " << copyRpUnits.getUnitsName() << std::endl;
+
+
+    // test deleting a const object
+
+    const RpUnits* myobj = RpUnits::define("myunit",NULL, "");
+    delete myobj;
+
+    // test /cm2
+    // std::cout << "convert (3m3 -> cm3)     = " << RpUnits::convert("3m3","cm3",0) << std::endl;
+    // std::cout << "convert (3/m3 -> /cm3)   = " << RpUnits::convert("3/m3","/cm3",0) << std::endl;
+    // std::cout << "convert (300cm3 -> m3)   = " << RpUnits::convert("300cm3","m3",0) << std::endl;
+    // std::cout << "convert (300/cm3 -> /m3) = " << RpUnits::convert("300/cm3","/m3",0) << std::endl;
+
+    std::cout << "convert (3m3 -> cm3)     = " << RpUnits::convert("3m3","cm3",0) << std::endl;
+    std::cout << "convert (3/m3 -> /cm3)   = " << RpUnits::convert("3/m3","/cm3",0) << std::endl;
+    std::cout << "convert (300cm3 -> m3)   = " << RpUnits::convert("300cm3","m3",0) << std::endl;
+    std::cout << "convert (300/cm3 -> /m3) = " << RpUnits::convert("300/cm3","/m3",0) << std::endl;
+    std::cout << "convert (72F -> 22.22C) = " << RpUnits::convert("72F","C",0) << std::endl;
+    std::cout << "convert (5J -> 3.12075e+28neV) = " << RpUnits::convert("5J","neV",0) << std::endl;
+    std::cout << "convert (5J2 -> 1.9478e+56neV2) = " << RpUnits::convert("5J2","neV2",0) << std::endl;
+
+    // testing complex units
+    std::cout << "convert (1cm2/Vs -> 0.0001m2/Vs) = " << RpUnits::convert("1cm2/Vs","m2/Vs",0) << std::endl;
+    std::cout << "convert (1cm2/Vs -> 0.1m2/kVs) = " << RpUnits::convert("1cm2/Vs","m2/kVs",0) << std::endl;
+    std::cout << "convert (1cm2/Vs -> 1e-7m2/kVus) = " << RpUnits::convert("1cm2/Vs","m2/kVus",0) << std::endl;
+
+    const RpUnits* myMeters = RpUnits::find("cm");
+    std::list<std::string> convList = myMeters->getCompatible();
+    std::list<std::string>::iterator convListIter;
+
+    std::cout << myMeters->getUnitsName() << " is of type: " << myMeters->getType() << std::endl;
+    std::cout << myMeters->getUnitsName() << " is compatible with: " << std::endl;
+    convListIter = convList.begin();
+    while (convListIter != convList.end()) {
+        std::cout << *convListIter << std::endl;
+        convListIter++;
+    }
+
+    std::cout << "convert(\"5.00mm\",\"\",1) = " << RpUnits::convert("5.00mm","",1) << std::endl;
+    std::cout << "convert(\"5.00mm\",\"\",0) = " << RpUnits::convert("5.00mm","",0) << std::endl;
+
+    // day hour min sec test
+    assert((RpUnits::convert("5.00s","s",RpUnits::UNITS_ON)) == "5s");
+    std::cout << "convert(\"5.00s\",\"s\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00s","s",RpUnits::UNITS_OFF)) == "5");
+    std::cout << "convert(\"5.00s\",\"s\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00min","s",RpUnits::UNITS_ON)) == "300s");
+    std::cout << "convert(\"5.00min\",\"s\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00min","s",RpUnits::UNITS_OFF)) == "300");
+    std::cout << "convert(\"5.00min\",\"s\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00h","s",RpUnits::UNITS_ON)) == "18000s");
+    std::cout << "convert(\"5.00h\",\"s\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00h","s",RpUnits::UNITS_OFF)) == "18000");
+    std::cout << "convert(\"5.00h\",\"s\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00d","s",RpUnits::UNITS_ON)) == "432000s");
+    std::cout << "convert(\"5.00d\",\"s\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00d","s",RpUnits::UNITS_OFF)) == "432000");
+    std::cout << "convert(\"5.00d\",\"s\",UNITS_OFF) passed" << std::endl;
+
+    assert((RpUnits::convert("5.00s","min",RpUnits::UNITS_ON)) == "0.0833333min");
+    std::cout << "convert(\"5.00s\",\"min\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00s","min",RpUnits::UNITS_OFF)) == "0.0833333");
+    std::cout << "convert(\"5.00s\",\"min\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00min","min",RpUnits::UNITS_ON)) == "5min");
+    std::cout << "convert(\"5.00min\",\"min\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00min","min",RpUnits::UNITS_OFF)) == "5");
+    std::cout << "convert(\"5.00min\",\"min\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00h","min",RpUnits::UNITS_ON)) == "300min");
+    std::cout << "convert(\"5.00h\",\"min\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00h","min",RpUnits::UNITS_OFF)) == "300");
+    std::cout << "convert(\"5.00h\",\"min\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00d","min",RpUnits::UNITS_ON)) == "7200min");
+    std::cout << "convert(\"5.00d\",\"min\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00d","min",RpUnits::UNITS_OFF)) == "7200");
+    std::cout << "convert(\"5.00d\",\"min\",UNITS_OFF) passed" << std::endl;
+
+    assert((RpUnits::convert("5.00s","h",RpUnits::UNITS_ON)) == "0.00138889h");
+    std::cout << "convert(\"5.00s\",\"h\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00s","h",RpUnits::UNITS_OFF)) == "0.00138889");
+    std::cout << "convert(\"5.00s\",\"h\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00min","h",RpUnits::UNITS_ON)) == "0.0833333h");
+    std::cout << "convert(\"5.00min\",\"h\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00min","h",RpUnits::UNITS_OFF)) == "0.0833333");
+    std::cout << "convert(\"5.00min\",\"h\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00h","h",RpUnits::UNITS_ON)) == "5h");
+    std::cout << "convert(\"5.00h\",\"h\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00h","h",RpUnits::UNITS_OFF)) == "5");
+    std::cout << "convert(\"5.00h\",\"h\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00d","h",RpUnits::UNITS_ON)) == "120h");
+    std::cout << "convert(\"5.00d\",\"h\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00d","h",RpUnits::UNITS_OFF)) == "120");
+    std::cout << "convert(\"5.00d\",\"h\",UNITS_OFF) passed" << std::endl;
+
+    assert((RpUnits::convert("5.00s","d",RpUnits::UNITS_ON)) == "5.78704e-05d");
+    std::cout << "convert(\"5.00s\",\"d\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00s","d",RpUnits::UNITS_OFF)) == "5.78704e-05");
+    std::cout << "convert(\"5.00s\",\"d\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00min","d",RpUnits::UNITS_ON)) == "0.00347222d");
+    std::cout << "convert(\"5.00min\",\"d\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00min","d",RpUnits::UNITS_OFF)) == "0.00347222");
+    std::cout << "convert(\"5.00min\",\"d\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00h","d",RpUnits::UNITS_ON)) == "0.208333d");
+    std::cout << "convert(\"5.00h\",\"d\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00h","d",RpUnits::UNITS_OFF)) == "0.208333");
+    std::cout << "convert(\"5.00h\",\"d\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00d","d",RpUnits::UNITS_ON)) == "5d");
+    std::cout << "convert(\"5.00d\",\"d\",UNITS_ON)  passed" << std::endl;
+    assert((RpUnits::convert("5.00d","d",RpUnits::UNITS_OFF)) == "5");
+    std::cout << "convert(\"5.00d\",\"d\",UNITS_OFF) passed" << std::endl;
+
+
+
+    assert((RpUnits::convert("5.00bar","Pa",RpUnits::UNITS_OFF)) == "500000");
+    std::cout << "convert(\"5.00bar\",\"Pa\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00bar","Pa",RpUnits::UNITS_ON)) == "500000Pa");
+    std::cout << "convert(\"5.00bar\",\"Pa\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00bar","atm",RpUnits::UNITS_OFF)) == "4.9346");
+    std::cout << "convert(\"5.00bar\",\"atm\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00bar","atm",RpUnits::UNITS_ON)) == "4.9346atm");
+    std::cout << "convert(\"5.00bar\",\"atm\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00bar","torr",RpUnits::UNITS_OFF)) == "3750.3");
+    std::cout << "convert(\"5.00bar\",\"torr\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00bar","torr",RpUnits::UNITS_ON)) == "3750.3torr");
+    std::cout << "convert(\"5.00bar\",\"torr\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00bar","psi",RpUnits::UNITS_OFF)) == "72.52");
+    std::cout << "convert(\"5.00bar\",\"psi\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00bar","psi",RpUnits::UNITS_ON)) == "72.52psi");
+    std::cout << "convert(\"5.00bar\",\"psi\",UNITS_ON) passed" << std::endl;
+
+
+
+
+    assert((RpUnits::convert("5.00atm","bar",RpUnits::UNITS_OFF)) == "5.06627");
+    std::cout << "convert(\"5.00atm\",\"bar\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00atm","bar",RpUnits::UNITS_ON)) == "5.06627bar");
+    std::cout << "convert(\"5.00atm\",\"bar\",UNITS_ON) passed" << std::endl;
+    /*
+    assert((RpUnits::convert("5.00atm","Pa",RpUnits::UNITS_OFF)) == "506625.12");
+    std::cout << "convert(\"5.00atm\",\"Pa\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00atm","Pa",RpUnits::UNITS_ON)) == "506625.12Pa");
+    std::cout << "convert(\"5.00atm\",\"Pa\",UNITS_ON) passed" << std::endl;
+    */
+    assert((RpUnits::convert("5.00atm","torr",RpUnits::UNITS_OFF)) == "3800");
+    std::cout << "convert(\"5.00atm\",\"torr\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00atm","torr",RpUnits::UNITS_ON)) == "3800torr");
+    std::cout << "convert(\"5.00atm\",\"torr\",UNITS_ON) passed" << std::endl;
+
+
+
+
+    assert((RpUnits::convert("5.00Pa","bar",RpUnits::UNITS_OFF)) == "5e-05");
+    std::cout << "convert(\"5.00Pa\",\"bar\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00Pa","bar",RpUnits::UNITS_ON)) == "5e-05bar");
+    std::cout << "convert(\"5.00Pa\",\"bar\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00Pa","atm",RpUnits::UNITS_OFF)) == "4.9346e-05");
+    std::cout << "convert(\"5.00Pa\",\"atm\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00Pa","atm",RpUnits::UNITS_ON)) == "4.9346e-05atm");
+    std::cout << "convert(\"5.00Pa\",\"atm\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00Pa","torr",RpUnits::UNITS_OFF)) == "0.037503");
+    std::cout << "convert(\"5.00Pa\",\"torr\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00Pa","torr",RpUnits::UNITS_ON)) == "0.037503torr");
+    std::cout << "convert(\"5.00Pa\",\"torr\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00Pa","psi",RpUnits::UNITS_OFF)) == "0.0007252");
+    std::cout << "convert(\"5.00Pa\",\"psi\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00Pa","psi",RpUnits::UNITS_ON)) == "0.0007252psi");
+    std::cout << "convert(\"5.00Pa\",\"psi\",UNITS_ON) passed" << std::endl;
+
+
+
+
+    assert((RpUnits::convert("5.00torr","bar",RpUnits::UNITS_OFF)) == "0.00666613");
+    std::cout << "convert(\"5.00torr\",\"bar\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00torr","bar",RpUnits::UNITS_ON)) == "0.00666613bar");
+    std::cout << "convert(\"5.00torr\",\"bar\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00torr","Pa",RpUnits::UNITS_OFF)) == "666.613");
+    std::cout << "convert(\"5.00torr\",\"Pa\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00torr","Pa",RpUnits::UNITS_ON)) == "666.613Pa");
+    std::cout << "convert(\"5.00torr\",\"Pa\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00torr","atm",RpUnits::UNITS_OFF)) == "0.006579");
+    std::cout << "convert(\"5.00torr\",\"atm\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00torr","atm",RpUnits::UNITS_ON)) == "0.006579atm");
+    std::cout << "convert(\"5.00torr\",\"atm\",UNITS_ON) passed" << std::endl;
+    assert((RpUnits::convert("5.00torr","psi",RpUnits::UNITS_OFF)) == "0.096685");
+    std::cout << "convert(\"5.00torr\",\"psi\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00torr","psi",RpUnits::UNITS_ON)) == "0.096685psi");
+    std::cout << "convert(\"5.00torr\",\"psi\",UNITS_ON) passed" << std::endl;
+
+
+    assert((RpUnits::convert("5.00psi","bar",RpUnits::UNITS_OFF)) == "0.344738");
+    std::cout << "convert(\"5.00psi\",\"bar\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00psi","bar",RpUnits::UNITS_ON)) == "0.344738bar");
+    std::cout << "convert(\"5.00psi\",\"bar\",UNITS_ON) passed" << std::endl;
+    /*
+    assert((RpUnits::convert("5.00psi","Pa",RpUnits::UNITS_OFF)) == "34473.8129155");
+    std::cout << "convert(\"5.00psi\",\"Pa\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00psi","Pa",RpUnits::UNITS_ON)) == "34473.8129155Pa");
+    std::cout << "convert(\"5.00psi\",\"Pa\",UNITS_ON) passed" << std::endl;
+    */
+    assert((RpUnits::convert("5.00psi","torr",RpUnits::UNITS_OFF)) == "258.575");
+    std::cout << "convert(\"5.00psi\",\"torr\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00psi","torr",RpUnits::UNITS_ON)) == "258.575torr");
+    std::cout << "convert(\"5.00psi\",\"torr\",UNITS_ON) passed" << std::endl;
+
+
+
+
+    assert((RpUnits::convert("5.00psi","kPa",RpUnits::UNITS_OFF)) == "34.4738");
+    std::cout << "convert(\"5.00psi\",\"kPa\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00psi","kPa",RpUnits::UNITS_ON)) == "34.4738kPa");
+    std::cout << "convert(\"5.00psi\",\"kPa\",UNITS_ON) passed" << std::endl;
+
+
+
+
+    assert((RpUnits::convert("5.00torr","mmHg",RpUnits::UNITS_OFF)) == "5");
+    std::cout << "convert(\"5.00torr\",\"mmHg\",UNITS_OFF) passed" << std::endl;
+    assert((RpUnits::convert("5.00torr","mmHg",RpUnits::UNITS_ON)) == "5mmHg");
+    std::cout << "convert(\"5.00torr\",\"mmHg\",UNITS_ON) passed" << std::endl;
+
+    return 0;
+
+}
Index: /tags/1.6.0/oldtest/src/RpVariable_test.cc
===================================================================
--- /tags/1.6.0/oldtest/src/RpVariable_test.cc	(revision 6168)
+++ /tags/1.6.0/oldtest/src/RpVariable_test.cc	(revision 6168)
@@ -0,0 +1,91 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpVariable.h"
+
+int test_getPath(RpVariable* myVariable);
+int test_getDefaultValue(RpVariable* myVariable);
+int test_getCurrentValue(RpVariable* myVariable);
+int test_getLabel(RpVariable* myVariable);
+int test_getDesc(RpVariable* myVariable);
+
+int test_getPath(RpVariable* myVariable)
+{
+    std::cout << "Path " << myVariable->getPath() << std::endl;
+
+    return 1;
+}
+
+int test_getDefaultValue(RpVariable* myVariable)
+{
+    std::cout << "defaultVal " << *((double*) myVariable->getDefaultValue()) << std::endl;
+
+    return 1;
+}
+
+int test_getCurrentValue(RpVariable* myVariable)
+{
+    std::cout << "currentVal " << myVariable->getCurrentValue() << std::endl;
+
+    return 1;
+}
+
+int test_getLabel(RpVariable* myVariable)
+{
+    std::cout << "label " << myVariable->getLabel() << std::endl;
+
+    return 1;
+}
+
+int test_getDesc(RpVariable* myVariable)
+{
+    std::cout << "desc " << myVariable->getDesc() << std::endl;
+
+    return 1;
+}
+
+
+
+int main ()
+{
+
+    RpVariable* T1 = new RpVariable("input.(ambient).(temperature)",new double(300.00));
+    /*
+    RpVariable* T2 = new RpVariable("input.(ambient).(temperature)",
+                                "K",
+                                300.00,
+                                0.00,
+                                1000.00,
+                                "Temperature",
+                                "Ambient Temperature, value between 0 and 1000"
+                                );
+    */
+    
+    test_getPath(T1);
+    test_getDefaultValue(T1);
+//    test_getCurrentValue(T1);
+    test_getLabel(T1);
+    test_getDesc(T1);
+
+    std::cout << std::endl;
+
+    /*
+    test_getPath(T2);
+    test_getUnits(T2);
+    test_getDefaultValue(T2);
+    test_getCurrentValue(T2);
+    test_getMin(T2);
+    test_getMax(T2);
+    test_getLabel(T2);
+    test_getDesc(T2);
+    */
+
+    std::cout << std::endl;
+
+    return 0;
+}
Index: /tags/1.6.0/oldtest/src/matlab/test_children.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_children.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_children.m	(revision 6168)
@@ -0,0 +1,35 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_children(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_children(lib,path)
+    err = 1;
+    prevNodeHandle = 0;
+    nodeHandle = -1;
+
+    disp(sprintf('\n\nTESTING rpLibChildren\n'));
+
+    while nodeHandle ~= 0
+        [nodeHandle,err] = rpLibChildren(lib,path,prevNodeHandle);
+        prevNodeHandle = nodeHandle;
+
+        if ~err
+            if nodeHandle
+                [compStr,err] = rpLibNodeComp(nodeHandle);
+                disp(sprintf('%s compStr = %s\n', path, compStr));
+            end
+        else
+            disp(sprintf('Error within rpLibChildren function\n'));
+        end
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_children_bytype.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_children_bytype.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_children_bytype.m	(revision 6168)
@@ -0,0 +1,35 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_children_bytype(lib, path, type)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_children_bytype(lib,path,type)
+    err = 1;
+    prevNodeHandle = 0;
+    nodeHandle = -1;
+
+    disp(sprintf('\n\nTESTING rpLibChildrenByType\n'));
+
+    while nodeHandle ~= 0
+        [nodeHandle,err] = rpLibChildrenByType(lib,path,prevNodeHandle,type);
+        prevNodeHandle = nodeHandle;
+
+        if ~err
+            if nodeHandle
+                [compStr,err] = rpLibNodeComp(nodeHandle);
+                disp(sprintf ('%s compStr = %s\n', path, compStr));
+            end
+        else
+            disp(sprintf('Error within rpLibChildrenByType function\n'));
+        end
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_convert.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_convert.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_convert.m	(revision 6168)
@@ -0,0 +1,25 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_convert(fromVal, toUnitsName, showUnits)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_convert(fromVal, toUnitsName, showUnits)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpUnitsConvert: convert %s to %s, showUnits: %i\n', fromVal, toUnitsName, showUnits));
+
+    [retStr,err] = rpUnitsConvert(fromVal, toUnitsName, showUnits);
+    if ~err
+        disp(sprintf('%s = %s\n',fromVal,retStr));
+    else
+        disp(sprintf('Error within rpUnitsConvert function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_convert_dbl.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_convert_dbl.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_convert_dbl.m	(revision 6168)
@@ -0,0 +1,25 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_convert_dbl(fromVal, toUnitsName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_convert_dbl(fromVal, toUnitsName)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpUnitsConvertDbl: convert %s to %s\n', fromVal, toUnitsName));
+
+    [retVal,err] = rpUnitsConvertDbl(fromVal, toUnitsName);
+    if ~err
+        disp(sprintf('%s = %e\n',fromVal,retVal));
+    else
+        disp(sprintf('Error within rpUnitsConvertDbl function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_convert_obj_dbl.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_convert_obj_dbl.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_convert_obj_dbl.m	(revision 6168)
@@ -0,0 +1,25 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_convert_obj_dbl(fromVal, toUnitsName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_convert_dbl(fromVal, toUnitsName)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpUnitsConvertDbl: convert %s to %s\n', fromVal, toUnitsName));
+
+    [retVal,err] = rpUnitsConvertDbl(fromVal, toUnitsName);
+    if ~err
+        disp(sprintf('%s = %e\n',fromVal,retVal));
+    else
+        disp(sprintf('Error within rpUnitsConvertDbl function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_convert_obj_str.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_convert_obj_str.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_convert_obj_str.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_element(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpElement\n'));
+    [nodeHandle,err] = rpElement(lib,path);
+    if nodeHandle && ~err
+        [compStr,err] = rpNodeComp(nodeHandle);
+        disp(sprintf ('%s compStr = %s\n', path, compStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [idStr, err]  = rpNodeId(nodeHandle);
+        disp(sprintf ('%s idStr   = %s\n', path, idStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [typeStr,err] = rpNodeType(nodeHandle);
+        disp(sprintf ('%s typeStr = %s\n', path, typeStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+    else
+        disp(sprintf('Error within rpElement function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_convert_str.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_convert_str.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_convert_str.m	(revision 6168)
@@ -0,0 +1,25 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_convert(fromVal, toUnitsName, showUnits)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_convert_str(fromVal, toUnitsName, showUnits)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpUnitsConvertStr: convert %s to %s, showUnits: %i\n', fromVal, toUnitsName, showUnits));
+
+    [retStr,err] = rpUnitsConvertStr(fromVal, toUnitsName, showUnits);
+    if ~err
+        disp(sprintf('%s = %s\n',fromVal,retStr));
+    else
+        disp(sprintf('Error within rpUnitsConvert function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_define_unit.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_define_unit.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_define_unit.m	(revision 6168)
@@ -0,0 +1,30 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_define_unit(unitSymbol, basisHandle)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_define_unit(unitSymbol, basisHandle)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpUnitsDefineUnit\n'));
+    [unitsHandle,err] = rpUnitsDefineUnit(unitSymbol, basisHandle);
+    if ~err
+
+        if unitsHandle
+            disp(sprintf ('Successfully Created %s\n',unitSymbol));
+        else
+            disp(sprintf ('FAILED Creating %s\n',unitSymbol));
+        end
+
+    else
+        disp(sprintf('Error within rpUnitsDefineUnits function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_element.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_element.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_element.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_element(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibElement\n'));
+    [nodeHandle,err] = rpLibElement(lib,path);
+    if (nodeHandle && ~err)
+        [compStr,err] = rpLibNodeComp(nodeHandle);
+        disp(sprintf ('%s compStr = %s\n', path, compStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [idStr, err]  = rpLibNodeId(nodeHandle);
+        disp(sprintf ('%s idStr   = %s\n', path, idStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [typeStr,err] = rpLibNodeType(nodeHandle);
+        disp(sprintf ('%s typeStr = %s\n', path, typeStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+    else
+        disp(sprintf('Error within rpLibElement function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_element_comp.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_element_comp.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_element_comp.m	(revision 6168)
@@ -0,0 +1,24 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_element_comp(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element_comp(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibElementAsComp\n'));
+    [compStr,err] = rpLibElementAsComp(lib,path);
+    if (~strcmp(compStr,'') && ~err)
+        disp(sprintf ('%s compStr = %s\n', path, compStr));
+    else
+        disp(sprintf('Error within rpLibElementAsComp function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_element_id.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_element_id.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_element_id.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_element(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpElement\n'));
+    [nodeHandle,err] = rpElement(lib,path);
+    if nodeHandle && ~err
+        [compStr,err] = rpNodeComp(nodeHandle);
+        disp(sprintf ('%s compStr = %s\n', path, compStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [idStr, err]  = rpNodeId(nodeHandle);
+        disp(sprintf ('%s idStr   = %s\n', path, idStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [typeStr,err] = rpNodeType(nodeHandle);
+        disp(sprintf ('%s typeStr = %s\n', path, typeStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+    else
+        disp(sprintf('Error within rpElement function\n');
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_element_object.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_element_object.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_element_object.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_element(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpElement\n'));
+    [nodeHandle,err] = rpElement(lib,path);
+    if nodeHandle && ~err
+        [compStr,err] = rpNodeComp(nodeHandle);
+        disp(sprintf ('%s compStr = %s\n', path, compStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [idStr, err]  = rpNodeId(nodeHandle);
+        disp(sprintf ('%s idStr   = %s\n', path, idStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [typeStr,err] = rpNodeType(nodeHandle);
+        disp(sprintf ('%s typeStr = %s\n', path, typeStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+    else
+        disp(sprintf('Error within rpElement function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_element_type.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_element_type.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_element_type.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_element(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpElement\n'));
+    [nodeHandle,err] = rpElement(lib,path);
+    if nodeHandle && ~err
+        [compStr,err] = rpNodeComp(nodeHandle);
+        disp(sprintf ('%s compStr = %s\n', path, compStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [idStr, err]  = rpNodeId(nodeHandle);
+        disp(sprintf ('%s idStr   = %s\n', path, idStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [typeStr,err] = rpNodeType(nodeHandle);
+        disp(sprintf ('%s typeStr = %s\n', path, typeStr));
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+    else
+        disp(sprintf('Error within rpElement function\n');
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_find.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_find.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_find.m	(revision 6168)
@@ -0,0 +1,28 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_find(unitSymbol)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_find(unitSymbol)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpUnitsFind\n'));
+    [nodeHandle,err] = rpUnitsFind(unitSymbol);
+    if ~err
+        if nodeHandle
+            disp(sprintf ('rpUnitsFind Successful\n'));
+        else
+            disp(sprintf ('rpUnitsFind FAILED\n'));
+        end
+    else
+        disp(sprintf('Error within rpElement function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_get.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_get.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_get.m	(revision 6168)
@@ -0,0 +1,28 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_get(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpGet\n'));
+    [retStr,err] = rpLibGet(lib,path);
+    if ~err
+        if ~strcmp(retStr,'')
+            disp(sprintf ('rpGet Successful: %s\n',retStr));
+        else
+            disp(sprintf ('rpGet FAILED\n'));
+        end
+    else
+        disp(sprintf('Error within rpGet function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_get_basis.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_get_basis.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_get_basis.m	(revision 6168)
@@ -0,0 +1,36 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_get_basis(unitName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_basis(unitName)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpUnitsGetBasis\n'));
+    [unitHandle,err] = rpUnitsFind(unitName);
+    if ~err && unitHandle
+        [basisHandle,err] = rpUnitsGetBasis(unitHandle);
+        if ~err
+            if basisHandle > 0
+                [retStr,err] = rpUnitsGetUnitsName(basisHandle);
+                disp(sprintf ('basisHandle name = %s\n', retStr));
+            elseif basisHandle < 0
+                disp(sprintf ('%s is a basis unit\n', unitName));
+            else
+                disp(sprintf ('rpUnitsGetBasis FAILED\n'));
+            end
+        else
+            disp(sprintf('Error within rpUnitsGetBasis function\n'));
+        end
+    else
+        disp(sprintf ('rpUnitsGetBasis FAILED\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_get_double.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_get_double.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_get_double.m	(revision 6168)
@@ -0,0 +1,24 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_get_double(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_double(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibGetDouble\n'));
+    [retVal,err] = rpLibGetDouble(lib,path);
+    if ~err
+        disp(sprintf ('rpLibGetDouble Successful: %e\n',retVal));
+    else
+        disp(sprintf('Error within rpLibGetDouble function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_get_exponent.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_get_exponent.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_get_exponent.m	(revision 6168)
@@ -0,0 +1,29 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_get_exponent(unitName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_exponent(unitName)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpUnitsGetExponent\n'));
+    [unitHandle,err] = rpUnitsFind(unitName);
+    if ~err && unitHandle
+        [retVal,err] = rpUnitsGetExponent(unitHandle);
+        if ~err
+            disp(sprintf ('Exponent of %s = %e\n', unitName,retVal));
+        else
+            disp(sprintf('Error within rpUnitsGetExponent function\n'));
+        end
+    else
+        disp(sprintf ('rpUnitsGetExponent FAILED\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_get_string.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_get_string.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_get_string.m	(revision 6168)
@@ -0,0 +1,28 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_get_string(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_string(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibGetString\n'));
+    [retStr,err] = rpLibGetString(lib,path);
+    if ~err
+        if ~strcmp(retStr,'')
+            disp(sprintf ('rpLibGetString Successful: %s\n',retStr));
+        else
+            disp(sprintf ('rpLibGetString FAILED\n'));
+        end
+    else
+        disp(sprintf('Error within rpLibGetString function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_get_units.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_get_units.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_get_units.m	(revision 6168)
@@ -0,0 +1,33 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_get_units(unitName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_units(unitName)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpUnitsGetUnits\n'));
+    [unitHandle,err] = rpUnitsFind(unitName);
+    if ~err && unitHandle
+        [retStr,err] = rpUnitsGetUnits(unitHandle);
+        if ~err
+            if ~strcmp(retStr,'')
+                disp(sprintf ('units of %s = %s\n', unitName,retStr));
+            else
+                disp(sprintf ('rpUnitsGetUnits FAILED\n'));
+            end
+        else
+            disp(sprintf('Error within rpUnitsGetUnits function\n'));
+        end
+    else
+        disp(sprintf ('rpUnitsFind FAILED while testing rpUnitsGetUnits\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_get_units_name.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_get_units_name.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_get_units_name.m	(revision 6168)
@@ -0,0 +1,33 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_get_units_name(unitName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_units_name(unitName)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpUnitsGetUnitsName\n'));
+    [unitHandle,err] = rpUnitsFind(unitName);
+    if ~err && unitHandle
+        [retStr,err] = rpUnitsGetUnitsName(unitHandle);
+        if ~err
+            if ~strcmp(retStr,'')
+                disp(sprintf ('units name of %s = %s\n', unitName,retStr));
+            else
+                disp(sprintf ('rpUnitsGetUnitsName FAILED\n'));
+            end
+        else
+            disp(sprintf('Error within rpUnitsGetUnitsName function\n'));
+        end
+    else
+        disp(sprintf ('rpUnitsFind FAILED while testing rpUnitsGetUnitsName\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_make_metric.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_make_metric.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_make_metric.m	(revision 6168)
@@ -0,0 +1,39 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_make_metric(unitName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_make_metric(unitName)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpUnitsMakeMetric\n'));
+    [unitHandle,err] = rpUnitsFind(unitName);
+    if ~err && unitHandle
+        [err] = rpUnitsMakeMetric(unitHandle);
+        if ~err
+            [unitHandle,err] = rpUnitsFind(['c',unitName]);
+            if ~err
+                [retStr,err] = rpUnitsGetUnitsName(unitHandle);
+                if ~err
+                    disp(sprintf ('centi-%s = %s\n', unitName,retStr));
+                else
+                    disp(sprintf('Error in rpUnitsGetUnitsName testing rpUnitsMakeMetric\n'));
+                end
+            else
+                disp(sprintf('Error in rpUnitsFind testing rpUnitsMakeMetric\n'));
+            end
+        else
+            disp(sprintf('Error within rpUnitsMakeMetric function\n'));
+        end
+    else
+        disp(sprintf ('rpUnitsFind FAILED while testing rpUnitsGetUnits\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_node_comp.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_node_comp.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_node_comp.m	(revision 6168)
@@ -0,0 +1,33 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_node_comp(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_node_comp(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibNodeComp\n'));
+    [nodeHandle,err] = rpLibElement(lib,path);
+    if ~err
+        if nodeHandle
+            [compStr,err] = rpLibNodeComp(nodeHandle);
+            if ~err
+                disp(sprintf ('%s compStr = %s\n', path, compStr));
+            else
+                disp(sprintf('Error within rpLibNodeComp function\n'));
+            end
+        else
+            disp(sprintf('rpLibElement returned invalid nodeHandle\n'));
+        end
+    else
+        disp(sprintf('Error within rpLibElement function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_node_id.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_node_id.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_node_id.m	(revision 6168)
@@ -0,0 +1,33 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_node_id(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_node_id(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibNodeId\n'));
+    [nodeHandle,err] = rpLibElement(lib,path);
+    if ~err
+        if nodeHandle
+            [idStr,err] = rpLibNodeId(nodeHandle);
+            if ~err
+                disp(sprintf ('%s idStr = %s\n', path, idStr));
+            else
+                disp(sprintf('Error within rpLibNodeId function\n'));
+            end
+        else
+            disp(sprintf('rpLibElement returned invalid nodeHandle\n'));
+        end
+    else
+        disp(sprintf('Error within rpLibElement function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_node_type.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_node_type.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_node_type.m	(revision 6168)
@@ -0,0 +1,33 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_node_type(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_node_type(lib,path)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibNodeType\n'));
+    [nodeHandle,err] = rpLibElement(lib,path);
+    if ~err
+        if nodeHandle
+            [typeStr,err] = rpLibNodeType(nodeHandle);
+            if ~err
+                disp(sprintf ('%s typeStr = %s\n', path, typeStr));
+            else
+                disp(sprintf('Error within rpLibNodeType function\n'));
+            end
+        else
+            disp(sprintf('rpLibElement returned invalid nodeHandle\n'));
+        end
+    else
+        disp(sprintf('Error within rpLibElement function\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_put.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_put.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_put.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_put(libHandle,path,value,id,append)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_put(libHandle,path,value,append)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibPut\n'));
+    [err] = rpLibPut(libHandle,path,value,append);
+    if ~err
+        [retStr, err] = rpLibGet(libHandle,path);
+        disp(sprintf ('retStr = %s\n',retStr));
+        if ~err
+            if strcmp(retStr,value)
+                disp(sprintf ('rpLibPut Successful\n'));
+            else
+                disp(sprintf ('rpLibPut FAILED\n'));
+            end
+        else
+            disp(sprintf ('rpLibGet returned Error\n'));
+        end
+    else
+        disp(sprintf('Error within rpLibPut\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_put_dbl.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_put_dbl.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_put_dbl.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_put_dbl(libHandle,path,value,append)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_put_dbl(libHandle,path,value,append)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibPutDouble\n'));
+    [err] = rpLibPutDouble(libHandle,path,value,append);
+    if ~err
+        [retVal, err] = rpLibGetDouble(libHandle,path);
+        disp(sprintf ('retVal = %e\n',retVal));
+        if ~err
+            if (retVal == value)
+                disp(sprintf ('rpLibPutDouble Successful\n'));
+            else
+                disp(sprintf ('rpLibPutDouble FAILED\n'));
+            end
+        else
+            disp(sprintf ('rpLibGetDouble returned Error\n'));
+        end
+    else
+        disp(sprintf('Error within rpLibPutDouble\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_put_str.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_put_str.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_put_str.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_put_str(libHandle,path,value,append)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_put_str(libHandle,path,value,append)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibPutString\n'));
+    [err] = rpLibPutString(libHandle,path,value,append);
+    if ~err
+        [retStr, err] = rpLibGet(libHandle,path);
+        disp(sprintf ('retStr = %s\n',retStr));
+        if ~err
+            if strcmp(retStr,value)
+                disp(sprintf ('rpLibPutString Successful\n'));
+            else
+                disp(sprintf ('rpLibPutString FAILED\n'));
+            end
+        else
+            disp(sprintf ('rpLibGet returned Error\n'));
+        end
+    else
+        disp(sprintf('Error within rpLibPutString\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_result.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_result.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_result.m	(revision 6168)
@@ -0,0 +1,24 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_result(lib)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_result(lib)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibResult\n'));
+    [err] = rpLibResult(lib);
+    if ~err
+        disp(sprintf ('rpLibResult Successful\n'));
+    else
+        disp(sprintf('Error within rpLibResult\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/matlab/test_xml.m
===================================================================
--- /tags/1.6.0/oldtest/src/matlab/test_xml.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/matlab/test_xml.m	(revision 6168)
@@ -0,0 +1,24 @@
+% ----------------------------------------------------------------------
+%  TEST: Matlab's Rappture Library Test Functions.
+%
+%   [err] = test_xml(lib)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_xml(lib)
+    err = 1;
+    disp(sprintf('\n\nTESTING rpLibXml\n'));
+    [retStr,err] = rpLibXml(lib);
+    if (~err)
+        disp(sprintf ('rpLibXml Successful: \n%s\n',retStr));
+    else
+        disp(sprintf('Error within rpLibXml\n'));
+    end
+return
Index: /tags/1.6.0/oldtest/src/octave/test_children.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_children.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_children.m	(revision 6168)
@@ -0,0 +1,35 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_children(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_children(lib,path)
+    err = 1;
+    prevNodeHandle = 0;
+    nodeHandle = -1;
+
+    printf("\n\nTESTING rpLibChildren\n");
+
+    while nodeHandle != 0
+        [nodeHandle,err] = rpLibChildren(lib,path,prevNodeHandle);
+        prevNodeHandle = nodeHandle;
+
+        if !err
+            if nodeHandle
+                [compStr,err] = rpLibNodeComp(nodeHandle);
+                printf ("%s compStr = %s\n", path, compStr);
+            end
+        else
+            printf("Error within rpLibChildren function\n");
+        end
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_children_bytype.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_children_bytype.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_children_bytype.m	(revision 6168)
@@ -0,0 +1,35 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_children_bytype(lib, path, type)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_children_bytype(lib,path,type)
+    err = 1;
+    prevNodeHandle = 0;
+    nodeHandle = -1;
+
+    printf("\n\nTESTING rpLibChildrenByType\n");
+
+    while nodeHandle != 0
+        [nodeHandle,err] = rpLibChildrenByType(lib,path,prevNodeHandle,type);
+        prevNodeHandle = nodeHandle;
+
+        if !err
+            if nodeHandle
+                [compStr,err] = rpLibNodeComp(nodeHandle);
+                printf ("%s compStr = %s\n", path, compStr);
+            end
+        else
+            printf("Error within rpLibChildrenByType function\n");
+        end
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_convert.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_convert.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_convert.m	(revision 6168)
@@ -0,0 +1,25 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_convert(fromVal, toUnitsName, showUnits)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_convert(fromVal, toUnitsName, showUnits)
+    err = 1;
+    printf("\n\nTESTING rpUnitsConvert: convert %s to %s, showUnits: %i\n", fromVal, toUnitsName, showUnits);
+
+    [retStr,err] = rpUnitsConvert(fromVal, toUnitsName, showUnits);
+    if !err
+        printf("%s = %s\n",fromVal,retStr);
+    else
+        printf("Error within rpUnitsConvert function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_convert_dbl.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_convert_dbl.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_convert_dbl.m	(revision 6168)
@@ -0,0 +1,25 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_convert_dbl(fromVal, toUnitsName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_convert_dbl(fromVal, toUnitsName)
+    err = 1;
+    printf("\n\nTESTING rpUnitsConvertDbl: convert %s to %s\n", fromVal, toUnitsName);
+
+    [retVal,err] = rpUnitsConvertDbl(fromVal, toUnitsName);
+    if !err
+        printf("%s = %e\n",fromVal,retVal);
+    else
+        printf("Error within rpUnitsConvertDbl function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_convert_obj_dbl.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_convert_obj_dbl.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_convert_obj_dbl.m	(revision 6168)
@@ -0,0 +1,25 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_convert_obj_dbl(fromVal, toUnitsName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_convert_dbl(fromVal, toUnitsName)
+    err = 1;
+    printf("\n\nTESTING rpUnitsConvertDbl: convert %s to %s\n", fromVal, toUnitsName);
+
+    [retVal,err] = rpUnitsConvertDbl(fromVal, toUnitsName);
+    if !err
+        printf("%s = %e\n",fromVal,retVal);
+    else
+        printf("Error within rpUnitsConvertDbl function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_convert_obj_str.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_convert_obj_str.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_convert_obj_str.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_element(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpElement\n");
+    [nodeHandle,err] = rpElement(lib,path);
+    if nodeHandle && !err
+        [compStr,err] = rpNodeComp(nodeHandle);
+        printf ("%s compStr = %s\n", path, compStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [idStr, err]  = rpNodeId(nodeHandle);
+        printf ("%s idStr   = %s\n", path, idStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [typeStr,err] = rpNodeType(nodeHandle);
+        printf ("%s typeStr = %s\n", path, typeStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+    else
+        printf("Error within rpElement function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_convert_str.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_convert_str.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_convert_str.m	(revision 6168)
@@ -0,0 +1,25 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_convert(fromVal, toUnitsName, showUnits)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_convert_str(fromVal, toUnitsName, showUnits)
+    err = 1;
+    printf("\n\nTESTING rpUnitsConvertStr: convert %s to %s, showUnits: %i\n", fromVal, toUnitsName, showUnits);
+
+    [retStr,err] = rpUnitsConvertStr(fromVal, toUnitsName, showUnits);
+    if !err
+        printf("%s = %s\n",fromVal,retStr);
+    else
+        printf("Error within rpUnitsConvert function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_define_unit.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_define_unit.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_define_unit.m	(revision 6168)
@@ -0,0 +1,30 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_define_unit(unitSymbol, basisHandle)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_define_unit(unitSymbol, basisHandle)
+    err = 1;
+    printf("\n\nTESTING rpUnitsDefineUnit\n");
+    [unitsHandle,err] = rpUnitsDefineUnit(unitSymbol, basisHandle);
+    if !err
+
+        if unitsHandle
+            printf ("Successfully Created %s\n",unitSymbol);
+        else
+            printf ("FAILED Creating %s\n",unitSymbol);
+        end
+
+    else
+        printf("Error within rpUnitsDefineUnits function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_element.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_element.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_element.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_element(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpLibElement\n");
+    [nodeHandle,err] = rpLibElement(lib,path);
+    if nodeHandle && !err
+        [compStr,err] = rpLibNodeComp(nodeHandle);
+        printf ("%s compStr = %s\n", path, compStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [idStr, err]  = rpLibNodeId(nodeHandle);
+        printf ("%s idStr   = %s\n", path, idStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [typeStr,err] = rpLibNodeType(nodeHandle);
+        printf ("%s typeStr = %s\n", path, typeStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+    else
+        printf("Error within rpLibElement function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_element_comp.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_element_comp.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_element_comp.m	(revision 6168)
@@ -0,0 +1,24 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_element_comp(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element_comp(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpLibElementAsComp\n");
+    [compStr,err] = rpLibElementAsComp(lib,path);
+    if compStr && !err
+        printf ("%s compStr = %s\n", path, compStr);
+    else
+        printf("Error within rpLibElementAsComp function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_element_id.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_element_id.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_element_id.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_element(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpElement\n");
+    [nodeHandle,err] = rpElement(lib,path);
+    if nodeHandle && !err
+        [compStr,err] = rpNodeComp(nodeHandle);
+        printf ("%s compStr = %s\n", path, compStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [idStr, err]  = rpNodeId(nodeHandle);
+        printf ("%s idStr   = %s\n", path, idStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [typeStr,err] = rpNodeType(nodeHandle);
+        printf ("%s typeStr = %s\n", path, typeStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+    else
+        printf("Error within rpElement function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_element_object.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_element_object.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_element_object.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_element(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpElement\n");
+    [nodeHandle,err] = rpElement(lib,path);
+    if nodeHandle && !err
+        [compStr,err] = rpNodeComp(nodeHandle);
+        printf ("%s compStr = %s\n", path, compStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [idStr, err]  = rpNodeId(nodeHandle);
+        printf ("%s idStr   = %s\n", path, idStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [typeStr,err] = rpNodeType(nodeHandle);
+        printf ("%s typeStr = %s\n", path, typeStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+    else
+        printf("Error within rpElement function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_element_type.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_element_type.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_element_type.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_element(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_element(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpElement\n");
+    [nodeHandle,err] = rpElement(lib,path);
+    if nodeHandle && !err
+        [compStr,err] = rpNodeComp(nodeHandle);
+        printf ("%s compStr = %s\n", path, compStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [idStr, err]  = rpNodeId(nodeHandle);
+        printf ("%s idStr   = %s\n", path, idStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+
+        [typeStr,err] = rpNodeType(nodeHandle);
+        printf ("%s typeStr = %s\n", path, typeStr);
+%        printf ("err = %i nodeHandle = %i\n",err,nodeHandle);
+    else
+        printf("Error within rpElement function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_find.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_find.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_find.m	(revision 6168)
@@ -0,0 +1,28 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_find(unitSymbol)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_find(unitSymbol)
+    err = 1;
+    printf("\n\nTESTING rpUnitsFind\n");
+    [nodeHandle,err] = rpUnitsFind(unitSymbol);
+    if !err
+        if nodeHandle
+            printf ("rpUnitsFind Successful\n");
+        else
+            printf ("rpUnitsFind FAILED\n");
+        end
+    else
+        printf("Error within rpElement function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_get.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_get.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_get.m	(revision 6168)
@@ -0,0 +1,28 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_get(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpGet\n");
+    [retStr,err] = rpLibGet(lib,path);
+    if !err
+        if retStr != ''
+            printf ("rpGet Successful: %s\n",retStr);
+        else
+            printf ("rpGet FAILED\n");
+        end
+    else
+        printf("Error within rpGet function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_get_basis.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_get_basis.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_get_basis.m	(revision 6168)
@@ -0,0 +1,36 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_get_basis(unitName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_basis(unitName)
+    err = 1;
+    printf("\n\nTESTING rpUnitsGetBasis\n");
+    [unitHandle,err] = rpUnitsFind(unitName);
+    if !err && unitHandle
+        [basisHandle,err] = rpUnitsGetBasis(unitHandle);
+        if !err
+            if basisHandle > 0
+                [retStr,err] = rpUnitsGetUnitsName(basisHandle);
+                printf ("basisHandle name = %s\n", retStr);
+            elseif basisHandle < 0
+                printf ("%s is a basis unit\n", unitName);
+            else
+                printf ("rpUnitsGetBasis FAILED\n");
+            end
+        else
+            printf("Error within rpUnitsGetBasis function\n");
+        end
+    else
+        printf ("rpUnitsGetBasis FAILED\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_get_double.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_get_double.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_get_double.m	(revision 6168)
@@ -0,0 +1,24 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_get_double(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_double(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpLibGetDouble\n");
+    [retVal,err] = rpLibGetDouble(lib,path);
+    if !err
+        printf ("rpLibGetDouble Successful: %e\n",retVal);
+    else
+        printf("Error within rpLibGetDouble function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_get_exponent.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_get_exponent.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_get_exponent.m	(revision 6168)
@@ -0,0 +1,29 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_get_exponent(unitName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_exponent(unitName)
+    err = 1;
+    printf("\n\nTESTING rpUnitsGetExponent\n");
+    [unitHandle,err] = rpUnitsFind(unitName);
+    if !err && unitHandle
+        [retVal,err] = rpUnitsGetExponent(unitHandle);
+        if !err
+            printf ("Exponent of %s = %e\n", unitName,retVal);
+        else
+            printf("Error within rpUnitsGetExponent function\n");
+        end
+    else
+        printf ("rpUnitsGetExponent FAILED\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_get_string.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_get_string.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_get_string.m	(revision 6168)
@@ -0,0 +1,28 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_get_string(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_string(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpLibGetString\n");
+    [retStr,err] = rpLibGetString(lib,path);
+    if !err
+        if retStr != ''
+            printf ("rpLibGetString Successful: %s\n",retStr);
+        else
+            printf ("rpLibGetString FAILED\n");
+        end
+    else
+        printf("Error within rpLibGetString function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_get_units.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_get_units.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_get_units.m	(revision 6168)
@@ -0,0 +1,33 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_get_units(unitName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_units(unitName)
+    err = 1;
+    printf("\n\nTESTING rpUnitsGetUnits\n");
+    [unitHandle,err] = rpUnitsFind(unitName);
+    if !err && unitHandle
+        [retStr,err] = rpUnitsGetUnits(unitHandle);
+        if !err
+            if retStr != ''
+                printf ("units of %s = %s\n", unitName,retStr);
+            else
+                printf ("rpUnitsGetUnits FAILED\n");
+            end
+        else
+            printf("Error within rpUnitsGetUnits function\n");
+        end
+    else
+        printf ("rpUnitsFind FAILED while testing rpUnitsGetUnits\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_get_units_name.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_get_units_name.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_get_units_name.m	(revision 6168)
@@ -0,0 +1,33 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_get_units_name(unitName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_get_units_name(unitName)
+    err = 1;
+    printf("\n\nTESTING rpUnitsGetUnitsName\n");
+    [unitHandle,err] = rpUnitsFind(unitName);
+    if !err && unitHandle
+        [retStr,err] = rpUnitsGetUnitsName(unitHandle);
+        if !err
+            if retStr != ''
+                printf ("units name of %s = %s\n", unitName,retStr);
+            else
+                printf ("rpUnitsGetUnitsName FAILED\n");
+            end
+        else
+            printf("Error within rpUnitsGetUnitsName function\n");
+        end
+    else
+        printf ("rpUnitsFind FAILED while testing rpUnitsGetUnitsName\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_make_metric.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_make_metric.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_make_metric.m	(revision 6168)
@@ -0,0 +1,39 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_make_metric(unitName)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_make_metric(unitName)
+    err = 1;
+    printf("\n\nTESTING rpUnitsMakeMetric\n");
+    [unitHandle,err] = rpUnitsFind(unitName);
+    if !err && unitHandle
+        [err] = rpUnitsMakeMetric(unitHandle);
+        if !err
+            [unitHandle,err] = rpUnitsFind(['c',unitName]);
+            if !err 
+                [retStr,err] = rpUnitsGetUnitsName(unitHandle);
+                if !err
+                    printf ("centi-%s = %s\n", unitName,retStr);
+                else
+                    printf("Error in rpUnitsGetUnitsName testing rpUnitsMakeMetric\n");
+                end
+            else
+                printf("Error in rpUnitsFind testing rpUnitsMakeMetric\n");
+            end
+        else
+            printf("Error within rpUnitsMakeMetric function\n");
+        end
+    else
+        printf ("rpUnitsFind FAILED while testing rpUnitsGetUnits\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_node_comp.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_node_comp.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_node_comp.m	(revision 6168)
@@ -0,0 +1,33 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_node_comp(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_node_comp(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpLibNodeComp\n");
+    [nodeHandle,err] = rpLibElement(lib,path);
+    if !err
+        if nodeHandle
+            [compStr,err] = rpLibNodeComp(nodeHandle);
+            if !err
+                printf ("%s compStr = %s\n", path, compStr);
+            else
+                printf("Error within rpLibNodeComp function\n");
+            end
+        else
+            printf("rpLibElement returned invalid nodeHandle\n");
+        end
+    else
+        printf("Error within rpLibElement function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_node_id.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_node_id.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_node_id.m	(revision 6168)
@@ -0,0 +1,33 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_node_id(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_node_id(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpLibNodeId\n");
+    [nodeHandle,err] = rpLibElement(lib,path);
+    if !err
+        if nodeHandle
+            [idStr,err] = rpLibNodeId(nodeHandle);
+            if !err
+                printf ("%s idStr = %s\n", path, idStr);
+            else
+                printf("Error within rpLibNodeId function\n");
+            end
+        else
+            printf("rpLibElement returned invalid nodeHandle\n");
+        end
+    else
+        printf("Error within rpLibElement function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_node_type.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_node_type.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_node_type.m	(revision 6168)
@@ -0,0 +1,33 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_node_type(lib, path)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_node_type(lib,path)
+    err = 1;
+    printf("\n\nTESTING rpLibNodeType\n");
+    [nodeHandle,err] = rpLibElement(lib,path);
+    if !err
+        if nodeHandle
+            [typeStr,err] = rpLibNodeType(nodeHandle);
+            if !err
+                printf ("%s typeStr = %s\n", path, typeStr);
+            else
+                printf("Error within rpLibNodeType function\n");
+            end
+        else
+            printf("rpLibElement returned invalid nodeHandle\n");
+        end
+    else
+        printf("Error within rpLibElement function\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_put.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_put.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_put.m	(revision 6168)
@@ -0,0 +1,39 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_put(libHandle,path,value,id,append)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_put(libHandle,path,value,id,append)
+    err = 1;
+    printf("\n\nTESTING rpLibPut\n");
+    [err] = rpLibPut(libHandle,path,value,id,append);
+    if !err
+        if id != ''
+            pathID = [path,'(',id,')']
+        else
+            pathID = path
+        end
+        [retStr, err] = rpLibGet(libHandle,pathID);
+        printf ("retStr = %s\n",retStr);
+        if !err
+            if (retStr != '') && (retStr == value)
+                printf ("rpLibPut Successful\n");
+            else
+                printf ("rpLibPut FAILED\n");
+            end
+        else
+            printf ("rpLibGet returned Error\n");
+        end
+    else
+        printf("Error within rpLibPut\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_put_dbl.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_put_dbl.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_put_dbl.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_put_dbl(libHandle,path,value,append)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_put_dbl(libHandle,path,value,append)
+    err = 1;
+    printf("\n\nTESTING rpLibPutDouble\n");
+    [err] = rpLibPutDouble(libHandle,path,value,append);
+    if !err
+        [retVal, err] = rpLibGetDouble(libHandle,path);
+        printf ("retVal = %e\n",retVal);
+        if !err
+            if (retVal == value)
+                printf ("rpLibPutDouble Successful\n");
+            else
+                printf ("rpLibPutDouble FAILED\n");
+            end
+        else
+            printf ("rpLibGetDouble returned Error\n");
+        end
+    else
+        printf("Error within rpLibPutDouble\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_put_str.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_put_str.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_put_str.m	(revision 6168)
@@ -0,0 +1,34 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_put_str(libHandle,path,value,append)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_put_str(libHandle,path,value,append)
+    err = 1;
+    printf("\n\nTESTING rpLibPutString\n");
+    [err] = rpLibPutString(libHandle,path,value,append);
+    if !err
+        [retStr, err] = rpLibGet(libHandle,path);
+        printf ("retStr = %s\n",retStr);
+        if !err
+            if (retStr != '') && (retStr == value)
+                printf ("rpLibPutString Successful\n");
+            else
+                printf ("rpLibPutString FAILED\n");
+            end
+        else
+            printf ("rpLibGet returned Error\n");
+        end
+    else
+        printf("Error within rpLibPutString\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_result.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_result.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_result.m	(revision 6168)
@@ -0,0 +1,24 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_result(lib)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_result(lib)
+    err = 1;
+    printf("\n\nTESTING rpLibResult\n");
+    [err] = rpLibResult(lib);
+    if !err
+        printf ("rpLibResult Successful\n");
+    else
+        printf("Error within rpLibResult\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/octave/test_xml.m
===================================================================
--- /tags/1.6.0/oldtest/src/octave/test_xml.m	(revision 6168)
+++ /tags/1.6.0/oldtest/src/octave/test_xml.m	(revision 6168)
@@ -0,0 +1,24 @@
+% ----------------------------------------------------------------------
+%  TEST: Octave's Rappture Library Test Functions.
+%
+%   [err] = test_xml(lib)
+%
+%
+% ======================================================================
+%  AUTHOR:  Derrick Kearney, Purdue University
+%  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+%
+%  See the file "license.terms" for information on usage and
+%  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+% ======================================================================
+
+function [err] = test_xml(lib)
+    err = 1;
+    printf("\n\nTESTING rpLibXml\n");
+    [retStr,err] = rpLibXml(lib);
+    if !err
+        printf ("rpLibXml Successful: \n%s\n",retStr);
+    else
+        printf("Error within rpLibXml\n");
+    end
+end
Index: /tags/1.6.0/oldtest/src/rappture_example.c
===================================================================
--- /tags/1.6.0/oldtest/src/rappture_example.c	(revision 6168)
+++ /tags/1.6.0/oldtest/src/rappture_example.c	(revision 6168)
@@ -0,0 +1,230 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "../include/rappture_interface.h"
+
+/* fix buffer overflow possibility*/
+char* null_terminate(char* inStr, int len)
+{
+    int retVal = 0;
+    char* newStr = NULL;
+    char* current = NULL;
+
+    if (inStr) {
+
+        current = inStr+len-1;
+
+        while ((len > 0) && (isspace(*(current)))) {
+            // dont strip off newlines
+
+            if ( (*(current) == '\f')
+              || (*(current) == '\n')
+              || (*(current) == '\r')
+              || (*(current) == '\t')
+              || (*(current) == '\v') )
+            {
+                break;
+            }
+
+            if (--len) {
+                current--;
+            }
+        }
+
+        newStr = (char*) calloc(len,(sizeof(char)));
+        strncpy(newStr,inStr,len);
+        *(newStr+len) = '\0';
+
+        retVal++;
+    }
+
+    // return retVal;
+
+    return newStr;
+}
+
+
+int main(int argc, char * argv[])
+{
+
+    PyObject* rpClass = NULL;
+    PyObject* lib = NULL;
+
+    // char* filePath = "/home/derrick/playground/rappture_fortran/xml_files/driver_big.xml";
+    // char* filePath = NULL; // "/home/derrick/playground/rappture_fortran/xml_files/driver_big.xml";
+    const char* xmlText = NULL;
+
+    // filePath = (char*) calloc(67,sizeof(char));
+
+    char* filePath2 = "/home/derrick/playground/rappture_fortran/xml_files/driver_big.xml     ";
+    char* filePath = null_terminate(filePath2,70);
+//    char* filePath = "/home/derrick/playground/rappture_fortran/xml_files/driver_small.xml";
+
+    printf("filePath = :%s:\n",filePath);
+
+    //scanf("%66c", filePath );
+    // scanf("%70c", filePath );
+    
+    // initialize the interpreter
+    Py_Initialize();
+
+    rpClass = importRappture();
+    if (rpClass) {
+        printf("created rappture object\n");
+        lib = createRapptureObj(rpClass, filePath);
+        Py_DECREF(rpClass);
+
+        if (lib) {
+
+            // test lib.xml()
+            printf("test lib.xml()\n");
+            
+            xmlText = rpXml(lib);
+            if (xmlText) {
+                printf("\nXML FILE\n\n%s\n\n",xmlText);
+            }
+
+            printf("\n");
+
+            // test lib.get("...")
+            xmlText = rpGet(lib, "input.(ambient).(temperature).current");
+            if (xmlText) {
+                printf("xmlText = %s\n", xmlText);
+            }
+
+
+            Py_DECREF(lib);
+        }
+    }
+    
+    // shut down the interpreter
+    Py_Finalize();
+    return 0;
+}
+
+/*
+ *
+python notes
+
+>>> print lib.xml()
+<?xml version="1.0" ?>
+<nanohub xmlns="http://www.nanohub.org" xmlns:class="http://www.nanohub.org">
+  <purdue>
+    <class class:number="101" class:school="ECE">
+      <name>Nanotechnology 101</name>
+      <desc>Introduction to Nanotechnology</desc>
+    </class>
+  <class id="NANO512"><name>Nanotechnology 512</name><desc>Not so intro to Nanotech</desc></class></purdue>
+</nanohub>
+>>> lib.children('purdue','component')
+[u'class', 'class(NANO512)']
+>>> lib.children('purdue','type')
+[u'class', 'class']
+>>> lib.children('purdue','id')
+[u'class', 'NANO512']
+>>> lib.children('purdue','object')
+[<Rappture.library.library instance at 0xb7d2b32c>, <Rappture.library.library instance at 0xb7d2b42c>]
+>>> lib.children('class', 'component')
+[u'name', u'desc']
+>>> lib.children('name', 'component')
+[]
+>>> lib.children('desc', 'component')
+[]
+>>> 
+>>> 
+>>> lib.element('purdue','component')
+u'purdue'
+>>> lib.element('class','component')
+u'class'
+>>> lib.element('class(NANO512)','component')
+'class(NANO512)'
+>>> 
+>>> lib.element('purdue','type')
+u'purdue'
+>>> lib.element('class','type')
+u'class'
+>>> lib.element('class(NANO512)','type')
+'class'
+>>> 
+>>> lib.element('purdue','id')
+u'purdue'
+>>> lib.element('class','id')
+u'class'
+>>> lib.element('class(NANO512)','id')
+'NANO512'
+>>> lib.get('purdue.class(NANO512).name')
+'Nanotechnology 512'
+>>> lib.get('purdue.class.name')
+u'Nanotechnology 101'
+>>> lib.put('uiuc.class(NANO500).name','Nanotechnology 500')
+>>> lib.put('uiuc.class(NANO500).desc','Carbon NanoTubes')
+>>> print lib.xml()
+<?xml version="1.0" ?>
+<nanohub xmlns="http://www.nanohub.org" xmlns:class="http://www.nanohub.org">
+  <purdue>
+    <class class:number="101" class:school="ECE">
+      <name>Nanotechnology 101</name>
+      <desc>Introduction to Nanotechnology</desc>
+    </class>
+  <class id="NANO512"><name>Nanotechnology 512</name><desc>Not so intro to Nanotech</desc></class></purdue>
+<uiuc><class id="NANO500"><name>Nanotechnology 500</name><desc>Carbon NanoTubes</desc></class></uiuc></nanohub>
+>>> nano500 = lib.element('class(NANO500)')
+>>> nano500.get('name')
+'Nanotechnology 500'
+>>> lib.put('sdsc',nano500)
+>>> print lib.xml()
+<?xml version="1.0" ?>
+<nanohub xmlns="http://www.nanohub.org" xmlns:class="http://www.nanohub.org">
+  <purdue>
+    <class class:number="101" class:school="ECE">
+      <name>Nanotechnology 101</name>
+      <desc>Introduction to Nanotechnology</desc>
+    </class>
+    <class id="NANO512">
+      <name>Nanotechnology 512</name>
+      <desc>Not so intro to Nanotech</desc>
+    </class>
+  </purdue>
+  <uiuc/>
+  <sdsc>
+    <class id="NANO500">
+      <name>Nanotechnology 500</name>
+      <desc>hi</desc>
+    </class>
+  </sdsc>
+</nanohub>
+>>> 
+>>> lib.put('uw',nano500)
+>>> print lib.xml()
+<?xml version="1.0" ?>
+<nanohub xmlns="http://www.nanohub.org" xmlns:class="http://www.nanohub.org">
+  <purdue>
+    <class class:number="101" class:school="ECE">
+      <name>Nanotechnology 101</name>
+      <desc>Introduction to Nanotechnology</desc>
+    </class>
+    <class id="NANO512">
+      <name>Nanotechnology 512</name>
+      <desc>Not so intro to Nanotech</desc>
+    </class>
+  </purdue>
+  <uiuc/>
+  <sdsc/>
+  <uw>
+    <class id="NANO500">
+      <name>Nanotechnology 500</name>
+      <desc>hi</desc>
+    </class>
+  </uw>
+</nanohub>
+>>> 
+
+
+*/
+
+
Index: /tags/1.6.0/p2p/Makefile
===================================================================
--- /tags/1.6.0/p2p/Makefile	(revision 6168)
+++ /tags/1.6.0/p2p/Makefile	(revision 6168)
@@ -0,0 +1,8 @@
+CC = gcc
+CFLAGS = -O3
+
+all:
+	$(CC) $(CFLAGS) perftest.c -o perftest
+	./mkindex handler.tcl server.tcl client.tcl log.tcl random.tcl \
+		options.tcl protocols.tcl statemachine.tcl wonks.tcl \
+		foreman.tcl
Index: /tags/1.6.0/p2p/README
===================================================================
--- /tags/1.6.0/p2p/README	(revision 6168)
+++ /tags/1.6.0/p2p/README	(revision 6168)
@@ -0,0 +1,53 @@
+----------------------------------------------------------------------
+ P2P job management infrastructure
+ Michael McLennan (mmclennan@purdue.edu)
+======================================================================
+ Copyright (c) 2004-2012  HUBzero Foundation, LLC
+======================================================================
+
+ The files in this directory form the basis for a peer-to-peer
+ job management infrastructure.  The basic idea is that a client
+ connects to a network of workers, asks for bids on a series of
+ jobs it wants to execute, and then farms the jobs out to the
+ workers and collects the results.  In addition to the client
+ and the workers, there are "authority" servers that act like
+ superpeers, helping clients/workers find each other and manage
+ the transfer of points for completed jobs.
+
+ TO RUN THE DEMO:
+
+ $ wish test.tcl
+
+ Press the "Start" button to launch an authority server and a
+ series of workers.  Press the "Reload" button after that to
+ load log information from the workers as they run.  Press
+ "Stop" to kill all processes and load the final log information
+ for visualization.
+
+ Use the "<" and ">" buttons at the bottom to move forward/backward
+ through time, visualizing the communication traffic and the P2P
+ network formation.  Use the slider to jump quickly to a specific
+ point in time.
+
+
+ CLASSES:
+   Handler ... Basis of all servers and clients.  Knows how to
+               receive and interpret Tcl-based commands.  Has a
+               notion of various "protocols" which are collections
+               of messages that can be received and understood.
+               Protocols can be versioned, so each handler should
+               be able to support new and old clients if the protocol
+               changes over time.
+
+   Server .... Derived class based on Handler.  Sits at a particular
+               port and listens for client connections.  The first
+               message any client should send defines the protocol,
+               and then the client sends Tcl-based commands after
+               that.
+
+   Client .... Derived class based on Handler.  Opens a socket to a
+               particular host:port and begins sending/receiving
+               messages.  The first message that it sends should
+               define the protocol for outgoing messages, and the
+               first message it receives should define the protocol
+               for incoming messages.
Index: /tags/1.6.0/p2p/authority.tcl
===================================================================
--- /tags/1.6.0/p2p/authority.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/authority.tcl	(revision 6168)
@@ -0,0 +1,145 @@
+# ----------------------------------------------------------------------
+#  P2P: central authority for all P2P activities
+#
+#  This server is the "superpeer" that all workers contact first
+#  to join the network.  Clients and workers also contact the authority
+#  to handle payments for services.
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+# recognize other library files in this same directory
+set dir [file dirname [info script]]
+lappend auto_path $dir
+
+# handle log file for this authority
+log channel debug on
+log channel system on
+
+# ======================================================================
+#  WORKER OPTIONS
+# ======================================================================
+
+# set of connections for authority servers
+set worker_options(authority_hosts) \
+    {127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003}
+
+# register with the central authority at this frequency
+set worker_options(time_between_authority_checks) 60000
+
+# workers should try to connect with this many other peers
+set worker_options(max_peer_connections) 4
+
+# ======================================================================
+#  PROTOCOL: hubzero:authority<-worker/1
+#
+#  The worker initiates communication with the authority by sending
+#  these messages to the authority to request information about
+#  other peers.
+# ======================================================================
+p2p::protocol::register hubzero:authority<-worker/1 {
+
+    # ------------------------------------------------------------------
+    #  INCOMING: listening <port>
+    #  Workers use this to tell the authority what port they're
+    #  listening on.  Other workers should connect to this port.
+    # ------------------------------------------------------------------
+    define listening {port} {
+        global client2address workers
+        variable handler
+        variable cid
+
+        # register this address on the list of workers
+        set addr "$client2address($cid):$port"
+        set workers($addr) "--"
+
+        # name this connection for easier debugging
+        $handler connectionName $cid $addr
+
+        return ""
+    }
+
+    # ------------------------------------------------------------------
+    #  INCOMING: peers
+    # ------------------------------------------------------------------
+    define peers {} {
+        global workers
+        return [list peers [array names workers]]
+    }
+}
+
+# ======================================================================
+#  PROTOCOL: hubzero:authority<-foreman/1
+#
+#  The foreman initiates communication with the authority by sending
+#  these messages to request information about workers, to estimate
+#  requirements for a job, to put funds in escrow, and to finalize
+#  the transaction.
+# ======================================================================
+p2p::protocol::register hubzero:authority<-foreman/1 {
+    # ------------------------------------------------------------------
+    #  INCOMING: workers
+    #  Foremen use this to request the list of known workers, and then
+    #  pick one worker to act as their connection to the P2P network.
+    # ------------------------------------------------------------------
+    define workers {} {
+        global workers
+        return [list workers [array names workers]]
+    }
+}
+
+# ======================================================================
+# set up a server at the first open port above 9001
+set server [p2p::server \
+    -port 9001? \
+    -protocols {hubzero:authority<-worker hubzero:authority<-foreman} \
+    -servername authority \
+    -onconnect authority_client_address \
+    -onprotocol authority_client_protocol \
+]
+
+# ----------------------------------------------------------------------
+#  COMMAND: authority_client_address <cid> <addr> <port>
+#
+#  Invoked automatically whenever a client connects to the server.
+#  Adds the client address/port to a list of all known clients.
+#  Other clients searching for peers can ask for a list of all known
+#  clients.
+# ----------------------------------------------------------------------
+proc authority_client_address {cid addr port} {
+    global client2address
+    set client2address($cid) $addr
+}
+
+# ----------------------------------------------------------------------
+#  COMMAND: authority_client_protocol <cid> <protocol>
+#
+#  Invoked automatically whenever a client declares its protocol
+#  to the server.  Clients speaking the "worker" protocol are
+#  kept on a special list.
+# ----------------------------------------------------------------------
+proc authority_client_protocol {cid protocol} {
+    global worker_options client2address
+    switch -glob -- $protocol {
+        *<-worker* {
+            puts $cid [list protocol hubzero:worker<-authority/1]
+            puts $cid "options [array get worker_options] ip $client2address($cid)"
+        }
+        *<-foreman* {
+            puts $cid [list protocol hubzero:foreman<-authority/1]
+        }
+        DEF* {
+            # do nothing
+        }
+        default {
+            error "don't recognize protocol \"$protocol\""
+        }
+    }
+}
+
+vwait main-loop
Index: /tags/1.6.0/p2p/client.tcl
===================================================================
--- /tags/1.6.0/p2p/client.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/client.tcl	(revision 6168)
@@ -0,0 +1,115 @@
+# ----------------------------------------------------------------------
+#  LIBRARY: handles the client side of the connection in the p2p
+#    infrastructure
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+namespace eval p2p { # forward declaration }
+
+# ======================================================================
+#  USAGE: p2p::client ?-option value -option value ...?
+#
+#  Used to create a client connection to a peer-to-peer server.
+#  Recognizes the following options:
+#    -address ........... connect to server at this host:port
+#    -sendprotocol ...... tell server we're speaking this protocol
+#    -receiveprotocol ... server replies back with these commands
+# ======================================================================
+proc p2p::client {args} {
+    array set options {
+        -address ?
+        -sendprotocol ""
+        -receiveprotocol ""
+    }
+    foreach {key val} $args {
+        if {![info exists options($key)]} {
+            error "bad option \"$key\": should be [join [lsort [array names options]] {, }]"
+        }
+        set options($key) $val
+    }
+
+    # create the client
+    set client [eval Client ::#auto $options(-address)]
+
+    # install the protocol for incoming commands
+    p2p::protocol::init $client $options(-receiveprotocol)
+
+    # tell the server what protocol we'll be speaking
+    $client send [list protocol $options(-sendprotocol)]
+
+    return $client
+}
+
+# ======================================================================
+#  CLASS: Client
+# ======================================================================
+
+itcl::class Client {
+    inherit Handler
+
+    private variable _addr "" ;# address that this client is connected to
+    private variable _sid ""  ;# file handle for server connection
+
+    constructor {addr args} {
+        eval configure $args
+
+        #
+        # Connect to the server at the specified address, which is
+        # specified as "host:port".
+        #
+        set alist [split $addr :]
+        if {[llength $alist] != 2} {
+            error "bad address \"$addr\": should be host:port"
+        }
+        foreach {host port} $alist break
+        set _sid [socket $host $port]
+        connectionName $_sid $host:$port
+        connectionSpeaks $_sid DEFAULT
+
+        fileevent $_sid readable [itcl::code $this handle $_sid]
+        fconfigure $_sid -buffering line
+
+        set _addr $addr
+    }
+
+    destructor {
+        catch {close $_sid}
+    }
+
+    public method send {message}
+    public method address {}
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: send <message>
+#
+#  Used to send a <message> off to the server.  If the connection
+#  was unexpectedly closed, then this method does nothing.
+# ----------------------------------------------------------------------
+itcl::body Client::send {message} {
+    if {"" != $_sid} {
+        if {[eof $_sid]} {
+            set _sid ""
+        } else {
+            log debug "outgoing message to [address]: $message"
+            puts $_sid $message
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: address
+#
+#  Returns the address that this client is connected to.  This is
+#  the host:port passed in when the client was created.
+# ----------------------------------------------------------------------
+itcl::body Client::address {} {
+    return $_addr
+}
Index: /tags/1.6.0/p2p/foreman.tcl
===================================================================
--- /tags/1.6.0/p2p/foreman.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/foreman.tcl	(revision 6168)
@@ -0,0 +1,201 @@
+# ----------------------------------------------------------------------
+#  P2P: foreman node in P2P mesh, sending jobs out for execution
+#
+#  This file provides an API for clients to connect to the P2P network,
+#  solicit bids on jobs, and send them off for execution.
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# recognize other library files in this same directory
+set dir [file dirname [info script]]
+lappend auto_path $dir
+
+# handle log file for this foreman
+log channel error on
+log channel debug on
+log channel system on
+
+proc ::bgerror {err} { log error "ERROR: $err $::errorInfo" }
+
+# set of connections for authority servers
+p2p::options register authority_hosts 127.0.0.1:9001
+
+# ======================================================================
+#  PROTOCOL: hubzero:foreman<-authority/1
+#
+#  The foreman initiates communication with the authority, and the
+#  authority responds by sending the following messages back.
+# ======================================================================
+p2p::protocol::register hubzero:foreman<-authority/1 {
+    # ------------------------------------------------------------------
+    #  INCOMING: options <key1> <value1> <key2> <value2> ...
+    #  These option settings coming from the authority override the
+    #  option settings built into the client.  The authority probably
+    #  has a more up-to-date list of other authorities and better
+    #  policies for living within the network.
+    # ------------------------------------------------------------------
+    define options {args} {
+        foreach {key val} $args {
+            catch {p2p::options set $key $val}
+        }
+        return ""
+    }
+
+    # ------------------------------------------------------------------
+    #  INCOMING: workers <listOfAddresses>
+    #  This message comes in after this foreman has sent the "workers"
+    #  message to request the current list of workers.  The
+    #  <listOfAddresses> is a list of host:port addresses that this
+    #  foreman should contact to enter the p2p network.
+    # ------------------------------------------------------------------
+    define workers {wlist} {
+        global workers
+        set workers $wlist
+        foreman-solicit goto informed
+        return ""
+    }
+}
+
+# ======================================================================
+#  PROTOCOL: hubzero:foreman<-worker/1
+#
+#  The foreman initiates communication with a worker, and the
+#  worker responds by sending the following messages back.
+# ======================================================================
+p2p::protocol::register hubzero:foreman<-worker/1 {
+    # ------------------------------------------------------------------
+    #  INCOMING: proffer <token> <details>
+    # ------------------------------------------------------------------
+    define proffer {token details} {
+puts "PROFFER:\n$details"
+        after idle {foreman-solicit goto informed}
+        return ""
+    }
+}
+
+# ----------------------------------------------------------------------
+#  PEER-TO-PEER CONNECTION
+#
+#  This is the state machine representing the connection of the foreman
+#  to the peer-to-peer network.  We start in the "init" state, then
+#  move to "fetching" while waiting for an authority to return a list
+#  of workers, then move to "informed".  At any point, we can move
+#  from "informed" to "connected" and connect to one of the workers
+#  in the peer-to-peer network, then move back to "informed" when
+#  the information has been gathered.
+# ----------------------------------------------------------------------
+StateMachine foreman-solicit
+foreman-solicit statedata authoritycnx ""
+foreman-solicit statedata workercnx ""
+
+# sit here whenever we don't have a connection
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+foreman-solicit state init
+
+# sit here while we're connected to the authority and fetching data
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+foreman-solicit state fetching
+
+# when moving to the fetching state, connect to the authority
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+foreman-solicit transition init->fetching -onchange {
+    # connect to the authority and request a list of peers
+    statedata authoritycnx ""
+    foreach addr [randomize [p2p::options get authority_hosts]] {
+        if {[catch {p2p::client -address $addr \
+            -sendprotocol hubzero:authority<-foreman/1 \
+            -receiveprotocol hubzero:foreman<-authority/1} result] == 0} {
+            statedata authoritycnx $result
+            break
+        }
+    }
+
+    if {"" != [statedata authoritycnx]} {
+        [statedata authoritycnx] send "identity foreman"
+        [statedata authoritycnx] send "workers"
+    } else {
+        error "can't connect to any authority\nAUTHORITY LIST: [p2p::options get authority_hosts]"
+    }
+}
+
+# sit here after we've gotten a list of workers
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+foreman-solicit state informed
+
+# when moving to the fetching state, connect to the authority
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+foreman-solicit transition fetching->informed -onchange {
+    # connect to the authority and request a list of peers
+    if {"" != [statedata authoritycnx]} {
+        catch {itcl::delete object [statedata authoritycnx]}
+        statedata authoritycnx ""
+    }
+    after idle {foreman-solicit goto connected}
+}
+
+# sit here when we're connected to the p2p network
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+foreman-solicit state connected
+
+# when moving to the connected state, connect to the p2p worker
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+foreman-solicit transition informed->connected -onchange {
+    # connect to the p2p network and send a solicitation
+    global workers
+    statedata workercnx ""
+    foreach addr [randomize $workers 100] {
+        if {[catch {p2p::client -address $addr \
+            -sendprotocol hubzero:worker<-foreman/1 \
+            -receiveprotocol hubzero:foreman<-worker/1} result] == 0} {
+            statedata workercnx $result
+            break
+        }
+    }
+
+    if {"" != [statedata workercnx]} {
+        [statedata workercnx] send "identity foreman"
+        [statedata workercnx] send "solicit -job [expr {rand()}]"
+    } else {
+        after 2000 {foreman-solicit goto connected}
+        error "can't connect to any worker in the p2p network"
+    }
+}
+
+# when moving back to the informed state, disconnect from p2p network
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+foreman-solicit transition connected->informed -onchange {
+    # have an open connection? then close it
+    if {"" != [statedata workercnx]} {
+        catch {itcl::delete object [statedata workercnx]}
+        statedata workercnx ""
+    }
+}
+
+# ----------------------------------------------------------------------
+#  API
+# ----------------------------------------------------------------------
+namespace eval Rappture::foreman { # forward declaration }
+
+# ----------------------------------------------------------------------
+#  COMMAND:  Rappture::foreman::bids -callback <command>
+#
+#  Clients use this to solicit bids for jobs.  Connects to an
+#  authority, if necessary, to determine a list of workers, and then
+#  connects to one of the workers to kick off the bid process.
+# ----------------------------------------------------------------------
+proc Rappture::foreman::bids {args} {
+    global workers
+
+    if {![info exists workers] || [llength $workers] == 0} {
+        foreman-solicit goto fetching
+    } else {
+        foreman-solicit goto connected
+    }
+}
Index: /tags/1.6.0/p2p/handler.tcl
===================================================================
--- /tags/1.6.0/p2p/handler.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/handler.tcl	(revision 6168)
@@ -0,0 +1,237 @@
+# ----------------------------------------------------------------------
+#  LIBRARY: Handler
+#  Base class for Client and Server.  Handles protocol declarations
+#  for messages received by the handler, and knows how to process
+#  messages.
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+itcl::class Handler {
+    private variable _namesp    ;# maps protocol name => namespace of cmds
+    private variable _parser    ;# maps protocol name => parser for cmds
+    private variable _buffer    ;# maps connection => cmd buffer
+    private variable _protocol  ;# maps connection => protocol name
+    private variable _cname     ;# maps connection => nice name for debug
+    private common _counter 0
+
+    constructor {args} {
+        #
+        # Define the DEFAULT protocol, which clients/servers use when
+        # they first connect to define the protocol they intend to speak.
+        #
+        protocol DEFAULT
+        define DEFAULT protocol {version} {
+            variable handler
+            variable cid
+            $handler connectionSpeaks $cid $version
+            return ""
+        }
+        define DEFAULT exception {message} {
+            log error "ERROR: $message"
+        }
+
+        eval configure $args
+    }
+
+    destructor {
+        foreach protocol [array names _parser] {
+            interp delete $_parser($protocol)
+        }
+        foreach protocol [array names _namesp] {
+            namespace delete $_namesp($protocol)
+        }
+    }
+
+    public method protocol {name}
+    public method define {protocol name arglist body}
+    public method connections {{protocol *}}
+    public method connectionName {cid {name ""}}
+    public method connectionSpeaks {cid protocol}
+
+    protected method handle {cid}
+    protected method finalize {protocol}
+    protected method dropped {cid}
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: protocol <name>
+#
+#  Used to define a protocol that this client/server recognizes.
+#  A protocol has an associated safe interpreter full of commands
+#  that the client/server recognizes.  When each connection is
+#  established, the other party must declare the  protocol that it
+#  intends to speak up front, so the client/server can select the
+#  appropriate interpreter for all incoming requests.
+# ----------------------------------------------------------------------
+itcl::body Handler::protocol {name} {
+    if {[info exists _namesp($name)]} {
+        error "protocol \"$name\" already defined"
+    }
+    set _namesp($name) "[namespace current]::bodies[incr _counter]"
+    namespace eval $_namesp($name) {}
+    set _parser($name) [interp create -safe]
+    foreach cmd [$_parser($name) eval {info commands}] {
+        $_parser($name) hide $cmd
+    }
+    $_parser($name) invokehidden proc unknown {args} {}
+    $_parser($name) expose error
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: define <protocol> <name> <arglist> <body>
+#
+#  Used to define a command that this handler recognizes.  The command
+#  is called <name> in the safe interpreter associated with the given
+#  <protocol>, which should have been defined previously via the
+#  "protocol" method.  The new command exists with the same name in a
+#  special namespace in the main interpreter.  It is implemented with
+#  an argument list <arglist> and a <body> of Tcl code.
+# ----------------------------------------------------------------------
+itcl::body Handler::define {protocol name arglist body} {
+    if {![info exists _namesp($protocol)]} {
+        error "can't define command \"$name\": protocol \"$protocol\" doesn't exist"
+    }
+    proc [set _namesp($protocol)]::$name $arglist $body
+    $_parser($protocol) alias $name [set _namesp($protocol)]::$name
+    finalize $protocol
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: connections ?<protocol>?
+#
+#  Returns a list of file handles for current connections that match
+#  the glob-style <protocol> pattern.  If no pattern is given, then
+#  it returns all connections.  Each handle can be passed to
+#  connectionName and connectionSpeaks to get more information.
+# ----------------------------------------------------------------------
+itcl::body Handler::connections {{pattern *}} {
+    set rlist ""
+    foreach cid [array names _protocol] {
+        if {[string match $pattern $_protocol($cid)]} {
+            lappend rlist $cid
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: connectionName <sockId> ?<name>?
+#
+#  Used to set/get the nice name associated with a <sockId> connection.
+#  The nice name is used for log messages, and makes debugging easier
+#  than chasing around a bunch of "sock3" handle names.  If no name
+#  is specified, then it defaults to the file descriptor name.
+# ----------------------------------------------------------------------
+itcl::body Handler::connectionName {cid {name ""}} {
+    if {[string length $name] > 0} {
+        set _cname($cid) $name
+    }
+    if {[info exists _cname($cid)]} {
+        return "$_cname($cid) ($cid)"
+    }
+    return $cid
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: connectionSpeaks <sockId> <protocol>
+#
+#  Used internally to define what protocol the entity on the other
+#  side of the connection speaks.  This is usually invoked when that
+#  entity sends the "protocol" message, and the built-in "protocol"
+#  command in the DEFAULT parser uses this method to register the
+#  protocol for the entity.
+# ----------------------------------------------------------------------
+itcl::body Handler::connectionSpeaks {cid protocol} {
+    if {"DEFAULT" != $protocol && ![info exists _parser($protocol)]} {
+        error "protocol \"$protocol\" not recognized"
+    }
+    set _protocol($cid) $protocol
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: handle <cid>
+#
+#  Invoked automatically whenever a message comes in on the file
+#  handle <cid> from the entity on the other side of the connection.
+#  This handler reads the message and executes it in a safe
+#  interpreter, thereby responding to it.
+# ----------------------------------------------------------------------
+itcl::body Handler::handle {cid} {
+    if {[gets $cid request] < 0} {
+        dropped $cid
+    } elseif {[info exists _protocol($cid)]} {
+        # complete command? then process it below...
+        append _buffer($cid) $request "\n"
+        if {[info complete $_buffer($cid)]} {
+            set request $_buffer($cid)
+            set _buffer($cid) ""
+
+            # what protocol does this entity speak?
+            set protocol $_protocol($cid)
+
+            # Some commands need to know the identity of the entity
+            # on the other side of the connection.  Save it as a
+            # global variable in the namespace where the protocol
+            # command exists.
+            set [set _namesp($protocol)]::handler $this
+            set [set _namesp($protocol)]::cid $cid
+
+            # execute the incoming command...
+            set mesg " => "
+            if {[catch {$_parser($protocol) eval $request} result] == 0} {
+                if {[string length $result] > 0} {
+                    catch {puts $cid $result}
+                    append mesg "ok: $result"
+                }
+            } else {
+                catch {puts $cid [list exception $result]}
+                append mesg "exception: $result"
+            }
+            log debug "incoming message from [connectionName $cid]: [string trimright $request \n] $mesg"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: finalize <protocol>
+#
+#  Called whenever a new command is added to the handler.  Updates
+#  the "unknown" command to report a proper usage message (including
+#  all valid keywords) when a bad command is encountered.
+# ----------------------------------------------------------------------
+itcl::body Handler::finalize {protocol} {
+    set p $_parser($protocol)
+    $p hide error
+    $p hide unknown
+    set cmds [lsort [$p invokehidden info commands]]
+    $p expose error
+    $p expose unknown
+
+    $p invokehidden proc unknown {cmd args} [format {
+        error "bad command \"$cmd\": should be %s"
+    } [join $cmds {, }]]
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: dropped <cid>
+#
+#  Invoked automatically whenever a client connection drops, to
+#  log the event and remove all trace of the client.  Derived classes
+#  can override this method to perform other functions too.
+# ----------------------------------------------------------------------
+itcl::body Handler::dropped {cid} {
+    log system "dropped: [connectionName $cid]"
+
+    # connection has connection -- forget this entity
+    catch {close $cid}
+    catch {unset _buffer($cid)}
+    catch {unset _protocol($cid)}
+    catch {unset _cname($cid)}
+}
Index: /tags/1.6.0/p2p/log.tcl
===================================================================
--- /tags/1.6.0/p2p/log.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/log.tcl	(revision 6168)
@@ -0,0 +1,134 @@
+# ----------------------------------------------------------------------
+#  LIBRARY: logging routines
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+# ----------------------------------------------------------------------
+#  USAGE: log channel <channel> ?on|off?
+#  USAGE: log <channel> <message>
+#  USAGE: log retrieve
+#  USAGE: log clear
+#
+#  Used to handle log messages within this package.  Typical usage
+#  sequence starts with one or more "log channel" statements, which
+#  define a series of message channels and whether they are on or off.
+#  Then, as "log <channel>" statements are encountered within the code,
+#  they are either passed along to the log file or ignored.  At any
+#  point, the contents of the log file can be retrieved by calling
+#  "log retrieve", and it can be cleared by calling "log clear".
+# ----------------------------------------------------------------------
+
+set log_options(tmpdir) "/tmp"
+set log_options(logfile) ""
+set log_options(logfid) ""
+
+proc log {option args} {
+    global log_options log_channels
+
+    switch -- $option {
+        channel {
+            # ----------------------------------------------------------
+            #  HANDLE: log channel
+            # ----------------------------------------------------------
+            if {[llength $args] > 2} {
+                error "wrong # args: should be \"log channel name ?state?\""
+            }
+            set channel [lindex $args 0]
+            if {[llength $args] == 1} {
+                if {[info exists log_channels($channel)]} {
+                    return $log_channels($channel)
+                }
+                return "off"
+            }
+
+            set state [lindex $args 1]
+            if {![string is boolean $state]} {
+                error "bad value \"$state\": should be on/off"
+            }
+            set log_channels($channel) $state
+
+            # make sure the log file is open and ready
+            if {"" == $log_options(logfid)} {
+                log clear
+            }
+            return $log_channels($channel)
+        }
+        retrieve {
+            # ----------------------------------------------------------
+            #  HANDLE: log retrieve
+            # ----------------------------------------------------------
+            if {[llength $args] != 0} {
+                error "wrong # args: should be \"log retrieve\""
+            }
+            if {[string length $log_options(logfile)] == 0} {
+                return ""
+            }
+            if {[catch {
+                close $log_options(logfid)
+                set fid [open $log_options(logfile) r]
+                set info [read $fid]
+                close $fid
+                set log_options(logfid) [open $log_options(logfile) a]
+              } result]} {
+                return "ERROR: $result"
+            }
+            return $info
+        }
+        clear {
+            # ----------------------------------------------------------
+            #  HANDLE: log clear
+            # ----------------------------------------------------------
+            if {[llength $args] != 0} {
+                error "wrong # args: should be \"log clear\""
+            }
+
+            # close any existing file
+            if {"" != $log_options(logfid)} {
+                catch {close $log_options(logfid)}
+                set log_options(logfid) ""
+            }
+
+            # don't have a log file name yet?  then look for a good name
+            if {[string length $log_options(logfile)] == 0} {
+                set counter 0
+                while {[incr counter] < 500} {
+                    set fname [file join $log_options(tmpdir) log[pid].$counter]
+                    if {[catch {
+                        set fid [open $fname w]; close $fid
+                      } result] == 0} {
+                        # success! use this name
+                        set log_options(logfile) $fname
+                        break
+                    }
+                }
+            }
+            if {[string length $log_options(logfile)] == 0} {
+                error "couldn't open log file in directory $log_options(tmpdir)"
+            }
+            set log_options(logfid) [open $log_options(logfile) w]
+            return ""
+        }
+        default {
+            # ----------------------------------------------------------
+            #  HANDLE: log <channel> <message>
+            # ----------------------------------------------------------
+            if {![info exists log_channels($option)] &&
+                  [lsearch {channel retrieve clear} $option] < 0} {
+                error "bad option \"$option\": should be a channel defined by \"log channel\" or one of channel, retrieve, or clear"
+            }
+            if {$log_channels($option)} {
+                if {[llength $args] != 1} {
+                    error "wrong # args: should be \"log chan message\""
+                }
+                set date [clock format [clock seconds] -format "%m/%d/%Y %H:%M:%S"]
+                puts $log_options(logfid) "$date [lindex $args 0]"
+                flush $log_options(logfid)
+            }
+        }
+    }
+}
Index: /tags/1.6.0/p2p/mkindex
===================================================================
--- /tags/1.6.0/p2p/mkindex	(revision 6168)
+++ /tags/1.6.0/p2p/mkindex	(revision 6168)
@@ -0,0 +1,6 @@
+#!/usr/bin/tclsh
+package require Itcl
+if {"" == $argv} {
+    set argv *
+}
+eval auto_mkindex . $argv
Index: /tags/1.6.0/p2p/options.tcl
===================================================================
--- /tags/1.6.0/p2p/options.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/options.tcl	(revision 6168)
@@ -0,0 +1,73 @@
+# ----------------------------------------------------------------------
+#  P2P: options
+#
+#  This code manages option settings within all of the programs in the
+#  peer to peer job management system.  Options are soft-coded
+#  parameters controlling things like how many peers each node should
+#  be connected to.
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+namespace eval p2p {
+    variable options  ;# array of option settings for this program
+}
+
+# ======================================================================
+#  OPTIONS
+#  These options get the worker started, but new option settings
+#  some from the authority after this worker first connects.
+# ----------------------------------------------------------------------
+#  USAGE:  p2p::options register <name> <defaultValue>
+#  USAGE:  p2p::options set <name> <newValue>
+#  USAGE:  p2p::options get <name>
+#
+#  Use these commands to register and get/set various option settings
+#  used within these programs.  The option settings start with default
+#  values but can be overridden at any point, for example by the
+#  "authority" program.
+# ======================================================================
+proc p2p::options {op args} {
+    global options
+
+    switch -- $op {
+        register {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"p2p::options register name default\""
+            }
+            set opt [lindex $args 0]
+            set def [lindex $args 1]
+            if {[info exists options($opt)]} {
+                error "option \"$opt\" is already registered"
+            }
+            set options($opt) $def
+        }
+        get {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"p2p::options get name\""
+            }
+            set opt [lindex $args 0]
+            if {![info exists options($opt)]} {
+                error "option \"$opt\" is not defined"
+            }
+            return $options($opt)
+        }
+        set {
+            if {[llength $args] != 2} {
+                error "wrong # args: should be \"p2p::options set name default\""
+            }
+            set opt [lindex $args 0]
+            set val [lindex $args 1]
+            if {![info exists options($opt)]} {
+                error "option \"$opt\" is not defined"
+            }
+            set options($opt) $val
+        }
+    }
+}
Index: /tags/1.6.0/p2p/perftest.c
===================================================================
--- /tags/1.6.0/p2p/perftest.c	(revision 6168)
+++ /tags/1.6.0/p2p/perftest.c	(revision 6168)
@@ -0,0 +1,153 @@
+/*
+ * ----------------------------------------------------------------------
+ *  P2P: performance test program for worker nodes
+ *
+ *  This little program gets executed from time to time by each worker
+ *  to measure the performance and available resources of this node.
+ *  It performs a non-trivial calculation involving memory access and
+ *  floating point operations, and returns a single number representing
+ *  the wall time (in microseconds) for this calculation.  That wall
+ *  time rolls up the power of the node and its current availability,
+ *  giving a reasonable estimate of how long a similar calculation
+ *  would take.  We call this unit of work a "wonk" (WOrker Node
+ *  Kapability).
+ * ----------------------------------------------------------------------
+ *  Michael McLennan (mmclennan@purdue.edu)
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+
+#define LARGE_CHUNK_SIZE 10000000
+#define SMALL_CHUNK_SIZE 1000
+
+double ran3();
+
+int
+main(argc,argv)
+    int argc; char **argv;  /* ignored */
+{
+    int i, j;
+    double d, *dvals;
+    long tval;
+    struct timeval tstart, tend;
+
+    /* query the starting wall time for this calculation */
+    if (gettimeofday(&tstart, (struct timezone*)NULL) < 0) {
+        exit(1);
+    }
+
+    /*
+     *  Allocate a large chunk of memory and zero it out.
+     *  This tests available memory and speed of allocation
+     *  to some extent.
+     */
+    dvals = malloc((size_t)(LARGE_CHUNK_SIZE*sizeof(double)));
+    if (dvals == NULL) {
+        printf("out of memory\n");
+        exit(1);
+    }
+    memset(dvals, 0, (size_t)(LARGE_CHUNK_SIZE*sizeof(double)));
+
+    /*
+     *  Scan through the chunk of memory and fill with random
+     *  numbers.  This hits lots of memory pages and causes lots
+     *  of integer arithmetic operations.
+     */
+    ran3(-1234);
+    for (j=0; j < SMALL_CHUNK_SIZE; j++) {
+        for (i=0; i < LARGE_CHUNK_SIZE; i += SMALL_CHUNK_SIZE) {
+            dvals[i+j] = ran3(0);
+        }
+    }
+
+    /*
+     *  Scan back through again and multiply random numbers together.
+     *  This hits logs of memory pages again and causes lots of
+     *  floating point operations.  Use division, since it's more
+     *  expensive than multiplication.
+     */
+    d = 1.0;
+    for (j=0; j < SMALL_CHUNK_SIZE; j++) {
+        for (i=0; i < LARGE_CHUNK_SIZE; i += SMALL_CHUNK_SIZE) {
+            d /= dvals[i+j];
+        }
+    }
+
+    /* query the ending wall time and report the overall time */
+    if (gettimeofday(&tend, (struct timezone*)NULL) < 0) {
+        exit(1);
+    }
+
+    tval = (tend.tv_sec - tstart.tv_sec)*1000000
+             + tend.tv_usec - tstart.tv_usec;
+
+    printf("rappture-wonks/v1 %ld\n", tval);
+    exit(0);
+}
+
+/*
+ * ----------------------------------------------------------------------
+ *  FUNCTION: ran3(seed)
+ *
+ *  This function generates a random number in the range 0.0-1.0.
+ *  Set seed to any negative number to reset the sequence with that
+ *  seed value.
+ *
+ *  This routine is taken from "Numerical Recipes in C" by by William
+ *  H. Press, Brian P. Flannery, Saul A. Teukolsky, William T.
+ *  Vetterling, Chapter 7, p. 283.
+ * ----------------------------------------------------------------------
+ */
+#define MBIG 1000000000
+#define MSEED 161803398
+#define MZ 0
+#define FAC (1.0/MBIG)
+
+double
+ran3(seed)
+    long seed;  /* pass in negative value to restart */
+{
+    static int inext, inextp;
+    static long ma[56];
+    static int iff=0;
+    long mj, mk;
+    int i, ii, k;
+
+    if (seed < 0 || iff == 0) {
+        iff = 1;
+        mj = MSEED - (seed < 0 ? -seed : seed);
+        mj %= MBIG;
+        ma[55] = mj;
+        mk = 1;
+        for (i=1; i < 54; i++) {
+            ii = (21*i) % 55;
+            ma[ii] = mk;
+            mk = mj - mk;
+            if (mk < MZ) mk += MBIG;
+            mj = ma[ii];
+        }
+        for (k=1; k <= 4; k++) {
+            for (i=1; i <= 55; i++) {
+                ma[i] -= ma[1+(i+30) % 55];
+                if (ma[i] < MZ) ma[i] += MBIG;
+            }
+        }
+        inext = 0;
+        inextp = 31;
+    }
+    if (++inext == 56) inext=1;
+    if (++inextp == 56) inextp=1;
+    mj = ma[inext] - ma[inextp];
+    if (mj < MZ) mj += MBIG;
+    ma[inext] = mj;
+    return mj*FAC;
+}
Index: /tags/1.6.0/p2p/protocols.tcl
===================================================================
--- /tags/1.6.0/p2p/protocols.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/protocols.tcl	(revision 6168)
@@ -0,0 +1,122 @@
+# ----------------------------------------------------------------------
+#  P2P: protocol initialization and registration
+#
+#  This file contains p2p::init and p2p::connect routines used to
+#  add protocols to Client and Server objects in the p2p system.
+#  New protocols are stored in the various p-*.tcl files.  This
+#  code loads those files, obtains a list of known protocols, and
+#  then registers the latest version of a protocol in a given
+#  Client or Server connection.
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+namespace eval p2p { # forward declaration }
+
+namespace eval p2p::protocol {
+    variable name2defn  ;# maps protocol name => body of code defining it
+    variable version    ;# maps protocol name => highest /version number
+    variable _tmpobj    ;# used during init/define calls
+    variable _tmpproto  ;# used during init/define calls
+}
+
+# ======================================================================
+#  USAGE: p2p::protocol::register <name> <code>
+#
+#  Various p-*.tcl files use this to define a particular protocol
+#  called <name>.  Calling p2p::protocol::init adds that protocol to
+#  a particular Handler object.  This is done by executing the <code>,
+#  which invokes a series of "define" operations to define the
+#  protocol handlers.
+# ======================================================================
+proc p2p::protocol::register {name code} {
+    variable name2defn
+    variable version
+
+    # store the code needed for this version for later call to init
+    if {[info exists name2defn($name)]} {
+        error "protocol \"$name\" already exists"
+    }
+    set name2defn($name) $code
+
+    # extract the version number from the protocol and save the highest num
+    if {![regexp {(.+)/([0-9]+)$} $name match root vnum]} {
+        set root $name
+        set vnum 1
+    }
+    if {![info exists version($root)] || $vnum > $version($root)} {
+        set version($root) $vnum
+    }
+}
+
+# ======================================================================
+#  USAGE: p2p::protocol::init <handlerObj> <protocol>
+#
+#  Adds all protocol versions matching the <protocol> root name to
+#  the given <handlerObj> object.  For example, the <protocol> might
+#  be "a->b", and this routine will add "a->b/1", "a->b/2", etc.
+#  Returns the highest version of the protocol added to the object.
+# ======================================================================
+proc p2p::protocol::init {obj protocol} {
+    variable name2defn
+    variable version
+    variable _tmpobj
+    variable _tmpproto
+
+    # trim off any version number included in the protocol name
+    regexp {(.+)/[0-9]+$} $protocol match protocol
+
+    set plist $protocol
+    eval lappend plist [array names name2defn $protocol/*]
+    set _tmpobj $obj  ;# used via "define" statements in "catch" below
+
+    set added 0
+    foreach name $plist {
+        if {[info exists name2defn($name)]} {
+            $obj protocol $name
+            $obj define $name exception {message} {
+                variable cid
+                variable handler
+                log error "ERROR from client [$handler connectionName $cid]:  $message"
+            }
+            $obj define $name identity {name} {
+                variable cid
+                variable handler
+                $handler connectionName $cid $name
+                return ""
+            }
+
+            # define the rest of the protocol as registered earlier
+            set _tmpproto $name  ;# used via "define" statements below
+            if {[catch $name2defn($name) err]} {
+                error $err "$err\n    (while adding protocol $name to $obj)"
+            }
+            incr added
+        }
+    }
+
+    if {$added == 0} {
+        error "can't find protocol definition matching \"$protocol\""
+    }
+    return $version($protocol)
+}
+
+# ======================================================================
+#  USAGE: p2p::protocol::define <name> <args> <body>
+#
+#  This gets called implicitly by the bodies of code invoked in the
+#  p2p::protocol::init statements above.  Code bodies should contain
+#  a series of "define" statements, and this is the "define" that
+#  gets invoked, which passes the call onto the _tmpobj where the
+#  protocol is being installed.
+# ======================================================================
+proc p2p::protocol::define {args} {
+    variable _tmpobj
+    variable _tmpproto
+    eval $_tmpobj define $_tmpproto $args
+}
Index: /tags/1.6.0/p2p/random.tcl
===================================================================
--- /tags/1.6.0/p2p/random.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/random.tcl	(revision 6168)
@@ -0,0 +1,49 @@
+# ----------------------------------------------------------------------
+#  LIBRARY: randomization routines
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+expr srand([clock seconds])
+
+# ----------------------------------------------------------------------
+#  USAGE: randomize <list> ?<pickThisMany>?
+#
+#  Scrambles the elements in a list and returns them in random order.
+#  Given a list of peer connections, for example, this function
+#  scrambles the order so that a "foreach" command can traverse them
+#  in a random order.  If <pickThisMany> is specified, then the list
+#  is truncated after that many random entries.  Instead of randomizing
+#  all 10,000 entries, for example, you can pick the first random 10.
+# ----------------------------------------------------------------------
+proc randomize {entries {pickThisMany -1}} {
+    set rlist ""
+    set rlen [llength $entries]
+    for {set i 0} {$i < $rlen} {incr i} {
+        # if we have the desired number of elements, then quit
+        if {$pickThisMany >= 0 && $i >= $pickThisMany} {
+            break
+        }
+
+        # pick a random element and add it to the return list
+        set nrand [expr {int(rand()*[llength $entries])}]
+        lappend rlist [lindex $entries $nrand]
+        set entries [lreplace $entries $nrand $nrand]
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: random <list>
+#
+#  Picks one element at random from the given <list>.
+# ----------------------------------------------------------------------
+proc random {entries} {
+    set nrand [expr {int(rand()*[llength $entries])}]
+    return [lindex $entries $nrand]
+}
Index: /tags/1.6.0/p2p/server.tcl
===================================================================
--- /tags/1.6.0/p2p/server.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/server.tcl	(revision 6168)
@@ -0,0 +1,234 @@
+# ----------------------------------------------------------------------
+#  LIBRARY: core server capability used for p2p infrastructure
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+namespace eval p2p { # forward declaration }
+
+# ======================================================================
+#  USAGE: p2p::server ?-option value -option value ...?
+#
+#  Used to create a new peer-to-peer server object for this program.
+#  Recognizes the following options:
+#    -port ........ port number that the server listens on
+#    -protocols ... list of protocol root names that the server handles
+#               ... any other option supported by Server class
+# ======================================================================
+proc p2p::server {args} {
+    set port "?"
+    set protocols ""
+    set options ""
+    foreach {key val} $args {
+        switch -- $key {
+            -port { set port $val }
+            -protocols { set protocols $val }
+            default { lappend options $key $val }
+        }
+    }
+
+    if {[llength $protocols] == 0} {
+        error "server needs at least one value for -protocols"
+    }
+
+    # create the server
+    set server [eval Server ::#auto $port $options]
+
+    # install the protocols that this server recognizes
+    foreach name $protocols {
+        p2p::protocol::init $server $name
+    }
+    return $server
+}
+
+# ======================================================================
+#  CLASS: Server
+# ======================================================================
+itcl::class Server {
+    inherit Handler
+
+    private variable _port  ;# stores the port that this server listens on
+
+    # name for this server (for log messages)
+    public variable servername "server"
+
+    # this code fragment gets invoked with each new client
+    public variable onconnect ""
+
+    # this code fragment gets invoked when client declares the protocol
+    public variable onprotocol ""
+
+    # this code fragment gets invoked when client drops
+    public variable ondisconnect ""
+
+    constructor {port args} {
+        #
+        # Process option switches for the server.
+        #
+        eval configure $args
+
+        #
+        # Start up the server at the specified port.  If the port
+        # number ends with a ?, then search for the first open port
+        # above that.  The actual port can be queried later via the
+        # "port" method.
+        #
+        if {[regexp {^[0-9]+$} $port]} {
+            socket -server [itcl::code $this accept] $port
+            set _port $port
+        } elseif {[regexp {^[0-9]+\?$} $port]} {
+            set pnum [string trimright $port ?]
+            set tries 500
+            while {[incr tries -1] > 0} {
+                if {[catch {socket -server [itcl::code $this accept] $pnum} result]} {
+                    incr pnum
+                } else {
+                    set _port $pnum
+                    break
+                }
+            }
+            if {$tries <= 0} {
+                error "can't find an open port for server at $port"
+            }
+            log system "$servername started at port $_port"
+        }
+    }
+
+    public method port {}
+    public method broadcast {args}
+    public method connectionSpeaks {cid protocol}
+
+    protected method dropped {cid}
+    private method accept {cid addr port}
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: port
+#
+#  Returns the port number that this server is listening on.  When
+#  the server is first created, this can be set to a hard-coded value,
+#  or to a value followed by a ?.  In that case, the server tries to
+#  find the first open port.  The actual port is reported by this
+#  method.
+# ----------------------------------------------------------------------
+itcl::body Server::port {} {
+    return $_port
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: broadcast ?-protocol <name>? ?-avoid <avoidList>? <message>
+#
+#  Sends a <message> to all clients connected to this server.  If a
+#  client address appears on the -avoid list, then that client is
+#  avoided.  If the -protocol is specified, then the message is sent
+#  only to clients who match the glob-style pattern for the protocol
+#  name.
+# ----------------------------------------------------------------------
+itcl::body Server::broadcast {args} {
+    set pattern "*"
+    set avoidList ""
+    set i 0
+    while {$i < [llength $args]} {
+        set option [lindex $args $i]
+        if {[string index $option 0] == "-"} {
+            switch -- $option {
+                -protocol {
+                    set pattern [lindex $args [expr {$i+1}]]
+                    incr i 2
+                }
+                -avoid {
+                    set avoidList [lindex $args [expr {$i+1}]]
+                    incr i 2
+                }
+                -- {
+                    incr i
+                    break
+                }
+                default {
+                    error "bad option \"$option\": should be -avoid, -protocol, or --"
+                }
+            }
+        } else {
+            break
+        }
+    }
+    if {$i != [llength $args]-1} {
+        error "wrong # args: should be \"broadcast ?-protocol pattern? ?-avoid clients? message\""
+    }
+    set message [lindex $args end]
+
+    set nmesgs 0
+    foreach cid [connections $pattern] {
+        set addr [lindex [connectionName $cid] 0]  ;# x.x.x.x (sockN)
+        if {[llength $avoidList] == 0 || [lsearch $avoidList $addr] < 0} {
+puts "  inbound => [connectionName $cid]"
+            if {[catch {puts $cid $message} result] == 0} {
+                incr nmesgs
+            } else {
+                log error "ERROR: broadcast failed for $cid: $result"
+                log error "  (message was $message)"
+            }
+        }
+    }
+    return $nmesgs
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: accept <cid> <addr> <port>
+#
+#  Invoked automatically whenever a client tries to connect to this
+#  server.  The <cid> is the file handle for this client.  The <addr>
+#  and <port> give the address and port number of the incoming client.
+# ----------------------------------------------------------------------
+itcl::body Server::accept {cid addr port} {
+    fileevent $cid readable [itcl::code $this handle $cid]
+    fconfigure $cid -buffering line
+    connectionSpeaks $cid DEFAULT
+    log system "accepted: $addr ($cid)"
+
+    if {[string length $onconnect] > 0} {
+        uplevel #0 [list $onconnect $cid $addr $port]
+    }
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: connectionSpeaks <client> <protocol>
+#
+#  Used internally to define what protocol the entity on the other
+#  side of the connection speaks.  This is usually invoked when that
+#  entity sends the "protocol" message, and the built-in "protocol"
+#  command in the DEFAULT parser uses this method to register the
+#  protocol for the entity.
+# ----------------------------------------------------------------------
+itcl::body Server::connectionSpeaks {cid protocol} {
+    chain $cid $protocol
+
+    # if there's a callback for the protocol change, execute it here
+    if {[string length $onprotocol] > 0} {
+        uplevel #0 [list $onprotocol $cid $protocol]
+    }
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: dropped <cid>
+#
+#  Invoked automatically whenever a client connection drops, to
+#  log the event and remove all trace of the client.  Invokes any
+#  command hook for this server to note the fact that the client
+#  has dropped.
+# ----------------------------------------------------------------------
+itcl::body Server::dropped {cid} {
+    # if there's a callback to handle the drop, execute it here
+    if {[string length $ondisconnect] > 0} {
+        uplevel #0 [list $ondisconnect [connectionName $cid]]
+    }
+
+    # call the base class method to clean up after the client
+    chain $cid
+}
Index: /tags/1.6.0/p2p/statemachine.tcl
===================================================================
--- /tags/1.6.0/p2p/statemachine.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/statemachine.tcl	(revision 6168)
@@ -0,0 +1,210 @@
+# ----------------------------------------------------------------------
+#  LIBRARY: statemachine
+#
+#  This object comes in handy when building the state machines that
+#  drive the behavior of clients and servers in the peer-to-peer system.
+#  Each state machine has a number of recognized states and trasitions
+#  between the states that kick off actions within the system.
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+# ======================================================================
+#  CLASS: StateMachine
+# ======================================================================
+itcl::class StateMachine {
+    private variable _states  ;# maps states to -enter/-leave commands
+    private variable _trans   ;# maps s1->s2 transitions to commands
+    private variable _current ""
+    private variable _slots   ;# maps statedata name => value
+    private variable _intrans 0
+
+    constructor {args} {
+        eval configure $args
+        set _states(all) ""
+    }
+
+    public method state {name options}
+    public method transition {name options}
+    public method current {} { return $_current }
+    public method all {} { return $_states(all) }
+    public method goto {state}
+    public method statedata {args}
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: state <name> ?-option value -option value ...?
+#
+#  Defines a new state in the state machine.  Recognizes the following
+#  options:
+#    -onenter ... command invoked when state is entered
+#    -onleave ... command invoked when state is left
+# ----------------------------------------------------------------------
+itcl::body StateMachine::state {name args} {
+    array set options {
+        -onenter ""
+        -onleave ""
+    }
+    foreach {key val} $args {
+        if {![info exists options($key)]} {
+            error "bad option \"$key\": should be [join [lsort [array names options]] {, }]"
+        }
+        set options($key) $val
+    }
+
+    if {![regexp {^[-a-zA-Z0-9_]+$} $name]} {
+        error "bad state name \"$name\": should be alphanumeric, including - or _"
+    }
+
+    if {[lsearch $_states(all) $name] >= 0} {
+        error "state \"$name\" already defined"
+    }
+    lappend _states(all) $name
+    set _states($name-onenter) $options(-onenter)
+    set _states($name-onleave) $options(-onleave)
+
+    # start in the first state by default
+    if {$_current == ""} {
+        goto $name
+    }
+    return $name
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: transition <name> ?-option value -option value ...?
+#
+#  Defines the transition from one state to another.  The transition
+#  <name> should be of the form "s1->s2", where "s1" and "s2" are
+#  recognized state names.  Recognizes the following options:
+#    -onchange ... command invoked when transition is followed
+# ----------------------------------------------------------------------
+itcl::body StateMachine::transition {name args} {
+    array set options {
+        -onchange ""
+    }
+    foreach {key val} $args {
+        if {![info exists options($key)]} {
+            error "bad option \"$key\": should be [join [lsort [array names options]] {, }]"
+        }
+        set options($key) $val
+    }
+
+    if {![regexp {^([-a-zA-Z0-9_]+)->([-a-zA-Z0-9_]+)$} $name match state1 state2]} {
+        error "bad transition name \"$name\": should have the form s1->s2"
+    }
+    if {[lsearch $_states(all) $state1] < 0} {
+        error "unrecognized starting state \"$state1\" for transition"
+    }
+    if {[lsearch $_states(all) $state2] < 0} {
+        error "unrecognized ending state \"$state2\" for transition"
+    }
+
+    set _trans($state1->$state2-onchange) $options(-onchange)
+    return $name
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: goto <name>
+#
+#  Forces the state machine to undergo a transition from the current
+#  state to the new state <name>.  If the current state has a -onleave
+#  hook, it is executed first.  If there is a transition between the
+#  states with a -onchange hook, it is executed next.  If the new
+#  state has a -onenter hook, it is executed last.  If any of the
+#  command hooks along the way fail, then the state machine will
+#  drop back to its current state and return the error.
+# ----------------------------------------------------------------------
+itcl::body StateMachine::goto {state} {
+    if {$_intrans} {
+        error "can't change states while making a transition"
+    }
+
+    #
+    # NOTE: Use _'s for all local variables in this routine.  We eval
+    #   the code fragments or -onenter, -onleave, -onchange directly
+    #   in the context of this method.  This keeps them from polluting
+    #   the global scope and gives them access to the "statedata"
+    #   method.  But it could have side effects if the code fragments
+    #   accidentally redefined local variables.  So start all local
+    #   variables with _ to avoid any collisions.
+    #
+    set _sname $state
+
+    if {[lsearch $_states(all) $_sname] < 0} {
+        error "bad state name \"$_sname\": should be one of [join [lsort $_states(all)] {, }]"
+    }
+    set _intrans 1
+
+    # execute any -onleave hook for the current state
+    set _goback 0
+    if {"" != $_current && "" != $_states($_current-onleave)} {
+        if {[catch $_states($_current-onleave) _result]} {
+            set _goback 1
+        }
+    }
+
+    # execute any -onchange hook for the transition
+    if {!$_goback && [info exists _trans($_current->$_sname-onchange)]} {
+        if {[catch $_trans($_current->$_sname-onchange) _result]} {
+            set _goback 1
+        }
+    }
+
+    # execute any -onenter hook for the new state
+    if {!$_goback && "" != $_states($_sname-onenter)} {
+        if {[catch $_states($_sname-onenter) _result]} {
+            set _goback 1
+        }
+    }
+
+    if {$_goback} {
+        if {"" != $_current && "" != $_states($_current-onenter)} {
+            catch $_states($_current-onenter)
+        }
+        set _intrans 0
+        error $_result "$_result\n    (while transitioning from $_current to $_sname)"
+    }
+
+    set _intrans 0
+    set _current $_sname
+    return $_current
+}
+
+# ----------------------------------------------------------------------
+#  USAGE: statedata ?<name>? ?<value>?
+#
+#  Used to get/set special data values stored within the state
+#  machine.  These are like local variables, but can be shared
+#  across the code fragments associated with states and transitions.
+#  We could also use global variables for this, but this allows
+#  each state machine to store its own values.
+# ----------------------------------------------------------------------
+itcl::body StateMachine::statedata {args} {
+    switch [llength $args] {
+        0 {
+            return [array get _slots]
+        }
+        1 {
+            set name [lindex $args 0]
+            if {[info exists _slots($name)]} {
+                return $_slots($name)
+            }
+            return ""
+        }
+        2 {
+            set name [lindex $args 0]
+            set value [lindex $args 1]
+            set _slots($name) $value
+            return $value
+        }
+        default {
+            error "wrong # args: should be \"statedata ?name? ?value?\""
+        }
+    }
+}
Index: /tags/1.6.0/p2p/tclIndex
===================================================================
--- /tags/1.6.0/p2p/tclIndex	(revision 6168)
+++ /tags/1.6.0/p2p/tclIndex	(revision 6168)
@@ -0,0 +1,47 @@
+# Tcl autoload index file, version 2.0
+# This file is generated by the "auto_mkindex" command
+# and sourced to set up indexing information for one or
+# more commands.  Typically each line is a command that
+# sets an element in the auto_index array, where the
+# element name is the name of a command and the value is
+# a script that loads the command.
+
+set auto_index(Handler) [list source [file join $dir handler.tcl]]
+set auto_index(::Handler::protocol) [list source [file join $dir handler.tcl]]
+set auto_index(::Handler::define) [list source [file join $dir handler.tcl]]
+set auto_index(::Handler::connections) [list source [file join $dir handler.tcl]]
+set auto_index(::Handler::connectionName) [list source [file join $dir handler.tcl]]
+set auto_index(::Handler::connectionSpeaks) [list source [file join $dir handler.tcl]]
+set auto_index(::Handler::handle) [list source [file join $dir handler.tcl]]
+set auto_index(::Handler::finalize) [list source [file join $dir handler.tcl]]
+set auto_index(::Handler::dropped) [list source [file join $dir handler.tcl]]
+set auto_index(::Handler::handlerType) [list source [file join $dir handler.tcl]]
+set auto_index(::p2p::server) [list source [file join $dir server.tcl]]
+set auto_index(Server) [list source [file join $dir server.tcl]]
+set auto_index(::Server::port) [list source [file join $dir server.tcl]]
+set auto_index(::Server::broadcast) [list source [file join $dir server.tcl]]
+set auto_index(::Server::accept) [list source [file join $dir server.tcl]]
+set auto_index(::Server::connectionSpeaks) [list source [file join $dir server.tcl]]
+set auto_index(::Server::dropped) [list source [file join $dir server.tcl]]
+set auto_index(::Server::handlerType) [list source [file join $dir server.tcl]]
+set auto_index(::p2p::client) [list source [file join $dir client.tcl]]
+set auto_index(Client) [list source [file join $dir client.tcl]]
+set auto_index(::Client::send) [list source [file join $dir client.tcl]]
+set auto_index(::Client::address) [list source [file join $dir client.tcl]]
+set auto_index(::Client::handlerType) [list source [file join $dir client.tcl]]
+set auto_index(log) [list source [file join $dir log.tcl]]
+set auto_index(randomize) [list source [file join $dir random.tcl]]
+set auto_index(random) [list source [file join $dir random.tcl]]
+set auto_index(::p2p::options) [list source [file join $dir options.tcl]]
+set auto_index(::p2p::protocol::register) [list source [file join $dir protocols.tcl]]
+set auto_index(::p2p::protocol::init) [list source [file join $dir protocols.tcl]]
+set auto_index(::p2p::protocol::define) [list source [file join $dir protocols.tcl]]
+set auto_index(StateMachine) [list source [file join $dir statemachine.tcl]]
+set auto_index(::StateMachine::state) [list source [file join $dir statemachine.tcl]]
+set auto_index(::StateMachine::transition) [list source [file join $dir statemachine.tcl]]
+set auto_index(::StateMachine::goto) [list source [file join $dir statemachine.tcl]]
+set auto_index(::StateMachine::statedata) [list source [file join $dir statemachine.tcl]]
+set auto_index(::p2p::wonks::init) [list source [file join $dir wonks.tcl]]
+set auto_index(::p2p::wonks::current) [list source [file join $dir wonks.tcl]]
+set auto_index(bgerror) [list source [file join $dir foreman.tcl]]
+set auto_index(::Rappture::foreman::bids) [list source [file join $dir foreman.tcl]]
Index: /tags/1.6.0/p2p/test.tcl
===================================================================
--- /tags/1.6.0/p2p/test.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/test.tcl	(revision 6168)
@@ -0,0 +1,676 @@
+# ----------------------------------------------------------------------
+#  TEST HARNESS for the P2P infrastructure
+#
+#  This script drives the test setup and visualization for the P2P
+#  infrastructure.  It launches the authority server(s) and various
+#  workers, and helps to visualize their interactions.
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl
+
+# recognize other library files in this same directory
+set dir [file dirname [info script]]
+lappend auto_path $dir
+
+set time0 [clock seconds]
+set processes ""
+set nodes(all) ""
+set nodeRadius 15
+
+option add *highlightBackground [. cget -background]
+option add *client*background gray
+option add *client*highlightBackground gray
+option add *client*troughColor darkGray
+
+# ======================================================================
+#  SHAPES
+# ======================================================================
+itcl::class Shape {
+    private variable _canvas ""      ;# shape sits on this canvas
+    private variable _ranges ""      ;# list of time ranges for shape
+    private common _shapesOnCanvas   ;# maps canvas => list of shapes
+
+    public variable command ""  ;# command template used to create shape
+
+    constructor {canvas args} {
+        # add this shape to the list of shapes on this canvas
+        lappend _shapesOnCanvas($canvas) $this
+        set _canvas $canvas
+        eval configure $args
+    }
+    destructor {
+        # remove this shape from the list of shapes on the canvas
+        set i [lsearch $_shapesOnCanvas($_canvas) $this]
+        if {$i >= 0} {
+            set _shapesOnCanvas($_canvas) \
+                [lreplace $_shapesOnCanvas($_canvas) $i $i]
+        }
+    }
+
+    # ------------------------------------------------------------------
+    #  METHOD: addRange <time0> <time1>
+    #  Declares that this shape exists during the given time range
+    #  between <time0> and <time1>.
+    # ------------------------------------------------------------------
+    public method addRange {t0 t1} {
+        # see if there's any overlap with existing ranges
+        set ri0 -1
+        set ri1 -1
+        for {set i 0} {$i < [llength $_ranges]} {incr i} {
+            set pair [lindex $_ranges $i]
+            foreach {r0 r1} $pair break
+            if {$r0 >= $t0 && $r0 <= $t1} {
+                set ri0 $i
+            }
+            if {$r1 >= $t0 && $r1 <= $t1} {
+                set ri1 $i
+            }
+            incr i
+        }
+
+        if {$ri0 < 0 && $ri1 < 1} {
+            # doesn't overlap with anything -- insert in right place
+            for {set i 0} {$i < [llength $_ranges]} {incr i} {
+                set pair [lindex $_ranges $i]
+                foreach {r0 r1} $pair break
+                if {$t0 < $r0} break
+            }
+            set _ranges [linsert $_ranges $i [list $t0 $t1]]
+        } elseif {$ri0 >= 0 && $ri1 >= 0} {
+            # overlaps on both limits -- bridge the middle part
+            set r0 [lindex [lindex $_ranges $ri0] 0]
+            set r1 [lindex [lindex $_ranges $ri1] 1]
+            set _ranges [lreplace $_ranges $ri0 $ri1 [list $r0 $r1]] 
+        } elseif {$ri0 >= 0} {
+            # overlaps on the lower limit
+            for {set i [expr {[llength $_ranges]-1}]} {$i >= 0} {incr i -1} {
+                set pair [lindex $_ranges $i]
+                foreach {r0 r1} $pair break
+                if {$r0 > $t0 && $r1 < $t1} {
+                    # remove any ranges completely contained in this one
+                    set _ranges [lreplace $_ranges $i $i] 
+                }
+                set _ranges [lreplace $_ranges $ri0 $ri1 [list $r0 $r1]] 
+            }
+            set pair [lindex $_ranges $ri0]
+            foreach {r0 r1} $pair break
+            set _ranges [lreplace $_ranges $ri0 $ri0 [list $r0 $t1]] 
+        } else {
+            # overlaps on the upper limit
+            for {set i [expr {[llength $_ranges]-1}]} {$i >= 0} {incr i -1} {
+                set pair [lindex $_ranges $i]
+                foreach {r0 r1} $pair break
+                if {$r0 > $t0 && $r1 < $t1} {
+                    # remove any ranges completely contained in this one
+                    set _ranges [lreplace $_ranges $i $i] 
+                }
+                set _ranges [lreplace $_ranges $ri0 $ri1 [list $r0 $r1]] 
+            }
+            set pair [lindex $_ranges $ri1]
+            foreach {r0 r1} $pair break
+            set _ranges [lreplace $_ranges $ri1 $ri1 [list $t0 $r1]] 
+        }
+    }
+
+    # ------------------------------------------------------------------
+    #  METHOD: exists <time>
+    #  Checks to see if this shape exists at the given <time>.
+    #  Returns 1 if so, and 0 otherwise.
+    # ------------------------------------------------------------------
+    public method exists {t} {
+        for {set i 0} {$i < [llength $_ranges]} {incr i} {
+            set pair [lindex $_ranges $i]
+            foreach {r0 r1} $pair break
+            if {$t >= $r0 && $t <= $r1} {
+                return 1
+            }
+        }
+        return 0
+    }
+
+    # ------------------------------------------------------------------
+    #  PROC: draw <canvas> <time>
+    #  Finds the list of shapes that exist on the given <canvas> at
+    #  the specified time, and executes all of their associated
+    #  -command templates, adding them to the canvas.
+    # ------------------------------------------------------------------
+    public proc draw {canvas time} {
+        global times
+        if {[info exists _shapesOnCanvas($canvas)]} {
+            set y0 5
+            if {[info exists times($time)]} {
+                $canvas create text 5 $y0 -anchor nw -text $times($time)
+                incr y0 15
+            }
+            $canvas create text 5 $y0 -anchor nw -tags entity
+
+            foreach obj $_shapesOnCanvas($canvas) {
+                if {[$obj exists $time]} {
+                    set cmd [$obj cget -command]
+                    regsub -all %c $cmd $canvas cmd
+                    eval $cmd
+                }
+            }
+        }
+    }
+
+    # ------------------------------------------------------------------
+    #  PROC: clear <canvas>
+    #  Removes all shapes associated with the specified <canvas>.
+    # ------------------------------------------------------------------
+    public proc clear {canvas} {
+        if {[info exists _shapesOnCanvas($canvas)]} {
+            eval itcl::delete object $_shapesOnCanvas($canvas)
+        }
+    }
+}
+
+# ======================================================================
+#  Build the main interface
+# ======================================================================
+frame .client -borderwidth 8 -relief flat
+pack .client -side right -fill y
+button .client.getbids -text "Get Bids:" -command test_bids
+pack .client.getbids -side top -anchor w
+frame .client.cntls
+pack .client.cntls -side bottom -fill x
+button .client.cntls.run -text "Spend" -command test_spend
+pack .client.cntls.run -side left
+entry .client.cntls.points -width 8
+pack .client.cntls.points -side left
+label .client.cntls.pointsl -text "points"
+pack .client.cntls.pointsl -side left
+
+frame .client.bids
+pack .client.bids -side bottom -expand yes -fill both
+scrollbar .client.bids.ysbar -orient vertical -command {.client.bids.info yview}
+pack .client.bids.ysbar -side right -fill y
+listbox .client.bids.info -yscrollcommand {.client.bids.ysbar set}
+pack .client.bids.info -side left -expand yes -fill both
+
+frame .cntls
+pack .cntls -fill x
+
+button .cntls.start -text "Start" -command test_start
+pack .cntls.start -side left -padx 4 -pady 2
+
+button .cntls.stop -text "Stop" -command test_stop -state disabled
+pack .cntls.stop -side left -padx 4 -pady 2
+
+button .cntls.reload -text "Reload" -command test_reload
+pack .cntls.reload -side left -padx 4 -pady 2
+
+button .cntls.layout -text "New Layout" -command {
+    foreach key [array names nodes *-\[xy\]] {
+        unset nodes($key)
+    }
+    after idle test_reload
+}
+pack .cntls.layout -side left -padx 4 -pady 2
+
+entry .cntls.workers -width 5
+pack .cntls.workers -side right -padx {0 4} -pady 2
+.cntls.workers insert end "3"
+label .cntls.workersl -text "Workers:"
+pack .cntls.workersl -side right -pady 2
+
+frame .player
+pack .player -side bottom -fill x
+
+button .player.back -text "<" -command {test_frame_go -1 nudge}
+pack .player.back -side left -padx 4 -pady 2
+
+button .player.fwd -text ">" -command {test_frame_go 1 nudge}
+pack .player.fwd -side left -padx 4 -pady 2
+
+button .player.err -text "0 errors" -command {wm deiconify .errors; raise .errors}
+pack .player.err -side right -padx 4 -pady 2
+.player.err configure -state disabled
+
+scale .player.scale -label "Frame" -orient horizontal \
+    -from 0 -to 1 -showvalue 0 -command {test_frame_go 1}
+pack .player.scale -side left -expand yes -fill x -padx 4 -pady 2
+
+frame .view
+pack .view -side bottom -anchor w
+label .view.show -text "Show:"
+grid .view.show -row 0 -column 0 -sticky e
+radiobutton .view.network -text "P2P Network" -variable view -value network -command test_view_change
+grid .view.network -row 0 -column 1 -sticky w
+radiobutton .view.traffic -text "Network traffic" -variable view -value traffic -command test_view_change
+grid .view.traffic -row 1 -column 1 -sticky w
+
+frame .diagram
+pack .diagram -expand yes -fill both
+canvas .diagram.network -width 500 -height 400
+canvas .diagram.traffic -width 500 -height 400
+
+after idle .view.traffic invoke
+
+toplevel .errors
+wm title .errors "Error Messages"
+wm withdraw .errors
+wm protocol .errors WM_DELETE_WINDOW {wm withdraw .errors}
+scrollbar .errors.ysbar -orient vertical -command {.errors.info yview}
+pack .errors.ysbar -side right -fill y
+text .errors.info -yscrollcommand {.errors.ysbar set} -font {Courier 12}
+pack .errors.info -expand yes -fill both
+.errors.info tag configure timecode -foreground gray
+.errors.info tag configure error -foreground red -font {Courier 12 bold}
+
+proc test_stop {} {
+    global processes
+
+    # kill any existing processes
+    foreach job $processes {
+        exec kill $job
+    }
+    set processes ""
+
+    .cntls.stop configure -state disabled
+    .cntls.start configure -state normal
+
+    after idle test_reload
+}
+
+proc test_start {} {
+    global processes
+
+    # clean up existing log files...
+    foreach fname [glob -nocomplain /tmp/log*] {
+        file delete $fname
+    }
+
+    # launch a new authority server
+    lappend processes [exec tclsh authority.tcl &]
+
+    # launch a series of workers
+    for {set i 0} {$i < [.cntls.workers get]} {incr i} {
+        lappend processes [exec tclsh worker.tcl &]
+        after [expr {int(rand()*5000)}]
+    }
+
+    .cntls.start configure -state disabled
+    .cntls.stop configure -state normal
+}
+
+proc test_reload {} {
+    global time0 nodes actions times nodeRadius
+
+    array set colors {
+        authority blue
+        worker gray
+        foreman red
+    }
+
+    Shape::clear .diagram.network
+    Shape::clear .diagram.traffic
+    .errors.info configure -state normal
+    .errors.info delete 1.0 end
+    set tmax 0
+    set errs 0
+
+    #
+    # Scan through all files and generate positions for all nodes.
+    #
+    foreach fname [glob -nocomplain /tmp/log*] {
+        set fid [open $fname r]
+        set info [read $fid]
+        close $fid
+
+        set lasttime ""
+        set t0val ""; set first ""
+        set t1val ""; set last ""
+        set info [split $info \n]
+        foreach line $info {
+            if {[regexp {^([0-9]+/[0-9]+/[0-9]+ [0-9]+:[0-9]+:[0-9]+)} $line match tval]} {
+                if {"" == $t0val} {
+                    set first $line
+                    set t0val [expr {([clock scan $tval]-$time0)*100}]
+                } else {
+                    set last $line
+                    set t1val [expr {([clock scan $tval]-$time0)*100 + 99}]
+                }
+            }
+        }
+
+        if {"" == $t0val || "" == $t1val} {
+            # can't find any log statements -- skip this file!
+            continue
+        }
+
+        # get the address for this host
+        if {[regexp {started at port ([0-9]+)} $info match port]} {
+            if {[regexp {options [^\n]+ ip ([^ ]+)} $info match ip]} {
+                set addr $ip:$port
+            } else {
+                set addr 127.0.0.1:$port
+            }
+            set shape oval
+            regexp {^([0-9]+/[0-9]+/[0-9]+ [0-9]+:[0-9]+:[0-9]+) +(authority|worker)} $first match t0 type
+        } elseif {[regexp -- {foreman<-} $info]} {
+            set shape rectangle
+            set addr "foreman"
+            set type "foreman"
+        } else {
+            # unknown log file -- skip it
+            continue
+        }
+        set margin 20
+        set r $nodeRadius
+
+        set nodes($fname) $addr
+        set nodes($addr-log) $fname
+        set nodes($addr-type) $type
+        if {![info exists nodes($addr-x)]} {
+            set w [expr {[winfo width .diagram]-2*$margin}]
+            set h [expr {[winfo height .diagram]-2*$margin}]
+            set nodes($addr-x) [expr {int(rand()*$w) + $margin}]
+            set nodes($addr-y) [expr {int(rand()*$h) + $margin}]
+        }
+        set x $nodes($addr-x)
+        set y $nodes($addr-y)
+
+        foreach canv {.diagram.traffic .diagram.network} {
+            set s [Shape ::#auto $canv -command \
+                [list %c create $shape [expr {$x-$r}] [expr {$y-$r}] \
+                [expr {$x+$r}] [expr {$y+$r}] \
+                -outline black -fill $colors($type) \
+                -tags [list $fname $fname-node]]]
+            $s addRange $t0val $t1val
+        }
+
+        append actions($t0val) "$type $addr online\n"
+        append actions($t1val) "$type $addr offline\n"
+
+        if {$t1val > $tmax} { set tmax $t1val }
+    }
+                
+    #
+    # Scan through files again and generate shapes for all messages
+    #
+    foreach fname [glob -nocomplain /tmp/log*] {
+        set fid [open $fname r]
+        set info [read $fid]
+        close $fid
+puts "\nscanning $fname"
+
+        catch {unset started}
+        set peerlist(addrs) ""
+        set peerlist(time) 0
+        set lasttime ""
+        set counter 0
+        foreach line [split $info \n] {
+            if {[regexp {^([0-9]+/[0-9]+/[0-9]+ [0-9]+:[0-9]+:[0-9]+) (.+)$} $line match time mesg]} {
+                set tval [expr {([clock scan $time]-$time0)*100}]
+
+                if {$time == $lasttime} {
+                    set tval [expr {$tval + [incr counter]}]
+                }
+                set lasttime $time
+
+                if {$tval > $tmax} { set tmax $tval }
+
+                set cid ""
+                if {[regexp {accepted: +([^ ]+) +\((.+)\)} $mesg match addr cid]} {
+                    append actions($tval) $mesg \n
+                    set started(connect$cid-time) $tval
+                    set started(connect$cid-addr) ?
+
+                } elseif {[regexp {dropped: +([^ ]+) +\((.+)\)} $mesg match addr cid] && [info exists started(connect$cid-time)]} {
+                    incr tval 99  ;# end of this second
+                    append actions($tval) $mesg \n
+                    set from $nodes($fname)
+                    set x0 $nodes($from-x)
+                    set y0 $nodes($from-y)
+                    set x1 $nodes($addr-x)
+                    set y1 $nodes($addr-y)
+                    set s [Shape ::#auto .diagram.traffic -command \
+                        [list %c create line $x0 $y0 $x1 $y1 -width 3 -fill gray -tags [list $fname $fname-cnx]]]
+                    $s addRange $started(connect$cid-time) $tval
+
+                    unset started(connect$cid-time)
+                    unset started(connect$cid-addr)
+
+                } elseif {[regexp {(incoming) message from ([^ ]+) \((sock[0-9]+)\): +(.+) => (.*)} $mesg match which addr cid cmd result]
+                       || [regexp {(outgoing) message to ([^ ]+): +(.+)} $mesg match which addr cmd]} {
+                    switch -- $which {
+                        outgoing {
+                            set from $addr
+                            set to $nodes($fname)
+                        }
+                        incoming {
+                            set from $nodes($fname)
+                            set to $addr
+                            # show incoming messages later in time
+                            incr tval 50
+                        }
+                    }
+                    append actions($tval) $mesg \n
+                    set x0 $nodes($from-x)
+                    set y0 $nodes($from-y)
+                    set x1 $nodes($to-x)
+                    set y1 $nodes($to-y)
+                    set w [expr {[winfo width .diagram]/2}]
+
+                    set s [Shape ::#auto .diagram.traffic -command \
+                        [list %c create line [expr $x0-3] [expr $y0-3] [expr $x1-3] [expr $y1-3] -fill black -arrow first -tags transient]]
+                    $s addRange $tval $tval
+
+                    set s [Shape ::#auto .diagram.traffic -command \
+                        [list %c create text [expr {0.5*($x0+$x1)}] [expr {0.5*($y0+$y1)-1}] -width $w -fill black -anchor s -text $cmd -tags transient]]
+                    $s addRange $tval $tval
+
+                    if {$which == "incoming" && "" != [string trim $result]} {
+                        if {[regexp {^ok:} $result]} {
+                            set color black
+                        } else {
+                            set color red
+                        }
+                        set s [Shape ::#auto .diagram.traffic -command \
+                            [list %c create line [expr $x0+3] [expr $y0+3] [expr $x1+3] [expr $y1+3] -fill $color -arrow last -tags transient]]
+                        $s addRange $tval $tval
+
+                        set s [Shape ::#auto .diagram.traffic -command \
+                            [list %c create text [expr {0.5*($x0+$x1)}] [expr {0.5*($y0+$y1)+1}] -width $w -fill $color -anchor n -text $result -tags transient]]
+                        $s addRange $tval $tval
+                    }
+
+                    # no address for this client yet?  then save this info
+                    if {"" != $cid
+                           && [info exists started(connect$cid-addr)]
+                           && $started(connect$cid-addr) == "?"} {
+                        set started(connect$cid-addr) $addr
+                    }
+
+                } elseif {[regexp {connected to peers: (.*)} $mesg match plist]} {
+                    # draw a highlight ring, indicating that peers have changed
+                    set from $nodes($fname)
+                    set x $nodes($from-x)
+                    set y $nodes($from-y)
+                    foreach canv {.diagram.traffic .diagram.network} {
+                        set s [Shape ::#auto $canv -command \
+                            [list %c create oval [expr {$x-$r-3}] [expr {$y-$r-3}] [expr {$x+$r+3}] [expr {$y+$r+3}] -outline red -fill "" -tags transient]]
+                        $s addRange $tval [expr {$tval+20}]
+                    }
+
+                    # draw lines from the previous peer list, now that
+                    # we know it's time range is done.
+                    foreach addr $peerlist(addrs) {
+                        set from $nodes($fname)
+                        set x0 $nodes($from-x)
+                        set y0 $nodes($from-y)
+                        set x1 $nodes($addr-x)
+                        set y1 $nodes($addr-y)
+                        set s [Shape ::#auto .diagram.network -command \
+                            [list %c create line $x0 $y0 $x1 $y1 -width 3 -fill gray -tags [list $fname $fname-cnx]]]
+                        $s addRange $peerlist(time) $tval
+                    }
+
+                    # save the start of this new peer list
+                    set peerlist(addrs) $plist
+                    set peerlist(time) $tval
+                } elseif {[regexp {ERROR} $mesg match addr]} {
+                    .errors.info insert end $time timecode $mesg error "\n"
+                    incr errs
+                }
+                set times($tval) $time
+            }
+        }
+
+        # any connections hanging out that we haven't drawn?
+        foreach key [array names started connect*-addr] {
+            regexp {connect([^-]+)-addr} $key match cid
+            set from $nodes($fname)
+            set addr $started($key)
+
+            if {![info exists nodes($addr-x)]} {
+                unset started(connect$cid-time)
+                unset started(connect$cid-addr)
+                continue
+            }
+            set x0 $nodes($from-x)
+            set y0 $nodes($from-y)
+            set x1 $nodes($addr-x)
+            set y1 $nodes($addr-y)
+            set s [Shape ::#auto .diagram.traffic -command \
+                [list %c create line $x0 $y0 $x1 $y1 -width 3 -fill gray -tags [list $fname $fname-cnx]]]
+            $s addRange $started(connect$cid-time) $tval
+
+            unset started(connect$cid-time)
+            unset started(connect$cid-addr)
+        }
+
+        .diagram.traffic bind $fname <Enter> "
+            %W itemconfigure $fname-node -outline red
+            %W itemconfigure $fname-cnx -fill red
+            %W raise $fname-cnx
+            %W itemconfigure entity -text {$nodes($fname)}
+        "
+        .diagram.traffic bind $fname <Leave> "
+            %W itemconfigure $fname-node -outline black
+            %W itemconfigure $fname-cnx -fill gray
+            %W raise transient
+            %W itemconfigure entity -text {}
+        "
+
+        foreach canv {.diagram.network .diagram.traffic} {
+            $canv bind $fname-node <ButtonPress-1> \
+                [list worker_node_click %W $fname %x %y]
+            $canv bind $fname-node <B1-Motion> \
+                [list worker_node_drag %W $fname %x %y]
+            $canv bind $fname-node <ButtonRelease-1> \
+                [list worker_node_release %W $fname %x %y]
+        }
+
+        # any peer connections that we haven't drawn?  then do it now
+        foreach addr $peerlist(addrs) {
+            set from $nodes($fname)
+            set x0 $nodes($from-x)
+            set y0 $nodes($from-y)
+            set x1 $nodes($addr-x)
+            set y1 $nodes($addr-y)
+            set s [Shape ::#auto .diagram.network -command \
+                [list %c create line $x0 $y0 $x1 $y1 -width 3 -fill gray -tags [list $fname $fname-cnx]]]
+            $s addRange $peerlist(time) $tmax
+        }
+
+        .diagram.network bind $fname <Enter> "
+            %W itemconfigure $fname-node -outline red
+            %W itemconfigure $fname-cnx -fill red
+            %W raise $fname-cnx
+        "
+        .diagram.network bind $fname <Leave> "
+            %W itemconfigure $fname-node -outline black
+            %W itemconfigure $fname-cnx -fill gray
+            %W raise transient
+        "
+    }
+    .player.scale configure -to $tmax
+    .errors.info configure -state disabled
+    if {$errs == 0} {
+        .player.err configure -state normal -text "0 errors"
+        .player.err configure -state disabled
+    } else {
+        .player.err configure -state normal -text "$errs error[expr {($errs == 1) ? {} : {s}}]"
+    }
+
+    after cancel test_visualize
+    after idle test_visualize
+}
+
+proc worker_node_click {canv fname x y} {
+    $canv itemconfigure $fname-node -stipple gray50
+}
+
+proc worker_node_drag {canv fname x y} {
+    global nodeRadius
+    $canv itemconfigure $fname-node -stipple ""
+    $canv coords $fname-node [expr {$x-$nodeRadius}] [expr {$y-$nodeRadius}] [expr {$x+$nodeRadius}] [expr {$y+$nodeRadius}]
+}
+
+proc worker_node_release {canv fname x y} {
+    global move nodes
+
+    worker_node_drag $canv $fname $x $y
+    $canv itemconfigure $fname-node -stipple ""
+
+    set addr $nodes($fname)
+    set nodes($addr-x) $x
+    set nodes($addr-y) $y
+    after idle test_reload
+}
+
+proc test_frame_go {dir position} {
+    global actions times
+
+    set tmax [.player.scale cget -to]
+    if {"nudge" == $position} {
+        set nframe [.player.scale get]
+        incr nframe $dir
+    } else {
+        set nframe $position
+    }
+
+    while {![info exists actions($nframe)] && $nframe > 0 && $nframe < $tmax} {
+        incr nframe $dir
+    }
+
+    # set the scale to this new position
+    .player.scale configure -command ""
+    .player.scale set $nframe
+    .player.scale configure -command {test_frame_go 1}
+
+    after cancel test_visualize
+    after idle test_visualize
+}
+
+proc test_visualize {} {
+    .diagram.traffic delete all
+    Shape::draw .diagram.traffic [.player.scale get]
+    .diagram.traffic raise transient
+
+    .diagram.network delete all
+    Shape::draw .diagram.network [.player.scale get]
+    .diagram.network raise transient
+}
+
+proc test_view_change {} {
+    global view
+    foreach widget [pack slaves .diagram] {
+        catch {pack forget $widget}
+    }
+    pack .diagram.$view -expand yes -fill both
+}
+
+proc test_bids {} {
+    set info [Rappture::foreman::bids]
+    .client.bids.info delete 0 end
+    eval .client.bids.info insert end $info
+}
Index: /tags/1.6.0/p2p/wonks.tcl
===================================================================
--- /tags/1.6.0/p2p/wonks.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/wonks.tcl	(revision 6168)
@@ -0,0 +1,202 @@
+# ----------------------------------------------------------------------
+#  P2P: wonks
+#
+#  This code manages the calculation of "wonks" within a worker node.
+#  Wonks are measured by executing the "perftest" program on the
+#  worker node to see how fast it can finish the calculation.
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+namespace eval p2p { # forward declaration }
+
+namespace eval p2p::wonks {
+    # remember this directory -- perftest sits here too
+    variable dir [file dirname [info script]]
+
+    # version info from perftest
+    variable version "?"
+}
+
+# number of seconds between each check of system load
+p2p::options register wonks_time_between_checks 60000
+
+# fraction between 0-1 indicating a significant change in wonks
+p2p::options register wonk_tolerance 0.1
+
+# ----------------------------------------------------------------------
+#  WONKS CHECK
+#
+#  This is the state machine controlling the periodic testing for
+#  the available wonks on this machine.  The "perftest" program is
+#  executed from time to time to compute the available wonks, and
+#  the results are stored in an array of tuples.  At any point, we
+#  can estimate the number of wonks by getting the load and available
+#  memory and interpolating within the available tuple data.
+# ----------------------------------------------------------------------
+StateMachine wonks-check
+
+# sit here at times between sampling
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+wonks-check state idle -onenter {
+    set delay [p2p::options get wonks_time_between_checks]
+    after $delay {wonks-check goto checking}
+} -onleave {
+    after cancel {wonks-check goto checking}
+}
+
+# sit here while we're sampling
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+wonks-check state checking
+
+# when moving to the checking state, test available wonks
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+wonks-check transition idle->checking -onchange {
+    set data [wonks-check statedata perftable]
+
+    set getWonks 0  ;# probably won't have to use perftest
+
+    # measure system load and estimate the available wonks
+    foreach {load mem} [Rappture::sysinfo load1 freeswap] break
+    set load [format "%.1f" $load]
+    set mem [expr {$mem/1048576}]  ;# in megabytes
+    set wval 0
+    set nsamples 0
+
+    if {![$data inrange [list $load $mem -- --]]} {
+        # outside range of data -- must call perftest
+        set getWonks 1
+    } else {
+        set rec [$data find -nearest [list $load $mem -- --]]
+        set prevload [lindex $rec 0]
+        set prevmem [lindex $rec 1]
+        set tol [p2p::options get wonk_tolerance]
+
+        set closeEnough 1
+        if {"" == $prevload || ($load+$prevload > 0
+              && abs($load-$prevload)/(0.5*double($load+$prevload)) > $tol)} {
+            # load differs by more than the tolerance -- must test
+            set closeEnough 0
+        } elseif {"" == $prevmem || ($mem+$prevmem > 0
+              && abs($mem-$prevmem)/(0.5*double($mem+$prevmem)) > $tol)} {
+            set closeEnough 0
+        }
+
+        if {$closeEnough} {
+            # close enough to some other sample point
+            # update the existing data point in the table
+            set load $prevload
+            set mem $prevmem
+
+            set wval [lindex $rec 2]
+            set nsamples [lindex $rec 3]
+            if {$nsamples < 5} {
+                # not very many samples? then do another
+                set getWonks 1
+            } elseif {$nsamples < 50 && rand() > 0.9} {
+                # if we have a lot of samples do another from time to time
+                set getWonks 1
+            }
+        }
+    }
+
+    # if we need a new reading, exec the perftest program...
+    if {$getWonks} {
+        # Run the program, but don't use exec, since it blocks.
+        # Instead, run it in the background and harvest its output later.
+        set prog [open "| [file join $p2p::wonks::dir perftest]" r]
+        fileevent $prog readable {wonks-check goto update}
+        wonks-check statedata sysinfo [list $load $mem $wval $nsamples]
+        wonks-check statedata prog $prog
+    } else {
+        after idle {wonks-check goto idle}
+    }
+}
+
+# go here when perftest has finished
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+wonks-check state update
+
+# when moving to the update state, store the data from perftest
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+wonks-check transition checking->update -onchange {
+    set data [wonks-check statedata perftable]
+    set prog [wonks-check statedata prog]
+
+    if {[catch {read $prog} msg] == 0} {
+        if {[regexp {^([^ ]+) +([0-9]+)} $msg match vstr wval]} {
+            set p2p::wonks::version $vstr
+            foreach {load mem oldwval nsamples} [wonks-check statedata sysinfo] break
+            if {$nsamples >= 1} {
+                # average new value with old values
+                set wval [expr {$wval/double($nsamples+1)
+                                 + $nsamples/double($nsamples+1)*$oldwval}]
+            }
+            $data delete [list $load $mem -- --]
+            $data add [list $load $mem $wval [incr nsamples]]
+        } else {
+            log error "ERROR: performance test failed: $msg"
+        }
+    }
+    catch {close $prog}
+    wonks-check statedata prog ""
+    wonks-check statedata sysinfo ""
+
+    after idle {wonks-check goto idle}
+}
+
+# ----------------------------------------------------------------------
+#  COMMAND:  p2p::wonks::init
+#
+#  Invoked when a worker node starts up to initialize this part of
+#  the package.  This triggers autoloading of the file, and also
+#  initializes variables used by the functions in this file.
+# ----------------------------------------------------------------------
+proc p2p::wonks::init {} {
+    variable version
+    set version "?"
+
+    set data [Rappture::tuples ::#auto]
+    $data dimension add load1
+    $data dimension add freeswap
+    $data dimension add wonks
+    $data dimension add nsamples
+    wonks-check statedata perftable $data
+
+    wonks-check goto idle
+}
+
+# ----------------------------------------------------------------------
+#  COMMAND:  p2p::wonks::current
+#
+#  Used to estimate the current performance of this node as a number
+#  of wonks.  Takes
+# ----------------------------------------------------------------------
+proc p2p::wonks::current {} {
+    foreach {load mem} [Rappture::sysinfo load1 freeswap] break
+    set load [format "%.1f" $load]
+    set mem [expr {$mem/1048576}]  ;# in megabytes
+
+    set data [wonks-check statedata perftable]
+    if {[$data inrange [list $load $mem -- --]]} {
+        set wval [$data interpolate wonks [list $load $mem -- --]]
+        return [list $p2p::wonks::version [expr {round($wval)}]]
+    }
+
+    # don't have any data -- we're forced to exec perftest and block
+    if {[catch {exec [file join $p2p::wonks::dir perftest]} msg] == 0
+          && [regexp {^([^ ]+) +([0-9]+)} $msg match vstr wval]} {
+        $data add [list $load $mem $wval 1]
+        set p2p::wonks::version $vstr
+        return [list $vstr $wval]
+    }
+
+    # can't even exec perftest -- return some large bogus value
+    return [list bogus 1000000]
+}
Index: /tags/1.6.0/p2p/worker.tcl
===================================================================
--- /tags/1.6.0/p2p/worker.tcl	(revision 6168)
+++ /tags/1.6.0/p2p/worker.tcl	(revision 6168)
@@ -0,0 +1,696 @@
+# ----------------------------------------------------------------------
+#  P2P: worker node in P2P mesh bidding on and executing jobs
+#
+#  This server is a typical worker node in the P2P mesh for HUBzero
+#  job execution.  It talks to other workers to distribute the load
+#  of job requests.  It bids on jobs based on its current resources
+#  and executes jobs to earn points from the central authority.
+# ----------------------------------------------------------------------
+#  Michael McLennan (mmclennan@purdue.edu)
+# ======================================================================
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# recognize other library files in this same directory
+set dir [file dirname [info script]]
+lappend auto_path $dir
+
+# handle log file for this worker
+log channel error on
+log channel system on
+log channel debug on
+
+proc ::bgerror {err} { log error "ERROR: $err $::errorInfo" }
+
+
+set myaddress "?:?"  ;# address/port for this worker
+
+# set of connections for authority servers
+p2p::options register authority_hosts 127.0.0.1:9001
+
+# register with the central authority at this frequency
+p2p::options register time_between_authority_checks 60000
+
+# rebuild the peer-to-peer network at this frequency
+p2p::options register time_between_network_rebuilds 600000
+
+# this worker should try to connect with this many other peers
+p2p::options register max_peer_connections 4
+
+# workers propagate messages until time-to-live reaches 0
+p2p::options register peer_time_to_live 4
+
+# ======================================================================
+#  PROTOCOL: hubzero:worker<-authority/1
+#
+#  The worker initiates communication with the authority, and the
+#  authority responds by sending these messages.
+# ======================================================================
+p2p::protocol::register hubzero:worker<-authority/1 {
+
+    # ------------------------------------------------------------------
+    #  INCOMING: options <key1> <value1> <key2> <value2> ...
+    #  These option settings coming from the authority override the
+    #  option settings built into the client.  The authority probably
+    #  has a more up-to-date list of other authorities and better
+    #  policies for living within the network.
+    # ------------------------------------------------------------------
+    define options {args} {
+        global server myaddress
+
+        array set options $args
+        foreach key [array names options] {
+            catch {p2p::options set $key $options($key)}
+        }
+
+        if {[info exists options(ip)]} {
+            set myaddress $options(ip):[$server port]
+            log debug "my address $myaddress"
+        }
+        return ""
+    }
+
+    # ------------------------------------------------------------------
+    #  INCOMING: peers <listOfAddresses>
+    #  This message comes in after this worker has sent the "peers"
+    #  message to request the current list of peers.  The
+    #  <listOfAddresses> is a list of host:port addresses that this
+    #  worker should contact to enter the p2p network.
+    # ------------------------------------------------------------------
+    define peers {plist} {
+        global peers
+        set peers(all) $plist
+        after idle {peer-network goto measure}
+
+        # now that we've gotten the peers, we're done with the authority
+        authority-connection goto idle
+        return ""
+    }
+
+    # ------------------------------------------------------------------
+    #  INCOMING: identity
+    #  Used for debugging, so that each client can identify itself by
+    #  name to this worker.
+    # ------------------------------------------------------------------
+    define identity {name} {
+        variable cid
+        variable handler
+        $handler connectionName $cid $name
+        return ""
+    }
+}
+
+# ======================================================================
+#  PROTOCOL: hubzero:worker<-foreman/1
+#
+#  The foreman initiates communication with a worker, and sends the
+#  various messages supported below.
+# ======================================================================
+p2p::protocol::register hubzero:worker<-foreman/1 {
+
+    # ------------------------------------------------------------------
+    #  INCOMING: solicit
+    #  Foremen send this message to solicit bids for a simulation job.
+    # ------------------------------------------------------------------
+    define solicit {args} {
+        variable cid
+        log debug "solicitation request from foreman: $args"
+        eval Solicitation ::#auto $args -connection $cid
+        return ""
+    }
+}
+
+# ======================================================================
+#  PROTOCOL: hubzero:workers<-workerc/1
+#
+#  Workers initiate connections with other workers as peers.  The
+#  following messages are sent by worker clients to the worker server.
+# ======================================================================
+p2p::protocol::register hubzero:workers<-workerc/1 {
+    # ------------------------------------------------------------------
+    #  INCOMING: identity
+    #  Used for debugging, so that each client can identify itself by
+    #  name to this worker.
+    # ------------------------------------------------------------------
+    define identity {name} {
+        variable cid
+        variable handler
+        $handler connectionName $cid $name
+        return ""
+    }
+
+    # ------------------------------------------------------------------
+    #  INCOMING: ping
+    #  If another worker sends "ping", they are trying to measure the
+    #  speed of the connection.  Send back a "pong" message.  If this
+    #  worker is close by, the other worker will stay connected to it.
+    # ------------------------------------------------------------------
+    define ping {} {
+        return "pong"
+    }
+
+    # ------------------------------------------------------------------
+    #  INCOMING: solicit -job info -path hosts -token xxx
+    #  Workers send this message on to their peers to solicit bids
+    #  for a simulation job.
+    # ------------------------------------------------------------------
+    define solicit {args} {
+        variable cid
+        log debug "solicitation request from peer: $args"
+        eval Solicitation ::#auto $args -connection $cid
+        return ""
+    }
+
+    # ------------------------------------------------------------------
+    #  INCOMING: proffer <token> <details>
+    #  Workers send this message back after a "solicit" request with
+    #  details about what they can offer in terms of CPU power.  When
+    #  a worker has received all replies from its peers, it sends back
+    #  its own proffer message to the client that started the
+    #  solicitation.
+    # ------------------------------------------------------------------
+    define proffer {token details} {
+        Solicitation::proffer $token $details
+        return ""
+    }
+}
+
+# ======================================================================
+#  PROTOCOL: hubzero:workerc<-workers/1
+#
+#  The following messages are received by a worker client in response
+#  to the requests that they send to a worker server.
+# ======================================================================
+p2p::protocol::register hubzero:workerc<-workers/1 {
+    # ------------------------------------------------------------------
+    #  INCOMING: identity
+    #  Used for debugging, so that each client can identify itself by
+    #  name to this worker.
+    # ------------------------------------------------------------------
+    define identity {name} {
+        variable cid
+        variable handler
+        $handler connectionName $cid $name
+        return ""
+    }
+
+    # ------------------------------------------------------------------
+    #  INCOMING: pong
+    #  When forming the peer-to-peer network, workers send ping/pong
+    #  messages to one another to measure the latency.
+    # ------------------------------------------------------------------
+    define pong {} {
+        global peers
+        variable handler
+        set now [clock clicks -milliseconds]
+        set delay [expr {$now - $peers(ping-$handler-start)}]
+        set peers(ping-$handler-latency) $delay
+        if {[incr peers(responses)] >= [llength $peers(testing)]} {
+            after cancel {peer-network goto finalize}
+            after idle {peer-network goto finalize}
+        }
+        return ""
+    }
+
+    # ------------------------------------------------------------------
+    #  INCOMING: solicit -job info -path hosts -token xxx
+    #  Workers send this message on to their peers to solicit bids
+    #  for a simulation job.
+    # ------------------------------------------------------------------
+    define solicit {args} {
+        variable cid
+        log debug "solicitation request from peer: $args"
+        eval Solicitation ::#auto $args -connection $cid
+        return ""
+    }
+
+    # ------------------------------------------------------------------
+    #  INCOMING: proffer <token> <details>
+    #  Workers send this message back after a "solicit" request with
+    #  details about what they can offer in terms of CPU power.  When
+    #  a worker has received all replies from its peers, it sends back
+    #  its own proffer message to the client that started the
+    #  solicitation.
+    # ------------------------------------------------------------------
+    define proffer {token details} {
+        Solicitation::proffer $token $details
+        return ""
+    }
+}
+
+# ----------------------------------------------------------------------
+#  COMMAND:  broadcast_to_peers <message> ?<avoidList>?
+#
+#  Used to broadcast a message out to all peers.  The <message> must
+#  be one of the commands defined in the worker protocol.  If there
+#  are no peer connections yet, this command does nothing.  If any
+#  peer appears on the <avoidList>, it is skipped.  Returns the
+#  number of messages sent out, so this peer knows how many replies
+#  to wait for.
+# ----------------------------------------------------------------------
+proc broadcast_to_peers {message {avoidList ""}} {
+    global server peers
+
+    #
+    # Build a list of all peer addresses, so we know who we're
+    # going to send this message out to.
+    #
+    set recipients ""
+    foreach key [array names peers current-*] {
+        set addr [$peers($key) address]
+        if {[lsearch $avoidList $addr] < 0} {
+            lappend recipients $addr
+        }
+    }
+    foreach cid [$server connections hubzero:workers<-workerc/1] {
+        set addr [lindex [$server connectionName $cid] 0]  ;# x.x.x.x (sockN)
+        if {[llength $avoidList] == 0 || [lsearch $avoidList $addr] < 0} {
+            lappend recipients $addr
+        }
+    }
+
+    #
+    # If the message has any @RECIPIENTS fields, replace them
+    # with the list of recipients
+    #
+    regsub -all @RECIPIENTS $message $recipients message
+
+    #
+    # Send the message out to all peers.  Keep a count and double-check
+    # it against the list of recipients generated above.
+    #
+    set nmesgs 0
+
+    # send off to other workers that this one has connected to
+    foreach key [array names peers current-*] {
+        set addr [$peers($key) address]
+        if {[lsearch $avoidList $addr] < 0} {
+            if {[catch {$peers($key) send $message} err] == 0} {
+                incr nmesgs
+            } else {
+                log error "ERROR: broadcast failed to [$peers($key) address]: $result\n  (message was \"$message\")"
+            }
+        }
+    }
+
+    # send off to other workers that connected to this one
+    foreach cid [$server connections hubzero:workers<-workerc/1] {
+        set addr [lindex [$server connectionName $cid] 0]  ;# x.x.x.x (sockN)
+        if {[llength $avoidList] == 0 || [lsearch $avoidList $addr] < 0} {
+            if {[catch {puts $cid $message} result] == 0} {
+                incr nmesgs
+            } else {
+                log error "ERROR: broadcast failed for $cid: $result"
+                log error "  (message was $message)"
+            }
+        }
+    }
+
+    # did we send the right number of messages?
+    if {[llength $recipients] != $nmesgs} {
+        log error "ERROR: sent only $nmesgs messages to peers {$recipients}"
+    }
+
+    return $nmesgs
+}
+
+# ----------------------------------------------------------------------
+#  COMMAND:  worker_got_protocol
+#
+#  Invoked whenever a peer sends their protocol message to this
+#  worker.  Sends the same protocol name back, so the other worker
+#  understands what protocol we're speaking.
+# ----------------------------------------------------------------------
+proc worker_got_protocol {cid protocol} {
+    switch -glob -- $protocol {
+        *<-worker* {
+            puts $cid [list protocol hubzero:workerc<-workers/1]
+        }
+        *<-foreman* {
+            puts $cid [list protocol hubzero:foreman<-worker/1]
+        }
+        DEF* {
+            # do nothing
+        }
+        default {
+            error "don't recognize protocol \"$protocol\""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+#  COMMAND:  worker_got_dropped <address>
+#
+#  Invoked whenever an inbound connection to this worker drops.
+#  At some point we should try updating our connections to other
+#  peers, to replace this missing connection.
+# ----------------------------------------------------------------------
+proc worker_got_dropped {addr} {
+    global peers
+    if {[info exists peers(current-$addr)]} {
+        unset peers(current-$addr)
+        after cancel {peer-network goto measure}
+        after 5000 {peer-network goto measure}
+log debug "peer dropped: $addr"
+    }
+}
+
+# ======================================================================
+#  Connect to one of the authorities to get a list of peers.  Then,
+#  sit in the event loop and process events.
+# ======================================================================
+p2p::wonks::init
+
+set server [p2p::server -port 9101? \
+        -protocols {hubzero:workers<-workerc hubzero:worker<-foreman} \
+        -servername worker \
+        -onprotocol worker_got_protocol \
+        -ondisconnect worker_got_dropped]
+
+# ----------------------------------------------------------------------
+#  AUTHORITY CONNECTION
+#
+#  This is the state machine representing the connection to the
+#  authority server.  We start in the "idle" state.  Whenever we
+#  try to move to "connected", we'll open a connection to an authority
+#  and request updated information on workers.  If that connection
+#  fails, we'll get kicked back to "idle" and we'll try again later.
+# ----------------------------------------------------------------------
+StateMachine authority-connection
+authority-connection statedata cnx ""
+
+# sit here whenever we don't have a connection
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+authority-connection state idle -onenter {
+    # have an open connection? then close it
+    if {"" != [statedata cnx]} {
+        catch {itcl::delete object [statedata cnx]}
+        statedata cnx ""
+    }
+    # try to connect again later
+    set delay [p2p::options get time_between_authority_checks]
+    after $delay {authority-connection goto connected}
+} -onleave {
+    after cancel {authority-connection goto connected}
+}
+
+# sit here after we're connected and waiting for a response
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+authority-connection state connected
+
+# when moving to the connected state, make a connection
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+authority-connection transition idle->connected -onchange {
+    global server
+
+    # connect to the authority and request a list of peers
+    statedata cnx ""
+    foreach addr [randomize [p2p::options get authority_hosts]] {
+        if {[catch {p2p::client -address $addr \
+            -sendprotocol hubzero:authority<-worker/1 \
+            -receiveprotocol hubzero:worker<-authority/1} result] == 0} {
+            statedata cnx $result
+            break
+        }
+    }
+
+    if {"" != [statedata cnx]} {
+        [statedata cnx] send "listening [$server port]"
+        [statedata cnx] send "peers"
+    } else {
+        error "can't connect to any authority\nAUTHORITY LIST: [p2p::options get authority_hosts]"
+    }
+}
+
+# ----------------------------------------------------------------------
+#  PEER-TO-PEER CONNECTIONS
+#
+#  This is the state machine representing the network of worker peers.
+#  We start in the "idle" state.  From time to time we move to the
+#  "measure" state and attempt to establish connections with a set
+#  peers.  We then wait for ping/pong responses and move to "finalize".
+#  When we have all responses, we move to "finalize" and finalize all
+#  connections, and then move back to "idle".
+# ----------------------------------------------------------------------
+StateMachine peer-network
+peer-network statedata cnx ""
+
+# sit here when the peer network is okay
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+peer-network state idle -onenter {
+    # try to connect again later
+    set delay [p2p::options get time_between_network_rebuilds]
+    after $delay {peer-network goto measure}
+} -onleave {
+    after cancel {peer-network goto measure}
+}
+
+# sit here when we need to rebuild the peer-to-peer network
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+peer-network state measure
+
+# when moving to the start state, make connections to a bunch of peers
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+peer-network transition idle->measure -onchange {
+    global server myaddress peers
+
+    #
+    # Get a list of workers already connected to this one
+    # with an inbound connection to the server.
+    #
+    foreach cid [$server connections hubzero:workers<-workerc/1] {
+        set addr [lindex [$server connectionName $cid] 0]
+        set inbound($addr) $cid
+    }
+
+    #
+    # Pick a random group of peers and try to connect to them.
+    # Start with the existing peers to see if their connection
+    # is still favorable, and then add a random bunch of others.
+    #
+    set peers(testing) ""
+    set peers(responses) 0
+    foreach key [array names peers current-*] {
+        set peer $peers($key)
+        lappend peers(testing) $peer
+    }
+
+    #
+    # Pick other peers at random.  We don't have to try all
+    # peers--just some number that is much larger than the
+    # final number we want to talk to.
+    #
+    set maxpeers [p2p::options get max_peer_connections]
+    foreach addr [randomize $peers(all) [expr {10*$maxpeers}]] {
+        #
+        # Avoid connecting to ourself, or to peers that we're
+        # already connected to (either as inbound connections
+        # to the server or as outbound connections to others).
+        #
+        if {$addr == $myaddress
+              || [info exists peers(current-$addr)]
+              || [info exists inbound($addr)]} {
+            continue
+        }
+
+        if {[catch {p2p::client -address $addr \
+            -sendprotocol hubzero:workers<-workerc/1 \
+            -receiveprotocol hubzero:workerc<-workers/1} cnx]} {
+            continue
+        }
+        $cnx send "identity $myaddress"
+        lappend peers(testing) $cnx
+
+        # have enough connections to test?
+        if {[llength $peers(testing)] >= 2*$maxpeers} {
+            break
+        }
+    }
+
+    #
+    # Now, loop through all peers and send a "ping" message.
+    #
+    foreach cnx $peers(testing) {
+        # mark the time and send a ping to this peer
+        set peers(ping-$cnx-start) [clock clicks -milliseconds]
+        $cnx send "ping"
+    }
+
+    # if this test takes too long, just give up
+    after 10000 {peer-network goto finalize}
+}
+
+# sit here when we need to rebuild the peer-to-peer network
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+peer-network state finalize -onenter {
+    after cancel {peer-network goto finalize}
+
+    # everything is finalized now, so go to idle
+    after idle {peer-network goto idle}
+}
+
+# when moving to the finalize state, decide on the network of peers
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+peer-network transition measure->finalize -onchange {
+    global peers
+
+    set maxpeers [p2p::options get max_peer_connections]
+
+    # build a list:  {peer latency} {peer latency} ...
+    set plist ""
+    foreach obj $peers(testing) {
+        if {[info exists peers(ping-$obj-latency)]} {
+            lappend plist [list $obj $peers(ping-$obj-latency)]
+        }
+    }
+
+    # sort the list and extract the top peers
+    set plist [lsort -increasing -index 1 $plist]
+    set plist [lrange $plist 0 [expr {$maxpeers-1}]]
+
+    set currentpeers [array names peers current-*]
+
+    # transfer the top peers to the "current" list
+    set all ""
+    foreach rec $plist {
+        set peer [lindex $rec 0]
+        set addr [$peer address]
+        set peers(current-$addr) $peer
+        lappend all $addr
+
+        # if it is already on the "current" list, then keep it
+        set i [lsearch $currentpeers current-$addr]
+        if {$i >= 0} {
+            set currentpeers [lreplace $currentpeers $i $i]
+        }
+        set i [lsearch $peers(testing) $peer]
+        if {$i >= 0} {
+            set peers(testing) [lreplace $peers(testing) $i $i]
+        }
+    }
+    log system "connected to peers: $all"
+
+    # get rid of old peers that we no longer want to talk to
+    foreach leftover $currentpeers {
+        itcl::delete object $peers($leftover)
+        unset peers($leftover)
+    }
+
+    # clean up after this test
+    foreach obj $peers(testing) {
+        catch {itcl::delete object $obj}
+    }
+    set peers(testing) ""
+
+    foreach key [array names peers ping-*] {
+        unset peers($key)
+    }
+    set peers(responses) 0
+}
+
+# ----------------------------------------------------------------------
+#  JOB SOLICITATION
+#
+#  Each worker can receive a "solicit" request, asking for information
+#  about performance and price of peers available to work.  Each worker
+#  sends the request on to its peers, then gathers the information
+#  and sends it back to the client or to the peer requesting the
+#  information.  There can be multiple requests going on at once,
+#  and each may have different job types and return different info,
+#  so the class below helps to watch over each request until it has
+#  completed.
+# ----------------------------------------------------------------------
+itcl::class Solicitation {
+    public variable connection ""
+    public variable job ""
+    public variable path ""
+    public variable avoid ""
+    public variable token ""
+
+    private variable _serial ""
+    private variable _response ""
+    private variable _waitfor 0
+    private variable _timeout ""
+
+    constructor {args} {
+        eval configure $args
+
+        global myaddress
+        lappend path $myaddress
+        lappend avoid $myaddress
+        set _serial [incr counter]
+        set all($_serial) $this
+
+        set delay "idle"  ;# finalize after waiting for responses
+        set ttl [p2p::options get peer_time_to_live]
+        if {[llength $path] < $ttl} {
+            set mesg [list solicit -job $job -path $path -avoid "$avoid @RECIPIENTS" -token $_serial]
+            set _waitfor [broadcast_to_peers $mesg $avoid]
+
+            if {$_waitfor > 0} {
+                # add a delay proportional to ttl + time for wonks measurement
+                set delay [expr {($ttl-[llength $path]-1)*1000 + 3000}]
+            }
+        }
+        set _timeout [after $delay [itcl::code $this finalize]]
+    }
+    destructor {
+        after cancel $_timeout
+        catch {unset all($_serial)}
+    }
+
+    # this adds the info from each proffer to this solicitation
+    method response {details} {
+        set addr [lindex $details 0]
+        append _response $details "\n"
+        if {[incr _waitfor -1] <= 0} {
+            finalize
+        }
+    }
+
+    # called to finalize when all peers have responded back
+    method finalize {} {
+        global myaddress
+
+        # filter out duplicate info from clients
+        set block ""
+        foreach line [split $_response \n] {
+            set addr [lindex $line 0]
+            if {"" != $addr && ![info exists response($addr)]} {
+                append block $line "\n"
+                set response($addr) 1
+            }
+        }
+        # add details about this client to the message
+        append block "$myaddress -job $job -cost 1 -wonks [p2p::wonks::current]"
+
+        # send the composite results back to the caller
+        set cmd [list proffer $token $block]
+        if {[catch {puts $connection $cmd} err]} {
+            log error "ERROR while sending back proffer: $err"
+        }
+        itcl::delete object $this
+    }
+
+    proc proffer {serial details} {
+        if {[info exists all($serial)]} {
+            $all($serial) response $details
+        }
+    }
+
+    common counter 0 ;# generates serial nums for objects
+    common all       ;# maps serial num => solicitation object
+}
+
+# ----------------------------------------------------------------------
+log system "starting..."
+
+after idle {
+    authority-connection goto connected
+}
+
+vwait main-loop
Index: /tags/1.6.0/packages/Makefile.in
===================================================================
--- /tags/1.6.0/packages/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/Makefile.in	(revision 6168)
@@ -0,0 +1,32 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir		= @srcdir@
+
+INSTALL		= @INSTALL@
+SHELL		= @SHELL@
+RM		= rm -f
+VPATH		= $(srcdir)
+
+.PHONY: all install clean distclean optimizer
+
+all: 
+
+optimizer:
+	$(MAKE) -C optimizer/src all
+install: 
+	$(MAKE) -C optimizer/src install
+
+clean:
+	$(MAKE) -C optimizer/src clean
+
+distclean: 
+	$(MAKE) -C optimizer/src distclean
+	$(RM) Makefile *~
+
Index: /tags/1.6.0/packages/optimizer/examples/app-qdot.tcl
===================================================================
--- /tags/1.6.0/packages/optimizer/examples/app-qdot.tcl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/examples/app-qdot.tcl	(revision 6168)
@@ -0,0 +1,165 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE:  Rappture optimization for app-qdot
+#
+#  The purpose of this script is to use a scrpt like simple.tcl to interface with app-qdot.
+#  The plotting functions created are done away with, since the problem is not confined to a 3-d space.
+#  The inputs are configured for app-qdot. 
+#  Run this as:  wish app-qdot.tcl ?-tool path/to/tool.xml?
+#
+# ======================================================================
+#  AUTHOR:  Ganesh Hegde, Purdue University
+#  Adapted from: simple.tcl
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+set auto_path [linsert $auto_path 0 /tmp/opt/lib]
+package require BLT
+package require Itcl
+package require Rappture
+package require RapptureGUI
+set auto_path [linsert $auto_path 0 /home/ganesh/workspace/optim_post_dir_changes/src/lib]
+package require -exact RapptureOptimizer 1.1
+set popsize 100  ;# size of each population for genetic algorithm
+
+set xml_path [lindex $argv 0]
+puts $xml_path
+
+
+# ----------------------------------------------------------------------
+#  Create a Tool object based on the tool.xml file...
+# ----------------------------------------------------------------------
+Rappture::getopts argv params {
+     value -tool tool.xml
+}
+
+after 2000
+puts $params(-tool)
+after 2000
+#blt::bltdebug 100
+
+# open the XML file containing the tool parameters
+if {![file exists $params(-tool)]} {
+    puts stderr "can't find tool \"$params(-tool)\""
+    exit 1
+}
+set xmlobj [Rappture::library $params(-tool)]
+
+set installdir [file dirname $params(-tool)]
+if {"." == $installdir} {
+    set installdir [pwd]
+}
+
+set tool [Rappture::Tool ::#auto $xmlobj $installdir]
+# ----------------------------------------------------------------------
+#  Create some plotting stuff so we can watch the progress of the
+#  optimization as it runs.
+# ----------------------------------------------------------------------
+#blt::graph .space
+#.space xaxis configure -title "x1" -min -2 -max 2
+#.space yaxis configure -title "x2" -min -2 -max 2
+#.space legend configure -hide no
+#pack .space -side left -expand yes -fill both
+
+#blt::graph .value
+#.value xaxis configure -title "job number" -min 0
+#.value yaxis configure -title "f(x1,x2)" -logscale yes -max 1
+#.value legend configure -hide yes
+#pack .value -side left -expand yes -fill both
+
+#button .quit -text Quit -command "optim abort yes"
+#pack .quit
+#set colors {magenta purple blue DeepSkyBlue cyan green yellow Gold orange tomato red FireBrick black}
+
+#for {set pop [expr [llength $colors]-1]} {$pop >= 0} {incr pop -1} {
+#    blt::vector x1vec$pop
+#    blt::vector x2vec$pop
+#    .space element create spots$pop -xdata x1vec$pop -ydata x2vec$pop \
+#        -color [lindex $colors $pop] -linewidth 0 -label "Population #$pop"
+
+#    blt::vector jobvec$pop
+#    blt::vector fvec$pop
+#    .value element create line$pop -xdata jobvec$pop -ydata fvec$pop \
+#        -color [lindex $colors $pop] -symbol none
+#}
+
+
+#set jobnumber 0
+proc display_current_values {xmlobj} {
+#    x1vec$pop append [$xmlobj get input.number(x1).current]
+#    x2vec$pop append [$xmlobj get input.number(x2).current]
+    set xl  [$xmlobj get output.number(xl).current]
+    set yl  [$xmlobj get output.number(yl).current]
+    set zl  [$xmlobj get output.number(zl).current]
+    set Ef  [$xmlobj get output.number(Ef).current]
+    set temp  [$xmlobj get output.number(temp).current]
+    set theta  [$xmlobj get output.number(theta).current]
+    set phi  [$xmlobj get output.number(phi).current]
+    set fitness [$xmlobj get output.number(f).current]
+    set max_string [$xmlobj get  output.string(maxlist).current]
+    puts "Device and Light Paramters for this evaluation: Xl = $xl nm,  Yl = $yl nm,   Zl = $zl nm,   Ef = $Ef eV,   temp = $temp K,  theta = $theta,   deg phi = $phi deg"
+    puts "The fitness in this evaluation is $fitness................."
+    puts "Maxima(s) at x equals $max_string"
+}
+
+#proc find_fitness {xmlobj} {
+#	set fitness 1000 #Arbitrarily setting fitness to a large value
+#	set opt_abs_curve output.curve(abs).component.xy
+#	puts $opt_abs_curve
+#	set index 0
+#	set xytuples [split $opt_abs_curve "\n"]
+#	set no_of_curve_points [llength $xytuples]
+#	foreach xytuple $xytuples {
+#		set tuple [split $xytuple " "]
+#		set x($index) [lindex $tuple 0]
+#		set y($index) [lindex $tuple 1]
+#		puts $x($index)
+#		puts $y($index)
+#		incr index
+#	}
+#	set size [llength xytuples]
+#	for {set index 0} {$index <= ($size-1)} {incr index} {
+#		if($index != ($size-2)){
+#			set slope_at_x (($y($index+1)-$y($index))/($x($index+1)-$x($index)))
+#			set slope_x_plus_one (($y($index+2)-$y($index+1))/($x($index+2)-$x($index+1)))
+#		}else{
+#			set slope_x_plus_one (($y($index)-$y($index-1))/($x($index)-$x($index-1)))
+#			set slope_at_x (($y($index-1)-$y($index-2))/($x($index-1)-$x($index-2)))
+#		}
+#		if(slope_at_x > 0 && slope_x_plus_one <=0){
+#			set maxima_point $x($index)
+#			set fitness abs($maxima_point-2)
+#			break
+#			 ####Max required at 2 eV, so minimize the difference between the current max and required max 
+#		}
+#
+#	}
+#
+#$xmlobj put output.number(f).about.label "Optimization of Absorption Plot for Qdot"
+#$xmlobj put output.number(f).about.description \
+#    "Fitness = abs(difference between first maxima in the current run and required value (Here 2 eV))"
+#$xmlobj put output.number(f).current $fitness
+#
+#}
+
+# ----------------------------------------------------------------------
+#  Create an optimization context and configure the parameters used
+#  for optimization...
+# ----------------------------------------------------------------------
+Rappture::optimizer optim -tool $tool -using pgapack
+
+optim add number input.group(tabs).group(geometry).structure.current.parameters(boxparams).number(xlen) -min 5 -max 40 -randdist uniform -strictmin yes -strictmax yes -units nm
+optim add number input.group(tabs).group(geometry).structure.current.parameters(boxparams).number(ylen)  -min 5 -max 40 -randdist uniform -strictmin yes -strictmax yes -units nm
+optim add number input.group(tabs).group(geometry).structure.current.parameters(boxparams).number(zlen)  -min 5 -max 20 -randdist uniform -strictmin yes -strictmax yes -units nm
+optim add number input.group(tabs).(light).number(Ef)  -min 0 -max 5 -randdist uniform -strictmin yes -strictmax yes -units eV
+optim add number input.group(tabs).group(light).number(temperature)  -min 0 -max 1000 -randdist gaussian -mean 300 -stddev 10 -strictmin yes -strictmax yes -units K
+optim add number input.group(tabs).group(light).number(theta)  -min 0 -max 90 -randdist uniform -stddev 0.5 -strictmin yes -strictmax yes -units deg
+optim add number input.group(tabs).group(light).number(phi)  -min 0 -max 360 -randdist uniform  -strictmin yes -strictmax yes -units deg
+
+optim configure -operation minimize -popsize 50 -maxruns 100 -mutnrate 0.1 -crossovrate 0.9 -randnumseed 9 -stpcriteria toosimilar
+
+optim get configure 
+
+set status [optim perform -fitness output.number(f).current -updatecommand display_current_values]
+puts "done: $status"
Index: /tags/1.6.0/packages/optimizer/examples/rosenbrock.tcl
===================================================================
--- /tags/1.6.0/packages/optimizer/examples/rosenbrock.tcl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/examples/rosenbrock.tcl	(revision 6168)
@@ -0,0 +1,35 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE: Optimization of the Rosenbrock function
+#
+#  This tool is a good example for optimization.  It implements the
+#  Rosenbrock function:
+#
+#    f(x1,x2) = 100(x2 - x1**2)**2 + (1-x1)**2
+#
+#  This has a minimum at (x1,x2) = (1,1).
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set x1 [$driver get input.(x1).current]
+set x2 [$driver get input.(x2).current]
+
+set f [expr {100*($x2-$x1*$x1)*($x2-$x1*$x1) + (1-$x1)*(1-$x1)}]
+
+$driver put output.number(f).about.label "Rosenbrock function"
+$driver put output.number(f).about.description \
+    "f(x1,x2) = 100(x2 - x1**2)**2 + (1-x1)**2"
+$driver put output.number(f).current $f
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/packages/optimizer/examples/simple.tcl
===================================================================
--- /tags/1.6.0/packages/optimizer/examples/simple.tcl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/examples/simple.tcl	(revision 6168)
@@ -0,0 +1,114 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE:  Rappture optimization
+#
+#  This script shows the core of the Rappture optimization loop.
+#  It represents a simple skeleton of the much more complicated
+#  Rappture GUI, but it drives enough of the optimization process
+#  to drive development and testing.
+#
+#  Run this as:  wish simple.tcl ?-tool path/to/tool.xml?
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+set auto_path [linsert $auto_path 0 /tmp/opt/lib]
+package require BLT
+package require Itcl
+package require Rappture
+package require RapptureGUI
+set auto_path [linsert $auto_path 0 /home/ganesh/workspace/optim_post_dir_changes/src/lib]
+package require -exact RapptureOptimizer 1.1
+
+
+# ----------------------------------------------------------------------
+#  Create a Tool object based on the tool.xml file...
+# ----------------------------------------------------------------------
+Rappture::getopts argv params {
+    value -tool tool.xml
+}
+
+# open the XML file containing the tool parameters
+if {![file exists $params(-tool)]} {
+    puts stderr "can't find tool \"$params(-tool)\""
+    exit 1
+}
+set xmlobj [Rappture::library $params(-tool)]
+
+set installdir [file dirname $params(-tool)]
+if {"." == $installdir} {
+    set installdir [pwd]
+}
+
+set tool [Rappture::Tool ::#auto $xmlobj $installdir]
+
+# ----------------------------------------------------------------------
+#  Create some plotting stuff so we can watch the progress of the
+#  optimization as it runs.
+# ----------------------------------------------------------------------
+blt::graph .space
+.space xaxis configure -title "x1" -min -2 -max 2
+.space yaxis configure -title "x2" -min -2 -max 2
+.space legend configure -hide no
+pack .space -side left -expand yes -fill both
+
+blt::graph .value
+.value xaxis configure -title "job number" -min 0
+.value yaxis configure -title "f(x1,x2)" -logscale yes -max 1
+.value legend configure -hide yes
+pack .value -side left -expand yes -fill both
+
+button .quit -text Quit -command "optim abort yes"
+pack .quit
+button .restart -text Restart -command "optim restart yes"
+pack .restart
+
+set colors {magenta purple blue DeepSkyBlue cyan green yellow Gold orange tomato red FireBrick black}
+
+for {set pop [expr [llength $colors]-1]} {$pop >= 0} {incr pop -1} {
+    blt::vector x1vec$pop
+    blt::vector x2vec$pop
+    .space element create spots$pop -xdata x1vec$pop -ydata x2vec$pop \
+        -color [lindex $colors $pop] -linewidth 0 -label "Population #$pop"
+
+    blt::vector jobvec$pop
+    blt::vector fvec$pop
+    .value element create line$pop -xdata jobvec$pop -ydata fvec$pop \
+        -color [lindex $colors $pop] -symbol none
+}
+
+
+set jobnumber 0
+proc add_to_plot {xmlobj} {
+    global jobnumber popsize
+    set pop [expr {$jobnumber/$popsize}]
+    x1vec$pop append [$xmlobj get input.number(x1).current]
+    x2vec$pop append [$xmlobj get input.number(x2).current]
+    jobvec$pop append $jobnumber
+    fvec$pop append [$xmlobj get output.number(f).current]
+    incr jobnumber
+#    optim samples $jobnumber
+}
+
+# ----------------------------------------------------------------------
+#  Create an optimization context and configure the parameters used
+#  for optimization...
+# ----------------------------------------------------------------------
+Rappture::optimizer optim -tool $tool -using pgapack
+
+optim add number input.number(x1) -min -2 -max 2 -randdist uniform -strictmin yes -strictmax yes
+optim add number input.number(x2) -min -2 -max 2 -randdist uniform -strictmin yes -strictmax yes
+optim configure -operation minimize -popsize 200 -maxruns 100 -mutnrate 0.5 -crossovrate 0.8 -randnumseed 20 -stpcriteria toosimilar -mutnandcrossover no -allowdup yes -numReplPerPop 50 -mutnValue 0.1 -crossovtype sbx -randReplProp 0.05
+
+optim get configure 
+
+set popsize 200  ;# size of each population for genetic algorithm
+
+set status [optim perform \
+    -fitness output.number(f).current \
+    -updatecommand add_to_plot]
+optim samples 10
+puts "done: $status"
Index: /tags/1.6.0/packages/optimizer/examples/simplesingle.tcl
===================================================================
--- /tags/1.6.0/packages/optimizer/examples/simplesingle.tcl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/examples/simplesingle.tcl	(revision 6168)
@@ -0,0 +1,134 @@
+# ----------------------------------------------------------------------
+#  EXAMPLE:  Rappture optimization
+#
+#  This script shows the core of the Rappture optimization loop.
+#  It represents a simple skeleton of the much more complicated
+#  Rappture GUI, but it drives enough of the optimization process
+#  to drive development and testing.
+#
+#  Run this as:  wish simple.tcl ?-tool path/to/tool.xml?
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+set auto_path [linsert $auto_path 0 /tmp/opt/lib]
+package require BLT
+package require Itcl
+package require Rappture
+package require RapptureGUI
+set auto_path [linsert $auto_path 0 /home/ganesh/workspace/optim_post_dir_changes/src/lib]
+package require -exact RapptureOptimizer 1.1
+
+set pop 0
+set popsize 100  ;# size of each population for genetic algorithm
+
+
+# ----------------------------------------------------------------------
+#  Create a Tool object based on the tool.xml file...
+# ----------------------------------------------------------------------
+Rappture::getopts argv params {
+    value -tool tool.xml
+}
+
+# open the XML file containing the tool parameters
+if {![file exists $params(-tool)]} {
+    puts stderr "can't find tool \"$params(-tool)\""
+    exit 1
+}
+set xmlobj [Rappture::library $params(-tool)]
+
+set installdir [file dirname $params(-tool)]
+if {"." == $installdir} {
+    set installdir [pwd]
+}
+
+set tool [Rappture::Tool ::#auto $xmlobj $installdir]
+
+# ----------------------------------------------------------------------
+#  Create some plotting stuff so we can watch the progress of the
+#  optimization as it runs.
+# ----------------------------------------------------------------------
+blt::graph .space
+.space xaxis configure -title "x1" -min -2 -max 2
+.space yaxis configure -title "x2" -min -2 -max 2
+.space legend configure -hide yes
+pack .space -side left -expand yes -fill both
+
+blt::graph .value
+.value xaxis configure -title "job number" -min 0
+.value yaxis configure -title "f(x1,x2)" -logscale yes -max 1
+.value legend configure -hide yes
+pack .value -side left -expand yes -fill both
+
+button .quit -text Quit -command "optim abort yes"
+pack .quit
+button .restart -text Restart -command "optim restart yes"
+pack .restart
+
+set colors {magenta purple blue DeepSkyBlue cyan green yellow Gold orange tomato red FireBrick black brown grey lavender wheat navy}
+
+
+#for {set pop [expr [llength $colors]-1]} {$pop >= 0} {incr pop -1} {
+#    blt::vector x1vec$pop
+#   blt::vector x2vec$pop
+#    .space element create dot -xdata x1vec$pop -ydata x2vec$pop -color black -linewidth 0 -symbol scross
+#        -color [lindex $colors $pop] -linewidth 0 -label "Population #$pop"
+    blt::vector jobvec
+    blt::vector fvec
+    .value element create line -xdata jobvec -ydata fvec -color black -symbol none
+
+#        -color [lindex $colors $pop] -symbol none
+
+
+
+set jobnumber 0
+set pop -1
+proc add_to_plot {xmlobj} {
+		
+    global jobnumber popsize pop
+    if {$jobnumber%$popsize == 0} {
+	incr pop
+	blt::vector x1vec$pop
+	blt::vector x2vec$pop
+
+	blt::graph .space$pop
+	.space$pop xaxis configure -title "x1" -min -2 -max 2
+	.space$pop yaxis configure -title "x2" -min -2 -max 2
+	.space$pop legend configure -hide yes
+	pack .space$pop -side left -expand yes -fill both
+	.space$pop element create dot -xdata x1vec$pop -ydata x2vec$pop -color black -linewidth 0 -symbol scross
+	
+    }	
+    x1vec$pop append [$xmlobj get input.number(x1).current]
+    x2vec$pop append [$xmlobj get input.number(x2).current]
+    jobvec append $jobnumber
+    fvec append [$xmlobj get output.number(f).current]
+    incr jobnumber
+#    optim samples $jobnumber
+}
+
+# ----------------------------------------------------------------------
+#  Create an optimization context and configure the parameters used
+#  for optimization...
+# ----------------------------------------------------------------------
+Rappture::optimizer optim -tool $tool -using pgapack
+
+optim add number input.number(x1) -min -2 -max 2 -randdist uniform -strictmin yes -strictmax yes
+optim add number input.number(x2) -min -2 -max 2 -randdist uniform -strictmin yes -strictmax yes
+optim configure -operation minimize -popsize 100 -maxruns 100 -mutnrate 0.1 -crossovrate 0.8 -randnumseed 20 -stpcriteria maxiter -mutnandcrossover no -allowdup yes -numReplPerPop 40 -mutnValue 0.1 -crossovtype sbx
+
+
+
+optim get configure 
+
+
+
+set status [optim perform \
+    -fitness output.number(f).current \
+    -updatecommand add_to_plot]
+optim samples 10
+puts "done: $status"
Index: /tags/1.6.0/packages/optimizer/examples/tool.xml
===================================================================
--- /tags/1.6.0/packages/optimizer/examples/tool.xml	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/examples/tool.xml	(revision 6168)
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>This tool is a good example for optimization.  It implements the Rosenbrock function:
+
+f(x1,x2) = 100(x2 - x1**2)**2 + (1-x1)**2
+
+This has a minimum at (x1,x2) = (1,1).
+
+Press Simulate to view results.</about>
+        <command>tclsh @tool/rosenbrock.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="x1">
+            <about>
+                <label>X1</label>
+                <description>first coordinate</description>
+            </about>
+            <min>-2</min>
+            <max>2</max>
+            <default>0</default>
+        </number>
+        <number id="x2">
+            <about>
+                <label>X2</label>
+                <description>second coordinate</description>
+            </about>
+            <min>-2</min>
+            <max>2</max>
+            <default>0</default>
+        </number>
+    </input>
+</run>
Index: /tags/1.6.0/packages/optimizer/examples/visualize.tcl
===================================================================
--- /tags/1.6.0/packages/optimizer/examples/visualize.tcl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/examples/visualize.tcl	(revision 6168)
@@ -0,0 +1,62 @@
+# ----------------------------------------------------------------------
+#  Visualize the output of genetic optimization
+#
+#  This script reads a bunch of runXXXX.xml files and plots them
+#  so you can see where the genetic algorithm was simulating and
+#  what it came up with.
+#
+#  Run this as:  wish visualize.tcl
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require BLT
+package require Rappture
+
+# ----------------------------------------------------------------------
+#  Load up all of the Rappture result files
+# ----------------------------------------------------------------------
+set jobs 0
+foreach file [lsort [glob run*.xml]] {
+    set result($jobs) [Rappture::library $file]
+    incr jobs
+}
+
+blt::graph .space
+.space xaxis configure -title "x1" -min -2 -max 2
+.space yaxis configure -title "y1" -min -2 -max 2
+.space legend configure -hide no
+pack .space -side left -expand yes -fill both
+
+blt::graph .value
+.value xaxis configure -title "job number" -min 0 -max $jobs
+.value yaxis configure -title "f(x1,x2)" -min 0 -max 2
+.value legend configure -hide yes
+pack .value -side left -expand yes -fill both
+
+set colors {blue purple magenta green yellow orange tomato red black}
+for {set pop [expr [llength $colors]-1]} {$pop >= 0} {incr pop -1} {
+    blt::vector x1vec$pop
+    blt::vector x2vec$pop
+    .space element create spots$pop -xdata x1vec$pop -ydata x2vec$pop \
+        -color [lindex $colors $pop] -linewidth 0 -label "Population #$pop"
+
+    blt::vector jobvec$pop
+    blt::vector fvec$pop
+    .value element create line$pop -xdata jobvec$pop -ydata fvec$pop \
+        -color [lindex $colors $pop] -symbol none
+}
+
+for {set n 0} {$n < $jobs} {incr n} {
+    set pop [expr {$n/100}]
+    x1vec$pop append [$result($n) get input.number(x1).current]
+    x2vec$pop append [$result($n) get input.number(x2).current]
+    jobvec$pop append $n
+    fvec$pop append [$result($n) get output.number(f).current]
+    update
+    after 100
+}
Index: /tags/1.6.0/packages/optimizer/src/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/Makefile.in	(revision 6168)
@@ -0,0 +1,452 @@
+# Makefile.in --
+#
+#	This file is a Makefile for Sample TEA Extension.  If it has the name
+#	"Makefile.in" then it is a template for a Makefile;  to generate the
+#	actual Makefile, run "./configure", which is a configuration script
+#	generated by the "autoconf" program (constructs like "@foo@" will get
+#	replaced in the actual Makefile.
+#
+# Copyright (c) 1999 Scriptics Corporation.
+# Copyright (c) 2002-2005 ActiveState Corporation.
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# RCS: @(#) $Id: Makefile.in,v 1.60 2005/09/13 22:06:37 hobbs Exp $
+
+#========================================================================
+# Add additional lines to handle any additional AC_SUBST cases that
+# have been added in a customized configure script.
+#========================================================================
+
+#SAMPLE_NEW_VAR	= @SAMPLE_NEW_VAR@
+
+#========================================================================
+# Nothing of the variables below this line should need to be changed.
+# Please check the TARGETS section below to make sure the make targets
+# are correct.
+#========================================================================
+
+#========================================================================
+# The names of the source files is defined in the configure script.
+# The object files are used for linking into the final library.
+# This will be used when a dist target is added to the Makefile.
+# It is not important to specify the directory, as long as it is the
+# $(srcdir) or in the generic, win or unix subdirectory.
+#========================================================================
+
+PKG_SOURCES	= @PKG_SOURCES@
+PKG_OBJECTS	= @PKG_OBJECTS@
+
+PKG_STUB_SOURCES = @PKG_STUB_SOURCES@
+PKG_STUB_OBJECTS = @PKG_STUB_OBJECTS@
+
+#========================================================================
+# PKG_TCL_SOURCES identifies Tcl runtime files that are associated with
+# this package that need to be installed, if any.
+#========================================================================
+
+PKG_TCL_SOURCES = @PKG_TCL_SOURCES@
+
+#========================================================================
+# This is a list of public header files to be installed, if any.
+#========================================================================
+
+PKG_HEADERS	= @PKG_HEADERS@
+
+#========================================================================
+# "PKG_LIB_FILE" refers to the library (dynamic or static as per
+# configuration options) composed of the named objects.
+#========================================================================
+
+PKG_LIB_FILE	= @PKG_LIB_FILE@
+PKG_STUB_LIB_FILE = @PKG_STUB_LIB_FILE@
+
+lib_BINARIES	= $(PKG_LIB_FILE)
+BINARIES	= $(lib_BINARIES)
+
+SHELL		= @SHELL@
+
+bindir		= @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix	= @exec_prefix@
+includedir	= @includedir@
+libdir		= @libdir@
+mandir		= @mandir@
+prefix		= @prefix@
+srcdir		= @srcdir@
+
+
+DESTDIR		=
+
+PKG_DIR		= $(PACKAGE_NAME)$(PACKAGE_VERSION)
+pkgdatadir	= $(datadir)/$(PKG_DIR)
+pkglibdir	= $(libdir)/$(PKG_DIR)
+pkgincludedir	= $(includedir)/$(PKG_DIR)
+
+top_builddir	= .
+
+CC		= @CC@
+CFLAGS_DEFAULT	= @CFLAGS_DEFAULT@
+CFLAGS_WARNING	= @CFLAGS_WARNING@
+CLEANFILES	= @CLEANFILES@
+CXX		= @CXX@
+EXEEXT		= @EXEEXT@
+INSTALL		= @INSTALL@
+INSTALL_DATA	= @INSTALL_DATA@
+INSTALL_PROGRAM	= @INSTALL_PROGRAM@
+INSTALL_SCRIPT	= @INSTALL_SCRIPT@
+LDFLAGS_DEFAULT	= @LDFLAGS_DEFAULT@
+MAKE_LIB	= @MAKE_LIB@
+MAKE_SHARED_LIB	= @MAKE_SHARED_LIB@
+MAKE_STATIC_LIB	= @MAKE_STATIC_LIB@
+MAKE_STUB_LIB	= @MAKE_STUB_LIB@
+OBJEXT		= @OBJEXT@
+PACKAGE_NAME	= @PACKAGE_NAME@
+PACKAGE_VERSION	= @PACKAGE_VERSION@
+RANLIB		= @RANLIB@
+RANLIB_STUB	= @RANLIB_STUB@
+SHLIB_CFLAGS	= @SHLIB_CFLAGS@
+SHLIB_LD	= @SHLIB_LD@
+SHLIB_LD_LIBS	= @SHLIB_LD_LIBS@
+STLIB_LD	= @STLIB_LD@
+TCL_BIN_DIR	= @TCL_BIN_DIR@
+TCL_SRC_DIR	= @TCL_SRC_DIR@
+#TCL_DEFS	= @TCL_DEFS@
+#TK_BIN_DIR	= @TK_BIN_DIR@
+#TK_SRC_DIR	= @TK_SRC_DIR@
+VPATH		= $(srcdir)
+
+# Not used, but retained for reference of what libs Tcl required
+#TCL_LIBS	= @TCL_LIBS@
+
+#========================================================================
+# TCLLIBPATH seeds the auto_path in Tcl's init.tcl so we can test our
+# package without installing.  The other environment variables allow us
+# to test against an uninstalled Tcl.  Add special env vars that you
+# require for testing here (like TCLX_LIBRARY).
+#========================================================================
+
+EXTRA_PATH	= $(top_builddir):$(TCL_BIN_DIR)
+#EXTRA_PATH	= $(top_builddir):$(TCL_BIN_DIR):$(TK_BIN_DIR)
+TCLLIBPATH	= $(top_builddir)
+TCLSH_ENV	= TCL_LIBRARY=`@CYGPATH@ $(TCL_SRC_DIR)/library` \
+		  @LD_LIBRARY_PATH_VAR@="$(EXTRA_PATH):$(@LD_LIBRARY_PATH_VAR@)" \
+		  PATH="$(EXTRA_PATH):$(PATH)" \
+		  TCLLIBPATH="$(TCLLIBPATH)"
+#		  TK_LIBRARY=`@CYGPATH@ $(TK_SRC_DIR)/library`
+
+TCLSH_PROG	= @TCLSH_PROG@
+TCLSH	= $(TCLSH_ENV) $(TCLSH_PROG)
+
+#WISH_PROG	= @WISH_PROG@
+#WISH	= $(TCLSH_ENV) $(WISH_PROG)
+
+
+SHARED_BUILD	= @SHARED_BUILD@
+
+INCLUDES	= -I$(srcdir) -I. @PKG_INCLUDES@ @TCL_INCLUDES@
+#INCLUDES	= @PKG_INCLUDES@ @TCL_INCLUDES@ @TK_INCLUDES@ @TK_XINCLUDES@
+
+PKG_CFLAGS	= @PKG_CFLAGS@
+
+# TCL_DEFS is not strictly need here, but if you remove it, then you
+# must make sure that configure.in checks for the necessary components
+# that your library may use.  TCL_DEFS can actually be a problem if
+# you do not compile with a similar machine setup as the Tcl core was
+# compiled with.
+#DEFS		= $(TCL_DEFS) @DEFS@ $(PKG_CFLAGS)
+DEFS		= @DEFS@ $(PKG_CFLAGS)
+
+CONFIG_CLEAN_FILES = Makefile
+
+CPPFLAGS	= @CPPFLAGS@
+LIBS		= @PKG_LIBS@ @LIBS@
+AR		= @AR@
+CFLAGS		= @CFLAGS@
+COMPILE		= $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+#========================================================================
+# Start of user-definable TARGETS section
+#========================================================================
+
+#========================================================================
+# TEA TARGETS.  Please note that the "libraries:" target refers to platform
+# independent files, and the "binaries:" target inclues executable programs and
+# platform-dependent libraries.  Modify these targets so that they install
+# the various pieces of your package.  The make and install rules
+# for the BINARIES that you specified above have already been done.
+#========================================================================
+
+.PHONY:	pgapack
+
+all: pgapack binaries libraries doc
+
+pgapack:
+	$(MAKE) -C pgapack all
+
+
+#========================================================================
+# The binaries target builds executable programs, Windows .dll's, unix
+# shared/static libraries, and any other platform-dependent files.
+# The list of targets to build for "binaries:" is specified at the top
+# of the Makefile, in the "BINARIES" variable.
+#========================================================================
+
+binaries: $(BINARIES)
+
+libraries: 
+
+
+#========================================================================
+# Your doc target should differentiate from doc builds (by the developer)
+# and doc installs (see install-doc), which just install the docs on the
+# end user machine when building from source.
+#========================================================================
+
+doc:
+#	@echo "If you have documentation to create, place the commands to"
+#	@echo "build the docs in the 'doc:' target.  For example:"
+#	@echo "        xml2nroff sample.xml > sample.n"
+#	@echo "        xml2html sample.xml > sample.html"
+
+install: all install-binaries install-libraries install-doc
+
+install-binaries: binaries install-lib-binaries install-bin-binaries
+
+#========================================================================
+# This rule installs platform-independent files, such as header files.
+# The list=...; for p in $$list handles the empty list case x-platform.
+#========================================================================
+
+install-libraries: libraries
+	@mkdir -p $(DESTDIR)$(includedir)
+	@echo "Installing header files in $(DESTDIR)$(includedir)"
+	@list='$(PKG_HEADERS)'; for i in $$list; do \
+	    echo "Installing $(srcdir)/$$i" ; \
+	    $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(includedir) ; \
+	done;
+
+#========================================================================
+# Install documentation.  Unix manpages should go in the $(mandir)
+# directory.
+#========================================================================
+
+install-doc: doc
+#	@mkdir -p $(DESTDIR)$(mandir)/mann
+#	@echo "Installing documentation in $(DESTDIR)$(mandir)"
+#	@list='$(srcdir)/doc/*.n'; for i in $$list; do \
+#	    echo "Installing $$i"; \
+#	    rm -f $(DESTDIR)$(mandir)/mann/`basename $$i`; \
+#	    $(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/mann ; \
+#	done
+
+test: binaries libraries
+	$(TCLSH) `@CYGPATH@ $(srcdir)/tests/all.tcl` $(TESTFLAGS)
+
+shell: binaries libraries
+	@$(TCLSH) $(SCRIPT)
+
+gdb:
+	$(TCLSH_ENV) gdb $(TCLSH_PROG) $(SCRIPT)
+
+depend:
+
+#========================================================================
+# $(PKG_LIB_FILE) should be listed as part of the BINARIES variable
+# mentioned above.  That will ensure that this target is built when you
+# run "make binaries".
+#
+# The $(PKG_OBJECTS) objects are created and linked into the final
+# library.  In most cases these object files will correspond to the
+# source files above.
+#========================================================================
+
+$(PKG_LIB_FILE): $(PKG_OBJECTS)
+	-rm -f $(PKG_LIB_FILE)
+	${MAKE_LIB}
+	$(RANLIB) $(PKG_LIB_FILE)
+
+$(PKG_STUB_LIB_FILE): $(PKG_STUB_OBJECTS)
+	-rm -f $(PKG_STUB_LIB_FILE)
+	${MAKE_STUB_LIB}
+	$(RANLIB_STUB) $(PKG_STUB_LIB_FILE)
+
+#========================================================================
+# We need to enumerate the list of .c to .o lines here.
+#
+# In the following lines, $(srcdir) refers to the toplevel directory
+# containing your extension.  If your sources are in a subdirectory,
+# you will have to modify the paths to reflect this:
+#
+# sample.$(OBJEXT): $(srcdir)/generic/sample.c
+# 	$(COMPILE) -c `@CYGPATH@ $(srcdir)/generic/sample.c` -o $@
+#
+# Setting the VPATH variable to a list of paths will cause the makefile
+# to look into these paths when resolving .c to .obj dependencies.
+# As necessary, add $(srcdir):$(srcdir)/compat:....
+#========================================================================
+
+VPATH = $(srcdir):$(srcdir)/src:$(srcdir)/unix:$(srcdir)/win
+
+.c.@OBJEXT@:
+	$(CC) $(COMPILE) -c `@CYGPATH@ $<` -o $@
+.cc.@OBJEXT@:
+	$(CXX) $(COMPILE) -c `@CYGPATH@ $<` -o $@
+.cpp.@OBJEXT@:
+	$(CXX) $(COMPILE) -c `@CYGPATH@ $<` -o $@
+
+#========================================================================
+# Distribution creation
+# You may need to tweak this target to make it work correctly.
+#========================================================================
+
+#COMPRESS	= tar cvf $(PKG_DIR).tar $(PKG_DIR); compress $(PKG_DIR).tar
+COMPRESS	= gtar zcvf $(PKG_DIR).tar.gz $(PKG_DIR)
+DIST_ROOT	= /tmp/dist
+DIST_DIR	= $(DIST_ROOT)/$(PKG_DIR)
+
+dist-clean:
+	rm -rf $(DIST_DIR) $(DIST_ROOT)/$(PKG_DIR).tar.*
+
+dist: dist-clean
+	mkdir -p $(DIST_DIR)
+	cp -p $(srcdir)/ChangeLog $(srcdir)/README* $(srcdir)/license* \
+		$(srcdir)/aclocal.m4 $(srcdir)/configure $(srcdir)/*.in \
+		$(DIST_DIR)/
+	chmod 664 $(DIST_DIR)/Makefile.in $(DIST_DIR)/aclocal.m4
+	chmod 775 $(DIST_DIR)/configure $(DIST_DIR)/configure.in
+
+	for i in $(srcdir)/*.[ch]; do \
+	    if [ -f $$i ]; then \
+		cp -p $$i $(DIST_DIR)/ ; \
+	    fi; \
+	done;
+
+	mkdir $(DIST_DIR)/tclconfig
+	cp $(srcdir)/tclconfig/install-sh $(srcdir)/tclconfig/tcl.m4 \
+		$(DIST_DIR)/tclconfig/
+	chmod 664 $(DIST_DIR)/tclconfig/tcl.m4
+	chmod +x $(DIST_DIR)/tclconfig/install-sh
+
+	list='demos doc generic library mac tests unix win'; \
+	for p in $$list; do \
+	    if test -d $(srcdir)/$$p ; then \
+		mkdir $(DIST_DIR)/$$p; \
+		cp -p $(srcdir)/$$p/*.* $(DIST_DIR)/$$p/; \
+	    fi; \
+	done
+
+	(cd $(DIST_ROOT); $(COMPRESS);)
+
+#========================================================================
+# End of user-definable section
+#========================================================================
+
+#========================================================================
+# Don't modify the file to clean here.  Instead, set the "CLEANFILES"
+# variable in configure.in
+#========================================================================
+
+clean:  
+	$(MAKE) -C pgapack clean
+	-test -z "$(BINARIES)" || rm -f $(BINARIES)
+	-rm -f *.$(OBJEXT) core *.core
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean: clean
+	$(MAKE) -C pgapack distclean
+	-rm -f *.tab.c
+	-rm -f $(CONFIG_CLEAN_FILES)
+	-rm -f config.cache config.log config.status
+
+#========================================================================
+# Install binary object libraries.  On Windows this includes both .dll and
+# .lib files.  Because the .lib files are not explicitly listed anywhere,
+# we need to deduce their existence from the .dll file of the same name.
+# Library files go into the lib directory.
+# In addition, this will generate the pkgIndex.tcl
+# file in the install location (assuming it can find a usable tclsh shell)
+#
+# You should not have to modify this target.
+#========================================================================
+
+install-lib-binaries: binaries
+	@mkdir -p $(DESTDIR)$(pkglibdir)
+	@list='$(lib_BINARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(pkglibdir)/$$p"; \
+	    $(INSTALL_PROGRAM) $$p $(DESTDIR)$(pkglibdir)/$$p; \
+	    stub=`echo $$p|sed -e "s/.*\(stub\).*/\1/"`; \
+	    if test "x$$stub" = "xstub"; then \
+		echo " $(RANLIB_STUB) $(DESTDIR)$(pkglibdir)/$$p"; \
+		$(RANLIB_STUB) $(DESTDIR)$(pkglibdir)/$$p; \
+	    else \
+		echo " $(RANLIB) $(DESTDIR)$(pkglibdir)/$$p"; \
+		$(RANLIB) $(DESTDIR)$(pkglibdir)/$$p; \
+	    fi; \
+	    ext=`echo $$p|sed -e "s/.*\.//"`; \
+	    if test "x$$ext" = "xdll"; then \
+		lib=`basename $$p|sed -e 's/.[^.]*$$//'`.lib; \
+		if test -f $$lib; then \
+		    echo " $(INSTALL_DATA) $$lib $(DESTDIR)$(pkglibdir)/$$lib"; \
+	            $(INSTALL_DATA) $$lib $(DESTDIR)$(pkglibdir)/$$lib; \
+		fi; \
+	    fi; \
+	  fi; \
+	done
+	@mkdir -p $(DESTDIR)$(pkglibdir)/scripts 
+	@list='$(PKG_TCL_SOURCES)'; for p in $$list; do \
+	  if test -f $(srcdir)/$$p; then \
+	    destp=`basename $$p`; \
+	    echo " Install $$destp $(DESTDIR)$(pkglibdir)/scripts/$$destp"; \
+	    $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkglibdir)/scripts/$$destp; \
+	  fi; \
+	done
+	@if test "x$(SHARED_BUILD)" = "x1"; then \
+	    echo " Install pkgIndex.tcl $(DESTDIR)$(pkglibdir)"; \
+	    $(INSTALL_DATA) pkgIndex.tcl $(DESTDIR)$(pkglibdir); \
+	fi
+
+#========================================================================
+# Install binary executables (e.g. .exe files and dependent .dll files)
+# This is for files that must go in the bin directory (located next to
+# wish and tclsh), like dependent .dll files on Windows.
+#
+# You should not have to modify this target, except to define bin_BINARIES
+# above if necessary.
+#========================================================================
+
+install-bin-binaries: binaries
+	@mkdir -p $(DESTDIR)$(bindir)
+	@list='$(bin_BINARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p"; \
+	    $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p; \
+	  fi; \
+	done
+
+.SUFFIXES: .c .$(OBJEXT)
+
+Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) \
+	  && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+uninstall-binaries:
+	list='$(lib_BINARIES)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(pkglibdir)/$$p; \
+	done
+	list='$(PKG_TCL_SOURCES)'; for p in $$list; do \
+	  p=`basename $$p`; \
+	  rm -f $(DESTDIR)$(pkglibdir)/$$p; \
+	done
+	list='$(bin_BINARIES)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(bindir)/$$p; \
+	done
+
+.PHONY: all binaries clean depend distclean doc install libraries test
+
+# 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:
Index: /tags/1.6.0/packages/optimizer/src/aclocal.m4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/aclocal.m4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/aclocal.m4	(revision 6168)
@@ -0,0 +1,9 @@
+#
+# Include the TEA standard macro set
+#
+
+builtin(include,tclconfig/tcl.m4)
+
+#
+# Add here whatever m4 macros you want to define for your package
+#
Index: /tags/1.6.0/packages/optimizer/src/configure
===================================================================
--- /tags/1.6.0/packages/optimizer/src/configure	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/configure	(revision 6168)
@@ -0,0 +1,13697 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.62 for RapptureOptimizer 1.0.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+  if (eval ":") 2>/dev/null; then
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+
+  if test $as_have_required = yes &&	 (eval ":
+(as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=\$LINENO
+  as_lineno_2=\$LINENO
+  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+  :
+else
+  as_candidate_shells=
+    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=.
+  case $as_dir in
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+	   done;;
+       esac
+done
+IFS=$as_save_IFS
+
+
+      for as_shell in $as_candidate_shells $SHELL; do
+	 # Try only shells that exist, to save several forks.
+	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		{ ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+  CONFIG_SHELL=$as_shell
+	       as_have_required=yes
+	       if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+  (exit $1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+  break
+fi
+
+fi
+
+      done
+
+      if test "x$CONFIG_SHELL" != x; then
+  for as_var in BASH_ENV ENV
+	do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+	done
+	export CONFIG_SHELL
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+    if test $as_have_required = no; then
+  echo This script requires a shell more modern than all the
+      echo shells that I found on your system.  Please install a
+      echo modern shell, or manually run the script under such a
+      echo shell if you do have one.
+      { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+  echo No shell found that supports shell functions.
+  echo Please tell bug-autoconf@gnu.org about your system,
+  echo including any error possibly output before this message.
+  echo This can help us improve future autoconf versions.
+  echo Configuration will now proceed without shell functions.
+}
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # 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 after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, 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
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (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 sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# 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`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='RapptureOptimizer'
+PACKAGE_TARNAME='rapptureoptimizer'
+PACKAGE_VERSION='1.1'
+PACKAGE_STRING='RapptureOptimizer 1.0'
+PACKAGE_BUGREPORT=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+enable_option_checking=no
+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
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+CYGPATH
+EXEEXT
+PKG_LIB_FILE
+PKG_STUB_LIB_FILE
+PKG_STUB_SOURCES
+PKG_STUB_OBJECTS
+PKG_TCL_SOURCES
+PKG_HEADERS
+PKG_INCLUDES
+PKG_LIBS
+PKG_CFLAGS
+TCL_VERSION
+TCL_BIN_DIR
+TCL_SRC_DIR
+TCL_LIB_FILE
+TCL_LIB_FLAG
+TCL_LIB_SPEC
+TCL_STUB_LIB_FILE
+TCL_STUB_LIB_FLAG
+TCL_STUB_LIB_SPEC
+TCL_LIBS
+TCL_DEFS
+TCL_EXTRA_CFLAGS
+TCL_LD_FLAGS
+TCL_SHLIB_LD_LIBS
+CC
+CFLAGS
+LDFLAGS
+CPPFLAGS
+ac_ct_CC
+OBJEXT
+CXX
+CXXFLAGS
+ac_ct_CXX
+CPP
+INSTALL_PROGRAM
+INSTALL_SCRIPT
+INSTALL_DATA
+SET_MAKE
+RANLIB
+GREP
+EGREP
+MATH_LIBS
+F77
+FFLAGS
+ac_ct_F77
+PKG_SOURCES
+PKG_OBJECTS
+CLEANFILES
+TCL_INCLUDES
+TCL_THREADS
+SHARED_BUILD
+AR
+CELIB_DIR
+LIBOBJS
+DL_LIBS
+CFLAGS_DEBUG
+CFLAGS_OPTIMIZE
+CFLAGS_WARNING
+STLIB_LD
+SHLIB_LD
+SHLIB_LD_LIBS
+SHLIB_CFLAGS
+LD_LIBRARY_PATH_VAR
+TCL_DBGX
+CFLAGS_DEFAULT
+LDFLAGS_DEFAULT
+MAKE_LIB
+MAKE_SHARED_LIB
+MAKE_STATIC_LIB
+MAKE_STUB_LIB
+RANLIB_STUB
+TCLSH_PROG
+PATCHLEVEL
+EXACT_VERSION
+NODOT_VERSION
+subdirs
+LTLIBOBJS'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_tcl
+with_tclinclude
+enable_threads
+enable_shared
+enable_64bit
+enable_64bit_vis
+enable_wince
+with_celib
+enable_load
+enable_symbols
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+CPP
+F77
+FFLAGS'
+ac_subdirs_all='pgapack '
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *)	ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { $as_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 &&
+      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { $as_echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) { $as_echo "$as_me: error: Unrecognized options: $ac_unrecognized_opts" >&2
+   { (exit 1); exit 1; }; } ;;
+    *)     $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; }
+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
+    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  { $as_echo "$as_me: error: Working directory cannot be determined" >&2
+   { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+   { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
+   { (exit 1); exit 1; }; }
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures RapptureOptimizer 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 \`..']
+
+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]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root
+                          [DATAROOTDIR/doc/rapptureoptimizer]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of RapptureOptimizer 1.0:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-threads        build with threads
+  --enable-shared         build and link with shared libraries (default: on)
+  --enable-64bit          enable 64bit support (default: off)
+  --enable-64bit-vis      enable 64bit Sparc VIS support (default: off)
+  --enable-wince          enable Win/CE support (where applicable)
+  --disable-load          disallow dynamic loading and "load" command
+                          (default: enabled)
+  --enable-symbols        build with debugging symbols (default: off)
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-tcl              directory containing tcl configuration
+                          (tclConfig.sh)
+  --with-tclinclude       directory containing the public Tcl header files
+  --with-celib=DIR        use Windows/CE support library from DIR
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CPP         C preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 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.
+
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+RapptureOptimizer configure 1.0
+generated by GNU Autoconf 2.62
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by RapptureOptimizer $as_me 1.0, which was
+generated by GNU Autoconf 2.62.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  $as_echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) 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_arg'"
+      ;;
+    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: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# 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 an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test -r "$ac_site_file"; then
+    { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  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
+    { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:$LINENO:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:$LINENO:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+$as_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
+
+
+
+#--------------------------------------------------------------------
+# Call TEA_INIT as the first TEA_ macro to set up initial vars.
+# This will define a ${TEA_PLATFORM} variable == "unix" or "windows"
+# as well as PKG_LIB_FILE and PKG_STUB_LIB_FILE.
+#--------------------------------------------------------------------
+
+
+    # TEA extensions pass this us the version of TEA they think they
+    # are compatible with.
+    TEA_VERSION="3.5"
+
+    { $as_echo "$as_me:$LINENO: checking for correct TEA configuration" >&5
+$as_echo_n "checking for correct TEA configuration... " >&6; }
+    if test x"${PACKAGE_NAME}" = x ; then
+	{ { $as_echo "$as_me:$LINENO: error:
+The PACKAGE_NAME variable must be defined by your TEA configure.in" >&5
+$as_echo "$as_me: error:
+The PACKAGE_NAME variable must be defined by your TEA configure.in" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+    if test x"3.5" = x ; then
+	{ { $as_echo "$as_me:$LINENO: error:
+TEA version not specified." >&5
+$as_echo "$as_me: error:
+TEA version not specified." >&2;}
+   { (exit 1); exit 1; }; }
+    elif test "3.5" != "${TEA_VERSION}" ; then
+	{ $as_echo "$as_me:$LINENO: result: warning: requested TEA version \"3.5\", have \"${TEA_VERSION}\"" >&5
+$as_echo "warning: requested TEA version \"3.5\", have \"${TEA_VERSION}\"" >&6; }
+    else
+	{ $as_echo "$as_me:$LINENO: result: ok (TEA ${TEA_VERSION})" >&5
+$as_echo "ok (TEA ${TEA_VERSION})" >&6; }
+    fi
+    case "`uname -s`" in
+	*win32*|*WIN32*|*CYGWIN_NT*|*CYGWIN_9*|*CYGWIN_ME*|*MINGW32_*|*MSYS_NT*)
+	    # Extract the first word of "cygpath", so it can be a program name with args.
+set dummy cygpath; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CYGPATH+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CYGPATH"; then
+  ac_cv_prog_CYGPATH="$CYGPATH" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CYGPATH="cygpath -w"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo"
+fi
+fi
+CYGPATH=$ac_cv_prog_CYGPATH
+if test -n "$CYGPATH"; then
+  { $as_echo "$as_me:$LINENO: result: $CYGPATH" >&5
+$as_echo "$CYGPATH" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+	    EXEEXT=".exe"
+	    TEA_PLATFORM="windows"
+	    ;;
+	*)
+	    CYGPATH=echo
+	    EXEEXT=""
+	    TEA_PLATFORM="unix"
+	    ;;
+    esac
+
+    # Check if exec_prefix is set. If not use fall back to prefix.
+    # Note when adjusted, so that TEA_PREFIX can correct for this.
+    # This is needed for recursive configures, since autoconf propagates
+    # $prefix, but not $exec_prefix (doh!).
+    if test x$exec_prefix = xNONE ; then
+	exec_prefix_default=yes
+	exec_prefix=$prefix
+    fi
+
+
+
+
+    # This package name must be replaced statically for AC_SUBST to work
+
+    # Substitute STUB_LIB_FILE in case package creates a stub library too.
+
+
+    # We AC_SUBST these here to ensure they are subst'ed,
+    # in case the user doesn't call TEA_ADD_...
+
+
+
+
+
+
+
+
+
+ac_aux_dir=
+for ac_dir in tclconfig "$srcdir"/tclconfig; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in tclconfig \"$srcdir\"/tclconfig" >&5
+$as_echo "$as_me: error: cannot find install-sh or install.sh in tclconfig \"$srcdir\"/tclconfig" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+
+#--------------------------------------------------------------------
+# Load the tclConfig.sh file
+#--------------------------------------------------------------------
+
+
+
+    #
+    # Ok, lets find the tcl configuration
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-tcl
+    #
+
+    if test x"${no_tcl}" = x ; then
+	# we reset no_tcl in case something fails here
+	no_tcl=true
+
+# Check whether --with-tcl was given.
+if test "${with_tcl+set}" = set; then
+  withval=$with_tcl; with_tclconfig=${withval}
+fi
+
+	{ $as_echo "$as_me:$LINENO: checking for Tcl configuration" >&5
+$as_echo_n "checking for Tcl configuration... " >&6; }
+	if test "${ac_cv_c_tclconfig+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+
+	    # First check to see if --with-tcl was specified.
+	    if test x"${with_tclconfig}" != x ; then
+		case ${with_tclconfig} in
+		    */tclConfig.sh )
+			if test -f ${with_tclconfig}; then
+			    { $as_echo "$as_me:$LINENO: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&5
+$as_echo "$as_me: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&2;}
+			    with_tclconfig=`echo ${with_tclconfig} | sed 's!/tclConfig\.sh$!!'`
+			fi ;;
+		esac
+		if test -f "${with_tclconfig}/tclConfig.sh" ; then
+		    ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)`
+		else
+		    { { $as_echo "$as_me:$LINENO: error: ${with_tclconfig} directory doesn't contain tclConfig.sh" >&5
+$as_echo "$as_me: error: ${with_tclconfig} directory doesn't contain tclConfig.sh" >&2;}
+   { (exit 1); exit 1; }; }
+		fi
+	    fi
+
+	    # then check for a private Tcl installation
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in \
+			../tcl \
+			`ls -dr ../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
+			`ls -dr ../tcl[8-9].[0-9] 2>/dev/null` \
+			`ls -dr ../tcl[8-9].[0-9]* 2>/dev/null` \
+			../../tcl \
+			`ls -dr ../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
+			`ls -dr ../../tcl[8-9].[0-9] 2>/dev/null` \
+			`ls -dr ../../tcl[8-9].[0-9]* 2>/dev/null` \
+			../../../tcl \
+			`ls -dr ../../../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
+			`ls -dr ../../../tcl[8-9].[0-9] 2>/dev/null` \
+			`ls -dr ../../../tcl[8-9].[0-9]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Darwin, check in Framework installation locations
+	    if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+			`ls -d /Library/Frameworks 2>/dev/null` \
+			`ls -d /Network/Library/Frameworks 2>/dev/null` \
+			`ls -d /System/Library/Frameworks 2>/dev/null` \
+			; do
+		    if test -f "$i/Tcl.framework/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i/Tcl.framework; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Windows, check in common installation locations
+	    if test "${TEA_PLATFORM}" = "windows" \
+		-a x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d C:/Tcl/lib 2>/dev/null` \
+			`ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few common install locations
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d ${libdir} 2>/dev/null` \
+			`ls -d ${exec_prefix}/lib 2>/dev/null` \
+			`ls -d ${prefix}/lib 2>/dev/null` \
+			`ls -d /usr/local/lib 2>/dev/null` \
+			`ls -d /usr/contrib/lib 2>/dev/null` \
+			`ls -d /usr/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few other private locations
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in \
+			${srcdir}/../tcl \
+			`ls -dr ${srcdir}/../tcl[8-9].[0-9].[0-9]* 2>/dev/null` \
+			`ls -dr ${srcdir}/../tcl[8-9].[0-9] 2>/dev/null` \
+			`ls -dr ${srcdir}/../tcl[8-9].[0-9]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tclConfig.sh" ; then
+		    ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+		    break
+		fi
+		done
+	    fi
+
+fi
+
+
+	if test x"${ac_cv_c_tclconfig}" = x ; then
+	    TCL_BIN_DIR="# no Tcl configs found"
+	    { $as_echo "$as_me:$LINENO: WARNING: Can't find Tcl configuration definitions" >&5
+$as_echo "$as_me: WARNING: Can't find Tcl configuration definitions" >&2;}
+	    exit 0
+	else
+	    no_tcl=
+	    TCL_BIN_DIR=${ac_cv_c_tclconfig}
+	    { $as_echo "$as_me:$LINENO: result: found ${TCL_BIN_DIR}/tclConfig.sh" >&5
+$as_echo "found ${TCL_BIN_DIR}/tclConfig.sh" >&6; }
+	fi
+    fi
+
+
+    { $as_echo "$as_me:$LINENO: checking for existence of ${TCL_BIN_DIR}/tclConfig.sh" >&5
+$as_echo_n "checking for existence of ${TCL_BIN_DIR}/tclConfig.sh... " >&6; }
+
+    if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then
+        { $as_echo "$as_me:$LINENO: result: loading" >&5
+$as_echo "loading" >&6; }
+	. ${TCL_BIN_DIR}/tclConfig.sh
+    else
+        { $as_echo "$as_me:$LINENO: result: could not find ${TCL_BIN_DIR}/tclConfig.sh" >&5
+$as_echo "could not find ${TCL_BIN_DIR}/tclConfig.sh" >&6; }
+    fi
+
+    # eval is required to do the TCL_DBGX substitution
+    eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+    eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
+
+    # If the TCL_BIN_DIR is the build directory (not the install directory),
+    # then set the common variable name to the value of the build variables.
+    # For example, the variable TCL_LIB_SPEC will be set to the value
+    # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
+    # instead of TCL_BUILD_LIB_SPEC since it will work with both an
+    # installed and uninstalled version of Tcl.
+    if test -f ${TCL_BIN_DIR}/Makefile ; then
+        TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
+        TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
+        TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
+    elif test "`uname -s`" = "Darwin"; then
+	# If Tcl was built as a framework, attempt to use the libraries
+	# from the framework at the given location so that linking works
+	# against Tcl.framework installed in an arbitary location.
+	case ${TCL_DEFS} in
+	    *TCL_FRAMEWORK*)
+		if test -f ${TCL_BIN_DIR}/${TCL_LIB_FILE}; then
+		    for i in "`cd ${TCL_BIN_DIR}; pwd`" \
+			     "`cd ${TCL_BIN_DIR}/../..; pwd`"; do
+			if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then
+			    TCL_LIB_SPEC="-F`dirname "$i"` -framework ${TCL_LIB_FILE}"
+			    break
+			fi
+		    done
+		fi
+		if test -f ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}; then
+		    TCL_STUB_LIB_SPEC="-L${TCL_BIN_DIR} ${TCL_STUB_LIB_FLAG}"
+		    TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"
+		fi
+		;;
+	esac
+    fi
+
+    # eval is required to do the TCL_DBGX substitution
+    eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
+    eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
+    eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
+    eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#--------------------------------------------------------------------
+# Load the tkConfig.sh file if necessary (Tk extension)
+#--------------------------------------------------------------------
+
+#TEA_PATH_TKCONFIG
+#TEA_LOAD_TKCONFIG
+
+#-----------------------------------------------------------------------
+# Handle the --prefix=... option by defaulting to what Tcl gave.
+# Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER.
+#-----------------------------------------------------------------------
+
+
+    if test "${prefix}" = "NONE"; then
+	prefix_default=yes
+	if test x"${TCL_PREFIX}" != x; then
+	    { $as_echo "$as_me:$LINENO: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&5
+$as_echo "$as_me: --prefix defaulting to TCL_PREFIX ${TCL_PREFIX}" >&6;}
+	    prefix=${TCL_PREFIX}
+	else
+	    { $as_echo "$as_me:$LINENO: --prefix defaulting to /usr/local" >&5
+$as_echo "$as_me: --prefix defaulting to /usr/local" >&6;}
+	    prefix=/usr/local
+	fi
+    fi
+    if test "${exec_prefix}" = "NONE" -a x"${prefix_default}" = x"yes" \
+	-o x"${exec_prefix_default}" = x"yes" ; then
+	if test x"${TCL_EXEC_PREFIX}" != x; then
+	    { $as_echo "$as_me:$LINENO: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&5
+$as_echo "$as_me: --exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}" >&6;}
+	    exec_prefix=${TCL_EXEC_PREFIX}
+	else
+	    { $as_echo "$as_me:$LINENO: --exec-prefix defaulting to ${prefix}" >&5
+$as_echo "$as_me: --exec-prefix defaulting to ${prefix}" >&6;}
+	    exec_prefix=$prefix
+	fi
+    fi
+
+
+#-----------------------------------------------------------------------
+# Standard compiler checks.
+# This sets up CC by using the CC env var, or looks for gcc otherwise.
+# This also calls AC_PROG_CC, AC_PROG_INSTALL and a few others to create
+# the basic setup necessary to compile executables.
+#-----------------------------------------------------------------------
+
+
+    # Don't put any macros that use the compiler (e.g. AC_TRY_COMPILE)
+    # in this macro, they need to go into TEA_SETUP_COMPILER instead.
+
+    # If the user did not set CFLAGS, set it now to keep
+    # the AC_PROG_CC macro from adding "-g -O2".
+    if test "${CFLAGS+set}" != "set" ; then
+	CFLAGS=""
+    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 "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+$as_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.
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_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.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { (ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+
+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+$as_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
+
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&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'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_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
+	{ { $as_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
+$as_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
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_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 | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+$as_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
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then
+  $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+$as_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
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat >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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CFLAGS=""
+      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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=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 <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_c89=$ac_arg
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+    ac_ext=cpp
+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 -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CXX+set}" = set; then
+  $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:$LINENO: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cxx_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CXXFLAGS=""
+      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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cxx_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$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
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  $as_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 nonexistent 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 <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_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
+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  $as_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 nonexistent 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 <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_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
+  { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+$as_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
+
+
+    # Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+    #--------------------------------------------------------------------
+    # Checks to see if the make program sets the $MAKE variable.
+    #--------------------------------------------------------------------
+
+    { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+    #--------------------------------------------------------------------
+    # Find ranlib
+    #--------------------------------------------------------------------
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+    #--------------------------------------------------------------------
+    # Determines the correct binary file extension (.o, .obj, .exe etc.)
+    #--------------------------------------------------------------------
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_stdc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_header_stdc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+    # Any macros that use the compiler (e.g. AC_TRY_COMPILE) have to go here.
+
+
+    #------------------------------------------------------------------------
+    # If we're using GCC, see if the compiler understands -pipe. If so, use it.
+    # It makes compiling go faster.  (This is only a performance feature.)
+    #------------------------------------------------------------------------
+
+    if test -z "$no_pipe" -a -n "$GCC"; then
+	{ $as_echo "$as_me:$LINENO: checking if the compiler understands -pipe" >&5
+$as_echo_n "checking if the compiler understands -pipe... " >&6; }
+	OLDCC="$CC"
+	CC="$CC -pipe"
+	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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CC="$OLDCC"
+	    { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+
+    #--------------------------------------------------------------------
+    # Common compiler flag setup
+    #--------------------------------------------------------------------
+
+
+ { $as_echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if test "${ac_cv_c_bigendian+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+	     #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+		     && LITTLE_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+		#include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_c_bigendian=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_c_bigendian=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then
+  # Try to guess by grepping values from an object file.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+short int ascii_mm[] =
+		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+		short int ascii_ii[] =
+		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+		int use_ascii (int i) {
+		  return ascii_mm[i] + ascii_ii[i];
+		}
+		short int ebcdic_ii[] =
+		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+		short int ebcdic_mm[] =
+		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+		int use_ebcdic (int i) {
+		  return ebcdic_mm[i] + ebcdic_ii[i];
+		}
+		extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+	      ac_cv_c_bigendian=yes
+	    fi
+	    if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+	      if test "$ac_cv_c_bigendian" = unknown; then
+		ac_cv_c_bigendian=no
+	      else
+		# finding both strings is unlikely to happen, but who knows?
+		ac_cv_c_bigendian=unknown
+	      fi
+	    fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	     /* Are we little or big endian?  From Harbison&Steele.  */
+	     union
+	     {
+	       long int l;
+	       char c[sizeof (long int)];
+	     } u;
+	     u.l = 1;
+	     return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_bigendian=no
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_bigendian=yes
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+    fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     cat >>confdefs.h <<\_ACEOF
+#define WORDS_BIGENDIAN 1
+_ACEOF
+;; #(
+   no)
+      ;; #(
+   universal)
+      ;; #(
+   *)
+     { { $as_echo "$as_me:$LINENO: error: unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" >&5
+$as_echo "$as_me: error: unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
+   { (exit 1); exit 1; }; } ;;
+ esac
+
+    if test "${TEA_PLATFORM}" = "unix" ; then
+
+    #--------------------------------------------------------------------
+    # On a few very rare systems, all of the libm.a stuff is
+    # already in libc.a.  Set compiler flags accordingly.
+    # Also, Linux requires the "ieee" library for math to work
+    # right (and it must appear before "-lm").
+    #--------------------------------------------------------------------
+
+    { $as_echo "$as_me:$LINENO: checking for sin" >&5
+$as_echo_n "checking for sin... " >&6; }
+if test "${ac_cv_func_sin+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define sin to an innocuous variant, in case <limits.h> declares sin.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define sin innocuous_sin
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char sin (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef sin
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sin ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_sin || defined __stub___sin
+choke me
+#endif
+
+int
+main ()
+{
+return sin ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_sin=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_sin=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_sin" >&5
+$as_echo "$ac_cv_func_sin" >&6; }
+if test $ac_cv_func_sin = yes; then
+  MATH_LIBS=""
+else
+  MATH_LIBS="-lm"
+fi
+
+    { $as_echo "$as_me:$LINENO: checking for main in -lieee" >&5
+$as_echo_n "checking for main in -lieee... " >&6; }
+if test "${ac_cv_lib_ieee_main+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lieee  $LIBS"
+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 main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_ieee_main=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_ieee_main=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ieee_main" >&5
+$as_echo "$ac_cv_lib_ieee_main" >&6; }
+if test $ac_cv_lib_ieee_main = yes; then
+  MATH_LIBS="-lieee $MATH_LIBS"
+fi
+
+
+    #--------------------------------------------------------------------
+    # Interactive UNIX requires -linet instead of -lsocket, plus it
+    # needs net/errno.h to define the socket-related error codes.
+    #--------------------------------------------------------------------
+
+    { $as_echo "$as_me:$LINENO: checking for main in -linet" >&5
+$as_echo_n "checking for main in -linet... " >&6; }
+if test "${ac_cv_lib_inet_main+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-linet  $LIBS"
+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 main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_inet_main=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_inet_main=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_inet_main" >&5
+$as_echo "$ac_cv_lib_inet_main" >&6; }
+if test $ac_cv_lib_inet_main = yes; then
+  LIBS="$LIBS -linet"
+fi
+
+    if test "${ac_cv_header_net_errno_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for net/errno.h" >&5
+$as_echo_n "checking for net/errno.h... " >&6; }
+if test "${ac_cv_header_net_errno_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_net_errno_h" >&5
+$as_echo "$ac_cv_header_net_errno_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking net/errno.h usability" >&5
+$as_echo_n "checking net/errno.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <net/errno.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking net/errno.h presence" >&5
+$as_echo_n "checking net/errno.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <net/errno.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: net/errno.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: net/errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: net/errno.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: net/errno.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: net/errno.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: net/errno.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: net/errno.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: net/errno.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: net/errno.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: net/errno.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: net/errno.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: net/errno.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: net/errno.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: net/errno.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: net/errno.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: net/errno.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for net/errno.h" >&5
+$as_echo_n "checking for net/errno.h... " >&6; }
+if test "${ac_cv_header_net_errno_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_net_errno_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_net_errno_h" >&5
+$as_echo "$ac_cv_header_net_errno_h" >&6; }
+
+fi
+if test $ac_cv_header_net_errno_h = yes; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_NET_ERRNO_H 1
+_ACEOF
+
+fi
+
+
+
+    #--------------------------------------------------------------------
+    #	Check for the existence of the -lsocket and -lnsl libraries.
+    #	The order here is important, so that they end up in the right
+    #	order in the command line generated by make.  Here are some
+    #	special considerations:
+    #	1. Use "connect" and "accept" to check for -lsocket, and
+    #	   "gethostbyname" to check for -lnsl.
+    #	2. Use each function name only once:  can't redo a check because
+    #	   autoconf caches the results of the last check and won't redo it.
+    #	3. Use -lnsl and -lsocket only if they supply procedures that
+    #	   aren't already present in the normal libraries.  This is because
+    #	   IRIX 5.2 has libraries, but they aren't needed and they're
+    #	   bogus:  they goof up name resolution if used.
+    #	4. On some SVR4 systems, can't use -lsocket without -lnsl too.
+    #	   To get around this problem, check for both libraries together
+    #	   if -lsocket doesn't work by itself.
+    #--------------------------------------------------------------------
+
+    tcl_checkBoth=0
+    { $as_echo "$as_me:$LINENO: checking for connect" >&5
+$as_echo_n "checking for connect... " >&6; }
+if test "${ac_cv_func_connect+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define connect to an innocuous variant, in case <limits.h> declares connect.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define connect innocuous_connect
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char connect (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef connect
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_connect || defined __stub___connect
+choke me
+#endif
+
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_connect=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_connect=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
+$as_echo "$ac_cv_func_connect" >&6; }
+if test $ac_cv_func_connect = yes; then
+  tcl_checkSocket=0
+else
+  tcl_checkSocket=1
+fi
+
+    if test "$tcl_checkSocket" = 1; then
+	{ $as_echo "$as_me:$LINENO: checking for setsockopt" >&5
+$as_echo_n "checking for setsockopt... " >&6; }
+if test "${ac_cv_func_setsockopt+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define setsockopt to an innocuous variant, in case <limits.h> declares setsockopt.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define setsockopt innocuous_setsockopt
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char setsockopt (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef setsockopt
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char setsockopt ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_setsockopt || defined __stub___setsockopt
+choke me
+#endif
+
+int
+main ()
+{
+return setsockopt ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_setsockopt=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_setsockopt=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_setsockopt" >&5
+$as_echo "$ac_cv_func_setsockopt" >&6; }
+if test $ac_cv_func_setsockopt = yes; then
+  :
+else
+  { $as_echo "$as_me:$LINENO: checking for setsockopt in -lsocket" >&5
+$as_echo_n "checking for setsockopt in -lsocket... " >&6; }
+if test "${ac_cv_lib_socket_setsockopt+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char setsockopt ();
+int
+main ()
+{
+return setsockopt ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_socket_setsockopt=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_socket_setsockopt=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_setsockopt" >&5
+$as_echo "$ac_cv_lib_socket_setsockopt" >&6; }
+if test $ac_cv_lib_socket_setsockopt = yes; then
+  LIBS="$LIBS -lsocket"
+else
+  tcl_checkBoth=1
+fi
+
+fi
+
+    fi
+    if test "$tcl_checkBoth" = 1; then
+	tk_oldLibs=$LIBS
+	LIBS="$LIBS -lsocket -lnsl"
+	{ $as_echo "$as_me:$LINENO: checking for accept" >&5
+$as_echo_n "checking for accept... " >&6; }
+if test "${ac_cv_func_accept+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define accept to an innocuous variant, in case <limits.h> declares accept.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define accept innocuous_accept
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char accept (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef accept
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char accept ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_accept || defined __stub___accept
+choke me
+#endif
+
+int
+main ()
+{
+return accept ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_accept=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_accept=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_accept" >&5
+$as_echo "$ac_cv_func_accept" >&6; }
+if test $ac_cv_func_accept = yes; then
+  tcl_checkNsl=0
+else
+  LIBS=$tk_oldLibs
+fi
+
+    fi
+    { $as_echo "$as_me:$LINENO: checking for gethostbyname" >&5
+$as_echo_n "checking for gethostbyname... " >&6; }
+if test "${ac_cv_func_gethostbyname+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define gethostbyname innocuous_gethostbyname
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char gethostbyname (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef gethostbyname
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_gethostbyname || defined __stub___gethostbyname
+choke me
+#endif
+
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_gethostbyname=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_gethostbyname=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
+$as_echo "$ac_cv_func_gethostbyname" >&6; }
+if test $ac_cv_func_gethostbyname = yes; then
+  :
+else
+  { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_nsl_gethostbyname=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_nsl_gethostbyname=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test $ac_cv_lib_nsl_gethostbyname = yes; then
+  LIBS="$LIBS -lnsl"
+fi
+
+fi
+
+
+    # Don't perform the eval of the libraries here because DL_LIBS
+    # won't be set until we call TEA_CONFIG_CFLAGS
+
+    TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
+
+
+
+
+    { $as_echo "$as_me:$LINENO: checking dirent.h" >&5
+$as_echo_n "checking dirent.h... " >&6; }
+if test "${tcl_cv_dirent_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <dirent.h>
+int
+main ()
+{
+
+#ifndef _POSIX_SOURCE
+#   ifdef __Lynx__
+	/*
+	 * Generate compilation error to make the test fail:  Lynx headers
+	 * are only valid if really in the POSIX environment.
+	 */
+
+	missing_procedure();
+#   endif
+#endif
+DIR *d;
+struct dirent *entryPtr;
+char *p;
+d = opendir("foobar");
+entryPtr = readdir(d);
+p = entryPtr->d_name;
+closedir(d);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  tcl_cv_dirent_h=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	tcl_cv_dirent_h=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $tcl_cv_dirent_h" >&5
+$as_echo "$tcl_cv_dirent_h" >&6; }
+
+    if test $tcl_cv_dirent_h = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_DIRENT_H 1
+_ACEOF
+
+    fi
+
+    if test "${ac_cv_header_errno_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for errno.h" >&5
+$as_echo_n "checking for errno.h... " >&6; }
+if test "${ac_cv_header_errno_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_errno_h" >&5
+$as_echo "$ac_cv_header_errno_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking errno.h usability" >&5
+$as_echo_n "checking errno.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <errno.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking errno.h presence" >&5
+$as_echo_n "checking errno.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <errno.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: errno.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: errno.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: errno.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: errno.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: errno.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: errno.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: errno.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: errno.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: errno.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: errno.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: errno.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: errno.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: errno.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: errno.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: errno.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: errno.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for errno.h" >&5
+$as_echo_n "checking for errno.h... " >&6; }
+if test "${ac_cv_header_errno_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_errno_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_errno_h" >&5
+$as_echo "$ac_cv_header_errno_h" >&6; }
+
+fi
+if test $ac_cv_header_errno_h = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_ERRNO_H 1
+_ACEOF
+
+fi
+
+
+    if test "${ac_cv_header_float_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for float.h" >&5
+$as_echo_n "checking for float.h... " >&6; }
+if test "${ac_cv_header_float_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_float_h" >&5
+$as_echo "$ac_cv_header_float_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking float.h usability" >&5
+$as_echo_n "checking float.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <float.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking float.h presence" >&5
+$as_echo_n "checking float.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <float.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: float.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: float.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: float.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: float.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: float.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: float.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: float.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: float.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: float.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: float.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: float.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: float.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: float.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: float.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: float.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: float.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for float.h" >&5
+$as_echo_n "checking for float.h... " >&6; }
+if test "${ac_cv_header_float_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_float_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_float_h" >&5
+$as_echo "$ac_cv_header_float_h" >&6; }
+
+fi
+if test $ac_cv_header_float_h = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_FLOAT_H 1
+_ACEOF
+
+fi
+
+
+    if test "${ac_cv_header_values_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for values.h" >&5
+$as_echo_n "checking for values.h... " >&6; }
+if test "${ac_cv_header_values_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_values_h" >&5
+$as_echo "$ac_cv_header_values_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking values.h usability" >&5
+$as_echo_n "checking values.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <values.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking values.h presence" >&5
+$as_echo_n "checking values.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <values.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: values.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: values.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: values.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: values.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: values.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: values.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: values.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: values.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: values.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: values.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: values.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: values.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: values.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: values.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: values.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: values.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for values.h" >&5
+$as_echo_n "checking for values.h... " >&6; }
+if test "${ac_cv_header_values_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_values_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_values_h" >&5
+$as_echo "$ac_cv_header_values_h" >&6; }
+
+fi
+if test $ac_cv_header_values_h = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_VALUES_H 1
+_ACEOF
+
+fi
+
+
+    if test "${ac_cv_header_limits_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for limits.h" >&5
+$as_echo_n "checking for limits.h... " >&6; }
+if test "${ac_cv_header_limits_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5
+$as_echo "$ac_cv_header_limits_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking limits.h usability" >&5
+$as_echo_n "checking limits.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <limits.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking limits.h presence" >&5
+$as_echo_n "checking limits.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <limits.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: limits.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: limits.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: limits.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: limits.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: limits.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: limits.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: limits.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: limits.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: limits.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: limits.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: limits.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: limits.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: limits.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: limits.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for limits.h" >&5
+$as_echo_n "checking for limits.h... " >&6; }
+if test "${ac_cv_header_limits_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_limits_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_limits_h" >&5
+$as_echo "$ac_cv_header_limits_h" >&6; }
+
+fi
+if test $ac_cv_header_limits_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIMITS_H 1
+_ACEOF
+
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_LIMITS_H 1
+_ACEOF
+
+fi
+
+
+    if test "${ac_cv_header_stdlib_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for stdlib.h" >&5
+$as_echo_n "checking for stdlib.h... " >&6; }
+if test "${ac_cv_header_stdlib_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdlib_h" >&5
+$as_echo "$ac_cv_header_stdlib_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking stdlib.h usability" >&5
+$as_echo_n "checking stdlib.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <stdlib.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking stdlib.h presence" >&5
+$as_echo_n "checking stdlib.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: stdlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: stdlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stdlib.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: stdlib.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: stdlib.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: stdlib.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stdlib.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: stdlib.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stdlib.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: stdlib.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stdlib.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: stdlib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stdlib.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: stdlib.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: stdlib.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: stdlib.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for stdlib.h" >&5
+$as_echo_n "checking for stdlib.h... " >&6; }
+if test "${ac_cv_header_stdlib_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_stdlib_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdlib_h" >&5
+$as_echo "$ac_cv_header_stdlib_h" >&6; }
+
+fi
+if test $ac_cv_header_stdlib_h = yes; then
+  tcl_ok=1
+else
+  tcl_ok=0
+fi
+
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "strtol" >/dev/null 2>&1; then
+  :
+else
+  tcl_ok=0
+fi
+rm -f conftest*
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "strtoul" >/dev/null 2>&1; then
+  :
+else
+  tcl_ok=0
+fi
+rm -f conftest*
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "strtod" >/dev/null 2>&1; then
+  :
+else
+  tcl_ok=0
+fi
+rm -f conftest*
+
+    if test $tcl_ok = 0; then
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_STDLIB_H 1
+_ACEOF
+
+    fi
+    if test "${ac_cv_header_string_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for string.h" >&5
+$as_echo_n "checking for string.h... " >&6; }
+if test "${ac_cv_header_string_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_string_h" >&5
+$as_echo "$ac_cv_header_string_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking string.h usability" >&5
+$as_echo_n "checking string.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <string.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking string.h presence" >&5
+$as_echo_n "checking string.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: string.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: string.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: string.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: string.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: string.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: string.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: string.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: string.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: string.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: string.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: string.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: string.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: string.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: string.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: string.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: string.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for string.h" >&5
+$as_echo_n "checking for string.h... " >&6; }
+if test "${ac_cv_header_string_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_string_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_string_h" >&5
+$as_echo "$ac_cv_header_string_h" >&6; }
+
+fi
+if test $ac_cv_header_string_h = yes; then
+  tcl_ok=1
+else
+  tcl_ok=0
+fi
+
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "strstr" >/dev/null 2>&1; then
+  :
+else
+  tcl_ok=0
+fi
+rm -f conftest*
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "strerror" >/dev/null 2>&1; then
+  :
+else
+  tcl_ok=0
+fi
+rm -f conftest*
+
+
+    # See also memmove check below for a place where NO_STRING_H can be
+    # set and why.
+
+    if test $tcl_ok = 0; then
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_STRING_H 1
+_ACEOF
+
+    fi
+
+    if test "${ac_cv_header_sys_wait_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for sys/wait.h" >&5
+$as_echo_n "checking for sys/wait.h... " >&6; }
+if test "${ac_cv_header_sys_wait_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
+$as_echo "$ac_cv_header_sys_wait_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking sys/wait.h usability" >&5
+$as_echo_n "checking sys/wait.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <sys/wait.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking sys/wait.h presence" >&5
+$as_echo_n "checking sys/wait.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/wait.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: sys/wait.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: sys/wait.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/wait.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: sys/wait.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: sys/wait.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: sys/wait.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/wait.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: sys/wait.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/wait.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: sys/wait.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/wait.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: sys/wait.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/wait.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: sys/wait.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: sys/wait.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: sys/wait.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for sys/wait.h" >&5
+$as_echo_n "checking for sys/wait.h... " >&6; }
+if test "${ac_cv_header_sys_wait_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_sys_wait_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
+$as_echo "$ac_cv_header_sys_wait_h" >&6; }
+
+fi
+if test $ac_cv_header_sys_wait_h = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_SYS_WAIT_H 1
+_ACEOF
+
+fi
+
+
+    if test "${ac_cv_header_dlfcn_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for dlfcn.h" >&5
+$as_echo_n "checking for dlfcn.h... " >&6; }
+if test "${ac_cv_header_dlfcn_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5
+$as_echo "$ac_cv_header_dlfcn_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking dlfcn.h usability" >&5
+$as_echo_n "checking dlfcn.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <dlfcn.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking dlfcn.h presence" >&5
+$as_echo_n "checking dlfcn.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <dlfcn.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: dlfcn.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: dlfcn.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: dlfcn.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: dlfcn.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: dlfcn.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: dlfcn.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: dlfcn.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: dlfcn.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: dlfcn.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: dlfcn.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: dlfcn.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: dlfcn.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for dlfcn.h" >&5
+$as_echo_n "checking for dlfcn.h... " >&6; }
+if test "${ac_cv_header_dlfcn_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_dlfcn_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_dlfcn_h" >&5
+$as_echo "$ac_cv_header_dlfcn_h" >&6; }
+
+fi
+if test $ac_cv_header_dlfcn_h = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_DLFCN_H 1
+_ACEOF
+
+fi
+
+
+
+    # OS/390 lacks sys/param.h (and doesn't need it, by chance).
+
+for ac_header in sys/param.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+	# Let the user call this, because if it triggers, they will
+	# need a compat/strtod.c that is correct.  Users can also
+	# use Tcl_GetDouble(FromObj) instead.
+	#TEA_BUGGY_STRTOD
+    fi
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_F77+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  { $as_echo "$as_me:$LINENO: result: $F77" >&5
+$as_echo "$F77" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+$as_echo "$ac_ct_F77" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_F77" && break
+done
+
+  if test "x$ac_ct_F77" = x; then
+    F77=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    F77=$ac_ct_F77
+  fi
+fi
+
+
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_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
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+{ $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+$as_echo_n "checking whether $F77 accepts -g... " >&6; }
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_f77_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_prog_f77_g=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+$as_echo "$ac_cv_prog_f77_g" >&6; }
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+if test $ac_compiler_gnu = yes; then
+  G77=yes
+else
+  G77=
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+$as_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.
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat >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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CFLAGS=""
+      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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=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 <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_c89=$ac_arg
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  $as_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 nonexistent 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 <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_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
+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  $as_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 nonexistent 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 <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&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
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_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
+  { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+$as_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
+
+ac_ext=cpp
+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 -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CXX+set}" = set; then
+  $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:$LINENO: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cxx_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CXXFLAGS=""
+      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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cxx_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$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
+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
+
+#-----------------------------------------------------------------------
+# __CHANGE__
+# Specify the C source files to compile in TEA_ADD_SOURCES,
+# public headers that need to be installed in TEA_ADD_HEADERS,
+# stub library C source files to compile in TEA_ADD_STUB_SOURCES,
+# and runtime Tcl library files in TEA_ADD_TCL_SOURCES.
+# This defines PKG(_STUB)_SOURCES, PKG(_STUB)_OBJECTS, PKG_HEADERS
+# and PKG_TCL_SOURCES.
+#-----------------------------------------------------------------------
+
+
+    vars="rp_optimizer.c rp_tcloptions.c rp_optimizer_tcl.c plugin_pgapack.c"
+    for i in $vars; do
+	case $i in
+	    \$*)
+		# allow $-var names
+		PKG_SOURCES="$PKG_SOURCES $i"
+		PKG_OBJECTS="$PKG_OBJECTS $i"
+		;;
+	    *)
+		# check for existence - allows for generic/win/unix VPATH
+		if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/src/$i" \
+		    -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
+		    ; then
+		    { { $as_echo "$as_me:$LINENO: error: could not find source file '$i'" >&5
+$as_echo "$as_me: error: could not find source file '$i'" >&2;}
+   { (exit 1); exit 1; }; }
+		fi
+		PKG_SOURCES="$PKG_SOURCES $i"
+		# this assumes it is in a VPATH dir
+		i=`basename $i`
+		# handle user calling this before or after TEA_SETUP_COMPILER
+		if test x"${OBJEXT}" != x ; then
+		    j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}"
+		else
+		    j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}"
+		fi
+		PKG_OBJECTS="$PKG_OBJECTS $j"
+		;;
+	esac
+    done
+
+
+
+
+    vars=""
+    for i in $vars; do
+	# check for existence, be strict because it is installed
+	if test ! -f "${srcdir}/$i" ; then
+	    { { $as_echo "$as_me:$LINENO: error: could not find header file '${srcdir}/$i'" >&5
+$as_echo "$as_me: error: could not find header file '${srcdir}/$i'" >&2;}
+   { (exit 1); exit 1; }; }
+	fi
+	PKG_HEADERS="$PKG_HEADERS $i"
+    done
+
+
+
+    vars="-I\$(srcdir)/pgapack/pgapack/include"
+    for i in $vars; do
+	PKG_INCLUDES="$PKG_INCLUDES $i"
+    done
+
+
+
+    PKG_CFLAGS="$PKG_CFLAGS -DWL=32"
+
+
+
+    vars=""
+    for i in $vars; do
+	# check for existence - allows for generic/win/unix VPATH
+	if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
+	    -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
+	    ; then
+	    { { $as_echo "$as_me:$LINENO: error: could not find stub source file '$i'" >&5
+$as_echo "$as_me: error: could not find stub source file '$i'" >&2;}
+   { (exit 1); exit 1; }; }
+	fi
+	PKG_STUB_SOURCES="$PKG_STUB_SOURCES $i"
+	# this assumes it is in a VPATH dir
+	i=`basename $i`
+	# handle user calling this before or after TEA_SETUP_COMPILER
+	if test x"${OBJEXT}" != x ; then
+	    j="`echo $i | sed -e 's/\.[^.]*$//'`.${OBJEXT}"
+	else
+	    j="`echo $i | sed -e 's/\.[^.]*$//'`.\${OBJEXT}"
+	fi
+	PKG_STUB_OBJECTS="$PKG_STUB_OBJECTS $j"
+    done
+
+
+
+# uncomment this and mkindex.tcl line in makefile when you are ready to
+# install tcl rappture library bindings
+#TEA_ADD_TCL_SOURCES([scripts/exec.tcl scripts/value.tcl init.tcl ../../tcl/scripts/library.tcl ../../tcl/scripts/result.tcl])
+
+    vars=""
+    for i in $vars; do
+	# check for existence, be strict because it is installed
+	if test ! -f "${srcdir}/$i" ; then
+	    { { $as_echo "$as_me:$LINENO: error: could not find tcl source file '${srcdir}/$i'" >&5
+$as_echo "$as_me: error: could not find tcl source file '${srcdir}/$i'" >&2;}
+   { (exit 1); exit 1; }; }
+	fi
+	PKG_TCL_SOURCES="$PKG_TCL_SOURCES $i"
+    done
+
+
+
+    vars="-Lpgapack/pgapack/lib/linux -lpgaO"
+    for i in $vars; do
+	if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+	    # Convert foo.lib to -lfoo for GCC.  No-op if not *.lib
+	    i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
+	fi
+	PKG_LIBS="$PKG_LIBS $i"
+    done
+
+
+
+#--------------------------------------------------------------------
+# __CHANGE__
+# A few miscellaneous platform-specific items:
+#
+# Define a special symbol for Windows (BUILD_sample in this case) so
+# that we create the export library with the dll.
+#
+# Windows creates a few extra files that need to be cleaned up.
+# You can add more files to clean if your extension creates any extra
+# files.
+#
+# TEA_ADD_* any platform specific compiler/build info here.
+#--------------------------------------------------------------------
+
+if test "${TEA_PLATFORM}" = "windows" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define BUILD_rappture 1
+_ACEOF
+
+    CLEANFILES="*.lib *.dll *.exp *.ilk *.pdb vc*.pch"
+
+    vars="/LIBPATH:C:/Tcl/lib"
+    for i in $vars; do
+	if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+	    # Convert foo.lib to -lfoo for GCC.  No-op if not *.lib
+	    i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
+	fi
+	PKG_LIBS="$PKG_LIBS $i"
+    done
+
+
+    #TEA_ADD_SOURCES([win/winFile.c])
+    #TEA_ADD_INCLUDES([-I\"$(${CYGPATH} ${srcdir}/win)\"])
+else
+    CLEANFILES="*core *.o *.so *.a"
+    #TEA_ADD_SOURCES([unix/unixFile.c])
+
+    vars="-L${prefix}/lib"
+    for i in $vars; do
+	if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+	    # Convert foo.lib to -lfoo for GCC.  No-op if not *.lib
+	    i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
+	fi
+	PKG_LIBS="$PKG_LIBS $i"
+    done
+
+
+    if test "${libdir}" != "${prefix}/lib" ; then
+
+    vars="-L${libdir}"
+    for i in $vars; do
+	if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+	    # Convert foo.lib to -lfoo for GCC.  No-op if not *.lib
+	    i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
+	fi
+	PKG_LIBS="$PKG_LIBS $i"
+    done
+
+
+    fi
+fi
+
+
+#--------------------------------------------------------------------
+# __CHANGE__
+# Choose which headers you need.  Extension authors should try very
+# hard to only rely on the Tcl public header files.  Internal headers
+# contain private data structures and are subject to change without
+# notice.
+# This MUST be called after TEA_LOAD_TCLCONFIG / TEA_LOAD_TKCONFIG
+#--------------------------------------------------------------------
+
+
+    { $as_echo "$as_me:$LINENO: checking for Tcl public headers" >&5
+$as_echo_n "checking for Tcl public headers... " >&6; }
+
+
+# Check whether --with-tclinclude was given.
+if test "${with_tclinclude+set}" = set; then
+  withval=$with_tclinclude; with_tclinclude=${withval}
+fi
+
+
+    if test "${ac_cv_c_tclh+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+	# Use the value from --with-tclinclude, if it was given
+
+	if test x"${with_tclinclude}" != x ; then
+	    if test -f "${with_tclinclude}/tcl.h" ; then
+		ac_cv_c_tclh=${with_tclinclude}
+	    else
+		{ { $as_echo "$as_me:$LINENO: error: ${with_tclinclude} directory does not contain tcl.h" >&5
+$as_echo "$as_me: error: ${with_tclinclude} directory does not contain tcl.h" >&2;}
+   { (exit 1); exit 1; }; }
+	    fi
+	else
+	    if test "`uname -s`" = "Darwin"; then
+		# If Tcl was built as a framework, attempt to use
+		# the framework's Headers directory
+		case ${TCL_DEFS} in
+		    *TCL_FRAMEWORK*)
+			list="`ls -d ${TCL_BIN_DIR}/Headers 2>/dev/null`"
+			;;
+		esac
+	    fi
+
+	    # Look in the source dir only if Tcl is not installed,
+	    # and in that situation, look there before installed locations.
+	    if test -f "${TCL_BIN_DIR}/Makefile" ; then
+		list="$list `ls -d ${TCL_SRC_DIR}/generic 2>/dev/null`"
+	    fi
+
+	    # Check order: pkg --prefix location, Tcl's --prefix location,
+	    # relative to directory of tclConfig.sh.
+
+	    eval "temp_includedir=${includedir}"
+	    list="$list \
+		`ls -d ${temp_includedir}        2>/dev/null` \
+		`ls -d ${TCL_PREFIX}/include     2>/dev/null` \
+		`ls -d ${TCL_BIN_DIR}/../include 2>/dev/null`"
+	    if test "${TEA_PLATFORM}" != "windows" -o "$GCC" = "yes"; then
+		list="$list /usr/local/include /usr/include"
+		if test x"${TCL_INCLUDE_SPEC}" != x ; then
+		    d=`echo "${TCL_INCLUDE_SPEC}" | sed -e 's/^-I//'`
+		    list="$list `ls -d ${d} 2>/dev/null`"
+		fi
+	    fi
+	    for i in $list ; do
+		if test -f "$i/tcl.h" ; then
+		    ac_cv_c_tclh=$i
+		    break
+		fi
+	    done
+	fi
+
+fi
+
+
+    # Print a message based on how we determined the include path
+
+    if test x"${ac_cv_c_tclh}" = x ; then
+	{ { $as_echo "$as_me:$LINENO: error: tcl.h not found.  Please specify its location with --with-tclinclude" >&5
+$as_echo "$as_me: error: tcl.h not found.  Please specify its location with --with-tclinclude" >&2;}
+   { (exit 1); exit 1; }; }
+    else
+	{ $as_echo "$as_me:$LINENO: result: ${ac_cv_c_tclh}" >&5
+$as_echo "${ac_cv_c_tclh}" >&6; }
+    fi
+
+    # Convert to a native path and substitute into the output files.
+
+    INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tclh}`
+
+    TCL_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\"
+
+
+
+#TEA_PRIVATE_TCL_HEADERS
+
+#TEA_PUBLIC_TK_HEADERS
+#TEA_PRIVATE_TK_HEADERS
+#TEA_PATH_X
+
+#--------------------------------------------------------------------
+# Check whether --enable-threads or --disable-threads was given.
+# This auto-enables if Tcl was compiled threaded.
+#--------------------------------------------------------------------
+
+
+    # Check whether --enable-threads was given.
+if test "${enable_threads+set}" = set; then
+  enableval=$enable_threads; tcl_ok=$enableval
+else
+  tcl_ok=yes
+fi
+
+
+    if test "${enable_threads+set}" = set; then
+	enableval="$enable_threads"
+	tcl_ok=$enableval
+    else
+	tcl_ok=yes
+    fi
+
+    if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then
+	TCL_THREADS=1
+
+	if test "${TEA_PLATFORM}" != "windows" ; then
+	    # We are always OK on Windows, so check what this platform wants:
+
+	    # USE_THREAD_ALLOC tells us to try the special thread-based
+	    # allocator that significantly reduces lock contention
+
+cat >>confdefs.h <<\_ACEOF
+#define USE_THREAD_ALLOC 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _REENTRANT 1
+_ACEOF
+
+	    if test "`uname -s`" = "SunOS" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_PTHREAD_SEMANTICS 1
+_ACEOF
+
+	    fi
+
+cat >>confdefs.h <<\_ACEOF
+#define _THREAD_SAFE 1
+_ACEOF
+
+	    { $as_echo "$as_me:$LINENO: checking for pthread_mutex_init in -lpthread" >&5
+$as_echo_n "checking for pthread_mutex_init in -lpthread... " >&6; }
+if test "${ac_cv_lib_pthread_pthread_mutex_init+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_mutex_init ();
+int
+main ()
+{
+return pthread_mutex_init ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_pthread_pthread_mutex_init=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_pthread_pthread_mutex_init=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_mutex_init" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_mutex_init" >&6; }
+if test $ac_cv_lib_pthread_pthread_mutex_init = yes; then
+  tcl_ok=yes
+else
+  tcl_ok=no
+fi
+
+	    if test "$tcl_ok" = "no"; then
+		# Check a little harder for __pthread_mutex_init in the same
+		# library, as some systems hide it there until pthread.h is
+		# defined.  We could alternatively do an AC_TRY_COMPILE with
+		# pthread.h, but that will work with libpthread really doesn't
+		# exist, like AIX 4.2.  [Bug: 4359]
+		{ $as_echo "$as_me:$LINENO: checking for __pthread_mutex_init in -lpthread" >&5
+$as_echo_n "checking for __pthread_mutex_init in -lpthread... " >&6; }
+if test "${ac_cv_lib_pthread___pthread_mutex_init+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char __pthread_mutex_init ();
+int
+main ()
+{
+return __pthread_mutex_init ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_pthread___pthread_mutex_init=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_pthread___pthread_mutex_init=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread___pthread_mutex_init" >&5
+$as_echo "$ac_cv_lib_pthread___pthread_mutex_init" >&6; }
+if test $ac_cv_lib_pthread___pthread_mutex_init = yes; then
+  tcl_ok=yes
+else
+  tcl_ok=no
+fi
+
+	    fi
+
+	    if test "$tcl_ok" = "yes"; then
+		# The space is needed
+		THREADS_LIBS=" -lpthread"
+	    else
+		{ $as_echo "$as_me:$LINENO: checking for pthread_mutex_init in -lpthreads" >&5
+$as_echo_n "checking for pthread_mutex_init in -lpthreads... " >&6; }
+if test "${ac_cv_lib_pthreads_pthread_mutex_init+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthreads  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_mutex_init ();
+int
+main ()
+{
+return pthread_mutex_init ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_pthreads_pthread_mutex_init=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_pthreads_pthread_mutex_init=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthreads_pthread_mutex_init" >&5
+$as_echo "$ac_cv_lib_pthreads_pthread_mutex_init" >&6; }
+if test $ac_cv_lib_pthreads_pthread_mutex_init = yes; then
+  tcl_ok=yes
+else
+  tcl_ok=no
+fi
+
+		if test "$tcl_ok" = "yes"; then
+		    # The space is needed
+		    THREADS_LIBS=" -lpthreads"
+		else
+		    { $as_echo "$as_me:$LINENO: checking for pthread_mutex_init in -lc" >&5
+$as_echo_n "checking for pthread_mutex_init in -lc... " >&6; }
+if test "${ac_cv_lib_c_pthread_mutex_init+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_mutex_init ();
+int
+main ()
+{
+return pthread_mutex_init ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_c_pthread_mutex_init=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_c_pthread_mutex_init=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_c_pthread_mutex_init" >&5
+$as_echo "$ac_cv_lib_c_pthread_mutex_init" >&6; }
+if test $ac_cv_lib_c_pthread_mutex_init = yes; then
+  tcl_ok=yes
+else
+  tcl_ok=no
+fi
+
+		    if test "$tcl_ok" = "no"; then
+			{ $as_echo "$as_me:$LINENO: checking for pthread_mutex_init in -lc_r" >&5
+$as_echo_n "checking for pthread_mutex_init in -lc_r... " >&6; }
+if test "${ac_cv_lib_c_r_pthread_mutex_init+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_mutex_init ();
+int
+main ()
+{
+return pthread_mutex_init ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_c_r_pthread_mutex_init=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_c_r_pthread_mutex_init=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_c_r_pthread_mutex_init" >&5
+$as_echo "$ac_cv_lib_c_r_pthread_mutex_init" >&6; }
+if test $ac_cv_lib_c_r_pthread_mutex_init = yes; then
+  tcl_ok=yes
+else
+  tcl_ok=no
+fi
+
+			if test "$tcl_ok" = "yes"; then
+			    # The space is needed
+			    THREADS_LIBS=" -pthread"
+			else
+			    TCL_THREADS=0
+			    { $as_echo "$as_me:$LINENO: WARNING: Do not know how to find pthread lib on your system - thread support disabled" >&5
+$as_echo "$as_me: WARNING: Do not know how to find pthread lib on your system - thread support disabled" >&2;}
+			fi
+		    fi
+		fi
+	    fi
+	fi
+    else
+	TCL_THREADS=0
+    fi
+    # Do checking message here to not mess up interleaved configure output
+    { $as_echo "$as_me:$LINENO: checking for building with threads" >&5
+$as_echo_n "checking for building with threads... " >&6; }
+    if test "${TCL_THREADS}" = 1; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TCL_THREADS 1
+_ACEOF
+
+	{ $as_echo "$as_me:$LINENO: result: yes (default)" >&5
+$as_echo "yes (default)" >&6; }
+    else
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    # TCL_THREADS sanity checking.  See if our request for building with
+    # threads is the same as the way Tcl was built.  If not, warn the user.
+    case ${TCL_DEFS} in
+	*THREADS=1*)
+	    if test "${TCL_THREADS}" = "0"; then
+		{ $as_echo "$as_me:$LINENO: WARNING:
+    Building ${PACKAGE_NAME} without threads enabled, but building against Tcl
+    that IS thread-enabled.  It is recommended to use --enable-threads." >&5
+$as_echo "$as_me: WARNING:
+    Building ${PACKAGE_NAME} without threads enabled, but building against Tcl
+    that IS thread-enabled.  It is recommended to use --enable-threads." >&2;}
+	    fi
+	    ;;
+	*)
+	    if test "${TCL_THREADS}" = "1"; then
+		{ $as_echo "$as_me:$LINENO: WARNING:
+    --enable-threads requested, but building against a Tcl that is NOT
+    thread-enabled.  This is an OK configuration that will also run in
+    a thread-enabled core." >&5
+$as_echo "$as_me: WARNING:
+    --enable-threads requested, but building against a Tcl that is NOT
+    thread-enabled.  This is an OK configuration that will also run in
+    a thread-enabled core." >&2;}
+	    fi
+	    ;;
+    esac
+
+
+
+#--------------------------------------------------------------------
+# The statement below defines a collection of symbols related to
+# building as a shared library instead of a static library.
+#--------------------------------------------------------------------
+
+
+    { $as_echo "$as_me:$LINENO: checking how to build libraries" >&5
+$as_echo_n "checking how to build libraries... " >&6; }
+    # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval=$enable_shared; tcl_ok=$enableval
+else
+  tcl_ok=yes
+fi
+
+
+    if test "${enable_shared+set}" = set; then
+	enableval="$enable_shared"
+	tcl_ok=$enableval
+    else
+	tcl_ok=yes
+    fi
+
+    if test "$tcl_ok" = "yes" ; then
+	{ $as_echo "$as_me:$LINENO: result: shared" >&5
+$as_echo "shared" >&6; }
+	SHARED_BUILD=1
+    else
+	{ $as_echo "$as_me:$LINENO: result: static" >&5
+$as_echo "static" >&6; }
+	SHARED_BUILD=0
+
+cat >>confdefs.h <<\_ACEOF
+#define STATIC_BUILD 1
+_ACEOF
+
+    fi
+
+
+
+#--------------------------------------------------------------------
+# This macro figures out what flags to use with the compiler/linker
+# when building shared/static debug/optimized objects.  This information
+# can be taken from the tclConfig.sh file, but this figures it all out.
+#--------------------------------------------------------------------
+
+
+
+
+    # Step 0.a: Enable 64 bit support?
+
+    { $as_echo "$as_me:$LINENO: checking if 64bit support is requested" >&5
+$as_echo_n "checking if 64bit support is requested... " >&6; }
+    # Check whether --enable-64bit was given.
+if test "${enable_64bit+set}" = set; then
+  enableval=$enable_64bit; do64bit=$enableval
+else
+  do64bit=no
+fi
+
+    { $as_echo "$as_me:$LINENO: result: $do64bit" >&5
+$as_echo "$do64bit" >&6; }
+
+    # Step 0.b: Enable Solaris 64 bit VIS support?
+
+    { $as_echo "$as_me:$LINENO: checking if 64bit Sparc VIS support is requested" >&5
+$as_echo_n "checking if 64bit Sparc VIS support is requested... " >&6; }
+    # Check whether --enable-64bit-vis was given.
+if test "${enable_64bit_vis+set}" = set; then
+  enableval=$enable_64bit_vis; do64bitVIS=$enableval
+else
+  do64bitVIS=no
+fi
+
+    { $as_echo "$as_me:$LINENO: result: $do64bitVIS" >&5
+$as_echo "$do64bitVIS" >&6; }
+
+    if test "$do64bitVIS" = "yes"; then
+	# Force 64bit on with VIS
+	do64bit=yes
+    fi
+
+    # Step 0.c: Cross-compiling options for Windows/CE builds?
+
+    if test "${TEA_PLATFORM}" = "windows" ; then
+	{ $as_echo "$as_me:$LINENO: checking if Windows/CE build is requested" >&5
+$as_echo_n "checking if Windows/CE build is requested... " >&6; }
+	# Check whether --enable-wince was given.
+if test "${enable_wince+set}" = set; then
+  enableval=$enable_wince; doWince=$enableval
+else
+  doWince=no
+fi
+
+	{ $as_echo "$as_me:$LINENO: result: $doWince" >&5
+$as_echo "$doWince" >&6; }
+    fi
+
+    # Step 1: set the variable "system" to hold the name and version number
+    # for the system.
+
+
+    { $as_echo "$as_me:$LINENO: checking system version" >&5
+$as_echo_n "checking system version... " >&6; }
+if test "${tcl_cv_sys_version+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+	if test "${TEA_PLATFORM}" = "windows" ; then
+	    tcl_cv_sys_version=windows
+	elif test -f /usr/lib/NextStep/software_version; then
+	    tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
+	else
+	    tcl_cv_sys_version=`uname -s`-`uname -r`
+	    if test "$?" -ne 0 ; then
+		{ $as_echo "$as_me:$LINENO: WARNING: can't find uname command" >&5
+$as_echo "$as_me: WARNING: can't find uname command" >&2;}
+		tcl_cv_sys_version=unknown
+	    else
+		# Special check for weird MP-RAS system (uname returns weird
+		# results, and the version is kept in special file).
+
+		if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
+		    tcl_cv_sys_version=MP-RAS-`awk '{print $3}' /etc/.relid`
+		fi
+		if test "`uname -s`" = "AIX" ; then
+		    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
+		fi
+	    fi
+	fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $tcl_cv_sys_version" >&5
+$as_echo "$tcl_cv_sys_version" >&6; }
+    system=$tcl_cv_sys_version
+
+
+    # Step 2: check for existence of -ldl library.  This is needed because
+    # Linux can use either -ldl or -ldld for dynamic loading.
+
+    { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dl_dlopen=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test $ac_cv_lib_dl_dlopen = yes; then
+  have_dl=yes
+else
+  have_dl=no
+fi
+
+
+    # Require ranlib early so we can override it in special cases below.
+
+
+
+    # Step 3: set configuration options based on system name and version.
+    # This is similar to Tcl's unix/tcl.m4 except that we've added a
+    # "windows" case.
+
+    do64bit_ok=no
+    LDFLAGS_ORIG="$LDFLAGS"
+    # When ld needs options to work in 64-bit mode, put them in
+    # LDFLAGS_ARCH so they eventually end up in LDFLAGS even if [load]
+    # is disabled by the user. [Bug 1016796]
+    LDFLAGS_ARCH=""
+    TCL_EXPORT_FILE_SUFFIX=""
+    UNSHARED_LIB_SUFFIX=""
+    TCL_TRIM_DOTS='`echo ${PACKAGE_VERSION} | tr -d .`'
+    ECHO_VERSION='`echo ${PACKAGE_VERSION}`'
+    TCL_LIB_VERSIONS_OK=ok
+    CFLAGS_DEBUG=-g
+    CFLAGS_OPTIMIZE=-O
+    if test "$GCC" = "yes" ; then
+	CFLAGS_OPTIMIZE=-O2
+	CFLAGS_WARNING="-Wall -Wno-implicit-int"
+    else
+	CFLAGS_WARNING=""
+    fi
+    TCL_NEEDS_EXP_FILE=0
+    TCL_BUILD_EXP_FILE=""
+    TCL_EXP_FILE=""
+    # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="ar"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:$LINENO: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    STLIB_LD='${AR} cr'
+    LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
+    case $system in
+	windows)
+	    # This is a 2-stage check to make sure we have the 64-bit SDK
+	    # We have to know where the SDK is installed.
+	    # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs
+	    # MACHINE is IX86 for LINK, but this is used by the manifest,
+	    # which requires x86|amd64|ia64.
+	    MACHINE="X86"
+	    if test "$do64bit" != "no" ; then
+		if test "x${MSSDK}x" = "xx" ; then
+		    MSSDK="C:/Progra~1/Microsoft Platform SDK"
+		fi
+		MSSDK=`echo "$MSSDK" | sed -e  's!\\\!/!g'`
+		PATH64=""
+		case "$do64bit" in
+		    amd64|x64|yes)
+			MACHINE="AMD64" ; # default to AMD64 64-bit build
+			PATH64="${MSSDK}/Bin/Win64/x86/AMD64"
+			;;
+		    ia64)
+			MACHINE="IA64"
+			PATH64="${MSSDK}/Bin/Win64"
+			;;
+		esac
+		if test ! -d "${PATH64}" ; then
+		    { $as_echo "$as_me:$LINENO: WARNING: Could not find 64-bit $MACHINE SDK to enable 64bit mode" >&5
+$as_echo "$as_me: WARNING: Could not find 64-bit $MACHINE SDK to enable 64bit mode" >&2;}
+		    { $as_echo "$as_me:$LINENO: WARNING: Ensure latest Platform SDK is installed" >&5
+$as_echo "$as_me: WARNING: Ensure latest Platform SDK is installed" >&2;}
+		    do64bit="no"
+		else
+		    { $as_echo "$as_me:$LINENO: result:    Using 64-bit $MACHINE mode" >&5
+$as_echo "   Using 64-bit $MACHINE mode" >&6; }
+		    do64bit_ok="yes"
+		fi
+	    fi
+
+	    if test "$doWince" != "no" ; then
+		if test "$do64bit" != "no" ; then
+		    { { $as_echo "$as_me:$LINENO: error: Windows/CE and 64-bit builds incompatible" >&5
+$as_echo "$as_me: error: Windows/CE and 64-bit builds incompatible" >&2;}
+   { (exit 1); exit 1; }; }
+		fi
+		if test "$GCC" = "yes" ; then
+		    { { $as_echo "$as_me:$LINENO: error: Windows/CE and GCC builds incompatible" >&5
+$as_echo "$as_me: error: Windows/CE and GCC builds incompatible" >&2;}
+   { (exit 1); exit 1; }; }
+		fi
+
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-celib
+
+    if test x"${no_celib}" = x ; then
+	# we reset no_celib in case something fails here
+	no_celib=true
+
+# Check whether --with-celib was given.
+if test "${with_celib+set}" = set; then
+  withval=$with_celib; with_celibconfig=${withval}
+fi
+
+	{ $as_echo "$as_me:$LINENO: checking for Windows/CE celib directory" >&5
+$as_echo_n "checking for Windows/CE celib directory... " >&6; }
+	if test "${ac_cv_c_celibconfig+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+	    # First check to see if --with-celibconfig was specified.
+	    if test x"${with_celibconfig}" != x ; then
+		if test -d "${with_celibconfig}/inc" ; then
+		    ac_cv_c_celibconfig=`(cd ${with_celibconfig}; pwd)`
+		else
+		    { { $as_echo "$as_me:$LINENO: error: ${with_celibconfig} directory doesn't contain inc directory" >&5
+$as_echo "$as_me: error: ${with_celibconfig} directory doesn't contain inc directory" >&2;}
+   { (exit 1); exit 1; }; }
+		fi
+	    fi
+
+	    # then check for a celib library
+	    if test x"${ac_cv_c_celibconfig}" = x ; then
+		for i in \
+			../celib-palm-3.0 \
+			../celib \
+			../../celib-palm-3.0 \
+			../../celib \
+			`ls -dr ../celib-*3.[0-9]* 2>/dev/null` \
+			${srcdir}/../celib-palm-3.0 \
+			${srcdir}/../celib \
+			`ls -dr ${srcdir}/../celib-*3.[0-9]* 2>/dev/null` \
+			; do
+		    if test -d "$i/inc" ; then
+			ac_cv_c_celibconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+fi
+
+	if test x"${ac_cv_c_celibconfig}" = x ; then
+	    { { $as_echo "$as_me:$LINENO: error: Cannot find celib support library directory" >&5
+$as_echo "$as_me: error: Cannot find celib support library directory" >&2;}
+   { (exit 1); exit 1; }; }
+	else
+	    no_celib=
+	    CELIB_DIR=${ac_cv_c_celibconfig}
+	    CELIB_DIR=`echo "$CELIB_DIR" | sed -e 's!\\\!/!g'`
+	    { $as_echo "$as_me:$LINENO: result: found $CELIB_DIR" >&5
+$as_echo "found $CELIB_DIR" >&6; }
+	fi
+    fi
+
+		# Set defaults for common evc4/PPC2003 setup
+		# Currently Tcl requires 300+, possibly 420+ for sockets
+		CEVERSION=420; 		# could be 211 300 301 400 420 ...
+		TARGETCPU=ARMV4;	# could be ARMV4 ARM MIPS SH3 X86 ...
+		ARCH=ARM;		# could be ARM MIPS X86EM ...
+		PLATFORM="Pocket PC 2003"; # or "Pocket PC 2002"
+		if test "$doWince" != "yes"; then
+		    # If !yes then the user specified something
+		    # Reset ARCH to allow user to skip specifying it
+		    ARCH=
+		    eval `echo $doWince | awk -F, '{ \
+	    if (length($1)) { printf "CEVERSION=\"%s\"\n", $1; \
+	    if ($1 < 400)   { printf "PLATFORM=\"Pocket PC 2002\"\n" } }; \
+	    if (length($2)) { printf "TARGETCPU=\"%s\"\n", toupper($2) }; \
+	    if (length($3)) { printf "ARCH=\"%s\"\n", toupper($3) }; \
+	    if (length($4)) { printf "PLATFORM=\"%s\"\n", $4 }; \
+		    }'`
+		    if test "x${ARCH}" = "x" ; then
+			ARCH=$TARGETCPU;
+		    fi
+		fi
+		OSVERSION=WCE$CEVERSION;
+	    	if test "x${WCEROOT}" = "x" ; then
+			WCEROOT="C:/Program Files/Microsoft eMbedded C++ 4.0"
+		    if test ! -d "${WCEROOT}" ; then
+			WCEROOT="C:/Program Files/Microsoft eMbedded Tools"
+		    fi
+		fi
+		if test "x${SDKROOT}" = "x" ; then
+		    SDKROOT="C:/Program Files/Windows CE Tools"
+		    if test ! -d "${SDKROOT}" ; then
+			SDKROOT="C:/Windows CE Tools"
+		    fi
+		fi
+		WCEROOT=`echo "$WCEROOT" | sed -e 's!\\\!/!g'`
+		SDKROOT=`echo "$SDKROOT" | sed -e 's!\\\!/!g'`
+		if test ! -d "${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}" \
+		    -o ! -d "${WCEROOT}/EVC/${OSVERSION}/bin"; then
+		    { { $as_echo "$as_me:$LINENO: error: could not find PocketPC SDK or target compiler to enable WinCE mode $CEVERSION,$TARGETCPU,$ARCH,$PLATFORM" >&5
+$as_echo "$as_me: error: could not find PocketPC SDK or target compiler to enable WinCE mode $CEVERSION,$TARGETCPU,$ARCH,$PLATFORM" >&2;}
+   { (exit 1); exit 1; }; }
+		    doWince="no"
+		else
+		    # We could PATH_NOSPACE these, but that's not important,
+		    # as long as we quote them when used.
+		    CEINCLUDE="${SDKROOT}/${OSVERSION}/${PLATFORM}/include"
+		    if test -d "${CEINCLUDE}/${TARGETCPU}" ; then
+			CEINCLUDE="${CEINCLUDE}/${TARGETCPU}"
+		    fi
+		    CELIBPATH="${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}"
+    		fi
+	    fi
+
+	    if test "$GCC" != "yes" ; then
+	        if test "${SHARED_BUILD}" = "0" ; then
+		    runtime=-MT
+	        else
+		    runtime=-MD
+	        fi
+
+                if test "$do64bit" != "no" ; then
+		    # All this magic is necessary for the Win64 SDK RC1 - hobbs
+		    CC="\"${PATH64}/cl.exe\""
+		    CFLAGS="${CFLAGS} -I\"${MSSDK}/Include\" -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\""
+		    RC="\"${MSSDK}/bin/rc.exe\""
+		    lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\""
+		    LINKBIN="\"${PATH64}/link.exe\""
+		    CFLAGS_DEBUG="-nologo -Zi -Od -W3 ${runtime}d"
+		    CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}"
+		    # Avoid 'unresolved external symbol __security_cookie'
+		    # errors, c.f. http://support.microsoft.com/?id=894573
+
+    vars="bufferoverflowU.lib"
+    for i in $vars; do
+	if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+	    # Convert foo.lib to -lfoo for GCC.  No-op if not *.lib
+	    i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
+	fi
+	PKG_LIBS="$PKG_LIBS $i"
+    done
+
+
+		elif test "$doWince" != "no" ; then
+		    CEBINROOT="${WCEROOT}/EVC/${OSVERSION}/bin"
+		    if test "${TARGETCPU}" = "X86"; then
+			CC="\"${CEBINROOT}/cl.exe\""
+		    else
+			CC="\"${CEBINROOT}/cl${ARCH}.exe\""
+		    fi
+		    CFLAGS="$CFLAGS -I\"${CELIB_DIR}/inc\" -I\"${CEINCLUDE}\""
+		    RC="\"${WCEROOT}/Common/EVC/bin/rc.exe\""
+		    arch=`echo ${ARCH} | awk '{print tolower($0)}'`
+		    defs="${ARCH} _${ARCH}_ ${arch} PALM_SIZE _MT _WINDOWS"
+		    if test "${SHARED_BUILD}" = "1" ; then
+			# Static CE builds require static celib as well
+		    	defs="${defs} _DLL"
+		    fi
+		    for i in $defs ; do
+
+cat >>confdefs.h <<_ACEOF
+#define $i 1
+_ACEOF
+
+		    done
+
+cat >>confdefs.h <<_ACEOF
+#define _WIN32_WCE $CEVERSION
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define UNDER_CE $CEVERSION
+_ACEOF
+
+		    CFLAGS_DEBUG="-nologo -Zi -Od"
+		    CFLAGS_OPTIMIZE="-nologo -Ox"
+		    lversion=`echo ${CEVERSION} | sed -e 's/\(.\)\(..\)/\1\.\2/'`
+		    lflags="-MACHINE:${ARCH} -LIBPATH:\"${CELIBPATH}\" -subsystem:windowsce,${lversion} -nologo"
+		    LINKBIN="\"${CEBINROOT}/link.exe\""
+
+		else
+		    RC="rc"
+		    lflags="-nologo"
+    		    LINKBIN="link"
+		    CFLAGS_DEBUG="-nologo -Z7 -Od -W3 -WX ${runtime}d"
+		    CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}"
+		fi
+	    fi
+
+	    if test "$GCC" = "yes"; then
+		# mingw gcc mode
+		RC="windres"
+		CFLAGS_DEBUG="-g"
+		CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer"
+		SHLIB_LD="$CC -shared"
+		UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+		LDFLAGS_CONSOLE="-wl,--subsystem,console ${lflags}"
+		LDFLAGS_WINDOW="-wl,--subsystem,windows ${lflags}"
+	    else
+		SHLIB_LD="${LINKBIN} -dll ${lflags}"
+		# link -lib only works when -lib is the first arg
+		STLIB_LD="${LINKBIN} -lib ${lflags}"
+		UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.lib'
+		PATHTYPE=-w
+		# For information on what debugtype is most useful, see:
+		# http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp
+		# This essentially turns it all on.
+		LDFLAGS_DEBUG="-debug:full -debugtype:both -warn:2"
+		LDFLAGS_OPTIMIZE="-release"
+		if test "$doWince" != "no" ; then
+		    LDFLAGS_CONSOLE="-link ${lflags}"
+		    LDFLAGS_WINDOW=${LDFLAGS_CONSOLE}
+		else
+		    LDFLAGS_CONSOLE="-link -subsystem:console ${lflags}"
+		    LDFLAGS_WINDOW="-link -subsystem:windows ${lflags}"
+		fi
+	    fi
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".dll"
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.dll'
+
+	    TCL_LIB_VERSIONS_OK=nodots
+	    # Bogus to avoid getting this turned off
+	    DL_OBJS="tclLoadNone.obj"
+    	    ;;
+	AIX-*)
+	    if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
+		# AIX requires the _r compiler when gcc isn't being used
+		case "${CC}" in
+		    *_r)
+			# ok ...
+			;;
+		    *)
+			CC=${CC}_r
+			;;
+		esac
+		{ $as_echo "$as_me:$LINENO: result: Using $CC for compiling with threads" >&5
+$as_echo "Using $CC for compiling with threads" >&6; }
+	    fi
+	    LIBS="$LIBS -lc"
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    DL_OBJS="tclLoadDl.o"
+	    LD_LIBRARY_PATH_VAR="LIBPATH"
+
+	    # Check to enable 64-bit flags for compiler/linker on AIX 4+
+	    if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then
+		if test "$GCC" = "yes" ; then
+		    { $as_echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;}
+		else
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS -q64"
+		    LDFLAGS_ARCH="-q64"
+		    RANLIB="${RANLIB} -X64"
+		    AR="${AR} -X64"
+		    SHLIB_LD_FLAGS="-b64"
+		fi
+	    fi
+
+	    if test "`uname -m`" = "ia64" ; then
+		# AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		# AIX-5 has dl* in libc.so
+		DL_LIBS=""
+		if test "$GCC" = "yes" ; then
+		    CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		else
+		    CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
+		fi
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    else
+		if test "$GCC" = "yes" ; then
+		    SHLIB_LD="gcc -shared"
+		else
+		    SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
+		fi
+		SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}"
+		DL_LIBS="-ldl"
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		TCL_NEEDS_EXP_FILE=1
+		TCL_EXPORT_FILE_SUFFIX='${PACKAGE_VERSION}.exp'
+	    fi
+
+	    # AIX v<=4.1 has some different flags than 4.2+
+	    if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then
+		case " $LIBOBJS " in
+  *" tclLoadAix.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS tclLoadAix.$ac_objext"
+ ;;
+esac
+
+		DL_LIBS="-lld"
+	    fi
+
+	    # On AIX <=v4 systems, libbsd.a has to be linked in to support
+	    # non-blocking file IO.  This library has to be linked in after
+	    # the MATH_LIBS or it breaks the pow() function.  The way to
+	    # insure proper sequencing, is to add it to the tail of MATH_LIBS.
+	    # This library also supplies gettimeofday.
+	    #
+	    # AIX does not have a timezone field in struct tm. When the AIX
+	    # bsd library is used, the timezone global and the gettimeofday
+	    # methods are to be avoided for timezone deduction instead, we
+	    # deduce the timezone by comparing the localtime result on a
+	    # known GMT value.
+
+	    { $as_echo "$as_me:$LINENO: checking for gettimeofday in -lbsd" >&5
+$as_echo_n "checking for gettimeofday in -lbsd... " >&6; }
+if test "${ac_cv_lib_bsd_gettimeofday+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gettimeofday ();
+int
+main ()
+{
+return gettimeofday ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_bsd_gettimeofday=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_bsd_gettimeofday=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gettimeofday" >&5
+$as_echo "$ac_cv_lib_bsd_gettimeofday" >&6; }
+if test $ac_cv_lib_bsd_gettimeofday = yes; then
+  libbsd=yes
+else
+  libbsd=no
+fi
+
+	    if test $libbsd = yes; then
+	    	MATH_LIBS="$MATH_LIBS -lbsd"
+
+cat >>confdefs.h <<\_ACEOF
+#define USE_DELTA_FOR_TZ 1
+_ACEOF
+
+	    fi
+	    ;;
+	BeOS*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="${CC} -nostart"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+
+	    #-----------------------------------------------------------
+	    # Check for inet_ntoa in -lbind, for BeOS (which also needs
+	    # -lsocket, even if the network functions are in -lnet which
+	    # is always linked to, for compatibility.
+	    #-----------------------------------------------------------
+	    { $as_echo "$as_me:$LINENO: checking for inet_ntoa in -lbind" >&5
+$as_echo_n "checking for inet_ntoa in -lbind... " >&6; }
+if test "${ac_cv_lib_bind_inet_ntoa+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbind  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char inet_ntoa ();
+int
+main ()
+{
+return inet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_bind_inet_ntoa=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_bind_inet_ntoa=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bind_inet_ntoa" >&5
+$as_echo "$ac_cv_lib_bind_inet_ntoa" >&6; }
+if test $ac_cv_lib_bind_inet_ntoa = yes; then
+  LIBS="$LIBS -lbind -lsocket"
+fi
+
+	    ;;
+	BSD/OS-2.1*|BSD/OS-3*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="shlicc -r"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	BSD/OS-4.*)
+	    SHLIB_CFLAGS="-export-dynamic -fPIC"
+	    SHLIB_LD="cc -shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	dgux*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	HP-UX-*.11.*)
+	    # Use updated header definitions where possible
+
+cat >>confdefs.h <<\_ACEOF
+#define _XOPEN_SOURCE_EXTENDED 1
+_ACEOF
+
+	    # Needed by Tcl, but not most extensions
+	    #AC_DEFINE(_XOPEN_SOURCE, 1, [Do we want to use the XOPEN network library?])
+	    #LIBS="$LIBS -lxnet"               # Use the XOPEN network library
+
+	    SHLIB_SUFFIX=".sl"
+	    { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dld_shl_load=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test $ac_cv_lib_dld_shl_load = yes; then
+  tcl_ok=yes
+else
+  tcl_ok=no
+fi
+
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS='${LIBS}'
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="gcc -shared"
+		SHLIB_LD_LIBS='${LIBS}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+
+	    # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc
+	    #CFLAGS="$CFLAGS +DAportable"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		if test "$GCC" = "yes" ; then
+		    hpux_arch=`${CC} -dumpmachine`
+		    case $hpux_arch in
+			hppa64*)
+			    # 64-bit gcc in use.  Fix flags for GNU ld.
+			    do64bit_ok=yes
+			    SHLIB_LD="${CC} -shared"
+			    SHLIB_LD_LIBS='${LIBS}'
+			    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+			    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+			    ;;
+			*)
+			    { $as_echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;}
+			    ;;
+		    esac
+		else
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS +DD64"
+		    LDFLAGS_ARCH="+DD64"
+		fi
+	    fi
+	    ;;
+	HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
+	    SHLIB_SUFFIX=".sl"
+	    { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dld_shl_load=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test $ac_cv_lib_dld_shl_load = yes; then
+  tcl_ok=yes
+else
+  tcl_ok=no
+fi
+
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS=""
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    ;;
+	IRIX-5.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    ;;
+	IRIX-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mabi=n32"
+		LDFLAGS="$LDFLAGS -mabi=n32"
+	    else
+		case $system in
+		    IRIX-6.3)
+			# Use to build 6.2 compatible binaries on 6.3.
+			CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS"
+			;;
+		    *)
+			CFLAGS="$CFLAGS -n32"
+			;;
+		esac
+		LDFLAGS="$LDFLAGS -n32"
+	    fi
+	    ;;
+	IRIX64-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+
+	    # Check to enable 64-bit flags for compiler/linker
+
+	    if test "$do64bit" = "yes" ; then
+	        if test "$GCC" = "yes" ; then
+	            { $as_echo "$as_me:$LINENO: WARNING: 64bit mode not supported by gcc" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported by gcc" >&2;}
+	        else
+	            do64bit_ok=yes
+	            SHLIB_LD="ld -64 -shared -rdata_shared"
+	            CFLAGS="$CFLAGS -64"
+	            LDFLAGS_ARCH="-64"
+	        fi
+	    fi
+	    ;;
+	Linux*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer"
+	    # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings
+	    # when you inline the string and math operations.  Turn this off to
+	    # get rid of the warnings.
+	    #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
+
+	    SHLIB_LD="${CC} -shared"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+
+	    # The combo of gcc + glibc has a bug related
+	    # to inlining of functions like strtod(). The
+	    # -fno-builtin flag should address this problem
+	    # but it does not work. The -fno-inline flag
+	    # is kind of overkill but it works.
+	    # Disable inlining only when one of the
+	    # files in compat/*.c is being linked in.
+	    if test x"${USE_COMPAT}" != x ; then
+	        CFLAGS="$CFLAGS -fno-inline"
+	    fi
+
+	    ;;
+	GNU*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    SHLIB_LD="${CC} -shared"
+	    DL_OBJS=""
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+	    ;;
+	Lynx*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    CFLAGS_OPTIMIZE=-02
+	    SHLIB_LD="${CC} -shared "
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-mshared -ldl"
+	    LD_FLAGS="-Wl,--export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    ;;
+	MP-RAS-02*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	MP-RAS-*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	NetBSD-*|FreeBSD-[1-2].*)
+	    # NetBSD/SPARC needs -fPIC, -fpic will not do.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    { $as_echo "$as_me:$LINENO: checking for ELF" >&5
+$as_echo_n "checking for ELF... " >&6; }
+if test "${tcl_cv_ld_elf+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+		cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#ifdef __ELF__
+	yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  tcl_cv_ld_elf=yes
+else
+  tcl_cv_ld_elf=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5
+$as_echo "$tcl_cv_ld_elf" >&6; }
+	    if test $tcl_cv_ld_elf = yes; then
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
+	    else
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+	    fi
+
+	    # Ancient FreeBSD doesn't handle version numbers with dots.
+
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	OpenBSD-*)
+	    # OpenBSD/SPARC[64] needs -fPIC, -fpic will not do.
+	    case `machine` in
+	    sparc|sparc64)
+		SHLIB_CFLAGS="-fPIC";;
+	    *)
+		SHLIB_CFLAGS="-fpic";;
+	    esac
+	    SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+	    { $as_echo "$as_me:$LINENO: checking for ELF" >&5
+$as_echo_n "checking for ELF... " >&6; }
+if test "${tcl_cv_ld_elf+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+		cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#ifdef __ELF__
+	yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+  tcl_cv_ld_elf=yes
+else
+  tcl_cv_ld_elf=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $tcl_cv_ld_elf" >&5
+$as_echo "$tcl_cv_ld_elf" >&6; }
+	    if test $tcl_cv_ld_elf = yes; then
+		LDFLAGS=-Wl,-export-dynamic
+	    else
+		LDFLAGS=""
+	    fi
+
+	    # OpenBSD doesn't do version numbers with dots.
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	FreeBSD-*)
+	    # FreeBSD 3.* and greater have ELF.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "${TCL_THREADS}" = "1" ; then
+		# The -pthread needs to go in the CFLAGS, not LIBS
+		LIBS=`echo $LIBS | sed s/-pthread//`
+		CFLAGS="$CFLAGS -pthread"
+	    	LDFLAGS="$LDFLAGS -pthread"
+	    fi
+	    case $system in
+	    FreeBSD-3.*)
+	    	# FreeBSD-3 doesn't handle version numbers with dots.
+	    	UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+	    	SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
+	    	TCL_LIB_VERSIONS_OK=nodots
+		;;
+	    esac
+	    ;;
+	Darwin-*)
+	    CFLAGS_OPTIMIZE="-Os"
+	    SHLIB_CFLAGS="-fno-common"
+	    if test $do64bit = yes; then
+	        do64bit_ok=yes
+	        CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+	    fi
+	    # TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS here:
+	    SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS_DEFAULT}'
+	    { $as_echo "$as_me:$LINENO: checking if ld accepts -single_module flag" >&5
+$as_echo_n "checking if ld accepts -single_module flag... " >&6; }
+if test "${tcl_cv_ld_single_module+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+	        hold_ldflags=$LDFLAGS
+	        LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
+	        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int i;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  tcl_cv_ld_single_module=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	tcl_cv_ld_single_module=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+	        LDFLAGS=$hold_ldflags
+fi
+{ $as_echo "$as_me:$LINENO: result: $tcl_cv_ld_single_module" >&5
+$as_echo "$tcl_cv_ld_single_module" >&6; }
+	    if test $tcl_cv_ld_single_module = yes; then
+	        SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
+	    fi
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".dylib"
+	    DL_OBJS="tclLoadDyld.o"
+	    DL_LIBS=""
+	    # Don't use -prebind when building for Mac OS X 10.4 or later only:
+	    test -z "${MACOSX_DEPLOYMENT_TARGET}" || \
+		test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print $2}'`" -lt 4 && \
+		LDFLAGS="$LDFLAGS -prebind"
+	    LDFLAGS="$LDFLAGS -headerpad_max_install_names"
+	    { $as_echo "$as_me:$LINENO: checking if ld accepts -search_paths_first flag" >&5
+$as_echo_n "checking if ld accepts -search_paths_first flag... " >&6; }
+if test "${tcl_cv_ld_search_paths_first+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+	        hold_ldflags=$LDFLAGS
+	        LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+	        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int i;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  tcl_cv_ld_search_paths_first=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	tcl_cv_ld_search_paths_first=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+	        LDFLAGS=$hold_ldflags
+fi
+{ $as_echo "$as_me:$LINENO: result: $tcl_cv_ld_search_paths_first" >&5
+$as_echo "$tcl_cv_ld_search_paths_first" >&6; }
+	    if test $tcl_cv_ld_search_paths_first = yes; then
+	        LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
+
+	    # TEA specific: for Tk extensions, remove -arch ppc64 from CFLAGS
+	    # for fat builds, as neither TkAqua nor TkX11 can be built for 64bit
+	    # at present (no 64bit GUI libraries).
+	    test $do64bit_ok = no && test -n "${TK_BIN_DIR}" && \
+	        CFLAGS="`echo "$CFLAGS" | sed -e 's/-arch ppc64/-arch ppc/g'`"
+	    ;;
+	NEXTSTEP-*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="cc -nostdlib -r"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadNext.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OS/390-*)
+	    CFLAGS_OPTIMIZE=""		# Optimizer is buggy
+
+cat >>confdefs.h <<\_ACEOF
+#define _OE_SOCKETS 1
+_ACEOF
+
+	    ;;
+	OSF1-1.0|OSF1-1.1|OSF1-1.2)
+	    # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1
+	    SHLIB_CFLAGS=""
+	    # Hack: make package name same as library name
+	    SHLIB_LD='ld -R -export :'
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadOSF.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-1.*)
+	    # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
+	    SHLIB_CFLAGS="-fPIC"
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD="ld -shared"
+	    else
+	        SHLIB_LD="ld -non_shared"
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-V*)
+	    # Digital OSF/1
+	    SHLIB_CFLAGS=""
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD='ld -shared -expect_unresolved "*"'
+	    else
+	        SHLIB_LD='ld -non_shared -expect_unresolved "*"'
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mieee"
+            else
+		CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"
+	    fi
+	    # see pthread_intro(3) for pthread support on osf1, k.furukawa
+	    if test "${TCL_THREADS}" = "1" ; then
+		CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
+		CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
+		LIBS=`echo $LIBS | sed s/-lpthreads//`
+		if test "$GCC" = "yes" ; then
+		    LIBS="$LIBS -lpthread -lmach -lexc"
+		else
+		    CFLAGS="$CFLAGS -pthread"
+		    LDFLAGS="$LDFLAGS -pthread"
+		fi
+	    fi
+
+	    ;;
+	QNX-6*)
+	    # QNX RTP
+	    # This may work for all QNX, but it was only reported for v6.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    # dlopen is in -lc on QNX
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SCO_SV-3.2*)
+	    # Note, dlopen is available only on SCO 3.2.5 and greater. However,
+	    # this test works, since "uname -s" was non-standard in 3.2.4 and
+	    # below.
+	    if test "$GCC" = "yes" ; then
+	    	SHLIB_CFLAGS="-fPIC -melf"
+	    	LDFLAGS="$LDFLAGS -melf -Wl,-Bexport"
+	    else
+	    	SHLIB_CFLAGS="-Kpic -belf"
+	    	LDFLAGS="$LDFLAGS -belf -Wl,-Bexport"
+	    fi
+	    SHLIB_LD="ld -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SINIX*5.4*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SunOS-4*)
+	    SHLIB_CFLAGS="-PIC"
+	    SHLIB_LD="ld"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+
+	    # SunOS can't handle version numbers with dots in them in library
+	    # specs, like -ltcl7.5, so use -ltcl75 instead.  Also, it
+	    # requires an extra version number at the end of .so file names.
+	    # So, the library has to have a name like libtcl75.so.1.0
+
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	SunOS-5.[0-6])
+	    # Careful to not let 5.10+ fall into this case
+
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _REENTRANT 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_PTHREAD_SEMANTICS 1
+_ACEOF
+
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    else
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+	    ;;
+	SunOS-5*)
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _REENTRANT 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_PTHREAD_SEMANTICS 1
+_ACEOF
+
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		arch=`isainfo`
+		if test "$arch" = "sparcv9 sparc" ; then
+			if test "$GCC" = "yes" ; then
+			    if test "`gcc -dumpversion | awk -F. '{print $1}'`" -lt "3" ; then
+				{ $as_echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported with GCC < 3.2 on $system" >&2;}
+			    else
+				do64bit_ok=yes
+				CFLAGS="$CFLAGS -m64 -mcpu=v9"
+				LDFLAGS="$LDFLAGS -m64 -mcpu=v9"
+				SHLIB_CFLAGS="-fPIC"
+			    fi
+			else
+			    do64bit_ok=yes
+			    if test "$do64bitVIS" = "yes" ; then
+				CFLAGS="$CFLAGS -xarch=v9a"
+			    	LDFLAGS_ARCH="-xarch=v9a"
+			    else
+				CFLAGS="$CFLAGS -xarch=v9"
+			    	LDFLAGS_ARCH="-xarch=v9"
+			    fi
+			    # Solaris 64 uses this as well
+			    #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64"
+			fi
+		elif test "$arch" = "amd64 i386" ; then
+		    if test "$GCC" = "yes" ; then
+			{ $as_echo "$as_me:$LINENO: WARNING: 64bit mode not supported with GCC on $system" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported with GCC on $system" >&2;}
+		    else
+			do64bit_ok=yes
+			CFLAGS="$CFLAGS -xarch=amd64"
+			LDFLAGS="$LDFLAGS -xarch=amd64"
+		    fi
+		else
+		    { $as_echo "$as_me:$LINENO: WARNING: 64bit mode not supported for $arch" >&5
+$as_echo "$as_me: WARNING: 64bit mode not supported for $arch" >&2;}
+		fi
+	    fi
+
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		if test "$do64bit_ok" = "yes" ; then
+		    # We need to specify -static-libgcc or we need to
+		    # add the path to the sparv9 libgcc.
+		    # JH: static-libgcc is necessary for core Tcl, but may
+		    # not be necessary for extensions.
+		    SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc"
+		    # for finding sparcv9 libgcc, get the regular libgcc
+		    # path, remove so name and append 'sparcv9'
+		    #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..."
+		    #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir"
+		fi
+	    else
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    fi
+	    ;;
+	UNIX_SV* | UnixWare-5*)
+	    SHLIB_CFLAGS="-KPIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
+	    # that don't grok the -Bexport option.  Test that it does.
+	    { $as_echo "$as_me:$LINENO: checking for ld accepts -Bexport flag" >&5
+$as_echo_n "checking for ld accepts -Bexport flag... " >&6; }
+if test "${tcl_cv_ld_Bexport+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+		cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int i;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  tcl_cv_ld_Bexport=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	tcl_cv_ld_Bexport=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+	        LDFLAGS=$hold_ldflags
+fi
+{ $as_echo "$as_me:$LINENO: result: $tcl_cv_ld_Bexport" >&5
+$as_echo "$tcl_cv_ld_Bexport" >&6; }
+	    if test $tcl_cv_ld_Bexport = yes; then
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+    esac
+
+    if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then
+	{ $as_echo "$as_me:$LINENO: WARNING: 64bit support being disabled -- don't know magic for this platform" >&5
+$as_echo "$as_me: WARNING: 64bit support being disabled -- don't know magic for this platform" >&2;}
+    fi
+
+    # Step 4: disable dynamic loading if requested via a command-line switch.
+
+    # Check whether --enable-load was given.
+if test "${enable_load+set}" = set; then
+  enableval=$enable_load; tcl_ok=$enableval
+else
+  tcl_ok=yes
+fi
+
+    if test "$tcl_ok" = "no"; then
+	DL_OBJS=""
+    fi
+
+    if test "x$DL_OBJS" != "x" ; then
+	BUILD_DLTEST="\$(DLTEST_TARGETS)"
+    else
+	echo "Can't figure out how to do dynamic loading or shared libraries"
+	echo "on this system."
+	SHLIB_CFLAGS=""
+	SHLIB_LD=""
+	SHLIB_SUFFIX=""
+	DL_OBJS="tclLoadNone.o"
+	DL_LIBS=""
+	LDFLAGS="$LDFLAGS_ORIG"
+	CC_SEARCH_FLAGS=""
+	LD_SEARCH_FLAGS=""
+	BUILD_DLTEST=""
+    fi
+    LDFLAGS="$LDFLAGS $LDFLAGS_ARCH"
+
+    # If we're running gcc, then change the C flags for compiling shared
+    # libraries to the right flags for gcc, instead of those for the
+    # standard manufacturer compiler.
+
+    if test "$DL_OBJS" != "tclLoadNone.o" ; then
+	if test "$GCC" = "yes" ; then
+	    case $system in
+		AIX-*)
+		    ;;
+		BSD/OS*)
+		    ;;
+		IRIX*)
+		    ;;
+		NetBSD-*|FreeBSD-*)
+		    ;;
+		Darwin-*)
+		    ;;
+		SCO_SV-3.2*)
+		    ;;
+		windows)
+		    ;;
+		*)
+		    SHLIB_CFLAGS="-fPIC"
+		    ;;
+	    esac
+	fi
+    fi
+
+    if test "$SHARED_LIB_SUFFIX" = "" ; then
+	SHARED_LIB_SUFFIX='${PACKAGE_VERSION}${SHLIB_SUFFIX}'
+    fi
+    if test "$UNSHARED_LIB_SUFFIX" = "" ; then
+	UNSHARED_LIB_SUFFIX='${PACKAGE_VERSION}.a'
+    fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    # These must be called after we do the basic CFLAGS checks and
+    # verify any possible 64-bit or similar switches are necessary
+
+    { $as_echo "$as_me:$LINENO: checking for required early compiler flags" >&5
+$as_echo_n "checking for required early compiler flags... " >&6; }
+    tcl_flags=""
+
+    if test "${tcl_cv_flag__isoc99_source+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+char *p = (char *)strtoll; char *q = (char *)strtoull;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  tcl_cv_flag__isoc99_source=no
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _ISOC99_SOURCE 1
+#include <stdlib.h>
+int
+main ()
+{
+char *p = (char *)strtoll; char *q = (char *)strtoull;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  tcl_cv_flag__isoc99_source=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	tcl_cv_flag__isoc99_source=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+    if test "x${tcl_cv_flag__isoc99_source}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _ISOC99_SOURCE 1
+_ACEOF
+
+	tcl_flags="$tcl_flags _ISOC99_SOURCE"
+    fi
+
+
+    if test "${tcl_cv_flag__largefile64_source+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/stat.h>
+int
+main ()
+{
+struct stat64 buf; int i = stat64("/", &buf);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  tcl_cv_flag__largefile64_source=no
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGEFILE64_SOURCE 1
+#include <sys/stat.h>
+int
+main ()
+{
+struct stat64 buf; int i = stat64("/", &buf);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  tcl_cv_flag__largefile64_source=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	tcl_cv_flag__largefile64_source=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+    if test "x${tcl_cv_flag__largefile64_source}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _LARGEFILE64_SOURCE 1
+_ACEOF
+
+	tcl_flags="$tcl_flags _LARGEFILE64_SOURCE"
+    fi
+
+
+    if test "${tcl_cv_flag__largefile_source64+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/stat.h>
+int
+main ()
+{
+char *p = (char *)open64;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  tcl_cv_flag__largefile_source64=no
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGEFILE_SOURCE64 1
+#include <sys/stat.h>
+int
+main ()
+{
+char *p = (char *)open64;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  tcl_cv_flag__largefile_source64=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	tcl_cv_flag__largefile_source64=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+    if test "x${tcl_cv_flag__largefile_source64}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _LARGEFILE_SOURCE64 1
+_ACEOF
+
+	tcl_flags="$tcl_flags _LARGEFILE_SOURCE64"
+    fi
+
+    if test "x${tcl_flags}" = "x" ; then
+	{ $as_echo "$as_me:$LINENO: result: none" >&5
+$as_echo "none" >&6; }
+    else
+	{ $as_echo "$as_me:$LINENO: result: ${tcl_flags}" >&5
+$as_echo "${tcl_flags}" >&6; }
+    fi
+
+
+    { $as_echo "$as_me:$LINENO: checking for 64-bit integer type" >&5
+$as_echo_n "checking for 64-bit integer type... " >&6; }
+    if test "${tcl_cv_type_64bit+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+	tcl_cv_type_64bit=none
+	# See if the compiler knows natively about __int64
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+__int64 value = (__int64) 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  tcl_type_64bit=__int64
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	tcl_type_64bit="long long"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+	# See if we should use long anyway  Note that we substitute in the
+	# type that is our current guess for a 64-bit type inside this check
+	# program, so it should be modified only carefully...
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+switch (0) {
+            case 1: case (sizeof(${tcl_type_64bit})==sizeof(long)): ;
+        }
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  tcl_cv_type_64bit=${tcl_type_64bit}
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+    if test "${tcl_cv_type_64bit}" = none ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TCL_WIDE_INT_IS_LONG 1
+_ACEOF
+
+	{ $as_echo "$as_me:$LINENO: result: using long" >&5
+$as_echo "using long" >&6; }
+    elif test "${tcl_cv_type_64bit}" = "__int64" \
+		-a "${TEA_PLATFORM}" = "windows" ; then
+	# We actually want to use the default tcl.h checks in this
+	# case to handle both TCL_WIDE_INT_TYPE and TCL_LL_MODIFIER*
+	{ $as_echo "$as_me:$LINENO: result: using Tcl header defaults" >&5
+$as_echo "using Tcl header defaults" >&6; }
+    else
+
+cat >>confdefs.h <<_ACEOF
+#define TCL_WIDE_INT_TYPE ${tcl_cv_type_64bit}
+_ACEOF
+
+	{ $as_echo "$as_me:$LINENO: result: ${tcl_cv_type_64bit}" >&5
+$as_echo "${tcl_cv_type_64bit}" >&6; }
+
+	# Now check for auxiliary declarations
+	{ $as_echo "$as_me:$LINENO: checking for struct dirent64" >&5
+$as_echo_n "checking for struct dirent64... " >&6; }
+if test "${tcl_cv_struct_dirent64+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+	    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/dirent.h>
+int
+main ()
+{
+struct dirent64 p;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  tcl_cv_struct_dirent64=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	tcl_cv_struct_dirent64=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $tcl_cv_struct_dirent64" >&5
+$as_echo "$tcl_cv_struct_dirent64" >&6; }
+	if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRUCT_DIRENT64 1
+_ACEOF
+
+	fi
+
+	{ $as_echo "$as_me:$LINENO: checking for struct stat64" >&5
+$as_echo_n "checking for struct stat64... " >&6; }
+if test "${tcl_cv_struct_stat64+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+	    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/stat.h>
+int
+main ()
+{
+struct stat64 p;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  tcl_cv_struct_stat64=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	tcl_cv_struct_stat64=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $tcl_cv_struct_stat64" >&5
+$as_echo "$tcl_cv_struct_stat64" >&6; }
+	if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRUCT_STAT64 1
+_ACEOF
+
+	fi
+
+
+
+for ac_func in open64 lseek64
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  eval "$as_ac_var=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+		 $as_echo "$as_val"'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+	{ $as_echo "$as_me:$LINENO: checking for off64_t" >&5
+$as_echo_n "checking for off64_t... " >&6; }
+	if test "${tcl_cv_type_off64_t+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+	    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+int
+main ()
+{
+off64_t offset;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  tcl_cv_type_off64_t=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	tcl_cv_type_off64_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+			if test "x${tcl_cv_type_off64_t}" = "xyes" && \
+	        test "x${ac_cv_func_lseek64}" = "xyes" && \
+	        test "x${ac_cv_func_open64}" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_TYPE_OFF64_T 1
+_ACEOF
+
+	    { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+	    { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+	fi
+    fi
+
+
+
+#--------------------------------------------------------------------
+# Set the default compiler switches based on the --enable-symbols option.
+#--------------------------------------------------------------------
+
+
+
+    { $as_echo "$as_me:$LINENO: checking for build with symbols" >&5
+$as_echo_n "checking for build with symbols... " >&6; }
+    # Check whether --enable-symbols was given.
+if test "${enable_symbols+set}" = set; then
+  enableval=$enable_symbols; tcl_ok=$enableval
+else
+  tcl_ok=no
+fi
+
+    DBGX=""
+    if test "$tcl_ok" = "no"; then
+	CFLAGS_DEFAULT="${CFLAGS_OPTIMIZE}"
+	LDFLAGS_DEFAULT="${LDFLAGS_OPTIMIZE}"
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+    else
+	CFLAGS_DEFAULT="${CFLAGS_DEBUG}"
+	LDFLAGS_DEFAULT="${LDFLAGS_DEBUG}"
+	if test "$tcl_ok" = "yes"; then
+	    { $as_echo "$as_me:$LINENO: result: yes (standard debugging)" >&5
+$as_echo "yes (standard debugging)" >&6; }
+	fi
+    fi
+    if test "${TEA_PLATFORM}" != "windows" ; then
+	LDFLAGS_DEFAULT="${LDFLAGS}"
+    fi
+
+
+
+
+
+    if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TCL_MEM_DEBUG 1
+_ACEOF
+
+    fi
+
+    if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
+	if test "$tcl_ok" = "all"; then
+	    { $as_echo "$as_me:$LINENO: result: enabled symbols mem debugging" >&5
+$as_echo "enabled symbols mem debugging" >&6; }
+	else
+	    { $as_echo "$as_me:$LINENO: result: enabled $tcl_ok debugging" >&5
+$as_echo "enabled $tcl_ok debugging" >&6; }
+	fi
+    fi
+
+
+#--------------------------------------------------------------------
+# Everyone should be linking against the Tcl stub library.  If you
+# can't for some reason, remove this definition.  If you aren't using
+# stubs, you also need to modify the SHLIB_LD_LIBS setting below to
+# link against the non-stubbed Tcl library.  Add Tk too if necessary.
+#--------------------------------------------------------------------
+
+
+cat >>confdefs.h <<\_ACEOF
+#define USE_TCL_STUBS 1
+_ACEOF
+
+#AC_DEFINE(USE_TK_STUBS, 1, [Use Tk stubs])
+
+#--------------------------------------------------------------------
+# This macro generates a line to use when building a library.  It
+# depends on values set by the TEA_ENABLE_SHARED, TEA_ENABLE_SYMBOLS,
+# and TEA_LOAD_TCLCONFIG macros above.
+#--------------------------------------------------------------------
+
+
+    if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes"; then
+	MAKE_STATIC_LIB="\${STLIB_LD} -out:\$@ \$(PKG_OBJECTS)"
+	MAKE_SHARED_LIB="\${SHLIB_LD} \${SHLIB_LD_LIBS} \${LDFLAGS_DEFAULT} -out:\$@ \$(PKG_OBJECTS)"
+	MAKE_STUB_LIB="\${STLIB_LD} -out:\$@ \$(PKG_STUB_OBJECTS)"
+    else
+	MAKE_STATIC_LIB="\${STLIB_LD} \$@ \$(PKG_OBJECTS)"
+	MAKE_SHARED_LIB="\${SHLIB_LD} -o \$@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}"
+	MAKE_STUB_LIB="\${STLIB_LD} \$@ \$(PKG_STUB_OBJECTS)"
+    fi
+
+    if test "${SHARED_BUILD}" = "1" ; then
+	MAKE_LIB="${MAKE_SHARED_LIB} "
+    else
+	MAKE_LIB="${MAKE_STATIC_LIB} "
+    fi
+
+    #--------------------------------------------------------------------
+    # Shared libraries and static libraries have different names.
+    # Use the double eval to make sure any variables in the suffix is
+    # substituted. (@@@ Might not be necessary anymore)
+    #--------------------------------------------------------------------
+
+    if test "${TEA_PLATFORM}" = "windows" ; then
+	if test "${SHARED_BUILD}" = "1" ; then
+	    # We force the unresolved linking of symbols that are really in
+	    # the private libraries of Tcl and Tk.
+	    SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}`\""
+	    if test x"${TK_BIN_DIR}" != x ; then
+		SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}`\""
+	    fi
+	    eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
+	else
+	    eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
+	fi
+	# Some packages build their own stubs libraries
+	eval eval "PKG_STUB_LIB_FILE=${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+	if test "$GCC" = "yes"; then
+	    PKG_STUB_LIB_FILE=lib${PKG_STUB_LIB_FILE}
+	fi
+	# These aren't needed on Windows (either MSVC or gcc)
+	RANLIB="mt -manifest ${PKG_LIB_FILE}.manifest -outputresource:${PKG_LIB_FILE}\;2 ; test -f"
+	RANLIB_STUB=:
+    else
+	RANLIB_STUB="${RANLIB}"
+	if test "${SHARED_BUILD}" = "1" ; then
+	    SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TCL_STUB_LIB_SPEC}"
+	    if test x"${TK_BIN_DIR}" != x ; then
+		SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TK_STUB_LIB_SPEC}"
+	    fi
+	    eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
+	    RANLIB=:
+	else
+	    eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
+	fi
+	# Some packages build their own stubs libraries
+	eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+    fi
+
+    # These are escaped so that only CFLAGS is picked up at configure time.
+    # The other values will be substituted at make time.
+    CFLAGS="${CFLAGS} \${CFLAGS_DEFAULT} \${CFLAGS_WARNING}"
+    if test "${SHARED_BUILD}" = "1" ; then
+	CFLAGS="${CFLAGS} \${SHLIB_CFLAGS}"
+    fi
+
+
+
+
+
+
+
+
+
+#--------------------------------------------------------------------
+# Determine the name of the tclsh and/or wish executables in the
+# Tcl and Tk build directories or the location they were installed
+# into. These paths are used to support running test cases only,
+# the Makefile should not be making use of these paths to generate
+# a pkgIndex.tcl file or anything else at extension build time.
+#--------------------------------------------------------------------
+
+
+    { $as_echo "$as_me:$LINENO: checking for tclsh" >&5
+$as_echo_n "checking for tclsh... " >&6; }
+    if test -f "${TCL_BIN_DIR}/Makefile" ; then
+        # tclConfig.sh is in Tcl build directory
+        if test "${TEA_PLATFORM}" = "windows"; then
+            TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
+        else
+            TCLSH_PROG="${TCL_BIN_DIR}/tclsh"
+        fi
+    else
+        # tclConfig.sh is in install location
+        if test "${TEA_PLATFORM}" = "windows"; then
+            TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
+        else
+            TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}${TCL_DBGX}"
+        fi
+        list="`ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null` \
+              `ls -d ${TCL_BIN_DIR}/..     2>/dev/null` \
+              `ls -d ${TCL_PREFIX}/bin     2>/dev/null`"
+        for i in $list ; do
+            if test -f "$i/${TCLSH_PROG}" ; then
+                REAL_TCL_BIN_DIR="`cd "$i"; pwd`"
+                break
+            fi
+        done
+        TCLSH_PROG="${REAL_TCL_BIN_DIR}/${TCLSH_PROG}"
+    fi
+    { $as_echo "$as_me:$LINENO: result: ${TCLSH_PROG}" >&5
+$as_echo "${TCLSH_PROG}" >&6; }
+
+
+#TEA_PROG_WISH
+
+PATCHLEVEL=`${TCLSH_PROG} $srcdir/tclconfig/patchlevel.tcl`
+EXACT_VERSION=${MAJOR_VERSION}.${MINOR_VERSION}-${PATCHLEVEL}
+NODOT_VERSION=${MAJOR_VERSION}${MINOR_VERSION}
+
+
+
+
+
+
+
+subdirs="$subdirs pgapack"
+
+
+#--------------------------------------------------------------------
+# Finally, substitute all of the various values into the Makefile.
+# You may alternatively have a special pkgIndex.tcl.in or other files
+# which require substituting th AC variables in.  Include these here.
+#--------------------------------------------------------------------
+
+ac_config_files="$ac_config_files Makefile pkgIndex.tcl"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+	g
+	s/^\n//
+	s/\n/ /g
+	p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.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_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # 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 after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, 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
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (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 sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by RapptureOptimizer $as_me 1.0, which was
+generated by GNU Autoconf 2.62.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+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 and configuration settings, 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
+
+Configuration files:
+$config_files
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+RapptureOptimizer config.status 1.0
+configured by $0, generated by GNU Autoconf 2.62,
+  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { $as_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"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "pkgIndex.tcl") CONFIG_FILES="$CONFIG_FILES pkgIndex.tcl" ;;
+
+  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+$as_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
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$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 "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} ||
+{
+   $as_echo "$as_me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr='
+'
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
+$as_echo "$as_me: error: could not setup config files machinery" >&2;}
+   { (exit 1); exit 1; }; }
+_ACEOF
+
+# 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
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES      "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+$as_echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+   { (exit 1); exit 1; }; };;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+   { (exit 1); exit 1; }; };;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      ac_file_inputs="$ac_file_inputs '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; } ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  { as_dir="$ac_dir"
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+    s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+ ;;
+
+
+
+  esac
+
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+
+# 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
+
+#
+# CONFIG_SUBDIRS section.
+#
+if test "$no_recursion" != yes; then
+
+  # Remove --cache-file, --srcdir, and --disable-option-checking arguments
+  # so they do not pile up.
+  ac_sub_configure_args=
+  ac_prev=
+  eval "set x $ac_configure_args"
+  shift
+  for ac_arg
+  do
+    if test -n "$ac_prev"; then
+      ac_prev=
+      continue
+    fi
+    case $ac_arg in
+    -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=*)
+      ;;
+    --config-cache | -C)
+      ;;
+    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+      ac_prev=srcdir ;;
+    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+      ;;
+    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+      ac_prev=prefix ;;
+    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+      ;;
+    --disable-option-checking)
+      ;;
+    *)
+      case $ac_arg in
+      *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+      esac
+      ac_sub_configure_args="$ac_sub_configure_args '$ac_arg'" ;;
+    esac
+  done
+
+  # Always prepend --prefix to ensure using the same prefix
+  # in subdir configurations.
+  ac_arg="--prefix=$prefix"
+  case $ac_arg in
+  *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+  esac
+  ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
+
+  # Pass --silent
+  if test "$silent" = yes; then
+    ac_sub_configure_args="--silent $ac_sub_configure_args"
+  fi
+
+  # Always prepend --disable-option-checking to silence warnings, since
+  # different subdirs can have different --enable and --with options.
+  ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
+
+  ac_popdir=`pwd`
+  for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
+
+    # Do not complain, so a configure script can configure whichever
+    # parts of a large source tree are present.
+    test -d "$srcdir/$ac_dir" || continue
+
+    ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
+    $as_echo "$as_me:$LINENO: $ac_msg" >&5
+    $as_echo "$ac_msg" >&6
+    { as_dir="$ac_dir"
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+    cd "$ac_dir"
+
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      ac_sub_configure=$ac_srcdir/configure.gnu
+    elif test -f "$ac_srcdir/configure"; then
+      ac_sub_configure=$ac_srcdir/configure
+    elif test -f "$ac_srcdir/configure.in"; then
+      # This should be Cygnus configure.
+      ac_sub_configure=$ac_aux_dir/configure
+    else
+      { $as_echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5
+$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
+      ac_sub_configure=
+    fi
+
+    # The recursion is here.
+    if test -n "$ac_sub_configure"; then
+      # Make the cache file name correct relative to the subdirectory.
+      case $cache_file in
+      [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
+      *) # Relative name.
+	ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
+      esac
+
+      { $as_echo "$as_me:$LINENO: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
+$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
+      # The eval makes quoting arguments work.
+      eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
+	   --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
+	{ { $as_echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5
+$as_echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    cd "$ac_popdir"
+  done
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:$LINENO: WARNING: Unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
Index: /tags/1.6.0/packages/optimizer/src/configure.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/configure.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/configure.in	(revision 6168)
@@ -0,0 +1,207 @@
+#!/bin/bash -norc
+dnl	This file is an input file used by the GNU "autoconf" program to
+dnl	generate the file "configure", which is run during Tcl installation
+dnl	to configure the system for the local environment.
+#
+# RCS: @(#) $Id: configure.in,v 1.46 2006/01/23 19:18:55 hobbs Exp $
+
+#-----------------------------------------------------------------------
+# Sample configure.in for Tcl Extensions.  The only places you should
+# need to modify this file are marked by the string __CHANGE__
+#-----------------------------------------------------------------------
+
+#-----------------------------------------------------------------------
+# __CHANGE__
+# Set your package name and version numbers here.
+#
+# This initializes the environment with PACKAGE_NAME and PACKAGE_VERSION
+# set as provided.  These will also be added as -D defs in your Makefile
+# so you can encode the package version directly into the source files.
+#-----------------------------------------------------------------------
+
+AC_INIT([RapptureOptimizer], [1.0])
+
+#--------------------------------------------------------------------
+# Call TEA_INIT as the first TEA_ macro to set up initial vars.
+# This will define a ${TEA_PLATFORM} variable == "unix" or "windows"
+# as well as PKG_LIB_FILE and PKG_STUB_LIB_FILE.
+#--------------------------------------------------------------------
+
+TEA_INIT([3.5])
+
+AC_CONFIG_AUX_DIR(tclconfig)
+
+#--------------------------------------------------------------------
+# Load the tclConfig.sh file
+#--------------------------------------------------------------------
+
+TEA_PATH_TCLCONFIG
+TEA_LOAD_TCLCONFIG
+
+#--------------------------------------------------------------------
+# Load the tkConfig.sh file if necessary (Tk extension)
+#--------------------------------------------------------------------
+
+#TEA_PATH_TKCONFIG
+#TEA_LOAD_TKCONFIG
+
+#-----------------------------------------------------------------------
+# Handle the --prefix=... option by defaulting to what Tcl gave.
+# Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER.
+#-----------------------------------------------------------------------
+
+TEA_PREFIX
+
+#-----------------------------------------------------------------------
+# Standard compiler checks.
+# This sets up CC by using the CC env var, or looks for gcc otherwise.
+# This also calls AC_PROG_CC, AC_PROG_INSTALL and a few others to create
+# the basic setup necessary to compile executables.
+#-----------------------------------------------------------------------
+
+TEA_SETUP_COMPILER
+AC_PROG_F77
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_CXX
+#-----------------------------------------------------------------------
+# __CHANGE__
+# Specify the C source files to compile in TEA_ADD_SOURCES,
+# public headers that need to be installed in TEA_ADD_HEADERS,
+# stub library C source files to compile in TEA_ADD_STUB_SOURCES,
+# and runtime Tcl library files in TEA_ADD_TCL_SOURCES.
+# This defines PKG(_STUB)_SOURCES, PKG(_STUB)_OBJECTS, PKG_HEADERS
+# and PKG_TCL_SOURCES.
+#-----------------------------------------------------------------------
+
+TEA_ADD_SOURCES([rp_optimizer.c rp_tcloptions.c rp_optimizer_tcl.c plugin_pgapack.c])
+TEA_ADD_HEADERS([])
+TEA_ADD_INCLUDES([-I\$(srcdir)/pgapack/pgapack/include])
+TEA_ADD_CFLAGS([-DWL=32])
+TEA_ADD_STUB_SOURCES([])
+# uncomment this and mkindex.tcl line in makefile when you are ready to
+# install tcl rappture library bindings
+#TEA_ADD_TCL_SOURCES([scripts/exec.tcl scripts/value.tcl init.tcl ../../tcl/scripts/library.tcl ../../tcl/scripts/result.tcl])
+TEA_ADD_TCL_SOURCES([])
+TEA_ADD_LIBS([-Lpgapack/pgapack/lib/linux -lpgaO])
+
+#--------------------------------------------------------------------
+# __CHANGE__
+# A few miscellaneous platform-specific items:
+#
+# Define a special symbol for Windows (BUILD_sample in this case) so
+# that we create the export library with the dll.
+#
+# Windows creates a few extra files that need to be cleaned up.
+# You can add more files to clean if your extension creates any extra
+# files.
+#
+# TEA_ADD_* any platform specific compiler/build info here.
+#--------------------------------------------------------------------
+
+if test "${TEA_PLATFORM}" = "windows" ; then
+    AC_DEFINE(BUILD_rappture, 1, [Build windows export dll])
+    CLEANFILES="*.lib *.dll *.exp *.ilk *.pdb vc*.pch"
+    TEA_ADD_LIBS(/LIBPATH:C:/Tcl/lib)
+    #TEA_ADD_SOURCES([win/winFile.c])
+    #TEA_ADD_INCLUDES([-I\"$(${CYGPATH} ${srcdir}/win)\"])
+else
+    CLEANFILES="*core *.o *.so *.a"
+    #TEA_ADD_SOURCES([unix/unixFile.c])
+    TEA_ADD_LIBS([-L${prefix}/lib])
+    if test "${libdir}" != "${prefix}/lib" ; then
+        TEA_ADD_LIBS([-L${libdir}])
+    fi
+fi
+AC_SUBST(CLEANFILES)
+
+#--------------------------------------------------------------------
+# __CHANGE__
+# Choose which headers you need.  Extension authors should try very
+# hard to only rely on the Tcl public header files.  Internal headers
+# contain private data structures and are subject to change without
+# notice.
+# This MUST be called after TEA_LOAD_TCLCONFIG / TEA_LOAD_TKCONFIG
+#--------------------------------------------------------------------
+
+TEA_PUBLIC_TCL_HEADERS
+#TEA_PRIVATE_TCL_HEADERS
+
+#TEA_PUBLIC_TK_HEADERS
+#TEA_PRIVATE_TK_HEADERS
+#TEA_PATH_X
+
+#--------------------------------------------------------------------
+# Check whether --enable-threads or --disable-threads was given.
+# This auto-enables if Tcl was compiled threaded.
+#--------------------------------------------------------------------
+
+TEA_ENABLE_THREADS
+
+#--------------------------------------------------------------------
+# The statement below defines a collection of symbols related to
+# building as a shared library instead of a static library.
+#--------------------------------------------------------------------
+
+TEA_ENABLE_SHARED
+
+#--------------------------------------------------------------------
+# This macro figures out what flags to use with the compiler/linker
+# when building shared/static debug/optimized objects.  This information
+# can be taken from the tclConfig.sh file, but this figures it all out.
+#--------------------------------------------------------------------
+
+TEA_CONFIG_CFLAGS
+
+#--------------------------------------------------------------------
+# Set the default compiler switches based on the --enable-symbols option.
+#--------------------------------------------------------------------
+
+TEA_ENABLE_SYMBOLS
+
+#--------------------------------------------------------------------
+# Everyone should be linking against the Tcl stub library.  If you
+# can't for some reason, remove this definition.  If you aren't using
+# stubs, you also need to modify the SHLIB_LD_LIBS setting below to
+# link against the non-stubbed Tcl library.  Add Tk too if necessary.
+#--------------------------------------------------------------------
+
+AC_DEFINE(USE_TCL_STUBS, 1, [Use Tcl stubs])
+#AC_DEFINE(USE_TK_STUBS, 1, [Use Tk stubs])
+
+#--------------------------------------------------------------------
+# This macro generates a line to use when building a library.  It
+# depends on values set by the TEA_ENABLE_SHARED, TEA_ENABLE_SYMBOLS,
+# and TEA_LOAD_TCLCONFIG macros above.
+#--------------------------------------------------------------------
+
+TEA_MAKE_LIB
+
+#--------------------------------------------------------------------
+# Determine the name of the tclsh and/or wish executables in the
+# Tcl and Tk build directories or the location they were installed
+# into. These paths are used to support running test cases only,
+# the Makefile should not be making use of these paths to generate
+# a pkgIndex.tcl file or anything else at extension build time.
+#--------------------------------------------------------------------
+
+TEA_PROG_TCLSH
+#TEA_PROG_WISH
+
+PATCHLEVEL=`${TCLSH_PROG} $srcdir/tclconfig/patchlevel.tcl`
+EXACT_VERSION=${MAJOR_VERSION}.${MINOR_VERSION}-${PATCHLEVEL}
+NODOT_VERSION=${MAJOR_VERSION}${MINOR_VERSION}
+
+AC_SUBST(PATCHLEVEL)
+AC_SUBST(EXACT_VERSION)
+AC_SUBST(NODOT_VERSION)
+
+AC_CONFIG_SUBDIRS( [pgapack] )
+
+#--------------------------------------------------------------------
+# Finally, substitute all of the various values into the Makefile.
+# You may alternatively have a special pkgIndex.tcl.in or other files
+# which require substituting th AC variables in.  Include these here.
+#--------------------------------------------------------------------
+
+AC_OUTPUT([Makefile pkgIndex.tcl])
Index: /tags/1.6.0/packages/optimizer/src/fitfunc/ff_helper_modules_for_curves.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/fitfunc/ff_helper_modules_for_curves.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/fitfunc/ff_helper_modules_for_curves.c	(revision 6168)
@@ -0,0 +1,649 @@
+/**********fitnessfunctions.c************************************************************************************
+fitfunc.c is a program that contains modules for enabling the user to write his own fitness functions
+//TODO: Unresolved Issues so far:
+//1)Inclusion of extreme points on the curve
+//2)Inclusion of consecutive zero-gradient points in the list of maximas minimas
+//3)Regarding mathematically non differentiable functions, like triangular functions, etc.
+********************************************************************************************************/
+
+#include<stdio.h>
+#include<math.h>
+#include<stdlib.h>
+#include<time.h>
+//#include <tcl.h>
+
+#define EPSILON 0.005
+#define TRUE 1
+#define FALSE 0
+#define INCREMENT 0.01
+#define PI 3.14
+#define NO_OF_POINTS 1500
+#define INVALID_SLOPE 99999.9999
+#define TOLERANCE 1e-5
+#define BLOCK_SIZE 160
+
+typedef struct Curve{
+	int curveID;
+	double *xvals;
+	double *yvals;
+	int number_of_points;
+}Curve;
+
+/*
+ * Creating a struct for Maxima and Minima Lists
+ * Can be used as an argument for functions that give both local and global max/min
+ * The responsibility for initially allocating and finally freeing memory to *xval and *yval arrays
+ * lies with the calling function. Reallocation of memory for these arrays and updating size_of_list
+ * will happen inside called functions.
+ */
+ 
+typedef struct MaxOrMinList{
+	double *yvals;
+	double *xvals;
+	int no_of_actual_max_or_mins;
+	int size_allotted;	//While using the structure, be sure you initialize this to the amount of memory malloc'ed, else there is no way to keep track of memory allocated dynamically
+}MaxOrMinList;
+
+
+double X_Axis_Values[NO_OF_POINTS], Y_Axis_Values[NO_OF_POINTS];
+double slope_calc(int index);
+void initdisplay();
+ 
+void InitializeCurves(int ID){
+	int index;
+//	double init;
+	switch(ID){
+		case 1:// Y = SIN(X);
+			for(index=0;index<NO_OF_POINTS;index++){
+				X_Axis_Values[index] =(double)(index*INCREMENT);
+				Y_Axis_Values[index] = sin(X_Axis_Values[index]);
+			}
+			break;
+		case 2://Y = EXP(-X);
+			for(index=0;index<NO_OF_POINTS;index++){
+				X_Axis_Values[index] =(double)(index*INCREMENT);
+				Y_Axis_Values[index] = exp(-X_Axis_Values[index]);
+			}
+			break;
+		case 3://Y = EXP(-x)*SIN(10X);
+//			init = -5;
+			for(index=0;index<NO_OF_POINTS;index++){
+//				init+=INCREMENT;
+//				X_Axis_Values[index] = init;
+				X_Axis_Values[index] =(double)(index*INCREMENT);
+				Y_Axis_Values[index] = exp(-X_Axis_Values[index])*sin(10*X_Axis_Values[index]); 		
+			}
+			break;
+		default:
+		printf("\nError: Invalid Value Entered\n");
+		exit(0);
+	}
+}
+
+
+double y_at_x(int curveID, float xval){
+	return 0;
+}
+
+double y_at_x_temp(double xval){
+	int i;
+	for(i=0;i<NO_OF_POINTS;i++){
+		if(fabs(xval-X_Axis_Values[i]<=EPSILON)){
+			return Y_Axis_Values[i];
+		}
+	}
+	return 0;
+}
+
+double slope_at_x(int curveID, double xval){
+	return 0;
+}
+
+double slope_at_x_temp(double xval){
+	int i;
+	double slope_val = INVALID_SLOPE; 
+	for(i=0;i<NO_OF_POINTS;i++){
+                if(fabs(xval-X_Axis_Values[i]<=EPSILON)){
+					slope_val = slope_calc(i);
+					break;
+                }
+        }
+	return slope_val;
+}
+
+int max_at_x(int curveID, double xval){
+	return FALSE;
+}
+
+/*
+*have made an implicit assumption here
+*only the first point of a series of zero gradient points will be a minima/maxima point
+*need some clarifications on whether this is acceptable.This will be important w.r.t square wave like curves, etc.
+*/
+
+
+int max_at_x_temp(double xval){
+	double slope_at_prev_point = INVALID_SLOPE, slope_at_point = INVALID_SLOPE;
+    slope_at_prev_point = slope_at_x_temp(xval-INCREMENT);
+    slope_at_point =  slope_at_x_temp(xval);
+	if(slope_at_prev_point!=INVALID_SLOPE && slope_at_point!=INVALID_SLOPE){
+	    if(slope_at_prev_point > 0 && slope_at_point <= 0){
+	        return TRUE;
+	    }else{
+	        return FALSE;
+	    }
+	}
+	printf("Error: The point is either outside the range of values for the curve or is an extreme point");
+    return FALSE;
+}
+
+int min_at_x(int curveID, double xval){
+	return FALSE;
+}
+
+int min_at_x_temp(double xval){
+	double slope_at_prev_point = INVALID_SLOPE, slope_at_point = INVALID_SLOPE;
+    slope_at_prev_point= slope_at_x_temp(xval-INCREMENT);
+    slope_at_point = slope_at_x_temp(xval);
+    if(slope_at_prev_point!=INVALID_SLOPE && slope_at_point!=INVALID_SLOPE){
+		if(slope_at_prev_point < 0 && slope_at_point >= 0){
+			return TRUE;
+		}else{
+			return FALSE;
+		}
+    }
+	printf("Error: The point is either outside the range of values for the curve or is an extreme point");
+	return FALSE;
+}
+
+double** local_maxima_list(int curveID){
+	return NULL;
+}
+
+/*
+*inputs required regarding the inclusion of extreme points on the curve
+*
+*/
+
+double slope_calc(int i){
+	double slope = INVALID_SLOPE;
+	if(i>=0 && i<NO_OF_POINTS){	
+		if(i!=NO_OF_POINTS-1){
+			slope = ((Y_Axis_Values[i+1]-Y_Axis_Values[i])/(X_Axis_Values[i+1]-X_Axis_Values[i]));
+		}else{
+			slope = ((Y_Axis_Values[i]-Y_Axis_Values[i-1])/(X_Axis_Values[i]-X_Axis_Values[i-1]));
+		}
+	}
+	return slope;
+}
+
+/*
+ *Let Allocation be handled by calling function 
+ *This function only reallocates if necessary 
+ */
+MaxOrMinList* get_local_max_list(MaxOrMinList* buffer){
+	int no_of_actual_max = 0,i;
+	double slope_at_prev_point = INVALID_SLOPE,slope_at_point = INVALID_SLOPE;
+	if(buffer!=NULL){
+		if(buffer->xvals!=NULL && buffer->yvals!=NULL){
+			for(i=0;i<NO_OF_POINTS;i++){
+				slope_at_prev_point = slope_calc(i-1);
+				slope_at_point = slope_calc(i);
+				if(slope_at_point != INVALID_SLOPE && slope_at_prev_point != INVALID_SLOPE){
+					if(slope_at_prev_point>0 && slope_at_point<=0){
+						++no_of_actual_max;
+						if(no_of_actual_max>((buffer->size_allotted)/sizeof(double))){
+							buffer->size_allotted*=2;
+							buffer->xvals = realloc(buffer->xvals,buffer->size_allotted);
+							buffer->yvals = realloc(buffer->yvals,buffer->size_allotted);
+							if(buffer->xvals==NULL || buffer->yvals==NULL){
+								printf("\nError: Reallocation for buffer failed while populating local maxima list");
+								return NULL;
+							}
+						}
+						buffer->yvals[no_of_actual_max-1]=Y_Axis_Values[i];
+						buffer->xvals[no_of_actual_max-1]=X_Axis_Values[i];
+					}				
+				}
+			}
+			buffer->no_of_actual_max_or_mins = no_of_actual_max;
+		}else{
+			printf("\nError: XValue And Yvalue Array Not Initialized");
+			return NULL; 
+		}
+	}
+	return buffer;
+}
+
+/*
+ *Let Allocation be handled by calling function 
+ *This function only reallocates if necessary 
+ */
+MaxOrMinList* get_local_min_list(MaxOrMinList* buffer){
+	int no_of_actual_min = 0,i;
+	double slope_at_prev_point = INVALID_SLOPE,slope_at_point = INVALID_SLOPE;
+	if(buffer!=NULL){
+		if(buffer->xvals!=NULL && buffer->yvals!=NULL){
+			for(i=0;i<NO_OF_POINTS;i++){
+				slope_at_prev_point = slope_calc(i-1);
+				slope_at_point = slope_calc(i);
+				if(slope_at_point != INVALID_SLOPE && slope_at_prev_point != INVALID_SLOPE){
+					if(slope_at_prev_point<0 && slope_at_point>=0){
+						++no_of_actual_min;
+						if(no_of_actual_min>((buffer->size_allotted)/sizeof(double))){
+							buffer->size_allotted*=2;
+							buffer->xvals = realloc(buffer->xvals,buffer->size_allotted);
+							buffer->yvals = realloc(buffer->yvals,buffer->size_allotted);
+							if(buffer->xvals==NULL || buffer->yvals==NULL){
+								printf("\nError: Reallocation for buffer failed while populating local maxima list");
+								return NULL;
+							}
+						}
+						buffer->yvals[no_of_actual_min-1]=Y_Axis_Values[i];
+						buffer->xvals[no_of_actual_min-1]=X_Axis_Values[i];
+					}				
+				}
+			}
+			buffer->no_of_actual_max_or_mins = no_of_actual_min;
+		}else{
+			printf("\nError: XValue And Yvalue Array Not Initialized");
+			return NULL; 
+		}
+	}
+	return buffer;
+}
+
+
+MaxOrMinList* get_global_max_list(MaxOrMinList* buffer){
+	MaxOrMinList *local_max_list,local_max_list_buffer;
+	int i,no_of_actual_global_max;
+	double temp_glob_max;
+	if(buffer!=NULL){
+		//size_allotted must be specified, or you sow what you reap...
+		local_max_list_buffer.xvals = malloc(BLOCK_SIZE);
+		local_max_list_buffer.yvals = malloc(BLOCK_SIZE);
+		local_max_list_buffer.size_allotted = BLOCK_SIZE;
+		if(local_max_list_buffer.xvals!=NULL && local_max_list_buffer.yvals!=NULL){
+			local_max_list = get_local_max_list(&local_max_list_buffer);
+			if(local_max_list != NULL){
+				if(local_max_list->no_of_actual_max_or_mins > 0){
+						temp_glob_max = local_max_list->yvals[0];
+						buffer->yvals[0] = temp_glob_max;
+						buffer->xvals[0] = local_max_list->xvals[0];
+						buffer->no_of_actual_max_or_mins = 1;
+						no_of_actual_global_max=1;
+						if(local_max_list->no_of_actual_max_or_mins == 1){
+							return buffer;
+						}
+						for(i=1;i<local_max_list->no_of_actual_max_or_mins;i++){
+							if(fabs(temp_glob_max-local_max_list->yvals[i])<TOLERANCE){
+								++no_of_actual_global_max;
+							}else{
+								if(temp_glob_max < local_max_list->yvals[i]){
+									no_of_actual_global_max =1;
+									temp_glob_max = local_max_list->yvals[i];
+								}else{
+									continue;
+								}
+							}
+							if(no_of_actual_global_max>((buffer->size_allotted)/sizeof(double))){
+								printf("Buffer Size allotted for Global Max list = %d", buffer->size_allotted);
+								//Reallocate space if necessary...
+								buffer->size_allotted*=2;
+								buffer->yvals = realloc(buffer->yvals,buffer->size_allotted);
+								buffer->xvals = realloc(buffer->xvals,buffer->size_allotted);
+								if(buffer->xvals == NULL || buffer->yvals == NULL){
+									printf("\nError: Could not Reallocate space for the Global Maxima List.\n");
+									return NULL;
+								}
+							}
+							buffer->yvals[no_of_actual_global_max-1] = temp_glob_max;
+							buffer->xvals[no_of_actual_global_max-1] = local_max_list->xvals[i];
+							buffer->no_of_actual_max_or_mins = no_of_actual_global_max;
+						}
+				}else{
+					printf("\nThere are no Local Maxima, consequently a Global Maxima List cannot be generated\n");
+					buffer->no_of_actual_max_or_mins = 0;
+				}
+			}else{
+				printf("\nError: Could not obtain Local Maxima List\n");
+				free(local_max_list_buffer.xvals);
+				free(local_max_list_buffer.yvals);
+				return NULL;
+			}	
+			free(local_max_list_buffer.xvals);
+			free(local_max_list_buffer.yvals);
+		}else{
+			printf("\nError: Could not allocate space for the list\n");
+			return NULL;
+		}
+	}else{
+		printf("\nError: Uninitialized Buffer\n");
+	}
+	return buffer;
+}
+
+
+MaxOrMinList* get_global_min_list(MaxOrMinList* buffer){
+	MaxOrMinList *local_min_list,local_min_list_buffer;
+	int i,no_of_actual_global_min;
+	double temp_glob_min;
+	if(buffer!=NULL){
+		//size_allotted must be specified, or you sow what you reap...
+		local_min_list_buffer.xvals = malloc(BLOCK_SIZE);
+		local_min_list_buffer.yvals = malloc(BLOCK_SIZE);
+		local_min_list_buffer.size_allotted = BLOCK_SIZE;
+		if(local_min_list_buffer.xvals!=NULL && local_min_list_buffer.yvals!=NULL){
+			local_min_list = get_local_min_list(&local_min_list_buffer);
+			if(local_min_list != NULL){
+				if(local_min_list->no_of_actual_max_or_mins > 0){
+						temp_glob_min = local_min_list->yvals[0];
+						buffer->yvals[0] = temp_glob_min;
+						buffer->xvals[0] = local_min_list->xvals[0];
+						buffer->no_of_actual_max_or_mins = 1;
+						no_of_actual_global_min=1;
+						if(local_min_list->no_of_actual_max_or_mins == 1){
+							return buffer;
+						}
+						for(i=1;i<local_min_list->no_of_actual_max_or_mins;i++){
+							if(fabs(temp_glob_min-local_min_list->yvals[i])<TOLERANCE){
+								++no_of_actual_global_min;
+							}else{
+								if(temp_glob_min > local_min_list->yvals[i]){
+									no_of_actual_global_min =1;
+									temp_glob_min = local_min_list->yvals[i];
+								}else{
+									continue;
+								}
+							}
+							if(no_of_actual_global_min>((buffer->size_allotted)/sizeof(double))){
+								//Reallocate space if necessary...
+								printf("Buffer Size allotted for Global Max list = %d", buffer->size_allotted);
+								buffer->size_allotted*=2;
+								buffer->yvals = realloc(buffer->yvals,buffer->size_allotted);
+								buffer->xvals = realloc(buffer->xvals,buffer->size_allotted);
+								if(buffer->xvals == NULL || buffer->yvals == NULL){
+									printf("\nError: Could not Reallocate space for the Global Minima List.\n");
+									return NULL;
+								}
+							}
+							buffer->yvals[no_of_actual_global_min-1] = temp_glob_min;
+							buffer->xvals[no_of_actual_global_min-1] = local_min_list->xvals[i];
+							buffer->no_of_actual_max_or_mins = no_of_actual_global_min;
+						}
+				}else{
+					printf("\nThere are no Local Minima, consequently a Global Minima List cannot be generated\n");
+					buffer->no_of_actual_max_or_mins = 0;
+				}
+			}else{
+				printf("\nError: Could not obtain Local Minima List\n");
+				free(local_min_list_buffer.xvals);
+				free(local_min_list_buffer.yvals);
+				return NULL;
+			}	
+			free(local_min_list_buffer.xvals);
+			free(local_min_list_buffer.yvals);
+		}else{
+			printf("\nError: Could not allocate space for the list\n");
+			return NULL;
+		}
+	}else{
+		printf("\nError: Uninitialized Buffer\n");
+	}
+	return buffer;
+}
+
+MaxOrMinList* get_max_list_bet_xvals(MaxOrMinList* buffer, double xval1, double xval2){
+	int i,no_of_actual_max=0,start_index=0,end_index=0;
+	double slope_at_prev_point = INVALID_SLOPE,slope_at_point = INVALID_SLOPE;
+	if(fabs(xval1-X_Axis_Values[0])<EPSILON && fabs(xval2-X_Axis_Values[NO_OF_POINTS-1])<EPSILON){
+		return get_local_max_list(buffer);
+	}
+	if(buffer!=NULL){
+		if(buffer->xvals!=NULL && buffer->yvals!=NULL){
+			for(i=0;i<NO_OF_POINTS;i++){
+				if (fabs(X_Axis_Values[i]-xval1)<EPSILON){
+					start_index = i;
+				}
+				if(fabs(X_Axis_Values[i]-xval2)<EPSILON){
+					end_index = i;
+				}
+			}
+			if(start_index == 0 || end_index == 0){
+				printf("\nError: Invalid XValues Provided\n");
+				return NULL;
+			}
+			for(i=start_index;i<=end_index;i++){
+				slope_at_prev_point = slope_calc(i-1);
+				slope_at_point = slope_calc(i);
+				if(slope_at_point != INVALID_SLOPE && slope_at_prev_point != INVALID_SLOPE){
+					if(slope_at_prev_point>0 && slope_at_point<=0){
+						++no_of_actual_max;
+						if(no_of_actual_max>((buffer->size_allotted)/sizeof(double))){
+							buffer->size_allotted*=2;
+							buffer->xvals = realloc(buffer->xvals,buffer->size_allotted);
+							buffer->yvals = realloc(buffer->yvals,buffer->size_allotted);
+							if(buffer->xvals == NULL || buffer->yvals == NULL){
+									printf("\nError: Could not Reallocate space for the Global Minima List.\n");
+									return NULL;
+							}
+						}
+						buffer->yvals[no_of_actual_max-1]=Y_Axis_Values[i];
+						buffer->xvals[no_of_actual_max-1]=X_Axis_Values[i];
+					}				
+				}
+				
+			}
+			buffer->no_of_actual_max_or_mins = no_of_actual_max;
+		}else{
+			printf("\nError: XValue And Yvalue Array Not Initialized");
+			return NULL; 
+		}
+	}else{
+		printf("\nError: Buffer passed to function get_max_list_bet_xvals() is NULL\n");
+	}
+	return buffer;	
+}
+
+MaxOrMinList* get_min_list_bet_xvals(MaxOrMinList* buffer, double xval1, double xval2){
+	int i,no_of_actual_min=0,start_index=0,end_index=0;
+	double slope_at_prev_point = INVALID_SLOPE,slope_at_point = INVALID_SLOPE;
+	if(fabs(xval1-X_Axis_Values[0])<EPSILON && fabs(xval2-X_Axis_Values[NO_OF_POINTS-1])<EPSILON){
+		return get_local_min_list(buffer);
+	}
+	if(buffer!=NULL){
+		if(buffer->xvals!=NULL && buffer->yvals!=NULL){
+			for(i=0;i<NO_OF_POINTS;i++){
+				if (fabs(X_Axis_Values[i]-xval1)<EPSILON){
+					start_index = i;
+				}
+				if(fabs(X_Axis_Values[i]-xval2)<EPSILON){
+					end_index = i;
+				}
+			}
+			if(start_index == 0 || end_index == 0){
+				printf("\nError: Invalid XValues Provided\n");
+				return NULL;
+			}
+			for(i=start_index;i<=end_index;i++){
+				slope_at_prev_point = slope_calc(i-1);
+				slope_at_point = slope_calc(i);
+				if(slope_at_point != INVALID_SLOPE && slope_at_prev_point != INVALID_SLOPE){
+					if(slope_at_prev_point<0 && slope_at_point>=0){
+						++no_of_actual_min;
+						if(no_of_actual_min>((buffer->size_allotted)/sizeof(double))){
+							buffer->size_allotted*=2;
+							buffer->xvals = realloc(buffer->xvals,buffer->size_allotted);
+							buffer->yvals = realloc(buffer->yvals,buffer->size_allotted);
+							if(buffer->xvals == NULL || buffer->yvals == NULL){
+									printf("\nError: Could not Reallocate space for the Global Minima List.\n");
+									return NULL;
+							}
+						}
+						buffer->yvals[no_of_actual_min-1]=Y_Axis_Values[i];
+						buffer->xvals[no_of_actual_min-1]=X_Axis_Values[i];
+					}				
+				}
+				
+			}
+			buffer->no_of_actual_max_or_mins = no_of_actual_min;
+		}else{
+			printf("\nError: XValue And Yvalue Array Not Initialized");
+			return NULL; 
+		}
+	}else{
+		printf("\nError: Buffer passed to function get_min_list_bet_xvals() is NULL\n");
+	}
+	return buffer;	
+}
+
+
+//TODO Myself: Delete This function, it has been written only for testing
+
+void display_max_min_lists(){
+	MaxOrMinList list,*buffer;
+	int i; 
+	double xval1,xval2;
+	list.xvals = malloc(BLOCK_SIZE);
+	list.yvals = malloc(BLOCK_SIZE);
+	list.size_allotted =BLOCK_SIZE;
+	if(list.xvals!=NULL && list.yvals!=NULL){
+		buffer = get_local_max_list(&list);
+		if(buffer!=NULL){
+			printf("\nDisplaying Local Maxima List........\n");
+			sleep(1);
+			if(list.no_of_actual_max_or_mins == 0){
+				printf("The function has ZERO local maximas");
+			}
+			for(i=0;i<list.no_of_actual_max_or_mins;i++){
+				printf("\nLocal Maxima Number %d = %lf Corresponding to Xval of %lf",i+1,buffer->yvals[i],buffer->xvals[i]);
+			}
+			printf("\n\n\n\n");
+		}else{
+			printf("\nLocal Max List Returned Null\n");
+		}
+		sleep(1);
+		buffer = get_local_min_list(buffer);
+		if(buffer!=NULL){
+			printf("\nDisplaying Local Minima List........\n");
+			if(buffer->no_of_actual_max_or_mins == 0){
+				printf("The function has ZERO local maximas");
+			}
+			for(i=0;i<buffer->no_of_actual_max_or_mins;i++){
+				printf("\nLocal Minima Number %d = %lf Corresponding to Xval of %lf",i+1,buffer->yvals[i],buffer->xvals[i]);
+			}
+			printf("\n\n\n\n");
+		}else{
+			printf("\nLocal Minima List returned Null\n");
+		}
+		sleep(1);
+		buffer = get_global_max_list(buffer);
+		if(buffer!=NULL){
+			printf("\nDisplaying Global Maxima List...");
+			if(buffer->no_of_actual_max_or_mins == 0){
+				printf("The function has ZERO global maximas");
+			}
+			for(i=0;i<buffer->no_of_actual_max_or_mins;i++){
+				printf("\nGlobal Maxima Number %d = %lf Corresponding to Xval of %lf",i+1,buffer->yvals[i],buffer->xvals[i]);
+			}
+			printf("\n\n\n\n");
+		}else{
+			printf("\nGlobal Maxima List returned Null\n");
+		}
+		sleep(1);
+		buffer = get_global_min_list(buffer);
+		if(buffer!=NULL){
+			printf("\nDisplaying Global Minima List...\n");
+			if(buffer->no_of_actual_max_or_mins == 0){
+				printf("The function has ZERO global minimas");
+			}
+			for(i=0;i<buffer->no_of_actual_max_or_mins;i++){
+				printf("\nGlobal Minima Number %d = %lf Corresponding to Xval of %lf",i+1,buffer->yvals[i],buffer->xvals[i]);
+			}
+			printf("\n\n\n\n");
+		}else{
+			printf("\nGlobal Minima List returned Null\n");
+		}
+		sleep(2);
+		printf("\nTo find Maxima between two Xvalues....\n");
+		printf("Enter the first X Value\n");
+		scanf("%lf",&xval1);
+		printf("\nEnter the Second X Value\n");
+		scanf("%lf",&xval2);
+		buffer = get_max_list_bet_xvals(buffer,xval1,xval2);
+		if(buffer!=NULL){
+			printf("\n\n\n\nDisplaying List of Maxima Between %lf and %lf...",xval1,xval2);
+			if(buffer->no_of_actual_max_or_mins == 0){
+				printf("The function has ZERO maxima between the entered XValues");
+			}
+			for(i=0;i<buffer->no_of_actual_max_or_mins;i++){
+				printf("\nMaxima Number %d = %lf Corresponding to Xval of %lf",i+1,buffer->yvals[i],buffer->xvals[i]);
+			}
+			printf("\n\n\n\n");
+		}else{
+			printf("\nMaxima List returned Null\n");
+		}
+		sleep(2);
+		printf("\nTo find Minima between two Xvalues....\n");
+		printf("Enter the first X Value\n");
+		scanf("%lf",&xval1);
+		printf("\nEnter the Second X Value\n");
+		scanf("%lf",&xval2);
+		buffer = get_min_list_bet_xvals(buffer,xval1,xval2);
+		if(buffer!=NULL){
+			printf("\n\n\n\nDisplaying list of Minima between %lf and %lf...",xval1,xval2);
+			if(buffer->no_of_actual_max_or_mins == 0){
+				printf("The function has ZERO minima between the entered XValues");
+			}
+			for(i=0;i<buffer->no_of_actual_max_or_mins;i++){
+				printf("\nMinima Number %d = %lf Corresponding to Xval of %lf",i+1,buffer->yvals[i],buffer->xvals[i]);
+			}
+			printf("\n\n\n\n");
+		}else{
+			printf("\nMinima List returned Null\n");
+		}
+		free(list.xvals);
+		free(list.yvals);
+	}
+}
+
+int main(){
+	initdisplay();	
+	return 0;
+}
+
+//Display related Jazz, totally unnecessary once actual interfacing to API is done TODO: Delete
+void initdisplay(){
+	int choice;
+	double xval;
+	printf("\n\n\n\n\n\n\n\n\n\n");
+	printf("********************************************************");
+	printf("PROGRAM FOR FITNESS MODULES");
+	printf("********************************************************\n");
+	printf("\n\n\n\n\n\n");
+	sleep(1);
+	printf("This PROGRAM illustrates some of the modules written to enable a user to write his own fitness function\n");
+	sleep(1);
+	printf("\nThree types of functions are available for testing\n");
+	sleep(1);
+	printf("(1)  Sine Function (y = sinx)\n(2)  Exponential Decay Function (y = exp(-x))\n(3)  Rapidly Exponentially decaying Sine Function (y = exp(-x)*sin(10x))\n");
+	sleep(1);
+	printf("\nEnter Your Choice\n");
+	scanf("%d",&choice);
+	InitializeCurves(choice);
+	sleep(1);
+	printf("\n\nEnter a point BETWEEN %lf and %lf at which you would like slope to be found.....\n",X_Axis_Values[0],X_Axis_Values[NO_OF_POINTS-1]);
+	scanf("%lf",&xval);
+	sleep(1);
+	printf("Slope at  %lf is %lf\n", xval, slope_at_x_temp(xval));
+	sleep(1);
+	if(max_at_x_temp(xval)){
+		printf("There is a maxima at given XVal\n");
+	}else if(min_at_x_temp(xval)){
+		printf("There is a minima at given Xval\n");
+	}else{
+		printf("There is neither a maxima nor a minima at given XVal\n");
+	}
+	display_max_min_lists();
+	
+}
Index: /tags/1.6.0/packages/optimizer/src/fitfunc/ff_modules_for_discrete_params.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/fitfunc/ff_modules_for_discrete_params.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/fitfunc/ff_modules_for_discrete_params.c	(revision 6168)
@@ -0,0 +1,44 @@
+/*
+* This module contains functions which will help a user write his own Fitness Function in case of discrete variables
+* Have not written the code yet. Need to verify some things first. 
+*/
+#include<stdio.h>
+#include<math.h>
+#include<stdlib.h>
+#include<time.h>
+#include "pgapack.h"
+#include "rp_optimizer.h"
+
+
+/*Idea behind this function: Whenever a user would want to get the value of a certain i/p geneeter
+*during the course of a GA, he would use this function. The work of interfacing it to the GA Algo
+* is not yet complete.
+*/
+double get_gene(char* name){
+	return 0;
+}
+
+/*
+ * Return the actual values of all the genes in the currently evaluated chromosome
+ */
+double* get_all_genes(){
+	return 0;
+}
+
+/*
+ * The way to go about doing this is to fetch  
+ */
+double weighted_sum_of_variances(double* array_of_current_values, double* array_of_desired_values){
+	return 0;
+}
+
+
+double abs_nth_power_distance(double actual_value, double desired_value,double power){
+	return pow(fabs(actual_value-desired_value),power);
+}
+
+int main(){
+	double actual=5,desired=30,power=0.2;
+	printf("Actual - %lf, Desired - %lf, (Actual-Desired)^ %lf is %lf\n", actual,desired,power,abs_nth_power_distance(actual,desired,power));
+	return 0;
+}
Index: /tags/1.6.0/packages/optimizer/src/install-sh
===================================================================
--- /tags/1.6.0/packages/optimizer/src/install-sh	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/install-sh	(revision 6168)
@@ -0,0 +1,269 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+#
+# 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}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd="$cpprog"
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd="$stripprog"
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "install:	no input file specified"
+	exit 1
+else
+	true
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+	
+	if [ -d $dst ]; then
+		instcmd=:
+		chmodcmd=""
+	else
+		instcmd=mkdir
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f $src -o -d $src ]
+	then
+		true
+	else
+		echo "install:  $src does not exist"
+		exit 1
+	fi
+	
+	if [ x"$dst" = x ]
+	then
+		echo "install:	no destination specified"
+		exit 1
+	else
+		true
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d $dst ]
+	then
+		dst="$dst"/`basename $src`
+	else
+		true
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS=' 	
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp="${pathcomp}${1}"
+	shift
+
+	if [ ! -d "${pathcomp}" ] ;
+        then
+		$mkdirprog "${pathcomp}"
+	else
+		true
+	fi
+
+	pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd $dst &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		dstfile=`basename $dst $transformbasename | 
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		true
+	fi
+
+# Make a temp file name in the proper directory.
+
+	dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd $src $dsttmp &&
+
+	trap "rm -f ${dsttmp}" 0 &&
+
+# 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 $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+	$doit $rmcmd -f $dstdir/$dstfile &&
+	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+
+fi &&
+
+
+exit 0
Index: /tags/1.6.0/packages/optimizer/src/pgapack/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/Makefile.in	(revision 6168)
@@ -0,0 +1,30 @@
+
+srcdir		= @srcdir@
+prefix		= @prefix@
+exec_prefix	= @exec_prefix@
+bindir		= @bindir@
+libdir		= @libdir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+mandir		= @mandir@
+includedir	= @includedir@
+
+PGAPACK		= @PGAPACK@
+
+.PHONY:	all install test clean distclean pgapack
+
+all: pgapack
+
+pgapack:
+	$(MAKE) -C pgapack install
+install:
+	$(MAKE) -C install
+test: 
+	#$(TCLSH) `@CYGPATH@ $(srcdir)/tests/all.tcl` $(TESTFLAGS)
+clean:
+	$(MAKE) -C pgapack clean
+
+distclean: 
+	$(MAKE) -C pgapack spotless
+	$(RM) Makefile config.cache config.log config.status *~
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/configure
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/configure	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/configure	(revision 6168)
@@ -0,0 +1,4453 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.62 for PGAPACK 1.1.
+#
+# Report bugs to <rappture@nanohub.org>.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+  if (eval ":") 2>/dev/null; then
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+
+  if test $as_have_required = yes &&	 (eval ":
+(as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=\$LINENO
+  as_lineno_2=\$LINENO
+  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+  :
+else
+  as_candidate_shells=
+    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=.
+  case $as_dir in
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+	   done;;
+       esac
+done
+IFS=$as_save_IFS
+
+
+      for as_shell in $as_candidate_shells $SHELL; do
+	 # Try only shells that exist, to save several forks.
+	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		{ ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+  CONFIG_SHELL=$as_shell
+	       as_have_required=yes
+	       if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+  (exit $1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+  break
+fi
+
+fi
+
+      done
+
+      if test "x$CONFIG_SHELL" != x; then
+  for as_var in BASH_ENV ENV
+	do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+	done
+	export CONFIG_SHELL
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+    if test $as_have_required = no; then
+  echo This script requires a shell more modern than all the
+      echo shells that I found on your system.  Please install a
+      echo modern shell, or manually run the script under such a
+      echo shell if you do have one.
+      { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+  echo No shell found that supports shell functions.
+  echo Please tell bug-autoconf@gnu.org about your system,
+  echo including any error possibly output before this message.
+  echo This can help us improve future autoconf versions.
+  echo Configuration will now proceed without shell functions.
+}
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # 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 after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, 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
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (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 sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# 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`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='PGAPACK'
+PACKAGE_TARNAME='pgapack'
+PACKAGE_VERSION='1.1'
+PACKAGE_STRING='PGAPACK 1.1'
+PACKAGE_BUGREPORT='rappture@nanohub.org'
+
+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
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+LIB_SEARCH_DIRS
+INSTALL_PROGRAM
+INSTALL_SCRIPT
+INSTALL_DATA
+SET_MAKE
+CC
+CFLAGS
+LDFLAGS
+CPPFLAGS
+ac_ct_CC
+EXEEXT
+OBJEXT
+F77
+FFLAGS
+ac_ct_F77
+RANLIB
+LN_S
+LIBOBJS
+LTLIBOBJS'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+F77
+FFLAGS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *)	ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { $as_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 &&
+      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { $as_echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) { $as_echo "$as_me: error: Unrecognized options: $ac_unrecognized_opts" >&2
+   { (exit 1); exit 1; }; } ;;
+    *)     $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; }
+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
+    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  { $as_echo "$as_me: error: Working directory cannot be determined" >&2
+   { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+   { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
+   { (exit 1); exit 1; }; }
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures PGAPACK 1.1 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/pgapack]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of PGAPACK 1.1:";;
+   esac
+  cat <<\_ACEOF
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 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 <rappture@nanohub.org>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+PGAPACK configure 1.1
+generated by GNU Autoconf 2.62
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by PGAPACK $as_me 1.1, which was
+generated by GNU Autoconf 2.62.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  $as_echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) 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_arg'"
+      ;;
+    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: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# 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 an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test -r "$ac_site_file"; then
+    { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  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
+    { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:$LINENO:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:$LINENO:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+$as_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
+
+
+
+#------------------------------------------------------------------------
+# Handle the --prefix=... option
+#------------------------------------------------------------------------
+
+if test "${prefix}" = "NONE"; then
+    prefix=/usr/local
+fi
+if test "${exec_prefix}" = "NONE"; then
+    exec_prefix=$prefix
+fi
+
+if test "${libdir}" != "${prefix}/lib"; then
+    LIB_SEARCH_DIRS="-L${prefix}/lib -L${libdir}"
+else
+    LIB_SEARCH_DIRS="-L${libdir}"
+fi
+
+
+
+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
+  { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
+$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+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 "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+$as_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.
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_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.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { (ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+
+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+$as_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
+
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&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'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_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
+	{ { $as_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
+$as_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
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_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 | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+$as_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
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then
+  $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+$as_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
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat >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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CFLAGS=""
+      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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 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 { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=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 <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_c89=$ac_arg
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_F77+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  { $as_echo "$as_me:$LINENO: result: $F77" >&5
+$as_echo "$F77" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+$as_echo "$ac_ct_F77" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_F77" && break
+done
+
+  if test "x$ac_ct_F77" = x; then
+    F77=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    F77=$ac_ct_F77
+  fi
+fi
+
+
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_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
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+{ $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+$as_echo_n "checking whether $F77 accepts -g... " >&6; }
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_f77_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_prog_f77_g=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+$as_echo "$ac_cv_prog_f77_g" >&6; }
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+if test $ac_compiler_gnu = yes; then
+  G77=yes
+else
+  G77=
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=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
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+
+pgapack=pgapack
+
+if test "$srcdir" != "."; then
+  rm -rf $pgapack
+  echo "tar -C $srcdir -clf - $pgapack | tar -xpf -"
+  tar -C $srcdir -clf - $pgapack | tar -xpf -
+fi
+host=linux
+CFLAGS="-fPIC $CFLAGS"
+(cd $pgapack ; ./configure -arch $host -f77 $F77 -cc $CC -cflags $CFLAGS -fflags $FFLAGS)
+
+ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+	g
+	s/^\n//
+	s/\n/ /g
+	p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.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_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # 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 after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, 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
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (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 sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by PGAPACK $as_me 1.1, which was
+generated by GNU Autoconf 2.62.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+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 and configuration settings, 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
+
+Configuration files:
+$config_files
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+PGAPACK config.status 1.1
+configured by $0, generated by GNU Autoconf 2.62,
+  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { $as_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"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+$as_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
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$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 "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} ||
+{
+   $as_echo "$as_me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr='
+'
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
+$as_echo "$as_me: error: could not setup config files machinery" >&2;}
+   { (exit 1); exit 1; }; }
+_ACEOF
+
+# 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
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES      "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+$as_echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+   { (exit 1); exit 1; }; };;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+   { (exit 1); exit 1; }; };;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      ac_file_inputs="$ac_file_inputs '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; } ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  { as_dir="$ac_dir"
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+    s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+ ;;
+
+
+
+  esac
+
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+
+# 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
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:$LINENO: WARNING: Unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/configure.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/configure.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/configure.in	(revision 6168)
@@ -0,0 +1,45 @@
+AC_INIT([PGAPACK], [1.1], [rappture@nanohub.org])
+
+#------------------------------------------------------------------------
+# Handle the --prefix=... option
+#------------------------------------------------------------------------
+
+if test "${prefix}" = "NONE"; then
+    prefix=/usr/local
+fi
+if test "${exec_prefix}" = "NONE"; then
+    exec_prefix=$prefix
+fi
+
+if test "${libdir}" != "${prefix}/lib"; then
+    LIB_SEARCH_DIRS="-L${prefix}/lib -L${libdir}"
+else
+    LIB_SEARCH_DIRS="-L${libdir}"
+fi
+
+AC_SUBST(LIB_SEARCH_DIRS)
+
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+
+dnl find and test the C compiler
+AC_PROG_CC
+AC_PROG_F77
+AC_LANG_C
+
+AC_PROG_INSTALL
+AC_PROG_RANLIB
+AC_PROG_LN_S
+
+pgapack=pgapack
+
+if test "$srcdir" != "."; then
+  rm -rf $pgapack
+  echo "tar -C $srcdir -clf - $pgapack | tar -xpf -"
+  tar -C $srcdir -clf - $pgapack | tar -xpf - 
+fi
+host=linux
+CFLAGS="-fPIC $CFLAGS"
+(cd $pgapack ; ./configure -arch $host -f77 $F77 -cc $CC -cflags $CFLAGS -fflags $FFLAGS)
+
+AC_OUTPUT( [ Makefile ])
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/CHANGES
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/CHANGES	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/CHANGES	(revision 6168)
@@ -0,0 +1,208 @@
+Changes in Version 1.0
+======================
+
+        1)  Added support for parallel execution of the global model (single 
+            population) using MPI (Message Passing Interface).
+
+        2)  Added support for a restart operator.  The best string is used
+            to reinitialize the population.
+
+	3)  Added support for new native data type Character.
+
+        4)  Added support to specify the multiplier of the worst evaluation 
+            value when remapping a minimization problem.
+
+        5)  Separated specification of mutation type from rate.
+
+        6)  Added new integer mutation operators.
+
+        7)  Added an option to maintain integer and real allele values within
+            the range specified on initialization after mutation.
+
+	8)  The configure script argument -optimize has been removed and
+            replaced with the -debug switch for compiling a debug version.
+            An optimized version of PGAPack is now built by default.
+
+	9)  The configure script argument -arch AIX has been replaced with
+            -arch rs6000.
+
+        10)  The configure script now accepts the -cflags and -flags switchs to
+            supply supply options to the C and FORTRAN compiler, respectively.
+
+	11)  Changed PGATRUE and PGAFALSE to PGA_TRUE and PGA_FALSE.
+
+	12) Renamed debug macros to begin with PGA_DEBUG instead of PGADEBUG.
+
+	13) Renamed report macros to begin with PGA_REPORT (instead of, for
+            example PGA_ONLINE).
+
+	14) Removed macro PGAERROR from pgapack.h.
+
+	15) Rewrote PGARandomInterval(ctx, L, U) so that it would not
+	    return L-1.  It now returns [L, U].
+
+	16) PGADone, PGAUpdateGenertaion and PGAEvaluate all take an MPI
+	    communicator as the last argument.  See PGARunGM in parallel.c
+	    for details on how to rewrite a user run routine.
+
+	17) Removed "Time" from the output.
+
+	18) Shortened the names of the source files as follows:
+
+		character.c                  char.c
+		crossover.c                  cross.c
+		duplicate.c                  duplcate.c
+		f2c_interface.c              f2c.c
+
+	19) Shortened the name of the examples files as follows:
+
+		maxbit_custom.c              maxbitc.c
+		maxbit_menu.c                maxbitm.c
+		maxint_custom.c              maxbitc.c
+		rastrigin.c                  rstrgnb.c
+		real_rastrigin.c             rstrgnr.c
+		udt_struct.c                 udtstr.c
+		udt_struct_array.c           udtastr.c
+
+	20) Replaced the function names on the left with the function	
+	    names on the right.  The Perl script ./util/upgrade_script.pl
+            may be of use in automating part of the renaming process on
+            exisiting files.
+
+	PGABinaryBuildIndividualDatatype()
+					-> PGABinaryBuildDatatype()
+	PGABinaryRandomize()		-> PGABinaryInitString()
+	PGABinaryWrite()		-> PGABinaryPrint()
+	PGABinaryWriteString()		-> PGABinaryPrintString()
+	PGABuildIndividualDatatype()	-> PGABuildDatatype()
+	PGACharacterBuildIndividualDatatype()
+					-> PGACharacterBuildDatatype()
+	PGACharacterRandomize()		-> PGACharacterInitString()
+	PGACharacterWriteString()	-> PGACharacterPrintString()
+	PGAFitnessLinNor()		-> PGAFitnessLinearNormal()
+	PGAFitnessLinRank()		-> PGAFitnessLinearRank()
+	PGAFitnessMinRecprl()		-> PGAFitnessMinReciprocal()
+	PGAGetEvalUpToDate()		-> PGAGetEvaluationUpToDateFlag()
+	PGAGetEvaluate()		-> PGAGetEvaluation()
+	PGAGetFitnessRankMax()		-> PGAGetMaxFitnessRank()
+	PGAGetBest()			-> PGAGetBestIndex()
+	PGAGetWorst()			-> PGAGetWorstIndex()
+	PGAGetInitIntegerMax()		-> PGAGetMaxIntegerInitValue()
+	PGAGetInitIntegerMin()		-> PGAGetMinIntegerInitValue()
+	PGAGetInitRealMax()		-> PGAGetMaxRealInitValue()
+	PGAGetInitRealMin()		-> PGAGetMinRealInitValue()
+	PGAGetIntegerType()		-> PGAGetIntegerInitType()
+	PGAGetIter()			-> PGAGetGAIterValue()
+	PGAGetMaxDouble()		-> PGAGetMaxMachineDoubleValue()
+	PGAGetMaxInt()			-> PGAGetMaxMachineIntValue()
+	PGAGetMaxIter()			-> PGAGetMaxGAIterValue()
+	PGAGetMinDouble()		-> PGAGetMinMachineDoubleValue()
+	PGAGetMinInt()			-> PGAGetMinMachineIntValue()
+	PGAGetMutateIntegerVal()	-> PGAGetMutationIntegerValue()
+	PGAGetMutateOnlyNoCross()	-> PGAGetMutationAndCrossoverFlag()
+                                        -> PGAGetMutationOrCrossoverFlag()
+	PGAGetMutateRealVal()		-> PGAGetMutationRealValue()	
+	PGAGetNoDuplicates()		-> PGAGetNoDuplicatesFlag()
+	PGAGetNprocs()			-> PGAGetNumProcs()
+	PGAGetNumReplace()		-> PGAGetNumReplaceValue()
+	PGAGetOptDir()			-> PGAGetOptDirFlag()
+	PGAGetPID()			-> PGAGetRank()
+	PGAGetPopReplace()		-> PGAGetPopReplaceType()
+	PGAGetPrintFreq()		-> PGAGetPrintFrequency()
+	PGAGetRandomInit()		-> PGAGetRandomInitFlag()
+	PGAGetRestart()			-> PGAGetRestartFlag()
+	PGAGetRestartFrequency()	-> PGAGetRestartFrequencyValue()
+	PGAGetSortPop()			-> PGAGetSortedPopIndex()
+	PGAGetStoppingRule()		-> PGAGetStoppingRuleType()
+	PGAGetStringLen()		-> PGAGetStringLength()
+	PGAGetUniformCrossProb()	-> PGAGetUniformCrossoverProb()
+	PGAIntegerBuildIndividualDatatype()
+					-> PGAIntegerBuildDatatype()	
+	PGAIntegerRandomize()		-> PGAIntegerInitString()
+	PGAIntegerWriteString()		-> PGAIntegerPrintString()
+	PGAParallelDone()		-> PGADoneMS()
+	PGAParallelEvaluateMS()		-> PGAEvaluateMS()
+	PGAPrintContext()		-> PGAPrintContextVariable()
+	PGAPrintVersion()		-> PGAPrintVersionNumber()
+	PGARealBuildIndividualDatatype()-> PGARealBuildDatatype()
+	PGARealRandomize()		-> PGARealInitString()
+	PGARealWriteString()		-> PGARealPrintString()
+	PGARunMutateAndCross()		-> PGARunMutationAndCrossover()
+	PGARunMutateOrCross()		-> PGARunMutationOrCrossover()
+	PGASelectNext()			-> PGASelectNextIndex()
+	PGASetCharacterInit()		-> PGASetCharacterInitType()	
+	PGASetEvaluate()		-> PGASetEvaluation()
+	PGASetEvalUpToDate()		-> PGASetEvaluationUpToDateFlag()
+	PGASetFitnessRankMax()		-> PGASetMaxFitnessRank()
+	PGASetIntegerInitLU()           -> PGASetIntegerInitRange()
+	PGASetMaxIter()			-> PGASetMaxGAIterValue()
+	PGASetMaxNoChange()		-> PGASetMaxNoChangeValue()
+	PGASetMaxSimilarity()		-> PGASetMaxSimilarityValue()
+	PGASetMutateOnlyNoCross()	-> PGASetMutationOrCrossoverFlag()
+                                        -> PGASetMutationAndCrossoverFlag()
+	PGASetMutationIntegerVal()	-> PGASetMutationIntegerValue()
+	PGASetMutationRealVal()		-> PGASetMutationRealValue()
+	PGASetNoDuplicates()		-> PGASetNoDuplicatesFlag()
+	PGASetNumReplace()		-> PGASetNumReplaceValue()
+	PGASetPopReplacement()		-> PGASetPopReplacementType()
+	PGASetPrintFreq()		-> PGASetPrintFrequencyValue()
+	PGASetRandomInit()		-> PGASetRandomInitFlag()
+	PGASetRealInitLU()              -> PGASetRealInitRange()
+	PGASetRestart()			-> PGASetRestartFlag()
+	PGASetRestartFrequency()	-> PGASetRestartFrequencyValue()
+	PGASetStoppingRule()		-> PGASetStoppingRuleType()
+	PGASetSupportingDebugFlags()	-> PGASetDebugFlag()
+	PGASetUniformCrossProb()	-> PGASetUniformCrossoverProb()
+	PGAWriteString()		-> PGAPrintString()	
+
+
+Changes in Version 0.2b
+=======================
+
+        1) In PGABinaryTwoPointCrossover, add<ed a test before left-shifting.
+           The right operand of a shift must be strictly less than the number
+           of bits in the left operand, otherwise the result is undefined.
+
+        2) In udt_char.c, changed the data type to signed char since whether
+           char is signed is implementation dependent.
+
+        3) In real_rastrigin, made upper and lower to be dynamic arrays rather
+           than static arrays to allow variable string length.
+
+
+Changes in Version 0.2a
+=======================
+
+        1) Created pgapack-0.2.a.tar.Z to replace pgapack-0.2.tar.Z
+           when we found the IRIX's do not have a ranlib (unless it
+           is in /usr/local.
+
+        2) Deleted a space from ./examples/c/Makefile.in
+
+        3) Added the -w flag to FFLAGS for the freebsd version to
+           suppress warnings.
+
+
+Changes in Version 0.2
+======================
+
+	1) In PGASetUp, we changed the default value for the number of
+           individuals to replace each generation from 10 to 10% of the
+           population size.
+
+        2) Took all the parallel stuff out.
+
+        3) Defined PGAPrintReport and put various PGAPrint functions in 
+           the new file system.c
+
+        5) Changed EvalUpToDate to all lower case.
+
+        6) Changed PGARunMutateOnlyNoCross to take PGA_OLDPOP and PGA_NEWPOP
+           as arguments
+
+        7) Changed the low-level ops functions to take p,pop as arguments
+           instead of a void pointer
+
+        8) Changed PGAMutate to a 3-argument function.  It just mutates,
+           but does not copy the string to its final location.  Use
+            PGACopyIndividual for that.
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/COPYRIGHT
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/COPYRIGHT	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/COPYRIGHT	(revision 6168)
@@ -0,0 +1,60 @@
+
+********************************************************************* 
+(C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+*********************************************************************
+
+This software was authored by
+
+D. Levine
+Mathematics and Computer Science Division Argonne National Laboratory
+Argonne IL 60439
+levine@mcs.anl.gov
+(708) 252-6735
+(708) 252-5986 (FAX)
+
+with programming assistance of participants in Argonne National 
+Laboratory's SERS program.
+
+This program contains material protectable under copyright laws of the 
+United States.  Permission is hereby granted to use it, reproduce it, 
+to translate it into another language, and to redistribute it to 
+others at no charge except a fee for transferring a copy, provided 
+that you conspicuously and appropriately publish on each copy the 
+University of Chicago's copyright notice, and the disclaimer of 
+warranty and Government license included below.  Further, permission 
+is hereby granted, subject to the same provisions, to modify a copy or 
+copies or any portion of it, and to distribute to others at no charge 
+materials containing or derived from the material.
+
+The developers of the software ask that you acknowledge its use in any 
+document referencing work based on the  program, such as published 
+research.  Also, they ask that you supply to Argonne National 
+Laboratory a copy of any published research referencing work based on 
+the software.
+
+Any entity desiring permission for further use must contact:
+
+J. Gleeson
+Industrial Technology Development Center Argonne National Laboratory
+Argonne IL 60439
+gleesonj@smtplink.eid.anl.gov
+(708) 252-6055
+
+******************************************************************** 
+DISCLAIMER
+
+THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+INFRINGE PRIVATELY OWNED RIGHTS.
+
+********************************************************************** 
+GOVERNMENT LICENSE
+
+The Government is granted for itself and others acting on its behalf a 
+paid-up, non-exclusive, irrevocable worldwide license in this computer 
+software to reproduce, prepare derivative works, and perform publicly 
+and display publicly.
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/INSTALL_gekco.txt
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/INSTALL_gekco.txt	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/INSTALL_gekco.txt	(revision 6168)
@@ -0,0 +1,48 @@
+Installation Instructions to pgapack software
+This documents is describes briefly the configuration options that have been used at JPL to configure pgapack on SGI, HPUX, Intel/beowulf, and MacOSX systems.
+
+#
+#Configurations for various IRIX machines
+#
+configure -arch irix -mpiinc /usr/include -mpilib /usr/lib32/libmpi.so -cc cc -n32 -f77 f77 -n32
+configure -arch irix -mpiinc /usr/include -mpilib /usr/lib32/libmpi.so -cc "cc -n32 -g" -f77 "f77 -n32 -g" -cflags "-g -n32"
+
+configure -arch irix -cc cc -n32 -f77 f77 -n32
+configure -arch irix -cc "cc -n32 -g" -f77 "f77 -n32 -g" 
+
+configure -arch powerchallenge -mpiinc /usr/include -mpilib /usr/lib64/libmpi.so -cc cc -64 -f77 f77 -64
+configure -arch powerchallenge -cc cc -64 -f77 f77 -64
+
+#
+#Configurations for various HPUX platforms
+#
+./configure -arch exemplar -mpilib /opt/mpi_1.4/lib/pa1.1/libmpi.a -mpiinc /opt/mpi_1.4/include
+./configure -arch hpux -mpilib /opt/mpi_1.4/lib/pa1.1/libmpi.a -mpiinc /opt/mpi_1.4/include -f77 mpif77 -cc mpicc
+./configure -arch hpux -mpilib /opt/mpi_1.4-wrp/lib/pa1.1/libmpi.a -mpiinc /opt/mpi_1.4-wrp/include -f77 mpif77 -cc mpicc
+
+
+# Note for compilation on Linux
+# might have to edit configure file where a FORTRANUNDERSCORE is explicitly defined
+# Configurations for Linux for various mpi installations on beowulf clusters
+
+./configure -arch linux -mpiinc /home/packages/mpich/include -mpilib /home/packages/mpich/build/LINUX/ch_p4/lib/libmpich.a
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/fujitsu/lib/liblmpi.a -mpiinc /home/packages/mpich-1.2.0/fujitsu/include -f77 mpif77 -cc mpicc
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/fujitsu/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.0/fujitsu/include -f77 mpif77 -cc mpicc
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.0/absoft/include -f77 mpif77 -cc mpicc
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.0/absoft/include -f77 mpif77 -cc mpicc -cflags "-pedantic-errors -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations -Wreturn-type -Wstrict-prototypes -Wswitch -pedantic -Wuninitialized "
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.0/absoft/include -f77 /home/packages/mpich-1.2.0/absoft/bin//mpif77 -cc /home/packages/mpich-1.2.0/absoft/bin/mpicc -cflags "-pedantic-errors -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations -Wreturn-type -Wstrict-prototypes -Wswitch -pedantic -Wuninitialized " -fflags "-free"
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.5/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.5/absoft/include -f77 /home/packages/mpich-1.2.5/absoft/bin//mpif77 -cc /home/packages/mpich-1.2.5/absoft/bin/mpicc -cflags "-pedantic-errors -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations -Wreturn-type -Wstrict-prototypes -Wswitch -pedantic -Wuninitialized " -fflags "-free"
+
+#configuration for Darwin on OS X 
+./configure -arch darwin
+./configure -arch darwin -mpilib /usr/local/bin/MPI/mpich-1.2.4/absoft/lib/libmpich.a -mpiinc /usr/local/bin/MPI/mpich-1.2.4/absoft/include -f77 /usr/local/bin/MPI/mpich-1.2.4/absoft/bin/mpif77 -cc /usr/local/bin/MPI/mpich-1.2.4/absoft/bin/mpicc
+./configure -arch darwin -mpilib /Applications/MPI/Build/lib/libmpich.a -mpiinc /Applications/MPI/Build/include -f77 /Applications/MPI/Build/bin/mpif77 -cc /Applications/MPI/Build/bin/mpicc
+
+
+./configure -arch linux -mpilib /opt/mpich-1.2.6/p4-gcc/lib/libmpich.a -mpiinc /opt/mpich-1.2.6/p4-gcc/include -f77 mpif77 -cc mpicc
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/Makefile.in	(revision 6168)
@@ -0,0 +1,46 @@
+RM      = @RM@
+SHELL   = @SHELL@
+
+default:
+	@echo "Choices are:"
+	@echo "make install       (install the PGAPack distribution)"
+	@echo "make clean         (return to the state just after configure was run)"
+	@echo "make spotless      (keep ONLY *.a and include files)"
+
+install: 
+	@echo "Installing PGAPack . . ."
+	@cd source ; make
+	@echo "Installing Examples . . ."
+	@cd examples ; make
+	@echo "Installing Test program . . ."
+	@cd test ; make
+	@echo "Install successful."
+	@echo "	Please \"cd test\" and run the \"instverf\" program"
+	@echo "        to verify the correctness of your installation."
+
+clean:
+	@echo "Removing superfluous files . . ."
+	@$(RM) lib/*/*.o
+	@cd examples ; make clean
+	@cd test ; make clean
+
+spotless:
+	@echo "WARNING:  Removing docs, man, examples, and source directories"
+	@echo "          in 5 seconds!!"
+	@sleep 1
+	@echo " .. 4 .."
+	@sleep 1
+	@echo " .. 3 .."
+	@sleep 1
+	@echo " .. 2 .."
+	@sleep 1
+	@echo " .. 1 .."
+	@sleep 1
+	@echo " .. 0 .."
+	@echo " .. Removing everything except libraries and includes!!"
+	@sleep 1
+	@$(RM) -rf docs examples man source test util lib/*/*.o
+
+distribution:
+	@/home/pgapack/util/make_distribution	
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/README	(revision 6168)
@@ -0,0 +1,231 @@
+This is the top-level README for PGAPack V1.0
+
+Copyright
+=========
+See the file COPYRIGHT for Copyright and disclaimer information.
+
+Introduction
+============
+PGAPack is a general-purpose, data-structure-neutral, parallel genetic
+algorithm library being developed at Argonne National Laboratory.  
+Key features are:
+
+* Callable from Fortran or C.
+* Runs on uniprocessors, parallel computers, and workstation networks.
+* Binary-, integer-, real-, and character-valued native data types.
+* Object-oriented data structure neutral design. 
+* Parameterized population replacement.
+* Multiple choices for selection, crossover, and mutation operators.
+* Easy integration of hill-climbing heuristics. 
+* Easy-to-use interface for novice and application users.
+* Fully extensible to support custom operators and new data types.
+* Extensive debugging facilities.
+* A large set of example problems.
+
+
+Availability
+============
+PGAPack is freely available.  The complete distribution is available
+by anonymous ftp from from ftp.mcs.anl.gov in the file 
+pub/pgapack/pgapack.tar.Z.  The distribution contains all source code,
+installation instructions, users guide, and a collection of examples in C and
+Fortran. Additional information is available on the World Wide Web at
+http://www.mcs.anl.gov/pgapack.html.
+
+
+Computational Environment
+=========================
+PGAPack is written in ANSI C and uses the MPI message passing interface
+and should run on most uniprocessors, parallel computers, and workstation
+networks.  PGAPack has been tested on the workstations and parallel computers 
+specified by the ARCH_TYPE variable below.
+
+
+Documentation
+=============
+* The PGAPack users guide is in ./docs/user_guide.ps.
+* Man pages for PGAPack functions are in the ./man directory.
+* Installation instructions are in this README file and the users guide.
+* Example problems are in the ./examples directory.
+
+
+Installation Requirements
+=========================
+To compile you must have an ANSI C compiler that includes a full
+implementation of the Standard C library and related header files.  To build a
+*parallel* version of PGAPack you must provide an implementation of MPI
+(Message Passing Interface) for the parallel computer or workstation network
+you are running on.
+
+Most of our testing and development was done using MPICH, a freely available
+implementation of MPI.  MPICH runs on many parallel computers and
+workstation networks and is publicly available and free.  The complete
+distribution is available by anonymous ftp from ftp.mcs.anl.gov.  Take the
+file mpich.tar.Z from the directory pub/mpi.  Additional information about
+MPICH is avaliable on the World Wide Web at http://www.mcs.anl.gov/mpi.
+
+Installation Instructions
+=========================
+When installing PGAPack you make two choices: whether to build a sequential
+(the default) or parallel version, and whether to build a debug or optimized
+(the default) version.  In broad outline, the
+installation steps are as follows.
+
+1.  Make a directory to install PGAPack in (mkdir /usr/local/pga).
+2.  Change directories to the directory created in the last step
+    (cd /usr/local/pga).
+3.  Obtain the compressed tar file pgapack.tar.Z by anonymous ftp in
+    ftp.mcs.anl.gov from the directory pub/pgapack.
+4.  Uncompress the tar file (uncompress pgapack.tar.Z).
+5.  Untar the uncompressed tar file (tar xvf ./pgapack.tar).
+6.  Run configure to configure the makefiles (configure -arch ARCH_TYPE)
+    where ARCH_TYPE is one of
+
+    sun4           for Sun SparcStations workstations,
+    next           for NeXT workstations,
+    rs600          for IBM RS6000 workstations,
+    irix           for Silicon Graphics workstations,
+    hpux           for Hewlett Packard workstations,
+    alpha          for DEC Alpha workstations,
+    linux          for machines running Linux,
+    freebsd        for machines running FreeBSD,
+    generic        for generic 32-bit machines, 
+    powerchallenge for the Silicon Graphics Power Challenge Array,
+    challenge      for the Silicon Graphics Challenge,
+    t3d            for the Cray T3D,
+    sp2            for the IBM SP2,
+    paragon        for the Intel Paragon, or
+    exemplar       for the Convex  Exemplar.
+
+    The full configure options are configure -arch ARCH_TYPE [-cc CC] 
+    [-cflags CFLAGS] [-f77 FC] [-fflags FFLAGS] [-debug]
+    [-mpiinc MPI_INCLUDE_DIRECTORY] [-mpilib MPI_LIBRARY]  [-help]
+
+    where all parameters except -arch are optional and do the following:
+
+    [-cc]:       The name of the ANSI C compiler, cc by default.
+    [-cflags]:   Options passed to the C compiler.
+    [-f77]:      The name of the Fortran 77 compiler, f77 by default.
+                 (The Fortran compiler is used only to compile the Fortran
+                 examples in the [./examples/] directory.)
+    [-fflags]:   Options passed to the Fortran compiler.
+    [-debug]:    If specified, enables the debugging features
+                 and compiles the source code with the -g flag.
+    [-mpiinc]:   The *directory* where MPI include files are located.
+    [-mpilib]:   The *full path* to the MPI library.  
+
+    If the [-mpilib] and [-mpiinc] options are specified, a parallel version 
+    of PGAPack will be built.  If these flags are not specified a sequential
+    version of PGAPack will be built.
+
+7.  Execute the makefile (make install).
+8.  Add PGAPack's man pages to your man page path.
+    (setenv MANPATH "$MANPATH"":/home/pgapack/man")
+9.  Execute a simple test problem
+    
+    Sequential version
+    ------------------
+    C:        /usr/local/pga/examples/c/maxbit
+    Fortran:  /usr/local/pga/examples/fortran/maxbit
+
+    Parallel version
+    ------------------
+    C:        mpirun -np 4 /usr/local/pga/examples/c/maxbit
+    Fortran:  mpirun -np 4 /usr/local/pga/examples/fortran/maxbit
+
+    If a parallel version of PGAPack was used, the actual commands to execute 
+    a parallel program depend on the particular MPI implementation and
+    parallel computer.  If the MPICH implementation was used the "mpirun"
+    command can be used to execute a parallel program on most systems.
+
+
+Example Installation
+====================
+Assuming you have the compressed tar file, pgapack.tar.Z, containing the
+distribution in /home/username.  To build a sequential version of PGAPack
+containing debug features for a Sun SparcStation in /usr/local/pga and run a
+test example, type:
+
+    uncompress /home/username/pgapack.tar.Z
+    mkdir /usr/local/pga
+    cd /usr/local/pga
+    tar xvf /home/username/pgapack.tar
+    configure -arch sun4 -debug
+    make install
+    /usr/local/pga/examples/c/maxbit
+
+To build a parallel version of PGAPack for an IBM SP parallel computer using
+an MPI implementation with include files in /usr/local/mpi/include and library
+in /usr/local/mpi/lib, and run a test example, type:
+
+   uncompress /home/username/pgapack.tar.Z
+   mkdir /usr/local/pga
+   cd /usr/local/pga
+   tar xvf /home/username/pgapack.tar
+   configure -arch rs6000 -mpiinc /usr/local/mpi/include \
+             -mpilib /usr/local/mpi/lib/libmpi.a
+   make install
+   mpirun -np 4 /usr/local/pga/examples/c/maxbit
+
+
+PGAPack on PCs 
+===================
+PGAPack has not been ported to MS-DOS, Windows 3.1, Windows 95, or Apple OS.
+As mentioned earlier, however, PGAPack is written in ANSI standard C and
+should compile in these environments.  Be aware, however, that PGAPack's
+random number generator, PGARandom01, assumes certain machine characteristics
+for ints and floats that may not correspond with what your PC and/or compiler
+support, resulting in erroneous values.
+
+
+Structure of the Distribution Directory
+=======================================
+CHANGES:      Changes new to this release of PGAPack.
+COPYRIGHT:    Copyright and disclaimer information.
+README:       This file.
+configure.in: The ``source code'' for the configure script.
+configure:    Unix shell script to configure Makefile.in for a specific
+              architecture.
+Makefile.in:  Prototype that is configured into ``Makefile'' by configure.
+docs:         Directory containing documentation.
+examples:     A directory containing C and Fortran examples.
+include:      The PGAPack include directory.
+lib:          The directory the library will be installed in.
+man:          The directory containing the PGAPack man pages.
+source:       The source code for the PGAPack system.
+test:         A directory containing programs to verify the installation.
+
+
+Email Addresses
+===============
+To join the PGAPack mailing list to receive announcements of new versions,
+enhancements, and bug fixes, send electronic mail to pgapack@mcs.anl.gov.  Bug
+reports should be sent to pgapack-bugs@mcs.anl.gov.  The World Wide Web page
+for PGAPack is http://www.mcs.anl.gov/pgapack.html and contains up-to-date
+news and a list of outstanding bug reports.
+
+
+When reporting a bug please include as much information and documentation as
+possible.  Helpful information would include PGAPack version number, MPI
+implementation and version used (if any), configuration options, type of
+computer system, problem description and error message output.  It is helpful
+if you put a PGAPrintContextVariable call before and after the PGASetUp call.
+Additionally, if possible, build a debug version of PGAPack and send
+``high-level'' output from running your program with the trace facility
+enabled.
+
+
+Contributions
+=============
+PGAPack was written to be extensible in two ways: adding new operators that
+work with existing data types, and defining new data types.  Enhancements of
+either type that you wish to share are welcome for possible inclusion in
+future versions of PGAPack.
+
+
+Acknowledgment
+==============
+Users of PGAPack are asked to acknowledge its use in any document referencing
+work based on the program, such as published research.  Also, please supply
+to us a copy of any published research referencing work based on the software.
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/config.status
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/config.status	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/config.status	(revision 6168)
@@ -0,0 +1,111 @@
+#!/bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host hamlet.rcac.purdue.edu:
+#
+# ./configure -arch linux -mpilib /opt/mpich-1.2.6/p4-gcc/lib/libmpich.a -mpiinc /opt/mpich-1.2.6/p4-gcc/include -f77 mpif77 -cc mpicc
+
+for arg
+do
+  case "$arg" in
+    -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo running ${CONFIG_SHELL-/bin/sh} ./configure -arch linux -mpilib /opt/mpich-1.2.6/p4-gcc/lib/libmpich.a -mpiinc /opt/mpich-1.2.6/p4-gcc/include -f77 mpif77 -cc mpicc
+    exec ${CONFIG_SHELL-/bin/sh} ./configure -arch linux -mpilib /opt/mpich-1.2.6/p4-gcc/lib/libmpich.a -mpiinc /opt/mpich-1.2.6/p4-gcc/include -f77 mpif77 -cc mpicc ;;
+    *) echo "Usage: config.status --recheck" 2>&1; exit 1 ;;
+  esac
+done
+
+trap 'rm -f Makefile source/Makefile test/Makefile test/Makefile 	  examples/Makefile examples/c/Makefile examples/fortran/Makefile 	  examples/mgh/Makefile; exit 1' 1 3 15
+RANLIB='ranlib'
+CC='mpicc'
+FC='mpif77'
+CFLAGS='-O '
+FFLAGS='-w'
+CPPFLAGS='-I/home/nano/u86/gekco/DEVELOP_GA/pgapack/include -I/opt/mpich-1.2.6/p4-gcc/include -Dlinux -DWL=32 -DOPTIMIZE '
+FORTWRAP='$(PGA_LIB_DIR)/f2c.o: f2c.c $(HEADERS)\
+	$(COMPILE.c) f2c.c'
+HEADERS='/home/nano/u86/gekco/DEVELOP_GA/pgapack/include/pgapack.h'
+LDFLAGS='-s  -L/home/nano/u86/gekco/DEVELOP_GA/pgapack/lib/linux  -lpgaO  /opt/mpich-1.2.6/p4-gcc/lib/libmpich.a -lm'
+PARALLEL='1'
+PGA_LIB_DIR='../lib/linux'
+PGA_LIB='pgaO'
+OBJS='$(PGA_LIB_DIR)/binary.o        \\\
+      $(PGA_LIB_DIR)/char.o          \\\
+      $(PGA_LIB_DIR)/cmdline.o       \\\
+      $(PGA_LIB_DIR)/create.o        \\\
+      $(PGA_LIB_DIR)/cross.o         \\\
+      $(PGA_LIB_DIR)/debug.o         \\\
+      $(PGA_LIB_DIR)/duplcate.o      \\\
+      $(PGA_LIB_DIR)/evaluate.o      \\\
+      $(PGA_LIB_DIR)/fitness.o       \\\
+      $(PGA_LIB_DIR)/hamming.o       \\\
+      $(PGA_LIB_DIR)/heap.o          \\\
+      $(PGA_LIB_DIR)/integer.o       \\\
+      $(PGA_LIB_DIR)/mutation.o      \\\
+      $(PGA_LIB_DIR)/parallel.o      \\\
+      $(PGA_LIB_DIR)/pga.o           \\\
+      $(PGA_LIB_DIR)/pop.o           \\\
+      $(PGA_LIB_DIR)/random.o        \\\
+      $(PGA_LIB_DIR)/real.o          \\\
+      $(PGA_LIB_DIR)/report.o        \\\
+      $(PGA_LIB_DIR)/restart.o       \\\
+      $(PGA_LIB_DIR)/select.o        \\\
+      $(PGA_LIB_DIR)/stop.o          \\\
+      $(PGA_LIB_DIR)/system.o        \\\
+      $(PGA_LIB_DIR)/user.o          \\\
+      $(PGA_LIB_DIR)/utility.o $(PGA_LIB_DIR)/f2c.o'
+MPICOMP=''
+RM='/bin/rm -f'
+SHELL='/bin/sh'
+LIBS='-lpgaO  /opt/mpich-1.2.6/p4-gcc/lib/libmpich.a -lm'
+srcdir='.'
+DEFS=''
+prefix=''
+exec_prefix=''
+prsub=''
+extrasub=''
+
+top_srcdir=$srcdir
+
+CONFIG_FILES=${CONFIG_FILES-"Makefile source/Makefile test/Makefile test/Makefile \
+	  examples/Makefile examples/c/Makefile examples/fortran/Makefile \
+	  examples/mgh/Makefile"}
+for file in .. ${CONFIG_FILES}; do if test "x$file" != x..; then
+  srcdir=$top_srcdir
+  # Remove last slash and all that follows it.  Not all systems have dirname.
+  dir=`echo $file|sed 's%/[^/][^/]*$%%'`
+  if test "$dir" != "$file"; then
+    test "$top_srcdir" != . && srcdir=$top_srcdir/$dir
+    test ! -d $dir && mkdir $dir
+  fi
+  echo creating $file
+  rm -f $file
+  echo "# Generated automatically from `echo $file|sed 's|.*/||'`.in by configure." > $file
+  sed -e "
+$prsub
+$extrasub
+s%@RANLIB@%$RANLIB%g
+s%@CC@%$CC%g
+s%@FC@%$FC%g
+s%@CFLAGS@%$CFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@FORTWRAP@%$FORTWRAP%g
+s%@HEADERS@%$HEADERS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@PARALLEL@%$PARALLEL%g
+s%@PGA_LIB_DIR@%$PGA_LIB_DIR%g
+s%@PGA_LIB@%$PGA_LIB%g
+s%@OBJS@%$OBJS%g
+s%@MPICOMP@%$MPICOMP%g
+s%@RM@%$RM%g
+s%@SHELL@%$SHELL%g
+s%@LIBS@%$LIBS%g
+s%@srcdir@%$srcdir%g
+s%@DEFS@%$DEFS%
+" $top_srcdir/${file}.in >> $file
+fi; done
+
+
+exit 0
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/config_gekco
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/config_gekco	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/config_gekco	(revision 6168)
@@ -0,0 +1,47 @@
+#
+#Configurations for various IRIX machines
+#
+configure -arch irix -mpiinc /usr/include -mpilib /usr/lib32/libmpi.so -cc cc -n32 -f77 f77 -n32
+configure -arch irix -mpiinc /usr/include -mpilib /usr/lib32/libmpi.so -cc "cc -n32 -g" -f77 "f77 -n32 -g" -cflags "-g -n32"
+
+configure -arch irix -cc cc -n32 -f77 f77 -n32
+configure -arch irix -cc "cc -n32 -g" -f77 "f77 -n32 -g" 
+
+configure -arch powerchallenge -mpiinc /usr/include -mpilib /usr/lib64/libmpi.so -cc cc -64 -f77 f77 -64
+configure -arch powerchallenge -cc cc -64 -f77 f77 -64
+
+#
+#Configurations for various HPUX platforms
+#
+./configure -arch exemplar -mpilib /opt/mpi_1.4/lib/pa1.1/libmpi.a -mpiinc /opt/mpi_1.4/include
+./configure -arch hpux -mpilib /opt/mpi_1.4/lib/pa1.1/libmpi.a -mpiinc /opt/mpi_1.4/include -f77 mpif77 -cc mpicc
+./configure -arch hpux -mpilib /opt/mpi_1.4-wrp/lib/pa1.1/libmpi.a -mpiinc /opt/mpi_1.4-wrp/include -f77 mpif77 -cc mpicc
+
+
+# Note for compilation on Linux
+# might have to edit configure file where a FORTRANUNDERSCORE is explicitly defined
+# Configurations for Linux for various mpi installations on beowulf clusters
+
+./configure -arch linux -mpiinc /home/packages/mpich/include -mpilib /home/packages/mpich/build/LINUX/ch_p4/lib/libmpich.a
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/fujitsu/lib/liblmpi.a -mpiinc /home/packages/mpich-1.2.0/fujitsu/include -f77 mpif77 -cc mpicc
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/fujitsu/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.0/fujitsu/include -f77 mpif77 -cc mpicc
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.0/absoft/include -f77 mpif77 -cc mpicc
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.0/absoft/include -f77 mpif77 -cc mpicc -cflags "-pedantic-errors -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations -Wreturn-type -Wstrict-prototypes -Wswitch -pedantic -Wuninitialized "
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.0/absoft/include -f77 /home/packages/mpich-1.2.0/absoft/bin//mpif77 -cc /home/packages/mpich-1.2.0/absoft/bin/mpicc -cflags "-pedantic-errors -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations -Wreturn-type -Wstrict-prototypes -Wswitch -pedantic -Wuninitialized " 
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.0/absoft/include -f77 /home/packages/mpich-1.2.0/absoft/bin//mpif77 -cc /home/packages/mpich-1.2.0/absoft/bin/mpicc -cflags "-pedantic-errors -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations -Wreturn-type -Wstrict-prototypes -Wswitch -pedantic -Wuninitialized " -fflags "-free"
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.0/absoft/include -f77 /home/packages/mpich-1.2.0/absoft/bin//mpif77 -cc /home/packages/mpich-1.2.0/absoft/bin/mpicc -cflags "-pedantic-errors -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations -Wreturn-type -Wstrict-prototypes -Wswitch -pedantic -Wuninitialized" 
+
+./configure -arch linux -mpilib /home/packages/mpich-1.2.0/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.0/absoft/include -f77 /home/packages/mpich-1.2.0/absoft/bin//mpif77 -cc /home/packages/mpich-1.2.0/absoft/bin/mpicc -cflags "-pedantic-errors -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations -Wreturn-type -Wstrict-prototypes -Wswitch -pedantic -Wuninitialized" 
+./configure -arch linux -mpilib /home/packages/mpich-1.2.5/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.5/absoft/include -f77 /home/packages/mpich-1.2.5/absoft/bin//mpif77 -cc /home/packages/mpich-1.2.5/absoft/bin/mpicc -cflags "-pedantic-errors -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations -Wreturn-type -Wstrict-prototypes -Wswitch -pedantic -Wuninitialized" 
+# Note for compilation on Linux
+# might have to edit configure file where a FORTRANUNDERSCORE is explicitly defined
+
+#configuration for Darwin on OS X 
+./configure -arch darwin
+./configure -arch darwin -mpilib /usr/local/bin/MPI/mpich-1.2.4/absoft/lib/libmpich.a -mpiinc /usr/local/bin/MPI/mpich-1.2.4/absoft/include -f77 /usr/local/bin/MPI/mpich-1.2.4/absoft/bin/mpif77 -cc /usr/local/bin/MPI/mpich-1.2.4/absoft/bin/mpicc
+./configure -arch linux -mpilib /home/packages/mpich-1.2.4/absoft/lib/libmpich.a -mpiinc /home/packages/mpich-1.2.4/absoft/include -f77 /home/packages/mpich-1.2.4/absoft/bin/mpif77 -cc /home/packages/mpich-1.2.4/absoft/bin/mpicc
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/configure
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/configure	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/configure	(revision 6168)
@@ -0,0 +1,842 @@
+#!/bin/sh
+# This file is configure.
+#
+# Make all changes to configure.in, if at all possible.  After changing,
+# run "autoconf".  If autoconf is not installed, then make changes to
+# configure.
+#
+# Documentation on the autoconf program exists in GNU info file format.
+# To read this, run emacs and type C-h i.  Then press the down arrow
+# until you come to the line beginning "* Autoconf:".  Pressing enter on
+# this line will bring up the documentaition.
+#
+# Type "configure" (i.e., no arguments) or read below for usage information.
+#
+print_error() {
+    echo "$*" 2>&1 ;
+}
+
+print_usage()
+{
+cat <<.
+Usage: configure -arch ARCH_TYPE -cc CC -f77 FC -debug -help
+                 -cflags CFLAGS -fflags FFLAGS
+                 -mpiinc MPI_INC_DIR -mpilib MPI_LIB
+where
+   ARCH_TYPE    = the type of machine that PGAPack is to be configured for
+   CC           = the name of the ANSI C compiler
+   FC           = the name of the FORTRAN 77 compiler
+   CFLAGS       = C compiler flags
+   FFLAGS       = FORTRAN compiler flags
+   MPI_INC_DIR  = the MPI include directory
+   MPI_LIB      = the full path to the MPI library
+
+
+Known architectures are:
+
+Workstations
+	sun4		(SUN OS 4.x)
+	hpux		(HP UX)
+	irix    	(Silicon Graphics IRIX)
+	alpha		(DEC Alpha)
+	rs6000		(AIX for IBM RS6000)	
+	next		(NeXT 680x0)
+	freebsd		(PC clones running FreeBSD)
+	linux		(PC clones running LINUX)
+	darwin		(PPC running Mac OS X)
+	generic		(Generic 32-bit UNIX-like machine)
+
+MPP's
+	powerchallenge	(Silicon Graphics PowerChallenge)
+	challenge	(Silicon Graphics Challenge)
+	t3d		(Cray-T3D)
+	sp2		(IBM SP2)
+	paragon		(Intel Paragon)
+	exemplar	(Convex Exemplar)
+
+
+In the absence of the -f77 or -cc options, configure assumes the name of 
+a FORTRAN 77 or ANSI C compiler based on the architecture type.
+
+If the -debug flag is set, then PGAPack will be built for debugging.  This
+enables the extensive debugging options and datatype checks.
+
+If both -mpiinc and -mpilib are missing, PGAPack is built using a non-parallel
+"stub" library for all MPI calls.
+
+The -help flag causes this usage guide to be printed.
+
+Example 1:
+----------
+Configure and build for parallel operation on the sun4 architectue.  MPI is
+in /usr/local/mpi; the MPI library is /usr/local/mpi/lib/sun4/ch_p4/libmpi.a.
+
+  configure -arch sun4 -mpilib /usr/local/mpi/lib/sun4/ch_p4/libmpi.a \
+            -mpiinc /usr/local/mpi/include
+  make install
+
+Example 2:
+----------
+Configure and build a debug sequential library on the rs6000 architecture.
+
+  configure -arch rs6000 -debug
+  make install
+.
+}
+
+###############################################################################
+# This section initializes the variables that will be used throughout
+# the script.
+###############################################################################
+#!/bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf.
+# Copyright (C) 1991, 1992, 1993 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# Usage: configure [--srcdir=DIR] [--host=HOST] [--gas] [--nfp]
+#        [--prefix=PREFIX] [--exec-prefix=PREFIX] [--with-PACKAGE[=VALUE]]
+# Ignores all args except --srcdir, --prefix, --exec-prefix, and
+# --with-PACKAGE[=VALUE] unless this script has special code to handle it.
+
+for arg
+do
+  # Handle --exec-prefix with a space before the argument.
+  if test x$next_exec_prefix = xyes; then exec_prefix=$arg; next_exec_prefix=
+  # Handle --host with a space before the argument.
+  elif test x$next_host = xyes; then next_host=
+  # Handle --prefix with a space before the argument.
+  elif test x$next_prefix = xyes; then prefix=$arg; next_prefix=
+  # Handle --srcdir with a space before the argument.
+  elif test x$next_srcdir = xyes; then srcdir=$arg; next_srcdir=
+  else
+    case $arg in
+     # For backward compatibility, recognize -exec-prefix and --exec_prefix.
+     -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*)
+	exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+     -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- | --exec | --exe | --ex | --e)
+	next_exec_prefix=yes ;;
+
+     -gas | --gas | --ga | --g) ;;
+
+     -host=* | --host=* | --hos=* | --ho=* | --h=*) ;;
+     -host | --host | --hos | --ho | --h)
+	next_host=yes ;;
+
+     -nfp | --nfp | --nf) ;;
+
+     -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+	prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+     -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+	next_prefix=yes ;;
+
+     -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=* | --s=*)
+	srcdir=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+     -srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s)
+	next_srcdir=yes ;;
+
+     -with-* | --with-*)
+       package=`echo $arg|sed -e 's/-*with-//' -e 's/=.*//'`
+       # Reject names that aren't valid shell variable names.
+       if test -n "`echo $package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+         echo "configure: $package: invalid package name" >&2; exit 1
+       fi
+       package=`echo $package| sed 's/-/_/g'`
+       case "$arg" in
+         *=*) val="`echo $arg|sed 's/[^=]*=//'`" ;;
+         *) val=1 ;;
+       esac
+       eval "with_$package='$val'" ;;
+
+     -v | -verbose | --verbose | --verbos | --verbo | --verb | --ver | --ve | --v)
+       verbose=yes ;;
+
+     *) ;;
+    esac
+  fi
+done
+
+trap 'rm -fr conftest* confdefs* core; exit 1' 1 3 15
+trap 'rm -f confdefs*' 0
+
+# NLS nuisances.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+if test "${LC_ALL+set}" = 'set' ; then LC_ALL=C; export LC_ALL; fi
+if test "${LANG+set}"   = 'set' ; then LANG=C;   export LANG;   fi
+
+rm -f conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+compile='${CC-cc} $CFLAGS conftest.c -o conftest $LIBS >/dev/null 2>&1'
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+unique_file=source/pga.c
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  srcdirdefaulted=yes
+  # Try the directory containing this script, then `..'.
+  prog=$0
+  confdir=`echo $prog|sed 's%/[^/][^/]*$%%'`
+  test "X$confdir" = "X$prog" && confdir=.
+  srcdir=$confdir
+  if test ! -r $srcdir/$unique_file; then
+    srcdir=..
+  fi
+fi
+if test ! -r $srcdir/$unique_file; then
+  if test x$srcdirdefaulted = xyes; then
+    echo "configure: Can not find sources in \`${confdir}' or \`..'." 1>&2
+  else
+    echo "configure: Can not find sources in \`${srcdir}'." 1>&2
+  fi
+  exit 1
+fi
+# Preserve a srcdir of `.' to avoid automounter screwups with pwd.
+# But we can't avoid them for `..', to make subdirectories work.
+case $srcdir in
+  .|/*|~*) ;;
+  *) srcdir=`cd $srcdir; pwd` ;; # Make relative path absolute.
+esac
+
+
+# Save the original args to write them into config.status later.
+configure_args="$*"
+
+ARCH=""                         # architecture type
+PARALLEL=0                      # parallel libray, or use stub routines?
+OPTIMIZE=1                      # optimized?
+CPPFLAGS=""                     # flags to send to the C preprocessor
+LDFLAGS=""                      # link flags
+CFLAGS=""                       # flags to send to the C compiler
+FFLAGS=""                       # flags to send to the FORTRAN compiler
+PGA_DIR="`pwd`"                 # the root of the pgapack tree
+PGA_DIR=`echo $PGA_DIR | sed "s=tmp_mnt/=="`    # get rid of 'tmp_mnt/'
+HEADERS="$PGA_DIR/include/pgapack.h" # headers upon which pgapack depends
+INCLUDES="-I$PGA_DIR/include"   # directories where to search for include files
+LIB_DIRS=""                     # directories where to search for libraries
+LIBS=""                         # libraries with which to link
+MPI_INC_DIR=""
+MPI_LIB=""
+SHELL="/usr/bin/sh"
+RM="/bin/rm -f"                 # command to force removal of files
+
+OBJS='$(PGA_LIB_DIR)/binary.o        \\\
+      $(PGA_LIB_DIR)/char.o          \\\
+      $(PGA_LIB_DIR)/cmdline.o       \\\
+      $(PGA_LIB_DIR)/create.o        \\\
+      $(PGA_LIB_DIR)/cross.o         \\\
+      $(PGA_LIB_DIR)/debug.o         \\\
+      $(PGA_LIB_DIR)/duplcate.o      \\\
+      $(PGA_LIB_DIR)/evaluate.o      \\\
+      $(PGA_LIB_DIR)/fitness.o       \\\
+      $(PGA_LIB_DIR)/hamming.o       \\\
+      $(PGA_LIB_DIR)/heap.o          \\\
+      $(PGA_LIB_DIR)/integer.o       \\\
+      $(PGA_LIB_DIR)/mutation.o      \\\
+      $(PGA_LIB_DIR)/parallel.o      \\\
+      $(PGA_LIB_DIR)/pga.o           \\\
+      $(PGA_LIB_DIR)/pop.o           \\\
+      $(PGA_LIB_DIR)/random.o        \\\
+      $(PGA_LIB_DIR)/real.o          \\\
+      $(PGA_LIB_DIR)/report.o        \\\
+      $(PGA_LIB_DIR)/restart.o       \\\
+      $(PGA_LIB_DIR)/select.o        \\\
+      $(PGA_LIB_DIR)/stop.o          \\\
+      $(PGA_LIB_DIR)/system.o        \\\
+      $(PGA_LIB_DIR)/user.o          \\\
+      $(PGA_LIB_DIR)/utility.o'      # these are pgapack's object files
+
+###############################################################################
+# This section parse the command line options. There a two types of options:
+# those that take arguments and those that don't.  Parsing the case where an
+# option takes an argument is a little tricky.  This is how it works.  Suppose
+# that the program comes upon "-cc".  Then we know that the next argument
+# will be the name of the C compiler.  Hence, we set the flag next_cc to be
+# equal to "yes".  The next time through the loop, it will be the case that
+# x$next_cc equal "xyes" because $next_cc expands to "yes".  Thus, we know that
+# this argument is the name of the compiler and we assign it to USR_CC.  Then
+# we set next_cc back to a null string.  This way on the next time through
+# the loop x$next_cc will equal just "x".  Since the shell initializes
+# variables to null strings, we do not have to initialize the "next_" family
+# of variables by hand.
+###############################################################################
+for arg
+do
+    if test x$next_arch = xyes
+        then
+            ARCH=$arg
+            next_arch=
+        elif test x$next_mpiinc = xyes
+            then
+                MPI_INC_DIR=$arg
+                next_mpiinc=
+        elif test x$next_mpilib = xyes
+            then
+                MPI_LIB=$arg
+                next_mpilib=
+        elif test x$next_f77 = xyes
+            then
+                USR_FC=$arg
+                next_f77=
+        elif test x$next_cc = xyes
+            then
+                USR_CC=$arg
+                next_cc=
+        elif test x$next_cflags = xyes
+            then
+                CFLAGS="$arg $CFLAGS"
+                next_cflags=
+        elif test x$next_fflags = xyes
+            then
+                FFLAGS="$arg $FFLAGS"
+                next_fflags=
+        else
+            case $arg in
+                -arch)
+                    next_arch=yes
+                    ;;
+                -f77)
+                    next_f77=yes
+                    ;;
+                -cc)
+                    next_cc=yes
+                    ;;
+                -mpiinc)
+                    next_mpiinc=yes
+                    PARALLEL=1
+                    ;;
+                -mpilib)
+                    next_mpilib=yes
+                    PARALLEL=1
+                    ;;
+                -debug)
+                    OPTIMIZE=0
+                    ;;
+                -cflags)
+                    next_cflags=yes
+                    ;;
+                -fflags)
+                    next_fflags=yes
+                    ;;
+                -help)
+                    print_usage >& 2
+                    exit 1
+                    ;;
+                *) 
+                    ;;
+            esac
+    fi
+done
+
+if test "$MPI_LIB" -a "$MPI_INC_DIR" ; then
+    if test ! -d "$MPI_INC_DIR" ; then
+        print_error "MPI_INC_DIR == $MPI_INC_DIR is not a valid directory!"
+        exit 1
+    fi
+    if test ! -f "$MPI_INC_DIR/mpi.h" ; then
+        print_error "Couldn't find $MPI_INC_DIR/mpi.h!"
+        exit 1
+    fi
+
+    if test ! -f "$MPI_LIB" ; then
+        print_error "MPI_LIB == $MPI_LIB is not a file!"
+        exit 1
+    fi
+
+    PARALLEL=1
+else
+    PARALLEL=0
+    CPPFLAGS="-DFAKE_MPI $CPPFLAGS"
+fi
+
+if test $OPTIMIZE -eq 1 ; then
+	CPPFLAGS="-DOPTIMIZE $CPPFLAGS"
+	CFLAGS="-O $CFLAGS"
+	FFLAGS="-O $FFLAGS"
+	PGA_LIB="pgaO"
+else
+	CFLAGS="-g $CFLAGS"
+	FFLAGS="-g $FFLAGS"
+	PGA_LIB="pgag"
+fi
+
+
+###############################################################################
+# This section sets the default values of certain variables based upon the
+# architecture type specified.  If no architecture was specified, the script
+# issues an error and aborts.
+###############################################################################
+if test -z "$ARCH"
+    then
+        print_error "You must specify the architecture with -arch <value>"
+        print_error "Valid architectures are the following:"	
+	print_error " Workstations      MPP's"
+	print_error "    sun4        powerchallenge"
+	print_error "    next        challenge"
+	print_error "    rs6000      t3d"
+	print_error "    freebsd     sp2"
+	print_error "    irix        paragon"
+	print_error "    linux       exemplar"
+	print_error "    hpux        darwin"
+	print_error "    alpha"
+	print_error "    generic"
+	print_error ""
+	print_error "For more information type configure -help."
+        exit 1
+fi
+
+case $ARCH in
+    sun4)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    next)
+        CC=cc
+        FC=
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    rs6000)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+        ;;
+    freebsd)
+        CC=cc
+        FC=f77
+	FFLAGS="-w"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    irix)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-mips4 -n32 -DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        FFLAGS="-mips4 -n32"
+        ;;
+    alpha)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=64 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    hpux)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    linux)
+	SHELL="/bin/sh"
+        CC=cc
+        FC=f77
+	FFLAGS="-w"
+	LDFLAGS="-s $LDFLAGS"
+#        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+        ;;
+    darwin)
+	SHELL="/bin/sh"
+        CC=cc
+        FC=f77
+	FFLAGS="-w"
+	LDFLAGS=" $LDFLAGS"
+#        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+        ;;
+    t3d)
+        CC=/mpp/bin/cc
+        FC=/mpp/bin/cf77
+        CFLAGS="-T cray-t3d"
+        FFLAGS="-C cray-t3d -dp"
+        CPPFLAGS="-DWL=64 -DFORTRANCAP $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    powerchallenge)
+        CC=cc
+        FC=f77
+	CFLAGS="-mips4 -fullwarn -64"
+        CPPFLAGS="-DWL=64 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    challenge)
+        CC=cc
+        FC=f77
+	CFLAGS="-mips2 -fullwarn -32"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    paragon)
+        CC=cc
+        FC=f77
+        CFLAGS="-nx $CFLAGS"
+        FFLAGS="-nx $FFLAGS"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    sp2)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+        ;;
+    exemplar)
+        CC=cc
+        FC=fort77
+	FFLAGS="-L/usr/lib -lU77 $FFLAGS"
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    *)
+	CC=cc
+	FC=f77
+	CPPFLAGS="-DWL=32 $CPPFLAGS"
+	print_error "WARNING:  Configuring for untested architecture.  Using"
+        print_error "          word size of 32 bits, cc and f77 as compilers."
+	print_error "          You might have trouble with Fortran programs"
+        print_error "          not linking correctly.  Check the manual on"
+        print_error "          the FORTRANUNDERSCORE #define."
+	;;
+esac
+
+###############################################################################
+# This section sets the variables that do not relate to parallel code.
+###############################################################################
+CPPFLAGS="-D$ARCH $CPPFLAGS"
+PGA_LIB_DIR="../lib/$ARCH"
+LIB_DIRS="-L$PGA_DIR/lib/$ARCH $LIB_DIRS"
+LIBS="-l$PGA_LIB $LIBS"
+
+#     Set output variable `RANLIB' to `ranlib' if `ranlib' is found,
+#     otherwise to `:' (do nothing).
+if test -z "$RANLIB"; then
+  # Extract the first word of `ranlib', so it can be a program name with args.
+  set dummy ranlib; word=$2
+  echo checking for $word
+  IFS="${IFS= 	}"; saveifs="$IFS"; IFS="${IFS}:"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/$word; then
+      RANLIB="ranlib"
+      break
+    fi
+  done
+  IFS="$saveifs"
+fi
+test -z "$RANLIB" && RANLIB=":"
+test -n "$RANLIB" && test -n "$verbose" && echo "	setting RANLIB to $RANLIB"
+
+
+#    "Determine a C compiler to use.  If `CC' is not already set in the
+#     environment, check for `gcc', and use `cc' if it's not found.  Set
+#     output variable `CC' to the name of the compiler found.
+#
+#    "If using the GNU C compiler, set shell variable `GCC' to `yes',
+#     empty otherwise.  If output variable `CFLAGS' was not already set,
+#     set it to `-g -O' for the GNU C compiler (`-O' on systems where
+#     GCC does not accept `-g'), or `-g' for other compilers."
+if test -n "$USR_CC"
+     then
+          CC=$USR_CC
+     else
+          if test -z "$CC"; then
+  # Extract the first word of `gcc', so it can be a program name with args.
+  set dummy gcc; word=$2
+  echo checking for $word
+  IFS="${IFS= 	}"; saveifs="$IFS"; IFS="${IFS}:"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/$word; then
+      CC="gcc"
+      break
+    fi
+  done
+  IFS="$saveifs"
+fi
+test -z "$CC" && CC="cc"
+test -n "$CC" && test -n "$verbose" && echo "	setting CC to $CC"
+
+# Find out if we are using GNU C, under whatever name.
+cat > conftest.c <<EOF
+#ifdef __GNUC__
+  yes
+#endif
+EOF
+${CC-cc} -E conftest.c > conftest.out 2>&1
+if egrep yes conftest.out >/dev/null 2>&1; then
+  GCC=1 # For later tests.
+fi
+rm -f conftest*
+
+fi
+
+#     Check for each program in the whitespace-separated list
+#     PROGS-TO-CHECK-FOR exists in `PATH'.  If it is found, set VARIABLE
+#     to the name of that program.  Otherwise, continue checking the
+#     next program in the list.  If none of the programs in the list are
+#     found, set VARIABLE to VALUE-IF-NOT-FOUND; if VALUE-IF-NOT-FOUND
+#     is not specified, the value of VARIABLE is not changed.
+if test -n "$USR_FC"
+     then
+          FC=$USR_FC
+     else
+          for p in f77 fortran xlf gf77 mpxlf if77
+do
+if test -z "$FC"; then
+  # Extract the first word of `$p', so it can be a program name with args.
+  set dummy $p; word=$2
+  echo checking for $word
+  IFS="${IFS= 	}"; saveifs="$IFS"; IFS="${IFS}:"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/$word; then
+      FC="$p"
+      break
+    fi
+  done
+  IFS="$saveifs"
+fi
+
+test -n "$FC" && test -n "$verbose" && echo "	setting FC to $FC"
+
+test -n "$FC" && break
+done
+
+fi
+
+# Originally had
+#                     OBJS="$OBJS $(PGA_LIB_DIR)/f2c.o"
+# However, freebsd bourne shell equates $(var) and `var`.  Hence, I had
+# to break the assignment up into two parts.  $FORTWRAP is a Makefile
+# dependency line defining how to compile f2c.c
+if test -n "$FC"
+    then
+	TEMP='$(PGA_LIB_DIR)/f2c.o'
+        OBJS="$OBJS $TEMP"
+        FORTWRAP='$(PGA_LIB_DIR)/f2c.o: f2c.c $(HEADERS)\
+	$(COMPILE.c) f2c.c'
+fi
+
+if test ! -d lib
+    then
+        mkdir lib
+fi
+
+if test ! -d lib/$ARCH
+    then
+        mkdir lib/$ARCH
+fi
+
+#  Set up symlinks for pgapackf.h to any directories with Fortran source
+rm -f ./examples/fortran/pgapackf.h ./examples/mgh/pgapackf.h ./test/pgapackf.h
+ln -s ../../include/pgapackf.h ./examples/fortran/pgapackf.h
+ln -s ../../include/pgapackf.h ./examples/mgh/pgapackf.h
+ln -s ../include/pgapackf.h    ./test/pgapackf.h
+
+#  Use the stub library.
+if test $PARALLEL -eq 0
+  then
+    rm -f ./include/mpi.h ./include/mpif.h ./examples/fortran/mpif.h ./examples/mgh/mpif.h ./test/mpif.h
+    ln -s fakempi_h include/mpi.h
+    ln -s fakempif_h include/mpif.h
+    ln -s ../../include/mpif.h ./examples/fortran/mpif.h
+    ln -s ../../include/mpif.h ./examples/mgh/mpif.h
+    ln -s ../include/mpif.h ./test/mpif.h
+    TEMP='$(PGA_LIB_DIR)/mpi_stub.o'
+    OBJS="$OBJS $TEMP"
+    MPICOMP='$(PGA_LIB_DIR)/mpi_stub.o: mpi_stub.c $(HEADERS)\
+	$(COMPILE.c) mpi_stub.c'
+#  The tab above is IMPORTANT!  Needed for make!
+else
+    rm -f ./include/mpi.h ./include/mpif.h ./examples/fortran/mpif.h ./examples/mgh/mpif.h ./test/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./examples/fortran/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./examples/mgh/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./test/mpif.h
+    LIBS="$LIBS $MPI_LIB"
+    INCLUDES="$INCLUDES -I$MPI_INC_DIR"
+fi
+
+LIBS="$LIBS -lm"
+CPPFLAGS="$INCLUDES $CPPFLAGS"
+LDFLAGS="$LDFLAGS $LIB_DIRS $LIBS"
+###############################################################################
+# This section exports the variables that have previously been set.
+# Configure creates the Makefiles listed on the last line from the
+# Makefile.in in each directory.  It does this by substituting the value
+# of $VAR for every occurent of @VAR@ in the Makefile.in.  For
+# example, if the characters @CC@ occur any place in a Makefile.in, they
+# will be replaced with the value that $CC has when ac_subst(CC) is
+# called.
+###############################################################################
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Set default prefixes.
+if test -n "$prefix"; then
+  test -z "$exec_prefix" && exec_prefix='${prefix}'
+  prsub="s%^prefix\\([ 	]*\\)=\\([ 	]*\\).*$%prefix\\1=\\2$prefix%"
+fi
+if test -n "$exec_prefix"; then
+  prsub="$prsub
+s%^exec_prefix\\([ 	]*\\)=\\([ 	]*\\).*$%exec_prefix\\1=\\2$exec_prefix%"
+fi
+# Quote sed substitution magic chars in DEFS.
+cat >conftest.def <<EOF
+$DEFS
+EOF
+escape_ampersand_and_backslash='s%[&\\]%\\&%g'
+DEFS=`sed "$escape_ampersand_and_backslash" <conftest.def`
+rm -f conftest.def
+# Substitute for predefined variables.
+
+trap 'rm -f config.status; exit 1' 1 3 15
+echo creating config.status
+rm -f config.status
+cat > config.status <<EOF
+#!/bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $configure_args
+
+for arg
+do
+  case "\$arg" in
+    -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo running \${CONFIG_SHELL-/bin/sh} $0 $configure_args
+    exec \${CONFIG_SHELL-/bin/sh} $0 $configure_args ;;
+    *) echo "Usage: config.status --recheck" 2>&1; exit 1 ;;
+  esac
+done
+
+trap 'rm -f Makefile source/Makefile test/Makefile test/Makefile \
+	  examples/Makefile examples/c/Makefile examples/fortran/Makefile \
+	  examples/mgh/Makefile; exit 1' 1 3 15
+RANLIB='$RANLIB'
+CC='$CC'
+FC='$FC'
+CFLAGS='$CFLAGS'
+FFLAGS='$FFLAGS'
+CPPFLAGS='$CPPFLAGS'
+FORTWRAP='$FORTWRAP'
+HEADERS='$HEADERS'
+LDFLAGS='$LDFLAGS'
+PARALLEL='$PARALLEL'
+PGA_LIB_DIR='$PGA_LIB_DIR'
+PGA_LIB='$PGA_LIB'
+OBJS='$OBJS'
+MPICOMP='$MPICOMP'
+RM='$RM'
+SHELL='$SHELL'
+LIBS='$LIBS'
+srcdir='$srcdir'
+DEFS='$DEFS'
+prefix='$prefix'
+exec_prefix='$exec_prefix'
+prsub='$prsub'
+extrasub='$extrasub'
+EOF
+cat >> config.status <<\EOF
+
+top_srcdir=$srcdir
+
+CONFIG_FILES=${CONFIG_FILES-"Makefile source/Makefile test/Makefile test/Makefile \
+	  examples/Makefile examples/c/Makefile examples/fortran/Makefile \
+	  examples/mgh/Makefile"}
+for file in .. ${CONFIG_FILES}; do if test "x$file" != x..; then
+  srcdir=$top_srcdir
+  # Remove last slash and all that follows it.  Not all systems have dirname.
+  dir=`echo $file|sed 's%/[^/][^/]*$%%'`
+  if test "$dir" != "$file"; then
+    test "$top_srcdir" != . && srcdir=$top_srcdir/$dir
+    test ! -d $dir && mkdir $dir
+  fi
+  echo creating $file
+  rm -f $file
+  echo "# Generated automatically from `echo $file|sed 's|.*/||'`.in by configure." > $file
+  sed -e "
+$prsub
+$extrasub
+s%@RANLIB@%$RANLIB%g
+s%@CC@%$CC%g
+s%@FC@%$FC%g
+s%@CFLAGS@%$CFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@FORTWRAP@%$FORTWRAP%g
+s%@HEADERS@%$HEADERS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@PARALLEL@%$PARALLEL%g
+s%@PGA_LIB_DIR@%$PGA_LIB_DIR%g
+s%@PGA_LIB@%$PGA_LIB%g
+s%@OBJS@%$OBJS%g
+s%@MPICOMP@%$MPICOMP%g
+s%@RM@%$RM%g
+s%@SHELL@%$SHELL%g
+s%@LIBS@%$LIBS%g
+s%@srcdir@%$srcdir%g
+s%@DEFS@%$DEFS%
+" $top_srcdir/${file}.in >> $file
+fi; done
+
+
+exit 0
+EOF
+chmod +x config.status
+${CONFIG_SHELL-/bin/sh} config.status
+
+
+if test ! -f ".pgapack" ; then
+  if test $PARALLEL -eq 1 ; then
+      OPERATION="parallel"
+      ECHO_LIBS="$MPI_LIB"
+  else
+      OPERATION="sequential"
+      ECHO_LIBS="stub routines in mpi_stub.c"
+  fi
+  if test $OPTIMIZE -eq 1 ; then
+      OPERATION="optimized $OPERATION"
+  else
+      OPERATION="debug $OPERATION"
+  fi
+  echo " "
+  echo "PGAPack has been configured for $OPERATION operation on"
+  echo "the $ARCH architecture, using $ECHO_LIBS."
+  echo " "
+  echo "**********************************************************************"
+  echo "*  Please register your copy of PGAPack by sending a mail message    *"
+  echo "*  to pgapack@mcs.anl.gov.  This will allow us to notify you of bug  *"
+  echo "*  fixes, enhancements, and new releases. The PGAPack homepage is at *"
+  echo "*  http://www.mcs.anl.gov/pgapack.html.                              *"
+  echo "**********************************************************************"
+  echo " "
+  echo "Type \"make install\" to install PGAPack."
+  echo " "
+fi
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/configure.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/configure.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/configure.in	(revision 6168)
@@ -0,0 +1,523 @@
+#!/bin/sh
+# This file is configure.
+#
+# Make all changes to configure.in, if at all possible.  After changing,
+# run "autoconf".  If autoconf is not installed, then make changes to
+# configure.
+#
+# Documentation on the autoconf program exists in GNU info file format.
+# To read this, run emacs and type C-h i.  Then press the down arrow
+# until you come to the line beginning "* Autoconf:".  Pressing enter on
+# this line will bring up the documentaition.
+#
+# Type "configure" (i.e., no arguments) or read below for usage information.
+#
+print_error() {
+    echo "$*" 2>&1 ;
+}
+
+print_usage()
+{
+cat <<.
+Usage: configure -arch ARCH_TYPE [-cc CC] [-f77 FC] [-debug] [-help]
+                 [-cflags CFLAGS] [-fflags FFLAGS]
+                 [-mpiinc MPI_INC_DIR -mpilib MPI_LIB]
+where
+   ARCH_TYPE    = the type of machine that PGAPack is to be configured for
+   CC           = the name of the ANSI C compiler
+   FC           = the name of the FORTRAN 77 compiler
+   CFLAGS       = C compiler flags
+   FFLAGS       = FORTRAN compiler flags
+   MPI_INC_DIR  = the MPI include directory
+   MPI_LIB      = the full path to the MPI library
+
+
+Known architectures are:
+
+Workstations
+	sun4		(SUN OS 4.x)
+	hpux		(HP UX)
+	irix    	(Silicon Graphics IRIX)
+	alpha		(DEC Alpha)
+	rs6000		(AIX for IBM RS6000)	
+	next		(NeXT 680x0)
+	freebsd		(PC clones running FreeBSD)
+	linux		(PC clones running LINUX)
+	generic		(Generic 32-bit UNIX-like machine)
+
+MPP's
+	powerchallenge	(Silicon Graphics PowerChallenge)
+	challenge	(Silicon Graphics Challenge)
+	t3d		(Cray-T3D)
+	sp2		(IBM SP2)
+	paragon		(Intel Paragon)
+	exemplar	(Convex Exemplar)
+
+
+In the absence of the -f77 or -cc options, configure assumes the name of 
+a FORTRAN 77 or ANSI C compiler based on the architecture type.
+
+If the -debug flag is set, then PGAPack will be built for debugging.  This
+enables the extensive debugging options and datatype checks.
+
+If both -mpiinc and -mpilib are missing, PGAPack is built using a non-parallel
+"stub" library for all MPI calls.
+
+The -help flag causes this usage guide to be printed.
+
+Example 1:
+----------
+Configure and build for parallel operation on the sun4 architectue.  MPI is
+in /usr/local/mpi; the MPI library is /usr/local/mpi/lib/sun4/ch_p4/libmpi.a.
+
+  configure -arch sun4 -mpilib /usr/local/mpi/lib/sun4/ch_p4/libmpi.a \
+            -mpiinc /usr/local/mpi/include
+  make install
+
+Example 2:
+----------
+Configure and build a debug sequential library on the rs6000 architecture.
+
+  configure -arch rs6000 -debug
+  make install
+.
+}
+
+###############################################################################
+# This section initializes the variables that will be used throughout
+# the script.
+###############################################################################
+AC_INIT(source/pga.c)
+ARCH=""                         # architecture type
+PARALLEL=0                      # parallel libray, or use stub routines?
+OPTIMIZE=1                      # optimized?
+CPPFLAGS=""                     # flags to send to the C preprocessor
+LDFLAGS=""                      # link flags
+CFLAGS=""                       # flags to send to the C compiler
+FFLAGS=""                       # flags to send to the FORTRAN compiler
+PGA_DIR="`pwd`"                 # the root of the pgapack tree
+PGA_DIR=`echo $PGA_DIR | sed "s=tmp_mnt/=="`    # get rid of 'tmp_mnt/'
+HEADERS="$PGA_DIR/include/pgapack.h" # headers upon which pgapack depends
+INCLUDES="-I$PGA_DIR/include"   # directories where to search for include files
+LIB_DIRS=""                     # directories where to search for libraries
+LIBS=""                         # libraries with which to link
+MPI_INC_DIR=""
+MPI_LIB=""
+SHELL="/usr/bin/sh"
+RM="/bin/rm -f"                 # command to force removal of files
+
+OBJS='$(PGA_LIB_DIR)/binary.o        \\\
+      $(PGA_LIB_DIR)/char.o          \\\
+      $(PGA_LIB_DIR)/cmdline.o       \\\
+      $(PGA_LIB_DIR)/create.o        \\\
+      $(PGA_LIB_DIR)/cross.o         \\\
+      $(PGA_LIB_DIR)/debug.o         \\\
+      $(PGA_LIB_DIR)/duplcate.o      \\\
+      $(PGA_LIB_DIR)/evaluate.o      \\\
+      $(PGA_LIB_DIR)/fitness.o       \\\
+      $(PGA_LIB_DIR)/hamming.o       \\\
+      $(PGA_LIB_DIR)/heap.o          \\\
+      $(PGA_LIB_DIR)/integer.o       \\\
+      $(PGA_LIB_DIR)/mutation.o      \\\
+      $(PGA_LIB_DIR)/parallel.o      \\\
+      $(PGA_LIB_DIR)/pga.o           \\\
+      $(PGA_LIB_DIR)/pop.o           \\\
+      $(PGA_LIB_DIR)/random.o        \\\
+      $(PGA_LIB_DIR)/real.o          \\\
+      $(PGA_LIB_DIR)/report.o        \\\
+      $(PGA_LIB_DIR)/restart.o       \\\
+      $(PGA_LIB_DIR)/select.o        \\\
+      $(PGA_LIB_DIR)/stop.o          \\\
+      $(PGA_LIB_DIR)/system.o        \\\
+      $(PGA_LIB_DIR)/user.o          \\\
+      $(PGA_LIB_DIR)/utility.o'      # these are pgapack's object files
+
+###############################################################################
+# This section parse the command line options. There a two types of options:
+# those that take arguments and those that don't.  Parsing the case where an
+# option takes an argument is a little tricky.  This is how it works.  Suppose
+# that the program comes upon "-cc".  Then we know that the next argument
+# will be the name of the C compiler.  Hence, we set the flag next_cc to be
+# equal to "yes".  The next time through the loop, it will be the case that
+# x$next_cc equal "xyes" because $next_cc expands to "yes".  Thus, we know that
+# this argument is the name of the compiler and we assign it to USR_CC.  Then
+# we set next_cc back to a null string.  This way on the next time through
+# the loop x$next_cc will equal just "x".  Since the shell initializes
+# variables to null strings, we do not have to initialize the "next_" family
+# of variables by hand.
+###############################################################################
+for arg
+do
+    if test x$next_arch = xyes
+        then
+            ARCH=$arg
+            next_arch=
+        elif test x$next_mpiinc = xyes
+            then
+                MPI_INC_DIR=$arg
+                next_mpiinc=
+        elif test x$next_mpilib = xyes
+            then
+                MPI_LIB=$arg
+                next_mpilib=
+        elif test x$next_f77 = xyes
+            then
+                USR_FC=$arg
+                next_f77=
+        elif test x$next_cc = xyes
+            then
+                USR_CC=$arg
+                next_cc=
+        elif test x$next_cflags = xyes
+            then
+                CFLAGS="$arg $CFLAGS"
+                next_cflags=
+        elif test x$next_fflags = xyes
+            then
+                FFLAGS="$arg $FFLAGS"
+                next_fflags=
+        else
+            case $arg in
+                -arch)
+                    next_arch=yes
+                    ;;
+                -f77)
+                    next_f77=yes
+                    ;;
+                -cc)
+                    next_cc=yes
+                    ;;
+                -mpiinc)
+                    next_mpiinc=yes
+                    PARALLEL=1
+                    ;;
+                -mpilib)
+                    next_mpilib=yes
+                    PARALLEL=1
+                    ;;
+                -debug)
+                    OPTIMIZE=0
+                    ;;
+                -cflags)
+                    next_cflags=yes
+                    ;;
+                -fflags)
+                    next_fflags=yes
+                    ;;
+                -help)
+                    print_usage >& 2
+                    exit 1
+                    ;;
+                *) 
+                    ;;
+            esac
+    fi
+done
+
+if test "$MPI_LIB" -a "$MPI_INC_DIR" ; then
+    if test ! -d "$MPI_INC_DIR" ; then
+        print_error "MPI_INC_DIR == $MPI_INC_DIR is not a valid directory!"
+        exit 1
+    fi
+    if test ! -f "$MPI_INC_DIR/mpi.h" ; then
+        print_error "Couldn't find $MPI_INC_DIR/mpi.h!"
+        exit 1
+    fi
+
+    if test ! -f "$MPI_LIB" ; then
+        print_error "MPI_LIB == $MPI_LIB is not a file!"
+        exit 1
+    fi
+
+    PARALLEL=1
+else
+    PARALLEL=0
+    CPPFLAGS="-DFAKE_MPI $CPPFLAGS"
+fi
+
+if test $OPTIMIZE -eq 1 ; then
+	CPPFLAGS="-DOPTIMIZE $CPPFLAGS"
+	CFLAGS="-O $CFLAGS"
+	FFLAGS="-O $FFLAGS"
+	PGA_LIB="pgaO"
+else
+	CFLAGS="-g $CFLAGS"
+	FFLAGS="-g $FFLAGS"
+	PGA_LIB="pgag"
+fi
+
+
+###############################################################################
+# This section sets the default values of certain variables based upon the
+# architecture type specified.  If no architecture was specified, the script
+# issues an error and aborts.
+###############################################################################
+if test -z "$ARCH"
+    then
+        print_error "You must specify the architecture with -arch <value>"
+        print_error "Valid architectures are the following:"	
+	print_error " Workstations      MPP's"
+	print_error "    sun4        powerchallenge"
+	print_error "    next        challenge"
+	print_error "    rs6000      t3d"
+	print_error "    freebsd     sp2"
+	print_error "    irix        paragon"
+	print_error "    linux       exemplar"
+	print_error "    hpux"
+	print_error "    alpha"
+	print_error "    generic"
+	print_error ""
+	print_error "For more information type configure -help."
+        exit 1
+fi
+
+case $ARCH in
+    sun4)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    next)
+        CC=cc
+        FC=
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    rs6000)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+        ;;
+    freebsd)
+        CC=cc
+        FC=f77
+	FFLAGS="-w"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    irix)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    alpha)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=64 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    hpux)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    linux)
+	SHELL="/bin/sh"
+        CC=cc
+        FC=f77
+	FFLAGS="-w"
+	LDFLAGS="-s $LDFLAGS"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    t3d)
+        CC=/mpp/bin/cc
+        FC=/mpp/bin/cf77
+        CFLAGS="-T cray-t3d"
+        FFLAGS="-C cray-t3d -dp"
+        CPPFLAGS="-DWL=64 -DFORTRANCAP $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    powerchallenge)
+        CC=cc
+        FC=f77
+	CFLAGS="-mips4 -fullwarn -64"
+        CPPFLAGS="-DWL=64 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    challenge)
+        CC=cc
+        FC=f77
+	CFLAGS="-mips2 -fullwarn -32"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    paragon)
+        CC=cc
+        FC=f77
+        CFLAGS="-nx $CFLAGS"
+        FFLAGS="-nx $FFLAGS"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    sp2)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+        ;;
+    exemplar)
+        CC=cc
+        FC=fort77
+	FFLAGS="-L/usr/lib -lU77 $FFLAGS"
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    *)
+	CC=cc
+	FC=f77
+	CPPFLAGS="-DWL=32 $CPPFLAGS"
+	print_error "WARNING:  Configuring for untested architecture.  Using"
+        print_error "          word size of 32 bits, cc and f77 as compilers."
+	print_error "          You might have trouble with Fortran programs"
+        print_error "          not linking correctly.  Check the manual on"
+        print_error "          the FORTRANUNDERSCORE #define."
+	;;
+esac
+
+###############################################################################
+# This section sets the variables that do not relate to parallel code.
+###############################################################################
+CPPFLAGS="-D$ARCH $CPPFLAGS"
+PGA_LIB_DIR="../lib/$ARCH"
+LIB_DIRS="-L$PGA_DIR/lib/$ARCH $LIB_DIRS"
+LIBS="-l$PGA_LIB $LIBS"
+
+#     Set output variable `RANLIB' to `ranlib' if `ranlib' is found,
+#     otherwise to `:' (do nothing).
+AC_PROG_RANLIB()
+
+#    "Determine a C compiler to use.  If `CC' is not already set in the
+#     environment, check for `gcc', and use `cc' if it's not found.  Set
+#     output variable `CC' to the name of the compiler found.
+#
+#    "If using the GNU C compiler, set shell variable `GCC' to `yes',
+#     empty otherwise.  If output variable `CFLAGS' was not already set,
+#     set it to `-g -O' for the GNU C compiler (`-O' on systems where
+#     GCC does not accept `-g'), or `-g' for other compilers."
+if test -n "$USR_CC"
+     then
+          CC=$USR_CC
+     else
+          AC_PROG_CC()
+fi
+
+#     Check for each program in the whitespace-separated list
+#     PROGS-TO-CHECK-FOR exists in `PATH'.  If it is found, set VARIABLE
+#     to the name of that program.  Otherwise, continue checking the
+#     next program in the list.  If none of the programs in the list are
+#     found, set VARIABLE to VALUE-IF-NOT-FOUND; if VALUE-IF-NOT-FOUND
+#     is not specified, the value of VARIABLE is not changed.
+if test -n "$USR_FC"
+     then
+          FC=$USR_FC
+     else
+          AC_PROGRAMS_CHECK(FC, f77 fortran xlf gf77 mpxlf if77)
+fi
+
+# Originally had
+#                     OBJS="$OBJS $(PGA_LIB_DIR)/f2c.o"
+# However, freebsd bourne shell equates $(var) and `var`.  Hence, I had
+# to break the assignment up into two parts.  $FORTWRAP is a Makefile
+# dependency line defining how to compile f2c.c
+if test -n "$FC"
+    then
+	TEMP='$(PGA_LIB_DIR)/f2c.o'
+        OBJS="$OBJS $TEMP"
+        FORTWRAP='$(PGA_LIB_DIR)/f2c.o: f2c.c $(HEADERS)\
+	$(COMPILE.c) f2c.c'
+fi
+
+if test ! -d lib
+    then
+        mkdir lib
+fi
+
+if test ! -d lib/$ARCH
+    then
+        mkdir lib/$ARCH
+fi
+
+#  Set up symlinks for pgapackf.h to any directories with Fortran source
+rm -f ./examples/fortran/pgapackf.h ./examples/mgh/pgapackf.h ./test/pgapackf.h
+ln -s ../../include/pgapackf.h ./examples/fortran/pgapackf.h
+ln -s ../../include/pgapackf.h ./examples/mgh/pgapackf.h
+ln -s ../include/pgapackf.h    ./test/pgapackf.h
+
+#  Use the stub library.
+if test $PARALLEL -eq 0
+  then
+    rm -f ./include/mpi.h ./include/mpif.h ./examples/fortran/mpif.h ./examples/mgh/mpif.h ./test/mpif.h
+    ln -s fakempi_h include/mpi.h
+    ln -s fakempif_h include/mpif.h
+    ln -s ../../include/mpif.h ./examples/fortran/mpif.h
+    ln -s ../../include/mpif.h ./examples/mgh/mpif.h
+    ln -s ../include/mpif.h ./test/mpif.h
+    TEMP='$(PGA_LIB_DIR)/mpi_stub.o'
+    OBJS="$OBJS $TEMP"
+    MPICOMP='$(PGA_LIB_DIR)/mpi_stub.o: mpi_stub.c $(HEADERS)\
+	$(COMPILE.c) mpi_stub.c'
+#  The tab above is IMPORTANT!  Needed for make!
+else
+    rm -f ./include/mpi.h ./include/mpif.h ./examples/fortran/mpif.h ./examples/mgh/mpif.h ./test/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./examples/fortran/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./examples/mgh/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./test/mpif.h
+    LIBS="$LIBS $MPI_LIB"
+    INCLUDES="$INCLUDES -I$MPI_INC_DIR"
+fi
+
+LIBS="$LIBS -lm"
+CPPFLAGS="$INCLUDES $CPPFLAGS"
+LDFLAGS="$LDFLAGS $LIB_DIRS $LIBS"
+###############################################################################
+# This section exports the variables that have previously been set.
+# Configure creates the Makefiles listed on the last line from the
+# Makefile.in in each directory.  It does this by substituting the value
+# of $VAR for every occurent of @VAR@ in the Makefile.in.  For
+# example, if the characters @CC@ occur any place in a Makefile.in, they
+# will be replaced with the value that $CC has when ac_subst(CC) is
+# called.
+###############################################################################
+AC_SUBST(CC)
+AC_SUBST(CFLAGS)
+AC_SUBST(FFLAGS)
+AC_SUBST(CPPFLAGS)
+AC_SUBST(FC)
+AC_SUBST(FORTWRAP)
+AC_SUBST(HEADERS)
+AC_SUBST(LDFLAGS)
+AC_SUBST(PARALLEL)
+AC_SUBST(PGA_LIB_DIR)
+AC_SUBST(PGA_LIB)
+AC_SUBST(OBJS)
+AC_SUBST(MPICOMP)
+AC_SUBST(RM)
+AC_SUBST(RANLIB)
+AC_SUBST(SHELL)
+AC_OUTPUT(Makefile source/Makefile test/Makefile test/Makefile \
+	  examples/Makefile examples/c/Makefile examples/fortran/Makefile \
+	  examples/mgh/Makefile)
+
+if test ! -f ".pgapack" ; then
+  if test $PARALLEL -eq 1 ; then
+      OPERATION="parallel"
+      ECHO_LIBS="$MPI_LIB"
+  else
+      OPERATION="sequential"
+      ECHO_LIBS="stub routines in mpi_stub.c"
+  fi
+  if test $OPTIMIZE -eq 1 ; then
+      OPERATION="optimized $OPERATION"
+  else
+      OPERATION="debug $OPERATION"
+  fi
+  echo " "
+  echo "PGAPack has been configured for $OPERATION operation on"
+  echo "the $ARCH architecture, using $ECHO_LIBS."
+  echo " "
+  echo "**********************************************************************"
+  echo "*  Please register your copy of PGAPack by sending a mail message    *"
+  echo "*  to pgapack@mcs.anl.gov.  This will allow us to notify you of bug  *"
+  echo "*  fixes, enhancements, and new releases. The PGAPack homepage is at *"
+  echo "*  http://www.mcs.anl.gov/pgapack.html.                              *"
+  echo "**********************************************************************"
+  echo " "
+  echo "Type \"make install\" to install PGAPack."
+  echo " "
+fi
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/Makefile.in	(revision 6168)
@@ -0,0 +1,26 @@
+FC    = @FC@
+RM    = @RM@
+SHELL = @SHELL@
+
+default:
+	@echo "Making C examples"
+	@make C
+	@echo "Making fortran examples"
+	@make Fortran
+
+C:
+	@cd c; make
+
+Fortran:
+	@if test -n "$(FC)" ; then\
+		cd fortran; make; cd ..;\
+		cd mgh; make;\
+	else\
+		echo "Fortran compiler unavailable";\
+	fi
+
+clean:
+	@cd c; make clean
+	@cd fortran; make clean
+	@cd mgh; make clean
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/README	(revision 6168)
@@ -0,0 +1,7 @@
+This is the top-level parallel examples directory.  Under it are the
+three following directories:
+
+c         -- contains example programs in C
+fortran   -- contains example programs in FORTRAN
+mgh       -- contains the More, Garbow, and Hillstrom test suite
+templates -- contains stub routines for all the user defined routines
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/Makefile.in	(revision 6168)
@@ -0,0 +1,54 @@
+CC          = @CC@
+PRECFLAGS   = @CFLAGS@
+CPPFLAGS    = @CPPFLAGS@
+FC          = @FC@
+RM          = @RM@
+LDFLAGS     = @LDFLAGS@
+SHELL       = @SHELL@
+
+#    "$@" expands to the target; "$?" expands to the dependency list
+CFLAGS      = -o $@ $? $(PRECFLAGS)
+
+LINK.c      = @echo "  Compiling $@" ; $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+
+default:
+	@make classic
+	@make dejong
+	@make example
+	@make maxbit
+	@make maxchar
+	@make maxint
+	@make name
+	@make namefull
+	@make udtstr
+
+classic: classic.c
+	$(LINK.c)
+
+dejong: dejong.c
+	$(LINK.c)
+
+example: example.c
+	$(LINK.c)
+
+maxbit: maxbit.c
+	$(LINK.c)
+
+maxchar: maxchar.c
+	$(LINK.c)
+
+maxint: maxint.c
+	$(LINK.c)
+
+name: name.c
+	$(LINK.c)
+
+namefull: namefull.c
+	$(LINK.c)
+
+udtstr: udtstr.c
+	$(LINK.c)
+
+clean: 
+	@$(RM) classic dejong example maxbit maxchar maxint name namefull \
+	       udtstr *.o
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/README	(revision 6168)
@@ -0,0 +1,31 @@
+Eight example C programs come with PGAPack.  What follows is a listing 
+of the names of the programs and a brief description of their function.
+
+classic.c  -- Optimizes Griewank's, Rastrigin's or Schwefel's test function.
+              All use a real valued datatype.  The problems are:
+		1.  Griewank
+		2.  Rastrigin
+		3.  Schwefel
+
+dejong.c   -- This program optimizes one of the five functions from the DeJong
+              test suite with a binary string as the chromosome.  Graycoding is
+              an option.
+
+example.c  -- An example from the User's Guide.
+
+maxbit.c   -- A very simple example that maximizes the number of 1's in a
+              binary string.  Does no I/O.
+
+maxchar.c  -- Maximizes the number of z's in a character string.  Does I/O.
+
+maxint.c   -- Maximizes the sum of all alleles in the gene.
+
+name.c     -- Evolves a character string to match a hard-coded string.  Does
+              no I/O, but shows how to use userfunctions InitString, Mutation,
+              and Done.  Also uses an elitist model of evolution with no
+              crossover.
+
+namefull.c -- Same idea as name.c, but uses all native user defined functions.
+
+udtstr.c   -- Uses a user-defined datatype, a single structure.
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/classic.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/classic.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/classic.c	(revision 6168)
@@ -0,0 +1,134 @@
+/*  Miscelaneous test functions.
+ *
+ *  Rather than deal with parallel I/O, we just list the tests here:
+ *     1.  Griewank
+ *     2.  Rastrigin
+ *     3.  Schwefel
+ *
+ */
+#include <pgapack.h>
+
+#ifndef M_PI
+#define M_PI 3.14159265354
+#endif
+
+double griewank(PGAContext *, int, int);
+double rastrigin(PGAContext *, int, int);
+double schwefel(PGAContext *, int, int);
+void   printResultInterpretation(PGAContext *, int);
+int    GetIntegerParameter(char *query);
+
+int    NumCoords[3]  = { 10, 20, 10 };
+double Lower[3]      = { -512.0, -5.12, -512.0 };
+double Upper[3]      = { 511.0, 5.11, 511.0 };
+
+/*******************************************************************
+ *                   user main program                              *
+ *******************************************************************/
+int main( int argc, char **argv ) {
+    PGAContext *ctx;     /* the context variable */
+    int testnum;         /* the DeJong test to run */
+    int maxiter;         /* the maximum number of iterations */
+    double l[20], u[20]; /* for initializing lu ranges */
+    int i;
+
+    MPI_Init(&argc, &argv); 
+
+    testnum = GetIntegerParameter("Which test? (1-Griewank, 2-Rastrigin, 3-Schwefel)\n") - 1;
+    maxiter = GetIntegerParameter("How many iterations?\n");
+
+    for (i=0; i<20; i++) {
+	l[i] = Lower[testnum];
+	u[i] = Upper[testnum];
+    }
+
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_REAL, 
+		    NumCoords[testnum], PGA_MINIMIZE);
+    
+    PGASetRandomSeed(ctx, 1);
+
+    PGASetRealInitRange(ctx, l, u);
+    PGASetMaxGAIterValue(ctx, maxiter);
+    
+    PGASetUp(ctx);
+
+    if (testnum == 0)    PGARun(ctx, griewank);
+    if (testnum == 1)    PGARun(ctx, rastrigin);
+    if (testnum == 2)    PGARun(ctx, schwefel);
+
+    PGADestroy(ctx);
+    
+    MPI_Finalize();
+
+    return 0;
+}
+
+
+double griewank(PGAContext *ctx, int p, int pop) {
+    int i, len;
+    double term, sum, product;
+
+    sum = 0;
+    product = 1;
+    len = PGAGetStringLength(ctx);
+    for (i = 0; i < len; i++) {
+        term = PGAGetRealAllele(ctx, p, pop, i);
+        sum = sum + term * term / 4000.0;
+        product = product * cos(term / sqrt(((double)i + 1)));
+    }
+
+    return (1 + sum - product);
+}
+
+
+double rastrigin(PGAContext *ctx, int p, int pop)
+{
+    int i, len;
+    double term, sum;
+
+    sum = 0;
+    len = PGAGetStringLength(ctx);
+    for (i = 0; i < len; i++) {
+        term = PGAGetRealAllele(ctx, p, pop, i);
+        sum = sum + term * term - 10 * cos(2 * M_PI * term);
+    }
+    return (len * 10 + sum);
+}
+
+
+double schwefel(PGAContext *ctx, int p, int pop) {
+    int i, len;
+    double term, sum;
+
+    sum = 0;
+    len = PGAGetStringLength(ctx);
+    for (i = 0; i < len; i++) {
+        term = PGAGetRealAllele(ctx, p, pop, i);
+        sum = sum - term * sin(sqrt(fabs(term)));
+    }
+    return (sum);
+}
+
+
+
+/*  Get an integer parameter from the user.  Since this is
+ *  typically a parallel program, we must only do I/O on the
+ *  "master" process -- process 0.  Once we read the parameter,
+ *  we broadcast it to all the other processes, then every 
+ *  process returns the correct value.
+ */
+int GetIntegerParameter(char *query) {
+    int  rank, tmp;
+
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    if (rank == 0) {
+        printf(query);
+        scanf("%d", &tmp);
+    }
+    MPI_Bcast(&tmp, 1, MPI_INT, 0, MPI_COMM_WORLD);
+    return(tmp);
+}
+
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/dejong.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/dejong.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/dejong.c	(revision 6168)
@@ -0,0 +1,205 @@
+/*  The DeJong test suite.
+ *
+ */
+#include <pgapack.h>
+
+double dejong1(PGAContext *, int, int);
+double dejong2(PGAContext *, int, int);
+double dejong3(PGAContext *, int, int);
+double dejong4(PGAContext *, int, int);
+double dejong5(PGAContext *, int, int);
+void   printResultInterpretation(PGAContext *, int);
+int    GetIntegerParameter(char *query);
+
+int    gray_on;
+
+int    BinLen[5]     = { 10, 12, 10, 8, 17 };
+int    NumCoords[5]  = { 3, 2, 5, 30, 2 };
+double Lower[5]      = { -5.12, -2.048, -5.12, -1.28, -65.536 };
+double Upper[5]      = { 5.11, 2.047, 5.11, 1.27, 65.535 };
+
+/*******************************************************************
+ *                   user main program                              *
+ *******************************************************************/
+int main( int argc, char **argv ) {
+    PGAContext *ctx;    /* the context variable */
+    int testnum;        /* the DeJong test to run */
+    int maxiter;        /* the maximum number of iterations */
+
+    MPI_Init(&argc, &argv); 
+
+    testnum = GetIntegerParameter("Which test? (1 - 5)\n") - 1;
+    gray_on = GetIntegerParameter("Gray-coded? (0 = no)\n");
+    maxiter = GetIntegerParameter("How many iterations?\n");
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 
+		    BinLen[testnum]*NumCoords[testnum], PGA_MINIMIZE);
+    
+    PGASetMaxGAIterValue(ctx, maxiter);
+    PGASetRandomSeed(ctx, 1);
+    
+    PGASetUp(ctx);
+
+    if (testnum == 0)    PGARun(ctx, dejong1);
+    if (testnum == 1)    PGARun(ctx, dejong2);
+    if (testnum == 2)    PGARun(ctx, dejong3);
+    if (testnum == 3)    PGARun(ctx, dejong4);
+    if (testnum == 4)    PGARun(ctx, dejong5);
+
+    printResultInterpretation(ctx, testnum);
+
+    PGADestroy(ctx);
+    
+    MPI_Finalize();
+
+    return 0;
+}
+
+double GetTerm(PGAContext *ctx, int p, int pop, int t, int problem);
+
+double GetTerm(PGAContext *ctx, int p, int pop, int t, int problem) {
+    double    x;
+    int       len;
+    double    l, u;
+
+    len = BinLen[problem];
+    l   = Lower[problem];
+    u   = Upper[problem];
+
+    if (gray_on) 
+	x = PGAGetRealFromGrayCode(ctx, p, pop, t*len, (t+1)*len-1, l, u);
+    else
+	x = PGAGetRealFromBinary(ctx, p, pop, t*len, (t+1)*len-1, l, u);
+    return(x);
+}
+
+
+double dejong1(PGAContext *ctx, int p, int pop) {
+    int i;
+    double term, sum = 0;
+    
+    for(i = 0; i < NumCoords[0]; i++) {
+	term = GetTerm(ctx, p, pop, i, 0);
+	sum += (term * term);
+    }
+    
+    return (sum);
+}
+
+
+double dejong2(PGAContext *ctx, int p, int pop) {
+    double x1, x2, p1, p2;
+    
+    x1 = GetTerm(ctx, p, pop, 0, 1);
+    x2 = GetTerm(ctx, p, pop, 1, 1);
+
+    p1 = x1 * x1 - x2;
+    p2 = 1 - x1;
+    
+    return (100 * p1 * p1 + p2 * p2);
+}
+
+double dejong3(PGAContext *ctx, int p, int pop) {
+    int i;
+    double sum = 0;
+    
+    for(i = 0; i < NumCoords[2]; i++)
+	sum += floor(GetTerm(ctx, p, pop, i, 2));
+
+    return (sum);
+}
+
+double dejong4(PGAContext *ctx, int p, int pop) {
+    int i;
+    double term, sum = 0;
+    
+    for(i = 0; i < NumCoords[3]; i++) {
+	term = GetTerm(ctx, p, pop, i, 3);
+	sum += ((i + 1) * term * term * term * term);
+    }
+    
+    return (sum + PGARandomGaussian(ctx, 0, 1));
+}
+
+double dejong5(PGAContext *ctx, int p, int pop) {
+    int    a[2][25];
+    int    i, j;
+    double sum_over_i = 0, sum_over_j = 0;
+
+    for (i=0; i<5; i++) {
+        a[0][5*i]   = -32;
+        a[1][i]     = -32;
+
+        a[0][5*i+1] = -16;
+        a[1][i+5]   = -16;
+
+        a[0][5*i+2] = 0;
+        a[1][i+10]  = 0;
+
+        a[0][5*i+3] = 16;
+        a[1][i+15]  = 16;
+
+        a[0][5*i+4] = 32;
+        a[1][i+20]  = 32;
+    }
+
+    for (j = 0; j < 25; j++) {
+	sum_over_i =
+	    pow(GetTerm(ctx, p, pop, 0, 4) - a[0][j], 6) +
+	    pow(GetTerm(ctx, p, pop, 1, 4) - a[1][j], 6);
+	sum_over_j += (1.0 / (j + sum_over_i));
+    }
+    
+    return (1.0 / (0.002 + sum_over_j));
+}
+
+
+void printResultInterpretation(PGAContext *ctx, int problem) {
+    int      best, i;
+    double   value;
+
+    if (PGAGetRank(ctx, MPI_COMM_WORLD) == 0) {
+	best = PGAGetBestIndex(ctx, PGA_OLDPOP);
+	
+	printf("The real interpretation:\n");
+	for (i = 0; i < NumCoords[problem]; i++) {
+	    value = GetTerm(ctx, best, PGA_OLDPOP, i, problem);
+	    
+	    switch ( i % 5 ) {
+	    case 0:
+		printf ("#%4d: [%11.7g]", i, value);
+		break;
+	    case 1:
+	    case 2:
+	    case 3:
+		printf (", [%11.7g]", value);
+		break;
+	    case 4:
+		printf (", [%11.7g]", value);
+		if (i+1 < NumCoords[problem])
+		    printf ("\n");
+		break;
+	    }
+	}
+	printf("\n");
+    }
+}
+
+
+/*  Get an integer parameter from the user.  Since this is
+ *  typically a parallel program, we must only do I/O on the
+ *  "master" process -- process 0.  Once we read the parameter,
+ *  we broadcast it to all the other processes, then every 
+ *  process returns the correct value.
+ */
+int GetIntegerParameter(char *query) {
+    int  rank, tmp;
+
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    if (rank == 0) {
+        printf(query);
+        scanf("%d", &tmp);
+    }
+    MPI_Bcast(&tmp, 1, MPI_INT, 0, MPI_COMM_WORLD);
+    return(tmp);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/example.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/example.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/example.c	(revision 6168)
@@ -0,0 +1,84 @@
+#include <pgapack.h>
+
+/* EHW: Testing the addition of Initialization functions */
+
+void Init(PGAContext *ctx);
+
+void Init(PGAContext *ctx)
+{
+  printf(" Initializaiton User Context Function \n");
+
+
+}
+
+void Kill(PGAContext *ctx);
+
+void Kill(PGAContext *ctx)
+{
+
+  printf(" Kill UserContext Function \n");
+}
+
+
+void EOG(PGAContext *ctx);
+
+void EOG(PGAContext *ctx)
+{
+
+  int gen=PGAGetGAIterValue(ctx);
+  printf("ENDOFGEN %d \n",gen);
+
+}
+
+
+#define LEN 5
+
+double evaluate (PGAContext *ctx, int p, int pop);
+int myMutation  (PGAContext *, int, int, double);
+
+int main( int argc, char **argv )
+{
+     PGAContext *ctx; 
+     int i, lower[LEN], upper[LEN];
+
+     for (i=0; i<LEN; i++) {
+	 lower[i] = 1;
+	 upper[i] = LEN;
+     }
+     ctx = PGACreate (&argc, argv, PGA_DATATYPE_INTEGER, LEN, PGA_MAXIMIZE);
+     PGASetUserFunction (ctx, PGA_USERFUNCTION_MUTATION, (void *)myMutation);
+
+     PGASetUserFunction (ctx, PGA_USERFUNCTION_ENDOFGEN, (void *)EOG);
+
+     PGASetUserFunction (ctx, PGA_USERFUNCTION_INITUSERCTX, (void *)Init);
+     PGASetUserFunction (ctx, PGA_USERFUNCTION_KILLUSERCTX, (void *)Kill);
+
+
+     PGASetMaxGAIterValue(ctx,30);
+
+     PGASetIntegerInitRange(ctx, lower, upper);
+     PGASetUp              (ctx);
+     PGARun                (ctx, evaluate);
+     PGADestroy            (ctx);
+     return(0);
+}
+int myMutation(PGAContext *ctx, int p, int pop, double pm)
+{
+    int stringlen, i, k, count = 0;
+    stringlen = PGAGetStringLength(ctx);
+    for (i = 0; i < stringlen; i++)
+    if (PGARandomFlip(ctx, pm)) {
+        k = PGARandomInterval(ctx, 1, stringlen);
+        PGASetIntegerAllele(ctx, p, pop, i, k);
+        count++;
+    }
+    return ((double) count);
+}
+double evaluate(PGAContext *ctx, int p, int pop)
+{
+     int stringlen, i, sum = 0;
+     stringlen = PGAGetStringLength(ctx);
+     for (i = 0; i < stringlen; i++)
+         sum += PGAGetIntegerAllele(ctx, p, pop, i);
+     return ((double)sum);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/maxbit.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/maxbit.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/maxbit.c	(revision 6168)
@@ -0,0 +1,45 @@
+/*
+ *  This is a test program for PGAPack.  The objective is to maximize the
+ *  number of 1-bits in a chromosome.
+ */
+
+#include <pgapack.h>
+
+double NumberOfSetBits(PGAContext *, int, int);
+
+/*******************************************************************
+*                   user main program                              *
+*******************************************************************/
+int main( int argc, char **argv ) {
+    PGAContext *ctx;
+    
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 256, PGA_MAXIMIZE);
+    PGASetRandomSeed(ctx, 1);
+    
+    PGASetUp(ctx);
+    PGARun(ctx, NumberOfSetBits);
+    PGADestroy(ctx);
+    
+    return(0);
+}
+
+
+/*******************************************************************
+*               user defined evaluation function                   *
+*   ctx - contex variable                                          *
+*   p   - chromosome index in population                           *
+*   pop - which population to refer to                             *
+*******************************************************************/
+double NumberOfSetBits(PGAContext *ctx, int p, int pop) {
+    int i, nbits, stringlen;
+
+    stringlen = PGAGetStringLength(ctx);
+    
+    nbits = 0;
+    for ( i=0; i<stringlen; i++ )
+	if ( PGAGetBinaryAllele(ctx, p, pop, i) )
+	    nbits++;
+    
+    return((double) nbits);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/maxchar.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/maxchar.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/maxchar.c	(revision 6168)
@@ -0,0 +1,103 @@
+/*
+ *  This is a test program for PGAPack.  The objective is to maximize the
+ *  number of 'z's in a chromosome.
+ */
+
+#include <pgapack.h>
+
+double NumberOfZs(PGAContext *, int, int);
+int    myMutation(PGAContext *, int, int, double);
+int    GetIntegerParameter(char *query);
+
+/*******************************************************************
+*                   user main program                              *
+*******************************************************************/
+int main( int argc, char **argv )
+{
+     PGAContext *ctx;
+     int         len, maxiter;
+
+
+     MPI_Init(&argc, &argv);
+
+     len = GetIntegerParameter("String length?\n");
+     maxiter = GetIntegerParameter("How many iterations?\n");
+
+     ctx = PGACreate(&argc, argv, PGA_DATATYPE_CHARACTER, len, PGA_MAXIMIZE);
+
+     PGASetRandomSeed(ctx, 1);
+     PGASetMaxGAIterValue(ctx, maxiter);
+     PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION, (void *)myMutation);
+
+     PGASetUp(ctx);
+     PGARun(ctx, NumberOfZs);
+     PGADestroy(ctx);
+
+     MPI_Finalize();
+
+     return(0);
+}
+
+
+/*******************************************************************
+*               user defined evaluation function                   *
+*   ctx - contex variable                                          *
+*   p   - chromosome index in population                           *
+*   pop - which population to refer to                             *
+*******************************************************************/
+double NumberOfZs(PGAContext *ctx, int p, int pop) {
+     int i, nzs;
+     int stringlen;
+
+     stringlen = PGAGetStringLength(ctx);
+     
+     nzs = 0;
+     for ( i=0; i<stringlen; i++ )
+	  if (PGAGetCharacterAllele(ctx, p, pop, i) == 'z')
+	       nzs++;
+     
+     return((double) nzs);
+}
+
+
+/*  Custom mutation function.  Searches for an unset bit, 
+ *  then sets it.  Returns the number of bits that are changed.
+ */
+int myMutation(PGAContext *ctx, int p, int pop, double mr) {
+    int         i, count;
+    char        c;
+
+    count = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	if (PGARandomFlip(ctx, mr)) {
+	    c = PGAGetCharacterAllele(ctx, p, pop, i);
+	    if (c != 'z') {
+		PGASetCharacterAllele(ctx, p, pop, i, c+1);
+		count++;
+	    }
+	}
+    }
+    return(count);
+}
+
+
+
+/*  Get an integer parameter from the user.  Since this is
+ *  typically a parallel program, we must only do I/O on the
+ *  "master" process -- process 0.  Once we read the parameter,
+ *  we broadcast it to all the other processes, then every 
+ *  process returns the correct value.
+ */
+int GetIntegerParameter(char *query) {
+    int  rank, tmp;
+
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    if (rank == 0) {
+        printf(query);
+        scanf("%d", &tmp);
+    }
+    MPI_Bcast(&tmp, 1, MPI_INT, 0, MPI_COMM_WORLD);
+    return(tmp);
+}
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/maxint.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/maxint.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/maxint.c	(revision 6168)
@@ -0,0 +1,94 @@
+/*
+ *  This is a test program for PGAPack.  The objective is to maximize each
+ *  allele.  The evaluation function sums all allele values.
+ */
+#include <pgapack.h>
+
+double evaluate(PGAContext *, int, int);
+int    myMutation(PGAContext *, int, int, double);
+int    GetIntegerParameter(char *query);
+
+
+int main(int argc, char **argv) {
+     PGAContext *ctx;
+     int         len, maxiter;
+
+     MPI_Init(&argc, &argv);
+
+     len     = GetIntegerParameter("String length?\n");
+     maxiter = GetIntegerParameter("How many iterations?\n");
+
+     ctx = PGACreate(&argc, argv, PGA_DATATYPE_INTEGER, len, PGA_MAXIMIZE);
+
+     PGASetRandomSeed(ctx, 1);
+     PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION, (void *)myMutation);
+     PGASetIntegerInitPermute(ctx, 1, len);
+
+     PGASetMaxGAIterValue(ctx, maxiter);
+     PGASetNumReplaceValue(ctx, 90);
+     PGASetMutationAndCrossoverFlag(ctx, PGA_TRUE);
+     PGASetPrintOptions(ctx, PGA_REPORT_AVERAGE);
+
+     PGASetUp(ctx);
+
+     PGARun(ctx, evaluate);
+     PGADestroy(ctx);
+
+     MPI_Finalize();
+
+     return(0);
+}
+
+
+int myMutation(PGAContext *ctx, int p, int pop, double mr) {
+    int         stringlen, i, v, count;
+
+    stringlen = PGAGetStringLength(ctx);
+    count     = 0;
+
+    for (i=stringlen-1; i>=0; i--) {
+	if (PGARandomFlip(ctx, mr)) {
+	    v = PGARandomInterval(ctx, 1, stringlen);
+            PGASetIntegerAllele(ctx, p, pop, i, v);
+	    count++;
+	}
+    }
+    return((double)count);
+}
+
+
+
+double evaluate(PGAContext *ctx, int p, int pop) {
+     int  stringlen, i, sum;
+
+     stringlen = PGAGetStringLength(ctx);
+     sum       = 0;
+     
+     for (i=stringlen-1; i>=0; i--)
+	  sum += PGAGetIntegerAllele(ctx, p, pop, i);
+
+     return((double)sum);
+}
+
+
+
+/*  Get an integer parameter from the user.  Since this is
+ *  typically a parallel program, we must only do I/O on the
+ *  "master" process -- process 0.  Once we read the parameter,
+ *  we broadcast it to all the other processes, then every 
+ *  process returns the correct value.
+ */
+int GetIntegerParameter(char *query) {
+    int  rank, tmp;
+
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    if (rank == 0) {
+        printf(query);
+        scanf("%d", &tmp);
+    }
+    MPI_Bcast(&tmp, 1, MPI_INT, 0, MPI_COMM_WORLD);
+    return(tmp);
+}
+
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/name.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/name.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/name.c	(revision 6168)
@@ -0,0 +1,126 @@
+/*  PGAPack test program.
+ *
+ *  The objective is to evolve a string of characters to match a string
+ *  supplied by the user.  We will stop evolving when either we run out
+ *  of iterations (500), or when the best string has the same evaluation
+ *  value for 100 generations.
+ *
+ *  One problem with this implementation is that ' ' is not in
+ *  PGA_DATATYPE_CHAR if we limit it using PGA_CINIT_MIXED, PGA_CINIT_LOWER,
+ *  or PGA_CINIT_UPPER.  To fix this, we must define our own interval, and
+ *  thus, our own mutation, initialization operators.
+ *
+ *  A user function is also used to check the "done" condition; we are 
+ *  done if we've done more than 1000 iterations, or the evolved string
+ *  is correct.
+ *
+ *  Created 28 Sep 95, Brian P. Walenz.  Thanks to Dan Ashlock for the idea.
+ */
+
+#include "pgapack.h"
+
+void   N_InitString(PGAContext *ctx, int p, int pop);
+int    N_Mutation(PGAContext *ctx, int p, int pop, double mr);
+int    N_StopCond(PGAContext *ctx);
+double EvalName(PGAContext *ctx, int p, int pop);
+void   GetStringParameter(char *query, char *string);
+
+/*  Global, because we use it in EvalName.  */
+char   Name[42];
+
+int main(int argc, char **argv) {
+    PGAContext *ctx;
+
+    MPI_Init(&argc, &argv);
+
+    /*  Rather than deal with standard io and strings, we'll just set
+     *  this explicitly.
+     */
+    strcpy(Name,"Levine, Hallstrom, Noelle, Walenz");
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_CHARACTER, strlen(Name),
+		    PGA_MAXIMIZE);
+    
+    PGASetRandomSeed(ctx, 1);
+    
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING, (void *)N_InitString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,   (void *)N_Mutation);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_STOPCOND,   (void *)N_StopCond);
+
+    PGASetPopSize(ctx, 100);
+    PGASetNumReplaceValue(ctx, 75);
+    PGASetPopReplaceType(ctx, PGA_POPREPL_BEST);
+    
+    PGASetCrossoverProb(ctx, 0.0);
+    PGASetMutationOrCrossoverFlag(ctx, PGA_TRUE);
+    PGASetMaxGAIterValue(ctx, 100);
+    
+    PGASetUp(ctx);
+    PGARun(ctx, EvalName);
+    PGADestroy(ctx);
+
+    MPI_Finalize();
+
+    return 0;
+}
+
+
+/*  Function to randomly initialize a PGA_DATATYPE_CHARACTER string using
+ *  all printable ASCII characters for the range.
+ */
+void N_InitString(PGAContext *ctx, int p, int pop) {
+    int               i;
+    
+    for(i=0; i<PGAGetStringLength(ctx); i++)
+	PGASetCharacterAllele(ctx, p, pop, i, 
+			      PGARandomInterval(ctx, 32, 126));
+}
+
+
+/*  Function to muatate a PGA_DATATYPE_CHARACTER string.  This is done
+ *  by simply picking allele locations, and replacing whatever was there
+ *  with a new value.  Again, legal values are all printable ASCII characters.
+ */
+int N_Mutation(PGAContext *ctx, int p, int pop, double mr) {
+    int               i, count=0;
+    
+    for(i=0; i<PGAGetStringLength(ctx); i++)
+	if (PGARandomFlip(ctx, mr)) {
+	    PGASetCharacterAllele(ctx, p, pop, i,
+				  PGARandomInterval(ctx, 32, 126));
+            count++;
+	}
+    return(count);
+}
+
+
+int N_StopCond(PGAContext *ctx) {
+    int   done, best;
+
+    done = PGACheckStoppingConditions(ctx);
+
+    best = PGAGetBestIndex(ctx, PGA_OLDPOP);
+    if ((done == PGA_FALSE) && 
+	(PGAGetEvaluation(ctx, best, PGA_OLDPOP) ==
+	 PGAGetStringLength(ctx)))
+	done = PGA_TRUE;
+
+    return(done);
+}
+
+    
+/*  Evaluate the string.  A highly fit string will have many of
+ *  the characters matching Name.
+ */
+double EvalName(PGAContext *ctx, int p, int pop) {
+    int     i, count;
+    
+    count = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	if (PGAGetCharacterAllele(ctx, p, pop, i) == Name[i])
+	    count++;
+    }
+    
+    return((double)count);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/namefull.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/namefull.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/namefull.c	(revision 6168)
@@ -0,0 +1,245 @@
+/*  PGAPack test program.
+ *
+ *  The objective is to evolve a string of characters to match a string
+ *  supplied by the user.  We will stop evolving when either we run out
+ *  of iterations (500), or when the best string has the same evaluation
+ *  value for 100 generations.
+ *
+ *  One problem with this implementation is that ' ' is not in
+ *  PGA_DATATYPE_CHAR if we limit it using PGA_CINIT_MIXED, PGA_CINIT_LOWER,
+ *  or PGA_CINIT_UPPER.  To fix this, we must define our own interval, and
+ *  thus, our own mutation, initialization operators.
+ *
+ *  A user function is also used to check the "done" condition; we are 
+ *  done if we've done more than 1000 iterations, or the evolved string
+ *  is correct.
+ *
+ *  Created 28 Sep 95, Brian P. Walenz.  Thanks to Dan Ashlock for the idea.
+ *
+ *  Be warned that duplicate checking will sometimes go into an infinite
+ *  loop.
+ */
+
+#include "pgapack.h"
+
+void   N_InitString (PGAContext *, int, int);
+int    N_Mutation   (PGAContext *, int, int, double);
+int    N_StopCond   (PGAContext *);
+void   N_Crossover  (PGAContext *ctx, int, int, int, int, int, int);
+int    N_Duplicate  (PGAContext *, int, int, int, int);
+void   N_PrintString(PGAContext *, FILE *, int, int);
+void   N_EndOfGen   (PGAContext *);
+double EvalName     (PGAContext *, int, int);
+void   GetStringParameter(char *, char *);
+
+/*  Global, because we use it in EvalName.  */
+char   Name[70];
+
+int main(int argc, char **argv) {
+    PGAContext *ctx;
+
+    MPI_Init(&argc, &argv);
+
+    /*  Rather than deal with standard io and strings, we'll just set
+     *  this explicitly.
+     */
+    strcpy(Name, "David M. Levine, Philip L. Hallstrom, David M. Noelle, "
+                 "Brian P. Walenz");
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_CHARACTER, strlen(Name),
+		    PGA_MAXIMIZE);
+    
+    PGASetRandomSeed(ctx, 42);
+    
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING, (void *)N_InitString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,   (void *)N_Mutation);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER,  (void *)N_Crossover);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_DUPLICATE,  (void *)N_Duplicate);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_STOPCOND,   (void *)N_StopCond);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING,(void *)N_PrintString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,   (void *)N_EndOfGen);
+
+    /*  We don't want to report anything.  */
+    PGASetPrintFrequencyValue(ctx, 10000);
+    PGASetPopSize(ctx, 100);
+    PGASetNumReplaceValue(ctx, 90);
+    PGASetPopReplaceType(ctx, PGA_POPREPL_BEST);
+    PGASetNoDuplicatesFlag(ctx, PGA_TRUE);
+    PGASetMaxGAIterValue(ctx, 100);
+    
+    PGASetUp(ctx);
+    PGARun(ctx, EvalName);
+    PGADestroy(ctx);
+
+    MPI_Finalize();
+
+    return 0;
+}
+
+
+/*  Function to randomly initialize a PGA_DATATYPE_CHARACTER string using
+ *  all printable ASCII characters for the range.
+ */
+void N_InitString(PGAContext *ctx, int p, int pop) {
+    int               i;
+    
+    for(i=PGAGetStringLength(ctx)-1; i>=0; i--)
+	PGASetCharacterAllele(ctx, p, pop, i, 
+			      PGARandomInterval(ctx, 32, 126));
+}
+
+
+
+/*  Function to crossover two name strings.  Quite an interesting
+ *  crossover, too.  Works like a normal uniform crossover, except
+ *  that, if one of the strings matches the correct value, we set
+ *  BOTH children to the correct value 50% of the time.
+ */
+void N_Crossover(PGAContext *ctx, int p1, int p2, int pop1, int c1, 
+		 int c2, int pop2) {
+    int           i, length;
+    char          a, b;
+	    
+    length = PGAGetStringLength(ctx);
+
+    for (i=0; i<length; i++) {
+	a = PGAGetCharacterAllele(ctx, p1, pop1, i);
+	b = PGAGetCharacterAllele(ctx, p2, pop1, i);
+	if ((a == Name[i]) || (b == Name[i]))
+	    a = b = Name[i];
+
+	if (PGARandomFlip(ctx, 0.5) == PGA_TRUE) {
+            PGASetCharacterAllele(ctx, c1, pop2, i, a);
+            PGASetCharacterAllele(ctx, c2, pop2, i, b);
+	} else {
+            PGASetCharacterAllele(ctx, c1, pop2, i, b);
+            PGASetCharacterAllele(ctx, c2, pop2, i, a);
+        }
+    }
+}
+
+
+
+/*  Function to compare two strings.  Strings are "equalivalent"
+ *  if they match Name at the same alleles (and, thus, disagree at the
+ *  same alleles).  We don't care what the disagreement is, just that
+ *  it is there.
+ *
+ *  NOTE that because it is possible to get stuck in an infinite
+ *  loop while doing duplicate checking on this string (assuming that
+ *  the mutation operator is always beneficial), we ALWAYS return PGA_FALSE.
+ *  The code is left as an example (and for testing).
+ */
+int N_Duplicate(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+    int          i, match;
+    char         a, b, c;
+    
+    match = PGA_TRUE;
+
+    for (i=PGAGetStringLength(ctx)-1; match && i>=0; i--) {
+	a = PGAGetCharacterAllele(ctx, p1, pop1, i);
+	b = PGAGetCharacterAllele(ctx, p2, pop2, i);
+	c = Name[i];
+	if (((a == c) && (b != c)) || ((a != c) && (b == c))) 
+	    match = PGA_FALSE;
+    }
+
+    return(match);
+}
+
+
+/*  Function to muatate a PGA_DATATYPE_CHARACTER string.  This is done
+ *  by simply picking allele locations and replacing whatever was there.
+ *  Again, legal values are all printable ASCII characters.
+ */
+int N_Mutation(PGAContext *ctx, int p, int pop, double mr) {
+    int               i, count;
+
+    count = 0;
+    for(i=PGAGetStringLength(ctx)-1; i>=0; i--)
+	if (PGAGetCharacterAllele(ctx, p, pop, i) != Name[i]) {
+	    if (PGARandomFlip(ctx, mr) == PGA_TRUE) {
+		PGASetCharacterAllele(ctx, p, pop, i,
+				      PGARandomInterval(ctx, 32, 126));
+		count++;
+	    }
+	}
+    return(count);
+}
+
+
+/*  Function to print a string.  Since fortran does NOT support
+ *  C file handles, we just print normally.  If we we're in C,
+ *  we would print to the file "file".
+ */
+void N_PrintString(PGAContext *ctx, FILE *file, int p, int pop) {
+    int          i;
+    char         string[71];
+
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+	string[i] = PGAGetCharacterAllele(ctx, p, pop, i);
+    string[70] = 0;
+
+    fprintf(file," :%s:\n", string);
+}
+
+
+/*  Function to check "doneness" of the GA.  We check the iteration
+ *  count (by calling PGACheckStoppingConditions), then check if we have found
+ *  the string yet.
+ */
+int N_StopCond(PGAContext *ctx) {
+    int   done, best;
+
+    done = PGACheckStoppingConditions(ctx);
+
+    best = PGAGetBestIndex(ctx, PGA_OLDPOP);
+    if ((done == PGA_FALSE) && 
+	(PGAGetEvaluation(ctx, best, PGA_OLDPOP) ==
+	 PGAGetStringLength(ctx)))
+	done = PGA_TRUE;
+
+    return(done);
+}
+
+
+
+/*  After each generation, this routine is called.  What is done here,
+ *  is to print the best string in our own format, then check if the
+ *  best string is close to the correct value.  If it is, duplicate
+ *  checking is tunred off.  This is critical, as the mutation operator
+ *  will not degrade a string, so when the strings get near the correct
+ *  solution, they all become duplicates, but none can be changed!
+ *
+ *  Other applications have done such things as send the best string 
+ *  to another process to be visualized.  For here, we just call our
+ *  print string function to print the best string.
+ */
+void N_EndOfGen(PGAContext *ctx) {
+    int best;
+
+
+    best = PGAGetBestIndex(ctx, PGA_NEWPOP);
+    N_PrintString(ctx, stdout, best, PGA_NEWPOP);
+
+    if (PGAGetEvaluation(ctx, best, PGA_NEWPOP) >=
+	PGAGetStringLength(ctx)-10) 
+	PGASetNoDuplicatesFlag(ctx, PGA_FALSE);
+}
+
+    
+/*  Evaluate the string.  A highly fit string will have many of
+ *  the characters matching Name.
+ */
+double EvalName(PGAContext *ctx, int p, int pop) {
+    int     i, count;
+    
+    count = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	if (PGAGetCharacterAllele(ctx, p, pop, i) == Name[i])
+	    count++;
+    }
+    
+    return((double)count);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/test.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/test.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/test.c	(revision 6168)
@@ -0,0 +1,40 @@
+From levine@mcs.anl.gov Mon Nov 27 16:53:21 1995
+Received: from jadoube (jadoube.mcs.anl.gov [140.221.7.137]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
+	id QAA23813 for <walenz@mcs.anl.gov>; Mon, 27 Nov 1995 16:53:21 -0600
+From: David Levine <levine@mcs.anl.gov>
+Date: Mon, 27 Nov 1995 16:53:19 -0600
+Message-Id: <199511272253.QAA01962@jadoube>
+To: walenz@mcs.anl.gov
+Status: R
+
+
+#include "pgapack.h"
+double evaluate (PGAContext *ctx, int p, int pop);
+
+int main(int argc, char **argv)
+{
+    PGAContext *ctx;
+    int rank;
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+    PGASetUp   (ctx);
+    rank = PGAGetRank(ctx, MPI_COMM_WORLD);
+    PGAEvaluate(ctx, PGA_OLDPOP, evaluate, MPI_COMM_WORLD);
+    if ( rank == 0 )
+        PGAFitness (ctx, PGA_OLDPOP);
+    while(!PGADone(ctx, MPI_COMM_WORLD)) {
+        if ( rank == 0 ) {
+            PGASelect                 (ctx, PGA_OLDPOP);
+            PGARunMutationAndCrossover(ctx, PGA_OLDPOP, PGA_NEWPOP);
+        }
+        PGAEvaluate(ctx, PGA_OLDPOP, evaluate, MPI_COMM_WORLD);
+        if ( rank == 0 )
+            PGAFitness                (ctx, PGA_NEWPOP);
+        PGAUpdateGeneration           (ctx, MPI_COMM_WORLD);
+        if ( rank == 0 )
+            PGAPrintReport            (ctx, stdout, PGA_OLDPOP);
+    }
+    PGADestroy(ctx);
+    return(0);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/udtstr.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/udtstr.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/c/udtstr.c	(revision 6168)
@@ -0,0 +1,288 @@
+/*****************************************************************************
+ * The chromosome in this example is a structure containing three doubles    *
+ * representing a translation along each of the x-, y-, and z-axes; three    *
+ * doubles representing a rotation about each the axes; and forty ints       *
+ * representing an index to side chain rotations.  This is a simple          *
+ * illustration of how to set up a molecular docking problem.                *
+ *****************************************************************************/
+#include <pgapack.h>
+
+double       energy           (double *, int *);
+double       Evaluate         (PGAContext *, int, int);
+void         CreateString     (PGAContext *, int, int, int);
+int          Mutation         (PGAContext *, int, int, double);
+void         Crossover        (PGAContext *, int, int, int, int, int, int);
+void         WriteString      (PGAContext *, FILE *, int, int);
+void         CopyString       (PGAContext *, int, int, int, int);
+int          DuplicateString  (PGAContext *, int, int, int, int);
+MPI_Datatype BuildDT          (PGAContext *, int, int);
+
+typedef struct {
+    double t[6];          /* ligand translation and rotation */
+    int    sc[40];        /* ligand sidechain rotations      */
+} ligand;
+
+int main(int argc, char **argv) {
+    PGAContext *ctx;
+
+    
+#undef LAUNCH_DEBUGGER
+#ifdef LAUNCH_DEBUGGER
+   {
+     char leg[100];
+     sprintf(leg,"cvd -pid %d &",(int) getpid());
+     system(leg);
+     system("sleep 20");
+   }
+#endif
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_USER, 46, PGA_MINIMIZE);
+    PGASetRandomSeed    (ctx, 1);
+    PGASetMaxGAIterValue(ctx, 5000);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_CREATESTRING,  (void *)CreateString);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_MUTATION,      (void *)Mutation);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_CROSSOVER,     (void *)Crossover);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_PRINTSTRING,   (void *)WriteString);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_COPYSTRING,    (void *)CopyString);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_DUPLICATE,     (void *)DuplicateString);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_BUILDDATATYPE, (void *)BuildDT);
+    PGASetUp            (ctx);
+    PGARun              (ctx, Evaluate);
+    PGADestroy          (ctx);
+    return (0);
+}
+
+
+/*****************************************************************************
+ * CreateString allocates and initializes a chromosome.  If InitFlag is      *
+ * set to true, then it will randomly initialize the chromosome; otherwise,  *
+ * it sets each double to 0.0 and each int to 0.                             *
+ *****************************************************************************/
+void CreateString(PGAContext *ctx, int p, int pop, int InitFlag) {
+    int i;
+    ligand *ligand_ptr;
+    PGAIndividual *new;
+
+    new = PGAGetIndividual(ctx, p, pop);
+    if (!(new->chrom = malloc(sizeof(ligand)))) {
+        fprintf(stderr, "No room for new->chrom");
+        exit(1);
+    }
+    ligand_ptr = (ligand *)new->chrom;
+    if (InitFlag) {
+        for (i = 0; i < 3; i++)
+            ligand_ptr->t[i] = PGARandom01(ctx, 0) * 20.0 - 10.0;
+        for (i = 3; i < 6; i++)
+            ligand_ptr->t[i] = PGARandom01(ctx, 0) * 6.28 - 3.14;
+        for (i = 0; i < 40; i++)
+            ligand_ptr->sc[i] = PGARandomInterval(ctx, -20, 20);
+    } else {
+        for (i = 0; i < 6; i++)
+            ligand_ptr->t[i] = 0.0;
+        for (i = 0; i < 40; i++)
+            ligand_ptr->sc[i] = 0;
+    }
+}
+
+
+/*****************************************************************************
+ * Mutation performs mutation on a chromosome.  Each allele has a mr         *
+ * probability of being changed.  Mutation here perturbs each double by one  *
+ * tenth and each int by 1.                                                  *
+ *****************************************************************************/
+int Mutation(PGAContext *ctx, int p, int pop, double mr) {
+    ligand *ligand_ptr;
+    int i, count = 0;
+
+    ligand_ptr = (ligand *)PGAGetIndividual(ctx, p, pop)->chrom;
+    for (i = 0; i < 6; i++)
+        if (PGARandomFlip(ctx, mr)) {
+            if (PGARandomFlip(ctx, 0.5))
+                ligand_ptr->t[i] += 0.1*ligand_ptr->t[i];
+            else
+                ligand_ptr->t[i] -= 0.1*ligand_ptr->t[i];
+            count++;
+        }
+    for (i = 0; i < 40; i++)
+        if (PGARandomFlip(ctx, mr)) {
+            if (PGARandomFlip(ctx, 0.5))
+                ligand_ptr->sc[i] += 1;
+            else
+                ligand_ptr->sc[i] -= 1;
+            count++;
+        }
+    return (count);
+}
+
+
+/*****************************************************************************
+ * Crossover implements uniform crossover on the chromosome.                 *
+ *****************************************************************************/
+void Crossover(PGAContext *ctx, int p1, int p2, int pop1, int t1, int t2,
+               int pop2) {
+    int i;
+    ligand *parent1, *parent2, *child1, *child2;
+    double pu;
+
+    parent1 = (ligand *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    parent2 = (ligand *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+    child1  = (ligand *)PGAGetIndividual(ctx, t1, pop2)->chrom;
+    child2  = (ligand *)PGAGetIndividual(ctx, t2, pop2)->chrom;
+
+    pu = PGAGetUniformCrossoverProb(ctx);
+
+    for (i = 0; i < 6; i++)
+            if (PGARandomFlip(ctx, pu)) {
+                child1->t[i] = parent1->t[i];
+                child2->t[i] = parent2->t[i];
+            } else {
+                child1->t[i] = parent2->t[i];
+                child2->t[i] = parent1->t[i];
+            }
+    for (i = 0; i < 40; i++)
+            if (PGARandomFlip(ctx, pu)) {
+                child1->sc[i] = parent1->sc[i];
+                child2->sc[i] = parent2->sc[i];
+            } else {
+                child1->sc[i] = parent2->sc[i];
+                child2->sc[i] = parent1->sc[i];
+            }
+}
+
+
+/*****************************************************************************
+ * WriteString sends a visual representation of the chromosome to the file   *
+ * fp.                                                                       *
+ *****************************************************************************/
+void WriteString(PGAContext *ctx, FILE *fp, int p, int pop) {
+    ligand *ligand_ptr;
+    int i;
+
+    ligand_ptr = (ligand *)PGAGetIndividual(ctx, p, pop)->chrom;
+    
+    fprintf(fp, "Position: [%11.7g, %11.7g, %11.7g]\n", 
+	    ligand_ptr->t[0], ligand_ptr->t[1], ligand_ptr->t[2]);
+    fprintf(fp, "Rotation: [%11.7g, %11.7g, %11.7g]\n", 
+	    ligand_ptr->t[3], ligand_ptr->t[4], ligand_ptr->t[5]);
+
+    fprintf(fp, "Sidechains:\n");
+    for (i=0; i<40; i+=8) {
+	fprintf(fp,"%2d: [%4ld] [%4ld] [%4ld] [%4ld]"
+		       " [%4ld] [%4ld] [%4ld] [%4ld]\n", i, 
+		ligand_ptr->sc[i+0], ligand_ptr->sc[i+2], 
+		ligand_ptr->sc[i+2], ligand_ptr->sc[i+3], 
+		ligand_ptr->sc[i+4], ligand_ptr->sc[i+5], 
+		ligand_ptr->sc[i+6], ligand_ptr->sc[i+7]);
+    }
+
+    fprintf ( fp, "\n" );
+}
+
+
+/*****************************************************************************
+ * CopyString makes a copy of the chromosome at (p1, pop1) and puts it at    *
+ * (p2, pop2).                                                               *
+ *****************************************************************************/
+void CopyString(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+    void *d, *s;
+
+     s = PGAGetIndividual(ctx, p1, pop1)->chrom;
+     d = PGAGetIndividual(ctx, p2, pop2)->chrom;
+     memcpy(d, s, sizeof(ligand));
+}
+
+
+/*****************************************************************************
+ * DuplicateString compares two chromosomes and returns 1 if they are the    *
+ * same and 0 if they are different.                                         *
+ *****************************************************************************/
+int DuplicateString(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+    void *a, *b;
+
+     a = PGAGetIndividual(ctx, p1, pop1)->chrom;
+     b = PGAGetIndividual(ctx, p2, pop2)->chrom;
+     return (!memcmp(a, b, sizeof(ligand)));
+}
+
+
+/*****************************************************************************
+ * BuildDatattype builds an MPI datatype for sending strings to other        *
+ * processors.  Consult your favorite MPI manual for more information.       *
+ *****************************************************************************/
+MPI_Datatype BuildDT(PGAContext *ctx, int p, int pop) {
+  int             counts[5];
+  MPI_Aint        displs[5];
+  MPI_Datatype    types[5];
+  MPI_Datatype    DT_PGAIndividual;
+  PGAIndividual  *P;
+  ligand         *S;
+
+  P = PGAGetIndividual(ctx, p, pop);
+  S = (ligand *)P->chrom;
+
+  /*  Build the MPI datatype.  Every user defined function needs these.
+   *  The first two calls are stuff that is internal to PGAPack, but 
+   *  the user still must include it.  See pgapack.h for details one the
+   *  fields (under PGAIndividual)
+   */
+  MPI_Address(&P->evalfunc, &displs[0]);
+  counts[0] = 2;
+  types[0]  = MPI_DOUBLE;
+
+  /*  Next, we have an integer, evaluptodate.  */  
+  MPI_Address(&P->evaluptodate, &displs[1]);
+  counts[1] = 1;
+  types[1]  = MPI_INT;
+
+  /*  Finally, we have the actual user-defined string.  */
+  MPI_Address(S->t, &displs[2]);
+  counts[2] = 6;
+  types[2]  = MPI_DOUBLE;
+
+  MPI_Address(S->sc, &displs[3]);
+  counts[3] = 40;
+  types[3]  = MPI_INT;
+
+  MPI_Type_struct(4, counts, displs, types, &DT_PGAIndividual);
+  MPI_Type_commit(&DT_PGAIndividual);
+  return(DT_PGAIndividual);
+}
+
+
+
+double Evaluate(PGAContext *ctx, int p, int pop) {
+    int     i;
+    double  x[6];
+    int     sc[40];
+    ligand *lig;
+#if 0
+#ifndef FAKE_MPI
+  int cpuid=0;
+  MPI_Comm_rank(MPI_COMM_WORLD,&cpuid);
+  printf("cpuid=%d\n",cpuid);
+#endif
+#endif
+
+    lig = (ligand *)PGAGetIndividual(ctx, p, pop)->chrom;
+    for (i = 0; i < 6; i++)
+        x[i] = lig->t[i];
+    for (i = 0; i < 40; i++)
+        sc[i] = lig->sc[i];
+    return ( energy(x,sc) );
+}
+
+
+#define SQ(z)  ((z)*(z))
+
+/*  For now just return distance from some fixed point plus
+ *  a penalty for not being aligned to the x, y and z axes.
+ *  The angles are divided by two so that we are in a range
+ *  that only has one zero.
+ */
+double energy(double *x, int *sc) {
+    double d;
+
+    d = sqrt( SQ(x[0]-1) + SQ(x[1]-2) + SQ(x[2]-3)) +
+	SQ(sin(x[3]/2)) + SQ(sin(x[4]/2)) + SQ(sin(x[5]/2));
+
+    return (d);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/Makefile.in	(revision 6168)
@@ -0,0 +1,52 @@
+FC           = @FC@
+PREFFLAGS    = @FFLAGS@
+RM           = @RM@
+LDFLAGS      = @LDFLAGS@
+SHELL        = @SHELL@
+
+#    "$@" expands to the target; "$?" expands to the dependency list
+FFLAGS      = -o $@ $? $(PREFFLAGS)
+
+LINK.f       = if test -n "$(FC)"; \
+                   then echo "  Compiling $@" ; $(FC) $(FFLAGS) $(LDFLAGS); \
+               else \
+                   echo "$@: Fortran compiler unavailable"; fi
+
+default:
+	@make classic
+	@make dejong
+	@make example
+	@make maxbit
+	@make maxchar
+	@make maxint 
+	@make name
+	@make namefull
+
+
+classic: classic.f
+	@$(LINK.f)
+
+dejong: dejong.f
+	@$(LINK.f)
+
+example: example.f
+	@$(LINK.f)
+
+maxbit: maxbit.f
+	@$(LINK.f)
+
+maxchar: maxchar.f
+	@$(LINK.f)
+
+maxint: maxint.f
+	@$(LINK.f)
+
+name: name.f
+	@$(LINK.f)
+
+namefull: namefull.f
+	@$(LINK.f)
+
+clean: 
+	@$(RM) classic dejong example maxbit maxchar maxint name namefull *.o
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/README	(revision 6168)
@@ -0,0 +1,27 @@
+Seven example FORTRAN programs come with PGAPack.  What follows is a listing 
+of the names of the programs and a brief description of their function.
+
+classic.f  -- Optimizes one of Griewank;s test function, Rastrigin's test
+              function, or Schwefel's test function.  All use a real valued
+	      datatype.
+
+dejong.f   -- This program optimizes one of the five functions from the DeJong
+              test suite with a binary string as the chromosome.  Graycoding is
+              an option.
+
+example.f  -- An example from the User's Guide.
+
+maxbit.f   -- A very simple example that maximizes the number of 1's in a
+              binary string.  Does no I/O.
+
+maxchar.f  -- Maximizes the number of z's in a character string.  Does I/O.
+
+maxint.f   -- Maximizes the sum of all alleles in the gene.
+
+name.f     -- Evolves a character string to match a hard-coded string.  Does
+              no I/O, but shows how to use userfunctions InitString, Mutation,
+              and Done.  Also uses an elitist model of evolution with no
+              crossover.
+
+namefull.f -- Same idea as above, but uses all native user defined functions.
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/classic.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/classic.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/classic.f	(revision 6168)
@@ -0,0 +1,160 @@
+c     Miscelaneous test functions.
+c
+c     Rather than deal with parallel I/O, we just list the tests here:
+c       1.  Griewank
+c       2.  Rastrigin
+c       3.  Schwefel
+c
+      include 'pgapackf.h'
+      include 'mpif.h'
+
+      double precision  griewank, rastrigin, schwefel
+      external          griewank, rastrigin, schwefel
+      
+      integer           GetIntegerParameter
+      external          GetIntegerParameter
+
+      double precision  Lower(3), Upper(3)
+      integer           NumCoords(3)
+      common /data/     Lower, Upper, NumCoords
+
+      integer ctx
+      integer           testnum, maxiter, i, ierror
+      double precision  l(20), u(20)
+
+c
+c                   user main program                              
+c
+
+      call MPI_Init(ierror)
+
+c     Yes, it's ugly, but it does work...
+      testnum = GetIntegerParameter('Which test? (1-Griewank, 2-Rastrigi
+     &n, 3-Schwefel) ')
+      maxiter = GetIntegerParameter('How many iterations?               
+     &               ')
+
+      do i=1, 20
+         l(i) = Lower(testnum)
+         u(i) = Upper(testnum)
+      enddo
+
+      ctx = PGACREATE(PGA_DATATYPE_REAL, NumCoords(testnum),
+     &                PGA_MINIMIZE)
+    
+c      ctx = PGACreate(PGA_DATATYPE_REAL, NumCoords(testnum),
+c     &                PGA_MINIMIZE)
+    
+      call PGASetRandomSeed(ctx, 1)
+
+      call PGASetRealInitRange(ctx, l, u)
+      call PGASetMaxGAIterValue(ctx, maxiter)
+    
+      call PGASetUp(ctx)
+
+      if (testnum .eq. 1)    call PGARun(ctx, griewank)
+      if (testnum .eq. 2)    call PGARun(ctx, rastrigin)
+      if (testnum .eq. 3)    call PGARun(ctx, schwefel)
+
+      call PGADestroy(ctx)
+    
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+      double precision function griewank(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, len
+      double precision  allele, sum, product
+
+      sum = 0.
+      product = 1.
+      len = PGAGetStringLength(ctx)
+      do i=1, len
+         allele = PGAGetRealAllele(ctx, p, pop, i)
+         sum = sum + (allele * allele / 4000.)
+         product = product * dcos(allele / sqrt((dble(i))))
+      enddo
+
+      griewank = 1. + sum - product
+      return
+      end
+
+
+      double precision function rastrigin(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, len
+      double precision  allele, sum
+
+      sum = 0.
+      len = PGAGetStringLength(ctx)
+      do i=1, len
+         allele = PGAGetRealAllele(ctx, p, pop, i)
+         sum = sum + allele * allele - 10.d0 * 
+     &        dcos(6.28318530718d0 * allele)
+      enddo
+
+      rastrigin = dble(len-1) + sum
+      return
+      end
+
+
+
+      double precision function schwefel(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, len
+      double precision  allele, sum
+
+      sum = 0.
+      len = PGAGetStringLength(ctx)
+      do i=1, len
+         allele = PGAGetRealAllele(ctx, p, pop, i)
+         sum = sum - allele * dsin(dsqrt(dabs(allele)))
+      enddo
+     
+      schwefel = sum
+      return
+      end
+
+
+
+c     Get an integer parameter from the user.  Since this is
+c     typically a parallel program, we must only do I/O on the
+c     "master" process -- process 0.  Once we read the parameter,
+c     we broadcast it to all the other processes, then every 
+c     process returns the correct value.
+c     
+      integer function GetIntegerParameter(query)
+      include 'pgapackf.h'
+      include 'mpif.h'
+      character*52 query
+      integer  rank, tmp, ierror
+
+      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierror)
+      if (rank .eq. 0) then
+         print *, query
+         read *, tmp
+      endif
+      call MPI_Bcast(tmp, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+
+      GetIntegerParameter = tmp
+      return
+      end
+
+
+      block data
+      integer i
+      double precision Lower(3), Upper(3)
+      integer NumCoords(3)
+      common /data/    Lower, Upper, NumCoords
+
+      data (NumCoords(i), i=1,3) / 10, 20, 10 /
+      data (Lower(i), i=1,3)     / -512.0, -5.12, -512.0 /
+      data (Upper(i), i=1,3)     / 511.0, 5.11, 511.0 /
+
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/dejong.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/dejong.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/dejong.f	(revision 6168)
@@ -0,0 +1,310 @@
+c  The DeJong test suite.
+c
+c
+
+      include 'pgapackf.h'
+      include 'mpif.h'
+
+      double precision  dejong1, dejong2, dejong3, dejong4, dejong5
+      external          dejong1, dejong2, dejong3, dejong4, dejong5
+
+      integer           GetIntegerParameter
+      external          GetIntegerParameter
+
+      integer           gray_on
+      integer           BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+
+      integer ctx
+      integer           testnum, maxiter, ierror
+
+
+c
+c                   user main program
+c
+
+      call MPI_Init(ierror)
+
+      testnum = GetIntegerParameter('Which test? (1 - 5)        ')
+      gray_on = GetIntegerParameter('Gray-coded? (1=yes, 0 = no)')
+      maxiter = GetIntegerParameter('How many iterations?       ')
+
+      ctx = PGACreate(PGA_DATATYPE_BINARY, 
+     &     BinLen(testnum)*NumCoords(testnum), PGA_MINIMIZE)
+
+      call PGASetMaxGAIterValue(ctx, maxiter)
+      call PGASetRandomSeed(ctx, 1)
+    
+      call PGASetUp(ctx)
+
+      if (testnum .eq. 1)    call PGARun(ctx, dejong1)
+      if (testnum .eq. 2)    call PGARun(ctx, dejong2)
+      if (testnum .eq. 3)    call PGARun(ctx, dejong3)
+      if (testnum .eq. 4)    call PGARun(ctx, dejong4)
+      if (testnum .eq. 5)    call PGARun(ctx, dejong5)
+
+      call printResultInterpretation(ctx, testnum)
+
+      call PGADestroy(ctx)
+    
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+      double precision function GetTerm(ctx, p, pop, t, problem) 
+      include           'pgapackf.h'
+      integer ctx
+      integer            p, pop, t, problem, len
+      integer            gray_on, BinLen(5), NumCoords(5)
+      double precision   Lower(5), Upper(5)
+      common /data/      BinLen, NumCoords, Lower, Upper, gray_on
+      double precision   x, l, u
+
+      len = BinLen(problem)
+      l   = Lower(problem)
+      u   = Upper(problem)
+
+      if (gray_on .eq. 1) then
+         x = PGAGetRealFromGrayCode(ctx, p, pop, (t-1)*len+1,
+     &        t*len, l, u)
+      else
+         x = PGAGetRealFromBinary(ctx, p, pop, (t-1)*len+1, 
+     &        t*len, l, u)
+      endif
+
+      GetTerm = x
+      return
+      end
+
+
+      double precision function dejong1(ctx, p, pop) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop
+      double precision  GetTerm
+      external          GetTerm 
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      integer           i
+      double precision  term, sum
+
+      sum = 0.
+    
+      do i=1, NumCoords(1)
+         term = GetTerm(ctx, p, pop, i, 1)
+         sum = sum + (term * term)
+      enddo
+      
+      dejong1 = sum
+      return
+      end
+
+
+      double precision function dejong2(ctx, p, pop) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop
+      double precision  GetTerm
+      external          GetTerm
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      double precision  x1, x2, p1, p2
+    
+      x1 = GetTerm(ctx, p, pop, 1, 2)
+      x2 = GetTerm(ctx, p, pop, 2, 2)
+      p1 = x1 * x1 - x2
+      p2 = 1 - x1
+
+      dejong 2 = 100 * p1 * p1 + p2 * p2
+      return
+      end
+
+
+      double precision function dejong3(ctx, p, pop) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i
+      double precision  GetTerm
+      external          GetTerm
+      double precision  sum
+      external          ffloor
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      double precision  ffloor
+
+      sum = 0.
+    
+      do i=1, NumCoords(3)
+         sum = sum + ffloor(GetTerm(ctx, p, pop, i, 3)) 
+      enddo
+         
+      dejong3 = sum
+      return
+      end
+
+
+
+      double precision function dejong4(ctx, p, pop) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop
+      double precision  GetTerm
+      external          GetTerm
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      integer           i
+      double precision  term, sum
+      
+      sum = 0.
+      do i=1, NumCoords(4)
+         term = GetTerm(ctx, p, pop, i, 4)
+         sum = sum + (i * term * term * term * term)
+      enddo
+    
+      
+      dejong4 = sum + PGARandomGaussian(ctx, 0d0, 1d0)
+      return
+      end
+
+
+      double precision function dejong5(ctx, p, pop) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, j
+      double precision  GetTerm
+      external          GetTerm
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      double precision  a(2,25)
+      double precision  sum_over_i, sum_over_j
+
+      sum_over_i = 0.
+      sum_over_j = 0.
+
+      do i=0, 4
+         a(1,5*i+1)   = -32.
+         a(2,i+1)     = -32.
+         
+         a(1,5*i+2) = -16.
+         a(2,i+6)   = -16.
+         
+         a(1,5*i+3) = 0.
+         a(2,i+11)  = 0.
+         
+         a(1,5*i+4) = 16.
+         a(2,i+16)  = 16.
+         
+         a(1,5*i+5) = 32.
+         a(2,i+21)  = 32.
+      enddo
+      
+      
+      do j=1, 25
+         sum_over_i =
+     &        (GetTerm(ctx, p, pop, 1, 5) - a(1,j)) ** 6 +
+     &        (GetTerm(ctx, p, pop, 2, 5) - a(2,j)) ** 6
+         sum_over_j = sum_over_j + (1.0d0 / (dble(j-1) + sum_over_i))
+      enddo
+    
+      dejong5 = 1.0d0 / (0.002d0 + sum_over_j)
+      return
+      end
+
+
+
+c     Since the linker searches this file first, if this function were
+c     called just "floor", PGAPack would break.  (PGAPack uses a floor
+c     function also).
+c
+      double precision function ffloor(x)
+      double precision  x, y
+
+      y = int(x)
+      if (x .lt. 0 .and. x .ne. y) then
+         y = y - 1
+      endif
+      ffloor = y
+
+      end
+
+
+
+
+
+      subroutine printResultInterpretation(ctx, problem)
+      include          'pgapackf.h'
+      include          'mpif.h'
+      integer ctx
+      integer           problem, best, i
+      double precision  GetTerm
+      external          GetTerm
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      double precision  value
+      integer comm
+
+
+      comm = PGAGetCommunicator(ctx)
+      if (PGAGetRank(ctx, comm) .eq. 0) then
+c      if (PGAGetRank(ctx, MPI_COMM_WORLD) .eq. 0) then
+         best = PGAGetBestIndex(ctx, PGA_OLDPOP)
+	
+         print *, 'The real interpretation:'
+         do i=1, NumCoords(problem)
+	    value = GetTerm(ctx, best, PGA_OLDPOP, i, problem)
+	    
+            print *, '#', i, ': ', value
+         enddo
+
+      endif
+
+      return
+      end
+
+
+c     Get an integer parameter from the user.  Since this is
+c     typically a parallel program, we must only do I/O on the
+c     "master" process -- process 0.  Once we read the parameter,
+c     we broadcast it to all the other processes, then every 
+c     process returns the correct value.
+c     
+      integer function GetIntegerParameter(query)
+      include      'pgapackf.h'
+      include      'mpif.h'
+      character*27  query
+      integer       rank, tmp, ierror
+
+      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierror)
+      if (rank .eq. 0) then
+         print *, query
+         read *, tmp
+      endif
+      call MPI_Bcast(tmp, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+
+      GetIntegerParameter = tmp
+      return
+      end
+
+
+      block data
+      integer i
+      double precision Lower(5), Upper(5)
+      integer gray_on, BinLen(5), NumCoords(5)
+      common /data/ BinLen, NumCoords, Lower, Upper, gray_on
+
+      data (BinLen(i), i=1,5)    / 10, 12, 10, 8, 17 /
+      data (NumCoords(i), i=1,5) / 3, 2, 5, 30, 2 /
+      data (Lower(i), i=1,5)     / -5.12,-2.048,-5.12,-1.28,-65.536 /
+      data (Upper(i), i=1,5)     / 5.11, 2.047, 5.11, 1.27, 65.535 /
+
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/example.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/example.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/example.f	(revision 6168)
@@ -0,0 +1,66 @@
+      include 'pgapackf.h'
+
+      double precision evaluate
+      integer          myMutation
+      external         evaluate, myMutation
+      
+      integer ctx
+      integer          i, ierror
+      integer          lower(10), upper(10)
+
+      do i=1, 10
+         lower(i) = 1
+         upper(i) = 10
+      enddo
+
+      call MPI_Init(ierror)
+
+      ctx = PGACreate         (PGA_DATATYPE_INTEGER, 10, PGA_MAXIMIZE)
+      call PGASetUserFunction (ctx, PGA_USERFUNCTION_MUTATION,
+     &                         myMutation)
+      call PGASetIntegerInitRange(ctx, lower, upper)
+      call PGASetUp              (ctx)
+      call PGARun                (ctx, evaluate)
+      call PGADestroy            (ctx)
+
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+      integer function myMutation(ctx, p, pop, pm)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop
+      double precision  pm
+      integer           stringlen, i, k, count
+
+      count = 0
+      stringlen = PGAGetStringLength(ctx)
+      do i=1, stringlen
+         if (PGARandomFlip(ctx, pm) .eq. PGA_TRUE) then
+            k = PGARandomInterval(ctx, 1, stringlen)
+            call PGASetIntegerAllele(ctx, p, pop, i, k)
+            count = count + 1
+         endif
+      enddo
+      myMutation = count
+      return
+      end
+
+
+      double precision function evaluate(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer          p, pop
+      integer          stringlen, i, sum
+
+      sum = 0
+      stringlen = PGAGetStringLength(ctx)
+      do i=1, stringlen
+         sum = sum + PGAGetIntegerAllele(ctx, p, pop, i)
+      enddo
+      evaluate = sum
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/maxbit.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/maxbit.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/maxbit.f	(revision 6168)
@@ -0,0 +1,55 @@
+c     
+c     This is a test program for PGAPack.  The objective is to maximize the
+c     number of 1-bits in a chromosome.
+c     
+
+      include 'pgapackf.h'
+
+      double precision NumberOfSetBits
+      external         NumberOfSetBits
+      
+c     
+c     user main program
+c     
+      integer ctx
+      integer       ierror
+
+      call MPI_Init(ierror)
+
+      ctx = PGACreate(PGA_DATATYPE_BINARY, 256, PGA_MAXIMIZE)
+      call PGASetRandomSeed(ctx, 1)
+
+      call PGASetUp(ctx)
+      call PGARun(ctx, NumberOfSetBits)
+      call PGADestroy(ctx)
+
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+c     
+c     user defined evaluation function
+c     ctx - contex variable
+c     p   - chromosome index in population
+c     pop - which population to refer to
+c     
+      double precision function NumberOfSetBits(ctx, p, pop) 
+      include    'pgapackf.h'
+      integer ctx
+      integer     p, pop
+      integer     i, nbits, stringlen
+
+      stringlen = PGAGetStringLength(ctx)
+      
+      nbits = 0
+      do i=1, stringlen
+         if (PGAGetBinaryAllele(ctx, p, pop, i) .eq. 1) then
+            nbits = nbits + 1
+         endif
+      enddo
+
+      NumberOfSetBits = dble(nbits)
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/maxchar.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/maxchar.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/maxchar.f	(revision 6168)
@@ -0,0 +1,123 @@
+c     Does not work, run it and see what happens.
+
+
+c       
+c     This is a test program for PGAPack.  The objective is to 
+c     maximize the number of 'z's in a chromosome.
+c       
+
+      include 'pgapackf.h'
+      include 'mpif.h'
+      
+      double precision NumberOfZs
+      integer          myMutation
+      integer          GetIntegerParameter
+      external         NumberOfZs
+      external         myMutation
+      external         GetIntegerParameter
+      
+      integer ctx
+      integer          len, maxiter, ierror
+      
+c     
+c     user main program
+c     
+      call MPI_Init(ierror)
+      
+      len     = GetIntegerParameter('String length?      ')
+      maxiter = GetIntegerParameter('How many iterations?')
+      
+      ctx     = PGACreate(PGA_DATATYPE_CHARACTER, len, PGA_MAXIMIZE)
+      
+      call PGASetRandomSeed(ctx, 1)
+      call PGASetMaxGAIterValue(ctx, maxiter)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,
+     &     myMutation)
+      
+      call PGASetUp(ctx)
+      call PGARun(ctx, NumberOfZs)
+      call PGADestroy(ctx)
+      
+      call MPI_Finalize(ierror)
+      
+      stop
+      end
+      
+
+
+c
+c     user defined evaluation function
+c     ctx - contex variable
+c     p   - chromosome index in population
+c     pop - which population to refer to
+c     
+      double precision function NumberOfZs(ctx, p, pop)
+      include     'pgapackf.h'
+      integer ctx
+      integer      p, pop, i, nzs, stringlen
+      
+      stringlen = PGAGetStringLength(ctx)
+      
+      nzs = 0
+      do i=1, stringlen
+         if (PGAGetCharacterAllele(ctx, p, pop, i) .eq. 'z') then
+            nzs = nzs + 1
+         endif
+      enddo
+      
+      NumberOfZs = dble(nzs)
+      return
+      end
+
+
+
+c     Custom mutation function.  Searches for an unset bit, 
+c     then sets it.  Returns the number of bits that are changed.
+c     
+      integer function myMutation(ctx, p, pop, mr)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, count
+      character         c
+      double precision  mr
+
+
+      count = 0
+      do i=PGAGetStringLength(ctx), 1, -1
+         if (PGARandomFlip(ctx, mr) .eq. 1) then
+            c = PGAGetCharacterAllele(ctx, p, pop, i)
+            if (c .ne. 'z') then
+               call PGASetCharacterAllele(ctx, p, pop, i,
+     &              char(ichar(c)+1))
+               count = count + 1
+            endif
+         endif
+      enddo
+      
+      myMutation = count
+      return
+      end
+
+
+c     Get an integer parameter from the user.  Since this is
+c     typically a parallel program, we must only do I/O on the
+c     "master" process -- process 0.  Once we read the parameter,
+c     we broadcast it to all the other processes, then every 
+c     process returns the correct value.
+c     
+      integer function GetIntegerParameter(query)
+      include      'pgapackf.h'
+      include      'mpif.h'
+      character*20  query
+      integer       rank, tmp
+
+      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierror)
+      if (rank .eq. 0) then
+         print *, query
+         read *, tmp
+      endif
+      call MPI_Bcast(tmp, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+
+      GetIntegerParameter = tmp
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/maxint.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/maxint.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/maxint.f	(revision 6168)
@@ -0,0 +1,113 @@
+c     
+c     This is a test program for PGAPack.  The objective is to 
+c     maximize each allele.  The evaluation function sums all allele
+c     values.
+c     
+
+      include 'pgapackf.h'
+      include 'mpif.h'
+
+      double precision evaluate
+      integer          myMutation
+      integer          GetIntegerParameter
+      external         GetIntegerParameter, evaluate, myMutation
+
+c     
+c     user main program
+c     
+      integer ctx
+      integer    len, maxiter, ierror
+
+
+      call MPI_Init(ierror)
+
+      len     = GetIntegerParameter('String length?      ')
+      maxiter = GetIntegerParameter('How many iterations?')
+
+      ctx = PGACreate(PGA_DATATYPE_INTEGER, len, PGA_MAXIMIZE)
+
+      call PGASetRandomSeed(ctx, 1)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,
+     &     myMutation)
+      call PGASetIntegerInitPermute(ctx, 1, len)
+
+      call PGASetMaxGAIterValue(ctx, maxiter)
+      call PGASetNumReplaceValue(ctx, 90)
+      call PGASetMutationAndCrossoverFlag(ctx, PGA_TRUE)
+      call PGASetPrintOptions(ctx, PGA_REPORT_AVERAGE)
+
+      call PGASetUp(ctx)
+
+      call PGARun(ctx, evaluate)
+      call PGADestroy(ctx)
+
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+c     Custom mutation function.  Searches for an unset bit, 
+c     then sets it.  Returns the number of bits that are changed.
+c     
+      integer function myMutation(ctx, p, pop, mr)
+      include          'pgapackf.h'
+      integer ctx, p, pop
+      double precision  mr
+      integer           stringlen, i, v, count
+
+      stringlen = PGAGetStringLength(ctx)
+      count     = 0
+
+      do i=stringlen, 1, -1
+         if (PGARandomFlip(ctx, mr) .eq. PGA_TRUE) then
+	    v = PGARandomInterval(ctx, 1, stringlen)
+            call PGASetIntegerAllele(ctx, p, pop, i, v)
+	    count = count + 1
+         endif
+      enddo
+
+      myMutation = count
+      return
+      end
+
+
+      double precision function evaluate(ctx, p, pop)
+      include  'pgapackf.h'
+      integer ctx, p, pop
+      integer   stringlen, i, sum
+
+
+      stringlen = PGAGetStringLength(ctx)
+      sum       = 0
+
+      do i=stringlen, 1, -1
+         sum = sum + PGAGetIntegerAllele(ctx, p, pop, i) 
+      enddo
+
+      evaluate = dble(sum)
+      return
+      end
+
+
+c     Get an integer parameter from the user.  Since this is
+c     typically a parallel program, we must only do I/O on the
+c     "master" process -- process 0.  Once we read the parameter,
+c     we broadcast it to all the other processes, then every 
+c     process returns the correct value.
+c     
+      integer function GetIntegerParameter(query)
+      include      'pgapackf.h'
+      include      'mpif.h'
+      character*20  query
+      integer       rank, tmp, ierror
+
+      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierror)
+      if (rank .eq. 0) then
+         print *, query
+         read *, tmp
+      endif
+      call MPI_Bcast(tmp, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+
+      GetIntegerParameter = tmp
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/mpif.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/mpif.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/mpif.h	(revision 6168)
@@ -0,0 +1,263 @@
+!
+!  
+!  (C) 1993 by Argonne National Laboratory and Mississipi State University.
+!      All rights reserved.  See COPYRIGHT in top-level directory.
+!
+!
+! user include file for MPI programs, with no dependencies 
+!
+! It really is not possible to make a perfect include file that can
+! be used by both F77 and F90 compilers, but this is close.  We have removed
+! continuation lines (allows free form input in F90); systems whose
+! Fortran compilers support ! instead of just C or * for comments can
+! globally replace a C in the first column with !; the resulting file
+! should work for both Fortran 77 and Fortran 90.
+!
+! If your Fortran compiler supports ! for comments, you can run this 
+! through sed with
+!     sed -e 's/^C/\!/g'
+!
+! We have also removed the use of contractions (involving the single quote)
+! character because some users use .F instead of .f files (to invoke the
+! cpp preprocessor) and further, their preprocessor is determined to find
+! matching single quote pairs (and probably double quotes; given the
+! different rules in C and Fortran, this sounds like a disaster).  Rather than
+! take the position that the poor users should get a better system, we
+! have removed the text that caused problems.  Of course, the users SHOULD
+! get a better system...
+!
+! return codes 
+      INTEGER MPI_SUCCESS,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE
+      INTEGER MPI_ERR_TAG,MPI_ERR_COMM,MPI_ERR_RANK,MPI_ERR_ROOT
+      INTEGER MPI_ERR_GROUP
+      INTEGER MPI_ERR_OP,MPI_ERR_TOPOLOGY,MPI_ERR_DIMS,MPI_ERR_ARG
+      INTEGER MPI_ERR_UNKNOWN,MPI_ERR_TRUNCATE,MPI_ERR_OTHER
+      INTEGER MPI_ERR_INTERN,MPI_ERR_IN_STATUS,MPI_ERR_PENDING
+      INTEGER MPI_ERR_REQUEST, MPI_ERR_LASTCODE
+      PARAMETER (MPI_SUCCESS=0,MPI_ERR_BUFFER=1,MPI_ERR_COUNT=2)
+      PARAMETER (MPI_ERR_TYPE=3,MPI_ERR_TAG=4,MPI_ERR_COMM=5)
+      PARAMETER (MPI_ERR_RANK=6,MPI_ERR_ROOT=7,MPI_ERR_GROUP=8)
+      PARAMETER (MPI_ERR_OP=9,MPI_ERR_TOPOLOGY=10,MPI_ERR_DIMS=11)
+      PARAMETER (MPI_ERR_ARG=12,MPI_ERR_UNKNOWN=13)
+      PARAMETER (MPI_ERR_TRUNCATE=14,MPI_ERR_OTHER=15)
+      PARAMETER (MPI_ERR_INTERN=16,MPI_ERR_IN_STATUS=17)
+      PARAMETER (MPI_ERR_PENDING=18,MPI_ERR_REQUEST=19)
+      PARAMETER (MPI_ERR_LASTCODE=1073741823)
+!
+      INTEGER MPI_UNDEFINED
+      parameter (MPI_UNDEFINED = (-32766))
+!
+      INTEGER MPI_GRAPH, MPI_CART
+      PARAMETER (MPI_GRAPH = 1, MPI_CART = 2)
+      INTEGER  MPI_PROC_NULL
+      PARAMETER ( MPI_PROC_NULL = (-1) )
+!
+      INTEGER MPI_BSEND_OVERHEAD
+      PARAMETER ( MPI_BSEND_OVERHEAD = 512 )
+
+      INTEGER MPI_SOURCE, MPI_TAG, MPI_ERROR
+      PARAMETER(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4)
+      INTEGER MPI_STATUS_SIZE
+      PARAMETER (MPI_STATUS_SIZE=4)
+      INTEGER MPI_MAX_PROCESSOR_NAME, MPI_MAX_ERROR_STRING
+      PARAMETER (MPI_MAX_PROCESSOR_NAME=256)
+      PARAMETER (MPI_MAX_ERROR_STRING=512)
+      INTEGER MPI_MAX_NAME_STRING
+      PARAMETER (MPI_MAX_NAME_STRING=63)
+!
+      INTEGER MPI_COMM_NULL
+      PARAMETER (MPI_COMM_NULL=0)
+!
+      INTEGER MPI_DATATYPE_NULL
+      PARAMETER (MPI_DATATYPE_NULL = 0)
+      
+      INTEGER MPI_ERRHANDLER_NULL
+      PARAMETER (MPI_ERRHANDLER_NULL = 0)
+      
+      INTEGER MPI_GROUP_NULL
+      PARAMETER (MPI_GROUP_NULL = 0)
+      
+      INTEGER MPI_KEYVAL_INVALID
+      PARAMETER (MPI_KEYVAL_INVALID = 0)
+      
+      INTEGER MPI_REQUEST_NULL
+      PARAMETER (MPI_REQUEST_NULL = 0)
+! 
+      INTEGER MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL
+      PARAMETER (MPI_IDENT=0, MPI_CONGRUENT=1, MPI_SIMILAR=2)
+      PARAMETER (MPI_UNEQUAL=3)
+!
+!     MPI_BOTTOM needs to be a known address; here we put it at the
+!     beginning of the common block.  The point-to-point and collective
+!     routines know about MPI_BOTTOM, but MPI_TYPE_STRUCT as yet does not.
+!
+!     MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE are similar objects
+!     Until the underlying MPI library implements the C version of these
+!     (a null pointer), these are declared as arrays of MPI_STATUS_SIZE
+!
+!     The types MPI_INTEGER1,2,4 and MPI_REAL4,8 are OPTIONAL.
+!     Their values are zero if they are not available.  Note that
+!     using these reduces the portability of code (though may enhance
+!     portability between Crays and other systems)
+!
+      INTEGER MPI_TAG_UB, MPI_HOST, MPI_IO
+      INTEGER MPI_BOTTOM
+      INTEGER MPI_STATUS_IGNORE(MPI_STATUS_SIZE)
+      INTEGER MPI_STATUSES_IGNORE(MPI_STATUS_SIZE)
+      INTEGER MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION 
+      INTEGER MPI_COMPLEX, MPI_DOUBLE_COMPLEX,MPI_LOGICAL
+      INTEGER MPI_CHARACTER, MPI_BYTE, MPI_2INTEGER, MPI_2REAL
+      INTEGER MPI_2DOUBLE_PRECISION, MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX
+      INTEGER MPI_UB, MPI_LB
+      INTEGER MPI_PACKED, MPI_WTIME_IS_GLOBAL
+      INTEGER MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY
+      INTEGER MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND
+      INTEGER MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC
+      INTEGER MPI_MAXLOC
+      INTEGER MPI_OP_NULL
+      INTEGER MPI_ERRORS_ARE_FATAL, MPI_ERRORS_RETURN
+!
+      PARAMETER (MPI_ERRORS_ARE_FATAL=119)
+      PARAMETER (MPI_ERRORS_RETURN=120)
+!
+      PARAMETER (MPI_COMPLEX=23,MPI_DOUBLE_COMPLEX=24,MPI_LOGICAL=25)
+      PARAMETER (MPI_REAL=26,MPI_DOUBLE_PRECISION=27,MPI_INTEGER=28)
+      PARAMETER (MPI_2INTEGER=29,MPI_2COMPLEX=30,MPI_2DOUBLE_COMPLEX=31)
+      PARAMETER (MPI_2REAL=32,MPI_2DOUBLE_PRECISION=33,MPI_CHARACTER=1)
+      PARAMETER (MPI_BYTE=3,MPI_UB=16,MPI_LB=15,MPI_PACKED=14)
+
+      INTEGER MPI_ORDER_C, MPI_ORDER_FORTRAN 
+      PARAMETER (MPI_ORDER_C=56, MPI_ORDER_FORTRAN=57)
+      INTEGER MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_CYCLIC
+      INTEGER MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_DFLT_DARG
+      PARAMETER (MPI_DISTRIBUTE_BLOCK=121, MPI_DISTRIBUTE_CYCLIC=122)
+      PARAMETER (MPI_DISTRIBUTE_NONE=123)
+      PARAMETER (MPI_DISTRIBUTE_DFLT_DARG=-49767)
+      INTEGER MPI_MAX_INFO_KEY, MPI_MAX_INFO_VAL
+      PARAMETER (MPI_MAX_INFO_KEY=255, MPI_MAX_INFO_VAL=1024)
+      INTEGER MPI_INFO_NULL
+      PARAMETER (MPI_INFO_NULL=0)
+
+!
+! Optional Fortran Types.  Configure attempts to determine these.  
+!
+      INTEGER MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, MPI_INTEGER8
+      INTEGER MPI_INTEGER16
+      INTEGER MPI_REAL4, MPI_REAL8, MPI_REAL16
+      INTEGER MPI_COMPLEX8, MPI_COMPLEX16, MPI_COMPLEX32
+      PARAMETER (MPI_INTEGER1=1,MPI_INTEGER2=4)
+      PARAMETER (MPI_INTEGER4=6)
+      PARAMETER (MPI_INTEGER8=13)
+      PARAMETER (MPI_INTEGER16=0)
+      PARAMETER (MPI_REAL4=10)
+      PARAMETER (MPI_REAL8=11)
+      PARAMETER (MPI_REAL16=0)
+      PARAMETER (MPI_COMPLEX8=23)
+      PARAMETER (MPI_COMPLEX16=24)
+      PARAMETER (MPI_COMPLEX32=0)
+!
+!    This is now handled with either the "pointer" extension or this same
+!    code, appended at the end.
+!      COMMON /MPIPRIV/ MPI_BOTTOM,MPI_STATUS_IGNORE,MPI_STATUSES_IGNORE
+!C
+!C     Without this save, some Fortran implementations may make the common
+!C     dynamic!
+!C    
+!C     For a Fortran90 module, we might replace /MPIPRIV/ with a simple
+!C     SAVE MPI_BOTTOM
+!C
+!      SAVE /MPIPRIV/
+!
+      PARAMETER (MPI_MAX=100,MPI_MIN=101,MPI_SUM=102,MPI_PROD=103)
+      PARAMETER (MPI_LAND=104,MPI_BAND=105,MPI_LOR=106,MPI_BOR=107)
+      PARAMETER (MPI_LXOR=108,MPI_BXOR=109,MPI_MINLOC=110)
+      PARAMETER (MPI_MAXLOC=111, MPI_OP_NULL=0)
+!
+      PARAMETER (MPI_GROUP_EMPTY=90,MPI_COMM_WORLD=91,MPI_COMM_SELF=92)
+      PARAMETER (MPI_TAG_UB=80,MPI_HOST=82,MPI_IO=84)
+      PARAMETER (MPI_WTIME_IS_GLOBAL=86)
+!
+      INTEGER MPI_ANY_SOURCE
+      PARAMETER (MPI_ANY_SOURCE = (-2))
+      INTEGER MPI_ANY_TAG
+      PARAMETER (MPI_ANY_TAG = (-1))
+!
+      INTEGER MPI_VERSION, MPI_SUBVERSION
+      PARAMETER (MPI_VERSION    = 1, MPI_SUBVERSION = 2)
+!
+!     There are additional MPI-2 constants 
+      INTEGER MPI_ADDRESS_KIND, MPI_OFFSET_KIND
+      PARAMETER (MPI_ADDRESS_KIND=4)
+      PARAMETER (MPI_OFFSET_KIND=4)
+!
+!     All other MPI routines are subroutines
+!     This may cause some Fortran compilers to complain about defined and
+!     not used.  Such compilers should be improved.
+!
+!     Some Fortran compilers will not link programs that contain
+!     external statements to routines that are not provided, even if
+!     the routine is never called.  Remove PMPI_WTIME and PMPI_WTICK
+!     if you have trouble with them.
+!
+      DOUBLE PRECISION MPI_WTIME, MPI_WTICK,PMPI_WTIME,PMPI_WTICK
+      EXTERNAL MPI_WTIME, MPI_WTICK,PMPI_WTIME,PMPI_WTICK
+!
+!     The attribute copy/delete subroutines are symbols that can be passed
+!     to MPI routines
+!
+      EXTERNAL MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, MPI_DUP_FN
+      COMMON /MPIPRIV/ MPI_BOTTOM,MPI_STATUS_IGNORE,MPI_STATUSES_IGNORE
+!
+!     Without this save, some Fortran implementations may make the common
+!     dynamic!
+!    
+!     For a Fortran90 module, we might replace /MPIPRIV/ with a simple
+!     SAVE MPI_BOTTOM
+!
+      SAVE /MPIPRIV/
+! 
+!     $Id: mpiof.h.in,v 1.3 1999/08/06 18:33:09 thakur Exp $    
+! 
+!     Copyright (C) 1997 University of Chicago. 
+!     See COPYRIGHT notice in top-level directory.
+!
+! 
+!    user include file for Fortran MPI-IO programs 
+!
+      INTEGER MPI_MODE_RDONLY, MPI_MODE_RDWR, MPI_MODE_WRONLY
+      INTEGER MPI_MODE_DELETE_ON_CLOSE, MPI_MODE_UNIQUE_OPEN
+      INTEGER MPI_MODE_CREATE, MPI_MODE_EXCL
+      INTEGER MPI_MODE_APPEND, MPI_MODE_SEQUENTIAL
+      PARAMETER (MPI_MODE_RDONLY=2, MPI_MODE_RDWR=8, MPI_MODE_WRONLY=4)
+      PARAMETER (MPI_MODE_CREATE=1, MPI_MODE_DELETE_ON_CLOSE=16)
+      PARAMETER (MPI_MODE_UNIQUE_OPEN=32, MPI_MODE_EXCL=64)
+      PARAMETER (MPI_MODE_APPEND=128, MPI_MODE_SEQUENTIAL=256)
+!
+      INTEGER MPI_FILE_NULL
+      PARAMETER (MPI_FILE_NULL=0)
+!
+      INTEGER MPI_MAX_DATAREP_STRING
+      PARAMETER (MPI_MAX_DATAREP_STRING=128)
+!
+      INTEGER MPI_SEEK_SET, MPI_SEEK_CUR, MPI_SEEK_END
+      PARAMETER (MPI_SEEK_SET=600, MPI_SEEK_CUR=602, MPI_SEEK_END=604)
+!
+      INTEGER MPIO_REQUEST_NULL
+      PARAMETER (MPIO_REQUEST_NULL=0)
+!
+      integer*8 MPI_DISPLACEMENT_CURRENT
+      PARAMETER (MPI_DISPLACEMENT_CURRENT=-54278278)
+!
+!
+
+
+
+
+
+
+
+!
+!
+!
+!
+!
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/name.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/name.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/name.f	(revision 6168)
@@ -0,0 +1,161 @@
+c  PGAPack test program.
+c
+c  The objective is to evolve a string of characters to match a string
+c  supplied by the user.  We will stop evolving when either we run out
+c  of iterations (500), or when the best string has the same evaluation
+c  value for 100 generations.
+c
+c  One problem with this implementation is that ' ' is not in
+c  PGA_DATATYPE_CHAR if we limit it using PGA_CINIT_MIXED, PGA_CINIT_LOWER,
+c  or PGA_CINIT_UPPER.  To fix this, we must define our own interval, and
+c  thus, our own mutation, initialization operators.
+c
+c  A user function is also used to check the "done" condition; we are 
+c  done if we've done more than 1000 iterations, or the evolved string
+c  is correct.
+c
+c  Created 28 Sep 95, Brian P. Walenz.  Thanks to Dan Ashlock for the idea.
+c
+      include 'pgapackf.h'
+
+      
+
+      integer          N_Mutation
+      integer          N_StopCond
+      double precision EvalName
+      
+      external   N_Mutation
+      external   N_StopCond
+      external   EvalName
+      external   N_InitString
+
+
+c     I'm not claiming to be a FORTRAN hacker, so if you want to use
+c     a string other than what is supplied, you must change the lengths 
+c     to correspond to the length of the new string.
+c     Also, this is common, sunce we need it in EvalName.
+      character*33     Name
+      common /global/  Name
+
+      integer ctx
+      integer    ierror
+
+
+      call MPI_Init(ierror)
+
+c             123456789012345678901234567890123
+      Name = 'Levine, Hallstrom, Noelle, Walenz'
+
+      ctx = PGACreate(PGA_DATATYPE_CHARACTER, 33, PGA_MAXIMIZE)
+    
+      call PGASetRandomSeed(ctx, 1)
+    
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,
+     &     N_InitString)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,
+     &     N_Mutation)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_STOPCOND,
+     &     N_StopCond)
+
+      call PGASetPopSize(ctx, 100)
+      call PGASetNumReplaceValue(ctx, 75)
+      call PGASetPopReplaceType(ctx, PGA_POPREPL_BEST)
+    
+      call PGASetCrossoverProb(ctx, 0.0d0)
+      call PGASetMutationOrCrossoverFlag(ctx, PGA_TRUE)
+    
+      call PGASetMaxGAIterValue(ctx, 100)
+    
+      call PGASetUp(ctx)
+      call PGARun(ctx, EvalName)
+      call PGADestroy(ctx)
+
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+c     Function to randomly initialize a PGA_DATATYPE_CHARACTER string 
+c     using all printable ASCII characters for the range.
+c
+      subroutine N_InitString(ctx, p, pop) 
+      include    'pgapackf.h'
+      integer ctx
+      integer     p, pop, i
+    
+      do i=1, PGAGetStringLength(ctx)
+         call PGASetCharacterAllele(ctx, p, pop, i,
+     &        char(PGARandomInterval(ctx, 32, 126)))
+      enddo
+
+      return
+      end
+
+c     Function to muatate a PGA_DATATYPE_CHARACTER string.  This is 
+c     done by simply picking allele locations, and replacing whatever 
+c     was there with a new value.  Again, legal values are all
+c     printable ASCII characters.
+c
+      integer function N_Mutation(ctx, p, pop, mr)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, count
+      double precision  mr
+
+      count = 0
+
+      do i=1, PGAGetStringLength(ctx)
+         if (PGARandomFlip(ctx, mr) .eq. PGA_TRUE) then
+            call PGASetCharacterAllele(ctx, p, pop, i,
+     &           char(PGARandomInterval(ctx, 32, 126)))
+            count = count + 1
+         endif
+      enddo
+           
+      N_Mutation = count
+      return
+      end
+
+
+
+      integer function N_StopCond(ctx) 
+      include   'pgapackf.h'
+      include   'mpif.h'
+      integer ctx
+      integer    done, best
+
+
+      done = PGACheckStoppingConditions(ctx, MPI_COMM_WORLD)
+      best = PGAGetBestIndex(ctx, PGA_OLDPOP)
+      if ((done .eq. PGA_FALSE) .and. 
+     &     (PGAGetEvaluation(ctx, best, PGA_OLDPOP) .eq.
+     &      PGAGetStringLength(ctx))) then
+         done = PGA_TRUE
+      endif
+
+      N_StopCond = done
+      return
+      end
+
+    
+c     Evaluate the string.  A highly fit string will have many of
+c     the characters matching Name.
+c
+      double precision function EvalName(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, count
+      character         Name(33)
+      common /global/   Name
+    
+      count = 0
+      do i=PGAGetStringLength(ctx), 1, -1
+         if (PGAGetCharacterAllele(ctx, p, pop, i) .eq. Name(i)) then
+            count = count + 1
+         endif
+      enddo
+
+      EvalName = dble(count)
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/namefull.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/namefull.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/namefull.f	(revision 6168)
@@ -0,0 +1,303 @@
+c  PGAPack test program.
+c
+c  The objective is to evolve a string of characters to match a string
+c  supplied by the user.  We will stop evolving when either we run out
+c  of iterations (500), or when the best string has the same evaluation
+c  value for 100 generations.
+c
+c  One problem with this implementation is that ' ' is not in
+c  PGA_DATATYPE_CHAR if we limit it using PGA_CINIT_MIXED, PGA_CINIT_LOWER,
+c  or PGA_CINIT_UPPER.  To fix this, we must define our own interval, and
+c  thus, our own mutation, initialization operators.
+c
+c  A user function is also used to check the "done" condition; we are 
+c  done if we've done more than 1000 iterations, or the evolved string
+c  is correct.
+c
+c  Created 28 Sep 95, Brian P. Walenz.  Thanks to Dan Ashlock for the idea.
+c
+      include 'pgapackf.h'
+
+      
+
+      integer          N_Mutation
+      integer          N_Duplicate
+      integer          N_StopCond
+      double precision EvalName
+      
+      external   N_Mutation
+      external   N_Duplicate
+      external   N_StopCond
+      external   EvalName
+      external   N_Crossover
+      external   N_InitString
+      external   N_PrintString
+      external   N_EndOfGeneration
+
+c     I'm not claiming to be a FORTRAN hacker, so if you want to use
+c     a string other than what is supplied, you must change the lengths 
+c     to correspond to the length of the new string.
+c     Also, this is common, sunce we need it in EvalName.
+      character*70     Name
+      common /global/  Name
+
+      integer ctx
+      integer    ierror
+
+
+      call MPI_Init(ierror)
+
+      Name = 'David M. Levine, Philip L. Hallstrom, David M. Noelle,'
+     &        // ' Brian P. Walenz'
+
+      ctx = PGACreate(PGA_DATATYPE_CHARACTER, 70, PGA_MAXIMIZE)
+    
+      call PGASetRandomSeed(ctx, 42)
+    
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,
+     &     N_InitString)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,
+     &     N_Mutation)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER,
+     &     N_Crossover)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_DUPLICATE,
+     &     N_Duplicate)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_STOPCOND,
+     &     N_StopCond)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,
+     &     N_EndOfGeneration)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING,
+     &     N_PrintString)
+
+c     We don't want to report anything.
+      call PGASetPrintFrequencyValue(ctx, 10000)
+
+      call PGASetPopSize(ctx, 100)
+      call PGASetNumReplaceValue(ctx, 90)
+      call PGASetPopReplaceType(ctx, PGA_POPREPL_BEST)
+
+      call PGASetNoDuplicatesFlag(ctx, PGA_TRUE)
+
+      call PGASetMaxGAIterValue(ctx, 100)
+    
+      call PGASetUp(ctx)
+      call PGARun(ctx, EvalName)
+      call PGADestroy(ctx)
+
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+c     Function to randomly initialize a PGA_DATATYPE_CHARACTER string 
+c     using all printable ASCII characters for the range.
+c
+      subroutine N_InitString(ctx, p, pop) 
+      include   'pgapackf.h'
+      integer ctx
+      integer    p, pop, i
+    
+      do i=PGAGetStringLength(ctx), 1, -1
+         call PGASetCharacterAllele(ctx, p, pop, i,
+     &        char(PGARandomInterval(ctx, 32, 126)))
+      enddo
+
+      return
+      end
+
+
+c     Function to crossover two name strings.  Quite an interesting
+c     crossover, too.  Works like a normal uniform crossover, except
+c     that, if one of the strings matches the correct value, we set
+c     BOTH children to the correct value 50% of the time.
+c
+      subroutine N_Crossover(ctx, p1, p2, pop1, c1, c2, pop2)
+      include          'pgapackf.h'
+      character         Name(70)
+      common /global/   Name
+      integer ctx
+      integer           p1, p2, pop1, c1, c2, pop2
+      integer           i, length
+      character         a, b
+
+      length = PGAGetStringLength(ctx)
+
+      do i=1, length
+         a = PGAGetCharacterAllele(ctx, p1, pop1, i)
+         b = PGAGetCharacterAllele(ctx, p2, pop1, i)
+         if ((a .eq. Name(i)) .or. (b .eq. Name(i))) then
+            a = Name(i)
+            b = Name(i)
+         endif
+
+         if (PGARandomFlip(ctx, 0.5d0) .eq. PGA_TRUE) then
+            call PGASetCharacterAllele(ctx, c1, pop2, i, a)
+            call PGASetCharacterAllele(ctx, c2, pop2, i, b)
+         else
+            call PGASetCharacterAllele(ctx, c1, pop2, i, b)
+            call PGASetCharacterAllele(ctx, c2, pop2, i, a)
+         endif
+      enddo
+   
+      return
+      end
+
+
+c     Function to compare two strings.  Strings are "equalivalent"
+c     if they match Name at the same alleles (and, thus, disagree at the
+c     same alleles).  We don't care what the disagreement is, just that
+c     it is there.
+c
+      integer function N_Duplicate(ctx, p1, pop1, p2, pop2)
+      include          'pgapackf.h'
+      character         Name(70)
+      common /global/   Name
+      integer ctx
+      integer           p1, pop1, p2, pop2
+      integer           i, match
+      character         a, b, c
+
+      match = PGA_TRUE
+
+      do i=PGAGetStringLength(ctx), 1, -1
+         a = PGAGetCharacterAllele(ctx, p1, pop1, i)
+         b = PGAGetCharacterAllele(ctx, p2, pop2, i)
+         c = Name(i)
+         if (((a .eq. c) .and. (b .ne. c)) .or.
+     &        ((a .ne. c) .and. (b .eq. c))) then
+            match = PGA_FALSE
+            goto 10
+         endif
+      enddo
+
+ 10   N_Duplicate = match
+      
+      return
+      end
+      
+
+
+c     Function to muatate a PGA_DATATYPE_CHARACTER string.  This is 
+c     done by simply picking allele locations and replacing whatever
+c     was there with a new value.  Again, legal values are all
+c     printable ASCII characters.
+c
+      integer function N_Mutation(ctx, p, pop, mr)
+      include          'pgapackf.h'
+      character         Name(70)
+      common /global/   Name
+      integer ctx
+      integer           p, pop, i, count
+      double precision  mr
+
+      count = 0
+
+      do i=PGAGetStringLength(ctx), 1, -1
+         if (PGAGetCharacterAllele(ctx, p, pop, i) .ne. Name(i)) then
+            if (PGARandomFlip(ctx, mr) .eq. PGA_TRUE) then
+               call PGASetCharacterAllele(ctx, p, pop, i,
+     &              char(PGARandomInterval(ctx, 32, 126)))
+               count = count + 1
+            endif
+         endif
+      enddo
+           
+      N_Mutation = count
+      return
+      end
+
+
+c     Function to print a string.  Since fortran does NOT support
+c     C file handles, we just print normally.  If we we're in C,
+c     we would print to the file "file".
+c     
+      subroutine N_PrintString(ctx, file, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           file, p, pop
+      character         string(70)
+
+      do i=PGAGetStringLength(ctx), 1, -1
+         string(i) = PGAGetCharacterAllele(ctx, p, pop, i)
+      enddo
+
+      print *, ':', string, ':'
+
+      return
+      end
+
+
+
+c     Function to check "doneness" of the GA.  We check the iteration
+c     count (by calling the system PGADone), then check if we have found
+c     the string yet.
+c
+      integer function N_StopCond(ctx) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           done, best
+
+
+      done = PGACheckStoppingConditions(ctx)
+
+      best = PGAGetBestIndex(ctx, PGA_OLDPOP)
+      if ((done .eq. PGA_FALSE) .and. 
+     &     (PGAGetEvaluation(ctx, best, PGA_OLDPOP) .eq.
+     &      PGAGetStringLength(ctx))) then
+         done = PGA_TRUE
+      endif
+
+      N_StopCond = done
+      return
+      end
+
+c     After each generation, this routine is called.  What is done here,
+c     is to print the best string in our own format, then check if the
+c     best string is close to the correct value.  If it is, duplicate
+c     checking is tunred off.  This is critical, as the mutation operator
+c     will not degrade a string, so when the strings get near the correct
+c     solution, they all become duplicates, but none can be changed!
+c
+c     Other applications have done such things as send the best string 
+c     to another process to be visualized.  For here, we just call our
+c     print string function to print the best string.
+c
+      subroutine N_EndOfGeneration(ctx)
+      include          'pgapackf.h'
+      integer ctx
+      integer           best
+
+      best = PGAGetBestIndex(ctx, PGA_NEWPOP)
+
+      call N_PrintString(ctx, 0, best, PGA_NEWPOP)
+
+      if (PGAGetEvaluation(ctx, best, PGA_NEWPOP) .ge.
+     &     PGAGetStringLength(ctx)-10) then
+         call PGASetNoDuplicatesFlag(ctx, PGA_FALSE)
+      endif
+      
+      return
+      end
+      
+    
+c     Evaluate the string.  A highly fit string will have many of
+c     the characters matching Name.
+c
+      double precision function EvalName(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, count
+      character         Name(70)
+      common /global/   Name
+    
+      count = 0
+      do i=PGAGetStringLength(ctx), 1, -1
+         if (PGAGetCharacterAllele(ctx, p, pop, i) .eq. Name(i)) then
+            count = count + 1
+         endif
+      enddo
+
+      EvalName = dble(count)
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/pgapackf.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/pgapackf.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/fortran/pgapackf.h	(revision 6168)
@@ -0,0 +1,983 @@
+/******************************************************************************
+*     FILE: pgapack.h: This file contains all constant and structure
+*                      definitions definitions for PGAPack as well as all
+*                      function declarations.
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+******************************************************************************/
+
+#ifndef __PGA_PACK_H_
+#define __PGA_PACK_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <time.h>
+#include <limits.h>
+#include <float.h>
+#include <string.h> 
+#include <ctype.h>
+#include <mpi.h>
+
+
+
+/*  If OPTIMIZED, remove various sanity checks, and debug output.
+ *
+ *  PGADebugEntered(a)      - Print a debug message about entering "a"
+ *  PGADebugExited(a)       - Print a debug message about exiting "a"
+ *  PGAFailIfNotSetup(a)    - Fail fatally if PGASetUp has not been called
+ *  PGAFailIfSetup(a)       - Fail fatally if PGASetUp has been called
+ *  PGACheckDataType(a, D)  - Fail fatally if the datatype is not D
+ */
+#ifndef OPTIMIZE
+#define OPTIMIZE 0
+
+
+#define PGADebugEntered(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_ENTERED, a, "Entered", PGA_VOID, NULL)
+#define PGADebugExited(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_EXIT, a, "Exited", PGA_VOID, NULL)
+#define PGAFailIfNotSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_FALSE) \
+     PGAError(ctx, "PGASetUp must be called before " Name, \
+              PGA_FATAL, PGA_VOID, NULL)
+#define PGAFailIfSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_TRUE) \
+     PGAError(ctx, Name " must be called before PGASetUp", PGA_FATAL, \
+	      PGA_VOID, NULL)
+#define PGACheckDataType(Name, DataType) \
+  if (ctx->ga.datatype != DataType) \
+     PGAError(ctx, "DataType is incorrect for " Name,PGA_FATAL,PGA_VOID,NULL)
+
+#else
+#undef OPTIMIZE
+#define OPTIMIZE 1
+#define PGADebugPrint(a,b,c,x,y,z) ;
+#define PGADebugEntered(a) ;
+#define PGADebugExited(a) ;
+#define PGAFailIfNotSetUp(Name)  ;
+#define PGAFailIfSetUp(Name)  ;
+#define PGACheckDataType(Name, DataType) ;
+#endif
+
+/*****************************************
+*           BINARY   MACROS              *
+*****************************************/
+#ifndef WL
+#error WL must be defined on the command line!
+#endif
+
+#define ONEL        ((PGABinary)1)
+#define BIT(x,y)    (y&(ONEL<<((WL-1)-(x))))    /* true if bit is 1,         */
+#define SET(x,y)    (y|=(ONEL<<((WL-1)-(x))))   /* set a bit to 1            */
+#define UNSET(x,y)  (y&=(~(ONEL<<((WL-1)-(x)))))/* set a bit to 0, clear     */
+#define TOGGLE(x,y) (y^=(ONEL<<((WL-1)-(x))))   /* complement a bits value   */
+#define INDEX(ix,bx,bit,WL) ix=bit/WL;bx=bit%WL /* map global column (bit)   */
+                                                /* to word (ix) and bit (bx) */
+
+/*****************************************
+*       ABSTRACT DATA TYPES              *
+*****************************************/
+#define PGA_DATATYPE_BINARY      1    /* Array of unsigned ints            */
+                                      /* parsed into bits    : binary.c    */
+#define PGA_DATATYPE_INTEGER     2    /* Array of ints       : integer.c   */
+#define PGA_DATATYPE_REAL        3    /* Array of doubles    : real.c      */
+#define PGA_DATATYPE_CHARACTER   4    /* Array of characters : character.c */
+#define PGA_DATATYPE_USER        5    /*  --user defined--                 */
+    
+#define PGABinary                unsigned long
+#define PGAInteger               signed long int
+#define PGAReal                  double
+#define PGACharacter             signed char
+
+#define PGA_INT                   1
+#define PGA_DOUBLE                2
+#define PGA_CHAR                  3
+#define PGA_VOID                  4
+
+    
+/*****************************************
+*              BOOLEANS                  *
+*****************************************/
+#define PGA_TRUE                   1
+#define PGA_FALSE                  0
+
+/*****************************************
+*                FLAGS                   *
+*****************************************/
+#define PGA_FATAL                 1
+#define PGA_WARNING               2
+
+/*****************************************
+*             MISC CONSTANT              *
+*****************************************/
+#define PGA_TEMP1                -1138
+#define PGA_TEMP2                -4239
+#define PGA_TEMP3                -4238
+
+#define PGA_OLDPOP               -6728
+#define PGA_NEWPOP               -8376
+
+#define PGA_UNINITIALIZED_INT    -3827
+#define PGA_UNINITIALIZED_DOUBLE -968.3827
+
+/*****************************************
+*        DEBUG LEVELS                    *
+*****************************************/
+#define PGA_DEBUG_ENTERED        12
+#define PGA_DEBUG_EXIT           13
+#define PGA_DEBUG_MALLOC         80
+#define PGA_DEBUG_PRINTVAR       82
+#define PGA_DEBUG_SEND           22
+#define PGA_DEBUG_RECV           23
+#define PGA_DEBUG_MAXPGAPACKFUNCTIONS	300
+#define PGA_DEBUG_MAXFLAGS       1000
+
+/*****************************************
+*           DIRECTION                    *
+*****************************************/
+#define PGA_MAXIMIZE            1    /* specify direction for fitness calc  */
+#define PGA_MINIMIZE            2    /* specify direction for fitness calc  */
+    
+/*****************************************
+*         STOPPING CRITERIA              *
+*****************************************/
+#define PGA_STOP_MAXITER        1    /* Stop: for maximum iterations      */
+#define PGA_STOP_NOCHANGE       2    /* Stop: no change in best string    */
+#define PGA_STOP_TOOSIMILAR     4    /* Stop: homogeneous population      */
+
+/*****************************************
+*            CROSSOVER                   *
+*****************************************/
+#define PGA_CROSSOVER_ONEPT     1    /* One point crossover                */
+#define PGA_CROSSOVER_TWOPT     2    /* Two point crossover                */
+#define PGA_CROSSOVER_UNIFORM   3    /* Uniform   crossover                */
+
+/*****************************************
+*            SELECTION                   *
+*****************************************/
+#define PGA_SELECT_PROPORTIONAL 1    /* proportional selection              */
+#define PGA_SELECT_SUS          2    /* stochastic universal selection      */
+#define PGA_SELECT_TOURNAMENT   3    /* tournament selection                */
+#define PGA_SELECT_PTOURNAMENT  4    /* probabilistic tournament selection  */
+
+/*****************************************
+*            FITNESS                     *
+*****************************************/
+#define PGA_FITNESS_RAW         1    /* use raw fitness (evaluation)        */
+#define PGA_FITNESS_NORMAL      2    /* linear normalization fitness        */
+#define PGA_FITNESS_RANKING     3    /* linear ranking fitness              */
+
+/*****************************************
+*            FITNESS (MINIMIZATION)      *
+*****************************************/
+#define PGA_FITNESSMIN_RECIPROCAL  1 /* reciprocal fitness                  */
+#define PGA_FITNESSMIN_CMAX        2 /* cmax fitness                        */
+
+/*****************************************
+*               MUTATION                 *
+*****************************************/
+#define PGA_MUTATION_CONSTANT   1    /* Real/Integer: Fixed value           */
+#define PGA_MUTATION_RANGE      2    /* Real/Integer: Uniform range         */
+#define PGA_MUTATION_UNIFORM    3    /* Real: +- Uniform random no.         */
+#define PGA_MUTATION_GAUSSIAN   4    /* Real: +- Gaussian random no.        */
+#define PGA_MUTATION_PERMUTE    5    /* Integer: Permutation (swap)         */
+    
+/*****************************************
+*        POPULATION REPLACEMENT          *
+*****************************************/
+#define PGA_POPREPL_BEST         1   /* Select best   string                */
+#define PGA_POPREPL_RANDOM_NOREP 2   /* Select random string w/o replacement*/
+#define PGA_POPREPL_RANDOM_REP   3   /* Select random string w/  replacement*/
+
+/****************************************
+ *       REPORT OPTIONS                 *
+ ****************************************/
+#define PGA_REPORT_ONLINE        1    /* Print the online analysis           */
+#define PGA_REPORT_OFFLINE       2    /* Print the offline analysis          */
+#define PGA_REPORT_HAMMING       4    /* Print the Hamming distance          */
+#define PGA_REPORT_STRING        8    /* Print the string                    */
+#define PGA_REPORT_WORST         16   /* Print the worst individual          */
+#define PGA_REPORT_AVERAGE       32   /* Print the average of the population */
+
+/*****************************************
+*            RANDOMIZER                  *
+*****************************************/
+#define PGA_RINIT_PERCENT        1  /* real percent offset                   */
+#define PGA_RINIT_RANGE          2  /* real range                            */
+#define PGA_IINIT_PERMUTE        1  /* integer permutation                   */
+#define PGA_IINIT_RANGE          2  /* integer range (nonunique)             */
+#define PGA_CINIT_LOWER          1  /* all lowercase letters                 */
+#define PGA_CINIT_UPPER          2  /* all uppercase letters                 */
+#define PGA_CINIT_MIXED          3  /* both upper and lower case letters     */
+
+/*****************************************
+*         SET USER FUNCTION              *
+*****************************************/
+#define PGA_USERFUNCTION_CREATESTRING            1
+#define PGA_USERFUNCTION_MUTATION                2
+#define PGA_USERFUNCTION_CROSSOVER               3
+#define PGA_USERFUNCTION_PRINTSTRING             4
+#define PGA_USERFUNCTION_COPYSTRING              5
+#define PGA_USERFUNCTION_DUPLICATE               6
+#define PGA_USERFUNCTION_INITSTRING              7
+#define PGA_USERFUNCTION_BUILDDATATYPE           8
+#define PGA_USERFUNCTION_STOPCOND                9
+#define PGA_USERFUNCTION_ENDOFGEN                10
+#define PGA_USERFUNCTION_RANKING                 11
+#define PGA_USERFUNCTION_FITNESS                 12
+#define PGA_USERFUNCTION_SELECT                  13
+#define PGA_USERFUNCTION_SORTPOP                 14
+
+/******* EHW Modification ************************/
+#define PGA_USERFUNCTION_SETTEMP                 15
+#define PGA_USERFUNCTION_ENDOFREPFCN             16
+#define PGA_USERFUNCTION_DESTROYUD               17
+
+#define PGA_USERFUNCTION_INITUSERCTX             18
+#define PGA_USERFUNCTION_KILLUSERCTX             19
+#define PGA_NUM_USERFUNCTIONS                    19
+/*************************************************/
+
+/*****************************************
+*           MPI SEND/RECV TAGS           *
+*****************************************/
+#define PGA_COMM_STRINGTOEVAL        1  /* MPI tag for sending string       */
+#define PGA_COMM_EVALOFSTRING        2  /* MPI tag for returning evaluation */
+#define PGA_COMM_DONEWITHEVALS       3  /* MPI tag for ending parallel eval */
+
+
+
+
+/*****************************************
+*       INDIVIDUAL STRUTURE              *
+*****************************************/
+
+typedef struct {                    /* primary population data structure   */
+  double evalfunc;                  /* evaluation function value           */
+  double fitness;                   /* fitness    function value           */
+  int    evaluptodate;              /* flag whether evalfunc is current    */
+  void   *chrom;                    /* pointer to the GA string            */
+
+/*****************  EHW Project Modifications  **********************/
+  void   *UserData;                 /* pointer to circuit response         */
+/********************************************************************/
+} PGAIndividual;
+
+
+/*****************************************
+*          GA ALGORITHM STRUCTURE        *
+*****************************************/
+typedef struct {
+    int datatype;            /* data type: binary, integer, or real       */
+    int optdir;              /* direction of optimization                 */
+    int tw;                  /* total number of words, full + partial     */
+    int fw;                  /* number of full (WL length) words          */
+    int eb;                  /* number of extra bits in last NOT full word*/
+    int PopSize;             /* Number of strings to use                  */
+    int StringLen;           /* string lengths                            */
+    int StoppingRule;        /* Termination Criteria                      */
+    int MaxIter;             /* Maximum number of iterations to run       */
+    int MaxNoChange;         /* # of iters with no change before stopping */
+    int MaxSimilarity;       /* % of pop the same before stopping         */
+    int NumReplace;          /* Number of string to replace each gen      */
+    int PopReplace;          /* Method of choosing ind.s to copy to newpop*/
+    int iter;                /* iteration (generation) counter            */
+    int ItersOfSame;         /* # iters with no change in best            */
+    int PercentSame;         /* % of pop that is homogeneous              */
+    int NoDuplicates;        /* Don't allow duplicate strings             */
+    int CrossoverType;       /* Type of crossover for genetic algorithm   */
+    int SelectType;          /* Type of selection for genetic algorithm   */
+    int SelectIndex;         /* index of Select for next two individuals  */
+    int FitnessType;         /* Type of fitness transformation used       */
+    int FitnessMinType;      /* Transformation for minimization problems  */
+    int MutateOnlyNoCross;   /* Mutate only strings not from crossover    */
+    int MutationType;        /* Type of mutation used                     */
+    int MutateIntegerValue;  /* Multiplier to mutate Integer strings with */
+    int MutateBoundedFlag;   /* Confine integer alleles to given range    */
+    double MutateRealValue;  /* Multiplier to mutate Real strings with    */
+    double MutationProb;     /* Starting mutation probability             */
+    double CrossoverProb;    /* Crossover probability                     */
+    double UniformCrossProb; /* Prob of bit select in uniform crossover   */
+    double PTournamentProb;  /* Prob of selection in Prob. Tournament     */
+    double FitnessRankMax;   /* MAX value for use in ranking              */
+    double FitnessCmaxValue; /* Cmax value used to convert minimizations  */
+    double restartAlleleProb;/* prob of changing an allele in a restart   */
+    int restart;             /* whether to use the restart operator       */
+    int restartFreq;         /* frequency with which to restart           */
+    int *selected;           /* array of indices for selection            */
+    int *sorted;             /* array of sorted individual indices        */
+    PGAIndividual *oldpop;   /* pointer to population (old)               */
+    PGAIndividual *newpop;   /* pointer to population (new)               */
+
+/********************** EHW project modifications *********************/
+    int sUD;                 /* Size of User Data array structure     */
+/**********************************************************************/
+} PGAAlgorithm;
+
+
+
+/*****************************************
+*        OPERATIONS STRUCTURES           *
+*****************************************/
+typedef struct PGAContext PGAContext;
+typedef struct {
+    void         (*CreateString)(PGAContext *, int, int, int);
+    int          (*Mutation)(PGAContext *, int, int, double);
+    void         (*Crossover)(PGAContext *, int, int, int, int, int, int);
+    void         (*PrintString)(PGAContext *, FILE *, int, int);
+    void         (*CopyString)(PGAContext *, int, int, int, int);
+    int          (*Duplicate)(PGAContext *, int, int, int, int);
+    void         (*InitString)(PGAContext *, int, int);
+    MPI_Datatype (*BuildDatatype)(PGAContext *, int, int);
+    int          (*StopCond)(PGAContext *);
+    void         (*EndOfGen)(PGAContext *);
+
+/******************* DRH Mod for MMPAT ********************************/
+    void         (*Rank)(PGAContext *, int); /* Calls a custom */
+                                                   /*ranking function*/
+    void         (*Fitness)(PGAContext *, int); /* Calls a custom fitness eval*/
+    void         (*Select) (PGAContext *, int); /* Calls a custom selection */
+/*********************************************/
+/* new added by Lu Yang */
+    void         (*SortPop) (PGAContext *, int); /* Calls a custom sort pop */
+/*********************************************/
+                                                /* function                 */
+/*********************************************************************/
+
+/********************** EHW project modifications *********************/
+    void         (*SetTemp)(PGAContext *); /* Sets the Temperature    */
+                                           /*  Parameter              */
+/**********************************************************************/
+
+/*** SNS Addition, it sets the reproductive flags *************/
+/*** This may be part of The Chromosome User Data ************/
+
+ /* Gets executed when  PGASetEvaluationUpToDateFlag  is called
+      and the flag is set to PGA_FALSE  Is called so that the user
+      data is updated whenever the Evaluation up to date flag is set to
+      false 
+   */
+    void 	 (*EndOfRepFcn)(PGAContext *,int,int);
+
+    void 	 (*DestroyUD)(PGAContext *,int,int);
+   /* CHSL: Executed before the GA is run (gen 0) */
+    void         (*InitUserCtx)(PGAContext *);
+   /* CHSL: Executed after the GA is finished (end of last gen) */
+    void         (*KillUserCtx)(PGAContext *);
+ 
+
+
+/**********************************************************************/
+
+
+
+} PGACOperations;
+
+typedef struct {
+    int          (*Mutation)(void *, void *, void *, void *);
+    void         (*Crossover)(void *, void *, void *, void *, void *, void *, void *);
+    void         (*PrintString)(void *, void *, void *, void *);
+    void         (*CopyString)(void *, void *, void *, void *, void *);
+    int          (*Duplicate)(void *, void *, void *, void *, void *);
+    void         (*InitString)(void *, void *, void *);
+    int          (*StopCond)(void *);
+    void         (*EndOfGen)(void *);
+/******************* DRH Mod for MMPAT ********************************/
+    void         (*Rank)( void *, void *); /* calls a custom  */
+                                                 /* ranking function*/
+    void         (*Fitness)( void *, void *); /* Calls a custom fitness eval*/
+    void         (*Select )( void *, void *); /* Calls a custom selection fn*/
+/*********************************************/
+/* new added by Lu Yang */
+    void         (*SortPop) (void *, void *); /* Calls a custom sort pop */
+/*********************************************************************/
+
+/********************** EHW project modifications *********************/
+    void         (*SetTemp)(void *);       /* Sets the Temperature    */
+                                           /*  Parameter              */
+/**********************************************************************/
+
+/*** SNS Addition, it sets the reproductive flags *************/
+/*** This may be part of The Chromosome User Data ************/
+    void 	 (*EndOfRepFcn)(void *,void *,void *);
+    void 	 (*DestroyUD)(void *,void *,void *);
+
+  /* CHSL: Executed before the GA is run (gen 0) */
+   void         (*InitUserCtx)(void *);
+   /* CHSL: Executed after the GA is finished (end of last gen) */
+   void         (*KillUserCtx)(void *);
+
+/**********************************************************************/
+
+} PGAFortranOperations;
+
+/*****************************************
+*          PARALLEL STRUCTURE            *
+*****************************************/
+typedef struct {
+    int      MPIAlreadyInit;   /* Flag whether MPI was previously initialized*/
+    int      NumIslands;       /* Number of islands in island model          */
+    int      NumDemes;         /* Number of demes in neighborhood model      */
+    MPI_Comm DefaultComm;      /* Default communicator for PGARun            */
+    int      MPIStubLibrary;   /* Boolean: real or stub version of MPI       */
+} PGAParallel;
+
+/*****************************************
+*          REPORT STRUCTURE              *
+*****************************************/
+typedef struct {
+     int    PrintFreq;               /* How often to print statistics reports*/
+     int    PrintOptions;
+     double Offline;
+     double Online;
+     double Average;
+     double Best;
+     time_t starttime;
+} PGAReport;
+
+
+/*****************************************
+*          SYSTEM STRUCTURE              *
+*****************************************/
+typedef struct {
+    int    UserFortran;             /* user routines in Fortran or C?        */
+    int    SetUpCalled;             /* has PGASetUp been called?             */
+    int    PGAMaxInt;               /* largest  int     of machine           */
+    int    PGAMinInt;               /* smallest int     of machine           */
+    double PGAMaxDouble;            /* largest  double  of machine           */
+    double PGAMinDouble;            /* smallest double  of machine           */
+} PGASystem;
+
+
+/*****************************************
+*          DEBUG STRUCTURE               *
+*****************************************/
+typedef struct {
+    int PGADebugFlags[PGA_DEBUG_MAXFLAGS];
+} PGADebug;
+
+/*****************************************
+*      INITIALIZATION STRUCTURE          *
+*****************************************/
+typedef struct {
+    int    RandomInit;             /* flag whether to randomize strings    */
+    double BinaryProbability;      /* probability that a Bit will be 1     */
+    int    RealType;               /* type of real      initialization     */
+    int    IntegerType;            /* type of integer   initialization     */
+    int    CharacterType;          /* type of character initialization     */
+    int    *IntegerMin;            /* minimum of range of integers         */
+    int    *IntegerMax;            /* maximum of range of integers         */
+    double *RealMin;               /* minimum of range of reals            */
+    double *RealMax;               /* maximum of range of reals            */
+    int    RandomSeed;             /* integer to seed random numbers with  */
+} PGAInitialize;
+
+/*****************************************
+*      SCRATCH DATA STRUCTURES           *
+*****************************************/
+typedef struct {
+    int    *intscratch;            /* integer-scratch space                 */
+    double *dblscratch;            /* double- scratch space                 */
+} PGAScratch;
+
+/*****************************************
+*          CONTEXT STRUCTURE             *
+*****************************************/
+struct PGAContext {
+    PGAAlgorithm           ga;
+    PGACOperations         cops;
+    PGAFortranOperations   fops;
+    PGAParallel            par;
+    PGAReport              rep;
+    PGASystem              sys;
+    PGADebug               debug;
+    PGAInitialize          init;
+    PGAScratch             scratch;
+
+    /*************************
+     *   EHW ADDITION        *
+     *************************/
+    void                   *inputex;
+
+};
+
+/*****************************************
+*          binary.c
+*****************************************/
+
+
+
+void PGASetBinaryAllele ( PGAContext *ctx, int p, int pop, int i, int val );
+int PGAGetBinaryAllele ( PGAContext *ctx, int p, int pop, int i );
+void PGASetBinaryInitProb ( PGAContext *ctx, double probability );
+double PGAGetBinaryInitProb (PGAContext *ctx);
+void PGABinaryCreateString(PGAContext *ctx, int p, int pop, int initflag);
+int PGABinaryMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGABinaryOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryTwoptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                               int c1, int c2, int pop2);
+void PGABinaryPrintString( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGABinaryCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGABinaryDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGABinaryInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGABinaryBuildDatatype(PGAContext *ctx, int p, int pop);
+int PGABinaryHammingDistance ( PGAContext *ctx, PGABinary *s1, PGABinary *s2 );
+void PGABinaryPrint( PGAContext *ctx, FILE *fp, PGABinary *chrom, int nb );
+
+/*****************************************
+*          char.c
+*****************************************/
+
+
+void PGASetCharacterAllele (PGAContext *ctx, int p, int pop, int i, char value);
+char PGAGetCharacterAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetCharacterInitType(PGAContext *ctx, int value);
+void PGACharacterCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGACharacterMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGACharacterOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGACharacterUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGACharacterCopyString (PGAContext *ctx, int p1, int pop1, int p2,
+                             int pop2);
+int PGACharacterDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGACharacterInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGACharacterBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          cmdline.c
+*****************************************/
+
+
+void PGAReadCmdLine( PGAContext *ctx, int *argc, char **argv );
+void PGAParseDebugArg(PGAContext *ctx, char *st);
+void PGAStripArgs(char **argv, int *argc, int *c, int num);
+
+/*****************************************
+*          create.c
+*****************************************/
+
+PGAContext *PGACreate ( int *argc, char **argv,
+                        int datatype, int len, int maxormin );
+void PGASetUp ( PGAContext *ctx );
+void PGASetRandomInitFlag(PGAContext *ctx, int RandomBoolean);
+int PGAGetRandomInitFlag (PGAContext *ctx);
+void PGACreatePop (PGAContext *ctx, int pop);
+void PGACreateIndividual (PGAContext *ctx, int p, int pop, int initflag);
+
+/*****************************************
+*          cross.c
+*****************************************/
+
+void PGACrossover ( PGAContext *ctx, int p1, int p2, int pop1,
+                    int c1, int c2, int pop2 );
+int PGAGetCrossoverType (PGAContext *ctx);
+double PGAGetCrossoverProb (PGAContext *ctx);
+double PGAGetUniformCrossoverProb (PGAContext *ctx);
+void PGASetCrossoverType (PGAContext *ctx, int crossover_type);
+void PGASetCrossoverProb( PGAContext *ctx, double crossover_prob);
+void PGASetUniformCrossoverProb( PGAContext *ctx, double uniform_cross_prob);
+
+/*****************************************
+*          debug.c
+*****************************************/
+
+
+void PGASortFuncNameIndex(PGAContext *ctx);
+#if OPTIMIZE==0
+void PGADebugPrint( PGAContext *ctx, int level, char *funcname,
+                   char *msg, int datatype, void *data );
+#endif
+void PGASetDebugLevel(PGAContext *ctx, int level);
+void PGAClearDebugLevel(PGAContext *ctx, int level);
+void PGASetDebugLevelByName(PGAContext *ctx, char *funcname);
+void PGAClearDebugLevelByName(PGAContext *ctx, char *funcname);
+int PGAGetDebugLevelOfName(PGAContext *ctx, char *funcname);
+int PGAGetDebugFlag(PGAContext *ctx, char *funcname);
+void PGASetDebugFlag11(PGAContext *ctx, int Flag);
+void PGASetDebugFlag20(PGAContext *ctx, int Flag);
+void PGASetDebugFlag21(PGAContext *ctx, int Flag);
+void PGASetDebugFlag30(PGAContext *ctx, int Flag);
+void PGASetDebugFlag32(PGAContext *ctx, int Flag);
+void PGASetDebugFlag34(PGAContext *ctx, int Flag);
+void PGASetDebugFlag36(PGAContext *ctx, int Flag);
+void PGASetDebugFlag40(PGAContext *ctx, int Flag);
+void PGASetDebugFlag42(PGAContext *ctx, int Flag);
+void PGASetDebugFlag44(PGAContext *ctx, int Flag);
+void PGASetDebugFlag46(PGAContext *ctx, int Flag);
+void PGASetDebugFlag48(PGAContext *ctx, int Flag);
+void PGASetDebugFlag50(PGAContext *ctx, int Flag);
+void PGASetDebugFlag52(PGAContext *ctx, int Flag);
+void PGASetDebugFlag54(PGAContext *ctx, int Flag);
+void PGASetDebugFlag56(PGAContext *ctx, int Flag);
+void PGASetDebugFlag58(PGAContext *ctx, int Flag);
+void PGASetDebugFlag60(PGAContext *ctx, int Flag);
+void PGASetDebugFlag62(PGAContext *ctx, int Flag);
+void PGASetDebugFlag64(PGAContext *ctx, int Flag);
+void PGASetDebugFlag66(PGAContext *ctx, int Flag);
+void PGAPrintDebugOptions(PGAContext *ctx);
+
+/*****************************************
+*          duplcate.c
+*****************************************/
+
+
+int PGADuplicate(PGAContext *ctx, int p, int pop1, int pop2, int n);
+void PGAChange( PGAContext *ctx, int p, int pop );
+void PGASetNoDuplicatesFlag( PGAContext *ctx, int no_dup);
+int PGAGetNoDuplicatesFlag (PGAContext *ctx);
+
+/*****************************************
+*          evaluate.c
+*****************************************/
+
+
+void PGASetEvaluation ( PGAContext *ctx, int p, int pop, double val );
+double PGAGetEvaluation ( PGAContext *ctx, int p, int pop );
+void PGASetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop,
+                                   int status );
+int PGAGetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop );
+double PGAGetRealFromBinary(PGAContext *ctx, int p, int pop, int start,
+                            int end, double lower, double upper);
+double PGAGetRealFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                  int end, double lower, double upper);
+void PGAEncodeRealAsBinary(PGAContext *ctx, int p, int pop, int start,
+                               int end, double low, double high, double val);
+void PGAEncodeRealAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                              int end, double low, double high, double val);
+int PGAGetIntegerFromBinary(PGAContext *ctx, int p, int pop, int start,
+                                 int end);
+int PGAGetIntegerFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                   int end);
+void PGAEncodeIntegerAsBinary(PGAContext *ctx, int p, int pop, int start,
+                              int end, int val);
+void PGAEncodeIntegerAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                int end, int val);
+double PGAMapIntegerToReal (PGAContext *ctx, int v, int a, int b, double l,
+                            double u);
+int PGAMapRealToInteger(PGAContext *ctx, double r, double l, double u, int a,
+                        int b);
+
+/*****************************************
+*          fitness.c
+*****************************************/
+
+
+void PGAFitness ( PGAContext *ctx, int popindex );
+int PGARank( PGAContext *ctx, int p, int *order, int n );
+double PGAGetFitness ( PGAContext *ctx, int p, int pop );
+int PGAGetFitnessType (PGAContext *ctx);
+int PGAGetFitnessMinType (PGAContext *ctx);
+double PGAGetMaxFitnessRank (PGAContext *ctx);
+void PGASetFitnessType( PGAContext *ctx, int fitness_type);
+void PGASetFitnessMinType( PGAContext *ctx, int fitness_type);
+void PGASetMaxFitnessRank( PGAContext *ctx, double fitness_rank_max);
+void PGAFitnessLinearNormal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessLinearRank ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinReciprocal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinCmax ( PGAContext *ctx, PGAIndividual *pop );
+void PGASetFitnessCmaxValue( PGAContext *ctx, double val);
+double PGAGetFitnessCmaxValue (PGAContext *ctx);
+
+/*****************************************
+*          hamming.c
+*****************************************/
+
+double PGAHammingDistance( PGAContext *ctx, int popindex);
+
+/*****************************************
+*          heap.c
+*****************************************/
+
+
+void PGADblHeapSort ( PGAContext *ctx, double *a, int *idx, int n );
+void PGAIntHeapSort ( PGAContext *ctx, int *a, int *idx, int n );
+
+/*****************************************
+*          integer.c
+*****************************************/
+
+
+
+void PGASetIntegerAllele (PGAContext *ctx, int p, int pop, int i, int value);
+int PGAGetIntegerAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetIntegerInitPermute ( PGAContext *ctx, int min, int max);
+void PGASetIntegerInitRange (PGAContext *ctx, int *min, int *max);
+int PGAGetIntegerInitType (PGAContext *ctx);
+int PGAGetMinIntegerInitValue (PGAContext *ctx, int i);
+int PGAGetMaxIntegerInitValue (PGAContext *ctx, int i);
+void PGAIntegerCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGAIntegerMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGAIntegerOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGAIntegerPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGAIntegerCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGAIntegerDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGAIntegerInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGAIntegerBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          mpi_stub.c
+*****************************************/
+
+
+/*****************************************
+*          mutation.c
+*****************************************/
+
+
+
+int PGAMutate(PGAContext *ctx, int p, int pop);
+void PGASetMutationType( PGAContext *ctx, int mutation_type);
+int PGAGetMutationType (PGAContext *ctx);
+void PGASetMutationRealValue( PGAContext *ctx, double val);
+double PGAGetMutationRealValue (PGAContext *ctx);
+void PGASetMutationIntegerValue( PGAContext *ctx, int val);
+int PGAGetMutationIntegerValue (PGAContext *ctx);
+void PGASetMutationBoundedFlag(PGAContext *ctx, int val);
+int PGAGetMutationBoundedFlag(PGAContext *ctx);
+void PGASetMutationProb(PGAContext *ctx, double mutation_prob);
+double PGAGetMutationProb (PGAContext *ctx);
+
+/*****************************************
+*          parallel.c
+*****************************************/
+
+
+  
+void PGARunGM(PGAContext *ctx, double (*f)(PGAContext *, int, int),
+	      MPI_Comm comm);
+void PGAEvaluateSeq(PGAContext *ctx, int pop,
+		    double (*f)(PGAContext *, int, int));
+void PGAEvaluateCoop(PGAContext *ctx, int pop,
+		     double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluateMS(PGAContext *ctx, int pop,
+		   double (*f)(PGAContext *c, int p, int pop), MPI_Comm comm);
+void PGAEvaluateSlave(PGAContext *ctx, int pop,
+		      double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluate(PGAContext *ctx, int pop,
+		 double (*f)(PGAContext *, int, int), MPI_Comm comm);
+MPI_Datatype PGABuildDatatype(PGAContext *ctx, int p, int pop);
+void PGASendIndividual(PGAContext *ctx, int p, int pop, int dest, int tag,
+                       MPI_Comm comm);
+void PGAReceiveIndividual(PGAContext *ctx, int p, int pop, int source, int tag,
+                          MPI_Comm comm, MPI_Status *status);
+void PGASendReceiveIndividual(PGAContext *ctx, int send_p, int send_pop,
+                              int dest, int send_tag, int recv_p, int recv_pop,
+                              int source, int recv_tag, MPI_Comm comm,
+                              MPI_Status *status);
+void PGARunIM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+void PGARunNM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+int PGAGetRank (PGAContext *ctx, MPI_Comm comm);
+int PGAGetNumProcs (PGAContext *ctx, MPI_Comm comm);
+void PGASetNumIslands( PGAContext *ctx, int n);
+int PGAGetNumIslands (PGAContext *ctx);
+void PGASetNumDemes( PGAContext *ctx, int numdemes);
+int PGAGetNumDemes (PGAContext *ctx);
+void PGASetCommunicator( PGAContext *ctx, MPI_Comm comm);
+MPI_Comm PGAGetCommunicator( PGAContext *ctx);
+
+/*****************************************
+*          pga.c
+*****************************************/
+
+
+void PGARun(PGAContext *ctx, double (*evaluate)(PGAContext *c, int p, int pop));
+void PGARunMutationAndCrossover (PGAContext *ctx, int oldpop, int newpop);
+void PGARunMutationOrCrossover ( PGAContext *ctx, int oldpop, int newpop );
+void PGAUpdateGeneration(PGAContext *ctx, MPI_Comm comm);
+int PGAGetDataType (PGAContext *ctx);
+int PGAGetOptDirFlag (PGAContext *ctx);
+int PGAGetStringLength (PGAContext *ctx);
+int PGAGetVariableStringLength (PGAContext *ctx, int p, int pop);
+int PGAGetGAIterValue (PGAContext *ctx);
+void PGASetMutationOrCrossoverFlag( PGAContext *ctx, int flag);
+void PGASetMutationAndCrossoverFlag( PGAContext *ctx, int flag);
+int PGAGetMutationOrCrossoverFlag (PGAContext *ctx);
+int PGAGetMutationAndCrossoverFlag (PGAContext *ctx);
+
+/*****************************************
+*          pop.c
+*****************************************/
+
+
+void PGASortPop ( PGAContext *ctx, int pop );
+int PGAGetPopSize (PGAContext *ctx);
+int PGAGetNumReplaceValue (PGAContext *ctx);
+int PGAGetPopReplaceType (PGAContext *ctx);     
+int PGAGetSortedPopIndex ( PGAContext *ctx, int n );
+void PGASetPopSize (PGAContext *ctx, int popsize);
+void PGASetNumReplaceValue( PGAContext *ctx, int pop_replace);
+void PGASetPopReplaceType( PGAContext *ctx, int pop_replace);
+
+/*****************************************
+*          random.c
+*****************************************/
+
+
+int PGARandomFlip ( PGAContext *ctx, double p );
+int PGARandomInterval( PGAContext *ctx, int start, int end);
+double PGARandom01( PGAContext *ctx, int newseed );
+double PGARandomUniform( PGAContext *ctx, double start, double end);
+double PGARandomGaussian( PGAContext *ctx, double mean, double sigma);
+int PGAGetRandomSeed(PGAContext *ctx);
+void PGASetRandomSeed(PGAContext *ctx, int seed);
+
+/*****************************************
+*          real.c
+*****************************************/
+
+
+void PGASetRealAllele (PGAContext *ctx, int p, int pop, int i, double value);
+double PGAGetRealAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetRealInitPercent ( PGAContext *ctx, double *median, double *percent);
+void PGASetRealInitRange (PGAContext *ctx, double *min, double *max);
+double PGAGetMinRealInitValue (PGAContext *ctx, int i);
+double PGAGetMaxRealInitValue (PGAContext *ctx, int i);
+int PGAGetRealInitType (PGAContext *ctx);
+void PGARealCreateString (PGAContext *ctx, int p, int pop, int initflag);
+int PGARealMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGARealOneptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealUniformCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                             int c1, int c2, int pop2);
+void PGARealPrintString (PGAContext *ctx, FILE *fp, int p, int pop);
+void PGARealCopyString ( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGARealDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGARealInitString ( PGAContext *ctx, int p, int pop);
+MPI_Datatype PGARealBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          report.c
+*****************************************/
+
+
+void PGAPrintReport(PGAContext *ctx, FILE *fp, int pop);
+void PGASetPrintOptions (PGAContext *ctx, int option);
+void PGASetPrintFrequencyValue( PGAContext *ctx, int print_freq);
+int PGAGetPrintFrequencyValue (PGAContext *ctx);
+void PGAPrintPopulation ( PGAContext *ctx, FILE *fp, int pop );
+void PGAPrintIndividual ( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGAPrintString ( PGAContext *ctx, FILE *file, int p, int pop );
+void PGAPrintContextVariable ( PGAContext *ctx, FILE *fp );
+
+/*****************************************
+*          restart.c
+*****************************************/
+
+void PGARestart(PGAContext *ctx, int source_pop, int dest_pop);
+void PGASetRestartFlag(PGAContext *ctx, int val);
+int PGAGetRestartFlag(PGAContext *ctx);
+void PGASetRestartFrequencyValue(PGAContext *ctx, int numiter);
+int PGAGetRestartFrequencyValue(PGAContext *ctx);
+void PGASetRestartAlleleChangeProb(PGAContext *ctx, double prob);
+double PGAGetRestartAlleleChangeProb(PGAContext *ctx);
+
+/*****************************************
+*          select.c
+*****************************************/
+
+void PGASelect( PGAContext *ctx, int popix );
+int PGASelectNextIndex ( PGAContext *ctx );
+void PGASetSelectType( PGAContext *ctx, int select_type);
+int PGAGetSelectType (PGAContext *ctx);
+void PGASetPTournamentProb(PGAContext *ctx, double ptournament_prob);
+double PGAGetPTournamentProb(PGAContext *ctx);
+int PGASelectProportional(PGAContext *ctx, PGAIndividual *pop);
+void PGASelectSUS( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectTournament( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectPTournament( PGAContext *ctx, PGAIndividual *pop );
+
+/*****************************************
+*          stop.c
+*****************************************/
+
+int PGADone(PGAContext *ctx, MPI_Comm comm);
+int PGACheckStoppingConditions( PGAContext *ctx);
+void PGASetStoppingRuleType (PGAContext *ctx, int stoprule);
+int PGAGetStoppingRuleType (PGAContext *ctx);
+void PGASetMaxGAIterValue(PGAContext *ctx, int maxiter);
+int PGAGetMaxGAIterValue (PGAContext *ctx);
+void PGASetMaxNoChangeValue(PGAContext *ctx, int max_no_change);
+void PGASetMaxSimilarityValue(PGAContext *ctx, int max_similarity);
+
+/*****************************************
+*          system.c
+*****************************************/
+
+
+void PGAError( PGAContext *ctx, char *msg,
+               int level, int datatype, void *data );
+void PGADestroy (PGAContext *ctx);
+void PGADestroyUD (PGAContext *ctx,int,int);
+int PGAGetMaxMachineIntValue (PGAContext *ctx);
+int PGAGetMinMachineIntValue (PGAContext *ctx);
+double PGAGetMaxMachineDoubleValue (PGAContext *ctx);
+double PGAGetMinMachineDoubleValue (PGAContext *ctx);
+void PGAUsage( PGAContext *ctx );
+void PGAPrintVersionNumber( PGAContext *ctx );
+
+/*****************************************
+*          user.c
+*****************************************/
+
+
+void PGASetUserFunction(PGAContext *ctx, int constant, void *f);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function returns the size of the user data vector in all    */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+int PGAGetSizeUD(PGAContext *ctx);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function sets the size of the user data vector in all       */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void PGASetSizeUD(PGAContext *ctx,int s);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function gets the user data vector in all                   */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void *PGAGetUD(PGAContext *ctx,int s,int pop);
+
+
+/*****************************************
+*          utility.c
+*****************************************/
+
+
+double PGAMean ( PGAContext *ctx, double *a, int n);
+double PGAStddev ( PGAContext *ctx, double *a, int n, double mean);
+int PGARound(PGAContext *ctx, double x);
+void PGACopyIndividual( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGACheckSum(PGAContext *ctx, int p, int pop);
+int PGAGetWorstIndex(PGAContext *ctx, int pop);
+int PGAGetBestIndex(PGAContext *ctx, int pop);
+PGAIndividual *PGAGetIndividual ( PGAContext *ctx, int p, int pop);
+void PGAUpdateAverage(PGAContext *ctx, int pop);
+void PGAUpdateOnline(PGAContext *ctx, int pop);
+void PGAUpdateOffline(PGAContext *ctx, int pop);
+int PGAComputeSimilarity(PGAContext *ctx, PGAIndividual *pop);
+
+
+#endif
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/Makefile.in	(revision 6168)
@@ -0,0 +1,55 @@
+FC        = @FC@
+PREFFLAGS = @FFLAGS@
+RM        = @RM@
+LDFLAGS   = @LDFLAGS@
+
+SHELL     = @SHELL@
+RANLIB    = @RANLIB@
+MGHDIR    = .
+
+FFLAGS    = -o $@ $(PREFFLAGS)
+
+COMPILE.f = @$(FC) $(FFLAGS) -c
+
+OBJS = grdfcn77.o hesfcn77.o objfcn77.o ssqfcn77.o ssqjac77.o vecfcn77.o \
+       vecjac77.o
+
+default:
+	@echo "Compiling mgh library"
+	@make tprobs.a
+	@echo "Compiling mgh testprog"
+	@make testprog
+
+tprobs.a: $(OBJS)
+	@ar ruv tprobs.a $(OBJS)
+	@$(RANLIB) tprobs.a
+
+gradfcn77.o: gradfcn77.f
+	$(COMPILE.f) gradfcn77.f
+
+hesfcn77.o: hesfcn77.f
+	$(COMPILE.f) hesfcn77.f
+
+objfcn77.o: objfcn77.f
+	$(COMPILE.f) objfcn77.f
+
+ssqfcn77.o: ssqfcn77.f
+	$(COMPILE.f) ssqfcn77.f
+
+ssqjac77.o: ssqjac77.f
+	$(COMPILE.f) ssqjac77.f
+
+vecfcn77.o: vecfcn77.f
+	$(COMPILE.f) vecfcn77.f
+
+vecjac77.o: vecjac77.f
+	$(COMPILE.f) vecjac77.f
+
+testprog: testprog.f
+	@if test ! -f "$(MGHDIR)/tprobs.a"; then\
+		cd $(MGHDIR); make tprobs;\
+	fi
+	@$(FC) $(FFLAGS) testprog.f $(MGHDIR)/tprobs.a $(LDFLAGS)
+
+clean:
+	@$(RM) $(OBJS) tprobs.a testprog
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/README	(revision 6168)
@@ -0,0 +1,7 @@
+This directory contains the FORTRAN source code of a battery of 18
+unconstrained minimization problems and a program to run them.  These problems
+are the 18 listed on page 30 of the following article:
+
+More, Jorge J., Burton S. Garbow, and Kenneth E. Hillstrom.  "Testing
+	Unconstrained Optimization Software."  ACM Transactions on
+	Mathematical Software, Vol. 7, No. 1, March 1981.  Pages 17-41.
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/grdfcn77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/grdfcn77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/grdfcn77.f	(revision 6168)
@@ -0,0 +1,434 @@
+      subroutine grdfcn(n,x,g,nprob)
+      integer n,nprob
+      double precision x(n),g(n)
+c     **********
+c
+c     subroutine grdfcn
+c
+c     This subroutine defines the gradient vectors of eighteen
+c     nonlinear unconstrained minimization problems. The problem
+c     dimensions are as described in the prologue comments of objfcn.
+c
+c     The subroutine statement is
+c
+c       subroutine grdfcn(n,x,g,nprob)
+c
+c     where
+c
+c       n is a positive integer input variable.
+c
+c       x is an input array of length n.
+c
+c       g is an output array of length n which contains the components
+c         of the gradient vector of the nprob objective function
+c         evaluated at x.
+c
+c       nprob is a positive integer input variable which defines the
+c         number of the problem. nprob must not exceed 18.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... abs,atan,cos,dble,exp,log,sign,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,iev,j
+      double precision ap,arg,c2pdm6,cp0001,cp1,cp2,cp25,cp5,c1p5,
+     *                 c2p25,c2p625,c3p5,c19p8,c20p2,c25,c29,c100,
+     *                 c180,c200,c10000,c1pd6,d1,d2,eight,fifty,five,
+     *                 four,one,r,s1,s2,s3,t,t1,t2,t3,ten,th,three,
+     *                 tpi,twenty,two,zero
+      double precision fvec(50),y(15)
+      data zero,one,two,three,four,five,eight,ten,twenty,fifty
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,4.0d0,5.0d0,8.0d0,1.0d1,2.0d1,
+     *      5.0d1/
+      data c2pdm6,cp0001,cp1,cp2,cp25,cp5,c1p5,c2p25,c2p625,c3p5,
+     *     c19p8,c20p2,c25,c29,c100,c180,c200,c10000,c1pd6
+     *     /2.0d-6,1.0d-4,1.0d-1,2.0d-1,2.5d-1,5.0d-1,1.5d0,2.25d0,
+     *      2.625d0,3.5d0,1.98d1,2.02d1,2.5d1,2.9d1,1.0d2,1.8d2,2.0d2,
+     *      1.0d4,1.0d6/
+      data ap /1.0d-5/
+      data y(1),y(2),y(3),y(4),y(5),y(6),y(7),y(8),y(9),y(10),y(11),
+     *     y(12),y(13),y(14),y(15)
+     *     /9.0d-4,4.4d-3,1.75d-2,5.4d-2,1.295d-1,2.42d-1,3.521d-1,
+     *      3.989d-1,3.521d-1,2.42d-1,1.295d-1,5.4d-2,1.75d-2,4.4d-3,
+     *      9.0d-4/
+c
+c     Gradient routine selector.
+c
+      go to (10,20,50,70,80,100,130,190,220,260,270,290,310,350,370,
+     *       390,400,410), nprob
+c
+c     Helical valley function.
+c
+   10 continue
+      tpi = eight*atan(one)
+      th = sign(cp25,x(2))
+      if (x(1) .gt. zero) th = atan(x(2)/x(1))/tpi
+      if (x(1) .lt. zero) th = atan(x(2)/x(1))/tpi + cp5
+      arg = x(1)**2 + x(2)**2
+      r = sqrt(arg)
+      t = x(3) - ten*th
+      s1 = ten*t/(tpi*arg)
+      g(1) = c200*(x(1) - x(1)/r + x(2)*s1)
+      g(2) = c200*(x(2) - x(2)/r - x(1)*s1)
+      g(3) = two*(c100*t + x(3))
+      return
+c
+c     Biggs exp6 function.
+c
+   20 continue
+      do 30 j = 1, 6
+         g(j) = zero
+   30    continue
+      do 40 i = 1, 13
+         d1 = dble(i)/ten
+         d2 = exp(-d1) - five*exp(-ten*d1) + three*exp(-four*d1)
+         s1 = exp(-d1*x(1))
+         s2 = exp(-d1*x(2))
+         s3 = exp(-d1*x(5))
+         t = x(3)*s1 - x(4)*s2 + x(6)*s3 - d2
+         th = d1*t
+         g(1) = g(1) - s1*th
+         g(2) = g(2) + s2*th
+         g(3) = g(3) + s1*t
+         g(4) = g(4) - s2*t
+         g(5) = g(5) - s3*th
+         g(6) = g(6) + s3*t
+   40    continue
+      g(1) = two*x(3)*g(1)
+      g(2) = two*x(4)*g(2)
+      g(3) = two*g(3)
+      g(4) = two*g(4)
+      g(5) = two*x(6)*g(5)
+      g(6) = two*g(6)
+      return
+c
+c     Gaussian function.
+c
+   50 continue
+      g(1) = zero
+      g(2) = zero
+      g(3) = zero
+      do 60 i = 1, 15
+         d1 = cp5*dble(i-1)
+         d2 = c3p5 - d1 - x(3)
+         arg = -cp5*x(2)*d2**2
+         r = exp(arg)
+         t = x(1)*r - y(i)
+         s1 = r*t
+         s2 = d2*s1
+         g(1) = g(1) + s1
+         g(2) = g(2) - d2*s2
+         g(3) = g(3) + s2
+   60    continue
+      g(1) = two*g(1)
+      g(2) = x(1)*g(2)
+      g(3) = two*x(1)*x(2)*g(3)
+      return
+c
+c     Powell badly scaled function.
+c
+   70 continue
+      t1 = c10000*x(1)*x(2) - one
+      s1 = exp(-x(1))
+      s2 = exp(-x(2))
+      t2 = s1 + s2 - one - cp0001
+      g(1) = two*(c10000*x(2)*t1 - s1*t2)
+      g(2) = two*(c10000*x(1)*t1 - s2*t2)
+      return
+c
+c     Box 3-dimensional function.
+c
+   80 continue
+      g(1) = zero
+      g(2) = zero
+      g(3) = zero
+      do 90 i = 1, 10
+         d1 = dble(i)
+         d2 = d1/ten
+         s1 = exp(-d2*x(1))
+         s2 = exp(-d2*x(2))
+         s3 = exp(-d2) - exp(-d1)
+         t = s1 - s2 - s3*x(3)
+         th = d2*t
+         g(1) = g(1) - s1*th
+         g(2) = g(2) + s2*th
+         g(3) = g(3) - s3*t
+   90    continue
+      g(1) = two*g(1)
+      g(2) = two*g(2)
+      g(3) = two*g(3)
+      return
+c
+c     Variably dimensioned function.
+c
+  100 continue
+      t1 = zero
+      do 110 j = 1, n
+         t1 = t1 + dble(j)*(x(j) - one)
+  110    continue
+      t = t1*(one + two*t1**2)
+      do 120 j = 1, n
+         g(j) = two*(x(j) - one + dble(j)*t)
+  120    continue
+      return
+c
+c     Watson function.
+c
+  130 continue
+      do 140 j = 1, n
+         g(j) = zero
+  140    continue
+      do 180 i = 1, 29
+         d1 = dble(i)/c29
+         s1 = zero
+         d2 = one
+         do 150 j = 2, n
+            s1 = s1 + dble(j-1)*d2*x(j)
+            d2 = d1*d2
+  150       continue
+         s2 = zero
+         d2 = one
+         do 160 j = 1, n
+            s2 = s2 + d2*x(j)
+            d2 = d1*d2
+  160       continue
+         t = s1 - s2**2 - one
+         s3 = two*d1*s2
+         d2 = two/d1
+         do 170 j = 1, n
+            g(j) = g(j) + d2*(dble(j-1) - s3)*t
+            d2 = d1*d2
+  170       continue
+  180    continue
+      t1 = x(2) - x(1)**2 - one
+      g(1) = g(1) + x(1)*(two - four*t1)
+      g(2) = g(2) + two*t1
+      return
+c
+c     Penalty function I.
+c
+  190 continue
+      t1 = -cp25
+      do 200 j = 1, n
+         t1 = t1 + x(j)**2
+  200    continue
+      d1 = two*ap
+      th = four*t1
+      do 210 j = 1, n
+         g(j) = d1*(x(j) - one) + x(j)*th
+  210    continue
+      return
+c
+c     Penalty function II.
+c
+  220 continue
+      t1 = -one
+      do 230 j = 1, n
+         t1 = t1 + dble(n-j+1)*x(j)**2
+  230    continue
+      d1 = exp(cp1)
+      d2 = one
+      th = four*t1
+      do 250 j = 1, n
+         g(j) = dble(n-j+1)*x(j)*th
+         s1 = exp(x(j)/ten)
+         if (j .gt. 1) then
+            s3 = s1 + s2 - d2*(d1 + one)
+            g(j) = g(j) + ap*s1*(s3 + s1 - one/d1)/five
+            g(j-1) = g(j-1) + ap*s2*s3/five
+            end if
+         s2 = s1
+         d2 = d1*d2
+  250    continue
+      g(1) = g(1) + two*(x(1) - cp2)
+      return
+c
+c     Brown badly scaled function.
+c
+  260 continue
+      t1 = x(1) - c1pd6
+      t2 = x(2) - c2pdm6
+      t3 = x(1)*x(2) - two
+      g(1) = two*(t1 + x(2)*t3)
+      g(2) = two*(t2 + x(1)*t3)
+      return
+c
+c     Brown and Dennis function.
+c
+  270 continue
+      g(1) = zero
+      g(2) = zero
+      g(3) = zero
+      g(4) = zero
+      do 280 i = 1, 20
+         d1 = dble(i)/five
+         d2 = sin(d1)
+         t1 = x(1) + d1*x(2) - exp(d1)
+         t2 = x(3) + d2*x(4) - cos(d1)
+         t = t1**2 + t2**2
+         s1 = t1*t
+         s2 = t2*t
+         g(1) = g(1) + s1
+         g(2) = g(2) + d1*s1
+         g(3) = g(3) + s2
+         g(4) = g(4) + d2*s2
+  280    continue
+      g(1) = four*g(1)
+      g(2) = four*g(2)
+      g(3) = four*g(3)
+      g(4) = four*g(4)
+      return
+c
+c     Gulf research and development function.
+c
+  290 continue
+      g(1) = zero
+      g(2) = zero
+      g(3) = zero
+      d1 = two/three
+      do 300 i = 1, 99
+         arg = dble(i)/c100
+         r = (-fifty*log(arg))**d1 + c25 - x(2)
+         t1 = abs(r)**x(3)/x(1)
+         t2 = exp(-t1)
+         t = t2 - arg
+         s1 = t1*t2*t
+         g(1) = g(1) + s1
+         g(2) = g(2) + s1/r
+         g(3) = g(3) - s1*log(abs(r))
+  300    continue
+      g(1) = two*g(1)/x(1)
+      g(2) = two*x(3)*g(2)
+      g(3) = two*g(3)
+      return
+c
+c     Trigonometric function.
+c
+  310 continue
+      s1 = zero
+      do 320 j = 1, n
+         g(j) = cos(x(j))
+         s1 = s1 + g(j)
+  320    continue
+      s2 = zero
+      do 330 j = 1, n
+         th = sin(x(j))
+         t = dble(n+j) - th - s1 - dble(j)*g(j)
+         s2 = s2 + t
+         g(j) = (dble(j)*th - g(j))*t
+  330    continue
+      do 340 j = 1, n
+         g(j) = two*(g(j) + sin(x(j))*s2)
+  340    continue
+      return
+c
+c     Extended Rosenbrock function.
+c
+  350 continue
+      do 360 j = 1, n, 2
+         t1 = one - x(j)
+         g(j+1) = c200*(x(j+1) - x(j)**2)
+         g(j) = -two*(x(j)*g(j+1) + t1)
+  360    continue
+      return
+c
+c     Extended Powell function.
+c
+  370 continue
+      do 380 j = 1, n, 4
+         t = x(j) + ten*x(j+1)
+         t1 = x(j+2) - x(j+3)
+         s1 = five*t1
+         t2 = x(j+1) - two*x(j+2)
+         s2 = four*t2**3
+         t3 = x(j) - x(j+3)
+         s3 = twenty*t3**3
+         g(j) = two*(t + s3)
+         g(j+1) = twenty*t + s2
+         g(j+2) = two*(s1 - s2)
+         g(j+3) = -two*(s1 + s3)
+  380    continue
+      return
+c
+c     Beale function.
+c
+  390 continue
+      s1 = one - x(2)
+      t1 = c1p5 - x(1)*s1
+      s2 = one - x(2)**2
+      t2 = c2p25 - x(1)*s2
+      s3 = one - x(2)**3
+      t3 = c2p625 - x(1)*s3
+      g(1) = -two*(s1*t1 + s2*t2 + s3*t3)
+      g(2) = two*x(1)*(t1 + x(2)*(two*t2 + three*x(2)*t3))
+      return
+c
+c     Wood function.
+c
+  400 continue
+      s1 = x(2) - x(1)**2
+      s2 = one - x(1)
+      s3 = x(2) - one
+      t1 = x(4) - x(3)**2
+      t2 = one - x(3)
+      t3 = x(4) - one
+      g(1) = -two*(c200*x(1)*s1 + s2)
+      g(2) = c200*s1 + c20p2*s3 + c19p8*t3
+      g(3) = -two*(c180*x(3)*t1 + t2)
+      g(4) = c180*t1 + c20p2*t3 + c19p8*s3
+      return
+c
+c     Chebyquad function.
+c
+  410 continue
+      do 420 i = 1, n
+         fvec(i) = zero
+  420    continue
+      do 440 j = 1, n
+         t1 = one
+         t2 = two*x(j) - one
+         t = two*t2
+         do 430 i = 1, n
+            fvec(i) = fvec(i) + t2
+            th = t*t2 - t1
+            t1 = t2
+            t2 = th
+  430       continue
+  440    continue
+      d1 = one/dble(n)
+      iev = -1
+      do 450 i = 1, n
+         fvec(i) = d1*fvec(i)
+         if (iev .gt. 0) fvec(i) = fvec(i) + one/(dble(i)**2 - one)
+         iev = -iev
+  450    continue
+      do 470 j = 1, n
+         g(j) = zero
+         t1 = one
+         t2 = two*x(j) - one
+         t = two*t2
+         s1 = zero
+         s2 = two
+         do 460 i = 1, n
+            g(j) = g(j) + fvec(i)*s2
+            th = four*t2 + t*s2 - s1
+            s1 = s2
+            s2 = th
+            th = t*t2 - t1
+            t1 = t2
+            t2 = th
+  460       continue
+  470    continue
+      d2 = two*d1
+      do 480 j = 1, n
+         g(j) = d2*g(j)
+  480    continue
+      return
+c
+c     Last card of subroutine grdfcn.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/hesfcn77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/hesfcn77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/hesfcn77.f	(revision 6168)
@@ -0,0 +1,660 @@
+      subroutine hesfcn(n,x,h,ldh,nprob)
+      integer n,ldh,nprob
+      double precision x(n),h(ldh,n)
+c     **********
+c
+c     subroutine hesfcn
+c
+c     This subroutine defines the hessian matrices of eighteen
+c     nonlinear unconstrained minimization problems. The problem
+c     dimensions are as described in the prologue comments of objfcn.
+c     The upper triangle of the (symmetric) hessian matrix is
+c     computed columnwise. Storage locations below the diagonal
+c     are not disturbed until the final step, which reflects the
+c     upper triangle to fill the square matrix.
+c
+c     The subroutine statement is
+c
+c       subroutine hesfcn(n,x,h,ldh,nprob)
+c
+c     where
+c
+c       n is a positive integer input variable.
+c
+c       x is an input array of length n.
+c
+c       h is an output n by n array which contains the hessian
+c         matrix of the nprob objective function evaluated at x.
+c
+c       ldh is a positive integer input variable not less than n
+c         which specifies the leading dimension of the array h.
+c
+c       nprob is a positive integer input variable which defines the
+c         number of the problem. nprob must not exceed 18.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... abs,atan,cos,dble,exp,log,sign,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,iev,j,k
+      double precision ap,arg,cp0001,cp1,cp25,cp5,c1p5,c2p25,
+     *                 c2p625,c3p5,c19p8,c25,c29,c100,c200,c10000,d1,
+     *                 d2,eight,fifty,five,four,one,r,s1,s2,s3,t,t1,
+     *                 t2,t3,ten,th,three,tpi,twenty,two,zero
+      double precision d3,r1,r2,r3,u1,u2,v,v1,v2
+      double precision fvec(50),fvec1(50),y(15)
+      double precision six,xnine,twelve,c120,c200p2,c202,c220p2,c360,
+     *                 c400,c1200
+      data six,xnine,twelve,c120,c200p2,c202,c220p2,c360,c400,c1200
+     *     /6.0d0,9.0d0,1.2d1,1.2d2,2.002d2,2.02d2,2.202d2,3.6d2,
+     *      4.0d2,1.2d3/
+      data zero,one,two,three,four,five,eight,ten,twenty,fifty
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,4.0d0,5.0d0,8.0d0,1.0d1,2.0d1,
+     *      5.0d1/
+      data cp0001,cp1,cp25,cp5,c1p5,c2p25,c2p625,c3p5,c19p8,c25,c29,
+     *     c100,c200,c10000
+     *     /1.0d-4,1.0d-1,2.5d-1,5.0d-1,1.5d0,2.25d0,2.625d0,3.5d0,
+     *      1.98d1,2.5d1,2.9d1,1.0d2,2.0d2,1.0d4/
+      data ap /1.0d-5/
+      data y(1),y(2),y(3),y(4),y(5),y(6),y(7),y(8),y(9),y(10),y(11),
+     *     y(12),y(13),y(14),y(15)
+     *     /9.0d-4,4.4d-3,1.75d-2,5.4d-2,1.295d-1,2.42d-1,3.521d-1,
+     *      3.989d-1,3.521d-1,2.42d-1,1.295d-1,5.4d-2,1.75d-2,4.4d-3,
+     *      9.0d-4/
+c
+c     Hessian routine selector.
+c
+      go to (10,20,60,100,110,170,210,290,330,380,390,450,490,580,620,
+     *       660,670,680), nprob
+c
+c     Helical valley function.
+c
+   10 continue
+      tpi = eight*atan(one)
+      th = sign(cp25,x(2))
+      if (x(1) .gt. zero) th = atan(x(2)/x(1))/tpi
+      if (x(1) .lt. zero) th = atan(x(2)/x(1))/tpi + cp5
+      arg = x(1)**2 + x(2)**2
+      r = sqrt(arg)
+      t = x(3) - ten*th
+      s1 = ten*t/(tpi*arg)
+      t1 = ten/tpi
+      t2 = t1/arg
+      t3 = (x(1)/r - t1*t2*x(1) - two*x(2)*s1)/arg
+      h(1,1) = c200
+     *         *(one - x(2)/arg*(x(2)/r - t1*t2*x(2) + two*x(1)*s1))
+      h(1,2) = c200*(s1 + x(2)*t3)
+      h(2,2) = c200*(one - x(1)*t3)
+      h(1,3) = c200*t2*x(2)
+      h(2,3) = -c200*t2*x(1)
+      h(3,3) = c202
+      go to 800
+c
+c     Biggs exp6 function.
+c
+   20 continue
+      do 40 j = 1, 6
+         do 30 k = 1, j
+            h(k,j) = zero
+   30       continue
+   40    continue
+      do 50 i = 1, 13
+         d1 = dble(i)/ten
+         d2 = exp(-d1) - five*exp(-ten*d1) + three*exp(-four*d1)
+         s1 = exp(-d1*x(1))
+         s2 = exp(-d1*x(2))
+         s3 = exp(-d1*x(5))
+         t = x(3)*s1 - x(4)*s2 + x(6)*s3 - d2
+         th = d1*t
+         r1 = d1*s1
+         r2 = d1*s2
+         r3 = d1*s3
+         h(1,1) = h(1,1) + r1*(th + x(3)*r1)
+         h(1,2) = h(1,2) - r1*r2
+         h(2,2) = h(2,2) - r2*(th - x(4)*r2)
+         h(1,3) = h(1,3) - s1*(th + x(3)*r1)
+         h(3,3) = h(3,3) + s1**2
+         h(1,4) = h(1,4) + r1*s2
+         h(2,4) = h(2,4) + s2*(th - x(4)*r2)
+         h(3,4) = h(3,4) - s1*s2
+         h(4,4) = h(4,4) + s2**2
+         h(1,5) = h(1,5) + r1*r3
+         h(2,5) = h(2,5) - r2*r3
+         h(5,5) = h(5,5) + r3*(th + x(6)*r3)
+         h(1,6) = h(1,6) - r1*s3
+         h(2,6) = h(2,6) + r2*s3
+         h(3,6) = h(3,6) + s1*s3
+         h(4,6) = h(4,6) - s2*s3
+         h(5,6) = h(5,6) - s3*(th + x(6)*r3)
+         h(6,6) = h(6,6) + s3**2
+   50    continue
+      h(1,1) = two*x(3)*h(1,1)
+      h(1,2) = two*x(3)*x(4)*h(1,2)
+      h(2,2) = two*x(4)*h(2,2)
+      h(1,3) = two*h(1,3)
+      h(2,3) = two*x(4)*h(1,4)
+      h(3,3) = two*h(3,3)
+      h(1,4) = two*x(3)*h(1,4)
+      h(2,4) = two*h(2,4)
+      h(3,4) = two*h(3,4)
+      h(4,4) = two*h(4,4)
+      h(1,5) = two*x(3)*x(6)*h(1,5)
+      h(2,5) = two*x(4)*x(6)*h(2,5)
+      h(3,5) = two*x(6)*h(1,6)
+      h(4,5) = two*x(6)*h(2,6)
+      h(5,5) = two*x(6)*h(5,5)
+      h(1,6) = two*x(3)*h(1,6)
+      h(2,6) = two*x(4)*h(2,6)
+      h(3,6) = two*h(3,6)
+      h(4,6) = two*h(4,6)
+      h(5,6) = two*h(5,6)
+      h(6,6) = two*h(6,6)
+      go to 800
+c
+c     Gaussian function.
+c
+   60 continue
+      do 80 j = 1, 3
+         do 70 k = 1, j
+            h(k,j) = zero
+   70       continue
+   80    continue
+      do 90 i = 1, 15
+         d1 = cp5*dble(i-1)
+         d2 = c3p5 - d1 - x(3)
+         arg = -cp5*x(2)*d2**2
+         r = exp(arg)
+         t = x(1)*r - y(i)
+         s1 = r*t
+         s2 = d2*s1
+         t1 = s2 + d2*x(1)*r**2
+         t2 = d2*t1
+         h(1,1) = h(1,1) + r**2
+         h(1,2) = h(1,2) - t2
+         h(2,2) = h(2,2) + d2**2*t2
+         h(1,3) = h(1,3) + t1
+         h(2,3) = h(2,3) + two*s2 - d2*x(2)*t2
+         h(3,3) = h(3,3) + x(2)*t2 - s1
+   90    continue
+      h(1,1) = two*h(1,1)
+      h(1,2) = h(1,2)
+      h(2,2) = cp5*x(1)*h(2,2)
+      h(1,3) = two*x(2)*h(1,3)
+      h(2,3) = x(1)*h(2,3)
+      h(3,3) = two*x(1)*x(2)*h(3,3)
+      go to 800
+c
+c     Powell badly scaled function.
+c
+  100 continue
+      t1 = c10000*x(1)*x(2) - one
+      s1 = exp(-x(1))
+      s2 = exp(-x(2))
+      t2 = s1 + s2 - one - cp0001
+      h(1,1) = two*((c10000*x(2))**2 + s1*(s1 + t2))
+      h(1,2) = two*(c10000*(one + two*t1) + s1*s2)
+      h(2,2) = two*((c10000*x(1))**2 + s2*(s2 + t2))
+      go to 800
+c
+c     Box 3-dimensional function.
+c
+  110 continue
+      do 130 j = 1, 3
+         do 120 k = 1, j
+            h(k,j) = zero
+  120       continue
+  130    continue
+      do 140 i = 1, 10
+         d1 = dble(i)
+         d2 = d1/ten
+         s1 = exp(-d2*x(1))
+         s2 = exp(-d2*x(2))
+         s3 = exp(-d2) - exp(-d1)
+         t = s1 - s2 - s3*x(3)
+         th = d2*t
+         r1 = d2*s1
+         r2 = d2*s2
+         h(1,1) = h(1,1) + r1*(th + r1)
+         h(1,2) = h(1,2) - r1*r2
+         h(2,2) = h(2,2) - r2*(th - r2)
+         h(1,3) = h(1,3) + r1*s3
+         h(2,3) = h(2,3) - r2*s3
+         h(3,3) = h(3,3) + s3**2
+  140    continue
+      do 160 j = 1, 3
+         do 150 k = 1, j
+            h(k,j) = two*h(k,j)
+  150       continue
+  160    continue
+      go to 800
+c
+c     Variably dimensioned function.
+c
+  170 continue
+      t1 = zero
+      do 180 j = 1, n
+         t1 = t1 + dble(j)*(x(j) - one)
+  180    continue
+c     t = t1*(one + two*t1**2)
+      t2 = two + twelve*t1**2
+      do 200 j = 1, n
+         do 190 k = 1, j
+            h(k,j) = dble(k*j)*t2
+  190       continue
+         h(j,j) = h(j,j) + two
+  200    continue
+      go to 800
+c
+c     Watson function.
+c
+  210 continue
+      do 230 j = 1, n
+         do 220 k = 1, j
+            h(k,j) = zero
+  220       continue
+  230    continue
+      do 280 i = 1, 29
+         d1 = dble(i)/c29
+         s1 = zero
+         d2 = one
+         do 240 j = 2, n
+            s1 = s1 + dble(j-1)*d2*x(j)
+            d2 = d1*d2
+  240       continue
+         s2 = zero
+         d2 = one
+         do 250 j = 1, n
+            s2 = s2 + d2*x(j)
+            d2 = d1*d2
+  250       continue
+         t = s1 - s2**2 - one
+         s3 = two*d1*s2
+         d2 = two/d1
+         th = two*d1**2*t
+         do 270 j = 1, n
+            v = dble(j-1) - s3
+            d3 = one/d1
+            do 260 k = 1, j
+               h(k,j) = h(k,j) + d2*d3*(v*(dble(k-1) - s3) - th)
+               d3 = d1*d3
+  260          continue
+            d2 = d1*d2
+  270       continue
+  280    continue
+      t1 = x(2) - x(1)**2 - one
+      h(1,1) = h(1,1) + eight*x(1)**2 + two - four*t1
+      h(1,2) = h(1,2) - four*x(1)
+      h(2,2) = h(2,2) + two
+      go to 800
+c
+c     Penalty function I.
+c
+  290 continue
+      t1 = -cp25
+      do 300 j = 1, n
+         t1 = t1 + x(j)**2
+  300    continue
+      d1 = two*ap
+      th = four*t1
+      do 320 j = 1, n
+         t2 = eight*x(j)
+         do 310 k = 1, j
+            h(k,j) = x(k)*t2
+  310       continue
+         h(j,j) = h(j,j) + d1 + th
+  320    continue
+      go to 800
+c
+c     Penalty function II.
+c
+  330 continue
+      t1 = -one
+      do 340 j = 1, n
+         t1 = t1 + dble(n-j+1)*x(j)**2
+  340    continue
+      d1 = exp(cp1)
+      d2 = one
+      th = four*t1
+      do 370 j = 1, n
+         t2 = eight*dble(n-j+1)*x(j)
+         do 350 k = 1, j
+            h(k,j) = dble(n-k+1)*x(k)*t2
+  350       continue
+         h(j,j) = h(j,j) + dble(n-j+1)*th
+         s1 = exp(x(j)/ten)
+         if (j .gt. 1) then
+            s3 = s1 + s2 - d2*(d1 + one)
+            h(j,j) = h(j,j) + ap*s1*(s3 + three*s1 - one/d1)/fifty
+            h(j-1,j) = h(j-1,j) + ap*s1*s2/fifty
+            h(j-1,j-1) = h(j-1,j-1) + ap*s2*(s2 + s3)/fifty
+            end if
+         s2 = s1
+         d2 = d1*d2
+  370    continue
+      h(1,1) = h(1,1) + two
+      go to 800
+c
+c     Brown badly scaled function.
+c
+  380 continue
+c     t1 = x(1) - c1pd6
+c     t2 = x(2) - c2pdm6
+      t3 = x(1)*x(2) - two
+      h(1,1) = two*(one + x(2)**2)
+      h(1,2) = four*(one + t3)
+      h(2,2) = two*(one + x(1)**2)
+      go to 800
+c
+c     Brown and Dennis function.
+c
+  390 continue
+      do 410 j = 1, 4
+         do 400 k = 1, j
+            h(k,j) = zero
+  400       continue
+  410    continue
+      do 420 i = 1, 20
+         d1 = dble(i)/five
+         d2 = sin(d1)
+         t1 = x(1) + d1*x(2) - exp(d1)
+         t2 = x(3) + d2*x(4) - cos(d1)
+         t = t1**2 + t2**2
+c        s1 = t1*t
+c        s2 = t2*t
+         s3 = two*t1*t2
+         r1 = t + two*t1**2
+         r2 = t + two*t2**2
+         h(1,1) = h(1,1) + r1
+         h(1,2) = h(1,2) + d1*r1
+         h(2,2) = h(2,2) + d1**2*r1
+         h(1,3) = h(1,3) + s3
+         h(2,3) = h(2,3) + d1*s3
+         h(3,3) = h(3,3) + r2
+         h(1,4) = h(1,4) + d2*s3
+         h(2,4) = h(2,4) + d1*d2*s3
+         h(3,4) = h(3,4) + d2*r2
+         h(4,4) = h(4,4) + d2**2*r2
+  420    continue
+      do 440 j = 1, 4
+         do 430 k = 1, j
+            h(k,j) = four*h(k,j)
+  430       continue
+  440    continue
+      go to 800
+c
+c     Gulf research and development function.
+c
+  450 continue
+      do 470 j = 1, 3
+         do 460 k = 1, j
+            h(k,j) = zero
+  460       continue
+  470    continue
+      d1 = two/three
+      do 480 i = 1, 99
+         arg = dble(i)/c100
+         r = (-fifty*log(arg))**d1 + c25 - x(2)
+         t1 = abs(r)**x(3)/x(1)
+         t2 = exp(-t1)
+         t = t2 - arg
+         s1 = t1*t2*t
+         s2 = t1*(s1 + t2*(t1*t2 - t))
+         r1 = log(abs(r))
+         r2 = r1*s2
+         h(1,1) = h(1,1) + s2 - s1
+         h(1,2) = h(1,2) + s2/r
+         h(2,2) = h(2,2) + (s1 + x(3)*s2)/r**2
+         h(1,3) = h(1,3) - r2
+         h(2,3) = h(2,3) + (s1 - x(3)*r2)/r
+         h(3,3) = h(3,3) + r1*r2
+  480    continue
+      h(1,1) = two*h(1,1)/x(1)**2
+      h(1,2) = two*x(3)*h(1,2)/x(1)
+      h(2,2) = two*x(3)*h(2,2)
+      h(1,3) = two*h(1,3)/x(1)
+      h(2,3) = two*h(2,3)
+      h(3,3) = two*h(3,3)
+      go to 800
+c
+c     Trigonometric function.
+c
+  490 continue
+      u2 = cos(x(n))
+      s1 = u2
+      if (n .gt. 1) then
+         u1 = cos(x(n-1))
+         s1 = s1 + u1
+         do 500 j = 1, n-2
+            h(j,n-1) = cos(x(j))
+            s1 = s1 + h(j,n-1)
+  500       continue
+         end if
+      v2 = sin(x(n))
+      s2 = dble(2*n) - v2 - s1 - dble(n)*u2
+      r2 = dble(2*n)*v2 - u2
+      if (n .gt. 1) then
+         v1 = sin(x(n-1))
+         s2 = s2 + dble(2*n-1) - v1 - s1 - dble(n-1)*u1
+         r1 = dble(2*n-1)*v1 - u1
+         do 520 j = 1, n-2
+            h(j,n) = sin(x(j))
+            t = dble(n+j) - h(j,n) - s1 - dble(j)*h(j,n-1)
+            s2 = s2 + t
+  520       continue
+         do 540 j = 1, n-2
+            v = dble(j)*h(j,n-1) + h(j,n)
+            t = dble(n+j) - s1 - v
+            t1 = dble(n+j)*h(j,n) - h(j,n-1)
+            do 530 k = 1, j
+               th = dble(k)*h(k,n) - h(k,n-1)
+               h(k,j) = two*(h(k,n)*t1 + h(j,n)*th)
+  530          continue
+            h(j,j) = h(j,j) + two*(h(j,n-1)*s2 + v*t + th**2)
+  540       continue
+         do 550 k = 1, n-2
+            th = dble(k)*h(k,n) - h(k,n-1)
+            h(k,n-1) = two*(h(k,n)*r1 + v1*th)
+            h(k,n) = two*(h(k,n)*r2 + v2*th)
+  550       continue
+         v = dble(n-1)*u1 + v1
+         t = dble(2*n-1) - s1 - v
+         th = dble(n-1)*v1 - u1
+         h(n-1,n-1) = two*(v1*(r1 + th) + u1*s2 + v*t + th**2)
+         h(n-1,n) = two*(v1*r2 + v2*th)
+         end if
+      v = dble(n)*u2 + v2
+      t = dble(2*n) - s1 - v
+      th = dble(n)*v2 - u2
+      h(n,n) = two*(v2*(r2 + th) + u2*s2 + v*t + th**2)
+      go to 800
+c
+c     Extended Rosenbrock function.
+c
+  580 continue
+      do 600 j = 1, n
+         do 590 k = 1, j
+            h(k,j) = zero
+  590       continue
+  600    continue
+      do 610 j = 1, n, 2
+c        t1 = one - x(j)
+         h(j,j) = c1200*x(j)**2 - c400*x(j+1) + two
+         h(j,j+1) = -c400*x(j)
+         h(j+1,j+1) = c200
+  610    continue
+      go to 800
+c
+c     Extended Powell function.
+c
+  620 continue
+      do 640 j = 1, n
+         do 630 k = 1, j
+            h(k,j) = zero
+  630       continue
+  640    continue
+      do 650 j = 1, n, 4
+c        t = x(j) + ten*x(j+1)
+c        t1 = x(j+2) - x(j+3)
+c        s1 = five*t1
+         t2 = x(j+1) - two*x(j+2)
+c        s2 = four*t2**3
+         t3 = x(j) - x(j+3)
+c        s3 = twenty*t3**3
+         r2 = twelve*t2**2
+         r3 = c120*t3**2
+         h(j,j) = two + r3
+         h(j,j+1) = twenty
+         h(j+1,j+1) = c200 + r2
+         h(j+1,j+2) = -two*r2
+         h(j+2,j+2) = ten + four*r2
+         h(j,j+3) = -r3
+         h(j+2,j+3) = -ten
+         h(j+3,j+3) = ten + r3
+  650    continue
+      go to 800
+c
+c     Beale function.
+c
+  660 continue
+      s1 = one - x(2)
+      t1 = c1p5 - x(1)*s1
+      s2 = one - x(2)**2
+      t2 = c2p25 - x(1)*s2
+      s3 = one - x(2)**3
+      t3 = c2p625 - x(1)*s3
+      h(1,1) = two*(s1**2 + s2**2 + s3**2)
+      h(1,2) = two
+     *         *(t1 + x(2)*(two*t2 + three*x(2)*t3)
+     *           - x(1)*(s1 + x(2)*(two*s2 + three*x(2)*s3)))
+      h(2,2) = two*x(1)
+     *         *(x(1) + two*t2
+     *           + x(2)*(six*t3 + x(1)*x(2)*(four + xnine*x(2)**2)))
+      go to 800
+c
+c     Wood function.
+c
+  670 continue
+      s1 = x(2) - x(1)**2
+c     s2 = one - x(1)
+c     s3 = x(2) - one
+      t1 = x(4) - x(3)**2
+c     t2 = one - x(3)
+c     t3 = x(4) - one
+      h(1,1) = c400*(two*x(1)**2 - s1) + two
+      h(1,2) = -c400*x(1)
+      h(2,2) = c220p2
+      h(1,3) = zero
+      h(2,3) = zero
+      h(3,3) = c360*(two*x(3)**2 - t1) + two
+      h(1,4) = zero
+      h(2,4) = c19p8
+      h(3,4) = -c360*x(3)
+      h(4,4) = c200p2
+      go to 800
+c
+c     Chebyquad function.
+c
+  680 continue
+      do 690 i = 1, n
+         fvec(i) = zero
+  690    continue
+      do 710 j = 1, n
+         t1 = one
+         t2 = two*x(j) - one
+         t = two*t2
+         do 700 i = 1, n
+            fvec(i) = fvec(i) + t2
+            th = t*t2 - t1
+            t1 = t2
+            t2 = th
+  700       continue
+  710    continue
+      d1 = one/dble(n)
+      iev = -1
+      do 720 i = 1, n
+         fvec(i) = d1*fvec(i)
+         if (iev .gt. 0) fvec(i) = fvec(i) + one/(dble(i)**2 - one)
+         iev = -iev
+  720    continue
+      do 770 j = 1, n
+         do 730 k = 1, j
+            h(k,j) = zero
+  730       continue
+         t1 = one
+         t2 = two*x(j) - one
+         t = two*t2
+         s1 = zero
+         s2 = two
+         r1 = zero
+         r2 = zero
+         do 740 i = 1, n
+            h(j,j) = h(j,j) + fvec(i)*r2
+            th = eight*s2 + t*r2 - r1
+            r1 = r2
+            r2 = th
+            fvec1(i) = d1*s2
+            th = four*t2 + t*s2 - s1
+            s1 = s2
+            s2 = th
+            th = t*t2 - t1
+            t1 = t2
+            t2 = th
+  740       continue
+         do 760 k = 1, j
+            v1 = one
+            v2 = two*x(k) - one
+            v = two*v2
+            u1 = zero
+            u2 = two
+            do 750 i = 1, n
+               h(k,j) = h(k,j) + fvec1(i)*u2
+               th = four*v2 + v*u2 - u1
+               u1 = u2
+               u2 = th
+               th = v*v2 - v1
+               v1 = v2
+               v2 = th
+  750          continue
+  760       continue
+  770    continue
+      d2 = two*d1
+      do 790 j = 1, n
+         do 780 k = 1, j
+            h(k,j) = d2*h(k,j)
+  780       continue
+  790    continue
+c
+c     Reflect the upper triangle to fill the square matrix.
+c
+  800 continue
+      do 820 j = 1, n
+         do 810 k = j+1, n
+            h(k,j) = h(j,k)
+  810       continue
+  820    continue
+      return
+c
+c     Last card of subroutine hesfcn.
+c
+      end
+      subroutine expand(n,alin,amat,lda)
+      integer n,lda
+      double precision alin(*),amat(lda,n)
+c     **********
+c
+c     This subroutine is a dummy counterpart of one that expands a
+c     linear array to two-dimensional form.
+c
+c     Argonne National Laboratory. MINPACK Project. February 1984.
+c     Burton S. Garbow
+c
+c     **********
+      return
+c
+c     Last card of subroutine expand.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/mpif.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/mpif.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/mpif.h	(revision 6168)
@@ -0,0 +1,263 @@
+!
+!  
+!  (C) 1993 by Argonne National Laboratory and Mississipi State University.
+!      All rights reserved.  See COPYRIGHT in top-level directory.
+!
+!
+! user include file for MPI programs, with no dependencies 
+!
+! It really is not possible to make a perfect include file that can
+! be used by both F77 and F90 compilers, but this is close.  We have removed
+! continuation lines (allows free form input in F90); systems whose
+! Fortran compilers support ! instead of just C or * for comments can
+! globally replace a C in the first column with !; the resulting file
+! should work for both Fortran 77 and Fortran 90.
+!
+! If your Fortran compiler supports ! for comments, you can run this 
+! through sed with
+!     sed -e 's/^C/\!/g'
+!
+! We have also removed the use of contractions (involving the single quote)
+! character because some users use .F instead of .f files (to invoke the
+! cpp preprocessor) and further, their preprocessor is determined to find
+! matching single quote pairs (and probably double quotes; given the
+! different rules in C and Fortran, this sounds like a disaster).  Rather than
+! take the position that the poor users should get a better system, we
+! have removed the text that caused problems.  Of course, the users SHOULD
+! get a better system...
+!
+! return codes 
+      INTEGER MPI_SUCCESS,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE
+      INTEGER MPI_ERR_TAG,MPI_ERR_COMM,MPI_ERR_RANK,MPI_ERR_ROOT
+      INTEGER MPI_ERR_GROUP
+      INTEGER MPI_ERR_OP,MPI_ERR_TOPOLOGY,MPI_ERR_DIMS,MPI_ERR_ARG
+      INTEGER MPI_ERR_UNKNOWN,MPI_ERR_TRUNCATE,MPI_ERR_OTHER
+      INTEGER MPI_ERR_INTERN,MPI_ERR_IN_STATUS,MPI_ERR_PENDING
+      INTEGER MPI_ERR_REQUEST, MPI_ERR_LASTCODE
+      PARAMETER (MPI_SUCCESS=0,MPI_ERR_BUFFER=1,MPI_ERR_COUNT=2)
+      PARAMETER (MPI_ERR_TYPE=3,MPI_ERR_TAG=4,MPI_ERR_COMM=5)
+      PARAMETER (MPI_ERR_RANK=6,MPI_ERR_ROOT=7,MPI_ERR_GROUP=8)
+      PARAMETER (MPI_ERR_OP=9,MPI_ERR_TOPOLOGY=10,MPI_ERR_DIMS=11)
+      PARAMETER (MPI_ERR_ARG=12,MPI_ERR_UNKNOWN=13)
+      PARAMETER (MPI_ERR_TRUNCATE=14,MPI_ERR_OTHER=15)
+      PARAMETER (MPI_ERR_INTERN=16,MPI_ERR_IN_STATUS=17)
+      PARAMETER (MPI_ERR_PENDING=18,MPI_ERR_REQUEST=19)
+      PARAMETER (MPI_ERR_LASTCODE=1073741823)
+!
+      INTEGER MPI_UNDEFINED
+      parameter (MPI_UNDEFINED = (-32766))
+!
+      INTEGER MPI_GRAPH, MPI_CART
+      PARAMETER (MPI_GRAPH = 1, MPI_CART = 2)
+      INTEGER  MPI_PROC_NULL
+      PARAMETER ( MPI_PROC_NULL = (-1) )
+!
+      INTEGER MPI_BSEND_OVERHEAD
+      PARAMETER ( MPI_BSEND_OVERHEAD = 512 )
+
+      INTEGER MPI_SOURCE, MPI_TAG, MPI_ERROR
+      PARAMETER(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4)
+      INTEGER MPI_STATUS_SIZE
+      PARAMETER (MPI_STATUS_SIZE=4)
+      INTEGER MPI_MAX_PROCESSOR_NAME, MPI_MAX_ERROR_STRING
+      PARAMETER (MPI_MAX_PROCESSOR_NAME=256)
+      PARAMETER (MPI_MAX_ERROR_STRING=512)
+      INTEGER MPI_MAX_NAME_STRING
+      PARAMETER (MPI_MAX_NAME_STRING=63)
+!
+      INTEGER MPI_COMM_NULL
+      PARAMETER (MPI_COMM_NULL=0)
+!
+      INTEGER MPI_DATATYPE_NULL
+      PARAMETER (MPI_DATATYPE_NULL = 0)
+      
+      INTEGER MPI_ERRHANDLER_NULL
+      PARAMETER (MPI_ERRHANDLER_NULL = 0)
+      
+      INTEGER MPI_GROUP_NULL
+      PARAMETER (MPI_GROUP_NULL = 0)
+      
+      INTEGER MPI_KEYVAL_INVALID
+      PARAMETER (MPI_KEYVAL_INVALID = 0)
+      
+      INTEGER MPI_REQUEST_NULL
+      PARAMETER (MPI_REQUEST_NULL = 0)
+! 
+      INTEGER MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL
+      PARAMETER (MPI_IDENT=0, MPI_CONGRUENT=1, MPI_SIMILAR=2)
+      PARAMETER (MPI_UNEQUAL=3)
+!
+!     MPI_BOTTOM needs to be a known address; here we put it at the
+!     beginning of the common block.  The point-to-point and collective
+!     routines know about MPI_BOTTOM, but MPI_TYPE_STRUCT as yet does not.
+!
+!     MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE are similar objects
+!     Until the underlying MPI library implements the C version of these
+!     (a null pointer), these are declared as arrays of MPI_STATUS_SIZE
+!
+!     The types MPI_INTEGER1,2,4 and MPI_REAL4,8 are OPTIONAL.
+!     Their values are zero if they are not available.  Note that
+!     using these reduces the portability of code (though may enhance
+!     portability between Crays and other systems)
+!
+      INTEGER MPI_TAG_UB, MPI_HOST, MPI_IO
+      INTEGER MPI_BOTTOM
+      INTEGER MPI_STATUS_IGNORE(MPI_STATUS_SIZE)
+      INTEGER MPI_STATUSES_IGNORE(MPI_STATUS_SIZE)
+      INTEGER MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION 
+      INTEGER MPI_COMPLEX, MPI_DOUBLE_COMPLEX,MPI_LOGICAL
+      INTEGER MPI_CHARACTER, MPI_BYTE, MPI_2INTEGER, MPI_2REAL
+      INTEGER MPI_2DOUBLE_PRECISION, MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX
+      INTEGER MPI_UB, MPI_LB
+      INTEGER MPI_PACKED, MPI_WTIME_IS_GLOBAL
+      INTEGER MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY
+      INTEGER MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND
+      INTEGER MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC
+      INTEGER MPI_MAXLOC
+      INTEGER MPI_OP_NULL
+      INTEGER MPI_ERRORS_ARE_FATAL, MPI_ERRORS_RETURN
+!
+      PARAMETER (MPI_ERRORS_ARE_FATAL=119)
+      PARAMETER (MPI_ERRORS_RETURN=120)
+!
+      PARAMETER (MPI_COMPLEX=23,MPI_DOUBLE_COMPLEX=24,MPI_LOGICAL=25)
+      PARAMETER (MPI_REAL=26,MPI_DOUBLE_PRECISION=27,MPI_INTEGER=28)
+      PARAMETER (MPI_2INTEGER=29,MPI_2COMPLEX=30,MPI_2DOUBLE_COMPLEX=31)
+      PARAMETER (MPI_2REAL=32,MPI_2DOUBLE_PRECISION=33,MPI_CHARACTER=1)
+      PARAMETER (MPI_BYTE=3,MPI_UB=16,MPI_LB=15,MPI_PACKED=14)
+
+      INTEGER MPI_ORDER_C, MPI_ORDER_FORTRAN 
+      PARAMETER (MPI_ORDER_C=56, MPI_ORDER_FORTRAN=57)
+      INTEGER MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_CYCLIC
+      INTEGER MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_DFLT_DARG
+      PARAMETER (MPI_DISTRIBUTE_BLOCK=121, MPI_DISTRIBUTE_CYCLIC=122)
+      PARAMETER (MPI_DISTRIBUTE_NONE=123)
+      PARAMETER (MPI_DISTRIBUTE_DFLT_DARG=-49767)
+      INTEGER MPI_MAX_INFO_KEY, MPI_MAX_INFO_VAL
+      PARAMETER (MPI_MAX_INFO_KEY=255, MPI_MAX_INFO_VAL=1024)
+      INTEGER MPI_INFO_NULL
+      PARAMETER (MPI_INFO_NULL=0)
+
+!
+! Optional Fortran Types.  Configure attempts to determine these.  
+!
+      INTEGER MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, MPI_INTEGER8
+      INTEGER MPI_INTEGER16
+      INTEGER MPI_REAL4, MPI_REAL8, MPI_REAL16
+      INTEGER MPI_COMPLEX8, MPI_COMPLEX16, MPI_COMPLEX32
+      PARAMETER (MPI_INTEGER1=1,MPI_INTEGER2=4)
+      PARAMETER (MPI_INTEGER4=6)
+      PARAMETER (MPI_INTEGER8=13)
+      PARAMETER (MPI_INTEGER16=0)
+      PARAMETER (MPI_REAL4=10)
+      PARAMETER (MPI_REAL8=11)
+      PARAMETER (MPI_REAL16=0)
+      PARAMETER (MPI_COMPLEX8=23)
+      PARAMETER (MPI_COMPLEX16=24)
+      PARAMETER (MPI_COMPLEX32=0)
+!
+!    This is now handled with either the "pointer" extension or this same
+!    code, appended at the end.
+!      COMMON /MPIPRIV/ MPI_BOTTOM,MPI_STATUS_IGNORE,MPI_STATUSES_IGNORE
+!C
+!C     Without this save, some Fortran implementations may make the common
+!C     dynamic!
+!C    
+!C     For a Fortran90 module, we might replace /MPIPRIV/ with a simple
+!C     SAVE MPI_BOTTOM
+!C
+!      SAVE /MPIPRIV/
+!
+      PARAMETER (MPI_MAX=100,MPI_MIN=101,MPI_SUM=102,MPI_PROD=103)
+      PARAMETER (MPI_LAND=104,MPI_BAND=105,MPI_LOR=106,MPI_BOR=107)
+      PARAMETER (MPI_LXOR=108,MPI_BXOR=109,MPI_MINLOC=110)
+      PARAMETER (MPI_MAXLOC=111, MPI_OP_NULL=0)
+!
+      PARAMETER (MPI_GROUP_EMPTY=90,MPI_COMM_WORLD=91,MPI_COMM_SELF=92)
+      PARAMETER (MPI_TAG_UB=80,MPI_HOST=82,MPI_IO=84)
+      PARAMETER (MPI_WTIME_IS_GLOBAL=86)
+!
+      INTEGER MPI_ANY_SOURCE
+      PARAMETER (MPI_ANY_SOURCE = (-2))
+      INTEGER MPI_ANY_TAG
+      PARAMETER (MPI_ANY_TAG = (-1))
+!
+      INTEGER MPI_VERSION, MPI_SUBVERSION
+      PARAMETER (MPI_VERSION    = 1, MPI_SUBVERSION = 2)
+!
+!     There are additional MPI-2 constants 
+      INTEGER MPI_ADDRESS_KIND, MPI_OFFSET_KIND
+      PARAMETER (MPI_ADDRESS_KIND=4)
+      PARAMETER (MPI_OFFSET_KIND=4)
+!
+!     All other MPI routines are subroutines
+!     This may cause some Fortran compilers to complain about defined and
+!     not used.  Such compilers should be improved.
+!
+!     Some Fortran compilers will not link programs that contain
+!     external statements to routines that are not provided, even if
+!     the routine is never called.  Remove PMPI_WTIME and PMPI_WTICK
+!     if you have trouble with them.
+!
+      DOUBLE PRECISION MPI_WTIME, MPI_WTICK,PMPI_WTIME,PMPI_WTICK
+      EXTERNAL MPI_WTIME, MPI_WTICK,PMPI_WTIME,PMPI_WTICK
+!
+!     The attribute copy/delete subroutines are symbols that can be passed
+!     to MPI routines
+!
+      EXTERNAL MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, MPI_DUP_FN
+      COMMON /MPIPRIV/ MPI_BOTTOM,MPI_STATUS_IGNORE,MPI_STATUSES_IGNORE
+!
+!     Without this save, some Fortran implementations may make the common
+!     dynamic!
+!    
+!     For a Fortran90 module, we might replace /MPIPRIV/ with a simple
+!     SAVE MPI_BOTTOM
+!
+      SAVE /MPIPRIV/
+! 
+!     $Id: mpiof.h.in,v 1.3 1999/08/06 18:33:09 thakur Exp $    
+! 
+!     Copyright (C) 1997 University of Chicago. 
+!     See COPYRIGHT notice in top-level directory.
+!
+! 
+!    user include file for Fortran MPI-IO programs 
+!
+      INTEGER MPI_MODE_RDONLY, MPI_MODE_RDWR, MPI_MODE_WRONLY
+      INTEGER MPI_MODE_DELETE_ON_CLOSE, MPI_MODE_UNIQUE_OPEN
+      INTEGER MPI_MODE_CREATE, MPI_MODE_EXCL
+      INTEGER MPI_MODE_APPEND, MPI_MODE_SEQUENTIAL
+      PARAMETER (MPI_MODE_RDONLY=2, MPI_MODE_RDWR=8, MPI_MODE_WRONLY=4)
+      PARAMETER (MPI_MODE_CREATE=1, MPI_MODE_DELETE_ON_CLOSE=16)
+      PARAMETER (MPI_MODE_UNIQUE_OPEN=32, MPI_MODE_EXCL=64)
+      PARAMETER (MPI_MODE_APPEND=128, MPI_MODE_SEQUENTIAL=256)
+!
+      INTEGER MPI_FILE_NULL
+      PARAMETER (MPI_FILE_NULL=0)
+!
+      INTEGER MPI_MAX_DATAREP_STRING
+      PARAMETER (MPI_MAX_DATAREP_STRING=128)
+!
+      INTEGER MPI_SEEK_SET, MPI_SEEK_CUR, MPI_SEEK_END
+      PARAMETER (MPI_SEEK_SET=600, MPI_SEEK_CUR=602, MPI_SEEK_END=604)
+!
+      INTEGER MPIO_REQUEST_NULL
+      PARAMETER (MPIO_REQUEST_NULL=0)
+!
+      integer*8 MPI_DISPLACEMENT_CURRENT
+      PARAMETER (MPI_DISPLACEMENT_CURRENT=-54278278)
+!
+!
+
+
+
+
+
+
+
+!
+!
+!
+!
+!
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/objfcn77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/objfcn77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/objfcn77.f	(revision 6168)
@@ -0,0 +1,338 @@
+      subroutine objfcn(n,x,f,nprob)
+      integer n,nprob
+      double precision f
+      double precision x(n)
+c     **********
+c
+c     subroutine objfcn
+c
+c     This subroutine defines the objective functions of eighteen
+c     nonlinear unconstrained minimization problems. The values
+c     of n for functions 1,2,3,4,5,10,11,12,16 and 17 are
+c     3,6,3,2,3,2,4,3,2 and 4, respectively.
+c     For function 7, n may be 2 or greater but is usually 6 or 9.
+c     For functions 6,8,9,13,14,15 and 18 n may be variable,
+c     however it must be even for function 14, a multiple of 4 for
+c     function 15, and not greater than 50 for function 18.
+c
+c     The subroutine statement is
+c
+c       subroutine objfcn(n,x,f,nprob)
+c
+c     where
+c
+c       n is a positive integer input variable.
+c
+c       x is an input array of length n.
+c
+c       f is an output variable which contains the value of
+c         the nprob objective function evaluated at x.
+c
+c       nprob is a positive integer input variable which defines the
+c         number of the problem. nprob must not exceed 18.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... abs,atan,cos,dble,exp,log,sign,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,iev,j
+      double precision ap,arg,c2pdm6,cp0001,cp1,cp2,cp25,cp5,c1p5,
+     *                 c2p25,c2p625,c3p5,c25,c29,c90,c100,c10000,
+     *                 c1pd6,d1,d2,eight,fifty,five,four,one,r,s1,s2,
+     *                 s3,t,t1,t2,t3,ten,th,three,tpi,two,zero
+      double precision fvec(50),y(15)
+      data zero,one,two,three,four,five,eight,ten,fifty
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,4.0d0,5.0d0,8.0d0,1.0d1,5.0d1/
+      data c2pdm6,cp0001,cp1,cp2,cp25,cp5,c1p5,c2p25,c2p625,c3p5,c25,
+     *     c29,c90,c100,c10000,c1pd6
+     *     /2.0d-6,1.0d-4,1.0d-1,2.0d-1,2.5d-1,5.0d-1,1.5d0,2.25d0,
+     *      2.625d0,3.5d0,2.5d1,2.9d1,9.0d1,1.0d2,1.0d4,1.0d6/
+      data ap /1.0d-5/
+      data y(1),y(2),y(3),y(4),y(5),y(6),y(7),y(8),y(9),y(10),y(11),
+     *     y(12),y(13),y(14),y(15)
+     *     /9.0d-4,4.4d-3,1.75d-2,5.4d-2,1.295d-1,2.42d-1,3.521d-1,
+     *      3.989d-1,3.521d-1,2.42d-1,1.295d-1,5.4d-2,1.75d-2,4.4d-3,
+     *      9.0d-4/
+c
+c     Function routine selector.
+c
+      go to (10,20,40,60,70,90,110,150,170,200,210,230,250,280,300,
+     *       320,330,340), nprob
+c
+c     Helical valley function.
+c
+   10 continue
+      tpi = eight*atan(one)
+      th = sign(cp25,x(2))
+      if (x(1) .gt. zero) th = atan(x(2)/x(1))/tpi
+      if (x(1) .lt. zero) th = atan(x(2)/x(1))/tpi + cp5
+      arg = x(1)**2 + x(2)**2
+      r = sqrt(arg)
+      t = x(3) - ten*th
+      f = c100*(t**2 + (r - one)**2) + x(3)**2
+      return
+c
+c     Biggs exp6 function.
+c
+   20 continue
+      f = zero
+      do 30 i = 1, 13
+         d1 = dble(i)/ten
+         d2 = exp(-d1) - five*exp(-ten*d1) + three*exp(-four*d1)
+         s1 = exp(-d1*x(1))
+         s2 = exp(-d1*x(2))
+         s3 = exp(-d1*x(5))
+         t = x(3)*s1 - x(4)*s2 + x(6)*s3 - d2
+         f = f + t**2
+   30    continue
+      return
+c
+c     Gaussian function.
+c
+   40 continue
+      f = zero
+      do 50 i = 1, 15
+         d1 = cp5*dble(i-1)
+         d2 = c3p5 - d1 - x(3)
+         arg = -cp5*x(2)*d2**2
+         r = exp(arg)
+         t = x(1)*r - y(i)
+         f = f + t**2
+   50    continue
+      return
+c
+c     Powell badly scaled function.
+c
+   60 continue
+      t1 = c10000*x(1)*x(2) - one
+      s1 = exp(-x(1))
+      s2 = exp(-x(2))
+      t2 = s1 + s2 - one - cp0001
+      f = t1**2 + t2**2
+      return
+c
+c     Box 3-dimensional function.
+c
+   70 continue
+      f = zero
+      do 80 i = 1, 10
+         d1 = dble(i)
+         d2 = d1/ten
+         s1 = exp(-d2*x(1))
+         s2 = exp(-d2*x(2))
+         s3 = exp(-d2) - exp(-d1)
+         t = s1 - s2 - s3*x(3)
+         f = f + t**2
+   80    continue
+      return
+c
+c     Variably dimensioned function.
+c
+   90 continue
+      t1 = zero
+      t2 = zero
+      do 100 j = 1, n
+         t1 = t1 + dble(j)*(x(j) - one)
+         t2 = t2 + (x(j) - one)**2
+  100    continue
+      f = t2 + t1**2*(one + t1**2)
+      return
+c
+c     Watson function.
+c
+  110 continue
+      f = zero
+      do 140 i = 1, 29
+         d1 = dble(i)/c29
+         s1 = zero
+         d2 = one
+         do 120 j = 2, n
+            s1 = s1 + dble(j-1)*d2*x(j)
+            d2 = d1*d2
+  120       continue
+         s2 = zero
+         d2 = one
+         do 130 j = 1, n
+            s2 = s2 + d2*x(j)
+            d2 = d1*d2
+  130       continue
+         t = s1 - s2**2 - one
+         f = f + t**2
+  140    continue
+      t1 = x(2) - x(1)**2 - one
+      f = f + x(1)**2 + t1**2
+      return
+c
+c     Penalty function I.
+c
+  150 continue
+      t1 = -cp25
+      t2 = zero
+      do 160 j = 1, n
+         t1 = t1 + x(j)**2
+         t2 = t2 + (x(j) - one)**2
+  160    continue
+      f = ap*t2 + t1**2
+      return
+c
+c     Penalty function II.
+c
+  170 continue
+      t1 = -one
+      t2 = zero
+      t3 = zero
+      d1 = exp(cp1)
+      d2 = one
+      do 190 j = 1, n
+         t1 = t1 + dble(n-j+1)*x(j)**2
+         s1 = exp(x(j)/ten)
+         if (j .gt. 1) then
+            s3 = s1 + s2 - d2*(d1 + one)
+            t2 = t2 + s3**2
+            t3 = t3 + (s1 - one/d1)**2
+            end if
+         s2 = s1
+         d2 = d1*d2
+  190    continue
+      f = ap*(t2 + t3) + t1**2 + (x(1) - cp2)**2
+      return
+c
+c     Brown badly scaled function.
+c
+  200 continue
+      t1 = x(1) - c1pd6
+      t2 = x(2) - c2pdm6
+      t3 = x(1)*x(2) - two
+      f = t1**2 + t2**2 + t3**2
+      return
+c
+c     Brown and Dennis function.
+c
+  210 continue
+      f = zero
+      do 220 i = 1, 20
+         d1 = dble(i)/five
+         d2 = sin(d1)
+         t1 = x(1) + d1*x(2) - exp(d1)
+         t2 = x(3) + d2*x(4) - cos(d1)
+         t = t1**2 + t2**2
+         f = f + t**2
+  220    continue
+      return
+c
+c     Gulf research and development function.
+c
+  230 continue
+      f = zero
+      d1 = two/three
+      do 240 i = 1, 99
+         arg = dble(i)/c100
+         r = (-fifty*log(arg))**d1 + c25 - x(2)
+         t1 = abs(r)**x(3)/x(1)
+         t2 = exp(-t1)
+         t = t2 - arg
+         f = f + t**2
+  240    continue
+      return
+c
+c     Trigonometric function.
+c
+  250 continue
+      s1 = zero
+      do 260 j = 1, n
+         s1 = s1 + cos(x(j))
+  260    continue
+      f = zero
+      do 270 j = 1, n
+         t = dble(n+j) - sin(x(j)) - s1 - dble(j)*cos(x(j))
+         f = f + t**2
+  270    continue
+      return
+c
+c     Extended Rosenbrock function.
+c
+  280 continue
+      f = zero
+      do 290 j = 1, n, 2
+         t1 = one - x(j)
+         t2 = ten*(x(j+1) - x(j)**2)
+         f = f + t1**2 + t2**2
+  290    continue
+      return
+c
+c     Extended Powell function.
+c
+  300 continue
+      f = zero
+      do 310 j = 1, n, 4
+         t = x(j) + ten*x(j+1)
+         t1 = x(j+2) - x(j+3)
+         s1 = five*t1
+         t2 = x(j+1) - two*x(j+2)
+         s2 = t2**3
+         t3 = x(j) - x(j+3)
+         s3 = ten*t3**3
+         f = f + t**2 + s1*t1 + s2*t2 + s3*t3
+  310    continue
+      return
+c
+c     Beale function.
+c
+  320 continue
+      s1 = one - x(2)
+      t1 = c1p5 - x(1)*s1
+      s2 = one - x(2)**2
+      t2 = c2p25 - x(1)*s2
+      s3 = one - x(2)**3
+      t3 = c2p625 - x(1)*s3
+      f = t1**2 + t2**2 + t3**2
+      return
+c
+c     Wood function.
+c
+  330 continue
+      s1 = x(2) - x(1)**2
+      s2 = one - x(1)
+      s3 = x(2) - one
+      t1 = x(4) - x(3)**2
+      t2 = one - x(3)
+      t3 = x(4) - one
+      f = c100*s1**2 + s2**2 + c90*t1**2 + t2**2 + ten*(s3 + t3)**2
+     *    + (s3 - t3)**2/ten
+      return
+c
+c     Chebyquad function.
+c
+  340 continue
+      do 350 i = 1, n
+         fvec(i) = zero
+  350    continue
+      do 370 j = 1, n
+         t1 = one
+         t2 = two*x(j) - one
+         t = two*t2
+         do 360 i = 1, n
+            fvec(i) = fvec(i) + t2
+            th = t*t2 - t1
+            t1 = t2
+            t2 = th
+  360       continue
+  370    continue
+      f = zero
+      d1 = one/dble(n)
+      iev = -1
+      do 380 i = 1, n
+         t = d1*fvec(i)
+         if (iev .gt. 0) t = t + one/(dble(i)**2 - one)
+         f = f + t**2
+         iev = -iev
+  380    continue
+      return
+c
+c     Last card of subroutine objfcn.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/pgapackf.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/pgapackf.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/pgapackf.h	(revision 6168)
@@ -0,0 +1,983 @@
+/******************************************************************************
+*     FILE: pgapack.h: This file contains all constant and structure
+*                      definitions definitions for PGAPack as well as all
+*                      function declarations.
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+******************************************************************************/
+
+#ifndef __PGA_PACK_H_
+#define __PGA_PACK_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <time.h>
+#include <limits.h>
+#include <float.h>
+#include <string.h> 
+#include <ctype.h>
+#include <mpi.h>
+
+
+
+/*  If OPTIMIZED, remove various sanity checks, and debug output.
+ *
+ *  PGADebugEntered(a)      - Print a debug message about entering "a"
+ *  PGADebugExited(a)       - Print a debug message about exiting "a"
+ *  PGAFailIfNotSetup(a)    - Fail fatally if PGASetUp has not been called
+ *  PGAFailIfSetup(a)       - Fail fatally if PGASetUp has been called
+ *  PGACheckDataType(a, D)  - Fail fatally if the datatype is not D
+ */
+#ifndef OPTIMIZE
+#define OPTIMIZE 0
+
+
+#define PGADebugEntered(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_ENTERED, a, "Entered", PGA_VOID, NULL)
+#define PGADebugExited(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_EXIT, a, "Exited", PGA_VOID, NULL)
+#define PGAFailIfNotSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_FALSE) \
+     PGAError(ctx, "PGASetUp must be called before " Name, \
+              PGA_FATAL, PGA_VOID, NULL)
+#define PGAFailIfSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_TRUE) \
+     PGAError(ctx, Name " must be called before PGASetUp", PGA_FATAL, \
+	      PGA_VOID, NULL)
+#define PGACheckDataType(Name, DataType) \
+  if (ctx->ga.datatype != DataType) \
+     PGAError(ctx, "DataType is incorrect for " Name,PGA_FATAL,PGA_VOID,NULL)
+
+#else
+#undef OPTIMIZE
+#define OPTIMIZE 1
+#define PGADebugPrint(a,b,c,x,y,z) ;
+#define PGADebugEntered(a) ;
+#define PGADebugExited(a) ;
+#define PGAFailIfNotSetUp(Name)  ;
+#define PGAFailIfSetUp(Name)  ;
+#define PGACheckDataType(Name, DataType) ;
+#endif
+
+/*****************************************
+*           BINARY   MACROS              *
+*****************************************/
+#ifndef WL
+#error WL must be defined on the command line!
+#endif
+
+#define ONEL        ((PGABinary)1)
+#define BIT(x,y)    (y&(ONEL<<((WL-1)-(x))))    /* true if bit is 1,         */
+#define SET(x,y)    (y|=(ONEL<<((WL-1)-(x))))   /* set a bit to 1            */
+#define UNSET(x,y)  (y&=(~(ONEL<<((WL-1)-(x)))))/* set a bit to 0, clear     */
+#define TOGGLE(x,y) (y^=(ONEL<<((WL-1)-(x))))   /* complement a bits value   */
+#define INDEX(ix,bx,bit,WL) ix=bit/WL;bx=bit%WL /* map global column (bit)   */
+                                                /* to word (ix) and bit (bx) */
+
+/*****************************************
+*       ABSTRACT DATA TYPES              *
+*****************************************/
+#define PGA_DATATYPE_BINARY      1    /* Array of unsigned ints            */
+                                      /* parsed into bits    : binary.c    */
+#define PGA_DATATYPE_INTEGER     2    /* Array of ints       : integer.c   */
+#define PGA_DATATYPE_REAL        3    /* Array of doubles    : real.c      */
+#define PGA_DATATYPE_CHARACTER   4    /* Array of characters : character.c */
+#define PGA_DATATYPE_USER        5    /*  --user defined--                 */
+    
+#define PGABinary                unsigned long
+#define PGAInteger               signed long int
+#define PGAReal                  double
+#define PGACharacter             signed char
+
+#define PGA_INT                   1
+#define PGA_DOUBLE                2
+#define PGA_CHAR                  3
+#define PGA_VOID                  4
+
+    
+/*****************************************
+*              BOOLEANS                  *
+*****************************************/
+#define PGA_TRUE                   1
+#define PGA_FALSE                  0
+
+/*****************************************
+*                FLAGS                   *
+*****************************************/
+#define PGA_FATAL                 1
+#define PGA_WARNING               2
+
+/*****************************************
+*             MISC CONSTANT              *
+*****************************************/
+#define PGA_TEMP1                -1138
+#define PGA_TEMP2                -4239
+#define PGA_TEMP3                -4238
+
+#define PGA_OLDPOP               -6728
+#define PGA_NEWPOP               -8376
+
+#define PGA_UNINITIALIZED_INT    -3827
+#define PGA_UNINITIALIZED_DOUBLE -968.3827
+
+/*****************************************
+*        DEBUG LEVELS                    *
+*****************************************/
+#define PGA_DEBUG_ENTERED        12
+#define PGA_DEBUG_EXIT           13
+#define PGA_DEBUG_MALLOC         80
+#define PGA_DEBUG_PRINTVAR       82
+#define PGA_DEBUG_SEND           22
+#define PGA_DEBUG_RECV           23
+#define PGA_DEBUG_MAXPGAPACKFUNCTIONS	300
+#define PGA_DEBUG_MAXFLAGS       1000
+
+/*****************************************
+*           DIRECTION                    *
+*****************************************/
+#define PGA_MAXIMIZE            1    /* specify direction for fitness calc  */
+#define PGA_MINIMIZE            2    /* specify direction for fitness calc  */
+    
+/*****************************************
+*         STOPPING CRITERIA              *
+*****************************************/
+#define PGA_STOP_MAXITER        1    /* Stop: for maximum iterations      */
+#define PGA_STOP_NOCHANGE       2    /* Stop: no change in best string    */
+#define PGA_STOP_TOOSIMILAR     4    /* Stop: homogeneous population      */
+
+/*****************************************
+*            CROSSOVER                   *
+*****************************************/
+#define PGA_CROSSOVER_ONEPT     1    /* One point crossover                */
+#define PGA_CROSSOVER_TWOPT     2    /* Two point crossover                */
+#define PGA_CROSSOVER_UNIFORM   3    /* Uniform   crossover                */
+
+/*****************************************
+*            SELECTION                   *
+*****************************************/
+#define PGA_SELECT_PROPORTIONAL 1    /* proportional selection              */
+#define PGA_SELECT_SUS          2    /* stochastic universal selection      */
+#define PGA_SELECT_TOURNAMENT   3    /* tournament selection                */
+#define PGA_SELECT_PTOURNAMENT  4    /* probabilistic tournament selection  */
+
+/*****************************************
+*            FITNESS                     *
+*****************************************/
+#define PGA_FITNESS_RAW         1    /* use raw fitness (evaluation)        */
+#define PGA_FITNESS_NORMAL      2    /* linear normalization fitness        */
+#define PGA_FITNESS_RANKING     3    /* linear ranking fitness              */
+
+/*****************************************
+*            FITNESS (MINIMIZATION)      *
+*****************************************/
+#define PGA_FITNESSMIN_RECIPROCAL  1 /* reciprocal fitness                  */
+#define PGA_FITNESSMIN_CMAX        2 /* cmax fitness                        */
+
+/*****************************************
+*               MUTATION                 *
+*****************************************/
+#define PGA_MUTATION_CONSTANT   1    /* Real/Integer: Fixed value           */
+#define PGA_MUTATION_RANGE      2    /* Real/Integer: Uniform range         */
+#define PGA_MUTATION_UNIFORM    3    /* Real: +- Uniform random no.         */
+#define PGA_MUTATION_GAUSSIAN   4    /* Real: +- Gaussian random no.        */
+#define PGA_MUTATION_PERMUTE    5    /* Integer: Permutation (swap)         */
+    
+/*****************************************
+*        POPULATION REPLACEMENT          *
+*****************************************/
+#define PGA_POPREPL_BEST         1   /* Select best   string                */
+#define PGA_POPREPL_RANDOM_NOREP 2   /* Select random string w/o replacement*/
+#define PGA_POPREPL_RANDOM_REP   3   /* Select random string w/  replacement*/
+
+/****************************************
+ *       REPORT OPTIONS                 *
+ ****************************************/
+#define PGA_REPORT_ONLINE        1    /* Print the online analysis           */
+#define PGA_REPORT_OFFLINE       2    /* Print the offline analysis          */
+#define PGA_REPORT_HAMMING       4    /* Print the Hamming distance          */
+#define PGA_REPORT_STRING        8    /* Print the string                    */
+#define PGA_REPORT_WORST         16   /* Print the worst individual          */
+#define PGA_REPORT_AVERAGE       32   /* Print the average of the population */
+
+/*****************************************
+*            RANDOMIZER                  *
+*****************************************/
+#define PGA_RINIT_PERCENT        1  /* real percent offset                   */
+#define PGA_RINIT_RANGE          2  /* real range                            */
+#define PGA_IINIT_PERMUTE        1  /* integer permutation                   */
+#define PGA_IINIT_RANGE          2  /* integer range (nonunique)             */
+#define PGA_CINIT_LOWER          1  /* all lowercase letters                 */
+#define PGA_CINIT_UPPER          2  /* all uppercase letters                 */
+#define PGA_CINIT_MIXED          3  /* both upper and lower case letters     */
+
+/*****************************************
+*         SET USER FUNCTION              *
+*****************************************/
+#define PGA_USERFUNCTION_CREATESTRING            1
+#define PGA_USERFUNCTION_MUTATION                2
+#define PGA_USERFUNCTION_CROSSOVER               3
+#define PGA_USERFUNCTION_PRINTSTRING             4
+#define PGA_USERFUNCTION_COPYSTRING              5
+#define PGA_USERFUNCTION_DUPLICATE               6
+#define PGA_USERFUNCTION_INITSTRING              7
+#define PGA_USERFUNCTION_BUILDDATATYPE           8
+#define PGA_USERFUNCTION_STOPCOND                9
+#define PGA_USERFUNCTION_ENDOFGEN                10
+#define PGA_USERFUNCTION_RANKING                 11
+#define PGA_USERFUNCTION_FITNESS                 12
+#define PGA_USERFUNCTION_SELECT                  13
+#define PGA_USERFUNCTION_SORTPOP                 14
+
+/******* EHW Modification ************************/
+#define PGA_USERFUNCTION_SETTEMP                 15
+#define PGA_USERFUNCTION_ENDOFREPFCN             16
+#define PGA_USERFUNCTION_DESTROYUD               17
+
+#define PGA_USERFUNCTION_INITUSERCTX             18
+#define PGA_USERFUNCTION_KILLUSERCTX             19
+#define PGA_NUM_USERFUNCTIONS                    19
+/*************************************************/
+
+/*****************************************
+*           MPI SEND/RECV TAGS           *
+*****************************************/
+#define PGA_COMM_STRINGTOEVAL        1  /* MPI tag for sending string       */
+#define PGA_COMM_EVALOFSTRING        2  /* MPI tag for returning evaluation */
+#define PGA_COMM_DONEWITHEVALS       3  /* MPI tag for ending parallel eval */
+
+
+
+
+/*****************************************
+*       INDIVIDUAL STRUTURE              *
+*****************************************/
+
+typedef struct {                    /* primary population data structure   */
+  double evalfunc;                  /* evaluation function value           */
+  double fitness;                   /* fitness    function value           */
+  int    evaluptodate;              /* flag whether evalfunc is current    */
+  void   *chrom;                    /* pointer to the GA string            */
+
+/*****************  EHW Project Modifications  **********************/
+  void   *UserData;                 /* pointer to circuit response         */
+/********************************************************************/
+} PGAIndividual;
+
+
+/*****************************************
+*          GA ALGORITHM STRUCTURE        *
+*****************************************/
+typedef struct {
+    int datatype;            /* data type: binary, integer, or real       */
+    int optdir;              /* direction of optimization                 */
+    int tw;                  /* total number of words, full + partial     */
+    int fw;                  /* number of full (WL length) words          */
+    int eb;                  /* number of extra bits in last NOT full word*/
+    int PopSize;             /* Number of strings to use                  */
+    int StringLen;           /* string lengths                            */
+    int StoppingRule;        /* Termination Criteria                      */
+    int MaxIter;             /* Maximum number of iterations to run       */
+    int MaxNoChange;         /* # of iters with no change before stopping */
+    int MaxSimilarity;       /* % of pop the same before stopping         */
+    int NumReplace;          /* Number of string to replace each gen      */
+    int PopReplace;          /* Method of choosing ind.s to copy to newpop*/
+    int iter;                /* iteration (generation) counter            */
+    int ItersOfSame;         /* # iters with no change in best            */
+    int PercentSame;         /* % of pop that is homogeneous              */
+    int NoDuplicates;        /* Don't allow duplicate strings             */
+    int CrossoverType;       /* Type of crossover for genetic algorithm   */
+    int SelectType;          /* Type of selection for genetic algorithm   */
+    int SelectIndex;         /* index of Select for next two individuals  */
+    int FitnessType;         /* Type of fitness transformation used       */
+    int FitnessMinType;      /* Transformation for minimization problems  */
+    int MutateOnlyNoCross;   /* Mutate only strings not from crossover    */
+    int MutationType;        /* Type of mutation used                     */
+    int MutateIntegerValue;  /* Multiplier to mutate Integer strings with */
+    int MutateBoundedFlag;   /* Confine integer alleles to given range    */
+    double MutateRealValue;  /* Multiplier to mutate Real strings with    */
+    double MutationProb;     /* Starting mutation probability             */
+    double CrossoverProb;    /* Crossover probability                     */
+    double UniformCrossProb; /* Prob of bit select in uniform crossover   */
+    double PTournamentProb;  /* Prob of selection in Prob. Tournament     */
+    double FitnessRankMax;   /* MAX value for use in ranking              */
+    double FitnessCmaxValue; /* Cmax value used to convert minimizations  */
+    double restartAlleleProb;/* prob of changing an allele in a restart   */
+    int restart;             /* whether to use the restart operator       */
+    int restartFreq;         /* frequency with which to restart           */
+    int *selected;           /* array of indices for selection            */
+    int *sorted;             /* array of sorted individual indices        */
+    PGAIndividual *oldpop;   /* pointer to population (old)               */
+    PGAIndividual *newpop;   /* pointer to population (new)               */
+
+/********************** EHW project modifications *********************/
+    int sUD;                 /* Size of User Data array structure     */
+/**********************************************************************/
+} PGAAlgorithm;
+
+
+
+/*****************************************
+*        OPERATIONS STRUCTURES           *
+*****************************************/
+typedef struct PGAContext PGAContext;
+typedef struct {
+    void         (*CreateString)(PGAContext *, int, int, int);
+    int          (*Mutation)(PGAContext *, int, int, double);
+    void         (*Crossover)(PGAContext *, int, int, int, int, int, int);
+    void         (*PrintString)(PGAContext *, FILE *, int, int);
+    void         (*CopyString)(PGAContext *, int, int, int, int);
+    int          (*Duplicate)(PGAContext *, int, int, int, int);
+    void         (*InitString)(PGAContext *, int, int);
+    MPI_Datatype (*BuildDatatype)(PGAContext *, int, int);
+    int          (*StopCond)(PGAContext *);
+    void         (*EndOfGen)(PGAContext *);
+
+/******************* DRH Mod for MMPAT ********************************/
+    void         (*Rank)(PGAContext *, int); /* Calls a custom */
+                                                   /*ranking function*/
+    void         (*Fitness)(PGAContext *, int); /* Calls a custom fitness eval*/
+    void         (*Select) (PGAContext *, int); /* Calls a custom selection */
+/*********************************************/
+/* new added by Lu Yang */
+    void         (*SortPop) (PGAContext *, int); /* Calls a custom sort pop */
+/*********************************************/
+                                                /* function                 */
+/*********************************************************************/
+
+/********************** EHW project modifications *********************/
+    void         (*SetTemp)(PGAContext *); /* Sets the Temperature    */
+                                           /*  Parameter              */
+/**********************************************************************/
+
+/*** SNS Addition, it sets the reproductive flags *************/
+/*** This may be part of The Chromosome User Data ************/
+
+ /* Gets executed when  PGASetEvaluationUpToDateFlag  is called
+      and the flag is set to PGA_FALSE  Is called so that the user
+      data is updated whenever the Evaluation up to date flag is set to
+      false 
+   */
+    void 	 (*EndOfRepFcn)(PGAContext *,int,int);
+
+    void 	 (*DestroyUD)(PGAContext *,int,int);
+   /* CHSL: Executed before the GA is run (gen 0) */
+    void         (*InitUserCtx)(PGAContext *);
+   /* CHSL: Executed after the GA is finished (end of last gen) */
+    void         (*KillUserCtx)(PGAContext *);
+ 
+
+
+/**********************************************************************/
+
+
+
+} PGACOperations;
+
+typedef struct {
+    int          (*Mutation)(void *, void *, void *, void *);
+    void         (*Crossover)(void *, void *, void *, void *, void *, void *, void *);
+    void         (*PrintString)(void *, void *, void *, void *);
+    void         (*CopyString)(void *, void *, void *, void *, void *);
+    int          (*Duplicate)(void *, void *, void *, void *, void *);
+    void         (*InitString)(void *, void *, void *);
+    int          (*StopCond)(void *);
+    void         (*EndOfGen)(void *);
+/******************* DRH Mod for MMPAT ********************************/
+    void         (*Rank)( void *, void *); /* calls a custom  */
+                                                 /* ranking function*/
+    void         (*Fitness)( void *, void *); /* Calls a custom fitness eval*/
+    void         (*Select )( void *, void *); /* Calls a custom selection fn*/
+/*********************************************/
+/* new added by Lu Yang */
+    void         (*SortPop) (void *, void *); /* Calls a custom sort pop */
+/*********************************************************************/
+
+/********************** EHW project modifications *********************/
+    void         (*SetTemp)(void *);       /* Sets the Temperature    */
+                                           /*  Parameter              */
+/**********************************************************************/
+
+/*** SNS Addition, it sets the reproductive flags *************/
+/*** This may be part of The Chromosome User Data ************/
+    void 	 (*EndOfRepFcn)(void *,void *,void *);
+    void 	 (*DestroyUD)(void *,void *,void *);
+
+  /* CHSL: Executed before the GA is run (gen 0) */
+   void         (*InitUserCtx)(void *);
+   /* CHSL: Executed after the GA is finished (end of last gen) */
+   void         (*KillUserCtx)(void *);
+
+/**********************************************************************/
+
+} PGAFortranOperations;
+
+/*****************************************
+*          PARALLEL STRUCTURE            *
+*****************************************/
+typedef struct {
+    int      MPIAlreadyInit;   /* Flag whether MPI was previously initialized*/
+    int      NumIslands;       /* Number of islands in island model          */
+    int      NumDemes;         /* Number of demes in neighborhood model      */
+    MPI_Comm DefaultComm;      /* Default communicator for PGARun            */
+    int      MPIStubLibrary;   /* Boolean: real or stub version of MPI       */
+} PGAParallel;
+
+/*****************************************
+*          REPORT STRUCTURE              *
+*****************************************/
+typedef struct {
+     int    PrintFreq;               /* How often to print statistics reports*/
+     int    PrintOptions;
+     double Offline;
+     double Online;
+     double Average;
+     double Best;
+     time_t starttime;
+} PGAReport;
+
+
+/*****************************************
+*          SYSTEM STRUCTURE              *
+*****************************************/
+typedef struct {
+    int    UserFortran;             /* user routines in Fortran or C?        */
+    int    SetUpCalled;             /* has PGASetUp been called?             */
+    int    PGAMaxInt;               /* largest  int     of machine           */
+    int    PGAMinInt;               /* smallest int     of machine           */
+    double PGAMaxDouble;            /* largest  double  of machine           */
+    double PGAMinDouble;            /* smallest double  of machine           */
+} PGASystem;
+
+
+/*****************************************
+*          DEBUG STRUCTURE               *
+*****************************************/
+typedef struct {
+    int PGADebugFlags[PGA_DEBUG_MAXFLAGS];
+} PGADebug;
+
+/*****************************************
+*      INITIALIZATION STRUCTURE          *
+*****************************************/
+typedef struct {
+    int    RandomInit;             /* flag whether to randomize strings    */
+    double BinaryProbability;      /* probability that a Bit will be 1     */
+    int    RealType;               /* type of real      initialization     */
+    int    IntegerType;            /* type of integer   initialization     */
+    int    CharacterType;          /* type of character initialization     */
+    int    *IntegerMin;            /* minimum of range of integers         */
+    int    *IntegerMax;            /* maximum of range of integers         */
+    double *RealMin;               /* minimum of range of reals            */
+    double *RealMax;               /* maximum of range of reals            */
+    int    RandomSeed;             /* integer to seed random numbers with  */
+} PGAInitialize;
+
+/*****************************************
+*      SCRATCH DATA STRUCTURES           *
+*****************************************/
+typedef struct {
+    int    *intscratch;            /* integer-scratch space                 */
+    double *dblscratch;            /* double- scratch space                 */
+} PGAScratch;
+
+/*****************************************
+*          CONTEXT STRUCTURE             *
+*****************************************/
+struct PGAContext {
+    PGAAlgorithm           ga;
+    PGACOperations         cops;
+    PGAFortranOperations   fops;
+    PGAParallel            par;
+    PGAReport              rep;
+    PGASystem              sys;
+    PGADebug               debug;
+    PGAInitialize          init;
+    PGAScratch             scratch;
+
+    /*************************
+     *   EHW ADDITION        *
+     *************************/
+    void                   *inputex;
+
+};
+
+/*****************************************
+*          binary.c
+*****************************************/
+
+
+
+void PGASetBinaryAllele ( PGAContext *ctx, int p, int pop, int i, int val );
+int PGAGetBinaryAllele ( PGAContext *ctx, int p, int pop, int i );
+void PGASetBinaryInitProb ( PGAContext *ctx, double probability );
+double PGAGetBinaryInitProb (PGAContext *ctx);
+void PGABinaryCreateString(PGAContext *ctx, int p, int pop, int initflag);
+int PGABinaryMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGABinaryOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryTwoptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                               int c1, int c2, int pop2);
+void PGABinaryPrintString( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGABinaryCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGABinaryDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGABinaryInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGABinaryBuildDatatype(PGAContext *ctx, int p, int pop);
+int PGABinaryHammingDistance ( PGAContext *ctx, PGABinary *s1, PGABinary *s2 );
+void PGABinaryPrint( PGAContext *ctx, FILE *fp, PGABinary *chrom, int nb );
+
+/*****************************************
+*          char.c
+*****************************************/
+
+
+void PGASetCharacterAllele (PGAContext *ctx, int p, int pop, int i, char value);
+char PGAGetCharacterAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetCharacterInitType(PGAContext *ctx, int value);
+void PGACharacterCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGACharacterMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGACharacterOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGACharacterUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGACharacterCopyString (PGAContext *ctx, int p1, int pop1, int p2,
+                             int pop2);
+int PGACharacterDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGACharacterInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGACharacterBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          cmdline.c
+*****************************************/
+
+
+void PGAReadCmdLine( PGAContext *ctx, int *argc, char **argv );
+void PGAParseDebugArg(PGAContext *ctx, char *st);
+void PGAStripArgs(char **argv, int *argc, int *c, int num);
+
+/*****************************************
+*          create.c
+*****************************************/
+
+PGAContext *PGACreate ( int *argc, char **argv,
+                        int datatype, int len, int maxormin );
+void PGASetUp ( PGAContext *ctx );
+void PGASetRandomInitFlag(PGAContext *ctx, int RandomBoolean);
+int PGAGetRandomInitFlag (PGAContext *ctx);
+void PGACreatePop (PGAContext *ctx, int pop);
+void PGACreateIndividual (PGAContext *ctx, int p, int pop, int initflag);
+
+/*****************************************
+*          cross.c
+*****************************************/
+
+void PGACrossover ( PGAContext *ctx, int p1, int p2, int pop1,
+                    int c1, int c2, int pop2 );
+int PGAGetCrossoverType (PGAContext *ctx);
+double PGAGetCrossoverProb (PGAContext *ctx);
+double PGAGetUniformCrossoverProb (PGAContext *ctx);
+void PGASetCrossoverType (PGAContext *ctx, int crossover_type);
+void PGASetCrossoverProb( PGAContext *ctx, double crossover_prob);
+void PGASetUniformCrossoverProb( PGAContext *ctx, double uniform_cross_prob);
+
+/*****************************************
+*          debug.c
+*****************************************/
+
+
+void PGASortFuncNameIndex(PGAContext *ctx);
+#if OPTIMIZE==0
+void PGADebugPrint( PGAContext *ctx, int level, char *funcname,
+                   char *msg, int datatype, void *data );
+#endif
+void PGASetDebugLevel(PGAContext *ctx, int level);
+void PGAClearDebugLevel(PGAContext *ctx, int level);
+void PGASetDebugLevelByName(PGAContext *ctx, char *funcname);
+void PGAClearDebugLevelByName(PGAContext *ctx, char *funcname);
+int PGAGetDebugLevelOfName(PGAContext *ctx, char *funcname);
+int PGAGetDebugFlag(PGAContext *ctx, char *funcname);
+void PGASetDebugFlag11(PGAContext *ctx, int Flag);
+void PGASetDebugFlag20(PGAContext *ctx, int Flag);
+void PGASetDebugFlag21(PGAContext *ctx, int Flag);
+void PGASetDebugFlag30(PGAContext *ctx, int Flag);
+void PGASetDebugFlag32(PGAContext *ctx, int Flag);
+void PGASetDebugFlag34(PGAContext *ctx, int Flag);
+void PGASetDebugFlag36(PGAContext *ctx, int Flag);
+void PGASetDebugFlag40(PGAContext *ctx, int Flag);
+void PGASetDebugFlag42(PGAContext *ctx, int Flag);
+void PGASetDebugFlag44(PGAContext *ctx, int Flag);
+void PGASetDebugFlag46(PGAContext *ctx, int Flag);
+void PGASetDebugFlag48(PGAContext *ctx, int Flag);
+void PGASetDebugFlag50(PGAContext *ctx, int Flag);
+void PGASetDebugFlag52(PGAContext *ctx, int Flag);
+void PGASetDebugFlag54(PGAContext *ctx, int Flag);
+void PGASetDebugFlag56(PGAContext *ctx, int Flag);
+void PGASetDebugFlag58(PGAContext *ctx, int Flag);
+void PGASetDebugFlag60(PGAContext *ctx, int Flag);
+void PGASetDebugFlag62(PGAContext *ctx, int Flag);
+void PGASetDebugFlag64(PGAContext *ctx, int Flag);
+void PGASetDebugFlag66(PGAContext *ctx, int Flag);
+void PGAPrintDebugOptions(PGAContext *ctx);
+
+/*****************************************
+*          duplcate.c
+*****************************************/
+
+
+int PGADuplicate(PGAContext *ctx, int p, int pop1, int pop2, int n);
+void PGAChange( PGAContext *ctx, int p, int pop );
+void PGASetNoDuplicatesFlag( PGAContext *ctx, int no_dup);
+int PGAGetNoDuplicatesFlag (PGAContext *ctx);
+
+/*****************************************
+*          evaluate.c
+*****************************************/
+
+
+void PGASetEvaluation ( PGAContext *ctx, int p, int pop, double val );
+double PGAGetEvaluation ( PGAContext *ctx, int p, int pop );
+void PGASetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop,
+                                   int status );
+int PGAGetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop );
+double PGAGetRealFromBinary(PGAContext *ctx, int p, int pop, int start,
+                            int end, double lower, double upper);
+double PGAGetRealFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                  int end, double lower, double upper);
+void PGAEncodeRealAsBinary(PGAContext *ctx, int p, int pop, int start,
+                               int end, double low, double high, double val);
+void PGAEncodeRealAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                              int end, double low, double high, double val);
+int PGAGetIntegerFromBinary(PGAContext *ctx, int p, int pop, int start,
+                                 int end);
+int PGAGetIntegerFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                   int end);
+void PGAEncodeIntegerAsBinary(PGAContext *ctx, int p, int pop, int start,
+                              int end, int val);
+void PGAEncodeIntegerAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                int end, int val);
+double PGAMapIntegerToReal (PGAContext *ctx, int v, int a, int b, double l,
+                            double u);
+int PGAMapRealToInteger(PGAContext *ctx, double r, double l, double u, int a,
+                        int b);
+
+/*****************************************
+*          fitness.c
+*****************************************/
+
+
+void PGAFitness ( PGAContext *ctx, int popindex );
+int PGARank( PGAContext *ctx, int p, int *order, int n );
+double PGAGetFitness ( PGAContext *ctx, int p, int pop );
+int PGAGetFitnessType (PGAContext *ctx);
+int PGAGetFitnessMinType (PGAContext *ctx);
+double PGAGetMaxFitnessRank (PGAContext *ctx);
+void PGASetFitnessType( PGAContext *ctx, int fitness_type);
+void PGASetFitnessMinType( PGAContext *ctx, int fitness_type);
+void PGASetMaxFitnessRank( PGAContext *ctx, double fitness_rank_max);
+void PGAFitnessLinearNormal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessLinearRank ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinReciprocal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinCmax ( PGAContext *ctx, PGAIndividual *pop );
+void PGASetFitnessCmaxValue( PGAContext *ctx, double val);
+double PGAGetFitnessCmaxValue (PGAContext *ctx);
+
+/*****************************************
+*          hamming.c
+*****************************************/
+
+double PGAHammingDistance( PGAContext *ctx, int popindex);
+
+/*****************************************
+*          heap.c
+*****************************************/
+
+
+void PGADblHeapSort ( PGAContext *ctx, double *a, int *idx, int n );
+void PGAIntHeapSort ( PGAContext *ctx, int *a, int *idx, int n );
+
+/*****************************************
+*          integer.c
+*****************************************/
+
+
+
+void PGASetIntegerAllele (PGAContext *ctx, int p, int pop, int i, int value);
+int PGAGetIntegerAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetIntegerInitPermute ( PGAContext *ctx, int min, int max);
+void PGASetIntegerInitRange (PGAContext *ctx, int *min, int *max);
+int PGAGetIntegerInitType (PGAContext *ctx);
+int PGAGetMinIntegerInitValue (PGAContext *ctx, int i);
+int PGAGetMaxIntegerInitValue (PGAContext *ctx, int i);
+void PGAIntegerCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGAIntegerMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGAIntegerOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGAIntegerPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGAIntegerCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGAIntegerDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGAIntegerInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGAIntegerBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          mpi_stub.c
+*****************************************/
+
+
+/*****************************************
+*          mutation.c
+*****************************************/
+
+
+
+int PGAMutate(PGAContext *ctx, int p, int pop);
+void PGASetMutationType( PGAContext *ctx, int mutation_type);
+int PGAGetMutationType (PGAContext *ctx);
+void PGASetMutationRealValue( PGAContext *ctx, double val);
+double PGAGetMutationRealValue (PGAContext *ctx);
+void PGASetMutationIntegerValue( PGAContext *ctx, int val);
+int PGAGetMutationIntegerValue (PGAContext *ctx);
+void PGASetMutationBoundedFlag(PGAContext *ctx, int val);
+int PGAGetMutationBoundedFlag(PGAContext *ctx);
+void PGASetMutationProb(PGAContext *ctx, double mutation_prob);
+double PGAGetMutationProb (PGAContext *ctx);
+
+/*****************************************
+*          parallel.c
+*****************************************/
+
+
+  
+void PGARunGM(PGAContext *ctx, double (*f)(PGAContext *, int, int),
+	      MPI_Comm comm);
+void PGAEvaluateSeq(PGAContext *ctx, int pop,
+		    double (*f)(PGAContext *, int, int));
+void PGAEvaluateCoop(PGAContext *ctx, int pop,
+		     double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluateMS(PGAContext *ctx, int pop,
+		   double (*f)(PGAContext *c, int p, int pop), MPI_Comm comm);
+void PGAEvaluateSlave(PGAContext *ctx, int pop,
+		      double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluate(PGAContext *ctx, int pop,
+		 double (*f)(PGAContext *, int, int), MPI_Comm comm);
+MPI_Datatype PGABuildDatatype(PGAContext *ctx, int p, int pop);
+void PGASendIndividual(PGAContext *ctx, int p, int pop, int dest, int tag,
+                       MPI_Comm comm);
+void PGAReceiveIndividual(PGAContext *ctx, int p, int pop, int source, int tag,
+                          MPI_Comm comm, MPI_Status *status);
+void PGASendReceiveIndividual(PGAContext *ctx, int send_p, int send_pop,
+                              int dest, int send_tag, int recv_p, int recv_pop,
+                              int source, int recv_tag, MPI_Comm comm,
+                              MPI_Status *status);
+void PGARunIM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+void PGARunNM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+int PGAGetRank (PGAContext *ctx, MPI_Comm comm);
+int PGAGetNumProcs (PGAContext *ctx, MPI_Comm comm);
+void PGASetNumIslands( PGAContext *ctx, int n);
+int PGAGetNumIslands (PGAContext *ctx);
+void PGASetNumDemes( PGAContext *ctx, int numdemes);
+int PGAGetNumDemes (PGAContext *ctx);
+void PGASetCommunicator( PGAContext *ctx, MPI_Comm comm);
+MPI_Comm PGAGetCommunicator( PGAContext *ctx);
+
+/*****************************************
+*          pga.c
+*****************************************/
+
+
+void PGARun(PGAContext *ctx, double (*evaluate)(PGAContext *c, int p, int pop));
+void PGARunMutationAndCrossover (PGAContext *ctx, int oldpop, int newpop);
+void PGARunMutationOrCrossover ( PGAContext *ctx, int oldpop, int newpop );
+void PGAUpdateGeneration(PGAContext *ctx, MPI_Comm comm);
+int PGAGetDataType (PGAContext *ctx);
+int PGAGetOptDirFlag (PGAContext *ctx);
+int PGAGetStringLength (PGAContext *ctx);
+int PGAGetVariableStringLength (PGAContext *ctx, int p, int pop);
+int PGAGetGAIterValue (PGAContext *ctx);
+void PGASetMutationOrCrossoverFlag( PGAContext *ctx, int flag);
+void PGASetMutationAndCrossoverFlag( PGAContext *ctx, int flag);
+int PGAGetMutationOrCrossoverFlag (PGAContext *ctx);
+int PGAGetMutationAndCrossoverFlag (PGAContext *ctx);
+
+/*****************************************
+*          pop.c
+*****************************************/
+
+
+void PGASortPop ( PGAContext *ctx, int pop );
+int PGAGetPopSize (PGAContext *ctx);
+int PGAGetNumReplaceValue (PGAContext *ctx);
+int PGAGetPopReplaceType (PGAContext *ctx);     
+int PGAGetSortedPopIndex ( PGAContext *ctx, int n );
+void PGASetPopSize (PGAContext *ctx, int popsize);
+void PGASetNumReplaceValue( PGAContext *ctx, int pop_replace);
+void PGASetPopReplaceType( PGAContext *ctx, int pop_replace);
+
+/*****************************************
+*          random.c
+*****************************************/
+
+
+int PGARandomFlip ( PGAContext *ctx, double p );
+int PGARandomInterval( PGAContext *ctx, int start, int end);
+double PGARandom01( PGAContext *ctx, int newseed );
+double PGARandomUniform( PGAContext *ctx, double start, double end);
+double PGARandomGaussian( PGAContext *ctx, double mean, double sigma);
+int PGAGetRandomSeed(PGAContext *ctx);
+void PGASetRandomSeed(PGAContext *ctx, int seed);
+
+/*****************************************
+*          real.c
+*****************************************/
+
+
+void PGASetRealAllele (PGAContext *ctx, int p, int pop, int i, double value);
+double PGAGetRealAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetRealInitPercent ( PGAContext *ctx, double *median, double *percent);
+void PGASetRealInitRange (PGAContext *ctx, double *min, double *max);
+double PGAGetMinRealInitValue (PGAContext *ctx, int i);
+double PGAGetMaxRealInitValue (PGAContext *ctx, int i);
+int PGAGetRealInitType (PGAContext *ctx);
+void PGARealCreateString (PGAContext *ctx, int p, int pop, int initflag);
+int PGARealMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGARealOneptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealUniformCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                             int c1, int c2, int pop2);
+void PGARealPrintString (PGAContext *ctx, FILE *fp, int p, int pop);
+void PGARealCopyString ( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGARealDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGARealInitString ( PGAContext *ctx, int p, int pop);
+MPI_Datatype PGARealBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          report.c
+*****************************************/
+
+
+void PGAPrintReport(PGAContext *ctx, FILE *fp, int pop);
+void PGASetPrintOptions (PGAContext *ctx, int option);
+void PGASetPrintFrequencyValue( PGAContext *ctx, int print_freq);
+int PGAGetPrintFrequencyValue (PGAContext *ctx);
+void PGAPrintPopulation ( PGAContext *ctx, FILE *fp, int pop );
+void PGAPrintIndividual ( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGAPrintString ( PGAContext *ctx, FILE *file, int p, int pop );
+void PGAPrintContextVariable ( PGAContext *ctx, FILE *fp );
+
+/*****************************************
+*          restart.c
+*****************************************/
+
+void PGARestart(PGAContext *ctx, int source_pop, int dest_pop);
+void PGASetRestartFlag(PGAContext *ctx, int val);
+int PGAGetRestartFlag(PGAContext *ctx);
+void PGASetRestartFrequencyValue(PGAContext *ctx, int numiter);
+int PGAGetRestartFrequencyValue(PGAContext *ctx);
+void PGASetRestartAlleleChangeProb(PGAContext *ctx, double prob);
+double PGAGetRestartAlleleChangeProb(PGAContext *ctx);
+
+/*****************************************
+*          select.c
+*****************************************/
+
+void PGASelect( PGAContext *ctx, int popix );
+int PGASelectNextIndex ( PGAContext *ctx );
+void PGASetSelectType( PGAContext *ctx, int select_type);
+int PGAGetSelectType (PGAContext *ctx);
+void PGASetPTournamentProb(PGAContext *ctx, double ptournament_prob);
+double PGAGetPTournamentProb(PGAContext *ctx);
+int PGASelectProportional(PGAContext *ctx, PGAIndividual *pop);
+void PGASelectSUS( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectTournament( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectPTournament( PGAContext *ctx, PGAIndividual *pop );
+
+/*****************************************
+*          stop.c
+*****************************************/
+
+int PGADone(PGAContext *ctx, MPI_Comm comm);
+int PGACheckStoppingConditions( PGAContext *ctx);
+void PGASetStoppingRuleType (PGAContext *ctx, int stoprule);
+int PGAGetStoppingRuleType (PGAContext *ctx);
+void PGASetMaxGAIterValue(PGAContext *ctx, int maxiter);
+int PGAGetMaxGAIterValue (PGAContext *ctx);
+void PGASetMaxNoChangeValue(PGAContext *ctx, int max_no_change);
+void PGASetMaxSimilarityValue(PGAContext *ctx, int max_similarity);
+
+/*****************************************
+*          system.c
+*****************************************/
+
+
+void PGAError( PGAContext *ctx, char *msg,
+               int level, int datatype, void *data );
+void PGADestroy (PGAContext *ctx);
+void PGADestroyUD (PGAContext *ctx,int,int);
+int PGAGetMaxMachineIntValue (PGAContext *ctx);
+int PGAGetMinMachineIntValue (PGAContext *ctx);
+double PGAGetMaxMachineDoubleValue (PGAContext *ctx);
+double PGAGetMinMachineDoubleValue (PGAContext *ctx);
+void PGAUsage( PGAContext *ctx );
+void PGAPrintVersionNumber( PGAContext *ctx );
+
+/*****************************************
+*          user.c
+*****************************************/
+
+
+void PGASetUserFunction(PGAContext *ctx, int constant, void *f);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function returns the size of the user data vector in all    */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+int PGAGetSizeUD(PGAContext *ctx);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function sets the size of the user data vector in all       */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void PGASetSizeUD(PGAContext *ctx,int s);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function gets the user data vector in all                   */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void *PGAGetUD(PGAContext *ctx,int s,int pop);
+
+
+/*****************************************
+*          utility.c
+*****************************************/
+
+
+double PGAMean ( PGAContext *ctx, double *a, int n);
+double PGAStddev ( PGAContext *ctx, double *a, int n, double mean);
+int PGARound(PGAContext *ctx, double x);
+void PGACopyIndividual( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGACheckSum(PGAContext *ctx, int p, int pop);
+int PGAGetWorstIndex(PGAContext *ctx, int pop);
+int PGAGetBestIndex(PGAContext *ctx, int pop);
+PGAIndividual *PGAGetIndividual ( PGAContext *ctx, int p, int pop);
+void PGAUpdateAverage(PGAContext *ctx, int pop);
+void PGAUpdateOnline(PGAContext *ctx, int pop);
+void PGAUpdateOffline(PGAContext *ctx, int pop);
+int PGAComputeSimilarity(PGAContext *ctx, PGAIndividual *pop);
+
+
+#endif
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/ssqfcn77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/ssqfcn77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/ssqfcn77.f	(revision 6168)
@@ -0,0 +1,334 @@
+      subroutine ssqfcn(m,n,x,fvec,nprob)
+      integer m,n,nprob
+      double precision x(n),fvec(m)
+c     **********
+c
+c     subroutine ssqfcn
+c
+c     This subroutine defines the functions of eighteen nonlinear
+c     least squares problems. The allowable values of (m,n) for
+c     functions 1,2 and 3 are variable but with m .ge. n.
+c     For functions 4,5,6,7,8,9 and 10 the values of (m,n) are
+c     (2,2),(3,3),(4,4),(2,2),(15,3),(11,4) and (16,3), respectively.
+c     Function 11 (Watson) has m = 31 with n usually 6 or 9.
+c     However, any n, n = 2,...,31, is permitted.
+c     Functions 12,13 and 14 have n = 3,2 and 4, respectively, but
+c     allow any m .ge. n, with the usual choices being 10,10 and 20.
+c     Function 15 (Chebyquad) allows m and n variable with m .ge. n.
+c     Function 16 (Brown) allows n variable with m = n.
+c     For functions 17 and 18, the values of (m,n) are
+c     (33,5) and (65,11), respectively.
+c
+c     The subroutine statement is
+c
+c       subroutine ssqfcn(m,n,x,fvec,nprob)
+c
+c     where
+c
+c       m and n are positive integer input variables. n must not
+c         exceed m.
+c
+c       x is an input array of length n.
+c
+c       fvec is an output array of length m which contains the nprob
+c         function evaluated at x.
+c
+c       nprob is a positive integer input variable which defines the
+c         number of the problem. nprob must not exceed 18.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... atan,cos,dble,exp,sign,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,iev,j
+      double precision c13,c14,c29,c45,div,dx,eight,five,one,prod,sum,
+     *                 s1,s2,temp,ten,ti,tmp1,tmp2,tmp3,tmp4,tpi,two,
+     *                 zero,zp25,zp5
+      double precision v(11),y1(15),y2(11),y3(16),y4(33),y5(65)
+      data zero,zp25,zp5,one,two,five,eight,ten,c13,c14,c29,c45
+     *     /0.0d0,2.5d-1,5.0d-1,1.0d0,2.0d0,5.0d0,8.0d0,1.0d1,1.3d1,
+     *      1.4d1,2.9d1,4.5d1/
+      data v(1),v(2),v(3),v(4),v(5),v(6),v(7),v(8),v(9),v(10),v(11)
+     *     /4.0d0,2.0d0,1.0d0,5.0d-1,2.5d-1,1.67d-1,1.25d-1,1.0d-1,
+     *      8.33d-2,7.14d-2,6.25d-2/
+      data y1(1),y1(2),y1(3),y1(4),y1(5),y1(6),y1(7),y1(8),y1(9),
+     *     y1(10),y1(11),y1(12),y1(13),y1(14),y1(15)
+     *     /1.4d-1,1.8d-1,2.2d-1,2.5d-1,2.9d-1,3.2d-1,3.5d-1,3.9d-1,
+     *      3.7d-1,5.8d-1,7.3d-1,9.6d-1,1.34d0,2.1d0,4.39d0/
+      data y2(1),y2(2),y2(3),y2(4),y2(5),y2(6),y2(7),y2(8),y2(9),
+     *     y2(10),y2(11)
+     *     /1.957d-1,1.947d-1,1.735d-1,1.6d-1,8.44d-2,6.27d-2,4.56d-2,
+     *      3.42d-2,3.23d-2,2.35d-2,2.46d-2/
+      data y3(1),y3(2),y3(3),y3(4),y3(5),y3(6),y3(7),y3(8),y3(9),
+     *     y3(10),y3(11),y3(12),y3(13),y3(14),y3(15),y3(16)
+     *     /3.478d4,2.861d4,2.365d4,1.963d4,1.637d4,1.372d4,1.154d4,
+     *      9.744d3,8.261d3,7.03d3,6.005d3,5.147d3,4.427d3,3.82d3,
+     *      3.307d3,2.872d3/
+      data y4(1),y4(2),y4(3),y4(4),y4(5),y4(6),y4(7),y4(8),y4(9),
+     *     y4(10),y4(11),y4(12),y4(13),y4(14),y4(15),y4(16),y4(17),
+     *     y4(18),y4(19),y4(20),y4(21),y4(22),y4(23),y4(24),y4(25),
+     *     y4(26),y4(27),y4(28),y4(29),y4(30),y4(31),y4(32),y4(33)
+     *     /8.44d-1,9.08d-1,9.32d-1,9.36d-1,9.25d-1,9.08d-1,8.81d-1,
+     *      8.5d-1,8.18d-1,7.84d-1,7.51d-1,7.18d-1,6.85d-1,6.58d-1,
+     *      6.28d-1,6.03d-1,5.8d-1,5.58d-1,5.38d-1,5.22d-1,5.06d-1,
+     *      4.9d-1,4.78d-1,4.67d-1,4.57d-1,4.48d-1,4.38d-1,4.31d-1,
+     *      4.24d-1,4.2d-1,4.14d-1,4.11d-1,4.06d-1/
+      data y5(1),y5(2),y5(3),y5(4),y5(5),y5(6),y5(7),y5(8),y5(9),
+     *     y5(10),y5(11),y5(12),y5(13),y5(14),y5(15),y5(16),y5(17),
+     *     y5(18),y5(19),y5(20),y5(21),y5(22),y5(23),y5(24),y5(25),
+     *     y5(26),y5(27),y5(28),y5(29),y5(30),y5(31),y5(32),y5(33),
+     *     y5(34),y5(35),y5(36),y5(37),y5(38),y5(39),y5(40),y5(41),
+     *     y5(42),y5(43),y5(44),y5(45),y5(46),y5(47),y5(48),y5(49),
+     *     y5(50),y5(51),y5(52),y5(53),y5(54),y5(55),y5(56),y5(57),
+     *     y5(58),y5(59),y5(60),y5(61),y5(62),y5(63),y5(64),y5(65)
+     *     /1.366d0,1.191d0,1.112d0,1.013d0,9.91d-1,8.85d-1,8.31d-1,
+     *      8.47d-1,7.86d-1,7.25d-1,7.46d-1,6.79d-1,6.08d-1,6.55d-1,
+     *      6.16d-1,6.06d-1,6.02d-1,6.26d-1,6.51d-1,7.24d-1,6.49d-1,
+     *      6.49d-1,6.94d-1,6.44d-1,6.24d-1,6.61d-1,6.12d-1,5.58d-1,
+     *      5.33d-1,4.95d-1,5.0d-1,4.23d-1,3.95d-1,3.75d-1,3.72d-1,
+     *      3.91d-1,3.96d-1,4.05d-1,4.28d-1,4.29d-1,5.23d-1,5.62d-1,
+     *      6.07d-1,6.53d-1,6.72d-1,7.08d-1,6.33d-1,6.68d-1,6.45d-1,
+     *      6.32d-1,5.91d-1,5.59d-1,5.97d-1,6.25d-1,7.39d-1,7.1d-1,
+     *      7.29d-1,7.2d-1,6.36d-1,5.81d-1,4.28d-1,2.92d-1,1.62d-1,
+     *      9.8d-2,5.4d-2/
+c
+c     Function routine selector.
+c
+      go to (10,40,70,110,120,130,140,150,170,190,210,250,270,290,310,
+     *       360,390,410), nprob
+c
+c     Linear function - full rank.
+c
+   10 continue
+      sum = zero
+      do 20 j = 1, n
+         sum = sum + x(j)
+   20    continue
+      temp = two*sum/dble(m) + one
+      do 30 i = 1, m
+         fvec(i) = -temp
+         if (i .le. n) fvec(i) = fvec(i) + x(i)
+   30    continue
+      return
+c
+c     Linear function - rank 1.
+c
+   40 continue
+      sum = zero
+      do 50 j = 1, n
+         sum = sum + dble(j)*x(j)
+   50    continue
+      do 60 i = 1, m
+         fvec(i) = dble(i)*sum - one
+   60    continue
+      return
+c
+c     Linear function - rank 1 with zero columns and rows.
+c
+   70 continue
+      sum = zero
+      do 80 j = 2, n-1
+         sum = sum + dble(j)*x(j)
+   80    continue
+      do 100 i = 1, m-1
+         fvec(i) = dble(i-1)*sum - one
+  100    continue
+      fvec(m) = -one
+      return
+c
+c     Rosenbrock function.
+c
+  110 continue
+      fvec(1) = ten*(x(2) - x(1)**2)
+      fvec(2) = one - x(1)
+      return
+c
+c     Helical valley function.
+c
+  120 continue
+      tpi = eight*atan(one)
+      tmp1 = sign(zp25,x(2))
+      if (x(1) .gt. zero) tmp1 = atan(x(2)/x(1))/tpi
+      if (x(1) .lt. zero) tmp1 = atan(x(2)/x(1))/tpi + zp5
+      tmp2 = sqrt(x(1)**2+x(2)**2)
+      fvec(1) = ten*(x(3) - ten*tmp1)
+      fvec(2) = ten*(tmp2 - one)
+      fvec(3) = x(3)
+      return
+c
+c     Powell singular function.
+c
+  130 continue
+      fvec(1) = x(1) + ten*x(2)
+      fvec(2) = sqrt(five)*(x(3) - x(4))
+      fvec(3) = (x(2) - two*x(3))**2
+      fvec(4) = sqrt(ten)*(x(1) - x(4))**2
+      return
+c
+c     Freudenstein and Roth function.
+c
+  140 continue
+      fvec(1) = -c13 + x(1) + ((five - x(2))*x(2) - two)*x(2)
+      fvec(2) = -c29 + x(1) + ((one + x(2))*x(2) - c14)*x(2)
+      return
+c
+c     Bard function.
+c
+  150 continue
+      do 160 i = 1, 15
+         tmp1 = dble(i)
+         tmp2 = dble(16-i)
+         tmp3 = tmp1
+         if (i .gt. 8) tmp3 = tmp2
+         fvec(i) = y1(i) - (x(1) + tmp1/(x(2)*tmp2 + x(3)*tmp3))
+  160    continue
+      return
+c
+c     Kowalik and Osborne function.
+c
+  170 continue
+      do 180 i = 1, 11
+         tmp1 = v(i)*(v(i) + x(2))
+         tmp2 = v(i)*(v(i) + x(3)) + x(4)
+         fvec(i) = y2(i) - x(1)*tmp1/tmp2
+  180    continue
+      return
+c
+c     Meyer function.
+c
+  190 continue
+      do 200 i = 1, 16
+         temp = five*dble(i) + c45 + x(3)
+         tmp1 = x(2)/temp
+         tmp2 = exp(tmp1)
+         fvec(i) = x(1)*tmp2 - y3(i)
+  200    continue
+      return
+c
+c     Watson function.
+c
+  210 continue
+      do 240 i = 1, 29
+         div = dble(i)/c29
+         s1 = zero
+         dx = one
+         do 220 j = 2, n
+            s1 = s1 + dble(j-1)*dx*x(j)
+            dx = div*dx
+  220       continue
+         s2 = zero
+         dx = one
+         do 230 j = 1, n
+            s2 = s2 + dx*x(j)
+            dx = div*dx
+  230       continue
+         fvec(i) = s1 - s2**2 - one
+  240    continue
+      fvec(30) = x(1)
+      fvec(31) = x(2) - x(1)**2 - one
+      return
+c
+c     Box 3-dimensional function.
+c
+  250 continue
+      do 260 i = 1, m
+         temp = dble(i)
+         tmp1 = temp/ten
+         fvec(i) = exp(-tmp1*x(1)) - exp(-tmp1*x(2))
+     *             + (exp(-temp) - exp(-tmp1))*x(3)
+  260    continue
+      return
+c
+c     Jennrich and Sampson function.
+c
+  270 continue
+      do 280 i = 1, m
+         temp = dble(i)
+         fvec(i) = two + two*temp - exp(temp*x(1)) - exp(temp*x(2))
+  280    continue
+      return
+c
+c     Brown and Dennis function.
+c
+  290 continue
+      do 300 i = 1, m
+         temp = dble(i)/five
+         tmp1 = x(1) + temp*x(2) - exp(temp)
+         tmp2 = x(3) + sin(temp)*x(4) - cos(temp)
+         fvec(i) = tmp1**2 + tmp2**2
+  300    continue
+      return
+c
+c     Chebyquad function.
+c
+  310 continue
+      do 320 i = 1, m
+         fvec(i) = zero
+  320    continue
+      do 340 j = 1, n
+         tmp1 = one
+         tmp2 = two*x(j) - one
+         temp = two*tmp2
+         do 330 i = 1, m
+            fvec(i) = fvec(i) + tmp2
+            ti = temp*tmp2 - tmp1
+            tmp1 = tmp2
+            tmp2 = ti
+  330       continue
+  340    continue
+      dx = one/dble(n)
+      iev = -1
+      do 350 i = 1, m
+         fvec(i) = dx*fvec(i)
+         if (iev .gt. 0) fvec(i) = fvec(i) + one/(dble(i)**2 - one)
+         iev = -iev
+  350    continue
+      return
+c
+c     Brown almost-linear function.
+c
+  360 continue
+      sum = -dble(n+1)
+      prod = one
+      do 370 j = 1, n
+         sum = sum + x(j)
+         prod = x(j)*prod
+  370    continue
+      do 380 i = 1, n-1
+         fvec(i) = x(i) + sum
+  380    continue
+      fvec(n) = prod - one
+      return
+c
+c     Osborne 1 function.
+c
+  390 continue
+      do 400 i = 1, 33
+         temp = ten*dble(i-1)
+         tmp1 = exp(-x(4)*temp)
+         tmp2 = exp(-x(5)*temp)
+         fvec(i) = y4(i) - (x(1) + x(2)*tmp1 + x(3)*tmp2)
+  400    continue
+      return
+c
+c     Osborne 2 function.
+c
+  410 continue
+      do 420 i = 1, 65
+         temp = dble(i-1)/ten
+         tmp1 = exp(-x(5)*temp)
+         tmp2 = exp(-x(6)*(temp-x(9))**2)
+         tmp3 = exp(-x(7)*(temp-x(10))**2)
+         tmp4 = exp(-x(8)*(temp-x(11))**2)
+         fvec(i) = y5(i)
+     *             - (x(1)*tmp1 + x(2)*tmp2 + x(3)*tmp3 + x(4)*tmp4)
+  420    continue
+      return
+c
+c     Last card of subroutine ssqfcn.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/ssqjac77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/ssqjac77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/ssqjac77.f	(revision 6168)
@@ -0,0 +1,340 @@
+      subroutine ssqjac(m,n,x,fjac,ldfjac,nprob)
+      integer m,n,ldfjac,nprob
+      double precision x(n),fjac(ldfjac,n)
+c     **********
+c
+c     subroutine ssqjac
+c
+c     This subroutine defines the Jacobian matrices of eighteen
+c     nonlinear least squares problems. The problem dimensions are
+c     as described in the prologue comments of ssqfcn.
+c
+c     The subroutine statement is
+c
+c       subroutine ssqjac(m,n,x,fjac,ldfjac,nprob)
+c
+c     where
+c
+c       m and n are positive integer input variables. n must not
+c         exceed m.
+c
+c       x is an input array of length n.
+c
+c       fjac is an m by n output array which contains the Jacobian
+c         matrix of the nprob function evaluated at x.
+c
+c       ldfjac is a positive integer input variable not less than m
+c         which specifies the leading dimension of the array fjac.
+c
+c       nprob is a positive integer variable which defines the
+c         number of the problem. nprob must not exceed 18.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... atan,cos,dble,exp,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,j,k
+      double precision c14,c20,c29,c45,c100,div,dx,eight,five,four,
+     *                 one,prod,s2,temp,ten,three,ti,tmp1,tmp2,tmp3,
+     *                 tmp4,tpi,two,zero
+      double precision v(11)
+      data zero,one,two,three,four,five,eight,ten,c14,c20,c29,c45,c100
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,4.0d0,5.0d0,8.0d0,1.0d1,1.4d1,
+     *      2.0d1,2.9d1,4.5d1,1.0d2/
+      data v(1),v(2),v(3),v(4),v(5),v(6),v(7),v(8),v(9),v(10),v(11)
+     *     /4.0d0,2.0d0,1.0d0,5.0d-1,2.5d-1,1.67d-1,1.25d-1,1.0d-1,
+     *      8.33d-2,7.14d-2,6.25d-2/
+c
+c     Jacobian routine selector.
+c
+      go to (10,40,70,130,140,150,180,190,210,230,250,310,330,350,370,
+     *       400,460,480), nprob
+c
+c     Linear function - full rank.
+c
+   10 continue
+      temp = two/dble(m)
+      do 30 j = 1, n
+         do 20 i = 1, m
+            fjac(i,j) = -temp
+   20       continue
+         fjac(j,j) = fjac(j,j) + one
+   30    continue
+      return
+c
+c     Linear function - rank 1.
+c
+   40 continue
+      do 60 j = 1, n
+         do 50 i = 1, m
+            fjac(i,j) = dble(i)*dble(j)
+   50       continue
+   60    continue
+      return
+c
+c     Linear function - rank 1 with zero columns and rows.
+c
+   70 continue
+      do 90 j = 1, n
+         do 80 i = 1, m
+            fjac(i,j) = zero
+   80       continue
+   90    continue
+      do 110 j = 2, n-1
+         do 100 i = 2, m-1
+            fjac(i,j) = dble(i-1)*dble(j)
+  100       continue
+  110    continue
+      return
+c
+c     Rosenbrock function.
+c
+  130 continue
+      fjac(1,1) = -c20*x(1)
+      fjac(1,2) = ten
+      fjac(2,1) = -one
+      fjac(2,2) = zero
+      return
+c
+c     Helical valley function.
+c
+  140 continue
+      tpi = eight*atan(one)
+      temp = x(1)**2 + x(2)**2
+      tmp1 = tpi*temp
+      tmp2 = sqrt(temp)
+      fjac(1,1) = c100*x(2)/tmp1
+      fjac(1,2) = -c100*x(1)/tmp1
+      fjac(1,3) = ten
+      fjac(2,1) = ten*x(1)/tmp2
+      fjac(2,2) = ten*x(2)/tmp2
+      fjac(2,3) = zero
+      fjac(3,1) = zero
+      fjac(3,2) = zero
+      fjac(3,3) = one
+      return
+c
+c     Powell singular function.
+c
+  150 continue
+      do 170 j = 1, 4
+         do 160 i = 1, 4
+            fjac(i,j) = zero
+  160       continue
+  170    continue
+      fjac(1,1) = one
+      fjac(1,2) = ten
+      fjac(2,3) = sqrt(five)
+      fjac(2,4) = -fjac(2,3)
+      fjac(3,2) = two*(x(2) - two*x(3))
+      fjac(3,3) = -two*fjac(3,2)
+      fjac(4,1) = two*sqrt(ten)*(x(1) - x(4))
+      fjac(4,4) = -fjac(4,1)
+      return
+c
+c     Freudenstein and Roth function.
+c
+  180 continue
+      fjac(1,1) = one
+      fjac(1,2) = x(2)*(ten - three*x(2)) - two
+      fjac(2,1) = one
+      fjac(2,2) = x(2)*(two + three*x(2)) - c14
+      return
+c
+c     Bard function.
+c
+  190 continue
+      do 200 i = 1, 15
+         tmp1 = dble(i)
+         tmp2 = dble(16-i)
+         tmp3 = tmp1
+         if (i .gt. 8) tmp3 = tmp2
+         tmp4 = (x(2)*tmp2 + x(3)*tmp3)**2
+         fjac(i,1) = -one
+         fjac(i,2) = tmp1*tmp2/tmp4
+         fjac(i,3) = tmp1*tmp3/tmp4
+  200    continue
+      return
+c
+c     Kowalik and Osborne function.
+c
+  210 continue
+      do 220 i = 1, 11
+         tmp1 = v(i)*(v(i) + x(2))
+         tmp2 = v(i)*(v(i) + x(3)) + x(4)
+         fjac(i,1) = -tmp1/tmp2
+         fjac(i,2) = -v(i)*x(1)/tmp2
+         fjac(i,3) = fjac(i,1)*fjac(i,2)
+         fjac(i,4) = fjac(i,3)/v(i)
+  220    continue
+      return
+c
+c     Meyer function.
+c
+  230 continue
+      do 240 i = 1, 16
+         temp = five*dble(i) + c45 + x(3)
+         tmp1 = x(2)/temp
+         tmp2 = exp(tmp1)
+         fjac(i,1) = tmp2
+         fjac(i,2) = x(1)*tmp2/temp
+         fjac(i,3) = -tmp1*fjac(i,2)
+  240    continue
+      return
+c
+c     Watson function.
+c
+  250 continue
+      do 280 i = 1, 29
+         div = dble(i)/c29
+         s2 = zero
+         dx = one
+         do 260 j = 1, n
+            s2 = s2 + dx*x(j)
+            dx = div*dx
+  260       continue
+         temp = two*div*s2
+         dx = one/div
+         do 270 j = 1, n
+            fjac(i,j) = dx*(dble(j-1) - temp)
+            dx = div*dx
+  270       continue
+  280    continue
+      do 300 j = 1, n
+         do 290 i = 30, 31
+            fjac(i,j) = zero
+  290       continue
+  300    continue
+      fjac(30,1) = one
+      fjac(31,1) = -two*x(1)
+      fjac(31,2) = one
+      return
+c
+c     Box 3-dimensional function.
+c
+  310 continue
+      do 320 i = 1, m
+         temp = dble(i)
+         tmp1 = temp/ten
+         fjac(i,1) = -tmp1*exp(-tmp1*x(1))
+         fjac(i,2) = tmp1*exp(-tmp1*x(2))
+         fjac(i,3) = exp(-temp) - exp(-tmp1)
+  320    continue
+      return
+c
+c     Jennrich and Sampson function.
+c
+  330 continue
+      do 340 i = 1, m
+         temp = dble(i)
+         fjac(i,1) = -temp*exp(temp*x(1))
+         fjac(i,2) = -temp*exp(temp*x(2))
+  340    continue
+      return
+c
+c     Brown and Dennis function.
+c
+  350 continue
+      do 360 i = 1, m
+         temp = dble(i)/five
+         ti = sin(temp)
+         tmp1 = x(1) + temp*x(2) - exp(temp)
+         tmp2 = x(3) + ti*x(4) - cos(temp)
+         fjac(i,1) = two*tmp1
+         fjac(i,2) = temp*fjac(i,1)
+         fjac(i,3) = two*tmp2
+         fjac(i,4) = ti*fjac(i,3)
+  360    continue
+      return
+c
+c     Chebyquad function.
+c
+  370 continue
+      dx = one/dble(n)
+      do 390 j = 1, n
+         tmp1 = one
+         tmp2 = two*x(j) - one
+         temp = two*tmp2
+         tmp3 = zero
+         tmp4 = two
+         do 380 i = 1, m
+            fjac(i,j) = dx*tmp4
+            ti = four*tmp2 + temp*tmp4 - tmp3
+            tmp3 = tmp4
+            tmp4 = ti
+            ti = temp*tmp2 - tmp1
+            tmp1 = tmp2
+            tmp2 = ti
+  380       continue
+  390    continue
+      return
+c
+c     Brown almost-linear function.
+c
+  400 continue
+      prod = one
+      do 420 j = 1, n
+         prod = x(j)*prod
+         do 410 i = 1, n
+            fjac(i,j) = one
+  410       continue
+         fjac(j,j) = two
+  420    continue
+      do 450 j = 1, n
+         temp = x(j)
+         if (temp .eq. zero) then
+            temp = one
+            prod = one
+            do 430 k = 1, n
+               if (k .ne. j) prod = x(k)*prod
+  430          continue
+            end if
+         fjac(n,j) = prod/temp
+  450    continue
+      return
+c
+c     Osborne 1 function.
+c
+  460 continue
+      do 470 i = 1, 33
+         temp = ten*dble(i-1)
+         tmp1 = exp(-x(4)*temp)
+         tmp2 = exp(-x(5)*temp)
+         fjac(i,1) = -one
+         fjac(i,2) = -tmp1
+         fjac(i,3) = -tmp2
+         fjac(i,4) = temp*x(2)*tmp1
+         fjac(i,5) = temp*x(3)*tmp2
+  470    continue
+      return
+c
+c     Osborne 2 function.
+c
+  480 continue
+      do 490 i = 1, 65
+         temp = dble(i-1)/ten
+         tmp1 = exp(-x(5)*temp)
+         tmp2 = exp(-x(6)*(temp-x(9))**2)
+         tmp3 = exp(-x(7)*(temp-x(10))**2)
+         tmp4 = exp(-x(8)*(temp-x(11))**2)
+         fjac(i,1) = -tmp1
+         fjac(i,2) = -tmp2
+         fjac(i,3) = -tmp3
+         fjac(i,4) = -tmp4
+         fjac(i,5) = temp*x(1)*tmp1
+         fjac(i,6) = x(2)*(temp - x(9))**2*tmp2
+         fjac(i,7) = x(3)*(temp - x(10))**2*tmp3
+         fjac(i,8) = x(4)*(temp - x(11))**2*tmp4
+         fjac(i,9) = -two*x(2)*x(6)*(temp - x(9))*tmp2
+         fjac(i,10) = -two*x(3)*x(7)*(temp - x(10))*tmp3
+         fjac(i,11) = -two*x(4)*x(8)*(temp - x(11))*tmp4
+  490    continue
+      return
+c
+c     Last card of subroutine ssqjac.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/testprog.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/testprog.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/testprog.f	(revision 6168)
@@ -0,0 +1,110 @@
+      program mgh_testprobs
+
+      include 'pgapackf.h'
+      include 'mpif.h'
+
+      external evaluate
+
+      double precision evaluate
+      integer ctx
+      integer     len, nprob, maxiter, ierror, myid
+
+      common nprob
+
+      call MPI_INIT(ierror)
+      call MPI_COMM_RANK(MPI_COMM_WORLD, myid, ierror)
+
+      if (myid .EQ. 0) then
+         print *, 'The following is a list of the test functions this pr
+     &ogram supports.'
+         print *, 'The number in parentheses after the name of the funct
+     &ion is the'
+         print *, 'dimension of the problem.  If the dimension is not a 
+     &constant (i.e.,'
+         print *, 'problems # 6-9, 13 - 15, and 18), the limitations on 
+     &the dimension'
+         print *, 'follow in parentheses after the function name.'
+
+         print *
+         print *, '1.  Helical Valley Function (3)'
+         print *, '2.  Biggs EXP6 function (6)'
+         print *, '3.  Gaussian Function (3)'
+         print *, '4.  Powell Badly Scaled Function (2)'
+         print *, '5.  Box Three-Dimensional Function (3)'
+         print *, '6.  Variably-dimentioned Function (variable)'
+         print *, '7.  Watson Function (2 - 31)'
+         print *, '8.  Penalty function I (variable)'
+         print *, '9.  Penalty function II (variable)'
+         print *, '10.  Brown Badly Scaled Function (2)'
+         print *, '11.  Brown and Dennis Function (4)'
+         print *, '12.  Gulf Research And Development Function (3)'
+         print *, '13.  Trigonometric Function (variable)'
+         print *, '14.  Extended Rosenbrock Function (even)'
+         print *, '15.  Extended Powell Singular Function (multiple of 4
+     &)'
+         print *, '16.  Beale Function (2)'
+         print *, '17.  Wood Function (4)'
+         print *, '18.  Chebyquad Function (variable less than 51)'
+         print *
+         print *, 'You will need to enter both the problem number and th
+     &e dimension of the'
+         print *, 'problem.  For problems with a constant dimension, use
+     & the number in'
+         print *, 'parenthesis.  For problems with variable dimension, m
+     &ake sure the'
+         print *, 'dimension that you choose falls within the stated lim
+     &itations AND is'
+         print *, 'less than or equal to 100.  For example, to select th
+     &e Watson function'
+         print *, 'with dimension twelve, enter the following: 7 12'
+         print *
+         print *, 'Please enter the problem number and dimension now.'
+         read *, nprob, len
+         if (nprob .LT. 1 .OR. nprob .GT. 18) then
+            print *, 'Invalid problem number.'
+            stop
+         endif
+         if (len .GT. 100) then
+            print *, 'Dimension exceeds 100'
+            stop
+         endif
+         print *, 'How many iterations? '
+         read *, maxiter
+      endif
+      call MPI_BCAST(nprob,   1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+      call MPI_BCAST(len,     1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+      call MPI_BCAST(maxiter, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+      ctx = PGACreate(PGA_DATATYPE_REAL, len, PGA_MINIMIZE)
+      if (len .eq. 2) then
+         call PGASetCrossoverType(ctx, PGA_CROSSOVER_UNIFORM)
+      endif
+      call PGASetMaxGAIterValue(ctx, maxiter)
+      call PGASetPopSize(ctx, 10000)
+      call PGASetRandomSeed(ctx, 1)
+      call PGASetUp(ctx)
+      call PGARun(ctx, evaluate)
+      call PGADestroy(ctx)
+      call MPI_FINALIZE(ierror)
+
+      stop
+      end
+
+
+      double precision function evaluate(ctx, p, pop)
+      include 'pgapackf.h'
+
+      double precision x(100), f
+      integer ctx
+      integer    pop, p, i, stringlen, nprob
+
+      common nprob
+
+      stringlen = PGAGetStringLength(ctx)
+      do i = 1, stringlen
+         x(i) = PGAGetRealAllele(ctx, p, pop, i)
+      enddo
+      call objfcn(stringlen, x, f, nprob)
+      evaluate = f
+
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/vecfcn77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/vecfcn77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/vecfcn77.f	(revision 6168)
@@ -0,0 +1,265 @@
+      subroutine vecfcn(n,x,fvec,nprob)
+      integer n,nprob
+      double precision x(n),fvec(n)
+c     **********
+c
+c     subroutine vecfcn
+c
+c     This subroutine defines fourteen test functions. The first
+c     five test functions are of dimensions 2,4,2,4,3, respectively,
+c     while the remaining test functions are of variable dimension
+c     n for any n greater than or equal to 1 (problem 6 is an
+c     exception to this, since it does not allow n = 1).
+c
+c     The subroutine statement is
+c
+c       subroutine vecfcn(n,x,fvec,nprob)
+c
+c     where
+c
+c       n is a positive integer input variable.
+c
+c       x is an input array of length n.
+c
+c       fvec is an output array of length n which contains the nprob
+c         function vector evaluated at x.
+c
+c       nprob is a positive integer input variable which defines the
+c         number of the problem. nprob must not exceed 14.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... atan,cos,dble,exp,max,min,sign,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,iev,j,k,ml,mu
+      double precision c1,c2,c3,c4,c5,c6,c7,c8,c9,eight,five,h,one,
+     *                 prod,sum,sum1,sum2,temp,temp1,temp2,ten,three,
+     *                 ti,tj,tk,tpi,two,zero
+      data zero,one,two,three,five,eight,ten
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,5.0d0,8.0d0,1.0d1/
+      data c1,c2,c3,c4,c5,c6,c7,c8,c9
+     *     /1.0d4,1.0001d0,2.0d2,2.02d1,1.98d1,1.8d2,2.5d-1,5.0d-1,
+     *      2.9d1/
+c
+c     Problem selector.
+c
+      go to (10,20,30,40,50,60,120,170,200,220,270,300,330,350), nprob
+c
+c     Rosenbrock function.
+c
+   10 continue
+      fvec(1) = one - x(1)
+      fvec(2) = ten*(x(2) - x(1)**2)
+      return
+c
+c     Powell singular function.
+c
+   20 continue
+      fvec(1) = x(1) + ten*x(2)
+      fvec(2) = sqrt(five)*(x(3) - x(4))
+      fvec(3) = (x(2) - two*x(3))**2
+      fvec(4) = sqrt(ten)*(x(1) - x(4))**2
+      return
+c
+c     Powell badly scaled function.
+c
+   30 continue
+      fvec(1) = c1*x(1)*x(2) - one
+      fvec(2) = exp(-x(1)) + exp(-x(2)) - c2
+      return
+c
+c     Wood function.
+c
+   40 continue
+      temp1 = x(2) - x(1)**2
+      temp2 = x(4) - x(3)**2
+      fvec(1) = -c3*x(1)*temp1 - (one - x(1))
+      fvec(2) = c3*temp1 + c4*(x(2) - one) + c5*(x(4) - one)
+      fvec(3) = -c6*x(3)*temp2 - (one - x(3))
+      fvec(4) = c6*temp2 + c4*(x(4) - one) + c5*(x(2) - one)
+      return
+c
+c     Helical valley function.
+c
+   50 continue
+      tpi = eight*atan(one)
+      temp1 = sign(c7,x(2))
+      if (x(1) .gt. zero) temp1 = atan(x(2)/x(1))/tpi
+      if (x(1) .lt. zero) temp1 = atan(x(2)/x(1))/tpi + c8
+      temp2 = sqrt(x(1)**2+x(2)**2)
+      fvec(1) = ten*(x(3) - ten*temp1)
+      fvec(2) = ten*(temp2 - one)
+      fvec(3) = x(3)
+      return
+c
+c     Watson function.
+c
+   60 continue
+      do 70 k = 1, n
+         fvec(k) = zero
+   70    continue
+      do 110 i = 1, 29
+         ti = dble(i)/c9
+         sum1 = zero
+         temp = one
+         do 80 j = 2, n
+            sum1 = sum1 + dble(j-1)*temp*x(j)
+            temp = ti*temp
+   80       continue
+         sum2 = zero
+         temp = one
+         do 90 j = 1, n
+            sum2 = sum2 + temp*x(j)
+            temp = ti*temp
+   90       continue
+         temp1 = sum1 - sum2**2 - one
+         temp2 = two*ti*sum2
+         temp = one/ti
+         do 100 k = 1, n
+            fvec(k) = fvec(k) + temp*(dble(k-1) - temp2)*temp1
+            temp = ti*temp
+  100       continue
+  110    continue
+      temp = x(2) - x(1)**2 - one
+      fvec(1) = fvec(1) + x(1)*(one - two*temp)
+      fvec(2) = fvec(2) + temp
+      return
+c
+c     Chebyquad function.
+c
+  120 continue
+      do 130 k = 1, n
+         fvec(k) = zero
+  130    continue
+      do 150 j = 1, n
+         temp1 = one
+         temp2 = two*x(j) - one
+         temp = two*temp2
+         do 140 i = 1, n
+            fvec(i) = fvec(i) + temp2
+            ti = temp*temp2 - temp1
+            temp1 = temp2
+            temp2 = ti
+  140       continue
+  150    continue
+      tk = one/dble(n)
+      iev = -1
+      do 160 k = 1, n
+         fvec(k) = tk*fvec(k)
+         if (iev .gt. 0) fvec(k) = fvec(k) + one/(dble(k)**2 - one)
+         iev = -iev
+  160    continue
+      return
+c
+c     Brown almost-linear function.
+c
+  170 continue
+      sum = -dble(n+1)
+      prod = one
+      do 180 j = 1, n
+         sum = sum + x(j)
+         prod = x(j)*prod
+  180    continue
+      do 190 k = 1, n-1
+         fvec(k) = x(k) + sum
+  190    continue
+      fvec(n) = prod - one
+      return
+c
+c     Discrete boundary value function.
+c
+  200 continue
+      h = one/dble(n+1)
+      do 210 k = 1, n
+         temp = (x(k) + dble(k)*h + one)**3
+         temp1 = zero
+         if (k .ne. 1) temp1 = x(k-1)
+         temp2 = zero
+         if (k .ne. n) temp2 = x(k+1)
+         fvec(k) = two*x(k) - temp1 - temp2 + temp*h**2/two
+  210    continue
+      return
+c
+c     Discrete integral equation function.
+c
+  220 continue
+      h = one/dble(n+1)
+      do 260 k = 1, n
+         tk = dble(k)*h
+         sum1 = zero
+         do 230 j = 1, k
+            tj = dble(j)*h
+            temp = (x(j) + tj + one)**3
+            sum1 = sum1 + tj*temp
+  230       continue
+         sum2 = zero
+         do 240 j = k+1, n
+            tj = dble(j)*h
+            temp = (x(j) + tj + one)**3
+            sum2 = sum2 + (one - tj)*temp
+  240       continue
+         fvec(k) = x(k) + h*((one - tk)*sum1 + tk*sum2)/two
+  260    continue
+      return
+c
+c     Trigonometric function.
+c
+  270 continue
+      sum = zero
+      do 280 j = 1, n
+         fvec(j) = cos(x(j))
+         sum = sum + fvec(j)
+  280    continue
+      do 290 k = 1, n
+         fvec(k) = dble(n+k) - sin(x(k)) - sum - dble(k)*fvec(k)
+  290    continue
+      return
+c
+c     Variably dimensioned function.
+c
+  300 continue
+      sum = zero
+      do 310 j = 1, n
+         sum = sum + dble(j)*(x(j) - one)
+  310    continue
+      temp = sum*(one + two*sum**2)
+      do 320 k = 1, n
+         fvec(k) = x(k) - one + dble(k)*temp
+  320    continue
+      return
+c
+c     Broyden tridiagonal function.
+c
+  330 continue
+      do 340 k = 1, n
+         temp = (three - two*x(k))*x(k)
+         temp1 = zero
+         if (k .ne. 1) temp1 = x(k-1)
+         temp2 = zero
+         if (k .ne. n) temp2 = x(k+1)
+         fvec(k) = temp - temp1 - two*temp2 + one
+  340    continue
+      return
+c
+c     Broyden banded function.
+c
+  350 continue
+      ml = 5
+      mu = 1
+      do 370 k = 1, n
+         temp = zero
+         do 360 j = max(1,k-ml),min(k+mu,n)
+            if (j .ne. k) temp = temp + x(j)*(one + x(j))
+  360       continue
+         fvec(k) = x(k)*(two + five*x(k)**2) + one - temp
+  370    continue
+  380 continue
+      return
+c
+c     Last card of subroutine vecfcn.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/vecjac77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/vecjac77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/mgh/vecjac77.f	(revision 6168)
@@ -0,0 +1,315 @@
+      subroutine vecjac(n,x,fjac,ldfjac,nprob)
+      integer n,ldfjac,nprob
+      double precision x(n),fjac(ldfjac,n)
+c     **********
+c
+c     subroutine vecjac
+c
+c     This subroutine defines the Jacobian matrices of fourteen
+c     test functions. The problem dimensions are as described
+c     in the prologue comments of vecfcn.
+c
+c     The subroutine statement is
+c
+c       subroutine vecjac(n,x,fjac,ldfjac,nprob)
+c
+c     where
+c
+c       n is a positive integer variable.
+c
+c       x is an array of length n.
+c
+c       fjac is an output n by n array which contains the
+c         Jacobian matrix of the nprob function evaluated at x.
+c
+c       ldfjac is a positive integer variable not less than n
+c         which specifies the leading dimension of the array fjac.
+c
+c       nprob is a positive integer variable which defines the
+c         number of the problem. nprob must not exceed 14.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... atan,cos,dble,exp,max,min,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,j,k,ml,mu
+      double precision c1,c3,c4,c5,c6,c9,eight,fiftn,five,four,h,
+     *                 hundrd,one,prod,six,sum,sum1,sum2,temp,temp1,
+     *                 temp2,temp3,temp4,ten,three,ti,tj,tk,tpi,
+     *                 twenty,two,zero
+      data zero,one,two,three,four,five,six,eight,ten,fiftn,twenty,
+     *     hundrd
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,4.0d0,5.0d0,6.0d0,8.0d0,1.0d1,
+     *      1.5d1,2.0d1,1.0d2/
+      data c1,c3,c4,c5,c6,c9 /1.0d4,2.0d2,2.02d1,1.98d1,1.8d2,2.9d1/
+c
+c     Jacobian routine selector.
+c
+      go to (10,20,50,60,90,100,200,230,290,320,350,380,420,450),
+     *      nprob
+c
+c     Rosenbrock function.
+c
+   10 continue
+      fjac(1,1) = -one
+      fjac(1,2) = zero
+      fjac(2,1) = -twenty*x(1)
+      fjac(2,2) = ten
+      return
+c
+c     Powell singular function.
+c
+   20 continue
+      do 40 k = 1, 4
+         do 30 j = 1, 4
+            fjac(k,j) = zero
+   30       continue
+   40    continue
+      fjac(1,1) = one
+      fjac(1,2) = ten
+      fjac(2,3) = sqrt(five)
+      fjac(2,4) = -fjac(2,3)
+      fjac(3,2) = two*(x(2) - two*x(3))
+      fjac(3,3) = -two*fjac(3,2)
+      fjac(4,1) = two*sqrt(ten)*(x(1) - x(4))
+      fjac(4,4) = -fjac(4,1)
+      return
+c
+c     Powell badly scaled function.
+c
+   50 continue
+      fjac(1,1) = c1*x(2)
+      fjac(1,2) = c1*x(1)
+      fjac(2,1) = -exp(-x(1))
+      fjac(2,2) = -exp(-x(2))
+      return
+c
+c     Wood function.
+c
+   60 continue
+      do 80 k = 1, 4
+         do 70 j = 1, 4
+            fjac(k,j) = zero
+   70       continue
+   80    continue
+      temp1 = x(2) - three*x(1)**2
+      temp2 = x(4) - three*x(3)**2
+      fjac(1,1) = -c3*temp1 + one
+      fjac(1,2) = -c3*x(1)
+      fjac(2,1) = -two*c3*x(1)
+      fjac(2,2) = c3 + c4
+      fjac(2,4) = c5
+      fjac(3,3) = -c6*temp2 + one
+      fjac(3,4) = -c6*x(3)
+      fjac(4,2) = c5
+      fjac(4,3) = -two*c6*x(3)
+      fjac(4,4) = c6 + c4
+      return
+c
+c     Helical valley function.
+c
+   90 continue
+      tpi = eight*atan(one)
+      temp = x(1)**2 + x(2)**2
+      temp1 = tpi*temp
+      temp2 = sqrt(temp)
+      fjac(1,1) = hundrd*x(2)/temp1
+      fjac(1,2) = -hundrd*x(1)/temp1
+      fjac(1,3) = ten
+      fjac(2,1) = ten*x(1)/temp2
+      fjac(2,2) = ten*x(2)/temp2
+      fjac(2,3) = zero
+      fjac(3,1) = zero
+      fjac(3,2) = zero
+      fjac(3,3) = one
+      return
+c
+c     Watson function.
+c
+  100 continue
+      do 120 k = 1, n
+         do 110 j = k, n
+            fjac(k,j) = zero
+  110       continue
+  120    continue
+      do 170 i = 1, 29
+         ti = dble(i)/c9
+         sum1 = zero
+         temp = one
+         do 130 j = 2, n
+            sum1 = sum1 + dble(j-1)*temp*x(j)
+            temp = ti*temp
+  130       continue
+         sum2 = zero
+         temp = one
+         do 140 j = 1, n
+            sum2 = sum2 + temp*x(j)
+            temp = ti*temp
+  140       continue
+         temp1 = two*(sum1 - sum2**2 - one)
+         temp2 = two*sum2
+         temp = ti**2
+         tk = one
+         do 160 k = 1, n
+            tj = tk
+            do 150 j = k, n
+               fjac(k,j) = fjac(k,j)
+     *                     + tj
+     *                       *((dble(k-1)/ti - temp2)
+     *                         *(dble(j-1)/ti - temp2) - temp1)
+               tj = ti*tj
+  150          continue
+            tk = temp*tk
+  160       continue
+  170    continue
+      fjac(1,1) = fjac(1,1) + six*x(1)**2 - two*x(2) + three
+      fjac(1,2) = fjac(1,2) - two*x(1)
+      fjac(2,2) = fjac(2,2) + one
+      do 190 k = 1, n
+         do 180 j = k+1, n
+            fjac(j,k) = fjac(k,j)
+  180       continue
+  190    continue
+      return
+c
+c     Chebyquad function.
+c
+  200 continue
+      tk = one/dble(n)
+      do 220 j = 1, n
+         temp1 = one
+         temp2 = two*x(j) - one
+         temp = two*temp2
+         temp3 = zero
+         temp4 = two
+         do 210 k = 1, n
+            fjac(k,j) = tk*temp4
+            ti = four*temp2 + temp*temp4 - temp3
+            temp3 = temp4
+            temp4 = ti
+            ti = temp*temp2 - temp1
+            temp1 = temp2
+            temp2 = ti
+  210       continue
+  220    continue
+      return
+c
+c     Brown almost-linear function.
+c
+  230 continue
+      prod = one
+      do 250 j = 1, n
+         prod = x(j)*prod
+         do 240 k = 1, n
+            fjac(k,j) = one
+  240       continue
+         fjac(j,j) = two
+  250    continue
+      do 280 j = 1, n
+         temp = x(j)
+         if (temp .eq. zero) then
+            temp = one
+            prod = one
+            do 260 k = 1, n
+               if (k .ne. j) prod = x(k)*prod
+  260          continue
+            end if
+         fjac(n,j) = prod/temp
+  280    continue
+      return
+c
+c     Discrete boundary value function.
+c
+  290 continue
+      h = one/dble(n+1)
+      do 310 k = 1, n
+         temp = three*(x(k) + dble(k)*h + one)**2
+         do 300 j = 1, n
+            fjac(k,j) = zero
+  300       continue
+         fjac(k,k) = two + temp*h**2/two
+         if (k .ne. 1) fjac(k,k-1) = -one
+         if (k .ne. n) fjac(k,k+1) = -one
+  310    continue
+      return
+c
+c     Discrete integral equation function.
+c
+  320 continue
+      h = one/dble(n+1)
+      do 340 k = 1, n
+         tk = dble(k)*h
+         do 330 j = 1, n
+            tj = dble(j)*h
+            temp = three*(x(j) + tj + one)**2
+            fjac(k,j) = h*min(tj*(one-tk),tk*(one-tj))*temp/two
+  330       continue
+         fjac(k,k) = fjac(k,k) + one
+  340    continue
+      return
+c
+c     Trigonometric function.
+c
+  350 continue
+      do 370 j = 1, n
+         temp = sin(x(j))
+         do 360 k = 1, n
+            fjac(k,j) = temp
+  360       continue
+         fjac(j,j) = dble(j+1)*temp - cos(x(j))
+  370    continue
+      return
+c
+c     Variably dimensioned function.
+c
+  380 continue
+      sum = zero
+      do 390 j = 1, n
+         sum = sum + dble(j)*(x(j) - one)
+  390    continue
+      temp = one + six*sum**2
+      do 410 k = 1, n
+         do 400 j = k, n
+            fjac(k,j) = dble(k*j)*temp
+            fjac(j,k) = fjac(k,j)
+  400       continue
+         fjac(k,k) = fjac(k,k) + one
+  410    continue
+      return
+c
+c     Broyden tridiagonal function.
+c
+  420 continue
+      do 440 k = 1, n
+         do 430 j = 1, n
+            fjac(k,j) = zero
+  430       continue
+         fjac(k,k) = three - four*x(k)
+         if (k .ne. 1) fjac(k,k-1) = -one
+         if (k .ne. n) fjac(k,k+1) = -two
+  440    continue
+      return
+c
+c     Broyden banded function.
+c
+  450 continue
+      ml = 5
+      mu = 1
+      do 480 k = 1, n
+         do 460 j = 1, n
+            fjac(k,j) = zero
+  460       continue
+         do 470 j = max(1,k-ml), min(k+mu,n)
+            if (j .ne. k) fjac(k,j) = -(one + two*x(j))
+  470       continue
+         fjac(k,k) = two + fiftn*x(k)**2
+  480    continue
+      return
+c
+c     Last card of subroutine vecjac.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/README	(revision 6168)
@@ -0,0 +1,5 @@
+This directory contains stubs for all the PGAPack user defined routines.
+Simply cut out the ones you want and paste in the appropriate logic.
+
+uf_native.[cf] -- User functions usable on both native and custom datatypes.
+uf_new.c       -- User functions usable only when creating a custom datatype. 
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/uf_native.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/uf_native.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/uf_native.c	(revision 6168)
@@ -0,0 +1,116 @@
+/*  Stub functions for using PGAPack with a native datatype, but user defined
+ *  operators.
+ *
+ *  Simple example (with no actual code) that shows how one would go about
+ *  setting PGAPack up to evolve "strings" that use a native datatype, but
+ *  need to use custom evolutionary operators.
+ */
+#include <pgapack.h>
+
+void         MyInitString(PGAContext *ctx, int p, int pop);
+void         MyCrossover(PGAContext *ctx, int p1, int p2, int p_pop, int c1,
+	                 int c2, int c_pop);
+int          MyMutation(PGAContext *ctx, int p, int pop, double mr);
+int          MyDuplicateString(PGAContext *ctx, int p1, int pop1, int p2,
+	                       int pop2);
+void         MyPrintString(PGAContext *ctx, FILE *fp, int p, int pop);
+int          MyDone(PGAContext *ctx);
+void         MyEndOfGen(PGAContext *ctx);
+
+double       MyEvaluate(PGAContext *ctx, int p, int pop);
+ 
+
+int main(int argc, char **argv) {
+  PGAContext *ctx;
+
+  ctx = PGACreate(&argc, argv, PGA_DATATYPE, 1, PGA_MAXIMIZE);
+
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,    MyMutation);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER,   MyCrossover);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING, MyPrintString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_DUPLICATE,   MyDuplicateString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,  MyInitString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_DONE,        MyDone);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,    MyEndOfGen);
+  
+  PGASetUp(ctx);
+  PGARun(ctx, MyEvaluate);
+  PGADestroy(ctx);
+  return(0);
+}
+
+
+/*  Perform mutation on a "string".  It is important to keep count of the 
+ *  number of mutations performed and to return that value.
+ */
+int MyMutation(PGAContext *ctx, int p, int pop, double mr) {
+  int         count;
+
+  /*  Insert code to mutate Data here.  Remember to count the number
+   *  of mutations that happen, and return that value!
+   */
+
+  return(count);
+}
+
+
+/*  Perform crossover from two parents to two children.  */
+void MyCrossover(PGAContext *ctx, int p1, int p2, int p_pop, int c1, int c2,
+		 int c_pop) {
+    
+    /*  Perform crossover from p1 and p2 into c1 and c2 here.  */
+}
+
+
+/*  Print a "string" to the file fp.  */
+void MyPrintString(PGAContext *ctx, FILE *fp, int p, int pop) {
+
+    /*  Print the string referenced by p and pop to the file fp.  */
+}
+
+
+/*  Determine if two strings are the same.  If so, return non-zero, otherwise
+ *  return zero.  If contiguous data, usually a call to memcmp.
+ */
+int MyDuplicateString(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+
+    /*  Compare strings p1 and p2 to see if they are different.  If they
+     *  are, return non-zero; else, return 0.
+     */
+}
+
+
+/*  Randomly initialize a string.  */
+void MyInitString(PGAContext *ctx, int p, int pop) {
+
+  /*  Insert code to randomly initialize p in popultion pop here.  */
+}
+
+
+/*  Check if a GA has found an acceptable solution.  */
+int MyDone(PGAContext *ctx) {
+    int done = PGA_FALSE;
+
+    /*  Check for "doneness".  */
+
+    return(done);
+}
+
+
+/*  After each generation, this funciton will get called.  */
+void MyEndOfGen(PGAContext *ctx) {
+
+    /*  Do something useful; display the population on a graphics output,
+     *  let the user adjust the population, etc.
+     */
+}
+
+
+/*  The evaluation function.    */
+double MyEvaluate(PGAContext *ctx, int p, int pop) {
+    
+    /*  Evaluate the string here, and return a double representing
+     *  the quality of the solution.
+     */
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/uf_native.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/uf_native.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/uf_native.f	(revision 6168)
@@ -0,0 +1,160 @@
+c     Stub functions for using PGAPack with a natve datatype, but user
+c     defined operators.
+c
+c     In Fortran, we cannot allocate memory, nor can we define a C type
+c     structure, thus, userdefined data types are rather silly.  So,
+c     PGA_USERFUNCTION_CREATESTRING, and PGA_USERFUNCTION_BUILDDATATYPE are
+c     not allowed.
+
+      include 'pgapackf.h'
+
+      external MyInitString
+      external MyCrossover
+      external MyMutation
+      external MyDuplicateString
+      external MyPrintString
+      external MyDone
+      external MyEndOfGen
+      external MyEvaluate
+
+      integer          MyMutation
+      integer          MyDuplicateString
+      integer          MyDone
+      double precision MyEvaluate
+
+      integer ctx
+
+
+      ctx = PGACreate(PGA_DATATYPE_INTEGER, 10, PGA_MAXIMIZE)
+
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,    MyMutation)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER,   MyCrossover)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING, MyPrintString)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_DUPLICATE,   MyDuplicateString)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,  MyInitString)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_DONE,        MyDone)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,    MyEndOfGen)
+  
+      PGASetUp(ctx)
+      PGARun(ctx, MyEvaluate)
+      PGADestroy(ctx)
+
+      stop
+      end
+
+
+
+
+
+c     Perform mutation on a "string".  It is important to keep count of
+c     the number of mutations performed and to return that value.
+c
+      integer function MyMutation(ctx, p, pop, mr)
+      include 'pgapackf.h'
+      integer ctx, p, pop, count, length
+      double precision mr
+
+      length = PGAGetStringLength(ctx)
+
+      do i=1, length
+         if (PGARandomFlip(ctx, mr) .eq. PGA_TRUE) then
+c
+c           Insert code to mutate an allele here.  Remember to count
+c           the number of mutations that happen, and return that value!
+c
+         endif
+      enddo
+
+      MyMutation = count
+      return
+      end
+
+
+c     Perform crossover from two parents to two children.  
+      subroutine MyCrossover(ctx, p1, p2, p_pop, c1, c2, c_pop)
+      include 'pgapackf.h'
+      integer ctx, p1, p2, p_pop, c1, c2, c_pop
+
+c     Perform crossover from P1 and P2 into C1 and C2 here. 
+
+      return
+      end
+      
+
+
+
+c     Print a "string".  The second argument is a C file pointer, 
+c     but we cannot do anything with it,
+      subroutine MyPrintString(ctx, fp, p, pop)
+      include 'pgapackf.h'
+      integer ctx, fp, p, pop
+     
+c     Print the string
+
+      return
+      end
+
+
+
+c     Determine if two strings are the same.  If so, return non-zero,
+c     otherwise return zero.
+      integer function MyDuplicateString(ctx, p1, pop1, p2, pop2)
+      include 'pgapackf.h'
+      integer ctx, p1, pop1, p2, pop2, equal
+
+c     Compare the strings
+
+      MyDuplicateString = equal
+      return
+      end
+
+
+
+c     Randomly initialize a string.
+      subroutine MyInitString(ctx, p, pop)
+      include 'pgapackf.h'
+      integer ctx, p, pop
+
+c     Insert code to randomly initialize Data here. 
+
+      return
+      end
+
+
+c     Check if a GA has found an acceptable solution.
+      integer function MyDone(ctx) 
+      include 'pgapackf.h'
+      integer ctx, done
+
+      done = PGA_FALSE
+
+c     Check for "doneness".
+
+      MyDone = done
+      return
+      end
+
+
+c     After each generation, this funciton will get called.
+      subroutine MyEndOfGen(ctx)
+      include 'pgapackf.h'
+      integer ctx
+
+c     Do something useful; display the population on a graphics output,
+c     let the user adjust the population, etc.
+
+      return
+      end
+
+
+
+c     The evaluation function.
+      double precision function MyEvaluate(ctx, p, pop)
+      include 'pgapackf.h'
+      integer ctx, p, pop
+
+c     Evaluate the string
+
+      MyEvaluate = evaluation
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/uf_new.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/uf_new.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/examples/templates/uf_new.c	(revision 6168)
@@ -0,0 +1,172 @@
+/*  Stub functions for using PGAPAck with a user datatype.
+ *
+ *  Simple example (with no actual code) that shows how one would go about
+ *  setting PGAPack up to evolve "strings" that are a single structure,
+ *  using the necessary user defined functions.
+ */
+#include <pgapack.h>
+
+void         MyCreateString(PGAContext *ctx, int p, int pop, int InitFlag);
+MPI_Datatype MyBuildDatatype(PGAContext *ctx, int p, int pop);
+int          MyMutation(PGAContext *ctx, int p, int pop, double mr);
+void         MyCrossover(PGAContext *ctx, int p1, int p2, int p_pop, int c1,
+	                 int c2, int c_pop);
+void         MyPrintString(PGAContext *ctx, FILE *fp, int p, int pop);
+void         MyCopyString(PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int          MyDuplicateString(PGAContext *ctx, int p1, int pop1, int p2,
+	                       int pop2);
+
+
+double       MyEvaluate(PGAContext *ctx, int p, int pop);
+
+
+typedef struct {
+    /*  Put your favorite structure here!  */
+} MyStruct;
+
+
+int main(int argc, char **argv) {
+  PGAContext *ctx;
+
+  ctx = PGACreate(&argc, argv, PGA_DATATYPE_USER, 1, PGA_MAXIMIZE);
+
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_CREATESTRING,    MyCreateString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_BUILDDATATYPE,   MyBuildDatatype);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,        MyMutation);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER,       MyCrossover);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING,     MyPrintString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_COPYSTRING,      MyCopyString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_DUPLICATE,       MyDuplicateString);
+
+  PGASetUp(ctx);
+  PGARun(ctx, MyEvaluate);
+  PGADestroy(ctx);
+  return(0);
+}
+
+
+/*  Function must allocate space for the "string", and, if InitFlag it PGA_TRUE,
+ *  randomly initialize the string, otherwise, set it to zero.  Note that we
+ *  do not need to keep track of each member of the population; the pointers
+ *  are stored internally.
+ */
+void MyCreateString(PGAContext *ctx, int p, int pop, int InitFlag) {
+  PGAIndividual  *New;
+  MyStruct       *Data;
+
+  New = PGAGetIndividual(ctx, p, pop);
+
+  /*  Allocate space for the new chromosome.  */
+  if (!(New->chrom = malloc(sizeof(MyStruct)))) {
+    fprintf(stderr, "No more room in memory for the population!/n");
+    exit(10);
+  }
+
+  /*  For convenience.  */
+  Data = (MyStruct *)New->chrom;
+
+  /*  Initialize, if needed.  Otherwise, clear.  */
+}
+
+
+/*  Perform mutation on a "string".  It is important to keep count of the 
+ *  number of mutations performed and to return that value.
+ */
+int MyMutation(PGAContext *ctx, int p, int pop, double mr) {
+  MyStruct   *Data;
+  int         count;
+
+  Data = (MyStruct *)PGAGetIndividual(ctx, p, pop)->chrom;
+
+  /*  Insert code to mutate Data here.  Remember to count the number
+   *  of mutations that happen, and return that value!
+   */
+
+  return(count);
+}
+
+
+/*  Perform crossover from two parents to two children.  */
+void MyCrossover(PGAContext *ctx, int p1, int p2, int p_pop, int c1, int c2,
+		 int c_pop) {
+    MyStruct   *P1, *P2, *C1, *C2;
+
+    P1 = (MyStruct *)PGAGetIndividual(ctx, p1, p_pop)->chrom;
+    P2 = (MyStruct *)PGAGetIndividual(ctx, p2, p_pop)->chrom;
+    C1 = (MyStruct *)PGAGetIndividual(ctx, c1, c_pop)->chrom;
+    C2 = (MyStruct *)PGAGetIndividual(ctx, c1, c_pop)->chrom;
+    
+    /*  Perform crossover from P1 and P2 into C1 and C2 here.  */
+}
+
+
+/*  Print a "string" to the file fp.  */
+void MyPrintString(PGAContext *ctx, FILE *fp, int p, int pop) {
+    MyStruct   *Data;
+
+    Data = (MyStruct *)PGAGetIndividual(ctx, p, pop)->chrom;
+    
+    /*  Print the string Data to the file fp.  */
+}
+
+
+/*  Copy one string to another.  If contiguous data, usually a call to memcpy.  */
+void MyCopyString(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+    MyStruct  *P1, *P2;
+
+    P1 = (MyStruct *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    P2 = (MyStruct *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+
+    /*  Copy string P1 into string P2.  This can be as simple as doing
+     *      memcpy(P2, P1, sizeof(MyStruct_s));
+     */
+}
+
+
+/*  Determine if two strings are the same.  If so, return non-zero, otherwise
+ *  return zero.  If contiguous data, usually a call to memcmp.
+ */
+int MyDuplicateString(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+    MyStruct  *P1, *P2;
+
+    P1 = (MyStruct *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    P2 = (MyStruct *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+
+    /*  Compare strings P1 and P2 to see if they are different.  If they
+     *  are, return non-zero; else, return 0.  This can be as simple as
+     *      return(!memcmp(P1, P2, sizeof(MyStruct_s)));
+     */
+}
+
+
+/*  Randomly initialize a string.  */
+void MyInitString(PGAContext *ctx, int p, int pop) {
+  MyStruct   *Data;
+
+  Data = (MyStruct *)PGAGetIndividual(ctx, p, pop)->chrom;
+
+  /*  Insert code to randomly initialize Data here.  */
+}
+
+
+/*  Create an MPI_Datatype for the "string".  */
+MPI_Datatype MyBuildDatatype(PGAContext *ctx, int p, int pop) {
+  MyStruct   *Data;
+
+  Data = (MyStruct *)PGAGetIndividual(ctx, p, pop)->chrom;
+
+  /*  Insert code to build an MPI datatype here.  */
+}
+
+
+/*  The evaluation function.    */
+double MyEvaluate(PGAContext *ctx, int p, int pop) {
+    MyStruct   *Data;
+
+    Data = (MyStruct *)PGAGetIndividual(ctx, p, pop)->chrom;
+    
+    /*  Evaluate the string here, and return a double representing
+     *  the quality of the solution.
+     */
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/fakempi_h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/fakempi_h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/fakempi_h	(revision 6168)
@@ -0,0 +1,67 @@
+/*  These are the definitions to use our fake version of MPI in mpi_stub.c 
+ *  Guaranteed only to make PGAPack compile and link without MPI, but should
+ *  work from user C and fortran programs.
+ *
+ *  Some of these are from mpich's mpi.h, others are custom.
+ *
+ *  Author: Brian P. Walenz
+ */
+
+#ifndef MPI_FAKE_H
+#define MPI_FAKE_H 1
+
+typedef void *  MPI_Comm;
+typedef void *  MPI_Datatype;
+typedef long    MPI_Aint;
+
+typedef struct {
+    int     MPI_SOURCE;
+    int     MPI_TAG;
+    int     MPI_ERROR;
+} MPI_Status;
+
+#define MPI_BYTE            (void *)NULL
+#define MPI_CHAR            (void *)NULL
+#define MPI_DOUBLE          (void *)NULL
+#define MPI_FLOAT           (void *)NULL
+#define MPI_INT             (void *)NULL
+#define MPI_LONG            (void *)NULL
+#define MPI_LONG_DOUBLE     (void *)NULL
+#define MPI_PACKED          (void *)NULL
+#define MPI_SHORT           (void *)NULL
+#define MPI_UNSIGNED_CHAR   (void *)NULL
+#define MPI_UNSIGNED        (void *)NULL
+#define MPI_UNSIGNED_LONG   (void *)NULL
+#define MPI_UNSIGNED_SHORT  (void *)NULL
+
+#define MPI_COMM_WORLD      (void *)NULL
+#define MPI_COMM_SELF       (void *)NULL
+
+#define MPI_BOTTOM          (void *)0
+
+#define MPI_PROC_NULL       (-1)
+#define MPI_ANY_SOURCE      (-2)
+#define MPI_ANY_TAG         (-1)
+
+/*  Declare prototypes for the MPI functions.  */
+int MPI_Address(void *, MPI_Aint *);
+int MPI_Bcast(void *, int, MPI_Datatype, int, MPI_Comm);
+int MPI_Comm_dup(MPI_Comm, MPI_Comm *);
+int MPI_Comm_free(MPI_Comm *);
+int MPI_Comm_rank(MPI_Comm, int *);
+int MPI_Comm_size(MPI_Comm, int *);
+int MPI_Finalize(void);
+int MPI_Init(int *, char ***);
+int MPI_Initialized(int *);
+int MPI_Probe(int, int, MPI_Comm, MPI_Status *);
+int MPI_Send(void *, int, MPI_Datatype, int, int, MPI_Comm);
+int MPI_Recv(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *);
+int MPI_Sendrecv(void *, int, MPI_Datatype, int, int, void *, int,
+	         MPI_Datatype, int, int, MPI_Comm, MPI_Status *);
+int MPI_Type_commit(MPI_Datatype *);
+int MPI_Type_free(MPI_Datatype *);
+int MPI_Type_struct(int, int *, MPI_Aint *, MPI_Datatype *, MPI_Datatype *);
+
+
+#endif
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/fakempif_h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/fakempif_h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/fakempif_h	(revision 6168)
@@ -0,0 +1,787 @@
+<<<<<<< mpif.h
+<<<<<<< mpif.h
+<<<<<<< mpif.h
+c     These are the definitions to use our fake version of MPI in mpi_stub.c 
+c     Guaranteed only to make PGAPack compile and link without MPI, but should
+c     work from user fortran program.
+c 
+c     Some are from mpich's mpif.h, others are custom.
+c
+c     Author: Brian P. Walenz
+c 
+      integer MPI_BYTE, MPI_CHARACTER, MPI_COMPLEX
+      integer MPI_DOUBLE_PRECISION, MPI_INTEGER, MPI_REAL
+      integer MPI_LOGICAL, MPI_PACKED
+      parameter(MPI_BYTE=0, MPI_CHARACTER=0, MPI_COMPLEX=0)
+      parameter(MPI_DOUBLE_PRECISION=0, MPI_INTEGER=0, MPI_REAL=0)
+      parameter(MPI_LOGICAL=0, MPI_PACKED=0)
+      
+      integer MPI_COMM_WORLD, MPI_COMM_SELF, MPI_BOTTOM
+      parameter (MPI_COMM_WORLD=0, MPI_COMM_SELF=0, MPI_BOTTOM=0)
+      
+      integer MPI_PROC_NULL, MPI_ANY_SOURCE, MPI_ANY_TAG
+      parameter(MPI_PROC_NULL=0, MPI_ANY_SOURCE=(-2), MPI_ANY_TAG=(-1))
+      
+      integer MPI_SOURCE, MPI_TAG, MPI_ERROR
+      parameter(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4)
+      
+      integer MPI_STATUS_SIZE
+      parameter (MPI_STATUS_SIZE=4)
+
+c     Functions
+      external MPI_Address, MPI_Bcast, MPI_Comm_dup, MPI_Comm_free
+      external MPI_Comm_rank, MPI_Comm_size, MPI_Finalize, MPI_Init
+      external MPI_Initialized, MPI_Probe, MPI_Send, MPI_Recv
+      external MPI_Sendrecv, MPI_Type_commit, MPI_Type_free
+      external MPI_Type_struct
+
+=======
+!
+!  
+!  (C) 1993 by Argonne National Laboratory and Mississipi State University.
+!      All rights reserved.  See COPYRIGHT in top-level directory.
+!
+!
+! user include file for MPI programs, with no dependencies 
+!
+! It really is not possible to make a perfect include file that can
+! be used by both F77 and F90 compilers, but this is close.  We have removed
+! continuation lines (allows free form input in F90); systems whose
+! Fortran compilers support ! instead of just C or * for comments can
+! globally replace a C in the first column with !; the resulting file
+! should work for both Fortran 77 and Fortran 90.
+!
+! If your Fortran compiler supports ! for comments, you can run this 
+! through sed with
+!     sed -e 's/^C/\!/g'
+!
+! We have also removed the use of contractions (involving the single quote)
+! character because some users use .F instead of .f files (to invoke the
+! cpp preprocessor) and further, their preprocessor is determined to find
+! matching single quote pairs (and probably double quotes; given the
+! different rules in C and Fortran, this sounds like a disaster).  Rather than
+! take the position that the poor users should get a better system, we
+! have removed the text that caused problems.  Of course, the users SHOULD
+! get a better system...
+!
+! return codes 
+      INTEGER MPI_SUCCESS,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE
+      INTEGER MPI_ERR_TAG,MPI_ERR_COMM,MPI_ERR_RANK,MPI_ERR_ROOT
+      INTEGER MPI_ERR_GROUP
+      INTEGER MPI_ERR_OP,MPI_ERR_TOPOLOGY,MPI_ERR_DIMS,MPI_ERR_ARG
+      INTEGER MPI_ERR_UNKNOWN,MPI_ERR_TRUNCATE,MPI_ERR_OTHER
+      INTEGER MPI_ERR_INTERN,MPI_ERR_IN_STATUS,MPI_ERR_PENDING
+      INTEGER MPI_ERR_REQUEST, MPI_ERR_LASTCODE
+      PARAMETER (MPI_SUCCESS=0,MPI_ERR_BUFFER=1,MPI_ERR_COUNT=2)
+      PARAMETER (MPI_ERR_TYPE=3,MPI_ERR_TAG=4,MPI_ERR_COMM=5)
+      PARAMETER (MPI_ERR_RANK=6,MPI_ERR_ROOT=7,MPI_ERR_GROUP=8)
+      PARAMETER (MPI_ERR_OP=9,MPI_ERR_TOPOLOGY=10,MPI_ERR_DIMS=11)
+      PARAMETER (MPI_ERR_ARG=12,MPI_ERR_UNKNOWN=13)
+      PARAMETER (MPI_ERR_TRUNCATE=14,MPI_ERR_OTHER=15)
+      PARAMETER (MPI_ERR_INTERN=16,MPI_ERR_IN_STATUS=17)
+      PARAMETER (MPI_ERR_PENDING=18,MPI_ERR_REQUEST=19)
+      PARAMETER (MPI_ERR_LASTCODE=1073741823)
+!
+      INTEGER MPI_UNDEFINED
+      parameter (MPI_UNDEFINED = (-32766))
+!
+      INTEGER MPI_GRAPH, MPI_CART
+      PARAMETER (MPI_GRAPH = 1, MPI_CART = 2)
+      INTEGER  MPI_PROC_NULL
+      PARAMETER ( MPI_PROC_NULL = (-1) )
+!
+      INTEGER MPI_BSEND_OVERHEAD
+      PARAMETER ( MPI_BSEND_OVERHEAD = 512 )
+
+      INTEGER MPI_SOURCE, MPI_TAG, MPI_ERROR
+      PARAMETER(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4)
+      INTEGER MPI_STATUS_SIZE
+      PARAMETER (MPI_STATUS_SIZE=5)
+      INTEGER MPI_MAX_PROCESSOR_NAME, MPI_MAX_ERROR_STRING
+      PARAMETER (MPI_MAX_PROCESSOR_NAME=256)
+      PARAMETER (MPI_MAX_ERROR_STRING=512)
+      INTEGER MPI_MAX_NAME_STRING
+      PARAMETER (MPI_MAX_NAME_STRING=63)
+!
+      INTEGER MPI_COMM_NULL
+      PARAMETER (MPI_COMM_NULL=0)
+!
+      INTEGER MPI_DATATYPE_NULL
+      PARAMETER (MPI_DATATYPE_NULL = 0)
+      
+      INTEGER MPI_ERRHANDLER_NULL
+      PARAMETER (MPI_ERRHANDLER_NULL = 0)
+      
+      INTEGER MPI_GROUP_NULL
+      PARAMETER (MPI_GROUP_NULL = 0)
+      
+      INTEGER MPI_KEYVAL_INVALID
+      PARAMETER (MPI_KEYVAL_INVALID = 0)
+      
+      INTEGER MPI_REQUEST_NULL
+      PARAMETER (MPI_REQUEST_NULL = 0)
+! 
+      INTEGER MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL
+      PARAMETER (MPI_IDENT=0, MPI_CONGRUENT=1, MPI_SIMILAR=2)
+      PARAMETER (MPI_UNEQUAL=3)
+!
+!     MPI_BOTTOM needs to be a known address; here we put it at the
+!     beginning of the common block.  The point-to-point and collective
+!     routines know about MPI_BOTTOM, but MPI_TYPE_STRUCT as yet does not.
+!
+!     MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE are similar objects
+!
+!     The types MPI_INTEGER1,2,4 and MPI_REAL4,8 are OPTIONAL.
+!     Their values are zero if they are not available.  Note that
+!     using these reduces the portability of code (though may enhance
+!     portability between Crays and other systems)
+!
+      INTEGER MPI_TAG_UB, MPI_HOST, MPI_IO
+      INTEGER MPI_BOTTOM, MPI_STATUS_IGNORE, MPI_STATUSES_IGNORE
+      INTEGER MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION 
+      INTEGER MPI_COMPLEX, MPI_DOUBLE_COMPLEX,MPI_LOGICAL
+      INTEGER MPI_CHARACTER, MPI_BYTE, MPI_2INTEGER, MPI_2REAL
+      INTEGER MPI_2DOUBLE_PRECISION, MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX
+      INTEGER MPI_UB, MPI_LB
+      INTEGER MPI_PACKED, MPI_WTIME_IS_GLOBAL
+      INTEGER MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY
+      INTEGER MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND
+      INTEGER MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC
+      INTEGER MPI_MAXLOC
+      INTEGER MPI_OP_NULL
+      INTEGER MPI_ERRORS_ARE_FATAL, MPI_ERRORS_RETURN
+!
+      PARAMETER (MPI_ERRORS_ARE_FATAL=119)
+      PARAMETER (MPI_ERRORS_RETURN=120)
+!
+      PARAMETER (MPI_COMPLEX=23,MPI_DOUBLE_COMPLEX=24,MPI_LOGICAL=25)
+      PARAMETER (MPI_REAL=26,MPI_DOUBLE_PRECISION=27,MPI_INTEGER=28)
+      PARAMETER (MPI_2INTEGER=29,MPI_2COMPLEX=30,MPI_2DOUBLE_COMPLEX=31)
+      PARAMETER (MPI_2REAL=32,MPI_2DOUBLE_PRECISION=33,MPI_CHARACTER=1)
+      PARAMETER (MPI_BYTE=3,MPI_UB=16,MPI_LB=15,MPI_PACKED=14)
+
+      INTEGER MPI_ORDER_C, MPI_ORDER_FORTRAN 
+      PARAMETER (MPI_ORDER_C=56, MPI_ORDER_FORTRAN=57)
+      INTEGER MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_CYCLIC
+      INTEGER MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_DFLT_DARG
+      PARAMETER (MPI_DISTRIBUTE_BLOCK=121, MPI_DISTRIBUTE_CYCLIC=122)
+      PARAMETER (MPI_DISTRIBUTE_NONE=123)
+      PARAMETER (MPI_DISTRIBUTE_DFLT_DARG=-49767)
+      INTEGER MPI_MAX_INFO_KEY, MPI_MAX_INFO_VAL
+      PARAMETER (MPI_MAX_INFO_KEY=255, MPI_MAX_INFO_VAL=1024)
+      INTEGER MPI_INFO_NULL
+      PARAMETER (MPI_INFO_NULL=0)
+
+!
+! Optional Fortran Types.  Configure attempts to determine these.  
+!
+      INTEGER MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, MPI_INTEGER8
+      INTEGER MPI_INTEGER16
+      INTEGER MPI_REAL4, MPI_REAL8, MPI_REAL16
+      INTEGER MPI_COMPLEX8, MPI_COMPLEX16, MPI_COMPLEX32
+      PARAMETER (MPI_INTEGER1=1,MPI_INTEGER2=4)
+      PARAMETER (MPI_INTEGER4=6)
+      PARAMETER (MPI_INTEGER8=0)
+      PARAMETER (MPI_INTEGER16=0)
+      PARAMETER (MPI_REAL4=10)
+      PARAMETER (MPI_REAL8=11)
+      PARAMETER (MPI_REAL16=0)
+      PARAMETER (MPI_COMPLEX8=23)
+      PARAMETER (MPI_COMPLEX16=24)
+      PARAMETER (MPI_COMPLEX32=0)
+
+      COMMON /MPIPRIV/ MPI_BOTTOM,MPI_STATUS_IGNORE,MPI_STATUSES_IGNORE      
+!
+!     Without this save, some Fortran implementations may make the common
+!     dynamic!
+!    
+!     For a Fortran90 module, we might replace /MPIPRIV/ with a simple
+!     SAVE MPI_BOTTOM
+!
+      SAVE /MPIPRIV/
+
+      PARAMETER (MPI_MAX=100,MPI_MIN=101,MPI_SUM=102,MPI_PROD=103)
+      PARAMETER (MPI_LAND=104,MPI_BAND=105,MPI_LOR=106,MPI_BOR=107)
+      PARAMETER (MPI_LXOR=108,MPI_BXOR=109,MPI_MINLOC=110)
+      PARAMETER (MPI_MAXLOC=111, MPI_OP_NULL=0)
+!
+      PARAMETER (MPI_GROUP_EMPTY=90,MPI_COMM_WORLD=91,MPI_COMM_SELF=92)
+      PARAMETER (MPI_TAG_UB=80,MPI_HOST=82,MPI_IO=84)
+      PARAMETER (MPI_WTIME_IS_GLOBAL=86)
+!
+      INTEGER MPI_ANY_SOURCE
+      PARAMETER (MPI_ANY_SOURCE = (-2))
+      INTEGER MPI_ANY_TAG
+      PARAMETER (MPI_ANY_TAG = (-1))
+!
+      INTEGER MPI_VERSION, MPI_SUBVERSION
+      PARAMETER (MPI_VERSION    = 1, MPI_SUBVERSION = 2)
+!
+!     There are additional MPI-2 constants 
+      INTEGER MPI_ADDRESS_KIND, MPI_OFFSET_KIND
+      PARAMETER (MPI_ADDRESS_KIND=4)
+      PARAMETER (MPI_OFFSET_KIND=4)
+!
+!     All other MPI routines are subroutines
+!     This may cause some Fortran compilers to complain about defined and
+!     not used.  Such compilers should be improved.
+!
+!     Some Fortran compilers will not link programs that contain
+!     external statements to routines that are not provided, even if
+!     the routine is never called.  Remove PMPI_WTIME and PMPI_WTICK
+!     if you have trouble with them.
+!
+      DOUBLE PRECISION MPI_WTIME, MPI_WTICK,PMPI_WTIME, PMPI_WTICK
+      EXTERNAL MPI_WTIME, MPI_WTICK,PMPI_WTIME, PMPI_WTICK
+!
+!     The attribute copy/delete subroutines are symbols that can be passed
+!     to MPI routines
+!
+      EXTERNAL MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, MPI_DUP_FN
+! 
+!     $Id: fakempif_h,v 1.2 2000/08/31 21:05:19 gekco Exp $    
+! 
+!     Copyright (C) 1997 University of Chicago. 
+!     See COPYRIGHT notice in top-level directory.
+!
+! 
+!    user include file for Fortran MPI-IO programs 
+!
+      INTEGER MPI_MODE_RDONLY, MPI_MODE_RDWR, MPI_MODE_WRONLY
+      INTEGER MPI_MODE_DELETE_ON_CLOSE, MPI_MODE_UNIQUE_OPEN
+      INTEGER MPI_MODE_CREATE, MPI_MODE_EXCL
+      INTEGER MPI_MODE_APPEND, MPI_MODE_SEQUENTIAL
+      PARAMETER (MPI_MODE_RDONLY=2, MPI_MODE_RDWR=8, MPI_MODE_WRONLY=4)
+      PARAMETER (MPI_MODE_CREATE=1, MPI_MODE_DELETE_ON_CLOSE=16)
+      PARAMETER (MPI_MODE_UNIQUE_OPEN=32, MPI_MODE_EXCL=64)
+      PARAMETER (MPI_MODE_APPEND=128, MPI_MODE_SEQUENTIAL=256)
+!
+      INTEGER MPI_FILE_NULL
+      PARAMETER (MPI_FILE_NULL=0)
+!
+      INTEGER MPI_MAX_DATAREP_STRING
+      PARAMETER (MPI_MAX_DATAREP_STRING=128)
+!
+      INTEGER MPI_SEEK_SET, MPI_SEEK_CUR, MPI_SEEK_END
+      PARAMETER (MPI_SEEK_SET=600, MPI_SEEK_CUR=602, MPI_SEEK_END=604)
+!
+      INTEGER MPIO_REQUEST_NULL
+      PARAMETER (MPIO_REQUEST_NULL=0)
+!
+      integer MPI_DISPLACEMENT_CURRENT
+      PARAMETER (MPI_DISPLACEMENT_CURRENT=-54278278)
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+>>>>>>> 1.7
+=======
+!
+!  
+!  (C) 1993 by Argonne National Laboratory and Mississipi State University.
+!      All rights reserved.  See COPYRIGHT in top-level directory.
+!
+!
+! user include file for MPI programs, with no dependencies 
+!
+! It really is not possible to make a perfect include file that can
+! be used by both F77 and F90 compilers, but this is close.  We have removed
+! continuation lines (allows free form input in F90); systems whose
+! Fortran compilers support ! instead of just C or * for comments can
+! globally replace a C in the first column with !; the resulting file
+! should work for both Fortran 77 and Fortran 90.
+!
+! If your Fortran compiler supports ! for comments, you can run this 
+! through sed with
+!     sed -e 's/^C/\!/g'
+!
+! We have also removed the use of contractions (involving the single quote)
+! character because some users use .F instead of .f files (to invoke the
+! cpp preprocessor) and further, their preprocessor is determined to find
+! matching single quote pairs (and probably double quotes; given the
+! different rules in C and Fortran, this sounds like a disaster).  Rather than
+! take the position that the poor users should get a better system, we
+! have removed the text that caused problems.  Of course, the users SHOULD
+! get a better system...
+!
+! return codes 
+      INTEGER MPI_SUCCESS,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE
+      INTEGER MPI_ERR_TAG,MPI_ERR_COMM,MPI_ERR_RANK,MPI_ERR_ROOT
+      INTEGER MPI_ERR_GROUP
+      INTEGER MPI_ERR_OP,MPI_ERR_TOPOLOGY,MPI_ERR_DIMS,MPI_ERR_ARG
+      INTEGER MPI_ERR_UNKNOWN,MPI_ERR_TRUNCATE,MPI_ERR_OTHER
+      INTEGER MPI_ERR_INTERN,MPI_ERR_IN_STATUS,MPI_ERR_PENDING
+      INTEGER MPI_ERR_REQUEST, MPI_ERR_LASTCODE
+      PARAMETER (MPI_SUCCESS=0,MPI_ERR_BUFFER=1,MPI_ERR_COUNT=2)
+      PARAMETER (MPI_ERR_TYPE=3,MPI_ERR_TAG=4,MPI_ERR_COMM=5)
+      PARAMETER (MPI_ERR_RANK=6,MPI_ERR_ROOT=7,MPI_ERR_GROUP=8)
+      PARAMETER (MPI_ERR_OP=9,MPI_ERR_TOPOLOGY=10,MPI_ERR_DIMS=11)
+      PARAMETER (MPI_ERR_ARG=12,MPI_ERR_UNKNOWN=13)
+      PARAMETER (MPI_ERR_TRUNCATE=14,MPI_ERR_OTHER=15)
+      PARAMETER (MPI_ERR_INTERN=16,MPI_ERR_IN_STATUS=17)
+      PARAMETER (MPI_ERR_PENDING=18,MPI_ERR_REQUEST=19)
+      PARAMETER (MPI_ERR_LASTCODE=1073741823)
+!
+      INTEGER MPI_UNDEFINED
+      parameter (MPI_UNDEFINED = (-32766))
+!
+      INTEGER MPI_GRAPH, MPI_CART
+      PARAMETER (MPI_GRAPH = 1, MPI_CART = 2)
+      INTEGER  MPI_PROC_NULL
+      PARAMETER ( MPI_PROC_NULL = (-1) )
+!
+      INTEGER MPI_BSEND_OVERHEAD
+      PARAMETER ( MPI_BSEND_OVERHEAD = 512 )
+
+      INTEGER MPI_SOURCE, MPI_TAG, MPI_ERROR
+      PARAMETER(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4)
+      INTEGER MPI_STATUS_SIZE
+      PARAMETER (MPI_STATUS_SIZE=5)
+      INTEGER MPI_MAX_PROCESSOR_NAME, MPI_MAX_ERROR_STRING
+      PARAMETER (MPI_MAX_PROCESSOR_NAME=256)
+      PARAMETER (MPI_MAX_ERROR_STRING=512)
+      INTEGER MPI_MAX_NAME_STRING
+      PARAMETER (MPI_MAX_NAME_STRING=63)
+!
+      INTEGER MPI_COMM_NULL
+      PARAMETER (MPI_COMM_NULL=0)
+!
+      INTEGER MPI_DATATYPE_NULL
+      PARAMETER (MPI_DATATYPE_NULL = 0)
+      
+      INTEGER MPI_ERRHANDLER_NULL
+      PARAMETER (MPI_ERRHANDLER_NULL = 0)
+      
+      INTEGER MPI_GROUP_NULL
+      PARAMETER (MPI_GROUP_NULL = 0)
+      
+      INTEGER MPI_KEYVAL_INVALID
+      PARAMETER (MPI_KEYVAL_INVALID = 0)
+      
+      INTEGER MPI_REQUEST_NULL
+      PARAMETER (MPI_REQUEST_NULL = 0)
+! 
+      INTEGER MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL
+      PARAMETER (MPI_IDENT=0, MPI_CONGRUENT=1, MPI_SIMILAR=2)
+      PARAMETER (MPI_UNEQUAL=3)
+!
+!     MPI_BOTTOM needs to be a known address; here we put it at the
+!     beginning of the common block.  The point-to-point and collective
+!     routines know about MPI_BOTTOM, but MPI_TYPE_STRUCT as yet does not.
+!
+!     MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE are similar objects
+!
+!     The types MPI_INTEGER1,2,4 and MPI_REAL4,8 are OPTIONAL.
+!     Their values are zero if they are not available.  Note that
+!     using these reduces the portability of code (though may enhance
+!     portability between Crays and other systems)
+!
+      INTEGER MPI_TAG_UB, MPI_HOST, MPI_IO
+      INTEGER MPI_BOTTOM, MPI_STATUS_IGNORE, MPI_STATUSES_IGNORE
+      INTEGER MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION 
+      INTEGER MPI_COMPLEX, MPI_DOUBLE_COMPLEX,MPI_LOGICAL
+      INTEGER MPI_CHARACTER, MPI_BYTE, MPI_2INTEGER, MPI_2REAL
+      INTEGER MPI_2DOUBLE_PRECISION, MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX
+      INTEGER MPI_UB, MPI_LB
+      INTEGER MPI_PACKED, MPI_WTIME_IS_GLOBAL
+      INTEGER MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY
+      INTEGER MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND
+      INTEGER MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC
+      INTEGER MPI_MAXLOC
+      INTEGER MPI_OP_NULL
+      INTEGER MPI_ERRORS_ARE_FATAL, MPI_ERRORS_RETURN
+!
+      PARAMETER (MPI_ERRORS_ARE_FATAL=119)
+      PARAMETER (MPI_ERRORS_RETURN=120)
+!
+      PARAMETER (MPI_COMPLEX=23,MPI_DOUBLE_COMPLEX=24,MPI_LOGICAL=25)
+      PARAMETER (MPI_REAL=26,MPI_DOUBLE_PRECISION=27,MPI_INTEGER=28)
+      PARAMETER (MPI_2INTEGER=29,MPI_2COMPLEX=30,MPI_2DOUBLE_COMPLEX=31)
+      PARAMETER (MPI_2REAL=32,MPI_2DOUBLE_PRECISION=33,MPI_CHARACTER=1)
+      PARAMETER (MPI_BYTE=3,MPI_UB=16,MPI_LB=15,MPI_PACKED=14)
+
+      INTEGER MPI_ORDER_C, MPI_ORDER_FORTRAN 
+      PARAMETER (MPI_ORDER_C=56, MPI_ORDER_FORTRAN=57)
+      INTEGER MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_CYCLIC
+      INTEGER MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_DFLT_DARG
+      PARAMETER (MPI_DISTRIBUTE_BLOCK=121, MPI_DISTRIBUTE_CYCLIC=122)
+      PARAMETER (MPI_DISTRIBUTE_NONE=123)
+      PARAMETER (MPI_DISTRIBUTE_DFLT_DARG=-49767)
+      INTEGER MPI_MAX_INFO_KEY, MPI_MAX_INFO_VAL
+      PARAMETER (MPI_MAX_INFO_KEY=255, MPI_MAX_INFO_VAL=1024)
+      INTEGER MPI_INFO_NULL
+      PARAMETER (MPI_INFO_NULL=0)
+
+!
+! Optional Fortran Types.  Configure attempts to determine these.  
+!
+      INTEGER MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, MPI_INTEGER8
+      INTEGER MPI_INTEGER16
+      INTEGER MPI_REAL4, MPI_REAL8, MPI_REAL16
+      INTEGER MPI_COMPLEX8, MPI_COMPLEX16, MPI_COMPLEX32
+      PARAMETER (MPI_INTEGER1=1,MPI_INTEGER2=4)
+      PARAMETER (MPI_INTEGER4=6)
+      PARAMETER (MPI_INTEGER8=0)
+      PARAMETER (MPI_INTEGER16=0)
+      PARAMETER (MPI_REAL4=10)
+      PARAMETER (MPI_REAL8=11)
+      PARAMETER (MPI_REAL16=0)
+      PARAMETER (MPI_COMPLEX8=23)
+      PARAMETER (MPI_COMPLEX16=24)
+      PARAMETER (MPI_COMPLEX32=0)
+
+      COMMON /MPIPRIV/ MPI_BOTTOM,MPI_STATUS_IGNORE,MPI_STATUSES_IGNORE      
+!
+!     Without this save, some Fortran implementations may make the common
+!     dynamic!
+!    
+!     For a Fortran90 module, we might replace /MPIPRIV/ with a simple
+!     SAVE MPI_BOTTOM
+!
+      SAVE /MPIPRIV/
+
+      PARAMETER (MPI_MAX=100,MPI_MIN=101,MPI_SUM=102,MPI_PROD=103)
+      PARAMETER (MPI_LAND=104,MPI_BAND=105,MPI_LOR=106,MPI_BOR=107)
+      PARAMETER (MPI_LXOR=108,MPI_BXOR=109,MPI_MINLOC=110)
+      PARAMETER (MPI_MAXLOC=111, MPI_OP_NULL=0)
+!
+      PARAMETER (MPI_GROUP_EMPTY=90,MPI_COMM_WORLD=91,MPI_COMM_SELF=92)
+      PARAMETER (MPI_TAG_UB=80,MPI_HOST=82,MPI_IO=84)
+      PARAMETER (MPI_WTIME_IS_GLOBAL=86)
+!
+      INTEGER MPI_ANY_SOURCE
+      PARAMETER (MPI_ANY_SOURCE = (-2))
+      INTEGER MPI_ANY_TAG
+      PARAMETER (MPI_ANY_TAG = (-1))
+!
+      INTEGER MPI_VERSION, MPI_SUBVERSION
+      PARAMETER (MPI_VERSION    = 1, MPI_SUBVERSION = 2)
+!
+!     There are additional MPI-2 constants 
+      INTEGER MPI_ADDRESS_KIND, MPI_OFFSET_KIND
+      PARAMETER (MPI_ADDRESS_KIND=4)
+      PARAMETER (MPI_OFFSET_KIND=4)
+!
+!     All other MPI routines are subroutines
+!     This may cause some Fortran compilers to complain about defined and
+!     not used.  Such compilers should be improved.
+!
+!     Some Fortran compilers will not link programs that contain
+!     external statements to routines that are not provided, even if
+!     the routine is never called.  Remove PMPI_WTIME and PMPI_WTICK
+!     if you have trouble with them.
+!
+      DOUBLE PRECISION MPI_WTIME, MPI_WTICK,PMPI_WTIME, PMPI_WTICK
+      EXTERNAL MPI_WTIME, MPI_WTICK,PMPI_WTIME, PMPI_WTICK
+!
+!     The attribute copy/delete subroutines are symbols that can be passed
+!     to MPI routines
+!
+      EXTERNAL MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, MPI_DUP_FN
+! 
+!     $Id: fakempif_h,v 1.2 2000/08/31 21:05:19 gekco Exp $    
+! 
+!     Copyright (C) 1997 University of Chicago. 
+!     See COPYRIGHT notice in top-level directory.
+!
+! 
+!    user include file for Fortran MPI-IO programs 
+!
+      INTEGER MPI_MODE_RDONLY, MPI_MODE_RDWR, MPI_MODE_WRONLY
+      INTEGER MPI_MODE_DELETE_ON_CLOSE, MPI_MODE_UNIQUE_OPEN
+      INTEGER MPI_MODE_CREATE, MPI_MODE_EXCL
+      INTEGER MPI_MODE_APPEND, MPI_MODE_SEQUENTIAL
+      PARAMETER (MPI_MODE_RDONLY=2, MPI_MODE_RDWR=8, MPI_MODE_WRONLY=4)
+      PARAMETER (MPI_MODE_CREATE=1, MPI_MODE_DELETE_ON_CLOSE=16)
+      PARAMETER (MPI_MODE_UNIQUE_OPEN=32, MPI_MODE_EXCL=64)
+      PARAMETER (MPI_MODE_APPEND=128, MPI_MODE_SEQUENTIAL=256)
+!
+      INTEGER MPI_FILE_NULL
+      PARAMETER (MPI_FILE_NULL=0)
+!
+      INTEGER MPI_MAX_DATAREP_STRING
+      PARAMETER (MPI_MAX_DATAREP_STRING=128)
+!
+      INTEGER MPI_SEEK_SET, MPI_SEEK_CUR, MPI_SEEK_END
+      PARAMETER (MPI_SEEK_SET=600, MPI_SEEK_CUR=602, MPI_SEEK_END=604)
+!
+      INTEGER MPIO_REQUEST_NULL
+      PARAMETER (MPIO_REQUEST_NULL=0)
+!
+      integer MPI_DISPLACEMENT_CURRENT
+      PARAMETER (MPI_DISPLACEMENT_CURRENT=-54278278)
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+>>>>>>> 1.6
+=======
+!
+!  
+!  (C) 1993 by Argonne National Laboratory and Mississipi State University.
+!      All rights reserved.  See COPYRIGHT in top-level directory.
+!
+!
+! user include file for MPI programs, with no dependencies 
+!
+! It really is not possible to make a perfect include file that can
+! be used by both F77 and F90 compilers, but this is close.  We have removed
+! continuation lines (allows free form input in F90); systems whose
+! Fortran compilers support ! instead of just C or * for comments can
+! globally replace a C in the first column with !; the resulting file
+! should work for both Fortran 77 and Fortran 90.
+!
+! If your Fortran compiler supports ! for comments, you can run this 
+! through sed with
+!     sed -e 's/^C/\!/g'
+!
+! We have also removed the use of contractions (involving the single quote)
+! character because some users use .F instead of .f files (to invoke the
+! cpp preprocessor) and further, their preprocessor is determined to find
+! matching single quote pairs (and probably double quotes; given the
+! different rules in C and Fortran, this sounds like a disaster).  Rather than
+! take the position that the poor users should get a better system, we
+! have removed the text that caused problems.  Of course, the users SHOULD
+! get a better system...
+!
+! return codes 
+      INTEGER MPI_SUCCESS,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE
+      INTEGER MPI_ERR_TAG,MPI_ERR_COMM,MPI_ERR_RANK,MPI_ERR_ROOT
+      INTEGER MPI_ERR_GROUP
+      INTEGER MPI_ERR_OP,MPI_ERR_TOPOLOGY,MPI_ERR_DIMS,MPI_ERR_ARG
+      INTEGER MPI_ERR_UNKNOWN,MPI_ERR_TRUNCATE,MPI_ERR_OTHER
+      INTEGER MPI_ERR_INTERN,MPI_ERR_IN_STATUS,MPI_ERR_PENDING
+      INTEGER MPI_ERR_REQUEST, MPI_ERR_LASTCODE
+      PARAMETER (MPI_SUCCESS=0,MPI_ERR_BUFFER=1,MPI_ERR_COUNT=2)
+      PARAMETER (MPI_ERR_TYPE=3,MPI_ERR_TAG=4,MPI_ERR_COMM=5)
+      PARAMETER (MPI_ERR_RANK=6,MPI_ERR_ROOT=7,MPI_ERR_GROUP=8)
+      PARAMETER (MPI_ERR_OP=9,MPI_ERR_TOPOLOGY=10,MPI_ERR_DIMS=11)
+      PARAMETER (MPI_ERR_ARG=12,MPI_ERR_UNKNOWN=13)
+      PARAMETER (MPI_ERR_TRUNCATE=14,MPI_ERR_OTHER=15)
+      PARAMETER (MPI_ERR_INTERN=16,MPI_ERR_IN_STATUS=17)
+      PARAMETER (MPI_ERR_PENDING=18,MPI_ERR_REQUEST=19)
+      PARAMETER (MPI_ERR_LASTCODE=1073741823)
+!
+      INTEGER MPI_UNDEFINED
+      parameter (MPI_UNDEFINED = (-32766))
+!
+      INTEGER MPI_GRAPH, MPI_CART
+      PARAMETER (MPI_GRAPH = 1, MPI_CART = 2)
+      INTEGER  MPI_PROC_NULL
+      PARAMETER ( MPI_PROC_NULL = (-1) )
+!
+      INTEGER MPI_BSEND_OVERHEAD
+      PARAMETER ( MPI_BSEND_OVERHEAD = 512 )
+
+      INTEGER MPI_SOURCE, MPI_TAG, MPI_ERROR
+      PARAMETER(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4)
+      INTEGER MPI_STATUS_SIZE
+      PARAMETER (MPI_STATUS_SIZE=5)
+      INTEGER MPI_MAX_PROCESSOR_NAME, MPI_MAX_ERROR_STRING
+      PARAMETER (MPI_MAX_PROCESSOR_NAME=256)
+      PARAMETER (MPI_MAX_ERROR_STRING=512)
+      INTEGER MPI_MAX_NAME_STRING
+      PARAMETER (MPI_MAX_NAME_STRING=63)
+!
+      INTEGER MPI_COMM_NULL
+      PARAMETER (MPI_COMM_NULL=0)
+!
+      INTEGER MPI_DATATYPE_NULL
+      PARAMETER (MPI_DATATYPE_NULL = 0)
+      
+      INTEGER MPI_ERRHANDLER_NULL
+      PARAMETER (MPI_ERRHANDLER_NULL = 0)
+      
+      INTEGER MPI_GROUP_NULL
+      PARAMETER (MPI_GROUP_NULL = 0)
+      
+      INTEGER MPI_KEYVAL_INVALID
+      PARAMETER (MPI_KEYVAL_INVALID = 0)
+      
+      INTEGER MPI_REQUEST_NULL
+      PARAMETER (MPI_REQUEST_NULL = 0)
+! 
+      INTEGER MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL
+      PARAMETER (MPI_IDENT=0, MPI_CONGRUENT=1, MPI_SIMILAR=2)
+      PARAMETER (MPI_UNEQUAL=3)
+!
+!     MPI_BOTTOM needs to be a known address; here we put it at the
+!     beginning of the common block.  The point-to-point and collective
+!     routines know about MPI_BOTTOM, but MPI_TYPE_STRUCT as yet does not.
+!
+!     MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE are similar objects
+!
+!     The types MPI_INTEGER1,2,4 and MPI_REAL4,8 are OPTIONAL.
+!     Their values are zero if they are not available.  Note that
+!     using these reduces the portability of code (though may enhance
+!     portability between Crays and other systems)
+!
+      INTEGER MPI_TAG_UB, MPI_HOST, MPI_IO
+      INTEGER MPI_BOTTOM, MPI_STATUS_IGNORE, MPI_STATUSES_IGNORE
+      INTEGER MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION 
+      INTEGER MPI_COMPLEX, MPI_DOUBLE_COMPLEX,MPI_LOGICAL
+      INTEGER MPI_CHARACTER, MPI_BYTE, MPI_2INTEGER, MPI_2REAL
+      INTEGER MPI_2DOUBLE_PRECISION, MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX
+      INTEGER MPI_UB, MPI_LB
+      INTEGER MPI_PACKED, MPI_WTIME_IS_GLOBAL
+      INTEGER MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY
+      INTEGER MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND
+      INTEGER MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC
+      INTEGER MPI_MAXLOC
+      INTEGER MPI_OP_NULL
+      INTEGER MPI_ERRORS_ARE_FATAL, MPI_ERRORS_RETURN
+!
+      PARAMETER (MPI_ERRORS_ARE_FATAL=119)
+      PARAMETER (MPI_ERRORS_RETURN=120)
+!
+      PARAMETER (MPI_COMPLEX=23,MPI_DOUBLE_COMPLEX=24,MPI_LOGICAL=25)
+      PARAMETER (MPI_REAL=26,MPI_DOUBLE_PRECISION=27,MPI_INTEGER=28)
+      PARAMETER (MPI_2INTEGER=29,MPI_2COMPLEX=30,MPI_2DOUBLE_COMPLEX=31)
+      PARAMETER (MPI_2REAL=32,MPI_2DOUBLE_PRECISION=33,MPI_CHARACTER=1)
+      PARAMETER (MPI_BYTE=3,MPI_UB=16,MPI_LB=15,MPI_PACKED=14)
+
+      INTEGER MPI_ORDER_C, MPI_ORDER_FORTRAN 
+      PARAMETER (MPI_ORDER_C=56, MPI_ORDER_FORTRAN=57)
+      INTEGER MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_CYCLIC
+      INTEGER MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_DFLT_DARG
+      PARAMETER (MPI_DISTRIBUTE_BLOCK=121, MPI_DISTRIBUTE_CYCLIC=122)
+      PARAMETER (MPI_DISTRIBUTE_NONE=123)
+      PARAMETER (MPI_DISTRIBUTE_DFLT_DARG=-49767)
+      INTEGER MPI_MAX_INFO_KEY, MPI_MAX_INFO_VAL
+      PARAMETER (MPI_MAX_INFO_KEY=255, MPI_MAX_INFO_VAL=1024)
+      INTEGER MPI_INFO_NULL
+      PARAMETER (MPI_INFO_NULL=0)
+
+!
+! Optional Fortran Types.  Configure attempts to determine these.  
+!
+      INTEGER MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, MPI_INTEGER8
+      INTEGER MPI_INTEGER16
+      INTEGER MPI_REAL4, MPI_REAL8, MPI_REAL16
+      INTEGER MPI_COMPLEX8, MPI_COMPLEX16, MPI_COMPLEX32
+      PARAMETER (MPI_INTEGER1=1,MPI_INTEGER2=4)
+      PARAMETER (MPI_INTEGER4=6)
+      PARAMETER (MPI_INTEGER8=0)
+      PARAMETER (MPI_INTEGER16=0)
+      PARAMETER (MPI_REAL4=10)
+      PARAMETER (MPI_REAL8=11)
+      PARAMETER (MPI_REAL16=0)
+      PARAMETER (MPI_COMPLEX8=23)
+      PARAMETER (MPI_COMPLEX16=24)
+      PARAMETER (MPI_COMPLEX32=0)
+
+      COMMON /MPIPRIV/ MPI_BOTTOM,MPI_STATUS_IGNORE,MPI_STATUSES_IGNORE      
+!
+!     Without this save, some Fortran implementations may make the common
+!     dynamic!
+!    
+!     For a Fortran90 module, we might replace /MPIPRIV/ with a simple
+!     SAVE MPI_BOTTOM
+!
+      SAVE /MPIPRIV/
+
+      PARAMETER (MPI_MAX=100,MPI_MIN=101,MPI_SUM=102,MPI_PROD=103)
+      PARAMETER (MPI_LAND=104,MPI_BAND=105,MPI_LOR=106,MPI_BOR=107)
+      PARAMETER (MPI_LXOR=108,MPI_BXOR=109,MPI_MINLOC=110)
+      PARAMETER (MPI_MAXLOC=111, MPI_OP_NULL=0)
+!
+      PARAMETER (MPI_GROUP_EMPTY=90,MPI_COMM_WORLD=91,MPI_COMM_SELF=92)
+      PARAMETER (MPI_TAG_UB=80,MPI_HOST=82,MPI_IO=84)
+      PARAMETER (MPI_WTIME_IS_GLOBAL=86)
+!
+      INTEGER MPI_ANY_SOURCE
+      PARAMETER (MPI_ANY_SOURCE = (-2))
+      INTEGER MPI_ANY_TAG
+      PARAMETER (MPI_ANY_TAG = (-1))
+!
+      INTEGER MPI_VERSION, MPI_SUBVERSION
+      PARAMETER (MPI_VERSION    = 1, MPI_SUBVERSION = 2)
+!
+!     There are additional MPI-2 constants 
+      INTEGER MPI_ADDRESS_KIND, MPI_OFFSET_KIND
+      PARAMETER (MPI_ADDRESS_KIND=4)
+      PARAMETER (MPI_OFFSET_KIND=4)
+!
+!     All other MPI routines are subroutines
+!     This may cause some Fortran compilers to complain about defined and
+!     not used.  Such compilers should be improved.
+!
+!     Some Fortran compilers will not link programs that contain
+!     external statements to routines that are not provided, even if
+!     the routine is never called.  Remove PMPI_WTIME and PMPI_WTICK
+!     if you have trouble with them.
+!
+      DOUBLE PRECISION MPI_WTIME, MPI_WTICK,PMPI_WTIME, PMPI_WTICK
+      EXTERNAL MPI_WTIME, MPI_WTICK,PMPI_WTIME, PMPI_WTICK
+!
+!     The attribute copy/delete subroutines are symbols that can be passed
+!     to MPI routines
+!
+      EXTERNAL MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, MPI_DUP_FN
+! 
+!     $Id: fakempif_h,v 1.2 2000/08/31 21:05:19 gekco Exp $    
+! 
+!     Copyright (C) 1997 University of Chicago. 
+!     See COPYRIGHT notice in top-level directory.
+!
+! 
+!    user include file for Fortran MPI-IO programs 
+!
+      INTEGER MPI_MODE_RDONLY, MPI_MODE_RDWR, MPI_MODE_WRONLY
+      INTEGER MPI_MODE_DELETE_ON_CLOSE, MPI_MODE_UNIQUE_OPEN
+      INTEGER MPI_MODE_CREATE, MPI_MODE_EXCL
+      INTEGER MPI_MODE_APPEND, MPI_MODE_SEQUENTIAL
+      PARAMETER (MPI_MODE_RDONLY=2, MPI_MODE_RDWR=8, MPI_MODE_WRONLY=4)
+      PARAMETER (MPI_MODE_CREATE=1, MPI_MODE_DELETE_ON_CLOSE=16)
+      PARAMETER (MPI_MODE_UNIQUE_OPEN=32, MPI_MODE_EXCL=64)
+      PARAMETER (MPI_MODE_APPEND=128, MPI_MODE_SEQUENTIAL=256)
+!
+      INTEGER MPI_FILE_NULL
+      PARAMETER (MPI_FILE_NULL=0)
+!
+      INTEGER MPI_MAX_DATAREP_STRING
+      PARAMETER (MPI_MAX_DATAREP_STRING=128)
+!
+      INTEGER MPI_SEEK_SET, MPI_SEEK_CUR, MPI_SEEK_END
+      PARAMETER (MPI_SEEK_SET=600, MPI_SEEK_CUR=602, MPI_SEEK_END=604)
+!
+      INTEGER MPIO_REQUEST_NULL
+      PARAMETER (MPIO_REQUEST_NULL=0)
+!
+      integer MPI_DISPLACEMENT_CURRENT
+      PARAMETER (MPI_DISPLACEMENT_CURRENT=-54278278)
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+!
+>>>>>>> 1.7
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/pgapack.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/pgapack.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/pgapack.h	(revision 6168)
@@ -0,0 +1,983 @@
+/******************************************************************************
+*     FILE: pgapack.h: This file contains all constant and structure
+*                      definitions definitions for PGAPack as well as all
+*                      function declarations.
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+******************************************************************************/
+
+#ifndef __PGA_PACK_H_
+#define __PGA_PACK_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <time.h>
+#include <limits.h>
+#include <float.h>
+#include <string.h> 
+#include <ctype.h>
+#include <mpi.h>
+
+
+
+/*  If OPTIMIZED, remove various sanity checks, and debug output.
+ *
+ *  PGADebugEntered(a)      - Print a debug message about entering "a"
+ *  PGADebugExited(a)       - Print a debug message about exiting "a"
+ *  PGAFailIfNotSetup(a)    - Fail fatally if PGASetUp has not been called
+ *  PGAFailIfSetup(a)       - Fail fatally if PGASetUp has been called
+ *  PGACheckDataType(a, D)  - Fail fatally if the datatype is not D
+ */
+#ifndef OPTIMIZE
+#define OPTIMIZE 0
+
+
+#define PGADebugEntered(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_ENTERED, a, "Entered", PGA_VOID, NULL)
+#define PGADebugExited(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_EXIT, a, "Exited", PGA_VOID, NULL)
+#define PGAFailIfNotSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_FALSE) \
+     PGAError(ctx, "PGASetUp must be called before " Name, \
+              PGA_FATAL, PGA_VOID, NULL)
+#define PGAFailIfSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_TRUE) \
+     PGAError(ctx, Name " must be called before PGASetUp", PGA_FATAL, \
+	      PGA_VOID, NULL)
+#define PGACheckDataType(Name, DataType) \
+  if (ctx->ga.datatype != DataType) \
+     PGAError(ctx, "DataType is incorrect for " Name,PGA_FATAL,PGA_VOID,NULL)
+
+#else
+#undef OPTIMIZE
+#define OPTIMIZE 1
+#define PGADebugPrint(a,b,c,x,y,z) ;
+#define PGADebugEntered(a) ;
+#define PGADebugExited(a) ;
+#define PGAFailIfNotSetUp(Name)  ;
+#define PGAFailIfSetUp(Name)  ;
+#define PGACheckDataType(Name, DataType) ;
+#endif
+
+/*****************************************
+*           BINARY   MACROS              *
+*****************************************/
+#ifndef WL
+#error WL must be defined on the command line!
+#endif
+
+#define ONEL        ((PGABinary)1)
+#define BIT(x,y)    (y&(ONEL<<((WL-1)-(x))))    /* true if bit is 1,         */
+#define SET(x,y)    (y|=(ONEL<<((WL-1)-(x))))   /* set a bit to 1            */
+#define UNSET(x,y)  (y&=(~(ONEL<<((WL-1)-(x)))))/* set a bit to 0, clear     */
+#define TOGGLE(x,y) (y^=(ONEL<<((WL-1)-(x))))   /* complement a bits value   */
+#define INDEX(ix,bx,bit,WL) ix=bit/WL;bx=bit%WL /* map global column (bit)   */
+                                                /* to word (ix) and bit (bx) */
+
+/*****************************************
+*       ABSTRACT DATA TYPES              *
+*****************************************/
+#define PGA_DATATYPE_BINARY      1    /* Array of unsigned ints            */
+                                      /* parsed into bits    : binary.c    */
+#define PGA_DATATYPE_INTEGER     2    /* Array of ints       : integer.c   */
+#define PGA_DATATYPE_REAL        3    /* Array of doubles    : real.c      */
+#define PGA_DATATYPE_CHARACTER   4    /* Array of characters : character.c */
+#define PGA_DATATYPE_USER        5    /*  --user defined--                 */
+    
+#define PGABinary                unsigned long
+#define PGAInteger               signed long int
+#define PGAReal                  double
+#define PGACharacter             signed char
+
+#define PGA_INT                   1
+#define PGA_DOUBLE                2
+#define PGA_CHAR                  3
+#define PGA_VOID                  4
+
+    
+/*****************************************
+*              BOOLEANS                  *
+*****************************************/
+#define PGA_TRUE                   1
+#define PGA_FALSE                  0
+
+/*****************************************
+*                FLAGS                   *
+*****************************************/
+#define PGA_FATAL                 1
+#define PGA_WARNING               2
+
+/*****************************************
+*             MISC CONSTANT              *
+*****************************************/
+#define PGA_TEMP1                -1138
+#define PGA_TEMP2                -4239
+#define PGA_TEMP3                -4238
+
+#define PGA_OLDPOP               -6728
+#define PGA_NEWPOP               -8376
+
+#define PGA_UNINITIALIZED_INT    -3827
+#define PGA_UNINITIALIZED_DOUBLE -968.3827
+
+/*****************************************
+*        DEBUG LEVELS                    *
+*****************************************/
+#define PGA_DEBUG_ENTERED        12
+#define PGA_DEBUG_EXIT           13
+#define PGA_DEBUG_MALLOC         80
+#define PGA_DEBUG_PRINTVAR       82
+#define PGA_DEBUG_SEND           22
+#define PGA_DEBUG_RECV           23
+#define PGA_DEBUG_MAXPGAPACKFUNCTIONS	300
+#define PGA_DEBUG_MAXFLAGS       1000
+
+/*****************************************
+*           DIRECTION                    *
+*****************************************/
+#define PGA_MAXIMIZE            1    /* specify direction for fitness calc  */
+#define PGA_MINIMIZE            2    /* specify direction for fitness calc  */
+    
+/*****************************************
+*         STOPPING CRITERIA              *
+*****************************************/
+#define PGA_STOP_MAXITER        1    /* Stop: for maximum iterations      */
+#define PGA_STOP_NOCHANGE       2    /* Stop: no change in best string    */
+#define PGA_STOP_TOOSIMILAR     4    /* Stop: homogeneous population      */
+
+/*****************************************
+*            CROSSOVER                   *
+*****************************************/
+#define PGA_CROSSOVER_ONEPT     1    /* One point crossover                */
+#define PGA_CROSSOVER_TWOPT     2    /* Two point crossover                */
+#define PGA_CROSSOVER_UNIFORM   3    /* Uniform   crossover                */
+
+/*****************************************
+*            SELECTION                   *
+*****************************************/
+#define PGA_SELECT_PROPORTIONAL 1    /* proportional selection              */
+#define PGA_SELECT_SUS          2    /* stochastic universal selection      */
+#define PGA_SELECT_TOURNAMENT   3    /* tournament selection                */
+#define PGA_SELECT_PTOURNAMENT  4    /* probabilistic tournament selection  */
+
+/*****************************************
+*            FITNESS                     *
+*****************************************/
+#define PGA_FITNESS_RAW         1    /* use raw fitness (evaluation)        */
+#define PGA_FITNESS_NORMAL      2    /* linear normalization fitness        */
+#define PGA_FITNESS_RANKING     3    /* linear ranking fitness              */
+
+/*****************************************
+*            FITNESS (MINIMIZATION)      *
+*****************************************/
+#define PGA_FITNESSMIN_RECIPROCAL  1 /* reciprocal fitness                  */
+#define PGA_FITNESSMIN_CMAX        2 /* cmax fitness                        */
+
+/*****************************************
+*               MUTATION                 *
+*****************************************/
+#define PGA_MUTATION_CONSTANT   1    /* Real/Integer: Fixed value           */
+#define PGA_MUTATION_RANGE      2    /* Real/Integer: Uniform range         */
+#define PGA_MUTATION_UNIFORM    3    /* Real: +- Uniform random no.         */
+#define PGA_MUTATION_GAUSSIAN   4    /* Real: +- Gaussian random no.        */
+#define PGA_MUTATION_PERMUTE    5    /* Integer: Permutation (swap)         */
+    
+/*****************************************
+*        POPULATION REPLACEMENT          *
+*****************************************/
+#define PGA_POPREPL_BEST         1   /* Select best   string                */
+#define PGA_POPREPL_RANDOM_NOREP 2   /* Select random string w/o replacement*/
+#define PGA_POPREPL_RANDOM_REP   3   /* Select random string w/  replacement*/
+
+/****************************************
+ *       REPORT OPTIONS                 *
+ ****************************************/
+#define PGA_REPORT_ONLINE        1    /* Print the online analysis           */
+#define PGA_REPORT_OFFLINE       2    /* Print the offline analysis          */
+#define PGA_REPORT_HAMMING       4    /* Print the Hamming distance          */
+#define PGA_REPORT_STRING        8    /* Print the string                    */
+#define PGA_REPORT_WORST         16   /* Print the worst individual          */
+#define PGA_REPORT_AVERAGE       32   /* Print the average of the population */
+
+/*****************************************
+*            RANDOMIZER                  *
+*****************************************/
+#define PGA_RINIT_PERCENT        1  /* real percent offset                   */
+#define PGA_RINIT_RANGE          2  /* real range                            */
+#define PGA_IINIT_PERMUTE        1  /* integer permutation                   */
+#define PGA_IINIT_RANGE          2  /* integer range (nonunique)             */
+#define PGA_CINIT_LOWER          1  /* all lowercase letters                 */
+#define PGA_CINIT_UPPER          2  /* all uppercase letters                 */
+#define PGA_CINIT_MIXED          3  /* both upper and lower case letters     */
+
+/*****************************************
+*         SET USER FUNCTION              *
+*****************************************/
+#define PGA_USERFUNCTION_CREATESTRING            1
+#define PGA_USERFUNCTION_MUTATION                2
+#define PGA_USERFUNCTION_CROSSOVER               3
+#define PGA_USERFUNCTION_PRINTSTRING             4
+#define PGA_USERFUNCTION_COPYSTRING              5
+#define PGA_USERFUNCTION_DUPLICATE               6
+#define PGA_USERFUNCTION_INITSTRING              7
+#define PGA_USERFUNCTION_BUILDDATATYPE           8
+#define PGA_USERFUNCTION_STOPCOND                9
+#define PGA_USERFUNCTION_ENDOFGEN                10
+#define PGA_USERFUNCTION_RANKING                 11
+#define PGA_USERFUNCTION_FITNESS                 12
+#define PGA_USERFUNCTION_SELECT                  13
+#define PGA_USERFUNCTION_SORTPOP                  100
+
+/******* EHW Modification ************************/
+#define PGA_USERFUNCTION_SETTEMP                 14
+#define PGA_USERFUNCTION_ENDOFREPFCN             15
+#define PGA_USERFUNCTION_DESTROYUD               16
+
+#define PGA_USERFUNCTION_INITUSERCTX             17
+#define PGA_USERFUNCTION_KILLUSERCTX             18
+#define PGA_NUM_USERFUNCTIONS                    18
+/*************************************************/
+
+/*****************************************
+*           MPI SEND/RECV TAGS           *
+*****************************************/
+#define PGA_COMM_STRINGTOEVAL        1  /* MPI tag for sending string       */
+#define PGA_COMM_EVALOFSTRING        2  /* MPI tag for returning evaluation */
+#define PGA_COMM_DONEWITHEVALS       3  /* MPI tag for ending parallel eval */
+
+
+
+
+/*****************************************
+*       INDIVIDUAL STRUTURE              *
+*****************************************/
+
+typedef struct {                    /* primary population data structure   */
+  double evalfunc;                  /* evaluation function value           */
+  double fitness;                   /* fitness    function value           */
+  int    evaluptodate;              /* flag whether evalfunc is current    */
+  void   *chrom;                    /* pointer to the GA string            */
+
+/*****************  EHW Project Modifications  **********************/
+  void   *UserData;                 /* pointer to circuit response         */
+/********************************************************************/
+} PGAIndividual;
+
+
+/*****************************************
+*          GA ALGORITHM STRUCTURE        *
+*****************************************/
+typedef struct {
+    int datatype;            /* data type: binary, integer, or real       */
+    int optdir;              /* direction of optimization                 */
+    int tw;                  /* total number of words, full + partial     */
+    int fw;                  /* number of full (WL length) words          */
+    int eb;                  /* number of extra bits in last NOT full word*/
+    int PopSize;             /* Number of strings to use                  */
+    int StringLen;           /* string lengths                            */
+    int StoppingRule;        /* Termination Criteria                      */
+    int MaxIter;             /* Maximum number of iterations to run       */
+    int MaxNoChange;         /* # of iters with no change before stopping */
+    int MaxSimilarity;       /* % of pop the same before stopping         */
+    int NumReplace;          /* Number of string to replace each gen      */
+    int PopReplace;          /* Method of choosing ind.s to copy to newpop*/
+    int iter;                /* iteration (generation) counter            */
+    int ItersOfSame;         /* # iters with no change in best            */
+    int PercentSame;         /* % of pop that is homogeneous              */
+    int NoDuplicates;        /* Don't allow duplicate strings             */
+    int CrossoverType;       /* Type of crossover for genetic algorithm   */
+    int SelectType;          /* Type of selection for genetic algorithm   */
+    int SelectIndex;         /* index of Select for next two individuals  */
+    int FitnessType;         /* Type of fitness transformation used       */
+    int FitnessMinType;      /* Transformation for minimization problems  */
+    int MutateOnlyNoCross;   /* Mutate only strings not from crossover    */
+    int MutationType;        /* Type of mutation used                     */
+    int MutateIntegerValue;  /* Multiplier to mutate Integer strings with */
+    int MutateBoundedFlag;   /* Confine integer alleles to given range    */
+    double MutateRealValue;  /* Multiplier to mutate Real strings with    */
+    double MutationProb;     /* Starting mutation probability             */
+    double CrossoverProb;    /* Crossover probability                     */
+    double UniformCrossProb; /* Prob of bit select in uniform crossover   */
+    double PTournamentProb;  /* Prob of selection in Prob. Tournament     */
+    double FitnessRankMax;   /* MAX value for use in ranking              */
+    double FitnessCmaxValue; /* Cmax value used to convert minimizations  */
+    double restartAlleleProb;/* prob of changing an allele in a restart   */
+    int restart;             /* whether to use the restart operator       */
+    int restartFreq;         /* frequency with which to restart           */
+    int *selected;           /* array of indices for selection            */
+    int *sorted;             /* array of sorted individual indices        */
+    PGAIndividual *oldpop;   /* pointer to population (old)               */
+    PGAIndividual *newpop;   /* pointer to population (new)               */
+
+/********************** EHW project modifications *********************/
+    int sUD;                 /* Size of User Data array structure     */
+/**********************************************************************/
+} PGAAlgorithm;
+
+
+
+/*****************************************
+*        OPERATIONS STRUCTURES           *
+*****************************************/
+typedef struct PGAContext PGAContext;
+typedef struct {
+    void         (*CreateString)(PGAContext *, int, int, int);
+    int          (*Mutation)(PGAContext *, int, int, double);
+    void         (*Crossover)(PGAContext *, int, int, int, int, int, int);
+    void         (*PrintString)(PGAContext *, FILE *, int, int);
+    void         (*CopyString)(PGAContext *, int, int, int, int);
+    int          (*Duplicate)(PGAContext *, int, int, int, int);
+    void         (*InitString)(PGAContext *, int, int);
+    MPI_Datatype (*BuildDatatype)(PGAContext *, int, int);
+    int          (*StopCond)(PGAContext *);
+    void         (*EndOfGen)(PGAContext *);
+
+/******************* DRH Mod for MMPAT ********************************/
+    void         (*Rank)(PGAContext *, int); /* Calls a custom */
+                                                   /*ranking function*/
+    void         (*Fitness)(PGAContext *, int); /* Calls a custom fitness eval*/
+    void         (*Select) (PGAContext *, int); /* Calls a custom selection */
+/*********************************************/
+/* new added by Lu Yang */
+    void         (*SortPop) (PGAContext *, int); /* Calls a custom sort pop */
+/*********************************************/
+                                                /* function                 */
+/*********************************************************************/
+
+/********************** EHW project modifications *********************/
+    void         (*SetTemp)(PGAContext *); /* Sets the Temperature    */
+                                           /*  Parameter              */
+/**********************************************************************/
+
+/*** SNS Addition, it sets the reproductive flags *************/
+/*** This may be part of The Chromosome User Data ************/
+
+ /* Gets executed when  PGASetEvaluationUpToDateFlag  is called
+      and the flag is set to PGA_FALSE  Is called so that the user
+      data is updated whenever the Evaluation up to date flag is set to
+      false 
+   */
+    void 	 (*EndOfRepFcn)(PGAContext *,int,int);
+
+    void 	 (*DestroyUD)(PGAContext *,int,int);
+   /* CHSL: Executed before the GA is run (gen 0) */
+    void         (*InitUserCtx)(PGAContext *);
+   /* CHSL: Executed after the GA is finished (end of last gen) */
+    void         (*KillUserCtx)(PGAContext *);
+ 
+
+
+/**********************************************************************/
+
+
+
+} PGACOperations;
+
+typedef struct {
+    int          (*Mutation)(void *, void *, void *, void *);
+    void         (*Crossover)(void *, void *, void *, void *, void *, void *, void *);
+    void         (*PrintString)(void *, void *, void *, void *);
+    void         (*CopyString)(void *, void *, void *, void *, void *);
+    int          (*Duplicate)(void *, void *, void *, void *, void *);
+    void         (*InitString)(void *, void *, void *);
+    int          (*StopCond)(void *);
+    void         (*EndOfGen)(void *);
+/******************* DRH Mod for MMPAT ********************************/
+    void         (*Rank)( void *, void *); /* calls a custom  */
+                                                 /* ranking function*/
+    void         (*Fitness)( void *, void *); /* Calls a custom fitness eval*/
+    void         (*Select )( void *, void *); /* Calls a custom selection fn*/
+/*********************************************/
+/* new added by Lu Yang */
+    void         (*SortPop) (void *, void *); /* Calls a custom sort pop */
+/*********************************************************************/
+
+/********************** EHW project modifications *********************/
+    void         (*SetTemp)(void *);       /* Sets the Temperature    */
+                                           /*  Parameter              */
+/**********************************************************************/
+
+/*** SNS Addition, it sets the reproductive flags *************/
+/*** This may be part of The Chromosome User Data ************/
+    void 	 (*EndOfRepFcn)(void *,void *,void *);
+    void 	 (*DestroyUD)(void *,void *,void *);
+
+  /* CHSL: Executed before the GA is run (gen 0) */
+   void         (*InitUserCtx)(void *);
+   /* CHSL: Executed after the GA is finished (end of last gen) */
+   void         (*KillUserCtx)(void *);
+
+/**********************************************************************/
+
+} PGAFortranOperations;
+
+/*****************************************
+*          PARALLEL STRUCTURE            *
+*****************************************/
+typedef struct {
+    int      MPIAlreadyInit;   /* Flag whether MPI was previously initialized*/
+    int      NumIslands;       /* Number of islands in island model          */
+    int      NumDemes;         /* Number of demes in neighborhood model      */
+    MPI_Comm DefaultComm;      /* Default communicator for PGARun            */
+    int      MPIStubLibrary;   /* Boolean: real or stub version of MPI       */
+} PGAParallel;
+
+/*****************************************
+*          REPORT STRUCTURE              *
+*****************************************/
+typedef struct {
+     int    PrintFreq;               /* How often to print statistics reports*/
+     int    PrintOptions;
+     double Offline;
+     double Online;
+     double Average;
+     double Best;
+     time_t starttime;
+} PGAReport;
+
+
+/*****************************************
+*          SYSTEM STRUCTURE              *
+*****************************************/
+typedef struct {
+    int    UserFortran;             /* user routines in Fortran or C?        */
+    int    SetUpCalled;             /* has PGASetUp been called?             */
+    int    PGAMaxInt;               /* largest  int     of machine           */
+    int    PGAMinInt;               /* smallest int     of machine           */
+    double PGAMaxDouble;            /* largest  double  of machine           */
+    double PGAMinDouble;            /* smallest double  of machine           */
+} PGASystem;
+
+
+/*****************************************
+*          DEBUG STRUCTURE               *
+*****************************************/
+typedef struct {
+    int PGADebugFlags[PGA_DEBUG_MAXFLAGS];
+} PGADebug;
+
+/*****************************************
+*      INITIALIZATION STRUCTURE          *
+*****************************************/
+typedef struct {
+    int    RandomInit;             /* flag whether to randomize strings    */
+    double BinaryProbability;      /* probability that a Bit will be 1     */
+    int    RealType;               /* type of real      initialization     */
+    int    IntegerType;            /* type of integer   initialization     */
+    int    CharacterType;          /* type of character initialization     */
+    int    *IntegerMin;            /* minimum of range of integers         */
+    int    *IntegerMax;            /* maximum of range of integers         */
+    double *RealMin;               /* minimum of range of reals            */
+    double *RealMax;               /* maximum of range of reals            */
+    int    RandomSeed;             /* integer to seed random numbers with  */
+} PGAInitialize;
+
+/*****************************************
+*      SCRATCH DATA STRUCTURES           *
+*****************************************/
+typedef struct {
+    int    *intscratch;            /* integer-scratch space                 */
+    double *dblscratch;            /* double- scratch space                 */
+} PGAScratch;
+
+/*****************************************
+*          CONTEXT STRUCTURE             *
+*****************************************/
+struct PGAContext {
+    PGAAlgorithm           ga;
+    PGACOperations         cops;
+    PGAFortranOperations   fops;
+    PGAParallel            par;
+    PGAReport              rep;
+    PGASystem              sys;
+    PGADebug               debug;
+    PGAInitialize          init;
+    PGAScratch             scratch;
+
+    /*************************
+     *   EHW ADDITION        *
+     *************************/
+    void                   *inputex;
+
+};
+
+/*****************************************
+*          binary.c
+*****************************************/
+
+
+
+void PGASetBinaryAllele ( PGAContext *ctx, int p, int pop, int i, int val );
+int PGAGetBinaryAllele ( PGAContext *ctx, int p, int pop, int i );
+void PGASetBinaryInitProb ( PGAContext *ctx, double probability );
+double PGAGetBinaryInitProb (PGAContext *ctx);
+void PGABinaryCreateString(PGAContext *ctx, int p, int pop, int initflag);
+int PGABinaryMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGABinaryOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryTwoptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                               int c1, int c2, int pop2);
+void PGABinaryPrintString( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGABinaryCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGABinaryDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGABinaryInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGABinaryBuildDatatype(PGAContext *ctx, int p, int pop);
+int PGABinaryHammingDistance ( PGAContext *ctx, PGABinary *s1, PGABinary *s2 );
+void PGABinaryPrint( PGAContext *ctx, FILE *fp, PGABinary *chrom, int nb );
+
+/*****************************************
+*          char.c
+*****************************************/
+
+
+void PGASetCharacterAllele (PGAContext *ctx, int p, int pop, int i, char value);
+char PGAGetCharacterAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetCharacterInitType(PGAContext *ctx, int value);
+void PGACharacterCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGACharacterMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGACharacterOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGACharacterUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGACharacterCopyString (PGAContext *ctx, int p1, int pop1, int p2,
+                             int pop2);
+int PGACharacterDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGACharacterInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGACharacterBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          cmdline.c
+*****************************************/
+
+
+void PGAReadCmdLine( PGAContext *ctx, int *argc, char **argv );
+void PGAParseDebugArg(PGAContext *ctx, char *st);
+void PGAStripArgs(char **argv, int *argc, int *c, int num);
+
+/*****************************************
+*          create.c
+*****************************************/
+
+PGAContext *PGACreate ( int *argc, char **argv,
+                        int datatype, int len, int maxormin );
+void PGASetUp ( PGAContext *ctx );
+void PGASetRandomInitFlag(PGAContext *ctx, int RandomBoolean);
+int PGAGetRandomInitFlag (PGAContext *ctx);
+void PGACreatePop (PGAContext *ctx, int pop);
+void PGACreateIndividual (PGAContext *ctx, int p, int pop, int initflag);
+
+/*****************************************
+*          cross.c
+*****************************************/
+
+void PGACrossover ( PGAContext *ctx, int p1, int p2, int pop1,
+                    int c1, int c2, int pop2 );
+int PGAGetCrossoverType (PGAContext *ctx);
+double PGAGetCrossoverProb (PGAContext *ctx);
+double PGAGetUniformCrossoverProb (PGAContext *ctx);
+void PGASetCrossoverType (PGAContext *ctx, int crossover_type);
+void PGASetCrossoverProb( PGAContext *ctx, double crossover_prob);
+void PGASetUniformCrossoverProb( PGAContext *ctx, double uniform_cross_prob);
+
+/*****************************************
+*          debug.c
+*****************************************/
+
+
+void PGASortFuncNameIndex(PGAContext *ctx);
+#if OPTIMIZE==0
+void PGADebugPrint( PGAContext *ctx, int level, char *funcname,
+                   char *msg, int datatype, void *data );
+#endif
+void PGASetDebugLevel(PGAContext *ctx, int level);
+void PGAClearDebugLevel(PGAContext *ctx, int level);
+void PGASetDebugLevelByName(PGAContext *ctx, char *funcname);
+void PGAClearDebugLevelByName(PGAContext *ctx, char *funcname);
+int PGAGetDebugLevelOfName(PGAContext *ctx, char *funcname);
+int PGAGetDebugFlag(PGAContext *ctx, char *funcname);
+void PGASetDebugFlag11(PGAContext *ctx, int Flag);
+void PGASetDebugFlag20(PGAContext *ctx, int Flag);
+void PGASetDebugFlag21(PGAContext *ctx, int Flag);
+void PGASetDebugFlag30(PGAContext *ctx, int Flag);
+void PGASetDebugFlag32(PGAContext *ctx, int Flag);
+void PGASetDebugFlag34(PGAContext *ctx, int Flag);
+void PGASetDebugFlag36(PGAContext *ctx, int Flag);
+void PGASetDebugFlag40(PGAContext *ctx, int Flag);
+void PGASetDebugFlag42(PGAContext *ctx, int Flag);
+void PGASetDebugFlag44(PGAContext *ctx, int Flag);
+void PGASetDebugFlag46(PGAContext *ctx, int Flag);
+void PGASetDebugFlag48(PGAContext *ctx, int Flag);
+void PGASetDebugFlag50(PGAContext *ctx, int Flag);
+void PGASetDebugFlag52(PGAContext *ctx, int Flag);
+void PGASetDebugFlag54(PGAContext *ctx, int Flag);
+void PGASetDebugFlag56(PGAContext *ctx, int Flag);
+void PGASetDebugFlag58(PGAContext *ctx, int Flag);
+void PGASetDebugFlag60(PGAContext *ctx, int Flag);
+void PGASetDebugFlag62(PGAContext *ctx, int Flag);
+void PGASetDebugFlag64(PGAContext *ctx, int Flag);
+void PGASetDebugFlag66(PGAContext *ctx, int Flag);
+void PGAPrintDebugOptions(PGAContext *ctx);
+
+/*****************************************
+*          duplcate.c
+*****************************************/
+
+
+int PGADuplicate(PGAContext *ctx, int p, int pop1, int pop2, int n);
+void PGAChange( PGAContext *ctx, int p, int pop );
+void PGASetNoDuplicatesFlag( PGAContext *ctx, int no_dup);
+int PGAGetNoDuplicatesFlag (PGAContext *ctx);
+
+/*****************************************
+*          evaluate.c
+*****************************************/
+
+
+void PGASetEvaluation ( PGAContext *ctx, int p, int pop, double val );
+double PGAGetEvaluation ( PGAContext *ctx, int p, int pop );
+void PGASetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop,
+                                   int status );
+int PGAGetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop );
+double PGAGetRealFromBinary(PGAContext *ctx, int p, int pop, int start,
+                            int end, double lower, double upper);
+double PGAGetRealFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                  int end, double lower, double upper);
+void PGAEncodeRealAsBinary(PGAContext *ctx, int p, int pop, int start,
+                               int end, double low, double high, double val);
+void PGAEncodeRealAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                              int end, double low, double high, double val);
+int PGAGetIntegerFromBinary(PGAContext *ctx, int p, int pop, int start,
+                                 int end);
+int PGAGetIntegerFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                   int end);
+void PGAEncodeIntegerAsBinary(PGAContext *ctx, int p, int pop, int start,
+                              int end, int val);
+void PGAEncodeIntegerAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                int end, int val);
+double PGAMapIntegerToReal (PGAContext *ctx, int v, int a, int b, double l,
+                            double u);
+int PGAMapRealToInteger(PGAContext *ctx, double r, double l, double u, int a,
+                        int b);
+
+/*****************************************
+*          fitness.c
+*****************************************/
+
+
+void PGAFitness ( PGAContext *ctx, int popindex );
+int PGARank( PGAContext *ctx, int p, int *order, int n );
+double PGAGetFitness ( PGAContext *ctx, int p, int pop );
+int PGAGetFitnessType (PGAContext *ctx);
+int PGAGetFitnessMinType (PGAContext *ctx);
+double PGAGetMaxFitnessRank (PGAContext *ctx);
+void PGASetFitnessType( PGAContext *ctx, int fitness_type);
+void PGASetFitnessMinType( PGAContext *ctx, int fitness_type);
+void PGASetMaxFitnessRank( PGAContext *ctx, double fitness_rank_max);
+void PGAFitnessLinearNormal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessLinearRank ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinReciprocal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinCmax ( PGAContext *ctx, PGAIndividual *pop );
+void PGASetFitnessCmaxValue( PGAContext *ctx, double val);
+double PGAGetFitnessCmaxValue (PGAContext *ctx);
+
+/*****************************************
+*          hamming.c
+*****************************************/
+
+double PGAHammingDistance( PGAContext *ctx, int popindex);
+
+/*****************************************
+*          heap.c
+*****************************************/
+
+
+void PGADblHeapSort ( PGAContext *ctx, double *a, int *idx, int n );
+void PGAIntHeapSort ( PGAContext *ctx, int *a, int *idx, int n );
+
+/*****************************************
+*          integer.c
+*****************************************/
+
+
+
+void PGASetIntegerAllele (PGAContext *ctx, int p, int pop, int i, int value);
+int PGAGetIntegerAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetIntegerInitPermute ( PGAContext *ctx, int min, int max);
+void PGASetIntegerInitRange (PGAContext *ctx, int *min, int *max);
+int PGAGetIntegerInitType (PGAContext *ctx);
+int PGAGetMinIntegerInitValue (PGAContext *ctx, int i);
+int PGAGetMaxIntegerInitValue (PGAContext *ctx, int i);
+void PGAIntegerCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGAIntegerMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGAIntegerOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGAIntegerPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGAIntegerCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGAIntegerDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGAIntegerInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGAIntegerBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          mpi_stub.c
+*****************************************/
+
+
+/*****************************************
+*          mutation.c
+*****************************************/
+
+
+
+int PGAMutate(PGAContext *ctx, int p, int pop);
+void PGASetMutationType( PGAContext *ctx, int mutation_type);
+int PGAGetMutationType (PGAContext *ctx);
+void PGASetMutationRealValue( PGAContext *ctx, double val);
+double PGAGetMutationRealValue (PGAContext *ctx);
+void PGASetMutationIntegerValue( PGAContext *ctx, int val);
+int PGAGetMutationIntegerValue (PGAContext *ctx);
+void PGASetMutationBoundedFlag(PGAContext *ctx, int val);
+int PGAGetMutationBoundedFlag(PGAContext *ctx);
+void PGASetMutationProb(PGAContext *ctx, double mutation_prob);
+double PGAGetMutationProb (PGAContext *ctx);
+
+/*****************************************
+*          parallel.c
+*****************************************/
+
+
+  
+void PGARunGM(PGAContext *ctx, double (*f)(PGAContext *, int, int),
+	      MPI_Comm comm);
+void PGAEvaluateSeq(PGAContext *ctx, int pop,
+		    double (*f)(PGAContext *, int, int));
+void PGAEvaluateCoop(PGAContext *ctx, int pop,
+		     double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluateMS(PGAContext *ctx, int pop,
+		   double (*f)(PGAContext *c, int p, int pop), MPI_Comm comm);
+void PGAEvaluateSlave(PGAContext *ctx, int pop,
+		      double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluate(PGAContext *ctx, int pop,
+		 double (*f)(PGAContext *, int, int), MPI_Comm comm);
+MPI_Datatype PGABuildDatatype(PGAContext *ctx, int p, int pop);
+void PGASendIndividual(PGAContext *ctx, int p, int pop, int dest, int tag,
+                       MPI_Comm comm);
+void PGAReceiveIndividual(PGAContext *ctx, int p, int pop, int source, int tag,
+                          MPI_Comm comm, MPI_Status *status);
+void PGASendReceiveIndividual(PGAContext *ctx, int send_p, int send_pop,
+                              int dest, int send_tag, int recv_p, int recv_pop,
+                              int source, int recv_tag, MPI_Comm comm,
+                              MPI_Status *status);
+void PGARunIM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+void PGARunNM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+int PGAGetRank (PGAContext *ctx, MPI_Comm comm);
+int PGAGetNumProcs (PGAContext *ctx, MPI_Comm comm);
+void PGASetNumIslands( PGAContext *ctx, int n);
+int PGAGetNumIslands (PGAContext *ctx);
+void PGASetNumDemes( PGAContext *ctx, int numdemes);
+int PGAGetNumDemes (PGAContext *ctx);
+void PGASetCommunicator( PGAContext *ctx, MPI_Comm comm);
+MPI_Comm PGAGetCommunicator( PGAContext *ctx);
+
+/*****************************************
+*          pga.c
+*****************************************/
+
+
+void PGARun(PGAContext *ctx, double (*evaluate)(PGAContext *c, int p, int pop));
+void PGARunMutationAndCrossover (PGAContext *ctx, int oldpop, int newpop);
+void PGARunMutationOrCrossover ( PGAContext *ctx, int oldpop, int newpop );
+void PGAUpdateGeneration(PGAContext *ctx, MPI_Comm comm);
+int PGAGetDataType (PGAContext *ctx);
+int PGAGetOptDirFlag (PGAContext *ctx);
+int PGAGetStringLength (PGAContext *ctx);
+int PGAGetVariableStringLength (PGAContext *ctx, int p, int pop);
+int PGAGetGAIterValue (PGAContext *ctx);
+void PGASetMutationOrCrossoverFlag( PGAContext *ctx, int flag);
+void PGASetMutationAndCrossoverFlag( PGAContext *ctx, int flag);
+int PGAGetMutationOrCrossoverFlag (PGAContext *ctx);
+int PGAGetMutationAndCrossoverFlag (PGAContext *ctx);
+
+/*****************************************
+*          pop.c
+*****************************************/
+
+
+void PGASortPop ( PGAContext *ctx, int pop );
+int PGAGetPopSize (PGAContext *ctx);
+int PGAGetNumReplaceValue (PGAContext *ctx);
+int PGAGetPopReplaceType (PGAContext *ctx);     
+int PGAGetSortedPopIndex ( PGAContext *ctx, int n );
+void PGASetPopSize (PGAContext *ctx, int popsize);
+void PGASetNumReplaceValue( PGAContext *ctx, int pop_replace);
+void PGASetPopReplaceType( PGAContext *ctx, int pop_replace);
+
+/*****************************************
+*          random.c
+*****************************************/
+
+
+int PGARandomFlip ( PGAContext *ctx, double p );
+int PGARandomInterval( PGAContext *ctx, int start, int end);
+double PGARandom01( PGAContext *ctx, int newseed );
+double PGARandomUniform( PGAContext *ctx, double start, double end);
+double PGARandomGaussian( PGAContext *ctx, double mean, double sigma);
+int PGAGetRandomSeed(PGAContext *ctx);
+void PGASetRandomSeed(PGAContext *ctx, int seed);
+
+/*****************************************
+*          real.c
+*****************************************/
+
+
+void PGASetRealAllele (PGAContext *ctx, int p, int pop, int i, double value);
+double PGAGetRealAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetRealInitPercent ( PGAContext *ctx, double *median, double *percent);
+void PGASetRealInitRange (PGAContext *ctx, double *min, double *max);
+double PGAGetMinRealInitValue (PGAContext *ctx, int i);
+double PGAGetMaxRealInitValue (PGAContext *ctx, int i);
+int PGAGetRealInitType (PGAContext *ctx);
+void PGARealCreateString (PGAContext *ctx, int p, int pop, int initflag);
+int PGARealMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGARealOneptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealUniformCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                             int c1, int c2, int pop2);
+void PGARealPrintString (PGAContext *ctx, FILE *fp, int p, int pop);
+void PGARealCopyString ( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGARealDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGARealInitString ( PGAContext *ctx, int p, int pop);
+MPI_Datatype PGARealBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          report.c
+*****************************************/
+
+
+void PGAPrintReport(PGAContext *ctx, FILE *fp, int pop);
+void PGASetPrintOptions (PGAContext *ctx, int option);
+void PGASetPrintFrequencyValue( PGAContext *ctx, int print_freq);
+int PGAGetPrintFrequencyValue (PGAContext *ctx);
+void PGAPrintPopulation ( PGAContext *ctx, FILE *fp, int pop );
+void PGAPrintIndividual ( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGAPrintString ( PGAContext *ctx, FILE *file, int p, int pop );
+void PGAPrintContextVariable ( PGAContext *ctx, FILE *fp );
+
+/*****************************************
+*          restart.c
+*****************************************/
+
+void PGARestart(PGAContext *ctx, int source_pop, int dest_pop);
+void PGASetRestartFlag(PGAContext *ctx, int val);
+int PGAGetRestartFlag(PGAContext *ctx);
+void PGASetRestartFrequencyValue(PGAContext *ctx, int numiter);
+int PGAGetRestartFrequencyValue(PGAContext *ctx);
+void PGASetRestartAlleleChangeProb(PGAContext *ctx, double prob);
+double PGAGetRestartAlleleChangeProb(PGAContext *ctx);
+
+/*****************************************
+*          select.c
+*****************************************/
+
+void PGASelect( PGAContext *ctx, int popix );
+int PGASelectNextIndex ( PGAContext *ctx );
+void PGASetSelectType( PGAContext *ctx, int select_type);
+int PGAGetSelectType (PGAContext *ctx);
+void PGASetPTournamentProb(PGAContext *ctx, double ptournament_prob);
+double PGAGetPTournamentProb(PGAContext *ctx);
+int PGASelectProportional(PGAContext *ctx, PGAIndividual *pop);
+void PGASelectSUS( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectTournament( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectPTournament( PGAContext *ctx, PGAIndividual *pop );
+
+/*****************************************
+*          stop.c
+*****************************************/
+
+int PGADone(PGAContext *ctx, MPI_Comm comm);
+int PGACheckStoppingConditions( PGAContext *ctx);
+void PGASetStoppingRuleType (PGAContext *ctx, int stoprule);
+int PGAGetStoppingRuleType (PGAContext *ctx);
+void PGASetMaxGAIterValue(PGAContext *ctx, int maxiter);
+int PGAGetMaxGAIterValue (PGAContext *ctx);
+void PGASetMaxNoChangeValue(PGAContext *ctx, int max_no_change);
+void PGASetMaxSimilarityValue(PGAContext *ctx, int max_similarity);
+
+/*****************************************
+*          system.c
+*****************************************/
+
+
+void PGAError( PGAContext *ctx, char *msg,
+               int level, int datatype, void *data );
+void PGADestroy (PGAContext *ctx);
+void PGADestroyUD (PGAContext *ctx,int,int);
+int PGAGetMaxMachineIntValue (PGAContext *ctx);
+int PGAGetMinMachineIntValue (PGAContext *ctx);
+double PGAGetMaxMachineDoubleValue (PGAContext *ctx);
+double PGAGetMinMachineDoubleValue (PGAContext *ctx);
+void PGAUsage( PGAContext *ctx );
+void PGAPrintVersionNumber( PGAContext *ctx );
+
+/*****************************************
+*          user.c
+*****************************************/
+
+
+void PGASetUserFunction(PGAContext *ctx, int constant, void *f);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function returns the size of the user data vector in all    */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+int PGAGetSizeUD(PGAContext *ctx);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function sets the size of the user data vector in all       */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void PGASetSizeUD(PGAContext *ctx,int s);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function gets the user data vector in all                   */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void *PGAGetUD(PGAContext *ctx,int s,int pop);
+
+
+/*****************************************
+*          utility.c
+*****************************************/
+
+
+double PGAMean ( PGAContext *ctx, double *a, int n);
+double PGAStddev ( PGAContext *ctx, double *a, int n, double mean);
+int PGARound(PGAContext *ctx, double x);
+void PGACopyIndividual( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGACheckSum(PGAContext *ctx, int p, int pop);
+int PGAGetWorstIndex(PGAContext *ctx, int pop);
+int PGAGetBestIndex(PGAContext *ctx, int pop);
+PGAIndividual *PGAGetIndividual ( PGAContext *ctx, int p, int pop);
+void PGAUpdateAverage(PGAContext *ctx, int pop);
+void PGAUpdateOnline(PGAContext *ctx, int pop);
+void PGAUpdateOffline(PGAContext *ctx, int pop);
+int PGAComputeSimilarity(PGAContext *ctx, PGAIndividual *pop);
+
+
+#endif
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/pgapackf.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/pgapackf.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/include/pgapackf.h	(revision 6168)
@@ -0,0 +1,983 @@
+/******************************************************************************
+*     FILE: pgapack.h: This file contains all constant and structure
+*                      definitions definitions for PGAPack as well as all
+*                      function declarations.
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+******************************************************************************/
+
+#ifndef __PGA_PACK_H_
+#define __PGA_PACK_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <time.h>
+#include <limits.h>
+#include <float.h>
+#include <string.h> 
+#include <ctype.h>
+#include <mpi.h>
+
+
+
+/*  If OPTIMIZED, remove various sanity checks, and debug output.
+ *
+ *  PGADebugEntered(a)      - Print a debug message about entering "a"
+ *  PGADebugExited(a)       - Print a debug message about exiting "a"
+ *  PGAFailIfNotSetup(a)    - Fail fatally if PGASetUp has not been called
+ *  PGAFailIfSetup(a)       - Fail fatally if PGASetUp has been called
+ *  PGACheckDataType(a, D)  - Fail fatally if the datatype is not D
+ */
+#ifndef OPTIMIZE
+#define OPTIMIZE 0
+
+
+#define PGADebugEntered(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_ENTERED, a, "Entered", PGA_VOID, NULL)
+#define PGADebugExited(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_EXIT, a, "Exited", PGA_VOID, NULL)
+#define PGAFailIfNotSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_FALSE) \
+     PGAError(ctx, "PGASetUp must be called before " Name, \
+              PGA_FATAL, PGA_VOID, NULL)
+#define PGAFailIfSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_TRUE) \
+     PGAError(ctx, Name " must be called before PGASetUp", PGA_FATAL, \
+	      PGA_VOID, NULL)
+#define PGACheckDataType(Name, DataType) \
+  if (ctx->ga.datatype != DataType) \
+     PGAError(ctx, "DataType is incorrect for " Name,PGA_FATAL,PGA_VOID,NULL)
+
+#else
+#undef OPTIMIZE
+#define OPTIMIZE 1
+#define PGADebugPrint(a,b,c,x,y,z) ;
+#define PGADebugEntered(a) ;
+#define PGADebugExited(a) ;
+#define PGAFailIfNotSetUp(Name)  ;
+#define PGAFailIfSetUp(Name)  ;
+#define PGACheckDataType(Name, DataType) ;
+#endif
+
+/*****************************************
+*           BINARY   MACROS              *
+*****************************************/
+#ifndef WL
+#error WL must be defined on the command line!
+#endif
+
+#define ONEL        ((PGABinary)1)
+#define BIT(x,y)    (y&(ONEL<<((WL-1)-(x))))    /* true if bit is 1,         */
+#define SET(x,y)    (y|=(ONEL<<((WL-1)-(x))))   /* set a bit to 1            */
+#define UNSET(x,y)  (y&=(~(ONEL<<((WL-1)-(x)))))/* set a bit to 0, clear     */
+#define TOGGLE(x,y) (y^=(ONEL<<((WL-1)-(x))))   /* complement a bits value   */
+#define INDEX(ix,bx,bit,WL) ix=bit/WL;bx=bit%WL /* map global column (bit)   */
+                                                /* to word (ix) and bit (bx) */
+
+/*****************************************
+*       ABSTRACT DATA TYPES              *
+*****************************************/
+#define PGA_DATATYPE_BINARY      1    /* Array of unsigned ints            */
+                                      /* parsed into bits    : binary.c    */
+#define PGA_DATATYPE_INTEGER     2    /* Array of ints       : integer.c   */
+#define PGA_DATATYPE_REAL        3    /* Array of doubles    : real.c      */
+#define PGA_DATATYPE_CHARACTER   4    /* Array of characters : character.c */
+#define PGA_DATATYPE_USER        5    /*  --user defined--                 */
+    
+#define PGABinary                unsigned long
+#define PGAInteger               signed long int
+#define PGAReal                  double
+#define PGACharacter             signed char
+
+#define PGA_INT                   1
+#define PGA_DOUBLE                2
+#define PGA_CHAR                  3
+#define PGA_VOID                  4
+
+    
+/*****************************************
+*              BOOLEANS                  *
+*****************************************/
+#define PGA_TRUE                   1
+#define PGA_FALSE                  0
+
+/*****************************************
+*                FLAGS                   *
+*****************************************/
+#define PGA_FATAL                 1
+#define PGA_WARNING               2
+
+/*****************************************
+*             MISC CONSTANT              *
+*****************************************/
+#define PGA_TEMP1                -1138
+#define PGA_TEMP2                -4239
+#define PGA_TEMP3                -4238
+
+#define PGA_OLDPOP               -6728
+#define PGA_NEWPOP               -8376
+
+#define PGA_UNINITIALIZED_INT    -3827
+#define PGA_UNINITIALIZED_DOUBLE -968.3827
+
+/*****************************************
+*        DEBUG LEVELS                    *
+*****************************************/
+#define PGA_DEBUG_ENTERED        12
+#define PGA_DEBUG_EXIT           13
+#define PGA_DEBUG_MALLOC         80
+#define PGA_DEBUG_PRINTVAR       82
+#define PGA_DEBUG_SEND           22
+#define PGA_DEBUG_RECV           23
+#define PGA_DEBUG_MAXPGAPACKFUNCTIONS	300
+#define PGA_DEBUG_MAXFLAGS       1000
+
+/*****************************************
+*           DIRECTION                    *
+*****************************************/
+#define PGA_MAXIMIZE            1    /* specify direction for fitness calc  */
+#define PGA_MINIMIZE            2    /* specify direction for fitness calc  */
+    
+/*****************************************
+*         STOPPING CRITERIA              *
+*****************************************/
+#define PGA_STOP_MAXITER        1    /* Stop: for maximum iterations      */
+#define PGA_STOP_NOCHANGE       2    /* Stop: no change in best string    */
+#define PGA_STOP_TOOSIMILAR     4    /* Stop: homogeneous population      */
+
+/*****************************************
+*            CROSSOVER                   *
+*****************************************/
+#define PGA_CROSSOVER_ONEPT     1    /* One point crossover                */
+#define PGA_CROSSOVER_TWOPT     2    /* Two point crossover                */
+#define PGA_CROSSOVER_UNIFORM   3    /* Uniform   crossover                */
+
+/*****************************************
+*            SELECTION                   *
+*****************************************/
+#define PGA_SELECT_PROPORTIONAL 1    /* proportional selection              */
+#define PGA_SELECT_SUS          2    /* stochastic universal selection      */
+#define PGA_SELECT_TOURNAMENT   3    /* tournament selection                */
+#define PGA_SELECT_PTOURNAMENT  4    /* probabilistic tournament selection  */
+
+/*****************************************
+*            FITNESS                     *
+*****************************************/
+#define PGA_FITNESS_RAW         1    /* use raw fitness (evaluation)        */
+#define PGA_FITNESS_NORMAL      2    /* linear normalization fitness        */
+#define PGA_FITNESS_RANKING     3    /* linear ranking fitness              */
+
+/*****************************************
+*            FITNESS (MINIMIZATION)      *
+*****************************************/
+#define PGA_FITNESSMIN_RECIPROCAL  1 /* reciprocal fitness                  */
+#define PGA_FITNESSMIN_CMAX        2 /* cmax fitness                        */
+
+/*****************************************
+*               MUTATION                 *
+*****************************************/
+#define PGA_MUTATION_CONSTANT   1    /* Real/Integer: Fixed value           */
+#define PGA_MUTATION_RANGE      2    /* Real/Integer: Uniform range         */
+#define PGA_MUTATION_UNIFORM    3    /* Real: +- Uniform random no.         */
+#define PGA_MUTATION_GAUSSIAN   4    /* Real: +- Gaussian random no.        */
+#define PGA_MUTATION_PERMUTE    5    /* Integer: Permutation (swap)         */
+    
+/*****************************************
+*        POPULATION REPLACEMENT          *
+*****************************************/
+#define PGA_POPREPL_BEST         1   /* Select best   string                */
+#define PGA_POPREPL_RANDOM_NOREP 2   /* Select random string w/o replacement*/
+#define PGA_POPREPL_RANDOM_REP   3   /* Select random string w/  replacement*/
+
+/****************************************
+ *       REPORT OPTIONS                 *
+ ****************************************/
+#define PGA_REPORT_ONLINE        1    /* Print the online analysis           */
+#define PGA_REPORT_OFFLINE       2    /* Print the offline analysis          */
+#define PGA_REPORT_HAMMING       4    /* Print the Hamming distance          */
+#define PGA_REPORT_STRING        8    /* Print the string                    */
+#define PGA_REPORT_WORST         16   /* Print the worst individual          */
+#define PGA_REPORT_AVERAGE       32   /* Print the average of the population */
+
+/*****************************************
+*            RANDOMIZER                  *
+*****************************************/
+#define PGA_RINIT_PERCENT        1  /* real percent offset                   */
+#define PGA_RINIT_RANGE          2  /* real range                            */
+#define PGA_IINIT_PERMUTE        1  /* integer permutation                   */
+#define PGA_IINIT_RANGE          2  /* integer range (nonunique)             */
+#define PGA_CINIT_LOWER          1  /* all lowercase letters                 */
+#define PGA_CINIT_UPPER          2  /* all uppercase letters                 */
+#define PGA_CINIT_MIXED          3  /* both upper and lower case letters     */
+
+/*****************************************
+*         SET USER FUNCTION              *
+*****************************************/
+#define PGA_USERFUNCTION_CREATESTRING            1
+#define PGA_USERFUNCTION_MUTATION                2
+#define PGA_USERFUNCTION_CROSSOVER               3
+#define PGA_USERFUNCTION_PRINTSTRING             4
+#define PGA_USERFUNCTION_COPYSTRING              5
+#define PGA_USERFUNCTION_DUPLICATE               6
+#define PGA_USERFUNCTION_INITSTRING              7
+#define PGA_USERFUNCTION_BUILDDATATYPE           8
+#define PGA_USERFUNCTION_STOPCOND                9
+#define PGA_USERFUNCTION_ENDOFGEN                10
+#define PGA_USERFUNCTION_RANKING                 11
+#define PGA_USERFUNCTION_FITNESS                 12
+#define PGA_USERFUNCTION_SELECT                  13
+#define PGA_USERFUNCTION_SORTPOP                 14
+
+/******* EHW Modification ************************/
+#define PGA_USERFUNCTION_SETTEMP                 15
+#define PGA_USERFUNCTION_ENDOFREPFCN             16
+#define PGA_USERFUNCTION_DESTROYUD               17
+
+#define PGA_USERFUNCTION_INITUSERCTX             18
+#define PGA_USERFUNCTION_KILLUSERCTX             19
+#define PGA_NUM_USERFUNCTIONS                    19
+/*************************************************/
+
+/*****************************************
+*           MPI SEND/RECV TAGS           *
+*****************************************/
+#define PGA_COMM_STRINGTOEVAL        1  /* MPI tag for sending string       */
+#define PGA_COMM_EVALOFSTRING        2  /* MPI tag for returning evaluation */
+#define PGA_COMM_DONEWITHEVALS       3  /* MPI tag for ending parallel eval */
+
+
+
+
+/*****************************************
+*       INDIVIDUAL STRUTURE              *
+*****************************************/
+
+typedef struct {                    /* primary population data structure   */
+  double evalfunc;                  /* evaluation function value           */
+  double fitness;                   /* fitness    function value           */
+  int    evaluptodate;              /* flag whether evalfunc is current    */
+  void   *chrom;                    /* pointer to the GA string            */
+
+/*****************  EHW Project Modifications  **********************/
+  void   *UserData;                 /* pointer to circuit response         */
+/********************************************************************/
+} PGAIndividual;
+
+
+/*****************************************
+*          GA ALGORITHM STRUCTURE        *
+*****************************************/
+typedef struct {
+    int datatype;            /* data type: binary, integer, or real       */
+    int optdir;              /* direction of optimization                 */
+    int tw;                  /* total number of words, full + partial     */
+    int fw;                  /* number of full (WL length) words          */
+    int eb;                  /* number of extra bits in last NOT full word*/
+    int PopSize;             /* Number of strings to use                  */
+    int StringLen;           /* string lengths                            */
+    int StoppingRule;        /* Termination Criteria                      */
+    int MaxIter;             /* Maximum number of iterations to run       */
+    int MaxNoChange;         /* # of iters with no change before stopping */
+    int MaxSimilarity;       /* % of pop the same before stopping         */
+    int NumReplace;          /* Number of string to replace each gen      */
+    int PopReplace;          /* Method of choosing ind.s to copy to newpop*/
+    int iter;                /* iteration (generation) counter            */
+    int ItersOfSame;         /* # iters with no change in best            */
+    int PercentSame;         /* % of pop that is homogeneous              */
+    int NoDuplicates;        /* Don't allow duplicate strings             */
+    int CrossoverType;       /* Type of crossover for genetic algorithm   */
+    int SelectType;          /* Type of selection for genetic algorithm   */
+    int SelectIndex;         /* index of Select for next two individuals  */
+    int FitnessType;         /* Type of fitness transformation used       */
+    int FitnessMinType;      /* Transformation for minimization problems  */
+    int MutateOnlyNoCross;   /* Mutate only strings not from crossover    */
+    int MutationType;        /* Type of mutation used                     */
+    int MutateIntegerValue;  /* Multiplier to mutate Integer strings with */
+    int MutateBoundedFlag;   /* Confine integer alleles to given range    */
+    double MutateRealValue;  /* Multiplier to mutate Real strings with    */
+    double MutationProb;     /* Starting mutation probability             */
+    double CrossoverProb;    /* Crossover probability                     */
+    double UniformCrossProb; /* Prob of bit select in uniform crossover   */
+    double PTournamentProb;  /* Prob of selection in Prob. Tournament     */
+    double FitnessRankMax;   /* MAX value for use in ranking              */
+    double FitnessCmaxValue; /* Cmax value used to convert minimizations  */
+    double restartAlleleProb;/* prob of changing an allele in a restart   */
+    int restart;             /* whether to use the restart operator       */
+    int restartFreq;         /* frequency with which to restart           */
+    int *selected;           /* array of indices for selection            */
+    int *sorted;             /* array of sorted individual indices        */
+    PGAIndividual *oldpop;   /* pointer to population (old)               */
+    PGAIndividual *newpop;   /* pointer to population (new)               */
+
+/********************** EHW project modifications *********************/
+    int sUD;                 /* Size of User Data array structure     */
+/**********************************************************************/
+} PGAAlgorithm;
+
+
+
+/*****************************************
+*        OPERATIONS STRUCTURES           *
+*****************************************/
+typedef struct PGAContext PGAContext;
+typedef struct {
+    void         (*CreateString)(PGAContext *, int, int, int);
+    int          (*Mutation)(PGAContext *, int, int, double);
+    void         (*Crossover)(PGAContext *, int, int, int, int, int, int);
+    void         (*PrintString)(PGAContext *, FILE *, int, int);
+    void         (*CopyString)(PGAContext *, int, int, int, int);
+    int          (*Duplicate)(PGAContext *, int, int, int, int);
+    void         (*InitString)(PGAContext *, int, int);
+    MPI_Datatype (*BuildDatatype)(PGAContext *, int, int);
+    int          (*StopCond)(PGAContext *);
+    void         (*EndOfGen)(PGAContext *);
+
+/******************* DRH Mod for MMPAT ********************************/
+    void         (*Rank)(PGAContext *, int); /* Calls a custom */
+                                                   /*ranking function*/
+    void         (*Fitness)(PGAContext *, int); /* Calls a custom fitness eval*/
+    void         (*Select) (PGAContext *, int); /* Calls a custom selection */
+/*********************************************/
+/* new added by Lu Yang */
+    void         (*SortPop) (PGAContext *, int); /* Calls a custom sort pop */
+/*********************************************/
+                                                /* function                 */
+/*********************************************************************/
+
+/********************** EHW project modifications *********************/
+    void         (*SetTemp)(PGAContext *); /* Sets the Temperature    */
+                                           /*  Parameter              */
+/**********************************************************************/
+
+/*** SNS Addition, it sets the reproductive flags *************/
+/*** This may be part of The Chromosome User Data ************/
+
+ /* Gets executed when  PGASetEvaluationUpToDateFlag  is called
+      and the flag is set to PGA_FALSE  Is called so that the user
+      data is updated whenever the Evaluation up to date flag is set to
+      false 
+   */
+    void 	 (*EndOfRepFcn)(PGAContext *,int,int);
+
+    void 	 (*DestroyUD)(PGAContext *,int,int);
+   /* CHSL: Executed before the GA is run (gen 0) */
+    void         (*InitUserCtx)(PGAContext *);
+   /* CHSL: Executed after the GA is finished (end of last gen) */
+    void         (*KillUserCtx)(PGAContext *);
+ 
+
+
+/**********************************************************************/
+
+
+
+} PGACOperations;
+
+typedef struct {
+    int          (*Mutation)(void *, void *, void *, void *);
+    void         (*Crossover)(void *, void *, void *, void *, void *, void *, void *);
+    void         (*PrintString)(void *, void *, void *, void *);
+    void         (*CopyString)(void *, void *, void *, void *, void *);
+    int          (*Duplicate)(void *, void *, void *, void *, void *);
+    void         (*InitString)(void *, void *, void *);
+    int          (*StopCond)(void *);
+    void         (*EndOfGen)(void *);
+/******************* DRH Mod for MMPAT ********************************/
+    void         (*Rank)( void *, void *); /* calls a custom  */
+                                                 /* ranking function*/
+    void         (*Fitness)( void *, void *); /* Calls a custom fitness eval*/
+    void         (*Select )( void *, void *); /* Calls a custom selection fn*/
+/*********************************************/
+/* new added by Lu Yang */
+    void         (*SortPop) (void *, void *); /* Calls a custom sort pop */
+/*********************************************************************/
+
+/********************** EHW project modifications *********************/
+    void         (*SetTemp)(void *);       /* Sets the Temperature    */
+                                           /*  Parameter              */
+/**********************************************************************/
+
+/*** SNS Addition, it sets the reproductive flags *************/
+/*** This may be part of The Chromosome User Data ************/
+    void 	 (*EndOfRepFcn)(void *,void *,void *);
+    void 	 (*DestroyUD)(void *,void *,void *);
+
+  /* CHSL: Executed before the GA is run (gen 0) */
+   void         (*InitUserCtx)(void *);
+   /* CHSL: Executed after the GA is finished (end of last gen) */
+   void         (*KillUserCtx)(void *);
+
+/**********************************************************************/
+
+} PGAFortranOperations;
+
+/*****************************************
+*          PARALLEL STRUCTURE            *
+*****************************************/
+typedef struct {
+    int      MPIAlreadyInit;   /* Flag whether MPI was previously initialized*/
+    int      NumIslands;       /* Number of islands in island model          */
+    int      NumDemes;         /* Number of demes in neighborhood model      */
+    MPI_Comm DefaultComm;      /* Default communicator for PGARun            */
+    int      MPIStubLibrary;   /* Boolean: real or stub version of MPI       */
+} PGAParallel;
+
+/*****************************************
+*          REPORT STRUCTURE              *
+*****************************************/
+typedef struct {
+     int    PrintFreq;               /* How often to print statistics reports*/
+     int    PrintOptions;
+     double Offline;
+     double Online;
+     double Average;
+     double Best;
+     time_t starttime;
+} PGAReport;
+
+
+/*****************************************
+*          SYSTEM STRUCTURE              *
+*****************************************/
+typedef struct {
+    int    UserFortran;             /* user routines in Fortran or C?        */
+    int    SetUpCalled;             /* has PGASetUp been called?             */
+    int    PGAMaxInt;               /* largest  int     of machine           */
+    int    PGAMinInt;               /* smallest int     of machine           */
+    double PGAMaxDouble;            /* largest  double  of machine           */
+    double PGAMinDouble;            /* smallest double  of machine           */
+} PGASystem;
+
+
+/*****************************************
+*          DEBUG STRUCTURE               *
+*****************************************/
+typedef struct {
+    int PGADebugFlags[PGA_DEBUG_MAXFLAGS];
+} PGADebug;
+
+/*****************************************
+*      INITIALIZATION STRUCTURE          *
+*****************************************/
+typedef struct {
+    int    RandomInit;             /* flag whether to randomize strings    */
+    double BinaryProbability;      /* probability that a Bit will be 1     */
+    int    RealType;               /* type of real      initialization     */
+    int    IntegerType;            /* type of integer   initialization     */
+    int    CharacterType;          /* type of character initialization     */
+    int    *IntegerMin;            /* minimum of range of integers         */
+    int    *IntegerMax;            /* maximum of range of integers         */
+    double *RealMin;               /* minimum of range of reals            */
+    double *RealMax;               /* maximum of range of reals            */
+    int    RandomSeed;             /* integer to seed random numbers with  */
+} PGAInitialize;
+
+/*****************************************
+*      SCRATCH DATA STRUCTURES           *
+*****************************************/
+typedef struct {
+    int    *intscratch;            /* integer-scratch space                 */
+    double *dblscratch;            /* double- scratch space                 */
+} PGAScratch;
+
+/*****************************************
+*          CONTEXT STRUCTURE             *
+*****************************************/
+struct PGAContext {
+    PGAAlgorithm           ga;
+    PGACOperations         cops;
+    PGAFortranOperations   fops;
+    PGAParallel            par;
+    PGAReport              rep;
+    PGASystem              sys;
+    PGADebug               debug;
+    PGAInitialize          init;
+    PGAScratch             scratch;
+
+    /*************************
+     *   EHW ADDITION        *
+     *************************/
+    void                   *inputex;
+
+};
+
+/*****************************************
+*          binary.c
+*****************************************/
+
+
+
+void PGASetBinaryAllele ( PGAContext *ctx, int p, int pop, int i, int val );
+int PGAGetBinaryAllele ( PGAContext *ctx, int p, int pop, int i );
+void PGASetBinaryInitProb ( PGAContext *ctx, double probability );
+double PGAGetBinaryInitProb (PGAContext *ctx);
+void PGABinaryCreateString(PGAContext *ctx, int p, int pop, int initflag);
+int PGABinaryMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGABinaryOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryTwoptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                               int c1, int c2, int pop2);
+void PGABinaryPrintString( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGABinaryCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGABinaryDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGABinaryInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGABinaryBuildDatatype(PGAContext *ctx, int p, int pop);
+int PGABinaryHammingDistance ( PGAContext *ctx, PGABinary *s1, PGABinary *s2 );
+void PGABinaryPrint( PGAContext *ctx, FILE *fp, PGABinary *chrom, int nb );
+
+/*****************************************
+*          char.c
+*****************************************/
+
+
+void PGASetCharacterAllele (PGAContext *ctx, int p, int pop, int i, char value);
+char PGAGetCharacterAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetCharacterInitType(PGAContext *ctx, int value);
+void PGACharacterCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGACharacterMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGACharacterOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGACharacterUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGACharacterCopyString (PGAContext *ctx, int p1, int pop1, int p2,
+                             int pop2);
+int PGACharacterDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGACharacterInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGACharacterBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          cmdline.c
+*****************************************/
+
+
+void PGAReadCmdLine( PGAContext *ctx, int *argc, char **argv );
+void PGAParseDebugArg(PGAContext *ctx, char *st);
+void PGAStripArgs(char **argv, int *argc, int *c, int num);
+
+/*****************************************
+*          create.c
+*****************************************/
+
+PGAContext *PGACreate ( int *argc, char **argv,
+                        int datatype, int len, int maxormin );
+void PGASetUp ( PGAContext *ctx );
+void PGASetRandomInitFlag(PGAContext *ctx, int RandomBoolean);
+int PGAGetRandomInitFlag (PGAContext *ctx);
+void PGACreatePop (PGAContext *ctx, int pop);
+void PGACreateIndividual (PGAContext *ctx, int p, int pop, int initflag);
+
+/*****************************************
+*          cross.c
+*****************************************/
+
+void PGACrossover ( PGAContext *ctx, int p1, int p2, int pop1,
+                    int c1, int c2, int pop2 );
+int PGAGetCrossoverType (PGAContext *ctx);
+double PGAGetCrossoverProb (PGAContext *ctx);
+double PGAGetUniformCrossoverProb (PGAContext *ctx);
+void PGASetCrossoverType (PGAContext *ctx, int crossover_type);
+void PGASetCrossoverProb( PGAContext *ctx, double crossover_prob);
+void PGASetUniformCrossoverProb( PGAContext *ctx, double uniform_cross_prob);
+
+/*****************************************
+*          debug.c
+*****************************************/
+
+
+void PGASortFuncNameIndex(PGAContext *ctx);
+#if OPTIMIZE==0
+void PGADebugPrint( PGAContext *ctx, int level, char *funcname,
+                   char *msg, int datatype, void *data );
+#endif
+void PGASetDebugLevel(PGAContext *ctx, int level);
+void PGAClearDebugLevel(PGAContext *ctx, int level);
+void PGASetDebugLevelByName(PGAContext *ctx, char *funcname);
+void PGAClearDebugLevelByName(PGAContext *ctx, char *funcname);
+int PGAGetDebugLevelOfName(PGAContext *ctx, char *funcname);
+int PGAGetDebugFlag(PGAContext *ctx, char *funcname);
+void PGASetDebugFlag11(PGAContext *ctx, int Flag);
+void PGASetDebugFlag20(PGAContext *ctx, int Flag);
+void PGASetDebugFlag21(PGAContext *ctx, int Flag);
+void PGASetDebugFlag30(PGAContext *ctx, int Flag);
+void PGASetDebugFlag32(PGAContext *ctx, int Flag);
+void PGASetDebugFlag34(PGAContext *ctx, int Flag);
+void PGASetDebugFlag36(PGAContext *ctx, int Flag);
+void PGASetDebugFlag40(PGAContext *ctx, int Flag);
+void PGASetDebugFlag42(PGAContext *ctx, int Flag);
+void PGASetDebugFlag44(PGAContext *ctx, int Flag);
+void PGASetDebugFlag46(PGAContext *ctx, int Flag);
+void PGASetDebugFlag48(PGAContext *ctx, int Flag);
+void PGASetDebugFlag50(PGAContext *ctx, int Flag);
+void PGASetDebugFlag52(PGAContext *ctx, int Flag);
+void PGASetDebugFlag54(PGAContext *ctx, int Flag);
+void PGASetDebugFlag56(PGAContext *ctx, int Flag);
+void PGASetDebugFlag58(PGAContext *ctx, int Flag);
+void PGASetDebugFlag60(PGAContext *ctx, int Flag);
+void PGASetDebugFlag62(PGAContext *ctx, int Flag);
+void PGASetDebugFlag64(PGAContext *ctx, int Flag);
+void PGASetDebugFlag66(PGAContext *ctx, int Flag);
+void PGAPrintDebugOptions(PGAContext *ctx);
+
+/*****************************************
+*          duplcate.c
+*****************************************/
+
+
+int PGADuplicate(PGAContext *ctx, int p, int pop1, int pop2, int n);
+void PGAChange( PGAContext *ctx, int p, int pop );
+void PGASetNoDuplicatesFlag( PGAContext *ctx, int no_dup);
+int PGAGetNoDuplicatesFlag (PGAContext *ctx);
+
+/*****************************************
+*          evaluate.c
+*****************************************/
+
+
+void PGASetEvaluation ( PGAContext *ctx, int p, int pop, double val );
+double PGAGetEvaluation ( PGAContext *ctx, int p, int pop );
+void PGASetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop,
+                                   int status );
+int PGAGetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop );
+double PGAGetRealFromBinary(PGAContext *ctx, int p, int pop, int start,
+                            int end, double lower, double upper);
+double PGAGetRealFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                  int end, double lower, double upper);
+void PGAEncodeRealAsBinary(PGAContext *ctx, int p, int pop, int start,
+                               int end, double low, double high, double val);
+void PGAEncodeRealAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                              int end, double low, double high, double val);
+int PGAGetIntegerFromBinary(PGAContext *ctx, int p, int pop, int start,
+                                 int end);
+int PGAGetIntegerFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                   int end);
+void PGAEncodeIntegerAsBinary(PGAContext *ctx, int p, int pop, int start,
+                              int end, int val);
+void PGAEncodeIntegerAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                int end, int val);
+double PGAMapIntegerToReal (PGAContext *ctx, int v, int a, int b, double l,
+                            double u);
+int PGAMapRealToInteger(PGAContext *ctx, double r, double l, double u, int a,
+                        int b);
+
+/*****************************************
+*          fitness.c
+*****************************************/
+
+
+void PGAFitness ( PGAContext *ctx, int popindex );
+int PGARank( PGAContext *ctx, int p, int *order, int n );
+double PGAGetFitness ( PGAContext *ctx, int p, int pop );
+int PGAGetFitnessType (PGAContext *ctx);
+int PGAGetFitnessMinType (PGAContext *ctx);
+double PGAGetMaxFitnessRank (PGAContext *ctx);
+void PGASetFitnessType( PGAContext *ctx, int fitness_type);
+void PGASetFitnessMinType( PGAContext *ctx, int fitness_type);
+void PGASetMaxFitnessRank( PGAContext *ctx, double fitness_rank_max);
+void PGAFitnessLinearNormal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessLinearRank ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinReciprocal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinCmax ( PGAContext *ctx, PGAIndividual *pop );
+void PGASetFitnessCmaxValue( PGAContext *ctx, double val);
+double PGAGetFitnessCmaxValue (PGAContext *ctx);
+
+/*****************************************
+*          hamming.c
+*****************************************/
+
+double PGAHammingDistance( PGAContext *ctx, int popindex);
+
+/*****************************************
+*          heap.c
+*****************************************/
+
+
+void PGADblHeapSort ( PGAContext *ctx, double *a, int *idx, int n );
+void PGAIntHeapSort ( PGAContext *ctx, int *a, int *idx, int n );
+
+/*****************************************
+*          integer.c
+*****************************************/
+
+
+
+void PGASetIntegerAllele (PGAContext *ctx, int p, int pop, int i, int value);
+int PGAGetIntegerAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetIntegerInitPermute ( PGAContext *ctx, int min, int max);
+void PGASetIntegerInitRange (PGAContext *ctx, int *min, int *max);
+int PGAGetIntegerInitType (PGAContext *ctx);
+int PGAGetMinIntegerInitValue (PGAContext *ctx, int i);
+int PGAGetMaxIntegerInitValue (PGAContext *ctx, int i);
+void PGAIntegerCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGAIntegerMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGAIntegerOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGAIntegerPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGAIntegerCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGAIntegerDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGAIntegerInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGAIntegerBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          mpi_stub.c
+*****************************************/
+
+
+/*****************************************
+*          mutation.c
+*****************************************/
+
+
+
+int PGAMutate(PGAContext *ctx, int p, int pop);
+void PGASetMutationType( PGAContext *ctx, int mutation_type);
+int PGAGetMutationType (PGAContext *ctx);
+void PGASetMutationRealValue( PGAContext *ctx, double val);
+double PGAGetMutationRealValue (PGAContext *ctx);
+void PGASetMutationIntegerValue( PGAContext *ctx, int val);
+int PGAGetMutationIntegerValue (PGAContext *ctx);
+void PGASetMutationBoundedFlag(PGAContext *ctx, int val);
+int PGAGetMutationBoundedFlag(PGAContext *ctx);
+void PGASetMutationProb(PGAContext *ctx, double mutation_prob);
+double PGAGetMutationProb (PGAContext *ctx);
+
+/*****************************************
+*          parallel.c
+*****************************************/
+
+
+  
+void PGARunGM(PGAContext *ctx, double (*f)(PGAContext *, int, int),
+	      MPI_Comm comm);
+void PGAEvaluateSeq(PGAContext *ctx, int pop,
+		    double (*f)(PGAContext *, int, int));
+void PGAEvaluateCoop(PGAContext *ctx, int pop,
+		     double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluateMS(PGAContext *ctx, int pop,
+		   double (*f)(PGAContext *c, int p, int pop), MPI_Comm comm);
+void PGAEvaluateSlave(PGAContext *ctx, int pop,
+		      double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluate(PGAContext *ctx, int pop,
+		 double (*f)(PGAContext *, int, int), MPI_Comm comm);
+MPI_Datatype PGABuildDatatype(PGAContext *ctx, int p, int pop);
+void PGASendIndividual(PGAContext *ctx, int p, int pop, int dest, int tag,
+                       MPI_Comm comm);
+void PGAReceiveIndividual(PGAContext *ctx, int p, int pop, int source, int tag,
+                          MPI_Comm comm, MPI_Status *status);
+void PGASendReceiveIndividual(PGAContext *ctx, int send_p, int send_pop,
+                              int dest, int send_tag, int recv_p, int recv_pop,
+                              int source, int recv_tag, MPI_Comm comm,
+                              MPI_Status *status);
+void PGARunIM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+void PGARunNM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+int PGAGetRank (PGAContext *ctx, MPI_Comm comm);
+int PGAGetNumProcs (PGAContext *ctx, MPI_Comm comm);
+void PGASetNumIslands( PGAContext *ctx, int n);
+int PGAGetNumIslands (PGAContext *ctx);
+void PGASetNumDemes( PGAContext *ctx, int numdemes);
+int PGAGetNumDemes (PGAContext *ctx);
+void PGASetCommunicator( PGAContext *ctx, MPI_Comm comm);
+MPI_Comm PGAGetCommunicator( PGAContext *ctx);
+
+/*****************************************
+*          pga.c
+*****************************************/
+
+
+void PGARun(PGAContext *ctx, double (*evaluate)(PGAContext *c, int p, int pop));
+void PGARunMutationAndCrossover (PGAContext *ctx, int oldpop, int newpop);
+void PGARunMutationOrCrossover ( PGAContext *ctx, int oldpop, int newpop );
+void PGAUpdateGeneration(PGAContext *ctx, MPI_Comm comm);
+int PGAGetDataType (PGAContext *ctx);
+int PGAGetOptDirFlag (PGAContext *ctx);
+int PGAGetStringLength (PGAContext *ctx);
+int PGAGetVariableStringLength (PGAContext *ctx, int p, int pop);
+int PGAGetGAIterValue (PGAContext *ctx);
+void PGASetMutationOrCrossoverFlag( PGAContext *ctx, int flag);
+void PGASetMutationAndCrossoverFlag( PGAContext *ctx, int flag);
+int PGAGetMutationOrCrossoverFlag (PGAContext *ctx);
+int PGAGetMutationAndCrossoverFlag (PGAContext *ctx);
+
+/*****************************************
+*          pop.c
+*****************************************/
+
+
+void PGASortPop ( PGAContext *ctx, int pop );
+int PGAGetPopSize (PGAContext *ctx);
+int PGAGetNumReplaceValue (PGAContext *ctx);
+int PGAGetPopReplaceType (PGAContext *ctx);     
+int PGAGetSortedPopIndex ( PGAContext *ctx, int n );
+void PGASetPopSize (PGAContext *ctx, int popsize);
+void PGASetNumReplaceValue( PGAContext *ctx, int pop_replace);
+void PGASetPopReplaceType( PGAContext *ctx, int pop_replace);
+
+/*****************************************
+*          random.c
+*****************************************/
+
+
+int PGARandomFlip ( PGAContext *ctx, double p );
+int PGARandomInterval( PGAContext *ctx, int start, int end);
+double PGARandom01( PGAContext *ctx, int newseed );
+double PGARandomUniform( PGAContext *ctx, double start, double end);
+double PGARandomGaussian( PGAContext *ctx, double mean, double sigma);
+int PGAGetRandomSeed(PGAContext *ctx);
+void PGASetRandomSeed(PGAContext *ctx, int seed);
+
+/*****************************************
+*          real.c
+*****************************************/
+
+
+void PGASetRealAllele (PGAContext *ctx, int p, int pop, int i, double value);
+double PGAGetRealAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetRealInitPercent ( PGAContext *ctx, double *median, double *percent);
+void PGASetRealInitRange (PGAContext *ctx, double *min, double *max);
+double PGAGetMinRealInitValue (PGAContext *ctx, int i);
+double PGAGetMaxRealInitValue (PGAContext *ctx, int i);
+int PGAGetRealInitType (PGAContext *ctx);
+void PGARealCreateString (PGAContext *ctx, int p, int pop, int initflag);
+int PGARealMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGARealOneptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealUniformCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                             int c1, int c2, int pop2);
+void PGARealPrintString (PGAContext *ctx, FILE *fp, int p, int pop);
+void PGARealCopyString ( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGARealDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGARealInitString ( PGAContext *ctx, int p, int pop);
+MPI_Datatype PGARealBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          report.c
+*****************************************/
+
+
+void PGAPrintReport(PGAContext *ctx, FILE *fp, int pop);
+void PGASetPrintOptions (PGAContext *ctx, int option);
+void PGASetPrintFrequencyValue( PGAContext *ctx, int print_freq);
+int PGAGetPrintFrequencyValue (PGAContext *ctx);
+void PGAPrintPopulation ( PGAContext *ctx, FILE *fp, int pop );
+void PGAPrintIndividual ( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGAPrintString ( PGAContext *ctx, FILE *file, int p, int pop );
+void PGAPrintContextVariable ( PGAContext *ctx, FILE *fp );
+
+/*****************************************
+*          restart.c
+*****************************************/
+
+void PGARestart(PGAContext *ctx, int source_pop, int dest_pop);
+void PGASetRestartFlag(PGAContext *ctx, int val);
+int PGAGetRestartFlag(PGAContext *ctx);
+void PGASetRestartFrequencyValue(PGAContext *ctx, int numiter);
+int PGAGetRestartFrequencyValue(PGAContext *ctx);
+void PGASetRestartAlleleChangeProb(PGAContext *ctx, double prob);
+double PGAGetRestartAlleleChangeProb(PGAContext *ctx);
+
+/*****************************************
+*          select.c
+*****************************************/
+
+void PGASelect( PGAContext *ctx, int popix );
+int PGASelectNextIndex ( PGAContext *ctx );
+void PGASetSelectType( PGAContext *ctx, int select_type);
+int PGAGetSelectType (PGAContext *ctx);
+void PGASetPTournamentProb(PGAContext *ctx, double ptournament_prob);
+double PGAGetPTournamentProb(PGAContext *ctx);
+int PGASelectProportional(PGAContext *ctx, PGAIndividual *pop);
+void PGASelectSUS( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectTournament( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectPTournament( PGAContext *ctx, PGAIndividual *pop );
+
+/*****************************************
+*          stop.c
+*****************************************/
+
+int PGADone(PGAContext *ctx, MPI_Comm comm);
+int PGACheckStoppingConditions( PGAContext *ctx);
+void PGASetStoppingRuleType (PGAContext *ctx, int stoprule);
+int PGAGetStoppingRuleType (PGAContext *ctx);
+void PGASetMaxGAIterValue(PGAContext *ctx, int maxiter);
+int PGAGetMaxGAIterValue (PGAContext *ctx);
+void PGASetMaxNoChangeValue(PGAContext *ctx, int max_no_change);
+void PGASetMaxSimilarityValue(PGAContext *ctx, int max_similarity);
+
+/*****************************************
+*          system.c
+*****************************************/
+
+
+void PGAError( PGAContext *ctx, char *msg,
+               int level, int datatype, void *data );
+void PGADestroy (PGAContext *ctx);
+void PGADestroyUD (PGAContext *ctx,int,int);
+int PGAGetMaxMachineIntValue (PGAContext *ctx);
+int PGAGetMinMachineIntValue (PGAContext *ctx);
+double PGAGetMaxMachineDoubleValue (PGAContext *ctx);
+double PGAGetMinMachineDoubleValue (PGAContext *ctx);
+void PGAUsage( PGAContext *ctx );
+void PGAPrintVersionNumber( PGAContext *ctx );
+
+/*****************************************
+*          user.c
+*****************************************/
+
+
+void PGASetUserFunction(PGAContext *ctx, int constant, void *f);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function returns the size of the user data vector in all    */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+int PGAGetSizeUD(PGAContext *ctx);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function sets the size of the user data vector in all       */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void PGASetSizeUD(PGAContext *ctx,int s);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function gets the user data vector in all                   */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void *PGAGetUD(PGAContext *ctx,int s,int pop);
+
+
+/*****************************************
+*          utility.c
+*****************************************/
+
+
+double PGAMean ( PGAContext *ctx, double *a, int n);
+double PGAStddev ( PGAContext *ctx, double *a, int n, double mean);
+int PGARound(PGAContext *ctx, double x);
+void PGACopyIndividual( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGACheckSum(PGAContext *ctx, int p, int pop);
+int PGAGetWorstIndex(PGAContext *ctx, int pop);
+int PGAGetBestIndex(PGAContext *ctx, int pop);
+PGAIndividual *PGAGetIndividual ( PGAContext *ctx, int p, int pop);
+void PGAUpdateAverage(PGAContext *ctx, int pop);
+void PGAUpdateOnline(PGAContext *ctx, int pop);
+void PGAUpdateOffline(PGAContext *ctx, int pop);
+int PGAComputeSimilarity(PGAContext *ctx, PGAIndividual *pop);
+
+
+#endif
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/junk
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/junk	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/junk	(revision 6168)
@@ -0,0 +1,6364 @@
+Installing PGAPack . . .
+make[1]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/source'
+make[1]: `../lib/linux/libpgaO.a' is up to date.
+make[1]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/source'
+Installing Examples . . .
+make[1]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples'
+Making C examples
+make[2]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples'
+make[3]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: `classic' is up to date.
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: `dejong' is up to date.
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: `example' is up to date.
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: `maxbit' is up to date.
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: `maxchar' is up to date.
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: `maxint' is up to date.
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: `name' is up to date.
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: `namefull' is up to date.
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[4]: `udtstr' is up to date.
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[3]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/c'
+make[2]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples'
+Making fortran examples
+make[2]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples'
+make[3]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/fortran'
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/fortran'
+  Compiling classic
+FORTRAN 77 Compiler 7.5, Copyright (c) 1987-2001, Absoft Corp.
+ error on line 1 of pgapackf.h: invalid statement label
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 24 of pgapackf.h: invalid statement label
+ error on line 25 of pgapackf.h: invalid statement label
+ error on line 26 of pgapackf.h: invalid statement label
+ error on line 27 of pgapackf.h: invalid statement label
+ error on line 28 of pgapackf.h: invalid statement label
+ error on line 29 of pgapackf.h: invalid statement label
+ error on line 30 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 37 of pgapackf.h: invalid statement label
+ error on line 37 of pgapackf.h: illegal syntax
+ error on line 39 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 41 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 37 of : illegal syntax
+ error on line 31 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 14 of : invalid statement label
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 3 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 28 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 5 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 4 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of 7
+: invalid statement label
+ error on line 1 of 7
+: too many continuation lines
+ error on line 0 of 7
+: invalid statement label
+ error on line 1 of 7
+: invalid statement label
+ error on line 2 of 7
+: invalid statement label
+ error on line 5 of 7
+: invalid statement label
+ error on line 8 of 7
+: invalid statement label
+ error on line 9 of 7
+: invalid statement label
+ error on line 10 of 7
+: invalid statement label
+ error on line 11 of 7
+: invalid statement label
+ error on line 12 of 7
+: invalid statement label
+ error on line 13 of 7
+: invalid statement label
+ error on line 14 of 7
+: invalid statement label
+ error on line 15 of 7
+: invalid statement label
+ error on line 16 of 7
+: invalid statement label
+ error on line 17 of 7
+: invalid statement label
+ error on line 18 of 7
+: invalid statement label
+ error on line 19 of 7
+: invalid statement label
+ error on line 20 of 7
+: invalid statement label
+ error on line 21 of 7
+: invalid statement label
+ error on line 22 of 7
+: invalid statement label
+ error on line 23 of 7
+: invalid statement label
+ error on line 24 of 7
+: invalid statement label
+ error on line 25 of 7
+: invalid statement label
+ error on line 26 of 7
+: invalid statement label
+ error on line 27 of 7
+: invalid statement label
+ error on line 28 of 7
+: invalid statement label
+ error on line 29 of 7
+: invalid statement label
+ error on line 30 of 7
+: invalid statement label
+ error on line 31 of 7
+: invalid statement label
+ error on line 32 of 7
+: invalid statement label
+ error on line 33 of 7
+: invalid statement label
+ error on line 34 of 7
+: invalid statement label
+ error on line 35 of 7
+: invalid statement label
+ error on line 36 of 7
+: invalid statement label
+ error on line 37 of 7
+: invalid statement label
+ error on line 38 of 7
+: invalid statement label
+ error on line 39 of 7
+: invalid statement label
+ error on line 40 of 7
+: invalid statement label
+ error on line 41 of 7
+: invalid statement label
+ error on line 42 of 7
+: invalid statement label
+ error on line 43 of 7
+: invalid statement label
+ error on line 44 of 7
+: invalid statement label
+ error on line 45 of 7
+: invalid statement label
+ error on line 46 of 7
+: invalid statement label
+ error on line 47 of 7
+: invalid statement label
+ error on line 48 of 7
+: invalid statement label
+ error on line 50 of 7
+: invalid statement label
+ error on line 51 of 7
+: invalid statement label
+ error on line 52 of 7
+: invalid statement label
+ error on line 53 of 7
+: invalid statement label
+ error on line 57 of 7
+: invalid statement label
+ error on line 60 of 7
+: invalid statement label
+ error on line 61 of 7
+: invalid statement label
+ error on line 62 of 7
+: invalid statement label
+ error on line 63 of 7
+: invalid statement label
+ error on line 64 of 7
+: invalid statement label
+ error on line 65 of 7
+: invalid statement label
+ error on line 66 of 7
+: invalid statement label
+ error on line 67 of 7
+: invalid statement label
+ error on line 68 of 7
+: invalid statement label
+ error on line 69 of 7
+: invalid statement label
+ error on line 70 of 7
+: invalid statement label
+ error on line 71 of 7
+: invalid statement label
+ error on line 73 of 7
+: invalid statement label
+ error on line 74 of 7
+: invalid statement label
+ error on line 75 of 7
+: alpha character expected
+ error on line 76 of 7
+: invalid statement label
+ error on line 77 of 7
+: invalid statement label
+ error on line 78 of 7
+: invalid statement label
+ error on line 79 of 7
+: invalid statement label
+ error on line 80 of 7
+: invalid statement label
+ error on line 81 of 7
+: invalid statement label
+ error on line 82 of 7
+: alpha character expected
+ error on line 83 of 7
+: invalid statement label
+ error on line 85 of 7
+: invalid statement label
+ error on line 86 of 7
+: invalid statement label
+ error on line 87 of 7
+: alpha character expected
+ error on line 88 of 7
+: invalid statement label
+ error on line 90 of 7
+: invalid statement label
+ error on line 91 of 7
+: invalid statement label
+ error on line 93 of 7
+: invalid statement label
+ error on line 94 of 7
+: spelling error?
+ error on line 95 of 7
+: DATA statement syntax error
+ error on line 97 of 7
+: invalid statement label
+ error on line 98 of 7
+: invalid statement label
+ error on line 100 of 7
+: invalid statement label
+ error on line 101 of 7
+: invalid statement label
+ error on line 102 of 7
+: invalid statement label
+ error on line 103 of 7
+: invalid statement label
+ error on line 104 of 7
+: invalid statement label
+ error on line 108 of 7
+: invalid statement label
+ error on line 112 of 7
+: invalid statement label
+ error on line 114 of 7
+: invalid statement label
+ error on line 115 of 7
+: invalid statement label
+ error on line 116 of 7
+: invalid statement label
+ error on line 117 of 7
+: invalid statement label
+ error on line 118 of 7
+: invalid statement label
+ error on line 119 of 7
+: invalid statement label
+ error on line 120 of 7
+: invalid statement label
+ error on line 121 of 7
+: invalid statement label
+ error on line 122 of 7
+: invalid statement label
+ error on line 123 of 7
+: invalid statement label
+ error on line 124 of 7
+: invalid statement label
+ error on line 96 of 7
+: spelling error?
+ error on line 125 of 7
+: alpha character expected
+ error on line 126 of 7
+: invalid statement label
+ error on line 127 of 7
+: invalid statement label
+ error on line 128 of 7
+: invalid statement label
+ error on line 129 of 7
+: invalid statement label
+ error on line 130 of 7
+: invalid statement label
+ error on line 131 of 7
+: invalid statement label
+ error on line 133 of 7
+: invalid statement label
+ error on line 134 of 7
+: invalid statement label
+ error on line 135 of 7
+: alpha character expected
+ error on line 136 of 7
+: invalid statement label
+ error on line 138 of 7
+: invalid statement label
+ error on line 139 of 7
+: invalid statement label
+ error on line 140 of 7
+: invalid statement label
+ error on line 141 of 7
+: invalid statement label
+ error on line 143 of 7
+: invalid statement label
+ error on line 144 of 7
+: invalid statement label
+ error on line 145 of 7
+: invalid statement label
+ error on line 146 of 7
+: invalid statement label
+ error on line 148 of 7
+: invalid statement label
+ error on line 150 of 7
+: invalid statement label
+ error on line 152 of 7
+: invalid statement label
+ error on line 155 of 7
+: invalid statement label
+ error on line 156 of 7
+: invalid statement label
+ error on line 157 of 7
+: invalid statement label
+ error on line 158 of 7
+: invalid statement label
+ error on line 159 of 7
+: invalid statement label
+ error on line 160 of 7
+: invalid statement label
+ error on line 161 of 7
+: invalid statement label
+ error on line 163 of 7
+: invalid statement label
+ error on line 166 of 7
+: invalid statement label
+ error on line 174 of 7
+: invalid statement label
+ error on line 177 of 7
+: invalid statement label
+ error on line 180 of 7
+: invalid statement label
+ error on line 181 of 7
+: invalid statement label
+ error on line 182 of 7
+: invalid statement label
+ error on line 183 of 7
+: invalid statement label
+ error on line 184 of 7
+: invalid statement label
+ error on line 185 of 7
+: invalid statement label
+ error on line 186 of 7
+: invalid statement label
+ error on line 187 of 7
+: invalid statement label
+ error on line 190 of 7
+: invalid statement label
+ error on line 193 of 7
+: invalid statement label
+ error on line 194 of 7
+: invalid statement label
+ error on line 195 of 7
+: invalid statement label
+ error on line 197 of 7
+: invalid statement label
+ error on line 200 of 7
+: invalid statement label
+ error on line 201 of 7
+: invalid statement label
+ error on line 202 of 7
+: invalid statement label
+ error on line 203 of 7
+: invalid statement label
+ error on line 204 of 7
+: invalid statement label
+ error on line 205 of 7
+: invalid statement label
+ error on line 206 of 7
+: invalid statement label
+ error on line 207 of 7
+: invalid statement label
+ error on line 208 of 7
+: invalid statement label
+ error on line 209 of 7
+: invalid statement label
+ error on line 210 of 7
+: invalid statement label
+ error on line 211 of 7
+: invalid statement label
+ error on line 213 of 7
+: invalid statement label
+ error on line 216 of 7
+: invalid statement label
+ error on line 217 of 7
+: invalid statement label
+ error on line 218 of 7
+: invalid statement label
+ error on line 219 of 7
+: invalid statement label
+ error on line 221 of 7
+: invalid statement label
+ error on line 224 of 7
+: invalid statement label
+ error on line 225 of 7
+: invalid statement label
+ error on line 226 of 7
+: invalid statement label
+ error on line 227 of 7
+: invalid statement label
+ error on line 228 of 7
+: invalid statement label
+ error on line 229 of 7
+: invalid statement label
+ error on line 230 of 7
+: invalid statement label
+ error on line 231 of 7
+: invalid statement label
+ error on line 232 of 7
+: invalid statement label
+ error on line 233 of 7
+: invalid statement label
+ error on line 235 of 7
+: invalid statement label
+ error on line 238 of 7
+: invalid statement label
+ error on line 240 of 7
+: invalid statement label
+ error on line 242 of 7
+: invalid statement label
+ error on line 248 of 7
+: invalid statement label
+ error on line 249 of 7
+: invalid statement label
+ error on line 250 of 7
+: invalid statement label
+ error on line 252 of 7
+: invalid statement label
+ error on line 253 of 7
+: invalid statement label
+ error on line 254 of 7
+: invalid statement label
+ error on line 255 of 7
+: spelling error?
+ error on line 256 of 7
+: invalid statement label
+ error on line 257 of 7
+: spelling error?
+ error on line 258 of 7
+: invalid statement label
+ error on line 259 of 7
+: spelling error?
+ error on line 260 of 7
+: invalid statement label
+ error on line 261 of 7
+: invalid statement label
+ error on line 262 of 7
+: invalid statement label
+ error on line 263 of 7
+: invalid statement label
+ error on line 264 of 7
+: invalid statement label
+ error on line 265 of 7
+: invalid statement label
+ error on line 266 of 7
+: invalid statement label
+ error on line 268 of 7
+: invalid statement label
+ error on line 273 of 7
+: invalid statement label
+ error on line 275 of 7
+: invalid statement label
+ error on line 276 of 7
+: invalid statement label
+ error on line 277 of 7
+: invalid statement label
+ error on line 278 of 7
+: invalid statement label
+ error on line 279 of 7
+: spelling error?
+ error on line 280 of 7
+: invalid statement label
+ error on line 281 of 7
+: spelling error?
+ error on line 282 of 7
+: invalid statement label
+ error on line 283 of 7
+: spelling error?
+ error on line 284 of 7
+: invalid statement label
+ error on line 285 of 7
+: invalid statement label
+ error on line 286 of 7
+: spelling error?
+ error on line 287 of 7
+: invalid statement label
+ error on line 288 of 7
+: invalid statement label
+ error on line 289 of 7
+: invalid statement label
+ error on line 291 of 7
+: invalid statement label
+ error on line 296 of 7
+: invalid statement label
+ error on line 297 of 7
+: invalid statement label
+ error on line 298 of 7
+: invalid statement label
+ error on line 300 of 7
+: invalid statement label
+ error on line 304 of 7
+: invalid statement label
+ error on line 305 of 7
+: spelling error?
+ error on line 306 of 7
+: invalid statement label
+ error on line 307 of 7
+: invalid statement label
+ error on line 308 of 7
+: invalid statement label
+ error on line 309 of 7
+: invalid statement label
+ error on line 310 of 7
+: invalid statement label
+ error on line 312 of 7
+: invalid statement label
+ error on line 316 of 7
+: invalid statement label
+ error on line 317 of 7
+: spelling error?
+ error on line 318 of 7
+: invalid statement label
+ error on line 321 of 7
+: invalid statement label
+ error on line 322 of 7
+: invalid statement label
+ error on line 323 of 7
+: invalid statement label
+ error on line 325 of 7
+: invalid statement label
+ error on line 330 of 7
+: invalid statement label
+ error on line 330 of 7
+: illegal syntax
+ error on line 332 of 7
+: invalid statement label
+ error on line 330 of 7
+: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 0 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 1 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 2 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 3 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 4 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 5 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 6 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 7 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 8 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 9 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 10 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 11 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 12 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 13 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 14 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 15 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 16 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 17 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 18 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 19 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 20 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 21 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 22 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 23 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 24 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 25 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 26 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 27 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 29 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 34 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 35 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 36 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 37 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 39 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 44 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 46 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 47 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 48 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 50 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 52 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 53 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 54 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 55 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 56 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 57 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 58 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 59 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 60 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 61 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 62 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 63 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 64 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 66 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 67 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 68 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 70 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 75 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 76 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 78 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 79 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 81 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 82 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 83 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 84 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 85 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 86 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 87 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 88 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 91 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 97 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 102 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 103 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 105 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 111 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 112 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 113 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 114 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 115 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 116 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 117 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 118 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 119 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 120 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 121 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 122 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 123 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 124 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 125 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 126 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 127 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 128 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 129 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 130 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 132 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 137 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 143 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 144 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 145 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 146 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 148 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 149 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 150 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 151 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 152 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 155 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 161 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 162 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 163 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 164 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 165 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 166 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 167 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 168 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 169 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 170 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 171 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 172 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 173 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 174 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 175 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 176 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 177 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 178 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 179 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 180 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 181 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 182 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 183 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 184 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 185 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 186 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 187 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 188 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 189 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 190 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 191 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 192 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 193 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 195 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 200 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 201 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 202 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 203 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 204 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 205 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 206 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 207 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 208 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 209 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 210 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 211 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 212 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 214 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 219 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 220 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 221 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 222 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 223 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 224 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 225 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 226 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 228 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 233 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 234 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 238 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 239 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 241 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 246 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 248 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 249 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 252 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 253 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 254 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 255 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 256 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 257 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 258 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 259 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 260 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 261 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 262 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 263 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 264 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 265 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 267 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 272 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 273 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 274 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 275 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 276 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 277 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 278 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 279 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 281 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 285 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 286 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 287 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 288 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 289 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 290 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 293 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 297 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 298 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 299 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 300 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 301 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 303 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 304 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 305 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 306 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 308 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 312 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 313 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 314 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 315 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 316 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 317 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 318 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 319 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 321 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 326 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 327 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 328 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 329 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 330 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 331 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 334 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 335 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 337 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 342 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 344 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 345 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 346 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 347 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 348 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 349 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 351 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 352 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 353 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 354 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 355 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 356 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 358 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 359 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 360 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 361 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 362 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 363 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 366 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 373 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 374 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 375 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 376 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 377 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 378 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 379 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 380 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 381 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 382 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 382 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 382 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of pgapackf.h: invalid statement label
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 24 of pgapackf.h: invalid statement label
+ error on line 25 of pgapackf.h: invalid statement label
+ error on line 26 of pgapackf.h: invalid statement label
+ error on line 27 of pgapackf.h: invalid statement label
+ error on line 28 of pgapackf.h: invalid statement label
+ error on line 29 of pgapackf.h: invalid statement label
+ error on line 30 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 37 of pgapackf.h: invalid statement label
+ error on line 37 of pgapackf.h: illegal syntax
+ error on line 39 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 41 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@°®
+@: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@°®
+@: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@°®
+@: invalid statement label
+ error on line 37 of L`ÿ¿H`
+@¡@°®
+@: illegal syntax
+ error on line 31 of ìhÿ¿: illegal syntax
+ error on line 1 of @qÿ¿*: illegal syntax
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 1 of yÿ¿e: invalid statement label
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: invalid statement label
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 3 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 28 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 5 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 4 of ®ÿ¿0³ÿ¿
+: invalid statement label
+ error on line 1 of ®ÿ¿0³ÿ¿
+: illegal syntax
+ error on line 1 of ÿÿÿÿ: invalid statement label
+ error on line 1 of ÿÿÿÿ: illegal syntax
+ error on line 1 of lid statement label
+or on line 352 of üÝinvalid statement label
+or on line 351 of üÝinvalid statement label
+or on line 349 of üÝinvalid statement label
+or on line 348 of üÝinvalid statement label
+or on line 347 of üÝinvalid statement label
+or on line 346 of üÝinvalid statement label
+or on line 345 of üÝinvalid statement label
+or on line 344 o@ß
+
+@Ô@@: invalid statement label
+ error on line 1 of lid statement label
+or on line 352 of üÝinvalid statement label
+or on line 351 of üÝinvalid statement label
+or on line 349 of üÝinvalid statement label
+or on line 348 of üÝinvalid statement label
+or on line 347 of üÝinvalid statement label
+or on line 346 of üÝinvalid statement label
+or on line 345 of üÝinvalid statement label
+or on line 344 o@ß
+
+@Ô@@: illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of €: invalid statement label
+ error on line 1 of €: illegal syntax
+ error on line 1 of €: invalid statement label
+ error on line 1 of €: too many continuation lines
+ error on line 0 of €: invalid statement label
+ error on line 1 of €: invalid statement label
+ error on line 2 of €: invalid statement label
+ error on line 5 of €: invalid statement label
+ error on line 8 of €: invalid statement label
+ error on line 9 of €: invalid statement label
+ error on line 10 of €: invalid statement label
+ error on line 11 of €: invalid statement label
+ error on line 12 of €: invalid statement label
+ error on line 13 of €: invalid statement label
+ error on line 14 of €: invalid statement label
+ error on line 15 of €: invalid statement label
+ error on line 16 of €: invalid statement label
+ error on line 17 of €: invalid statement label
+ error on line 18 of €: invalid statement label
+ error on line 19 of €: invalid statement label
+ error on line 20 of €: invalid statement label
+ error on line 21 of €: invalid statement label
+ error on line 22 of €: invalid statement label
+ error on line 23 of €: invalid statement label
+ error on line 24 of €: invalid statement label
+ error on line 25 of €: invalid statement label
+ error on line 26 of €: invalid statement label
+ error on line 27 of €: invalid statement label
+ error on line 28 of €: invalid statement label
+ error on line 29 of €: invalid statement label
+ error on line 30 of €: invalid statement label
+ error on line 31 of €: invalid statement label
+ error on line 32 of €: invalid statement label
+ error on line 33 of €: invalid statement label
+ error on line 34 of €: invalid statement label
+ error on line 35 of €: invalid statement label
+ error on line 36 of €: invalid statement label
+ error on line 37 of €: invalid statement label
+ error on line 38 of €: invalid statement label
+ error on line 39 of €: invalid statement label
+ error on line 40 of €: invalid statement label
+ error on line 41 of €: invalid statement label
+ error on line 42 of €: invalid statement label
+ error on line 43 of €: invalid statement label
+ error on line 44 of €: invalid statement label
+ error on line 45 of €: invalid statement label
+ error on line 46 of €: invalid statement label
+ error on line 47 of €: invalid statement label
+ error on line 48 of €: invalid statement label
+ error on line 50 of €: invalid statement label
+ error on line 51 of €: invalid statement label
+ error on line 52 of €: invalid statement label
+ error on line 53 of €: invalid statement label
+ error on line 57 of €: invalid statement label
+ error on line 60 of €: invalid statement label
+ error on line 61 of €: invalid statement label
+ error on line 62 of €: invalid statement label
+ error on line 63 of €: invalid statement label
+ error on line 64 of €: invalid statement label
+ error on line 65 of €: invalid statement label
+ error on line 66 of €: invalid statement label
+ error on line 67 of €: invalid statement label
+ error on line 68 of €: invalid statement label
+ error on line 69 of €: invalid statement label
+ error on line 70 of €: invalid statement label
+ error on line 71 of €: invalid statement label
+ error on line 73 of €: invalid statement label
+ error on line 74 of €: invalid statement label
+ error on line 75 of €: alpha character expected
+ error on line 76 of €: invalid statement label
+ error on line 77 of €: invalid statement label
+ error on line 78 of €: invalid statement label
+ error on line 79 of €: invalid statement label
+ error on line 80 of €: invalid statement label
+ error on line 81 of €: invalid statement label
+ error on line 82 of €: alpha character expected
+ error on line 83 of €: invalid statement label
+ error on line 85 of €: invalid statement label
+ error on line 86 of €: invalid statement label
+ error on line 87 of €: alpha character expected
+ error on line 88 of €: invalid statement label
+ error on line 90 of €: invalid statement label
+ error on line 91 of €: invalid statement label
+ error on line 93 of €: invalid statement label
+ error on line 94 of €: spelling error?
+ error on line 95 of €: DATA statement syntax error
+ error on line 97 of €: invalid statement label
+ error on line 98 of €: invalid statement label
+ error on line 100 of €: invalid statement label
+ error on line 101 of €: invalid statement label
+ error on line 102 of €: invalid statement label
+ error on line 103 of €: invalid statement label
+ error on line 104 of €: invalid statement label
+ error on line 108 of €: invalid statement label
+ error on line 112 of €: invalid statement label
+ error on line 114 of €: invalid statement label
+ error on line 115 of €: invalid statement label
+ error on line 116 of €: invalid statement label
+ error on line 117 of €: invalid statement label
+ error on line 118 of €: invalid statement label
+ error on line 119 of €: invalid statement label
+ error on line 120 of €: invalid statement label
+ error on line 121 of €: invalid statement label
+ error on line 122 of €: invalid statement label
+ error on line 123 of €: invalid statement label
+ error on line 124 of €: invalid statement label
+ error on line 96 of €: spelling error?
+ error on line 125 of €: alpha character expected
+ error on line 126 of €: invalid statement label
+ error on line 127 of €: invalid statement label
+ error on line 128 of €: invalid statement label
+ error on line 129 of €: invalid statement label
+ error on line 130 of €: invalid statement label
+ error on line 131 of €: invalid statement label
+ error on line 133 of €: invalid statement label
+ error on line 134 of €: invalid statement label
+ error on line 135 of €: alpha character expected
+ error on line 136 of €: invalid statement label
+ error on line 138 of €: invalid statement label
+ error on line 139 of €: invalid statement label
+ error on line 140 of €: invalid statement label
+ error on line 141 of €: invalid statement label
+ error on line 143 of €: invalid statement label
+ error on line 144 of €: invalid statement label
+ error on line 145 of €: invalid statement label
+ error on line 146 of €: invalid statement label
+ error on line 148 of €: invalid statement label
+ error on line 150 of €: invalid statement label
+ error on line 152 of €: invalid statement label
+ error on line 155 of €: invalid statement label
+ error on line 156 of €: invalid statement label
+ error on line 157 of €: invalid statement label
+ error on line 158 of €: invalid statement label
+ error on line 159 of €: invalid statement label
+ error on line 160 of €: invalid statement label
+ error on line 161 of €: invalid statement label
+ error on line 163 of €: invalid statement label
+ error on line 166 of €: invalid statement label
+ error on line 174 of €: invalid statement label
+ error on line 177 of €: invalid statement label
+ error on line 180 of €: invalid statement label
+ error on line 181 of €: invalid statement label
+ error on line 182 of €: invalid statement label
+ error on line 183 of €: invalid statement label
+ error on line 184 of €: invalid statement label
+ error on line 185 of €: invalid statement label
+ error on line 186 of €: invalid statement label
+ error on line 187 of €: invalid statement label
+ error on line 190 of €: invalid statement label
+ error on line 193 of €: invalid statement label
+ error on line 194 of €: invalid statement label
+ error on line 195 of €: invalid statement label
+ error on line 197 of €: invalid statement label
+ error on line 200 of €: invalid statement label
+ error on line 201 of €: invalid statement label
+ error on line 202 of €: invalid statement label
+ error on line 203 of €: invalid statement label
+ error on line 204 of €: invalid statement label
+ error on line 205 of €: invalid statement label
+ error on line 206 of €: invalid statement label
+ error on line 207 of €: invalid statement label
+ error on line 208 of €: invalid statement label
+ error on line 209 of €: invalid statement label
+ error on line 210 of €: invalid statement label
+ error on line 211 of €: invalid statement label
+ error on line 213 of €: invalid statement label
+ error on line 216 of €: invalid statement label
+ error on line 217 of €: invalid statement label
+ error on line 218 of €: invalid statement label
+ error on line 219 of €: invalid statement label
+ error on line 221 of €: invalid statement label
+ error on line 224 of €: invalid statement label
+ error on line 225 of €: invalid statement label
+ error on line 226 of €: invalid statement label
+ error on line 227 of €: invalid statement label
+ error on line 228 of €: invalid statement label
+ error on line 229 of €: invalid statement label
+ error on line 230 of €: invalid statement label
+ error on line 231 of €: invalid statement label
+ error on line 232 of €: invalid statement label
+ error on line 233 of €: invalid statement label
+ error on line 235 of €: invalid statement label
+ error on line 238 of €: invalid statement label
+ error on line 240 of €: invalid statement label
+ error on line 242 of €: invalid statement label
+ error on line 248 of €: invalid statement label
+ error on line 249 of €: invalid statement label
+ error on line 250 of €: invalid statement label
+ error on line 252 of €: invalid statement label
+ error on line 253 of €: invalid statement label
+ error on line 254 of €: invalid statement label
+ error on line 255 of €: spelling error?
+ error on line 256 of €: invalid statement label
+ error on line 257 of €: spelling error?
+ error on line 258 of €: invalid statement label
+ error on line 259 of €: spelling error?
+ error on line 260 of €: invalid statement label
+ error on line 261 of €: invalid statement label
+ error on line 262 of €: invalid statement label
+ error on line 263 of €: invalid statement label
+ error on line 264 of €: invalid statement label
+ error on line 265 of €: invalid statement label
+ error on line 266 of €: invalid statement label
+ error on line 268 of €: invalid statement label
+ error on line 273 of €: invalid statement label
+ error on line 275 of €: invalid statement label
+ error on line 276 of €: invalid statement label
+ error on line 277 of €: invalid statement label
+ error on line 278 of €: invalid statement label
+ error on line 279 of €: spelling error?
+ error on line 280 of €: invalid statement label
+ error on line 281 of €: spelling error?
+ error on line 282 of €: invalid statement label
+ error on line 283 of €: spelling error?
+ error on line 284 of €: invalid statement label
+ error on line 285 of €: invalid statement label
+ error on line 286 of €: spelling error?
+ error on line 287 of €: invalid statement label
+ error on line 288 of €: invalid statement label
+ error on line 289 of €: invalid statement label
+ error on line 291 of €: invalid statement label
+ error on line 296 of €: invalid statement label
+ error on line 297 of €: invalid statement label
+ error on line 298 of €: invalid statement label
+ error on line 300 of €: invalid statement label
+ error on line 304 of €: invalid statement label
+ error on line 305 of €: spelling error?
+ error on line 306 of €: invalid statement label
+ error on line 307 of €: invalid statement label
+ error on line 308 of €: invalid statement label
+ error on line 309 of €: invalid statement label
+ error on line 310 of €: invalid statement label
+ error on line 312 of €: invalid statement label
+ error on line 316 of €: invalid statement label
+ error on line 317 of €: spelling error?
+ error on line 318 of €: invalid statement label
+ error on line 321 of €: invalid statement label
+ error on line 322 of €: invalid statement label
+ error on line 323 of €: invalid statement label
+ error on line 325 of €: invalid statement label
+ error on line 330 of €: invalid statement label
+ error on line 330 of €: illegal syntax
+ error on line 332 of €: invalid statement label
+ error on line 330 of €: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 0 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 1 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 2 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 3 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 4 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 5 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 6 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 7 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 8 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 9 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 10 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 11 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 12 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 13 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 14 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 15 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 16 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 17 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 18 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 19 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 20 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 21 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 22 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 23 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 24 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 25 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 26 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 27 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 29 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 34 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 35 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 36 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 37 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 39 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 44 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 46 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 47 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 48 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 50 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 52 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 53 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 54 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 55 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 56 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 57 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 58 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 59 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 60 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 61 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 62 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 63 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 64 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 66 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 67 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 68 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 70 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 75 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 76 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 78 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 79 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 81 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 82 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 83 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 84 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 85 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 86 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 87 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 88 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 91 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 97 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 102 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 103 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 105 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 111 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 112 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 113 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 114 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 115 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 116 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 117 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 118 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 119 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 120 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 121 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 122 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 123 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 124 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 125 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 126 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 127 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 128 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 129 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 130 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 132 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 137 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 143 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 144 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 145 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 146 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 148 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 149 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 150 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 151 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 152 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 155 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 161 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 162 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 163 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 164 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 165 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 166 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 167 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 168 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 169 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 170 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 171 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 172 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 173 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 174 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 175 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 176 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 177 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 178 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 179 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 180 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 181 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 182 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 183 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 184 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 185 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 186 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 187 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 188 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 189 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 190 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 191 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 192 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 193 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 195 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 200 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 201 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 202 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 203 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 204 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 205 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 206 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 207 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 208 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 209 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 210 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 211 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 212 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 214 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 219 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 220 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 221 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 222 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 223 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 224 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 225 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 226 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 228 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 233 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 234 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 238 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 239 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 241 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 246 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 248 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 249 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 252 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 253 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 254 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 255 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 256 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 257 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 258 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 259 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 260 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 261 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 262 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 263 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 264 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 265 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 267 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 272 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 273 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 274 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 275 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 276 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 277 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 278 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 279 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 281 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 285 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 286 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 287 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 288 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 289 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 290 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 293 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 297 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 298 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 299 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 300 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 301 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 303 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 304 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 305 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 306 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 308 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 312 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 313 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 314 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 315 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 316 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 317 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 318 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 319 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 321 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 326 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 327 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 328 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 329 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 330 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 331 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 334 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 335 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 337 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 342 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 344 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 345 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 346 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 347 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 348 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 349 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 351 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 352 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 353 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 354 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 355 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 356 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 358 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 359 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 360 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 361 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 362 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 363 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 366 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 373 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 374 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 375 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 376 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 377 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 378 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 379 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 380 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 381 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 382 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 382 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 382 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of pgapackf.h: invalid statement label
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 24 of pgapackf.h: invalid statement label
+ error on line 25 of pgapackf.h: invalid statement label
+ error on line 26 of pgapackf.h: invalid statement label
+ error on line 27 of pgapackf.h: invalid statement label
+ error on line 28 of pgapackf.h: invalid statement label
+ error on line 29 of pgapackf.h: invalid statement label
+ error on line 30 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 37 of pgapackf.h: invalid statement label
+ error on line 37 of pgapackf.h: illegal syntax
+ error on line 39 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 41 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@àÆ
+@: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@àÆ
+@: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@àÆ
+@: invalid statement label
+ error on line 37 of L`ÿ¿H`
+@¡@àÆ
+@: illegal syntax
+ error on line 31 of ìhÿ¿: illegal syntax
+ error on line 1 of @qÿ¿*: illegal syntax
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 1 of yÿ¿e: invalid statement label
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: invalid statement label
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 3 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 28 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 5 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 4 of ®ÿ¿0³ÿ¿
+: invalid statement label
+ error on line 1 of ®ÿ¿0³ÿ¿
+: illegal syntax
+ error on line 1 of ÿÿÿÿ: invalid statement label
+ error on line 1 of ÿÿÿÿ: illegal syntax
+ error on line 1 of lid statement label
+or on line 352 of üÝinvalid statement label
+or on line 351 of üÝinvalid statement label
+or on line 349 of üÝinvalid statement label
+or on line 348 of üÝinvalid statement label
+or on line 347 of üÝinvalid statement label
+or on line 346 of üÝinvalid statement label
+or on line 345 of üÝinvalid statement label
+or on line 344 o@ß
+
+@Ô@@: invalid statement label
+ error on line 1 of lid statement label
+or on line 352 of üÝinvalid statement label
+or on line 351 of üÝinvalid statement label
+or on line 349 of üÝinvalid statement label
+or on line 348 of üÝinvalid statement label
+or on line 347 of üÝinvalid statement label
+or on line 346 of üÝinvalid statement label
+or on line 345 of üÝinvalid statement label
+or on line 344 o@ß
+
+@Ô@@: illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of €: invalid statement label
+ error on line 1 of €: illegal syntax
+ error on line 1 of €: invalid statement label
+ error on line 1 of €: too many continuation lines
+ error on line 0 of €: invalid statement label
+ error on line 1 of €: invalid statement label
+ error on line 2 of €: invalid statement label
+ error on line 5 of €: invalid statement label
+ error on line 8 of €: invalid statement label
+ error on line 9 of €: invalid statement label
+ error on line 10 of €: invalid statement label
+ error on line 11 of €: invalid statement label
+ error on line 12 of €: invalid statement label
+ error on line 13 of €: invalid statement label
+ error on line 14 of €: invalid statement label
+ error on line 15 of €: invalid statement label
+ error on line 16 of €: invalid statement label
+ error on line 17 of €: invalid statement label
+ error on line 18 of €: invalid statement label
+ error on line 19 of €: invalid statement label
+ error on line 20 of €: invalid statement label
+ error on line 21 of €: invalid statement label
+ error on line 22 of €: invalid statement label
+ error on line 23 of €: invalid statement label
+ error on line 24 of €: invalid statement label
+ error on line 25 of €: invalid statement label
+ error on line 26 of €: invalid statement label
+ error on line 27 of €: invalid statement label
+ error on line 28 of €: invalid statement label
+ error on line 29 of €: invalid statement label
+ error on line 30 of €: invalid statement label
+ error on line 31 of €: invalid statement label
+ error on line 32 of €: invalid statement label
+ error on line 33 of €: invalid statement label
+ error on line 34 of €: invalid statement label
+ error on line 35 of €: invalid statement label
+ error on line 36 of €: invalid statement label
+ error on line 37 of €: invalid statement label
+ error on line 38 of €: invalid statement label
+ error on line 39 of €: invalid statement label
+ error on line 40 of €: invalid statement label
+ error on line 41 of €: invalid statement label
+ error on line 42 of €: invalid statement label
+ error on line 43 of €: invalid statement label
+ error on line 44 of €: invalid statement label
+ error on line 45 of €: invalid statement label
+ error on line 46 of €: invalid statement label
+ error on line 47 of €: invalid statement label
+ error on line 48 of €: invalid statement label
+ error on line 50 of €: invalid statement label
+ error on line 51 of €: invalid statement label
+ error on line 52 of €: invalid statement label
+ error on line 53 of €: invalid statement label
+ error on line 57 of €: invalid statement label
+ error on line 60 of €: invalid statement label
+ error on line 61 of €: invalid statement label
+ error on line 62 of €: invalid statement label
+ error on line 63 of €: invalid statement label
+ error on line 64 of €: invalid statement label
+ error on line 65 of €: invalid statement label
+ error on line 66 of €: invalid statement label
+ error on line 67 of €: invalid statement label
+ error on line 68 of €: invalid statement label
+ error on line 69 of €: invalid statement label
+ error on line 70 of €: invalid statement label
+ error on line 71 of €: invalid statement label
+ error on line 73 of €: invalid statement label
+ error on line 74 of €: invalid statement label
+ error on line 75 of €: alpha character expected
+ error on line 76 of €: invalid statement label
+ error on line 77 of €: invalid statement label
+ error on line 78 of €: invalid statement label
+ error on line 79 of €: invalid statement label
+ error on line 80 of €: invalid statement label
+ error on line 81 of €: invalid statement label
+ error on line 82 of €: alpha character expected
+ error on line 83 of €: invalid statement label
+ error on line 85 of €: invalid statement label
+ error on line 86 of €: invalid statement label
+ error on line 87 of €: alpha character expected
+ error on line 88 of €: invalid statement label
+ error on line 90 of €: invalid statement label
+ error on line 91 of €: invalid statement label
+ error on line 93 of €: invalid statement label
+ error on line 94 of €: spelling error?
+ error on line 95 of €: DATA statement syntax error
+ error on line 97 of €: invalid statement label
+ error on line 98 of €: invalid statement label
+ error on line 100 of €: invalid statement label
+ error on line 101 of €: invalid statement label
+ error on line 102 of €: invalid statement label
+ error on line 103 of €: invalid statement label
+ error on line 104 of €: invalid statement label
+ error on line 108 of €: invalid statement label
+ error on line 112 of €: invalid statement label
+ error on line 114 of €: invalid statement label
+ error on line 115 of €: invalid statement label
+ error on line 116 of €: invalid statement label
+ error on line 117 of €: invalid statement label
+ error on line 118 of €: invalid statement label
+ error on line 119 of €: invalid statement label
+ error on line 120 of €: invalid statement label
+ error on line 121 of €: invalid statement label
+ error on line 122 of €: invalid statement label
+ error on line 123 of €: invalid statement label
+ error on line 124 of €: invalid statement label
+ error on line 96 of €: spelling error?
+ error on line 125 of €: alpha character expected
+ error on line 126 of €: invalid statement label
+ error on line 127 of €: invalid statement label
+ error on line 128 of €: invalid statement label
+ error on line 129 of €: invalid statement label
+ error on line 130 of €: invalid statement label
+ error on line 131 of €: invalid statement label
+ error on line 133 of €: invalid statement label
+ error on line 134 of €: invalid statement label
+ error on line 135 of €: alpha character expected
+ error on line 136 of €: invalid statement label
+ error on line 138 of €: invalid statement label
+ error on line 139 of €: invalid statement label
+ error on line 140 of €: invalid statement label
+ error on line 141 of €: invalid statement label
+ error on line 143 of €: invalid statement label
+ error on line 144 of €: invalid statement label
+ error on line 145 of €: invalid statement label
+ error on line 146 of €: invalid statement label
+ error on line 148 of €: invalid statement label
+ error on line 150 of €: invalid statement label
+ error on line 152 of €: invalid statement label
+ error on line 155 of €: invalid statement label
+ error on line 156 of €: invalid statement label
+ error on line 157 of €: invalid statement label
+ error on line 158 of €: invalid statement label
+ error on line 159 of €: invalid statement label
+ error on line 160 of €: invalid statement label
+ error on line 161 of €: invalid statement label
+ error on line 163 of €: invalid statement label
+ error on line 166 of €: invalid statement label
+ error on line 174 of €: invalid statement label
+ error on line 177 of €: invalid statement label
+ error on line 180 of €: invalid statement label
+ error on line 181 of €: invalid statement label
+ error on line 182 of €: invalid statement label
+ error on line 183 of €: invalid statement label
+ error on line 184 of €: invalid statement label
+ error on line 185 of €: invalid statement label
+ error on line 186 of €: invalid statement label
+ error on line 187 of €: invalid statement label
+ error on line 190 of €: invalid statement label
+ error on line 193 of €: invalid statement label
+ error on line 194 of €: invalid statement label
+ error on line 195 of €: invalid statement label
+ error on line 197 of €: invalid statement label
+ error on line 200 of €: invalid statement label
+ error on line 201 of €: invalid statement label
+ error on line 202 of €: invalid statement label
+ error on line 203 of €: invalid statement label
+ error on line 204 of €: invalid statement label
+ error on line 205 of €: invalid statement label
+ error on line 206 of €: invalid statement label
+ error on line 207 of €: invalid statement label
+ error on line 208 of €: invalid statement label
+ error on line 209 of €: invalid statement label
+ error on line 210 of €: invalid statement label
+ error on line 211 of €: invalid statement label
+ error on line 213 of €: invalid statement label
+ error on line 216 of €: invalid statement label
+ error on line 217 of €: invalid statement label
+ error on line 218 of €: invalid statement label
+ error on line 219 of €: invalid statement label
+ error on line 221 of €: invalid statement label
+ error on line 224 of €: invalid statement label
+ error on line 225 of €: invalid statement label
+ error on line 226 of €: invalid statement label
+ error on line 227 of €: invalid statement label
+ error on line 228 of €: invalid statement label
+ error on line 229 of €: invalid statement label
+ error on line 230 of €: invalid statement label
+ error on line 231 of €: invalid statement label
+ error on line 232 of €: invalid statement label
+ error on line 233 of €: invalid statement label
+ error on line 235 of €: invalid statement label
+ error on line 238 of €: invalid statement label
+ error on line 240 of €: invalid statement label
+ error on line 242 of €: invalid statement label
+ error on line 248 of €: invalid statement label
+ error on line 249 of €: invalid statement label
+ error on line 250 of €: invalid statement label
+ error on line 252 of €: invalid statement label
+ error on line 253 of €: invalid statement label
+ error on line 254 of €: invalid statement label
+ error on line 255 of €: spelling error?
+ error on line 256 of €: invalid statement label
+ error on line 257 of €: spelling error?
+ error on line 258 of €: invalid statement label
+ error on line 259 of €: spelling error?
+ error on line 260 of €: invalid statement label
+ error on line 261 of €: invalid statement label
+ error on line 262 of €: invalid statement label
+ error on line 263 of €: invalid statement label
+ error on line 264 of €: invalid statement label
+ error on line 265 of €: invalid statement label
+ error on line 266 of €: invalid statement label
+ error on line 268 of €: invalid statement label
+ error on line 273 of €: invalid statement label
+ error on line 275 of €: invalid statement label
+ error on line 276 of €: invalid statement label
+ error on line 277 of €: invalid statement label
+ error on line 278 of €: invalid statement label
+ error on line 279 of €: spelling error?
+ error on line 280 of €: invalid statement label
+ error on line 281 of €: spelling error?
+ error on line 282 of €: invalid statement label
+ error on line 283 of €: spelling error?
+ error on line 284 of €: invalid statement label
+ error on line 285 of €: invalid statement label
+ error on line 286 of €: spelling error?
+ error on line 287 of €: invalid statement label
+ error on line 288 of €: invalid statement label
+ error on line 289 of €: invalid statement label
+ error on line 291 of €: invalid statement label
+ error on line 296 of €: invalid statement label
+ error on line 297 of €: invalid statement label
+ error on line 298 of €: invalid statement label
+ error on line 300 of €: invalid statement label
+ error on line 304 of €: invalid statement label
+ error on line 305 of €: spelling error?
+ error on line 306 of €: invalid statement label
+ error on line 307 of €: invalid statement label
+ error on line 308 of €: invalid statement label
+ error on line 309 of €: invalid statement label
+ error on line 310 of €: invalid statement label
+ error on line 312 of €: invalid statement label
+ error on line 316 of €: invalid statement label
+ error on line 317 of €: spelling error?
+ error on line 318 of €: invalid statement label
+ error on line 321 of €: invalid statement label
+ error on line 322 of €: invalid statement label
+ error on line 323 of €: invalid statement label
+ error on line 325 of €: invalid statement label
+ error on line 330 of €: invalid statement label
+ error on line 330 of €: illegal syntax
+ error on line 332 of €: invalid statement label
+ error on line 330 of €: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 0 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 1 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 2 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 3 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 4 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 5 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 6 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 7 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 8 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 9 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 10 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 11 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 12 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 13 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 14 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 15 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 16 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 17 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 18 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 19 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 20 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 21 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 22 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 23 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 24 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 25 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 26 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 27 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 29 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 34 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 35 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 36 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 37 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 39 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 44 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 46 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 47 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 48 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 50 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 52 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 53 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 54 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 55 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 56 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 57 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 58 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 59 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 60 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 61 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 62 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 63 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 64 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 66 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 67 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 68 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 70 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 75 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 76 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 78 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 79 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 81 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 82 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 83 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 84 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 85 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 86 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 87 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 88 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 91 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 97 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 102 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 103 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 105 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 111 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 112 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 113 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 114 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 115 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 116 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 117 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 118 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 119 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 120 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 121 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 122 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 123 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 124 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 125 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 126 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 127 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 128 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 129 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 130 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 132 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 137 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 143 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 144 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 145 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 146 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 148 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 149 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 150 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 151 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 152 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 155 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 161 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 162 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 163 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 164 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 165 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 166 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 167 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 168 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 169 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 170 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 171 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 172 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 173 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 174 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 175 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 176 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 177 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 178 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 179 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 180 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 181 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 182 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 183 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 184 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 185 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 186 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 187 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 188 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 189 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 190 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 191 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 192 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 193 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 195 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 200 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 201 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 202 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 203 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 204 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 205 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 206 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 207 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 208 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 209 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 210 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 211 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 212 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 214 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 219 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 220 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 221 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 222 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 223 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 224 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 225 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 226 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 228 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 233 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 234 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 238 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 239 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 241 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 246 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 248 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 249 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 252 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 253 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 254 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 255 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 256 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 257 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 258 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 259 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 260 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 261 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 262 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 263 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 264 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 265 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 267 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 272 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 273 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 274 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 275 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 276 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 277 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 278 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 279 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 281 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 285 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 286 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 287 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 288 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 289 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 290 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 293 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 297 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 298 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 299 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 300 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 301 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 303 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 304 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 305 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 306 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 308 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 312 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 313 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 314 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 315 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 316 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 317 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 318 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 319 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 321 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 326 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 327 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 328 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 329 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 330 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 331 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 334 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 335 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 337 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 342 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 344 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 345 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 346 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 347 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 348 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 349 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 351 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 352 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 353 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 354 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 355 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 356 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 358 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 359 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 360 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 361 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 362 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 363 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 366 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 373 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 374 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 375 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 376 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 377 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 378 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 379 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 380 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 381 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 382 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 382 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 382 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of pgapackf.h: invalid statement label
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 24 of pgapackf.h: invalid statement label
+ error on line 25 of pgapackf.h: invalid statement label
+ error on line 26 of pgapackf.h: invalid statement label
+ error on line 27 of pgapackf.h: invalid statement label
+ error on line 28 of pgapackf.h: invalid statement label
+ error on line 29 of pgapackf.h: invalid statement label
+ error on line 30 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 37 of pgapackf.h: invalid statement label
+ error on line 37 of pgapackf.h: illegal syntax
+ error on line 39 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 41 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@pË
+@: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@pË
+@: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@pË
+@: invalid statement label
+ error on line 37 of L`ÿ¿H`
+@¡@pË
+@: illegal syntax
+ error on line 31 of ìhÿ¿: illegal syntax
+ error on line 1 of @qÿ¿*: illegal syntax
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 1 of yÿ¿e: invalid statement label
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: invalid statement label
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 3 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 28 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 5 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 4 of ®ÿ¿0³ÿ¿
+: invalid statement label
+ error on line 1 of ®ÿ¿0³ÿ¿
+: illegal syntax
+ error on line 1 of ÿÿÿÿ: invalid statement label
+ error on line 1 of ÿÿÿÿ: illegal syntax
+ error on line 1 of lid statement label
+or on line 352 of üÝinvalid statement label
+or on line 351 of üÝinvalid statement label
+or on line 349 of üÝinvalid statement label
+or on line 348 of üÝinvalid statement label
+or on line 347 of üÝinvalid statement label
+or on line 346 of üÝinvalid statement label
+or on line 345 of üÝinvalid statement label
+or on line 344 o@ß
+
+@Ô@@: invalid statement label
+ error on line 1 of lid statement label
+or on line 352 of üÝinvalid statement label
+or on line 351 of üÝinvalid statement label
+or on line 349 of üÝinvalid statement label
+or on line 348 of üÝinvalid statement label
+or on line 347 of üÝinvalid statement label
+or on line 346 of üÝinvalid statement label
+or on line 345 of üÝinvalid statement label
+or on line 344 o@ß
+
+@Ô@@: illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of €: invalid statement label
+ error on line 1 of €: illegal syntax
+ error on line 1 of €: invalid statement label
+ error on line 1 of €: too many continuation lines
+ error on line 0 of €: invalid statement label
+ error on line 1 of €: invalid statement label
+ error on line 2 of €: invalid statement label
+ error on line 5 of €: invalid statement label
+ error on line 8 of €: invalid statement label
+ error on line 9 of €: invalid statement label
+ error on line 10 of €: invalid statement label
+ error on line 11 of €: invalid statement label
+ error on line 12 of €: invalid statement label
+ error on line 13 of €: invalid statement label
+ error on line 14 of €: invalid statement label
+ error on line 15 of €: invalid statement label
+ error on line 16 of €: invalid statement label
+ error on line 17 of €: invalid statement label
+ error on line 18 of €: invalid statement label
+ error on line 19 of €: invalid statement label
+ error on line 20 of €: invalid statement label
+ error on line 21 of €: invalid statement label
+ error on line 22 of €: invalid statement label
+ error on line 23 of €: invalid statement label
+ error on line 24 of €: invalid statement label
+ error on line 25 of €: invalid statement label
+ error on line 26 of €: invalid statement label
+ error on line 27 of €: invalid statement label
+ error on line 28 of €: invalid statement label
+ error on line 29 of €: invalid statement label
+ error on line 30 of €: invalid statement label
+ error on line 31 of €: invalid statement label
+ error on line 32 of €: invalid statement label
+ error on line 33 of €: invalid statement label
+ error on line 34 of €: invalid statement label
+ error on line 35 of €: invalid statement label
+ error on line 36 of €: invalid statement label
+ error on line 37 of €: invalid statement label
+ error on line 38 of €: invalid statement label
+ error on line 39 of €: invalid statement label
+ error on line 40 of €: invalid statement label
+ error on line 41 of €: invalid statement label
+ error on line 42 of €: invalid statement label
+ error on line 43 of €: invalid statement label
+ error on line 44 of €: invalid statement label
+ error on line 45 of €: invalid statement label
+ error on line 46 of €: invalid statement label
+ error on line 47 of €: invalid statement label
+ error on line 48 of €: invalid statement label
+ error on line 50 of €: invalid statement label
+ error on line 51 of €: invalid statement label
+ error on line 52 of €: invalid statement label
+ error on line 53 of €: invalid statement label
+ error on line 57 of €: invalid statement label
+ error on line 60 of €: invalid statement label
+ error on line 61 of €: invalid statement label
+ error on line 62 of €: invalid statement label
+ error on line 63 of €: invalid statement label
+ error on line 64 of €: invalid statement label
+ error on line 65 of €: invalid statement label
+ error on line 66 of €: invalid statement label
+ error on line 67 of €: invalid statement label
+ error on line 68 of €: invalid statement label
+ error on line 69 of €: invalid statement label
+ error on line 70 of €: invalid statement label
+ error on line 71 of €: invalid statement label
+ error on line 73 of €: invalid statement label
+ error on line 74 of €: invalid statement label
+ error on line 75 of €: alpha character expected
+ error on line 76 of €: invalid statement label
+ error on line 77 of €: invalid statement label
+ error on line 78 of €: invalid statement label
+ error on line 79 of €: invalid statement label
+ error on line 80 of €: invalid statement label
+ error on line 81 of €: invalid statement label
+ error on line 82 of €: alpha character expected
+ error on line 83 of €: invalid statement label
+ error on line 85 of €: invalid statement label
+ error on line 86 of €: invalid statement label
+ error on line 87 of €: alpha character expected
+ error on line 88 of €: invalid statement label
+ error on line 90 of €: invalid statement label
+ error on line 91 of €: invalid statement label
+ error on line 93 of €: invalid statement label
+ error on line 94 of €: spelling error?
+ error on line 95 of €: DATA statement syntax error
+ error on line 97 of €: invalid statement label
+ error on line 98 of €: invalid statement label
+ error on line 100 of €: invalid statement label
+ error on line 101 of €: invalid statement label
+ error on line 102 of €: invalid statement label
+ error on line 103 of €: invalid statement label
+ error on line 104 of €: invalid statement label
+ error on line 108 of €: invalid statement label
+ error on line 112 of €: invalid statement label
+ error on line 114 of €: invalid statement label
+ error on line 115 of €: invalid statement label
+ error on line 116 of €: invalid statement label
+ error on line 117 of €: invalid statement label
+ error on line 118 of €: invalid statement label
+ error on line 119 of €: invalid statement label
+ error on line 120 of €: invalid statement label
+ error on line 121 of €: invalid statement label
+ error on line 122 of €: invalid statement label
+ error on line 123 of €: invalid statement label
+ error on line 124 of €: invalid statement label
+ error on line 96 of €: spelling error?
+ error on line 125 of €: alpha character expected
+ error on line 126 of €: invalid statement label
+ error on line 127 of €: invalid statement label
+ error on line 128 of €: invalid statement label
+ error on line 129 of €: invalid statement label
+ error on line 130 of €: invalid statement label
+ error on line 131 of €: invalid statement label
+ error on line 133 of €: invalid statement label
+ error on line 134 of €: invalid statement label
+ error on line 135 of €: alpha character expected
+ error on line 136 of €: invalid statement label
+ error on line 138 of €: invalid statement label
+ error on line 139 of €: invalid statement label
+ error on line 140 of €: invalid statement label
+ error on line 141 of €: invalid statement label
+ error on line 143 of €: invalid statement label
+ error on line 144 of €: invalid statement label
+ error on line 145 of €: invalid statement label
+ error on line 146 of €: invalid statement label
+ error on line 148 of €: invalid statement label
+ error on line 150 of €: invalid statement label
+ error on line 152 of €: invalid statement label
+ error on line 155 of €: invalid statement label
+ error on line 156 of €: invalid statement label
+ error on line 157 of €: invalid statement label
+ error on line 158 of €: invalid statement label
+ error on line 159 of €: invalid statement label
+ error on line 160 of €: invalid statement label
+ error on line 161 of €: invalid statement label
+ error on line 163 of €: invalid statement label
+ error on line 166 of €: invalid statement label
+ error on line 174 of €: invalid statement label
+ error on line 177 of €: invalid statement label
+ error on line 180 of €: invalid statement label
+ error on line 181 of €: invalid statement label
+ error on line 182 of €: invalid statement label
+ error on line 183 of €: invalid statement label
+ error on line 184 of €: invalid statement label
+ error on line 185 of €: invalid statement label
+ error on line 186 of €: invalid statement label
+ error on line 187 of €: invalid statement label
+ error on line 190 of €: invalid statement label
+ error on line 193 of €: invalid statement label
+ error on line 194 of €: invalid statement label
+ error on line 195 of €: invalid statement label
+ error on line 197 of €: invalid statement label
+ error on line 200 of €: invalid statement label
+ error on line 201 of €: invalid statement label
+ error on line 202 of €: invalid statement label
+ error on line 203 of €: invalid statement label
+ error on line 204 of €: invalid statement label
+ error on line 205 of €: invalid statement label
+ error on line 206 of €: invalid statement label
+ error on line 207 of €: invalid statement label
+ error on line 208 of €: invalid statement label
+ error on line 209 of €: invalid statement label
+ error on line 210 of €: invalid statement label
+ error on line 211 of €: invalid statement label
+ error on line 213 of €: invalid statement label
+ error on line 216 of €: invalid statement label
+ error on line 217 of €: invalid statement label
+ error on line 218 of €: invalid statement label
+ error on line 219 of €: invalid statement label
+ error on line 221 of €: invalid statement label
+ error on line 224 of €: invalid statement label
+ error on line 225 of €: invalid statement label
+ error on line 226 of €: invalid statement label
+ error on line 227 of €: invalid statement label
+ error on line 228 of €: invalid statement label
+ error on line 229 of €: invalid statement label
+ error on line 230 of €: invalid statement label
+ error on line 231 of €: invalid statement label
+ error on line 232 of €: invalid statement label
+ error on line 233 of €: invalid statement label
+ error on line 235 of €: invalid statement label
+ error on line 238 of €: invalid statement label
+ error on line 240 of €: invalid statement label
+ error on line 242 of €: invalid statement label
+ error on line 248 of €: invalid statement label
+ error on line 249 of €: invalid statement label
+ error on line 250 of €: invalid statement label
+ error on line 252 of €: invalid statement label
+ error on line 253 of €: invalid statement label
+ error on line 254 of €: invalid statement label
+ error on line 255 of €: spelling error?
+ error on line 256 of €: invalid statement label
+ error on line 257 of €: spelling error?
+ error on line 258 of €: invalid statement label
+ error on line 259 of €: spelling error?
+ error on line 260 of €: invalid statement label
+ error on line 261 of €: invalid statement label
+ error on line 262 of €: invalid statement label
+ error on line 263 of €: invalid statement label
+ error on line 264 of €: invalid statement label
+ error on line 265 of €: invalid statement label
+ error on line 266 of €: invalid statement label
+ error on line 268 of €: invalid statement label
+ error on line 273 of €: invalid statement label
+ error on line 275 of €: invalid statement label
+ error on line 276 of €: invalid statement label
+ error on line 277 of €: invalid statement label
+ error on line 278 of €: invalid statement label
+ error on line 279 of €: spelling error?
+ error on line 280 of €: invalid statement label
+ error on line 281 of €: spelling error?
+ error on line 282 of €: invalid statement label
+ error on line 283 of €: spelling error?
+ error on line 284 of €: invalid statement label
+ error on line 285 of €: invalid statement label
+ error on line 286 of €: spelling error?
+ error on line 287 of €: invalid statement label
+ error on line 288 of €: invalid statement label
+ error on line 289 of €: invalid statement label
+ error on line 291 of €: invalid statement label
+ error on line 296 of €: invalid statement label
+ error on line 297 of €: invalid statement label
+ error on line 298 of €: invalid statement label
+ error on line 300 of €: invalid statement label
+ error on line 304 of €: invalid statement label
+ error on line 305 of €: spelling error?
+ error on line 306 of €: invalid statement label
+ error on line 307 of €: invalid statement label
+ error on line 308 of €: invalid statement label
+ error on line 309 of €: invalid statement label
+ error on line 310 of €: invalid statement label
+ error on line 312 of €: invalid statement label
+ error on line 316 of €: invalid statement label
+ error on line 317 of €: spelling error?
+ error on line 318 of €: invalid statement label
+ error on line 321 of €: invalid statement label
+ error on line 322 of €: invalid statement label
+ error on line 323 of €: invalid statement label
+ error on line 325 of €: invalid statement label
+ error on line 330 of €: invalid statement label
+ error on line 330 of €: illegal syntax
+ error on line 332 of €: invalid statement label
+ error on line 330 of €: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 0 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 1 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 2 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 3 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 4 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 5 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 6 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 7 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 8 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 9 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 10 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 11 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 12 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 13 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 14 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 15 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 16 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 17 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 18 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 19 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 20 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 21 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 22 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 23 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 24 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 25 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 26 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 27 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 29 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 34 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 35 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 36 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 37 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 39 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 44 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 46 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 47 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 48 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 50 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 52 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 53 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 54 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 55 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 56 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 57 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 58 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 59 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 60 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 61 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 62 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 63 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 64 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 66 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 67 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 68 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 70 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 75 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 76 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 78 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 79 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 81 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 82 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 83 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 84 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 85 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 86 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 87 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 88 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 91 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 97 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 102 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 103 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 105 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 111 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 112 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 113 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 114 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 115 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 116 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 117 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 118 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 119 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 120 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 121 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 122 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 123 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 124 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 125 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 126 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 127 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 128 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 129 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 130 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 132 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 137 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 143 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 144 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 145 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 146 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 148 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 149 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 150 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 151 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 152 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 155 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 161 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 162 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 163 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 164 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 165 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 166 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 167 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 168 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 169 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 170 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 171 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 172 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 173 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 174 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 175 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 176 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 177 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 178 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 179 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 180 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 181 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 182 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 183 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 184 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 185 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 186 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 187 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 188 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 189 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 190 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 191 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 192 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 193 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 195 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 200 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 201 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 202 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 203 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 204 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 205 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 206 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 207 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 208 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 209 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 210 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 211 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 212 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 214 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 219 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 220 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 221 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 222 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 223 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 224 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 225 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 226 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 228 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 233 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 234 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 238 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 239 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 241 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 246 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 248 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 249 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 252 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 253 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 254 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 255 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 256 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 257 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 258 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 259 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 260 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 261 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 262 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 263 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 264 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 265 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 267 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 272 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 273 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 274 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 275 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 276 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 277 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 278 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 279 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 281 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 285 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 286 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 287 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 288 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 289 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 290 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 293 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 297 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 298 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 299 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 300 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 301 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 303 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 304 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 305 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 306 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 308 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 312 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 313 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 314 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 315 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 316 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 317 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 318 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 319 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 321 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 326 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 327 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 328 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 329 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 330 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 331 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 334 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 335 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 337 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 342 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 344 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 345 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 346 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 347 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 348 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 349 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 351 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 352 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 353 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 354 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 355 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 356 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 358 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 359 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 360 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 361 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 362 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 363 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 366 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 373 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 374 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 375 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 376 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 377 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 378 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 379 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 380 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 381 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 382 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 382 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 382 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of pgapackf.h: invalid statement label
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 24 of pgapackf.h: invalid statement label
+ error on line 25 of pgapackf.h: invalid statement label
+ error on line 26 of pgapackf.h: invalid statement label
+ error on line 27 of pgapackf.h: invalid statement label
+ error on line 28 of pgapackf.h: invalid statement label
+ error on line 29 of pgapackf.h: invalid statement label
+ error on line 30 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 37 of pgapackf.h: invalid statement label
+ error on line 37 of pgapackf.h: illegal syntax
+ error on line 39 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 41 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@PÍ
+@: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@PÍ
+@: illegal syntax
+ error on line 1 of L`ÿ¿H`
+@¡@PÍ
+@: invalid statement label
+ error on line 37 of L`ÿ¿H`
+@¡@PÍ
+@: illegal syntax
+ error on line 31 of ìhÿ¿: illegal syntax
+ error on line 1 of @qÿ¿*: illegal syntax
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 1 of yÿ¿e: invalid statement label
+ error on line 1 of yÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 28 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: invalid statement label
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 14 of èÿ¿e: illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 3 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 28 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 5 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 4 of ®ÿ¿0³ÿ¿
+: invalid statement label
+ error on line 1 of ®ÿ¿0³ÿ¿
+: illegal syntax
+ error on line 1 of ÿÿÿÿ: invalid statement label
+ error on line 1 of ÿÿÿÿ: illegal syntax
+ error on line 1 of lid statement label
+or on line 352 of üÝinvalid statement label
+or on line 351 of üÝinvalid statement label
+or on line 349 of üÝinvalid statement label
+or on line 348 of üÝinvalid statement label
+or on line 347 of üÝinvalid statement label
+or on line 346 of üÝinvalid statement label
+or on line 345 of üÝinvalid statement label
+or on line 344 o@ß
+
+@Ô@@: invalid statement label
+ error on line 1 of lid statement label
+or on line 352 of üÝinvalid statement label
+or on line 351 of üÝinvalid statement label
+or on line 349 of üÝinvalid statement label
+or on line 348 of üÝinvalid statement label
+or on line 347 of üÝinvalid statement label
+or on line 346 of üÝinvalid statement label
+or on line 345 of üÝinvalid statement label
+or on line 344 o@ß
+
+@Ô@@: illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of €: invalid statement label
+ error on line 1 of €: illegal syntax
+ error on line 1 of €: invalid statement label
+ error on line 1 of €: too many continuation lines
+ error on line 0 of €: invalid statement label
+ error on line 1 of €: invalid statement label
+ error on line 2 of €: invalid statement label
+ error on line 5 of €: invalid statement label
+ error on line 8 of €: invalid statement label
+ error on line 9 of €: invalid statement label
+ error on line 10 of €: invalid statement label
+ error on line 11 of €: invalid statement label
+ error on line 12 of €: invalid statement label
+ error on line 13 of €: invalid statement label
+ error on line 14 of €: invalid statement label
+ error on line 15 of €: invalid statement label
+ error on line 16 of €: invalid statement label
+ error on line 17 of €: invalid statement label
+ error on line 18 of €: invalid statement label
+ error on line 19 of €: invalid statement label
+ error on line 20 of €: invalid statement label
+ error on line 21 of €: invalid statement label
+ error on line 22 of €: invalid statement label
+ error on line 23 of €: invalid statement label
+ error on line 24 of €: invalid statement label
+ error on line 25 of €: invalid statement label
+ error on line 26 of €: invalid statement label
+ error on line 27 of €: invalid statement label
+ error on line 28 of €: invalid statement label
+ error on line 29 of €: invalid statement label
+ error on line 30 of €: invalid statement label
+ error on line 31 of €: invalid statement label
+ error on line 32 of €: invalid statement label
+ error on line 33 of €: invalid statement label
+ error on line 34 of €: invalid statement label
+ error on line 35 of €: invalid statement label
+ error on line 36 of €: invalid statement label
+ error on line 37 of €: invalid statement label
+ error on line 38 of €: invalid statement label
+ error on line 39 of €: invalid statement label
+ error on line 40 of €: invalid statement label
+ error on line 41 of €: invalid statement label
+ error on line 42 of €: invalid statement label
+ error on line 43 of €: invalid statement label
+ error on line 44 of €: invalid statement label
+ error on line 45 of €: invalid statement label
+ error on line 46 of €: invalid statement label
+ error on line 47 of €: invalid statement label
+ error on line 48 of €: invalid statement label
+ error on line 50 of €: invalid statement label
+ error on line 51 of €: invalid statement label
+ error on line 52 of €: invalid statement label
+ error on line 53 of €: invalid statement label
+ error on line 57 of €: invalid statement label
+ error on line 60 of €: invalid statement label
+ error on line 61 of €: invalid statement label
+ error on line 62 of €: invalid statement label
+ error on line 63 of €: invalid statement label
+ error on line 64 of €: invalid statement label
+ error on line 65 of €: invalid statement label
+ error on line 66 of €: invalid statement label
+ error on line 67 of €: invalid statement label
+ error on line 68 of €: invalid statement label
+ error on line 69 of €: invalid statement label
+ error on line 70 of €: invalid statement label
+ error on line 71 of €: invalid statement label
+ error on line 73 of €: invalid statement label
+ error on line 74 of €: invalid statement label
+ error on line 75 of €: alpha character expected
+ error on line 76 of €: invalid statement label
+ error on line 77 of €: invalid statement label
+ error on line 78 of €: invalid statement label
+ error on line 79 of €: invalid statement label
+ error on line 80 of €: invalid statement label
+ error on line 81 of €: invalid statement label
+ error on line 82 of €: alpha character expected
+ error on line 83 of €: invalid statement label
+ error on line 85 of €: invalid statement label
+ error on line 86 of €: invalid statement label
+ error on line 87 of €: alpha character expected
+ error on line 88 of €: invalid statement label
+ error on line 90 of €: invalid statement label
+ error on line 91 of €: invalid statement label
+ error on line 93 of €: invalid statement label
+ error on line 94 of €: spelling error?
+ error on line 95 of €: DATA statement syntax error
+ error on line 97 of €: invalid statement label
+ error on line 98 of €: invalid statement label
+ error on line 100 of €: invalid statement label
+ error on line 101 of €: invalid statement label
+ error on line 102 of €: invalid statement label
+ error on line 103 of €: invalid statement label
+ error on line 104 of €: invalid statement label
+ error on line 108 of €: invalid statement label
+ error on line 112 of €: invalid statement label
+ error on line 114 of €: invalid statement label
+ error on line 115 of €: invalid statement label
+ error on line 116 of €: invalid statement label
+ error on line 117 of €: invalid statement label
+ error on line 118 of €: invalid statement label
+ error on line 119 of €: invalid statement label
+ error on line 120 of €: invalid statement label
+ error on line 121 of €: invalid statement label
+ error on line 122 of €: invalid statement label
+ error on line 123 of €: invalid statement label
+ error on line 124 of €: invalid statement label
+ error on line 96 of €: spelling error?
+ error on line 125 of €: alpha character expected
+ error on line 126 of €: invalid statement label
+ error on line 127 of €: invalid statement label
+ error on line 128 of €: invalid statement label
+ error on line 129 of €: invalid statement label
+ error on line 130 of €: invalid statement label
+ error on line 131 of €: invalid statement label
+ error on line 133 of €: invalid statement label
+ error on line 134 of €: invalid statement label
+ error on line 135 of €: alpha character expected
+ error on line 136 of €: invalid statement label
+ error on line 138 of €: invalid statement label
+ error on line 139 of €: invalid statement label
+ error on line 140 of €: invalid statement label
+ error on line 141 of €: invalid statement label
+ error on line 143 of €: invalid statement label
+ error on line 144 of €: invalid statement label
+ error on line 145 of €: invalid statement label
+ error on line 146 of €: invalid statement label
+ error on line 148 of €: invalid statement label
+ error on line 150 of €: invalid statement label
+ error on line 152 of €: invalid statement label
+ error on line 155 of €: invalid statement label
+ error on line 156 of €: invalid statement label
+ error on line 157 of €: invalid statement label
+ error on line 158 of €: invalid statement label
+ error on line 159 of €: invalid statement label
+ error on line 160 of €: invalid statement label
+ error on line 161 of €: invalid statement label
+ error on line 163 of €: invalid statement label
+ error on line 166 of €: invalid statement label
+ error on line 174 of €: invalid statement label
+ error on line 177 of €: invalid statement label
+ error on line 180 of €: invalid statement label
+ error on line 181 of €: invalid statement label
+ error on line 182 of €: invalid statement label
+ error on line 183 of €: invalid statement label
+ error on line 184 of €: invalid statement label
+ error on line 185 of €: invalid statement label
+ error on line 186 of €: invalid statement label
+ error on line 187 of €: invalid statement label
+ error on line 190 of €: invalid statement label
+ error on line 193 of €: invalid statement label
+ error on line 194 of €: invalid statement label
+ error on line 195 of €: invalid statement label
+ error on line 197 of €: invalid statement label
+ error on line 200 of €: invalid statement label
+ error on line 201 of €: invalid statement label
+ error on line 202 of €: invalid statement label
+ error on line 203 of €: invalid statement label
+ error on line 204 of €: invalid statement label
+ error on line 205 of €: invalid statement label
+ error on line 206 of €: invalid statement label
+ error on line 207 of €: invalid statement label
+ error on line 208 of €: invalid statement label
+ error on line 209 of €: invalid statement label
+ error on line 210 of €: invalid statement label
+ error on line 211 of €: invalid statement label
+ error on line 213 of €: invalid statement label
+ error on line 216 of €: invalid statement label
+ error on line 217 of €: invalid statement label
+ error on line 218 of €: invalid statement label
+ error on line 219 of €: invalid statement label
+ error on line 221 of €: invalid statement label
+ error on line 224 of €: invalid statement label
+ error on line 225 of €: invalid statement label
+ error on line 226 of €: invalid statement label
+ error on line 227 of €: invalid statement label
+ error on line 228 of €: invalid statement label
+ error on line 229 of €: invalid statement label
+ error on line 230 of €: invalid statement label
+ error on line 231 of €: invalid statement label
+ error on line 232 of €: invalid statement label
+ error on line 233 of €: invalid statement label
+ error on line 235 of €: invalid statement label
+ error on line 238 of €: invalid statement label
+ error on line 240 of €: invalid statement label
+ error on line 242 of €: invalid statement label
+ error on line 248 of €: invalid statement label
+ error on line 249 of €: invalid statement label
+ error on line 250 of €: invalid statement label
+ error on line 252 of €: invalid statement label
+ error on line 253 of €: invalid statement label
+ error on line 254 of €: invalid statement label
+ error on line 255 of €: spelling error?
+ error on line 256 of €: invalid statement label
+ error on line 257 of €: spelling error?
+ error on line 258 of €: invalid statement label
+ error on line 259 of €: spelling error?
+ error on line 260 of €: invalid statement label
+ error on line 261 of €: invalid statement label
+ error on line 262 of €: invalid statement label
+ error on line 263 of €: invalid statement label
+ error on line 264 of €: invalid statement label
+ error on line 265 of €: invalid statement label
+ error on line 266 of €: invalid statement label
+ error on line 268 of €: invalid statement label
+ error on line 273 of €: invalid statement label
+ error on line 275 of €: invalid statement label
+ error on line 276 of €: invalid statement label
+ error on line 277 of €: invalid statement label
+ error on line 278 of €: invalid statement label
+ error on line 279 of €: spelling error?
+ error on line 280 of €: invalid statement label
+ error on line 281 of €: spelling error?
+ error on line 282 of €: invalid statement label
+ error on line 283 of €: spelling error?
+ error on line 284 of €: invalid statement label
+ error on line 285 of €: invalid statement label
+ error on line 286 of €: spelling error?
+ error on line 287 of €: invalid statement label
+ error on line 288 of €: invalid statement label
+ error on line 289 of €: invalid statement label
+ error on line 291 of €: invalid statement label
+ error on line 296 of €: invalid statement label
+ error on line 297 of €: invalid statement label
+ error on line 298 of €: invalid statement label
+ error on line 300 of €: invalid statement label
+ error on line 304 of €: invalid statement label
+ error on line 305 of €: spelling error?
+ error on line 306 of €: invalid statement label
+ error on line 307 of €: invalid statement label
+ error on line 308 of €: invalid statement label
+ error on line 309 of €: invalid statement label
+ error on line 310 of €: invalid statement label
+ error on line 312 of €: invalid statement label
+ error on line 316 of €: invalid statement label
+ error on line 317 of €: spelling error?
+ error on line 318 of €: invalid statement label
+ error on line 321 of €: invalid statement label
+ error on line 322 of €: invalid statement label
+ error on line 323 of €: invalid statement label
+ error on line 325 of €: invalid statement label
+ error on line 330 of €: invalid statement label
+ error on line 330 of €: illegal syntax
+ error on line 332 of €: invalid statement label
+ error on line 330 of €: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 1 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 0 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 1 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 2 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 3 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 4 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 5 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 6 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 7 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 8 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 9 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 10 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 11 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 12 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 13 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 14 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 15 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 16 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 17 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 18 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 19 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 20 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 21 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 22 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 23 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 24 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 25 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 26 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 27 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 29 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 34 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 35 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 36 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 37 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 39 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 44 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 46 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 47 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 48 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 50 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 52 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 53 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 54 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 55 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 56 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 57 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 58 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 59 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 60 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 61 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 62 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 63 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 64 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 66 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 67 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 68 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 70 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 75 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 76 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 78 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 79 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 81 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 82 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 83 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 84 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 85 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 86 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 87 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 88 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 91 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 97 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 102 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 103 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 105 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 111 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 112 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 113 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 114 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 115 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 116 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 117 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 118 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 119 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 120 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 121 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 122 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 123 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 124 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 125 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 126 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 127 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 128 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 129 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 130 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 132 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 137 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 143 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 144 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 145 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 146 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 148 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 149 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 150 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 151 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 152 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 155 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 161 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 162 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 163 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 164 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 165 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 166 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 167 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 168 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 169 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 170 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 171 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 172 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 173 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 174 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 175 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 176 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 177 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 178 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 179 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 180 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 181 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 182 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 183 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 184 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 185 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 186 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 187 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 188 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 189 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 190 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 191 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 192 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 193 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 195 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 200 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 201 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 202 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 203 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 204 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 205 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 206 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 207 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 208 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 209 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 210 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 211 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 212 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 214 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 219 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 220 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 221 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 222 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 223 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 224 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 225 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 226 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 228 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 233 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 234 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 238 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 239 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 241 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 246 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 248 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 249 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 252 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 253 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 254 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 255 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 256 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 257 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 258 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 259 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 260 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 261 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 262 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 263 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 264 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 265 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 267 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 272 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 273 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 274 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 275 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 276 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 277 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 278 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 279 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 281 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 285 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 286 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 287 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 288 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 289 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 290 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 293 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 297 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 298 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 299 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 300 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 301 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 303 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 304 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 305 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 306 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 308 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 312 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 313 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 314 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 315 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 316 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 317 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 318 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 319 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 321 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 326 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 327 of üÝÿ¿·ÀÚ: spelling error?
+ error on line 328 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 329 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 330 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 331 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 334 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 335 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 337 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 342 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 344 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 345 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 346 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 347 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 348 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 349 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 351 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 352 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 353 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 354 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 355 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 356 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 358 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 359 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 360 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 361 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 362 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 363 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 366 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 373 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 374 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 375 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 376 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 377 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 378 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 379 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 380 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 381 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 382 of üÝÿ¿·ÀÚ: invalid statement label
+ error on line 382 of üÝÿ¿·ÀÚ: illegal syntax
+ error on line 382 of üÝÿ¿·ÀÚ: illegal syntax
+
+make[4]: *** [classic] Error 1
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/fortran'
+make[3]: *** [default] Error 2
+make[3]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/fortran'
+make[3]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/mgh'
+Compiling mgh library
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/mgh'
+make[4]: `tprobs.a' is up to date.
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/mgh'
+Compiling mgh testprog
+make[4]: Entering directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/mgh'
+FORTRAN 77 Compiler 7.5, Copyright (c) 1987-2001, Absoft Corp.
+ error on line 1 of pgapackf.h: invalid statement label
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 24 of pgapackf.h: invalid statement label
+ error on line 25 of pgapackf.h: invalid statement label
+ error on line 26 of pgapackf.h: invalid statement label
+ error on line 27 of pgapackf.h: invalid statement label
+ error on line 28 of pgapackf.h: invalid statement label
+ error on line 29 of pgapackf.h: invalid statement label
+ error on line 30 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 37 of pgapackf.h: invalid statement label
+ error on line 37 of pgapackf.h: illegal syntax
+ error on line 39 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 41 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 37 of : illegal syntax
+ error on line 31 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 28 of : illegal syntax
+ error on line 14 of : invalid statement label
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 14 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 3 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 28 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 5 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 4 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of 7
+: invalid statement label
+ error on line 1 of 7
+: too many continuation lines
+ error on line 0 of 7
+: invalid statement label
+ error on line 1 of 7
+: invalid statement label
+ error on line 2 of 7
+: invalid statement label
+ error on line 5 of 7
+: invalid statement label
+ error on line 8 of 7
+: invalid statement label
+ error on line 9 of 7
+: invalid statement label
+ error on line 10 of 7
+: invalid statement label
+ error on line 11 of 7
+: invalid statement label
+ error on line 12 of 7
+: invalid statement label
+ error on line 13 of 7
+: invalid statement label
+ error on line 14 of 7
+: invalid statement label
+ error on line 15 of 7
+: invalid statement label
+ error on line 16 of 7
+: invalid statement label
+ error on line 17 of 7
+: invalid statement label
+ error on line 18 of 7
+: invalid statement label
+ error on line 19 of 7
+: invalid statement label
+ error on line 20 of 7
+: invalid statement label
+ error on line 21 of 7
+: invalid statement label
+ error on line 22 of 7
+: invalid statement label
+ error on line 23 of 7
+: invalid statement label
+ error on line 24 of 7
+: invalid statement label
+ error on line 25 of 7
+: invalid statement label
+ error on line 26 of 7
+: invalid statement label
+ error on line 27 of 7
+: invalid statement label
+ error on line 28 of 7
+: invalid statement label
+ error on line 29 of 7
+: invalid statement label
+ error on line 30 of 7
+: invalid statement label
+ error on line 31 of 7
+: invalid statement label
+ error on line 32 of 7
+: invalid statement label
+ error on line 33 of 7
+: invalid statement label
+ error on line 34 of 7
+: invalid statement label
+ error on line 35 of 7
+: invalid statement label
+ error on line 36 of 7
+: invalid statement label
+ error on line 37 of 7
+: invalid statement label
+ error on line 38 of 7
+: invalid statement label
+ error on line 39 of 7
+: invalid statement label
+ error on line 40 of 7
+: invalid statement label
+ error on line 41 of 7
+: invalid statement label
+ error on line 42 of 7
+: invalid statement label
+ error on line 43 of 7
+: invalid statement label
+ error on line 44 of 7
+: invalid statement label
+ error on line 45 of 7
+: invalid statement label
+ error on line 46 of 7
+: invalid statement label
+ error on line 47 of 7
+: invalid statement label
+ error on line 48 of 7
+: invalid statement label
+ error on line 50 of 7
+: invalid statement label
+ error on line 51 of 7
+: invalid statement label
+ error on line 52 of 7
+: invalid statement label
+ error on line 53 of 7
+: invalid statement label
+ error on line 57 of 7
+: invalid statement label
+ error on line 60 of 7
+: invalid statement label
+ error on line 61 of 7
+: invalid statement label
+ error on line 62 of 7
+: invalid statement label
+ error on line 63 of 7
+: invalid statement label
+ error on line 64 of 7
+: invalid statement label
+ error on line 65 of 7
+: invalid statement label
+ error on line 66 of 7
+: invalid statement label
+ error on line 67 of 7
+: invalid statement label
+ error on line 68 of 7
+: invalid statement label
+ error on line 69 of 7
+: invalid statement label
+ error on line 70 of 7
+: invalid statement label
+ error on line 71 of 7
+: invalid statement label
+ error on line 73 of 7
+: invalid statement label
+ error on line 74 of 7
+: invalid statement label
+ error on line 75 of 7
+: alpha character expected
+ error on line 76 of 7
+: invalid statement label
+ error on line 77 of 7
+: invalid statement label
+ error on line 78 of 7
+: invalid statement label
+ error on line 79 of 7
+: invalid statement label
+ error on line 80 of 7
+: invalid statement label
+ error on line 81 of 7
+: invalid statement label
+ error on line 82 of 7
+: alpha character expected
+ error on line 83 of 7
+: invalid statement label
+ error on line 85 of 7
+: invalid statement label
+ error on line 86 of 7
+: invalid statement label
+ error on line 87 of 7
+: alpha character expected
+ error on line 88 of 7
+: invalid statement label
+ error on line 90 of 7
+: invalid statement label
+ error on line 91 of 7
+: invalid statement label
+ error on line 93 of 7
+: invalid statement label
+ error on line 94 of 7
+: spelling error?
+ error on line 95 of 7
+: DATA statement syntax error
+ error on line 97 of 7
+: invalid statement label
+ error on line 98 of 7
+: invalid statement label
+ error on line 100 of 7
+: invalid statement label
+ error on line 101 of 7
+: invalid statement label
+ error on line 102 of 7
+: invalid statement label
+ error on line 103 of 7
+: invalid statement label
+ error on line 104 of 7
+: invalid statement label
+ error on line 108 of 7
+: invalid statement label
+ error on line 112 of 7
+: invalid statement label
+ error on line 114 of 7
+: invalid statement label
+ error on line 115 of 7
+: invalid statement label
+ error on line 116 of 7
+: invalid statement label
+ error on line 117 of 7
+: invalid statement label
+ error on line 118 of 7
+: invalid statement label
+ error on line 119 of 7
+: invalid statement label
+ error on line 120 of 7
+: invalid statement label
+ error on line 121 of 7
+: invalid statement label
+ error on line 122 of 7
+: invalid statement label
+ error on line 123 of 7
+: invalid statement label
+ error on line 124 of 7
+: invalid statement label
+ error on line 96 of 7
+: spelling error?
+ error on line 125 of 7
+: alpha character expected
+ error on line 126 of 7
+: invalid statement label
+ error on line 127 of 7
+: invalid statement label
+ error on line 128 of 7
+: invalid statement label
+ error on line 129 of 7
+: invalid statement label
+ error on line 130 of 7
+: invalid statement label
+ error on line 131 of 7
+: invalid statement label
+ error on line 133 of 7
+: invalid statement label
+ error on line 134 of 7
+: invalid statement label
+ error on line 135 of 7
+: alpha character expected
+ error on line 136 of 7
+: invalid statement label
+ error on line 138 of 7
+: invalid statement label
+ error on line 139 of 7
+: invalid statement label
+ error on line 140 of 7
+: invalid statement label
+ error on line 141 of 7
+: invalid statement label
+ error on line 143 of 7
+: invalid statement label
+ error on line 144 of 7
+: invalid statement label
+ error on line 145 of 7
+: invalid statement label
+ error on line 146 of 7
+: invalid statement label
+ error on line 148 of 7
+: invalid statement label
+ error on line 150 of 7
+: invalid statement label
+ error on line 152 of 7
+: invalid statement label
+ error on line 155 of 7
+: invalid statement label
+ error on line 156 of 7
+: invalid statement label
+ error on line 157 of 7
+: invalid statement label
+ error on line 158 of 7
+: invalid statement label
+ error on line 159 of 7
+: invalid statement label
+ error on line 160 of 7
+: invalid statement label
+ error on line 161 of 7
+: invalid statement label
+ error on line 163 of 7
+: invalid statement label
+ error on line 166 of 7
+: invalid statement label
+ error on line 174 of 7
+: invalid statement label
+ error on line 177 of 7
+: invalid statement label
+ error on line 180 of 7
+: invalid statement label
+ error on line 181 of 7
+: invalid statement label
+ error on line 182 of 7
+: invalid statement label
+ error on line 183 of 7
+: invalid statement label
+ error on line 184 of 7
+: invalid statement label
+ error on line 185 of 7
+: invalid statement label
+ error on line 186 of 7
+: invalid statement label
+ error on line 187 of 7
+: invalid statement label
+ error on line 190 of 7
+: invalid statement label
+ error on line 193 of 7
+: invalid statement label
+ error on line 194 of 7
+: invalid statement label
+ error on line 195 of 7
+: invalid statement label
+ error on line 197 of 7
+: invalid statement label
+ error on line 200 of 7
+: invalid statement label
+ error on line 201 of 7
+: invalid statement label
+ error on line 202 of 7
+: invalid statement label
+ error on line 203 of 7
+: invalid statement label
+ error on line 204 of 7
+: invalid statement label
+ error on line 205 of 7
+: invalid statement label
+ error on line 206 of 7
+: invalid statement label
+ error on line 207 of 7
+: invalid statement label
+ error on line 208 of 7
+: invalid statement label
+ error on line 209 of 7
+: invalid statement label
+ error on line 210 of 7
+: invalid statement label
+ error on line 211 of 7
+: invalid statement label
+ error on line 213 of 7
+: invalid statement label
+ error on line 216 of 7
+: invalid statement label
+ error on line 217 of 7
+: invalid statement label
+ error on line 218 of 7
+: invalid statement label
+ error on line 219 of 7
+: invalid statement label
+ error on line 221 of 7
+: invalid statement label
+ error on line 224 of 7
+: invalid statement label
+ error on line 225 of 7
+: invalid statement label
+ error on line 226 of 7
+: invalid statement label
+ error on line 227 of 7
+: invalid statement label
+ error on line 228 of 7
+: invalid statement label
+ error on line 229 of 7
+: invalid statement label
+ error on line 230 of 7
+: invalid statement label
+ error on line 231 of 7
+: invalid statement label
+ error on line 232 of 7
+: invalid statement label
+ error on line 233 of 7
+: invalid statement label
+ error on line 235 of 7
+: invalid statement label
+ error on line 238 of 7
+: invalid statement label
+ error on line 240 of 7
+: invalid statement label
+ error on line 242 of 7
+: invalid statement label
+ error on line 248 of 7
+: invalid statement label
+ error on line 249 of 7
+: invalid statement label
+ error on line 250 of 7
+: invalid statement label
+ error on line 252 of 7
+: invalid statement label
+ error on line 253 of 7
+: invalid statement label
+ error on line 254 of 7
+: invalid statement label
+ error on line 255 of 7
+: spelling error?
+ error on line 256 of 7
+: invalid statement label
+ error on line 257 of 7
+: spelling error?
+ error on line 258 of 7
+: invalid statement label
+ error on line 259 of 7
+: spelling error?
+ error on line 260 of 7
+: invalid statement label
+ error on line 261 of 7
+: invalid statement label
+ error on line 262 of 7
+: invalid statement label
+ error on line 263 of 7
+: invalid statement label
+ error on line 264 of 7
+: invalid statement label
+ error on line 265 of 7
+: invalid statement label
+ error on line 266 of 7
+: invalid statement label
+ error on line 268 of 7
+: invalid statement label
+ error on line 273 of 7
+: invalid statement label
+ error on line 275 of 7
+: invalid statement label
+ error on line 276 of 7
+: invalid statement label
+ error on line 277 of 7
+: invalid statement label
+ error on line 278 of 7
+: invalid statement label
+ error on line 279 of 7
+: spelling error?
+ error on line 280 of 7
+: invalid statement label
+ error on line 281 of 7
+: spelling error?
+ error on line 282 of 7
+: invalid statement label
+ error on line 283 of 7
+: spelling error?
+ error on line 284 of 7
+: invalid statement label
+ error on line 285 of 7
+: invalid statement label
+ error on line 286 of 7
+: spelling error?
+ error on line 287 of 7
+: invalid statement label
+ error on line 288 of 7
+: invalid statement label
+ error on line 289 of 7
+: invalid statement label
+ error on line 291 of 7
+: invalid statement label
+ error on line 296 of 7
+: invalid statement label
+ error on line 297 of 7
+: invalid statement label
+ error on line 298 of 7
+: invalid statement label
+ error on line 300 of 7
+: invalid statement label
+ error on line 304 of 7
+: invalid statement label
+ error on line 305 of 7
+: spelling error?
+ error on line 306 of 7
+: invalid statement label
+ error on line 307 of 7
+: invalid statement label
+ error on line 308 of 7
+: invalid statement label
+ error on line 309 of 7
+: invalid statement label
+ error on line 310 of 7
+: invalid statement label
+ error on line 312 of 7
+: invalid statement label
+ error on line 316 of 7
+: invalid statement label
+ error on line 317 of 7
+: spelling error?
+ error on line 318 of 7
+: invalid statement label
+ error on line 321 of 7
+: invalid statement label
+ error on line 322 of 7
+: invalid statement label
+ error on line 323 of 7
+: invalid statement label
+ error on line 325 of 7
+: invalid statement label
+ error on line 330 of 7
+: invalid statement label
+ error on line 330 of 7
+: illegal syntax
+ error on line 332 of 7
+: invalid statement label
+ error on line 330 of 7
+: illegal syntax
+ error on line 1 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 1 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 1 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 0 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 1 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 2 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 3 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 4 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 5 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 6 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 7 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 8 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 9 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 10 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 11 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 12 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 13 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 14 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 15 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 16 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 17 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 18 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 19 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 20 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 21 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 22 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 23 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 24 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 25 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 26 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 27 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 29 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 34 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 35 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 36 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 37 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 39 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 44 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 46 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 47 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 48 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 50 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 52 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 53 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 54 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 55 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 56 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 57 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 58 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 59 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 60 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 61 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 62 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 63 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 64 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 66 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 67 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 68 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 70 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 75 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 76 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 78 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 79 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 81 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 82 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 83 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 84 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 85 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 86 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 87 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 88 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 91 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 97 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 102 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 103 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 105 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 111 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 112 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 113 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 114 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 115 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 116 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 117 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 118 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 119 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 120 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 121 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 122 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 123 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 124 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 125 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 126 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 127 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 128 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 129 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 130 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 132 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 137 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 143 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 144 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 145 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 146 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 148 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 149 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 150 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 151 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 152 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 155 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 161 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 162 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 163 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 164 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 165 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 166 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 167 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 168 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 169 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 170 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 171 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 172 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 173 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 174 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 175 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 176 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 177 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 178 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 179 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 180 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 181 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 182 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 183 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 184 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 185 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 186 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 187 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 188 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 189 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 190 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 191 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 192 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 193 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 195 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 200 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 201 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 202 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 203 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 204 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 205 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 206 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 207 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 208 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 209 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 210 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 211 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 212 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 214 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 219 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 220 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 221 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 222 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 223 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 224 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 225 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 226 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 228 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 233 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 234 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 238 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 239 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 241 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 246 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 248 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 249 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 252 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 253 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 254 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 255 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 256 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 257 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 258 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 259 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 260 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 261 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 262 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 263 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 264 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 265 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 267 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 272 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 273 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 274 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 275 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 276 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 277 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 278 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 279 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 281 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 285 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 286 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 287 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 288 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 289 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 290 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 293 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 297 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 298 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 299 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 300 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 301 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 303 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 304 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 305 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 306 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 308 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 312 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 313 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 314 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 315 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 316 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 317 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 318 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 319 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 321 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 326 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 327 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 328 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 329 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 330 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 331 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 334 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 335 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 337 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 342 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 344 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 345 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 346 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 347 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 348 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 349 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 351 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 352 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 353 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 354 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 355 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 356 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 358 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 359 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 360 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 361 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 362 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 363 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 366 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 373 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 374 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 375 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 376 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 377 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 378 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 379 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 380 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 381 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 382 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 382 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 382 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 1 of pgapackf.h: invalid statement label
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 1 of pgapackf.h: illegal syntax
+ error on line 24 of pgapackf.h: invalid statement label
+ error on line 25 of pgapackf.h: invalid statement label
+ error on line 26 of pgapackf.h: invalid statement label
+ error on line 27 of pgapackf.h: invalid statement label
+ error on line 28 of pgapackf.h: invalid statement label
+ error on line 29 of pgapackf.h: invalid statement label
+ error on line 30 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: invalid statement label
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 31 of pgapackf.h: illegal syntax
+ error on line 37 of pgapackf.h: invalid statement label
+ error on line 37 of pgapackf.h: illegal syntax
+ error on line 39 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 41 of pgapackf.h: invalid statement label
+ error on line 39 of pgapackf.h: illegal syntax
+ error on line 1 of ¬]ÿ¿H`
+@¡@ µ
+@: illegal syntax
+ error on line 1 of ¬]ÿ¿H`
+@¡@ µ
+@: illegal syntax
+ error on line 1 of ¬]ÿ¿H`
+@¡@ µ
+@: invalid statement label
+ error on line 37 of ¬]ÿ¿H`
+@¡@ µ
+@: illegal syntax
+ error on line 31 of Lfÿ¿: illegal syntax
+ error on line 1 of  nÿ¿*: illegal syntax
+ error on line 1 of ôvÿ¿e: illegal syntax
+ error on line 1 of ôvÿ¿e: illegal syntax
+ error on line 1 of ôvÿ¿e: invalid statement label
+ error on line 1 of ôvÿ¿e: illegal syntax
+ error on line 28 of Hÿ¿e: illegal syntax
+ error on line 28 of Hÿ¿e: illegal syntax
+ error on line 28 of Hÿ¿e: illegal syntax
+ error on line 28 of Hÿ¿e: illegal syntax
+ error on line 28 of Hÿ¿e: illegal syntax
+ error on line 28 of Hÿ¿e: illegal syntax
+ error on line 28 of Hÿ¿e: illegal syntax
+ error on line 28 of Hÿ¿e: illegal syntax
+ error on line 28 of Hÿ¿e: illegal syntax
+ error on line 28 of Hÿ¿e: illegal syntax
+ error on line 14 of Hÿ¿e: invalid statement label
+ error on line 14 of Hÿ¿e: illegal syntax
+ error on line 14 of Hÿ¿e: illegal syntax
+ error on line 14 of Hÿ¿e: illegal syntax
+ error on line 14 of Hÿ¿e: illegal syntax
+ error on line 14 of Hÿ¿e: illegal syntax
+ error on line 14 of Hÿ¿e: illegal syntax
+ error on line 14 of Hÿ¿e: illegal syntax
+ error on line 14 of Hÿ¿e: illegal syntax
+ error on line 14 of Hÿ¿e: illegal syntax
+ error on line 14 of Hÿ¿e: illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 3 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 28 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 1 of : illegal syntax
+ error on line 5 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 4 of ä«ÿ¿°ÿ¿
+: invalid statement label
+ error on line 1 of ä«ÿ¿°ÿ¿
+: illegal syntax
+ error on line 1 of ÿÿÿÿ: invalid statement label
+ error on line 1 of ÿÿÿÿ: illegal syntax
+ error on line 1 of lid statement label
+or on line 352 of \Ûinvalid statement label
+or on line 351 of \Ûinvalid statement label
+or on line 349 of \Ûinvalid statement label
+or on line 348 of \Ûinvalid statement label
+or on line 347 of \Ûinvalid statement label
+or on line 346 of \Ûinvalid statement label
+or on line 345 of \Ûinvalid statement label
+or on line 344 o@ß
+
+@Ô@@: invalid statement label
+ error on line 1 of lid statement label
+or on line 352 of \Ûinvalid statement label
+or on line 351 of \Ûinvalid statement label
+or on line 349 of \Ûinvalid statement label
+or on line 348 of \Ûinvalid statement label
+or on line 347 of \Ûinvalid statement label
+or on line 346 of \Ûinvalid statement label
+or on line 345 of \Ûinvalid statement label
+or on line 344 o@ß
+
+@Ô@@: illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 1 of : invalid statement label
+ error on line 1 of : illegal syntax
+ error on line 2 of €: invalid statement label
+ error on line 1 of €: illegal syntax
+ error on line 1 of €: invalid statement label
+ error on line 1 of €: too many continuation lines
+ error on line 0 of €: invalid statement label
+ error on line 1 of €: invalid statement label
+ error on line 2 of €: invalid statement label
+ error on line 5 of €: invalid statement label
+ error on line 8 of €: invalid statement label
+ error on line 9 of €: invalid statement label
+ error on line 10 of €: invalid statement label
+ error on line 11 of €: invalid statement label
+ error on line 12 of €: invalid statement label
+ error on line 13 of €: invalid statement label
+ error on line 14 of €: invalid statement label
+ error on line 15 of €: invalid statement label
+ error on line 16 of €: invalid statement label
+ error on line 17 of €: invalid statement label
+ error on line 18 of €: invalid statement label
+ error on line 19 of €: invalid statement label
+ error on line 20 of €: invalid statement label
+ error on line 21 of €: invalid statement label
+ error on line 22 of €: invalid statement label
+ error on line 23 of €: invalid statement label
+ error on line 24 of €: invalid statement label
+ error on line 25 of €: invalid statement label
+ error on line 26 of €: invalid statement label
+ error on line 27 of €: invalid statement label
+ error on line 28 of €: invalid statement label
+ error on line 29 of €: invalid statement label
+ error on line 30 of €: invalid statement label
+ error on line 31 of €: invalid statement label
+ error on line 32 of €: invalid statement label
+ error on line 33 of €: invalid statement label
+ error on line 34 of €: invalid statement label
+ error on line 35 of €: invalid statement label
+ error on line 36 of €: invalid statement label
+ error on line 37 of €: invalid statement label
+ error on line 38 of €: invalid statement label
+ error on line 39 of €: invalid statement label
+ error on line 40 of €: invalid statement label
+ error on line 41 of €: invalid statement label
+ error on line 42 of €: invalid statement label
+ error on line 43 of €: invalid statement label
+ error on line 44 of €: invalid statement label
+ error on line 45 of €: invalid statement label
+ error on line 46 of €: invalid statement label
+ error on line 47 of €: invalid statement label
+ error on line 48 of €: invalid statement label
+ error on line 50 of €: invalid statement label
+ error on line 51 of €: invalid statement label
+ error on line 52 of €: invalid statement label
+ error on line 53 of €: invalid statement label
+ error on line 57 of €: invalid statement label
+ error on line 60 of €: invalid statement label
+ error on line 61 of €: invalid statement label
+ error on line 62 of €: invalid statement label
+ error on line 63 of €: invalid statement label
+ error on line 64 of €: invalid statement label
+ error on line 65 of €: invalid statement label
+ error on line 66 of €: invalid statement label
+ error on line 67 of €: invalid statement label
+ error on line 68 of €: invalid statement label
+ error on line 69 of €: invalid statement label
+ error on line 70 of €: invalid statement label
+ error on line 71 of €: invalid statement label
+ error on line 73 of €: invalid statement label
+ error on line 74 of €: invalid statement label
+ error on line 75 of €: alpha character expected
+ error on line 76 of €: invalid statement label
+ error on line 77 of €: invalid statement label
+ error on line 78 of €: invalid statement label
+ error on line 79 of €: invalid statement label
+ error on line 80 of €: invalid statement label
+ error on line 81 of €: invalid statement label
+ error on line 82 of €: alpha character expected
+ error on line 83 of €: invalid statement label
+ error on line 85 of €: invalid statement label
+ error on line 86 of €: invalid statement label
+ error on line 87 of €: alpha character expected
+ error on line 88 of €: invalid statement label
+ error on line 90 of €: invalid statement label
+ error on line 91 of €: invalid statement label
+ error on line 93 of €: invalid statement label
+ error on line 94 of €: spelling error?
+ error on line 95 of €: DATA statement syntax error
+ error on line 97 of €: invalid statement label
+ error on line 98 of €: invalid statement label
+ error on line 100 of €: invalid statement label
+ error on line 101 of €: invalid statement label
+ error on line 102 of €: invalid statement label
+ error on line 103 of €: invalid statement label
+ error on line 104 of €: invalid statement label
+ error on line 108 of €: invalid statement label
+ error on line 112 of €: invalid statement label
+ error on line 114 of €: invalid statement label
+ error on line 115 of €: invalid statement label
+ error on line 116 of €: invalid statement label
+ error on line 117 of €: invalid statement label
+ error on line 118 of €: invalid statement label
+ error on line 119 of €: invalid statement label
+ error on line 120 of €: invalid statement label
+ error on line 121 of €: invalid statement label
+ error on line 122 of €: invalid statement label
+ error on line 123 of €: invalid statement label
+ error on line 124 of €: invalid statement label
+ error on line 96 of €: spelling error?
+ error on line 125 of €: alpha character expected
+ error on line 126 of €: invalid statement label
+ error on line 127 of €: invalid statement label
+ error on line 128 of €: invalid statement label
+ error on line 129 of €: invalid statement label
+ error on line 130 of €: invalid statement label
+ error on line 131 of €: invalid statement label
+ error on line 133 of €: invalid statement label
+ error on line 134 of €: invalid statement label
+ error on line 135 of €: alpha character expected
+ error on line 136 of €: invalid statement label
+ error on line 138 of €: invalid statement label
+ error on line 139 of €: invalid statement label
+ error on line 140 of €: invalid statement label
+ error on line 141 of €: invalid statement label
+ error on line 143 of €: invalid statement label
+ error on line 144 of €: invalid statement label
+ error on line 145 of €: invalid statement label
+ error on line 146 of €: invalid statement label
+ error on line 148 of €: invalid statement label
+ error on line 150 of €: invalid statement label
+ error on line 152 of €: invalid statement label
+ error on line 155 of €: invalid statement label
+ error on line 156 of €: invalid statement label
+ error on line 157 of €: invalid statement label
+ error on line 158 of €: invalid statement label
+ error on line 159 of €: invalid statement label
+ error on line 160 of €: invalid statement label
+ error on line 161 of €: invalid statement label
+ error on line 163 of €: invalid statement label
+ error on line 166 of €: invalid statement label
+ error on line 174 of €: invalid statement label
+ error on line 177 of €: invalid statement label
+ error on line 180 of €: invalid statement label
+ error on line 181 of €: invalid statement label
+ error on line 182 of €: invalid statement label
+ error on line 183 of €: invalid statement label
+ error on line 184 of €: invalid statement label
+ error on line 185 of €: invalid statement label
+ error on line 186 of €: invalid statement label
+ error on line 187 of €: invalid statement label
+ error on line 190 of €: invalid statement label
+ error on line 193 of €: invalid statement label
+ error on line 194 of €: invalid statement label
+ error on line 195 of €: invalid statement label
+ error on line 197 of €: invalid statement label
+ error on line 200 of €: invalid statement label
+ error on line 201 of €: invalid statement label
+ error on line 202 of €: invalid statement label
+ error on line 203 of €: invalid statement label
+ error on line 204 of €: invalid statement label
+ error on line 205 of €: invalid statement label
+ error on line 206 of €: invalid statement label
+ error on line 207 of €: invalid statement label
+ error on line 208 of €: invalid statement label
+ error on line 209 of €: invalid statement label
+ error on line 210 of €: invalid statement label
+ error on line 211 of €: invalid statement label
+ error on line 213 of €: invalid statement label
+ error on line 216 of €: invalid statement label
+ error on line 217 of €: invalid statement label
+ error on line 218 of €: invalid statement label
+ error on line 219 of €: invalid statement label
+ error on line 221 of €: invalid statement label
+ error on line 224 of €: invalid statement label
+ error on line 225 of €: invalid statement label
+ error on line 226 of €: invalid statement label
+ error on line 227 of €: invalid statement label
+ error on line 228 of €: invalid statement label
+ error on line 229 of €: invalid statement label
+ error on line 230 of €: invalid statement label
+ error on line 231 of €: invalid statement label
+ error on line 232 of €: invalid statement label
+ error on line 233 of €: invalid statement label
+ error on line 235 of €: invalid statement label
+ error on line 238 of €: invalid statement label
+ error on line 240 of €: invalid statement label
+ error on line 242 of €: invalid statement label
+ error on line 248 of €: invalid statement label
+ error on line 249 of €: invalid statement label
+ error on line 250 of €: invalid statement label
+ error on line 252 of €: invalid statement label
+ error on line 253 of €: invalid statement label
+ error on line 254 of €: invalid statement label
+ error on line 255 of €: spelling error?
+ error on line 256 of €: invalid statement label
+ error on line 257 of €: spelling error?
+ error on line 258 of €: invalid statement label
+ error on line 259 of €: spelling error?
+ error on line 260 of €: invalid statement label
+ error on line 261 of €: invalid statement label
+ error on line 262 of €: invalid statement label
+ error on line 263 of €: invalid statement label
+ error on line 264 of €: invalid statement label
+ error on line 265 of €: invalid statement label
+ error on line 266 of €: invalid statement label
+ error on line 268 of €: invalid statement label
+ error on line 273 of €: invalid statement label
+ error on line 275 of €: invalid statement label
+ error on line 276 of €: invalid statement label
+ error on line 277 of €: invalid statement label
+ error on line 278 of €: invalid statement label
+ error on line 279 of €: spelling error?
+ error on line 280 of €: invalid statement label
+ error on line 281 of €: spelling error?
+ error on line 282 of €: invalid statement label
+ error on line 283 of €: spelling error?
+ error on line 284 of €: invalid statement label
+ error on line 285 of €: invalid statement label
+ error on line 286 of €: spelling error?
+ error on line 287 of €: invalid statement label
+ error on line 288 of €: invalid statement label
+ error on line 289 of €: invalid statement label
+ error on line 291 of €: invalid statement label
+ error on line 296 of €: invalid statement label
+ error on line 297 of €: invalid statement label
+ error on line 298 of €: invalid statement label
+ error on line 300 of €: invalid statement label
+ error on line 304 of €: invalid statement label
+ error on line 305 of €: spelling error?
+ error on line 306 of €: invalid statement label
+ error on line 307 of €: invalid statement label
+ error on line 308 of €: invalid statement label
+ error on line 309 of €: invalid statement label
+ error on line 310 of €: invalid statement label
+ error on line 312 of €: invalid statement label
+ error on line 316 of €: invalid statement label
+ error on line 317 of €: spelling error?
+ error on line 318 of €: invalid statement label
+ error on line 321 of €: invalid statement label
+ error on line 322 of €: invalid statement label
+ error on line 323 of €: invalid statement label
+ error on line 325 of €: invalid statement label
+ error on line 330 of €: invalid statement label
+ error on line 330 of €: illegal syntax
+ error on line 332 of €: invalid statement label
+ error on line 330 of €: illegal syntax
+ error on line 1 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 1 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 1 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 0 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 1 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 2 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 3 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 4 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 5 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 6 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 7 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 8 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 9 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 10 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 11 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 12 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 13 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 14 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 15 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 16 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 17 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 18 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 19 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 20 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 21 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 22 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 23 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 24 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 25 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 26 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 27 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 29 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 34 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 35 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 36 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 37 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 39 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 44 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 46 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 47 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 48 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 50 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 52 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 53 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 54 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 55 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 56 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 57 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 58 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 59 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 60 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 61 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 62 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 63 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 64 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 66 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 67 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 68 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 70 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 75 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 76 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 78 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 79 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 81 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 82 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 83 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 84 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 85 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 86 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 87 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 88 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 91 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 97 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 102 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 103 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 105 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 111 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 112 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 113 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 114 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 115 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 116 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 117 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 118 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 119 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 120 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 121 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 122 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 123 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 124 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 125 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 126 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 127 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 128 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 129 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 130 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 132 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 137 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 143 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 144 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 145 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 146 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 148 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 149 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 150 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 151 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 152 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 155 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 161 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 162 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 163 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 164 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 165 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 166 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 167 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 168 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 169 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 170 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 171 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 172 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 173 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 174 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 175 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 176 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 177 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 178 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 179 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 180 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 181 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 182 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 183 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 184 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 185 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 186 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 187 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 188 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 189 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 190 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 191 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 192 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 193 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 195 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 200 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 201 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 202 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 203 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 204 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 205 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 206 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 207 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 208 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 209 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 210 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 211 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 212 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 214 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 219 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 220 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 221 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 222 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 223 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 224 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 225 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 226 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 228 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 233 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 234 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 238 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 239 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 241 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 246 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 248 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 249 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 252 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 253 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 254 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 255 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 256 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 257 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 258 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 259 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 260 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 261 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 262 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 263 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 264 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 265 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 267 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 272 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 273 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 274 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 275 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 276 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 277 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 278 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 279 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 281 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 285 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 286 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 287 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 288 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 289 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 290 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 293 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 297 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 298 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 299 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 300 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 301 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 303 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 304 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 305 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 306 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 308 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 312 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 313 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 314 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 315 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 316 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 317 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 318 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 319 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 321 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 326 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 327 of \Ûÿ¿·ÀÚ: spelling error?
+ error on line 328 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 329 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 330 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 331 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 334 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 335 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 337 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 342 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 344 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 345 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 346 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 347 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 348 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 349 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 351 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 352 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 353 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 354 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 355 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 356 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 358 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 359 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 360 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 361 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 362 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 363 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 366 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 373 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 374 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 375 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 376 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 377 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 378 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 379 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 380 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 381 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 382 of \Ûÿ¿·ÀÚ: invalid statement label
+ error on line 382 of \Ûÿ¿·ÀÚ: illegal syntax
+ error on line 382 of \Ûÿ¿·ÀÚ: illegal syntax
+
+make[4]: *** [testprog] Error 1
+make[4]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/mgh'
+make[3]: *** [default] Error 2
+make[3]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples/mgh'
+make[2]: *** [Fortran] Error 2
+make[2]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples'
+make[1]: *** [default] Error 2
+make[1]: Leaving directory `/autohome/u86/gekco/DEVELOP_GA/pgapack/examples'
+make: *** [install] Error 2
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeIntegerAsBinary.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeIntegerAsBinary.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeIntegerAsBinary.1	(revision 6168)
@@ -0,0 +1,59 @@
+.TH PGAEncodeIntegerAsBinary 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAEncodeIntegerAsBinary \- encodes an integer value as a binary string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in p to encode val in
+.PD 0
+.TP
+end
+- ending bit position in p to encode val in
+.PD 0
+.TP
+val
+- the integer value to be represented as a binary string
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAEncodeIntegerAsBinary(ctx, p, pop, start, end, val)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+int val
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Encode an integer v in 20 bits in bit positions 0--19 in string p
+in population PGA_NEWPOP.
+
+PGAContext *ctx;
+int v, p;
+:
+PGAEncodeIntegerAsBinary(ctx, p, PGA_NEWPOP, 0, 19, v);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeIntegerAsGrayCode.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeIntegerAsGrayCode.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeIntegerAsGrayCode.1	(revision 6168)
@@ -0,0 +1,61 @@
+.TH PGAEncodeIntegerAsGrayCode 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAEncodeIntegerAsGrayCode \- encodes a real value as a binary reflected
+Gray code sequence
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in p to encode val in
+.PD 0
+.TP
+end
+- ending bit position in p to encode val in
+.PD 0
+.TP
+val
+- the integer value to be represented as a binary reflected
+Gray code sequence
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAEncodeIntegerAsGrayCode(ctx, p, pop, start, end, val)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+int val
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Encode an integer v in 20 bits in bit positions  0--19 in string p in
+population PGA_NEWPOP using Gray code.
+
+PGAContext *ctx;
+int v, p;
+:
+PGAEncodeIntegerAsGrayCode(ctx, p, PGA_NEWPOP, 0, 19, 7);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeRealAsBinary.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeRealAsBinary.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeRealAsBinary.1	(revision 6168)
@@ -0,0 +1,69 @@
+.TH PGAEncodeRealAsBinary 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAEncodeRealAsBinary \- encodes a real value as a binary string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in p to encode val in
+.PD 0
+.TP
+end
+- ending bit position in p to encode val in
+.PD 0
+.TP
+low
+- lower bound of the interval the val is defined on
+.PD 0
+.TP
+high
+- lower bound of the interval the val is defined on
+.PD 0
+.TP
+val
+- the real number to be represented as a binary string
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAEncodeRealAsBinary(ctx, p, pop, start, end, low, high, val)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+double low
+double high
+double val
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Encode 3.14 from the interval [0,10] in 30 bits in bit positions
+0--29 in string p in population PGA_NEWPOP.
+
+PGAContext *ctx;
+int p;
+:
+PGAEncodeRealAsBinary(ctx, p, PGA_NEWPOP, 0, 29, 0.0, 10.0, 3.14);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeRealAsGrayCode.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeRealAsGrayCode.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEncodeRealAsGrayCode.1	(revision 6168)
@@ -0,0 +1,71 @@
+.TH PGAEncodeRealAsGrayCode 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAEncodeRealAsGrayCode \- encodes a real value as a binary reflected Gray
+code sequence
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in p to encode val in
+.PD 0
+.TP
+end
+- ending bit position in p to encode val in
+.PD 0
+.TP
+low
+- lower bound of the interval the val is defined on
+.PD 0
+.TP
+high
+- lower bound of the interval the val is defined on
+.PD 0
+.TP
+val
+- the real number to be represented as a binary string
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAEncodeRealAsGrayCode(ctx, p, pop, start, end, low, high, val)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+double low
+double high
+double val
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Encode 3.14 from the interval [0,10] in 30 bits in bit positions
+0--29 in string p in population PGA_NEWPOP as a binary reflected Gray
+code sequence.
+
+PGAContext *ctx;
+int p;
+:
+PGAEncodeRealAsGrayCode(ctx, p, PGA_NEWPOP, 0, 29, 0.0, 10.0, 3.14);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEvaluate.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEvaluate.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAEvaluate.1	(revision 6168)
@@ -0,0 +1,61 @@
+.TH PGAEvaluate 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAEvaluate \- Calls a user-specified function to return an evaluation of
+each string in the population. The user-specified function is only called
+if the string has been changed (e.g., by crossover or mutation) or the user
+has explicitly signaled the string's evaluation is out-of-date by a call
+to PGASetEvaluationUpToDateFlag().
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop
+- symbolic constant of the population to be evaluated
+.PD 0
+.TP
+f
+- a pointer to a function to evaluate a string.  This function will
+be called once for each string in population pop that requires
+evaluation.  This function must return a double (the evaluation
+function value) and must fit the prototype
+double f(PGAContext *c, int p, int pop);
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAEvaluate(ctx, pop, , comm)
+PGAContext *ctx
+int pop
+double (*f)(PGAContext *, int, int)
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+Evaluate all strings in population PGA_NEWPOP using the user-defined
+evaluation function Energy.
+
+double Energy(PGAContext *ctx, int p, int pop) {
+:
+};
+
+PGAContext *ctx;
+:
+PGAEvaluate(ctx, PGA_NEWPOP, Energy, MPI_COMM_WORLD);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAFitness.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAFitness.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAFitness.1	(revision 6168)
@@ -0,0 +1,47 @@
+.TH PGAFitness 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAFitness \- Maps the user's evaluation function value to a fitness value.
+First, the user's evaluation function value is translated to all positive
+values if any are negative.  Next, this positive sequence is translated to
+a maximization problem if the user's optimization direction was minimization.
+This positive sequence is then mapped to a fitness value using linear
+ranking, linear normalization fitness, or the identity (i.e., the evaluation
+function value).  This routine is usually used after PGAEvaluate is called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop
+- symbolic constant of the population to calculate fitness for
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAFitness(ctx, popindex)
+PGAContext *ctx
+int popindex
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+Calculate the fitness of all strings in population PGA_NEWPOP after
+calling PGAEvaluate to calculate the strings evaluation value.
+
+double energy(PGAContext *ctx, int p, int pop);
+PGAContext *ctx;
+:
+PGAEvaluate(ctx, PGA_NEWPOP, energy);
+PGAFitness (ctx, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetBinaryAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetBinaryAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetBinaryAllele.1	(revision 6168)
@@ -0,0 +1,53 @@
+.TH PGAGetBinaryAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetBinaryAllele \- returns the value of a (binary) allele in a
+PGA_DATATYPE_BINARY string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetBinaryAllele(ctx, p, pop, i)
+PGAContext *ctx
+int p
+int pop
+int i
+.fi
+.SH LOCATION
+binary.c
+.SH EXAMPLE
+.nf
+Example:
+Copies the alleles from member p in PGA_OLDPOP to member q PGA_NEWPOP.
+Assumes the strings are of the same length.
+
+PGAContext *ctx;
+int p, q, i;
+:
+for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+PGASetBinaryAllele(ctx, q, PGA_NEWPOP, i,
+PGAGetBinaryAllele(ctx, p, PGA_OLDPOP, i))
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetCharacterAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetCharacterAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetCharacterAllele.1	(revision 6168)
@@ -0,0 +1,52 @@
+.TH PGAGetCharacterAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetCharacterAllele: returns the value of character allele in a\-PGA_DATATYPE_CHARACTER string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+char  PGAGetCharacterAllele(ctx, p, pop, i)
+PGAContext *ctx
+int p
+int pop
+int i
+.fi
+.SH LOCATION
+char.c
+.SH EXAMPLE
+.nf
+Example:
+Copies the alleles from member p in PGA_OLDPOP to member q in PGA_NEWPOP.
+Assumes the strings are of the same length.
+
+PGAContext *ctx;
+int p, q, i;
+:
+for (i=PGAGetStringLength(ctx, p, PGA_NEWPOP)-1; i>=0; i--)
+PGASetCharacterAllele(ctx, q, PGA_NEWPOP, i,
+PGAGetCharacterAllele(ctx, p, PGA_OLDPOP, i))
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetEvaluation.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetEvaluation.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetEvaluation.1	(revision 6168)
@@ -0,0 +1,44 @@
+.TH PGAGetEvaluation 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetEvaluation \- returns the evaluation function value for
+string p in population pop
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetEvaluation(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+double eval;
+:
+eval = PGAGetEvaluation(ctx, p, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetEvaluationUpToDateFlag.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetEvaluationUpToDateFlag.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetEvaluationUpToDateFlag.1	(revision 6168)
@@ -0,0 +1,51 @@
+.TH PGAGetEvaluationUpToDateFlag 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetEvaluationUpToDateFlag \- returns true/false to indicate
+whether the evaluate function value is up to date
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetEvaluationUpToDateFlag(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int uptodate;
+:
+uptodate = PGAGetEvaluationUpToDateFlag(ctx);
+switch (uptodate) {
+case PGA_TRUE:
+printf("Evaluation function value current\n");
+break;
+case PGA_FALSE:
+printf("Evaluation function value out-of-date\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitness.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitness.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitness.1	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGAGetFitness 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetFitness \- returns the fitness value for a string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetFitness(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+double fit;
+:
+fit = PGAGetFitness(ctx, p, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitnessCmaxValue.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitnessCmaxValue.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitnessCmaxValue.1	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetFitnessCmaxValue 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetFitnessCmaxValue \- returns the value of the multiplier used by
+PGAFitnessMinCmax.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetFitnessCmaxValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double cmax;
+:
+cmax = PGAGetFitnessCmaxValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitnessMinType.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitnessMinType.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitnessMinType.1	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGAGetFitnessMinType 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetFitnessMinType \- Returns the type of fitness transformation used
+for minimization problems.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetFitnessMinType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+for minimization problems
+
+Example:
+PGAContext *ctx;
+int fitmintype;
+:
+fitmintype = PGAGetFitnessMinType(ctx);
+switch (fitmintype) {
+case PGA_FITNESSMIN_RECIPROCAL:
+printf("Fitness Minimization Type = PGA_FITNESSMIN_RECIPROCAL\n");
+break;
+case PGA_FITNESSMIN_CMAX:
+printf("Fitness Minimization Type = PGA_FITNESSMIN_CMAX\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitnessType.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitnessType.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetFitnessType.1	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGAGetFitnessType 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetFitnessType \- Returns the type of fitness transformation used.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetFitnessType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int fittype;
+:
+fittype = PGAGetFitnessType(ctx);
+switch (fittype) {
+case PGA_FITNESS_RAW:
+printf("Fitness Type = PGA_FITNESS_RAW\n");
+break;
+case PGA_FITNESS_NORMAL:
+printf("Fitness Type = PGA_FITNESS_NORMAL\n");
+break;
+case PGA_FITNESS_RANKING:
+printf("Fitness Type = PGA_FITNESS_RANKING\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetIntegerAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetIntegerAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetIntegerAllele.1	(revision 6168)
@@ -0,0 +1,50 @@
+.TH PGAGetIntegerAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetIntegerAllele \- Returns the value of allele i of member p in
+population pop.  Assumes the data type is PGA_DATATYPE_INTEGER.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetIntegerAllele(ctx, p, pop, i)
+PGAContext *ctx
+int p
+int pop
+int i
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Returns the value of the ith integer allele of string p
+in population PGA_NEWPOP.
+
+PGAContext *ctx;
+int p, i, k;
+:
+k =  PGAGetIntegerAllele ( ctx, p, PGA_NEWPOP, i )
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetIntegerFromBinary.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetIntegerFromBinary.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetIntegerFromBinary.1	(revision 6168)
@@ -0,0 +1,55 @@
+.TH PGAGetIntegerFromBinary 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetIntegerFromBinary \- interpets a binary string as encoding an integer
+value and returns the integer value it represents.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in the binary representation
+.PD 0
+.TP
+end
+- ending bit position in the binary representation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetIntegerFromBinary(ctx, p, pop, start, end)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Get an integer j from bits 10--29 of string p in population PGA_NEWPOP.
+
+PGAContext *ctx;
+int j, p;
+:
+j = PGAGetIntegerFromBinary(ctx, p, PGA_NEWPOP, 10, 29);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetIntegerFromGrayCode.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetIntegerFromGrayCode.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetIntegerFromGrayCode.1	(revision 6168)
@@ -0,0 +1,56 @@
+.TH PGAGetIntegerFromGrayCode 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetIntegerFromGrayCode \- interpets a binary reflected Gray code sequence
+as encoding an integer value and returns the integer value it represents.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in the binary representation
+.PD 0
+.TP
+end
+- ending bit position in the binary representation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetIntegerFromGrayCode(ctx, p, pop, start, end)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Get an integer j from bits 10--29 of string p in population PGA_NEWPOP.
+The string is encoded in Gray code.
+
+PGAContext *ctx;
+int j, p;
+:
+j = PGAGetIntegerFromGrayCode(ctx, p, PGA_NEWPOP, 10, 29);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetMaxFitnessRank.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetMaxFitnessRank.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetMaxFitnessRank.1	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetMaxFitnessRank 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxFitnessRank \- returns the maximum value used in rank-based
+fitness.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+rank
+-based fitness
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMaxFitnessRank(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+double max;
+:
+max = PGAGetMaxFitnessRank(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetRealAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetRealAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetRealAllele.1	(revision 6168)
@@ -0,0 +1,50 @@
+.TH PGAGetRealAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRealAllele \- returns the value of real-valued allele i in string p
+in population pop
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetRealAllele(ctx, p, pop, i)
+PGAContext *ctx
+int p
+int pop
+int i
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Example:
+Returns the value of the ith real-valued allele of string p
+in population PGA_NEWPOP
+
+PGAContext *ctx;
+int p, i, r;
+r =  PGAGetRealAllele (ctx, p, PGA_NEWPOP, i)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetRealFromBinary.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetRealFromBinary.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetRealFromBinary.1	(revision 6168)
@@ -0,0 +1,66 @@
+.TH PGAGetRealFromBinary 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRealFromBinary \- Interpets a binary string as encoding a real value
+and returns the real value it represents.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in the binary representation
+.PD 0
+.TP
+end
+- ending bit position in the binary representation
+.PD 0
+.TP
+lower
+- lower bound of the interval the real number is defined on
+.PD 0
+.TP
+upper
+- lower bound of the interval the real number is defined on
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetRealFromBinary(ctx, p, pop, start, end, lower, upper)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+double lower
+double upper
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Decode a real value from the string p in population PGA_NEWPOP.  The
+value to decode lies on the interval [-10,20] and is represented
+using the 20 bits in bit positions 10--29.
+
+double x;
+:
+x = PGAGetRealFromBinary(ctx, p, PGA_NEWPOP, 10, 29, -10.0, 20.0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetRealFromGrayCode.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetRealFromGrayCode.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGAGetRealFromGrayCode.1	(revision 6168)
@@ -0,0 +1,67 @@
+.TH PGAGetRealFromGrayCode 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRealFromGrayCode \- interpets a binary reflected Gray code sequence in
+a binary string as encoding a real value and returns the real value it
+represents.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in the binary representation
+.PD 0
+.TP
+end
+- ending bit position in the binary representation
+.PD 0
+.TP
+lower
+- lower bound of the interval the real number is defined on
+.PD 0
+.TP
+upper
+- lower bound of the interval the real number is defined on
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetRealFromGrayCode(ctx, p, pop, start, end, lower, upper)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+double lower
+double upper
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Decode a real value from the string p in population PGA_NEWPOP.  The
+value to decode lies on the interval [-10,20] and is represented
+using the 20 bits in bit positions 10--29.
+
+double x;
+:
+x = PGAGetRealFromGrayCode(ctx, p, PGA_NEWPOP, 10, 29, -10.0, 20.0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGARank.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGARank.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGARank.1	(revision 6168)
@@ -0,0 +1,62 @@
+.TH PGARank 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARank \- returns the rank of a string in a population.  This is a value
+between 1,...,N (the population size).  The most fit string has rank 1,
+the least fit string has rank N.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the index of the string whose rank is desired
+.PD 0
+.TP
+order
+- an array containing a unique rank for each string
+.PD 0
+.TP
+n
+- the size of the array order
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGARank(ctx, p, order, n)
+PGAContext *ctx
+int p
+int *order
+int n
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+Determine the rank of string p.
+
+PGAContext *ctx;
+int i, popsize, rank, *order;
+double *fitness;
+
+popsize = PGAGetPopsize(ctx);
+order   = (int *)   malloc(sizeof(int)    * popsize);
+fitness = (double *)malloc(sizeof(double) * popsize);
+
+for(i=0;i<popsize; i++) {
+fitness[i] = PGAGetFitness(ctx, p, PGA_OLDPOP);
+order[i]   = i;
+}
+
+PGADblHeapSort(ctx, fitness, order, popsize);
+rank = PGARank(ctx, p, order, popsize)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetBinaryAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetBinaryAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetBinaryAllele.1	(revision 6168)
@@ -0,0 +1,56 @@
+.TH PGASetBinaryAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetBinaryAllele \- sets a binary allele to the specified value.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 0
+.TP
+val
+- binary value (either 1 or 0) to set the allele to
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetBinaryAllele(ctx, p, pop, i, val)
+PGAContext *ctx
+int p
+int pop
+int i
+int val
+.fi
+.SH LOCATION
+binary.c
+.SH EXAMPLE
+.nf
+Copies the alleles from member p in PGA_OLDPOP to member q PGA_NEWPOP.
+Assumes strings are of the same length.
+
+PGAContext *ctx;
+int p, q, i;
+:
+for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+PGASetBinaryAllele(ctx, q, PGA_NEWPOP, i,
+PGAGetBinaryAllele(ctx, p, PGA_OLDPOP, i))
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetCharacterAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetCharacterAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetCharacterAllele.1	(revision 6168)
@@ -0,0 +1,57 @@
+.TH PGASetCharacterAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetCharacterAllele \- sets the value of an allele in a
+PGA_DATATYPE_CHARACTER string.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 0
+.TP
+val
+- character value to set the allele to
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetCharacterAllele(ctx, p, pop, i, value)
+PGAContext *ctx
+int p
+int pop
+int i
+char value
+.fi
+.SH LOCATION
+char.c
+.SH EXAMPLE
+.nf
+Copies the alleles from member p in PGA_OLDPOP to member q in PGA_NEWPOP.
+Assumes the strings are of the same length.
+
+PGAContext *ctx;
+int p, q, i;
+:
+for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+PGASetCharacterAllele(ctx, q, PGA_NEWPOP, i,
+PGAGetCharacterAllele(ctx, p, PGA_OLDPOP, i))
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetEvaluation.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetEvaluation.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetEvaluation.1	(revision 6168)
@@ -0,0 +1,51 @@
+.TH PGASetEvaluation 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetEvaluation \- Set the evaluation function value for a string to a
+specified value.  Also sets the evaulation up to date flag to PGA_TRUE.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population string p is in
+.PD 0
+.TP
+val
+- the (user) evaluation value to assign to string p
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetEvaluation(ctx, p, pop, val)
+PGAContext *ctx
+int p
+int pop
+double val
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Set the evaluation function value of string p in population PGA_NEWPOP
+to 123.456.
+
+PGAContext *ctx;
+int p;
+:
+PGASetEvaluation(ctx, p, PGA_NEWPOP, 123.456);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetEvaluationUpToDateFlag.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetEvaluationUpToDateFlag.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetEvaluationUpToDateFlag.1	(revision 6168)
@@ -0,0 +1,54 @@
+.TH PGASetEvaluationUpToDateFlag 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetEvaluationUpToDateFlag \- sets the flag associated with a
+string to PGA_TRUE or PGA_FLASE to indicate whether the evaluate
+function value is out-of-date or not.  Note that this flag is always
+set to PGA_TRUE when PGASetEvaluation is called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population string p is in
+.PD 0
+.TP
+status
+- boolean for whether up-to-date
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetEvaluationUpToDateFlag(ctx, p, pop, status)
+PGAContext *ctx
+int p
+int pop
+int status
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Set the evaluation function flag for string p in population PGA_NEWPOP
+to PGA_FALSE (as might happen after, for example, calling a hill-climbing
+routine that modified this string).
+
+PGAContext *ctx;
+int p;
+:
+PGASetEvaluationUpToDateFlag(ctx, p, PGA_NEWPOP, PGA_FALSE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetFitnessCmaxValue.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetFitnessCmaxValue.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetFitnessCmaxValue.1	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetFitnessCmaxValue 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetFitnessCmaxValue \- The value of the multiplier used by
+PGAFitnessMinCmax so that the worst string has a nonzero fitness.
+The default value is 1.01.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+val
+- the value of the multiplier
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetFitnessCmaxValue(ctx, val)
+PGAContext *ctx
+double val
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetFitnessCmaxValue(ctx, 1.2);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetFitnessMinType.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetFitnessMinType.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetFitnessMinType.1	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGASetFitnessMinType 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetFitnessMinType \- sets the type of algorithm used if a minimization
+problem is specified to determine how values are remapped for maximization.
+Valid choices are PGA_FITNESSMIN_RECIPROCAL and PGA_FITNESSMIN_CMAX to do
+the mapping using the reciprocal of the evaluation function, or by
+subtracting the worst evaluation function value from each evaluation
+function value, respectively.  The default is PGA_FITNESSMIN_CMAX
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fitness_type
+- symbolic constant to specify fitness minimization type
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetFitnessMinType(ctx, fitness_type)
+PGAContext *ctx
+int fitness_type
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetFitnessMinType(ctx, PGA_FITNESSMIN_CMAX);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetFitnessType.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetFitnessType.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetFitnessType.1	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGASetFitnessType 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetFitnessType \- Set the type of fitness algorithm to use. Valid choices
+are PGA_FITNESS_RAW, PGA_FITNESS_NORMAL, or PGA_FITNESS_RANKING for
+raw fitness (the evaluation function value), linear normalization, or
+linear ranking, respectively.  The default is PGA_FITNESS_RAW.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fitness_type
+- symbolic constant to specify fitness type
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetFitnessType(ctx, fitness_type)
+PGAContext *ctx
+int fitness_type
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetFitnessType(ctx, PGA_FITNESS_RANKING);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetIntegerAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetIntegerAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetIntegerAllele.1	(revision 6168)
@@ -0,0 +1,54 @@
+.TH PGASetIntegerAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetIntegerAllele \- sets the value of a (integer) allele.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 0
+.TP
+val
+- integer value to set the allele to
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetIntegerAllele(ctx, p, pop, i, value)
+PGAContext *ctx
+int p
+int pop
+int i
+int value
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Set the value of the ith allele of string p in population PGA_NEWPOP
+to 64.
+
+PGAContext *ctx;
+int p, i;
+:
+PGASetIntegerAllele (ctx, p, PGA_NEWPOP, i, 64)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetMaxFitnessRank.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetMaxFitnessRank.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetMaxFitnessRank.1	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetMaxFitnessRank 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMaxFitnessRank \- The value of the parameter Max when using linear
+ranking for fitness determination. The default value is 1.2.  The value
+must be from the interval [1.0, 2.0].  The fitness type must have been set
+to PGA_FITNESS_RANKING with PGASetFitnessType for this function call
+to have any effect.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+max
+- the value of the parameter Max when using linear ranking
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMaxFitnessRank(ctx, fitness_rank_max)
+PGAContext *ctx
+double fitness_rank_max
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMaxFitnessRank(ctx, 1.1);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetRealAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetRealAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man1/PGASetRealAllele.1	(revision 6168)
@@ -0,0 +1,55 @@
+.TH PGASetRealAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRealAllele \- sets the value of real-valued allele i in string p
+in population pop
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 0
+.TP
+val
+- real value to set the allele to
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRealAllele(ctx, p, pop, i, value)
+PGAContext *ctx
+int p
+int pop
+int i
+double value
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Sets the value of the ith allele of string p in population PGA_NEWPOP
+to 1.57
+
+PGAContext *ctx;
+int i, p;
+:
+PGASetRealAllele ( ctx, p, PGA_NEWPOP, i, 1.57)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetBinaryInitProb.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetBinaryInitProb.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetBinaryInitProb.2	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetBinaryInitProb 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetBinaryInitProb \- Returns the probability that an allele will be
+randomly initialized to "1" in a PGA_DATATYPE_BINARY string.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetBinaryInitProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+binary.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double prob;
+:
+prob = PGAGetBinaryInitProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetIntegerInitType.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetIntegerInitType.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetIntegerInitType.2	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetIntegerInitType 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetIntegerInitType \- returns the type of scheme used to randomly
+initialize strings of data type PGA_DATATYPE_INTEGER.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetIntegerInitType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int inittype;
+:
+inittype = PGAGetIntegerInitType(ctx);
+switch (inittype) {
+case PGA_IINIT_PERMUTE:
+printf("Data Type = PGA_IINIT_PERMUTE\n");
+break;
+case PGA_IINIT_RANGE:
+printf("Data Type = PGA_IINIT_RANGE\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMaxIntegerInitValue.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMaxIntegerInitValue.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMaxIntegerInitValue.2	(revision 6168)
@@ -0,0 +1,34 @@
+.TH PGAGetMaxIntegerInitValue 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxIntegerInitValue \- returns the maximum of the range of integers
+used to randomly initialize integer strings.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMaxIntegerInitValue(ctx, i)
+PGAContext *ctx
+int i
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int max;
+:
+max = PGAGetMaxIntegerInitValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMaxRealInitValue.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMaxRealInitValue.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMaxRealInitValue.2	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGAGetMaxRealInitValue 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxRealInitValue \- returns the maximum value used to randomly
+initialize allele i in a real string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+i
+- an allele position
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMaxRealInitValue(ctx, i)
+PGAContext *ctx
+int i
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int max;
+:
+max = PGAGetMaxRealInitValue(ctx, 0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMinIntegerInitValue.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMinIntegerInitValue.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMinIntegerInitValue.2	(revision 6168)
@@ -0,0 +1,34 @@
+.TH PGAGetMinIntegerInitValue 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMinIntegerInitValue \- returns the minimum of the range of integers
+used to randomly initialize integer strings.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMinIntegerInitValue(ctx, i)
+PGAContext *ctx
+int i
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int min;
+:
+min = PGAGetMinIntegerInitValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMinRealInitValue.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMinRealInitValue.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetMinRealInitValue.2	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGAGetMinRealInitValue 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMinRealInitValue \- returns the minimum value used to randomly
+initialize allele i in a real string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+i
+- an allele position
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMinRealInitValue(ctx, i)
+PGAContext *ctx
+int i
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int min;
+:
+min = PGAGetMinRealInitValue(ctx, 0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetRandomInitFlag.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetRandomInitFlag.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetRandomInitFlag.2	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetRandomInitFlag 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRandomInitFlag \- returns true/false to indicate whether or not
+alleles are randomly initialized.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRandomInitFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+create.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int raninit;
+:
+raninit = PGAGetRandomInitFlag(ctx);
+switch (raninit) {
+case PGA_TRUE:
+printf("Population is randomly initialized\n");
+break;
+case PGA_FALSE:
+printf("Population initialized to zero\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetRealInitType.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetRealInitType.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGAGetRealInitType.2	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetRealInitType 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRealInitType \- returns the type of scheme used to randomly
+initialize strings of data type PGA_DATATYPE_REAL.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRealInitType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int inittype;
+:
+inittype = PGAGetRealInitType(ctx);
+switch (inittype) {
+case PGA_RINIT_PERCENT:
+printf("Data Type = PGA_RINIT_PERCENT\n");
+break;
+case PGA_RINIT_RANGE:
+printf("Data Type = PGA_RINIT_RANGE\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetBinaryInitProb.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetBinaryInitProb.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetBinaryInitProb.2	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetBinaryInitProb 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetBinaryInitProb \- specify the probability of initializing an allele to
+"1" when creating a PGA_DATATYPE_BINARY string.  The default value is 0.5.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the binary initialization probability
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetBinaryInitProb(ctx, probability)
+PGAContext *ctx
+double probability
+.fi
+.SH LOCATION
+binary.c
+.SH EXAMPLE
+.nf
+Example:
+Set approximately 1 percent of all binary alleles to "1" when randomly
+initializing the population.
+
+PGAContext *ctx;
+:
+PGASetBinaryInitProb(ctx, 0.01);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetCharacterInitType.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetCharacterInitType.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetCharacterInitType.2	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetCharacterInitType 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetCharacterInitType \- sets a flag to specify whether the character
+strings will be exclusively lowercase, exclusively uppercase, or a mixure
+of both cases.  Legal flags are PGA_CINIT_UPPER, PGA_CINIT_LOWER, and
+PGA_CINIT_MIXED.  Default is PGA_CINIT_LOWER.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+value
+- symbolic constant specifying which case
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetCharacterInitType(ctx, value)
+PGAContext *ctx
+int value
+.fi
+.SH LOCATION
+char.c
+.SH EXAMPLE
+.nf
+Set program to generate exclusively uppercase letters
+
+PGAContext *ctx;
+:
+PGASetCharacterInitType(ctx, PGA_CINIT_UPPER);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetIntegerInitPermute.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetIntegerInitPermute.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetIntegerInitPermute.2	(revision 6168)
@@ -0,0 +1,48 @@
+.TH PGASetIntegerInitPermute 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetIntegerInitPermute \- sets a flag to tell the initialization routines
+to set each integer-valued gene to a random permutation of the values given
+by an upper and lower bound.  The length of the interval must be the same
+as the string length.  This is the default strategy for initializing
+integer-valued strings. The default interval is [0,L-1] where L is the
+string length.  No string initialization is done by this call.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+min
+- the lower bound of numbers used in the permutation
+.PD 0
+.TP
+max
+- the upper bound of numbers used in the permutation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetIntegerInitPermute(ctx, min, max)
+PGAContext *ctx
+int min
+int max
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Set the initialization routines to set each gene to a random and
+unique value from the interval $[500,599]$.
+
+PGAContext *ctx;
+:
+PGASetIntegerInitPermute(ctx, 500, 599)}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetIntegerInitRange.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetIntegerInitRange.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetIntegerInitRange.2	(revision 6168)
@@ -0,0 +1,57 @@
+.TH PGASetIntegerInitRange 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetIntegerInitRange \- sets a flag to tell the initialization routines to
+set each integer-valued gene to a value chosen randomly from the interval
+given by an upper and lower bound.  No string initialization is done by
+this call.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+min
+- array of lower bounds that define the interval the gene is
+initialized from
+.PD 0
+.TP
+max
+- array of upper bounds that define the interval the gene is
+initialized from
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetIntegerInitRange(ctx, min, max)
+PGAContext *ctx
+int *min
+int *max
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Set the initialization routines to select a value for gene i
+uniformly randomly from the interval [0,i].  Assumes all strings
+are of the same length.
+
+PGAContext *ctx;
+int *low, *high, stringlen, i;
+:
+stringlen = PGAGetStringLength(ctx);
+low  = (int *) malloc(stringlen*sizeof(int));
+high = (int *) malloc(stringlen*sizeof(int));
+for(i=0;i<stringlen;i++) {
+low[i]  = 0;
+high[i] = i
+}
+PGASetIntegerInitRange(ctx, low, high);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetRandomInitFlag.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetRandomInitFlag.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetRandomInitFlag.2	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetRandomInitFlag 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRandomInitFlag \- A boolean flag to indicate whether to randomly
+initialize alleles.  Legal values are PGA_TRUE and PGA_FALSE.  Default
+is PGA_TRUE -- randomly initialize alleles.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+flag
+- either PGA_TRUE or PGA_FALSE
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRandomInitFlag(ctx, RandomBoolean)
+PGAContext *ctx
+int RandomBoolean
+.fi
+.SH LOCATION
+create.c
+.SH EXAMPLE
+.nf
+Example:
+Set the initialization routine to initialize all alleles to zero
+
+PGAContext *ctx;
+:
+PGASetRandomInitFlag(ctx,PGA_FALSE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetRealInitPercent.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetRealInitPercent.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetRealInitPercent.2	(revision 6168)
@@ -0,0 +1,58 @@
+.TH PGASetRealInitPercent 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRealInitPercent \- sets the upper and lower bounds for randomly
+initializing real-valued genes.  For each gene these bounds define an
+interval from which the initial allele value is selected uniformly randomly.
+With this routine the user specifies a median value and a percent offset
+for each allele.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+median
+- an array containing the mean value of the interval
+.PD 0
+.TP
+percent
+- an array containing the percent offset to add and subtract to
+the median to define the interval
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRealInitPercent(ctx, median, percent)
+PGAContext *ctx
+double *median
+double *percent
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Set the initialization routines to select a value for each real-valued
+gene i uniformly randomly from the interval [i-v,i+v], where $v = i/2$.
+Assumes all strings are the same length.
+
+PGAContext *ctx;
+double *median, *percent;
+int i, stringlen;
+:
+stringlen = PGAGetStringLength(ctx);
+median  = (double *) malloc(stringlen*sizeof(double));
+percent = (double *) malloc(stringlen*sizeof(double));
+for(i=0;i<stringlen;i++) {
+median[i]  = (double) i;
+percent[i] = 0.5;
+}
+PGASetRealInitPercent(ctx, median, percent);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetRealInitRange.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetRealInitRange.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man2/PGASetRealInitRange.2	(revision 6168)
@@ -0,0 +1,58 @@
+.TH PGASetRealInitRange 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRealInitRange \- sets the upper and lower bounds for randomly
+initializing real-valued genes.  For each gene these bounds define an
+interval from which the initial allele value is selected uniformly randomly.
+The user specifies two arrays containing lower and bound for each gene to
+define the interval.  This is the default strategy for initializing
+real-valued strings.  The default interval is $[0,1.0]$ for each gene.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+min
+- array containing the lower bound of the interval for each gene
+.PD 0
+.TP
+mac
+- array containing the upper bound of the interval for each gene
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRealInitRange(ctx, min, max)
+PGAContext *ctx
+double *min
+double *max
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Set the initialization routines to select a value for each real-valued
+gene i uniformly randomly from the interval [-10.,i]
+Assumes all strings are of the same length.
+
+PGAContext *ctx;
+double *low, *high;
+int i, stringlen;
+:
+stringlen = PGAGetStringLength(ctx);
+low  = (double *) malloc(stringlen*sizeof(double));
+high = (double *) malloc(stringlen*sizeof(double));
+for(i=0;i<stringlen;i++) {
+low[i]  = -10.0;
+high[i] = i;
+}
+PGASetRealInitRange(ctx, low, high);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGACrossover.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGACrossover.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGACrossover.3	(revision 6168)
@@ -0,0 +1,68 @@
+.TH PGACrossover 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGACrossover \- performs crossover on two parent strings to create two
+child strings (via side-effect).  The type of crossover performed is
+either the default or that specified by PGASetCrossoverType
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p1
+- the first parent string
+.PD 0
+.TP
+p2
+- the second parent string
+.PD 0
+.TP
+pop1
+- symbolic constant of the population containing string p1 and p2
+.PD 0
+.TP
+c1
+- the first child string
+.PD 0
+.TP
+c2
+- the second child string
+.PD 0
+.TP
+pop2
+- symbolic constant of the population to contain string c1 and c2
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGACrossover(ctx, p1, p2, pop1, c1, c2, pop2)
+PGAContext *ctx
+int p1
+int p2
+int pop1
+int c1
+int c2
+int pop2
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+Perform crossover on the two parent strings mom and dad in population
+PGA_OLDPOP, and insert the child strings, child1 and child1, in
+population PGA_NEWPOP.
+
+PGAContext *ctx;
+int mom, dad, child1, child2;
+:
+PGACrossover(ctx, mom, dad, PGA_OLDPOP, child1, child2, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetCrossoverProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetCrossoverProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetCrossoverProb.3	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetCrossoverProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetCrossoverProb \- Returns the crossover probability
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetCrossoverProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double pc;
+:
+pc = PGAGetCrossoverProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetCrossoverType.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetCrossoverType.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetCrossoverType.3	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGAGetCrossoverType 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetCrossoverType \- Returns the type of crossover selected
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetCrossoverType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int crosstype;
+:
+crosstype = PGAGetCrossoverType(ctx);
+switch (crosstype) {
+case PGA_CROSSOVER_ONEPT:
+printf("Crossover Type = PGA_CROSSOVER_ONEPT\n");
+break;
+case PGA_CROSSOVER_TWOPT:
+printf("Crossover Type = PGA_CROSSOVER_TWOPT\n");
+break;
+case PGA_CROSSOVER_UNIFORM:
+printf("Crossover Type = PGA_CROSSOVER_UNIFORM\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationBoundedFlag.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationBoundedFlag.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationBoundedFlag.3	(revision 6168)
@@ -0,0 +1,34 @@
+.TH PGAGetMutationBoundedFlag 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationBoundedFlag \- returns PGA_TRUE or PGA_FALSE to indicate
+whether mutated integer strings remain in the range specified when
+initialized with PGASetIntegerInitRange.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMutationBoundedFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int val;
+:
+val = PGAGetMutationBoundedFlag(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationIntegerValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationIntegerValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationIntegerValue.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMutationIntegerValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationIntegerValue \- Returns the value of the multiplier
+used to mutate PGA_DATATYPE_INTEGER strings with.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMutationIntegerValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int ival;
+:
+ival = PGAGetMutationIntegerValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationProb.3	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetMutationProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationProb \- Returns the probability of mutation.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMutationProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double pm;
+:
+pm = PGAGetMutateProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationRealValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationRealValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationRealValue.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMutationRealValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationRealValue \- Returns the value of the multiplier used to
+mutate PGA_DATATYPE_REAL strings with.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMutationRealValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double val;
+:
+val = PGAGetMutationRealValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationType.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationType.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetMutationType.3	(revision 6168)
@@ -0,0 +1,49 @@
+.TH PGAGetMutationType 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationType \- Returns the type of mutation used
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMutationType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int mutatetype;
+:
+mutatetype = PGAGetMutationType(ctx);
+switch (mutatetype) {
+case PGA_MUTATION_CONSTANT:
+printf("Mutation Type = PGA_MUTATION_CONSTANT\n");
+break;
+case PGA_MUTATION_RANGE:
+printf("Mutation Type = PGA_MUTATION_RANGE\n");
+break;
+case PGA_MUTATION_UNIFORM:
+printf("Mutation Type = PGA_MUTATION_UNIFORM\n");
+break;
+case PGA_MUTATION_GAUSSIAN:
+printf("Mutation Type = PGA_MUTATION_GAUSSIAN\n");
+break;
+case PGA_MUTATION_PERMUTE:
+printf("Mutation Type = PGA_MUTATION_PERMUTE\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetPTournamentProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetPTournamentProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetPTournamentProb.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetPTournamentProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetPTournamentProb \- returns the probability of selecting the best
+string in a probabilistic binary tournament
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetPTournamentProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double pt;
+:
+pt = PGAGetPTournamentProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetRestartAlleleChangeProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetRestartAlleleChangeProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetRestartAlleleChangeProb.3	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetRestartAlleleChangeProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRestartAlleleChangeProb \- returns the probability with which
+an allele will be mutated during a restart
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetRestartAlleleChangeProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+prob = PGASetRestartAlleleChangeProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetRestartFlag.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetRestartFlag.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetRestartFlag.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetRestartFlag 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRestartFlag \- returns whether the algorithm should employ the
+restart operator
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRestartFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int val;
+:
+val = PGAGetRestartFlag(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetRestartFrequencyValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetRestartFrequencyValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetRestartFrequencyValue.3	(revision 6168)
@@ -0,0 +1,36 @@
+.TH PGAGetRestartFrequencyValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRestartFrequencyValue \- returns the number of iterations of no
+change in the best string after which the algorithm should restart
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+numiter
+- number of changeless iterations
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRestartFrequencyValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+numiter = PGAGetRestartFrequencyValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetSelectType.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetSelectType.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetSelectType.3	(revision 6168)
@@ -0,0 +1,46 @@
+.TH PGAGetSelectType 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetSelectType \- Returns the type of selection selected
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetSelectType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int selecttype;
+:
+selecttype = PGAGetSelectType(ctx);
+switch (selecttype) {
+case PGA_SELECT_PROPORTIONAL:
+printf("Selection Type = PGA_SELECT_PROPORTIONAL\n");
+break;
+case PGA_SELECT_SUS:
+printf("Selection Type = PGA_SELECT_SUS\n");
+break;
+case PGA_SELECT_TOURNAMENT:
+printf("Selection Type = PGA_SELECT_TOURNAMENT\n");
+break;
+case PGA_SELECT_PTOURNAMENT:
+printf("Selection Type = PGA_SELECT_PTOURNAMENT\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetUniformCrossoverProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetUniformCrossoverProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAGetUniformCrossoverProb.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetUniformCrossoverProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetUniformCrossoverProb \- returns the probability of a bit being
+selected from the first child string in uniform crossover
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetUniformCrossoverProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double pu;
+:
+pu = PGAGetUniformCrossoverProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAMutate.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAMutate.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGAMutate.3	(revision 6168)
@@ -0,0 +1,50 @@
+.TH PGAMutate 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAMutate \- This routine performs mutation on a string.  The type of mutation
+depends on the data type.  Refer to the user guide for data-specific
+examples.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- index of string to mutate
+.PD 0
+.TP
+pop
+- symbolic constant of the population containing p
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAMutate(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+Mutate the best string in the population, until 10 or more mutations
+have occured.
+
+PGAContext *ctx;
+int p, count = 0;
+:
+p = PGAGetBestIndex(ctx, PGA_NEWPOP);
+while (count < 10) {
+count += PGAMutate(ctx, p, PGA_NEWPOP);
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGARestart.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGARestart.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGARestart.3	(revision 6168)
@@ -0,0 +1,51 @@
+.TH PGARestart 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARestart \- reseeds a population from the best string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+val
+- the probability of changing an allele when copying the
+best string to the new population
+.PD 0
+.TP
+source_pop
+- the source population
+.PD 0
+.TP
+dest_pop
+- symbolic constant of the destination population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGARestart(ctx, source_pop, dest_pop)
+PGAContext *ctx
+int source_pop
+int dest_pop
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Perform an unspecified test to determine if the current evolution is
+not evolving fast enough, and if so, restart the evolution.
+
+PGAContext *ctx;	    PGAEvaluateMS(ctx, PGA_OLDPOP, f, comm);
+PGAFitness   (ctx, PGA_OLDPOP);
+}
+
+:
+if (StagnantEvolution()) {
+PGARestart(ctx, PGA_OLDPOP, PGA_NEWPOP);
+PGAEvaluate(ctx, PGA_NEWPOP, EvalFunc);
+PGAUpdateGeneration(ctx);
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASelect.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASelect.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASelect.3	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGASelect 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASelect \- performs genetic algorithm selection using either the default
+selection scheme or that specified with PGASetSelectType().  Valid selection
+methods are proportional, stochastic universal, tournament, or probabilistic
+tournament selection, PGA_SELECT_PROPORTIONAL, PGA_SELECT_SUS, 
+PGA_SELECT_TOURNAMENT, and PGA_SELECT_PTOURNAMENT, respectively.  This 
+function updates an internal array with the indices of members of popix 
+selected for recombination.  These indices may be accessed with 
+PGASelectNextIndex()
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+popix
+- symbolic constant of population to select from
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASelect(ctx, popix)
+PGAContext *ctx
+int popix
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx,
+:
+PGASelect(ctx, PGA_OLDPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASelectNextIndex.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASelectNextIndex.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASelectNextIndex.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGASelectNextIndex 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASelectNextIndex \- returns the index of next individual in
+internal array that contains the indices determined by PGASelect
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGASelectNextIndex(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int l;
+:
+l = PGASelectNextIndex(ctx, PGA_OLDPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetCrossoverProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetCrossoverProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetCrossoverProb.3	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGASetCrossoverProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetCrossoverProb \- Probability that a selected string will undergo
+crossover.  The default is 0.85.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the crossover probability
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetCrossoverProb(ctx, crossover_prob)
+PGAContext *ctx
+double crossover_prob
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+Make crossover happen infrequently.
+
+PGAContext *ctx;
+:
+PGASetCrossoverProb(ctx,0.001);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetCrossoverType.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetCrossoverType.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetCrossoverType.3	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGASetCrossoverType 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetCrossoverType \- specify the type of crossover to use. Valid choices
+are PGA_CROSSOVER_ONEPT, PGA_CROSSOVER_TWOPT, or PGA_CROSSOVER_UNIFORM for
+one-point, two-point, and uniform crossover, respectively.  The default is
+PGA_CROSSOVER_TWOPT.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+crossover_type
+- symbolic constant to specify crossover type
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetCrossoverType(ctx, crossover_type)
+PGAContext *ctx
+int crossover_type
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+Use uniform crossover when crossingover strings.
+
+PGAContext *ctx;
+:
+PGASetCrossoverType(ctx, PGA_CROSSOVER_UNIFORM);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationBoundedFlag.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationBoundedFlag.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationBoundedFlag.3	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGASetMutationBoundedFlag 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationBoundedFlag \- If this flag is set to PGA_TRUE, then for
+Integer and Real strings whenever a gene is mutated, if it underflows
+(overflows) the lower (upper)bound it is reset to the lower (upper) bound.
+In this way all allele values remain within the range the integer strings
+were initialized on.  If this flag is PGA_FALSE (the default), the alleles
+may take any values.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+flag
+- either PGA_TRUE or PGA_FALSE
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationBoundedFlag(ctx, val)
+PGAContext *ctx
+int val
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMutationBoundedFlag(ctx, PGA_TRUE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationIntegerValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationIntegerValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationIntegerValue.3	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetMutationIntegerValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationIntegerValue \- Set multiplier to mutate PGA_DATATYPE_INTEGER
+strings with.  The use of this value depends on the type of mutation
+being used.  The default value is 1.  See the user guide for more details.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+val
+- the mutation value to use for Integer mutation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationIntegerValue(ctx, val)
+PGAContext *ctx
+int val
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMutationIntegerValue(ctx, 5);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationProb.3	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGASetMutationProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationProb \- Specifies the probability that a given allele will
+be mutated.  If this is called without calling PGASetMutationType(), the
+default mutation type is PGA_MUTATION_FIXED.  The default probability is
+the reciprocal of the string length.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the mutation probability
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationProb(ctx, mutation_prob)
+PGAContext *ctx
+double mutation_prob
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMutationProb(ctx,0.001);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationRealValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationRealValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetMutationRealValue.3	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetMutationRealValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationRealValue \- Set multiplier to mutate PGA_DATATYPE_REAL
+strings with.  The use of this value depends on the type of mutation
+being used.  The default value is 0.1.  See the user guide for more details.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+val
+- the mutation value to use for Real mutation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationRealValue(ctx, val)
+PGAContext *ctx
+double val
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMutationRealValue(ctx,50.0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetPTournamentProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetPTournamentProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetPTournamentProb.3	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGASetPTournamentProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetPTournamentProb \- Specifies the probability that the string that wins
+a binary tournament will be selected.  This function will have no effect
+unless PGA_SELECT_PTOURNAMENT was specified as the type of selection to
+use with PGASetSelectType.  The default value is 0.6.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the probability of selecting the better string
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetPTournamentProb(ctx, ptournament_prob)
+PGAContext *ctx
+double ptournament_prob
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetPTournamentProb(ctx,0.8);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetRestartAlleleChangeProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetRestartAlleleChangeProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetRestartAlleleChangeProb.3	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetRestartAlleleChangeProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRestartAlleleChangeProb \- specifies the probability with which
+an allele will be mutated during a restart
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+prob
+- probability of mutation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRestartAlleleChangeProb(ctx, prob)
+PGAContext *ctx
+double prob
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetRestartAlleleChangeProb(ctx, 0.5);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetRestartFlag.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetRestartFlag.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetRestartFlag.3	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetRestartFlag 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRestartFlag \- specifies whether the algorithm should employ
+the restart operator
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+val
+- boolean variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRestartFlag(ctx, val)
+PGAContext *ctx
+int val
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetRestartFlag(ctx, PGA_TRUE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetRestartFrequencyValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetRestartFrequencyValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetRestartFrequencyValue.3	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetRestartFrequencyValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRestartFrequencyValue \- specifies the number of iterations of no
+change in the best string after which the algorithm should restart
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+numiter
+- number of changeless iterations
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRestartFrequencyValue(ctx, numiter)
+PGAContext *ctx
+int numiter
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetRestartFrequencyValue(ctx, 100);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetSelectType.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetSelectType.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetSelectType.3	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetSelectType 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetSelectType \- specify the type of selection to use. Valid choices
+are PGA_SELECT_PROPORTIONAL, PGA_SELECT_SUS, PGA_SELECT_TOURNAMENT, and
+PGA_SELECT_PTOURNAMENT for proportional, stochastic universal selection,
+tournament, and probabilistic tournament selection, respectively.  The
+default is PGA_SELECT_TOURNAMENT.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+select_type
+- symbolic constant to specify selection type
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetSelectType(ctx, select_type)
+PGAContext *ctx
+int select_type
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetSelectType(ctx, PGA_SELECT_SUS);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetUniformCrossoverProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetUniformCrossoverProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man3/PGASetUniformCrossoverProb.3	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetUniformCrossoverProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetUniformCrossoverProb \- Probability used in uniform crossover
+to specify that an allele value value be selected from a particular
+parent. The default is 0.6.  The crossover type must have been set
+to PGA_CROSSOVER_UNIFORM with PGASetCrossoverType for this function
+call to have any effect.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the crossover probability
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetUniformCrossoverProb(ctx, uniform_cross_prob)
+PGAContext *ctx
+double uniform_cross_prob
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetUniformCrossoverProb(ctx,0.9);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGABuildDatatype.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGABuildDatatype.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGABuildDatatype.4	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGABuildDatatype 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGABuildDatatype \- Build an MPI datatype for string p in population pop.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- index of an individual
+.PD 0
+.TP
+pop
+- symbolic constant of the population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+MPI_Datatype  PGABuildDatatype(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+MPI_Datatype dt;
+:
+dt = PGABuildDatatype(ctx, p, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAGetCommunicator.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAGetCommunicator.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAGetCommunicator.4	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGAGetCommunicator 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetCommunicator \- Returns the default communicator used when PGARun is
+called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+MPI_Comm  PGAGetCommunicator(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+MPI_Comm comm;
+PGAContext *ctx,
+double f(PGAContext *ctx, int p, int pop);
+:
+ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+PGASetUp(ctx);
+comm = PGAGetCommunicator(ctx);
+
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAGetNumProcs.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAGetNumProcs.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAGetNumProcs.4	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetNumProcs 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetNumProcs \- Returns the size of communicator comm in processes.  If
+comm is NULL or a sequential version of PGAPack is used, PGAGetNumProcs()
+returns 1.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable structure pointer
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetNumProcs(ctx, comm)
+PGAContext *ctx
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext  *ctx;
+:
+if (PGAGetNumProcs(ctx, MPI_COMM_WORLD) < 4) {
+printf("Too few processors for decent performance!\n");
+exit(-1);
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAGetRank.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAGetRank.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAGetRank.4	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGAGetRank 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRank \- Returns the rank of the processor in communicator comm.  If
+comm is NULL or a sequential version of PGAPack is used, PGAGetRank()
+returns 0.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable structure pointer
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRank(ctx, comm)
+PGAContext *ctx
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext  *ctx;
+int          rank;
+:
+rank = PGAGetRank(ctx, MPI_COMM_WORLD);
+if (rank == 0) {
+LetTheMasterDoSomething();
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAReceiveIndividual.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAReceiveIndividual.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGAReceiveIndividual.4	(revision 6168)
@@ -0,0 +1,63 @@
+.TH PGAReceiveIndividual 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAReceiveIndividual \- receive an individual from another process
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- contex variable
+.PD 0
+.TP
+p
+- index of an individual
+.PD 0
+.TP
+pop
+- symbolic constant of the population
+.PD 0
+.TP
+source
+- ID of the process from which to receive
+.PD 0
+.TP
+tag
+- MPI tag to look for
+.PD 0
+.TP
+status
+- pointer to an MPI status structure
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAReceiveIndividual(ctx, p, pop, source, tag, comm, status)
+PGAContext *ctx
+int p
+int pop
+int source
+int tag
+MPI_Comm comm
+MPI_Status *status
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Receive a string from the master process (rank == 0) with tag
+PGA_SR_STRINGTOEVAL, and place it into the first temporary location
+in PGA_NEWPOP.
+
+PGAContext *ctx;
+MPI_Comm    comm;
+MPI_Status  status;
+:
+PGAReceiveIndividual(ctx, PGA_TEMP1, PGA_NEWPOP, 0, PGA_SR_STRINGTOEVAL,
+comm, &status);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGASendIndividual.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGASendIndividual.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGASendIndividual.4	(revision 6168)
@@ -0,0 +1,57 @@
+.TH PGASendIndividual 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASendIndividual \- transmit an individual to another process
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- index of an individual
+.PD 0
+.TP
+pop
+- symbolic constant of the population
+.PD 0
+.TP
+dest
+- ID of the process where this is going
+.PD 0
+.TP
+tag
+- MPI tag to send with the individual
+.PD 0
+.TP
+comm
+- MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASendIndividual(ctx, p, pop, dest, tag, comm)
+PGAContext *ctx
+int p
+int pop
+int dest
+int tag
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+int p, dest;
+:
+dest = SelectAFreeProcessor();
+PGASendIndividual(ctx, p, PGA_NEWPOP, dest, PGA_SR_STRINGTOEVAL, comm);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGASendReceiveIndividual.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGASendReceiveIndividual.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGASendReceiveIndividual.4	(revision 6168)
@@ -0,0 +1,91 @@
+.TH PGASendReceiveIndividual 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASendReceiveIndividual \- Send an individual to a process, while receiving
+a different individual from a different process.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+send_p
+- index of string to send
+.PD 0
+.TP
+send_pop
+- symbolic constant of population to send from
+.PD 0
+.TP
+dest
+- destination process
+.PD 0
+.TP
+send_tag
+- tag to send with
+.PD 0
+.TP
+recv_p
+- index of string to receive
+.PD 0
+.TP
+recv_pop
+- symbolic constant of population to receive from
+.PD 0
+.TP
+source
+- process to receive from
+.PD 0
+.TP
+recv_tag
+- tag to receive with
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 0
+.TP
+status
+- pointer to the MPI status structure
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASendReceiveIndividual(ctx, send_p, send_pop, dest, send_tag, recv_p, recv_pop, source, recv_tag, comm, status)
+PGAContext *ctx
+int send_p
+int send_pop
+int dest
+int send_tag
+int recv_p
+int recv_pop
+int source
+int recv_tag
+MPI_Comm comm
+MPI_Status *status
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+A dedicated process is being used to perform an optimization algorithm
+on the strings.  Send a new string, s, to the process, while receiving an
+optimized string, r, from it.
+
+PGAContext *ctx;
+MPI_Comm    comm;
+MPI_Status  status;
+int  s, r;
+:
+PGASendReceiveIndividual(ctx, s, PGA_NEWPOP, 1, PGA_SR_STRINGTOMODIFY,
+r, PGA_NEWPOP, 1, PGA_SR_MODIFIEDSTRING,
+comm, &status);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGASetCommunicator.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGASetCommunicator.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man4/PGASetCommunicator.4	(revision 6168)
@@ -0,0 +1,44 @@
+.TH PGASetCommunicator 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetCommunicator \- Set the default communicator to use when PGARun is
+called.  Does not necessarily need to be the same as the number of
+processes in MPI_COMM_WORLD (which is the default).
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+comm
+- communicator to use
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetCommunicator(ctx, comm)
+PGAContext *ctx
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+MPI_Comm mycomm;
+PGAContext *ctx,
+double f(PGAContext *ctx, int p, int pop);
+:
+ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+PGASetCommunicator(ctx, mycomm);
+PGASetUp(ctx);
+PGARun(ctx, f);
+PGADestroy(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGACheckSum.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGACheckSum.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGACheckSum.5	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGACheckSum 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGACheckSum \- maps a string to a number to be used a verification check
+PGA_DATATYPE_USER is not supported.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant for the population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGACheckSum(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p, sum;
+:
+sum = PGACheckSum(ctx, p, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAGetBestIndex.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAGetBestIndex.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAGetBestIndex.5	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGAGetBestIndex 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetBestIndex \- returns the index of the string with the best evaluation
+function value in population pop
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop
+- symbolic constant of the population to find the best string in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetBestIndex(ctx, pop)
+PGAContext *ctx
+int pop
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int best;
+:
+best = PGAGetBestIndex(ctx,PGA_OLDPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAGetRandomSeed.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAGetRandomSeed.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAGetRandomSeed.5	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetRandomSeed 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRandomSeed \- returns the integer to seed random numbers with
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRandomSeed(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int seed;
+:
+seed = PGAGetRandomSeed(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAGetWorstIndex.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAGetWorstIndex.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAGetWorstIndex.5	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGAGetWorstIndex 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetWorstIndex \- returns the index of the string with the worst
+evaluation function value in population pop
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop
+- symbolic constant of the population to find the worst string in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetWorstIndex(ctx, pop)
+PGAContext *ctx
+int pop
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int worst;
+:
+worst = PGAGetWorstIndex(ctx,PGA_OLDPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAHammingDistance.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAHammingDistance.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAHammingDistance.5	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGAHammingDistance 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAHammingDistance \- Calculates the mean Hamming distance for a population
+of binary strings.  For all other data types returns a value of 0.0 and
+prints a warning message.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+popindex
+- symbolic constant of the population for which the
+Hamming distance is to be calculated
+Output:
+The mean Hamming distance in the population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAHammingDistance(ctx, popindex)
+PGAContext *ctx
+int popindex
+.fi
+.SH LOCATION
+hamming.c
+.SH EXAMPLE
+.nf
+:
+hd = PGAHammingDistance(ctx, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAMean.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAMean.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAMean.5	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGAMean 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAMean \- calculates the mean value of an array of elements
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+a
+- array to take the mean of
+.PD 0
+.TP
+n
+- number of elements in array a
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAMean(ctx, a, n)
+PGAContext *ctx
+double *a
+int n
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double a[100], mean;
+:
+mean = PGAMean(ctx, a, 100);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandom01.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandom01.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandom01.5	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGARandom01 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARandom01 \- generates a uniform random number on the interval [0,1)
+If the second argument is 0 it returns the next random number in the
+sequence.  Otherwise, the second argument is used as a new seed for the
+population
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+newseed
+- either 0 to get the next random number, or nonzero
+to reseed
+Outputs:
+A random number on the interval [0,1)
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGARandom01(ctx, newseed)
+PGAContext *ctx
+int newseed
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+double r;
+:
+r = PGARandom01(ctx,0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomFlip.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomFlip.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomFlip.5	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGARandomFlip 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARandomFlip \- flip a biased coin and return PGA_TRUE if the coin is
+a "winner."  Otherwise, return PGA_FALSE.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- biased probability (.5 is a fair coin)
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGARandomFlip(ctx, p)
+PGAContext *ctx
+double p
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+To return PGA_TRUE approximately seventy percent of the time, use
+
+PGAContext *ctx;
+int p;
+:
+PGARandomFlip(ctx, 0.7)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomGaussian.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomGaussian.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomGaussian.5	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGARandomGaussian 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARandomGaussian \- returns an approximation to a Gaussian random number
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+mean
+- the mean of the Gaussian distribution
+.PD 0
+.TP
+sigma
+- the standard deviation of the Gaussian distribution
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGARandomGaussian(ctx, mean, sigma)
+PGAContext *ctx
+double mean
+double sigma
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+To generate a Gaussian random number with mean 0.0 and standard
+deviation 1.0 use
+
+PGAContext *ctx;
+:
+r = PGARandomGaussian(ctx, 0.0, 1.0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomInterval.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomInterval.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomInterval.5	(revision 6168)
@@ -0,0 +1,44 @@
+.TH PGARandomInterval 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARandomInterval \- returns a uniform random number on the specified
+interval
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+start
+- starting (integer) value of the interval
+.PD 0
+.TP
+end
+- ending   (integer) value of the interval
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGARandomInterval(ctx, start, end)
+PGAContext *ctx
+int start
+int end
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+Generate a value uniformly random from the interval [0,99]
+
+PGAContext *ctx;
+:
+PGARandomInterval(ctx, 0, 99);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomUniform.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomUniform.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARandomUniform.5	(revision 6168)
@@ -0,0 +1,45 @@
+.TH PGARandomUniform 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARandomUniform \- returns a uniform random number on the interval
+[start,end]
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+start
+- starting (double) value of the interval
+.PD 0
+.TP
+end
+- ending   (double) value of the interval
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGARandomUniform(ctx, start, end)
+PGAContext *ctx
+double start
+double end
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+Generate a uniform random number on the interval [-0.5, 1.5]
+
+PGAContext *ctx;
+double r;
+:
+r = PGARandomUniform(ctx, -0.5, 1.5);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARound.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARound.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGARound.5	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGARound 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARound \- Mathematically round a double to an integer, using 0.5 as the
+cutoff value.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+x
+- the number to be rounded
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGARound(ctx, x)
+PGAContext *ctx
+double x
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int y;
+y = PGARound(ctx, -78.6);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGASetRandomSeed.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGASetRandomSeed.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGASetRandomSeed.5	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetRandomSeed 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRandomSeed \- set a seed for the random number generator.  The
+default is to use a random seed.  Specifying a seed exlicitly allows
+for reproducibility of runs.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+seed
+- seed  for the random number generator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRandomSeed(ctx, seed)
+PGAContext *ctx
+int seed
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetRandomSeed(ctx,1);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAStddev.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAStddev.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man5/PGAStddev.5	(revision 6168)
@@ -0,0 +1,48 @@
+.TH PGAStddev 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAStddev \- calculates the standard deviation of an array of elements
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+a
+- array to take the standard deviation of
+.PD 0
+.TP
+n
+- number of elements in array a
+.PD 0
+.TP
+mean
+- the mean of the elements in array a
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAStddev(ctx, a, n, mean)
+PGAContext *ctx
+double *a
+int n
+double mean
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double a[100], mean, sigma;
+:
+mean  = PGAMean(ctx, a, 100);
+sigma = PGAStddev(ctx, a, 100, mean);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAError.6
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAError.6	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAError.6	(revision 6168)
@@ -0,0 +1,57 @@
+.TH PGAError 6 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAError \- reports error messages.  Prints out the message supplied, and
+the value of a piece of data.  Terminates if PGA_FATAL.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+msg
+- the error message to print
+.PD 0
+.TP
+level
+- PGA_WARNING or PGA_FATAL to indicate the error's severity
+.PD 0
+.TP
+datatype
+- the data type of the following argument
+.PD 0
+.TP
+data
+- the address of the data to be written out, cast as a void
+pointer
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAError(ctx, msg, level, datatype, data)
+PGAContext *ctx
+char *msg
+int level
+int datatype
+void *data
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int         val;
+:
+PGAError(ctx, "Some Non Fatal Error: val = ", PGA_WARNING, PGA_INT,
+(void *) &val);
+:
+PGAError(ctx, "A Fatal Error!", PGA_FATAL, PGA_VOID, NULL);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMaxMachineDoubleValue.6
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMaxMachineDoubleValue.6	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMaxMachineDoubleValue.6	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMaxMachineDoubleValue 6 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxMachineDoubleValue \- returns the largest double of the current
+machine
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMaxMachineDoubleValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double big;
+:
+big = PGAGetMaxMachineDoubleValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMaxMachineIntValue.6
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMaxMachineIntValue.6	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMaxMachineIntValue.6	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMaxMachineIntValue 6 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxMachineIntValue \- returns the largest integer of the current
+machine
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMaxMachineIntValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int intmax;
+:
+intmax = PGAGetMaxMachineIntValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMinMachineDoubleValue.6
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMinMachineDoubleValue.6	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMinMachineDoubleValue.6	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMinMachineDoubleValue 6 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxMachineDoubleValue \- returns the smallest double of the current
+machine
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMinMachineDoubleValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double small;
+:
+small = PGAGetMinMachineDoubleValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMinMachineIntValue.6
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMinMachineIntValue.6	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man6/PGAGetMinMachineIntValue.6	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMinMachineIntValue 6 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxMachineIntValue \- returns the smallest integer of the current
+machine
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMinMachineIntValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int intmin;
+:
+intmin = PGAGetMinMachineIntValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAGetPrintFrequencyValue.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAGetPrintFrequencyValue.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAGetPrintFrequencyValue.7	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetPrintFrequencyValue 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetPrintFrequencyValue \- returns how often to print statistics reports
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetPrintFrequencyValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int freq;
+:
+freq = PGAGetPrintFrequencyValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintContextVariable.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintContextVariable.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintContextVariable.7	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGAPrintContextVariable 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAPrintContextVariable \- prints the value of all the fields in the context
+variable.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fp
+- file pointer to print the output to
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAPrintContextVariable(ctx, fp)
+PGAContext *ctx
+FILE *fp
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGAPrintContextVariable(ctx, stdout);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintIndividual.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintIndividual.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintIndividual.7	(revision 6168)
@@ -0,0 +1,48 @@
+.TH PGAPrintIndividual 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAPrintIndividual \- prints the allele values of a string and associated
+fields (evaluation, fitness, etc.) of a string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fp
+- file pointer to print the output to
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population string p is in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAPrintIndividual(ctx, fp, p, pop)
+PGAContext *ctx
+FILE *fp
+int p
+int pop
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+:
+PGAPrintIndividual(ctx, stdout, p, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintPopulation.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintPopulation.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintPopulation.7	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGAPrintPopulation 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAPrintPopulation \- Calls PGAPrintIndividual to print each member of a
+population
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fp
+- file pointer to print the output to
+.PD 0
+.TP
+pop
+- symbolic constant of the population to be printed
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAPrintPopulation(ctx, fp, pop)
+PGAContext *ctx
+FILE *fp
+int pop
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGAPrintPopulation(ctx, stdout, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintReport.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintReport.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintReport.7	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGAPrintReport 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAPrintReport \- prints genetic algorithm statistics.  The statistics
+that are printed are determined by PGASetPrintOptions().
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fp
+- file pointer to print the output to
+.PD 0
+.TP
+pop
+- symbolic constant of the population whose statistics are printed
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAPrintReport(ctx, fp, pop)
+PGAContext *ctx
+FILE *fp
+int pop
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+:
+PGAPrintReport(ctx, stdout, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintString.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintString.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGAPrintString.7	(revision 6168)
@@ -0,0 +1,47 @@
+.TH PGAPrintString 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAPrintString \- write the allele values in a string to a file
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fp
+- pointer to file to write the string to
+.PD 0
+.TP
+p
+- index of the string to write out
+.PD 0
+.TP
+pop
+- symbolic constant of the population string p is in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAPrintString(ctx, file, p, pop)
+PGAContext *ctx
+FILE *file
+int p
+int pop
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+:
+PGAPrintString(ctx, stdout, p, PGA_OLDPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGASetPrintFrequencyValue.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGASetPrintFrequencyValue.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGASetPrintFrequencyValue.7	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetPrintFrequencyValue 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetPrintFrequencyValue \- Specifies the frequency with which genetic
+algorithm statistics are reported.  The default is every 10 GA iterations.
+Used only if PGARun() is used to run the GA.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+print_freq
+- the genetic algorithm population size to use
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetPrintFrequencyValue(ctx, print_freq)
+PGAContext *ctx
+int print_freq
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetPrintFrequencyValue(ctx,1);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGASetPrintOptions.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGASetPrintOptions.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man7/PGASetPrintOptions.7	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGASetPrintOptions 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetPrintOptions \- set flags to indicate what GA statistics should be
+printed whenever output is printed.  May be called more than once to
+specify different report options.  Valid choices are PGA_REPORT_AVERAGE,
+PGA_REPORT_OFFLINE, PGA_REPORT_ONLINE, PGA_REPORT_WORST, PGA_REPORT_HAMMING,
+and PGA_REPORT_STRING to specify offline analysis, online analysis, the
+worst string in the population, the Hamming distance of the population, and
+the actual allele values of the best string.  The best string is always
+printed. 
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+option
+- symbolic constant to specify a print option
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetPrintOptions(ctx, option)
+PGAContext *ctx
+int option
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetPrintOptions(ctx, PGA_REPORT_WORST);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAChange.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAChange.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAChange.8	(revision 6168)
@@ -0,0 +1,52 @@
+.TH PGAChange 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAChange \- Repeatedly apply mutation to a string (with an increasing
+mutation rate) until one or more mutations have occurred.  This routine is
+usually used with PGADuplicate to modify a duplicate string.  It is not
+intended to replace PGAMutation
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population containing string p
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAChange(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+duplcate.c
+.SH EXAMPLE
+.nf
+Example:
+Change any string in PGA_NEWPOP that is an exact copy of a string
+in PGA_OLDPOP.  To be complete, we should check the population again
+if any changes are made; for simplicity, we don't.
+
+PGAContext *ctx;
+int b, n;
+:
+n  = PGAGetPopsize(ctx);
+for (b=0; b<n; b++)
+if (PGADuplicate(ctx, b, PGA_NEWPOP, PGA_OLDPOP, n))
+PGAChange(ctx, b, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGACheckStoppingConditions.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGACheckStoppingConditions.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGACheckStoppingConditions.8	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGACheckStoppingConditions 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGACheckStoppingConditions \- returns boolean to indicate if the PGAPack
+termination conditions -- PGA_STOP_MAXITER, PGA_STOP_TOOSIMILAR, 
+PGA_STOP_NOCHANGE -- have been met.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGACheckStoppingConditions(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGACheckStoppingConditions(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGACopyIndividual.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGACopyIndividual.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGACopyIndividual.8	(revision 6168)
@@ -0,0 +1,53 @@
+.TH PGACopyIndividual 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGACopyIndividual \- copies string p1 in population pop1 to position p2 in
+population pop2
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p1
+- string to copy
+.PD 0
+.TP
+pop1
+- symbolic constant of population containing string p1
+.PD 0
+.TP
+p2
+- string to copy p1 to
+.PD 0
+.TP
+pop2
+- symbolic constant of population containing string p2
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGACopyIndividual(ctx, p1, pop1, p2, pop2)
+PGAContext *ctx
+int p1
+int pop1
+int p2
+int pop2
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int i,j;
+:
+PGACopyIndividual(ctx, i, PGA_OLDPOP, j, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGACreate.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGACreate.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGACreate.8	(revision 6168)
@@ -0,0 +1,90 @@
+.TH PGACreate 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGACreate \- creates an uninitialized context variable.  The Fortran version
+of this function call contains only the last three arguments
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+argc
+- address of the count of the number of command line arguments.
+.PD 0
+.TP
+argv
+- array of command line arguments.
+.PD 0
+.TP
+datatype
+- the data type used for the strings.  Must be one of
+PGA_DATATYPE_BINARY, PGA_DATATYPE_CHARACTER,
+PGA_DATATYPE_INTEGER, PGA_DATATYPE_REAL, or PGA_DATATYPE_USER
+.PD 0
+.TP
+binary
+-valued, character-valued, integer-valued,
+.PD 0
+.TP
+real
+-valued, or a user-defined datatype, respectively.
+.PD 0
+.TP
+len
+- the string length (number of genes).
+.PD 0
+.TP
+maxormin
+- the direction of optimization. Must be one of PGA_MAXIMIZE or
+PGA_MINIMIZE for maximization or minimization, respectively.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+PGAContext * PGACreate(argc, argv, datatype, len, maxormin)
+int *argc
+char **argv
+int datatype
+int len
+int maxormin
+.fi
+.SH LOCATION
+create.c
+.SH EXAMPLE
+.nf
+Example:
+
+In C:
+void main(int argc, char **argv) {
+PGAContext *ctx;
+:
+ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+:
+//  Set options here
+:
+PGASetUp(ctx);
+:
+//  Run the GA here
+:
+PGADestroy(ctx);
+}
+
+In FORTRAN:
+integer ctx
+:
+ctx = PGACreate(PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE)
+:
+c       Set options here
+:
+call PGASetUp(ctx)
+:
+c       Run the GA here
+:
+call PGADestroy(ctx)
+stop
+end
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGADestroy.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGADestroy.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGADestroy.8	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGADestroy 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGADestroy \- deallocate memory for this instance of PGAPack, if this context
+initialized MPI, finalize MPI as well.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGADestroy(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGADestroy(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGADone.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGADone.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGADone.8	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGADone 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGADone \- Returns PGA_TRUE if the stopping conditions have been met,
+otherwise returns false.  Calls exactly one of the user defined C or
+fortran or system (PGACheckStoppingConditions) stopping condition functions.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGADone(ctx, comm)
+PGAContext *ctx
+MPI_Comm comm
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGADone(ctx, comm);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGADuplicate.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGADuplicate.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGADuplicate.8	(revision 6168)
@@ -0,0 +1,78 @@
+.TH PGADuplicate 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGADuplicate \- determines if a specified string is a duplicate of one
+already in an existing population
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop1
+- symbolic constant of the population containing string p
+.PD 0
+.TP
+pop2
+- symbolic constant of the (possibly partial) population containing
+strings to compare string p against
+.PD 0
+.TP
+n
+- the number of strings in pop2 to compare string p against
+.PD 0
+.TP
+n
+-1)
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGADuplicate(ctx, p, pop1, pop2, n)
+PGAContext *ctx
+int p
+int pop1
+int pop2
+int n
+.fi
+.SH LOCATION
+duplcate.c
+.SH EXAMPLE
+.nf
+0,...,n-1 in population pop2.  Otherwise returns PGA_FALSE
+
+Example:
+Change any string in PGA_NEWPOP that is an exact copy of a string
+in PGA_OLDPOP.
+
+PGAContext *ctx;
+int b, n;
+:
+n  = PGAGetPopsize(ctx);
+for (b=0; b<n; b++)
+if (PGADuplicate(ctx, b, PGA_NEWPOP, PGA_OLDPOP, n))
+PGAChange(ctx, b, PGA_NEWPOP);
+
+
+Check if the best string in population PGA_OLDPOP is a duplicate of any
+of the strings in the first half of population PGA_NEWPOP.
+
+PGAContext *ctx;
+int b, n;
+:
+b  = PGAGetBestIndex(ctx, PGA_OLDPOP);
+n  = PGAGetPopsize(ctx) / 2;
+if (PGADuplicate(ctx, b, PGA_OLDPOP, PGA_NEWPOP, n))
+printf("A duplicate!\n");
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetDataType.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetDataType.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetDataType.8	(revision 6168)
@@ -0,0 +1,49 @@
+.TH PGAGetDataType 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetDataType \- Returns the data type used by the given context.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetDataType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int datatype;
+:
+datatype = PGAGetDataType(ctx);
+switch (datatype) {
+case PGA_DATATYPE_BINARY:
+printf("Data Type = PGA_DATATYPE_BINARY\n");
+break;
+case PGA_DATATYPE_CHARACTER:
+printf("Data Type = PGA_DATATYPE_CHARACTER\n");
+break;
+case PGA_DATATYPE_INTEGER:
+printf("Data Type = PGA_DATATYPE_INTEGER\n");
+break;
+case PGA_DATATYPE_REAL:
+printf("Data Type = PGA_DATATYPE_REAL\n");
+break;
+case PGA_DATATYPE_USER:
+printf("Data Type = PGA_DATATYPE_USER\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetGAIterValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetGAIterValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetGAIterValue.8	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetGAIterValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetGAIterValue \- returns the number of the current genetic
+algorithm generation
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetGAIterValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int g;
+:
+g = PGAGetGAIterValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetMaxGAIterValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetMaxGAIterValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetMaxGAIterValue.8	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetMaxGAIterValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxGAIterValue \- Returns the maximum number of iterations to run
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMaxGAIterValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int maxiter;
+:
+maxiter = PGAGetMaxGAIterValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetMutationAndCrossoverFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetMutationAndCrossoverFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetMutationAndCrossoverFlag.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetMutationAndCrossoverFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationAndCrossoverFlag \- Returns true if mutation occurs only
+when crossover does.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+crossed
+-over strings.
+Otherwise, returns PGA_FALSE
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMutationAndCrossoverFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+int mutatetype;
+:
+mutatetype = PGAGetMutationAndCrossoverFlag(ctx);
+switch (mutatetype) {
+case PGA_TRUE:
+printf("Mutating strings only after crossover\n");
+break;
+case PGA_FALSE:
+printf("Only mutating strings not undergoing crossover\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetMutationOrCrossoverFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetMutationOrCrossoverFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetMutationOrCrossoverFlag.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetMutationOrCrossoverFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationOrCrossoverFlag \- Returns true if mutation only occurs when
+crossover does not.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMutationOrCrossoverFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int mutatetype;
+:
+mutatetype = PGAGetMutationOrCrossoverFlag(ctx);
+switch (mutatetype) {
+case PGA_TRUE:
+printf("Only mutating strings not undergoing crossover\n");
+break;
+case PGA_FALSE:
+printf("Mutating strings only after crossover\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetNoDuplicatesFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetNoDuplicatesFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetNoDuplicatesFlag.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetNoDuplicatesFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetNoDuplicatesFlag \- Returns PGA_TRUE if duplicates are not allowed,
+else returns PGA_FALSE.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetNoDuplicatesFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+duplcate.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int nodups;
+:
+nodups = PGAGetNoDuplicatesFlag(ctx);
+switch (nodups) {
+case PGA_TRUE:
+printf("Duplicate strings not allowed in population\n");
+break;
+case PGA_FALSE:
+printf("Duplicate strings allowed in population\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetNumReplaceValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetNumReplaceValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetNumReplaceValue.8	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetNumReplaceValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetNumReplaceValue \- Returns the maximum number of strings to replace
+each generation.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetNumReplaceValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int numreplace;
+:
+numreplace = PGAGetNumReplaceValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetOptDirFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetOptDirFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetOptDirFlag.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetOptDirFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetOptDirFlag \- Returns a symbolic constant that represents the
+direction of optimization
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetOptDirFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int optdir;
+:
+optdir = PGAGetOptDirFlag(ctx);
+switch (optdir) {
+case PGA_MAXIMIZE:
+printf("Optimization direction = PGA_MAXIMIZE\n");
+break;
+case PGA_MINIMIZE:
+printf("Optimization direction = PGA_MINIMIZE\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetPopReplaceType.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetPopReplaceType.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetPopReplaceType.8	(revision 6168)
@@ -0,0 +1,44 @@
+.TH PGAGetPopReplaceType 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetPopReplaceType \- returns the symbolic constant used to determine
+which strings to copy from the old population to the new population.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetPopReplaceType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int popreplace;
+:
+popreplace = PGAGetPopReplaceType(ctx);
+switch (popreplace) {
+case PGA_POPREPL_BEST:
+printf("Replacement Strategy = PGA_POPREPL_BEST\n");
+break;
+case PGA_POPREPL_RANDOM_REP:
+printf("Replacement Strategy = PGA_POPREPL_RANDOM_REP\n");
+break;
+case PGA_POPREPL_RANDOM_NOREP:
+printf("Replacement Strategy = PGA_POPREPL_RANDOM_NOREP\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetPopSize.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetPopSize.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetPopSize.8	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetPopSize 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetPopSize \- Returns the population size
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetPopSize(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int popsize;
+:
+popsize = PGAGetPopSize(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetSortedPopIndex.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetSortedPopIndex.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetSortedPopIndex.8	(revision 6168)
@@ -0,0 +1,47 @@
+.TH PGAGetSortedPopIndex 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetSortedPopIndex \- returns a population string index from the array
+created by PGASortPop().
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+n
+- specified which index element is to be returned.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetSortedPopIndex(ctx, n)
+PGAContext *ctx
+int n
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+Copy the five best strings from the old population into the new
+population.  The rest of the new population will be created by
+recombination, and is not shown.
+
+PGAContext *ctx;
+int i,j;
+:
+PGASetPopReplaceType(ctx,PGA_POPREPL_BEST)
+PGASortPop(ctx, PGA_OLDPOP);
+for ( i=0; i < 5; i++) {
+j = PGAGetSortedPopIndex(ctx, i);
+PGACopyIndividual (ctx, j, PGA_OLDPOP, i, PGA_NEWPOP);
+:
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetStoppingRuleType.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetStoppingRuleType.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetStoppingRuleType.8	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGAGetStoppingRuleType 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetStoppingRuleType \- Returns a symbolic constant that defines the
+termination criteria.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetStoppingRuleType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int stop;
+:
+stop = PGAGetStoppingRuleType(ctx);
+if (stop & PGA_STOP_MAXITER)
+printf("Stopping Rule = PGA_STOP_MAXITER\n");
+if (stop & PGA_STOP_NOCHANGE)
+printf("Stopping Rule = PGA_STOP_NOCHANGE\n");
+if (stop & PGA_STOP_TOOSIMILAR)
+printf("Stopping Rule = PGA_STOP_TOOSIMILAR\n");
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetStringLength.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetStringLength.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAGetStringLength.8	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetStringLength 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetStringLength \- Returns the string length
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetStringLength(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int stringlen;
+:
+stringlen = PGAGetStringLength(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARun.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARun.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARun.8	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGARun 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARun \- Highest level routine to execute the genetic algorithm.  It
+is called after PGACreate and PGASetup have been called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+evaluate
+- a pointer to the user's evaluation function, which must
+have the calling sequence shown in the example.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGARun(ctx, ctx)
+PGAContext *ctx
+double (*evaluate)(PGAContext *c, int p, int pop)
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx,
+double f(PGAContext *ctx, int p, int pop);
+:
+ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+PGASetUp(ctx);
+PGARun(ctx, f);
+PGADestroy(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARunGM.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARunGM.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARunGM.8	(revision 6168)
@@ -0,0 +1,46 @@
+.TH PGARunGM 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARunGM \- High-level routine to execute the genetic algorithm using the
+global model.  It is called after PGACreate and PGASetup have been called.
+If a NULL communicator is given, a sequential execution method is used,
+otherwise, work is divided among the processors in the communicator.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+evaluate
+- a pointer to the user's evaluation function, which must
+have the calling sequence shown in the example.
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGARunGM(ctx, ctx, comm)
+PGAContext *ctx
+double (*f)(PGAContext *, int, int)
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double f(PGAContext *ctx, int p, int pop);
+:
+PGARunGM(ctx, f, MPI_COMM_WORLD);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARunMutationAndCrossover.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARunMutationAndCrossover.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARunMutationAndCrossover.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGARunMutationAndCrossover 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARunMutationAndCrossover \- Performs crossover and mutation from one
+population to create the next.  Assumes PGASelect has been called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+oldpop
+- symbolic constant of old population
+.PD 0
+.TP
+newpop
+- symbolic constant of new population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGARunMutationAndCrossover(ctx, oldpop, newpop)
+PGAContext *ctx
+int oldpop
+int newpop
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx,
+:
+PGARunMutationAndCrossover(ctx, PGA_OLDPOP, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARunMutationOrCrossover.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARunMutationOrCrossover.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGARunMutationOrCrossover.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGARunMutationOrCrossover 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARunMutationOrCrossover \- Performs crossover or mutation (but not both)
+from one populationto create the next.  Assumes PGASelect has been called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+oldpop
+- symbolic constant of old population
+.PD 0
+.TP
+newpop
+- symbolic constant of new population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGARunMutationOrCrossover(ctx, oldpop, newpop)
+PGAContext *ctx
+int oldpop
+int newpop
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx,
+:
+PGARunMutationOrCrossover(ctx, PGA_OLDPOP, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMaxGAIterValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMaxGAIterValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMaxGAIterValue.8	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetMaxGAIterValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMaxGAIterValue \- specify the maximum number of iterations for the
+stopping rule PGA_STOP_MAXITER (which, by itself, is the default stopping
+rule and is always in effect).  The default value is 1000 iterations.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+maxiter
+- the maximum number of GA iterations to run before stopping
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMaxGAIterValue(ctx, maxiter)
+PGAContext *ctx
+int maxiter
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMaxGAIterValue(ctx,5000);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMaxNoChangeValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMaxNoChangeValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMaxNoChangeValue.8	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetMaxNoChangeValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMaxNoChangeValue \- specifiy maximum number of iterations of no change
+in the evaluation function value of the best string before stopping.  The
+default value is 50.  The stopping rule PGA_STOP_NOCHANGE must have been
+set by PGASetStoppingRuleType for this function call to have any effect.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+maxiter
+- the maximum number of GA iterations allowed with no change
+in the best evaluation function value.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMaxNoChangeValue(ctx, max_no_change)
+PGAContext *ctx
+int max_no_change
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMaxGAIterValue(ctx,5000);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMaxSimilarityValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMaxSimilarityValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMaxSimilarityValue.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGASetMaxSimilarityValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMaxSimilarityValue \- Specifiy the maximum percent of homogeneity of
+the population before stopping.  The similarity measure is the same
+evaluation function value.  The default value is 95 percent.  The stopping
+rule PGA_STOP_TOOSIMILAR must have been set by PGASetStoppingRuleType for
+this function call to have any effect.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+max_similarity
+- the maximum percent of the population that can share
+the same evaluation function value
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMaxSimilarityValue(ctx, max_similarity)
+PGAContext *ctx
+int max_similarity
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMaxSimilarityValue(ctx,99);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMutationAndCrossoverFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMutationAndCrossoverFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMutationAndCrossoverFlag.8	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetMutationAndCrossoverFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationAndCrossoverFlag \- A boolean flag to indicate if
+recombination uses both crossover and mutation on selected strings
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+flag
+- PGA_TRUE (default) or PGA_FALSE
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationAndCrossoverFlag(ctx, flag)
+PGAContext *ctx
+int flag
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+Set the genetic algorithm to use both crossover and mutation when
+reproducing strings.
+
+PGAContext *ctx;
+:
+PGASetMutationAndCrossoverFlag(ctx,PGA_FALSE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMutationOrCrossoverFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMutationOrCrossoverFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetMutationOrCrossoverFlag.8	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetMutationOrCrossoverFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationOrCrossoverFlag \- A boolean flag to indicate if recombination
+uses exactly one of crossover or mutation on selected strings.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+flag
+- PGA_TRUE (default) or PGA_FALSE
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationOrCrossoverFlag(ctx, flag)
+PGAContext *ctx
+int flag
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+Set the genetic algorithm to use mutation only when crossover is
+not used.
+
+PGAContext *ctx;
+:
+PGASetMutationOrCrossoverFlag(ctx,PGA_FALSE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetNoDuplicatesFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetNoDuplicatesFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetNoDuplicatesFlag.8	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetNoDuplicatesFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetNoDuplicatesFlag \- A boolean flag to indicate if duplicate strings are
+allowed in the population. Valid choices are PGA_TRUE and PGA_FALSE.  The
+default is PGA_FALSE -- allow duplicates.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+flag
+- PGA_TRUE or PGA_FALSE
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetNoDuplicatesFlag(ctx, no_dup)
+PGAContext *ctx
+int no_dup
+.fi
+.SH LOCATION
+duplcate.c
+.SH EXAMPLE
+.nf
+Example:
+Set the NoDuplicates flag to require that all strings are unique.
+
+PGAContext *ctx;
+:
+PGASetNoDuplicatesFlag(ctx,PGA_TRUE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetNumReplaceValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetNumReplaceValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetNumReplaceValue.8	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetNumReplaceValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetNumReplaceValue \- specifies the number of new strings to create each
+generation.  The default is ten percent of the population size
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop_replace
+- the genetic algorithm population size to use
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetNumReplaceValue(ctx, pop_replace)
+PGAContext *ctx
+int pop_replace
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetNumReplaceValue(ctx, 35);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetPopReplaceType.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetPopReplaceType.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetPopReplaceType.8	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGASetPopReplaceType 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetPopReplaceType \- Choose method of sorting strings to copy from old
+population to new population.  Valid choices are PGA_POPREPL_BEST,
+PGA_POPREPL_RANDOM_NOREP, or PGA_POPREPL_RANDOM_REP for copying the best
+strings, or  random string, with or without replacement, respectively,
+from the old population into the new population. The default is
+PGA_POPREPL_BEST.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop_replace
+- symbolic constant to specify the population replacement
+strategy
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetPopReplaceType(ctx, pop_replace)
+PGAContext *ctx
+int pop_replace
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetPopReplaceType(ctx, PGA_POPREPL_RANDOM_NOREP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetPopSize.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetPopSize.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetPopSize.8	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetPopSize 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetPopSize \- Specifies the size of the genetic algorithm population.
+The default population size is 100.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+popsize
+- the genetic algorithm population size to use
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetPopSize(ctx, popsize)
+PGAContext *ctx
+int popsize
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetPopSize(ctx, 200);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetStoppingRuleType.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetStoppingRuleType.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetStoppingRuleType.8	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGASetStoppingRuleType 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetStoppingRuleType \- specify a stopping criterion.  If called more than
+once the different stopping criterion are ORed together.  Valid choices
+are PGA_STOP_MAXITER, PGA_STOP_TOOSIMILAR, or PGA_STOP_NOCHANGE to
+specify iteration limit reached, population too similar, or no change in
+the best solution found in a given number of iterations, respectively.
+The default is to stop when a maximum iteration limit is reached (by
+default, 1000 iterations).
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+stoprule
+- symbolic constant to specify stopping rule
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetStoppingRuleType(ctx, stoprule)
+PGAContext *ctx
+int stoprule
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetStoppingRuleType(ctx, PGA_STOP_TOOSIMILAR);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetUp.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetUp.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetUp.8	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetUp 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetUp \- set all uninitialized variables to default values and initialize
+some internal arrays.  Must be called after PGACreate() and before the GA
+is started.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetUp(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+create.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGACreate(ctx, ...);
+:
+//  Set options here
+:
+PGASetUp(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetUserFunction.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetUserFunction.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASetUserFunction.8	(revision 6168)
@@ -0,0 +1,61 @@
+.TH PGASetUserFunction 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetUserFunction \- specifies the name of a user-written function
+call to provide a specific GA capability (e.g., crossover,
+mutation, etc.).  This function MUST be used when using a non-native
+datatype and must be called once for each of:
+PGA_USERFUNCTION_CREATESTRING     -- String creation
+PGA_USERFUNCTION_MUTATION         -- Mutation
+PGA_USERFUNCTION_CROSSOVER        -- Crossover
+PGA_USERFUNCTION_PRINTSTRING      -- String Output
+PGA_USERFUNCTION_COPYSTRING       -- Duplication
+PGA_USERFUNCTION_DUPLICATE        -- Duplicate Checking
+PGA_USERFUNCTION_INITSTRING       -- Initialization
+PGA_USERFUNCTION_BUILDDATATYPE    -- MPI Datatype creation
+PGA_USERFUNCTION_STOPCOND         -- Stopping conditions
+PGA_USERFUNCTION_ENDOFGEN         -- Auxiliary functions at the end
+of each generation
+It MAY be called when using a native datatype to replace the built-in
+functions PGAPack has for that datatype (For example, if the Integer data
+type is used for a traveling salesperson problem, the user may want to
+provide their own custom crossover operator).  See the user guide and the
+examples in the examples directory for more details.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+constant
+- symbolic constant of the user function to set
+.PD 0
+.TP
+f
+- name of the function to use
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetUserFunction(ctx, constant, f)
+PGAContext *ctx
+int constant
+void *f
+.fi
+.SH LOCATION
+user.c
+.SH EXAMPLE
+.nf
+Example:
+void MyStringInit(PGAContext *, void *);
+PGAContext *ctx;
+:
+PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING, MyStringInit);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASortPop.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASortPop.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGASortPop.8	(revision 6168)
@@ -0,0 +1,57 @@
+.TH PGASortPop 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASortPop \- Creates an (internal) array of indices according to one of
+three criteria.  If PGA_POPREPL_BEST is used (the default) the array is
+sorted from most fit to least fit.  If PGA_POPREPL_RANDOM_REP is
+used the indices in the array are selected randomly with replacement.
+If PGA_POPREPL_RANDOM_NOREP is used the indices in the array are selected
+randomly without replacement.  The function PGASetPopReplaceType() is used
+to specify which strategy is used.  The indices of the sorted population
+members may then be accessed from the internal array via
+PGAGetSortedPopIndex().  This routine is typically used during population
+replacement.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+popindex
+- symbolic constant of the population from which to create
+the srted array.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASortPop(ctx, pop)
+PGAContext *ctx
+int pop
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+Copy the five best strings from the old population into the new
+population.  The rest of the new population will be created by
+recombination, and is not shown.
+
+PGAContext *ctx;
+int i,j;
+:
+PGASetPopReplaceType(ctx,PGA_POPREPL_BEST)
+:
+PGASortPop(ctx, PGA_OLDPOP);
+for ( i=0; i < 5; i++) {
+j = PGAGetSortedPopIndex(ctx, i);
+PGACopyIndividual (ctx, j, PGA_OLDPOP, i, PGA_NEWPOP);
+:
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAUpdateGeneration.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAUpdateGeneration.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/man8/PGAUpdateGeneration.8	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGAUpdateGeneration 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAUpdateGeneration \- updates internal data structures for the next
+genetic algorithm iteration, and checks if the termination conditions, both
+user and PGAPack, have been met.  This routine must be called by both
+master and slave processes at the end of each GA generation.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAUpdateGeneration(ctx, comm)
+PGAContext *ctx
+MPI_Comm comm
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGAUpdateGeneration(ctx, MPI_COMM_WORLD);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/mandesc
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/mandesc	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/mandesc	(revision 6168)
@@ -0,0 +1,11 @@
+no default sections
+1(1)Fitness & Evaluation
+2(2)Initialization
+3(3)Operators
+4(4)Parallel
+5(5)Utility
+6(6)System
+7(7)Reporting
+8(8)Generation
+l(l)Debugging
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGAClearDebugLevel.l
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGAClearDebugLevel.l	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGAClearDebugLevel.l	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGAClearDebugLevel l "05/01/95" " " "PGAPack"
+.SH NAME
+PGAClearDebugLevel \- Turn off a debul level.  Only valid if PGAPack
+was compiled to include debugging calls.  See the user guide for details.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+level
+- the debug level to set to PGA_FALSE.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAClearDebugLevel(ctx, level)
+PGAContext *ctx
+int level
+.fi
+.SH LOCATION
+debug.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGAClearDebugLevel(ctx, 70)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGAClearDebugLevelByName.l
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGAClearDebugLevelByName.l	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGAClearDebugLevelByName.l	(revision 6168)
@@ -0,0 +1,35 @@
+.TH PGAClearDebugLevelByName l "05/01/95" " " "PGAPack"
+.SH NAME
+PGAClearDebugLevelByName \- Turn off debugging of the named function.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+funcname
+- name of the function to turn on debugging output
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAClearDebugLevelByName(ctx, funcname)
+PGAContext *ctx
+char *funcname
+.fi
+.SH LOCATION
+debug.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+:
+PGAClearDebugLevelByName(ctx, "PGAGetBinaryAllele");
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGADebugPrint.l
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGADebugPrint.l	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGADebugPrint.l	(revision 6168)
@@ -0,0 +1,68 @@
+.TH PGADebugPrint l "05/01/95" " " "PGAPack"
+.SH NAME
+PGADebugPrint \- Write debugging information
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+level
+- a symbolic constant that maps to the type of print requested
+(e.g., an entry or exit print).  Valid values are
+PGA_DEBUG_ENTERED, PGA_DEBUG_EXIT, PGA_DEBUG_MALLOC,
+PGA_DEBUG_PRINTVAR, PGA_DEBUG_SEND, and PGA_DEBUG_RECV.
+.PD 0
+.TP
+funcname
+- the name of the function that called this routine
+.PD 0
+.TP
+msg
+- message to print
+.PD 0
+.TP
+datatype
+- a symbolic constant that maps to the data type of the
+parameter data.  Valid choices are PGA_INT, PGA_DOUBLE,
+PGA_CHAR and PGA_VOID (no data).
+.PD 0
+.TP
+data
+- a pointer, whose contents will be interpreted based upon the
+datatype parameter (or NULL, if PGA_VOID).
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGADebugPrint(ctx, level, funcname, msg, datatype, data)
+PGAContext *ctx
+int level
+char *funcname
+char *msg
+int datatype
+void *data
+.fi
+.SH LOCATION
+debug.c
+.SH EXAMPLE
+.nf
+Example:
+If the debugging level includes printing variables (level 82), print the
+value of the integer variable num as a debugging tool in the routine
+Add2Nums
+
+PGAContext *ctx;
+int num;
+:
+PGADebugPrint(ctx, PGA_DEBUG_PRINTVAR, "Add2Nums", "num = ", PGA_INT,
+(void *) &num);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGASetDebugLevel.l
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGASetDebugLevel.l	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGASetDebugLevel.l	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetDebugLevel l "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetDebugLevel \- Turn on a debug level.  Only valid if PGAPack
+was compiled to include debugging calls.  See the user guide for details.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+level
+- the debug level to set to PGA_TRUE.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetDebugLevel(ctx, level)
+PGAContext *ctx
+int level
+.fi
+.SH LOCATION
+debug.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetDebugLevel(ctx, 70)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGASetDebugLevelByName.l
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGASetDebugLevelByName.l	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/man/manl/PGASetDebugLevelByName.l	(revision 6168)
@@ -0,0 +1,35 @@
+.TH PGASetDebugLevelByName l "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetDebugLevelByName \- Turn on debugging of the named function.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+funcname
+- name of the function to turn on debugging output
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetDebugLevelByName(ctx, funcname)
+PGAContext *ctx
+char *funcname
+.fi
+.SH LOCATION
+debug.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+:
+PGASetDebugLevelByName(ctx, "PGAGetBinaryAllele");
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/Makefile.in	(revision 6168)
@@ -0,0 +1,104 @@
+CC          = @CC@
+PRECFLAGS   = @CFLAGS@
+CPPFLAGS    = @CPPFLAGS@
+HEADERS     = @HEADERS@
+PGA_LIB_DIR = @PGA_LIB_DIR@
+PGA_LIB     = @PGA_LIB@
+RM          = @RM@
+OBJS        = @OBJS@
+SHELL       = @SHELL@
+RANLIB      = @RANLIB@
+
+CFLAGS      = -o $@ -c $(PRECFLAGS)
+COMPILE.c   = $(CC) $(CFLAGS) $(CPPFLAGS)
+
+########################################################
+#                    The Target                        #
+########################################################
+
+$(PGA_LIB_DIR)/lib$(PGA_LIB).a: $(OBJS)
+	ar ruv $(PGA_LIB_DIR)/lib$(PGA_LIB).a $(OBJS)
+	$(RANLIB) $(PGA_LIB_DIR)/lib$(PGA_LIB).a
+
+########################################################
+#                    The Source code                   #
+########################################################
+
+$(PGA_LIB_DIR)/binary.o: binary.c $(HEADERS)
+	$(COMPILE.c) binary.c
+
+$(PGA_LIB_DIR)/char.o: char.c $(HEADERS)
+	$(COMPILE.c) char.c
+
+$(PGA_LIB_DIR)/cmdline.o: cmdline.c $(HEADERS)
+	$(COMPILE.c) cmdline.c
+
+$(PGA_LIB_DIR)/create.o: create.c $(HEADERS)
+	$(COMPILE.c) create.c
+
+$(PGA_LIB_DIR)/cross.o: cross.c $(HEADERS)
+	$(COMPILE.c) cross.c
+
+$(PGA_LIB_DIR)/debug.o: debug.c $(HEADERS)
+	$(COMPILE.c) debug.c
+
+$(PGA_LIB_DIR)/duplcate.o: duplcate.c $(HEADERS)
+	$(COMPILE.c) duplcate.c
+
+$(PGA_LIB_DIR)/evaluate.o: evaluate.c $(HEADERS)
+	$(COMPILE.c) evaluate.c
+
+$(PGA_LIB_DIR)/fitness.o: fitness.c $(HEADERS)
+	$(COMPILE.c) fitness.c
+
+@FORTWRAP@
+
+$(PGA_LIB_DIR)/hamming.o: hamming.c $(HEADERS)
+	$(COMPILE.c) hamming.c
+
+$(PGA_LIB_DIR)/heap.o: heap.c $(HEADERS)
+	$(COMPILE.c) heap.c
+
+$(PGA_LIB_DIR)/integer.o: integer.c $(HEADERS)
+	$(COMPILE.c) integer.c
+
+@MPICOMP@
+
+$(PGA_LIB_DIR)/mutation.o: mutation.c $(HEADERS)
+	$(COMPILE.c) mutation.c
+
+$(PGA_LIB_DIR)/parallel.o: parallel.c $(HEADERS)
+	$(COMPILE.c) parallel.c
+
+$(PGA_LIB_DIR)/pga.o: pga.c $(HEADERS)
+	$(COMPILE.c) pga.c
+
+$(PGA_LIB_DIR)/pop.o: pop.c $(HEADERS)
+	$(COMPILE.c) pop.c
+
+$(PGA_LIB_DIR)/random.o: random.c $(HEADERS)
+	$(COMPILE.c) random.c
+
+$(PGA_LIB_DIR)/real.o: real.c $(HEADERS)
+	$(COMPILE.c) real.c
+
+$(PGA_LIB_DIR)/report.o: report.c $(HEADERS)
+	$(COMPILE.c) report.c
+
+$(PGA_LIB_DIR)/restart.o: restart.c $(HEADERS)
+	$(COMPILE.c) restart.c
+
+$(PGA_LIB_DIR)/select.o: select.c $(HEADERS)
+	$(COMPILE.c) select.c
+
+$(PGA_LIB_DIR)/stop.o: stop.c $(HEADERS)
+	$(COMPILE.c) stop.c
+
+$(PGA_LIB_DIR)/system.o: system.c $(HEADERS)
+	$(COMPILE.c) system.c
+
+$(PGA_LIB_DIR)/user.o: user.c $(HEADERS)
+	$(COMPILE.c) user.c
+
+$(PGA_LIB_DIR)/utility.o: utility.c $(HEADERS)
+	$(COMPILE.c) utility.c
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/binary.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/binary.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/binary.c	(revision 6168)
@@ -0,0 +1,901 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     File: binary.c: This file contains routines specific to the binary
+*                     datatype.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGASetBinaryAllele - sets a binary allele to the specified value.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+      val - binary value (either 1 or 0) to set the allele to
+
+   Outputs:
+      The allele is changed by side-effect.
+
+   Example:
+      Copies the alleles from member p in PGA_OLDPOP to member q PGA_NEWPOP.
+      Assumes strings are of the same length.
+
+      PGAContext *ctx;
+      int p, q, i;
+      :
+      for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+          PGASetBinaryAllele(ctx, q, PGA_NEWPOP, i,
+                             PGAGetBinaryAllele(ctx, p, PGA_OLDPOP, i))
+
+****************************************************************************U*/
+void PGASetBinaryAllele ( PGAContext *ctx, int p, int pop, int i, int val )
+{
+    int windex;        /* index of the computer word allele i is in      */
+    int bix;           /* bit position in word chrom[windex] of allele i */
+    PGAIndividual *ind;
+    PGABinary *chrom;
+
+    PGADebugEntered("PGASetBinaryAllele");
+    PGACheckDataType("PGAGetBinaryAllele", PGA_DATATYPE_BINARY);
+
+    INDEX( windex,bix,i,WL );
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGABinary *)ind->chrom;
+    if ( val == 0 )
+        UNSET( bix, chrom[windex] );
+    else
+        SET( bix, chrom[windex] );
+
+    PGADebugExited("PGASetBinaryAllele");
+}
+
+/*U****************************************************************************
+   PGAGetBinaryAllele - returns the value of a (binary) allele in a
+   PGA_DATATYPE_BINARY string
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+
+   Outputs:
+      The value of the ith allele of string p in population pop.
+
+   Example:
+      Copies the alleles from member p in PGA_OLDPOP to member q PGA_NEWPOP.
+      Assumes the strings are of the same length.
+
+      PGAContext *ctx;
+      int p, q, i;
+      :
+      for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+          PGASetBinaryAllele(ctx, q, PGA_NEWPOP, i,
+                             PGAGetBinaryAllele(ctx, p, PGA_OLDPOP, i))
+
+****************************************************************************U*/
+int PGAGetBinaryAllele ( PGAContext *ctx, int p, int pop, int i )
+{
+
+    int windex;        /* index of the computer word allele i is in      */
+    int bix;           /* bit position in word chrom[windex] of allele i */
+    PGAIndividual *ind;
+    PGABinary *chrom;
+
+    PGADebugEntered("PGAGetBinaryAllele");
+    PGACheckDataType("PGAGetBinaryAllele", PGA_DATATYPE_BINARY);
+
+    INDEX( windex,bix,i,WL );
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGABinary *)ind->chrom;
+
+    PGADebugExited("PGAGetBinaryAllele");
+    return( BIT(bix, chrom[windex]) != 0 );
+}
+
+/*U****************************************************************************
+   PGASetBinaryInitProb - specify the probability of initializing an allele to
+   "1" when creating a PGA_DATATYPE_BINARY string.  The default value is 0.5.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+      p   - the binary initialization probability
+
+   Outputs:
+      None
+
+   Example:
+      Set approximately 1 percent of all binary alleles to "1" when randomly
+      initializing the population.
+
+      PGAContext *ctx;
+      :
+      PGASetBinaryInitProb(ctx, 0.01);
+
+****************************************************************************U*/
+void PGASetBinaryInitProb ( PGAContext *ctx, double probability )
+{
+    PGADebugEntered("PGASetBinaryInitProb");
+    PGAFailIfSetUp("PGASetBinaryInitProb");
+    PGACheckDataType("PGASetBinaryInitProb", PGA_DATATYPE_BINARY);
+
+     if ( (probability <= 1.0) && (probability >= 0.0) )
+          ctx->init.BinaryProbability = probability;
+     else
+          PGAError( ctx, "PGASetBinaryInitProb: Invalid value of probability:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &probability );
+
+    PGADebugExited("PGASetBinaryInitProb");
+}
+
+/*U***************************************************************************
+   PGAGetBinaryInitProb - Returns the probability that an allele will be
+   randomly initialized to "1" in a PGA_DATATYPE_BINARY string.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The probability that a bit will be randomly initialized to one
+
+   Example:
+      PGAContext *ctx;
+      double prob;
+      :
+      prob = PGAGetBinaryInitProb(ctx);
+
+***************************************************************************U*/
+double PGAGetBinaryInitProb (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetBinaryInitProb");
+    PGAFailIfNotSetUp("PGAGetBinaryInitProb");
+    PGACheckDataType("PGAGetBinaryInitProb", PGA_DATATYPE_BINARY);
+
+    PGADebugExited("PGAGetBinaryInitProb");
+    return(ctx->init.BinaryProbability);
+}
+
+
+/*I****************************************************************************
+   PGABinaryCreateString - Allocate a PGA_DATATYPE_BINARY string for member
+   p of population pop.  If initflag is PGA_TRUE, randomly initialize all
+   alleles, otherwise clear all alleles.
+
+   Inputs:
+      ctx      - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      initflag - a flag, if set, randomly initialize, else clear alleles
+
+   Outputs:
+      Member p in population pop is allocated and initialized.
+
+   Example:
+      Allocates and clears alleles for all strings in PGA_NEWPOP
+
+      PGAContext *ctx;
+      int p;
+      :
+      for (p=PGAGetPopSize(ctx)-1; p>=0; p--)
+          PGABinaryCreateString( ctx, p, PGA_NEWPOP, PGA_FALSE );
+
+****************************************************************************I*/
+void PGABinaryCreateString(PGAContext *ctx, int p, int pop, int initflag)
+{
+    int i, fp;
+    PGABinary *s;
+    PGAIndividual *new = PGAGetIndividual(ctx, p, pop);
+    
+    PGADebugEntered("PGABinaryCreateString");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGABinaryCreateString",
+		  "initflag = ", PGA_INT, (void *) &initflag );
+    
+    new->chrom = (void *)malloc(ctx->ga.tw * sizeof(PGABinary));
+    if (new->chrom == NULL)
+	PGAError(ctx, "PGABinaryCreateString: No room to allocate "
+		 "new->chrom", PGA_FATAL, PGA_VOID, NULL);
+    
+    s = (PGABinary *)new->chrom;
+    if (initflag)
+	if (ctx->fops.InitString) {
+	    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+            (*ctx->fops.InitString)(&ctx, &fp, &pop);
+	} else {
+	    (*ctx->cops.InitString)(ctx, p, pop);
+	}
+    else
+	for ( i=0; i<ctx->ga.tw; i++ )
+	    s[i] = 0;
+    
+    PGADebugExited("PGABinaryCreateString");
+}
+
+/*I****************************************************************************
+   PGABinaryMutation - randomly mutates a bit with a specified probability.
+   This routine is called from PGAMutation.
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant for the population string p is in
+      mr  - probability of mutating (toggling) a bit
+
+   Outputs:
+      Returns the number of mutations
+
+   Example:
+      Mutates string p in population PGA_NEWPOP with a probability of 0.001
+      for each bit.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGABinaryMutation( ctx, p, PGA_NEWPOP, .001 );
+
+****************************************************************************I*/
+int PGABinaryMutation( PGAContext *ctx, int p, int pop, double mr )
+{
+     int i,wi;
+     int count = 0;
+     PGABinary *c;
+
+     PGADebugEntered("PGABinaryMutation");
+
+     c = (PGABinary *)PGAGetIndividual(ctx, p, pop)->chrom;
+     for(wi=0; wi<ctx->ga.fw; wi++)
+          for(i=0; i<WL; ++i)
+               if ( PGARandomFlip(ctx, mr) )
+               {
+                    TOGGLE(i,c[wi]);
+                    count++;
+               }
+
+     /* clean up the partial word if eb > 0 */
+     if (ctx->ga.eb > 0 )
+          for(i=0;i<ctx->ga.eb;++i)
+               if ( PGARandomFlip(ctx, mr) )
+               {
+                    TOGGLE(i,c[ctx->ga.fw]);
+                    count++;
+               }
+
+    PGADebugExited("PGABinaryMutation");
+    return(count);
+
+}
+
+/*I****************************************************************************
+   PGABinaryOneptCrossover - performs one-point crossover on two parent strings
+   to create two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population containing c1 and c2
+
+   Outputs:
+      None.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGABinaryOneptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2)
+{
+    PGABinary *parent1 = (PGABinary *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    PGABinary *parent2 = (PGABinary *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+    PGABinary *child1  = (PGABinary *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+    PGABinary *child2  = (PGABinary *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+
+    /*
+      If the bits are numbered from 0 as follows:
+
+      b   b   b   b   b   b   b   b          b  b
+      0   1   2   3   4   5   6   7         30 31
+
+      Then if the cross site is bit 5 (which is the sixth bit by our
+      numbering scheme) we would get
+
+      o   o   o   o   o   n   n   n          n  n
+      0   1   2   3   4   5   6   7         30 31
+
+      where o indicates the original bit and n is a new bit from the crossover
+      operator.
+    */
+
+    PGABinary mask;
+    int windex;   /* index of the word the crossover bit position is in */
+    int bix;      /* bit position to perform crossover (mod WL)         */
+    int i;
+    int xsite;
+
+    PGADebugEntered("PGABinaryOneptCrossover");
+
+    xsite = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+
+    INDEX(windex,bix,xsite,WL);
+
+    for(i=0;i<windex;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    mask = ~0;
+    mask = mask >> bix;
+
+    child1[windex] = (~mask & parent1[windex])|(mask & parent2[windex]);
+    child2[windex] = (~mask & parent2[windex])|(mask & parent1[windex]);
+
+    for(i=windex+1;i<ctx->ga.tw;i++) {
+        child1[i] = parent2[i];
+        child2[i] = parent1[i];
+    }
+
+    PGADebugExited("PGABinaryOneptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGABinaryTwoptCrossover - performs two-point crossover on two parent strings
+   producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      None.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGABinaryTwoptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryTwoptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2)
+{
+    PGABinary *parent1 = (PGABinary *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    PGABinary *parent2 = (PGABinary *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+    PGABinary *child1  = (PGABinary *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+    PGABinary *child2  = (PGABinary *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+
+    PGABinary mask, mask1, mask2;
+    int windex1, windex2;
+    int bix1, bix2;
+    int i;
+    int xsite1, xsite2;
+    int temp;
+
+    PGADebugEntered("PGABinaryTwoptCrossover");
+
+    /* pick two cross sites such that xsite2 > xsite1 */
+    xsite1 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    xsite2 = xsite1;
+    while ( xsite2 == xsite1 )
+        xsite2 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    if ( xsite1 > xsite2 ) {
+        temp   = xsite1;
+        xsite1 = xsite2;
+        xsite2 = temp;
+    }
+
+    INDEX(windex1,bix1,xsite1,WL);
+    INDEX(windex2,bix2,xsite2,WL);
+
+    if ( windex1 == windex2 ) {     /* both cross sites in the same word */
+
+        for(i=0;i<windex1;i++) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+
+        mask1 = ~0;
+        if (bix1 == 0)
+             mask1 = 0;
+        else
+             mask1 = mask1 << (WL-bix1);
+        mask2 = ~0;
+        mask2 = mask2 >> bix2;
+        mask  = mask1 | mask2;
+
+        child1[windex1] = (mask & parent1[windex1])|(~mask & parent2[windex1]);
+        child2[windex1] = (mask & parent2[windex1])|(~mask & parent1[windex1]);
+
+        for(i=windex1+1;i<ctx->ga.tw;i++) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+    }
+    else {                          /* cross sites in different words */
+
+        for(i=0;i<windex1;i++) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+
+        mask = ~0;
+        mask = mask >> bix1;
+
+        child1[windex1] = (~mask & parent1[windex1])|(mask & parent2[windex1]);
+        child2[windex1] = (~mask & parent2[windex1])|(mask & parent1[windex1]);
+
+        for(i=windex1+1; i<windex2; i++) {
+            child1[i] = parent2[i];
+            child2[i] = parent1[i];
+        }
+
+        mask = ~0;
+        mask = mask >> bix2;
+
+        child1[windex2] = (mask & parent1[windex2])|(~mask & parent2[windex2]);
+        child2[windex2] = (mask & parent2[windex2])|(~mask & parent1[windex2]);
+
+        for(i=windex2+1; i<ctx->ga.tw; i++) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+    }
+
+    PGADebugExited("PGABinaryTwoptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGABinaryUniformCrossover - performs uniform crossover on two parent strings
+   producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      None.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGABinaryUniformCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                               int c1, int c2, int pop2)
+{
+     PGABinary *parent1 = (PGABinary *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     PGABinary *parent2 = (PGABinary *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+     PGABinary *child1  = (PGABinary *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+     PGABinary *child2  = (PGABinary *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+     PGABinary mask;
+     int j,wi;
+
+    PGADebugEntered("PGABinaryUniformCrossover");
+
+    for(wi=0;wi<ctx->ga.tw;wi++) {
+        if ( parent1[wi] == parent2[wi] ) {
+            child1[wi] = parent1[wi];
+            child2[wi] = parent2[wi];
+        }
+        else {
+            mask = 0;
+            for (j=0;j<WL;j++)
+                if(PGARandomFlip(ctx, ctx->ga.UniformCrossProb))
+                    SET(j,mask);
+            child1[wi] = (mask & parent1[wi])|(~mask & parent2[wi]);
+            child2[wi] = (mask & parent2[wi])|(~mask & parent1[wi]);
+        }
+    }
+
+    PGADebugExited("PGABinaryUniformCrossover");
+}
+
+/*I****************************************************************************
+   PGABinaryPrintString - writes a bit string to a file.
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to file to write bit string to
+      p   - index of the string to write out
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+      None.
+
+   Example:
+      Write string s to stdout.
+
+      PGAContext *ctx;
+      int s;
+      :
+      PGABinaryPrintString( ctx, stdout, s, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryPrintString( PGAContext *ctx, FILE *fp, int p, int pop )
+{
+     PGABinary *c = (PGABinary *)PGAGetIndividual(ctx, p, pop)->chrom;
+     int i;
+
+     PGADebugEntered("PGABinaryPrintString");
+
+     for( i=0; i<ctx->ga.fw; i++ ) {
+          fprintf(fp,"[ ");
+          PGABinaryPrint( ctx, fp, (c+i), WL );
+          fprintf(fp," ]\n");
+     }
+     if ( ctx->ga.eb > 0 ) {
+          fprintf(fp,"[ ");
+          PGABinaryPrint( ctx, fp, (c+ctx->ga.fw), ctx->ga.eb );
+          fprintf(fp," ]");
+     }
+
+     PGADebugExited("PGABinaryPrintString");
+}
+
+/*I****************************************************************************
+   PGABinaryCopyString - Copy one bit string to another
+
+   Inputs:
+      ctx  - context variable
+      p1   - string to copy
+      pop1 - symbolic constant of population containing string p1
+      p2   - string to copy p1 to
+      pop2 - symbolic constant of population containing string p2
+
+   Outputs:
+      None.
+
+   Example:
+      Copy bit string x to y (both are implicitly assumed to have the same
+      length).
+
+      PGAContext *ctx;
+      int x, y
+      :
+      PGABinaryCopyString ( ctx, x, PGA_OLDPOP, y, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+    PGABinary *source = (PGABinary *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    PGABinary *dest   = (PGABinary *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+    int i;
+
+    PGADebugEntered("PGABinaryCopyString");
+
+    for (i = ctx->ga.tw-1; i>=0; i--)
+        dest[i] = source[i];
+
+    PGADebugExited("PGABinaryCopyString");
+}
+
+/*I****************************************************************************
+   PGABinaryDuplicate - Returns true if bit string a is a duplicate of bit
+   string b, else returns false.
+
+   Inputs:
+      ctx  - context variable
+      p1   - string index of the first string to compare
+      pop1 - symbolic constant of the population string p1 is in
+      p2   - string index of the second string to compare
+      pop2 - symbolic constant of the population string p2 is in
+
+   Outputs:
+      Returns true/false if strings are duplicates
+
+   Example:
+      Compare bit string x with y and print a message if they are the same.
+
+      PGAContext *ctx;
+      int x, y;
+      :
+      if ( PGABinaryDuplicate( ctx, x, PGA_NEWPOP, y, PGA_NEWPOP ) )
+          printf("strings are duplicates\n");
+
+****************************************************************************I*/
+int PGABinaryDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+     PGABinary *a = (PGABinary *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     PGABinary *b = (PGABinary *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+     int wi;
+
+     PGADebugEntered("PGABinaryDuplicate");
+
+     wi = ctx->ga.tw-1;
+
+     if(wi == 0)
+       return ((a[0]==b[0])? PGA_TRUE : PGA_FALSE );
+
+     if (a[0] == b[0])
+         for (; (wi>0) && (a[wi] == b[wi]); wi--);
+
+     PGADebugExited("PGABinaryDuplicate");
+
+     return((wi==0) ? PGA_TRUE : PGA_FALSE);
+}
+
+/*I****************************************************************************
+   PGABinaryInitString - randomly initialize a string of type PGABinary
+
+   Inputs:
+      ctx - context variable
+      p   - index of string to randomly initialize
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGABinaryInitString ( ctx, p, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryInitString(PGAContext *ctx, int p, int pop)
+{
+     PGABinary *c = (PGABinary *)PGAGetIndividual(ctx, p, pop)->chrom;
+     int i;
+     int windex;        /* index of the computer word allele i is in      */
+     int bix;           /* binary position in word chrom[windex] of allele i */
+
+     PGADebugEntered("PGABinaryInitString");
+
+     for (i = 0; i < ctx->ga.tw; i++)
+          c[i] = 0;
+     for (i = 0; i < ctx->ga.StringLen; i++)
+     {
+          INDEX(windex,bix,i,WL);
+          if ( PGARandomFlip(ctx, ctx->init.BinaryProbability) )
+               SET  ( bix, c[windex] );
+     }
+
+     PGADebugExited("PGABinaryInitString");
+}
+
+
+/*I****************************************************************************
+  PGABinaryBuildDatatype - Build an MPI_Datatype for a binary string
+  datatype.
+
+  Inputs:
+      ctx  - context variable
+      p    - index of the string to build a datatype from
+      pop  - symbolic constant of the population string p is in
+
+  Outputs:
+      MPI_Datatype.
+
+  Example:
+      Called only by MPI routines.  Not for user consumption.
+
+****************************************************************************I*/
+MPI_Datatype PGABinaryBuildDatatype(PGAContext *ctx, int p, int pop)
+{
+
+     int            counts[4];      /* Number of elements in each
+                                       block (array of integer) */
+     MPI_Aint       displs[4];      /* byte displacement of each
+                                       block (array of integer) */
+     MPI_Datatype   types[4];       /* type of elements in each block (array
+                                       of handles to datatype objects) */
+     MPI_Datatype   individualtype; /* new datatype (handle) */
+     PGAIndividual *traveller;      /* address of individual in question */
+
+     PGADebugEntered("PGABinaryBuildDatatype");
+
+     traveller = PGAGetIndividual(ctx, p, pop);
+     MPI_Address(&traveller->evalfunc, &displs[0]);
+     counts[0] = 1;
+     types[0]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->fitness, &displs[1]);
+     counts[1] = 1;
+     types[1]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->evaluptodate, &displs[2]);
+     counts[2] = 1;
+     types[2]  = MPI_INT;
+
+     MPI_Address(traveller->chrom, &displs[3]);
+     counts[3] = ctx->ga.tw;
+     types[3]  = MPI_UNSIGNED_LONG;
+
+     MPI_Type_struct(4, counts, displs, types, &individualtype);
+     MPI_Type_commit(&individualtype);
+
+     PGADebugExited("PGABinaryBuildDatatype");
+
+     return (individualtype);
+}
+
+
+/*I****************************************************************************
+   PGABinaryHammingDistance - Returns the Hamming distance between two strings
+
+   Inputs:
+      ctx - context variable
+      s1  - the first string to compare
+      s2  - the second string to compare
+
+   Outputs:
+      The Hamming distance between two strings
+
+   Example:
+      Returns the Hamming distance between bit strings x and y.
+
+      PGAContext *ctx;
+      PGABinary *x, *y;
+      int d;
+      :
+      d = PGABinaryHammingDistance( ctx, x, y );
+
+****************************************************************************I*/
+int PGABinaryHammingDistance ( PGAContext *ctx, PGABinary *s1, PGABinary *s2 )
+{
+    int        j, wi, distance;
+    PGABinary  t1, t2, mask;
+
+    PGADebugEntered("PGABinaryHammingDistance");
+
+    distance = 0;
+    for(wi=0; wi<ctx->ga.tw; wi++)  /* step through each word in the string */
+        if ( s1[wi] != s2[wi] ) {   /* if equal, no bits are different      */
+            /*fprintf(stdout,"s1[wi] = %x, s2[wi] = %x\n",s1[wi],s2[wi]);*/
+            mask = 1;
+            for(j=0;j<WL;++j) {     /* not equal, compare all bits          */
+                /* Build bit mask in position j. Mask bit from each         */
+                /* string into t1 and t2 and test if bits are the same      */
+                t1 = s1[wi] & mask;
+                t2 = s2[wi] & mask;
+                /*fprintf(stdout,"mask = %u, t1 = %u, t2 = %u, j = %d, wi = %d\n",mask,t1,t2,j,wi);*/
+                if ( t1 != t2 )
+                    distance++;
+                mask <<= 1;          /* shift mask 1 position */
+            }
+        }
+
+    PGADebugExited("PGABinaryHammingDistance");
+
+    return(distance);
+}
+
+/*I****************************************************************************
+   PGABinaryPrint - writes a bit string to a file.  Puts the binary
+   representation of the bit string pointed to by chrom into a character
+   string and writes that out. Assumes the maximum length of string to
+   print is WL, and that all bits are in the same word.
+
+   Inputs:
+      ctx   - context variable
+      fp    - file to write the bit string to
+      chrom - pointer to the bit string to write
+      nb    - number of bits to write out
+
+   Outputs:
+
+   Example:
+      Internal function.  Use PGABinaryPrintString to print a binary string.
+
+****************************************************************************I*/
+void PGABinaryPrint( PGAContext *ctx, FILE *fp, PGABinary *chrom, int nb )
+{
+     char *s, string[WL+1];
+     PGABinary mask;
+     int i;
+
+     PGADebugEntered("PGABinaryPrint");
+
+     mask = ((PGABinary)1)<<(WL-1);
+     s = string;
+     for(i=0; i<nb; mask>>=1,i++)              /* mask each bit and set the  */
+          *s++ = (mask&(*chrom)?'1':'0');      /* appropriate character      */
+     *s=0;                                     /* string terminator          */
+     fprintf(fp, "%s", string);                /* print out character string */
+
+     PGADebugExited("PGABinaryPrint");
+}
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/char.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/char.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/char.c	(revision 6168)
@@ -0,0 +1,715 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+ *     FILE: char.c: This file contains the routines specific to the
+ *                    character datatype.
+ *
+ *     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+ *              Brian P. Walenz
+ *****************************************************************************/
+
+#include <pgapack.h>
+
+/*U****************************************************************************
+   PGASetCharacterAllele - sets the value of an allele in a
+   PGA_DATATYPE_CHARACTER string.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+      val - character value to set the allele to
+
+   Outputs:
+      The allele is changed by side-effect.
+
+   Example:
+      Copies the alleles from member p in PGA_OLDPOP to member q in PGA_NEWPOP.
+      Assumes the strings are of the same length.
+      
+      PGAContext *ctx;
+      int p, q, i;
+      :
+      for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+          PGASetCharacterAllele(ctx, q, PGA_NEWPOP, i,
+                                PGAGetCharacterAllele(ctx, p, PGA_OLDPOP, i))
+
+****************************************************************************U*/
+void PGASetCharacterAllele (PGAContext *ctx, int p, int pop, int i, char value)
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGASetCharacterAllele");
+    PGACheckDataType("PGASetCharacterAllele", PGA_DATATYPE_CHARACTER);
+ 
+    ind = PGAGetIndividual ( ctx, p, pop );
+    ((PGACharacter *)ind->chrom)[i] = value;
+    
+    PGADebugExited("PGASetCharacterAllele");
+}
+
+/*U****************************************************************************
+   PGAGetCharacterAllele: returns the value of character allele in a
+   PGA_DATATYPE_CHARACTER string
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+
+   Outputs:
+      The value of allele i in string p.
+
+   Example:
+      Copies the alleles from member p in PGA_OLDPOP to member q in PGA_NEWPOP.
+      Assumes the strings are of the same length.
+
+      PGAContext *ctx;
+      int p, q, i;
+      :
+      for (i=PGAGetStringLength(ctx, p, PGA_NEWPOP)-1; i>=0; i--)
+          PGASetCharacterAllele(ctx, q, PGA_NEWPOP, i,
+                                PGAGetCharacterAllele(ctx, p, PGA_OLDPOP, i))
+
+****************************************************************************U*/
+char PGAGetCharacterAllele (PGAContext *ctx, int p, int pop, int i)
+{
+     PGAIndividual *ind;
+
+    PGADebugEntered("PGAGetCharacterAllele");
+     PGACheckDataType("PGAGetCharacterAllele", PGA_DATATYPE_CHARACTER);
+
+     ind = PGAGetIndividual ( ctx, p, pop );
+
+    PGADebugExited("PGAGetCharacterAllele");
+
+     return (((PGACharacter *)ind->chrom)[i]);
+}
+
+
+/*U****************************************************************************
+  PGASetCharacterInitType - sets a flag to specify whether the character
+  strings will be exclusively lowercase, exclusively uppercase, or a mixure
+  of both cases.  Legal flags are PGA_CINIT_UPPER, PGA_CINIT_LOWER, and
+  PGA_CINIT_MIXED.  Default is PGA_CINIT_LOWER.
+
+  Category: Initialization
+
+  Inputs:
+     ctx   - context variable
+     value - symbolic constant specifying which case
+
+  Outputs:
+
+  Example:
+     Set program to generate exclusively uppercase letters
+
+     PGAContext *ctx;
+     :
+     PGASetCharacterInitType(ctx, PGA_CINIT_UPPER);
+
+****************************************************************************U*/
+void PGASetCharacterInitType(PGAContext *ctx, int value)
+{
+    PGADebugEntered("PGASetCharacterInitType");
+     PGACheckDataType("PGASetCharacterInitType", PGA_DATATYPE_CHARACTER);
+
+     switch (value)
+     {
+     case PGA_CINIT_UPPER:
+     case PGA_CINIT_LOWER:
+     case PGA_CINIT_MIXED:
+          ctx->init.CharacterType = value;
+          break;
+     default:
+          PGAError(ctx, "PGASetCharacterInitType: Invalid case type:",
+                   PGA_FATAL, PGA_INT, (void *)&value);
+          break;
+     }
+
+    PGADebugExited("PGASetCharacterInitType");
+}
+
+/*I****************************************************************************
+   PGACharacterCreateString - Allocate memory for a string of type PGACharacter
+
+   Inputs:
+      ctx      - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      initflag - A true/false flag used in conjunction with ctx->ga.RandomInit
+                 to initialize the string either randomly or set to zero
+
+   Outputs:
+      Member p in population pop is allocated and initialized.
+
+   Example:
+      Allocates memory and assigns the address of the allocated memory to
+      the string field (ind->chrom) of the individual.  Additionally, the
+      string is initialized to zero.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGACharacterCreateString( ctx, p, PGA_NEWPOP, PGA_FALSE );
+
+****************************************************************************I*/
+void PGACharacterCreateString (PGAContext *ctx, int p, int pop, int InitFlag)
+{
+    int i, fp;
+    PGACharacter *c;
+    PGAIndividual *new = PGAGetIndividual(ctx, p, pop);
+    
+    PGADebugEntered("PGACharacterCreateString");
+    
+    new->chrom = (void *)malloc(ctx->ga.StringLen * sizeof(PGACharacter));
+    if (new->chrom == NULL)
+	PGAError(ctx, "PGACharacterCreateString: No room to allocate "
+		 "new->chrom", PGA_FATAL, PGA_VOID, NULL);
+    c = (PGACharacter *)new->chrom;
+    if (InitFlag)
+	if (ctx->fops.InitString) {
+	    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+	    (*ctx->fops.InitString)(&ctx, &fp, &pop);
+	} else {
+	    (*ctx->cops.InitString)(ctx, p, pop);
+	}
+    else
+	for (i=0; i<ctx->ga.StringLen; i++)
+	    c[i] = 0;
+    
+    PGADebugExited("PGACharacterCreateString");
+}
+
+/*I****************************************************************************
+   PGACharacterMutation - randomly mutates a character-valued gene with a
+   specified probability. This routine is called from PGAMutation.
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population string p is in
+      mr  - probability of mutating an character-valued gene
+
+   Outputs:
+      Returns the number of mutations
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      int NumMutations;
+      :
+      NumMutations = PGACharacterMutation(ctx, p, PGA_NEWPOP, 0.01);
+****************************************************************************I*/
+int PGACharacterMutation( PGAContext *ctx, int p, int pop, double mr )
+{
+     PGACharacter *c;
+     int i, j;
+     int count = 0;
+
+    PGADebugEntered("PGACharacterMutation");
+
+     c = (PGACharacter *)PGAGetIndividual(ctx, p, pop)->chrom;
+     for(i=0; i<ctx->ga.StringLen; i++)
+          if ( PGARandomFlip(ctx, mr) )       /* randomly choose an allele   */
+          {
+               switch (ctx->init.CharacterType)
+               {
+               case PGA_CINIT_LOWER:
+                    c[i] = PGARandomInterval(ctx, 'a', 'z');
+                    break;
+               case PGA_CINIT_UPPER:
+                    c[i] = PGARandomInterval(ctx, 'A', 'Z');
+                    break;
+               case PGA_CINIT_MIXED:
+                    j = PGARandomInterval(ctx, 0, 51);
+                    if (j < 26)
+                         c[i] = 'A' + j;
+                    else
+                         c[i] = 'a' + j - 26;
+                    break;
+               }
+               count++;
+          }
+
+    PGADebugExited("PGACharacterMutation");
+
+     return (count);
+}
+
+/*I****************************************************************************
+   PGACharacterOneptCrossover - performs one-point crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGACharacterOneptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2)
+{
+     PGACharacter *parent1, *parent2, *child1, *child2;
+     int i, xsite;
+
+    PGADebugEntered("PGACharacterOneptCrossover");
+
+     parent1 = (PGACharacter *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     parent2 = (PGACharacter *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+     child1  = (PGACharacter *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+     child2  = (PGACharacter *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+     xsite = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+
+     for(i=0;i<xsite;i++)
+     {
+          child1[i] = parent1[i];
+          child2[i] = parent2[i];
+     }
+
+     for(i=xsite;i<ctx->ga.StringLen;i++)
+     {
+          child1[i] = parent2[i];
+          child2[i] = parent1[i];
+     }
+
+    PGADebugExited("PGACharacterOneptCrossover");
+}
+
+/*I****************************************************************************
+   PGACharacterTwoptCrossover - performs two-point crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGACharacterTwoptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2)
+{
+     PGACharacter *parent1, *parent2, *child1, *child2;
+     int i, temp, xsite1, xsite2;
+
+    PGADebugEntered("PGACharacterTwoptCrossover");
+
+     parent1 = (PGACharacter *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     parent2 = (PGACharacter *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+     child1  = (PGACharacter *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+     child2  = (PGACharacter *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+     /* pick two cross sites such that xsite2 > xsite1 */
+     xsite1 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+     xsite2 = xsite1;
+     while ( xsite2 == xsite1 )
+          xsite2 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+     if ( xsite1 > xsite2 )
+     {
+          temp   = xsite1;
+          xsite1 = xsite2;
+          xsite2 = temp;
+     }
+
+     for(i=0;i<xsite1;i++)
+     {
+          child1[i] = parent1[i];
+          child2[i] = parent2[i];
+     }
+
+     for(i=xsite1;i<xsite2;i++)
+     {
+          child1[i] = parent2[i];
+          child2[i] = parent1[i];
+     }
+
+     for(i=xsite2;i<ctx->ga.StringLen;i++)
+     {
+          child1[i] = parent1[i];
+          child2[i] = parent2[i];
+     }
+
+    PGADebugExited("PGACharacterTwoptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGACharacterUniformCrossover - performs uniform crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGACharacterUniformCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2)
+{
+     PGACharacter *parent1, *parent2, *child1, *child2;
+     int i;
+
+    PGADebugEntered("PGACharacterUniformCrossover");
+
+     parent1 = (PGACharacter *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     parent2 = (PGACharacter *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+     child1  = (PGACharacter *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+     child2  = (PGACharacter *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+
+     for(i=0;i<ctx->ga.StringLen;i++)
+          if ( parent1[i] == parent2[i] )
+          {
+               child1[i] = parent1[i];
+               child2[i] = parent2[i];
+          }
+          else if (PGARandomFlip(ctx, ctx->ga.UniformCrossProb))
+          {
+               child1[i] = parent1[i];
+               child2[i] = parent2[i];
+          }
+          else
+          {
+               child1[i] = parent2[i];
+               child2[i] = parent1[i];
+          }
+
+    PGADebugExited("PGACharacterUniformCrossover");
+}
+
+/*I****************************************************************************
+   PGACharacterPrintString - writes a character-valued string to a file.
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to file to write the string to
+      p   - index of the string to write out
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+      Write string s to stdout.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGACharacterPrintString( ctx, stdout, p, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterPrintString ( PGAContext *ctx, FILE *fp, int p, int pop)
+{
+    PGACharacter *c;
+    int           i, pos, len;
+
+    PGADebugEntered("PGACharacterPrintString");
+
+    c = (PGACharacter *)PGAGetIndividual(ctx, p, pop)->chrom;
+    len = PGAGetStringLength(ctx);
+
+    pos = 0;
+    while (len > 0) {
+      fprintf(fp, "#%5d: [", pos);
+      for (i=0; i<50 && len>0; i++,len--,c++)
+	fputc(*c, fp);
+      pos+=50;
+      fprintf(fp, "]\n");
+    }
+    fprintf(fp, "\n");
+    
+    PGADebugExited("PGACharacterPrintString");
+}
+
+/*I****************************************************************************
+   PGACharacterCopyString - Copy one character-valued string to another
+   Assumes the strings are of the same length.
+
+   Inputs:
+      ctx - context variable
+      p1   - string to copy
+      pop1 - symbolic constant of population containing string p1
+      p2   - string to copy p1 to
+      pop2 - symbolic constant of population containing string p2
+
+   Outputs:
+
+   Example:
+      Copy character string x to y (both are implicitly assumed to be the same
+      length)
+
+      PGAContext *ctx;
+      int x, y;
+      :
+      PGACharacterCopyString ( ctx, x, PGA_OLDPOP, y, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterCopyString (PGAContext *ctx, int p1, int pop1, int p2,
+                             int pop2)
+{
+     void *source, *dest;
+     int len;
+
+    PGADebugEntered("PGACharacterCopyString");
+
+     source = PGAGetIndividual(ctx, p1, pop1)->chrom;
+     dest   = PGAGetIndividual(ctx, p2, pop2)->chrom;
+     len    = PGAGetStringLength(ctx);
+     memcpy(dest, source, len * sizeof(PGACharacter));
+
+    PGADebugExited("PGACharacterCopyString");
+}
+
+/*I****************************************************************************
+   PGACharacterDuplicate - Returns true if string p1 in pop1 is a dublicate
+   of string p2 in pop2, else returns false.
+   Assumes the strings are the same length.
+
+   Inputs:
+      ctx - context variable
+      p1   - string index of the first string to compare
+      pop1 - symbolic constant of the population string p1 is in
+      p2   - string index of the second string to compare
+      pop2 - symbolic constant of the population string p2 is in
+
+   Outputs:
+      Returns true if strings are duplicates.
+
+   Example:
+      Compare string x with y to see if they are duplicates
+
+      PGAContext *ctx;
+      int x, y;
+      :
+      if ( PGACharacterDuplicate( ctx, x, PGA_NEWPOP, y, PGA_NEWPOP ) )
+          printf("strings are duplicates\n");
+
+****************************************************************************I*/
+int PGACharacterDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+     void *a, *b;
+     int len;
+
+    PGADebugEntered("PGACharacterDuplicate");
+
+     a = PGAGetIndividual(ctx, p1, pop1)->chrom;
+     b = PGAGetIndividual(ctx, p2, pop2)->chrom;
+     len = PGAGetStringLength(ctx);
+
+    PGADebugExited("PGACharacterDuplicate");
+
+     return (!memcmp(a, b, len * sizeof(PGACharacter)));
+}
+
+/*I****************************************************************************
+   PGACharacterInitString - randomly initialize a string of type PGACharacter
+
+   Inputs:
+      ctx   - context variable
+      p   - index of string to randomly initialize
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGACharacterInitString ( ctx, p, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterInitString(PGAContext *ctx, int p, int pop)
+{
+     int len, i, j;
+     PGACharacter *c;
+
+    PGADebugEntered("PGACharacterInitString");
+
+     len = ctx->ga.StringLen;
+     c = (PGACharacter *)PGAGetIndividual(ctx, p, pop)->chrom;
+     switch (ctx->init.CharacterType)
+     {
+     case PGA_CINIT_LOWER:
+          for (i = 0; i < len; i++)
+               c[i] = PGARandomInterval(ctx, 'a', 'z');
+          break;
+     case PGA_CINIT_UPPER:
+          for (i = 0; i < len; i++)
+               c[i] = PGARandomInterval(ctx, 'A', 'Z');
+          break;
+     case PGA_CINIT_MIXED:
+          for (i = 0; i < len; i++)
+          {
+               j = PGARandomInterval(ctx, 0, 51);
+               if (j < 26)
+                    c[i] = 'A' + j;
+               else
+                    c[i] = 'a' + j - 26;
+          }
+          break;
+     }
+    PGADebugExited("PGACharacterInitString");
+}
+
+/*I****************************************************************************
+  PGACharacterBuildDatatype - Build an MPI_Datatype for a character string.
+
+  Inputs:
+      ctx  - context variable
+      p    - index of the string to build a datatype from
+      pop  - symbolic constant of the population string p is in
+
+  Outputs:
+      MPI_Datatype
+
+  Example:
+      Called only by MPI routines.  Not for user consumption.
+
+****************************************************************************I*/
+MPI_Datatype PGACharacterBuildDatatype(PGAContext *ctx, int p, int pop)
+{
+
+     int            counts[4];      /* Number of elements in each
+                                       block (array of integer) */
+     MPI_Aint       displs[4];      /* byte displacement of each
+                                       block (array of integer) */
+     MPI_Datatype   types[4];       /* type of elements in each block (array
+                                       of handles to datatype objects) */
+     MPI_Datatype   individualtype; /* new datatype (handle) */
+     PGAIndividual *traveller;      /* address of individual in question */
+
+    PGADebugEntered("PGACharacterBuildDatatype");
+
+     traveller = PGAGetIndividual(ctx, p, pop);
+     MPI_Address(&traveller->evalfunc, &displs[0]);
+     counts[0] = 1;
+     types[0]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->fitness, &displs[1]);
+     counts[1] = 1;
+     types[1]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->evaluptodate, &displs[2]);
+     counts[2] = 1;
+     types[2]  = MPI_INT;
+
+     MPI_Address(traveller->chrom, &displs[3]);
+     counts[3] = ctx->ga.StringLen;
+     types[3]  = MPI_CHAR;
+
+     MPI_Type_struct(4, counts, displs, types, &individualtype);
+     MPI_Type_commit(&individualtype);
+
+    PGADebugExited("PGACharacterBuildDatatype");
+
+     return (individualtype);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/cmdline.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/cmdline.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/cmdline.c	(revision 6168)
@@ -0,0 +1,280 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: cmdline.c: This file contains routines needed to parse the
+*                      command line.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+extern char PGAProgram[100];
+#define bad_arg(a)    ( ((a)==NULL) || ((*(a)) == '-') )
+
+/*I****************************************************************************
+   PGAReadCmdLin - Code that looks at the arguments, recognizes any that
+   are for PGAPack, uses the arguments, and removes them from the command
+   line args.
+
+   Inputs:
+      ctx  - context variable
+      argc - address of the count of the number of command line argumen
+      argv - array of command line arguments
+
+   Outputs:
+      None
+
+   Example:
+      void main(int argc, char **argv) {
+          PGAContext *ctx;
+          :
+          PGAReadCmdLine(ctx, &argc, argv);
+      }
+
+****************************************************************************I*/
+void PGAReadCmdLine( PGAContext *ctx, int *argc, char **argv )
+{
+     int c;
+     char *s, **a;
+
+     
+     /* Put name of called program (according to the args) into PGAProgram */
+     s = (char *)  strrchr(*argv, '/');
+     if (s)
+          strcpy(PGAProgram, s + 1);
+     else
+          strcpy(PGAProgram, *argv);
+
+     /* Set all command line flags (except procgroup) to their defaults */
+
+     /* Move to last argument, so that we can go backwards. */
+     a = &argv[*argc - 1];
+
+     /*
+      * Loop backwards through arguments, catching the ones that start with
+      * '-'.  Backwards is more efficient when you are stripping things out.
+      */
+     for (c = (*argc); c > 1; c--, a--)
+     {
+          if (**a != '-')
+               continue;
+
+          if ( !strcmp(*a, "-pgadbg") || !strcmp(*a, "-pgadebug") )
+          {
+               if bad_arg(a[1])
+                    PGAUsage(ctx);
+#if OPTIMIZE==0
+               PGAParseDebugArg( ctx, a[1] );
+#endif
+               PGAStripArgs(a, argc, &c, 2);
+               continue;
+          }
+
+          if ( !strcmp(*a, "-pgaversion") )
+          {
+               PGAStripArgs(a, argc, &c, 1);
+               PGAPrintVersionNumber( ctx );
+	       PGADestroy(ctx);
+	       exit(-1);
+          }
+
+          if (!strcmp(*a, "-pgahelp") )
+          {
+               if (a[1] == NULL)
+                    PGAUsage(ctx);
+               else
+                    if (!strcmp(a[1], "debug"))
+                         PGAPrintDebugOptions(ctx);
+                    else
+                         fprintf(stderr, "Invalid option following"
+                                 "-pgahelp.\n");
+          }
+     }
+}
+
+#if OPTIMIZE==0
+/*I****************************************************************************
+   PGAParseDebugArg - routine to parse debug command line options, and set
+   the appropriate debug level (via PGASetDebugLevel).
+
+   Inputs:
+      ctx - context variable
+      st  - debug command line options
+
+   Outputs:
+      None
+
+   Example:
+      Internal function.  Called only by PGAReadCmdLine.
+
+****************************************************************************I*/
+void PGAParseDebugArg(PGAContext *ctx, char *st)
+{
+     int           num2index = 0, num1index = 0, index, num1 = 0, num2 = 0, x;
+     unsigned long length = strlen(st);
+     char          range = 0, num1ch[4], num2ch[4];
+
+
+     length--;
+     for(index=0; index <= length; index++)
+     {
+          if (!isdigit(st[index]) && st[index] != ',' && st[index] != '-')
+               PGAError(ctx, "PGASetDebugLevel: Invalid Debug Value:",
+                        PGA_FATAL, PGA_CHAR, (void *) st);
+          if (st[index] == '-')
+          {
+               range = 1;
+               num1ch[num1index] = '\0';
+               num1 = atoi(num1ch);
+               if (num1 < 0 || num1 > PGA_DEBUG_MAXFLAGS)
+                    PGAError(ctx,
+                             "PGASetDebugLevel: Lower Limit Out of Range:",
+                             PGA_FATAL, PGA_INT, (void *) &num1);
+               num1index = 0;
+          }
+          else
+          {
+               if (isdigit(st[index]))
+                    if (range)
+                         num2ch[num2index++] = st[index];
+                    else
+                         num1ch[num1index++] = st[index];
+               if (st[index] == ',' || index == length)
+               {
+                    if (range)
+                    {
+                         num2ch[num2index] = '\0';
+                         num2 = atoi(num2ch);
+                         if (num2 < 0 || num2 > PGA_DEBUG_MAXFLAGS)
+                              PGAError(ctx,
+                                       "PGASetDebugLevel: Upper Limit Out of"
+                                       " Range:",
+                                       PGA_FATAL, PGA_INT, (void *) &num2);
+                         if (num1 <= num2)
+                         {
+                              for (x = num1; x <= num2; x++)
+                              {
+                                   if (x == 212)
+                                        printf("%s %s\n", num1ch, num2ch);
+
+                                   PGASetDebugLevel(ctx, x);
+                              }
+
+                         }
+                         else
+                              PGAError(ctx,
+                                       "PGASetDebugLevel: Lower Limit Exceeds"
+                                       "Upper:", PGA_FATAL, PGA_INT,
+                                       (void *) &num1);
+                         num2index = 0;
+                         range = 0;
+                    }
+                    else
+                    {
+                         num1ch[num1index] = '\0';
+                         num1 = atoi(num1ch);
+                         if (num1 < 0 || num1 > PGA_DEBUG_MAXFLAGS)
+                              PGAError(ctx, "PGASetDebugLevel: Debug Number"
+                                       "Out of Range:", PGA_FATAL, PGA_INT,
+                                       (void *) &num1);
+                         if (num1 == 212)
+                              printf("%s\n", num1ch);
+
+                         PGASetDebugLevel(ctx, num1);
+                         num1index = 0;
+                    }
+               }
+          }
+     }
+}
+#endif
+
+/*I****************************************************************************
+   PGAStripArgs - code to strip arguments out of command list
+
+   Inputs:
+      argc - address of the count of the number of command line arguments
+      argv - array of command line arguments
+      c    -
+      num  -
+
+   Outputs:
+      None
+
+   Example:
+      Internal function.  Called only by PGAReadCmdLine.
+
+****************************************************************************I*/
+void PGAStripArgs(char **argv, int *argc, int *c, int num)
+{
+    char **a;
+    int i;
+
+    /* Strip out the argument. */
+    for (a = argv, i = (*c); i <= *argc; i++, a++)
+        *a = (*(a + num));
+    (*argc) -= num;
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/create.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/create.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/create.c	(revision 6168)
@@ -0,0 +1,1009 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: create.c: This file contains functions to create and initialize
+*                     data structures and populations.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGACreate - creates an uninitialized context variable.  The Fortran version
+  of this function call contains only the last three arguments
+
+  Category: Generation
+
+  Inputs:
+     argc     - address of the count of the number of command line arguments.
+     argv     - array of command line arguments.
+     datatype - the data type used for the strings.  Must be one of
+                PGA_DATATYPE_BINARY, PGA_DATATYPE_CHARACTER,
+                PGA_DATATYPE_INTEGER, PGA_DATATYPE_REAL, or PGA_DATATYPE_USER
+                to specify binary-valued, character-valued, integer-valued,
+                real-valued, or a user-defined datatype, respectively.
+     len      - the string length (number of genes).
+     maxormin - the direction of optimization. Must be one of PGA_MAXIMIZE or
+                PGA_MINIMIZE for maximization or minimization, respectively.
+
+  Outputs:
+     A pointer to the context variable.
+
+  Example:
+
+     In C:
+     void main(int argc, char **argv) {
+         PGAContext *ctx;
+         :
+         ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+         :
+         //  Set options here
+         :
+         PGASetUp(ctx);
+         :
+         //  Run the GA here
+         :
+         PGADestroy(ctx);
+     }
+
+     In FORTRAN:
+             integer ctx
+             :
+             ctx = PGACreate(PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE)
+             :
+     c       Set options here
+             :
+             call PGASetUp(ctx)
+             :
+     c       Run the GA here
+             :
+             call PGADestroy(ctx)
+             stop
+             end
+
+****************************************************************************U*/
+PGAContext *PGACreate ( int *argc, char **argv,
+                        int datatype, int len, int maxormin )
+{
+    int i;
+    PGAContext *ctx;
+
+    /* gekco purify ctx = (PGAContext *) malloc ( sizeof(PGAContext) ); */
+    ctx = (PGAContext *) calloc ( 1, sizeof(PGAContext) );
+
+    /*  We cannot make PGA calls until we sort the FuncNameIndex below,
+     *  so we just manually print the (rather severe) error message.
+     */
+    if( ctx == NULL ) {
+	fprintf(stderr, "PGACreate: No room to allocate ctx\n");
+	exit(-1);
+    }
+
+    
+    /*  We use this (indirectly) in PGAReadCmdLine -- in processing
+     *  -pgahelp and -pgahelp debug.
+     */
+    MPI_Initialized (&ctx->par.MPIAlreadyInit);
+
+    /* Initialize MPI, only if it isn't already running (fortran)  */
+    if (!ctx->par.MPIAlreadyInit)
+         MPI_Init (argc, &argv);
+
+
+#if OPTIMIZE==0
+    /*  Sort the FuncNameIndex.  This allows us to use a binary search
+     *  for finding the function names.
+     */
+    PGASortFuncNameIndex(ctx);
+#endif
+
+    /* Initialize debug flags, then parse command line arguments.  */
+    for (i=0; i<PGA_DEBUG_MAXFLAGS; i++)
+        ctx->debug.PGADebugFlags[i] = PGA_FALSE;
+    PGAReadCmdLine( ctx, argc, argv );
+
+
+    /*  The context variable is now initialized enough to allow this
+     *  call to complete successfully.
+     */
+    PGADebugEntered("PGACreate");
+
+    /* required parameter 1: abstract data type */
+    switch (datatype)
+    {
+    case PGA_DATATYPE_BINARY:
+    case PGA_DATATYPE_INTEGER:
+    case PGA_DATATYPE_REAL:
+    case PGA_DATATYPE_CHARACTER:
+    case PGA_DATATYPE_USER:
+         ctx->ga.datatype  = datatype;
+         break;
+    default:
+         PGAError( ctx, "PGACreate: Invalid value of datatype:",
+                  PGA_FATAL, PGA_INT, (void *) &datatype );
+    };
+
+    /* required parameter 2: string string length */
+    if (len <= 1)
+        PGAError( ctx,  "PGACreate: Invalid value of len:",
+                  PGA_FATAL, PGA_INT, (void *) &len );
+    else
+        ctx->ga.StringLen = len;
+
+
+    /* required parameter 3: optimization direction */
+    switch (maxormin) {
+        case PGA_MAXIMIZE:
+        case PGA_MINIMIZE:
+          ctx->ga.optdir = maxormin;
+          break;
+        default:
+          PGAError( ctx, "PGACreate: Invalid value of optdir:",
+                    PGA_FATAL, PGA_INT, (void *) &maxormin );
+    };
+
+
+    /*  For datatype == PGA_DATATYPE_BINARY, set how many full words
+     *  are used in the packed representation, and how many extra bits
+     *  this leaves us with.  Finally, set how many total words are used;
+     *  if there are no extra bits, this is just the number of full words,
+     *  else, there is one more word used than the number of full words.
+     */
+    switch (datatype) {
+    case PGA_DATATYPE_BINARY:
+        ctx->ga.fw = ctx->ga.StringLen/WL;
+        ctx->ga.eb = ctx->ga.StringLen%WL;
+        if ( ctx->ga.eb == 0 )
+            ctx->ga.tw = ctx->ga.fw;
+        else
+            ctx->ga.tw = ctx->ga.fw+1;
+        break;
+    default:
+        ctx->ga.fw = PGA_UNINITIALIZED_INT;
+        ctx->ga.eb = PGA_UNINITIALIZED_INT;
+        ctx->ga.tw = PGA_UNINITIALIZED_INT;
+        break;
+    }
+
+    /*  Clear all the setting.  Later on, PGASetUp() will be called, and then
+     *  it will notice which setting are uninitialized, and set them to the
+     *  default value.
+     */
+    ctx->ga.PopSize            = PGA_UNINITIALIZED_INT;
+    ctx->ga.StoppingRule       = PGA_STOP_MAXITER;
+    ctx->ga.MaxIter            = PGA_UNINITIALIZED_INT;
+    ctx->ga.MaxNoChange        = PGA_UNINITIALIZED_INT;
+    ctx->ga.MaxSimilarity      = PGA_UNINITIALIZED_INT;
+    ctx->ga.NumReplace         = PGA_UNINITIALIZED_INT;
+    ctx->ga.CrossoverType      = PGA_UNINITIALIZED_INT;
+    ctx->ga.SelectType         = PGA_UNINITIALIZED_INT;
+    ctx->ga.FitnessType        = PGA_UNINITIALIZED_INT;
+    ctx->ga.FitnessMinType     = PGA_UNINITIALIZED_INT;
+    ctx->ga.MutationType       = PGA_UNINITIALIZED_INT;
+    ctx->ga.MutateOnlyNoCross  = PGA_UNINITIALIZED_INT;
+    ctx->ga.MutateRealValue    = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.MutateIntegerValue = PGA_UNINITIALIZED_INT;
+    ctx->ga.MutateBoundedFlag  = PGA_UNINITIALIZED_INT;
+    ctx->ga.NoDuplicates       = PGA_UNINITIALIZED_INT;
+    ctx->ga.MutationProb       = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.CrossoverProb      = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.UniformCrossProb   = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.PTournamentProb    = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.FitnessRankMax     = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.FitnessCmaxValue   = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.PopReplace         = PGA_UNINITIALIZED_INT;
+    ctx->ga.iter               = 0;
+    ctx->ga.ItersOfSame        = 0;
+    ctx->ga.PercentSame        = 0;
+    ctx->ga.selected           = NULL;
+    ctx->ga.SelectIndex        = 0;
+    ctx->ga.restart            = PGA_UNINITIALIZED_INT;
+    ctx->ga.restartFreq        = PGA_UNINITIALIZED_INT;
+    ctx->ga.restartAlleleProb  = PGA_UNINITIALIZED_DOUBLE;
+
+
+    /*****************************
+     *  EHW Addition             *
+     *****************************/
+    ctx->inputex                = NULL;
+
+
+
+    /* Operations */
+    ctx->cops.CreateString      = NULL;
+    ctx->cops.Mutation          = NULL;
+    ctx->cops.Crossover         = NULL;
+    ctx->cops.PrintString       = NULL;
+    ctx->cops.CopyString        = NULL;
+    ctx->cops.Duplicate         = NULL;
+    ctx->cops.InitString        = NULL;
+    ctx->cops.BuildDatatype     = NULL;
+    ctx->cops.StopCond           = NULL;
+    ctx->cops.EndOfGen          = NULL;
+
+    /*****************************
+     *  EHW Addition             *
+     *****************************/
+    ctx->cops.SetTemp           = NULL;
+    ctx->cops.EndOfRepFcn       = NULL;
+    ctx->cops.DestroyUD         = NULL;
+    ctx->cops.InitUserCtx       = NULL;
+    ctx->cops.KillUserCtx       = NULL;
+
+
+
+    ctx->fops.Mutation          = NULL;
+    ctx->fops.Crossover         = NULL;
+    ctx->fops.PrintString       = NULL;
+    ctx->fops.CopyString        = NULL;
+    ctx->fops.Duplicate         = NULL;
+    ctx->fops.InitString        = NULL;
+    ctx->fops.StopCond          = NULL;
+    ctx->fops.EndOfGen          = NULL;
+
+    /*****************************
+     *  EHW Addition             *
+     *****************************/
+    ctx->fops.SetTemp           = NULL;
+    ctx->fops.EndOfRepFcn       = NULL;
+    ctx->fops.DestroyUD         = NULL;
+    ctx->fops.InitUserCtx       = NULL;
+    ctx->fops.KillUserCtx       = NULL;
+
+
+    /* Parallel */
+    ctx->par.NumIslands        = PGA_UNINITIALIZED_INT;
+    ctx->par.NumDemes          = PGA_UNINITIALIZED_INT;
+    ctx->par.DefaultComm       = (MPI_Comm) NULL;
+#ifdef FAKE_MPI
+    ctx->par.MPIStubLibrary    = PGA_TRUE;
+#else
+    ctx->par.MPIStubLibrary    = PGA_FALSE;
+#endif
+
+    /* Reporting */
+    ctx->rep.PrintFreq         = PGA_UNINITIALIZED_INT;
+    ctx->rep.PrintOptions      = 0;
+    ctx->rep.Online            = 0;
+    ctx->rep.Offline           = 0;
+    ctx->rep.Best              = PGA_UNINITIALIZED_DOUBLE;
+    ctx->rep.starttime         = PGA_UNINITIALIZED_INT;
+
+    /* System
+     *
+     *  If ctx->sys.UserFortran is not set to PGA_TRUE in pgacreate_ (the
+     *  fortran stub to PGACreate), the user program is in C.
+     */
+    if (ctx->sys.UserFortran != PGA_TRUE) 
+         ctx->sys.UserFortran  = PGA_FALSE;
+    ctx->sys.SetUpCalled       = PGA_FALSE;
+    ctx->sys.PGAMaxInt         = INT_MAX;
+    ctx->sys.PGAMinInt         = INT_MIN;
+    ctx->sys.PGAMaxDouble      = DBL_MAX;
+    ctx->sys.PGAMinDouble      = DBL_MIN;
+
+    /* Debug */
+    /* Set above before parsing command line arguments */
+
+    /* Initialization */
+    ctx->init.RandomInit        = PGA_UNINITIALIZED_INT;
+    ctx->init.BinaryProbability = PGA_UNINITIALIZED_DOUBLE;
+    ctx->init.RealType          = PGA_UNINITIALIZED_INT;
+    ctx->init.IntegerType       = PGA_UNINITIALIZED_INT;
+    ctx->init.CharacterType     = PGA_UNINITIALIZED_INT;
+    ctx->init.RandomSeed        = PGA_UNINITIALIZED_INT;
+
+    /*  Allocate and clear arrays to define the minimum and maximum values
+     *  allowed by integer and real datatypes.
+     */
+    switch (datatype)
+    {
+    case PGA_DATATYPE_INTEGER:
+         ctx->init.IntegerMax = (int *) malloc(len * sizeof(PGAInteger));
+         if (!ctx->init.IntegerMax)
+              PGAError(ctx, "PGACreate: No room to allocate:", PGA_FATAL,
+                       PGA_CHAR, (void *) "ctx->init.IntegerMax");
+         ctx->init.IntegerMin = (int *) malloc(len * sizeof(PGAInteger));
+         if (!ctx->init.IntegerMin)
+              PGAError(ctx, "PGACreate: No room to allocate:", PGA_FATAL,
+                       PGA_CHAR, (void *) "ctx->init.IntegerMin");
+         ctx->init.RealMax = NULL;
+         ctx->init.RealMin = NULL;
+         for (i = 0; i < len; i++)
+         {
+              ctx->init.IntegerMin[i] = PGA_UNINITIALIZED_INT;
+              ctx->init.IntegerMax[i] = PGA_UNINITIALIZED_INT;
+         }
+         break;
+    case PGA_DATATYPE_REAL:
+         ctx->init.RealMax = (PGAReal *) malloc(len * sizeof(PGAReal));
+         if (!ctx->init.RealMax)
+              PGAError(ctx, "PGACreate: No room to allocate:", PGA_FATAL,
+                       PGA_CHAR, (void *) "ctx->init.RealMax");
+         ctx->init.RealMin = (PGAReal *) malloc(len * sizeof(PGAReal));
+         if (!ctx->init.RealMin)
+              PGAError(ctx, "PGACreate: No room to allocate:", PGA_FATAL,
+                       PGA_CHAR, (void *) "ctx->init.RealMin");
+         ctx->init.IntegerMax = NULL;
+         ctx->init.IntegerMin = NULL;
+         for (i = 0; i < len; i++)
+         {
+              ctx->init.RealMin[i] = PGA_UNINITIALIZED_DOUBLE;
+              ctx->init.RealMax[i] = PGA_UNINITIALIZED_DOUBLE;
+         }
+         break;
+    default:
+         ctx->init.RealMax = NULL;
+         ctx->init.RealMin = NULL;
+         ctx->init.IntegerMax = NULL;
+         ctx->init.IntegerMin = NULL;
+         break;
+    }
+
+    PGADebugExited("PGACreate");
+
+    return(ctx);
+}
+
+
+/*U****************************************************************************
+  PGASetUp - set all uninitialized variables to default values and initialize
+  some internal arrays.  Must be called after PGACreate() and before the GA
+  is started.
+
+  Category: Generation
+
+  Inputs:
+     ctx - context variable
+
+  Outputs:
+     Uninitialized values in the context variable are set to defaults, and
+     set values are checked for legality.
+
+  Example:
+     PGAContext *ctx;
+     :
+     PGACreate(ctx, ...);
+     :
+     //  Set options here
+     :
+     PGASetUp(ctx);
+
+****************************************************************************U*/
+void PGASetUp ( PGAContext *ctx )
+{
+    /*  These are for temporary storage of datatype specific functions.
+     *  They allow some (understatement of the yesr!!) cleaning of the
+     *  code below.
+     */
+    void         (*CreateString)(PGAContext *, int, int, int);
+    int          (*Mutation)(PGAContext *, int, int, double);
+    void         (*Crossover)(PGAContext *, int, int, int, int, int, int);
+    void         (*PrintString)(PGAContext *, FILE *, int, int);
+    void         (*CopyString)(PGAContext *, int, int, int, int);
+    int          (*Duplicate)(PGAContext *, int, int, int, int);
+    void         (*InitString)(PGAContext *, int, int);
+    MPI_Datatype (*BuildDatatype)(PGAContext *, int, int);
+    int err=0, i;
+
+    PGADebugEntered("PGASetUp");
+    PGAFailIfSetUp("PGASetUp");
+
+    ctx->sys.SetUpCalled = PGA_TRUE;
+
+    if ( ctx->ga.datatype           == PGA_DATATYPE_BINARY   &&
+         ctx->ga.tw                 == PGA_UNINITIALIZED_INT )
+      PGAError( ctx,
+               "PGASetUp: Binary: Total Words (ctx->ga.tw) == UNINITIALIZED?",
+               PGA_FATAL, PGA_INT, (void *) &ctx->ga.tw );
+
+    if ( ctx->ga.datatype           == PGA_DATATYPE_BINARY  &&
+         ctx->ga.fw                 == PGA_UNINITIALIZED_INT )
+      PGAError( ctx,
+               "PGASetUp: Binary: Full Words (ctx->ga.fw) == UNINITIALIZED?",
+               PGA_FATAL, PGA_INT,  (void *) &ctx->ga.fw );
+
+    if ( ctx->ga.datatype           == PGA_DATATYPE_BINARY  &&
+         ctx->ga.eb                 == PGA_UNINITIALIZED_INT )
+      PGAError( ctx,
+               "PGASetUp: Binary: Empty Bits (ctx->ga.eb) == UNINITIALIZED?",
+               PGA_FATAL, PGA_INT, (void *) &ctx->ga.eb );
+
+    if ( ctx->ga.PopSize            == PGA_UNINITIALIZED_INT)
+      ctx->ga.PopSize                = 100;
+
+    if ( ctx->ga.MaxIter            == PGA_UNINITIALIZED_INT)
+         ctx->ga.MaxIter             = 1000;
+
+    if ( ctx->ga.MaxNoChange        == PGA_UNINITIALIZED_INT)
+         ctx->ga.MaxNoChange         = 100;
+
+    if ( ctx->ga.MaxSimilarity      == PGA_UNINITIALIZED_INT)
+         ctx->ga.MaxSimilarity       = 95;
+
+    if ( ctx->ga.NumReplace         == PGA_UNINITIALIZED_INT)
+         ctx->ga.NumReplace          = (int) ceil(ctx->ga.PopSize * 0.1);
+
+    if ( ctx->ga.NumReplace          > ctx->ga.PopSize)
+         PGAError(ctx, "PGASetUp: NumReplace > PopSize",
+                  PGA_FATAL, PGA_VOID, NULL);
+
+    if ( ctx->ga.CrossoverType      == PGA_UNINITIALIZED_INT)
+         ctx->ga.CrossoverType       = PGA_CROSSOVER_TWOPT;
+
+    if (ctx->ga.CrossoverType       == PGA_CROSSOVER_TWOPT &&
+        ctx->ga.StringLen == 2)
+         PGAError(ctx, "PGASetUp: Invalid Crossover type for string of length "
+                  "2", PGA_FATAL, PGA_INT, (void *) &ctx->ga.CrossoverType);
+
+    if ( ctx->ga.SelectType        == PGA_UNINITIALIZED_INT)
+         ctx->ga.SelectType         = PGA_SELECT_TOURNAMENT;
+
+    if ( ctx->ga.FitnessType       == PGA_UNINITIALIZED_INT)
+         ctx->ga.FitnessType        = PGA_FITNESS_RAW;
+
+    if ( ctx->ga.FitnessMinType    == PGA_UNINITIALIZED_INT)
+         ctx->ga.FitnessMinType     = PGA_FITNESSMIN_CMAX;
+
+    if ( ctx->ga.MutateOnlyNoCross == PGA_UNINITIALIZED_INT)
+         ctx->ga.MutateOnlyNoCross  = PGA_TRUE;
+
+    if ( ctx->ga.MutationProb      == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.MutationProb       = 1. / ctx->ga.StringLen;
+
+    if ( ctx->ga.MutationType      == PGA_UNINITIALIZED_INT) {
+        switch (ctx->ga.datatype) {
+        case PGA_DATATYPE_BINARY:
+        case PGA_DATATYPE_CHARACTER:
+        case PGA_DATATYPE_USER:
+             /* leave PGA_UNINITIALIZED_INT for these data types */
+             break;
+        case PGA_DATATYPE_REAL:
+             ctx->ga.MutationType   = PGA_MUTATION_GAUSSIAN;
+             break;
+        case PGA_DATATYPE_INTEGER:
+             switch (ctx->init.IntegerType) {
+                 case PGA_UNINITIALIZED_INT:
+                 case PGA_IINIT_PERMUTE:
+                     ctx->ga.MutationType   = PGA_MUTATION_PERMUTE;
+                     break;
+                 case PGA_IINIT_RANGE:
+                     ctx->ga.MutationType   = PGA_MUTATION_RANGE;
+                     break;
+             }
+             break;
+        default:
+             PGAError( ctx, "PGASetup: Invalid value of ctx->ga.datatype:",
+                       PGA_FATAL, PGA_INT, (void *) &(ctx->ga.datatype) );
+         }
+    }
+
+    if (ctx->ga.MutateRealValue   == PGA_UNINITIALIZED_DOUBLE) {
+        switch (ctx->ga.MutationType) {
+        case PGA_MUTATION_GAUSSIAN:
+            ctx->ga.MutateRealValue   = 0.1;
+            break;
+        case PGA_MUTATION_UNIFORM:
+            ctx->ga.MutateRealValue   = 0.1;
+            break;
+        case PGA_MUTATION_CONSTANT:
+            ctx->ga.MutateRealValue   = 0.01;
+            break;
+        case PGA_MUTATION_RANGE:
+        default:
+            ctx->ga.MutateRealValue   = 0.0;
+        }
+    }
+
+    if ( ctx->ga.MutateIntegerValue == PGA_UNINITIALIZED_INT)
+         ctx->ga.MutateIntegerValue  = 1;
+
+    if ( ctx->ga.MutateBoundedFlag == PGA_UNINITIALIZED_INT)
+         ctx->ga.MutateBoundedFlag  = PGA_FALSE;
+
+    if ( ctx->ga.NoDuplicates      == PGA_UNINITIALIZED_INT)
+         ctx->ga.NoDuplicates       = PGA_FALSE;
+
+    if ( ctx->ga.NoDuplicates && ((ctx->ga.StoppingRule & PGA_STOP_TOOSIMILAR)
+                                   == PGA_STOP_TOOSIMILAR))
+         PGAError(ctx, "PGASetUp: No Duplicates inconsistent with Stopping "
+                  "Rule:", PGA_FATAL, PGA_INT, (void *) &ctx->ga.StoppingRule);
+
+    if ( ctx->ga.CrossoverProb     == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.CrossoverProb      = 0.85;
+
+    if ( ctx->ga.UniformCrossProb  == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.UniformCrossProb   = 0.6;
+
+    if ( ctx->ga.PTournamentProb   == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.PTournamentProb    = 0.6;
+
+    if ( ctx->ga.FitnessRankMax    == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.FitnessRankMax     = 1.2;
+
+    if ( ctx->ga.FitnessCmaxValue  == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.FitnessCmaxValue   = 1.01;
+
+    if ( ctx->ga.PopReplace        == PGA_UNINITIALIZED_INT)
+         ctx->ga.PopReplace         = PGA_POPREPL_BEST;
+
+    if ( ctx->ga.restart           == PGA_UNINITIALIZED_INT)
+         ctx->ga.restart            = PGA_FALSE;
+
+    if ( ctx->ga.restartFreq       == PGA_UNINITIALIZED_INT)
+         ctx->ga.restartFreq        = 50;
+
+    if ( ctx->ga.restartAlleleProb == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.restartAlleleProb = 0.5;
+
+
+/* ops */
+    /*  If no user supplied "done" function, use the built in one.
+     *  No need to check EndOfGen; they only get called if they
+     *  are defined.
+     */
+    if (((void *)ctx->cops.StopCond == (void *)PGADone) ||
+	((void *)ctx->fops.StopCond == (void *)PGADone))
+	PGAError( ctx,
+		 "PGASetUp: Using PGADone as the user stopping condition will"
+		 " result in an infinite loop!", PGA_FATAL, PGA_VOID, NULL);
+
+    switch (ctx->ga.datatype) {
+    case PGA_DATATYPE_BINARY:
+	CreateString  = PGABinaryCreateString;
+	BuildDatatype = PGABinaryBuildDatatype;
+	Mutation      = PGABinaryMutation;
+
+        switch (ctx->ga.CrossoverType) {
+	  case PGA_CROSSOVER_ONEPT:
+	    Crossover  = PGABinaryOneptCrossover;
+            break;
+	  case PGA_CROSSOVER_TWOPT:
+	    Crossover  = PGABinaryTwoptCrossover;
+            break;
+	  case PGA_CROSSOVER_UNIFORM:
+	    Crossover  = PGABinaryUniformCrossover;
+            break;
+        }
+	PrintString    = PGABinaryPrintString;
+	CopyString     = PGABinaryCopyString;
+	Duplicate      = PGABinaryDuplicate;
+	InitString     = PGABinaryInitString;
+        break;
+      case PGA_DATATYPE_INTEGER:
+        CreateString   = PGAIntegerCreateString;
+        BuildDatatype  = PGAIntegerBuildDatatype;
+        Mutation       = PGAIntegerMutation;
+        switch (ctx->ga.CrossoverType) {
+	  case PGA_CROSSOVER_ONEPT:
+	    Crossover  = PGAIntegerOneptCrossover;
+            break;
+	  case PGA_CROSSOVER_TWOPT:
+	    Crossover  = PGAIntegerTwoptCrossover;
+            break;
+	  case PGA_CROSSOVER_UNIFORM:
+	    Crossover  = PGAIntegerUniformCrossover;
+            break;
+        }
+	PrintString    = PGAIntegerPrintString;
+	CopyString     = PGAIntegerCopyString;
+	Duplicate      = PGAIntegerDuplicate;
+	InitString     = PGAIntegerInitString;
+        break;
+      case PGA_DATATYPE_REAL:
+	CreateString   = PGARealCreateString;
+	BuildDatatype  = PGARealBuildDatatype;
+	Mutation       = PGARealMutation;
+        switch (ctx->ga.CrossoverType) {
+	  case PGA_CROSSOVER_ONEPT:
+	    Crossover  = PGARealOneptCrossover;
+            break;
+	  case PGA_CROSSOVER_TWOPT:
+	    Crossover  = PGARealTwoptCrossover;
+            break;
+	  case PGA_CROSSOVER_UNIFORM:
+	    Crossover  = PGARealUniformCrossover;
+            break;
+        }
+	PrintString    = PGARealPrintString;
+	CopyString     = PGARealCopyString;
+	Duplicate      = PGARealDuplicate;
+	InitString     = PGARealInitString;
+        break;
+      case PGA_DATATYPE_CHARACTER:
+	CreateString   = PGACharacterCreateString;
+	BuildDatatype  = PGACharacterBuildDatatype;
+	Mutation       = PGACharacterMutation;
+        switch (ctx->ga.CrossoverType) {
+	  case PGA_CROSSOVER_ONEPT:
+	    Crossover  = PGACharacterOneptCrossover;
+            break;
+	  case PGA_CROSSOVER_TWOPT:
+	    Crossover  = PGACharacterTwoptCrossover;
+            break;
+	  case PGA_CROSSOVER_UNIFORM:
+	    Crossover  = PGACharacterUniformCrossover;
+            break;
+	}
+	PrintString    = PGACharacterPrintString;
+	CopyString     = PGACharacterCopyString;
+	Duplicate      = PGACharacterDuplicate;
+	InitString     = PGACharacterInitString;
+        break;
+      case PGA_DATATYPE_USER:
+        if (ctx->cops.CreateString == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs CreateString function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+        if (ctx->cops.Mutation     == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs Mutation function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+        if (ctx->cops.Crossover    == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs Crossover function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+        if (ctx->cops.PrintString  == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs PrintString function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+	if (ctx->cops.Duplicate    == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs Duplicate function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+	if (ctx->cops.CopyString    == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs CopyString function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+        if (ctx->cops.BuildDatatype == NULL)
+             PGAError(ctx,
+                      "PGASetUp: User datatype needs BuildDatatype "
+                      "function:", PGA_FATAL, PGA_INT, (void *) &err );
+        break;
+    }
+    if ((ctx->cops.Mutation     == NULL) && (ctx->fops.Mutation    == NULL))
+	ctx->cops.Mutation      = Mutation;
+    if ((ctx->cops.Crossover    == NULL) && (ctx->fops.Crossover   == NULL))
+	ctx->cops.Crossover     = Crossover;
+    if ((ctx->cops.PrintString  == NULL) && (ctx->fops.PrintString == NULL))
+	ctx->cops.PrintString   = PrintString;
+    if ((ctx->cops.Duplicate    == NULL) && (ctx->fops.Duplicate   == NULL))
+	ctx->cops.Duplicate     = Duplicate;
+    if ((ctx->cops.InitString   == NULL) && (ctx->fops.InitString  == NULL))
+	ctx->cops.InitString    = InitString;
+    if (ctx->cops.CreateString  == NULL) 
+	ctx->cops.CreateString  = CreateString;
+    if (ctx->cops.CopyString    == NULL)
+	ctx->cops.CopyString    = CopyString;
+    if (ctx->cops.BuildDatatype == NULL)
+	ctx->cops.BuildDatatype = BuildDatatype;
+    
+/* par */
+    if ( ctx->par.NumIslands       == PGA_UNINITIALIZED_INT)
+         ctx->par.NumIslands        = 1;
+    if ( ctx->par.NumDemes         == PGA_UNINITIALIZED_INT)
+         ctx->par.NumDemes          = 1;
+    if ( ctx->par.DefaultComm      == (MPI_Comm) NULL )
+         ctx->par.DefaultComm       = MPI_COMM_WORLD;
+
+    
+
+/* rep */
+    if ( ctx->rep.PrintFreq == PGA_UNINITIALIZED_INT)
+         ctx->rep.PrintFreq  = 10;
+
+/* sys */
+    /* no more sets necessary here. */
+
+/* debug */
+
+/* init */
+    if ( ctx->init.RandomInit == PGA_UNINITIALIZED_INT)
+         ctx->init.RandomInit  = PGA_TRUE;
+
+    if ( ctx->init.BinaryProbability == PGA_UNINITIALIZED_DOUBLE)
+         ctx->init.BinaryProbability  = 0.5;
+
+    if ( ctx->init.RealType == PGA_UNINITIALIZED_INT)
+         ctx->init.RealType  = PGA_RINIT_RANGE;
+    if ( ctx->init.IntegerType == PGA_UNINITIALIZED_INT)
+         ctx->init.IntegerType  = PGA_IINIT_PERMUTE;
+    if ( ctx->init.CharacterType == PGA_UNINITIALIZED_INT)
+         ctx->init.CharacterType = PGA_CINIT_LOWER;
+
+    switch (ctx->ga.datatype)
+    {
+    case PGA_DATATYPE_INTEGER:
+         for (i = 0; i < ctx->ga.StringLen; i++)
+         {
+              if (ctx->init.IntegerMin[i] == PGA_UNINITIALIZED_INT)
+                   ctx->init.IntegerMin[i] = 0;
+              if (ctx->init.IntegerMax[i] == PGA_UNINITIALIZED_INT)
+                   ctx->init.IntegerMax[i] = ctx->ga.StringLen - 1;
+         }
+         break;
+    case PGA_DATATYPE_REAL:
+         for (i = 0; i < ctx->ga.StringLen; i++)
+         {
+              if (ctx->init.RealMin[i] == PGA_UNINITIALIZED_DOUBLE)
+                   ctx->init.RealMin[i] = 0.;
+              if (ctx->init.RealMax[i] == PGA_UNINITIALIZED_DOUBLE)
+                   ctx->init.RealMax[i] = 1.;
+         }
+         break;
+    }
+
+    /* If a seed was not specified, get one from a time of day call */
+    if ( ctx->init.RandomSeed == PGA_UNINITIALIZED_INT)
+         ctx->init.RandomSeed = (int)time(NULL);
+
+    /* seed random number generator with this process' unique seed */
+    ctx->init.RandomSeed += PGAGetRank(ctx, MPI_COMM_WORLD);
+    PGARandom01( ctx, ctx->init.RandomSeed );
+
+    ctx->ga.selected        = (int *)malloc( sizeof(int) * ctx->ga.PopSize );
+    if (ctx->ga.selected == NULL)
+         PGAError(ctx, "PGASetUp: No room to allocate ctx->ga.selected",
+                  PGA_FATAL, PGA_VOID, NULL);
+
+    ctx->ga.sorted          = (int *)malloc( sizeof(int) * ctx->ga.PopSize );
+    if (ctx->ga.sorted == NULL)
+         PGAError(ctx, "PGASetUp: No room to allocate ctx->ga.sorted",
+                  PGA_FATAL, PGA_VOID, NULL);
+
+    ctx->scratch.intscratch = (int *)malloc( sizeof(int) * ctx->ga.PopSize );
+    if (ctx->scratch.intscratch == NULL)
+         PGAError(ctx, "PGASetUp: No room to allocate ctx->scratch.intscratch",
+                  PGA_FATAL, PGA_VOID, NULL);
+
+    ctx->scratch.dblscratch = (double *)malloc(sizeof(double) * ctx->ga.PopSize);
+    if (ctx->scratch.dblscratch == NULL)
+         PGAError(ctx, "PGASetUp: No room to allocate ctx->scratch.dblscratch",
+                  PGA_FATAL, PGA_VOID, NULL);
+
+    PGACreatePop ( ctx , PGA_OLDPOP );
+    PGACreatePop ( ctx , PGA_NEWPOP );
+
+    ctx->rep.starttime = time(NULL);
+
+    PGADebugExited("PGASetUp");
+}
+
+/*U****************************************************************************
+   PGASetRandomInitFlag - A boolean flag to indicate whether to randomly
+   initialize alleles.  Legal values are PGA_TRUE and PGA_FALSE.  Default
+   is PGA_TRUE -- randomly initialize alleles.
+
+   Category: Initialization
+
+   Inputs:
+      ctx  - context variable
+      flag - either PGA_TRUE or PGA_FALSE
+
+   Outputs:
+      None
+
+   Example:
+      Set the initialization routine to initialize all alleles to zero
+
+      PGAContext *ctx;
+      :
+      PGASetRandomInitFlag(ctx,PGA_FALSE);
+
+****************************************************************************U*/
+void PGASetRandomInitFlag(PGAContext *ctx, int RandomBoolean)
+{
+    PGADebugEntered("PGASetRandomInitFlag");
+    PGAFailIfSetUp("PGASetRandomInitFlag");
+
+  switch (RandomBoolean) {
+    case PGA_TRUE:
+    case PGA_FALSE:
+      ctx->init.RandomInit = RandomBoolean;
+      break;
+    default:
+      PGAError(ctx, "PGASetRandomInitFlag: Invalid value of RandomBoolean:",
+               PGA_FATAL, PGA_INT, (void *) &RandomBoolean);
+      break;
+    }
+    PGADebugExited("PGASetRandomInitFlag");
+}
+
+/*U***************************************************************************
+   PGAGetRandomInitFlag - returns true/false to indicate whether or not
+   alleles are randomly initialized.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns PGA_TRUE if alleles are randomly initialized.
+      Otherwise, returns PGA_FALSE
+
+   Example:
+      PGAContext *ctx;
+      int raninit;
+      :
+      raninit = PGAGetRandomInitFlag(ctx);
+      switch (raninit) {
+      case PGA_TRUE:
+          printf("Population is randomly initialized\n");
+          break;
+      case PGA_FALSE:
+          printf("Population initialized to zero\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetRandomInitFlag (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRandomInitFlag");
+
+    PGAFailIfNotSetUp("PGAGetRandomInitFlag");
+
+    PGADebugExited("PGAGetRandomInitFlag");
+
+    return(ctx->init.RandomInit);
+}
+
+
+/*I****************************************************************************
+  PGACreatePop - allocates a population of individuals and calls
+  PGACreateIndividual to set up each one
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population to create
+
+  Outputs:
+     None
+
+  Example:
+     PGAContext *ctx;
+     :
+     PGACreatePop(ctx, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGACreatePop (PGAContext *ctx, int pop)
+{
+     int p, flag=0;
+
+    PGADebugEntered("PGACreatePop");
+
+     switch (pop)
+     {
+     case PGA_OLDPOP:
+          ctx->ga.oldpop = (PGAIndividual *)malloc(sizeof(PGAIndividual) *
+                                                   (ctx->ga.PopSize + 3));
+          if (ctx->ga.oldpop == NULL)
+               PGAError(ctx, "PGACreatePop: No room to allocate "
+                        "ctx->ga.oldpop", PGA_FATAL, PGA_VOID, NULL);
+          flag = ctx->init.RandomInit;
+          break;
+     case PGA_NEWPOP:
+          ctx->ga.newpop = (PGAIndividual *)malloc(sizeof(PGAIndividual) *
+                                                   (ctx->ga.PopSize + 3));
+          if (ctx->ga.newpop == NULL)
+               PGAError(ctx, "PGACreatePop: No room to allocate "
+                        "ctx->ga.newpop", PGA_FATAL, PGA_VOID, NULL);
+          flag = PGA_FALSE;
+          break;
+     default:
+          PGAError(ctx, "PGACreatePop: Invalid value of pop:", PGA_FATAL,
+                   PGA_INT, (void *) &pop );
+          break;
+     };
+     for (p = 0; p < ctx->ga.PopSize; p++)
+          PGACreateIndividual (ctx, p, pop, flag);
+     PGACreateIndividual (ctx, PGA_TEMP1, pop, PGA_FALSE);
+     PGACreateIndividual (ctx, PGA_TEMP2, pop, PGA_FALSE);
+     PGACreateIndividual (ctx, PGA_TEMP3, pop, PGA_FALSE);
+
+
+    PGADebugExited("PGACreatePop");
+}
+
+
+/*I****************************************************************************
+  PGACreateIndividual - initialize to zero various data structures of an
+  individual and call the appropriate function to create and initialize the
+  string for the specific data type
+
+  Inputs:
+     ctx      - context variable
+     p        - string index
+     pop      - symbolic constant of the population string p is in
+     initflag - if the value is PGA_TRUE, the string is randomly initialized.
+                Otherwise it is set to zero.
+
+  Outputs:
+     None
+
+  Example:
+     PGAContext *ctx;
+     int p;
+     :
+     PGACreateIndividual(ctx, p, PGA_NEWPOP, PGA_TRUE);
+
+****************************************************************************I*/
+void PGACreateIndividual (PGAContext *ctx, int p, int pop, int initflag)
+{
+    PGAIndividual *ind = PGAGetIndividual(ctx, p, pop);
+
+    PGADebugEntered("PGACreateIndividual");
+
+    ind->evalfunc     = 0.0;
+    ind->fitness      = 0.0;
+    ind->evaluptodate = PGA_FALSE;
+    ind->UserData     = NULL;
+
+    (*ctx->cops.CreateString)(ctx, p, pop, initflag);
+    
+    PGADebugExited("PGACreateIndividual");
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/cross.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/cross.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/cross.c	(revision 6168)
@@ -0,0 +1,350 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: crossover.c: This file contains the data structure neutral
+*                        crossover routines.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGACrossover - performs crossover on two parent strings to create two
+   child strings (via side-effect).  The type of crossover performed is
+   either the default or that specified by PGASetCrossoverType
+
+   Category: Operators
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      c1 and c2 in pop2 are children of p1 and p2 in pop1.  p1 and p2 are not
+      modified.
+
+   Example:
+      Perform crossover on the two parent strings mom and dad in population
+      PGA_OLDPOP, and insert the child strings, child1 and child1, in
+      population PGA_NEWPOP.
+
+      PGAContext *ctx;
+      int mom, dad, child1, child2;
+      :
+      PGACrossover(ctx, mom, dad, PGA_OLDPOP, child1, child2, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGACrossover ( PGAContext *ctx, int p1, int p2, int pop1,
+                    int c1, int c2, int pop2 )
+{
+    int fp1, fp2, fc1, fc2;
+
+    PGADebugEntered("PGACrossover");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGACrossover", " p1 = ",
+		  PGA_INT, (void *) &p1 );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGACrossover", " p2 = ",
+		  PGA_INT, (void *) &p2 );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGACrossover", " c1 = ",
+		  PGA_INT, (void *) &c1 );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGACrossover", " c2 = ",
+		  PGA_INT, (void *) &c2 );
+
+    if (ctx->fops.Crossover) {
+	fp1 = ((p1 == PGA_TEMP1) || (p1 == PGA_TEMP2)) ? p1 : p1+1;
+	fp2 = ((p2 == PGA_TEMP1) || (p2 == PGA_TEMP2)) ? p2 : p2+1;
+	fc1 = ((c1 == PGA_TEMP1) || (c1 == PGA_TEMP2)) ? c1 : c1+1;
+	fc2 = ((c2 == PGA_TEMP1) || (c2 == PGA_TEMP2)) ? c2 : c2+1;
+	(*ctx->fops.Crossover)(&ctx, &fp1, &fp2, &pop1, &fc1, &fc2, &pop2);
+    } else {
+	(*ctx->cops.Crossover)(ctx, p1, p2, pop1, c1, c2, pop2);
+    }
+
+    PGASetEvaluationUpToDateFlag(ctx, c1, pop2, PGA_FALSE);
+    PGASetEvaluationUpToDateFlag(ctx, c2, pop2, PGA_FALSE);
+    
+    PGADebugExited("PGACrossover");
+}
+
+/*U***************************************************************************
+   PGAGetCrossoverType - Returns the type of crossover selected
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the crossover type
+
+   Example:
+      PGAContext *ctx;
+      int crosstype;
+      :
+      crosstype = PGAGetCrossoverType(ctx);
+      switch (crosstype) {
+      case PGA_CROSSOVER_ONEPT:
+          printf("Crossover Type = PGA_CROSSOVER_ONEPT\n");
+          break;
+      case PGA_CROSSOVER_TWOPT:
+          printf("Crossover Type = PGA_CROSSOVER_TWOPT\n");
+          break;
+      case PGA_CROSSOVER_UNIFORM:
+          printf("Crossover Type = PGA_CROSSOVER_UNIFORM\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetCrossoverType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetCrossoverType");
+
+    PGAFailIfNotSetUp("PGAGetCrossoverType");
+
+    PGADebugExited("PGAGetCrossoverType");
+
+    return(ctx->ga.CrossoverType);
+}
+
+/*U***************************************************************************
+   PGAGetCrossoverProb - Returns the crossover probability
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The crossover probability
+
+   Example:
+      PGAContext *ctx;
+      double pc;
+      :
+      pc = PGAGetCrossoverProb(ctx);
+
+***************************************************************************U*/
+double PGAGetCrossoverProb (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetCrossoverProb");
+
+    PGAFailIfNotSetUp("PGAGetCrossoverProb");
+
+    PGADebugExited("PGAGetCrossoverProb");
+
+    return(ctx->ga.CrossoverProb);
+}
+
+/*U***************************************************************************
+   PGAGetUniformCrossoverProb - returns the probability of a bit being
+   selected from the first child string in uniform crossover
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The uniform crossover probability
+
+   Example:
+      PGAContext *ctx;
+      double pu;
+      :
+      pu = PGAGetUniformCrossoverProb(ctx);
+
+***************************************************************************U*/
+double PGAGetUniformCrossoverProb (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetUniformCrossoverProb");
+
+    PGAFailIfNotSetUp("PGAGetUniformCrossoverProb");
+
+    PGADebugExited("PGAGetUniformCrossoverProb");
+
+    return(ctx->ga.UniformCrossProb);
+}
+
+/*U****************************************************************************
+   PGASetCrossoverType - specify the type of crossover to use. Valid choices
+   are PGA_CROSSOVER_ONEPT, PGA_CROSSOVER_TWOPT, or PGA_CROSSOVER_UNIFORM for
+   one-point, two-point, and uniform crossover, respectively.  The default is
+   PGA_CROSSOVER_TWOPT.
+
+   Category: Operators
+
+   Inputs:
+      ctx            - context variable
+      crossover_type - symbolic constant to specify crossover type
+
+   Outputs:
+      None
+
+   Example:
+      Use uniform crossover when crossingover strings.
+
+      PGAContext *ctx;
+      :
+      PGASetCrossoverType(ctx, PGA_CROSSOVER_UNIFORM);
+
+****************************************************************************U*/
+void PGASetCrossoverType (PGAContext *ctx, int crossover_type)
+{
+
+    PGADebugEntered("PGASetCrossoverType");
+
+    switch (crossover_type) {
+        case PGA_CROSSOVER_ONEPT:
+        case PGA_CROSSOVER_TWOPT:
+        case PGA_CROSSOVER_UNIFORM:
+            ctx->ga.CrossoverType = crossover_type;
+            break;
+        default:
+            PGAError( ctx,
+                     "PGASetCrossoverType: Invalid value of crossover_type:",
+                      PGA_FATAL, PGA_INT, (void *) &crossover_type );
+    };
+
+    PGADebugExited("PGASetCrossoverType");
+}
+
+
+/*U****************************************************************************
+   PGASetCrossoverProb - Probability that a selected string will undergo
+   crossover.  The default is 0.85.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      p   - the crossover probability
+
+   Outputs:
+      None
+
+   Example:
+      Make crossover happen infrequently.
+
+      PGAContext *ctx;
+      :
+      PGASetCrossoverProb(ctx,0.001);
+
+****************************************************************************U*/
+void PGASetCrossoverProb( PGAContext *ctx, double crossover_prob)
+{
+    PGADebugEntered("PGASetCrossoverProb");
+
+    if ((crossover_prob < 0.0) || (crossover_prob > 1.0))
+        PGAError ( ctx,
+                  "PGASetCrossoverProb: Invalid value of crossover_prob:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &crossover_prob);
+    else
+        ctx->ga.CrossoverProb = crossover_prob;
+
+    PGADebugExited("PGASetCrossoverProb");
+}
+
+/*U****************************************************************************
+   PGASetUniformCrossoverProb - Probability used in uniform crossover
+   to specify that an allele value value be selected from a particular
+   parent. The default is 0.6.  The crossover type must have been set
+   to PGA_CROSSOVER_UNIFORM with PGASetCrossoverType for this function
+   call to have any effect.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      p   - the crossover probability
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetUniformCrossoverProb(ctx,0.9);
+
+****************************************************************************U*/
+void PGASetUniformCrossoverProb( PGAContext *ctx, double uniform_cross_prob)
+{
+    PGADebugEntered("PGASetUniformCrossoverProb");
+
+    if ((uniform_cross_prob < 0.0) || (uniform_cross_prob > 1.0))
+        PGAError ( ctx,
+                  "PGASetUniformCrossoverProb: Invalid value of "
+                  "uniform_cross_prob:", PGA_FATAL, PGA_DOUBLE,
+                  (void *) &uniform_cross_prob);
+    else
+        ctx->ga.UniformCrossProb = uniform_cross_prob;
+
+    PGADebugExited("PGASetUniformCrossoverProb");
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/debug.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/debug.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/debug.c	(revision 6168)
@@ -0,0 +1,1573 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: debug.c: This file contains routines for debugging
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+******************************************************************************/
+
+#include "pgapack.h"
+
+/******************************************************************************
+ We need two numbering schemes:
+
+   (1) A list of debug levels (numbers) the user types to get certain types
+       of prints
+   (2) A unique integer debug value for each routine
+
+ The way this works is that the user specified debug level, which we
+ arbitrarily restrict to be an integer between 1--100, is mapped to a
+ set of actual debug values which are in the range of 101--inf
+
+ Note that the set of debuglevels we define for the user are between 0--100,
+ and that all *real* values for a routine (each routine has a debug value
+ associated with it) are > 100 and < PGA_DEBUG_NUMFLAGS
+
+  0 Trace all debug prints
+
+  1 Reserved for the user
+    :                   :
+ 10 Reserved for the user
+ 11 Trace high-level functions
+ 12 Trace all function entries
+ 13 Trace all function exits
+
+ 20 Trace high-level parallel functions
+ 21 Trace all parallel functions
+ 22 Trace all send calls (PGA_DEBUG_SEND)
+ 23 Trace all receive calls (PGA_DEBUG_RECV)
+
+ 30 Trace BINARY    functions
+ 32 Trace INTEGER   functions
+ 34 Trace REAL      functions
+ 36 Trace CHARACTER functions
+
+ 40 Trace population creation functions
+ 42 Trace select functions
+ 44 Trace mutation functions
+ 46 Trace crossover functions
+ 48 Trace function evaluation functions
+ 50 Trace fitness calculation  functions
+ 52 Trace duplicate checking functions
+ 54 Trace restart functions
+ 56 Trace reporting functions
+ 58 Trace stopping functions
+ 60 Trace sorting functions
+ 62 Trace random number functions
+ 64 Trace system routines
+ 66 Trace utility functions
+
+ 80 Trace memory allocations
+ 82 Trace variable print statements
+******************************************************************************/
+
+#if OPTIMIZE==0
+typedef struct
+{
+        char    PGAFuncName[36];
+        int     PGAFuncNum;
+} PGAFuncRec;
+
+int        PGANumFcns;
+
+PGAFuncRec PGAFuncIndex[PGA_DEBUG_MAXPGAPACKFUNCTIONS] =
+{
+/* Binary Routines 100 - 149 */
+        { "PGABinaryCreateString",          100 },
+        { "PGABinaryMutation",              101 },
+        { "PGABinaryOneptCrossover",        102 },
+        { "PGABinaryTwoptCrossover",        103 },
+        { "PGABinaryUniformCrossover",      104 },
+        { "PGABinaryPrintString",           105 },
+        { "PGABinaryCopyString",            106 },
+        { "PGABinaryDuplicate",             107 },
+        { "PGABinaryInitString",            108 },
+        { "PGABinaryBuildDatatype",         109 },
+        { "PGASetBinaryAllele",             110 },
+        { "PGAGetBinaryAllele",             111 },
+        { "PGABinaryHammingDistance",       120 },
+        { "PGABinaryPrint",                 121 },
+        { "PGAGetBinaryInitProb",           122 },
+        { "PGASetBinaryInitProb",           123 },
+
+/* Integer Routines 150 - 199 */
+        { "PGAIntegerCreateString",         150 },
+        { "PGAIntegerMutation",             151 },
+        { "PGAIntegerOneptCrossover",       152 },
+        { "PGAIntegerTwoptCrossover",       153 },
+        { "PGAIntegerUniformCrossover",     154 },
+        { "PGAIntegerPrintString",          155 },
+        { "PGAIntegerCopyString",           156 },
+        { "PGAIntegerDuplicate",            157 },
+        { "PGAIntegerInitString",           158 },
+        { "PGAIntegerBuildDatatype",        159 },
+        { "PGASetIntegerAllele",            160 },
+        { "PGAGetIntegerAllele",            161 },
+        { "PGASetIntegerInitPermute",       170 },
+        { "PGASetIntegerInitRange",         171 },
+        { "PGAGetIntegerInitType",          172 },
+        { "PGAGetMinIntegerInitValue",      173 },
+        { "PGAGetMaxIntegerInitValue",      174 },
+
+/* Real Routines 200 - 249 */
+        { "PGARealCreateString",            200 },
+        { "PGARealMutation",                201 },
+        { "PGARealOneptCrossover",          202 },
+        { "PGARealTwoptCrossover",          203 },
+        { "PGARealUniformCrossover",        204 },
+        { "PGARealPrintString",             205 },
+        { "PGARealCopyString",              206 },
+        { "PGARealDuplicate",               207 },
+        { "PGARealInitString",              208 },
+        { "PGARealBuildDatatype",           209 },
+        { "PGASetRealAllele",               210 },
+        { "PGAGetRealAllele",               211 },
+        { "PGASetRealInitPercent",          220 },
+        { "PGASetRealInitRange",            221 },
+        { "PGAGetMinRealInitValue",         222 },
+        { "PGAGetMaxRealInitValue",         223 },
+
+/* Character Routines 250 - 299 */
+        { "PGACharacterCreateString",       250 },
+        { "PGACharacterMutation",           251 },
+        { "PGACharacterOneptCrossover",     252 },
+        { "PGACharacterTwoptCrossover",     253 },
+        { "PGACharacterUniformCrossover",   254 },
+        { "PGACharacterPrintString",        255 },
+        { "PGACharacterCopyString",         256 },
+        { "PGACharacterDuplicate",          257 },
+        { "PGACharacterInitString",         258 },
+        { "PGACharacterBuildDatatype",      259 },
+        { "PGASetCharacterAllele",          260 },
+        { "PGAGetCharacterAllele",          261 },
+        { "PGASetCharacterInitType",        270 },
+
+/* Operators Routines 300 - 499 */
+        /* create.c */
+        { "PGACreate",                      300 },
+        { "PGASetUp",                       301 },
+        { "PGACreatePop",                   302 },
+        { "PGACreateIndividual",            303 },
+        { "PGAGetRandomInitFlag",           304 },
+        { "PGASetRandomInitFlag",           305 },
+
+        /* cross.c */
+        { "PGACrossover",                   310 },
+        { "PGAGetCrossoverType",            311 },
+        { "PGAGetCrossoverProb",            312 },
+        { "PGAGetUniformCrossoverProb",     313 },
+        { "PGASetCrossoverType",            314 },
+        { "PGASetCrossoverProb",            315 },
+        { "PGASetUniformCrossoverProb",     316 },
+
+        /* pop.c */
+        { "PGASortPop",                     320 },
+        { "PGAGetPopSize",                  321 },
+        { "PGAGetNumReplaceValue",          322 },
+        { "PGAGetPopReplaceType",           323 },
+        { "PGAGetSortedPopIndex",           324 },
+        { "PGASetPopSize",                  325 },
+        { "PGASetNumReplaceValue",          326 },
+        { "PGASetPopReplaceType",           327 },
+
+        /* mutation.c */
+        { "PGAMutate",                      330 },
+        { "PGAGetMutationType",             331 },
+        { "PGAGetMutationRealValue",        332 },
+        { "PGAGetMutationIntegerValue",     333 },
+        { "PGAGetMutationProb",             334 },
+        { "PGASetMutationType",             335 },
+        { "PGASetMutationRealValue",        336 },
+        { "PGASetMutationIntegerValue",     337 },
+        { "PGASetMutationProb",             338 },
+        { "PGASetMutationBoundedFlag",      400 },  /* 400--499 */
+        { "PGAGetMutationBoundedFlag",      401 },  /* 400--499 */
+
+        /* duplcate.c */
+        { "PGADuplicate",                   340 },
+        { "PGAChange",                      341 },
+        { "PGASetNoDuplicatesFlag",         342 },
+        { "PGAGetNoDuplicatesFlag",         343 },
+
+        /* pga.c */
+        { "PGARunMutationAndCrossover",     350 },
+        { "PGARunMutationOrCrossover",      351 },
+        { "PGAUpdateGeneration",            352 },
+        { "PGAGetDataType",                 353 },
+        { "PGAGetOptDirFlag",               354 },
+        { "PGAGetStringLength",             355 },
+        { "PGAGetGAIterValue",              356 },
+        { "PGAGetMutationOrCrossoverFlag",  357 },
+        { "PGAGetMutationAndCrossoverFlag", 358 },
+        { "PGASetMutationOrCrossoverFlag",  359 },
+        { "PGASetMutationAndCrossoverFlag", 360 },
+        { "PGARun",                         361 },
+
+        /* restart.c */
+        { "PGARestart",                     370 },
+        { "PGAGetRestartFlag",              371 },
+        { "PGAGetRestartFrequencyValue",    372 },
+        { "PGAGetRestartAlleleChangeProb",  373 },
+        { "PGASetRestartFlag",              374 },
+        { "PGASetRestartFrequencyValue",    375 },
+        { "PGASetRestartAlleleChangeProb",  376 },
+
+        /* select.c */
+        { "PGASelect",                      380 },
+        { "PGASelectProportional",          381 },
+        { "PGASelectSUS",                   382 },
+        { "PGASelectTournament",            383 },
+        { "PGASelectPTournament",           384 },
+        { "PGASelectNextIndex",             385 },
+        { "PGAGetSelectType",               386 },
+        { "PGAGetPTournamentProb",          387 },
+        { "PGASetSelectType",               388 },
+        { "PGASetPTournamentProb",          389 },
+
+        /* stop.c */
+        { "PGAGetStoppingRuleType",         390 },
+        { "PGASetStoppingRuleType",         391 },
+        { "PGAGetMaxGAIterValue",           392 },
+        { "PGASetMaxGAIterValue",           393 },
+        { "PGACheckStoppingConditions",     394 },
+        { "PGASetMaxNoChangeValue",         395 },
+        { "PGASetMaxSimilarityValue",       396 },
+	{ "PGADone",                        397 },
+
+/* Fitness and Evaluation Routines 500 - 599 */
+        /* evaluate.c */
+        { "PGAGetRealFromBinary",           500 },
+        { "PGAGetRealFromGrayCode",         501 },
+        { "PGAEncodeRealAsBinary",          502 },
+        { "PGAEncodeRealAsGrayCode",        503 },
+        { "PGAMapIntegerToReal",            504 },
+        { "PGAMapRealToInteger",            505 },
+        { "PGAEncodeIntegerAsBinary",       506 },
+        { "PGAEncodeIntegerAsGrayCode",     507 },
+        { "PGAGetIntegerFromBinary",        508 },
+        { "PGAGetIntegerFromGrayCode",      509 },
+        { "PGAEvaluate",                    510 },
+	{ "PGAEvaluateSeq",                 515 },
+	{ "PGAEvaluateCoop",                516 },
+	{ "PGAEvaluateSlave",               517 },
+        { "PGASetEvaluation",               511 },
+        { "PGASetEvaluationUpToDateFlag",   512 },
+        { "PGAGetEvaluation",               513 },
+        { "PGAGetEvaluationUpToDateFlag",   514 },
+
+        /* fitness.c */
+        { "PGAFitness",                     520 },
+        { "PGAFitnessLinearNormal",         521 },
+        { "PGAFitnessLinearRank",           522 },
+        { "PGAFitnessMinReciprocal",        523 },
+        { "PGAFitnessMinCmax",              524 },
+        { "PGARank",                        525 },
+        { "PGAGetFitness",                  526 },
+        { "PGAGetFitnessType",              527 },
+        { "PGAGetFitnessMinType",           528 },
+        { "PGAGetMaxFitnessRank",           529 },
+        { "PGASetFitnessType",              530 },
+        { "PGASetFitnessMinType",           531 },
+        { "PGASetMaxFitnessRank",           532 },
+        { "PGASetFitnessCmaxValue",         533 },
+        { "PGAGetFitnessCmaxValue",         534 },
+
+/* Parallel Routines 600 - 699 */
+        { "PGABuildDatatype",               600 },
+        { "PGASendIndividual",              601 },
+        { "PGAReceiveIndividual",           602 },
+        { "PGASendReceiveIndividual",       603 },
+        { "PGAEvaluateMS",                  605 },
+        { "PGAGetRank",                     607 },
+        { "PGAGetNumProcs",                 608 },
+        { "PGASetCommunicator",             609 },
+        { "PGAGetCommunicator",             610 },
+        { "PGASetNumIslands",               611 },
+        { "PGAGetNumIslands",               612 },
+        { "PGASetNumDemes",                 613 },
+        { "PGAGetNumDemes",                 614 },
+        { "PGARunGM",                       615 },
+        { "PGARunIM",                       616 },
+        { "PGARunNM",                       617 },
+
+/* System and Utility 700 - 799 */
+        /* system.c */
+        { "PGAError",                       700 },
+        { "PGAUsage",                       702 },
+        { "PGAPrintVersionNumber",          703 },
+        { "PGAGetMaxMachineIntValue",       704 },
+        { "PGAGetMinMachineIntValue",       705 },
+        { "PGAGetMaxMachineDoubleValue",    706 },
+        { "PGAGetMinMachineDoubleValue",    707 },
+        { "PGADestroy",                     708 },
+
+        /* utility.c */
+        { "PGAMean",                        710 },
+        { "PGAStddev",                      711 },
+        { "PGACopyIndividual",              712 },
+        { "PGARound",                       713 },
+        { "PGACheckSum",                    714 },
+        { "PGAGetWorstIndex",               715 },
+        { "PGAGetBestIndex",                716 },
+        { "PGAGetIndividual",               717 },
+        { "PGAUpdateAverage",               718 },
+        { "PGAUpdateOnline",                719 },
+        { "PGAUpdateOffline",               720 },
+        { "PGAComputeSimilarity",           721 },
+
+        /* cmdline.c */
+        { "PGAReadCmdLine",                 730 },
+        { "PGAParseDebugArg",               731 },
+        { "PGAStripArgs",                   732 },
+
+        /* debug.c */
+        { "PGADebugPrint",                  740 },
+        { "PGAGetDebugFlag",                741 },
+        { "PGAPrintDebugOptions",           743 },
+        { "PGASetDebugLevel",               744 },
+
+        /* random.c */
+        { "PGARandomFlip",                  750 },
+        { "PGARandomInterval",              751 },
+        { "PGARandom01",                    752 },
+        { "PGARandomUniform",               753 },
+        { "PGARandomGaussian",              754 },
+        { "PGAGetRandomSeed",               755 },
+        { "PGASetRandomSeed",               756 },
+
+/* Miscellaneous Routines 800 - 899 */
+        /* hamming.c */
+        { "PGAHammingDistance",             800 },
+
+        /* heap.c */
+        { "PGADblHeapSort",                 810 },
+        { "PGADblHeapify",                  811 },
+        { "PGADblAdjustHeap",               812 },
+        { "PGAIntHeapSort",                 813 },
+        { "PGAIntHeapify",                  814 },
+        { "PGAIntAdjustHeap",               815 },
+
+        /* report.c */
+        { "PGAPrintPopulation",             820 },
+        { "PGAPrintIndividual",             821 },
+        { "PGAPrintReport",                 822 },
+        { "PGAPrintContextVariable",        823 },
+        { "PGAPrintString",                 824 },
+        { "PGAGetPrintFrequencyValue",      825 },
+        { "PGASetPrintFrequencyValue",      826 },
+        { "PGASetPrintOptions",             827 },
+
+        /* user.c */
+        { "PGASetUserFunction",             830 }
+};
+
+
+/*I****************************************************************************
+   PGASortDebugIndex - Sort the index of function names alphabetically.
+
+   Inputs:
+
+   Output:
+
+   Example:
+
+****************************************************************************I*/
+void PGASortFuncNameIndex(PGAContext *ctx)
+{
+
+    /*  See how many functions are in the index */
+    for (PGANumFcns=0; PGAFuncIndex[PGANumFcns].PGAFuncName[0]; PGANumFcns++) ;
+
+    qsort(PGAFuncIndex, PGANumFcns, sizeof(PGAFuncRec),
+	  (int (*) (const void *, const void *)) &strcmp);
+}
+
+
+/*U****************************************************************************
+  PGADebugPrint - Write debugging information
+
+  Category: Debugging
+
+  Inputs:
+     ctx       - context variable
+     level     - a symbolic constant that maps to the type of print requested
+                 (e.g., an entry or exit print).  Valid values are
+                 PGA_DEBUG_ENTERED, PGA_DEBUG_EXIT, PGA_DEBUG_MALLOC,
+                 PGA_DEBUG_PRINTVAR, PGA_DEBUG_SEND, and PGA_DEBUG_RECV.
+     funcname  - the name of the function that called this routine
+     msg       - message to print
+     datatype  - a symbolic constant that maps to the data type of the
+                 parameter data.  Valid choices are PGA_INT, PGA_DOUBLE,
+                 PGA_CHAR and PGA_VOID (no data).
+     data      - a pointer, whose contents will be interpreted based upon the
+                 datatype parameter (or NULL, if PGA_VOID).
+
+  Outputs:
+     The debugging information is printed to stderr.
+
+  Example:
+     If the debugging level includes printing variables (level 82), print the
+     value of the integer variable num as a debugging tool in the routine
+     Add2Nums
+
+     PGAContext *ctx;
+     int num;
+     :
+     PGADebugPrint(ctx, PGA_DEBUG_PRINTVAR, "Add2Nums", "num = ", PGA_INT,
+                   (void *) &num);
+
+****************************************************************************U*/
+void PGADebugPrint( PGAContext *ctx, int level, char *funcname,
+                   char *msg, int datatype, void *data )
+{
+     int rank;
+
+     /*  Added check if level > 10 so that PGAGetDebugFlag is only called
+      *  if it is _not_ a user debug level.
+      */
+
+     if (ctx->debug.PGADebugFlags[0]     ||
+         ctx->debug.PGADebugFlags[level] ||
+         ((level > 10) && PGAGetDebugFlag (ctx, funcname)))
+     {
+          MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+          switch (datatype)
+          {
+          case PGA_VOID:
+               fprintf(stdout, "%4d: %-32s: %s\n", rank, funcname, msg);
+               break;
+          case PGA_INT:
+               switch (*(int *) data)
+               {
+               case PGA_TEMP1:
+                    fprintf(stdout, "%4d: %-32s: %s PGA_TEMP1\n", rank,
+                            funcname, msg);
+                    break;
+               case PGA_TEMP2:
+                    fprintf(stdout, "%4d: %-32s: %s PGA_TEMP2\n", rank,
+                            funcname, msg);
+                    break;
+               case PGA_OLDPOP:
+                    fprintf(stdout, "%4d: %-32s: %s PGA_OLDPOP\n", rank,
+                            funcname, msg);
+                    break;
+               case PGA_NEWPOP:
+                    fprintf(stdout, "%4d: %-32s: %s PGA_NEWPOP\n", rank,
+                            funcname, msg);
+                    break;
+               default:
+                    fprintf(stdout, "%4d: %-32s: %s %d\n", rank, funcname, msg,
+                            *(int *) data);
+                    break;
+               }
+               break;
+          case PGA_DOUBLE:
+               fprintf(stdout, "%4d: %-32s: %s %e\n", rank,
+                       funcname, msg, *(double *) data);
+               break;
+          case PGA_CHAR:
+               fprintf(stdout, "%4d: %-32s: %s %s\n", rank,
+                       funcname, msg,  (char *) data);
+               break;
+          default:
+               fprintf(stderr, "PGADebugPrint: Invalid value of datatype: %d",
+                       datatype);
+               exit(-1);
+               break;
+          }
+     }
+}
+
+/*U****************************************************************************
+   PGASetDebugLevel - Turn on a debug level.  Only valid if PGAPack
+   was compiled to include debugging calls.  See the user guide for details.
+
+   Category: Debugging
+
+   Inputs:
+      ctx   - context variable
+      level - the debug level to set to PGA_TRUE.
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetDebugLevel(ctx, 70)
+
+****************************************************************************U*/
+void PGASetDebugLevel(PGAContext *ctx, int level)
+{
+    if ((level < 11) || (level > 100)) {
+        ctx->debug.PGADebugFlags[level] = PGA_TRUE;
+    } else {
+        /*  Call the appropriate routine to clear the set of levels.  */
+        switch (level) {
+        case 11:  PGASetDebugFlag11(ctx, PGA_TRUE); break;
+        case 20:  PGASetDebugFlag20(ctx, PGA_TRUE); break;
+        case 21:  PGASetDebugFlag21(ctx, PGA_TRUE); break;
+        case 30:  PGASetDebugFlag30(ctx, PGA_TRUE); break;
+        case 32:  PGASetDebugFlag32(ctx, PGA_TRUE); break;
+        case 34:  PGASetDebugFlag34(ctx, PGA_TRUE); break;
+        case 36:  PGASetDebugFlag36(ctx, PGA_TRUE); break;
+        case 40:  PGASetDebugFlag40(ctx, PGA_TRUE); break;
+        case 42:  PGASetDebugFlag42(ctx, PGA_TRUE); break;
+        case 44:  PGASetDebugFlag44(ctx, PGA_TRUE); break;
+        case 46:  PGASetDebugFlag46(ctx, PGA_TRUE); break;
+        case 48:  PGASetDebugFlag48(ctx, PGA_TRUE); break;
+        case 50:  PGASetDebugFlag50(ctx, PGA_TRUE); break;
+        case 52:  PGASetDebugFlag52(ctx, PGA_TRUE); break;
+        case 54:  PGASetDebugFlag54(ctx, PGA_TRUE); break;
+        case 56:  PGASetDebugFlag56(ctx, PGA_TRUE); break;
+        case 58:  PGASetDebugFlag58(ctx, PGA_TRUE); break;
+        case 60:  PGASetDebugFlag60(ctx, PGA_TRUE); break;
+        case 62:  PGASetDebugFlag62(ctx, PGA_TRUE); break;
+        case 64:  PGASetDebugFlag64(ctx, PGA_TRUE); break;
+        case 66:  PGASetDebugFlag66(ctx, PGA_TRUE); break;
+        }
+    }
+}
+
+/*U****************************************************************************
+   PGAClearDebugLevel - Turn off a debul level.  Only valid if PGAPack
+   was compiled to include debugging calls.  See the user guide for details.
+
+   Category: Debugging
+
+   Inputs:
+      ctx   - context variable
+      level - the debug level to set to PGA_FALSE.
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGAClearDebugLevel(ctx, 70)
+
+****************************************************************************U*/
+void PGAClearDebugLevel(PGAContext *ctx, int level)
+{
+    if ((level < 11) || (level > 100)) {
+        ctx->debug.PGADebugFlags[level] = PGA_FALSE;
+    } else {
+        /*  Call the appropriate routine to clear the set of levels.  */
+        switch (level) {
+        case 11:  PGASetDebugFlag11(ctx, PGA_FALSE); break;
+        case 20:  PGASetDebugFlag20(ctx, PGA_FALSE); break;
+        case 21:  PGASetDebugFlag21(ctx, PGA_FALSE); break;
+        case 30:  PGASetDebugFlag30(ctx, PGA_FALSE); break;
+        case 32:  PGASetDebugFlag32(ctx, PGA_FALSE); break;
+        case 34:  PGASetDebugFlag34(ctx, PGA_FALSE); break;
+        case 36:  PGASetDebugFlag36(ctx, PGA_FALSE); break;
+        case 40:  PGASetDebugFlag40(ctx, PGA_FALSE); break;
+        case 42:  PGASetDebugFlag42(ctx, PGA_FALSE); break;
+        case 44:  PGASetDebugFlag44(ctx, PGA_FALSE); break;
+        case 46:  PGASetDebugFlag46(ctx, PGA_FALSE); break;
+        case 48:  PGASetDebugFlag48(ctx, PGA_FALSE); break;
+        case 50:  PGASetDebugFlag50(ctx, PGA_FALSE); break;
+        case 52:  PGASetDebugFlag52(ctx, PGA_FALSE); break;
+        case 54:  PGASetDebugFlag54(ctx, PGA_FALSE); break;
+        case 56:  PGASetDebugFlag56(ctx, PGA_FALSE); break;
+        case 58:  PGASetDebugFlag58(ctx, PGA_FALSE); break;
+        case 60:  PGASetDebugFlag60(ctx, PGA_FALSE); break;
+        case 62:  PGASetDebugFlag62(ctx, PGA_FALSE); break;
+        case 64:  PGASetDebugFlag64(ctx, PGA_FALSE); break;
+        case 66:  PGASetDebugFlag66(ctx, PGA_FALSE); break;
+        }
+    }
+}
+
+/*U****************************************************************************
+   PGASetDebugLevelByName - Turn on debugging of the named function.
+
+   Category: Debugging
+
+   Inputs:
+       ctx        - context variable
+       funcname   - name of the function to turn on debugging output
+
+   Outputs:
+
+   Example:
+       PGAContext *ctx;
+       :
+       PGASetDebugLevelByName(ctx, "PGAGetBinaryAllele");
+
+****************************************************************************U*/
+void PGASetDebugLevelByName(PGAContext *ctx, char *funcname)
+{
+    int  level;
+
+    level = PGAGetDebugLevelOfName(ctx, funcname);
+    ctx->debug.PGADebugFlags[level] = PGA_TRUE;
+}
+
+/*U****************************************************************************
+   PGAClearDebugLevelByName - Turn off debugging of the named function.
+
+   Category: Debugging
+
+   Inputs:
+       ctx        - context variable
+       funcname   - name of the function to turn on debugging output
+
+   Outputs:
+
+   Example:
+       PGAContext *ctx;
+       :
+       PGAClearDebugLevelByName(ctx, "PGAGetBinaryAllele");
+
+****************************************************************************U*/
+void PGAClearDebugLevelByName(PGAContext *ctx, char *funcname)
+{
+    int  level;
+
+    level = PGAGetDebugLevelOfName(ctx, funcname);
+    ctx->debug.PGADebugFlags[level] = PGA_FALSE;
+}
+
+
+/*I****************************************************************************
+   PGAGetDebugLevelOfName - returns the debug level of the named function
+   Internally, it performs a binary search on the run-time sorted list of
+   fucntions in PGAFuncIndex.
+
+   Inputs:
+       ctx       - context variable
+       funcname  - the name of the function
+
+   Outputs:
+       The debug level value of the function.  That is, PGAFuncNum associated
+       with funcname in PGAFuncIndex.
+
+   Example:
+
+
+****************************************************************************I*/
+int PGAGetDebugLevelOfName(PGAContext *ctx, char *funcname)
+{
+    int     l, h;
+    int     m, missing;
+
+    /*  Binary Search  */
+    l = 0;
+    h = PGANumFcns-1;
+    while (l <= h) {
+	m = (l+h)/2 + (l+h)%2;  /*  Actually, floor((l+h)/2)  */
+	missing = strcmp(funcname, PGAFuncIndex[m].PGAFuncName);
+
+        if (missing == 0) {
+            break;
+        } else {
+            if (missing < 0) {
+                h = m - 1;
+            } else {
+                l = m + 1;
+            }
+        }
+    }
+
+    if (missing) {
+	fprintf(stderr, "PGAGetDebugFlag: Function missing from "
+		"PGAFuncIndex: '%s'\n", funcname);
+	PGADestroy(ctx);
+	exit(-1);
+    } 
+
+    return(PGAFuncIndex[m].PGAFuncNum);
+}
+
+/*I****************************************************************************
+  PGAGetDebugFlag - checks whether the flag to do a debug print in routine
+  funcname has been set.  Returns PGA_TRUE if so, otherwise PGA_FALSE.
+  If the name is not in the function name database, an error message is
+  printed and the program terminates.
+
+  Inputs:
+     ctx      - context variable
+     funcname - name of the function in question
+
+  Outputs:
+
+  Example:
+     PGAContext *ctx;
+     int IsItSet;
+
+     IsItSet = PGAGetDebugFlag(ctx, "PGAGetDebugFlags");
+
+****************************************************************************I*/
+int PGAGetDebugFlag(PGAContext *ctx, char *funcname)
+{
+     int level;
+
+     level = PGAGetDebugLevelOfName(ctx, funcname);
+     return ctx->debug.PGADebugFlags[level];
+}
+
+
+/*I****************************************************************************
+   PGASetDebugFlag11 - Set the debug flags for all functions at debug level 11
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag11(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[300] = Flag; /*PGACreate*/
+   ctx->debug.PGADebugFlags[301] = Flag; /*PGASetUp*/
+   ctx->debug.PGADebugFlags[304] = Flag; /*PGAGetRandomInitFlag*/
+   ctx->debug.PGADebugFlags[305] = Flag; /*PGASetRandomInitFlag*/
+
+   ctx->debug.PGADebugFlags[310] = Flag; /*PGACrossover*/
+   ctx->debug.PGADebugFlags[311] = Flag; /*PGAGetCrossoverType*/
+   ctx->debug.PGADebugFlags[312] = Flag; /*PGAGetCrossoverProb*/
+   ctx->debug.PGADebugFlags[313] = Flag; /*PGAGetUniformCrossoverProb*/
+   ctx->debug.PGADebugFlags[314] = Flag; /*PGASetCrossoverType*/
+   ctx->debug.PGADebugFlags[315] = Flag; /*PGASetCrossoverProb*/
+   ctx->debug.PGADebugFlags[316] = Flag; /*PGASetUniformCrossoverProb*/
+
+   ctx->debug.PGADebugFlags[320] = Flag; /*PGASort*/
+   ctx->debug.PGADebugFlags[321] = Flag; /*PGAGetPopSize*/
+   ctx->debug.PGADebugFlags[322] = Flag; /*PGAGetNumReplaceValue*/
+   ctx->debug.PGADebugFlags[323] = Flag; /*PGAGetPopReplaceType*/
+   ctx->debug.PGADebugFlags[325] = Flag; /*PGASetPopSize*/
+   ctx->debug.PGADebugFlags[326] = Flag; /*PGASetNumReplaceValue*/
+   ctx->debug.PGADebugFlags[327] = Flag; /*PGASetPopReplaceType*/
+
+   ctx->debug.PGADebugFlags[330] = Flag; /*PGAMutate*/
+   ctx->debug.PGADebugFlags[331] = Flag; /*PGAGetMutationType*/
+   ctx->debug.PGADebugFlags[332] = Flag; /*PGAGetMutationRealValue*/
+   ctx->debug.PGADebugFlags[333] = Flag; /*PGAGetMutationIntegerValue*/
+   ctx->debug.PGADebugFlags[334] = Flag; /*PGAGetMutationProb*/
+   ctx->debug.PGADebugFlags[335] = Flag; /*PGASetMutationType*/
+   ctx->debug.PGADebugFlags[336] = Flag; /*PGASetMutationRealValue*/
+   ctx->debug.PGADebugFlags[337] = Flag; /*PGASetMutationIntegerValue*/
+   ctx->debug.PGADebugFlags[338] = Flag; /*PGASetMutationProb*/
+   ctx->debug.PGADebugFlags[400] = Flag; /*PGASetMutationBoundedFlag*/
+   ctx->debug.PGADebugFlags[401] = Flag; /*PGAGetMutationBoundedFlag*/
+
+   ctx->debug.PGADebugFlags[340] = Flag; /*PGADuplicate*/
+   ctx->debug.PGADebugFlags[341] = Flag; /*PGAChange*/
+   ctx->debug.PGADebugFlags[342] = Flag; /*PGASetNoDuplicatesFlag*/
+   ctx->debug.PGADebugFlags[343] = Flag; /*PGAGetNoDuplicatesFlag*/
+
+   ctx->debug.PGADebugFlags[350] = Flag; /*PGARunMutationAndCrossover*/
+   ctx->debug.PGADebugFlags[351] = Flag; /*PGARunMutationOrCrossover*/
+   ctx->debug.PGADebugFlags[352] = Flag; /*PGAUpdateGeneration*/
+   ctx->debug.PGADebugFlags[353] = Flag; /*PGAGetDataType*/
+   ctx->debug.PGADebugFlags[354] = Flag; /*PGAGetOptDirFlag*/
+   ctx->debug.PGADebugFlags[355] = Flag; /*PGAGetStringLength*/
+   ctx->debug.PGADebugFlags[356] = Flag; /*PGAGetGAIterValue*/
+   ctx->debug.PGADebugFlags[357] = Flag; /*PGAGetMutationOrCrossoverFlag*/
+   ctx->debug.PGADebugFlags[358] = Flag; /*PGAGetMutationAndCrossoverFlag*/
+   ctx->debug.PGADebugFlags[359] = Flag; /*PGASetMutationOrCrossoverFlag*/
+   ctx->debug.PGADebugFlags[360] = Flag; /*PGASetMutationAndCrossoverFlag*/
+   ctx->debug.PGADebugFlags[361] = Flag; /*PGARun*/
+
+   ctx->debug.PGADebugFlags[370] = Flag; /*PGARestart*/
+   ctx->debug.PGADebugFlags[371] = Flag; /*PGAGetRestartFlag*/
+   ctx->debug.PGADebugFlags[372] = Flag; /*PGAGetRestartFrequencyValue*/
+   ctx->debug.PGADebugFlags[373] = Flag; /*PGAGetRestartAlleleChangeProb*/
+   ctx->debug.PGADebugFlags[374] = Flag; /*PGASetRestartFlag*/
+   ctx->debug.PGADebugFlags[375] = Flag; /*PGASetRestartFrequencyValue*/
+   ctx->debug.PGADebugFlags[376] = Flag; /*PGASetRestartAlleleChangeProb*/
+
+   ctx->debug.PGADebugFlags[380] = Flag; /*PGASelect*/
+   ctx->debug.PGADebugFlags[386] = Flag; /*PGAGetSelectType*/
+   ctx->debug.PGADebugFlags[387] = Flag; /*PGAGetPTournamentProb*/
+   ctx->debug.PGADebugFlags[388] = Flag; /*PGASetSelectType*/
+   ctx->debug.PGADebugFlags[389] = Flag; /*PGASetPTournamentProb*/
+
+   ctx->debug.PGADebugFlags[390] = Flag; /*PGAGetStoppingRuleType*/
+   ctx->debug.PGADebugFlags[391] = Flag; /*PGASetStoppingRuleType*/
+   ctx->debug.PGADebugFlags[392] = Flag; /*PGAGetMaxGAIterValue*/
+   ctx->debug.PGADebugFlags[393] = Flag; /*PGASetMaxGAIterValue*/
+   ctx->debug.PGADebugFlags[394] = Flag; /*PGACheckStoppingConditions*/
+   ctx->debug.PGADebugFlags[395] = Flag; /*PGASetMaxNoChangeValue*/
+   ctx->debug.PGADebugFlags[396] = Flag; /*PGASetMaxSimilarityValue*/
+   ctx->debug.PGADebugFlags[397] = Flag; /*PGADone*/
+
+   ctx->debug.PGADebugFlags[510] = Flag; /*PGAEvaluate*/
+
+   ctx->debug.PGADebugFlags[520] = Flag; /*PGAFitness*/
+   ctx->debug.PGADebugFlags[527] = Flag; /*PGAGetFitnessType*/
+   ctx->debug.PGADebugFlags[528] = Flag; /*PGAGetFitnessMinType*/
+   ctx->debug.PGADebugFlags[529] = Flag; /*PGAGetMaxFitnessRank*/
+   ctx->debug.PGADebugFlags[530] = Flag; /*PGASetFitnessType*/
+   ctx->debug.PGADebugFlags[531] = Flag; /*PGASetFitnessMinType*/
+   ctx->debug.PGADebugFlags[532] = Flag; /*PGASetMaxFitnessRank*/
+   ctx->debug.PGADebugFlags[533] = Flag; /*PGASetFitnessCmaxValue*/
+   ctx->debug.PGADebugFlags[534] = Flag; /*PGAGetFitnessCmaxValue*/
+
+   ctx->debug.PGADebugFlags[604] = Flag; /*PGARunMS*/
+   ctx->debug.PGADebugFlags[605] = Flag; /*PGAEvaluateMS*/
+   ctx->debug.PGADebugFlags[606] = Flag; /*PGAEvaluateDoneMS*/
+   ctx->debug.PGADebugFlags[607] = Flag; /*PGAGetRank*/
+   ctx->debug.PGADebugFlags[608] = Flag; /*PGAGetNumProcs*/
+   ctx->debug.PGADebugFlags[609] = Flag; /*PGASetCommunicator*/
+   ctx->debug.PGADebugFlags[610] = Flag; /*PGAGetCommunicator*/
+   ctx->debug.PGADebugFlags[611] = Flag; /*PGASetNumIslands*/
+   ctx->debug.PGADebugFlags[612] = Flag; /*PGAGetNumIslands*/
+   ctx->debug.PGADebugFlags[613] = Flag; /*PGASetNumDemes*/
+   ctx->debug.PGADebugFlags[614] = Flag; /*PGAGetNumDemes*/
+   ctx->debug.PGADebugFlags[615] = Flag; /*PGARunSeq*/
+   ctx->debug.PGADebugFlags[616] = Flag; /*PGARunIM*/
+   ctx->debug.PGADebugFlags[617] = Flag; /*PGARunNM*/
+
+   ctx->debug.PGADebugFlags[700] = Flag; /*PGAError*/
+   ctx->debug.PGADebugFlags[702] = Flag; /*PGAUsage*/
+   ctx->debug.PGADebugFlags[703] = Flag; /*PGAPrintVersionNumber*/
+   ctx->debug.PGADebugFlags[704] = Flag; /*PGAGetMaxMachineIntValue*/
+   ctx->debug.PGADebugFlags[705] = Flag; /*PGAGetMinMachineIntValue*/
+   ctx->debug.PGADebugFlags[706] = Flag; /*PGAGetMaxMachineRealValue*/
+   ctx->debug.PGADebugFlags[707] = Flag; /*PGAGetMinMachineRealValue*/
+   ctx->debug.PGADebugFlags[708] = Flag; /*PGADestroy*/
+
+   ctx->debug.PGADebugFlags[741] = Flag; /*PGAGetDebugFlag*/
+   ctx->debug.PGADebugFlags[742] = Flag; /*PGASetDebugFlag*/
+   ctx->debug.PGADebugFlags[743] = Flag; /*PGAPrintDebugOptions*/
+
+   ctx->debug.PGADebugFlags[800] = Flag; /*PGAHammingDistance*/
+
+   ctx->debug.PGADebugFlags[820] = Flag; /*PGAPrintPopulation*/
+   ctx->debug.PGADebugFlags[822] = Flag; /*PGAPrintReport*/
+   ctx->debug.PGADebugFlags[823] = Flag; /*PGAContextVariable*/
+   ctx->debug.PGADebugFlags[825] = Flag; /*PGAGetPrintFrequencyValue*/
+   ctx->debug.PGADebugFlags[826] = Flag; /*PGASetPrintFrequencyValue*/
+   ctx->debug.PGADebugFlags[827] = Flag; /*PGASetPrintOptions*/
+
+   ctx->debug.PGADebugFlags[830] = Flag; /*PGASetUserFunction*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag20 - Set the debug flags for all functions at debug level 20
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag20(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[604] = Flag; /*PGARunMS*/
+   ctx->debug.PGADebugFlags[605] = Flag; /*PGAEvaluateMS*/
+   ctx->debug.PGADebugFlags[606] = Flag; /*PGAEvaluateDoneMS*/
+   ctx->debug.PGADebugFlags[607] = Flag; /*PGAGetRank*/
+   ctx->debug.PGADebugFlags[608] = Flag; /*PGAGetNumProcs*/
+   ctx->debug.PGADebugFlags[609] = Flag; /*PGASetCommunicator*/
+   ctx->debug.PGADebugFlags[610] = Flag; /*PGAGetCommunicator*/
+   ctx->debug.PGADebugFlags[611] = Flag; /*PGASetNumIslands*/
+   ctx->debug.PGADebugFlags[612] = Flag; /*PGAGetNumIslands*/
+   ctx->debug.PGADebugFlags[613] = Flag; /*PGASetNumDemes*/
+   ctx->debug.PGADebugFlags[614] = Flag; /*PGAGetNumDemes*/
+   ctx->debug.PGADebugFlags[616] = Flag; /*PGARunIM*/
+   ctx->debug.PGADebugFlags[617] = Flag; /*PGARunNM*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag21 - Set the debug flags for all functions at debug level 21
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag21(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[600] = Flag; /*PGABuildDataType*/
+   ctx->debug.PGADebugFlags[601] = Flag; /*PGASendIndividual*/
+   ctx->debug.PGADebugFlags[602] = Flag; /*PGAReceiveIndividual*/
+   ctx->debug.PGADebugFlags[603] = Flag; /*PGASendReceiveIndividual*/
+   ctx->debug.PGADebugFlags[604] = Flag; /*PGARunMS*/
+   ctx->debug.PGADebugFlags[605] = Flag; /*PGAEvaluateMS*/
+   ctx->debug.PGADebugFlags[606] = Flag; /*PGAEvaluateDoneMS*/
+   ctx->debug.PGADebugFlags[607] = Flag; /*PGAGetRank*/
+   ctx->debug.PGADebugFlags[608] = Flag; /*PGAGetNumProcs*/
+   ctx->debug.PGADebugFlags[609] = Flag; /*PGASetCommunicator*/
+   ctx->debug.PGADebugFlags[610] = Flag; /*PGAGetCommunicator*/
+   ctx->debug.PGADebugFlags[611] = Flag; /*PGASetNumIslands*/
+   ctx->debug.PGADebugFlags[612] = Flag; /*PGAGetNumIslands*/
+   ctx->debug.PGADebugFlags[613] = Flag; /*PGASetNumDemes*/
+   ctx->debug.PGADebugFlags[614] = Flag; /*PGAGetNumDemes*/
+   ctx->debug.PGADebugFlags[616] = Flag; /*PGARunIM*/
+   ctx->debug.PGADebugFlags[617] = Flag; /*PGARunNM*/
+   ctx->debug.PGADebugFlags[714] = Flag; /*PGACheckSum*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag30 - Set the debug flags for all functions at debug level 30
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag30(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[100] = Flag; /*PGABinaryCreateString*/
+   ctx->debug.PGADebugFlags[101] = Flag; /*PGABinaryMutation*/
+   ctx->debug.PGADebugFlags[102] = Flag; /*PGABinaryOneptCrossover*/
+   ctx->debug.PGADebugFlags[103] = Flag; /*PGABinaryTwoptCrossover*/
+   ctx->debug.PGADebugFlags[104] = Flag; /*PGABinaryUniformCrossover*/
+   ctx->debug.PGADebugFlags[105] = Flag; /*PGABinaryPrintString*/
+   ctx->debug.PGADebugFlags[106] = Flag; /*PGABinaryCopyString*/
+   ctx->debug.PGADebugFlags[107] = Flag; /*PGABinaryDuplicate*/
+   ctx->debug.PGADebugFlags[108] = Flag; /*PGABinaryInitString*/
+   ctx->debug.PGADebugFlags[109] = Flag; /*PGABinaryBuildDatatype*/
+   ctx->debug.PGADebugFlags[110] = Flag; /*PGASetBinaryAllele*/
+   ctx->debug.PGADebugFlags[111] = Flag; /*PGAGetBinaryAllele*/
+   ctx->debug.PGADebugFlags[120] = Flag; /*PGABinaryHammingDistance*/
+   ctx->debug.PGADebugFlags[121] = Flag; /*PGABinaryPrint*/
+   ctx->debug.PGADebugFlags[122] = Flag; /*PGAGetBinaryInitProb*/
+   ctx->debug.PGADebugFlags[123] = Flag; /*PGASetBinaryInitProb*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag32 - Set the debug flags for all functions at debug level 32
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag32(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[150] = Flag; /*PGAIntegerCreateString*/
+   ctx->debug.PGADebugFlags[151] = Flag; /*PGAIntegerMutation*/
+   ctx->debug.PGADebugFlags[152] = Flag; /*PGAIntegerOneptCrossover*/
+   ctx->debug.PGADebugFlags[153] = Flag; /*PGAIntegerTwoptCrossover*/
+   ctx->debug.PGADebugFlags[154] = Flag; /*PGAIntegerUniformCrossover*/
+   ctx->debug.PGADebugFlags[155] = Flag; /*PGAIntegerPrintString*/
+   ctx->debug.PGADebugFlags[156] = Flag; /*PGAIntegerCopyString*/
+   ctx->debug.PGADebugFlags[157] = Flag; /*PGAIntegerDuplicate*/
+   ctx->debug.PGADebugFlags[158] = Flag; /*PGAIntegerInitString*/
+   ctx->debug.PGADebugFlags[159] = Flag; /*PGAIntegerBuildDatatype*/
+   ctx->debug.PGADebugFlags[160] = Flag; /*PGASetIntegerAllele*/
+   ctx->debug.PGADebugFlags[161] = Flag; /*PGAGetIntegerAllele*/
+   ctx->debug.PGADebugFlags[170] = Flag; /*PGASetIntegerInitPermute*/
+   ctx->debug.PGADebugFlags[171] = Flag; /*PGASetIntegerInitRange*/
+   ctx->debug.PGADebugFlags[172] = Flag; /*PGAGetIntegerInitType*/
+   ctx->debug.PGADebugFlags[173] = Flag; /*PGAGetMinIntegerInitValue*/
+   ctx->debug.PGADebugFlags[174] = Flag; /*PGAGetMaxIntegerInitValue*/
+   ctx->debug.PGADebugFlags[400] = Flag; /*PGASetMutationBoundedFlag*/
+   ctx->debug.PGADebugFlags[401] = Flag; /*PGAGetMutationBoundedFlag*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag34 - Set the debug flags for all functions at debug level 34
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag34(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[200] = Flag; /*PGARealCreateString*/
+   ctx->debug.PGADebugFlags[201] = Flag; /*PGARealMutation*/
+   ctx->debug.PGADebugFlags[202] = Flag; /*PGARealOneptCrossover*/
+   ctx->debug.PGADebugFlags[203] = Flag; /*PGARealTwoptCrossover*/
+   ctx->debug.PGADebugFlags[204] = Flag; /*PGARealUniformCrossover*/
+   ctx->debug.PGADebugFlags[205] = Flag; /*PGARealPrintString*/
+   ctx->debug.PGADebugFlags[206] = Flag; /*PGARealCopyString*/
+   ctx->debug.PGADebugFlags[207] = Flag; /*PGARealDuplicate*/
+   ctx->debug.PGADebugFlags[208] = Flag; /*PGARealInitString*/
+   ctx->debug.PGADebugFlags[209] = Flag; /*PGARealBuildDatatype*/
+   ctx->debug.PGADebugFlags[210] = Flag; /*PGASetRealAllele*/
+   ctx->debug.PGADebugFlags[211] = Flag; /*PGAGetRealAllele*/
+   ctx->debug.PGADebugFlags[220] = Flag; /*PGASetRealInitPercent*/
+   ctx->debug.PGADebugFlags[221] = Flag; /*PGASetRealInitRange*/
+   ctx->debug.PGADebugFlags[222] = Flag; /*PGAGetMinRealInitValue*/
+   ctx->debug.PGADebugFlags[223] = Flag; /*PGAGetMaxRealInitValue*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag36 - Set the debug flags for all functions at debug level 36
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag36(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[250] = Flag; /*PGACharacterCreateString*/
+   ctx->debug.PGADebugFlags[251] = Flag; /*PGACharacterMutation*/
+   ctx->debug.PGADebugFlags[252] = Flag; /*PGACharacterOneptCrossover*/
+   ctx->debug.PGADebugFlags[253] = Flag; /*PGACharacterTwoptCrossover*/
+   ctx->debug.PGADebugFlags[254] = Flag; /*PGACharacterUniformCrossover*/
+   ctx->debug.PGADebugFlags[255] = Flag; /*PGACharacterPrintString*/
+   ctx->debug.PGADebugFlags[256] = Flag; /*PGACharacterCopyString*/
+   ctx->debug.PGADebugFlags[257] = Flag; /*PGACharacterDuplicate*/
+   ctx->debug.PGADebugFlags[258] = Flag; /*PGACharacterInitString*/
+   ctx->debug.PGADebugFlags[259] = Flag; /*PGACharacterBuildDatatype*/
+   ctx->debug.PGADebugFlags[260] = Flag; /*PGASetCharacterAllele*/
+   ctx->debug.PGADebugFlags[261] = Flag; /*PGAGetCharacterAllele*/
+   ctx->debug.PGADebugFlags[270] = Flag; /*PGASetCharacterInitType*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag40 - Set the debug flags for all functions at debug level 40
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag40(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[100] = Flag; /*PGABinaryCreateString*/
+   ctx->debug.PGADebugFlags[108] = Flag; /*PGABinaryInitString*/
+   ctx->debug.PGADebugFlags[122] = Flag; /*PGAGetBinaryInitProb*/
+   ctx->debug.PGADebugFlags[123] = Flag; /*PGASetBinaryInitProb*/
+   ctx->debug.PGADebugFlags[250] = Flag; /*PGACharacterCreateString*/
+   ctx->debug.PGADebugFlags[258] = Flag; /*PGACharacterInitString*/
+   ctx->debug.PGADebugFlags[270] = Flag; /*PGASetCharacterInitType*/
+   ctx->debug.PGADebugFlags[300] = Flag; /*PGACreate*/
+   ctx->debug.PGADebugFlags[301] = Flag; /*PGASetUp*/
+   ctx->debug.PGADebugFlags[302] = Flag; /*PGACreatePop*/
+   ctx->debug.PGADebugFlags[303] = Flag; /*PGACreateIndividual*/
+   ctx->debug.PGADebugFlags[304] = Flag; /*PGAGetRandomInitFlag*/
+   ctx->debug.PGADebugFlags[305] = Flag; /*PGASetRandomInitFlag*/
+   ctx->debug.PGADebugFlags[150] = Flag; /*PGAIntegerCreateString*/
+   ctx->debug.PGADebugFlags[158] = Flag; /*PGAIntegerInitString*/
+   ctx->debug.PGADebugFlags[170] = Flag; /*PGASetIntegerInitPermute*/
+   ctx->debug.PGADebugFlags[171] = Flag; /*PGASetIntegerInitRange*/
+   ctx->debug.PGADebugFlags[172] = Flag; /*PGAGetIntegerInitType*/
+   ctx->debug.PGADebugFlags[173] = Flag; /*PGAGetMinIntegerInitValue*/
+   ctx->debug.PGADebugFlags[174] = Flag; /*PGAGetMaxIntegerInitValue*/
+   ctx->debug.PGADebugFlags[200] = Flag; /*PGARealCreateString*/
+   ctx->debug.PGADebugFlags[208] = Flag; /*PGARealInitString*/
+   ctx->debug.PGADebugFlags[220] = Flag; /*PGASetRealInitPercent*/
+   ctx->debug.PGADebugFlags[221] = Flag; /*PGASetRealInitRange*/
+   ctx->debug.PGADebugFlags[222] = Flag; /*PGAGetMinRealInitValue*/
+   ctx->debug.PGADebugFlags[223] = Flag; /*PGAGetMaxRealInitValue*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag42 - Set the debug flags for all functions at debug level 42
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag42(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[380] = Flag; /*PGASelect*/
+   ctx->debug.PGADebugFlags[381] = Flag; /*PGASelectProportional*/
+   ctx->debug.PGADebugFlags[382] = Flag; /*PGASelectSUS*/
+   ctx->debug.PGADebugFlags[383] = Flag; /*PGASelectTournament*/
+   ctx->debug.PGADebugFlags[384] = Flag; /*PGASelectPTournament*/
+   ctx->debug.PGADebugFlags[385] = Flag; /*PGASelectNextIndex*/
+   ctx->debug.PGADebugFlags[386] = Flag; /*PGAGetSelectType*/
+   ctx->debug.PGADebugFlags[387] = Flag; /*PGAGetPTournamentProb*/
+   ctx->debug.PGADebugFlags[388] = Flag; /*PGASetSelectType*/
+   ctx->debug.PGADebugFlags[389] = Flag; /*PGASetPTournamentProb*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag44 - Set the debug flags for all functions at debug level 44
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag44(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[101] = Flag; /*PGABinaryMutation*/
+   ctx->debug.PGADebugFlags[151] = Flag; /*PGAIntegerMutation*/
+   ctx->debug.PGADebugFlags[201] = Flag; /*PGARealMutation*/
+   ctx->debug.PGADebugFlags[251] = Flag; /*PGACharacterMutation*/
+   ctx->debug.PGADebugFlags[330] = Flag; /*PGAMutate*/
+   ctx->debug.PGADebugFlags[331] = Flag; /*PGAGetMutationType*/
+   ctx->debug.PGADebugFlags[332] = Flag; /*PGAGetMutationRealValue*/
+   ctx->debug.PGADebugFlags[333] = Flag; /*PGAGetMutationIntegerValue*/
+   ctx->debug.PGADebugFlags[334] = Flag; /*PGAGetMutationProb*/
+   ctx->debug.PGADebugFlags[335] = Flag; /*PGASetMutationType*/
+   ctx->debug.PGADebugFlags[336] = Flag; /*PGASetMutationRealValue*/
+   ctx->debug.PGADebugFlags[337] = Flag; /*PGASetMutationIntegerValue*/
+   ctx->debug.PGADebugFlags[338] = Flag; /*PGASetMutationProb*/
+   ctx->debug.PGADebugFlags[400] = Flag; /*PGASetMutationBoundedFlag*/
+   ctx->debug.PGADebugFlags[401] = Flag; /*PGAGetMutationBoundedFlag*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag46 - Set the debug flags for all functions at debug level 46
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag46(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[102] = Flag; /*PGABinaryOneptCrossover*/
+   ctx->debug.PGADebugFlags[103] = Flag; /*PGABinaryTwoptCrossover*/
+   ctx->debug.PGADebugFlags[104] = Flag; /*PGABinaryUniformCrossover*/
+   ctx->debug.PGADebugFlags[152] = Flag; /*PGAIntegerOneptCrossover*/
+   ctx->debug.PGADebugFlags[153] = Flag; /*PGAIntegerTwoptCrossover*/
+   ctx->debug.PGADebugFlags[154] = Flag; /*PGAIntegerUniformCrossover*/
+   ctx->debug.PGADebugFlags[202] = Flag; /*PGARealOneptCrossover*/
+   ctx->debug.PGADebugFlags[203] = Flag; /*PGARealTwoptCrossover*/
+   ctx->debug.PGADebugFlags[204] = Flag; /*PGARealUniformCrossover*/
+   ctx->debug.PGADebugFlags[252] = Flag; /*PGACharacterOneptCrossover*/
+   ctx->debug.PGADebugFlags[253] = Flag; /*PGACharacterTwoptCrossover*/
+   ctx->debug.PGADebugFlags[254] = Flag; /*PGACharacterUniformCrossover*/
+   ctx->debug.PGADebugFlags[310] = Flag; /*PGACrossover*/
+   ctx->debug.PGADebugFlags[311] = Flag; /*PGAGetCrossoverType*/
+   ctx->debug.PGADebugFlags[312] = Flag; /*PGAGetCrossoverProb*/
+   ctx->debug.PGADebugFlags[313] = Flag; /*PGAGetUniformCrossoverProb*/
+   ctx->debug.PGADebugFlags[314] = Flag; /*PGASetCrossoverType*/
+   ctx->debug.PGADebugFlags[315] = Flag; /*PGASetCrossoverProb*/
+   ctx->debug.PGADebugFlags[316] = Flag; /*PGASetUniformCrossoverProb*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag48 - Set the debug flags for all functions at debug level 48
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag48(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[110] = Flag; /*PGASetBinaryAllele*/
+   ctx->debug.PGADebugFlags[111] = Flag; /*PGAGetBinaryAllele*/
+   ctx->debug.PGADebugFlags[160] = Flag; /*PGASetIntegerAllele*/
+   ctx->debug.PGADebugFlags[161] = Flag; /*PGAGetIntegerAllele*/
+   ctx->debug.PGADebugFlags[210] = Flag; /*PGASetRealAllele*/
+   ctx->debug.PGADebugFlags[211] = Flag; /*PGAGetRealAllele*/
+   ctx->debug.PGADebugFlags[260] = Flag; /*PGASetCharacterAllele*/
+   ctx->debug.PGADebugFlags[261] = Flag; /*PGAGetCharacterAllele*/
+   ctx->debug.PGADebugFlags[500] = Flag; /*PGAGetRealFromBinary*/
+   ctx->debug.PGADebugFlags[501] = Flag; /*PGAGetRealFromGrayCode*/
+   ctx->debug.PGADebugFlags[502] = Flag; /*PGAEncodeRealAsBinary*/
+   ctx->debug.PGADebugFlags[503] = Flag; /*PGAEncodeRealAsGrayCode*/
+   ctx->debug.PGADebugFlags[504] = Flag; /*PGAMapIntegerToReal*/
+   ctx->debug.PGADebugFlags[505] = Flag; /*PGAMapRealToInteger*/
+   ctx->debug.PGADebugFlags[506] = Flag; /*PGAEncodeIntegerAsBinary*/
+   ctx->debug.PGADebugFlags[507] = Flag; /*PGAEncodeIntegerAsGrayCode*/
+   ctx->debug.PGADebugFlags[508] = Flag; /*PGAGetIntegerFromBinary*/
+   ctx->debug.PGADebugFlags[509] = Flag; /*PGAGetIntegerFromGrayCode*/
+   ctx->debug.PGADebugFlags[510] = Flag; /*PGAEvaluate*/
+   ctx->debug.PGADebugFlags[511] = Flag; /*PGASetEvaluation*/
+   ctx->debug.PGADebugFlags[512] = Flag; /*PGASetEvaluationUpToDateFlag*/
+   ctx->debug.PGADebugFlags[513] = Flag; /*PGAGetEvaluation*/
+   ctx->debug.PGADebugFlags[514] = Flag; /*PGAGetEvaluationUpToDateFlag*/
+   ctx->debug.PGADebugFlags[605] = Flag; /*PGAEvaluateMS*/
+   ctx->debug.PGADebugFlags[715] = Flag; /*PGAGetWorstIndex*/
+   ctx->debug.PGADebugFlags[716] = Flag; /*PGAGetBestIndex*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag50 - Set the debug flags for all functions at debug level 50
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag50(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[520] = Flag; /*PGAFitness*/
+   ctx->debug.PGADebugFlags[521] = Flag; /*PGAFitnessLinearNormal*/
+   ctx->debug.PGADebugFlags[522] = Flag; /*PGAFitnessLinearRank*/
+   ctx->debug.PGADebugFlags[523] = Flag; /*PGAFitnessMinReciprocal*/
+   ctx->debug.PGADebugFlags[524] = Flag; /*PGAFitnessMinCmax*/
+   ctx->debug.PGADebugFlags[525] = Flag; /*PGARank*/
+   ctx->debug.PGADebugFlags[526] = Flag; /*PGAGetFitness*/
+   ctx->debug.PGADebugFlags[527] = Flag; /*PGAGetFitnessType*/
+   ctx->debug.PGADebugFlags[528] = Flag; /*PGAGetFitnessMinType*/
+   ctx->debug.PGADebugFlags[529] = Flag; /*PGAGetMaxFitnessRank*/
+   ctx->debug.PGADebugFlags[530] = Flag; /*PGASetFitnessType*/
+   ctx->debug.PGADebugFlags[531] = Flag; /*PGASetFitnessMinType*/
+   ctx->debug.PGADebugFlags[532] = Flag; /*PGASetMaxFitnessRank*/
+   ctx->debug.PGADebugFlags[533] = Flag; /*PGASetFitnessCmaxValue*/
+   ctx->debug.PGADebugFlags[534] = Flag; /*PGAGetFitnessCmaxValue*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag52 - Set the debug flags for all functions at debug level 52
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag52(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[107] = Flag; /*PGABinaryDuplicate*/
+   ctx->debug.PGADebugFlags[157] = Flag; /*PGAIntegerDuplicate*/
+   ctx->debug.PGADebugFlags[207] = Flag; /*PGARealDuplicate*/
+   ctx->debug.PGADebugFlags[257] = Flag; /*PGACharacterDuplicate*/
+   ctx->debug.PGADebugFlags[340] = Flag; /*PGADuplicate*/
+   ctx->debug.PGADebugFlags[341] = Flag; /*PGAChange*/
+   ctx->debug.PGADebugFlags[342] = Flag; /*PGASetNoDuplicatesFlag*/
+   ctx->debug.PGADebugFlags[343] = Flag; /*PGAGetNoDuplicatesFlag*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag54 - Set the debug flags for all functions at debug level 54
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag54(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[370] = Flag; /*PGARestart*/
+   ctx->debug.PGADebugFlags[371] = Flag; /*PGAGetRestartFlag*/
+   ctx->debug.PGADebugFlags[372] = Flag; /*PGAGetRestartFrequencyValue*/
+   ctx->debug.PGADebugFlags[373] = Flag; /*PGAGetRestartAlleleChangeProb*/
+   ctx->debug.PGADebugFlags[374] = Flag; /*PGASetRestartFlag*/
+   ctx->debug.PGADebugFlags[375] = Flag; /*PGASetRestartFrequencyValue*/
+   ctx->debug.PGADebugFlags[376] = Flag; /*PGASetRestartAlleleChangeProb*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag56 - Set the debug flags for all functions at debug level 56
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag56(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[105] = Flag; /*PGABinaryPrintString*/
+   ctx->debug.PGADebugFlags[121] = Flag; /*PGABinaryPrint*/
+   ctx->debug.PGADebugFlags[155] = Flag; /*PGAIntegerPrintString*/
+   ctx->debug.PGADebugFlags[205] = Flag; /*PGARealPrintString*/
+   ctx->debug.PGADebugFlags[255] = Flag; /*PGACharacterPrintString*/
+   ctx->debug.PGADebugFlags[820] = Flag; /*PGAPrintPopulation*/
+   ctx->debug.PGADebugFlags[821] = Flag; /*PGAPrintIndividual*/
+   ctx->debug.PGADebugFlags[822] = Flag; /*PGAPrintReport*/
+   ctx->debug.PGADebugFlags[823] = Flag; /*PGAPrintContextVariable*/
+   ctx->debug.PGADebugFlags[824] = Flag; /*PGAPrintString*/
+   ctx->debug.PGADebugFlags[825] = Flag; /*PGAGetPrintFrequencyValue*/
+   ctx->debug.PGADebugFlags[826] = Flag; /*PGASetPrintFrequencyValue*/
+   ctx->debug.PGADebugFlags[827] = Flag; /*PGASetPrintOptions*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag58 - Set the debug flags for all functions at debug level 58
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag58(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[390] = Flag; /*PGAGetStoppingRuleType*/
+   ctx->debug.PGADebugFlags[391] = Flag; /*PGASetStoppingRuleType*/
+   ctx->debug.PGADebugFlags[392] = Flag; /*PGAGetMaxGAIterValue*/
+   ctx->debug.PGADebugFlags[393] = Flag; /*PGASetMaxGAIterValue*/
+   ctx->debug.PGADebugFlags[394] = Flag; /*PGACheckStoppingConditions*/
+   ctx->debug.PGADebugFlags[395] = Flag; /*PGASetMaxNoChangeValue*/
+   ctx->debug.PGADebugFlags[396] = Flag; /*PGASetMaxSimilarityValue*/
+   ctx->debug.PGADebugFlags[397] = Flag; /*PGADone*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag60 - Set the debug flags for all functions at debug level 60
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag60(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[320] = Flag; /*PGASortPop*/
+   ctx->debug.PGADebugFlags[324] = Flag; /*PGAGetSortedPopIndex*/
+   ctx->debug.PGADebugFlags[810] = Flag; /*PGADblHeapSort*/
+   ctx->debug.PGADebugFlags[811] = Flag; /*PGADblHeapify*/
+   ctx->debug.PGADebugFlags[812] = Flag; /*PGADblAdjustHeap*/
+   ctx->debug.PGADebugFlags[813] = Flag; /*PGAIntHeapSort*/
+   ctx->debug.PGADebugFlags[814] = Flag; /*PGAIntHeapify*/
+   ctx->debug.PGADebugFlags[815] = Flag; /*PGAIntAdjustHeap*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag62 - Set the debug flags for all functions at debug level 62
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag62(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[750] = Flag; /*PGARandomFlip*/
+   ctx->debug.PGADebugFlags[751] = Flag; /*PGARandomInterval*/
+   ctx->debug.PGADebugFlags[752] = Flag; /*PGARandom01*/
+   ctx->debug.PGADebugFlags[753] = Flag; /*PGARandomUniform*/
+   ctx->debug.PGADebugFlags[754] = Flag; /*PGARandomGaussian*/
+   ctx->debug.PGADebugFlags[755] = Flag; /*PGAGetRandomSeed*/
+   ctx->debug.PGADebugFlags[756] = Flag; /*PGASetRandomSeed*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag64 - Set the debug flags for all functions at debug level 64
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag64(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[700] = Flag; /*PGAError*/
+   ctx->debug.PGADebugFlags[702] = Flag; /*PGAUsage*/
+   ctx->debug.PGADebugFlags[703] = Flag; /*PGAPrintVersionNumber*/
+   ctx->debug.PGADebugFlags[704] = Flag; /*PGAGetMaxMachineIntValue*/
+   ctx->debug.PGADebugFlags[705] = Flag; /*PGAGetMinMachineIntValue*/
+   ctx->debug.PGADebugFlags[706] = Flag; /*PGAGetMaxMachineDoubleValue*/
+   ctx->debug.PGADebugFlags[707] = Flag; /*PGAGetMinMachineDoubleValue*/
+   ctx->debug.PGADebugFlags[708] = Flag; /*PGADestroy*/
+   ctx->debug.PGADebugFlags[730] = Flag; /*PGAReadCmdLine*/
+   ctx->debug.PGADebugFlags[731] = Flag; /*PGAParseDebugArg*/
+   ctx->debug.PGADebugFlags[732] = Flag; /*PGAStripArgs*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag66 - Set the debug flags for all functions at debug level 66
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag66(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[710] = Flag; /*PGAMean*/
+   ctx->debug.PGADebugFlags[711] = Flag; /*PGAStddev*/
+   ctx->debug.PGADebugFlags[712] = Flag; /*PGACopyIndividual*/
+   ctx->debug.PGADebugFlags[713] = Flag; /*PGARound*/
+   ctx->debug.PGADebugFlags[714] = Flag; /*PGACheckSum*/
+   ctx->debug.PGADebugFlags[715] = Flag; /*PGAGetWorstIndex*/
+   ctx->debug.PGADebugFlags[716] = Flag; /*PGAGetBestIndex*/
+   ctx->debug.PGADebugFlags[717] = Flag; /*PGAGetIndividual*/
+   ctx->debug.PGADebugFlags[718] = Flag; /*PGAUpdateAverage*/
+   ctx->debug.PGADebugFlags[719] = Flag; /*PGAUpdateOnline*/
+   ctx->debug.PGADebugFlags[720] = Flag; /*PGAUpdateOffline*/
+   ctx->debug.PGADebugFlags[721] = Flag; /*PGAComputeSimilarity*/
+}
+#endif
+
+/*I****************************************************************************
+   PGAPrintDebugOptions - prints the list of available debug options
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      list of available debug options
+
+   Example:
+      PGAContext ctx;
+      :
+      PGAPrintDebugOptions(ctx);
+      
+****************************************************************************I*/
+void PGAPrintDebugOptions(PGAContext *ctx)
+{
+    PGADebugEntered("PGAPrintDebugOptions");
+    
+#if OPTIMIZE==0
+    fprintf(stderr, "  0 Trace all debug prints\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr, "  1 Reserved for the user\n");
+    fprintf(stderr, "    :                   :\n");
+    fprintf(stderr, " 10 Reserved for the user\n");
+    fprintf(stderr, " 11 Trace high-level functions\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr, " 20 Trace high-level parallel functions\n");
+    fprintf(stderr, " 21 Trace all parallel functions\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr, " 30 Trace BINARY    functions\n");
+    fprintf(stderr, " 32 Trace INTEGER   functions\n");
+    fprintf(stderr, " 34 Trace REAL      functions\n");
+    fprintf(stderr, " 36 Trace CHARACTER functions\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr, " 40 Trace population creation functions\n");
+    fprintf(stderr, " 42 Trace select functions\n");
+    fprintf(stderr, " 44 Trace mutation functions\n");
+    fprintf(stderr, " 46 Trace crossover functions\n");
+    fprintf(stderr, " 48 Trace function evaluation functions\n");
+    fprintf(stderr, " 50 Trace fitness calculation  functions\n");
+    fprintf(stderr, " 52 Trace duplicate checking functions\n");
+    fprintf(stderr, " 54 Trace restart functions\n");
+    fprintf(stderr, " 56 Trace reporting functions\n");
+    fprintf(stderr, " 58 Trace stopping functions\n");
+    fprintf(stderr, " 60 Trace sorting functions\n");
+    fprintf(stderr, " 62 Trace random number functions\n");
+    fprintf(stderr, " 64 Trace system routines\n");
+    fprintf(stderr, " 66 Trace utility functions\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr, " 80 Trace memory allocations\n");
+    fprintf(stderr, " 82 Trace variable print statements\n");
+#else
+    fprintf(stderr, " Optimized version; no debug options.\n");
+#endif
+    PGADestroy(ctx);
+    exit(0);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/duplcate.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/duplcate.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/duplcate.c	(revision 6168)
@@ -0,0 +1,311 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: duplicate.c: This file contains the routines that have to do with
+*                        testing for duplicate strings
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGADuplicate - determines if a specified string is a duplicate of one
+  already in an existing population
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+     p    - string index
+     pop1 - symbolic constant of the population containing string p
+     pop2 - symbolic constant of the (possibly partial) population containing
+            strings to compare string p against
+     n    - the number of strings in pop2 to compare string p against
+            (indexed 0,...,n-1)
+
+  Outputs:
+     Returns PGA_TRUE if PGAGetNoDuplicates() returns PGA_TRUE and
+     string p in population pop1 is a duplicate of at least one strings
+     0,...,n-1 in population pop2.  Otherwise returns PGA_FALSE
+
+  Example:
+     Change any string in PGA_NEWPOP that is an exact copy of a string
+     in PGA_OLDPOP.
+
+     PGAContext *ctx;
+     int b, n;
+     :
+     n  = PGAGetPopsize(ctx);
+     for (b=0; b<n; b++)
+         if (PGADuplicate(ctx, b, PGA_NEWPOP, PGA_OLDPOP, n))
+             PGAChange(ctx, b, PGA_NEWPOP);
+
+
+     Check if the best string in population PGA_OLDPOP is a duplicate of any
+     of the strings in the first half of population PGA_NEWPOP.
+
+     PGAContext *ctx;
+     int b, n;
+     :
+     b  = PGAGetBestIndex(ctx, PGA_OLDPOP);
+     n  = PGAGetPopsize(ctx) / 2;
+     if (PGADuplicate(ctx, b, PGA_OLDPOP, PGA_NEWPOP, n))
+         printf("A duplicate!\n");
+
+****************************************************************************U*/
+int PGADuplicate(PGAContext *ctx, int p, int pop1, int pop2, int n)
+{
+    int p2, fp;
+    int RetVal = PGA_FALSE;
+    
+    PGADebugEntered("PGADuplicate");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGADuplicate", "p = ",
+		  PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGADuplicate", "pop1 = ",
+		  PGA_INT, (void *) &pop1 );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGADuplicate", "pop2 = ",
+		  PGA_INT, (void *) &pop2 );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGADuplicate", "n  = ",
+		  PGA_INT, (void *) &n );
+    
+    if (ctx->ga.NoDuplicates == PGA_TRUE) {
+	if (ctx->fops.Duplicate) {
+	    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+	    for (p2 = 1; p2 <= n; p2++)
+		if ((*ctx->fops.Duplicate)(&ctx, &fp, &pop1, &p2, &pop2)) {
+		    RetVal = PGA_TRUE;
+		    p2 = n+1;
+		}
+	} else {
+	    for (p2 = 0; p2 < n; p2++)
+		if ((*ctx->cops.Duplicate)(ctx, p, pop1, p2, pop2)) {
+		    RetVal = PGA_TRUE;
+		    p2 = n;
+		}
+	}
+    }
+    
+    PGADebugExited("PGADuplicate");
+    
+    return(RetVal);
+}
+
+
+/*U****************************************************************************
+  PGAChange - Repeatedly apply mutation to a string (with an increasing
+  mutation rate) until one or more mutations have occurred.  This routine is
+  usually used with PGADuplicate to modify a duplicate string.  It is not
+  intended to replace PGAMutation
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+     p    - string index
+     pop  - symbolic constant of the population containing string p
+
+  Outputs:
+     Mutates string p in population pop via side effect.
+
+  Example:
+     Change any string in PGA_NEWPOP that is an exact copy of a string
+     in PGA_OLDPOP.  To be complete, we should check the population again
+     if any changes are made; for simplicity, we don't.
+
+     PGAContext *ctx;
+     int b, n;
+     :
+     n  = PGAGetPopsize(ctx);
+     for (b=0; b<n; b++)
+         if (PGADuplicate(ctx, b, PGA_NEWPOP, PGA_OLDPOP, n))
+             PGAChange(ctx, b, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGAChange( PGAContext *ctx, int p, int pop )
+{
+    int    changed = PGA_FALSE;
+    int    fp, nflips;
+    double mr;
+
+    PGADebugEntered("PGAChange");
+
+    mr = ctx->ga.MutationProb;
+
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGAChange", " mr = ",
+                   PGA_DOUBLE, (void *) &mr );
+
+    while (( changed == PGA_FALSE ) && (mr <= 1.0)) {
+	if (ctx->fops.Mutation) {
+	    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+            nflips = (*ctx->fops.Mutation)(&ctx, &fp, &pop, &mr);
+	} else {
+	    nflips = (*ctx->cops.Mutation)( ctx, p, pop, mr );
+	}
+
+        if ( nflips > 0 )
+	{
+	
+	    /***********************************************/ 
+	    /***********************************************/ 
+	    /*************** BUG THAT WAS FOUND ************/ 
+	    /**** EHW and SNS ADDITION *********************/
+	    /***********************************************/ 
+	    /***********************************************/ 
+	    PGASetEvaluationUpToDateFlag(ctx,p,pop,PGA_FALSE); 
+	    /***********************************************/ 
+	    /***********************************************/ 
+            changed = PGA_TRUE;
+
+	}
+        else
+            mr = 1.1*mr;
+    }
+
+    if (changed == PGA_FALSE) {
+	PGAError(ctx, "Could not change string:", PGA_WARNING, PGA_VOID, NULL);
+	PGAPrintString(ctx, stderr, p, pop);
+    }
+
+    PGADebugExited("PGAChange");
+}
+
+/*U****************************************************************************
+   PGASetNoDuplicatesFlag - A boolean flag to indicate if duplicate strings are
+   allowed in the population. Valid choices are PGA_TRUE and PGA_FALSE.  The
+   default is PGA_FALSE -- allow duplicates.
+
+   Category: Generation
+
+   Inputs:
+      ctx  - context variable
+      flag - PGA_TRUE or PGA_FALSE
+
+   Outputs:
+      None
+
+   Example:
+      Set the NoDuplicates flag to require that all strings are unique.
+
+      PGAContext *ctx;
+      :
+      PGASetNoDuplicatesFlag(ctx,PGA_TRUE);
+
+****************************************************************************U*/
+void PGASetNoDuplicatesFlag( PGAContext *ctx, int no_dup)
+{
+    PGADebugEntered("PGASetNoDuplicatesFlag");
+
+    switch (no_dup) {
+        case PGA_TRUE:
+        case PGA_FALSE:
+            ctx->ga.NoDuplicates = no_dup;
+            break;
+        default:
+            PGAError ( ctx, "PGASetNoDuplicatesFlag: Invalid value of no_dup:",
+                       PGA_FATAL, PGA_INT, (void *) &no_dup);
+            break;
+    }
+
+    PGADebugExited("PGASetNoDuplicatesFlag");
+}
+
+/*U***************************************************************************
+   PGAGetNoDuplicatesFlag - Returns PGA_TRUE if duplicates are not allowed,
+   else returns PGA_FALSE.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The value of the NoDuplicates flag.
+
+   Example:
+      PGAContext *ctx;
+      int nodups;
+      :
+      nodups = PGAGetNoDuplicatesFlag(ctx);
+      switch (nodups) {
+      case PGA_TRUE:
+          printf("Duplicate strings not allowed in population\n");
+          break;
+      case PGA_FALSE:
+          printf("Duplicate strings allowed in population\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetNoDuplicatesFlag (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetNoDuplicatesFlag");
+
+    PGAFailIfNotSetUp("PGAGetNoDuplicatesFlag");
+
+    PGADebugExited("PGAGetNoDuplicatesFlag");
+
+    return(ctx->ga.NoDuplicates);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/evaluate.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/evaluate.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/evaluate.c	(revision 6168)
@@ -0,0 +1,890 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: evaluate.c: This file contains routines specific to the evaluation
+*                       of the strings.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGASetEvaluation - Set the evaluation function value for a string to a
+   specified value.  Also sets the evaulation up to date flag to PGA_TRUE.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx  - context variable
+      p    - string index
+      pop  - symbolic constant of the population string p is in
+      val  - the (user) evaluation value to assign to string p
+
+   Outputs:
+      Sets the evaluation function value of string p and the EvalUpToDate
+      flag (to PGA_TRUE) via side effect
+
+   Example:
+      Set the evaluation function value of string p in population PGA_NEWPOP
+      to 123.456.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGASetEvaluation(ctx, p, PGA_NEWPOP, 123.456);
+
+****************************************************************************U*/
+void PGASetEvaluation ( PGAContext *ctx, int p, int pop, double val )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGASetEvaluation");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGASetEvaluation", "p = ",
+                   PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGASetEvaluation", "pop = ",
+                   PGA_INT, (void *) &pop );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGASetEvaluation", "val = ",
+                   PGA_DOUBLE, (void *) &val );
+
+    ind               = PGAGetIndividual ( ctx, p, pop );
+    ind->evalfunc     = val;
+    ind->evaluptodate = PGA_TRUE;
+
+    PGADebugExited("PGASetEvaluation");
+}
+
+/*U***************************************************************************
+   PGAGetEvaluation - returns the evaluation function value for
+   string p in population pop
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+
+   Outputs:
+      The evaluation function value for string p in population pop
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      double eval;
+      :
+      eval = PGAGetEvaluation(ctx, p, PGA_NEWPOP);
+
+***************************************************************************U*/
+double PGAGetEvaluation ( PGAContext *ctx, int p, int pop )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAGetEvaluation");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetEvaluation", "p = ",
+                   PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetEvaluation", "pop = ",
+                   PGA_INT, (void *) &pop );
+
+    ind               = PGAGetIndividual ( ctx, p, pop );
+
+#ifndef OPTIMIZE
+    if (ind->evaluptodate != PGA_TRUE)
+	PGAError(ctx, "Evaluation not up to date.  Returning old evaluation.",
+                 PGA_WARNING, PGA_VOID, NULL);
+#endif
+
+    PGADebugExited("PGAGetEvaluation");
+    return(ind->evalfunc);
+}
+
+/*U****************************************************************************
+  PGASetEvaluationUpToDateFlag - sets the flag associated with a
+  string to PGA_TRUE or PGA_FLASE to indicate whether the evaluate
+  function value is out-of-date or not.  Note that this flag is always
+  set to PGA_TRUE when PGASetEvaluation is called.
+
+    Category: Fitness & Evaluation
+
+    Inputs:
+      ctx  - context variable
+      p    - string index
+      pop  - symbolic constant of the population string p is in
+      status - boolean for whether up-to-date
+
+   Outputs:
+      Sets the EvalUpToDate associated with the evaluation function value of
+      string p via side effect
+
+   Example:
+      Set the evaluation function flag for string p in population PGA_NEWPOP
+      to PGA_FALSE (as might happen after, for example, calling a hill-climbing
+      routine that modified this string).
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGASetEvaluationUpToDateFlag(ctx, p, PGA_NEWPOP, PGA_FALSE);
+
+****************************************************************************U*/
+void PGASetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop,
+                                   int status )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGASetEvaluationUpToDateFlag");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGASetEvaluationUpToDateFlag",
+                  "p = ", PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGASetEvaluationUpToDateFlag",
+                  "pop = ", PGA_INT, (void *) &pop );
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+
+    switch(status) {
+    case PGA_TRUE:
+      ind->evaluptodate = status;
+	break;
+    case PGA_FALSE:
+      ind->evaluptodate = status;
+/*** EHW ADDITION and SNSN ADDITION ******/
+     /* UpDating User Data if Necessary */
+	if(ctx->cops.EndOfRepFcn!=NULL)
+         (*(ctx->cops.EndOfRepFcn))(ctx,p,pop);
+/*****************************************/
+      break;
+    default:
+      PGAError(ctx, "PGASetEvaluationUpToDateFlag: Invalid value of status:",
+               PGA_FATAL, PGA_INT, (void *) &status);
+      break;
+    }
+
+    PGADebugExited("PGASetEvaluationUpToDateFlag");
+}
+
+/*U***************************************************************************
+  PGAGetEvaluationUpToDateFlag - returns true/false to indicate
+  whether the evaluate function value is up to date
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+
+   Outputs:
+      Returns PGA_TRUE if the evaluate function value is up to date.
+      Otherwise, returns PGA_FALSE
+
+   Example:
+      PGAContext *ctx;
+      int uptodate;
+      :
+      uptodate = PGAGetEvaluationUpToDateFlag(ctx);
+      switch (uptodate) {
+      case PGA_TRUE:
+          printf("Evaluation function value current\n");
+          break;
+      case PGA_FALSE:
+          printf("Evaluation function value out-of-date\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAGetEvaluationUpToDateFlag");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetEvaluationUpToDateFlag",
+                  "p = ", PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetEvaluationUpToDateFlag",
+                   "p = ", PGA_INT, (void *) &pop );
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+
+    PGADebugExited("PGAGetEvaluationUpToDateFlag");
+    return(ind->evaluptodate);
+}
+
+/*U****************************************************************************
+  PGAGetRealFromBinary - Interpets a binary string as encoding a real value
+  and returns the real value it represents.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in the binary representation
+      end   - ending bit position in the binary representation
+      lower - lower bound of the interval the real number is defined on
+      upper - lower bound of the interval the real number is defined on
+
+  Outputs:
+      The real value encoded by the binary string
+
+  Example:
+      Decode a real value from the string p in population PGA_NEWPOP.  The
+      value to decode lies on the interval [-10,20] and is represented
+      using the 20 bits in bit positions 10--29.
+
+      double x;
+      :
+      x = PGAGetRealFromBinary(ctx, p, PGA_NEWPOP, 10, 29, -10.0, 20.0);
+
+****************************************************************************U*/
+double PGAGetRealFromBinary(PGAContext *ctx, int p, int pop, int start,
+                            int end, double lower, double upper)
+{
+     int length, sum;
+     double value;
+
+    PGADebugEntered("PGAGetRealFromBinary");
+     PGACheckDataType("PGAGetRealFromBinary", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+
+     if (start < 0)
+          PGAError(ctx, "PGAGetRealFromBinary: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+	 PGAError(ctx, "PGAGetRealFromBinary: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAGetRealFromBinary: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (lower >= upper)
+          PGAError(ctx, "PGAGetRealFromBinary: lower exceeds upper:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &lower);
+
+     sum = PGAGetIntegerFromBinary(ctx, p, pop, start, end);
+     value = PGAMapIntegerToReal(ctx, sum, 0,
+                                 (length == sizeof(unsigned) * 8 - 1)
+                                 ? INT_MAX : (1u << length) - 1, lower, upper);
+
+    PGADebugExited("PGAGetRealFromBinary");
+
+     return(value);
+}
+
+/*U****************************************************************************
+  PGAGetRealFromGrayCode - interpets a binary reflected Gray code sequence in
+  a binary string as encoding a real value and returns the real value it
+  represents.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in the binary representation
+      end   - ending bit position in the binary representation
+      lower - lower bound of the interval the real number is defined on
+      upper - lower bound of the interval the real number is defined on
+
+  Outputs:
+      The real value encoded by the binary reflected Gray code sequence
+
+  Example:
+      Decode a real value from the string p in population PGA_NEWPOP.  The
+      value to decode lies on the interval [-10,20] and is represented
+      using the 20 bits in bit positions 10--29.
+
+      double x;
+      :
+      x = PGAGetRealFromGrayCode(ctx, p, PGA_NEWPOP, 10, 29, -10.0, 20.0);
+
+****************************************************************************U*/
+double PGAGetRealFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                  int end, double lower, double upper)
+{
+     int length, sum;
+     double value;
+
+    PGADebugEntered("PGAGetRealFromGrayCode");
+     PGACheckDataType("PGAGetRealFromGrayCode", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+
+     if (start < 0)
+          PGAError(ctx, "PGAGetRealFromGrayCode: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAGetRealFromGrayCode: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAGetRealFromGrayCode: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (lower >= upper)
+          PGAError(ctx, "PGAGetRealFromGrayCode: lower exceeds upper:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &lower);
+
+     sum = PGAGetIntegerFromGrayCode(ctx, p, pop, start, end);
+     value = PGAMapIntegerToReal(ctx, sum, 0,
+                                 (length == sizeof(unsigned) * 8 - 1)
+                                 ? INT_MAX : (1u << length) - 1, lower, upper);
+
+    PGADebugExited("PGAGetRealFromGrayCode");
+
+     return(value);
+}
+
+/*U****************************************************************************
+  PGAEncodeRealAsBinary - encodes a real value as a binary string
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in p to encode val in
+      end   - ending bit position in p to encode val in
+      low   - lower bound of the interval the val is defined on
+      high  - lower bound of the interval the val is defined on
+      val   - the real number to be represented as a binary string
+
+  Outputs:
+      The string is modified by side-effect.
+
+  Example:
+      Encode 3.14 from the interval [0,10] in 30 bits in bit positions
+      0--29 in string p in population PGA_NEWPOP.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGAEncodeRealAsBinary(ctx, p, PGA_NEWPOP, 0, 29, 0.0, 10.0, 3.14);
+
+****************************************************************************U*/
+void PGAEncodeRealAsBinary(PGAContext *ctx, int p, int pop, int start,
+                               int end, double low, double high, double val)
+{
+     int length, d;
+
+    PGADebugEntered("PGAEncodeRealAsBinary");
+     PGACheckDataType("PGAEncodeRealAsBinary", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+     if (start < 0)
+          PGAError(ctx, "PGAEncodeRealAsBinary: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAEncodeRealAsBinary: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAEncodeRealAsBinary: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (low >= high)
+          PGAError(ctx, "PGAEncodeRealAsBinary: low exceeds high:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &low);
+     if (val < low || val > high)
+          PGAError(ctx, "PGAEncodeRealAsBinary: val outside of bounds:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &val);
+
+     d = PGAMapRealToInteger(ctx, val, low, high, 0,
+                             (length == sizeof(unsigned) * 8 - 1)
+                             ? INT_MAX : (1u << length) - 1);
+     PGAEncodeIntegerAsBinary(ctx, p, pop, start, end, d);
+
+    PGADebugExited("PGAEncodeRealAsBinary");
+}
+
+/*U****************************************************************************
+  PGAEncodeRealAsGrayCode - encodes a real value as a binary reflected Gray
+  code sequence
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in p to encode val in
+      end   - ending bit position in p to encode val in
+      low   - lower bound of the interval the val is defined on
+      high  - lower bound of the interval the val is defined on
+      val   - the real number to be represented as a binary string
+
+  Outputs:
+      The string is modified by side-effect.
+
+  Example:
+      Encode 3.14 from the interval [0,10] in 30 bits in bit positions
+      0--29 in string p in population PGA_NEWPOP as a binary reflected Gray
+      code sequence.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGAEncodeRealAsGrayCode(ctx, p, PGA_NEWPOP, 0, 29, 0.0, 10.0, 3.14);
+
+****************************************************************************U*/
+void PGAEncodeRealAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                              int end, double low, double high, double val)
+{
+     int length, d;
+
+    PGADebugEntered("PGAEncodeRealAsGrayCode");
+     PGACheckDataType("PGAEncodeRealAsGrayCode", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+     if (start < 0)
+          PGAError(ctx, "PGAEncodeRealAsGrayCode: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAEncodeRealAsGrayCode: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAEncodeRealAsGrayCode: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (low >= high)
+          PGAError(ctx, "PGAEncodeRealAsGrayCode: low exceeds high:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &low);
+     if (val < low || val > high)
+          PGAError(ctx, "PGAEncodeRealAsGrayCode: val outside of bounds:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &val);
+
+     d = PGAMapRealToInteger(ctx, val, low, high, 0,
+                             (length == sizeof(unsigned) * 8 - 1) ? INT_MAX :
+                             (1u << length) - 1);
+     PGAEncodeIntegerAsGrayCode(ctx, p, pop, start, end, d);
+
+    PGADebugExited("PGAEncodeRealAsGrayCode");
+}
+
+
+/*U****************************************************************************
+  PGAGetIntegerFromBinary - interpets a binary string as encoding an integer
+  value and returns the integer value it represents.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in the binary representation
+      end   - ending bit position in the binary representation
+
+  Outputs:
+      The integer value encoded by the binary string
+
+  Example:
+      Get an integer j from bits 10--29 of string p in population PGA_NEWPOP.
+
+      PGAContext *ctx;
+      int j, p;
+      :
+      j = PGAGetIntegerFromBinary(ctx, p, PGA_NEWPOP, 10, 29);
+
+****************************************************************************U*/
+int PGAGetIntegerFromBinary(PGAContext *ctx, int p, int pop, int start,
+                                 int end)
+{
+     int length, i, val;
+     unsigned power2;
+
+    PGADebugEntered("PGAGetIntegerFromBinary");
+     PGACheckDataType("PGAGetIntegerFromBinary", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+     if (length > sizeof(int) * 8 - 1)
+          PGAError(ctx, "PGAGetIntegerFromBinary: length of bit string "
+                   "exceeds sizeof type int:", PGA_FATAL, PGA_INT,
+                   (void *) &length);
+     if (start < 0)
+          PGAError(ctx, "PGAGetIntegerFromBinary: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAGetIntegerFromBinary: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAGetIntegerFromBinary: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+
+     val = 0;
+     power2 = 1u << (length - 1);
+     for (i = start; i <= end; i++)
+     {
+          if (PGAGetBinaryAllele(ctx, p, pop, i))
+               val += power2;
+          power2 >>= 1;
+     }
+
+    PGADebugExited("PGAGetIntegerFromBinary");
+
+     return(val);
+}
+
+/*U****************************************************************************
+  PGAGetIntegerFromGrayCode - interpets a binary reflected Gray code sequence
+  as encoding an integer value and returns the integer value it represents.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in the binary representation
+      end   - ending bit position in the binary representation
+
+  Outputs:
+      The integer value encoded by the binary reflected Gray code sequence
+
+  Example:
+      Get an integer j from bits 10--29 of string p in population PGA_NEWPOP.
+      The string is encoded in Gray code.
+
+      PGAContext *ctx;
+      int j, p;
+      :
+      j = PGAGetIntegerFromGrayCode(ctx, p, PGA_NEWPOP, 10, 29);
+
+****************************************************************************U*/
+int PGAGetIntegerFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                   int end)
+{
+     int length, *BitString, i, val;
+     unsigned power2;
+
+    PGADebugEntered("PGAGetIntegerFromGrayCode");
+     PGACheckDataType("PGAGetIntegerFromGrayCode", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+     if (length > sizeof(int) * 8 - 1)
+          PGAError(ctx, "PGAGetIntegerFromGrayCode: length of binary string "
+                   "exceeds size of type int:", PGA_FATAL, PGA_INT,
+                   (void *) &length);
+     if (start < 0)
+          PGAError(ctx, "PGAGetIntegerFromGrayCode: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAGetIntegerFromGrayCode: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAGetIntegerFromGrayCode: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+
+     BitString = (int *) malloc(length * sizeof(int));
+     if (!BitString)
+          PGAError(ctx, "PGAGetIntegerFromGrayCode: No room for BitString",
+                   PGA_FATAL, PGA_VOID, NULL);
+     BitString[0] = PGAGetBinaryAllele(ctx, p, pop, start);
+
+     for(i = 1; i < length; i++)
+          BitString[i] = BitString[i-1] ^ PGAGetBinaryAllele(ctx, p, pop,
+                                                             start + i);
+     val = 0;
+     power2 = 1u << (length - 1);
+     for (i = 0; i < length; i++)
+     {
+          if (BitString[i])
+               val += power2;
+          power2 >>= 1;
+     }
+     free(BitString);
+
+    PGADebugExited("PGAGetIntegerFromGrayCode");
+     return(val);
+}
+
+/*U****************************************************************************
+  PGAEncodeIntegerAsBinary - encodes an integer value as a binary string
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in p to encode val in
+      end   - ending bit position in p to encode val in
+      val   - the integer value to be represented as a binary string
+
+  Outputs:
+      The string is modified by side-effect.
+
+  Example:
+      Encode an integer v in 20 bits in bit positions 0--19 in string p
+      in population PGA_NEWPOP.
+
+      PGAContext *ctx;
+      int v, p;
+      :
+      PGAEncodeIntegerAsBinary(ctx, p, PGA_NEWPOP, 0, 19, v);
+
+****************************************************************************U*/
+void PGAEncodeIntegerAsBinary(PGAContext *ctx, int p, int pop, int start,
+                              int end, int val)
+{
+     int length, i;
+     unsigned power2;
+
+    PGADebugEntered("PGAEncodeIntegerAsBinary");
+     PGACheckDataType("PGAEncodeIntegerAsBinary", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+
+     if (length > sizeof(int) * 8 - 1)
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: length of bit string "
+                   "exceeds size of type int:", PGA_FATAL, PGA_INT,
+                   (void *) &length);
+     if (start < 0)
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if ((val > (1u << length) - 1) && (length != sizeof(int) * 8) - 1)
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: Integer too big for string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &val);
+     if (val < 0)
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: Integer less than zero:",
+                   PGA_FATAL, PGA_INT, (void *) & val);
+
+     power2 = 1u << (length - 1);
+     for (i = 0; i < length; i++)
+     {
+          if (val >= power2)
+          {
+               PGASetBinaryAllele(ctx, p, pop, start + i, 1);
+               val -= power2;
+          }
+          else
+               PGASetBinaryAllele(ctx, p, pop, start + i, 0);
+          power2 >>= 1;
+     }
+
+    PGADebugExited("PGAEncodeIntegerAsBinary");
+}
+
+/*U****************************************************************************
+  PGAEncodeIntegerAsGrayCode - encodes a real value as a binary reflected
+  Gray code sequence
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in p to encode val in
+      end   - ending bit position in p to encode val in
+      val   - the integer value to be represented as a binary reflected
+              Gray code sequence
+
+  Outputs:
+      The string is modified by side-effect.
+
+  Example:
+      Encode an integer v in 20 bits in bit positions  0--19 in string p in
+      population PGA_NEWPOP using Gray code.
+
+      PGAContext *ctx;
+      int v, p;
+      :
+      PGAEncodeIntegerAsGrayCode(ctx, p, PGA_NEWPOP, 0, 19, 7);
+
+****************************************************************************U*/
+void PGAEncodeIntegerAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                int end, int val)
+{
+     int i, *bit, length;
+     unsigned power2;
+
+    PGADebugEntered("PGAEncodeIntegerAsGrayCode");
+     PGACheckDataType("PGAEncodeIntegerAsGrayCode", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+
+     if (length > sizeof(int) * 8 - 1)
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: length of bit string"
+                   "exceeds size of type int:", PGA_FATAL, PGA_INT,
+                   (void *) &length);
+     if (start < 0)
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if ((val > (1u << length) - 1) && (length != sizeof(int) * 8 - 1))
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: Integer too big for "
+                   "string length:", PGA_FATAL, PGA_INT, (void *) &val);
+     if (val < 0)
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: Integer less than zero:",
+                   PGA_FATAL, PGA_INT, (void *) &val);
+
+     bit = (int *) malloc(length * sizeof(int));
+     if (bit == NULL)
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: No room to allocate bit",
+                   PGA_FATAL, PGA_VOID, NULL);
+     power2 = 1u << (length - 1);
+     for (i = 0; i < length; i++)
+     {
+          if (val >= power2)
+          {
+               bit[i] = 1;
+               val -= power2;
+          }
+          else
+               bit[i] = 0;
+          power2 >>= 1;
+     }
+     PGASetBinaryAllele(ctx, p, pop, start, bit[0]);
+     for(i = 1; i < length; i++)
+          PGASetBinaryAllele(ctx, p, pop, start + i, bit[i-1] ^ bit[i]);
+     free(bit);
+
+    PGADebugExited("PGAEncodeIntegerAsGrayCode");
+}
+
+
+/*I****************************************************************************
+   PGAMapIntegerToReal - Maps the value v defined on [a,b] to r defined on
+   [l,u].  In the context of PGAPack [a,b] is the discrete interval
+   [0,2^nbits-1] (i.e., the number of bits in a binary string) and [l,u]
+   represent the range of possible values of the real number r.
+
+   Inputs:
+      ctx      - context variable
+      v        - value from original interval (usually the decoded bit string)
+      a        - lower bound of integer interval (usually 0)
+      b        - upper bound of integer interval (usually 2^nbits-1)
+      l        - lower bound of real interval
+      u        - upper bound of real interval
+
+   Outputs:
+      Scaled value of v defined on [l,u]
+
+   Example:
+       Map a five bit (that is, an integer with a range of [0, 31]) integer v
+       to a real in the range [0, 3.14].
+
+       PGAContext *ctx;
+       double x;
+       int v;
+       :
+       x = PGAMapIntegerToReal(ctx, v, 0, 31, 0.0, 3.14);
+
+****************************************************************************I*/
+double PGAMapIntegerToReal (PGAContext *ctx, int v, int a, int b, double l,
+                            double u)
+{
+    PGADebugEntered("PGAMapIntegerToReal");
+
+    PGADebugExited("PGAMapIntegerToReal");
+
+     return((v-a) * (u-l) / (b-a) + l);
+}
+
+/*I****************************************************************************
+   PGAMapRealToInteger - Maps the value r defined on [l,u] to v defined on
+   [a,b].  In the context of PGAPack [a,b] is the discrete interval
+   [0,2^nbits-1] (i.e., the number of bits in a binary string) and [l,u]
+   represent the range of possible values of the real number r.
+
+   Inputs:
+      ctx      - context variable
+      r        - real value defined on [l,u]
+      l        - lower bound of real interval
+      u        - upper bound of real interval
+      a        - lower bound of integer interval (usually 0)
+      b        - upper bound of integer interval (usually 2^nbits-1)
+
+   Outputs:
+      Scaled value of r defined on [a,b]
+
+   Example:
+     Map the value r on the interval [0, 3.14] to a five bit integer v.
+
+     PGAContext *ctx;
+     double r;
+     int v;
+     :
+     v = PGAMapRealToInteger(ctx, r, 0.0, 3.14, 0, 31);
+
+****************************************************************************I*/
+int PGAMapRealToInteger(PGAContext *ctx, double r, double l, double u, int a,
+                        int b)
+{
+    PGADebugEntered("PGAMapRealToInteger");
+
+    PGADebugExited("PGAMapRealToInteger");
+
+     return PGARound(ctx, (b - a) * (r - l) / (u - l) + a);
+}
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/f2c.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/f2c.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/f2c.c	(revision 6168)
@@ -0,0 +1,1817 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: f2c_interface.c
+*
+*     This file contains routines that are called by the Fortran version of
+*     the PGAPack calls.  They just make the call to the appropriate C
+*     routine.  Issues are:
+*         * Fortran's always passing by reference,
+*         * Using Fortran integers for holding C pointer values
+*         * Fortran's 1,...,n indexing vs. C's 0,...,n-1
+*           (this comes up in population member and allele indices)
+*         * Pointers to functions
+*         * File pointers
+*         * Characters strings
+*         * Variable length argument lists
+*
+*     We assume the Fortran compiler generates one of three symbol names for
+*     the external PGAPack routine, e.g.,  pgasetpopsize,  pgasetpopsize_, or
+*     PGASETPOPSIZE.  We use #ifdef's based on the appropriate routine to
+*     convert the canonical pgasetpopsize_ to the other two.  Since the real
+*     C routine is always mixed case we will never have a conflict.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+#if defined(FORTRANCAP)
+#define pgasetbinaryallele_              PGASETBINARYALLELE
+#define pgagetbinaryallele_              PGAGETBINARYALLELE
+#define pgasetbinaryinitprob_            PGASETBINARYINITPROB
+#define pgagetbinaryinitprob_            PGAGETBINARYINITPROB
+#define pgasetcharacterallele_           PGASETCHARACTERALLELE
+#define pgagetcharacterallele_           PGAGETCHARACTERALLELE
+#define pgasetcharacterinittype_         PGASETCHARACTERINITTYPE
+#define pgacreate_                       PGACREATE
+#define pgasetup_                        PGASETUP
+#define pgasetrandominitflag_            PGASETRANDOMINITFLAG
+#define pgagetrandominitflag_            PGAGETRANDOMINITFLAG
+#define pgacrossover_                    PGACROSSOVER
+#define pgagetcrossovertype_             PGAGETCROSSOVERTYPE
+#define pgagetcrossoverprob_             PGAGETCROSSOVERPROB
+#define pgagetuniformcrossoverprob_      PGAGETUNIFORMCROSSOVERPROB
+#define pgasetcrossovertype_             PGASETCROSSOVERTYPE
+#define pgasetcrossoverprob_             PGASETCROSSOVERPROB
+#define pgasetuniformcrossoverprob_      PGASETUNIFORMCROSSOVERPROB
+#define pgadebugprint_                   PGADEBUGPRINT
+#define pgasetdebuglevel_                PGASETDEBUGLEVEL
+#define pgacleardebuglevel_              PGACLEARDEBUGLEVEL
+#define pgasetdebuglevelbyname_          PGASETDEBUGLEVELBYNAME
+#define pgacleardebuglevelbyname_        PGACLEARDEBUGLEVELBYNAME
+#define pgaduplicate_                    PGADUPLICATE
+#define pgachange_                       PGACHANGE
+#define pgasetnoduplicatesflag_          PGASETNODUPLICATESFLAG
+#define pgagetnoduplicatesflag_          PGAGETNODUPLICATESFLAG
+#define pgasetevaluation_                PGASETEVALUATION
+#define pgagetevaluation_                PGAGETEVALUATION
+#define pgasetevaluationuptodateflag_    PGASETEVALUATIONUPTODATEFLAG
+#define pgagetevaluationuptodateflag_    PGAGETEVALUATIONUPTODATEFLAG
+#define pgagetrealfrombinary_            PGAGETREALFROMBINARY
+#define pgagetrealfromgraycode_          PGAGETREALFROMGRAYCODE
+#define pgaencoderealasbinary_           PGAENCODEREALASBINARY
+#define pgaencoderealasgraycode_         PGAENCODEREALASGRAYCODE
+#define pgagetintegerfrombinary_         PGAGETINTEGERFROMBINARY
+#define pgagetintegerfromgraycode_       PGAGETINTEGERFROMGRAYCODE
+#define pgaencodeintegerasbinary_        PGAENCODEINTEGERASBINARY
+#define pgaencodeintegerasgraycode_      PGAENCODEINTEGERASGRAYCODE
+#define pgafitness_                      PGAFITNESS
+#define pgarank_                         PGARANK
+#define pgagetfitness_                   PGAGETFITNESS
+#define pgagetfitnesstype_               PGAGETFITNESSTYPE
+#define pgagetfitnessmintype_            PGAGETFITNESSMINTYPE
+#define pgagetmaxfitnessrank_            PGAGETMAXFITNESSRANK
+#define pgasetfitnesstype_               PGASETFITNESSTYPE
+#define pgasetfitnessmintype_            PGASETFITNESSMINTYPE
+#define pgasetmaxfitnessrank_            PGASETMAXFITNESSRANK
+#define pgasetfitnesscmaxvalue_          PGASETFITNESSCMAXVALUE
+#define pgagetfitnesscmaxvalue_          PGAGETFITNESSCMAXVALUE
+#define pgahammingdistance_              PGAHAMMINGDISTANCE
+#define pgasetintegerallele_             PGASETINTEGERALLELE
+#define pgagetintegerallele_             PGAGETINTEGERALLELE
+#define pgasetintegerinitpermute_        PGASETINTEGERINITPERMUTE
+#define pgasetintegerinitrange_          PGASETINTEGERINITRANGE
+#define pgagetintegerinittype_           PGAGETINTEGERINITTYPE
+#define pgagetminintegerinitvalue_       PGAGETMININTEGERINITVALUE
+#define pgagetmaxintegerinitvalue_       PGAGETMAXINTEGERINITVALUE
+#define pgamutate_                       PGAMUTATE
+#define pgasetmutationtype_              PGASETMUTATIONTYPE
+#define pgagetmutationtype_              PGAGETMUTATIONTYPE
+#define pgasetmutationrealvalue_         PGASETMUTATIONREALVALUE
+#define pgagetmutationrealvalue_         PGAGETMUTATIONREALVALUE
+#define pgasetmutationintegervalue_      PGASETMUTATIONINTEGERVALUE
+#define pgagetmutationintegervalue_      PGAGETMUTATIONINTEGERVALUE
+#define pgasetmutationboundedflag_       PGASETMUTATIONBOUNDEDFLAG
+#define pgagetmutationboundedflag_       PGAGETMUTATIONBOUNDEDFLAG
+#define pgasetmutationprob_              PGASETMUTATIONPROB
+#define pgagetmutationprob_              PGAGETMUTATIONPROB
+#define pgarungm_                        PGARUNGM
+#define pgaevaluate_                     PGAEVALUATE
+#define pgabuilddatatype_                PGABUILDDATATYPE
+#define pgasendindividual_               PGASENDINDIVIDUAL
+#define pgareceiveindividual_            PGARECEIVEINDIVIDUAL
+#define pgasendreceiveindividual_        PGASENDRECEIVEINDIVIDUAL
+#define pgagetrank_                      PGAGETRANK
+#define pgagetnumprocs_                  PGAGETNUMPROCS
+#define pgasetcommunicator_              PGASETCOMMUNICATOR
+#define pgagetcommunicator_              PGAGETCOMMUNICATOR
+#define pgarun_                          PGARUN
+#define pgarunmutationandcrossover_      PGARUNMUTATIONANDCROSSOVER
+#define pgarunmutationorcrossover_       PGARUNMUTATIONORCROSSOVER
+#define pgaupdategeneration_             PGAUPDATEGENERATION
+#define pgagetdatatype_                  PGAGETDATATYPE
+#define pgagetoptdirflag_                PGAGETOPTDIRFLAG
+#define pgagetstringlength_              PGAGETSTRINGLENGTH
+#define pgagetgaitervalue_               PGAGETGAITERVALUE
+#define pgasetmutationorcrossoverflag_   PGASETMUTATIONORCROSSOVERFLAG
+#define pgasetmutationandcrossoverflag_  PGASETMUTATIONANDCROSSOVERFLAG
+#define pgagetmutationorcrossoverflag_   PGAGETMUTATIONORCROSSOVERFLAG
+#define pgagetmutationandcrossoverflag_  PGAGETMUTATIONANDCROSSOVERFLAG
+#define pgasortpop_                      PGASORTPOP
+#define pgagetpopsize_                   PGAGETPOPSIZE
+#define pgagetnumreplacevalue_           PGAGETNUMREPLACEVALUE
+#define pgagetpopreplacetype_            PGAGETPOPREPLACETYPE
+#define pgagetsortedpopindex_            PGAGETSORTEDPOPINDEX
+#define pgasetpopsize_                   PGASETPOPSIZE
+#define pgasetnumreplacevalue_           PGASETNUMREPLACEVALUE
+#define pgasetpopreplacetype_            PGASETPOPREPLACETYPE
+#define pgarandomflip_                   PGARANDOMFLIP
+#define pgarandominterval_               PGARANDOMINTERVAL
+#define pgarandom01_                     PGARANDOM01
+#define pgarandomuniform_                PGARANDOMUNIFORM
+#define pgarandomgaussian_               PGARANDOMGAUSSIAN
+#define pgagetrandomseed_                PGAGETRANDOMSEED
+#define pgasetrandomseed_                PGASETRANDOMSEED
+#define pgasetrealallele_                PGASETREALALLELE
+#define pgagetrealallele_                PGAGETREALALLELE
+#define pgasetrealinitpercent_           PGASETREALINITPERCENT
+#define pgasetrealinitrange_             PGASETREALINITRANGE
+#define pgagetminrealinitvalue_          PGAGETMINREALINITVALUE
+#define pgagetmaxrealinitvalue_          PGAGETMAXREALINITVALUE
+#define pgagetrealinittype_              PGAGETREALINITTYPE
+#define pgaprintreport_                  PGAPRINTREPORT
+#define pgasetprintoptions_              PGASETPRINTOPTIONS
+#define pgasetprintfrequencyvalue_       PGASETPRINTFREQUENCYVALUE
+#define pgagetprintfrequencyvalue_       PGAGETPRINTFREQUENCYVALUE
+#define pgaprintpopulation_              PGAPRINTPOPULATION
+#define pgaprintindividual_              PGAPRINTINDIVIDUAL
+#define pgaprintstring_                  PGAPRINTSTRING
+#define pgaprintcontextvariable_         PGAPRINTCONTEXTVARIABLE
+#define pgarestart_                      PGARESTART
+#define pgasetrestartflag_               PGASETRESTARTFLAG
+#define pgagetrestartflag_               PGAGETRESTARTFLAG
+#define pgasetrestartfrequencyvalue_     PGASETRESTARTFREQUENCYVALUE
+#define pgagetrestartfrequencyvalue_     PGAGETRESTARTFREQUENCYVALUE
+#define pgasetrestartallelechangeprob_   PGASETRESTARTALLELECHANGEPROB
+#define pgagetrestartallelechangeprob_   PGAGETRESTARTALLELECHANGEPROB
+#define pgaselect_                       PGASELECT
+#define pgaselectnextindex_              PGASELECTNEXTINDEX
+#define pgasetselecttype_                PGASETSELECTTYPE
+#define pgagetselecttype_                PGAGETSELECTTYPE
+#define pgasetptournamentprob_           PGASETPTOURNAMENTPROB
+#define pgagetptournamentprob_           PGAGETPTOURNAMENTPROB
+#define pgadone_                         PGADONE
+#define pgacheckstoppingconditions_      PGACHECKSTOPPINGCONDITIONS
+#define pgasetstoppingruletype_          PGASETSTOPPINGRULETYPE
+#define pgagetstoppingruletype_          PGAGETSTOPPINGRULETYPE
+#define pgasetmaxgaitervalue_            PGASETMAXGAITERVALUE
+#define pgagetmaxgaitervalue_            PGAGETMAXGAITERVALUE
+#define pgasetmaxnochangevalue_          PGASETMAXNOCHANGEVALUE
+#define pgasetmaxsimilarityvalue_        PGASETMAXSIMILARITYVALUE
+#define pgaerror_                        PGAERROR
+#define pgadestroy_                      PGADESTROY
+#define pgagetmaxmachineintvalue_        PGAGETMAXMACHINEINTVALUE
+#define pgagetminmachineintvalue_        PGAGETMINMACHINEINTVALUE
+#define pgagetmaxmachinedoublevalue_     PGAGETMAXMACHINEDOUBLEVALUE
+#define pgagetminmachinedoublevalue_     PGAGETMINMACHINEDOUBLEVALUE
+#define pgausage_                        PGAUSAGE
+#define pgaprintversionnumber_           PGAPRINTVERSIONNUMBER
+#define pgasetuserfunction_              PGASETUSERFUNCTION
+#define pgamean_                         PGAMEAN
+#define pgastddev_                       PGASTDDEV
+#define pgaround_                        PGAROUND
+#define pgacopyindividual_               PGACOPYINDIVIDUAL
+#define pgachecksum_                     PGACHECKSUM
+#define pgagetworstindex_                PGAGETWORSTINDEX
+#define pgagetbestindex_                 PGAGETBESTINDEX
+
+#elif defined(FORTRANTWOUNDERSCORE)
+#define pgasetbinaryallele_              _pgasetbinaryallele_
+#define pgagetbinaryallele_              _pgagetbinaryallele_
+#define pgasetbinaryinitprob_            _pgasetbinaryinitprob_
+#define pgagetbinaryinitprob_            _pgagetbinaryinitprob_
+#define pgasetcharacterallele_           _pgasetcharacterallele_
+#define pgagetcharacterallele_           _pgagetcharacterallele_
+#define pgasetcharacterinittype_         _pgasetcharacterinittype_
+#define pgacreate_                       _pgacreate_
+#define pgasetup_                        _pgasetup_
+#define pgasetrandominitflag_            _pgasetrandominitflag_
+#define pgagetrandominitflag_            _pgagetrandominitflag_
+#define pgacrossover_                    _pgacrossover_
+#define pgagetcrossovertype_             _pgagetcrossovertype_
+#define pgagetcrossoverprob_             _pgagetcrossoverprob_
+#define pgagetuniformcrossoverprob_      _pgagetuniformcrossoverprob_
+#define pgasetcrossovertype_             _pgasetcrossovertype_
+#define pgasetcrossoverprob_             _pgasetcrossoverprob_
+#define pgasetuniformcrossoverprob_      _pgasetuniformcrossoverprob_
+#define pgadebugprint_                   _pgadebugprint_
+#define pgasetdebuglevel_                _pgasetdebuglevel_
+#define pgacleardebuglevel_              _pgacleardebuglevel_
+#define pgasetdebuglevelbyname_          _pgasetdebuglevelbyname_
+#define pgacleardebuglevelbyname_        _pgacleardebuglevelbyname_
+#define pgaduplicate_                    _pgaduplicate_
+#define pgachange_                       _pgachange_
+#define pgasetnoduplicatesflag_          _pgasetnoduplicatesflag_
+#define pgagetnoduplicatesflag_          _pgagetnoduplicatesflag_
+#define pgasetevaluation_                _pgasetevaluation_
+#define pgagetevaluation_                _pgagetevaluation_
+#define pgasetevaluationuptodateflag_    _pgasetevaluationuptodateflag_
+#define pgagetevaluationuptodateflag_    _pgagetevaluationuptodateflag_
+#define pgagetrealfrombinary_            _pgagetrealfrombinary_
+#define pgagetrealfromgraycode_          _pgagetrealfromgraycode_
+#define pgaencoderealasbinary_           _pgaencoderealasbinary_
+#define pgaencoderealasgraycode_         _pgaencoderealasgraycode_
+#define pgagetintegerfrombinary_         _pgagetintegerfrombinary_
+#define pgagetintegerfromgraycode_       _pgagetintegerfromgraycode_
+#define pgaencodeintegerasbinary_        _pgaencodeintegerasbinary_
+#define pgaencodeintegerasgraycode_      _pgaencodeintegerasgraycode_
+#define pgafitness_                      _pgafitness_
+#define pgarank_                         _pgarank_
+#define pgagetfitness_                   _pgagetfitness_
+#define pgagetfitnesstype_               _pgagetfitnesstype_
+#define pgagetfitnessmintype_            _pgagetfitnessmintype_
+#define pgagetmaxfitnessrank_            _pgagetmaxfitnessrank_
+#define pgasetfitnesstype_               _pgasetfitnesstype_
+#define pgasetfitnessmintype_            _pgasetfitnessmintype_
+#define pgasetmaxfitnessrank_            _pgasetmaxfitnessrank_
+#define pgasetfitnesscmaxvalue_          _pgasetfitnesscmaxvalue_
+#define pgagetfitnesscmaxvalue_          _pgagetfitnesscmaxvalue_
+#define pgahammingdistance_              _pgahammingdistance_
+#define pgasetintegerallele_             _pgasetintegerallele_
+#define pgagetintegerallele_             _pgagetintegerallele_
+#define pgasetintegerinitpermute_        _pgasetintegerinitpermute_
+#define pgasetintegerinitrange_          _pgasetintegerinitrange_
+#define pgagetintegerinittype_           _pgagetintegerinittype_
+#define pgagetminintegerinitvalue_       _pgagetminintegerinitvalue_
+#define pgagetmaxintegerinitvalue_       _pgagetmaxintegerinitvalue_
+#define pgamutate_                       _pgamutate_
+#define pgasetmutationtype_              _pgasetmutationtype_
+#define pgagetmutationtype_              _pgagetmutationtype_
+#define pgasetmutationrealvalue_         _pgasetmutationrealvalue_
+#define pgagetmutationrealvalue_         _pgagetmutationrealvalue_
+#define pgasetmutationintegervalue_      _pgasetmutationintegervalue_
+#define pgagetmutationintegervalue_      _pgagetmutationintegervalue_
+#define pgasetmutationboundedflag_       _pgasetmutationboundedflag_
+#define pgagetmutationboundedflag_       _pgagetmutationboundedflag_
+#define pgasetmutationprob_              _pgasetmutationprob_
+#define pgagetmutationprob_              _pgagetmutationprob_
+#define pgarungm_                        _pgarungm_
+#define pgaevaluate_                     _pgaevaluate_
+#define pgabuilddatatype_                _pgabuilddatatype_
+#define pgasendindividual_               _pgasendindividual_
+#define pgareceiveindividual_            _pgareceiveindividual_
+#define pgasendreceiveindividual_        _pgasendreceiveindividual_
+#define pgagetrank_                      _pgagetrank_
+#define pgagetnumprocs_                  _pgagetnumprocs_
+#define pgasetcommunicator_              _pgasetcommunicator_
+#define pgagetcommunicator_              _pgagetcommunicator_
+#define pgarun_                          _pgarun_
+#define pgarunmutationandcrossover_      _pgarunmutationandcrossover_
+#define pgarunmutationorcrossover_       _pgarunmutationorcrossover_
+#define pgaupdategeneration_             _pgaupdategeneration_
+#define pgagetdatatype_                  _pgagetdatatype_
+#define pgagetoptdirflag_                _pgagetoptdirflag_
+#define pgagetstringlength_              _pgagetstringlength_
+#define pgagetgaitervalue_               _pgagetgaitervalue_
+#define pgasetmutationorcrossoverflag_   _pgasetmutationorcrossoverflag_
+#define pgasetmutationandcrossoverflag_  _pgasetmutationandcrossoverflag_
+#define pgagetmutationorcrossoverflag_   _pgagetmutationorcrossoverflag_
+#define pgagetmutationandcrossoverflag_  _pgagetmutationandcrossoverflag_
+#define pgasortpop_                      _pgasortpop_
+#define pgagetpopsize_                   _pgagetpopsize_
+#define pgagetnumreplacevalue_           _pgagetnumreplacevalue_
+#define pgagetpopreplacetype_            _pgagetpopreplacetype_
+#define pgagetsortedpopindex_            _pgagetsortedpopindex_
+#define pgasetpopsize_                   _pgasetpopsize_
+#define pgasetnumreplacevalue_           _pgasetnumreplacevalue_
+#define pgasetpopreplacetype_            _pgasetpopreplacetype_
+#define pgarandomflip_                   _pgarandomflip_
+#define pgarandominterval_               _pgarandominterval_
+#define pgarandom01_                     _pgarandom01_
+#define pgarandomuniform_                _pgarandomuniform_
+#define pgarandomgaussian_               _pgarandomgaussian_
+#define pgagetrandomseed_                _pgagetrandomseed_
+#define pgasetrandomseed_                _pgasetrandomseed_
+#define pgasetrealallele_                _pgasetrealallele_
+#define pgagetrealallele_                _pgagetrealallele_
+#define pgasetrealinitpercent_           _pgasetrealinitpercent_
+#define pgasetrealinitrange_             _pgasetrealinitrange_
+#define pgagetminrealinitvalue_          _pgagetminrealinitvalue_
+#define pgagetmaxrealinitvalue_          _pgagetmaxrealinitvalue_
+#define pgagetrealinittype_              _pgagetrealinittype_
+#define pgaprintreport_                  _pgaprintreport_
+#define pgasetprintoptions_              _pgasetprintoptions_
+#define pgasetprintfrequencyvalue_       _pgasetprintfrequencyvalue_
+#define pgagetprintfrequencyvalue_       _pgagetprintfrequencyvalue_
+#define pgaprintpopulation_              _pgaprintpopulation_
+#define pgaprintindividual_              _pgaprintindividual_
+#define pgaprintstring_                  _pgaprintstring_
+#define pgaprintcontextvariable_         _pgaprintcontextvariable_
+#define pgarestart_                      _pgarestart_
+#define pgasetrestartflag_               _pgasetrestartflag_
+#define pgagetrestartflag_               _pgagetrestartflag_
+#define pgasetrestartfrequencyvalue_     _pgasetrestartfrequencyvalue_
+#define pgagetrestartfrequencyvalue_     _pgagetrestartfrequencyvalue_
+#define pgasetrestartallelechangeprob_   _pgasetrestartallelechangeprob_
+#define pgagetrestartallelechangeprob_   _pgagetrestartallelechangeprob_
+#define pgaselect_                       _pgaselect_
+#define pgaselectnextindex_              _pgaselectnextindex_
+#define pgasetselecttype_                _pgasetselecttype_
+#define pgagetselecttype_                _pgagetselecttype_
+#define pgasetptournamentprob_           _pgasetptournamentprob_
+#define pgagetptournamentprob_           _pgagetptournamentprob_
+#define pgadone_                         _pgadone_
+#define pgacheckstoppingconditions_      _pgacheckstoppingconditions_
+#define pgasetstoppingruletype_          _pgasetstoppingruletype_
+#define pgagetstoppingruletype_          _pgagetstoppingruletype_
+#define pgasetmaxgaitervalue_            _pgasetmaxgaitervalue_
+#define pgagetmaxgaitervalue_            _pgagetmaxgaitervalue_
+#define pgasetmaxnochangevalue_          _pgasetmaxnochangevalue_
+#define pgasetmaxsimilarityvalue_        _pgasetmaxsimilarityvalue_
+#define pgaerror_                        _pgaerror_
+#define pgadestroy_                      _pgadestroy_
+#define pgagetmaxmachineintvalue_        _pgagetmaxmachineintvalue_
+#define pgagetminmachineintvalue_        _pgagetminmachineintvalue_
+#define pgagetmaxmachinedoublevalue_     _pgagetmaxmachinedoublevalue_
+#define pgagetminmachinedoublevalue_     _pgagetminmachinedoublevalue_
+#define pgausage_                        _pgausage_
+#define pgaprintversionnumber_           _pgaprintversionnumber_
+#define pgasetuserfunction_              _pgasetuserfunction_
+#define pgamean_                         _pgamean_
+#define pgastddev_                       _pgastddev_
+#define pgaround_                        _pgaround_
+#define pgacopyindividual_               _pgacopyindividual_
+#define pgachecksum_                     _pgachecksum_
+#define pgagetworstindex_                _pgagetworstindex_
+#define pgagetbestindex_                 _pgagetbestindex_
+
+#elif !defined(FORTRANUNDERSCORE)
+#define pgasetbinaryallele_              pgasetbinaryallele
+#define pgagetbinaryallele_              pgagetbinaryallele
+#define pgasetbinaryinitprob_            pgasetbinaryinitprob
+#define pgagetbinaryinitprob_            pgagetbinaryinitprob
+#define pgasetcharacterallele_           pgasetcharacterallele
+#define pgagetcharacterallele_           pgagetcharacterallele
+#define pgasetcharacterinittype_         pgasetcharacterinittype
+#define pgacreate_                       pgacreate
+#define pgasetup_                        pgasetup
+#define pgasetrandominitflag_            pgasetrandominitflag
+#define pgagetrandominitflag_            pgagetrandominitflag
+#define pgacrossover_                    pgacrossover
+#define pgagetcrossovertype_             pgagetcrossovertype
+#define pgagetcrossoverprob_             pgagetcrossoverprob
+#define pgagetuniformcrossoverprob_      pgagetuniformcrossoverprob
+#define pgasetcrossovertype_             pgasetcrossovertype
+#define pgasetcrossoverprob_             pgasetcrossoverprob
+#define pgasetuniformcrossoverprob_      pgasetuniformcrossoverprob
+#define pgadebugprint_                   pgadebugprint
+#define pgasetdebuglevel_                pgasetdebuglevel
+#define pgacleardebuglevel_              pgacleardebuglevel
+#define pgasetdebuglevelbyname_          pgasetdebuglevelbyname
+#define pgacleardebuglevelbyname_        pgacleardebuglevelbyname
+#define pgaduplicate_                    pgaduplicate
+#define pgachange_                       pgachange
+#define pgasetnoduplicatesflag_          pgasetnoduplicatesflag
+#define pgagetnoduplicatesflag_          pgagetnoduplicatesflag
+#define pgasetevaluation_                pgasetevaluation
+#define pgagetevaluation_                pgagetevaluation
+#define pgasetevaluationuptodateflag_    pgasetevaluationuptodateflag
+#define pgagetevaluationuptodateflag_    pgagetevaluationuptodateflag
+#define pgagetrealfrombinary_            pgagetrealfrombinary
+#define pgagetrealfromgraycode_          pgagetrealfromgraycode
+#define pgaencoderealasbinary_           pgaencoderealasbinary
+#define pgaencoderealasgraycode_         pgaencoderealasgraycode
+#define pgagetintegerfrombinary_         pgagetintegerfrombinary
+#define pgagetintegerfromgraycode_       pgagetintegerfromgraycode
+#define pgaencodeintegerasbinary_        pgaencodeintegerasbinary
+#define pgaencodeintegerasgraycode_      pgaencodeintegerasgraycode
+#define pgafitness_                      pgafitness
+#define pgarank_                         pgarank
+#define pgagetfitness_                   pgagetfitness
+#define pgagetfitnesstype_               pgagetfitnesstype
+#define pgagetfitnessmintype_            pgagetfitnessmintype
+#define pgagetmaxfitnessrank_            pgagetmaxfitnessrank
+#define pgasetfitnesstype_               pgasetfitnesstype
+#define pgasetfitnessmintype_            pgasetfitnessmintype
+#define pgasetmaxfitnessrank_            pgasetmaxfitnessrank
+#define pgasetfitnesscmaxvalue_          pgasetfitnesscmaxvalue
+#define pgagetfitnesscmaxvalue_          pgagetfitnesscmaxvalue
+#define pgahammingdistance_              pgahammingdistance
+#define pgasetintegerallele_             pgasetintegerallele
+#define pgagetintegerallele_             pgagetintegerallele
+#define pgasetintegerinitpermute_        pgasetintegerinitpermute
+#define pgasetintegerinitrange_          pgasetintegerinitrange
+#define pgagetintegerinittype_           pgagetintegerinittype
+#define pgagetminintegerinitvalue_       pgagetminintegerinitvalue
+#define pgagetmaxintegerinitvalue_       pgagetmaxintegerinitvalue
+#define pgamutate_                       pgamutate
+#define pgasetmutationtype_              pgasetmutationtype
+#define pgagetmutationtype_              pgagetmutationtype
+#define pgasetmutationrealvalue_         pgasetmutationrealvalue
+#define pgagetmutationrealvalue_         pgagetmutationrealvalue
+#define pgasetmutationintegervalue_      pgasetmutationintegervalue
+#define pgagetmutationintegervalue_      pgagetmutationintegervalue
+#define pgasetmutationboundedflag_       pgasetmutationboundedflag
+#define pgagetmutationboundedflag_       pgagetmutationboundedflag
+#define pgasetmutationprob_              pgasetmutationprob
+#define pgagetmutationprob_              pgagetmutationprob
+#define pgarungm_                        pgarungm
+#define pgaevaluate_                     pgaevaluate
+#define pgabuilddatatype_                pgabuilddatatype
+#define pgasendindividual_               pgasendindividual
+#define pgareceiveindividual_            pgareceiveindividual
+#define pgasendreceiveindividual_        pgasendreceiveindividual
+#define pgagetrank_                      pgagetrank
+#define pgagetnumprocs_                  pgagetnumprocs
+#define pgasetcommunicator_              pgasetcommunicator
+#define pgagetcommunicator_              pgagetcommunicator
+#define pgarun_                          pgarun
+#define pgarunmutationandcrossover_      pgarunmutationandcrossover
+#define pgarunmutationorcrossover_       pgarunmutationorcrossover
+#define pgaupdategeneration_             pgaupdategeneration
+#define pgagetdatatype_                  pgagetdatatype
+#define pgagetoptdirflag_                pgagetoptdirflag
+#define pgagetstringlength_              pgagetstringlength
+#define pgagetgaitervalue_               pgagetgaitervalue
+#define pgasetmutationorcrossoverflag_   pgasetmutationorcrossoverflag
+#define pgasetmutationandcrossoverflag_  pgasetmutationandcrossoverflag
+#define pgagetmutationorcrossoverflag_   pgagetmutationorcrossoverflag
+#define pgagetmutationandcrossoverflag_  pgagetmutationandcrossoverflag
+#define pgasortpop_                      pgasortpop
+#define pgagetpopsize_                   pgagetpopsize
+#define pgagetnumreplacevalue_           pgagetnumreplacevalue
+#define pgagetpopreplacetype_            pgagetpopreplacetype
+#define pgagetsortedpopindex_            pgagetsortedpopindex
+#define pgasetpopsize_                   pgasetpopsize
+#define pgasetnumreplacevalue_           pgasetnumreplacevalue
+#define pgasetpopreplacetype_            pgasetpopreplacetype
+#define pgarandomflip_                   pgarandomflip
+#define pgarandominterval_               pgarandominterval
+#define pgarandom01_                     pgarandom01
+#define pgarandomuniform_                pgarandomuniform
+#define pgarandomgaussian_               pgarandomgaussian
+#define pgagetrandomseed_                pgagetrandomseed
+#define pgasetrandomseed_                pgasetrandomseed
+#define pgasetrealallele_                pgasetrealallele
+#define pgagetrealallele_                pgagetrealallele
+#define pgasetrealinitpercent_           pgasetrealinitpercent
+#define pgasetrealinitrange_             pgasetrealinitrange
+#define pgagetminrealinitvalue_          pgagetminrealinitvalue
+#define pgagetmaxrealinitvalue_          pgagetmaxrealinitvalue
+#define pgagetrealinittype_              pgagetrealinittype
+#define pgaprintreport_                  pgaprintreport
+#define pgasetprintoptions_              pgasetprintoptions
+#define pgasetprintfrequencyvalue_       pgasetprintfrequencyvalue
+#define pgagetprintfrequencyvalue_       pgagetprintfrequencyvalue
+#define pgaprintpopulation_              pgaprintpopulation
+#define pgaprintindividual_              pgaprintindividual
+#define pgaprintstring_                  pgaprintstring
+#define pgaprintcontextvariable_         pgaprintcontextvariable
+#define pgarestart_                      pgarestart
+#define pgasetrestartflag_               pgasetrestartflag
+#define pgagetrestartflag_               pgagetrestartflag
+#define pgasetrestartfrequencyvalue_     pgasetrestartfrequencyvalue
+#define pgagetrestartfrequencyvalue_     pgagetrestartfrequencyvalue
+#define pgasetrestartallelechangeprob_   pgasetrestartallelechangeprob
+#define pgagetrestartallelechangeprob_   pgagetrestartallelechangeprob
+#define pgaselect_                       pgaselect
+#define pgaselectnextindex_              pgaselectnextindex
+#define pgasetselecttype_                pgasetselecttype
+#define pgagetselecttype_                pgagetselecttype
+#define pgasetptournamentprob_           pgasetptournamentprob
+#define pgagetptournamentprob_           pgagetptournamentprob
+#define pgadone_                         pgadone
+#define pgacheckstoppingconditions_      pgacheckstoppingconditions
+#define pgasetstoppingruletype_          pgasetstoppingruletype
+#define pgagetstoppingruletype_          pgagetstoppingruletype
+#define pgasetmaxgaitervalue_            pgasetmaxgaitervalue
+#define pgagetmaxgaitervalue_            pgagetmaxgaitervalue
+#define pgasetmaxnochangevalue_          pgasetmaxnochangevalue
+#define pgasetmaxsimilarityvalue_        pgasetmaxsimilarityvalue
+#define pgaerror_                        pgaerror
+#define pgadestroy_                      pgadestroy
+#define pgagetmaxmachineintvalue_        pgagetmaxmachineintvalue
+#define pgagetminmachineintvalue_        pgagetminmachineintvalue
+#define pgagetmaxmachinedoublevalue_     pgagetmaxmachinedoublevalue
+#define pgagetminmachinedoublevalue_     pgagetminmachinedoublevalue
+#define pgausage_                        pgausage
+#define pgaprintversionnumber_           pgaprintversionnumber
+#define pgasetuserfunction_              pgasetuserfunction
+#define pgamean_                         pgamean
+#define pgastddev_                       pgastddev
+#define pgaround_                        pgaround
+#define pgacopyindividual_               pgacopyindividual
+#define pgachecksum_                     pgachecksum
+#define pgagetworstindex_                pgagetworstindex
+#define pgagetbestindex_                 pgagetbestindex
+#endif
+
+void pgasetbinaryallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     int *val);
+int pgagetbinaryallele_(PGAContext **ftx, int *p, int *pop, int *i);
+void pgasetbinaryinitprob_(PGAContext **ftx, double *probability);
+double pgagetbinaryinitprob_(PGAContext **ftx);
+void pgasetcharacterallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     char *val);
+void pgagetcharacterallele_(char *retval_ptr, int retval_len, PGAContext **ftx,
+     int *p, int *pop, int *i);
+void pgasetcharacterinittype_(PGAContext **ftx, int *value);
+unsigned long pgacreate_(int *datatype, int *len, int *maxormin);
+void pgasetup_(PGAContext **ftx);
+void pgasetrandominitflag_(PGAContext **ftx, int *RandomBoolean);
+int pgagetrandominitflag_(PGAContext **ftx);
+void pgacrossover_(PGAContext **ftx, int *m1, int *m2, int *oldpop, int *t1,
+     int *t2, int *newpop);
+int pgagetcrossovertype_(PGAContext **ftx);
+double pgagetcrossoverprob_(PGAContext **ftx);
+double pgagetuniformcrossoverprob_(PGAContext **ftx);
+void pgasetcrossovertype_(PGAContext **ftx, int *crossover_type);
+void pgasetcrossoverprob_(PGAContext **ftx, double *crossover_prob);
+void pgasetuniformcrossoverprob_(PGAContext **ftx,
+     double *uniform_cross_prob);
+void pgadebugprint_(PGAContext **ftx, int *level, char *funcname, char *msg,
+     int *datatype, void *data, int len1, int len2);
+void pgasetdebuglevel_(PGAContext **ftx, int *level);
+void pgacleardebuglevel_(PGAContext **ftx, int *level);
+void pgasetdebuglevelbyname_(PGAContext **ftx, char *name, int len);
+void pgacleardebuglevelbyname_(PGAContext **ftx, char *name, int len);
+int pgaduplicate_(PGAContext **ftx, int *j, int *pop1, int *pop2, int *n);
+void pgachange_(PGAContext **ftx, int *j, int *popindex);
+void pgasetnoduplicatesflag_(PGAContext **ftx, int *no_dup);
+int pgagetnoduplicatesflag_(PGAContext **ftx);
+void pgasetevaluation_( PGAContext **ftx, int *p, int *pop, double *val );
+double pgagetevaluation_(PGAContext **ftx, int *p, int *pop);
+void pgasetevaluationuptodateflag_(PGAContext **ftx, int *p, int *pop, int *status);
+int pgagetevaluationuptodateflag_(PGAContext **ftx, int *p, int *pop);
+double pgagetrealfrombinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper);
+double pgagetrealfromgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper);
+void pgaencoderealasbinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper,
+     double *value);
+void pgaencoderealasgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper,
+     double *value);
+int pgagetintegerfrombinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end);
+int pgagetintegerfromgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end);
+void pgaencodeintegerasbinary_(PGAContext **ftx, int *p, int *pop,
+     int*start, int *end, int *value);
+void pgaencodeintegerasgraycode_(PGAContext **ftx, int *p, int *pop,
+     int*start, int *end, int *value);
+void pgafitness_(PGAContext **ftx, int *popindex);
+int pgarank_(PGAContext **ftx, int *p, int *order, int *n);
+double pgagetfitness_(PGAContext **ftx, int *p, int *pop);
+int pgagetfitnesstype_(PGAContext **ftx);
+int pgagetfitnessmintype_(PGAContext **ftx);
+double pgagetmaxfitnessrank_(PGAContext **ftx);
+void pgasetfitnesstype_(PGAContext **ftx, int *fitness_type);
+void pgasetfitnessmintype_(PGAContext **ftx, int *fitness_type);
+void pgasetmaxfitnessrank_(PGAContext **ftx, double *fitness_rank_max);
+void pgasetfitnesscmaxvalue_(PGAContext **ftx, double *val);
+double pgagetfitnesscmaxvalue_(PGAContext **ftx);
+double pgahammingdistance_(PGAContext **ftx, int *popindex);
+void pgasetintegerallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     int *val);
+int pgagetintegerallele_(PGAContext **ftx, int *p, int *pop, int *i);
+void pgasetintegerinitpermute_(PGAContext **ftx, int *min, int *max);
+void pgasetintegerinitrange_ (PGAContext **ftx, int *min, int *max);
+int pgagetintegerinittype_(PGAContext **ftx);
+int pgagetminintegerinitvalue_ (PGAContext **ftx, int *i);
+int pgagetmaxintegerinitvalue_ (PGAContext **ftx, int *i);
+void pgamutate_(PGAContext **ftx, int *p, int *pop);
+void pgasetmutationtype_(PGAContext **ftx, int *mutation_type);
+int pgagetmutationtype_(PGAContext **ftx);
+void pgasetmutationrealvalue_(PGAContext **ftx, double *val);
+double pgagetmutationrealvalue_(PGAContext **ftx);
+void pgasetmutationintegervalue_(PGAContext **ftx, int *val);
+int pgagetmutationintegervalue_(PGAContext **ftx);
+void pgasetmutationboundedflag_(PGAContext **ftx, int *val);
+int pgagetmutationboundedflag_(PGAContext **ftx);
+void pgasetmutationprob_(PGAContext **ftx, double *mutation_prob);
+double pgagetmutationprob_(PGAContext **ftx);
+void pgarungm_(PGAContext **ftx, double (*f)(PGAContext *, int, int),
+     MPI_Comm *comm);
+void pgaevaluate_(PGAContext **ftx, int *pop,
+     double (*f)(PGAContext *, int, int), MPI_Comm *comm);
+unsigned long pgabuilddatatype_(PGAContext **ftx, int *p, int *pop);
+void pgasendindividual_(PGAContext **ftx, int *p, int *pop, int *dest, int *tag, MPI_Comm *comm);
+void pgareceiveindividual_(PGAContext **ftx, int *p, int *pop, int *source, int *tag, MPI_Comm *comm, MPI_Status *status);
+void pgasendreceiveindividual_(PGAContext **ftx, int *send_p, int *send_pop, int *dest, int *send_tag, int *recv_p, int *recv_pop, int *source, int *recv_tag, MPI_Comm *comm, MPI_Status *status);
+int pgagetrank_(PGAContext **ftx, MPI_Comm *comm);
+int pgagetnumprocs_(PGAContext **ftx, MPI_Comm *comm);
+void pgasetcommunicator_(PGAContext **ftx, MPI_Comm *comm);
+MPI_Comm pgagetcommunicator_(PGAContext **ftx);
+void pgarun_(PGAContext **ftx,
+     double (*evaluate)(PGAContext *c, int p, int pop));
+void pgarunmutationandcrossover_(PGAContext **ftx, int *oldpop,
+     int *newpop);
+void pgarunmutationorcrossover_(PGAContext **ftx, int *oldpop, int *newpop);
+void pgaupdategeneration_(PGAContext **ftx, MPI_Comm *comm);
+int pgagetdatatype_(PGAContext **ftx);
+int pgagetoptdirflag_(PGAContext **ftx);
+int pgagetstringlength_(PGAContext **ftx);
+int pgagetgaitervalue_(PGAContext **ftx);
+void pgasetmutationorcrossoverflag_(PGAContext **ftx, int *flag);
+void pgasetmutationandcrossoverflag_(PGAContext **ftx, int *flag);
+int pgagetmutationorcrossoverflag_(PGAContext **ftx);
+int pgagetmutationandcrossoverflag_(PGAContext **ftx);
+void pgasortpop_(PGAContext **ftx, int *pop);
+int pgagetpopsize_(PGAContext **ftx);
+int pgagetnumreplacevalue_(PGAContext **ftx);
+int pgagetpopreplacetype_(PGAContext **ftx);
+int pgagetsortedpopindex_(PGAContext **ftx, int *n);
+void pgasetpopsize_(PGAContext **ftx, int *popsize);
+void pgasetnumreplacevalue_(PGAContext **ftx, int *pop_replace);
+void pgasetpopreplacetype_(PGAContext **ftx, int *pop_replace);
+int pgarandomflip_(PGAContext **ftx, double *p);
+int pgarandominterval_(PGAContext **ftx, int *start, int *end);
+double pgarandom01_(PGAContext **ftx, int *newseed);
+double pgarandomuniform_(PGAContext **ftx, double *start, double *end);
+double pgarandomgaussian_(PGAContext **ftx, double *mean, double *sigma);
+int pgagetrandomseed_(PGAContext **ftx);
+void pgasetrandomseed_(PGAContext **ftx, int *seed);
+void pgasetrealallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     double *val);
+double pgagetrealallele_(PGAContext **ftx, int *p, int *pop, int *i);
+void pgasetrealinitpercent_(PGAContext **ftx, double *median, double *percent);
+void pgasetrealinitrange_ (PGAContext **ftx, double *min, double *max);
+double pgagetminrealinitvalue_(PGAContext **ftx, int *i);
+double pgagetmaxrealinitvalue_(PGAContext **ftx, int *i);
+int pgagetrealinittype_(PGAContext **ftx);
+void pgaprintreport_(PGAContext **ftx, char *name, int *pop, int len);
+void pgasetprintoptions_(PGAContext **ftx, int *option);
+void pgasetprintfrequencyvalue_(PGAContext **ftx, int *print_freq);
+int pgagetprintfrequencyvalue_(PGAContext **ftx);
+void pgaprintpopulation_(PGAContext **ftx, char *name, int *pop, int len);
+void pgaprintindividual_ (PGAContext **ftx, char *name, int *p,
+     int *pop, int len);
+void pgaprintstring_ (PGAContext **ftx, char *name, int *p,
+     int *pop, int len);
+void pgaprintcontextvariable_(PGAContext **ftx, char *name, int len);
+void pgarestart_(PGAContext **ftx, int *source_pop, int *dest_pop);
+void pgasetrestartflag_(PGAContext **ftx, int *val);
+int pgagetrestartflag_(PGAContext **ftx);
+void pgasetrestartfrequencyvalue_(PGAContext **ftx, int *numiter);
+int pgagetrestartfrequencyvalue_(PGAContext **ftx);
+void pgasetrestartallelechangeprob_(PGAContext **ftx, double *prob);
+double pgagetrestartallelechangeprob_(PGAContext **ftx);
+void pgaselect_(PGAContext **ftx, int *popix);
+int pgaselectnextindex_(PGAContext **ftx);
+void pgasetselecttype_(PGAContext **ftx, int *select_type);
+int pgagetselecttype_(PGAContext **ftx);
+void pgasetptournamentprob_(PGAContext **ftx, double *ptournament_prob);
+double pgagetptournamentprob_(PGAContext **ftx);
+int pgadone_(PGAContext **ftx, MPI_Comm *comm);
+int pgacheckstoppingconditions_(PGAContext **ftx);
+void pgasetstoppingruletype_(PGAContext **ftx, int *stoprule);
+int pgagetstoppingruletype_(PGAContext **ftx);
+void pgasetmaxgaitervalue_(PGAContext **ftx, int *maxiter);
+int pgagetmaxgaitervalue_(PGAContext **ftx);
+void pgasetmaxnochangevalue_(PGAContext **ftx, int *max_no_change);
+void pgasetmaxsimilarityvalue_(PGAContext **ftx, int *max_similarity);
+void pgaerror_(PGAContext **ftx, char *msg, int *level, int *datatype,
+     void **data, int len);
+void pgadestroy_(PGAContext **ftx);
+int pgagetmaxmachineintvalue_(PGAContext **ftx);
+int pgagetminmachineintvalue_(PGAContext **ftx);
+double pgagetmaxmachinedoublevalue_(PGAContext **ftx);
+double pgagetminmachinedoublevalue_(PGAContext **ftx);
+void pgausage_(PGAContext **ftx);
+void pgaprintversionnumber_(PGAContext **ftx);
+void pgasetuserfunction_(PGAContext **ftx, int *constant, void *f);
+double pgamean_(PGAContext **ftx, double *a, int *n);
+double pgastddev_(PGAContext **ftx, double *a, int *n, double *m);
+int pgaround_(PGAContext **ftx, double *x);
+void pgacopyindividual_(PGAContext **ftx, int *i, int *p1, int *j, int *p2);
+int pgachecksum_(PGAContext **ftx, int *p, int *pop);
+int pgagetworstindex_(PGAContext **ftx, int *pop);
+int pgagetbestindex_(PGAContext **ftx, int *pop);
+
+void pgasetbinaryallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     int *val)
+{
+     PGASetBinaryAllele(*ftx,
+	   *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+	   *pop, *i-1, *val);
+}
+
+int pgagetbinaryallele_(PGAContext **ftx, int *p, int *pop, int *i)
+{
+     return PGAGetBinaryAllele(*ftx,
+		  *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		  *pop, *i-1);
+}
+
+void pgasetbinaryinitprob_(PGAContext **ftx, double *probability)
+{
+     PGASetBinaryInitProb  (*ftx, *probability);
+}
+
+double pgagetbinaryinitprob_(PGAContext **ftx)
+{
+     return PGAGetBinaryInitProb  (*ftx);
+}
+
+void pgasetcharacterallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     char *val)
+{
+     PGASetCharacterAllele(*ftx,
+	   *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+	   *pop, *i-1, *val);
+}
+
+void pgagetcharacterallele_(char *retval_ptr, int retval_len, PGAContext **ftx,
+     int *p, int *pop, int *i)
+{
+     *retval_ptr = PGAGetCharacterAllele(*ftx,
+		  *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		  *pop, *i-1);
+}
+
+void pgasetcharacterinittype_(PGAContext **ftx, int *value)
+{
+     PGASetCharacterInitType  (*ftx, *value);
+}
+
+unsigned long pgacreate_(int *datatype, int *len, int *maxormin)
+{
+     int argc;
+     char *argv[1];
+     PGAContext *ctx;
+
+     argv[0] = "pgapack";
+     argc = 1;
+
+     ctx = PGACreate(&argc, argv, *datatype, *len, *maxormin);
+     ctx->sys.UserFortran = PGA_TRUE;
+
+     return (unsigned long)ctx;
+}
+
+void pgasetup_(PGAContext **ftx)
+{
+     PGASetUp  (*ftx);
+}
+
+void pgasetrandominitflag_(PGAContext **ftx, int *RandomBoolean)
+{
+     PGASetRandomInitFlag  (*ftx, *RandomBoolean);
+}
+
+int pgagetrandominitflag_(PGAContext **ftx)
+{
+     return PGAGetRandomInitFlag  (*ftx);
+}
+
+void pgacrossover_(PGAContext **ftx, int *m1, int *m2, int *oldpop, int *t1,
+     int *t2, int *newpop)
+{
+     PGACrossover (*ftx,
+		   *m1 == PGA_TEMP1 || *m1 == PGA_TEMP2 ? *m1 : *m1-1,
+		   *m2 == PGA_TEMP1 || *m2 == PGA_TEMP2 ? *m2 : *m2-1,
+		   *oldpop,
+		   *t1 == PGA_TEMP1 || *t1 == PGA_TEMP2 ? *t1 : *t1-1,
+		   *t2 == PGA_TEMP1 || *t2 == PGA_TEMP2 ? *t2 : *t2-1,
+		   *newpop);
+}
+
+int pgagetcrossovertype_(PGAContext **ftx)
+{
+     return PGAGetCrossoverType  (*ftx);
+}
+
+double pgagetcrossoverprob_(PGAContext **ftx)
+{
+     return PGAGetCrossoverProb  (*ftx);
+}
+
+double pgagetuniformcrossoverprob_(PGAContext **ftx)
+{
+     return PGAGetUniformCrossoverProb  (*ftx);
+}
+
+void pgasetcrossovertype_(PGAContext **ftx, int *crossover_type)
+{
+     PGASetCrossoverType  (*ftx, *crossover_type);
+}
+
+void pgasetcrossoverprob_(PGAContext **ftx, double *crossover_prob)
+{
+     PGASetCrossoverProb  (*ftx, *crossover_prob);
+}
+
+void pgasetuniformcrossoverprob_(PGAContext **ftx,
+     double *uniform_cross_prob)
+{
+     PGASetUniformCrossoverProb  (*ftx, *uniform_cross_prob);
+}
+
+#if OPTIMIZE==0
+void pgadebugprint_(PGAContext **ftx, int *level, char *funcname, char *msg,
+     int *datatype, void *data, int len1, int len2)
+/* FORTRAN implicitly passes the lengths of funcname and msg into len1
+   and len2, respectively */
+{
+     if (funcname[len1] != 0 || msg[len2] != 0)
+	  funcname[len1] = msg[len2] = 0;
+     PGADebugPrint(*ftx, *level, funcname, msg, *datatype, data );
+}
+#else
+void pgadebugprint_(PGAContext **ftx, int *level, char *funcname, char *msg,
+		    int *datatype, void *data, int len1, int len2)
+{
+     printf("PGADebugPrint is not supported in the optimized version of PGAPack.\n");
+}
+#endif
+
+#if OPTIMIZE==0
+void pgasetdebuglevel_(PGAContext **ftx, int *level)
+{
+    PGASetDebugLevel(*ftx, *level);
+}
+#else
+void pgasetdebuglevel_(PGAContext **ftx, int *level)
+{
+    printf("PGASetDebugLevel is not supported in the optimized version of PGAPack.\n");
+}
+#endif
+#if OPTIMIZE==0
+void pgacleardebuglevel_(PGAContext **ftx, int *level)
+{
+    PGAClearDebugLevel(*ftx, *level);
+}
+#else
+void pgacleardebuglevel_(PGAContext **ftx, int *level)
+{
+    printf("PGAClearDebugLevel is not supported in the optimized version of PGAPack.\n");
+}
+#endif
+#if OPTIMIZE==0
+void pgasetdebuglevelbyname_(PGAContext **ftx, char *name, int len)
+{
+    if (name[len] != 0)  name[len] = 0;
+    PGASetDebugLevelByName(*ftx, name);
+}
+#else
+void pgasetdebuglevelbyname_(PGAContext **ftx, char *name, int len)
+{
+    printf("PGASetDebugLevelByName is not supported in the optimized version of PGAPack.\n");
+}
+#endif
+#if OPTIMIZE==0
+void pgacleardebuglevelbyname_(PGAContext **ftx, char *name, int len)
+{
+    if (name[len] != 0)  name[len] = 0;
+    PGAClearDebugLevelByName(*ftx, name);
+}
+#else
+void pgacleardebuglevelbyname_(PGAContext **ftx, char *name, int len)
+{
+    printf("PGAClearDebugLevelByName is not supported in the optimized version of PGAPack.\n");
+}
+#endif
+int pgaduplicate_(PGAContext **ftx, int *j, int *pop1, int *pop2, int *n)
+{
+     return PGADuplicate(*ftx,
+		  *j == PGA_TEMP1 || *j == PGA_TEMP2 ? *j : *j-1,
+		  *pop1, *pop2, *n);
+}
+
+void pgachange_(PGAContext **ftx, int *j, int *popindex)
+{
+     PGAChange(*ftx,
+	   *j == PGA_TEMP1 || *j == PGA_TEMP2 ? *j : *j-1,
+	   *popindex);
+}
+
+void pgasetnoduplicatesflag_(PGAContext **ftx, int *no_dup)
+{
+     PGASetNoDuplicatesFlag  (*ftx, *no_dup);
+}
+
+int pgagetnoduplicatesflag_(PGAContext **ftx)
+{
+     return PGAGetNoDuplicatesFlag  (*ftx);
+}
+
+void pgasetevaluation_( PGAContext **ftx, int *p, int *pop, double *val )
+{
+     PGASetEvaluation(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1,
+           *pop, *val );
+}
+
+double pgagetevaluation_(PGAContext **ftx, int *p, int *pop)
+{
+     return PGAGetEvaluation(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1, *pop);
+}
+
+void pgasetevaluationuptodateflag_(PGAContext **ftx, int *p, int *pop, int *status)
+{
+     PGASetEvaluationUpToDateFlag(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1,
+           *pop, *status);
+}
+
+int pgagetevaluationuptodateflag_(PGAContext **ftx, int *p, int *pop)
+{
+     return PGAGetEvaluationUpToDateFlag(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1, *pop);
+}
+
+double pgagetrealfrombinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper)
+{
+     return PGAGetRealFromBinary(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *lower, *upper);
+}
+
+double pgagetrealfromgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper)
+{
+     return PGAGetRealFromGrayCode(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *lower, *upper);
+}
+
+void pgaencoderealasbinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper,
+     double *value)
+{
+     PGAEncodeRealAsBinary(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *lower, *upper, *value);
+}
+
+void pgaencoderealasgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper,
+     double *value)
+{
+     PGAEncodeRealAsGrayCode(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *lower, *upper, *value);
+}
+
+int pgagetintegerfrombinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end)
+{
+     return PGAGetIntegerFromBinary(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1);
+}
+
+int pgagetintegerfromgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end)
+{
+     return PGAGetIntegerFromGrayCode(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1);
+}
+
+void pgaencodeintegerasbinary_(PGAContext **ftx, int *p, int *pop,
+     int*start, int *end, int *value)
+{
+     PGAEncodeIntegerAsBinary(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *value);
+}
+
+void pgaencodeintegerasgraycode_(PGAContext **ftx, int *p, int *pop,
+     int*start, int *end, int *value)
+{
+     PGAEncodeIntegerAsGrayCode(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *value);
+}
+
+void pgafitness_(PGAContext **ftx, int *popindex)
+{
+     PGAFitness  (*ftx, *popindex);
+}
+
+int pgarank_(PGAContext **ftx, int *p, int *order, int *n)
+{
+    return PGARank(*ftx, *p-1, order, *n);
+}
+
+double pgagetfitness_(PGAContext **ftx, int *p, int *pop)
+{
+     return PGAGetFitness(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1, *pop);
+}
+
+int pgagetfitnesstype_(PGAContext **ftx)
+{
+     return PGAGetFitnessType  (*ftx);
+}
+
+int pgagetfitnessmintype_(PGAContext **ftx)
+{
+     return PGAGetFitnessMinType  (*ftx);
+}
+
+double pgagetmaxfitnessrank_(PGAContext **ftx)
+{
+     return PGAGetMaxFitnessRank  (*ftx);
+}
+
+void pgasetfitnesstype_(PGAContext **ftx, int *fitness_type)
+{
+     PGASetFitnessType  (*ftx, *fitness_type);
+}
+
+void pgasetfitnessmintype_(PGAContext **ftx, int *fitness_type)
+{
+     PGASetFitnessMinType  (*ftx, *fitness_type);
+}
+
+void pgasetmaxfitnessrank_(PGAContext **ftx, double *fitness_rank_max)
+{
+     PGASetMaxFitnessRank  (*ftx, *fitness_rank_max);
+}
+
+void pgasetfitnesscmaxvalue_(PGAContext **ftx, double *val)
+{
+     PGASetFitnessCmaxValue  (*ftx, *val);
+}
+
+double pgagetfitnesscmaxvalue_(PGAContext **ftx)
+{
+     return PGAGetFitnessCmaxValue  (*ftx);
+}
+
+double pgahammingdistance_(PGAContext **ftx, int *popindex)
+{
+     return PGAHammingDistance  (*ftx, *popindex);
+}
+
+void pgasetintegerallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     int *val)
+{
+     PGASetIntegerAllele(*ftx,
+	   *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+	   *pop, *i-1, *val);
+}
+
+int pgagetintegerallele_(PGAContext **ftx, int *p, int *pop, int *i)
+{
+     return PGAGetIntegerAllele(*ftx,
+		  *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		  *pop, *i-1);
+}
+
+void pgasetintegerinitpermute_(PGAContext **ftx, int *min, int *max)
+{
+     PGASetIntegerInitPermute  (*ftx, *min, *max);
+}
+
+void pgasetintegerinitrange_ (PGAContext **ftx, int *min, int *max)
+{
+     PGASetIntegerInitRange(*ftx, min, max);
+}
+
+int pgagetintegerinittype_(PGAContext **ftx)
+{
+     return PGAGetIntegerInitType  (*ftx);
+}
+
+int pgagetminintegerinitvalue_ (PGAContext **ftx, int *i)
+{
+     return PGAGetMinIntegerInitValue(*ftx, *i-1);
+}
+
+int pgagetmaxintegerinitvalue_ (PGAContext **ftx, int *i)
+{
+     return PGAGetMaxIntegerInitValue(*ftx, *i-1);
+}
+
+void pgamutate_(PGAContext **ftx, int *p, int *pop)
+{
+     PGAMutate(*ftx,
+	   *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1, *pop);
+}
+
+void pgasetmutationtype_(PGAContext **ftx, int *mutation_type)
+{
+     PGASetMutationType  (*ftx, *mutation_type);
+}
+
+int pgagetmutationtype_(PGAContext **ftx)
+{
+     return PGAGetMutationType  (*ftx);
+}
+
+void pgasetmutationrealvalue_(PGAContext **ftx, double *val)
+{
+     PGASetMutationRealValue  (*ftx, *val);
+}
+
+double pgagetmutationrealvalue_(PGAContext **ftx)
+{
+     return PGAGetMutationRealValue  (*ftx);
+}
+
+void pgasetmutationintegervalue_(PGAContext **ftx, int *val)
+{
+     PGASetMutationIntegerValue  (*ftx, *val);
+}
+
+int pgagetmutationintegervalue_(PGAContext **ftx)
+{
+     return PGAGetMutationIntegerValue  (*ftx);
+}
+
+void pgasetmutationboundedflag_(PGAContext **ftx, int *val)
+{
+     PGASetMutationBoundedFlag  (*ftx, *val);
+}
+
+int pgagetmutationboundedflag_(PGAContext **ftx)
+{
+     return PGAGetMutationBoundedFlag  (*ftx);
+}
+
+void pgasetmutationprob_(PGAContext **ftx, double *mutation_prob)
+{
+     PGASetMutationProb  (*ftx, *mutation_prob);
+}
+
+double pgagetmutationprob_(PGAContext **ftx)
+{
+     return PGAGetMutationProb  (*ftx);
+}
+
+void pgarungm_(PGAContext **ftx, double (*f)(PGAContext *, int, int),
+     MPI_Comm *comm)
+{
+     PGARunGM  (*ftx, (*f), *comm);
+}
+
+void pgaevaluate_(PGAContext **ftx, int *pop,
+     double (*f)(PGAContext *, int, int), MPI_Comm *comm)
+{
+     PGAEvaluate  (*ftx, *pop, (*f), *comm);
+}
+
+unsigned long pgabuilddatatype_(PGAContext **ftx, int *p, int *pop)
+{
+     return((unsigned long)PGABuildDatatype(*ftx, 
+                             *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+                             *pop));
+}
+
+void pgasendindividual_(PGAContext **ftx, int *p, int *pop, int *dest, int *tag, MPI_Comm *comm)
+{
+     PGASendIndividual(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+                       *pop, *dest, *tag, *comm);
+}
+
+void pgareceiveindividual_(PGAContext **ftx, int *p, int *pop, int *source, int *tag, MPI_Comm *comm, MPI_Status *status)
+{
+     PGAReceiveIndividual(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1,
+                          *pop, *source, *tag, *comm, status);
+}
+
+void pgasendreceiveindividual_(PGAContext **ftx, int *send_p, int *send_pop, int *dest, int *send_tag, int *recv_p, int *recv_pop, int *source, int *recv_tag, MPI_Comm *comm, MPI_Status *status)
+{
+     PGASendReceiveIndividual(*ftx, 
+          *send_p == PGA_TEMP1 || *send_p == PGA_TEMP2 ? *send_p : *send_p - 1,
+          *send_pop, *dest, *send_tag, 
+          *recv_p == PGA_TEMP1 || *recv_p == PGA_TEMP2 ? *recv_p : *recv_p - 1,
+          *recv_pop, *source, *recv_tag, *comm, status);
+}
+
+int pgagetrank_(PGAContext **ftx, MPI_Comm *comm)
+{
+     return PGAGetRank  (*ftx, *comm);
+}
+
+int pgagetnumprocs_(PGAContext **ftx, MPI_Comm *comm)
+{
+     return PGAGetNumProcs  (*ftx, *comm);
+}
+
+void pgasetcommunicator_(PGAContext **ftx, MPI_Comm *comm)
+{
+     PGASetCommunicator  (*ftx, *comm);
+}
+
+MPI_Comm pgagetcommunicator_(PGAContext **ftx)
+{
+     return PGAGetCommunicator  (*ftx);
+}
+
+void pgarun_(PGAContext **ftx,
+     double (*evaluate)(PGAContext *c, int p, int pop))
+{
+     PGARun  (*ftx, (*evaluate));
+}
+
+void pgarunmutationandcrossover_(PGAContext **ftx, int *oldpop,
+     int *newpop)
+{
+     PGARunMutationAndCrossover  (*ftx, *oldpop, *newpop);
+}
+
+void pgarunmutationorcrossover_(PGAContext **ftx, int *oldpop, int *newpop)
+{
+     PGARunMutationOrCrossover  (*ftx, *oldpop, *newpop);
+}
+
+void pgaupdategeneration_(PGAContext **ftx, MPI_Comm *comm)
+{
+     PGAUpdateGeneration  (*ftx, *comm);
+}
+
+int pgagetdatatype_(PGAContext **ftx)
+{
+     return PGAGetDataType  (*ftx);
+}
+
+int pgagetoptdirflag_(PGAContext **ftx)
+{
+     return PGAGetOptDirFlag  (*ftx);
+}
+
+int pgagetstringlength_(PGAContext **ftx)
+{
+     return PGAGetStringLength  (*ftx);
+}
+
+int pgagetgaitervalue_(PGAContext **ftx)
+{
+     return PGAGetGAIterValue  (*ftx);
+}
+
+void pgasetmutationorcrossoverflag_(PGAContext **ftx, int *flag)
+{
+     PGASetMutationOrCrossoverFlag  (*ftx, *flag);
+}
+
+void pgasetmutationandcrossoverflag_(PGAContext **ftx, int *flag)
+{
+     PGASetMutationAndCrossoverFlag  (*ftx, *flag);
+}
+
+int pgagetmutationorcrossoverflag_(PGAContext **ftx)
+{
+     return PGAGetMutationOrCrossoverFlag  (*ftx);
+}
+
+int pgagetmutationandcrossoverflag_(PGAContext **ftx)
+{
+     return PGAGetMutationAndCrossoverFlag  (*ftx);
+}
+
+void pgasortpop_(PGAContext **ftx, int *pop)
+{
+     PGASortPop  (*ftx, *pop);
+}
+
+int pgagetpopsize_(PGAContext **ftx)
+{
+     return PGAGetPopSize  (*ftx);
+}
+
+int pgagetnumreplacevalue_(PGAContext **ftx)
+{
+     return PGAGetNumReplaceValue  (*ftx);
+}
+
+int pgagetpopreplacetype_(PGAContext **ftx)
+{
+     return PGAGetPopReplaceType  (*ftx);
+}
+
+int pgagetsortedpopindex_(PGAContext **ftx, int *n)
+{
+     return PGAGetSortedPopIndex(*ftx, *n-1);
+}
+
+void pgasetpopsize_(PGAContext **ftx, int *popsize)
+{
+     PGASetPopSize  (*ftx, *popsize);
+}
+
+void pgasetnumreplacevalue_(PGAContext **ftx, int *pop_replace)
+{
+     PGASetNumReplaceValue  (*ftx, *pop_replace);
+}
+
+void pgasetpopreplacetype_(PGAContext **ftx, int *pop_replace)
+{
+     PGASetPopReplaceType  (*ftx, *pop_replace);
+}
+
+int pgarandomflip_(PGAContext **ftx, double *p)
+{
+     return PGARandomFlip  (*ftx, *p);
+}
+
+int pgarandominterval_(PGAContext **ftx, int *start, int *end)
+{
+     return PGARandomInterval  (*ftx, *start, *end);
+}
+
+double pgarandom01_(PGAContext **ftx, int *newseed)
+{
+     return PGARandom01  (*ftx, *newseed);
+}
+
+double pgarandomuniform_(PGAContext **ftx, double *start, double *end)
+{
+     return PGARandomUniform  (*ftx, *start, *end);
+}
+
+double pgarandomgaussian_(PGAContext **ftx, double *mean, double *sigma)
+{
+     return PGARandomGaussian  (*ftx, *mean, *sigma);
+}
+
+int pgagetrandomseed_(PGAContext **ftx)
+{
+     return PGAGetRandomSeed  (*ftx);
+}
+
+void pgasetrandomseed_(PGAContext **ftx, int *seed)
+{
+     PGASetRandomSeed  (*ftx, *seed);
+}
+
+void pgasetrealallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     double *val)
+{
+     PGASetRealAllele(*ftx,
+	   *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+	   *pop, *i-1, *val);
+}
+
+double pgagetrealallele_(PGAContext **ftx, int *p, int *pop, int *i)
+{
+     return PGAGetRealAllele(*ftx,
+		  *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		  *pop, *i-1);
+}
+
+void pgasetrealinitpercent_(PGAContext **ftx, double *median, double *percent)
+{
+     PGASetRealInitPercent(*ftx, median, percent);
+}
+
+void pgasetrealinitrange_ (PGAContext **ftx, double *min, double *max)
+{
+     PGASetRealInitRange(*ftx, min, max);
+}
+
+double pgagetminrealinitvalue_(PGAContext **ftx, int *i)
+{
+     return PGAGetMinRealInitValue(*ftx, *i-1);
+}
+
+double pgagetmaxrealinitvalue_(PGAContext **ftx, int *i)
+{
+     return PGAGetMaxRealInitValue(*ftx, *i-1);
+}
+
+int pgagetrealinittype_(PGAContext **ftx)
+{
+     return PGAGetRealInitType  (*ftx);
+}
+
+void pgaprintreport_(PGAContext **ftx, char *name, int *pop, int len)
+/* FORTRAN implicitly passes the length of name into len. */
+{
+     FILE *fp;
+     if (name[len] != 0)
+	  name[len] = 0;
+     if (!strcmp(name, "STDOUT") || !strcmp(name, "stdout"))
+     {
+	  fp = stdout;
+	  PGAPrintReport(*ftx, fp, *pop);
+     }
+     else if (!strcmp(name, "STDERR") || !strcmp(name, "stderr"))
+     {
+	  fp = stderr;
+	  PGAPrintReport(*ftx, fp, *pop);
+     }
+     else
+     {
+	  fp = fopen(name, "a");
+	  if (!fp)
+	       PGAError(*ftx, "PGAPrintReport: Could not open file:",
+			     PGA_FATAL, PGA_CHAR, (void *) name);
+	  else
+	  {
+	       PGAPrintReport(*ftx, fp, *pop);
+	       fclose(fp);
+	  }
+     }
+}
+
+void pgasetprintoptions_(PGAContext **ftx, int *option)
+{
+     PGASetPrintOptions  (*ftx, *option);
+}
+
+void pgasetprintfrequencyvalue_(PGAContext **ftx, int *print_freq)
+{
+     PGASetPrintFrequencyValue  (*ftx, *print_freq);
+}
+
+int pgagetprintfrequencyvalue_(PGAContext **ftx)
+{
+     return PGAGetPrintFrequencyValue  (*ftx);
+}
+
+void pgaprintpopulation_(PGAContext **ftx, char *name, int *pop, int len)
+/* FORTRAN implicitly passes the length of name into len. */
+{
+     FILE *fp;
+     if (name[len] != 0)
+	  name[len] = 0;
+     if (!strcmp(name, "STDOUT") || !strcmp(name, "stdout"))
+     {
+	  fp = stdout;
+	  PGAPrintPopulation(*ftx, fp, *pop);
+     }
+     else if (!strcmp(name, "STDERR") || !strcmp(name, "stderr"))
+     {
+	  fp = stderr;
+	  PGAPrintPopulation(*ftx, fp, *pop);
+     }
+     else
+     {
+	  fp = fopen(name, "a");
+	  if (!fp)
+	       PGAError(*ftx, "PGAPrintPopulation: Could not open file:",
+			     PGA_FATAL, PGA_CHAR, (void *) name);
+	  else
+	  {
+	       PGAPrintPopulation(*ftx, fp, *pop);
+	       fclose(fp);
+	  }
+     }
+}
+
+void pgaprintindividual_ (PGAContext **ftx, char *name, int *p,
+     int *pop, int len)
+          /* FORTRAN implicitly passes the length of name into len. */
+{
+     FILE *fp;
+     if (name[len] != 0)
+	  name[len] = 0;
+     if (!strcmp(name, "STDOUT") || !strcmp(name, "stdout"))
+     {
+	  fp = stdout;
+	  PGAPrintIndividual(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		*pop);
+     }
+     else if (!strcmp(name, "STDERR") || !strcmp(name, "stderr"))
+     {
+	  fp = stderr;
+	  PGAPrintIndividual(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		*pop);
+     }
+     else
+     {
+	  fp = fopen(name, "a");
+	  if (!fp)
+	       PGAError(*ftx, "PGAPrintIndividual: Could not open file:",
+			     PGA_FATAL, PGA_CHAR, (void *) name);
+	  else
+	  {
+	       PGAPrintIndividual(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		     *pop);
+	       fclose(fp);
+	  }
+     }
+}
+
+void pgaprintstring_ (PGAContext **ftx, char *name, int *p,
+     int *pop, int len)
+          /* FORTRAN implicitly passes the length of name into len. */
+{
+     FILE *fp;
+     if (name[len] != 0)
+	  name[len] = 0;
+     if (!strcmp(name, "STDOUT") || !strcmp(name, "stdout"))
+     {
+	  fp = stdout;
+	  PGAPrintString(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		*pop);
+     }
+     else if (!strcmp(name, "STDERR") || !strcmp(name, "stderr"))
+     {
+	  fp = stderr;
+	  PGAPrintString(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		*pop);
+     }
+     else
+     {
+	  fp = fopen(name, "a");
+	  if (!fp)
+	       PGAError(*ftx, "PGAPrintString: Could not open file:",
+			     PGA_FATAL, PGA_CHAR, (void *) name);
+	  else
+	  {
+	       PGAPrintString(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		     *pop);
+	       fclose(fp);
+	  }
+     }
+}
+
+void pgaprintcontextvariable_(PGAContext **ftx, char *name, int len)
+/* FORTRAN implicitly passes the length of name into len. */
+{
+     FILE *fp;
+     if (name[len] != 0)
+	  name[len] = 0;
+     if (!strcmp(name, "STDOUT") || !strcmp(name, "stdout"))
+     {
+	  fp = stdout;
+	  PGAPrintContextVariable(*ftx, fp);
+     }
+     else if (!strcmp(name, "STDERR") || !strcmp(name, "stderr"))
+     {
+	  fp = stderr;
+	  PGAPrintContextVariable(*ftx, fp);
+     }
+     else
+     {
+	  fp = fopen(name, "a");
+	  if (!fp)
+	       PGAError(*ftx, "PGAPrintContextVariable: Could not open file:",
+			     PGA_FATAL, PGA_CHAR, (void *) name);
+	  else
+	  {
+	       PGAPrintContextVariable(*ftx, fp);
+	       fclose(fp);
+	  }
+     }
+}
+
+void pgarestart_(PGAContext **ftx, int *source_pop, int *dest_pop)
+{
+     PGARestart  (*ftx, *source_pop, *dest_pop);
+}
+
+void pgasetrestartflag_(PGAContext **ftx, int *val)
+{
+     PGASetRestartFlag  (*ftx, *val);
+}
+
+int pgagetrestartflag_(PGAContext **ftx)
+{
+     return PGAGetRestartFlag  (*ftx);
+}
+
+void pgasetrestartfrequencyvalue_(PGAContext **ftx, int *numiter)
+{
+     PGASetRestartFrequencyValue  (*ftx, *numiter);
+}
+
+int pgagetrestartfrequencyvalue_(PGAContext **ftx)
+{
+     return PGAGetRestartFrequencyValue  (*ftx);
+}
+
+void pgasetrestartallelechangeprob_(PGAContext **ftx, double *prob)
+{
+     PGASetRestartAlleleChangeProb  (*ftx, *prob);
+}
+
+double pgagetrestartallelechangeprob_(PGAContext **ftx)
+{
+     return PGAGetRestartAlleleChangeProb  (*ftx);
+}
+
+void pgaselect_(PGAContext **ftx, int *popix)
+{
+     PGASelect  (*ftx, *popix);
+}
+
+int pgaselectnextindex_(PGAContext **ftx)
+{
+     return PGASelectNextIndex  (*ftx);
+}
+
+void pgasetselecttype_(PGAContext **ftx, int *select_type)
+{
+     PGASetSelectType  (*ftx, *select_type);
+}
+
+int pgagetselecttype_(PGAContext **ftx)
+{
+     return PGAGetSelectType  (*ftx);
+}
+
+void pgasetptournamentprob_(PGAContext **ftx, double *ptournament_prob)
+{
+     PGASetPTournamentProb  (*ftx, *ptournament_prob);
+}
+
+double pgagetptournamentprob_(PGAContext **ftx)
+{
+     return PGAGetPTournamentProb  (*ftx);
+}
+
+int pgadone_(PGAContext **ftx, MPI_Comm *comm)
+{
+     return PGADone  (*ftx, *comm);
+}
+
+int pgacheckstoppingconditions_(PGAContext **ftx)
+{
+     return PGACheckStoppingConditions  (*ftx);
+}
+
+void pgasetstoppingruletype_(PGAContext **ftx, int *stoprule)
+{
+     PGASetStoppingRuleType  (*ftx, *stoprule);
+}
+
+int pgagetstoppingruletype_(PGAContext **ftx)
+{
+     return PGAGetStoppingRuleType  (*ftx);
+}
+
+void pgasetmaxgaitervalue_(PGAContext **ftx, int *maxiter)
+{
+     PGASetMaxGAIterValue  (*ftx, *maxiter);
+}
+
+int pgagetmaxgaitervalue_(PGAContext **ftx)
+{
+     return PGAGetMaxGAIterValue  (*ftx);
+}
+
+void pgasetmaxnochangevalue_(PGAContext **ftx, int *max_no_change)
+{
+     PGASetMaxNoChangeValue  (*ftx, *max_no_change);
+}
+
+void pgasetmaxsimilarityvalue_(PGAContext **ftx, int *max_similarity)
+{
+     PGASetMaxSimilarityValue  (*ftx, *max_similarity);
+}
+
+void pgaerror_(PGAContext **ftx, char *msg, int *level, int *datatype,
+     void **data, int len)
+/* FORTRAN implicitly passes the length of msg into len. */
+{
+     if (msg[len] != 0)
+	  msg[len] = 0;
+     PGAError (*ftx, msg, *level, *datatype, *data);
+}
+
+void pgadestroy_(PGAContext **ftx)
+{
+     PGADestroy  (*ftx);
+}
+
+int pgagetmaxmachineintvalue_(PGAContext **ftx)
+{
+     return PGAGetMaxMachineIntValue  (*ftx);
+}
+
+int pgagetminmachineintvalue_(PGAContext **ftx)
+{
+     return PGAGetMinMachineIntValue  (*ftx);
+}
+
+double pgagetmaxmachinedoublevalue_(PGAContext **ftx)
+{
+     return PGAGetMaxMachineDoubleValue  (*ftx);
+}
+
+double pgagetminmachinedoublevalue_(PGAContext **ftx)
+{
+     return PGAGetMinMachineDoubleValue  (*ftx);
+}
+
+void pgausage_(PGAContext **ftx)
+{
+     PGAUsage  (*ftx);
+}
+
+void pgaprintversionnumber_(PGAContext **ftx)
+{
+     PGAPrintVersionNumber  (*ftx);
+}
+
+void pgasetuserfunction_(PGAContext **ftx, int *constant, void *f)
+{
+     PGASetUserFunction(*ftx, *constant, f);
+}
+
+double pgamean_(PGAContext **ftx, double *a, int *n)
+{
+     return PGAMean(*ftx, a, *n);
+}
+
+double pgastddev_(PGAContext **ftx, double *a, int *n, double *m)
+{
+     return PGAStddev(*ftx, a, *n, *m);
+}
+
+int pgaround_(PGAContext **ftx, double *x)
+{
+     return PGARound  (*ftx, *x);
+}
+
+void pgacopyindividual_(PGAContext **ftx, int *i, int *p1, int *j, int *p2)
+{
+     PGACopyIndividual(*ftx,
+	   *i == PGA_TEMP1 || *i == PGA_TEMP2 ? *i : *i-1,
+	   *p1,
+	   *j == PGA_TEMP1 || *j == PGA_TEMP2 ? *j : *j-1,
+	   *p2);
+}
+
+int pgachecksum_(PGAContext **ftx, int *p, int *pop)
+{
+     return PGACheckSum(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1, *pop);
+}
+
+int pgagetworstindex_(PGAContext **ftx, int *pop)
+{
+     return PGAGetWorstIndex(*ftx, *pop) + 1;
+}
+
+int pgagetbestindex_(PGAContext **ftx, int *pop)
+{
+     return PGAGetBestIndex(*ftx, *pop) + 1;
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/fitness.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/fitness.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/fitness.c	(revision 6168)
@@ -0,0 +1,769 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: fitness.c: This file contains the routines that have to do with
+*                      fitness calculations.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGAFitness - Maps the user's evaluation function value to a fitness value.
+  First, the user's evaluation function value is translated to all positive
+  values if any are negative.  Next, this positive sequence is translated to
+  a maximization problem if the user's optimization direction was minimization.
+  This positive sequence is then mapped to a fitness value using linear
+  ranking, linear normalization fitness, or the identity (i.e., the evaluation
+  function value).  This routine is usually used after PGAEvaluate is called.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+    ctx  - context variable
+    pop  - symbolic constant of the population to calculate fitness for
+
+  Outputs:
+     Calculates the fitness for each string in the population via side effect
+
+  Example:
+     Calculate the fitness of all strings in population PGA_NEWPOP after
+     calling PGAEvaluate to calculate the strings evaluation value.
+
+     double energy(PGAContext *ctx, int p, int pop);
+     PGAContext *ctx;
+     :
+     PGAEvaluate(ctx, PGA_NEWPOP, energy);
+     PGAFitness (ctx, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGAFitness ( PGAContext *ctx, int popindex )
+{
+    int i;
+    double mineval;
+    PGAIndividual *pop;
+
+    PGADebugEntered("PGAFitness");
+
+    /* set pointer to appropriate population */
+
+    switch (popindex) {
+    case PGA_OLDPOP:
+        pop = ctx->ga.oldpop;
+        break;
+    case PGA_NEWPOP:
+        pop = ctx->ga.newpop;
+        break;
+    default:
+        PGAError( ctx, "PGAFitness: Invalid value of popindex:",
+                  PGA_FATAL, PGA_INT, (void *) &popindex );
+        break;
+    }
+
+    /* make sure all evaluation function values are up-to-date */
+
+    for( i=0; i<ctx->ga.PopSize; i++ ) {
+        /*printf("i = %d, evaluptodate = %d\n",i,(pop+i)->evaluptodate);*/
+        if ( (pop+i)->evaluptodate != PGA_TRUE )
+            PGAError( ctx, "PGAFitness: evaluptodate not PGA_TRUE for:",
+                      PGA_FATAL, PGA_INT, (void *) &i );
+    }
+
+    /* put raw fitness into fitness field */
+
+    for( i=0; i<ctx->ga.PopSize; i++ )
+        (pop+i)->fitness = (pop+i)->evalfunc;
+
+    /* translate to all positive sequence (if necessary) */
+
+    mineval = ctx->sys.PGAMaxDouble;
+    for( i=0; i<ctx->ga.PopSize; i++ )
+        if ( (pop+i)->fitness < mineval )
+            mineval =(pop+i)->fitness;
+    if ( mineval < 0.0 ) {
+        mineval = (-1.01) * mineval;
+        for( i=0; i<ctx->ga.PopSize; i++ )
+           (pop+i)->fitness  = (pop+i)->fitness + mineval;
+    }
+
+    /* translate to maximization problem  (if necessary) */
+
+    if ( ctx->ga.optdir == PGA_MINIMIZE ) {
+        switch (ctx->ga.FitnessMinType) {
+        case PGA_FITNESSMIN_RECIPROCAL:
+            PGAFitnessMinReciprocal( ctx, pop );
+            break;
+        case PGA_FITNESSMIN_CMAX:
+            PGAFitnessMinCmax      ( ctx, pop );
+            break;
+        default:
+            PGAError( ctx,
+                     "PGAFitness: Invalid FitnessMinType:",
+                      PGA_FATAL,
+                      PGA_INT,
+                      (void *) &(ctx->ga.FitnessMinType) );
+            break;
+        }
+    }
+
+    /* last step in fitness calculation */
+
+    if ( ctx->fops.Rank ) {
+        (ctx->fops.Rank)(&ctx, &popindex);
+    } else if ( ctx->cops.Rank ) {
+        (ctx->cops.Rank)(ctx, popindex);
+    } else {
+        switch (ctx->ga.FitnessType) {
+        case PGA_FITNESS_RAW:
+            break;
+        case PGA_FITNESS_NORMAL:
+            PGAFitnessLinearNormal    ( ctx, pop );
+            break;
+        case PGA_FITNESS_RANKING:
+            PGAFitnessLinearRank   ( ctx, pop );
+            break;
+        default:
+            PGAError( ctx,
+                     "PGAFitness: Invalid FitnessType:",
+                      PGA_FATAL,
+                      PGA_INT,
+                      (void *) &(ctx->ga.FitnessType) );
+            break;
+        }
+    }
+    PGADebugExited("PGAFitness");
+}
+
+
+/*U****************************************************************************
+  PGARank - returns the rank of a string in a population.  This is a value
+  between 1,...,N (the population size).  The most fit string has rank 1,
+  the least fit string has rank N.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+    ctx   - context variable
+    p     - the index of the string whose rank is desired
+    order - an array containing a unique rank for each string
+    n     - the size of the array order
+
+  Outputs:
+    The rank of string p
+
+  Example:
+    Determine the rank of string p.
+
+    PGAContext *ctx;
+    int i, popsize, rank, *order;
+    double *fitness;
+
+    popsize = PGAGetPopsize(ctx);
+    order   = (int *)   malloc(sizeof(int)    * popsize);
+    fitness = (double *)malloc(sizeof(double) * popsize);
+
+    for(i=0;i<popsize; i++) {
+        fitness[i] = PGAGetFitness(ctx, p, PGA_OLDPOP);
+        order[i]   = i;
+    }
+
+    PGADblHeapSort(ctx, fitness, order, popsize);
+    rank = PGARank(ctx, p, order, popsize)
+
+****************************************************************************U*/
+int PGARank( PGAContext *ctx, int p, int *order, int n )
+{
+    int i;
+
+    PGADebugEntered("PGARank");
+
+    /*  If the user gives us PGA_TEMP1 or PGA_TEMP2 (or, gasp, some random
+     *  number that is not in the population), fail.
+     */
+    if ((p<0) || (p > PGAGetPopSize(ctx)))
+        PGAError(ctx, "PGARank: Not a valid population member, p = ",
+                 PGA_FATAL, PGA_INT, (void *)&p);
+
+    /*  Search through all the orderings until we find the one that
+     *  matches the given string.  Return the index number.  If we do not
+     *  find one, something is _very_ bad; terminate with a fatal error.
+     */
+    for(i=0; i<n; i++)
+        if (order[i] == p) {
+	    PGADebugExited("PGARank");
+	    return(i+1);
+        }
+
+    /*  Ideally, we should print out the order array, but, well, ideally,
+     *  we should never get here anyway...Also, to make some compilers
+     *  shut up, return(0) is here, even though PGAError doesn't return.
+     */
+    PGAError( ctx, "PGARank: Bottom of loop in rank, p = ", PGA_FATAL,
+             PGA_INT, (void *) &p );
+    return(0);
+}
+
+/*U***************************************************************************
+   PGAGetFitness - returns the fitness value for a string
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+
+   Outputs:
+      The fitness value for string p in population pop
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      double fit;
+      :
+      fit = PGAGetFitness(ctx, p, PGA_NEWPOP);
+
+***************************************************************************U*/
+double PGAGetFitness ( PGAContext *ctx, int p, int pop )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAGetFitness");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetFitness", "p = ",
+                   PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetFitness", "pop = ",
+                   PGA_INT, (void *) &pop );
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+
+    PGADebugExited("PGAGetFitness");
+
+    return(ind->evalfunc);
+}
+
+/*U***************************************************************************
+   PGAGetFitnessType - Returns the type of fitness transformation used.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the type of fitness transformation used
+
+   Example:
+      PGAContext *ctx;
+      int fittype;
+      :
+      fittype = PGAGetFitnessType(ctx);
+      switch (fittype) {
+      case PGA_FITNESS_RAW:
+          printf("Fitness Type = PGA_FITNESS_RAW\n");
+          break;
+      case PGA_FITNESS_NORMAL:
+          printf("Fitness Type = PGA_FITNESS_NORMAL\n");
+          break;
+      case PGA_FITNESS_RANKING:
+          printf("Fitness Type = PGA_FITNESS_RANKING\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetFitnessType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetFitnessType");
+    PGAFailIfNotSetUp("PGAGetFitnessType");
+
+    PGADebugExited("PGAGetFitnessType");
+
+    return(ctx->ga.FitnessType);
+}
+
+/*U***************************************************************************
+   PGAGetFitnessMinType - Returns the type of fitness transformation used
+   for minimization problems.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the type of fitness transformation used
+      for minimization problems
+
+   Example:
+      PGAContext *ctx;
+      int fitmintype;
+      :
+      fitmintype = PGAGetFitnessMinType(ctx);
+      switch (fitmintype) {
+      case PGA_FITNESSMIN_RECIPROCAL:
+          printf("Fitness Minimization Type = PGA_FITNESSMIN_RECIPROCAL\n");
+          break;
+      case PGA_FITNESSMIN_CMAX:
+          printf("Fitness Minimization Type = PGA_FITNESSMIN_CMAX\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetFitnessMinType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetFitnessMinType");
+    PGAFailIfNotSetUp("PGAGetFitnessType");
+
+    PGADebugExited("PGAGetFitnessMinType");
+
+    return(ctx->ga.FitnessMinType);
+}
+
+/*U***************************************************************************
+   PGAGetMaxFitnessRank - returns the maximum value used in rank-based
+   fitness.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The value of MAX used in rank-based fitness
+
+   Example:
+      PGAContext *ctx;
+      double max;
+      :
+      max = PGAGetMaxFitnessRank(ctx);
+
+***************************************************************************U*/
+double PGAGetMaxFitnessRank (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMaxFitnessRank");
+    PGAFailIfNotSetUp("PGAGetFitnessType");
+
+    PGADebugExited("PGAGetMaxFitnessRank");
+
+    return(ctx->ga.FitnessRankMax);
+}
+
+/*U****************************************************************************
+   PGASetFitnessType - Set the type of fitness algorithm to use. Valid choices
+   are PGA_FITNESS_RAW, PGA_FITNESS_NORMAL, or PGA_FITNESS_RANKING for
+   raw fitness (the evaluation function value), linear normalization, or
+   linear ranking, respectively.  The default is PGA_FITNESS_RAW.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx          - context variable
+      fitness_type - symbolic constant to specify fitness type
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetFitnessType(ctx, PGA_FITNESS_RANKING);
+
+****************************************************************************U*/
+void PGASetFitnessType( PGAContext *ctx, int fitness_type)
+{
+
+    PGADebugEntered("PGASetFitnessType");
+
+    switch (fitness_type) {
+        case PGA_FITNESS_RAW:
+        case PGA_FITNESS_NORMAL:
+        case PGA_FITNESS_RANKING:
+            ctx->ga.FitnessType = fitness_type;
+            break;
+        default:
+            PGAError(ctx, "PGASetFitnessType: Invalid value of fitness_type:",
+                     PGA_FATAL, PGA_INT, (void *) &fitness_type);
+            break;
+    }
+
+    PGADebugExited("PGASetFitnessType");
+}
+
+/*U****************************************************************************
+   PGASetFitnessMinType - sets the type of algorithm used if a minimization
+   problem is specified to determine how values are remapped for maximization.
+   Valid choices are PGA_FITNESSMIN_RECIPROCAL and PGA_FITNESSMIN_CMAX to do
+   the mapping using the reciprocal of the evaluation function, or by
+   subtracting the worst evaluation function value from each evaluation
+   function value, respectively.  The default is PGA_FITNESSMIN_CMAX
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx          - context variable
+      fitness_type - symbolic constant to specify fitness minimization type
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetFitnessMinType(ctx, PGA_FITNESSMIN_CMAX);
+
+****************************************************************************U*/
+void PGASetFitnessMinType( PGAContext *ctx, int fitness_type)
+{
+
+    PGADebugEntered("PGASetFitnessMinType");
+
+    switch (fitness_type) {
+        case PGA_FITNESSMIN_RECIPROCAL:
+        case PGA_FITNESSMIN_CMAX:
+            ctx->ga.FitnessMinType = fitness_type;
+            break;
+        default:
+            PGAError ( ctx,
+                      "PGASetFitnessMinType: Invalid value of fitness_type:",
+                       PGA_FATAL, PGA_INT, (void *) &fitness_type);
+        break;
+    }
+
+    PGADebugExited("PGASetFitnessMinType");
+}
+
+/*U****************************************************************************
+   PGASetMaxFitnessRank - The value of the parameter Max when using linear
+   ranking for fitness determination. The default value is 1.2.  The value
+   must be from the interval [1.0, 2.0].  The fitness type must have been set
+   to PGA_FITNESS_RANKING with PGASetFitnessType for this function call
+   to have any effect.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      max - the value of the parameter Max when using linear ranking
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMaxFitnessRank(ctx, 1.1);
+
+****************************************************************************U*/
+void PGASetMaxFitnessRank( PGAContext *ctx, double fitness_rank_max)
+{
+    PGADebugEntered("PGASetMaxFitnessRank");
+
+    if ((fitness_rank_max < 1.0) || (fitness_rank_max > 2.0))
+        PGAError ( ctx,
+                  "PGASetMaxFitnessRank: Invalid value of fitness_rank_max:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &fitness_rank_max);
+    else
+        ctx->ga.FitnessRankMax = fitness_rank_max;
+
+    PGADebugExited("PGASetMaxFitnessRank");
+}
+
+
+
+/*I****************************************************************************
+  PGAFitnessLinearNormal - Calculates fitness using a ranking method and
+  linear' ordering.  The fitness function is of the form
+  u(x) = K - ( rank * sigma ) with the constant K equal to the mean of the
+  evaluation functions, and the decrement sigma equal to the standard
+  deviation of the same.
+  Ref:    L. Davis, Handbook of Genetic Algorithms, pg. 33
+
+  Inputs:
+    ctx  - context variable
+    pop  - population pointer to calculate fitness for
+
+  Outputs:
+     Calculates the fitness for each string in the population via side effect
+
+  Example:
+
+****************************************************************************I*/
+void PGAFitnessLinearNormal ( PGAContext *ctx, PGAIndividual *pop )
+{
+
+    int i;
+    double K, sigma, mean;
+
+    PGADebugEntered("PGAFitnessLinearNormal");
+
+    /* fill arrays for sorting */
+
+    for(i=0;i<ctx->ga.PopSize;i++) {
+        ctx->scratch.dblscratch[i] = (pop+i)->fitness;
+        ctx->scratch.intscratch[i] =                i;
+    }
+
+    /* calculate parameters for linear normalization */
+
+    mean  = PGAMean   ( ctx, ctx->scratch.dblscratch, ctx->ga.PopSize  );
+    sigma = PGAStddev ( ctx, ctx->scratch.dblscratch, ctx->ga.PopSize, mean );
+    if (sigma == 0)
+         sigma = 1;
+    K = sigma * (double) ctx->ga.PopSize;
+    PGADblHeapSort ( ctx, ctx->scratch.dblscratch,
+                  ctx->scratch.intscratch,
+                  ctx->ga.PopSize);
+
+    for( i=0; i<ctx->ga.PopSize; i++ )
+        (pop+i)->fitness = K - ( sigma *
+            (double) PGARank(ctx,i,ctx->scratch.intscratch,ctx->ga.PopSize) );
+
+    PGADebugExited("PGAFitnessLinearNormal");
+}
+
+/*I****************************************************************************
+  PGAFitnessLinearRank - Calculates fitness using linear ranking. The fitness
+  function is of the form 1/N * ( max - (max-min) * ( (i-1)/(N-1) ) ) where
+  min = 2-max and 1 <= max <= 2.
+  Ref:    J. Baker: Adaptive selection methods for GAs
+  Ref:    J. Baker: Extended selection mechanism in GAs
+  Ref:    J. Grefenstte: A critical look at implicit parallelism
+  Ref:    D. Whitley's linear() function on pp. 121 of ICGA
+
+  Inputs:
+    ctx  - context variable
+    pop  - population pointer to calculate fitness for
+
+  Outputs:
+     Calculates the fitness for each string in the population via side effect
+
+  Example:
+
+****************************************************************************I*/
+void PGAFitnessLinearRank ( PGAContext *ctx, PGAIndividual *pop )
+{
+    double max, min, popsize, rpopsize;
+    int i;
+
+    PGADebugEntered("PGAFitnessLinearRank");
+
+    max      = ctx->ga.FitnessRankMax;
+    min      = 2. - max;
+    popsize  = (double) ctx->ga.PopSize;
+    rpopsize = 1.0/popsize;
+
+    for(i=0;i<ctx->ga.PopSize;i++) {
+        ctx->scratch.dblscratch[i] = (pop+i)->fitness;
+        ctx->scratch.intscratch[i] =                i;
+    }
+
+    PGADblHeapSort ( ctx, ctx->scratch.dblscratch,
+                  ctx->scratch.intscratch,
+                  ctx->ga.PopSize);
+
+    for(i=0;i<ctx->ga.PopSize;i++) {
+        (pop+i)->fitness = rpopsize * ( max -
+        ( (max - min) *
+        ( ( (double) PGARank(ctx,i,ctx->scratch.intscratch,ctx->ga.PopSize)
+             - 1. ) / ( popsize - 1. ) ) ) );
+
+    }
+
+    PGADebugExited("PGAFitnessLinearRank");
+}
+
+
+/*I****************************************************************************
+  PGAFitnessMinReciprocal - Calculates fitness in the case of a minimization
+  problem using the reciprocal of the evaluation function. This is a power law
+  u(x) = ( a f(x) + b )^k with a=1, b=0, k=-1
+
+  Inputs:
+    ctx  - context variable
+    pop  - population pointer to calculate fitness for
+
+  Outputs:
+     Calculates the fitness for each string in the population via side effect
+
+  Example:
+
+****************************************************************************I*/
+void PGAFitnessMinReciprocal ( PGAContext *ctx, PGAIndividual *pop )
+{
+    int i;
+
+    PGADebugEntered("PGAFitnessMinReciprocal");
+
+    for( i=0; i<ctx->ga.PopSize; i++ ) {
+        if ( (pop+i)->fitness != 0. )
+            (pop+i)->fitness = 1. / (pop+i)->fitness;
+        else
+            PGAError( ctx,
+                     "PGAFitnessReciprocal: Value 0.0 for fitness member:",
+                      PGA_FATAL,
+                      PGA_INT,
+                     (void *) &i );
+    }
+
+    PGADebugExited("PGAFitnessMinReciprocal");
+}
+
+
+/*I****************************************************************************
+  PGAFitnessMinCmax - Calculates fitness in the case of a minimization
+  problem by subtracting the worst evaluation function value from each
+  evaluation function.  This is a dynamic linear fitness function
+  u(x) = a f(x) + b(t) with a=-1, b(t) = 1.1 * max f(x)
+
+  Inputs:
+    ctx  - context variable
+    pop  - population pointer to calculate fitness for
+
+  Outputs:
+     Calculates the fitness for each string in the population via side effect
+
+  Example:
+
+****************************************************************************I*/
+void PGAFitnessMinCmax ( PGAContext *ctx, PGAIndividual *pop )
+{
+    int i;
+    double cmax;
+
+    PGADebugEntered("PGAFitnessMinCmax");
+
+    cmax = 0.;
+
+    for(i=0; i<ctx->ga.PopSize; i++)
+        if ( (pop+i)->evalfunc > cmax )
+            cmax = (pop+i)->evalfunc;
+
+    cmax *= ctx->ga.FitnessCmaxValue; /* so worst string has nonzero fitness */
+
+    for(i=0;i<ctx->ga.PopSize;i++) 
+        (pop+i)->fitness = cmax - (pop+i)->evalfunc;
+
+    PGADebugExited("PGAFitnessMinCmax");
+}
+
+
+/*U****************************************************************************
+   PGASetFitnessCmaxValue - The value of the multiplier used by
+   PGAFitnessMinCmax so that the worst string has a nonzero fitness.
+   The default value is 1.01.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      val - the value of the multiplier
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetFitnessCmaxValue(ctx, 1.2);
+
+****************************************************************************U*/
+void PGASetFitnessCmaxValue( PGAContext *ctx, double val)
+{
+    PGADebugEntered("PGASetFitnessCmaxValue");
+    ctx->ga.FitnessCmaxValue = val;
+    PGADebugExited("PGASetFitnessCmaxValue");
+}
+
+
+
+/*U***************************************************************************
+   PGAGetFitnessCmaxValue - returns the value of the multiplier used by
+   PGAFitnessMinCmax.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The value of Cmax used in
+
+   Example:
+      PGAContext *ctx;
+      double cmax;
+      :
+      cmax = PGAGetFitnessCmaxValue(ctx);
+
+***************************************************************************U*/
+double PGAGetFitnessCmaxValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetFitnessCmaxValue");
+    PGAFailIfNotSetUp("PGAGetFitnessType");
+    PGADebugExited("PGAGetFitnessCmaxValue");
+    return(ctx->ga.FitnessCmaxValue);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/hamming.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/hamming.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/hamming.c	(revision 6168)
@@ -0,0 +1,170 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: hamming.c: This file contains the routines that have to do with
+*                      Hamming distances.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGAHammingDistance - Calculates the mean Hamming distance for a population
+  of binary strings.  For all other data types returns a value of 0.0 and
+  prints a warning message.
+
+  Category: Utility
+
+  Inputs:
+      ctx      - context variable
+      popindex - symbolic constant of the population for which the
+                 Hamming distance is to be calculated
+  Output:
+      The mean Hamming distance in the population
+
+  Example:
+      PGAContext *ctx;
+      double hd;
+      :
+      hd = PGAHammingDistance(ctx, PGA_NEWPOP);
+
+****************************************************************************U*/
+double PGAHammingDistance( PGAContext *ctx, int popindex)
+{
+    int i, j, hd, count=0;
+    double avg_hd = 0.;
+    PGAIndividual *pop;      /* pointer to appropriate population          */
+
+    PGADebugEntered("PGAHammingDistance");
+
+    switch (popindex) {
+    case PGA_OLDPOP:
+        pop = ctx->ga.oldpop;
+        break;
+    case PGA_NEWPOP:
+        pop = ctx->ga.newpop;
+        break;
+    default:
+        PGAError( ctx, "PGAHammingDistance: Invalid value of popindex:",
+                  PGA_FATAL, PGA_INT, (void *) &popindex );
+        break;
+    }
+
+    switch (ctx->ga.datatype) {
+    case PGA_DATATYPE_BINARY:
+        for(i=0; i<ctx->ga.PopSize-1; ++i)
+            for ( j = i+1; j<ctx->ga.PopSize; ++j ) {
+                count++;
+                hd = PGABinaryHammingDistance( ctx,
+                                            (pop+i)->chrom, (pop+j)->chrom );
+                avg_hd += (double) hd;
+            }
+        avg_hd /= (double) count;
+        break;
+    case PGA_DATATYPE_INTEGER:
+        avg_hd = 0.0;
+        PGAError( ctx,
+        "PGAHammingDistance: No Hamming Distance for PGA_DATATYPE_INTEGER ",
+                  PGA_WARNING,
+                  PGA_DOUBLE,
+                  (void *) &avg_hd );
+        break;
+    case PGA_DATATYPE_REAL:
+        avg_hd = 0;
+        PGAError( ctx,
+        "PGAHammingDistance: No Hamming Distance for PGA_DATATYPE_REAL ",
+                  PGA_WARNING,
+                  PGA_DOUBLE,
+                  (void *) &avg_hd );
+        break;
+    case PGA_DATATYPE_CHARACTER:
+        avg_hd = 0;
+        PGAError( ctx,
+        "PGAHammingDistance: No Hamming Distance for PGA_DATATYPE_CHARACTER ",
+                  PGA_WARNING,
+                  PGA_DOUBLE,
+                  (void *) &avg_hd );
+        break;
+    case PGA_DATATYPE_USER:
+        avg_hd = 0;
+        PGAError( ctx,
+        "PGAHammingDistance: No Hamming Distance for PGA_DATATYPE_USER ",
+                  PGA_WARNING,
+                  PGA_DOUBLE,
+                  (void *) &avg_hd );
+        break;
+    default:
+        PGAError( ctx,
+                 "PGAHammingDistance: Invalid value of datatype:",
+                  PGA_FATAL,
+                  PGA_INT,
+                  (void *) &(ctx->ga.datatype) );
+        break;
+    }
+
+    PGADebugExited("PGAHammingDistance");
+
+    return(avg_hd);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/heap.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/heap.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/heap.c	(revision 6168)
@@ -0,0 +1,239 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*      FILE: heap.c: This file contains routines for sorting individuals for
+*                     selection
+*
+*      Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*               Brian P. Walenz
+*****************************************************************************/
+
+#include <pgapack.h>
+
+/******************************************************************************
+   PGAAdjustHeap - Auxiliary routine called by PGA*HeapSort
+
+   Category: Sorting
+
+   Inputs:
+       ctx      - context variable
+       a        - array of values to be sorted
+       idx      - array of integer indices corresponding to the array
+                  a being sorted
+       i        - point of combination -- combine the node at a[i] with
+                  the two heaps at a[2i+1] and a[2i+2] to form a single
+                  heap.  0 <= i <= n-1.
+       n        - size of the arrays a and idx
+       j        - temporary variable, integer
+       item     - temporary variable, type must be same as a
+       item_idx - temporary variable, integer
+
+   Output:
+
+   Example:
+
+******************************************************************************/
+#define PGAAdjustHeap(ctx, a, idx, i, n, j, item, item_idx) {       \
+  item     = a[i];                                                  \
+  item_idx = idx[i];                                                \
+  j = 2*i+1;      /* let j be the left child */                     \
+  while (j < n) {                                                   \
+    if (j<n-1 && a[j] > a[j+1])                                     \
+       j = j + 1;       /* j is the larger child */                 \
+    if (item <= a[j])   /* a position for item has been found */    \
+       break;                                                       \
+    a[(j-1)/2]   = a[j];    /* move the larger child up a level */  \
+    idx[(j-1)/2] = idx[j];                                          \
+    j = j*2+1;                                                      \
+  }                                                                 \
+  a[(j-1)/2]   = item;                                              \
+  idx[(j-1)/2] = item_idx;                                          \
+}                                                                   \
+
+
+
+
+/*I****************************************************************************
+   PGADblHeapSort - Uses a heapsort algorithm to sort from largest to smallest
+   element.  An integer array, intialized with the original indices of the
+   elements of array a is sorted also so that the original locations are known
+
+   Category: Sorting
+
+   Inputs:
+       ctx      - context variable
+       a        - array of (double) values to be sorted
+       idx      - array of integer indices corresponding to the array
+                  a being sorted
+       n        - size of the arrays a and idx
+
+   Output:
+       The sorted arrays a and idx
+
+   Example:
+      The following code sorts the population by fitness
+
+      PGAContext *ctx;
+      int i,j,n,idx[LARGE]
+      double a[LARGE];
+      :
+      n = PGAGetPopsize(ctx);
+      for(i=0;i<n;i++) {
+        a[i]   = PGAGetFitness(ctx,p,PGA_OLDPOP);
+        idx[i] = i;
+      }
+      PGADblHeapSort ( ctx, a, idx, n);
+
+****************************************************************************I*/
+void PGADblHeapSort ( PGAContext *ctx, double *a, int *idx, int n )
+{
+  int i;
+  double temp_a;
+  int temp_idx;
+  int j, item_idx;
+  double item;
+
+    PGADebugEntered("PGADblHeapSort");
+
+  /*  Create a heap from our array  */
+  for (i=(n-2)/2; i>=0; i--)
+    PGAAdjustHeap(ctx, a, idx, i, n, j, item, item_idx);
+
+  for ( i=n-1; i>=1; i--)  /* interchange the new maximum with the   */
+  {                        /* element at the end of the tree         */
+    temp_a   = a[i];
+    temp_idx = idx[i];
+    a[i]     = a[0];
+    idx[i]   = idx[0];
+    a[0]     = temp_a;
+    idx[0]     = temp_idx;
+    PGAAdjustHeap(ctx, a, idx, 0, i, j, item, item_idx);
+  }
+
+    PGADebugExited("PGADblHeapSort");
+}
+
+
+
+
+/*I****************************************************************************
+   PGAIntHeapSort - Uses a heapsort algorithm to sort from largest to smallest
+   element.  An integer array, intialized with the original indices of the
+   elements of array a is sorted also so that the original locations are known
+
+   Category: Sorting
+
+   Inputs:
+       ctx      - context variable
+       a        - array of (int) values to be sorted
+       idx      - array of integer indices corresponding to the array
+                  a being sorted
+       n        - size of the arrays a and idx
+
+   Output:
+       The sorted arrays a and idx
+
+   Example:
+      The following code sorts the population by fitness
+
+      PGAContext *ctx;
+      int i,j,n,idx[LARGE],a[LARGE];
+      :
+      n = PGAGetPopsize(ctx);
+      for(i=0;i<n;i++) {
+        a[i]   = (int) PGAGetEvaluation(ctx,p,PGA_OLDPOP);
+        idx[i] = i;
+      }
+      PGAIntHeapSort ( ctx, a, idx, n);
+
+****************************************************************************I*/
+void PGAIntHeapSort ( PGAContext *ctx, int *a, int *idx, int n )
+{
+  int i;                   /* index of for loops                      */
+  int temp_a;
+  int temp_idx;
+  int j, item_idx;
+  double item;
+
+    PGADebugEntered("PGAIntHeapSort");
+
+  /*  Create a heap from our elements.  */
+  for (i=(n-2)/2; i>=0; i--)
+    PGAAdjustHeap(ctx, a, idx, i, n, j, item, item_idx);
+
+  for ( i=n-1; i>=1; i--)  /* interchange the new maximum with the   */
+  {                        /* element at the end of the tree         */
+    temp_a   = a[i];
+    temp_idx = idx[i];
+    a[i]     = a[0];
+    idx[i]   = idx[0];
+    a[0]     = temp_a;
+    idx[0]     = temp_idx;
+    PGAAdjustHeap(ctx, a, idx, 0, i, j, item, item_idx);
+  }
+
+    PGADebugExited("PGAIntHeapSort");
+}
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/integer.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/integer.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/integer.c	(revision 6168)
@@ -0,0 +1,907 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: integer.c: This file contains the routines specific to the integer
+*                      data structure
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGASetIntegerAllele - sets the value of a (integer) allele.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+      val - integer value to set the allele to
+
+   Outputs:
+
+   Example:
+      Set the value of the ith allele of string p in population PGA_NEWPOP
+      to 64.
+
+      PGAContext *ctx;
+      int p, i;
+      :
+      PGASetIntegerAllele (ctx, p, PGA_NEWPOP, i, 64)
+
+****************************************************************************U*/
+void PGASetIntegerAllele (PGAContext *ctx, int p, int pop, int i, int value)
+{
+    PGAIndividual *ind;
+    PGAInteger     *chrom;
+
+    PGADebugEntered("PGASetIntegerAllele");
+    PGACheckDataType("PGASetIntegerAllele", PGA_DATATYPE_INTEGER);
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGAInteger *)ind->chrom;
+    chrom[i] = value;
+
+    PGADebugExited("PGASetIntegerAllele");
+}
+
+/*U****************************************************************************
+   PGAGetIntegerAllele - Returns the value of allele i of member p in
+   population pop.  Assumes the data type is PGA_DATATYPE_INTEGER.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+
+   Outputs:
+
+   Example:
+      Returns the value of the ith integer allele of string p
+      in population PGA_NEWPOP.
+
+      PGAContext *ctx;
+      int p, i, k;
+      :
+      k =  PGAGetIntegerAllele ( ctx, p, PGA_NEWPOP, i )
+
+****************************************************************************U*/
+int PGAGetIntegerAllele (PGAContext *ctx, int p, int pop, int i)
+{
+    PGAIndividual *ind;
+    PGAInteger     *chrom;
+
+    PGADebugEntered("PGAGetIntegerAllele");
+
+    PGACheckDataType("PGAGetIntegerAllele", PGA_DATATYPE_INTEGER);
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGAInteger *)ind->chrom;
+
+    PGADebugExited("PGAGetIntegerAllele");
+
+    return( (int) chrom[i] );
+}
+
+/*U****************************************************************************
+  PGASetIntegerInitPermute - sets a flag to tell the initialization routines
+  to set each integer-valued gene to a random permutation of the values given
+  by an upper and lower bound.  The length of the interval must be the same
+  as the string length.  This is the default strategy for initializing
+  integer-valued strings. The default interval is [0,L-1] where L is the
+  string length.  No string initialization is done by this call.
+
+  Category: Initialization
+
+  Inputs:
+     ctx - context variable
+     min - the lower bound of numbers used in the permutation
+     max - the upper bound of numbers used in the permutation
+
+  Outputs:
+
+  Example:
+      Set the initialization routines to set each gene to a random and
+      unique value from the interval $[500,599]$.
+
+      PGAContext *ctx;
+      :
+      PGASetIntegerInitPermute(ctx, 500, 599)}
+
+****************************************************************************U*/
+void PGASetIntegerInitPermute ( PGAContext *ctx, int min, int max)
+{
+     int i, range;
+
+    PGADebugEntered("PGASetIntegerInitPermute");
+    PGAFailIfSetUp("PGASetIntegerInitPermute");
+    PGACheckDataType("PGASetIntegerInitPermute", PGA_DATATYPE_INTEGER);
+
+     range = max - min + 1;
+     if (max <= min)
+          PGAError(ctx, "PGASetIntegerInitPermute: max does not exceed min:",
+                   PGA_FATAL, PGA_INT, (void *) &max);
+     else if (range != ctx->ga.StringLen) {
+          PGAError(ctx, "PGASetIntegerInitPermute: range of:",
+                   PGA_FATAL, PGA_INT, (void *) &range);
+          PGAError(ctx, "PGASetIntegerInitPermute: does not equal "
+                   "string length:", PGA_FATAL, PGA_INT,
+                    (void *) &(ctx->ga.StringLen));
+     }
+     else
+     {
+          ctx->init.IntegerType = PGA_IINIT_PERMUTE;
+          for (i = 0; i < ctx->ga.StringLen; i++)
+          {
+               ctx->init.IntegerMin[i] = min;
+               ctx->init.IntegerMax[i] = max;
+          }
+     }
+
+    PGADebugExited("PGASetIntegerInitPermute");
+}
+
+/*U****************************************************************************
+  PGASetIntegerInitRange - sets a flag to tell the initialization routines to
+  set each integer-valued gene to a value chosen randomly from the interval
+  given by an upper and lower bound.  No string initialization is done by
+  this call.
+
+  Category: Initialization
+
+  Inputs:
+     ctx - context variable
+     min - array of lower bounds that define the interval the gene is
+           initialized from
+     max - array of upper bounds that define the interval the gene is
+           initialized from
+
+  Outputs:
+
+  Example:
+      Set the initialization routines to select a value for gene i
+      uniformly randomly from the interval [0,i].  Assumes all strings
+      are of the same length.
+
+      PGAContext *ctx;
+      int *low, *high, stringlen, i;
+      :
+      stringlen = PGAGetStringLength(ctx);
+      low  = (int *) malloc(stringlen*sizeof(int));
+      high = (int *) malloc(stringlen*sizeof(int));
+      for(i=0;i<stringlen;i++) {
+          low[i]  = 0;
+          high[i] = i
+      }
+      PGASetIntegerInitRange(ctx, low, high);
+
+****************************************************************************U*/
+void PGASetIntegerInitRange (PGAContext *ctx, int *min, int *max)
+{
+     int i;
+
+     PGADebugEntered("PGASetIntegerInitRange");
+     PGAFailIfSetUp("PGASetIntegerInitRange");
+     PGACheckDataType("PGASetIntegerInitRange", PGA_DATATYPE_INTEGER);
+
+     for (i = 0; i < ctx->ga.StringLen; i++)
+     {
+        if (max[i] < min[i])
+            PGAError(ctx, "PGASetIntegerInitRange: Lower bound exceeds upper "
+                    "bound for allele #", PGA_FATAL, PGA_INT, (void *) &i);
+        else {
+            ctx->init.IntegerMin[i] = min[i];
+            ctx->init.IntegerMax[i] = max[i];
+        }
+     }
+     ctx->init.IntegerType = PGA_IINIT_RANGE;
+
+     PGADebugExited("PGASetIntegerInitRange");
+}
+
+/*U***************************************************************************
+  PGAGetIntegerInitType - returns the type of scheme used to randomly
+  initialize strings of data type PGA_DATATYPE_INTEGER.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the scheme used to initialize integer strings
+
+   Example:
+      PGAContext *ctx;
+      int inittype;
+      :
+      inittype = PGAGetIntegerInitType(ctx);
+      switch (inittype) {
+      case PGA_IINIT_PERMUTE:
+          printf("Data Type = PGA_IINIT_PERMUTE\n");
+          break;
+      case PGA_IINIT_RANGE:
+          printf("Data Type = PGA_IINIT_RANGE\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetIntegerInitType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetIntegerInitType");
+    PGAFailIfNotSetUp("PGAGetIntegerInitType");
+    PGACheckDataType("PGAGetIntegerInitType", PGA_DATATYPE_INTEGER);
+
+    PGADebugExited("PGAGetIntegerInitType");
+
+    return(ctx->init.IntegerType);
+}
+
+/*U***************************************************************************
+   PGAGetMinIntegerInitValue - returns the minimum of the range of integers
+   used to randomly initialize integer strings.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The minimum of the range of integers used to randomly initialize
+      integer strings
+
+   Example:
+      PGAContext *ctx;
+      int min;
+      :
+      min = PGAGetMinIntegerInitValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMinIntegerInitValue (PGAContext *ctx, int i)
+{
+    PGADebugEntered("PGAGetMinIntegerInitValue");
+    PGAFailIfNotSetUp("PGAGetMinIntegerInitValue");
+    PGACheckDataType("PGASetIntegerAllele", PGA_DATATYPE_INTEGER);
+
+    if (i < 0 || i >= ctx->ga.StringLen)
+         PGAError(ctx, "PGAGetMinIntegerInitValue: Index out of range:",
+                  PGA_FATAL, PGA_INT, (int *) &i);
+
+    PGADebugExited("PGAGetMinIntegerInitValue");
+
+    return(ctx->init.IntegerMin[i]);
+}
+
+/*U***************************************************************************
+   PGAGetMaxIntegerInitValue - returns the maximum of the range of integers
+   used to randomly initialize integer strings.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The maximum of the range of integers used to randomly initialize
+      integer strings.
+
+   Example:
+      PGAContext *ctx;
+      int max;
+      :
+      max = PGAGetMaxIntegerInitValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMaxIntegerInitValue (PGAContext *ctx, int i)
+{
+    PGADebugEntered("PGAGetMaxIntegerInitValue");
+    PGAFailIfNotSetUp("PGAGetMaxIntegerInitValue");
+    PGACheckDataType("PGAGetMaxIntegerInitValue", PGA_DATATYPE_INTEGER);
+
+    if (i < 0 || i >= ctx->ga.StringLen)
+         PGAError(ctx, "PGAGetMaxIntegerInitValue: Index out of range:",
+                  PGA_FATAL, PGA_INT, (int *) &i);
+
+    PGADebugExited("PGAGetMaxIntegerInitValue");
+
+    return(ctx->init.IntegerMax[i]);
+}
+
+
+/*I****************************************************************************
+   PGAIntegerCreateString - Allocate memory for a string of type PGAInteger,
+   and initializes or clears the string according to initflag.
+
+   Inputs:
+      ctx      - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      initflag - A true/false flag used in conjunction with ctx->ga.RandomInit
+                 to initialize the string either randomly or set to zero
+
+   Outputs:
+      new      - a pointer set to the address of the allocated memory
+
+   Example:
+      Allocates and clears memory and assigns the address of the allocated
+      memory to the string field (ind->chrom) of the individual.
+
+      PGAContext *ctx;
+      PGAIndividual *ind;
+      :
+      PGAIntegerCreateString( ctx, ind, PGA_FALSE );
+
+****************************************************************************I*/
+void PGAIntegerCreateString (PGAContext *ctx, int p, int pop, int InitFlag)
+{
+    int i, fp;
+    PGAInteger *c;
+    PGAIndividual *new = PGAGetIndividual(ctx, p, pop);
+
+    PGADebugEntered("PGAIntegerCreateString");
+
+    new->chrom = (void *)malloc(ctx->ga.StringLen * sizeof(PGAInteger));
+    if (new->chrom == NULL)
+	PGAError(ctx, "PGAIntegerCreateString: No room to allocate "
+		 "new->chrom", PGA_FATAL, PGA_VOID, NULL);
+    c = (PGAInteger *)new->chrom;
+    if (InitFlag)
+	if (ctx->fops.InitString) {
+	    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+	    (*ctx->fops.InitString)(&ctx, &fp, &pop);
+	} else {
+	    (*ctx->cops.InitString)(ctx, p, pop);
+	}
+    else
+	for (i=0; i<ctx->ga.StringLen; i++)
+	    c[i] = 0;
+    
+    PGADebugExited("PGAIntegerCreateString");
+}
+
+/*I****************************************************************************
+   PGAIntegerMutation - randomly mutates an integer-valued gene with a
+   specified probability. This routine is called from PGAMutation and must
+   cast the void string pointer it is passed as the second argument.
+
+   Inputs:
+      ctx      - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      mr       - probability of mutating an integer-valued gene
+
+   Outputs:
+      Returns the number of mutations
+
+   Example:
+
+****************************************************************************I*/
+int PGAIntegerMutation( PGAContext *ctx, int p, int pop, double mr )
+{
+     PGAInteger *c;
+     int i, j, temp;
+     int count = 0;
+
+     PGADebugEntered("PGAIntegerMutation");
+
+     c = (PGAInteger *)PGAGetIndividual(ctx, p, pop)->chrom;
+     for(i=0; i<ctx->ga.StringLen; i++) {
+
+         /* randomly choose an allele   */
+         if ( PGARandomFlip(ctx, mr) ) {
+
+             /* apply appropriate mutation operator */
+             switch (ctx->ga.MutationType) {
+             case PGA_MUTATION_CONSTANT:
+                 /* add or subtract from allele */             
+                 if ( PGARandomFlip(ctx, .5) )
+                      c[i] += ctx->ga.MutateIntegerValue;
+                 else
+                      c[i] -= ctx->ga.MutateIntegerValue;
+                 break;
+             case PGA_MUTATION_PERMUTE:
+                 /* could check for j == i if we were noble */
+                 j = PGARandomInterval(ctx, 0, ctx->ga.StringLen);
+                 temp = c[i];                 
+                 c[i] = c[j];
+                 c[j] = temp;                 
+                 break;
+             case PGA_MUTATION_RANGE:
+                 c[i] = PGARandomInterval(ctx, ctx->init.IntegerMin[i],
+                                               ctx->init.IntegerMax[i]);
+                 break;
+             default:
+                  PGAError(ctx, "PGAIntegerMutation: Invalid value of "
+                           "ga.MutationType:", PGA_FATAL, PGA_INT,
+                           (void *) &(ctx->ga.MutationType));
+                  break;
+             }
+
+             /* reset to min/max if bounded flag true and outside range */
+             if( ctx->ga.MutateBoundedFlag == PGA_TRUE ) {
+                 if( c[i] < ctx->init.IntegerMin[i])
+                     c[i] = ctx->init.IntegerMin[i];
+                 if( c[i] > ctx->init.IntegerMax[i])
+                     c[i] = ctx->init.IntegerMax[i];
+             }
+
+             count++;
+         }
+     }
+     PGADebugExited("PGAIntegerMutation");
+     return(count);
+}
+
+/*I****************************************************************************
+   PGAIntegerOneptCrossover - performs one-point crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGAIntegerOneptCrossover(ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGAIntegerOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2)
+{
+     PGAInteger *parent1 = (PGAInteger *)PGAGetIndividual(ctx, p1,
+                                                          pop1)->chrom;
+     PGAInteger *parent2 = (PGAInteger *)PGAGetIndividual(ctx, p2,
+                                                          pop1)->chrom;
+     PGAInteger *child1  = (PGAInteger *)PGAGetIndividual(ctx, c1,
+                                                          pop2)->chrom;
+     PGAInteger *child2  = (PGAInteger *)PGAGetIndividual(ctx, c2,
+                                                          pop2)->chrom;
+     int i, xsite;
+
+    PGADebugEntered("PGAIntegerOneptCrossover");
+
+    xsite = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+
+    for(i=0;i<xsite;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    for(i=xsite;i<ctx->ga.StringLen;i++) {
+        child1[i] = parent2[i];
+        child2[i] = parent1[i];
+    }
+
+    PGADebugExited("PGAIntegerOneptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGAIntegerTwoptCrossover - performs two-point crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGAIntegerTwoptCrossover(ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGAIntegerTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2)
+{
+     PGAInteger *parent1 = (PGAInteger *)PGAGetIndividual(ctx, p1,
+                                                          pop1)->chrom;
+     PGAInteger *parent2 = (PGAInteger *)PGAGetIndividual(ctx, p2,
+                                                          pop1)->chrom;
+     PGAInteger *child1  = (PGAInteger *)PGAGetIndividual(ctx, c1,
+                                                          pop2)->chrom;
+     PGAInteger *child2  = (PGAInteger *)PGAGetIndividual(ctx, c2,
+                                                          pop2)->chrom;
+     int i, temp, xsite1, xsite2;
+
+    PGADebugEntered("PGAIntegerTwoptCrossover");
+
+    /* pick two cross sites such that xsite2 > xsite1 */
+    xsite1 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    xsite2 = xsite1;
+    while ( xsite2 == xsite1 )
+        xsite2 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    if ( xsite1 > xsite2 ) {
+        temp   = xsite1;
+        xsite1 = xsite2;
+        xsite2 = temp;
+    }
+
+    for(i=0;i<xsite1;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    for(i=xsite1;i<xsite2;i++) {
+        child1[i] = parent2[i];
+        child2[i] = parent1[i];
+    }
+
+    for(i=xsite2;i<ctx->ga.StringLen;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    PGADebugExited("PGAIntegerTwoptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGAIntegerUniformCrossover - performs uniform crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGAIntegerUniformCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGAIntegerUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2)
+{
+     PGAInteger *parent1 = (PGAInteger *)PGAGetIndividual(ctx, p1,
+                                                          pop1)->chrom;
+     PGAInteger *parent2 = (PGAInteger *)PGAGetIndividual(ctx, p2,
+                                                          pop1)->chrom;
+     PGAInteger *child1  = (PGAInteger *)PGAGetIndividual(ctx, c1,
+                                                          pop2)->chrom;
+     PGAInteger *child2  = (PGAInteger *)PGAGetIndividual(ctx, c2,
+                                                          pop2)->chrom;
+     int i;
+
+    PGADebugEntered("PGAIntegerUniformCrossover");
+
+    for(i=0;i<ctx->ga.StringLen;i++) {
+        if ( parent1[i] == parent2[i] ) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+        else {
+            if(PGARandomFlip(ctx, ctx->ga.UniformCrossProb)) {
+                child1[i] = parent1[i];
+                child2[i] = parent2[i];
+            }
+            else {
+                child1[i] = parent2[i];
+                child2[i] = parent1[i];
+            }
+        }
+    }
+
+    PGADebugExited("PGAIntegerUniformCrossover");
+}
+
+/*I****************************************************************************
+   PGAIntegerPrintString - writes an integer-valued string to a file.
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to file to write the string to
+      p   - index of the string to write out
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+      Write member p in population PGA_NEWPOP to stdout.
+
+      PGAContext *ctx;
+      int  p;
+      :
+      PGAIntegerPrintString(ctx, stdout, p, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGAIntegerPrintString ( PGAContext *ctx, FILE *fp, int p, int pop)
+{
+    PGAInteger *c = (PGAInteger *)PGAGetIndividual(ctx, p, pop)->chrom;
+    int i;
+
+    PGADebugEntered("PGAIntegerPrintString");
+
+    for(i = 0; i < ctx->ga.StringLen; i++)
+    {
+        switch ( i % 6 )
+        {
+        case 0:
+            fprintf ( fp, "#%5d: [%8ld]",i,c[i]);
+            break;
+        case 1:
+        case 2:
+        case 3:
+        case 4:
+            fprintf ( fp, ", [%8ld]",c[i]);
+            break;
+        case 5:
+            fprintf ( fp, ", [%8ld]",c[i]);
+            if (i+1 < ctx->ga.StringLen)
+                fprintf ( fp, "\n");
+            break;
+        }
+    }
+    fprintf ( fp, "\n" );
+
+    PGADebugExited("PGAIntegerPrintString");
+}
+
+/*I****************************************************************************
+   PGAIntegerCopyString - Copy one integer-valued string to another.
+
+   Inputs:
+      ctx - context variable
+      p1   - string to copy
+      pop1 - symbolic constant of population containing string p1
+      p2   - string to copy p1 to
+      pop2 - symbolic constant of population containing string p2
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAIntegerCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+    PGAInteger *source = (PGAInteger *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    PGAInteger *dest   = (PGAInteger *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+    int i;
+
+    PGADebugEntered("PGAIntegerCopyString");
+
+    for (i = 0; i < ctx->ga.StringLen; i++)
+        dest[i] = source[i];
+
+    PGADebugExited("PGAIntegerCopyString");
+}
+
+/*I****************************************************************************
+   PGAIntegerDuplicate - Returns true if string a is a duplicate of
+   string b, else returns false.
+
+   Inputs:
+      ctx - context variable
+      p1   - string index of the first string to compare
+      pop1 - symbolic constant of the population string p1 is in
+      p2   - string index of the second string to compare
+      pop2 - symbolic constant of the population string p2 is in
+
+   Outputs:
+      Returns true/false if strings are duplicates
+
+   Example:
+
+****************************************************************************I*/
+int PGAIntegerDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+     PGAInteger *a = (PGAInteger *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     PGAInteger *b = (PGAInteger *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+     int i;
+
+    PGADebugEntered("PGAIntegerDuplicate");
+
+     i = ctx->ga.StringLen-1;
+     if (a[0] == b[0])
+       for(; (i>0) && (a[i] == b[i]); i--);
+
+    PGADebugExited("PGAIntegerDuplicate");
+
+     return((i==0) ? PGA_TRUE : PGA_FALSE);
+}
+
+/*I****************************************************************************
+   PGAIntegerInitString - randomly initialize a string of type PGAInteger
+
+   Inputs:
+      ctx - context variable
+      p   - index of string to randomly initialize
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAIntegerInitString(PGAContext *ctx, int p, int pop)
+{
+     int *list;
+     int len, i, j;
+     PGAInteger *c = (PGAInteger *)PGAGetIndividual(ctx, p, pop)->chrom;
+
+     PGADebugEntered("PGAIntegerInitString");
+
+     len = ctx->ga.StringLen;
+
+     switch (ctx->init.IntegerType)
+     {
+     case PGA_IINIT_PERMUTE:
+          list = (int *)malloc(sizeof(int) * len);
+          if (list == NULL)
+               PGAError(ctx, "PGAIntegerInitString: No room to allocate list",
+                        PGA_FATAL, PGA_VOID, NULL);
+          j = ctx->init.IntegerMin[0];
+          for (i = 0; i < len; i++)
+               list[i] = j++;
+          for (i = 0; i < len; i++)
+          {
+               j = PGARandomInterval ( ctx, 0, len - i - 1 );
+               c[i] = list[j];
+               list[j] = list[len - i - 1];
+          }
+          free(list);
+          break;
+     case PGA_IINIT_RANGE:
+          for (i = 0; i < len; i++)
+               c[i] = PGARandomInterval(ctx, ctx->init.IntegerMin[i],
+                                        ctx->init.IntegerMax[i]);
+          break;
+     }
+
+     PGADebugExited("PGAIntegerInitString");
+}
+
+/*I****************************************************************************
+  PGAIntegerBuildDatatype - Build an MPI datatype for a string of type
+  PGA_DATATYPE_INTEGER.
+
+  Inputs:
+      ctx - context variable
+      p   - index of string to randomly initialize
+      pop - symbolic constant of the population string p is in
+
+  Outputs:
+
+  Example:
+
+****************************************************************************I*/
+MPI_Datatype PGAIntegerBuildDatatype(PGAContext *ctx, int p, int pop)
+{
+
+     int            counts[4];      /* Number of elements in each
+                                       block (array of integer) */
+     MPI_Aint       displs[4];      /* byte displacement of each
+                                       block (array of integer) */
+     MPI_Datatype   types[4];       /* type of elements in each block (array
+                                       of handles to datatype objects) */
+     MPI_Datatype   individualtype; /* new datatype (handle) */
+     PGAIndividual *traveller;      /* address of individual in question */
+
+    PGADebugEntered("PGAIntegerBuildDatatype");
+
+     traveller = PGAGetIndividual(ctx, p, pop);
+     MPI_Address(&traveller->evalfunc, &displs[0]);
+     counts[0] = 1;
+     types[0]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->fitness, &displs[1]);
+     counts[1] = 1;
+     types[1]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->evaluptodate, &displs[2]);
+     counts[2] = 1;
+     types[2]  = MPI_INT;
+
+     MPI_Address(traveller->chrom, &displs[3]);
+     counts[3] = ctx->ga.StringLen;
+     types[3]  = MPI_LONG;
+
+     MPI_Type_struct(4, counts, displs, types, &individualtype);
+     MPI_Type_commit(&individualtype);
+
+    PGADebugExited("PGAIntegerBuildDatatype");
+
+     return (individualtype);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/mpi_stub.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/mpi_stub.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/mpi_stub.c	(revision 6168)
@@ -0,0 +1,325 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/******************************************************************************
+*     FILE: mpi_stub.c:  MPI stubs needed for PGAPack operation without
+*                        linking with a real MPI.
+*
+*     Authors: Brian P. Walenz
+******************************************************************************/
+
+#include "pgapack.h"
+
+
+#if defined(FORTRANCAP)
+#define mpi_address_      MPI_ADDRESS
+#define mpi_bcast_        MPI_BCAST
+#define mpi_comm_dup_     MPI_COMM_DUP
+#define mpi_comm_free_    MPI_COMM_FREE
+#define mpi_comm_rank_    MPI_COMM_RANK
+#define mpi_comm_size_    MPI_COMM_SIZE
+#define mpi_finalize_     MPI_FINALIZE
+#define mpi_init_         MPI_INIT
+#define mpi_initialized_  MPI_INITIALIZED
+#define mpi_probe_        MPI_PROBE
+#define mpi_send_         MPI_SEND
+#define mpi_recv_         MPI_RECV
+#define mpi_sendrecv_     MPI_SENDRECV
+#define mpi_type_commit_  MPI_TYPE_COMMIT
+#define mpi_type_free_    MPI_TYPE_FREE
+#define mpi_type_struct_  MPI_TYPE_STRUCT
+#elif !defined(FORTRANUNDERSCORE)
+#define mpi_address_      mpi_address
+#define mpi_bcast_        mpi_bcast
+#define mpi_comm_dup_     mpi_comm_dup
+#define mpi_comm_free_    mpi_comm_free
+#define mpi_comm_rank_    mpi_comm_rank
+#define mpi_comm_size_    mpi_comm_size
+#define mpi_finalize_     mpi_finalize
+#define mpi_init_         mpi_init
+#define mpi_initialized_  mpi_initialized
+#define mpi_probe_        mpi_probe
+#define mpi_send_         mpi_send
+#define mpi_recv_         mpi_recv
+#define mpi_sendrecv_     mpi_sendrecv
+#define mpi_type_commit_  mpi_type_commit
+#define mpi_type_free_    mpi_type_free
+#define mpi_type_struct_  mpi_type_struct
+#endif
+
+
+
+/*  Places the address of "location" into "address"
+ *  In FORTRAN, does not return anything.
+ */
+int MPI_Address(void *location, MPI_Aint *address) {
+    *address = (MPI_Aint)NULL;
+    return(0);
+}
+
+
+/*  Broadcast "buf" to all processes.
+ *  FORTRAN adds integer ierror to the end of the parameters.
+ */
+int MPI_Bcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm comm) {
+    return(0);
+}
+
+
+/*  Duplicates communicator "comm" into "newcomm"
+ *  FORTRAN has a third parameter, integer ie, and does not return anything.
+ */
+int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm) {
+    return(0);
+}
+
+
+/*  Frees a communicator.   */
+int MPI_Comm_free(MPI_Comm *comm) {
+    return(0);
+}
+
+
+/*  Returns the rank of the current process in rank.  We return
+ *  0 -- we are the master.
+ */
+int MPI_Comm_rank(MPI_Comm comm, int *rank) {
+    *rank = 0;
+    return(0);
+}
+
+
+/*  Returns the number of processors that are in communicator comm
+ *  in size.  Always 1.
+ */
+int MPI_Comm_size(MPI_Comm comm, int *size) {
+    *size = 1;
+    return(0);
+}
+
+/*  Finalizes MPI.  */
+int MPI_Finalize(void) {
+    return(0);
+}
+
+
+/*  Initializes MPI.
+ *  Ideally, we should parse the command-line and remove MPI arguments.
+ */
+int MPI_Init(int *argc, char ***argv) {
+    return(0);
+}
+
+
+/*  Returns 1 in flag if MPI is already running.  It is.  */
+int MPI_Initialized(int *flag) {
+    *flag = 1;
+    return(0);
+}
+
+
+/*  Waits for messages to us with tag "tag".  Sets status->MPI_SOURCE to the
+ *  source of the message, status->MPI_TAG to the tag, and status->MPI_ERROR
+ *  to 0.
+ */
+int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status) {
+    status->MPI_SOURCE = source;
+    status->MPI_TAG    = tag;
+    status->MPI_ERROR  = 0;
+    return(0);
+}
+
+
+/*  Send a message to a process.  */
+int MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) {
+    return(0);
+}
+
+
+/*  Receive a message from a source. */
+int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) {
+    status->MPI_SOURCE = source;
+    status->MPI_TAG    = tag;
+    status->MPI_ERROR  = 0;
+    return(0);
+}
+
+
+int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
+                 int dest, int sendtag, void *recvbuf, int recvcount,
+                  MPI_Datatype recvtype, int source, int recvtag,
+                  MPI_Comm comm, MPI_Status *status) {
+    status->MPI_SOURCE = source;
+    status->MPI_TAG    = recvtag;
+    status->MPI_ERROR  = 0;
+    return(0);
+}
+
+
+int MPI_Type_commit(MPI_Datatype *datatype) {
+    return(0);
+}
+
+
+int MPI_Type_free(MPI_Datatype *datatype) {
+    return(0);
+}
+
+
+int MPI_Type_struct(int count, int *array_of_blocklengths,
+                    MPI_Aint *array_of_displacements,
+                    MPI_Datatype *array_of_types, MPI_Datatype *newtype) {
+    return(0);
+}
+
+
+/*  FORTRAN versions of some of the above functions.
+ *  Most of these operate the same as above, we just need to make sure that 
+ *  they are linked in properly, see f2c.c for details.
+ */
+void mpi_address_(void **location, MPI_Aint *address) {
+    *address = (MPI_Aint)NULL;
+}
+
+void mpi_bcast_(void **n, int *com, MPI_Datatype *dt, int *r, MPI_Comm *c, int *ie) {
+    *ie = 0;
+}
+
+void mpi_comm_dup_(MPI_Comm *comm, MPI_Comm **newcomm, int *ie) {
+    *ie = 0;
+}
+
+void mpi_comm_free_(MPI_Comm **comm, int *ie) {
+    *ie = 0;
+}
+
+void mpi_comm_rank_(MPI_Comm *comm, int *rank, int *ie) {
+    *rank = 0;
+    *ie = 0;
+}
+
+void mpi_comm_size_(MPI_Comm *comm, int *size, int *ie) {
+    *size = 1;
+    *ie = 0;
+}
+
+void mpi_finalize_(int *ie) {
+    *ie = 0;
+}
+
+void mpi_init_(int *ie) {
+    *ie = 0;
+}
+
+void mpi_initialized_(int *flag, int *ie) {
+    *flag = 1;
+    *ie = 0;
+}
+
+void mpi_probe_(int *source, int *tag, MPI_Comm *comm, MPI_Status *status,
+               int *ie) {
+    status->MPI_SOURCE = *source;
+    status->MPI_TAG    = *tag;
+    status->MPI_ERROR  = 0;
+    *ie = 0;
+}
+
+void mpi_send_(void *buf, int *count, MPI_Datatype *datatype, int *dest,
+              int *tag, MPI_Comm *comm, int *ie) {
+    *ie = 0;
+}
+
+
+void mpi_recv_(void *buf, int *count, MPI_Datatype *datatype, int *source,
+              int *tag, MPI_Comm *comm, MPI_Status *status, int *ie) {
+    status->MPI_SOURCE = *source;
+    status->MPI_TAG    = *tag;
+    status->MPI_ERROR  = 0;
+    *ie = 0;
+}
+
+
+void mpi_sendrecv_(void *sendbuf, int *sendcount, MPI_Datatype *sendtype,
+                  int *dest, int *sendtag, void *recvbuf, int *recvcount,
+                  MPI_Datatype *recvtype, int *source, int *recvtag,
+                  MPI_Comm *comm, MPI_Status *status, int *ie) {
+    status->MPI_SOURCE = *source;
+    status->MPI_TAG    = *recvtag;
+    status->MPI_ERROR  = 0;
+    *ie = 0;
+}
+
+void mpi_type_commit_(MPI_Datatype **datatype, int *ie) {
+    *ie = 0;
+}
+
+void mpi_type_free_(MPI_Datatype **datatype, int *ie) {
+    *ie = 0;
+}
+
+
+void mpi_type_struct_(int *count, int **array_of_blocklengths,
+                    MPI_Aint **array_of_displacements,
+                    MPI_Datatype **array_of_types, MPI_Datatype **newtype, int *ie) {
+    *ie = 0;
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/mutation.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/mutation.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/mutation.c	(revision 6168)
@@ -0,0 +1,481 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     File: mutation.c: This file contains the data structure neutral mutation
+*                       routines
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGAMutate - This routine performs mutation on a string.  The type of mutation
+  depends on the data type.  Refer to the user guide for data-specific
+  examples.
+
+  Category: Operators
+
+  Inputs:
+      ctx  - context variable
+      p   - index of string to mutate
+      pop - symbolic constant of the population containing p
+
+  Output:
+      The number of mutations performed.  Member p in population pop is
+      mutated by side-effect.
+
+  Example:
+      Mutate the best string in the population, until 10 or more mutations
+      have occured.
+
+      PGAContext *ctx;
+      int p, count = 0;
+      :
+      p = PGAGetBestIndex(ctx, PGA_NEWPOP);
+      while (count < 10) {
+          count += PGAMutate(ctx, p, PGA_NEWPOP);
+      }
+
+****************************************************************************U*/
+int PGAMutate(PGAContext *ctx, int p, int pop)
+{
+    double mr;
+    int count;
+    int fp;
+    PGADebugEntered("PGAMutate");
+    
+    mr    = ctx->ga.MutationProb;
+    if (ctx->fops.Mutation) {
+	fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+        count = (*ctx->fops.Mutation)(&ctx, &fp, &pop, &mr);
+    } else {
+	count = (*ctx->cops.Mutation)( ctx, p, pop, mr );
+    }
+    
+    if ( count > 0 )
+	PGASetEvaluationUpToDateFlag(ctx, p, pop, PGA_FALSE);
+    
+    PGADebugExited("PGAMutate");
+    
+    return(count);
+}
+
+/*U****************************************************************************
+   PGASetMutationType - set type of mutation to use. Only effects integer-
+   and real-valued strings.  Binary-valued strings are always complemented.
+   In character-valued strings, one alphabetic character is replaced with
+   another chosen uniformly randomly.  The alphabetic characters will be lower,
+   upper, or mixed case depending on how the strings were initialized.
+
+   Valid choices are PGA_MUTATION_CONSTANT (Real/Integer), PGA_MUTATION_RANGE
+   (Real/Integer), PGA_MUTATION_UNIFORM (Real), PGA_MUTATION_GAUSSIAN (Real),
+   and PGA_MUTATION_PERMUTE (Integer).  The default for integer-valued strings
+   conforms to how the strings were initialized.  The default for real-valued
+   strings is PGA_MUTATION_GAUSSIAN.  See the user guide for more details.
+
+   Category: Operators
+
+   Inputs:
+      ctx           - context variable
+      mutation_type - symbolic constant to specify the mutation type
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMutationType(ctx, PGA_MUTATION_UNIFORM);
+
+****************************************************************************U*/
+void PGASetMutationType( PGAContext *ctx, int mutation_type)
+{
+    PGADebugEntered("PGASetMutationType");
+
+     switch (mutation_type)
+     {
+     case PGA_MUTATION_CONSTANT:
+     case PGA_MUTATION_RANGE:
+     case PGA_MUTATION_UNIFORM:
+     case PGA_MUTATION_GAUSSIAN:
+     case PGA_MUTATION_PERMUTE:
+          ctx->ga.MutationType = mutation_type;
+          break;
+     default:
+          PGAError ( ctx,
+                    "PGASetMutationType: Invalid value of mutation_type:",
+                    PGA_FATAL, PGA_INT, (void *) &mutation_type);
+          break;
+     }
+
+    PGADebugExited("PGASetMutationType");
+}
+
+/*U***************************************************************************
+   PGAGetMutationType - Returns the type of mutation used
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the type of mutation specified
+
+   Example:
+      PGAContext *ctx;
+      int mutatetype;
+      :
+      mutatetype = PGAGetMutationType(ctx);
+      switch (mutatetype) {
+      case PGA_MUTATION_CONSTANT:
+          printf("Mutation Type = PGA_MUTATION_CONSTANT\n");
+          break;
+      case PGA_MUTATION_RANGE:
+          printf("Mutation Type = PGA_MUTATION_RANGE\n");
+          break;
+      case PGA_MUTATION_UNIFORM:
+          printf("Mutation Type = PGA_MUTATION_UNIFORM\n");
+          break;
+      case PGA_MUTATION_GAUSSIAN:
+          printf("Mutation Type = PGA_MUTATION_GAUSSIAN\n");
+          break;
+      case PGA_MUTATION_PERMUTE:
+          printf("Mutation Type = PGA_MUTATION_PERMUTE\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetMutationType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationType");
+    PGAFailIfNotSetUp("PGAGetMutationType");
+    PGADebugExited("PGAGetMutationType");
+    return(ctx->ga.MutationType);
+}
+
+/*U****************************************************************************
+   PGASetMutationRealValue - Set multiplier to mutate PGA_DATATYPE_REAL
+   strings with.  The use of this value depends on the type of mutation
+   being used.  The default value is 0.1.  See the user guide for more details.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      val - the mutation value to use for Real mutation
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMutationRealValue(ctx,50.0);
+
+****************************************************************************U*/
+void PGASetMutationRealValue( PGAContext *ctx, double val)
+{
+    PGADebugEntered("PGASetMutationRealValue");
+
+    if (val < 0.0)
+        PGAError ( ctx,
+                  "PGASetMutationRealValue: Invalid value of val:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &val);
+    else
+        ctx->ga.MutateRealValue = val;
+
+    PGADebugExited("PGASetMutationRealValue");
+}
+
+/*U***************************************************************************
+   PGAGetMutationRealValue - Returns the value of the multiplier used to
+   mutate PGA_DATATYPE_REAL strings with.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The value of the multiplier used to mutate PGA_DATATYPE_REAL strings with
+
+   Example:
+      PGAContext *ctx;
+      double val;
+      :
+      val = PGAGetMutationRealValue(ctx);
+
+***************************************************************************U*/
+double PGAGetMutationRealValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationRealValue");
+    PGAFailIfNotSetUp("PGAGetMutationRealValue");
+
+    PGADebugExited("PGAGetMutationRealValue");
+
+    return(ctx->ga.MutateRealValue);
+}
+
+/*U****************************************************************************
+   PGASetMutationIntegerValue - Set multiplier to mutate PGA_DATATYPE_INTEGER
+   strings with.  The use of this value depends on the type of mutation
+   being used.  The default value is 1.  See the user guide for more details.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      val - the mutation value to use for Integer mutation
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMutationIntegerValue(ctx, 5);
+
+****************************************************************************U*/
+void PGASetMutationIntegerValue( PGAContext *ctx, int val)
+{
+    PGADebugEntered("PGASetMutationIntegerValue");
+
+    if (val < 0.0)
+        PGAError ( ctx,
+                  "PGASetMutationIntegerValue: Invalid value of val:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &val);
+    else
+        ctx->ga.MutateIntegerValue = val;
+
+    PGADebugExited("PGASetMutationIntegerValue");
+}
+
+
+/*U***************************************************************************
+  PGAGetMutationIntegerValue - Returns the value of the multiplier
+  used to mutate PGA_DATATYPE_INTEGER strings with.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The value of the multiplier used to mutate PGA_DATATYPE_INTEGER
+      strings with
+
+   Example:
+      PGAContext *ctx;
+      int ival;
+      :
+      ival = PGAGetMutationIntegerValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMutationIntegerValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationIntegerValue");
+    PGAFailIfNotSetUp("PGAGetMutationIntegerValue");
+
+    PGADebugExited("PGAGetMutationIntegerValue");
+
+    return(ctx->ga.MutateIntegerValue);
+}
+
+/*U****************************************************************************
+   PGASetMutationBoundedFlag - If this flag is set to PGA_TRUE, then for
+   Integer and Real strings whenever a gene is mutated, if it underflows
+   (overflows) the lower (upper)bound it is reset to the lower (upper) bound.
+   In this way all allele values remain within the range the integer strings
+   were initialized on.  If this flag is PGA_FALSE (the default), the alleles
+   may take any values.
+
+   Category: Operators
+
+   Inputs:
+      ctx  - context variable
+      flag - either PGA_TRUE or PGA_FALSE
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMutationBoundedFlag(ctx, PGA_TRUE);
+
+****************************************************************************U*/
+void PGASetMutationBoundedFlag(PGAContext *ctx, int val)
+{
+    PGADebugEntered("PGASetMutationBoundedFlag");
+
+    switch (val)
+    {
+    case PGA_TRUE:
+    case PGA_FALSE:
+         ctx->ga.MutateBoundedFlag = val;
+         break;
+    default:
+         PGAError(ctx, "PGASetMutationBoundedFlag: Invalid value:",
+                  PGA_FATAL, PGA_INT, (void *) &val);
+         break;
+    }
+
+    PGADebugExited("PGASetMutationBoundedFlag");
+}
+
+
+/*U****************************************************************************
+   PGAGetMutationBoundedFlag - returns PGA_TRUE or PGA_FALSE to indicate
+   whether mutated integer strings remain in the range specified when
+   initialized with PGASetIntegerInitRange.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      PGA_TRUE if restricted to the given range, otherwise PGA_FALSE.
+
+   Example:
+      PGAContext *ctx;
+      int val;
+      :
+      val = PGAGetMutationBoundedFlag(ctx);
+
+****************************************************************************U*/
+int PGAGetMutationBoundedFlag(PGAContext *ctx)
+{
+    PGADebugEntered  ("PGAGetMutationBoundedFlag");
+    PGAFailIfNotSetUp("PGAGetMutationBoundedFlag");
+    PGADebugExited   ("PGAGetMutationBoundedFlag");
+    return (ctx->ga.MutateBoundedFlag);
+}
+
+
+
+/*U****************************************************************************
+   PGASetMutationProb - Specifies the probability that a given allele will
+   be mutated.  If this is called without calling PGASetMutationType(), the
+   default mutation type is PGA_MUTATION_FIXED.  The default probability is
+   the reciprocal of the string length.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      p   - the mutation probability
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMutationProb(ctx,0.001);
+
+****************************************************************************U*/
+void PGASetMutationProb(PGAContext *ctx, double mutation_prob)
+{
+    PGADebugEntered("PGASetMutationProb");
+
+    if ((mutation_prob < 0.0) || (mutation_prob > 1.0))
+        PGAError ( ctx,
+                  "PGASetMutationProb: Invalid value of mutation_prob:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &mutation_prob);
+    else
+        ctx->ga.MutationProb = mutation_prob;
+
+    PGADebugExited("PGASetMutationProb");
+}
+
+/*U***************************************************************************
+   PGAGetMutationProb - Returns the probability of mutation.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The mutation probability
+
+   Example:
+      PGAContext *ctx;
+      double pm;
+      :
+      pm = PGAGetMutateProb(ctx);
+
+***************************************************************************U*/
+double PGAGetMutationProb (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationProb");
+    PGAFailIfNotSetUp("PGAGetMutationProb");
+    PGADebugExited("PGAGetMutationProb");
+    return(ctx->ga.MutationProb);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/parallel.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/parallel.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/parallel.c	(revision 6168)
@@ -0,0 +1,1090 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/******************************************************************************
+*     FILE: parallel.c: This file contains all the parallel functions
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+******************************************************************************/
+
+#include "pgapack.h"
+
+#define DEBUG_EVAL 0
+
+/*U****************************************************************************
+  PGARunGM - High-level routine to execute the genetic algorithm using the
+  global model.  It is called after PGACreate and PGASetup have been called.
+  If a NULL communicator is given, a sequential execution method is used,
+  otherwise, work is divided among the processors in the communicator.
+
+  Category: Generation
+
+  Inputs:
+    ctx      - context variable
+    evaluate - a pointer to the user's evaluation function, which must
+    have the calling sequence shown in the example.
+    comm     - an MPI communicator
+
+  Outputs:
+    none
+
+  Example:
+    PGAContext *ctx;
+    double f(PGAContext *ctx, int p, int pop);
+    :
+    PGARunGM(ctx, f, MPI_COMM_WORLD);
+
+****************************************************************************U*/
+void PGARunGM(PGAContext *ctx, double (*f)(PGAContext *, int, int),
+	      MPI_Comm comm)
+{
+    int       rank, Restarted, best_p;
+    void    (*CreateNewGeneration)(PGAContext *, int, int);
+
+    /*  Let this be warned:
+     *  The communicator is NOT duplicated.  There might be problems with
+     *  PGAPack and the user program using the same communicator.
+     */
+    PGADebugEntered("PGARunGM");
+
+    rank = PGAGetRank(ctx, comm);
+
+    /* EHW: Starting the Initialization of the User Context Data */
+    if (rank == 0){
+      if (ctx->fops.InitUserCtx)
+	(*ctx->fops.InitUserCtx)(&ctx);
+      if (ctx->cops.InitUserCtx)
+	(*ctx->cops.InitUserCtx)(ctx);
+    }
+
+    PGAEvaluate(ctx, PGA_OLDPOP, f, comm);
+    if (rank == 0){
+      int popindex = PGA_OLDPOP ;
+      if ( ctx->cops.Fitness ) {
+          (*ctx->cops.Fitness)(ctx, PGA_OLDPOP);
+      }
+      else if ( ctx->fops.Fitness ) {
+          (*ctx->fops.Fitness)(&ctx,&popindex) ;
+      }  
+      else {
+          PGAFitness(ctx, PGA_OLDPOP);
+      }
+
+      /* EHW: Running the endof generation function so that the
+	 initial population is saved */
+      if (ctx->fops.EndOfGen)
+	(*ctx->fops.EndOfGen)(&ctx);
+      if (ctx->cops.EndOfGen)
+	(*ctx->cops.EndOfGen)(ctx);
+    }
+
+
+    if (PGAGetMutationOrCrossoverFlag(ctx)) 
+	CreateNewGeneration = PGARunMutationOrCrossover;
+    else
+	CreateNewGeneration = PGARunMutationAndCrossover;
+
+    while (!PGADone(ctx, comm)) {
+	if (rank == 0) {
+	    Restarted = PGA_FALSE;
+	    if ((ctx->ga.restart == PGA_TRUE) &&
+		(ctx->ga.ItersOfSame % ctx->ga.restartFreq == 0) &&
+		(ctx->ga.iter!=0)) { /* gekco 5/25/99 */ 
+		ctx->ga.ItersOfSame++;
+		Restarted = PGA_TRUE;
+		PGARestart(ctx, PGA_OLDPOP, PGA_NEWPOP);
+	    } else {
+                int popindex = PGA_OLDPOP ;
+                if ( ctx->cops.Select ) {
+                    (*ctx->cops.Select)(ctx, PGA_OLDPOP) ;
+                } else if ( ctx->fops.Select ) {
+                    (*ctx->fops.Select)(&ctx, &popindex) ;
+                } else {
+		    PGASelect(ctx, PGA_OLDPOP);
+                }
+		CreateNewGeneration(ctx, PGA_OLDPOP, PGA_NEWPOP);
+	    }
+	}
+	MPI_Bcast(&Restarted, 1, MPI_INT, 0, comm);
+
+	PGAEvaluate(ctx, PGA_NEWPOP, f, comm);
+	if (rank == 0) {
+            int popindex = PGA_NEWPOP ; 
+            if ( ctx->cops.Fitness ) {
+                (*ctx->cops.Fitness)(ctx, PGA_NEWPOP);
+            } else if ( ctx->fops.Fitness ) {
+                ( *ctx->fops.Fitness )( &ctx, &popindex ) ;
+            } else {
+	        PGAFitness(ctx, PGA_NEWPOP);
+            }
+         }
+
+	/*  If the GA wasn't restarted, update the generation and print
+         *  stuff.  We do this because a restart is NOT counted as a 
+         *  complete generation.
+	 */
+	if (!Restarted) {
+	    PGAUpdateGeneration(ctx, comm);
+	    if (rank == 0)
+	      PGAPrintReport(ctx, stdout, PGA_OLDPOP);
+	  }
+    }
+
+    if (rank == 0) {
+	best_p = PGAGetBestIndex(ctx, PGA_OLDPOP);
+	printf("The Best Evaluation: %e.\n",
+	       PGAGetEvaluation(ctx, best_p, PGA_OLDPOP));
+	printf("The Best String:\n");
+	PGAPrintString(ctx, stdout, best_p, PGA_OLDPOP);
+	fflush(stdout);
+	
+	/* EHW: Destroying the User Context Data */
+	if (ctx->fops.KillUserCtx)
+	  (*ctx->fops.KillUserCtx)(&ctx);
+	if (ctx->cops.KillUserCtx)
+	  (*ctx->cops.KillUserCtx)(ctx);
+
+    }
+    PGADebugExited("PGARunGM");
+}
+
+
+/*I****************************************************************************
+   PGAEvaluateSeq - Internal evalution function.  Evaluates all strings
+   that need to be evaluated using one processor.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx  - context variable
+      pop  - symbolic constant of the population to be evaluated
+      f    - a pointer to a function to evaluate a string.
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAEvaluateSeq(PGAContext *ctx, int pop,
+		    double (*f)(PGAContext *, int, int))
+{
+    int     p;
+    double  e;
+
+    PGADebugEntered("PGAEvaluateSeq");
+
+    /*  Standard sequential evaluation.  */
+    if (ctx->sys.UserFortran == PGA_TRUE) {
+	for (p=1; p<=ctx->ga.PopSize; p++)
+	    if (!PGAGetEvaluationUpToDateFlag(ctx, p-1, pop)) {
+		e = (*((double(*)(void *, void *, void *))f))(&ctx, &p, &pop);
+		PGASetEvaluation (ctx, p-1, pop, e);
+	    }
+    } else {
+	for (p=0; p<ctx->ga.PopSize; p++) 
+	    if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop)) {
+		e = (*f)(ctx, p, pop);
+		PGASetEvaluation(ctx, p, pop, e);
+	    }
+    }
+    PGADebugExited("PGAEvaluateSeq");
+}
+
+
+/*I****************************************************************************
+   PGAEvaluateCoop - Internal evaluation function.  Evaluates all strings
+   that need to be evaluated using two processors cooperatively.  The first
+   is treated as a master, it will send a string to the second for evaluation.
+   While the second is evaluating, the master will _also_ evaluate a string.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx  - context variable
+      pop  - symbolic constant of the population to be evaluated
+      f    - a pointer to a function to evaluate a string.
+      comm - an MPI communicator
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAEvaluateCoop(PGAContext *ctx, int pop,
+		     double (*f)(PGAContext *, int, int), MPI_Comm comm)
+{
+    MPI_Status      stat;
+    int             p, fp, q;
+    double          e;
+    PGAIndividual  *ind;
+
+    PGADebugEntered("PGAEvaluateCoop");
+
+    q = -1;
+
+    ind = PGAGetIndividual(ctx, 0, pop);
+    
+    for (p=0; p<ctx->ga.PopSize;) {
+	while ((p<ctx->ga.PopSize) && (ind+p)->evaluptodate)  p++;
+	if (p<ctx->ga.PopSize) {
+	    PGASendIndividual(ctx, p, pop, 1, PGA_COMM_STRINGTOEVAL, comm);
+	    q = p;
+	}
+	p++;
+	
+	while ((p<ctx->ga.PopSize) && (ind+p)->evaluptodate)  p++;
+	if (p<ctx->ga.PopSize) {
+	    if (ctx->sys.UserFortran == PGA_TRUE) {
+		fp = p+1;
+		e = (*((double(*)(void *, void *, void *))f))(&ctx, &fp, &pop);
+	    } else {
+		e = (*f)(ctx, p, pop);
+	    }
+	    PGASetEvaluation(ctx, p, pop, e);
+#if DEBUG_EVAL
+	    printf("%4d: %10.8e Local\n", p, e); fflush(stdout);
+#endif
+	}
+	
+	if (q >= 0) {
+	    MPI_Recv(&e, 1, MPI_DOUBLE, 1, PGA_COMM_EVALOFSTRING, comm, &stat);
+	    PGASetEvaluation(ctx, q, pop, e);
+#if DEBUG_EVAL
+	    printf("%4d: %10.8e Slave %d\n", p, e, 1); fflush(stdout);
+#endif
+	    q = -1;
+	}
+    }   
+    
+    /*  Release the slave  */
+    MPI_Send(&q, 1, MPI_INT, 1, PGA_COMM_DONEWITHEVALS, comm);
+
+    PGADebugExited("PGAEvaluateCoop");
+}
+
+
+
+/*I****************************************************************************
+   PGAEvaluateMS - Internal evaluation function.  Evaluates all strings
+   that need evaluating using three or more processors.  Operates in a 
+   standard master-slave execution method.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx  - context variable
+      pop  - symbolic constant of the population to be evaluated
+      f    - a pointer to a function to evaluate a string.
+      comm - an MPI communicator
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAEvaluateMS(PGAContext *ctx, int pop,
+		   double (*f)(PGAContext *c, int p, int pop), MPI_Comm comm)
+{
+    int    *work;
+    int     i, k, s, p, size, sentout;
+    double  e;
+    MPI_Status stat;
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAEvaluateMS");
+
+    size = PGAGetNumProcs(ctx, comm);
+
+    work = (int *)malloc(size *sizeof(int));
+    if (work == NULL) {
+	PGAError(ctx, "PGAEvaluateMS:  Couldn't allocate work array",
+		 PGA_FATAL, PGA_VOID, NULL);
+    }
+    
+    sentout = 0;
+    s = 1;
+    ind = PGAGetIndividual(ctx, 0, pop);
+    
+    /*  Send strings to all processes, since they are all unused.  */
+    for (k=0; ((k<ctx->ga.PopSize) && (s<size)); k++) {
+	if ((ind+k)->evaluptodate == PGA_FALSE) {
+	    work[s] = k;
+	    PGASendIndividual(ctx, k, pop, s, PGA_COMM_STRINGTOEVAL, comm);
+#if DEBUG_EVAL
+	    printf("%4d: Sent to slave %d.\n", k, s); fflush(stdout);
+#endif
+	    sentout++;
+	    s++;
+	}
+    }
+    
+    /*  Move to the next string to be evaluated.  Notice that all we need
+     *  to do is skip any strings that are already evaluated, unlike 
+     *  below, where we need to _first_ go to the next string, then
+     *  skip any that are up to date.
+     */
+    while ((k<ctx->ga.PopSize) && (ind+k)->evaluptodate)  k++;
+    
+    /*  While there are still unevaluated individuals, receive whatever
+     *  is waiting, then immediately send a new string to it.  This 
+     *  implicitly will balance the load across the machines, as we
+     *  initially sent a string to _each_ process, so _each_ process
+     *  will return an evaluation and get a new one immediately.
+     */
+    while(k<ctx->ga.PopSize) {
+	/*  Receive the next evaluated string.  */
+
+        PGAReceiveIndividual(ctx, PGA_TEMP3, pop, MPI_ANY_SOURCE,
+			   PGA_COMM_STRINGTOEVAL,  comm, &stat);
+	p = work[stat.MPI_SOURCE];
+
+	PGASetEvaluation(ctx,p,pop,PGAGetEvaluation(ctx,PGA_TEMP3,pop));
+	(*ctx->cops.CopyString)(ctx,PGA_TEMP3,pop,p,pop);
+
+/*	PGASetEvaluation(ctx, p, pop, PGAGetEvaluation(ctx,PGA_TEMP3,pop)); */
+
+	
+#if DEBUG_EVAL
+	printf("%4d: %10.8e Slave %d  Sent %d\n", work[stat.MPI_SOURCE],
+	       e, stat.MPI_SOURCE, k); fflush(stdout);
+#endif
+	
+	/*  Immediately send another string to be evaluated.  */
+	work[stat.MPI_SOURCE] = k;
+	PGASendIndividual(ctx, k, pop, stat.MPI_SOURCE,
+			  PGA_COMM_STRINGTOEVAL, comm);
+	
+	/*  Find the next unevaluated individual  */
+	k++;
+	while ((k<ctx->ga.PopSize) && (ind+k)->evaluptodate)  k++;
+    }
+    
+    /*  All strings have been sent out.  Wait for them to be done.  */
+    while(sentout > 0) {
+
+
+        PGAReceiveIndividual(ctx, PGA_TEMP3, pop, MPI_ANY_SOURCE, 
+			   PGA_COMM_STRINGTOEVAL,  comm, &stat);
+	p = work[stat.MPI_SOURCE];
+	PGASetEvaluation(ctx,p,pop,PGAGetEvaluation(ctx,PGA_TEMP3,pop));
+	(*ctx->cops.CopyString)(ctx,PGA_TEMP3,pop,p,pop);
+
+/*	PGASetEvaluation(ctx, p, pop, PGAGetEvaluation(ctx,PGA_TEMP3,pop)); */
+
+
+      /***/
+	sentout--;
+#if DEBUG_EVAL
+	printf("%4d: %10.8e Slave %d\n", 
+	       work[stat.MPI_SOURCE], e, stat.MPI_SOURCE); fflush(stdout);
+#endif
+    }
+    free(work);
+    
+    /*  Release the slaves.  */
+    for (i=1; i<size; i++)
+	MPI_Send(&i, 1, MPI_INT, i, PGA_COMM_DONEWITHEVALS, comm);
+
+    PGADebugExited("PGAEvaluateMS");
+}
+
+
+/*I****************************************************************************
+   PGAEvaluateSlave - Slave execution routine.  Sit around and wait for a
+   string to eval to show up, then evaluate it and return the evaluation.
+   Terminates when it receives PGA_COMM_DONEWITHEVALS.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAEvaluateSlave(PGAContext *ctx, int pop,
+		      double (*f)(PGAContext *, int, int), MPI_Comm comm)
+{
+    MPI_Status  stat;
+    int         k;
+    double      e;
+
+    PGADebugEntered("PGAEvaluateSlave");
+
+    k = PGA_TEMP1;
+    MPI_Probe(0, MPI_ANY_TAG, comm, &stat);
+    while (stat.MPI_TAG == PGA_COMM_STRINGTOEVAL) {
+	PGAReceiveIndividual(ctx, PGA_TEMP1, pop, 0, PGA_COMM_STRINGTOEVAL,
+			     comm, &stat);
+
+	if (ctx->sys.UserFortran == PGA_TRUE)
+	    e = (*((double(*)(void *, void *, void *))f))(&ctx, &k, &pop);
+	else 
+	    e = (*f)(ctx, PGA_TEMP1, pop);
+
+
+	PGASetEvaluation(ctx,PGA_TEMP1,pop,e);
+	PGASendIndividual(ctx, PGA_TEMP1, pop, 0 ,
+			  PGA_COMM_STRINGTOEVAL, comm);
+
+
+	MPI_Probe(0, MPI_ANY_TAG, comm, &stat);
+    }
+    MPI_Recv(&k, 1, MPI_INT, 0, PGA_COMM_DONEWITHEVALS, comm, &stat);
+
+    PGADebugExited("PGAEvaluateSlave");
+}
+
+
+/*U****************************************************************************
+   PGAEvaluate - Calls a user-specified function to return an evaluation of
+   each string in the population. The user-specified function is only called
+   if the string has been changed (e.g., by crossover or mutation) or the user
+   has explicitly signaled the string's evaluation is out-of-date by a call
+   to PGASetEvaluationUpToDateFlag().
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx  - context variable
+      pop  - symbolic constant of the population to be evaluated
+      f    - a pointer to a function to evaluate a string.  This function will
+             be called once for each string in population pop that requires
+             evaluation.  This function must return a double (the evaluation
+             function value) and must fit the prototype
+                 double f(PGAContext *c, int p, int pop);
+      comm - an MPI communicator
+
+   Outputs:
+      Evaluates the population via side effect
+
+   Example:
+      Evaluate all strings in population PGA_NEWPOP using the user-defined
+      evaluation function Energy.
+
+      double Energy(PGAContext *ctx, int p, int pop) {
+        :
+      };
+
+      PGAContext *ctx;
+      :
+      PGAEvaluate(ctx, PGA_NEWPOP, Energy, MPI_COMM_WORLD);
+
+****************************************************************************U*/
+void PGAEvaluate(PGAContext *ctx, int pop,
+		 double (*f)(PGAContext *, int, int), MPI_Comm comm)
+{
+    int  rank, size;
+
+    PGADebugEntered("PGAEvaluate");
+
+    rank = PGAGetRank(ctx, comm);
+    size = PGAGetNumProcs(ctx, comm);
+
+    if (rank == 0) {
+	if (size == 1)
+	    PGAEvaluateSeq(ctx, pop, f);
+	if (size == 2)
+	    PGAEvaluateCoop(ctx, pop, f, comm);
+	if (size > 2) 
+	    PGAEvaluateMS(ctx, pop, f, comm);
+    } else {
+	PGAEvaluateSlave(ctx, pop, f, comm);
+    }
+
+    PGADebugExited("PGAEvaluate");
+}
+
+
+/*U****************************************************************************
+  PGABuildDatatype - Build an MPI datatype for string p in population pop.
+
+  Category: Parallel
+
+  Inputs:
+    ctx     - context variable
+    p       - index of an individual
+    pop     - symbolic constant of the population
+
+  Outputs:
+    An MPI datatype for member p of population pop.
+
+  Example:
+    PGAContext *ctx;
+    int p;
+    MPI_Datatype dt;
+    :
+    dt = PGABuildDatatype(ctx, p, PGA_NEWPOP);
+
+****************************************************************************U*/
+MPI_Datatype PGABuildDatatype(PGAContext *ctx, int p, int pop)
+{
+    PGADebugEntered("PGABuildDatatype");
+    
+    PGADebugExited("PGABuildDatatype");
+
+    return((*ctx->cops.BuildDatatype)(ctx, p, pop));
+}
+
+
+/*U****************************************************************************
+  PGASendIndividual - transmit an individual to another process
+
+  Category: Parallel
+
+  Inputs:
+    ctx  - context variable
+    p    - index of an individual
+    pop  - symbolic constant of the population
+    dest - ID of the process where this is going
+    tag  - MPI tag to send with the individual
+    comm - MPI communicator
+
+  Outputs:
+
+  Example:
+    PGAContext *ctx;
+    int p, dest;
+    :
+    dest = SelectAFreeProcessor();
+    PGASendIndividual(ctx, p, PGA_NEWPOP, dest, PGA_SR_STRINGTOEVAL, comm);
+
+****************************************************************************U*/
+void PGASendIndividual(PGAContext *ctx, int p, int pop, int dest, int tag,
+                       MPI_Comm comm)
+{
+    MPI_Datatype individualtype;
+
+    PGADebugEntered("PGASendIndividual");
+
+    individualtype = PGABuildDatatype(ctx, p, pop);
+    MPI_Send(MPI_BOTTOM, 1, individualtype, dest, tag, comm);
+    MPI_Type_free(&individualtype);
+    
+    PGADebugExited("PGASendIndividual");
+}
+
+/*U****************************************************************************
+  PGAReceiveIndividual - receive an individual from another process
+
+  Category: Parallel
+
+  Inputs:
+    ctx    - contex variable
+    p      - index of an individual
+    pop    - symbolic constant of the population
+    source - ID of the process from which to receive
+    tag    - MPI tag to look for
+    status - pointer to an MPI status structure
+
+  Outputs:
+    status and string p in population pop are changed by side-effect.
+
+  Example:
+    Receive a string from the master process (rank == 0) with tag
+    PGA_SR_STRINGTOEVAL, and place it into the first temporary location
+    in PGA_NEWPOP.
+
+    PGAContext *ctx;
+    MPI_Comm    comm;
+    MPI_Status  status;
+    :
+    PGAReceiveIndividual(ctx, PGA_TEMP1, PGA_NEWPOP, 0, PGA_SR_STRINGTOEVAL,
+                         comm, &status);
+
+****************************************************************************U*/
+void PGAReceiveIndividual(PGAContext *ctx, int p, int pop, int source, int tag,
+                          MPI_Comm comm, MPI_Status *status)
+{
+     MPI_Datatype individualtype;
+
+    PGADebugEntered("PGAReceiveIndividual");
+
+     individualtype = PGABuildDatatype(ctx, p, pop);
+     MPI_Recv(MPI_BOTTOM, 1, individualtype, source, tag, comm, status);
+     MPI_Type_free(&individualtype);
+
+    PGADebugExited("PGAReceiveIndividual");
+}
+
+/*U****************************************************************************
+  PGASendReceiveIndividual - Send an individual to a process, while receiving
+  a different individual from a different process.
+
+  Category: Parallel
+
+  Inputs:
+    ctx       - context variable
+    send_p    - index of string to send
+    send_pop  - symbolic constant of population to send from
+    dest      - destination process
+    send_tag  - tag to send with
+    recv_p    - index of string to receive
+    recv_pop  - symbolic constant of population to receive from
+    source    - process to receive from
+    recv_tag  - tag to receive with
+    comm      - an MPI communicator
+    status    - pointer to the MPI status structure
+
+  Outputs:
+    status and string recv_p in population recv_pop are modified by
+    side-effect.
+
+  Example:
+    A dedicated process is being used to perform an optimization algorithm
+    on the strings.  Send a new string, s, to the process, while receiving an
+    optimized string, r, from it.
+
+    PGAContext *ctx;
+    MPI_Comm    comm;
+    MPI_Status  status;
+    int  s, r;
+    :
+    PGASendReceiveIndividual(ctx, s, PGA_NEWPOP, 1, PGA_SR_STRINGTOMODIFY,
+                                  r, PGA_NEWPOP, 1, PGA_SR_MODIFIEDSTRING,
+                                  comm, &status);
+
+****************************************************************************U*/
+void PGASendReceiveIndividual(PGAContext *ctx, int send_p, int send_pop,
+                              int dest, int send_tag, int recv_p, int recv_pop,
+                              int source, int recv_tag, MPI_Comm comm,
+                              MPI_Status *status)
+{
+     MPI_Datatype individualsendtype;
+     MPI_Datatype individualrecvtype;
+
+    PGADebugEntered("PGASendReceiveIndividual");
+
+     individualsendtype = PGABuildDatatype(ctx, send_p, send_pop);
+     individualrecvtype = PGABuildDatatype(ctx, recv_p, recv_pop);
+
+     MPI_Sendrecv(MPI_BOTTOM, 1, individualsendtype, dest,   send_tag,
+                  MPI_BOTTOM, 1, individualrecvtype, source, recv_tag,
+                  comm, status);
+
+     MPI_Type_free(&individualsendtype);
+     MPI_Type_free(&individualrecvtype);
+
+    PGADebugExited("PGASendReceiveIndividual");
+}
+
+
+/*I****************************************************************************
+  PGARunIM - Execute the island model genetic algorithm
+
+  Category: Parallel
+
+  Inputs:
+    ctx      - context variable
+    evaluate - a pointer to the user's evaluation function, which must
+               have the calling sequence shown in the example.
+    comm     - the MPI communicator to use
+
+  Outputs:
+    none
+
+  Example:
+    PGAContext *ctx,
+    double f(PGAContext *ctx, int p, int pop);
+    MPI_Comm comm;
+    :
+    PGARunIM(ctx, f, comm);
+
+****************************************************************************I*/
+void PGARunIM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm)
+{
+    /* Based on ctx->par.topology this routine will need to create the
+       appropriate communicator out of tcomm
+    */
+    
+     PGADebugEntered("PGARunIM");
+     PGAError (ctx, "PGARunIM: Island model not implemented",
+               PGA_FATAL, PGA_VOID, NULL);
+     PGADebugExited("PGARunIM");
+}
+
+
+/*I****************************************************************************
+  PGARunNM - Execute a neighborhood model genetic algorithm
+
+  Category: Parallel
+
+  Inputs:
+    ctx      - context variable
+    evaluate - a pointer to the user's evaluation function, which must
+               have the calling sequence shown in the example.
+    comm     - the MPI communicator to use
+
+  Outputs:
+    none
+
+  Example:
+    PGAContext *ctx,
+    MPI_Comm comm;
+    double f(PGAContext *ctx, int p, int pop);
+    :
+    PGARunNM(ctx, f, comm);
+
+****************************************************************************I*/
+void PGARunNM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm)
+{
+    /* Based on ctx->par.topology this routine will need to create the
+       appropriate communicator out of tcomm
+    */
+     PGADebugEntered("PGARunNM");
+     PGAError (ctx, "PGARunNM: Island model not implemented",
+               PGA_FATAL, PGA_VOID, NULL);
+     PGADebugExited("PGARunNM");
+}
+
+
+
+/*U****************************************************************************
+  PGAGetRank - Returns the rank of the processor in communicator comm.  If
+  comm is NULL or a sequential version of PGAPack is used, PGAGetRank()
+  returns 0.
+
+  Category: Parallel
+
+  Inputs:
+      ctx  - context variable structure pointer
+      comm - an MPI communicator
+
+  Outputs:
+      The rank of this processor
+
+  Example:
+      PGAContext  *ctx;
+      int          rank;
+      :
+      rank = PGAGetRank(ctx, MPI_COMM_WORLD);
+      if (rank == 0) {
+          LetTheMasterDoSomething();
+      }
+
+****************************************************************************U*/
+int PGAGetRank (PGAContext *ctx, MPI_Comm comm)
+{
+    int rank;
+    
+    PGADebugEntered("PGAGetRank");
+
+    if (comm == (MPI_Comm) NULL)
+	rank = 0;
+    else
+	MPI_Comm_rank(comm, &rank);
+    
+    PGADebugExited("PGAGetRank");
+    
+    return(rank);
+}
+
+
+/*U****************************************************************************
+  PGAGetNumProcs - Returns the size of communicator comm in processes.  If
+  comm is NULL or a sequential version of PGAPack is used, PGAGetNumProcs()
+  returns 1.
+
+  Category: Parallel
+
+  Inputs:
+      ctx  - context variable structure pointer
+      comm - an MPI communicator
+
+  Outputs:
+      The numbers of processors in communicator comm.
+
+  Example:
+      PGAContext  *ctx;
+      :
+      if (PGAGetNumProcs(ctx, MPI_COMM_WORLD) < 4) {
+          printf("Too few processors for decent performance!\n");
+	  exit(-1);
+      }
+
+****************************************************************************U*/
+int PGAGetNumProcs (PGAContext *ctx, MPI_Comm comm)
+{
+    int size;
+
+    PGADebugEntered("PGAGetNumProcs");
+
+    if (comm == (MPI_Comm) NULL)
+	size = 1;
+    else
+	MPI_Comm_size(comm, &size);
+
+    PGADebugExited("PGAGetNumProcs");
+
+    return(size);
+}
+
+
+/*I****************************************************************************
+   PGASetNumIslands - Set the number of islands to use in an island model
+   GA. The default is one.  Currently must be the same as the number of
+   processes in the default communicator.  
+
+   Category: Parallel
+
+   Inputs:
+      ctx - context variable
+      n   - number of islands
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx,
+      double f(PGAContext *ctx, int p, int pop);
+      :
+      ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+      PGASetNumIslands(ctx, 10);
+      PGASetUp(ctx);
+      PGARun(ctx, f);
+      PGADestroy(ctx);
+
+****************************************************************************I*/
+void PGASetNumIslands( PGAContext *ctx, int n)
+{
+
+    PGADebugEntered("PGASetNumIslands");
+
+    if ( n < 1 )
+        PGAError(ctx, "PGASetNumIslands: Invalid value of n:",
+                 PGA_FATAL, PGA_INT, (void *) &n);
+
+    ctx->par.NumIslands = n;
+
+    PGADebugExited("PGASetNumIslands");
+}
+
+
+/*I***************************************************************************
+   PGAGetNumIslands - Returns the number of islands to use in an island model
+
+   Category: Parallel
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+       the number of islands to use in an island model
+
+   Example:
+      PGAContext *ctx;
+      int npop;
+      :
+      npop = PGAGetNumIslands(ctx);
+
+***************************************************************************I*/
+int PGAGetNumIslands (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetNumIslands");
+    PGAFailIfNotSetUp("PGAGetNumIslands");
+
+    PGADebugExited("PGAGetNumIslands");
+
+    return(ctx->par.NumIslands);
+}
+
+/*I****************************************************************************
+   PGASetNumDemes - Set the number of demes to use in a neighborhood model
+   GA. Currently must be the same as the number of processes in the default
+   communicator.  The default is one.
+
+   Category: Parallel
+
+   Inputs:
+      ctx          - context variable
+      numdemes     - number of demes
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx,
+      double f(PGAContext *ctx, int p, int pop);
+      :
+      ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+      PGASetNumDemes(ctx, 4);
+      PGASetUp(ctx);
+      PGARun(ctx, f);
+      PGADestroy(ctx);
+
+****************************************************************************I*/
+void PGASetNumDemes( PGAContext *ctx, int numdemes)
+{
+    PGADebugEntered("PGASetNumDemes");
+
+    if ( numdemes < 1 )
+        PGAError(ctx, "PGASetNumDemes: Invalid value of numdemes:",
+                 PGA_FATAL, PGA_INT, (void *) &numdemes);
+
+    ctx->par.NumDemes = numdemes;
+
+    PGADebugExited("PGASetNumDemes");
+}
+
+
+/*I***************************************************************************
+   PGAGetNumDemes - Returns the number of demes to use in a neighborhood model
+
+   Category: Parallel
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+       the number of demes to use in a neighborhood model
+
+   Example:
+      PGAContext *ctx;
+      int npop;
+      :
+      npop = PGAGetNumDemes(ctx);
+
+***************************************************************************I*/
+int PGAGetNumDemes (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetNumDemes");
+    PGAFailIfNotSetUp("PGAGetNumDemes");
+
+    PGADebugExited("PGAGetNumDemes");
+
+    return(ctx->par.NumDemes);
+}
+
+
+/*U****************************************************************************
+   PGASetCommunicator - Set the default communicator to use when PGARun is
+   called.  Does not necessarily need to be the same as the number of
+   processes in MPI_COMM_WORLD (which is the default).
+
+   Category: Parallel
+
+   Inputs:
+      ctx    - context variable
+      comm   - communicator to use
+
+   Outputs:
+      None
+
+   Example:
+      MPI_Comm mycomm;
+      PGAContext *ctx,
+      double f(PGAContext *ctx, int p, int pop);
+      :
+      ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+      PGASetCommunicator(ctx, mycomm);
+      PGASetUp(ctx);
+      PGARun(ctx, f);
+      PGADestroy(ctx);
+
+****************************************************************************U*/
+void PGASetCommunicator( PGAContext *ctx, MPI_Comm comm)
+{
+
+    PGADebugEntered("PGASetCommunicator");
+
+    ctx->par.DefaultComm = comm;
+
+    PGADebugExited("PGASetCommunicator");
+}
+
+
+/*U****************************************************************************
+   PGAGetCommunicator - Returns the default communicator used when PGARun is
+   called.
+   
+   Category: Parallel
+
+   Inputs:
+      ctx    - context variable
+
+   Outputs:
+      The default communicator
+
+   Example:
+      MPI_Comm comm;
+      PGAContext *ctx,
+      double f(PGAContext *ctx, int p, int pop);
+      :
+      ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+      PGASetUp(ctx);
+      comm = PGAGetCommunicator(ctx);
+
+
+****************************************************************************U*/
+MPI_Comm PGAGetCommunicator( PGAContext *ctx)
+{
+
+    PGADebugEntered("PGAGetCommunicator");
+
+    PGADebugExited("PGAGetCommunicator");
+
+    return(ctx->par.DefaultComm);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/pga.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/pga.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/pga.c	(revision 6168)
@@ -0,0 +1,797 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: pga.c: This file contains all the routines that are data structure
+*                  neutral
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, and David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGARun - Highest level routine to execute the genetic algorithm.  It
+  is called after PGACreate and PGASetup have been called.
+
+  Category: Generation
+
+  Inputs:
+    ctx      - context variable
+    evaluate - a pointer to the user's evaluation function, which must
+               have the calling sequence shown in the example.
+
+  Outputs:
+    none
+
+  Example:
+    PGAContext *ctx,
+    double f(PGAContext *ctx, int p, int pop);
+    :
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+    PGASetUp(ctx);
+    PGARun(ctx, f);
+    PGADestroy(ctx);
+
+****************************************************************************U*/
+void PGARun(PGAContext *ctx, double (*evaluate)(PGAContext *c, int p, int pop))
+{
+     MPI_Comm comm;                  /* value of default communicator */
+     int nprocs;                     /* number of processes in above  */
+     int npops;                      /* number of populations         */
+     int ndemes;                     /* number of demes               */
+     
+
+     PGADebugEntered("PGARun");
+     PGAFailIfNotSetUp("PGARun");
+
+     comm   = PGAGetCommunicator(ctx);
+     nprocs = PGAGetNumProcs    (ctx, comm);
+     npops  = PGAGetNumIslands  (ctx);
+     ndemes = PGAGetNumDemes    (ctx);
+
+     /**********************************************************************/
+     /*              Global model, one island, one deme                    */
+     /**********************************************************************/
+     if     ( (npops == 1) && (ndemes == 1) ) {
+
+	 PGARunGM(ctx, evaluate, comm);
+     }
+     
+     /**********************************************************************/
+     /*              Island model, > one island, one deme                  */
+     /**********************************************************************/
+     else if( (npops > 1) && (ndemes == 1) ) {
+         if ( nprocs == 1 )
+             PGAError (ctx, "PGARun: island model with one process",
+                       PGA_FATAL, PGA_VOID, (void *) &nprocs);
+         if ( nprocs != npops) {
+             PGAError (ctx, "PGARun: island model no. processes != no. pops",
+                       PGA_FATAL, PGA_VOID, (void *) &nprocs);
+         }
+         PGARunIM(ctx,evaluate,comm);
+     }
+             
+     /**********************************************************************/
+     /*              Neighborhood model, one island, > one deme            */
+     /**********************************************************************/
+     else if( (npops == 1) && (ndemes > 1) ) {
+         if ( nprocs == 1 )
+             PGAError (ctx, "PGARun: neighborhood model with one process",
+                       PGA_FATAL, PGA_VOID, (void *) &nprocs);
+         if ( nprocs != ndemes)
+             PGAError (ctx, "PGARun: neighborhood model no. processes "
+                       "!= no. demes", PGA_FATAL, PGA_VOID, (void *) &nprocs);
+         PGARunNM(ctx,evaluate,comm);
+     }
+             
+     /**********************************************************************/
+     /*              Mixed model, > one island, > one deme                 */
+     /**********************************************************************/
+     else if( (npops > 1) && (ndemes > 1) ) {
+         PGAError (ctx, "PGARun: Cannot execute mixed models",
+                   PGA_FATAL, PGA_VOID, (void *) &nprocs);
+     }
+
+     /**********************************************************************/
+     /*                        E R R O R                                   */
+     /**********************************************************************/
+     else {
+         PGAError (ctx, "PGARun: Invalid combination of numislands,"
+                   "ndemes, and nprocs.",
+                   PGA_FATAL, PGA_VOID, (void *) &nprocs);
+     }
+
+     /**********************************************************************/
+     /*                         E X I T                                    */
+     /**********************************************************************/
+     PGADebugExited("PGARun");
+     return;
+ }
+
+
+/*U****************************************************************************
+  PGARunMutationAndCrossover - Performs crossover and mutation from one
+  population to create the next.  Assumes PGASelect has been called.
+
+  Category: Generation
+
+  Inputs:
+    ctx - context variable
+    oldpop - symbolic constant of old population
+    newpop - symbolic constant of new population
+
+  Outputs:
+    newpop is modified by side-effect.
+
+  Example:
+     PGAContext *ctx,
+    :
+    PGARunMutationAndCrossover(ctx, PGA_OLDPOP, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGARunMutationAndCrossover (PGAContext *ctx, int oldpop, int newpop)
+{
+    int i, j, n, m1, m2;
+    int popsize, numreplace;
+    double pc;
+
+    PGADebugEntered("PGARunMutationAndCrossover");
+
+    popsize = PGAGetPopSize(ctx);
+    numreplace = PGAGetNumReplaceValue(ctx);
+    /*** first, copy n best strings (sorted by fitness) to new pop ***/
+    /* comment out by Lu Yang: PGASortPop( ctx, oldpop ); */
+/*********************************************/
+/* new added by Lu Yang */
+    if ( ctx->cops.SortPop ) {
+       (*ctx->cops.SortPop)(ctx, oldpop);
+    } else if ( ctx->fops.SortPop ) {
+        ( *ctx->fops.SortPop )( &ctx, &oldpop ) ;
+    } else {
+     	 PGASortPop(ctx, oldpop);
+      	 n = popsize - numreplace;
+     	 for ( i=0; i < n; i++ ) {
+        	j = PGAGetSortedPopIndex( ctx, i );
+        	PGACopyIndividual ( ctx, j, oldpop, i, newpop );
+      	}
+    }
+
+
+/*********************************************/
+/*
+    n = popsize - numreplace;
+    for ( i=0; i < n; i++ ) {
+        j = PGAGetSortedPopIndex( ctx, i );
+        PGACopyIndividual ( ctx, j, oldpop, i, newpop );
+    }
+*/
+    pc = PGAGetCrossoverProb(ctx);
+    /*** reproduce to create the rest of the new population ***/
+    while ( n < popsize) {
+        m1 = PGASelectNextIndex( ctx );
+        m2 = PGASelectNextIndex( ctx );
+        if ( PGARandomFlip(ctx, pc) ) {
+             PGACrossover ( ctx, m1, m2, oldpop, PGA_TEMP1,
+                            PGA_TEMP2, newpop);
+
+              /*** mutate and copy first string to new population ***/
+              PGAMutate ( ctx, PGA_TEMP1, newpop);
+              while (PGADuplicate( ctx, PGA_TEMP1, newpop, newpop, n))
+                   PGAChange ( ctx, PGA_TEMP1, newpop );
+              PGACopyIndividual ( ctx, PGA_TEMP1, newpop, n, newpop);
+              n++;
+
+              if ( n < popsize ) {
+              /*** mutate and copy second string to new population ***/
+              PGAMutate ( ctx, PGA_TEMP2, newpop);
+              while ( PGADuplicate( ctx, PGA_TEMP2, newpop, newpop, n))
+                   PGAChange ( ctx, PGA_TEMP2, newpop );
+              PGACopyIndividual ( ctx, PGA_TEMP2, newpop, n, newpop);
+              n++;
+              }
+         }
+         else {
+            PGACopyIndividual ( ctx, m1, oldpop, n, newpop );
+            n++;
+            if ( n < ctx->ga.PopSize ) {
+                PGACopyIndividual ( ctx, m2, oldpop, n, newpop );
+                n++;
+            }
+       }
+    }
+
+    PGADebugExited("PGARunMutationAndCrossover");
+}
+
+
+/*U****************************************************************************
+  PGARunMutationOrCrossover - Performs crossover or mutation (but not both)
+  from one populationto create the next.  Assumes PGASelect has been called.
+
+  Category: Generation
+
+  Inputs:
+    ctx - context variable
+    oldpop - symbolic constant of old population
+    newpop - symbolic constant of new population
+
+  Outputs:
+    newpop is modified by side-effect.
+
+  Example:
+    PGAContext *ctx,
+    :
+    PGARunMutationOrCrossover(ctx, PGA_OLDPOP, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGARunMutationOrCrossover ( PGAContext *ctx, int oldpop, int newpop )
+{
+    int i, j, n, m1, m2;
+    int popsize, numreplace;
+    double pc;
+
+    PGADebugEntered("PGARunMutationOrCrossover");
+
+    popsize = PGAGetPopSize(ctx);
+    numreplace = PGAGetNumReplaceValue(ctx);
+    /*** first, copy n best strings (sorted by fitness) to new pop ***/
+    /* comment out by Lu Yang: PGASortPop( ctx, oldpop ); */
+/*********************************************/
+/* new added by Lu Yang */
+    if ( ctx->cops.SortPop ) {
+       (*ctx->cops.SortPop)(ctx, oldpop);
+    } else if ( ctx->fops.SortPop ) {
+        ( *ctx->fops.SortPop )( &ctx, &oldpop ) ;
+    } else {
+      PGASortPop(ctx, oldpop);
+	 n = popsize - numreplace;
+    	for ( i=0; i < n; i++ ) {
+        	j = PGAGetSortedPopIndex( ctx, i );
+        	PGACopyIndividual ( ctx, j, oldpop, i, newpop );
+    	}
+
+    }
+/*********************************************/
+    pc = PGAGetCrossoverProb(ctx);
+    /*** reproduce to create the rest of the new population ***/
+    while ( n < popsize ) {
+        m1 = PGASelectNextIndex( ctx );
+        m2 = PGASelectNextIndex( ctx );
+        if ( PGARandomFlip(ctx, pc) ) {
+            PGACrossover ( ctx, m1, m2, oldpop, PGA_TEMP1,
+                                        PGA_TEMP2, newpop);
+
+            /*** copy first string to new population ***/
+            while (PGADuplicate(ctx, PGA_TEMP1, newpop,  newpop, n))
+                PGAChange ( ctx, PGA_TEMP1, newpop );
+            PGACopyIndividual ( ctx, PGA_TEMP1, newpop, n, newpop);
+            n++;
+
+            if ( n < popsize )
+            {
+                 /*** copy second string to new population ***/
+                 while (PGADuplicate(ctx, PGA_TEMP2, newpop,  newpop, n))
+                      PGAChange ( ctx, PGA_TEMP2, newpop );
+                 PGACopyIndividual ( ctx, PGA_TEMP2, newpop, n, newpop);
+                 n++;
+            }
+        }
+        else
+        {
+             PGACopyIndividual(ctx, m1, oldpop, PGA_TEMP1, newpop);
+             PGAMutate ( ctx, PGA_TEMP1, newpop );
+             while (PGADuplicate(ctx, PGA_TEMP1, newpop, newpop, n ))
+                  PGAChange ( ctx, PGA_TEMP1, newpop );
+             PGACopyIndividual ( ctx, PGA_TEMP1, newpop, n, newpop);
+             n++;
+
+             if ( n < popsize ) {
+                  PGACopyIndividual(ctx, m2, oldpop, PGA_TEMP2, newpop);
+                  PGAMutate ( ctx, PGA_TEMP2, newpop );
+                  while (PGADuplicate(ctx, PGA_TEMP2, newpop, newpop, n ))
+                       PGAChange ( ctx, PGA_TEMP2, newpop );
+                  PGACopyIndividual ( ctx, PGA_TEMP2, newpop, n, newpop);
+                  n++;
+             }
+        }
+    }
+
+    PGADebugExited("PGARunMutationOrCrossover");
+}
+
+
+/*U****************************************************************************
+  PGAUpdateGeneration - updates internal data structures for the next
+  genetic algorithm iteration, and checks if the termination conditions, both
+  user and PGAPack, have been met.  This routine must be called by both
+  master and slave processes at the end of each GA generation.
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+     comm - an MPI communicator
+
+  Outputs:
+     PGA_TRUE if the genetic algorithm has terminated, otherwise PGA_FALSE.
+
+  Example:
+    PGAContext *ctx;
+    :
+    PGAUpdateGeneration(ctx, MPI_COMM_WORLD);
+
+****************************************************************************U*/
+void PGAUpdateGeneration(PGAContext *ctx, MPI_Comm comm)
+{
+    PGAIndividual *temp;
+    int i, rank;
+
+    PGADebugEntered("PGAUpdateGeneration");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAUpdateGeneration",
+                  "ga.iter = ", PGA_INT, (void *) &(ctx->ga.iter) );
+
+    rank = PGAGetRank(ctx, comm);
+
+    ctx->ga.iter++;
+
+    if (rank == 0) {
+
+      ctx->ga.iter--;
+      /********  EHW Modification ********************/
+      if(ctx->cops.SetTemp != NULL)
+	(*ctx->cops.SetTemp)(ctx);
+      if(ctx->fops.SetTemp != NULL)
+	(*ctx->fops.SetTemp)(&ctx);
+      
+      /***********************************************/
+      ctx->ga.iter++;
+
+
+	if (ctx->rep.PrintOptions & PGA_REPORT_AVERAGE)
+	    PGAUpdateAverage(ctx, PGA_NEWPOP);
+
+	if (ctx->rep.PrintOptions & PGA_REPORT_ONLINE)
+	    PGAUpdateOnline(ctx, PGA_NEWPOP);
+
+	if (ctx->rep.PrintOptions & PGA_REPORT_OFFLINE)
+	    PGAUpdateOffline(ctx, PGA_NEWPOP);
+
+#define GEKCO_RESTART
+#ifdef GEKCO_RESTART
+/* get the number of identical evaluations no matter what
+the stopping criterion is.  That number will be used for the restart. */
+	    i = PGAGetBestIndex(ctx, PGA_NEWPOP);
+	    if (ctx->rep.Best == PGAGetEvaluation(ctx, i, PGA_NEWPOP))
+		ctx->ga.ItersOfSame++;
+	    else {
+		ctx->rep.Best = PGAGetEvaluation(ctx, i, PGA_NEWPOP);
+		ctx->ga.ItersOfSame = 1;
+	    }
+#else
+	if ((ctx->ga.StoppingRule & PGA_STOP_NOCHANGE) || ctx->ga.restart) {
+	    i = PGAGetBestIndex(ctx, PGA_NEWPOP);
+	    if (ctx->rep.Best == PGAGetEvaluation(ctx, i, PGA_NEWPOP))
+		ctx->ga.ItersOfSame++;
+	    else {
+		ctx->rep.Best = PGAGetEvaluation(ctx, i, PGA_NEWPOP);
+		ctx->ga.ItersOfSame = 1;
+	    }
+	}
+#endif
+
+	if (ctx->ga.StoppingRule & PGA_STOP_TOOSIMILAR)
+	    ctx->ga.PercentSame = PGAComputeSimilarity(ctx, ctx->ga.newpop);
+
+	/*  Clear this twice in case the user EOG calls PGASelect.  */
+	ctx->ga.SelectIndex = 0;
+
+	if (ctx->fops.EndOfGen)
+	    (*ctx->fops.EndOfGen)(&ctx);
+	if (ctx->cops.EndOfGen)
+	    (*ctx->cops.EndOfGen)(ctx);
+
+	ctx->ga.SelectIndex = 0;
+	temp           = ctx->ga.oldpop;
+	ctx->ga.oldpop = ctx->ga.newpop;
+	ctx->ga.newpop = temp;
+
+    }
+
+    PGADebugExited("PGAUpdateGeneration");
+}
+
+
+/*U***************************************************************************
+   PGAGetDataType - Returns the data type used by the given context.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the data type.
+
+   Example:
+      PGAContext *ctx;
+      int datatype;
+      :
+      datatype = PGAGetDataType(ctx);
+      switch (datatype) {
+      case PGA_DATATYPE_BINARY:
+          printf("Data Type = PGA_DATATYPE_BINARY\n");
+          break;
+      case PGA_DATATYPE_CHARACTER:
+          printf("Data Type = PGA_DATATYPE_CHARACTER\n");
+          break;
+      case PGA_DATATYPE_INTEGER:
+          printf("Data Type = PGA_DATATYPE_INTEGER\n");
+          break;
+      case PGA_DATATYPE_REAL:
+          printf("Data Type = PGA_DATATYPE_REAL\n");
+          break;
+      case PGA_DATATYPE_USER:
+          printf("Data Type = PGA_DATATYPE_USER\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetDataType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetDataType");
+
+    PGADebugExited("PGAGetDataType");
+
+    return(ctx->ga.datatype);
+}
+
+/*U***************************************************************************
+   PGAGetOptDirFlag - Returns a symbolic constant that represents the
+   direction of optimization
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the  direction of optimization
+
+   Example:
+      PGAContext *ctx;
+      int optdir;
+      :
+      optdir = PGAGetOptDirFlag(ctx);
+      switch (optdir) {
+      case PGA_MAXIMIZE:
+          printf("Optimization direction = PGA_MAXIMIZE\n");
+          break;
+      case PGA_MINIMIZE:
+          printf("Optimization direction = PGA_MINIMIZE\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetOptDirFlag (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetOptDirFlag");
+
+    PGADebugExited("PGAGetOptDirFlag");
+
+    return(ctx->ga.optdir);
+}
+
+/*U***************************************************************************
+   PGAGetStringLength - Returns the string length
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The string length
+
+   Example:
+      PGAContext *ctx;
+      int stringlen;
+      :
+      stringlen = PGAGetStringLength(ctx);
+
+***************************************************************************U*/
+int PGAGetStringLength (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetStringLength");
+
+    PGADebugExited("PGAGetStringLength");
+
+    return(ctx->ga.StringLen);
+}
+
+/*I***************************************************************************
+   PGAGetVariableStringLength - Returns the length of a variable length
+   string.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+      p   - index into the population
+      pop - symbolic constant for the population
+
+   Outputs:
+      The string length
+
+   Example:
+      PGAContext *ctx;
+      int stringlen;
+      :
+      stringlen = PGAGetVariableStringLength(ctx, 0, PGA_NEWPOP);
+
+***************************************************************************I*/
+int PGAGetVariableStringLength (PGAContext *ctx, int p, int pop)
+{
+    PGADebugEntered("PGAGetVariableStringLength");
+
+    PGADebugExited("PGAGetVariableStringLength");
+
+    PGAError(ctx, "PGAGetVariableStringLength:  Variable length strings not "
+	     "currently supported.", PGA_FATAL, PGA_VOID, NULL);
+#if 0
+    ind = PGAGetIndividual(ctx, p, pop);
+    return(ind->StringLength);
+#endif
+    /*  Make the compilers be quiet.  */
+    return(0);
+}
+
+/*U***************************************************************************
+  PGAGetGAIterValue - returns the number of the current genetic
+  algorithm generation
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The genetic algorithm generation number
+
+   Example:
+      PGAContext *ctx;
+      int g;
+      :
+      g = PGAGetGAIterValue(ctx);
+
+***************************************************************************U*/
+int PGAGetGAIterValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetGAIterValue");
+    PGAFailIfNotSetUp("PGAGetGAIterValue");
+
+    PGADebugExited("PGAGetGAIterValue");
+
+    return(ctx->ga.iter);
+}
+
+/*U****************************************************************************
+  PGASetMutationOrCrossoverFlag - A boolean flag to indicate if recombination
+  uses exactly one of crossover or mutation on selected strings.
+
+   Category: Generation
+
+   Inputs:
+      ctx  - context variable
+      flag - PGA_TRUE (default) or PGA_FALSE
+
+   Outputs:
+      None
+
+   Example:
+      Set the genetic algorithm to use mutation only when crossover is
+      not used.
+
+      PGAContext *ctx;
+      :
+      PGASetMutationOrCrossoverFlag(ctx,PGA_FALSE);
+
+****************************************************************************U*/
+void PGASetMutationOrCrossoverFlag( PGAContext *ctx, int flag)
+{
+    PGADebugEntered("PGASetMutationOrCrossoverFlag");
+
+     switch (flag)
+     {
+     case PGA_TRUE:
+     case PGA_FALSE:
+          ctx->ga.MutateOnlyNoCross = flag;
+          break;
+     default:
+          PGAError (ctx, "PGASetMutationOrCrossoverFlag: Invalid value of "
+                    "flag:", PGA_FATAL, PGA_INT, (void *) &flag);
+          break;
+     }
+
+    PGADebugExited("PGASetMutationOrCrossoverFlag");
+}
+
+/*U****************************************************************************
+  PGASetMutationAndCrossoverFlag - A boolean flag to indicate if
+  recombination uses both crossover and mutation on selected strings
+
+   Category: Generation
+
+   Inputs:
+      ctx  - context variable
+      flag - PGA_TRUE (default) or PGA_FALSE
+
+   Outputs:
+      None
+
+   Example:
+      Set the genetic algorithm to use both crossover and mutation when
+      reproducing strings.
+
+      PGAContext *ctx;
+      :
+      PGASetMutationAndCrossoverFlag(ctx,PGA_FALSE);
+
+****************************************************************************U*/
+void PGASetMutationAndCrossoverFlag( PGAContext *ctx, int flag)
+{
+    PGADebugEntered("PGASetMutationAndCrossoverFlag");
+
+     switch (flag)
+     {
+     case PGA_TRUE:
+     case PGA_FALSE:
+          ctx->ga.MutateOnlyNoCross = !flag;
+          break;
+     default:
+          PGAError (ctx, "PGASetMutationAndCrossoverFlag: Invalid value of "
+                    "flag:", PGA_FATAL, PGA_INT, (void *) &flag);
+          break;
+     }
+
+    PGADebugExited("PGASetMutationAndCrossoverFlag");
+}
+/*U***************************************************************************
+   PGAGetMutationOrCrossoverFlag - Returns true if mutation only occurs when
+   crossover does not.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns PGA_TRUE if mutation only occurs when crossover does not,
+      otherwise, returns PGA_FALSE.
+
+   Example:
+      PGAContext *ctx;
+      int mutatetype;
+      :
+      mutatetype = PGAGetMutationOrCrossoverFlag(ctx);
+      switch (mutatetype) {
+      case PGA_TRUE:
+          printf("Only mutating strings not undergoing crossover\n");
+          break;
+      case PGA_FALSE:
+          printf("Mutating strings only after crossover\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetMutationOrCrossoverFlag (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationOrCrossoverFlag");
+    PGAFailIfNotSetUp("PGAGetMutationOrCrossoverFlag");
+
+    PGADebugExited("PGAGetMutationOrCrossoverFlag");
+
+    return(ctx->ga.MutateOnlyNoCross);
+}
+
+/*U***************************************************************************
+   PGAGetMutationAndCrossoverFlag - Returns true if mutation occurs only
+   when crossover does.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns PGA_TRUE if mutation is applied to crossed-over strings.
+      Otherwise, returns PGA_FALSE
+
+   Example:
+      PGAContext *ctx;
+      int mutatetype;
+      :
+      mutatetype = PGAGetMutationAndCrossoverFlag(ctx);
+      switch (mutatetype) {
+      case PGA_TRUE:
+          printf("Mutating strings only after crossover\n");
+          break;
+      case PGA_FALSE:
+          printf("Only mutating strings not undergoing crossover\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetMutationAndCrossoverFlag (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationAndCrossoverFlag");
+    PGAFailIfNotSetUp("PGAGetMutationAndCrossoverFlag");
+
+    PGADebugExited("PGAGetMutationAndCrossoverFlag");
+
+    return(!ctx->ga.MutateOnlyNoCross);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/pop.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/pop.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/pop.c	(revision 6168)
@@ -0,0 +1,438 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: pop.c: This file contains systme routines that act on entire
+*                  populations.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGASortPop - Creates an (internal) array of indices according to one of
+   three criteria.  If PGA_POPREPL_BEST is used (the default) the array is
+   sorted from most fit to least fit.  If PGA_POPREPL_RANDOM_REP is
+   used the indices in the array are selected randomly with replacement.
+   If PGA_POPREPL_RANDOM_NOREP is used the indices in the array are selected
+   randomly without replacement.  The function PGASetPopReplaceType() is used
+   to specify which strategy is used.  The indices of the sorted population
+   members may then be accessed from the internal array via
+   PGAGetSortedPopIndex().  This routine is typically used during population
+   replacement.
+
+   Category: Generation
+
+   Inputs:
+       ctx      - context variable
+       popindex - symbolic constant of the population from which to create
+                  the srted array.
+
+   Output:
+      An inteneral array of indices sorted according to one of three
+      criteria is created.
+
+   Example:
+      Copy the five best strings from the old population into the new
+      population.  The rest of the new population will be created by
+      recombination, and is not shown.
+
+      PGAContext *ctx;
+      int i,j;
+      :
+      PGASetPopReplaceType(ctx,PGA_POPREPL_BEST)
+      :
+      PGASortPop(ctx, PGA_OLDPOP);
+      for ( i=0; i < 5; i++) {
+          j = PGAGetSortedPopIndex(ctx, i);
+      PGACopyIndividual (ctx, j, PGA_OLDPOP, i, PGA_NEWPOP);
+      :
+
+****************************************************************************U*/
+void PGASortPop ( PGAContext *ctx, int pop )
+{
+    int i,j;
+    PGADebugEntered("PGASortPop");
+    switch (ctx->ga.PopReplace) {
+    case PGA_POPREPL_BEST:
+            switch ( pop ) {
+            case PGA_OLDPOP:
+                for (i = 0 ; i < ctx->ga.PopSize ; i++ ) {
+                    ctx->ga.sorted[i] = i;
+                    ctx->scratch.dblscratch[i] = ctx->ga.oldpop[i].fitness;
+                };
+                break;
+            case PGA_NEWPOP:
+                for (i = 0 ; i < ctx->ga.PopSize ; i++ ) {
+                    ctx->ga.sorted[i] = i;
+                    ctx->scratch.dblscratch[i] = ctx->ga.newpop[i].fitness;
+                };
+                break;
+            default:
+                PGAError( ctx,
+                         "PGASort: Invalid value of pop:",
+                         PGA_FATAL,
+                         PGA_INT,
+                         (void *) &pop );
+                break;
+            };
+            PGADblHeapSort ( ctx, ctx->scratch.dblscratch, ctx->ga.sorted,
+                            ctx->ga.PopSize );
+            break;
+    case PGA_POPREPL_RANDOM_REP:
+        if ((pop != PGA_OLDPOP) && (pop != PGA_NEWPOP))
+            PGAError( ctx,
+                     "PGASort: Invalid value of pop:",
+                      PGA_FATAL,
+                      PGA_INT,
+                      (void *) &pop );
+        for (i = 0; i < ctx->ga.PopSize; i++) {
+            ctx->scratch.intscratch[i] = i;
+        };
+        for (i = 0; i < ctx->ga.PopSize; i++) {
+            j = PGARandomInterval ( ctx, 0, ctx->ga.PopSize-1 );
+            ctx->ga.sorted[i] = ctx->scratch.intscratch[j];
+        };
+        break;
+    case PGA_POPREPL_RANDOM_NOREP:
+        if ((pop != PGA_OLDPOP) && (pop != PGA_NEWPOP))
+            PGAError( ctx,
+                     "PGASort: Invalid value of pop:",
+                      PGA_FATAL,
+                      PGA_INT,
+                      (void *) &pop );
+        for (i = 0; i < ctx->ga.PopSize; i++) {
+            ctx->scratch.intscratch[i] = i;
+        };
+        for (i = 0; i < ctx->ga.PopSize; i++) {
+            j = PGARandomInterval ( ctx, 0, ctx->ga.PopSize-i-1 );
+            ctx->ga.sorted[i] = ctx->scratch.intscratch[j];
+            ctx->scratch.intscratch[j] =
+                ctx->scratch.intscratch[ctx->ga.PopSize-i-1];
+        };
+        break;
+    }
+    PGADebugExited("PGASortPop");
+}
+
+
+/*U***************************************************************************
+   PGAGetPopSize - Returns the population size
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The population size
+
+   Example:
+      PGAContext *ctx;
+      int popsize;
+      :
+      popsize = PGAGetPopSize(ctx);
+
+***************************************************************************U*/
+int PGAGetPopSize (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetPopSize");
+    PGAFailIfNotSetUp("PGAGetPopSize");
+
+    PGADebugExited("PGAGetPopSize");
+
+    return(ctx->ga.PopSize);
+}
+
+/*U***************************************************************************
+   PGAGetNumReplaceValue - Returns the maximum number of strings to replace
+   each generation.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The maximum number number of strings to replace each generation
+
+   Example:
+      PGAContext *ctx;
+      int numreplace;
+      :
+      numreplace = PGAGetNumReplaceValue(ctx);
+
+***************************************************************************U*/
+int PGAGetNumReplaceValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetNumReplaceValue");
+    PGAFailIfNotSetUp("PGAGetNumReplaceValue");
+
+    PGADebugExited("PGAGetNumReplaceValue");
+
+    return(ctx->ga.NumReplace);
+}
+
+/*U***************************************************************************
+   PGAGetPopReplaceType - returns the symbolic constant used to determine
+   which strings to copy from the old population to the new population.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The symbolic constant of the replacement strategy.
+
+   Example:
+      PGAContext *ctx;
+      int popreplace;
+      :
+      popreplace = PGAGetPopReplaceType(ctx);
+      switch (popreplace) {
+      case PGA_POPREPL_BEST:
+          printf("Replacement Strategy = PGA_POPREPL_BEST\n");
+          break;
+      case PGA_POPREPL_RANDOM_REP:
+          printf("Replacement Strategy = PGA_POPREPL_RANDOM_REP\n");
+          break;
+      case PGA_POPREPL_RANDOM_NOREP:
+          printf("Replacement Strategy = PGA_POPREPL_RANDOM_NOREP\n");
+          break;
+      }
+
+****************************************************************************U*/
+int PGAGetPopReplaceType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetPopReplaceType");
+    PGAFailIfNotSetUp("PGAGetPopRelaceType");
+
+    PGADebugExited("PGAGetPopReplaceType");
+
+    return(ctx->ga.PopReplace);
+}
+
+
+/*U****************************************************************************
+   PGAGetSortedPopIndex - returns a population string index from the array
+   created by PGASortPop().
+
+   Category: Generation
+
+   Inputs:
+       ctx      - context variable
+       n        - specified which index element is to be returned.
+
+   Output:
+       A population string index from the array created by PGASortPop
+
+   Example:
+      Copy the five best strings from the old population into the new
+      population.  The rest of the new population will be created by
+      recombination, and is not shown.
+
+      PGAContext *ctx;
+      int i,j;
+      :
+      PGASetPopReplaceType(ctx,PGA_POPREPL_BEST)
+      PGASortPop(ctx, PGA_OLDPOP);
+      for ( i=0; i < 5; i++) {
+          j = PGAGetSortedPopIndex(ctx, i);
+      PGACopyIndividual (ctx, j, PGA_OLDPOP, i, PGA_NEWPOP);
+      :
+
+****************************************************************************U*/
+int PGAGetSortedPopIndex ( PGAContext *ctx, int n )
+{
+     int temp=0;
+
+    PGADebugEntered("PGAGetSortedPopIndex");
+     if (n >= 0 && n < ctx->ga.PopSize )
+          temp = ctx->ga.sorted[n];
+     else
+          PGAError( ctx, "PGAGetSorted: Invalid value of n:",
+                   PGA_FATAL, PGA_INT, (void *) &n );
+
+    PGADebugExited("PGAGetSortedPopIndex");
+
+     return (temp);
+}
+
+/*U****************************************************************************
+   PGASetPopSize - Specifies the size of the genetic algorithm population.
+   The default population size is 100.
+
+   Category: Generation
+
+   Inputs:
+      ctx     - context variable
+      popsize - the genetic algorithm population size to use
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetPopSize(ctx, 200);
+
+****************************************************************************U*/
+void PGASetPopSize (PGAContext *ctx, int popsize)
+{
+
+    PGADebugEntered("PGASetPopSize");
+    PGAFailIfSetUp("PGASetPopSize");
+
+    if (popsize < 1 || popsize % 2)
+        PGAError( ctx, "PGASetPopSize: Invalid value of popsize:",
+                  PGA_FATAL, PGA_INT, (void *) &popsize );
+    else
+        ctx->ga.PopSize = popsize;
+
+    PGADebugExited("PGASetPopSize");
+}
+
+
+
+/*U****************************************************************************
+   PGASetNumReplaceValue - specifies the number of new strings to create each
+   generation.  The default is ten percent of the population size
+
+   Category: Generation
+
+   Inputs:
+      ctx         - context variable
+      pop_replace - the genetic algorithm population size to use
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetNumReplaceValue(ctx, 35);
+
+****************************************************************************U*/
+void PGASetNumReplaceValue( PGAContext *ctx, int pop_replace)
+{
+    PGADebugEntered("PGASetNumReplaceValue");
+
+    if (pop_replace < 0)
+      PGAError( ctx,
+               "PGASetNumReplaceValue: Invalid value of pop_replace:",
+                PGA_FATAL, PGA_INT, (void *) &pop_replace );
+    else
+        ctx->ga.NumReplace = pop_replace;
+
+    PGADebugExited("PGASetNumReplaceValue");
+}
+
+
+
+
+/*U****************************************************************************
+   PGASetPopReplaceType - Choose method of sorting strings to copy from old
+   population to new population.  Valid choices are PGA_POPREPL_BEST,
+   PGA_POPREPL_RANDOM_NOREP, or PGA_POPREPL_RANDOM_REP for copying the best
+   strings, or  random string, with or without replacement, respectively,
+   from the old population into the new population. The default is
+   PGA_POPREPL_BEST.
+
+   Category: Generation
+
+   Inputs:
+      ctx         - context variable
+      pop_replace - symbolic constant to specify the population replacement
+                    strategy
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetPopReplaceType(ctx, PGA_POPREPL_RANDOM_NOREP);
+
+****************************************************************************U*/
+void PGASetPopReplaceType( PGAContext *ctx, int pop_replace)
+{
+    PGADebugEntered("PGASetPopReplaceType");
+
+    switch (pop_replace) {
+    case PGA_POPREPL_BEST:
+    case PGA_POPREPL_RANDOM_NOREP:
+    case PGA_POPREPL_RANDOM_REP:
+        ctx->ga.PopReplace = pop_replace;
+        break;
+    default:
+        PGAError ( ctx,
+                  "PGASetPopReplaceType: Invalid value of pop_replace:",
+                   PGA_FATAL, PGA_INT, (void *) &pop_replace);
+        break;
+    }
+
+    PGADebugExited("PGASetPopReplaceType");
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/random.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/random.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/random.c	(revision 6168)
@@ -0,0 +1,404 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: random.c: This file contains routines to generate randomness.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGARandomFlip - flip a biased coin and return PGA_TRUE if the coin is
+   a "winner."  Otherwise, return PGA_FALSE.
+
+   Category: Utility
+
+   Inputs:
+      ctx - context variable
+      p   - biased probability (.5 is a fair coin)
+
+   Outputs:
+      PGA_TRUE or PGA_FALSE
+
+   Example:
+      To return PGA_TRUE approximately seventy percent of the time, use
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGARandomFlip(ctx, 0.7)
+
+****************************************************************************U*/
+int PGARandomFlip ( PGAContext *ctx, double p )
+{
+    PGADebugEntered("PGARandomFlip");
+
+    PGADebugExited("PGARandomFlip");
+
+    return( (PGARandom01(ctx, 0) < p) ? PGA_TRUE : PGA_FALSE);
+}
+
+
+/*U****************************************************************************
+   PGARandomInterval - returns a uniform random number on the specified
+   interval
+
+   Category: Utility
+
+   Inputs:
+      ctx - context variable
+      start - starting (integer) value of the interval
+      end   - ending   (integer) value of the interval
+
+   Outputs:
+      A uniformly distributed random number in the interval [start, end].
+
+   Example:
+      Generate a value uniformly random from the interval [0,99]
+
+      PGAContext *ctx;
+      :
+      PGARandomInterval(ctx, 0, 99);
+
+****************************************************************************U*/
+int PGARandomInterval( PGAContext *ctx, int start, int end)
+{
+    PGADebugEntered("PGARandomInterval");
+    
+    PGADebugExited("PGARandomInterval");
+
+    return( (int)floor(PGARandom01(ctx, 0) * (double)(end-start+1) ) + start );
+    
+/*
+   The original call...
+
+   return(ceil( (double)(end-start+1) * PGARandom01(ctx, 0) )+start-1);
+*/
+}
+
+
+/*****************************************************************************
+*  This is a C language implementation of the universal random number        *
+*  generator proposed by G. Marsaglia and A. Zaman and translated from       *
+*  F. James' version.                                                        *
+*                                                                            *
+*  F. James                                                                  *
+*  A review of pseudorandom number generators                                *
+*  Computer Physics Communication                                            *
+*  60 (1990) 329-344                                                         *
+*                                                                            *
+*  G. Marsaglia, A. Zaman, W. Tseng                                          *
+*  Stat Prob. Letter                                                         *
+*  9 (1990) 35.                                                              *
+*                                                                            *
+*  G. Marsaglia, A. Zaman                                                    *
+*  FSU-SCRI-87-50                                                            *
+*                                                                            *
+*  This algorithm is a combination of a lagged Fibonacci and arithmetic      *
+*  sequence (F. James) generator with period of 2^144.  It provides 32-bit   *
+*  floating point numbers in the range from zero to one.  It is claimed to   *
+*  be portable and provides bit-identical results on all machines with at    *
+*  least 24-bit mantissas.                                                   *
+*                                                                            *
+*  PGARandom01 should be initialized with a 32-bit integer seed such that    *
+*  0 <= seed <= 900,000,000.  Each of these 900,000,000 values gives rise    *
+*  to an independent sequence of ~ 10^30.                                    *
+*                                                                            *
+*  warning on use of static storage class on thread shared memory machines   *
+*****************************************************************************/
+/*U****************************************************************************
+   PGARandom01 - generates a uniform random number on the interval [0,1)
+   If the second argument is 0 it returns the next random number in the
+   sequence.  Otherwise, the second argument is used as a new seed for the
+   population
+
+   Category: Utility
+
+   Inputs:
+      ctx     - context variable
+      newseed - either 0 to get the next random number, or nonzero
+                to reseed
+   Outputs:
+      A random number on the interval [0,1)
+
+   Example:
+      To get the next random number use
+
+      PGAContext *ctx;
+      double r;
+      :
+      r = PGARandom01(ctx,0);
+
+****************************************************************************U*/
+double PGARandom01( PGAContext *ctx, int newseed )
+{
+
+    /* initialization variables */
+    int ij, kl, i, j, k, l, m, ii, jj;
+    float s, t;
+
+    /* random number variables */
+    static int seed=1;      /* default seed if none specified */
+    static int i96, j96;
+    static float u[97], uni, c, cd, cm;
+
+
+    PGADebugEntered("PGARandom01");
+
+    /* initialization */
+/*     printf("i96 = %d\tj96 = %d\n", i96, j96); */
+
+    if ( newseed != 0 ) {
+
+        seed = newseed % 900000000;
+        ij   = seed / 30082;
+        kl   = seed - 30082 * ij;
+        i    = ( (ij/177) % 177 ) + 2;
+        j    = (  ij      % 177 ) + 2;
+        k    = ( (kl/169) % 178 ) + 1;
+        l    = (  kl      % 169 );
+
+        for ( ii=0; ii<97; ii++ ) {
+
+            s = 0.0;
+            t = 0.5;
+
+            for ( jj=0; jj<24; jj++ ) {
+
+                m = ( ((i*j) % 179) * k ) % 179;
+                i = j;
+                j = k;
+                k = m;
+                l = ( (53*l) + 1 ) % 169;
+                if ( ( (l*m) % 64 ) >= 32 )
+                    s += t;
+                t *= .5;
+            }
+
+            u[ii] = s;
+        }
+
+        c   = 362436.  /16777216.;
+        cd  = 7654321. /16777216.;
+        cm  = 16777213./16777216.;
+        i96 = 96;
+        j96 = 32;
+    }
+
+    /* random number generation */
+    uni = u[i96] - u[j96];
+    if ( uni < 0. ) uni += 1.0;
+    u[i96] = uni;
+    i96--;
+    if ( i96 < 0  ) i96 = 96;
+    j96--;
+    if ( j96 < 0  ) j96 = 96;
+    c   -= cd;
+    if ( c   < 0. ) c += cm;
+    uni -= c;
+    if ( uni < 0. ) uni += 1.0;
+
+    PGADebugExited("PGARandom01");
+    return( (double) uni);
+}
+
+/*U****************************************************************************
+   PGARandomUniform - returns a uniform random number on the interval
+   [start,end]
+
+   Category: Utility
+
+   Inputs:
+      ctx - context variable
+      start - starting (double) value of the interval
+      end   - ending   (double) value of the interval
+
+   Outputs:
+      A random number on the interval [start,end]
+
+   Example:
+      Generate a uniform random number on the interval [-0.5, 1.5]
+
+      PGAContext *ctx;
+      double r;
+      :
+      r = PGARandomUniform(ctx, -0.5, 1.5);
+
+****************************************************************************U*/
+double PGARandomUniform( PGAContext *ctx, double start, double end)
+{
+    double val, r;
+
+    PGADebugEntered("PGARandomUniform");
+
+    r = PGARandom01(ctx, 0);
+    val = (end-start) * r + start;
+
+    PGADebugExited("PGARandomUniform");
+
+    return(val);
+}
+
+
+/*U****************************************************************************
+   PGARandomGaussian - returns an approximation to a Gaussian random number
+
+   Category: Utility
+
+   Inputs:
+       mean  - the mean of the Gaussian distribution
+       sigma - the standard deviation of the Gaussian distribution
+
+   Outputs:
+      A random number selected from a Gaussian distribution with given
+      mean and standard deviation
+
+   Example:
+      To generate a Gaussian random number with mean 0.0 and standard
+      deviation 1.0 use
+
+      PGAContext *ctx;
+      :
+      r = PGARandomGaussian(ctx, 0.0, 1.0);
+
+****************************************************************************U*/
+double PGARandomGaussian( PGAContext *ctx, double mean, double sigma)
+{
+    int i;
+    double sum = 0.;
+
+    PGADebugEntered("PGARandomGaussian");
+
+    for (i=11;i>=0; i--)
+        sum += PGARandom01(ctx, 0);
+
+    PGADebugExited("PGARandomGaussian");
+
+    return ( (sum-6.0) * sigma + mean );
+}
+
+/*U***************************************************************************
+   PGAGetRandomSeed - returns the integer to seed random numbers with
+
+   Category: Utility
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The seed for the random number generator
+
+   Example:
+      PGAContext *ctx;
+      int seed;
+      :
+      seed = PGAGetRandomSeed(ctx);
+
+***************************************************************************U*/
+int PGAGetRandomSeed(PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRandomSeed");
+
+    PGADebugExited("PGAGetRandomSeed");
+
+    return(ctx->init.RandomSeed);
+}
+
+/*U****************************************************************************
+   PGASetRandomSeed - set a seed for the random number generator.  The
+   default is to use a random seed.  Specifying a seed exlicitly allows
+   for reproducibility of runs.
+
+   Category: Utility
+
+   Inputs:
+      ctx  - context variable
+      seed - seed  for the random number generator
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetRandomSeed(ctx,1);
+
+****************************************************************************U*/
+void PGASetRandomSeed(PGAContext *ctx, int seed)
+{
+#define MAX_PROCESSORS 2048
+
+    PGADebugEntered("PGASetRandomSeed");
+    PGAFailIfSetUp("PGASetRandomSeed");
+
+    if ((seed < 1) || (seed + MAX_PROCESSORS > 900000000))
+	PGAError ( ctx, "PGASetRandomSeed: Invalid value of seed:",
+		  PGA_FATAL, PGA_INT, (void *) &seed);
+    else
+	ctx->init.RandomSeed = seed;
+    
+    PGADebugExited("PGASetRandomSeed");
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/real.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/real.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/real.c	(revision 6168)
@@ -0,0 +1,944 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: real.c: This file contains the routines specific to the floating
+*                   point data structure
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include <pgapack.h>
+
+/*U****************************************************************************
+   PGASetRealAllele - sets the value of real-valued allele i in string p
+   in population pop
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+      val - real value to set the allele to
+
+   Outputs:
+      The specified allele in p is modified by side-effect.
+
+   Example:
+      Sets the value of the ith allele of string p in population PGA_NEWPOP
+      to 1.57
+
+      PGAContext *ctx;
+      int i, p;
+      :
+      PGASetRealAllele ( ctx, p, PGA_NEWPOP, i, 1.57)
+
+****************************************************************************U*/
+void PGASetRealAllele (PGAContext *ctx, int p, int pop, int i, double value)
+{
+    PGAIndividual *ind;
+    PGAReal      *chrom;
+
+    PGADebugEntered("PGASetRealAllele");
+    PGACheckDataType("PGASetRealAllele", PGA_DATATYPE_REAL);
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGAReal *)ind->chrom;
+    chrom[i] = value;
+
+    PGADebugExited("PGASetRealAllele");
+}
+
+/*U****************************************************************************
+   PGAGetRealAllele - returns the value of real-valued allele i in string p
+   in population pop
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+
+   Outputs:
+      The value of allele i
+
+   Example:
+      Returns the value of the ith real-valued allele of string p
+      in population PGA_NEWPOP
+
+      PGAContext *ctx;
+      int p, i, r;
+      r =  PGAGetRealAllele (ctx, p, PGA_NEWPOP, i)
+
+****************************************************************************U*/
+double PGAGetRealAllele (PGAContext *ctx, int p, int pop, int i)
+{
+    PGAIndividual *ind;
+    PGAReal      *chrom;
+
+    PGADebugEntered("PGAGetRealAllele");
+    PGACheckDataType("PGAGetRealAllele", PGA_DATATYPE_REAL);
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGAReal *)ind->chrom;
+
+    PGADebugExited("PGAGetRealAllele");
+
+    return( (double) chrom[i] );
+}
+
+/*U****************************************************************************
+  PGASetRealInitPercent - sets the upper and lower bounds for randomly
+  initializing real-valued genes.  For each gene these bounds define an
+  interval from which the initial allele value is selected uniformly randomly.
+  With this routine the user specifies a median value and a percent offset
+  for each allele.
+
+  Category: Initialization
+
+  Inputs:
+     ctx     - context variable
+     median  - an array containing the mean value of the interval
+     percent - an array containing the percent offset to add and subtract to
+               the median to define the interval
+
+  Outputs:
+
+  Example:
+     Set the initialization routines to select a value for each real-valued
+     gene i uniformly randomly from the interval [i-v,i+v], where $v = i/2$.
+     Assumes all strings are the same length.
+
+     PGAContext *ctx;
+     double *median, *percent;
+     int i, stringlen;
+     :
+     stringlen = PGAGetStringLength(ctx);
+     median  = (double *) malloc(stringlen*sizeof(double));
+     percent = (double *) malloc(stringlen*sizeof(double));
+     for(i=0;i<stringlen;i++) {
+        median[i]  = (double) i;
+        percent[i] = 0.5;
+     }
+     PGASetRealInitPercent(ctx, median, percent);
+
+****************************************************************************U*/
+void PGASetRealInitPercent ( PGAContext *ctx, double *median, double *percent)
+{
+     int i;
+     int stringlen;
+     double offset;
+
+    PGADebugEntered("PGASetRealInitPercent");
+    PGAFailIfSetUp("PGASetRealInitPercent");
+    PGACheckDataType("PGASetRealInitPercent", PGA_DATATYPE_REAL);
+
+    stringlen = PGAGetStringLength(ctx);
+    for (i=0; i<stringlen; i++) {
+    }
+    for (i=0; i<stringlen; i++) {
+         offset = fabs(median[i] * percent[i]);
+         ctx->init.RealMin[i] = median[i] - offset;
+         ctx->init.RealMax[i] = median[i] + offset;
+         
+    }
+    ctx->init.RealType = PGA_RINIT_PERCENT;
+
+    PGADebugExited("PGASetRealInitPercent");
+}
+
+/*U****************************************************************************
+  PGASetRealInitRange - sets the upper and lower bounds for randomly
+  initializing real-valued genes.  For each gene these bounds define an
+  interval from which the initial allele value is selected uniformly randomly.
+  The user specifies two arrays containing lower and bound for each gene to
+  define the interval.  This is the default strategy for initializing
+  real-valued strings.  The default interval is $[0,1.0]$ for each gene.
+
+  Category: Initialization
+
+  Inputs:
+     ctx - context variable
+     min - array containing the lower bound of the interval for each gene
+     mac - array containing the upper bound of the interval for each gene
+
+  Outputs:
+
+  Example:
+     Set the initialization routines to select a value for each real-valued
+     gene i uniformly randomly from the interval [-10.,i]
+     Assumes all strings are of the same length.
+
+     PGAContext *ctx;
+     double *low, *high;
+     int i, stringlen;
+     :
+     stringlen = PGAGetStringLength(ctx);
+     low  = (double *) malloc(stringlen*sizeof(double));
+     high = (double *) malloc(stringlen*sizeof(double));
+     for(i=0;i<stringlen;i++) {
+        low[i]  = -10.0;
+        high[i] = i;
+     }
+     PGASetRealInitRange(ctx, low, high);
+
+****************************************************************************U*/
+void PGASetRealInitRange (PGAContext *ctx, double *min, double *max)
+{
+     int i;
+    PGADebugEntered("PGASetRealInitRange");
+    PGAFailIfSetUp("PGASetRealInitRange");
+    PGACheckDataType("PGASetRealInitRange", PGA_DATATYPE_REAL);
+
+    for (i=ctx->ga.StringLen-1; i>=0; i--) {
+         if (max[i] < min[i])
+              PGAError(ctx, "PGASetRealInitRange: Lower bound exceeds upper "
+                       "bound for allele #", PGA_FATAL, PGA_INT, (void *) &i);
+         else
+         {
+              ctx->init.RealMin[i] = min[i];
+              ctx->init.RealMax[i] = max[i];
+         }
+    }
+    ctx->init.RealType = PGA_RINIT_RANGE;
+
+    PGADebugExited("PGASetRealInitRange");
+}
+
+
+/*U***************************************************************************
+  PGAGetMinRealInitValue - returns the minimum value used to randomly
+  initialize allele i in a real string
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+      i   - an allele position
+
+   Outputs:
+      The minimum value used to randomly initialize allele i
+
+   Example:
+      PGAContext *ctx;
+      int min;
+      :
+      min = PGAGetMinRealInitValue(ctx, 0);
+
+***************************************************************************U*/
+double PGAGetMinRealInitValue (PGAContext *ctx, int i)
+{
+    PGADebugEntered("PGAGetMinRealInitValue");
+    PGAFailIfNotSetUp("PGAGetMinRealInitValue");
+    PGACheckDataType("PGAGetMinRealInitValue", PGA_DATATYPE_REAL);
+
+    if (i < 0 || i >= ctx->ga.StringLen)
+         PGAError(ctx, "PGAGetMinRealInitValue: Index out of range:",
+                  PGA_FATAL, PGA_INT, (int *) &i);
+
+    PGADebugExited("PGAGetMinRealInitValue");
+
+    return(ctx->init.RealMin[i]);
+}
+
+/*U***************************************************************************
+  PGAGetMaxRealInitValue - returns the maximum value used to randomly
+  initialize allele i in a real string
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+      i   - an allele position
+
+   Outputs:
+      The maximum value used to randomly initialize allele i
+
+   Example:
+      PGAContext *ctx;
+      int max;
+      :
+      max = PGAGetMaxRealInitValue(ctx, 0);
+
+***************************************************************************U*/
+double PGAGetMaxRealInitValue (PGAContext *ctx, int i)
+{
+    PGADebugEntered("PGAGetMaxRealInitValue");
+    PGAFailIfNotSetUp("PGAGetMaxRealInitValue");
+    PGACheckDataType("PGAGetMaxRealInitValue", PGA_DATATYPE_REAL);
+
+    if (i < 0 || i >= ctx->ga.StringLen)
+         PGAError(ctx, "PGAGetMaxRealInitValue: Index out of range:",
+                  PGA_FATAL, PGA_INT, (int *) &i);
+
+    PGADebugExited("PGAGetMaxRealInitValue");
+
+    return(ctx->init.RealMax[i]);
+}
+
+
+/*U***************************************************************************
+  PGAGetRealInitType - returns the type of scheme used to randomly
+  initialize strings of data type PGA_DATATYPE_REAL.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the scheme used to initialize real strings
+
+   Example:
+      PGAContext *ctx;
+      int inittype;
+      :
+      inittype = PGAGetRealInitType(ctx);
+      switch (inittype) {
+      case PGA_RINIT_PERCENT:
+          printf("Data Type = PGA_RINIT_PERCENT\n");
+          break;
+      case PGA_RINIT_RANGE:
+          printf("Data Type = PGA_RINIT_RANGE\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetRealInitType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRealInitType");
+    PGAFailIfNotSetUp("PGAGetRealInitType");
+    PGACheckDataType("PGAGetRealInitType", PGA_DATATYPE_REAL);
+
+    PGADebugExited("PGAGetRealInitType");
+
+    return(ctx->init.RealType);
+}
+
+
+/*I****************************************************************************
+   PGARealCreateString - Allocate memory for a string of type PGAReal
+
+   Inputs:
+      ctx      - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      initflag - A true/false flag used in conjunction with ctx->ga.RandomInit
+                 to initialize the string either randomly or set to zero
+
+   Outputs:
+
+   Example:
+      Allocates memory and assigns the address of the allocated memory to
+      the real string field (ind->chrom) of the individual.  Also, clears
+      the string.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGARealCreateString( ctx, p, PGA_NEWPOP, PGA_FALSE );
+
+****************************************************************************I*/
+void PGARealCreateString (PGAContext *ctx, int p, int pop, int initflag)
+{
+    PGAIndividual *new = PGAGetIndividual(ctx, p, pop);
+    int i, fp;
+    PGAReal *c;
+    
+    PGADebugEntered("PGARealCreateString");
+    
+    new->chrom = (void *) malloc (ctx->ga.StringLen * sizeof(PGAReal));
+    if (new->chrom == NULL)
+	PGAError(ctx, "PGARealCreateString: No room to allocate new->chrom",
+		 PGA_FATAL, PGA_VOID, NULL);
+    c = (PGAReal *)new->chrom;
+    if (initflag)
+	if (ctx->fops.InitString) {
+	    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+	    (*ctx->fops.InitString)(&ctx, &fp, &pop);
+	} else {
+	    (*ctx->cops.InitString)(ctx, p, pop);
+	}
+    else
+	for (i=ctx->ga.StringLen-1; i>=0; i--)
+	    c[i] = 0.0;
+    
+    PGADebugExited("PGARealCreateString");
+}
+
+/*I****************************************************************************
+   PGARealMutation - randomly mutates a floating point string with probability
+   mr.  Three of the four mutation operators are of the form v = v +- p*v.
+   That is, the new value of v (allele i) is the old value + or - a percentage,
+   p, of the old value. There are three possibilities for choosing p: (1)
+   constant value (0.01 by default), (2) selected uniformly on (0,UB) (UB is
+   .1 by default), and (3) selected from a Gaussian distribution (with mean 0
+   and standard deviation .1 be default).  The change to an allele, p*v, is
+   added or subtracted to the old value with a probability of .5. The fourth
+   option is to replace v with a value selected uniformly random from the
+   initialization range of that gene. Alleles to mutate are randomly selected.
+   The value set by the routine PGASetMutationRealValue is used as p, UB, and
+   sigma in cases 1,2, and 3, respectively.
+
+   Inputs:
+      ctx - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      mr  - probability of mutating a real-valued gene
+
+   Outputs: The number of mutations performed.
+
+   Example:
+      Sets the value of the ith gene of string p
+      in population PGA_NEWPOP to one
+
+      PGAContext *ctx;
+      int NumMutations, p;
+      :
+      NumMutations = PGARealMutation( ctx, p, PGA_NEWPOP, .001 );
+
+****************************************************************************I*/
+int PGARealMutation( PGAContext *ctx, int p, int pop, double mr )
+{
+     PGAReal *c;
+     int i;
+     int count = 0;
+     double val;
+
+     PGADebugEntered("PGARealMutation");
+
+     c = (PGAReal *)PGAGetIndividual(ctx, p, pop)->chrom;
+     for(i=0; i<ctx->ga.StringLen; i++) {
+
+         /* randomly choose an allele   */
+         if ( PGARandomFlip(ctx, mr) ) {
+
+             /* generate on range, or calculate multplier */
+             switch (ctx->ga.MutationType) {
+             case PGA_MUTATION_RANGE:
+                 c[i] = PGARandomUniform(ctx, ctx->init.RealMin[i],
+                                              ctx->init.RealMax[i]);
+                 break;
+             case PGA_MUTATION_CONSTANT:
+                 val = ctx->ga.MutateRealValue;
+                 break;
+             case PGA_MUTATION_UNIFORM:
+                 val = PGARandomUniform (ctx, 0.0, ctx->ga.MutateRealValue);
+                 break;
+             case PGA_MUTATION_GAUSSIAN:
+                 val = PGARandomGaussian(ctx, 0.0, ctx->ga.MutateRealValue);
+                 break;
+             default:
+                  PGAError(ctx, "PGARealMutation: Invalid value of "
+                           "ga.MutationType:", PGA_FATAL, PGA_INT,
+                           (void *) &(ctx->ga.MutationType));
+                  break;
+             }
+
+             /* apply multiplier calculated in switch above */
+             if ( (ctx->ga.MutationType == PGA_MUTATION_CONSTANT) ||
+                  (ctx->ga.MutationType == PGA_MUTATION_UNIFORM)  ||
+                  (ctx->ga.MutationType == PGA_MUTATION_GAUSSIAN)
+                ) {
+                 /* add/subtract from allele */
+                 if ( PGARandomFlip(ctx, .5) )
+                     c[i] += val*c[i];
+                 else
+                     c[i] -= val*c[i];
+             }
+
+             /* reset to min/max if bounded flag true and outside range */
+             if( ctx->ga.MutateBoundedFlag == PGA_TRUE ) {
+                if( c[i] < ctx->init.RealMin[i])
+                    c[i] = ctx->init.RealMin[i];
+                if( c[i] > ctx->init.RealMax[i])
+                    c[i] = ctx->init.RealMax[i];
+             }
+
+             /* increment mutation count */
+             count++;
+         }
+     }
+
+     PGADebugExited("PGARealMutation");
+
+     return(count);
+}
+
+/*I****************************************************************************
+   PGARealOneptCrossover - this routine performs one point crossover on two
+   parent strings, producing (via side effect) the crossed children child1 and
+   child2
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      c1 and c2 in population pop2 are modified by side-effect.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGARealOneptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGARealOneptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2)
+{
+     PGAReal *parent1 = (PGAReal *)PGAGetIndividual(ctx, p1,
+                                                    pop1)->chrom;
+     PGAReal *parent2 = (PGAReal *)PGAGetIndividual(ctx, p2,
+                                                    pop1)->chrom;
+     PGAReal *child1  = (PGAReal *)PGAGetIndividual(ctx, c1,
+                                                    pop2)->chrom;
+     PGAReal *child2  = (PGAReal *)PGAGetIndividual(ctx, c2,
+                                                    pop2)->chrom;
+     int i, xsite;
+
+    PGADebugEntered("PGARealOneptCrossover");
+
+    xsite = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+
+    for(i=0;i<xsite;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    for(i=xsite;i<ctx->ga.StringLen;i++) {
+        child1[i] = parent2[i];
+        child2[i] = parent1[i];
+    }
+
+    PGADebugExited("PGARealOneptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGARealTwoptCrossover - performs two-point crossover on two parent strings
+   producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      c1 and c2 in population pop2 are modified by side-effect.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGARealTwoptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGARealTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2)
+{
+     PGAReal *parent1 = (PGAReal *)PGAGetIndividual(ctx, p1,
+                                                    pop1)->chrom;
+     PGAReal *parent2 = (PGAReal *)PGAGetIndividual(ctx, p2,
+                                                    pop1)->chrom;
+     PGAReal *child1  = (PGAReal *)PGAGetIndividual(ctx, c1,
+                                                    pop2)->chrom;
+     PGAReal *child2  = (PGAReal *)PGAGetIndividual(ctx, c2,
+                                                    pop2)->chrom;
+     int i, temp, xsite1, xsite2;
+
+    PGADebugEntered("PGARealTwoptCrossover");
+
+    /* pick two cross sites such that xsite2 > xsite1 */
+    xsite1 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    xsite2 = xsite1;
+    while ( xsite2 == xsite1 )
+        xsite2 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    if ( xsite1 > xsite2 ) {
+        temp   = xsite1;
+        xsite1 = xsite2;
+        xsite2 = temp;
+    }
+
+    for(i=0;i<xsite1;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    for(i=xsite1;i<xsite2;i++) {
+        child1[i] = parent2[i];
+        child2[i] = parent1[i];
+    }
+
+    for(i=xsite2;i<ctx->ga.StringLen;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    PGADebugExited("PGARealTwoptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGARealUniformCrossover - performs uniform crossover on two parent strings
+   producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      c1 and c2 in population pop2 are modified by side-effect.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGARealUniformCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGARealUniformCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                             int c1, int c2, int pop2)
+{
+     PGAReal *parent1 = (PGAReal *)PGAGetIndividual(ctx, p1,
+                                                    pop1)->chrom;
+     PGAReal *parent2 = (PGAReal *)PGAGetIndividual(ctx, p2,
+                                                    pop1)->chrom;
+     PGAReal *child1  = (PGAReal *)PGAGetIndividual(ctx, c1,
+                                                    pop2)->chrom;
+     PGAReal *child2  = (PGAReal *)PGAGetIndividual(ctx, c2,
+                                                    pop2)->chrom;
+     int i;
+
+    PGADebugEntered("PGARealUniformCrossover");
+
+    for(i=0;i<ctx->ga.StringLen;i++) {
+        if ( parent1[i] == parent2[i] ) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+        else {
+            if(PGARandomFlip(ctx, ctx->ga.UniformCrossProb)) {
+                child1[i] = parent1[i];
+                child2[i] = parent2[i];
+            }
+            else {
+                child1[i] = parent2[i];
+                child2[i] = parent1[i];
+            }
+        }
+    }
+
+    PGADebugExited("PGARealUniformCrossover");
+}
+
+/*I****************************************************************************
+   PGARealPrintString - writes a real-valued string to a file.  This routine
+   casts the void string pointer it is passed as the second argument.
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to file to write the string to
+      p   - index of the string to write out
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+      Write string s to stdout.
+
+      PGAContext *ctx;
+      int s;
+      :
+      PGARealPrintString( ctx, stdout, s, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGARealPrintString (PGAContext *ctx, FILE *fp, int p, int pop)
+{
+    PGAReal *c = (PGAReal *)PGAGetIndividual(ctx, p, pop)->chrom;
+    int i;
+
+    PGADebugEntered("PGARealPrintString");
+
+    for(i = 0; i < ctx->ga.StringLen; i++)
+    {
+        switch ( i % 5 )
+        {
+        case 0:
+            fprintf ( fp, "#%4d: [%11.7g]",i,c[i]);
+            break;
+        case 1:
+        case 2:
+        case 3:
+            fprintf ( fp, ", [%11.7g]",c[i]);
+            break;
+        case 4:
+            fprintf ( fp, ", [%11.7g]",c[i]);
+            if (i+1 < ctx->ga.StringLen)
+                fprintf ( fp, "\n");
+            break;
+        }
+    }
+    fprintf ( fp, "\n" );
+
+    PGADebugExited("PGARealPrintString");
+}
+
+
+/*I****************************************************************************
+   PGARealCopyString - Copy one real-valued string string to another
+
+   Inputs:
+      ctx - context variable
+      p1   - string to copy
+      pop1 - symbolic constant of population containing string p1
+      p2   - string to copy p1 to
+      pop2 - symbolic constant of population containing string p2
+
+   Outputs:
+      String p2 in population pop2 is modified to be a copy of string
+      p1 in population pop1.
+
+   Example:
+      Copy string x to y.
+
+      PGAContext *ctx;
+      int x, y;
+      :
+      PGARealCopyString (ctx, x, PGA_OLDPOP, y, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGARealCopyString ( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+    PGAReal *source = (PGAReal *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    PGAReal *dest   = (PGAReal *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+    int i;
+
+    PGADebugEntered("PGARealCopyString");
+
+    for (i=ctx->ga.StringLen-1; i>=0; i--)
+        *(dest++) = *(source++);
+
+    PGADebugExited("PGARealCopyString");
+}
+
+
+/*I****************************************************************************
+   PGARealDuplicate - Returns true if real-valued string a is a duplicate of
+   real-valued string b, else returns false.
+
+   Inputs:
+      ctx - context variable
+      p1   - string index of the first string to compare
+      pop1 - symbolic constant of the population string p1 is in
+      p2   - string index of the second string to compare
+      pop2 - symbolic constant of the population string p2 is in
+
+   Outputs:
+      Returns true/false if strings are duplicates
+
+   Example:
+      Compare strings x with y to see if they are duplicates
+
+      PGAContext *ctx;
+      int x, y;
+      :
+      if ( PGARealDuplicate( ctx, x, PGA_OLDPOP, y, PGA_OLDPOP ) )
+          printf("strings are duplicates\n");
+
+****************************************************************************I*/
+int PGARealDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+     PGAReal *a = (PGAReal *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     PGAReal *b = (PGAReal *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+     int i;
+
+    PGADebugEntered("PGARealDuplicate");
+
+     i = ctx->ga.StringLen-1;
+     if (a[0] == b[0])
+       for(; (i>0) && (a[i] == b[i]); i--);
+
+    PGADebugExited("PGARealDuplicate");
+
+     return((i==0) ? PGA_TRUE : PGA_FALSE);
+}
+
+/*I****************************************************************************
+   PGARealInitString - randomly initialize a string of type PGAReal
+
+   Inputs:
+      ctx - context variable
+      p   - index of string to randomly initialize
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+      String p in population pop is randomly initialized by side-effect.
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGARealInitString (ctx, p, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGARealInitString ( PGAContext *ctx, int p, int pop)
+{
+     int i;
+     PGAReal *c = (PGAReal *)PGAGetIndividual(ctx, p, pop)->chrom;
+
+     PGADebugEntered("PGARealInitString");
+
+     for (i = 0; i < ctx->ga.StringLen; i++)
+          c[i] = PGARandomUniform(ctx, ctx->init.RealMin[i],
+                                  ctx->init.RealMax[i]);
+
+     PGADebugExited("PGARealInitString");
+}
+
+/*I****************************************************************************
+  PGARealBuildDatatype - Build an MPI datatype for a string.
+
+  Inputs:
+     ctx   - context variable
+     p     - index of string
+     pop   - symbolic constant of population string p is in
+
+  Outputs:
+     An MPI_Datatype.
+
+  Example:
+     PGAContext   *ctx;
+     int           p;
+     MPI_Datatype  dt;
+     :
+     dt = PGARealBuildDatatype(ctx, p, pop);
+
+****************************************************************************I*/
+MPI_Datatype PGARealBuildDatatype(PGAContext *ctx, int p, int pop)
+{
+
+     int            counts[4];      /* Number of elements in each
+                                       block (array of integer) */
+     MPI_Aint       displs[4];      /* byte displacement of each
+                                       block (array of integer) */
+     MPI_Datatype   types[4];       /* type of elements in each block (array
+                                       of handles to datatype objects) */
+     MPI_Datatype   individualtype; /* new datatype (handle) */
+     PGAIndividual *traveller;      /* address of individual in question */
+
+    PGADebugEntered("PGARealBuildDatatype");
+
+     traveller = PGAGetIndividual(ctx, p, pop);
+     MPI_Address(&traveller->evalfunc, &displs[0]);
+     counts[0] = 1;
+     types[0]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->fitness, &displs[1]);
+     counts[1] = 1;
+     types[1]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->evaluptodate, &displs[2]);
+     counts[2] = 1;
+     types[2]  = MPI_INT;
+
+     MPI_Address(traveller->chrom, &displs[3]);
+     counts[3] = ctx->ga.StringLen;
+     types[3]  = MPI_DOUBLE;
+
+     MPI_Type_struct(4, counts, displs, types, &individualtype);
+     MPI_Type_commit(&individualtype);
+
+    PGADebugExited("PGARealBuildDatatype");
+
+     return (individualtype);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/report.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/report.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/report.c	(revision 6168)
@@ -0,0 +1,1359 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/******************************************************************************
+ *     FILE: report.c: This file contains functions for reporting on GA
+ *                     parameters, and execution.
+ *
+ *     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle
+ *              Brian P. Walenz
+ ******************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGAPrintReport - prints genetic algorithm statistics.  The statistics
+   that are printed are determined by PGASetPrintOptions().
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to print the output to
+      pop - symbolic constant of the population whose statistics are printed
+
+   Outputs:
+      genetic algorithm statistics are printed to fp
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGAPrintReport(ctx, stdout, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGAPrintReport(PGAContext *ctx, FILE *fp, int pop)
+{
+     int p, best_p;
+     double e, best_e;
+
+    PGADebugEntered("PGAPrintReport");
+
+     if (ctx->ga.iter == 1)
+/*       fprintf (fp, "Iter #     Field      Value           Time\n");  */
+         fprintf (fp, "Iter #     Field      Value\n");
+
+     best_p = PGAGetBestIndex(ctx, pop);
+     best_e = PGAGetEvaluation(ctx, best_p, pop);
+     if (!(ctx->ga.iter % ctx->rep.PrintFreq) || ctx->ga.iter == 1)
+     {
+/* gekco          fprintf(fp, "%-11dBest       %e\n", PGAGetGAIterValue(ctx), best_e); */
+          fprintf(fp, "%-11dBest       %e", PGAGetGAIterValue(ctx), best_e);
+          if ((ctx->rep.PrintOptions & PGA_REPORT_STRING) == PGA_REPORT_STRING)
+               PGAPrintString(ctx, fp, best_p, pop);
+	  else
+                  fprintf(fp, "\n");
+
+/*        fprintf(fp, "      %ld\n", time(NULL) - ctx->rep.starttime);  */
+          if ((ctx->rep.PrintOptions & PGA_REPORT_WORST) == PGA_REPORT_WORST)
+          {
+               p = PGAGetWorstIndex(ctx, pop);
+               e = PGAGetEvaluation(ctx, p, pop);
+/* gekco               fprintf(fp, "           Worst      %e\n", e); */
+               fprintf(fp, "           Worst      %e", e);
+               if ((ctx->rep.PrintOptions & PGA_REPORT_STRING) == PGA_REPORT_STRING)
+                    PGAPrintString(ctx, fp, p, pop);
+               else
+                       fprintf(fp, "\n");
+
+          }
+
+          if ((ctx->rep.PrintOptions & PGA_REPORT_AVERAGE) == PGA_REPORT_AVERAGE)
+               fprintf(fp, "           Average    %e\n", ctx->rep.Average);
+
+          if ((ctx->rep.PrintOptions & PGA_REPORT_OFFLINE)
+               == PGA_REPORT_OFFLINE)
+               fprintf(fp, "           Offline    %e\n", ctx->rep.Offline);
+
+          if ((ctx->rep.PrintOptions & PGA_REPORT_ONLINE) == PGA_REPORT_ONLINE)
+               fprintf(fp, "           Online     %e\n", ctx->rep.Online);
+
+          if((ctx->rep.PrintOptions & PGA_REPORT_HAMMING)
+             == PGA_REPORT_HAMMING)
+               fprintf(fp, "           Hamming    %e\n",
+                       PGAHammingDistance(ctx, pop));
+/*          if ((ctx->rep.PrintOptions & PGA_REPORT_STRING) == PGA_REPORT_STRING)
+               PGAPrintString(ctx, fp, best_p, pop); */
+     }
+     fflush(fp);
+
+    PGADebugExited("PGAPrintReport");
+}
+
+/*U****************************************************************************
+   PGASetPrintOptions - set flags to indicate what GA statistics should be
+   printed whenever output is printed.  May be called more than once to
+   specify different report options.  Valid choices are PGA_REPORT_AVERAGE,
+   PGA_REPORT_OFFLINE, PGA_REPORT_ONLINE, PGA_REPORT_WORST, PGA_REPORT_HAMMING,
+   and PGA_REPORT_STRING to specify offline analysis, online analysis, the
+   worst string in the population, the Hamming distance of the population, and
+   the actual allele values of the best string.  The best string is always
+   printed. 
+
+   Category: Reporting
+
+   Inputs:
+      ctx    - context variable
+      option - symbolic constant to specify a print option
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetPrintOptions(ctx, PGA_REPORT_WORST);
+
+****************************************************************************U*/
+void PGASetPrintOptions (PGAContext *ctx, int option)
+{
+    PGADebugEntered("PGASetPrintOptions");
+
+  switch (option) {
+    case PGA_REPORT_AVERAGE:
+    case PGA_REPORT_OFFLINE:
+    case PGA_REPORT_ONLINE:
+    case PGA_REPORT_WORST:
+    case PGA_REPORT_HAMMING:
+    case PGA_REPORT_STRING:
+      ctx->rep.PrintOptions |= option;
+      break;
+    default:
+      PGAError (ctx, "PGASetPrintOption: Invalid value of option:",
+                PGA_FATAL, PGA_INT, (void *) &option);
+      break;
+  }
+
+    PGADebugExited("PGASetPrintOptions");
+}
+
+/*U****************************************************************************
+   PGASetPrintFrequencyValue - Specifies the frequency with which genetic
+   algorithm statistics are reported.  The default is every 10 GA iterations.
+   Used only if PGARun() is used to run the GA.
+
+   Category: Reporting
+
+   Inputs:
+      ctx        - context variable
+      print_freq - the genetic algorithm population size to use
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetPrintFrequencyValue(ctx,1);
+
+****************************************************************************U*/
+void PGASetPrintFrequencyValue( PGAContext *ctx, int print_freq)
+{
+    PGADebugEntered("PGASetPrintFrequencyValue");
+
+    if (print_freq < 0)
+        PGAError ( ctx,
+                  "PGASetPrintFrequencyValue: Invalid value of print_freq:",
+                   PGA_FATAL,
+                   PGA_INT,
+                  (void *) &print_freq);
+    else
+        ctx->rep.PrintFreq = print_freq;
+
+    PGADebugExited("PGASetPrintFrequencyValue");
+}
+
+/*U***************************************************************************
+   PGAGetPrintFrequencyValue - returns how often to print statistics reports
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The frequency of printing output
+
+   Example:
+      PGAContext *ctx;
+      int freq;
+      :
+      freq = PGAGetPrintFrequencyValue(ctx);
+
+***************************************************************************U*/
+int PGAGetPrintFrequencyValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetPrintFrequencyValue");
+    PGAFailIfNotSetUp("PGAGetPrintFrequencyValue");
+
+    PGADebugExited("PGAGetPrintFrequencyValue");
+
+    return(ctx->rep.PrintFreq);
+}
+
+/*U****************************************************************************
+   PGAPrintPopulation - Calls PGAPrintIndividual to print each member of a
+   population
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to print the output to
+      pop - symbolic constant of the population to be printed
+
+   Outputs:
+      The strings and associated fields that make up a population member are
+      printed to fp.
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGAPrintPopulation(ctx, stdout, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGAPrintPopulation ( PGAContext *ctx, FILE *fp, int pop )
+{
+    int i;
+
+
+    PGADebugEntered("PGAPrintPopulation");
+
+    for ( i=0; i < ctx->ga.PopSize; i++ )
+         PGAPrintIndividual ( ctx, fp,  i, pop );
+    fprintf(fp,"\n");
+
+    PGADebugExited("PGAPrintPopulation");
+}
+
+/*U****************************************************************************
+   PGAPrintIndividual - prints the allele values of a string and associated
+   fields (evaluation, fitness, etc.) of a string
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to print the output to
+      p   - string index
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+      The allele values of string p and associated fields are printed to fp
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGAPrintIndividual(ctx, stdout, p, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGAPrintIndividual ( PGAContext *ctx, FILE *fp, int p, int pop )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAPrintIndividual");
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+
+    fprintf( fp,"%d  %e %e ", p, ind->evalfunc, ind->fitness);
+    if ( ind->evaluptodate )
+        fprintf( fp, "T\n" );
+    else
+        fprintf( fp, "F\n" );
+    PGAPrintString ( ctx, fp, p, pop );
+
+    PGADebugExited("PGAPrintIndividual");
+}
+
+/*U****************************************************************************
+   PGAPrintString - write the allele values in a string to a file
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+      fp  - pointer to file to write the string to
+      p   - index of the string to write out
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGAPrintString(ctx, stdout, p, PGA_OLDPOP);
+
+****************************************************************************U*/
+void PGAPrintString ( PGAContext *ctx, FILE *file, int p, int pop )
+{
+    int fp;
+
+    PGADebugEntered("PGAPrintString");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAPrintString",
+                  "p   = ", PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAPrintString",
+                  "pop = ", PGA_INT, (void *) &pop );
+    
+    if (ctx->fops.PrintString) {
+        fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+        (*ctx->fops.PrintString)(&ctx, NULL, &fp, &pop);
+    } else {
+        (*ctx->cops.PrintString)(ctx, file, p, pop);
+    }
+    fprintf(file,"\n");
+
+    PGADebugExited("PGAPrintString");
+}
+
+/*U****************************************************************************
+   PGAPrintContextVariable - prints the value of all the fields in the context
+   variable.
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to print the output to
+
+   Outputs:
+      The value of all the fields in the context variable are printed to fp.
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGAPrintContextVariable(ctx, stdout);
+
+****************************************************************************U*/
+void PGAPrintContextVariable ( PGAContext *ctx, FILE *fp )
+{
+    PGADebugEntered("PGAPrintContextVariable");
+
+     fprintf( fp,"Algorithm Parameters (Static)\n");
+
+     fprintf( fp,"    Data type                      : ");
+     switch(ctx->ga.datatype)
+     {
+     case PGA_DATATYPE_BINARY:
+          fprintf( fp,"Binary\n");
+          /*fprintf( fp,"    Bit Type Total Words           : ");
+          switch(ctx->ga.tw)
+          {
+          case PGA_UNINITIALIZED_INT:
+               fprintf( fp,"*UNINITIALIZED*\n");
+               break;
+          default:
+               fprintf( fp,"%d\n",ctx->ga.tw);
+               break;
+          };
+          fprintf( fp,"    Bit Type Full Words            : ");
+          switch(ctx->ga.fw)
+          {
+          case PGA_UNINITIALIZED_INT:
+               fprintf( fp,"*UNINITIALIZED*\n");
+               break;
+          default:
+               fprintf( fp,"%d\n",ctx->ga.fw);
+               break;
+          };
+          fprintf( fp,"    Bit Type Extra Bits            : ");
+          switch(ctx->ga.eb)
+          {
+          case PGA_UNINITIALIZED_INT:
+               fprintf( fp,"*UNINITIALIZED*\n");
+               break;
+          default:
+               fprintf( fp,"%d\n",ctx->ga.eb);
+               break;
+          };*/
+          break;
+     case PGA_DATATYPE_INTEGER:
+          fprintf( fp,"Integer\n");
+          break;
+     case PGA_DATATYPE_REAL:
+          fprintf( fp,"Real\n");
+          break;
+     case PGA_DATATYPE_CHARACTER:
+          fprintf( fp,"Character\n");
+          break;
+     case PGA_DATATYPE_USER:
+          fprintf( fp,"User Defined\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.datatype);
+          break;
+     };
+
+     fprintf( fp,"    Optimization Direction         : ");
+     switch(ctx->ga.optdir)
+     {
+     case PGA_MAXIMIZE:
+          fprintf( fp,"Maximize\n");
+          break;
+     case PGA_MINIMIZE:
+          fprintf( fp,"Minimize\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.optdir);
+          break;
+     };
+
+     fprintf( fp,"    Population Size                : ");
+     switch(ctx->ga.PopSize)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.PopSize);
+          break;
+     };
+
+     fprintf( fp,"    String Length                  : ");
+     switch(ctx->ga.StringLen)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.StringLen);
+          break;
+     };
+     
+
+     fprintf( fp,"    Copy to Next Population        : ");
+     switch(ctx->ga.PopReplace)
+     {
+     case PGA_POPREPL_BEST:
+          fprintf( fp,"Best\n");
+          break;
+     case PGA_POPREPL_RANDOM_NOREP:
+          fprintf( fp,"Random without replacement\n");
+          break;
+     case PGA_POPREPL_RANDOM_REP:
+          fprintf( fp,"Random with replacement\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.PopReplace);
+          break;
+     };
+
+     
+     /*fprintf( fp,"    Stopping Rule (s)              :\n");
+     if ((ctx->ga.StoppingRule & PGA_STOP_MAXITER) == PGA_STOP_MAXITER)
+          fprintf(fp, "%50s", "Maximum iterations\n");
+     if ((ctx->ga.StoppingRule & PGA_STOP_NOCHANGE) == PGA_STOP_NOCHANGE)
+          fprintf(fp, "%49s", "No change in best\n");
+     if ((ctx->ga.StoppingRule & PGA_STOP_TOOSIMILAR) == PGA_STOP_TOOSIMILAR)
+          fprintf(fp, "%54s", "Population Homogeneity\n");
+     if (ctx->ga.StoppingRule == PGA_UNINITIALIZED_INT)
+          fprintf(fp, "%47s", "*UNINITIALIZED*\n");*/
+
+     fprintf( fp,"    Stop: Maximum Iterations       : ");
+     if ((ctx->ga.StoppingRule & PGA_STOP_MAXITER) == PGA_STOP_MAXITER)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+
+     fprintf( fp,"        Maximum Iterations         : ");
+     switch(ctx->ga.MaxIter)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.MaxIter);
+          break;
+     };
+
+
+     fprintf( fp,"    Stop: No Change                : ");
+     if ((ctx->ga.StoppingRule & PGA_STOP_NOCHANGE) == PGA_STOP_NOCHANGE)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+     
+     fprintf(fp, "        Max No Change Iterations   : ");
+     switch(ctx->ga.MaxNoChange)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->ga.MaxNoChange);
+          break;
+     }
+
+     fprintf( fp,"    Stop: Too Similar              : ");
+     if ((ctx->ga.StoppingRule & PGA_STOP_TOOSIMILAR) == PGA_STOP_TOOSIMILAR)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+
+     fprintf(fp, "        Percent Similarity         : ");
+     switch(ctx->ga.MaxSimilarity)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->ga.MaxSimilarity);
+          break;
+     }
+
+     fprintf( fp,"    No. Strings Replaced per Iter  : ");
+     switch(ctx->ga.NumReplace)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.NumReplace);
+          break;
+     };
+
+
+     fprintf( fp,"    Mutate [And,Or] Crossover      : ");
+     switch(ctx->ga.MutateOnlyNoCross)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"Or\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"And\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.MutateOnlyNoCross);
+          break;
+     };
+
+     
+     fprintf( fp,"    Crossover Type                 : ");
+     switch(ctx->ga.CrossoverType)
+     {
+     case PGA_CROSSOVER_ONEPT:
+          fprintf( fp,"One Point\n");
+          break;
+     case PGA_CROSSOVER_TWOPT:
+          fprintf( fp,"Two Point\n");
+          break;
+     case PGA_CROSSOVER_UNIFORM:
+          fprintf( fp,"Uniform\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.CrossoverType);
+          break;
+     };
+
+     
+     fprintf( fp,"    Crossover Probability          : ");
+     if (ctx->ga.CrossoverProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.CrossoverProb);
+
+    
+     fprintf( fp,"    Uniform Crossover Prob.        : ");
+     if (ctx->ga.UniformCrossProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.UniformCrossProb);
+
+     
+     fprintf( fp,"    Mutation Type                  : ");
+     switch(ctx->ga.datatype)
+     {
+     case PGA_DATATYPE_BINARY:
+          fprintf( fp,"Binary\n");
+          break;
+     case PGA_DATATYPE_CHARACTER:
+          fprintf( fp,"Character\n");
+          break;
+     case PGA_DATATYPE_REAL:
+     case PGA_DATATYPE_INTEGER:
+         switch(ctx->ga.MutationType)
+         {
+         case PGA_MUTATION_CONSTANT:
+              fprintf( fp,"Constant\n");
+              break;
+         case PGA_MUTATION_RANGE:
+              fprintf( fp,"Range\n");
+              break;
+         case PGA_MUTATION_UNIFORM:
+              fprintf( fp,"Uniform\n");
+              break;
+         case PGA_MUTATION_GAUSSIAN:
+              fprintf( fp,"Gaussian\n");
+              break;
+         case PGA_MUTATION_PERMUTE:
+              fprintf( fp,"Permutation\n");
+              break;
+         case PGA_UNINITIALIZED_INT:
+              fprintf( fp,"*UNINITIALIZED*\n");
+              break;
+         default:
+              fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.MutationType);
+              break;
+         };
+     default:
+         break;
+     };
+
+     
+     fprintf( fp,"    Mutation Probability           : ");
+     if (ctx->ga.MutationProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.MutationProb);
+
+     
+     fprintf( fp,"    Real Mutation Constant         : ");
+     if (ctx->ga.MutationProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.MutateRealValue);
+
+
+     fprintf(fp, "    Integer Mutation Constant      : ");
+     switch(ctx->ga.MutateIntegerValue)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->ga.MutateIntegerValue);
+          break;
+     }
+
+     
+     fprintf( fp,"    Mutation Range Bounded         : ");
+     switch(ctx->ga.MutateBoundedFlag)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"On\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"Off\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.MutateBoundedFlag);
+          break;
+     };
+
+     
+     fprintf( fp,"    Selection Type                 : ");
+     switch(ctx->ga.SelectType)
+     {
+     case PGA_SELECT_PROPORTIONAL:
+          fprintf( fp,"Proportional\n");
+          break;
+     case PGA_SELECT_SUS:
+          fprintf( fp,"Stochastic Universal\n");
+          break;
+     case PGA_SELECT_TOURNAMENT:
+          fprintf( fp,"Binary Tournament\n");
+          break;
+     case PGA_SELECT_PTOURNAMENT:
+          fprintf( fp,"Probabilistic Binary Tournament\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.SelectType);
+          break;
+     };
+
+     
+     fprintf( fp,"    Tournament Selection Param     : ");
+     if (ctx->ga.PTournamentProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.PTournamentProb);
+    
+     
+
+     fprintf( fp,"    Restart Operator               : ");
+     switch(ctx->ga.restart)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"On\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"Off\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.restart);
+          break;
+     };
+
+     fprintf( fp,"    Restart Frequency              : ");
+     switch(ctx->ga.restartFreq)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.restartFreq);
+          break;
+     };
+
+     fprintf( fp,"    Restart Allele Change Prob     : ");
+     if (ctx->ga.restartAlleleProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.restartAlleleProb);
+
+     
+     fprintf( fp,"    Allow Duplicates               : ");
+     switch(ctx->ga.NoDuplicates)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"No\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"Yes\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.NoDuplicates);
+          break;
+     };
+
+
+     fprintf( fp,"    Fitness Type                   : ");
+     switch(ctx->ga.FitnessType)
+     {
+     case PGA_FITNESS_RAW:
+          fprintf( fp,"Raw\n");
+          break;
+     case PGA_FITNESS_NORMAL:
+          fprintf( fp,"Linear Normalization\n");
+          break;
+     case PGA_FITNESS_RANKING:
+          fprintf( fp,"Linear Ranking\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.FitnessType);
+          break;
+     };
+
+     
+     if ( ctx->ga.optdir == PGA_MINIMIZE )
+     {
+          fprintf( fp,"    Fitness Type(Minimization)     : ");
+          switch(ctx->ga.FitnessMinType) {
+          case PGA_FITNESSMIN_RECIPROCAL:
+               fprintf( fp,"Reciprocal\n");
+               break;
+          case PGA_FITNESSMIN_CMAX:
+               fprintf( fp,"CMax\n");
+               break;
+          case PGA_UNINITIALIZED_INT:
+               fprintf( fp,"*UNINITIALIZED*\n");
+               break;
+          default:
+               fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.FitnessMinType);
+               break;
+          };
+     }
+
+     
+     fprintf( fp,"    Fitness Ranking Parameter      : ");
+     if (ctx->ga.FitnessRankMax == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.FitnessRankMax);
+     
+
+     fprintf( fp,"    Fitness CMAX Parameter         : ");
+     if (ctx->ga.FitnessCmaxValue == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.FitnessCmaxValue);
+
+     
+     fprintf( fp,"Algorithm Parameters (Dynamic)\n");
+
+     
+     fprintf( fp,"    Current Generation             : ");
+     switch(ctx->ga.iter)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.iter);
+          break;
+     };
+
+     fprintf(fp, "    Num Iters With No Change       : ");
+     switch(ctx->ga.ItersOfSame)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->ga.ItersOfSame);
+          break;
+     }
+
+     fprintf(fp, "    Percent Similarity In Pop      : ");
+     switch(ctx->ga.PercentSame)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "?UNINITIALZED?\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->ga.PercentSame);
+          break;
+     }
+
+     fprintf( fp,"    Selection Index                : ");
+     switch(ctx->ga.SelectIndex)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.SelectIndex);
+          break;
+     };
+
+     
+/* initialization */
+     fprintf( fp,"Initialization\n");
+
+     fprintf( fp,"    Random Initialization          : ");
+     switch(ctx->init.RandomInit)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"On\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"Off\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->init.RandomInit);
+          break;
+     };
+
+     fprintf( fp,"    Initialization Binary Prob     : ");
+     if (ctx->init.BinaryProbability == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->init.BinaryProbability);
+
+
+     fprintf( fp,"    Initialization Real            : ");
+     switch(ctx->init.RealType)
+     {
+     case PGA_RINIT_RANGE:
+          fprintf( fp,"Range\n");
+          break;
+     case PGA_RINIT_PERCENT:
+          fprintf( fp,"Percent Offset\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->init.RealType);
+          break;
+     };
+
+     fprintf( fp,"    Initialization Integer         : ");
+     switch(ctx->init.IntegerType)
+     {
+     case PGA_IINIT_RANGE:
+          fprintf( fp,"Range\n");
+          break;
+     case PGA_IINIT_PERMUTE:
+          fprintf( fp,"Permutation\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->init.IntegerType);
+          break;
+     };
+
+     fprintf( fp,"    Initialization Character       : ");
+     switch(ctx->init.CharacterType)
+     {
+     case PGA_CINIT_LOWER:
+          fprintf( fp,"Lower Case\n");
+          break;
+     case PGA_CINIT_UPPER:
+          fprintf( fp,"Upper Case\n");
+          break;
+     case PGA_CINIT_MIXED:
+          fprintf( fp,"Mixed Case\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->init.CharacterType);
+          break;
+     };
+     
+     fprintf( fp,"    Random Number Seed             : ");
+     switch(ctx->init.RandomSeed)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n", ctx->init.RandomSeed);
+          break;
+     };
+
+     PGADebugExited("PGAPrintContextVariable");
+
+
+/* par */
+    fprintf( fp,"Parallel\n");
+
+    fprintf( fp,"    MPI Library Used               : ");
+     switch(ctx->par.MPIStubLibrary)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"Sequential\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"Parallel\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->par.MPIStubLibrary);
+          break;
+     };
+
+
+     fprintf( fp,"    MPI Initialized by PGAPack     : ");
+     switch(ctx->par.MPIAlreadyInit)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"Yes\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"No\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->par.MPIAlreadyInit);
+          break;
+     };
+
+     /*fprintf(fp, "    Number Islands                 : ");
+     switch(ctx->par.NumIslands)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->par.NumIslands);
+          break;
+     }
+
+     fprintf(fp, "    Number Demes                   : ");
+     switch(ctx->par.NumDemes)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->par.NumDemes);
+          break;
+     }*/
+
+     fprintf(fp, "    Default Communicator           : ");
+     if (ctx->par.DefaultComm == (MPI_Comm) NULL) 
+	 fprintf(fp, "NULL\n");
+     else if (ctx->par.DefaultComm == MPI_COMM_WORLD)
+         fprintf(fp, "MPI_COMM_WORLD\n");
+     else
+	 fprintf(fp, "User Defined\n");
+ 
+
+
+/* report */
+     fprintf( fp,"Report\n");
+
+     fprintf( fp,"    Print Frequency                : ");
+     switch(ctx->rep.PrintFreq)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->rep.PrintFreq);
+          break;
+     };
+
+     fprintf( fp,"    Print Worst Evaluation         : ");
+     if ((ctx->rep.PrintOptions & PGA_REPORT_WORST) == PGA_REPORT_WORST)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+     fprintf( fp,"    Print Average Evaluation       : ");
+     if ((ctx->rep.PrintOptions & PGA_REPORT_AVERAGE) == PGA_REPORT_AVERAGE)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+     fprintf( fp,"    Print Offline Statistics       : ");
+     if ((ctx->rep.PrintOptions & PGA_REPORT_OFFLINE) == PGA_REPORT_OFFLINE)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+     fprintf( fp,"    Print Online Statistics        : ");
+     if ((ctx->rep.PrintOptions & PGA_REPORT_ONLINE) == PGA_REPORT_ONLINE)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+     fprintf( fp,"    Print Hamming Distance         : ");
+     if ((ctx->rep.PrintOptions & PGA_REPORT_HAMMING) == PGA_REPORT_HAMMING)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+/* system */
+     fprintf( fp,"System\n");
+
+     fprintf( fp,"    Maximum Integer                : ");
+     switch(ctx->sys.PGAMaxInt)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->sys.PGAMaxInt);
+          break;
+     };
+
+     fprintf( fp,"    Minimum Integer                : ");
+     switch(ctx->sys.PGAMinInt)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->sys.PGAMinInt);
+          break;
+     };
+
+     fprintf( fp,"    Maximum Double                 : ");
+     if (ctx->sys.PGAMaxDouble == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%e\n",ctx->sys.PGAMaxDouble);
+
+     fprintf( fp,"    Minimum Double                 : ");
+     if (ctx->sys.PGAMinDouble == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%e\n",ctx->sys.PGAMinDouble);
+
+
+
+/* ops */
+    fprintf( fp,"Operations\n");
+
+    fprintf( fp,"    CreateString  function         : ");
+    if (ctx->cops.CreateString == NULL)
+	fprintf( fp,"NULL\n");
+    else if (ctx->cops.CreateString == PGABinaryCreateString)
+	fprintf( fp,"PGABinaryCreateString\n");
+    else if (ctx->cops.CreateString == PGAIntegerCreateString)
+	fprintf( fp,"PGAIntegerCreateString\n");
+    else if (ctx->cops.CreateString == PGARealCreateString)
+	fprintf( fp,"PGARealCreateString\n");
+    else if (ctx->cops.CreateString == PGACharacterCreateString)
+	fprintf( fp,"PGACharacterCreateString\n");
+    else
+	fprintf( fp,"C User Defined: %p\n",ctx->cops.CreateString);
+
+    
+    fprintf( fp,"    InitString    function         : ");
+    if (ctx->cops.InitString) {
+        if (ctx->cops.InitString == PGABinaryInitString)
+	    fprintf( fp,"PGABinaryInitString\n");
+        else if (ctx->cops.InitString == PGAIntegerInitString)
+            fprintf( fp,"PGAIntegerInitString\n");
+        else if (ctx->cops.InitString == PGARealInitString)
+    	    fprintf( fp,"PGARealInitString\n");
+        else if (ctx->cops.InitString == PGACharacterInitString)
+    	    fprintf( fp,"PGACharacterInitString\n");
+        else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.InitString);
+    } else {
+	if (ctx->fops.InitString) 
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.InitString);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+    
+
+    fprintf( fp,"    BuildDatatype function         : ");
+    if (ctx->cops.BuildDatatype == NULL)
+	fprintf( fp,"NULL\n");
+    else if (ctx->cops.BuildDatatype == PGABinaryBuildDatatype)
+	fprintf( fp,"PGABinaryBuildDatatype\n");
+    else if (ctx->cops.BuildDatatype == PGAIntegerBuildDatatype)
+	fprintf( fp,"PGAIntegerBuildDatatype\n");
+    else if (ctx->cops.BuildDatatype == PGARealBuildDatatype)
+	fprintf( fp,"PGARealBuildDatatype\n");
+    else if (ctx->cops.BuildDatatype == PGACharacterBuildDatatype)
+	fprintf( fp,"PGACharacterBuildDatatype\n");
+    else
+	fprintf( fp,"C User Defined: %p\n",ctx->cops.BuildDatatype);
+
+    
+    fprintf( fp,"    Mutation      function         : ");
+    if (ctx->cops.Mutation) {
+	if (ctx->cops.Mutation == PGABinaryMutation)
+	    fprintf( fp,"PGABinaryMutation\n");
+	else if (ctx->cops.Mutation == PGAIntegerMutation)
+	    fprintf( fp,"PGAIntegerMutation\n");
+	else if (ctx->cops.Mutation == PGARealMutation)
+	    fprintf( fp,"PGARealMutation\n");
+	else if (ctx->cops.Mutation == PGACharacterMutation)
+	    fprintf( fp,"PGACharacterMutation\n");
+	else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.Mutation);
+    } else {
+	if (ctx->fops.Mutation) 
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.Mutation);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+
+    
+    fprintf( fp,"    Crossover     function         : ");
+    if (ctx->cops.Crossover) {
+	if (ctx->cops.Crossover == PGABinaryOneptCrossover)
+	    fprintf( fp,"PGABinaryOneptCrossover\n");
+	else if (ctx->cops.Crossover == PGAIntegerOneptCrossover)
+	    fprintf( fp,"PGAIntegerOneptCrossover\n");
+	else if (ctx->cops.Crossover == PGARealOneptCrossover)
+	    fprintf( fp,"PGARealOneptCrossover\n");
+	else if (ctx->cops.Crossover == PGACharacterOneptCrossover)
+	    fprintf( fp,"PGACharacterOneptCrossover\n");
+	else if (ctx->cops.Crossover == PGABinaryTwoptCrossover)
+	    fprintf( fp,"PGABinaryTwoptCrossover\n");
+	else if (ctx->cops.Crossover == PGAIntegerTwoptCrossover)
+	    fprintf( fp,"PGAIntegerTwoptCrossover\n");
+	else if (ctx->cops.Crossover == PGARealTwoptCrossover)
+	    fprintf( fp,"PGARealTwoptCrossover\n");
+	else if (ctx->cops.Crossover == PGACharacterTwoptCrossover)
+	    fprintf( fp,"PGACharacterTwoptCrossover\n");
+	else if (ctx->cops.Crossover == PGABinaryUniformCrossover)
+	    fprintf( fp,"PGABinarytUniformCrossover\n");
+	else if (ctx->cops.Crossover == PGAIntegerUniformCrossover)
+	    fprintf( fp,"PGAIntegerUniformCrossover\n");
+	else if (ctx->cops.Crossover == PGARealUniformCrossover)
+	    fprintf( fp,"PGARealUniformCrossover\n");
+	else if (ctx->cops.Crossover == PGACharacterUniformCrossover)
+	    fprintf( fp,"PGACharacterUniformCrossover\n");
+	else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.Crossover);
+    } else {
+	if (ctx->fops.Crossover) 
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.Crossover);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+
+    
+    fprintf( fp,"    PrintString   function         : ");
+    if (ctx->cops.PrintString) {
+	if (ctx->cops.PrintString == PGABinaryPrintString)
+	    fprintf( fp,"PGABinaryPrintString\n");
+	else if (ctx->cops.PrintString == PGAIntegerPrintString)
+	    fprintf( fp,"PGAIntegerPrintString\n");
+	else if (ctx->cops.PrintString == PGARealPrintString)
+	    fprintf( fp,"PGARealPrintString\n");
+	else if (ctx->cops.PrintString == PGACharacterPrintString)
+	    fprintf( fp,"PGACharacterPrintString\n");
+	else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.PrintString);
+    } else {
+	if (ctx->fops.PrintString)
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.PrintString);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+    
+
+    fprintf( fp,"    CopyString    function         : ");
+    if (ctx->cops.CopyString) {
+	if (ctx->cops.CopyString == PGABinaryCopyString)
+	    fprintf( fp,"PGABinaryCopyString\n");
+	else if (ctx->cops.CopyString == PGAIntegerCopyString)
+	    fprintf( fp,"PGAIntegerCopyString\n");
+	else if (ctx->cops.CopyString == PGARealCopyString)
+	    fprintf( fp,"PGARealCopyString\n");
+	else if (ctx->cops.CopyString == PGACharacterCopyString)
+	    fprintf( fp,"PGACharacterCopyString\n");
+	else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.CopyString);
+    } else {
+	if (ctx->cops.CopyString)
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.CopyString);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+
+    
+    fprintf( fp,"    Duplicate     function         : ");
+    if (ctx->cops.Duplicate) {
+	if (ctx->cops.Duplicate == PGABinaryDuplicate)
+	    fprintf( fp,"PGABinaryDuplicate\n");
+	else if (ctx->cops.Duplicate == PGAIntegerDuplicate)
+	    fprintf( fp,"PGAIntegerDuplicate\n");
+	else if (ctx->cops.Duplicate == PGARealDuplicate)
+	    fprintf( fp,"PGARealDuplicate\n"); 
+	else if (ctx->cops.Duplicate == PGACharacterDuplicate)
+	    fprintf( fp,"PGACharacterDuplicate\n"); 
+	else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.Duplicate);
+    } else {
+	if (ctx->fops.Duplicate)
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.Duplicate);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+
+
+    fprintf( fp,"    Stopping      function         : ");
+    if (ctx->cops.StopCond)
+	fprintf( fp,"C User Defined: %p\n",ctx->cops.StopCond);
+    else
+	if (ctx->fops.StopCond)
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.StopCond);
+	else
+	    fprintf( fp,"PGACheckStoppingConditions\n");
+
+
+    fprintf( fp,"    End of Generation function     : ");
+    if (ctx->cops.EndOfGen)
+	fprintf( fp,"C User Defined: %p\n",ctx->cops.EndOfGen);
+    else
+	if (ctx->cops.EndOfGen)
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.EndOfGen);
+	else
+	    fprintf( fp,"NULL\n");
+    
+
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/restart.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/restart.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/restart.c	(revision 6168)
@@ -0,0 +1,354 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: restart.c: This file contains the routines needed to handle
+*                      the restart operator, and restarting the GA.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGARestart - reseeds a population from the best string
+
+   Category: Operators
+
+   Inputs:
+      val         - the probability of changing an allele when copying the
+                    best string to the new population
+      source_pop  - the source population
+      dest_pop    - symbolic constant of the destination population
+
+   Outputs:
+      dest_pop is modified by side-effect.
+
+   Example:
+      Perform an unspecified test to determine if the current evolution is
+      not evolving fast enough, and if so, restart the evolution.
+
+      PGAContext *ctx;	    PGAEvaluateMS(ctx, PGA_OLDPOP, f, comm);
+	    PGAFitness   (ctx, PGA_OLDPOP);
+	    }
+
+      :
+      if (StagnantEvolution()) {
+          PGARestart(ctx, PGA_OLDPOP, PGA_NEWPOP);
+          PGAEvaluate(ctx, PGA_NEWPOP, EvalFunc);
+          PGAUpdateGeneration(ctx);
+      }
+
+****************************************************************************U*/
+void PGARestart(PGAContext *ctx, int source_pop, int dest_pop)
+{
+    /* For integers and reals, the amount by which to change is set with
+       PGASetMutationIntegerValue and PGASetMutationRealValue, respectively.
+       For binary strings, the bits are complemented. */
+
+    int dest_p, old_mut_type, source_p;
+    double val;
+    
+    PGADebugEntered("PGARestart");
+    
+    printf("Restarting the algorithm . . . \n");
+    fflush(stdout);
+    source_p = PGAGetBestIndex(ctx, source_pop);
+    if (source_p != 0 || source_pop != dest_pop)
+	PGACopyIndividual(ctx, source_p, source_pop, 0, dest_pop);
+    PGASetEvaluationUpToDateFlag(ctx, 0, dest_pop, PGA_FALSE);
+
+
+#define GEKCO_RESTART
+#ifdef  GEKCO_RESTART
+    for (dest_p = 1; dest_p < ctx->ga.PopSize; dest_p++){
+      PGACreateIndividual (ctx, dest_p, dest_pop, 1);
+      PGASetEvaluationUpToDateFlag(ctx, dest_p, dest_pop, PGA_FALSE);
+    }
+    /* not sure whether this really does something.... */
+    /* also generate an "new" old population */
+    PGACopyIndividual(ctx, source_p, source_pop, 0, source_pop);
+    PGASetEvaluationUpToDateFlag(ctx, 0, source_pop, PGA_FALSE);
+    for (dest_p = 1; dest_p < ctx->ga.PopSize; dest_p++){
+      PGACreateIndividual (ctx, dest_p, source_pop, 1);
+      PGASetEvaluationUpToDateFlag(ctx, dest_p, source_pop, PGA_FALSE);
+    }
+
+#else
+
+    old_mut_type = PGAGetMutationType(ctx);
+    ctx->ga.MutationType = PGA_MUTATION_UNIFORM;
+    val = ctx->ga.restartAlleleProb;
+    
+
+
+
+
+    if (ctx->fops.Mutation) {
+	for (dest_p = 2; dest_p <= ctx->ga.PopSize; dest_p++) {
+	    PGACopyIndividual(ctx, 0, dest_pop, dest_p-1, dest_pop);
+	    (*ctx->fops.Mutation)(&ctx, &dest_p, &dest_pop, &val);
+	    PGASetEvaluationUpToDateFlag(ctx, dest_p-1, dest_pop, PGA_FALSE);
+	}
+    } else {
+	for (dest_p = 1; dest_p < ctx->ga.PopSize; dest_p++) {
+	    PGACopyIndividual(ctx, 0, dest_pop, dest_p, dest_pop);
+	    (*ctx->cops.Mutation)(ctx, dest_p, dest_pop, val);
+	    PGASetEvaluationUpToDateFlag(ctx, dest_p, dest_pop, PGA_FALSE);
+	}
+    }
+    ctx->ga.MutationType = old_mut_type;
+#endif
+    
+    PGADebugExited("PGARestart");
+}
+
+/*U****************************************************************************
+  PGASetRestartFlag - specifies whether the algorithm should employ
+  the restart operator
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      val - boolean variable
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetRestartFlag(ctx, PGA_TRUE);
+
+****************************************************************************U*/
+void PGASetRestartFlag(PGAContext *ctx, int val)
+{
+    PGADebugEntered("PGASetRestartFlag");
+
+    switch (val)
+    {
+    case PGA_TRUE:
+    case PGA_FALSE:
+         ctx->ga.restart = val;
+         break;
+    default:
+         PGAError(ctx, "PGASetRestartFlag: Invalid value for restart:",
+                  PGA_FATAL, PGA_INT, (void *) &val);
+         break;
+    }
+
+    PGADebugExited("PGASetRestartFlag");
+}
+
+/*U****************************************************************************
+   PGAGetRestartFlag - returns whether the algorithm should employ the
+   restart operator
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      PGA_TRUE if restarting is enabled, otherwise PGA_FALSE.
+
+   Example:
+      PGAContext *ctx;
+      int val;
+      :
+      val = PGAGetRestartFlag(ctx);
+
+****************************************************************************U*/
+int PGAGetRestartFlag(PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRestartFlag");
+    PGAFailIfNotSetUp("PGAGetRestartFlag");
+
+    PGADebugExited("PGAGetRestartFlag");
+
+    return (ctx->ga.restart);
+}
+
+/*U****************************************************************************
+  PGASetRestartFrequencyValue - specifies the number of iterations of no
+  change in the best string after which the algorithm should restart
+
+  Category: Operators
+
+  Inputs:
+      ctx - context variable
+      numiter - number of changeless iterations
+
+  Outputs:
+      None
+
+  Example:
+      PGAContext *ctx;
+      :
+      PGASetRestartFrequencyValue(ctx, 100);
+
+****************************************************************************U*/
+void PGASetRestartFrequencyValue(PGAContext *ctx, int numiter)
+{
+    PGADebugEntered("PGASetRestartFrequencyValue");
+
+    if (numiter > 0)
+         ctx->ga.restartFreq = numiter;
+    else
+         PGAError(ctx, "PGASetRestartFrequencyValue: Invalid value for "
+                  "restart freqency:", PGA_FATAL, PGA_INT, (void *) &numiter);
+
+    PGADebugExited("PGASetRestartFrequencyValue");
+}
+
+/*U****************************************************************************
+  PGAGetRestartFrequencyValue - returns the number of iterations of no
+  change in the best string after which the algorithm should restart
+
+  Category: Operators
+
+  Inputs:
+      ctx     - context variable
+      numiter - number of changeless iterations
+
+  Outputs:
+      The number of iteration of no change required for a restart.
+
+  Example:
+      PGAContext *ctx;
+      :
+      numiter = PGAGetRestartFrequencyValue(ctx);
+
+****************************************************************************U*/
+int PGAGetRestartFrequencyValue(PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRestartFrequencyValue");
+    PGAFailIfNotSetUp("PGAGetRestartFrequencyValue");
+
+    PGADebugExited("PGAGetRestartFrequencyValue");
+
+    return (ctx->ga.restartFreq);
+}
+
+/*U****************************************************************************
+  PGASetRestartAlleleChangeProb - specifies the probability with which
+  an allele will be mutated during a restart
+
+  Category: Operators
+
+  Inputs:
+      ctx - context variable
+      prob - probability of mutation
+
+  Outputs:
+      None
+
+  Example:
+      PGAContext *ctx;
+      :
+      PGASetRestartAlleleChangeProb(ctx, 0.5);
+
+****************************************************************************U*/
+void PGASetRestartAlleleChangeProb(PGAContext *ctx, double prob)
+{
+    PGADebugEntered("PGASetRestartAlleleChangeProb");
+
+    if (prob >= 0.0 && prob <= 1.0)
+         ctx->ga.restartAlleleProb = prob;
+    else
+         PGAError(ctx, "PGASetRestartAlleleChangeProb: Invalid probability:",
+                  PGA_FATAL, PGA_DOUBLE, (void *) &prob);
+
+    PGADebugExited("PGASetRestartAlleleChangeProb");
+}
+
+/*U****************************************************************************
+  PGAGetRestartAlleleChangeProb - returns the probability with which
+  an allele will be mutated during a restart
+
+  Category: Operators
+
+  Inputs:
+      ctx - context variable
+
+  Outputs:
+      The probability of mutating an allele during a restart.
+
+  Example:
+      PGAContext *ctx;
+      :
+      prob = PGASetRestartAlleleChangeProb(ctx);
+
+****************************************************************************U*/
+double PGAGetRestartAlleleChangeProb(PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRestartAlleleChangeProb");
+    PGAFailIfNotSetUp("PGAGetRestartAlleleChangeProb");
+
+    PGADebugExited("PGAGetRestartAlleleChangeProb");
+
+    return (ctx->ga.restartAlleleProb);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/select.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/select.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/select.c	(revision 6168)
@@ -0,0 +1,502 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: select.c: This file contains the routines that have to do with
+*                     selection
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGASelect - performs genetic algorithm selection using either the default
+  selection scheme or that specified with PGASetSelectType().  Valid selection
+  methods are proportional, stochastic universal, tournament, or probabilistic
+  tournament selection, PGA_SELECT_PROPORTIONAL, PGA_SELECT_SUS, 
+  PGA_SELECT_TOURNAMENT, and PGA_SELECT_PTOURNAMENT, respectively.  This 
+  function updates an internal array with the indices of members of popix 
+  selected for recombination.  These indices may be accessed with 
+  PGASelectNextIndex()
+
+  Category: Operators
+
+  Inputs:
+    ctx   - context variable
+    popix - symbolic constant of population to select from
+
+  Outputs:
+    An array used by PGASelectNextIndex() is created which contains the
+    population indices of the selected individuals.
+
+  Example:
+    PGAContext *ctx,
+    :
+    PGASelect(ctx, PGA_OLDPOP);
+
+****************************************************************************U*/
+void PGASelect( PGAContext *ctx, int popix )
+{
+    int i;                   /* not to intefere with dummy argument        */
+    int j;                   /* random number                              */
+    int temp;                /* for shuffling selected indices US          */
+    PGAIndividual *pop;      /* pointer to appropriate population          */
+
+    PGADebugEntered("PGASelect");
+
+    pop = PGAGetIndividual(ctx, 0, popix);
+
+    switch (ctx->ga.SelectType) {
+
+    case PGA_SELECT_PROPORTIONAL:  /* proportional selection             */
+        for (i=0; i<ctx->ga.PopSize; i++)
+            ctx->ga.selected[i] = PGASelectProportional( ctx, pop );
+        break;
+    case PGA_SELECT_SUS:           /* stochastic universal selection     */
+        PGASelectSUS( ctx, pop );
+        break;
+    case PGA_SELECT_TOURNAMENT:    /* tournament selection               */
+        for (i=0; i<ctx->ga.PopSize; i++)
+            ctx->ga.selected[i] = PGASelectTournament( ctx, pop );
+        break;
+    case PGA_SELECT_PTOURNAMENT:   /* probabilistic tournament selection */
+        for (i=0; i<ctx->ga.PopSize; i++)
+            ctx->ga.selected[i] = PGASelectPTournament( ctx, pop );
+        break;
+    default:
+        PGAError( ctx,
+                 "PGASelect: Invalid value of SelectType:",
+                  PGA_FATAL,
+                  PGA_INT,
+                  (void *) &(ctx->ga.SelectType) );
+        break;
+    }
+
+    /* randomize selected string locations */
+    for (i=0; i<ctx->ga.PopSize; i++) {
+        j          = PGARandomInterval(ctx, 0,ctx->ga.PopSize-1);
+        temp       = ctx->ga.selected[j];
+        ctx->ga.selected[j] = ctx->ga.selected[i];
+        ctx->ga.selected[i] = temp;
+    }
+
+    PGADebugExited("PGASelect");
+}
+
+/*U****************************************************************************
+  PGASelectNextIndex - returns the index of next individual in
+  internal array that contains the indices determined by PGASelect
+
+  Category: Operators
+
+  Inputs:
+    ctx   - context variable
+
+  Outputs:
+    A population index for the next selected creature.
+
+  Example:
+    PGAContext *ctx;
+    int l;
+    :
+    l = PGASelectNextIndex(ctx, PGA_OLDPOP);
+
+****************************************************************************U*/
+int PGASelectNextIndex ( PGAContext *ctx )
+{
+    PGADebugEntered("PGASelectNextIndex");
+
+    if (ctx->ga.SelectIndex < ctx->ga.PopSize) {
+	PGADebugExited("PGASelectNextIndex");
+        return(ctx->ga.selected[ctx->ga.SelectIndex++]);
+    }
+
+    /*  Oops.  We never found the index.  Fatal error.  (return is here
+     *  so that compilers will be quiet.)
+     */
+    PGAError( ctx, "PGASelectNextIndex: SelectIndex >= ctx->ga.PopSize",
+             PGA_FATAL, PGA_INT, (void *) &ctx->ga.SelectIndex );
+    return(0);
+}
+
+/*U****************************************************************************
+   PGASetSelectType - specify the type of selection to use. Valid choices
+   are PGA_SELECT_PROPORTIONAL, PGA_SELECT_SUS, PGA_SELECT_TOURNAMENT, and
+   PGA_SELECT_PTOURNAMENT for proportional, stochastic universal selection,
+   tournament, and probabilistic tournament selection, respectively.  The
+   default is PGA_SELECT_TOURNAMENT.
+
+   Category: Operators
+
+   Inputs:
+      ctx         - context variable
+      select_type - symbolic constant to specify selection type
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetSelectType(ctx, PGA_SELECT_SUS);
+
+****************************************************************************U*/
+void PGASetSelectType( PGAContext *ctx, int select_type)
+{
+
+    PGADebugEntered("PGASetSelectType");
+
+    switch (select_type) {
+        case PGA_SELECT_PROPORTIONAL:
+        case PGA_SELECT_SUS:
+        case PGA_SELECT_TOURNAMENT:
+        case PGA_SELECT_PTOURNAMENT:
+            ctx->ga.SelectType = select_type;
+            break;
+        default:
+            PGAError ( ctx, "PGASetSelectType: Invalid value of select_type:",
+                      PGA_FATAL, PGA_INT, (void *) &select_type);
+        break;
+    }
+
+    PGADebugExited("PGASetSelectType");
+}
+
+/*U***************************************************************************
+   PGAGetSelectType - Returns the type of selection selected
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the type of selection specified
+
+   Example:
+      PGAContext *ctx;
+      int selecttype;
+      :
+      selecttype = PGAGetSelectType(ctx);
+      switch (selecttype) {
+      case PGA_SELECT_PROPORTIONAL:
+          printf("Selection Type = PGA_SELECT_PROPORTIONAL\n");
+          break;
+      case PGA_SELECT_SUS:
+          printf("Selection Type = PGA_SELECT_SUS\n");
+          break;
+      case PGA_SELECT_TOURNAMENT:
+          printf("Selection Type = PGA_SELECT_TOURNAMENT\n");
+          break;
+      case PGA_SELECT_PTOURNAMENT:
+          printf("Selection Type = PGA_SELECT_PTOURNAMENT\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetSelectType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetSelectType");
+    PGAFailIfNotSetUp("PGAGetSelectType");
+
+    PGADebugExited("PGAGetSelectType");
+
+    return(ctx->ga.SelectType);
+}
+
+
+/*U****************************************************************************
+   PGASetPTournamentProb - Specifies the probability that the string that wins
+   a binary tournament will be selected.  This function will have no effect
+   unless PGA_SELECT_PTOURNAMENT was specified as the type of selection to
+   use with PGASetSelectType.  The default value is 0.6.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      p   - the probability of selecting the better string
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetPTournamentProb(ctx,0.8);
+
+****************************************************************************U*/
+void PGASetPTournamentProb(PGAContext *ctx, double ptournament_prob)
+{
+    PGADebugEntered("PGASetPTournamentProb");
+
+    ctx->ga.PTournamentProb = ptournament_prob;
+
+    PGADebugExited("PGASetPTournamentProb");
+}
+
+/*U***************************************************************************
+   PGAGetPTournamentProb - returns the probability of selecting the best
+   string in a probabilistic binary tournament
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The probabilistic binary tournament selection probability
+
+   Example:
+      PGAContext *ctx;
+      double pt;
+      :
+      pt = PGAGetPTournamentProb(ctx);
+
+***************************************************************************U*/
+double PGAGetPTournamentProb(PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetPTournamentProb");
+    PGAFailIfNotSetUp("PGAGetPTournamentProb");
+
+    PGADebugExited("PGAGetPTournamentProb");
+
+     return ctx->ga.PTournamentProb;
+}
+
+
+/*I****************************************************************************
+  PGASelectProportional - selects a parent for the next generation using a
+  linear search through a (fitness) weighted ``roulette wheel''.  The
+  probability of selection is given by p_i = f_i/sum(i)f_i
+  Ref: D. Goldberg, Genetic Algorithms, pg.
+
+  Inputs:
+    ctx   - context variable
+    popix - symbolic constant of population to select from
+
+  Outputs:
+    index of the selected string
+
+  Example:
+    PGAContext *ctx,
+    int l;
+    :
+    l = PGASelectProportional(ctx, PGA_OLDPOP);
+
+****************************************************************************I*/
+int PGASelectProportional(PGAContext *ctx, PGAIndividual *pop)
+{
+    double sum, sumfitness, r;
+    int i;
+
+    PGADebugEntered("PGASelectProportional");
+
+    sumfitness = 0.0;
+    for (i=0; i<ctx->ga.PopSize; i++)
+        sumfitness += (pop+i)->fitness;
+
+    i = 0;
+    sum = (pop+i)->fitness;
+
+    r = sumfitness * PGARandom01(ctx, 0);
+    while(r > sum || i==ctx->ga.PopSize) {
+        i++;
+        sum += (pop+i)->fitness;
+    }
+
+    PGADebugExited("PGASelectProportional");
+
+    return(i);
+}
+
+/*I****************************************************************************
+  PGASelectSUS - A select routine using stochastic universal sampling
+  Ref:    J. Baker, Reducing Bias and Inefficiency in the Selection Algorithm.
+  Second GA conference, pp 14-21 (page 16)
+
+  Inputs:
+    ctx   - context variable
+    popix - symbolic constant of population to select from
+
+  Outputs:
+    the array ga.selected[] created via side effect.  I.e., this routine
+    creates the entire selected population with one call
+
+  Example:
+    PGAContext *ctx,
+    :
+    PGASelectSUS(ctx, PGA_OLDPOP);
+
+****************************************************************************I*/
+void PGASelectSUS( PGAContext *ctx, PGAIndividual *pop )
+{
+    int i;
+    int k;                          /* index to fill samples array    */
+    double davg;                    /* population average fitness     */
+    double sum;                     /* running sum of expected values */
+    double r;                       /* random number                  */
+
+    PGADebugEntered("PGASelectSUS");
+
+    /* fill the expected value array */
+    davg = 0.0;
+    for(i=0;i<ctx->ga.PopSize;i++)
+        davg += (pop+i)->fitness;
+    davg /=  (double) ctx->ga.PopSize;
+    for(i=0;i<ctx->ga.PopSize;i++)
+        ctx->scratch.dblscratch[i] = (pop+i)->fitness / davg;
+
+    /* select ctx->ga.PopSize as follows */
+    sum = 0;
+    k   = 0;
+    r   = PGARandom01(ctx, 0);
+    for(i=0;i<ctx->ga.PopSize;i++)
+        for( sum+=ctx->scratch.dblscratch[i]; sum>r; r++ )
+            ctx->ga.selected[k++] = i;
+
+    PGADebugExited("PGASelectSUS");
+}
+
+
+/*I****************************************************************************
+  PGASelectTournament - chooses two strings randomly and returns the one with
+  higher fitness
+  Ref:    D. Goldberg, Genetic Algorithms, pg. 121
+
+  Inputs:
+    ctx   - context variable
+    popix - symbolic constant of population to select from
+
+  Outputs:
+    index of the selected string
+
+  Example:
+    PGAContext *ctx,
+    int l;
+    :
+    l = PGASelectTournament(ctx, PGA_OLDPOP);
+
+****************************************************************************I*/
+int PGASelectTournament( PGAContext *ctx, PGAIndividual *pop )
+{
+    int m1, m2;
+
+    PGADebugEntered("PGASelectTournament");
+
+    m1 = PGARandomInterval(ctx, 0, ctx->ga.PopSize-1);
+    m2 = PGARandomInterval(ctx, 0, ctx->ga.PopSize-1);
+
+    PGADebugExited("PGASelectTournament");
+
+    return( ((pop+m1)->fitness > (pop+m2)->fitness) ? m1 : m2);
+}
+
+/*I****************************************************************************
+  PGASelectPTournament - chooses two strings randomly and returns the one with
+  higher fitness with a specified probability
+  Ref:    D. Goldberg, Genetic Algorithms, pg. 121
+
+  Inputs:
+    ctx   - context variable
+    popix - symbolic constant of population to select from
+
+  Outputs:
+    index of the selected string
+
+  Example:
+    PGAContext *ctx,
+    int l;
+    :
+    l = PGASelectPTournament(ctx, PGA_OLDPOP);
+
+****************************************************************************I*/
+int PGASelectPTournament( PGAContext *ctx, PGAIndividual *pop )
+{
+    int m1, m2;
+    int RetVal;
+
+    PGADebugEntered("PGASelectPTournament");
+
+    m1 = PGARandomInterval(ctx, 0, ctx->ga.PopSize-1);
+    m2 = PGARandomInterval(ctx, 0, ctx->ga.PopSize-1);
+
+    if ( (pop+m1)->fitness > (pop+m2)->fitness )
+        if ( (double) PGARandom01(ctx, 0) < ctx->ga.PTournamentProb )
+            RetVal = m1;
+        else
+            RetVal = m2;
+    else
+        if ( (double) PGARandom01(ctx, 0) < ctx->ga.PTournamentProb )
+            RetVal = m2;
+        else
+            RetVal = m1;
+
+    PGADebugExited("PGASelectPTournament");
+    return(RetVal);
+}
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/stop.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/stop.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/stop.c	(revision 6168)
@@ -0,0 +1,378 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: stop.c: This file contains routines related to the stopping
+*                   conditions for the GA.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGADone - Returns PGA_TRUE if the stopping conditions have been met,
+  otherwise returns false.  Calls exactly one of the user defined C or
+  fortran or system (PGACheckStoppingConditions) stopping condition functions.
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+     comm - an MPI communicator
+
+  Outputs:
+     returns PGA_TRUE if at least one of the termination conditions has been
+     met.  Otherwise, returns PGA_FALSE
+
+  Example:
+    PGAContext *ctx;
+    :
+    PGADone(ctx, comm);
+
+****************************************************************************U*/
+int PGADone(PGAContext *ctx, MPI_Comm comm)
+{
+    int rank, size, done;
+
+    PGADebugEntered("PGADone");
+
+    rank = PGAGetRank(ctx, comm);
+    size = PGAGetNumProcs(ctx, comm);
+
+    if (rank == 0) {
+	if (ctx->fops.StopCond)
+	    done = (*ctx->fops.StopCond)(&ctx);
+	else if (ctx->cops.StopCond)
+	    done = (*ctx->cops.StopCond)(ctx);
+	else
+	    done = PGACheckStoppingConditions(ctx);
+    }
+
+    if (size > 1)
+	MPI_Bcast(&done, 1, MPI_INT, 0, comm);
+
+    PGADebugExited("PGADone");
+
+    return(done);
+}
+
+/*U****************************************************************************
+  PGACheckStoppingConditions - returns boolean to indicate if the PGAPack
+  termination conditions -- PGA_STOP_MAXITER, PGA_STOP_TOOSIMILAR, 
+  PGA_STOP_NOCHANGE -- have been met.
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+
+  Outputs:
+     returns PGA_TRUE if at least one of the termination conditions has been
+     met.  Otherwise, returns PGA_FALSE
+
+  Example:
+    PGAContext *ctx;
+    :
+    PGACheckStoppingConditions(ctx);
+
+****************************************************************************U*/
+int PGACheckStoppingConditions( PGAContext *ctx)
+{
+    int done = PGA_FALSE;
+
+    PGADebugEntered("PGACheckStoppingConditions");
+
+    if (((ctx->ga.StoppingRule & PGA_STOP_MAXITER) == PGA_STOP_MAXITER) &&
+	(ctx->ga.iter > ctx->ga.MaxIter))
+	done |= PGA_TRUE;
+    
+    if (((ctx->ga.StoppingRule & PGA_STOP_NOCHANGE) == PGA_STOP_NOCHANGE) &&
+	(ctx->ga.ItersOfSame >= ctx->ga.MaxNoChange))
+	done |= PGA_TRUE;
+	
+    if (((ctx->ga.StoppingRule & PGA_STOP_TOOSIMILAR) == PGA_STOP_TOOSIMILAR) &&
+	(ctx->ga.PercentSame >= ctx->ga.MaxSimilarity))
+	done |= PGA_TRUE;
+
+    PGADebugExited("PGACheckStoppingConditions");
+    return(done);
+}
+
+/*U****************************************************************************
+   PGASetStoppingRuleType - specify a stopping criterion.  If called more than
+   once the different stopping criterion are ORed together.  Valid choices
+   are PGA_STOP_MAXITER, PGA_STOP_TOOSIMILAR, or PGA_STOP_NOCHANGE to
+   specify iteration limit reached, population too similar, or no change in
+   the best solution found in a given number of iterations, respectively.
+   The default is to stop when a maximum iteration limit is reached (by
+   default, 1000 iterations).
+
+   Category: Generation
+
+   Inputs:
+      ctx      - context variable
+      stoprule - symbolic constant to specify stopping rule
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetStoppingRuleType(ctx, PGA_STOP_TOOSIMILAR);
+
+****************************************************************************U*/
+void PGASetStoppingRuleType (PGAContext *ctx, int stoprule)
+{
+
+    PGADebugEntered("PGASetStoppingRuleType");
+    PGAFailIfSetUp("PGASetStoppingRuleType");
+
+    switch (stoprule) {
+	case PGA_STOP_MAXITER  :
+        case PGA_STOP_NOCHANGE :
+	case PGA_STOP_TOOSIMILAR :
+	    ctx->ga.StoppingRule |= stoprule;
+	    break;
+	default:
+	    PGAError( ctx,
+		     "PGASetStoppingRuleType: Invalid value of stoprule:",
+		     PGA_FATAL, PGA_INT, (void *) &stoprule );
+    }
+
+    PGADebugExited("PGASetStoppingRuleType");
+}
+
+/*U***************************************************************************
+   PGAGetStoppingRuleType - Returns a symbolic constant that defines the
+   termination criteria.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns an integer which is an ORed mask of the symbolic constants
+      used to specify the stopping rule(s).
+
+   Example:
+      PGAContext *ctx;
+      int stop;
+      :
+      stop = PGAGetStoppingRuleType(ctx);
+      if (stop & PGA_STOP_MAXITER)
+          printf("Stopping Rule = PGA_STOP_MAXITER\n");
+      if (stop & PGA_STOP_NOCHANGE)
+          printf("Stopping Rule = PGA_STOP_NOCHANGE\n");
+      if (stop & PGA_STOP_TOOSIMILAR)
+          printf("Stopping Rule = PGA_STOP_TOOSIMILAR\n");
+
+***************************************************************************U*/
+int PGAGetStoppingRuleType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetStoppingRuleType");
+    PGAFailIfNotSetUp("PGAGetStoppingRuleType");
+
+    PGADebugExited("PGAGetStoppingRuleType");
+
+    return(ctx->ga.StoppingRule);
+}
+
+/*U****************************************************************************
+   PGASetMaxGAIterValue - specify the maximum number of iterations for the
+   stopping rule PGA_STOP_MAXITER (which, by itself, is the default stopping
+   rule and is always in effect).  The default value is 1000 iterations.
+
+   Category: Generation
+
+   Inputs:
+      ctx     - context variable
+      maxiter - the maximum number of GA iterations to run before stopping
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMaxGAIterValue(ctx,5000);
+
+****************************************************************************U*/
+void PGASetMaxGAIterValue(PGAContext *ctx, int maxiter)
+{
+
+    PGADebugEntered("PGASetMaxGAIterValue");
+    PGAFailIfSetUp("PGASetMaxGAIterValue");
+
+    if (maxiter < 1)
+	PGAError( ctx, "PGASetMaxGAIterValue: Invalid value of maxiter:",
+		 PGA_FATAL, PGA_INT, (void *) &maxiter );
+    else
+	ctx->ga.MaxIter = maxiter;
+    
+    PGADebugExited("PGASetMaxGAIterValue");
+}
+
+/*U***************************************************************************
+   PGAGetMaxGAIterValue - Returns the maximum number of iterations to run
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The maximum number of iterations to run
+
+   Example:
+      PGAContext *ctx;
+      int maxiter;
+      :
+      maxiter = PGAGetMaxGAIterValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMaxGAIterValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMaxGAIterValue");
+    PGAFailIfNotSetUp("PGAGetMaxGAIterValue");
+
+    PGADebugExited("PGAGetMaxGAIterValue");
+
+    return(ctx->ga.MaxIter);
+}
+
+/*U****************************************************************************
+   PGASetMaxNoChangeValue - specifiy maximum number of iterations of no change
+   in the evaluation function value of the best string before stopping.  The
+   default value is 50.  The stopping rule PGA_STOP_NOCHANGE must have been
+   set by PGASetStoppingRuleType for this function call to have any effect.
+
+   Category: Generation
+
+   Inputs:
+      ctx     - context variable
+      maxiter - the maximum number of GA iterations allowed with no change
+                in the best evaluation function value.
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMaxGAIterValue(ctx,5000);
+
+****************************************************************************U*/
+void PGASetMaxNoChangeValue(PGAContext *ctx, int max_no_change)
+{
+    PGADebugEntered("PGASetMaxNoChangeValue");
+    PGAFailIfSetUp("PGASetMaxNoChangeValue");
+
+    if (max_no_change <= 0)
+	PGAError(ctx, "PGASetMaxNoChangeValue: max_no_change invalid",
+		 PGA_FATAL, PGA_INT, (void *)&max_no_change);
+    
+    ctx->ga.MaxNoChange = max_no_change;
+    
+    PGADebugExited("PGASetMaxNoChangeValue");
+}
+
+/*U****************************************************************************
+   PGASetMaxSimilarityValue - Specifiy the maximum percent of homogeneity of
+   the population before stopping.  The similarity measure is the same
+   evaluation function value.  The default value is 95 percent.  The stopping
+   rule PGA_STOP_TOOSIMILAR must have been set by PGASetStoppingRuleType for
+   this function call to have any effect.
+
+   Category: Generation
+
+   Inputs:
+      ctx            - context variable
+      max_similarity - the maximum percent of the population that can share
+                       the same evaluation function value
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMaxSimilarityValue(ctx,99);
+
+****************************************************************************U*/
+void PGASetMaxSimilarityValue(PGAContext *ctx, int max_similarity)
+{
+    PGADebugEntered("PGASetMaxSimilarityValue");
+    PGAFailIfSetUp("PGASetMaxSimilarityValue");
+
+    if ((max_similarity <= 0) || (max_similarity > 100))
+        PGAError(ctx, "PGASetMaxSimilarityValue: max_similarity invalid",
+                 PGA_FATAL, PGA_INT, (void *) &max_similarity);
+    
+    ctx->ga.MaxSimilarity = max_similarity;
+
+    PGADebugExited("PGASetMaxSimilarityValue");
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/system.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/system.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/system.c	(revision 6168)
@@ -0,0 +1,408 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: system.c: This file contains systme routines such as errors and
+*                     exits
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+char PGAProgram[100];    /* Holds argv[0] for PGAUsage() call */
+
+/*U****************************************************************************
+   PGAError - reports error messages.  Prints out the message supplied, and
+   the value of a piece of data.  Terminates if PGA_FATAL.
+
+   Category: System
+
+   Inputs:
+      ctx      - context variable
+      msg      - the error message to print
+      level    - PGA_WARNING or PGA_FATAL to indicate the error's severity
+      datatype - the data type of the following argument
+      data     - the address of the data to be written out, cast as a void
+                 pointer
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      int         val;
+      :
+      PGAError(ctx, "Some Non Fatal Error: val = ", PGA_WARNING, PGA_INT,
+               (void *) &val);
+      :
+      PGAError(ctx, "A Fatal Error!", PGA_FATAL, PGA_VOID, NULL);
+
+****************************************************************************U*/
+void PGAError( PGAContext *ctx, char *msg,
+               int level, int datatype, void *data )
+{
+
+    PGADebugEntered("PGAError");
+
+    switch (datatype) {
+      case PGA_INT:
+	fprintf(stderr, "%s %d\n", msg, *(int *)    data);
+	break;
+      case PGA_DOUBLE:
+	fprintf(stderr, "%s %f\n", msg, *(double *) data);
+	break;
+      case PGA_CHAR:
+	fprintf(stderr, "%s %s\n", msg,  (char *)   data);
+	break;
+      case PGA_VOID:
+	fprintf(stderr, "%s\n", msg);
+	break;
+    }
+    if ( level == PGA_FATAL ) {
+	fprintf(stderr, "PGAError: Fatal\n");
+	PGADestroy(ctx);
+	exit(-1);
+    }
+    PGADebugExited("PGAError");
+}
+
+/*U****************************************************************************
+  PGADestroy - deallocate memory for this instance of PGAPack, if this context
+  initialized MPI, finalize MPI as well.
+
+  Category: Generation
+
+  Inputs:
+     ctx   - context variable
+
+  Outputs:
+     None
+
+  Example:
+    PGAContext *ctx;
+    :
+    PGADestroy(ctx);
+
+****************************************************************************U*/
+void PGADestroy (PGAContext *ctx)
+{
+    int i;
+
+    PGADebugEntered("PGADestroy");
+
+    /*  These are allocated by PGASetUp.  Free then only if PGASetUp
+     *  was called.
+     */
+    if (ctx->sys.SetUpCalled == PGA_TRUE) {
+      /*  Free the population...fly little birdies!  You're FREE!!!  */
+      for ( i = 0; i < (ctx->ga.PopSize + 3); i++ ) {
+/**********************  EHW Project Modifications *******************/
+	PGADestroyUD(ctx,i,PGA_OLDPOP);
+	PGADestroyUD(ctx,i,PGA_NEWPOP);
+/**********************  EHW Project Modifications *******************/	
+        free ( ctx->ga.oldpop[i].chrom );
+        free ( ctx->ga.newpop[i].chrom );
+
+      }
+
+      free ( ctx->ga.oldpop );
+      free ( ctx->ga.newpop );
+
+
+      /*  Free the scratch space.  */
+      free ( ctx->scratch.intscratch );
+      free ( ctx->scratch.dblscratch );
+      free ( ctx->ga.selected );
+      free ( ctx->ga.sorted );
+    }
+
+
+
+    /*  These are allocated by PGACreate  */
+    if (ctx->ga.datatype == PGA_DATATYPE_REAL)
+      {
+        free ( ctx->init.RealMax );
+        free ( ctx->init.RealMin );
+      }
+    else if (ctx->ga.datatype == PGA_DATATYPE_INTEGER)
+      {
+        free ( ctx->init.IntegerMax );
+        free ( ctx->init.IntegerMin );
+      }
+
+
+
+    /*  We want to finalize MPI only if it was not started for us (as
+     *  fortran would do) AND it is actually running.  It would not be
+     *  running if, for example, -pgahelp is specified on the command
+     *  line.
+     */
+    MPI_Initialized(&i);
+    if ((ctx->par.MPIAlreadyInit == PGA_FALSE) && i)
+      MPI_Finalize();
+
+    /*  We really should perform a PGADebugPrint here, but we can't;
+     *  we've already deallocated most of the stuff we need!!
+     */
+    free ( ctx );
+
+
+}
+
+/************* EHW ADDITION **********/
+/************  It destroys the User Data *******/
+void PGADestroyUD(PGAContext *ctx, int p,int pop)
+{
+  PGAIndividual *ind;
+
+ 
+  if(ctx->cops.DestroyUD == NULL)
+  { /* Conventional Destruction */
+    ind=PGAGetIndividual(ctx,p,pop);
+    free(ind->UserData); 
+  }else{
+    (ctx->cops.DestroyUD)(ctx,p,pop);
+  }
+
+}
+
+
+
+/*U***************************************************************************
+   PGAGetMaxMachineIntValue - returns the largest integer of the current
+   machine
+
+   Category: System
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The largest integer of the given machine
+
+   Example:
+      PGAContext *ctx;
+      int intmax;
+      :
+      intmax = PGAGetMaxMachineIntValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMaxMachineIntValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMaxMachineIntValue");
+
+    PGADebugExited("PGAGetMaxMachineIntValue");
+
+    return(ctx->sys.PGAMaxInt);
+}
+
+/*U***************************************************************************
+   PGAGetMaxMachineIntValue - returns the smallest integer of the current
+   machine
+
+   Category: System
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The smallest integer of the given machine
+
+   Example:
+      PGAContext *ctx;
+      int intmin;
+      :
+      intmin = PGAGetMinMachineIntValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMinMachineIntValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMinMachineIntValue");
+
+    PGADebugExited("PGAGetMinMachineIntValue");
+
+    return(ctx->sys.PGAMinInt);
+}
+
+/*U***************************************************************************
+   PGAGetMaxMachineDoubleValue - returns the largest double of the current
+   machine
+
+   Category: System
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The largest double of the given machine
+
+   Example:
+      PGAContext *ctx;
+      double big;
+      :
+      big = PGAGetMaxMachineDoubleValue(ctx);
+
+***************************************************************************U*/
+double PGAGetMaxMachineDoubleValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMaxMachineDoubleValue");
+
+    PGADebugExited("PGAGetMaxMachineDoubleValue");
+
+    return(ctx->sys.PGAMaxDouble);
+}
+
+/*U***************************************************************************
+   PGAGetMaxMachineDoubleValue - returns the smallest double of the current
+   machine
+
+   Category: System
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The smallest double of the given machine
+
+   Example:
+      PGAContext *ctx;
+      double small;
+      :
+      small = PGAGetMinMachineDoubleValue(ctx);
+
+***************************************************************************U*/
+double PGAGetMinMachineDoubleValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMinMachineDoubleValue");
+
+    PGADebugExited("PGAGetMinMachineDoubleValue");
+
+    return(ctx->sys.PGAMinDouble);
+}
+
+
+/*U****************************************************************************
+   PGAUsage - print list of available parameters and quit
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+     list of available parametersNone
+
+   Example:
+      PGAContext ctx;
+      :
+      PGAUsage(ctx);
+
+****************************************************************************U*/
+void PGAUsage( PGAContext *ctx )
+{
+    /*  Print the usage info out if MPI isn't running (thus, only one process
+     *  is probably running), or if we actually are the master.
+     */
+    if (!ctx->par.MPIAlreadyInit || (PGAGetRank(ctx, MPI_COMM_WORLD) == 0)) {
+	PGAPrintVersionNumber( ctx );
+	printf("PGAPack usage: %s [pga options]\n", PGAProgram);
+	printf("Valid PGAPack options:\n");
+	printf("\t-pgahelp          \tget this message\n");
+	printf("\t-pgahelp debug    \tlist of debug options\n");
+	printf("\t-pgadbg <option>  \tset debug option\n");
+	printf("\t-pgadebug <option>\tset debug option\n");
+	printf("\t-pgaversion       \tprint current PGAPack version number\n");
+	printf("\n");
+    }
+    PGADestroy(ctx);
+    exit(-1);
+}
+
+/*U****************************************************************************
+   PGAPrintVersionNumber - print PGAPack version number
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      PGAPack version number
+
+   Example:
+      PGAContext ctx;
+      :
+      PGAPrintVersionNumber(ctx);
+
+****************************************************************************U*/
+void PGAPrintVersionNumber( PGAContext *ctx )
+{
+    if (!ctx->par.MPIAlreadyInit || (PGAGetRank(ctx, MPI_COMM_WORLD) == 0)) {
+        printf("\nPGAPack version 1.0: (%s, %s)\n\n",
+	       (OPTIMIZE)                ? "Optimized"  : "Debug",
+#ifdef FAKE_MPI
+               "Sequential");
+#else
+               "Parallel");
+#endif               
+    }
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/user.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/user.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/user.c	(revision 6168)
@@ -0,0 +1,289 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: user.c: This file contains a function to set user functions.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGASetUserFunction - specifies the name of a user-written function
+   call to provide a specific GA capability (e.g., crossover,
+   mutation, etc.).  This function MUST be used when using a non-native
+   datatype and must be called once for each of:
+       PGA_USERFUNCTION_CREATESTRING     -- String creation
+       PGA_USERFUNCTION_MUTATION         -- Mutation
+       PGA_USERFUNCTION_CROSSOVER        -- Crossover
+       PGA_USERFUNCTION_PRINTSTRING      -- String Output
+       PGA_USERFUNCTION_COPYSTRING       -- Duplication
+       PGA_USERFUNCTION_DUPLICATE        -- Duplicate Checking
+       PGA_USERFUNCTION_INITSTRING       -- Initialization
+       PGA_USERFUNCTION_BUILDDATATYPE    -- MPI Datatype creation
+       PGA_USERFUNCTION_STOPCOND         -- Stopping conditions
+       PGA_USERFUNCTION_ENDOFGEN         -- Auxiliary functions at the end
+                                            of each generation
+   It MAY be called when using a native datatype to replace the built-in
+   functions PGAPack has for that datatype (For example, if the Integer data
+   type is used for a traveling salesperson problem, the user may want to
+   provide their own custom crossover operator).  See the user guide and the
+   examples in the examples directory for more details.
+
+   Category: Generation
+
+   Inputs:
+      ctx      - context variable
+      constant - symbolic constant of the user function to set
+      f        - name of the function to use
+
+   Outputs:
+      None
+
+   Example:
+      void MyStringInit(PGAContext *, void *);
+      PGAContext *ctx;
+      :
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING, MyStringInit);
+
+****************************************************************************U*/
+void PGASetUserFunction(PGAContext *ctx, int constant, void *f)
+{
+    PGADebugEntered("PGASetUserFunction");
+
+    if (f == NULL)
+	PGAError ( ctx, "PGASetUserFunction: Invalid function",
+		  PGA_FATAL, PGA_VOID, NULL);
+
+    switch (constant) {
+      case PGA_USERFUNCTION_CREATESTRING:
+	if (ctx->sys.UserFortran) 
+	    PGAError(ctx, "PGASetUserFunction: Cannot call "
+		     "PGA_USERFUNCTION_CREATESTRING from Fortran.",
+		     PGA_FATAL, PGA_VOID, NULL);
+	else
+	    ctx->cops.CreateString = (void(*)(PGAContext *, int, int, int))f;
+	break;
+      case PGA_USERFUNCTION_MUTATION:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.Mutation = (int(*)(void *, void *, void *, void *))f;
+	else
+	    ctx->cops.Mutation = (int(*)(PGAContext *, int, int, double))f;
+	break;
+      case PGA_USERFUNCTION_CROSSOVER:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.Crossover = (void(*)(void *, void *, void *, void *, void *, void *, void *))f;
+	else
+	    ctx->cops.Crossover =  (void(*)(PGAContext *, int, int, int, int, int, int))f;
+	break;
+      case PGA_USERFUNCTION_PRINTSTRING:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.PrintString = (void(*)(void *, void *, void *, void *))f;
+	else
+	    ctx->cops.PrintString =  (void(*)(PGAContext *, FILE *, int, int))f;
+	break;
+      case PGA_USERFUNCTION_COPYSTRING:
+	if (ctx->sys.UserFortran) 
+	    PGAError(ctx, "PGASetUserFunction: Cannot call "
+		     "PGA_USERFUNCTION_COPYSTRING from Fortran.",
+		     PGA_FATAL, PGA_VOID, NULL);
+	else
+	    ctx->cops.CopyString = (void(*)(PGAContext *, int, int, int, int))f;
+	break;
+      case PGA_USERFUNCTION_DUPLICATE:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.Duplicate = (int(*)(void *, void *, void *, void *, void *))f;
+	else
+	    ctx->cops.Duplicate = (int(*)(PGAContext *, int, int, int, int))f;
+	break;
+      case PGA_USERFUNCTION_INITSTRING:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.InitString = (void(*)(void *, void *, void *))f;
+	else
+	    ctx->cops.InitString = (void(*)(PGAContext *, int, int))f;
+	break;
+      case PGA_USERFUNCTION_BUILDDATATYPE:
+	if (ctx->sys.UserFortran) 
+	    PGAError(ctx, "PGASetUserFunction: Cannot call "
+		     "PGA_USERFUNCTION_BUILDDATATYPE from Fortran.",
+		     PGA_FATAL, PGA_VOID, NULL);
+	else
+	    ctx->cops.BuildDatatype = (MPI_Datatype(*)(PGAContext *, int, int))f;
+	break;
+      case PGA_USERFUNCTION_STOPCOND:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.StopCond = (int(*)(void *))f;
+	else
+	    ctx->cops.StopCond = (int(*)(PGAContext *))f;
+	break;
+      case PGA_USERFUNCTION_ENDOFGEN:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.EndOfGen = (void(*)(void *))f;
+	else
+	    ctx->cops.EndOfGen = (void(*)(PGAContext *))f;
+	break;
+      case PGA_USERFUNCTION_RANKING:
+        if (ctx->sys.UserFortran)
+            ctx->fops.Rank = (void(*)(void *, void *))f;
+        else
+            ctx->cops.Rank = (void(*)(PGAContext *, int))f;
+        break;
+      case PGA_USERFUNCTION_FITNESS:
+        if (ctx->sys.UserFortran)
+            ctx->fops.Fitness = (void(*)(void *, void*))f;
+        else
+            ctx->cops.Fitness = (void(*)(PGAContext *, int))f;
+        break;
+      case PGA_USERFUNCTION_SELECT:
+        if (ctx->sys.UserFortran)
+            ctx->fops.Select = (void(*)(void *, void*))f;
+        else
+            ctx->cops.Select = (void(*)(PGAContext *, int))f;
+        break;
+/*********************************************/
+/* new added by Lu Yang */
+      case PGA_USERFUNCTION_SORTPOP:
+	if(ctx->sys.UserFortran)
+	    ctx->fops.SortPop = (void(*)(void *,void *))f;
+	else
+	    ctx->cops.SortPop = (void(*)(PGAContext *,int))f;
+	break;
+/*********************************************/
+      case PGA_USERFUNCTION_SETTEMP:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.SetTemp = (void(*)(void *))f;
+	else
+	    ctx->cops.SetTemp = (void(*)(PGAContext *))f;
+	break;
+      case PGA_USERFUNCTION_ENDOFREPFCN:
+	if(ctx->sys.UserFortran)
+	    ctx->fops.EndOfRepFcn = (void(*)(void *,void *,void *))f;
+	else
+	    ctx->cops.EndOfRepFcn = (void(*)(PGAContext *,int ,int))f;
+	break;
+	    
+ 
+     case PGA_USERFUNCTION_INITUSERCTX:
+         if (ctx->sys.UserFortran) 
+           ctx->fops.InitUserCtx = (void(*)(void *))f;
+         else 
+           ctx->cops.InitUserCtx = (void(*)(PGAContext *))f;
+         break;
+ 
+      case PGA_USERFUNCTION_KILLUSERCTX:
+       if (ctx->sys.UserFortran) 
+           ctx->fops.KillUserCtx = (void(*)(void *))f;
+       else
+           ctx->cops.KillUserCtx = (void(*)(PGAContext *))f;
+       break;
+ 
+
+
+
+      case PGA_USERFUNCTION_DESTROYUD:
+	if(ctx->sys.UserFortran)
+	    ctx->fops.DestroyUD  = (void(*)(void *,void *,void *))f;
+	else
+	    ctx->cops.DestroyUD  = (void(*)(PGAContext *,int ,int))f;
+	break;
+
+      default:
+	PGAError(ctx, "PGASetUserFunction: Invalid constant:",
+		 PGA_FATAL, PGA_INT, (void *) &constant);
+	break;
+    }
+
+    PGADebugExited("PGASetUserFunction");
+}
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function returns the size of the user data vector in all    */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+int PGAGetSizeUD(PGAContext *ctx)
+{
+  return ctx->ga.sUD ;
+}
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function sets the size of the user data vector in all       */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void PGASetSizeUD(PGAContext *ctx,int s)
+{
+  ctx->ga.sUD = s;
+}
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function gets the user data vector in all                   */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void *PGAGetUD(PGAContext *ctx,int s,int pop)
+{
+  return PGAGetIndividual(ctx,s,pop)->UserData;
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/utility.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/utility.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/source/utility.c	(revision 6168)
@@ -0,0 +1,649 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: utility.c: This file contains routines that perform utility
+*                      functions.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include <pgapack.h>
+
+/*U****************************************************************************
+  PGAMean - calculates the mean value of an array of elements
+
+  Category: Utility
+
+  Inputs:
+    ctx  - context variable
+    a    - array to take the mean of
+    n    - number of elements in array a
+
+  Outputs:
+    The mean of the n elements in array a
+
+  Example:
+    PGAContext *ctx;
+    double a[100], mean;
+    :
+    mean = PGAMean(ctx, a, 100);
+
+****************************************************************************U*/
+double PGAMean ( PGAContext *ctx, double *a, int n)
+{
+    int i;
+    double result;
+
+    PGADebugEntered("PGAMean");
+
+    result = 0.;
+    for( i=n-1; i>=0; i-- )
+        result += a[i];
+
+    PGADebugExited("PGAMean");
+
+    return (result / (double) n );
+}
+
+
+/*U****************************************************************************
+  PGAStddev - calculates the standard deviation of an array of elements
+
+  Category: Utility
+
+  Inputs:
+    ctx  - context variable
+    a    - array to take the standard deviation of
+    n    - number of elements in array a
+    mean - the mean of the elements in array a
+
+  Outputs:
+    The standard deviation of the n elements in array a
+
+  Example:
+    PGAContext *ctx;
+    double a[100], mean, sigma;
+    :
+    mean  = PGAMean(ctx, a, 100);
+    sigma = PGAStddev(ctx, a, 100, mean);
+
+****************************************************************************U*/
+double PGAStddev ( PGAContext *ctx, double *a, int n, double mean)
+{
+    int i;
+    double result;
+
+    PGADebugEntered("PGAStddev");
+
+    result = 0;
+    for(i=n-1; i>=0; i--)
+        result += (a[i] - mean) * (a[i] - mean);
+    result  = sqrt(result/n);
+
+    PGADebugExited("PGAStddev");
+    return (result);
+}
+
+/*U****************************************************************************
+  PGARound - Mathematically round a double to an integer, using 0.5 as the
+  cutoff value.
+
+  Category: Utility
+
+  Inputs:
+     ctx - context variable
+     x - the number to be rounded
+
+  Outputs:
+     The rounded number.
+
+  Example:
+     PGAContext *ctx;
+     int y;
+     y = PGARound(ctx, -78.6);
+
+****************************************************************************U*/
+int PGARound(PGAContext *ctx, double x)
+{
+    double ipart, frac;
+
+    PGADebugEntered("PGARound");
+
+    frac = modf(x, &ipart);
+    if (frac <= -0.5)
+      ipart--;
+    else if (frac >= 0.5)
+      ipart++;
+
+    PGADebugExited("PGARound");
+
+    return ((int)ipart);
+}
+
+/*U****************************************************************************
+  PGACopyIndividual - copies string p1 in population pop1 to position p2 in
+  population pop2
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+     p1   - string to copy
+     pop1 - symbolic constant of population containing string p1
+     p2   - string to copy p1 to
+     pop2 - symbolic constant of population containing string p2
+
+  Outputs:
+     String p2 is an exact copy of string p1.
+
+  Example:
+    PGAContext *ctx;
+    int i,j;
+    :
+    PGACopyIndividual(ctx, i, PGA_OLDPOP, j, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGACopyIndividual( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+    PGAIndividual *source, *dest;
+
+    PGADebugEntered("PGACopyIndividual");
+
+    source = PGAGetIndividual ( ctx, p1, pop1 );
+    dest   = PGAGetIndividual ( ctx, p2, pop2 );
+
+    dest->evalfunc     = source->evalfunc;
+    dest->fitness      = source->fitness;
+    dest->evaluptodate = source->evaluptodate;
+
+    (*ctx->cops.CopyString)(ctx, p1, pop1, p2, pop2);
+
+    PGADebugExited("PGACopyIndividual");
+}
+
+/*U****************************************************************************
+  PGACheckSum - maps a string to a number to be used a verification check
+  PGA_DATATYPE_USER is not supported.
+
+  Category: Utility
+
+  Inputs:
+     ctx    - context variable
+     p      - string index
+     pop    - symbolic constant for the population
+
+  Outputs:
+     An integer representing the "value" of the string.
+
+  Example:
+     PGAContext *ctx;
+     int p, sum;
+     :
+     sum = PGACheckSum(ctx, p, PGA_NEWPOP);
+
+****************************************************************************U*/
+int PGACheckSum(PGAContext *ctx, int p, int pop)
+{
+    long stringlen, totalchars, charbits, i, j, checksum, totalbytes, out_bit;
+    unsigned char *message, specimen;
+
+    PGADebugEntered("PGACheckSum");
+
+    stringlen = PGAGetStringLength(ctx);
+    switch (ctx->ga.datatype) {
+      case PGA_DATATYPE_BINARY:
+        totalbytes = ctx->ga.tw * sizeof(PGABinary);
+        break;
+      case PGA_DATATYPE_INTEGER:
+        totalbytes = stringlen * sizeof(PGAInteger);
+        break;
+      case PGA_DATATYPE_REAL:
+        totalbytes = stringlen * sizeof(PGAReal);
+        break;
+      case PGA_DATATYPE_CHARACTER:
+        totalbytes = stringlen * sizeof(PGACharacter);
+        break;
+      default:
+        totalbytes = 0;
+        PGAError(ctx, "PGACheckSum: User datatype checksum may be invalid.",
+                 PGA_WARNING, PGA_VOID, NULL);
+        break;
+      }
+
+    message = (unsigned char *)PGAGetIndividual(ctx, p, pop)->chrom;
+    totalchars = totalbytes / sizeof(unsigned char);
+    charbits = sizeof(unsigned char) * 8;
+    checksum = 0;
+    for (i = 0; i < totalchars; i++) {
+      specimen = *(message + i);
+      for (j = 0; j < charbits; j++) {
+        out_bit = (checksum & 0x80000000) == 1;
+        checksum = (checksum << 1) + ((specimen & 0x80) == 0x80);
+        if (out_bit)
+          checksum ^= 0x04c11db7;
+        specimen <<= 1;
+      }
+    }
+
+    PGADebugExited("PGACheckSum");
+
+    return (checksum);
+}
+
+/*U***************************************************************************
+  PGAGetWorstIndex - returns the index of the string with the worst
+  evaluation function value in population pop
+
+  Category: Utility
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population to find the worst string in
+
+  Outputs:
+     Index of the string with the worst evaluation function value
+
+  Example:
+     PGAContext *ctx;
+     int worst;
+     :
+     worst = PGAGetWorstIndex(ctx,PGA_OLDPOP);
+
+***************************************************************************U*/
+int PGAGetWorstIndex(PGAContext *ctx, int pop)
+{
+    int     p, worst_indx = 0;
+    double  eval, worst_eval;
+
+    PGADebugEntered("PGAGetWorstIndex");
+
+    for (p = 0; p < ctx->ga.PopSize; p++)
+	if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop))
+	    PGAError(ctx, "PGAGetWorstIndex: Evaluate function not up to "
+		     "date:", PGA_FATAL, PGA_INT, (void *) &p);
+
+    worst_eval = PGAGetEvaluation(ctx, 0, pop);
+    switch (PGAGetOptDirFlag(ctx)) {
+    case PGA_MAXIMIZE:
+	for (p = 1; p < ctx->ga.PopSize; p++) {
+	    eval = PGAGetEvaluation(ctx, p, pop);
+	    if (eval < worst_eval) {
+		worst_indx = p;
+		worst_eval = eval;
+	    }
+	}
+	break;
+
+    case PGA_MINIMIZE:
+	for (p = 1; p < ctx->ga.PopSize; p++) {
+	    eval = PGAGetEvaluation(ctx, p, pop);
+	    if (eval > worst_eval) {
+		worst_indx = p;
+		worst_eval = eval;
+	    }
+	}
+	break;    
+    }
+
+    PGADebugExited("PGAGetWorstIndex");
+
+    return (worst_indx);
+}
+
+/*U***************************************************************************
+  PGAGetBestIndex - returns the index of the string with the best evaluation
+  function value in population pop
+
+  Category: Utility
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population to find the best string in
+
+  Outputs:
+     Index of the string with the best evaluation function value
+
+  Example:
+     PGAContext *ctx;
+     int best;
+     :
+     best = PGAGetBestIndex(ctx,PGA_OLDPOP);
+
+***************************************************************************U*/
+int PGAGetBestIndex(PGAContext *ctx, int pop)
+{
+     int     p, Best_indx = 0;
+     double  eval, Best_eval;
+
+    PGADebugEntered("PGAGetBestIndex");
+     
+     for (p = 0; p < ctx->ga.PopSize; p++)
+	 if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop))
+	     PGAError(ctx, "PGAGetBestIndex: Evaluate function not up to "
+		      "date:", PGA_FATAL, PGA_INT, (void *) &p);
+     
+     Best_eval = PGAGetEvaluation(ctx, 0, pop);
+
+     switch (PGAGetOptDirFlag(ctx)) {
+     case PGA_MAXIMIZE :
+	 for (p = 1; p < ctx->ga.PopSize; p++) {
+	     eval = PGAGetEvaluation(ctx, p, pop);
+	     if (eval > Best_eval) {
+		 Best_indx = p;
+		 Best_eval = eval;
+	     }
+	 }
+	 break;
+     case PGA_MINIMIZE :
+	 for (p = 1; p < ctx->ga.PopSize; p++) {
+	     eval = PGAGetEvaluation(ctx, p, pop);
+	     if (eval < Best_eval) {
+		 Best_indx = p;
+		 Best_eval = eval;
+	     }
+	 }
+	 break;
+     }
+     
+    PGADebugExited("PGAGetBestIndex");
+
+     return (Best_indx);
+}
+
+
+/*I****************************************************************************
+  PGAGetIndividual - translate string index and population symbolic constant
+  into pointer to an individual
+
+  Inputs:
+     ctx - context variable
+     p   - string index
+     pop - symbolic constant of the population the string is in
+
+  Outputs:
+     Address of the PGAIndividual structure for string p in population pop
+
+  Example:
+    PGAIndividual *source;
+    PGAContext *ctx;
+    int p;
+    :
+    source = PGAGetIndividual ( ctx, p, PGA_NEWPOP );
+
+****************************************************************************I*/
+PGAIndividual *PGAGetIndividual ( PGAContext *ctx, int p, int pop)
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAGetIndividual");
+
+#ifdef OPTIMIZE
+    ind = (pop == PGA_OLDPOP) ? ctx->ga.oldpop : ctx->ga.newpop;
+
+    if (p>=0)
+      ind += p;
+    else
+      {
+      if(p== PGA_TEMP1)
+	ind += (ctx->ga.PopSize);
+      else if(p==PGA_TEMP2)
+	ind += (ctx->ga.PopSize) + 1;
+      else if(p==PGA_TEMP3)
+	ind += (ctx->ga.PopSize) + 2;
+
+    }
+#else
+    if (pop == PGA_OLDPOP)
+      ind = ctx->ga.oldpop;
+    else
+      if (pop == PGA_NEWPOP)
+	ind = ctx->ga.newpop;
+      else
+        PGAError(ctx, "PGAGetIndividual: Invalid value of pop:",
+		 PGA_FATAL, PGA_INT, (void *) &pop );
+
+    if (p>0 && p<ctx->ga.PopSize)
+      ind += p;
+    else
+      if (p == PGA_TEMP1)
+	ind += (ctx->ga.PopSize);
+      else if (p == PGA_TEMP2)
+	  ind += (ctx->ga.PopSize) + 1;
+      else if (p == PGA_TEMP3)
+	  ind += (ctx->ga.PopSize) + 2;
+      else
+	  PGAError(ctx, "PGAGetIndividual: Invalid value of p:",
+		   PGA_FATAL, PGA_INT, (void *) &p );
+#endif
+
+    PGADebugExited("PGAGetIndividual");
+
+    return(ind);
+}
+
+
+/*I****************************************************************************
+   PGAUpdateAverage - Updates the average fitness statistic for reporting.
+
+   Inputs:
+       ctx - context variable
+       pop - symbolic constant of the population
+
+   Outputs:
+
+   Example:
+
+**************************************************************************I*/
+void PGAUpdateAverage(PGAContext *ctx, int pop)
+{
+    double ThisGensTotal = 0;
+    int p;
+
+    PGADebugEntered("PGAUpdateAverage");
+    
+    for (p = 0; p < ctx->ga.PopSize; p++)
+	if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop))
+	    PGAError(ctx, "PGAUpdateOnline: Evaluate function not up to "
+		     "date:", PGA_FATAL, PGA_INT, (void *) &p);
+
+    for (p = 0; p < ctx->ga.PopSize; p++)
+	ThisGensTotal += PGAGetEvaluation(ctx, p, pop);
+    
+    ctx->rep.Average = ThisGensTotal / (double)ctx->ga.PopSize;
+    
+    PGADebugExited("PGAUpdateAverage");
+}
+
+
+/*I****************************************************************************
+  PGAUpdateOnline - Updates the online value based on the results in
+  the new generation
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population whose statistics to use
+
+  Outputs:
+     Updates an internal field in the context variable
+
+  Example:
+     PGAContext *ctx;
+     :
+     PGAUpdateOnline(ctx,PGA_NEWPOP);
+
+**************************************************************************I*/
+void PGAUpdateOnline(PGAContext *ctx, int pop)
+{
+     double ThisGensTotal = 0;
+     int p;
+
+    PGADebugEntered("PGAUpdateOnline");
+
+     for (p = 0; p < ctx->ga.PopSize; p++)
+          if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop))
+               PGAError(ctx, "PGAUpdateOnline: Evaluate function not up to "
+                        "date:", PGA_FATAL, PGA_INT, (void *) &p);
+
+     for (p = 0; p < ctx->ga.PopSize; p++)
+          ThisGensTotal += PGAGetEvaluation(ctx, p, pop);
+
+     PGADebugPrint(ctx, PGA_DEBUG_PRINTVAR, "PGAUpdateOnline",
+                   "ThisGensTotal = ", PGA_DOUBLE, (void *) &ThisGensTotal);
+
+     ctx->rep.Online = (ctx->rep.Online * ctx->ga.PopSize * (ctx->ga.iter - 1)
+                        + ThisGensTotal) / ctx->ga.iter / ctx->ga.PopSize;
+
+    PGADebugExited("PGAUpdateOnline");
+
+}
+
+/*I****************************************************************************
+  PGAUpdateOffline - Updates the offline value based on the results in
+  the new generation
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population whose statistics to use
+
+  Outputs:
+     Updates an internal field in the context variable
+
+  Example:
+     PGAContext *ctx;
+     :
+     PGAUpdateOffline(ctx,PGA_NEWPOP);
+
+**************************************************************************I*/
+void PGAUpdateOffline(PGAContext *ctx, int pop)
+{
+     int p;
+
+    PGADebugEntered("PGAUpdateOffline");
+
+     for (p = 0; p < ctx->ga.PopSize; p++)
+          if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop))
+               PGAError(ctx, "PGAUpdateOffline: Evaluate function not up to "
+                        "date:", PGA_FATAL, PGA_INT, (void *) &p);
+
+     p = PGAGetBestIndex(ctx, pop);
+
+     ctx->rep.Offline = ((ctx->ga.iter - 1) * ctx->rep.Offline +
+                         PGAGetEvaluation(ctx, p, pop)) / ctx->ga.iter;
+
+    PGADebugExited("PGAUpdateOffline");
+}
+
+/*I****************************************************************************
+  PGAComputeSimilarity - computes the percentage of the population that have
+  the same evaluation function
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population whose statistics to use
+
+  Outputs:
+     returns a count of the number of  population members that have the same
+     evaluation function value
+
+  Example:
+     PGAContext *ctx;
+     :
+     PGAComputeSimilarity(ctx,PGA_NEWPOP);
+
+**************************************************************************I*/
+int PGAComputeSimilarity(PGAContext *ctx, PGAIndividual *pop)
+{
+     int max = 0, curr = 1, i;
+     double prev;
+
+    PGADebugEntered("PGAComputeSimilarity");
+
+     for(i=0; i < ctx->ga.PopSize; i++)
+     {
+          ctx->scratch.dblscratch[i] = (pop + i)->evalfunc;
+          ctx->scratch.intscratch[i] = i;
+     }
+
+     PGADblHeapSort(ctx, ctx->scratch.dblscratch, ctx->scratch.intscratch,
+                    ctx->ga.PopSize);
+
+     prev = ctx->scratch.dblscratch[0];
+
+     for(i = 1; i < ctx->ga.PopSize; i++)
+     {
+          if (ctx->scratch.dblscratch[i] == prev)
+               curr++;
+          else
+          {
+               if (curr > max)
+                    max = curr;
+               curr = 1;
+          }
+     }
+
+    PGADebugExited("PGAComputeSimilarity");
+
+     return(100 * max / ctx->ga.PopSize);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/Makefile.in	(revision 6168)
@@ -0,0 +1,27 @@
+CC          = @CC@
+FC          = @FC@
+PRECFLAGS   = @CFLAGS@
+PREFFLAGS   = @FFLAGS@
+CPPFLAGS    = @CPPFLAGS@
+RM          = @RM@
+LDFLAGS     = @LDFLAGS@
+SHELL       = @SHELL@
+
+#    "$@" expands to the target; "$?" expands to the dependency list
+CFLAGS      = -o $@ $? $(PRECFLAGS)
+FFLAGS      = -o $@ $? $(PREFFLAGS)
+
+LINK.c      = @echo "  Compiling $@" ; $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+LINK.f      = @if test -n "$(FC)"; \
+                  then echo "  Compiling $@" ; $(FC) $(FFLAGS) $(LDFLAGS); \
+              else \
+                  echo "$@: Fortran compiler unavailable"; fi
+
+default:
+	@make instverf 
+
+instverf: instverf.c
+	$(LINK.c)
+
+clean: 
+	@$(RM) instverf instverf.o
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/README	(revision 6168)
@@ -0,0 +1,45 @@
+This is the test directory README.
+
+instverf:
+--------
+
+A simple program to test the accuracy of an installation.  It runs five
+distinct genetic algorithms, and stores the results from each.  After all
+five are run, it will compare the computed results to those known to be
+correct, stored on disk as "instverf.data".  If any errors are found, the
+problem number is reported.
+
+The problems tested are
+	0:	Binary datatype
+	1:	Integer datatype
+	2:	Character datatype
+	3:	Real datatype
+	4:	Binary datatype using PGAGetRealFrom*
+
+
+SanityChecks:
+------------
+
+Contains several programs designed to test the sanity of PGAPack.  Under
+normal circumstances, they should not be needed.  ST_* will call most
+every PGAPack function.  PT_* will test the parallel code -- it must
+be run with at least three processors!
+This directory contains several programs that exist only to test the
+sanity of PGAPack.  They are very useful for testing the fortran to C
+interface, and that sending and receiving strings work.
+
+ST_c.c and ST_f.f simply call (most) every function in PGAPack.  They
+also run several GA's which do nothing other than use every type of
+crossover and mutation for each native datatype.
+
+PT_c.c and PT_f.f test high-level stuff.  It tests (not in this order) if
+sending/receiving of strings works, PGARun, PGARunGM, PGARunIM and PGARunNM
+(the last two aren't implemented yet, though), and a user defined
+run routine.  A real version of MPI _MUST_ be used for PT_c and PT_f.
+
+instverf.c will run several GA's, one for each native datatype, and check
+the output computed versus that stored on disk.  If any differences are
+found, it will give a warning.
+
+These programs are the development testing suite.
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/instverf.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/instverf.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/instverf.c	(revision 6168)
@@ -0,0 +1,467 @@
+/*  Example program that shows how to run more than one GA in one
+ *  executable, _AND_ verifies the accuracy of installation.
+ *
+ *  We will run five distinct GA's, each using a different datatype, and,
+ *  thus, a different evaluation function.  The correct output of these GA's
+ *  is in instverf.data, which we read and compare after all GA's are done.
+ *
+ *  The correct solution for #4 and #5 is somewhere around 4.49339389176 for
+ *  the genes, and an evaluation value of around -6.951476096.
+ *
+ *  Author:  Brian P. Walenz
+ */
+#include <pgapack.h>
+
+
+double maxbit(PGAContext *, int, int);
+double ordering(PGAContext *, int, int);
+double name(PGAContext *, int, int);
+double function(PGAContext *, int, int);
+double functionb(PGAContext *, int, int);
+
+/*  The user defined functions.
+ *
+ *  O_* --> for the Ordering problem (integer), problem 2
+ *  N_* --> for the Name problem (character), problem 3
+ *  R_* --> for the real problem, problem 4
+ *  Rb_* -> for the real problem using the binary datatype, problem 5
+ */
+void EOG(PGAContext *);
+int  O_Mutate(PGAContext *, int, int, double);
+void O_Crossover(PGAContext *, int, int, int, int, int, int);
+int  N_Mutate(PGAContext *, int, int, double);
+int  N_StopCond(PGAContext *);
+void R_Init(PGAContext *, int, int);
+void Rb_Init(PGAContext *, int, int);
+void Rb_PrintString(PGAContext *, FILE *, int, int);
+
+char      String[65] = 
+          "THEQUICKBROWNFOXJUMPESOVERTHELAZYDOGWHILETHEOLDGOOSELOOKSPUZZLED";
+double    Results[5][1001];
+int       ResultsIndex;
+
+/*  How often to print, and the size (in bits) of each number in a binary
+ *  string (used by problem 5)
+ */
+#define   PRINTFREQ  100
+#define   RBS        24
+
+int main(int argc, char **argv) {
+    PGAContext     *ctx;
+    int             i, rank;
+    FILE           *ResultsFile;
+    double          R[5];
+    int             E[5];
+
+
+    /*  Even though we aren't doing I/O, we MUST initialize MPI ourselves.
+     *  If we don't, the first call to PGADestroy will finalize MPI, and
+     *  the MPI standard does not allow any MPI calls after that (even
+     *  if it is MPI_Init())!
+     */
+    MPI_Init(&argc, &argv);
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    
+    /*  All examples use a common custom end of generation function to 
+     *  stuff the best of generation evaluation into an array.
+     */
+
+
+    /*  Our first example is the ever-popular maxbit.  As usual, it is
+     *  very simple, not even setting PGAPack options!  Plus, we use a
+     *  very odd string length, 999, which is not divisible by 16, 32 or
+     *  64!  What an excellent test!
+     */
+    ResultsIndex = 0;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 999, PGA_MAXIMIZE);
+    PGASetRandomSeed(ctx, 42);
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,  (void *)EOG);
+    PGASetUp(ctx);
+    PGARun(ctx, maxbit);
+    PGADestroy(ctx);
+
+    /*  Second on the menu is a delicious integer ordering function.
+     *  This uses custom mutation and crossover, but permutation
+     *  initialization.  The objective is to order all alleles in the
+     *  integer datatype in an increasing fashion.
+     */
+    ResultsIndex = 1;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_INTEGER, 64, PGA_MAXIMIZE);
+    PGASetRandomSeed(ctx, 42);
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,  (void *)O_Mutate);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER, (void *)O_Crossover);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,  (void *)EOG);
+    PGASetIntegerInitPermute(ctx, 0, 63);
+    PGASetUp(ctx);
+    PGARun(ctx, ordering);
+    PGADestroy(ctx);
+
+
+    /*  Third, and least interesting, is the character maximizer.
+     *  Much like name, it uses custom mutation and stopping conditions.
+     */
+    ResultsIndex = 2;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_CHARACTER, 64, PGA_MAXIMIZE);
+    PGASetRandomSeed(ctx, 42); 
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,  (void *)N_Mutate);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_STOPCOND,  (void *)N_StopCond);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,  (void *)EOG);
+    PGASetCharacterInitType(ctx, PGA_CINIT_UPPER);
+    PGASetUp(ctx);
+    PGARun(ctx, name);
+    PGADestroy(ctx);
+
+
+    /*  And, finally, the last of the day.  A simple real-valued function
+     *  optimizer.  Uses custom init string.
+     */
+    ResultsIndex = 3;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_REAL, 32, PGA_MINIMIZE);
+    PGASetRandomSeed(ctx, 42); 
+    PGASetMutationType(ctx, PGA_MUTATION_CONSTANT);
+    PGASetMutationRealValue(ctx, .1); 
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetMutationProb(ctx, 0.1);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,  (void *)R_Init);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,    (void *)EOG);
+    PGASetUp(ctx);
+    PGARun(ctx, function);
+    PGADestroy(ctx);
+
+
+    /*  Encore, encore!  Fine.  We will now perform the last number
+     *  using the binary datatype and PGAGetRealFromBinary alternating
+     *  with PGAGetRealFromGrayCode.
+     */
+    ResultsIndex = 4;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 32*RBS, PGA_MINIMIZE);
+    PGASetRandomSeed(ctx, 42); 
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,  (void *)Rb_Init);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING, (void *)Rb_PrintString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,    (void *)EOG);
+    PGASetUp(ctx);
+    PGARun(ctx, functionb);
+    PGADestroy(ctx);
+
+
+    /*  Compare the Results with the correct values
+     *  stored in "./test/data/Results.data"
+     */
+    if (rank == 0) {
+	ResultsFile = fopen("instverf.data", "r");
+	if (ResultsFile) {
+	    E[0] = E[1] = E[2] = E[3] = E[4] = 0;
+	    
+	    for (i=1; i<1001; i++) {
+#if 0
+		/*  This is used to generate the results file... */
+		printf("%12.6f %12.6f %12.6f %12.6f %12.6f\n",
+		       Results[0][i], Results[1][i], Results[2][i],
+		       Results[3][i], Results[4][i]);
+#endif
+		fscanf(ResultsFile, "%lf %lf %lf %lf %lf",
+		       R, R+1, R+2, R+3, R+4);
+		if (fabs(R[0] - Results[0][i]) > 0.001)   E[0]++;
+		if (fabs(R[1] - Results[1][i]) > 0.001)   E[1]++;
+		if (fabs(R[2] - Results[2][i]) > 0.001)   E[2]++;
+		if (fabs(R[3] - Results[3][i]) > 0.001)   E[3]++;
+		if (fabs(R[4] - Results[4][i]) > 0.001)   E[4]++;
+	    }
+	    fclose(ResultsFile);
+	    for (i=0; i<5; i++) {
+		if (E[i])
+		    printf("Test %d had %d errors.\n", i, E[i]);
+		else
+		    printf("Test %d was successful.\n", i);
+	    }
+	} else {
+	    fprintf(stderr, "Couldn't open \"instverf.data\".\n");
+	}
+    }
+
+    MPI_Finalize();
+
+    return 0;
+}
+
+
+/******************************************************************************
+ *
+ *  The fitness functions
+ *
+ *****************************************************************************/
+double maxbit(PGAContext *ctx, int p, int pop) {
+    int i, result;
+
+    result = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) 
+	if (PGAGetBinaryAllele(ctx, p, pop, i) == 1)
+	    result = result + 1;
+
+    return((double)result);
+}
+
+
+/*  Award points if two alleles are increasing (i.e., gene = .., 1, 2, ..)
+ *  and if any allele is in the correct spot (i.e., gene = 1, 2, 3, 4, ...)
+ */
+double ordering(PGAContext *ctx, int p, int pop) {
+    int i, n, o, len, result;
+
+    len = PGAGetStringLength(ctx);
+
+    result = 0;
+    o = PGAGetIntegerAllele(ctx, p, pop, 0);
+    if (o == 0)
+	result = 2;
+    for (i=1; i<len; i++) {
+	n = PGAGetIntegerAllele(ctx, p, pop, i);
+	if (o == n-1)
+	    result = result + 1;
+	if (n = i)
+	    result = result + 2;
+	o = n;
+    }
+
+    return((double)result);
+}
+
+double name(PGAContext *ctx, int p, int pop) {
+    int  i, result;
+
+    result = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+	if (PGAGetCharacterAllele(ctx, p, pop, i) == String[i])
+	    result = result + 1;
+
+    return((double)result);
+}
+
+
+double function(PGAContext *ctx, int p, int pop) {
+    int    i;
+    double x, result;
+
+    result = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	x = PGAGetRealAllele(ctx, p, pop, i);
+	result = result + sin(x) / x;
+    }
+
+    return(result);
+}
+
+
+double functionb(PGAContext *ctx, int p, int pop) {
+    int    i;
+    double x, result;
+
+    result = 0;
+    i = PGAGetStringLength(ctx)/RBS - 1;
+
+    for ( ; i>=0; i--) {
+	if (i % 2) {
+	    x = PGAGetRealFromBinary
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	} else {
+	    x = PGAGetRealFromGrayCode
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	}
+	result = result + sin(x) / x;
+    }
+    return(result);
+}
+
+
+
+/**********************************************************************/
+void EOG(PGAContext *ctx) {
+    int     best, iter;
+    double  besteval;
+
+
+    
+    iter = PGAGetGAIterValue(ctx);
+    if(!iter)
+      return;
+    best = PGAGetBestIndex(ctx, PGA_NEWPOP);
+    besteval = PGAGetEvaluation(ctx, best, PGA_NEWPOP);
+
+    Results[ResultsIndex][iter] = besteval;
+}
+
+
+
+/**********************************************************************/
+int O_Mutate(PGAContext *ctx, int p, int pop, double mr) {
+    int i, a, b, len;
+ 
+    len = PGAGetStringLength(ctx);
+    
+    a = PGARandomInterval(ctx, 0, len-1);
+    b = PGARandomInterval(ctx, 0, len-1);
+
+    i = PGAGetIntegerAllele(ctx, p, pop, a);
+    PGASetIntegerAllele(ctx, p, pop, a,
+			PGAGetIntegerAllele(ctx, p, pop, b));
+    PGASetIntegerAllele(ctx, p, pop, b, i);
+    return(1);
+}
+
+/*  Crossover:  Ripped from tsp.c  */
+void O_Crossover(PGAContext *ctx, int A, int B, int ppop,
+		 int C, int D, int cpop) {
+    int     co1, co2, i, len, a, b;
+    int     inA[64], inB[64];
+
+    len = PGAGetStringLength(ctx);
+
+    /*  Select random crossover points from [1, len-1].  */
+    co1 = PGARandomInterval(ctx, 1, len-1);
+    while (co1 == (co2 = PGARandomInterval(ctx, 1, len-1))) ;
+    if (co1 > co2) {
+        i = co1;
+        co1 = co2;
+        co2 = i;
+    }
+
+    /*  Copy a->c and b->d up to the first crossover point. */
+    for (i=0; i<co1; i++) {
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        PGASetIntegerAllele(ctx, C, cpop, i, a);
+        PGASetIntegerAllele(ctx, D, cpop, i, b);
+    }
+    
+    /*  Copy a->c and b->d from the second co point to the end of the
+     *  string.  (Yes, we're ignoring the middle for now.)
+     */
+    for (i=co2; i<len; i++) {
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        PGASetIntegerAllele(ctx, C, cpop, i, a);
+        PGASetIntegerAllele(ctx, D, cpop, i, b);
+    }
+    
+    /*  Now, copy a->d and b->c in the middle (co1 <--> co2).  We must
+     *  be careful to not use any cities twice, thus, we must check
+     *  the rest of the string to see if the allele is used.  If it is,
+     *  change the allele to that of the corresponding one in the other
+     *  string, and check again.  For efficiency, we build a couple of
+     *  tables, AtoB and BtoA.
+     */
+    for (i=0; i<len; i++) {
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        inA[a] = i;
+        inB[b] = i;
+    }
+    
+    for (i=co1; i<co2; i++) {
+        /*  While what we picked is outside the crossover region
+         *  in the other string, keep cross-referencing.
+         */
+	b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        while ((inA[b]<co1) || (inA[b]>=co2)) 
+	    b = PGAGetIntegerAllele(ctx, B, ppop, inA[b]);
+
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        while ((inB[a]<co1) || (inB[a]>=co2)) 
+	    a = PGAGetIntegerAllele(ctx, A, ppop, inB[a]);
+
+        PGASetIntegerAllele(ctx, C, cpop, i, b);
+        PGASetIntegerAllele(ctx, D, cpop, i, a);
+    }
+}
+
+
+
+/**********************************************************************/
+int N_Mutate(PGAContext *ctx, int p, int pop, double mr) {
+    int i, count;
+
+    count = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	if ((PGAGetCharacterAllele(ctx, p, pop, i) != String[i]) &&
+	    (PGARandomFlip(ctx, mr) == PGA_TRUE)) {
+	    PGASetCharacterAllele(ctx, p, pop, i, String[i]);
+	    count += 1;
+	}
+    }
+    return(count);
+}
+
+int N_StopCond(PGAContext *ctx) {
+    int     done, len;
+    double  e;
+
+    done = 0;
+    len  = PGAGetStringLength(ctx);
+    e    = PGAGetEvaluation(ctx, PGAGetBestIndex(ctx, PGA_OLDPOP), PGA_OLDPOP);
+
+    if (PGACheckStoppingConditions(ctx) || (len == e))
+	done = 1;
+
+    return(done);
+}
+
+
+/**********************************************************************/
+void R_Init(PGAContext *ctx, int p, int pop) {
+    int     i;
+    double  r;
+    
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	r = 6.28318530718 * PGARandom01(ctx, 0) - 3.14159265354;
+      	r = 6.28318530718 * exp(r) / (exp(r) + exp(-r));
+
+	PGASetRealAllele(ctx, p, pop, i, r);
+    }
+}
+
+void Rb_Init(PGAContext *ctx, int p, int pop) {
+    int     i;
+    double  r;
+    
+    i = PGAGetStringLength(ctx) / RBS - 1;
+
+    for ( ; i>=0; i--) {
+	r = 6.28318530718 * PGARandom01(ctx, 0) - 3.14159265354;
+      	r = 6.28318530718 * exp(r) / (exp(r) + exp(-r));
+
+	if (i % 2) {
+	    PGAEncodeRealAsBinary
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718, r);
+	} else {
+	    PGAEncodeRealAsGrayCode
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718, r);
+	}
+    }
+}
+
+void Rb_PrintString(PGAContext *ctx, FILE *file, int p, int pop) {
+    int     i, j, len;
+    double  r;
+
+    len = PGAGetStringLength(ctx) / RBS - 1;
+
+    for(i=j=0; i<len; i++, j++) {
+	if (i % 2) {
+	    r = PGAGetRealFromBinary
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	} else {
+	    r = PGAGetRealFromGrayCode
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	}
+	fprintf(file, "  %10.6f", r);
+	if (j==5) {
+	    fprintf(file, "\n");
+	    j = -1;
+	}
+    }
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/instverf.data
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/instverf.data	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/instverf.data	(revision 6168)
@@ -0,0 +1,1000 @@
+  545.000000   131.000000     7.000000     5.830600     5.830600
+  545.000000   131.000000     7.000000     5.830600     5.830600
+  545.000000   131.000000     7.000000     5.830600     3.095786
+  545.000000   131.000000     9.000000     5.830600     3.095786
+  545.000000   131.000000     9.000000     5.824771     3.095786
+  547.000000   131.000000     9.000000     5.824771     3.095786
+  551.000000   131.000000     9.000000     5.169932     3.095786
+  551.000000   131.000000     9.000000     5.169932     3.095786
+  551.000000   132.000000     9.000000     5.169932     3.095786
+  560.000000   132.000000     9.000000     5.169932     3.095786
+  560.000000   132.000000    11.000000     4.910874     3.095786
+  560.000000   132.000000    11.000000     4.726827     2.112962
+  560.000000   132.000000    11.000000     4.726827     2.112962
+  560.000000   132.000000    11.000000     4.234707     2.112962
+  560.000000   132.000000    11.000000     2.552202     2.112962
+  560.000000   132.000000    12.000000     2.552202     2.112962
+  560.000000   132.000000    12.000000     2.552202     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241089
+  561.000000   133.000000    12.000000     2.265484     0.618203
+  563.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484    -0.359117
+  577.000000   134.000000    13.000000     2.265484    -0.359117
+  577.000000   134.000000    13.000000    -1.347096    -0.460710
+  577.000000   134.000000    13.000000    -1.347096    -0.460710
+  577.000000   134.000000    14.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  578.000000   134.000000    16.000000    -1.347096    -0.460710
+  578.000000   134.000000    16.000000    -1.347096    -0.460710
+  583.000000   134.000000    16.000000    -1.347096    -0.460710
+  583.000000   134.000000    16.000000    -1.347096    -0.460710
+  583.000000   134.000000    16.000000    -1.347096    -0.622914
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   135.000000    19.000000    -1.347096    -0.663377
+  583.000000   135.000000    19.000000    -1.347096    -0.663377
+  583.000000   135.000000    19.000000    -1.347096    -0.663377
+  583.000000   135.000000    20.000000    -1.347096    -0.663377
+  587.000000   135.000000    20.000000    -1.347096    -0.663377
+  588.000000   135.000000    20.000000    -1.347096    -0.663377
+  588.000000   135.000000    20.000000    -1.347096    -0.666536
+  588.000000   135.000000    20.000000    -1.347096    -0.666536
+  588.000000   135.000000    20.000000    -1.402374    -0.666536
+  588.000000   135.000000    20.000000    -1.405540    -0.701919
+  588.000000   135.000000    20.000000    -1.516927    -0.701919
+  588.000000   135.000000    20.000000    -1.516927    -0.701919
+  588.000000   136.000000    20.000000    -1.516927    -0.701919
+  588.000000   136.000000    20.000000    -1.516927    -0.811475
+  588.000000   136.000000    21.000000    -1.516927    -0.811475
+  588.000000   136.000000    21.000000    -1.516927    -0.811475
+  588.000000   136.000000    21.000000    -1.518980    -0.811475
+  588.000000   136.000000    21.000000    -1.644250    -0.811475
+  591.000000   136.000000    21.000000    -1.644250    -0.811475
+  591.000000   136.000000    21.000000    -1.710707    -0.811475
+  591.000000   136.000000    21.000000    -1.717394    -0.811753
+  591.000000   136.000000    23.000000    -1.717394    -0.811753
+  591.000000   136.000000    23.000000    -1.725584    -0.811753
+  591.000000   136.000000    23.000000    -1.725584    -0.811753
+  591.000000   137.000000    23.000000    -1.749264    -0.823944
+  591.000000   137.000000    23.000000    -1.749264    -0.823944
+  591.000000   137.000000    24.000000    -1.749264    -0.823944
+  594.000000   137.000000    24.000000    -1.766108    -0.888304
+  595.000000   137.000000    24.000000    -1.766108    -0.888304
+  596.000000   137.000000    24.000000    -1.825106    -0.888304
+  596.000000   137.000000    24.000000    -1.825106    -0.888458
+  596.000000   138.000000    24.000000    -1.825106    -0.888458
+  596.000000   138.000000    24.000000    -1.991414    -0.891112
+  596.000000   138.000000    25.000000    -1.991414    -0.995596
+  596.000000   138.000000    25.000000    -1.991414    -0.995596
+  596.000000   138.000000    25.000000    -1.991414    -0.995596
+  598.000000   138.000000    25.000000    -1.991414    -0.995596
+  598.000000   138.000000    25.000000    -1.991414    -0.995596
+  598.000000   138.000000    26.000000    -1.991414    -0.995596
+  599.000000   138.000000    26.000000    -1.996462    -0.995596
+  599.000000   138.000000    26.000000    -2.038102    -0.995596
+  599.000000   138.000000    26.000000    -2.038102    -0.995596
+  599.000000   139.000000    26.000000    -2.038102    -0.995596
+  599.000000   139.000000    26.000000    -2.232807    -0.995596
+  599.000000   139.000000    26.000000    -2.232807    -0.995596
+  599.000000   139.000000    26.000000    -2.232807    -1.147490
+  599.000000   139.000000    26.000000    -2.232807    -1.147490
+  599.000000   139.000000    26.000000    -2.232807    -1.147490
+  599.000000   140.000000    27.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    30.000000    -2.615528    -1.147490
+  601.000000   140.000000    30.000000    -2.615528    -1.177010
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    32.000000    -2.615528    -1.266449
+  601.000000   141.000000    32.000000    -2.615528    -1.266449
+  601.000000   141.000000    32.000000    -2.615528    -1.266449
+  603.000000   141.000000    32.000000    -2.615528    -2.087184
+  603.000000   141.000000    32.000000    -2.615528    -2.087184
+  603.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  606.000000   141.000000    33.000000    -2.615528    -2.087184
+  606.000000   141.000000    33.000000    -2.615528    -2.087184
+  606.000000   142.000000    34.000000    -2.653765    -2.087184
+  606.000000   142.000000    34.000000    -2.809304    -2.087184
+  608.000000   142.000000    34.000000    -3.005066    -2.087184
+  608.000000   142.000000    34.000000    -3.005066    -2.087184
+  608.000000   142.000000    34.000000    -3.005066    -2.134288
+  608.000000   142.000000    34.000000    -3.005066    -2.134288
+  608.000000   142.000000    34.000000    -3.005066    -2.215644
+  608.000000   142.000000    35.000000    -3.005066    -2.215644
+  609.000000   142.000000    35.000000    -3.005066    -2.231666
+  609.000000   143.000000    35.000000    -3.005066    -2.231666
+  609.000000   143.000000    36.000000    -3.005066    -2.231666
+  609.000000   143.000000    36.000000    -3.005066    -2.231666
+  609.000000   143.000000    36.000000    -3.005066    -2.258783
+  609.000000   143.000000    36.000000    -3.005066    -2.360126
+  609.000000   143.000000    36.000000    -3.031497    -2.360126
+  609.000000   143.000000    36.000000    -3.031497    -2.360126
+  610.000000   143.000000    36.000000    -3.031497    -2.403671
+  610.000000   143.000000    36.000000    -3.144883    -2.403671
+  610.000000   143.000000    36.000000    -3.144883    -2.489972
+  611.000000   143.000000    36.000000    -3.144883    -2.489972
+  611.000000   143.000000    36.000000    -3.144883    -2.489972
+  611.000000   143.000000    37.000000    -3.144883    -2.489972
+  612.000000   144.000000    37.000000    -3.144883    -2.490465
+  612.000000   144.000000    37.000000    -3.144883    -2.645446
+  612.000000   144.000000    37.000000    -3.144883    -2.645446
+  612.000000   144.000000    37.000000    -3.319494    -2.645446
+  612.000000   145.000000    37.000000    -3.319494    -2.645446
+  612.000000   145.000000    38.000000    -3.319494    -2.645446
+  613.000000   145.000000    38.000000    -3.319494    -2.645446
+  613.000000   145.000000    38.000000    -3.319494    -2.645450
+  613.000000   145.000000    38.000000    -3.319494    -2.645450
+  613.000000   145.000000    38.000000    -3.319494    -2.645450
+  613.000000   145.000000    38.000000    -3.319494    -2.773906
+  613.000000   145.000000    38.000000    -3.319494    -2.773906
+  613.000000   145.000000    39.000000    -3.319494    -2.776500
+  614.000000   145.000000    39.000000    -3.319494    -2.776907
+  614.000000   145.000000    39.000000    -3.441136    -2.776907
+  614.000000   145.000000    39.000000    -3.441136    -2.776907
+  614.000000   145.000000    39.000000    -3.490688    -2.776907
+  615.000000   145.000000    41.000000    -3.490688    -2.777277
+  615.000000   145.000000    41.000000    -3.490688    -2.780465
+  615.000000   145.000000    41.000000    -3.495495    -2.780465
+  615.000000   145.000000    41.000000    -3.495495    -2.787853
+  615.000000   146.000000    41.000000    -3.495495    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    42.000000    -3.615383    -2.787853
+  616.000000   147.000000    43.000000    -3.615383    -2.787867
+  616.000000   147.000000    43.000000    -3.615383    -2.787867
+  616.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.842833
+  617.000000   147.000000    43.000000    -3.753140    -2.919868
+  617.000000   147.000000    43.000000    -3.819071    -2.919868
+  617.000000   147.000000    43.000000    -3.819071    -2.919868
+  617.000000   147.000000    44.000000    -3.819071    -2.919868
+  619.000000   147.000000    44.000000    -3.819071    -2.919868
+  619.000000   148.000000    44.000000    -3.819071    -2.919868
+  619.000000   148.000000    44.000000    -3.834996    -2.919868
+  619.000000   148.000000    44.000000    -3.834996    -2.919868
+  619.000000   148.000000    44.000000    -3.834996    -2.919868
+  619.000000   148.000000    45.000000    -3.851305    -2.919868
+  619.000000   148.000000    45.000000    -3.851305    -2.919868
+  619.000000   148.000000    45.000000    -3.905956    -2.919868
+  619.000000   148.000000    45.000000    -3.905956    -2.920624
+  619.000000   148.000000    45.000000    -3.905956    -2.920624
+  619.000000   148.000000    45.000000    -3.905956    -2.920624
+  620.000000   148.000000    45.000000    -3.908264    -2.931201
+  620.000000   148.000000    45.000000    -3.975791    -2.931201
+  620.000000   148.000000    45.000000    -3.975791    -2.931201
+  620.000000   148.000000    45.000000    -4.192530    -2.931201
+  620.000000   148.000000    45.000000    -4.376775    -2.985771
+  620.000000   148.000000    45.000000    -4.376775    -2.985771
+  620.000000   148.000000    45.000000    -4.376775    -2.985800
+  621.000000   148.000000    45.000000    -4.376775    -2.985800
+  621.000000   149.000000    45.000000    -4.376775    -2.985800
+  623.000000   149.000000    45.000000    -4.376775    -2.985800
+  623.000000   149.000000    46.000000    -4.376775    -2.985800
+  623.000000   149.000000    46.000000    -4.430660    -2.985800
+  623.000000   149.000000    46.000000    -4.430660    -2.985800
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    47.000000    -4.430660    -2.995691
+  623.000000   149.000000    47.000000    -4.430660    -2.995691
+  623.000000   150.000000    47.000000    -4.430660    -3.058951
+  623.000000   150.000000    47.000000    -4.430660    -3.113522
+  623.000000   150.000000    47.000000    -4.430660    -3.124098
+  623.000000   150.000000    47.000000    -4.430660    -3.124098
+  623.000000   150.000000    47.000000    -4.454581    -3.124098
+  623.000000   150.000000    47.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.460662    -3.124098
+  623.000000   150.000000    48.000000    -4.460662    -3.124098
+  624.000000   150.000000    48.000000    -4.460662    -3.124098
+  624.000000   150.000000    48.000000    -4.473634    -3.124098
+  625.000000   150.000000    48.000000    -4.473634    -3.124098
+  625.000000   150.000000    48.000000    -4.473634    -3.130948
+  625.000000   150.000000    48.000000    -4.473634    -3.130948
+  625.000000   150.000000    49.000000    -4.473634    -3.130948
+  625.000000   150.000000    49.000000    -4.473634    -3.130948
+  625.000000   150.000000    49.000000    -4.540714    -3.130948
+  625.000000   150.000000    49.000000    -4.540714    -3.130967
+  625.000000   150.000000    49.000000    -4.540714    -3.130967
+  626.000000   150.000000    49.000000    -4.540714    -3.130967
+  627.000000   151.000000    49.000000    -4.540714    -3.130967
+  627.000000   151.000000    49.000000    -4.540714    -3.130967
+  627.000000   151.000000    49.000000    -4.540714    -3.138881
+  627.000000   151.000000    50.000000    -4.540714    -3.138881
+  627.000000   151.000000    50.000000    -4.540714    -3.138881
+  627.000000   151.000000    50.000000    -4.544082    -3.138881
+  627.000000   151.000000    50.000000    -4.571606    -3.138881
+  627.000000   151.000000    50.000000    -4.571606    -3.138881
+  627.000000   151.000000    50.000000    -4.584436    -3.138881
+  627.000000   151.000000    50.000000    -4.584436    -3.138881
+  627.000000   151.000000    50.000000    -4.584436    -3.149418
+  627.000000   151.000000    50.000000    -4.608382    -3.169051
+  628.000000   151.000000    50.000000    -4.608382    -3.169051
+  628.000000   151.000000    50.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.659364    -3.169051
+  629.000000   151.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.681538    -3.779496
+  629.000000   152.000000    51.000000    -4.681538    -3.779496
+  630.000000   152.000000    52.000000    -4.681538    -3.779496
+  630.000000   152.000000    52.000000    -4.681538    -3.797945
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  631.000000   152.000000    52.000000    -4.729479    -3.805809
+  632.000000   152.000000    52.000000    -4.729479    -3.805809
+  632.000000   152.000000    53.000000    -4.729479    -3.805809
+  632.000000   152.000000    53.000000    -4.729479    -3.805809
+  632.000000   152.000000    53.000000    -4.749840    -3.824973
+  632.000000   152.000000    53.000000    -4.749840    -3.984939
+  632.000000   152.000000    53.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.763839    -3.984939
+  632.000000   152.000000    54.000000    -4.826880    -4.017910
+  632.000000   152.000000    54.000000    -4.826880    -4.017910
+  632.000000   152.000000    54.000000    -4.826880    -4.017910
+  633.000000   152.000000    54.000000    -4.826880    -4.017910
+  633.000000   152.000000    54.000000    -4.863338    -4.017910
+  633.000000   152.000000    54.000000    -4.863338    -4.017910
+  633.000000   152.000000    54.000000    -4.863338    -4.094107
+  633.000000   153.000000    55.000000    -4.863338    -4.094107
+  633.000000   153.000000    55.000000    -4.863338    -4.094107
+  633.000000   153.000000    55.000000    -4.863338    -4.094107
+  634.000000   153.000000    55.000000    -4.863338    -4.094107
+  634.000000   153.000000    55.000000    -4.870731    -4.094107
+  634.000000   153.000000    55.000000    -4.958954    -4.094107
+  634.000000   153.000000    55.000000    -4.958954    -4.191519
+  634.000000   153.000000    55.000000    -4.958954    -4.191519
+  634.000000   153.000000    56.000000    -4.981919    -4.191519
+  634.000000   153.000000    56.000000    -4.981919    -4.191519
+  636.000000   153.000000    56.000000    -4.981919    -4.191519
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.197134
+  636.000000   153.000000    56.000000    -4.981919    -4.197134
+  637.000000   153.000000    56.000000    -4.998592    -4.197134
+  637.000000   153.000000    56.000000    -4.998592    -4.199412
+  637.000000   154.000000    57.000000    -4.998592    -4.199412
+  637.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.209967
+  638.000000   154.000000    57.000000    -5.046132    -4.209967
+  638.000000   154.000000    57.000000    -5.046132    -4.209967
+  638.000000   154.000000    57.000000    -5.046132    -4.209989
+  638.000000   154.000000    58.000000    -5.046132    -4.210011
+  638.000000   154.000000    58.000000    -5.087775    -4.210011
+  638.000000   154.000000    58.000000    -5.087775    -4.210011
+  638.000000   154.000000    58.000000    -5.087775    -4.210011
+  638.000000   154.000000    59.000000    -5.087775    -4.210011
+  638.000000   154.000000    59.000000    -5.128770    -4.210011
+  638.000000   154.000000    59.000000    -5.128770    -4.210011
+  638.000000   154.000000    59.000000    -5.128770    -4.210011
+  639.000000   154.000000    59.000000    -5.128770    -4.210011
+  639.000000   154.000000    59.000000    -5.128770    -4.210011
+  639.000000   154.000000    59.000000    -5.128770    -4.215582
+  639.000000   154.000000    59.000000    -5.128770    -4.215604
+  639.000000   154.000000    59.000000    -5.128770    -4.215634
+  639.000000   154.000000    59.000000    -5.130395    -4.215634
+  639.000000   154.000000    59.000000    -5.213173    -4.217937
+  639.000000   154.000000    59.000000    -5.213173    -4.217937
+  639.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.228922    -4.228198
+  642.000000   154.000000    60.000000    -5.228922    -4.228198
+  642.000000   154.000000    60.000000    -5.228922    -4.228201
+  642.000000   154.000000    60.000000    -5.228922    -4.230609
+  642.000000   154.000000    60.000000    -5.238125    -4.230610
+  642.000000   154.000000    60.000000    -5.238125    -4.243708
+  643.000000   154.000000    60.000000    -5.238125    -4.243708
+  643.000000   154.000000    60.000000    -5.238125    -4.243708
+  643.000000   154.000000    60.000000    -5.238125    -4.373889
+  643.000000   154.000000    61.000000    -5.238125    -4.373889
+  643.000000   154.000000    61.000000    -5.250409    -4.373889
+  643.000000   154.000000    61.000000    -5.250409    -4.373889
+  643.000000   154.000000    61.000000    -5.250409    -4.373889
+  643.000000   154.000000    61.000000    -5.262263    -4.373889
+  643.000000   154.000000    61.000000    -5.306309    -4.373889
+  643.000000   154.000000    61.000000    -5.306309    -4.373889
+  643.000000   154.000000    61.000000    -5.306309    -4.379805
+  643.000000   154.000000    61.000000    -5.306309    -4.379805
+  643.000000   154.000000    61.000000    -5.306309    -4.379805
+  643.000000   154.000000    61.000000    -5.314027    -4.379805
+  643.000000   154.000000    62.000000    -5.314027    -4.383758
+  643.000000   154.000000    62.000000    -5.314027    -4.383758
+  643.000000   154.000000    62.000000    -5.314027    -4.383758
+  644.000000   154.000000    62.000000    -5.314027    -4.383758
+  644.000000   155.000000    62.000000    -5.314027    -4.383758
+  644.000000   155.000000    62.000000    -5.314027    -4.383758
+  644.000000   155.000000    62.000000    -5.337548    -4.383758
+  644.000000   155.000000    62.000000    -5.337548    -4.389375
+  644.000000   155.000000    62.000000    -5.337548    -4.389375
+  644.000000   155.000000    63.000000    -5.379943    -4.389375
+  644.000000   155.000000    63.000000    -5.379943    -4.389375
+  645.000000   155.000000    63.000000    -5.379943    -4.389375
+  645.000000   155.000000    63.000000    -5.379943    -4.395289
+  645.000000   155.000000    63.000000    -5.379943    -4.395289
+  645.000000   155.000000    63.000000    -5.382931    -4.397701
+  645.000000   155.000000    63.000000    -5.382931    -4.397701
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.429679    -4.401658
+  645.000000   155.000000    63.000000    -5.429679    -4.401658
+  646.000000   155.000000    63.000000    -5.429679    -4.401658
+  646.000000   155.000000    63.000000    -5.429679    -4.401658
+  646.000000   155.000000    63.000000    -5.440402    -4.401869
+  646.000000   155.000000    63.000000    -5.441520    -4.401869
+  646.000000   155.000000    63.000000    -5.441520    -4.403272
+  646.000000   155.000000    63.000000    -5.441520    -4.404033
+  647.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    64.000000    -5.465908    -4.409699
+  648.000000   156.000000     0.000000    -5.465908    -4.419782
+  650.000000   156.000000     0.000000    -5.465908    -4.419782
+  650.000000   156.000000     0.000000    -5.465908    -4.419782
+  650.000000   156.000000     0.000000    -5.487067    -4.419782
+  650.000000   156.000000     0.000000    -5.487067    -4.419782
+  650.000000   156.000000     0.000000    -5.492830    -4.419782
+  650.000000   156.000000     0.000000    -5.492830    -4.419782
+  650.000000   156.000000     0.000000    -5.492830    -4.422150
+  650.000000   156.000000     0.000000    -5.497572    -4.422150
+  650.000000   156.000000     0.000000    -5.497572    -4.606305
+  650.000000   156.000000     0.000000    -5.497572    -4.606305
+  650.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.519808    -4.607973
+  651.000000   156.000000     0.000000    -5.519808    -4.607973
+  652.000000   156.000000     0.000000    -5.534848    -4.607973
+  652.000000   156.000000     0.000000    -5.534848    -4.607973
+  652.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.608820
+  653.000000   156.000000     0.000000    -5.534848    -4.621086
+  653.000000   156.000000     0.000000    -5.535358    -4.621086
+  653.000000   156.000000     0.000000    -5.535764    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  654.000000   156.000000     0.000000    -5.550398    -4.647526
+  654.000000   156.000000     0.000000    -5.550398    -4.649712
+  654.000000   156.000000     0.000000    -5.550398    -4.649712
+  654.000000   156.000000     0.000000    -5.553374    -4.649712
+  654.000000   156.000000     0.000000    -5.553374    -4.649712
+  654.000000   156.000000     0.000000    -5.553374    -4.649938
+  655.000000   156.000000     0.000000    -5.553374    -4.651440
+  655.000000   156.000000     0.000000    -5.553374    -4.651440
+  655.000000   156.000000     0.000000    -5.553386    -4.651896
+  655.000000   156.000000     0.000000    -5.553791    -4.651896
+  655.000000   156.000000     0.000000    -5.553791    -4.653397
+  655.000000   156.000000     0.000000    -5.553791    -4.653397
+  655.000000   156.000000     0.000000    -5.553791    -4.653397
+  656.000000   156.000000     0.000000    -5.553791    -4.653397
+  656.000000   157.000000     0.000000    -5.553791    -4.653430
+  656.000000   157.000000     0.000000    -5.553791    -4.653430
+  656.000000   157.000000     0.000000    -5.569330    -4.653430
+  656.000000   157.000000     0.000000    -5.569330    -4.653658
+  656.000000   157.000000     0.000000    -5.569330    -4.653658
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.798067
+  657.000000   157.000000     0.000000    -5.569330    -4.798067
+  657.000000   157.000000     0.000000    -5.569330    -4.798067
+  657.000000   157.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.573495    -4.798067
+  658.000000   158.000000     0.000000    -5.573495    -4.798067
+  658.000000   158.000000     0.000000    -5.573495    -4.798067
+  658.000000   158.000000     0.000000    -5.589045    -4.798067
+  658.000000   158.000000     0.000000    -5.589045    -4.798067
+  658.000000   158.000000     0.000000    -5.589045    -4.801652
+  658.000000   158.000000     0.000000    -5.589045    -4.801652
+  659.000000   158.000000     0.000000    -5.589045    -4.801652
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  662.000000   158.000000     0.000000    -5.589045    -4.948857
+  662.000000   158.000000     0.000000    -5.589045    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.954346
+  662.000000   158.000000     0.000000    -5.605510    -4.954346
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   159.000000     0.000000    -5.605510    -5.005344
+  662.000000   159.000000     0.000000    -5.605510    -5.005344
+  663.000000   159.000000     0.000000    -5.605510    -5.005344
+  663.000000   159.000000     0.000000    -5.605510    -5.018093
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  664.000000   159.000000     0.000000    -5.614935    -5.067872
+  664.000000   159.000000     0.000000    -5.614935    -5.141387
+  664.000000   159.000000     0.000000    -5.614935    -5.160269
+  664.000000   159.000000     0.000000    -5.614935    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  665.000000   159.000000     0.000000    -5.614948    -5.160269
+  665.000000   159.000000     0.000000    -5.614948    -5.160269
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  666.000000   159.000000     0.000000    -5.616782    -5.277120
+  666.000000   159.000000     0.000000    -5.622101    -5.282820
+  666.000000   159.000000     0.000000    -5.622101    -5.282820
+  666.000000   159.000000     0.000000    -5.631400    -5.282820
+  666.000000   159.000000     0.000000    -5.632102    -5.287278
+  667.000000   159.000000     0.000000    -5.632102    -5.287278
+  667.000000   159.000000     0.000000    -5.632102    -5.287278
+  667.000000   159.000000     0.000000    -5.650993    -5.287278
+  667.000000   159.000000     0.000000    -5.650993    -5.287278
+  667.000000   159.000000     0.000000    -5.650993    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  670.000000   159.000000     0.000000    -5.667292    -5.338620
+  670.000000   159.000000     0.000000    -5.667292    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.350500
+  670.000000   159.000000     0.000000    -5.667304    -5.350500
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  671.000000   159.000000     0.000000    -5.667304    -5.430467
+  671.000000   159.000000     0.000000    -5.667304    -5.435055
+  671.000000   159.000000     0.000000    -5.667304    -5.435055
+  671.000000   159.000000     0.000000    -5.667304    -5.435055
+  672.000000   159.000000     0.000000    -5.667304    -5.435055
+  672.000000   159.000000     0.000000    -5.680452    -5.435055
+  672.000000   159.000000     0.000000    -5.680452    -5.435055
+  672.000000   159.000000     0.000000    -5.680452    -5.435055
+  672.000000   159.000000     0.000000    -5.682618    -5.435055
+  672.000000   160.000000     0.000000    -5.682618    -5.435055
+  672.000000   160.000000     0.000000    -5.682618    -5.435055
+  672.000000   160.000000     0.000000    -5.697775    -5.435313
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  674.000000   160.000000     0.000000    -5.697775    -5.483751
+  674.000000   160.000000     0.000000    -5.697775    -5.483751
+  674.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.698353    -5.483751
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  677.000000   160.000000     0.000000    -5.698353    -5.488336
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.527014
+  677.000000   160.000000     0.000000    -5.698353    -5.527014
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539487
+  677.000000   160.000000     0.000000    -5.698353    -5.539487
+  679.000000   160.000000     0.000000    -5.698353    -5.611336
+  679.000000   160.000000     0.000000    -5.698353    -5.611336
+  679.000000   160.000000     0.000000    -5.698353    -5.611343
+  679.000000   160.000000     0.000000    -5.698353    -5.625224
+  679.000000   160.000000     0.000000    -5.698353    -5.625224
+  679.000000   160.000000     0.000000    -5.698353    -5.625224
+  679.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.662061
+  681.000000   161.000000     0.000000    -5.698353    -5.662061
+  681.000000   161.000000     0.000000    -5.698353    -5.662061
+  681.000000   161.000000     0.000000    -5.698353    -5.662061
+  682.000000   161.000000     0.000000    -5.698353    -5.665403
+  682.000000   161.000000     0.000000    -5.698353    -5.665403
+  682.000000   161.000000     0.000000    -5.698353    -5.665403
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  683.000000   161.000000     0.000000    -5.698353    -5.665969
+  683.000000   161.000000     0.000000    -5.698353    -5.665969
+  683.000000   161.000000     0.000000    -5.698353    -5.669372
+  683.000000   161.000000     0.000000    -5.698353    -5.669372
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  685.000000   161.000000     0.000000    -5.698353    -5.702812
+  685.000000   161.000000     0.000000    -5.698353    -5.702812
+  685.000000   161.000000     0.000000    -5.698353    -5.702812
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  686.000000   161.000000     0.000000    -5.698353    -5.710102
+  686.000000   161.000000     0.000000    -5.698353    -5.710102
+  686.000000   161.000000     0.000000    -5.698353    -5.710365
+  686.000000   161.000000     0.000000    -5.698353    -5.710365
+  687.000000   161.000000     0.000000    -5.698353    -5.710365
+  687.000000   161.000000     0.000000    -5.698353    -5.715440
+  687.000000   161.000000     0.000000    -5.698353    -5.715440
+  687.000000   161.000000     0.000000    -5.698353    -5.715446
+  687.000000   161.000000     0.000000    -5.698353    -5.717538
+  687.000000   162.000000     0.000000    -5.698353    -5.717538
+  687.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.722613
+  688.000000   162.000000     0.000000    -5.698353    -5.722613
+  688.000000   162.000000     0.000000    -5.698353    -5.722613
+  688.000000   162.000000     0.000000    -5.698353    -5.722731
+  688.000000   162.000000     0.000000    -5.698353    -5.722731
+  689.000000   162.000000     0.000000    -5.698353    -5.730166
+  689.000000   162.000000     0.000000    -5.698353    -5.730166
+  689.000000   162.000000     0.000000    -5.698353    -5.730166
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.811050
+  691.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.826762
+  692.000000   162.000000     0.000000    -5.698353    -5.826762
+  692.000000   162.000000     0.000000    -5.698353    -5.826762
+  692.000000   162.000000     0.000000    -5.698353    -5.827023
+  692.000000   162.000000     0.000000    -5.698353    -5.827023
+  692.000000   162.000000     0.000000    -5.698353    -5.847000
+  692.000000   162.000000     0.000000    -5.698353    -5.847255
+  692.000000   162.000000     0.000000    -5.698353    -5.847255
+  693.000000   162.000000     0.000000    -5.698353    -5.847255
+  693.000000   162.000000     0.000000    -5.698353    -5.847255
+  693.000000   162.000000     0.000000    -5.698353    -5.847261
+  693.000000   162.000000     0.000000    -5.698353    -5.847261
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  694.000000   163.000000     0.000000    -5.698353    -5.938183
+  694.000000   163.000000     0.000000    -5.698353    -5.938183
+  694.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954057
+  696.000000   163.000000     0.000000    -5.698353    -5.954057
+  696.000000   163.000000     0.000000    -5.698353    -5.954058
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.030555
+  696.000000   163.000000     0.000000    -5.698353    -6.030555
+  696.000000   163.000000     0.000000    -5.698353    -6.031038
+  696.000000   163.000000     0.000000    -5.698353    -6.045291
+  696.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045293
+  698.000000   163.000000     0.000000    -5.698353    -6.045293
+  698.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   164.000000     0.000000    -5.698353    -6.091928
+  700.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091998
+  701.000000   164.000000     0.000000    -5.698353    -6.091998
+  701.000000   164.000000     0.000000    -5.698353    -6.107778
+  701.000000   164.000000     0.000000    -5.698353    -6.107778
+  702.000000   164.000000     0.000000    -5.698353    -6.107778
+  702.000000   164.000000     0.000000    -5.698353    -6.107778
+  702.000000   164.000000     0.000000    -5.698353    -6.107780
+  702.000000   164.000000     0.000000    -5.698353    -6.107780
+  702.000000   164.000000     0.000000    -5.698353    -6.107780
+  702.000000   165.000000     0.000000    -5.698353    -6.107780
+  702.000000   165.000000     0.000000    -5.698353    -6.107780
+  702.000000   165.000000     0.000000    -5.698353    -6.107780
+  703.000000   165.000000     0.000000    -5.698353    -6.107780
+  703.000000   165.000000     0.000000    -5.698353    -6.107780
+  703.000000   165.000000     0.000000    -5.698353    -6.108072
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  705.000000   165.000000     0.000000    -5.698353    -6.122217
+  705.000000   165.000000     0.000000    -5.698353    -6.122237
+  705.000000   165.000000     0.000000    -5.698353    -6.122237
+  705.000000   166.000000     0.000000    -5.698353    -6.122237
+  705.000000   166.000000     0.000000    -5.698353    -6.123205
+  705.000000   166.000000     0.000000    -5.698353    -6.123205
+  705.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.250651
+  707.000000   166.000000     0.000000    -5.698353    -6.250651
+  707.000000   166.000000     0.000000    -5.698353    -6.250651
+  707.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.284965
+  708.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  711.000000   166.000000     0.000000    -5.698353    -6.284965
+  711.000000   166.000000     0.000000    -5.698353    -6.284965
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  712.000000   166.000000     0.000000    -5.698353    -6.295472
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331821
+  717.000000   167.000000     0.000000    -5.698353    -6.331873
+  718.000000   167.000000     0.000000    -5.698353    -6.332235
+  718.000000   167.000000     0.000000    -5.698353    -6.332235
+  718.000000   167.000000     0.000000    -5.698353    -6.332235
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.335392
+  721.000000   168.000000     0.000000    -5.698353    -6.335392
+  721.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/mpif.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/mpif.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/mpif.h	(revision 6168)
@@ -0,0 +1,263 @@
+!
+!  
+!  (C) 1993 by Argonne National Laboratory and Mississipi State University.
+!      All rights reserved.  See COPYRIGHT in top-level directory.
+!
+!
+! user include file for MPI programs, with no dependencies 
+!
+! It really is not possible to make a perfect include file that can
+! be used by both F77 and F90 compilers, but this is close.  We have removed
+! continuation lines (allows free form input in F90); systems whose
+! Fortran compilers support ! instead of just C or * for comments can
+! globally replace a C in the first column with !; the resulting file
+! should work for both Fortran 77 and Fortran 90.
+!
+! If your Fortran compiler supports ! for comments, you can run this 
+! through sed with
+!     sed -e 's/^C/\!/g'
+!
+! We have also removed the use of contractions (involving the single quote)
+! character because some users use .F instead of .f files (to invoke the
+! cpp preprocessor) and further, their preprocessor is determined to find
+! matching single quote pairs (and probably double quotes; given the
+! different rules in C and Fortran, this sounds like a disaster).  Rather than
+! take the position that the poor users should get a better system, we
+! have removed the text that caused problems.  Of course, the users SHOULD
+! get a better system...
+!
+! return codes 
+      INTEGER MPI_SUCCESS,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE
+      INTEGER MPI_ERR_TAG,MPI_ERR_COMM,MPI_ERR_RANK,MPI_ERR_ROOT
+      INTEGER MPI_ERR_GROUP
+      INTEGER MPI_ERR_OP,MPI_ERR_TOPOLOGY,MPI_ERR_DIMS,MPI_ERR_ARG
+      INTEGER MPI_ERR_UNKNOWN,MPI_ERR_TRUNCATE,MPI_ERR_OTHER
+      INTEGER MPI_ERR_INTERN,MPI_ERR_IN_STATUS,MPI_ERR_PENDING
+      INTEGER MPI_ERR_REQUEST, MPI_ERR_LASTCODE
+      PARAMETER (MPI_SUCCESS=0,MPI_ERR_BUFFER=1,MPI_ERR_COUNT=2)
+      PARAMETER (MPI_ERR_TYPE=3,MPI_ERR_TAG=4,MPI_ERR_COMM=5)
+      PARAMETER (MPI_ERR_RANK=6,MPI_ERR_ROOT=7,MPI_ERR_GROUP=8)
+      PARAMETER (MPI_ERR_OP=9,MPI_ERR_TOPOLOGY=10,MPI_ERR_DIMS=11)
+      PARAMETER (MPI_ERR_ARG=12,MPI_ERR_UNKNOWN=13)
+      PARAMETER (MPI_ERR_TRUNCATE=14,MPI_ERR_OTHER=15)
+      PARAMETER (MPI_ERR_INTERN=16,MPI_ERR_IN_STATUS=17)
+      PARAMETER (MPI_ERR_PENDING=18,MPI_ERR_REQUEST=19)
+      PARAMETER (MPI_ERR_LASTCODE=1073741823)
+!
+      INTEGER MPI_UNDEFINED
+      parameter (MPI_UNDEFINED = (-32766))
+!
+      INTEGER MPI_GRAPH, MPI_CART
+      PARAMETER (MPI_GRAPH = 1, MPI_CART = 2)
+      INTEGER  MPI_PROC_NULL
+      PARAMETER ( MPI_PROC_NULL = (-1) )
+!
+      INTEGER MPI_BSEND_OVERHEAD
+      PARAMETER ( MPI_BSEND_OVERHEAD = 512 )
+
+      INTEGER MPI_SOURCE, MPI_TAG, MPI_ERROR
+      PARAMETER(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4)
+      INTEGER MPI_STATUS_SIZE
+      PARAMETER (MPI_STATUS_SIZE=4)
+      INTEGER MPI_MAX_PROCESSOR_NAME, MPI_MAX_ERROR_STRING
+      PARAMETER (MPI_MAX_PROCESSOR_NAME=256)
+      PARAMETER (MPI_MAX_ERROR_STRING=512)
+      INTEGER MPI_MAX_NAME_STRING
+      PARAMETER (MPI_MAX_NAME_STRING=63)
+!
+      INTEGER MPI_COMM_NULL
+      PARAMETER (MPI_COMM_NULL=0)
+!
+      INTEGER MPI_DATATYPE_NULL
+      PARAMETER (MPI_DATATYPE_NULL = 0)
+      
+      INTEGER MPI_ERRHANDLER_NULL
+      PARAMETER (MPI_ERRHANDLER_NULL = 0)
+      
+      INTEGER MPI_GROUP_NULL
+      PARAMETER (MPI_GROUP_NULL = 0)
+      
+      INTEGER MPI_KEYVAL_INVALID
+      PARAMETER (MPI_KEYVAL_INVALID = 0)
+      
+      INTEGER MPI_REQUEST_NULL
+      PARAMETER (MPI_REQUEST_NULL = 0)
+! 
+      INTEGER MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL
+      PARAMETER (MPI_IDENT=0, MPI_CONGRUENT=1, MPI_SIMILAR=2)
+      PARAMETER (MPI_UNEQUAL=3)
+!
+!     MPI_BOTTOM needs to be a known address; here we put it at the
+!     beginning of the common block.  The point-to-point and collective
+!     routines know about MPI_BOTTOM, but MPI_TYPE_STRUCT as yet does not.
+!
+!     MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE are similar objects
+!     Until the underlying MPI library implements the C version of these
+!     (a null pointer), these are declared as arrays of MPI_STATUS_SIZE
+!
+!     The types MPI_INTEGER1,2,4 and MPI_REAL4,8 are OPTIONAL.
+!     Their values are zero if they are not available.  Note that
+!     using these reduces the portability of code (though may enhance
+!     portability between Crays and other systems)
+!
+      INTEGER MPI_TAG_UB, MPI_HOST, MPI_IO
+      INTEGER MPI_BOTTOM
+      INTEGER MPI_STATUS_IGNORE(MPI_STATUS_SIZE)
+      INTEGER MPI_STATUSES_IGNORE(MPI_STATUS_SIZE)
+      INTEGER MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION 
+      INTEGER MPI_COMPLEX, MPI_DOUBLE_COMPLEX,MPI_LOGICAL
+      INTEGER MPI_CHARACTER, MPI_BYTE, MPI_2INTEGER, MPI_2REAL
+      INTEGER MPI_2DOUBLE_PRECISION, MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX
+      INTEGER MPI_UB, MPI_LB
+      INTEGER MPI_PACKED, MPI_WTIME_IS_GLOBAL
+      INTEGER MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY
+      INTEGER MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND
+      INTEGER MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC
+      INTEGER MPI_MAXLOC
+      INTEGER MPI_OP_NULL
+      INTEGER MPI_ERRORS_ARE_FATAL, MPI_ERRORS_RETURN
+!
+      PARAMETER (MPI_ERRORS_ARE_FATAL=119)
+      PARAMETER (MPI_ERRORS_RETURN=120)
+!
+      PARAMETER (MPI_COMPLEX=23,MPI_DOUBLE_COMPLEX=24,MPI_LOGICAL=25)
+      PARAMETER (MPI_REAL=26,MPI_DOUBLE_PRECISION=27,MPI_INTEGER=28)
+      PARAMETER (MPI_2INTEGER=29,MPI_2COMPLEX=30,MPI_2DOUBLE_COMPLEX=31)
+      PARAMETER (MPI_2REAL=32,MPI_2DOUBLE_PRECISION=33,MPI_CHARACTER=1)
+      PARAMETER (MPI_BYTE=3,MPI_UB=16,MPI_LB=15,MPI_PACKED=14)
+
+      INTEGER MPI_ORDER_C, MPI_ORDER_FORTRAN 
+      PARAMETER (MPI_ORDER_C=56, MPI_ORDER_FORTRAN=57)
+      INTEGER MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_CYCLIC
+      INTEGER MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_DFLT_DARG
+      PARAMETER (MPI_DISTRIBUTE_BLOCK=121, MPI_DISTRIBUTE_CYCLIC=122)
+      PARAMETER (MPI_DISTRIBUTE_NONE=123)
+      PARAMETER (MPI_DISTRIBUTE_DFLT_DARG=-49767)
+      INTEGER MPI_MAX_INFO_KEY, MPI_MAX_INFO_VAL
+      PARAMETER (MPI_MAX_INFO_KEY=255, MPI_MAX_INFO_VAL=1024)
+      INTEGER MPI_INFO_NULL
+      PARAMETER (MPI_INFO_NULL=0)
+
+!
+! Optional Fortran Types.  Configure attempts to determine these.  
+!
+      INTEGER MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, MPI_INTEGER8
+      INTEGER MPI_INTEGER16
+      INTEGER MPI_REAL4, MPI_REAL8, MPI_REAL16
+      INTEGER MPI_COMPLEX8, MPI_COMPLEX16, MPI_COMPLEX32
+      PARAMETER (MPI_INTEGER1=1,MPI_INTEGER2=4)
+      PARAMETER (MPI_INTEGER4=6)
+      PARAMETER (MPI_INTEGER8=13)
+      PARAMETER (MPI_INTEGER16=0)
+      PARAMETER (MPI_REAL4=10)
+      PARAMETER (MPI_REAL8=11)
+      PARAMETER (MPI_REAL16=0)
+      PARAMETER (MPI_COMPLEX8=23)
+      PARAMETER (MPI_COMPLEX16=24)
+      PARAMETER (MPI_COMPLEX32=0)
+!
+!    This is now handled with either the "pointer" extension or this same
+!    code, appended at the end.
+!      COMMON /MPIPRIV/ MPI_BOTTOM,MPI_STATUS_IGNORE,MPI_STATUSES_IGNORE
+!C
+!C     Without this save, some Fortran implementations may make the common
+!C     dynamic!
+!C    
+!C     For a Fortran90 module, we might replace /MPIPRIV/ with a simple
+!C     SAVE MPI_BOTTOM
+!C
+!      SAVE /MPIPRIV/
+!
+      PARAMETER (MPI_MAX=100,MPI_MIN=101,MPI_SUM=102,MPI_PROD=103)
+      PARAMETER (MPI_LAND=104,MPI_BAND=105,MPI_LOR=106,MPI_BOR=107)
+      PARAMETER (MPI_LXOR=108,MPI_BXOR=109,MPI_MINLOC=110)
+      PARAMETER (MPI_MAXLOC=111, MPI_OP_NULL=0)
+!
+      PARAMETER (MPI_GROUP_EMPTY=90,MPI_COMM_WORLD=91,MPI_COMM_SELF=92)
+      PARAMETER (MPI_TAG_UB=80,MPI_HOST=82,MPI_IO=84)
+      PARAMETER (MPI_WTIME_IS_GLOBAL=86)
+!
+      INTEGER MPI_ANY_SOURCE
+      PARAMETER (MPI_ANY_SOURCE = (-2))
+      INTEGER MPI_ANY_TAG
+      PARAMETER (MPI_ANY_TAG = (-1))
+!
+      INTEGER MPI_VERSION, MPI_SUBVERSION
+      PARAMETER (MPI_VERSION    = 1, MPI_SUBVERSION = 2)
+!
+!     There are additional MPI-2 constants 
+      INTEGER MPI_ADDRESS_KIND, MPI_OFFSET_KIND
+      PARAMETER (MPI_ADDRESS_KIND=4)
+      PARAMETER (MPI_OFFSET_KIND=4)
+!
+!     All other MPI routines are subroutines
+!     This may cause some Fortran compilers to complain about defined and
+!     not used.  Such compilers should be improved.
+!
+!     Some Fortran compilers will not link programs that contain
+!     external statements to routines that are not provided, even if
+!     the routine is never called.  Remove PMPI_WTIME and PMPI_WTICK
+!     if you have trouble with them.
+!
+      DOUBLE PRECISION MPI_WTIME, MPI_WTICK,PMPI_WTIME,PMPI_WTICK
+      EXTERNAL MPI_WTIME, MPI_WTICK,PMPI_WTIME,PMPI_WTICK
+!
+!     The attribute copy/delete subroutines are symbols that can be passed
+!     to MPI routines
+!
+      EXTERNAL MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, MPI_DUP_FN
+      COMMON /MPIPRIV/ MPI_BOTTOM,MPI_STATUS_IGNORE,MPI_STATUSES_IGNORE
+!
+!     Without this save, some Fortran implementations may make the common
+!     dynamic!
+!    
+!     For a Fortran90 module, we might replace /MPIPRIV/ with a simple
+!     SAVE MPI_BOTTOM
+!
+      SAVE /MPIPRIV/
+! 
+!     $Id: mpiof.h.in,v 1.3 1999/08/06 18:33:09 thakur Exp $    
+! 
+!     Copyright (C) 1997 University of Chicago. 
+!     See COPYRIGHT notice in top-level directory.
+!
+! 
+!    user include file for Fortran MPI-IO programs 
+!
+      INTEGER MPI_MODE_RDONLY, MPI_MODE_RDWR, MPI_MODE_WRONLY
+      INTEGER MPI_MODE_DELETE_ON_CLOSE, MPI_MODE_UNIQUE_OPEN
+      INTEGER MPI_MODE_CREATE, MPI_MODE_EXCL
+      INTEGER MPI_MODE_APPEND, MPI_MODE_SEQUENTIAL
+      PARAMETER (MPI_MODE_RDONLY=2, MPI_MODE_RDWR=8, MPI_MODE_WRONLY=4)
+      PARAMETER (MPI_MODE_CREATE=1, MPI_MODE_DELETE_ON_CLOSE=16)
+      PARAMETER (MPI_MODE_UNIQUE_OPEN=32, MPI_MODE_EXCL=64)
+      PARAMETER (MPI_MODE_APPEND=128, MPI_MODE_SEQUENTIAL=256)
+!
+      INTEGER MPI_FILE_NULL
+      PARAMETER (MPI_FILE_NULL=0)
+!
+      INTEGER MPI_MAX_DATAREP_STRING
+      PARAMETER (MPI_MAX_DATAREP_STRING=128)
+!
+      INTEGER MPI_SEEK_SET, MPI_SEEK_CUR, MPI_SEEK_END
+      PARAMETER (MPI_SEEK_SET=600, MPI_SEEK_CUR=602, MPI_SEEK_END=604)
+!
+      INTEGER MPIO_REQUEST_NULL
+      PARAMETER (MPIO_REQUEST_NULL=0)
+!
+      integer*8 MPI_DISPLACEMENT_CURRENT
+      PARAMETER (MPI_DISPLACEMENT_CURRENT=-54278278)
+!
+!
+
+
+
+
+
+
+
+!
+!
+!
+!
+!
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/pgapackf.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/pgapackf.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/test/pgapackf.h	(revision 6168)
@@ -0,0 +1,983 @@
+/******************************************************************************
+*     FILE: pgapack.h: This file contains all constant and structure
+*                      definitions definitions for PGAPack as well as all
+*                      function declarations.
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+******************************************************************************/
+
+#ifndef __PGA_PACK_H_
+#define __PGA_PACK_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <time.h>
+#include <limits.h>
+#include <float.h>
+#include <string.h> 
+#include <ctype.h>
+#include <mpi.h>
+
+
+
+/*  If OPTIMIZED, remove various sanity checks, and debug output.
+ *
+ *  PGADebugEntered(a)      - Print a debug message about entering "a"
+ *  PGADebugExited(a)       - Print a debug message about exiting "a"
+ *  PGAFailIfNotSetup(a)    - Fail fatally if PGASetUp has not been called
+ *  PGAFailIfSetup(a)       - Fail fatally if PGASetUp has been called
+ *  PGACheckDataType(a, D)  - Fail fatally if the datatype is not D
+ */
+#ifndef OPTIMIZE
+#define OPTIMIZE 0
+
+
+#define PGADebugEntered(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_ENTERED, a, "Entered", PGA_VOID, NULL)
+#define PGADebugExited(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_EXIT, a, "Exited", PGA_VOID, NULL)
+#define PGAFailIfNotSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_FALSE) \
+     PGAError(ctx, "PGASetUp must be called before " Name, \
+              PGA_FATAL, PGA_VOID, NULL)
+#define PGAFailIfSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_TRUE) \
+     PGAError(ctx, Name " must be called before PGASetUp", PGA_FATAL, \
+	      PGA_VOID, NULL)
+#define PGACheckDataType(Name, DataType) \
+  if (ctx->ga.datatype != DataType) \
+     PGAError(ctx, "DataType is incorrect for " Name,PGA_FATAL,PGA_VOID,NULL)
+
+#else
+#undef OPTIMIZE
+#define OPTIMIZE 1
+#define PGADebugPrint(a,b,c,x,y,z) ;
+#define PGADebugEntered(a) ;
+#define PGADebugExited(a) ;
+#define PGAFailIfNotSetUp(Name)  ;
+#define PGAFailIfSetUp(Name)  ;
+#define PGACheckDataType(Name, DataType) ;
+#endif
+
+/*****************************************
+*           BINARY   MACROS              *
+*****************************************/
+#ifndef WL
+#error WL must be defined on the command line!
+#endif
+
+#define ONEL        ((PGABinary)1)
+#define BIT(x,y)    (y&(ONEL<<((WL-1)-(x))))    /* true if bit is 1,         */
+#define SET(x,y)    (y|=(ONEL<<((WL-1)-(x))))   /* set a bit to 1            */
+#define UNSET(x,y)  (y&=(~(ONEL<<((WL-1)-(x)))))/* set a bit to 0, clear     */
+#define TOGGLE(x,y) (y^=(ONEL<<((WL-1)-(x))))   /* complement a bits value   */
+#define INDEX(ix,bx,bit,WL) ix=bit/WL;bx=bit%WL /* map global column (bit)   */
+                                                /* to word (ix) and bit (bx) */
+
+/*****************************************
+*       ABSTRACT DATA TYPES              *
+*****************************************/
+#define PGA_DATATYPE_BINARY      1    /* Array of unsigned ints            */
+                                      /* parsed into bits    : binary.c    */
+#define PGA_DATATYPE_INTEGER     2    /* Array of ints       : integer.c   */
+#define PGA_DATATYPE_REAL        3    /* Array of doubles    : real.c      */
+#define PGA_DATATYPE_CHARACTER   4    /* Array of characters : character.c */
+#define PGA_DATATYPE_USER        5    /*  --user defined--                 */
+    
+#define PGABinary                unsigned long
+#define PGAInteger               signed long int
+#define PGAReal                  double
+#define PGACharacter             signed char
+
+#define PGA_INT                   1
+#define PGA_DOUBLE                2
+#define PGA_CHAR                  3
+#define PGA_VOID                  4
+
+    
+/*****************************************
+*              BOOLEANS                  *
+*****************************************/
+#define PGA_TRUE                   1
+#define PGA_FALSE                  0
+
+/*****************************************
+*                FLAGS                   *
+*****************************************/
+#define PGA_FATAL                 1
+#define PGA_WARNING               2
+
+/*****************************************
+*             MISC CONSTANT              *
+*****************************************/
+#define PGA_TEMP1                -1138
+#define PGA_TEMP2                -4239
+#define PGA_TEMP3                -4238
+
+#define PGA_OLDPOP               -6728
+#define PGA_NEWPOP               -8376
+
+#define PGA_UNINITIALIZED_INT    -3827
+#define PGA_UNINITIALIZED_DOUBLE -968.3827
+
+/*****************************************
+*        DEBUG LEVELS                    *
+*****************************************/
+#define PGA_DEBUG_ENTERED        12
+#define PGA_DEBUG_EXIT           13
+#define PGA_DEBUG_MALLOC         80
+#define PGA_DEBUG_PRINTVAR       82
+#define PGA_DEBUG_SEND           22
+#define PGA_DEBUG_RECV           23
+#define PGA_DEBUG_MAXPGAPACKFUNCTIONS	300
+#define PGA_DEBUG_MAXFLAGS       1000
+
+/*****************************************
+*           DIRECTION                    *
+*****************************************/
+#define PGA_MAXIMIZE            1    /* specify direction for fitness calc  */
+#define PGA_MINIMIZE            2    /* specify direction for fitness calc  */
+    
+/*****************************************
+*         STOPPING CRITERIA              *
+*****************************************/
+#define PGA_STOP_MAXITER        1    /* Stop: for maximum iterations      */
+#define PGA_STOP_NOCHANGE       2    /* Stop: no change in best string    */
+#define PGA_STOP_TOOSIMILAR     4    /* Stop: homogeneous population      */
+
+/*****************************************
+*            CROSSOVER                   *
+*****************************************/
+#define PGA_CROSSOVER_ONEPT     1    /* One point crossover                */
+#define PGA_CROSSOVER_TWOPT     2    /* Two point crossover                */
+#define PGA_CROSSOVER_UNIFORM   3    /* Uniform   crossover                */
+
+/*****************************************
+*            SELECTION                   *
+*****************************************/
+#define PGA_SELECT_PROPORTIONAL 1    /* proportional selection              */
+#define PGA_SELECT_SUS          2    /* stochastic universal selection      */
+#define PGA_SELECT_TOURNAMENT   3    /* tournament selection                */
+#define PGA_SELECT_PTOURNAMENT  4    /* probabilistic tournament selection  */
+
+/*****************************************
+*            FITNESS                     *
+*****************************************/
+#define PGA_FITNESS_RAW         1    /* use raw fitness (evaluation)        */
+#define PGA_FITNESS_NORMAL      2    /* linear normalization fitness        */
+#define PGA_FITNESS_RANKING     3    /* linear ranking fitness              */
+
+/*****************************************
+*            FITNESS (MINIMIZATION)      *
+*****************************************/
+#define PGA_FITNESSMIN_RECIPROCAL  1 /* reciprocal fitness                  */
+#define PGA_FITNESSMIN_CMAX        2 /* cmax fitness                        */
+
+/*****************************************
+*               MUTATION                 *
+*****************************************/
+#define PGA_MUTATION_CONSTANT   1    /* Real/Integer: Fixed value           */
+#define PGA_MUTATION_RANGE      2    /* Real/Integer: Uniform range         */
+#define PGA_MUTATION_UNIFORM    3    /* Real: +- Uniform random no.         */
+#define PGA_MUTATION_GAUSSIAN   4    /* Real: +- Gaussian random no.        */
+#define PGA_MUTATION_PERMUTE    5    /* Integer: Permutation (swap)         */
+    
+/*****************************************
+*        POPULATION REPLACEMENT          *
+*****************************************/
+#define PGA_POPREPL_BEST         1   /* Select best   string                */
+#define PGA_POPREPL_RANDOM_NOREP 2   /* Select random string w/o replacement*/
+#define PGA_POPREPL_RANDOM_REP   3   /* Select random string w/  replacement*/
+
+/****************************************
+ *       REPORT OPTIONS                 *
+ ****************************************/
+#define PGA_REPORT_ONLINE        1    /* Print the online analysis           */
+#define PGA_REPORT_OFFLINE       2    /* Print the offline analysis          */
+#define PGA_REPORT_HAMMING       4    /* Print the Hamming distance          */
+#define PGA_REPORT_STRING        8    /* Print the string                    */
+#define PGA_REPORT_WORST         16   /* Print the worst individual          */
+#define PGA_REPORT_AVERAGE       32   /* Print the average of the population */
+
+/*****************************************
+*            RANDOMIZER                  *
+*****************************************/
+#define PGA_RINIT_PERCENT        1  /* real percent offset                   */
+#define PGA_RINIT_RANGE          2  /* real range                            */
+#define PGA_IINIT_PERMUTE        1  /* integer permutation                   */
+#define PGA_IINIT_RANGE          2  /* integer range (nonunique)             */
+#define PGA_CINIT_LOWER          1  /* all lowercase letters                 */
+#define PGA_CINIT_UPPER          2  /* all uppercase letters                 */
+#define PGA_CINIT_MIXED          3  /* both upper and lower case letters     */
+
+/*****************************************
+*         SET USER FUNCTION              *
+*****************************************/
+#define PGA_USERFUNCTION_CREATESTRING            1
+#define PGA_USERFUNCTION_MUTATION                2
+#define PGA_USERFUNCTION_CROSSOVER               3
+#define PGA_USERFUNCTION_PRINTSTRING             4
+#define PGA_USERFUNCTION_COPYSTRING              5
+#define PGA_USERFUNCTION_DUPLICATE               6
+#define PGA_USERFUNCTION_INITSTRING              7
+#define PGA_USERFUNCTION_BUILDDATATYPE           8
+#define PGA_USERFUNCTION_STOPCOND                9
+#define PGA_USERFUNCTION_ENDOFGEN                10
+#define PGA_USERFUNCTION_RANKING                 11
+#define PGA_USERFUNCTION_FITNESS                 12
+#define PGA_USERFUNCTION_SELECT                  13
+#define PGA_USERFUNCTION_SORTPOP                 14
+
+/******* EHW Modification ************************/
+#define PGA_USERFUNCTION_SETTEMP                 15
+#define PGA_USERFUNCTION_ENDOFREPFCN             16
+#define PGA_USERFUNCTION_DESTROYUD               17
+
+#define PGA_USERFUNCTION_INITUSERCTX             18
+#define PGA_USERFUNCTION_KILLUSERCTX             19
+#define PGA_NUM_USERFUNCTIONS                    19
+/*************************************************/
+
+/*****************************************
+*           MPI SEND/RECV TAGS           *
+*****************************************/
+#define PGA_COMM_STRINGTOEVAL        1  /* MPI tag for sending string       */
+#define PGA_COMM_EVALOFSTRING        2  /* MPI tag for returning evaluation */
+#define PGA_COMM_DONEWITHEVALS       3  /* MPI tag for ending parallel eval */
+
+
+
+
+/*****************************************
+*       INDIVIDUAL STRUTURE              *
+*****************************************/
+
+typedef struct {                    /* primary population data structure   */
+  double evalfunc;                  /* evaluation function value           */
+  double fitness;                   /* fitness    function value           */
+  int    evaluptodate;              /* flag whether evalfunc is current    */
+  void   *chrom;                    /* pointer to the GA string            */
+
+/*****************  EHW Project Modifications  **********************/
+  void   *UserData;                 /* pointer to circuit response         */
+/********************************************************************/
+} PGAIndividual;
+
+
+/*****************************************
+*          GA ALGORITHM STRUCTURE        *
+*****************************************/
+typedef struct {
+    int datatype;            /* data type: binary, integer, or real       */
+    int optdir;              /* direction of optimization                 */
+    int tw;                  /* total number of words, full + partial     */
+    int fw;                  /* number of full (WL length) words          */
+    int eb;                  /* number of extra bits in last NOT full word*/
+    int PopSize;             /* Number of strings to use                  */
+    int StringLen;           /* string lengths                            */
+    int StoppingRule;        /* Termination Criteria                      */
+    int MaxIter;             /* Maximum number of iterations to run       */
+    int MaxNoChange;         /* # of iters with no change before stopping */
+    int MaxSimilarity;       /* % of pop the same before stopping         */
+    int NumReplace;          /* Number of string to replace each gen      */
+    int PopReplace;          /* Method of choosing ind.s to copy to newpop*/
+    int iter;                /* iteration (generation) counter            */
+    int ItersOfSame;         /* # iters with no change in best            */
+    int PercentSame;         /* % of pop that is homogeneous              */
+    int NoDuplicates;        /* Don't allow duplicate strings             */
+    int CrossoverType;       /* Type of crossover for genetic algorithm   */
+    int SelectType;          /* Type of selection for genetic algorithm   */
+    int SelectIndex;         /* index of Select for next two individuals  */
+    int FitnessType;         /* Type of fitness transformation used       */
+    int FitnessMinType;      /* Transformation for minimization problems  */
+    int MutateOnlyNoCross;   /* Mutate only strings not from crossover    */
+    int MutationType;        /* Type of mutation used                     */
+    int MutateIntegerValue;  /* Multiplier to mutate Integer strings with */
+    int MutateBoundedFlag;   /* Confine integer alleles to given range    */
+    double MutateRealValue;  /* Multiplier to mutate Real strings with    */
+    double MutationProb;     /* Starting mutation probability             */
+    double CrossoverProb;    /* Crossover probability                     */
+    double UniformCrossProb; /* Prob of bit select in uniform crossover   */
+    double PTournamentProb;  /* Prob of selection in Prob. Tournament     */
+    double FitnessRankMax;   /* MAX value for use in ranking              */
+    double FitnessCmaxValue; /* Cmax value used to convert minimizations  */
+    double restartAlleleProb;/* prob of changing an allele in a restart   */
+    int restart;             /* whether to use the restart operator       */
+    int restartFreq;         /* frequency with which to restart           */
+    int *selected;           /* array of indices for selection            */
+    int *sorted;             /* array of sorted individual indices        */
+    PGAIndividual *oldpop;   /* pointer to population (old)               */
+    PGAIndividual *newpop;   /* pointer to population (new)               */
+
+/********************** EHW project modifications *********************/
+    int sUD;                 /* Size of User Data array structure     */
+/**********************************************************************/
+} PGAAlgorithm;
+
+
+
+/*****************************************
+*        OPERATIONS STRUCTURES           *
+*****************************************/
+typedef struct PGAContext PGAContext;
+typedef struct {
+    void         (*CreateString)(PGAContext *, int, int, int);
+    int          (*Mutation)(PGAContext *, int, int, double);
+    void         (*Crossover)(PGAContext *, int, int, int, int, int, int);
+    void         (*PrintString)(PGAContext *, FILE *, int, int);
+    void         (*CopyString)(PGAContext *, int, int, int, int);
+    int          (*Duplicate)(PGAContext *, int, int, int, int);
+    void         (*InitString)(PGAContext *, int, int);
+    MPI_Datatype (*BuildDatatype)(PGAContext *, int, int);
+    int          (*StopCond)(PGAContext *);
+    void         (*EndOfGen)(PGAContext *);
+
+/******************* DRH Mod for MMPAT ********************************/
+    void         (*Rank)(PGAContext *, int); /* Calls a custom */
+                                                   /*ranking function*/
+    void         (*Fitness)(PGAContext *, int); /* Calls a custom fitness eval*/
+    void         (*Select) (PGAContext *, int); /* Calls a custom selection */
+/*********************************************/
+/* new added by Lu Yang */
+    void         (*SortPop) (PGAContext *, int); /* Calls a custom sort pop */
+/*********************************************/
+                                                /* function                 */
+/*********************************************************************/
+
+/********************** EHW project modifications *********************/
+    void         (*SetTemp)(PGAContext *); /* Sets the Temperature    */
+                                           /*  Parameter              */
+/**********************************************************************/
+
+/*** SNS Addition, it sets the reproductive flags *************/
+/*** This may be part of The Chromosome User Data ************/
+
+ /* Gets executed when  PGASetEvaluationUpToDateFlag  is called
+      and the flag is set to PGA_FALSE  Is called so that the user
+      data is updated whenever the Evaluation up to date flag is set to
+      false 
+   */
+    void 	 (*EndOfRepFcn)(PGAContext *,int,int);
+
+    void 	 (*DestroyUD)(PGAContext *,int,int);
+   /* CHSL: Executed before the GA is run (gen 0) */
+    void         (*InitUserCtx)(PGAContext *);
+   /* CHSL: Executed after the GA is finished (end of last gen) */
+    void         (*KillUserCtx)(PGAContext *);
+ 
+
+
+/**********************************************************************/
+
+
+
+} PGACOperations;
+
+typedef struct {
+    int          (*Mutation)(void *, void *, void *, void *);
+    void         (*Crossover)(void *, void *, void *, void *, void *, void *, void *);
+    void         (*PrintString)(void *, void *, void *, void *);
+    void         (*CopyString)(void *, void *, void *, void *, void *);
+    int          (*Duplicate)(void *, void *, void *, void *, void *);
+    void         (*InitString)(void *, void *, void *);
+    int          (*StopCond)(void *);
+    void         (*EndOfGen)(void *);
+/******************* DRH Mod for MMPAT ********************************/
+    void         (*Rank)( void *, void *); /* calls a custom  */
+                                                 /* ranking function*/
+    void         (*Fitness)( void *, void *); /* Calls a custom fitness eval*/
+    void         (*Select )( void *, void *); /* Calls a custom selection fn*/
+/*********************************************/
+/* new added by Lu Yang */
+    void         (*SortPop) (void *, void *); /* Calls a custom sort pop */
+/*********************************************************************/
+
+/********************** EHW project modifications *********************/
+    void         (*SetTemp)(void *);       /* Sets the Temperature    */
+                                           /*  Parameter              */
+/**********************************************************************/
+
+/*** SNS Addition, it sets the reproductive flags *************/
+/*** This may be part of The Chromosome User Data ************/
+    void 	 (*EndOfRepFcn)(void *,void *,void *);
+    void 	 (*DestroyUD)(void *,void *,void *);
+
+  /* CHSL: Executed before the GA is run (gen 0) */
+   void         (*InitUserCtx)(void *);
+   /* CHSL: Executed after the GA is finished (end of last gen) */
+   void         (*KillUserCtx)(void *);
+
+/**********************************************************************/
+
+} PGAFortranOperations;
+
+/*****************************************
+*          PARALLEL STRUCTURE            *
+*****************************************/
+typedef struct {
+    int      MPIAlreadyInit;   /* Flag whether MPI was previously initialized*/
+    int      NumIslands;       /* Number of islands in island model          */
+    int      NumDemes;         /* Number of demes in neighborhood model      */
+    MPI_Comm DefaultComm;      /* Default communicator for PGARun            */
+    int      MPIStubLibrary;   /* Boolean: real or stub version of MPI       */
+} PGAParallel;
+
+/*****************************************
+*          REPORT STRUCTURE              *
+*****************************************/
+typedef struct {
+     int    PrintFreq;               /* How often to print statistics reports*/
+     int    PrintOptions;
+     double Offline;
+     double Online;
+     double Average;
+     double Best;
+     time_t starttime;
+} PGAReport;
+
+
+/*****************************************
+*          SYSTEM STRUCTURE              *
+*****************************************/
+typedef struct {
+    int    UserFortran;             /* user routines in Fortran or C?        */
+    int    SetUpCalled;             /* has PGASetUp been called?             */
+    int    PGAMaxInt;               /* largest  int     of machine           */
+    int    PGAMinInt;               /* smallest int     of machine           */
+    double PGAMaxDouble;            /* largest  double  of machine           */
+    double PGAMinDouble;            /* smallest double  of machine           */
+} PGASystem;
+
+
+/*****************************************
+*          DEBUG STRUCTURE               *
+*****************************************/
+typedef struct {
+    int PGADebugFlags[PGA_DEBUG_MAXFLAGS];
+} PGADebug;
+
+/*****************************************
+*      INITIALIZATION STRUCTURE          *
+*****************************************/
+typedef struct {
+    int    RandomInit;             /* flag whether to randomize strings    */
+    double BinaryProbability;      /* probability that a Bit will be 1     */
+    int    RealType;               /* type of real      initialization     */
+    int    IntegerType;            /* type of integer   initialization     */
+    int    CharacterType;          /* type of character initialization     */
+    int    *IntegerMin;            /* minimum of range of integers         */
+    int    *IntegerMax;            /* maximum of range of integers         */
+    double *RealMin;               /* minimum of range of reals            */
+    double *RealMax;               /* maximum of range of reals            */
+    int    RandomSeed;             /* integer to seed random numbers with  */
+} PGAInitialize;
+
+/*****************************************
+*      SCRATCH DATA STRUCTURES           *
+*****************************************/
+typedef struct {
+    int    *intscratch;            /* integer-scratch space                 */
+    double *dblscratch;            /* double- scratch space                 */
+} PGAScratch;
+
+/*****************************************
+*          CONTEXT STRUCTURE             *
+*****************************************/
+struct PGAContext {
+    PGAAlgorithm           ga;
+    PGACOperations         cops;
+    PGAFortranOperations   fops;
+    PGAParallel            par;
+    PGAReport              rep;
+    PGASystem              sys;
+    PGADebug               debug;
+    PGAInitialize          init;
+    PGAScratch             scratch;
+
+    /*************************
+     *   EHW ADDITION        *
+     *************************/
+    void                   *inputex;
+
+};
+
+/*****************************************
+*          binary.c
+*****************************************/
+
+
+
+void PGASetBinaryAllele ( PGAContext *ctx, int p, int pop, int i, int val );
+int PGAGetBinaryAllele ( PGAContext *ctx, int p, int pop, int i );
+void PGASetBinaryInitProb ( PGAContext *ctx, double probability );
+double PGAGetBinaryInitProb (PGAContext *ctx);
+void PGABinaryCreateString(PGAContext *ctx, int p, int pop, int initflag);
+int PGABinaryMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGABinaryOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryTwoptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                               int c1, int c2, int pop2);
+void PGABinaryPrintString( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGABinaryCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGABinaryDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGABinaryInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGABinaryBuildDatatype(PGAContext *ctx, int p, int pop);
+int PGABinaryHammingDistance ( PGAContext *ctx, PGABinary *s1, PGABinary *s2 );
+void PGABinaryPrint( PGAContext *ctx, FILE *fp, PGABinary *chrom, int nb );
+
+/*****************************************
+*          char.c
+*****************************************/
+
+
+void PGASetCharacterAllele (PGAContext *ctx, int p, int pop, int i, char value);
+char PGAGetCharacterAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetCharacterInitType(PGAContext *ctx, int value);
+void PGACharacterCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGACharacterMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGACharacterOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGACharacterUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGACharacterCopyString (PGAContext *ctx, int p1, int pop1, int p2,
+                             int pop2);
+int PGACharacterDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGACharacterInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGACharacterBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          cmdline.c
+*****************************************/
+
+
+void PGAReadCmdLine( PGAContext *ctx, int *argc, char **argv );
+void PGAParseDebugArg(PGAContext *ctx, char *st);
+void PGAStripArgs(char **argv, int *argc, int *c, int num);
+
+/*****************************************
+*          create.c
+*****************************************/
+
+PGAContext *PGACreate ( int *argc, char **argv,
+                        int datatype, int len, int maxormin );
+void PGASetUp ( PGAContext *ctx );
+void PGASetRandomInitFlag(PGAContext *ctx, int RandomBoolean);
+int PGAGetRandomInitFlag (PGAContext *ctx);
+void PGACreatePop (PGAContext *ctx, int pop);
+void PGACreateIndividual (PGAContext *ctx, int p, int pop, int initflag);
+
+/*****************************************
+*          cross.c
+*****************************************/
+
+void PGACrossover ( PGAContext *ctx, int p1, int p2, int pop1,
+                    int c1, int c2, int pop2 );
+int PGAGetCrossoverType (PGAContext *ctx);
+double PGAGetCrossoverProb (PGAContext *ctx);
+double PGAGetUniformCrossoverProb (PGAContext *ctx);
+void PGASetCrossoverType (PGAContext *ctx, int crossover_type);
+void PGASetCrossoverProb( PGAContext *ctx, double crossover_prob);
+void PGASetUniformCrossoverProb( PGAContext *ctx, double uniform_cross_prob);
+
+/*****************************************
+*          debug.c
+*****************************************/
+
+
+void PGASortFuncNameIndex(PGAContext *ctx);
+#if OPTIMIZE==0
+void PGADebugPrint( PGAContext *ctx, int level, char *funcname,
+                   char *msg, int datatype, void *data );
+#endif
+void PGASetDebugLevel(PGAContext *ctx, int level);
+void PGAClearDebugLevel(PGAContext *ctx, int level);
+void PGASetDebugLevelByName(PGAContext *ctx, char *funcname);
+void PGAClearDebugLevelByName(PGAContext *ctx, char *funcname);
+int PGAGetDebugLevelOfName(PGAContext *ctx, char *funcname);
+int PGAGetDebugFlag(PGAContext *ctx, char *funcname);
+void PGASetDebugFlag11(PGAContext *ctx, int Flag);
+void PGASetDebugFlag20(PGAContext *ctx, int Flag);
+void PGASetDebugFlag21(PGAContext *ctx, int Flag);
+void PGASetDebugFlag30(PGAContext *ctx, int Flag);
+void PGASetDebugFlag32(PGAContext *ctx, int Flag);
+void PGASetDebugFlag34(PGAContext *ctx, int Flag);
+void PGASetDebugFlag36(PGAContext *ctx, int Flag);
+void PGASetDebugFlag40(PGAContext *ctx, int Flag);
+void PGASetDebugFlag42(PGAContext *ctx, int Flag);
+void PGASetDebugFlag44(PGAContext *ctx, int Flag);
+void PGASetDebugFlag46(PGAContext *ctx, int Flag);
+void PGASetDebugFlag48(PGAContext *ctx, int Flag);
+void PGASetDebugFlag50(PGAContext *ctx, int Flag);
+void PGASetDebugFlag52(PGAContext *ctx, int Flag);
+void PGASetDebugFlag54(PGAContext *ctx, int Flag);
+void PGASetDebugFlag56(PGAContext *ctx, int Flag);
+void PGASetDebugFlag58(PGAContext *ctx, int Flag);
+void PGASetDebugFlag60(PGAContext *ctx, int Flag);
+void PGASetDebugFlag62(PGAContext *ctx, int Flag);
+void PGASetDebugFlag64(PGAContext *ctx, int Flag);
+void PGASetDebugFlag66(PGAContext *ctx, int Flag);
+void PGAPrintDebugOptions(PGAContext *ctx);
+
+/*****************************************
+*          duplcate.c
+*****************************************/
+
+
+int PGADuplicate(PGAContext *ctx, int p, int pop1, int pop2, int n);
+void PGAChange( PGAContext *ctx, int p, int pop );
+void PGASetNoDuplicatesFlag( PGAContext *ctx, int no_dup);
+int PGAGetNoDuplicatesFlag (PGAContext *ctx);
+
+/*****************************************
+*          evaluate.c
+*****************************************/
+
+
+void PGASetEvaluation ( PGAContext *ctx, int p, int pop, double val );
+double PGAGetEvaluation ( PGAContext *ctx, int p, int pop );
+void PGASetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop,
+                                   int status );
+int PGAGetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop );
+double PGAGetRealFromBinary(PGAContext *ctx, int p, int pop, int start,
+                            int end, double lower, double upper);
+double PGAGetRealFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                  int end, double lower, double upper);
+void PGAEncodeRealAsBinary(PGAContext *ctx, int p, int pop, int start,
+                               int end, double low, double high, double val);
+void PGAEncodeRealAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                              int end, double low, double high, double val);
+int PGAGetIntegerFromBinary(PGAContext *ctx, int p, int pop, int start,
+                                 int end);
+int PGAGetIntegerFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                   int end);
+void PGAEncodeIntegerAsBinary(PGAContext *ctx, int p, int pop, int start,
+                              int end, int val);
+void PGAEncodeIntegerAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                int end, int val);
+double PGAMapIntegerToReal (PGAContext *ctx, int v, int a, int b, double l,
+                            double u);
+int PGAMapRealToInteger(PGAContext *ctx, double r, double l, double u, int a,
+                        int b);
+
+/*****************************************
+*          fitness.c
+*****************************************/
+
+
+void PGAFitness ( PGAContext *ctx, int popindex );
+int PGARank( PGAContext *ctx, int p, int *order, int n );
+double PGAGetFitness ( PGAContext *ctx, int p, int pop );
+int PGAGetFitnessType (PGAContext *ctx);
+int PGAGetFitnessMinType (PGAContext *ctx);
+double PGAGetMaxFitnessRank (PGAContext *ctx);
+void PGASetFitnessType( PGAContext *ctx, int fitness_type);
+void PGASetFitnessMinType( PGAContext *ctx, int fitness_type);
+void PGASetMaxFitnessRank( PGAContext *ctx, double fitness_rank_max);
+void PGAFitnessLinearNormal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessLinearRank ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinReciprocal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinCmax ( PGAContext *ctx, PGAIndividual *pop );
+void PGASetFitnessCmaxValue( PGAContext *ctx, double val);
+double PGAGetFitnessCmaxValue (PGAContext *ctx);
+
+/*****************************************
+*          hamming.c
+*****************************************/
+
+double PGAHammingDistance( PGAContext *ctx, int popindex);
+
+/*****************************************
+*          heap.c
+*****************************************/
+
+
+void PGADblHeapSort ( PGAContext *ctx, double *a, int *idx, int n );
+void PGAIntHeapSort ( PGAContext *ctx, int *a, int *idx, int n );
+
+/*****************************************
+*          integer.c
+*****************************************/
+
+
+
+void PGASetIntegerAllele (PGAContext *ctx, int p, int pop, int i, int value);
+int PGAGetIntegerAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetIntegerInitPermute ( PGAContext *ctx, int min, int max);
+void PGASetIntegerInitRange (PGAContext *ctx, int *min, int *max);
+int PGAGetIntegerInitType (PGAContext *ctx);
+int PGAGetMinIntegerInitValue (PGAContext *ctx, int i);
+int PGAGetMaxIntegerInitValue (PGAContext *ctx, int i);
+void PGAIntegerCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGAIntegerMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGAIntegerOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGAIntegerPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGAIntegerCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGAIntegerDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGAIntegerInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGAIntegerBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          mpi_stub.c
+*****************************************/
+
+
+/*****************************************
+*          mutation.c
+*****************************************/
+
+
+
+int PGAMutate(PGAContext *ctx, int p, int pop);
+void PGASetMutationType( PGAContext *ctx, int mutation_type);
+int PGAGetMutationType (PGAContext *ctx);
+void PGASetMutationRealValue( PGAContext *ctx, double val);
+double PGAGetMutationRealValue (PGAContext *ctx);
+void PGASetMutationIntegerValue( PGAContext *ctx, int val);
+int PGAGetMutationIntegerValue (PGAContext *ctx);
+void PGASetMutationBoundedFlag(PGAContext *ctx, int val);
+int PGAGetMutationBoundedFlag(PGAContext *ctx);
+void PGASetMutationProb(PGAContext *ctx, double mutation_prob);
+double PGAGetMutationProb (PGAContext *ctx);
+
+/*****************************************
+*          parallel.c
+*****************************************/
+
+
+  
+void PGARunGM(PGAContext *ctx, double (*f)(PGAContext *, int, int),
+	      MPI_Comm comm);
+void PGAEvaluateSeq(PGAContext *ctx, int pop,
+		    double (*f)(PGAContext *, int, int));
+void PGAEvaluateCoop(PGAContext *ctx, int pop,
+		     double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluateMS(PGAContext *ctx, int pop,
+		   double (*f)(PGAContext *c, int p, int pop), MPI_Comm comm);
+void PGAEvaluateSlave(PGAContext *ctx, int pop,
+		      double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluate(PGAContext *ctx, int pop,
+		 double (*f)(PGAContext *, int, int), MPI_Comm comm);
+MPI_Datatype PGABuildDatatype(PGAContext *ctx, int p, int pop);
+void PGASendIndividual(PGAContext *ctx, int p, int pop, int dest, int tag,
+                       MPI_Comm comm);
+void PGAReceiveIndividual(PGAContext *ctx, int p, int pop, int source, int tag,
+                          MPI_Comm comm, MPI_Status *status);
+void PGASendReceiveIndividual(PGAContext *ctx, int send_p, int send_pop,
+                              int dest, int send_tag, int recv_p, int recv_pop,
+                              int source, int recv_tag, MPI_Comm comm,
+                              MPI_Status *status);
+void PGARunIM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+void PGARunNM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+int PGAGetRank (PGAContext *ctx, MPI_Comm comm);
+int PGAGetNumProcs (PGAContext *ctx, MPI_Comm comm);
+void PGASetNumIslands( PGAContext *ctx, int n);
+int PGAGetNumIslands (PGAContext *ctx);
+void PGASetNumDemes( PGAContext *ctx, int numdemes);
+int PGAGetNumDemes (PGAContext *ctx);
+void PGASetCommunicator( PGAContext *ctx, MPI_Comm comm);
+MPI_Comm PGAGetCommunicator( PGAContext *ctx);
+
+/*****************************************
+*          pga.c
+*****************************************/
+
+
+void PGARun(PGAContext *ctx, double (*evaluate)(PGAContext *c, int p, int pop));
+void PGARunMutationAndCrossover (PGAContext *ctx, int oldpop, int newpop);
+void PGARunMutationOrCrossover ( PGAContext *ctx, int oldpop, int newpop );
+void PGAUpdateGeneration(PGAContext *ctx, MPI_Comm comm);
+int PGAGetDataType (PGAContext *ctx);
+int PGAGetOptDirFlag (PGAContext *ctx);
+int PGAGetStringLength (PGAContext *ctx);
+int PGAGetVariableStringLength (PGAContext *ctx, int p, int pop);
+int PGAGetGAIterValue (PGAContext *ctx);
+void PGASetMutationOrCrossoverFlag( PGAContext *ctx, int flag);
+void PGASetMutationAndCrossoverFlag( PGAContext *ctx, int flag);
+int PGAGetMutationOrCrossoverFlag (PGAContext *ctx);
+int PGAGetMutationAndCrossoverFlag (PGAContext *ctx);
+
+/*****************************************
+*          pop.c
+*****************************************/
+
+
+void PGASortPop ( PGAContext *ctx, int pop );
+int PGAGetPopSize (PGAContext *ctx);
+int PGAGetNumReplaceValue (PGAContext *ctx);
+int PGAGetPopReplaceType (PGAContext *ctx);     
+int PGAGetSortedPopIndex ( PGAContext *ctx, int n );
+void PGASetPopSize (PGAContext *ctx, int popsize);
+void PGASetNumReplaceValue( PGAContext *ctx, int pop_replace);
+void PGASetPopReplaceType( PGAContext *ctx, int pop_replace);
+
+/*****************************************
+*          random.c
+*****************************************/
+
+
+int PGARandomFlip ( PGAContext *ctx, double p );
+int PGARandomInterval( PGAContext *ctx, int start, int end);
+double PGARandom01( PGAContext *ctx, int newseed );
+double PGARandomUniform( PGAContext *ctx, double start, double end);
+double PGARandomGaussian( PGAContext *ctx, double mean, double sigma);
+int PGAGetRandomSeed(PGAContext *ctx);
+void PGASetRandomSeed(PGAContext *ctx, int seed);
+
+/*****************************************
+*          real.c
+*****************************************/
+
+
+void PGASetRealAllele (PGAContext *ctx, int p, int pop, int i, double value);
+double PGAGetRealAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetRealInitPercent ( PGAContext *ctx, double *median, double *percent);
+void PGASetRealInitRange (PGAContext *ctx, double *min, double *max);
+double PGAGetMinRealInitValue (PGAContext *ctx, int i);
+double PGAGetMaxRealInitValue (PGAContext *ctx, int i);
+int PGAGetRealInitType (PGAContext *ctx);
+void PGARealCreateString (PGAContext *ctx, int p, int pop, int initflag);
+int PGARealMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGARealOneptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealUniformCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                             int c1, int c2, int pop2);
+void PGARealPrintString (PGAContext *ctx, FILE *fp, int p, int pop);
+void PGARealCopyString ( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGARealDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGARealInitString ( PGAContext *ctx, int p, int pop);
+MPI_Datatype PGARealBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          report.c
+*****************************************/
+
+
+void PGAPrintReport(PGAContext *ctx, FILE *fp, int pop);
+void PGASetPrintOptions (PGAContext *ctx, int option);
+void PGASetPrintFrequencyValue( PGAContext *ctx, int print_freq);
+int PGAGetPrintFrequencyValue (PGAContext *ctx);
+void PGAPrintPopulation ( PGAContext *ctx, FILE *fp, int pop );
+void PGAPrintIndividual ( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGAPrintString ( PGAContext *ctx, FILE *file, int p, int pop );
+void PGAPrintContextVariable ( PGAContext *ctx, FILE *fp );
+
+/*****************************************
+*          restart.c
+*****************************************/
+
+void PGARestart(PGAContext *ctx, int source_pop, int dest_pop);
+void PGASetRestartFlag(PGAContext *ctx, int val);
+int PGAGetRestartFlag(PGAContext *ctx);
+void PGASetRestartFrequencyValue(PGAContext *ctx, int numiter);
+int PGAGetRestartFrequencyValue(PGAContext *ctx);
+void PGASetRestartAlleleChangeProb(PGAContext *ctx, double prob);
+double PGAGetRestartAlleleChangeProb(PGAContext *ctx);
+
+/*****************************************
+*          select.c
+*****************************************/
+
+void PGASelect( PGAContext *ctx, int popix );
+int PGASelectNextIndex ( PGAContext *ctx );
+void PGASetSelectType( PGAContext *ctx, int select_type);
+int PGAGetSelectType (PGAContext *ctx);
+void PGASetPTournamentProb(PGAContext *ctx, double ptournament_prob);
+double PGAGetPTournamentProb(PGAContext *ctx);
+int PGASelectProportional(PGAContext *ctx, PGAIndividual *pop);
+void PGASelectSUS( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectTournament( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectPTournament( PGAContext *ctx, PGAIndividual *pop );
+
+/*****************************************
+*          stop.c
+*****************************************/
+
+int PGADone(PGAContext *ctx, MPI_Comm comm);
+int PGACheckStoppingConditions( PGAContext *ctx);
+void PGASetStoppingRuleType (PGAContext *ctx, int stoprule);
+int PGAGetStoppingRuleType (PGAContext *ctx);
+void PGASetMaxGAIterValue(PGAContext *ctx, int maxiter);
+int PGAGetMaxGAIterValue (PGAContext *ctx);
+void PGASetMaxNoChangeValue(PGAContext *ctx, int max_no_change);
+void PGASetMaxSimilarityValue(PGAContext *ctx, int max_similarity);
+
+/*****************************************
+*          system.c
+*****************************************/
+
+
+void PGAError( PGAContext *ctx, char *msg,
+               int level, int datatype, void *data );
+void PGADestroy (PGAContext *ctx);
+void PGADestroyUD (PGAContext *ctx,int,int);
+int PGAGetMaxMachineIntValue (PGAContext *ctx);
+int PGAGetMinMachineIntValue (PGAContext *ctx);
+double PGAGetMaxMachineDoubleValue (PGAContext *ctx);
+double PGAGetMinMachineDoubleValue (PGAContext *ctx);
+void PGAUsage( PGAContext *ctx );
+void PGAPrintVersionNumber( PGAContext *ctx );
+
+/*****************************************
+*          user.c
+*****************************************/
+
+
+void PGASetUserFunction(PGAContext *ctx, int constant, void *f);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function returns the size of the user data vector in all    */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+int PGAGetSizeUD(PGAContext *ctx);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function sets the size of the user data vector in all       */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void PGASetSizeUD(PGAContext *ctx,int s);
+
+/**************************************************************************/
+/*       EHW project Modification ( ADDITION OF FUNCTION )                */
+/*       This function gets the user data vector in all                   */
+/*       individual's chromosome vector                                   */
+/**************************************************************************/
+void *PGAGetUD(PGAContext *ctx,int s,int pop);
+
+
+/*****************************************
+*          utility.c
+*****************************************/
+
+
+double PGAMean ( PGAContext *ctx, double *a, int n);
+double PGAStddev ( PGAContext *ctx, double *a, int n, double mean);
+int PGARound(PGAContext *ctx, double x);
+void PGACopyIndividual( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGACheckSum(PGAContext *ctx, int p, int pop);
+int PGAGetWorstIndex(PGAContext *ctx, int pop);
+int PGAGetBestIndex(PGAContext *ctx, int pop);
+PGAIndividual *PGAGetIndividual ( PGAContext *ctx, int p, int pop);
+void PGAUpdateAverage(PGAContext *ctx, int pop);
+void PGAUpdateOnline(PGAContext *ctx, int pop);
+void PGAUpdateOffline(PGAContext *ctx, int pop);
+int PGAComputeSimilarity(PGAContext *ctx, PGAIndividual *pop);
+
+
+#endif
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/README	(revision 6168)
@@ -0,0 +1,14 @@
+PGAPack Utilities
+
+convertfortran.pl  -- Simple perl script to convert the fortran examples to 
+		      work on "64-bit" machines -- Alpha, Power Challenge, T3D.
+
+upgrade_script.pl  -- Script to _assist_ in the upgrade from version 0.2 to 
+		      version 1.0.  Will catch _most_ of the changes.
+
+wordsizes.c        -- C program to show the sizes of various datastructues
+                      used by PGAPack.  Useful for configuration.  See
+                      wordsizes.c for more information.
+
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/convertfortran.pl
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/convertfortran.pl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/convertfortran.pl	(revision 6168)
@@ -0,0 +1,22 @@
+#!/usr/local/bin/perl
+#
+#  Convert fortran examples to 64-bit compatable codes.
+#
+#  This script will replace all occurances of "integer ctx" and 
+#  "integer comm" with "integer*8 ctx" and "integer*8 comm", respectively.
+#  (Uncomment the commented lines below to convert back to 32-bit examples.)
+#
+#  WARNING:  This is done inplace -- no backup files are created!
+#
+foreach (@ARGV) {
+    print "Converting $_\n";
+    $file = $_;
+    open(In, "$file"); @Stuff = <In>; close(In);
+    foreach (@Stuff) {
+        s/integer\s*ctx/integer\*8 ctx/g;
+        s/integer\s*comm/integer\*8 comm/g;
+#        s/integer\*8\s*ctx/integer ctx/g;
+#        s/integer\*8\s*comm/integer comm/g;
+    }
+    open(Out, ">$file"); print Out @Stuff; close(Out);
+}    
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/upgrade_script.pl
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/upgrade_script.pl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/upgrade_script.pl	(revision 6168)
@@ -0,0 +1,119 @@
+#!/usr/local/bin/perl
+#
+#  This is a simple script to help in upgrading from V0.2 to V1.0.  It will
+#  make most (if not all) of the function name and #define name changes, and
+#  will print a message where they are done.
+#
+#  Not guaranteed to work 100%, but should take the majority of the pain
+#  out of it.
+#
+#  One thing to pay careful attention to is PGASetMutateOnlyNoCross.  This
+#  was replaced by two functions, PGASetMuataionOrCrossoverFlag and
+#  PGASetMuatationAndCrossoverFlag.  Here, we replace it with the first.
+#
+#  Usage:
+#      upgrade_script.pl <FilesToUpgrade>
+#
+#      It will move the original files to filename.old, and create the 
+#      new files with the original name.
+#
+
+if (ARGV eq 0) {
+    print "Usage: upgrade_script.pl <FilesToUpgrade>\n";
+    exit(-1);
+}
+
+foreach $filename (@ARGV) {
+    rename($filename, "$filename.bak");
+    open(INPUT, "$filename.bak");
+    open(OUTPUT, ">$filename");
+    while (<INPUT>) {
+        &do_rename;
+        print OUTPUT $_;
+    }
+    close(OUTPUT);
+    close(INPUT);
+}
+
+
+sub do_rename {
+    s/PGABinaryBuildIndividualDatatype/PGABinaryBuildDatatype/g;
+    s/PGABinaryRandomize/PGABinaryInitString/g;
+    s/PGABinaryWrite/PGABinaryPrint/g;
+    s/PGABinaryWriteString/PGABinaryPrintString/g;
+    s/PGABuildIndividualDatatype/PGABuildDatatype/g;
+    s/PGACharacterBuildIndividualDatatype/PGACharacterBuildDatatype/g;
+    s/PGACharacterRandomize/PGACharacterInitString/g;
+    s/PGACharacterWriteString/PGACharacterPrintString/g;
+    s/PGAFitnessLinNor/PGAFitnessLinearNormal/g;
+    s/PGAFitnessLinRank/PGAFitnessLinearRank/g;
+    s/PGAFitnessMinRecprl/PGAFitnessMinReciprocal/g;
+    s/PGAGetEvalUpToDate/PGAGetEvaluationUpToDateFlag/g;
+    s/PGAGetEvaluate/PGAGetEvaluation/g;
+    s/PGAGetFitnessRankMax/PGAGetMaxFitnessRank/g;
+    s/PGAGetBest/PGAGetBestIndex/g;
+    s/PGAGetWorst/PGAGetWorstIndex/g;
+    s/PGAGetInitIntegerMax/PGAGetMaxIntegerInitValue/g;
+    s/PGAGetInitIntegerMin/PGAGetMinIntegerInitValue/g;
+    s/PGAGetInitRealMax/PGAGetMaxRealInitValue/g;
+    s/PGAGetInitRealMin/PGAGetMinRealInitValue/g;
+    s/PGAGetIntegerType/PGAGetIntegerInitType/g;
+    s/PGAGetIter/PGAGetGAIterValue/g;
+    s/PGAGetMaxDouble/PGAGetMaxMachineDoubleValue/g;
+    s/PGAGetMaxInt/PGAGetMaxMachineIntValue/g;
+    s/PGAGetMaxIter/PGAGetMaxGAIterValue/g;
+    s/PGAGetMinDouble/PGAGetMinMachineDoubleValue/g;
+    s/PGAGetMinInt/PGAGetMinMachineIntValue/g;
+    s/PGAGetMutateIntegerVal/PGAGetMutationIntegerValue/g;
+    s/PGAGetMutateOnlyNoCross/PGAGetMutationAndCrossoverFlag/g;
+    s/PGAGetMutateRealVal/PGAGetMutationRealValue/g;
+    s/PGAGetNoDuplicates/PGAGetNoDuplicatesFlag/g;
+    s/PGAGetNprocs/PGAGetNumProcs/g;
+    s/PGAGetNumReplace/PGAGetNumReplaceValue/g;
+    s/PGAGetOptDir/PGAGetOptDirFlag/g;
+    s/PGAGetPID/PGAGetRank/g;
+    s/PGAGetPopReplace/PGAGetPopReplaceType/g;
+    s/PGAGetPrintFreq/PGAGetPrintFrequency/g;
+    s/PGAGetRandomInit/PGAGetRandomInitFlag/g;
+    s/PGAGetRestart/PGAGetRestartFlag/g;
+    s/PGAGetRestartFrequency/PGAGetRestartFrequencyValue/g;
+    s/PGAGetSortPop/PGAGetSortedPopIndex/g;
+    s/PGAGetStoppingRule/PGAGetStoppingRuleType/g;
+    s/PGAGetStringLen/PGAGetStringLength/g;
+    s/PGAGetUniformCrossProb/PGAGetUniformCrossoverProb/g;
+    s/PGAIntegerBuildIndividualDatatype/PGAIntegerBuildDatatype/g;
+    s/PGAIntegerRandomize/PGAIntegerInitString/g;
+    s/PGAIntegerWriteString/PGAIntegerPrintString/g;
+    s/PGAParallelDone/PGADoneMS/g;
+    s/PGAParallelEvaluateMS/PGAEvaluateMS/g;
+    s/PGAPrintContext/PGAPrintContextVariable/g;
+    s/PGAPrintVersion/PGAPrintVersionNumber/g;
+    s/PGARealBuildIndividualDatatype/PGARealBuildDatatype/g;
+    s/PGARealRandomize/PGARealInitString/g;
+    s/PGARealWriteString/PGARealPrintString/g;
+    s/PGARunMutateAndCross/PGARunMutationAndCrossover/g;
+    s/PGARunMutateOrCross/PGARunMutationOrCrossover/g;
+    s/PGASelectNext/PGASelectNextIndex/g;
+    s/PGASetCharacterInit/PGASetCharacterInitType/g;
+    s/PGASetEvaluate/PGASetEvaluation/g;
+    s/PGASetEvalUpToDate/PGASetEvaluationUpToDateFlag/g;
+    s/PGASetFitnessRankMax/PGASetMaxFitnessRank/g;
+    s/PGASetMaxIter/PGASetMaxGAIterValue/g;
+    s/PGASetMaxNoChange/PGASetMaxNoChangeValue/g;
+    s/PGASetMaxSimilarity/PGASetMaxSimilarityValue/g;
+    s/PGASetMutateOnlyNoCross/PGASetMutationOrCrossoverFlag/g;
+    s/PGASetMutationIntegerVal/PGASetMutationIntegerValue/g;
+    s/PGASetMutationRealVal/PGASetMutationRealValue/g;
+    s/PGASetNoDuplicates/PGASetNoDuplicatesFlag/g;
+    s/PGASetNumReplace/PGASetNumReplaceValue/g;
+    s/PGASetPopReplacement/PGASetPopReplacementType/g;
+    s/PGASetPrintFreq/PGASetPrintFrequencyValue/g;
+    s/PGASetRandomInit/PGASetRandomInitFlag/g;
+    s/PGASetRestart/PGASetRestartFlag/g;
+    s/PGASetRestartFrequency/PGASetRestartFrequencyValue/g;
+    s/PGASetStoppingRule/PGASetStoppingRuleType/g;
+    s/PGASetSupportingDebugFlags/PGASetDebugFlag/g;
+    s/PGASetUniformCrossProb/PGASetUniformCrossoverProb/g;
+    s/PGAWriteString/PGAPrintString/g;
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/wordsizes.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/wordsizes.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/gekco/pgapack/util/wordsizes.c	(revision 6168)
@@ -0,0 +1,34 @@
+
+#define WL 32
+#define FAKE_MPI
+
+#include <stdio.h>
+#include "../include/pgapack.h"
+
+/*
+ *  Compile with: cc -o wordsizes wordsizes.c
+ *
+ *  Any size WL can be used -- it will not affect the sizes below.
+ *
+ *  FAKE_MPI will also not affect the sizes of the structures below,
+ *  but will simplify the compilation.  
+ *
+ *  If PGAContext * is 8 bytes, then you have a "64-bit" machine.  Be
+ *  sure to use integer*8 for the PGAContext variable, and integer*4
+ *  (usually just integer) for everything else.
+ *
+ */
+void main(void) {
+    printf("Sizes of various datatypes in bytes.\n\n");
+    printf("sizeof(PGAContext *):      %2d\n", sizeof(PGAContext *));
+    printf("sizeof(PGABinary):         %2d\n", sizeof(PGABinary));
+    printf("sizeof(PGAReal):           %2d\n", sizeof(PGAReal));
+    printf("sizeof(PGAInteger):        %2d\n", sizeof(PGAInteger));
+    printf("sizeof(PGACharacter):      %2d\n", sizeof(PGACharacter));
+
+    printf("sizeof(int):               %2d\n", sizeof(int));
+    printf("sizeof(long int):          %2d\n", sizeof(long int));
+
+    printf("sizeof(double):            %2d\n", sizeof(double));
+    printf("sizeof(char):              %2d\n", sizeof(char));
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/CHANGES
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/CHANGES	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/CHANGES	(revision 6168)
@@ -0,0 +1,208 @@
+Changes in Version 1.0
+======================
+
+        1)  Added support for parallel execution of the global model (single 
+            population) using MPI (Message Passing Interface).
+
+        2)  Added support for a restart operator.  The best string is used
+            to reinitialize the population.
+
+	3)  Added support for new native data type Character.
+
+        4)  Added support to specify the multiplier of the worst evaluation 
+            value when remapping a minimization problem.
+
+        5)  Separated specification of mutation type from rate.
+
+        6)  Added new integer mutation operators.
+
+        7)  Added an option to maintain integer and real allele values within
+            the range specified on initialization after mutation.
+
+	8)  The configure script argument -optimize has been removed and
+            replaced with the -debug switch for compiling a debug version.
+            An optimized version of PGAPack is now built by default.
+
+	9)  The configure script argument -arch AIX has been replaced with
+            -arch rs6000.
+
+        10)  The configure script now accepts the -cflags and -flags switchs to
+            supply supply options to the C and FORTRAN compiler, respectively.
+
+	11)  Changed PGATRUE and PGAFALSE to PGA_TRUE and PGA_FALSE.
+
+	12) Renamed debug macros to begin with PGA_DEBUG instead of PGADEBUG.
+
+	13) Renamed report macros to begin with PGA_REPORT (instead of, for
+            example PGA_ONLINE).
+
+	14) Removed macro PGAERROR from pgapack.h.
+
+	15) Rewrote PGARandomInterval(ctx, L, U) so that it would not
+	    return L-1.  It now returns [L, U].
+
+	16) PGADone, PGAUpdateGenertaion and PGAEvaluate all take an MPI
+	    communicator as the last argument.  See PGARunGM in parallel.c
+	    for details on how to rewrite a user run routine.
+
+	17) Removed "Time" from the output.
+
+	18) Shortened the names of the source files as follows:
+
+		character.c                  char.c
+		crossover.c                  cross.c
+		duplicate.c                  duplcate.c
+		f2c_interface.c              f2c.c
+
+	19) Shortened the name of the examples files as follows:
+
+		maxbit_custom.c              maxbitc.c
+		maxbit_menu.c                maxbitm.c
+		maxint_custom.c              maxbitc.c
+		rastrigin.c                  rstrgnb.c
+		real_rastrigin.c             rstrgnr.c
+		udt_struct.c                 udtstr.c
+		udt_struct_array.c           udtastr.c
+
+	20) Replaced the function names on the left with the function	
+	    names on the right.  The Perl script ./util/upgrade_script.pl
+            may be of use in automating part of the renaming process on
+            exisiting files.
+
+	PGABinaryBuildIndividualDatatype()
+					-> PGABinaryBuildDatatype()
+	PGABinaryRandomize()		-> PGABinaryInitString()
+	PGABinaryWrite()		-> PGABinaryPrint()
+	PGABinaryWriteString()		-> PGABinaryPrintString()
+	PGABuildIndividualDatatype()	-> PGABuildDatatype()
+	PGACharacterBuildIndividualDatatype()
+					-> PGACharacterBuildDatatype()
+	PGACharacterRandomize()		-> PGACharacterInitString()
+	PGACharacterWriteString()	-> PGACharacterPrintString()
+	PGAFitnessLinNor()		-> PGAFitnessLinearNormal()
+	PGAFitnessLinRank()		-> PGAFitnessLinearRank()
+	PGAFitnessMinRecprl()		-> PGAFitnessMinReciprocal()
+	PGAGetEvalUpToDate()		-> PGAGetEvaluationUpToDateFlag()
+	PGAGetEvaluate()		-> PGAGetEvaluation()
+	PGAGetFitnessRankMax()		-> PGAGetMaxFitnessRank()
+	PGAGetBest()			-> PGAGetBestIndex()
+	PGAGetWorst()			-> PGAGetWorstIndex()
+	PGAGetInitIntegerMax()		-> PGAGetMaxIntegerInitValue()
+	PGAGetInitIntegerMin()		-> PGAGetMinIntegerInitValue()
+	PGAGetInitRealMax()		-> PGAGetMaxRealInitValue()
+	PGAGetInitRealMin()		-> PGAGetMinRealInitValue()
+	PGAGetIntegerType()		-> PGAGetIntegerInitType()
+	PGAGetIter()			-> PGAGetGAIterValue()
+	PGAGetMaxDouble()		-> PGAGetMaxMachineDoubleValue()
+	PGAGetMaxInt()			-> PGAGetMaxMachineIntValue()
+	PGAGetMaxIter()			-> PGAGetMaxGAIterValue()
+	PGAGetMinDouble()		-> PGAGetMinMachineDoubleValue()
+	PGAGetMinInt()			-> PGAGetMinMachineIntValue()
+	PGAGetMutateIntegerVal()	-> PGAGetMutationIntegerValue()
+	PGAGetMutateOnlyNoCross()	-> PGAGetMutationAndCrossoverFlag()
+                                        -> PGAGetMutationOrCrossoverFlag()
+	PGAGetMutateRealVal()		-> PGAGetMutationRealValue()	
+	PGAGetNoDuplicates()		-> PGAGetNoDuplicatesFlag()
+	PGAGetNprocs()			-> PGAGetNumProcs()
+	PGAGetNumReplace()		-> PGAGetNumReplaceValue()
+	PGAGetOptDir()			-> PGAGetOptDirFlag()
+	PGAGetPID()			-> PGAGetRank()
+	PGAGetPopReplace()		-> PGAGetPopReplaceType()
+	PGAGetPrintFreq()		-> PGAGetPrintFrequency()
+	PGAGetRandomInit()		-> PGAGetRandomInitFlag()
+	PGAGetRestart()			-> PGAGetRestartFlag()
+	PGAGetRestartFrequency()	-> PGAGetRestartFrequencyValue()
+	PGAGetSortPop()			-> PGAGetSortedPopIndex()
+	PGAGetStoppingRule()		-> PGAGetStoppingRuleType()
+	PGAGetStringLen()		-> PGAGetStringLength()
+	PGAGetUniformCrossProb()	-> PGAGetUniformCrossoverProb()
+	PGAIntegerBuildIndividualDatatype()
+					-> PGAIntegerBuildDatatype()	
+	PGAIntegerRandomize()		-> PGAIntegerInitString()
+	PGAIntegerWriteString()		-> PGAIntegerPrintString()
+	PGAParallelDone()		-> PGADoneMS()
+	PGAParallelEvaluateMS()		-> PGAEvaluateMS()
+	PGAPrintContext()		-> PGAPrintContextVariable()
+	PGAPrintVersion()		-> PGAPrintVersionNumber()
+	PGARealBuildIndividualDatatype()-> PGARealBuildDatatype()
+	PGARealRandomize()		-> PGARealInitString()
+	PGARealWriteString()		-> PGARealPrintString()
+	PGARunMutateAndCross()		-> PGARunMutationAndCrossover()
+	PGARunMutateOrCross()		-> PGARunMutationOrCrossover()
+	PGASelectNext()			-> PGASelectNextIndex()
+	PGASetCharacterInit()		-> PGASetCharacterInitType()	
+	PGASetEvaluate()		-> PGASetEvaluation()
+	PGASetEvalUpToDate()		-> PGASetEvaluationUpToDateFlag()
+	PGASetFitnessRankMax()		-> PGASetMaxFitnessRank()
+	PGASetIntegerInitLU()           -> PGASetIntegerInitRange()
+	PGASetMaxIter()			-> PGASetMaxGAIterValue()
+	PGASetMaxNoChange()		-> PGASetMaxNoChangeValue()
+	PGASetMaxSimilarity()		-> PGASetMaxSimilarityValue()
+	PGASetMutateOnlyNoCross()	-> PGASetMutationOrCrossoverFlag()
+                                        -> PGASetMutationAndCrossoverFlag()
+	PGASetMutationIntegerVal()	-> PGASetMutationIntegerValue()
+	PGASetMutationRealVal()		-> PGASetMutationRealValue()
+	PGASetNoDuplicates()		-> PGASetNoDuplicatesFlag()
+	PGASetNumReplace()		-> PGASetNumReplaceValue()
+	PGASetPopReplacement()		-> PGASetPopReplacementType()
+	PGASetPrintFreq()		-> PGASetPrintFrequencyValue()
+	PGASetRandomInit()		-> PGASetRandomInitFlag()
+	PGASetRealInitLU()              -> PGASetRealInitRange()
+	PGASetRestart()			-> PGASetRestartFlag()
+	PGASetRestartFrequency()	-> PGASetRestartFrequencyValue()
+	PGASetStoppingRule()		-> PGASetStoppingRuleType()
+	PGASetSupportingDebugFlags()	-> PGASetDebugFlag()
+	PGASetUniformCrossProb()	-> PGASetUniformCrossoverProb()
+	PGAWriteString()		-> PGAPrintString()	
+
+
+Changes in Version 0.2b
+=======================
+
+        1) In PGABinaryTwoPointCrossover, add<ed a test before left-shifting.
+           The right operand of a shift must be strictly less than the number
+           of bits in the left operand, otherwise the result is undefined.
+
+        2) In udt_char.c, changed the data type to signed char since whether
+           char is signed is implementation dependent.
+
+        3) In real_rastrigin, made upper and lower to be dynamic arrays rather
+           than static arrays to allow variable string length.
+
+
+Changes in Version 0.2a
+=======================
+
+        1) Created pgapack-0.2.a.tar.Z to replace pgapack-0.2.tar.Z
+           when we found the IRIX's do not have a ranlib (unless it
+           is in /usr/local.
+
+        2) Deleted a space from ./examples/c/Makefile.in
+
+        3) Added the -w flag to FFLAGS for the freebsd version to
+           suppress warnings.
+
+
+Changes in Version 0.2
+======================
+
+	1) In PGASetUp, we changed the default value for the number of
+           individuals to replace each generation from 10 to 10% of the
+           population size.
+
+        2) Took all the parallel stuff out.
+
+        3) Defined PGAPrintReport and put various PGAPrint functions in 
+           the new file system.c
+
+        5) Changed EvalUpToDate to all lower case.
+
+        6) Changed PGARunMutateOnlyNoCross to take PGA_OLDPOP and PGA_NEWPOP
+           as arguments
+
+        7) Changed the low-level ops functions to take p,pop as arguments
+           instead of a void pointer
+
+        8) Changed PGAMutate to a 3-argument function.  It just mutates,
+           but does not copy the string to its final location.  Use
+            PGACopyIndividual for that.
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/COPYRIGHT
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/COPYRIGHT	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/COPYRIGHT	(revision 6168)
@@ -0,0 +1,60 @@
+
+********************************************************************* 
+(C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+*********************************************************************
+
+This software was authored by
+
+D. Levine
+Mathematics and Computer Science Division Argonne National Laboratory
+Argonne IL 60439
+levine@mcs.anl.gov
+(708) 252-6735
+(708) 252-5986 (FAX)
+
+with programming assistance of participants in Argonne National 
+Laboratory's SERS program.
+
+This program contains material protectable under copyright laws of the 
+United States.  Permission is hereby granted to use it, reproduce it, 
+to translate it into another language, and to redistribute it to 
+others at no charge except a fee for transferring a copy, provided 
+that you conspicuously and appropriately publish on each copy the 
+University of Chicago's copyright notice, and the disclaimer of 
+warranty and Government license included below.  Further, permission 
+is hereby granted, subject to the same provisions, to modify a copy or 
+copies or any portion of it, and to distribute to others at no charge 
+materials containing or derived from the material.
+
+The developers of the software ask that you acknowledge its use in any 
+document referencing work based on the  program, such as published 
+research.  Also, they ask that you supply to Argonne National 
+Laboratory a copy of any published research referencing work based on 
+the software.
+
+Any entity desiring permission for further use must contact:
+
+J. Gleeson
+Industrial Technology Development Center Argonne National Laboratory
+Argonne IL 60439
+gleesonj@smtplink.eid.anl.gov
+(708) 252-6055
+
+******************************************************************** 
+DISCLAIMER
+
+THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+INFRINGE PRIVATELY OWNED RIGHTS.
+
+********************************************************************** 
+GOVERNMENT LICENSE
+
+The Government is granted for itself and others acting on its behalf a 
+paid-up, non-exclusive, irrevocable worldwide license in this computer 
+software to reproduce, prepare derivative works, and perform publicly 
+and display publicly.
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/Makefile.in	(revision 6168)
@@ -0,0 +1,46 @@
+RM      = @RM@
+SHELL   = @SHELL@
+
+default:
+	@echo "Choices are:"
+	@echo "make install       (install the PGAPack distribution)"
+	@echo "make clean         (return to the state just after configure was run)"
+	@echo "make spotless      (keep ONLY *.a and include files)"
+
+install: 
+	@echo "Installing PGAPack . . ."
+	@cd source ; make
+	@echo "Installing Examples . . ."
+	@cd examples ; make
+	@echo "Installing Test program . . ."
+	@cd test ; make
+	@echo "Install successful."
+	@echo "	Please \"cd test\" and run the \"instverf\" program"
+	@echo "        to verify the correctness of your installation."
+
+clean:
+	@echo "Removing superfluous files . . ."
+	@$(RM) lib/*/*.o
+	@cd examples ; make clean
+	@cd test ; make clean
+
+spotless:
+	@echo "WARNING:  Removing docs, man, examples, and source directories"
+	@echo "          in 5 seconds!!"
+	@sleep 1
+	@echo " .. 4 .."
+	@sleep 1
+	@echo " .. 3 .."
+	@sleep 1
+	@echo " .. 2 .."
+	@sleep 1
+	@echo " .. 1 .."
+	@sleep 1
+	@echo " .. 0 .."
+	@echo " .. Removing everything except libraries and includes!!"
+	@sleep 1
+	@$(RM) -rf docs examples man source test util lib/*/*.o
+
+distribution:
+	@/home/pgapack/util/make_distribution	
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/README	(revision 6168)
@@ -0,0 +1,231 @@
+This is the top-level README for PGAPack V1.0
+
+Copyright
+=========
+See the file COPYRIGHT for Copyright and disclaimer information.
+
+Introduction
+============
+PGAPack is a general-purpose, data-structure-neutral, parallel genetic
+algorithm library being developed at Argonne National Laboratory.  
+Key features are:
+
+* Callable from Fortran or C.
+* Runs on uniprocessors, parallel computers, and workstation networks.
+* Binary-, integer-, real-, and character-valued native data types.
+* Object-oriented data structure neutral design. 
+* Parameterized population replacement.
+* Multiple choices for selection, crossover, and mutation operators.
+* Easy integration of hill-climbing heuristics. 
+* Easy-to-use interface for novice and application users.
+* Fully extensible to support custom operators and new data types.
+* Extensive debugging facilities.
+* A large set of example problems.
+
+
+Availability
+============
+PGAPack is freely available.  The complete distribution is available
+by anonymous ftp from from ftp.mcs.anl.gov in the file 
+pub/pgapack/pgapack.tar.Z.  The distribution contains all source code,
+installation instructions, users guide, and a collection of examples in C and
+Fortran. Additional information is available on the World Wide Web at
+http://www.mcs.anl.gov/pgapack.html.
+
+
+Computational Environment
+=========================
+PGAPack is written in ANSI C and uses the MPI message passing interface
+and should run on most uniprocessors, parallel computers, and workstation
+networks.  PGAPack has been tested on the workstations and parallel computers 
+specified by the ARCH_TYPE variable below.
+
+
+Documentation
+=============
+* The PGAPack users guide is in ./docs/user_guide.ps.
+* Man pages for PGAPack functions are in the ./man directory.
+* Installation instructions are in this README file and the users guide.
+* Example problems are in the ./examples directory.
+
+
+Installation Requirements
+=========================
+To compile you must have an ANSI C compiler that includes a full
+implementation of the Standard C library and related header files.  To build a
+*parallel* version of PGAPack you must provide an implementation of MPI
+(Message Passing Interface) for the parallel computer or workstation network
+you are running on.
+
+Most of our testing and development was done using MPICH, a freely available
+implementation of MPI.  MPICH runs on many parallel computers and
+workstation networks and is publicly available and free.  The complete
+distribution is available by anonymous ftp from ftp.mcs.anl.gov.  Take the
+file mpich.tar.Z from the directory pub/mpi.  Additional information about
+MPICH is avaliable on the World Wide Web at http://www.mcs.anl.gov/mpi.
+
+Installation Instructions
+=========================
+When installing PGAPack you make two choices: whether to build a sequential
+(the default) or parallel version, and whether to build a debug or optimized
+(the default) version.  In broad outline, the
+installation steps are as follows.
+
+1.  Make a directory to install PGAPack in (mkdir /usr/local/pga).
+2.  Change directories to the directory created in the last step
+    (cd /usr/local/pga).
+3.  Obtain the compressed tar file pgapack.tar.Z by anonymous ftp in
+    ftp.mcs.anl.gov from the directory pub/pgapack.
+4.  Uncompress the tar file (uncompress pgapack.tar.Z).
+5.  Untar the uncompressed tar file (tar xvf ./pgapack.tar).
+6.  Run configure to configure the makefiles (configure -arch ARCH_TYPE)
+    where ARCH_TYPE is one of
+
+    sun4           for Sun SparcStations workstations,
+    next           for NeXT workstations,
+    rs600          for IBM RS6000 workstations,
+    irix           for Silicon Graphics workstations,
+    hpux           for Hewlett Packard workstations,
+    alpha          for DEC Alpha workstations,
+    linux          for machines running Linux,
+    freebsd        for machines running FreeBSD,
+    generic        for generic 32-bit machines, 
+    powerchallenge for the Silicon Graphics Power Challenge Array,
+    challenge      for the Silicon Graphics Challenge,
+    t3d            for the Cray T3D,
+    sp2            for the IBM SP2,
+    paragon        for the Intel Paragon, or
+    exemplar       for the Convex  Exemplar.
+
+    The full configure options are configure -arch ARCH_TYPE [-cc CC] 
+    [-cflags CFLAGS] [-f77 FC] [-fflags FFLAGS] [-debug]
+    [-mpiinc MPI_INCLUDE_DIRECTORY] [-mpilib MPI_LIBRARY]  [-help]
+
+    where all parameters except -arch are optional and do the following:
+
+    [-cc]:       The name of the ANSI C compiler, cc by default.
+    [-cflags]:   Options passed to the C compiler.
+    [-f77]:      The name of the Fortran 77 compiler, f77 by default.
+                 (The Fortran compiler is used only to compile the Fortran
+                 examples in the [./examples/] directory.)
+    [-fflags]:   Options passed to the Fortran compiler.
+    [-debug]:    If specified, enables the debugging features
+                 and compiles the source code with the -g flag.
+    [-mpiinc]:   The *directory* where MPI include files are located.
+    [-mpilib]:   The *full path* to the MPI library.  
+
+    If the [-mpilib] and [-mpiinc] options are specified, a parallel version 
+    of PGAPack will be built.  If these flags are not specified a sequential
+    version of PGAPack will be built.
+
+7.  Execute the makefile (make install).
+8.  Add PGAPack's man pages to your man page path.
+    (setenv MANPATH "$MANPATH"":/home/pgapack/man")
+9.  Execute a simple test problem
+    
+    Sequential version
+    ------------------
+    C:        /usr/local/pga/examples/c/maxbit
+    Fortran:  /usr/local/pga/examples/fortran/maxbit
+
+    Parallel version
+    ------------------
+    C:        mpirun -np 4 /usr/local/pga/examples/c/maxbit
+    Fortran:  mpirun -np 4 /usr/local/pga/examples/fortran/maxbit
+
+    If a parallel version of PGAPack was used, the actual commands to execute 
+    a parallel program depend on the particular MPI implementation and
+    parallel computer.  If the MPICH implementation was used the "mpirun"
+    command can be used to execute a parallel program on most systems.
+
+
+Example Installation
+====================
+Assuming you have the compressed tar file, pgapack.tar.Z, containing the
+distribution in /home/username.  To build a sequential version of PGAPack
+containing debug features for a Sun SparcStation in /usr/local/pga and run a
+test example, type:
+
+    uncompress /home/username/pgapack.tar.Z
+    mkdir /usr/local/pga
+    cd /usr/local/pga
+    tar xvf /home/username/pgapack.tar
+    configure -arch sun4 -debug
+    make install
+    /usr/local/pga/examples/c/maxbit
+
+To build a parallel version of PGAPack for an IBM SP parallel computer using
+an MPI implementation with include files in /usr/local/mpi/include and library
+in /usr/local/mpi/lib, and run a test example, type:
+
+   uncompress /home/username/pgapack.tar.Z
+   mkdir /usr/local/pga
+   cd /usr/local/pga
+   tar xvf /home/username/pgapack.tar
+   configure -arch rs6000 -mpiinc /usr/local/mpi/include \
+             -mpilib /usr/local/mpi/lib/libmpi.a
+   make install
+   mpirun -np 4 /usr/local/pga/examples/c/maxbit
+
+
+PGAPack on PCs 
+===================
+PGAPack has not been ported to MS-DOS, Windows 3.1, Windows 95, or Apple OS.
+As mentioned earlier, however, PGAPack is written in ANSI standard C and
+should compile in these environments.  Be aware, however, that PGAPack's
+random number generator, PGARandom01, assumes certain machine characteristics
+for ints and floats that may not correspond with what your PC and/or compiler
+support, resulting in erroneous values.
+
+
+Structure of the Distribution Directory
+=======================================
+CHANGES:      Changes new to this release of PGAPack.
+COPYRIGHT:    Copyright and disclaimer information.
+README:       This file.
+configure.in: The ``source code'' for the configure script.
+configure:    Unix shell script to configure Makefile.in for a specific
+              architecture.
+Makefile.in:  Prototype that is configured into ``Makefile'' by configure.
+docs:         Directory containing documentation.
+examples:     A directory containing C and Fortran examples.
+include:      The PGAPack include directory.
+lib:          The directory the library will be installed in.
+man:          The directory containing the PGAPack man pages.
+source:       The source code for the PGAPack system.
+test:         A directory containing programs to verify the installation.
+
+
+Email Addresses
+===============
+To join the PGAPack mailing list to receive announcements of new versions,
+enhancements, and bug fixes, send electronic mail to pgapack@mcs.anl.gov.  Bug
+reports should be sent to pgapack-bugs@mcs.anl.gov.  The World Wide Web page
+for PGAPack is http://www.mcs.anl.gov/pgapack.html and contains up-to-date
+news and a list of outstanding bug reports.
+
+
+When reporting a bug please include as much information and documentation as
+possible.  Helpful information would include PGAPack version number, MPI
+implementation and version used (if any), configuration options, type of
+computer system, problem description and error message output.  It is helpful
+if you put a PGAPrintContextVariable call before and after the PGASetUp call.
+Additionally, if possible, build a debug version of PGAPack and send
+``high-level'' output from running your program with the trace facility
+enabled.
+
+
+Contributions
+=============
+PGAPack was written to be extensible in two ways: adding new operators that
+work with existing data types, and defining new data types.  Enhancements of
+either type that you wish to share are welcome for possible inclusion in
+future versions of PGAPack.
+
+
+Acknowledgment
+==============
+Users of PGAPack are asked to acknowledge its use in any document referencing
+work based on the program, such as published research.  Also, please supply
+to us a copy of any published research referencing work based on the software.
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/configure
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/configure	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/configure	(revision 6168)
@@ -0,0 +1,830 @@
+#!/bin/sh
+# This file is configure.
+#
+# Make all changes to configure.in, if at all possible.  After changing,
+# run "autoconf".  If autoconf is not installed, then make changes to
+# configure.
+#
+# Documentation on the autoconf program exists in GNU info file format.
+# To read this, run emacs and type C-h i.  Then press the down arrow
+# until you come to the line beginning "* Autoconf:".  Pressing enter on
+# this line will bring up the documentaition.
+#
+# Type "configure" (i.e., no arguments) or read below for usage information.
+#
+print_error() {
+    echo "$*" 2>&1 ;
+}
+
+print_usage()
+{
+cat <<.
+Usage: configure -arch ARCH_TYPE -cc CC -f77 FC -debug -help
+                 -cflags CFLAGS -fflags FFLAGS
+                 -mpiinc MPI_INC_DIR -mpilib MPI_LIB
+where
+   ARCH_TYPE    = the type of machine that PGAPack is to be configured for
+   CC           = the name of the ANSI C compiler
+   FC           = the name of the FORTRAN 77 compiler
+   CFLAGS       = C compiler flags
+   FFLAGS       = FORTRAN compiler flags
+   MPI_INC_DIR  = the MPI include directory
+   MPI_LIB      = the full path to the MPI library
+
+
+Known architectures are:
+
+Workstations
+	sun4		(SUN OS 4.x)
+	hpux		(HP UX)
+	irix    	(Silicon Graphics IRIX)
+	alpha		(DEC Alpha)
+	rs6000		(AIX for IBM RS6000)	
+	next		(NeXT 680x0)
+	freebsd		(PC clones running FreeBSD)
+	linux		(PC clones running LINUX)
+	generic		(Generic 32-bit UNIX-like machine)
+
+MPP's
+	powerchallenge	(Silicon Graphics PowerChallenge)
+	challenge	(Silicon Graphics Challenge)
+	t3d		(Cray-T3D)
+	sp2		(IBM SP2)
+	paragon		(Intel Paragon)
+	exemplar	(Convex Exemplar)
+
+
+In the absence of the -f77 or -cc options, configure assumes the name of 
+a FORTRAN 77 or ANSI C compiler based on the architecture type.
+
+If the -debug flag is set, then PGAPack will be built for debugging.  This
+enables the extensive debugging options and datatype checks.
+
+If both -mpiinc and -mpilib are missing, PGAPack is built using a non-parallel
+"stub" library for all MPI calls.
+
+The -help flag causes this usage guide to be printed.
+
+Example 1:
+----------
+Configure and build for parallel operation on the sun4 architectue.  MPI is
+in /usr/local/mpi; the MPI library is /usr/local/mpi/lib/sun4/ch_p4/libmpi.a.
+
+  configure -arch sun4 -mpilib /usr/local/mpi/lib/sun4/ch_p4/libmpi.a \
+            -mpiinc /usr/local/mpi/include
+  make install
+
+Example 2:
+----------
+Configure and build a debug sequential library on the rs6000 architecture.
+
+  configure -arch rs6000 -debug
+  make install
+.
+}
+
+###############################################################################
+# This section initializes the variables that will be used throughout
+# the script.
+###############################################################################
+#!/bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf.
+# Copyright (C) 1991, 1992, 1993 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# Usage: configure [--srcdir=DIR] [--host=HOST] [--gas] [--nfp]
+#        [--prefix=PREFIX] [--exec-prefix=PREFIX] [--with-PACKAGE[=VALUE]]
+# Ignores all args except --srcdir, --prefix, --exec-prefix, and
+# --with-PACKAGE[=VALUE] unless this script has special code to handle it.
+
+for arg
+do
+  # Handle --exec-prefix with a space before the argument.
+  if test x$next_exec_prefix = xyes; then exec_prefix=$arg; next_exec_prefix=
+  # Handle --host with a space before the argument.
+  elif test x$next_host = xyes; then next_host=
+  # Handle --prefix with a space before the argument.
+  elif test x$next_prefix = xyes; then prefix=$arg; next_prefix=
+  # Handle --srcdir with a space before the argument.
+  elif test x$next_srcdir = xyes; then srcdir=$arg; next_srcdir=
+  else
+    case $arg in
+     # For backward compatibility, recognize -exec-prefix and --exec_prefix.
+     -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*)
+	exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+     -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- | --exec | --exe | --ex | --e)
+	next_exec_prefix=yes ;;
+
+     -gas | --gas | --ga | --g) ;;
+
+     -host=* | --host=* | --hos=* | --ho=* | --h=*) ;;
+     -host | --host | --hos | --ho | --h)
+	next_host=yes ;;
+
+     -nfp | --nfp | --nf) ;;
+
+     -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+	prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+     -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+	next_prefix=yes ;;
+
+     -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=* | --s=*)
+	srcdir=`echo $arg | sed 's/[-a-z_]*=//'` ;;
+     -srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s)
+	next_srcdir=yes ;;
+
+     -with-* | --with-*)
+       package=`echo $arg|sed -e 's/-*with-//' -e 's/=.*//'`
+       # Reject names that aren't valid shell variable names.
+       if test -n "`echo $package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+         echo "configure: $package: invalid package name" >&2; exit 1
+       fi
+       package=`echo $package| sed 's/-/_/g'`
+       case "$arg" in
+         *=*) val="`echo $arg|sed 's/[^=]*=//'`" ;;
+         *) val=1 ;;
+       esac
+       eval "with_$package='$val'" ;;
+
+     -v | -verbose | --verbose | --verbos | --verbo | --verb | --ver | --ve | --v)
+       verbose=yes ;;
+
+     *) ;;
+    esac
+  fi
+done
+
+trap 'rm -fr conftest* confdefs* core; exit 1' 1 3 15
+trap 'rm -f confdefs*' 0
+
+# NLS nuisances.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+if test "${LC_ALL+set}" = 'set' ; then LC_ALL=C; export LC_ALL; fi
+if test "${LANG+set}"   = 'set' ; then LANG=C;   export LANG;   fi
+
+rm -f conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+compile='${CC-cc} $CFLAGS conftest.c -o conftest $LIBS >/dev/null 2>&1'
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+unique_file=source/pga.c
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  srcdirdefaulted=yes
+  # Try the directory containing this script, then `..'.
+  prog=$0
+  confdir=`echo $prog|sed 's%/[^/][^/]*$%%'`
+  test "X$confdir" = "X$prog" && confdir=.
+  srcdir=$confdir
+  if test ! -r $srcdir/$unique_file; then
+    srcdir=..
+  fi
+fi
+if test ! -r $srcdir/$unique_file; then
+  if test x$srcdirdefaulted = xyes; then
+    echo "configure: Can not find sources in \`${confdir}' or \`..'." 1>&2
+  else
+    echo "configure: Can not find sources in \`${srcdir}'." 1>&2
+  fi
+  exit 1
+fi
+# Preserve a srcdir of `.' to avoid automounter screwups with pwd.
+# But we can't avoid them for `..', to make subdirectories work.
+case $srcdir in
+  .|/*|~*) ;;
+  *) srcdir=`cd $srcdir; pwd` ;; # Make relative path absolute.
+esac
+
+
+# Save the original args to write them into config.status later.
+configure_args="$*"
+
+ARCH=""                         # architecture type
+PARALLEL=0                      # parallel libray, or use stub routines?
+OPTIMIZE=1                      # optimized?
+CPPFLAGS=""                     # flags to send to the C preprocessor
+LDFLAGS=""                      # link flags
+CFLAGS=""                       # flags to send to the C compiler
+FFLAGS=""                       # flags to send to the FORTRAN compiler
+PGA_DIR="`pwd`"                 # the root of the pgapack tree
+PGA_DIR=`echo $PGA_DIR | sed "s=tmp_mnt/=="`    # get rid of 'tmp_mnt/'
+HEADERS="$PGA_DIR/include/pgapack.h" # headers upon which pgapack depends
+INCLUDES="-I$PGA_DIR/include"   # directories where to search for include files
+LIB_DIRS=""                     # directories where to search for libraries
+LIBS=""                         # libraries with which to link
+MPI_INC_DIR=""
+MPI_LIB=""
+SHELL="/usr/bin/sh"
+RM="/bin/rm -f"                 # command to force removal of files
+
+OBJS='$(PGA_LIB_DIR)/binary.o        \\\
+      $(PGA_LIB_DIR)/char.o          \\\
+      $(PGA_LIB_DIR)/cmdline.o       \\\
+      $(PGA_LIB_DIR)/create.o        \\\
+      $(PGA_LIB_DIR)/cross.o         \\\
+      $(PGA_LIB_DIR)/debug.o         \\\
+      $(PGA_LIB_DIR)/duplcate.o      \\\
+      $(PGA_LIB_DIR)/evaluate.o      \\\
+      $(PGA_LIB_DIR)/fitness.o       \\\
+      $(PGA_LIB_DIR)/hamming.o       \\\
+      $(PGA_LIB_DIR)/heap.o          \\\
+      $(PGA_LIB_DIR)/integer.o       \\\
+      $(PGA_LIB_DIR)/mutation.o      \\\
+      $(PGA_LIB_DIR)/parallel.o      \\\
+      $(PGA_LIB_DIR)/pga.o           \\\
+      $(PGA_LIB_DIR)/pop.o           \\\
+      $(PGA_LIB_DIR)/random.o        \\\
+      $(PGA_LIB_DIR)/real.o          \\\
+      $(PGA_LIB_DIR)/report.o        \\\
+      $(PGA_LIB_DIR)/restart.o       \\\
+      $(PGA_LIB_DIR)/select.o        \\\
+      $(PGA_LIB_DIR)/stop.o          \\\
+      $(PGA_LIB_DIR)/system.o        \\\
+      $(PGA_LIB_DIR)/user.o          \\\
+      $(PGA_LIB_DIR)/utility.o'      # these are pgapack's object files
+
+###############################################################################
+# This section parse the command line options. There a two types of options:
+# those that take arguments and those that don't.  Parsing the case where an
+# option takes an argument is a little tricky.  This is how it works.  Suppose
+# that the program comes upon "-cc".  Then we know that the next argument
+# will be the name of the C compiler.  Hence, we set the flag next_cc to be
+# equal to "yes".  The next time through the loop, it will be the case that
+# x$next_cc equal "xyes" because $next_cc expands to "yes".  Thus, we know that
+# this argument is the name of the compiler and we assign it to USR_CC.  Then
+# we set next_cc back to a null string.  This way on the next time through
+# the loop x$next_cc will equal just "x".  Since the shell initializes
+# variables to null strings, we do not have to initialize the "next_" family
+# of variables by hand.
+###############################################################################
+for arg
+do
+    if test x$next_arch = xyes
+        then
+            ARCH=$arg
+            next_arch=
+        elif test x$next_mpiinc = xyes
+            then
+                MPI_INC_DIR=$arg
+                next_mpiinc=
+        elif test x$next_mpilib = xyes
+            then
+                MPI_LIB=$arg
+                next_mpilib=
+        elif test x$next_f77 = xyes
+            then
+                USR_FC=$arg
+                next_f77=
+        elif test x$next_cc = xyes
+            then
+                USR_CC=$arg
+                next_cc=
+        elif test x$next_cflags = xyes
+            then
+                CFLAGS="$arg $CFLAGS"
+                next_cflags=
+        elif test x$next_fflags = xyes
+            then
+                FFLAGS="$arg $FFLAGS"
+                next_fflags=
+        else
+            case $arg in
+                -arch)
+                    next_arch=yes
+                    ;;
+                -f77)
+                    next_f77=yes
+                    ;;
+                -cc)
+                    next_cc=yes
+                    ;;
+                -mpiinc)
+                    next_mpiinc=yes
+                    PARALLEL=1
+                    ;;
+                -mpilib)
+                    next_mpilib=yes
+                    PARALLEL=1
+                    ;;
+                -debug)
+                    OPTIMIZE=0
+                    ;;
+                -cflags)
+                    next_cflags=yes
+                    ;;
+                -fflags)
+                    next_fflags=yes
+                    ;;
+                -help)
+                    print_usage >& 2
+                    exit 1
+                    ;;
+                *) 
+                    ;;
+            esac
+    fi
+done
+
+if test "$MPI_LIB" -a "$MPI_INC_DIR" ; then
+    if test ! -d "$MPI_INC_DIR" ; then
+        print_error "MPI_INC_DIR == $MPI_INC_DIR is not a valid directory!"
+        exit 1
+    fi
+    if test ! -f "$MPI_INC_DIR/mpi.h" ; then
+        print_error "Couldn't find $MPI_INC_DIR/mpi.h!"
+        exit 1
+    fi
+
+    if test ! -f "$MPI_LIB" ; then
+        print_error "MPI_LIB == $MPI_LIB is not a file!"
+        exit 1
+    fi
+
+    PARALLEL=1
+else
+    PARALLEL=0
+    CPPFLAGS="-DFAKE_MPI $CPPFLAGS"
+fi
+
+if test $OPTIMIZE -eq 1 ; then
+	CPPFLAGS="-DOPTIMIZE $CPPFLAGS"
+	CFLAGS="-O $CFLAGS"
+	FFLAGS="-O $FFLAGS"
+	PGA_LIB="pgaO"
+else
+	CFLAGS="-g $CFLAGS"
+	FFLAGS="-g $FFLAGS"
+	PGA_LIB="pgag"
+fi
+
+
+###############################################################################
+# This section sets the default values of certain variables based upon the
+# architecture type specified.  If no architecture was specified, the script
+# issues an error and aborts.
+###############################################################################
+if test -z "$ARCH"
+    then
+        print_error "You must specify the architecture with -arch <value>"
+        print_error "Valid architectures are the following:"	
+	print_error " Workstations      MPP's"
+	print_error "    sun4        powerchallenge"
+	print_error "    next        challenge"
+	print_error "    rs6000      t3d"
+	print_error "    freebsd     sp2"
+	print_error "    irix        paragon"
+	print_error "    linux       exemplar"
+	print_error "    hpux"
+	print_error "    alpha"
+	print_error "    generic"
+	print_error ""
+	print_error "For more information type configure -help."
+        exit 1
+fi
+
+case $ARCH in
+    sun4)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    next)
+        CC=cc
+        FC=
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    rs6000)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+        ;;
+    freebsd)
+        CC=cc
+        FC=f77
+	FFLAGS="-w"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    irix)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    alpha)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=64 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    hpux)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    linux)
+	SHELL="/bin/sh"
+        CC=cc
+        FC=f77
+	FFLAGS="-w"
+	LDFLAGS="-s $LDFLAGS"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    t3d)
+        CC=/mpp/bin/cc
+        FC=/mpp/bin/cf77
+        CFLAGS="-T cray-t3d"
+        FFLAGS="-C cray-t3d -dp"
+        CPPFLAGS="-DWL=64 -DFORTRANCAP $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    powerchallenge)
+        CC=cc
+        FC=f77
+	CFLAGS="-mips4 -fullwarn -64"
+        CPPFLAGS="-DWL=64 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    challenge)
+        CC=cc
+        FC=f77
+	CFLAGS="-mips2 -fullwarn -32"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    paragon)
+        CC=cc
+        FC=f77
+        CFLAGS="-nx $CFLAGS"
+        FFLAGS="-nx $FFLAGS"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    sp2)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+        ;;
+    exemplar)
+        CC=cc
+        FC=fort77
+	FFLAGS="-L/usr/lib -lU77 $FFLAGS"
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    *)
+	CC=cc
+	FC=f77
+	CPPFLAGS="-DWL=32 $CPPFLAGS"
+	print_error "WARNING:  Configuring for untested architecture.  Using"
+        print_error "          word size of 32 bits, cc and f77 as compilers."
+	print_error "          You might have trouble with Fortran programs"
+        print_error "          not linking correctly.  Check the manual on"
+        print_error "          the FORTRANUNDERSCORE #define."
+	;;
+esac
+
+###############################################################################
+# This section sets the variables that do not relate to parallel code.
+###############################################################################
+CPPFLAGS="-D$ARCH $CPPFLAGS"
+PGA_LIB_DIR="../lib/$ARCH"
+LIB_DIRS="-L$PGA_DIR/lib/$ARCH $LIB_DIRS"
+LIBS="-l$PGA_LIB $LIBS"
+
+#     Set output variable `RANLIB' to `ranlib' if `ranlib' is found,
+#     otherwise to `:' (do nothing).
+if test -z "$RANLIB"; then
+  # Extract the first word of `ranlib', so it can be a program name with args.
+  set dummy ranlib; word=$2
+  echo checking for $word
+  IFS="${IFS= 	}"; saveifs="$IFS"; IFS="${IFS}:"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/$word; then
+      RANLIB="ranlib"
+      break
+    fi
+  done
+  IFS="$saveifs"
+fi
+test -z "$RANLIB" && RANLIB=":"
+test -n "$RANLIB" && test -n "$verbose" && echo "	setting RANLIB to $RANLIB"
+
+
+#    "Determine a C compiler to use.  If `CC' is not already set in the
+#     environment, check for `gcc', and use `cc' if it's not found.  Set
+#     output variable `CC' to the name of the compiler found.
+#
+#    "If using the GNU C compiler, set shell variable `GCC' to `yes',
+#     empty otherwise.  If output variable `CFLAGS' was not already set,
+#     set it to `-g -O' for the GNU C compiler (`-O' on systems where
+#     GCC does not accept `-g'), or `-g' for other compilers."
+if test -n "$USR_CC"
+     then
+          CC=$USR_CC
+     else
+          if test -z "$CC"; then
+  # Extract the first word of `gcc', so it can be a program name with args.
+  set dummy gcc; word=$2
+  echo checking for $word
+  IFS="${IFS= 	}"; saveifs="$IFS"; IFS="${IFS}:"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/$word; then
+      CC="gcc"
+      break
+    fi
+  done
+  IFS="$saveifs"
+fi
+test -z "$CC" && CC="cc"
+test -n "$CC" && test -n "$verbose" && echo "	setting CC to $CC"
+
+# Find out if we are using GNU C, under whatever name.
+cat > conftest.c <<EOF
+#ifdef __GNUC__
+  yes
+#endif
+EOF
+${CC-cc} -E conftest.c > conftest.out 2>&1
+if egrep yes conftest.out >/dev/null 2>&1; then
+  GCC=1 # For later tests.
+fi
+rm -f conftest*
+
+fi
+
+#     Check for each program in the whitespace-separated list
+#     PROGS-TO-CHECK-FOR exists in `PATH'.  If it is found, set VARIABLE
+#     to the name of that program.  Otherwise, continue checking the
+#     next program in the list.  If none of the programs in the list are
+#     found, set VARIABLE to VALUE-IF-NOT-FOUND; if VALUE-IF-NOT-FOUND
+#     is not specified, the value of VARIABLE is not changed.
+if test -n "$USR_FC"
+     then
+          FC=$USR_FC
+     else
+          for p in f77 fortran xlf gf77 mpxlf if77
+do
+if test -z "$FC"; then
+  # Extract the first word of `$p', so it can be a program name with args.
+  set dummy $p; word=$2
+  echo checking for $word
+  IFS="${IFS= 	}"; saveifs="$IFS"; IFS="${IFS}:"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/$word; then
+      FC="$p"
+      break
+    fi
+  done
+  IFS="$saveifs"
+fi
+
+test -n "$FC" && test -n "$verbose" && echo "	setting FC to $FC"
+
+test -n "$FC" && break
+done
+
+fi
+
+# Originally had
+#                     OBJS="$OBJS $(PGA_LIB_DIR)/f2c.o"
+# However, freebsd bourne shell equates $(var) and `var`.  Hence, I had
+# to break the assignment up into two parts.  $FORTWRAP is a Makefile
+# dependency line defining how to compile f2c.c
+if test -n "$FC"
+    then
+	TEMP='$(PGA_LIB_DIR)/f2c.o'
+        OBJS="$OBJS $TEMP"
+        FORTWRAP='$(PGA_LIB_DIR)/f2c.o: f2c.c $(HEADERS)\
+	$(COMPILE.c) f2c.c'
+fi
+
+if test ! -d lib
+    then
+        mkdir lib
+fi
+
+if test ! -d lib/$ARCH
+    then
+        mkdir lib/$ARCH
+fi
+
+#  Set up symlinks for pgapackf.h to any directories with Fortran source
+rm -f ./examples/fortran/pgapackf.h ./examples/mgh/pgapackf.h ./test/pgapackf.h
+ln -s ../../include/pgapackf.h ./examples/fortran/pgapackf.h
+ln -s ../../include/pgapackf.h ./examples/mgh/pgapackf.h
+ln -s ../include/pgapackf.h    ./test/pgapackf.h
+
+#  Use the stub library.
+if test $PARALLEL -eq 0
+  then
+    rm -f ./include/mpi.h ./include/mpif.h ./examples/fortran/mpif.h ./examples/mgh/mpif.h ./test/mpif.h
+    ln -s fakempi_h include/mpi.h
+    ln -s fakempif_h include/mpif.h
+    ln -s ../../include/mpif.h ./examples/fortran/mpif.h
+    ln -s ../../include/mpif.h ./examples/mgh/mpif.h
+    ln -s ../include/mpif.h ./test/mpif.h
+    TEMP='$(PGA_LIB_DIR)/mpi_stub.o'
+    OBJS="$OBJS $TEMP"
+    MPICOMP='$(PGA_LIB_DIR)/mpi_stub.o: mpi_stub.c $(HEADERS)\
+	$(COMPILE.c) mpi_stub.c'
+#  The tab above is IMPORTANT!  Needed for make!
+else
+    rm -f ./include/mpi.h ./include/mpif.h ./examples/fortran/mpif.h ./examples/mgh/mpif.h ./test/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./examples/fortran/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./examples/mgh/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./test/mpif.h
+    LIBS="$LIBS $MPI_LIB"
+    INCLUDES="$INCLUDES -I$MPI_INC_DIR"
+fi
+
+LIBS="$LIBS -lm"
+CPPFLAGS="$INCLUDES $CPPFLAGS"
+LDFLAGS="$LDFLAGS $LIB_DIRS $LIBS"
+###############################################################################
+# This section exports the variables that have previously been set.
+# Configure creates the Makefiles listed on the last line from the
+# Makefile.in in each directory.  It does this by substituting the value
+# of $VAR for every occurent of @VAR@ in the Makefile.in.  For
+# example, if the characters @CC@ occur any place in a Makefile.in, they
+# will be replaced with the value that $CC has when ac_subst(CC) is
+# called.
+###############################################################################
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Set default prefixes.
+if test -n "$prefix"; then
+  test -z "$exec_prefix" && exec_prefix='${prefix}'
+  prsub="s%^prefix\\([ 	]*\\)=\\([ 	]*\\).*$%prefix\\1=\\2$prefix%"
+fi
+if test -n "$exec_prefix"; then
+  prsub="$prsub
+s%^exec_prefix\\([ 	]*\\)=\\([ 	]*\\).*$%exec_prefix\\1=\\2$exec_prefix%"
+fi
+# Quote sed substitution magic chars in DEFS.
+cat >conftest.def <<EOF
+$DEFS
+EOF
+escape_ampersand_and_backslash='s%[&\\]%\\&%g'
+DEFS=`sed "$escape_ampersand_and_backslash" <conftest.def`
+rm -f conftest.def
+# Substitute for predefined variables.
+
+trap 'rm -f config.status; exit 1' 1 3 15
+echo creating config.status
+rm -f config.status
+cat > config.status <<EOF
+#!/bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $configure_args
+
+for arg
+do
+  case "\$arg" in
+    -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo running \${CONFIG_SHELL-/bin/sh} $0 $configure_args
+    exec \${CONFIG_SHELL-/bin/sh} $0 $configure_args ;;
+    *) echo "Usage: config.status --recheck" 2>&1; exit 1 ;;
+  esac
+done
+
+trap 'rm -f Makefile source/Makefile test/Makefile test/Makefile \
+	  examples/Makefile examples/c/Makefile examples/fortran/Makefile \
+	  examples/mgh/Makefile; exit 1' 1 3 15
+RANLIB='$RANLIB'
+CC='$CC'
+FC='$FC'
+CFLAGS='$CFLAGS'
+FFLAGS='$FFLAGS'
+CPPFLAGS='$CPPFLAGS'
+FORTWRAP='$FORTWRAP'
+HEADERS='$HEADERS'
+LDFLAGS='$LDFLAGS'
+PARALLEL='$PARALLEL'
+PGA_LIB_DIR='$PGA_LIB_DIR'
+PGA_LIB='$PGA_LIB'
+OBJS='$OBJS'
+MPICOMP='$MPICOMP'
+RM='$RM'
+SHELL='$SHELL'
+LIBS='$LIBS'
+srcdir='$srcdir'
+DEFS='$DEFS'
+prefix='$prefix'
+exec_prefix='$exec_prefix'
+prsub='$prsub'
+extrasub='$extrasub'
+EOF
+cat >> config.status <<\EOF
+
+top_srcdir=$srcdir
+
+CONFIG_FILES=${CONFIG_FILES-"Makefile source/Makefile test/Makefile test/Makefile \
+	  examples/Makefile examples/c/Makefile examples/fortran/Makefile \
+	  examples/mgh/Makefile"}
+for file in .. ${CONFIG_FILES}; do if test "x$file" != x..; then
+  srcdir=$top_srcdir
+  # Remove last slash and all that follows it.  Not all systems have dirname.
+  dir=`echo $file|sed 's%/[^/][^/]*$%%'`
+  if test "$dir" != "$file"; then
+    test "$top_srcdir" != . && srcdir=$top_srcdir/$dir
+    test ! -d $dir && mkdir $dir
+  fi
+  echo creating $file
+  rm -f $file
+  echo "# Generated automatically from `echo $file|sed 's|.*/||'`.in by configure." > $file
+  sed -e "
+$prsub
+$extrasub
+s%@RANLIB@%$RANLIB%g
+s%@CC@%$CC%g
+s%@FC@%$FC%g
+s%@CFLAGS@%$CFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@FORTWRAP@%$FORTWRAP%g
+s%@HEADERS@%$HEADERS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@PARALLEL@%$PARALLEL%g
+s%@PGA_LIB_DIR@%$PGA_LIB_DIR%g
+s%@PGA_LIB@%$PGA_LIB%g
+s%@OBJS@%$OBJS%g
+s%@MPICOMP@%$MPICOMP%g
+s%@RM@%$RM%g
+s%@SHELL@%$SHELL%g
+s%@LIBS@%$LIBS%g
+s%@srcdir@%$srcdir%g
+s%@DEFS@%$DEFS%
+" $top_srcdir/${file}.in >> $file
+fi; done
+
+
+exit 0
+EOF
+chmod +x config.status
+${CONFIG_SHELL-/bin/sh} config.status
+
+
+if test ! -f ".pgapack" ; then
+  if test $PARALLEL -eq 1 ; then
+      OPERATION="parallel"
+      ECHO_LIBS="$MPI_LIB"
+  else
+      OPERATION="sequential"
+      ECHO_LIBS="stub routines in mpi_stub.c"
+  fi
+  if test $OPTIMIZE -eq 1 ; then
+      OPERATION="optimized $OPERATION"
+  else
+      OPERATION="debug $OPERATION"
+  fi
+  echo " "
+  echo "PGAPack has been configured for $OPERATION operation on"
+  echo "the $ARCH architecture, using $ECHO_LIBS."
+  echo " "
+  echo "**********************************************************************"
+  echo "*  Please register your copy of PGAPack by sending a mail message    *"
+  echo "*  to pgapack@mcs.anl.gov.  This will allow us to notify you of bug  *"
+  echo "*  fixes, enhancements, and new releases. The PGAPack homepage is at *"
+  echo "*  http://www.mcs.anl.gov/pgapack.html.                              *"
+  echo "**********************************************************************"
+  echo " "
+  echo "Type \"make install\" to install PGAPack."
+  echo " "
+fi
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/configure.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/configure.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/configure.in	(revision 6168)
@@ -0,0 +1,523 @@
+#!/bin/sh
+# This file is configure.
+#
+# Make all changes to configure.in, if at all possible.  After changing,
+# run "autoconf".  If autoconf is not installed, then make changes to
+# configure.
+#
+# Documentation on the autoconf program exists in GNU info file format.
+# To read this, run emacs and type C-h i.  Then press the down arrow
+# until you come to the line beginning "* Autoconf:".  Pressing enter on
+# this line will bring up the documentaition.
+#
+# Type "configure" (i.e., no arguments) or read below for usage information.
+#
+print_error() {
+    echo "$*" 2>&1 ;
+}
+
+print_usage()
+{
+cat <<.
+Usage: configure -arch ARCH_TYPE [-cc CC] [-f77 FC] [-debug] [-help]
+                 [-cflags CFLAGS] [-fflags FFLAGS]
+                 [-mpiinc MPI_INC_DIR -mpilib MPI_LIB]
+where
+   ARCH_TYPE    = the type of machine that PGAPack is to be configured for
+   CC           = the name of the ANSI C compiler
+   FC           = the name of the FORTRAN 77 compiler
+   CFLAGS       = C compiler flags
+   FFLAGS       = FORTRAN compiler flags
+   MPI_INC_DIR  = the MPI include directory
+   MPI_LIB      = the full path to the MPI library
+
+
+Known architectures are:
+
+Workstations
+	sun4		(SUN OS 4.x)
+	hpux		(HP UX)
+	irix    	(Silicon Graphics IRIX)
+	alpha		(DEC Alpha)
+	rs6000		(AIX for IBM RS6000)	
+	next		(NeXT 680x0)
+	freebsd		(PC clones running FreeBSD)
+	linux		(PC clones running LINUX)
+	generic		(Generic 32-bit UNIX-like machine)
+
+MPP's
+	powerchallenge	(Silicon Graphics PowerChallenge)
+	challenge	(Silicon Graphics Challenge)
+	t3d		(Cray-T3D)
+	sp2		(IBM SP2)
+	paragon		(Intel Paragon)
+	exemplar	(Convex Exemplar)
+
+
+In the absence of the -f77 or -cc options, configure assumes the name of 
+a FORTRAN 77 or ANSI C compiler based on the architecture type.
+
+If the -debug flag is set, then PGAPack will be built for debugging.  This
+enables the extensive debugging options and datatype checks.
+
+If both -mpiinc and -mpilib are missing, PGAPack is built using a non-parallel
+"stub" library for all MPI calls.
+
+The -help flag causes this usage guide to be printed.
+
+Example 1:
+----------
+Configure and build for parallel operation on the sun4 architectue.  MPI is
+in /usr/local/mpi; the MPI library is /usr/local/mpi/lib/sun4/ch_p4/libmpi.a.
+
+  configure -arch sun4 -mpilib /usr/local/mpi/lib/sun4/ch_p4/libmpi.a \
+            -mpiinc /usr/local/mpi/include
+  make install
+
+Example 2:
+----------
+Configure and build a debug sequential library on the rs6000 architecture.
+
+  configure -arch rs6000 -debug
+  make install
+.
+}
+
+###############################################################################
+# This section initializes the variables that will be used throughout
+# the script.
+###############################################################################
+AC_INIT(source/pga.c)
+ARCH=""                         # architecture type
+PARALLEL=0                      # parallel libray, or use stub routines?
+OPTIMIZE=1                      # optimized?
+CPPFLAGS=""                     # flags to send to the C preprocessor
+LDFLAGS=""                      # link flags
+CFLAGS=""                       # flags to send to the C compiler
+FFLAGS=""                       # flags to send to the FORTRAN compiler
+PGA_DIR="`pwd`"                 # the root of the pgapack tree
+PGA_DIR=`echo $PGA_DIR | sed "s=tmp_mnt/=="`    # get rid of 'tmp_mnt/'
+HEADERS="$PGA_DIR/include/pgapack.h" # headers upon which pgapack depends
+INCLUDES="-I$PGA_DIR/include"   # directories where to search for include files
+LIB_DIRS=""                     # directories where to search for libraries
+LIBS=""                         # libraries with which to link
+MPI_INC_DIR=""
+MPI_LIB=""
+SHELL="/usr/bin/sh"
+RM="/bin/rm -f"                 # command to force removal of files
+
+OBJS='$(PGA_LIB_DIR)/binary.o        \\\
+      $(PGA_LIB_DIR)/char.o          \\\
+      $(PGA_LIB_DIR)/cmdline.o       \\\
+      $(PGA_LIB_DIR)/create.o        \\\
+      $(PGA_LIB_DIR)/cross.o         \\\
+      $(PGA_LIB_DIR)/debug.o         \\\
+      $(PGA_LIB_DIR)/duplcate.o      \\\
+      $(PGA_LIB_DIR)/evaluate.o      \\\
+      $(PGA_LIB_DIR)/fitness.o       \\\
+      $(PGA_LIB_DIR)/hamming.o       \\\
+      $(PGA_LIB_DIR)/heap.o          \\\
+      $(PGA_LIB_DIR)/integer.o       \\\
+      $(PGA_LIB_DIR)/mutation.o      \\\
+      $(PGA_LIB_DIR)/parallel.o      \\\
+      $(PGA_LIB_DIR)/pga.o           \\\
+      $(PGA_LIB_DIR)/pop.o           \\\
+      $(PGA_LIB_DIR)/random.o        \\\
+      $(PGA_LIB_DIR)/real.o          \\\
+      $(PGA_LIB_DIR)/report.o        \\\
+      $(PGA_LIB_DIR)/restart.o       \\\
+      $(PGA_LIB_DIR)/select.o        \\\
+      $(PGA_LIB_DIR)/stop.o          \\\
+      $(PGA_LIB_DIR)/system.o        \\\
+      $(PGA_LIB_DIR)/user.o          \\\
+      $(PGA_LIB_DIR)/utility.o'      # these are pgapack's object files
+
+###############################################################################
+# This section parse the command line options. There a two types of options:
+# those that take arguments and those that don't.  Parsing the case where an
+# option takes an argument is a little tricky.  This is how it works.  Suppose
+# that the program comes upon "-cc".  Then we know that the next argument
+# will be the name of the C compiler.  Hence, we set the flag next_cc to be
+# equal to "yes".  The next time through the loop, it will be the case that
+# x$next_cc equal "xyes" because $next_cc expands to "yes".  Thus, we know that
+# this argument is the name of the compiler and we assign it to USR_CC.  Then
+# we set next_cc back to a null string.  This way on the next time through
+# the loop x$next_cc will equal just "x".  Since the shell initializes
+# variables to null strings, we do not have to initialize the "next_" family
+# of variables by hand.
+###############################################################################
+for arg
+do
+    if test x$next_arch = xyes
+        then
+            ARCH=$arg
+            next_arch=
+        elif test x$next_mpiinc = xyes
+            then
+                MPI_INC_DIR=$arg
+                next_mpiinc=
+        elif test x$next_mpilib = xyes
+            then
+                MPI_LIB=$arg
+                next_mpilib=
+        elif test x$next_f77 = xyes
+            then
+                USR_FC=$arg
+                next_f77=
+        elif test x$next_cc = xyes
+            then
+                USR_CC=$arg
+                next_cc=
+        elif test x$next_cflags = xyes
+            then
+                CFLAGS="$arg $CFLAGS"
+                next_cflags=
+        elif test x$next_fflags = xyes
+            then
+                FFLAGS="$arg $FFLAGS"
+                next_fflags=
+        else
+            case $arg in
+                -arch)
+                    next_arch=yes
+                    ;;
+                -f77)
+                    next_f77=yes
+                    ;;
+                -cc)
+                    next_cc=yes
+                    ;;
+                -mpiinc)
+                    next_mpiinc=yes
+                    PARALLEL=1
+                    ;;
+                -mpilib)
+                    next_mpilib=yes
+                    PARALLEL=1
+                    ;;
+                -debug)
+                    OPTIMIZE=0
+                    ;;
+                -cflags)
+                    next_cflags=yes
+                    ;;
+                -fflags)
+                    next_fflags=yes
+                    ;;
+                -help)
+                    print_usage >& 2
+                    exit 1
+                    ;;
+                *) 
+                    ;;
+            esac
+    fi
+done
+
+if test "$MPI_LIB" -a "$MPI_INC_DIR" ; then
+    if test ! -d "$MPI_INC_DIR" ; then
+        print_error "MPI_INC_DIR == $MPI_INC_DIR is not a valid directory!"
+        exit 1
+    fi
+    if test ! -f "$MPI_INC_DIR/mpi.h" ; then
+        print_error "Couldn't find $MPI_INC_DIR/mpi.h!"
+        exit 1
+    fi
+
+    if test ! -f "$MPI_LIB" ; then
+        print_error "MPI_LIB == $MPI_LIB is not a file!"
+        exit 1
+    fi
+
+    PARALLEL=1
+else
+    PARALLEL=0
+    CPPFLAGS="-DFAKE_MPI $CPPFLAGS"
+fi
+
+if test $OPTIMIZE -eq 1 ; then
+	CPPFLAGS="-DOPTIMIZE $CPPFLAGS"
+	CFLAGS="-O $CFLAGS"
+	FFLAGS="-O $FFLAGS"
+	PGA_LIB="pgaO"
+else
+	CFLAGS="-g $CFLAGS"
+	FFLAGS="-g $FFLAGS"
+	PGA_LIB="pgag"
+fi
+
+
+###############################################################################
+# This section sets the default values of certain variables based upon the
+# architecture type specified.  If no architecture was specified, the script
+# issues an error and aborts.
+###############################################################################
+if test -z "$ARCH"
+    then
+        print_error "You must specify the architecture with -arch <value>"
+        print_error "Valid architectures are the following:"	
+	print_error " Workstations      MPP's"
+	print_error "    sun4        powerchallenge"
+	print_error "    next        challenge"
+	print_error "    rs6000      t3d"
+	print_error "    freebsd     sp2"
+	print_error "    irix        paragon"
+	print_error "    linux       exemplar"
+	print_error "    hpux"
+	print_error "    alpha"
+	print_error "    generic"
+	print_error ""
+	print_error "For more information type configure -help."
+        exit 1
+fi
+
+case $ARCH in
+    sun4)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    next)
+        CC=cc
+        FC=
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    rs6000)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+        ;;
+    freebsd)
+        CC=cc
+        FC=f77
+	FFLAGS="-w"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    irix)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    alpha)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=64 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    hpux)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    linux)
+	SHELL="/bin/sh"
+        CC=cc
+        FC=f77
+	FFLAGS="-w"
+	LDFLAGS="-s $LDFLAGS"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    t3d)
+        CC=/mpp/bin/cc
+        FC=/mpp/bin/cf77
+        CFLAGS="-T cray-t3d"
+        FFLAGS="-C cray-t3d -dp"
+        CPPFLAGS="-DWL=64 -DFORTRANCAP $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    powerchallenge)
+        CC=cc
+        FC=f77
+	CFLAGS="-mips4 -fullwarn -64"
+        CPPFLAGS="-DWL=64 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    challenge)
+        CC=cc
+        FC=f77
+	CFLAGS="-mips2 -fullwarn -32"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    paragon)
+        CC=cc
+        FC=f77
+        CFLAGS="-nx $CFLAGS"
+        FFLAGS="-nx $FFLAGS"
+        CPPFLAGS="-DWL=32 -DFORTRANUNDERSCORE $CPPFLAGS"
+        ;;
+    sp2)
+        CC=cc
+        FC=f77
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+        ;;
+    exemplar)
+        CC=cc
+        FC=fort77
+	FFLAGS="-L/usr/lib -lU77 $FFLAGS"
+        CPPFLAGS="-DWL=32 $CPPFLAGS"
+	SHELL=/bin/sh
+        ;;
+    *)
+	CC=cc
+	FC=f77
+	CPPFLAGS="-DWL=32 $CPPFLAGS"
+	print_error "WARNING:  Configuring for untested architecture.  Using"
+        print_error "          word size of 32 bits, cc and f77 as compilers."
+	print_error "          You might have trouble with Fortran programs"
+        print_error "          not linking correctly.  Check the manual on"
+        print_error "          the FORTRANUNDERSCORE #define."
+	;;
+esac
+
+###############################################################################
+# This section sets the variables that do not relate to parallel code.
+###############################################################################
+CPPFLAGS="-D$ARCH $CPPFLAGS"
+PGA_LIB_DIR="../lib/$ARCH"
+LIB_DIRS="-L$PGA_DIR/lib/$ARCH $LIB_DIRS"
+LIBS="-l$PGA_LIB $LIBS"
+
+#     Set output variable `RANLIB' to `ranlib' if `ranlib' is found,
+#     otherwise to `:' (do nothing).
+AC_PROG_RANLIB()
+
+#    "Determine a C compiler to use.  If `CC' is not already set in the
+#     environment, check for `gcc', and use `cc' if it's not found.  Set
+#     output variable `CC' to the name of the compiler found.
+#
+#    "If using the GNU C compiler, set shell variable `GCC' to `yes',
+#     empty otherwise.  If output variable `CFLAGS' was not already set,
+#     set it to `-g -O' for the GNU C compiler (`-O' on systems where
+#     GCC does not accept `-g'), or `-g' for other compilers."
+if test -n "$USR_CC"
+     then
+          CC=$USR_CC
+     else
+          AC_PROG_CC()
+fi
+
+#     Check for each program in the whitespace-separated list
+#     PROGS-TO-CHECK-FOR exists in `PATH'.  If it is found, set VARIABLE
+#     to the name of that program.  Otherwise, continue checking the
+#     next program in the list.  If none of the programs in the list are
+#     found, set VARIABLE to VALUE-IF-NOT-FOUND; if VALUE-IF-NOT-FOUND
+#     is not specified, the value of VARIABLE is not changed.
+if test -n "$USR_FC"
+     then
+          FC=$USR_FC
+     else
+          AC_PROGRAMS_CHECK(FC, f77 fortran xlf gf77 mpxlf if77)
+fi
+
+# Originally had
+#                     OBJS="$OBJS $(PGA_LIB_DIR)/f2c.o"
+# However, freebsd bourne shell equates $(var) and `var`.  Hence, I had
+# to break the assignment up into two parts.  $FORTWRAP is a Makefile
+# dependency line defining how to compile f2c.c
+if test -n "$FC"
+    then
+	TEMP='$(PGA_LIB_DIR)/f2c.o'
+        OBJS="$OBJS $TEMP"
+        FORTWRAP='$(PGA_LIB_DIR)/f2c.o: f2c.c $(HEADERS)\
+	$(COMPILE.c) f2c.c'
+fi
+
+if test ! -d lib
+    then
+        mkdir lib
+fi
+
+if test ! -d lib/$ARCH
+    then
+        mkdir lib/$ARCH
+fi
+
+#  Set up symlinks for pgapackf.h to any directories with Fortran source
+rm -f ./examples/fortran/pgapackf.h ./examples/mgh/pgapackf.h ./test/pgapackf.h
+ln -s ../../include/pgapackf.h ./examples/fortran/pgapackf.h
+ln -s ../../include/pgapackf.h ./examples/mgh/pgapackf.h
+ln -s ../include/pgapackf.h    ./test/pgapackf.h
+
+#  Use the stub library.
+if test $PARALLEL -eq 0
+  then
+    rm -f ./include/mpi.h ./include/mpif.h ./examples/fortran/mpif.h ./examples/mgh/mpif.h ./test/mpif.h
+    ln -s fakempi_h include/mpi.h
+    ln -s fakempif_h include/mpif.h
+    ln -s ../../include/mpif.h ./examples/fortran/mpif.h
+    ln -s ../../include/mpif.h ./examples/mgh/mpif.h
+    ln -s ../include/mpif.h ./test/mpif.h
+    TEMP='$(PGA_LIB_DIR)/mpi_stub.o'
+    OBJS="$OBJS $TEMP"
+    MPICOMP='$(PGA_LIB_DIR)/mpi_stub.o: mpi_stub.c $(HEADERS)\
+	$(COMPILE.c) mpi_stub.c'
+#  The tab above is IMPORTANT!  Needed for make!
+else
+    rm -f ./include/mpi.h ./include/mpif.h ./examples/fortran/mpif.h ./examples/mgh/mpif.h ./test/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./examples/fortran/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./examples/mgh/mpif.h
+    ln -s $MPI_INC_DIR/mpif.h ./test/mpif.h
+    LIBS="$LIBS $MPI_LIB"
+    INCLUDES="$INCLUDES -I$MPI_INC_DIR"
+fi
+
+LIBS="$LIBS -lm"
+CPPFLAGS="$INCLUDES $CPPFLAGS"
+LDFLAGS="$LDFLAGS $LIB_DIRS $LIBS"
+###############################################################################
+# This section exports the variables that have previously been set.
+# Configure creates the Makefiles listed on the last line from the
+# Makefile.in in each directory.  It does this by substituting the value
+# of $VAR for every occurent of @VAR@ in the Makefile.in.  For
+# example, if the characters @CC@ occur any place in a Makefile.in, they
+# will be replaced with the value that $CC has when ac_subst(CC) is
+# called.
+###############################################################################
+AC_SUBST(CC)
+AC_SUBST(CFLAGS)
+AC_SUBST(FFLAGS)
+AC_SUBST(CPPFLAGS)
+AC_SUBST(FC)
+AC_SUBST(FORTWRAP)
+AC_SUBST(HEADERS)
+AC_SUBST(LDFLAGS)
+AC_SUBST(PARALLEL)
+AC_SUBST(PGA_LIB_DIR)
+AC_SUBST(PGA_LIB)
+AC_SUBST(OBJS)
+AC_SUBST(MPICOMP)
+AC_SUBST(RM)
+AC_SUBST(RANLIB)
+AC_SUBST(SHELL)
+AC_OUTPUT(Makefile source/Makefile test/Makefile test/Makefile \
+	  examples/Makefile examples/c/Makefile examples/fortran/Makefile \
+	  examples/mgh/Makefile)
+
+if test ! -f ".pgapack" ; then
+  if test $PARALLEL -eq 1 ; then
+      OPERATION="parallel"
+      ECHO_LIBS="$MPI_LIB"
+  else
+      OPERATION="sequential"
+      ECHO_LIBS="stub routines in mpi_stub.c"
+  fi
+  if test $OPTIMIZE -eq 1 ; then
+      OPERATION="optimized $OPERATION"
+  else
+      OPERATION="debug $OPERATION"
+  fi
+  echo " "
+  echo "PGAPack has been configured for $OPERATION operation on"
+  echo "the $ARCH architecture, using $ECHO_LIBS."
+  echo " "
+  echo "**********************************************************************"
+  echo "*  Please register your copy of PGAPack by sending a mail message    *"
+  echo "*  to pgapack@mcs.anl.gov.  This will allow us to notify you of bug  *"
+  echo "*  fixes, enhancements, and new releases. The PGAPack homepage is at *"
+  echo "*  http://www.mcs.anl.gov/pgapack.html.                              *"
+  echo "**********************************************************************"
+  echo " "
+  echo "Type \"make install\" to install PGAPack."
+  echo " "
+fi
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/Makefile.in	(revision 6168)
@@ -0,0 +1,26 @@
+FC    = @FC@
+RM    = @RM@
+SHELL = @SHELL@
+
+default:
+	@echo "Making C examples"
+	@make C
+	@echo "Making fortran examples"
+	@make Fortran
+
+C:
+	@cd c; make
+
+Fortran:
+	@if test -n "$(FC)" ; then\
+		cd fortran; make; cd ..;\
+		cd mgh; make;\
+	else\
+		echo "Fortran compiler unavailable";\
+	fi
+
+clean:
+	@cd c; make clean
+	@cd fortran; make clean
+	@cd mgh; make clean
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/README	(revision 6168)
@@ -0,0 +1,7 @@
+This is the top-level parallel examples directory.  Under it are the
+three following directories:
+
+c         -- contains example programs in C
+fortran   -- contains example programs in FORTRAN
+mgh       -- contains the More, Garbow, and Hillstrom test suite
+templates -- contains stub routines for all the user defined routines
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/Makefile.in	(revision 6168)
@@ -0,0 +1,54 @@
+CC          = @CC@
+PRECFLAGS   = @CFLAGS@
+CPPFLAGS    = @CPPFLAGS@
+FC          = @FC@
+RM          = @RM@
+LDFLAGS     = @LDFLAGS@
+SHELL       = @SHELL@
+
+#    "$@" expands to the target; "$?" expands to the dependency list
+CFLAGS      = -o $@ $? $(PRECFLAGS)
+
+LINK.c      = @echo "  Compiling $@" ; $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+
+default:
+	@make classic
+	@make dejong
+	@make example
+	@make maxbit
+	@make maxchar
+	@make maxint
+	@make name
+	@make namefull
+	@make udtstr
+
+classic: classic.c
+	$(LINK.c)
+
+dejong: dejong.c
+	$(LINK.c)
+
+example: example.c
+	$(LINK.c)
+
+maxbit: maxbit.c
+	$(LINK.c)
+
+maxchar: maxchar.c
+	$(LINK.c)
+
+maxint: maxint.c
+	$(LINK.c)
+
+name: name.c
+	$(LINK.c)
+
+namefull: namefull.c
+	$(LINK.c)
+
+udtstr: udtstr.c
+	$(LINK.c)
+
+clean: 
+	@$(RM) classic dejong example maxbit maxchar maxint name namefull \
+	       udtstr *.o
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/README	(revision 6168)
@@ -0,0 +1,31 @@
+Eight example C programs come with PGAPack.  What follows is a listing 
+of the names of the programs and a brief description of their function.
+
+classic.c  -- Optimizes Griewank's, Rastrigin's or Schwefel's test function.
+              All use a real valued datatype.  The problems are:
+		1.  Griewank
+		2.  Rastrigin
+		3.  Schwefel
+
+dejong.c   -- This program optimizes one of the five functions from the DeJong
+              test suite with a binary string as the chromosome.  Graycoding is
+              an option.
+
+example.c  -- An example from the User's Guide.
+
+maxbit.c   -- A very simple example that maximizes the number of 1's in a
+              binary string.  Does no I/O.
+
+maxchar.c  -- Maximizes the number of z's in a character string.  Does I/O.
+
+maxint.c   -- Maximizes the sum of all alleles in the gene.
+
+name.c     -- Evolves a character string to match a hard-coded string.  Does
+              no I/O, but shows how to use userfunctions InitString, Mutation,
+              and Done.  Also uses an elitist model of evolution with no
+              crossover.
+
+namefull.c -- Same idea as name.c, but uses all native user defined functions.
+
+udtstr.c   -- Uses a user-defined datatype, a single structure.
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/classic.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/classic.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/classic.c	(revision 6168)
@@ -0,0 +1,132 @@
+/*  Miscelaneous test functions.
+ *
+ *  Rather than deal with parallel I/O, we just list the tests here:
+ *     1.  Griewank
+ *     2.  Rastrigin
+ *     3.  Schwefel
+ *
+ */
+#include <pgapack.h>
+
+#ifndef M_PI
+#define M_PI 3.14159265354
+#endif
+
+double griewank(PGAContext *, int, int);
+double rastrigin(PGAContext *, int, int);
+double schwefel(PGAContext *, int, int);
+void   printResultInterpretation(PGAContext *, int);
+int    GetIntegerParameter(char *query);
+
+int    NumCoords[3]  = { 10, 20, 10 };
+double Lower[3]      = { -512.0, -5.12, -512.0 };
+double Upper[3]      = { 511.0, 5.11, 511.0 };
+
+/*******************************************************************
+ *                   user main program                              *
+ *******************************************************************/
+void main( int argc, char **argv ) {
+    PGAContext *ctx;     /* the context variable */
+    int testnum;         /* the DeJong test to run */
+    int maxiter;         /* the maximum number of iterations */
+    double l[20], u[20]; /* for initializing lu ranges */
+    int i;
+
+    MPI_Init(&argc, &argv); 
+
+    testnum = GetIntegerParameter("Which test? (1-Griewank, 2-Rastrigin, 3-Schwefel)\n") - 1;
+    maxiter = GetIntegerParameter("How many iterations?\n");
+
+    for (i=0; i<20; i++) {
+	l[i] = Lower[testnum];
+	u[i] = Upper[testnum];
+    }
+
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_REAL, 
+		    NumCoords[testnum], PGA_MINIMIZE);
+    
+    PGASetRandomSeed(ctx, 1);
+
+    PGASetRealInitRange(ctx, l, u);
+    PGASetMaxGAIterValue(ctx, maxiter);
+    
+    PGASetUp(ctx);
+
+    if (testnum == 0)    PGARun(ctx, griewank);
+    if (testnum == 1)    PGARun(ctx, rastrigin);
+    if (testnum == 2)    PGARun(ctx, schwefel);
+
+    PGADestroy(ctx);
+    
+    MPI_Finalize();
+}
+
+
+double griewank(PGAContext *ctx, int p, int pop) {
+    int i, len;
+    double term, sum, product;
+
+    sum = 0;
+    product = 1;
+    len = PGAGetStringLength(ctx);
+    for (i = 0; i < len; i++) {
+        term = PGAGetRealAllele(ctx, p, pop, i);
+        sum = sum + term * term / 4000.0;
+        product = product * cos(term / sqrt(((double)i + 1)));
+    }
+
+    return (1 + sum - product);
+}
+
+
+double rastrigin(PGAContext *ctx, int p, int pop)
+{
+    int i, len;
+    double term, sum;
+
+    sum = 0;
+    len = PGAGetStringLength(ctx);
+    for (i = 0; i < len; i++) {
+        term = PGAGetRealAllele(ctx, p, pop, i);
+        sum = sum + term * term - 10 * cos(2 * M_PI * term);
+    }
+    return (len * 10 + sum);
+}
+
+
+double schwefel(PGAContext *ctx, int p, int pop) {
+    int i, len;
+    double term, sum;
+
+    sum = 0;
+    len = PGAGetStringLength(ctx);
+    for (i = 0; i < len; i++) {
+        term = PGAGetRealAllele(ctx, p, pop, i);
+        sum = sum - term * sin(sqrt(fabs(term)));
+    }
+    return (sum);
+}
+
+
+
+/*  Get an integer parameter from the user.  Since this is
+ *  typically a parallel program, we must only do I/O on the
+ *  "master" process -- process 0.  Once we read the parameter,
+ *  we broadcast it to all the other processes, then every 
+ *  process returns the correct value.
+ */
+int GetIntegerParameter(char *query) {
+    int  rank, tmp;
+
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    if (rank == 0) {
+        printf(query);
+        scanf("%d", &tmp);
+    }
+    MPI_Bcast(&tmp, 1, MPI_INT, 0, MPI_COMM_WORLD);
+    return(tmp);
+}
+
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/dejong.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/dejong.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/dejong.c	(revision 6168)
@@ -0,0 +1,202 @@
+/*  The DeJong test suite.
+ *
+ */
+#include <pgapack.h>
+
+double dejong1(PGAContext *, int, int);
+double dejong2(PGAContext *, int, int);
+double dejong3(PGAContext *, int, int);
+double dejong4(PGAContext *, int, int);
+double dejong5(PGAContext *, int, int);
+void   printResultInterpretation(PGAContext *, int);
+int    GetIntegerParameter(char *query);
+
+int    gray_on;
+
+int    BinLen[5]     = { 10, 12, 10, 8, 17 };
+int    NumCoords[5]  = { 3, 2, 5, 30, 2 };
+double Lower[5]      = { -5.12, -2.048, -5.12, -1.28, -65.536 };
+double Upper[5]      = { 5.11, 2.047, 5.11, 1.27, 65.535 };
+
+/*******************************************************************
+ *                   user main program                              *
+ *******************************************************************/
+void main( int argc, char **argv ) {
+    PGAContext *ctx;    /* the context variable */
+    int testnum;        /* the DeJong test to run */
+    int maxiter;        /* the maximum number of iterations */
+
+    MPI_Init(&argc, &argv); 
+
+    testnum = GetIntegerParameter("Which test? (1 - 5)\n") - 1;
+    gray_on = GetIntegerParameter("Gray-coded? (0 = no)\n");
+    maxiter = GetIntegerParameter("How many iterations?\n");
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 
+		    BinLen[testnum]*NumCoords[testnum], PGA_MINIMIZE);
+    
+    PGASetMaxGAIterValue(ctx, maxiter);
+    PGASetRandomSeed(ctx, 1);
+    
+    PGASetUp(ctx);
+
+    if (testnum == 0)    PGARun(ctx, dejong1);
+    if (testnum == 1)    PGARun(ctx, dejong2);
+    if (testnum == 2)    PGARun(ctx, dejong3);
+    if (testnum == 3)    PGARun(ctx, dejong4);
+    if (testnum == 4)    PGARun(ctx, dejong5);
+
+    printResultInterpretation(ctx, testnum);
+
+    PGADestroy(ctx);
+    
+    MPI_Finalize();
+}
+
+
+double GetTerm(PGAContext *ctx, int p, int pop, int t, int problem) {
+    double    x;
+    int       len;
+    double    l, u;
+
+    len = BinLen[problem];
+    l   = Lower[problem];
+    u   = Upper[problem];
+
+    if (gray_on) 
+	x = PGAGetRealFromGrayCode(ctx, p, pop, t*len, (t+1)*len-1, l, u);
+    else
+	x = PGAGetRealFromBinary(ctx, p, pop, t*len, (t+1)*len-1, l, u);
+    return(x);
+}
+
+
+double dejong1(PGAContext *ctx, int p, int pop) {
+    int i;
+    double term, sum = 0;
+    
+    for(i = 0; i < NumCoords[0]; i++) {
+	term = GetTerm(ctx, p, pop, i, 0);
+	sum += (term * term);
+    }
+    
+    return (sum);
+}
+
+
+double dejong2(PGAContext *ctx, int p, int pop) {
+    double x1, x2, p1, p2;
+    
+    x1 = GetTerm(ctx, p, pop, 0, 1);
+    x2 = GetTerm(ctx, p, pop, 1, 1);
+
+    p1 = x1 * x1 - x2;
+    p2 = 1 - x1;
+    
+    return (100 * p1 * p1 + p2 * p2);
+}
+
+double dejong3(PGAContext *ctx, int p, int pop) {
+    int i;
+    double sum = 0;
+    
+    for(i = 0; i < NumCoords[2]; i++)
+	sum += floor(GetTerm(ctx, p, pop, i, 2));
+
+    return (sum);
+}
+
+double dejong4(PGAContext *ctx, int p, int pop) {
+    int i;
+    double term, sum = 0;
+    
+    for(i = 0; i < NumCoords[3]; i++) {
+	term = GetTerm(ctx, p, pop, i, 3);
+	sum += ((i + 1) * term * term * term * term);
+    }
+    
+    return (sum + PGARandomGaussian(ctx, 0, 1));
+}
+
+double dejong5(PGAContext *ctx, int p, int pop) {
+    int    a[2][25];
+    int    i, j;
+    double sum_over_i = 0, sum_over_j = 0;
+
+    for (i=0; i<5; i++) {
+        a[0][5*i]   = -32;
+        a[1][i]     = -32;
+
+        a[0][5*i+1] = -16;
+        a[1][i+5]   = -16;
+
+        a[0][5*i+2] = 0;
+        a[1][i+10]  = 0;
+
+        a[0][5*i+3] = 16;
+        a[1][i+15]  = 16;
+
+        a[0][5*i+4] = 32;
+        a[1][i+20]  = 32;
+    }
+
+    for (j = 0; j < 25; j++) {
+	sum_over_i =
+	    pow(GetTerm(ctx, p, pop, 0, 4) - a[0][j], 6) +
+	    pow(GetTerm(ctx, p, pop, 1, 4) - a[1][j], 6);
+	sum_over_j += (1.0 / (j + sum_over_i));
+    }
+    
+    return (1.0 / (0.002 + sum_over_j));
+}
+
+
+void printResultInterpretation(PGAContext *ctx, int problem) {
+    int      best, i;
+    double   value;
+
+    if (PGAGetRank(ctx, MPI_COMM_WORLD) == 0) {
+	best = PGAGetBestIndex(ctx, PGA_OLDPOP);
+	
+	printf("The real interpretation:\n");
+	for (i = 0; i < NumCoords[problem]; i++) {
+	    value = GetTerm(ctx, best, PGA_OLDPOP, i, problem);
+	    
+	    switch ( i % 5 ) {
+	    case 0:
+		printf ("#%4d: [%11.7g]", i, value);
+		break;
+	    case 1:
+	    case 2:
+	    case 3:
+		printf (", [%11.7g]", value);
+		break;
+	    case 4:
+		printf (", [%11.7g]", value);
+		if (i+1 < NumCoords[problem])
+		    printf ("\n");
+		break;
+	    }
+	}
+	printf("\n");
+    }
+}
+
+
+/*  Get an integer parameter from the user.  Since this is
+ *  typically a parallel program, we must only do I/O on the
+ *  "master" process -- process 0.  Once we read the parameter,
+ *  we broadcast it to all the other processes, then every 
+ *  process returns the correct value.
+ */
+int GetIntegerParameter(char *query) {
+    int  rank, tmp;
+
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    if (rank == 0) {
+        printf(query);
+        scanf("%d", &tmp);
+    }
+    MPI_Bcast(&tmp, 1, MPI_INT, 0, MPI_COMM_WORLD);
+    return(tmp);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/example.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/example.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/example.c	(revision 6168)
@@ -0,0 +1,42 @@
+#include <pgapack.h>
+
+double evaluate (PGAContext *ctx, int p, int pop);
+int myMutation  (PGAContext *, int, int, double);
+
+int main( int argc, char **argv )
+{
+     PGAContext *ctx; 
+     int i, lower[10], upper[10];
+
+     for (i=0; i<10; i++) {
+	 lower[i] = 1;
+	 upper[i] = 10;
+     }
+     ctx = PGACreate (&argc, argv, PGA_DATATYPE_INTEGER, 10, PGA_MAXIMIZE);
+     PGASetUserFunction (ctx, PGA_USERFUNCTION_MUTATION, (void *)myMutation);
+     PGASetIntegerInitRange(ctx, lower, upper);
+     PGASetUp              (ctx);
+     PGARun                (ctx, evaluate);
+     PGADestroy            (ctx);
+     return(0);
+}
+int myMutation(PGAContext *ctx, int p, int pop, double pm)
+{
+    int stringlen, i, k, count = 0;
+    stringlen = PGAGetStringLength(ctx);
+    for (i = 0; i < stringlen; i++)
+    if (PGARandomFlip(ctx, pm)) {
+        k = PGARandomInterval(ctx, 1, stringlen);
+        PGASetIntegerAllele(ctx, p, pop, i, k);
+        count++;
+    }
+    return ((double) count);
+}
+double evaluate(PGAContext *ctx, int p, int pop)
+{
+     int stringlen, i, sum = 0;
+     stringlen = PGAGetStringLength(ctx);
+     for (i = 0; i < stringlen; i++)
+         sum += PGAGetIntegerAllele(ctx, p, pop, i);
+     return ((double)sum);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/maxbit.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/maxbit.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/maxbit.c	(revision 6168)
@@ -0,0 +1,45 @@
+/*
+ *  This is a test program for PGAPack.  The objective is to maximize the
+ *  number of 1-bits in a chromosome.
+ */
+
+#include <pgapack.h>
+
+double NumberOfSetBits(PGAContext *, int, int);
+
+/*******************************************************************
+*                   user main program                              *
+*******************************************************************/
+int main( int argc, char **argv ) {
+    PGAContext *ctx;
+    
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 256, PGA_MAXIMIZE);
+    PGASetRandomSeed(ctx, 1);
+    
+    PGASetUp(ctx);
+    PGARun(ctx, NumberOfSetBits);
+    PGADestroy(ctx);
+    
+    return(0);
+}
+
+
+/*******************************************************************
+*               user defined evaluation function                   *
+*   ctx - contex variable                                          *
+*   p   - chromosome index in population                           *
+*   pop - which population to refer to                             *
+*******************************************************************/
+double NumberOfSetBits(PGAContext *ctx, int p, int pop) {
+    int i, nbits, stringlen;
+
+    stringlen = PGAGetStringLength(ctx);
+    
+    nbits = 0;
+    for ( i=0; i<stringlen; i++ )
+	if ( PGAGetBinaryAllele(ctx, p, pop, i) )
+	    nbits++;
+    
+    return((double) nbits);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/maxchar.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/maxchar.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/maxchar.c	(revision 6168)
@@ -0,0 +1,103 @@
+/*
+ *  This is a test program for PGAPack.  The objective is to maximize the
+ *  number of 'z's in a chromosome.
+ */
+
+#include <pgapack.h>
+
+double NumberOfZs(PGAContext *, int, int);
+int    myMutation(PGAContext *, int, int, double);
+int    GetIntegerParameter(char *query);
+
+/*******************************************************************
+*                   user main program                              *
+*******************************************************************/
+int main( int argc, char **argv )
+{
+     PGAContext *ctx;
+     int         len, maxiter;
+
+
+     MPI_Init(&argc, &argv);
+
+     len = GetIntegerParameter("String length?\n");
+     maxiter = GetIntegerParameter("How many iterations?\n");
+
+     ctx = PGACreate(&argc, argv, PGA_DATATYPE_CHARACTER, len, PGA_MAXIMIZE);
+
+     PGASetRandomSeed(ctx, 1);
+     PGASetMaxGAIterValue(ctx, maxiter);
+     PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION, (void *)myMutation);
+
+     PGASetUp(ctx);
+     PGARun(ctx, NumberOfZs);
+     PGADestroy(ctx);
+
+     MPI_Finalize();
+
+     return(0);
+}
+
+
+/*******************************************************************
+*               user defined evaluation function                   *
+*   ctx - contex variable                                          *
+*   p   - chromosome index in population                           *
+*   pop - which population to refer to                             *
+*******************************************************************/
+double NumberOfZs(PGAContext *ctx, int p, int pop) {
+     int i, nzs;
+     int stringlen;
+
+     stringlen = PGAGetStringLength(ctx);
+     
+     nzs = 0;
+     for ( i=0; i<stringlen; i++ )
+	  if (PGAGetCharacterAllele(ctx, p, pop, i) == 'z')
+	       nzs++;
+     
+     return((double) nzs);
+}
+
+
+/*  Custom mutation function.  Searches for an unset bit, 
+ *  then sets it.  Returns the number of bits that are changed.
+ */
+int myMutation(PGAContext *ctx, int p, int pop, double mr) {
+    int         i, count;
+    char        c;
+
+    count = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	if (PGARandomFlip(ctx, mr)) {
+	    c = PGAGetCharacterAllele(ctx, p, pop, i);
+	    if (c != 'z') {
+		PGASetCharacterAllele(ctx, p, pop, i, c+1);
+		count++;
+	    }
+	}
+    }
+    return(count);
+}
+
+
+
+/*  Get an integer parameter from the user.  Since this is
+ *  typically a parallel program, we must only do I/O on the
+ *  "master" process -- process 0.  Once we read the parameter,
+ *  we broadcast it to all the other processes, then every 
+ *  process returns the correct value.
+ */
+int GetIntegerParameter(char *query) {
+    int  rank, tmp;
+
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    if (rank == 0) {
+        printf(query);
+        scanf("%d", &tmp);
+    }
+    MPI_Bcast(&tmp, 1, MPI_INT, 0, MPI_COMM_WORLD);
+    return(tmp);
+}
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/maxint.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/maxint.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/maxint.c	(revision 6168)
@@ -0,0 +1,94 @@
+/*
+ *  This is a test program for PGAPack.  The objective is to maximize each
+ *  allele.  The evaluation function sums all allele values.
+ */
+#include <pgapack.h>
+
+double evaluate(PGAContext *, int, int);
+int    myMutation(PGAContext *, int, int, double);
+int    GetIntegerParameter(char *query);
+
+
+int main(int argc, char **argv) {
+     PGAContext *ctx;
+     int         len, maxiter;
+
+     MPI_Init(&argc, &argv);
+
+     len     = GetIntegerParameter("String length?\n");
+     maxiter = GetIntegerParameter("How many iterations?\n");
+
+     ctx = PGACreate(&argc, argv, PGA_DATATYPE_INTEGER, len, PGA_MAXIMIZE);
+
+     PGASetRandomSeed(ctx, 1);
+     PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION, (void *)myMutation);
+     PGASetIntegerInitPermute(ctx, 1, len);
+
+     PGASetMaxGAIterValue(ctx, maxiter);
+     PGASetNumReplaceValue(ctx, 90);
+     PGASetMutationAndCrossoverFlag(ctx, PGA_TRUE);
+     PGASetPrintOptions(ctx, PGA_REPORT_AVERAGE);
+
+     PGASetUp(ctx);
+
+     PGARun(ctx, evaluate);
+     PGADestroy(ctx);
+
+     MPI_Finalize();
+
+     return(0);
+}
+
+
+int myMutation(PGAContext *ctx, int p, int pop, double mr) {
+    int         stringlen, i, v, count;
+
+    stringlen = PGAGetStringLength(ctx);
+    count     = 0;
+
+    for (i=stringlen-1; i>=0; i--) {
+	if (PGARandomFlip(ctx, mr)) {
+	    v = PGARandomInterval(ctx, 1, stringlen);
+            PGASetIntegerAllele(ctx, p, pop, i, v);
+	    count++;
+	}
+    }
+    return((double)count);
+}
+
+
+
+double evaluate(PGAContext *ctx, int p, int pop) {
+     int  stringlen, i, sum;
+
+     stringlen = PGAGetStringLength(ctx);
+     sum       = 0;
+     
+     for (i=stringlen-1; i>=0; i--)
+	  sum += PGAGetIntegerAllele(ctx, p, pop, i);
+
+     return((double)sum);
+}
+
+
+
+/*  Get an integer parameter from the user.  Since this is
+ *  typically a parallel program, we must only do I/O on the
+ *  "master" process -- process 0.  Once we read the parameter,
+ *  we broadcast it to all the other processes, then every 
+ *  process returns the correct value.
+ */
+int GetIntegerParameter(char *query) {
+    int  rank, tmp;
+
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    if (rank == 0) {
+        printf(query);
+        scanf("%d", &tmp);
+    }
+    MPI_Bcast(&tmp, 1, MPI_INT, 0, MPI_COMM_WORLD);
+    return(tmp);
+}
+
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/name.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/name.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/name.c	(revision 6168)
@@ -0,0 +1,124 @@
+/*  PGAPack test program.
+ *
+ *  The objective is to evolve a string of characters to match a string
+ *  supplied by the user.  We will stop evolving when either we run out
+ *  of iterations (500), or when the best string has the same evaluation
+ *  value for 100 generations.
+ *
+ *  One problem with this implementation is that ' ' is not in
+ *  PGA_DATATYPE_CHAR if we limit it using PGA_CINIT_MIXED, PGA_CINIT_LOWER,
+ *  or PGA_CINIT_UPPER.  To fix this, we must define our own interval, and
+ *  thus, our own mutation, initialization operators.
+ *
+ *  A user function is also used to check the "done" condition; we are 
+ *  done if we've done more than 1000 iterations, or the evolved string
+ *  is correct.
+ *
+ *  Created 28 Sep 95, Brian P. Walenz.  Thanks to Dan Ashlock for the idea.
+ */
+
+#include "pgapack.h"
+
+void   N_InitString(PGAContext *ctx, int p, int pop);
+int    N_Mutation(PGAContext *ctx, int p, int pop, double mr);
+int    N_StopCond(PGAContext *ctx);
+double EvalName(PGAContext *ctx, int p, int pop);
+void   GetStringParameter(char *query, char *string);
+
+/*  Global, because we use it in EvalName.  */
+char   Name[42];
+
+void main(int argc, char **argv) {
+    PGAContext *ctx;
+
+    MPI_Init(&argc, &argv);
+
+    /*  Rather than deal with standard io and strings, we'll just set
+     *  this explicitly.
+     */
+    strcpy(Name,"Levine, Hallstrom, Noelle, Walenz");
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_CHARACTER, strlen(Name),
+		    PGA_MAXIMIZE);
+    
+    PGASetRandomSeed(ctx, 1);
+    
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING, (void *)N_InitString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,   (void *)N_Mutation);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_STOPCOND,   (void *)N_StopCond);
+
+    PGASetPopSize(ctx, 100);
+    PGASetNumReplaceValue(ctx, 75);
+    PGASetPopReplaceType(ctx, PGA_POPREPL_BEST);
+    
+    PGASetCrossoverProb(ctx, 0.0);
+    PGASetMutationOrCrossoverFlag(ctx, PGA_TRUE);
+    PGASetMaxGAIterValue(ctx, 100);
+    
+    PGASetUp(ctx);
+    PGARun(ctx, EvalName);
+    PGADestroy(ctx);
+
+    MPI_Finalize();
+}
+
+
+/*  Function to randomly initialize a PGA_DATATYPE_CHARACTER string using
+ *  all printable ASCII characters for the range.
+ */
+void N_InitString(PGAContext *ctx, int p, int pop) {
+    int               i;
+    
+    for(i=0; i<PGAGetStringLength(ctx); i++)
+	PGASetCharacterAllele(ctx, p, pop, i, 
+			      PGARandomInterval(ctx, 32, 126));
+}
+
+
+/*  Function to muatate a PGA_DATATYPE_CHARACTER string.  This is done
+ *  by simply picking allele locations, and replacing whatever was there
+ *  with a new value.  Again, legal values are all printable ASCII characters.
+ */
+int N_Mutation(PGAContext *ctx, int p, int pop, double mr) {
+    int               i, count=0;
+    
+    for(i=0; i<PGAGetStringLength(ctx); i++)
+	if (PGARandomFlip(ctx, mr)) {
+	    PGASetCharacterAllele(ctx, p, pop, i,
+				  PGARandomInterval(ctx, 32, 126));
+            count++;
+	}
+    return(count);
+}
+
+
+int N_StopCond(PGAContext *ctx) {
+    int   done, best;
+
+    done = PGACheckStoppingConditions(ctx);
+
+    best = PGAGetBestIndex(ctx, PGA_OLDPOP);
+    if ((done == PGA_FALSE) && 
+	(PGAGetEvaluation(ctx, best, PGA_OLDPOP) ==
+	 PGAGetStringLength(ctx)))
+	done = PGA_TRUE;
+
+    return(done);
+}
+
+    
+/*  Evaluate the string.  A highly fit string will have many of
+ *  the characters matching Name.
+ */
+double EvalName(PGAContext *ctx, int p, int pop) {
+    int     i, count;
+    
+    count = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	if (PGAGetCharacterAllele(ctx, p, pop, i) == Name[i])
+	    count++;
+    }
+    
+    return((double)count);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/namefull.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/namefull.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/namefull.c	(revision 6168)
@@ -0,0 +1,242 @@
+/*  PGAPack test program.
+ *
+ *  The objective is to evolve a string of characters to match a string
+ *  supplied by the user.  We will stop evolving when either we run out
+ *  of iterations (500), or when the best string has the same evaluation
+ *  value for 100 generations.
+ *
+ *  One problem with this implementation is that ' ' is not in
+ *  PGA_DATATYPE_CHAR if we limit it using PGA_CINIT_MIXED, PGA_CINIT_LOWER,
+ *  or PGA_CINIT_UPPER.  To fix this, we must define our own interval, and
+ *  thus, our own mutation, initialization operators.
+ *
+ *  A user function is also used to check the "done" condition; we are 
+ *  done if we've done more than 1000 iterations, or the evolved string
+ *  is correct.
+ *
+ *  Created 28 Sep 95, Brian P. Walenz.  Thanks to Dan Ashlock for the idea.
+ *
+ *  Be warned that duplicate checking will sometimes go into an infinite
+ *  loop.
+ */
+
+#include "pgapack.h"
+
+void   N_InitString (PGAContext *, int, int);
+int    N_Mutation   (PGAContext *, int, int, double);
+int    N_StopCond   (PGAContext *);
+void   N_Crossover  (PGAContext *ctx, int, int, int, int, int, int);
+int    N_Duplicate  (PGAContext *, int, int, int, int);
+void   N_PrintString(PGAContext *, FILE *, int, int);
+void   N_EndOfGen   (PGAContext *);
+double EvalName     (PGAContext *, int, int);
+void   GetStringParameter(char *, char *);
+
+/*  Global, because we use it in EvalName.  */
+char   Name[70];
+
+void main(int argc, char **argv) {
+    PGAContext *ctx;
+
+    MPI_Init(&argc, &argv);
+
+    /*  Rather than deal with standard io and strings, we'll just set
+     *  this explicitly.
+     */
+    strcpy(Name, "David M. Levine, Philip L. Hallstrom, David M. Noelle, "
+                 "Brian P. Walenz");
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_CHARACTER, strlen(Name),
+		    PGA_MAXIMIZE);
+    
+    PGASetRandomSeed(ctx, 42);
+    
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING, (void *)N_InitString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,   (void *)N_Mutation);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER,  (void *)N_Crossover);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_DUPLICATE,  (void *)N_Duplicate);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_STOPCOND,   (void *)N_StopCond);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING,(void *)N_PrintString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,   (void *)N_EndOfGen);
+
+    /*  We don't want to report anything.  */
+    PGASetPrintFrequencyValue(ctx, 10000);
+    PGASetPopSize(ctx, 100);
+    PGASetNumReplaceValue(ctx, 90);
+    PGASetPopReplaceType(ctx, PGA_POPREPL_BEST);
+    PGASetNoDuplicatesFlag(ctx, PGA_TRUE);
+    PGASetMaxGAIterValue(ctx, 100);
+    
+    PGASetUp(ctx);
+    PGARun(ctx, EvalName);
+    PGADestroy(ctx);
+
+    MPI_Finalize();
+}
+
+
+/*  Function to randomly initialize a PGA_DATATYPE_CHARACTER string using
+ *  all printable ASCII characters for the range.
+ */
+void N_InitString(PGAContext *ctx, int p, int pop) {
+    int               i;
+    
+    for(i=PGAGetStringLength(ctx)-1; i>=0; i--)
+	PGASetCharacterAllele(ctx, p, pop, i, 
+			      PGARandomInterval(ctx, 32, 126));
+}
+
+
+
+/*  Function to crossover two name strings.  Quite an interesting
+ *  crossover, too.  Works like a normal uniform crossover, except
+ *  that, if one of the strings matches the correct value, we set
+ *  BOTH children to the correct value 50% of the time.
+ */
+void N_Crossover(PGAContext *ctx, int p1, int p2, int pop1, int c1, 
+		 int c2, int pop2) {
+    int           i, length;
+    char          a, b;
+	    
+    length = PGAGetStringLength(ctx);
+
+    for (i=0; i<length; i++) {
+	a = PGAGetCharacterAllele(ctx, p1, pop1, i);
+	b = PGAGetCharacterAllele(ctx, p2, pop1, i);
+	if ((a == Name[i]) || (b == Name[i]))
+	    a = b = Name[i];
+
+	if (PGARandomFlip(ctx, 0.5) == PGA_TRUE) {
+            PGASetCharacterAllele(ctx, c1, pop2, i, a);
+            PGASetCharacterAllele(ctx, c2, pop2, i, b);
+	} else {
+            PGASetCharacterAllele(ctx, c1, pop2, i, b);
+            PGASetCharacterAllele(ctx, c2, pop2, i, a);
+        }
+    }
+}
+
+
+
+/*  Function to compare two strings.  Strings are "equalivalent"
+ *  if they match Name at the same alleles (and, thus, disagree at the
+ *  same alleles).  We don't care what the disagreement is, just that
+ *  it is there.
+ *
+ *  NOTE that because it is possible to get stuck in an infinite
+ *  loop while doing duplicate checking on this string (assuming that
+ *  the mutation operator is always beneficial), we ALWAYS return PGA_FALSE.
+ *  The code is left as an example (and for testing).
+ */
+int N_Duplicate(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+    int          i, match;
+    char         a, b, c;
+    
+    match = PGA_TRUE;
+
+    for (i=PGAGetStringLength(ctx)-1; match && i>=0; i--) {
+	a = PGAGetCharacterAllele(ctx, p1, pop1, i);
+	b = PGAGetCharacterAllele(ctx, p2, pop2, i);
+	c = Name[i];
+	if (((a == c) && (b != c)) || ((a != c) && (b == c))) 
+	    match = PGA_FALSE;
+    }
+
+    return(match);
+}
+
+
+/*  Function to muatate a PGA_DATATYPE_CHARACTER string.  This is done
+ *  by simply picking allele locations and replacing whatever was there.
+ *  Again, legal values are all printable ASCII characters.
+ */
+int N_Mutation(PGAContext *ctx, int p, int pop, double mr) {
+    int               i, count;
+
+    count = 0;
+    for(i=PGAGetStringLength(ctx)-1; i>=0; i--)
+	if (PGAGetCharacterAllele(ctx, p, pop, i) != Name[i]) {
+	    if (PGARandomFlip(ctx, mr) == PGA_TRUE) {
+		PGASetCharacterAllele(ctx, p, pop, i,
+				      PGARandomInterval(ctx, 32, 126));
+		count++;
+	    }
+	}
+    return(count);
+}
+
+
+/*  Function to print a string.  Since fortran does NOT support
+ *  C file handles, we just print normally.  If we we're in C,
+ *  we would print to the file "file".
+ */
+void N_PrintString(PGAContext *ctx, FILE *file, int p, int pop) {
+    int          i;
+    char         string[71];
+
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+	string[i] = PGAGetCharacterAllele(ctx, p, pop, i);
+    string[70] = 0;
+
+    fprintf(file," :%s:\n", string);
+}
+
+
+/*  Function to check "doneness" of the GA.  We check the iteration
+ *  count (by calling PGACheckStoppingConditions), then check if we have found
+ *  the string yet.
+ */
+int N_StopCond(PGAContext *ctx) {
+    int   done, best;
+
+    done = PGACheckStoppingConditions(ctx);
+
+    best = PGAGetBestIndex(ctx, PGA_OLDPOP);
+    if ((done == PGA_FALSE) && 
+	(PGAGetEvaluation(ctx, best, PGA_OLDPOP) ==
+	 PGAGetStringLength(ctx)))
+	done = PGA_TRUE;
+
+    return(done);
+}
+
+
+
+/*  After each generation, this routine is called.  What is done here,
+ *  is to print the best string in our own format, then check if the
+ *  best string is close to the correct value.  If it is, duplicate
+ *  checking is tunred off.  This is critical, as the mutation operator
+ *  will not degrade a string, so when the strings get near the correct
+ *  solution, they all become duplicates, but none can be changed!
+ *
+ *  Other applications have done such things as send the best string 
+ *  to another process to be visualized.  For here, we just call our
+ *  print string function to print the best string.
+ */
+void N_EndOfGen(PGAContext *ctx) {
+    int best;
+
+    best = PGAGetBestIndex(ctx, PGA_NEWPOP);
+    N_PrintString(ctx, stdout, best, PGA_NEWPOP);
+
+    if (PGAGetEvaluation(ctx, best, PGA_NEWPOP) >=
+	PGAGetStringLength(ctx)-10) 
+	PGASetNoDuplicatesFlag(ctx, PGA_FALSE);
+}
+
+    
+/*  Evaluate the string.  A highly fit string will have many of
+ *  the characters matching Name.
+ */
+double EvalName(PGAContext *ctx, int p, int pop) {
+    int     i, count;
+    
+    count = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	if (PGAGetCharacterAllele(ctx, p, pop, i) == Name[i])
+	    count++;
+    }
+    
+    return((double)count);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/sampleOptimization.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/sampleOptimization.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/sampleOptimization.c	(revision 6168)
@@ -0,0 +1,81 @@
+/*
+ * Ganesh Hegde: GENES Learning
+ * This is a sample optimization written for simple parameter values
+ * The aim is to fit a given I-V for a MOSFET
+ * The variables that are entering into the optimization problem are Vgs - Gate to Source Voltage and W/L-
+ * The Width of the oxide layer divided by its length
+ * using given Vgs -- 2V and W/L == 10, an I-V is obtained and fet as the function to be optimized
+ * 
+ */
+ 
+#include <pgapack.h>
+#include <stdlib.h>
+
+double evaluationFunction(PGAContext *, int, int);
+
+
+int main(int argc, char **argv){
+	PGAContext *ctx;
+	int strLen;
+	double low[]={1.5,5} ,high[]={5,12.0};
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_REAL, 2, PGA_MINIMIZE); 
+    PGASetRealInitRange(ctx,low,high);
+    PGASetPopSize(ctx,1000);
+    PGASetCrossoverType(ctx,PGA_CROSSOVER_ONEPT);
+    PGASetRandomSeed(ctx, 1);
+    PGASetStoppingRuleType(ctx, PGA_STOP_NOCHANGE);
+    PGASetUp(ctx);
+    PGARun(ctx, evaluationFunction);
+    PGADestroy(ctx);
+	return 0;
+}
+
+/*
+ * Sample Evaluation function for evaluating the parameters returned by the PGARun function on one cycle
+ * ctx--> context variable
+ * index--> chromosome index in the population
+ * populationNumber --> Which population to look at
+ */
+
+double evaluationFunction(PGAContext *ctx, int index, int populationNumber){
+	int i, stringLen;
+	double realAllele,vGS=0.0,widthToLengthRatio=0.0;
+	double Vds[21]={0}, Ids[21]={0};
+	double mu = 300 ;/*In cm^2/V-s*/
+	int Vt=1,j=0;
+	double tox= 20e-7;
+	double Cox= (3.9*8.85e-14)/tox;
+	double k,slope,targetslope,fitness=0;
+	double targetIds[] = {0,0.0005,0.0010,0.0016,0.0021,0.0026,0.0031,0.0036,0.0041,0.0047,0.0052,0.0057,0.0062,0.0067,0.0072,0.0078,0.0083,0.0088,0.0093,0.0098,0.0104};
+	stringLen = PGAGetStringLength(ctx);
+	for(i=0;i<stringLen;i++){
+		realAllele = PGAGetRealAllele(ctx, index, populationNumber, i);
+		if(i==0){
+			vGS=realAllele;
+		}else{
+			widthToLengthRatio = realAllele;
+		}
+		
+	}
+	/*
+	 * Initing the Vds array
+	 */
+	k=mu*Cox*widthToLengthRatio;
+	
+	for(i=0;i<21;i++){
+		if(i>0){
+		Vds[i]=Vds[i-1]+0.5;
+		}else{
+			Vds[i]=0;
+		}		
+		Ids[i]=k*((vGS-Vt)*Vds[i]);
+	}
+	slope = (Ids[20]-Ids[0])/(Vds[20]-Vds[0]);
+	targetslope = (targetIds[20]-targetIds[0])/(Vds[20]-Vds[0]);
+	for(j=0;j<21;j++){
+//		printf("%lf ",Ids[j]);
+	}
+	return (double)abs(slope-targetslope);
+	
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/test.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/test.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/test.c	(revision 6168)
@@ -0,0 +1,40 @@
+From levine@mcs.anl.gov Mon Nov 27 16:53:21 1995
+Received: from jadoube (jadoube.mcs.anl.gov [140.221.7.137]) by antares.mcs.anl.gov (8.6.10/8.6.10)  with ESMTP
+	id QAA23813 for <walenz@mcs.anl.gov>; Mon, 27 Nov 1995 16:53:21 -0600
+From: David Levine <levine@mcs.anl.gov>
+Date: Mon, 27 Nov 1995 16:53:19 -0600
+Message-Id: <199511272253.QAA01962@jadoube>
+To: walenz@mcs.anl.gov
+Status: R
+
+
+#include "pgapack.h"
+double evaluate (PGAContext *ctx, int p, int pop);
+
+int main(int argc, char **argv)
+{
+    PGAContext *ctx;
+    int rank;
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+    PGASetUp   (ctx);
+    rank = PGAGetRank(ctx, MPI_COMM_WORLD);
+    PGAEvaluate(ctx, PGA_OLDPOP, evaluate, MPI_COMM_WORLD);
+    if ( rank == 0 )
+        PGAFitness (ctx, PGA_OLDPOP);
+    while(!PGADone(ctx, MPI_COMM_WORLD)) {
+        if ( rank == 0 ) {
+            PGASelect                 (ctx, PGA_OLDPOP);
+            PGARunMutationAndCrossover(ctx, PGA_OLDPOP, PGA_NEWPOP);
+        }
+        PGAEvaluate(ctx, PGA_OLDPOP, evaluate, MPI_COMM_WORLD);
+        if ( rank == 0 )
+            PGAFitness                (ctx, PGA_NEWPOP);
+        PGAUpdateGeneration           (ctx, MPI_COMM_WORLD);
+        if ( rank == 0 )
+            PGAPrintReport            (ctx, stdout, PGA_OLDPOP);
+    }
+    PGADestroy(ctx);
+    return(0);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/udtstr.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/udtstr.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/c/udtstr.c	(revision 6168)
@@ -0,0 +1,271 @@
+/*****************************************************************************
+ * The chromosome in this example is a structure containing three doubles    *
+ * representing a translation along each of the x-, y-, and z-axes; three    *
+ * doubles representing a rotation about each the axes; and forty ints       *
+ * representing an index to side chain rotations.  This is a simple          *
+ * illustration of how to set up a molecular docking problem.                *
+ *****************************************************************************/
+#include <pgapack.h>
+
+double       energy           (double *, int *);
+double       Evaluate         (PGAContext *, int, int);
+void         CreateString     (PGAContext *, int, int, int);
+int          Mutation         (PGAContext *, int, int, double);
+void         Crossover        (PGAContext *, int, int, int, int, int, int);
+void         WriteString      (PGAContext *, FILE *, int, int);
+void         CopyString       (PGAContext *, int, int, int, int);
+int          DuplicateString  (PGAContext *, int, int, int, int);
+MPI_Datatype BuildDT          (PGAContext *, int, int);
+
+typedef struct {
+    double t[6];          /* ligand translation and rotation */
+    int    sc[40];        /* ligand sidechain rotations      */
+} ligand;
+
+int main(int argc, char **argv) {
+    PGAContext *ctx;
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_USER, 46, PGA_MINIMIZE);
+    PGASetRandomSeed    (ctx, 1);
+    PGASetMaxGAIterValue(ctx, 5000);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_CREATESTRING,  (void *)CreateString);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_MUTATION,      (void *)Mutation);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_CROSSOVER,     (void *)Crossover);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_PRINTSTRING,   (void *)WriteString);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_COPYSTRING,    (void *)CopyString);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_DUPLICATE,     (void *)DuplicateString);
+    PGASetUserFunction  (ctx, PGA_USERFUNCTION_BUILDDATATYPE, (void *)BuildDT);
+    PGASetUp            (ctx);
+    PGARun              (ctx, Evaluate);
+    PGADestroy          (ctx);
+    return (0);
+}
+
+
+/*****************************************************************************
+ * CreateString allocates and initializes a chromosome.  If InitFlag is      *
+ * set to true, then it will randomly initialize the chromosome; otherwise,  *
+ * it sets each double to 0.0 and each int to 0.                             *
+ *****************************************************************************/
+void CreateString(PGAContext *ctx, int p, int pop, int InitFlag) {
+    int i;
+    ligand *ligand_ptr;
+    PGAIndividual *new;
+
+    new = PGAGetIndividual(ctx, p, pop);
+    if (!(new->chrom = malloc(sizeof(ligand)))) {
+        fprintf(stderr, "No room for new->chrom");
+        exit(1);
+    }
+    ligand_ptr = (ligand *)new->chrom;
+    if (InitFlag) {
+        for (i = 0; i < 3; i++)
+            ligand_ptr->t[i] = PGARandom01(ctx, 0) * 20.0 - 10.0;
+        for (i = 3; i < 6; i++)
+            ligand_ptr->t[i] = PGARandom01(ctx, 0) * 6.28 - 3.14;
+        for (i = 0; i < 40; i++)
+            ligand_ptr->sc[i] = PGARandomInterval(ctx, -20, 20);
+    } else {
+        for (i = 0; i < 6; i++)
+            ligand_ptr->t[i] = 0.0;
+        for (i = 0; i < 40; i++)
+            ligand_ptr->sc[i] = 0;
+    }
+}
+
+
+/*****************************************************************************
+ * Mutation performs mutation on a chromosome.  Each allele has a mr         *
+ * probability of being changed.  Mutation here perturbs each double by one  *
+ * tenth and each int by 1.                                                  *
+ *****************************************************************************/
+int Mutation(PGAContext *ctx, int p, int pop, double mr) {
+    ligand *ligand_ptr;
+    int i, count = 0;
+
+    ligand_ptr = (ligand *)PGAGetIndividual(ctx, p, pop)->chrom;
+    for (i = 0; i < 6; i++)
+        if (PGARandomFlip(ctx, mr)) {
+            if (PGARandomFlip(ctx, 0.5))
+                ligand_ptr->t[i] += 0.1*ligand_ptr->t[i];
+            else
+                ligand_ptr->t[i] -= 0.1*ligand_ptr->t[i];
+            count++;
+        }
+    for (i = 0; i < 40; i++)
+        if (PGARandomFlip(ctx, mr)) {
+            if (PGARandomFlip(ctx, 0.5))
+                ligand_ptr->sc[i] += 1;
+            else
+                ligand_ptr->sc[i] -= 1;
+            count++;
+        }
+    return (count);
+}
+
+
+/*****************************************************************************
+ * Crossover implements uniform crossover on the chromosome.                 *
+ *****************************************************************************/
+void Crossover(PGAContext *ctx, int p1, int p2, int pop1, int t1, int t2,
+               int pop2) {
+    int i;
+    ligand *parent1, *parent2, *child1, *child2;
+    double pu;
+
+    parent1 = (ligand *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    parent2 = (ligand *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+    child1  = (ligand *)PGAGetIndividual(ctx, t1, pop2)->chrom;
+    child2  = (ligand *)PGAGetIndividual(ctx, t2, pop2)->chrom;
+
+    pu = PGAGetUniformCrossoverProb(ctx);
+
+    for (i = 0; i < 6; i++)
+            if (PGARandomFlip(ctx, pu)) {
+                child1->t[i] = parent1->t[i];
+                child2->t[i] = parent2->t[i];
+            } else {
+                child1->t[i] = parent2->t[i];
+                child2->t[i] = parent1->t[i];
+            }
+    for (i = 0; i < 40; i++)
+            if (PGARandomFlip(ctx, pu)) {
+                child1->sc[i] = parent1->sc[i];
+                child2->sc[i] = parent2->sc[i];
+            } else {
+                child1->sc[i] = parent2->sc[i];
+                child2->sc[i] = parent1->sc[i];
+            }
+}
+
+
+/*****************************************************************************
+ * WriteString sends a visual representation of the chromosome to the file   *
+ * fp.                                                                       *
+ *****************************************************************************/
+void WriteString(PGAContext *ctx, FILE *fp, int p, int pop) {
+    ligand *ligand_ptr;
+    int i;
+
+    ligand_ptr = (ligand *)PGAGetIndividual(ctx, p, pop)->chrom;
+    
+    fprintf(fp, "Position: [%11.7g, %11.7g, %11.7g]\n", 
+	    ligand_ptr->t[0], ligand_ptr->t[1], ligand_ptr->t[2]);
+    fprintf(fp, "Rotation: [%11.7g, %11.7g, %11.7g]\n", 
+	    ligand_ptr->t[3], ligand_ptr->t[4], ligand_ptr->t[5]);
+
+    fprintf(fp, "Sidechains:\n");
+    for (i=0; i<40; i+=8) {
+	fprintf(fp,"%2d: [%4ld] [%4ld] [%4ld] [%4ld]"
+		       " [%4ld] [%4ld] [%4ld] [%4ld]\n", i, 
+		ligand_ptr->sc[i+0], ligand_ptr->sc[i+2], 
+		ligand_ptr->sc[i+2], ligand_ptr->sc[i+3], 
+		ligand_ptr->sc[i+4], ligand_ptr->sc[i+5], 
+		ligand_ptr->sc[i+6], ligand_ptr->sc[i+7]);
+    }
+
+    fprintf ( fp, "\n" );
+}
+
+
+/*****************************************************************************
+ * CopyString makes a copy of the chromosome at (p1, pop1) and puts it at    *
+ * (p2, pop2).                                                               *
+ *****************************************************************************/
+void CopyString(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+    void *d, *s;
+
+     s = PGAGetIndividual(ctx, p1, pop1)->chrom;
+     d = PGAGetIndividual(ctx, p2, pop2)->chrom;
+     memcpy(d, s, sizeof(ligand));
+}
+
+
+/*****************************************************************************
+ * DuplicateString compares two chromosomes and returns 1 if they are the    *
+ * same and 0 if they are different.                                         *
+ *****************************************************************************/
+int DuplicateString(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+    void *a, *b;
+
+     a = PGAGetIndividual(ctx, p1, pop1)->chrom;
+     b = PGAGetIndividual(ctx, p2, pop2)->chrom;
+     return (!memcmp(a, b, sizeof(ligand)));
+}
+
+
+/*****************************************************************************
+ * BuildDatattype builds an MPI datatype for sending strings to other        *
+ * processors.  Consult your favorite MPI manual for more information.       *
+ *****************************************************************************/
+MPI_Datatype BuildDT(PGAContext *ctx, int p, int pop) {
+  int             counts[5];
+  MPI_Aint        displs[5];
+  MPI_Datatype    types[5];
+  MPI_Datatype    DT_PGAIndividual;
+  PGAIndividual  *P;
+  ligand         *S;
+
+  P = PGAGetIndividual(ctx, p, pop);
+  S = (ligand *)P->chrom;
+
+  /*  Build the MPI datatype.  Every user defined function needs these.
+   *  The first two calls are stuff that is internal to PGAPack, but 
+   *  the user still must include it.  See pgapack.h for details one the
+   *  fields (under PGAIndividual)
+   */
+  MPI_Address(&P->evalfunc, &displs[0]);
+  counts[0] = 2;
+  types[0]  = MPI_DOUBLE;
+
+  /*  Next, we have an integer, evaluptodate.  */  
+  MPI_Address(&P->evaluptodate, &displs[1]);
+  counts[1] = 1;
+  types[1]  = MPI_INT;
+
+  /*  Finally, we have the actual user-defined string.  */
+  MPI_Address(S->t, &displs[2]);
+  counts[2] = 6;
+  types[2]  = MPI_DOUBLE;
+
+  MPI_Address(S->sc, &displs[3]);
+  counts[3] = 40;
+  types[3]  = MPI_INT;
+
+  MPI_Type_struct(4, counts, displs, types, &DT_PGAIndividual);
+  MPI_Type_commit(&DT_PGAIndividual);
+  return(DT_PGAIndividual);
+}
+
+
+
+double Evaluate(PGAContext *ctx, int p, int pop) {
+    int     i;
+    double  x[6];
+    int     sc[40];
+    ligand *lig;
+
+    lig = (ligand *)PGAGetIndividual(ctx, p, pop)->chrom;
+    for (i = 0; i < 6; i++)
+        x[i] = lig->t[i];
+    for (i = 0; i < 40; i++)
+        sc[i] = lig->sc[i];
+    return ( energy(x,sc) );
+}
+
+
+#define SQ(z)  ((z)*(z))
+
+/*  For now just return distance from some fixed point plus
+ *  a penalty for not being aligned to the x, y and z axes.
+ *  The angles are divided by two so that we are in a range
+ *  that only has one zero.
+ */
+double energy(double *x, int *sc) {
+    double d;
+
+    d = sqrt( SQ(x[0]-1) + SQ(x[1]-2) + SQ(x[2]-3)) +
+	SQ(sin(x[3]/2)) + SQ(sin(x[4]/2)) + SQ(sin(x[5]/2));
+
+    return (d);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/Makefile.in	(revision 6168)
@@ -0,0 +1,52 @@
+FC           = @FC@
+PREFFLAGS    = @FFLAGS@
+RM           = @RM@
+LDFLAGS      = @LDFLAGS@
+SHELL        = @SHELL@
+
+#    "$@" expands to the target; "$?" expands to the dependency list
+FFLAGS      = -o $@ $? $(PREFFLAGS)
+
+LINK.f       = if test -n "$(FC)"; \
+                   then echo "  Compiling $@" ; $(FC) $(FFLAGS) $(LDFLAGS); \
+               else \
+                   echo "$@: Fortran compiler unavailable"; fi
+
+default:
+	@make classic
+	@make dejong
+	@make example
+	@make maxbit
+	@make maxchar
+	@make maxint 
+	@make name
+	@make namefull
+
+
+classic: classic.f
+	@$(LINK.f)
+
+dejong: dejong.f
+	@$(LINK.f)
+
+example: example.f
+	@$(LINK.f)
+
+maxbit: maxbit.f
+	@$(LINK.f)
+
+maxchar: maxchar.f
+	@$(LINK.f)
+
+maxint: maxint.f
+	@$(LINK.f)
+
+name: name.f
+	@$(LINK.f)
+
+namefull: namefull.f
+	@$(LINK.f)
+
+clean: 
+	@$(RM) classic dejong example maxbit maxchar maxint name namefull *.o
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/README	(revision 6168)
@@ -0,0 +1,27 @@
+Seven example FORTRAN programs come with PGAPack.  What follows is a listing 
+of the names of the programs and a brief description of their function.
+
+classic.f  -- Optimizes one of Griewank;s test function, Rastrigin's test
+              function, or Schwefel's test function.  All use a real valued
+	      datatype.
+
+dejong.f   -- This program optimizes one of the five functions from the DeJong
+              test suite with a binary string as the chromosome.  Graycoding is
+              an option.
+
+example.f  -- An example from the User's Guide.
+
+maxbit.f   -- A very simple example that maximizes the number of 1's in a
+              binary string.  Does no I/O.
+
+maxchar.f  -- Maximizes the number of z's in a character string.  Does I/O.
+
+maxint.f   -- Maximizes the sum of all alleles in the gene.
+
+name.f     -- Evolves a character string to match a hard-coded string.  Does
+              no I/O, but shows how to use userfunctions InitString, Mutation,
+              and Done.  Also uses an elitist model of evolution with no
+              crossover.
+
+namefull.f -- Same idea as above, but uses all native user defined functions.
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/classic.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/classic.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/classic.f	(revision 6168)
@@ -0,0 +1,157 @@
+c     Miscelaneous test functions.
+c
+c     Rather than deal with parallel I/O, we just list the tests here:
+c       1.  Griewank
+c       2.  Rastrigin
+c       3.  Schwefel
+c
+      include 'pgapackf.h'
+      include 'mpif.h'
+
+      double precision  griewank, rastrigin, schwefel
+      external          griewank, rastrigin, schwefel
+      
+      integer           GetIntegerParameter
+      external          GetIntegerParameter
+
+      double precision  Lower(3), Upper(3)
+      integer           NumCoords(3)
+      common /data/     Lower, Upper, NumCoords
+
+      integer ctx
+      integer           testnum, maxiter, i, ierror
+      double precision  l(20), u(20)
+
+c
+c                   user main program                              
+c
+
+      call MPI_Init(ierror)
+
+c     Yes, it's ugly, but it does work...
+      testnum = GetIntegerParameter('Which test? (1-Griewank, 2-Rastrigi
+     &n, 3-Schwefel) ')
+      maxiter = GetIntegerParameter('How many iterations?               
+     &               ')
+
+      do i=1, 20
+         l(i) = Lower(testnum)
+         u(i) = Upper(testnum)
+      enddo
+
+      ctx = PGACreate(PGA_DATATYPE_REAL, NumCoords(testnum),
+     &                PGA_MINIMIZE)
+    
+      call PGASetRandomSeed(ctx, 1)
+
+      call PGASetRealInitRange(ctx, l, u)
+      call PGASetMaxGAIterValue(ctx, maxiter)
+    
+      call PGASetUp(ctx)
+
+      if (testnum .eq. 1)    call PGARun(ctx, griewank)
+      if (testnum .eq. 2)    call PGARun(ctx, rastrigin)
+      if (testnum .eq. 3)    call PGARun(ctx, schwefel)
+
+      call PGADestroy(ctx)
+    
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+      double precision function griewank(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, len
+      double precision  allele, sum, product
+
+      sum = 0.
+      product = 1.
+      len = PGAGetStringLength(ctx)
+      do i=1, len
+         allele = PGAGetRealAllele(ctx, p, pop, i)
+         sum = sum + (allele * allele / 4000.)
+         product = product * dcos(allele / sqrt((dble(i))))
+      enddo
+
+      griewank = 1. + sum - product
+      return
+      end
+
+
+      double precision function rastrigin(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, len
+      double precision  allele, sum
+
+      sum = 0.
+      len = PGAGetStringLength(ctx)
+      do i=1, len
+         allele = PGAGetRealAllele(ctx, p, pop, i)
+         sum = sum + allele * allele - 10.d0 * 
+     &        dcos(6.28318530718d0 * allele)
+      enddo
+
+      rastrigin = dble(len-1) + sum
+      return
+      end
+
+
+
+      double precision function schwefel(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, len
+      double precision  allele, sum
+
+      sum = 0.
+      len = PGAGetStringLength(ctx)
+      do i=1, len
+         allele = PGAGetRealAllele(ctx, p, pop, i)
+         sum = sum - allele * dsin(dsqrt(dabs(allele)))
+      enddo
+     
+      schwefel = sum
+      return
+      end
+
+
+
+c     Get an integer parameter from the user.  Since this is
+c     typically a parallel program, we must only do I/O on the
+c     "master" process -- process 0.  Once we read the parameter,
+c     we broadcast it to all the other processes, then every 
+c     process returns the correct value.
+c     
+      integer function GetIntegerParameter(query)
+      include 'pgapackf.h'
+      include 'mpif.h'
+      character*52 query
+      integer  rank, tmp, ierror
+
+      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierror)
+      if (rank .eq. 0) then
+         print *, query
+         read *, tmp
+      endif
+      call MPI_Bcast(tmp, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+
+      GetIntegerParameter = tmp
+      return
+      end
+
+
+      block data
+      integer i
+      double precision Lower(3), Upper(3)
+      integer NumCoords(3)
+      common /data/    Lower, Upper, NumCoords
+
+      data (NumCoords(i), i=1,3) / 10, 20, 10 /
+      data (Lower(i), i=1,3)     / -512.0, -5.12, -512.0 /
+      data (Upper(i), i=1,3)     / 511.0, 5.11, 511.0 /
+
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/dejong.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/dejong.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/dejong.f	(revision 6168)
@@ -0,0 +1,310 @@
+c  The DeJong test suite.
+c
+c
+
+      include 'pgapackf.h'
+      include 'mpif.h'
+
+      double precision  dejong1, dejong2, dejong3, dejong4, dejong5
+      external          dejong1, dejong2, dejong3, dejong4, dejong5
+
+      integer           GetIntegerParameter
+      external          GetIntegerParameter
+
+      integer           gray_on
+      integer           BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+
+      integer ctx
+      integer           testnum, maxiter, ierror
+
+
+c
+c                   user main program
+c
+
+      call MPI_Init(ierror)
+
+      testnum = GetIntegerParameter('Which test? (1 - 5)        ')
+      gray_on = GetIntegerParameter('Gray-coded? (1=yes, 0 = no)')
+      maxiter = GetIntegerParameter('How many iterations?       ')
+
+      ctx = PGACreate(PGA_DATATYPE_BINARY, 
+     &     BinLen(testnum)*NumCoords(testnum), PGA_MINIMIZE)
+
+      call PGASetMaxGAIterValue(ctx, maxiter)
+      call PGASetRandomSeed(ctx, 1)
+    
+      call PGASetUp(ctx)
+
+      if (testnum .eq. 1)    call PGARun(ctx, dejong1)
+      if (testnum .eq. 2)    call PGARun(ctx, dejong2)
+      if (testnum .eq. 3)    call PGARun(ctx, dejong3)
+      if (testnum .eq. 4)    call PGARun(ctx, dejong4)
+      if (testnum .eq. 5)    call PGARun(ctx, dejong5)
+
+      call printResultInterpretation(ctx, testnum)
+
+      call PGADestroy(ctx)
+    
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+      double precision function GetTerm(ctx, p, pop, t, problem) 
+      include           'pgapackf.h'
+      integer ctx
+      integer            p, pop, t, problem, len
+      integer            gray_on, BinLen(5), NumCoords(5)
+      double precision   Lower(5), Upper(5)
+      common /data/      BinLen, NumCoords, Lower, Upper, gray_on
+      double precision   x, l, u
+
+      len = BinLen(problem)
+      l   = Lower(problem)
+      u   = Upper(problem)
+
+      if (gray_on .eq. 1) then
+         x = PGAGetRealFromGrayCode(ctx, p, pop, (t-1)*len+1,
+     &        t*len, l, u)
+      else
+         x = PGAGetRealFromBinary(ctx, p, pop, (t-1)*len+1, 
+     &        t*len, l, u)
+      endif
+
+      GetTerm = x
+      return
+      end
+
+
+      double precision function dejong1(ctx, p, pop) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop
+      double precision  GetTerm
+      external          GetTerm 
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      integer           i
+      double precision  term, sum
+
+      sum = 0.
+    
+      do i=1, NumCoords(1)
+         term = GetTerm(ctx, p, pop, i, 1)
+         sum = sum + (term * term)
+      enddo
+      
+      dejong1 = sum
+      return
+      end
+
+
+      double precision function dejong2(ctx, p, pop) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop
+      double precision  GetTerm
+      external          GetTerm
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      double precision  x1, x2, p1, p2
+    
+      x1 = GetTerm(ctx, p, pop, 1, 2)
+      x2 = GetTerm(ctx, p, pop, 2, 2)
+      p1 = x1 * x1 - x2
+      p2 = 1 - x1
+
+      dejong 2 = 100 * p1 * p1 + p2 * p2
+      return
+      end
+
+
+      double precision function dejong3(ctx, p, pop) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i
+      double precision  GetTerm
+      external          GetTerm
+      double precision  sum
+      external          ffloor
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      double precision  ffloor
+
+      sum = 0.
+    
+      do i=1, NumCoords(3)
+         sum = sum + ffloor(GetTerm(ctx, p, pop, i, 3)) 
+      enddo
+         
+      dejong3 = sum
+      return
+      end
+
+
+
+      double precision function dejong4(ctx, p, pop) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop
+      double precision  GetTerm
+      external          GetTerm
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      integer           i
+      double precision  term, sum
+      
+      sum = 0.
+      do i=1, NumCoords(4)
+         term = GetTerm(ctx, p, pop, i, 4)
+         sum = sum + (i * term * term * term * term)
+      enddo
+    
+      
+      dejong4 = sum + PGARandomGaussian(ctx, 0d0, 1d0)
+      return
+      end
+
+
+      double precision function dejong5(ctx, p, pop) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, j
+      double precision  GetTerm
+      external          GetTerm
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      double precision  a(2,25)
+      double precision  sum_over_i, sum_over_j
+
+      sum_over_i = 0.
+      sum_over_j = 0.
+
+      do i=0, 4
+         a(1,5*i+1)   = -32.
+         a(2,i+1)     = -32.
+         
+         a(1,5*i+2) = -16.
+         a(2,i+6)   = -16.
+         
+         a(1,5*i+3) = 0.
+         a(2,i+11)  = 0.
+         
+         a(1,5*i+4) = 16.
+         a(2,i+16)  = 16.
+         
+         a(1,5*i+5) = 32.
+         a(2,i+21)  = 32.
+      enddo
+      
+      
+      do j=1, 25
+         sum_over_i =
+     &        (GetTerm(ctx, p, pop, 1, 5) - a(1,j)) ** 6 +
+     &        (GetTerm(ctx, p, pop, 2, 5) - a(2,j)) ** 6
+         sum_over_j = sum_over_j + (1.0d0 / (dble(j-1) + sum_over_i))
+      enddo
+    
+      dejong5 = 1.0d0 / (0.002d0 + sum_over_j)
+      return
+      end
+
+
+
+c     Since the linker searches this file first, if this function were
+c     called just "floor", PGAPack would break.  (PGAPack uses a floor
+c     function also).
+c
+      double precision function ffloor(x)
+      double precision  x, y
+
+      y = int(x)
+      if (x .lt. 0 .and. x .ne. y) then
+         y = y - 1
+      endif
+      ffloor = y
+
+      end
+
+
+
+
+
+      subroutine printResultInterpretation(ctx, problem)
+      include          'pgapackf.h'
+      include          'mpif.h'
+      integer ctx
+      integer           problem, best, i
+      double precision  GetTerm
+      external          GetTerm
+      integer           gray_on, BinLen(5), NumCoords(5)
+      double precision  Lower(5), Upper(5)
+      common /data/     BinLen, NumCoords, Lower, Upper, gray_on
+      double precision  value
+      integer comm
+
+
+      comm = PGAGetCommunicator(ctx)
+      if (PGAGetRank(ctx, comm) .eq. 0) then
+c      if (PGAGetRank(ctx, MPI_COMM_WORLD) .eq. 0) then
+         best = PGAGetBestIndex(ctx, PGA_OLDPOP)
+	
+         print *, 'The real interpretation:'
+         do i=1, NumCoords(problem)
+	    value = GetTerm(ctx, best, PGA_OLDPOP, i, problem)
+	    
+            print *, '#', i, ': ', value
+         enddo
+
+      endif
+
+      return
+      end
+
+
+c     Get an integer parameter from the user.  Since this is
+c     typically a parallel program, we must only do I/O on the
+c     "master" process -- process 0.  Once we read the parameter,
+c     we broadcast it to all the other processes, then every 
+c     process returns the correct value.
+c     
+      integer function GetIntegerParameter(query)
+      include      'pgapackf.h'
+      include      'mpif.h'
+      character*27  query
+      integer       rank, tmp, ierror
+
+      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierror)
+      if (rank .eq. 0) then
+         print *, query
+         read *, tmp
+      endif
+      call MPI_Bcast(tmp, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+
+      GetIntegerParameter = tmp
+      return
+      end
+
+
+      block data
+      integer i
+      double precision Lower(5), Upper(5)
+      integer gray_on, BinLen(5), NumCoords(5)
+      common /data/ BinLen, NumCoords, Lower, Upper, gray_on
+
+      data (BinLen(i), i=1,5)    / 10, 12, 10, 8, 17 /
+      data (NumCoords(i), i=1,5) / 3, 2, 5, 30, 2 /
+      data (Lower(i), i=1,5)     / -5.12,-2.048,-5.12,-1.28,-65.536 /
+      data (Upper(i), i=1,5)     / 5.11, 2.047, 5.11, 1.27, 65.535 /
+
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/example.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/example.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/example.f	(revision 6168)
@@ -0,0 +1,66 @@
+      include 'pgapackf.h'
+
+      double precision evaluate
+      integer          myMutation
+      external         evaluate, myMutation
+      
+      integer ctx
+      integer          i, ierror
+      integer          lower(10), upper(10)
+
+      do i=1, 10
+         lower(i) = 1
+         upper(i) = 10
+      enddo
+
+      call MPI_Init(ierror)
+
+      ctx = PGACreate         (PGA_DATATYPE_INTEGER, 10, PGA_MAXIMIZE)
+      call PGASetUserFunction (ctx, PGA_USERFUNCTION_MUTATION,
+     &                         myMutation)
+      call PGASetIntegerInitRange(ctx, lower, upper)
+      call PGASetUp              (ctx)
+      call PGARun                (ctx, evaluate)
+      call PGADestroy            (ctx)
+
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+      integer function myMutation(ctx, p, pop, pm)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop
+      double precision  pm
+      integer           stringlen, i, k, count
+
+      count = 0
+      stringlen = PGAGetStringLength(ctx)
+      do i=1, stringlen
+         if (PGARandomFlip(ctx, pm) .eq. PGA_TRUE) then
+            k = PGARandomInterval(ctx, 1, stringlen)
+            call PGASetIntegerAllele(ctx, p, pop, i, k)
+            count = count + 1
+         endif
+      enddo
+      myMutation = count
+      return
+      end
+
+
+      double precision function evaluate(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer          p, pop
+      integer          stringlen, i, sum
+
+      sum = 0
+      stringlen = PGAGetStringLength(ctx)
+      do i=1, stringlen
+         sum = sum + PGAGetIntegerAllele(ctx, p, pop, i)
+      enddo
+      evaluate = sum
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/maxbit.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/maxbit.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/maxbit.f	(revision 6168)
@@ -0,0 +1,55 @@
+c     
+c     This is a test program for PGAPack.  The objective is to maximize the
+c     number of 1-bits in a chromosome.
+c     
+
+      include 'pgapackf.h'
+
+      double precision NumberOfSetBits
+      external         NumberOfSetBits
+      
+c     
+c     user main program
+c     
+      integer ctx
+      integer       ierror
+
+      call MPI_Init(ierror)
+
+      ctx = PGACreate(PGA_DATATYPE_BINARY, 256, PGA_MAXIMIZE)
+      call PGASetRandomSeed(ctx, 1)
+
+      call PGASetUp(ctx)
+      call PGARun(ctx, NumberOfSetBits)
+      call PGADestroy(ctx)
+
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+c     
+c     user defined evaluation function
+c     ctx - contex variable
+c     p   - chromosome index in population
+c     pop - which population to refer to
+c     
+      double precision function NumberOfSetBits(ctx, p, pop) 
+      include    'pgapackf.h'
+      integer ctx
+      integer     p, pop
+      integer     i, nbits, stringlen
+
+      stringlen = PGAGetStringLength(ctx)
+      
+      nbits = 0
+      do i=1, stringlen
+         if (PGAGetBinaryAllele(ctx, p, pop, i) .eq. 1) then
+            nbits = nbits + 1
+         endif
+      enddo
+
+      NumberOfSetBits = dble(nbits)
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/maxchar.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/maxchar.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/maxchar.f	(revision 6168)
@@ -0,0 +1,123 @@
+c     Does not work, run it and see what happens.
+
+
+c       
+c     This is a test program for PGAPack.  The objective is to 
+c     maximize the number of 'z's in a chromosome.
+c       
+
+      include 'pgapackf.h'
+      include 'mpif.h'
+      
+      double precision NumberOfZs
+      integer          myMutation
+      integer          GetIntegerParameter
+      external         NumberOfZs
+      external         myMutation
+      external         GetIntegerParameter
+      
+      integer ctx
+      integer          len, maxiter, ierror
+      
+c     
+c     user main program
+c     
+      call MPI_Init(ierror)
+      
+      len     = GetIntegerParameter('String length?      ')
+      maxiter = GetIntegerParameter('How many iterations?')
+      
+      ctx     = PGACreate(PGA_DATATYPE_CHARACTER, len, PGA_MAXIMIZE)
+      
+      call PGASetRandomSeed(ctx, 1)
+      call PGASetMaxGAIterValue(ctx, maxiter)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,
+     &     myMutation)
+      
+      call PGASetUp(ctx)
+      call PGARun(ctx, NumberOfZs)
+      call PGADestroy(ctx)
+      
+      call MPI_Finalize(ierror)
+      
+      stop
+      end
+      
+
+
+c
+c     user defined evaluation function
+c     ctx - contex variable
+c     p   - chromosome index in population
+c     pop - which population to refer to
+c     
+      double precision function NumberOfZs(ctx, p, pop)
+      include     'pgapackf.h'
+      integer ctx
+      integer      p, pop, i, nzs, stringlen
+      
+      stringlen = PGAGetStringLength(ctx)
+      
+      nzs = 0
+      do i=1, stringlen
+         if (PGAGetCharacterAllele(ctx, p, pop, i) .eq. 'z') then
+            nzs = nzs + 1
+         endif
+      enddo
+      
+      NumberOfZs = dble(nzs)
+      return
+      end
+
+
+
+c     Custom mutation function.  Searches for an unset bit, 
+c     then sets it.  Returns the number of bits that are changed.
+c     
+      integer function myMutation(ctx, p, pop, mr)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, count
+      character         c
+      double precision  mr
+
+
+      count = 0
+      do i=PGAGetStringLength(ctx), 1, -1
+         if (PGARandomFlip(ctx, mr) .eq. 1) then
+            c = PGAGetCharacterAllele(ctx, p, pop, i)
+            if (c .ne. 'z') then
+               call PGASetCharacterAllele(ctx, p, pop, i,
+     &              char(ichar(c)+1))
+               count = count + 1
+            endif
+         endif
+      enddo
+      
+      myMutation = count
+      return
+      end
+
+
+c     Get an integer parameter from the user.  Since this is
+c     typically a parallel program, we must only do I/O on the
+c     "master" process -- process 0.  Once we read the parameter,
+c     we broadcast it to all the other processes, then every 
+c     process returns the correct value.
+c     
+      integer function GetIntegerParameter(query)
+      include      'pgapackf.h'
+      include      'mpif.h'
+      character*20  query
+      integer       rank, tmp
+
+      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierror)
+      if (rank .eq. 0) then
+         print *, query
+         read *, tmp
+      endif
+      call MPI_Bcast(tmp, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+
+      GetIntegerParameter = tmp
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/maxint.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/maxint.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/maxint.f	(revision 6168)
@@ -0,0 +1,113 @@
+c     
+c     This is a test program for PGAPack.  The objective is to 
+c     maximize each allele.  The evaluation function sums all allele
+c     values.
+c     
+
+      include 'pgapackf.h'
+      include 'mpif.h'
+
+      double precision evaluate
+      integer          myMutation
+      integer          GetIntegerParameter
+      external         GetIntegerParameter, evaluate, myMutation
+
+c     
+c     user main program
+c     
+      integer ctx
+      integer    len, maxiter, ierror
+
+
+      call MPI_Init(ierror)
+
+      len     = GetIntegerParameter('String length?      ')
+      maxiter = GetIntegerParameter('How many iterations?')
+
+      ctx = PGACreate(PGA_DATATYPE_INTEGER, len, PGA_MAXIMIZE)
+
+      call PGASetRandomSeed(ctx, 1)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,
+     &     myMutation)
+      call PGASetIntegerInitPermute(ctx, 1, len)
+
+      call PGASetMaxGAIterValue(ctx, maxiter)
+      call PGASetNumReplaceValue(ctx, 90)
+      call PGASetMutationAndCrossoverFlag(ctx, PGA_TRUE)
+      call PGASetPrintOptions(ctx, PGA_REPORT_AVERAGE)
+
+      call PGASetUp(ctx)
+
+      call PGARun(ctx, evaluate)
+      call PGADestroy(ctx)
+
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+c     Custom mutation function.  Searches for an unset bit, 
+c     then sets it.  Returns the number of bits that are changed.
+c     
+      integer function myMutation(ctx, p, pop, mr)
+      include          'pgapackf.h'
+      integer ctx, p, pop
+      double precision  mr
+      integer           stringlen, i, v, count
+
+      stringlen = PGAGetStringLength(ctx)
+      count     = 0
+
+      do i=stringlen, 1, -1
+         if (PGARandomFlip(ctx, mr) .eq. PGA_TRUE) then
+	    v = PGARandomInterval(ctx, 1, stringlen)
+            call PGASetIntegerAllele(ctx, p, pop, i, v)
+	    count = count + 1
+         endif
+      enddo
+
+      myMutation = count
+      return
+      end
+
+
+      double precision function evaluate(ctx, p, pop)
+      include  'pgapackf.h'
+      integer ctx, p, pop
+      integer   stringlen, i, sum
+
+
+      stringlen = PGAGetStringLength(ctx)
+      sum       = 0
+
+      do i=stringlen, 1, -1
+         sum = sum + PGAGetIntegerAllele(ctx, p, pop, i) 
+      enddo
+
+      evaluate = dble(sum)
+      return
+      end
+
+
+c     Get an integer parameter from the user.  Since this is
+c     typically a parallel program, we must only do I/O on the
+c     "master" process -- process 0.  Once we read the parameter,
+c     we broadcast it to all the other processes, then every 
+c     process returns the correct value.
+c     
+      integer function GetIntegerParameter(query)
+      include      'pgapackf.h'
+      include      'mpif.h'
+      character*20  query
+      integer       rank, tmp, ierror
+
+      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierror)
+      if (rank .eq. 0) then
+         print *, query
+         read *, tmp
+      endif
+      call MPI_Bcast(tmp, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+
+      GetIntegerParameter = tmp
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/name.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/name.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/name.f	(revision 6168)
@@ -0,0 +1,161 @@
+c  PGAPack test program.
+c
+c  The objective is to evolve a string of characters to match a string
+c  supplied by the user.  We will stop evolving when either we run out
+c  of iterations (500), or when the best string has the same evaluation
+c  value for 100 generations.
+c
+c  One problem with this implementation is that ' ' is not in
+c  PGA_DATATYPE_CHAR if we limit it using PGA_CINIT_MIXED, PGA_CINIT_LOWER,
+c  or PGA_CINIT_UPPER.  To fix this, we must define our own interval, and
+c  thus, our own mutation, initialization operators.
+c
+c  A user function is also used to check the "done" condition; we are 
+c  done if we've done more than 1000 iterations, or the evolved string
+c  is correct.
+c
+c  Created 28 Sep 95, Brian P. Walenz.  Thanks to Dan Ashlock for the idea.
+c
+      include 'pgapackf.h'
+
+      
+
+      integer          N_Mutation
+      integer          N_StopCond
+      double precision EvalName
+      
+      external   N_Mutation
+      external   N_StopCond
+      external   EvalName
+      external   N_InitString
+
+
+c     I'm not claiming to be a FORTRAN hacker, so if you want to use
+c     a string other than what is supplied, you must change the lengths 
+c     to correspond to the length of the new string.
+c     Also, this is common, sunce we need it in EvalName.
+      character*33     Name
+      common /global/  Name
+
+      integer ctx
+      integer    ierror
+
+
+      call MPI_Init(ierror)
+
+c             123456789012345678901234567890123
+      Name = 'Levine, Hallstrom, Noelle, Walenz'
+
+      ctx = PGACreate(PGA_DATATYPE_CHARACTER, 33, PGA_MAXIMIZE)
+    
+      call PGASetRandomSeed(ctx, 1)
+    
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,
+     &     N_InitString)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,
+     &     N_Mutation)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_STOPCOND,
+     &     N_StopCond)
+
+      call PGASetPopSize(ctx, 100)
+      call PGASetNumReplaceValue(ctx, 75)
+      call PGASetPopReplaceType(ctx, PGA_POPREPL_BEST)
+    
+      call PGASetCrossoverProb(ctx, 0.0d0)
+      call PGASetMutationOrCrossoverFlag(ctx, PGA_TRUE)
+    
+      call PGASetMaxGAIterValue(ctx, 100)
+    
+      call PGASetUp(ctx)
+      call PGARun(ctx, EvalName)
+      call PGADestroy(ctx)
+
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+c     Function to randomly initialize a PGA_DATATYPE_CHARACTER string 
+c     using all printable ASCII characters for the range.
+c
+      subroutine N_InitString(ctx, p, pop) 
+      include    'pgapackf.h'
+      integer ctx
+      integer     p, pop, i
+    
+      do i=1, PGAGetStringLength(ctx)
+         call PGASetCharacterAllele(ctx, p, pop, i,
+     &        char(PGARandomInterval(ctx, 32, 126)))
+      enddo
+
+      return
+      end
+
+c     Function to muatate a PGA_DATATYPE_CHARACTER string.  This is 
+c     done by simply picking allele locations, and replacing whatever 
+c     was there with a new value.  Again, legal values are all
+c     printable ASCII characters.
+c
+      integer function N_Mutation(ctx, p, pop, mr)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, count
+      double precision  mr
+
+      count = 0
+
+      do i=1, PGAGetStringLength(ctx)
+         if (PGARandomFlip(ctx, mr) .eq. PGA_TRUE) then
+            call PGASetCharacterAllele(ctx, p, pop, i,
+     &           char(PGARandomInterval(ctx, 32, 126)))
+            count = count + 1
+         endif
+      enddo
+           
+      N_Mutation = count
+      return
+      end
+
+
+
+      integer function N_StopCond(ctx) 
+      include   'pgapackf.h'
+      include   'mpif.h'
+      integer ctx
+      integer    done, best
+
+
+      done = PGACheckStoppingConditions(ctx, MPI_COMM_WORLD)
+      best = PGAGetBestIndex(ctx, PGA_OLDPOP)
+      if ((done .eq. PGA_FALSE) .and. 
+     &     (PGAGetEvaluation(ctx, best, PGA_OLDPOP) .eq.
+     &      PGAGetStringLength(ctx))) then
+         done = PGA_TRUE
+      endif
+
+      N_StopCond = done
+      return
+      end
+
+    
+c     Evaluate the string.  A highly fit string will have many of
+c     the characters matching Name.
+c
+      double precision function EvalName(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, count
+      character         Name(33)
+      common /global/   Name
+    
+      count = 0
+      do i=PGAGetStringLength(ctx), 1, -1
+         if (PGAGetCharacterAllele(ctx, p, pop, i) .eq. Name(i)) then
+            count = count + 1
+         endif
+      enddo
+
+      EvalName = dble(count)
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/namefull.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/namefull.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/namefull.f	(revision 6168)
@@ -0,0 +1,303 @@
+c  PGAPack test program.
+c
+c  The objective is to evolve a string of characters to match a string
+c  supplied by the user.  We will stop evolving when either we run out
+c  of iterations (500), or when the best string has the same evaluation
+c  value for 100 generations.
+c
+c  One problem with this implementation is that ' ' is not in
+c  PGA_DATATYPE_CHAR if we limit it using PGA_CINIT_MIXED, PGA_CINIT_LOWER,
+c  or PGA_CINIT_UPPER.  To fix this, we must define our own interval, and
+c  thus, our own mutation, initialization operators.
+c
+c  A user function is also used to check the "done" condition; we are 
+c  done if we've done more than 1000 iterations, or the evolved string
+c  is correct.
+c
+c  Created 28 Sep 95, Brian P. Walenz.  Thanks to Dan Ashlock for the idea.
+c
+      include 'pgapackf.h'
+
+      
+
+      integer          N_Mutation
+      integer          N_Duplicate
+      integer          N_StopCond
+      double precision EvalName
+      
+      external   N_Mutation
+      external   N_Duplicate
+      external   N_StopCond
+      external   EvalName
+      external   N_Crossover
+      external   N_InitString
+      external   N_PrintString
+      external   N_EndOfGeneration
+
+c     I'm not claiming to be a FORTRAN hacker, so if you want to use
+c     a string other than what is supplied, you must change the lengths 
+c     to correspond to the length of the new string.
+c     Also, this is common, sunce we need it in EvalName.
+      character*70     Name
+      common /global/  Name
+
+      integer ctx
+      integer    ierror
+
+
+      call MPI_Init(ierror)
+
+      Name = 'David M. Levine, Philip L. Hallstrom, David M. Noelle,'
+     &        // ' Brian P. Walenz'
+
+      ctx = PGACreate(PGA_DATATYPE_CHARACTER, 70, PGA_MAXIMIZE)
+    
+      call PGASetRandomSeed(ctx, 42)
+    
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,
+     &     N_InitString)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,
+     &     N_Mutation)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER,
+     &     N_Crossover)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_DUPLICATE,
+     &     N_Duplicate)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_STOPCOND,
+     &     N_StopCond)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,
+     &     N_EndOfGeneration)
+      call PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING,
+     &     N_PrintString)
+
+c     We don't want to report anything.
+      call PGASetPrintFrequencyValue(ctx, 10000)
+
+      call PGASetPopSize(ctx, 100)
+      call PGASetNumReplaceValue(ctx, 90)
+      call PGASetPopReplaceType(ctx, PGA_POPREPL_BEST)
+
+      call PGASetNoDuplicatesFlag(ctx, PGA_TRUE)
+
+      call PGASetMaxGAIterValue(ctx, 100)
+    
+      call PGASetUp(ctx)
+      call PGARun(ctx, EvalName)
+      call PGADestroy(ctx)
+
+      call MPI_Finalize(ierror)
+
+      stop
+      end
+
+
+c     Function to randomly initialize a PGA_DATATYPE_CHARACTER string 
+c     using all printable ASCII characters for the range.
+c
+      subroutine N_InitString(ctx, p, pop) 
+      include   'pgapackf.h'
+      integer ctx
+      integer    p, pop, i
+    
+      do i=PGAGetStringLength(ctx), 1, -1
+         call PGASetCharacterAllele(ctx, p, pop, i,
+     &        char(PGARandomInterval(ctx, 32, 126)))
+      enddo
+
+      return
+      end
+
+
+c     Function to crossover two name strings.  Quite an interesting
+c     crossover, too.  Works like a normal uniform crossover, except
+c     that, if one of the strings matches the correct value, we set
+c     BOTH children to the correct value 50% of the time.
+c
+      subroutine N_Crossover(ctx, p1, p2, pop1, c1, c2, pop2)
+      include          'pgapackf.h'
+      character         Name(70)
+      common /global/   Name
+      integer ctx
+      integer           p1, p2, pop1, c1, c2, pop2
+      integer           i, length
+      character         a, b
+
+      length = PGAGetStringLength(ctx)
+
+      do i=1, length
+         a = PGAGetCharacterAllele(ctx, p1, pop1, i)
+         b = PGAGetCharacterAllele(ctx, p2, pop1, i)
+         if ((a .eq. Name(i)) .or. (b .eq. Name(i))) then
+            a = Name(i)
+            b = Name(i)
+         endif
+
+         if (PGARandomFlip(ctx, 0.5d0) .eq. PGA_TRUE) then
+            call PGASetCharacterAllele(ctx, c1, pop2, i, a)
+            call PGASetCharacterAllele(ctx, c2, pop2, i, b)
+         else
+            call PGASetCharacterAllele(ctx, c1, pop2, i, b)
+            call PGASetCharacterAllele(ctx, c2, pop2, i, a)
+         endif
+      enddo
+   
+      return
+      end
+
+
+c     Function to compare two strings.  Strings are "equalivalent"
+c     if they match Name at the same alleles (and, thus, disagree at the
+c     same alleles).  We don't care what the disagreement is, just that
+c     it is there.
+c
+      integer function N_Duplicate(ctx, p1, pop1, p2, pop2)
+      include          'pgapackf.h'
+      character         Name(70)
+      common /global/   Name
+      integer ctx
+      integer           p1, pop1, p2, pop2
+      integer           i, match
+      character         a, b, c
+
+      match = PGA_TRUE
+
+      do i=PGAGetStringLength(ctx), 1, -1
+         a = PGAGetCharacterAllele(ctx, p1, pop1, i)
+         b = PGAGetCharacterAllele(ctx, p2, pop2, i)
+         c = Name(i)
+         if (((a .eq. c) .and. (b .ne. c)) .or.
+     &        ((a .ne. c) .and. (b .eq. c))) then
+            match = PGA_FALSE
+            goto 10
+         endif
+      enddo
+
+ 10   N_Duplicate = match
+      
+      return
+      end
+      
+
+
+c     Function to muatate a PGA_DATATYPE_CHARACTER string.  This is 
+c     done by simply picking allele locations and replacing whatever
+c     was there with a new value.  Again, legal values are all
+c     printable ASCII characters.
+c
+      integer function N_Mutation(ctx, p, pop, mr)
+      include          'pgapackf.h'
+      character         Name(70)
+      common /global/   Name
+      integer ctx
+      integer           p, pop, i, count
+      double precision  mr
+
+      count = 0
+
+      do i=PGAGetStringLength(ctx), 1, -1
+         if (PGAGetCharacterAllele(ctx, p, pop, i) .ne. Name(i)) then
+            if (PGARandomFlip(ctx, mr) .eq. PGA_TRUE) then
+               call PGASetCharacterAllele(ctx, p, pop, i,
+     &              char(PGARandomInterval(ctx, 32, 126)))
+               count = count + 1
+            endif
+         endif
+      enddo
+           
+      N_Mutation = count
+      return
+      end
+
+
+c     Function to print a string.  Since fortran does NOT support
+c     C file handles, we just print normally.  If we we're in C,
+c     we would print to the file "file".
+c     
+      subroutine N_PrintString(ctx, file, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           file, p, pop
+      character         string(70)
+
+      do i=PGAGetStringLength(ctx), 1, -1
+         string(i) = PGAGetCharacterAllele(ctx, p, pop, i)
+      enddo
+
+      print *, ':', string, ':'
+
+      return
+      end
+
+
+
+c     Function to check "doneness" of the GA.  We check the iteration
+c     count (by calling the system PGADone), then check if we have found
+c     the string yet.
+c
+      integer function N_StopCond(ctx) 
+      include          'pgapackf.h'
+      integer ctx
+      integer           done, best
+
+
+      done = PGACheckStoppingConditions(ctx)
+
+      best = PGAGetBestIndex(ctx, PGA_OLDPOP)
+      if ((done .eq. PGA_FALSE) .and. 
+     &     (PGAGetEvaluation(ctx, best, PGA_OLDPOP) .eq.
+     &      PGAGetStringLength(ctx))) then
+         done = PGA_TRUE
+      endif
+
+      N_StopCond = done
+      return
+      end
+
+c     After each generation, this routine is called.  What is done here,
+c     is to print the best string in our own format, then check if the
+c     best string is close to the correct value.  If it is, duplicate
+c     checking is tunred off.  This is critical, as the mutation operator
+c     will not degrade a string, so when the strings get near the correct
+c     solution, they all become duplicates, but none can be changed!
+c
+c     Other applications have done such things as send the best string 
+c     to another process to be visualized.  For here, we just call our
+c     print string function to print the best string.
+c
+      subroutine N_EndOfGeneration(ctx)
+      include          'pgapackf.h'
+      integer ctx
+      integer           best
+
+      best = PGAGetBestIndex(ctx, PGA_NEWPOP)
+
+      call N_PrintString(ctx, 0, best, PGA_NEWPOP)
+
+      if (PGAGetEvaluation(ctx, best, PGA_NEWPOP) .ge.
+     &     PGAGetStringLength(ctx)-10) then
+         call PGASetNoDuplicatesFlag(ctx, PGA_FALSE)
+      endif
+      
+      return
+      end
+      
+    
+c     Evaluate the string.  A highly fit string will have many of
+c     the characters matching Name.
+c
+      double precision function EvalName(ctx, p, pop)
+      include          'pgapackf.h'
+      integer ctx
+      integer           p, pop, i, count
+      character         Name(70)
+      common /global/   Name
+    
+      count = 0
+      do i=PGAGetStringLength(ctx), 1, -1
+         if (PGAGetCharacterAllele(ctx, p, pop, i) .eq. Name(i)) then
+            count = count + 1
+         endif
+      enddo
+
+      EvalName = dble(count)
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/pgapackf.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/pgapackf.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/fortran/pgapackf.h	(revision 6168)
@@ -0,0 +1,1 @@
+link ../../include/pgapackf.h
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/Makefile.in	(revision 6168)
@@ -0,0 +1,55 @@
+FC        = @FC@
+PREFFLAGS = @FFLAGS@
+RM        = @RM@
+LDFLAGS   = @LDFLAGS@
+
+SHELL     = @SHELL@
+RANLIB    = @RANLIB@
+MGHDIR    = .
+
+FFLAGS    = -o $@ $(PREFFLAGS)
+
+COMPILE.f = @$(FC) $(FFLAGS) -c
+
+OBJS = grdfcn77.o hesfcn77.o objfcn77.o ssqfcn77.o ssqjac77.o vecfcn77.o \
+       vecjac77.o
+
+default:
+	@echo "Compiling mgh library"
+	@make tprobs.a
+	@echo "Compiling mgh testprog"
+	@make testprog
+
+tprobs.a: $(OBJS)
+	@ar ruv tprobs.a $(OBJS)
+	@$(RANLIB) tprobs.a
+
+gradfcn77.o: gradfcn77.f
+	$(COMPILE.f) gradfcn77.f
+
+hesfcn77.o: hesfcn77.f
+	$(COMPILE.f) hesfcn77.f
+
+objfcn77.o: objfcn77.f
+	$(COMPILE.f) objfcn77.f
+
+ssqfcn77.o: ssqfcn77.f
+	$(COMPILE.f) ssqfcn77.f
+
+ssqjac77.o: ssqjac77.f
+	$(COMPILE.f) ssqjac77.f
+
+vecfcn77.o: vecfcn77.f
+	$(COMPILE.f) vecfcn77.f
+
+vecjac77.o: vecjac77.f
+	$(COMPILE.f) vecjac77.f
+
+testprog: testprog.f
+	@if test ! -f "$(MGHDIR)/tprobs.a"; then\
+		cd $(MGHDIR); make tprobs;\
+	fi
+	@$(FC) $(FFLAGS) testprog.f $(MGHDIR)/tprobs.a $(LDFLAGS)
+
+clean:
+	@$(RM) $(OBJS) tprobs.a testprog
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/README	(revision 6168)
@@ -0,0 +1,7 @@
+This directory contains the FORTRAN source code of a battery of 18
+unconstrained minimization problems and a program to run them.  These problems
+are the 18 listed on page 30 of the following article:
+
+More, Jorge J., Burton S. Garbow, and Kenneth E. Hillstrom.  "Testing
+	Unconstrained Optimization Software."  ACM Transactions on
+	Mathematical Software, Vol. 7, No. 1, March 1981.  Pages 17-41.
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/grdfcn77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/grdfcn77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/grdfcn77.f	(revision 6168)
@@ -0,0 +1,434 @@
+      subroutine grdfcn(n,x,g,nprob)
+      integer n,nprob
+      double precision x(n),g(n)
+c     **********
+c
+c     subroutine grdfcn
+c
+c     This subroutine defines the gradient vectors of eighteen
+c     nonlinear unconstrained minimization problems. The problem
+c     dimensions are as described in the prologue comments of objfcn.
+c
+c     The subroutine statement is
+c
+c       subroutine grdfcn(n,x,g,nprob)
+c
+c     where
+c
+c       n is a positive integer input variable.
+c
+c       x is an input array of length n.
+c
+c       g is an output array of length n which contains the components
+c         of the gradient vector of the nprob objective function
+c         evaluated at x.
+c
+c       nprob is a positive integer input variable which defines the
+c         number of the problem. nprob must not exceed 18.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... abs,atan,cos,dble,exp,log,sign,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,iev,j
+      double precision ap,arg,c2pdm6,cp0001,cp1,cp2,cp25,cp5,c1p5,
+     *                 c2p25,c2p625,c3p5,c19p8,c20p2,c25,c29,c100,
+     *                 c180,c200,c10000,c1pd6,d1,d2,eight,fifty,five,
+     *                 four,one,r,s1,s2,s3,t,t1,t2,t3,ten,th,three,
+     *                 tpi,twenty,two,zero
+      double precision fvec(50),y(15)
+      data zero,one,two,three,four,five,eight,ten,twenty,fifty
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,4.0d0,5.0d0,8.0d0,1.0d1,2.0d1,
+     *      5.0d1/
+      data c2pdm6,cp0001,cp1,cp2,cp25,cp5,c1p5,c2p25,c2p625,c3p5,
+     *     c19p8,c20p2,c25,c29,c100,c180,c200,c10000,c1pd6
+     *     /2.0d-6,1.0d-4,1.0d-1,2.0d-1,2.5d-1,5.0d-1,1.5d0,2.25d0,
+     *      2.625d0,3.5d0,1.98d1,2.02d1,2.5d1,2.9d1,1.0d2,1.8d2,2.0d2,
+     *      1.0d4,1.0d6/
+      data ap /1.0d-5/
+      data y(1),y(2),y(3),y(4),y(5),y(6),y(7),y(8),y(9),y(10),y(11),
+     *     y(12),y(13),y(14),y(15)
+     *     /9.0d-4,4.4d-3,1.75d-2,5.4d-2,1.295d-1,2.42d-1,3.521d-1,
+     *      3.989d-1,3.521d-1,2.42d-1,1.295d-1,5.4d-2,1.75d-2,4.4d-3,
+     *      9.0d-4/
+c
+c     Gradient routine selector.
+c
+      go to (10,20,50,70,80,100,130,190,220,260,270,290,310,350,370,
+     *       390,400,410), nprob
+c
+c     Helical valley function.
+c
+   10 continue
+      tpi = eight*atan(one)
+      th = sign(cp25,x(2))
+      if (x(1) .gt. zero) th = atan(x(2)/x(1))/tpi
+      if (x(1) .lt. zero) th = atan(x(2)/x(1))/tpi + cp5
+      arg = x(1)**2 + x(2)**2
+      r = sqrt(arg)
+      t = x(3) - ten*th
+      s1 = ten*t/(tpi*arg)
+      g(1) = c200*(x(1) - x(1)/r + x(2)*s1)
+      g(2) = c200*(x(2) - x(2)/r - x(1)*s1)
+      g(3) = two*(c100*t + x(3))
+      return
+c
+c     Biggs exp6 function.
+c
+   20 continue
+      do 30 j = 1, 6
+         g(j) = zero
+   30    continue
+      do 40 i = 1, 13
+         d1 = dble(i)/ten
+         d2 = exp(-d1) - five*exp(-ten*d1) + three*exp(-four*d1)
+         s1 = exp(-d1*x(1))
+         s2 = exp(-d1*x(2))
+         s3 = exp(-d1*x(5))
+         t = x(3)*s1 - x(4)*s2 + x(6)*s3 - d2
+         th = d1*t
+         g(1) = g(1) - s1*th
+         g(2) = g(2) + s2*th
+         g(3) = g(3) + s1*t
+         g(4) = g(4) - s2*t
+         g(5) = g(5) - s3*th
+         g(6) = g(6) + s3*t
+   40    continue
+      g(1) = two*x(3)*g(1)
+      g(2) = two*x(4)*g(2)
+      g(3) = two*g(3)
+      g(4) = two*g(4)
+      g(5) = two*x(6)*g(5)
+      g(6) = two*g(6)
+      return
+c
+c     Gaussian function.
+c
+   50 continue
+      g(1) = zero
+      g(2) = zero
+      g(3) = zero
+      do 60 i = 1, 15
+         d1 = cp5*dble(i-1)
+         d2 = c3p5 - d1 - x(3)
+         arg = -cp5*x(2)*d2**2
+         r = exp(arg)
+         t = x(1)*r - y(i)
+         s1 = r*t
+         s2 = d2*s1
+         g(1) = g(1) + s1
+         g(2) = g(2) - d2*s2
+         g(3) = g(3) + s2
+   60    continue
+      g(1) = two*g(1)
+      g(2) = x(1)*g(2)
+      g(3) = two*x(1)*x(2)*g(3)
+      return
+c
+c     Powell badly scaled function.
+c
+   70 continue
+      t1 = c10000*x(1)*x(2) - one
+      s1 = exp(-x(1))
+      s2 = exp(-x(2))
+      t2 = s1 + s2 - one - cp0001
+      g(1) = two*(c10000*x(2)*t1 - s1*t2)
+      g(2) = two*(c10000*x(1)*t1 - s2*t2)
+      return
+c
+c     Box 3-dimensional function.
+c
+   80 continue
+      g(1) = zero
+      g(2) = zero
+      g(3) = zero
+      do 90 i = 1, 10
+         d1 = dble(i)
+         d2 = d1/ten
+         s1 = exp(-d2*x(1))
+         s2 = exp(-d2*x(2))
+         s3 = exp(-d2) - exp(-d1)
+         t = s1 - s2 - s3*x(3)
+         th = d2*t
+         g(1) = g(1) - s1*th
+         g(2) = g(2) + s2*th
+         g(3) = g(3) - s3*t
+   90    continue
+      g(1) = two*g(1)
+      g(2) = two*g(2)
+      g(3) = two*g(3)
+      return
+c
+c     Variably dimensioned function.
+c
+  100 continue
+      t1 = zero
+      do 110 j = 1, n
+         t1 = t1 + dble(j)*(x(j) - one)
+  110    continue
+      t = t1*(one + two*t1**2)
+      do 120 j = 1, n
+         g(j) = two*(x(j) - one + dble(j)*t)
+  120    continue
+      return
+c
+c     Watson function.
+c
+  130 continue
+      do 140 j = 1, n
+         g(j) = zero
+  140    continue
+      do 180 i = 1, 29
+         d1 = dble(i)/c29
+         s1 = zero
+         d2 = one
+         do 150 j = 2, n
+            s1 = s1 + dble(j-1)*d2*x(j)
+            d2 = d1*d2
+  150       continue
+         s2 = zero
+         d2 = one
+         do 160 j = 1, n
+            s2 = s2 + d2*x(j)
+            d2 = d1*d2
+  160       continue
+         t = s1 - s2**2 - one
+         s3 = two*d1*s2
+         d2 = two/d1
+         do 170 j = 1, n
+            g(j) = g(j) + d2*(dble(j-1) - s3)*t
+            d2 = d1*d2
+  170       continue
+  180    continue
+      t1 = x(2) - x(1)**2 - one
+      g(1) = g(1) + x(1)*(two - four*t1)
+      g(2) = g(2) + two*t1
+      return
+c
+c     Penalty function I.
+c
+  190 continue
+      t1 = -cp25
+      do 200 j = 1, n
+         t1 = t1 + x(j)**2
+  200    continue
+      d1 = two*ap
+      th = four*t1
+      do 210 j = 1, n
+         g(j) = d1*(x(j) - one) + x(j)*th
+  210    continue
+      return
+c
+c     Penalty function II.
+c
+  220 continue
+      t1 = -one
+      do 230 j = 1, n
+         t1 = t1 + dble(n-j+1)*x(j)**2
+  230    continue
+      d1 = exp(cp1)
+      d2 = one
+      th = four*t1
+      do 250 j = 1, n
+         g(j) = dble(n-j+1)*x(j)*th
+         s1 = exp(x(j)/ten)
+         if (j .gt. 1) then
+            s3 = s1 + s2 - d2*(d1 + one)
+            g(j) = g(j) + ap*s1*(s3 + s1 - one/d1)/five
+            g(j-1) = g(j-1) + ap*s2*s3/five
+            end if
+         s2 = s1
+         d2 = d1*d2
+  250    continue
+      g(1) = g(1) + two*(x(1) - cp2)
+      return
+c
+c     Brown badly scaled function.
+c
+  260 continue
+      t1 = x(1) - c1pd6
+      t2 = x(2) - c2pdm6
+      t3 = x(1)*x(2) - two
+      g(1) = two*(t1 + x(2)*t3)
+      g(2) = two*(t2 + x(1)*t3)
+      return
+c
+c     Brown and Dennis function.
+c
+  270 continue
+      g(1) = zero
+      g(2) = zero
+      g(3) = zero
+      g(4) = zero
+      do 280 i = 1, 20
+         d1 = dble(i)/five
+         d2 = sin(d1)
+         t1 = x(1) + d1*x(2) - exp(d1)
+         t2 = x(3) + d2*x(4) - cos(d1)
+         t = t1**2 + t2**2
+         s1 = t1*t
+         s2 = t2*t
+         g(1) = g(1) + s1
+         g(2) = g(2) + d1*s1
+         g(3) = g(3) + s2
+         g(4) = g(4) + d2*s2
+  280    continue
+      g(1) = four*g(1)
+      g(2) = four*g(2)
+      g(3) = four*g(3)
+      g(4) = four*g(4)
+      return
+c
+c     Gulf research and development function.
+c
+  290 continue
+      g(1) = zero
+      g(2) = zero
+      g(3) = zero
+      d1 = two/three
+      do 300 i = 1, 99
+         arg = dble(i)/c100
+         r = (-fifty*log(arg))**d1 + c25 - x(2)
+         t1 = abs(r)**x(3)/x(1)
+         t2 = exp(-t1)
+         t = t2 - arg
+         s1 = t1*t2*t
+         g(1) = g(1) + s1
+         g(2) = g(2) + s1/r
+         g(3) = g(3) - s1*log(abs(r))
+  300    continue
+      g(1) = two*g(1)/x(1)
+      g(2) = two*x(3)*g(2)
+      g(3) = two*g(3)
+      return
+c
+c     Trigonometric function.
+c
+  310 continue
+      s1 = zero
+      do 320 j = 1, n
+         g(j) = cos(x(j))
+         s1 = s1 + g(j)
+  320    continue
+      s2 = zero
+      do 330 j = 1, n
+         th = sin(x(j))
+         t = dble(n+j) - th - s1 - dble(j)*g(j)
+         s2 = s2 + t
+         g(j) = (dble(j)*th - g(j))*t
+  330    continue
+      do 340 j = 1, n
+         g(j) = two*(g(j) + sin(x(j))*s2)
+  340    continue
+      return
+c
+c     Extended Rosenbrock function.
+c
+  350 continue
+      do 360 j = 1, n, 2
+         t1 = one - x(j)
+         g(j+1) = c200*(x(j+1) - x(j)**2)
+         g(j) = -two*(x(j)*g(j+1) + t1)
+  360    continue
+      return
+c
+c     Extended Powell function.
+c
+  370 continue
+      do 380 j = 1, n, 4
+         t = x(j) + ten*x(j+1)
+         t1 = x(j+2) - x(j+3)
+         s1 = five*t1
+         t2 = x(j+1) - two*x(j+2)
+         s2 = four*t2**3
+         t3 = x(j) - x(j+3)
+         s3 = twenty*t3**3
+         g(j) = two*(t + s3)
+         g(j+1) = twenty*t + s2
+         g(j+2) = two*(s1 - s2)
+         g(j+3) = -two*(s1 + s3)
+  380    continue
+      return
+c
+c     Beale function.
+c
+  390 continue
+      s1 = one - x(2)
+      t1 = c1p5 - x(1)*s1
+      s2 = one - x(2)**2
+      t2 = c2p25 - x(1)*s2
+      s3 = one - x(2)**3
+      t3 = c2p625 - x(1)*s3
+      g(1) = -two*(s1*t1 + s2*t2 + s3*t3)
+      g(2) = two*x(1)*(t1 + x(2)*(two*t2 + three*x(2)*t3))
+      return
+c
+c     Wood function.
+c
+  400 continue
+      s1 = x(2) - x(1)**2
+      s2 = one - x(1)
+      s3 = x(2) - one
+      t1 = x(4) - x(3)**2
+      t2 = one - x(3)
+      t3 = x(4) - one
+      g(1) = -two*(c200*x(1)*s1 + s2)
+      g(2) = c200*s1 + c20p2*s3 + c19p8*t3
+      g(3) = -two*(c180*x(3)*t1 + t2)
+      g(4) = c180*t1 + c20p2*t3 + c19p8*s3
+      return
+c
+c     Chebyquad function.
+c
+  410 continue
+      do 420 i = 1, n
+         fvec(i) = zero
+  420    continue
+      do 440 j = 1, n
+         t1 = one
+         t2 = two*x(j) - one
+         t = two*t2
+         do 430 i = 1, n
+            fvec(i) = fvec(i) + t2
+            th = t*t2 - t1
+            t1 = t2
+            t2 = th
+  430       continue
+  440    continue
+      d1 = one/dble(n)
+      iev = -1
+      do 450 i = 1, n
+         fvec(i) = d1*fvec(i)
+         if (iev .gt. 0) fvec(i) = fvec(i) + one/(dble(i)**2 - one)
+         iev = -iev
+  450    continue
+      do 470 j = 1, n
+         g(j) = zero
+         t1 = one
+         t2 = two*x(j) - one
+         t = two*t2
+         s1 = zero
+         s2 = two
+         do 460 i = 1, n
+            g(j) = g(j) + fvec(i)*s2
+            th = four*t2 + t*s2 - s1
+            s1 = s2
+            s2 = th
+            th = t*t2 - t1
+            t1 = t2
+            t2 = th
+  460       continue
+  470    continue
+      d2 = two*d1
+      do 480 j = 1, n
+         g(j) = d2*g(j)
+  480    continue
+      return
+c
+c     Last card of subroutine grdfcn.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/hesfcn77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/hesfcn77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/hesfcn77.f	(revision 6168)
@@ -0,0 +1,660 @@
+      subroutine hesfcn(n,x,h,ldh,nprob)
+      integer n,ldh,nprob
+      double precision x(n),h(ldh,n)
+c     **********
+c
+c     subroutine hesfcn
+c
+c     This subroutine defines the hessian matrices of eighteen
+c     nonlinear unconstrained minimization problems. The problem
+c     dimensions are as described in the prologue comments of objfcn.
+c     The upper triangle of the (symmetric) hessian matrix is
+c     computed columnwise. Storage locations below the diagonal
+c     are not disturbed until the final step, which reflects the
+c     upper triangle to fill the square matrix.
+c
+c     The subroutine statement is
+c
+c       subroutine hesfcn(n,x,h,ldh,nprob)
+c
+c     where
+c
+c       n is a positive integer input variable.
+c
+c       x is an input array of length n.
+c
+c       h is an output n by n array which contains the hessian
+c         matrix of the nprob objective function evaluated at x.
+c
+c       ldh is a positive integer input variable not less than n
+c         which specifies the leading dimension of the array h.
+c
+c       nprob is a positive integer input variable which defines the
+c         number of the problem. nprob must not exceed 18.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... abs,atan,cos,dble,exp,log,sign,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,iev,j,k
+      double precision ap,arg,cp0001,cp1,cp25,cp5,c1p5,c2p25,
+     *                 c2p625,c3p5,c19p8,c25,c29,c100,c200,c10000,d1,
+     *                 d2,eight,fifty,five,four,one,r,s1,s2,s3,t,t1,
+     *                 t2,t3,ten,th,three,tpi,twenty,two,zero
+      double precision d3,r1,r2,r3,u1,u2,v,v1,v2
+      double precision fvec(50),fvec1(50),y(15)
+      double precision six,xnine,twelve,c120,c200p2,c202,c220p2,c360,
+     *                 c400,c1200
+      data six,xnine,twelve,c120,c200p2,c202,c220p2,c360,c400,c1200
+     *     /6.0d0,9.0d0,1.2d1,1.2d2,2.002d2,2.02d2,2.202d2,3.6d2,
+     *      4.0d2,1.2d3/
+      data zero,one,two,three,four,five,eight,ten,twenty,fifty
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,4.0d0,5.0d0,8.0d0,1.0d1,2.0d1,
+     *      5.0d1/
+      data cp0001,cp1,cp25,cp5,c1p5,c2p25,c2p625,c3p5,c19p8,c25,c29,
+     *     c100,c200,c10000
+     *     /1.0d-4,1.0d-1,2.5d-1,5.0d-1,1.5d0,2.25d0,2.625d0,3.5d0,
+     *      1.98d1,2.5d1,2.9d1,1.0d2,2.0d2,1.0d4/
+      data ap /1.0d-5/
+      data y(1),y(2),y(3),y(4),y(5),y(6),y(7),y(8),y(9),y(10),y(11),
+     *     y(12),y(13),y(14),y(15)
+     *     /9.0d-4,4.4d-3,1.75d-2,5.4d-2,1.295d-1,2.42d-1,3.521d-1,
+     *      3.989d-1,3.521d-1,2.42d-1,1.295d-1,5.4d-2,1.75d-2,4.4d-3,
+     *      9.0d-4/
+c
+c     Hessian routine selector.
+c
+      go to (10,20,60,100,110,170,210,290,330,380,390,450,490,580,620,
+     *       660,670,680), nprob
+c
+c     Helical valley function.
+c
+   10 continue
+      tpi = eight*atan(one)
+      th = sign(cp25,x(2))
+      if (x(1) .gt. zero) th = atan(x(2)/x(1))/tpi
+      if (x(1) .lt. zero) th = atan(x(2)/x(1))/tpi + cp5
+      arg = x(1)**2 + x(2)**2
+      r = sqrt(arg)
+      t = x(3) - ten*th
+      s1 = ten*t/(tpi*arg)
+      t1 = ten/tpi
+      t2 = t1/arg
+      t3 = (x(1)/r - t1*t2*x(1) - two*x(2)*s1)/arg
+      h(1,1) = c200
+     *         *(one - x(2)/arg*(x(2)/r - t1*t2*x(2) + two*x(1)*s1))
+      h(1,2) = c200*(s1 + x(2)*t3)
+      h(2,2) = c200*(one - x(1)*t3)
+      h(1,3) = c200*t2*x(2)
+      h(2,3) = -c200*t2*x(1)
+      h(3,3) = c202
+      go to 800
+c
+c     Biggs exp6 function.
+c
+   20 continue
+      do 40 j = 1, 6
+         do 30 k = 1, j
+            h(k,j) = zero
+   30       continue
+   40    continue
+      do 50 i = 1, 13
+         d1 = dble(i)/ten
+         d2 = exp(-d1) - five*exp(-ten*d1) + three*exp(-four*d1)
+         s1 = exp(-d1*x(1))
+         s2 = exp(-d1*x(2))
+         s3 = exp(-d1*x(5))
+         t = x(3)*s1 - x(4)*s2 + x(6)*s3 - d2
+         th = d1*t
+         r1 = d1*s1
+         r2 = d1*s2
+         r3 = d1*s3
+         h(1,1) = h(1,1) + r1*(th + x(3)*r1)
+         h(1,2) = h(1,2) - r1*r2
+         h(2,2) = h(2,2) - r2*(th - x(4)*r2)
+         h(1,3) = h(1,3) - s1*(th + x(3)*r1)
+         h(3,3) = h(3,3) + s1**2
+         h(1,4) = h(1,4) + r1*s2
+         h(2,4) = h(2,4) + s2*(th - x(4)*r2)
+         h(3,4) = h(3,4) - s1*s2
+         h(4,4) = h(4,4) + s2**2
+         h(1,5) = h(1,5) + r1*r3
+         h(2,5) = h(2,5) - r2*r3
+         h(5,5) = h(5,5) + r3*(th + x(6)*r3)
+         h(1,6) = h(1,6) - r1*s3
+         h(2,6) = h(2,6) + r2*s3
+         h(3,6) = h(3,6) + s1*s3
+         h(4,6) = h(4,6) - s2*s3
+         h(5,6) = h(5,6) - s3*(th + x(6)*r3)
+         h(6,6) = h(6,6) + s3**2
+   50    continue
+      h(1,1) = two*x(3)*h(1,1)
+      h(1,2) = two*x(3)*x(4)*h(1,2)
+      h(2,2) = two*x(4)*h(2,2)
+      h(1,3) = two*h(1,3)
+      h(2,3) = two*x(4)*h(1,4)
+      h(3,3) = two*h(3,3)
+      h(1,4) = two*x(3)*h(1,4)
+      h(2,4) = two*h(2,4)
+      h(3,4) = two*h(3,4)
+      h(4,4) = two*h(4,4)
+      h(1,5) = two*x(3)*x(6)*h(1,5)
+      h(2,5) = two*x(4)*x(6)*h(2,5)
+      h(3,5) = two*x(6)*h(1,6)
+      h(4,5) = two*x(6)*h(2,6)
+      h(5,5) = two*x(6)*h(5,5)
+      h(1,6) = two*x(3)*h(1,6)
+      h(2,6) = two*x(4)*h(2,6)
+      h(3,6) = two*h(3,6)
+      h(4,6) = two*h(4,6)
+      h(5,6) = two*h(5,6)
+      h(6,6) = two*h(6,6)
+      go to 800
+c
+c     Gaussian function.
+c
+   60 continue
+      do 80 j = 1, 3
+         do 70 k = 1, j
+            h(k,j) = zero
+   70       continue
+   80    continue
+      do 90 i = 1, 15
+         d1 = cp5*dble(i-1)
+         d2 = c3p5 - d1 - x(3)
+         arg = -cp5*x(2)*d2**2
+         r = exp(arg)
+         t = x(1)*r - y(i)
+         s1 = r*t
+         s2 = d2*s1
+         t1 = s2 + d2*x(1)*r**2
+         t2 = d2*t1
+         h(1,1) = h(1,1) + r**2
+         h(1,2) = h(1,2) - t2
+         h(2,2) = h(2,2) + d2**2*t2
+         h(1,3) = h(1,3) + t1
+         h(2,3) = h(2,3) + two*s2 - d2*x(2)*t2
+         h(3,3) = h(3,3) + x(2)*t2 - s1
+   90    continue
+      h(1,1) = two*h(1,1)
+      h(1,2) = h(1,2)
+      h(2,2) = cp5*x(1)*h(2,2)
+      h(1,3) = two*x(2)*h(1,3)
+      h(2,3) = x(1)*h(2,3)
+      h(3,3) = two*x(1)*x(2)*h(3,3)
+      go to 800
+c
+c     Powell badly scaled function.
+c
+  100 continue
+      t1 = c10000*x(1)*x(2) - one
+      s1 = exp(-x(1))
+      s2 = exp(-x(2))
+      t2 = s1 + s2 - one - cp0001
+      h(1,1) = two*((c10000*x(2))**2 + s1*(s1 + t2))
+      h(1,2) = two*(c10000*(one + two*t1) + s1*s2)
+      h(2,2) = two*((c10000*x(1))**2 + s2*(s2 + t2))
+      go to 800
+c
+c     Box 3-dimensional function.
+c
+  110 continue
+      do 130 j = 1, 3
+         do 120 k = 1, j
+            h(k,j) = zero
+  120       continue
+  130    continue
+      do 140 i = 1, 10
+         d1 = dble(i)
+         d2 = d1/ten
+         s1 = exp(-d2*x(1))
+         s2 = exp(-d2*x(2))
+         s3 = exp(-d2) - exp(-d1)
+         t = s1 - s2 - s3*x(3)
+         th = d2*t
+         r1 = d2*s1
+         r2 = d2*s2
+         h(1,1) = h(1,1) + r1*(th + r1)
+         h(1,2) = h(1,2) - r1*r2
+         h(2,2) = h(2,2) - r2*(th - r2)
+         h(1,3) = h(1,3) + r1*s3
+         h(2,3) = h(2,3) - r2*s3
+         h(3,3) = h(3,3) + s3**2
+  140    continue
+      do 160 j = 1, 3
+         do 150 k = 1, j
+            h(k,j) = two*h(k,j)
+  150       continue
+  160    continue
+      go to 800
+c
+c     Variably dimensioned function.
+c
+  170 continue
+      t1 = zero
+      do 180 j = 1, n
+         t1 = t1 + dble(j)*(x(j) - one)
+  180    continue
+c     t = t1*(one + two*t1**2)
+      t2 = two + twelve*t1**2
+      do 200 j = 1, n
+         do 190 k = 1, j
+            h(k,j) = dble(k*j)*t2
+  190       continue
+         h(j,j) = h(j,j) + two
+  200    continue
+      go to 800
+c
+c     Watson function.
+c
+  210 continue
+      do 230 j = 1, n
+         do 220 k = 1, j
+            h(k,j) = zero
+  220       continue
+  230    continue
+      do 280 i = 1, 29
+         d1 = dble(i)/c29
+         s1 = zero
+         d2 = one
+         do 240 j = 2, n
+            s1 = s1 + dble(j-1)*d2*x(j)
+            d2 = d1*d2
+  240       continue
+         s2 = zero
+         d2 = one
+         do 250 j = 1, n
+            s2 = s2 + d2*x(j)
+            d2 = d1*d2
+  250       continue
+         t = s1 - s2**2 - one
+         s3 = two*d1*s2
+         d2 = two/d1
+         th = two*d1**2*t
+         do 270 j = 1, n
+            v = dble(j-1) - s3
+            d3 = one/d1
+            do 260 k = 1, j
+               h(k,j) = h(k,j) + d2*d3*(v*(dble(k-1) - s3) - th)
+               d3 = d1*d3
+  260          continue
+            d2 = d1*d2
+  270       continue
+  280    continue
+      t1 = x(2) - x(1)**2 - one
+      h(1,1) = h(1,1) + eight*x(1)**2 + two - four*t1
+      h(1,2) = h(1,2) - four*x(1)
+      h(2,2) = h(2,2) + two
+      go to 800
+c
+c     Penalty function I.
+c
+  290 continue
+      t1 = -cp25
+      do 300 j = 1, n
+         t1 = t1 + x(j)**2
+  300    continue
+      d1 = two*ap
+      th = four*t1
+      do 320 j = 1, n
+         t2 = eight*x(j)
+         do 310 k = 1, j
+            h(k,j) = x(k)*t2
+  310       continue
+         h(j,j) = h(j,j) + d1 + th
+  320    continue
+      go to 800
+c
+c     Penalty function II.
+c
+  330 continue
+      t1 = -one
+      do 340 j = 1, n
+         t1 = t1 + dble(n-j+1)*x(j)**2
+  340    continue
+      d1 = exp(cp1)
+      d2 = one
+      th = four*t1
+      do 370 j = 1, n
+         t2 = eight*dble(n-j+1)*x(j)
+         do 350 k = 1, j
+            h(k,j) = dble(n-k+1)*x(k)*t2
+  350       continue
+         h(j,j) = h(j,j) + dble(n-j+1)*th
+         s1 = exp(x(j)/ten)
+         if (j .gt. 1) then
+            s3 = s1 + s2 - d2*(d1 + one)
+            h(j,j) = h(j,j) + ap*s1*(s3 + three*s1 - one/d1)/fifty
+            h(j-1,j) = h(j-1,j) + ap*s1*s2/fifty
+            h(j-1,j-1) = h(j-1,j-1) + ap*s2*(s2 + s3)/fifty
+            end if
+         s2 = s1
+         d2 = d1*d2
+  370    continue
+      h(1,1) = h(1,1) + two
+      go to 800
+c
+c     Brown badly scaled function.
+c
+  380 continue
+c     t1 = x(1) - c1pd6
+c     t2 = x(2) - c2pdm6
+      t3 = x(1)*x(2) - two
+      h(1,1) = two*(one + x(2)**2)
+      h(1,2) = four*(one + t3)
+      h(2,2) = two*(one + x(1)**2)
+      go to 800
+c
+c     Brown and Dennis function.
+c
+  390 continue
+      do 410 j = 1, 4
+         do 400 k = 1, j
+            h(k,j) = zero
+  400       continue
+  410    continue
+      do 420 i = 1, 20
+         d1 = dble(i)/five
+         d2 = sin(d1)
+         t1 = x(1) + d1*x(2) - exp(d1)
+         t2 = x(3) + d2*x(4) - cos(d1)
+         t = t1**2 + t2**2
+c        s1 = t1*t
+c        s2 = t2*t
+         s3 = two*t1*t2
+         r1 = t + two*t1**2
+         r2 = t + two*t2**2
+         h(1,1) = h(1,1) + r1
+         h(1,2) = h(1,2) + d1*r1
+         h(2,2) = h(2,2) + d1**2*r1
+         h(1,3) = h(1,3) + s3
+         h(2,3) = h(2,3) + d1*s3
+         h(3,3) = h(3,3) + r2
+         h(1,4) = h(1,4) + d2*s3
+         h(2,4) = h(2,4) + d1*d2*s3
+         h(3,4) = h(3,4) + d2*r2
+         h(4,4) = h(4,4) + d2**2*r2
+  420    continue
+      do 440 j = 1, 4
+         do 430 k = 1, j
+            h(k,j) = four*h(k,j)
+  430       continue
+  440    continue
+      go to 800
+c
+c     Gulf research and development function.
+c
+  450 continue
+      do 470 j = 1, 3
+         do 460 k = 1, j
+            h(k,j) = zero
+  460       continue
+  470    continue
+      d1 = two/three
+      do 480 i = 1, 99
+         arg = dble(i)/c100
+         r = (-fifty*log(arg))**d1 + c25 - x(2)
+         t1 = abs(r)**x(3)/x(1)
+         t2 = exp(-t1)
+         t = t2 - arg
+         s1 = t1*t2*t
+         s2 = t1*(s1 + t2*(t1*t2 - t))
+         r1 = log(abs(r))
+         r2 = r1*s2
+         h(1,1) = h(1,1) + s2 - s1
+         h(1,2) = h(1,2) + s2/r
+         h(2,2) = h(2,2) + (s1 + x(3)*s2)/r**2
+         h(1,3) = h(1,3) - r2
+         h(2,3) = h(2,3) + (s1 - x(3)*r2)/r
+         h(3,3) = h(3,3) + r1*r2
+  480    continue
+      h(1,1) = two*h(1,1)/x(1)**2
+      h(1,2) = two*x(3)*h(1,2)/x(1)
+      h(2,2) = two*x(3)*h(2,2)
+      h(1,3) = two*h(1,3)/x(1)
+      h(2,3) = two*h(2,3)
+      h(3,3) = two*h(3,3)
+      go to 800
+c
+c     Trigonometric function.
+c
+  490 continue
+      u2 = cos(x(n))
+      s1 = u2
+      if (n .gt. 1) then
+         u1 = cos(x(n-1))
+         s1 = s1 + u1
+         do 500 j = 1, n-2
+            h(j,n-1) = cos(x(j))
+            s1 = s1 + h(j,n-1)
+  500       continue
+         end if
+      v2 = sin(x(n))
+      s2 = dble(2*n) - v2 - s1 - dble(n)*u2
+      r2 = dble(2*n)*v2 - u2
+      if (n .gt. 1) then
+         v1 = sin(x(n-1))
+         s2 = s2 + dble(2*n-1) - v1 - s1 - dble(n-1)*u1
+         r1 = dble(2*n-1)*v1 - u1
+         do 520 j = 1, n-2
+            h(j,n) = sin(x(j))
+            t = dble(n+j) - h(j,n) - s1 - dble(j)*h(j,n-1)
+            s2 = s2 + t
+  520       continue
+         do 540 j = 1, n-2
+            v = dble(j)*h(j,n-1) + h(j,n)
+            t = dble(n+j) - s1 - v
+            t1 = dble(n+j)*h(j,n) - h(j,n-1)
+            do 530 k = 1, j
+               th = dble(k)*h(k,n) - h(k,n-1)
+               h(k,j) = two*(h(k,n)*t1 + h(j,n)*th)
+  530          continue
+            h(j,j) = h(j,j) + two*(h(j,n-1)*s2 + v*t + th**2)
+  540       continue
+         do 550 k = 1, n-2
+            th = dble(k)*h(k,n) - h(k,n-1)
+            h(k,n-1) = two*(h(k,n)*r1 + v1*th)
+            h(k,n) = two*(h(k,n)*r2 + v2*th)
+  550       continue
+         v = dble(n-1)*u1 + v1
+         t = dble(2*n-1) - s1 - v
+         th = dble(n-1)*v1 - u1
+         h(n-1,n-1) = two*(v1*(r1 + th) + u1*s2 + v*t + th**2)
+         h(n-1,n) = two*(v1*r2 + v2*th)
+         end if
+      v = dble(n)*u2 + v2
+      t = dble(2*n) - s1 - v
+      th = dble(n)*v2 - u2
+      h(n,n) = two*(v2*(r2 + th) + u2*s2 + v*t + th**2)
+      go to 800
+c
+c     Extended Rosenbrock function.
+c
+  580 continue
+      do 600 j = 1, n
+         do 590 k = 1, j
+            h(k,j) = zero
+  590       continue
+  600    continue
+      do 610 j = 1, n, 2
+c        t1 = one - x(j)
+         h(j,j) = c1200*x(j)**2 - c400*x(j+1) + two
+         h(j,j+1) = -c400*x(j)
+         h(j+1,j+1) = c200
+  610    continue
+      go to 800
+c
+c     Extended Powell function.
+c
+  620 continue
+      do 640 j = 1, n
+         do 630 k = 1, j
+            h(k,j) = zero
+  630       continue
+  640    continue
+      do 650 j = 1, n, 4
+c        t = x(j) + ten*x(j+1)
+c        t1 = x(j+2) - x(j+3)
+c        s1 = five*t1
+         t2 = x(j+1) - two*x(j+2)
+c        s2 = four*t2**3
+         t3 = x(j) - x(j+3)
+c        s3 = twenty*t3**3
+         r2 = twelve*t2**2
+         r3 = c120*t3**2
+         h(j,j) = two + r3
+         h(j,j+1) = twenty
+         h(j+1,j+1) = c200 + r2
+         h(j+1,j+2) = -two*r2
+         h(j+2,j+2) = ten + four*r2
+         h(j,j+3) = -r3
+         h(j+2,j+3) = -ten
+         h(j+3,j+3) = ten + r3
+  650    continue
+      go to 800
+c
+c     Beale function.
+c
+  660 continue
+      s1 = one - x(2)
+      t1 = c1p5 - x(1)*s1
+      s2 = one - x(2)**2
+      t2 = c2p25 - x(1)*s2
+      s3 = one - x(2)**3
+      t3 = c2p625 - x(1)*s3
+      h(1,1) = two*(s1**2 + s2**2 + s3**2)
+      h(1,2) = two
+     *         *(t1 + x(2)*(two*t2 + three*x(2)*t3)
+     *           - x(1)*(s1 + x(2)*(two*s2 + three*x(2)*s3)))
+      h(2,2) = two*x(1)
+     *         *(x(1) + two*t2
+     *           + x(2)*(six*t3 + x(1)*x(2)*(four + xnine*x(2)**2)))
+      go to 800
+c
+c     Wood function.
+c
+  670 continue
+      s1 = x(2) - x(1)**2
+c     s2 = one - x(1)
+c     s3 = x(2) - one
+      t1 = x(4) - x(3)**2
+c     t2 = one - x(3)
+c     t3 = x(4) - one
+      h(1,1) = c400*(two*x(1)**2 - s1) + two
+      h(1,2) = -c400*x(1)
+      h(2,2) = c220p2
+      h(1,3) = zero
+      h(2,3) = zero
+      h(3,3) = c360*(two*x(3)**2 - t1) + two
+      h(1,4) = zero
+      h(2,4) = c19p8
+      h(3,4) = -c360*x(3)
+      h(4,4) = c200p2
+      go to 800
+c
+c     Chebyquad function.
+c
+  680 continue
+      do 690 i = 1, n
+         fvec(i) = zero
+  690    continue
+      do 710 j = 1, n
+         t1 = one
+         t2 = two*x(j) - one
+         t = two*t2
+         do 700 i = 1, n
+            fvec(i) = fvec(i) + t2
+            th = t*t2 - t1
+            t1 = t2
+            t2 = th
+  700       continue
+  710    continue
+      d1 = one/dble(n)
+      iev = -1
+      do 720 i = 1, n
+         fvec(i) = d1*fvec(i)
+         if (iev .gt. 0) fvec(i) = fvec(i) + one/(dble(i)**2 - one)
+         iev = -iev
+  720    continue
+      do 770 j = 1, n
+         do 730 k = 1, j
+            h(k,j) = zero
+  730       continue
+         t1 = one
+         t2 = two*x(j) - one
+         t = two*t2
+         s1 = zero
+         s2 = two
+         r1 = zero
+         r2 = zero
+         do 740 i = 1, n
+            h(j,j) = h(j,j) + fvec(i)*r2
+            th = eight*s2 + t*r2 - r1
+            r1 = r2
+            r2 = th
+            fvec1(i) = d1*s2
+            th = four*t2 + t*s2 - s1
+            s1 = s2
+            s2 = th
+            th = t*t2 - t1
+            t1 = t2
+            t2 = th
+  740       continue
+         do 760 k = 1, j
+            v1 = one
+            v2 = two*x(k) - one
+            v = two*v2
+            u1 = zero
+            u2 = two
+            do 750 i = 1, n
+               h(k,j) = h(k,j) + fvec1(i)*u2
+               th = four*v2 + v*u2 - u1
+               u1 = u2
+               u2 = th
+               th = v*v2 - v1
+               v1 = v2
+               v2 = th
+  750          continue
+  760       continue
+  770    continue
+      d2 = two*d1
+      do 790 j = 1, n
+         do 780 k = 1, j
+            h(k,j) = d2*h(k,j)
+  780       continue
+  790    continue
+c
+c     Reflect the upper triangle to fill the square matrix.
+c
+  800 continue
+      do 820 j = 1, n
+         do 810 k = j+1, n
+            h(k,j) = h(j,k)
+  810       continue
+  820    continue
+      return
+c
+c     Last card of subroutine hesfcn.
+c
+      end
+      subroutine expand(n,alin,amat,lda)
+      integer n,lda
+      double precision alin(*),amat(lda,n)
+c     **********
+c
+c     This subroutine is a dummy counterpart of one that expands a
+c     linear array to two-dimensional form.
+c
+c     Argonne National Laboratory. MINPACK Project. February 1984.
+c     Burton S. Garbow
+c
+c     **********
+      return
+c
+c     Last card of subroutine expand.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/objfcn77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/objfcn77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/objfcn77.f	(revision 6168)
@@ -0,0 +1,338 @@
+      subroutine objfcn(n,x,f,nprob)
+      integer n,nprob
+      double precision f
+      double precision x(n)
+c     **********
+c
+c     subroutine objfcn
+c
+c     This subroutine defines the objective functions of eighteen
+c     nonlinear unconstrained minimization problems. The values
+c     of n for functions 1,2,3,4,5,10,11,12,16 and 17 are
+c     3,6,3,2,3,2,4,3,2 and 4, respectively.
+c     For function 7, n may be 2 or greater but is usually 6 or 9.
+c     For functions 6,8,9,13,14,15 and 18 n may be variable,
+c     however it must be even for function 14, a multiple of 4 for
+c     function 15, and not greater than 50 for function 18.
+c
+c     The subroutine statement is
+c
+c       subroutine objfcn(n,x,f,nprob)
+c
+c     where
+c
+c       n is a positive integer input variable.
+c
+c       x is an input array of length n.
+c
+c       f is an output variable which contains the value of
+c         the nprob objective function evaluated at x.
+c
+c       nprob is a positive integer input variable which defines the
+c         number of the problem. nprob must not exceed 18.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... abs,atan,cos,dble,exp,log,sign,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,iev,j
+      double precision ap,arg,c2pdm6,cp0001,cp1,cp2,cp25,cp5,c1p5,
+     *                 c2p25,c2p625,c3p5,c25,c29,c90,c100,c10000,
+     *                 c1pd6,d1,d2,eight,fifty,five,four,one,r,s1,s2,
+     *                 s3,t,t1,t2,t3,ten,th,three,tpi,two,zero
+      double precision fvec(50),y(15)
+      data zero,one,two,three,four,five,eight,ten,fifty
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,4.0d0,5.0d0,8.0d0,1.0d1,5.0d1/
+      data c2pdm6,cp0001,cp1,cp2,cp25,cp5,c1p5,c2p25,c2p625,c3p5,c25,
+     *     c29,c90,c100,c10000,c1pd6
+     *     /2.0d-6,1.0d-4,1.0d-1,2.0d-1,2.5d-1,5.0d-1,1.5d0,2.25d0,
+     *      2.625d0,3.5d0,2.5d1,2.9d1,9.0d1,1.0d2,1.0d4,1.0d6/
+      data ap /1.0d-5/
+      data y(1),y(2),y(3),y(4),y(5),y(6),y(7),y(8),y(9),y(10),y(11),
+     *     y(12),y(13),y(14),y(15)
+     *     /9.0d-4,4.4d-3,1.75d-2,5.4d-2,1.295d-1,2.42d-1,3.521d-1,
+     *      3.989d-1,3.521d-1,2.42d-1,1.295d-1,5.4d-2,1.75d-2,4.4d-3,
+     *      9.0d-4/
+c
+c     Function routine selector.
+c
+      go to (10,20,40,60,70,90,110,150,170,200,210,230,250,280,300,
+     *       320,330,340), nprob
+c
+c     Helical valley function.
+c
+   10 continue
+      tpi = eight*atan(one)
+      th = sign(cp25,x(2))
+      if (x(1) .gt. zero) th = atan(x(2)/x(1))/tpi
+      if (x(1) .lt. zero) th = atan(x(2)/x(1))/tpi + cp5
+      arg = x(1)**2 + x(2)**2
+      r = sqrt(arg)
+      t = x(3) - ten*th
+      f = c100*(t**2 + (r - one)**2) + x(3)**2
+      return
+c
+c     Biggs exp6 function.
+c
+   20 continue
+      f = zero
+      do 30 i = 1, 13
+         d1 = dble(i)/ten
+         d2 = exp(-d1) - five*exp(-ten*d1) + three*exp(-four*d1)
+         s1 = exp(-d1*x(1))
+         s2 = exp(-d1*x(2))
+         s3 = exp(-d1*x(5))
+         t = x(3)*s1 - x(4)*s2 + x(6)*s3 - d2
+         f = f + t**2
+   30    continue
+      return
+c
+c     Gaussian function.
+c
+   40 continue
+      f = zero
+      do 50 i = 1, 15
+         d1 = cp5*dble(i-1)
+         d2 = c3p5 - d1 - x(3)
+         arg = -cp5*x(2)*d2**2
+         r = exp(arg)
+         t = x(1)*r - y(i)
+         f = f + t**2
+   50    continue
+      return
+c
+c     Powell badly scaled function.
+c
+   60 continue
+      t1 = c10000*x(1)*x(2) - one
+      s1 = exp(-x(1))
+      s2 = exp(-x(2))
+      t2 = s1 + s2 - one - cp0001
+      f = t1**2 + t2**2
+      return
+c
+c     Box 3-dimensional function.
+c
+   70 continue
+      f = zero
+      do 80 i = 1, 10
+         d1 = dble(i)
+         d2 = d1/ten
+         s1 = exp(-d2*x(1))
+         s2 = exp(-d2*x(2))
+         s3 = exp(-d2) - exp(-d1)
+         t = s1 - s2 - s3*x(3)
+         f = f + t**2
+   80    continue
+      return
+c
+c     Variably dimensioned function.
+c
+   90 continue
+      t1 = zero
+      t2 = zero
+      do 100 j = 1, n
+         t1 = t1 + dble(j)*(x(j) - one)
+         t2 = t2 + (x(j) - one)**2
+  100    continue
+      f = t2 + t1**2*(one + t1**2)
+      return
+c
+c     Watson function.
+c
+  110 continue
+      f = zero
+      do 140 i = 1, 29
+         d1 = dble(i)/c29
+         s1 = zero
+         d2 = one
+         do 120 j = 2, n
+            s1 = s1 + dble(j-1)*d2*x(j)
+            d2 = d1*d2
+  120       continue
+         s2 = zero
+         d2 = one
+         do 130 j = 1, n
+            s2 = s2 + d2*x(j)
+            d2 = d1*d2
+  130       continue
+         t = s1 - s2**2 - one
+         f = f + t**2
+  140    continue
+      t1 = x(2) - x(1)**2 - one
+      f = f + x(1)**2 + t1**2
+      return
+c
+c     Penalty function I.
+c
+  150 continue
+      t1 = -cp25
+      t2 = zero
+      do 160 j = 1, n
+         t1 = t1 + x(j)**2
+         t2 = t2 + (x(j) - one)**2
+  160    continue
+      f = ap*t2 + t1**2
+      return
+c
+c     Penalty function II.
+c
+  170 continue
+      t1 = -one
+      t2 = zero
+      t3 = zero
+      d1 = exp(cp1)
+      d2 = one
+      do 190 j = 1, n
+         t1 = t1 + dble(n-j+1)*x(j)**2
+         s1 = exp(x(j)/ten)
+         if (j .gt. 1) then
+            s3 = s1 + s2 - d2*(d1 + one)
+            t2 = t2 + s3**2
+            t3 = t3 + (s1 - one/d1)**2
+            end if
+         s2 = s1
+         d2 = d1*d2
+  190    continue
+      f = ap*(t2 + t3) + t1**2 + (x(1) - cp2)**2
+      return
+c
+c     Brown badly scaled function.
+c
+  200 continue
+      t1 = x(1) - c1pd6
+      t2 = x(2) - c2pdm6
+      t3 = x(1)*x(2) - two
+      f = t1**2 + t2**2 + t3**2
+      return
+c
+c     Brown and Dennis function.
+c
+  210 continue
+      f = zero
+      do 220 i = 1, 20
+         d1 = dble(i)/five
+         d2 = sin(d1)
+         t1 = x(1) + d1*x(2) - exp(d1)
+         t2 = x(3) + d2*x(4) - cos(d1)
+         t = t1**2 + t2**2
+         f = f + t**2
+  220    continue
+      return
+c
+c     Gulf research and development function.
+c
+  230 continue
+      f = zero
+      d1 = two/three
+      do 240 i = 1, 99
+         arg = dble(i)/c100
+         r = (-fifty*log(arg))**d1 + c25 - x(2)
+         t1 = abs(r)**x(3)/x(1)
+         t2 = exp(-t1)
+         t = t2 - arg
+         f = f + t**2
+  240    continue
+      return
+c
+c     Trigonometric function.
+c
+  250 continue
+      s1 = zero
+      do 260 j = 1, n
+         s1 = s1 + cos(x(j))
+  260    continue
+      f = zero
+      do 270 j = 1, n
+         t = dble(n+j) - sin(x(j)) - s1 - dble(j)*cos(x(j))
+         f = f + t**2
+  270    continue
+      return
+c
+c     Extended Rosenbrock function.
+c
+  280 continue
+      f = zero
+      do 290 j = 1, n, 2
+         t1 = one - x(j)
+         t2 = ten*(x(j+1) - x(j)**2)
+         f = f + t1**2 + t2**2
+  290    continue
+      return
+c
+c     Extended Powell function.
+c
+  300 continue
+      f = zero
+      do 310 j = 1, n, 4
+         t = x(j) + ten*x(j+1)
+         t1 = x(j+2) - x(j+3)
+         s1 = five*t1
+         t2 = x(j+1) - two*x(j+2)
+         s2 = t2**3
+         t3 = x(j) - x(j+3)
+         s3 = ten*t3**3
+         f = f + t**2 + s1*t1 + s2*t2 + s3*t3
+  310    continue
+      return
+c
+c     Beale function.
+c
+  320 continue
+      s1 = one - x(2)
+      t1 = c1p5 - x(1)*s1
+      s2 = one - x(2)**2
+      t2 = c2p25 - x(1)*s2
+      s3 = one - x(2)**3
+      t3 = c2p625 - x(1)*s3
+      f = t1**2 + t2**2 + t3**2
+      return
+c
+c     Wood function.
+c
+  330 continue
+      s1 = x(2) - x(1)**2
+      s2 = one - x(1)
+      s3 = x(2) - one
+      t1 = x(4) - x(3)**2
+      t2 = one - x(3)
+      t3 = x(4) - one
+      f = c100*s1**2 + s2**2 + c90*t1**2 + t2**2 + ten*(s3 + t3)**2
+     *    + (s3 - t3)**2/ten
+      return
+c
+c     Chebyquad function.
+c
+  340 continue
+      do 350 i = 1, n
+         fvec(i) = zero
+  350    continue
+      do 370 j = 1, n
+         t1 = one
+         t2 = two*x(j) - one
+         t = two*t2
+         do 360 i = 1, n
+            fvec(i) = fvec(i) + t2
+            th = t*t2 - t1
+            t1 = t2
+            t2 = th
+  360       continue
+  370    continue
+      f = zero
+      d1 = one/dble(n)
+      iev = -1
+      do 380 i = 1, n
+         t = d1*fvec(i)
+         if (iev .gt. 0) t = t + one/(dble(i)**2 - one)
+         f = f + t**2
+         iev = -iev
+  380    continue
+      return
+c
+c     Last card of subroutine objfcn.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/pgapackf.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/pgapackf.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/pgapackf.h	(revision 6168)
@@ -0,0 +1,1 @@
+link ../../include/pgapackf.h
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/ssqfcn77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/ssqfcn77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/ssqfcn77.f	(revision 6168)
@@ -0,0 +1,334 @@
+      subroutine ssqfcn(m,n,x,fvec,nprob)
+      integer m,n,nprob
+      double precision x(n),fvec(m)
+c     **********
+c
+c     subroutine ssqfcn
+c
+c     This subroutine defines the functions of eighteen nonlinear
+c     least squares problems. The allowable values of (m,n) for
+c     functions 1,2 and 3 are variable but with m .ge. n.
+c     For functions 4,5,6,7,8,9 and 10 the values of (m,n) are
+c     (2,2),(3,3),(4,4),(2,2),(15,3),(11,4) and (16,3), respectively.
+c     Function 11 (Watson) has m = 31 with n usually 6 or 9.
+c     However, any n, n = 2,...,31, is permitted.
+c     Functions 12,13 and 14 have n = 3,2 and 4, respectively, but
+c     allow any m .ge. n, with the usual choices being 10,10 and 20.
+c     Function 15 (Chebyquad) allows m and n variable with m .ge. n.
+c     Function 16 (Brown) allows n variable with m = n.
+c     For functions 17 and 18, the values of (m,n) are
+c     (33,5) and (65,11), respectively.
+c
+c     The subroutine statement is
+c
+c       subroutine ssqfcn(m,n,x,fvec,nprob)
+c
+c     where
+c
+c       m and n are positive integer input variables. n must not
+c         exceed m.
+c
+c       x is an input array of length n.
+c
+c       fvec is an output array of length m which contains the nprob
+c         function evaluated at x.
+c
+c       nprob is a positive integer input variable which defines the
+c         number of the problem. nprob must not exceed 18.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... atan,cos,dble,exp,sign,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,iev,j
+      double precision c13,c14,c29,c45,div,dx,eight,five,one,prod,sum,
+     *                 s1,s2,temp,ten,ti,tmp1,tmp2,tmp3,tmp4,tpi,two,
+     *                 zero,zp25,zp5
+      double precision v(11),y1(15),y2(11),y3(16),y4(33),y5(65)
+      data zero,zp25,zp5,one,two,five,eight,ten,c13,c14,c29,c45
+     *     /0.0d0,2.5d-1,5.0d-1,1.0d0,2.0d0,5.0d0,8.0d0,1.0d1,1.3d1,
+     *      1.4d1,2.9d1,4.5d1/
+      data v(1),v(2),v(3),v(4),v(5),v(6),v(7),v(8),v(9),v(10),v(11)
+     *     /4.0d0,2.0d0,1.0d0,5.0d-1,2.5d-1,1.67d-1,1.25d-1,1.0d-1,
+     *      8.33d-2,7.14d-2,6.25d-2/
+      data y1(1),y1(2),y1(3),y1(4),y1(5),y1(6),y1(7),y1(8),y1(9),
+     *     y1(10),y1(11),y1(12),y1(13),y1(14),y1(15)
+     *     /1.4d-1,1.8d-1,2.2d-1,2.5d-1,2.9d-1,3.2d-1,3.5d-1,3.9d-1,
+     *      3.7d-1,5.8d-1,7.3d-1,9.6d-1,1.34d0,2.1d0,4.39d0/
+      data y2(1),y2(2),y2(3),y2(4),y2(5),y2(6),y2(7),y2(8),y2(9),
+     *     y2(10),y2(11)
+     *     /1.957d-1,1.947d-1,1.735d-1,1.6d-1,8.44d-2,6.27d-2,4.56d-2,
+     *      3.42d-2,3.23d-2,2.35d-2,2.46d-2/
+      data y3(1),y3(2),y3(3),y3(4),y3(5),y3(6),y3(7),y3(8),y3(9),
+     *     y3(10),y3(11),y3(12),y3(13),y3(14),y3(15),y3(16)
+     *     /3.478d4,2.861d4,2.365d4,1.963d4,1.637d4,1.372d4,1.154d4,
+     *      9.744d3,8.261d3,7.03d3,6.005d3,5.147d3,4.427d3,3.82d3,
+     *      3.307d3,2.872d3/
+      data y4(1),y4(2),y4(3),y4(4),y4(5),y4(6),y4(7),y4(8),y4(9),
+     *     y4(10),y4(11),y4(12),y4(13),y4(14),y4(15),y4(16),y4(17),
+     *     y4(18),y4(19),y4(20),y4(21),y4(22),y4(23),y4(24),y4(25),
+     *     y4(26),y4(27),y4(28),y4(29),y4(30),y4(31),y4(32),y4(33)
+     *     /8.44d-1,9.08d-1,9.32d-1,9.36d-1,9.25d-1,9.08d-1,8.81d-1,
+     *      8.5d-1,8.18d-1,7.84d-1,7.51d-1,7.18d-1,6.85d-1,6.58d-1,
+     *      6.28d-1,6.03d-1,5.8d-1,5.58d-1,5.38d-1,5.22d-1,5.06d-1,
+     *      4.9d-1,4.78d-1,4.67d-1,4.57d-1,4.48d-1,4.38d-1,4.31d-1,
+     *      4.24d-1,4.2d-1,4.14d-1,4.11d-1,4.06d-1/
+      data y5(1),y5(2),y5(3),y5(4),y5(5),y5(6),y5(7),y5(8),y5(9),
+     *     y5(10),y5(11),y5(12),y5(13),y5(14),y5(15),y5(16),y5(17),
+     *     y5(18),y5(19),y5(20),y5(21),y5(22),y5(23),y5(24),y5(25),
+     *     y5(26),y5(27),y5(28),y5(29),y5(30),y5(31),y5(32),y5(33),
+     *     y5(34),y5(35),y5(36),y5(37),y5(38),y5(39),y5(40),y5(41),
+     *     y5(42),y5(43),y5(44),y5(45),y5(46),y5(47),y5(48),y5(49),
+     *     y5(50),y5(51),y5(52),y5(53),y5(54),y5(55),y5(56),y5(57),
+     *     y5(58),y5(59),y5(60),y5(61),y5(62),y5(63),y5(64),y5(65)
+     *     /1.366d0,1.191d0,1.112d0,1.013d0,9.91d-1,8.85d-1,8.31d-1,
+     *      8.47d-1,7.86d-1,7.25d-1,7.46d-1,6.79d-1,6.08d-1,6.55d-1,
+     *      6.16d-1,6.06d-1,6.02d-1,6.26d-1,6.51d-1,7.24d-1,6.49d-1,
+     *      6.49d-1,6.94d-1,6.44d-1,6.24d-1,6.61d-1,6.12d-1,5.58d-1,
+     *      5.33d-1,4.95d-1,5.0d-1,4.23d-1,3.95d-1,3.75d-1,3.72d-1,
+     *      3.91d-1,3.96d-1,4.05d-1,4.28d-1,4.29d-1,5.23d-1,5.62d-1,
+     *      6.07d-1,6.53d-1,6.72d-1,7.08d-1,6.33d-1,6.68d-1,6.45d-1,
+     *      6.32d-1,5.91d-1,5.59d-1,5.97d-1,6.25d-1,7.39d-1,7.1d-1,
+     *      7.29d-1,7.2d-1,6.36d-1,5.81d-1,4.28d-1,2.92d-1,1.62d-1,
+     *      9.8d-2,5.4d-2/
+c
+c     Function routine selector.
+c
+      go to (10,40,70,110,120,130,140,150,170,190,210,250,270,290,310,
+     *       360,390,410), nprob
+c
+c     Linear function - full rank.
+c
+   10 continue
+      sum = zero
+      do 20 j = 1, n
+         sum = sum + x(j)
+   20    continue
+      temp = two*sum/dble(m) + one
+      do 30 i = 1, m
+         fvec(i) = -temp
+         if (i .le. n) fvec(i) = fvec(i) + x(i)
+   30    continue
+      return
+c
+c     Linear function - rank 1.
+c
+   40 continue
+      sum = zero
+      do 50 j = 1, n
+         sum = sum + dble(j)*x(j)
+   50    continue
+      do 60 i = 1, m
+         fvec(i) = dble(i)*sum - one
+   60    continue
+      return
+c
+c     Linear function - rank 1 with zero columns and rows.
+c
+   70 continue
+      sum = zero
+      do 80 j = 2, n-1
+         sum = sum + dble(j)*x(j)
+   80    continue
+      do 100 i = 1, m-1
+         fvec(i) = dble(i-1)*sum - one
+  100    continue
+      fvec(m) = -one
+      return
+c
+c     Rosenbrock function.
+c
+  110 continue
+      fvec(1) = ten*(x(2) - x(1)**2)
+      fvec(2) = one - x(1)
+      return
+c
+c     Helical valley function.
+c
+  120 continue
+      tpi = eight*atan(one)
+      tmp1 = sign(zp25,x(2))
+      if (x(1) .gt. zero) tmp1 = atan(x(2)/x(1))/tpi
+      if (x(1) .lt. zero) tmp1 = atan(x(2)/x(1))/tpi + zp5
+      tmp2 = sqrt(x(1)**2+x(2)**2)
+      fvec(1) = ten*(x(3) - ten*tmp1)
+      fvec(2) = ten*(tmp2 - one)
+      fvec(3) = x(3)
+      return
+c
+c     Powell singular function.
+c
+  130 continue
+      fvec(1) = x(1) + ten*x(2)
+      fvec(2) = sqrt(five)*(x(3) - x(4))
+      fvec(3) = (x(2) - two*x(3))**2
+      fvec(4) = sqrt(ten)*(x(1) - x(4))**2
+      return
+c
+c     Freudenstein and Roth function.
+c
+  140 continue
+      fvec(1) = -c13 + x(1) + ((five - x(2))*x(2) - two)*x(2)
+      fvec(2) = -c29 + x(1) + ((one + x(2))*x(2) - c14)*x(2)
+      return
+c
+c     Bard function.
+c
+  150 continue
+      do 160 i = 1, 15
+         tmp1 = dble(i)
+         tmp2 = dble(16-i)
+         tmp3 = tmp1
+         if (i .gt. 8) tmp3 = tmp2
+         fvec(i) = y1(i) - (x(1) + tmp1/(x(2)*tmp2 + x(3)*tmp3))
+  160    continue
+      return
+c
+c     Kowalik and Osborne function.
+c
+  170 continue
+      do 180 i = 1, 11
+         tmp1 = v(i)*(v(i) + x(2))
+         tmp2 = v(i)*(v(i) + x(3)) + x(4)
+         fvec(i) = y2(i) - x(1)*tmp1/tmp2
+  180    continue
+      return
+c
+c     Meyer function.
+c
+  190 continue
+      do 200 i = 1, 16
+         temp = five*dble(i) + c45 + x(3)
+         tmp1 = x(2)/temp
+         tmp2 = exp(tmp1)
+         fvec(i) = x(1)*tmp2 - y3(i)
+  200    continue
+      return
+c
+c     Watson function.
+c
+  210 continue
+      do 240 i = 1, 29
+         div = dble(i)/c29
+         s1 = zero
+         dx = one
+         do 220 j = 2, n
+            s1 = s1 + dble(j-1)*dx*x(j)
+            dx = div*dx
+  220       continue
+         s2 = zero
+         dx = one
+         do 230 j = 1, n
+            s2 = s2 + dx*x(j)
+            dx = div*dx
+  230       continue
+         fvec(i) = s1 - s2**2 - one
+  240    continue
+      fvec(30) = x(1)
+      fvec(31) = x(2) - x(1)**2 - one
+      return
+c
+c     Box 3-dimensional function.
+c
+  250 continue
+      do 260 i = 1, m
+         temp = dble(i)
+         tmp1 = temp/ten
+         fvec(i) = exp(-tmp1*x(1)) - exp(-tmp1*x(2))
+     *             + (exp(-temp) - exp(-tmp1))*x(3)
+  260    continue
+      return
+c
+c     Jennrich and Sampson function.
+c
+  270 continue
+      do 280 i = 1, m
+         temp = dble(i)
+         fvec(i) = two + two*temp - exp(temp*x(1)) - exp(temp*x(2))
+  280    continue
+      return
+c
+c     Brown and Dennis function.
+c
+  290 continue
+      do 300 i = 1, m
+         temp = dble(i)/five
+         tmp1 = x(1) + temp*x(2) - exp(temp)
+         tmp2 = x(3) + sin(temp)*x(4) - cos(temp)
+         fvec(i) = tmp1**2 + tmp2**2
+  300    continue
+      return
+c
+c     Chebyquad function.
+c
+  310 continue
+      do 320 i = 1, m
+         fvec(i) = zero
+  320    continue
+      do 340 j = 1, n
+         tmp1 = one
+         tmp2 = two*x(j) - one
+         temp = two*tmp2
+         do 330 i = 1, m
+            fvec(i) = fvec(i) + tmp2
+            ti = temp*tmp2 - tmp1
+            tmp1 = tmp2
+            tmp2 = ti
+  330       continue
+  340    continue
+      dx = one/dble(n)
+      iev = -1
+      do 350 i = 1, m
+         fvec(i) = dx*fvec(i)
+         if (iev .gt. 0) fvec(i) = fvec(i) + one/(dble(i)**2 - one)
+         iev = -iev
+  350    continue
+      return
+c
+c     Brown almost-linear function.
+c
+  360 continue
+      sum = -dble(n+1)
+      prod = one
+      do 370 j = 1, n
+         sum = sum + x(j)
+         prod = x(j)*prod
+  370    continue
+      do 380 i = 1, n-1
+         fvec(i) = x(i) + sum
+  380    continue
+      fvec(n) = prod - one
+      return
+c
+c     Osborne 1 function.
+c
+  390 continue
+      do 400 i = 1, 33
+         temp = ten*dble(i-1)
+         tmp1 = exp(-x(4)*temp)
+         tmp2 = exp(-x(5)*temp)
+         fvec(i) = y4(i) - (x(1) + x(2)*tmp1 + x(3)*tmp2)
+  400    continue
+      return
+c
+c     Osborne 2 function.
+c
+  410 continue
+      do 420 i = 1, 65
+         temp = dble(i-1)/ten
+         tmp1 = exp(-x(5)*temp)
+         tmp2 = exp(-x(6)*(temp-x(9))**2)
+         tmp3 = exp(-x(7)*(temp-x(10))**2)
+         tmp4 = exp(-x(8)*(temp-x(11))**2)
+         fvec(i) = y5(i)
+     *             - (x(1)*tmp1 + x(2)*tmp2 + x(3)*tmp3 + x(4)*tmp4)
+  420    continue
+      return
+c
+c     Last card of subroutine ssqfcn.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/ssqjac77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/ssqjac77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/ssqjac77.f	(revision 6168)
@@ -0,0 +1,340 @@
+      subroutine ssqjac(m,n,x,fjac,ldfjac,nprob)
+      integer m,n,ldfjac,nprob
+      double precision x(n),fjac(ldfjac,n)
+c     **********
+c
+c     subroutine ssqjac
+c
+c     This subroutine defines the Jacobian matrices of eighteen
+c     nonlinear least squares problems. The problem dimensions are
+c     as described in the prologue comments of ssqfcn.
+c
+c     The subroutine statement is
+c
+c       subroutine ssqjac(m,n,x,fjac,ldfjac,nprob)
+c
+c     where
+c
+c       m and n are positive integer input variables. n must not
+c         exceed m.
+c
+c       x is an input array of length n.
+c
+c       fjac is an m by n output array which contains the Jacobian
+c         matrix of the nprob function evaluated at x.
+c
+c       ldfjac is a positive integer input variable not less than m
+c         which specifies the leading dimension of the array fjac.
+c
+c       nprob is a positive integer variable which defines the
+c         number of the problem. nprob must not exceed 18.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... atan,cos,dble,exp,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,j,k
+      double precision c14,c20,c29,c45,c100,div,dx,eight,five,four,
+     *                 one,prod,s2,temp,ten,three,ti,tmp1,tmp2,tmp3,
+     *                 tmp4,tpi,two,zero
+      double precision v(11)
+      data zero,one,two,three,four,five,eight,ten,c14,c20,c29,c45,c100
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,4.0d0,5.0d0,8.0d0,1.0d1,1.4d1,
+     *      2.0d1,2.9d1,4.5d1,1.0d2/
+      data v(1),v(2),v(3),v(4),v(5),v(6),v(7),v(8),v(9),v(10),v(11)
+     *     /4.0d0,2.0d0,1.0d0,5.0d-1,2.5d-1,1.67d-1,1.25d-1,1.0d-1,
+     *      8.33d-2,7.14d-2,6.25d-2/
+c
+c     Jacobian routine selector.
+c
+      go to (10,40,70,130,140,150,180,190,210,230,250,310,330,350,370,
+     *       400,460,480), nprob
+c
+c     Linear function - full rank.
+c
+   10 continue
+      temp = two/dble(m)
+      do 30 j = 1, n
+         do 20 i = 1, m
+            fjac(i,j) = -temp
+   20       continue
+         fjac(j,j) = fjac(j,j) + one
+   30    continue
+      return
+c
+c     Linear function - rank 1.
+c
+   40 continue
+      do 60 j = 1, n
+         do 50 i = 1, m
+            fjac(i,j) = dble(i)*dble(j)
+   50       continue
+   60    continue
+      return
+c
+c     Linear function - rank 1 with zero columns and rows.
+c
+   70 continue
+      do 90 j = 1, n
+         do 80 i = 1, m
+            fjac(i,j) = zero
+   80       continue
+   90    continue
+      do 110 j = 2, n-1
+         do 100 i = 2, m-1
+            fjac(i,j) = dble(i-1)*dble(j)
+  100       continue
+  110    continue
+      return
+c
+c     Rosenbrock function.
+c
+  130 continue
+      fjac(1,1) = -c20*x(1)
+      fjac(1,2) = ten
+      fjac(2,1) = -one
+      fjac(2,2) = zero
+      return
+c
+c     Helical valley function.
+c
+  140 continue
+      tpi = eight*atan(one)
+      temp = x(1)**2 + x(2)**2
+      tmp1 = tpi*temp
+      tmp2 = sqrt(temp)
+      fjac(1,1) = c100*x(2)/tmp1
+      fjac(1,2) = -c100*x(1)/tmp1
+      fjac(1,3) = ten
+      fjac(2,1) = ten*x(1)/tmp2
+      fjac(2,2) = ten*x(2)/tmp2
+      fjac(2,3) = zero
+      fjac(3,1) = zero
+      fjac(3,2) = zero
+      fjac(3,3) = one
+      return
+c
+c     Powell singular function.
+c
+  150 continue
+      do 170 j = 1, 4
+         do 160 i = 1, 4
+            fjac(i,j) = zero
+  160       continue
+  170    continue
+      fjac(1,1) = one
+      fjac(1,2) = ten
+      fjac(2,3) = sqrt(five)
+      fjac(2,4) = -fjac(2,3)
+      fjac(3,2) = two*(x(2) - two*x(3))
+      fjac(3,3) = -two*fjac(3,2)
+      fjac(4,1) = two*sqrt(ten)*(x(1) - x(4))
+      fjac(4,4) = -fjac(4,1)
+      return
+c
+c     Freudenstein and Roth function.
+c
+  180 continue
+      fjac(1,1) = one
+      fjac(1,2) = x(2)*(ten - three*x(2)) - two
+      fjac(2,1) = one
+      fjac(2,2) = x(2)*(two + three*x(2)) - c14
+      return
+c
+c     Bard function.
+c
+  190 continue
+      do 200 i = 1, 15
+         tmp1 = dble(i)
+         tmp2 = dble(16-i)
+         tmp3 = tmp1
+         if (i .gt. 8) tmp3 = tmp2
+         tmp4 = (x(2)*tmp2 + x(3)*tmp3)**2
+         fjac(i,1) = -one
+         fjac(i,2) = tmp1*tmp2/tmp4
+         fjac(i,3) = tmp1*tmp3/tmp4
+  200    continue
+      return
+c
+c     Kowalik and Osborne function.
+c
+  210 continue
+      do 220 i = 1, 11
+         tmp1 = v(i)*(v(i) + x(2))
+         tmp2 = v(i)*(v(i) + x(3)) + x(4)
+         fjac(i,1) = -tmp1/tmp2
+         fjac(i,2) = -v(i)*x(1)/tmp2
+         fjac(i,3) = fjac(i,1)*fjac(i,2)
+         fjac(i,4) = fjac(i,3)/v(i)
+  220    continue
+      return
+c
+c     Meyer function.
+c
+  230 continue
+      do 240 i = 1, 16
+         temp = five*dble(i) + c45 + x(3)
+         tmp1 = x(2)/temp
+         tmp2 = exp(tmp1)
+         fjac(i,1) = tmp2
+         fjac(i,2) = x(1)*tmp2/temp
+         fjac(i,3) = -tmp1*fjac(i,2)
+  240    continue
+      return
+c
+c     Watson function.
+c
+  250 continue
+      do 280 i = 1, 29
+         div = dble(i)/c29
+         s2 = zero
+         dx = one
+         do 260 j = 1, n
+            s2 = s2 + dx*x(j)
+            dx = div*dx
+  260       continue
+         temp = two*div*s2
+         dx = one/div
+         do 270 j = 1, n
+            fjac(i,j) = dx*(dble(j-1) - temp)
+            dx = div*dx
+  270       continue
+  280    continue
+      do 300 j = 1, n
+         do 290 i = 30, 31
+            fjac(i,j) = zero
+  290       continue
+  300    continue
+      fjac(30,1) = one
+      fjac(31,1) = -two*x(1)
+      fjac(31,2) = one
+      return
+c
+c     Box 3-dimensional function.
+c
+  310 continue
+      do 320 i = 1, m
+         temp = dble(i)
+         tmp1 = temp/ten
+         fjac(i,1) = -tmp1*exp(-tmp1*x(1))
+         fjac(i,2) = tmp1*exp(-tmp1*x(2))
+         fjac(i,3) = exp(-temp) - exp(-tmp1)
+  320    continue
+      return
+c
+c     Jennrich and Sampson function.
+c
+  330 continue
+      do 340 i = 1, m
+         temp = dble(i)
+         fjac(i,1) = -temp*exp(temp*x(1))
+         fjac(i,2) = -temp*exp(temp*x(2))
+  340    continue
+      return
+c
+c     Brown and Dennis function.
+c
+  350 continue
+      do 360 i = 1, m
+         temp = dble(i)/five
+         ti = sin(temp)
+         tmp1 = x(1) + temp*x(2) - exp(temp)
+         tmp2 = x(3) + ti*x(4) - cos(temp)
+         fjac(i,1) = two*tmp1
+         fjac(i,2) = temp*fjac(i,1)
+         fjac(i,3) = two*tmp2
+         fjac(i,4) = ti*fjac(i,3)
+  360    continue
+      return
+c
+c     Chebyquad function.
+c
+  370 continue
+      dx = one/dble(n)
+      do 390 j = 1, n
+         tmp1 = one
+         tmp2 = two*x(j) - one
+         temp = two*tmp2
+         tmp3 = zero
+         tmp4 = two
+         do 380 i = 1, m
+            fjac(i,j) = dx*tmp4
+            ti = four*tmp2 + temp*tmp4 - tmp3
+            tmp3 = tmp4
+            tmp4 = ti
+            ti = temp*tmp2 - tmp1
+            tmp1 = tmp2
+            tmp2 = ti
+  380       continue
+  390    continue
+      return
+c
+c     Brown almost-linear function.
+c
+  400 continue
+      prod = one
+      do 420 j = 1, n
+         prod = x(j)*prod
+         do 410 i = 1, n
+            fjac(i,j) = one
+  410       continue
+         fjac(j,j) = two
+  420    continue
+      do 450 j = 1, n
+         temp = x(j)
+         if (temp .eq. zero) then
+            temp = one
+            prod = one
+            do 430 k = 1, n
+               if (k .ne. j) prod = x(k)*prod
+  430          continue
+            end if
+         fjac(n,j) = prod/temp
+  450    continue
+      return
+c
+c     Osborne 1 function.
+c
+  460 continue
+      do 470 i = 1, 33
+         temp = ten*dble(i-1)
+         tmp1 = exp(-x(4)*temp)
+         tmp2 = exp(-x(5)*temp)
+         fjac(i,1) = -one
+         fjac(i,2) = -tmp1
+         fjac(i,3) = -tmp2
+         fjac(i,4) = temp*x(2)*tmp1
+         fjac(i,5) = temp*x(3)*tmp2
+  470    continue
+      return
+c
+c     Osborne 2 function.
+c
+  480 continue
+      do 490 i = 1, 65
+         temp = dble(i-1)/ten
+         tmp1 = exp(-x(5)*temp)
+         tmp2 = exp(-x(6)*(temp-x(9))**2)
+         tmp3 = exp(-x(7)*(temp-x(10))**2)
+         tmp4 = exp(-x(8)*(temp-x(11))**2)
+         fjac(i,1) = -tmp1
+         fjac(i,2) = -tmp2
+         fjac(i,3) = -tmp3
+         fjac(i,4) = -tmp4
+         fjac(i,5) = temp*x(1)*tmp1
+         fjac(i,6) = x(2)*(temp - x(9))**2*tmp2
+         fjac(i,7) = x(3)*(temp - x(10))**2*tmp3
+         fjac(i,8) = x(4)*(temp - x(11))**2*tmp4
+         fjac(i,9) = -two*x(2)*x(6)*(temp - x(9))*tmp2
+         fjac(i,10) = -two*x(3)*x(7)*(temp - x(10))*tmp3
+         fjac(i,11) = -two*x(4)*x(8)*(temp - x(11))*tmp4
+  490    continue
+      return
+c
+c     Last card of subroutine ssqjac.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/testprog.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/testprog.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/testprog.f	(revision 6168)
@@ -0,0 +1,110 @@
+      program mgh_testprobs
+
+      include 'pgapackf.h'
+      include 'mpif.h'
+
+      external evaluate
+
+      double precision evaluate
+      integer ctx
+      integer     len, nprob, maxiter, ierror, myid
+
+      common nprob
+
+      call MPI_INIT(ierror)
+      call MPI_COMM_RANK(MPI_COMM_WORLD, myid, ierror)
+
+      if (myid .EQ. 0) then
+         print *, 'The following is a list of the test functions this pr
+     &ogram supports.'
+         print *, 'The number in parentheses after the name of the funct
+     &ion is the'
+         print *, 'dimension of the problem.  If the dimension is not a 
+     &constant (i.e.,'
+         print *, 'problems # 6-9, 13 - 15, and 18), the limitations on 
+     &the dimension'
+         print *, 'follow in parentheses after the function name.'
+
+         print *
+         print *, '1.  Helical Valley Function (3)'
+         print *, '2.  Biggs EXP6 function (6)'
+         print *, '3.  Gaussian Function (3)'
+         print *, '4.  Powell Badly Scaled Function (2)'
+         print *, '5.  Box Three-Dimensional Function (3)'
+         print *, '6.  Variably-dimentioned Function (variable)'
+         print *, '7.  Watson Function (2 - 31)'
+         print *, '8.  Penalty function I (variable)'
+         print *, '9.  Penalty function II (variable)'
+         print *, '10.  Brown Badly Scaled Function (2)'
+         print *, '11.  Brown and Dennis Function (4)'
+         print *, '12.  Gulf Research And Development Function (3)'
+         print *, '13.  Trigonometric Function (variable)'
+         print *, '14.  Extended Rosenbrock Function (even)'
+         print *, '15.  Extended Powell Singular Function (multiple of 4
+     &)'
+         print *, '16.  Beale Function (2)'
+         print *, '17.  Wood Function (4)'
+         print *, '18.  Chebyquad Function (variable less than 51)'
+         print *
+         print *, 'You will need to enter both the problem number and th
+     &e dimension of the'
+         print *, 'problem.  For problems with a constant dimension, use
+     & the number in'
+         print *, 'parenthesis.  For problems with variable dimension, m
+     &ake sure the'
+         print *, 'dimension that you choose falls within the stated lim
+     &itations AND is'
+         print *, 'less than or equal to 100.  For example, to select th
+     &e Watson function'
+         print *, 'with dimension twelve, enter the following: 7 12'
+         print *
+         print *, 'Please enter the problem number and dimension now.'
+         read *, nprob, len
+         if (nprob .LT. 1 .OR. nprob .GT. 18) then
+            print *, 'Invalid problem number.'
+            stop
+         endif
+         if (len .GT. 100) then
+            print *, 'Dimension exceeds 100'
+            stop
+         endif
+         print *, 'How many iterations? '
+         read *, maxiter
+      endif
+      call MPI_BCAST(nprob,   1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+      call MPI_BCAST(len,     1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+      call MPI_BCAST(maxiter, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror)
+      ctx = PGACreate(PGA_DATATYPE_REAL, len, PGA_MINIMIZE)
+      if (len .eq. 2) then
+         call PGASetCrossoverType(ctx, PGA_CROSSOVER_UNIFORM)
+      endif
+      call PGASetMaxGAIterValue(ctx, maxiter)
+      call PGASetPopSize(ctx, 10000)
+      call PGASetRandomSeed(ctx, 1)
+      call PGASetUp(ctx)
+      call PGARun(ctx, evaluate)
+      call PGADestroy(ctx)
+      call MPI_FINALIZE(ierror)
+
+      stop
+      end
+
+
+      double precision function evaluate(ctx, p, pop)
+      include 'pgapackf.h'
+
+      double precision x(100), f
+      integer ctx
+      integer    pop, p, i, stringlen, nprob
+
+      common nprob
+
+      stringlen = PGAGetStringLength(ctx)
+      do i = 1, stringlen
+         x(i) = PGAGetRealAllele(ctx, p, pop, i)
+      enddo
+      call objfcn(stringlen, x, f, nprob)
+      evaluate = f
+
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/vecfcn77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/vecfcn77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/vecfcn77.f	(revision 6168)
@@ -0,0 +1,265 @@
+      subroutine vecfcn(n,x,fvec,nprob)
+      integer n,nprob
+      double precision x(n),fvec(n)
+c     **********
+c
+c     subroutine vecfcn
+c
+c     This subroutine defines fourteen test functions. The first
+c     five test functions are of dimensions 2,4,2,4,3, respectively,
+c     while the remaining test functions are of variable dimension
+c     n for any n greater than or equal to 1 (problem 6 is an
+c     exception to this, since it does not allow n = 1).
+c
+c     The subroutine statement is
+c
+c       subroutine vecfcn(n,x,fvec,nprob)
+c
+c     where
+c
+c       n is a positive integer input variable.
+c
+c       x is an input array of length n.
+c
+c       fvec is an output array of length n which contains the nprob
+c         function vector evaluated at x.
+c
+c       nprob is a positive integer input variable which defines the
+c         number of the problem. nprob must not exceed 14.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... atan,cos,dble,exp,max,min,sign,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,iev,j,k,ml,mu
+      double precision c1,c2,c3,c4,c5,c6,c7,c8,c9,eight,five,h,one,
+     *                 prod,sum,sum1,sum2,temp,temp1,temp2,ten,three,
+     *                 ti,tj,tk,tpi,two,zero
+      data zero,one,two,three,five,eight,ten
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,5.0d0,8.0d0,1.0d1/
+      data c1,c2,c3,c4,c5,c6,c7,c8,c9
+     *     /1.0d4,1.0001d0,2.0d2,2.02d1,1.98d1,1.8d2,2.5d-1,5.0d-1,
+     *      2.9d1/
+c
+c     Problem selector.
+c
+      go to (10,20,30,40,50,60,120,170,200,220,270,300,330,350), nprob
+c
+c     Rosenbrock function.
+c
+   10 continue
+      fvec(1) = one - x(1)
+      fvec(2) = ten*(x(2) - x(1)**2)
+      return
+c
+c     Powell singular function.
+c
+   20 continue
+      fvec(1) = x(1) + ten*x(2)
+      fvec(2) = sqrt(five)*(x(3) - x(4))
+      fvec(3) = (x(2) - two*x(3))**2
+      fvec(4) = sqrt(ten)*(x(1) - x(4))**2
+      return
+c
+c     Powell badly scaled function.
+c
+   30 continue
+      fvec(1) = c1*x(1)*x(2) - one
+      fvec(2) = exp(-x(1)) + exp(-x(2)) - c2
+      return
+c
+c     Wood function.
+c
+   40 continue
+      temp1 = x(2) - x(1)**2
+      temp2 = x(4) - x(3)**2
+      fvec(1) = -c3*x(1)*temp1 - (one - x(1))
+      fvec(2) = c3*temp1 + c4*(x(2) - one) + c5*(x(4) - one)
+      fvec(3) = -c6*x(3)*temp2 - (one - x(3))
+      fvec(4) = c6*temp2 + c4*(x(4) - one) + c5*(x(2) - one)
+      return
+c
+c     Helical valley function.
+c
+   50 continue
+      tpi = eight*atan(one)
+      temp1 = sign(c7,x(2))
+      if (x(1) .gt. zero) temp1 = atan(x(2)/x(1))/tpi
+      if (x(1) .lt. zero) temp1 = atan(x(2)/x(1))/tpi + c8
+      temp2 = sqrt(x(1)**2+x(2)**2)
+      fvec(1) = ten*(x(3) - ten*temp1)
+      fvec(2) = ten*(temp2 - one)
+      fvec(3) = x(3)
+      return
+c
+c     Watson function.
+c
+   60 continue
+      do 70 k = 1, n
+         fvec(k) = zero
+   70    continue
+      do 110 i = 1, 29
+         ti = dble(i)/c9
+         sum1 = zero
+         temp = one
+         do 80 j = 2, n
+            sum1 = sum1 + dble(j-1)*temp*x(j)
+            temp = ti*temp
+   80       continue
+         sum2 = zero
+         temp = one
+         do 90 j = 1, n
+            sum2 = sum2 + temp*x(j)
+            temp = ti*temp
+   90       continue
+         temp1 = sum1 - sum2**2 - one
+         temp2 = two*ti*sum2
+         temp = one/ti
+         do 100 k = 1, n
+            fvec(k) = fvec(k) + temp*(dble(k-1) - temp2)*temp1
+            temp = ti*temp
+  100       continue
+  110    continue
+      temp = x(2) - x(1)**2 - one
+      fvec(1) = fvec(1) + x(1)*(one - two*temp)
+      fvec(2) = fvec(2) + temp
+      return
+c
+c     Chebyquad function.
+c
+  120 continue
+      do 130 k = 1, n
+         fvec(k) = zero
+  130    continue
+      do 150 j = 1, n
+         temp1 = one
+         temp2 = two*x(j) - one
+         temp = two*temp2
+         do 140 i = 1, n
+            fvec(i) = fvec(i) + temp2
+            ti = temp*temp2 - temp1
+            temp1 = temp2
+            temp2 = ti
+  140       continue
+  150    continue
+      tk = one/dble(n)
+      iev = -1
+      do 160 k = 1, n
+         fvec(k) = tk*fvec(k)
+         if (iev .gt. 0) fvec(k) = fvec(k) + one/(dble(k)**2 - one)
+         iev = -iev
+  160    continue
+      return
+c
+c     Brown almost-linear function.
+c
+  170 continue
+      sum = -dble(n+1)
+      prod = one
+      do 180 j = 1, n
+         sum = sum + x(j)
+         prod = x(j)*prod
+  180    continue
+      do 190 k = 1, n-1
+         fvec(k) = x(k) + sum
+  190    continue
+      fvec(n) = prod - one
+      return
+c
+c     Discrete boundary value function.
+c
+  200 continue
+      h = one/dble(n+1)
+      do 210 k = 1, n
+         temp = (x(k) + dble(k)*h + one)**3
+         temp1 = zero
+         if (k .ne. 1) temp1 = x(k-1)
+         temp2 = zero
+         if (k .ne. n) temp2 = x(k+1)
+         fvec(k) = two*x(k) - temp1 - temp2 + temp*h**2/two
+  210    continue
+      return
+c
+c     Discrete integral equation function.
+c
+  220 continue
+      h = one/dble(n+1)
+      do 260 k = 1, n
+         tk = dble(k)*h
+         sum1 = zero
+         do 230 j = 1, k
+            tj = dble(j)*h
+            temp = (x(j) + tj + one)**3
+            sum1 = sum1 + tj*temp
+  230       continue
+         sum2 = zero
+         do 240 j = k+1, n
+            tj = dble(j)*h
+            temp = (x(j) + tj + one)**3
+            sum2 = sum2 + (one - tj)*temp
+  240       continue
+         fvec(k) = x(k) + h*((one - tk)*sum1 + tk*sum2)/two
+  260    continue
+      return
+c
+c     Trigonometric function.
+c
+  270 continue
+      sum = zero
+      do 280 j = 1, n
+         fvec(j) = cos(x(j))
+         sum = sum + fvec(j)
+  280    continue
+      do 290 k = 1, n
+         fvec(k) = dble(n+k) - sin(x(k)) - sum - dble(k)*fvec(k)
+  290    continue
+      return
+c
+c     Variably dimensioned function.
+c
+  300 continue
+      sum = zero
+      do 310 j = 1, n
+         sum = sum + dble(j)*(x(j) - one)
+  310    continue
+      temp = sum*(one + two*sum**2)
+      do 320 k = 1, n
+         fvec(k) = x(k) - one + dble(k)*temp
+  320    continue
+      return
+c
+c     Broyden tridiagonal function.
+c
+  330 continue
+      do 340 k = 1, n
+         temp = (three - two*x(k))*x(k)
+         temp1 = zero
+         if (k .ne. 1) temp1 = x(k-1)
+         temp2 = zero
+         if (k .ne. n) temp2 = x(k+1)
+         fvec(k) = temp - temp1 - two*temp2 + one
+  340    continue
+      return
+c
+c     Broyden banded function.
+c
+  350 continue
+      ml = 5
+      mu = 1
+      do 370 k = 1, n
+         temp = zero
+         do 360 j = max(1,k-ml),min(k+mu,n)
+            if (j .ne. k) temp = temp + x(j)*(one + x(j))
+  360       continue
+         fvec(k) = x(k)*(two + five*x(k)**2) + one - temp
+  370    continue
+  380 continue
+      return
+c
+c     Last card of subroutine vecfcn.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/vecjac77.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/vecjac77.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/mgh/vecjac77.f	(revision 6168)
@@ -0,0 +1,315 @@
+      subroutine vecjac(n,x,fjac,ldfjac,nprob)
+      integer n,ldfjac,nprob
+      double precision x(n),fjac(ldfjac,n)
+c     **********
+c
+c     subroutine vecjac
+c
+c     This subroutine defines the Jacobian matrices of fourteen
+c     test functions. The problem dimensions are as described
+c     in the prologue comments of vecfcn.
+c
+c     The subroutine statement is
+c
+c       subroutine vecjac(n,x,fjac,ldfjac,nprob)
+c
+c     where
+c
+c       n is a positive integer variable.
+c
+c       x is an array of length n.
+c
+c       fjac is an output n by n array which contains the
+c         Jacobian matrix of the nprob function evaluated at x.
+c
+c       ldfjac is a positive integer variable not less than n
+c         which specifies the leading dimension of the array fjac.
+c
+c       nprob is a positive integer variable which defines the
+c         number of the problem. nprob must not exceed 14.
+c
+c     Subprograms called
+c
+c       FORTRAN-supplied ... atan,cos,dble,exp,max,min,sin,sqrt
+c
+c     Argonne National Laboratory. MINPACK Project. march 1980.
+c     Burton S. Garbow, Kenneth E. Hillstrom, Jorge J. More
+c
+c     **********
+      integer i,j,k,ml,mu
+      double precision c1,c3,c4,c5,c6,c9,eight,fiftn,five,four,h,
+     *                 hundrd,one,prod,six,sum,sum1,sum2,temp,temp1,
+     *                 temp2,temp3,temp4,ten,three,ti,tj,tk,tpi,
+     *                 twenty,two,zero
+      data zero,one,two,three,four,five,six,eight,ten,fiftn,twenty,
+     *     hundrd
+     *     /0.0d0,1.0d0,2.0d0,3.0d0,4.0d0,5.0d0,6.0d0,8.0d0,1.0d1,
+     *      1.5d1,2.0d1,1.0d2/
+      data c1,c3,c4,c5,c6,c9 /1.0d4,2.0d2,2.02d1,1.98d1,1.8d2,2.9d1/
+c
+c     Jacobian routine selector.
+c
+      go to (10,20,50,60,90,100,200,230,290,320,350,380,420,450),
+     *      nprob
+c
+c     Rosenbrock function.
+c
+   10 continue
+      fjac(1,1) = -one
+      fjac(1,2) = zero
+      fjac(2,1) = -twenty*x(1)
+      fjac(2,2) = ten
+      return
+c
+c     Powell singular function.
+c
+   20 continue
+      do 40 k = 1, 4
+         do 30 j = 1, 4
+            fjac(k,j) = zero
+   30       continue
+   40    continue
+      fjac(1,1) = one
+      fjac(1,2) = ten
+      fjac(2,3) = sqrt(five)
+      fjac(2,4) = -fjac(2,3)
+      fjac(3,2) = two*(x(2) - two*x(3))
+      fjac(3,3) = -two*fjac(3,2)
+      fjac(4,1) = two*sqrt(ten)*(x(1) - x(4))
+      fjac(4,4) = -fjac(4,1)
+      return
+c
+c     Powell badly scaled function.
+c
+   50 continue
+      fjac(1,1) = c1*x(2)
+      fjac(1,2) = c1*x(1)
+      fjac(2,1) = -exp(-x(1))
+      fjac(2,2) = -exp(-x(2))
+      return
+c
+c     Wood function.
+c
+   60 continue
+      do 80 k = 1, 4
+         do 70 j = 1, 4
+            fjac(k,j) = zero
+   70       continue
+   80    continue
+      temp1 = x(2) - three*x(1)**2
+      temp2 = x(4) - three*x(3)**2
+      fjac(1,1) = -c3*temp1 + one
+      fjac(1,2) = -c3*x(1)
+      fjac(2,1) = -two*c3*x(1)
+      fjac(2,2) = c3 + c4
+      fjac(2,4) = c5
+      fjac(3,3) = -c6*temp2 + one
+      fjac(3,4) = -c6*x(3)
+      fjac(4,2) = c5
+      fjac(4,3) = -two*c6*x(3)
+      fjac(4,4) = c6 + c4
+      return
+c
+c     Helical valley function.
+c
+   90 continue
+      tpi = eight*atan(one)
+      temp = x(1)**2 + x(2)**2
+      temp1 = tpi*temp
+      temp2 = sqrt(temp)
+      fjac(1,1) = hundrd*x(2)/temp1
+      fjac(1,2) = -hundrd*x(1)/temp1
+      fjac(1,3) = ten
+      fjac(2,1) = ten*x(1)/temp2
+      fjac(2,2) = ten*x(2)/temp2
+      fjac(2,3) = zero
+      fjac(3,1) = zero
+      fjac(3,2) = zero
+      fjac(3,3) = one
+      return
+c
+c     Watson function.
+c
+  100 continue
+      do 120 k = 1, n
+         do 110 j = k, n
+            fjac(k,j) = zero
+  110       continue
+  120    continue
+      do 170 i = 1, 29
+         ti = dble(i)/c9
+         sum1 = zero
+         temp = one
+         do 130 j = 2, n
+            sum1 = sum1 + dble(j-1)*temp*x(j)
+            temp = ti*temp
+  130       continue
+         sum2 = zero
+         temp = one
+         do 140 j = 1, n
+            sum2 = sum2 + temp*x(j)
+            temp = ti*temp
+  140       continue
+         temp1 = two*(sum1 - sum2**2 - one)
+         temp2 = two*sum2
+         temp = ti**2
+         tk = one
+         do 160 k = 1, n
+            tj = tk
+            do 150 j = k, n
+               fjac(k,j) = fjac(k,j)
+     *                     + tj
+     *                       *((dble(k-1)/ti - temp2)
+     *                         *(dble(j-1)/ti - temp2) - temp1)
+               tj = ti*tj
+  150          continue
+            tk = temp*tk
+  160       continue
+  170    continue
+      fjac(1,1) = fjac(1,1) + six*x(1)**2 - two*x(2) + three
+      fjac(1,2) = fjac(1,2) - two*x(1)
+      fjac(2,2) = fjac(2,2) + one
+      do 190 k = 1, n
+         do 180 j = k+1, n
+            fjac(j,k) = fjac(k,j)
+  180       continue
+  190    continue
+      return
+c
+c     Chebyquad function.
+c
+  200 continue
+      tk = one/dble(n)
+      do 220 j = 1, n
+         temp1 = one
+         temp2 = two*x(j) - one
+         temp = two*temp2
+         temp3 = zero
+         temp4 = two
+         do 210 k = 1, n
+            fjac(k,j) = tk*temp4
+            ti = four*temp2 + temp*temp4 - temp3
+            temp3 = temp4
+            temp4 = ti
+            ti = temp*temp2 - temp1
+            temp1 = temp2
+            temp2 = ti
+  210       continue
+  220    continue
+      return
+c
+c     Brown almost-linear function.
+c
+  230 continue
+      prod = one
+      do 250 j = 1, n
+         prod = x(j)*prod
+         do 240 k = 1, n
+            fjac(k,j) = one
+  240       continue
+         fjac(j,j) = two
+  250    continue
+      do 280 j = 1, n
+         temp = x(j)
+         if (temp .eq. zero) then
+            temp = one
+            prod = one
+            do 260 k = 1, n
+               if (k .ne. j) prod = x(k)*prod
+  260          continue
+            end if
+         fjac(n,j) = prod/temp
+  280    continue
+      return
+c
+c     Discrete boundary value function.
+c
+  290 continue
+      h = one/dble(n+1)
+      do 310 k = 1, n
+         temp = three*(x(k) + dble(k)*h + one)**2
+         do 300 j = 1, n
+            fjac(k,j) = zero
+  300       continue
+         fjac(k,k) = two + temp*h**2/two
+         if (k .ne. 1) fjac(k,k-1) = -one
+         if (k .ne. n) fjac(k,k+1) = -one
+  310    continue
+      return
+c
+c     Discrete integral equation function.
+c
+  320 continue
+      h = one/dble(n+1)
+      do 340 k = 1, n
+         tk = dble(k)*h
+         do 330 j = 1, n
+            tj = dble(j)*h
+            temp = three*(x(j) + tj + one)**2
+            fjac(k,j) = h*min(tj*(one-tk),tk*(one-tj))*temp/two
+  330       continue
+         fjac(k,k) = fjac(k,k) + one
+  340    continue
+      return
+c
+c     Trigonometric function.
+c
+  350 continue
+      do 370 j = 1, n
+         temp = sin(x(j))
+         do 360 k = 1, n
+            fjac(k,j) = temp
+  360       continue
+         fjac(j,j) = dble(j+1)*temp - cos(x(j))
+  370    continue
+      return
+c
+c     Variably dimensioned function.
+c
+  380 continue
+      sum = zero
+      do 390 j = 1, n
+         sum = sum + dble(j)*(x(j) - one)
+  390    continue
+      temp = one + six*sum**2
+      do 410 k = 1, n
+         do 400 j = k, n
+            fjac(k,j) = dble(k*j)*temp
+            fjac(j,k) = fjac(k,j)
+  400       continue
+         fjac(k,k) = fjac(k,k) + one
+  410    continue
+      return
+c
+c     Broyden tridiagonal function.
+c
+  420 continue
+      do 440 k = 1, n
+         do 430 j = 1, n
+            fjac(k,j) = zero
+  430       continue
+         fjac(k,k) = three - four*x(k)
+         if (k .ne. 1) fjac(k,k-1) = -one
+         if (k .ne. n) fjac(k,k+1) = -two
+  440    continue
+      return
+c
+c     Broyden banded function.
+c
+  450 continue
+      ml = 5
+      mu = 1
+      do 480 k = 1, n
+         do 460 j = 1, n
+            fjac(k,j) = zero
+  460       continue
+         do 470 j = max(1,k-ml), min(k+mu,n)
+            if (j .ne. k) fjac(k,j) = -(one + two*x(j))
+  470       continue
+         fjac(k,k) = two + fiftn*x(k)**2
+  480    continue
+      return
+c
+c     Last card of subroutine vecjac.
+c
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/README	(revision 6168)
@@ -0,0 +1,5 @@
+This directory contains stubs for all the PGAPack user defined routines.
+Simply cut out the ones you want and paste in the appropriate logic.
+
+uf_native.[cf] -- User functions usable on both native and custom datatypes.
+uf_new.c       -- User functions usable only when creating a custom datatype. 
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/uf_native.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/uf_native.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/uf_native.c	(revision 6168)
@@ -0,0 +1,116 @@
+/*  Stub functions for using PGAPack with a native datatype, but user defined
+ *  operators.
+ *
+ *  Simple example (with no actual code) that shows how one would go about
+ *  setting PGAPack up to evolve "strings" that use a native datatype, but
+ *  need to use custom evolutionary operators.
+ */
+#include <pgapack.h>
+
+void         MyInitString(PGAContext *ctx, int p, int pop);
+void         MyCrossover(PGAContext *ctx, int p1, int p2, int p_pop, int c1,
+	                 int c2, int c_pop);
+int          MyMutation(PGAContext *ctx, int p, int pop, double mr);
+int          MyDuplicateString(PGAContext *ctx, int p1, int pop1, int p2,
+	                       int pop2);
+void         MyPrintString(PGAContext *ctx, FILE *fp, int p, int pop);
+int          MyDone(PGAContext *ctx);
+void         MyEndOfGen(PGAContext *ctx);
+
+double       MyEvaluate(PGAContext *ctx, int p, int pop);
+ 
+
+int main(int argc, char **argv) {
+  PGAContext *ctx;
+
+  ctx = PGACreate(&argc, argv, PGA_DATATYPE, 1, PGA_MAXIMIZE);
+
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,    MyMutation);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER,   MyCrossover);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING, MyPrintString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_DUPLICATE,   MyDuplicateString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,  MyInitString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_DONE,        MyDone);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,    MyEndOfGen);
+  
+  PGASetUp(ctx);
+  PGARun(ctx, MyEvaluate);
+  PGADestroy(ctx);
+  return(0);
+}
+
+
+/*  Perform mutation on a "string".  It is important to keep count of the 
+ *  number of mutations performed and to return that value.
+ */
+int MyMutation(PGAContext *ctx, int p, int pop, double mr) {
+  int         count;
+
+  /*  Insert code to mutate Data here.  Remember to count the number
+   *  of mutations that happen, and return that value!
+   */
+
+  return(count);
+}
+
+
+/*  Perform crossover from two parents to two children.  */
+void MyCrossover(PGAContext *ctx, int p1, int p2, int p_pop, int c1, int c2,
+		 int c_pop) {
+    
+    /*  Perform crossover from p1 and p2 into c1 and c2 here.  */
+}
+
+
+/*  Print a "string" to the file fp.  */
+void MyPrintString(PGAContext *ctx, FILE *fp, int p, int pop) {
+
+    /*  Print the string referenced by p and pop to the file fp.  */
+}
+
+
+/*  Determine if two strings are the same.  If so, return non-zero, otherwise
+ *  return zero.  If contiguous data, usually a call to memcmp.
+ */
+int MyDuplicateString(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+
+    /*  Compare strings p1 and p2 to see if they are different.  If they
+     *  are, return non-zero; else, return 0.
+     */
+}
+
+
+/*  Randomly initialize a string.  */
+void MyInitString(PGAContext *ctx, int p, int pop) {
+
+  /*  Insert code to randomly initialize p in popultion pop here.  */
+}
+
+
+/*  Check if a GA has found an acceptable solution.  */
+int MyDone(PGAContext *ctx) {
+    int done = PGA_FALSE;
+
+    /*  Check for "doneness".  */
+
+    return(done);
+}
+
+
+/*  After each generation, this funciton will get called.  */
+void MyEndOfGen(PGAContext *ctx) {
+
+    /*  Do something useful; display the population on a graphics output,
+     *  let the user adjust the population, etc.
+     */
+}
+
+
+/*  The evaluation function.    */
+double MyEvaluate(PGAContext *ctx, int p, int pop) {
+    
+    /*  Evaluate the string here, and return a double representing
+     *  the quality of the solution.
+     */
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/uf_native.f
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/uf_native.f	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/uf_native.f	(revision 6168)
@@ -0,0 +1,160 @@
+c     Stub functions for using PGAPack with a natve datatype, but user
+c     defined operators.
+c
+c     In Fortran, we cannot allocate memory, nor can we define a C type
+c     structure, thus, userdefined data types are rather silly.  So,
+c     PGA_USERFUNCTION_CREATESTRING, and PGA_USERFUNCTION_BUILDDATATYPE are
+c     not allowed.
+
+      include 'pgapackf.h'
+
+      external MyInitString
+      external MyCrossover
+      external MyMutation
+      external MyDuplicateString
+      external MyPrintString
+      external MyDone
+      external MyEndOfGen
+      external MyEvaluate
+
+      integer          MyMutation
+      integer          MyDuplicateString
+      integer          MyDone
+      double precision MyEvaluate
+
+      integer ctx
+
+
+      ctx = PGACreate(PGA_DATATYPE_INTEGER, 10, PGA_MAXIMIZE)
+
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,    MyMutation)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER,   MyCrossover)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING, MyPrintString)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_DUPLICATE,   MyDuplicateString)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,  MyInitString)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_DONE,        MyDone)
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,    MyEndOfGen)
+  
+      PGASetUp(ctx)
+      PGARun(ctx, MyEvaluate)
+      PGADestroy(ctx)
+
+      stop
+      end
+
+
+
+
+
+c     Perform mutation on a "string".  It is important to keep count of
+c     the number of mutations performed and to return that value.
+c
+      integer function MyMutation(ctx, p, pop, mr)
+      include 'pgapackf.h'
+      integer ctx, p, pop, count, length
+      double precision mr
+
+      length = PGAGetStringLength(ctx)
+
+      do i=1, length
+         if (PGARandomFlip(ctx, mr) .eq. PGA_TRUE) then
+c
+c           Insert code to mutate an allele here.  Remember to count
+c           the number of mutations that happen, and return that value!
+c
+         endif
+      enddo
+
+      MyMutation = count
+      return
+      end
+
+
+c     Perform crossover from two parents to two children.  
+      subroutine MyCrossover(ctx, p1, p2, p_pop, c1, c2, c_pop)
+      include 'pgapackf.h'
+      integer ctx, p1, p2, p_pop, c1, c2, c_pop
+
+c     Perform crossover from P1 and P2 into C1 and C2 here. 
+
+      return
+      end
+      
+
+
+
+c     Print a "string".  The second argument is a C file pointer, 
+c     but we cannot do anything with it,
+      subroutine MyPrintString(ctx, fp, p, pop)
+      include 'pgapackf.h'
+      integer ctx, fp, p, pop
+     
+c     Print the string
+
+      return
+      end
+
+
+
+c     Determine if two strings are the same.  If so, return non-zero,
+c     otherwise return zero.
+      integer function MyDuplicateString(ctx, p1, pop1, p2, pop2)
+      include 'pgapackf.h'
+      integer ctx, p1, pop1, p2, pop2, equal
+
+c     Compare the strings
+
+      MyDuplicateString = equal
+      return
+      end
+
+
+
+c     Randomly initialize a string.
+      subroutine MyInitString(ctx, p, pop)
+      include 'pgapackf.h'
+      integer ctx, p, pop
+
+c     Insert code to randomly initialize Data here. 
+
+      return
+      end
+
+
+c     Check if a GA has found an acceptable solution.
+      integer function MyDone(ctx) 
+      include 'pgapackf.h'
+      integer ctx, done
+
+      done = PGA_FALSE
+
+c     Check for "doneness".
+
+      MyDone = done
+      return
+      end
+
+
+c     After each generation, this funciton will get called.
+      subroutine MyEndOfGen(ctx)
+      include 'pgapackf.h'
+      integer ctx
+
+c     Do something useful; display the population on a graphics output,
+c     let the user adjust the population, etc.
+
+      return
+      end
+
+
+
+c     The evaluation function.
+      double precision function MyEvaluate(ctx, p, pop)
+      include 'pgapackf.h'
+      integer ctx, p, pop
+
+c     Evaluate the string
+
+      MyEvaluate = evaluation
+      return
+      end
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/uf_new.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/uf_new.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/examples/templates/uf_new.c	(revision 6168)
@@ -0,0 +1,172 @@
+/*  Stub functions for using PGAPAck with a user datatype.
+ *
+ *  Simple example (with no actual code) that shows how one would go about
+ *  setting PGAPack up to evolve "strings" that are a single structure,
+ *  using the necessary user defined functions.
+ */
+#include <pgapack.h>
+
+void         MyCreateString(PGAContext *ctx, int p, int pop, int InitFlag);
+MPI_Datatype MyBuildDatatype(PGAContext *ctx, int p, int pop);
+int          MyMutation(PGAContext *ctx, int p, int pop, double mr);
+void         MyCrossover(PGAContext *ctx, int p1, int p2, int p_pop, int c1,
+	                 int c2, int c_pop);
+void         MyPrintString(PGAContext *ctx, FILE *fp, int p, int pop);
+void         MyCopyString(PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int          MyDuplicateString(PGAContext *ctx, int p1, int pop1, int p2,
+	                       int pop2);
+
+
+double       MyEvaluate(PGAContext *ctx, int p, int pop);
+
+
+typedef struct {
+    /*  Put your favorite structure here!  */
+} MyStruct;
+
+
+int main(int argc, char **argv) {
+  PGAContext *ctx;
+
+  ctx = PGACreate(&argc, argv, PGA_DATATYPE_USER, 1, PGA_MAXIMIZE);
+
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_CREATESTRING,    MyCreateString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_BUILDDATATYPE,   MyBuildDatatype);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,        MyMutation);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER,       MyCrossover);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING,     MyPrintString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_COPYSTRING,      MyCopyString);
+  PGASetUserFunction(ctx, PGA_USERFUNCTION_DUPLICATE,       MyDuplicateString);
+
+  PGASetUp(ctx);
+  PGARun(ctx, MyEvaluate);
+  PGADestroy(ctx);
+  return(0);
+}
+
+
+/*  Function must allocate space for the "string", and, if InitFlag it PGA_TRUE,
+ *  randomly initialize the string, otherwise, set it to zero.  Note that we
+ *  do not need to keep track of each member of the population; the pointers
+ *  are stored internally.
+ */
+void MyCreateString(PGAContext *ctx, int p, int pop, int InitFlag) {
+  PGAIndividual  *New;
+  MyStruct       *Data;
+
+  New = PGAGetIndividual(ctx, p, pop);
+
+  /*  Allocate space for the new chromosome.  */
+  if (!(New->chrom = malloc(sizeof(MyStruct)))) {
+    fprintf(stderr, "No more room in memory for the population!/n");
+    exit(10);
+  }
+
+  /*  For convenience.  */
+  Data = (MyStruct *)New->chrom;
+
+  /*  Initialize, if needed.  Otherwise, clear.  */
+}
+
+
+/*  Perform mutation on a "string".  It is important to keep count of the 
+ *  number of mutations performed and to return that value.
+ */
+int MyMutation(PGAContext *ctx, int p, int pop, double mr) {
+  MyStruct   *Data;
+  int         count;
+
+  Data = (MyStruct *)PGAGetIndividual(ctx, p, pop)->chrom;
+
+  /*  Insert code to mutate Data here.  Remember to count the number
+   *  of mutations that happen, and return that value!
+   */
+
+  return(count);
+}
+
+
+/*  Perform crossover from two parents to two children.  */
+void MyCrossover(PGAContext *ctx, int p1, int p2, int p_pop, int c1, int c2,
+		 int c_pop) {
+    MyStruct   *P1, *P2, *C1, *C2;
+
+    P1 = (MyStruct *)PGAGetIndividual(ctx, p1, p_pop)->chrom;
+    P2 = (MyStruct *)PGAGetIndividual(ctx, p2, p_pop)->chrom;
+    C1 = (MyStruct *)PGAGetIndividual(ctx, c1, c_pop)->chrom;
+    C2 = (MyStruct *)PGAGetIndividual(ctx, c1, c_pop)->chrom;
+    
+    /*  Perform crossover from P1 and P2 into C1 and C2 here.  */
+}
+
+
+/*  Print a "string" to the file fp.  */
+void MyPrintString(PGAContext *ctx, FILE *fp, int p, int pop) {
+    MyStruct   *Data;
+
+    Data = (MyStruct *)PGAGetIndividual(ctx, p, pop)->chrom;
+    
+    /*  Print the string Data to the file fp.  */
+}
+
+
+/*  Copy one string to another.  If contiguous data, usually a call to memcpy.  */
+void MyCopyString(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+    MyStruct  *P1, *P2;
+
+    P1 = (MyStruct *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    P2 = (MyStruct *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+
+    /*  Copy string P1 into string P2.  This can be as simple as doing
+     *      memcpy(P2, P1, sizeof(MyStruct_s));
+     */
+}
+
+
+/*  Determine if two strings are the same.  If so, return non-zero, otherwise
+ *  return zero.  If contiguous data, usually a call to memcmp.
+ */
+int MyDuplicateString(PGAContext *ctx, int p1, int pop1, int p2, int pop2) {
+    MyStruct  *P1, *P2;
+
+    P1 = (MyStruct *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    P2 = (MyStruct *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+
+    /*  Compare strings P1 and P2 to see if they are different.  If they
+     *  are, return non-zero; else, return 0.  This can be as simple as
+     *      return(!memcmp(P1, P2, sizeof(MyStruct_s)));
+     */
+}
+
+
+/*  Randomly initialize a string.  */
+void MyInitString(PGAContext *ctx, int p, int pop) {
+  MyStruct   *Data;
+
+  Data = (MyStruct *)PGAGetIndividual(ctx, p, pop)->chrom;
+
+  /*  Insert code to randomly initialize Data here.  */
+}
+
+
+/*  Create an MPI_Datatype for the "string".  */
+MPI_Datatype MyBuildDatatype(PGAContext *ctx, int p, int pop) {
+  MyStruct   *Data;
+
+  Data = (MyStruct *)PGAGetIndividual(ctx, p, pop)->chrom;
+
+  /*  Insert code to build an MPI datatype here.  */
+}
+
+
+/*  The evaluation function.    */
+double MyEvaluate(PGAContext *ctx, int p, int pop) {
+    MyStruct   *Data;
+
+    Data = (MyStruct *)PGAGetIndividual(ctx, p, pop)->chrom;
+    
+    /*  Evaluate the string here, and return a double representing
+     *  the quality of the solution.
+     */
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/fakempi_h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/fakempi_h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/fakempi_h	(revision 6168)
@@ -0,0 +1,59 @@
+/*  These are the definitions to use our fake version of MPI in mpi_stub.c 
+ *  Guaranteed only to make PGAPack compile and link without MPI, but should
+ *  work from user C and fortran programs.
+ *
+ *  Some of these are from mpich's mpi.h, others are custom.
+ *
+ *  Author: Brian P. Walenz
+ */
+typedef void *  MPI_Comm;
+typedef void *  MPI_Datatype;
+typedef long    MPI_Aint;
+
+typedef struct {
+    int     MPI_SOURCE;
+    int     MPI_TAG;
+    int     MPI_ERROR;
+} MPI_Status;
+
+#define MPI_BYTE            (void *)NULL
+#define MPI_CHAR            (void *)NULL
+#define MPI_DOUBLE          (void *)NULL
+#define MPI_FLOAT           (void *)NULL
+#define MPI_INT             (void *)NULL
+#define MPI_LONG            (void *)NULL
+#define MPI_LONG_DOUBLE     (void *)NULL
+#define MPI_PACKED          (void *)NULL
+#define MPI_SHORT           (void *)NULL
+#define MPI_UNSIGNED_CHAR   (void *)NULL
+#define MPI_UNSIGNED        (void *)NULL
+#define MPI_UNSIGNED_LONG   (void *)NULL
+#define MPI_UNSIGNED_SHORT  (void *)NULL
+
+#define MPI_COMM_WORLD      (void *)NULL
+#define MPI_COMM_SELF       (void *)NULL
+
+#define MPI_BOTTOM          (void *)0
+
+#define MPI_PROC_NULL       (-1)
+#define MPI_ANY_SOURCE      (-2)
+#define MPI_ANY_TAG         (-1)
+
+/*  Declare prototypes for the MPI functions.  */
+int MPI_Address(void *, MPI_Aint *);
+int MPI_Bcast(void *, int, MPI_Datatype, int, MPI_Comm);
+int MPI_Comm_dup(MPI_Comm, MPI_Comm *);
+int MPI_Comm_free(MPI_Comm *);
+int MPI_Comm_rank(MPI_Comm, int *);
+int MPI_Comm_size(MPI_Comm, int *);
+int MPI_Finalize(void);
+int MPI_Init(int *, char ***);
+int MPI_Initialized(int *);
+int MPI_Probe(int, int, MPI_Comm, MPI_Status *);
+int MPI_Send(void *, int, MPI_Datatype, int, int, MPI_Comm);
+int MPI_Recv(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *);
+int MPI_Sendrecv(void *, int, MPI_Datatype, int, int, void *, int,
+	         MPI_Datatype, int, int, MPI_Comm, MPI_Status *);
+int MPI_Type_commit(MPI_Datatype *);
+int MPI_Type_free(MPI_Datatype *);
+int MPI_Type_struct(int, int *, MPI_Aint *, MPI_Datatype *, MPI_Datatype *);
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/fakempif_h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/fakempif_h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/fakempif_h	(revision 6168)
@@ -0,0 +1,34 @@
+c     These are the definitions to use our fake version of MPI in mpi_stub.c 
+c     Guaranteed only to make PGAPack compile and link without MPI, but should
+c     work from user fortran program.
+c 
+c     Some are from mpich's mpif.h, others are custom.
+c
+c     Author: Brian P. Walenz
+c 
+      integer MPI_BYTE, MPI_CHARACTER, MPI_COMPLEX
+      integer MPI_DOUBLE_PRECISION, MPI_INTEGER, MPI_REAL
+      integer MPI_LOGICAL, MPI_PACKED
+      parameter(MPI_BYTE=0, MPI_CHARACTER=0, MPI_COMPLEX=0)
+      parameter(MPI_DOUBLE_PRECISION=0, MPI_INTEGER=0, MPI_REAL=0)
+      parameter(MPI_LOGICAL=0, MPI_PACKED=0)
+      
+      integer MPI_COMM_WORLD, MPI_COMM_SELF, MPI_BOTTOM
+      parameter (MPI_COMM_WORLD=0, MPI_COMM_SELF=0, MPI_BOTTOM=0)
+      
+      integer MPI_PROC_NULL, MPI_ANY_SOURCE, MPI_ANY_TAG
+      parameter(MPI_PROC_NULL=0, MPI_ANY_SOURCE=(-2), MPI_ANY_TAG=(-1))
+      
+      integer MPI_SOURCE, MPI_TAG, MPI_ERROR
+      parameter(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4)
+      
+      integer MPI_STATUS_SIZE
+      parameter (MPI_STATUS_SIZE=4)
+
+c     Functions
+      external MPI_Address, MPI_Bcast, MPI_Comm_dup, MPI_Comm_free
+      external MPI_Comm_rank, MPI_Comm_size, MPI_Finalize, MPI_Init
+      external MPI_Initialized, MPI_Probe, MPI_Send, MPI_Recv
+      external MPI_Sendrecv, MPI_Type_commit, MPI_Type_free
+      external MPI_Type_struct
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/pgapack.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/pgapack.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/pgapack.h	(revision 6168)
@@ -0,0 +1,852 @@
+/******************************************************************************
+*     FILE: pgapack.h: This file contains all constant and structure
+*                      definitions definitions for PGAPack as well as all
+*                      function declarations.
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+******************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <time.h>
+#include <limits.h>
+#include <float.h>
+#include <string.h> 
+#include <ctype.h>
+#include <mpi.h>
+
+
+/*  If OPTIMIZED, remove various sanity checks, and debug output.
+ *
+ *  PGADebugEntered(a)      - Print a debug message about entering "a"
+ *  PGADebugExited(a)       - Print a debug message about exiting "a"
+ *  PGAFailIfNotSetup(a)    - Fail fatally if PGASetUp has not been called
+ *  PGAFailIfSetup(a)       - Fail fatally if PGASetUp has been called
+ *  PGACheckDataType(a, D)  - Fail fatally if the datatype is not D
+ */
+#ifndef OPTIMIZE
+#define OPTIMIZE 0
+#define PGADebugEntered(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_ENTERED, a, "Entered", PGA_VOID, NULL)
+#define PGADebugExited(a) \
+  PGADebugPrint(ctx, PGA_DEBUG_EXIT, a, "Exited", PGA_VOID, NULL)
+#define PGAFailIfNotSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_FALSE) \
+     PGAError(ctx, "PGASetUp must be called before " Name, \
+              PGA_FATAL, PGA_VOID, NULL)
+#define PGAFailIfSetUp(Name)  \
+  if (ctx->sys.SetUpCalled == PGA_TRUE) \
+     PGAError(ctx, Name " must be called before PGASetUp", PGA_FATAL, \
+	      PGA_VOID, NULL)
+#define PGACheckDataType(Name, DataType) \
+  if (ctx->ga.datatype != DataType) \
+     PGAError(ctx, "DataType is incorrect for " Name,PGA_FATAL,PGA_VOID,NULL)
+#else
+#undef OPTIMIZE
+#define OPTIMIZE 1
+#define PGADebugPrint(a,b,c,x,y,z) ;
+#define PGADebugEntered(a) ;
+#define PGADebugExited(a) ;
+#define PGAFailIfNotSetUp(Name)  ;
+#define PGAFailIfSetUp(Name)  ;
+#define PGACheckDataType(Name, DataType) ;
+#endif
+
+/*****************************************
+*           BINARY   MACROS              *
+*****************************************/
+#ifndef WL
+#error WL must be defined on the command line!
+#endif
+
+#define ONEL        ((PGABinary)1)
+#define BIT(x,y)    (y&(ONEL<<((WL-1)-(x))))    /* true if bit is 1,         */
+#define SET(x,y)    (y|=(ONEL<<((WL-1)-(x))))   /* set a bit to 1            */
+#define UNSET(x,y)  (y&=(~(ONEL<<((WL-1)-(x)))))/* set a bit to 0, clear     */
+#define TOGGLE(x,y) (y^=(ONEL<<((WL-1)-(x))))   /* complement a bits value   */
+#define INDEX(ix,bx,bit,WL) ix=bit/WL;bx=bit%WL /* map global column (bit)   */
+                                                /* to word (ix) and bit (bx) */
+
+/*****************************************
+*       ABSTRACT DATA TYPES              *
+*****************************************/
+#define PGA_DATATYPE_BINARY      1    /* Array of unsigned ints            */
+                                      /* parsed into bits    : binary.c    */
+#define PGA_DATATYPE_INTEGER     2    /* Array of ints       : integer.c   */
+#define PGA_DATATYPE_REAL        3    /* Array of doubles    : real.c      */
+#define PGA_DATATYPE_CHARACTER   4    /* Array of characters : character.c */
+#define PGA_DATATYPE_USER        5    /*  --user defined--                 */
+    
+#define PGABinary                unsigned long
+#define PGAInteger               signed long int
+#define PGAReal                  double
+#define PGACharacter             signed char
+
+#define PGA_INT                   1
+#define PGA_DOUBLE                2
+#define PGA_CHAR                  3
+#define PGA_VOID                  4
+
+    
+/*****************************************
+*              BOOLEANS                  *
+*****************************************/
+#define PGA_TRUE                   1
+#define PGA_FALSE                  0
+
+/*****************************************
+*                FLAGS                   *
+*****************************************/
+#define PGA_FATAL                 1
+#define PGA_WARNING               2
+
+/*****************************************
+*             MISC CONSTANT              *
+*****************************************/
+#define PGA_TEMP1                -1138
+#define PGA_TEMP2                -4239
+
+#define PGA_OLDPOP               -6728
+#define PGA_NEWPOP               -8376
+
+#define PGA_UNINITIALIZED_INT    -3827
+#define PGA_UNINITIALIZED_DOUBLE -968.3827
+
+/*****************************************
+*        DEBUG LEVELS                    *
+*****************************************/
+#define PGA_DEBUG_ENTERED        12
+#define PGA_DEBUG_EXIT           13
+#define PGA_DEBUG_MALLOC         80
+#define PGA_DEBUG_PRINTVAR       82
+#define PGA_DEBUG_SEND           22
+#define PGA_DEBUG_RECV           23
+#define PGA_DEBUG_MAXPGAPACKFUNCTIONS	300
+#define PGA_DEBUG_MAXFLAGS       1000
+
+/*****************************************
+*           DIRECTION                    *
+*****************************************/
+#define PGA_MAXIMIZE            1    /* specify direction for fitness calc  */
+#define PGA_MINIMIZE            2    /* specify direction for fitness calc  */
+    
+/*****************************************
+*         STOPPING CRITERIA              *
+*****************************************/
+#define PGA_STOP_MAXITER        1    /* Stop: for maximum iterations      */
+#define PGA_STOP_NOCHANGE       2    /* Stop: no change in best string    */
+#define PGA_STOP_TOOSIMILAR     4    /* Stop: homogeneous population      */
+#define PGA_STOP_AV_FITNESS     5    /* Stop: if within a certain % of target av.fitness per pop.*/
+#define PGA_STOP_BEST_FITNESS   6    /* Stop: if best fitness in a pop is within % of target best fitness*/
+#define PGA_STOP_VARIANCE       7	 /* Stop: if variance of fitness in pop is within % of target variance */
+#define PGA_STOP_TIMEELAPSED	8	 /* Stop: if elapsed time >= target*/
+
+/*****************************************
+*            CROSSOVER                   *
+*****************************************/
+#define PGA_CROSSOVER_ONEPT     1    /* One point crossover                */
+#define PGA_CROSSOVER_TWOPT     2    /* Two point crossover                */
+#define PGA_CROSSOVER_UNIFORM   3    /* Uniform   crossover                */
+#define PGA_CROSSOVER_SBX		4    /* Simulated Binary crossover		   */
+#define PGA_CROSSOVER_TRIANGULAR 5   /* Triangular Crossover*/
+/*****************************************
+*            SELECTION                   *
+*****************************************/
+#define PGA_SELECT_PROPORTIONAL 1    /* proportional selection              */
+#define PGA_SELECT_SUS          2    /* stochastic universal selection      */
+#define PGA_SELECT_TOURNAMENT   3    /* tournament selection                */
+#define PGA_SELECT_PTOURNAMENT  4    /* probabilistic tournament selection  */
+
+/*****************************************
+*            FITNESS                     *
+*****************************************/
+#define PGA_FITNESS_RAW         1    /* use raw fitness (evaluation)        */
+#define PGA_FITNESS_NORMAL      2    /* linear normalization fitness        */
+#define PGA_FITNESS_RANKING     3    /* linear ranking fitness              */
+
+/*****************************************
+*            FITNESS (MINIMIZATION)      *
+*****************************************/
+#define PGA_FITNESSMIN_RECIPROCAL  1 /* reciprocal fitness                  */
+#define PGA_FITNESSMIN_CMAX        2 /* cmax fitness                        */
+
+/*****************************************
+*               MUTATION                 *
+*****************************************/
+#define PGA_MUTATION_CONSTANT   1    /* Real/Integer: Fixed value           */
+#define PGA_MUTATION_RANGE      2    /* Real/Integer: Uniform range         */
+#define PGA_MUTATION_UNIFORM    3    /* Real: +- Uniform random no.         */
+#define PGA_MUTATION_GAUSSIAN   4    /* Real: +- Gaussian random no.        */
+#define PGA_MUTATION_PERMUTE    5    /* Integer: Permutation (swap)         */
+    
+/*****************************************
+*        POPULATION REPLACEMENT          *
+*****************************************/
+#define PGA_POPREPL_BEST         1   /* Select best   string                */
+#define PGA_POPREPL_RANDOM_NOREP 2   /* Select random string w/o replacement*/
+#define PGA_POPREPL_RANDOM_REP   3   /* Select random string w/  replacement*/
+
+/****************************************
+ *       REPORT OPTIONS                 *
+ ****************************************/
+#define PGA_REPORT_ONLINE        1    /* Print the online analysis           */
+#define PGA_REPORT_OFFLINE       2    /* Print the offline analysis          */
+#define PGA_REPORT_HAMMING       4    /* Print the Hamming distance          */
+#define PGA_REPORT_STRING        8    /* Print the string                    */
+#define PGA_REPORT_WORST         16   /* Print the worst individual          */
+#define PGA_REPORT_AVERAGE       32   /* Print the average of the population */
+
+/*****************************************
+*            RANDOMIZER                  *
+*****************************************/
+#define PGA_RINIT_PERCENT        1  /* real percent offset                   */
+#define PGA_RINIT_RANGE          2  /* real range                            */
+#define PGA_IINIT_PERMUTE        1  /* integer permutation                   */
+#define PGA_IINIT_RANGE          2  /* integer range (nonunique)             */
+#define PGA_CINIT_LOWER          1  /* all lowercase letters                 */
+#define PGA_CINIT_UPPER          2  /* all uppercase letters                 */
+#define PGA_CINIT_MIXED          3  /* both upper and lower case letters     */
+
+/*****************************************
+*         SET USER FUNCTION              *
+*****************************************/
+#define PGA_USERFUNCTION_CREATESTRING            1
+#define PGA_USERFUNCTION_MUTATION                2
+#define PGA_USERFUNCTION_CROSSOVER               3
+#define PGA_USERFUNCTION_PRINTSTRING             4
+#define PGA_USERFUNCTION_COPYSTRING              5
+#define PGA_USERFUNCTION_DUPLICATE               6
+#define PGA_USERFUNCTION_INITSTRING              7
+#define PGA_USERFUNCTION_BUILDDATATYPE           8
+#define PGA_USERFUNCTION_STOPCOND                9
+#define PGA_USERFUNCTION_ENDOFGEN                10
+#define PGA_NUM_USERFUNCTIONS                    10
+
+/*****************************************
+*           MPI SEND/RECV TAGS           *
+*****************************************/
+#define PGA_COMM_STRINGTOEVAL        1  /* MPI tag for sending string       */
+#define PGA_COMM_EVALOFSTRING        2  /* MPI tag for returning evaluation */
+#define PGA_COMM_DONEWITHEVALS       3  /* MPI tag for ending parallel eval */
+
+
+
+
+/*****************************************
+*       INDIVIDUAL STRUTURE              *
+*****************************************/
+
+typedef struct {                    /* primary population data structure   */
+  double evalfunc;                  /* evaluation function value           */
+  double fitness;                   /* fitness    function value           */
+  int    evaluptodate;              /* flag whether evalfunc is current    */
+  void   *chrom;                    /* pointer to the GA string            */
+} PGAIndividual;
+
+
+/*****************************************
+*          GA ALGORITHM STRUCTURE        *
+*****************************************/
+typedef struct {
+    int datatype;            /* data type: binary, integer, or real       */
+    int optdir;              /* direction of optimization                 */
+    int tw;                  /* total number of words, full + partial     */
+    int fw;                  /* number of full (WL length) words          */
+    int eb;                  /* number of extra bits in last NOT full word*/
+    int PopSize;             /* Number of strings to use                  */
+    int StringLen;           /* string lengths                            */
+    double TgtFitnessVal;		 /* Target Fitness, best or average depending on stpg criteria*/
+    double FitnessTol;		 /* Min Fitness Tolerance to be achieved for stoppage*/ 
+    double TgtFitnessVar;       /* Target Fitness Variance for stoppage */
+    double VarTol; 			 /* Tolerance for variance to be achieved for stoppage*/ 	
+    double TgtElapsedTime;   /* Max Execution time of GA before stoppage */
+    int StoppingRule;        /* Termination Criteria                      */
+    int MaxIter;             /* Maximum number of iterations to run       */
+    int MaxNoChange;         /* # of iters with no change before stopping */
+    int MaxSimilarity;       /* % of pop the same before stopping         */
+    int NumReplace;          /* Number of string to replace each gen      */
+    int PopReplace;          /* Method of choosing ind.s to copy to newpop*/
+    int iter;                /* iteration (generation) counter            */
+    int ItersOfSame;         /* # iters with no change in best            */
+    int PercentSame;         /* % of pop that is homogeneous              */
+    int NoDuplicates;        /* Don't allow duplicate strings             */
+    int CrossoverType;       /* Type of crossover for genetic algorithm   */
+    int SelectType;          /* Type of selection for genetic algorithm   */
+    int SelectIndex;         /* index of Select for next two individuals  */
+    int FitnessType;         /* Type of fitness transformation used       */
+    int FitnessMinType;      /* Transformation for minimization problems  */
+    int MutateOnlyNoCross;   /* Mutate only strings not from crossover    */
+    int MutationType;        /* Type of mutation used                     */
+    int MutateIntegerValue;  /* Multiplier to mutate Integer strings with */
+    int MutateBoundedFlag;   /* Confine integer alleles to given range    */
+    double MutateRealValue;  /* Multiplier to mutate Real strings with    */
+    double MutationProb;     /* Starting mutation probability             */
+    double CrossoverProb;    /* Crossover probability                     */
+    double UniformCrossProb; /* Prob of bit select in uniform crossover   */
+    double PTournamentProb;  /* Prob of selection in Prob. Tournament     */
+    double FitnessRankMax;   /* MAX value for use in ranking              */
+    double FitnessCmaxValue; /* Cmax value used to convert minimizations  */
+    double restartAlleleProb;/* prob of changing an allele in a restart   */
+    double randreplprop;     /* proportion of randomly generated individuals per generation post initialization*/
+    int restart;             /* whether to use the restart operator       */
+    int restartFreq;         /* frequency with which to restart           */
+    int *selected;           /* array of indices for selection            */
+    int *sorted;             /* array of sorted individual indices        */
+    PGAIndividual *oldpop;   /* pointer to population (old)               */
+    PGAIndividual *newpop;   /* pointer to population (new)               */
+} PGAAlgorithm;
+
+
+
+/*****************************************
+*        OPERATIONS STRUCTURES           *
+*****************************************/
+typedef struct PGAContext PGAContext;
+typedef struct {
+    void         (*CreateString)(PGAContext *, int, int, int);
+    int          (*Mutation)(PGAContext *, int, int, double);
+    void         (*Crossover)(PGAContext *, int, int, int, int, int, int);
+    void         (*PrintString)(PGAContext *, FILE *, int, int);
+    void         (*CopyString)(PGAContext *, int, int, int, int);
+    int          (*Duplicate)(PGAContext *, int, int, int, int);
+    void         (*InitString)(PGAContext *, int, int);
+    MPI_Datatype (*BuildDatatype)(PGAContext *, int, int);
+    int          (*StopCond)(PGAContext *);
+    void         (*EndOfGen)(PGAContext *);
+} PGACOperations;
+
+typedef struct {
+    int          (*Mutation)(void *, void *, void *, void *);
+    void         (*Crossover)(void *, void *, void *, void *, void *, void *, void *);
+    void         (*PrintString)(void *, void *, void *, void *);
+    void         (*CopyString)(void *, void *, void *, void *, void *);
+    int          (*Duplicate)(void *, void *, void *, void *, void *);
+    void         (*InitString)(void *, void *, void *);
+    int          (*StopCond)(void *);
+    void         (*EndOfGen)(void *);
+} PGAFortranOperations;
+
+/*****************************************
+*          PARALLEL STRUCTURE            *
+*****************************************/
+typedef struct {
+    int      MPIAlreadyInit;   /* Flag whether MPI was previously initialized*/
+    int      NumIslands;       /* Number of islands in island model          */
+    int      NumDemes;         /* Number of demes in neighborhood model      */
+    MPI_Comm DefaultComm;      /* Default communicator for PGARun            */
+    int      MPIStubLibrary;   /* Boolean: real or stub version of MPI       */
+} PGAParallel;
+
+/*****************************************
+*          REPORT STRUCTURE              *
+*****************************************/
+typedef struct {
+     int    PrintFreq;               /* How often to print statistics reports*/
+     int    PrintOptions;
+     double Offline;
+     double Online;
+     double Average;
+     double Variance;
+     double Best;
+     time_t starttime;
+} PGAReport;
+
+
+/*****************************************
+*          SYSTEM STRUCTURE              *
+*****************************************/
+typedef struct {
+    int    UserFortran;             /* user routines in Fortran or C?        */
+    int    SetUpCalled;             /* has PGASetUp been called?             */
+    int    PGAMaxInt;               /* largest  int     of machine           */
+    int    PGAMinInt;               /* smallest int     of machine           */
+    double PGAMaxDouble;            /* largest  double  of machine           */
+    double PGAMinDouble;            /* smallest double  of machine           */
+} PGASystem;
+
+
+/*****************************************
+*          DEBUG STRUCTURE               *
+*****************************************/
+typedef struct {
+    int PGADebugFlags[PGA_DEBUG_MAXFLAGS];
+} PGADebug;
+
+/*****************************************
+*      INITIALIZATION STRUCTURE          *
+*****************************************/
+typedef struct {
+    int    RandomInit;             /* flag whether to randomize strings    */
+    double BinaryProbability;      /* probability that a Bit will be 1     */
+    int    RealType;               /* type of real      initialization     */
+    int    IntegerType;            /* type of integer   initialization     */
+    int    CharacterType;          /* type of character initialization     */
+    int    *IntegerMin;            /* minimum of range of integers         */
+    int    *IntegerMax;            /* maximum of range of integers         */
+    double *RealMin;               /* minimum of range of reals            */
+    double *RealMax;               /* maximum of range of reals            */
+    int    RandomSeed;             /* integer to seed random numbers with  */
+} PGAInitialize;
+
+/*****************************************
+*      SCRATCH DATA STRUCTURES           *
+*****************************************/
+typedef struct {
+    int    *intscratch;            /* integer-scratch space                 */
+    double *dblscratch;            /* double- scratch space                 */
+} PGAScratch;
+
+/*****************************************
+*          CONTEXT STRUCTURE             *
+*****************************************/
+struct PGAContext {
+    PGAAlgorithm           ga;
+    PGACOperations         cops;
+    PGAFortranOperations   fops;
+    PGAParallel            par;
+    PGAReport              rep;
+    PGASystem              sys;
+    PGADebug               debug;
+    PGAInitialize          init;
+    PGAScratch             scratch;
+};
+
+/*****************************************
+*          binary.c
+*****************************************/
+
+void PGASetBinaryAllele ( PGAContext *ctx, int p, int pop, int i, int val );
+int PGAGetBinaryAllele ( PGAContext *ctx, int p, int pop, int i );
+void PGASetBinaryInitProb ( PGAContext *ctx, double probability );
+double PGAGetBinaryInitProb (PGAContext *ctx);
+void PGABinaryCreateString(PGAContext *ctx, int p, int pop, int initflag);
+int PGABinaryMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGABinaryOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryTwoptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2);
+void PGABinaryUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                               int c1, int c2, int pop2);
+void PGABinaryPrintString( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGABinaryCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGABinaryDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGABinaryInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGABinaryBuildDatatype(PGAContext *ctx, int p, int pop);
+int PGABinaryHammingDistance ( PGAContext *ctx, PGABinary *s1, PGABinary *s2 );
+void PGABinaryPrint( PGAContext *ctx, FILE *fp, PGABinary *chrom, int nb );
+
+/*****************************************
+*          char.c
+*****************************************/
+
+void PGASetCharacterAllele (PGAContext *ctx, int p, int pop, int i, char value);
+char PGAGetCharacterAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetCharacterInitType(PGAContext *ctx, int value);
+void PGACharacterCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGACharacterMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGACharacterOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGACharacterUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGACharacterPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGACharacterCopyString (PGAContext *ctx, int p1, int pop1, int p2,
+                             int pop2);
+int PGACharacterDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGACharacterInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGACharacterBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          cmdline.c
+*****************************************/
+
+void PGAReadCmdLine( PGAContext *ctx, int *argc, char **argv );
+void PGAParseDebugArg(PGAContext *ctx, char *st);
+void PGAStripArgs(char **argv, int *argc, int *c, int num);
+
+/*****************************************
+*          create.c
+*****************************************/
+
+PGAContext *PGACreate ( int *argc, char **argv,
+                        int datatype, int len, int maxormin );
+void PGASetUp ( PGAContext *ctx );
+void PGASetRandomInitFlag(PGAContext *ctx, int RandomBoolean);
+int PGAGetRandomInitFlag (PGAContext *ctx);
+void PGACreatePop (PGAContext *ctx, int pop);
+void PGACreateIndividual (PGAContext *ctx, int p, int pop, int initflag);
+
+/*****************************************
+*          cross.c
+*****************************************/
+
+void PGACrossover ( PGAContext *ctx, int p1, int p2, int pop1,
+                    int c1, int c2, int pop2 );
+int PGAGetCrossoverType (PGAContext *ctx);
+double PGAGetCrossoverProb (PGAContext *ctx);
+double PGAGetUniformCrossoverProb (PGAContext *ctx);
+void PGASetCrossoverType (PGAContext *ctx, int crossover_type);
+void PGASetCrossoverProb( PGAContext *ctx, double crossover_prob);
+void PGASetUniformCrossoverProb( PGAContext *ctx, double uniform_cross_prob);
+
+/*****************************************
+*          debug.c
+*****************************************/
+
+void PGASortFuncNameIndex(PGAContext *ctx);
+#if OPTIMIZE==0
+void PGADebugPrint( PGAContext *ctx, int level, char *funcname,
+                   char *msg, int datatype, void *data );
+#endif
+void PGASetDebugLevel(PGAContext *ctx, int level);
+void PGAClearDebugLevel(PGAContext *ctx, int level);
+void PGASetDebugLevelByName(PGAContext *ctx, char *funcname);
+void PGAClearDebugLevelByName(PGAContext *ctx, char *funcname);
+int PGAGetDebugLevelOfName(PGAContext *ctx, char *funcname);
+int PGAGetDebugFlag(PGAContext *ctx, char *funcname);
+void PGASetDebugFlag11(PGAContext *ctx, int Flag);
+void PGASetDebugFlag20(PGAContext *ctx, int Flag);
+void PGASetDebugFlag21(PGAContext *ctx, int Flag);
+void PGASetDebugFlag30(PGAContext *ctx, int Flag);
+void PGASetDebugFlag32(PGAContext *ctx, int Flag);
+void PGASetDebugFlag34(PGAContext *ctx, int Flag);
+void PGASetDebugFlag36(PGAContext *ctx, int Flag);
+void PGASetDebugFlag40(PGAContext *ctx, int Flag);
+void PGASetDebugFlag42(PGAContext *ctx, int Flag);
+void PGASetDebugFlag44(PGAContext *ctx, int Flag);
+void PGASetDebugFlag46(PGAContext *ctx, int Flag);
+void PGASetDebugFlag48(PGAContext *ctx, int Flag);
+void PGASetDebugFlag50(PGAContext *ctx, int Flag);
+void PGASetDebugFlag52(PGAContext *ctx, int Flag);
+void PGASetDebugFlag54(PGAContext *ctx, int Flag);
+void PGASetDebugFlag56(PGAContext *ctx, int Flag);
+void PGASetDebugFlag58(PGAContext *ctx, int Flag);
+void PGASetDebugFlag60(PGAContext *ctx, int Flag);
+void PGASetDebugFlag62(PGAContext *ctx, int Flag);
+void PGASetDebugFlag64(PGAContext *ctx, int Flag);
+void PGASetDebugFlag66(PGAContext *ctx, int Flag);
+void PGAPrintDebugOptions(PGAContext *ctx);
+
+/*****************************************
+*          duplcate.c
+*****************************************/
+
+int PGADuplicate(PGAContext *ctx, int p, int pop1, int pop2, int n);
+void PGAChange( PGAContext *ctx, int p, int pop );
+void PGASetNoDuplicatesFlag( PGAContext *ctx, int no_dup);
+int PGAGetNoDuplicatesFlag (PGAContext *ctx);
+
+/*****************************************
+*          evaluate.c
+*****************************************/
+
+void PGASetEvaluation ( PGAContext *ctx, int p, int pop, double val );
+double PGAGetEvaluation ( PGAContext *ctx, int p, int pop );
+void PGASetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop,
+                                   int status );
+int PGAGetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop );
+double PGAGetRealFromBinary(PGAContext *ctx, int p, int pop, int start,
+                            int end, double lower, double upper);
+double PGAGetRealFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                  int end, double lower, double upper);
+void PGAEncodeRealAsBinary(PGAContext *ctx, int p, int pop, int start,
+                               int end, double low, double high, double val);
+void PGAEncodeRealAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                              int end, double low, double high, double val);
+int PGAGetIntegerFromBinary(PGAContext *ctx, int p, int pop, int start,
+                                 int end);
+int PGAGetIntegerFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                   int end);
+void PGAEncodeIntegerAsBinary(PGAContext *ctx, int p, int pop, int start,
+                              int end, int val);
+void PGAEncodeIntegerAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                int end, int val);
+double PGAMapIntegerToReal (PGAContext *ctx, int v, int a, int b, double l,
+                            double u);
+int PGAMapRealToInteger(PGAContext *ctx, double r, double l, double u, int a,
+                        int b);
+
+/*****************************************
+*          fitness.c
+*****************************************/
+
+void PGAFitness ( PGAContext *ctx, int popindex );
+int PGARank( PGAContext *ctx, int p, int *order, int n );
+double PGAGetFitness ( PGAContext *ctx, int p, int pop );
+int PGAGetFitnessType (PGAContext *ctx);
+int PGAGetFitnessMinType (PGAContext *ctx);
+double PGAGetMaxFitnessRank (PGAContext *ctx);
+void PGASetFitnessType( PGAContext *ctx, int fitness_type);
+void PGASetFitnessMinType( PGAContext *ctx, int fitness_type);
+void PGASetMaxFitnessRank( PGAContext *ctx, double fitness_rank_max);
+void PGAFitnessLinearNormal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessLinearRank ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinReciprocal ( PGAContext *ctx, PGAIndividual *pop );
+void PGAFitnessMinCmax ( PGAContext *ctx, PGAIndividual *pop );
+void PGASetFitnessCmaxValue( PGAContext *ctx, double val);
+double PGAGetFitnessCmaxValue (PGAContext *ctx);
+
+/*****************************************
+*          hamming.c
+*****************************************/
+
+double PGAHammingDistance( PGAContext *ctx, int popindex);
+
+/*****************************************
+*          heap.c
+*****************************************/
+
+void PGADblHeapSort ( PGAContext *ctx, double *a, int *idx, int n );
+void PGAIntHeapSort ( PGAContext *ctx, int *a, int *idx, int n );
+
+/*****************************************
+*          integer.c
+*****************************************/
+
+void PGASetIntegerAllele (PGAContext *ctx, int p, int pop, int i, int value);
+int PGAGetIntegerAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetIntegerInitPermute ( PGAContext *ctx, int min, int max);
+void PGASetIntegerInitRange (PGAContext *ctx, int *min, int *max);
+int PGAGetIntegerInitType (PGAContext *ctx);
+int PGAGetMinIntegerInitValue (PGAContext *ctx, int i);
+int PGAGetMaxIntegerInitValue (PGAContext *ctx, int i);
+void PGAIntegerCreateString (PGAContext *ctx, int p, int pop, int InitFlag);
+int PGAIntegerMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGAIntegerOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2);
+void PGAIntegerUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2);
+void PGAIntegerPrintString ( PGAContext *ctx, FILE *fp, int p, int pop);
+void PGAIntegerCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGAIntegerDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGAIntegerInitString(PGAContext *ctx, int p, int pop);
+MPI_Datatype PGAIntegerBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          mpi_stub.c
+*****************************************/
+
+
+/*****************************************
+*          mutation.c
+*****************************************/
+
+int PGAMutate(PGAContext *ctx, int p, int pop);
+void PGASetMutationType( PGAContext *ctx, int mutation_type);
+int PGAGetMutationType (PGAContext *ctx);
+void PGASetMutationRealValue( PGAContext *ctx, double val);
+double PGAGetMutationRealValue (PGAContext *ctx);
+void PGASetMutationIntegerValue( PGAContext *ctx, int val);
+int PGAGetMutationIntegerValue (PGAContext *ctx);
+void PGASetMutationBoundedFlag(PGAContext *ctx, int val);
+int PGAGetMutationBoundedFlag(PGAContext *ctx);
+void PGASetMutationProb(PGAContext *ctx, double mutation_prob);
+double PGAGetMutationProb (PGAContext *ctx);
+
+/*****************************************
+*          parallel.c
+*****************************************/
+
+void PGARunGM(PGAContext *ctx, double (*f)(PGAContext *, int, int),
+	      MPI_Comm comm);
+void PGAEvaluateSeq(PGAContext *ctx, int pop,
+		    double (*f)(PGAContext *, int, int));
+void PGAEvaluateCoop(PGAContext *ctx, int pop,
+		     double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluateMS(PGAContext *ctx, int pop,
+		   double (*f)(PGAContext *c, int p, int pop), MPI_Comm comm);
+void PGAEvaluateSlave(PGAContext *ctx, int pop,
+		      double (*f)(PGAContext *, int, int), MPI_Comm comm);
+void PGAEvaluate(PGAContext *ctx, int pop,
+		 double (*f)(PGAContext *, int, int), MPI_Comm comm);
+MPI_Datatype PGABuildDatatype(PGAContext *ctx, int p, int pop);
+void PGASendIndividual(PGAContext *ctx, int p, int pop, int dest, int tag,
+                       MPI_Comm comm);
+void PGAReceiveIndividual(PGAContext *ctx, int p, int pop, int source, int tag,
+                          MPI_Comm comm, MPI_Status *status);
+void PGASendReceiveIndividual(PGAContext *ctx, int send_p, int send_pop,
+                              int dest, int send_tag, int recv_p, int recv_pop,
+                              int source, int recv_tag, MPI_Comm comm,
+                              MPI_Status *status);
+void PGARunIM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+void PGARunNM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm);
+int PGAGetRank (PGAContext *ctx, MPI_Comm comm);
+int PGAGetNumProcs (PGAContext *ctx, MPI_Comm comm);
+void PGASetNumIslands( PGAContext *ctx, int n);
+int PGAGetNumIslands (PGAContext *ctx);
+void PGASetNumDemes( PGAContext *ctx, int numdemes);
+int PGAGetNumDemes (PGAContext *ctx);
+void PGASetCommunicator( PGAContext *ctx, MPI_Comm comm);
+MPI_Comm PGAGetCommunicator( PGAContext *ctx);
+
+/*****************************************
+*          pga.c
+*****************************************/
+
+void PGARun(PGAContext *ctx, double (*evaluate)(PGAContext *c, int p, int pop));
+void PGARunMutationAndCrossover (PGAContext *ctx, int oldpop, int newpop);
+void PGARunMutationOrCrossover ( PGAContext *ctx, int oldpop, int newpop );
+void PGAUpdateGeneration(PGAContext *ctx, MPI_Comm comm);
+int PGAGetDataType (PGAContext *ctx);
+int PGAGetOptDirFlag (PGAContext *ctx);
+int PGAGetStringLength (PGAContext *ctx);
+int PGAGetVariableStringLength (PGAContext *ctx, int p, int pop);
+int PGAGetGAIterValue (PGAContext *ctx);
+void PGASetMutationOrCrossoverFlag( PGAContext *ctx, int flag);
+void PGASetMutationAndCrossoverFlag( PGAContext *ctx, int flag);
+int PGAGetMutationOrCrossoverFlag (PGAContext *ctx);
+int PGAGetMutationAndCrossoverFlag (PGAContext *ctx);
+
+/*****************************************
+*          pop.c
+*****************************************/
+
+void PGASortPop ( PGAContext *ctx, int pop );
+int PGAGetPopSize (PGAContext *ctx);
+int PGAGetNumReplaceValue (PGAContext *ctx);
+int PGAGetPopReplaceType (PGAContext *ctx);
+int PGAGetSortedPopIndex ( PGAContext *ctx, int n );
+void PGASetPopSize (PGAContext *ctx, int popsize);
+void PGASetNumReplaceValue( PGAContext *ctx, int pop_replace);
+void PGASetPopReplaceType( PGAContext *ctx, int pop_replace);
+
+/*****************************************
+*          random.c
+*****************************************/
+
+int PGARandomFlip ( PGAContext *ctx, double p );
+int PGARandomInterval( PGAContext *ctx, int start, int end);
+double PGARandom01( PGAContext *ctx, int newseed );
+double PGARandomUniform( PGAContext *ctx, double start, double end);
+double PGARandomGaussian( PGAContext *ctx, double mean, double sigma);
+int PGAGetRandomSeed(PGAContext *ctx);
+void PGASetRandomSeed(PGAContext *ctx, int seed);
+double PGAGetRandReplProp(PGAContext *ctx);
+void PGASetRandReplProp(PGAContext *ctx, double randreplprop);
+
+/*****************************************
+*          real.c
+*****************************************/
+
+void PGASetRealAllele (PGAContext *ctx, int p, int pop, int i, double value);
+double PGAGetRealAllele (PGAContext *ctx, int p, int pop, int i);
+void PGASetRealInitPercent ( PGAContext *ctx, double *median, double *percent);
+void PGASetRealInitRange (PGAContext *ctx, double *min, double *max);
+double PGAGetMinRealInitValue (PGAContext *ctx, int i);
+double PGAGetMaxRealInitValue (PGAContext *ctx, int i);
+int PGAGetRealInitType (PGAContext *ctx);
+void PGARealCreateString (PGAContext *ctx, int p, int pop, int initflag);
+int PGARealMutation( PGAContext *ctx, int p, int pop, double mr );
+void PGARealOneptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2);
+void PGARealUniformCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                             int c1, int c2, int pop2);
+void PGARealPrintString (PGAContext *ctx, FILE *fp, int p, int pop);
+void PGARealCopyString ( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGARealDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+void PGARealInitString ( PGAContext *ctx, int p, int pop);
+MPI_Datatype PGARealBuildDatatype(PGAContext *ctx, int p, int pop);
+
+/*****************************************
+*          report.c
+*****************************************/
+
+void PGAPrintReport(PGAContext *ctx, FILE *fp, int pop);
+void PGASetPrintOptions (PGAContext *ctx, int option);
+void PGASetPrintFrequencyValue( PGAContext *ctx, int print_freq);
+int PGAGetPrintFrequencyValue (PGAContext *ctx);
+void PGAPrintPopulation ( PGAContext *ctx, FILE *fp, int pop );
+void PGAPrintIndividual ( PGAContext *ctx, FILE *fp, int p, int pop );
+void PGAPrintString ( PGAContext *ctx, FILE *file, int p, int pop );
+void PGAPrintContextVariable ( PGAContext *ctx, FILE *fp );
+
+/*****************************************
+*          restart.c
+*****************************************/
+
+void PGARestart(PGAContext *ctx, int source_pop, int dest_pop);
+void PGASetRestartFlag(PGAContext *ctx, int val);
+int PGAGetRestartFlag(PGAContext *ctx);
+void PGASetRestartFrequencyValue(PGAContext *ctx, int numiter);
+int PGAGetRestartFrequencyValue(PGAContext *ctx);
+void PGASetRestartAlleleChangeProb(PGAContext *ctx, double prob);
+double PGAGetRestartAlleleChangeProb(PGAContext *ctx);
+void PGASetRestartUserAction(int *userRestartCommand);
+int PGARestartCondition(PGAContext *ctx);
+
+/*****************************************
+*          select.c
+*****************************************/
+
+void PGASelect( PGAContext *ctx, int popix );
+int PGASelectNextIndex ( PGAContext *ctx );
+void PGASetSelectType( PGAContext *ctx, int select_type);
+int PGAGetSelectType (PGAContext *ctx);
+void PGASetPTournamentProb(PGAContext *ctx, double ptournament_prob);
+double PGAGetPTournamentProb(PGAContext *ctx);
+int PGASelectProportional(PGAContext *ctx, PGAIndividual *pop);
+void PGASelectSUS( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectTournament( PGAContext *ctx, PGAIndividual *pop );
+int PGASelectPTournament( PGAContext *ctx, PGAIndividual *pop );
+
+/*****************************************
+*          stop.c
+*****************************************/
+
+int PGADone(PGAContext *ctx, MPI_Comm comm);
+int PGACheckStoppingConditions( PGAContext *ctx);
+void PGASetStoppingRuleType (PGAContext *ctx, int stoprule);
+int PGAGetStoppingRuleType (PGAContext *ctx);
+void PGASetMaxGAIterValue(PGAContext *ctx, int maxiter);
+int PGAGetMaxGAIterValue (PGAContext *ctx);
+void PGASetMaxNoChangeValue(PGAContext *ctx, int max_no_change);
+void PGASetMaxSimilarityValue(PGAContext *ctx, int max_similarity);
+void PGASetTgtFitnessVal(PGAContext *ctx, double tgt_fitness_val);
+void PGASetFitnessTol(PGAContext *ctx,double fitness_tol);
+void PGASetTgtFitnessVariance(PGAContext *ctx,double tgt_fitness_var);
+void PGASetVarTol(PGAContext *ctx,double var_tol);
+void PGASetTgtElapsedTime(PGAContext *ctx,double tgt_elapsed_time);
+
+/*****************************************
+*          system.c
+*****************************************/
+
+void PGAError( PGAContext *ctx, char *msg,
+               int level, int datatype, void *data );
+void PGADestroy (PGAContext *ctx);
+int PGAGetMaxMachineIntValue (PGAContext *ctx);
+int PGAGetMinMachineIntValue (PGAContext *ctx);
+double PGAGetMaxMachineDoubleValue (PGAContext *ctx);
+double PGAGetMinMachineDoubleValue (PGAContext *ctx);
+void PGAUsage( PGAContext *ctx );
+void PGAPrintVersionNumber( PGAContext *ctx );
+
+/*****************************************
+*          user.c
+*****************************************/
+
+void PGASetUserFunction(PGAContext *ctx, int constant, void *f);
+
+/*****************************************
+*          utility.c
+*****************************************/
+
+double PGAMean ( PGAContext *ctx, double *a, int n);
+double PGAStddev ( PGAContext *ctx, double *a, int n, double mean);
+int PGARound(PGAContext *ctx, double x);
+void PGACopyIndividual( PGAContext *ctx, int p1, int pop1, int p2, int pop2);
+int PGACheckSum(PGAContext *ctx, int p, int pop);
+int PGAGetWorstIndex(PGAContext *ctx, int pop);
+int PGAGetBestIndex(PGAContext *ctx, int pop);
+PGAIndividual *PGAGetIndividual ( PGAContext *ctx, int p, int pop);
+void PGAUpdateAverage(PGAContext *ctx, int pop);
+void PGAUpdateOnline(PGAContext *ctx, int pop);
+void PGAUpdateOffline(PGAContext *ctx, int pop);
+int PGAComputeSimilarity(PGAContext *ctx, PGAIndividual *pop);
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/pgapackf.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/pgapackf.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/include/pgapackf.h	(revision 6168)
@@ -0,0 +1,359 @@
+c******************************************************************************
+c     FILE: pgapackf.h
+c
+c     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+c              Brian P. Walenz
+c*****************************************************************************/
+c *** I/O FLAGS
+CBARF !! is NULL ok?
+      integer STDIN, STDOUT, STDERR, NULL
+      parameter(STDIN=5, STDOUT=6, STDERR=6, NULL=0)
+
+
+c *** ABSTRACT DATA TYPES
+      integer PGA_DATATYPE_BINARY
+      parameter( PGA_DATATYPE_BINARY =      1)
+      integer PGA_DATATYPE_INTEGER
+      parameter( PGA_DATATYPE_INTEGER =     2)
+      integer PGA_DATATYPE_REAL
+      parameter( PGA_DATATYPE_REAL =        3)
+      integer PGA_DATATYPE_CHARACTER
+      parameter( PGA_DATATYPE_CHARACTER =   4)
+      integer PGA_DATATYPE_USER
+      parameter( PGA_DATATYPE_USER =        5)
+
+      integer PGA_INT
+      parameter( PGA_INT =                   1)
+      integer PGA_DOUBLE
+      parameter( PGA_DOUBLE =                2)
+      integer PGA_CHAR
+      parameter( PGA_CHAR =                  3)
+      integer PGA_VOID
+      parameter( PGA_VOID =                  4)
+
+    
+c *** BOOLEANS &  FLAGS
+      integer PGA_TRUE
+      parameter ( PGA_TRUE =                   1)
+      integer PGA_FALSE
+      parameter ( PGA_FALSE =                  0)
+
+      integer PGA_FATAL
+      parameter ( PGA_FATAL =                 1)
+      integer PGA_WARNING
+      parameter ( PGA_WARNING =               2)
+
+
+      integer PGA_UNINITIALIZED_INT
+      parameter ( PGA_UNINITIALIZED_INT =    -3827)
+      double precision PGA_UNINITIALIZED_DOUBLE
+      parameter ( PGA_UNINITIALIZED_DOUBLE = -968.3827)
+
+c *** TEMP & POP REFERENT CONSTANTS
+      integer PGA_TEMP1
+      parameter ( PGA_TEMP1 =                -1138)
+      integer PGA_TEMP2
+      parameter ( PGA_TEMP2 =                -4239)
+
+      integer PGA_OLDPOP
+      parameter ( PGA_OLDPOP =               -6728)
+      integer PGA_NEWPOP
+      parameter ( PGA_NEWPOP =               -8376)
+
+c *** DEBUG LEVELS
+      integer PGA_DEBUG_ENTERED
+      parameter ( PGA_DEBUG_ENTERED =          12)
+      integer PGA_DEBUG_EXIT
+      parameter ( PGA_DEBUG_EXIT =             13)
+      integer PGA_DEBUG_MALLOC
+      parameter ( PGA_DEBUG_MALLOC =           80)
+      integer PGA_DEBUG_PRINTVAR
+      parameter ( PGA_DEBUG_PRINTVAR =         82)
+      integer PGA_DEBUG_SEND
+      parameter ( PGA_DEBUG_SEND =             22)
+      integer PGA_DEBUG_RECV
+      parameter ( PGA_DEBUG_RECV =             23)
+      integer PGA_DEBUG_MAXPGAPACKFUNCTIONS
+      parameter ( PGA_DEBUG_MAXPGAPACKFUNCTIONS =        300)
+      integer PGA_DEBUG_MAXFLAGS
+      parameter ( PGA_DEBUG_MAXFLAGS =       1000)
+
+c *** DIRECTION
+      integer PGA_MAXIMIZE
+      parameter ( PGA_MAXIMIZE =            1)
+      integer PGA_MINIMIZE
+      parameter ( PGA_MINIMIZE =            2)
+    
+c *** STOPPING CRITERIA
+      integer PGA_STOP_MAXITER
+      parameter ( PGA_STOP_MAXITER =        1)
+      integer PGA_STOP_NOCHANGE
+      parameter ( PGA_STOP_NOCHANGE =       2)
+      integer PGA_STOP_TOOSIMILAR
+      parameter ( PGA_STOP_TOOSIMILAR =     4)
+
+c *** CROSSOVER
+      integer PGA_CROSSOVER_ONEPT
+      parameter ( PGA_CROSSOVER_ONEPT =     1)
+      integer PGA_CROSSOVER_TWOPT
+      parameter ( PGA_CROSSOVER_TWOPT =     2)
+      integer PGA_CROSSOVER_UNIFORM
+      parameter ( PGA_CROSSOVER_UNIFORM =   3)
+
+c *** SELECTION
+      integer PGA_SELECT_PROPORTIONAL
+      parameter ( PGA_SELECT_PROPORTIONAL = 1)
+      integer PGA_SELECT_SUS
+      parameter ( PGA_SELECT_SUS =          2)
+      integer PGA_SELECT_TOURNAMENT
+      parameter ( PGA_SELECT_TOURNAMENT =   3)
+      integer PGA_SELECT_PTOURNAMENT
+      parameter ( PGA_SELECT_PTOURNAMENT =  4)
+
+c *** FITNESS
+      integer PGA_FITNESS_RAW
+      parameter ( PGA_FITNESS_RAW =         1)
+      integer PGA_FITNESS_NORMAL
+      parameter ( PGA_FITNESS_NORMAL =      2)
+      integer PGA_FITNESS_RANKING
+      parameter ( PGA_FITNESS_RANKING =     3)
+
+c *** FITNESS (MINIMIZATION)
+      integer PGA_FITNESSMIN_RECIPROCAL
+      parameter ( PGA_FITNESSMIN_RECIPROCAL =  1)
+      integer PGA_FITNESSMIN_CMAX
+      parameter ( PGA_FITNESSMIN_CMAX =        2)
+
+c *** MUTATION
+      integer PGA_MUTATION_CONSTANT
+      parameter ( PGA_MUTATION_CONSTANT =  1)
+      integer PGA_MUTATION_RANGE
+      parameter ( PGA_MUTATION_RANGE    =  2)
+      integer PGA_MUTATION_UNIFORM
+      parameter ( PGA_MUTATION_UNIFORM  =  3)
+      integer PGA_MUTATION_GAUSSIAN
+      parameter ( PGA_MUTATION_GAUSSIAN =  4)
+      integer PGA_MUTATION_PERMUTE
+      parameter ( PGA_MUTATION_PERMUTE  =  5)
+    
+c *** POPULATION REPLACEMENT
+      integer PGA_POPREPL_BEST
+      parameter ( PGA_POPREPL_BEST =         1)
+      integer PGA_POPREPL_RANDOM_NOREP
+      parameter ( PGA_POPREPL_RANDOM_NOREP = 2)
+      integer PGA_POPREPL_RANDOM_REP
+      parameter ( PGA_POPREPL_RANDOM_REP =   3)
+
+c *** REPORT OPTIONS
+      integer PGA_REPORT_ONLINE
+      parameter ( PGA_REPORT_ONLINE =   1 )
+      integer PGA_REPORT_OFFLINE
+      parameter ( PGA_REPORT_OFFLINE =  2 )
+      integer PGA_REPORT_HAMMING
+      parameter ( PGA_REPORT_HAMMING =  4 )
+      integer PGA_REPORT_STRING
+      parameter ( PGA_REPORT_STRING =   8 )
+      integer PGA_REPORT_WORST
+      parameter ( PGA_REPORT_WORST =   16 )
+      integer PGA_REPORT_AVERAGE
+      parameter ( PGA_REPORT_AVERAGE = 32 )
+
+c *** RANDOMIZER
+      integer PGA_IINIT_PERMUTE
+      parameter ( PGA_IINIT_PERMUTE =             1)
+      integer PGA_IINIT_RANGE
+      parameter ( PGA_IINIT_RANGE =               2)
+      integer PGA_CINIT_LOWER
+      parameter ( PGA_CINIT_LOWER =               1)
+      integer PGA_CINIT_UPPER
+      parameter ( PGA_CINIT_UPPER =               2)
+      integer PGA_CINIT_MIXED
+      parameter ( PGA_CINIT_MIXED =               3)
+
+c *** SET USER FUNCTION
+      integer PGA_USERFUNCTION_CREATESTRING
+      parameter ( PGA_USERFUNCTION_CREATESTRING =       1)
+      integer PGA_USERFUNCTION_MUTATION
+      parameter ( PGA_USERFUNCTION_MUTATION =           2)
+      integer PGA_USERFUNCTION_CROSSOVER
+      parameter ( PGA_USERFUNCTION_CROSSOVER =          3)
+      integer PGA_USERFUNCTION_PRINTSTRING
+      parameter ( PGA_USERFUNCTION_PRINTSTRING  =       4)
+      integer PGA_USERFUNCTION_COPYSTRING
+      parameter ( PGA_USERFUNCTION_COPYSTRING =         5)
+      integer PGA_USERFUNCTION_DUPLICATE
+      parameter ( PGA_USERFUNCTION_DUPLICATE =          6)
+      integer PGA_USERFUNCTION_INITSTRING
+      parameter ( PGA_USERFUNCTION_INITSTRING =         7)
+      integer PGA_USERFUNCTION_BUILDDATATYPE
+      parameter ( PGA_USERFUNCTION_BUILDDATATYPE =      8)
+      integer PGA_USERFUNCTION_STOPCOND
+      parameter ( PGA_USERFUNCTION_STOPCOND =           9)
+      integer PGA_USERFUNCTION_ENDOFGEN
+      parameter ( PGA_USERFUNCTION_ENDOFGEN =          10)
+
+c *** TAGS
+      integer PGA_COMM_STRINGTOEVAL
+      parameter ( PGA_COMM_STRINGTOEVAL =              1)
+      integer PGA_COMM_EVALOFSTRING
+      parameter ( PGA_COMM_EVALOFSTRING =              2)
+      integer PGA_COMM_DONEWITHEVALS
+      parameter ( PGA_COMM_DONEWITHEVALS =             3)
+      integer PGAGetBinaryAllele
+      double precision PGAGetBinaryInitProb
+      character PGAGetCharacterAllele
+      integer PGACreate
+      integer PGAGetRandomInitFlag
+      integer PGAGetCrossoverType
+      double precision PGAGetCrossoverProb
+      double precision PGAGetUniformCrossoverProb
+      integer PGADuplicate
+      integer PGAGetNoDuplicatesFlag
+      double precision PGAGetEvaluation
+      integer PGAGetEvaluationUpToDateFlag
+      double precision PGAGetRealFromBinary
+      double precision PGAGetRealFromGrayCode
+      integer PGAGetIntegerFromBinary
+      integer PGAGetIntegerFromGrayCode
+      integer PGARank
+      double precision PGAGetFitness
+      integer PGAGetFitnessType
+      integer PGAGetFitnessMinType
+      double precision PGAGetMaxFitnessRank
+      double precision PGAGetFitnessCmaxValue
+      double precision PGAHammingDistance
+      integer PGAGetIntegerAllele
+      integer PGAGetIntegerInitType
+      integer PGAGetMinIntegerInitValue
+      integer PGAGetMaxIntegerInitValue
+      integer PGAMutate
+      integer PGAGetMutationType
+      double precision PGAGetMutationRealValue
+      integer PGAGetMutationIntegerValue
+      integer PGAGetMutationBoundedFlag
+      double precision PGAGetMutationProb
+      integer PGABuildDatatype
+      integer PGAGetRank
+      integer PGAGetNumProcs
+      integer PGAGetCommunicator
+      integer PGAGetDataType
+      integer PGAGetOptDirFlag
+      integer PGAGetStringLength
+      integer PGAGetGAIterValue
+      integer PGAGetMutationOrCrossoverFlag
+      integer PGAGetMutationAndCrossoverFlag
+      integer PGAGetPopSize
+      integer PGAGetNumReplaceValue
+      integer PGAGetPopReplaceType
+      integer PGAGetSortedPopIndex
+      integer PGARandomFlip
+      integer PGARandomInterval
+      double precision PGARandom01
+      double precision PGARandomUniform
+      double precision PGARandomGaussian
+      integer PGAGetRandomSeed
+      double precision PGAGetRealAllele
+      double precision PGAGetMinRealInitValue
+      double precision PGAGetMaxRealInitValue
+      integer PGAGetRealInitType
+      integer PGAGetPrintFrequencyValue
+      integer PGAGetRestartFlag
+      integer PGAGetRestartFrequencyValue
+      double precision PGAGetRestartAlleleChangeProb
+      integer PGASelectNextIndex
+      integer PGAGetSelectType
+      double precision PGAGetPTournamentProb
+      integer PGADone
+      integer PGACheckStoppingConditions
+      integer PGAGetStoppingRuleType
+      integer PGAGetMaxGAIterValue
+      integer PGAGetMaxMachineIntValue
+      integer PGAGetMinMachineIntValue
+      double precision PGAGetMaxMachineDoubleValue
+      double precision PGAGetMinMachineDoubleValue
+      double precision PGAMean
+      double precision PGAStddev
+      integer PGARound
+      integer PGACheckSum
+      integer PGAGetWorstIndex
+      integer PGAGetBestIndex
+
+      external PGAGetBinaryAllele
+      external PGAGetBinaryInitProb
+      external PGAGetCharacterAllele
+      external PGACreate
+      external PGAGetRandomInitFlag
+      external PGAGetCrossoverType
+      external PGAGetCrossoverProb
+      external PGAGetUniformCrossoverProb
+      external PGADuplicate
+      external PGAGetNoDuplicatesFlag
+      external PGAGetEvaluation
+      external PGAGetEvaluationUpToDateFlag
+      external PGAGetRealFromBinary
+      external PGAGetRealFromGrayCode
+      external PGAGetIntegerFromBinary
+      external PGAGetIntegerFromGrayCode
+      external PGARank
+      external PGAGetFitness
+      external PGAGetFitnessType
+      external PGAGetFitnessMinType
+      external PGAGetMaxFitnessRank
+      external PGAGetFitnessCmaxValue
+      external PGAHammingDistance
+      external PGAGetIntegerAllele
+      external PGAGetIntegerInitType
+      external PGAGetMinIntegerInitValue
+      external PGAGetMaxIntegerInitValue
+      external PGAMutate
+      external PGAGetMutationType
+      external PGAGetMutationRealValue
+      external PGAGetMutationIntegerValue
+      external PGAGetMutationBoundedFlag
+      external PGAGetMutationProb
+      external PGABuildDatatype
+      external PGAGetRank
+      external PGAGetNumProcs
+      external PGAGetCommunicator
+      external PGAGetDataType
+      external PGAGetOptDirFlag
+      external PGAGetStringLength
+      external PGAGetGAIterValue
+      external PGAGetMutationOrCrossoverFlag
+      external PGAGetMutationAndCrossoverFlag
+      external PGAGetPopSize
+      external PGAGetNumReplaceValue
+      external PGAGetPopReplaceType
+      external PGAGetSortedPopIndex
+      external PGARandomFlip
+      external PGARandomInterval
+      external PGARandom01
+      external PGARandomUniform
+      external PGARandomGaussian
+      external PGAGetRandomSeed
+      external PGAGetRealAllele
+      external PGAGetMinRealInitValue
+      external PGAGetMaxRealInitValue
+      external PGAGetRealInitType
+      external PGAGetPrintFrequencyValue
+      external PGAGetRestartFlag
+      external PGAGetRestartFrequencyValue
+      external PGAGetRestartAlleleChangeProb
+      external PGASelectNextIndex
+      external PGAGetSelectType
+      external PGAGetPTournamentProb
+      external PGADone
+      external PGACheckStoppingConditions
+      external PGAGetStoppingRuleType
+      external PGAGetMaxGAIterValue
+      external PGAGetMaxMachineIntValue
+      external PGAGetMinMachineIntValue
+      external PGAGetMaxMachineDoubleValue
+      external PGAGetMinMachineDoubleValue
+      external PGAMean
+      external PGAStddev
+      external PGARound
+      external PGACheckSum
+      external PGAGetWorstIndex
+      external PGAGetBestIndex
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeIntegerAsBinary.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeIntegerAsBinary.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeIntegerAsBinary.1	(revision 6168)
@@ -0,0 +1,59 @@
+.TH PGAEncodeIntegerAsBinary 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAEncodeIntegerAsBinary \- encodes an integer value as a binary string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in p to encode val in
+.PD 0
+.TP
+end
+- ending bit position in p to encode val in
+.PD 0
+.TP
+val
+- the integer value to be represented as a binary string
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAEncodeIntegerAsBinary(ctx, p, pop, start, end, val)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+int val
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Encode an integer v in 20 bits in bit positions 0--19 in string p
+in population PGA_NEWPOP.
+
+PGAContext *ctx;
+int v, p;
+:
+PGAEncodeIntegerAsBinary(ctx, p, PGA_NEWPOP, 0, 19, v);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeIntegerAsGrayCode.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeIntegerAsGrayCode.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeIntegerAsGrayCode.1	(revision 6168)
@@ -0,0 +1,61 @@
+.TH PGAEncodeIntegerAsGrayCode 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAEncodeIntegerAsGrayCode \- encodes a real value as a binary reflected
+Gray code sequence
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in p to encode val in
+.PD 0
+.TP
+end
+- ending bit position in p to encode val in
+.PD 0
+.TP
+val
+- the integer value to be represented as a binary reflected
+Gray code sequence
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAEncodeIntegerAsGrayCode(ctx, p, pop, start, end, val)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+int val
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Encode an integer v in 20 bits in bit positions  0--19 in string p in
+population PGA_NEWPOP using Gray code.
+
+PGAContext *ctx;
+int v, p;
+:
+PGAEncodeIntegerAsGrayCode(ctx, p, PGA_NEWPOP, 0, 19, 7);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeRealAsBinary.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeRealAsBinary.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeRealAsBinary.1	(revision 6168)
@@ -0,0 +1,69 @@
+.TH PGAEncodeRealAsBinary 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAEncodeRealAsBinary \- encodes a real value as a binary string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in p to encode val in
+.PD 0
+.TP
+end
+- ending bit position in p to encode val in
+.PD 0
+.TP
+low
+- lower bound of the interval the val is defined on
+.PD 0
+.TP
+high
+- lower bound of the interval the val is defined on
+.PD 0
+.TP
+val
+- the real number to be represented as a binary string
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAEncodeRealAsBinary(ctx, p, pop, start, end, low, high, val)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+double low
+double high
+double val
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Encode 3.14 from the interval [0,10] in 30 bits in bit positions
+0--29 in string p in population PGA_NEWPOP.
+
+PGAContext *ctx;
+int p;
+:
+PGAEncodeRealAsBinary(ctx, p, PGA_NEWPOP, 0, 29, 0.0, 10.0, 3.14);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeRealAsGrayCode.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeRealAsGrayCode.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEncodeRealAsGrayCode.1	(revision 6168)
@@ -0,0 +1,71 @@
+.TH PGAEncodeRealAsGrayCode 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAEncodeRealAsGrayCode \- encodes a real value as a binary reflected Gray
+code sequence
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in p to encode val in
+.PD 0
+.TP
+end
+- ending bit position in p to encode val in
+.PD 0
+.TP
+low
+- lower bound of the interval the val is defined on
+.PD 0
+.TP
+high
+- lower bound of the interval the val is defined on
+.PD 0
+.TP
+val
+- the real number to be represented as a binary string
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAEncodeRealAsGrayCode(ctx, p, pop, start, end, low, high, val)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+double low
+double high
+double val
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Encode 3.14 from the interval [0,10] in 30 bits in bit positions
+0--29 in string p in population PGA_NEWPOP as a binary reflected Gray
+code sequence.
+
+PGAContext *ctx;
+int p;
+:
+PGAEncodeRealAsGrayCode(ctx, p, PGA_NEWPOP, 0, 29, 0.0, 10.0, 3.14);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEvaluate.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEvaluate.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAEvaluate.1	(revision 6168)
@@ -0,0 +1,61 @@
+.TH PGAEvaluate 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAEvaluate \- Calls a user-specified function to return an evaluation of
+each string in the population. The user-specified function is only called
+if the string has been changed (e.g., by crossover or mutation) or the user
+has explicitly signaled the string's evaluation is out-of-date by a call
+to PGASetEvaluationUpToDateFlag().
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop
+- symbolic constant of the population to be evaluated
+.PD 0
+.TP
+f
+- a pointer to a function to evaluate a string.  This function will
+be called once for each string in population pop that requires
+evaluation.  This function must return a double (the evaluation
+function value) and must fit the prototype
+double f(PGAContext *c, int p, int pop);
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAEvaluate(ctx, pop, , comm)
+PGAContext *ctx
+int pop
+double (*f)(PGAContext *, int, int)
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+Evaluate all strings in population PGA_NEWPOP using the user-defined
+evaluation function Energy.
+
+double Energy(PGAContext *ctx, int p, int pop) {
+:
+};
+
+PGAContext *ctx;
+:
+PGAEvaluate(ctx, PGA_NEWPOP, Energy, MPI_COMM_WORLD);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAFitness.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAFitness.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAFitness.1	(revision 6168)
@@ -0,0 +1,47 @@
+.TH PGAFitness 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAFitness \- Maps the user's evaluation function value to a fitness value.
+First, the user's evaluation function value is translated to all positive
+values if any are negative.  Next, this positive sequence is translated to
+a maximization problem if the user's optimization direction was minimization.
+This positive sequence is then mapped to a fitness value using linear
+ranking, linear normalization fitness, or the identity (i.e., the evaluation
+function value).  This routine is usually used after PGAEvaluate is called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop
+- symbolic constant of the population to calculate fitness for
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAFitness(ctx, popindex)
+PGAContext *ctx
+int popindex
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+Calculate the fitness of all strings in population PGA_NEWPOP after
+calling PGAEvaluate to calculate the strings evaluation value.
+
+double energy(PGAContext *ctx, int p, int pop);
+PGAContext *ctx;
+:
+PGAEvaluate(ctx, PGA_NEWPOP, energy);
+PGAFitness (ctx, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetBinaryAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetBinaryAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetBinaryAllele.1	(revision 6168)
@@ -0,0 +1,53 @@
+.TH PGAGetBinaryAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetBinaryAllele \- returns the value of a (binary) allele in a
+PGA_DATATYPE_BINARY string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetBinaryAllele(ctx, p, pop, i)
+PGAContext *ctx
+int p
+int pop
+int i
+.fi
+.SH LOCATION
+binary.c
+.SH EXAMPLE
+.nf
+Example:
+Copies the alleles from member p in PGA_OLDPOP to member q PGA_NEWPOP.
+Assumes the strings are of the same length.
+
+PGAContext *ctx;
+int p, q, i;
+:
+for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+PGASetBinaryAllele(ctx, q, PGA_NEWPOP, i,
+PGAGetBinaryAllele(ctx, p, PGA_OLDPOP, i))
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetCharacterAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetCharacterAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetCharacterAllele.1	(revision 6168)
@@ -0,0 +1,52 @@
+.TH PGAGetCharacterAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetCharacterAllele: returns the value of character allele in a\-PGA_DATATYPE_CHARACTER string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+char  PGAGetCharacterAllele(ctx, p, pop, i)
+PGAContext *ctx
+int p
+int pop
+int i
+.fi
+.SH LOCATION
+char.c
+.SH EXAMPLE
+.nf
+Example:
+Copies the alleles from member p in PGA_OLDPOP to member q in PGA_NEWPOP.
+Assumes the strings are of the same length.
+
+PGAContext *ctx;
+int p, q, i;
+:
+for (i=PGAGetStringLength(ctx, p, PGA_NEWPOP)-1; i>=0; i--)
+PGASetCharacterAllele(ctx, q, PGA_NEWPOP, i,
+PGAGetCharacterAllele(ctx, p, PGA_OLDPOP, i))
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetEvaluation.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetEvaluation.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetEvaluation.1	(revision 6168)
@@ -0,0 +1,44 @@
+.TH PGAGetEvaluation 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetEvaluation \- returns the evaluation function value for
+string p in population pop
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetEvaluation(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+double eval;
+:
+eval = PGAGetEvaluation(ctx, p, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetEvaluationUpToDateFlag.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetEvaluationUpToDateFlag.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetEvaluationUpToDateFlag.1	(revision 6168)
@@ -0,0 +1,51 @@
+.TH PGAGetEvaluationUpToDateFlag 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetEvaluationUpToDateFlag \- returns true/false to indicate
+whether the evaluate function value is up to date
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetEvaluationUpToDateFlag(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int uptodate;
+:
+uptodate = PGAGetEvaluationUpToDateFlag(ctx);
+switch (uptodate) {
+case PGA_TRUE:
+printf("Evaluation function value current\n");
+break;
+case PGA_FALSE:
+printf("Evaluation function value out-of-date\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitness.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitness.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitness.1	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGAGetFitness 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetFitness \- returns the fitness value for a string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetFitness(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+double fit;
+:
+fit = PGAGetFitness(ctx, p, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitnessCmaxValue.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitnessCmaxValue.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitnessCmaxValue.1	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetFitnessCmaxValue 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetFitnessCmaxValue \- returns the value of the multiplier used by
+PGAFitnessMinCmax.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetFitnessCmaxValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double cmax;
+:
+cmax = PGAGetFitnessCmaxValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitnessMinType.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitnessMinType.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitnessMinType.1	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGAGetFitnessMinType 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetFitnessMinType \- Returns the type of fitness transformation used
+for minimization problems.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetFitnessMinType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+for minimization problems
+
+Example:
+PGAContext *ctx;
+int fitmintype;
+:
+fitmintype = PGAGetFitnessMinType(ctx);
+switch (fitmintype) {
+case PGA_FITNESSMIN_RECIPROCAL:
+printf("Fitness Minimization Type = PGA_FITNESSMIN_RECIPROCAL\n");
+break;
+case PGA_FITNESSMIN_CMAX:
+printf("Fitness Minimization Type = PGA_FITNESSMIN_CMAX\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitnessType.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitnessType.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetFitnessType.1	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGAGetFitnessType 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetFitnessType \- Returns the type of fitness transformation used.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetFitnessType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int fittype;
+:
+fittype = PGAGetFitnessType(ctx);
+switch (fittype) {
+case PGA_FITNESS_RAW:
+printf("Fitness Type = PGA_FITNESS_RAW\n");
+break;
+case PGA_FITNESS_NORMAL:
+printf("Fitness Type = PGA_FITNESS_NORMAL\n");
+break;
+case PGA_FITNESS_RANKING:
+printf("Fitness Type = PGA_FITNESS_RANKING\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetIntegerAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetIntegerAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetIntegerAllele.1	(revision 6168)
@@ -0,0 +1,50 @@
+.TH PGAGetIntegerAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetIntegerAllele \- Returns the value of allele i of member p in
+population pop.  Assumes the data type is PGA_DATATYPE_INTEGER.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetIntegerAllele(ctx, p, pop, i)
+PGAContext *ctx
+int p
+int pop
+int i
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Returns the value of the ith integer allele of string p
+in population PGA_NEWPOP.
+
+PGAContext *ctx;
+int p, i, k;
+:
+k =  PGAGetIntegerAllele ( ctx, p, PGA_NEWPOP, i )
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetIntegerFromBinary.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetIntegerFromBinary.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetIntegerFromBinary.1	(revision 6168)
@@ -0,0 +1,55 @@
+.TH PGAGetIntegerFromBinary 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetIntegerFromBinary \- interpets a binary string as encoding an integer
+value and returns the integer value it represents.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in the binary representation
+.PD 0
+.TP
+end
+- ending bit position in the binary representation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetIntegerFromBinary(ctx, p, pop, start, end)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Get an integer j from bits 10--29 of string p in population PGA_NEWPOP.
+
+PGAContext *ctx;
+int j, p;
+:
+j = PGAGetIntegerFromBinary(ctx, p, PGA_NEWPOP, 10, 29);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetIntegerFromGrayCode.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetIntegerFromGrayCode.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetIntegerFromGrayCode.1	(revision 6168)
@@ -0,0 +1,56 @@
+.TH PGAGetIntegerFromGrayCode 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetIntegerFromGrayCode \- interpets a binary reflected Gray code sequence
+as encoding an integer value and returns the integer value it represents.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in the binary representation
+.PD 0
+.TP
+end
+- ending bit position in the binary representation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetIntegerFromGrayCode(ctx, p, pop, start, end)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Get an integer j from bits 10--29 of string p in population PGA_NEWPOP.
+The string is encoded in Gray code.
+
+PGAContext *ctx;
+int j, p;
+:
+j = PGAGetIntegerFromGrayCode(ctx, p, PGA_NEWPOP, 10, 29);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetMaxFitnessRank.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetMaxFitnessRank.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetMaxFitnessRank.1	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetMaxFitnessRank 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxFitnessRank \- returns the maximum value used in rank-based
+fitness.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+rank
+-based fitness
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMaxFitnessRank(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+double max;
+:
+max = PGAGetMaxFitnessRank(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetRealAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetRealAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetRealAllele.1	(revision 6168)
@@ -0,0 +1,50 @@
+.TH PGAGetRealAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRealAllele \- returns the value of real-valued allele i in string p
+in population pop
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetRealAllele(ctx, p, pop, i)
+PGAContext *ctx
+int p
+int pop
+int i
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Example:
+Returns the value of the ith real-valued allele of string p
+in population PGA_NEWPOP
+
+PGAContext *ctx;
+int p, i, r;
+r =  PGAGetRealAllele (ctx, p, PGA_NEWPOP, i)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetRealFromBinary.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetRealFromBinary.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetRealFromBinary.1	(revision 6168)
@@ -0,0 +1,66 @@
+.TH PGAGetRealFromBinary 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRealFromBinary \- Interpets a binary string as encoding a real value
+and returns the real value it represents.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in the binary representation
+.PD 0
+.TP
+end
+- ending bit position in the binary representation
+.PD 0
+.TP
+lower
+- lower bound of the interval the real number is defined on
+.PD 0
+.TP
+upper
+- lower bound of the interval the real number is defined on
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetRealFromBinary(ctx, p, pop, start, end, lower, upper)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+double lower
+double upper
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Decode a real value from the string p in population PGA_NEWPOP.  The
+value to decode lies on the interval [-10,20] and is represented
+using the 20 bits in bit positions 10--29.
+
+double x;
+:
+x = PGAGetRealFromBinary(ctx, p, PGA_NEWPOP, 10, 29, -10.0, 20.0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetRealFromGrayCode.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetRealFromGrayCode.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGAGetRealFromGrayCode.1	(revision 6168)
@@ -0,0 +1,67 @@
+.TH PGAGetRealFromGrayCode 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRealFromGrayCode \- interpets a binary reflected Gray code sequence in
+a binary string as encoding a real value and returns the real value it
+represents.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+start
+- starting bit position in the binary representation
+.PD 0
+.TP
+end
+- ending bit position in the binary representation
+.PD 0
+.TP
+lower
+- lower bound of the interval the real number is defined on
+.PD 0
+.TP
+upper
+- lower bound of the interval the real number is defined on
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetRealFromGrayCode(ctx, p, pop, start, end, lower, upper)
+PGAContext *ctx
+int p
+int pop
+int start
+int end
+double lower
+double upper
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Decode a real value from the string p in population PGA_NEWPOP.  The
+value to decode lies on the interval [-10,20] and is represented
+using the 20 bits in bit positions 10--29.
+
+double x;
+:
+x = PGAGetRealFromGrayCode(ctx, p, PGA_NEWPOP, 10, 29, -10.0, 20.0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGARank.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGARank.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGARank.1	(revision 6168)
@@ -0,0 +1,62 @@
+.TH PGARank 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARank \- returns the rank of a string in a population.  This is a value
+between 1,...,N (the population size).  The most fit string has rank 1,
+the least fit string has rank N.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the index of the string whose rank is desired
+.PD 0
+.TP
+order
+- an array containing a unique rank for each string
+.PD 0
+.TP
+n
+- the size of the array order
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGARank(ctx, p, order, n)
+PGAContext *ctx
+int p
+int *order
+int n
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+Determine the rank of string p.
+
+PGAContext *ctx;
+int i, popsize, rank, *order;
+double *fitness;
+
+popsize = PGAGetPopsize(ctx);
+order   = (int *)   malloc(sizeof(int)    * popsize);
+fitness = (double *)malloc(sizeof(double) * popsize);
+
+for(i=0;i<popsize; i++) {
+fitness[i] = PGAGetFitness(ctx, p, PGA_OLDPOP);
+order[i]   = i;
+}
+
+PGADblHeapSort(ctx, fitness, order, popsize);
+rank = PGARank(ctx, p, order, popsize)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetBinaryAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetBinaryAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetBinaryAllele.1	(revision 6168)
@@ -0,0 +1,56 @@
+.TH PGASetBinaryAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetBinaryAllele \- sets a binary allele to the specified value.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 0
+.TP
+val
+- binary value (either 1 or 0) to set the allele to
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetBinaryAllele(ctx, p, pop, i, val)
+PGAContext *ctx
+int p
+int pop
+int i
+int val
+.fi
+.SH LOCATION
+binary.c
+.SH EXAMPLE
+.nf
+Copies the alleles from member p in PGA_OLDPOP to member q PGA_NEWPOP.
+Assumes strings are of the same length.
+
+PGAContext *ctx;
+int p, q, i;
+:
+for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+PGASetBinaryAllele(ctx, q, PGA_NEWPOP, i,
+PGAGetBinaryAllele(ctx, p, PGA_OLDPOP, i))
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetCharacterAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetCharacterAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetCharacterAllele.1	(revision 6168)
@@ -0,0 +1,57 @@
+.TH PGASetCharacterAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetCharacterAllele \- sets the value of an allele in a
+PGA_DATATYPE_CHARACTER string.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 0
+.TP
+val
+- character value to set the allele to
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetCharacterAllele(ctx, p, pop, i, value)
+PGAContext *ctx
+int p
+int pop
+int i
+char value
+.fi
+.SH LOCATION
+char.c
+.SH EXAMPLE
+.nf
+Copies the alleles from member p in PGA_OLDPOP to member q in PGA_NEWPOP.
+Assumes the strings are of the same length.
+
+PGAContext *ctx;
+int p, q, i;
+:
+for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+PGASetCharacterAllele(ctx, q, PGA_NEWPOP, i,
+PGAGetCharacterAllele(ctx, p, PGA_OLDPOP, i))
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetEvaluation.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetEvaluation.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetEvaluation.1	(revision 6168)
@@ -0,0 +1,51 @@
+.TH PGASetEvaluation 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetEvaluation \- Set the evaluation function value for a string to a
+specified value.  Also sets the evaulation up to date flag to PGA_TRUE.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population string p is in
+.PD 0
+.TP
+val
+- the (user) evaluation value to assign to string p
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetEvaluation(ctx, p, pop, val)
+PGAContext *ctx
+int p
+int pop
+double val
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Set the evaluation function value of string p in population PGA_NEWPOP
+to 123.456.
+
+PGAContext *ctx;
+int p;
+:
+PGASetEvaluation(ctx, p, PGA_NEWPOP, 123.456);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetEvaluationUpToDateFlag.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetEvaluationUpToDateFlag.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetEvaluationUpToDateFlag.1	(revision 6168)
@@ -0,0 +1,54 @@
+.TH PGASetEvaluationUpToDateFlag 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetEvaluationUpToDateFlag \- sets the flag associated with a
+string to PGA_TRUE or PGA_FLASE to indicate whether the evaluate
+function value is out-of-date or not.  Note that this flag is always
+set to PGA_TRUE when PGASetEvaluation is called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population string p is in
+.PD 0
+.TP
+status
+- boolean for whether up-to-date
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetEvaluationUpToDateFlag(ctx, p, pop, status)
+PGAContext *ctx
+int p
+int pop
+int status
+.fi
+.SH LOCATION
+evaluate.c
+.SH EXAMPLE
+.nf
+Example:
+Set the evaluation function flag for string p in population PGA_NEWPOP
+to PGA_FALSE (as might happen after, for example, calling a hill-climbing
+routine that modified this string).
+
+PGAContext *ctx;
+int p;
+:
+PGASetEvaluationUpToDateFlag(ctx, p, PGA_NEWPOP, PGA_FALSE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetFitnessCmaxValue.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetFitnessCmaxValue.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetFitnessCmaxValue.1	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetFitnessCmaxValue 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetFitnessCmaxValue \- The value of the multiplier used by
+PGAFitnessMinCmax so that the worst string has a nonzero fitness.
+The default value is 1.01.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+val
+- the value of the multiplier
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetFitnessCmaxValue(ctx, val)
+PGAContext *ctx
+double val
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetFitnessCmaxValue(ctx, 1.2);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetFitnessMinType.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetFitnessMinType.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetFitnessMinType.1	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGASetFitnessMinType 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetFitnessMinType \- sets the type of algorithm used if a minimization
+problem is specified to determine how values are remapped for maximization.
+Valid choices are PGA_FITNESSMIN_RECIPROCAL and PGA_FITNESSMIN_CMAX to do
+the mapping using the reciprocal of the evaluation function, or by
+subtracting the worst evaluation function value from each evaluation
+function value, respectively.  The default is PGA_FITNESSMIN_CMAX
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fitness_type
+- symbolic constant to specify fitness minimization type
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetFitnessMinType(ctx, fitness_type)
+PGAContext *ctx
+int fitness_type
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetFitnessMinType(ctx, PGA_FITNESSMIN_CMAX);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetFitnessType.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetFitnessType.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetFitnessType.1	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGASetFitnessType 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetFitnessType \- Set the type of fitness algorithm to use. Valid choices
+are PGA_FITNESS_RAW, PGA_FITNESS_NORMAL, or PGA_FITNESS_RANKING for
+raw fitness (the evaluation function value), linear normalization, or
+linear ranking, respectively.  The default is PGA_FITNESS_RAW.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fitness_type
+- symbolic constant to specify fitness type
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetFitnessType(ctx, fitness_type)
+PGAContext *ctx
+int fitness_type
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetFitnessType(ctx, PGA_FITNESS_RANKING);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetIntegerAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetIntegerAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetIntegerAllele.1	(revision 6168)
@@ -0,0 +1,54 @@
+.TH PGASetIntegerAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetIntegerAllele \- sets the value of a (integer) allele.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 0
+.TP
+val
+- integer value to set the allele to
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetIntegerAllele(ctx, p, pop, i, value)
+PGAContext *ctx
+int p
+int pop
+int i
+int value
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Set the value of the ith allele of string p in population PGA_NEWPOP
+to 64.
+
+PGAContext *ctx;
+int p, i;
+:
+PGASetIntegerAllele (ctx, p, PGA_NEWPOP, i, 64)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetMaxFitnessRank.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetMaxFitnessRank.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetMaxFitnessRank.1	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetMaxFitnessRank 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMaxFitnessRank \- The value of the parameter Max when using linear
+ranking for fitness determination. The default value is 1.2.  The value
+must be from the interval [1.0, 2.0].  The fitness type must have been set
+to PGA_FITNESS_RANKING with PGASetFitnessType for this function call
+to have any effect.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+max
+- the value of the parameter Max when using linear ranking
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMaxFitnessRank(ctx, fitness_rank_max)
+PGAContext *ctx
+double fitness_rank_max
+.fi
+.SH LOCATION
+fitness.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMaxFitnessRank(ctx, 1.1);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetRealAllele.1
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetRealAllele.1	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man1/PGASetRealAllele.1	(revision 6168)
@@ -0,0 +1,55 @@
+.TH PGASetRealAllele 1 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRealAllele \- sets the value of real-valued allele i in string p
+in population pop
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population the string is in
+.PD 0
+.TP
+i
+- allele index
+.PD 0
+.TP
+val
+- real value to set the allele to
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRealAllele(ctx, p, pop, i, value)
+PGAContext *ctx
+int p
+int pop
+int i
+double value
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Sets the value of the ith allele of string p in population PGA_NEWPOP
+to 1.57
+
+PGAContext *ctx;
+int i, p;
+:
+PGASetRealAllele ( ctx, p, PGA_NEWPOP, i, 1.57)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetBinaryInitProb.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetBinaryInitProb.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetBinaryInitProb.2	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetBinaryInitProb 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetBinaryInitProb \- Returns the probability that an allele will be
+randomly initialized to "1" in a PGA_DATATYPE_BINARY string.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetBinaryInitProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+binary.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double prob;
+:
+prob = PGAGetBinaryInitProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetIntegerInitType.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetIntegerInitType.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetIntegerInitType.2	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetIntegerInitType 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetIntegerInitType \- returns the type of scheme used to randomly
+initialize strings of data type PGA_DATATYPE_INTEGER.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetIntegerInitType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int inittype;
+:
+inittype = PGAGetIntegerInitType(ctx);
+switch (inittype) {
+case PGA_IINIT_PERMUTE:
+printf("Data Type = PGA_IINIT_PERMUTE\n");
+break;
+case PGA_IINIT_RANGE:
+printf("Data Type = PGA_IINIT_RANGE\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMaxIntegerInitValue.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMaxIntegerInitValue.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMaxIntegerInitValue.2	(revision 6168)
@@ -0,0 +1,34 @@
+.TH PGAGetMaxIntegerInitValue 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxIntegerInitValue \- returns the maximum of the range of integers
+used to randomly initialize integer strings.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMaxIntegerInitValue(ctx, i)
+PGAContext *ctx
+int i
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int max;
+:
+max = PGAGetMaxIntegerInitValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMaxRealInitValue.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMaxRealInitValue.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMaxRealInitValue.2	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGAGetMaxRealInitValue 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxRealInitValue \- returns the maximum value used to randomly
+initialize allele i in a real string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+i
+- an allele position
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMaxRealInitValue(ctx, i)
+PGAContext *ctx
+int i
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int max;
+:
+max = PGAGetMaxRealInitValue(ctx, 0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMinIntegerInitValue.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMinIntegerInitValue.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMinIntegerInitValue.2	(revision 6168)
@@ -0,0 +1,34 @@
+.TH PGAGetMinIntegerInitValue 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMinIntegerInitValue \- returns the minimum of the range of integers
+used to randomly initialize integer strings.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMinIntegerInitValue(ctx, i)
+PGAContext *ctx
+int i
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int min;
+:
+min = PGAGetMinIntegerInitValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMinRealInitValue.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMinRealInitValue.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetMinRealInitValue.2	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGAGetMinRealInitValue 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMinRealInitValue \- returns the minimum value used to randomly
+initialize allele i in a real string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+i
+- an allele position
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMinRealInitValue(ctx, i)
+PGAContext *ctx
+int i
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int min;
+:
+min = PGAGetMinRealInitValue(ctx, 0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetRandomInitFlag.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetRandomInitFlag.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetRandomInitFlag.2	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetRandomInitFlag 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRandomInitFlag \- returns true/false to indicate whether or not
+alleles are randomly initialized.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRandomInitFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+create.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int raninit;
+:
+raninit = PGAGetRandomInitFlag(ctx);
+switch (raninit) {
+case PGA_TRUE:
+printf("Population is randomly initialized\n");
+break;
+case PGA_FALSE:
+printf("Population initialized to zero\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetRealInitType.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetRealInitType.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGAGetRealInitType.2	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetRealInitType 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRealInitType \- returns the type of scheme used to randomly
+initialize strings of data type PGA_DATATYPE_REAL.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRealInitType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int inittype;
+:
+inittype = PGAGetRealInitType(ctx);
+switch (inittype) {
+case PGA_RINIT_PERCENT:
+printf("Data Type = PGA_RINIT_PERCENT\n");
+break;
+case PGA_RINIT_RANGE:
+printf("Data Type = PGA_RINIT_RANGE\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetBinaryInitProb.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetBinaryInitProb.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetBinaryInitProb.2	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetBinaryInitProb 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetBinaryInitProb \- specify the probability of initializing an allele to
+"1" when creating a PGA_DATATYPE_BINARY string.  The default value is 0.5.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the binary initialization probability
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetBinaryInitProb(ctx, probability)
+PGAContext *ctx
+double probability
+.fi
+.SH LOCATION
+binary.c
+.SH EXAMPLE
+.nf
+Example:
+Set approximately 1 percent of all binary alleles to "1" when randomly
+initializing the population.
+
+PGAContext *ctx;
+:
+PGASetBinaryInitProb(ctx, 0.01);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetCharacterInitType.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetCharacterInitType.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetCharacterInitType.2	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetCharacterInitType 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetCharacterInitType \- sets a flag to specify whether the character
+strings will be exclusively lowercase, exclusively uppercase, or a mixure
+of both cases.  Legal flags are PGA_CINIT_UPPER, PGA_CINIT_LOWER, and
+PGA_CINIT_MIXED.  Default is PGA_CINIT_LOWER.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+value
+- symbolic constant specifying which case
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetCharacterInitType(ctx, value)
+PGAContext *ctx
+int value
+.fi
+.SH LOCATION
+char.c
+.SH EXAMPLE
+.nf
+Set program to generate exclusively uppercase letters
+
+PGAContext *ctx;
+:
+PGASetCharacterInitType(ctx, PGA_CINIT_UPPER);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetIntegerInitPermute.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetIntegerInitPermute.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetIntegerInitPermute.2	(revision 6168)
@@ -0,0 +1,48 @@
+.TH PGASetIntegerInitPermute 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetIntegerInitPermute \- sets a flag to tell the initialization routines
+to set each integer-valued gene to a random permutation of the values given
+by an upper and lower bound.  The length of the interval must be the same
+as the string length.  This is the default strategy for initializing
+integer-valued strings. The default interval is [0,L-1] where L is the
+string length.  No string initialization is done by this call.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+min
+- the lower bound of numbers used in the permutation
+.PD 0
+.TP
+max
+- the upper bound of numbers used in the permutation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetIntegerInitPermute(ctx, min, max)
+PGAContext *ctx
+int min
+int max
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Set the initialization routines to set each gene to a random and
+unique value from the interval $[500,599]$.
+
+PGAContext *ctx;
+:
+PGASetIntegerInitPermute(ctx, 500, 599)}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetIntegerInitRange.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetIntegerInitRange.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetIntegerInitRange.2	(revision 6168)
@@ -0,0 +1,57 @@
+.TH PGASetIntegerInitRange 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetIntegerInitRange \- sets a flag to tell the initialization routines to
+set each integer-valued gene to a value chosen randomly from the interval
+given by an upper and lower bound.  No string initialization is done by
+this call.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+min
+- array of lower bounds that define the interval the gene is
+initialized from
+.PD 0
+.TP
+max
+- array of upper bounds that define the interval the gene is
+initialized from
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetIntegerInitRange(ctx, min, max)
+PGAContext *ctx
+int *min
+int *max
+.fi
+.SH LOCATION
+integer.c
+.SH EXAMPLE
+.nf
+Set the initialization routines to select a value for gene i
+uniformly randomly from the interval [0,i].  Assumes all strings
+are of the same length.
+
+PGAContext *ctx;
+int *low, *high, stringlen, i;
+:
+stringlen = PGAGetStringLength(ctx);
+low  = (int *) malloc(stringlen*sizeof(int));
+high = (int *) malloc(stringlen*sizeof(int));
+for(i=0;i<stringlen;i++) {
+low[i]  = 0;
+high[i] = i
+}
+PGASetIntegerInitRange(ctx, low, high);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetRandomInitFlag.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetRandomInitFlag.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetRandomInitFlag.2	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetRandomInitFlag 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRandomInitFlag \- A boolean flag to indicate whether to randomly
+initialize alleles.  Legal values are PGA_TRUE and PGA_FALSE.  Default
+is PGA_TRUE -- randomly initialize alleles.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+flag
+- either PGA_TRUE or PGA_FALSE
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRandomInitFlag(ctx, RandomBoolean)
+PGAContext *ctx
+int RandomBoolean
+.fi
+.SH LOCATION
+create.c
+.SH EXAMPLE
+.nf
+Example:
+Set the initialization routine to initialize all alleles to zero
+
+PGAContext *ctx;
+:
+PGASetRandomInitFlag(ctx,PGA_FALSE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetRealInitPercent.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetRealInitPercent.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetRealInitPercent.2	(revision 6168)
@@ -0,0 +1,58 @@
+.TH PGASetRealInitPercent 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRealInitPercent \- sets the upper and lower bounds for randomly
+initializing real-valued genes.  For each gene these bounds define an
+interval from which the initial allele value is selected uniformly randomly.
+With this routine the user specifies a median value and a percent offset
+for each allele.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+median
+- an array containing the mean value of the interval
+.PD 0
+.TP
+percent
+- an array containing the percent offset to add and subtract to
+the median to define the interval
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRealInitPercent(ctx, median, percent)
+PGAContext *ctx
+double *median
+double *percent
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Set the initialization routines to select a value for each real-valued
+gene i uniformly randomly from the interval [i-v,i+v], where $v = i/2$.
+Assumes all strings are the same length.
+
+PGAContext *ctx;
+double *median, *percent;
+int i, stringlen;
+:
+stringlen = PGAGetStringLength(ctx);
+median  = (double *) malloc(stringlen*sizeof(double));
+percent = (double *) malloc(stringlen*sizeof(double));
+for(i=0;i<stringlen;i++) {
+median[i]  = (double) i;
+percent[i] = 0.5;
+}
+PGASetRealInitPercent(ctx, median, percent);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetRealInitRange.2
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetRealInitRange.2	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man2/PGASetRealInitRange.2	(revision 6168)
@@ -0,0 +1,58 @@
+.TH PGASetRealInitRange 2 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRealInitRange \- sets the upper and lower bounds for randomly
+initializing real-valued genes.  For each gene these bounds define an
+interval from which the initial allele value is selected uniformly randomly.
+The user specifies two arrays containing lower and bound for each gene to
+define the interval.  This is the default strategy for initializing
+real-valued strings.  The default interval is $[0,1.0]$ for each gene.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+min
+- array containing the lower bound of the interval for each gene
+.PD 0
+.TP
+mac
+- array containing the upper bound of the interval for each gene
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRealInitRange(ctx, min, max)
+PGAContext *ctx
+double *min
+double *max
+.fi
+.SH LOCATION
+real.c
+.SH EXAMPLE
+.nf
+Set the initialization routines to select a value for each real-valued
+gene i uniformly randomly from the interval [-10.,i]
+Assumes all strings are of the same length.
+
+PGAContext *ctx;
+double *low, *high;
+int i, stringlen;
+:
+stringlen = PGAGetStringLength(ctx);
+low  = (double *) malloc(stringlen*sizeof(double));
+high = (double *) malloc(stringlen*sizeof(double));
+for(i=0;i<stringlen;i++) {
+low[i]  = -10.0;
+high[i] = i;
+}
+PGASetRealInitRange(ctx, low, high);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGACrossover.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGACrossover.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGACrossover.3	(revision 6168)
@@ -0,0 +1,68 @@
+.TH PGACrossover 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGACrossover \- performs crossover on two parent strings to create two
+child strings (via side-effect).  The type of crossover performed is
+either the default or that specified by PGASetCrossoverType
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p1
+- the first parent string
+.PD 0
+.TP
+p2
+- the second parent string
+.PD 0
+.TP
+pop1
+- symbolic constant of the population containing string p1 and p2
+.PD 0
+.TP
+c1
+- the first child string
+.PD 0
+.TP
+c2
+- the second child string
+.PD 0
+.TP
+pop2
+- symbolic constant of the population to contain string c1 and c2
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGACrossover(ctx, p1, p2, pop1, c1, c2, pop2)
+PGAContext *ctx
+int p1
+int p2
+int pop1
+int c1
+int c2
+int pop2
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+Perform crossover on the two parent strings mom and dad in population
+PGA_OLDPOP, and insert the child strings, child1 and child1, in
+population PGA_NEWPOP.
+
+PGAContext *ctx;
+int mom, dad, child1, child2;
+:
+PGACrossover(ctx, mom, dad, PGA_OLDPOP, child1, child2, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetCrossoverProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetCrossoverProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetCrossoverProb.3	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetCrossoverProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetCrossoverProb \- Returns the crossover probability
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetCrossoverProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double pc;
+:
+pc = PGAGetCrossoverProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetCrossoverType.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetCrossoverType.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetCrossoverType.3	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGAGetCrossoverType 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetCrossoverType \- Returns the type of crossover selected
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetCrossoverType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int crosstype;
+:
+crosstype = PGAGetCrossoverType(ctx);
+switch (crosstype) {
+case PGA_CROSSOVER_ONEPT:
+printf("Crossover Type = PGA_CROSSOVER_ONEPT\n");
+break;
+case PGA_CROSSOVER_TWOPT:
+printf("Crossover Type = PGA_CROSSOVER_TWOPT\n");
+break;
+case PGA_CROSSOVER_UNIFORM:
+printf("Crossover Type = PGA_CROSSOVER_UNIFORM\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationBoundedFlag.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationBoundedFlag.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationBoundedFlag.3	(revision 6168)
@@ -0,0 +1,34 @@
+.TH PGAGetMutationBoundedFlag 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationBoundedFlag \- returns PGA_TRUE or PGA_FALSE to indicate
+whether mutated integer strings remain in the range specified when
+initialized with PGASetIntegerInitRange.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMutationBoundedFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int val;
+:
+val = PGAGetMutationBoundedFlag(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationIntegerValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationIntegerValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationIntegerValue.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMutationIntegerValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationIntegerValue \- Returns the value of the multiplier
+used to mutate PGA_DATATYPE_INTEGER strings with.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMutationIntegerValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int ival;
+:
+ival = PGAGetMutationIntegerValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationProb.3	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetMutationProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationProb \- Returns the probability of mutation.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMutationProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double pm;
+:
+pm = PGAGetMutateProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationRealValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationRealValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationRealValue.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMutationRealValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationRealValue \- Returns the value of the multiplier used to
+mutate PGA_DATATYPE_REAL strings with.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMutationRealValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double val;
+:
+val = PGAGetMutationRealValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationType.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationType.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetMutationType.3	(revision 6168)
@@ -0,0 +1,49 @@
+.TH PGAGetMutationType 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationType \- Returns the type of mutation used
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMutationType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int mutatetype;
+:
+mutatetype = PGAGetMutationType(ctx);
+switch (mutatetype) {
+case PGA_MUTATION_CONSTANT:
+printf("Mutation Type = PGA_MUTATION_CONSTANT\n");
+break;
+case PGA_MUTATION_RANGE:
+printf("Mutation Type = PGA_MUTATION_RANGE\n");
+break;
+case PGA_MUTATION_UNIFORM:
+printf("Mutation Type = PGA_MUTATION_UNIFORM\n");
+break;
+case PGA_MUTATION_GAUSSIAN:
+printf("Mutation Type = PGA_MUTATION_GAUSSIAN\n");
+break;
+case PGA_MUTATION_PERMUTE:
+printf("Mutation Type = PGA_MUTATION_PERMUTE\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetPTournamentProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetPTournamentProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetPTournamentProb.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetPTournamentProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetPTournamentProb \- returns the probability of selecting the best
+string in a probabilistic binary tournament
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetPTournamentProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double pt;
+:
+pt = PGAGetPTournamentProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetRestartAlleleChangeProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetRestartAlleleChangeProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetRestartAlleleChangeProb.3	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetRestartAlleleChangeProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRestartAlleleChangeProb \- returns the probability with which
+an allele will be mutated during a restart
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetRestartAlleleChangeProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+prob = PGASetRestartAlleleChangeProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetRestartFlag.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetRestartFlag.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetRestartFlag.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetRestartFlag 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRestartFlag \- returns whether the algorithm should employ the
+restart operator
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRestartFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int val;
+:
+val = PGAGetRestartFlag(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetRestartFrequencyValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetRestartFrequencyValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetRestartFrequencyValue.3	(revision 6168)
@@ -0,0 +1,36 @@
+.TH PGAGetRestartFrequencyValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRestartFrequencyValue \- returns the number of iterations of no
+change in the best string after which the algorithm should restart
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+numiter
+- number of changeless iterations
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRestartFrequencyValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+numiter = PGAGetRestartFrequencyValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetSelectType.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetSelectType.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetSelectType.3	(revision 6168)
@@ -0,0 +1,46 @@
+.TH PGAGetSelectType 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetSelectType \- Returns the type of selection selected
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetSelectType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int selecttype;
+:
+selecttype = PGAGetSelectType(ctx);
+switch (selecttype) {
+case PGA_SELECT_PROPORTIONAL:
+printf("Selection Type = PGA_SELECT_PROPORTIONAL\n");
+break;
+case PGA_SELECT_SUS:
+printf("Selection Type = PGA_SELECT_SUS\n");
+break;
+case PGA_SELECT_TOURNAMENT:
+printf("Selection Type = PGA_SELECT_TOURNAMENT\n");
+break;
+case PGA_SELECT_PTOURNAMENT:
+printf("Selection Type = PGA_SELECT_PTOURNAMENT\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetUniformCrossoverProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetUniformCrossoverProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAGetUniformCrossoverProb.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetUniformCrossoverProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetUniformCrossoverProb \- returns the probability of a bit being
+selected from the first child string in uniform crossover
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetUniformCrossoverProb(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double pu;
+:
+pu = PGAGetUniformCrossoverProb(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAMutate.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAMutate.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGAMutate.3	(revision 6168)
@@ -0,0 +1,50 @@
+.TH PGAMutate 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAMutate \- This routine performs mutation on a string.  The type of mutation
+depends on the data type.  Refer to the user guide for data-specific
+examples.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- index of string to mutate
+.PD 0
+.TP
+pop
+- symbolic constant of the population containing p
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAMutate(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+Mutate the best string in the population, until 10 or more mutations
+have occured.
+
+PGAContext *ctx;
+int p, count = 0;
+:
+p = PGAGetBestIndex(ctx, PGA_NEWPOP);
+while (count < 10) {
+count += PGAMutate(ctx, p, PGA_NEWPOP);
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGARestart.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGARestart.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGARestart.3	(revision 6168)
@@ -0,0 +1,51 @@
+.TH PGARestart 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARestart \- reseeds a population from the best string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+val
+- the probability of changing an allele when copying the
+best string to the new population
+.PD 0
+.TP
+source_pop
+- the source population
+.PD 0
+.TP
+dest_pop
+- symbolic constant of the destination population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGARestart(ctx, source_pop, dest_pop)
+PGAContext *ctx
+int source_pop
+int dest_pop
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Perform an unspecified test to determine if the current evolution is
+not evolving fast enough, and if so, restart the evolution.
+
+PGAContext *ctx;	    PGAEvaluateMS(ctx, PGA_OLDPOP, f, comm);
+PGAFitness   (ctx, PGA_OLDPOP);
+}
+
+:
+if (StagnantEvolution()) {
+PGARestart(ctx, PGA_OLDPOP, PGA_NEWPOP);
+PGAEvaluate(ctx, PGA_NEWPOP, EvalFunc);
+PGAUpdateGeneration(ctx);
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASelect.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASelect.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASelect.3	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGASelect 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASelect \- performs genetic algorithm selection using either the default
+selection scheme or that specified with PGASetSelectType().  Valid selection
+methods are proportional, stochastic universal, tournament, or probabilistic
+tournament selection, PGA_SELECT_PROPORTIONAL, PGA_SELECT_SUS, 
+PGA_SELECT_TOURNAMENT, and PGA_SELECT_PTOURNAMENT, respectively.  This 
+function updates an internal array with the indices of members of popix 
+selected for recombination.  These indices may be accessed with 
+PGASelectNextIndex()
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+popix
+- symbolic constant of population to select from
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASelect(ctx, popix)
+PGAContext *ctx
+int popix
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx,
+:
+PGASelect(ctx, PGA_OLDPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASelectNextIndex.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASelectNextIndex.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASelectNextIndex.3	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGASelectNextIndex 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASelectNextIndex \- returns the index of next individual in
+internal array that contains the indices determined by PGASelect
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGASelectNextIndex(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int l;
+:
+l = PGASelectNextIndex(ctx, PGA_OLDPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetCrossoverProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetCrossoverProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetCrossoverProb.3	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGASetCrossoverProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetCrossoverProb \- Probability that a selected string will undergo
+crossover.  The default is 0.85.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the crossover probability
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetCrossoverProb(ctx, crossover_prob)
+PGAContext *ctx
+double crossover_prob
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+Make crossover happen infrequently.
+
+PGAContext *ctx;
+:
+PGASetCrossoverProb(ctx,0.001);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetCrossoverType.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetCrossoverType.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetCrossoverType.3	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGASetCrossoverType 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetCrossoverType \- specify the type of crossover to use. Valid choices
+are PGA_CROSSOVER_ONEPT, PGA_CROSSOVER_TWOPT, or PGA_CROSSOVER_UNIFORM for
+one-point, two-point, and uniform crossover, respectively.  The default is
+PGA_CROSSOVER_TWOPT.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+crossover_type
+- symbolic constant to specify crossover type
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetCrossoverType(ctx, crossover_type)
+PGAContext *ctx
+int crossover_type
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+Use uniform crossover when crossingover strings.
+
+PGAContext *ctx;
+:
+PGASetCrossoverType(ctx, PGA_CROSSOVER_UNIFORM);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationBoundedFlag.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationBoundedFlag.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationBoundedFlag.3	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGASetMutationBoundedFlag 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationBoundedFlag \- If this flag is set to PGA_TRUE, then for
+Integer and Real strings whenever a gene is mutated, if it underflows
+(overflows) the lower (upper)bound it is reset to the lower (upper) bound.
+In this way all allele values remain within the range the integer strings
+were initialized on.  If this flag is PGA_FALSE (the default), the alleles
+may take any values.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+flag
+- either PGA_TRUE or PGA_FALSE
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationBoundedFlag(ctx, val)
+PGAContext *ctx
+int val
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMutationBoundedFlag(ctx, PGA_TRUE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationIntegerValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationIntegerValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationIntegerValue.3	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetMutationIntegerValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationIntegerValue \- Set multiplier to mutate PGA_DATATYPE_INTEGER
+strings with.  The use of this value depends on the type of mutation
+being used.  The default value is 1.  See the user guide for more details.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+val
+- the mutation value to use for Integer mutation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationIntegerValue(ctx, val)
+PGAContext *ctx
+int val
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMutationIntegerValue(ctx, 5);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationProb.3	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGASetMutationProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationProb \- Specifies the probability that a given allele will
+be mutated.  If this is called without calling PGASetMutationType(), the
+default mutation type is PGA_MUTATION_FIXED.  The default probability is
+the reciprocal of the string length.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the mutation probability
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationProb(ctx, mutation_prob)
+PGAContext *ctx
+double mutation_prob
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMutationProb(ctx,0.001);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationRealValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationRealValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetMutationRealValue.3	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetMutationRealValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationRealValue \- Set multiplier to mutate PGA_DATATYPE_REAL
+strings with.  The use of this value depends on the type of mutation
+being used.  The default value is 0.1.  See the user guide for more details.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+val
+- the mutation value to use for Real mutation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationRealValue(ctx, val)
+PGAContext *ctx
+double val
+.fi
+.SH LOCATION
+mutation.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMutationRealValue(ctx,50.0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetPTournamentProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetPTournamentProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetPTournamentProb.3	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGASetPTournamentProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetPTournamentProb \- Specifies the probability that the string that wins
+a binary tournament will be selected.  This function will have no effect
+unless PGA_SELECT_PTOURNAMENT was specified as the type of selection to
+use with PGASetSelectType.  The default value is 0.6.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the probability of selecting the better string
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetPTournamentProb(ctx, ptournament_prob)
+PGAContext *ctx
+double ptournament_prob
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetPTournamentProb(ctx,0.8);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetRestartAlleleChangeProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetRestartAlleleChangeProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetRestartAlleleChangeProb.3	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetRestartAlleleChangeProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRestartAlleleChangeProb \- specifies the probability with which
+an allele will be mutated during a restart
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+prob
+- probability of mutation
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRestartAlleleChangeProb(ctx, prob)
+PGAContext *ctx
+double prob
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetRestartAlleleChangeProb(ctx, 0.5);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetRestartFlag.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetRestartFlag.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetRestartFlag.3	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetRestartFlag 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRestartFlag \- specifies whether the algorithm should employ
+the restart operator
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+val
+- boolean variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRestartFlag(ctx, val)
+PGAContext *ctx
+int val
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetRestartFlag(ctx, PGA_TRUE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetRestartFrequencyValue.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetRestartFrequencyValue.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetRestartFrequencyValue.3	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetRestartFrequencyValue 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRestartFrequencyValue \- specifies the number of iterations of no
+change in the best string after which the algorithm should restart
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+numiter
+- number of changeless iterations
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRestartFrequencyValue(ctx, numiter)
+PGAContext *ctx
+int numiter
+.fi
+.SH LOCATION
+restart.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetRestartFrequencyValue(ctx, 100);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetSelectType.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetSelectType.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetSelectType.3	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetSelectType 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetSelectType \- specify the type of selection to use. Valid choices
+are PGA_SELECT_PROPORTIONAL, PGA_SELECT_SUS, PGA_SELECT_TOURNAMENT, and
+PGA_SELECT_PTOURNAMENT for proportional, stochastic universal selection,
+tournament, and probabilistic tournament selection, respectively.  The
+default is PGA_SELECT_TOURNAMENT.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+select_type
+- symbolic constant to specify selection type
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetSelectType(ctx, select_type)
+PGAContext *ctx
+int select_type
+.fi
+.SH LOCATION
+select.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetSelectType(ctx, PGA_SELECT_SUS);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetUniformCrossoverProb.3
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetUniformCrossoverProb.3	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man3/PGASetUniformCrossoverProb.3	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetUniformCrossoverProb 3 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetUniformCrossoverProb \- Probability used in uniform crossover
+to specify that an allele value value be selected from a particular
+parent. The default is 0.6.  The crossover type must have been set
+to PGA_CROSSOVER_UNIFORM with PGASetCrossoverType for this function
+call to have any effect.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- the crossover probability
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetUniformCrossoverProb(ctx, uniform_cross_prob)
+PGAContext *ctx
+double uniform_cross_prob
+.fi
+.SH LOCATION
+cross.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetUniformCrossoverProb(ctx,0.9);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGABuildDatatype.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGABuildDatatype.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGABuildDatatype.4	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGABuildDatatype 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGABuildDatatype \- Build an MPI datatype for string p in population pop.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- index of an individual
+.PD 0
+.TP
+pop
+- symbolic constant of the population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+MPI_Datatype  PGABuildDatatype(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+MPI_Datatype dt;
+:
+dt = PGABuildDatatype(ctx, p, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAGetCommunicator.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAGetCommunicator.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAGetCommunicator.4	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGAGetCommunicator 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetCommunicator \- Returns the default communicator used when PGARun is
+called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+MPI_Comm  PGAGetCommunicator(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+MPI_Comm comm;
+PGAContext *ctx,
+double f(PGAContext *ctx, int p, int pop);
+:
+ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+PGASetUp(ctx);
+comm = PGAGetCommunicator(ctx);
+
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAGetNumProcs.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAGetNumProcs.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAGetNumProcs.4	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetNumProcs 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetNumProcs \- Returns the size of communicator comm in processes.  If
+comm is NULL or a sequential version of PGAPack is used, PGAGetNumProcs()
+returns 1.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable structure pointer
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetNumProcs(ctx, comm)
+PGAContext *ctx
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext  *ctx;
+:
+if (PGAGetNumProcs(ctx, MPI_COMM_WORLD) < 4) {
+printf("Too few processors for decent performance!\n");
+exit(-1);
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAGetRank.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAGetRank.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAGetRank.4	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGAGetRank 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRank \- Returns the rank of the processor in communicator comm.  If
+comm is NULL or a sequential version of PGAPack is used, PGAGetRank()
+returns 0.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable structure pointer
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRank(ctx, comm)
+PGAContext *ctx
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext  *ctx;
+int          rank;
+:
+rank = PGAGetRank(ctx, MPI_COMM_WORLD);
+if (rank == 0) {
+LetTheMasterDoSomething();
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAReceiveIndividual.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAReceiveIndividual.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGAReceiveIndividual.4	(revision 6168)
@@ -0,0 +1,63 @@
+.TH PGAReceiveIndividual 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAReceiveIndividual \- receive an individual from another process
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- contex variable
+.PD 0
+.TP
+p
+- index of an individual
+.PD 0
+.TP
+pop
+- symbolic constant of the population
+.PD 0
+.TP
+source
+- ID of the process from which to receive
+.PD 0
+.TP
+tag
+- MPI tag to look for
+.PD 0
+.TP
+status
+- pointer to an MPI status structure
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAReceiveIndividual(ctx, p, pop, source, tag, comm, status)
+PGAContext *ctx
+int p
+int pop
+int source
+int tag
+MPI_Comm comm
+MPI_Status *status
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Receive a string from the master process (rank == 0) with tag
+PGA_SR_STRINGTOEVAL, and place it into the first temporary location
+in PGA_NEWPOP.
+
+PGAContext *ctx;
+MPI_Comm    comm;
+MPI_Status  status;
+:
+PGAReceiveIndividual(ctx, PGA_TEMP1, PGA_NEWPOP, 0, PGA_SR_STRINGTOEVAL,
+comm, &status);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGASendIndividual.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGASendIndividual.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGASendIndividual.4	(revision 6168)
@@ -0,0 +1,57 @@
+.TH PGASendIndividual 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASendIndividual \- transmit an individual to another process
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- index of an individual
+.PD 0
+.TP
+pop
+- symbolic constant of the population
+.PD 0
+.TP
+dest
+- ID of the process where this is going
+.PD 0
+.TP
+tag
+- MPI tag to send with the individual
+.PD 0
+.TP
+comm
+- MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASendIndividual(ctx, p, pop, dest, tag, comm)
+PGAContext *ctx
+int p
+int pop
+int dest
+int tag
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+int p, dest;
+:
+dest = SelectAFreeProcessor();
+PGASendIndividual(ctx, p, PGA_NEWPOP, dest, PGA_SR_STRINGTOEVAL, comm);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGASendReceiveIndividual.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGASendReceiveIndividual.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGASendReceiveIndividual.4	(revision 6168)
@@ -0,0 +1,91 @@
+.TH PGASendReceiveIndividual 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASendReceiveIndividual \- Send an individual to a process, while receiving
+a different individual from a different process.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+send_p
+- index of string to send
+.PD 0
+.TP
+send_pop
+- symbolic constant of population to send from
+.PD 0
+.TP
+dest
+- destination process
+.PD 0
+.TP
+send_tag
+- tag to send with
+.PD 0
+.TP
+recv_p
+- index of string to receive
+.PD 0
+.TP
+recv_pop
+- symbolic constant of population to receive from
+.PD 0
+.TP
+source
+- process to receive from
+.PD 0
+.TP
+recv_tag
+- tag to receive with
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 0
+.TP
+status
+- pointer to the MPI status structure
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASendReceiveIndividual(ctx, send_p, send_pop, dest, send_tag, recv_p, recv_pop, source, recv_tag, comm, status)
+PGAContext *ctx
+int send_p
+int send_pop
+int dest
+int send_tag
+int recv_p
+int recv_pop
+int source
+int recv_tag
+MPI_Comm comm
+MPI_Status *status
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+A dedicated process is being used to perform an optimization algorithm
+on the strings.  Send a new string, s, to the process, while receiving an
+optimized string, r, from it.
+
+PGAContext *ctx;
+MPI_Comm    comm;
+MPI_Status  status;
+int  s, r;
+:
+PGASendReceiveIndividual(ctx, s, PGA_NEWPOP, 1, PGA_SR_STRINGTOMODIFY,
+r, PGA_NEWPOP, 1, PGA_SR_MODIFIEDSTRING,
+comm, &status);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGASetCommunicator.4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGASetCommunicator.4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man4/PGASetCommunicator.4	(revision 6168)
@@ -0,0 +1,44 @@
+.TH PGASetCommunicator 4 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetCommunicator \- Set the default communicator to use when PGARun is
+called.  Does not necessarily need to be the same as the number of
+processes in MPI_COMM_WORLD (which is the default).
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+comm
+- communicator to use
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetCommunicator(ctx, comm)
+PGAContext *ctx
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+MPI_Comm mycomm;
+PGAContext *ctx,
+double f(PGAContext *ctx, int p, int pop);
+:
+ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+PGASetCommunicator(ctx, mycomm);
+PGASetUp(ctx);
+PGARun(ctx, f);
+PGADestroy(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGACheckSum.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGACheckSum.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGACheckSum.5	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGACheckSum 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGACheckSum \- maps a string to a number to be used a verification check
+PGA_DATATYPE_USER is not supported.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant for the population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGACheckSum(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p, sum;
+:
+sum = PGACheckSum(ctx, p, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAGetBestIndex.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAGetBestIndex.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAGetBestIndex.5	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGAGetBestIndex 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetBestIndex \- returns the index of the string with the best evaluation
+function value in population pop
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop
+- symbolic constant of the population to find the best string in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetBestIndex(ctx, pop)
+PGAContext *ctx
+int pop
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int best;
+:
+best = PGAGetBestIndex(ctx,PGA_OLDPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAGetRandomSeed.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAGetRandomSeed.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAGetRandomSeed.5	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetRandomSeed 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetRandomSeed \- returns the integer to seed random numbers with
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetRandomSeed(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int seed;
+:
+seed = PGAGetRandomSeed(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAGetWorstIndex.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAGetWorstIndex.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAGetWorstIndex.5	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGAGetWorstIndex 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetWorstIndex \- returns the index of the string with the worst
+evaluation function value in population pop
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop
+- symbolic constant of the population to find the worst string in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetWorstIndex(ctx, pop)
+PGAContext *ctx
+int pop
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int worst;
+:
+worst = PGAGetWorstIndex(ctx,PGA_OLDPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAHammingDistance.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAHammingDistance.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAHammingDistance.5	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGAHammingDistance 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAHammingDistance \- Calculates the mean Hamming distance for a population
+of binary strings.  For all other data types returns a value of 0.0 and
+prints a warning message.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+popindex
+- symbolic constant of the population for which the
+Hamming distance is to be calculated
+Output:
+The mean Hamming distance in the population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAHammingDistance(ctx, popindex)
+PGAContext *ctx
+int popindex
+.fi
+.SH LOCATION
+hamming.c
+.SH EXAMPLE
+.nf
+:
+hd = PGAHammingDistance(ctx, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAMean.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAMean.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAMean.5	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGAMean 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAMean \- calculates the mean value of an array of elements
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+a
+- array to take the mean of
+.PD 0
+.TP
+n
+- number of elements in array a
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAMean(ctx, a, n)
+PGAContext *ctx
+double *a
+int n
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double a[100], mean;
+:
+mean = PGAMean(ctx, a, 100);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandom01.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandom01.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandom01.5	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGARandom01 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARandom01 \- generates a uniform random number on the interval [0,1)
+If the second argument is 0 it returns the next random number in the
+sequence.  Otherwise, the second argument is used as a new seed for the
+population
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+newseed
+- either 0 to get the next random number, or nonzero
+to reseed
+Outputs:
+A random number on the interval [0,1)
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGARandom01(ctx, newseed)
+PGAContext *ctx
+int newseed
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+double r;
+:
+r = PGARandom01(ctx,0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomFlip.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomFlip.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomFlip.5	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGARandomFlip 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARandomFlip \- flip a biased coin and return PGA_TRUE if the coin is
+a "winner."  Otherwise, return PGA_FALSE.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- biased probability (.5 is a fair coin)
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGARandomFlip(ctx, p)
+PGAContext *ctx
+double p
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+To return PGA_TRUE approximately seventy percent of the time, use
+
+PGAContext *ctx;
+int p;
+:
+PGARandomFlip(ctx, 0.7)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomGaussian.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomGaussian.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomGaussian.5	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGARandomGaussian 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARandomGaussian \- returns an approximation to a Gaussian random number
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+mean
+- the mean of the Gaussian distribution
+.PD 0
+.TP
+sigma
+- the standard deviation of the Gaussian distribution
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGARandomGaussian(ctx, mean, sigma)
+PGAContext *ctx
+double mean
+double sigma
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+To generate a Gaussian random number with mean 0.0 and standard
+deviation 1.0 use
+
+PGAContext *ctx;
+:
+r = PGARandomGaussian(ctx, 0.0, 1.0);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomInterval.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomInterval.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomInterval.5	(revision 6168)
@@ -0,0 +1,44 @@
+.TH PGARandomInterval 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARandomInterval \- returns a uniform random number on the specified
+interval
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+start
+- starting (integer) value of the interval
+.PD 0
+.TP
+end
+- ending   (integer) value of the interval
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGARandomInterval(ctx, start, end)
+PGAContext *ctx
+int start
+int end
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+Generate a value uniformly random from the interval [0,99]
+
+PGAContext *ctx;
+:
+PGARandomInterval(ctx, 0, 99);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomUniform.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomUniform.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARandomUniform.5	(revision 6168)
@@ -0,0 +1,45 @@
+.TH PGARandomUniform 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARandomUniform \- returns a uniform random number on the interval
+[start,end]
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+start
+- starting (double) value of the interval
+.PD 0
+.TP
+end
+- ending   (double) value of the interval
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGARandomUniform(ctx, start, end)
+PGAContext *ctx
+double start
+double end
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+Generate a uniform random number on the interval [-0.5, 1.5]
+
+PGAContext *ctx;
+double r;
+:
+r = PGARandomUniform(ctx, -0.5, 1.5);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARound.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARound.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGARound.5	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGARound 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARound \- Mathematically round a double to an integer, using 0.5 as the
+cutoff value.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+x
+- the number to be rounded
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGARound(ctx, x)
+PGAContext *ctx
+double x
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int y;
+y = PGARound(ctx, -78.6);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGASetRandomSeed.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGASetRandomSeed.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGASetRandomSeed.5	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetRandomSeed 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetRandomSeed \- set a seed for the random number generator.  The
+default is to use a random seed.  Specifying a seed exlicitly allows
+for reproducibility of runs.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+seed
+- seed  for the random number generator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetRandomSeed(ctx, seed)
+PGAContext *ctx
+int seed
+.fi
+.SH LOCATION
+random.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetRandomSeed(ctx,1);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAStddev.5
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAStddev.5	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man5/PGAStddev.5	(revision 6168)
@@ -0,0 +1,48 @@
+.TH PGAStddev 5 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAStddev \- calculates the standard deviation of an array of elements
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+a
+- array to take the standard deviation of
+.PD 0
+.TP
+n
+- number of elements in array a
+.PD 0
+.TP
+mean
+- the mean of the elements in array a
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAStddev(ctx, a, n, mean)
+PGAContext *ctx
+double *a
+int n
+double mean
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double a[100], mean, sigma;
+:
+mean  = PGAMean(ctx, a, 100);
+sigma = PGAStddev(ctx, a, 100, mean);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAError.6
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAError.6	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAError.6	(revision 6168)
@@ -0,0 +1,57 @@
+.TH PGAError 6 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAError \- reports error messages.  Prints out the message supplied, and
+the value of a piece of data.  Terminates if PGA_FATAL.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+msg
+- the error message to print
+.PD 0
+.TP
+level
+- PGA_WARNING or PGA_FATAL to indicate the error's severity
+.PD 0
+.TP
+datatype
+- the data type of the following argument
+.PD 0
+.TP
+data
+- the address of the data to be written out, cast as a void
+pointer
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAError(ctx, msg, level, datatype, data)
+PGAContext *ctx
+char *msg
+int level
+int datatype
+void *data
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int         val;
+:
+PGAError(ctx, "Some Non Fatal Error: val = ", PGA_WARNING, PGA_INT,
+(void *) &val);
+:
+PGAError(ctx, "A Fatal Error!", PGA_FATAL, PGA_VOID, NULL);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMaxMachineDoubleValue.6
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMaxMachineDoubleValue.6	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMaxMachineDoubleValue.6	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMaxMachineDoubleValue 6 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxMachineDoubleValue \- returns the largest double of the current
+machine
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMaxMachineDoubleValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double big;
+:
+big = PGAGetMaxMachineDoubleValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMaxMachineIntValue.6
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMaxMachineIntValue.6	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMaxMachineIntValue.6	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMaxMachineIntValue 6 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxMachineIntValue \- returns the largest integer of the current
+machine
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMaxMachineIntValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int intmax;
+:
+intmax = PGAGetMaxMachineIntValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMinMachineDoubleValue.6
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMinMachineDoubleValue.6	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMinMachineDoubleValue.6	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMinMachineDoubleValue 6 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxMachineDoubleValue \- returns the smallest double of the current
+machine
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+double  PGAGetMinMachineDoubleValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double small;
+:
+small = PGAGetMinMachineDoubleValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMinMachineIntValue.6
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMinMachineIntValue.6	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man6/PGAGetMinMachineIntValue.6	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetMinMachineIntValue 6 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxMachineIntValue \- returns the smallest integer of the current
+machine
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMinMachineIntValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int intmin;
+:
+intmin = PGAGetMinMachineIntValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAGetPrintFrequencyValue.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAGetPrintFrequencyValue.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAGetPrintFrequencyValue.7	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetPrintFrequencyValue 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetPrintFrequencyValue \- returns how often to print statistics reports
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetPrintFrequencyValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int freq;
+:
+freq = PGAGetPrintFrequencyValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintContextVariable.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintContextVariable.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintContextVariable.7	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGAPrintContextVariable 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAPrintContextVariable \- prints the value of all the fields in the context
+variable.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fp
+- file pointer to print the output to
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAPrintContextVariable(ctx, fp)
+PGAContext *ctx
+FILE *fp
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGAPrintContextVariable(ctx, stdout);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintIndividual.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintIndividual.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintIndividual.7	(revision 6168)
@@ -0,0 +1,48 @@
+.TH PGAPrintIndividual 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAPrintIndividual \- prints the allele values of a string and associated
+fields (evaluation, fitness, etc.) of a string
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fp
+- file pointer to print the output to
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population string p is in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAPrintIndividual(ctx, fp, p, pop)
+PGAContext *ctx
+FILE *fp
+int p
+int pop
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+:
+PGAPrintIndividual(ctx, stdout, p, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintPopulation.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintPopulation.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintPopulation.7	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGAPrintPopulation 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAPrintPopulation \- Calls PGAPrintIndividual to print each member of a
+population
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fp
+- file pointer to print the output to
+.PD 0
+.TP
+pop
+- symbolic constant of the population to be printed
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAPrintPopulation(ctx, fp, pop)
+PGAContext *ctx
+FILE *fp
+int pop
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGAPrintPopulation(ctx, stdout, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintReport.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintReport.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintReport.7	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGAPrintReport 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAPrintReport \- prints genetic algorithm statistics.  The statistics
+that are printed are determined by PGASetPrintOptions().
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fp
+- file pointer to print the output to
+.PD 0
+.TP
+pop
+- symbolic constant of the population whose statistics are printed
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAPrintReport(ctx, fp, pop)
+PGAContext *ctx
+FILE *fp
+int pop
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+:
+PGAPrintReport(ctx, stdout, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintString.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintString.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGAPrintString.7	(revision 6168)
@@ -0,0 +1,47 @@
+.TH PGAPrintString 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAPrintString \- write the allele values in a string to a file
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+fp
+- pointer to file to write the string to
+.PD 0
+.TP
+p
+- index of the string to write out
+.PD 0
+.TP
+pop
+- symbolic constant of the population string p is in
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAPrintString(ctx, file, p, pop)
+PGAContext *ctx
+FILE *file
+int p
+int pop
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int p;
+:
+PGAPrintString(ctx, stdout, p, PGA_OLDPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGASetPrintFrequencyValue.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGASetPrintFrequencyValue.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGASetPrintFrequencyValue.7	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetPrintFrequencyValue 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetPrintFrequencyValue \- Specifies the frequency with which genetic
+algorithm statistics are reported.  The default is every 10 GA iterations.
+Used only if PGARun() is used to run the GA.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+print_freq
+- the genetic algorithm population size to use
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetPrintFrequencyValue(ctx, print_freq)
+PGAContext *ctx
+int print_freq
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetPrintFrequencyValue(ctx,1);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGASetPrintOptions.7
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGASetPrintOptions.7	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man7/PGASetPrintOptions.7	(revision 6168)
@@ -0,0 +1,43 @@
+.TH PGASetPrintOptions 7 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetPrintOptions \- set flags to indicate what GA statistics should be
+printed whenever output is printed.  May be called more than once to
+specify different report options.  Valid choices are PGA_REPORT_AVERAGE,
+PGA_REPORT_OFFLINE, PGA_REPORT_ONLINE, PGA_REPORT_WORST, PGA_REPORT_HAMMING,
+and PGA_REPORT_STRING to specify offline analysis, online analysis, the
+worst string in the population, the Hamming distance of the population, and
+the actual allele values of the best string.  The best string is always
+printed. 
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+option
+- symbolic constant to specify a print option
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetPrintOptions(ctx, option)
+PGAContext *ctx
+int option
+.fi
+.SH LOCATION
+report.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetPrintOptions(ctx, PGA_REPORT_WORST);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAChange.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAChange.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAChange.8	(revision 6168)
@@ -0,0 +1,52 @@
+.TH PGAChange 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAChange \- Repeatedly apply mutation to a string (with an increasing
+mutation rate) until one or more mutations have occurred.  This routine is
+usually used with PGADuplicate to modify a duplicate string.  It is not
+intended to replace PGAMutation
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop
+- symbolic constant of the population containing string p
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAChange(ctx, p, pop)
+PGAContext *ctx
+int p
+int pop
+.fi
+.SH LOCATION
+duplcate.c
+.SH EXAMPLE
+.nf
+Example:
+Change any string in PGA_NEWPOP that is an exact copy of a string
+in PGA_OLDPOP.  To be complete, we should check the population again
+if any changes are made; for simplicity, we don't.
+
+PGAContext *ctx;
+int b, n;
+:
+n  = PGAGetPopsize(ctx);
+for (b=0; b<n; b++)
+if (PGADuplicate(ctx, b, PGA_NEWPOP, PGA_OLDPOP, n))
+PGAChange(ctx, b, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGACheckStoppingConditions.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGACheckStoppingConditions.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGACheckStoppingConditions.8	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGACheckStoppingConditions 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGACheckStoppingConditions \- returns boolean to indicate if the PGAPack
+termination conditions -- PGA_STOP_MAXITER, PGA_STOP_TOOSIMILAR, 
+PGA_STOP_NOCHANGE -- have been met.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGACheckStoppingConditions(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGACheckStoppingConditions(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGACopyIndividual.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGACopyIndividual.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGACopyIndividual.8	(revision 6168)
@@ -0,0 +1,53 @@
+.TH PGACopyIndividual 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGACopyIndividual \- copies string p1 in population pop1 to position p2 in
+population pop2
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p1
+- string to copy
+.PD 0
+.TP
+pop1
+- symbolic constant of population containing string p1
+.PD 0
+.TP
+p2
+- string to copy p1 to
+.PD 0
+.TP
+pop2
+- symbolic constant of population containing string p2
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGACopyIndividual(ctx, p1, pop1, p2, pop2)
+PGAContext *ctx
+int p1
+int pop1
+int p2
+int pop2
+.fi
+.SH LOCATION
+utility.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int i,j;
+:
+PGACopyIndividual(ctx, i, PGA_OLDPOP, j, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGACreate.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGACreate.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGACreate.8	(revision 6168)
@@ -0,0 +1,90 @@
+.TH PGACreate 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGACreate \- creates an uninitialized context variable.  The Fortran version
+of this function call contains only the last three arguments
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+argc
+- address of the count of the number of command line arguments.
+.PD 0
+.TP
+argv
+- array of command line arguments.
+.PD 0
+.TP
+datatype
+- the data type used for the strings.  Must be one of
+PGA_DATATYPE_BINARY, PGA_DATATYPE_CHARACTER,
+PGA_DATATYPE_INTEGER, PGA_DATATYPE_REAL, or PGA_DATATYPE_USER
+.PD 0
+.TP
+binary
+-valued, character-valued, integer-valued,
+.PD 0
+.TP
+real
+-valued, or a user-defined datatype, respectively.
+.PD 0
+.TP
+len
+- the string length (number of genes).
+.PD 0
+.TP
+maxormin
+- the direction of optimization. Must be one of PGA_MAXIMIZE or
+PGA_MINIMIZE for maximization or minimization, respectively.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+PGAContext * PGACreate(argc, argv, datatype, len, maxormin)
+int *argc
+char **argv
+int datatype
+int len
+int maxormin
+.fi
+.SH LOCATION
+create.c
+.SH EXAMPLE
+.nf
+Example:
+
+In C:
+void main(int argc, char **argv) {
+PGAContext *ctx;
+:
+ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+:
+//  Set options here
+:
+PGASetUp(ctx);
+:
+//  Run the GA here
+:
+PGADestroy(ctx);
+}
+
+In FORTRAN:
+integer ctx
+:
+ctx = PGACreate(PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE)
+:
+c       Set options here
+:
+call PGASetUp(ctx)
+:
+c       Run the GA here
+:
+call PGADestroy(ctx)
+stop
+end
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGADestroy.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGADestroy.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGADestroy.8	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGADestroy 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGADestroy \- deallocate memory for this instance of PGAPack, if this context
+initialized MPI, finalize MPI as well.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGADestroy(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+system.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGADestroy(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGADone.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGADone.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGADone.8	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGADone 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGADone \- Returns PGA_TRUE if the stopping conditions have been met,
+otherwise returns false.  Calls exactly one of the user defined C or
+fortran or system (PGACheckStoppingConditions) stopping condition functions.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGADone(ctx, comm)
+PGAContext *ctx
+MPI_Comm comm
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGADone(ctx, comm);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGADuplicate.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGADuplicate.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGADuplicate.8	(revision 6168)
@@ -0,0 +1,78 @@
+.TH PGADuplicate 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGADuplicate \- determines if a specified string is a duplicate of one
+already in an existing population
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+p
+- string index
+.PD 0
+.TP
+pop1
+- symbolic constant of the population containing string p
+.PD 0
+.TP
+pop2
+- symbolic constant of the (possibly partial) population containing
+strings to compare string p against
+.PD 0
+.TP
+n
+- the number of strings in pop2 to compare string p against
+.PD 0
+.TP
+n
+-1)
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGADuplicate(ctx, p, pop1, pop2, n)
+PGAContext *ctx
+int p
+int pop1
+int pop2
+int n
+.fi
+.SH LOCATION
+duplcate.c
+.SH EXAMPLE
+.nf
+0,...,n-1 in population pop2.  Otherwise returns PGA_FALSE
+
+Example:
+Change any string in PGA_NEWPOP that is an exact copy of a string
+in PGA_OLDPOP.
+
+PGAContext *ctx;
+int b, n;
+:
+n  = PGAGetPopsize(ctx);
+for (b=0; b<n; b++)
+if (PGADuplicate(ctx, b, PGA_NEWPOP, PGA_OLDPOP, n))
+PGAChange(ctx, b, PGA_NEWPOP);
+
+
+Check if the best string in population PGA_OLDPOP is a duplicate of any
+of the strings in the first half of population PGA_NEWPOP.
+
+PGAContext *ctx;
+int b, n;
+:
+b  = PGAGetBestIndex(ctx, PGA_OLDPOP);
+n  = PGAGetPopsize(ctx) / 2;
+if (PGADuplicate(ctx, b, PGA_OLDPOP, PGA_NEWPOP, n))
+printf("A duplicate!\n");
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetDataType.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetDataType.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetDataType.8	(revision 6168)
@@ -0,0 +1,49 @@
+.TH PGAGetDataType 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetDataType \- Returns the data type used by the given context.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetDataType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int datatype;
+:
+datatype = PGAGetDataType(ctx);
+switch (datatype) {
+case PGA_DATATYPE_BINARY:
+printf("Data Type = PGA_DATATYPE_BINARY\n");
+break;
+case PGA_DATATYPE_CHARACTER:
+printf("Data Type = PGA_DATATYPE_CHARACTER\n");
+break;
+case PGA_DATATYPE_INTEGER:
+printf("Data Type = PGA_DATATYPE_INTEGER\n");
+break;
+case PGA_DATATYPE_REAL:
+printf("Data Type = PGA_DATATYPE_REAL\n");
+break;
+case PGA_DATATYPE_USER:
+printf("Data Type = PGA_DATATYPE_USER\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetGAIterValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetGAIterValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetGAIterValue.8	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetGAIterValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetGAIterValue \- returns the number of the current genetic
+algorithm generation
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetGAIterValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int g;
+:
+g = PGAGetGAIterValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetMaxGAIterValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetMaxGAIterValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetMaxGAIterValue.8	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetMaxGAIterValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMaxGAIterValue \- Returns the maximum number of iterations to run
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMaxGAIterValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int maxiter;
+:
+maxiter = PGAGetMaxGAIterValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetMutationAndCrossoverFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetMutationAndCrossoverFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetMutationAndCrossoverFlag.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetMutationAndCrossoverFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationAndCrossoverFlag \- Returns true if mutation occurs only
+when crossover does.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+crossed
+-over strings.
+Otherwise, returns PGA_FALSE
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMutationAndCrossoverFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+int mutatetype;
+:
+mutatetype = PGAGetMutationAndCrossoverFlag(ctx);
+switch (mutatetype) {
+case PGA_TRUE:
+printf("Mutating strings only after crossover\n");
+break;
+case PGA_FALSE:
+printf("Only mutating strings not undergoing crossover\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetMutationOrCrossoverFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetMutationOrCrossoverFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetMutationOrCrossoverFlag.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetMutationOrCrossoverFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetMutationOrCrossoverFlag \- Returns true if mutation only occurs when
+crossover does not.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetMutationOrCrossoverFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int mutatetype;
+:
+mutatetype = PGAGetMutationOrCrossoverFlag(ctx);
+switch (mutatetype) {
+case PGA_TRUE:
+printf("Only mutating strings not undergoing crossover\n");
+break;
+case PGA_FALSE:
+printf("Mutating strings only after crossover\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetNoDuplicatesFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetNoDuplicatesFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetNoDuplicatesFlag.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetNoDuplicatesFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetNoDuplicatesFlag \- Returns PGA_TRUE if duplicates are not allowed,
+else returns PGA_FALSE.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetNoDuplicatesFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+duplcate.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int nodups;
+:
+nodups = PGAGetNoDuplicatesFlag(ctx);
+switch (nodups) {
+case PGA_TRUE:
+printf("Duplicate strings not allowed in population\n");
+break;
+case PGA_FALSE:
+printf("Duplicate strings allowed in population\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetNumReplaceValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetNumReplaceValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetNumReplaceValue.8	(revision 6168)
@@ -0,0 +1,33 @@
+.TH PGAGetNumReplaceValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetNumReplaceValue \- Returns the maximum number of strings to replace
+each generation.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetNumReplaceValue(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int numreplace;
+:
+numreplace = PGAGetNumReplaceValue(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetOptDirFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetOptDirFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetOptDirFlag.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGAGetOptDirFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetOptDirFlag \- Returns a symbolic constant that represents the
+direction of optimization
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetOptDirFlag(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int optdir;
+:
+optdir = PGAGetOptDirFlag(ctx);
+switch (optdir) {
+case PGA_MAXIMIZE:
+printf("Optimization direction = PGA_MAXIMIZE\n");
+break;
+case PGA_MINIMIZE:
+printf("Optimization direction = PGA_MINIMIZE\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetPopReplaceType.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetPopReplaceType.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetPopReplaceType.8	(revision 6168)
@@ -0,0 +1,44 @@
+.TH PGAGetPopReplaceType 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetPopReplaceType \- returns the symbolic constant used to determine
+which strings to copy from the old population to the new population.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetPopReplaceType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int popreplace;
+:
+popreplace = PGAGetPopReplaceType(ctx);
+switch (popreplace) {
+case PGA_POPREPL_BEST:
+printf("Replacement Strategy = PGA_POPREPL_BEST\n");
+break;
+case PGA_POPREPL_RANDOM_REP:
+printf("Replacement Strategy = PGA_POPREPL_RANDOM_REP\n");
+break;
+case PGA_POPREPL_RANDOM_NOREP:
+printf("Replacement Strategy = PGA_POPREPL_RANDOM_NOREP\n");
+break;
+}
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetPopSize.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetPopSize.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetPopSize.8	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetPopSize 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetPopSize \- Returns the population size
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetPopSize(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int popsize;
+:
+popsize = PGAGetPopSize(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetSortedPopIndex.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetSortedPopIndex.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetSortedPopIndex.8	(revision 6168)
@@ -0,0 +1,47 @@
+.TH PGAGetSortedPopIndex 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetSortedPopIndex \- returns a population string index from the array
+created by PGASortPop().
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+n
+- specified which index element is to be returned.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetSortedPopIndex(ctx, n)
+PGAContext *ctx
+int n
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+Copy the five best strings from the old population into the new
+population.  The rest of the new population will be created by
+recombination, and is not shown.
+
+PGAContext *ctx;
+int i,j;
+:
+PGASetPopReplaceType(ctx,PGA_POPREPL_BEST)
+PGASortPop(ctx, PGA_OLDPOP);
+for ( i=0; i < 5; i++) {
+j = PGAGetSortedPopIndex(ctx, i);
+PGACopyIndividual (ctx, j, PGA_OLDPOP, i, PGA_NEWPOP);
+:
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetStoppingRuleType.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetStoppingRuleType.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetStoppingRuleType.8	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGAGetStoppingRuleType 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetStoppingRuleType \- Returns a symbolic constant that defines the
+termination criteria.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetStoppingRuleType(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int stop;
+:
+stop = PGAGetStoppingRuleType(ctx);
+if (stop & PGA_STOP_MAXITER)
+printf("Stopping Rule = PGA_STOP_MAXITER\n");
+if (stop & PGA_STOP_NOCHANGE)
+printf("Stopping Rule = PGA_STOP_NOCHANGE\n");
+if (stop & PGA_STOP_TOOSIMILAR)
+printf("Stopping Rule = PGA_STOP_TOOSIMILAR\n");
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetStringLength.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetStringLength.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAGetStringLength.8	(revision 6168)
@@ -0,0 +1,32 @@
+.TH PGAGetStringLength 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAGetStringLength \- Returns the string length
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+int  PGAGetStringLength(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+int stringlen;
+:
+stringlen = PGAGetStringLength(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARun.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARun.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARun.8	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGARun 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARun \- Highest level routine to execute the genetic algorithm.  It
+is called after PGACreate and PGASetup have been called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+evaluate
+- a pointer to the user's evaluation function, which must
+have the calling sequence shown in the example.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGARun(ctx, ctx)
+PGAContext *ctx
+double (*evaluate)(PGAContext *c, int p, int pop)
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx,
+double f(PGAContext *ctx, int p, int pop);
+:
+ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+PGASetUp(ctx);
+PGARun(ctx, f);
+PGADestroy(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARunGM.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARunGM.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARunGM.8	(revision 6168)
@@ -0,0 +1,46 @@
+.TH PGARunGM 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARunGM \- High-level routine to execute the genetic algorithm using the
+global model.  It is called after PGACreate and PGASetup have been called.
+If a NULL communicator is given, a sequential execution method is used,
+otherwise, work is divided among the processors in the communicator.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+evaluate
+- a pointer to the user's evaluation function, which must
+have the calling sequence shown in the example.
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGARunGM(ctx, ctx, comm)
+PGAContext *ctx
+double (*f)(PGAContext *, int, int)
+MPI_Comm comm
+.fi
+.SH LOCATION
+parallel.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+double f(PGAContext *ctx, int p, int pop);
+:
+PGARunGM(ctx, f, MPI_COMM_WORLD);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARunMutationAndCrossover.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARunMutationAndCrossover.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARunMutationAndCrossover.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGARunMutationAndCrossover 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARunMutationAndCrossover \- Performs crossover and mutation from one
+population to create the next.  Assumes PGASelect has been called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+oldpop
+- symbolic constant of old population
+.PD 0
+.TP
+newpop
+- symbolic constant of new population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGARunMutationAndCrossover(ctx, oldpop, newpop)
+PGAContext *ctx
+int oldpop
+int newpop
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx,
+:
+PGARunMutationAndCrossover(ctx, PGA_OLDPOP, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARunMutationOrCrossover.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARunMutationOrCrossover.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGARunMutationOrCrossover.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGARunMutationOrCrossover 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGARunMutationOrCrossover \- Performs crossover or mutation (but not both)
+from one populationto create the next.  Assumes PGASelect has been called.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+oldpop
+- symbolic constant of old population
+.PD 0
+.TP
+newpop
+- symbolic constant of new population
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+side
+-effect.
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGARunMutationOrCrossover(ctx, oldpop, newpop)
+PGAContext *ctx
+int oldpop
+int newpop
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx,
+:
+PGARunMutationOrCrossover(ctx, PGA_OLDPOP, PGA_NEWPOP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMaxGAIterValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMaxGAIterValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMaxGAIterValue.8	(revision 6168)
@@ -0,0 +1,38 @@
+.TH PGASetMaxGAIterValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMaxGAIterValue \- specify the maximum number of iterations for the
+stopping rule PGA_STOP_MAXITER (which, by itself, is the default stopping
+rule and is always in effect).  The default value is 1000 iterations.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+maxiter
+- the maximum number of GA iterations to run before stopping
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMaxGAIterValue(ctx, maxiter)
+PGAContext *ctx
+int maxiter
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMaxGAIterValue(ctx,5000);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMaxNoChangeValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMaxNoChangeValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMaxNoChangeValue.8	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetMaxNoChangeValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMaxNoChangeValue \- specifiy maximum number of iterations of no change
+in the evaluation function value of the best string before stopping.  The
+default value is 50.  The stopping rule PGA_STOP_NOCHANGE must have been
+set by PGASetStoppingRuleType for this function call to have any effect.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+maxiter
+- the maximum number of GA iterations allowed with no change
+in the best evaluation function value.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMaxNoChangeValue(ctx, max_no_change)
+PGAContext *ctx
+int max_no_change
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMaxGAIterValue(ctx,5000);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMaxSimilarityValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMaxSimilarityValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMaxSimilarityValue.8	(revision 6168)
@@ -0,0 +1,41 @@
+.TH PGASetMaxSimilarityValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMaxSimilarityValue \- Specifiy the maximum percent of homogeneity of
+the population before stopping.  The similarity measure is the same
+evaluation function value.  The default value is 95 percent.  The stopping
+rule PGA_STOP_TOOSIMILAR must have been set by PGASetStoppingRuleType for
+this function call to have any effect.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+max_similarity
+- the maximum percent of the population that can share
+the same evaluation function value
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMaxSimilarityValue(ctx, max_similarity)
+PGAContext *ctx
+int max_similarity
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetMaxSimilarityValue(ctx,99);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMutationAndCrossoverFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMutationAndCrossoverFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMutationAndCrossoverFlag.8	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetMutationAndCrossoverFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationAndCrossoverFlag \- A boolean flag to indicate if
+recombination uses both crossover and mutation on selected strings
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+flag
+- PGA_TRUE (default) or PGA_FALSE
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationAndCrossoverFlag(ctx, flag)
+PGAContext *ctx
+int flag
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+Set the genetic algorithm to use both crossover and mutation when
+reproducing strings.
+
+PGAContext *ctx;
+:
+PGASetMutationAndCrossoverFlag(ctx,PGA_FALSE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMutationOrCrossoverFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMutationOrCrossoverFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetMutationOrCrossoverFlag.8	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetMutationOrCrossoverFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetMutationOrCrossoverFlag \- A boolean flag to indicate if recombination
+uses exactly one of crossover or mutation on selected strings.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+flag
+- PGA_TRUE (default) or PGA_FALSE
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetMutationOrCrossoverFlag(ctx, flag)
+PGAContext *ctx
+int flag
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+Set the genetic algorithm to use mutation only when crossover is
+not used.
+
+PGAContext *ctx;
+:
+PGASetMutationOrCrossoverFlag(ctx,PGA_FALSE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetNoDuplicatesFlag.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetNoDuplicatesFlag.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetNoDuplicatesFlag.8	(revision 6168)
@@ -0,0 +1,40 @@
+.TH PGASetNoDuplicatesFlag 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetNoDuplicatesFlag \- A boolean flag to indicate if duplicate strings are
+allowed in the population. Valid choices are PGA_TRUE and PGA_FALSE.  The
+default is PGA_FALSE -- allow duplicates.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+flag
+- PGA_TRUE or PGA_FALSE
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetNoDuplicatesFlag(ctx, no_dup)
+PGAContext *ctx
+int no_dup
+.fi
+.SH LOCATION
+duplcate.c
+.SH EXAMPLE
+.nf
+Example:
+Set the NoDuplicates flag to require that all strings are unique.
+
+PGAContext *ctx;
+:
+PGASetNoDuplicatesFlag(ctx,PGA_TRUE);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetNumReplaceValue.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetNumReplaceValue.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetNumReplaceValue.8	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetNumReplaceValue 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetNumReplaceValue \- specifies the number of new strings to create each
+generation.  The default is ten percent of the population size
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop_replace
+- the genetic algorithm population size to use
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetNumReplaceValue(ctx, pop_replace)
+PGAContext *ctx
+int pop_replace
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetNumReplaceValue(ctx, 35);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetPopReplaceType.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetPopReplaceType.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetPopReplaceType.8	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGASetPopReplaceType 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetPopReplaceType \- Choose method of sorting strings to copy from old
+population to new population.  Valid choices are PGA_POPREPL_BEST,
+PGA_POPREPL_RANDOM_NOREP, or PGA_POPREPL_RANDOM_REP for copying the best
+strings, or  random string, with or without replacement, respectively,
+from the old population into the new population. The default is
+PGA_POPREPL_BEST.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+pop_replace
+- symbolic constant to specify the population replacement
+strategy
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetPopReplaceType(ctx, pop_replace)
+PGAContext *ctx
+int pop_replace
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetPopReplaceType(ctx, PGA_POPREPL_RANDOM_NOREP);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetPopSize.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetPopSize.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetPopSize.8	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetPopSize 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetPopSize \- Specifies the size of the genetic algorithm population.
+The default population size is 100.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+popsize
+- the genetic algorithm population size to use
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetPopSize(ctx, popsize)
+PGAContext *ctx
+int popsize
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetPopSize(ctx, 200);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetStoppingRuleType.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetStoppingRuleType.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetStoppingRuleType.8	(revision 6168)
@@ -0,0 +1,42 @@
+.TH PGASetStoppingRuleType 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetStoppingRuleType \- specify a stopping criterion.  If called more than
+once the different stopping criterion are ORed together.  Valid choices
+are PGA_STOP_MAXITER, PGA_STOP_TOOSIMILAR, or PGA_STOP_NOCHANGE to
+specify iteration limit reached, population too similar, or no change in
+the best solution found in a given number of iterations, respectively.
+The default is to stop when a maximum iteration limit is reached (by
+default, 1000 iterations).
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+stoprule
+- symbolic constant to specify stopping rule
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetStoppingRuleType(ctx, stoprule)
+PGAContext *ctx
+int stoprule
+.fi
+.SH LOCATION
+stop.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetStoppingRuleType(ctx, PGA_STOP_TOOSIMILAR);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetUp.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetUp.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetUp.8	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetUp 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetUp \- set all uninitialized variables to default values and initialize
+some internal arrays.  Must be called after PGACreate() and before the GA
+is started.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetUp(ctx)
+PGAContext *ctx
+.fi
+.SH LOCATION
+create.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGACreate(ctx, ...);
+:
+//  Set options here
+:
+PGASetUp(ctx);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetUserFunction.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetUserFunction.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASetUserFunction.8	(revision 6168)
@@ -0,0 +1,61 @@
+.TH PGASetUserFunction 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetUserFunction \- specifies the name of a user-written function
+call to provide a specific GA capability (e.g., crossover,
+mutation, etc.).  This function MUST be used when using a non-native
+datatype and must be called once for each of:
+PGA_USERFUNCTION_CREATESTRING     -- String creation
+PGA_USERFUNCTION_MUTATION         -- Mutation
+PGA_USERFUNCTION_CROSSOVER        -- Crossover
+PGA_USERFUNCTION_PRINTSTRING      -- String Output
+PGA_USERFUNCTION_COPYSTRING       -- Duplication
+PGA_USERFUNCTION_DUPLICATE        -- Duplicate Checking
+PGA_USERFUNCTION_INITSTRING       -- Initialization
+PGA_USERFUNCTION_BUILDDATATYPE    -- MPI Datatype creation
+PGA_USERFUNCTION_STOPCOND         -- Stopping conditions
+PGA_USERFUNCTION_ENDOFGEN         -- Auxiliary functions at the end
+of each generation
+It MAY be called when using a native datatype to replace the built-in
+functions PGAPack has for that datatype (For example, if the Integer data
+type is used for a traveling salesperson problem, the user may want to
+provide their own custom crossover operator).  See the user guide and the
+examples in the examples directory for more details.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+constant
+- symbolic constant of the user function to set
+.PD 0
+.TP
+f
+- name of the function to use
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetUserFunction(ctx, constant, f)
+PGAContext *ctx
+int constant
+void *f
+.fi
+.SH LOCATION
+user.c
+.SH EXAMPLE
+.nf
+Example:
+void MyStringInit(PGAContext *, void *);
+PGAContext *ctx;
+:
+PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING, MyStringInit);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASortPop.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASortPop.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGASortPop.8	(revision 6168)
@@ -0,0 +1,57 @@
+.TH PGASortPop 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGASortPop \- Creates an (internal) array of indices according to one of
+three criteria.  If PGA_POPREPL_BEST is used (the default) the array is
+sorted from most fit to least fit.  If PGA_POPREPL_RANDOM_REP is
+used the indices in the array are selected randomly with replacement.
+If PGA_POPREPL_RANDOM_NOREP is used the indices in the array are selected
+randomly without replacement.  The function PGASetPopReplaceType() is used
+to specify which strategy is used.  The indices of the sorted population
+members may then be accessed from the internal array via
+PGAGetSortedPopIndex().  This routine is typically used during population
+replacement.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+popindex
+- symbolic constant of the population from which to create
+the srted array.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASortPop(ctx, pop)
+PGAContext *ctx
+int pop
+.fi
+.SH LOCATION
+pop.c
+.SH EXAMPLE
+.nf
+Example:
+Copy the five best strings from the old population into the new
+population.  The rest of the new population will be created by
+recombination, and is not shown.
+
+PGAContext *ctx;
+int i,j;
+:
+PGASetPopReplaceType(ctx,PGA_POPREPL_BEST)
+:
+PGASortPop(ctx, PGA_OLDPOP);
+for ( i=0; i < 5; i++) {
+j = PGAGetSortedPopIndex(ctx, i);
+PGACopyIndividual (ctx, j, PGA_OLDPOP, i, PGA_NEWPOP);
+:
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAUpdateGeneration.8
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAUpdateGeneration.8	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/man8/PGAUpdateGeneration.8	(revision 6168)
@@ -0,0 +1,39 @@
+.TH PGAUpdateGeneration 8 "05/01/95" " " "PGAPack"
+.SH NAME
+PGAUpdateGeneration \- updates internal data structures for the next
+genetic algorithm iteration, and checks if the termination conditions, both
+user and PGAPack, have been met.  This routine must be called by both
+master and slave processes at the end of each GA generation.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+comm
+- an MPI communicator
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAUpdateGeneration(ctx, comm)
+PGAContext *ctx
+MPI_Comm comm
+.fi
+.SH LOCATION
+pga.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGAUpdateGeneration(ctx, MPI_COMM_WORLD);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/mandesc
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/mandesc	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/mandesc	(revision 6168)
@@ -0,0 +1,11 @@
+no default sections
+1(1)Fitness & Evaluation
+2(2)Initialization
+3(3)Operators
+4(4)Parallel
+5(5)Utility
+6(6)System
+7(7)Reporting
+8(8)Generation
+l(l)Debugging
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGAClearDebugLevel.l
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGAClearDebugLevel.l	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGAClearDebugLevel.l	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGAClearDebugLevel l "05/01/95" " " "PGAPack"
+.SH NAME
+PGAClearDebugLevel \- Turn off a debul level.  Only valid if PGAPack
+was compiled to include debugging calls.  See the user guide for details.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+level
+- the debug level to set to PGA_FALSE.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAClearDebugLevel(ctx, level)
+PGAContext *ctx
+int level
+.fi
+.SH LOCATION
+debug.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGAClearDebugLevel(ctx, 70)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGAClearDebugLevelByName.l
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGAClearDebugLevelByName.l	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGAClearDebugLevelByName.l	(revision 6168)
@@ -0,0 +1,35 @@
+.TH PGAClearDebugLevelByName l "05/01/95" " " "PGAPack"
+.SH NAME
+PGAClearDebugLevelByName \- Turn off debugging of the named function.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+funcname
+- name of the function to turn on debugging output
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGAClearDebugLevelByName(ctx, funcname)
+PGAContext *ctx
+char *funcname
+.fi
+.SH LOCATION
+debug.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+:
+PGAClearDebugLevelByName(ctx, "PGAGetBinaryAllele");
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGADebugPrint.l
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGADebugPrint.l	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGADebugPrint.l	(revision 6168)
@@ -0,0 +1,68 @@
+.TH PGADebugPrint l "05/01/95" " " "PGAPack"
+.SH NAME
+PGADebugPrint \- Write debugging information
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+level
+- a symbolic constant that maps to the type of print requested
+(e.g., an entry or exit print).  Valid values are
+PGA_DEBUG_ENTERED, PGA_DEBUG_EXIT, PGA_DEBUG_MALLOC,
+PGA_DEBUG_PRINTVAR, PGA_DEBUG_SEND, and PGA_DEBUG_RECV.
+.PD 0
+.TP
+funcname
+- the name of the function that called this routine
+.PD 0
+.TP
+msg
+- message to print
+.PD 0
+.TP
+datatype
+- a symbolic constant that maps to the data type of the
+parameter data.  Valid choices are PGA_INT, PGA_DOUBLE,
+PGA_CHAR and PGA_VOID (no data).
+.PD 0
+.TP
+data
+- a pointer, whose contents will be interpreted based upon the
+datatype parameter (or NULL, if PGA_VOID).
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGADebugPrint(ctx, level, funcname, msg, datatype, data)
+PGAContext *ctx
+int level
+char *funcname
+char *msg
+int datatype
+void *data
+.fi
+.SH LOCATION
+debug.c
+.SH EXAMPLE
+.nf
+Example:
+If the debugging level includes printing variables (level 82), print the
+value of the integer variable num as a debugging tool in the routine
+Add2Nums
+
+PGAContext *ctx;
+int num;
+:
+PGADebugPrint(ctx, PGA_DEBUG_PRINTVAR, "Add2Nums", "num = ", PGA_INT,
+(void *) &num);
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGASetDebugLevel.l
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGASetDebugLevel.l	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGASetDebugLevel.l	(revision 6168)
@@ -0,0 +1,37 @@
+.TH PGASetDebugLevel l "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetDebugLevel \- Turn on a debug level.  Only valid if PGAPack
+was compiled to include debugging calls.  See the user guide for details.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+level
+- the debug level to set to PGA_TRUE.
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetDebugLevel(ctx, level)
+PGAContext *ctx
+int level
+.fi
+.SH LOCATION
+debug.c
+.SH EXAMPLE
+.nf
+Example:
+PGAContext *ctx;
+:
+PGASetDebugLevel(ctx, 70)
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGASetDebugLevelByName.l
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGASetDebugLevelByName.l	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/man/manl/PGASetDebugLevelByName.l	(revision 6168)
@@ -0,0 +1,35 @@
+.TH PGASetDebugLevelByName l "05/01/95" " " "PGAPack"
+.SH NAME
+PGASetDebugLevelByName \- Turn on debugging of the named function.
+.SH INPUT PARAMETERS
+.PD 0
+.TP
+ctx
+- context variable
+.PD 0
+.TP
+funcname
+- name of the function to turn on debugging output
+.PD 1
+.SH OUTPUT PARAMETERS
+.PD 0
+.TP
+none
+
+.PD 1
+.SH SYNOPSIS
+.nf
+#include "pgapack.h"
+void  PGASetDebugLevelByName(ctx, funcname)
+PGAContext *ctx
+char *funcname
+.fi
+.SH LOCATION
+debug.c
+.SH EXAMPLE
+.nf
+PGAContext *ctx;
+:
+PGASetDebugLevelByName(ctx, "PGAGetBinaryAllele");
+
+.fi
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/Makefile.in	(revision 6168)
@@ -0,0 +1,104 @@
+CC          = @CC@
+PRECFLAGS   = @CFLAGS@
+CPPFLAGS    = @CPPFLAGS@
+HEADERS     = @HEADERS@
+PGA_LIB_DIR = @PGA_LIB_DIR@
+PGA_LIB     = @PGA_LIB@
+RM          = @RM@
+OBJS        = @OBJS@
+SHELL       = @SHELL@
+RANLIB      = @RANLIB@
+
+CFLAGS      = -o $@ -c $(PRECFLAGS)
+COMPILE.c   = $(CC) $(CFLAGS) $(CPPFLAGS)
+
+########################################################
+#                    The Target                        #
+########################################################
+
+$(PGA_LIB_DIR)/lib$(PGA_LIB).a: $(OBJS)
+	ar ruv $(PGA_LIB_DIR)/lib$(PGA_LIB).a $(OBJS)
+	$(RANLIB) $(PGA_LIB_DIR)/lib$(PGA_LIB).a
+
+########################################################
+#                    The Source code                   #
+########################################################
+
+$(PGA_LIB_DIR)/binary.o: binary.c $(HEADERS)
+	$(COMPILE.c) binary.c
+
+$(PGA_LIB_DIR)/char.o: char.c $(HEADERS)
+	$(COMPILE.c) char.c
+
+$(PGA_LIB_DIR)/cmdline.o: cmdline.c $(HEADERS)
+	$(COMPILE.c) cmdline.c
+
+$(PGA_LIB_DIR)/create.o: create.c $(HEADERS)
+	$(COMPILE.c) create.c
+
+$(PGA_LIB_DIR)/cross.o: cross.c $(HEADERS)
+	$(COMPILE.c) cross.c
+
+$(PGA_LIB_DIR)/debug.o: debug.c $(HEADERS)
+	$(COMPILE.c) debug.c
+
+$(PGA_LIB_DIR)/duplcate.o: duplcate.c $(HEADERS)
+	$(COMPILE.c) duplcate.c
+
+$(PGA_LIB_DIR)/evaluate.o: evaluate.c $(HEADERS)
+	$(COMPILE.c) evaluate.c
+
+$(PGA_LIB_DIR)/fitness.o: fitness.c $(HEADERS)
+	$(COMPILE.c) fitness.c
+
+@FORTWRAP@
+
+$(PGA_LIB_DIR)/hamming.o: hamming.c $(HEADERS)
+	$(COMPILE.c) hamming.c
+
+$(PGA_LIB_DIR)/heap.o: heap.c $(HEADERS)
+	$(COMPILE.c) heap.c
+
+$(PGA_LIB_DIR)/integer.o: integer.c $(HEADERS)
+	$(COMPILE.c) integer.c
+
+@MPICOMP@
+
+$(PGA_LIB_DIR)/mutation.o: mutation.c $(HEADERS)
+	$(COMPILE.c) mutation.c
+
+$(PGA_LIB_DIR)/parallel.o: parallel.c $(HEADERS)
+	$(COMPILE.c) parallel.c
+
+$(PGA_LIB_DIR)/pga.o: pga.c $(HEADERS)
+	$(COMPILE.c) pga.c
+
+$(PGA_LIB_DIR)/pop.o: pop.c $(HEADERS)
+	$(COMPILE.c) pop.c
+
+$(PGA_LIB_DIR)/random.o: random.c $(HEADERS)
+	$(COMPILE.c) random.c
+
+$(PGA_LIB_DIR)/real.o: real.c $(HEADERS)
+	$(COMPILE.c) real.c
+
+$(PGA_LIB_DIR)/report.o: report.c $(HEADERS)
+	$(COMPILE.c) report.c
+
+$(PGA_LIB_DIR)/restart.o: restart.c $(HEADERS)
+	$(COMPILE.c) restart.c
+
+$(PGA_LIB_DIR)/select.o: select.c $(HEADERS)
+	$(COMPILE.c) select.c
+
+$(PGA_LIB_DIR)/stop.o: stop.c $(HEADERS)
+	$(COMPILE.c) stop.c
+
+$(PGA_LIB_DIR)/system.o: system.c $(HEADERS)
+	$(COMPILE.c) system.c
+
+$(PGA_LIB_DIR)/user.o: user.c $(HEADERS)
+	$(COMPILE.c) user.c
+
+$(PGA_LIB_DIR)/utility.o: utility.c $(HEADERS)
+	$(COMPILE.c) utility.c
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/binary.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/binary.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/binary.c	(revision 6168)
@@ -0,0 +1,897 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     File: binary.c: This file contains routines specific to the binary
+*                     datatype.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGASetBinaryAllele - sets a binary allele to the specified value.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+      val - binary value (either 1 or 0) to set the allele to
+
+   Outputs:
+      The allele is changed by side-effect.
+
+   Example:
+      Copies the alleles from member p in PGA_OLDPOP to member q PGA_NEWPOP.
+      Assumes strings are of the same length.
+
+      PGAContext *ctx;
+      int p, q, i;
+      :
+      for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+          PGASetBinaryAllele(ctx, q, PGA_NEWPOP, i,
+                             PGAGetBinaryAllele(ctx, p, PGA_OLDPOP, i))
+
+****************************************************************************U*/
+void PGASetBinaryAllele ( PGAContext *ctx, int p, int pop, int i, int val )
+{
+    int windex;        /* index of the computer word allele i is in      */
+    int bix;           /* bit position in word chrom[windex] of allele i */
+    PGAIndividual *ind;
+    PGABinary *chrom;
+
+    PGADebugEntered("PGASetBinaryAllele");
+    PGACheckDataType("PGAGetBinaryAllele", PGA_DATATYPE_BINARY);
+
+    INDEX( windex,bix,i,WL );
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGABinary *)ind->chrom;
+    if ( val == 0 )
+        UNSET( bix, chrom[windex] );
+    else
+        SET( bix, chrom[windex] );
+
+    PGADebugExited("PGASetBinaryAllele");
+}
+
+/*U****************************************************************************
+   PGAGetBinaryAllele - returns the value of a (binary) allele in a
+   PGA_DATATYPE_BINARY string
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+
+   Outputs:
+      The value of the ith allele of string p in population pop.
+
+   Example:
+      Copies the alleles from member p in PGA_OLDPOP to member q PGA_NEWPOP.
+      Assumes the strings are of the same length.
+
+      PGAContext *ctx;
+      int p, q, i;
+      :
+      for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+          PGASetBinaryAllele(ctx, q, PGA_NEWPOP, i,
+                             PGAGetBinaryAllele(ctx, p, PGA_OLDPOP, i))
+
+****************************************************************************U*/
+int PGAGetBinaryAllele ( PGAContext *ctx, int p, int pop, int i )
+{
+
+    int windex;        /* index of the computer word allele i is in      */
+    int bix;           /* bit position in word chrom[windex] of allele i */
+    PGAIndividual *ind;
+    PGABinary *chrom;
+
+    PGADebugEntered("PGAGetBinaryAllele");
+    PGACheckDataType("PGAGetBinaryAllele", PGA_DATATYPE_BINARY);
+
+    INDEX( windex,bix,i,WL );
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGABinary *)ind->chrom;
+
+    PGADebugExited("PGAGetBinaryAllele");
+    return( BIT(bix, chrom[windex]) != 0 );
+}
+
+/*U****************************************************************************
+   PGASetBinaryInitProb - specify the probability of initializing an allele to
+   "1" when creating a PGA_DATATYPE_BINARY string.  The default value is 0.5.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+      p   - the binary initialization probability
+
+   Outputs:
+      None
+
+   Example:
+      Set approximately 1 percent of all binary alleles to "1" when randomly
+      initializing the population.
+
+      PGAContext *ctx;
+      :
+      PGASetBinaryInitProb(ctx, 0.01);
+
+****************************************************************************U*/
+void PGASetBinaryInitProb ( PGAContext *ctx, double probability )
+{
+    PGADebugEntered("PGASetBinaryInitProb");
+    PGAFailIfSetUp("PGASetBinaryInitProb");
+    PGACheckDataType("PGASetBinaryInitProb", PGA_DATATYPE_BINARY);
+
+     if ( (probability <= 1.0) && (probability >= 0.0) )
+          ctx->init.BinaryProbability = probability;
+     else
+          PGAError( ctx, "PGASetBinaryInitProb: Invalid value of probability:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &probability );
+
+    PGADebugExited("PGASetBinaryInitProb");
+}
+
+/*U***************************************************************************
+   PGAGetBinaryInitProb - Returns the probability that an allele will be
+   randomly initialized to "1" in a PGA_DATATYPE_BINARY string.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The probability that a bit will be randomly initialized to one
+
+   Example:
+      PGAContext *ctx;
+      double prob;
+      :
+      prob = PGAGetBinaryInitProb(ctx);
+
+***************************************************************************U*/
+double PGAGetBinaryInitProb (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetBinaryInitProb");
+    PGAFailIfNotSetUp("PGAGetBinaryInitProb");
+    PGACheckDataType("PGAGetBinaryInitProb", PGA_DATATYPE_BINARY);
+
+    PGADebugExited("PGAGetBinaryInitProb");
+    return(ctx->init.BinaryProbability);
+}
+
+
+/*I****************************************************************************
+   PGABinaryCreateString - Allocate a PGA_DATATYPE_BINARY string for member
+   p of population pop.  If initflag is PGA_TRUE, randomly initialize all
+   alleles, otherwise clear all alleles.
+
+   Inputs:
+      ctx      - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      initflag - a flag, if set, randomly initialize, else clear alleles
+
+   Outputs:
+      Member p in population pop is allocated and initialized.
+
+   Example:
+      Allocates and clears alleles for all strings in PGA_NEWPOP
+
+      PGAContext *ctx;
+      int p;
+      :
+      for (p=PGAGetPopSize(ctx)-1; p>=0; p--)
+          PGABinaryCreateString( ctx, p, PGA_NEWPOP, PGA_FALSE );
+
+****************************************************************************I*/
+void PGABinaryCreateString(PGAContext *ctx, int p, int pop, int initflag)
+{
+    int i, fp;
+    PGABinary *s;
+    PGAIndividual *new = PGAGetIndividual(ctx, p, pop);
+    
+    PGADebugEntered("PGABinaryCreateString");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGABinaryCreateString",
+		  "initflag = ", PGA_INT, (void *) &initflag );
+    
+    new->chrom = (void *)malloc(ctx->ga.tw * sizeof(PGABinary));
+    if (new->chrom == NULL)
+	PGAError(ctx, "PGABinaryCreateString: No room to allocate "
+		 "new->chrom", PGA_FATAL, PGA_VOID, NULL);
+    
+    s = (PGABinary *)new->chrom;
+    if (initflag)
+	if (ctx->fops.InitString) {
+	    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+            (*ctx->fops.InitString)(&ctx, &fp, &pop);
+	} else {
+	    (*ctx->cops.InitString)(ctx, p, pop);
+	}
+    else
+	for ( i=0; i<ctx->ga.tw; i++ )
+	    s[i] = 0;
+    
+    PGADebugExited("PGABinaryCreateString");
+}
+
+/*I****************************************************************************
+   PGABinaryMutation - randomly mutates a bit with a specified probability.
+   This routine is called from PGAMutation.
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant for the population string p is in
+      mr  - probability of mutating (toggling) a bit
+
+   Outputs:
+      Returns the number of mutations
+
+   Example:
+      Mutates string p in population PGA_NEWPOP with a probability of 0.001
+      for each bit.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGABinaryMutation( ctx, p, PGA_NEWPOP, .001 );
+
+****************************************************************************I*/
+int PGABinaryMutation( PGAContext *ctx, int p, int pop, double mr )
+{
+     int i,wi;
+     int count = 0;
+     PGABinary *c;
+
+     PGADebugEntered("PGABinaryMutation");
+
+     c = (PGABinary *)PGAGetIndividual(ctx, p, pop)->chrom;
+     for(wi=0; wi<ctx->ga.fw; wi++)
+          for(i=0; i<WL; ++i)
+               if ( PGARandomFlip(ctx, mr) )
+               {
+                    TOGGLE(i,c[wi]);
+                    count++;
+               }
+
+     /* clean up the partial word if eb > 0 */
+     if (ctx->ga.eb > 0 )
+          for(i=0;i<ctx->ga.eb;++i)
+               if ( PGARandomFlip(ctx, mr) )
+               {
+                    TOGGLE(i,c[ctx->ga.fw]);
+                    count++;
+               }
+
+    PGADebugExited("PGABinaryMutation");
+    return(count);
+
+}
+
+/*I****************************************************************************
+   PGABinaryOneptCrossover - performs one-point crossover on two parent strings
+   to create two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population containing c1 and c2
+
+   Outputs:
+      None.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGABinaryOneptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2)
+{
+    PGABinary *parent1 = (PGABinary *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    PGABinary *parent2 = (PGABinary *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+    PGABinary *child1  = (PGABinary *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+    PGABinary *child2  = (PGABinary *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+
+    /*
+      If the bits are numbered from 0 as follows:
+
+      b   b   b   b   b   b   b   b          b  b
+      0   1   2   3   4   5   6   7         30 31
+
+      Then if the cross site is bit 5 (which is the sixth bit by our
+      numbering scheme) we would get
+
+      o   o   o   o   o   n   n   n          n  n
+      0   1   2   3   4   5   6   7         30 31
+
+      where o indicates the original bit and n is a new bit from the crossover
+      operator.
+    */
+
+    PGABinary mask;
+    int windex;   /* index of the word the crossover bit position is in */
+    int bix;      /* bit position to perform crossover (mod WL)         */
+    int i;
+    int xsite;
+
+    PGADebugEntered("PGABinaryOneptCrossover");
+
+    xsite = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+
+    INDEX(windex,bix,xsite,WL);
+
+    for(i=0;i<windex;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    mask = ~0;
+    mask = mask >> bix;
+
+    child1[windex] = (~mask & parent1[windex])|(mask & parent2[windex]);
+    child2[windex] = (~mask & parent2[windex])|(mask & parent1[windex]);
+
+    for(i=windex+1;i<ctx->ga.tw;i++) {
+        child1[i] = parent2[i];
+        child2[i] = parent1[i];
+    }
+
+    PGADebugExited("PGABinaryOneptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGABinaryTwoptCrossover - performs two-point crossover on two parent strings
+   producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      None.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGABinaryTwoptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryTwoptCrossover(PGAContext *ctx, int p1, int p2, int pop1, int c1,
+                             int c2, int pop2)
+{
+    PGABinary *parent1 = (PGABinary *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    PGABinary *parent2 = (PGABinary *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+    PGABinary *child1  = (PGABinary *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+    PGABinary *child2  = (PGABinary *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+
+    PGABinary mask, mask1, mask2;
+    int windex1, windex2;
+    int bix1, bix2;
+    int i;
+    int xsite1, xsite2;
+    int temp;
+
+    PGADebugEntered("PGABinaryTwoptCrossover");
+
+    /* pick two cross sites such that xsite2 > xsite1 */
+    xsite1 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    xsite2 = xsite1;
+    while ( xsite2 == xsite1 )
+        xsite2 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    if ( xsite1 > xsite2 ) {
+        temp   = xsite1;
+        xsite1 = xsite2;
+        xsite2 = temp;
+    }
+
+    INDEX(windex1,bix1,xsite1,WL);
+    INDEX(windex2,bix2,xsite2,WL);
+
+    if ( windex1 == windex2 ) {     /* both cross sites in the same word */
+
+        for(i=0;i<windex1;i++) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+
+        mask1 = ~0;
+        if (bix1 == 0)
+             mask1 = 0;
+        else
+             mask1 = mask1 << (WL-bix1);
+        mask2 = ~0;
+        mask2 = mask2 >> bix2;
+        mask  = mask1 | mask2;
+
+        child1[windex1] = (mask & parent1[windex1])|(~mask & parent2[windex1]);
+        child2[windex1] = (mask & parent2[windex1])|(~mask & parent1[windex1]);
+
+        for(i=windex1+1;i<ctx->ga.tw;i++) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+    }
+    else {                          /* cross sites in different words */
+
+        for(i=0;i<windex1;i++) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+
+        mask = ~0;
+        mask = mask >> bix1;
+
+        child1[windex1] = (~mask & parent1[windex1])|(mask & parent2[windex1]);
+        child2[windex1] = (~mask & parent2[windex1])|(mask & parent1[windex1]);
+
+        for(i=windex1+1; i<windex2; i++) {
+            child1[i] = parent2[i];
+            child2[i] = parent1[i];
+        }
+
+        mask = ~0;
+        mask = mask >> bix2;
+
+        child1[windex2] = (mask & parent1[windex2])|(~mask & parent2[windex2]);
+        child2[windex2] = (mask & parent2[windex2])|(~mask & parent1[windex2]);
+
+        for(i=windex2+1; i<ctx->ga.tw; i++) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+    }
+
+    PGADebugExited("PGABinaryTwoptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGABinaryUniformCrossover - performs uniform crossover on two parent strings
+   producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      None.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGABinaryUniformCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                               int c1, int c2, int pop2)
+{
+     PGABinary *parent1 = (PGABinary *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     PGABinary *parent2 = (PGABinary *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+     PGABinary *child1  = (PGABinary *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+     PGABinary *child2  = (PGABinary *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+     PGABinary mask;
+     int j,wi;
+
+    PGADebugEntered("PGABinaryUniformCrossover");
+
+    for(wi=0;wi<ctx->ga.tw;wi++) {
+        if ( parent1[wi] == parent2[wi] ) {
+            child1[wi] = parent1[wi];
+            child2[wi] = parent2[wi];
+        }
+        else {
+            mask = 0;
+            for (j=0;j<WL;j++)
+                if(PGARandomFlip(ctx, ctx->ga.UniformCrossProb))
+                    SET(j,mask);
+            child1[wi] = (mask & parent1[wi])|(~mask & parent2[wi]);
+            child2[wi] = (mask & parent2[wi])|(~mask & parent1[wi]);
+        }
+    }
+
+    PGADebugExited("PGABinaryUniformCrossover");
+}
+
+/*I****************************************************************************
+   PGABinaryPrintString - writes a bit string to a file.
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to file to write bit string to
+      p   - index of the string to write out
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+      None.
+
+   Example:
+      Write string s to stdout.
+
+      PGAContext *ctx;
+      int s;
+      :
+      PGABinaryPrintString( ctx, stdout, s, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryPrintString( PGAContext *ctx, FILE *fp, int p, int pop )
+{
+     PGABinary *c = (PGABinary *)PGAGetIndividual(ctx, p, pop)->chrom;
+     int i;
+
+     PGADebugEntered("PGABinaryPrintString");
+
+     for( i=0; i<ctx->ga.fw; i++ ) {
+          fprintf(fp,"[ ");
+          PGABinaryPrint( ctx, fp, (c+i), WL );
+          fprintf(fp," ]\n");
+     }
+     if ( ctx->ga.eb > 0 ) {
+          fprintf(fp,"[ ");
+          PGABinaryPrint( ctx, fp, (c+ctx->ga.fw), ctx->ga.eb );
+          fprintf(fp," ]");
+     }
+
+     PGADebugExited("PGABinaryPrintString");
+}
+
+/*I****************************************************************************
+   PGABinaryCopyString - Copy one bit string to another
+
+   Inputs:
+      ctx  - context variable
+      p1   - string to copy
+      pop1 - symbolic constant of population containing string p1
+      p2   - string to copy p1 to
+      pop2 - symbolic constant of population containing string p2
+
+   Outputs:
+      None.
+
+   Example:
+      Copy bit string x to y (both are implicitly assumed to have the same
+      length).
+
+      PGAContext *ctx;
+      int x, y
+      :
+      PGABinaryCopyString ( ctx, x, PGA_OLDPOP, y, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+    PGABinary *source = (PGABinary *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    PGABinary *dest   = (PGABinary *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+    int i;
+
+    PGADebugEntered("PGABinaryCopyString");
+
+    for (i = ctx->ga.tw-1; i>=0; i--)
+        dest[i] = source[i];
+
+    PGADebugExited("PGABinaryCopyString");
+}
+
+/*I****************************************************************************
+   PGABinaryDuplicate - Returns true if bit string a is a duplicate of bit
+   string b, else returns false.
+
+   Inputs:
+      ctx  - context variable
+      p1   - string index of the first string to compare
+      pop1 - symbolic constant of the population string p1 is in
+      p2   - string index of the second string to compare
+      pop2 - symbolic constant of the population string p2 is in
+
+   Outputs:
+      Returns true/false if strings are duplicates
+
+   Example:
+      Compare bit string x with y and print a message if they are the same.
+
+      PGAContext *ctx;
+      int x, y;
+      :
+      if ( PGABinaryDuplicate( ctx, x, PGA_NEWPOP, y, PGA_NEWPOP ) )
+          printf("strings are duplicates\n");
+
+****************************************************************************I*/
+int PGABinaryDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+     PGABinary *a = (PGABinary *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     PGABinary *b = (PGABinary *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+     int wi;
+
+     PGADebugEntered("PGABinaryDuplicate");
+
+     wi = ctx->ga.tw-1;
+     if (a[0] == b[0])
+         for (; (wi>0) && (a[wi] == b[wi]); wi--);
+
+     PGADebugExited("PGABinaryDuplicate");
+
+     return((wi==0) ? PGA_TRUE : PGA_FALSE);
+}
+
+/*I****************************************************************************
+   PGABinaryInitString - randomly initialize a string of type PGABinary
+
+   Inputs:
+      ctx - context variable
+      p   - index of string to randomly initialize
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGABinaryInitString ( ctx, p, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGABinaryInitString(PGAContext *ctx, int p, int pop)
+{
+     PGABinary *c = (PGABinary *)PGAGetIndividual(ctx, p, pop)->chrom;
+     int i;
+     int windex;        /* index of the computer word allele i is in      */
+     int bix;           /* binary position in word chrom[windex] of allele i */
+
+     PGADebugEntered("PGABinaryInitString");
+
+     for (i = 0; i < ctx->ga.tw; i++)
+          c[i] = 0;
+     for (i = 0; i < ctx->ga.StringLen; i++)
+     {
+          INDEX(windex,bix,i,WL);
+          if ( PGARandomFlip(ctx, ctx->init.BinaryProbability) )
+               SET  ( bix, c[windex] );
+     }
+
+     PGADebugExited("PGABinaryInitString");
+}
+
+
+/*I****************************************************************************
+  PGABinaryBuildDatatype - Build an MPI_Datatype for a binary string
+  datatype.
+
+  Inputs:
+      ctx  - context variable
+      p    - index of the string to build a datatype from
+      pop  - symbolic constant of the population string p is in
+
+  Outputs:
+      MPI_Datatype.
+
+  Example:
+      Called only by MPI routines.  Not for user consumption.
+
+****************************************************************************I*/
+MPI_Datatype PGABinaryBuildDatatype(PGAContext *ctx, int p, int pop)
+{
+
+     int            counts[4];      /* Number of elements in each
+                                       block (array of integer) */
+     MPI_Aint       displs[4];      /* byte displacement of each
+                                       block (array of integer) */
+     MPI_Datatype   types[4];       /* type of elements in each block (array
+                                       of handles to datatype objects) */
+     MPI_Datatype   individualtype; /* new datatype (handle) */
+     PGAIndividual *traveller;      /* address of individual in question */
+
+     PGADebugEntered("PGABinaryBuildDatatype");
+
+     traveller = PGAGetIndividual(ctx, p, pop);
+     MPI_Address(&traveller->evalfunc, &displs[0]);
+     counts[0] = 1;
+     types[0]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->fitness, &displs[1]);
+     counts[1] = 1;
+     types[1]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->evaluptodate, &displs[2]);
+     counts[2] = 1;
+     types[2]  = MPI_INT;
+
+     MPI_Address(traveller->chrom, &displs[3]);
+     counts[3] = ctx->ga.tw;
+     types[3]  = MPI_UNSIGNED_LONG;
+
+     MPI_Type_struct(4, counts, displs, types, &individualtype);
+     MPI_Type_commit(&individualtype);
+
+     PGADebugExited("PGABinaryBuildDatatype");
+
+     return (individualtype);
+}
+
+
+/*I****************************************************************************
+   PGABinaryHammingDistance - Returns the Hamming distance between two strings
+
+   Inputs:
+      ctx - context variable
+      s1  - the first string to compare
+      s2  - the second string to compare
+
+   Outputs:
+      The Hamming distance between two strings
+
+   Example:
+      Returns the Hamming distance between bit strings x and y.
+
+      PGAContext *ctx;
+      PGABinary *x, *y;
+      int d;
+      :
+      d = PGABinaryHammingDistance( ctx, x, y );
+
+****************************************************************************I*/
+int PGABinaryHammingDistance ( PGAContext *ctx, PGABinary *s1, PGABinary *s2 )
+{
+    int        j, wi, distance;
+    PGABinary  t1, t2, mask;
+
+    PGADebugEntered("PGABinaryHammingDistance");
+
+    distance = 0;
+    for(wi=0; wi<ctx->ga.tw; wi++)  /* step through each word in the string */
+        if ( s1[wi] != s2[wi] ) {   /* if equal, no bits are different      */
+            /*fprintf(stdout,"s1[wi] = %x, s2[wi] = %x\n",s1[wi],s2[wi]);*/
+            mask = 1;
+            for(j=0;j<WL;++j) {     /* not equal, compare all bits          */
+                /* Build bit mask in position j. Mask bit from each         */
+                /* string into t1 and t2 and test if bits are the same      */
+                t1 = s1[wi] & mask;
+                t2 = s2[wi] & mask;
+                /*fprintf(stdout,"mask = %u, t1 = %u, t2 = %u, j = %d, wi = %d\n",mask,t1,t2,j,wi);*/
+                if ( t1 != t2 )
+                    distance++;
+                mask <<= 1;          /* shift mask 1 position */
+            }
+        }
+
+    PGADebugExited("PGABinaryHammingDistance");
+
+    return(distance);
+}
+
+/*I****************************************************************************
+   PGABinaryPrint - writes a bit string to a file.  Puts the binary
+   representation of the bit string pointed to by chrom into a character
+   string and writes that out. Assumes the maximum length of string to
+   print is WL, and that all bits are in the same word.
+
+   Inputs:
+      ctx   - context variable
+      fp    - file to write the bit string to
+      chrom - pointer to the bit string to write
+      nb    - number of bits to write out
+
+   Outputs:
+
+   Example:
+      Internal function.  Use PGABinaryPrintString to print a binary string.
+
+****************************************************************************I*/
+void PGABinaryPrint( PGAContext *ctx, FILE *fp, PGABinary *chrom, int nb )
+{
+     char *s, string[WL+1];
+     PGABinary mask;
+     int i;
+
+     PGADebugEntered("PGABinaryPrint");
+
+     mask = ((PGABinary)1)<<(WL-1);
+     s = string;
+     for(i=0; i<nb; mask>>=1,i++)              /* mask each bit and set the  */
+          *s++ = (mask&(*chrom)?'1':'0');      /* appropriate character      */
+     *s=0;                                     /* string terminator          */
+     fprintf(fp, "%s", string);                /* print out character string */
+
+     PGADebugExited("PGABinaryPrint");
+}
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/char.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/char.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/char.c	(revision 6168)
@@ -0,0 +1,715 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+ *     FILE: char.c: This file contains the routines specific to the
+ *                    character datatype.
+ *
+ *     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+ *              Brian P. Walenz
+ *****************************************************************************/
+
+#include <pgapack.h>
+
+/*U****************************************************************************
+   PGASetCharacterAllele - sets the value of an allele in a
+   PGA_DATATYPE_CHARACTER string.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+      val - character value to set the allele to
+
+   Outputs:
+      The allele is changed by side-effect.
+
+   Example:
+      Copies the alleles from member p in PGA_OLDPOP to member q in PGA_NEWPOP.
+      Assumes the strings are of the same length.
+      
+      PGAContext *ctx;
+      int p, q, i;
+      :
+      for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+          PGASetCharacterAllele(ctx, q, PGA_NEWPOP, i,
+                                PGAGetCharacterAllele(ctx, p, PGA_OLDPOP, i))
+
+****************************************************************************U*/
+void PGASetCharacterAllele (PGAContext *ctx, int p, int pop, int i, char value)
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGASetCharacterAllele");
+    PGACheckDataType("PGASetCharacterAllele", PGA_DATATYPE_CHARACTER);
+ 
+    ind = PGAGetIndividual ( ctx, p, pop );
+    ((PGACharacter *)ind->chrom)[i] = value;
+    
+    PGADebugExited("PGASetCharacterAllele");
+}
+
+/*U****************************************************************************
+   PGAGetCharacterAllele: returns the value of character allele in a
+   PGA_DATATYPE_CHARACTER string
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+
+   Outputs:
+      The value of allele i in string p.
+
+   Example:
+      Copies the alleles from member p in PGA_OLDPOP to member q in PGA_NEWPOP.
+      Assumes the strings are of the same length.
+
+      PGAContext *ctx;
+      int p, q, i;
+      :
+      for (i=PGAGetStringLength(ctx, p, PGA_NEWPOP)-1; i>=0; i--)
+          PGASetCharacterAllele(ctx, q, PGA_NEWPOP, i,
+                                PGAGetCharacterAllele(ctx, p, PGA_OLDPOP, i))
+
+****************************************************************************U*/
+char PGAGetCharacterAllele (PGAContext *ctx, int p, int pop, int i)
+{
+     PGAIndividual *ind;
+
+    PGADebugEntered("PGAGetCharacterAllele");
+     PGACheckDataType("PGAGetCharacterAllele", PGA_DATATYPE_CHARACTER);
+
+     ind = PGAGetIndividual ( ctx, p, pop );
+
+    PGADebugExited("PGAGetCharacterAllele");
+
+     return (((PGACharacter *)ind->chrom)[i]);
+}
+
+
+/*U****************************************************************************
+  PGASetCharacterInitType - sets a flag to specify whether the character
+  strings will be exclusively lowercase, exclusively uppercase, or a mixure
+  of both cases.  Legal flags are PGA_CINIT_UPPER, PGA_CINIT_LOWER, and
+  PGA_CINIT_MIXED.  Default is PGA_CINIT_LOWER.
+
+  Category: Initialization
+
+  Inputs:
+     ctx   - context variable
+     value - symbolic constant specifying which case
+
+  Outputs:
+
+  Example:
+     Set program to generate exclusively uppercase letters
+
+     PGAContext *ctx;
+     :
+     PGASetCharacterInitType(ctx, PGA_CINIT_UPPER);
+
+****************************************************************************U*/
+void PGASetCharacterInitType(PGAContext *ctx, int value)
+{
+    PGADebugEntered("PGASetCharacterInitType");
+     PGACheckDataType("PGASetCharacterInitType", PGA_DATATYPE_CHARACTER);
+
+     switch (value)
+     {
+     case PGA_CINIT_UPPER:
+     case PGA_CINIT_LOWER:
+     case PGA_CINIT_MIXED:
+          ctx->init.CharacterType = value;
+          break;
+     default:
+          PGAError(ctx, "PGASetCharacterInitType: Invalid case type:",
+                   PGA_FATAL, PGA_INT, (void *)&value);
+          break;
+     }
+
+    PGADebugExited("PGASetCharacterInitType");
+}
+
+/*I****************************************************************************
+   PGACharacterCreateString - Allocate memory for a string of type PGACharacter
+
+   Inputs:
+      ctx      - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      initflag - A true/false flag used in conjunction with ctx->ga.RandomInit
+                 to initialize the string either randomly or set to zero
+
+   Outputs:
+      Member p in population pop is allocated and initialized.
+
+   Example:
+      Allocates memory and assigns the address of the allocated memory to
+      the string field (ind->chrom) of the individual.  Additionally, the
+      string is initialized to zero.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGACharacterCreateString( ctx, p, PGA_NEWPOP, PGA_FALSE );
+
+****************************************************************************I*/
+void PGACharacterCreateString (PGAContext *ctx, int p, int pop, int InitFlag)
+{
+    int i, fp;
+    PGACharacter *c;
+    PGAIndividual *new = PGAGetIndividual(ctx, p, pop);
+    
+    PGADebugEntered("PGACharacterCreateString");
+    
+    new->chrom = (void *)malloc(ctx->ga.StringLen * sizeof(PGACharacter));
+    if (new->chrom == NULL)
+	PGAError(ctx, "PGACharacterCreateString: No room to allocate "
+		 "new->chrom", PGA_FATAL, PGA_VOID, NULL);
+    c = (PGACharacter *)new->chrom;
+    if (InitFlag)
+	if (ctx->fops.InitString) {
+	    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+	    (*ctx->fops.InitString)(&ctx, &fp, &pop);
+	} else {
+	    (*ctx->cops.InitString)(ctx, p, pop);
+	}
+    else
+	for (i=0; i<ctx->ga.StringLen; i++)
+	    c[i] = 0;
+    
+    PGADebugExited("PGACharacterCreateString");
+}
+
+/*I****************************************************************************
+   PGACharacterMutation - randomly mutates a character-valued gene with a
+   specified probability. This routine is called from PGAMutation.
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population string p is in
+      mr  - probability of mutating an character-valued gene
+
+   Outputs:
+      Returns the number of mutations
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      int NumMutations;
+      :
+      NumMutations = PGACharacterMutation(ctx, p, PGA_NEWPOP, 0.01);
+****************************************************************************I*/
+int PGACharacterMutation( PGAContext *ctx, int p, int pop, double mr )
+{
+     PGACharacter *c;
+     int i, j;
+     int count = 0;
+
+    PGADebugEntered("PGACharacterMutation");
+
+     c = (PGACharacter *)PGAGetIndividual(ctx, p, pop)->chrom;
+     for(i=0; i<ctx->ga.StringLen; i++)
+          if ( PGARandomFlip(ctx, mr) )       /* randomly choose an allele   */
+          {
+               switch (ctx->init.CharacterType)
+               {
+               case PGA_CINIT_LOWER:
+                    c[i] = PGARandomInterval(ctx, 'a', 'z');
+                    break;
+               case PGA_CINIT_UPPER:
+                    c[i] = PGARandomInterval(ctx, 'A', 'Z');
+                    break;
+               case PGA_CINIT_MIXED:
+                    j = PGARandomInterval(ctx, 0, 51);
+                    if (j < 26)
+                         c[i] = 'A' + j;
+                    else
+                         c[i] = 'a' + j - 26;
+                    break;
+               }
+               count++;
+          }
+
+    PGADebugExited("PGACharacterMutation");
+
+     return (count);
+}
+
+/*I****************************************************************************
+   PGACharacterOneptCrossover - performs one-point crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGACharacterOneptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2)
+{
+     PGACharacter *parent1, *parent2, *child1, *child2;
+     int i, xsite;
+
+    PGADebugEntered("PGACharacterOneptCrossover");
+
+     parent1 = (PGACharacter *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     parent2 = (PGACharacter *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+     child1  = (PGACharacter *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+     child2  = (PGACharacter *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+     xsite = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+
+     for(i=0;i<xsite;i++)
+     {
+          child1[i] = parent1[i];
+          child2[i] = parent2[i];
+     }
+
+     for(i=xsite;i<ctx->ga.StringLen;i++)
+     {
+          child1[i] = parent2[i];
+          child2[i] = parent1[i];
+     }
+
+    PGADebugExited("PGACharacterOneptCrossover");
+}
+
+/*I****************************************************************************
+   PGACharacterTwoptCrossover - performs two-point crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGACharacterTwoptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2)
+{
+     PGACharacter *parent1, *parent2, *child1, *child2;
+     int i, temp, xsite1, xsite2;
+
+    PGADebugEntered("PGACharacterTwoptCrossover");
+
+     parent1 = (PGACharacter *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     parent2 = (PGACharacter *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+     child1  = (PGACharacter *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+     child2  = (PGACharacter *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+     /* pick two cross sites such that xsite2 > xsite1 */
+     xsite1 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+     xsite2 = xsite1;
+     while ( xsite2 == xsite1 )
+          xsite2 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+     if ( xsite1 > xsite2 )
+     {
+          temp   = xsite1;
+          xsite1 = xsite2;
+          xsite2 = temp;
+     }
+
+     for(i=0;i<xsite1;i++)
+     {
+          child1[i] = parent1[i];
+          child2[i] = parent2[i];
+     }
+
+     for(i=xsite1;i<xsite2;i++)
+     {
+          child1[i] = parent2[i];
+          child2[i] = parent1[i];
+     }
+
+     for(i=xsite2;i<ctx->ga.StringLen;i++)
+     {
+          child1[i] = parent1[i];
+          child2[i] = parent2[i];
+     }
+
+    PGADebugExited("PGACharacterTwoptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGACharacterUniformCrossover - performs uniform crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGACharacterUniformCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2)
+{
+     PGACharacter *parent1, *parent2, *child1, *child2;
+     int i;
+
+    PGADebugEntered("PGACharacterUniformCrossover");
+
+     parent1 = (PGACharacter *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     parent2 = (PGACharacter *)PGAGetIndividual(ctx, p2, pop1)->chrom;
+     child1  = (PGACharacter *)PGAGetIndividual(ctx, c1, pop2)->chrom;
+     child2  = (PGACharacter *)PGAGetIndividual(ctx, c2, pop2)->chrom;
+
+     for(i=0;i<ctx->ga.StringLen;i++)
+          if ( parent1[i] == parent2[i] )
+          {
+               child1[i] = parent1[i];
+               child2[i] = parent2[i];
+          }
+          else if (PGARandomFlip(ctx, ctx->ga.UniformCrossProb))
+          {
+               child1[i] = parent1[i];
+               child2[i] = parent2[i];
+          }
+          else
+          {
+               child1[i] = parent2[i];
+               child2[i] = parent1[i];
+          }
+
+    PGADebugExited("PGACharacterUniformCrossover");
+}
+
+/*I****************************************************************************
+   PGACharacterPrintString - writes a character-valued string to a file.
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to file to write the string to
+      p   - index of the string to write out
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+      Write string s to stdout.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGACharacterPrintString( ctx, stdout, p, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterPrintString ( PGAContext *ctx, FILE *fp, int p, int pop)
+{
+    PGACharacter *c;
+    int           i, pos, len;
+
+    PGADebugEntered("PGACharacterPrintString");
+
+    c = (PGACharacter *)PGAGetIndividual(ctx, p, pop)->chrom;
+    len = PGAGetStringLength(ctx);
+
+    pos = 0;
+    while (len > 0) {
+      fprintf(fp, "#%5d: [", pos);
+      for (i=0; i<50 && len>0; i++,len--,c++)
+	fputc(*c, fp);
+      pos+=50;
+      fprintf(fp, "]\n");
+    }
+    fprintf(fp, "\n");
+    
+    PGADebugExited("PGACharacterPrintString");
+}
+
+/*I****************************************************************************
+   PGACharacterCopyString - Copy one character-valued string to another
+   Assumes the strings are of the same length.
+
+   Inputs:
+      ctx - context variable
+      p1   - string to copy
+      pop1 - symbolic constant of population containing string p1
+      p2   - string to copy p1 to
+      pop2 - symbolic constant of population containing string p2
+
+   Outputs:
+
+   Example:
+      Copy character string x to y (both are implicitly assumed to be the same
+      length)
+
+      PGAContext *ctx;
+      int x, y;
+      :
+      PGACharacterCopyString ( ctx, x, PGA_OLDPOP, y, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterCopyString (PGAContext *ctx, int p1, int pop1, int p2,
+                             int pop2)
+{
+     void *source, *dest;
+     int len;
+
+    PGADebugEntered("PGACharacterCopyString");
+
+     source = PGAGetIndividual(ctx, p1, pop1)->chrom;
+     dest   = PGAGetIndividual(ctx, p2, pop2)->chrom;
+     len    = PGAGetStringLength(ctx);
+     memcpy(dest, source, len * sizeof(PGACharacter));
+
+    PGADebugExited("PGACharacterCopyString");
+}
+
+/*I****************************************************************************
+   PGACharacterDuplicate - Returns true if string p1 in pop1 is a dublicate
+   of string p2 in pop2, else returns false.
+   Assumes the strings are the same length.
+
+   Inputs:
+      ctx - context variable
+      p1   - string index of the first string to compare
+      pop1 - symbolic constant of the population string p1 is in
+      p2   - string index of the second string to compare
+      pop2 - symbolic constant of the population string p2 is in
+
+   Outputs:
+      Returns true if strings are duplicates.
+
+   Example:
+      Compare string x with y to see if they are duplicates
+
+      PGAContext *ctx;
+      int x, y;
+      :
+      if ( PGACharacterDuplicate( ctx, x, PGA_NEWPOP, y, PGA_NEWPOP ) )
+          printf("strings are duplicates\n");
+
+****************************************************************************I*/
+int PGACharacterDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+     void *a, *b;
+     int len;
+
+    PGADebugEntered("PGACharacterDuplicate");
+
+     a = PGAGetIndividual(ctx, p1, pop1)->chrom;
+     b = PGAGetIndividual(ctx, p2, pop2)->chrom;
+     len = PGAGetStringLength(ctx);
+
+    PGADebugExited("PGACharacterDuplicate");
+
+     return (!memcmp(a, b, len * sizeof(PGACharacter)));
+}
+
+/*I****************************************************************************
+   PGACharacterInitString - randomly initialize a string of type PGACharacter
+
+   Inputs:
+      ctx   - context variable
+      p   - index of string to randomly initialize
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGACharacterInitString ( ctx, p, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGACharacterInitString(PGAContext *ctx, int p, int pop)
+{
+     int len, i, j;
+     PGACharacter *c;
+
+    PGADebugEntered("PGACharacterInitString");
+
+     len = ctx->ga.StringLen;
+     c = (PGACharacter *)PGAGetIndividual(ctx, p, pop)->chrom;
+     switch (ctx->init.CharacterType)
+     {
+     case PGA_CINIT_LOWER:
+          for (i = 0; i < len; i++)
+               c[i] = PGARandomInterval(ctx, 'a', 'z');
+          break;
+     case PGA_CINIT_UPPER:
+          for (i = 0; i < len; i++)
+               c[i] = PGARandomInterval(ctx, 'A', 'Z');
+          break;
+     case PGA_CINIT_MIXED:
+          for (i = 0; i < len; i++)
+          {
+               j = PGARandomInterval(ctx, 0, 51);
+               if (j < 26)
+                    c[i] = 'A' + j;
+               else
+                    c[i] = 'a' + j - 26;
+          }
+          break;
+     }
+    PGADebugExited("PGACharacterInitString");
+}
+
+/*I****************************************************************************
+  PGACharacterBuildDatatype - Build an MPI_Datatype for a character string.
+
+  Inputs:
+      ctx  - context variable
+      p    - index of the string to build a datatype from
+      pop  - symbolic constant of the population string p is in
+
+  Outputs:
+      MPI_Datatype
+
+  Example:
+      Called only by MPI routines.  Not for user consumption.
+
+****************************************************************************I*/
+MPI_Datatype PGACharacterBuildDatatype(PGAContext *ctx, int p, int pop)
+{
+
+     int            counts[4];      /* Number of elements in each
+                                       block (array of integer) */
+     MPI_Aint       displs[4];      /* byte displacement of each
+                                       block (array of integer) */
+     MPI_Datatype   types[4];       /* type of elements in each block (array
+                                       of handles to datatype objects) */
+     MPI_Datatype   individualtype; /* new datatype (handle) */
+     PGAIndividual *traveller;      /* address of individual in question */
+
+    PGADebugEntered("PGACharacterBuildDatatype");
+
+     traveller = PGAGetIndividual(ctx, p, pop);
+     MPI_Address(&traveller->evalfunc, &displs[0]);
+     counts[0] = 1;
+     types[0]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->fitness, &displs[1]);
+     counts[1] = 1;
+     types[1]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->evaluptodate, &displs[2]);
+     counts[2] = 1;
+     types[2]  = MPI_INT;
+
+     MPI_Address(traveller->chrom, &displs[3]);
+     counts[3] = ctx->ga.StringLen;
+     types[3]  = MPI_CHAR;
+
+     MPI_Type_struct(4, counts, displs, types, &individualtype);
+     MPI_Type_commit(&individualtype);
+
+    PGADebugExited("PGACharacterBuildDatatype");
+
+     return (individualtype);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/cmdline.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/cmdline.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/cmdline.c	(revision 6168)
@@ -0,0 +1,280 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: cmdline.c: This file contains routines needed to parse the
+*                      command line.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+extern char PGAProgram[100];
+#define bad_arg(a)    ( ((a)==NULL) || ((*(a)) == '-') )
+
+/*I****************************************************************************
+   PGAReadCmdLin - Code that looks at the arguments, recognizes any that
+   are for PGAPack, uses the arguments, and removes them from the command
+   line args.
+
+   Inputs:
+      ctx  - context variable
+      argc - address of the count of the number of command line argumen
+      argv - array of command line arguments
+
+   Outputs:
+      None
+
+   Example:
+      void main(int argc, char **argv) {
+          PGAContext *ctx;
+          :
+          PGAReadCmdLine(ctx, &argc, argv);
+      }
+
+****************************************************************************I*/
+void PGAReadCmdLine( PGAContext *ctx, int *argc, char **argv )
+{
+     int c;
+     char *s, **a;
+
+     
+     /* Put name of called program (according to the args) into PGAProgram */
+     s = (char *)  strrchr(*argv, '/');
+     if (s)
+          strcpy(PGAProgram, s + 1);
+     else
+          strcpy(PGAProgram, *argv);
+
+     /* Set all command line flags (except procgroup) to their defaults */
+
+     /* Move to last argument, so that we can go backwards. */
+     a = &argv[*argc - 1];
+
+     /*
+      * Loop backwards through arguments, catching the ones that start with
+      * '-'.  Backwards is more efficient when you are stripping things out.
+      */
+     for (c = (*argc); c > 1; c--, a--)
+     {
+          if (**a != '-')
+               continue;
+
+          if ( !strcmp(*a, "-pgadbg") || !strcmp(*a, "-pgadebug") )
+          {
+               if bad_arg(a[1])
+                    PGAUsage(ctx);
+#if OPTIMIZE==0
+               PGAParseDebugArg( ctx, a[1] );
+#endif
+               PGAStripArgs(a, argc, &c, 2);
+               continue;
+          }
+
+          if ( !strcmp(*a, "-pgaversion") )
+          {
+               PGAStripArgs(a, argc, &c, 1);
+               PGAPrintVersionNumber( ctx );
+	       PGADestroy(ctx);
+	       exit(-1);
+          }
+
+          if (!strcmp(*a, "-pgahelp") )
+          {
+               if (a[1] == NULL)
+                    PGAUsage(ctx);
+               else
+                    if (!strcmp(a[1], "debug"))
+                         PGAPrintDebugOptions(ctx);
+                    else
+                         fprintf(stderr, "Invalid option following"
+                                 "-pgahelp.\n");
+          }
+     }
+}
+
+#if OPTIMIZE==0
+/*I****************************************************************************
+   PGAParseDebugArg - routine to parse debug command line options, and set
+   the appropriate debug level (via PGASetDebugLevel).
+
+   Inputs:
+      ctx - context variable
+      st  - debug command line options
+
+   Outputs:
+      None
+
+   Example:
+      Internal function.  Called only by PGAReadCmdLine.
+
+****************************************************************************I*/
+void PGAParseDebugArg(PGAContext *ctx, char *st)
+{
+     int           num2index = 0, num1index = 0, index, num1 = 0, num2 = 0, x;
+     unsigned long length = strlen(st);
+     char          range = 0, num1ch[4], num2ch[4];
+
+
+     length--;
+     for(index=0; index <= length; index++)
+     {
+          if (!isdigit(st[index]) && st[index] != ',' && st[index] != '-')
+               PGAError(ctx, "PGASetDebugLevel: Invalid Debug Value:",
+                        PGA_FATAL, PGA_CHAR, (void *) st);
+          if (st[index] == '-')
+          {
+               range = 1;
+               num1ch[num1index] = '\0';
+               num1 = atoi(num1ch);
+               if (num1 < 0 || num1 > PGA_DEBUG_MAXFLAGS)
+                    PGAError(ctx,
+                             "PGASetDebugLevel: Lower Limit Out of Range:",
+                             PGA_FATAL, PGA_INT, (void *) &num1);
+               num1index = 0;
+          }
+          else
+          {
+               if (isdigit(st[index]))
+                    if (range)
+                         num2ch[num2index++] = st[index];
+                    else
+                         num1ch[num1index++] = st[index];
+               if (st[index] == ',' || index == length)
+               {
+                    if (range)
+                    {
+                         num2ch[num2index] = '\0';
+                         num2 = atoi(num2ch);
+                         if (num2 < 0 || num2 > PGA_DEBUG_MAXFLAGS)
+                              PGAError(ctx,
+                                       "PGASetDebugLevel: Upper Limit Out of"
+                                       " Range:",
+                                       PGA_FATAL, PGA_INT, (void *) &num2);
+                         if (num1 <= num2)
+                         {
+                              for (x = num1; x <= num2; x++)
+                              {
+                                   if (x == 212)
+                                        printf("%s %s\n", num1ch, num2ch);
+
+                                   PGASetDebugLevel(ctx, x);
+                              }
+
+                         }
+                         else
+                              PGAError(ctx,
+                                       "PGASetDebugLevel: Lower Limit Exceeds"
+                                       "Upper:", PGA_FATAL, PGA_INT,
+                                       (void *) &num1);
+                         num2index = 0;
+                         range = 0;
+                    }
+                    else
+                    {
+                         num1ch[num1index] = '\0';
+                         num1 = atoi(num1ch);
+                         if (num1 < 0 || num1 > PGA_DEBUG_MAXFLAGS)
+                              PGAError(ctx, "PGASetDebugLevel: Debug Number"
+                                       "Out of Range:", PGA_FATAL, PGA_INT,
+                                       (void *) &num1);
+                         if (num1 == 212)
+                              printf("%s\n", num1ch);
+
+                         PGASetDebugLevel(ctx, num1);
+                         num1index = 0;
+                    }
+               }
+          }
+     }
+}
+#endif
+
+/*I****************************************************************************
+   PGAStripArgs - code to strip arguments out of command list
+
+   Inputs:
+      argc - address of the count of the number of command line arguments
+      argv - array of command line arguments
+      c    -
+      num  -
+
+   Outputs:
+      None
+
+   Example:
+      Internal function.  Called only by PGAReadCmdLine.
+
+****************************************************************************I*/
+void PGAStripArgs(char **argv, int *argc, int *c, int num)
+{
+    char **a;
+    int i;
+
+    /* Strip out the argument. */
+    for (a = argv, i = (*c); i <= *argc; i++, a++)
+        *a = (*(a + num));
+    (*argc) -= num;
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/create.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/create.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/create.c	(revision 6168)
@@ -0,0 +1,1000 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: create.c: This file contains functions to create and initialize
+*                     data structures and populations.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGACreate - creates an uninitialized context variable.  The Fortran version
+  of this function call contains only the last three arguments
+
+  Category: Generation
+
+  Inputs:
+     argc     - address of the count of the number of command line arguments.
+     argv     - array of command line arguments.
+     datatype - the data type used for the strings.  Must be one of
+                PGA_DATATYPE_BINARY, PGA_DATATYPE_CHARACTER,
+                PGA_DATATYPE_INTEGER, PGA_DATATYPE_REAL, or PGA_DATATYPE_USER
+                to specify binary-valued, character-valued, integer-valued,
+                real-valued, or a user-defined datatype, respectively.
+     len      - the string length (number of genes).
+     maxormin - the direction of optimization. Must be one of PGA_MAXIMIZE or
+                PGA_MINIMIZE for maximization or minimization, respectively.
+
+  Outputs:
+     A pointer to the context variable.
+
+  Example:
+
+     In C:
+     void main(int argc, char **argv) {
+         PGAContext *ctx;
+         :
+         ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+         :
+         //  Set options here
+         :
+         PGASetUp(ctx);
+         :
+         //  Run the GA here
+         :
+         PGADestroy(ctx);
+     }
+
+     In FORTRAN:
+             integer ctx
+             :
+             ctx = PGACreate(PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE)
+             :
+     c       Set options here
+             :
+             call PGASetUp(ctx)
+             :
+     c       Run the GA here
+             :
+             call PGADestroy(ctx)
+             stop
+             end
+
+****************************************************************************U*/
+PGAContext *PGACreate ( int *argc, char **argv,
+                        int datatype, int len, int maxormin )
+{
+    int i;
+    PGAContext *ctx;
+
+    ctx = (PGAContext *) malloc ( sizeof(PGAContext) );
+
+    /*  We cannot make PGA calls until we sort the FuncNameIndex below,
+     *  so we just manually print the (rather severe) error message.
+     */
+    if( ctx == NULL ) {
+	fprintf(stderr, "PGACreate: No room to allocate ctx\n");
+	exit(-1);
+    }
+
+    
+    /*  We use this (indirectly) in PGAReadCmdLine -- in processing
+     *  -pgahelp and -pgahelp debug.
+     */
+    MPI_Initialized (&ctx->par.MPIAlreadyInit);
+
+    /* Initialize MPI, only if it isn't already running (fortran)  */
+    if (!ctx->par.MPIAlreadyInit)
+         MPI_Init (argc, &argv);
+
+
+#if OPTIMIZE==0
+    /*  Sort the FuncNameIndex.  This allows us to use a binary search
+     *  for finding the function names.
+     */
+    PGASortFuncNameIndex(ctx);
+#endif
+
+    /* Initialize debug flags, then parse command line arguments.  */
+    for (i=0; i<PGA_DEBUG_MAXFLAGS; i++)
+        ctx->debug.PGADebugFlags[i] = PGA_FALSE;
+    PGAReadCmdLine( ctx, argc, argv );
+
+
+    /*  The context variable is now initialized enough to allow this
+     *  call to complete successfully.
+     */
+    PGADebugEntered("PGACreate");
+
+    /* required parameter 1: abstract data type */
+    switch (datatype)
+    {
+    case PGA_DATATYPE_BINARY:
+    case PGA_DATATYPE_INTEGER:
+    case PGA_DATATYPE_REAL:
+    case PGA_DATATYPE_CHARACTER:
+    case PGA_DATATYPE_USER:
+         ctx->ga.datatype  = datatype;
+         break;
+    default:
+         PGAError( ctx, "PGACreate: Invalid value of datatype:",
+                  PGA_FATAL, PGA_INT, (void *) &datatype );
+    };
+
+    /* required parameter 2: string string length */
+    if (len <= 1)
+        PGAError( ctx,  "PGACreate: Invalid value of len:",
+                  PGA_FATAL, PGA_INT, (void *) &len );
+    else
+        ctx->ga.StringLen = len;
+
+
+    /* required parameter 3: optimization direction */
+    switch (maxormin) {
+        case PGA_MAXIMIZE:
+        case PGA_MINIMIZE:
+          ctx->ga.optdir = maxormin;
+          break;
+        default:
+          PGAError( ctx, "PGACreate: Invalid value of optdir:",
+                    PGA_FATAL, PGA_INT, (void *) &maxormin );
+    };
+
+
+    /*  For datatype == PGA_DATATYPE_BINARY, set how many full words
+     *  are used in the packed representation, and how many extra bits
+     *  this leaves us with.  Finally, set how many total words are used;
+     *  if there are no extra bits, this is just the number of full words,
+     *  else, there is one more word used than the number of full words.
+     */
+    switch (datatype) {
+    case PGA_DATATYPE_BINARY:
+        ctx->ga.fw = ctx->ga.StringLen/WL;
+        ctx->ga.eb = ctx->ga.StringLen%WL;
+        if ( ctx->ga.eb == 0 )
+            ctx->ga.tw = ctx->ga.fw;
+        else
+            ctx->ga.tw = ctx->ga.fw+1;
+        break;
+    default:
+        ctx->ga.fw = PGA_UNINITIALIZED_INT;
+        ctx->ga.eb = PGA_UNINITIALIZED_INT;
+        ctx->ga.tw = PGA_UNINITIALIZED_INT;
+        break;
+    }
+
+    /*  Clear all the setting.  Later on, PGASetUp() will be called, and then
+     *  it will notice which setting are uninitialized, and set them to the
+     *  default value.
+     */
+    ctx->ga.PopSize            = PGA_UNINITIALIZED_INT;
+    ctx->ga.TgtFitnessVal	   = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.FitnessTol		   = 0;
+    ctx->ga.TgtFitnessVar	   = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.VarTol			   = 0;
+    ctx->ga.TgtElapsedTime	   = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.StoppingRule       = PGA_STOP_MAXITER;
+    ctx->ga.MaxIter            = PGA_UNINITIALIZED_INT;
+    ctx->ga.MaxNoChange        = PGA_UNINITIALIZED_INT;
+    ctx->ga.MaxSimilarity      = PGA_UNINITIALIZED_INT;
+    ctx->ga.NumReplace         = PGA_UNINITIALIZED_INT;
+    ctx->ga.CrossoverType      = PGA_UNINITIALIZED_INT;
+    ctx->ga.SelectType         = PGA_UNINITIALIZED_INT;
+    ctx->ga.FitnessType        = PGA_UNINITIALIZED_INT;
+    ctx->ga.FitnessMinType     = PGA_UNINITIALIZED_INT;
+    ctx->ga.MutationType       = PGA_UNINITIALIZED_INT;
+    ctx->ga.MutateOnlyNoCross  = PGA_UNINITIALIZED_INT;
+    ctx->ga.MutateRealValue    = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.MutateIntegerValue = PGA_UNINITIALIZED_INT;
+    ctx->ga.MutateBoundedFlag  = PGA_UNINITIALIZED_INT;
+    ctx->ga.NoDuplicates       = PGA_UNINITIALIZED_INT;
+    ctx->ga.MutationProb       = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.CrossoverProb      = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.UniformCrossProb   = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.PTournamentProb    = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.FitnessRankMax     = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.FitnessCmaxValue   = PGA_UNINITIALIZED_DOUBLE;
+    ctx->ga.PopReplace         = PGA_UNINITIALIZED_INT;
+    ctx->ga.iter               = 0;
+    ctx->ga.ItersOfSame        = 0;
+    ctx->ga.PercentSame        = 0;
+    ctx->ga.selected           = NULL;
+    ctx->ga.SelectIndex        = 0;
+    ctx->ga.restart            = PGA_UNINITIALIZED_INT;
+    ctx->ga.restartFreq        = PGA_UNINITIALIZED_INT;
+    ctx->ga.restartAlleleProb  = PGA_UNINITIALIZED_DOUBLE;
+
+    /* Operations */
+    ctx->cops.CreateString      = NULL;
+    ctx->cops.Mutation          = NULL;
+    ctx->cops.Crossover         = NULL;
+    ctx->cops.PrintString       = NULL;
+    ctx->cops.CopyString        = NULL;
+    ctx->cops.Duplicate         = NULL;
+    ctx->cops.InitString        = NULL;
+    ctx->cops.BuildDatatype     = NULL;
+    ctx->cops.StopCond           = NULL;
+    ctx->cops.EndOfGen          = NULL;
+
+    ctx->fops.Mutation          = NULL;
+    ctx->fops.Crossover         = NULL;
+    ctx->fops.PrintString       = NULL;
+    ctx->fops.CopyString        = NULL;
+    ctx->fops.Duplicate         = NULL;
+    ctx->fops.InitString        = NULL;
+    ctx->fops.StopCond          = NULL;
+    ctx->fops.EndOfGen          = NULL;
+
+    /* Parallel */
+    ctx->par.NumIslands        = PGA_UNINITIALIZED_INT;
+    ctx->par.NumDemes          = PGA_UNINITIALIZED_INT;
+    ctx->par.DefaultComm       = NULL;
+#ifdef FAKE_MPI
+    ctx->par.MPIStubLibrary    = PGA_TRUE;
+#else
+    ctx->par.MPIStubLibrary    = PGA_FALSE;
+#endif
+
+    /* Reporting */
+    ctx->rep.PrintFreq         = PGA_UNINITIALIZED_INT;
+    ctx->rep.PrintOptions      = 0;
+    ctx->rep.Online            = 0;
+    ctx->rep.Offline           = 0;
+    ctx->rep.Best              = PGA_UNINITIALIZED_DOUBLE;
+    ctx->rep.starttime         = PGA_UNINITIALIZED_INT;
+
+    /* System
+     *
+     *  If ctx->sys.UserFortran is not set to PGA_TRUE in pgacreate_ (the
+     *  fortran stub to PGACreate), the user program is in C.
+     */
+    if (ctx->sys.UserFortran != PGA_TRUE) 
+         ctx->sys.UserFortran  = PGA_FALSE;
+    ctx->sys.SetUpCalled       = PGA_FALSE;
+    ctx->sys.PGAMaxInt         = INT_MAX;
+    ctx->sys.PGAMinInt         = INT_MIN;
+    ctx->sys.PGAMaxDouble      = DBL_MAX;
+    ctx->sys.PGAMinDouble      = DBL_MIN;
+
+    /* Debug */
+    /* Set above before parsing command line arguments */
+
+    /* Initialization */
+    ctx->init.RandomInit        = PGA_UNINITIALIZED_INT;
+    ctx->init.BinaryProbability = PGA_UNINITIALIZED_DOUBLE;
+    ctx->init.RealType          = PGA_UNINITIALIZED_INT;
+    ctx->init.IntegerType       = PGA_UNINITIALIZED_INT;
+    ctx->init.CharacterType     = PGA_UNINITIALIZED_INT;
+    ctx->init.RandomSeed        = PGA_UNINITIALIZED_INT;
+
+    /*  Allocate and clear arrays to define the minimum and maximum values
+     *  allowed by integer and real datatypes.
+     */
+    switch (datatype)
+    {
+    case PGA_DATATYPE_INTEGER:
+         ctx->init.IntegerMax = (int *) malloc(len * sizeof(PGAInteger));
+         if (!ctx->init.IntegerMax)
+              PGAError(ctx, "PGACreate: No room to allocate:", PGA_FATAL,
+                       PGA_CHAR, (void *) "ctx->init.IntegerMax");
+         ctx->init.IntegerMin = (int *) malloc(len * sizeof(PGAInteger));
+         if (!ctx->init.IntegerMin)
+              PGAError(ctx, "PGACreate: No room to allocate:", PGA_FATAL,
+                       PGA_CHAR, (void *) "ctx->init.IntegerMin");
+         ctx->init.RealMax = NULL;
+         ctx->init.RealMin = NULL;
+         for (i = 0; i < len; i++)
+         {
+              ctx->init.IntegerMin[i] = PGA_UNINITIALIZED_INT;
+              ctx->init.IntegerMax[i] = PGA_UNINITIALIZED_INT;
+         }
+         break;
+    case PGA_DATATYPE_REAL:
+         ctx->init.RealMax = (PGAReal *) malloc(len * sizeof(PGAReal));
+         if (!ctx->init.RealMax)
+              PGAError(ctx, "PGACreate: No room to allocate:", PGA_FATAL,
+                       PGA_CHAR, (void *) "ctx->init.RealMax");
+         ctx->init.RealMin = (PGAReal *) malloc(len * sizeof(PGAReal));
+         if (!ctx->init.RealMin)
+              PGAError(ctx, "PGACreate: No room to allocate:", PGA_FATAL,
+                       PGA_CHAR, (void *) "ctx->init.RealMin");
+         ctx->init.IntegerMax = NULL;
+         ctx->init.IntegerMin = NULL;
+         for (i = 0; i < len; i++)
+         {
+              ctx->init.RealMin[i] = PGA_UNINITIALIZED_DOUBLE;
+              ctx->init.RealMax[i] = PGA_UNINITIALIZED_DOUBLE;
+         }
+         break;
+    default:
+         ctx->init.RealMax = NULL;
+         ctx->init.RealMin = NULL;
+         ctx->init.IntegerMax = NULL;
+         ctx->init.IntegerMin = NULL;
+         break;
+    }
+
+    PGADebugExited("PGACreate");
+
+    return(ctx);
+}
+
+
+/*U****************************************************************************
+  PGASetUp - set all uninitialized variables to default values and initialize
+  some internal arrays.  Must be called after PGACreate() and before the GA
+  is started.
+
+  Category: Generation
+
+  Inputs:
+     ctx - context variable
+
+  Outputs:
+     Uninitialized values in the context variable are set to defaults, and
+     set values are checked for legality.
+
+  Example:
+     PGAContext *ctx;
+     :
+     PGACreate(ctx, ...);
+     :
+     //  Set options here
+     :
+     PGASetUp(ctx);
+
+****************************************************************************U*/
+void PGASetUp ( PGAContext *ctx )
+{
+    /*  These are for temporary storage of datatype specific functions.
+     *  They allow some (understatement of the yesr!!) cleaning of the
+     *  code below.
+     */
+    void         (*CreateString)(PGAContext *, int, int, int);
+    int          (*Mutation)(PGAContext *, int, int, double);
+    void         (*Crossover)(PGAContext *, int, int, int, int, int, int);
+    void         (*PrintString)(PGAContext *, FILE *, int, int);
+    void         (*CopyString)(PGAContext *, int, int, int, int);
+    int          (*Duplicate)(PGAContext *, int, int, int, int);
+    void         (*InitString)(PGAContext *, int, int);
+    MPI_Datatype (*BuildDatatype)(PGAContext *, int, int);
+    int err=0, i;
+
+    PGADebugEntered("PGASetUp");
+    PGAFailIfSetUp("PGASetUp");
+
+    ctx->sys.SetUpCalled = PGA_TRUE;
+
+    if ( ctx->ga.datatype           == PGA_DATATYPE_BINARY   &&
+         ctx->ga.tw                 == PGA_UNINITIALIZED_INT )
+      PGAError( ctx,
+               "PGASetUp: Binary: Total Words (ctx->ga.tw) == UNINITIALIZED?",
+               PGA_FATAL, PGA_INT, (void *) &ctx->ga.tw );
+
+    if ( ctx->ga.datatype           == PGA_DATATYPE_BINARY  &&
+         ctx->ga.fw                 == PGA_UNINITIALIZED_INT )
+      PGAError( ctx,
+               "PGASetUp: Binary: Full Words (ctx->ga.fw) == UNINITIALIZED?",
+               PGA_FATAL, PGA_INT,  (void *) &ctx->ga.fw );
+
+    if ( ctx->ga.datatype           == PGA_DATATYPE_BINARY  &&
+         ctx->ga.eb                 == PGA_UNINITIALIZED_INT )
+      PGAError( ctx,
+               "PGASetUp: Binary: Empty Bits (ctx->ga.eb) == UNINITIALIZED?",
+               PGA_FATAL, PGA_INT, (void *) &ctx->ga.eb );
+
+    if ( ctx->ga.PopSize            == PGA_UNINITIALIZED_INT)
+      ctx->ga.PopSize                = 100;
+
+    if ( ctx->ga.MaxIter            == PGA_UNINITIALIZED_INT)
+         ctx->ga.MaxIter             = 1000;
+
+    if ( ctx->ga.MaxNoChange        == PGA_UNINITIALIZED_INT)
+         ctx->ga.MaxNoChange         = 100;
+
+    if ( ctx->ga.MaxSimilarity      == PGA_UNINITIALIZED_INT)
+         ctx->ga.MaxSimilarity       = 95;
+         
+    if (ctx->ga.TgtFitnessVal 		== PGA_UNINITIALIZED_DOUBLE){
+    	 ctx->ga.TgtFitnessVal		= 0;
+    }
+    
+    if (ctx->ga.FitnessTol 			== PGA_UNINITIALIZED_DOUBLE){
+    	 ctx->ga.FitnessTol			= 0;
+    }
+    
+    if (ctx->ga.VarTol 				== PGA_UNINITIALIZED_DOUBLE){
+    	 ctx->ga.VarTol				= 0;
+    }
+    
+    if (ctx->ga.TgtFitnessVar 		== PGA_UNINITIALIZED_DOUBLE){
+    	 ctx->ga.TgtFitnessVar		= 0;
+    }
+    
+    if (ctx->ga.TgtElapsedTime 		== PGA_UNINITIALIZED_DOUBLE){
+    	 ctx->ga.TgtElapsedTime		= 0;
+    }     
+
+    if ( ctx->ga.NumReplace         == PGA_UNINITIALIZED_INT)
+         ctx->ga.NumReplace          = (int) ceil(ctx->ga.PopSize * 0.1);
+
+    if ( ctx->ga.NumReplace          > ctx->ga.PopSize)
+         PGAError(ctx, "PGASetUp: NumReplace > PopSize",
+                  PGA_FATAL, PGA_VOID, NULL);
+
+    if ( ctx->ga.CrossoverType      == PGA_UNINITIALIZED_INT)
+         ctx->ga.CrossoverType       = PGA_CROSSOVER_TWOPT;
+
+    if (ctx->ga.CrossoverType       == PGA_CROSSOVER_TWOPT &&
+        ctx->ga.StringLen == 2)
+         PGAError(ctx, "PGASetUp: Invalid Crossover type for string of length "
+                  "2", PGA_FATAL, PGA_INT, (void *) &ctx->ga.CrossoverType);
+
+    if ( ctx->ga.SelectType        == PGA_UNINITIALIZED_INT)
+         ctx->ga.SelectType         = PGA_SELECT_TOURNAMENT;
+
+    if ( ctx->ga.FitnessType       == PGA_UNINITIALIZED_INT)
+         ctx->ga.FitnessType        = PGA_FITNESS_RAW;
+
+    if ( ctx->ga.FitnessMinType    == PGA_UNINITIALIZED_INT)
+         ctx->ga.FitnessMinType     = PGA_FITNESSMIN_CMAX;
+
+    if ( ctx->ga.MutateOnlyNoCross == PGA_UNINITIALIZED_INT)
+         ctx->ga.MutateOnlyNoCross  = PGA_TRUE;
+
+    if ( ctx->ga.MutationProb      == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.MutationProb       = 1. / ctx->ga.StringLen;
+
+    if ( ctx->ga.MutationType      == PGA_UNINITIALIZED_INT) {
+        switch (ctx->ga.datatype) {
+        case PGA_DATATYPE_BINARY:
+        case PGA_DATATYPE_CHARACTER:
+        case PGA_DATATYPE_USER:
+             /* leave PGA_UNINITIALIZED_INT for these data types */
+             break;
+        case PGA_DATATYPE_REAL:
+             ctx->ga.MutationType   = PGA_MUTATION_GAUSSIAN;
+             break;
+        case PGA_DATATYPE_INTEGER:
+             switch (ctx->init.IntegerType) {
+                 case PGA_UNINITIALIZED_INT:
+                 case PGA_IINIT_PERMUTE:
+                     ctx->ga.MutationType   = PGA_MUTATION_PERMUTE;
+                     break;
+                 case PGA_IINIT_RANGE:
+                     ctx->ga.MutationType   = PGA_MUTATION_RANGE;
+                     break;
+             }
+             break;
+        default:
+             PGAError( ctx, "PGASetup: Invalid value of ctx->ga.datatype:",
+                       PGA_FATAL, PGA_INT, (void *) &(ctx->ga.datatype) );
+         }
+    }
+
+    if (ctx->ga.MutateRealValue   == PGA_UNINITIALIZED_DOUBLE) {
+        switch (ctx->ga.MutationType) {
+        case PGA_MUTATION_GAUSSIAN:
+            ctx->ga.MutateRealValue   = 0.1;
+            break;
+        case PGA_MUTATION_UNIFORM:
+            ctx->ga.MutateRealValue   = 0.1;
+            break;
+        case PGA_MUTATION_CONSTANT:
+            ctx->ga.MutateRealValue   = 0.01;
+            break;
+        case PGA_MUTATION_RANGE:
+        default:
+            ctx->ga.MutateRealValue   = 0.0;
+        }
+    }
+
+    if ( ctx->ga.MutateIntegerValue == PGA_UNINITIALIZED_INT)
+         ctx->ga.MutateIntegerValue  = 1;
+
+    if ( ctx->ga.MutateBoundedFlag == PGA_UNINITIALIZED_INT)
+         ctx->ga.MutateBoundedFlag  = PGA_FALSE;
+
+    if ( ctx->ga.NoDuplicates      == PGA_UNINITIALIZED_INT)
+         ctx->ga.NoDuplicates       = PGA_FALSE;
+
+    if ( ctx->ga.NoDuplicates && ((ctx->ga.StoppingRule & PGA_STOP_TOOSIMILAR)
+                                   == PGA_STOP_TOOSIMILAR))
+         PGAError(ctx, "PGASetUp: No Duplicates inconsistent with Stopping "
+                  "Rule:", PGA_FATAL, PGA_INT, (void *) &ctx->ga.StoppingRule);
+
+    if ( ctx->ga.CrossoverProb     == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.CrossoverProb      = 0.85;
+
+    if ( ctx->ga.UniformCrossProb  == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.UniformCrossProb   = 0.6;
+
+    if ( ctx->ga.PTournamentProb   == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.PTournamentProb    = 0.6;
+
+    if ( ctx->ga.FitnessRankMax    == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.FitnessRankMax     = 1.2;
+
+    if ( ctx->ga.FitnessCmaxValue  == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.FitnessCmaxValue   = 1.01;
+
+    if ( ctx->ga.PopReplace        == PGA_UNINITIALIZED_INT)
+         ctx->ga.PopReplace         = PGA_POPREPL_BEST;
+
+    if ( ctx->ga.restart           == PGA_UNINITIALIZED_INT)
+         ctx->ga.restart            = PGA_FALSE;
+
+    if ( ctx->ga.restartFreq       == PGA_UNINITIALIZED_INT)
+         ctx->ga.restartFreq        = 50;
+
+    if ( ctx->ga.restartAlleleProb == PGA_UNINITIALIZED_DOUBLE)
+         ctx->ga.restartAlleleProb = 0.5;
+
+
+/* ops */
+    /*  If no user supplied "done" function, use the built in one.
+     *  No need to check EndOfGen; they only get called if they
+     *  are defined.
+     */
+    if (((void *)ctx->cops.StopCond == (void *)PGADone) ||
+	((void *)ctx->fops.StopCond == (void *)PGADone))
+	PGAError( ctx,
+		 "PGASetUp: Using PGADone as the user stopping condition will"
+		 " result in an infinite loop!", PGA_FATAL, PGA_VOID, NULL);
+
+    switch (ctx->ga.datatype) {
+    case PGA_DATATYPE_BINARY:
+	CreateString  = PGABinaryCreateString;
+	BuildDatatype = PGABinaryBuildDatatype;
+	Mutation      = PGABinaryMutation;
+
+        switch (ctx->ga.CrossoverType) {
+	  case PGA_CROSSOVER_ONEPT:
+	    Crossover  = PGABinaryOneptCrossover;
+            break;
+	  case PGA_CROSSOVER_TWOPT:
+	    Crossover  = PGABinaryTwoptCrossover;
+            break;
+	  case PGA_CROSSOVER_UNIFORM:
+	    Crossover  = PGABinaryUniformCrossover;
+            break;
+        }
+	PrintString    = PGABinaryPrintString;
+	CopyString     = PGABinaryCopyString;
+	Duplicate      = PGABinaryDuplicate;
+	InitString     = PGABinaryInitString;
+        break;
+      case PGA_DATATYPE_INTEGER:
+        CreateString   = PGAIntegerCreateString;
+        BuildDatatype  = PGAIntegerBuildDatatype;
+        Mutation       = PGAIntegerMutation;
+        switch (ctx->ga.CrossoverType) {
+	  case PGA_CROSSOVER_ONEPT:
+	    Crossover  = PGAIntegerOneptCrossover;
+            break;
+	  case PGA_CROSSOVER_TWOPT:
+	    Crossover  = PGAIntegerTwoptCrossover;
+            break;
+	  case PGA_CROSSOVER_UNIFORM:
+	    Crossover  = PGAIntegerUniformCrossover;
+            break;
+        }
+	PrintString    = PGAIntegerPrintString;
+	CopyString     = PGAIntegerCopyString;
+	Duplicate      = PGAIntegerDuplicate;
+	InitString     = PGAIntegerInitString;
+        break;
+      case PGA_DATATYPE_REAL:
+	CreateString   = PGARealCreateString;
+	BuildDatatype  = PGARealBuildDatatype;
+	Mutation       = PGARealMutation;
+        switch (ctx->ga.CrossoverType) {
+	  case PGA_CROSSOVER_ONEPT:
+	    Crossover  = PGARealOneptCrossover;
+            break;
+	  case PGA_CROSSOVER_TWOPT:
+	    Crossover  = PGARealTwoptCrossover;
+            break;
+	  case PGA_CROSSOVER_UNIFORM:
+	    Crossover  = PGARealUniformCrossover;
+            break;
+        }
+	PrintString    = PGARealPrintString;
+	CopyString     = PGARealCopyString;
+	Duplicate      = PGARealDuplicate;
+	InitString     = PGARealInitString;
+        break;
+      case PGA_DATATYPE_CHARACTER:
+	CreateString   = PGACharacterCreateString;
+	BuildDatatype  = PGACharacterBuildDatatype;
+	Mutation       = PGACharacterMutation;
+        switch (ctx->ga.CrossoverType) {
+	  case PGA_CROSSOVER_ONEPT:
+	    Crossover  = PGACharacterOneptCrossover;
+            break;
+	  case PGA_CROSSOVER_TWOPT:
+	    Crossover  = PGACharacterTwoptCrossover;
+            break;
+	  case PGA_CROSSOVER_UNIFORM:
+	    Crossover  = PGACharacterUniformCrossover;
+            break;
+	}
+	PrintString    = PGACharacterPrintString;
+	CopyString     = PGACharacterCopyString;
+	Duplicate      = PGACharacterDuplicate;
+	InitString     = PGACharacterInitString;
+        break;
+      case PGA_DATATYPE_USER:
+        if (ctx->cops.CreateString == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs CreateString function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+        if (ctx->cops.Mutation     == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs Mutation function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+        if (ctx->cops.Crossover    == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs Crossover function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+        if (ctx->cops.PrintString  == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs PrintString function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+	if (ctx->cops.Duplicate    == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs Duplicate function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+	if (ctx->cops.CopyString    == NULL)
+            PGAError( ctx,
+		     "PGASetUp: User datatype needs CopyString function:",
+                     PGA_WARNING, PGA_INT, (void *) &err );
+        if (ctx->cops.BuildDatatype == NULL)
+             PGAError(ctx,
+                      "PGASetUp: User datatype needs BuildDatatype "
+                      "function:", PGA_FATAL, PGA_INT, (void *) &err );
+        break;
+    }
+    if ((ctx->cops.Mutation     == NULL) && (ctx->fops.Mutation    == NULL))
+	ctx->cops.Mutation      = Mutation;
+    if ((ctx->cops.Crossover    == NULL) && (ctx->fops.Crossover   == NULL))
+	ctx->cops.Crossover     = Crossover;
+    if ((ctx->cops.PrintString  == NULL) && (ctx->fops.PrintString == NULL))
+	ctx->cops.PrintString   = PrintString;
+    if ((ctx->cops.Duplicate    == NULL) && (ctx->fops.Duplicate   == NULL))
+	ctx->cops.Duplicate     = Duplicate;
+    if ((ctx->cops.InitString   == NULL) && (ctx->fops.InitString  == NULL))
+	ctx->cops.InitString    = InitString;
+    if (ctx->cops.CreateString  == NULL) 
+	ctx->cops.CreateString  = CreateString;
+    if (ctx->cops.CopyString    == NULL)
+	ctx->cops.CopyString    = CopyString;
+    if (ctx->cops.BuildDatatype == NULL)
+	ctx->cops.BuildDatatype = BuildDatatype;
+    
+/* par */
+    if ( ctx->par.NumIslands       == PGA_UNINITIALIZED_INT)
+         ctx->par.NumIslands        = 1;
+    if ( ctx->par.NumDemes         == PGA_UNINITIALIZED_INT)
+         ctx->par.NumDemes          = 1;
+    if ( ctx->par.DefaultComm      == NULL )
+         ctx->par.DefaultComm       = MPI_COMM_WORLD;
+
+    
+
+/* rep */
+    if ( ctx->rep.PrintFreq == PGA_UNINITIALIZED_INT)
+         ctx->rep.PrintFreq  = 10;
+
+/* sys */
+    /* no more sets necessary here. */
+
+/* debug */
+
+/* init */
+    if ( ctx->init.RandomInit == PGA_UNINITIALIZED_INT)
+         ctx->init.RandomInit  = PGA_TRUE;
+
+    if ( ctx->init.BinaryProbability == PGA_UNINITIALIZED_DOUBLE)
+         ctx->init.BinaryProbability  = 0.5;
+
+    if ( ctx->init.RealType == PGA_UNINITIALIZED_INT)
+         ctx->init.RealType  = PGA_RINIT_RANGE;
+    if ( ctx->init.IntegerType == PGA_UNINITIALIZED_INT)
+         ctx->init.IntegerType  = PGA_IINIT_PERMUTE;
+    if ( ctx->init.CharacterType == PGA_UNINITIALIZED_INT)
+         ctx->init.CharacterType = PGA_CINIT_LOWER;
+
+    switch (ctx->ga.datatype)
+    {
+    case PGA_DATATYPE_INTEGER:
+         for (i = 0; i < ctx->ga.StringLen; i++)
+         {
+              if (ctx->init.IntegerMin[i] == PGA_UNINITIALIZED_INT)
+                   ctx->init.IntegerMin[i] = 0;
+              if (ctx->init.IntegerMax[i] == PGA_UNINITIALIZED_INT)
+                   ctx->init.IntegerMax[i] = ctx->ga.StringLen - 1;
+         }
+         break;
+    case PGA_DATATYPE_REAL:
+         for (i = 0; i < ctx->ga.StringLen; i++)
+         {
+              if (ctx->init.RealMin[i] == PGA_UNINITIALIZED_DOUBLE)
+                   ctx->init.RealMin[i] = 0.;
+              if (ctx->init.RealMax[i] == PGA_UNINITIALIZED_DOUBLE)
+                   ctx->init.RealMax[i] = 1.;
+         }
+         break;
+    }
+
+    /* If a seed was not specified, get one from a time of day call */
+    if ( ctx->init.RandomSeed == PGA_UNINITIALIZED_INT)
+         ctx->init.RandomSeed = (int)time(NULL);
+
+    /* seed random number generator with this process' unique seed */
+    ctx->init.RandomSeed += PGAGetRank(ctx, MPI_COMM_WORLD);
+    PGARandom01( ctx, ctx->init.RandomSeed );
+
+    ctx->ga.selected        = (int *)malloc( sizeof(int) * ctx->ga.PopSize );
+    if (ctx->ga.selected == NULL)
+         PGAError(ctx, "PGASetUp: No room to allocate ctx->ga.selected",
+                  PGA_FATAL, PGA_VOID, NULL);
+
+    ctx->ga.sorted          = (int *)malloc( sizeof(int) * ctx->ga.PopSize );
+    if (ctx->ga.sorted == NULL)
+         PGAError(ctx, "PGASetUp: No room to allocate ctx->ga.sorted",
+                  PGA_FATAL, PGA_VOID, NULL);
+
+    ctx->scratch.intscratch = (int *)malloc( sizeof(int) * ctx->ga.PopSize );
+    if (ctx->scratch.intscratch == NULL)
+         PGAError(ctx, "PGASetUp: No room to allocate ctx->scratch.intscratch",
+                  PGA_FATAL, PGA_VOID, NULL);
+
+    ctx->scratch.dblscratch = (double *)malloc(sizeof(double) * ctx->ga.PopSize);
+    if (ctx->scratch.dblscratch == NULL)
+         PGAError(ctx, "PGASetUp: No room to allocate ctx->scratch.dblscratch",
+                  PGA_FATAL, PGA_VOID, NULL);
+
+    PGACreatePop ( ctx , PGA_OLDPOP );
+    PGACreatePop ( ctx , PGA_NEWPOP );
+
+    ctx->rep.starttime = time(NULL);
+
+    PGADebugExited("PGASetUp");
+}
+
+/*U****************************************************************************
+   PGASetRandomInitFlag - A boolean flag to indicate whether to randomly
+   initialize alleles.  Legal values are PGA_TRUE and PGA_FALSE.  Default
+   is PGA_TRUE -- randomly initialize alleles.
+
+   Category: Initialization
+
+   Inputs:
+      ctx  - context variable
+      flag - either PGA_TRUE or PGA_FALSE
+
+   Outputs:
+      None
+
+   Example:
+      Set the initialization routine to initialize all alleles to zero
+
+      PGAContext *ctx;
+      :
+      PGASetRandomInitFlag(ctx,PGA_FALSE);
+
+****************************************************************************U*/
+void PGASetRandomInitFlag(PGAContext *ctx, int RandomBoolean)
+{
+    PGADebugEntered("PGASetRandomInitFlag");
+    PGAFailIfSetUp("PGASetRandomInitFlag");
+
+  switch (RandomBoolean) {
+    case PGA_TRUE:
+    case PGA_FALSE:
+      ctx->init.RandomInit = RandomBoolean;
+      break;
+    default:
+      PGAError(ctx, "PGASetRandomInitFlag: Invalid value of RandomBoolean:",
+               PGA_FATAL, PGA_INT, (void *) &RandomBoolean);
+      break;
+    }
+    PGADebugExited("PGASetRandomInitFlag");
+}
+
+/*U***************************************************************************
+   PGAGetRandomInitFlag - returns true/false to indicate whether or not
+   alleles are randomly initialized.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns PGA_TRUE if alleles are randomly initialized.
+      Otherwise, returns PGA_FALSE
+
+   Example:
+      PGAContext *ctx;
+      int raninit;
+      :
+      raninit = PGAGetRandomInitFlag(ctx);
+      switch (raninit) {
+      case PGA_TRUE:
+          printf("Population is randomly initialized\n");
+          break;
+      case PGA_FALSE:
+          printf("Population initialized to zero\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetRandomInitFlag (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRandomInitFlag");
+
+    PGAFailIfNotSetUp("PGAGetRandomInitFlag");
+
+    PGADebugExited("PGAGetRandomInitFlag");
+
+    return(ctx->init.RandomInit);
+}
+
+
+/*I****************************************************************************
+  PGACreatePop - allocates a population of individuals and calls
+  PGACreateIndividual to set up each one
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population to create
+
+  Outputs:
+     None
+
+  Example:
+     PGAContext *ctx;
+     :
+     PGACreatePop(ctx, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGACreatePop (PGAContext *ctx, int pop)
+{
+     int p, flag;
+
+    PGADebugEntered("PGACreatePop");
+
+     switch (pop)
+     {
+     case PGA_OLDPOP:
+          ctx->ga.oldpop = (PGAIndividual *)malloc(sizeof(PGAIndividual) *
+                                                   (ctx->ga.PopSize + 2));
+          if (ctx->ga.oldpop == NULL)
+               PGAError(ctx, "PGACreatePop: No room to allocate "
+                        "ctx->ga.oldpop", PGA_FATAL, PGA_VOID, NULL);
+          flag = ctx->init.RandomInit;
+          break;
+     case PGA_NEWPOP:
+          ctx->ga.newpop = (PGAIndividual *)malloc(sizeof(PGAIndividual) *
+                                                   (ctx->ga.PopSize + 2));
+          if (ctx->ga.newpop == NULL)
+               PGAError(ctx, "PGACreatePop: No room to allocate "
+                        "ctx->ga.newpop", PGA_FATAL, PGA_VOID, NULL);
+          flag = PGA_FALSE;
+          break;
+     default:
+          PGAError(ctx, "PGACreatePop: Invalid value of pop:", PGA_FATAL,
+                   PGA_INT, (void *) &pop );
+          break;
+     };
+     for (p = 0; p < ctx->ga.PopSize; p++)
+          PGACreateIndividual (ctx, p, pop, flag);
+     PGACreateIndividual (ctx, PGA_TEMP1, pop, PGA_FALSE);
+     PGACreateIndividual (ctx, PGA_TEMP2, pop, PGA_FALSE);
+
+    PGADebugExited("PGACreatePop");
+}
+
+
+/*I****************************************************************************
+  PGACreateIndividual - initialize to zero various data structures of an
+  individual and call the appropriate function to create and initialize the
+  string for the specific data type
+
+  Inputs:
+     ctx      - context variable
+     p        - string index
+     pop      - symbolic constant of the population string p is in
+     initflag - if the value is PGA_TRUE, the string is randomly initialized.
+                Otherwise it is set to zero.
+
+  Outputs:
+     None
+
+  Example:
+     PGAContext *ctx;
+     int p;
+     :
+     PGACreateIndividual(ctx, p, PGA_NEWPOP, PGA_TRUE);
+
+****************************************************************************I*/
+void PGACreateIndividual (PGAContext *ctx, int p, int pop, int initflag)
+{
+    PGAIndividual *ind = PGAGetIndividual(ctx, p, pop);
+
+    PGADebugEntered("PGACreateIndividual");
+
+    ind->evalfunc     = 0.0;
+    ind->fitness      = 0.0;
+    ind->evaluptodate = PGA_FALSE;
+
+    (*ctx->cops.CreateString)(ctx, p, pop, initflag);
+    
+    PGADebugExited("PGACreateIndividual");
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/cross.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/cross.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/cross.c	(revision 6168)
@@ -0,0 +1,352 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: crossover.c: This file contains the data structure neutral
+*                        crossover routines.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGACrossover - performs crossover on two parent strings to create two
+   child strings (via side-effect).  The type of crossover performed is
+   either the default or that specified by PGASetCrossoverType
+
+   Category: Operators
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      c1 and c2 in pop2 are children of p1 and p2 in pop1.  p1 and p2 are not
+      modified.
+
+   Example:
+      Perform crossover on the two parent strings mom and dad in population
+      PGA_OLDPOP, and insert the child strings, child1 and child1, in
+      population PGA_NEWPOP.
+
+      PGAContext *ctx;
+      int mom, dad, child1, child2;
+      :
+      PGACrossover(ctx, mom, dad, PGA_OLDPOP, child1, child2, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGACrossover ( PGAContext *ctx, int p1, int p2, int pop1,
+                    int c1, int c2, int pop2 )
+{
+    int fp1, fp2, fc1, fc2;
+
+    PGADebugEntered("PGACrossover");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGACrossover", " p1 = ",
+		  PGA_INT, (void *) &p1 );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGACrossover", " p2 = ",
+		  PGA_INT, (void *) &p2 );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGACrossover", " c1 = ",
+		  PGA_INT, (void *) &c1 );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGACrossover", " c2 = ",
+		  PGA_INT, (void *) &c2 );
+
+    if (ctx->fops.Crossover) {
+	fp1 = ((p1 == PGA_TEMP1) || (p1 == PGA_TEMP2)) ? p1 : p1+1;
+	fp2 = ((p2 == PGA_TEMP1) || (p2 == PGA_TEMP2)) ? p2 : p2+1;
+	fc1 = ((c1 == PGA_TEMP1) || (c1 == PGA_TEMP2)) ? c1 : c1+1;
+	fc2 = ((c2 == PGA_TEMP1) || (c2 == PGA_TEMP2)) ? c2 : c2+1;
+	(*ctx->fops.Crossover)(&ctx, &fp1, &fp2, &pop1, &fc1, &fc2, &pop2);
+    } else {
+	(*ctx->cops.Crossover)(ctx, p1, p2, pop1, c1, c2, pop2);
+    }
+
+    PGASetEvaluationUpToDateFlag(ctx, c1, pop2, PGA_FALSE);
+    PGASetEvaluationUpToDateFlag(ctx, c2, pop2, PGA_FALSE);
+    
+    PGADebugExited("PGACrossover");
+}
+
+/*U***************************************************************************
+   PGAGetCrossoverType - Returns the type of crossover selected
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the crossover type
+
+   Example:
+      PGAContext *ctx;
+      int crosstype;
+      :
+      crosstype = PGAGetCrossoverType(ctx);
+      switch (crosstype) {
+      case PGA_CROSSOVER_ONEPT:
+          printf("Crossover Type = PGA_CROSSOVER_ONEPT\n");
+          break;
+      case PGA_CROSSOVER_TWOPT:
+          printf("Crossover Type = PGA_CROSSOVER_TWOPT\n");
+          break;
+      case PGA_CROSSOVER_UNIFORM:
+          printf("Crossover Type = PGA_CROSSOVER_UNIFORM\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetCrossoverType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetCrossoverType");
+
+    PGAFailIfNotSetUp("PGAGetCrossoverType");
+
+    PGADebugExited("PGAGetCrossoverType");
+
+    return(ctx->ga.CrossoverType);
+}
+
+/*U***************************************************************************
+   PGAGetCrossoverProb - Returns the crossover probability
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The crossover probability
+
+   Example:
+      PGAContext *ctx;
+      double pc;
+      :
+      pc = PGAGetCrossoverProb(ctx);
+
+***************************************************************************U*/
+double PGAGetCrossoverProb (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetCrossoverProb");
+
+    PGAFailIfNotSetUp("PGAGetCrossoverProb");
+
+    PGADebugExited("PGAGetCrossoverProb");
+
+    return(ctx->ga.CrossoverProb);
+}
+
+/*U***************************************************************************
+   PGAGetUniformCrossoverProb - returns the probability of a bit being
+   selected from the first child string in uniform crossover
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The uniform crossover probability
+
+   Example:
+      PGAContext *ctx;
+      double pu;
+      :
+      pu = PGAGetUniformCrossoverProb(ctx);
+
+***************************************************************************U*/
+double PGAGetUniformCrossoverProb (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetUniformCrossoverProb");
+
+    PGAFailIfNotSetUp("PGAGetUniformCrossoverProb");
+
+    PGADebugExited("PGAGetUniformCrossoverProb");
+
+    return(ctx->ga.UniformCrossProb);
+}
+
+/*U****************************************************************************
+   PGASetCrossoverType - specify the type of crossover to use. Valid choices
+   are PGA_CROSSOVER_ONEPT, PGA_CROSSOVER_TWOPT, or PGA_CROSSOVER_UNIFORM for
+   one-point, two-point, and uniform crossover, respectively.  The default is
+   PGA_CROSSOVER_TWOPT.
+
+   Category: Operators
+
+   Inputs:
+      ctx            - context variable
+      crossover_type - symbolic constant to specify crossover type
+
+   Outputs:
+      None
+
+   Example:
+      Use uniform crossover when crossingover strings.
+
+      PGAContext *ctx;
+      :
+      PGASetCrossoverType(ctx, PGA_CROSSOVER_UNIFORM);
+
+****************************************************************************U*/
+void PGASetCrossoverType (PGAContext *ctx, int crossover_type)
+{
+
+    PGADebugEntered("PGASetCrossoverType");
+
+    switch (crossover_type) {
+        case PGA_CROSSOVER_ONEPT:
+        case PGA_CROSSOVER_TWOPT:
+        case PGA_CROSSOVER_UNIFORM:
+        case PGA_CROSSOVER_SBX:
+        case PGA_CROSSOVER_TRIANGULAR:
+            ctx->ga.CrossoverType = crossover_type;
+            break;
+        default:
+            PGAError( ctx,
+                     "PGASetCrossoverType: Invalid value of crossover_type:",
+                      PGA_FATAL, PGA_INT, (void *) &crossover_type );
+    };
+
+    PGADebugExited("PGASetCrossoverType");
+}
+
+
+/*U****************************************************************************
+   PGASetCrossoverProb - Probability that a selected string will undergo
+   crossover.  The default is 0.85.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      p   - the crossover probability
+
+   Outputs:
+      None
+
+   Example:
+      Make crossover happen infrequently.
+
+      PGAContext *ctx;
+      :
+      PGASetCrossoverProb(ctx,0.001);
+
+****************************************************************************U*/
+void PGASetCrossoverProb( PGAContext *ctx, double crossover_prob)
+{
+    PGADebugEntered("PGASetCrossoverProb");
+
+    if ((crossover_prob < 0.0) || (crossover_prob > 1.0))
+        PGAError ( ctx,
+                  "PGASetCrossoverProb: Invalid value of crossover_prob:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &crossover_prob);
+    else
+        ctx->ga.CrossoverProb = crossover_prob;
+
+    PGADebugExited("PGASetCrossoverProb");
+}
+
+/*U****************************************************************************
+   PGASetUniformCrossoverProb - Probability used in uniform crossover
+   to specify that an allele value value be selected from a particular
+   parent. The default is 0.6.  The crossover type must have been set
+   to PGA_CROSSOVER_UNIFORM with PGASetCrossoverType for this function
+   call to have any effect.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      p   - the crossover probability
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetUniformCrossoverProb(ctx,0.9);
+
+****************************************************************************U*/
+void PGASetUniformCrossoverProb( PGAContext *ctx, double uniform_cross_prob)
+{
+    PGADebugEntered("PGASetUniformCrossoverProb");
+
+    if ((uniform_cross_prob < 0.0) || (uniform_cross_prob > 1.0))
+        PGAError ( ctx,
+                  "PGASetUniformCrossoverProb: Invalid value of "
+                  "uniform_cross_prob:", PGA_FATAL, PGA_DOUBLE,
+                  (void *) &uniform_cross_prob);
+    else
+        ctx->ga.UniformCrossProb = uniform_cross_prob;
+
+    PGADebugExited("PGASetUniformCrossoverProb");
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/debug.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/debug.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/debug.c	(revision 6168)
@@ -0,0 +1,1578 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: debug.c: This file contains routines for debugging
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+******************************************************************************/
+
+#include "pgapack.h"
+
+/******************************************************************************
+ We need two numbering schemes:
+
+   (1) A list of debug levels (numbers) the user types to get certain types
+       of prints
+   (2) A unique integer debug value for each routine
+
+ The way this works is that the user specified debug level, which we
+ arbitrarily restrict to be an integer between 1--100, is mapped to a
+ set of actual debug values which are in the range of 101--inf
+
+ Note that the set of debuglevels we define for the user are between 0--100,
+ and that all *real* values for a routine (each routine has a debug value
+ associated with it) are > 100 and < PGA_DEBUG_NUMFLAGS
+
+  0 Trace all debug prints
+
+  1 Reserved for the user
+    :                   :
+ 10 Reserved for the user
+ 11 Trace high-level functions
+ 12 Trace all function entries
+ 13 Trace all function exits
+
+ 20 Trace high-level parallel functions
+ 21 Trace all parallel functions
+ 22 Trace all send calls (PGA_DEBUG_SEND)
+ 23 Trace all receive calls (PGA_DEBUG_RECV)
+
+ 30 Trace BINARY    functions
+ 32 Trace INTEGER   functions
+ 34 Trace REAL      functions
+ 36 Trace CHARACTER functions
+
+ 40 Trace population creation functions
+ 42 Trace select functions
+ 44 Trace mutation functions
+ 46 Trace crossover functions
+ 48 Trace function evaluation functions
+ 50 Trace fitness calculation  functions
+ 52 Trace duplicate checking functions
+ 54 Trace restart functions
+ 56 Trace reporting functions
+ 58 Trace stopping functions
+ 60 Trace sorting functions
+ 62 Trace random number functions
+ 64 Trace system routines
+ 66 Trace utility functions
+
+ 80 Trace memory allocations
+ 82 Trace variable print statements
+******************************************************************************/
+
+#if OPTIMIZE==0
+typedef struct
+{
+        char    PGAFuncName[36];
+        int     PGAFuncNum;
+} PGAFuncRec;
+
+int        PGANumFcns;
+
+PGAFuncRec PGAFuncIndex[PGA_DEBUG_MAXPGAPACKFUNCTIONS] =
+{
+/* Binary Routines 100 - 149 */
+        { "PGABinaryCreateString",          100 },
+        { "PGABinaryMutation",              101 },
+        { "PGABinaryOneptCrossover",        102 },
+        { "PGABinaryTwoptCrossover",        103 },
+        { "PGABinaryUniformCrossover",      104 },
+        { "PGABinaryPrintString",           105 },
+        { "PGABinaryCopyString",            106 },
+        { "PGABinaryDuplicate",             107 },
+        { "PGABinaryInitString",            108 },
+        { "PGABinaryBuildDatatype",         109 },
+        { "PGASetBinaryAllele",             110 },
+        { "PGAGetBinaryAllele",             111 },
+        { "PGABinaryHammingDistance",       120 },
+        { "PGABinaryPrint",                 121 },
+        { "PGAGetBinaryInitProb",           122 },
+        { "PGASetBinaryInitProb",           123 },
+
+/* Integer Routines 150 - 199 */
+        { "PGAIntegerCreateString",         150 },
+        { "PGAIntegerMutation",             151 },
+        { "PGAIntegerOneptCrossover",       152 },
+        { "PGAIntegerTwoptCrossover",       153 },
+        { "PGAIntegerUniformCrossover",     154 },
+        { "PGAIntegerPrintString",          155 },
+        { "PGAIntegerCopyString",           156 },
+        { "PGAIntegerDuplicate",            157 },
+        { "PGAIntegerInitString",           158 },
+        { "PGAIntegerBuildDatatype",        159 },
+        { "PGASetIntegerAllele",            160 },
+        { "PGAGetIntegerAllele",            161 },
+        { "PGASetIntegerInitPermute",       170 },
+        { "PGASetIntegerInitRange",         171 },
+        { "PGAGetIntegerInitType",          172 },
+        { "PGAGetMinIntegerInitValue",      173 },
+        { "PGAGetMaxIntegerInitValue",      174 },
+
+/* Real Routines 200 - 249 */
+        { "PGARealCreateString",            200 },
+        { "PGARealMutation",                201 },
+        { "PGARealOneptCrossover",          202 },
+        { "PGARealTwoptCrossover",          203 },
+        { "PGARealUniformCrossover",        204 },
+        { "PGARealPrintString",             205 },
+        { "PGARealCopyString",              206 },
+        { "PGARealDuplicate",               207 },
+        { "PGARealInitString",              208 },
+        { "PGARealBuildDatatype",           209 },
+        { "PGASetRealAllele",               210 },
+        { "PGAGetRealAllele",               211 },
+        { "PGASetRealInitPercent",          220 },
+        { "PGASetRealInitRange",            221 },
+        { "PGAGetMinRealInitValue",         222 },
+        { "PGAGetMaxRealInitValue",         223 },
+
+/* Character Routines 250 - 299 */
+        { "PGACharacterCreateString",       250 },
+        { "PGACharacterMutation",           251 },
+        { "PGACharacterOneptCrossover",     252 },
+        { "PGACharacterTwoptCrossover",     253 },
+        { "PGACharacterUniformCrossover",   254 },
+        { "PGACharacterPrintString",        255 },
+        { "PGACharacterCopyString",         256 },
+        { "PGACharacterDuplicate",          257 },
+        { "PGACharacterInitString",         258 },
+        { "PGACharacterBuildDatatype",      259 },
+        { "PGASetCharacterAllele",          260 },
+        { "PGAGetCharacterAllele",          261 },
+        { "PGASetCharacterInitType",        270 },
+
+/* Operators Routines 300 - 499 */
+        /* create.c */
+        { "PGACreate",                      300 },
+        { "PGASetUp",                       301 },
+        { "PGACreatePop",                   302 },
+        { "PGACreateIndividual",            303 },
+        { "PGAGetRandomInitFlag",           304 },
+        { "PGASetRandomInitFlag",           305 },
+
+        /* cross.c */
+        { "PGACrossover",                   310 },
+        { "PGAGetCrossoverType",            311 },
+        { "PGAGetCrossoverProb",            312 },
+        { "PGAGetUniformCrossoverProb",     313 },
+        { "PGASetCrossoverType",            314 },
+        { "PGASetCrossoverProb",            315 },
+        { "PGASetUniformCrossoverProb",     316 },
+
+        /* pop.c */
+        { "PGASortPop",                     320 },
+        { "PGAGetPopSize",                  321 },
+        { "PGAGetNumReplaceValue",          322 },
+        { "PGAGetPopReplaceType",           323 },
+        { "PGAGetSortedPopIndex",           324 },
+        { "PGASetPopSize",                  325 },
+        { "PGASetNumReplaceValue",          326 },
+        { "PGASetPopReplaceType",           327 },
+
+        /* mutation.c */
+        { "PGAMutate",                      330 },
+        { "PGAGetMutationType",             331 },
+        { "PGAGetMutationRealValue",        332 },
+        { "PGAGetMutationIntegerValue",     333 },
+        { "PGAGetMutationProb",             334 },
+        { "PGASetMutationType",             335 },
+        { "PGASetMutationRealValue",        336 },
+        { "PGASetMutationIntegerValue",     337 },
+        { "PGASetMutationProb",             338 },
+        { "PGASetMutationBoundedFlag",      400 },  /* 400--499 */
+        { "PGAGetMutationBoundedFlag",      401 },  /* 400--499 */
+
+        /* duplcate.c */
+        { "PGADuplicate",                   340 },
+        { "PGAChange",                      341 },
+        { "PGASetNoDuplicatesFlag",         342 },
+        { "PGAGetNoDuplicatesFlag",         343 },
+
+        /* pga.c */
+        { "PGARunMutationAndCrossover",     350 },
+        { "PGARunMutationOrCrossover",      351 },
+        { "PGAUpdateGeneration",            352 },
+        { "PGAGetDataType",                 353 },
+        { "PGAGetOptDirFlag",               354 },
+        { "PGAGetStringLength",             355 },
+        { "PGAGetGAIterValue",              356 },
+        { "PGAGetMutationOrCrossoverFlag",  357 },
+        { "PGAGetMutationAndCrossoverFlag", 358 },
+        { "PGASetMutationOrCrossoverFlag",  359 },
+        { "PGASetMutationAndCrossoverFlag", 360 },
+        { "PGARun",                         361 },
+
+        /* restart.c */
+        { "PGARestart",                     370 },
+        { "PGAGetRestartFlag",              371 },
+        { "PGAGetRestartFrequencyValue",    372 },
+        { "PGAGetRestartAlleleChangeProb",  373 },
+        { "PGASetRestartFlag",              374 },
+        { "PGASetRestartFrequencyValue",    375 },
+        { "PGASetRestartAlleleChangeProb",  376 },
+
+        /* select.c */
+        { "PGASelect",                      380 },
+        { "PGASelectProportional",          381 },
+        { "PGASelectSUS",                   382 },
+        { "PGASelectTournament",            383 },
+        { "PGASelectPTournament",           384 },
+        { "PGASelectNextIndex",             385 },
+        { "PGAGetSelectType",               386 },
+        { "PGAGetPTournamentProb",          387 },
+        { "PGASetSelectType",               388 },
+        { "PGASetPTournamentProb",          389 },
+
+        /* stop.c */
+        { "PGAGetStoppingRuleType",         390 },
+        { "PGASetStoppingRuleType",         391 },
+        { "PGAGetMaxGAIterValue",           392 },
+        { "PGASetMaxGAIterValue",           393 },
+        { "PGACheckStoppingConditions",     394 },
+        { "PGASetMaxNoChangeValue",         395 },
+        { "PGASetMaxSimilarityValue",       396 },
+        { "PGASetTgtFitnessVal",			398 },
+        { "PGASetFitnessTol",				399 },
+        { "PGASetTgtFitnessVariance",		400 },
+        { "PGASetVarTol",					401 },
+        { "PGASetTgtElapsedTime",			402 },
+	{ "PGADone",                        397 },
+
+/* Fitness and Evaluation Routines 500 - 599 */
+        /* evaluate.c */
+        { "PGAGetRealFromBinary",           500 },
+        { "PGAGetRealFromGrayCode",         501 },
+        { "PGAEncodeRealAsBinary",          502 },
+        { "PGAEncodeRealAsGrayCode",        503 },
+        { "PGAMapIntegerToReal",            504 },
+        { "PGAMapRealToInteger",            505 },
+        { "PGAEncodeIntegerAsBinary",       506 },
+        { "PGAEncodeIntegerAsGrayCode",     507 },
+        { "PGAGetIntegerFromBinary",        508 },
+        { "PGAGetIntegerFromGrayCode",      509 },
+        { "PGAEvaluate",                    510 },
+	{ "PGAEvaluateSeq",                 515 },
+	{ "PGAEvaluateCoop",                516 },
+	{ "PGAEvaluateSlave",               517 },
+        { "PGASetEvaluation",               511 },
+        { "PGASetEvaluationUpToDateFlag",   512 },
+        { "PGAGetEvaluation",               513 },
+        { "PGAGetEvaluationUpToDateFlag",   514 },
+
+        /* fitness.c */
+        { "PGAFitness",                     520 },
+        { "PGAFitnessLinearNormal",         521 },
+        { "PGAFitnessLinearRank",           522 },
+        { "PGAFitnessMinReciprocal",        523 },
+        { "PGAFitnessMinCmax",              524 },
+        { "PGARank",                        525 },
+        { "PGAGetFitness",                  526 },
+        { "PGAGetFitnessType",              527 },
+        { "PGAGetFitnessMinType",           528 },
+        { "PGAGetMaxFitnessRank",           529 },
+        { "PGASetFitnessType",              530 },
+        { "PGASetFitnessMinType",           531 },
+        { "PGASetMaxFitnessRank",           532 },
+        { "PGASetFitnessCmaxValue",         533 },
+        { "PGAGetFitnessCmaxValue",         534 },
+
+/* Parallel Routines 600 - 699 */
+        { "PGABuildDatatype",               600 },
+        { "PGASendIndividual",              601 },
+        { "PGAReceiveIndividual",           602 },
+        { "PGASendReceiveIndividual",       603 },
+        { "PGAEvaluateMS",                  605 },
+        { "PGAGetRank",                     607 },
+        { "PGAGetNumProcs",                 608 },
+        { "PGASetCommunicator",             609 },
+        { "PGAGetCommunicator",             610 },
+        { "PGASetNumIslands",               611 },
+        { "PGAGetNumIslands",               612 },
+        { "PGASetNumDemes",                 613 },
+        { "PGAGetNumDemes",                 614 },
+        { "PGARunGM",                       615 },
+        { "PGARunIM",                       616 },
+        { "PGARunNM",                       617 },
+
+/* System and Utility 700 - 799 */
+        /* system.c */
+        { "PGAError",                       700 },
+        { "PGAUsage",                       702 },
+        { "PGAPrintVersionNumber",          703 },
+        { "PGAGetMaxMachineIntValue",       704 },
+        { "PGAGetMinMachineIntValue",       705 },
+        { "PGAGetMaxMachineDoubleValue",    706 },
+        { "PGAGetMinMachineDoubleValue",    707 },
+        { "PGADestroy",                     708 },
+
+        /* utility.c */
+        { "PGAMean",                        710 },
+        { "PGAStddev",                      711 },
+        { "PGACopyIndividual",              712 },
+        { "PGARound",                       713 },
+        { "PGACheckSum",                    714 },
+        { "PGAGetWorstIndex",               715 },
+        { "PGAGetBestIndex",                716 },
+        { "PGAGetIndividual",               717 },
+        { "PGAUpdateAverage",               718 },
+        { "PGAUpdateOnline",                719 },
+        { "PGAUpdateOffline",               720 },
+        { "PGAComputeSimilarity",           721 },
+
+        /* cmdline.c */
+        { "PGAReadCmdLine",                 730 },
+        { "PGAParseDebugArg",               731 },
+        { "PGAStripArgs",                   732 },
+
+        /* debug.c */
+        { "PGADebugPrint",                  740 },
+        { "PGAGetDebugFlag",                741 },
+        { "PGAPrintDebugOptions",           743 },
+        { "PGASetDebugLevel",               744 },
+
+        /* random.c */
+        { "PGARandomFlip",                  750 },
+        { "PGARandomInterval",              751 },
+        { "PGARandom01",                    752 },
+        { "PGARandomUniform",               753 },
+        { "PGARandomGaussian",              754 },
+        { "PGAGetRandomSeed",               755 },
+        { "PGASetRandomSeed",               756 },
+
+/* Miscellaneous Routines 800 - 899 */
+        /* hamming.c */
+        { "PGAHammingDistance",             800 },
+
+        /* heap.c */
+        { "PGADblHeapSort",                 810 },
+        { "PGADblHeapify",                  811 },
+        { "PGADblAdjustHeap",               812 },
+        { "PGAIntHeapSort",                 813 },
+        { "PGAIntHeapify",                  814 },
+        { "PGAIntAdjustHeap",               815 },
+
+        /* report.c */
+        { "PGAPrintPopulation",             820 },
+        { "PGAPrintIndividual",             821 },
+        { "PGAPrintReport",                 822 },
+        { "PGAPrintContextVariable",        823 },
+        { "PGAPrintString",                 824 },
+        { "PGAGetPrintFrequencyValue",      825 },
+        { "PGASetPrintFrequencyValue",      826 },
+        { "PGASetPrintOptions",             827 },
+
+        /* user.c */
+        { "PGASetUserFunction",             830 }
+};
+
+
+/*I****************************************************************************
+   PGASortDebugIndex - Sort the index of function names alphabetically.
+
+   Inputs:
+
+   Output:
+
+   Example:
+
+****************************************************************************I*/
+void PGASortFuncNameIndex(PGAContext *ctx)
+{
+
+    /*  See how many functions are in the index */
+    for (PGANumFcns=0; PGAFuncIndex[PGANumFcns].PGAFuncName[0]; PGANumFcns++) ;
+
+    qsort(PGAFuncIndex, PGANumFcns, sizeof(PGAFuncRec),
+	  (int (*) (const void *, const void *)) &strcmp);
+}
+
+
+/*U****************************************************************************
+  PGADebugPrint - Write debugging information
+
+  Category: Debugging
+
+  Inputs:
+     ctx       - context variable
+     level     - a symbolic constant that maps to the type of print requested
+                 (e.g., an entry or exit print).  Valid values are
+                 PGA_DEBUG_ENTERED, PGA_DEBUG_EXIT, PGA_DEBUG_MALLOC,
+                 PGA_DEBUG_PRINTVAR, PGA_DEBUG_SEND, and PGA_DEBUG_RECV.
+     funcname  - the name of the function that called this routine
+     msg       - message to print
+     datatype  - a symbolic constant that maps to the data type of the
+                 parameter data.  Valid choices are PGA_INT, PGA_DOUBLE,
+                 PGA_CHAR and PGA_VOID (no data).
+     data      - a pointer, whose contents will be interpreted based upon the
+                 datatype parameter (or NULL, if PGA_VOID).
+
+  Outputs:
+     The debugging information is printed to stderr.
+
+  Example:
+     If the debugging level includes printing variables (level 82), print the
+     value of the integer variable num as a debugging tool in the routine
+     Add2Nums
+
+     PGAContext *ctx;
+     int num;
+     :
+     PGADebugPrint(ctx, PGA_DEBUG_PRINTVAR, "Add2Nums", "num = ", PGA_INT,
+                   (void *) &num);
+
+****************************************************************************U*/
+void PGADebugPrint( PGAContext *ctx, int level, char *funcname,
+                   char *msg, int datatype, void *data )
+{
+     int rank;
+
+     /*  Added check if level > 10 so that PGAGetDebugFlag is only called
+      *  if it is _not_ a user debug level.
+      */
+
+     if (ctx->debug.PGADebugFlags[0]     ||
+         ctx->debug.PGADebugFlags[level] ||
+         ((level > 10) && PGAGetDebugFlag (ctx, funcname)))
+     {
+          MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+          switch (datatype)
+          {
+          case PGA_VOID:
+               fprintf(stdout, "%4d: %-32s: %s\n", rank, funcname, msg);
+               break;
+          case PGA_INT:
+               switch (*(int *) data)
+               {
+               case PGA_TEMP1:
+                    fprintf(stdout, "%4d: %-32s: %s PGA_TEMP1\n", rank,
+                            funcname, msg);
+                    break;
+               case PGA_TEMP2:
+                    fprintf(stdout, "%4d: %-32s: %s PGA_TEMP2\n", rank,
+                            funcname, msg);
+                    break;
+               case PGA_OLDPOP:
+                    fprintf(stdout, "%4d: %-32s: %s PGA_OLDPOP\n", rank,
+                            funcname, msg);
+                    break;
+               case PGA_NEWPOP:
+                    fprintf(stdout, "%4d: %-32s: %s PGA_NEWPOP\n", rank,
+                            funcname, msg);
+                    break;
+               default:
+                    fprintf(stdout, "%4d: %-32s: %s %d\n", rank, funcname, msg,
+                            *(int *) data);
+                    break;
+               }
+               break;
+          case PGA_DOUBLE:
+               fprintf(stdout, "%4d: %-32s: %s %e\n", rank,
+                       funcname, msg, *(double *) data);
+               break;
+          case PGA_CHAR:
+               fprintf(stdout, "%4d: %-32s: %s %s\n", rank,
+                       funcname, msg,  (char *) data);
+               break;
+          default:
+               fprintf(stderr, "PGADebugPrint: Invalid value of datatype: %d",
+                       datatype);
+               exit(-1);
+               break;
+          }
+     }
+}
+
+/*U****************************************************************************
+   PGASetDebugLevel - Turn on a debug level.  Only valid if PGAPack
+   was compiled to include debugging calls.  See the user guide for details.
+
+   Category: Debugging
+
+   Inputs:
+      ctx   - context variable
+      level - the debug level to set to PGA_TRUE.
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetDebugLevel(ctx, 70)
+
+****************************************************************************U*/
+void PGASetDebugLevel(PGAContext *ctx, int level)
+{
+    if ((level < 11) || (level > 100)) {
+        ctx->debug.PGADebugFlags[level] = PGA_TRUE;
+    } else {
+        /*  Call the appropriate routine to clear the set of levels.  */
+        switch (level) {
+        case 11:  PGASetDebugFlag11(ctx, PGA_TRUE); break;
+        case 20:  PGASetDebugFlag20(ctx, PGA_TRUE); break;
+        case 21:  PGASetDebugFlag21(ctx, PGA_TRUE); break;
+        case 30:  PGASetDebugFlag30(ctx, PGA_TRUE); break;
+        case 32:  PGASetDebugFlag32(ctx, PGA_TRUE); break;
+        case 34:  PGASetDebugFlag34(ctx, PGA_TRUE); break;
+        case 36:  PGASetDebugFlag36(ctx, PGA_TRUE); break;
+        case 40:  PGASetDebugFlag40(ctx, PGA_TRUE); break;
+        case 42:  PGASetDebugFlag42(ctx, PGA_TRUE); break;
+        case 44:  PGASetDebugFlag44(ctx, PGA_TRUE); break;
+        case 46:  PGASetDebugFlag46(ctx, PGA_TRUE); break;
+        case 48:  PGASetDebugFlag48(ctx, PGA_TRUE); break;
+        case 50:  PGASetDebugFlag50(ctx, PGA_TRUE); break;
+        case 52:  PGASetDebugFlag52(ctx, PGA_TRUE); break;
+        case 54:  PGASetDebugFlag54(ctx, PGA_TRUE); break;
+        case 56:  PGASetDebugFlag56(ctx, PGA_TRUE); break;
+        case 58:  PGASetDebugFlag58(ctx, PGA_TRUE); break;
+        case 60:  PGASetDebugFlag60(ctx, PGA_TRUE); break;
+        case 62:  PGASetDebugFlag62(ctx, PGA_TRUE); break;
+        case 64:  PGASetDebugFlag64(ctx, PGA_TRUE); break;
+        case 66:  PGASetDebugFlag66(ctx, PGA_TRUE); break;
+        }
+    }
+}
+
+/*U****************************************************************************
+   PGAClearDebugLevel - Turn off a debul level.  Only valid if PGAPack
+   was compiled to include debugging calls.  See the user guide for details.
+
+   Category: Debugging
+
+   Inputs:
+      ctx   - context variable
+      level - the debug level to set to PGA_FALSE.
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGAClearDebugLevel(ctx, 70)
+
+****************************************************************************U*/
+void PGAClearDebugLevel(PGAContext *ctx, int level)
+{
+    if ((level < 11) || (level > 100)) {
+        ctx->debug.PGADebugFlags[level] = PGA_FALSE;
+    } else {
+        /*  Call the appropriate routine to clear the set of levels.  */
+        switch (level) {
+        case 11:  PGASetDebugFlag11(ctx, PGA_FALSE); break;
+        case 20:  PGASetDebugFlag20(ctx, PGA_FALSE); break;
+        case 21:  PGASetDebugFlag21(ctx, PGA_FALSE); break;
+        case 30:  PGASetDebugFlag30(ctx, PGA_FALSE); break;
+        case 32:  PGASetDebugFlag32(ctx, PGA_FALSE); break;
+        case 34:  PGASetDebugFlag34(ctx, PGA_FALSE); break;
+        case 36:  PGASetDebugFlag36(ctx, PGA_FALSE); break;
+        case 40:  PGASetDebugFlag40(ctx, PGA_FALSE); break;
+        case 42:  PGASetDebugFlag42(ctx, PGA_FALSE); break;
+        case 44:  PGASetDebugFlag44(ctx, PGA_FALSE); break;
+        case 46:  PGASetDebugFlag46(ctx, PGA_FALSE); break;
+        case 48:  PGASetDebugFlag48(ctx, PGA_FALSE); break;
+        case 50:  PGASetDebugFlag50(ctx, PGA_FALSE); break;
+        case 52:  PGASetDebugFlag52(ctx, PGA_FALSE); break;
+        case 54:  PGASetDebugFlag54(ctx, PGA_FALSE); break;
+        case 56:  PGASetDebugFlag56(ctx, PGA_FALSE); break;
+        case 58:  PGASetDebugFlag58(ctx, PGA_FALSE); break;
+        case 60:  PGASetDebugFlag60(ctx, PGA_FALSE); break;
+        case 62:  PGASetDebugFlag62(ctx, PGA_FALSE); break;
+        case 64:  PGASetDebugFlag64(ctx, PGA_FALSE); break;
+        case 66:  PGASetDebugFlag66(ctx, PGA_FALSE); break;
+        }
+    }
+}
+
+/*U****************************************************************************
+   PGASetDebugLevelByName - Turn on debugging of the named function.
+
+   Category: Debugging
+
+   Inputs:
+       ctx        - context variable
+       funcname   - name of the function to turn on debugging output
+
+   Outputs:
+
+   Example:
+       PGAContext *ctx;
+       :
+       PGASetDebugLevelByName(ctx, "PGAGetBinaryAllele");
+
+****************************************************************************U*/
+void PGASetDebugLevelByName(PGAContext *ctx, char *funcname)
+{
+    int  level;
+
+    level = PGAGetDebugLevelOfName(ctx, funcname);
+    ctx->debug.PGADebugFlags[level] = PGA_TRUE;
+}
+
+/*U****************************************************************************
+   PGAClearDebugLevelByName - Turn off debugging of the named function.
+
+   Category: Debugging
+
+   Inputs:
+       ctx        - context variable
+       funcname   - name of the function to turn on debugging output
+
+   Outputs:
+
+   Example:
+       PGAContext *ctx;
+       :
+       PGAClearDebugLevelByName(ctx, "PGAGetBinaryAllele");
+
+****************************************************************************U*/
+void PGAClearDebugLevelByName(PGAContext *ctx, char *funcname)
+{
+    int  level;
+
+    level = PGAGetDebugLevelOfName(ctx, funcname);
+    ctx->debug.PGADebugFlags[level] = PGA_FALSE;
+}
+
+
+/*I****************************************************************************
+   PGAGetDebugLevelOfName - returns the debug level of the named function
+   Internally, it performs a binary search on the run-time sorted list of
+   fucntions in PGAFuncIndex.
+
+   Inputs:
+       ctx       - context variable
+       funcname  - the name of the function
+
+   Outputs:
+       The debug level value of the function.  That is, PGAFuncNum associated
+       with funcname in PGAFuncIndex.
+
+   Example:
+
+
+****************************************************************************I*/
+int PGAGetDebugLevelOfName(PGAContext *ctx, char *funcname)
+{
+    int     l, h;
+    int     m, missing;
+
+    /*  Binary Search  */
+    l = 0;
+    h = PGANumFcns-1;
+    while (l <= h) {
+	m = (l+h)/2 + (l+h)%2;  /*  Actually, floor((l+h)/2)  */
+	missing = strcmp(funcname, PGAFuncIndex[m].PGAFuncName);
+
+        if (missing == 0) {
+            break;
+        } else {
+            if (missing < 0) {
+                h = m - 1;
+            } else {
+                l = m + 1;
+            }
+        }
+    }
+
+    if (missing) {
+	fprintf(stderr, "PGAGetDebugFlag: Function missing from "
+		"PGAFuncIndex: '%s'\n", funcname);
+	PGADestroy(ctx);
+	exit(-1);
+    } 
+
+    return(PGAFuncIndex[m].PGAFuncNum);
+}
+
+/*I****************************************************************************
+  PGAGetDebugFlag - checks whether the flag to do a debug print in routine
+  funcname has been set.  Returns PGA_TRUE if so, otherwise PGA_FALSE.
+  If the name is not in the function name database, an error message is
+  printed and the program terminates.
+
+  Inputs:
+     ctx      - context variable
+     funcname - name of the function in question
+
+  Outputs:
+
+  Example:
+     PGAContext *ctx;
+     int IsItSet;
+
+     IsItSet = PGAGetDebugFlag(ctx, "PGAGetDebugFlags");
+
+****************************************************************************I*/
+int PGAGetDebugFlag(PGAContext *ctx, char *funcname)
+{
+     int level;
+
+     level = PGAGetDebugLevelOfName(ctx, funcname);
+     return ctx->debug.PGADebugFlags[level];
+}
+
+
+/*I****************************************************************************
+   PGASetDebugFlag11 - Set the debug flags for all functions at debug level 11
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag11(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[300] = Flag; /*PGACreate*/
+   ctx->debug.PGADebugFlags[301] = Flag; /*PGASetUp*/
+   ctx->debug.PGADebugFlags[304] = Flag; /*PGAGetRandomInitFlag*/
+   ctx->debug.PGADebugFlags[305] = Flag; /*PGASetRandomInitFlag*/
+
+   ctx->debug.PGADebugFlags[310] = Flag; /*PGACrossover*/
+   ctx->debug.PGADebugFlags[311] = Flag; /*PGAGetCrossoverType*/
+   ctx->debug.PGADebugFlags[312] = Flag; /*PGAGetCrossoverProb*/
+   ctx->debug.PGADebugFlags[313] = Flag; /*PGAGetUniformCrossoverProb*/
+   ctx->debug.PGADebugFlags[314] = Flag; /*PGASetCrossoverType*/
+   ctx->debug.PGADebugFlags[315] = Flag; /*PGASetCrossoverProb*/
+   ctx->debug.PGADebugFlags[316] = Flag; /*PGASetUniformCrossoverProb*/
+
+   ctx->debug.PGADebugFlags[320] = Flag; /*PGASort*/
+   ctx->debug.PGADebugFlags[321] = Flag; /*PGAGetPopSize*/
+   ctx->debug.PGADebugFlags[322] = Flag; /*PGAGetNumReplaceValue*/
+   ctx->debug.PGADebugFlags[323] = Flag; /*PGAGetPopReplaceType*/
+   ctx->debug.PGADebugFlags[325] = Flag; /*PGASetPopSize*/
+   ctx->debug.PGADebugFlags[326] = Flag; /*PGASetNumReplaceValue*/
+   ctx->debug.PGADebugFlags[327] = Flag; /*PGASetPopReplaceType*/
+
+   ctx->debug.PGADebugFlags[330] = Flag; /*PGAMutate*/
+   ctx->debug.PGADebugFlags[331] = Flag; /*PGAGetMutationType*/
+   ctx->debug.PGADebugFlags[332] = Flag; /*PGAGetMutationRealValue*/
+   ctx->debug.PGADebugFlags[333] = Flag; /*PGAGetMutationIntegerValue*/
+   ctx->debug.PGADebugFlags[334] = Flag; /*PGAGetMutationProb*/
+   ctx->debug.PGADebugFlags[335] = Flag; /*PGASetMutationType*/
+   ctx->debug.PGADebugFlags[336] = Flag; /*PGASetMutationRealValue*/
+   ctx->debug.PGADebugFlags[337] = Flag; /*PGASetMutationIntegerValue*/
+   ctx->debug.PGADebugFlags[338] = Flag; /*PGASetMutationProb*/
+   ctx->debug.PGADebugFlags[400] = Flag; /*PGASetMutationBoundedFlag*/
+   ctx->debug.PGADebugFlags[401] = Flag; /*PGAGetMutationBoundedFlag*/
+
+   ctx->debug.PGADebugFlags[340] = Flag; /*PGADuplicate*/
+   ctx->debug.PGADebugFlags[341] = Flag; /*PGAChange*/
+   ctx->debug.PGADebugFlags[342] = Flag; /*PGASetNoDuplicatesFlag*/
+   ctx->debug.PGADebugFlags[343] = Flag; /*PGAGetNoDuplicatesFlag*/
+
+   ctx->debug.PGADebugFlags[350] = Flag; /*PGARunMutationAndCrossover*/
+   ctx->debug.PGADebugFlags[351] = Flag; /*PGARunMutationOrCrossover*/
+   ctx->debug.PGADebugFlags[352] = Flag; /*PGAUpdateGeneration*/
+   ctx->debug.PGADebugFlags[353] = Flag; /*PGAGetDataType*/
+   ctx->debug.PGADebugFlags[354] = Flag; /*PGAGetOptDirFlag*/
+   ctx->debug.PGADebugFlags[355] = Flag; /*PGAGetStringLength*/
+   ctx->debug.PGADebugFlags[356] = Flag; /*PGAGetGAIterValue*/
+   ctx->debug.PGADebugFlags[357] = Flag; /*PGAGetMutationOrCrossoverFlag*/
+   ctx->debug.PGADebugFlags[358] = Flag; /*PGAGetMutationAndCrossoverFlag*/
+   ctx->debug.PGADebugFlags[359] = Flag; /*PGASetMutationOrCrossoverFlag*/
+   ctx->debug.PGADebugFlags[360] = Flag; /*PGASetMutationAndCrossoverFlag*/
+   ctx->debug.PGADebugFlags[361] = Flag; /*PGARun*/
+
+   ctx->debug.PGADebugFlags[370] = Flag; /*PGARestart*/
+   ctx->debug.PGADebugFlags[371] = Flag; /*PGAGetRestartFlag*/
+   ctx->debug.PGADebugFlags[372] = Flag; /*PGAGetRestartFrequencyValue*/
+   ctx->debug.PGADebugFlags[373] = Flag; /*PGAGetRestartAlleleChangeProb*/
+   ctx->debug.PGADebugFlags[374] = Flag; /*PGASetRestartFlag*/
+   ctx->debug.PGADebugFlags[375] = Flag; /*PGASetRestartFrequencyValue*/
+   ctx->debug.PGADebugFlags[376] = Flag; /*PGASetRestartAlleleChangeProb*/
+
+   ctx->debug.PGADebugFlags[380] = Flag; /*PGASelect*/
+   ctx->debug.PGADebugFlags[386] = Flag; /*PGAGetSelectType*/
+   ctx->debug.PGADebugFlags[387] = Flag; /*PGAGetPTournamentProb*/
+   ctx->debug.PGADebugFlags[388] = Flag; /*PGASetSelectType*/
+   ctx->debug.PGADebugFlags[389] = Flag; /*PGASetPTournamentProb*/
+
+   ctx->debug.PGADebugFlags[390] = Flag; /*PGAGetStoppingRuleType*/
+   ctx->debug.PGADebugFlags[391] = Flag; /*PGASetStoppingRuleType*/
+   ctx->debug.PGADebugFlags[392] = Flag; /*PGAGetMaxGAIterValue*/
+   ctx->debug.PGADebugFlags[393] = Flag; /*PGASetMaxGAIterValue*/
+   ctx->debug.PGADebugFlags[394] = Flag; /*PGACheckStoppingConditions*/
+   ctx->debug.PGADebugFlags[395] = Flag; /*PGASetMaxNoChangeValue*/
+   ctx->debug.PGADebugFlags[396] = Flag; /*PGASetMaxSimilarityValue*/
+   ctx->debug.PGADebugFlags[397] = Flag; /*PGADone*/
+
+   ctx->debug.PGADebugFlags[510] = Flag; /*PGAEvaluate*/
+
+   ctx->debug.PGADebugFlags[520] = Flag; /*PGAFitness*/
+   ctx->debug.PGADebugFlags[527] = Flag; /*PGAGetFitnessType*/
+   ctx->debug.PGADebugFlags[528] = Flag; /*PGAGetFitnessMinType*/
+   ctx->debug.PGADebugFlags[529] = Flag; /*PGAGetMaxFitnessRank*/
+   ctx->debug.PGADebugFlags[530] = Flag; /*PGASetFitnessType*/
+   ctx->debug.PGADebugFlags[531] = Flag; /*PGASetFitnessMinType*/
+   ctx->debug.PGADebugFlags[532] = Flag; /*PGASetMaxFitnessRank*/
+   ctx->debug.PGADebugFlags[533] = Flag; /*PGASetFitnessCmaxValue*/
+   ctx->debug.PGADebugFlags[534] = Flag; /*PGAGetFitnessCmaxValue*/
+
+   ctx->debug.PGADebugFlags[604] = Flag; /*PGARunMS*/
+   ctx->debug.PGADebugFlags[605] = Flag; /*PGAEvaluateMS*/
+   ctx->debug.PGADebugFlags[606] = Flag; /*PGAEvaluateDoneMS*/
+   ctx->debug.PGADebugFlags[607] = Flag; /*PGAGetRank*/
+   ctx->debug.PGADebugFlags[608] = Flag; /*PGAGetNumProcs*/
+   ctx->debug.PGADebugFlags[609] = Flag; /*PGASetCommunicator*/
+   ctx->debug.PGADebugFlags[610] = Flag; /*PGAGetCommunicator*/
+   ctx->debug.PGADebugFlags[611] = Flag; /*PGASetNumIslands*/
+   ctx->debug.PGADebugFlags[612] = Flag; /*PGAGetNumIslands*/
+   ctx->debug.PGADebugFlags[613] = Flag; /*PGASetNumDemes*/
+   ctx->debug.PGADebugFlags[614] = Flag; /*PGAGetNumDemes*/
+   ctx->debug.PGADebugFlags[615] = Flag; /*PGARunSeq*/
+   ctx->debug.PGADebugFlags[616] = Flag; /*PGARunIM*/
+   ctx->debug.PGADebugFlags[617] = Flag; /*PGARunNM*/
+
+   ctx->debug.PGADebugFlags[700] = Flag; /*PGAError*/
+   ctx->debug.PGADebugFlags[702] = Flag; /*PGAUsage*/
+   ctx->debug.PGADebugFlags[703] = Flag; /*PGAPrintVersionNumber*/
+   ctx->debug.PGADebugFlags[704] = Flag; /*PGAGetMaxMachineIntValue*/
+   ctx->debug.PGADebugFlags[705] = Flag; /*PGAGetMinMachineIntValue*/
+   ctx->debug.PGADebugFlags[706] = Flag; /*PGAGetMaxMachineRealValue*/
+   ctx->debug.PGADebugFlags[707] = Flag; /*PGAGetMinMachineRealValue*/
+   ctx->debug.PGADebugFlags[708] = Flag; /*PGADestroy*/
+
+   ctx->debug.PGADebugFlags[741] = Flag; /*PGAGetDebugFlag*/
+   ctx->debug.PGADebugFlags[742] = Flag; /*PGASetDebugFlag*/
+   ctx->debug.PGADebugFlags[743] = Flag; /*PGAPrintDebugOptions*/
+
+   ctx->debug.PGADebugFlags[800] = Flag; /*PGAHammingDistance*/
+
+   ctx->debug.PGADebugFlags[820] = Flag; /*PGAPrintPopulation*/
+   ctx->debug.PGADebugFlags[822] = Flag; /*PGAPrintReport*/
+   ctx->debug.PGADebugFlags[823] = Flag; /*PGAContextVariable*/
+   ctx->debug.PGADebugFlags[825] = Flag; /*PGAGetPrintFrequencyValue*/
+   ctx->debug.PGADebugFlags[826] = Flag; /*PGASetPrintFrequencyValue*/
+   ctx->debug.PGADebugFlags[827] = Flag; /*PGASetPrintOptions*/
+
+   ctx->debug.PGADebugFlags[830] = Flag; /*PGASetUserFunction*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag20 - Set the debug flags for all functions at debug level 20
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag20(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[604] = Flag; /*PGARunMS*/
+   ctx->debug.PGADebugFlags[605] = Flag; /*PGAEvaluateMS*/
+   ctx->debug.PGADebugFlags[606] = Flag; /*PGAEvaluateDoneMS*/
+   ctx->debug.PGADebugFlags[607] = Flag; /*PGAGetRank*/
+   ctx->debug.PGADebugFlags[608] = Flag; /*PGAGetNumProcs*/
+   ctx->debug.PGADebugFlags[609] = Flag; /*PGASetCommunicator*/
+   ctx->debug.PGADebugFlags[610] = Flag; /*PGAGetCommunicator*/
+   ctx->debug.PGADebugFlags[611] = Flag; /*PGASetNumIslands*/
+   ctx->debug.PGADebugFlags[612] = Flag; /*PGAGetNumIslands*/
+   ctx->debug.PGADebugFlags[613] = Flag; /*PGASetNumDemes*/
+   ctx->debug.PGADebugFlags[614] = Flag; /*PGAGetNumDemes*/
+   ctx->debug.PGADebugFlags[616] = Flag; /*PGARunIM*/
+   ctx->debug.PGADebugFlags[617] = Flag; /*PGARunNM*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag21 - Set the debug flags for all functions at debug level 21
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag21(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[600] = Flag; /*PGABuildDataType*/
+   ctx->debug.PGADebugFlags[601] = Flag; /*PGASendIndividual*/
+   ctx->debug.PGADebugFlags[602] = Flag; /*PGAReceiveIndividual*/
+   ctx->debug.PGADebugFlags[603] = Flag; /*PGASendReceiveIndividual*/
+   ctx->debug.PGADebugFlags[604] = Flag; /*PGARunMS*/
+   ctx->debug.PGADebugFlags[605] = Flag; /*PGAEvaluateMS*/
+   ctx->debug.PGADebugFlags[606] = Flag; /*PGAEvaluateDoneMS*/
+   ctx->debug.PGADebugFlags[607] = Flag; /*PGAGetRank*/
+   ctx->debug.PGADebugFlags[608] = Flag; /*PGAGetNumProcs*/
+   ctx->debug.PGADebugFlags[609] = Flag; /*PGASetCommunicator*/
+   ctx->debug.PGADebugFlags[610] = Flag; /*PGAGetCommunicator*/
+   ctx->debug.PGADebugFlags[611] = Flag; /*PGASetNumIslands*/
+   ctx->debug.PGADebugFlags[612] = Flag; /*PGAGetNumIslands*/
+   ctx->debug.PGADebugFlags[613] = Flag; /*PGASetNumDemes*/
+   ctx->debug.PGADebugFlags[614] = Flag; /*PGAGetNumDemes*/
+   ctx->debug.PGADebugFlags[616] = Flag; /*PGARunIM*/
+   ctx->debug.PGADebugFlags[617] = Flag; /*PGARunNM*/
+   ctx->debug.PGADebugFlags[714] = Flag; /*PGACheckSum*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag30 - Set the debug flags for all functions at debug level 30
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag30(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[100] = Flag; /*PGABinaryCreateString*/
+   ctx->debug.PGADebugFlags[101] = Flag; /*PGABinaryMutation*/
+   ctx->debug.PGADebugFlags[102] = Flag; /*PGABinaryOneptCrossover*/
+   ctx->debug.PGADebugFlags[103] = Flag; /*PGABinaryTwoptCrossover*/
+   ctx->debug.PGADebugFlags[104] = Flag; /*PGABinaryUniformCrossover*/
+   ctx->debug.PGADebugFlags[105] = Flag; /*PGABinaryPrintString*/
+   ctx->debug.PGADebugFlags[106] = Flag; /*PGABinaryCopyString*/
+   ctx->debug.PGADebugFlags[107] = Flag; /*PGABinaryDuplicate*/
+   ctx->debug.PGADebugFlags[108] = Flag; /*PGABinaryInitString*/
+   ctx->debug.PGADebugFlags[109] = Flag; /*PGABinaryBuildDatatype*/
+   ctx->debug.PGADebugFlags[110] = Flag; /*PGASetBinaryAllele*/
+   ctx->debug.PGADebugFlags[111] = Flag; /*PGAGetBinaryAllele*/
+   ctx->debug.PGADebugFlags[120] = Flag; /*PGABinaryHammingDistance*/
+   ctx->debug.PGADebugFlags[121] = Flag; /*PGABinaryPrint*/
+   ctx->debug.PGADebugFlags[122] = Flag; /*PGAGetBinaryInitProb*/
+   ctx->debug.PGADebugFlags[123] = Flag; /*PGASetBinaryInitProb*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag32 - Set the debug flags for all functions at debug level 32
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag32(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[150] = Flag; /*PGAIntegerCreateString*/
+   ctx->debug.PGADebugFlags[151] = Flag; /*PGAIntegerMutation*/
+   ctx->debug.PGADebugFlags[152] = Flag; /*PGAIntegerOneptCrossover*/
+   ctx->debug.PGADebugFlags[153] = Flag; /*PGAIntegerTwoptCrossover*/
+   ctx->debug.PGADebugFlags[154] = Flag; /*PGAIntegerUniformCrossover*/
+   ctx->debug.PGADebugFlags[155] = Flag; /*PGAIntegerPrintString*/
+   ctx->debug.PGADebugFlags[156] = Flag; /*PGAIntegerCopyString*/
+   ctx->debug.PGADebugFlags[157] = Flag; /*PGAIntegerDuplicate*/
+   ctx->debug.PGADebugFlags[158] = Flag; /*PGAIntegerInitString*/
+   ctx->debug.PGADebugFlags[159] = Flag; /*PGAIntegerBuildDatatype*/
+   ctx->debug.PGADebugFlags[160] = Flag; /*PGASetIntegerAllele*/
+   ctx->debug.PGADebugFlags[161] = Flag; /*PGAGetIntegerAllele*/
+   ctx->debug.PGADebugFlags[170] = Flag; /*PGASetIntegerInitPermute*/
+   ctx->debug.PGADebugFlags[171] = Flag; /*PGASetIntegerInitRange*/
+   ctx->debug.PGADebugFlags[172] = Flag; /*PGAGetIntegerInitType*/
+   ctx->debug.PGADebugFlags[173] = Flag; /*PGAGetMinIntegerInitValue*/
+   ctx->debug.PGADebugFlags[174] = Flag; /*PGAGetMaxIntegerInitValue*/
+   ctx->debug.PGADebugFlags[400] = Flag; /*PGASetMutationBoundedFlag*/
+   ctx->debug.PGADebugFlags[401] = Flag; /*PGAGetMutationBoundedFlag*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag34 - Set the debug flags for all functions at debug level 34
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag34(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[200] = Flag; /*PGARealCreateString*/
+   ctx->debug.PGADebugFlags[201] = Flag; /*PGARealMutation*/
+   ctx->debug.PGADebugFlags[202] = Flag; /*PGARealOneptCrossover*/
+   ctx->debug.PGADebugFlags[203] = Flag; /*PGARealTwoptCrossover*/
+   ctx->debug.PGADebugFlags[204] = Flag; /*PGARealUniformCrossover*/
+   ctx->debug.PGADebugFlags[205] = Flag; /*PGARealPrintString*/
+   ctx->debug.PGADebugFlags[206] = Flag; /*PGARealCopyString*/
+   ctx->debug.PGADebugFlags[207] = Flag; /*PGARealDuplicate*/
+   ctx->debug.PGADebugFlags[208] = Flag; /*PGARealInitString*/
+   ctx->debug.PGADebugFlags[209] = Flag; /*PGARealBuildDatatype*/
+   ctx->debug.PGADebugFlags[210] = Flag; /*PGASetRealAllele*/
+   ctx->debug.PGADebugFlags[211] = Flag; /*PGAGetRealAllele*/
+   ctx->debug.PGADebugFlags[220] = Flag; /*PGASetRealInitPercent*/
+   ctx->debug.PGADebugFlags[221] = Flag; /*PGASetRealInitRange*/
+   ctx->debug.PGADebugFlags[222] = Flag; /*PGAGetMinRealInitValue*/
+   ctx->debug.PGADebugFlags[223] = Flag; /*PGAGetMaxRealInitValue*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag36 - Set the debug flags for all functions at debug level 36
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag36(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[250] = Flag; /*PGACharacterCreateString*/
+   ctx->debug.PGADebugFlags[251] = Flag; /*PGACharacterMutation*/
+   ctx->debug.PGADebugFlags[252] = Flag; /*PGACharacterOneptCrossover*/
+   ctx->debug.PGADebugFlags[253] = Flag; /*PGACharacterTwoptCrossover*/
+   ctx->debug.PGADebugFlags[254] = Flag; /*PGACharacterUniformCrossover*/
+   ctx->debug.PGADebugFlags[255] = Flag; /*PGACharacterPrintString*/
+   ctx->debug.PGADebugFlags[256] = Flag; /*PGACharacterCopyString*/
+   ctx->debug.PGADebugFlags[257] = Flag; /*PGACharacterDuplicate*/
+   ctx->debug.PGADebugFlags[258] = Flag; /*PGACharacterInitString*/
+   ctx->debug.PGADebugFlags[259] = Flag; /*PGACharacterBuildDatatype*/
+   ctx->debug.PGADebugFlags[260] = Flag; /*PGASetCharacterAllele*/
+   ctx->debug.PGADebugFlags[261] = Flag; /*PGAGetCharacterAllele*/
+   ctx->debug.PGADebugFlags[270] = Flag; /*PGASetCharacterInitType*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag40 - Set the debug flags for all functions at debug level 40
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag40(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[100] = Flag; /*PGABinaryCreateString*/
+   ctx->debug.PGADebugFlags[108] = Flag; /*PGABinaryInitString*/
+   ctx->debug.PGADebugFlags[122] = Flag; /*PGAGetBinaryInitProb*/
+   ctx->debug.PGADebugFlags[123] = Flag; /*PGASetBinaryInitProb*/
+   ctx->debug.PGADebugFlags[250] = Flag; /*PGACharacterCreateString*/
+   ctx->debug.PGADebugFlags[258] = Flag; /*PGACharacterInitString*/
+   ctx->debug.PGADebugFlags[270] = Flag; /*PGASetCharacterInitType*/
+   ctx->debug.PGADebugFlags[300] = Flag; /*PGACreate*/
+   ctx->debug.PGADebugFlags[301] = Flag; /*PGASetUp*/
+   ctx->debug.PGADebugFlags[302] = Flag; /*PGACreatePop*/
+   ctx->debug.PGADebugFlags[303] = Flag; /*PGACreateIndividual*/
+   ctx->debug.PGADebugFlags[304] = Flag; /*PGAGetRandomInitFlag*/
+   ctx->debug.PGADebugFlags[305] = Flag; /*PGASetRandomInitFlag*/
+   ctx->debug.PGADebugFlags[150] = Flag; /*PGAIntegerCreateString*/
+   ctx->debug.PGADebugFlags[158] = Flag; /*PGAIntegerInitString*/
+   ctx->debug.PGADebugFlags[170] = Flag; /*PGASetIntegerInitPermute*/
+   ctx->debug.PGADebugFlags[171] = Flag; /*PGASetIntegerInitRange*/
+   ctx->debug.PGADebugFlags[172] = Flag; /*PGAGetIntegerInitType*/
+   ctx->debug.PGADebugFlags[173] = Flag; /*PGAGetMinIntegerInitValue*/
+   ctx->debug.PGADebugFlags[174] = Flag; /*PGAGetMaxIntegerInitValue*/
+   ctx->debug.PGADebugFlags[200] = Flag; /*PGARealCreateString*/
+   ctx->debug.PGADebugFlags[208] = Flag; /*PGARealInitString*/
+   ctx->debug.PGADebugFlags[220] = Flag; /*PGASetRealInitPercent*/
+   ctx->debug.PGADebugFlags[221] = Flag; /*PGASetRealInitRange*/
+   ctx->debug.PGADebugFlags[222] = Flag; /*PGAGetMinRealInitValue*/
+   ctx->debug.PGADebugFlags[223] = Flag; /*PGAGetMaxRealInitValue*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag42 - Set the debug flags for all functions at debug level 42
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag42(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[380] = Flag; /*PGASelect*/
+   ctx->debug.PGADebugFlags[381] = Flag; /*PGASelectProportional*/
+   ctx->debug.PGADebugFlags[382] = Flag; /*PGASelectSUS*/
+   ctx->debug.PGADebugFlags[383] = Flag; /*PGASelectTournament*/
+   ctx->debug.PGADebugFlags[384] = Flag; /*PGASelectPTournament*/
+   ctx->debug.PGADebugFlags[385] = Flag; /*PGASelectNextIndex*/
+   ctx->debug.PGADebugFlags[386] = Flag; /*PGAGetSelectType*/
+   ctx->debug.PGADebugFlags[387] = Flag; /*PGAGetPTournamentProb*/
+   ctx->debug.PGADebugFlags[388] = Flag; /*PGASetSelectType*/
+   ctx->debug.PGADebugFlags[389] = Flag; /*PGASetPTournamentProb*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag44 - Set the debug flags for all functions at debug level 44
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag44(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[101] = Flag; /*PGABinaryMutation*/
+   ctx->debug.PGADebugFlags[151] = Flag; /*PGAIntegerMutation*/
+   ctx->debug.PGADebugFlags[201] = Flag; /*PGARealMutation*/
+   ctx->debug.PGADebugFlags[251] = Flag; /*PGACharacterMutation*/
+   ctx->debug.PGADebugFlags[330] = Flag; /*PGAMutate*/
+   ctx->debug.PGADebugFlags[331] = Flag; /*PGAGetMutationType*/
+   ctx->debug.PGADebugFlags[332] = Flag; /*PGAGetMutationRealValue*/
+   ctx->debug.PGADebugFlags[333] = Flag; /*PGAGetMutationIntegerValue*/
+   ctx->debug.PGADebugFlags[334] = Flag; /*PGAGetMutationProb*/
+   ctx->debug.PGADebugFlags[335] = Flag; /*PGASetMutationType*/
+   ctx->debug.PGADebugFlags[336] = Flag; /*PGASetMutationRealValue*/
+   ctx->debug.PGADebugFlags[337] = Flag; /*PGASetMutationIntegerValue*/
+   ctx->debug.PGADebugFlags[338] = Flag; /*PGASetMutationProb*/
+   ctx->debug.PGADebugFlags[400] = Flag; /*PGASetMutationBoundedFlag*/
+   ctx->debug.PGADebugFlags[401] = Flag; /*PGAGetMutationBoundedFlag*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag46 - Set the debug flags for all functions at debug level 46
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag46(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[102] = Flag; /*PGABinaryOneptCrossover*/
+   ctx->debug.PGADebugFlags[103] = Flag; /*PGABinaryTwoptCrossover*/
+   ctx->debug.PGADebugFlags[104] = Flag; /*PGABinaryUniformCrossover*/
+   ctx->debug.PGADebugFlags[152] = Flag; /*PGAIntegerOneptCrossover*/
+   ctx->debug.PGADebugFlags[153] = Flag; /*PGAIntegerTwoptCrossover*/
+   ctx->debug.PGADebugFlags[154] = Flag; /*PGAIntegerUniformCrossover*/
+   ctx->debug.PGADebugFlags[202] = Flag; /*PGARealOneptCrossover*/
+   ctx->debug.PGADebugFlags[203] = Flag; /*PGARealTwoptCrossover*/
+   ctx->debug.PGADebugFlags[204] = Flag; /*PGARealUniformCrossover*/
+   ctx->debug.PGADebugFlags[252] = Flag; /*PGACharacterOneptCrossover*/
+   ctx->debug.PGADebugFlags[253] = Flag; /*PGACharacterTwoptCrossover*/
+   ctx->debug.PGADebugFlags[254] = Flag; /*PGACharacterUniformCrossover*/
+   ctx->debug.PGADebugFlags[310] = Flag; /*PGACrossover*/
+   ctx->debug.PGADebugFlags[311] = Flag; /*PGAGetCrossoverType*/
+   ctx->debug.PGADebugFlags[312] = Flag; /*PGAGetCrossoverProb*/
+   ctx->debug.PGADebugFlags[313] = Flag; /*PGAGetUniformCrossoverProb*/
+   ctx->debug.PGADebugFlags[314] = Flag; /*PGASetCrossoverType*/
+   ctx->debug.PGADebugFlags[315] = Flag; /*PGASetCrossoverProb*/
+   ctx->debug.PGADebugFlags[316] = Flag; /*PGASetUniformCrossoverProb*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag48 - Set the debug flags for all functions at debug level 48
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag48(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[110] = Flag; /*PGASetBinaryAllele*/
+   ctx->debug.PGADebugFlags[111] = Flag; /*PGAGetBinaryAllele*/
+   ctx->debug.PGADebugFlags[160] = Flag; /*PGASetIntegerAllele*/
+   ctx->debug.PGADebugFlags[161] = Flag; /*PGAGetIntegerAllele*/
+   ctx->debug.PGADebugFlags[210] = Flag; /*PGASetRealAllele*/
+   ctx->debug.PGADebugFlags[211] = Flag; /*PGAGetRealAllele*/
+   ctx->debug.PGADebugFlags[260] = Flag; /*PGASetCharacterAllele*/
+   ctx->debug.PGADebugFlags[261] = Flag; /*PGAGetCharacterAllele*/
+   ctx->debug.PGADebugFlags[500] = Flag; /*PGAGetRealFromBinary*/
+   ctx->debug.PGADebugFlags[501] = Flag; /*PGAGetRealFromGrayCode*/
+   ctx->debug.PGADebugFlags[502] = Flag; /*PGAEncodeRealAsBinary*/
+   ctx->debug.PGADebugFlags[503] = Flag; /*PGAEncodeRealAsGrayCode*/
+   ctx->debug.PGADebugFlags[504] = Flag; /*PGAMapIntegerToReal*/
+   ctx->debug.PGADebugFlags[505] = Flag; /*PGAMapRealToInteger*/
+   ctx->debug.PGADebugFlags[506] = Flag; /*PGAEncodeIntegerAsBinary*/
+   ctx->debug.PGADebugFlags[507] = Flag; /*PGAEncodeIntegerAsGrayCode*/
+   ctx->debug.PGADebugFlags[508] = Flag; /*PGAGetIntegerFromBinary*/
+   ctx->debug.PGADebugFlags[509] = Flag; /*PGAGetIntegerFromGrayCode*/
+   ctx->debug.PGADebugFlags[510] = Flag; /*PGAEvaluate*/
+   ctx->debug.PGADebugFlags[511] = Flag; /*PGASetEvaluation*/
+   ctx->debug.PGADebugFlags[512] = Flag; /*PGASetEvaluationUpToDateFlag*/
+   ctx->debug.PGADebugFlags[513] = Flag; /*PGAGetEvaluation*/
+   ctx->debug.PGADebugFlags[514] = Flag; /*PGAGetEvaluationUpToDateFlag*/
+   ctx->debug.PGADebugFlags[605] = Flag; /*PGAEvaluateMS*/
+   ctx->debug.PGADebugFlags[715] = Flag; /*PGAGetWorstIndex*/
+   ctx->debug.PGADebugFlags[716] = Flag; /*PGAGetBestIndex*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag50 - Set the debug flags for all functions at debug level 50
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag50(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[520] = Flag; /*PGAFitness*/
+   ctx->debug.PGADebugFlags[521] = Flag; /*PGAFitnessLinearNormal*/
+   ctx->debug.PGADebugFlags[522] = Flag; /*PGAFitnessLinearRank*/
+   ctx->debug.PGADebugFlags[523] = Flag; /*PGAFitnessMinReciprocal*/
+   ctx->debug.PGADebugFlags[524] = Flag; /*PGAFitnessMinCmax*/
+   ctx->debug.PGADebugFlags[525] = Flag; /*PGARank*/
+   ctx->debug.PGADebugFlags[526] = Flag; /*PGAGetFitness*/
+   ctx->debug.PGADebugFlags[527] = Flag; /*PGAGetFitnessType*/
+   ctx->debug.PGADebugFlags[528] = Flag; /*PGAGetFitnessMinType*/
+   ctx->debug.PGADebugFlags[529] = Flag; /*PGAGetMaxFitnessRank*/
+   ctx->debug.PGADebugFlags[530] = Flag; /*PGASetFitnessType*/
+   ctx->debug.PGADebugFlags[531] = Flag; /*PGASetFitnessMinType*/
+   ctx->debug.PGADebugFlags[532] = Flag; /*PGASetMaxFitnessRank*/
+   ctx->debug.PGADebugFlags[533] = Flag; /*PGASetFitnessCmaxValue*/
+   ctx->debug.PGADebugFlags[534] = Flag; /*PGAGetFitnessCmaxValue*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag52 - Set the debug flags for all functions at debug level 52
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag52(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[107] = Flag; /*PGABinaryDuplicate*/
+   ctx->debug.PGADebugFlags[157] = Flag; /*PGAIntegerDuplicate*/
+   ctx->debug.PGADebugFlags[207] = Flag; /*PGARealDuplicate*/
+   ctx->debug.PGADebugFlags[257] = Flag; /*PGACharacterDuplicate*/
+   ctx->debug.PGADebugFlags[340] = Flag; /*PGADuplicate*/
+   ctx->debug.PGADebugFlags[341] = Flag; /*PGAChange*/
+   ctx->debug.PGADebugFlags[342] = Flag; /*PGASetNoDuplicatesFlag*/
+   ctx->debug.PGADebugFlags[343] = Flag; /*PGAGetNoDuplicatesFlag*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag54 - Set the debug flags for all functions at debug level 54
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag54(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[370] = Flag; /*PGARestart*/
+   ctx->debug.PGADebugFlags[371] = Flag; /*PGAGetRestartFlag*/
+   ctx->debug.PGADebugFlags[372] = Flag; /*PGAGetRestartFrequencyValue*/
+   ctx->debug.PGADebugFlags[373] = Flag; /*PGAGetRestartAlleleChangeProb*/
+   ctx->debug.PGADebugFlags[374] = Flag; /*PGASetRestartFlag*/
+   ctx->debug.PGADebugFlags[375] = Flag; /*PGASetRestartFrequencyValue*/
+   ctx->debug.PGADebugFlags[376] = Flag; /*PGASetRestartAlleleChangeProb*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag56 - Set the debug flags for all functions at debug level 56
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag56(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[105] = Flag; /*PGABinaryPrintString*/
+   ctx->debug.PGADebugFlags[121] = Flag; /*PGABinaryPrint*/
+   ctx->debug.PGADebugFlags[155] = Flag; /*PGAIntegerPrintString*/
+   ctx->debug.PGADebugFlags[205] = Flag; /*PGARealPrintString*/
+   ctx->debug.PGADebugFlags[255] = Flag; /*PGACharacterPrintString*/
+   ctx->debug.PGADebugFlags[820] = Flag; /*PGAPrintPopulation*/
+   ctx->debug.PGADebugFlags[821] = Flag; /*PGAPrintIndividual*/
+   ctx->debug.PGADebugFlags[822] = Flag; /*PGAPrintReport*/
+   ctx->debug.PGADebugFlags[823] = Flag; /*PGAPrintContextVariable*/
+   ctx->debug.PGADebugFlags[824] = Flag; /*PGAPrintString*/
+   ctx->debug.PGADebugFlags[825] = Flag; /*PGAGetPrintFrequencyValue*/
+   ctx->debug.PGADebugFlags[826] = Flag; /*PGASetPrintFrequencyValue*/
+   ctx->debug.PGADebugFlags[827] = Flag; /*PGASetPrintOptions*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag58 - Set the debug flags for all functions at debug level 58
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag58(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[390] = Flag; /*PGAGetStoppingRuleType*/
+   ctx->debug.PGADebugFlags[391] = Flag; /*PGASetStoppingRuleType*/
+   ctx->debug.PGADebugFlags[392] = Flag; /*PGAGetMaxGAIterValue*/
+   ctx->debug.PGADebugFlags[393] = Flag; /*PGASetMaxGAIterValue*/
+   ctx->debug.PGADebugFlags[394] = Flag; /*PGACheckStoppingConditions*/
+   ctx->debug.PGADebugFlags[395] = Flag; /*PGASetMaxNoChangeValue*/
+   ctx->debug.PGADebugFlags[396] = Flag; /*PGASetMaxSimilarityValue*/
+   ctx->debug.PGADebugFlags[397] = Flag; /*PGADone*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag60 - Set the debug flags for all functions at debug level 60
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag60(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[320] = Flag; /*PGASortPop*/
+   ctx->debug.PGADebugFlags[324] = Flag; /*PGAGetSortedPopIndex*/
+   ctx->debug.PGADebugFlags[810] = Flag; /*PGADblHeapSort*/
+   ctx->debug.PGADebugFlags[811] = Flag; /*PGADblHeapify*/
+   ctx->debug.PGADebugFlags[812] = Flag; /*PGADblAdjustHeap*/
+   ctx->debug.PGADebugFlags[813] = Flag; /*PGAIntHeapSort*/
+   ctx->debug.PGADebugFlags[814] = Flag; /*PGAIntHeapify*/
+   ctx->debug.PGADebugFlags[815] = Flag; /*PGAIntAdjustHeap*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag62 - Set the debug flags for all functions at debug level 62
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag62(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[750] = Flag; /*PGARandomFlip*/
+   ctx->debug.PGADebugFlags[751] = Flag; /*PGARandomInterval*/
+   ctx->debug.PGADebugFlags[752] = Flag; /*PGARandom01*/
+   ctx->debug.PGADebugFlags[753] = Flag; /*PGARandomUniform*/
+   ctx->debug.PGADebugFlags[754] = Flag; /*PGARandomGaussian*/
+   ctx->debug.PGADebugFlags[755] = Flag; /*PGAGetRandomSeed*/
+   ctx->debug.PGADebugFlags[756] = Flag; /*PGASetRandomSeed*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag64 - Set the debug flags for all functions at debug level 64
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag64(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[700] = Flag; /*PGAError*/
+   ctx->debug.PGADebugFlags[702] = Flag; /*PGAUsage*/
+   ctx->debug.PGADebugFlags[703] = Flag; /*PGAPrintVersionNumber*/
+   ctx->debug.PGADebugFlags[704] = Flag; /*PGAGetMaxMachineIntValue*/
+   ctx->debug.PGADebugFlags[705] = Flag; /*PGAGetMinMachineIntValue*/
+   ctx->debug.PGADebugFlags[706] = Flag; /*PGAGetMaxMachineDoubleValue*/
+   ctx->debug.PGADebugFlags[707] = Flag; /*PGAGetMinMachineDoubleValue*/
+   ctx->debug.PGADebugFlags[708] = Flag; /*PGADestroy*/
+   ctx->debug.PGADebugFlags[730] = Flag; /*PGAReadCmdLine*/
+   ctx->debug.PGADebugFlags[731] = Flag; /*PGAParseDebugArg*/
+   ctx->debug.PGADebugFlags[732] = Flag; /*PGAStripArgs*/
+}
+
+/*I****************************************************************************
+   PGASetDebugFlag66 - Set the debug flags for all functions at debug level 66
+
+   Inputs:
+       ctx  - Context variable
+       Flag - PGA_TRUE to enable or PGA_FALSE to disable
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGASetDebugFlag66(PGAContext *ctx, int Flag)
+{
+   ctx->debug.PGADebugFlags[710] = Flag; /*PGAMean*/
+   ctx->debug.PGADebugFlags[711] = Flag; /*PGAStddev*/
+   ctx->debug.PGADebugFlags[712] = Flag; /*PGACopyIndividual*/
+   ctx->debug.PGADebugFlags[713] = Flag; /*PGARound*/
+   ctx->debug.PGADebugFlags[714] = Flag; /*PGACheckSum*/
+   ctx->debug.PGADebugFlags[715] = Flag; /*PGAGetWorstIndex*/
+   ctx->debug.PGADebugFlags[716] = Flag; /*PGAGetBestIndex*/
+   ctx->debug.PGADebugFlags[717] = Flag; /*PGAGetIndividual*/
+   ctx->debug.PGADebugFlags[718] = Flag; /*PGAUpdateAverage*/
+   ctx->debug.PGADebugFlags[719] = Flag; /*PGAUpdateOnline*/
+   ctx->debug.PGADebugFlags[720] = Flag; /*PGAUpdateOffline*/
+   ctx->debug.PGADebugFlags[721] = Flag; /*PGAComputeSimilarity*/
+}
+#endif
+
+/*I****************************************************************************
+   PGAPrintDebugOptions - prints the list of available debug options
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      list of available debug options
+
+   Example:
+      PGAContext ctx;
+      :
+      PGAPrintDebugOptions(ctx);
+      
+****************************************************************************I*/
+void PGAPrintDebugOptions(PGAContext *ctx)
+{
+    PGADebugEntered("PGAPrintDebugOptions");
+    
+#if OPTIMIZE==0
+    fprintf(stderr, "  0 Trace all debug prints\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr, "  1 Reserved for the user\n");
+    fprintf(stderr, "    :                   :\n");
+    fprintf(stderr, " 10 Reserved for the user\n");
+    fprintf(stderr, " 11 Trace high-level functions\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr, " 20 Trace high-level parallel functions\n");
+    fprintf(stderr, " 21 Trace all parallel functions\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr, " 30 Trace BINARY    functions\n");
+    fprintf(stderr, " 32 Trace INTEGER   functions\n");
+    fprintf(stderr, " 34 Trace REAL      functions\n");
+    fprintf(stderr, " 36 Trace CHARACTER functions\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr, " 40 Trace population creation functions\n");
+    fprintf(stderr, " 42 Trace select functions\n");
+    fprintf(stderr, " 44 Trace mutation functions\n");
+    fprintf(stderr, " 46 Trace crossover functions\n");
+    fprintf(stderr, " 48 Trace function evaluation functions\n");
+    fprintf(stderr, " 50 Trace fitness calculation  functions\n");
+    fprintf(stderr, " 52 Trace duplicate checking functions\n");
+    fprintf(stderr, " 54 Trace restart functions\n");
+    fprintf(stderr, " 56 Trace reporting functions\n");
+    fprintf(stderr, " 58 Trace stopping functions\n");
+    fprintf(stderr, " 60 Trace sorting functions\n");
+    fprintf(stderr, " 62 Trace random number functions\n");
+    fprintf(stderr, " 64 Trace system routines\n");
+    fprintf(stderr, " 66 Trace utility functions\n");
+    fprintf(stderr, "\n");
+    fprintf(stderr, " 80 Trace memory allocations\n");
+    fprintf(stderr, " 82 Trace variable print statements\n");
+#else
+    fprintf(stderr, " Optimized version; no debug options.\n");
+#endif
+    PGADestroy(ctx);
+    exit(0);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/duplcate.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/duplcate.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/duplcate.c	(revision 6168)
@@ -0,0 +1,301 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: duplicate.c: This file contains the routines that have to do with
+*                        testing for duplicate strings
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGADuplicate - determines if a specified string is a duplicate of one
+  already in an existing population
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+     p    - string index
+     pop1 - symbolic constant of the population containing string p
+     pop2 - symbolic constant of the (possibly partial) population containing
+            strings to compare string p against
+     n    - the number of strings in pop2 to compare string p against
+            (indexed 0,...,n-1)
+
+  Outputs:
+     Returns PGA_TRUE if PGAGetNoDuplicates() returns PGA_TRUE and
+     string p in population pop1 is a duplicate of at least one strings
+     0,...,n-1 in population pop2.  Otherwise returns PGA_FALSE
+
+  Example:
+     Change any string in PGA_NEWPOP that is an exact copy of a string
+     in PGA_OLDPOP.
+
+     PGAContext *ctx;
+     int b, n;
+     :
+     n  = PGAGetPopsize(ctx);
+     for (b=0; b<n; b++)
+         if (PGADuplicate(ctx, b, PGA_NEWPOP, PGA_OLDPOP, n))
+             PGAChange(ctx, b, PGA_NEWPOP);
+
+
+     Check if the best string in population PGA_OLDPOP is a duplicate of any
+     of the strings in the first half of population PGA_NEWPOP.
+
+     PGAContext *ctx;
+     int b, n;
+     :
+     b  = PGAGetBestIndex(ctx, PGA_OLDPOP);
+     n  = PGAGetPopsize(ctx) / 2;
+     if (PGADuplicate(ctx, b, PGA_OLDPOP, PGA_NEWPOP, n))
+         printf("A duplicate!\n");
+
+****************************************************************************U*/
+int PGADuplicate(PGAContext *ctx, int p, int pop1, int pop2, int n)
+{
+    int p2, fp;
+    int RetVal = PGA_FALSE;
+    
+    PGADebugEntered("PGADuplicate");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGADuplicate", "p = ",
+		  PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGADuplicate", "pop1 = ",
+		  PGA_INT, (void *) &pop1 );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGADuplicate", "pop2 = ",
+		  PGA_INT, (void *) &pop2 );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGADuplicate", "n  = ",
+		  PGA_INT, (void *) &n );
+    
+    if (ctx->ga.NoDuplicates == PGA_TRUE) {
+	if (ctx->fops.Duplicate) {
+	    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+	    for (p2 = 1; p2 <= n; p2++)
+		if ((*ctx->fops.Duplicate)(&ctx, &fp, &pop1, &p2, &pop2)) {
+		    RetVal = PGA_TRUE;
+		    p2 = n+1;
+		}
+	} else {
+	    for (p2 = 0; p2 < n; p2++)
+		if ((*ctx->cops.Duplicate)(ctx, p, pop1, p2, pop2)) {
+		    RetVal = PGA_TRUE;
+		    p2 = n;
+		}
+	}
+    }
+    
+    PGADebugExited("PGADuplicate");
+    
+    return(RetVal);
+}
+
+
+/*U****************************************************************************
+  PGAChange - Repeatedly apply mutation to a string (with an increasing
+  mutation rate) until one or more mutations have occurred.  This routine is
+  usually used with PGADuplicate to modify a duplicate string.  It is not
+  intended to replace PGAMutation
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+     p    - string index
+     pop  - symbolic constant of the population containing string p
+
+  Outputs:
+     Mutates string p in population pop via side effect.
+
+  Example:
+     Change any string in PGA_NEWPOP that is an exact copy of a string
+     in PGA_OLDPOP.  To be complete, we should check the population again
+     if any changes are made; for simplicity, we don't.
+
+     PGAContext *ctx;
+     int b, n;
+     :
+     n  = PGAGetPopsize(ctx);
+     for (b=0; b<n; b++)
+         if (PGADuplicate(ctx, b, PGA_NEWPOP, PGA_OLDPOP, n))
+             PGAChange(ctx, b, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGAChange( PGAContext *ctx, int p, int pop )
+{
+    int    changed = PGA_FALSE;
+    int    fp, nflips;
+    double mr;
+
+    PGADebugEntered("PGAChange");
+
+    mr = ctx->ga.MutationProb;
+
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR, "PGAChange", " mr = ",
+                   PGA_DOUBLE, (void *) &mr );
+
+/**TODO: GTG (Clear)I dont see why we need to wait for iterations to mutate?****/
+/**TODO: can't we directly set mr = 1??**/
+    while (changed == PGA_FALSE) {
+		if (ctx->fops.Mutation) {
+		    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+	            nflips = (*ctx->fops.Mutation)(&ctx, &fp, &pop, &mr);
+		} else {
+		    	nflips = (*ctx->cops.Mutation)( ctx, p, pop, mr );
+		}
+	
+	        if ( nflips > 0 )
+	            changed = PGA_TRUE;
+	        else
+	            mr = ( mr>1 ? 1 :1.1*mr);
+	            
+    }
+
+    if (changed == PGA_FALSE) {
+	PGAError(ctx, "Could not change string:", PGA_WARNING, PGA_VOID, NULL);
+	PGAPrintString(ctx, stderr, p, pop);
+    }
+
+    PGADebugExited("PGAChange");
+}
+
+/*U****************************************************************************
+   PGASetNoDuplicatesFlag - A boolean flag to indicate if duplicate strings are
+   allowed in the population. Valid choices are PGA_TRUE and PGA_FALSE.  The
+   default is PGA_FALSE -- allow duplicates.
+
+   Category: Generation
+
+   Inputs:
+      ctx  - context variable
+      flag - PGA_TRUE or PGA_FALSE
+
+   Outputs:
+      None
+
+   Example:
+      Set the NoDuplicates flag to require that all strings are unique.
+
+      PGAContext *ctx;
+      :
+      PGASetNoDuplicatesFlag(ctx,PGA_TRUE);
+
+****************************************************************************U*/
+void PGASetNoDuplicatesFlag( PGAContext *ctx, int no_dup)
+{
+    PGADebugEntered("PGASetNoDuplicatesFlag");
+
+    switch (no_dup) {
+        case PGA_TRUE:
+        case PGA_FALSE:
+            ctx->ga.NoDuplicates = no_dup;
+            break;
+        default:
+            PGAError ( ctx, "PGASetNoDuplicatesFlag: Invalid value of no_dup:",
+                       PGA_FATAL, PGA_INT, (void *) &no_dup);
+            break;
+    }
+
+    PGADebugExited("PGASetNoDuplicatesFlag");
+}
+
+/*U***************************************************************************
+   PGAGetNoDuplicatesFlag - Returns PGA_TRUE if duplicates are not allowed,
+   else returns PGA_FALSE.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The value of the NoDuplicates flag.
+
+   Example:
+      PGAContext *ctx;
+      int nodups;
+      :
+      nodups = PGAGetNoDuplicatesFlag(ctx);
+      switch (nodups) {
+      case PGA_TRUE:
+          printf("Duplicate strings not allowed in population\n");
+          break;
+      case PGA_FALSE:
+          printf("Duplicate strings allowed in population\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetNoDuplicatesFlag (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetNoDuplicatesFlag");
+
+    PGAFailIfNotSetUp("PGAGetNoDuplicatesFlag");
+
+    PGADebugExited("PGAGetNoDuplicatesFlag");
+
+    return(ctx->ga.NoDuplicates);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/evaluate.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/evaluate.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/evaluate.c	(revision 6168)
@@ -0,0 +1,883 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: evaluate.c: This file contains routines specific to the evaluation
+*                       of the strings.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGASetEvaluation - Set the evaluation function value for a string to a
+   specified value.  Also sets the evaulation up to date flag to PGA_TRUE.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx  - context variable
+      p    - string index
+      pop  - symbolic constant of the population string p is in
+      val  - the (user) evaluation value to assign to string p
+
+   Outputs:
+      Sets the evaluation function value of string p and the EvalUpToDate
+      flag (to PGA_TRUE) via side effect
+
+   Example:
+      Set the evaluation function value of string p in population PGA_NEWPOP
+      to 123.456.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGASetEvaluation(ctx, p, PGA_NEWPOP, 123.456);
+
+****************************************************************************U*/
+void PGASetEvaluation ( PGAContext *ctx, int p, int pop, double val )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGASetEvaluation");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGASetEvaluation", "p = ",
+                   PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGASetEvaluation", "pop = ",
+                   PGA_INT, (void *) &pop );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGASetEvaluation", "val = ",
+                   PGA_DOUBLE, (void *) &val );
+
+    ind               = PGAGetIndividual ( ctx, p, pop );
+    ind->evalfunc     = val;
+    ind->evaluptodate = PGA_TRUE;
+
+    PGADebugExited("PGASetEvaluation");
+}
+
+/*U***************************************************************************
+   PGAGetEvaluation - returns the evaluation function value for
+   string p in population pop
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+
+   Outputs:
+      The evaluation function value for string p in population pop
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      double eval;
+      :
+      eval = PGAGetEvaluation(ctx, p, PGA_NEWPOP);
+
+***************************************************************************U*/
+double PGAGetEvaluation ( PGAContext *ctx, int p, int pop )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAGetEvaluation");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetEvaluation", "p = ",
+                   PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetEvaluation", "pop = ",
+                   PGA_INT, (void *) &pop );
+
+    ind               = PGAGetIndividual ( ctx, p, pop );
+
+#ifndef OPTIMIZE
+    if (ind->evaluptodate != PGA_TRUE)
+	PGAError(ctx, "Evaluation not up to date.  Returning old evaluation.",
+                 PGA_WARNING, PGA_VOID, NULL);
+#endif
+
+    PGADebugExited("PGAGetEvaluation");
+    return(ind->evalfunc);
+}
+
+/*U****************************************************************************
+  PGASetEvaluationUpToDateFlag - sets the flag associated with a
+  string to PGA_TRUE or PGA_FLASE to indicate whether the evaluate
+  function value is out-of-date or not.  Note that this flag is always
+  set to PGA_TRUE when PGASetEvaluation is called.
+
+    Category: Fitness & Evaluation
+
+    Inputs:
+      ctx  - context variable
+      p    - string index
+      pop  - symbolic constant of the population string p is in
+      status - boolean for whether up-to-date
+
+   Outputs:
+      Sets the EvalUpToDate associated with the evaluation function value of
+      string p via side effect
+
+   Example:
+      Set the evaluation function flag for string p in population PGA_NEWPOP
+      to PGA_FALSE (as might happen after, for example, calling a hill-climbing
+      routine that modified this string).
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGASetEvaluationUpToDateFlag(ctx, p, PGA_NEWPOP, PGA_FALSE);
+
+****************************************************************************U*/
+void PGASetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop,
+                                   int status )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGASetEvaluationUpToDateFlag");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGASetEvaluationUpToDateFlag",
+                  "p = ", PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGASetEvaluationUpToDateFlag",
+                  "pop = ", PGA_INT, (void *) &pop );
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+
+    switch(status) {
+    case PGA_TRUE:
+    case PGA_FALSE:
+      ind->evaluptodate = status;
+      break;
+    default:
+      PGAError(ctx, "PGASetEvaluationUpToDateFlag: Invalid value of status:",
+               PGA_FATAL, PGA_INT, (void *) &status);
+      break;
+    }
+
+    PGADebugExited("PGASetEvaluationUpToDateFlag");
+}
+
+/*U***************************************************************************
+  PGAGetEvaluationUpToDateFlag - returns true/false to indicate
+  whether the evaluate function value is up to date
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+
+   Outputs:
+      Returns PGA_TRUE if the evaluate function value is up to date.
+      Otherwise, returns PGA_FALSE
+
+   Example:
+      PGAContext *ctx;
+      int uptodate;
+      :
+      uptodate = PGAGetEvaluationUpToDateFlag(ctx);
+      switch (uptodate) {
+      case PGA_TRUE:
+          printf("Evaluation function value current\n");
+          break;
+      case PGA_FALSE:
+          printf("Evaluation function value out-of-date\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetEvaluationUpToDateFlag ( PGAContext *ctx, int p, int pop )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAGetEvaluationUpToDateFlag");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetEvaluationUpToDateFlag",
+                  "p = ", PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetEvaluationUpToDateFlag",
+                   "p = ", PGA_INT, (void *) &pop );
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+
+    PGADebugExited("PGAGetEvaluationUpToDateFlag");
+    return(ind->evaluptodate);
+}
+
+/*U****************************************************************************
+  PGAGetRealFromBinary - Interpets a binary string as encoding a real value
+  and returns the real value it represents.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in the binary representation
+      end   - ending bit position in the binary representation
+      lower - lower bound of the interval the real number is defined on
+      upper - lower bound of the interval the real number is defined on
+
+  Outputs:
+      The real value encoded by the binary string
+
+  Example:
+      Decode a real value from the string p in population PGA_NEWPOP.  The
+      value to decode lies on the interval [-10,20] and is represented
+      using the 20 bits in bit positions 10--29.
+
+      double x;
+      :
+      x = PGAGetRealFromBinary(ctx, p, PGA_NEWPOP, 10, 29, -10.0, 20.0);
+
+****************************************************************************U*/
+double PGAGetRealFromBinary(PGAContext *ctx, int p, int pop, int start,
+                            int end, double lower, double upper)
+{
+     int length, sum;
+     double value;
+
+    PGADebugEntered("PGAGetRealFromBinary");
+     PGACheckDataType("PGAGetRealFromBinary", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+
+     if (start < 0)
+          PGAError(ctx, "PGAGetRealFromBinary: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+	 PGAError(ctx, "PGAGetRealFromBinary: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAGetRealFromBinary: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (lower >= upper)
+          PGAError(ctx, "PGAGetRealFromBinary: lower exceeds upper:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &lower);
+
+     sum = PGAGetIntegerFromBinary(ctx, p, pop, start, end);
+     value = PGAMapIntegerToReal(ctx, sum, 0,
+                                 (length == sizeof(unsigned) * 8 - 1)
+                                 ? INT_MAX : (1u << length) - 1, lower, upper);
+
+    PGADebugExited("PGAGetRealFromBinary");
+
+     return(value);
+}
+
+/*U****************************************************************************
+  PGAGetRealFromGrayCode - interpets a binary reflected Gray code sequence in
+  a binary string as encoding a real value and returns the real value it
+  represents.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in the binary representation
+      end   - ending bit position in the binary representation
+      lower - lower bound of the interval the real number is defined on
+      upper - lower bound of the interval the real number is defined on
+
+  Outputs:
+      The real value encoded by the binary reflected Gray code sequence
+
+  Example:
+      Decode a real value from the string p in population PGA_NEWPOP.  The
+      value to decode lies on the interval [-10,20] and is represented
+      using the 20 bits in bit positions 10--29.
+
+      double x;
+      :
+      x = PGAGetRealFromGrayCode(ctx, p, PGA_NEWPOP, 10, 29, -10.0, 20.0);
+
+****************************************************************************U*/
+double PGAGetRealFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                  int end, double lower, double upper)
+{
+     int length, sum;
+     double value;
+
+    PGADebugEntered("PGAGetRealFromGrayCode");
+     PGACheckDataType("PGAGetRealFromGrayCode", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+
+     if (start < 0)
+          PGAError(ctx, "PGAGetRealFromGrayCode: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAGetRealFromGrayCode: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAGetRealFromGrayCode: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (lower >= upper)
+          PGAError(ctx, "PGAGetRealFromGrayCode: lower exceeds upper:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &lower);
+
+     sum = PGAGetIntegerFromGrayCode(ctx, p, pop, start, end);
+     value = PGAMapIntegerToReal(ctx, sum, 0,
+                                 (length == sizeof(unsigned) * 8 - 1)
+                                 ? INT_MAX : (1u << length) - 1, lower, upper);
+
+    PGADebugExited("PGAGetRealFromGrayCode");
+
+     return(value);
+}
+
+/*U****************************************************************************
+  PGAEncodeRealAsBinary - encodes a real value as a binary string
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in p to encode val in
+      end   - ending bit position in p to encode val in
+      low   - lower bound of the interval the val is defined on
+      high  - lower bound of the interval the val is defined on
+      val   - the real number to be represented as a binary string
+
+  Outputs:
+      The string is modified by side-effect.
+
+  Example:
+      Encode 3.14 from the interval [0,10] in 30 bits in bit positions
+      0--29 in string p in population PGA_NEWPOP.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGAEncodeRealAsBinary(ctx, p, PGA_NEWPOP, 0, 29, 0.0, 10.0, 3.14);
+
+****************************************************************************U*/
+void PGAEncodeRealAsBinary(PGAContext *ctx, int p, int pop, int start,
+                               int end, double low, double high, double val)
+{
+     int length, d;
+
+    PGADebugEntered("PGAEncodeRealAsBinary");
+     PGACheckDataType("PGAEncodeRealAsBinary", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+     if (start < 0)
+          PGAError(ctx, "PGAEncodeRealAsBinary: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAEncodeRealAsBinary: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAEncodeRealAsBinary: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (low >= high)
+          PGAError(ctx, "PGAEncodeRealAsBinary: low exceeds high:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &low);
+     if (val < low || val > high)
+          PGAError(ctx, "PGAEncodeRealAsBinary: val outside of bounds:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &val);
+
+     d = PGAMapRealToInteger(ctx, val, low, high, 0,
+                             (length == sizeof(unsigned) * 8 - 1)
+                             ? INT_MAX : (1u << length) - 1);
+     PGAEncodeIntegerAsBinary(ctx, p, pop, start, end, d);
+
+    PGADebugExited("PGAEncodeRealAsBinary");
+}
+
+/*U****************************************************************************
+  PGAEncodeRealAsGrayCode - encodes a real value as a binary reflected Gray
+  code sequence
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in p to encode val in
+      end   - ending bit position in p to encode val in
+      low   - lower bound of the interval the val is defined on
+      high  - lower bound of the interval the val is defined on
+      val   - the real number to be represented as a binary string
+
+  Outputs:
+      The string is modified by side-effect.
+
+  Example:
+      Encode 3.14 from the interval [0,10] in 30 bits in bit positions
+      0--29 in string p in population PGA_NEWPOP as a binary reflected Gray
+      code sequence.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGAEncodeRealAsGrayCode(ctx, p, PGA_NEWPOP, 0, 29, 0.0, 10.0, 3.14);
+
+****************************************************************************U*/
+void PGAEncodeRealAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                              int end, double low, double high, double val)
+{
+     int length, d;
+
+    PGADebugEntered("PGAEncodeRealAsGrayCode");
+     PGACheckDataType("PGAEncodeRealAsGrayCode", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+     if (start < 0)
+          PGAError(ctx, "PGAEncodeRealAsGrayCode: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAEncodeRealAsGrayCode: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAEncodeRealAsGrayCode: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (low >= high)
+          PGAError(ctx, "PGAEncodeRealAsGrayCode: low exceeds high:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &low);
+     if (val < low || val > high)
+          PGAError(ctx, "PGAEncodeRealAsGrayCode: val outside of bounds:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &val);
+
+     d = PGAMapRealToInteger(ctx, val, low, high, 0,
+                             (length == sizeof(unsigned) * 8 - 1) ? INT_MAX :
+                             (1u << length) - 1);
+     PGAEncodeIntegerAsGrayCode(ctx, p, pop, start, end, d);
+
+    PGADebugExited("PGAEncodeRealAsGrayCode");
+}
+
+
+/*U****************************************************************************
+  PGAGetIntegerFromBinary - interpets a binary string as encoding an integer
+  value and returns the integer value it represents.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in the binary representation
+      end   - ending bit position in the binary representation
+
+  Outputs:
+      The integer value encoded by the binary string
+
+  Example:
+      Get an integer j from bits 10--29 of string p in population PGA_NEWPOP.
+
+      PGAContext *ctx;
+      int j, p;
+      :
+      j = PGAGetIntegerFromBinary(ctx, p, PGA_NEWPOP, 10, 29);
+
+****************************************************************************U*/
+int PGAGetIntegerFromBinary(PGAContext *ctx, int p, int pop, int start,
+                                 int end)
+{
+     int length, i, val;
+     unsigned power2;
+
+    PGADebugEntered("PGAGetIntegerFromBinary");
+     PGACheckDataType("PGAGetIntegerFromBinary", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+     if (length > sizeof(int) * 8 - 1)
+          PGAError(ctx, "PGAGetIntegerFromBinary: length of bit string "
+                   "exceeds sizeof type int:", PGA_FATAL, PGA_INT,
+                   (void *) &length);
+     if (start < 0)
+          PGAError(ctx, "PGAGetIntegerFromBinary: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAGetIntegerFromBinary: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAGetIntegerFromBinary: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+
+     val = 0;
+     power2 = 1u << (length - 1);
+     for (i = start; i <= end; i++)
+     {
+          if (PGAGetBinaryAllele(ctx, p, pop, i))
+               val += power2;
+          power2 >>= 1;
+     }
+
+    PGADebugExited("PGAGetIntegerFromBinary");
+
+     return(val);
+}
+
+/*U****************************************************************************
+  PGAGetIntegerFromGrayCode - interpets a binary reflected Gray code sequence
+  as encoding an integer value and returns the integer value it represents.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in the binary representation
+      end   - ending bit position in the binary representation
+
+  Outputs:
+      The integer value encoded by the binary reflected Gray code sequence
+
+  Example:
+      Get an integer j from bits 10--29 of string p in population PGA_NEWPOP.
+      The string is encoded in Gray code.
+
+      PGAContext *ctx;
+      int j, p;
+      :
+      j = PGAGetIntegerFromGrayCode(ctx, p, PGA_NEWPOP, 10, 29);
+
+****************************************************************************U*/
+int PGAGetIntegerFromGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                   int end)
+{
+     int length, *BitString, i, val;
+     unsigned power2;
+
+    PGADebugEntered("PGAGetIntegerFromGrayCode");
+     PGACheckDataType("PGAGetIntegerFromGrayCode", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+     if (length > sizeof(int) * 8 - 1)
+          PGAError(ctx, "PGAGetIntegerFromGrayCode: length of binary string "
+                   "exceeds size of type int:", PGA_FATAL, PGA_INT,
+                   (void *) &length);
+     if (start < 0)
+          PGAError(ctx, "PGAGetIntegerFromGrayCode: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAGetIntegerFromGrayCode: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAGetIntegerFromGrayCode: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+
+     BitString = (int *) malloc(length * sizeof(int));
+     if (!BitString)
+          PGAError(ctx, "PGAGetIntegerFromGrayCode: No room for BitString",
+                   PGA_FATAL, PGA_VOID, NULL);
+     BitString[0] = PGAGetBinaryAllele(ctx, p, pop, start);
+
+     for(i = 1; i < length; i++)
+          BitString[i] = BitString[i-1] ^ PGAGetBinaryAllele(ctx, p, pop,
+                                                             start + i);
+     val = 0;
+     power2 = 1u << (length - 1);
+     for (i = 0; i < length; i++)
+     {
+          if (BitString[i])
+               val += power2;
+          power2 >>= 1;
+     }
+     free(BitString);
+
+    PGADebugExited("PGAGetIntegerFromGrayCode");
+     return(val);
+}
+
+/*U****************************************************************************
+  PGAEncodeIntegerAsBinary - encodes an integer value as a binary string
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in p to encode val in
+      end   - ending bit position in p to encode val in
+      val   - the integer value to be represented as a binary string
+
+  Outputs:
+      The string is modified by side-effect.
+
+  Example:
+      Encode an integer v in 20 bits in bit positions 0--19 in string p
+      in population PGA_NEWPOP.
+
+      PGAContext *ctx;
+      int v, p;
+      :
+      PGAEncodeIntegerAsBinary(ctx, p, PGA_NEWPOP, 0, 19, v);
+
+****************************************************************************U*/
+void PGAEncodeIntegerAsBinary(PGAContext *ctx, int p, int pop, int start,
+                              int end, int val)
+{
+     int length, i;
+     unsigned power2;
+
+    PGADebugEntered("PGAEncodeIntegerAsBinary");
+     PGACheckDataType("PGAEncodeIntegerAsBinary", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+
+     if (length > sizeof(int) * 8 - 1)
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: length of bit string "
+                   "exceeds size of type int:", PGA_FATAL, PGA_INT,
+                   (void *) &length);
+     if (start < 0)
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if ((val > (1u << length) - 1) && (length != sizeof(int) * 8) - 1)
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: Integer too big for string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &val);
+     if (val < 0)
+          PGAError(ctx, "PGAEncodeIntegerAsBinary: Integer less than zero:",
+                   PGA_FATAL, PGA_INT, (void *) & val);
+
+     power2 = 1u << (length - 1);
+     for (i = 0; i < length; i++)
+     {
+          if (val >= power2)
+          {
+               PGASetBinaryAllele(ctx, p, pop, start + i, 1);
+               val -= power2;
+          }
+          else
+               PGASetBinaryAllele(ctx, p, pop, start + i, 0);
+          power2 >>= 1;
+     }
+
+    PGADebugExited("PGAEncodeIntegerAsBinary");
+}
+
+/*U****************************************************************************
+  PGAEncodeIntegerAsGrayCode - encodes a real value as a binary reflected
+  Gray code sequence
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+      ctx   - context variable
+      p     - string index
+      pop   - symbolic constant of the population the string is in
+      start - starting bit position in p to encode val in
+      end   - ending bit position in p to encode val in
+      val   - the integer value to be represented as a binary reflected
+              Gray code sequence
+
+  Outputs:
+      The string is modified by side-effect.
+
+  Example:
+      Encode an integer v in 20 bits in bit positions  0--19 in string p in
+      population PGA_NEWPOP using Gray code.
+
+      PGAContext *ctx;
+      int v, p;
+      :
+      PGAEncodeIntegerAsGrayCode(ctx, p, PGA_NEWPOP, 0, 19, 7);
+
+****************************************************************************U*/
+void PGAEncodeIntegerAsGrayCode(PGAContext *ctx, int p, int pop, int start,
+                                int end, int val)
+{
+     int i, *bit, length;
+     unsigned power2;
+
+    PGADebugEntered("PGAEncodeIntegerAsGrayCode");
+     PGACheckDataType("PGAEncodeIntegerAsGrayCode", PGA_DATATYPE_BINARY);
+
+     length = end - start + 1;
+
+     if (length > sizeof(int) * 8 - 1)
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: length of bit string"
+                   "exceeds size of type int:", PGA_FATAL, PGA_INT,
+                   (void *) &length);
+     if (start < 0)
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: start less than 0:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if (end >= PGAGetStringLength(ctx))
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: end greater than string "
+                   "length:", PGA_FATAL, PGA_INT, (void *) &end);
+     if (start >= end)
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: start exceeds end:",
+                   PGA_FATAL, PGA_INT, (void *) &start);
+     if ((val > (1u << length) - 1) && (length != sizeof(int) * 8 - 1))
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: Integer too big for "
+                   "string length:", PGA_FATAL, PGA_INT, (void *) &val);
+     if (val < 0)
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: Integer less than zero:",
+                   PGA_FATAL, PGA_INT, (void *) &val);
+
+     bit = (int *) malloc(length * sizeof(int));
+     if (bit == NULL)
+          PGAError(ctx, "PGAEncodeIntegerAsGrayCode: No room to allocate bit",
+                   PGA_FATAL, PGA_VOID, NULL);
+     power2 = 1u << (length - 1);
+     for (i = 0; i < length; i++)
+     {
+          if (val >= power2)
+          {
+               bit[i] = 1;
+               val -= power2;
+          }
+          else
+               bit[i] = 0;
+          power2 >>= 1;
+     }
+     PGASetBinaryAllele(ctx, p, pop, start, bit[0]);
+     for(i = 1; i < length; i++)
+          PGASetBinaryAllele(ctx, p, pop, start + i, bit[i-1] ^ bit[i]);
+     free(bit);
+
+    PGADebugExited("PGAEncodeIntegerAsGrayCode");
+}
+
+
+/*I****************************************************************************
+   PGAMapIntegerToReal - Maps the value v defined on [a,b] to r defined on
+   [l,u].  In the context of PGAPack [a,b] is the discrete interval
+   [0,2^nbits-1] (i.e., the number of bits in a binary string) and [l,u]
+   represent the range of possible values of the real number r.
+
+   Inputs:
+      ctx      - context variable
+      v        - value from original interval (usually the decoded bit string)
+      a        - lower bound of integer interval (usually 0)
+      b        - upper bound of integer interval (usually 2^nbits-1)
+      l        - lower bound of real interval
+      u        - upper bound of real interval
+
+   Outputs:
+      Scaled value of v defined on [l,u]
+
+   Example:
+       Map a five bit (that is, an integer with a range of [0, 31]) integer v
+       to a real in the range [0, 3.14].
+
+       PGAContext *ctx;
+       double x;
+       int v;
+       :
+       x = PGAMapIntegerToReal(ctx, v, 0, 31, 0.0, 3.14);
+
+****************************************************************************I*/
+double PGAMapIntegerToReal (PGAContext *ctx, int v, int a, int b, double l,
+                            double u)
+{
+    PGADebugEntered("PGAMapIntegerToReal");
+
+    PGADebugExited("PGAMapIntegerToReal");
+
+     return((v-a) * (u-l) / (b-a) + l);
+}
+
+/*I****************************************************************************
+   PGAMapRealToInteger - Maps the value r defined on [l,u] to v defined on
+   [a,b].  In the context of PGAPack [a,b] is the discrete interval
+   [0,2^nbits-1] (i.e., the number of bits in a binary string) and [l,u]
+   represent the range of possible values of the real number r.
+
+   Inputs:
+      ctx      - context variable
+      r        - real value defined on [l,u]
+      l        - lower bound of real interval
+      u        - upper bound of real interval
+      a        - lower bound of integer interval (usually 0)
+      b        - upper bound of integer interval (usually 2^nbits-1)
+
+   Outputs:
+      Scaled value of r defined on [a,b]
+
+   Example:
+     Map the value r on the interval [0, 3.14] to a five bit integer v.
+
+     PGAContext *ctx;
+     double r;
+     int v;
+     :
+     v = PGAMapRealToInteger(ctx, r, 0.0, 3.14, 0, 31);
+
+****************************************************************************I*/
+int PGAMapRealToInteger(PGAContext *ctx, double r, double l, double u, int a,
+                        int b)
+{
+    PGADebugEntered("PGAMapRealToInteger");
+
+    PGADebugExited("PGAMapRealToInteger");
+
+     return PGARound(ctx, (b - a) * (r - l) / (u - l) + a);
+}
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/f2c.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/f2c.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/f2c.c	(revision 6168)
@@ -0,0 +1,1817 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: f2c_interface.c
+*
+*     This file contains routines that are called by the Fortran version of
+*     the PGAPack calls.  They just make the call to the appropriate C
+*     routine.  Issues are:
+*         * Fortran's always passing by reference,
+*         * Using Fortran integers for holding C pointer values
+*         * Fortran's 1,...,n indexing vs. C's 0,...,n-1
+*           (this comes up in population member and allele indices)
+*         * Pointers to functions
+*         * File pointers
+*         * Characters strings
+*         * Variable length argument lists
+*
+*     We assume the Fortran compiler generates one of three symbol names for
+*     the external PGAPack routine, e.g.,  pgasetpopsize,  pgasetpopsize_, or
+*     PGASETPOPSIZE.  We use #ifdef's based on the appropriate routine to
+*     convert the canonical pgasetpopsize_ to the other two.  Since the real
+*     C routine is always mixed case we will never have a conflict.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+#if defined(FORTRANCAP)
+#define pgasetbinaryallele_              PGASETBINARYALLELE
+#define pgagetbinaryallele_              PGAGETBINARYALLELE
+#define pgasetbinaryinitprob_            PGASETBINARYINITPROB
+#define pgagetbinaryinitprob_            PGAGETBINARYINITPROB
+#define pgasetcharacterallele_           PGASETCHARACTERALLELE
+#define pgagetcharacterallele_           PGAGETCHARACTERALLELE
+#define pgasetcharacterinittype_         PGASETCHARACTERINITTYPE
+#define pgacreate_                       PGACREATE
+#define pgasetup_                        PGASETUP
+#define pgasetrandominitflag_            PGASETRANDOMINITFLAG
+#define pgagetrandominitflag_            PGAGETRANDOMINITFLAG
+#define pgacrossover_                    PGACROSSOVER
+#define pgagetcrossovertype_             PGAGETCROSSOVERTYPE
+#define pgagetcrossoverprob_             PGAGETCROSSOVERPROB
+#define pgagetuniformcrossoverprob_      PGAGETUNIFORMCROSSOVERPROB
+#define pgasetcrossovertype_             PGASETCROSSOVERTYPE
+#define pgasetcrossoverprob_             PGASETCROSSOVERPROB
+#define pgasetuniformcrossoverprob_      PGASETUNIFORMCROSSOVERPROB
+#define pgadebugprint_                   PGADEBUGPRINT
+#define pgasetdebuglevel_                PGASETDEBUGLEVEL
+#define pgacleardebuglevel_              PGACLEARDEBUGLEVEL
+#define pgasetdebuglevelbyname_          PGASETDEBUGLEVELBYNAME
+#define pgacleardebuglevelbyname_        PGACLEARDEBUGLEVELBYNAME
+#define pgaduplicate_                    PGADUPLICATE
+#define pgachange_                       PGACHANGE
+#define pgasetnoduplicatesflag_          PGASETNODUPLICATESFLAG
+#define pgagetnoduplicatesflag_          PGAGETNODUPLICATESFLAG
+#define pgasetevaluation_                PGASETEVALUATION
+#define pgagetevaluation_                PGAGETEVALUATION
+#define pgasetevaluationuptodateflag_    PGASETEVALUATIONUPTODATEFLAG
+#define pgagetevaluationuptodateflag_    PGAGETEVALUATIONUPTODATEFLAG
+#define pgagetrealfrombinary_            PGAGETREALFROMBINARY
+#define pgagetrealfromgraycode_          PGAGETREALFROMGRAYCODE
+#define pgaencoderealasbinary_           PGAENCODEREALASBINARY
+#define pgaencoderealasgraycode_         PGAENCODEREALASGRAYCODE
+#define pgagetintegerfrombinary_         PGAGETINTEGERFROMBINARY
+#define pgagetintegerfromgraycode_       PGAGETINTEGERFROMGRAYCODE
+#define pgaencodeintegerasbinary_        PGAENCODEINTEGERASBINARY
+#define pgaencodeintegerasgraycode_      PGAENCODEINTEGERASGRAYCODE
+#define pgafitness_                      PGAFITNESS
+#define pgarank_                         PGARANK
+#define pgagetfitness_                   PGAGETFITNESS
+#define pgagetfitnesstype_               PGAGETFITNESSTYPE
+#define pgagetfitnessmintype_            PGAGETFITNESSMINTYPE
+#define pgagetmaxfitnessrank_            PGAGETMAXFITNESSRANK
+#define pgasetfitnesstype_               PGASETFITNESSTYPE
+#define pgasetfitnessmintype_            PGASETFITNESSMINTYPE
+#define pgasetmaxfitnessrank_            PGASETMAXFITNESSRANK
+#define pgasetfitnesscmaxvalue_          PGASETFITNESSCMAXVALUE
+#define pgagetfitnesscmaxvalue_          PGAGETFITNESSCMAXVALUE
+#define pgahammingdistance_              PGAHAMMINGDISTANCE
+#define pgasetintegerallele_             PGASETINTEGERALLELE
+#define pgagetintegerallele_             PGAGETINTEGERALLELE
+#define pgasetintegerinitpermute_        PGASETINTEGERINITPERMUTE
+#define pgasetintegerinitrange_          PGASETINTEGERINITRANGE
+#define pgagetintegerinittype_           PGAGETINTEGERINITTYPE
+#define pgagetminintegerinitvalue_       PGAGETMININTEGERINITVALUE
+#define pgagetmaxintegerinitvalue_       PGAGETMAXINTEGERINITVALUE
+#define pgamutate_                       PGAMUTATE
+#define pgasetmutationtype_              PGASETMUTATIONTYPE
+#define pgagetmutationtype_              PGAGETMUTATIONTYPE
+#define pgasetmutationrealvalue_         PGASETMUTATIONREALVALUE
+#define pgagetmutationrealvalue_         PGAGETMUTATIONREALVALUE
+#define pgasetmutationintegervalue_      PGASETMUTATIONINTEGERVALUE
+#define pgagetmutationintegervalue_      PGAGETMUTATIONINTEGERVALUE
+#define pgasetmutationboundedflag_       PGASETMUTATIONBOUNDEDFLAG
+#define pgagetmutationboundedflag_       PGAGETMUTATIONBOUNDEDFLAG
+#define pgasetmutationprob_              PGASETMUTATIONPROB
+#define pgagetmutationprob_              PGAGETMUTATIONPROB
+#define pgarungm_                        PGARUNGM
+#define pgaevaluate_                     PGAEVALUATE
+#define pgabuilddatatype_                PGABUILDDATATYPE
+#define pgasendindividual_               PGASENDINDIVIDUAL
+#define pgareceiveindividual_            PGARECEIVEINDIVIDUAL
+#define pgasendreceiveindividual_        PGASENDRECEIVEINDIVIDUAL
+#define pgagetrank_                      PGAGETRANK
+#define pgagetnumprocs_                  PGAGETNUMPROCS
+#define pgasetcommunicator_              PGASETCOMMUNICATOR
+#define pgagetcommunicator_              PGAGETCOMMUNICATOR
+#define pgarun_                          PGARUN
+#define pgarunmutationandcrossover_      PGARUNMUTATIONANDCROSSOVER
+#define pgarunmutationorcrossover_       PGARUNMUTATIONORCROSSOVER
+#define pgaupdategeneration_             PGAUPDATEGENERATION
+#define pgagetdatatype_                  PGAGETDATATYPE
+#define pgagetoptdirflag_                PGAGETOPTDIRFLAG
+#define pgagetstringlength_              PGAGETSTRINGLENGTH
+#define pgagetgaitervalue_               PGAGETGAITERVALUE
+#define pgasetmutationorcrossoverflag_   PGASETMUTATIONORCROSSOVERFLAG
+#define pgasetmutationandcrossoverflag_  PGASETMUTATIONANDCROSSOVERFLAG
+#define pgagetmutationorcrossoverflag_   PGAGETMUTATIONORCROSSOVERFLAG
+#define pgagetmutationandcrossoverflag_  PGAGETMUTATIONANDCROSSOVERFLAG
+#define pgasortpop_                      PGASORTPOP
+#define pgagetpopsize_                   PGAGETPOPSIZE
+#define pgagetnumreplacevalue_           PGAGETNUMREPLACEVALUE
+#define pgagetpopreplacetype_            PGAGETPOPREPLACETYPE
+#define pgagetsortedpopindex_            PGAGETSORTEDPOPINDEX
+#define pgasetpopsize_                   PGASETPOPSIZE
+#define pgasetnumreplacevalue_           PGASETNUMREPLACEVALUE
+#define pgasetpopreplacetype_            PGASETPOPREPLACETYPE
+#define pgarandomflip_                   PGARANDOMFLIP
+#define pgarandominterval_               PGARANDOMINTERVAL
+#define pgarandom01_                     PGARANDOM01
+#define pgarandomuniform_                PGARANDOMUNIFORM
+#define pgarandomgaussian_               PGARANDOMGAUSSIAN
+#define pgagetrandomseed_                PGAGETRANDOMSEED
+#define pgasetrandomseed_                PGASETRANDOMSEED
+#define pgasetrealallele_                PGASETREALALLELE
+#define pgagetrealallele_                PGAGETREALALLELE
+#define pgasetrealinitpercent_           PGASETREALINITPERCENT
+#define pgasetrealinitrange_             PGASETREALINITRANGE
+#define pgagetminrealinitvalue_          PGAGETMINREALINITVALUE
+#define pgagetmaxrealinitvalue_          PGAGETMAXREALINITVALUE
+#define pgagetrealinittype_              PGAGETREALINITTYPE
+#define pgaprintreport_                  PGAPRINTREPORT
+#define pgasetprintoptions_              PGASETPRINTOPTIONS
+#define pgasetprintfrequencyvalue_       PGASETPRINTFREQUENCYVALUE
+#define pgagetprintfrequencyvalue_       PGAGETPRINTFREQUENCYVALUE
+#define pgaprintpopulation_              PGAPRINTPOPULATION
+#define pgaprintindividual_              PGAPRINTINDIVIDUAL
+#define pgaprintstring_                  PGAPRINTSTRING
+#define pgaprintcontextvariable_         PGAPRINTCONTEXTVARIABLE
+#define pgarestart_                      PGARESTART
+#define pgasetrestartflag_               PGASETRESTARTFLAG
+#define pgagetrestartflag_               PGAGETRESTARTFLAG
+#define pgasetrestartfrequencyvalue_     PGASETRESTARTFREQUENCYVALUE
+#define pgagetrestartfrequencyvalue_     PGAGETRESTARTFREQUENCYVALUE
+#define pgasetrestartallelechangeprob_   PGASETRESTARTALLELECHANGEPROB
+#define pgagetrestartallelechangeprob_   PGAGETRESTARTALLELECHANGEPROB
+#define pgaselect_                       PGASELECT
+#define pgaselectnextindex_              PGASELECTNEXTINDEX
+#define pgasetselecttype_                PGASETSELECTTYPE
+#define pgagetselecttype_                PGAGETSELECTTYPE
+#define pgasetptournamentprob_           PGASETPTOURNAMENTPROB
+#define pgagetptournamentprob_           PGAGETPTOURNAMENTPROB
+#define pgadone_                         PGADONE
+#define pgacheckstoppingconditions_      PGACHECKSTOPPINGCONDITIONS
+#define pgasetstoppingruletype_          PGASETSTOPPINGRULETYPE
+#define pgagetstoppingruletype_          PGAGETSTOPPINGRULETYPE
+#define pgasetmaxgaitervalue_            PGASETMAXGAITERVALUE
+#define pgagetmaxgaitervalue_            PGAGETMAXGAITERVALUE
+#define pgasetmaxnochangevalue_          PGASETMAXNOCHANGEVALUE
+#define pgasetmaxsimilarityvalue_        PGASETMAXSIMILARITYVALUE
+#define pgaerror_                        PGAERROR
+#define pgadestroy_                      PGADESTROY
+#define pgagetmaxmachineintvalue_        PGAGETMAXMACHINEINTVALUE
+#define pgagetminmachineintvalue_        PGAGETMINMACHINEINTVALUE
+#define pgagetmaxmachinedoublevalue_     PGAGETMAXMACHINEDOUBLEVALUE
+#define pgagetminmachinedoublevalue_     PGAGETMINMACHINEDOUBLEVALUE
+#define pgausage_                        PGAUSAGE
+#define pgaprintversionnumber_           PGAPRINTVERSIONNUMBER
+#define pgasetuserfunction_              PGASETUSERFUNCTION
+#define pgamean_                         PGAMEAN
+#define pgastddev_                       PGASTDDEV
+#define pgaround_                        PGAROUND
+#define pgacopyindividual_               PGACOPYINDIVIDUAL
+#define pgachecksum_                     PGACHECKSUM
+#define pgagetworstindex_                PGAGETWORSTINDEX
+#define pgagetbestindex_                 PGAGETBESTINDEX
+
+#elif defined(FORTRANTWOUNDERSCORE)
+#define pgasetbinaryallele_              _pgasetbinaryallele_
+#define pgagetbinaryallele_              _pgagetbinaryallele_
+#define pgasetbinaryinitprob_            _pgasetbinaryinitprob_
+#define pgagetbinaryinitprob_            _pgagetbinaryinitprob_
+#define pgasetcharacterallele_           _pgasetcharacterallele_
+#define pgagetcharacterallele_           _pgagetcharacterallele_
+#define pgasetcharacterinittype_         _pgasetcharacterinittype_
+#define pgacreate_                       _pgacreate_
+#define pgasetup_                        _pgasetup_
+#define pgasetrandominitflag_            _pgasetrandominitflag_
+#define pgagetrandominitflag_            _pgagetrandominitflag_
+#define pgacrossover_                    _pgacrossover_
+#define pgagetcrossovertype_             _pgagetcrossovertype_
+#define pgagetcrossoverprob_             _pgagetcrossoverprob_
+#define pgagetuniformcrossoverprob_      _pgagetuniformcrossoverprob_
+#define pgasetcrossovertype_             _pgasetcrossovertype_
+#define pgasetcrossoverprob_             _pgasetcrossoverprob_
+#define pgasetuniformcrossoverprob_      _pgasetuniformcrossoverprob_
+#define pgadebugprint_                   _pgadebugprint_
+#define pgasetdebuglevel_                _pgasetdebuglevel_
+#define pgacleardebuglevel_              _pgacleardebuglevel_
+#define pgasetdebuglevelbyname_          _pgasetdebuglevelbyname_
+#define pgacleardebuglevelbyname_        _pgacleardebuglevelbyname_
+#define pgaduplicate_                    _pgaduplicate_
+#define pgachange_                       _pgachange_
+#define pgasetnoduplicatesflag_          _pgasetnoduplicatesflag_
+#define pgagetnoduplicatesflag_          _pgagetnoduplicatesflag_
+#define pgasetevaluation_                _pgasetevaluation_
+#define pgagetevaluation_                _pgagetevaluation_
+#define pgasetevaluationuptodateflag_    _pgasetevaluationuptodateflag_
+#define pgagetevaluationuptodateflag_    _pgagetevaluationuptodateflag_
+#define pgagetrealfrombinary_            _pgagetrealfrombinary_
+#define pgagetrealfromgraycode_          _pgagetrealfromgraycode_
+#define pgaencoderealasbinary_           _pgaencoderealasbinary_
+#define pgaencoderealasgraycode_         _pgaencoderealasgraycode_
+#define pgagetintegerfrombinary_         _pgagetintegerfrombinary_
+#define pgagetintegerfromgraycode_       _pgagetintegerfromgraycode_
+#define pgaencodeintegerasbinary_        _pgaencodeintegerasbinary_
+#define pgaencodeintegerasgraycode_      _pgaencodeintegerasgraycode_
+#define pgafitness_                      _pgafitness_
+#define pgarank_                         _pgarank_
+#define pgagetfitness_                   _pgagetfitness_
+#define pgagetfitnesstype_               _pgagetfitnesstype_
+#define pgagetfitnessmintype_            _pgagetfitnessmintype_
+#define pgagetmaxfitnessrank_            _pgagetmaxfitnessrank_
+#define pgasetfitnesstype_               _pgasetfitnesstype_
+#define pgasetfitnessmintype_            _pgasetfitnessmintype_
+#define pgasetmaxfitnessrank_            _pgasetmaxfitnessrank_
+#define pgasetfitnesscmaxvalue_          _pgasetfitnesscmaxvalue_
+#define pgagetfitnesscmaxvalue_          _pgagetfitnesscmaxvalue_
+#define pgahammingdistance_              _pgahammingdistance_
+#define pgasetintegerallele_             _pgasetintegerallele_
+#define pgagetintegerallele_             _pgagetintegerallele_
+#define pgasetintegerinitpermute_        _pgasetintegerinitpermute_
+#define pgasetintegerinitrange_          _pgasetintegerinitrange_
+#define pgagetintegerinittype_           _pgagetintegerinittype_
+#define pgagetminintegerinitvalue_       _pgagetminintegerinitvalue_
+#define pgagetmaxintegerinitvalue_       _pgagetmaxintegerinitvalue_
+#define pgamutate_                       _pgamutate_
+#define pgasetmutationtype_              _pgasetmutationtype_
+#define pgagetmutationtype_              _pgagetmutationtype_
+#define pgasetmutationrealvalue_         _pgasetmutationrealvalue_
+#define pgagetmutationrealvalue_         _pgagetmutationrealvalue_
+#define pgasetmutationintegervalue_      _pgasetmutationintegervalue_
+#define pgagetmutationintegervalue_      _pgagetmutationintegervalue_
+#define pgasetmutationboundedflag_       _pgasetmutationboundedflag_
+#define pgagetmutationboundedflag_       _pgagetmutationboundedflag_
+#define pgasetmutationprob_              _pgasetmutationprob_
+#define pgagetmutationprob_              _pgagetmutationprob_
+#define pgarungm_                        _pgarungm_
+#define pgaevaluate_                     _pgaevaluate_
+#define pgabuilddatatype_                _pgabuilddatatype_
+#define pgasendindividual_               _pgasendindividual_
+#define pgareceiveindividual_            _pgareceiveindividual_
+#define pgasendreceiveindividual_        _pgasendreceiveindividual_
+#define pgagetrank_                      _pgagetrank_
+#define pgagetnumprocs_                  _pgagetnumprocs_
+#define pgasetcommunicator_              _pgasetcommunicator_
+#define pgagetcommunicator_              _pgagetcommunicator_
+#define pgarun_                          _pgarun_
+#define pgarunmutationandcrossover_      _pgarunmutationandcrossover_
+#define pgarunmutationorcrossover_       _pgarunmutationorcrossover_
+#define pgaupdategeneration_             _pgaupdategeneration_
+#define pgagetdatatype_                  _pgagetdatatype_
+#define pgagetoptdirflag_                _pgagetoptdirflag_
+#define pgagetstringlength_              _pgagetstringlength_
+#define pgagetgaitervalue_               _pgagetgaitervalue_
+#define pgasetmutationorcrossoverflag_   _pgasetmutationorcrossoverflag_
+#define pgasetmutationandcrossoverflag_  _pgasetmutationandcrossoverflag_
+#define pgagetmutationorcrossoverflag_   _pgagetmutationorcrossoverflag_
+#define pgagetmutationandcrossoverflag_  _pgagetmutationandcrossoverflag_
+#define pgasortpop_                      _pgasortpop_
+#define pgagetpopsize_                   _pgagetpopsize_
+#define pgagetnumreplacevalue_           _pgagetnumreplacevalue_
+#define pgagetpopreplacetype_            _pgagetpopreplacetype_
+#define pgagetsortedpopindex_            _pgagetsortedpopindex_
+#define pgasetpopsize_                   _pgasetpopsize_
+#define pgasetnumreplacevalue_           _pgasetnumreplacevalue_
+#define pgasetpopreplacetype_            _pgasetpopreplacetype_
+#define pgarandomflip_                   _pgarandomflip_
+#define pgarandominterval_               _pgarandominterval_
+#define pgarandom01_                     _pgarandom01_
+#define pgarandomuniform_                _pgarandomuniform_
+#define pgarandomgaussian_               _pgarandomgaussian_
+#define pgagetrandomseed_                _pgagetrandomseed_
+#define pgasetrandomseed_                _pgasetrandomseed_
+#define pgasetrealallele_                _pgasetrealallele_
+#define pgagetrealallele_                _pgagetrealallele_
+#define pgasetrealinitpercent_           _pgasetrealinitpercent_
+#define pgasetrealinitrange_             _pgasetrealinitrange_
+#define pgagetminrealinitvalue_          _pgagetminrealinitvalue_
+#define pgagetmaxrealinitvalue_          _pgagetmaxrealinitvalue_
+#define pgagetrealinittype_              _pgagetrealinittype_
+#define pgaprintreport_                  _pgaprintreport_
+#define pgasetprintoptions_              _pgasetprintoptions_
+#define pgasetprintfrequencyvalue_       _pgasetprintfrequencyvalue_
+#define pgagetprintfrequencyvalue_       _pgagetprintfrequencyvalue_
+#define pgaprintpopulation_              _pgaprintpopulation_
+#define pgaprintindividual_              _pgaprintindividual_
+#define pgaprintstring_                  _pgaprintstring_
+#define pgaprintcontextvariable_         _pgaprintcontextvariable_
+#define pgarestart_                      _pgarestart_
+#define pgasetrestartflag_               _pgasetrestartflag_
+#define pgagetrestartflag_               _pgagetrestartflag_
+#define pgasetrestartfrequencyvalue_     _pgasetrestartfrequencyvalue_
+#define pgagetrestartfrequencyvalue_     _pgagetrestartfrequencyvalue_
+#define pgasetrestartallelechangeprob_   _pgasetrestartallelechangeprob_
+#define pgagetrestartallelechangeprob_   _pgagetrestartallelechangeprob_
+#define pgaselect_                       _pgaselect_
+#define pgaselectnextindex_              _pgaselectnextindex_
+#define pgasetselecttype_                _pgasetselecttype_
+#define pgagetselecttype_                _pgagetselecttype_
+#define pgasetptournamentprob_           _pgasetptournamentprob_
+#define pgagetptournamentprob_           _pgagetptournamentprob_
+#define pgadone_                         _pgadone_
+#define pgacheckstoppingconditions_      _pgacheckstoppingconditions_
+#define pgasetstoppingruletype_          _pgasetstoppingruletype_
+#define pgagetstoppingruletype_          _pgagetstoppingruletype_
+#define pgasetmaxgaitervalue_            _pgasetmaxgaitervalue_
+#define pgagetmaxgaitervalue_            _pgagetmaxgaitervalue_
+#define pgasetmaxnochangevalue_          _pgasetmaxnochangevalue_
+#define pgasetmaxsimilarityvalue_        _pgasetmaxsimilarityvalue_
+#define pgaerror_                        _pgaerror_
+#define pgadestroy_                      _pgadestroy_
+#define pgagetmaxmachineintvalue_        _pgagetmaxmachineintvalue_
+#define pgagetminmachineintvalue_        _pgagetminmachineintvalue_
+#define pgagetmaxmachinedoublevalue_     _pgagetmaxmachinedoublevalue_
+#define pgagetminmachinedoublevalue_     _pgagetminmachinedoublevalue_
+#define pgausage_                        _pgausage_
+#define pgaprintversionnumber_           _pgaprintversionnumber_
+#define pgasetuserfunction_              _pgasetuserfunction_
+#define pgamean_                         _pgamean_
+#define pgastddev_                       _pgastddev_
+#define pgaround_                        _pgaround_
+#define pgacopyindividual_               _pgacopyindividual_
+#define pgachecksum_                     _pgachecksum_
+#define pgagetworstindex_                _pgagetworstindex_
+#define pgagetbestindex_                 _pgagetbestindex_
+
+#elif !defined(FORTRANUNDERSCORE)
+#define pgasetbinaryallele_              pgasetbinaryallele
+#define pgagetbinaryallele_              pgagetbinaryallele
+#define pgasetbinaryinitprob_            pgasetbinaryinitprob
+#define pgagetbinaryinitprob_            pgagetbinaryinitprob
+#define pgasetcharacterallele_           pgasetcharacterallele
+#define pgagetcharacterallele_           pgagetcharacterallele
+#define pgasetcharacterinittype_         pgasetcharacterinittype
+#define pgacreate_                       pgacreate
+#define pgasetup_                        pgasetup
+#define pgasetrandominitflag_            pgasetrandominitflag
+#define pgagetrandominitflag_            pgagetrandominitflag
+#define pgacrossover_                    pgacrossover
+#define pgagetcrossovertype_             pgagetcrossovertype
+#define pgagetcrossoverprob_             pgagetcrossoverprob
+#define pgagetuniformcrossoverprob_      pgagetuniformcrossoverprob
+#define pgasetcrossovertype_             pgasetcrossovertype
+#define pgasetcrossoverprob_             pgasetcrossoverprob
+#define pgasetuniformcrossoverprob_      pgasetuniformcrossoverprob
+#define pgadebugprint_                   pgadebugprint
+#define pgasetdebuglevel_                pgasetdebuglevel
+#define pgacleardebuglevel_              pgacleardebuglevel
+#define pgasetdebuglevelbyname_          pgasetdebuglevelbyname
+#define pgacleardebuglevelbyname_        pgacleardebuglevelbyname
+#define pgaduplicate_                    pgaduplicate
+#define pgachange_                       pgachange
+#define pgasetnoduplicatesflag_          pgasetnoduplicatesflag
+#define pgagetnoduplicatesflag_          pgagetnoduplicatesflag
+#define pgasetevaluation_                pgasetevaluation
+#define pgagetevaluation_                pgagetevaluation
+#define pgasetevaluationuptodateflag_    pgasetevaluationuptodateflag
+#define pgagetevaluationuptodateflag_    pgagetevaluationuptodateflag
+#define pgagetrealfrombinary_            pgagetrealfrombinary
+#define pgagetrealfromgraycode_          pgagetrealfromgraycode
+#define pgaencoderealasbinary_           pgaencoderealasbinary
+#define pgaencoderealasgraycode_         pgaencoderealasgraycode
+#define pgagetintegerfrombinary_         pgagetintegerfrombinary
+#define pgagetintegerfromgraycode_       pgagetintegerfromgraycode
+#define pgaencodeintegerasbinary_        pgaencodeintegerasbinary
+#define pgaencodeintegerasgraycode_      pgaencodeintegerasgraycode
+#define pgafitness_                      pgafitness
+#define pgarank_                         pgarank
+#define pgagetfitness_                   pgagetfitness
+#define pgagetfitnesstype_               pgagetfitnesstype
+#define pgagetfitnessmintype_            pgagetfitnessmintype
+#define pgagetmaxfitnessrank_            pgagetmaxfitnessrank
+#define pgasetfitnesstype_               pgasetfitnesstype
+#define pgasetfitnessmintype_            pgasetfitnessmintype
+#define pgasetmaxfitnessrank_            pgasetmaxfitnessrank
+#define pgasetfitnesscmaxvalue_          pgasetfitnesscmaxvalue
+#define pgagetfitnesscmaxvalue_          pgagetfitnesscmaxvalue
+#define pgahammingdistance_              pgahammingdistance
+#define pgasetintegerallele_             pgasetintegerallele
+#define pgagetintegerallele_             pgagetintegerallele
+#define pgasetintegerinitpermute_        pgasetintegerinitpermute
+#define pgasetintegerinitrange_          pgasetintegerinitrange
+#define pgagetintegerinittype_           pgagetintegerinittype
+#define pgagetminintegerinitvalue_       pgagetminintegerinitvalue
+#define pgagetmaxintegerinitvalue_       pgagetmaxintegerinitvalue
+#define pgamutate_                       pgamutate
+#define pgasetmutationtype_              pgasetmutationtype
+#define pgagetmutationtype_              pgagetmutationtype
+#define pgasetmutationrealvalue_         pgasetmutationrealvalue
+#define pgagetmutationrealvalue_         pgagetmutationrealvalue
+#define pgasetmutationintegervalue_      pgasetmutationintegervalue
+#define pgagetmutationintegervalue_      pgagetmutationintegervalue
+#define pgasetmutationboundedflag_       pgasetmutationboundedflag
+#define pgagetmutationboundedflag_       pgagetmutationboundedflag
+#define pgasetmutationprob_              pgasetmutationprob
+#define pgagetmutationprob_              pgagetmutationprob
+#define pgarungm_                        pgarungm
+#define pgaevaluate_                     pgaevaluate
+#define pgabuilddatatype_                pgabuilddatatype
+#define pgasendindividual_               pgasendindividual
+#define pgareceiveindividual_            pgareceiveindividual
+#define pgasendreceiveindividual_        pgasendreceiveindividual
+#define pgagetrank_                      pgagetrank
+#define pgagetnumprocs_                  pgagetnumprocs
+#define pgasetcommunicator_              pgasetcommunicator
+#define pgagetcommunicator_              pgagetcommunicator
+#define pgarun_                          pgarun
+#define pgarunmutationandcrossover_      pgarunmutationandcrossover
+#define pgarunmutationorcrossover_       pgarunmutationorcrossover
+#define pgaupdategeneration_             pgaupdategeneration
+#define pgagetdatatype_                  pgagetdatatype
+#define pgagetoptdirflag_                pgagetoptdirflag
+#define pgagetstringlength_              pgagetstringlength
+#define pgagetgaitervalue_               pgagetgaitervalue
+#define pgasetmutationorcrossoverflag_   pgasetmutationorcrossoverflag
+#define pgasetmutationandcrossoverflag_  pgasetmutationandcrossoverflag
+#define pgagetmutationorcrossoverflag_   pgagetmutationorcrossoverflag
+#define pgagetmutationandcrossoverflag_  pgagetmutationandcrossoverflag
+#define pgasortpop_                      pgasortpop
+#define pgagetpopsize_                   pgagetpopsize
+#define pgagetnumreplacevalue_           pgagetnumreplacevalue
+#define pgagetpopreplacetype_            pgagetpopreplacetype
+#define pgagetsortedpopindex_            pgagetsortedpopindex
+#define pgasetpopsize_                   pgasetpopsize
+#define pgasetnumreplacevalue_           pgasetnumreplacevalue
+#define pgasetpopreplacetype_            pgasetpopreplacetype
+#define pgarandomflip_                   pgarandomflip
+#define pgarandominterval_               pgarandominterval
+#define pgarandom01_                     pgarandom01
+#define pgarandomuniform_                pgarandomuniform
+#define pgarandomgaussian_               pgarandomgaussian
+#define pgagetrandomseed_                pgagetrandomseed
+#define pgasetrandomseed_                pgasetrandomseed
+#define pgasetrealallele_                pgasetrealallele
+#define pgagetrealallele_                pgagetrealallele
+#define pgasetrealinitpercent_           pgasetrealinitpercent
+#define pgasetrealinitrange_             pgasetrealinitrange
+#define pgagetminrealinitvalue_          pgagetminrealinitvalue
+#define pgagetmaxrealinitvalue_          pgagetmaxrealinitvalue
+#define pgagetrealinittype_              pgagetrealinittype
+#define pgaprintreport_                  pgaprintreport
+#define pgasetprintoptions_              pgasetprintoptions
+#define pgasetprintfrequencyvalue_       pgasetprintfrequencyvalue
+#define pgagetprintfrequencyvalue_       pgagetprintfrequencyvalue
+#define pgaprintpopulation_              pgaprintpopulation
+#define pgaprintindividual_              pgaprintindividual
+#define pgaprintstring_                  pgaprintstring
+#define pgaprintcontextvariable_         pgaprintcontextvariable
+#define pgarestart_                      pgarestart
+#define pgasetrestartflag_               pgasetrestartflag
+#define pgagetrestartflag_               pgagetrestartflag
+#define pgasetrestartfrequencyvalue_     pgasetrestartfrequencyvalue
+#define pgagetrestartfrequencyvalue_     pgagetrestartfrequencyvalue
+#define pgasetrestartallelechangeprob_   pgasetrestartallelechangeprob
+#define pgagetrestartallelechangeprob_   pgagetrestartallelechangeprob
+#define pgaselect_                       pgaselect
+#define pgaselectnextindex_              pgaselectnextindex
+#define pgasetselecttype_                pgasetselecttype
+#define pgagetselecttype_                pgagetselecttype
+#define pgasetptournamentprob_           pgasetptournamentprob
+#define pgagetptournamentprob_           pgagetptournamentprob
+#define pgadone_                         pgadone
+#define pgacheckstoppingconditions_      pgacheckstoppingconditions
+#define pgasetstoppingruletype_          pgasetstoppingruletype
+#define pgagetstoppingruletype_          pgagetstoppingruletype
+#define pgasetmaxgaitervalue_            pgasetmaxgaitervalue
+#define pgagetmaxgaitervalue_            pgagetmaxgaitervalue
+#define pgasetmaxnochangevalue_          pgasetmaxnochangevalue
+#define pgasetmaxsimilarityvalue_        pgasetmaxsimilarityvalue
+#define pgaerror_                        pgaerror
+#define pgadestroy_                      pgadestroy
+#define pgagetmaxmachineintvalue_        pgagetmaxmachineintvalue
+#define pgagetminmachineintvalue_        pgagetminmachineintvalue
+#define pgagetmaxmachinedoublevalue_     pgagetmaxmachinedoublevalue
+#define pgagetminmachinedoublevalue_     pgagetminmachinedoublevalue
+#define pgausage_                        pgausage
+#define pgaprintversionnumber_           pgaprintversionnumber
+#define pgasetuserfunction_              pgasetuserfunction
+#define pgamean_                         pgamean
+#define pgastddev_                       pgastddev
+#define pgaround_                        pgaround
+#define pgacopyindividual_               pgacopyindividual
+#define pgachecksum_                     pgachecksum
+#define pgagetworstindex_                pgagetworstindex
+#define pgagetbestindex_                 pgagetbestindex
+#endif
+
+void pgasetbinaryallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     int *val);
+int pgagetbinaryallele_(PGAContext **ftx, int *p, int *pop, int *i);
+void pgasetbinaryinitprob_(PGAContext **ftx, double *probability);
+double pgagetbinaryinitprob_(PGAContext **ftx);
+void pgasetcharacterallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     char *val);
+void pgagetcharacterallele_(char *retval_ptr, int retval_len, PGAContext **ftx,
+     int *p, int *pop, int *i);
+void pgasetcharacterinittype_(PGAContext **ftx, int *value);
+unsigned long pgacreate_(int *datatype, int *len, int *maxormin);
+void pgasetup_(PGAContext **ftx);
+void pgasetrandominitflag_(PGAContext **ftx, int *RandomBoolean);
+int pgagetrandominitflag_(PGAContext **ftx);
+void pgacrossover_(PGAContext **ftx, int *m1, int *m2, int *oldpop, int *t1,
+     int *t2, int *newpop);
+int pgagetcrossovertype_(PGAContext **ftx);
+double pgagetcrossoverprob_(PGAContext **ftx);
+double pgagetuniformcrossoverprob_(PGAContext **ftx);
+void pgasetcrossovertype_(PGAContext **ftx, int *crossover_type);
+void pgasetcrossoverprob_(PGAContext **ftx, double *crossover_prob);
+void pgasetuniformcrossoverprob_(PGAContext **ftx,
+     double *uniform_cross_prob);
+void pgadebugprint_(PGAContext **ftx, int *level, char *funcname, char *msg,
+     int *datatype, void *data, int len1, int len2);
+void pgasetdebuglevel_(PGAContext **ftx, int *level);
+void pgacleardebuglevel_(PGAContext **ftx, int *level);
+void pgasetdebuglevelbyname_(PGAContext **ftx, char *name, int len);
+void pgacleardebuglevelbyname_(PGAContext **ftx, char *name, int len);
+int pgaduplicate_(PGAContext **ftx, int *j, int *pop1, int *pop2, int *n);
+void pgachange_(PGAContext **ftx, int *j, int *popindex);
+void pgasetnoduplicatesflag_(PGAContext **ftx, int *no_dup);
+int pgagetnoduplicatesflag_(PGAContext **ftx);
+void pgasetevaluation_( PGAContext **ftx, int *p, int *pop, double *val );
+double pgagetevaluation_(PGAContext **ftx, int *p, int *pop);
+void pgasetevaluationuptodateflag_(PGAContext **ftx, int *p, int *pop, int *status);
+int pgagetevaluationuptodateflag_(PGAContext **ftx, int *p, int *pop);
+double pgagetrealfrombinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper);
+double pgagetrealfromgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper);
+void pgaencoderealasbinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper,
+     double *value);
+void pgaencoderealasgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper,
+     double *value);
+int pgagetintegerfrombinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end);
+int pgagetintegerfromgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end);
+void pgaencodeintegerasbinary_(PGAContext **ftx, int *p, int *pop,
+     int*start, int *end, int *value);
+void pgaencodeintegerasgraycode_(PGAContext **ftx, int *p, int *pop,
+     int*start, int *end, int *value);
+void pgafitness_(PGAContext **ftx, int *popindex);
+int pgarank_(PGAContext **ftx, int *p, int *order, int *n);
+double pgagetfitness_(PGAContext **ftx, int *p, int *pop);
+int pgagetfitnesstype_(PGAContext **ftx);
+int pgagetfitnessmintype_(PGAContext **ftx);
+double pgagetmaxfitnessrank_(PGAContext **ftx);
+void pgasetfitnesstype_(PGAContext **ftx, int *fitness_type);
+void pgasetfitnessmintype_(PGAContext **ftx, int *fitness_type);
+void pgasetmaxfitnessrank_(PGAContext **ftx, double *fitness_rank_max);
+void pgasetfitnesscmaxvalue_(PGAContext **ftx, double *val);
+double pgagetfitnesscmaxvalue_(PGAContext **ftx);
+double pgahammingdistance_(PGAContext **ftx, int *popindex);
+void pgasetintegerallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     int *val);
+int pgagetintegerallele_(PGAContext **ftx, int *p, int *pop, int *i);
+void pgasetintegerinitpermute_(PGAContext **ftx, int *min, int *max);
+void pgasetintegerinitrange_ (PGAContext **ftx, int *min, int *max);
+int pgagetintegerinittype_(PGAContext **ftx);
+int pgagetminintegerinitvalue_ (PGAContext **ftx, int *i);
+int pgagetmaxintegerinitvalue_ (PGAContext **ftx, int *i);
+void pgamutate_(PGAContext **ftx, int *p, int *pop);
+void pgasetmutationtype_(PGAContext **ftx, int *mutation_type);
+int pgagetmutationtype_(PGAContext **ftx);
+void pgasetmutationrealvalue_(PGAContext **ftx, double *val);
+double pgagetmutationrealvalue_(PGAContext **ftx);
+void pgasetmutationintegervalue_(PGAContext **ftx, int *val);
+int pgagetmutationintegervalue_(PGAContext **ftx);
+void pgasetmutationboundedflag_(PGAContext **ftx, int *val);
+int pgagetmutationboundedflag_(PGAContext **ftx);
+void pgasetmutationprob_(PGAContext **ftx, double *mutation_prob);
+double pgagetmutationprob_(PGAContext **ftx);
+void pgarungm_(PGAContext **ftx, double (*f)(PGAContext *, int, int),
+     MPI_Comm *comm);
+void pgaevaluate_(PGAContext **ftx, int *pop,
+     double (*f)(PGAContext *, int, int), MPI_Comm *comm);
+unsigned long pgabuilddatatype_(PGAContext **ftx, int *p, int *pop);
+void pgasendindividual_(PGAContext **ftx, int *p, int *pop, int *dest, int *tag, MPI_Comm *comm);
+void pgareceiveindividual_(PGAContext **ftx, int *p, int *pop, int *source, int *tag, MPI_Comm *comm, MPI_Status *status);
+void pgasendreceiveindividual_(PGAContext **ftx, int *send_p, int *send_pop, int *dest, int *send_tag, int *recv_p, int *recv_pop, int *source, int *recv_tag, MPI_Comm *comm, MPI_Status *status);
+int pgagetrank_(PGAContext **ftx, MPI_Comm *comm);
+int pgagetnumprocs_(PGAContext **ftx, MPI_Comm *comm);
+void pgasetcommunicator_(PGAContext **ftx, MPI_Comm *comm);
+MPI_Comm pgagetcommunicator_(PGAContext **ftx);
+void pgarun_(PGAContext **ftx,
+     double (*evaluate)(PGAContext *c, int p, int pop));
+void pgarunmutationandcrossover_(PGAContext **ftx, int *oldpop,
+     int *newpop);
+void pgarunmutationorcrossover_(PGAContext **ftx, int *oldpop, int *newpop);
+void pgaupdategeneration_(PGAContext **ftx, MPI_Comm *comm);
+int pgagetdatatype_(PGAContext **ftx);
+int pgagetoptdirflag_(PGAContext **ftx);
+int pgagetstringlength_(PGAContext **ftx);
+int pgagetgaitervalue_(PGAContext **ftx);
+void pgasetmutationorcrossoverflag_(PGAContext **ftx, int *flag);
+void pgasetmutationandcrossoverflag_(PGAContext **ftx, int *flag);
+int pgagetmutationorcrossoverflag_(PGAContext **ftx);
+int pgagetmutationandcrossoverflag_(PGAContext **ftx);
+void pgasortpop_(PGAContext **ftx, int *pop);
+int pgagetpopsize_(PGAContext **ftx);
+int pgagetnumreplacevalue_(PGAContext **ftx);
+int pgagetpopreplacetype_(PGAContext **ftx);
+int pgagetsortedpopindex_(PGAContext **ftx, int *n);
+void pgasetpopsize_(PGAContext **ftx, int *popsize);
+void pgasetnumreplacevalue_(PGAContext **ftx, int *pop_replace);
+void pgasetpopreplacetype_(PGAContext **ftx, int *pop_replace);
+int pgarandomflip_(PGAContext **ftx, double *p);
+int pgarandominterval_(PGAContext **ftx, int *start, int *end);
+double pgarandom01_(PGAContext **ftx, int *newseed);
+double pgarandomuniform_(PGAContext **ftx, double *start, double *end);
+double pgarandomgaussian_(PGAContext **ftx, double *mean, double *sigma);
+int pgagetrandomseed_(PGAContext **ftx);
+void pgasetrandomseed_(PGAContext **ftx, int *seed);
+void pgasetrealallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     double *val);
+double pgagetrealallele_(PGAContext **ftx, int *p, int *pop, int *i);
+void pgasetrealinitpercent_(PGAContext **ftx, double *median, double *percent);
+void pgasetrealinitrange_ (PGAContext **ftx, double *min, double *max);
+double pgagetminrealinitvalue_(PGAContext **ftx, int *i);
+double pgagetmaxrealinitvalue_(PGAContext **ftx, int *i);
+int pgagetrealinittype_(PGAContext **ftx);
+void pgaprintreport_(PGAContext **ftx, char *name, int *pop, int len);
+void pgasetprintoptions_(PGAContext **ftx, int *option);
+void pgasetprintfrequencyvalue_(PGAContext **ftx, int *print_freq);
+int pgagetprintfrequencyvalue_(PGAContext **ftx);
+void pgaprintpopulation_(PGAContext **ftx, char *name, int *pop, int len);
+void pgaprintindividual_ (PGAContext **ftx, char *name, int *p,
+     int *pop, int len);
+void pgaprintstring_ (PGAContext **ftx, char *name, int *p,
+     int *pop, int len);
+void pgaprintcontextvariable_(PGAContext **ftx, char *name, int len);
+void pgarestart_(PGAContext **ftx, int *source_pop, int *dest_pop);
+void pgasetrestartflag_(PGAContext **ftx, int *val);
+int pgagetrestartflag_(PGAContext **ftx);
+void pgasetrestartfrequencyvalue_(PGAContext **ftx, int *numiter);
+int pgagetrestartfrequencyvalue_(PGAContext **ftx);
+void pgasetrestartallelechangeprob_(PGAContext **ftx, double *prob);
+double pgagetrestartallelechangeprob_(PGAContext **ftx);
+void pgaselect_(PGAContext **ftx, int *popix);
+int pgaselectnextindex_(PGAContext **ftx);
+void pgasetselecttype_(PGAContext **ftx, int *select_type);
+int pgagetselecttype_(PGAContext **ftx);
+void pgasetptournamentprob_(PGAContext **ftx, double *ptournament_prob);
+double pgagetptournamentprob_(PGAContext **ftx);
+int pgadone_(PGAContext **ftx, MPI_Comm *comm);
+int pgacheckstoppingconditions_(PGAContext **ftx);
+void pgasetstoppingruletype_(PGAContext **ftx, int *stoprule);
+int pgagetstoppingruletype_(PGAContext **ftx);
+void pgasetmaxgaitervalue_(PGAContext **ftx, int *maxiter);
+int pgagetmaxgaitervalue_(PGAContext **ftx);
+void pgasetmaxnochangevalue_(PGAContext **ftx, int *max_no_change);
+void pgasetmaxsimilarityvalue_(PGAContext **ftx, int *max_similarity);
+void pgaerror_(PGAContext **ftx, char *msg, int *level, int *datatype,
+     void **data, int len);
+void pgadestroy_(PGAContext **ftx);
+int pgagetmaxmachineintvalue_(PGAContext **ftx);
+int pgagetminmachineintvalue_(PGAContext **ftx);
+double pgagetmaxmachinedoublevalue_(PGAContext **ftx);
+double pgagetminmachinedoublevalue_(PGAContext **ftx);
+void pgausage_(PGAContext **ftx);
+void pgaprintversionnumber_(PGAContext **ftx);
+void pgasetuserfunction_(PGAContext **ftx, int *constant, void *f);
+double pgamean_(PGAContext **ftx, double *a, int *n);
+double pgastddev_(PGAContext **ftx, double *a, int *n, double *m);
+int pgaround_(PGAContext **ftx, double *x);
+void pgacopyindividual_(PGAContext **ftx, int *i, int *p1, int *j, int *p2);
+int pgachecksum_(PGAContext **ftx, int *p, int *pop);
+int pgagetworstindex_(PGAContext **ftx, int *pop);
+int pgagetbestindex_(PGAContext **ftx, int *pop);
+
+void pgasetbinaryallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     int *val)
+{
+     PGASetBinaryAllele(*ftx,
+	   *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+	   *pop, *i-1, *val);
+}
+
+int pgagetbinaryallele_(PGAContext **ftx, int *p, int *pop, int *i)
+{
+     return PGAGetBinaryAllele(*ftx,
+		  *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		  *pop, *i-1);
+}
+
+void pgasetbinaryinitprob_(PGAContext **ftx, double *probability)
+{
+     PGASetBinaryInitProb  (*ftx, *probability);
+}
+
+double pgagetbinaryinitprob_(PGAContext **ftx)
+{
+     return PGAGetBinaryInitProb  (*ftx);
+}
+
+void pgasetcharacterallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     char *val)
+{
+     PGASetCharacterAllele(*ftx,
+	   *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+	   *pop, *i-1, *val);
+}
+
+void pgagetcharacterallele_(char *retval_ptr, int retval_len, PGAContext **ftx,
+     int *p, int *pop, int *i)
+{
+     *retval_ptr = PGAGetCharacterAllele(*ftx,
+		  *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		  *pop, *i-1);
+}
+
+void pgasetcharacterinittype_(PGAContext **ftx, int *value)
+{
+     PGASetCharacterInitType  (*ftx, *value);
+}
+
+unsigned long pgacreate_(int *datatype, int *len, int *maxormin)
+{
+     int argc;
+     char *argv[1];
+     PGAContext *ctx;
+
+     argv[0] = "pgapack";
+     argc = 1;
+
+     ctx = PGACreate(&argc, argv, *datatype, *len, *maxormin);
+     ctx->sys.UserFortran = PGA_TRUE;
+
+     return (unsigned long)ctx;
+}
+
+void pgasetup_(PGAContext **ftx)
+{
+     PGASetUp  (*ftx);
+}
+
+void pgasetrandominitflag_(PGAContext **ftx, int *RandomBoolean)
+{
+     PGASetRandomInitFlag  (*ftx, *RandomBoolean);
+}
+
+int pgagetrandominitflag_(PGAContext **ftx)
+{
+     return PGAGetRandomInitFlag  (*ftx);
+}
+
+void pgacrossover_(PGAContext **ftx, int *m1, int *m2, int *oldpop, int *t1,
+     int *t2, int *newpop)
+{
+     PGACrossover (*ftx,
+		   *m1 == PGA_TEMP1 || *m1 == PGA_TEMP2 ? *m1 : *m1-1,
+		   *m2 == PGA_TEMP1 || *m2 == PGA_TEMP2 ? *m2 : *m2-1,
+		   *oldpop,
+		   *t1 == PGA_TEMP1 || *t1 == PGA_TEMP2 ? *t1 : *t1-1,
+		   *t2 == PGA_TEMP1 || *t2 == PGA_TEMP2 ? *t2 : *t2-1,
+		   *newpop);
+}
+
+int pgagetcrossovertype_(PGAContext **ftx)
+{
+     return PGAGetCrossoverType  (*ftx);
+}
+
+double pgagetcrossoverprob_(PGAContext **ftx)
+{
+     return PGAGetCrossoverProb  (*ftx);
+}
+
+double pgagetuniformcrossoverprob_(PGAContext **ftx)
+{
+     return PGAGetUniformCrossoverProb  (*ftx);
+}
+
+void pgasetcrossovertype_(PGAContext **ftx, int *crossover_type)
+{
+     PGASetCrossoverType  (*ftx, *crossover_type);
+}
+
+void pgasetcrossoverprob_(PGAContext **ftx, double *crossover_prob)
+{
+     PGASetCrossoverProb  (*ftx, *crossover_prob);
+}
+
+void pgasetuniformcrossoverprob_(PGAContext **ftx,
+     double *uniform_cross_prob)
+{
+     PGASetUniformCrossoverProb  (*ftx, *uniform_cross_prob);
+}
+
+#if OPTIMIZE==0
+void pgadebugprint_(PGAContext **ftx, int *level, char *funcname, char *msg,
+     int *datatype, void *data, int len1, int len2)
+/* FORTRAN implicitly passes the lengths of funcname and msg into len1
+   and len2, respectively */
+{
+     if (funcname[len1] != 0 || msg[len2] != 0)
+	  funcname[len1] = msg[len2] = 0;
+     PGADebugPrint(*ftx, *level, funcname, msg, *datatype, data );
+}
+#else
+void pgadebugprint_(PGAContext **ftx, int *level, char *funcname, char *msg,
+		    int *datatype, void *data, int len1, int len2)
+{
+     printf("PGADebugPrint is not supported in the optimized version of PGAPack.\n");
+}
+#endif
+
+#if OPTIMIZE==0
+void pgasetdebuglevel_(PGAContext **ftx, int *level)
+{
+    PGASetDebugLevel(*ftx, *level);
+}
+#else
+void pgasetdebuglevel_(PGAContext **ftx, int *level)
+{
+    printf("PGASetDebugLevel is not supported in the optimized version of PGAPack.\n");
+}
+#endif
+#if OPTIMIZE==0
+void pgacleardebuglevel_(PGAContext **ftx, int *level)
+{
+    PGAClearDebugLevel(*ftx, *level);
+}
+#else
+void pgacleardebuglevel_(PGAContext **ftx, int *level)
+{
+    printf("PGAClearDebugLevel is not supported in the optimized version of PGAPack.\n");
+}
+#endif
+#if OPTIMIZE==0
+void pgasetdebuglevelbyname_(PGAContext **ftx, char *name, int len)
+{
+    if (name[len] != 0)  name[len] = 0;
+    PGASetDebugLevelByName(*ftx, name);
+}
+#else
+void pgasetdebuglevelbyname_(PGAContext **ftx, char *name, int len)
+{
+    printf("PGASetDebugLevelByName is not supported in the optimized version of PGAPack.\n");
+}
+#endif
+#if OPTIMIZE==0
+void pgacleardebuglevelbyname_(PGAContext **ftx, char *name, int len)
+{
+    if (name[len] != 0)  name[len] = 0;
+    PGAClearDebugLevelByName(*ftx, name);
+}
+#else
+void pgacleardebuglevelbyname_(PGAContext **ftx, char *name, int len)
+{
+    printf("PGAClearDebugLevelByName is not supported in the optimized version of PGAPack.\n");
+}
+#endif
+int pgaduplicate_(PGAContext **ftx, int *j, int *pop1, int *pop2, int *n)
+{
+     return PGADuplicate(*ftx,
+		  *j == PGA_TEMP1 || *j == PGA_TEMP2 ? *j : *j-1,
+		  *pop1, *pop2, *n);
+}
+
+void pgachange_(PGAContext **ftx, int *j, int *popindex)
+{
+     PGAChange(*ftx,
+	   *j == PGA_TEMP1 || *j == PGA_TEMP2 ? *j : *j-1,
+	   *popindex);
+}
+
+void pgasetnoduplicatesflag_(PGAContext **ftx, int *no_dup)
+{
+     PGASetNoDuplicatesFlag  (*ftx, *no_dup);
+}
+
+int pgagetnoduplicatesflag_(PGAContext **ftx)
+{
+     return PGAGetNoDuplicatesFlag  (*ftx);
+}
+
+void pgasetevaluation_( PGAContext **ftx, int *p, int *pop, double *val )
+{
+     PGASetEvaluation(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1,
+           *pop, *val );
+}
+
+double pgagetevaluation_(PGAContext **ftx, int *p, int *pop)
+{
+     return PGAGetEvaluation(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1, *pop);
+}
+
+void pgasetevaluationuptodateflag_(PGAContext **ftx, int *p, int *pop, int *status)
+{
+     PGASetEvaluationUpToDateFlag(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1,
+           *pop, *status);
+}
+
+int pgagetevaluationuptodateflag_(PGAContext **ftx, int *p, int *pop)
+{
+     return PGAGetEvaluationUpToDateFlag(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1, *pop);
+}
+
+double pgagetrealfrombinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper)
+{
+     return PGAGetRealFromBinary(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *lower, *upper);
+}
+
+double pgagetrealfromgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper)
+{
+     return PGAGetRealFromGrayCode(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *lower, *upper);
+}
+
+void pgaencoderealasbinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper,
+     double *value)
+{
+     PGAEncodeRealAsBinary(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *lower, *upper, *value);
+}
+
+void pgaencoderealasgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end, double *lower, double *upper,
+     double *value)
+{
+     PGAEncodeRealAsGrayCode(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *lower, *upper, *value);
+}
+
+int pgagetintegerfrombinary_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end)
+{
+     return PGAGetIntegerFromBinary(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1);
+}
+
+int pgagetintegerfromgraycode_(PGAContext **ftx, int *p, int *pop,
+     int *start, int *end)
+{
+     return PGAGetIntegerFromGrayCode(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1);
+}
+
+void pgaencodeintegerasbinary_(PGAContext **ftx, int *p, int *pop,
+     int*start, int *end, int *value)
+{
+     PGAEncodeIntegerAsBinary(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *value);
+}
+
+void pgaencodeintegerasgraycode_(PGAContext **ftx, int *p, int *pop,
+     int*start, int *end, int *value)
+{
+     PGAEncodeIntegerAsGrayCode(*ftx,
+          *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p :
+          *p - 1,
+          *pop, *start-1, *end-1, *value);
+}
+
+void pgafitness_(PGAContext **ftx, int *popindex)
+{
+     PGAFitness  (*ftx, *popindex);
+}
+
+int pgarank_(PGAContext **ftx, int *p, int *order, int *n)
+{
+    return PGARank(*ftx, *p-1, order, *n);
+}
+
+double pgagetfitness_(PGAContext **ftx, int *p, int *pop)
+{
+     return PGAGetFitness(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1, *pop);
+}
+
+int pgagetfitnesstype_(PGAContext **ftx)
+{
+     return PGAGetFitnessType  (*ftx);
+}
+
+int pgagetfitnessmintype_(PGAContext **ftx)
+{
+     return PGAGetFitnessMinType  (*ftx);
+}
+
+double pgagetmaxfitnessrank_(PGAContext **ftx)
+{
+     return PGAGetMaxFitnessRank  (*ftx);
+}
+
+void pgasetfitnesstype_(PGAContext **ftx, int *fitness_type)
+{
+     PGASetFitnessType  (*ftx, *fitness_type);
+}
+
+void pgasetfitnessmintype_(PGAContext **ftx, int *fitness_type)
+{
+     PGASetFitnessMinType  (*ftx, *fitness_type);
+}
+
+void pgasetmaxfitnessrank_(PGAContext **ftx, double *fitness_rank_max)
+{
+     PGASetMaxFitnessRank  (*ftx, *fitness_rank_max);
+}
+
+void pgasetfitnesscmaxvalue_(PGAContext **ftx, double *val)
+{
+     PGASetFitnessCmaxValue  (*ftx, *val);
+}
+
+double pgagetfitnesscmaxvalue_(PGAContext **ftx)
+{
+     return PGAGetFitnessCmaxValue  (*ftx);
+}
+
+double pgahammingdistance_(PGAContext **ftx, int *popindex)
+{
+     return PGAHammingDistance  (*ftx, *popindex);
+}
+
+void pgasetintegerallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     int *val)
+{
+     PGASetIntegerAllele(*ftx,
+	   *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+	   *pop, *i-1, *val);
+}
+
+int pgagetintegerallele_(PGAContext **ftx, int *p, int *pop, int *i)
+{
+     return PGAGetIntegerAllele(*ftx,
+		  *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		  *pop, *i-1);
+}
+
+void pgasetintegerinitpermute_(PGAContext **ftx, int *min, int *max)
+{
+     PGASetIntegerInitPermute  (*ftx, *min, *max);
+}
+
+void pgasetintegerinitrange_ (PGAContext **ftx, int *min, int *max)
+{
+     PGASetIntegerInitRange(*ftx, min, max);
+}
+
+int pgagetintegerinittype_(PGAContext **ftx)
+{
+     return PGAGetIntegerInitType  (*ftx);
+}
+
+int pgagetminintegerinitvalue_ (PGAContext **ftx, int *i)
+{
+     return PGAGetMinIntegerInitValue(*ftx, *i-1);
+}
+
+int pgagetmaxintegerinitvalue_ (PGAContext **ftx, int *i)
+{
+     return PGAGetMaxIntegerInitValue(*ftx, *i-1);
+}
+
+void pgamutate_(PGAContext **ftx, int *p, int *pop)
+{
+     PGAMutate(*ftx,
+	   *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1, *pop);
+}
+
+void pgasetmutationtype_(PGAContext **ftx, int *mutation_type)
+{
+     PGASetMutationType  (*ftx, *mutation_type);
+}
+
+int pgagetmutationtype_(PGAContext **ftx)
+{
+     return PGAGetMutationType  (*ftx);
+}
+
+void pgasetmutationrealvalue_(PGAContext **ftx, double *val)
+{
+     PGASetMutationRealValue  (*ftx, *val);
+}
+
+double pgagetmutationrealvalue_(PGAContext **ftx)
+{
+     return PGAGetMutationRealValue  (*ftx);
+}
+
+void pgasetmutationintegervalue_(PGAContext **ftx, int *val)
+{
+     PGASetMutationIntegerValue  (*ftx, *val);
+}
+
+int pgagetmutationintegervalue_(PGAContext **ftx)
+{
+     return PGAGetMutationIntegerValue  (*ftx);
+}
+
+void pgasetmutationboundedflag_(PGAContext **ftx, int *val)
+{
+     PGASetMutationBoundedFlag  (*ftx, *val);
+}
+
+int pgagetmutationboundedflag_(PGAContext **ftx)
+{
+     return PGAGetMutationBoundedFlag  (*ftx);
+}
+
+void pgasetmutationprob_(PGAContext **ftx, double *mutation_prob)
+{
+     PGASetMutationProb  (*ftx, *mutation_prob);
+}
+
+double pgagetmutationprob_(PGAContext **ftx)
+{
+     return PGAGetMutationProb  (*ftx);
+}
+
+void pgarungm_(PGAContext **ftx, double (*f)(PGAContext *, int, int),
+     MPI_Comm *comm)
+{
+     PGARunGM  (*ftx, (*f), *comm);
+}
+
+void pgaevaluate_(PGAContext **ftx, int *pop,
+     double (*f)(PGAContext *, int, int), MPI_Comm *comm)
+{
+     PGAEvaluate  (*ftx, *pop, (*f), *comm);
+}
+
+unsigned long pgabuilddatatype_(PGAContext **ftx, int *p, int *pop)
+{
+     return((unsigned long)PGABuildDatatype(*ftx, 
+                             *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+                             *pop));
+}
+
+void pgasendindividual_(PGAContext **ftx, int *p, int *pop, int *dest, int *tag, MPI_Comm *comm)
+{
+     PGASendIndividual(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+                       *pop, *dest, *tag, *comm);
+}
+
+void pgareceiveindividual_(PGAContext **ftx, int *p, int *pop, int *source, int *tag, MPI_Comm *comm, MPI_Status *status)
+{
+     PGAReceiveIndividual(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1,
+                          *pop, *source, *tag, *comm, status);
+}
+
+void pgasendreceiveindividual_(PGAContext **ftx, int *send_p, int *send_pop, int *dest, int *send_tag, int *recv_p, int *recv_pop, int *source, int *recv_tag, MPI_Comm *comm, MPI_Status *status)
+{
+     PGASendReceiveIndividual(*ftx, 
+          *send_p == PGA_TEMP1 || *send_p == PGA_TEMP2 ? *send_p : *send_p - 1,
+          *send_pop, *dest, *send_tag, 
+          *recv_p == PGA_TEMP1 || *recv_p == PGA_TEMP2 ? *recv_p : *recv_p - 1,
+          *recv_pop, *source, *recv_tag, *comm, status);
+}
+
+int pgagetrank_(PGAContext **ftx, MPI_Comm *comm)
+{
+     return PGAGetRank  (*ftx, *comm);
+}
+
+int pgagetnumprocs_(PGAContext **ftx, MPI_Comm *comm)
+{
+     return PGAGetNumProcs  (*ftx, *comm);
+}
+
+void pgasetcommunicator_(PGAContext **ftx, MPI_Comm *comm)
+{
+     PGASetCommunicator  (*ftx, *comm);
+}
+
+MPI_Comm pgagetcommunicator_(PGAContext **ftx)
+{
+     return PGAGetCommunicator  (*ftx);
+}
+
+void pgarun_(PGAContext **ftx,
+     double (*evaluate)(PGAContext *c, int p, int pop))
+{
+     PGARun  (*ftx, (*evaluate));
+}
+
+void pgarunmutationandcrossover_(PGAContext **ftx, int *oldpop,
+     int *newpop)
+{
+     PGARunMutationAndCrossover  (*ftx, *oldpop, *newpop);
+}
+
+void pgarunmutationorcrossover_(PGAContext **ftx, int *oldpop, int *newpop)
+{
+     PGARunMutationOrCrossover  (*ftx, *oldpop, *newpop);
+}
+
+void pgaupdategeneration_(PGAContext **ftx, MPI_Comm *comm)
+{
+     PGAUpdateGeneration  (*ftx, *comm);
+}
+
+int pgagetdatatype_(PGAContext **ftx)
+{
+     return PGAGetDataType  (*ftx);
+}
+
+int pgagetoptdirflag_(PGAContext **ftx)
+{
+     return PGAGetOptDirFlag  (*ftx);
+}
+
+int pgagetstringlength_(PGAContext **ftx)
+{
+     return PGAGetStringLength  (*ftx);
+}
+
+int pgagetgaitervalue_(PGAContext **ftx)
+{
+     return PGAGetGAIterValue  (*ftx);
+}
+
+void pgasetmutationorcrossoverflag_(PGAContext **ftx, int *flag)
+{
+     PGASetMutationOrCrossoverFlag  (*ftx, *flag);
+}
+
+void pgasetmutationandcrossoverflag_(PGAContext **ftx, int *flag)
+{
+     PGASetMutationAndCrossoverFlag  (*ftx, *flag);
+}
+
+int pgagetmutationorcrossoverflag_(PGAContext **ftx)
+{
+     return PGAGetMutationOrCrossoverFlag  (*ftx);
+}
+
+int pgagetmutationandcrossoverflag_(PGAContext **ftx)
+{
+     return PGAGetMutationAndCrossoverFlag  (*ftx);
+}
+
+void pgasortpop_(PGAContext **ftx, int *pop)
+{
+     PGASortPop  (*ftx, *pop);
+}
+
+int pgagetpopsize_(PGAContext **ftx)
+{
+     return PGAGetPopSize  (*ftx);
+}
+
+int pgagetnumreplacevalue_(PGAContext **ftx)
+{
+     return PGAGetNumReplaceValue  (*ftx);
+}
+
+int pgagetpopreplacetype_(PGAContext **ftx)
+{
+     return PGAGetPopReplaceType  (*ftx);
+}
+
+int pgagetsortedpopindex_(PGAContext **ftx, int *n)
+{
+     return PGAGetSortedPopIndex(*ftx, *n-1);
+}
+
+void pgasetpopsize_(PGAContext **ftx, int *popsize)
+{
+     PGASetPopSize  (*ftx, *popsize);
+}
+
+void pgasetnumreplacevalue_(PGAContext **ftx, int *pop_replace)
+{
+     PGASetNumReplaceValue  (*ftx, *pop_replace);
+}
+
+void pgasetpopreplacetype_(PGAContext **ftx, int *pop_replace)
+{
+     PGASetPopReplaceType  (*ftx, *pop_replace);
+}
+
+int pgarandomflip_(PGAContext **ftx, double *p)
+{
+     return PGARandomFlip  (*ftx, *p);
+}
+
+int pgarandominterval_(PGAContext **ftx, int *start, int *end)
+{
+     return PGARandomInterval  (*ftx, *start, *end);
+}
+
+double pgarandom01_(PGAContext **ftx, int *newseed)
+{
+     return PGARandom01  (*ftx, *newseed);
+}
+
+double pgarandomuniform_(PGAContext **ftx, double *start, double *end)
+{
+     return PGARandomUniform  (*ftx, *start, *end);
+}
+
+double pgarandomgaussian_(PGAContext **ftx, double *mean, double *sigma)
+{
+     return PGARandomGaussian  (*ftx, *mean, *sigma);
+}
+
+int pgagetrandomseed_(PGAContext **ftx)
+{
+     return PGAGetRandomSeed  (*ftx);
+}
+
+void pgasetrandomseed_(PGAContext **ftx, int *seed)
+{
+     PGASetRandomSeed  (*ftx, *seed);
+}
+
+void pgasetrealallele_(PGAContext **ftx, int *p, int *pop, int *i,
+     double *val)
+{
+     PGASetRealAllele(*ftx,
+	   *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+	   *pop, *i-1, *val);
+}
+
+double pgagetrealallele_(PGAContext **ftx, int *p, int *pop, int *i)
+{
+     return PGAGetRealAllele(*ftx,
+		  *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		  *pop, *i-1);
+}
+
+void pgasetrealinitpercent_(PGAContext **ftx, double *median, double *percent)
+{
+     PGASetRealInitPercent(*ftx, median, percent);
+}
+
+void pgasetrealinitrange_ (PGAContext **ftx, double *min, double *max)
+{
+     PGASetRealInitRange(*ftx, min, max);
+}
+
+double pgagetminrealinitvalue_(PGAContext **ftx, int *i)
+{
+     return PGAGetMinRealInitValue(*ftx, *i-1);
+}
+
+double pgagetmaxrealinitvalue_(PGAContext **ftx, int *i)
+{
+     return PGAGetMaxRealInitValue(*ftx, *i-1);
+}
+
+int pgagetrealinittype_(PGAContext **ftx)
+{
+     return PGAGetRealInitType  (*ftx);
+}
+
+void pgaprintreport_(PGAContext **ftx, char *name, int *pop, int len)
+/* FORTRAN implicitly passes the length of name into len. */
+{
+     FILE *fp;
+     if (name[len] != 0)
+	  name[len] = 0;
+     if (!strcmp(name, "STDOUT") || !strcmp(name, "stdout"))
+     {
+	  fp = stdout;
+	  PGAPrintReport(*ftx, fp, *pop);
+     }
+     else if (!strcmp(name, "STDERR") || !strcmp(name, "stderr"))
+     {
+	  fp = stderr;
+	  PGAPrintReport(*ftx, fp, *pop);
+     }
+     else
+     {
+	  fp = fopen(name, "a");
+	  if (!fp)
+	       PGAError(*ftx, "PGAPrintReport: Could not open file:",
+			     PGA_FATAL, PGA_CHAR, (void *) name);
+	  else
+	  {
+	       PGAPrintReport(*ftx, fp, *pop);
+	       fclose(fp);
+	  }
+     }
+}
+
+void pgasetprintoptions_(PGAContext **ftx, int *option)
+{
+     PGASetPrintOptions  (*ftx, *option);
+}
+
+void pgasetprintfrequencyvalue_(PGAContext **ftx, int *print_freq)
+{
+     PGASetPrintFrequencyValue  (*ftx, *print_freq);
+}
+
+int pgagetprintfrequencyvalue_(PGAContext **ftx)
+{
+     return PGAGetPrintFrequencyValue  (*ftx);
+}
+
+void pgaprintpopulation_(PGAContext **ftx, char *name, int *pop, int len)
+/* FORTRAN implicitly passes the length of name into len. */
+{
+     FILE *fp;
+     if (name[len] != 0)
+	  name[len] = 0;
+     if (!strcmp(name, "STDOUT") || !strcmp(name, "stdout"))
+     {
+	  fp = stdout;
+	  PGAPrintPopulation(*ftx, fp, *pop);
+     }
+     else if (!strcmp(name, "STDERR") || !strcmp(name, "stderr"))
+     {
+	  fp = stderr;
+	  PGAPrintPopulation(*ftx, fp, *pop);
+     }
+     else
+     {
+	  fp = fopen(name, "a");
+	  if (!fp)
+	       PGAError(*ftx, "PGAPrintPopulation: Could not open file:",
+			     PGA_FATAL, PGA_CHAR, (void *) name);
+	  else
+	  {
+	       PGAPrintPopulation(*ftx, fp, *pop);
+	       fclose(fp);
+	  }
+     }
+}
+
+void pgaprintindividual_ (PGAContext **ftx, char *name, int *p,
+     int *pop, int len)
+          /* FORTRAN implicitly passes the length of name into len. */
+{
+     FILE *fp;
+     if (name[len] != 0)
+	  name[len] = 0;
+     if (!strcmp(name, "STDOUT") || !strcmp(name, "stdout"))
+     {
+	  fp = stdout;
+	  PGAPrintIndividual(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		*pop);
+     }
+     else if (!strcmp(name, "STDERR") || !strcmp(name, "stderr"))
+     {
+	  fp = stderr;
+	  PGAPrintIndividual(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		*pop);
+     }
+     else
+     {
+	  fp = fopen(name, "a");
+	  if (!fp)
+	       PGAError(*ftx, "PGAPrintIndividual: Could not open file:",
+			     PGA_FATAL, PGA_CHAR, (void *) name);
+	  else
+	  {
+	       PGAPrintIndividual(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		     *pop);
+	       fclose(fp);
+	  }
+     }
+}
+
+void pgaprintstring_ (PGAContext **ftx, char *name, int *p,
+     int *pop, int len)
+          /* FORTRAN implicitly passes the length of name into len. */
+{
+     FILE *fp;
+     if (name[len] != 0)
+	  name[len] = 0;
+     if (!strcmp(name, "STDOUT") || !strcmp(name, "stdout"))
+     {
+	  fp = stdout;
+	  PGAPrintString(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		*pop);
+     }
+     else if (!strcmp(name, "STDERR") || !strcmp(name, "stderr"))
+     {
+	  fp = stderr;
+	  PGAPrintString(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		*pop);
+     }
+     else
+     {
+	  fp = fopen(name, "a");
+	  if (!fp)
+	       PGAError(*ftx, "PGAPrintString: Could not open file:",
+			     PGA_FATAL, PGA_CHAR, (void *) name);
+	  else
+	  {
+	       PGAPrintString(*ftx, fp, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p - 1,
+		     *pop);
+	       fclose(fp);
+	  }
+     }
+}
+
+void pgaprintcontextvariable_(PGAContext **ftx, char *name, int len)
+/* FORTRAN implicitly passes the length of name into len. */
+{
+     FILE *fp;
+     if (name[len] != 0)
+	  name[len] = 0;
+     if (!strcmp(name, "STDOUT") || !strcmp(name, "stdout"))
+     {
+	  fp = stdout;
+	  PGAPrintContextVariable(*ftx, fp);
+     }
+     else if (!strcmp(name, "STDERR") || !strcmp(name, "stderr"))
+     {
+	  fp = stderr;
+	  PGAPrintContextVariable(*ftx, fp);
+     }
+     else
+     {
+	  fp = fopen(name, "a");
+	  if (!fp)
+	       PGAError(*ftx, "PGAPrintContextVariable: Could not open file:",
+			     PGA_FATAL, PGA_CHAR, (void *) name);
+	  else
+	  {
+	       PGAPrintContextVariable(*ftx, fp);
+	       fclose(fp);
+	  }
+     }
+}
+
+void pgarestart_(PGAContext **ftx, int *source_pop, int *dest_pop)
+{
+     PGARestart  (*ftx, *source_pop, *dest_pop);
+}
+
+void pgasetrestartflag_(PGAContext **ftx, int *val)
+{
+     PGASetRestartFlag  (*ftx, *val);
+}
+
+int pgagetrestartflag_(PGAContext **ftx)
+{
+     return PGAGetRestartFlag  (*ftx);
+}
+
+void pgasetrestartfrequencyvalue_(PGAContext **ftx, int *numiter)
+{
+     PGASetRestartFrequencyValue  (*ftx, *numiter);
+}
+
+int pgagetrestartfrequencyvalue_(PGAContext **ftx)
+{
+     return PGAGetRestartFrequencyValue  (*ftx);
+}
+
+void pgasetrestartallelechangeprob_(PGAContext **ftx, double *prob)
+{
+     PGASetRestartAlleleChangeProb  (*ftx, *prob);
+}
+
+double pgagetrestartallelechangeprob_(PGAContext **ftx)
+{
+     return PGAGetRestartAlleleChangeProb  (*ftx);
+}
+
+void pgaselect_(PGAContext **ftx, int *popix)
+{
+     PGASelect  (*ftx, *popix);
+}
+
+int pgaselectnextindex_(PGAContext **ftx)
+{
+     return PGASelectNextIndex  (*ftx);
+}
+
+void pgasetselecttype_(PGAContext **ftx, int *select_type)
+{
+     PGASetSelectType  (*ftx, *select_type);
+}
+
+int pgagetselecttype_(PGAContext **ftx)
+{
+     return PGAGetSelectType  (*ftx);
+}
+
+void pgasetptournamentprob_(PGAContext **ftx, double *ptournament_prob)
+{
+     PGASetPTournamentProb  (*ftx, *ptournament_prob);
+}
+
+double pgagetptournamentprob_(PGAContext **ftx)
+{
+     return PGAGetPTournamentProb  (*ftx);
+}
+
+int pgadone_(PGAContext **ftx, MPI_Comm *comm)
+{
+     return PGADone  (*ftx, *comm);
+}
+
+int pgacheckstoppingconditions_(PGAContext **ftx)
+{
+     return PGACheckStoppingConditions  (*ftx);
+}
+
+void pgasetstoppingruletype_(PGAContext **ftx, int *stoprule)
+{
+     PGASetStoppingRuleType  (*ftx, *stoprule);
+}
+
+int pgagetstoppingruletype_(PGAContext **ftx)
+{
+     return PGAGetStoppingRuleType  (*ftx);
+}
+
+void pgasetmaxgaitervalue_(PGAContext **ftx, int *maxiter)
+{
+     PGASetMaxGAIterValue  (*ftx, *maxiter);
+}
+
+int pgagetmaxgaitervalue_(PGAContext **ftx)
+{
+     return PGAGetMaxGAIterValue  (*ftx);
+}
+
+void pgasetmaxnochangevalue_(PGAContext **ftx, int *max_no_change)
+{
+     PGASetMaxNoChangeValue  (*ftx, *max_no_change);
+}
+
+void pgasetmaxsimilarityvalue_(PGAContext **ftx, int *max_similarity)
+{
+     PGASetMaxSimilarityValue  (*ftx, *max_similarity);
+}
+
+void pgaerror_(PGAContext **ftx, char *msg, int *level, int *datatype,
+     void **data, int len)
+/* FORTRAN implicitly passes the length of msg into len. */
+{
+     if (msg[len] != 0)
+	  msg[len] = 0;
+     PGAError (*ftx, msg, *level, *datatype, *data);
+}
+
+void pgadestroy_(PGAContext **ftx)
+{
+     PGADestroy  (*ftx);
+}
+
+int pgagetmaxmachineintvalue_(PGAContext **ftx)
+{
+     return PGAGetMaxMachineIntValue  (*ftx);
+}
+
+int pgagetminmachineintvalue_(PGAContext **ftx)
+{
+     return PGAGetMinMachineIntValue  (*ftx);
+}
+
+double pgagetmaxmachinedoublevalue_(PGAContext **ftx)
+{
+     return PGAGetMaxMachineDoubleValue  (*ftx);
+}
+
+double pgagetminmachinedoublevalue_(PGAContext **ftx)
+{
+     return PGAGetMinMachineDoubleValue  (*ftx);
+}
+
+void pgausage_(PGAContext **ftx)
+{
+     PGAUsage  (*ftx);
+}
+
+void pgaprintversionnumber_(PGAContext **ftx)
+{
+     PGAPrintVersionNumber  (*ftx);
+}
+
+void pgasetuserfunction_(PGAContext **ftx, int *constant, void *f)
+{
+     PGASetUserFunction(*ftx, *constant, f);
+}
+
+double pgamean_(PGAContext **ftx, double *a, int *n)
+{
+     return PGAMean(*ftx, a, *n);
+}
+
+double pgastddev_(PGAContext **ftx, double *a, int *n, double *m)
+{
+     return PGAStddev(*ftx, a, *n, *m);
+}
+
+int pgaround_(PGAContext **ftx, double *x)
+{
+     return PGARound  (*ftx, *x);
+}
+
+void pgacopyindividual_(PGAContext **ftx, int *i, int *p1, int *j, int *p2)
+{
+     PGACopyIndividual(*ftx,
+	   *i == PGA_TEMP1 || *i == PGA_TEMP2 ? *i : *i-1,
+	   *p1,
+	   *j == PGA_TEMP1 || *j == PGA_TEMP2 ? *j : *j-1,
+	   *p2);
+}
+
+int pgachecksum_(PGAContext **ftx, int *p, int *pop)
+{
+     return PGACheckSum(*ftx, *p == PGA_TEMP1 || *p == PGA_TEMP2 ? *p : *p-1, *pop);
+}
+
+int pgagetworstindex_(PGAContext **ftx, int *pop)
+{
+     return PGAGetWorstIndex(*ftx, *pop) + 1;
+}
+
+int pgagetbestindex_(PGAContext **ftx, int *pop)
+{
+     return PGAGetBestIndex(*ftx, *pop) + 1;
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/fitness.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/fitness.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/fitness.c	(revision 6168)
@@ -0,0 +1,764 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: fitness.c: This file contains the routines that have to do with
+*                      fitness calculations.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGAFitness - Maps the user's evaluation function value to a fitness value.
+  First, the user's evaluation function value is translated to all positive
+  values if any are negative.  Next, this positive sequence is translated to
+  a maximization problem if the user's optimization direction was minimization.
+  This positive sequence is then mapped to a fitness value using linear
+  ranking, linear normalization fitness, or the identity (i.e., the evaluation
+  function value).  This routine is usually used after PGAEvaluate is called.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+    ctx  - context variable
+    pop  - symbolic constant of the population to calculate fitness for
+
+  Outputs:
+     Calculates the fitness for each string in the population via side effect
+
+  Example:
+     Calculate the fitness of all strings in population PGA_NEWPOP after
+     calling PGAEvaluate to calculate the strings evaluation value.
+
+     double energy(PGAContext *ctx, int p, int pop);
+     PGAContext *ctx;
+     :
+     PGAEvaluate(ctx, PGA_NEWPOP, energy);
+     PGAFitness (ctx, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGAFitness ( PGAContext *ctx, int popindex )
+{
+    int i;
+    double mineval;
+    PGAIndividual *pop;
+
+    PGADebugEntered("PGAFitness");
+
+    /* set pointer to appropriate population */
+
+    switch (popindex) {
+    case PGA_OLDPOP:
+        pop = ctx->ga.oldpop;
+        break;
+    case PGA_NEWPOP:
+        pop = ctx->ga.newpop;
+        break;
+    default:
+        PGAError( ctx, "PGAFitness: Invalid value of popindex:",
+                  PGA_FATAL, PGA_INT, (void *) &popindex );
+        break;
+    }
+
+    /* make sure all evaluation function values are up-to-date */
+
+    for( i=0; i<ctx->ga.PopSize; i++ ) {
+        /*printf("i = %d, evaluptodate = %d\n",i,(pop+i)->evaluptodate);*/
+        if ( (pop+i)->evaluptodate != PGA_TRUE )
+            PGAError( ctx, "PGAFitness: evaluptodate not PGA_TRUE for:",
+                      PGA_FATAL, PGA_INT, (void *) &i );
+    }
+
+    /* put raw fitness into fitness field */
+
+    for( i=0; i<ctx->ga.PopSize; i++ )
+        (pop+i)->fitness = (pop+i)->evalfunc;
+
+    /* translate to all positive sequence (if necessary) */
+
+    mineval = ctx->sys.PGAMaxDouble;
+    for( i=0; i<ctx->ga.PopSize; i++ )
+        if ( (pop+i)->fitness < mineval )
+            mineval =(pop+i)->fitness;
+    if ( mineval < 0.0 ) {
+        mineval = (-1.01) * mineval;
+        for( i=0; i<ctx->ga.PopSize; i++ )
+           (pop+i)->fitness  = (pop+i)->fitness + mineval;
+    }
+
+    /* translate to maximization problem  (if necessary) */
+
+    if ( ctx->ga.optdir == PGA_MINIMIZE ) {
+        switch (ctx->ga.FitnessMinType) {
+        case PGA_FITNESSMIN_RECIPROCAL:
+            PGAFitnessMinReciprocal( ctx, pop );
+            break;
+        case PGA_FITNESSMIN_CMAX:
+            PGAFitnessMinCmax      ( ctx, pop );
+            break;
+        default:
+            PGAError( ctx,
+                     "PGAFitness: Invalid FitnessMinType:",
+                      PGA_FATAL,
+                      PGA_INT,
+                      (void *) &(ctx->ga.FitnessMinType) );
+            break;
+        }
+    }
+
+    /* last step in fitness calculation */
+
+    switch (ctx->ga.FitnessType) {
+    case PGA_FITNESS_RAW:
+        break;
+    case PGA_FITNESS_NORMAL:
+        PGAFitnessLinearNormal    ( ctx, pop );
+        break;
+    case PGA_FITNESS_RANKING:
+        PGAFitnessLinearRank   ( ctx, pop );
+        break;
+    default:
+        PGAError( ctx,
+                 "PGAFitness: Invalid FitnessType:",
+                  PGA_FATAL,
+                  PGA_INT,
+                  (void *) &(ctx->ga.FitnessType) );
+        break;
+    }
+
+    PGADebugExited("PGAFitness");
+}
+
+
+/*U****************************************************************************
+  PGARank - returns the rank of a string in a population.  This is a value
+  between 1,...,N (the population size).  The most fit string has rank 1,
+  the least fit string has rank N.
+
+  Category: Fitness & Evaluation
+
+  Inputs:
+    ctx   - context variable
+    p     - the index of the string whose rank is desired
+    order - an array containing a unique rank for each string
+    n     - the size of the array order
+
+  Outputs:
+    The rank of string p
+
+  Example:
+    Determine the rank of string p.
+
+    PGAContext *ctx;
+    int i, popsize, rank, *order;
+    double *fitness;
+
+    popsize = PGAGetPopsize(ctx);
+    order   = (int *)   malloc(sizeof(int)    * popsize);
+    fitness = (double *)malloc(sizeof(double) * popsize);
+
+    for(i=0;i<popsize; i++) {
+        fitness[i] = PGAGetFitness(ctx, p, PGA_OLDPOP);
+        order[i]   = i;
+    }
+
+    PGADblHeapSort(ctx, fitness, order, popsize);
+    rank = PGARank(ctx, p, order, popsize)
+
+****************************************************************************U*/
+int PGARank( PGAContext *ctx, int p, int *order, int n )
+{
+    int i;
+
+    PGADebugEntered("PGARank");
+
+    /*  If the user gives us PGA_TEMP1 or PGA_TEMP2 (or, gasp, some random
+     *  number that is not in the population), fail.
+     */
+    if ((p<0) || (p > PGAGetPopSize(ctx)))
+        PGAError(ctx, "PGARank: Not a valid population member, p = ",
+                 PGA_FATAL, PGA_INT, (void *)&p);
+
+    /*  Search through all the orderings until we find the one that
+     *  matches the given string.  Return the index number.  If we do not
+     *  find one, something is _very_ bad; terminate with a fatal error.
+     */
+    for(i=0; i<n; i++)
+        if (order[i] == p) {
+	    PGADebugExited("PGARank");
+	    return(i+1);
+        }
+
+    /*  Ideally, we should print out the order array, but, well, ideally,
+     *  we should never get here anyway...Also, to make some compilers
+     *  shut up, return(0) is here, even though PGAError doesn't return.
+     */
+    PGAError( ctx, "PGARank: Bottom of loop in rank, p = ", PGA_FATAL,
+             PGA_INT, (void *) &p );
+    return(0);
+}
+
+/*U***************************************************************************
+   PGAGetFitness - returns the fitness value for a string
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+
+   Outputs:
+      The fitness value for string p in population pop
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      double fit;
+      :
+      fit = PGAGetFitness(ctx, p, PGA_NEWPOP);
+
+***************************************************************************U*/
+double PGAGetFitness ( PGAContext *ctx, int p, int pop )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAGetFitness");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetFitness", "p = ",
+                   PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAGetFitness", "pop = ",
+                   PGA_INT, (void *) &pop );
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+
+    PGADebugExited("PGAGetFitness");
+
+    return(ind->evalfunc);
+}
+
+/*U***************************************************************************
+   PGAGetFitnessType - Returns the type of fitness transformation used.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the type of fitness transformation used
+
+   Example:
+      PGAContext *ctx;
+      int fittype;
+      :
+      fittype = PGAGetFitnessType(ctx);
+      switch (fittype) {
+      case PGA_FITNESS_RAW:
+          printf("Fitness Type = PGA_FITNESS_RAW\n");
+          break;
+      case PGA_FITNESS_NORMAL:
+          printf("Fitness Type = PGA_FITNESS_NORMAL\n");
+          break;
+      case PGA_FITNESS_RANKING:
+          printf("Fitness Type = PGA_FITNESS_RANKING\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetFitnessType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetFitnessType");
+    PGAFailIfNotSetUp("PGAGetFitnessType");
+
+    PGADebugExited("PGAGetFitnessType");
+
+    return(ctx->ga.FitnessType);
+}
+
+/*U***************************************************************************
+   PGAGetFitnessMinType - Returns the type of fitness transformation used
+   for minimization problems.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the type of fitness transformation used
+      for minimization problems
+
+   Example:
+      PGAContext *ctx;
+      int fitmintype;
+      :
+      fitmintype = PGAGetFitnessMinType(ctx);
+      switch (fitmintype) {
+      case PGA_FITNESSMIN_RECIPROCAL:
+          printf("Fitness Minimization Type = PGA_FITNESSMIN_RECIPROCAL\n");
+          break;
+      case PGA_FITNESSMIN_CMAX:
+          printf("Fitness Minimization Type = PGA_FITNESSMIN_CMAX\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetFitnessMinType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetFitnessMinType");
+    PGAFailIfNotSetUp("PGAGetFitnessType");
+
+    PGADebugExited("PGAGetFitnessMinType");
+
+    return(ctx->ga.FitnessMinType);
+}
+
+/*U***************************************************************************
+   PGAGetMaxFitnessRank - returns the maximum value used in rank-based
+   fitness.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The value of MAX used in rank-based fitness
+
+   Example:
+      PGAContext *ctx;
+      double max;
+      :
+      max = PGAGetMaxFitnessRank(ctx);
+
+***************************************************************************U*/
+double PGAGetMaxFitnessRank (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMaxFitnessRank");
+    PGAFailIfNotSetUp("PGAGetFitnessType");
+
+    PGADebugExited("PGAGetMaxFitnessRank");
+
+    return(ctx->ga.FitnessRankMax);
+}
+
+/*U****************************************************************************
+   PGASetFitnessType - Set the type of fitness algorithm to use. Valid choices
+   are PGA_FITNESS_RAW, PGA_FITNESS_NORMAL, or PGA_FITNESS_RANKING for
+   raw fitness (the evaluation function value), linear normalization, or
+   linear ranking, respectively.  The default is PGA_FITNESS_RAW.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx          - context variable
+      fitness_type - symbolic constant to specify fitness type
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetFitnessType(ctx, PGA_FITNESS_RANKING);
+
+****************************************************************************U*/
+void PGASetFitnessType( PGAContext *ctx, int fitness_type)
+{
+
+    PGADebugEntered("PGASetFitnessType");
+
+    switch (fitness_type) {
+        case PGA_FITNESS_RAW:
+        case PGA_FITNESS_NORMAL:
+        case PGA_FITNESS_RANKING:
+            ctx->ga.FitnessType = fitness_type;
+            break;
+        default:
+            PGAError(ctx, "PGASetFitnessType: Invalid value of fitness_type:",
+                     PGA_FATAL, PGA_INT, (void *) &fitness_type);
+            break;
+    }
+
+    PGADebugExited("PGASetFitnessType");
+}
+
+/*U****************************************************************************
+   PGASetFitnessMinType - sets the type of algorithm used if a minimization
+   problem is specified to determine how values are remapped for maximization.
+   Valid choices are PGA_FITNESSMIN_RECIPROCAL and PGA_FITNESSMIN_CMAX to do
+   the mapping using the reciprocal of the evaluation function, or by
+   subtracting the worst evaluation function value from each evaluation
+   function value, respectively.  The default is PGA_FITNESSMIN_CMAX
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx          - context variable
+      fitness_type - symbolic constant to specify fitness minimization type
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetFitnessMinType(ctx, PGA_FITNESSMIN_CMAX);
+
+****************************************************************************U*/
+void PGASetFitnessMinType( PGAContext *ctx, int fitness_type)
+{
+
+    PGADebugEntered("PGASetFitnessMinType");
+
+    switch (fitness_type) {
+        case PGA_FITNESSMIN_RECIPROCAL:
+        case PGA_FITNESSMIN_CMAX:
+            ctx->ga.FitnessMinType = fitness_type;
+            break;
+        default:
+            PGAError ( ctx,
+                      "PGASetFitnessMinType: Invalid value of fitness_type:",
+                       PGA_FATAL, PGA_INT, (void *) &fitness_type);
+        break;
+    }
+
+    PGADebugExited("PGASetFitnessMinType");
+}
+
+/*U****************************************************************************
+   PGASetMaxFitnessRank - The value of the parameter Max when using linear
+   ranking for fitness determination. The default value is 1.2.  The value
+   must be from the interval [1.0, 2.0].  The fitness type must have been set
+   to PGA_FITNESS_RANKING with PGASetFitnessType for this function call
+   to have any effect.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      max - the value of the parameter Max when using linear ranking
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMaxFitnessRank(ctx, 1.1);
+
+****************************************************************************U*/
+void PGASetMaxFitnessRank( PGAContext *ctx, double fitness_rank_max)
+{
+    PGADebugEntered("PGASetMaxFitnessRank");
+
+    if ((fitness_rank_max < 1.0) || (fitness_rank_max > 2.0))
+        PGAError ( ctx,
+                  "PGASetMaxFitnessRank: Invalid value of fitness_rank_max:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &fitness_rank_max);
+    else
+        ctx->ga.FitnessRankMax = fitness_rank_max;
+
+    PGADebugExited("PGASetMaxFitnessRank");
+}
+
+
+
+/*I****************************************************************************
+  PGAFitnessLinearNormal - Calculates fitness using a ranking method and
+  linear' ordering.  The fitness function is of the form
+  u(x) = K - ( rank * sigma ) with the constant K equal to the mean of the
+  evaluation functions, and the decrement sigma equal to the standard
+  deviation of the same.
+  Ref:    L. Davis, Handbook of Genetic Algorithms, pg. 33
+
+  Inputs:
+    ctx  - context variable
+    pop  - population pointer to calculate fitness for
+
+  Outputs:
+     Calculates the fitness for each string in the population via side effect
+
+  Example:
+
+****************************************************************************I*/
+void PGAFitnessLinearNormal ( PGAContext *ctx, PGAIndividual *pop )
+{
+
+    int i;
+    double K, sigma, mean;
+
+    PGADebugEntered("PGAFitnessLinearNormal");
+
+    /* fill arrays for sorting */
+
+    for(i=0;i<ctx->ga.PopSize;i++) {
+        ctx->scratch.dblscratch[i] = (pop+i)->fitness;
+        ctx->scratch.intscratch[i] =                i;
+    }
+
+    /* calculate parameters for linear normalization */
+
+    mean  = PGAMean   ( ctx, ctx->scratch.dblscratch, ctx->ga.PopSize  );
+    sigma = PGAStddev ( ctx, ctx->scratch.dblscratch, ctx->ga.PopSize, mean );
+    if (sigma == 0)
+         sigma = 1;
+    K = sigma * (double) ctx->ga.PopSize;
+    PGADblHeapSort ( ctx, ctx->scratch.dblscratch,
+                  ctx->scratch.intscratch,
+                  ctx->ga.PopSize);
+
+    for( i=0; i<ctx->ga.PopSize; i++ )
+        (pop+i)->fitness = K - ( sigma *
+            (double) PGARank(ctx,i,ctx->scratch.intscratch,ctx->ga.PopSize) );
+
+    PGADebugExited("PGAFitnessLinearNormal");
+}
+
+/*I****************************************************************************
+  PGAFitnessLinearRank - Calculates fitness using linear ranking. The fitness
+  function is of the form 1/N * ( max - (max-min) * ( (i-1)/(N-1) ) ) where
+  min = 2-max and 1 <= max <= 2.
+  Ref:    J. Baker: Adaptive selection methods for GAs
+  Ref:    J. Baker: Extended selection mechanism in GAs
+  Ref:    J. Grefenstte: A critical look at implicit parallelism
+  Ref:    D. Whitley's linear() function on pp. 121 of ICGA
+
+  Inputs:
+    ctx  - context variable
+    pop  - population pointer to calculate fitness for
+
+  Outputs:
+     Calculates the fitness for each string in the population via side effect
+
+  Example:
+
+****************************************************************************I*/
+void PGAFitnessLinearRank ( PGAContext *ctx, PGAIndividual *pop )
+{
+    double max, min, popsize, rpopsize;
+    int i;
+
+    PGADebugEntered("PGAFitnessLinearRank");
+
+    max      = ctx->ga.FitnessRankMax;
+    min      = 2. - max;
+    popsize  = (double) ctx->ga.PopSize;
+    rpopsize = 1.0/popsize;
+
+    for(i=0;i<ctx->ga.PopSize;i++) {
+        ctx->scratch.dblscratch[i] = (pop+i)->fitness;
+        ctx->scratch.intscratch[i] =                i;
+    }
+
+    PGADblHeapSort ( ctx, ctx->scratch.dblscratch,
+                  ctx->scratch.intscratch,
+                  ctx->ga.PopSize);
+
+    for(i=0;i<ctx->ga.PopSize;i++) {
+        (pop+i)->fitness = rpopsize * ( max -
+        ( (max - min) *
+        ( ( (double) PGARank(ctx,i,ctx->scratch.intscratch,ctx->ga.PopSize)
+             - 1. ) / ( popsize - 1. ) ) ) );
+
+    }
+
+    PGADebugExited("PGAFitnessLinearRank");
+}
+
+
+/*I****************************************************************************
+  PGAFitnessMinReciprocal - Calculates fitness in the case of a minimization
+  problem using the reciprocal of the evaluation function. This is a power law
+  u(x) = ( a f(x) + b )^k with a=1, b=0, k=-1
+
+  Inputs:
+    ctx  - context variable
+    pop  - population pointer to calculate fitness for
+
+  Outputs:
+     Calculates the fitness for each string in the population via side effect
+
+  Example:
+
+****************************************************************************I*/
+void PGAFitnessMinReciprocal ( PGAContext *ctx, PGAIndividual *pop )
+{
+    int i;
+
+    PGADebugEntered("PGAFitnessMinReciprocal");
+
+    for( i=0; i<ctx->ga.PopSize; i++ ) {
+        if ( (pop+i)->fitness != 0. )
+            (pop+i)->fitness = 1. / (pop+i)->fitness;
+        else
+            PGAError( ctx,
+                     "PGAFitnessReciprocal: Value 0.0 for fitness member:",
+                      PGA_FATAL,
+                      PGA_INT,
+                     (void *) &i );
+    }
+
+    PGADebugExited("PGAFitnessMinReciprocal");
+}
+
+
+/*I****************************************************************************
+  PGAFitnessMinCmax - Calculates fitness in the case of a minimization
+  problem by subtracting the worst evaluation function value from each
+  evaluation function.  This is a dynamic linear fitness function
+  u(x) = a f(x) + b(t) with a=-1, b(t) = 1.1 * max f(x)
+
+  Inputs:
+    ctx  - context variable
+    pop  - population pointer to calculate fitness for
+
+  Outputs:
+     Calculates the fitness for each string in the population via side effect
+
+  Example:
+
+****************************************************************************I*/
+void PGAFitnessMinCmax ( PGAContext *ctx, PGAIndividual *pop )
+{
+    int i;
+    double cmax;
+
+    PGADebugEntered("PGAFitnessMinCmax");
+
+    cmax = 0.;
+
+    for(i=0; i<ctx->ga.PopSize; i++)
+        if ( (pop+i)->evalfunc > cmax )
+            cmax = (pop+i)->evalfunc;
+
+    cmax *= ctx->ga.FitnessCmaxValue; /* so worst string has nonzero fitness */
+
+    for(i=0;i<ctx->ga.PopSize;i++)
+        (pop+i)->fitness = cmax - (pop+i)->evalfunc;
+
+    PGADebugExited("PGAFitnessMinCmax");
+}
+
+
+/*U****************************************************************************
+   PGASetFitnessCmaxValue - The value of the multiplier used by
+   PGAFitnessMinCmax so that the worst string has a nonzero fitness.
+   The default value is 1.01.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      val - the value of the multiplier
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetFitnessCmaxValue(ctx, 1.2);
+
+****************************************************************************U*/
+void PGASetFitnessCmaxValue( PGAContext *ctx, double val)
+{
+    PGADebugEntered("PGASetFitnessCmaxValue");
+    ctx->ga.FitnessCmaxValue = val;
+    PGADebugExited("PGASetFitnessCmaxValue");
+}
+
+
+
+/*U***************************************************************************
+   PGAGetFitnessCmaxValue - returns the value of the multiplier used by
+   PGAFitnessMinCmax.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The value of Cmax used in
+
+   Example:
+      PGAContext *ctx;
+      double cmax;
+      :
+      cmax = PGAGetFitnessCmaxValue(ctx);
+
+***************************************************************************U*/
+double PGAGetFitnessCmaxValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetFitnessCmaxValue");
+    PGAFailIfNotSetUp("PGAGetFitnessType");
+    PGADebugExited("PGAGetFitnessCmaxValue");
+    return(ctx->ga.FitnessCmaxValue);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/hamming.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/hamming.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/hamming.c	(revision 6168)
@@ -0,0 +1,170 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: hamming.c: This file contains the routines that have to do with
+*                      Hamming distances.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGAHammingDistance - Calculates the mean Hamming distance for a population
+  of binary strings.  For all other data types returns a value of 0.0 and
+  prints a warning message.
+
+  Category: Utility
+
+  Inputs:
+      ctx      - context variable
+      popindex - symbolic constant of the population for which the
+                 Hamming distance is to be calculated
+  Output:
+      The mean Hamming distance in the population
+
+  Example:
+      PGAContext *ctx;
+      double hd;
+      :
+      hd = PGAHammingDistance(ctx, PGA_NEWPOP);
+
+****************************************************************************U*/
+double PGAHammingDistance( PGAContext *ctx, int popindex)
+{
+    int i, j, hd, count=0;
+    double avg_hd = 0.;
+    PGAIndividual *pop;      /* pointer to appropriate population          */
+
+    PGADebugEntered("PGAHammingDistance");
+
+    switch (popindex) {
+    case PGA_OLDPOP:
+        pop = ctx->ga.oldpop;
+        break;
+    case PGA_NEWPOP:
+        pop = ctx->ga.newpop;
+        break;
+    default:
+        PGAError( ctx, "PGAHammingDistance: Invalid value of popindex:",
+                  PGA_FATAL, PGA_INT, (void *) &popindex );
+        break;
+    }
+
+    switch (ctx->ga.datatype) {
+    case PGA_DATATYPE_BINARY:
+        for(i=0; i<ctx->ga.PopSize-1; ++i)
+            for ( j = i+1; j<ctx->ga.PopSize; ++j ) {
+                count++;
+                hd = PGABinaryHammingDistance( ctx,
+                                            (pop+i)->chrom, (pop+j)->chrom );
+                avg_hd += (double) hd;
+            }
+        avg_hd /= (double) count;
+        break;
+    case PGA_DATATYPE_INTEGER:
+        avg_hd = 0.0;
+        PGAError( ctx,
+        "PGAHammingDistance: No Hamming Distance for PGA_DATATYPE_INTEGER ",
+                  PGA_WARNING,
+                  PGA_DOUBLE,
+                  (void *) &avg_hd );
+        break;
+    case PGA_DATATYPE_REAL:
+        avg_hd = 0;
+        PGAError( ctx,
+        "PGAHammingDistance: No Hamming Distance for PGA_DATATYPE_REAL ",
+                  PGA_WARNING,
+                  PGA_DOUBLE,
+                  (void *) &avg_hd );
+        break;
+    case PGA_DATATYPE_CHARACTER:
+        avg_hd = 0;
+        PGAError( ctx,
+        "PGAHammingDistance: No Hamming Distance for PGA_DATATYPE_CHARACTER ",
+                  PGA_WARNING,
+                  PGA_DOUBLE,
+                  (void *) &avg_hd );
+        break;
+    case PGA_DATATYPE_USER:
+        avg_hd = 0;
+        PGAError( ctx,
+        "PGAHammingDistance: No Hamming Distance for PGA_DATATYPE_USER ",
+                  PGA_WARNING,
+                  PGA_DOUBLE,
+                  (void *) &avg_hd );
+        break;
+    default:
+        PGAError( ctx,
+                 "PGAHammingDistance: Invalid value of datatype:",
+                  PGA_FATAL,
+                  PGA_INT,
+                  (void *) &(ctx->ga.datatype) );
+        break;
+    }
+
+    PGADebugExited("PGAHammingDistance");
+
+    return(avg_hd);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/heap.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/heap.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/heap.c	(revision 6168)
@@ -0,0 +1,239 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*      FILE: heap.c: This file contains routines for sorting individuals for
+*                     selection
+*
+*      Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*               Brian P. Walenz
+*****************************************************************************/
+
+#include <pgapack.h>
+
+/******************************************************************************
+   PGAAdjustHeap - Auxiliary routine called by PGA*HeapSort
+
+   Category: Sorting
+
+   Inputs:
+       ctx      - context variable
+       a        - array of values to be sorted
+       idx      - array of integer indices corresponding to the array
+                  a being sorted
+       i        - point of combination -- combine the node at a[i] with
+                  the two heaps at a[2i+1] and a[2i+2] to form a single
+                  heap.  0 <= i <= n-1.
+       n        - size of the arrays a and idx
+       j        - temporary variable, integer
+       item     - temporary variable, type must be same as a
+       item_idx - temporary variable, integer
+
+   Output:
+
+   Example:
+
+******************************************************************************/
+#define PGAAdjustHeap(ctx, a, idx, i, n, j, item, item_idx) {       \
+  item     = a[i];                                                  \
+  item_idx = idx[i];                                                \
+  j = 2*i+1;      /* let j be the left child */                     \
+  while (j < n) {                                                   \
+    if (j<n-1 && a[j] > a[j+1])                                     \
+       j = j + 1;       /* j is the larger child */                 \
+    if (item <= a[j])   /* a position for item has been found */    \
+       break;                                                       \
+    a[(j-1)/2]   = a[j];    /* move the larger child up a level */  \
+    idx[(j-1)/2] = idx[j];                                          \
+    j = j*2+1;                                                      \
+  }                                                                 \
+  a[(j-1)/2]   = item;                                              \
+  idx[(j-1)/2] = item_idx;                                          \
+}                                                                   \
+
+
+
+
+/*I****************************************************************************
+   PGADblHeapSort - Uses a heapsort algorithm to sort from largest to smallest
+   element.  An integer array, intialized with the original indices of the
+   elements of array a is sorted also so that the original locations are known
+
+   Category: Sorting
+
+   Inputs:
+       ctx      - context variable
+       a        - array of (double) values to be sorted
+       idx      - array of integer indices corresponding to the array
+                  a being sorted
+       n        - size of the arrays a and idx
+
+   Output:
+       The sorted arrays a and idx
+
+   Example:
+      The following code sorts the population by fitness
+
+      PGAContext *ctx;
+      int i,j,n,idx[LARGE]
+      double a[LARGE];
+      :
+      n = PGAGetPopsize(ctx);
+      for(i=0;i<n;i++) {
+        a[i]   = PGAGetFitness(ctx,p,PGA_OLDPOP);
+        idx[i] = i;
+      }
+      PGADblHeapSort ( ctx, a, idx, n);
+
+****************************************************************************I*/
+void PGADblHeapSort ( PGAContext *ctx, double *a, int *idx, int n )
+{
+  int i;
+  double temp_a;
+  int temp_idx;
+  int j, item_idx;
+  double item;
+
+    PGADebugEntered("PGADblHeapSort");
+
+  /*  Create a heap from our array  */
+  for (i=(n-2)/2; i>=0; i--)
+    PGAAdjustHeap(ctx, a, idx, i, n, j, item, item_idx);
+
+  for ( i=n-1; i>=1; i--)  /* interchange the new maximum with the   */
+  {                        /* element at the end of the tree         */
+    temp_a   = a[i];
+    temp_idx = idx[i];
+    a[i]     = a[0];
+    idx[i]   = idx[0];
+    a[0]     = temp_a;
+    idx[0]     = temp_idx;
+    PGAAdjustHeap(ctx, a, idx, 0, i, j, item, item_idx);
+  }
+
+    PGADebugExited("PGADblHeapSort");
+}
+
+
+
+
+/*I****************************************************************************
+   PGAIntHeapSort - Uses a heapsort algorithm to sort from largest to smallest
+   element.  An integer array, intialized with the original indices of the
+   elements of array a is sorted also so that the original locations are known
+
+   Category: Sorting
+
+   Inputs:
+       ctx      - context variable
+       a        - array of (int) values to be sorted
+       idx      - array of integer indices corresponding to the array
+                  a being sorted
+       n        - size of the arrays a and idx
+
+   Output:
+       The sorted arrays a and idx
+
+   Example:
+      The following code sorts the population by fitness
+
+      PGAContext *ctx;
+      int i,j,n,idx[LARGE],a[LARGE];
+      :
+      n = PGAGetPopsize(ctx);
+      for(i=0;i<n;i++) {
+        a[i]   = (int) PGAGetEvaluation(ctx,p,PGA_OLDPOP);
+        idx[i] = i;
+      }
+      PGAIntHeapSort ( ctx, a, idx, n);
+
+****************************************************************************I*/
+void PGAIntHeapSort ( PGAContext *ctx, int *a, int *idx, int n )
+{
+  int i;                   /* index of for loops                      */
+  int temp_a;
+  int temp_idx;
+  int j, item_idx;
+  double item;
+
+    PGADebugEntered("PGAIntHeapSort");
+
+  /*  Create a heap from our elements.  */
+  for (i=(n-2)/2; i>=0; i--)
+    PGAAdjustHeap(ctx, a, idx, i, n, j, item, item_idx);
+
+  for ( i=n-1; i>=1; i--)  /* interchange the new maximum with the   */
+  {                        /* element at the end of the tree         */
+    temp_a   = a[i];
+    temp_idx = idx[i];
+    a[i]     = a[0];
+    idx[i]   = idx[0];
+    a[0]     = temp_a;
+    idx[0]     = temp_idx;
+    PGAAdjustHeap(ctx, a, idx, 0, i, j, item, item_idx);
+  }
+
+    PGADebugExited("PGAIntHeapSort");
+}
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/integer.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/integer.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/integer.c	(revision 6168)
@@ -0,0 +1,907 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: integer.c: This file contains the routines specific to the integer
+*                      data structure
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGASetIntegerAllele - sets the value of a (integer) allele.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+      val - integer value to set the allele to
+
+   Outputs:
+
+   Example:
+      Set the value of the ith allele of string p in population PGA_NEWPOP
+      to 64.
+
+      PGAContext *ctx;
+      int p, i;
+      :
+      PGASetIntegerAllele (ctx, p, PGA_NEWPOP, i, 64)
+
+****************************************************************************U*/
+void PGASetIntegerAllele (PGAContext *ctx, int p, int pop, int i, int value)
+{
+    PGAIndividual *ind;
+    PGAInteger     *chrom;
+
+    PGADebugEntered("PGASetIntegerAllele");
+    PGACheckDataType("PGASetIntegerAllele", PGA_DATATYPE_INTEGER);
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGAInteger *)ind->chrom;
+    chrom[i] = value;
+
+    PGADebugExited("PGASetIntegerAllele");
+}
+
+/*U****************************************************************************
+   PGAGetIntegerAllele - Returns the value of allele i of member p in
+   population pop.  Assumes the data type is PGA_DATATYPE_INTEGER.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+
+   Outputs:
+
+   Example:
+      Returns the value of the ith integer allele of string p
+      in population PGA_NEWPOP.
+
+      PGAContext *ctx;
+      int p, i, k;
+      :
+      k =  PGAGetIntegerAllele ( ctx, p, PGA_NEWPOP, i )
+
+****************************************************************************U*/
+int PGAGetIntegerAllele (PGAContext *ctx, int p, int pop, int i)
+{
+    PGAIndividual *ind;
+    PGAInteger     *chrom;
+
+    PGADebugEntered("PGAGetIntegerAllele");
+
+    PGACheckDataType("PGAGetIntegerAllele", PGA_DATATYPE_INTEGER);
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGAInteger *)ind->chrom;
+
+    PGADebugExited("PGAGetIntegerAllele");
+
+    return( (int) chrom[i] );
+}
+
+/*U****************************************************************************
+  PGASetIntegerInitPermute - sets a flag to tell the initialization routines
+  to set each integer-valued gene to a random permutation of the values given
+  by an upper and lower bound.  The length of the interval must be the same
+  as the string length.  This is the default strategy for initializing
+  integer-valued strings. The default interval is [0,L-1] where L is the
+  string length.  No string initialization is done by this call.
+
+  Category: Initialization
+
+  Inputs:
+     ctx - context variable
+     min - the lower bound of numbers used in the permutation
+     max - the upper bound of numbers used in the permutation
+
+  Outputs:
+
+  Example:
+      Set the initialization routines to set each gene to a random and
+      unique value from the interval $[500,599]$.
+
+      PGAContext *ctx;
+      :
+      PGASetIntegerInitPermute(ctx, 500, 599)}
+
+****************************************************************************U*/
+void PGASetIntegerInitPermute ( PGAContext *ctx, int min, int max)
+{
+     int i, range;
+
+    PGADebugEntered("PGASetIntegerInitPermute");
+    PGAFailIfSetUp("PGASetIntegerInitPermute");
+    PGACheckDataType("PGASetIntegerInitPermute", PGA_DATATYPE_INTEGER);
+
+     range = max - min + 1;
+     if (max <= min)
+          PGAError(ctx, "PGASetIntegerInitPermute: max does not exceed min:",
+                   PGA_FATAL, PGA_INT, (void *) &max);
+     else if (range != ctx->ga.StringLen) {
+          PGAError(ctx, "PGASetIntegerInitPermute: range of:",
+                   PGA_FATAL, PGA_INT, (void *) &range);
+          PGAError(ctx, "PGASetIntegerInitPermute: does not equal "
+                   "string length:", PGA_FATAL, PGA_INT,
+                    (void *) &(ctx->ga.StringLen));
+     }
+     else
+     {
+          ctx->init.IntegerType = PGA_IINIT_PERMUTE;
+          for (i = 0; i < ctx->ga.StringLen; i++)
+          {
+               ctx->init.IntegerMin[i] = min;
+               ctx->init.IntegerMax[i] = max;
+          }
+     }
+
+    PGADebugExited("PGASetIntegerInitPermute");
+}
+
+/*U****************************************************************************
+  PGASetIntegerInitRange - sets a flag to tell the initialization routines to
+  set each integer-valued gene to a value chosen randomly from the interval
+  given by an upper and lower bound.  No string initialization is done by
+  this call.
+
+  Category: Initialization
+
+  Inputs:
+     ctx - context variable
+     min - array of lower bounds that define the interval the gene is
+           initialized from
+     max - array of upper bounds that define the interval the gene is
+           initialized from
+
+  Outputs:
+
+  Example:
+      Set the initialization routines to select a value for gene i
+      uniformly randomly from the interval [0,i].  Assumes all strings
+      are of the same length.
+
+      PGAContext *ctx;
+      int *low, *high, stringlen, i;
+      :
+      stringlen = PGAGetStringLength(ctx);
+      low  = (int *) malloc(stringlen*sizeof(int));
+      high = (int *) malloc(stringlen*sizeof(int));
+      for(i=0;i<stringlen;i++) {
+          low[i]  = 0;
+          high[i] = i
+      }
+      PGASetIntegerInitRange(ctx, low, high);
+
+****************************************************************************U*/
+void PGASetIntegerInitRange (PGAContext *ctx, int *min, int *max)
+{
+     int i;
+
+     PGADebugEntered("PGASetIntegerInitRange");
+     PGAFailIfSetUp("PGASetIntegerInitRange");
+     PGACheckDataType("PGASetIntegerInitRange", PGA_DATATYPE_INTEGER);
+
+     for (i = 0; i < ctx->ga.StringLen; i++)
+     {
+        if (max[i] < min[i])
+            PGAError(ctx, "PGASetIntegerInitRange: Lower bound exceeds upper "
+                    "bound for allele #", PGA_FATAL, PGA_INT, (void *) &i);
+        else {
+            ctx->init.IntegerMin[i] = min[i];
+            ctx->init.IntegerMax[i] = max[i];
+        }
+     }
+     ctx->init.IntegerType = PGA_IINIT_RANGE;
+
+     PGADebugExited("PGASetIntegerInitRange");
+}
+
+/*U***************************************************************************
+  PGAGetIntegerInitType - returns the type of scheme used to randomly
+  initialize strings of data type PGA_DATATYPE_INTEGER.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the scheme used to initialize integer strings
+
+   Example:
+      PGAContext *ctx;
+      int inittype;
+      :
+      inittype = PGAGetIntegerInitType(ctx);
+      switch (inittype) {
+      case PGA_IINIT_PERMUTE:
+          printf("Data Type = PGA_IINIT_PERMUTE\n");
+          break;
+      case PGA_IINIT_RANGE:
+          printf("Data Type = PGA_IINIT_RANGE\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetIntegerInitType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetIntegerInitType");
+    PGAFailIfNotSetUp("PGAGetIntegerInitType");
+    PGACheckDataType("PGAGetIntegerInitType", PGA_DATATYPE_INTEGER);
+
+    PGADebugExited("PGAGetIntegerInitType");
+
+    return(ctx->init.IntegerType);
+}
+
+/*U***************************************************************************
+   PGAGetMinIntegerInitValue - returns the minimum of the range of integers
+   used to randomly initialize integer strings.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The minimum of the range of integers used to randomly initialize
+      integer strings
+
+   Example:
+      PGAContext *ctx;
+      int min;
+      :
+      min = PGAGetMinIntegerInitValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMinIntegerInitValue (PGAContext *ctx, int i)
+{
+    PGADebugEntered("PGAGetMinIntegerInitValue");
+    PGAFailIfNotSetUp("PGAGetMinIntegerInitValue");
+    PGACheckDataType("PGASetIntegerAllele", PGA_DATATYPE_INTEGER);
+
+    if (i < 0 || i >= ctx->ga.StringLen)
+         PGAError(ctx, "PGAGetMinIntegerInitValue: Index out of range:",
+                  PGA_FATAL, PGA_INT, (int *) &i);
+
+    PGADebugExited("PGAGetMinIntegerInitValue");
+
+    return(ctx->init.IntegerMin[i]);
+}
+
+/*U***************************************************************************
+   PGAGetMaxIntegerInitValue - returns the maximum of the range of integers
+   used to randomly initialize integer strings.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The maximum of the range of integers used to randomly initialize
+      integer strings.
+
+   Example:
+      PGAContext *ctx;
+      int max;
+      :
+      max = PGAGetMaxIntegerInitValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMaxIntegerInitValue (PGAContext *ctx, int i)
+{
+    PGADebugEntered("PGAGetMaxIntegerInitValue");
+    PGAFailIfNotSetUp("PGAGetMaxIntegerInitValue");
+    PGACheckDataType("PGAGetMaxIntegerInitValue", PGA_DATATYPE_INTEGER);
+
+    if (i < 0 || i >= ctx->ga.StringLen)
+         PGAError(ctx, "PGAGetMaxIntegerInitValue: Index out of range:",
+                  PGA_FATAL, PGA_INT, (int *) &i);
+
+    PGADebugExited("PGAGetMaxIntegerInitValue");
+
+    return(ctx->init.IntegerMax[i]);
+}
+
+
+/*I****************************************************************************
+   PGAIntegerCreateString - Allocate memory for a string of type PGAInteger,
+   and initializes or clears the string according to initflag.
+
+   Inputs:
+      ctx      - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      initflag - A true/false flag used in conjunction with ctx->ga.RandomInit
+                 to initialize the string either randomly or set to zero
+
+   Outputs:
+      new      - a pointer set to the address of the allocated memory
+
+   Example:
+      Allocates and clears memory and assigns the address of the allocated
+      memory to the string field (ind->chrom) of the individual.
+
+      PGAContext *ctx;
+      PGAIndividual *ind;
+      :
+      PGAIntegerCreateString( ctx, ind, PGA_FALSE );
+
+****************************************************************************I*/
+void PGAIntegerCreateString (PGAContext *ctx, int p, int pop, int InitFlag)
+{
+    int i, fp;
+    PGAInteger *c;
+    PGAIndividual *new = PGAGetIndividual(ctx, p, pop);
+
+    PGADebugEntered("PGAIntegerCreateString");
+
+    new->chrom = (void *)malloc(ctx->ga.StringLen * sizeof(PGAInteger));
+    if (new->chrom == NULL)
+	PGAError(ctx, "PGAIntegerCreateString: No room to allocate "
+		 "new->chrom", PGA_FATAL, PGA_VOID, NULL);
+    c = (PGAInteger *)new->chrom;
+    if (InitFlag)
+	if (ctx->fops.InitString) {
+	    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+	    (*ctx->fops.InitString)(&ctx, &fp, &pop);
+	} else {
+	    (*ctx->cops.InitString)(ctx, p, pop);
+	}
+    else
+	for (i=0; i<ctx->ga.StringLen; i++)
+	    c[i] = 0;
+    
+    PGADebugExited("PGAIntegerCreateString");
+}
+
+/*I****************************************************************************
+   PGAIntegerMutation - randomly mutates an integer-valued gene with a
+   specified probability. This routine is called from PGAMutation and must
+   cast the void string pointer it is passed as the second argument.
+
+   Inputs:
+      ctx      - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      mr       - probability of mutating an integer-valued gene
+
+   Outputs:
+      Returns the number of mutations
+
+   Example:
+
+****************************************************************************I*/
+int PGAIntegerMutation( PGAContext *ctx, int p, int pop, double mr )
+{
+     PGAInteger *c;
+     int i, j, temp;
+     int count = 0;
+
+     PGADebugEntered("PGAIntegerMutation");
+
+     c = (PGAInteger *)PGAGetIndividual(ctx, p, pop)->chrom;
+     for(i=0; i<ctx->ga.StringLen; i++) {
+
+         /* randomly choose an allele   */
+         if ( PGARandomFlip(ctx, mr) ) {
+
+             /* apply appropriate mutation operator */
+             switch (ctx->ga.MutationType) {
+             case PGA_MUTATION_CONSTANT:
+                 /* add or subtract from allele */             
+                 if ( PGARandomFlip(ctx, .5) )
+                      c[i] += ctx->ga.MutateIntegerValue;
+                 else
+                      c[i] -= ctx->ga.MutateIntegerValue;
+                 break;
+             case PGA_MUTATION_PERMUTE:
+                 /* could check for j == i if we were noble */
+                 j = PGARandomInterval(ctx, 0, ctx->ga.StringLen);
+                 temp = c[i];                 
+                 c[i] = c[j];
+                 c[j] = temp;                 
+                 break;
+             case PGA_MUTATION_RANGE:
+                 c[i] = PGARandomInterval(ctx, ctx->init.IntegerMin[i],
+                                               ctx->init.IntegerMax[i]);
+                 break;
+             default:
+                  PGAError(ctx, "PGAIntegerMutation: Invalid value of "
+                           "ga.MutationType:", PGA_FATAL, PGA_INT,
+                           (void *) &(ctx->ga.MutationType));
+                  break;
+             }
+
+             /* reset to min/max if bounded flag true and outside range */
+             if( ctx->ga.MutateBoundedFlag == PGA_TRUE ) {
+                 if( c[i] < ctx->init.IntegerMin[i])
+                     c[i] = ctx->init.IntegerMin[i];
+                 if( c[i] > ctx->init.IntegerMax[i])
+                     c[i] = ctx->init.IntegerMax[i];
+             }
+
+             count++;
+         }
+     }
+     PGADebugExited("PGAIntegerMutation");
+     return(count);
+}
+
+/*I****************************************************************************
+   PGAIntegerOneptCrossover - performs one-point crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGAIntegerOneptCrossover(ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGAIntegerOneptCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2)
+{
+     PGAInteger *parent1 = (PGAInteger *)PGAGetIndividual(ctx, p1,
+                                                          pop1)->chrom;
+     PGAInteger *parent2 = (PGAInteger *)PGAGetIndividual(ctx, p2,
+                                                          pop1)->chrom;
+     PGAInteger *child1  = (PGAInteger *)PGAGetIndividual(ctx, c1,
+                                                          pop2)->chrom;
+     PGAInteger *child2  = (PGAInteger *)PGAGetIndividual(ctx, c2,
+                                                          pop2)->chrom;
+     int i, xsite;
+
+    PGADebugEntered("PGAIntegerOneptCrossover");
+
+    xsite = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+
+    for(i=0;i<xsite;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    for(i=xsite;i<ctx->ga.StringLen;i++) {
+        child1[i] = parent2[i];
+        child2[i] = parent1[i];
+    }
+
+    PGADebugExited("PGAIntegerOneptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGAIntegerTwoptCrossover - performs two-point crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGAIntegerTwoptCrossover(ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGAIntegerTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                              int c1, int c2, int pop2)
+{
+     PGAInteger *parent1 = (PGAInteger *)PGAGetIndividual(ctx, p1,
+                                                          pop1)->chrom;
+     PGAInteger *parent2 = (PGAInteger *)PGAGetIndividual(ctx, p2,
+                                                          pop1)->chrom;
+     PGAInteger *child1  = (PGAInteger *)PGAGetIndividual(ctx, c1,
+                                                          pop2)->chrom;
+     PGAInteger *child2  = (PGAInteger *)PGAGetIndividual(ctx, c2,
+                                                          pop2)->chrom;
+     int i, temp, xsite1, xsite2;
+
+    PGADebugEntered("PGAIntegerTwoptCrossover");
+
+    /* pick two cross sites such that xsite2 > xsite1 */
+    xsite1 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    xsite2 = xsite1;
+    while ( xsite2 == xsite1 )
+        xsite2 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    if ( xsite1 > xsite2 ) {
+        temp   = xsite1;
+        xsite1 = xsite2;
+        xsite2 = temp;
+    }
+
+    for(i=0;i<xsite1;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    for(i=xsite1;i<xsite2;i++) {
+        child1[i] = parent2[i];
+        child2[i] = parent1[i];
+    }
+
+    for(i=xsite2;i<ctx->ga.StringLen;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    PGADebugExited("PGAIntegerTwoptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGAIntegerUniformCrossover - performs uniform crossover on two parent
+   strings producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGAIntegerUniformCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGAIntegerUniformCrossover(PGAContext *ctx, int p1, int p2, int pop1,
+                                int c1, int c2, int pop2)
+{
+     PGAInteger *parent1 = (PGAInteger *)PGAGetIndividual(ctx, p1,
+                                                          pop1)->chrom;
+     PGAInteger *parent2 = (PGAInteger *)PGAGetIndividual(ctx, p2,
+                                                          pop1)->chrom;
+     PGAInteger *child1  = (PGAInteger *)PGAGetIndividual(ctx, c1,
+                                                          pop2)->chrom;
+     PGAInteger *child2  = (PGAInteger *)PGAGetIndividual(ctx, c2,
+                                                          pop2)->chrom;
+     int i;
+
+    PGADebugEntered("PGAIntegerUniformCrossover");
+
+    for(i=0;i<ctx->ga.StringLen;i++) {
+        if ( parent1[i] == parent2[i] ) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+        else {
+            if(PGARandomFlip(ctx, ctx->ga.UniformCrossProb)) {
+                child1[i] = parent1[i];
+                child2[i] = parent2[i];
+            }
+            else {
+                child1[i] = parent2[i];
+                child2[i] = parent1[i];
+            }
+        }
+    }
+
+    PGADebugExited("PGAIntegerUniformCrossover");
+}
+
+/*I****************************************************************************
+   PGAIntegerPrintString - writes an integer-valued string to a file.
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to file to write the string to
+      p   - index of the string to write out
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+      Write member p in population PGA_NEWPOP to stdout.
+
+      PGAContext *ctx;
+      int  p;
+      :
+      PGAIntegerPrintString(ctx, stdout, p, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGAIntegerPrintString ( PGAContext *ctx, FILE *fp, int p, int pop)
+{
+    PGAInteger *c = (PGAInteger *)PGAGetIndividual(ctx, p, pop)->chrom;
+    int i;
+
+    PGADebugEntered("PGAIntegerPrintString");
+
+    for(i = 0; i < ctx->ga.StringLen; i++)
+    {
+        switch ( i % 6 )
+        {
+        case 0:
+            fprintf ( fp, "#%5d: [%8ld]",i,c[i]);
+            break;
+        case 1:
+        case 2:
+        case 3:
+        case 4:
+            fprintf ( fp, ", [%8ld]",c[i]);
+            break;
+        case 5:
+            fprintf ( fp, ", [%8ld]",c[i]);
+            if (i+1 < ctx->ga.StringLen)
+                fprintf ( fp, "\n");
+            break;
+        }
+    }
+    fprintf ( fp, "\n" );
+
+    PGADebugExited("PGAIntegerPrintString");
+}
+
+/*I****************************************************************************
+   PGAIntegerCopyString - Copy one integer-valued string to another.
+
+   Inputs:
+      ctx - context variable
+      p1   - string to copy
+      pop1 - symbolic constant of population containing string p1
+      p2   - string to copy p1 to
+      pop2 - symbolic constant of population containing string p2
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAIntegerCopyString (PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+    PGAInteger *source = (PGAInteger *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    PGAInteger *dest   = (PGAInteger *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+    int i;
+
+    PGADebugEntered("PGAIntegerCopyString");
+
+    for (i = 0; i < ctx->ga.StringLen; i++)
+        dest[i] = source[i];
+
+    PGADebugExited("PGAIntegerCopyString");
+}
+
+/*I****************************************************************************
+   PGAIntegerDuplicate - Returns true if string a is a duplicate of
+   string b, else returns false.
+
+   Inputs:
+      ctx - context variable
+      p1   - string index of the first string to compare
+      pop1 - symbolic constant of the population string p1 is in
+      p2   - string index of the second string to compare
+      pop2 - symbolic constant of the population string p2 is in
+
+   Outputs:
+      Returns true/false if strings are duplicates
+
+   Example:
+
+****************************************************************************I*/
+int PGAIntegerDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+     PGAInteger *a = (PGAInteger *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     PGAInteger *b = (PGAInteger *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+     int i;
+
+    PGADebugEntered("PGAIntegerDuplicate");
+
+     i = ctx->ga.StringLen-1;
+     if (a[0] == b[0])
+       for(; (i>0) && (a[i] == b[i]); i--);
+
+    PGADebugExited("PGAIntegerDuplicate");
+
+     return((i==0) ? PGA_TRUE : PGA_FALSE);
+}
+
+/*I****************************************************************************
+   PGAIntegerInitString - randomly initialize a string of type PGAInteger
+
+   Inputs:
+      ctx - context variable
+      p   - index of string to randomly initialize
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAIntegerInitString(PGAContext *ctx, int p, int pop)
+{
+     int *list;
+     int len, i, j;
+     PGAInteger *c = (PGAInteger *)PGAGetIndividual(ctx, p, pop)->chrom;
+
+     PGADebugEntered("PGAIntegerInitString");
+
+     len = ctx->ga.StringLen;
+
+     switch (ctx->init.IntegerType)
+     {
+     case PGA_IINIT_PERMUTE:
+          list = (int *)malloc(sizeof(int) * len);
+          if (list == NULL)
+               PGAError(ctx, "PGAIntegerInitString: No room to allocate list",
+                        PGA_FATAL, PGA_VOID, NULL);
+          j = ctx->init.IntegerMin[0];
+          for (i = 0; i < len; i++)
+               list[i] = j++;
+          for (i = 0; i < len; i++)
+          {
+               j = PGARandomInterval ( ctx, 0, len - i - 1 );
+               c[i] = list[j];
+               list[j] = list[len - i - 1];
+          }
+          free(list);
+          break;
+     case PGA_IINIT_RANGE:
+          for (i = 0; i < len; i++)
+               c[i] = PGARandomInterval(ctx, ctx->init.IntegerMin[i],
+                                        ctx->init.IntegerMax[i]);
+          break;
+     }
+
+     PGADebugExited("PGAIntegerInitString");
+}
+
+/*I****************************************************************************
+  PGAIntegerBuildDatatype - Build an MPI datatype for a string of type
+  PGA_DATATYPE_INTEGER.
+
+  Inputs:
+      ctx - context variable
+      p   - index of string to randomly initialize
+      pop - symbolic constant of the population string p is in
+
+  Outputs:
+
+  Example:
+
+****************************************************************************I*/
+MPI_Datatype PGAIntegerBuildDatatype(PGAContext *ctx, int p, int pop)
+{
+
+     int            counts[4];      /* Number of elements in each
+                                       block (array of integer) */
+     MPI_Aint       displs[4];      /* byte displacement of each
+                                       block (array of integer) */
+     MPI_Datatype   types[4];       /* type of elements in each block (array
+                                       of handles to datatype objects) */
+     MPI_Datatype   individualtype; /* new datatype (handle) */
+     PGAIndividual *traveller;      /* address of individual in question */
+
+    PGADebugEntered("PGAIntegerBuildDatatype");
+
+     traveller = PGAGetIndividual(ctx, p, pop);
+     MPI_Address(&traveller->evalfunc, &displs[0]);
+     counts[0] = 1;
+     types[0]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->fitness, &displs[1]);
+     counts[1] = 1;
+     types[1]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->evaluptodate, &displs[2]);
+     counts[2] = 1;
+     types[2]  = MPI_INT;
+
+     MPI_Address(traveller->chrom, &displs[3]);
+     counts[3] = ctx->ga.StringLen;
+     types[3]  = MPI_LONG;
+
+     MPI_Type_struct(4, counts, displs, types, &individualtype);
+     MPI_Type_commit(&individualtype);
+
+    PGADebugExited("PGAIntegerBuildDatatype");
+
+     return (individualtype);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/mpi_stub.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/mpi_stub.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/mpi_stub.c	(revision 6168)
@@ -0,0 +1,325 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/******************************************************************************
+*     FILE: mpi_stub.c:  MPI stubs needed for PGAPack operation without
+*                        linking with a real MPI.
+*
+*     Authors: Brian P. Walenz
+******************************************************************************/
+
+#include "pgapack.h"
+
+
+#if defined(FORTRANCAP)
+#define mpi_address_      MPI_ADDRESS
+#define mpi_bcast_        MPI_BCAST
+#define mpi_comm_dup_     MPI_COMM_DUP
+#define mpi_comm_free_    MPI_COMM_FREE
+#define mpi_comm_rank_    MPI_COMM_RANK
+#define mpi_comm_size_    MPI_COMM_SIZE
+#define mpi_finalize_     MPI_FINALIZE
+#define mpi_init_         MPI_INIT
+#define mpi_initialized_  MPI_INITIALIZED
+#define mpi_probe_        MPI_PROBE
+#define mpi_send_         MPI_SEND
+#define mpi_recv_         MPI_RECV
+#define mpi_sendrecv_     MPI_SENDRECV
+#define mpi_type_commit_  MPI_TYPE_COMMIT
+#define mpi_type_free_    MPI_TYPE_FREE
+#define mpi_type_struct_  MPI_TYPE_STRUCT
+#elif !defined(FORTRANUNDERSCORE)
+#define mpi_address_      mpi_address
+#define mpi_bcast_        mpi_bcast
+#define mpi_comm_dup_     mpi_comm_dup
+#define mpi_comm_free_    mpi_comm_free
+#define mpi_comm_rank_    mpi_comm_rank
+#define mpi_comm_size_    mpi_comm_size
+#define mpi_finalize_     mpi_finalize
+#define mpi_init_         mpi_init
+#define mpi_initialized_  mpi_initialized
+#define mpi_probe_        mpi_probe
+#define mpi_send_         mpi_send
+#define mpi_recv_         mpi_recv
+#define mpi_sendrecv_     mpi_sendrecv
+#define mpi_type_commit_  mpi_type_commit
+#define mpi_type_free_    mpi_type_free
+#define mpi_type_struct_  mpi_type_struct
+#endif
+
+
+
+/*  Places the address of "location" into "address"
+ *  In FORTRAN, does not return anything.
+ */
+int MPI_Address(void *location, MPI_Aint *address) {
+    *address = (MPI_Aint)NULL;
+    return(0);
+}
+
+
+/*  Broadcast "buf" to all processes.
+ *  FORTRAN adds integer ierror to the end of the parameters.
+ */
+int MPI_Bcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm comm) {
+    return(0);
+}
+
+
+/*  Duplicates communicator "comm" into "newcomm"
+ *  FORTRAN has a third parameter, integer ie, and does not return anything.
+ */
+int MPI_Comm_dup(MPI_Comm comm, MPI_Comm *newcomm) {
+    return(0);
+}
+
+
+/*  Frees a communicator.   */
+int MPI_Comm_free(MPI_Comm *comm) {
+    return(0);
+}
+
+
+/*  Returns the rank of the current process in rank.  We return
+ *  0 -- we are the master.
+ */
+int MPI_Comm_rank(MPI_Comm comm, int *rank) {
+    *rank = 0;
+    return(0);
+}
+
+
+/*  Returns the number of processors that are in communicator comm
+ *  in size.  Always 1.
+ */
+int MPI_Comm_size(MPI_Comm comm, int *size) {
+    *size = 1;
+    return(0);
+}
+
+/*  Finalizes MPI.  */
+int MPI_Finalize(void) {
+    return(0);
+}
+
+
+/*  Initializes MPI.
+ *  Ideally, we should parse the command-line and remove MPI arguments.
+ */
+int MPI_Init(int *argc, char ***argv) {
+    return(0);
+}
+
+
+/*  Returns 1 in flag if MPI is already running.  It is.  */
+int MPI_Initialized(int *flag) {
+    *flag = 1;
+    return(0);
+}
+
+
+/*  Waits for messages to us with tag "tag".  Sets status->MPI_SOURCE to the
+ *  source of the message, status->MPI_TAG to the tag, and status->MPI_ERROR
+ *  to 0.
+ */
+int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status) {
+    status->MPI_SOURCE = source;
+    status->MPI_TAG    = tag;
+    status->MPI_ERROR  = 0;
+    return(0);
+}
+
+
+/*  Send a message to a process.  */
+int MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) {
+    return(0);
+}
+
+
+/*  Receive a message from a source. */
+int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) {
+    status->MPI_SOURCE = source;
+    status->MPI_TAG    = tag;
+    status->MPI_ERROR  = 0;
+    return(0);
+}
+
+
+int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
+                 int dest, int sendtag, void *recvbuf, int recvcount,
+                  MPI_Datatype recvtype, int source, int recvtag,
+                  MPI_Comm comm, MPI_Status *status) {
+    status->MPI_SOURCE = source;
+    status->MPI_TAG    = recvtag;
+    status->MPI_ERROR  = 0;
+    return(0);
+}
+
+
+int MPI_Type_commit(MPI_Datatype *datatype) {
+    return(0);
+}
+
+
+int MPI_Type_free(MPI_Datatype *datatype) {
+    return(0);
+}
+
+
+int MPI_Type_struct(int count, int *array_of_blocklengths,
+                    MPI_Aint *array_of_displacements,
+                    MPI_Datatype *array_of_types, MPI_Datatype *newtype) {
+    return(0);
+}
+
+
+/*  FORTRAN versions of some of the above functions.
+ *  Most of these operate the same as above, we just need to make sure that 
+ *  they are linked in properly, see f2c.c for details.
+ */
+void mpi_address_(void **location, MPI_Aint *address) {
+    *address = (MPI_Aint)NULL;
+}
+
+void mpi_bcast_(void **n, int *com, MPI_Datatype *dt, int *r, MPI_Comm *c, int *ie) {
+    *ie = 0;
+}
+
+void mpi_comm_dup_(MPI_Comm *comm, MPI_Comm **newcomm, int *ie) {
+    *ie = 0;
+}
+
+void mpi_comm_free_(MPI_Comm **comm, int *ie) {
+    *ie = 0;
+}
+
+void mpi_comm_rank_(MPI_Comm *comm, int *rank, int *ie) {
+    *rank = 0;
+    *ie = 0;
+}
+
+void mpi_comm_size_(MPI_Comm *comm, int *size, int *ie) {
+    *size = 1;
+    *ie = 0;
+}
+
+void mpi_finalize_(int *ie) {
+    *ie = 0;
+}
+
+void mpi_init_(int *ie) {
+    *ie = 0;
+}
+
+void mpi_initialized_(int *flag, int *ie) {
+    *flag = 1;
+    *ie = 0;
+}
+
+void mpi_probe_(int *source, int *tag, MPI_Comm *comm, MPI_Status *status,
+               int *ie) {
+    status->MPI_SOURCE = *source;
+    status->MPI_TAG    = *tag;
+    status->MPI_ERROR  = 0;
+    *ie = 0;
+}
+
+void mpi_send_(void *buf, int *count, MPI_Datatype *datatype, int *dest,
+              int *tag, MPI_Comm *comm, int *ie) {
+    *ie = 0;
+}
+
+
+void mpi_recv_(void *buf, int *count, MPI_Datatype *datatype, int *source,
+              int *tag, MPI_Comm *comm, MPI_Status *status, int *ie) {
+    status->MPI_SOURCE = *source;
+    status->MPI_TAG    = *tag;
+    status->MPI_ERROR  = 0;
+    *ie = 0;
+}
+
+
+void mpi_sendrecv_(void *sendbuf, int *sendcount, MPI_Datatype *sendtype,
+                  int *dest, int *sendtag, void *recvbuf, int *recvcount,
+                  MPI_Datatype *recvtype, int *source, int *recvtag,
+                  MPI_Comm *comm, MPI_Status *status, int *ie) {
+    status->MPI_SOURCE = *source;
+    status->MPI_TAG    = *recvtag;
+    status->MPI_ERROR  = 0;
+    *ie = 0;
+}
+
+void mpi_type_commit_(MPI_Datatype **datatype, int *ie) {
+    *ie = 0;
+}
+
+void mpi_type_free_(MPI_Datatype **datatype, int *ie) {
+    *ie = 0;
+}
+
+
+void mpi_type_struct_(int *count, int **array_of_blocklengths,
+                    MPI_Aint **array_of_displacements,
+                    MPI_Datatype **array_of_types, MPI_Datatype **newtype, int *ie) {
+    *ie = 0;
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/mutation.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/mutation.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/mutation.c	(revision 6168)
@@ -0,0 +1,481 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     File: mutation.c: This file contains the data structure neutral mutation
+*                       routines
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGAMutate - This routine performs mutation on a string.  The type of mutation
+  depends on the data type.  Refer to the user guide for data-specific
+  examples.
+
+  Category: Operators
+
+  Inputs:
+      ctx  - context variable
+      p   - index of string to mutate
+      pop - symbolic constant of the population containing p
+
+  Output:
+      The number of mutations performed.  Member p in population pop is
+      mutated by side-effect.
+
+  Example:
+      Mutate the best string in the population, until 10 or more mutations
+      have occured.
+
+      PGAContext *ctx;
+      int p, count = 0;
+      :
+      p = PGAGetBestIndex(ctx, PGA_NEWPOP);
+      while (count < 10) {
+          count += PGAMutate(ctx, p, PGA_NEWPOP);
+      }
+
+****************************************************************************U*/
+int PGAMutate(PGAContext *ctx, int p, int pop)
+{
+    double mr;
+    int count;
+    int fp;
+    PGADebugEntered("PGAMutate");
+    
+    mr    = ctx->ga.MutationProb;
+    if (ctx->fops.Mutation) {
+	fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+        count = (*ctx->fops.Mutation)(&ctx, &fp, &pop, &mr);
+    } else {
+	count = (*ctx->cops.Mutation)( ctx, p, pop, mr );
+    }
+    
+    if ( count > 0 )
+	PGASetEvaluationUpToDateFlag(ctx, p, pop, PGA_FALSE);
+    
+    PGADebugExited("PGAMutate");
+    
+    return(count);
+}
+
+/*U****************************************************************************
+   PGASetMutationType - set type of mutation to use. Only effects integer-
+   and real-valued strings.  Binary-valued strings are always complemented.
+   In character-valued strings, one alphabetic character is replaced with
+   another chosen uniformly randomly.  The alphabetic characters will be lower,
+   upper, or mixed case depending on how the strings were initialized.
+
+   Valid choices are PGA_MUTATION_CONSTANT (Real/Integer), PGA_MUTATION_RANGE
+   (Real/Integer), PGA_MUTATION_UNIFORM (Real), PGA_MUTATION_GAUSSIAN (Real),
+   and PGA_MUTATION_PERMUTE (Integer).  The default for integer-valued strings
+   conforms to how the strings were initialized.  The default for real-valued
+   strings is PGA_MUTATION_GAUSSIAN.  See the user guide for more details.
+
+   Category: Operators
+
+   Inputs:
+      ctx           - context variable
+      mutation_type - symbolic constant to specify the mutation type
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMutationType(ctx, PGA_MUTATION_UNIFORM);
+
+****************************************************************************U*/
+void PGASetMutationType( PGAContext *ctx, int mutation_type)
+{
+    PGADebugEntered("PGASetMutationType");
+
+     switch (mutation_type)
+     {
+     case PGA_MUTATION_CONSTANT:
+     case PGA_MUTATION_RANGE:
+     case PGA_MUTATION_UNIFORM:
+     case PGA_MUTATION_GAUSSIAN:
+     case PGA_MUTATION_PERMUTE:
+          ctx->ga.MutationType = mutation_type;
+          break;
+     default:
+          PGAError ( ctx,
+                    "PGASetMutationType: Invalid value of mutation_type:",
+                    PGA_FATAL, PGA_INT, (void *) &mutation_type);
+          break;
+     }
+
+    PGADebugExited("PGASetMutationType");
+}
+
+/*U***************************************************************************
+   PGAGetMutationType - Returns the type of mutation used
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the type of mutation specified
+
+   Example:
+      PGAContext *ctx;
+      int mutatetype;
+      :
+      mutatetype = PGAGetMutationType(ctx);
+      switch (mutatetype) {
+      case PGA_MUTATION_CONSTANT:
+          printf("Mutation Type = PGA_MUTATION_CONSTANT\n");
+          break;
+      case PGA_MUTATION_RANGE:
+          printf("Mutation Type = PGA_MUTATION_RANGE\n");
+          break;
+      case PGA_MUTATION_UNIFORM:
+          printf("Mutation Type = PGA_MUTATION_UNIFORM\n");
+          break;
+      case PGA_MUTATION_GAUSSIAN:
+          printf("Mutation Type = PGA_MUTATION_GAUSSIAN\n");
+          break;
+      case PGA_MUTATION_PERMUTE:
+          printf("Mutation Type = PGA_MUTATION_PERMUTE\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetMutationType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationType");
+    PGAFailIfNotSetUp("PGAGetMutationType");
+    PGADebugExited("PGAGetMutationType");
+    return(ctx->ga.MutationType);
+}
+
+/*U****************************************************************************
+   PGASetMutationRealValue - Set multiplier to mutate PGA_DATATYPE_REAL
+   strings with.  The use of this value depends on the type of mutation
+   being used.  The default value is 0.1.  See the user guide for more details.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      val - the mutation value to use for Real mutation
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMutationRealValue(ctx,50.0);
+
+****************************************************************************U*/
+void PGASetMutationRealValue( PGAContext *ctx, double val)
+{
+    PGADebugEntered("PGASetMutationRealValue");
+
+    if (val < 0.0)
+        PGAError ( ctx,
+                  "PGASetMutationRealValue: Invalid value of val:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &val);
+    else
+        ctx->ga.MutateRealValue = val;
+
+    PGADebugExited("PGASetMutationRealValue");
+}
+
+/*U***************************************************************************
+   PGAGetMutationRealValue - Returns the value of the multiplier used to
+   mutate PGA_DATATYPE_REAL strings with.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The value of the multiplier used to mutate PGA_DATATYPE_REAL strings with
+
+   Example:
+      PGAContext *ctx;
+      double val;
+      :
+      val = PGAGetMutationRealValue(ctx);
+
+***************************************************************************U*/
+double PGAGetMutationRealValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationRealValue");
+    PGAFailIfNotSetUp("PGAGetMutationRealValue");
+
+    PGADebugExited("PGAGetMutationRealValue");
+
+    return(ctx->ga.MutateRealValue);
+}
+
+/*U****************************************************************************
+   PGASetMutationIntegerValue - Set multiplier to mutate PGA_DATATYPE_INTEGER
+   strings with.  The use of this value depends on the type of mutation
+   being used.  The default value is 1.  See the user guide for more details.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      val - the mutation value to use for Integer mutation
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMutationIntegerValue(ctx, 5);
+
+****************************************************************************U*/
+void PGASetMutationIntegerValue( PGAContext *ctx, int val)
+{
+    PGADebugEntered("PGASetMutationIntegerValue");
+
+    if (val < 0.0)
+        PGAError ( ctx,
+                  "PGASetMutationIntegerValue: Invalid value of val:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &val);
+    else
+        ctx->ga.MutateIntegerValue = val;
+
+    PGADebugExited("PGASetMutationIntegerValue");
+}
+
+
+/*U***************************************************************************
+  PGAGetMutationIntegerValue - Returns the value of the multiplier
+  used to mutate PGA_DATATYPE_INTEGER strings with.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The value of the multiplier used to mutate PGA_DATATYPE_INTEGER
+      strings with
+
+   Example:
+      PGAContext *ctx;
+      int ival;
+      :
+      ival = PGAGetMutationIntegerValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMutationIntegerValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationIntegerValue");
+    PGAFailIfNotSetUp("PGAGetMutationIntegerValue");
+
+    PGADebugExited("PGAGetMutationIntegerValue");
+
+    return(ctx->ga.MutateIntegerValue);
+}
+
+/*U****************************************************************************
+   PGASetMutationBoundedFlag - If this flag is set to PGA_TRUE, then for
+   Integer and Real strings whenever a gene is mutated, if it underflows
+   (overflows) the lower (upper)bound it is reset to the lower (upper) bound.
+   In this way all allele values remain within the range the integer strings
+   were initialized on.  If this flag is PGA_FALSE (the default), the alleles
+   may take any values.
+
+   Category: Operators
+
+   Inputs:
+      ctx  - context variable
+      flag - either PGA_TRUE or PGA_FALSE
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMutationBoundedFlag(ctx, PGA_TRUE);
+
+****************************************************************************U*/
+void PGASetMutationBoundedFlag(PGAContext *ctx, int val)
+{
+    PGADebugEntered("PGASetMutationBoundedFlag");
+
+    switch (val)
+    {
+    case PGA_TRUE:
+    case PGA_FALSE:
+         ctx->ga.MutateBoundedFlag = val;
+         break;
+    default:
+         PGAError(ctx, "PGASetMutationBoundedFlag: Invalid value:",
+                  PGA_FATAL, PGA_INT, (void *) &val);
+         break;
+    }
+
+    PGADebugExited("PGASetMutationBoundedFlag");
+}
+
+
+/*U****************************************************************************
+   PGAGetMutationBoundedFlag - returns PGA_TRUE or PGA_FALSE to indicate
+   whether mutated integer strings remain in the range specified when
+   initialized with PGASetIntegerInitRange.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      PGA_TRUE if restricted to the given range, otherwise PGA_FALSE.
+
+   Example:
+      PGAContext *ctx;
+      int val;
+      :
+      val = PGAGetMutationBoundedFlag(ctx);
+
+****************************************************************************U*/
+int PGAGetMutationBoundedFlag(PGAContext *ctx)
+{
+    PGADebugEntered  ("PGAGetMutationBoundedFlag");
+    PGAFailIfNotSetUp("PGAGetMutationBoundedFlag");
+    PGADebugExited   ("PGAGetMutationBoundedFlag");
+    return (ctx->ga.MutateBoundedFlag);
+}
+
+
+
+/*U****************************************************************************
+   PGASetMutationProb - Specifies the probability that a given allele will
+   be mutated.  If this is called without calling PGASetMutationType(), the
+   default mutation type is PGA_MUTATION_FIXED.  The default probability is
+   the reciprocal of the string length.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      p   - the mutation probability
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMutationProb(ctx,0.001);
+
+****************************************************************************U*/
+void PGASetMutationProb(PGAContext *ctx, double mutation_prob)
+{
+    PGADebugEntered("PGASetMutationProb");
+
+    if ((mutation_prob < 0.0) || (mutation_prob > 1.0))
+        PGAError ( ctx,
+                  "PGASetMutationProb: Invalid value of mutation_prob:",
+                   PGA_FATAL, PGA_DOUBLE, (void *) &mutation_prob);
+    else
+        ctx->ga.MutationProb = mutation_prob;
+
+    PGADebugExited("PGASetMutationProb");
+}
+
+/*U***************************************************************************
+   PGAGetMutationProb - Returns the probability of mutation.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The mutation probability
+
+   Example:
+      PGAContext *ctx;
+      double pm;
+      :
+      pm = PGAGetMutateProb(ctx);
+
+***************************************************************************U*/
+double PGAGetMutationProb (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationProb");
+    PGAFailIfNotSetUp("PGAGetMutationProb");
+    PGADebugExited("PGAGetMutationProb");
+    return(ctx->ga.MutationProb);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/parallel.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/parallel.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/parallel.c	(revision 6168)
@@ -0,0 +1,1028 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/******************************************************************************
+*     FILE: parallel.c: This file contains all the parallel functions
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+******************************************************************************/
+
+#include "pgapack.h"
+#include <setjmp.h>
+
+extern jmp_buf pgapack_jmpbuf;
+extern int *pgapack_abortPtr;
+
+#define DEBUG_EVAL 0
+
+/*U****************************************************************************
+  PGARunGM - High-level routine to execute the genetic algorithm using the
+  global model.  It is called after PGACreate and PGASetup have been called.
+  If a NULL communicator is given, a sequential execution method is used,
+  otherwise, work is divided among the processors in the communicator.
+
+  Category: Generation
+
+  Inputs:
+    ctx      - context variable
+    evaluate - a pointer to the user's evaluation function, which must
+    have the calling sequence shown in the example.
+    comm     - an MPI communicator
+
+  Outputs:
+    none
+
+  Example:
+    PGAContext *ctx;
+    double f(PGAContext *ctx, int p, int pop);
+    :
+    PGARunGM(ctx, f, MPI_COMM_WORLD);
+
+****************************************************************************U*/
+void PGARunGM(PGAContext *ctx, double (*f)(PGAContext *, int, int),
+	      MPI_Comm comm)
+{
+    int       rank, Restarted, best_p;
+    void    (*CreateNewGeneration)(PGAContext *, int, int);
+
+    /*  Let this be warned:
+     *  The communicator is NOT duplicated.  There might be problems with
+     *  PGAPack and the user program using the same communicator.
+     */
+    PGADebugEntered("PGARunGM");
+
+    rank = PGAGetRank(ctx, comm);
+
+    PGAEvaluate(ctx, PGA_OLDPOP, f, comm);
+	
+    if (rank == 0)
+	PGAFitness(ctx, PGA_OLDPOP);
+
+    if (PGAGetMutationOrCrossoverFlag(ctx)) 
+	CreateNewGeneration = PGARunMutationOrCrossover;
+    else
+	CreateNewGeneration = PGARunMutationAndCrossover;
+
+    while (!PGADone(ctx, comm)) {
+		if (rank == 0) {
+		    Restarted = PGA_FALSE;
+		    if (PGARestartCondition(ctx)) {
+				Restarted = PGA_TRUE;
+				PGARestart(ctx, PGA_OLDPOP, PGA_NEWPOP);
+		    } else {
+				PGASelect(ctx, PGA_OLDPOP);
+				CreateNewGeneration(ctx, PGA_OLDPOP, PGA_NEWPOP);
+		    }
+		}
+		MPI_Bcast(&Restarted, 1, MPI_INT, 0, comm);
+	
+		PGAEvaluate(ctx, PGA_NEWPOP, f, comm);
+		if (rank == 0)
+		    PGAFitness(ctx, PGA_NEWPOP);
+	
+		/*  If the GA wasn't restarted, update the generation and print
+	         *  stuff.  We do this because a restart is NOT counted as a 
+	         *  complete generation.
+		 */
+		if (!Restarted) {
+		    PGAUpdateGeneration(ctx, comm);
+		    if (rank == 0)
+			PGAPrintReport(ctx, stdout, PGA_OLDPOP);
+		}
+    }
+
+    if (rank == 0) {
+	best_p = PGAGetBestIndex(ctx, PGA_OLDPOP);
+	printf("The Best Evaluation: %e.\n",
+	       PGAGetEvaluation(ctx, best_p, PGA_OLDPOP));
+	printf("The Best String:\n");
+	PGAPrintString(ctx, stdout, best_p, PGA_OLDPOP);
+	fflush(stdout);
+    }
+    PGADebugExited("PGARunGM");
+}
+
+
+/*I****************************************************************************
+   PGAEvaluateSeq - Internal evalution function.  Evaluates all strings
+   that need to be evaluated using one processor.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx  - context variable
+      pop  - symbolic constant of the population to be evaluated
+      f    - a pointer to a function to evaluate a string.
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAEvaluateSeq(PGAContext *ctx, int pop,
+		    double (*f)(PGAContext *, int, int))
+{
+    int     p;
+    double  e;
+
+    PGADebugEntered("PGAEvaluateSeq");
+
+    /*  Standard sequential evaluation.  */
+    if (ctx->sys.UserFortran == PGA_TRUE) {
+	for (p=1; p<=ctx->ga.PopSize; p++)
+	    if (!PGAGetEvaluationUpToDateFlag(ctx, p-1, pop)) {
+		e = (*((double(*)(void *, void *, void *))f))(&ctx, &p, &pop);
+		PGASetEvaluation (ctx, p-1, pop, e);
+	    }
+    } else { 
+	for (p=0; p<ctx->ga.PopSize; p++) {
+	    if ((pgapack_abortPtr != NULL) && (*pgapack_abortPtr == 1)) {
+		longjmp(pgapack_jmpbuf, 1);
+	    }
+	    if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop)) {
+		e = (*f)(ctx, p, pop);
+		PGASetEvaluation(ctx, p, pop, e);
+	    } 
+	}
+    }
+    PGADebugExited("PGAEvaluateSeq");
+}
+
+
+/*I****************************************************************************
+   PGAEvaluateCoop - Internal evaluation function.  Evaluates all strings
+   that need to be evaluated using two processors cooperatively.  The first
+   is treated as a master, it will send a string to the second for evaluation.
+   While the second is evaluating, the master will _also_ evaluate a string.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx  - context variable
+      pop  - symbolic constant of the population to be evaluated
+      f    - a pointer to a function to evaluate a string.
+      comm - an MPI communicator
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAEvaluateCoop(PGAContext *ctx, int pop,
+		     double (*f)(PGAContext *, int, int), MPI_Comm comm)
+{
+    MPI_Status      stat;
+    int             p, fp, q;
+    double          e;
+    PGAIndividual  *ind;
+
+    PGADebugEntered("PGAEvaluateCoop");
+
+    q = -1;
+
+    ind = PGAGetIndividual(ctx, 0, pop);
+    
+    for (p=0; p<ctx->ga.PopSize;) {
+	while ((p<ctx->ga.PopSize) && (ind+p)->evaluptodate)  p++;
+	if (p<ctx->ga.PopSize) {
+	    PGASendIndividual(ctx, p, pop, 1, PGA_COMM_STRINGTOEVAL, comm);
+	    q = p;
+	}
+	p++;
+	
+	while ((p<ctx->ga.PopSize) && (ind+p)->evaluptodate)  p++;
+	if (p<ctx->ga.PopSize) {
+	    if (ctx->sys.UserFortran == PGA_TRUE) {
+		fp = p+1;
+		e = (*((double(*)(void *, void *, void *))f))(&ctx, &fp, &pop);
+	    } else {
+		e = (*f)(ctx, p, pop);
+	    }
+	    PGASetEvaluation(ctx, p, pop, e);
+#if DEBUG_EVAL
+	    printf("%4d: %10.8e Local\n", p, e); fflush(stdout);
+#endif
+	}
+	
+	if (q >= 0) {
+	    MPI_Recv(&e, 1, MPI_DOUBLE, 1, PGA_COMM_EVALOFSTRING, comm, &stat);
+	    PGASetEvaluation(ctx, q, pop, e);
+#if DEBUG_EVAL
+	    printf("%4d: %10.8e Slave %d\n", p, e, 1); fflush(stdout);
+#endif
+	    q = -1;
+	}
+    }   
+    
+    /*  Release the slave  */
+    MPI_Send(&q, 1, MPI_INT, 1, PGA_COMM_DONEWITHEVALS, comm);
+
+    PGADebugExited("PGAEvaluateCoop");
+}
+
+
+
+/*I****************************************************************************
+   PGAEvaluateMS - Internal evaluation function.  Evaluates all strings
+   that need evaluating using three or more processors.  Operates in a 
+   standard master-slave execution method.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx  - context variable
+      pop  - symbolic constant of the population to be evaluated
+      f    - a pointer to a function to evaluate a string.
+      comm - an MPI communicator
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAEvaluateMS(PGAContext *ctx, int pop,
+		   double (*f)(PGAContext *c, int p, int pop), MPI_Comm comm)
+{
+    int    *work;
+    int     i, k, s, p, size, sentout;
+    double  e;
+    MPI_Status stat;
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAEvaluateMS");
+
+    size = PGAGetNumProcs(ctx, comm);
+
+    work = (int *)malloc(size *sizeof(int));
+    if (work == NULL) {
+	PGAError(ctx, "PGAEvaluateMS:  Couldn't allocate work array",
+		 PGA_FATAL, PGA_VOID, NULL);
+    }
+    
+    sentout = 0;
+    s = 1;
+    ind = PGAGetIndividual(ctx, 0, pop);
+    
+    /*  Send strings to all processes, since they are all unused.  */
+    for (k=0; ((k<ctx->ga.PopSize) && (s<size)); k++) {
+	if ((ind+k)->evaluptodate == PGA_FALSE) {
+	    work[s] = k;
+	    PGASendIndividual(ctx, k, pop, s, PGA_COMM_STRINGTOEVAL, comm);
+#if DEBUG_EVAL
+	    printf("%4d: Sent to slave %d.\n", k, s); fflush(stdout);
+#endif
+	    sentout++;
+	    s++;
+	}
+    }
+    
+    /*  Move to the next string to be evaluated.  Notice that all we need
+     *  to do is skip any strings that are already evaluated, unlike 
+     *  below, where we need to _first_ go to the next string, then
+     *  skip any that are up to date.
+     */
+    while ((k<ctx->ga.PopSize) && (ind+k)->evaluptodate)  k++;
+    
+    /*  While there are still unevaluated individuals, receive whatever
+     *  is waiting, then immediately send a new string to it.  This 
+     *  implicitly will balance the load across the machines, as we
+     *  initially sent a string to _each_ process, so _each_ process
+     *  will return an evaluation and get a new one immediately.
+     */
+    while(k<ctx->ga.PopSize) {
+	/*  Receive the next evaluated string.  */
+	MPI_Recv(&e, 1, MPI_DOUBLE, MPI_ANY_SOURCE, PGA_COMM_EVALOFSTRING,
+		 comm, &stat);
+	p = work[stat.MPI_SOURCE];
+	PGASetEvaluation(ctx, p, pop, e);
+	
+#if DEBUG_EVAL
+	printf("%4d: %10.8e Slave %d  Sent %d\n", work[stat.MPI_SOURCE],
+	       e, stat.MPI_SOURCE, k); fflush(stdout);
+#endif
+	
+	/*  Immediately send another string to be evaluated.  */
+	work[stat.MPI_SOURCE] = k;
+	PGASendIndividual(ctx, k, pop, stat.MPI_SOURCE,
+			  PGA_COMM_STRINGTOEVAL, comm);
+	
+	/*  Find the next unevaluated individual  */
+	k++;
+	while ((k<ctx->ga.PopSize) && (ind+k)->evaluptodate)  k++;
+    }
+    
+    /*  All strings have been sent out.  Wait for them to be done.  */
+    while(sentout > 0) {
+	MPI_Recv(&e, 1, MPI_DOUBLE, MPI_ANY_SOURCE, PGA_COMM_EVALOFSTRING,
+		 comm, &stat);
+	p = work[stat.MPI_SOURCE];
+	PGASetEvaluation(ctx, p, pop, e);
+	sentout--;
+#if DEBUG_EVAL
+	printf("%4d: %10.8e Slave %d\n", 
+	       work[stat.MPI_SOURCE], e, stat.MPI_SOURCE); fflush(stdout);
+#endif
+    }
+    free(work);
+    
+    /*  Release the slaves.  */
+    for (i=1; i<size; i++)
+	MPI_Send(&i, 1, MPI_INT, i, PGA_COMM_DONEWITHEVALS, comm);
+
+    PGADebugExited("PGAEvaluateMS");
+}
+
+
+/*I****************************************************************************
+   PGAEvaluateSlave - Slave execution routine.  Sit around and wait for a
+   string to eval to show up, then evaluate it and return the evaluation.
+   Terminates when it receives PGA_COMM_DONEWITHEVALS.
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+
+   Outputs:
+
+   Example:
+
+****************************************************************************I*/
+void PGAEvaluateSlave(PGAContext *ctx, int pop,
+		      double (*f)(PGAContext *, int, int), MPI_Comm comm)
+{
+    MPI_Status  stat;
+    int         k;
+    double      e;
+
+    PGADebugEntered("PGAEvaluateSlave");
+
+    k = PGA_TEMP1;
+    MPI_Probe(0, MPI_ANY_TAG, comm, &stat);
+    while (stat.MPI_TAG == PGA_COMM_STRINGTOEVAL) {
+	PGAReceiveIndividual(ctx, PGA_TEMP1, pop, 0, PGA_COMM_STRINGTOEVAL,
+			     comm, &stat);
+
+	if (ctx->sys.UserFortran == PGA_TRUE)
+	    e = (*((double(*)(void *, void *, void *))f))(&ctx, &k, &pop);
+	else 
+	    e = (*f)(ctx, PGA_TEMP1, pop);
+
+	MPI_Send(&e, 1, MPI_DOUBLE, 0, PGA_COMM_EVALOFSTRING, comm);
+	MPI_Probe(0, MPI_ANY_TAG, comm, &stat);
+    }
+    MPI_Recv(&k, 1, MPI_INT, 0, PGA_COMM_DONEWITHEVALS, comm, &stat);
+
+    PGADebugExited("PGAEvaluateSlave");
+}
+
+
+/*U****************************************************************************
+   PGAEvaluate - Calls a user-specified function to return an evaluation of
+   each string in the population. The user-specified function is only called
+   if the string has been changed (e.g., by crossover or mutation) or the user
+   has explicitly signaled the string's evaluation is out-of-date by a call
+   to PGASetEvaluationUpToDateFlag().
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx  - context variable
+      pop  - symbolic constant of the population to be evaluated
+      f    - a pointer to a function to evaluate a string.  This function will
+             be called once for each string in population pop that requires
+             evaluation.  This function must return a double (the evaluation
+             function value) and must fit the prototype
+                 double f(PGAContext *c, int p, int pop);
+      comm - an MPI communicator
+
+   Outputs:
+      Evaluates the population via side effect
+
+   Example:
+      Evaluate all strings in population PGA_NEWPOP using the user-defined
+      evaluation function Energy.
+
+      double Energy(PGAContext *ctx, int p, int pop) {
+        :
+      };
+
+      PGAContext *ctx;
+      :
+      PGAEvaluate(ctx, PGA_NEWPOP, Energy, MPI_COMM_WORLD);
+
+****************************************************************************U*/
+void PGAEvaluate(PGAContext *ctx, int pop,
+		 double (*f)(PGAContext *, int, int), MPI_Comm comm)
+{
+    int  rank, size;
+
+    PGADebugEntered("PGAEvaluate");
+
+    rank = PGAGetRank(ctx, comm);
+    size = PGAGetNumProcs(ctx, comm);
+
+    if (rank == 0) {
+	if (size == 1)
+	    PGAEvaluateSeq(ctx, pop, f);
+	if (size == 2)
+	    PGAEvaluateCoop(ctx, pop, f, comm);
+	if (size > 2) 
+	    PGAEvaluateMS(ctx, pop, f, comm);
+    } else {
+	PGAEvaluateSlave(ctx, pop, f, comm);
+    }
+    PGADebugExited("PGAEvaluate");
+}
+
+
+/*U****************************************************************************
+  PGABuildDatatype - Build an MPI datatype for string p in population pop.
+
+  Category: Parallel
+
+  Inputs:
+    ctx     - context variable
+    p       - index of an individual
+    pop     - symbolic constant of the population
+
+  Outputs:
+    An MPI datatype for member p of population pop.
+
+  Example:
+    PGAContext *ctx;
+    int p;
+    MPI_Datatype dt;
+    :
+    dt = PGABuildDatatype(ctx, p, PGA_NEWPOP);
+
+****************************************************************************U*/
+MPI_Datatype PGABuildDatatype(PGAContext *ctx, int p, int pop)
+{
+    PGADebugEntered("PGABuildDatatype");
+    
+    PGADebugExited("PGABuildDatatype");
+
+    return((*ctx->cops.BuildDatatype)(ctx, p, pop));
+}
+
+
+/*U****************************************************************************
+  PGASendIndividual - transmit an individual to another process
+
+  Category: Parallel
+
+  Inputs:
+    ctx  - context variable
+    p    - index of an individual
+    pop  - symbolic constant of the population
+    dest - ID of the process where this is going
+    tag  - MPI tag to send with the individual
+    comm - MPI communicator
+
+  Outputs:
+
+  Example:
+    PGAContext *ctx;
+    int p, dest;
+    :
+    dest = SelectAFreeProcessor();
+    PGASendIndividual(ctx, p, PGA_NEWPOP, dest, PGA_SR_STRINGTOEVAL, comm);
+
+****************************************************************************U*/
+void PGASendIndividual(PGAContext *ctx, int p, int pop, int dest, int tag,
+                       MPI_Comm comm)
+{
+    MPI_Datatype individualtype;
+
+    PGADebugEntered("PGASendIndividual");
+
+    individualtype = PGABuildDatatype(ctx, p, pop);
+    MPI_Send(MPI_BOTTOM, 1, individualtype, dest, tag, comm);
+    MPI_Type_free(&individualtype);
+    
+    PGADebugExited("PGASendIndividual");
+}
+
+/*U****************************************************************************
+  PGAReceiveIndividual - receive an individual from another process
+
+  Category: Parallel
+
+  Inputs:
+    ctx    - contex variable
+    p      - index of an individual
+    pop    - symbolic constant of the population
+    source - ID of the process from which to receive
+    tag    - MPI tag to look for
+    status - pointer to an MPI status structure
+
+  Outputs:
+    status and string p in population pop are changed by side-effect.
+
+  Example:
+    Receive a string from the master process (rank == 0) with tag
+    PGA_SR_STRINGTOEVAL, and place it into the first temporary location
+    in PGA_NEWPOP.
+
+    PGAContext *ctx;
+    MPI_Comm    comm;
+    MPI_Status  status;
+    :
+    PGAReceiveIndividual(ctx, PGA_TEMP1, PGA_NEWPOP, 0, PGA_SR_STRINGTOEVAL,
+                         comm, &status);
+
+****************************************************************************U*/
+void PGAReceiveIndividual(PGAContext *ctx, int p, int pop, int source, int tag,
+                          MPI_Comm comm, MPI_Status *status)
+{
+     MPI_Datatype individualtype;
+
+    PGADebugEntered("PGAReceiveIndividual");
+
+     individualtype = PGABuildDatatype(ctx, p, pop);
+     MPI_Recv(MPI_BOTTOM, 1, individualtype, source, tag, comm, status);
+     MPI_Type_free(&individualtype);
+
+    PGADebugExited("PGAReceiveIndividual");
+}
+
+/*U****************************************************************************
+  PGASendReceiveIndividual - Send an individual to a process, while receiving
+  a different individual from a different process.
+
+  Category: Parallel
+
+  Inputs:
+    ctx       - context variable
+    send_p    - index of string to send
+    send_pop  - symbolic constant of population to send from
+    dest      - destination process
+    send_tag  - tag to send with
+    recv_p    - index of string to receive
+    recv_pop  - symbolic constant of population to receive from
+    source    - process to receive from
+    recv_tag  - tag to receive with
+    comm      - an MPI communicator
+    status    - pointer to the MPI status structure
+
+  Outputs:
+    status and string recv_p in population recv_pop are modified by
+    side-effect.
+
+  Example:
+    A dedicated process is being used to perform an optimization algorithm
+    on the strings.  Send a new string, s, to the process, while receiving an
+    optimized string, r, from it.
+
+    PGAContext *ctx;
+    MPI_Comm    comm;
+    MPI_Status  status;
+    int  s, r;
+    :
+    PGASendReceiveIndividual(ctx, s, PGA_NEWPOP, 1, PGA_SR_STRINGTOMODIFY,
+                                  r, PGA_NEWPOP, 1, PGA_SR_MODIFIEDSTRING,
+                                  comm, &status);
+
+****************************************************************************U*/
+void PGASendReceiveIndividual(PGAContext *ctx, int send_p, int send_pop,
+                              int dest, int send_tag, int recv_p, int recv_pop,
+                              int source, int recv_tag, MPI_Comm comm,
+                              MPI_Status *status)
+{
+     MPI_Datatype individualsendtype;
+     MPI_Datatype individualrecvtype;
+
+    PGADebugEntered("PGASendReceiveIndividual");
+
+     individualsendtype = PGABuildDatatype(ctx, send_p, send_pop);
+     individualrecvtype = PGABuildDatatype(ctx, recv_p, recv_pop);
+
+     MPI_Sendrecv(MPI_BOTTOM, 1, individualsendtype, dest,   send_tag,
+                  MPI_BOTTOM, 1, individualrecvtype, source, recv_tag,
+                  comm, status);
+
+     MPI_Type_free(&individualsendtype);
+     MPI_Type_free(&individualrecvtype);
+
+    PGADebugExited("PGASendReceiveIndividual");
+}
+
+
+/*I****************************************************************************
+  PGARunIM - Execute the island model genetic algorithm
+
+  Category: Parallel
+
+  Inputs:
+    ctx      - context variable
+    evaluate - a pointer to the user's evaluation function, which must
+               have the calling sequence shown in the example.
+    comm     - the MPI communicator to use
+
+  Outputs:
+    none
+
+  Example:
+    PGAContext *ctx,
+    double f(PGAContext *ctx, int p, int pop);
+    MPI_Comm comm;
+    :
+    PGARunIM(ctx, f, comm);
+
+****************************************************************************I*/
+void PGARunIM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm)
+{
+    /* Based on ctx->par.topology this routine will need to create the
+       appropriate communicator out of tcomm
+    */
+    
+     PGADebugEntered("PGARunIM");
+     PGAError (ctx, "PGARunIM: Island model not implemented",
+               PGA_FATAL, PGA_VOID, NULL);
+     PGADebugExited("PGARunIM");
+}
+
+
+/*I****************************************************************************
+  PGARunNM - Execute a neighborhood model genetic algorithm
+
+  Category: Parallel
+
+  Inputs:
+    ctx      - context variable
+    evaluate - a pointer to the user's evaluation function, which must
+               have the calling sequence shown in the example.
+    comm     - the MPI communicator to use
+
+  Outputs:
+    none
+
+  Example:
+    PGAContext *ctx,
+    MPI_Comm comm;
+    double f(PGAContext *ctx, int p, int pop);
+    :
+    PGARunNM(ctx, f, comm);
+
+****************************************************************************I*/
+void PGARunNM(PGAContext *ctx, double (*f)(PGAContext *c, int p, int pop),
+              MPI_Comm tcomm)
+{
+    /* Based on ctx->par.topology this routine will need to create the
+       appropriate communicator out of tcomm
+    */
+     PGADebugEntered("PGARunNM");
+     PGAError (ctx, "PGARunNM: Island model not implemented",
+               PGA_FATAL, PGA_VOID, NULL);
+     PGADebugExited("PGARunNM");
+}
+
+
+
+/*U****************************************************************************
+  PGAGetRank - Returns the rank of the processor in communicator comm.  If
+  comm is NULL or a sequential version of PGAPack is used, PGAGetRank()
+  returns 0.
+
+  Category: Parallel
+
+  Inputs:
+      ctx  - context variable structure pointer
+      comm - an MPI communicator
+
+  Outputs:
+      The rank of this processor
+
+  Example:
+      PGAContext  *ctx;
+      int          rank;
+      :
+      rank = PGAGetRank(ctx, MPI_COMM_WORLD);
+      if (rank == 0) {
+          LetTheMasterDoSomething();
+      }
+
+****************************************************************************U*/
+int PGAGetRank (PGAContext *ctx, MPI_Comm comm)
+{
+    int rank;
+    
+    PGADebugEntered("PGAGetRank");
+
+    if (comm == NULL)
+	rank = 0;
+    else
+	MPI_Comm_rank(comm, &rank);
+    
+    PGADebugExited("PGAGetRank");
+    
+    return(rank);
+}
+
+
+/*U****************************************************************************
+  PGAGetNumProcs - Returns the size of communicator comm in processes.  If
+  comm is NULL or a sequential version of PGAPack is used, PGAGetNumProcs()
+  returns 1.
+
+  Category: Parallel
+
+  Inputs:
+      ctx  - context variable structure pointer
+      comm - an MPI communicator
+
+  Outputs:
+      The numbers of processors in communicator comm.
+
+  Example:
+      PGAContext  *ctx;
+      :
+      if (PGAGetNumProcs(ctx, MPI_COMM_WORLD) < 4) {
+          printf("Too few processors for decent performance!\n");
+	  exit(-1);
+      }
+
+****************************************************************************U*/
+int PGAGetNumProcs (PGAContext *ctx, MPI_Comm comm)
+{
+    int size;
+
+    PGADebugEntered("PGAGetNumProcs");
+
+    if (comm == NULL)
+	size = 1;
+    else
+	MPI_Comm_size(comm, &size);
+
+    PGADebugExited("PGAGetNumProcs");
+
+    return(size);
+}
+
+
+/*I****************************************************************************
+   PGASetNumIslands - Set the number of islands to use in an island model
+   GA. The default is one.  Currently must be the same as the number of
+   processes in the default communicator.  
+
+   Category: Parallel
+
+   Inputs:
+      ctx - context variable
+      n   - number of islands
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx,
+      double f(PGAContext *ctx, int p, int pop);
+      :
+      ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+      PGASetNumIslands(ctx, 10);
+      PGASetUp(ctx);
+      PGARun(ctx, f);
+      PGADestroy(ctx);
+
+****************************************************************************I*/
+void PGASetNumIslands( PGAContext *ctx, int n)
+{
+
+    PGADebugEntered("PGASetNumIslands");
+
+    if ( n < 1 )
+        PGAError(ctx, "PGASetNumIslands: Invalid value of n:",
+                 PGA_FATAL, PGA_INT, (void *) &n);
+
+    ctx->par.NumIslands = n;
+
+    PGADebugExited("PGASetNumIslands");
+}
+
+
+/*I***************************************************************************
+   PGAGetNumIslands - Returns the number of islands to use in an island model
+
+   Category: Parallel
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+       the number of islands to use in an island model
+
+   Example:
+      PGAContext *ctx;
+      int npop;
+      :
+      npop = PGAGetNumIslands(ctx);
+
+***************************************************************************I*/
+int PGAGetNumIslands (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetNumIslands");
+    PGAFailIfNotSetUp("PGAGetNumIslands");
+
+    PGADebugExited("PGAGetNumIslands");
+
+    return(ctx->par.NumIslands);
+}
+
+/*I****************************************************************************
+   PGASetNumDemes - Set the number of demes to use in a neighborhood model
+   GA. Currently must be the same as the number of processes in the default
+   communicator.  The default is one.
+
+   Category: Parallel
+
+   Inputs:
+      ctx          - context variable
+      numdemes     - number of demes
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx,
+      double f(PGAContext *ctx, int p, int pop);
+      :
+      ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+      PGASetNumDemes(ctx, 4);
+      PGASetUp(ctx);
+      PGARun(ctx, f);
+      PGADestroy(ctx);
+
+****************************************************************************I*/
+void PGASetNumDemes( PGAContext *ctx, int numdemes)
+{
+    PGADebugEntered("PGASetNumDemes");
+
+    if ( numdemes < 1 )
+        PGAError(ctx, "PGASetNumDemes: Invalid value of numdemes:",
+                 PGA_FATAL, PGA_INT, (void *) &numdemes);
+
+    ctx->par.NumDemes = numdemes;
+
+    PGADebugExited("PGASetNumDemes");
+}
+
+
+/*I***************************************************************************
+   PGAGetNumDemes - Returns the number of demes to use in a neighborhood model
+
+   Category: Parallel
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+       the number of demes to use in a neighborhood model
+
+   Example:
+      PGAContext *ctx;
+      int npop;
+      :
+      npop = PGAGetNumDemes(ctx);
+
+***************************************************************************I*/
+int PGAGetNumDemes (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetNumDemes");
+    PGAFailIfNotSetUp("PGAGetNumDemes");
+
+    PGADebugExited("PGAGetNumDemes");
+
+    return(ctx->par.NumDemes);
+}
+
+
+/*U****************************************************************************
+   PGASetCommunicator - Set the default communicator to use when PGARun is
+   called.  Does not necessarily need to be the same as the number of
+   processes in MPI_COMM_WORLD (which is the default).
+
+   Category: Parallel
+
+   Inputs:
+      ctx    - context variable
+      comm   - communicator to use
+
+   Outputs:
+      None
+
+   Example:
+      MPI_Comm mycomm;
+      PGAContext *ctx,
+      double f(PGAContext *ctx, int p, int pop);
+      :
+      ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+      PGASetCommunicator(ctx, mycomm);
+      PGASetUp(ctx);
+      PGARun(ctx, f);
+      PGADestroy(ctx);
+
+****************************************************************************U*/
+void PGASetCommunicator( PGAContext *ctx, MPI_Comm comm)
+{
+
+    PGADebugEntered("PGASetCommunicator");
+
+    ctx->par.DefaultComm = comm;
+
+    PGADebugExited("PGASetCommunicator");
+}
+
+
+/*U****************************************************************************
+   PGAGetCommunicator - Returns the default communicator used when PGARun is
+   called.
+   
+   Category: Parallel
+
+   Inputs:
+      ctx    - context variable
+
+   Outputs:
+      The default communicator
+
+   Example:
+      MPI_Comm comm;
+      PGAContext *ctx,
+      double f(PGAContext *ctx, int p, int pop);
+      :
+      ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+      PGASetUp(ctx);
+      comm = PGAGetCommunicator(ctx);
+
+
+****************************************************************************U*/
+MPI_Comm PGAGetCommunicator( PGAContext *ctx)
+{
+
+    PGADebugEntered("PGAGetCommunicator");
+
+    PGADebugExited("PGAGetCommunicator");
+
+    return(ctx->par.DefaultComm);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/pga.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/pga.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/pga.c	(revision 6168)
@@ -0,0 +1,764 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: pga.c: This file contains all the routines that are data structure
+*                  neutral
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, and David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+#include <setjmp.h>
+
+jmp_buf pgapack_jmpbuf;
+
+/*U****************************************************************************
+  PGARun - Highest level routine to execute the genetic algorithm.  It
+  is called after PGACreate and PGASetup have been called.
+
+  Category: Generation
+
+  Inputs:
+    ctx      - context variable
+    evaluate - a pointer to the user's evaluation function, which must
+               have the calling sequence shown in the example.
+
+  Outputs:
+    none
+
+  Example:
+    PGAContext *ctx,
+    double f(PGAContext *ctx, int p, int pop);
+    :
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 100, PGA_MAXIMIZE);
+    PGASetUp(ctx);
+    PGARun(ctx, f);
+    PGADestroy(ctx);
+
+****************************************************************************U*/
+void PGARun(PGAContext *ctx, double (*evaluate)(PGAContext *c, int p, int pop))
+{
+     MPI_Comm comm;                  /* value of default communicator */
+     int nprocs;                     /* number of processes in above  */
+     int npops;                      /* number of populations         */
+     int ndemes;                     /* number of demes               */
+     
+
+     PGADebugEntered("PGARun");
+     PGAFailIfNotSetUp("PGARun");
+
+     comm   = PGAGetCommunicator(ctx);
+     nprocs = PGAGetNumProcs    (ctx, comm);
+     npops  = PGAGetNumIslands  (ctx);
+     ndemes = PGAGetNumDemes    (ctx);
+
+    if (setjmp(pgapack_jmpbuf)) {
+	return;			/* PGA pack was aborted. */
+    }
+     /**********************************************************************/
+     /*              Global model, one island, one deme                    */
+     /**********************************************************************/
+     if ( (npops == 1) && (ndemes == 1) ) {
+	 PGARunGM(ctx, evaluate, comm);
+     }
+     
+     /**********************************************************************/
+     /*              Island model, > one island, one deme                  */
+     /**********************************************************************/
+     else if( (npops > 1) && (ndemes == 1) ) {
+         if ( nprocs == 1 )
+             PGAError (ctx, "PGARun: island model with one process",
+                       PGA_FATAL, PGA_VOID, (void *) &nprocs);
+         if ( nprocs != npops) {
+             PGAError (ctx, "PGARun: island model no. processes != no. pops",
+                       PGA_FATAL, PGA_VOID, (void *) &nprocs);
+         }
+         PGARunIM(ctx,evaluate,comm);
+     }
+             
+     /**********************************************************************/
+     /*              Neighborhood model, one island, > one deme            */
+     /**********************************************************************/
+     else if( (npops == 1) && (ndemes > 1) ) {
+         if ( nprocs == 1 )
+             PGAError (ctx, "PGARun: neighborhood model with one process",
+                       PGA_FATAL, PGA_VOID, (void *) &nprocs);
+         if ( nprocs != ndemes)
+             PGAError (ctx, "PGARun: neighborhood model no. processes "
+                       "!= no. demes", PGA_FATAL, PGA_VOID, (void *) &nprocs);
+         PGARunNM(ctx,evaluate,comm);
+     }
+             
+     /**********************************************************************/
+     /*              Mixed model, > one island, > one deme                 */
+     /**********************************************************************/
+     else if( (npops > 1) && (ndemes > 1) ) {
+         PGAError (ctx, "PGARun: Cannot execute mixed models",
+                   PGA_FATAL, PGA_VOID, (void *) &nprocs);
+     }
+
+     /**********************************************************************/
+     /*                        E R R O R                                   */
+     /**********************************************************************/
+     else {
+         PGAError (ctx, "PGARun: Invalid combination of numislands,"
+                   "ndemes, and nprocs.",
+                   PGA_FATAL, PGA_VOID, (void *) &nprocs);
+     }
+
+     /**********************************************************************/
+     /*                         E X I T                                    */
+     /**********************************************************************/
+     PGADebugExited("PGARun");
+     return;
+ }
+
+
+/*U****************************************************************************
+  PGARunMutationAndCrossover - Performs crossover and mutation from one
+  population to create the next.  Assumes PGASelect has been called.
+
+  Category: Generation
+
+  Inputs:
+    ctx - context variable
+    oldpop - symbolic constant of old population
+    newpop - symbolic constant of new population
+
+  Outputs:
+    newpop is modified by side-effect.
+
+  Example:
+     PGAContext *ctx,
+    :
+    PGARunMutationAndCrossover(ctx, PGA_OLDPOP, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGARunMutationAndCrossover (PGAContext *ctx, int oldpop, int newpop)
+{
+    int i, j, n, m1, m2;
+    int popsize, numreplace, randnumreplace;
+    double pc, randreplprop;
+
+    PGADebugEntered("PGARunMutationAndCrossover");
+
+    popsize = PGAGetPopSize(ctx);
+    numreplace = PGAGetNumReplaceValue(ctx);
+    randreplprop = PGAGetRandReplProp(ctx);
+    randnumreplace = (int)randreplprop*popsize;
+    /*** first, copy n best strings (sorted by fitness) to new pop ***/
+    PGASortPop( ctx, oldpop );
+    n = popsize - numreplace - randnumreplace;
+    for ( i=0; i < n; i++ ) {
+        j = PGAGetSortedPopIndex( ctx, i );
+        PGACopyIndividual ( ctx, j, oldpop, i, newpop );
+    }
+    pc = PGAGetCrossoverProb(ctx);
+    /*** reproduce to create the rest of the new population ***/
+    while ( n < (popsize- randnumreplace)) {
+        m1 = PGASelectNextIndex( ctx );
+        m2 = PGASelectNextIndex( ctx );
+        if ( PGARandomFlip(ctx, pc) ) {
+             PGACrossover ( ctx, m1, m2, oldpop, PGA_TEMP1,
+                            PGA_TEMP2, newpop);
+
+              /*** mutate and copy first string to new population ***/
+              PGAMutate ( ctx, PGA_TEMP1, newpop);
+              while (PGADuplicate( ctx, PGA_TEMP1, newpop, newpop, n))
+                   PGAChange ( ctx, PGA_TEMP1, newpop );
+              PGACopyIndividual ( ctx, PGA_TEMP1, newpop, n, newpop);
+              n++;
+
+              if ( n < (popsize-randnumreplace) ) {
+              /*** mutate and copy second string to new population ***/
+              PGAMutate ( ctx, PGA_TEMP2, newpop);
+              while ( PGADuplicate( ctx, PGA_TEMP2, newpop, newpop, n))
+                   PGAChange ( ctx, PGA_TEMP2, newpop );
+              PGACopyIndividual ( ctx, PGA_TEMP2, newpop, n, newpop);
+              n++;
+              }
+         }
+         else {
+            PGACopyIndividual ( ctx, m1, oldpop, n, newpop );
+            n++;
+            if ( n < (popsize-randnumreplace) ) {
+                PGACopyIndividual ( ctx, m2, oldpop, n, newpop );
+                n++;
+            }
+       }
+    }
+    
+    if(randnumreplace > 0){
+	    while(n < popsize){
+	    	PGACreateIndividual(ctx,n,newpop,PGA_TRUE);
+	    	n++;
+	    }
+    }
+
+    PGADebugExited("PGARunMutationAndCrossover");
+}
+
+
+/*U****************************************************************************
+  PGARunMutationOrCrossover - Performs crossover or mutation (but not both)
+  from one populationto create the next.  Assumes PGASelect has been called.
+
+  Category: Generation
+
+  Inputs:
+    ctx - context variable
+    oldpop - symbolic constant of old population
+    newpop - symbolic constant of new population
+
+  Outputs:
+    newpop is modified by side-effect.
+
+  Example:
+    PGAContext *ctx,
+    :
+    PGARunMutationOrCrossover(ctx, PGA_OLDPOP, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGARunMutationOrCrossover ( PGAContext *ctx, int oldpop, int newpop )
+{
+    int i, j, n, m1, m2;
+    int popsize, numreplace, randnumreplace;
+    double pc, randreplprop;
+
+    PGADebugEntered("PGARunMutationOrCrossover");
+
+    popsize = PGAGetPopSize(ctx);
+    numreplace = PGAGetNumReplaceValue(ctx);
+    randreplprop = PGAGetRandReplProp(ctx);
+    randnumreplace = (int)randreplprop*popsize;
+    /*** first, copy n best strings (sorted by fitness) to new pop ***/
+    PGASortPop( ctx, oldpop );
+    n = popsize - numreplace - randnumreplace ;
+    for ( i=0; i < n; i++ ) {
+        j = PGAGetSortedPopIndex( ctx, i );
+        PGACopyIndividual ( ctx, j, oldpop, i, newpop );
+    }
+    pc = PGAGetCrossoverProb(ctx);
+    /*** reproduce to create the rest of the new population ***/
+    while ( n < (popsize-randnumreplace) ) {
+        m1 = PGASelectNextIndex( ctx );
+        m2 = PGASelectNextIndex( ctx );
+        if ( PGARandomFlip(ctx, pc) ) {
+            PGACrossover ( ctx, m1, m2, oldpop, PGA_TEMP1,
+                                        PGA_TEMP2, newpop);
+
+            /*** copy first string to new population ***/
+            while (PGADuplicate(ctx, PGA_TEMP1, newpop,  newpop, n))
+                PGAChange ( ctx, PGA_TEMP1, newpop );
+            PGACopyIndividual ( ctx, PGA_TEMP1, newpop, n, newpop);
+            n++;
+
+            if ( n < (popsize-randnumreplace) )
+            {
+                 /*** copy second string to new population ***/
+                 while (PGADuplicate(ctx, PGA_TEMP2, newpop,  newpop, n))
+                      PGAChange ( ctx, PGA_TEMP2, newpop );
+                 PGACopyIndividual ( ctx, PGA_TEMP2, newpop, n, newpop);
+                 n++;
+            }
+        }
+        else
+        {
+             PGACopyIndividual(ctx, m1, oldpop, PGA_TEMP1, newpop);
+             PGAMutate ( ctx, PGA_TEMP1, newpop );
+             while (PGADuplicate(ctx, PGA_TEMP1, newpop, newpop, n ))
+                  PGAChange ( ctx, PGA_TEMP1, newpop );
+             PGACopyIndividual ( ctx, PGA_TEMP1, newpop, n, newpop);
+             n++;
+
+             if ( n < (popsize-randnumreplace) ) {
+                  PGACopyIndividual(ctx, m2, oldpop, PGA_TEMP2, newpop);
+                  PGAMutate ( ctx, PGA_TEMP2, newpop );
+                  while (PGADuplicate(ctx, PGA_TEMP2, newpop, newpop, n ))
+                       PGAChange ( ctx, PGA_TEMP2, newpop );
+                  PGACopyIndividual ( ctx, PGA_TEMP2, newpop, n, newpop);
+                  n++;
+             }
+        }
+    }
+    
+    if(randnumreplace > 0){
+	    while(n < popsize){
+	    	PGACreateIndividual(ctx,n,newpop,PGA_TRUE);
+	    	n++;
+	    }
+    }
+
+    PGADebugExited("PGARunMutationOrCrossover");
+}
+
+
+/*U****************************************************************************
+  PGAUpdateGeneration - updates internal data structures for the next
+  genetic algorithm iteration, and checks if the termination conditions, both
+  user and PGAPack, have been met.  This routine must be called by both
+  master and slave processes at the end of each GA generation.
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+     comm - an MPI communicator
+
+  Outputs:
+     PGA_TRUE if the genetic algorithm has terminated, otherwise PGA_FALSE.
+
+  Example:
+    PGAContext *ctx;
+    :
+    PGAUpdateGeneration(ctx, MPI_COMM_WORLD);
+
+****************************************************************************U*/
+void PGAUpdateGeneration(PGAContext *ctx, MPI_Comm comm)
+{
+    PGAIndividual *temp;
+    int i, rank;
+
+    PGADebugEntered("PGAUpdateGeneration");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAUpdateGeneration",
+                  "ga.iter = ", PGA_INT, (void *) &(ctx->ga.iter) );
+
+    rank = PGAGetRank(ctx, comm);
+
+    ctx->ga.iter++;
+
+    if (rank == 0) {
+	if (ctx->rep.PrintOptions & PGA_REPORT_AVERAGE)
+	    PGAUpdateAverage(ctx, PGA_NEWPOP);
+
+	if (ctx->rep.PrintOptions & PGA_REPORT_ONLINE)
+	    PGAUpdateOnline(ctx, PGA_NEWPOP);
+
+	if (ctx->rep.PrintOptions & PGA_REPORT_OFFLINE)
+	    PGAUpdateOffline(ctx, PGA_NEWPOP);
+
+	if ((ctx->ga.StoppingRule & PGA_STOP_NOCHANGE) || ctx->ga.restart) {
+	    i = PGAGetBestIndex(ctx, PGA_NEWPOP);
+	    if (ctx->rep.Best == PGAGetEvaluation(ctx, i, PGA_NEWPOP))
+		ctx->ga.ItersOfSame++;
+	    else {
+		ctx->rep.Best = PGAGetEvaluation(ctx, i, PGA_NEWPOP);
+		ctx->ga.ItersOfSame = 1;
+	    }
+	}
+
+	if (ctx->ga.StoppingRule & PGA_STOP_TOOSIMILAR)
+	    ctx->ga.PercentSame = PGAComputeSimilarity(ctx, ctx->ga.newpop);
+
+	/*  Clear this twice in case the user EOG calls PGASelect.  */
+	ctx->ga.SelectIndex = 0;
+
+	if (ctx->fops.EndOfGen)
+	    (*ctx->fops.EndOfGen)(&ctx);
+	if (ctx->cops.EndOfGen)
+	    (*ctx->cops.EndOfGen)(ctx);
+
+	ctx->ga.SelectIndex = 0;
+	temp           = ctx->ga.oldpop;
+	ctx->ga.oldpop = ctx->ga.newpop;
+	ctx->ga.newpop = temp;
+    }
+
+    PGADebugExited("PGAUpdateGeneration");
+}
+
+
+/*U***************************************************************************
+   PGAGetDataType - Returns the data type used by the given context.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the data type.
+
+   Example:
+      PGAContext *ctx;
+      int datatype;
+      :
+      datatype = PGAGetDataType(ctx);
+      switch (datatype) {
+      case PGA_DATATYPE_BINARY:
+          printf("Data Type = PGA_DATATYPE_BINARY\n");
+          break;
+      case PGA_DATATYPE_CHARACTER:
+          printf("Data Type = PGA_DATATYPE_CHARACTER\n");
+          break;
+      case PGA_DATATYPE_INTEGER:
+          printf("Data Type = PGA_DATATYPE_INTEGER\n");
+          break;
+      case PGA_DATATYPE_REAL:
+          printf("Data Type = PGA_DATATYPE_REAL\n");
+          break;
+      case PGA_DATATYPE_USER:
+          printf("Data Type = PGA_DATATYPE_USER\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetDataType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetDataType");
+
+    PGADebugExited("PGAGetDataType");
+
+    return(ctx->ga.datatype);
+}
+
+/*U***************************************************************************
+   PGAGetOptDirFlag - Returns a symbolic constant that represents the
+   direction of optimization
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the  direction of optimization
+
+   Example:
+      PGAContext *ctx;
+      int optdir;
+      :
+      optdir = PGAGetOptDirFlag(ctx);
+      switch (optdir) {
+      case PGA_MAXIMIZE:
+          printf("Optimization direction = PGA_MAXIMIZE\n");
+          break;
+      case PGA_MINIMIZE:
+          printf("Optimization direction = PGA_MINIMIZE\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetOptDirFlag (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetOptDirFlag");
+
+    PGADebugExited("PGAGetOptDirFlag");
+
+    return(ctx->ga.optdir);
+}
+
+/*U***************************************************************************
+   PGAGetStringLength - Returns the string length
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The string length
+
+   Example:
+      PGAContext *ctx;
+      int stringlen;
+      :
+      stringlen = PGAGetStringLength(ctx);
+
+***************************************************************************U*/
+int PGAGetStringLength (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetStringLength");
+
+    PGADebugExited("PGAGetStringLength");
+
+    return(ctx->ga.StringLen);
+}
+
+/*I***************************************************************************
+   PGAGetVariableStringLength - Returns the length of a variable length
+   string.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+      p   - index into the population
+      pop - symbolic constant for the population
+
+   Outputs:
+      The string length
+
+   Example:
+      PGAContext *ctx;
+      int stringlen;
+      :
+      stringlen = PGAGetVariableStringLength(ctx, 0, PGA_NEWPOP);
+
+***************************************************************************I*/
+int PGAGetVariableStringLength (PGAContext *ctx, int p, int pop)
+{
+    PGADebugEntered("PGAGetVariableStringLength");
+
+    PGADebugExited("PGAGetVariableStringLength");
+
+    PGAError(ctx, "PGAGetVariableStringLength:  Variable length strings not "
+	     "currently supported.", PGA_FATAL, PGA_VOID, NULL);
+#if 0
+    ind = PGAGetIndividual(ctx, p, pop);
+    return(ind->StringLength);
+#endif
+    /*  Make the compilers be quiet.  */
+    return(0);
+}
+
+/*U***************************************************************************
+  PGAGetGAIterValue - returns the number of the current genetic
+  algorithm generation
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The genetic algorithm generation number
+
+   Example:
+      PGAContext *ctx;
+      int g;
+      :
+      g = PGAGetGAIterValue(ctx);
+
+***************************************************************************U*/
+int PGAGetGAIterValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetGAIterValue");
+    PGAFailIfNotSetUp("PGAGetGAIterValue");
+
+    PGADebugExited("PGAGetGAIterValue");
+
+    return(ctx->ga.iter);
+}
+
+/*U****************************************************************************
+  PGASetMutationOrCrossoverFlag - A boolean flag to indicate if recombination
+  uses exactly one of crossover or mutation on selected strings.
+
+   Category: Generation
+
+   Inputs:
+      ctx  - context variable
+      flag - PGA_TRUE (default) or PGA_FALSE
+
+   Outputs:
+      None
+
+   Example:
+      Set the genetic algorithm to use mutation only when crossover is
+      not used.
+
+      PGAContext *ctx;
+      :
+      PGASetMutationOrCrossoverFlag(ctx,PGA_FALSE);
+
+****************************************************************************U*/
+void PGASetMutationOrCrossoverFlag( PGAContext *ctx, int flag)
+{
+    PGADebugEntered("PGASetMutationOrCrossoverFlag");
+
+     switch (flag)
+     {
+     case PGA_TRUE:
+     case PGA_FALSE:
+          ctx->ga.MutateOnlyNoCross = flag;
+          break;
+     default:
+          PGAError (ctx, "PGASetMutationOrCrossoverFlag: Invalid value of "
+                    "flag:", PGA_FATAL, PGA_INT, (void *) &flag);
+          break;
+     }
+
+    PGADebugExited("PGASetMutationOrCrossoverFlag");
+}
+
+/*U****************************************************************************
+  PGASetMutationAndCrossoverFlag - A boolean flag to indicate if
+  recombination uses both crossover and mutation on selected strings
+
+   Category: Generation
+
+   Inputs:
+      ctx  - context variable
+      flag - PGA_TRUE (default) or PGA_FALSE
+
+   Outputs:
+      None
+
+   Example:
+      Set the genetic algorithm to use both crossover and mutation when
+      reproducing strings.
+
+      PGAContext *ctx;
+      :
+      PGASetMutationAndCrossoverFlag(ctx,PGA_FALSE);
+
+****************************************************************************U*/
+void PGASetMutationAndCrossoverFlag( PGAContext *ctx, int flag)
+{
+    PGADebugEntered("PGASetMutationAndCrossoverFlag");
+
+     switch (flag)
+     {
+     case PGA_TRUE:
+     case PGA_FALSE:
+          ctx->ga.MutateOnlyNoCross = !flag;
+          break;
+     default:
+          PGAError (ctx, "PGASetMutationAndCrossoverFlag: Invalid value of "
+                    "flag:", PGA_FATAL, PGA_INT, (void *) &flag);
+          break;
+     }
+
+    PGADebugExited("PGASetMutationAndCrossoverFlag");
+}
+/*U***************************************************************************
+   PGAGetMutationOrCrossoverFlag - Returns true if mutation only occurs when
+   crossover does not.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns PGA_TRUE if mutation only occurs when crossover does not,
+      otherwise, returns PGA_FALSE.
+
+   Example:
+      PGAContext *ctx;
+      int mutatetype;
+      :
+      mutatetype = PGAGetMutationOrCrossoverFlag(ctx);
+      switch (mutatetype) {
+      case PGA_TRUE:
+          printf("Only mutating strings not undergoing crossover\n");
+          break;
+      case PGA_FALSE:
+          printf("Mutating strings only after crossover\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetMutationOrCrossoverFlag (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationOrCrossoverFlag");
+    PGAFailIfNotSetUp("PGAGetMutationOrCrossoverFlag");
+
+    PGADebugExited("PGAGetMutationOrCrossoverFlag");
+
+    return(ctx->ga.MutateOnlyNoCross);
+}
+
+/*U***************************************************************************
+   PGAGetMutationAndCrossoverFlag - Returns true if mutation occurs only
+   when crossover does.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns PGA_TRUE if mutation is applied to crossed-over strings.
+      Otherwise, returns PGA_FALSE
+
+   Example:
+      PGAContext *ctx;
+      int mutatetype;
+      :
+      mutatetype = PGAGetMutationAndCrossoverFlag(ctx);
+      switch (mutatetype) {
+      case PGA_TRUE:
+          printf("Mutating strings only after crossover\n");
+          break;
+      case PGA_FALSE:
+          printf("Only mutating strings not undergoing crossover\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetMutationAndCrossoverFlag (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMutationAndCrossoverFlag");
+    PGAFailIfNotSetUp("PGAGetMutationAndCrossoverFlag");
+
+    PGADebugExited("PGAGetMutationAndCrossoverFlag");
+
+    return(!ctx->ga.MutateOnlyNoCross);
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/pop.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/pop.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/pop.c	(revision 6168)
@@ -0,0 +1,438 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: pop.c: This file contains systme routines that act on entire
+*                  populations.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGASortPop - Creates an (internal) array of indices according to one of
+   three criteria.  If PGA_POPREPL_BEST is used (the default) the array is
+   sorted from most fit to least fit.  If PGA_POPREPL_RANDOM_REP is
+   used the indices in the array are selected randomly with replacement.
+   If PGA_POPREPL_RANDOM_NOREP is used the indices in the array are selected
+   randomly without replacement.  The function PGASetPopReplaceType() is used
+   to specify which strategy is used.  The indices of the sorted population
+   members may then be accessed from the internal array via
+   PGAGetSortedPopIndex().  This routine is typically used during population
+   replacement.
+
+   Category: Generation
+
+   Inputs:
+       ctx      - context variable
+       popindex - symbolic constant of the population from which to create
+                  the srted array.
+
+   Output:
+      An inteneral array of indices sorted according to one of three
+      criteria is created.
+
+   Example:
+      Copy the five best strings from the old population into the new
+      population.  The rest of the new population will be created by
+      recombination, and is not shown.
+
+      PGAContext *ctx;
+      int i,j;
+      :
+      PGASetPopReplaceType(ctx,PGA_POPREPL_BEST)
+      :
+      PGASortPop(ctx, PGA_OLDPOP);
+      for ( i=0; i < 5; i++) {
+          j = PGAGetSortedPopIndex(ctx, i);
+      PGACopyIndividual (ctx, j, PGA_OLDPOP, i, PGA_NEWPOP);
+      :
+
+****************************************************************************U*/
+void PGASortPop ( PGAContext *ctx, int pop )
+{
+    int i,j;
+    PGADebugEntered("PGASortPop");
+    switch (ctx->ga.PopReplace) {
+    case PGA_POPREPL_BEST:
+            switch ( pop ) {
+            case PGA_OLDPOP:
+                for (i = 0 ; i < ctx->ga.PopSize ; i++ ) {
+                    ctx->ga.sorted[i] = i;
+                    ctx->scratch.dblscratch[i] = ctx->ga.oldpop[i].fitness;
+                };
+                break;
+            case PGA_NEWPOP:
+                for (i = 0 ; i < ctx->ga.PopSize ; i++ ) {
+                    ctx->ga.sorted[i] = i;
+                    ctx->scratch.dblscratch[i] = ctx->ga.newpop[i].fitness;
+                };
+                break;
+            default:
+                PGAError( ctx,
+                         "PGASort: Invalid value of pop:",
+                         PGA_FATAL,
+                         PGA_INT,
+                         (void *) &pop );
+                break;
+            };
+            PGADblHeapSort ( ctx, ctx->scratch.dblscratch, ctx->ga.sorted,
+                            ctx->ga.PopSize );
+            break;
+    case PGA_POPREPL_RANDOM_REP:
+        if ((pop != PGA_OLDPOP) && (pop != PGA_NEWPOP))
+            PGAError( ctx,
+                     "PGASort: Invalid value of pop:",
+                      PGA_FATAL,
+                      PGA_INT,
+                      (void *) &pop );
+        for (i = 0; i < ctx->ga.PopSize; i++) {
+            ctx->scratch.intscratch[i] = i;
+        };
+        for (i = 0; i < ctx->ga.PopSize; i++) {
+            j = PGARandomInterval ( ctx, 0, ctx->ga.PopSize-1 );
+            ctx->ga.sorted[i] = ctx->scratch.intscratch[j];
+        };
+        break;
+    case PGA_POPREPL_RANDOM_NOREP:
+        if ((pop != PGA_OLDPOP) && (pop != PGA_NEWPOP))
+            PGAError( ctx,
+                     "PGASort: Invalid value of pop:",
+                      PGA_FATAL,
+                      PGA_INT,
+                      (void *) &pop );
+        for (i = 0; i < ctx->ga.PopSize; i++) {
+            ctx->scratch.intscratch[i] = i;
+        };
+        for (i = 0; i < ctx->ga.PopSize; i++) {
+            j = PGARandomInterval ( ctx, 0, ctx->ga.PopSize-i-1 );
+            ctx->ga.sorted[i] = ctx->scratch.intscratch[j];
+            ctx->scratch.intscratch[j] =
+                ctx->scratch.intscratch[ctx->ga.PopSize-i-1];
+        };
+        break;
+    }
+    PGADebugExited("PGASortPop");
+}
+
+
+/*U***************************************************************************
+   PGAGetPopSize - Returns the population size
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The population size
+
+   Example:
+      PGAContext *ctx;
+      int popsize;
+      :
+      popsize = PGAGetPopSize(ctx);
+
+***************************************************************************U*/
+int PGAGetPopSize (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetPopSize");
+    PGAFailIfNotSetUp("PGAGetPopSize");
+
+    PGADebugExited("PGAGetPopSize");
+
+    return(ctx->ga.PopSize);
+}
+
+/*U***************************************************************************
+   PGAGetNumReplaceValue - Returns the maximum number of strings to replace
+   each generation.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The maximum number number of strings to replace each generation
+
+   Example:
+      PGAContext *ctx;
+      int numreplace;
+      :
+      numreplace = PGAGetNumReplaceValue(ctx);
+
+***************************************************************************U*/
+int PGAGetNumReplaceValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetNumReplaceValue");
+    PGAFailIfNotSetUp("PGAGetNumReplaceValue");
+
+    PGADebugExited("PGAGetNumReplaceValue");
+
+    return(ctx->ga.NumReplace);
+}
+
+/*U***************************************************************************
+   PGAGetPopReplaceType - returns the symbolic constant used to determine
+   which strings to copy from the old population to the new population.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The symbolic constant of the replacement strategy.
+
+   Example:
+      PGAContext *ctx;
+      int popreplace;
+      :
+      popreplace = PGAGetPopReplaceType(ctx);
+      switch (popreplace) {
+      case PGA_POPREPL_BEST:
+          printf("Replacement Strategy = PGA_POPREPL_BEST\n");
+          break;
+      case PGA_POPREPL_RANDOM_REP:
+          printf("Replacement Strategy = PGA_POPREPL_RANDOM_REP\n");
+          break;
+      case PGA_POPREPL_RANDOM_NOREP:
+          printf("Replacement Strategy = PGA_POPREPL_RANDOM_NOREP\n");
+          break;
+      }
+
+****************************************************************************U*/
+int PGAGetPopReplaceType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetPopReplaceType");
+    PGAFailIfNotSetUp("PGAGetPopRelaceType");
+
+    PGADebugExited("PGAGetPopReplaceType");
+
+    return(ctx->ga.PopReplace);
+}
+
+
+/*U****************************************************************************
+   PGAGetSortedPopIndex - returns a population string index from the array
+   created by PGASortPop().
+
+   Category: Generation
+
+   Inputs:
+       ctx      - context variable
+       n        - specified which index element is to be returned.
+
+   Output:
+       A population string index from the array created by PGASortPop
+
+   Example:
+      Copy the five best strings from the old population into the new
+      population.  The rest of the new population will be created by
+      recombination, and is not shown.
+
+      PGAContext *ctx;
+      int i,j;
+      :
+      PGASetPopReplaceType(ctx,PGA_POPREPL_BEST)
+      PGASortPop(ctx, PGA_OLDPOP);
+      for ( i=0; i < 5; i++) {
+          j = PGAGetSortedPopIndex(ctx, i);
+      PGACopyIndividual (ctx, j, PGA_OLDPOP, i, PGA_NEWPOP);
+      :
+
+****************************************************************************U*/
+int PGAGetSortedPopIndex ( PGAContext *ctx, int n )
+{
+     int temp;
+
+    PGADebugEntered("PGAGetSortedPopIndex");
+     if (n >= 0 && n < ctx->ga.PopSize )
+          temp = ctx->ga.sorted[n];
+     else
+          PGAError( ctx, "PGAGetSorted: Invalid value of n:",
+                   PGA_FATAL, PGA_INT, (void *) &n );
+
+    PGADebugExited("PGAGetSortedPopIndex");
+
+     return (temp);
+}
+
+/*U****************************************************************************
+   PGASetPopSize - Specifies the size of the genetic algorithm population.
+   The default population size is 100.
+
+   Category: Generation
+
+   Inputs:
+      ctx     - context variable
+      popsize - the genetic algorithm population size to use
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetPopSize(ctx, 200);
+
+****************************************************************************U*/
+void PGASetPopSize (PGAContext *ctx, int popsize)
+{
+
+    PGADebugEntered("PGASetPopSize");
+    PGAFailIfSetUp("PGASetPopSize");
+
+    if (popsize < 1 || popsize % 2)
+        PGAError( ctx, "PGASetPopSize: Invalid value of popsize:",
+                  PGA_FATAL, PGA_INT, (void *) &popsize );
+    else
+        ctx->ga.PopSize = popsize;
+
+    PGADebugExited("PGASetPopSize");
+}
+
+
+
+/*U****************************************************************************
+   PGASetNumReplaceValue - specifies the number of new strings to create each
+   generation.  The default is ten percent of the population size
+
+   Category: Generation
+
+   Inputs:
+      ctx         - context variable
+      pop_replace - the genetic algorithm population size to use
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetNumReplaceValue(ctx, 35);
+
+****************************************************************************U*/
+void PGASetNumReplaceValue( PGAContext *ctx, int pop_replace)
+{
+    PGADebugEntered("PGASetNumReplaceValue");
+
+    if (pop_replace < 0)
+      PGAError( ctx,
+               "PGASetNumReplaceValue: Invalid value of pop_replace:",
+                PGA_FATAL, PGA_INT, (void *) &pop_replace );
+    else
+        ctx->ga.NumReplace = pop_replace;
+
+    PGADebugExited("PGASetNumReplaceValue");
+}
+
+
+
+
+/*U****************************************************************************
+   PGASetPopReplaceType - Choose method of sorting strings to copy from old
+   population to new population.  Valid choices are PGA_POPREPL_BEST,
+   PGA_POPREPL_RANDOM_NOREP, or PGA_POPREPL_RANDOM_REP for copying the best
+   strings, or  random string, with or without replacement, respectively,
+   from the old population into the new population. The default is
+   PGA_POPREPL_BEST.
+
+   Category: Generation
+
+   Inputs:
+      ctx         - context variable
+      pop_replace - symbolic constant to specify the population replacement
+                    strategy
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetPopReplaceType(ctx, PGA_POPREPL_RANDOM_NOREP);
+
+****************************************************************************U*/
+void PGASetPopReplaceType( PGAContext *ctx, int pop_replace)
+{
+    PGADebugEntered("PGASetPopReplaceType");
+
+    switch (pop_replace) {
+    case PGA_POPREPL_BEST:
+    case PGA_POPREPL_RANDOM_NOREP:
+    case PGA_POPREPL_RANDOM_REP:
+        ctx->ga.PopReplace = pop_replace;
+        break;
+    default:
+        PGAError ( ctx,
+                  "PGASetPopReplaceType: Invalid value of pop_replace:",
+                   PGA_FATAL, PGA_INT, (void *) &pop_replace);
+        break;
+    }
+
+    PGADebugExited("PGASetPopReplaceType");
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/random.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/random.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/random.c	(revision 6168)
@@ -0,0 +1,454 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: random.c: This file contains routines to generate randomness.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGARandomFlip - flip a biased coin and return PGA_TRUE if the coin is
+   a "winner."  Otherwise, return PGA_FALSE.
+
+   Category: Utility
+
+   Inputs:
+      ctx - context variable
+      p   - biased probability (.5 is a fair coin)
+
+   Outputs:
+      PGA_TRUE or PGA_FALSE
+
+   Example:
+      To return PGA_TRUE approximately seventy percent of the time, use
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGARandomFlip(ctx, 0.7)
+
+****************************************************************************U*/
+int PGARandomFlip ( PGAContext *ctx, double p )
+{
+    PGADebugEntered("PGARandomFlip");
+
+    PGADebugExited("PGARandomFlip");
+
+    return( (PGARandom01(ctx, 0) < p) ? PGA_TRUE : PGA_FALSE);
+}
+
+
+/*U****************************************************************************
+   PGARandomInterval - returns a uniform random number on the specified
+   interval
+
+   Category: Utility
+
+   Inputs:
+      ctx - context variable
+      start - starting (integer) value of the interval
+      end   - ending   (integer) value of the interval
+
+   Outputs:
+      A uniformly distributed random number in the interval [start, end].
+
+   Example:
+      Generate a value uniformly random from the interval [0,99]
+
+      PGAContext *ctx;
+      :
+      PGARandomInterval(ctx, 0, 99);
+
+****************************************************************************U*/
+int PGARandomInterval( PGAContext *ctx, int start, int end)
+{
+    PGADebugEntered("PGARandomInterval");
+    
+    PGADebugExited("PGARandomInterval");
+
+    return( (int)floor(PGARandom01(ctx, 0) * (double)(end-start+1) ) + start );
+    
+/*
+   The original call...
+
+   return(ceil( (double)(end-start+1) * PGARandom01(ctx, 0) )+start-1);
+*/
+}
+
+
+/*****************************************************************************
+*  This is a C language implementation of the universal random number        *
+*  generator proposed by G. Marsaglia and A. Zaman and translated from       *
+*  F. James' version.                                                        *
+*                                                                            *
+*  F. James                                                                  *
+*  A review of pseudorandom number generators                                *
+*  Computer Physics Communication                                            *
+*  60 (1990) 329-344                                                         *
+*                                                                            *
+*  G. Marsaglia, A. Zaman, W. Tseng                                          *
+*  Stat Prob. Letter                                                         *
+*  9 (1990) 35.                                                              *
+*                                                                            *
+*  G. Marsaglia, A. Zaman                                                    *
+*  FSU-SCRI-87-50                                                            *
+*                                                                            *
+*  This algorithm is a combination of a lagged Fibonacci and arithmetic      *
+*  sequence (F. James) generator with period of 2^144.  It provides 32-bit   *
+*  floating point numbers in the range from zero to one.  It is claimed to   *
+*  be portable and provides bit-identical results on all machines with at    *
+*  least 24-bit mantissas.                                                   *
+*                                                                            *
+*  PGARandom01 should be initialized with a 32-bit integer seed such that    *
+*  0 <= seed <= 900,000,000.  Each of these 900,000,000 values gives rise    *
+*  to an independent sequence of ~ 10^30.                                    *
+*                                                                            *
+*  warning on use of static storage class on thread shared memory machines   *
+*****************************************************************************/
+/*U****************************************************************************
+   PGARandom01 - generates a uniform random number on the interval [0,1)
+   If the second argument is 0 it returns the next random number in the
+   sequence.  Otherwise, the second argument is used as a new seed for the
+   population
+
+   Category: Utility
+
+   Inputs:
+      ctx     - context variable
+      newseed - either 0 to get the next random number, or nonzero
+                to reseed
+   Outputs:
+      A random number on the interval [0,1)
+
+   Example:
+      To get the next random number use
+
+      PGAContext *ctx;
+      double r;
+      :
+      r = PGARandom01(ctx,0);
+
+****************************************************************************U*/
+double PGARandom01( PGAContext *ctx, int newseed )
+{
+
+    /* initialization variables */
+    int ij, kl, i, j, k, l, m, ii, jj;
+    float s, t;
+
+    /* random number variables */
+    static int seed=1;      /* default seed if none specified */
+    static int i96, j96;
+    static float u[97], uni, c, cd, cm;
+
+
+    PGADebugEntered("PGARandom01");
+
+    /* initialization */
+/*     printf("i96 = %d\tj96 = %d\n", i96, j96); */
+
+    if ( newseed != 0 ) {
+
+        seed = newseed % 900000000;
+        ij   = seed / 30082;
+        kl   = seed - 30082 * ij;
+        i    = ( (ij/177) % 177 ) + 2;
+        j    = (  ij      % 177 ) + 2;
+        k    = ( (kl/169) % 178 ) + 1;
+        l    = (  kl      % 169 );
+
+        for ( ii=0; ii<97; ii++ ) {
+
+            s = 0.0;
+            t = 0.5;
+
+            for ( jj=0; jj<24; jj++ ) {
+
+                m = ( ((i*j) % 179) * k ) % 179;
+                i = j;
+                j = k;
+                k = m;
+                l = ( (53*l) + 1 ) % 169;
+                if ( ( (l*m) % 64 ) >= 32 )
+                    s += t;
+                t *= .5;
+            }
+
+            u[ii] = s;
+        }
+
+        c   = 362436.  /16777216.;
+        cd  = 7654321. /16777216.;
+        cm  = 16777213./16777216.;
+        i96 = 96;
+        j96 = 32;
+    }
+
+    /* random number generation */
+    uni = u[i96] - u[j96];
+    if ( uni < 0. ) uni += 1.0;
+    u[i96] = uni;
+    i96--;
+    if ( i96 < 0  ) i96 = 96;
+    j96--;
+    if ( j96 < 0  ) j96 = 96;
+    c   -= cd;
+    if ( c   < 0. ) c += cm;
+    uni -= c;
+    if ( uni < 0. ) uni += 1.0;
+
+    PGADebugExited("PGARandom01");
+    return( (double) uni);
+}
+
+/*U****************************************************************************
+   PGARandomUniform - returns a uniform random number on the interval
+   [start,end]
+
+   Category: Utility
+
+   Inputs:
+      ctx - context variable
+      start - starting (double) value of the interval
+      end   - ending   (double) value of the interval
+
+   Outputs:
+      A random number on the interval [start,end]
+
+   Example:
+      Generate a uniform random number on the interval [-0.5, 1.5]
+
+      PGAContext *ctx;
+      double r;
+      :
+      r = PGARandomUniform(ctx, -0.5, 1.5);
+
+****************************************************************************U*/
+double PGARandomUniform( PGAContext *ctx, double start, double end)
+{
+    double val, r;
+
+    PGADebugEntered("PGARandomUniform");
+
+    r = PGARandom01(ctx, 0);
+    val = (end-start) * r + start;
+
+    PGADebugExited("PGARandomUniform");
+
+    return(val);
+}
+
+
+/*U****************************************************************************
+   PGARandomGaussian - returns an approximation to a Gaussian random number
+
+   Category: Utility
+
+   Inputs:
+       mean  - the mean of the Gaussian distribution
+       sigma - the standard deviation of the Gaussian distribution
+
+   Outputs:
+      A random number selected from a Gaussian distribution with given
+      mean and standard deviation
+
+   Example:
+      To generate a Gaussian random number with mean 0.0 and standard
+      deviation 1.0 use
+
+      PGAContext *ctx;
+      :
+      r = PGARandomGaussian(ctx, 0.0, 1.0);
+
+****************************************************************************U*/
+double PGARandomGaussian( PGAContext *ctx, double mean, double sigma)
+{
+    int i;
+    double sum = 0.;
+
+    PGADebugEntered("PGARandomGaussian");
+
+    for (i=11;i>=0; i--)
+        sum += PGARandom01(ctx, 0);
+
+    PGADebugExited("PGARandomGaussian");
+
+    return ( (sum-6.0) * sigma + mean );
+}
+
+/*U***************************************************************************
+   PGAGetRandomSeed - returns the integer to seed random numbers with
+
+   Category: Utility
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The seed for the random number generator
+
+   Example:
+      PGAContext *ctx;
+      int seed;
+      :
+      seed = PGAGetRandomSeed(ctx);
+
+***************************************************************************U*/
+int PGAGetRandomSeed(PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRandomSeed");
+
+    PGADebugExited("PGAGetRandomSeed");
+
+    return(ctx->init.RandomSeed);
+}
+
+/*U****************************************************************************
+   PGASetRandomSeed - set a seed for the random number generator.  The
+   default is to use a random seed.  Specifying a seed exlicitly allows
+   for reproducibility of runs.
+
+   Category: Utility
+
+   Inputs:
+      ctx  - context variable
+      seed - seed  for the random number generator
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetRandomSeed(ctx,1);
+
+****************************************************************************U*/
+void PGASetRandomSeed(PGAContext *ctx, int seed)
+{
+#define MAX_PROCESSORS 2048
+
+    PGADebugEntered("PGASetRandomSeed");
+    PGAFailIfSetUp("PGASetRandomSeed");
+
+    if ((seed < 1) || (seed + MAX_PROCESSORS > 900000000))
+	PGAError ( ctx, "PGASetRandomSeed: Invalid value of seed:",
+		  PGA_FATAL, PGA_INT, (void *) &seed);
+    else
+	ctx->init.RandomSeed = seed;
+    
+    PGADebugExited("PGASetRandomSeed");
+}
+
+/*****************************************************************************
+ Category: Generation/Utility
+ 
+ Inputs:
+ 		ctx - context variable
+ 		randreplaceprop - proportion of individuals to be replaced per generation randomly, post initialization
+ 		
+ Outputs:
+ 		None
+ 		
+ Example:
+ 	PGAContext *ctx;
+ 	.
+ 	.
+ 	PGASetRandReplProp(ctx, 0.05);		
+ ***************************************************************************/
+void PGASetRandReplProp(PGAContext *ctx, double randreplprop){
+	PGADebugEntered("PGASetRandReplProp");
+	PGAFailIfSetUp("PGASetRandReplProp");
+	if(randreplprop < 0 || randreplprop > 1){
+		PGAError ( ctx, "PGASetRandReplProp: Invalid value set:",
+		  PGA_FATAL, PGA_DOUBLE, (void *) &randreplprop);
+	}else{
+		ctx->ga.randreplprop = randreplprop;
+	}
+	PGADebugExited("PGASetRandReplProp");
+}
+
+/*****************************************************************************
+ Category: Generation/Utility
+ 
+ Inputs:
+ 		ctx - context variable
+ 		
+ Outputs:
+ 		randreplprop - proportion of randomly generated individuals per population, post initialization
+ 		
+ Example:
+ 	PGAContext *ctx;
+ 	double randreplprop;
+ 	.
+ 	.
+ 	randreplprop = PGAGetRandReplProp(ctx);		
+ ***************************************************************************/
+double PGAGetRandReplProp(PGAContext *ctx){
+	PGADebugEntered("PGAGetRandReplProp");
+	PGADebugExited("PGAGetRandReplProp");
+	return ctx->ga.randreplprop;
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/real.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/real.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/real.c	(revision 6168)
@@ -0,0 +1,944 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: real.c: This file contains the routines specific to the floating
+*                   point data structure
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include <pgapack.h>
+
+/*U****************************************************************************
+   PGASetRealAllele - sets the value of real-valued allele i in string p
+   in population pop
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+      val - real value to set the allele to
+
+   Outputs:
+      The specified allele in p is modified by side-effect.
+
+   Example:
+      Sets the value of the ith allele of string p in population PGA_NEWPOP
+      to 1.57
+
+      PGAContext *ctx;
+      int i, p;
+      :
+      PGASetRealAllele ( ctx, p, PGA_NEWPOP, i, 1.57)
+
+****************************************************************************U*/
+void PGASetRealAllele (PGAContext *ctx, int p, int pop, int i, double value)
+{
+    PGAIndividual *ind;
+    PGAReal      *chrom;
+
+    PGADebugEntered("PGASetRealAllele");
+    PGACheckDataType("PGASetRealAllele", PGA_DATATYPE_REAL);
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGAReal *)ind->chrom;
+    chrom[i] = value;
+
+    PGADebugExited("PGASetRealAllele");
+}
+
+/*U****************************************************************************
+   PGAGetRealAllele - returns the value of real-valued allele i in string p
+   in population pop
+
+   Category: Fitness & Evaluation
+
+   Inputs:
+      ctx - context variable
+      p   - string index
+      pop - symbolic constant of the population the string is in
+      i   - allele index
+
+   Outputs:
+      The value of allele i
+
+   Example:
+      Returns the value of the ith real-valued allele of string p
+      in population PGA_NEWPOP
+
+      PGAContext *ctx;
+      int p, i, r;
+      r =  PGAGetRealAllele (ctx, p, PGA_NEWPOP, i)
+
+****************************************************************************U*/
+double PGAGetRealAllele (PGAContext *ctx, int p, int pop, int i)
+{
+    PGAIndividual *ind;
+    PGAReal      *chrom;
+
+    PGADebugEntered("PGAGetRealAllele");
+    PGACheckDataType("PGAGetRealAllele", PGA_DATATYPE_REAL);
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+    chrom = (PGAReal *)ind->chrom;
+
+    PGADebugExited("PGAGetRealAllele");
+
+    return( (double) chrom[i] );
+}
+
+/*U****************************************************************************
+  PGASetRealInitPercent - sets the upper and lower bounds for randomly
+  initializing real-valued genes.  For each gene these bounds define an
+  interval from which the initial allele value is selected uniformly randomly.
+  With this routine the user specifies a median value and a percent offset
+  for each allele.
+
+  Category: Initialization
+
+  Inputs:
+     ctx     - context variable
+     median  - an array containing the mean value of the interval
+     percent - an array containing the percent offset to add and subtract to
+               the median to define the interval
+
+  Outputs:
+
+  Example:
+     Set the initialization routines to select a value for each real-valued
+     gene i uniformly randomly from the interval [i-v,i+v], where $v = i/2$.
+     Assumes all strings are the same length.
+
+     PGAContext *ctx;
+     double *median, *percent;
+     int i, stringlen;
+     :
+     stringlen = PGAGetStringLength(ctx);
+     median  = (double *) malloc(stringlen*sizeof(double));
+     percent = (double *) malloc(stringlen*sizeof(double));
+     for(i=0;i<stringlen;i++) {
+        median[i]  = (double) i;
+        percent[i] = 0.5;
+     }
+     PGASetRealInitPercent(ctx, median, percent);
+
+****************************************************************************U*/
+void PGASetRealInitPercent ( PGAContext *ctx, double *median, double *percent)
+{
+     int i;
+     int stringlen;
+     double offset;
+
+    PGADebugEntered("PGASetRealInitPercent");
+    PGAFailIfSetUp("PGASetRealInitPercent");
+    PGACheckDataType("PGASetRealInitPercent", PGA_DATATYPE_REAL);
+
+    stringlen = PGAGetStringLength(ctx);
+    for (i=0; i<stringlen; i++) {
+    }
+    for (i=0; i<stringlen; i++) {
+         offset = fabs(median[i] * percent[i]);
+         ctx->init.RealMin[i] = median[i] - offset;
+         ctx->init.RealMax[i] = median[i] + offset;
+         
+    }
+    ctx->init.RealType = PGA_RINIT_PERCENT;
+
+    PGADebugExited("PGASetRealInitPercent");
+}
+
+/*U****************************************************************************
+  PGASetRealInitRange - sets the upper and lower bounds for randomly
+  initializing real-valued genes.  For each gene these bounds define an
+  interval from which the initial allele value is selected uniformly randomly.
+  The user specifies two arrays containing lower and bound for each gene to
+  define the interval.  This is the default strategy for initializing
+  real-valued strings.  The default interval is $[0,1.0]$ for each gene.
+
+  Category: Initialization
+
+  Inputs:
+     ctx - context variable
+     min - array containing the lower bound of the interval for each gene
+     mac - array containing the upper bound of the interval for each gene
+
+  Outputs:
+
+  Example:
+     Set the initialization routines to select a value for each real-valued
+     gene i uniformly randomly from the interval [-10.,i]
+     Assumes all strings are of the same length.
+
+     PGAContext *ctx;
+     double *low, *high;
+     int i, stringlen;
+     :
+     stringlen = PGAGetStringLength(ctx);
+     low  = (double *) malloc(stringlen*sizeof(double));
+     high = (double *) malloc(stringlen*sizeof(double));
+     for(i=0;i<stringlen;i++) {
+        low[i]  = -10.0;
+        high[i] = i;
+     }
+     PGASetRealInitRange(ctx, low, high);
+
+****************************************************************************U*/
+void PGASetRealInitRange (PGAContext *ctx, double *min, double *max)
+{
+     int i;
+    PGADebugEntered("PGASetRealInitRange");
+    PGAFailIfSetUp("PGASetRealInitRange");
+    PGACheckDataType("PGASetRealInitRange", PGA_DATATYPE_REAL);
+
+    for (i=ctx->ga.StringLen-1; i>=0; i--) {
+         if (max[i] < min[i])
+              PGAError(ctx, "PGASetRealInitRange: Lower bound exceeds upper "
+                       "bound for allele #", PGA_FATAL, PGA_INT, (void *) &i);
+         else
+         {
+              ctx->init.RealMin[i] = min[i];
+              ctx->init.RealMax[i] = max[i];
+         }
+    }
+    ctx->init.RealType = PGA_RINIT_RANGE;
+
+    PGADebugExited("PGASetRealInitRange");
+}
+
+
+/*U***************************************************************************
+  PGAGetMinRealInitValue - returns the minimum value used to randomly
+  initialize allele i in a real string
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+      i   - an allele position
+
+   Outputs:
+      The minimum value used to randomly initialize allele i
+
+   Example:
+      PGAContext *ctx;
+      int min;
+      :
+      min = PGAGetMinRealInitValue(ctx, 0);
+
+***************************************************************************U*/
+double PGAGetMinRealInitValue (PGAContext *ctx, int i)
+{
+    PGADebugEntered("PGAGetMinRealInitValue");
+    PGAFailIfNotSetUp("PGAGetMinRealInitValue");
+    PGACheckDataType("PGAGetMinRealInitValue", PGA_DATATYPE_REAL);
+
+    if (i < 0 || i >= ctx->ga.StringLen)
+         PGAError(ctx, "PGAGetMinRealInitValue: Index out of range:",
+                  PGA_FATAL, PGA_INT, (int *) &i);
+
+    PGADebugExited("PGAGetMinRealInitValue");
+
+    return(ctx->init.RealMin[i]);
+}
+
+/*U***************************************************************************
+  PGAGetMaxRealInitValue - returns the maximum value used to randomly
+  initialize allele i in a real string
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+      i   - an allele position
+
+   Outputs:
+      The maximum value used to randomly initialize allele i
+
+   Example:
+      PGAContext *ctx;
+      int max;
+      :
+      max = PGAGetMaxRealInitValue(ctx, 0);
+
+***************************************************************************U*/
+double PGAGetMaxRealInitValue (PGAContext *ctx, int i)
+{
+    PGADebugEntered("PGAGetMaxRealInitValue");
+    PGAFailIfNotSetUp("PGAGetMaxRealInitValue");
+    PGACheckDataType("PGAGetMaxRealInitValue", PGA_DATATYPE_REAL);
+
+    if (i < 0 || i >= ctx->ga.StringLen)
+         PGAError(ctx, "PGAGetMaxRealInitValue: Index out of range:",
+                  PGA_FATAL, PGA_INT, (int *) &i);
+
+    PGADebugExited("PGAGetMaxRealInitValue");
+
+    return(ctx->init.RealMax[i]);
+}
+
+
+/*U***************************************************************************
+  PGAGetRealInitType - returns the type of scheme used to randomly
+  initialize strings of data type PGA_DATATYPE_REAL.
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the scheme used to initialize real strings
+
+   Example:
+      PGAContext *ctx;
+      int inittype;
+      :
+      inittype = PGAGetRealInitType(ctx);
+      switch (inittype) {
+      case PGA_RINIT_PERCENT:
+          printf("Data Type = PGA_RINIT_PERCENT\n");
+          break;
+      case PGA_RINIT_RANGE:
+          printf("Data Type = PGA_RINIT_RANGE\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetRealInitType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRealInitType");
+    PGAFailIfNotSetUp("PGAGetRealInitType");
+    PGACheckDataType("PGAGetRealInitType", PGA_DATATYPE_REAL);
+
+    PGADebugExited("PGAGetRealInitType");
+
+    return(ctx->init.RealType);
+}
+
+
+/*I****************************************************************************
+   PGARealCreateString - Allocate memory for a string of type PGAReal
+
+   Inputs:
+      ctx      - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      initflag - A true/false flag used in conjunction with ctx->ga.RandomInit
+                 to initialize the string either randomly or set to zero
+
+   Outputs:
+
+   Example:
+      Allocates memory and assigns the address of the allocated memory to
+      the real string field (ind->chrom) of the individual.  Also, clears
+      the string.
+
+      PGAContext *ctx;
+      int p;
+      :
+      PGARealCreateString( ctx, p, PGA_NEWPOP, PGA_FALSE );
+
+****************************************************************************I*/
+void PGARealCreateString (PGAContext *ctx, int p, int pop, int initflag)
+{
+    PGAIndividual *new = PGAGetIndividual(ctx, p, pop);
+    int i, fp;
+    PGAReal *c;
+    
+    PGADebugEntered("PGARealCreateString");
+    
+    new->chrom = (void *) malloc (ctx->ga.StringLen * sizeof(PGAReal));
+    if (new->chrom == NULL)
+	PGAError(ctx, "PGARealCreateString: No room to allocate new->chrom",
+		 PGA_FATAL, PGA_VOID, NULL);
+    c = (PGAReal *)new->chrom;
+    if (initflag)
+	if (ctx->fops.InitString) {
+	    fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+	    (*ctx->fops.InitString)(&ctx, &fp, &pop);
+	} else {
+	    (*ctx->cops.InitString)(ctx, p, pop);
+	}
+    else
+	for (i=ctx->ga.StringLen-1; i>=0; i--)
+	    c[i] = 0.0;
+    
+    PGADebugExited("PGARealCreateString");
+}
+
+/*I****************************************************************************
+   PGARealMutation - randomly mutates a floating point string with probability
+   mr.  Three of the four mutation operators are of the form v = v +- p*v.
+   That is, the new value of v (allele i) is the old value + or - a percentage,
+   p, of the old value. There are three possibilities for choosing p: (1)
+   constant value (0.01 by default), (2) selected uniformly on (0,UB) (UB is
+   .1 by default), and (3) selected from a Gaussian distribution (with mean 0
+   and standard deviation .1 be default).  The change to an allele, p*v, is
+   added or subtracted to the old value with a probability of .5. The fourth
+   option is to replace v with a value selected uniformly random from the
+   initialization range of that gene. Alleles to mutate are randomly selected.
+   The value set by the routine PGASetMutationRealValue is used as p, UB, and
+   sigma in cases 1,2, and 3, respectively.
+
+   Inputs:
+      ctx - context variable
+      p        - string index
+      pop      - symbolic constant of the population string p is in
+      mr  - probability of mutating a real-valued gene
+
+   Outputs: The number of mutations performed.
+
+   Example:
+      Sets the value of the ith gene of string p
+      in population PGA_NEWPOP to one
+
+      PGAContext *ctx;
+      int NumMutations, p;
+      :
+      NumMutations = PGARealMutation( ctx, p, PGA_NEWPOP, .001 );
+
+****************************************************************************I*/
+int PGARealMutation( PGAContext *ctx, int p, int pop, double mr )
+{
+     PGAReal *c;
+     int i;
+     int count = 0;
+     double val;
+
+     PGADebugEntered("PGARealMutation");
+
+     c = (PGAReal *)PGAGetIndividual(ctx, p, pop)->chrom;
+     for(i=0; i<ctx->ga.StringLen; i++) {
+
+         /* randomly choose an allele   */
+         if ( PGARandomFlip(ctx, mr) ) {
+
+             /* generate on range, or calculate multplier */
+             switch (ctx->ga.MutationType) {
+             case PGA_MUTATION_RANGE:
+                 c[i] = PGARandomUniform(ctx, ctx->init.RealMin[i],
+                                              ctx->init.RealMax[i]);
+                 break;
+             case PGA_MUTATION_CONSTANT:
+                 val = ctx->ga.MutateRealValue;
+                 break;
+             case PGA_MUTATION_UNIFORM:
+                 val = PGARandomUniform (ctx, 0.0, ctx->ga.MutateRealValue);
+                 break;
+             case PGA_MUTATION_GAUSSIAN:
+                 val = PGARandomGaussian(ctx, 0.0, ctx->ga.MutateRealValue);
+                 break;
+             default:
+                  PGAError(ctx, "PGARealMutation: Invalid value of "
+                           "ga.MutationType:", PGA_FATAL, PGA_INT,
+                           (void *) &(ctx->ga.MutationType));
+                  break;
+             }
+
+             /* apply multiplier calculated in switch above */
+             if ( (ctx->ga.MutationType == PGA_MUTATION_CONSTANT) ||
+                  (ctx->ga.MutationType == PGA_MUTATION_UNIFORM)  ||
+                  (ctx->ga.MutationType == PGA_MUTATION_GAUSSIAN)
+                ) {
+                 /* add/subtract from allele */
+                 if ( PGARandomFlip(ctx, .5) )
+                     c[i] += val*c[i];
+                 else
+                     c[i] -= val*c[i];
+             }
+
+             /* reset to min/max if bounded flag true and outside range */
+             if( ctx->ga.MutateBoundedFlag == PGA_TRUE ) {
+                if( c[i] < ctx->init.RealMin[i])
+                    c[i] = ctx->init.RealMin[i];
+                if( c[i] > ctx->init.RealMax[i])
+                    c[i] = ctx->init.RealMax[i];
+             }
+
+             /* increment mutation count */
+             count++;
+         }
+     }
+
+     PGADebugExited("PGARealMutation");
+
+     return(count);
+}
+
+/*I****************************************************************************
+   PGARealOneptCrossover - this routine performs one point crossover on two
+   parent strings, producing (via side effect) the crossed children child1 and
+   child2
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      c1 and c2 in population pop2 are modified by side-effect.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGARealOneptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGARealOneptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2)
+{
+     PGAReal *parent1 = (PGAReal *)PGAGetIndividual(ctx, p1,
+                                                    pop1)->chrom;
+     PGAReal *parent2 = (PGAReal *)PGAGetIndividual(ctx, p2,
+                                                    pop1)->chrom;
+     PGAReal *child1  = (PGAReal *)PGAGetIndividual(ctx, c1,
+                                                    pop2)->chrom;
+     PGAReal *child2  = (PGAReal *)PGAGetIndividual(ctx, c2,
+                                                    pop2)->chrom;
+     int i, xsite;
+
+    PGADebugEntered("PGARealOneptCrossover");
+
+    xsite = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+
+    for(i=0;i<xsite;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    for(i=xsite;i<ctx->ga.StringLen;i++) {
+        child1[i] = parent2[i];
+        child2[i] = parent1[i];
+    }
+
+    PGADebugExited("PGARealOneptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGARealTwoptCrossover - performs two-point crossover on two parent strings
+   producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      c1 and c2 in population pop2 are modified by side-effect.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGARealTwoptCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGARealTwoptCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                           int c1, int c2, int pop2)
+{
+     PGAReal *parent1 = (PGAReal *)PGAGetIndividual(ctx, p1,
+                                                    pop1)->chrom;
+     PGAReal *parent2 = (PGAReal *)PGAGetIndividual(ctx, p2,
+                                                    pop1)->chrom;
+     PGAReal *child1  = (PGAReal *)PGAGetIndividual(ctx, c1,
+                                                    pop2)->chrom;
+     PGAReal *child2  = (PGAReal *)PGAGetIndividual(ctx, c2,
+                                                    pop2)->chrom;
+     int i, temp, xsite1, xsite2;
+
+    PGADebugEntered("PGARealTwoptCrossover");
+
+    /* pick two cross sites such that xsite2 > xsite1 */
+    xsite1 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    xsite2 = xsite1;
+    while ( xsite2 == xsite1 )
+        xsite2 = PGARandomInterval(ctx, 1,ctx->ga.StringLen-1);
+    if ( xsite1 > xsite2 ) {
+        temp   = xsite1;
+        xsite1 = xsite2;
+        xsite2 = temp;
+    }
+
+    for(i=0;i<xsite1;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    for(i=xsite1;i<xsite2;i++) {
+        child1[i] = parent2[i];
+        child2[i] = parent1[i];
+    }
+
+    for(i=xsite2;i<ctx->ga.StringLen;i++) {
+        child1[i] = parent1[i];
+        child2[i] = parent2[i];
+    }
+
+    PGADebugExited("PGARealTwoptCrossover");
+}
+
+
+/*I****************************************************************************
+   PGARealUniformCrossover - performs uniform crossover on two parent strings
+   producing two children via side-effect
+
+   Inputs:
+      ctx  - context variable
+      p1   - the first parent string
+      p2   - the second parent string
+      pop1 - symbolic constant of the population containing string p1 and p2
+      c1   - the first child string
+      c2   - the second child string
+      pop2 - symbolic constant of the population to contain string c1 and c2
+
+   Outputs:
+      c1 and c2 in population pop2 are modified by side-effect.
+
+   Example:
+      Performs crossover on the two parent strings m and d, producing
+      children s and b.
+
+      PGAContext *ctx;
+      int m, d, s, b;
+      :
+      PGARealUniformCrossover( ctx, m, d, PGA_OLDPOP, s, b, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGARealUniformCrossover( PGAContext *ctx, int p1, int p2, int pop1,
+                             int c1, int c2, int pop2)
+{
+     PGAReal *parent1 = (PGAReal *)PGAGetIndividual(ctx, p1,
+                                                    pop1)->chrom;
+     PGAReal *parent2 = (PGAReal *)PGAGetIndividual(ctx, p2,
+                                                    pop1)->chrom;
+     PGAReal *child1  = (PGAReal *)PGAGetIndividual(ctx, c1,
+                                                    pop2)->chrom;
+     PGAReal *child2  = (PGAReal *)PGAGetIndividual(ctx, c2,
+                                                    pop2)->chrom;
+     int i;
+
+    PGADebugEntered("PGARealUniformCrossover");
+
+    for(i=0;i<ctx->ga.StringLen;i++) {
+        if ( parent1[i] == parent2[i] ) {
+            child1[i] = parent1[i];
+            child2[i] = parent2[i];
+        }
+        else {
+            if(PGARandomFlip(ctx, ctx->ga.UniformCrossProb)) {
+                child1[i] = parent1[i];
+                child2[i] = parent2[i];
+            }
+            else {
+                child1[i] = parent2[i];
+                child2[i] = parent1[i];
+            }
+        }
+    }
+
+    PGADebugExited("PGARealUniformCrossover");
+}
+
+/*I****************************************************************************
+   PGARealPrintString - writes a real-valued string to a file.  This routine
+   casts the void string pointer it is passed as the second argument.
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to file to write the string to
+      p   - index of the string to write out
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+
+   Example:
+      Write string s to stdout.
+
+      PGAContext *ctx;
+      int s;
+      :
+      PGARealPrintString( ctx, stdout, s, PGA_NEWPOP );
+
+****************************************************************************I*/
+void PGARealPrintString (PGAContext *ctx, FILE *fp, int p, int pop)
+{
+    PGAReal *c = (PGAReal *)PGAGetIndividual(ctx, p, pop)->chrom;
+    int i;
+
+    PGADebugEntered("PGARealPrintString");
+
+    for(i = 0; i < ctx->ga.StringLen; i++)
+    {
+        switch ( i % 5 )
+        {
+        case 0:
+            fprintf ( fp, "#%4d: [%11.7g]",i,c[i]);
+            break;
+        case 1:
+        case 2:
+        case 3:
+            fprintf ( fp, ", [%11.7g]",c[i]);
+            break;
+        case 4:
+            fprintf ( fp, ", [%11.7g]",c[i]);
+            if (i+1 < ctx->ga.StringLen)
+                fprintf ( fp, "\n");
+            break;
+        }
+    }
+    fprintf ( fp, "\n" );
+
+    PGADebugExited("PGARealPrintString");
+}
+
+
+/*I****************************************************************************
+   PGARealCopyString - Copy one real-valued string string to another
+
+   Inputs:
+      ctx - context variable
+      p1   - string to copy
+      pop1 - symbolic constant of population containing string p1
+      p2   - string to copy p1 to
+      pop2 - symbolic constant of population containing string p2
+
+   Outputs:
+      String p2 in population pop2 is modified to be a copy of string
+      p1 in population pop1.
+
+   Example:
+      Copy string x to y.
+
+      PGAContext *ctx;
+      int x, y;
+      :
+      PGARealCopyString (ctx, x, PGA_OLDPOP, y, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGARealCopyString ( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+    PGAReal *source = (PGAReal *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    PGAReal *dest   = (PGAReal *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+    int i;
+
+    PGADebugEntered("PGARealCopyString");
+
+    for (i=ctx->ga.StringLen-1; i>=0; i--)
+        *(dest++) = *(source++);
+
+    PGADebugExited("PGARealCopyString");
+}
+
+
+/*I****************************************************************************
+   PGARealDuplicate - Returns true if real-valued string a is a duplicate of
+   real-valued string b, else returns false.
+
+   Inputs:
+      ctx - context variable
+      p1   - string index of the first string to compare
+      pop1 - symbolic constant of the population string p1 is in
+      p2   - string index of the second string to compare
+      pop2 - symbolic constant of the population string p2 is in
+
+   Outputs:
+      Returns true/false if strings are duplicates
+
+   Example:
+      Compare strings x with y to see if they are duplicates
+
+      PGAContext *ctx;
+      int x, y;
+      :
+      if ( PGARealDuplicate( ctx, x, PGA_OLDPOP, y, PGA_OLDPOP ) )
+          printf("strings are duplicates\n");
+
+****************************************************************************I*/
+int PGARealDuplicate( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+     PGAReal *a = (PGAReal *)PGAGetIndividual(ctx, p1, pop1)->chrom;
+     PGAReal *b = (PGAReal *)PGAGetIndividual(ctx, p2, pop2)->chrom;
+     int i;
+
+    PGADebugEntered("PGARealDuplicate");
+
+     i = ctx->ga.StringLen-1;
+     if (a[0] == b[0])
+       for(; (i>0) && (a[i] == b[i]); i--);
+
+    PGADebugExited("PGARealDuplicate");
+
+     return((i==0) ? PGA_TRUE : PGA_FALSE);
+}
+
+/*I****************************************************************************
+   PGARealInitString - randomly initialize a string of type PGAReal
+
+   Inputs:
+      ctx - context variable
+      p   - index of string to randomly initialize
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+      String p in population pop is randomly initialized by side-effect.
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGARealInitString (ctx, p, PGA_NEWPOP);
+
+****************************************************************************I*/
+void PGARealInitString ( PGAContext *ctx, int p, int pop)
+{
+     int i;
+     PGAReal *c = (PGAReal *)PGAGetIndividual(ctx, p, pop)->chrom;
+
+     PGADebugEntered("PGARealInitString");
+
+     for (i = 0; i < ctx->ga.StringLen; i++)
+          c[i] = PGARandomUniform(ctx, ctx->init.RealMin[i],
+                                  ctx->init.RealMax[i]);
+
+     PGADebugExited("PGARealInitString");
+}
+
+/*I****************************************************************************
+  PGARealBuildDatatype - Build an MPI datatype for a string.
+
+  Inputs:
+     ctx   - context variable
+     p     - index of string
+     pop   - symbolic constant of population string p is in
+
+  Outputs:
+     An MPI_Datatype.
+
+  Example:
+     PGAContext   *ctx;
+     int           p;
+     MPI_Datatype  dt;
+     :
+     dt = PGARealBuildDatatype(ctx, p, pop);
+
+****************************************************************************I*/
+MPI_Datatype PGARealBuildDatatype(PGAContext *ctx, int p, int pop)
+{
+
+     int            counts[4];      /* Number of elements in each
+                                       block (array of integer) */
+     MPI_Aint       displs[4];      /* byte displacement of each
+                                       block (array of integer) */
+     MPI_Datatype   types[4];       /* type of elements in each block (array
+                                       of handles to datatype objects) */
+     MPI_Datatype   individualtype; /* new datatype (handle) */
+     PGAIndividual *traveller;      /* address of individual in question */
+
+    PGADebugEntered("PGARealBuildDatatype");
+
+     traveller = PGAGetIndividual(ctx, p, pop);
+     MPI_Address(&traveller->evalfunc, &displs[0]);
+     counts[0] = 1;
+     types[0]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->fitness, &displs[1]);
+     counts[1] = 1;
+     types[1]  = MPI_DOUBLE;
+
+     MPI_Address(&traveller->evaluptodate, &displs[2]);
+     counts[2] = 1;
+     types[2]  = MPI_INT;
+
+     MPI_Address(traveller->chrom, &displs[3]);
+     counts[3] = ctx->ga.StringLen;
+     types[3]  = MPI_DOUBLE;
+
+     MPI_Type_struct(4, counts, displs, types, &individualtype);
+     MPI_Type_commit(&individualtype);
+
+    PGADebugExited("PGARealBuildDatatype");
+
+     return (individualtype);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/report.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/report.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/report.c	(revision 6168)
@@ -0,0 +1,1378 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/******************************************************************************
+ *     FILE: report.c: This file contains functions for reporting on GA
+ *                     parameters, and execution.
+ *
+ *     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle
+ *              Brian P. Walenz
+ ******************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGAPrintReport - prints genetic algorithm statistics.  The statistics
+   that are printed are determined by PGASetPrintOptions().
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to print the output to
+      pop - symbolic constant of the population whose statistics are printed
+
+   Outputs:
+      genetic algorithm statistics are printed to fp
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGAPrintReport(ctx, stdout, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGAPrintReport(PGAContext *ctx, FILE *fp, int pop)
+{
+     int p, best_p;
+     double e, best_e;
+
+    PGADebugEntered("PGAPrintReport");
+
+     if (ctx->ga.iter == 1)
+/*       fprintf (fp, "Iter #     Field      Value           Time\n");  */
+         fprintf (fp, "Iter #     Field      Value\n");
+
+     best_p = PGAGetBestIndex(ctx, pop);
+     best_e = PGAGetEvaluation(ctx, best_p, pop);
+     if (!(ctx->ga.iter % ctx->rep.PrintFreq) || ctx->ga.iter == 1)
+     {
+          fprintf(fp, "%-11dBest       %e\n", PGAGetGAIterValue(ctx), best_e);
+/*        fprintf(fp, "      %ld\n", time(NULL) - ctx->rep.starttime);  */
+          if ((ctx->rep.PrintOptions & PGA_REPORT_WORST) == PGA_REPORT_WORST)
+          {
+               p = PGAGetWorstIndex(ctx, pop);
+               e = PGAGetEvaluation(ctx, p, pop);
+               fprintf(fp, "           Worst      %e\n", e);
+          }
+
+          if ((ctx->rep.PrintOptions & PGA_REPORT_AVERAGE) == PGA_REPORT_AVERAGE)
+               fprintf(fp, "           Average    %e\n", ctx->rep.Average);
+
+          if ((ctx->rep.PrintOptions & PGA_REPORT_OFFLINE)
+               == PGA_REPORT_OFFLINE)
+               fprintf(fp, "           Offline    %e\n", ctx->rep.Offline);
+
+          if ((ctx->rep.PrintOptions & PGA_REPORT_ONLINE) == PGA_REPORT_ONLINE)
+               fprintf(fp, "           Online     %e\n", ctx->rep.Online);
+
+          if((ctx->rep.PrintOptions & PGA_REPORT_HAMMING)
+             == PGA_REPORT_HAMMING)
+               fprintf(fp, "           Hamming    %e\n",
+                       PGAHammingDistance(ctx, pop));
+          if ((ctx->rep.PrintOptions & PGA_REPORT_STRING) == PGA_REPORT_STRING)
+               PGAPrintString(ctx, fp, best_p, pop);
+     }
+     fflush(fp);
+
+    PGADebugExited("PGAPrintReport");
+}
+
+/*U****************************************************************************
+   PGASetPrintOptions - set flags to indicate what GA statistics should be
+   printed whenever output is printed.  May be called more than once to
+   specify different report options.  Valid choices are PGA_REPORT_AVERAGE,
+   PGA_REPORT_OFFLINE, PGA_REPORT_ONLINE, PGA_REPORT_WORST, PGA_REPORT_HAMMING,
+   and PGA_REPORT_STRING to specify offline analysis, online analysis, the
+   worst string in the population, the Hamming distance of the population, and
+   the actual allele values of the best string.  The best string is always
+   printed. 
+
+   Category: Reporting
+
+   Inputs:
+      ctx    - context variable
+      option - symbolic constant to specify a print option
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetPrintOptions(ctx, PGA_REPORT_WORST);
+
+****************************************************************************U*/
+void PGASetPrintOptions (PGAContext *ctx, int option)
+{
+    PGADebugEntered("PGASetPrintOptions");
+
+  switch (option) {
+    case PGA_REPORT_AVERAGE:
+    case PGA_REPORT_OFFLINE:
+    case PGA_REPORT_ONLINE:
+    case PGA_REPORT_WORST:
+    case PGA_REPORT_HAMMING:
+    case PGA_REPORT_STRING:
+      ctx->rep.PrintOptions |= option;
+      break;
+    default:
+      PGAError (ctx, "PGASetPrintOption: Invalid value of option:",
+                PGA_FATAL, PGA_INT, (void *) &option);
+      break;
+  }
+
+    PGADebugExited("PGASetPrintOptions");
+}
+
+/*U****************************************************************************
+   PGASetPrintFrequencyValue - Specifies the frequency with which genetic
+   algorithm statistics are reported.  The default is every 10 GA iterations.
+   Used only if PGARun() is used to run the GA.
+
+   Category: Reporting
+
+   Inputs:
+      ctx        - context variable
+      print_freq - the genetic algorithm population size to use
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetPrintFrequencyValue(ctx,1);
+
+****************************************************************************U*/
+void PGASetPrintFrequencyValue( PGAContext *ctx, int print_freq)
+{
+    PGADebugEntered("PGASetPrintFrequencyValue");
+
+    if (print_freq < 0)
+        PGAError ( ctx,
+                  "PGASetPrintFrequencyValue: Invalid value of print_freq:",
+                   PGA_FATAL,
+                   PGA_INT,
+                  (void *) &print_freq);
+    else
+        ctx->rep.PrintFreq = print_freq;
+
+    PGADebugExited("PGASetPrintFrequencyValue");
+}
+
+/*U***************************************************************************
+   PGAGetPrintFrequencyValue - returns how often to print statistics reports
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The frequency of printing output
+
+   Example:
+      PGAContext *ctx;
+      int freq;
+      :
+      freq = PGAGetPrintFrequencyValue(ctx);
+
+***************************************************************************U*/
+int PGAGetPrintFrequencyValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetPrintFrequencyValue");
+    PGAFailIfNotSetUp("PGAGetPrintFrequencyValue");
+
+    PGADebugExited("PGAGetPrintFrequencyValue");
+
+    return(ctx->rep.PrintFreq);
+}
+
+/*U****************************************************************************
+   PGAPrintPopulation - Calls PGAPrintIndividual to print each member of a
+   population
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to print the output to
+      pop - symbolic constant of the population to be printed
+
+   Outputs:
+      The strings and associated fields that make up a population member are
+      printed to fp.
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGAPrintPopulation(ctx, stdout, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGAPrintPopulation ( PGAContext *ctx, FILE *fp, int pop )
+{
+    int i;
+
+
+    PGADebugEntered("PGAPrintPopulation");
+
+    for ( i=0; i < ctx->ga.PopSize; i++ )
+         PGAPrintIndividual ( ctx, fp,  i, pop );
+    fprintf(fp,"\n");
+
+    PGADebugExited("PGAPrintPopulation");
+}
+
+/*U****************************************************************************
+   PGAPrintIndividual - prints the allele values of a string and associated
+   fields (evaluation, fitness, etc.) of a string
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to print the output to
+      p   - string index
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+      The allele values of string p and associated fields are printed to fp
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGAPrintIndividual(ctx, stdout, p, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGAPrintIndividual ( PGAContext *ctx, FILE *fp, int p, int pop )
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAPrintIndividual");
+
+    ind = PGAGetIndividual ( ctx, p, pop );
+
+    fprintf( fp,"%d  %e %e ", p, ind->evalfunc, ind->fitness);
+    if ( ind->evaluptodate )
+        fprintf( fp, "T\n" );
+    else
+        fprintf( fp, "F\n" );
+    PGAPrintString ( ctx, fp, p, pop );
+
+    PGADebugExited("PGAPrintIndividual");
+}
+
+/*U****************************************************************************
+   PGAPrintString - write the allele values in a string to a file
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+      fp  - pointer to file to write the string to
+      p   - index of the string to write out
+      pop - symbolic constant of the population string p is in
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      int p;
+      :
+      PGAPrintString(ctx, stdout, p, PGA_OLDPOP);
+
+****************************************************************************U*/
+void PGAPrintString ( PGAContext *ctx, FILE *file, int p, int pop )
+{
+    int fp;
+
+    PGADebugEntered("PGAPrintString");
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAPrintString",
+                  "p   = ", PGA_INT, (void *) &p );
+    PGADebugPrint( ctx, PGA_DEBUG_PRINTVAR,"PGAPrintString",
+                  "pop = ", PGA_INT, (void *) &pop );
+    
+    if (ctx->fops.PrintString) {
+        fp = ((p == PGA_TEMP1) || (p == PGA_TEMP2)) ? p : p+1;
+        (*ctx->fops.PrintString)(&ctx, NULL, &fp, &pop);
+    } else {
+        (*ctx->cops.PrintString)(ctx, file, p, pop);
+    }
+    fprintf(file,"\n");
+
+    PGADebugExited("PGAPrintString");
+}
+
+/*U****************************************************************************
+   PGAPrintContextVariable - prints the value of all the fields in the context
+   variable.
+
+   Category: Reporting
+
+   Inputs:
+      ctx - context variable
+      fp  - file pointer to print the output to
+
+   Outputs:
+      The value of all the fields in the context variable are printed to fp.
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGAPrintContextVariable(ctx, stdout);
+
+****************************************************************************U*/
+void PGAPrintContextVariable ( PGAContext *ctx, FILE *fp )
+{
+    PGADebugEntered("PGAPrintContextVariable");
+
+     fprintf( fp,"Algorithm Parameters (Static)\n");
+
+     fprintf( fp,"    Data type                      : ");
+     switch(ctx->ga.datatype)
+     {
+     case PGA_DATATYPE_BINARY:
+          fprintf( fp,"Binary\n");
+          /*fprintf( fp,"    Bit Type Total Words           : ");
+          switch(ctx->ga.tw)
+          {
+          case PGA_UNINITIALIZED_INT:
+               fprintf( fp,"*UNINITIALIZED*\n");
+               break;
+          default:
+               fprintf( fp,"%d\n",ctx->ga.tw);
+               break;
+          };
+          fprintf( fp,"    Bit Type Full Words            : ");
+          switch(ctx->ga.fw)
+          {
+          case PGA_UNINITIALIZED_INT:
+               fprintf( fp,"*UNINITIALIZED*\n");
+               break;
+          default:
+               fprintf( fp,"%d\n",ctx->ga.fw);
+               break;
+          };
+          fprintf( fp,"    Bit Type Extra Bits            : ");
+          switch(ctx->ga.eb)
+          {
+          case PGA_UNINITIALIZED_INT:
+               fprintf( fp,"*UNINITIALIZED*\n");
+               break;
+          default:
+               fprintf( fp,"%d\n",ctx->ga.eb);
+               break;
+          };*/
+          break;
+     case PGA_DATATYPE_INTEGER:
+          fprintf( fp,"Integer\n");
+          break;
+     case PGA_DATATYPE_REAL:
+          fprintf( fp,"Real\n");
+          break;
+     case PGA_DATATYPE_CHARACTER:
+          fprintf( fp,"Character\n");
+          break;
+     case PGA_DATATYPE_USER:
+          fprintf( fp,"User Defined\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.datatype);
+          break;
+     };
+
+     fprintf( fp,"    Optimization Direction         : ");
+     switch(ctx->ga.optdir)
+     {
+     case PGA_MAXIMIZE:
+          fprintf( fp,"Maximize\n");
+          break;
+     case PGA_MINIMIZE:
+          fprintf( fp,"Minimize\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.optdir);
+          break;
+     };
+
+     fprintf( fp,"    Population Size                : ");
+     switch(ctx->ga.PopSize)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.PopSize);
+          break;
+     };
+
+     fprintf( fp,"    String Length                  : ");
+     switch(ctx->ga.StringLen)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.StringLen);
+          break;
+     };
+     
+
+     fprintf( fp,"    Copy to Next Population        : ");
+     switch(ctx->ga.PopReplace)
+     {
+     case PGA_POPREPL_BEST:
+          fprintf( fp,"Best\n");
+          break;
+     case PGA_POPREPL_RANDOM_NOREP:
+          fprintf( fp,"Random without replacement\n");
+          break;
+     case PGA_POPREPL_RANDOM_REP:
+          fprintf( fp,"Random with replacement\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.PopReplace);
+          break;
+     };
+
+     
+     /*fprintf( fp,"    Stopping Rule (s)              :\n");
+     if ((ctx->ga.StoppingRule & PGA_STOP_MAXITER) == PGA_STOP_MAXITER)
+          fprintf(fp, "%50s", "Maximum iterations\n");
+     if ((ctx->ga.StoppingRule & PGA_STOP_NOCHANGE) == PGA_STOP_NOCHANGE)
+          fprintf(fp, "%49s", "No change in best\n");
+     if ((ctx->ga.StoppingRule & PGA_STOP_TOOSIMILAR) == PGA_STOP_TOOSIMILAR)
+          fprintf(fp, "%54s", "Population Homogeneity\n");
+     if (ctx->ga.StoppingRule == PGA_UNINITIALIZED_INT)
+          fprintf(fp, "%47s", "*UNINITIALIZED*\n");*/
+
+     fprintf( fp,"    Stop: Maximum Iterations       : ");
+     if ((ctx->ga.StoppingRule & PGA_STOP_MAXITER) == PGA_STOP_MAXITER)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+
+     fprintf( fp,"        Maximum Iterations         : ");
+     switch(ctx->ga.MaxIter)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.MaxIter);
+          break;
+     };
+
+
+     fprintf( fp,"    Stop: No Change                : ");
+     if ((ctx->ga.StoppingRule & PGA_STOP_NOCHANGE) == PGA_STOP_NOCHANGE)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+     
+     fprintf(fp, "        Max No Change Iterations   : ");
+     switch(ctx->ga.MaxNoChange)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->ga.MaxNoChange);
+          break;
+     }
+
+     fprintf( fp,"    Stop: Too Similar              : ");
+     if ((ctx->ga.StoppingRule & PGA_STOP_TOOSIMILAR) == PGA_STOP_TOOSIMILAR)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+         
+     fprintf(fp, " 	  Stop: Average Fitness			 : ");
+     if ((ctx->ga.StoppingRule & PGA_STOP_AV_FITNESS) == PGA_STOP_AV_FITNESS){
+         fprintf(fp,"On\n");
+         fprintf(fp,"The target average fitness is %lf and tolerance is %lf\n", ctx->ga.TgtFitnessVal, ctx->ga.FitnessTol);
+     }else{
+         fprintf(fp,"Off\n");
+     }         
+
+	 fprintf(fp, " 	  Stop: Best Fitness			 : ");
+     if ((ctx->ga.StoppingRule & PGA_STOP_BEST_FITNESS) == PGA_STOP_BEST_FITNESS){
+         fprintf(fp,"On\n");
+         fprintf(fp,"The target best fitness is %lf and tolerance is %lf\n", ctx->ga.TgtFitnessVal, ctx->ga.FitnessTol);
+     }else{
+         fprintf(fp,"Off\n");
+     }
+     
+     fprintf(fp, " 	  Stop: Fitness Variance			 : ");
+     if ((ctx->ga.StoppingRule & PGA_STOP_VARIANCE) == PGA_STOP_VARIANCE){
+         fprintf(fp,"On\n");
+         fprintf(fp,"The target variance is %lf and tolerance is %lf\n", ctx->ga.TgtFitnessVar, ctx->ga.VarTol);
+     }else{
+         fprintf(fp,"Off\n");
+     }
+     
+     fprintf(fp, " 	  Stop: Time Elapsed			 : ");
+     if ((ctx->ga.StoppingRule & PGA_STOP_TIMEELAPSED) == PGA_STOP_TIMEELAPSED){
+         fprintf(fp,"On\n");
+         fprintf(fp,"The max time for execution is %lf minutes\n", ctx->ga.TgtElapsedTime);
+     }else{
+         fprintf(fp,"Off\n");
+     }
+
+     fprintf(fp, "        Percent Similarity         : ");
+     switch(ctx->ga.MaxSimilarity)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->ga.MaxSimilarity);
+          break;
+     }
+
+     fprintf( fp,"    No. Strings Replaced per Iter  : ");
+     switch(ctx->ga.NumReplace)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.NumReplace);
+          break;
+     };
+
+
+     fprintf( fp,"    Mutate [And,Or] Crossover      : ");
+     switch(ctx->ga.MutateOnlyNoCross)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"Or\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"And\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.MutateOnlyNoCross);
+          break;
+     };
+
+     
+     fprintf( fp,"    Crossover Type                 : ");
+     switch(ctx->ga.CrossoverType)
+     {
+     case PGA_CROSSOVER_ONEPT:
+          fprintf( fp,"One Point\n");
+          break;
+     case PGA_CROSSOVER_TWOPT:
+          fprintf( fp,"Two Point\n");
+          break;
+     case PGA_CROSSOVER_UNIFORM:
+          fprintf( fp,"Uniform\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.CrossoverType);
+          break;
+     };
+
+     
+     fprintf( fp,"    Crossover Probability          : ");
+     if (ctx->ga.CrossoverProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.CrossoverProb);
+
+    
+     fprintf( fp,"    Uniform Crossover Prob.        : ");
+     if (ctx->ga.UniformCrossProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.UniformCrossProb);
+
+     
+     fprintf( fp,"    Mutation Type                  : ");
+     switch(ctx->ga.datatype)
+     {
+     case PGA_DATATYPE_BINARY:
+          fprintf( fp,"Binary\n");
+          break;
+     case PGA_DATATYPE_CHARACTER:
+          fprintf( fp,"Character\n");
+          break;
+     case PGA_DATATYPE_REAL:
+     case PGA_DATATYPE_INTEGER:
+         switch(ctx->ga.MutationType)
+         {
+         case PGA_MUTATION_CONSTANT:
+              fprintf( fp,"Constant\n");
+              break;
+         case PGA_MUTATION_RANGE:
+              fprintf( fp,"Range\n");
+              break;
+         case PGA_MUTATION_UNIFORM:
+              fprintf( fp,"Uniform\n");
+              break;
+         case PGA_MUTATION_GAUSSIAN:
+              fprintf( fp,"Gaussian\n");
+              break;
+         case PGA_MUTATION_PERMUTE:
+              fprintf( fp,"Permutation\n");
+              break;
+         case PGA_UNINITIALIZED_INT:
+              fprintf( fp,"*UNINITIALIZED*\n");
+              break;
+         default:
+              fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.MutationType);
+              break;
+         };
+     default:
+         break;
+     };
+
+     
+     fprintf( fp,"    Mutation Probability           : ");
+     if (ctx->ga.MutationProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.MutationProb);
+
+     
+     fprintf( fp,"    Real Mutation Constant         : ");
+     if (ctx->ga.MutationProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.MutateRealValue);
+
+
+     fprintf(fp, "    Integer Mutation Constant      : ");
+     switch(ctx->ga.MutateIntegerValue)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->ga.MutateIntegerValue);
+          break;
+     }
+
+     
+     fprintf( fp,"    Mutation Range Bounded         : ");
+     switch(ctx->ga.MutateBoundedFlag)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"On\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"Off\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.MutateBoundedFlag);
+          break;
+     };
+
+     
+     fprintf( fp,"    Selection Type                 : ");
+     switch(ctx->ga.SelectType)
+     {
+     case PGA_SELECT_PROPORTIONAL:
+          fprintf( fp,"Proportional\n");
+          break;
+     case PGA_SELECT_SUS:
+          fprintf( fp,"Stochastic Universal\n");
+          break;
+     case PGA_SELECT_TOURNAMENT:
+          fprintf( fp,"Binary Tournament\n");
+          break;
+     case PGA_SELECT_PTOURNAMENT:
+          fprintf( fp,"Probabilistic Binary Tournament\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.SelectType);
+          break;
+     };
+
+     
+     fprintf( fp,"    Tournament Selection Param     : ");
+     if (ctx->ga.PTournamentProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.PTournamentProb);
+    
+     
+
+     fprintf( fp,"    Restart Operator               : ");
+     switch(ctx->ga.restart)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"On\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"Off\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.restart);
+          break;
+     };
+
+     fprintf( fp,"    Restart Frequency              : ");
+     switch(ctx->ga.restartFreq)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.restartFreq);
+          break;
+     };
+
+     fprintf( fp,"    Restart Allele Change Prob     : ");
+     if (ctx->ga.restartAlleleProb == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.restartAlleleProb);
+
+     
+     fprintf( fp,"    Allow Duplicates               : ");
+     switch(ctx->ga.NoDuplicates)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"No\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"Yes\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.NoDuplicates);
+          break;
+     };
+
+
+     fprintf( fp,"    Fitness Type                   : ");
+     switch(ctx->ga.FitnessType)
+     {
+     case PGA_FITNESS_RAW:
+          fprintf( fp,"Raw\n");
+          break;
+     case PGA_FITNESS_NORMAL:
+          fprintf( fp,"Linear Normalization\n");
+          break;
+     case PGA_FITNESS_RANKING:
+          fprintf( fp,"Linear Ranking\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.FitnessType);
+          break;
+     };
+
+     
+     if ( ctx->ga.optdir == PGA_MINIMIZE )
+     {
+          fprintf( fp,"    Fitness Type(Minimization)     : ");
+          switch(ctx->ga.FitnessMinType) {
+          case PGA_FITNESSMIN_RECIPROCAL:
+               fprintf( fp,"Reciprocal\n");
+               break;
+          case PGA_FITNESSMIN_CMAX:
+               fprintf( fp,"CMax\n");
+               break;
+          case PGA_UNINITIALIZED_INT:
+               fprintf( fp,"*UNINITIALIZED*\n");
+               break;
+          default:
+               fprintf( fp,"!ERROR!  =(%d)?\n", ctx->ga.FitnessMinType);
+               break;
+          };
+     }
+
+     
+     fprintf( fp,"    Fitness Ranking Parameter      : ");
+     if (ctx->ga.FitnessRankMax == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.FitnessRankMax);
+     
+
+     fprintf( fp,"    Fitness CMAX Parameter         : ");
+     if (ctx->ga.FitnessCmaxValue == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->ga.FitnessCmaxValue);
+
+     
+     fprintf( fp,"Algorithm Parameters (Dynamic)\n");
+
+     
+     fprintf( fp,"    Current Generation             : ");
+     switch(ctx->ga.iter)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.iter);
+          break;
+     };
+
+     fprintf(fp, "    Num Iters With No Change       : ");
+     switch(ctx->ga.ItersOfSame)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->ga.ItersOfSame);
+          break;
+     }
+
+     fprintf(fp, "    Percent Similarity In Pop      : ");
+     switch(ctx->ga.PercentSame)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "?UNINITIALZED?\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->ga.PercentSame);
+          break;
+     }
+
+     fprintf( fp,"    Selection Index                : ");
+     switch(ctx->ga.SelectIndex)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->ga.SelectIndex);
+          break;
+     };
+
+     
+/* initialization */
+     fprintf( fp,"Initialization\n");
+
+     fprintf( fp,"    Random Initialization          : ");
+     switch(ctx->init.RandomInit)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"On\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"Off\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->init.RandomInit);
+          break;
+     };
+
+     fprintf( fp,"    Initialization Binary Prob     : ");
+     if (ctx->init.BinaryProbability == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%f\n",ctx->init.BinaryProbability);
+
+
+     fprintf( fp,"    Initialization Real            : ");
+     switch(ctx->init.RealType)
+     {
+     case PGA_RINIT_RANGE:
+          fprintf( fp,"Range\n");
+          break;
+     case PGA_RINIT_PERCENT:
+          fprintf( fp,"Percent Offset\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->init.RealType);
+          break;
+     };
+
+     fprintf( fp,"    Initialization Integer         : ");
+     switch(ctx->init.IntegerType)
+     {
+     case PGA_IINIT_RANGE:
+          fprintf( fp,"Range\n");
+          break;
+     case PGA_IINIT_PERMUTE:
+          fprintf( fp,"Permutation\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->init.IntegerType);
+          break;
+     };
+
+     fprintf( fp,"    Initialization Character       : ");
+     switch(ctx->init.CharacterType)
+     {
+     case PGA_CINIT_LOWER:
+          fprintf( fp,"Lower Case\n");
+          break;
+     case PGA_CINIT_UPPER:
+          fprintf( fp,"Upper Case\n");
+          break;
+     case PGA_CINIT_MIXED:
+          fprintf( fp,"Mixed Case\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->init.CharacterType);
+          break;
+     };
+     
+     fprintf( fp,"    Random Number Seed             : ");
+     switch(ctx->init.RandomSeed)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n", ctx->init.RandomSeed);
+          break;
+     };
+
+     PGADebugExited("PGAPrintContextVariable");
+
+
+/* par */
+    fprintf( fp,"Parallel\n");
+
+    fprintf( fp,"    MPI Library Used               : ");
+     switch(ctx->par.MPIStubLibrary)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"Sequential\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"Parallel\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->par.MPIStubLibrary);
+          break;
+     };
+
+
+     fprintf( fp,"    MPI Initialized by PGAPack     : ");
+     switch(ctx->par.MPIAlreadyInit)
+     {
+     case PGA_TRUE:
+          fprintf( fp,"Yes\n");
+          break;
+     case PGA_FALSE:
+          fprintf( fp,"No\n");
+          break;
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"!ERROR!  =(%d)?\n", ctx->par.MPIAlreadyInit);
+          break;
+     };
+
+     /*fprintf(fp, "    Number Islands                 : ");
+     switch(ctx->par.NumIslands)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->par.NumIslands);
+          break;
+     }
+
+     fprintf(fp, "    Number Demes                   : ");
+     switch(ctx->par.NumDemes)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf(fp, "*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf(fp, "%d\n", ctx->par.NumDemes);
+          break;
+     }*/
+
+     fprintf(fp, "    Default Communicator           : ");
+     if (ctx->par.DefaultComm == NULL) 
+	 fprintf(fp, "NULL\n");
+     else if (ctx->par.DefaultComm == MPI_COMM_WORLD)
+         fprintf(fp, "MPI_COMM_WORLD\n");
+     else
+	 fprintf(fp, "User Defined\n");
+ 
+
+
+/* report */
+     fprintf( fp,"Report\n");
+
+     fprintf( fp,"    Print Frequency                : ");
+     switch(ctx->rep.PrintFreq)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->rep.PrintFreq);
+          break;
+     };
+
+     fprintf( fp,"    Print Worst Evaluation         : ");
+     if ((ctx->rep.PrintOptions & PGA_REPORT_WORST) == PGA_REPORT_WORST)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+     fprintf( fp,"    Print Average Evaluation       : ");
+     if ((ctx->rep.PrintOptions & PGA_REPORT_AVERAGE) == PGA_REPORT_AVERAGE)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+     fprintf( fp,"    Print Offline Statistics       : ");
+     if ((ctx->rep.PrintOptions & PGA_REPORT_OFFLINE) == PGA_REPORT_OFFLINE)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+     fprintf( fp,"    Print Online Statistics        : ");
+     if ((ctx->rep.PrintOptions & PGA_REPORT_ONLINE) == PGA_REPORT_ONLINE)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+     fprintf( fp,"    Print Hamming Distance         : ");
+     if ((ctx->rep.PrintOptions & PGA_REPORT_HAMMING) == PGA_REPORT_HAMMING)
+         fprintf( fp,"On\n");
+     else
+         fprintf( fp,"Off\n");
+
+/* system */
+     fprintf( fp,"System\n");
+
+     fprintf( fp,"    Maximum Integer                : ");
+     switch(ctx->sys.PGAMaxInt)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->sys.PGAMaxInt);
+          break;
+     };
+
+     fprintf( fp,"    Minimum Integer                : ");
+     switch(ctx->sys.PGAMinInt)
+     {
+     case PGA_UNINITIALIZED_INT:
+          fprintf( fp,"*UNINITIALIZED*\n");
+          break;
+     default:
+          fprintf( fp,"%d\n",ctx->sys.PGAMinInt);
+          break;
+     };
+
+     fprintf( fp,"    Maximum Double                 : ");
+     if (ctx->sys.PGAMaxDouble == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%e\n",ctx->sys.PGAMaxDouble);
+
+     fprintf( fp,"    Minimum Double                 : ");
+     if (ctx->sys.PGAMinDouble == PGA_UNINITIALIZED_DOUBLE)
+          fprintf( fp,"*UNINITIALIZED*\n");
+     else
+          fprintf( fp,"%e\n",ctx->sys.PGAMinDouble);
+
+
+
+/* ops */
+    fprintf( fp,"Operations\n");
+
+    fprintf( fp,"    CreateString  function         : ");
+    if (ctx->cops.CreateString == NULL)
+	fprintf( fp,"NULL\n");
+    else if (ctx->cops.CreateString == PGABinaryCreateString)
+	fprintf( fp,"PGABinaryCreateString\n");
+    else if (ctx->cops.CreateString == PGAIntegerCreateString)
+	fprintf( fp,"PGAIntegerCreateString\n");
+    else if (ctx->cops.CreateString == PGARealCreateString)
+	fprintf( fp,"PGARealCreateString\n");
+    else if (ctx->cops.CreateString == PGACharacterCreateString)
+	fprintf( fp,"PGACharacterCreateString\n");
+    else
+	fprintf( fp,"C User Defined: %p\n",ctx->cops.CreateString);
+
+    
+    fprintf( fp,"    InitString    function         : ");
+    if (ctx->cops.InitString) {
+        if (ctx->cops.InitString == PGABinaryInitString)
+	    fprintf( fp,"PGABinaryInitString\n");
+        else if (ctx->cops.InitString == PGAIntegerInitString)
+            fprintf( fp,"PGAIntegerInitString\n");
+        else if (ctx->cops.InitString == PGARealInitString)
+    	    fprintf( fp,"PGARealInitString\n");
+        else if (ctx->cops.InitString == PGACharacterInitString)
+    	    fprintf( fp,"PGACharacterInitString\n");
+        else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.InitString);
+    } else {
+	if (ctx->fops.InitString) 
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.InitString);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+    
+
+    fprintf( fp,"    BuildDatatype function         : ");
+    if (ctx->cops.BuildDatatype == NULL)
+	fprintf( fp,"NULL\n");
+    else if (ctx->cops.BuildDatatype == PGABinaryBuildDatatype)
+	fprintf( fp,"PGABinaryBuildDatatype\n");
+    else if (ctx->cops.BuildDatatype == PGAIntegerBuildDatatype)
+	fprintf( fp,"PGAIntegerBuildDatatype\n");
+    else if (ctx->cops.BuildDatatype == PGARealBuildDatatype)
+	fprintf( fp,"PGARealBuildDatatype\n");
+    else if (ctx->cops.BuildDatatype == PGACharacterBuildDatatype)
+	fprintf( fp,"PGACharacterBuildDatatype\n");
+    else
+	fprintf( fp,"C User Defined: %p\n",ctx->cops.BuildDatatype);
+
+    
+    fprintf( fp,"    Mutation      function         : ");
+    if (ctx->cops.Mutation) {
+	if (ctx->cops.Mutation == PGABinaryMutation)
+	    fprintf( fp,"PGABinaryMutation\n");
+	else if (ctx->cops.Mutation == PGAIntegerMutation)
+	    fprintf( fp,"PGAIntegerMutation\n");
+	else if (ctx->cops.Mutation == PGARealMutation)
+	    fprintf( fp,"PGARealMutation\n");
+	else if (ctx->cops.Mutation == PGACharacterMutation)
+	    fprintf( fp,"PGACharacterMutation\n");
+	else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.Mutation);
+    } else {
+	if (ctx->fops.Mutation) 
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.Mutation);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+
+    
+    fprintf( fp,"    Crossover     function         : ");
+    if (ctx->cops.Crossover) {
+	if (ctx->cops.Crossover == PGABinaryOneptCrossover)
+	    fprintf( fp,"PGABinaryOneptCrossover\n");
+	else if (ctx->cops.Crossover == PGAIntegerOneptCrossover)
+	    fprintf( fp,"PGAIntegerOneptCrossover\n");
+	else if (ctx->cops.Crossover == PGARealOneptCrossover)
+	    fprintf( fp,"PGARealOneptCrossover\n");
+	else if (ctx->cops.Crossover == PGACharacterOneptCrossover)
+	    fprintf( fp,"PGACharacterOneptCrossover\n");
+	else if (ctx->cops.Crossover == PGABinaryTwoptCrossover)
+	    fprintf( fp,"PGABinaryTwoptCrossover\n");
+	else if (ctx->cops.Crossover == PGAIntegerTwoptCrossover)
+	    fprintf( fp,"PGAIntegerTwoptCrossover\n");
+	else if (ctx->cops.Crossover == PGARealTwoptCrossover)
+	    fprintf( fp,"PGARealTwoptCrossover\n");
+	else if (ctx->cops.Crossover == PGACharacterTwoptCrossover)
+	    fprintf( fp,"PGACharacterTwoptCrossover\n");
+	else if (ctx->cops.Crossover == PGABinaryUniformCrossover)
+	    fprintf( fp,"PGABinarytUniformCrossover\n");
+	else if (ctx->cops.Crossover == PGAIntegerUniformCrossover)
+	    fprintf( fp,"PGAIntegerUniformCrossover\n");
+	else if (ctx->cops.Crossover == PGARealUniformCrossover)
+	    fprintf( fp,"PGARealUniformCrossover\n");
+	else if (ctx->cops.Crossover == PGACharacterUniformCrossover)
+	    fprintf( fp,"PGACharacterUniformCrossover\n");
+	else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.Crossover);
+    } else {
+	if (ctx->fops.Crossover) 
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.Crossover);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+
+    
+    fprintf( fp,"    PrintString   function         : ");
+    if (ctx->cops.PrintString) {
+	if (ctx->cops.PrintString == PGABinaryPrintString)
+	    fprintf( fp,"PGABinaryPrintString\n");
+	else if (ctx->cops.PrintString == PGAIntegerPrintString)
+	    fprintf( fp,"PGAIntegerPrintString\n");
+	else if (ctx->cops.PrintString == PGARealPrintString)
+	    fprintf( fp,"PGARealPrintString\n");
+	else if (ctx->cops.PrintString == PGACharacterPrintString)
+	    fprintf( fp,"PGACharacterPrintString\n");
+	else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.PrintString);
+    } else {
+	if (ctx->fops.PrintString)
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.PrintString);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+    
+
+    fprintf( fp,"    CopyString    function         : ");
+    if (ctx->cops.CopyString) {
+	if (ctx->cops.CopyString == PGABinaryCopyString)
+	    fprintf( fp,"PGABinaryCopyString\n");
+	else if (ctx->cops.CopyString == PGAIntegerCopyString)
+	    fprintf( fp,"PGAIntegerCopyString\n");
+	else if (ctx->cops.CopyString == PGARealCopyString)
+	    fprintf( fp,"PGARealCopyString\n");
+	else if (ctx->cops.CopyString == PGACharacterCopyString)
+	    fprintf( fp,"PGACharacterCopyString\n");
+	else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.CopyString);
+    } else {
+	if (ctx->cops.CopyString)
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.CopyString);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+
+    
+    fprintf( fp,"    Duplicate     function         : ");
+    if (ctx->cops.Duplicate) {
+	if (ctx->cops.Duplicate == PGABinaryDuplicate)
+	    fprintf( fp,"PGABinaryDuplicate\n");
+	else if (ctx->cops.Duplicate == PGAIntegerDuplicate)
+	    fprintf( fp,"PGAIntegerDuplicate\n");
+	else if (ctx->cops.Duplicate == PGARealDuplicate)
+	    fprintf( fp,"PGARealDuplicate\n"); 
+	else if (ctx->cops.Duplicate == PGACharacterDuplicate)
+	    fprintf( fp,"PGACharacterDuplicate\n"); 
+	else
+	    fprintf( fp,"C User Defined: %p\n",ctx->cops.Duplicate);
+    } else {
+	if (ctx->fops.Duplicate)
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.Duplicate);
+	else
+	    fprintf( fp,"NULL\n");
+    }
+
+
+    fprintf( fp,"    Stopping      function         : ");
+    if (ctx->cops.StopCond)
+	fprintf( fp,"C User Defined: %p\n",ctx->cops.StopCond);
+    else
+	if (ctx->fops.StopCond)
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.StopCond);
+	else
+	    fprintf( fp,"PGACheckStoppingConditions\n");
+
+
+    fprintf( fp,"    End of Generation function     : ");
+    if (ctx->cops.EndOfGen)
+	fprintf( fp,"C User Defined: %p\n",ctx->cops.EndOfGen);
+    else
+	if (ctx->cops.EndOfGen)
+	    fprintf( fp,"Fortran User Defined: %p\n",ctx->fops.EndOfGen);
+	else
+	    fprintf( fp,"NULL\n");
+    
+
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/restart.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/restart.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/restart.c	(revision 6168)
@@ -0,0 +1,357 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: restart.c: This file contains the routines needed to handle
+*                      the restart operator, and restarting the GA.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+int *pgapack_user_cmd_restart = NULL;
+/*U****************************************************************************
+   PGARestart - reseeds a population from the best string
+
+   Category: Operators
+
+   Inputs:
+      val         - the probability of changing an allele when copying the
+                    best string to the new population
+      source_pop  - the source population
+      dest_pop    - symbolic constant of the destination population
+
+   Outputs:
+      dest_pop is modified by side-effect.
+
+   Example:
+      Perform an unspecified test to determine if the current evolution is
+      not evolving fast enough, and if so, restart the evolution.
+
+      PGAContext *ctx;	    PGAEvaluateMS(ctx, PGA_OLDPOP, f, comm);
+	    PGAFitness   (ctx, PGA_OLDPOP);
+	    }
+
+      :
+      if (StagnantEvolution()) {
+          PGARestart(ctx, PGA_OLDPOP, PGA_NEWPOP);
+          PGAEvaluate(ctx, PGA_NEWPOP, EvalFunc);
+          PGAUpdateGeneration(ctx);
+      }
+
+****************************************************************************U*/
+void PGARestart(PGAContext *ctx, int source_pop, int dest_pop)
+{
+    /* For integers and reals, the amount by which to change is set with
+       PGASetMutationIntegerValue and PGASetMutationRealValue, respectively.
+       For binary strings, the bits are complemented. */
+
+    int dest_p, old_mut_type, source_p;
+    double val;
+    
+    PGADebugEntered("PGARestart");
+    
+    printf("Restarting the algorithm . . . \n");
+    fflush(stdout);
+    source_p = PGAGetBestIndex(ctx, source_pop);
+    if (source_p != 0 || source_pop != dest_pop)
+	PGACopyIndividual(ctx, source_p, source_pop, 0, dest_pop);
+    PGASetEvaluationUpToDateFlag(ctx, 0, dest_pop, PGA_FALSE);
+    old_mut_type = PGAGetMutationType(ctx);
+    ctx->ga.MutationType = PGA_MUTATION_UNIFORM;
+    val = ctx->ga.restartAlleleProb;
+    
+    if (ctx->fops.Mutation) {
+	for (dest_p = 2; dest_p <= ctx->ga.PopSize; dest_p++) {
+	    PGACopyIndividual(ctx, 0, dest_pop, dest_p-1, dest_pop);
+	    (*ctx->fops.Mutation)(&ctx, &dest_p, &dest_pop, &val);
+	    PGASetEvaluationUpToDateFlag(ctx, dest_p-1, dest_pop, PGA_FALSE);
+	}
+    } else {
+	for (dest_p = 1; dest_p < ctx->ga.PopSize; dest_p++) {
+	    PGACopyIndividual(ctx, 0, dest_pop, dest_p, dest_pop);
+	    (*ctx->cops.Mutation)(ctx, dest_p, dest_pop, val);
+	    PGASetEvaluationUpToDateFlag(ctx, dest_p, dest_pop, PGA_FALSE);
+	}
+    }
+    ctx->ga.MutationType = old_mut_type;
+    
+    PGADebugExited("PGARestart");
+}
+
+/*U****************************************************************************
+  PGASetRestartFlag - specifies whether the algorithm should employ
+  the restart operator
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      val - boolean variable
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetRestartFlag(ctx, PGA_TRUE);
+
+****************************************************************************U*/
+void PGASetRestartFlag(PGAContext *ctx, int val)
+{
+    PGADebugEntered("PGASetRestartFlag");
+
+    switch (val)
+    {
+    case PGA_TRUE:
+    case PGA_FALSE:
+         ctx->ga.restart = val;
+         break;
+    default:
+         PGAError(ctx, "PGASetRestartFlag: Invalid value for restart:",
+                  PGA_FATAL, PGA_INT, (void *) &val);
+         break;
+    }
+
+    PGADebugExited("PGASetRestartFlag");
+}
+
+/*U****************************************************************************
+   PGAGetRestartFlag - returns whether the algorithm should employ the
+   restart operator
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      PGA_TRUE if restarting is enabled, otherwise PGA_FALSE.
+
+   Example:
+      PGAContext *ctx;
+      int val;
+      :
+      val = PGAGetRestartFlag(ctx);
+
+****************************************************************************U*/
+int PGAGetRestartFlag(PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRestartFlag");
+    PGAFailIfNotSetUp("PGAGetRestartFlag");
+
+    PGADebugExited("PGAGetRestartFlag");
+
+    return (ctx->ga.restart);
+}
+
+/*U****************************************************************************
+  PGASetRestartFrequencyValue - specifies the number of iterations of no
+  change in the best string after which the algorithm should restart
+
+  Category: Operators
+
+  Inputs:
+      ctx - context variable
+      numiter - number of changeless iterations
+
+  Outputs:
+      None
+
+  Example:
+      PGAContext *ctx;
+      :
+      PGASetRestartFrequencyValue(ctx, 100);
+
+****************************************************************************U*/
+void PGASetRestartFrequencyValue(PGAContext *ctx, int numiter)
+{
+    PGADebugEntered("PGASetRestartFrequencyValue");
+
+    if (numiter > 0)
+         ctx->ga.restartFreq = numiter;
+    else
+         PGAError(ctx, "PGASetRestartFrequencyValue: Invalid value for "
+                  "restart freqency:", PGA_FATAL, PGA_INT, (void *) &numiter);
+
+    PGADebugExited("PGASetRestartFrequencyValue");
+}
+
+/*U****************************************************************************
+  PGAGetRestartFrequencyValue - returns the number of iterations of no
+  change in the best string after which the algorithm should restart
+
+  Category: Operators
+
+  Inputs:
+      ctx     - context variable
+      numiter - number of changeless iterations
+
+  Outputs:
+      The number of iteration of no change required for a restart.
+
+  Example:
+      PGAContext *ctx;
+      :
+      numiter = PGAGetRestartFrequencyValue(ctx);
+
+****************************************************************************U*/
+int PGAGetRestartFrequencyValue(PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRestartFrequencyValue");
+    PGAFailIfNotSetUp("PGAGetRestartFrequencyValue");
+
+    PGADebugExited("PGAGetRestartFrequencyValue");
+
+    return (ctx->ga.restartFreq);
+}
+
+/*U****************************************************************************
+  PGASetRestartAlleleChangeProb - specifies the probability with which
+  an allele will be mutated during a restart
+
+  Category: Operators
+
+  Inputs:
+      ctx - context variable
+      prob - probability of mutation
+
+  Outputs:
+      None
+
+  Example:
+      PGAContext *ctx;
+      :
+      PGASetRestartAlleleChangeProb(ctx, 0.5);
+
+****************************************************************************U*/
+void PGASetRestartAlleleChangeProb(PGAContext *ctx, double prob)
+{
+    PGADebugEntered("PGASetRestartAlleleChangeProb");
+
+    if (prob >= 0.0 && prob <= 1.0)
+         ctx->ga.restartAlleleProb = prob;
+    else
+         PGAError(ctx, "PGASetRestartAlleleChangeProb: Invalid probability:",
+                  PGA_FATAL, PGA_DOUBLE, (void *) &prob);
+
+    PGADebugExited("PGASetRestartAlleleChangeProb");
+}
+
+/*U****************************************************************************
+  PGAGetRestartAlleleChangeProb - returns the probability with which
+  an allele will be mutated during a restart
+
+  Category: Operators
+
+  Inputs:
+      ctx - context variable
+
+  Outputs:
+      The probability of mutating an allele during a restart.
+
+  Example:
+      PGAContext *ctx;
+      :
+      prob = PGASetRestartAlleleChangeProb(ctx);
+
+****************************************************************************U*/
+double PGAGetRestartAlleleChangeProb(PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetRestartAlleleChangeProb");
+    PGAFailIfNotSetUp("PGAGetRestartAlleleChangeProb");
+
+    PGADebugExited("PGAGetRestartAlleleChangeProb");
+
+    return (ctx->ga.restartAlleleProb);
+}
+
+void PGASetRestartUserAction(int *userRestartCommand)
+{
+	pgapack_user_cmd_restart = userRestartCommand; 
+}
+
+int PGARestartCondition(PGAContext *ctx){
+	int ifRestart = PGA_FALSE;
+	if (  (pgapack_user_cmd_restart!=NULL && *pgapack_user_cmd_restart==PGA_TRUE)       ||
+			(
+				(ctx->ga.restart == PGA_TRUE) &&
+				(ctx->ga.ItersOfSame % ctx->ga.restartFreq == 0)
+			)
+	   ) {
+			ifRestart = PGA_TRUE;
+		 }
+		 
+	if ((ctx->ga.restart == PGA_TRUE) &&
+	(ctx->ga.ItersOfSame % ctx->ga.restartFreq == 0)) {
+		ctx->ga.ItersOfSame++;
+	}
+	if (pgapack_user_cmd_restart!=NULL){
+		*pgapack_user_cmd_restart = PGA_FALSE;
+	}
+	return ifRestart;
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/select.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/select.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/select.c	(revision 6168)
@@ -0,0 +1,502 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: select.c: This file contains the routines that have to do with
+*                     selection
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+  PGASelect - performs genetic algorithm selection using either the default
+  selection scheme or that specified with PGASetSelectType().  Valid selection
+  methods are proportional, stochastic universal, tournament, or probabilistic
+  tournament selection, PGA_SELECT_PROPORTIONAL, PGA_SELECT_SUS, 
+  PGA_SELECT_TOURNAMENT, and PGA_SELECT_PTOURNAMENT, respectively.  This 
+  function updates an internal array with the indices of members of popix 
+  selected for recombination.  These indices may be accessed with 
+  PGASelectNextIndex()
+
+  Category: Operators
+
+  Inputs:
+    ctx   - context variable
+    popix - symbolic constant of population to select from
+
+  Outputs:
+    An array used by PGASelectNextIndex() is created which contains the
+    population indices of the selected individuals.
+
+  Example:
+    PGAContext *ctx,
+    :
+    PGASelect(ctx, PGA_OLDPOP);
+
+****************************************************************************U*/
+void PGASelect( PGAContext *ctx, int popix )
+{
+    int i;                   /* not to intefere with dummy argument        */
+    int j;                   /* random number                              */
+    int temp;                /* for shuffling selected indices US          */
+    PGAIndividual *pop;      /* pointer to appropriate population          */
+
+    PGADebugEntered("PGASelect");
+
+    pop = PGAGetIndividual(ctx, 0, popix);
+
+    switch (ctx->ga.SelectType) {
+
+    case PGA_SELECT_PROPORTIONAL:  /* proportional selection             */
+        for (i=0; i<ctx->ga.PopSize; i++)
+            ctx->ga.selected[i] = PGASelectProportional( ctx, pop );
+        break;
+    case PGA_SELECT_SUS:           /* stochastic universal selection     */
+        PGASelectSUS( ctx, pop );
+        break;
+    case PGA_SELECT_TOURNAMENT:    /* tournament selection               */
+        for (i=0; i<ctx->ga.PopSize; i++)
+            ctx->ga.selected[i] = PGASelectTournament( ctx, pop );
+        break;
+    case PGA_SELECT_PTOURNAMENT:   /* probabilistic tournament selection */
+        for (i=0; i<ctx->ga.PopSize; i++)
+            ctx->ga.selected[i] = PGASelectPTournament( ctx, pop );
+        break;
+    default:
+        PGAError( ctx,
+                 "PGASelect: Invalid value of SelectType:",
+                  PGA_FATAL,
+                  PGA_INT,
+                  (void *) &(ctx->ga.SelectType) );
+        break;
+    }
+
+    /* randomize selected string locations */
+    for (i=0; i<ctx->ga.PopSize; i++) {
+        j          = PGARandomInterval(ctx, 0,ctx->ga.PopSize-1);
+        temp       = ctx->ga.selected[j];
+        ctx->ga.selected[j] = ctx->ga.selected[i];
+        ctx->ga.selected[i] = temp;
+    }
+
+    PGADebugExited("PGASelect");
+}
+
+/*U****************************************************************************
+  PGASelectNextIndex - returns the index of next individual in
+  internal array that contains the indices determined by PGASelect
+
+  Category: Operators
+
+  Inputs:
+    ctx   - context variable
+
+  Outputs:
+    A population index for the next selected creature.
+
+  Example:
+    PGAContext *ctx;
+    int l;
+    :
+    l = PGASelectNextIndex(ctx, PGA_OLDPOP);
+
+****************************************************************************U*/
+int PGASelectNextIndex ( PGAContext *ctx )
+{
+    PGADebugEntered("PGASelectNextIndex");
+
+    if (ctx->ga.SelectIndex < ctx->ga.PopSize) {
+	PGADebugExited("PGASelectNextIndex");
+        return(ctx->ga.selected[ctx->ga.SelectIndex++]);
+    }
+
+    /*  Oops.  We never found the index.  Fatal error.  (return is here
+     *  so that compilers will be quiet.)
+     */
+    PGAError( ctx, "PGASelectNextIndex: SelectIndex >= ctx->ga.PopSize",
+             PGA_FATAL, PGA_INT, (void *) &ctx->ga.SelectIndex );
+    return(0);
+}
+
+/*U****************************************************************************
+   PGASetSelectType - specify the type of selection to use. Valid choices
+   are PGA_SELECT_PROPORTIONAL, PGA_SELECT_SUS, PGA_SELECT_TOURNAMENT, and
+   PGA_SELECT_PTOURNAMENT for proportional, stochastic universal selection,
+   tournament, and probabilistic tournament selection, respectively.  The
+   default is PGA_SELECT_TOURNAMENT.
+
+   Category: Operators
+
+   Inputs:
+      ctx         - context variable
+      select_type - symbolic constant to specify selection type
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetSelectType(ctx, PGA_SELECT_SUS);
+
+****************************************************************************U*/
+void PGASetSelectType( PGAContext *ctx, int select_type)
+{
+
+    PGADebugEntered("PGASetSelectType");
+
+    switch (select_type) {
+        case PGA_SELECT_PROPORTIONAL:
+        case PGA_SELECT_SUS:
+        case PGA_SELECT_TOURNAMENT:
+        case PGA_SELECT_PTOURNAMENT:
+            ctx->ga.SelectType = select_type;
+            break;
+        default:
+            PGAError ( ctx, "PGASetSelectType: Invalid value of select_type:",
+                      PGA_FATAL, PGA_INT, (void *) &select_type);
+        break;
+    }
+
+    PGADebugExited("PGASetSelectType");
+}
+
+/*U***************************************************************************
+   PGAGetSelectType - Returns the type of selection selected
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns the integer corresponding to the symbolic constant
+      used to specify the type of selection specified
+
+   Example:
+      PGAContext *ctx;
+      int selecttype;
+      :
+      selecttype = PGAGetSelectType(ctx);
+      switch (selecttype) {
+      case PGA_SELECT_PROPORTIONAL:
+          printf("Selection Type = PGA_SELECT_PROPORTIONAL\n");
+          break;
+      case PGA_SELECT_SUS:
+          printf("Selection Type = PGA_SELECT_SUS\n");
+          break;
+      case PGA_SELECT_TOURNAMENT:
+          printf("Selection Type = PGA_SELECT_TOURNAMENT\n");
+          break;
+      case PGA_SELECT_PTOURNAMENT:
+          printf("Selection Type = PGA_SELECT_PTOURNAMENT\n");
+          break;
+      }
+
+***************************************************************************U*/
+int PGAGetSelectType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetSelectType");
+    PGAFailIfNotSetUp("PGAGetSelectType");
+
+    PGADebugExited("PGAGetSelectType");
+
+    return(ctx->ga.SelectType);
+}
+
+
+/*U****************************************************************************
+   PGASetPTournamentProb - Specifies the probability that the string that wins
+   a binary tournament will be selected.  This function will have no effect
+   unless PGA_SELECT_PTOURNAMENT was specified as the type of selection to
+   use with PGASetSelectType.  The default value is 0.6.
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+      p   - the probability of selecting the better string
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetPTournamentProb(ctx,0.8);
+
+****************************************************************************U*/
+void PGASetPTournamentProb(PGAContext *ctx, double ptournament_prob)
+{
+    PGADebugEntered("PGASetPTournamentProb");
+
+    ctx->ga.PTournamentProb = ptournament_prob;
+
+    PGADebugExited("PGASetPTournamentProb");
+}
+
+/*U***************************************************************************
+   PGAGetPTournamentProb - returns the probability of selecting the best
+   string in a probabilistic binary tournament
+
+   Category: Operators
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The probabilistic binary tournament selection probability
+
+   Example:
+      PGAContext *ctx;
+      double pt;
+      :
+      pt = PGAGetPTournamentProb(ctx);
+
+***************************************************************************U*/
+double PGAGetPTournamentProb(PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetPTournamentProb");
+    PGAFailIfNotSetUp("PGAGetPTournamentProb");
+
+    PGADebugExited("PGAGetPTournamentProb");
+
+     return ctx->ga.PTournamentProb;
+}
+
+
+/*I****************************************************************************
+  PGASelectProportional - selects a parent for the next generation using a
+  linear search through a (fitness) weighted ``roulette wheel''.  The
+  probability of selection is given by p_i = f_i/sum(i)f_i
+  Ref: D. Goldberg, Genetic Algorithms, pg.
+
+  Inputs:
+    ctx   - context variable
+    popix - symbolic constant of population to select from
+
+  Outputs:
+    index of the selected string
+
+  Example:
+    PGAContext *ctx,
+    int l;
+    :
+    l = PGASelectProportional(ctx, PGA_OLDPOP);
+
+****************************************************************************I*/
+int PGASelectProportional(PGAContext *ctx, PGAIndividual *pop)
+{
+    double sum, sumfitness, r;
+    int i;
+
+    PGADebugEntered("PGASelectProportional");
+
+    sumfitness = 0.0;
+    for (i=0; i<ctx->ga.PopSize; i++)
+        sumfitness += (pop+i)->fitness;
+
+    i = 0;
+    sum = (pop+i)->fitness;
+
+    r = sumfitness * PGARandom01(ctx, 0);
+    while(r > sum || i==ctx->ga.PopSize) {
+        i++;
+        sum += (pop+i)->fitness;
+    }
+
+    PGADebugExited("PGASelectProportional");
+
+    return(i);
+}
+
+/*I****************************************************************************
+  PGASelectSUS - A select routine using stochastic universal sampling
+  Ref:    J. Baker, Reducing Bias and Inefficiency in the Selection Algorithm.
+  Second GA conference, pp 14-21 (page 16)
+
+  Inputs:
+    ctx   - context variable
+    popix - symbolic constant of population to select from
+
+  Outputs:
+    the array ga.selected[] created via side effect.  I.e., this routine
+    creates the entire selected population with one call
+
+  Example:
+    PGAContext *ctx,
+    :
+    PGASelectSUS(ctx, PGA_OLDPOP);
+
+****************************************************************************I*/
+void PGASelectSUS( PGAContext *ctx, PGAIndividual *pop )
+{
+    int i;
+    int k;                          /* index to fill samples array    */
+    double davg;                    /* population average fitness     */
+    double sum;                     /* running sum of expected values */
+    double r;                       /* random number                  */
+
+    PGADebugEntered("PGASelectSUS");
+
+    /* fill the expected value array */
+    davg = 0.0;
+    for(i=0;i<ctx->ga.PopSize;i++)
+        davg += (pop+i)->fitness;
+    davg /=  (double) ctx->ga.PopSize;
+    for(i=0;i<ctx->ga.PopSize;i++)
+        ctx->scratch.dblscratch[i] = (pop+i)->fitness / davg;
+
+    /* select ctx->ga.PopSize as follows */
+    sum = 0;
+    k   = 0;
+    r   = PGARandom01(ctx, 0);
+    for(i=0;i<ctx->ga.PopSize;i++)
+        for( sum+=ctx->scratch.dblscratch[i]; sum>r; r++ )
+            ctx->ga.selected[k++] = i;
+
+    PGADebugExited("PGASelectSUS");
+}
+
+
+/*I****************************************************************************
+  PGASelectTournament - chooses two strings randomly and returns the one with
+  higher fitness
+  Ref:    D. Goldberg, Genetic Algorithms, pg. 121
+
+  Inputs:
+    ctx   - context variable
+    popix - symbolic constant of population to select from
+
+  Outputs:
+    index of the selected string
+
+  Example:
+    PGAContext *ctx,
+    int l;
+    :
+    l = PGASelectTournament(ctx, PGA_OLDPOP);
+
+****************************************************************************I*/
+int PGASelectTournament( PGAContext *ctx, PGAIndividual *pop )
+{
+    int m1, m2;
+
+    PGADebugEntered("PGASelectTournament");
+
+    m1 = PGARandomInterval(ctx, 0, ctx->ga.PopSize-1);
+    m2 = PGARandomInterval(ctx, 0, ctx->ga.PopSize-1);
+
+    PGADebugExited("PGASelectTournament");
+
+    return( ((pop+m1)->fitness > (pop+m2)->fitness) ? m1 : m2);
+}
+
+/*I****************************************************************************
+  PGASelectPTournament - chooses two strings randomly and returns the one with
+  higher fitness with a specified probability
+  Ref:    D. Goldberg, Genetic Algorithms, pg. 121
+
+  Inputs:
+    ctx   - context variable
+    popix - symbolic constant of population to select from
+
+  Outputs:
+    index of the selected string
+
+  Example:
+    PGAContext *ctx,
+    int l;
+    :
+    l = PGASelectPTournament(ctx, PGA_OLDPOP);
+
+****************************************************************************I*/
+int PGASelectPTournament( PGAContext *ctx, PGAIndividual *pop )
+{
+    int m1, m2;
+    int RetVal;
+
+    PGADebugEntered("PGASelectPTournament");
+
+    m1 = PGARandomInterval(ctx, 0, ctx->ga.PopSize-1);
+    m2 = PGARandomInterval(ctx, 0, ctx->ga.PopSize-1);
+
+    if ( (pop+m1)->fitness > (pop+m2)->fitness )
+        if ( (double) PGARandom01(ctx, 0) < ctx->ga.PTournamentProb )
+            RetVal = m1;
+        else
+            RetVal = m2;
+    else
+        if ( (double) PGARandom01(ctx, 0) < ctx->ga.PTournamentProb )
+            RetVal = m2;
+        else
+            RetVal = m1;
+
+    PGADebugExited("PGASelectPTournament");
+    return(RetVal);
+}
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/stop.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/stop.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/stop.c	(revision 6168)
@@ -0,0 +1,584 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: stop.c: This file contains routines related to the stopping
+*                   conditions for the GA.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+#include <time.h>
+
+int *pgapack_abortPtr = NULL;
+
+/*U****************************************************************************
+  PGADone - Returns PGA_TRUE if the stopping conditions have been met,
+  otherwise returns false.  Calls exactly one of the user defined C or
+  fortran or system (PGACheckStoppingConditions) stopping condition functions.
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+     comm - an MPI communicator
+
+  Outputs:
+     returns PGA_TRUE if at least one of the termination conditions has been
+     met.  Otherwise, returns PGA_FALSE
+
+  Example:
+    PGAContext *ctx;
+    :
+    PGADone(ctx, comm);
+
+****************************************************************************U*/
+int PGADone(PGAContext *ctx, MPI_Comm comm)
+{
+    int rank, size, done;
+
+    PGADebugEntered("PGADone");
+
+    rank = PGAGetRank(ctx, comm);
+    size = PGAGetNumProcs(ctx, comm);
+
+    if (rank == 0) {
+		if (ctx->fops.StopCond)
+		    done = (*ctx->fops.StopCond)(&ctx);
+		else if (ctx->cops.StopCond)
+		    done = (*ctx->cops.StopCond)(ctx);
+		else
+		    done = PGACheckStoppingConditions(ctx);
+    }
+
+    if (size > 1)
+	MPI_Bcast(&done, 1, MPI_INT, 0, comm);
+
+    PGADebugExited("PGADone");
+
+    return(done);
+}
+
+/*U****************************************************************************
+  PGACheckStoppingConditions - returns boolean to indicate if the PGAPack
+  termination conditions -- PGA_STOP_MAXITER, PGA_STOP_TOOSIMILAR, 
+  PGA_STOP_NOCHANGE -- have been met.
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+
+  Outputs:
+     returns PGA_TRUE if at least one of the termination conditions has been
+     met.  Otherwise, returns PGA_FALSE
+
+  Example:
+    PGAContext *ctx;
+    :
+    PGACheckStoppingConditions(ctx);
+
+****************************************************************************U*/
+int PGACheckStoppingConditions( PGAContext *ctx)
+{
+    int done = PGA_FALSE;
+    double diff, process_execution_time;
+    time_t endtime;
+
+    PGADebugEntered("PGACheckStoppingConditions");
+
+    if (((ctx->ga.StoppingRule & PGA_STOP_MAXITER) == PGA_STOP_MAXITER) &&
+	(ctx->ga.iter > ctx->ga.MaxIter))
+	done |= PGA_TRUE;
+    
+    if (((ctx->ga.StoppingRule & PGA_STOP_NOCHANGE) == PGA_STOP_NOCHANGE) &&
+	(ctx->ga.ItersOfSame >= ctx->ga.MaxNoChange))
+	done |= PGA_TRUE;
+	
+    if (((ctx->ga.StoppingRule & PGA_STOP_TOOSIMILAR) == PGA_STOP_TOOSIMILAR) &&
+	(ctx->ga.PercentSame >= ctx->ga.MaxSimilarity))
+	done |= PGA_TRUE;
+	
+	if(((ctx->ga.StoppingRule & PGA_STOP_AV_FITNESS) == PGA_STOP_AV_FITNESS)){
+		if(ctx->ga.TgtFitnessVal == PGA_UNINITIALIZED_DOUBLE){
+			PGAError(ctx,"Uninitialized Value 'Target Average'",PGA_FATAL, PGA_DOUBLE, (void *)&(ctx->ga.TgtFitnessVal));
+			done |= PGA_TRUE;
+		}else{
+			diff = ((ctx->ga.TgtFitnessVal - ctx->rep.Average)/(ctx->ga.TgtFitnessVal))*100;
+			if(fabs(diff) <= fabs((double)ctx->ga.FitnessTol)){
+				done |= PGA_TRUE;
+			}
+		}
+	}
+	
+	if(((ctx->ga.StoppingRule & PGA_STOP_BEST_FITNESS) == PGA_STOP_BEST_FITNESS)){
+		if(ctx->ga.TgtFitnessVal == PGA_UNINITIALIZED_DOUBLE){
+			PGAError(ctx,"Undefined Value 'Target Best Fitness'", PGA_FATAL, PGA_DOUBLE, (void *) &(ctx->ga.TgtFitnessVal));
+			done |= PGA_TRUE;
+		}else{
+			diff =(((double)ctx->ga.TgtFitnessVal -(double)ctx->rep.Best)/((double)ctx->ga.TgtFitnessVal))*100;
+			if(fabs(diff) <= fabs((double)ctx->ga.FitnessTol)){
+				done |= PGA_TRUE;
+			}
+		}
+	}
+	
+	if(((ctx->ga.StoppingRule & PGA_STOP_VARIANCE) == PGA_STOP_VARIANCE)){
+		if(ctx->ga.TgtFitnessVar == PGA_UNINITIALIZED_DOUBLE){
+			PGAError(ctx,"Undefined Value 'Target Fitness Variance'",PGA_FATAL,PGA_DOUBLE, (void *)&(ctx->ga.TgtFitnessVar));
+			done |= PGA_TRUE;
+		}else{
+			diff =(((double)ctx->ga.TgtFitnessVar -(double)ctx->rep.Variance)/((double)ctx->ga.TgtFitnessVar))*100;
+			if(fabs(diff) <= fabs((double)ctx->ga.VarTol)){
+				done |= PGA_TRUE;
+			}
+		}
+	}
+	
+	if(((ctx->ga.StoppingRule & PGA_STOP_TIMEELAPSED) == PGA_STOP_TIMEELAPSED)){
+		endtime = time(NULL);
+		process_execution_time = difftime(endtime, (time_t)ctx->rep.starttime);
+		if(ctx->ga.TgtElapsedTime == PGA_UNINITIALIZED_DOUBLE){
+			PGAError(ctx,"Undefined target time of execution",PGA_FATAL,PGA_DOUBLE,(void *)&(ctx->ga.TgtElapsedTime));
+		}
+		if(((double)process_execution_time/60) >= ((double)ctx->ga.TgtElapsedTime)){
+			done |= PGA_TRUE;
+		}
+	}
+
+    PGADebugExited("PGACheckStoppingConditions");
+    return(done);
+}
+
+/*U****************************************************************************
+   PGASetStoppingRuleType - specify a stopping criterion.  If called more than
+   once the different stopping criterion are ORed together.  Valid choices
+   are PGA_STOP_MAXITER, PGA_STOP_TOOSIMILAR, or PGA_STOP_NOCHANGE to
+   specify iteration limit reached, population too similar, or no change in
+   the best solution found in a given number of iterations, respectively.
+   The default is to stop when a maximum iteration limit is reached (by
+   default, 1000 iterations).
+
+   Category: Generation
+
+   Inputs:
+      ctx      - context variable
+      stoprule - symbolic constant to specify stopping rule
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetStoppingRuleType(ctx, PGA_STOP_TOOSIMILAR);
+
+****************************************************************************U*/
+void PGASetStoppingRuleType (PGAContext *ctx, int stoprule)
+{
+
+    PGADebugEntered("PGASetStoppingRuleType");
+    PGAFailIfSetUp("PGASetStoppingRuleType");
+
+    switch (stoprule) {
+	case PGA_STOP_MAXITER  :
+    case PGA_STOP_NOCHANGE :
+	case PGA_STOP_TOOSIMILAR :
+	case PGA_STOP_AV_FITNESS :
+	case PGA_STOP_BEST_FITNESS :
+	case PGA_STOP_VARIANCE :
+	case PGA_STOP_TIMEELAPSED :
+	    ctx->ga.StoppingRule |= stoprule;
+	    break;
+	default:
+	    PGAError( ctx,
+		     "PGASetStoppingRuleType: Invalid value of stoprule:",
+		     PGA_FATAL, PGA_INT, (void *) &stoprule );
+    }
+
+    PGADebugExited("PGASetStoppingRuleType");
+}
+
+/*U***************************************************************************
+   PGAGetStoppingRuleType - Returns a symbolic constant that defines the
+   termination criteria.
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      Returns an integer which is an ORed mask of the symbolic constants
+      used to specify the stopping rule(s).
+
+   Example:
+      PGAContext *ctx;
+      int stop;
+      :
+      stop = PGAGetStoppingRuleType(ctx);
+      if (stop & PGA_STOP_MAXITER)
+          printf("Stopping Rule = PGA_STOP_MAXITER\n");
+      if (stop & PGA_STOP_NOCHANGE)
+          printf("Stopping Rule = PGA_STOP_NOCHANGE\n");
+      if (stop & PGA_STOP_TOOSIMILAR)
+          printf("Stopping Rule = PGA_STOP_TOOSIMILAR\n");
+
+***************************************************************************U*/
+int PGAGetStoppingRuleType (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetStoppingRuleType");
+    PGAFailIfNotSetUp("PGAGetStoppingRuleType");
+
+    PGADebugExited("PGAGetStoppingRuleType");
+
+    return(ctx->ga.StoppingRule);
+}
+
+/*U****************************************************************************
+   PGASetMaxGAIterValue - specify the maximum number of iterations for the
+   stopping rule PGA_STOP_MAXITER (which, by itself, is the default stopping
+   rule and is always in effect).  The default value is 1000 iterations.
+
+   Category: Generation
+
+   Inputs:
+      ctx     - context variable
+      maxiter - the maximum number of GA iterations to run before stopping
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMaxGAIterValue(ctx,5000);
+
+****************************************************************************U*/
+void PGASetMaxGAIterValue(PGAContext *ctx, int maxiter)
+{
+
+    PGADebugEntered("PGASetMaxGAIterValue");
+    PGAFailIfSetUp("PGASetMaxGAIterValue");
+
+    if (maxiter < 1)
+	PGAError( ctx, "PGASetMaxGAIterValue: Invalid value of maxiter:",
+		 PGA_FATAL, PGA_INT, (void *) &maxiter );
+    else
+	ctx->ga.MaxIter = maxiter;
+    
+    PGADebugExited("PGASetMaxGAIterValue");
+}
+
+/*U***************************************************************************
+   PGAGetMaxGAIterValue - Returns the maximum number of iterations to run
+
+   Category: Generation
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The maximum number of iterations to run
+
+   Example:
+      PGAContext *ctx;
+      int maxiter;
+      :
+      maxiter = PGAGetMaxGAIterValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMaxGAIterValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMaxGAIterValue");
+    PGAFailIfNotSetUp("PGAGetMaxGAIterValue");
+
+    PGADebugExited("PGAGetMaxGAIterValue");
+
+    return(ctx->ga.MaxIter);
+}
+
+/*U****************************************************************************
+   PGASetMaxNoChangeValue - specifiy maximum number of iterations of no change
+   in the evaluation function value of the best string before stopping.  The
+   default value is 50.  The stopping rule PGA_STOP_NOCHANGE must have been
+   set by PGASetStoppingRuleType for this function call to have any effect.
+
+   Category: Generation
+
+   Inputs:
+      ctx     - context variable
+      maxiter - the maximum number of GA iterations allowed with no change
+                in the best evaluation function value.
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMaxGAIterValue(ctx,5000);
+
+****************************************************************************U*/
+void PGASetMaxNoChangeValue(PGAContext *ctx, int max_no_change)
+{
+    PGADebugEntered("PGASetMaxNoChangeValue");
+    PGAFailIfSetUp("PGASetMaxNoChangeValue");
+
+    if (max_no_change <= 0)
+	PGAError(ctx, "PGASetMaxNoChangeValue: max_no_change invalid",
+		 PGA_FATAL, PGA_INT, (void *)&max_no_change);
+    
+    ctx->ga.MaxNoChange = max_no_change;
+    
+    PGADebugExited("PGASetMaxNoChangeValue");
+}
+
+/*U****************************************************************************
+   PGASetMaxSimilarityValue - Specifiy the maximum percent of homogeneity of
+   the population before stopping.  The similarity measure is the same
+   evaluation function value.  The default value is 95 percent.  The stopping
+   rule PGA_STOP_TOOSIMILAR must have been set by PGASetStoppingRuleType for
+   this function call to have any effect.
+
+   Category: Generation
+
+   Inputs:
+      ctx            - context variable
+      max_similarity - the maximum percent of the population that can share
+                       the same evaluation function value
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetMaxSimilarityValue(ctx,99);
+
+****************************************************************************U*/
+void PGASetMaxSimilarityValue(PGAContext *ctx, int max_similarity)
+{
+    PGADebugEntered("PGASetMaxSimilarityValue");
+    PGAFailIfSetUp("PGASetMaxSimilarityValue");
+
+    if ((max_similarity <= 0) || (max_similarity > 100))
+        PGAError(ctx, "PGASetMaxSimilarityValue: max_similarity invalid",
+                 PGA_FATAL, PGA_INT, (void *) &max_similarity);
+    
+    ctx->ga.MaxSimilarity = max_similarity;
+
+    PGADebugExited("PGASetMaxSimilarityValue");
+}
+
+void PGASetAbortVar(int *abortPtr)
+{
+    pgapack_abortPtr = abortPtr;
+}
+
+
+/*U****************************************************************************
+   PGASetTgtFitnessVal 
+
+   Category: Initialization
+
+   Inputs:
+      ctx         - context variable
+      tgt_fitness_val - tgt fitness required for stopping. either target average or best fitness depending 
+      				on stoppage criteria.
+      				Requires setting fitness tolerance using PGASetFitnessTol in order to specify
+      				what % difeerence between current and target fitness is acceptable. 
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetTgtFitnessVal(ctx,0);
+
+****************************************************************************U*/
+void PGASetTgtFitnessVal(PGAContext *ctx, double tgt_fitness_val){
+	PGADebugEntered("PGASetTgtFitnessVal");
+    PGAFailIfSetUp("PGASetTgtFitnessVal");
+	ctx->ga.TgtFitnessVal = tgt_fitness_val;
+	PGADebugExited("PGASetTgtFitnessVal");
+}
+
+/*U****************************************************************************
+   PGASetFitnessTol 
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+      fitness_tol - tolerance between current pop fitness (avg or best, depending on stoppage criteria)
+      		target fitness set using PGASetTgtFitnessVal. once this tolerance is achieved, the GA can be stopped.
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetFitnessTol(ctx,0);
+
+****************************************************************************U*/
+void PGASetFitnessTol(PGAContext *ctx,double fitness_tol){
+	PGADebugEntered("PGASetFitnessTol");
+    PGAFailIfSetUp("PGASetFitnessTol");
+    if(fitness_tol < 0){
+    	PGAError(ctx,"Fitness tolerance invalid. Should be a positive quantity.\n",PGA_FATAL,PGA_DOUBLE,(void *)&fitness_tol);
+    }
+	ctx->ga.FitnessTol = fitness_tol;
+	PGADebugExited("PGASetFitnessTol");
+}
+
+
+/*U****************************************************************************
+   PGASetTgtFitnessVariance 
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+      tgt_fitness_var - tgt fitness variance required for stopping. 
+      				Requires setting fitness variance tolerance using PGASetVarTol in order to specify
+      				what % difeerence between current and target fitness variance is acceptable.
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetTgtFitnessVariance(ctx,0);
+
+****************************************************************************U*/
+void PGASetTgtFitnessVariance(PGAContext *ctx,double tgt_fitness_var){
+	PGADebugEntered("PGASetTgtFitnessVariance");
+    PGAFailIfSetUp("PGASetTgtFitnessVariance");
+    if(tgt_fitness_var < 0){
+    	PGAError(ctx,"Fitness variance invalid. Should be a positive quantity.\n",PGA_FATAL,PGA_DOUBLE,(void *)&tgt_fitness_var);
+    }
+	ctx->ga.TgtFitnessVar = tgt_fitness_var;
+	PGADebugExited("PGASetTgtFitnessVariance");
+}
+
+/*U****************************************************************************
+   PGASetVarTol 
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+      var_tol - tolerance between current pop fitness variance and target fitness set using PGASetTgtFitnessVariance. 
+      			Once this tolerance is achieved, the GA can be stopped.
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetVarTol(ctx,0);
+
+****************************************************************************U*/
+void PGASetVarTol(PGAContext *ctx,double var_tol){
+	PGADebugEntered("PGASetVarTol");
+    PGAFailIfSetUp("PGASetVarTol");
+    if(var_tol < 0){
+    	PGAError(ctx,"Variance Tolerance Invalid, should be positive quantity", PGA_FATAL, PGA_DOUBLE, (void *) &var_tol);
+    }
+	ctx->ga.VarTol = var_tol;
+	PGADebugExited("PGASetVarTol");
+}
+
+/*U****************************************************************************
+   PGASetTgtElapsedTime 
+
+   Category: Initialization
+
+   Inputs:
+      ctx - context variable
+      tgt_elapsed_time - stop the GA if stoppage criteria is PGA_STOP_TIMEELAPSED
+      					 and time between start of execution and end of current evaluation 
+      					 is equal to tgt_elapsed_time.
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      :
+      PGASetTgtElapsedTime(ctx,0);
+
+****************************************************************************U*/
+void PGASetTgtElapsedTime(PGAContext *ctx,double tgt_elapsed_time){
+	PGADebugEntered("PGASetTgtElapsedTime");
+    PGAFailIfSetUp("PGASetTgtElapsedTime");
+    if(tgt_elapsed_time < 0){
+    	PGAError(ctx,"Invalid Time of execution, cannot be a negative quantity", PGA_FATAL, PGA_DOUBLE, (void*) &tgt_elapsed_time);
+    }
+	ctx->ga.TgtElapsedTime = tgt_elapsed_time;
+	PGADebugExited("PGASetTgtElapsedTime");
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/system.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/system.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/system.c	(revision 6168)
@@ -0,0 +1,376 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: system.c: This file contains systme routines such as errors and
+*                     exits
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+char PGAProgram[100];    /* Holds argv[0] for PGAUsage() call */
+
+/*U****************************************************************************
+   PGAError - reports error messages.  Prints out the message supplied, and
+   the value of a piece of data.  Terminates if PGA_FATAL.
+
+   Category: System
+
+   Inputs:
+      ctx      - context variable
+      msg      - the error message to print
+      level    - PGA_WARNING or PGA_FATAL to indicate the error's severity
+      datatype - the data type of the following argument
+      data     - the address of the data to be written out, cast as a void
+                 pointer
+
+   Outputs:
+      None
+
+   Example:
+      PGAContext *ctx;
+      int         val;
+      :
+      PGAError(ctx, "Some Non Fatal Error: val = ", PGA_WARNING, PGA_INT,
+               (void *) &val);
+      :
+      PGAError(ctx, "A Fatal Error!", PGA_FATAL, PGA_VOID, NULL);
+
+****************************************************************************U*/
+void PGAError( PGAContext *ctx, char *msg,
+               int level, int datatype, void *data )
+{
+
+    PGADebugEntered("PGAError");
+
+    switch (datatype) {
+      case PGA_INT:
+	fprintf(stderr, "%s %d\n", msg, *(int *)    data);
+	break;
+      case PGA_DOUBLE:
+	fprintf(stderr, "%s %f\n", msg, *(double *) data);
+	break;
+      case PGA_CHAR:
+	fprintf(stderr, "%s %s\n", msg,  (char *)   data);
+	break;
+      case PGA_VOID:
+	fprintf(stderr, "%s\n", msg);
+	break;
+    }
+    if ( level == PGA_FATAL ) {
+	fprintf(stderr, "PGAError: Fatal\n");
+	PGADestroy(ctx);
+	exit(-1);
+    }
+    PGADebugExited("PGAError");
+}
+
+/*U****************************************************************************
+  PGADestroy - deallocate memory for this instance of PGAPack, if this context
+  initialized MPI, finalize MPI as well.
+
+  Category: Generation
+
+  Inputs:
+     ctx   - context variable
+
+  Outputs:
+     None
+
+  Example:
+    PGAContext *ctx;
+    :
+    PGADestroy(ctx);
+
+****************************************************************************U*/
+void PGADestroy (PGAContext *ctx)
+{
+    int i;
+
+    PGADebugEntered("PGADestroy");
+
+    /*  These are allocated by PGASetUp.  Free then only if PGASetUp
+     *  was called.
+     */
+    if (ctx->sys.SetUpCalled == PGA_TRUE) {
+      /*  Free the population...fly little birdies!  You're FREE!!!  */
+      for ( i = 0; i < ctx->ga.PopSize + 2; i++ ) {
+        free ( ctx->ga.oldpop[i].chrom );
+        free ( ctx->ga.newpop[i].chrom );
+      }
+      free ( ctx->ga.oldpop );
+      free ( ctx->ga.newpop );
+
+      /*  Free the scratch space.  */
+      free ( ctx->scratch.intscratch );
+      free ( ctx->scratch.dblscratch );
+      free ( ctx->ga.selected );
+      free ( ctx->ga.sorted );
+    }
+
+    /*  These are allocated by PGACreate  */
+    if (ctx->ga.datatype == PGA_DATATYPE_REAL)
+      {
+        free ( ctx->init.RealMax );
+        free ( ctx->init.RealMin );
+      }
+    else if (ctx->ga.datatype == PGA_DATATYPE_INTEGER)
+      {
+        free ( ctx->init.IntegerMax );
+        free ( ctx->init.IntegerMin );
+      }
+
+    /*  We want to finalize MPI only if it was not started for us (as
+     *  fortran would do) AND it is actually running.  It would not be
+     *  running if, for example, -pgahelp is specified on the command
+     *  line.
+     */
+    MPI_Initialized(&i);
+    if ((ctx->par.MPIAlreadyInit == PGA_FALSE) && i)
+      MPI_Finalize();
+
+    /*  We really should perform a PGADebugPrint here, but we can't;
+     *  we've already deallocated most of the stuff we need!!
+     */
+    free ( ctx );
+}
+
+/*U***************************************************************************
+   PGAGetMaxMachineIntValue - returns the largest integer of the current
+   machine
+
+   Category: System
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The largest integer of the given machine
+
+   Example:
+      PGAContext *ctx;
+      int intmax;
+      :
+      intmax = PGAGetMaxMachineIntValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMaxMachineIntValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMaxMachineIntValue");
+
+    PGADebugExited("PGAGetMaxMachineIntValue");
+
+    return(ctx->sys.PGAMaxInt);
+}
+
+/*U***************************************************************************
+   PGAGetMaxMachineIntValue - returns the smallest integer of the current
+   machine
+
+   Category: System
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The smallest integer of the given machine
+
+   Example:
+      PGAContext *ctx;
+      int intmin;
+      :
+      intmin = PGAGetMinMachineIntValue(ctx);
+
+***************************************************************************U*/
+int PGAGetMinMachineIntValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMinMachineIntValue");
+
+    PGADebugExited("PGAGetMinMachineIntValue");
+
+    return(ctx->sys.PGAMinInt);
+}
+
+/*U***************************************************************************
+   PGAGetMaxMachineDoubleValue - returns the largest double of the current
+   machine
+
+   Category: System
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The largest double of the given machine
+
+   Example:
+      PGAContext *ctx;
+      double big;
+      :
+      big = PGAGetMaxMachineDoubleValue(ctx);
+
+***************************************************************************U*/
+double PGAGetMaxMachineDoubleValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMaxMachineDoubleValue");
+
+    PGADebugExited("PGAGetMaxMachineDoubleValue");
+
+    return(ctx->sys.PGAMaxDouble);
+}
+
+/*U***************************************************************************
+   PGAGetMaxMachineDoubleValue - returns the smallest double of the current
+   machine
+
+   Category: System
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      The smallest double of the given machine
+
+   Example:
+      PGAContext *ctx;
+      double small;
+      :
+      small = PGAGetMinMachineDoubleValue(ctx);
+
+***************************************************************************U*/
+double PGAGetMinMachineDoubleValue (PGAContext *ctx)
+{
+    PGADebugEntered("PGAGetMinMachineDoubleValue");
+
+    PGADebugExited("PGAGetMinMachineDoubleValue");
+
+    return(ctx->sys.PGAMinDouble);
+}
+
+
+/*U****************************************************************************
+   PGAUsage - print list of available parameters and quit
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+     list of available parametersNone
+
+   Example:
+      PGAContext ctx;
+      :
+      PGAUsage(ctx);
+
+****************************************************************************U*/
+void PGAUsage( PGAContext *ctx )
+{
+    /*  Print the usage info out if MPI isn't running (thus, only one process
+     *  is probably running), or if we actually are the master.
+     */
+    if (!ctx->par.MPIAlreadyInit || (PGAGetRank(ctx, MPI_COMM_WORLD) == 0)) {
+	PGAPrintVersionNumber( ctx );
+	printf("PGAPack usage: %s [pga options]\n", PGAProgram);
+	printf("Valid PGAPack options:\n");
+	printf("\t-pgahelp          \tget this message\n");
+	printf("\t-pgahelp debug    \tlist of debug options\n");
+	printf("\t-pgadbg <option>  \tset debug option\n");
+	printf("\t-pgadebug <option>\tset debug option\n");
+	printf("\t-pgaversion       \tprint current PGAPack version number\n");
+	printf("\n");
+    }
+    PGADestroy(ctx);
+    exit(-1);
+}
+
+/*U****************************************************************************
+   PGAPrintVersionNumber - print PGAPack version number
+
+   Inputs:
+      ctx - context variable
+
+   Outputs:
+      PGAPack version number
+
+   Example:
+      PGAContext ctx;
+      :
+      PGAPrintVersionNumber(ctx);
+
+****************************************************************************U*/
+void PGAPrintVersionNumber( PGAContext *ctx )
+{
+    if (!ctx->par.MPIAlreadyInit || (PGAGetRank(ctx, MPI_COMM_WORLD) == 0)) {
+        printf("\nPGAPack version 1.0: (%s, %s)\n\n",
+	       (OPTIMIZE)                ? "Optimized"  : "Debug",
+#ifdef FAKE_MPI
+               "Sequential");
+#else
+               "Parallel");
+#endif               
+    }
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/user.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/user.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/user.c	(revision 6168)
@@ -0,0 +1,194 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: user.c: This file contains a function to set user functions.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include "pgapack.h"
+
+/*U****************************************************************************
+   PGASetUserFunction - specifies the name of a user-written function
+   call to provide a specific GA capability (e.g., crossover,
+   mutation, etc.).  This function MUST be used when using a non-native
+   datatype and must be called once for each of:
+       PGA_USERFUNCTION_CREATESTRING     -- String creation
+       PGA_USERFUNCTION_MUTATION         -- Mutation
+       PGA_USERFUNCTION_CROSSOVER        -- Crossover
+       PGA_USERFUNCTION_PRINTSTRING      -- String Output
+       PGA_USERFUNCTION_COPYSTRING       -- Duplication
+       PGA_USERFUNCTION_DUPLICATE        -- Duplicate Checking
+       PGA_USERFUNCTION_INITSTRING       -- Initialization
+       PGA_USERFUNCTION_BUILDDATATYPE    -- MPI Datatype creation
+       PGA_USERFUNCTION_STOPCOND         -- Stopping conditions
+       PGA_USERFUNCTION_ENDOFGEN         -- Auxiliary functions at the end
+                                            of each generation
+   It MAY be called when using a native datatype to replace the built-in
+   functions PGAPack has for that datatype (For example, if the Integer data
+   type is used for a traveling salesperson problem, the user may want to
+   provide their own custom crossover operator).  See the user guide and the
+   examples in the examples directory for more details.
+
+   Category: Generation
+
+   Inputs:
+      ctx      - context variable
+      constant - symbolic constant of the user function to set
+      f        - name of the function to use
+
+   Outputs:
+      None
+
+   Example:
+      void MyStringInit(PGAContext *, void *);
+      PGAContext *ctx;
+      :
+      PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING, MyStringInit);
+
+****************************************************************************U*/
+void PGASetUserFunction(PGAContext *ctx, int constant, void *f)
+{
+    PGADebugEntered("PGASetUserFunction");
+
+    if (f == NULL)
+	PGAError ( ctx, "PGASetUserFunction: Invalid function",
+		  PGA_FATAL, PGA_VOID, NULL);
+
+    switch (constant) {
+      case PGA_USERFUNCTION_CREATESTRING:
+	if (ctx->sys.UserFortran) 
+	    PGAError(ctx, "PGASetUserFunction: Cannot call "
+		     "PGA_USERFUNCTION_CREATESTRING from Fortran.",
+		     PGA_FATAL, PGA_VOID, NULL);
+	else
+	    ctx->cops.CreateString = (void(*)(PGAContext *, int, int, int))f;
+	break;
+      case PGA_USERFUNCTION_MUTATION:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.Mutation = (int(*)(void *, void *, void *, void *))f;
+	else
+	    ctx->cops.Mutation = (int(*)(PGAContext *, int, int, double))f;
+	break;
+      case PGA_USERFUNCTION_CROSSOVER:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.Crossover = (void(*)(void *, void *, void *, void *, void *, void *, void *))f;
+	else
+	    ctx->cops.Crossover =  (void(*)(PGAContext *, int, int, int, int, int, int))f;
+	break;
+      case PGA_USERFUNCTION_PRINTSTRING:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.PrintString = (void(*)(void *, void *, void *, void *))f;
+	else
+	    ctx->cops.PrintString =  (void(*)(PGAContext *, FILE *, int, int))f;
+	break;
+      case PGA_USERFUNCTION_COPYSTRING:
+	if (ctx->sys.UserFortran) 
+	    PGAError(ctx, "PGASetUserFunction: Cannot call "
+		     "PGA_USERFUNCTION_COPYSTRING from Fortran.",
+		     PGA_FATAL, PGA_VOID, NULL);
+	else
+	    ctx->cops.CopyString = (void(*)(PGAContext *, int, int, int, int))f;
+	break;
+      case PGA_USERFUNCTION_DUPLICATE:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.Duplicate = (int(*)(void *, void *, void *, void *, void *))f;
+	else
+	    ctx->cops.Duplicate = (int(*)(PGAContext *, int, int, int, int))f;
+	break;
+      case PGA_USERFUNCTION_INITSTRING:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.InitString = (void(*)(void *, void *, void *))f;
+	else
+	    ctx->cops.InitString = (void(*)(PGAContext *, int, int))f;
+	break;
+      case PGA_USERFUNCTION_BUILDDATATYPE:
+	if (ctx->sys.UserFortran) 
+	    PGAError(ctx, "PGASetUserFunction: Cannot call "
+		     "PGA_USERFUNCTION_BUILDDATATYPE from Fortran.",
+		     PGA_FATAL, PGA_VOID, NULL);
+	else
+	    ctx->cops.BuildDatatype = (MPI_Datatype(*)(PGAContext *, int, int))f;
+	break;
+      case PGA_USERFUNCTION_STOPCOND:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.StopCond = (int(*)(void *))f;
+	else
+	    ctx->cops.StopCond = (int(*)(PGAContext *))f;
+	break;
+      case PGA_USERFUNCTION_ENDOFGEN:
+	if (ctx->sys.UserFortran) 
+	    ctx->fops.EndOfGen = (void(*)(void *))f;
+	else
+	    ctx->cops.EndOfGen = (void(*)(PGAContext *))f;
+	break;
+      default:
+	PGAError(ctx, "PGASetUserFunction: Invalid constant:",
+		 PGA_FATAL, PGA_INT, (void *) &constant);
+	break;
+    }
+
+    PGADebugExited("PGASetUserFunction");
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/utility.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/utility.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/source/utility.c	(revision 6168)
@@ -0,0 +1,647 @@
+/*
+ *  
+ *  ********************************************************************* 
+ *  (C) COPYRIGHT 1995 UNIVERSITY OF CHICAGO 
+ *  *********************************************************************
+ *  
+ *  This software was authored by
+ *  
+ *  D. Levine
+ *  Mathematics and Computer Science Division Argonne National Laboratory
+ *  Argonne IL 60439
+ *  levine@mcs.anl.gov
+ *  (708) 252-6735
+ *  (708) 252-5986 (FAX)
+ *  
+ *  with programming assistance of participants in Argonne National 
+ *  Laboratory's SERS program.
+ *  
+ *  This program contains material protectable under copyright laws of the 
+ *  United States.  Permission is hereby granted to use it, reproduce it, 
+ *  to translate it into another language, and to redistribute it to 
+ *  others at no charge except a fee for transferring a copy, provided 
+ *  that you conspicuously and appropriately publish on each copy the 
+ *  University of Chicago's copyright notice, and the disclaimer of 
+ *  warranty and Government license included below.  Further, permission 
+ *  is hereby granted, subject to the same provisions, to modify a copy or 
+ *  copies or any portion of it, and to distribute to others at no charge 
+ *  materials containing or derived from the material.
+ *  
+ *  The developers of the software ask that you acknowledge its use in any 
+ *  document referencing work based on the  program, such as published 
+ *  research.  Also, they ask that you supply to Argonne National 
+ *  Laboratory a copy of any published research referencing work based on 
+ *  the software.
+ *  
+ *  Any entity desiring permission for further use must contact:
+ *  
+ *  J. Gleeson
+ *  Industrial Technology Development Center Argonne National Laboratory
+ *  Argonne IL 60439
+ *  gleesonj@smtplink.eid.anl.gov
+ *  (708) 252-6055
+ *  
+ *  ******************************************************************** 
+ *  DISCLAIMER
+ *  
+ *  THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY 
+ *  OF THE UNITED STATES GOVERNMENT.  NEITHER THE UNIVERSITY OF CHICAGO, 
+ *  THE UNITED STATES GOVERNMENT NOR ANY OF THEIR EMPLOYEES MAKE ANY 
+ *  WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR 
+ *  RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY 
+ *  INFORMATION OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT 
+ *  INFRINGE PRIVATELY OWNED RIGHTS.
+ *  
+ *  ********************************************************************** 
+ *  GOVERNMENT LICENSE
+ *  
+ *  The Government is granted for itself and others acting on its behalf a 
+ *  paid-up, non-exclusive, irrevocable worldwide license in this computer 
+ *  software to reproduce, prepare derivative works, and perform publicly 
+ *  and display publicly.
+ */
+
+/*****************************************************************************
+*     FILE: utility.c: This file contains routines that perform utility
+*                      functions.
+*
+*     Authors: David M. Levine, Philip L. Hallstrom, David M. Noelle,
+*              Brian P. Walenz
+*****************************************************************************/
+
+#include <pgapack.h>
+
+/*U****************************************************************************
+  PGAMean - calculates the mean value of an array of elements
+
+  Category: Utility
+
+  Inputs:
+    ctx  - context variable
+    a    - array to take the mean of
+    n    - number of elements in array a
+
+  Outputs:
+    The mean of the n elements in array a
+
+  Example:
+    PGAContext *ctx;
+    double a[100], mean;
+    :
+    mean = PGAMean(ctx, a, 100);
+
+****************************************************************************U*/
+double PGAMean ( PGAContext *ctx, double *a, int n)
+{
+    int i;
+    double result;
+
+    PGADebugEntered("PGAMean");
+
+    result = 0.;
+    for( i=n-1; i>=0; i-- )
+        result += a[i];
+
+    PGADebugExited("PGAMean");
+
+    return (result / (double) n );
+}
+
+
+/*U****************************************************************************
+  PGAStddev - calculates the standard deviation of an array of elements
+
+  Category: Utility
+
+  Inputs:
+    ctx  - context variable
+    a    - array to take the standard deviation of
+    n    - number of elements in array a
+    mean - the mean of the elements in array a
+
+  Outputs:
+    The standard deviation of the n elements in array a
+
+  Example:
+    PGAContext *ctx;
+    double a[100], mean, sigma;
+    :
+    mean  = PGAMean(ctx, a, 100);
+    sigma = PGAStddev(ctx, a, 100, mean);
+
+****************************************************************************U*/
+double PGAStddev ( PGAContext *ctx, double *a, int n, double mean)
+{
+    int i;
+    double result;
+
+    PGADebugEntered("PGAStddev");
+
+    result = 0;
+    for(i=n-1; i>=0; i--)
+        result += (a[i] - mean) * (a[i] - mean);
+    result  = sqrt(result/n);
+
+    PGADebugExited("PGAStddev");
+    return (result);
+}
+
+/*U****************************************************************************
+  PGARound - Mathematically round a double to an integer, using 0.5 as the
+  cutoff value.
+
+  Category: Utility
+
+  Inputs:
+     ctx - context variable
+     x - the number to be rounded
+
+  Outputs:
+     The rounded number.
+
+  Example:
+     PGAContext *ctx;
+     int y;
+     y = PGARound(ctx, -78.6);
+
+****************************************************************************U*/
+int PGARound(PGAContext *ctx, double x)
+{
+    double ipart, frac;
+
+    PGADebugEntered("PGARound");
+
+    frac = modf(x, &ipart);
+    if (frac <= -0.5)
+      ipart--;
+    else if (frac >= 0.5)
+      ipart++;
+
+    PGADebugExited("PGARound");
+
+    return ((int)ipart);
+}
+
+/*U****************************************************************************
+  PGACopyIndividual - copies string p1 in population pop1 to position p2 in
+  population pop2
+
+  Category: Generation
+
+  Inputs:
+     ctx  - context variable
+     p1   - string to copy
+     pop1 - symbolic constant of population containing string p1
+     p2   - string to copy p1 to
+     pop2 - symbolic constant of population containing string p2
+
+  Outputs:
+     String p2 is an exact copy of string p1.
+
+  Example:
+    PGAContext *ctx;
+    int i,j;
+    :
+    PGACopyIndividual(ctx, i, PGA_OLDPOP, j, PGA_NEWPOP);
+
+****************************************************************************U*/
+void PGACopyIndividual( PGAContext *ctx, int p1, int pop1, int p2, int pop2)
+{
+    PGAIndividual *source, *dest;
+
+    PGADebugEntered("PGACopyIndividual");
+
+    source = PGAGetIndividual ( ctx, p1, pop1 );
+    dest   = PGAGetIndividual ( ctx, p2, pop2 );
+
+    dest->evalfunc     = source->evalfunc;
+    dest->fitness      = source->fitness;
+    dest->evaluptodate = source->evaluptodate;
+
+    (*ctx->cops.CopyString)(ctx, p1, pop1, p2, pop2);
+
+    PGADebugExited("PGACopyIndividual");
+}
+
+/*U****************************************************************************
+  PGACheckSum - maps a string to a number to be used a verification check
+  PGA_DATATYPE_USER is not supported.
+
+  Category: Utility
+
+  Inputs:
+     ctx    - context variable
+     p      - string index
+     pop    - symbolic constant for the population
+
+  Outputs:
+     An integer representing the "value" of the string.
+
+  Example:
+     PGAContext *ctx;
+     int p, sum;
+     :
+     sum = PGACheckSum(ctx, p, PGA_NEWPOP);
+
+****************************************************************************U*/
+int PGACheckSum(PGAContext *ctx, int p, int pop)
+{
+    long stringlen, totalchars, charbits, i, j, checksum, totalbytes, out_bit;
+    unsigned char *message, specimen;
+
+    PGADebugEntered("PGACheckSum");
+
+    stringlen = PGAGetStringLength(ctx);
+    switch (ctx->ga.datatype) {
+      case PGA_DATATYPE_BINARY:
+        totalbytes = ctx->ga.tw * sizeof(PGABinary);
+        break;
+      case PGA_DATATYPE_INTEGER:
+        totalbytes = stringlen * sizeof(PGAInteger);
+        break;
+      case PGA_DATATYPE_REAL:
+        totalbytes = stringlen * sizeof(PGAReal);
+        break;
+      case PGA_DATATYPE_CHARACTER:
+        totalbytes = stringlen * sizeof(PGACharacter);
+        break;
+      default:
+        totalbytes = 0;
+        PGAError(ctx, "PGACheckSum: User datatype checksum may be invalid.",
+                 PGA_WARNING, PGA_VOID, NULL);
+        break;
+      }
+
+    message = (unsigned char *)PGAGetIndividual(ctx, p, pop)->chrom;
+    totalchars = totalbytes / sizeof(unsigned char);
+    charbits = sizeof(unsigned char) * 8;
+    checksum = 0;
+    for (i = 0; i < totalchars; i++) {
+      specimen = *(message + i);
+      for (j = 0; j < charbits; j++) {
+        out_bit = (checksum & 0x80000000) == 1;
+        checksum = (checksum << 1) + ((specimen & 0x80) == 0x80);
+        if (out_bit)
+          checksum ^= 0x04c11db7;
+        specimen <<= 1;
+      }
+    }
+
+    PGADebugExited("PGACheckSum");
+
+    return (checksum);
+}
+
+/*U***************************************************************************
+  PGAGetWorstIndex - returns the index of the string with the worst
+  evaluation function value in population pop
+
+  Category: Utility
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population to find the worst string in
+
+  Outputs:
+     Index of the string with the worst evaluation function value
+
+  Example:
+     PGAContext *ctx;
+     int worst;
+     :
+     worst = PGAGetWorstIndex(ctx,PGA_OLDPOP);
+
+***************************************************************************U*/
+int PGAGetWorstIndex(PGAContext *ctx, int pop)
+{
+    int     p, worst_indx = 0;
+    double  eval, worst_eval;
+
+    PGADebugEntered("PGAGetWorstIndex");
+
+    for (p = 0; p < ctx->ga.PopSize; p++)
+	if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop))
+	    PGAError(ctx, "PGAGetWorstIndex: Evaluate function not up to "
+		     "date:", PGA_FATAL, PGA_INT, (void *) &p);
+
+    worst_eval = PGAGetEvaluation(ctx, 0, pop);
+    switch (PGAGetOptDirFlag(ctx)) {
+    case PGA_MAXIMIZE:
+	for (p = 1; p < ctx->ga.PopSize; p++) {
+	    eval = PGAGetEvaluation(ctx, p, pop);
+	    if (eval < worst_eval) {
+		worst_indx = p;
+		worst_eval = eval;
+	    }
+	}
+	break;
+
+    case PGA_MINIMIZE:
+	for (p = 1; p < ctx->ga.PopSize; p++) {
+	    eval = PGAGetEvaluation(ctx, p, pop);
+	    if (eval > worst_eval) {
+		worst_indx = p;
+		worst_eval = eval;
+	    }
+	}
+	break;    
+    }
+
+    PGADebugExited("PGAGetWorstIndex");
+
+    return (worst_indx);
+}
+
+/*U***************************************************************************
+  PGAGetBestIndex - returns the index of the string with the best evaluation
+  function value in population pop
+
+  Category: Utility
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population to find the best string in
+
+  Outputs:
+     Index of the string with the best evaluation function value
+
+  Example:
+     PGAContext *ctx;
+     int best;
+     :
+     best = PGAGetBestIndex(ctx,PGA_OLDPOP);
+
+***************************************************************************U*/
+int PGAGetBestIndex(PGAContext *ctx, int pop)
+{
+     int     p, Best_indx = 0;
+     double  eval, Best_eval;
+
+    PGADebugEntered("PGAGetBestIndex");
+     
+     for (p = 0; p < ctx->ga.PopSize; p++)
+	 if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop))
+	     PGAError(ctx, "PGAGetBestIndex: Evaluate function not up to "
+		      "date:", PGA_FATAL, PGA_INT, (void *) &p);
+     
+     Best_eval = PGAGetEvaluation(ctx, 0, pop);
+
+     switch (PGAGetOptDirFlag(ctx)) {
+     case PGA_MAXIMIZE :
+	 for (p = 1; p < ctx->ga.PopSize; p++) {
+	     eval = PGAGetEvaluation(ctx, p, pop);
+	     if (eval > Best_eval) {
+		 Best_indx = p;
+		 Best_eval = eval;
+	     }
+	 }
+	 break;
+     case PGA_MINIMIZE :
+	 for (p = 1; p < ctx->ga.PopSize; p++) {
+	     eval = PGAGetEvaluation(ctx, p, pop);
+	     if (eval < Best_eval) {
+		 Best_indx = p;
+		 Best_eval = eval;
+	     }
+	 }
+	 break;
+     }
+     
+    PGADebugExited("PGAGetBestIndex");
+
+     return (Best_indx);
+}
+
+
+/*I****************************************************************************
+  PGAGetIndividual - translate string index and population symbolic constant
+  into pointer to an individual
+
+  Inputs:
+     ctx - context variable
+     p   - string index
+     pop - symbolic constant of the population the string is in
+
+  Outputs:
+     Address of the PGAIndividual structure for string p in population pop
+
+  Example:
+    PGAIndividual *source;
+    PGAContext *ctx;
+    int p;
+    :
+    source = PGAGetIndividual ( ctx, p, PGA_NEWPOP );
+
+****************************************************************************I*/
+PGAIndividual *PGAGetIndividual ( PGAContext *ctx, int p, int pop)
+{
+    PGAIndividual *ind;
+
+    PGADebugEntered("PGAGetIndividual");
+
+#ifdef OPTIMIZE
+    ind = (pop == PGA_OLDPOP) ? ctx->ga.oldpop : ctx->ga.newpop;
+
+    if (p>=0)
+      ind += p;
+    else
+      ind += (p == PGA_TEMP1) ? ctx->ga.PopSize : ctx->ga.PopSize+1;
+#else
+    if (pop == PGA_OLDPOP)
+      ind = ctx->ga.oldpop;
+    else
+      if (pop == PGA_NEWPOP)
+	ind = ctx->ga.newpop;
+      else
+        PGAError(ctx, "PGAGetIndividual: Invalid value of pop:",
+		 PGA_FATAL, PGA_INT, (void *) &pop );
+
+    if (p>0 && p<ctx->ga.PopSize)
+      ind += p;
+    else
+      if (p == PGA_TEMP1)
+	ind += ctx->ga.PopSize;
+      else
+	if (p == PGA_TEMP2)
+	  ind += ctx->ga.PopSize + 1;
+	else
+	  PGAError(ctx, "PGAGetIndividual: Invalid value of p:",
+		   PGA_FATAL, PGA_INT, (void *) &p );
+#endif
+
+    PGADebugExited("PGAGetIndividual");
+
+    return(ind);
+}
+
+
+/*I****************************************************************************
+   PGAUpdateAverage - Updates the average and variance fitness statistic for reporting.
+
+   Inputs:
+       ctx - context variable
+       pop - symbolic constant of the population
+
+   Outputs:
+
+   Example:
+
+**************************************************************************I*/
+void PGAUpdateAverage(PGAContext *ctx, int pop)
+{
+    double ThisGensTotal = 0;
+    double ThisGensIndivSquareTotal = 0;
+    double fitness, average, variance;
+    int p;
+
+    PGADebugEntered("PGAUpdateAverage");
+    
+    for (p = 0; p < ctx->ga.PopSize; p++)
+	if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop))
+	    PGAError(ctx, "PGAUpdateOnline: Evaluate function not up to "
+		     "date:", PGA_FATAL, PGA_INT, (void *) &p);
+
+    for (p = 0; p < ctx->ga.PopSize; p++){
+ 		fitness = PGAGetEvaluation(ctx, p, pop);   	
+		ThisGensTotal += fitness;
+		ThisGensIndivSquareTotal += fitness*fitness;
+    }
+    average = ThisGensTotal / (double)ctx->ga.PopSize;
+    ctx->rep.Average = average;
+    variance = ThisGensIndivSquareTotal / (double)ctx->ga.PopSize;
+    ctx->rep.Variance = (ThisGensIndivSquareTotal - average*average);
+    
+    PGADebugExited("PGAUpdateAverage");
+}
+
+
+/*I****************************************************************************
+  PGAUpdateOnline - Updates the online value based on the results in
+  the new generation
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population whose statistics to use
+
+  Outputs:
+     Updates an internal field in the context variable
+
+  Example:
+     PGAContext *ctx;
+     :
+     PGAUpdateOnline(ctx,PGA_NEWPOP);
+
+**************************************************************************I*/
+void PGAUpdateOnline(PGAContext *ctx, int pop)
+{
+     double ThisGensTotal = 0;
+     int p;
+
+    PGADebugEntered("PGAUpdateOnline");
+
+     for (p = 0; p < ctx->ga.PopSize; p++)
+          if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop))
+               PGAError(ctx, "PGAUpdateOnline: Evaluate function not up to "
+                        "date:", PGA_FATAL, PGA_INT, (void *) &p);
+
+     for (p = 0; p < ctx->ga.PopSize; p++)
+          ThisGensTotal += PGAGetEvaluation(ctx, p, pop);
+
+     PGADebugPrint(ctx, PGA_DEBUG_PRINTVAR, "PGAUpdateOnline",
+                   "ThisGensTotal = ", PGA_DOUBLE, (void *) &ThisGensTotal);
+
+     ctx->rep.Online = (ctx->rep.Online * ctx->ga.PopSize * (ctx->ga.iter - 1)
+                        + ThisGensTotal) / ctx->ga.iter / ctx->ga.PopSize;
+
+    PGADebugExited("PGAUpdateOnline");
+
+}
+
+/*I****************************************************************************
+  PGAUpdateOffline - Updates the offline value based on the results in
+  the new generation
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population whose statistics to use
+
+  Outputs:
+     Updates an internal field in the context variable
+
+  Example:
+     PGAContext *ctx;
+     :
+     PGAUpdateOffline(ctx,PGA_NEWPOP);
+
+**************************************************************************I*/
+void PGAUpdateOffline(PGAContext *ctx, int pop)
+{
+     int p;
+
+    PGADebugEntered("PGAUpdateOffline");
+
+     for (p = 0; p < ctx->ga.PopSize; p++)
+          if (!PGAGetEvaluationUpToDateFlag(ctx, p, pop))
+               PGAError(ctx, "PGAUpdateOffline: Evaluate function not up to "
+                        "date:", PGA_FATAL, PGA_INT, (void *) &p);
+
+     p = PGAGetBestIndex(ctx, pop);
+
+     ctx->rep.Offline = ((ctx->ga.iter - 1) * ctx->rep.Offline +
+                         PGAGetEvaluation(ctx, p, pop)) / ctx->ga.iter;
+
+    PGADebugExited("PGAUpdateOffline");
+}
+
+/*I****************************************************************************
+  PGAComputeSimilarity - computes the percentage of the population that have
+  the same evaluation function
+
+  Inputs:
+     ctx - context variable
+     pop - symbolic constant of the population whose statistics to use
+
+  Outputs:
+     returns a count of the number of  population members that have the same
+     evaluation function value
+
+  Example:
+     PGAContext *ctx;
+     :
+     PGAComputeSimilarity(ctx,PGA_NEWPOP);
+
+**************************************************************************I*/
+int PGAComputeSimilarity(PGAContext *ctx, PGAIndividual *pop)
+{
+     int max = 0, curr = 1, i;
+     double prev;
+
+    PGADebugEntered("PGAComputeSimilarity");
+
+     for(i=0; i < ctx->ga.PopSize; i++)
+     {
+          ctx->scratch.dblscratch[i] = (pop + i)->evalfunc;
+          ctx->scratch.intscratch[i] = i;
+     }
+
+     PGADblHeapSort(ctx, ctx->scratch.dblscratch, ctx->scratch.intscratch,
+                    ctx->ga.PopSize);
+
+     prev = ctx->scratch.dblscratch[0];
+
+     for(i = 1; i < ctx->ga.PopSize; i++)
+     {
+          if (ctx->scratch.dblscratch[i] == prev)
+               curr++;
+          else
+          {
+               if (curr > max)
+                    max = curr;
+               curr = 1;
+          }
+     }
+
+    PGADebugExited("PGAComputeSimilarity");
+
+     return(100 * max / ctx->ga.PopSize);
+}
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/Makefile.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/Makefile.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/Makefile.in	(revision 6168)
@@ -0,0 +1,27 @@
+CC          = @CC@
+FC          = @FC@
+PRECFLAGS   = @CFLAGS@
+PREFFLAGS   = @FFLAGS@
+CPPFLAGS    = @CPPFLAGS@
+RM          = @RM@
+LDFLAGS     = @LDFLAGS@
+SHELL       = @SHELL@
+
+#    "$@" expands to the target; "$?" expands to the dependency list
+CFLAGS      = -o $@ $? $(PRECFLAGS)
+FFLAGS      = -o $@ $? $(PREFFLAGS)
+
+LINK.c      = @echo "  Compiling $@" ; $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+LINK.f      = @if test -n "$(FC)"; \
+                  then echo "  Compiling $@" ; $(FC) $(FFLAGS) $(LDFLAGS); \
+              else \
+                  echo "$@: Fortran compiler unavailable"; fi
+
+default:
+	@make instverf 
+
+instverf: instverf.c
+	$(LINK.c)
+
+clean: 
+	@$(RM) instverf instverf.o
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/README	(revision 6168)
@@ -0,0 +1,45 @@
+This is the test directory README.
+
+instverf:
+--------
+
+A simple program to test the accuracy of an installation.  It runs five
+distinct genetic algorithms, and stores the results from each.  After all
+five are run, it will compare the computed results to those known to be
+correct, stored on disk as "instverf.data".  If any errors are found, the
+problem number is reported.
+
+The problems tested are
+	0:	Binary datatype
+	1:	Integer datatype
+	2:	Character datatype
+	3:	Real datatype
+	4:	Binary datatype using PGAGetRealFrom*
+
+
+SanityChecks:
+------------
+
+Contains several programs designed to test the sanity of PGAPack.  Under
+normal circumstances, they should not be needed.  ST_* will call most
+every PGAPack function.  PT_* will test the parallel code -- it must
+be run with at least three processors!
+This directory contains several programs that exist only to test the
+sanity of PGAPack.  They are very useful for testing the fortran to C
+interface, and that sending and receiving strings work.
+
+ST_c.c and ST_f.f simply call (most) every function in PGAPack.  They
+also run several GA's which do nothing other than use every type of
+crossover and mutation for each native datatype.
+
+PT_c.c and PT_f.f test high-level stuff.  It tests (not in this order) if
+sending/receiving of strings works, PGARun, PGARunGM, PGARunIM and PGARunNM
+(the last two aren't implemented yet, though), and a user defined
+run routine.  A real version of MPI _MUST_ be used for PT_c and PT_f.
+
+instverf.c will run several GA's, one for each native datatype, and check
+the output computed versus that stored on disk.  If any differences are
+found, it will give a warning.
+
+These programs are the development testing suite.
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/instverf.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/instverf.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/instverf.c	(revision 6168)
@@ -0,0 +1,461 @@
+/*  Example program that shows how to run more than one GA in one
+ *  executable, _AND_ verifies the accuracy of installation.
+ *
+ *  We will run five distinct GA's, each using a different datatype, and,
+ *  thus, a different evaluation function.  The correct output of these GA's
+ *  is in instverf.data, which we read and compare after all GA's are done.
+ *
+ *  The correct solution for #4 and #5 is somewhere around 4.49339389176 for
+ *  the genes, and an evaluation value of around -6.951476096.
+ *
+ *  Author:  Brian P. Walenz
+ */
+#include <pgapack.h>
+
+
+double maxbit(PGAContext *, int, int);
+double ordering(PGAContext *, int, int);
+double name(PGAContext *, int, int);
+double function(PGAContext *, int, int);
+double functionb(PGAContext *, int, int);
+
+/*  The user defined functions.
+ *
+ *  O_* --> for the Ordering problem (integer), problem 2
+ *  N_* --> for the Name problem (character), problem 3
+ *  R_* --> for the real problem, problem 4
+ *  Rb_* -> for the real problem using the binary datatype, problem 5
+ */
+void EOG(PGAContext *);
+int  O_Mutate(PGAContext *, int, int, double);
+void O_Crossover(PGAContext *, int, int, int, int, int, int);
+int  N_Mutate(PGAContext *, int, int, double);
+int  N_StopCond(PGAContext *);
+void R_Init(PGAContext *, int, int);
+void Rb_Init(PGAContext *, int, int);
+void Rb_PrintString(PGAContext *, FILE *, int, int);
+
+char      String[65] = 
+          "THEQUICKBROWNFOXJUMPESOVERTHELAZYDOGWHILETHEOLDGOOSELOOKSPUZZLED";
+double    Results[5][1001];
+int       ResultsIndex;
+
+/*  How often to print, and the size (in bits) of each number in a binary
+ *  string (used by problem 5)
+ */
+#define   PRINTFREQ  100
+#define   RBS        24
+
+void main(int argc, char **argv) {
+    PGAContext     *ctx;
+    int             i, rank;
+    FILE           *ResultsFile;
+    double          R[5];
+    int             E[5];
+
+
+    /*  Even though we aren't doing I/O, we MUST initialize MPI ourselves.
+     *  If we don't, the first call to PGADestroy will finalize MPI, and
+     *  the MPI standard does not allow any MPI calls after that (even
+     *  if it is MPI_Init())!
+     */
+    MPI_Init(&argc, &argv);
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    
+    /*  All examples use a common custom end of generation function to 
+     *  stuff the best of generation evaluation into an array.
+     */
+
+
+    /*  Our first example is the ever-popular maxbit.  As usual, it is
+     *  very simple, not even setting PGAPack options!  Plus, we use a
+     *  very odd string length, 999, which is not divisible by 16, 32 or
+     *  64!  What an excellent test!
+     */
+    ResultsIndex = 0;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 999, PGA_MAXIMIZE);
+    PGASetRandomSeed(ctx, 42);
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,  (void *)EOG);
+    PGASetUp(ctx);
+    PGARun(ctx, maxbit);
+    PGADestroy(ctx);
+
+    /*  Second on the menu is a delicious integer ordering function.
+     *  This uses custom mutation and crossover, but permutation
+     *  initialization.  The objective is to order all alleles in the
+     *  integer datatype in an increasing fashion.
+     */
+    ResultsIndex = 1;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_INTEGER, 64, PGA_MAXIMIZE);
+    PGASetRandomSeed(ctx, 42);
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,  (void *)O_Mutate);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER, (void *)O_Crossover);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,  (void *)EOG);
+    PGASetIntegerInitPermute(ctx, 0, 63);
+    PGASetUp(ctx);
+    PGARun(ctx, ordering);
+    PGADestroy(ctx);
+
+
+    /*  Third, and least interesting, is the character maximizer.
+     *  Much like name, it uses custom mutation and stopping conditions.
+     */
+    ResultsIndex = 2;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_CHARACTER, 64, PGA_MAXIMIZE);
+    PGASetRandomSeed(ctx, 42); 
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,  (void *)N_Mutate);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_STOPCOND,  (void *)N_StopCond);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,  (void *)EOG);
+    PGASetCharacterInitType(ctx, PGA_CINIT_UPPER);
+    PGASetUp(ctx);
+    PGARun(ctx, name);
+    PGADestroy(ctx);
+
+
+    /*  And, finally, the last of the day.  A simple real-valued function
+     *  optimizer.  Uses custom init string.
+     */
+    ResultsIndex = 3;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_REAL, 32, PGA_MINIMIZE);
+    PGASetRandomSeed(ctx, 42); 
+    PGASetMutationType(ctx, PGA_MUTATION_CONSTANT);
+    PGASetMutationRealValue(ctx, .1); 
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetMutationProb(ctx, 0.1);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,  (void *)R_Init);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,    (void *)EOG);
+    PGASetUp(ctx);
+    PGARun(ctx, function);
+    PGADestroy(ctx);
+
+
+    /*  Encore, encore!  Fine.  We will now perform the last number
+     *  using the binary datatype and PGAGetRealFromBinary alternating
+     *  with PGAGetRealFromGrayCode.
+     */
+    ResultsIndex = 4;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 32*RBS, PGA_MINIMIZE);
+    PGASetRandomSeed(ctx, 42); 
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,  (void *)Rb_Init);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING, (void *)Rb_PrintString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,    (void *)EOG);
+    PGASetUp(ctx);
+    PGARun(ctx, functionb);
+    PGADestroy(ctx);
+
+
+    /*  Compare the Results with the correct values
+     *  stored in "./test/data/Results.data"
+     */
+    if (rank == 0) {
+	ResultsFile = fopen("instverf.data", "r");
+	if (ResultsFile) {
+	    E[0] = E[1] = E[2] = E[3] = E[4] = 0;
+	    
+	    for (i=1; i<1001; i++) {
+#if 0
+		/*  This is used to generate the results file... */
+		printf("%12.6f %12.6f %12.6f %12.6f %12.6f\n",
+		       Results[0][i], Results[1][i], Results[2][i],
+		       Results[3][i], Results[4][i]);
+#endif
+		fscanf(ResultsFile, "%lf %lf %lf %lf %lf",
+		       R, R+1, R+2, R+3, R+4);
+		if (fabs(R[0] - Results[0][i]) > 0.001)   E[0]++;
+		if (fabs(R[1] - Results[1][i]) > 0.001)   E[1]++;
+		if (fabs(R[2] - Results[2][i]) > 0.001)   E[2]++;
+		if (fabs(R[3] - Results[3][i]) > 0.001)   E[3]++;
+		if (fabs(R[4] - Results[4][i]) > 0.001)   E[4]++;
+	    }
+	    fclose(ResultsFile);
+	    for (i=0; i<5; i++) {
+		if (E[i])
+		    printf("Test %d had %d errors.\n", i, E[i]);
+		else
+		    printf("Test %d was successful.\n", i);
+	    }
+	} else {
+	    fprintf(stderr, "Couldn't open \"instverf.data\".\n");
+	}
+    }
+
+    MPI_Finalize();
+}
+
+
+/******************************************************************************
+ *
+ *  The fitness functions
+ *
+ *****************************************************************************/
+double maxbit(PGAContext *ctx, int p, int pop) {
+    int i, result;
+
+    result = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) 
+	if (PGAGetBinaryAllele(ctx, p, pop, i) == 1)
+	    result = result + 1;
+
+    return((double)result);
+}
+
+
+/*  Award points if two alleles are increasing (i.e., gene = .., 1, 2, ..)
+ *  and if any allele is in the correct spot (i.e., gene = 1, 2, 3, 4, ...)
+ */
+double ordering(PGAContext *ctx, int p, int pop) {
+    int i, n, o, len, result;
+
+    len = PGAGetStringLength(ctx);
+
+    result = 0;
+    o = PGAGetIntegerAllele(ctx, p, pop, 0);
+    if (o == 0)
+	result = 2;
+    for (i=1; i<len; i++) {
+	n = PGAGetIntegerAllele(ctx, p, pop, i);
+	if (o == n-1)
+	    result = result + 1;
+	if (n = i)
+	    result = result + 2;
+	o = n;
+    }
+
+    return((double)result);
+}
+
+double name(PGAContext *ctx, int p, int pop) {
+    int  i, result;
+
+    result = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+	if (PGAGetCharacterAllele(ctx, p, pop, i) == String[i])
+	    result = result + 1;
+
+    return((double)result);
+}
+
+
+double function(PGAContext *ctx, int p, int pop) {
+    int    i;
+    double x, result;
+
+    result = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	x = PGAGetRealAllele(ctx, p, pop, i);
+	result = result + sin(x) / x;
+    }
+
+    return(result);
+}
+
+
+double functionb(PGAContext *ctx, int p, int pop) {
+    int    i;
+    double x, result;
+
+    result = 0;
+    i = PGAGetStringLength(ctx)/RBS - 1;
+
+    for ( ; i>=0; i--) {
+	if (i % 2) {
+	    x = PGAGetRealFromBinary
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	} else {
+	    x = PGAGetRealFromGrayCode
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	}
+	result = result + sin(x) / x;
+    }
+    return(result);
+}
+
+
+
+/**********************************************************************/
+void EOG(PGAContext *ctx) {
+    int     best, iter;
+    double  besteval;
+
+    iter = PGAGetGAIterValue(ctx);
+    best = PGAGetBestIndex(ctx, PGA_NEWPOP);
+    besteval = PGAGetEvaluation(ctx, best, PGA_NEWPOP);
+
+    Results[ResultsIndex][iter] = besteval;
+}
+
+
+
+/**********************************************************************/
+int O_Mutate(PGAContext *ctx, int p, int pop, double mr) {
+    int i, a, b, len;
+ 
+    len = PGAGetStringLength(ctx);
+    
+    a = PGARandomInterval(ctx, 0, len-1);
+    b = PGARandomInterval(ctx, 0, len-1);
+
+    i = PGAGetIntegerAllele(ctx, p, pop, a);
+    PGASetIntegerAllele(ctx, p, pop, a,
+			PGAGetIntegerAllele(ctx, p, pop, b));
+    PGASetIntegerAllele(ctx, p, pop, b, i);
+    return(1);
+}
+
+/*  Crossover:  Ripped from tsp.c  */
+void O_Crossover(PGAContext *ctx, int A, int B, int ppop,
+		 int C, int D, int cpop) {
+    int     co1, co2, i, len, a, b;
+    int     inA[64], inB[64];
+
+    len = PGAGetStringLength(ctx);
+
+    /*  Select random crossover points from [1, len-1].  */
+    co1 = PGARandomInterval(ctx, 1, len-1);
+    while (co1 == (co2 = PGARandomInterval(ctx, 1, len-1))) ;
+    if (co1 > co2) {
+        i = co1;
+        co1 = co2;
+        co2 = i;
+    }
+
+    /*  Copy a->c and b->d up to the first crossover point. */
+    for (i=0; i<co1; i++) {
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        PGASetIntegerAllele(ctx, C, cpop, i, a);
+        PGASetIntegerAllele(ctx, D, cpop, i, b);
+    }
+    
+    /*  Copy a->c and b->d from the second co point to the end of the
+     *  string.  (Yes, we're ignoring the middle for now.)
+     */
+    for (i=co2; i<len; i++) {
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        PGASetIntegerAllele(ctx, C, cpop, i, a);
+        PGASetIntegerAllele(ctx, D, cpop, i, b);
+    }
+    
+    /*  Now, copy a->d and b->c in the middle (co1 <--> co2).  We must
+     *  be careful to not use any cities twice, thus, we must check
+     *  the rest of the string to see if the allele is used.  If it is,
+     *  change the allele to that of the corresponding one in the other
+     *  string, and check again.  For efficiency, we build a couple of
+     *  tables, AtoB and BtoA.
+     */
+    for (i=0; i<len; i++) {
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        inA[a] = i;
+        inB[b] = i;
+    }
+    
+    for (i=co1; i<co2; i++) {
+        /*  While what we picked is outside the crossover region
+         *  in the other string, keep cross-referencing.
+         */
+	b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        while ((inA[b]<co1) || (inA[b]>=co2)) 
+	    b = PGAGetIntegerAllele(ctx, B, ppop, inA[b]);
+
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        while ((inB[a]<co1) || (inB[a]>=co2)) 
+	    a = PGAGetIntegerAllele(ctx, A, ppop, inB[a]);
+
+        PGASetIntegerAllele(ctx, C, cpop, i, b);
+        PGASetIntegerAllele(ctx, D, cpop, i, a);
+    }
+}
+
+
+
+/**********************************************************************/
+int N_Mutate(PGAContext *ctx, int p, int pop, double mr) {
+    int i, count;
+
+    count = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	if ((PGAGetCharacterAllele(ctx, p, pop, i) != String[i]) &&
+	    (PGARandomFlip(ctx, mr) == PGA_TRUE)) {
+	    PGASetCharacterAllele(ctx, p, pop, i, String[i]);
+	    count += 1;
+	}
+    }
+    return(count);
+}
+
+int N_StopCond(PGAContext *ctx) {
+    int     done, len;
+    double  e;
+
+    done = 0;
+    len  = PGAGetStringLength(ctx);
+    e    = PGAGetEvaluation(ctx, PGAGetBestIndex(ctx, PGA_OLDPOP), PGA_OLDPOP);
+
+    if (PGACheckStoppingConditions(ctx) || (len == e))
+	done = 1;
+
+    return(done);
+}
+
+
+/**********************************************************************/
+void R_Init(PGAContext *ctx, int p, int pop) {
+    int     i;
+    double  r;
+    
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	r = 6.28318530718 * PGARandom01(ctx, 0) - 3.14159265354;
+      	r = 6.28318530718 * exp(r) / (exp(r) + exp(-r));
+
+	PGASetRealAllele(ctx, p, pop, i, r);
+    }
+}
+
+void Rb_Init(PGAContext *ctx, int p, int pop) {
+    int     i;
+    double  r;
+    
+    i = PGAGetStringLength(ctx) / RBS - 1;
+
+    for ( ; i>=0; i--) {
+	r = 6.28318530718 * PGARandom01(ctx, 0) - 3.14159265354;
+      	r = 6.28318530718 * exp(r) / (exp(r) + exp(-r));
+
+	if (i % 2) {
+	    PGAEncodeRealAsBinary
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718, r);
+	} else {
+	    PGAEncodeRealAsGrayCode
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718, r);
+	}
+    }
+}
+
+void Rb_PrintString(PGAContext *ctx, FILE *file, int p, int pop) {
+    int     i, j, len;
+    double  r;
+
+    len = PGAGetStringLength(ctx) / RBS - 1;
+
+    for(i=j=0; i<len; i++, j++) {
+	if (i % 2) {
+	    r = PGAGetRealFromBinary
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	} else {
+	    r = PGAGetRealFromGrayCode
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	}
+	fprintf(file, "  %10.6f", r);
+	if (j==5) {
+	    fprintf(file, "\n");
+	    j = -1;
+	}
+    }
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/instverf.data
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/instverf.data	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/instverf.data	(revision 6168)
@@ -0,0 +1,1000 @@
+  545.000000   131.000000     7.000000     5.830600     5.830600
+  545.000000   131.000000     7.000000     5.830600     5.830600
+  545.000000   131.000000     7.000000     5.830600     3.095786
+  545.000000   131.000000     9.000000     5.830600     3.095786
+  545.000000   131.000000     9.000000     5.824771     3.095786
+  547.000000   131.000000     9.000000     5.824771     3.095786
+  551.000000   131.000000     9.000000     5.169932     3.095786
+  551.000000   131.000000     9.000000     5.169932     3.095786
+  551.000000   132.000000     9.000000     5.169932     3.095786
+  560.000000   132.000000     9.000000     5.169932     3.095786
+  560.000000   132.000000    11.000000     4.910874     3.095786
+  560.000000   132.000000    11.000000     4.726827     2.112962
+  560.000000   132.000000    11.000000     4.726827     2.112962
+  560.000000   132.000000    11.000000     4.234707     2.112962
+  560.000000   132.000000    11.000000     2.552202     2.112962
+  560.000000   132.000000    12.000000     2.552202     2.112962
+  560.000000   132.000000    12.000000     2.552202     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241089
+  561.000000   133.000000    12.000000     2.265484     0.618203
+  563.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484    -0.359117
+  577.000000   134.000000    13.000000     2.265484    -0.359117
+  577.000000   134.000000    13.000000    -1.347096    -0.460710
+  577.000000   134.000000    13.000000    -1.347096    -0.460710
+  577.000000   134.000000    14.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  578.000000   134.000000    16.000000    -1.347096    -0.460710
+  578.000000   134.000000    16.000000    -1.347096    -0.460710
+  583.000000   134.000000    16.000000    -1.347096    -0.460710
+  583.000000   134.000000    16.000000    -1.347096    -0.460710
+  583.000000   134.000000    16.000000    -1.347096    -0.622914
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   135.000000    19.000000    -1.347096    -0.663377
+  583.000000   135.000000    19.000000    -1.347096    -0.663377
+  583.000000   135.000000    19.000000    -1.347096    -0.663377
+  583.000000   135.000000    20.000000    -1.347096    -0.663377
+  587.000000   135.000000    20.000000    -1.347096    -0.663377
+  588.000000   135.000000    20.000000    -1.347096    -0.663377
+  588.000000   135.000000    20.000000    -1.347096    -0.666536
+  588.000000   135.000000    20.000000    -1.347096    -0.666536
+  588.000000   135.000000    20.000000    -1.402374    -0.666536
+  588.000000   135.000000    20.000000    -1.405540    -0.701919
+  588.000000   135.000000    20.000000    -1.516927    -0.701919
+  588.000000   135.000000    20.000000    -1.516927    -0.701919
+  588.000000   136.000000    20.000000    -1.516927    -0.701919
+  588.000000   136.000000    20.000000    -1.516927    -0.811475
+  588.000000   136.000000    21.000000    -1.516927    -0.811475
+  588.000000   136.000000    21.000000    -1.516927    -0.811475
+  588.000000   136.000000    21.000000    -1.518980    -0.811475
+  588.000000   136.000000    21.000000    -1.644250    -0.811475
+  591.000000   136.000000    21.000000    -1.644250    -0.811475
+  591.000000   136.000000    21.000000    -1.710707    -0.811475
+  591.000000   136.000000    21.000000    -1.717394    -0.811753
+  591.000000   136.000000    23.000000    -1.717394    -0.811753
+  591.000000   136.000000    23.000000    -1.725584    -0.811753
+  591.000000   136.000000    23.000000    -1.725584    -0.811753
+  591.000000   137.000000    23.000000    -1.749264    -0.823944
+  591.000000   137.000000    23.000000    -1.749264    -0.823944
+  591.000000   137.000000    24.000000    -1.749264    -0.823944
+  594.000000   137.000000    24.000000    -1.766108    -0.888304
+  595.000000   137.000000    24.000000    -1.766108    -0.888304
+  596.000000   137.000000    24.000000    -1.825106    -0.888304
+  596.000000   137.000000    24.000000    -1.825106    -0.888458
+  596.000000   138.000000    24.000000    -1.825106    -0.888458
+  596.000000   138.000000    24.000000    -1.991414    -0.891112
+  596.000000   138.000000    25.000000    -1.991414    -0.995596
+  596.000000   138.000000    25.000000    -1.991414    -0.995596
+  596.000000   138.000000    25.000000    -1.991414    -0.995596
+  598.000000   138.000000    25.000000    -1.991414    -0.995596
+  598.000000   138.000000    25.000000    -1.991414    -0.995596
+  598.000000   138.000000    26.000000    -1.991414    -0.995596
+  599.000000   138.000000    26.000000    -1.996462    -0.995596
+  599.000000   138.000000    26.000000    -2.038102    -0.995596
+  599.000000   138.000000    26.000000    -2.038102    -0.995596
+  599.000000   139.000000    26.000000    -2.038102    -0.995596
+  599.000000   139.000000    26.000000    -2.232807    -0.995596
+  599.000000   139.000000    26.000000    -2.232807    -0.995596
+  599.000000   139.000000    26.000000    -2.232807    -1.147490
+  599.000000   139.000000    26.000000    -2.232807    -1.147490
+  599.000000   139.000000    26.000000    -2.232807    -1.147490
+  599.000000   140.000000    27.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    30.000000    -2.615528    -1.147490
+  601.000000   140.000000    30.000000    -2.615528    -1.177010
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    32.000000    -2.615528    -1.266449
+  601.000000   141.000000    32.000000    -2.615528    -1.266449
+  601.000000   141.000000    32.000000    -2.615528    -1.266449
+  603.000000   141.000000    32.000000    -2.615528    -2.087184
+  603.000000   141.000000    32.000000    -2.615528    -2.087184
+  603.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  606.000000   141.000000    33.000000    -2.615528    -2.087184
+  606.000000   141.000000    33.000000    -2.615528    -2.087184
+  606.000000   142.000000    34.000000    -2.653765    -2.087184
+  606.000000   142.000000    34.000000    -2.809304    -2.087184
+  608.000000   142.000000    34.000000    -3.005066    -2.087184
+  608.000000   142.000000    34.000000    -3.005066    -2.087184
+  608.000000   142.000000    34.000000    -3.005066    -2.134288
+  608.000000   142.000000    34.000000    -3.005066    -2.134288
+  608.000000   142.000000    34.000000    -3.005066    -2.215644
+  608.000000   142.000000    35.000000    -3.005066    -2.215644
+  609.000000   142.000000    35.000000    -3.005066    -2.231666
+  609.000000   143.000000    35.000000    -3.005066    -2.231666
+  609.000000   143.000000    36.000000    -3.005066    -2.231666
+  609.000000   143.000000    36.000000    -3.005066    -2.231666
+  609.000000   143.000000    36.000000    -3.005066    -2.258783
+  609.000000   143.000000    36.000000    -3.005066    -2.360126
+  609.000000   143.000000    36.000000    -3.031497    -2.360126
+  609.000000   143.000000    36.000000    -3.031497    -2.360126
+  610.000000   143.000000    36.000000    -3.031497    -2.403671
+  610.000000   143.000000    36.000000    -3.144883    -2.403671
+  610.000000   143.000000    36.000000    -3.144883    -2.489972
+  611.000000   143.000000    36.000000    -3.144883    -2.489972
+  611.000000   143.000000    36.000000    -3.144883    -2.489972
+  611.000000   143.000000    37.000000    -3.144883    -2.489972
+  612.000000   144.000000    37.000000    -3.144883    -2.490465
+  612.000000   144.000000    37.000000    -3.144883    -2.645446
+  612.000000   144.000000    37.000000    -3.144883    -2.645446
+  612.000000   144.000000    37.000000    -3.319494    -2.645446
+  612.000000   145.000000    37.000000    -3.319494    -2.645446
+  612.000000   145.000000    38.000000    -3.319494    -2.645446
+  613.000000   145.000000    38.000000    -3.319494    -2.645446
+  613.000000   145.000000    38.000000    -3.319494    -2.645450
+  613.000000   145.000000    38.000000    -3.319494    -2.645450
+  613.000000   145.000000    38.000000    -3.319494    -2.645450
+  613.000000   145.000000    38.000000    -3.319494    -2.773906
+  613.000000   145.000000    38.000000    -3.319494    -2.773906
+  613.000000   145.000000    39.000000    -3.319494    -2.776500
+  614.000000   145.000000    39.000000    -3.319494    -2.776907
+  614.000000   145.000000    39.000000    -3.441136    -2.776907
+  614.000000   145.000000    39.000000    -3.441136    -2.776907
+  614.000000   145.000000    39.000000    -3.490688    -2.776907
+  615.000000   145.000000    41.000000    -3.490688    -2.777277
+  615.000000   145.000000    41.000000    -3.490688    -2.780465
+  615.000000   145.000000    41.000000    -3.495495    -2.780465
+  615.000000   145.000000    41.000000    -3.495495    -2.787853
+  615.000000   146.000000    41.000000    -3.495495    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    42.000000    -3.615383    -2.787853
+  616.000000   147.000000    43.000000    -3.615383    -2.787867
+  616.000000   147.000000    43.000000    -3.615383    -2.787867
+  616.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.842833
+  617.000000   147.000000    43.000000    -3.753140    -2.919868
+  617.000000   147.000000    43.000000    -3.819071    -2.919868
+  617.000000   147.000000    43.000000    -3.819071    -2.919868
+  617.000000   147.000000    44.000000    -3.819071    -2.919868
+  619.000000   147.000000    44.000000    -3.819071    -2.919868
+  619.000000   148.000000    44.000000    -3.819071    -2.919868
+  619.000000   148.000000    44.000000    -3.834996    -2.919868
+  619.000000   148.000000    44.000000    -3.834996    -2.919868
+  619.000000   148.000000    44.000000    -3.834996    -2.919868
+  619.000000   148.000000    45.000000    -3.851305    -2.919868
+  619.000000   148.000000    45.000000    -3.851305    -2.919868
+  619.000000   148.000000    45.000000    -3.905956    -2.919868
+  619.000000   148.000000    45.000000    -3.905956    -2.920624
+  619.000000   148.000000    45.000000    -3.905956    -2.920624
+  619.000000   148.000000    45.000000    -3.905956    -2.920624
+  620.000000   148.000000    45.000000    -3.908264    -2.931201
+  620.000000   148.000000    45.000000    -3.975791    -2.931201
+  620.000000   148.000000    45.000000    -3.975791    -2.931201
+  620.000000   148.000000    45.000000    -4.192530    -2.931201
+  620.000000   148.000000    45.000000    -4.376775    -2.985771
+  620.000000   148.000000    45.000000    -4.376775    -2.985771
+  620.000000   148.000000    45.000000    -4.376775    -2.985800
+  621.000000   148.000000    45.000000    -4.376775    -2.985800
+  621.000000   149.000000    45.000000    -4.376775    -2.985800
+  623.000000   149.000000    45.000000    -4.376775    -2.985800
+  623.000000   149.000000    46.000000    -4.376775    -2.985800
+  623.000000   149.000000    46.000000    -4.430660    -2.985800
+  623.000000   149.000000    46.000000    -4.430660    -2.985800
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    47.000000    -4.430660    -2.995691
+  623.000000   149.000000    47.000000    -4.430660    -2.995691
+  623.000000   150.000000    47.000000    -4.430660    -3.058951
+  623.000000   150.000000    47.000000    -4.430660    -3.113522
+  623.000000   150.000000    47.000000    -4.430660    -3.124098
+  623.000000   150.000000    47.000000    -4.430660    -3.124098
+  623.000000   150.000000    47.000000    -4.454581    -3.124098
+  623.000000   150.000000    47.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.460662    -3.124098
+  623.000000   150.000000    48.000000    -4.460662    -3.124098
+  624.000000   150.000000    48.000000    -4.460662    -3.124098
+  624.000000   150.000000    48.000000    -4.473634    -3.124098
+  625.000000   150.000000    48.000000    -4.473634    -3.124098
+  625.000000   150.000000    48.000000    -4.473634    -3.130948
+  625.000000   150.000000    48.000000    -4.473634    -3.130948
+  625.000000   150.000000    49.000000    -4.473634    -3.130948
+  625.000000   150.000000    49.000000    -4.473634    -3.130948
+  625.000000   150.000000    49.000000    -4.540714    -3.130948
+  625.000000   150.000000    49.000000    -4.540714    -3.130967
+  625.000000   150.000000    49.000000    -4.540714    -3.130967
+  626.000000   150.000000    49.000000    -4.540714    -3.130967
+  627.000000   151.000000    49.000000    -4.540714    -3.130967
+  627.000000   151.000000    49.000000    -4.540714    -3.130967
+  627.000000   151.000000    49.000000    -4.540714    -3.138881
+  627.000000   151.000000    50.000000    -4.540714    -3.138881
+  627.000000   151.000000    50.000000    -4.540714    -3.138881
+  627.000000   151.000000    50.000000    -4.544082    -3.138881
+  627.000000   151.000000    50.000000    -4.571606    -3.138881
+  627.000000   151.000000    50.000000    -4.571606    -3.138881
+  627.000000   151.000000    50.000000    -4.584436    -3.138881
+  627.000000   151.000000    50.000000    -4.584436    -3.138881
+  627.000000   151.000000    50.000000    -4.584436    -3.149418
+  627.000000   151.000000    50.000000    -4.608382    -3.169051
+  628.000000   151.000000    50.000000    -4.608382    -3.169051
+  628.000000   151.000000    50.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.659364    -3.169051
+  629.000000   151.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.681538    -3.779496
+  629.000000   152.000000    51.000000    -4.681538    -3.779496
+  630.000000   152.000000    52.000000    -4.681538    -3.779496
+  630.000000   152.000000    52.000000    -4.681538    -3.797945
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  631.000000   152.000000    52.000000    -4.729479    -3.805809
+  632.000000   152.000000    52.000000    -4.729479    -3.805809
+  632.000000   152.000000    53.000000    -4.729479    -3.805809
+  632.000000   152.000000    53.000000    -4.729479    -3.805809
+  632.000000   152.000000    53.000000    -4.749840    -3.824973
+  632.000000   152.000000    53.000000    -4.749840    -3.984939
+  632.000000   152.000000    53.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.763839    -3.984939
+  632.000000   152.000000    54.000000    -4.826880    -4.017910
+  632.000000   152.000000    54.000000    -4.826880    -4.017910
+  632.000000   152.000000    54.000000    -4.826880    -4.017910
+  633.000000   152.000000    54.000000    -4.826880    -4.017910
+  633.000000   152.000000    54.000000    -4.863338    -4.017910
+  633.000000   152.000000    54.000000    -4.863338    -4.017910
+  633.000000   152.000000    54.000000    -4.863338    -4.094107
+  633.000000   153.000000    55.000000    -4.863338    -4.094107
+  633.000000   153.000000    55.000000    -4.863338    -4.094107
+  633.000000   153.000000    55.000000    -4.863338    -4.094107
+  634.000000   153.000000    55.000000    -4.863338    -4.094107
+  634.000000   153.000000    55.000000    -4.870731    -4.094107
+  634.000000   153.000000    55.000000    -4.958954    -4.094107
+  634.000000   153.000000    55.000000    -4.958954    -4.191519
+  634.000000   153.000000    55.000000    -4.958954    -4.191519
+  634.000000   153.000000    56.000000    -4.981919    -4.191519
+  634.000000   153.000000    56.000000    -4.981919    -4.191519
+  636.000000   153.000000    56.000000    -4.981919    -4.191519
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.197134
+  636.000000   153.000000    56.000000    -4.981919    -4.197134
+  637.000000   153.000000    56.000000    -4.998592    -4.197134
+  637.000000   153.000000    56.000000    -4.998592    -4.199412
+  637.000000   154.000000    57.000000    -4.998592    -4.199412
+  637.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.209967
+  638.000000   154.000000    57.000000    -5.046132    -4.209967
+  638.000000   154.000000    57.000000    -5.046132    -4.209967
+  638.000000   154.000000    57.000000    -5.046132    -4.209989
+  638.000000   154.000000    58.000000    -5.046132    -4.210011
+  638.000000   154.000000    58.000000    -5.087775    -4.210011
+  638.000000   154.000000    58.000000    -5.087775    -4.210011
+  638.000000   154.000000    58.000000    -5.087775    -4.210011
+  638.000000   154.000000    59.000000    -5.087775    -4.210011
+  638.000000   154.000000    59.000000    -5.128770    -4.210011
+  638.000000   154.000000    59.000000    -5.128770    -4.210011
+  638.000000   154.000000    59.000000    -5.128770    -4.210011
+  639.000000   154.000000    59.000000    -5.128770    -4.210011
+  639.000000   154.000000    59.000000    -5.128770    -4.210011
+  639.000000   154.000000    59.000000    -5.128770    -4.215582
+  639.000000   154.000000    59.000000    -5.128770    -4.215604
+  639.000000   154.000000    59.000000    -5.128770    -4.215634
+  639.000000   154.000000    59.000000    -5.130395    -4.215634
+  639.000000   154.000000    59.000000    -5.213173    -4.217937
+  639.000000   154.000000    59.000000    -5.213173    -4.217937
+  639.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.228922    -4.228198
+  642.000000   154.000000    60.000000    -5.228922    -4.228198
+  642.000000   154.000000    60.000000    -5.228922    -4.228201
+  642.000000   154.000000    60.000000    -5.228922    -4.230609
+  642.000000   154.000000    60.000000    -5.238125    -4.230610
+  642.000000   154.000000    60.000000    -5.238125    -4.243708
+  643.000000   154.000000    60.000000    -5.238125    -4.243708
+  643.000000   154.000000    60.000000    -5.238125    -4.243708
+  643.000000   154.000000    60.000000    -5.238125    -4.373889
+  643.000000   154.000000    61.000000    -5.238125    -4.373889
+  643.000000   154.000000    61.000000    -5.250409    -4.373889
+  643.000000   154.000000    61.000000    -5.250409    -4.373889
+  643.000000   154.000000    61.000000    -5.250409    -4.373889
+  643.000000   154.000000    61.000000    -5.262263    -4.373889
+  643.000000   154.000000    61.000000    -5.306309    -4.373889
+  643.000000   154.000000    61.000000    -5.306309    -4.373889
+  643.000000   154.000000    61.000000    -5.306309    -4.379805
+  643.000000   154.000000    61.000000    -5.306309    -4.379805
+  643.000000   154.000000    61.000000    -5.306309    -4.379805
+  643.000000   154.000000    61.000000    -5.314027    -4.379805
+  643.000000   154.000000    62.000000    -5.314027    -4.383758
+  643.000000   154.000000    62.000000    -5.314027    -4.383758
+  643.000000   154.000000    62.000000    -5.314027    -4.383758
+  644.000000   154.000000    62.000000    -5.314027    -4.383758
+  644.000000   155.000000    62.000000    -5.314027    -4.383758
+  644.000000   155.000000    62.000000    -5.314027    -4.383758
+  644.000000   155.000000    62.000000    -5.337548    -4.383758
+  644.000000   155.000000    62.000000    -5.337548    -4.389375
+  644.000000   155.000000    62.000000    -5.337548    -4.389375
+  644.000000   155.000000    63.000000    -5.379943    -4.389375
+  644.000000   155.000000    63.000000    -5.379943    -4.389375
+  645.000000   155.000000    63.000000    -5.379943    -4.389375
+  645.000000   155.000000    63.000000    -5.379943    -4.395289
+  645.000000   155.000000    63.000000    -5.379943    -4.395289
+  645.000000   155.000000    63.000000    -5.382931    -4.397701
+  645.000000   155.000000    63.000000    -5.382931    -4.397701
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.429679    -4.401658
+  645.000000   155.000000    63.000000    -5.429679    -4.401658
+  646.000000   155.000000    63.000000    -5.429679    -4.401658
+  646.000000   155.000000    63.000000    -5.429679    -4.401658
+  646.000000   155.000000    63.000000    -5.440402    -4.401869
+  646.000000   155.000000    63.000000    -5.441520    -4.401869
+  646.000000   155.000000    63.000000    -5.441520    -4.403272
+  646.000000   155.000000    63.000000    -5.441520    -4.404033
+  647.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    64.000000    -5.465908    -4.409699
+  648.000000   156.000000     0.000000    -5.465908    -4.419782
+  650.000000   156.000000     0.000000    -5.465908    -4.419782
+  650.000000   156.000000     0.000000    -5.465908    -4.419782
+  650.000000   156.000000     0.000000    -5.487067    -4.419782
+  650.000000   156.000000     0.000000    -5.487067    -4.419782
+  650.000000   156.000000     0.000000    -5.492830    -4.419782
+  650.000000   156.000000     0.000000    -5.492830    -4.419782
+  650.000000   156.000000     0.000000    -5.492830    -4.422150
+  650.000000   156.000000     0.000000    -5.497572    -4.422150
+  650.000000   156.000000     0.000000    -5.497572    -4.606305
+  650.000000   156.000000     0.000000    -5.497572    -4.606305
+  650.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.519808    -4.607973
+  651.000000   156.000000     0.000000    -5.519808    -4.607973
+  652.000000   156.000000     0.000000    -5.534848    -4.607973
+  652.000000   156.000000     0.000000    -5.534848    -4.607973
+  652.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.608820
+  653.000000   156.000000     0.000000    -5.534848    -4.621086
+  653.000000   156.000000     0.000000    -5.535358    -4.621086
+  653.000000   156.000000     0.000000    -5.535764    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  654.000000   156.000000     0.000000    -5.550398    -4.647526
+  654.000000   156.000000     0.000000    -5.550398    -4.649712
+  654.000000   156.000000     0.000000    -5.550398    -4.649712
+  654.000000   156.000000     0.000000    -5.553374    -4.649712
+  654.000000   156.000000     0.000000    -5.553374    -4.649712
+  654.000000   156.000000     0.000000    -5.553374    -4.649938
+  655.000000   156.000000     0.000000    -5.553374    -4.651440
+  655.000000   156.000000     0.000000    -5.553374    -4.651440
+  655.000000   156.000000     0.000000    -5.553386    -4.651896
+  655.000000   156.000000     0.000000    -5.553791    -4.651896
+  655.000000   156.000000     0.000000    -5.553791    -4.653397
+  655.000000   156.000000     0.000000    -5.553791    -4.653397
+  655.000000   156.000000     0.000000    -5.553791    -4.653397
+  656.000000   156.000000     0.000000    -5.553791    -4.653397
+  656.000000   157.000000     0.000000    -5.553791    -4.653430
+  656.000000   157.000000     0.000000    -5.553791    -4.653430
+  656.000000   157.000000     0.000000    -5.569330    -4.653430
+  656.000000   157.000000     0.000000    -5.569330    -4.653658
+  656.000000   157.000000     0.000000    -5.569330    -4.653658
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.798067
+  657.000000   157.000000     0.000000    -5.569330    -4.798067
+  657.000000   157.000000     0.000000    -5.569330    -4.798067
+  657.000000   157.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.573495    -4.798067
+  658.000000   158.000000     0.000000    -5.573495    -4.798067
+  658.000000   158.000000     0.000000    -5.573495    -4.798067
+  658.000000   158.000000     0.000000    -5.589045    -4.798067
+  658.000000   158.000000     0.000000    -5.589045    -4.798067
+  658.000000   158.000000     0.000000    -5.589045    -4.801652
+  658.000000   158.000000     0.000000    -5.589045    -4.801652
+  659.000000   158.000000     0.000000    -5.589045    -4.801652
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  662.000000   158.000000     0.000000    -5.589045    -4.948857
+  662.000000   158.000000     0.000000    -5.589045    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.954346
+  662.000000   158.000000     0.000000    -5.605510    -4.954346
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   159.000000     0.000000    -5.605510    -5.005344
+  662.000000   159.000000     0.000000    -5.605510    -5.005344
+  663.000000   159.000000     0.000000    -5.605510    -5.005344
+  663.000000   159.000000     0.000000    -5.605510    -5.018093
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  664.000000   159.000000     0.000000    -5.614935    -5.067872
+  664.000000   159.000000     0.000000    -5.614935    -5.141387
+  664.000000   159.000000     0.000000    -5.614935    -5.160269
+  664.000000   159.000000     0.000000    -5.614935    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  665.000000   159.000000     0.000000    -5.614948    -5.160269
+  665.000000   159.000000     0.000000    -5.614948    -5.160269
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  666.000000   159.000000     0.000000    -5.616782    -5.277120
+  666.000000   159.000000     0.000000    -5.622101    -5.282820
+  666.000000   159.000000     0.000000    -5.622101    -5.282820
+  666.000000   159.000000     0.000000    -5.631400    -5.282820
+  666.000000   159.000000     0.000000    -5.632102    -5.287278
+  667.000000   159.000000     0.000000    -5.632102    -5.287278
+  667.000000   159.000000     0.000000    -5.632102    -5.287278
+  667.000000   159.000000     0.000000    -5.650993    -5.287278
+  667.000000   159.000000     0.000000    -5.650993    -5.287278
+  667.000000   159.000000     0.000000    -5.650993    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  670.000000   159.000000     0.000000    -5.667292    -5.338620
+  670.000000   159.000000     0.000000    -5.667292    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.350500
+  670.000000   159.000000     0.000000    -5.667304    -5.350500
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  671.000000   159.000000     0.000000    -5.667304    -5.430467
+  671.000000   159.000000     0.000000    -5.667304    -5.435055
+  671.000000   159.000000     0.000000    -5.667304    -5.435055
+  671.000000   159.000000     0.000000    -5.667304    -5.435055
+  672.000000   159.000000     0.000000    -5.667304    -5.435055
+  672.000000   159.000000     0.000000    -5.680452    -5.435055
+  672.000000   159.000000     0.000000    -5.680452    -5.435055
+  672.000000   159.000000     0.000000    -5.680452    -5.435055
+  672.000000   159.000000     0.000000    -5.682618    -5.435055
+  672.000000   160.000000     0.000000    -5.682618    -5.435055
+  672.000000   160.000000     0.000000    -5.682618    -5.435055
+  672.000000   160.000000     0.000000    -5.697775    -5.435313
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  674.000000   160.000000     0.000000    -5.697775    -5.483751
+  674.000000   160.000000     0.000000    -5.697775    -5.483751
+  674.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.698353    -5.483751
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  677.000000   160.000000     0.000000    -5.698353    -5.488336
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.527014
+  677.000000   160.000000     0.000000    -5.698353    -5.527014
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539487
+  677.000000   160.000000     0.000000    -5.698353    -5.539487
+  679.000000   160.000000     0.000000    -5.698353    -5.611336
+  679.000000   160.000000     0.000000    -5.698353    -5.611336
+  679.000000   160.000000     0.000000    -5.698353    -5.611343
+  679.000000   160.000000     0.000000    -5.698353    -5.625224
+  679.000000   160.000000     0.000000    -5.698353    -5.625224
+  679.000000   160.000000     0.000000    -5.698353    -5.625224
+  679.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.662061
+  681.000000   161.000000     0.000000    -5.698353    -5.662061
+  681.000000   161.000000     0.000000    -5.698353    -5.662061
+  681.000000   161.000000     0.000000    -5.698353    -5.662061
+  682.000000   161.000000     0.000000    -5.698353    -5.665403
+  682.000000   161.000000     0.000000    -5.698353    -5.665403
+  682.000000   161.000000     0.000000    -5.698353    -5.665403
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  683.000000   161.000000     0.000000    -5.698353    -5.665969
+  683.000000   161.000000     0.000000    -5.698353    -5.665969
+  683.000000   161.000000     0.000000    -5.698353    -5.669372
+  683.000000   161.000000     0.000000    -5.698353    -5.669372
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  685.000000   161.000000     0.000000    -5.698353    -5.702812
+  685.000000   161.000000     0.000000    -5.698353    -5.702812
+  685.000000   161.000000     0.000000    -5.698353    -5.702812
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  686.000000   161.000000     0.000000    -5.698353    -5.710102
+  686.000000   161.000000     0.000000    -5.698353    -5.710102
+  686.000000   161.000000     0.000000    -5.698353    -5.710365
+  686.000000   161.000000     0.000000    -5.698353    -5.710365
+  687.000000   161.000000     0.000000    -5.698353    -5.710365
+  687.000000   161.000000     0.000000    -5.698353    -5.715440
+  687.000000   161.000000     0.000000    -5.698353    -5.715440
+  687.000000   161.000000     0.000000    -5.698353    -5.715446
+  687.000000   161.000000     0.000000    -5.698353    -5.717538
+  687.000000   162.000000     0.000000    -5.698353    -5.717538
+  687.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.722613
+  688.000000   162.000000     0.000000    -5.698353    -5.722613
+  688.000000   162.000000     0.000000    -5.698353    -5.722613
+  688.000000   162.000000     0.000000    -5.698353    -5.722731
+  688.000000   162.000000     0.000000    -5.698353    -5.722731
+  689.000000   162.000000     0.000000    -5.698353    -5.730166
+  689.000000   162.000000     0.000000    -5.698353    -5.730166
+  689.000000   162.000000     0.000000    -5.698353    -5.730166
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.811050
+  691.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.826762
+  692.000000   162.000000     0.000000    -5.698353    -5.826762
+  692.000000   162.000000     0.000000    -5.698353    -5.826762
+  692.000000   162.000000     0.000000    -5.698353    -5.827023
+  692.000000   162.000000     0.000000    -5.698353    -5.827023
+  692.000000   162.000000     0.000000    -5.698353    -5.847000
+  692.000000   162.000000     0.000000    -5.698353    -5.847255
+  692.000000   162.000000     0.000000    -5.698353    -5.847255
+  693.000000   162.000000     0.000000    -5.698353    -5.847255
+  693.000000   162.000000     0.000000    -5.698353    -5.847255
+  693.000000   162.000000     0.000000    -5.698353    -5.847261
+  693.000000   162.000000     0.000000    -5.698353    -5.847261
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  694.000000   163.000000     0.000000    -5.698353    -5.938183
+  694.000000   163.000000     0.000000    -5.698353    -5.938183
+  694.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954057
+  696.000000   163.000000     0.000000    -5.698353    -5.954057
+  696.000000   163.000000     0.000000    -5.698353    -5.954058
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.030555
+  696.000000   163.000000     0.000000    -5.698353    -6.030555
+  696.000000   163.000000     0.000000    -5.698353    -6.031038
+  696.000000   163.000000     0.000000    -5.698353    -6.045291
+  696.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045293
+  698.000000   163.000000     0.000000    -5.698353    -6.045293
+  698.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   164.000000     0.000000    -5.698353    -6.091928
+  700.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091998
+  701.000000   164.000000     0.000000    -5.698353    -6.091998
+  701.000000   164.000000     0.000000    -5.698353    -6.107778
+  701.000000   164.000000     0.000000    -5.698353    -6.107778
+  702.000000   164.000000     0.000000    -5.698353    -6.107778
+  702.000000   164.000000     0.000000    -5.698353    -6.107778
+  702.000000   164.000000     0.000000    -5.698353    -6.107780
+  702.000000   164.000000     0.000000    -5.698353    -6.107780
+  702.000000   164.000000     0.000000    -5.698353    -6.107780
+  702.000000   165.000000     0.000000    -5.698353    -6.107780
+  702.000000   165.000000     0.000000    -5.698353    -6.107780
+  702.000000   165.000000     0.000000    -5.698353    -6.107780
+  703.000000   165.000000     0.000000    -5.698353    -6.107780
+  703.000000   165.000000     0.000000    -5.698353    -6.107780
+  703.000000   165.000000     0.000000    -5.698353    -6.108072
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  705.000000   165.000000     0.000000    -5.698353    -6.122217
+  705.000000   165.000000     0.000000    -5.698353    -6.122237
+  705.000000   165.000000     0.000000    -5.698353    -6.122237
+  705.000000   166.000000     0.000000    -5.698353    -6.122237
+  705.000000   166.000000     0.000000    -5.698353    -6.123205
+  705.000000   166.000000     0.000000    -5.698353    -6.123205
+  705.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.250651
+  707.000000   166.000000     0.000000    -5.698353    -6.250651
+  707.000000   166.000000     0.000000    -5.698353    -6.250651
+  707.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.284965
+  708.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  711.000000   166.000000     0.000000    -5.698353    -6.284965
+  711.000000   166.000000     0.000000    -5.698353    -6.284965
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  712.000000   166.000000     0.000000    -5.698353    -6.295472
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331821
+  717.000000   167.000000     0.000000    -5.698353    -6.331873
+  718.000000   167.000000     0.000000    -5.698353    -6.332235
+  718.000000   167.000000     0.000000    -5.698353    -6.332235
+  718.000000   167.000000     0.000000    -5.698353    -6.332235
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.335392
+  721.000000   168.000000     0.000000    -5.698353    -6.335392
+  721.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/pgapackf.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/pgapackf.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/test/pgapackf.h	(revision 6168)
@@ -0,0 +1,1 @@
+link ../include/pgapackf.h
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/README
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/README	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/README	(revision 6168)
@@ -0,0 +1,14 @@
+PGAPack Utilities
+
+convertfortran.pl  -- Simple perl script to convert the fortran examples to 
+		      work on "64-bit" machines -- Alpha, Power Challenge, T3D.
+
+upgrade_script.pl  -- Script to _assist_ in the upgrade from version 0.2 to 
+		      version 1.0.  Will catch _most_ of the changes.
+
+wordsizes.c        -- C program to show the sizes of various datastructues
+                      used by PGAPack.  Useful for configuration.  See
+                      wordsizes.c for more information.
+
+
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/convertfortran.pl
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/convertfortran.pl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/convertfortran.pl	(revision 6168)
@@ -0,0 +1,22 @@
+#!/usr/local/bin/perl
+#
+#  Convert fortran examples to 64-bit compatable codes.
+#
+#  This script will replace all occurances of "integer ctx" and 
+#  "integer comm" with "integer*8 ctx" and "integer*8 comm", respectively.
+#  (Uncomment the commented lines below to convert back to 32-bit examples.)
+#
+#  WARNING:  This is done inplace -- no backup files are created!
+#
+foreach (@ARGV) {
+    print "Converting $_\n";
+    $file = $_;
+    open(In, "$file"); @Stuff = <In>; close(In);
+    foreach (@Stuff) {
+        s/integer\s*ctx/integer\*8 ctx/g;
+        s/integer\s*comm/integer\*8 comm/g;
+#        s/integer\*8\s*ctx/integer ctx/g;
+#        s/integer\*8\s*comm/integer comm/g;
+    }
+    open(Out, ">$file"); print Out @Stuff; close(Out);
+}    
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/upgrade_script.pl
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/upgrade_script.pl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/upgrade_script.pl	(revision 6168)
@@ -0,0 +1,119 @@
+#!/usr/local/bin/perl
+#
+#  This is a simple script to help in upgrading from V0.2 to V1.0.  It will
+#  make most (if not all) of the function name and #define name changes, and
+#  will print a message where they are done.
+#
+#  Not guaranteed to work 100%, but should take the majority of the pain
+#  out of it.
+#
+#  One thing to pay careful attention to is PGASetMutateOnlyNoCross.  This
+#  was replaced by two functions, PGASetMuataionOrCrossoverFlag and
+#  PGASetMuatationAndCrossoverFlag.  Here, we replace it with the first.
+#
+#  Usage:
+#      upgrade_script.pl <FilesToUpgrade>
+#
+#      It will move the original files to filename.old, and create the 
+#      new files with the original name.
+#
+
+if (ARGV eq 0) {
+    print "Usage: upgrade_script.pl <FilesToUpgrade>\n";
+    exit(-1);
+}
+
+foreach $filename (@ARGV) {
+    rename($filename, "$filename.bak");
+    open(INPUT, "$filename.bak");
+    open(OUTPUT, ">$filename");
+    while (<INPUT>) {
+        &do_rename;
+        print OUTPUT $_;
+    }
+    close(OUTPUT);
+    close(INPUT);
+}
+
+
+sub do_rename {
+    s/PGABinaryBuildIndividualDatatype/PGABinaryBuildDatatype/g;
+    s/PGABinaryRandomize/PGABinaryInitString/g;
+    s/PGABinaryWrite/PGABinaryPrint/g;
+    s/PGABinaryWriteString/PGABinaryPrintString/g;
+    s/PGABuildIndividualDatatype/PGABuildDatatype/g;
+    s/PGACharacterBuildIndividualDatatype/PGACharacterBuildDatatype/g;
+    s/PGACharacterRandomize/PGACharacterInitString/g;
+    s/PGACharacterWriteString/PGACharacterPrintString/g;
+    s/PGAFitnessLinNor/PGAFitnessLinearNormal/g;
+    s/PGAFitnessLinRank/PGAFitnessLinearRank/g;
+    s/PGAFitnessMinRecprl/PGAFitnessMinReciprocal/g;
+    s/PGAGetEvalUpToDate/PGAGetEvaluationUpToDateFlag/g;
+    s/PGAGetEvaluate/PGAGetEvaluation/g;
+    s/PGAGetFitnessRankMax/PGAGetMaxFitnessRank/g;
+    s/PGAGetBest/PGAGetBestIndex/g;
+    s/PGAGetWorst/PGAGetWorstIndex/g;
+    s/PGAGetInitIntegerMax/PGAGetMaxIntegerInitValue/g;
+    s/PGAGetInitIntegerMin/PGAGetMinIntegerInitValue/g;
+    s/PGAGetInitRealMax/PGAGetMaxRealInitValue/g;
+    s/PGAGetInitRealMin/PGAGetMinRealInitValue/g;
+    s/PGAGetIntegerType/PGAGetIntegerInitType/g;
+    s/PGAGetIter/PGAGetGAIterValue/g;
+    s/PGAGetMaxDouble/PGAGetMaxMachineDoubleValue/g;
+    s/PGAGetMaxInt/PGAGetMaxMachineIntValue/g;
+    s/PGAGetMaxIter/PGAGetMaxGAIterValue/g;
+    s/PGAGetMinDouble/PGAGetMinMachineDoubleValue/g;
+    s/PGAGetMinInt/PGAGetMinMachineIntValue/g;
+    s/PGAGetMutateIntegerVal/PGAGetMutationIntegerValue/g;
+    s/PGAGetMutateOnlyNoCross/PGAGetMutationAndCrossoverFlag/g;
+    s/PGAGetMutateRealVal/PGAGetMutationRealValue/g;
+    s/PGAGetNoDuplicates/PGAGetNoDuplicatesFlag/g;
+    s/PGAGetNprocs/PGAGetNumProcs/g;
+    s/PGAGetNumReplace/PGAGetNumReplaceValue/g;
+    s/PGAGetOptDir/PGAGetOptDirFlag/g;
+    s/PGAGetPID/PGAGetRank/g;
+    s/PGAGetPopReplace/PGAGetPopReplaceType/g;
+    s/PGAGetPrintFreq/PGAGetPrintFrequency/g;
+    s/PGAGetRandomInit/PGAGetRandomInitFlag/g;
+    s/PGAGetRestart/PGAGetRestartFlag/g;
+    s/PGAGetRestartFrequency/PGAGetRestartFrequencyValue/g;
+    s/PGAGetSortPop/PGAGetSortedPopIndex/g;
+    s/PGAGetStoppingRule/PGAGetStoppingRuleType/g;
+    s/PGAGetStringLen/PGAGetStringLength/g;
+    s/PGAGetUniformCrossProb/PGAGetUniformCrossoverProb/g;
+    s/PGAIntegerBuildIndividualDatatype/PGAIntegerBuildDatatype/g;
+    s/PGAIntegerRandomize/PGAIntegerInitString/g;
+    s/PGAIntegerWriteString/PGAIntegerPrintString/g;
+    s/PGAParallelDone/PGADoneMS/g;
+    s/PGAParallelEvaluateMS/PGAEvaluateMS/g;
+    s/PGAPrintContext/PGAPrintContextVariable/g;
+    s/PGAPrintVersion/PGAPrintVersionNumber/g;
+    s/PGARealBuildIndividualDatatype/PGARealBuildDatatype/g;
+    s/PGARealRandomize/PGARealInitString/g;
+    s/PGARealWriteString/PGARealPrintString/g;
+    s/PGARunMutateAndCross/PGARunMutationAndCrossover/g;
+    s/PGARunMutateOrCross/PGARunMutationOrCrossover/g;
+    s/PGASelectNext/PGASelectNextIndex/g;
+    s/PGASetCharacterInit/PGASetCharacterInitType/g;
+    s/PGASetEvaluate/PGASetEvaluation/g;
+    s/PGASetEvalUpToDate/PGASetEvaluationUpToDateFlag/g;
+    s/PGASetFitnessRankMax/PGASetMaxFitnessRank/g;
+    s/PGASetMaxIter/PGASetMaxGAIterValue/g;
+    s/PGASetMaxNoChange/PGASetMaxNoChangeValue/g;
+    s/PGASetMaxSimilarity/PGASetMaxSimilarityValue/g;
+    s/PGASetMutateOnlyNoCross/PGASetMutationOrCrossoverFlag/g;
+    s/PGASetMutationIntegerVal/PGASetMutationIntegerValue/g;
+    s/PGASetMutationRealVal/PGASetMutationRealValue/g;
+    s/PGASetNoDuplicates/PGASetNoDuplicatesFlag/g;
+    s/PGASetNumReplace/PGASetNumReplaceValue/g;
+    s/PGASetPopReplacement/PGASetPopReplacementType/g;
+    s/PGASetPrintFreq/PGASetPrintFrequencyValue/g;
+    s/PGASetRandomInit/PGASetRandomInitFlag/g;
+    s/PGASetRestart/PGASetRestartFlag/g;
+    s/PGASetRestartFrequency/PGASetRestartFrequencyValue/g;
+    s/PGASetStoppingRule/PGASetStoppingRuleType/g;
+    s/PGASetSupportingDebugFlags/PGASetDebugFlag/g;
+    s/PGASetUniformCrossProb/PGASetUniformCrossoverProb/g;
+    s/PGAWriteString/PGAPrintString/g;
+}
+
Index: /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/wordsizes.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/wordsizes.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pgapack/pgapack/util/wordsizes.c	(revision 6168)
@@ -0,0 +1,34 @@
+
+#define WL 32
+#define FAKE_MPI
+
+#include <stdio.h>
+#include "../include/pgapack.h"
+
+/*
+ *  Compile with: cc -o wordsizes wordsizes.c
+ *
+ *  Any size WL can be used -- it will not affect the sizes below.
+ *
+ *  FAKE_MPI will also not affect the sizes of the structures below,
+ *  but will simplify the compilation.  
+ *
+ *  If PGAContext * is 8 bytes, then you have a "64-bit" machine.  Be
+ *  sure to use integer*8 for the PGAContext variable, and integer*4
+ *  (usually just integer) for everything else.
+ *
+ */
+void main(void) {
+    printf("Sizes of various datatypes in bytes.\n\n");
+    printf("sizeof(PGAContext *):      %2d\n", sizeof(PGAContext *));
+    printf("sizeof(PGABinary):         %2d\n", sizeof(PGABinary));
+    printf("sizeof(PGAReal):           %2d\n", sizeof(PGAReal));
+    printf("sizeof(PGAInteger):        %2d\n", sizeof(PGAInteger));
+    printf("sizeof(PGACharacter):      %2d\n", sizeof(PGACharacter));
+
+    printf("sizeof(int):               %2d\n", sizeof(int));
+    printf("sizeof(long int):          %2d\n", sizeof(long int));
+
+    printf("sizeof(double):            %2d\n", sizeof(double));
+    printf("sizeof(char):              %2d\n", sizeof(char));
+}
Index: /tags/1.6.0/packages/optimizer/src/pkgIndex.tcl.in
===================================================================
--- /tags/1.6.0/packages/optimizer/src/pkgIndex.tcl.in	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/pkgIndex.tcl.in	(revision 6168)
@@ -0,0 +1,7 @@
+# this file identifies RapptureOptimizer as a Tcl package
+proc @PACKAGE_NAME@_init {} [format {
+    set libfile [file join %s @PKG_LIB_FILE@]
+    load $libfile @PACKAGE_NAME@
+    package provide @PACKAGE_NAME@ @PACKAGE_VERSION@
+} $dir]
+package ifneeded @PACKAGE_NAME@ @PACKAGE_VERSION@ @PACKAGE_NAME@_init
Index: /tags/1.6.0/packages/optimizer/src/plugin_pgapack.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/plugin_pgapack.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/plugin_pgapack.c	(revision 6168)
@@ -0,0 +1,1154 @@
+/*
+ * ----------------------------------------------------------------------
+ *  OPTIMIZER PLUG-IN:  Pgapack
+ *
+ *  This code connects Pgapack into the Rappture Optimization
+ *  infrastructure.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "pgapack.h"
+#include "rp_optimizer.h"
+
+typedef struct PgapackData {
+    int operation;       /* operation <=> PGA_MINIMIZE/PGA_MAXIMIZE */
+    int maxRuns;         /* maximum runs <=> PGASetMaxGAIterValue() */
+    int popSize;         /* population size <=> PGASetPopSize() */
+    int popRepl;         /* replacement <=> PGASetPopReplacementType() */
+    int numReplPerPop;   /* number of new strings created per population, the rest are the best strings from the previous population*/
+    double tgtFitness;   /* target fitness for stoppage --either best or average*/ 
+    double fitnessTol;   /* %diff betn tgt fit. and current population fit. -- best or avg*/
+    double tgtVariance;  /* target fitness variance*/
+    double varianceTol;  /* tolerance : %diff betn tgt and current pop. fitness variance*/
+    double tgtElapsedTime;   /* target stoppage time from start of execution*/
+    int stpcriteria;     /*stoppage criteria <=> PGASetStoppingRuleType()*/
+    int randnumseed;  /*Random Number Seed <=> PGASetRandomSeed()*/
+    double mutnrate;     /*Mutation Rate <=> PGASetMutatuionProb()*/
+    double mutnValue;     /*use this value while mutating*/
+    double crossovrate;  /*Crossover Rate <=> PGASetCrossoverProb();*/
+    int crossovtype;	/*Crossover Type <=> UNIFORM/SBX/TRIANGULAR (SBX Defined from Deb and Kumar 1995)*/
+    int allowdup;        /*Allow duplicate strings in the population or not*/
+    int mutnandcrossover;/*By default strings that do not undergo crossover undergo mutation, this option allows strings to crossover and be mutated*/
+    double randReplProp; /*By default, random replacement is off, therefore randReplaceProp is zero by default, */
+    						/*a nonzero replacement value causes random generation of individuals in later generations*/
+} PgapackData;
+
+RpCustomTclOptionGet RpOption_GetStpCriteria;
+RpCustomTclOptionParse RpOption_ParseStpCriteria;
+RpTclOptionType RpOption_StpCriteria = {
+	"pga_stpcriteria", RpOption_ParseStpCriteria,RpOption_GetStpCriteria,NULL
+};
+
+RpCustomTclOptionParse RpOption_ParseOper;
+RpCustomTclOptionGet RpOption_GetOper;
+RpTclOptionType RpOption_Oper = {
+    "pga_operation", RpOption_ParseOper, RpOption_GetOper, NULL
+};
+
+RpCustomTclOptionParse RpOption_ParseCrossovType;
+RpCustomTclOptionGet RpOption_GetCrossovType;
+RpTclOptionType RpOption_CrossovType = {
+	"pga_crossovtype", RpOption_ParseCrossovType,RpOption_GetCrossovType,NULL
+};
+
+RpCustomTclOptionParse RpOption_ParsePopRepl;
+RpCustomTclOptionGet RpOption_GetPopRepl;
+RpTclOptionType RpOption_PopRepl = {
+    "pga_poprepl", RpOption_ParsePopRepl, RpOption_GetPopRepl, NULL
+};
+
+
+typedef struct PgapackRuntimeDataTable{
+	double **data;				/*Actual data per sample, like values of the genes, fitness of a sample, etc*/
+	int num_of_rows;			/*Number of rows alloced..should be constant for a run*/
+	int no_of_samples_evaled;	/*Number of samples evaluated so far*/
+	int no_of_columns;					/*Number of columns allocated to the data table so far*/
+}PgapackRuntimeDataTable;
+
+RpTclOption PgapackOptions[] = {
+  {"-maxruns", RP_OPTION_INT, Rp_Offset(PgapackData,maxRuns)},
+  {"-operation", &RpOption_Oper, Rp_Offset(PgapackData,operation)},
+  {"-poprepl", &RpOption_PopRepl, Rp_Offset(PgapackData,popRepl)},
+  {"-numReplPerPop",RP_OPTION_INT,Rp_Offset(PgapackData,numReplPerPop)},
+  {"-popsize", RP_OPTION_INT, Rp_Offset(PgapackData,popSize)},
+  {"-mutnrate",RP_OPTION_DOUBLE,Rp_Offset(PgapackData,mutnrate)},
+  {"-mutnValue",RP_OPTION_DOUBLE,Rp_Offset(PgapackData,mutnValue)},
+  {"-crossovrate",RP_OPTION_DOUBLE,Rp_Offset(PgapackData,crossovrate)},
+  {"-crossovtype",&RpOption_CrossovType,Rp_Offset(PgapackData,crossovtype)},
+  {"-randnumseed",RP_OPTION_INT,Rp_Offset(PgapackData,randnumseed)},
+  {"-tgtFitness",RP_OPTION_DOUBLE,Rp_Offset(PgapackData,tgtFitness)},
+  {"-fitnessTol",RP_OPTION_DOUBLE,Rp_Offset(PgapackData,fitnessTol)},
+  {"-tgtVariance",RP_OPTION_DOUBLE,Rp_Offset(PgapackData,tgtVariance)},
+  {"-varianceTol",RP_OPTION_DOUBLE,Rp_Offset(PgapackData,varianceTol)},
+  {"-tgtElapsedTime",RP_OPTION_DOUBLE,Rp_Offset(PgapackData,tgtElapsedTime)},
+  {"-stpcriteria",&RpOption_StpCriteria,Rp_Offset(PgapackData,stpcriteria)},
+  {"-allowdup",RP_OPTION_BOOLEAN,Rp_Offset(PgapackData,allowdup)},
+  {"-mutnandcrossover",RP_OPTION_BOOLEAN,Rp_Offset(PgapackData,mutnandcrossover)},
+  {"-randReplProp",RP_OPTION_DOUBLE,Rp_Offset(PgapackData,randReplProp)},
+  {NULL, NULL, 0}
+};
+
+static double PgapEvaluate _ANSI_ARGS_((PGAContext *ctx, int p, int pop));
+static void PgapCreateString _ANSI_ARGS_((PGAContext *ctx, int, int, int));
+static int PgapMutation _ANSI_ARGS_((PGAContext *ctx, int, int, double));
+static void PgapCrossover _ANSI_ARGS_((PGAContext *ctx, int, int, int,
+    int, int, int));
+static void PgapPrintString _ANSI_ARGS_((PGAContext *ctx, FILE*, int, int));
+static void PgapCopyString _ANSI_ARGS_((PGAContext *ctx, int, int, int, int));
+static int PgapDuplicateString _ANSI_ARGS_((PGAContext *ctx, int, int, int, int));
+static MPI_Datatype PgapBuildDT _ANSI_ARGS_((PGAContext *ctx, int, int));
+
+static void PgapLinkContext2Env _ANSI_ARGS_((PGAContext *ctx,
+    RpOptimEnv *envPtr));
+static RpOptimEnv* PgapGetEnvForContext _ANSI_ARGS_((PGAContext *ctx));
+static void PgapUnlinkContext2Env _ANSI_ARGS_((PGAContext *ctx));
+void PGARuntimeDataTableInit _ANSI_ARGS_((RpOptimEnv *envPtr));
+void PGARuntimeDataTableDeInit();
+void GetSampleInformation _ANSI_ARGS_((char *buffer, int sampleNumber));
+void PGARuntimeDataTableSetSampleValue _ANSI_ARGS_((RpOptimParam *chrom, double fitness));
+static PgapackRuntimeDataTable table;
+/*
+ * ----------------------------------------------------------------------
+ * PgapackInit()
+ *
+ * This routine is called whenever a new optimization object is created
+ * to initialize Pgapack.  Returns a pointer to PgapackData that is
+ * used in later routines.
+ * ----------------------------------------------------------------------
+ */
+ClientData
+PgapackInit()
+{
+    PgapackData *dataPtr;
+
+    dataPtr = (PgapackData*)malloc(sizeof(PgapackData));
+    dataPtr->operation = PGA_MINIMIZE;
+    dataPtr->maxRuns = 10000;
+    dataPtr->popRepl = PGA_POPREPL_BEST;
+    dataPtr->crossovtype = PGA_CROSSOVER_UNIFORM;
+    dataPtr->popSize = 200;
+    dataPtr->numReplPerPop = (dataPtr->popSize)/10; /*10% replaced by default, change to whatever value you need*/
+    dataPtr->crossovrate = 0.85;
+    dataPtr->mutnrate = 0.05; /*by default in PGAPack 1/stringlength*/
+    dataPtr->mutnValue = 0.01;/*value of this number will be changed by plus/minus hundredth of its current value*/
+    dataPtr->randnumseed = 1; /*should be a number greater than one, PGAPack requires it*/
+    dataPtr->tgtFitness = PGA_UNINITIALIZED_DOUBLE;  
+    dataPtr->fitnessTol = PGA_UNINITIALIZED_DOUBLE;  /*by default stop only if desired fitness is exactly achieved*/
+    dataPtr->tgtVariance = PGA_UNINITIALIZED_DOUBLE; 
+    dataPtr->varianceTol = PGA_UNINITIALIZED_DOUBLE; /* by default stop only if desired variance is exactly achieved*/
+    dataPtr->tgtElapsedTime = PGA_UNINITIALIZED_DOUBLE; /* stop if 100 minutes have elapsed since start of optim run*/ 
+    dataPtr->stpcriteria = PGA_STOP_NOCHANGE;
+    dataPtr->allowdup = PGA_FALSE; /*Do not allow duplicate strings by default*/
+    dataPtr->mutnandcrossover = PGA_FALSE;/*do not allow mutation and crossover to take place on the same string by default*/
+    dataPtr->randReplProp = 0; /*0 randomly generated individuals after initialization, per generation*/
+    return (ClientData)dataPtr;
+}
+
+int pgapack_abort = 0;
+int pgapack_restart_user_action = 0;
+
+/*
+ * ----------------------------------------------------------------------
+ * PgapackRun()
+ *
+ * This routine is called to kick off an optimization run.  Sets up
+ * a PGApack context and starts invoking runs.
+ * ----------------------------------------------------------------------
+ */
+RpOptimStatus
+PgapackRun(envPtr, evalProc, fitnessExpr)
+    RpOptimEnv *envPtr;           /* optimization environment */
+    RpOptimEvaluator *evalProc;   /* call this proc to run tool */
+    char *fitnessExpr;            /* fitness function in string form */
+{
+    PgapackData *dataPtr =(PgapackData*)envPtr->pluginData;
+    PGAContext *ctx;
+
+    /* pgapack requires at least one arg -- the executable name */
+    /* fake it here by just saying something like "rappture" */
+    int argc = 1; char *argv[] = {"rappture"};
+
+    pgapack_abort = 0;		/* FALSE */
+    PGASetAbortVar(&pgapack_abort);
+    PGASetRestartUserAction(&pgapack_restart_user_action);
+
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_USER, envPtr->numParams,
+        dataPtr->operation);
+
+    PGASetMaxGAIterValue(ctx, dataPtr->maxRuns);
+    PGASetPopSize(ctx, dataPtr->popSize);
+    PGASetPopReplaceType(ctx, dataPtr->popRepl);
+    PGASetTgtFitnessVal(ctx,dataPtr->tgtFitness);
+    PGASetFitnessTol(ctx,dataPtr->fitnessTol);
+    PGASetTgtFitnessVariance(ctx,dataPtr->tgtVariance);
+    PGASetVarTol(ctx,dataPtr->varianceTol);
+    PGASetTgtElapsedTime(ctx,dataPtr->tgtElapsedTime);
+    PGASetStoppingRuleType(ctx, dataPtr->stpcriteria);
+    PGASetMutationProb(ctx,dataPtr->mutnrate);
+    PGASetMutationRealValue(ctx,dataPtr->mutnValue);
+    PGASetCrossoverProb(ctx,dataPtr->crossovrate);
+    PGASetRandomSeed(ctx,dataPtr->randnumseed);
+    PGASetCrossoverType(ctx, dataPtr->crossovtype);
+    PGASetNoDuplicatesFlag(ctx,!(dataPtr->allowdup));
+    PGASetMutationAndCrossoverFlag(ctx,dataPtr->mutnandcrossover);
+    PGASetNumReplaceValue(ctx,dataPtr->numReplPerPop);
+    PGASetRandReplProp(ctx,dataPtr->randReplProp);
+
+
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_CREATESTRING, PgapCreateString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION, PgapMutation);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER, PgapCrossover);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING, PgapPrintString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_COPYSTRING, PgapCopyString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_DUPLICATE, PgapDuplicateString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_BUILDDATATYPE, PgapBuildDT);
+
+    envPtr->evalProc = evalProc;   /* plug these in for later during eval */
+    envPtr->fitnessExpr = fitnessExpr;
+
+    /*
+     * We need a way to convert from a PGAContext to our RpOptimEnv
+     * data.  This happens when Pgapack calls routines like
+     * PgapCreateString, passing in the PGAContext, but nothing else.
+     * Call PgapLinkContext2Env() here, so later on we can figure
+     * out how many parameters, names, types, etc.
+     */
+    PgapLinkContext2Env(ctx, envPtr);
+
+    PGASetUp(ctx);
+    PGARun(ctx, PgapEvaluate);
+    PGADestroy(ctx);
+    PgapUnlinkContext2Env(ctx);
+
+    if (pgapack_abort) {
+	return RP_OPTIM_ABORTED;
+    }
+    return RP_OPTIM_SUCCESS;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * PgapackEvaluate()
+ *
+ * Called by PGApack whenever a set of input values needs to be
+ * evaluated.  Passes the values on to the underlying Rappture tool,
+ * launches a run, and computes the value of the fitness function.
+ * Returns the value for the fitness function.
+ * ----------------------------------------------------------------------
+ */
+double
+PgapEvaluate(ctx, p, pop)
+    PGAContext *ctx;  /* pgapack context for this optimization */
+    int p;            /* sample #p being run */
+    int pop;          /* identifier for this population */
+    
+{
+    double fit = 0.0;
+    RpOptimEnv *envPtr;
+    RpOptimParam *paramPtr;
+    RpOptimStatus status;
+    envPtr = PgapGetEnvForContext(ctx);
+    paramPtr = (RpOptimParam*)PGAGetIndividual(ctx, p, pop)->chrom;
+    status = (*envPtr->evalProc)(envPtr, paramPtr, envPtr->numParams, &fit);
+	
+    if (pgapack_abort) {
+        fprintf(stderr, "==WARNING: run aborted!");
+        return 0.0;
+    }
+	
+    if (status != RP_OPTIM_SUCCESS) {
+        fprintf(stderr, "==WARNING: run failed!");
+        PgapPrintString(ctx, stderr, p, pop);
+    }
+	
+	/*populate the table with this sample*/
+	PGARuntimeDataTableSetSampleValue(paramPtr,fit);
+    return fit;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * PgapackCleanup()
+ *
+ * This routine is called whenever an optimization object is deleted
+ * to clean up data associated with the object.  Frees the data
+ * allocated in PgapackInit.
+ * ----------------------------------------------------------------------
+ */
+void
+PgapackCleanup(cdata)
+    ClientData cdata;  /* data from to be cleaned up */
+{
+    PgapackData *dataPtr = (PgapackData*)cdata;
+    free(dataPtr);
+}
+
+/*
+ * ======================================================================
+ *  ROUTINES FOR MANAGING DATA STRINGS
+ * ======================================================================
+ * PgapCreateString()
+ *
+ * Called by pgapack to create the so-called "string" of data used for
+ * an evaluation.
+ * ----------------------------------------------------------------------
+ */
+void
+PgapCreateString(ctx, p, pop, initFlag)
+    PGAContext *ctx;  /* pgapack context for this optimization */
+    int p;            /* sample #p being run */
+    int pop;          /* identifier for this population */
+    int initFlag;     /* non-zero => fields should be initialized */
+{
+    int n, ival;
+    double dval;
+    RpOptimEnv *envPtr;
+    RpOptimParam *oldParamPtr, *newParamPtr;
+    PGAIndividual *newData;
+    RpOptimParamNumber *numPtr;
+    RpOptimParamString *strPtr;
+
+    envPtr = PgapGetEnvForContext(ctx);
+
+    newData = PGAGetIndividual(ctx, p, pop);
+    newData->chrom = malloc(envPtr->numParams*sizeof(RpOptimParam));
+    newParamPtr = (RpOptimParam*)newData->chrom;
+
+    for (n=0; n < envPtr->numParams; n++) {
+        oldParamPtr = envPtr->paramList[n];
+        newParamPtr[n].name = oldParamPtr->name;
+        newParamPtr[n].type = oldParamPtr->type;
+        switch (oldParamPtr->type) {
+        case RP_OPTIMPARAM_NUMBER:
+            newParamPtr[n].value.dval = 0.0;
+            break;
+        case RP_OPTIMPARAM_STRING:
+            newParamPtr[n].value.sval.num = -1;
+            newParamPtr[n].value.sval.str = NULL;
+            break;
+        default:
+            panic("bad parameter type in PgapCreateString()");
+        }
+    }
+
+    if (initFlag) {
+        for (n=0; n < envPtr->numParams; n++) {
+            switch (newParamPtr[n].type) {
+            case RP_OPTIMPARAM_NUMBER:
+                numPtr = (RpOptimParamNumber*)envPtr->paramList[n];
+                if(numPtr->randdist == RAND_NUMBER_DIST_UNIFORM){
+                	dval = PGARandom01(ctx,0);
+                	newParamPtr[n].value.dval = (numPtr->max - numPtr->min)*dval + numPtr->min;
+                }else if(numPtr->randdist == RAND_NUMBER_DIST_GAUSSIAN){
+	                	dval = PGARandomGaussian(ctx,numPtr->mean,numPtr->stddev);
+	            		if(numPtr->strictmax){
+	            			if(dval>numPtr->max){
+	            				dval = numPtr->max;
+	            			}
+	            		}
+	            		if(numPtr->strictmin){
+	            			if(dval<numPtr->min){
+	            				dval = numPtr->min;
+	            			}
+	            		}
+	            		newParamPtr[n].value.dval = dval;
+                }else{
+                	panic("Incorrect Random Number distribution option in PgapcreateString()");
+                }
+                break;
+            case RP_OPTIMPARAM_STRING:
+                strPtr = (RpOptimParamString*)envPtr->paramList[n];
+                ival = (int)floor(PGARandom01(ctx,0) * strPtr->numValues);
+                envPtr->paramList[n]->value.sval.num = ival;
+                envPtr->paramList[n]->value.sval.str = strPtr->values[ival];
+                break;
+            default:
+                panic("bad parameter type in PgapCreateString()");
+            }
+        }
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * PgapMutation()
+ *
+ * Called by pgapack to perform random mutations on the input data
+ * used for evaluation.
+ * ----------------------------------------------------------------------
+ */
+int
+PgapMutation(ctx, p, pop, mr)
+    PGAContext *ctx;  /* pgapack context for this optimization */
+    int p;            /* sample #p being run */
+    int pop;          /* identifier for this population */
+    double mr;        /* probability of mutation for each gene */
+{
+    int count = 0;    /* number of mutations */
+
+    int n, ival,tempmr;
+    double mutnVal;
+    RpOptimEnv *envPtr;
+    RpOptimParam *paramPtr;
+    RpOptimParamNumber *numPtr;
+    RpOptimParamString *strPtr;
+
+    envPtr = PgapGetEnvForContext(ctx);
+    paramPtr = (RpOptimParam*)PGAGetIndividual(ctx, p, pop)->chrom;
+
+    for (n=0; n < envPtr->numParams; n++) {
+
+
+            switch (paramPtr[n].type) {
+            case RP_OPTIMPARAM_NUMBER:
+                numPtr = (RpOptimParamNumber*)envPtr->paramList[n];
+                if(numPtr->mutnrate!=PARAM_NUM_UNSPEC_MUTN_RATE){
+                	tempmr = numPtr->mutnrate;
+                	mutnVal = numPtr->mutnValue;
+                }else{
+                	tempmr = mr;
+                	mutnVal = PGAGetMutationRealValue(ctx);
+                }
+                if (PGARandomFlip(ctx, tempmr)) {
+		            /* won the coin toss -- change this parameter */
+		            	count++;
+		            	
+	                /* bump the value up/down a little, randomly */
+	                if (PGARandomFlip(ctx, 0.5)) {
+	                    paramPtr[n].value.dval += mutnVal*paramPtr[n].value.dval; /*Made the mutation amount configurable*/
+	                } else {
+	                    paramPtr[n].value.dval -= mutnVal*paramPtr[n].value.dval;
+	                }
+	                /* make sure the resulting value is still in bounds */
+	                if(numPtr->randdist == RAND_NUMBER_DIST_UNIFORM ||
+	                 (numPtr->randdist == RAND_NUMBER_DIST_GAUSSIAN && numPtr->strictmax)){
+		                if (paramPtr[n].value.dval > numPtr->max) {
+		                    paramPtr[n].value.dval = numPtr->max;
+		                }
+	                 }
+	                 /*also make sure it obeys configured parameters when gaussian*/
+	                 if(numPtr->randdist == RAND_NUMBER_DIST_UNIFORM ||
+	                 (numPtr->randdist == RAND_NUMBER_DIST_GAUSSIAN && numPtr->strictmin)){
+		                if (paramPtr[n].value.dval < numPtr->min) {
+		                    paramPtr[n].value.dval = numPtr->min;
+		                }
+	                 }
+	                
+                }
+                break;
+                
+
+            case RP_OPTIMPARAM_STRING:
+	            if (PGARandomFlip(ctx, mr)) {
+	            /* won the coin toss -- change this parameter */
+	            	count++;
+	        
+	                ival = paramPtr[n].value.sval.num;
+	                if (PGARandomFlip(ctx, 0.5)) {
+	                    ival += 1;
+	                } else {
+	                    ival -= 1;
+	                }
+	                strPtr = (RpOptimParamString*)envPtr->paramList[n];
+	                if (ival < 0) ival = 0;
+	                if (ival >= strPtr->numValues) ival = strPtr->numValues-1;
+	                paramPtr[n].value.sval.num = ival;
+	                paramPtr[n].value.sval.str = strPtr->values[ival];
+	            }
+	            
+	            break;
+	            
+            default:
+                panic("bad parameter type in PgapMutation()");
+            }
+        
+    }
+    return count;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * PgapCrossover()
+ *
+ * Called by pgapack to perform cross-over mutations on the input data
+ * used for evaluation.
+ * ----------------------------------------------------------------------
+ */
+void
+PgapCrossover(ctx, p1, p2, pop1, c1, c2, pop2)
+    PGAContext *ctx;  /* pgapack context for this optimization */
+    int p1;           /* sample # for parent of input string1 */
+    int p2;           /* sample # for parent of input string2 */
+    int pop1;         /* population containing p1 and p2 */
+    int c1;           /* sample # for child of input string1 */
+    int c2;           /* sample # for child of input string2 */
+    int pop2;         /* population containing c1 and c2 */
+{
+    int n;
+    RpOptimEnv *envPtr;
+    RpOptimParam *parent1, *parent2, *child1, *child2;
+    double pu;
+    PgapackData *dataPtr;
+    /*declare variables for SBX*/
+    double ui,beta,eta = 1.5,powVal;
+    double slope = 3,xi;
+
+    envPtr = PgapGetEnvForContext(ctx);
+    parent1 = (RpOptimParam*)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    parent2 = (RpOptimParam*)PGAGetIndividual(ctx, p2, pop1)->chrom;
+    child1  = (RpOptimParam*)PGAGetIndividual(ctx, c1, pop2)->chrom;
+    child2  = (RpOptimParam*)PGAGetIndividual(ctx, c2, pop2)->chrom;
+	
+	pu = PGAGetCrossoverProb(ctx);
+	dataPtr =(PgapackData*)envPtr->pluginData;
+	
+	for (n=0; n < envPtr->numParams; n++) {
+        if (PGARandomFlip(ctx, pu)) {
+            /* crossover */
+            switch(dataPtr->crossovtype){
+            	case PGA_CROSSOVER_UNIFORM:
+            		memcpy(&child1[n], &parent2[n], sizeof(RpOptimParam));
+            		memcpy(&child2[n], &parent1[n], sizeof(RpOptimParam));
+            		break;
+            	case PGA_CROSSOVER_SBX:
+            		/*Implement a Simulated Binary Crossover for Real Encoding*/
+            		/*From Deb and Agrawal, 1995; Deb and Kumar, 1995)*/
+            		switch(parent1[n].type){
+            			case RP_OPTIMPARAM_NUMBER:
+            				ui = PGARandom01(ctx,0);
+	            			powVal = 1/(eta+1);
+            				if(ui<=0.5){
+	            				beta = pow(2*ui,powVal);
+            				}else{
+            					beta = pow(0.5/(1-ui),powVal);
+            				}
+            				child1[n].value.dval = 0.5*((1+beta)*(parent1[n].value.dval) + (1-beta)*(parent2[n].value.dval));
+            				child2[n].value.dval = 0.5*((1-beta)*(parent1[n].value.dval) + (1+beta)*(parent2[n].value.dval));
+            				break;
+            			default:
+            				panic("Bad Optim Param Type in PgapCrossover()");
+            		}
+            		break;
+            		
+            		
+            		case PGA_CROSSOVER_TRIANGULAR:
+            		xi = 1/sqrt(slope);
+            		switch(parent1[n].type){
+            			case RP_OPTIMPARAM_NUMBER:
+            				ui = PGARandom01(ctx,0);
+	            			
+            				if(ui<=0.5){
+                				beta = sqrt(2*ui/slope);
+        					}else{
+                				beta = 2*xi-sqrt(2*(1-ui)/slope);
+        					}
+            				child1[n].value.dval = beta + (parent1[n].value.dval - xi) ;
+            				child2[n].value.dval = beta + (parent2[n].value.dval - xi) ;
+            				break;
+            			default:
+            				panic("Bad Optim Param Type in PgapCrossover()");
+            		}
+            		break;
+            		
+            		
+            	default:
+            		panic("bad parameter type in PgapCrossover()");
+            }
+        } else {
+            /* child inherits from parent */
+            memcpy(&child1[n], &parent1[n], sizeof(RpOptimParam));
+            memcpy(&child2[n], &parent2[n], sizeof(RpOptimParam));
+        }
+    }
+			
+		
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * PgapPrintString()
+ *
+ * Called by pgapack to format the values for a particular string of
+ * input data.
+ * ----------------------------------------------------------------------
+ */
+void
+PgapPrintString(ctx, fp, p, pop)
+    PGAContext *ctx;  /* pgapack context for this optimization */
+    FILE *fp;         /* write to this file pointer */
+    int p;            /* sample #p being run */
+    int pop;          /* identifier for this population */
+{
+    int n;
+    RpOptimEnv *envPtr;
+    RpOptimParam *paramPtr;
+
+    envPtr = PgapGetEnvForContext(ctx);
+    paramPtr = (RpOptimParam*)PGAGetIndividual(ctx, p, pop)->chrom;
+
+    for (n=0; n < envPtr->numParams; n++) {
+        fprintf(fp, "#%4d: ", n);
+        switch (paramPtr[n].type) {
+        case RP_OPTIMPARAM_NUMBER:
+            fprintf(fp, "[%11.7g] (%s)\n", paramPtr[n].value.dval,
+                paramPtr[n].name);
+            break;
+        case RP_OPTIMPARAM_STRING:
+            fprintf(fp, "[%d]=\"%s\" (%s)\n", paramPtr[n].value.sval.num,
+                paramPtr[n].value.sval.str, paramPtr[n].name);
+            break;
+        default:
+            panic("bad parameter type in PgapPrintString()");
+        }
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * PgapCopyString()
+ *
+ * Called by pgapack to copy one input string to another.
+ * ----------------------------------------------------------------------
+ */
+void
+PgapCopyString(ctx, p1, pop1, p2, pop2)
+    PGAContext *ctx;  /* pgapack context for this optimization */
+    int p1;           /* source sample # being run */
+    int pop1;         /* population containing p1 */
+    int p2;           /* destination sample # being run */
+    int pop2;         /* population containing p1 */
+{
+    int n;
+    RpOptimEnv *envPtr;
+    RpOptimParam *src, *dst;
+
+    envPtr = PgapGetEnvForContext(ctx);
+    src = (RpOptimParam*)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    dst = (RpOptimParam*)PGAGetIndividual(ctx, p2, pop2)->chrom;
+
+    for (n=0; n < envPtr->numParams; n++) {
+        dst[n].type = src[n].type;
+        switch (src[n].type) {
+        case RP_OPTIMPARAM_NUMBER:
+            dst[n].value.dval = src[n].value.dval;
+            break;
+        case RP_OPTIMPARAM_STRING:
+            dst[n].value.sval.num = src[n].value.sval.num;
+            dst[n].value.sval.str = src[n].value.sval.str;
+            break;
+        default:
+            panic("bad parameter type in PgapCopyString()");
+        }
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * PgapDuplicateString()
+ *
+ * Called by pgapack to compare two input strings.  Returns non-zero if
+ * the two are duplicates and 0 otherwise.
+ * ----------------------------------------------------------------------
+ */
+int
+PgapDuplicateString(ctx, p1, pop1, p2, pop2)
+    PGAContext *ctx;  /* pgapack context for this optimization */
+    int p1;           /* sample #p being run */
+    int pop1;         /* population containing p1 */
+    int p2;           /* sample #p being run */
+    int pop2;         /* population containing p1 */
+{
+    int n;
+    RpOptimEnv *envPtr;
+    RpOptimParam *param1, *param2;
+
+    envPtr = PgapGetEnvForContext(ctx);
+    param1 = (RpOptimParam*)PGAGetIndividual(ctx, p1, pop1)->chrom;
+    param2 = (RpOptimParam*)PGAGetIndividual(ctx, p2, pop2)->chrom;
+
+    for (n=0; n < envPtr->numParams; n++) {
+        if (param1[n].type != param2[n].type) {
+            return 0;  /* different! */
+        }
+        switch (param1[n].type) {
+        case RP_OPTIMPARAM_NUMBER:
+            if (param1[n].value.dval != param2[n].value.dval) {
+                return 0;  /* different! */
+            }
+            break;
+        case RP_OPTIMPARAM_STRING:
+            if (param1[n].value.sval.num != param2[n].value.sval.num) {
+                return 0;  /* different! */
+            }
+            break;
+        default:
+            panic("bad parameter type in PgapDuplicateString()");
+        }
+    }
+    return 1;
+}
+
+
+
+/*
+ * ----------------------------------------------------------------------
+ * PgapCopyString()
+ *
+ * Called by pgapack to copy one input string to another.
+ * ----------------------------------------------------------------------
+ */
+MPI_Datatype
+PgapBuildDT(ctx, p, pop)
+    PGAContext *ctx;  /* pgapack context for this optimization */
+    int p;            /* sample # being run */
+    int pop;          /* population containing sample */
+{
+    panic("MPI support not implemented!");
+    return NULL;
+}
+
+/*
+ * ======================================================================
+ *  OPTION:  -operation <=> PGA_MINIMIZE / PGA_MAXIMIZE
+ * ======================================================================
+ */
+int
+RpOption_ParseOper(interp, valObj, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    Tcl_Obj *valObj;     /* set option to this new value */
+    ClientData cdata;    /* save in this data structure */
+    int offset;          /* save at this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    char *val = Tcl_GetStringFromObj(valObj, (int*)NULL);
+    if (strcmp(val,"minimize") == 0) {
+        *ptr = PGA_MINIMIZE;
+    }
+    else if (strcmp(val,"maximize") == 0) {
+        *ptr = PGA_MAXIMIZE;
+    }
+    else {
+        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+            "bad value \"", val, "\": should be minimize, maximize",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+int
+RpOption_GetOper(interp, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    ClientData cdata;    /* get from this data structure */
+    int offset;          /* get from this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    switch (*ptr) {
+    case PGA_MINIMIZE:
+        Tcl_SetResult(interp, "minimize", TCL_STATIC);
+        break;
+    case PGA_MAXIMIZE:
+        Tcl_SetResult(interp, "maximize", TCL_STATIC);
+        break;
+    default:
+        Tcl_SetResult(interp, "???", TCL_STATIC);
+        break;
+    }
+    return TCL_OK;
+}
+
+
+/*
+ * ======================================================================
+ *  OPTION:  -crossovtype <=> PGA_CROSSOVER_UNIFORM / PGA_CROSSOVER_SBX
+ * ======================================================================
+ */
+int
+RpOption_ParseCrossovType(interp, valObj, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    Tcl_Obj *valObj;     /* set option to this new value */
+    ClientData cdata;    /* save in this data structure */
+    int offset;          /* save at this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    char *val = Tcl_GetStringFromObj(valObj, (int*)NULL);
+    if (strcmp(val,"uniform") == 0) {
+        *ptr = PGA_CROSSOVER_UNIFORM;
+    }
+    else if (strcmp(val,"sbx") == 0) {
+        *ptr = PGA_CROSSOVER_SBX;
+    }
+    else if (strcmp(val,"triangular")== 0 ){
+    	*ptr = PGA_CROSSOVER_TRIANGULAR;
+    }
+    else {
+        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+            "bad value \"", val, "\": should be either 'uniform' or 'sbx'",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+int
+RpOption_GetCrossovType(interp, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    ClientData cdata;    /* get from this data structure */
+    int offset;          /* get from this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    switch (*ptr) {
+    case PGA_CROSSOVER_UNIFORM:
+        Tcl_SetResult(interp, "uniform", TCL_STATIC);
+        break;
+    case PGA_CROSSOVER_SBX:
+        Tcl_SetResult(interp, "sbx", TCL_STATIC);
+        break;
+    case PGA_CROSSOVER_TRIANGULAR:
+    	Tcl_SetResult(interp,"triangular",TCL_STATIC);
+    	break;    
+    default:
+        Tcl_SetResult(interp, "???", TCL_STATIC);
+        break;
+    }
+    return TCL_OK;
+}
+
+
+
+
+/*
+ * ======================================================================
+ *  OPTION:  -poprepl <=> PGASetPopReplacementType()
+ * ======================================================================
+ */
+int
+RpOption_ParsePopRepl(interp, valObj, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    Tcl_Obj *valObj;     /* set option to this new value */
+    ClientData cdata;    /* save in this data structure */
+    int offset;          /* save at this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    char *val = Tcl_GetStringFromObj(valObj, (int*)NULL);
+    if (*val == 'b' && strcmp(val,"best") == 0) {
+        *ptr = PGA_POPREPL_BEST;
+    }
+    else if (*val == 'r' && strcmp(val,"random-repl") == 0) {
+        *ptr = PGA_POPREPL_RANDOM_REP;
+    }
+    else if (*val == 'r' && strcmp(val,"random-norepl") == 0) {
+        *ptr = PGA_POPREPL_RANDOM_NOREP;
+    }
+    else {
+        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+            "bad value \"", val, "\": should be best, random-norepl,"
+            " or random-repl", (char*)NULL);
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+int
+RpOption_GetPopRepl(interp, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    ClientData cdata;    /* get from this data structure */
+    int offset;          /* get from this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    switch (*ptr) {
+    case PGA_POPREPL_BEST:
+        Tcl_SetResult(interp, "best", TCL_STATIC);
+        break;
+    case PGA_POPREPL_RANDOM_REP:
+        Tcl_SetResult(interp, "random-repl", TCL_STATIC);
+        break;
+    case PGA_POPREPL_RANDOM_NOREP:
+        Tcl_SetResult(interp, "random-norepl", TCL_STATIC);
+        break;
+    default:
+        Tcl_SetResult(interp, "???", TCL_STATIC);
+        break;
+    }
+    return TCL_OK;
+}
+
+/*
+ * ==================================================================================================================
+ *  OPTION:  -stpcriteria <=> PGA_STOP_MAXITER / PGA_STOP_NOCHANGE / PGA_STOP_TOOSIMILAR /
+ * 	PGA_STOP_AV_FITNESS / PGA_STOP_BEST_FITNESS / PGA_STOP_VARIANCE / PGA_STOP_TIMEELAPSED
+ * ==================================================================================================================
+ */
+int
+RpOption_ParseStpCriteria(interp, valObj, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    Tcl_Obj *valObj;     /* set option to this new value */
+    ClientData cdata;    /* save in this data structure */
+    int offset;          /* save at this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    char *val = Tcl_GetStringFromObj(valObj, (int*)NULL);
+    if (strcmp(val,"maxiter") == 0) {
+        *ptr = PGA_STOP_MAXITER;
+    }
+    else if (strcmp(val,"nochange") == 0) {
+        *ptr = PGA_STOP_NOCHANGE;
+    }
+    else if (strcmp(val,"toosimilar") == 0){
+    	*ptr = PGA_STOP_TOOSIMILAR;
+    }
+    else if (strcmp(val,"avfitness") == 0){
+    	*ptr = PGA_STOP_AV_FITNESS;
+    }
+    else if (strcmp(val,"bestfitness") == 0){
+    	*ptr = PGA_STOP_BEST_FITNESS;
+    }
+    else if (strcmp(val,"varoffitness") == 0){
+    	*ptr = PGA_STOP_VARIANCE;
+    }
+    else if (strcmp(val,"timeelapsed") == 0){
+    	*ptr = PGA_STOP_TIMEELAPSED;
+    }
+    
+    else {
+        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+            "bad value \"", val, "\": should be one of the following: maxiter, nochange, toosimilar, avfitness, bestfitness, varoffitness or timeelapsed",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+int
+RpOption_GetStpCriteria(interp, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    ClientData cdata;    /* get from this data structure */
+    int offset;          /* get from this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    switch (*ptr) {
+    case PGA_STOP_MAXITER:
+        Tcl_SetResult(interp, "maxiter", TCL_STATIC);
+        break;
+    case PGA_STOP_NOCHANGE:
+        Tcl_SetResult(interp, "nochange", TCL_STATIC);
+        break;
+    case PGA_STOP_TOOSIMILAR:
+    	Tcl_SetResult(interp, "toosimilar", TCL_STATIC);
+    	break;
+    case PGA_STOP_AV_FITNESS:
+        Tcl_SetResult(interp, "avfitness", TCL_STATIC);
+        break;
+    case PGA_STOP_BEST_FITNESS:
+        Tcl_SetResult(interp, "bestfitness", TCL_STATIC);
+        break;
+    case PGA_STOP_VARIANCE:
+        Tcl_SetResult(interp, "varoffitness", TCL_STATIC);
+        break;
+    case PGA_STOP_TIMEELAPSED:
+        Tcl_SetResult(interp, "timeelapsed", TCL_STATIC);
+        break;        
+    default:
+        Tcl_SetResult(interp, "???", TCL_STATIC);
+        break;
+    }
+    return TCL_OK;
+}
+
+/*
+ * ======================================================================
+ *  ROUTINES FOR CONNECTING PGACONTEXT <=> RPOPTIMENV
+ * ======================================================================
+ * PgapLinkContext2Env()
+ *   This routine is used internally to establish a relationship between
+ *   a PGAContext token and its corresponding RpOptimEnv data.  The
+ *   PGA routines don't provide a way to pass the RpOptimEnv data along,
+ *   so we use these routines to find the correspondence.
+ *
+ * PgapGetEnvForContext()
+ *   Returns the RpOptimEnv associated with a given PGAContext.  If the
+ *   link has not been established via PgapLinkContext2Env(), then this
+ *   routine returns NULL.
+ *
+ * PgapUnlinkContext2Env()
+ *   Breaks the link between a PGAContext and its RpOptimEnv.  Should
+ *   be called when the PGAContext is destroyed and is no longer valid.
+ * ----------------------------------------------------------------------
+ */
+static Tcl_HashTable *Pgacontext2Rpenv = NULL;
+
+void
+PgapLinkContext2Env(ctx, envPtr)
+    PGAContext *ctx;      /* pgapack context for this optimization */
+    RpOptimEnv *envPtr;   /* corresponding Rappture optimization data */
+{
+    Tcl_HashEntry *ctxEntry;
+    int newEntry;
+
+    if (Pgacontext2Rpenv == NULL) {
+        Pgacontext2Rpenv = (Tcl_HashTable*)malloc(sizeof(Tcl_HashTable));
+        Tcl_InitHashTable(Pgacontext2Rpenv, TCL_ONE_WORD_KEYS);
+    }
+    ctxEntry = Tcl_CreateHashEntry(Pgacontext2Rpenv, (char*)ctx, &newEntry);
+    Tcl_SetHashValue(ctxEntry, (ClientData)envPtr);
+}
+
+RpOptimEnv*
+PgapGetEnvForContext(ctx)
+    PGAContext *ctx;
+{
+    Tcl_HashEntry *entryPtr;
+
+    if (Pgacontext2Rpenv) {
+        entryPtr = Tcl_FindHashEntry(Pgacontext2Rpenv, (char*)ctx);
+        if (entryPtr) {
+            return (RpOptimEnv*)Tcl_GetHashValue(entryPtr);
+        }
+    }
+    return NULL;
+}
+
+void
+PgapUnlinkContext2Env(ctx)
+    PGAContext *ctx;
+{
+    Tcl_HashEntry *entryPtr;
+
+    if (Pgacontext2Rpenv) {
+        entryPtr = Tcl_FindHashEntry(Pgacontext2Rpenv, (char*)ctx);
+        if (entryPtr) {
+            Tcl_DeleteHashEntry(entryPtr);
+        }
+    }
+}
+/*---------------------------------------------------------------------------------
+ * PGARuntimeDTInit(): It initializes the runtime data table.
+ * The table is organized slightly counter-intuitively
+ * Instead of a
+ *  param1|param2|param3  |param4...
+ * 	val11 |val12 |val13   |val14...
+ * 	val12 |val22 |val23   |val24....
+ * orientation, it is organized as
+ * 	param1|val11|val12
+ * 	param2|val21|val22
+ * 	param3|val31|val32
+ * 	param4|val41|val42
+ * Reallocating for additional columns is easier than reallocating additional rows and then
+ * reallocating for columns 
+ * --------------------------------------------------------------------------------
+ */
+
+void PGARuntimeDataTableInit(envPtr)
+RpOptimEnv *envPtr;
+{    
+	int i;
+	if(envPtr != NULL){
+		table.num_of_rows = (envPtr->numParams)+1;
+		table.data = malloc((table.num_of_rows)*sizeof(double*));
+		if(table.data == NULL){
+			panic("\nAllocation for Runtime Data Table failed\n");
+		}
+		for(i=0;i<table.num_of_rows;i++){
+			table.data[i] = malloc(PGAPACK_RUNTIME_TABLE_DEFAULT_SIZE*sizeof(double));
+			if(table.data[i] == NULL){
+				panic("\nAllocation for Runtime Data Table failed\n");
+			}			
+		}
+		table.no_of_samples_evaled = 0;
+		table.no_of_columns = PGAPACK_RUNTIME_TABLE_DEFAULT_SIZE;
+		
+	}else{
+		panic("\nError: NULL Environment variable OR Table pointer passed to Data Table Init\n");
+	}
+}
+
+void PGARuntimeDataTableDeInit()
+{	
+	int i;
+	if((&table) == NULL){
+		panic("Error: Table not present, therefore cannot free memory..");
+	}
+	for(i=0;i<table.num_of_rows;i++){
+		free(table.data[i]);
+	}
+	free(table.data);
+}
+
+void PGARuntimeDataTableSetSampleValue(chrom,fitness)
+RpOptimParam *chrom;
+double fitness;
+{
+	int i;
+	//printf("\nSetting sample value.......................\n");
+	if(chrom!=NULL && (&table)!=NULL){
+		(table.no_of_samples_evaled)+=1;
+		if((table.no_of_samples_evaled) > table.no_of_columns){
+			/* then Reallocate space for more columns)*/
+			(table.no_of_columns)+=(table.no_of_columns);
+				//TODO GTG: Delete printing stuff
+			for(i=0;i<(table.num_of_rows);i++){
+				table.data[i] = realloc(table.data[i],table.no_of_columns);
+				if(table.data[i]==NULL){
+					panic("\nError: Could not Reallocate more space for the table");
+				}				
+			}
+		}else{
+			if(chrom->type == RP_OPTIMPARAM_NUMBER){
+				for(i=0;i<(table.num_of_rows);i++){
+					if(i==0){
+						table.data[i][(table.no_of_samples_evaled)-1] = fitness;
+						//printf("\nSample Number %d:- Fitness: %lf\t",table.no_of_samples_evaled,fitness);
+					}else{
+						table.data[i][(table.no_of_samples_evaled)-1] = chrom[i-1].value.dval;
+						//printf("Param %d %lf\t",i,table.data[i][(table.no_of_samples_evaled)-1]);
+					}
+                }
+			}else{
+				panic("\n Chromosome value is RP_OPTIMPARAM_STRING\n");
+				//GTG TODO: find out what happens in this case. Will we be better off handling Tcl_objects?
+			}	
+		}
+	}else{
+		panic("\nError:Either Chromosome, or table passed to PGARuntimeDataTableSetSampleValue() is NULL\n"); 
+	}
+	
+}
+
+void GetSampleInformation(buffer,sampleNumber)
+	char *buffer;
+	int sampleNumber;
+{
+	int i;
+	char tempBuff[50];
+	printf("\nFetching sample information.........................\n");
+	if((&table) == NULL){
+		panic("Table uninitialized");
+	}
+	if(sampleNumber<=0){
+		sprintf(buffer,"\nNumber of Samples Evaluated so far: %d\n",(table.no_of_samples_evaled)+1);
+		return;
+	}
+	if(((table.num_of_rows)-1)*10>SINGLE_SAMPLE_DATA_BUFFER_DEFAULT_SIZE){
+		buffer = realloc(buffer,50+25*(table.num_of_rows));
+		//resizing the buffer, keeping 50 for display related jazz, around 12-15 characs for param names
+		//and 10 characs for Fl.pt. display of the value
+		if(buffer == NULL){
+			panic("\nError: Could not reallocate space for sample data buffer");
+		}
+	}
+	for(i=0;i<(table.num_of_rows);i++){
+		if(i==0){
+			sprintf(buffer,"\nSample Number %d ----> Fitness: %lf  ",sampleNumber,table.data[i][sampleNumber-1]);
+		}else{
+			sprintf(tempBuff,"Param %d: %lf  ",i,table.data[i][sampleNumber-1]);
+			strcat(buffer,tempBuff);
+		}
+	}
+	strcat(buffer,"\n");
+}
Index: /tags/1.6.0/packages/optimizer/src/rp_optimizer.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/rp_optimizer.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/rp_optimizer.c	(revision 6168)
@@ -0,0 +1,267 @@
+/*
+ * ----------------------------------------------------------------------
+ *  rp_optimizer
+ *
+ *  This is the C language API for the optimization package in
+ *  Rappture.  It lets you set up an optimization of some fitness
+ *  function with respect to a set of inputs.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+#include "rp_optimizer.h"
+
+static void RpOptimCleanupParam _ANSI_ARGS_((RpOptimParam *paramPtr));
+
+/*
+ * ----------------------------------------------------------------------
+ * RpOptimCreate()
+ *
+ * Used to create the context for an optimization.  Creates an empty
+ * context and returns a pointer to it.  The context can be updated
+ * by calling functions like RpOptimAddParamNumber to define various
+ * input parameters.
+ * ----------------------------------------------------------------------
+ */
+RpOptimEnv*
+RpOptimCreate(pluginDefn)
+    RpOptimPlugin *pluginDefn;    /* plug-in handling this optimization */
+{
+    RpOptimEnv *envPtr;
+    envPtr = (RpOptimEnv*)malloc(sizeof(RpOptimEnv));
+
+    envPtr->pluginDefn = pluginDefn;
+    envPtr->pluginData = NULL;
+    envPtr->toolData   = NULL;
+
+    if (pluginDefn->initProc) {
+        envPtr->pluginData = (*pluginDefn->initProc)();
+    }
+
+    envPtr->numParams = 0;
+    envPtr->maxParams = 5;
+    envPtr->paramList = (RpOptimParam**)malloc(
+        (size_t)(envPtr->maxParams*sizeof(RpOptimParam*))
+    );
+
+    return envPtr;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * RpOptimAddParam()
+ *
+ * Used internally to add a new parameter into the given optimization
+ * context.  The internal list of parameters is resized, if necessary,
+ * to accommodate the new parameter.
+ * ----------------------------------------------------------------------
+ */
+void
+RpOptimAddParam(envPtr, paramPtr)
+    RpOptimEnv *envPtr;      /* context for this optimization */
+    RpOptimParam *paramPtr;  /* parameter being added */
+{
+    RpOptimParam **newParamList;
+
+    /*
+     * Add the new parameter at the end of the list.
+     */
+    envPtr->paramList[envPtr->numParams++] = paramPtr;
+
+    /*
+     * Out of space?  Then double the space available for params.
+     */
+    if (envPtr->numParams >= envPtr->maxParams) {
+        envPtr->maxParams *= 2;
+        newParamList = (RpOptimParam**)malloc(
+            (size_t)(envPtr->maxParams*sizeof(RpOptimParam*))
+        );
+        memcpy(newParamList, envPtr->paramList,
+            (size_t)(envPtr->numParams*sizeof(RpOptimParam*)));
+        free(envPtr->paramList);
+        envPtr->paramList = newParamList;
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * RpOptimAddParamNumber()
+ *
+ * Used to add a number parameter as an input to an optimization.
+ * Each number has a name and a double precision value that can be
+ * constrained between min/max values.  Adds this number to the end
+ * of the parameter list in the given optimization context.
+ * ----------------------------------------------------------------------
+ */
+RpOptimParam*
+RpOptimAddParamNumber(envPtr, name)
+    RpOptimEnv *envPtr;   /* context for this optimization */
+    char *name;           /* name of this parameter */
+{
+    RpOptimParamNumber *numPtr;
+    numPtr = (RpOptimParamNumber*)malloc(sizeof(RpOptimParamNumber));
+    numPtr->base.name = strdup(name);
+    numPtr->base.type = RP_OPTIMPARAM_NUMBER;
+    numPtr->base.value.dval = 0.0;
+    numPtr->min = -DBL_MAX;
+    numPtr->max = DBL_MAX;
+    numPtr->mutnrate = PARAM_NUM_UNSPEC_MUTN_RATE; /*Unspecified by default, should result in global mutn rate being applied*/
+    numPtr->mutnValue = 0.01; /* value of this number will be changed by plus/minus hundredth of its current value*/
+    numPtr->randdist = RAND_NUMBER_DIST_GAUSSIAN ;/*Gaussian by default*/
+    numPtr->stddev = 1; 
+    numPtr->mean = 0;
+    numPtr->strictmax = 0; /*no strictmax truncation by default*/
+    numPtr->strictmin = 0; /*no strict minimum truncation by default*/
+	numPtr->units = ""; /* Blank Units by default*/
+    RpOptimAddParam(envPtr, (RpOptimParam*)numPtr);
+
+    return (RpOptimParam*)numPtr;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * RpOptimAddParamString()
+ *
+ * Used to add a string parameter as an input to an optimization.
+ * Each string has a name and a list of allowed values terminated
+ * by a NULL.  Adds this string to the end of the parameter list
+ * in the given optimization context.
+ * ----------------------------------------------------------------------
+ */
+RpOptimParam*
+RpOptimAddParamString(envPtr, name)
+    RpOptimEnv *envPtr;   /* context for this optimization */
+    char *name;           /* name of this parameter */
+{
+    RpOptimParamString *strPtr;
+    strPtr = (RpOptimParamString*)malloc(sizeof(RpOptimParamString));
+    strPtr->base.name = strdup(name);
+    strPtr->base.type = RP_OPTIMPARAM_STRING;
+    strPtr->base.value.sval.num = -1;
+    strPtr->base.value.sval.str = NULL;
+    strPtr->values = NULL;
+    strPtr->numValues = 0;
+
+    RpOptimAddParam(envPtr, (RpOptimParam*)strPtr);
+
+    return (RpOptimParam*)strPtr;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * RpOptimFindParam()
+ *
+ * Used to look for an existing parameter with the specified name.
+ * Returns a pointer to the parameter, or NULL if not found.
+ * ----------------------------------------------------------------------
+ */
+RpOptimParam*
+RpOptimFindParam(envPtr, name)
+    RpOptimEnv *envPtr;   /* context for this optimization */
+    char *name;           /* name of this parameter */
+{
+    int n;
+    for (n=0; envPtr->numParams; n++) {
+        if (strcmp(name, envPtr->paramList[n]->name) == 0) {
+            return envPtr->paramList[n];
+        }
+    }
+    return NULL;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * RpOptimDeleteParam()
+ *
+ * Used to delete a parameter from the environment.  This is especially
+ * useful when an error is found while configuring the parameter, just
+ * after it was created.  If the name is not recognized, this function
+ * does nothing.
+ * ----------------------------------------------------------------------
+ */
+void
+RpOptimDeleteParam(envPtr, name)
+    RpOptimEnv *envPtr;   /* context for this optimization */
+    char *name;           /* name of this parameter */
+{
+    int n, j;
+    for (n=0; envPtr->numParams; n++) {
+        if (strcmp(name, envPtr->paramList[n]->name) == 0) {
+            RpOptimCleanupParam(envPtr->paramList[n]);
+            for (j=n+1; j < envPtr->numParams; j++) {
+                envPtr->paramList[j-1] = envPtr->paramList[j];
+            }
+            envPtr->numParams--;
+            break;
+        }
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * RpOptimDelete()
+ *
+ * Used to delete the context for an optimization once it is finished
+ * or no longer needed.  Frees up the memory needed to store the
+ * context and all input parameters.  After this call, the context
+ * should not be used again.
+ * ----------------------------------------------------------------------
+ */
+void
+RpOptimDelete(envPtr)
+    RpOptimEnv *envPtr;   /* context for this optimization */
+{
+    int n;
+
+    if (envPtr->pluginDefn && envPtr->pluginDefn->cleanupProc) {
+        (*envPtr->pluginDefn->cleanupProc)(envPtr->pluginData);
+    }
+    for (n=0; n < envPtr->numParams; n++) {
+        RpOptimCleanupParam(envPtr->paramList[n]);
+    }
+    free(envPtr->paramList);
+    free(envPtr);
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * RpOptimCleanupParam()
+ *
+ * Used internally to free up the data associated with an optimization
+ * parameter.  Looks at the parameter type and frees up the appropriate
+ * data.
+ * ----------------------------------------------------------------------
+ */
+static void
+RpOptimCleanupParam(paramPtr)
+    RpOptimParam *paramPtr;  /* data to be freed */
+{
+    int n;
+    RpOptimParamNumber *numPtr;
+    RpOptimParamString *strPtr;
+
+    free(paramPtr->name);
+    switch (paramPtr->type) {
+        case RP_OPTIMPARAM_NUMBER:
+            numPtr = (RpOptimParamNumber*)paramPtr;
+            /* nothing special to free here */
+            break;
+        case RP_OPTIMPARAM_STRING:
+            strPtr = (RpOptimParamString*)paramPtr;
+            if (strPtr->values) {
+                for (n=0; strPtr->values[n]; n++) {
+                    free(strPtr->values[n]);
+                }
+            }
+            break;
+    }
+    free(paramPtr);
+}
Index: /tags/1.6.0/packages/optimizer/src/rp_optimizer.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/rp_optimizer.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/rp_optimizer.h	(revision 6168)
@@ -0,0 +1,161 @@
+/*
+ * ----------------------------------------------------------------------
+ *  rp_optimizer
+ *
+ *  This is the C language API for the optimization package in
+ *  Rappture.  It lets you set up an optimization of some fitness
+ *  function with respect to a set of inputs.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RP_OPTIMIZER
+#define RP_OPTIMIZER
+
+#include <tcl.h>
+#include <math.h>
+#include <float.h>
+#include <string.h>
+#include <malloc.h>
+#include "rp_tcloptions.h"
+
+#define PGAPACK_RUNTIME_TABLE_DEFAULT_SIZE 5000 /*Approx Number of Samples in a run*/
+#define SINGLE_SAMPLE_DATA_BUFFER_DEFAULT_SIZE 5000
+
+/*User defined Random Number Distributions*/
+#define RAND_NUMBER_DIST_GAUSSIAN 1
+#define RAND_NUMBER_DIST_UNIFORM 2
+
+/* Used to indicate unspecified mutation rate for a param, will result in global mutn rate being applied*/
+#define PARAM_NUM_UNSPEC_MUTN_RATE -1.0
+
+/*
+ * General-purpose allocation/cleanup routines:
+ * These are used, for example, for the plug-in architecture.
+ */
+typedef ClientData (RpOptimInit)_ANSI_ARGS_(());
+typedef void (RpOptimCleanup)_ANSI_ARGS_((ClientData cdata));
+
+/*
+ * During each optimization, a function of the following type is
+ * called again and again to evaluate input parameters and compute
+ * the fitness function.
+ */
+typedef enum {
+    RP_OPTIM_SUCCESS=0, RP_OPTIM_UNKNOWN, RP_OPTIM_FAILURE, RP_OPTIM_ABORTED, RP_OPTIM_RESTARTED
+} RpOptimStatus;
+
+struct RpOptimEnv;   /* defined below */
+struct RpOptimParam;
+
+typedef RpOptimStatus (RpOptimEvaluator) _ANSI_ARGS_((
+    struct RpOptimEnv *envPtr, struct RpOptimParam *values, int numValues,
+    double *fitnessPtr));
+
+typedef RpOptimStatus (RpOptimHandler) _ANSI_ARGS_((
+    struct RpOptimEnv *envPtr, RpOptimEvaluator *evalProc,
+    char *fitnessExpr));
+
+/*
+ * Each optimization package is plugged in to this infrastructure
+ * by defining the following data at the top of rp_optimizer_tcl.c
+ */
+typedef struct RpOptimPlugin {
+    char *name;                   /* name of this package for -using */
+    RpOptimInit *initProc;        /* initialization routine */
+    RpOptimHandler *runProc;      /* handles the core optimization */
+    RpOptimCleanup *cleanupProc;  /* cleanup routine */
+    RpTclOption *optionSpec;      /* specs for config options */
+} RpOptimPlugin;
+
+/*
+ * This is the basic definition for each parameter within an optimization.
+ * Each parameter has a name, type, and value.  The value is important
+ * at the end of an optimization.  It is either the final value, or the
+ * value where we left off when the optimization was terminated.
+ */
+typedef enum {
+    RP_OPTIMPARAM_NUMBER, RP_OPTIMPARAM_STRING
+} RpOptimParamType;
+
+typedef struct RpDiscreteString {
+    int num;                        /* integer representing this string */
+    char *str;                      /* actual string selected */
+} RpDiscreteString;
+
+typedef struct RpOptimParam {
+    char *name;                     /* name of this parameter */
+    RpOptimParamType type;          /* paramter type -- number, string, etc */
+    union {
+        double dval;                /* slot for number value */
+        int ival;                   /* slot for integer value */
+        RpDiscreteString sval;      /* slot for string value */
+    } value;
+} RpOptimParam;
+
+/*
+ * NUMBER PARAMETERS have additional constraints.
+ */
+typedef struct RpOptimParamNumber {
+    RpOptimParam base;              /* basic parameter info */
+    double min;                     /* optimization constraint: min value */
+    double max;                     /* optimization constraint: max value */
+    double mutnrate;            	/* independently sets mutation rate for each parameter*/
+    double mutnValue;               /* on mutation bumps up/down the value by val (+-) mutnValue*val */
+    int randdist;             		/* gaussian or uniform distribution*/
+    int strictmin;					/* whether a strict min is to be applied for gauss. rand. numbers*/
+    int strictmax;					/* whether a strict max is to be applied for gauss. rand. numbers*/
+    double stddev;					/* std deviaton for gaussian profile*/
+    double mean;					/* mean for gaussian profile*/
+    char *units;
+} RpOptimParamNumber;
+
+/*
+ * STRING PARAMETERS have a set of allowed values.
+ */
+typedef struct RpOptimParamString {
+    RpOptimParam base;              /* basic parameter info */
+    char **values;                  /* array of allowed values */
+    int numValues;                  /* number of allowed values */
+} RpOptimParamString;
+
+/*
+ * Each optimization problem is represented by a context that includes
+ * the parameters that will be varied.
+ */
+typedef struct RpOptimEnv {
+    RpOptimPlugin *pluginDefn;      /* plug-in handling this optimization */
+    ClientData pluginData;          /* data created by plugin init routine */
+    RpOptimEvaluator *evalProc;     /* called during optimization to do run */
+    char *fitnessExpr;              /* fitness function in string form */
+    ClientData toolData;            /* data used during tool execution */
+    RpOptimParam **paramList;       /* list of input parameters to vary */
+    int numParams;                  /* current number of parameters */
+    int maxParams;                  /* storage for this many paramters */
+} RpOptimEnv;
+
+/*
+ *  Here are the functions in the API:
+ */
+EXTERN RpOptimEnv* RpOptimCreate _ANSI_ARGS_((RpOptimPlugin *pluginDefn));
+
+EXTERN RpOptimParam* RpOptimAddParamNumber _ANSI_ARGS_((RpOptimEnv *envPtr,
+    char *name));
+
+EXTERN RpOptimParam* RpOptimAddParamString _ANSI_ARGS_((RpOptimEnv *envPtr,
+    char *name));
+
+EXTERN RpOptimParam* RpOptimFindParam _ANSI_ARGS_((RpOptimEnv *envPtr,
+    char *name));
+
+EXTERN void RpOptimDeleteParam _ANSI_ARGS_((RpOptimEnv *envPtr, char *name));
+
+EXTERN void RpOptimDelete _ANSI_ARGS_((RpOptimEnv *envPtr));
+
+
+#endif
Index: /tags/1.6.0/packages/optimizer/src/rp_optimizer_tcl.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/rp_optimizer_tcl.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/rp_optimizer_tcl.c	(revision 6168)
@@ -0,0 +1,968 @@
+/*
+ * ----------------------------------------------------------------------
+ *  rp_optimizer_tcl
+ *
+ *  This is the Tcl API for the functions in rp_optimizer.  This code
+ *  allows you to call all of the core optimization functions from Tcl.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "rp_optimizer.h"
+
+extern int pgapack_abort;
+extern int pgapack_restart_user_action;
+
+/*
+ * ----------------------------------------------------------------------
+ * KNOWN OPTIMIZATION PACKAGES
+ * Add an entry below for each new optimization package that is
+ * plugged in and available via the -using option.  End with all
+ * NULL values.
+ * ----------------------------------------------------------------------
+ */
+RpOptimInit PgapackInit;
+RpOptimHandler PgapackRun;
+RpOptimCleanup PgapackCleanup;
+extern RpTclOption PgapackOptions;
+
+static RpOptimPlugin rpOptimPlugins[] = {
+    {"pgapack", PgapackInit, PgapackRun, PgapackCleanup, &PgapackOptions},
+    {NULL, NULL, NULL},
+};
+
+typedef struct RpOptimToolData {
+    Tcl_Interp *interp;             /* interp handling this tool */
+    Tcl_Obj *toolPtr;               /* command for tool object */
+    Tcl_Obj *updateCmdPtr;          /* command used to look for abort */
+} RpOptimToolData;
+
+/*
+ * ----------------------------------------------------------------------
+ *  Options for the various parameter types
+ * ----------------------------------------------------------------------
+ */
+ 
+RpCustomTclOptionGet RpOption_GetRandDist;
+RpCustomTclOptionParse RpOption_ParseRandDist;
+RpTclOptionType RpOption_RandDist = {
+	"pga_randdist", RpOption_ParseRandDist,RpOption_GetRandDist,NULL
+}; 
+RpTclOption rpOptimNumberOpts[] = {
+  {"-min", RP_OPTION_DOUBLE, Rp_Offset(RpOptimParamNumber,min)},
+  {"-max", RP_OPTION_DOUBLE, Rp_Offset(RpOptimParamNumber,max)},
+  {"-mutnrate",RP_OPTION_DOUBLE, Rp_Offset(RpOptimParamNumber,mutnrate)},
+  {"-mutnValue",RP_OPTION_DOUBLE, Rp_Offset(RpOptimParamNumber,mutnValue)},
+  {"-randdist",&RpOption_RandDist,Rp_Offset(RpOptimParamNumber,randdist)},
+  {"-strictmin",RP_OPTION_BOOLEAN,Rp_Offset(RpOptimParamNumber,strictmin)},
+  {"-strictmax",RP_OPTION_BOOLEAN,Rp_Offset(RpOptimParamNumber,strictmax)},
+  {"-stddev",RP_OPTION_DOUBLE,Rp_Offset(RpOptimParamNumber,stddev)},
+  {"-mean",RP_OPTION_DOUBLE,Rp_Offset(RpOptimParamNumber,mean)},
+  {"-units",RP_OPTION_STRING,Rp_Offset(RpOptimParamNumber,units)},
+  {NULL, NULL, 0}
+};
+
+RpTclOption rpOptimStringOpts[] = {
+  {"-values", RP_OPTION_LIST, Rp_Offset(RpOptimParamString,values)},
+  {NULL, NULL, 0}
+};
+
+static int RpOptimizerCmd _ANSI_ARGS_((ClientData clientData,
+    Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
+static void RpOptimCmdDelete _ANSI_ARGS_((ClientData cdata));
+static int RpOptimInstanceCmd _ANSI_ARGS_((ClientData clientData,
+    Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));
+static RpOptimStatus RpOptimizerPerformInTcl _ANSI_ARGS_((RpOptimEnv *envPtr,
+    RpOptimParam *values, int numValues, double *fitnessPtr));
+
+#ifdef BUILD_Rappture
+__declspec( dllexport )
+#endif
+
+
+extern void PGARuntimeDataTableInit();
+extern void PGARuntimeDataTableDeInit();
+extern void GetSampleInformation();
+
+int
+Rapptureoptimizer_Init(Tcl_Interp *interp)   /* interpreter being initialized */
+{
+    if (Tcl_InitStubs(interp, "8.4", 0) == NULL) {
+        return TCL_ERROR;
+    }
+    if (Tcl_PkgProvide(interp, "RapptureOptimizer", PACKAGE_VERSION)
+          != TCL_OK) {
+        return TCL_ERROR;
+    }
+
+    Tcl_CreateObjCommand(interp, "::Rappture::optimizer", RpOptimizerCmd,
+        (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpOptimizerCmd()
+ *
+ *  Invoked whenever someone uses the "optimizer" command to create a
+ *  new optimizer context.  Handles the following syntax:
+ *
+ *      optimizer ?<name>? ?-using <pluginName>?
+ *
+ *  Creates a command called <name> that can be used to manipulate
+ *  the optimizer context.  Returns TCL_OK on success, and TCL_ERROR
+ *  (along with an error message in the interpreter) if anything goes
+ *  wrong.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpOptimizerCmd(cdata, interp, objc, objv)
+    ClientData cdata;         /* not used */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int objc;                 /* number of command line args */
+    Tcl_Obj *CONST objv[];    /* command line args */
+{
+    /* use this for auto-generated names */
+    static int autocounter = 0;
+
+    /* use this plugin by default for -using */
+    RpOptimPlugin *usingPluginPtr = &rpOptimPlugins[0];
+
+    /* no good default for the tool being optimized */
+    Tcl_Obj *toolPtr = NULL;
+
+    /* no name for this object by default */
+    char *name = NULL;
+
+    RpOptimEnv* envPtr;
+    RpOptimPlugin* pluginPtr;
+    RpOptimToolData* toolDataPtr;
+
+    int n;
+    char *option, autoname[32], *sep;
+    Tcl_CmdInfo cmdInfo;
+
+    /*
+     * Make sure that a command with this name doesn't already exist.
+     */
+    n = 1;
+    if (objc >= 2) {
+        name = Tcl_GetStringFromObj(objv[1], (int*)NULL);
+        if (*name != '-') {
+            if (Tcl_GetCommandInfo(interp, name, &cmdInfo)) {
+                Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                    "command \"", name, "\" already exists",
+                    (char*)NULL);
+                return TCL_ERROR;
+            }
+            n++;
+        }
+    }
+
+    /*
+     * Parse the rest of the arguments.
+     */
+    while (n < objc) {
+        option = Tcl_GetStringFromObj(objv[n], (int*)NULL);
+        if (strcmp(option,"-using") == 0) {
+            if (n+1 >= objc) {
+                Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                    "missing value for option \"", option, "\"",
+                    (char*)NULL);
+                return TCL_ERROR;
+            }
+
+            /* search for a plugin with the given name */
+            option = Tcl_GetStringFromObj(objv[n+1], (int*)NULL);
+            for (pluginPtr=rpOptimPlugins; pluginPtr->name; pluginPtr++) {
+                if (strcmp(pluginPtr->name,option) == 0) {
+                    break;
+                }
+            }
+            if (pluginPtr->name == NULL) {
+                /* oops! name not recognized */
+                Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                    "bad plugin name \"", option, "\": should be ",
+                    (char*)NULL);
+
+                sep = "";
+                for (pluginPtr=rpOptimPlugins; pluginPtr->name; pluginPtr++) {
+                    Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                        sep, pluginPtr->name, (char*)NULL);
+                    sep = ", ";
+                }
+                return TCL_ERROR;
+            }
+            usingPluginPtr = pluginPtr;
+            n += 2;
+        }
+        else if (strcmp(option,"-tool") == 0) {
+            if (n+1 >= objc) {
+                Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                    "missing value for option \"", option, "\"",
+                    (char*)NULL);
+                return TCL_ERROR;
+            }
+            toolPtr = objv[n+1];
+            Tcl_IncrRefCount(toolPtr);
+            n += 2;
+        }
+        else {
+            Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                "bad option \"", option, "\": should be ",
+                "-tool, -using", (char*)NULL);
+            return TCL_ERROR;
+        }
+    }
+
+    /*
+     * If a name wasn't specified, then auto-generate one.
+     */
+    while (name == NULL) {
+        sprintf(autoname, "optimizer%d", autocounter++);
+        if (!Tcl_GetCommandInfo(interp, autoname, &cmdInfo)) {
+            name = autoname;
+        }
+    }
+
+    /*
+     * Create an optimizer and install a Tcl command to access it.
+     */
+    envPtr = RpOptimCreate(usingPluginPtr);
+
+    toolDataPtr = (RpOptimToolData*)malloc(sizeof(RpOptimToolData));
+    toolDataPtr->interp = interp;
+    toolDataPtr->toolPtr = toolPtr;
+    toolDataPtr->updateCmdPtr = NULL;
+    envPtr->toolData = (ClientData)toolDataPtr;
+    Tcl_CreateObjCommand(interp, name, RpOptimInstanceCmd,
+        (ClientData)envPtr, (Tcl_CmdDeleteProc*)RpOptimCmdDelete);
+    Tcl_SetResult(interp, name, TCL_VOLATILE);
+    return TCL_OK;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ * RpOptimDelete()
+ *
+ * Called whenever a optimizer object is deleted to clean up after
+ * the command.  If the optimizer is running, it is aborted, and
+ * the optimizer is deleted.
+ * ----------------------------------------------------------------------
+ */
+static void
+RpOptimCmdDelete(cdata)
+    ClientData cdata;   /* optimizer being deleted */
+{
+    RpOptimEnv *envPtr = (RpOptimEnv*)cdata;
+    RpOptimToolData *toolDataPtr;
+    int n;
+    ClientData paramdata;
+
+    PGARuntimeDataTableDeInit();/*Free space allocated to data table here*/
+    if (envPtr->toolData) {
+        toolDataPtr = (RpOptimToolData*)envPtr->toolData;
+        if (toolDataPtr->toolPtr) {
+            Tcl_DecrRefCount(toolDataPtr->toolPtr);
+        }
+        if (toolDataPtr->updateCmdPtr) {
+            Tcl_DecrRefCount(toolDataPtr->updateCmdPtr);
+        }
+        free(toolDataPtr);
+        envPtr->toolData = NULL;
+    }
+
+    for (n=0; n < envPtr->numParams; n++) {
+        paramdata = (ClientData)envPtr->paramList[n];
+        switch (envPtr->paramList[n]->type) {
+        case RP_OPTIMPARAM_NUMBER:
+            RpTclOptionsCleanup(rpOptimNumberOpts, paramdata);
+            break;
+        case RP_OPTIMPARAM_STRING:
+            RpTclOptionsCleanup(rpOptimStringOpts, paramdata);
+            break;
+        }
+    }
+    RpOptimDelete(envPtr);
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpOptimInstanceCmd()
+ *
+ *  Invoked to handle the actions of an optimizer object.  Handles the
+ *  following syntax:
+ *
+ *      <name> add number <path> ?-min <number>? ?-max <number>?
+ *      <name> add string <path> ?-values <valueList>?
+ *      <name> get ?<glob>? ?-option?
+ *      <name> configure ?-option? ?value -option value ...?
+ *      <name> perform ?-tool <tool>? ?-fitness <expr>? \
+ *                     ?-updatecommand <varName>?
+ *      <name> using
+ *      <name> samples ?number?
+ *
+ *  The "add" command is used to add various parameter types to the
+ *  optimizer context.  The "perform" command kicks off an optimization
+ *  run. The "samples" command displays sample info during an optimization run.
+ * ------------------------------------------------------------------------
+ */
+static int
+RpOptimInstanceCmd(cdata, interp, objc, objv)
+    ClientData cdata;         /* optimizer context */
+    Tcl_Interp *interp;       /* interpreter handling this request */
+    int objc;                 /* number of command line args */
+    Tcl_Obj *CONST objv[];    /* command line args */
+{
+    RpOptimEnv* envPtr = (RpOptimEnv*)cdata;
+    RpOptimToolData* toolDataPtr = (RpOptimToolData*)envPtr->toolData;
+
+    int n, j, nvals, nmatches;
+    char *option, *type, *path, *fitnessExpr;
+    RpOptimParam *paramPtr;
+    RpOptimParamString *strPtr;
+    RpOptimStatus status;
+    RpTclOption *optSpecPtr;
+    Tcl_Obj *rval, *rrval, *toolPtr, *updateCmdPtr;
+    
+    if (objc < 2) {
+        Tcl_WrongNumArgs(interp, 1, objv, "option ?args...?");
+        return TCL_ERROR;
+    }
+    option = Tcl_GetStringFromObj(objv[1], (int*)NULL);
+
+    /*
+     * OPTION:  add type ?args...?
+     */
+    if (*option == 'a' && strcmp(option,"add") == 0) {
+        if (objc < 4) {
+            Tcl_WrongNumArgs(interp, 1, objv, "add type path ?args...?");
+            return TCL_ERROR;
+        }
+        type = Tcl_GetStringFromObj(objv[2], (int*)NULL);
+        path = Tcl_GetStringFromObj(objv[3], (int*)NULL);
+
+        /*
+         * OPTION:  add number name ?-min num? ?-max num?
+         */
+        if (*type == 'n' && strcmp(type,"number") == 0) {
+            paramPtr = RpOptimAddParamNumber(envPtr, path);
+            if (RpTclOptionsProcess(interp, objc-4, objv+4,
+                  rpOptimNumberOpts, (ClientData)paramPtr) != TCL_OK) {
+                RpOptimDeleteParam(envPtr, path);
+                return TCL_ERROR;
+            }
+        }
+
+        /*
+         * OPTION:  add string name ?-values list?
+         */
+        else if (*type == 's' && strcmp(type,"string") == 0) {
+            paramPtr = RpOptimAddParamString(envPtr, path);
+            if (RpTclOptionsProcess(interp, objc-4, objv+4,
+                  rpOptimStringOpts, (ClientData)paramPtr) != TCL_OK) {
+                RpOptimDeleteParam(envPtr, path);
+                return TCL_ERROR;
+            }
+
+            /* list of values just changed -- patch up the count */
+            strPtr = (RpOptimParamString*)paramPtr;
+            for (nvals=0; strPtr->values[nvals]; nvals++)
+                ; /* count the values */
+            strPtr->numValues = nvals;
+        }
+        else {
+            Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                "bad parameter type \"", type, "\": should be number, string",
+                (char*)NULL);
+            return TCL_ERROR;
+        }
+    } else if (*option == 'a' && strcmp(option,"abort") == 0) {
+	int value;
+
+        if (objc < 3) {
+            Tcl_WrongNumArgs(interp, 1, objv, "abort bool");
+            return TCL_ERROR;
+        }
+	if (Tcl_GetBooleanFromObj(interp, objv[2], &value) != TCL_OK) {
+	    return TCL_ERROR;
+	}
+	pgapack_abort = value;
+	return TCL_OK;
+    }else if (*option == 'r' && strcmp(option,"restart") == 0){
+		int value;
+        if (objc < 3) {
+            Tcl_WrongNumArgs(interp, 1, objv, "restart bool");
+            return TCL_ERROR;
+        }
+		if (Tcl_GetBooleanFromObj(interp, objv[2], &value) != TCL_OK) {
+	    	return TCL_ERROR;
+		}
+		pgapack_restart_user_action = value;
+		return TCL_OK;    
+	}else if (*option == 'g' && strcmp(option,"get") == 0) {
+	/*
+	 * OPTION:  get ?globPattern? ?-option?
+	 */
+        if (objc > 2) {
+            path = Tcl_GetStringFromObj(objv[2], (int*)NULL);
+        } else {
+            path = NULL;
+        }
+        if (objc > 3) {
+            option = Tcl_GetStringFromObj(objv[3], (int*)NULL);
+        } else {
+            option = NULL;
+        }
+        if (objc > 4) {
+            Tcl_WrongNumArgs(interp, 1, objv, "get ?pattern? ?-option?");
+            return TCL_ERROR;
+        }
+
+        /* count the number of matches */
+        nmatches = 0;
+        for (n=0; n < envPtr->numParams; n++) {
+            if (path == NULL
+                  || Tcl_StringMatch(envPtr->paramList[n]->name,path)) {
+                nmatches++;
+            }
+        }
+
+        rval = Tcl_NewListObj(0,NULL);
+        Tcl_IncrRefCount(rval);
+        for (n=0; n < envPtr->numParams; n++) {
+            if (path == NULL
+                  || Tcl_StringMatch(envPtr->paramList[n]->name,path)) {
+
+                rrval = Tcl_NewListObj(0,NULL);
+                Tcl_IncrRefCount(rrval);
+
+                /* add the parameter name as the first element */
+                if (nmatches > 1 || path == NULL) {
+                    if (Tcl_ListObjAppendElement(interp, rrval,
+                          Tcl_NewStringObj(envPtr->paramList[n]->name,-1))
+                          != TCL_OK) {
+                        Tcl_DecrRefCount(rrval);
+                        Tcl_DecrRefCount(rval);
+                        return TCL_ERROR;
+                    }
+                }
+
+                /* get the option specifications for this parameter */
+                switch (envPtr->paramList[n]->type) {
+                case RP_OPTIMPARAM_NUMBER:
+                    optSpecPtr = rpOptimNumberOpts;
+                    if (option == NULL) {
+                        /* no particular option value? then include type */
+                        if (Tcl_ListObjAppendElement(interp, rrval,
+                              Tcl_NewStringObj("number",-1)) != TCL_OK) {
+                            Tcl_DecrRefCount(rrval);
+                            Tcl_DecrRefCount(rval);
+                            return TCL_ERROR;
+                        }
+                    }
+                    break;
+                case RP_OPTIMPARAM_STRING:
+                    optSpecPtr = rpOptimStringOpts;
+                    if (option == NULL) {
+                        /* no particular option value? then include type */
+                        if (Tcl_ListObjAppendElement(interp, rrval,
+                              Tcl_NewStringObj("string",-1)) != TCL_OK) {
+                            Tcl_DecrRefCount(rrval);
+                            Tcl_DecrRefCount(rval);
+                            return TCL_ERROR;
+                        }
+                    }
+                    break;
+                default:
+                    Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                        "internal error: unrecognized parameter type",
+                        " for \"", envPtr->paramList[n]->name,"\"",
+                        (char*)NULL);
+                    Tcl_DecrRefCount(rrval);
+                    Tcl_DecrRefCount(rval);
+                    return TCL_ERROR;
+                }
+
+                if (option == NULL) {
+                    /* no particular option value */
+                    for (j=0; optSpecPtr[j].optname; j++) {
+                        char *curOpt = optSpecPtr[j].optname;
+                        /* append -option name */
+                        if (Tcl_ListObjAppendElement(interp, rrval,
+                              Tcl_NewStringObj(curOpt,-1)) != TCL_OK) {
+                            Tcl_DecrRefCount(rrval);
+                            Tcl_DecrRefCount(rval);
+                            return TCL_ERROR;
+                        }
+                        /* append option value */
+                        if (RpTclOptionGet(interp, optSpecPtr,
+                            (ClientData)envPtr->paramList[n],
+                            optSpecPtr[j].optname) != TCL_OK) {
+                            Tcl_DecrRefCount(rrval);
+                            Tcl_DecrRefCount(rval);
+                            return TCL_ERROR;
+                        }
+                        if (Tcl_ListObjAppendElement(interp, rrval,
+                              Tcl_GetObjResult(interp)) != TCL_OK) {
+                            Tcl_DecrRefCount(rrval);
+                            Tcl_DecrRefCount(rval);
+                            return TCL_ERROR;
+                        }
+                    }
+                } else {
+                    if (RpTclOptionGet(interp, optSpecPtr,
+                        (ClientData)envPtr->paramList[n], option) != TCL_OK) {
+                        Tcl_DecrRefCount(rrval);
+                        Tcl_DecrRefCount(rval);
+                        return TCL_ERROR;
+                    }
+                    if (Tcl_ListObjAppendElement(interp, rrval,
+                          Tcl_GetObjResult(interp)) != TCL_OK) {
+                        Tcl_DecrRefCount(rrval);
+                        Tcl_DecrRefCount(rval);
+                        return TCL_ERROR;
+                    }
+                }
+                if (Tcl_ListObjAppendElement(interp, rval, rrval) != TCL_OK) {
+                    Tcl_DecrRefCount(rrval);
+                    Tcl_DecrRefCount(rval);
+                    return TCL_ERROR;
+                }
+                Tcl_DecrRefCount(rrval);
+            }
+        }
+
+        if (nmatches == 1) {
+            /* only one result? then return it directly */
+            Tcl_ListObjIndex(interp, rval, 0, &rrval);
+            Tcl_SetObjResult(interp, rrval);
+        } else {
+            /* return a whole list */
+            Tcl_SetObjResult(interp, rval);
+        }
+        Tcl_DecrRefCount(rval);
+        return TCL_OK;
+    }
+
+    /*
+     * OPTION:  configure ?-option? ?value -option value ...?
+     */
+    else if (*option == 'c' && strcmp(option,"configure") == 0) {
+        optSpecPtr = envPtr->pluginDefn->optionSpec;
+        if (objc == 2) {
+            /* report all values: -option val -option val ... */
+
+            rval = Tcl_NewListObj(0,NULL);
+            Tcl_IncrRefCount(rval);
+
+            for (n=0; optSpecPtr[n].optname; n++) {
+                if (RpTclOptionGet(interp, optSpecPtr,
+                    (ClientData)envPtr->pluginData,
+                    optSpecPtr[n].optname) != TCL_OK) {
+                    Tcl_DecrRefCount(rval);
+                    return TCL_ERROR;
+                }
+                if (Tcl_ListObjAppendElement(interp, rval,
+                      Tcl_NewStringObj(optSpecPtr[n].optname,-1)) != TCL_OK) {
+                    Tcl_DecrRefCount(rval);
+                    return TCL_ERROR;
+                }
+                if (Tcl_ListObjAppendElement(interp, rval,
+                      Tcl_GetObjResult(interp)) != TCL_OK) {
+                    Tcl_DecrRefCount(rval);
+                    return TCL_ERROR;
+                }
+            }
+            Tcl_SetObjResult(interp, rval);
+            Tcl_DecrRefCount(rval);
+            return TCL_OK;
+        }
+        else if (objc == 3) {
+            /* report the value for just one option */
+            option = Tcl_GetStringFromObj(objv[2], (int*)NULL);
+            return RpTclOptionGet(interp, optSpecPtr,
+                (ClientData)envPtr->pluginData, option);
+        }
+        else {
+            return RpTclOptionsProcess(interp, objc-2, objv+2,
+                optSpecPtr, envPtr->pluginData);
+        }
+    }
+
+    /*
+     * OPTION:  perform ?-tool name? ?-fitness expr? ?-updatecommand name?
+     */
+    else if (*option == 'p' && strcmp(option,"perform") == 0) {
+        /* use this tool by default */
+        toolPtr = toolDataPtr->toolPtr;
+
+        /* no -fitness function by default */
+        fitnessExpr = NULL;
+
+        /* no -updatecommand by default */
+        updateCmdPtr = NULL;
+		
+		PGARuntimeDataTableInit(envPtr);/*Initialize Data table here....*/
+		
+        n = 2;
+        while (n < objc) {
+            option = Tcl_GetStringFromObj(objv[n], (int*)NULL);
+            if (n+1 >= objc) {
+                Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                    "missing value for option \"", option, "\"",
+                    (char*)NULL);
+                return TCL_ERROR;
+            }
+            if (strcmp(option,"-tool") == 0) {
+                toolPtr = objv[n+1];
+                n += 2;
+            }
+            else if (strcmp(option,"-fitness") == 0) {
+                fitnessExpr = Tcl_GetStringFromObj(objv[n+1], (int*)NULL);
+                n += 2;
+            }
+            else if (strcmp(option,"-updatecommand") == 0) {
+                updateCmdPtr = objv[n+1];
+                n += 2;
+            }
+            else {
+                Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                    "bad option \"", option, "\": should be -fitness, -tool,"
+                    " -updatecommand", (char*)NULL);
+                return TCL_ERROR;
+            }
+        }
+
+        /*
+         * Must have a tool object and a fitness function at this point,
+         * or else we don't know what to optimize.
+         */
+        if (toolPtr == NULL) {
+            Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                "tool being optimized not specified via -tool option",
+                (char*)NULL);
+            return TCL_ERROR;
+        }
+        if (fitnessExpr == NULL) {
+            Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                "missing -fitness function for optimization",
+                (char*)NULL);
+            return TCL_ERROR;
+        }
+
+        Tcl_IncrRefCount(toolPtr);
+        if (updateCmdPtr) {
+            Tcl_IncrRefCount(updateCmdPtr);
+            toolDataPtr->updateCmdPtr = updateCmdPtr;
+        }
+		
+        /* call the main optimization routine here */
+        status = (*envPtr->pluginDefn->runProc)(envPtr,
+            RpOptimizerPerformInTcl, fitnessExpr);
+		
+		fprintf(stderr, ">>>status=%d\n", status);
+
+        Tcl_DecrRefCount(toolPtr);
+        if (updateCmdPtr) {
+            Tcl_DecrRefCount(updateCmdPtr);
+            toolDataPtr->updateCmdPtr = NULL;
+        }
+
+        switch (status) {
+        case RP_OPTIM_SUCCESS:
+            Tcl_SetResult(interp, "success", TCL_STATIC);
+            break;
+        case RP_OPTIM_FAILURE:
+            Tcl_SetResult(interp, "failure", TCL_STATIC);
+            break;
+        case RP_OPTIM_ABORTED:
+	    fprintf(stderr, "Got abort status=%d\n", status);
+            Tcl_SetResult(interp, "aborted", TCL_STATIC);
+            break;
+        case RP_OPTIM_UNKNOWN:
+        default:
+            Tcl_SetResult(interp, "???", TCL_STATIC);
+            break;
+        }
+        return TCL_OK;
+    }
+
+    /*
+     * OPTION:  using
+     */
+    else if (*option == 'u' && strcmp(option,"using") == 0) {
+        if (objc > 2) {
+            Tcl_WrongNumArgs(interp, 1, objv, "using");
+            return TCL_ERROR;
+        }
+        Tcl_SetResult(interp, envPtr->pluginDefn->name, TCL_STATIC);
+
+        /* if the -tool was specified, then add it as a second element */
+        toolDataPtr = (RpOptimToolData*)envPtr->toolData;
+        if (toolDataPtr->toolPtr) {
+            Tcl_AppendElement(interp,
+                Tcl_GetStringFromObj(toolDataPtr->toolPtr, (int*)NULL));
+        }
+        return TCL_OK;
+    }
+    
+    else if(*option == 's' && strcmp(option,"samples") == 0){
+    	int sampleNumber = -1; /*initing sampnum to -1, use it when no sample number is specified*/
+    	char *sampleDataBuffer;
+    	if(objc>3){
+    		Tcl_WrongNumArgs(interp, 2, objv, "?sampleNumber?");
+            return TCL_ERROR;
+    	}
+    	
+    	if(objc == 3){
+	    	if(Tcl_GetIntFromObj(interp,objv[2],&sampleNumber) != TCL_OK){
+	    		return TCL_ERROR; 
+	    	}
+    		sampleDataBuffer = malloc(sizeof(char)*SINGLE_SAMPLE_DATA_BUFFER_DEFAULT_SIZE);
+    	}else{
+    		sampleDataBuffer = malloc(sizeof(char)*50);
+    	}
+    	
+    	if(sampleDataBuffer == NULL){
+    		panic("Error: Could not allocate memory for sample data buffer.");
+    	}
+    	GetSampleInformation(sampleDataBuffer,sampleNumber);
+		fprintf(stdout,sampleDataBuffer);/**TODO GTG check if this should be fprintf or something else*/
+		free(sampleDataBuffer);
+    	return TCL_OK;
+    	
+    }
+
+    else {
+        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+            "bad option \"", option, "\": should be add, configure, "
+            "get, perform, using, samples", (char*)NULL);
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpOptimizerPerformInTcl()
+ *
+ *  Invoked as a call-back within RpOptimPerform() to handle each
+ *  optimization run.  Launches a run of a Rappture-based tool using
+ *  the given values and computes the value for the fitness function.
+ *
+ *  Returns RP_OPTIM_SUCCESS if the run was successful, along with
+ *  the value in the fitness function in fitnessPtr.  If something
+ *  goes wrong with the run, it returns RP_OPTIM_FAILURE.
+ * ------------------------------------------------------------------------
+ */
+static RpOptimStatus
+RpOptimizerPerformInTcl(envPtr, values, numValues, fitnessPtr)
+    RpOptimEnv *envPtr;       /* optimization environment */
+    RpOptimParam *values;     /* incoming values for the simulation */
+    int numValues;            /* number of incoming values */
+    double *fitnessPtr;       /* returns: computed value of fitness func */
+{
+    RpOptimStatus result = RP_OPTIM_SUCCESS;
+    Tcl_Obj *xmlObj = NULL;
+    RpOptimToolData *toolDataPtr = (RpOptimToolData*)envPtr->toolData;
+    Tcl_Interp *interp = toolDataPtr->interp;
+
+    int n, status;
+#define MAXBUILTIN 10
+    int objc; Tcl_Obj **objv, *storage[MAXBUILTIN], *getcmd[3];
+    int rc; Tcl_Obj **rv;
+    Tcl_Obj *dataPtr;
+    Tcl_DString buffer;
+    RpOptimParamNumber *numPtr;
+    char dvalBuffer[50];
+
+    /*
+     * Set up the arguments for a Tcl evaluation.
+     */
+    objc = 2*numValues + 2;  /* "tool run" + (name value)*numValues */
+    if (objc > MAXBUILTIN) {
+        objv = (Tcl_Obj**)malloc(objc*sizeof(Tcl_Obj));
+    } else {
+        objv = storage;
+    }
+    objv[0] = toolDataPtr->toolPtr;
+    objv[1] = Tcl_NewStringObj("run",-1); Tcl_IncrRefCount(objv[1]);
+    for (n=0; n < numValues; n++) {
+        objv[2*n+2] = Tcl_NewStringObj(values[n].name, -1);
+        Tcl_IncrRefCount(objv[2*n+2]);
+
+        switch (values[n].type) {
+        case RP_OPTIMPARAM_NUMBER:
+        	numPtr = (RpOptimParamNumber*)envPtr->paramList[n];
+        	status = sprintf(dvalBuffer,"%lf%s",values[n].value.dval,numPtr->units);
+        	if(status<0){
+        		panic("Could not convert number into number+units format");
+        	}
+            objv[2*n+3] = Tcl_NewStringObj(dvalBuffer,-1);
+            Tcl_IncrRefCount(objv[2*n+3]);
+            break;
+        case RP_OPTIMPARAM_STRING:
+            objv[2*n+3] = Tcl_NewStringObj(values[n].value.sval.str,-1);
+            Tcl_IncrRefCount(objv[2*n+3]);
+            break;
+        default:
+            panic("bad parameter type in RpOptimizerPerformInTcl()");
+        }
+    }
+
+    /*
+     *  Invoke the tool and pick apart its results.
+     */
+    status = Tcl_EvalObjv(interp, objc, objv, TCL_EVAL_GLOBAL);
+
+    if (status != TCL_OK) {
+        result = RP_OPTIM_FAILURE;
+        fprintf(stderr, "== JOB FAILED: %s\n", Tcl_GetStringResult(interp));
+    } else {
+        dataPtr = Tcl_GetObjResult(interp);
+        /* hang on to this while we pick it apart into rv[] */
+        Tcl_IncrRefCount(dataPtr);
+
+        if (Tcl_ListObjGetElements(interp, dataPtr, &rc, &rv) != TCL_OK) {
+            result = RP_OPTIM_FAILURE;
+            fprintf(stderr, "== JOB FAILED: %s\n", Tcl_GetStringResult(interp));
+        } else if (rc != 2
+                    || Tcl_GetIntFromObj(interp, rv[0], &status) != TCL_OK) {
+            result = RP_OPTIM_FAILURE;
+            fprintf(stderr, "== JOB FAILED: malformed result: expected {status output}\n");
+        } else {
+            if (status != 0) {
+                result = RP_OPTIM_FAILURE;
+                fprintf(stderr, "== JOB FAILED with status code %d:\n%s\n",
+                    status, Tcl_GetStringFromObj(rv[1], (int*)NULL));
+            } else {
+                /*
+                 *  Get the output value from the tool output in the
+                 *  result we just parsed above:  {status xmlobj}
+                 *
+                 *  Eventually, we should write a whole parser to
+                 *  handle arbitrary fitness functions.  For now,
+                 *  just query a single output value by calling:
+                 *    xmlobj get fitnessExpr
+                 */
+                xmlObj = rv[1];
+                /* hang onto this for -updatecommand below */
+                Tcl_IncrRefCount(xmlObj);
+
+                getcmd[0] = xmlObj;
+                getcmd[1] = Tcl_NewStringObj("get",-1);
+                getcmd[2] = Tcl_NewStringObj(envPtr->fitnessExpr,-1);
+                for (n=0; n < 3; n++) {
+                    Tcl_IncrRefCount(getcmd[n]);
+                }
+
+                status = Tcl_EvalObjv(interp, 3, getcmd, TCL_EVAL_GLOBAL);
+
+                if (status != TCL_OK) {
+                    result = RP_OPTIM_FAILURE;
+                    fprintf(stderr, "==UNEXPECTED ERROR while extracting output value:%s\n", Tcl_GetStringResult(interp));
+                } else if (Tcl_GetDoubleFromObj(interp,
+                      Tcl_GetObjResult(interp), fitnessPtr) != TCL_OK) {
+                    result = RP_OPTIM_FAILURE;
+                    fprintf(stderr, "==ERROR while extracting output value:%s\n", Tcl_GetStringResult(interp));
+                }
+                for (n=0; n < 3; n++) {
+                    Tcl_DecrRefCount(getcmd[n]);
+                }
+            }
+        }
+        Tcl_DecrRefCount(dataPtr);
+    }
+
+    /*
+     * Clean up objects created for command invocation.
+     */
+    for (n=1; n < objc; n++) {
+        Tcl_DecrRefCount(objv[n]);
+    }
+    if (objv != storage) {
+        free(objv);
+    }
+
+    /*
+     * If there's the -updatecommand was specified, execute it here
+     * to bring the application up-to-date and see if the user wants
+     * to abort.
+     */
+    if (toolDataPtr->updateCmdPtr) {
+        Tcl_DStringInit(&buffer);
+        Tcl_DStringAppend(&buffer,
+            Tcl_GetStringFromObj(toolDataPtr->updateCmdPtr, (int*)NULL), -1);
+        Tcl_DStringAppendElement(&buffer,
+            (xmlObj != NULL) ? Tcl_GetStringFromObj(xmlObj, (int*)NULL): "");
+
+        status = Tcl_GlobalEval(toolDataPtr->interp,
+            Tcl_DStringValue(&buffer));
+        if (status == TCL_ERROR) {
+            Tcl_BackgroundError(toolDataPtr->interp);
+        } 
+        Tcl_DStringFree(&buffer);
+    }
+
+    if (xmlObj) {
+        Tcl_DecrRefCount(xmlObj);  /* done with this now */
+    }
+    return result;
+}
+
+/*
+ * ======================================================================
+ *  OPTION:  -randdist <=> RAND_NUMBER_DIST_GAUSSIAN / RAND_NUMBER_DIST_UNIFORM 
+ * ======================================================================
+ */
+int
+RpOption_ParseRandDist(interp, valObj, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    Tcl_Obj *valObj;     /* set option to this new value */
+    ClientData cdata;    /* save in this data structure */
+    int offset;          /* save at this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    char *val = Tcl_GetStringFromObj(valObj, (int*)NULL);
+    if (strcmp(val,"gaussian") == 0) {
+        *ptr = RAND_NUMBER_DIST_GAUSSIAN;
+    }
+    else if (strcmp(val,"uniform") == 0) {
+        *ptr = RAND_NUMBER_DIST_UNIFORM;
+    }
+    else {
+        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+            "bad value \"", val, "\": should be gaussian or uniform",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+int
+RpOption_GetRandDist(interp, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    ClientData cdata;    /* get from this data structure */
+    int offset;          /* get from this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    switch (*ptr) {
+    case RAND_NUMBER_DIST_GAUSSIAN:
+        Tcl_SetResult(interp, "gaussian", TCL_STATIC);
+        break;
+    case RAND_NUMBER_DIST_UNIFORM:
+        Tcl_SetResult(interp, "uniform", TCL_STATIC);
+        break;
+    default:
+        Tcl_SetResult(interp, "???", TCL_STATIC);
+        break;
+    }
+    return TCL_OK;
+}
Index: /tags/1.6.0/packages/optimizer/src/rp_tcloptions.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/rp_tcloptions.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/rp_tcloptions.c	(revision 6168)
@@ -0,0 +1,413 @@
+/*
+ * ----------------------------------------------------------------------
+ *  rp_tcloptions
+ *
+ *  This library is used to implement configuration options for the
+ *  Tcl API used in Rappture.  It lets you define a series of
+ *  configuration options like the ones used for Tk widgets, and
+ *  provides functions to process them.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "rp_tcloptions.h"
+#include <string.h>
+#include <malloc.h>
+
+/*
+ *  Built-in types:
+ */
+RpCustomTclOptionParse RpOption_ParseBoolean;
+RpCustomTclOptionGet RpOption_GetBoolean;
+RpTclOptionType RpOption_Boolean = {
+    "boolean", RpOption_ParseBoolean, RpOption_GetBoolean, NULL
+};
+
+RpCustomTclOptionParse RpOption_ParseInt;
+RpCustomTclOptionGet RpOption_GetInt;
+RpTclOptionType RpOption_Int = {
+    "integer", RpOption_ParseInt, RpOption_GetInt, NULL
+};
+
+RpCustomTclOptionParse RpOption_ParseDouble;
+RpCustomTclOptionGet RpOption_GetDouble;
+RpTclOptionType RpOption_Double = {
+    "double", RpOption_ParseDouble, RpOption_GetDouble, NULL
+};
+
+RpCustomTclOptionParse RpOption_ParseString;
+RpCustomTclOptionGet RpOption_GetString;
+RpCustomTclOptionCleanup RpOption_CleanupString;
+RpTclOptionType RpOption_String = {
+    "string", RpOption_ParseString, RpOption_GetString, RpOption_CleanupString
+};
+
+RpCustomTclOptionParse RpOption_ParseList;
+RpCustomTclOptionGet RpOption_GetList;
+RpCustomTclOptionCleanup RpOption_CleanupList;
+RpTclOptionType RpOption_List = {
+    "list", RpOption_ParseList, RpOption_GetList, RpOption_CleanupList
+};
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpTclOptionsProcess()
+ *
+ *  Used internally to handle options processing for all optimization
+ *  parameters.  Expects a list of "-switch value" parameters in the
+ *  (objc,objv) arguments, and processes them according to the given
+ *  specs.  Returns TCL_OK if successful.  If anything goes wrong, it
+ *  leaves an error message in the interpreter and returns TCL_ERROR.
+ * ------------------------------------------------------------------------
+ */
+int
+RpTclOptionsProcess(interp, objc, objv, options, cdata)
+    Tcl_Interp *interp;           /* interpreter for errors */
+    int objc;                     /* number of args to process */
+    Tcl_Obj *CONST objv[];        /* arg values to process */
+    RpTclOption *options;         /* specification for known options */
+    ClientData cdata;             /* option values inserted in here */
+{
+    int n, status;
+    RpTclOption *spec;
+    char *opt;
+
+    for (n=0; n < objc; n++) {
+        opt = Tcl_GetStringFromObj(objv[n], (int*)NULL);
+
+        for (spec=options; spec->optname; spec++) {
+            if (strcmp(opt,spec->optname) == 0) {
+                /* found matching option spec! */
+                if (n+1 >= objc) {
+                    Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                        "missing value for option \"", spec->optname, "\"",
+                        (char*)NULL);
+                    return TCL_ERROR;
+                }
+
+                status = (*spec->typePtr->parseProc)(interp, objv[n+1], cdata,
+                    spec->offset);
+
+                if (status != TCL_OK) {
+                    return TCL_ERROR;
+                }
+                n++;     /* skip over value just processed */
+                break;   /* indicate that arg was handled */
+            }
+        }
+        if (spec->optname == NULL) {
+            char *sep = "";
+            Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                "bad option \"", opt, "\": should be ", (char*)NULL);
+            for (spec=options; spec->optname; spec++) {
+                Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+                    sep, spec->optname, (char*)NULL);
+                sep = ", ";
+            }
+            return TCL_ERROR;
+        }
+    }
+    return TCL_OK;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpTclOptionGet()
+ *
+ *  Used internally to query the value of an option associated with
+ *  an optimization parameter.  Returns TCL_OK along with the current
+ *  value in the interpreter.  If the desired option name is not
+ *  recognized or anything else goes wrong, it returns TCL_ERROR along
+ *  with an error message.
+ * ------------------------------------------------------------------------
+ */
+int
+RpTclOptionGet(interp, options, cdata, desiredOpt)
+    Tcl_Interp *interp;           /* interp for result or errors */
+    RpTclOption *options;         /* specification for known options */
+    ClientData cdata;             /* option values are found in here */
+    char *desiredOpt;             /* look for this option name */
+{
+    RpTclOption *spec;
+    char *sep;
+
+    for (spec=options; spec->optname; spec++) {
+        if (strcmp(desiredOpt,spec->optname) == 0) {
+            /* found matching option spec! */
+            return (*spec->typePtr->getProc)(interp, cdata, spec->offset);
+        }
+    }
+
+    /* oops! desired option name not found */
+    sep = "";
+    Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+        "bad option \"", desiredOpt, "\": should be ", (char*)NULL);
+    for (spec=options; spec->optname; spec++) {
+        Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+            sep, spec->optname, (char*)NULL);
+        sep = ", ";
+    }
+    return TCL_ERROR;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpTclOptionsCleanup()
+ *
+ *  Used internally to free all memory associated with various values
+ *  configured via the options package.  Frees any allocated memory
+ *  and resets values to their null state.
+ * ------------------------------------------------------------------------
+ */
+void
+RpTclOptionsCleanup(options, cdata)
+    RpTclOption *options;         /* specification for known options */
+    ClientData cdata;             /* option values are found in here */
+{
+    RpTclOption *spec;
+
+    for (spec=options; spec->optname; spec++) {
+        if (spec->typePtr->cleanupProc) {
+            (*spec->typePtr->cleanupProc)(cdata, spec->offset);
+        }
+    }
+}
+
+/*
+ * ======================================================================
+ *  BOOLEAN
+ * ======================================================================
+ */
+int
+RpOption_ParseBoolean(interp, valObj, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    Tcl_Obj *valObj;     /* set option to this new value */
+    ClientData cdata;    /* save in this data structure */
+    int offset;          /* save at this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    if (Tcl_GetBooleanFromObj(interp, valObj, ptr) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+int
+RpOption_GetBoolean(interp, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    ClientData cdata;    /* get from this data structure */
+    int offset;          /* get from this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    Tcl_SetObjResult(interp, Tcl_NewBooleanObj(*ptr));
+    return TCL_OK;
+}
+
+/*
+ * ======================================================================
+ *  INTEGER
+ * ======================================================================
+ */
+int
+RpOption_ParseInt(interp, valObj, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    Tcl_Obj *valObj;     /* set option to this new value */
+    ClientData cdata;    /* save in this data structure */
+    int offset;          /* save at this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    if (Tcl_GetIntFromObj(interp, valObj, ptr) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+int
+RpOption_GetInt(interp, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    ClientData cdata;    /* get from this data structure */
+    int offset;          /* get from this offset in cdata */
+{
+    int *ptr = (int*)(cdata+offset);
+    Tcl_SetObjResult(interp, Tcl_NewIntObj(*ptr));
+    return TCL_OK;
+}
+
+/*
+ * ======================================================================
+ *  DOUBLE
+ * ======================================================================
+ */
+int
+RpOption_ParseDouble(interp, valObj, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    Tcl_Obj *valObj;     /* set option to this new value */
+    ClientData cdata;    /* save in this data structure */
+    int offset;          /* save at this offset in cdata */
+{
+    double *ptr = (double*)(cdata+offset);
+    if (Tcl_GetDoubleFromObj(interp, valObj, ptr) != TCL_OK) {
+        return TCL_ERROR;
+    }
+    return TCL_OK;
+}
+
+int
+RpOption_GetDouble(interp, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    ClientData cdata;    /* get from this data structure */
+    int offset;          /* get from this offset in cdata */
+{
+    double *ptr = (double*)(cdata+offset);
+    Tcl_SetObjResult(interp, Tcl_NewDoubleObj(*ptr));
+    return TCL_OK;
+}
+
+/*
+ * ======================================================================
+ *  STRING
+ * ======================================================================
+ */
+int
+RpOption_ParseString(interp, valObj, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    Tcl_Obj *valObj;     /* set option to this new value */
+    ClientData cdata;    /* save in this data structure */
+    int offset;          /* save at this offset in cdata */
+{
+    char **ptr = (char**)(cdata+offset);
+    char *value = Tcl_GetStringFromObj(valObj, (int*)NULL);
+    *ptr = strdup(value);
+    return TCL_OK;
+}
+
+int
+RpOption_GetString(interp, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    ClientData cdata;    /* get from this data structure */
+    int offset;          /* get from this offset in cdata */
+{
+    char *ptr = (char*)(cdata+offset);
+    Tcl_SetObjResult(interp, Tcl_NewStringObj(ptr,-1));
+    return TCL_OK;
+}
+
+void
+RpOption_CleanupString(cdata, offset)
+    ClientData cdata;    /* cleanup in this data structure */
+    int offset;          /* cleanup at this offset in cdata */
+{
+    char **ptr = (char**)(cdata+offset);
+    if (*ptr != NULL) {
+        free((char*)(*ptr));
+        *ptr = NULL;
+    }
+}
+
+/*
+ * ======================================================================
+ *  LIST
+ * ======================================================================
+ */
+int
+RpOption_ParseList(interp, valObj, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    Tcl_Obj *valObj;     /* set option to this new value */
+    ClientData cdata;    /* save in this data structure */
+    int offset;          /* save at this offset in cdata */
+{
+    int j;
+    int vc; Tcl_Obj **vv;
+    char *value, **allowedValues;
+
+    if (Tcl_ListObjGetElements(interp, valObj, &vc, &vv) != TCL_OK) {
+        return TCL_ERROR;
+    }
+
+    /* transfer them to an array of char* values */
+    allowedValues = (char**)malloc((vc+1)*(sizeof(char*)));
+    for (j=0; j < vc; j++) {
+        value = Tcl_GetStringFromObj(vv[j], (int*)NULL);
+        allowedValues[j] = strdup(value);
+    }
+    allowedValues[j] = NULL;
+
+    *(char***)(cdata+offset) = allowedValues;
+    return TCL_OK;
+}
+
+int
+RpOption_GetList(interp, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    ClientData cdata;    /* get from this data structure */
+    int offset;          /* get from this offset in cdata */
+{
+    int n;
+    char **ptr = *(char***)(cdata+offset);
+    Tcl_ResetResult(interp);
+    for (n=0; ptr[n]; n++) {
+        Tcl_AppendElement(interp, ptr[n]);
+    }
+    return TCL_OK;
+}
+
+void
+RpOption_CleanupList(cdata, offset)
+    ClientData cdata;    /* cleanup in this data structure */
+    int offset;          /* cleanup at this offset in cdata */
+{
+    int n;
+    char **ptr = *(char***)(cdata+offset);
+    for (n=0; ptr[n]; n++) {
+        free((char*)(ptr[n]));
+        ptr[n] = NULL;
+    }
+    free((char*)ptr);
+    *(char***)(cdata+offset) = NULL;
+}
+
+/*
+ * ======================================================================
+ *  CHOICES
+ * ======================================================================
+ */
+int
+RpOption_ParseChoices(interp, valObj, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    Tcl_Obj *valObj;     /* set option to this new value */
+    ClientData cdata;    /* save in this data structure */
+    int offset;          /* save at this offset in cdata */
+{
+    char **ptr = (char**)(cdata+offset);
+    char *value = Tcl_GetStringFromObj(valObj, (int*)NULL);
+    *ptr = strdup(value);
+    return TCL_OK;
+}
+
+int
+RpOption_GetChoices(interp, cdata, offset)
+    Tcl_Interp *interp;  /* interpreter handling this request */
+    ClientData cdata;    /* get from this data structure */
+    int offset;          /* get from this offset in cdata */
+{
+    char *ptr = (char*)(cdata+offset);
+    Tcl_SetObjResult(interp, Tcl_NewStringObj(ptr,-1));
+    return TCL_OK;
+}
+
+void
+RpOption_CleanupChoices(cdata, offset)
+    ClientData cdata;    /* cleanup in this data structure */
+    int offset;          /* cleanup at this offset in cdata */
+{
+    char **ptr = (char**)(cdata+offset);
+    if (*ptr != NULL) {
+        free((char*)(*ptr));
+        *ptr = NULL;
+    }
+}
Index: /tags/1.6.0/packages/optimizer/src/rp_tcloptions.h
===================================================================
--- /tags/1.6.0/packages/optimizer/src/rp_tcloptions.h	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/rp_tcloptions.h	(revision 6168)
@@ -0,0 +1,88 @@
+/*
+ * ----------------------------------------------------------------------
+ *  rp_tcloptions
+ *
+ *  This library is used to implement configuration options for the
+ *  Tcl API used in Rappture.  It lets you define a series of
+ *  configuration options like the ones used for Tk widgets, and
+ *  provides functions to process them.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RP_TCLOPTIONS
+#define RP_TCLOPTIONS
+
+#include <tcl.h>
+
+/*
+ * These data structures are used to define configuration options
+ * associated with parameters and optimizer cores.  They work just
+ * like Tk widget options, but for objects that are not widgets.
+ */
+#ifdef offsetof
+#define Rp_Offset(type, field) ((int) offsetof(type, field))
+#else
+#define Rp_Offset(type, field) ((int) ((char *) &((type *) 0)->field))
+#endif
+
+typedef int (RpCustomTclOptionParse)_ANSI_ARGS_((Tcl_Interp *interp,
+    Tcl_Obj *valObj, ClientData cdata, int offset));
+typedef int (RpCustomTclOptionGet)_ANSI_ARGS_((Tcl_Interp *interp,
+    ClientData cdata, int offset));
+typedef void (RpCustomTclOptionCleanup)_ANSI_ARGS_((ClientData cdata,
+    int offset));
+
+typedef struct RpTclOptionType {
+    char *type;                            /* name describing this type */
+    RpCustomTclOptionParse *parseProc;     /* procedure to parse new values */
+    RpCustomTclOptionGet *getProc;         /* procedure to report cur value */
+    RpCustomTclOptionCleanup *cleanupProc; /* procedure to free up value */
+} RpTclOptionType;
+
+typedef struct RpTclOption {
+    char *optname;             /* name of option: -switch */
+    RpTclOptionType *typePtr;  /* type of this switch */
+    int offset;                /* location of data within struct */
+} RpTclOption;
+
+/*
+ *  Built-in types defined in rp_tcloptions.c
+ */
+extern RpTclOptionType RpOption_Boolean;
+#define RP_OPTION_BOOLEAN &RpOption_Boolean
+
+extern RpTclOptionType RpOption_Int;
+#define RP_OPTION_INT &RpOption_Int
+
+extern RpTclOptionType RpOption_Double;
+#define RP_OPTION_DOUBLE &RpOption_Double
+
+extern RpTclOptionType RpOption_String;
+#define RP_OPTION_STRING &RpOption_String
+
+extern RpTclOptionType RpOption_List;
+#define RP_OPTION_LIST &RpOption_List
+
+extern RpTclOptionType RpOption_Choices;
+#define RP_OPTION_CHOICES &RpOption_Choices
+
+/*
+ *  Here are the functions in the API:
+ */
+EXTERN int RpTclOptionsProcess _ANSI_ARGS_((Tcl_Interp *interp,
+    int objc, Tcl_Obj *CONST objv[], RpTclOption *options,
+    ClientData cdata));
+
+EXTERN int RpTclOptionGet _ANSI_ARGS_((Tcl_Interp *interp,
+    RpTclOption *options, ClientData cdata, char *desiredOpt));
+
+EXTERN void RpTclOptionsCleanup _ANSI_ARGS_((RpTclOption *options,
+    ClientData cdata));
+
+#endif
Index: /tags/1.6.0/packages/optimizer/src/tclconfig/config.guess
===================================================================
--- /tags/1.6.0/packages/optimizer/src/tclconfig/config.guess	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/tclconfig/config.guess	(revision 6168)
@@ -0,0 +1,1391 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-02-22'
+
+# 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 <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  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 <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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) ; } ||
+ { 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
+
+# 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 ;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-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 ;;
+    pmax:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sgi:OpenBSD:*:*)
+	echo mipseb-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    *:OpenBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    alpha:OSF1:*:*)
+	if test $UNAME_RELEASE = "V4.0"; then
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+	fi
+	# 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 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/^[VTX]//' | 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 ;;
+    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_SV: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 ;;
+    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 <stdio.h>  /* 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 <sys/systemcfg.h>
+
+		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 <stdlib.h>
+              #include <unistd.h>
+
+              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 <unistd.h>
+	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 nv1-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 ;;
+    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:*:*)
+	# Determine whether the default compiler uses glibc.
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#if __GLIBC__ >= 2
+	LIBC=gnu
+	#else
+	LIBC=
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+	exit 0 ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit 0 ;;
+    i*:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit 0 ;;
+    i*:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit 0 ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit 0 ;;
+    x86:Interix*:3*)
+	echo i586-pc-interix3
+	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 ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit 0 ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    *:GNU:*:*)
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit 0 ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit 0 ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	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}-unknown-linux-gnu" && 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}-unknown-linux-gnu" && exit 0
+	;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit 0 ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	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}-unknown-linux-gnu${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-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit 0 ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	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}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit 0 ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit 0 ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit 0 ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#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
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && 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: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' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/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[567]*:*)
+	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*: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)
+	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 <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# 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:*:*)
+	case `uname -p` in
+	    *86) UNAME_PROCESSOR=i686 ;;
+	    powerpc) 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 ;;
+    NSR-[DGKLNPTVW]: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 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#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 <sys/param.h>
+  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 <sys/param.h>
+#  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 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> 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:
Index: /tags/1.6.0/packages/optimizer/src/tclconfig/config.sub
===================================================================
--- /tags/1.6.0/packages/optimizer/src/tclconfig/config.sub	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/tclconfig/config.sub	(revision 6168)
@@ -0,0 +1,1493 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-02-22'
+
+# 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 <config-patches@gnu.org>.  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 <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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* | freebsd*-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)
+		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] \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k \
+	| m32r | m68000 | m68k | m88k | 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 \
+	| 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 | sparcv9 | sparcv9b \
+	| strongarm \
+	| tahoe | thumb | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | 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-* | 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-* \
+	| m32r-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | 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-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| msp430-* \
+	| none-* | np1-* | nv1-* | 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-* \
+	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | 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
+		;;
+	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
+		;;
+	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
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	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
+		;;
+	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=i686-pc
+		os=-mingw32
+		;;
+	msys)
+		basic_machine=i686-pc
+		os=-msys
+		;;
+	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
+		;;
+	mmix*)
+		basic_machine=mmix-knuth
+		os=-mmixware
+		;;
+	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
+		;;
+	nv1)
+		basic_machine=nv1-cray
+		os=-unicosmp
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	or32 | or32-*)
+		basic_machine=or32-unknown
+		os=-coff
+		;;
+	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)
+		basic_machine=i686-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-*)
+		basic_machine=i686-`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
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	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
+		;;
+        tic4x | c4x*)
+		basic_machine=tic4x-unknown
+		os=-coff
+		;;
+	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
+		;;
+	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
+		;;
+	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
+		;;
+	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 | 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* | -netbsd* | -openbsd* | -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* | -msys* | -linux-gnu* | -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*)
+	# 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*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-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
+		;;
+	-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
+		;;
+	-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
+		;;
+	# 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
+		;;
+	*-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
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-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:
Index: /tags/1.6.0/packages/optimizer/src/tclconfig/install-sh
===================================================================
--- /tags/1.6.0/packages/optimizer/src/tclconfig/install-sh	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/tclconfig/install-sh	(revision 6168)
@@ -0,0 +1,310 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2004-01-12.10
+
+# 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}"
+
+transformbasename=
+transform_arg=
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+
+usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 -d DIRECTORIES...
+
+In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
+In the second, create the directory path DIR.
+
+Options:
+-b=TRANSFORMBASENAME
+-c         copy source (using $cpprog) instead of moving (using $mvprog).
+-d         create directories instead of installing files.
+-g GROUP   $chgrp installed files to GROUP.
+-m MODE    $chmod installed files to MODE.
+-o USER    $chown installed files to USER.
+-s         strip installed files (using $stripprog).
+-t=TRANSFORM
+--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
+    -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+        shift
+        continue;;
+
+    -c) instcmd=$cpprog
+        shift
+        continue;;
+
+    -d) dir_arg=true
+        shift
+        continue;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift
+        shift
+        continue;;
+
+    --help) echo "$usage"; exit 0;;
+
+    -m) chmodcmd="$chmodprog $2"
+        shift
+        shift
+        continue;;
+
+    -o) chowncmd="$chownprog $2"
+        shift
+        shift
+        continue;;
+
+    -s) stripcmd=$stripprog
+        shift
+        continue;;
+
+    -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+        shift
+        continue;;
+
+    --version) echo "$0 $scriptversion"; exit 0;;
+
+    *)  # When -d is used, all remaining arguments are directories to create.
+	test -n "$dir_arg" && 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
+      instcmd=:
+      chmodcmd=
+    else
+      instcmd=$mkdirprog
+    fi
+  else
+    # Waiting for this to be detected by the "$instcmd $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
+      dst=$dst/`basename "$src"`
+    fi
+  fi
+
+  # This sed command emulates the dirname command.
+  dstdir=`echo "$dst" | sed -e '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 - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    IFS=$oIFS
+
+    pathcomp=
+
+    while test $# -ne 0 ; do
+      pathcomp=$pathcomp$1
+      shift
+      test -d "$pathcomp" || $mkdirprog "$pathcomp"
+      pathcomp=$pathcomp/
+    done
+  fi
+
+  if test -n "$dir_arg"; then
+    $doit $instcmd "$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
+    # If we're going to rename the final executable, determine the name now.
+    if test -z "$transformarg"; then
+      dstfile=`basename "$dst"`
+    else
+      dstfile=`basename "$dst" $transformbasename \
+               | sed $transformarg`$transformbasename
+    fi
+
+    # don't allow the sed command to completely eliminate the filename.
+    test -z "$dstfile" && 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 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+    trap '(exit $?); exit' 1 2 13 15
+
+    # Move or copy the file name to the temp name
+    $doit $instcmd "$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 $instcmd $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 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
+        }
+      else
+        :
+      fi
+    } &&
+
+    # Now rename the file to the real destination.
+    $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+  fi || { (exit 1); exit; }
+done
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+  (exit 0); exit
+}
+
+# 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:
Index: /tags/1.6.0/packages/optimizer/src/tclconfig/mkindex.tcl
===================================================================
--- /tags/1.6.0/packages/optimizer/src/tclconfig/mkindex.tcl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/tclconfig/mkindex.tcl	(revision 6168)
@@ -0,0 +1,18 @@
+# ----------------------------------------------------------------------
+#  mkindex.tcl
+#
+#  This utility freshens up the tclIndex file in a scripts directory.
+#    USAGE:  tclsh mkindex.tcl ?<directory> <directory> ...?
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itcl  ;# include itcl constructs in the index
+
+foreach dir $argv {
+    auto_mkindex $dir *.tcl *.itcl
+}
Index: /tags/1.6.0/packages/optimizer/src/tclconfig/mkinstalldirs
===================================================================
--- /tags/1.6.0/packages/optimizer/src/tclconfig/mkinstalldirs	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/tclconfig/mkinstalldirs	(revision 6168)
@@ -0,0 +1,143 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2003-11-08.23
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage"
+      exit 0
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit 0
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+case $dirmode in
+  '')
+    if mkdir -p -- . 2>/dev/null; then
+      echo "mkdir -p -- $*"
+      exec 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.
+      test -d ./-p && rmdir ./-p
+      test -d ./-- && rmdir ./--
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./-- "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
+    fi
+    ;;
+esac
+
+for file
+do
+  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+  shift
+
+  pathcomp=
+  for d
+  do
+    pathcomp="$pathcomp$d"
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+	errstatus=$lasterr
+      else
+	if test ! -z "$dirmode"; then
+	  echo "chmod $dirmode $pathcomp"
+	  lasterr=""
+	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+	  if test ! -z "$lasterr"; then
+	    errstatus=$lasterr
+	  fi
+	fi
+      fi
+    fi
+
+    pathcomp="$pathcomp/"
+  done
+done
+
+exit $errstatus
+
+# 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:
Index: /tags/1.6.0/packages/optimizer/src/tclconfig/patchlevel.tcl
===================================================================
--- /tags/1.6.0/packages/optimizer/src/tclconfig/patchlevel.tcl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/tclconfig/patchlevel.tcl	(revision 6168)
@@ -0,0 +1,19 @@
+# ----------------------------------------------------------------------
+#  patchlevel.tcl
+#
+#  This utility determines the current patchlevel for this package
+#  by querying the revision level from Subversion.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+if {[catch {exec svn info} result] == 0
+      && [regexp {Revision: +([0-9]+)} $result match num]} {
+    puts "r$num"
+} else {
+    puts "r?"
+}
+exit 0
Index: /tags/1.6.0/packages/optimizer/src/tclconfig/tcl.m4
===================================================================
--- /tags/1.6.0/packages/optimizer/src/tclconfig/tcl.m4	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/tclconfig/tcl.m4	(revision 6168)
@@ -0,0 +1,3959 @@
+# tcl.m4 --
+#
+#	This file provides a set of autoconf macros to help TEA-enable
+#	a Tcl extension.
+#
+# Copyright (c) 1999-2000 Ajuba Solutions.
+# Copyright (c) 2002-2005 ActiveState Corporation.
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# RCS: @(#) $Id: tcl.m4,v 1.92 2006/05/26 19:15:38 das Exp $
+
+AC_PREREQ(2.50)
+
+dnl TEA extensions pass this us the version of TEA they think they
+dnl are compatible with (must be set in TEA_INIT below)
+dnl TEA_VERSION="3.5"
+
+# Possible values for key variables defined:
+#
+# TEA_WINDOWINGSYSTEM - win32 aqua x11 (mirrors 'tk windowingsystem')
+# TEA_PLATFORM        - windows unix
+#
+
+#------------------------------------------------------------------------
+# TEA_PATH_TCLCONFIG --
+#
+#	Locate the tclConfig.sh file and perform a sanity check on
+#	the Tcl compile flags
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--with-tcl=...
+#
+#	Defines the following vars:
+#		TCL_BIN_DIR	Full path to the directory containing
+#				the tclConfig.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_PATH_TCLCONFIG], [
+    dnl Make sure we are initialized
+    AC_REQUIRE([TEA_INIT])
+    #
+    # Ok, lets find the tcl configuration
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-tcl
+    #
+
+    if test x"${no_tcl}" = x ; then
+	# we reset no_tcl in case something fails here
+	no_tcl=true
+	AC_ARG_WITH(tcl,
+	    AC_HELP_STRING([--with-tcl],
+		[directory containing tcl configuration (tclConfig.sh)]),
+	    with_tclconfig=${withval})
+	AC_MSG_CHECKING([for Tcl configuration])
+	AC_CACHE_VAL(ac_cv_c_tclconfig,[
+
+	    # First check to see if --with-tcl was specified.
+	    if test x"${with_tclconfig}" != x ; then
+		case ${with_tclconfig} in
+		    */tclConfig.sh )
+			if test -f ${with_tclconfig}; then
+			    AC_MSG_WARN([--with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself])
+			    with_tclconfig=`echo ${with_tclconfig} | sed 's!/tclConfig\.sh$!!'`
+			fi ;;
+		esac
+		if test -f "${with_tclconfig}/tclConfig.sh" ; then
+		    ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)`
+		else
+		    AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh])
+		fi
+	    fi
+
+	    # then check for a private Tcl installation
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in \
+			../tcl \
+			`ls -dr ../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../tcl \
+			`ls -dr ../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../../tcl \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Darwin, check in Framework installation locations
+	    if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+			`ls -d /Library/Frameworks 2>/dev/null` \
+			`ls -d /Network/Library/Frameworks 2>/dev/null` \
+			`ls -d /System/Library/Frameworks 2>/dev/null` \
+			; do
+		    if test -f "$i/Tcl.framework/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i/Tcl.framework; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Windows, check in common installation locations
+	    if test "${TEA_PLATFORM}" = "windows" \
+		-a x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d C:/Tcl/lib 2>/dev/null` \
+			`ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few common install locations
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in `ls -d ${libdir} 2>/dev/null` \
+			`ls -d ${exec_prefix}/lib 2>/dev/null` \
+			`ls -d ${prefix}/lib 2>/dev/null` \
+			`ls -d /usr/local/lib 2>/dev/null` \
+			`ls -d /usr/contrib/lib 2>/dev/null` \
+			`ls -d /usr/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tclConfig.sh" ; then
+			ac_cv_c_tclconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few other private locations
+	    if test x"${ac_cv_c_tclconfig}" = x ; then
+		for i in \
+			${srcdir}/../tcl \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tclConfig.sh" ; then
+		    ac_cv_c_tclconfig=`(cd $i/unix; pwd)`
+		    break
+		fi
+		done
+	    fi
+	])
+
+	if test x"${ac_cv_c_tclconfig}" = x ; then
+	    TCL_BIN_DIR="# no Tcl configs found"
+	    AC_MSG_WARN([Can't find Tcl configuration definitions])
+	    exit 0
+	else
+	    no_tcl=
+	    TCL_BIN_DIR=${ac_cv_c_tclconfig}
+	    AC_MSG_RESULT([found ${TCL_BIN_DIR}/tclConfig.sh])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# TEA_PATH_TKCONFIG --
+#
+#	Locate the tkConfig.sh file
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--with-tk=...
+#
+#	Defines the following vars:
+#		TK_BIN_DIR	Full path to the directory containing
+#				the tkConfig.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_PATH_TKCONFIG], [
+    #
+    # Ok, lets find the tk configuration
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-tk
+    #
+
+    if test x"${no_tk}" = x ; then
+	# we reset no_tk in case something fails here
+	no_tk=true
+	AC_ARG_WITH(tk,
+	    AC_HELP_STRING([--with-tk],
+		[directory containing tk configuration (tkConfig.sh)]),
+	    with_tkconfig=${withval})
+	AC_MSG_CHECKING([for Tk configuration])
+	AC_CACHE_VAL(ac_cv_c_tkconfig,[
+
+	    # First check to see if --with-tkconfig was specified.
+	    if test x"${with_tkconfig}" != x ; then
+		case ${with_tkconfig} in
+		    */tkConfig.sh )
+			if test -f ${with_tkconfig}; then
+			    AC_MSG_WARN([--with-tk argument should refer to directory containing tkConfig.sh, not to tkConfig.sh itself])
+			    with_tkconfig=`echo ${with_tkconfig} | sed 's!/tkConfig\.sh$!!'`
+			fi ;;
+		esac
+		if test -f "${with_tkconfig}/tkConfig.sh" ; then
+		    ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)`
+		else
+		    AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh])
+		fi
+	    fi
+
+	    # then check for a private Tk library
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in \
+			../tk \
+			`ls -dr ../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../tk[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../tk \
+			`ls -dr ../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` \
+			../../../tk \
+			`ls -dr ../../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Darwin, check in Framework installation locations
+	    if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then
+		for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
+			`ls -d /Library/Frameworks 2>/dev/null` \
+			`ls -d /Network/Library/Frameworks 2>/dev/null` \
+			`ls -d /System/Library/Frameworks 2>/dev/null` \
+			; do
+		    if test -f "$i/Tk.framework/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/Tk.framework; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few common install locations
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in `ls -d ${libdir} 2>/dev/null` \
+			`ls -d ${exec_prefix}/lib 2>/dev/null` \
+			`ls -d ${prefix}/lib 2>/dev/null` \
+			`ls -d /usr/local/lib 2>/dev/null` \
+			`ls -d /usr/contrib/lib 2>/dev/null` \
+			`ls -d /usr/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # on Windows, check in common installation locations
+	    if test "${TEA_PLATFORM}" = "windows" \
+		-a x"${ac_cv_c_tkconfig}" = x ; then
+		for i in `ls -d C:/Tcl/lib 2>/dev/null` \
+			`ls -d C:/Progra~1/Tcl/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few other private locations
+	    if test x"${ac_cv_c_tkconfig}" = x ; then
+		for i in \
+			${srcdir}/../tk \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ${srcdir}/../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
+		    if test -f "$i/unix/tkConfig.sh" ; then
+			ac_cv_c_tkconfig=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+	])
+
+	if test x"${ac_cv_c_tkconfig}" = x ; then
+	    TK_BIN_DIR="# no Tk configs found"
+	    AC_MSG_WARN([Can't find Tk configuration definitions])
+	    exit 0
+	else
+	    no_tk=
+	    TK_BIN_DIR=${ac_cv_c_tkconfig}
+	    AC_MSG_RESULT([found ${TK_BIN_DIR}/tkConfig.sh])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# TEA_LOAD_TCLCONFIG --
+#
+#	Load the tclConfig.sh file
+#
+# Arguments:
+#	
+#	Requires the following vars to be set:
+#		TCL_BIN_DIR
+#
+# Results:
+#
+#	Subst the following vars:
+#		TCL_BIN_DIR
+#		TCL_SRC_DIR
+#		TCL_LIB_FILE
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_LOAD_TCLCONFIG], [
+    AC_MSG_CHECKING([for existence of ${TCL_BIN_DIR}/tclConfig.sh])
+
+    if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then
+        AC_MSG_RESULT([loading])
+	. ${TCL_BIN_DIR}/tclConfig.sh
+    else
+        AC_MSG_RESULT([could not find ${TCL_BIN_DIR}/tclConfig.sh])
+    fi
+
+    # eval is required to do the TCL_DBGX substitution
+    eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+    eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
+
+    # If the TCL_BIN_DIR is the build directory (not the install directory),
+    # then set the common variable name to the value of the build variables.
+    # For example, the variable TCL_LIB_SPEC will be set to the value
+    # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
+    # instead of TCL_BUILD_LIB_SPEC since it will work with both an
+    # installed and uninstalled version of Tcl.
+    if test -f ${TCL_BIN_DIR}/Makefile ; then
+        TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
+        TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
+        TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
+    elif test "`uname -s`" = "Darwin"; then
+	# If Tcl was built as a framework, attempt to use the libraries
+	# from the framework at the given location so that linking works
+	# against Tcl.framework installed in an arbitary location.
+	case ${TCL_DEFS} in
+	    *TCL_FRAMEWORK*)
+		if test -f ${TCL_BIN_DIR}/${TCL_LIB_FILE}; then
+		    for i in "`cd ${TCL_BIN_DIR}; pwd`" \
+			     "`cd ${TCL_BIN_DIR}/../..; pwd`"; do
+			if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then
+			    TCL_LIB_SPEC="-F`dirname "$i"` -framework ${TCL_LIB_FILE}"
+			    break
+			fi
+		    done
+		fi
+		if test -f ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}; then
+		    TCL_STUB_LIB_SPEC="-L${TCL_BIN_DIR} ${TCL_STUB_LIB_FLAG}"
+		    TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"
+		fi
+		;;
+	esac
+    fi
+
+    # eval is required to do the TCL_DBGX substitution
+    eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
+    eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
+    eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
+    eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
+
+    AC_SUBST(TCL_VERSION)
+    AC_SUBST(TCL_BIN_DIR)
+    AC_SUBST(TCL_SRC_DIR)
+
+    AC_SUBST(TCL_LIB_FILE)
+    AC_SUBST(TCL_LIB_FLAG)
+    AC_SUBST(TCL_LIB_SPEC)
+
+    AC_SUBST(TCL_STUB_LIB_FILE)
+    AC_SUBST(TCL_STUB_LIB_FLAG)
+    AC_SUBST(TCL_STUB_LIB_SPEC)
+
+    AC_SUBST(TCL_LIBS)
+    AC_SUBST(TCL_DEFS)
+    AC_SUBST(TCL_EXTRA_CFLAGS)
+    AC_SUBST(TCL_LD_FLAGS)
+    AC_SUBST(TCL_SHLIB_LD_LIBS)
+])
+
+#------------------------------------------------------------------------
+# TEA_LOAD_TKCONFIG --
+#
+#	Load the tkConfig.sh file
+#
+# Arguments:
+#	
+#	Requires the following vars to be set:
+#		TK_BIN_DIR
+#
+# Results:
+#
+#	Sets the following vars that should be in tkConfig.sh:
+#		TK_BIN_DIR
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_LOAD_TKCONFIG], [
+    AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh])
+
+    if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then
+        AC_MSG_RESULT([loading])
+	. ${TK_BIN_DIR}/tkConfig.sh
+    else
+        AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh])
+    fi
+
+    # eval is required to do the TK_DBGX substitution
+    eval "TK_LIB_FILE=\"${TK_LIB_FILE}\""
+    eval "TK_STUB_LIB_FILE=\"${TK_STUB_LIB_FILE}\""
+
+    # If the TK_BIN_DIR is the build directory (not the install directory),
+    # then set the common variable name to the value of the build variables.
+    # For example, the variable TK_LIB_SPEC will be set to the value
+    # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC
+    # instead of TK_BUILD_LIB_SPEC since it will work with both an
+    # installed and uninstalled version of Tcl.
+    if test -f ${TK_BIN_DIR}/Makefile ; then
+        TK_LIB_SPEC=${TK_BUILD_LIB_SPEC}
+        TK_STUB_LIB_SPEC=${TK_BUILD_STUB_LIB_SPEC}
+        TK_STUB_LIB_PATH=${TK_BUILD_STUB_LIB_PATH}
+    elif test "`uname -s`" = "Darwin"; then
+	# If Tk was built as a framework, attempt to use the libraries
+	# from the framework at the given location so that linking works
+	# against Tk.framework installed in an arbitary location.
+	case ${TK_DEFS} in
+	    *TK_FRAMEWORK*)
+		if test -f ${TK_BIN_DIR}/${TK_LIB_FILE}; then
+		    for i in "`cd ${TK_BIN_DIR}; pwd`" \
+			     "`cd ${TK_BIN_DIR}/../..; pwd`"; do
+			if test "`basename "$i"`" = "${TK_LIB_FILE}.framework"; then
+			    TK_LIB_SPEC="-F`dirname "$i"` -framework ${TK_LIB_FILE}"
+			    break
+			fi
+		    done
+		fi
+		if test -f ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}; then
+		    TK_STUB_LIB_SPEC="-L${TK_BIN_DIR} ${TK_STUB_LIB_FLAG}"
+		    TK_STUB_LIB_PATH="${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"
+		fi
+		;;
+	esac
+    fi
+
+    # eval is required to do the TK_DBGX substitution
+    eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}\""
+    eval "TK_LIB_SPEC=\"${TK_LIB_SPEC}\""
+    eval "TK_STUB_LIB_FLAG=\"${TK_STUB_LIB_FLAG}\""
+    eval "TK_STUB_LIB_SPEC=\"${TK_STUB_LIB_SPEC}\""
+
+    # Ensure windowingsystem is defined
+    if test "${TEA_PLATFORM}" = "unix" ; then
+	case ${TK_DEFS} in
+	    *MAC_OSX_TK*)
+		AC_DEFINE(MAC_OSX_TK, 1, [Are we building against Mac OS X TkAqua?])
+		TEA_WINDOWINGSYSTEM="aqua"
+		;;
+	    *)
+		TEA_WINDOWINGSYSTEM="x11"
+		;;
+	esac
+    elif test "${TEA_PLATFORM}" = "windows" ; then
+	TEA_WINDOWINGSYSTEM="win32"
+    fi
+
+    AC_SUBST(TK_VERSION)
+    AC_SUBST(TK_BIN_DIR)
+    AC_SUBST(TK_SRC_DIR)
+
+    AC_SUBST(TK_LIB_FILE)
+    AC_SUBST(TK_LIB_FLAG)
+    AC_SUBST(TK_LIB_SPEC)
+
+    AC_SUBST(TK_STUB_LIB_FILE)
+    AC_SUBST(TK_STUB_LIB_FLAG)
+    AC_SUBST(TK_STUB_LIB_SPEC)
+
+    AC_SUBST(TK_LIBS)
+    AC_SUBST(TK_XINCLUDES)
+])
+
+#------------------------------------------------------------------------
+# TEA_ENABLE_SHARED --
+#
+#	Allows the building of shared libraries
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-shared=yes|no
+#
+#	Defines the following vars:
+#		STATIC_BUILD	Used for building import/export libraries
+#				on Windows.
+#
+#	Sets the following vars:
+#		SHARED_BUILD	Value of 1 or 0
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_ENABLE_SHARED], [
+    AC_MSG_CHECKING([how to build libraries])
+    AC_ARG_ENABLE(shared,
+	AC_HELP_STRING([--enable-shared],
+	    [build and link with shared libraries (default: on)]),
+	[tcl_ok=$enableval], [tcl_ok=yes])
+
+    if test "${enable_shared+set}" = set; then
+	enableval="$enable_shared"
+	tcl_ok=$enableval
+    else
+	tcl_ok=yes
+    fi
+
+    if test "$tcl_ok" = "yes" ; then
+	AC_MSG_RESULT([shared])
+	SHARED_BUILD=1
+    else
+	AC_MSG_RESULT([static])
+	SHARED_BUILD=0
+	AC_DEFINE(STATIC_BUILD, 1, [Is this a static build?])
+    fi
+    AC_SUBST(SHARED_BUILD)
+])
+
+#------------------------------------------------------------------------
+# TEA_ENABLE_THREADS --
+#
+#	Specify if thread support should be enabled.  If "yes" is specified
+#	as an arg (optional), threads are enabled by default, "no" means
+#	threads are disabled.  "yes" is the default.
+#
+#	TCL_THREADS is checked so that if you are compiling an extension
+#	against a threaded core, your extension must be compiled threaded
+#	as well.
+#
+#	Note that it is legal to have a thread enabled extension run in a
+#	threaded or non-threaded Tcl core, but a non-threaded extension may
+#	only run in a non-threaded Tcl core.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-threads
+#
+#	Sets the following vars:
+#		THREADS_LIBS	Thread library(s)
+#
+#	Defines the following vars:
+#		TCL_THREADS
+#		_REENTRANT
+#		_THREAD_SAFE
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_ENABLE_THREADS], [
+    AC_ARG_ENABLE(threads,
+	AC_HELP_STRING([--enable-threads],
+	    [build with threads]),
+	[tcl_ok=$enableval], [tcl_ok=yes])
+
+    if test "${enable_threads+set}" = set; then
+	enableval="$enable_threads"
+	tcl_ok=$enableval
+    else
+	tcl_ok=yes
+    fi
+
+    if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then
+	TCL_THREADS=1
+
+	if test "${TEA_PLATFORM}" != "windows" ; then
+	    # We are always OK on Windows, so check what this platform wants:
+    
+	    # USE_THREAD_ALLOC tells us to try the special thread-based
+	    # allocator that significantly reduces lock contention
+	    AC_DEFINE(USE_THREAD_ALLOC, 1,
+		[Do we want to use the threaded memory allocator?])
+	    AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?])
+	    if test "`uname -s`" = "SunOS" ; then
+		AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1,
+			[Do we really want to follow the standard? Yes we do!])
+	    fi
+	    AC_DEFINE(_THREAD_SAFE, 1, [Do we want the thread-safe OS API?])
+	    AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
+	    if test "$tcl_ok" = "no"; then
+		# Check a little harder for __pthread_mutex_init in the same
+		# library, as some systems hide it there until pthread.h is
+		# defined.  We could alternatively do an AC_TRY_COMPILE with
+		# pthread.h, but that will work with libpthread really doesn't
+		# exist, like AIX 4.2.  [Bug: 4359]
+		AC_CHECK_LIB(pthread, __pthread_mutex_init,
+		    tcl_ok=yes, tcl_ok=no)
+	    fi
+
+	    if test "$tcl_ok" = "yes"; then
+		# The space is needed
+		THREADS_LIBS=" -lpthread"
+	    else
+		AC_CHECK_LIB(pthreads, pthread_mutex_init,
+		    tcl_ok=yes, tcl_ok=no)
+		if test "$tcl_ok" = "yes"; then
+		    # The space is needed
+		    THREADS_LIBS=" -lpthreads"
+		else
+		    AC_CHECK_LIB(c, pthread_mutex_init,
+			tcl_ok=yes, tcl_ok=no)
+		    if test "$tcl_ok" = "no"; then
+			AC_CHECK_LIB(c_r, pthread_mutex_init,
+			    tcl_ok=yes, tcl_ok=no)
+			if test "$tcl_ok" = "yes"; then
+			    # The space is needed
+			    THREADS_LIBS=" -pthread"
+			else
+			    TCL_THREADS=0
+			    AC_MSG_WARN([Do not know how to find pthread lib on your system - thread support disabled])
+			fi
+		    fi
+		fi
+	    fi
+	fi
+    else
+	TCL_THREADS=0
+    fi
+    # Do checking message here to not mess up interleaved configure output
+    AC_MSG_CHECKING([for building with threads])
+    if test "${TCL_THREADS}" = 1; then
+	AC_DEFINE(TCL_THREADS, 1, [Are we building with threads enabled?])
+	AC_MSG_RESULT([yes (default)])
+    else
+	AC_MSG_RESULT([no])
+    fi
+    # TCL_THREADS sanity checking.  See if our request for building with
+    # threads is the same as the way Tcl was built.  If not, warn the user.
+    case ${TCL_DEFS} in
+	*THREADS=1*)
+	    if test "${TCL_THREADS}" = "0"; then
+		AC_MSG_WARN([
+    Building ${PACKAGE_NAME} without threads enabled, but building against Tcl
+    that IS thread-enabled.  It is recommended to use --enable-threads.])
+	    fi
+	    ;;
+	*)
+	    if test "${TCL_THREADS}" = "1"; then
+		AC_MSG_WARN([
+    --enable-threads requested, but building against a Tcl that is NOT
+    thread-enabled.  This is an OK configuration that will also run in
+    a thread-enabled core.])
+	    fi
+	    ;;
+    esac
+    AC_SUBST(TCL_THREADS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ENABLE_SYMBOLS --
+#
+#	Specify if debugging symbols should be used.
+#	Memory (TCL_MEM_DEBUG) debugging can also be enabled.
+#
+# Arguments:
+#	none
+#	
+#	TEA varies from core Tcl in that C|LDFLAGS_DEFAULT receives
+#	the value of C|LDFLAGS_OPTIMIZE|DEBUG already substituted.
+#	Requires the following vars to be set in the Makefile:
+#		CFLAGS_DEFAULT
+#		LDFLAGS_DEFAULT
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-symbols
+#
+#	Defines the following vars:
+#		CFLAGS_DEFAULT	Sets to $(CFLAGS_DEBUG) if true
+#				Sets to $(CFLAGS_OPTIMIZE) if false
+#		LDFLAGS_DEFAULT	Sets to $(LDFLAGS_DEBUG) if true
+#				Sets to $(LDFLAGS_OPTIMIZE) if false
+#		DBGX		Formerly used as debug library extension;
+#				always blank now.
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_ENABLE_SYMBOLS], [
+    dnl Make sure we are initialized
+    AC_REQUIRE([TEA_CONFIG_CFLAGS])
+    AC_MSG_CHECKING([for build with symbols])
+    AC_ARG_ENABLE(symbols,
+	AC_HELP_STRING([--enable-symbols],
+	    [build with debugging symbols (default: off)]),
+	[tcl_ok=$enableval], [tcl_ok=no])
+    DBGX=""
+    if test "$tcl_ok" = "no"; then
+	CFLAGS_DEFAULT="${CFLAGS_OPTIMIZE}"
+	LDFLAGS_DEFAULT="${LDFLAGS_OPTIMIZE}"
+	AC_MSG_RESULT([no])
+    else
+	CFLAGS_DEFAULT="${CFLAGS_DEBUG}"
+	LDFLAGS_DEFAULT="${LDFLAGS_DEBUG}"
+	if test "$tcl_ok" = "yes"; then
+	    AC_MSG_RESULT([yes (standard debugging)])
+	fi
+    fi
+    if test "${TEA_PLATFORM}" != "windows" ; then
+	LDFLAGS_DEFAULT="${LDFLAGS}"
+    fi
+
+    AC_SUBST(TCL_DBGX)
+    AC_SUBST(CFLAGS_DEFAULT)
+    AC_SUBST(LDFLAGS_DEFAULT)
+
+    if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
+	AC_DEFINE(TCL_MEM_DEBUG, 1, [Is memory debugging enabled?])
+    fi
+
+    if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
+	if test "$tcl_ok" = "all"; then
+	    AC_MSG_RESULT([enabled symbols mem debugging])
+	else
+	    AC_MSG_RESULT([enabled $tcl_ok debugging])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# TEA_ENABLE_LANGINFO --
+#
+#	Allows use of modern nl_langinfo check for better l10n.
+#	This is only relevant for Unix.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--enable-langinfo=yes|no (default is yes)
+#
+#	Defines the following vars:
+#		HAVE_LANGINFO	Triggers use of nl_langinfo if defined.
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_ENABLE_LANGINFO], [
+    AC_ARG_ENABLE(langinfo,
+	AC_HELP_STRING([--enable-langinfo],
+	    [use nl_langinfo if possible to determine encoding at startup, otherwise use old heuristic (default: on)]),
+	[langinfo_ok=$enableval], [langinfo_ok=yes])
+
+    HAVE_LANGINFO=0
+    if test "$langinfo_ok" = "yes"; then
+	AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no])
+    fi
+    AC_MSG_CHECKING([whether to use nl_langinfo])
+    if test "$langinfo_ok" = "yes"; then
+	AC_CACHE_VAL(tcl_cv_langinfo_h,
+	    AC_TRY_COMPILE([#include <langinfo.h>], [nl_langinfo(CODESET);],
+		    [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no]))
+	AC_MSG_RESULT([$tcl_cv_langinfo_h])
+	if test $tcl_cv_langinfo_h = yes; then
+	    AC_DEFINE(HAVE_LANGINFO, 1, [Do we have nl_langinfo()?])
+	fi
+    else 
+	AC_MSG_RESULT([$langinfo_ok])
+    fi
+])
+
+#--------------------------------------------------------------------
+# TEA_CONFIG_SYSTEM
+#
+#	Determine what the system is (some things cannot be easily checked
+#	on a feature-driven basis, alas). This can usually be done via the
+#	"uname" command, but there are a few systems, like Next, where
+#	this doesn't work.
+#
+# Arguments:
+#	none
+#
+# Results:
+#	Defines the following var:
+#
+#	system -	System/platform/version identification code.
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([TEA_CONFIG_SYSTEM], [
+    AC_CACHE_CHECK([system version], tcl_cv_sys_version, [
+	if test "${TEA_PLATFORM}" = "windows" ; then
+	    tcl_cv_sys_version=windows
+	elif test -f /usr/lib/NextStep/software_version; then
+	    tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
+	else
+	    tcl_cv_sys_version=`uname -s`-`uname -r`
+	    if test "$?" -ne 0 ; then
+		AC_MSG_WARN([can't find uname command])
+		tcl_cv_sys_version=unknown
+	    else
+		# Special check for weird MP-RAS system (uname returns weird
+		# results, and the version is kept in special file).
+
+		if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
+		    tcl_cv_sys_version=MP-RAS-`awk '{print [$]3}' /etc/.relid`
+		fi
+		if test "`uname -s`" = "AIX" ; then
+		    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
+		fi
+	    fi
+	fi
+    ])
+    system=$tcl_cv_sys_version
+])
+
+#--------------------------------------------------------------------
+# TEA_CONFIG_CFLAGS
+#
+#	Try to determine the proper flags to pass to the compiler
+#	for building shared libraries and other such nonsense.
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Defines and substitutes the following vars:
+#
+#       DL_OBJS -       Name of the object file that implements dynamic
+#                       loading for Tcl on this system.
+#       DL_LIBS -       Library file(s) to include in tclsh and other base
+#                       applications in order for the "load" command to work.
+#       LDFLAGS -      Flags to pass to the compiler when linking object
+#                       files into an executable application binary such
+#                       as tclsh.
+#       LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib",
+#                       that tell the run-time dynamic linker where to look
+#                       for shared libraries such as libtcl.so.  Depends on
+#                       the variable LIB_RUNTIME_DIR in the Makefile. Could
+#                       be the same as CC_SEARCH_FLAGS if ${CC} is used to link.
+#       CC_SEARCH_FLAGS-Flags to pass to ${CC}, such as "-Wl,-rpath,/usr/local/tcl/lib",
+#                       that tell the run-time dynamic linker where to look
+#                       for shared libraries such as libtcl.so.  Depends on
+#                       the variable LIB_RUNTIME_DIR in the Makefile.
+#       SHLIB_CFLAGS -  Flags to pass to cc when compiling the components
+#                       of a shared library (may request position-independent
+#                       code, among other things).
+#       SHLIB_LD -      Base command to use for combining object files
+#                       into a shared library.
+#       SHLIB_LD_LIBS - Dependent libraries for the linker to scan when
+#                       creating shared libraries.  This symbol typically
+#                       goes at the end of the "ld" commands that build
+#                       shared libraries. The value of the symbol is
+#                       "${LIBS}" if all of the dependent libraries should
+#                       be specified when creating a shared library.  If
+#                       dependent libraries should not be specified (as on
+#                       SunOS 4.x, where they cause the link to fail, or in
+#                       general if Tcl and Tk aren't themselves shared
+#                       libraries), then this symbol has an empty string
+#                       as its value.
+#       SHLIB_SUFFIX -  Suffix to use for the names of dynamically loadable
+#                       extensions.  An empty string means we don't know how
+#                       to use shared libraries on this platform.
+#       LIB_SUFFIX -    Specifies everything that comes after the "libfoo"
+#                       in a static or shared library name, using the $VERSION variable
+#                       to put the version in the right place.  This is used
+#                       by platforms that need non-standard library names.
+#                       Examples:  ${VERSION}.so.1.1 on NetBSD, since it needs
+#                       to have a version after the .so, and ${VERSION}.a
+#                       on AIX, since a shared library needs to have
+#                       a .a extension whereas shared objects for loadable
+#                       extensions have a .so extension.  Defaults to
+#                       ${VERSION}${SHLIB_SUFFIX}.
+#       TCL_NEEDS_EXP_FILE -
+#                       1 means that an export file is needed to link to a
+#                       shared library.
+#       TCL_EXP_FILE -  The name of the installed export / import file which
+#                       should be used to link to the Tcl shared library.
+#                       Empty if Tcl is unshared.
+#       TCL_BUILD_EXP_FILE -
+#                       The name of the built export / import file which
+#                       should be used to link to the Tcl shared library.
+#                       Empty if Tcl is unshared.
+#	CFLAGS_DEBUG -
+#			Flags used when running the compiler in debug mode
+#	CFLAGS_OPTIMIZE -
+#			Flags used when running the compiler in optimize mode
+#	CFLAGS -	Additional CFLAGS added as necessary (usually 64-bit)
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([TEA_CONFIG_CFLAGS], [
+    dnl Make sure we are initialized
+    AC_REQUIRE([TEA_INIT])
+
+    # Step 0.a: Enable 64 bit support?
+
+    AC_MSG_CHECKING([if 64bit support is requested])
+    AC_ARG_ENABLE(64bit,
+	AC_HELP_STRING([--enable-64bit],
+	    [enable 64bit support (default: off)]),
+	[do64bit=$enableval], [do64bit=no])
+    AC_MSG_RESULT([$do64bit])
+
+    # Step 0.b: Enable Solaris 64 bit VIS support?
+
+    AC_MSG_CHECKING([if 64bit Sparc VIS support is requested])
+    AC_ARG_ENABLE(64bit-vis,
+	AC_HELP_STRING([--enable-64bit-vis],
+	    [enable 64bit Sparc VIS support (default: off)]),
+	[do64bitVIS=$enableval], [do64bitVIS=no])
+    AC_MSG_RESULT([$do64bitVIS])
+
+    if test "$do64bitVIS" = "yes"; then
+	# Force 64bit on with VIS
+	do64bit=yes
+    fi
+
+    # Step 0.c: Cross-compiling options for Windows/CE builds?
+
+    if test "${TEA_PLATFORM}" = "windows" ; then
+	AC_MSG_CHECKING([if Windows/CE build is requested])
+	AC_ARG_ENABLE(wince,[  --enable-wince          enable Win/CE support (where applicable)], [doWince=$enableval], [doWince=no])
+	AC_MSG_RESULT([$doWince])
+    fi
+
+    # Step 1: set the variable "system" to hold the name and version number
+    # for the system.
+
+    TEA_CONFIG_SYSTEM
+
+    # Step 2: check for existence of -ldl library.  This is needed because
+    # Linux can use either -ldl or -ldld for dynamic loading.
+
+    AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
+
+    # Require ranlib early so we can override it in special cases below.
+
+    AC_REQUIRE([AC_PROG_RANLIB])
+
+    # Step 3: set configuration options based on system name and version.
+    # This is similar to Tcl's unix/tcl.m4 except that we've added a
+    # "windows" case.
+
+    do64bit_ok=no
+    LDFLAGS_ORIG="$LDFLAGS"
+    # When ld needs options to work in 64-bit mode, put them in
+    # LDFLAGS_ARCH so they eventually end up in LDFLAGS even if [load]
+    # is disabled by the user. [Bug 1016796]
+    LDFLAGS_ARCH=""
+    TCL_EXPORT_FILE_SUFFIX=""
+    UNSHARED_LIB_SUFFIX=""
+    TCL_TRIM_DOTS='`echo ${PACKAGE_VERSION} | tr -d .`'
+    ECHO_VERSION='`echo ${PACKAGE_VERSION}`'
+    TCL_LIB_VERSIONS_OK=ok
+    CFLAGS_DEBUG=-g
+    CFLAGS_OPTIMIZE=-O
+    if test "$GCC" = "yes" ; then
+	CFLAGS_OPTIMIZE=-O2
+	CFLAGS_WARNING="-Wall -Wno-implicit-int"
+    else
+	CFLAGS_WARNING=""
+    fi
+    TCL_NEEDS_EXP_FILE=0
+    TCL_BUILD_EXP_FILE=""
+    TCL_EXP_FILE=""
+dnl FIXME: Replace AC_CHECK_PROG with AC_CHECK_TOOL once cross compiling is fixed.
+dnl AC_CHECK_TOOL(AR, ar)
+    AC_CHECK_PROG(AR, ar, ar)
+    STLIB_LD='${AR} cr'
+    LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
+    case $system in
+	windows)
+	    # This is a 2-stage check to make sure we have the 64-bit SDK
+	    # We have to know where the SDK is installed.
+	    # This magic is based on MS Platform SDK for Win2003 SP1 - hobbs
+	    # MACHINE is IX86 for LINK, but this is used by the manifest,
+	    # which requires x86|amd64|ia64.
+	    MACHINE="X86"
+	    if test "$do64bit" != "no" ; then
+		if test "x${MSSDK}x" = "xx" ; then
+		    MSSDK="C:/Progra~1/Microsoft Platform SDK"
+		fi
+		MSSDK=`echo "$MSSDK" | sed -e  's!\\\!/!g'`
+		PATH64=""
+		case "$do64bit" in
+		    amd64|x64|yes)
+			MACHINE="AMD64" ; # default to AMD64 64-bit build
+			PATH64="${MSSDK}/Bin/Win64/x86/AMD64"
+			;;
+		    ia64)
+			MACHINE="IA64"
+			PATH64="${MSSDK}/Bin/Win64"
+			;;
+		esac
+		if test ! -d "${PATH64}" ; then
+		    AC_MSG_WARN([Could not find 64-bit $MACHINE SDK to enable 64bit mode])
+		    AC_MSG_WARN([Ensure latest Platform SDK is installed])
+		    do64bit="no"
+		else
+		    AC_MSG_RESULT([   Using 64-bit $MACHINE mode])
+		    do64bit_ok="yes"
+		fi
+	    fi
+
+	    if test "$doWince" != "no" ; then
+		if test "$do64bit" != "no" ; then
+		    AC_MSG_ERROR([Windows/CE and 64-bit builds incompatible])
+		fi
+		if test "$GCC" = "yes" ; then
+		    AC_MSG_ERROR([Windows/CE and GCC builds incompatible])
+		fi
+		TEA_PATH_CELIB
+		# Set defaults for common evc4/PPC2003 setup
+		# Currently Tcl requires 300+, possibly 420+ for sockets
+		CEVERSION=420; 		# could be 211 300 301 400 420 ...
+		TARGETCPU=ARMV4;	# could be ARMV4 ARM MIPS SH3 X86 ...
+		ARCH=ARM;		# could be ARM MIPS X86EM ...
+		PLATFORM="Pocket PC 2003"; # or "Pocket PC 2002"
+		if test "$doWince" != "yes"; then
+		    # If !yes then the user specified something
+		    # Reset ARCH to allow user to skip specifying it
+		    ARCH=
+		    eval `echo $doWince | awk -F, '{ \
+	    if (length([$]1)) { printf "CEVERSION=\"%s\"\n", [$]1; \
+	    if ([$]1 < 400)   { printf "PLATFORM=\"Pocket PC 2002\"\n" } }; \
+	    if (length([$]2)) { printf "TARGETCPU=\"%s\"\n", toupper([$]2) }; \
+	    if (length([$]3)) { printf "ARCH=\"%s\"\n", toupper([$]3) }; \
+	    if (length([$]4)) { printf "PLATFORM=\"%s\"\n", [$]4 }; \
+		    }'`
+		    if test "x${ARCH}" = "x" ; then
+			ARCH=$TARGETCPU;
+		    fi
+		fi
+		OSVERSION=WCE$CEVERSION;
+	    	if test "x${WCEROOT}" = "x" ; then
+			WCEROOT="C:/Program Files/Microsoft eMbedded C++ 4.0"
+		    if test ! -d "${WCEROOT}" ; then
+			WCEROOT="C:/Program Files/Microsoft eMbedded Tools"
+		    fi
+		fi
+		if test "x${SDKROOT}" = "x" ; then
+		    SDKROOT="C:/Program Files/Windows CE Tools"
+		    if test ! -d "${SDKROOT}" ; then
+			SDKROOT="C:/Windows CE Tools"
+		    fi
+		fi
+		WCEROOT=`echo "$WCEROOT" | sed -e 's!\\\!/!g'`
+		SDKROOT=`echo "$SDKROOT" | sed -e 's!\\\!/!g'`
+		if test ! -d "${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}" \
+		    -o ! -d "${WCEROOT}/EVC/${OSVERSION}/bin"; then
+		    AC_MSG_ERROR([could not find PocketPC SDK or target compiler to enable WinCE mode [$CEVERSION,$TARGETCPU,$ARCH,$PLATFORM]])
+		    doWince="no"
+		else
+		    # We could PATH_NOSPACE these, but that's not important,
+		    # as long as we quote them when used.
+		    CEINCLUDE="${SDKROOT}/${OSVERSION}/${PLATFORM}/include"
+		    if test -d "${CEINCLUDE}/${TARGETCPU}" ; then
+			CEINCLUDE="${CEINCLUDE}/${TARGETCPU}"
+		    fi
+		    CELIBPATH="${SDKROOT}/${OSVERSION}/${PLATFORM}/Lib/${TARGETCPU}"
+    		fi
+	    fi
+
+	    if test "$GCC" != "yes" ; then
+	        if test "${SHARED_BUILD}" = "0" ; then
+		    runtime=-MT
+	        else
+		    runtime=-MD
+	        fi
+
+                if test "$do64bit" != "no" ; then
+		    # All this magic is necessary for the Win64 SDK RC1 - hobbs
+		    CC="\"${PATH64}/cl.exe\""
+		    CFLAGS="${CFLAGS} -I\"${MSSDK}/Include\" -I\"${MSSDK}/Include/crt\" -I\"${MSSDK}/Include/crt/sys\""
+		    RC="\"${MSSDK}/bin/rc.exe\""
+		    lflags="-nologo -MACHINE:${MACHINE} -LIBPATH:\"${MSSDK}/Lib/${MACHINE}\""
+		    LINKBIN="\"${PATH64}/link.exe\""
+		    CFLAGS_DEBUG="-nologo -Zi -Od -W3 ${runtime}d"
+		    CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}"
+		    # Avoid 'unresolved external symbol __security_cookie'
+		    # errors, c.f. http://support.microsoft.com/?id=894573
+		    TEA_ADD_LIBS([bufferoverflowU.lib])
+		elif test "$doWince" != "no" ; then
+		    CEBINROOT="${WCEROOT}/EVC/${OSVERSION}/bin"
+		    if test "${TARGETCPU}" = "X86"; then
+			CC="\"${CEBINROOT}/cl.exe\""
+		    else
+			CC="\"${CEBINROOT}/cl${ARCH}.exe\""
+		    fi
+		    CFLAGS="$CFLAGS -I\"${CELIB_DIR}/inc\" -I\"${CEINCLUDE}\""
+		    RC="\"${WCEROOT}/Common/EVC/bin/rc.exe\""
+		    arch=`echo ${ARCH} | awk '{print tolower([$]0)}'`
+		    defs="${ARCH} _${ARCH}_ ${arch} PALM_SIZE _MT _WINDOWS"
+		    if test "${SHARED_BUILD}" = "1" ; then
+			# Static CE builds require static celib as well
+		    	defs="${defs} _DLL"
+		    fi
+		    for i in $defs ; do
+			AC_DEFINE_UNQUOTED($i, 1, [WinCE def ]$i)
+		    done
+		    AC_DEFINE_UNQUOTED(_WIN32_WCE, $CEVERSION, [_WIN32_WCE version])
+		    AC_DEFINE_UNQUOTED(UNDER_CE, $CEVERSION, [UNDER_CE version])
+		    CFLAGS_DEBUG="-nologo -Zi -Od"
+		    CFLAGS_OPTIMIZE="-nologo -Ox"
+		    lversion=`echo ${CEVERSION} | sed -e 's/\(.\)\(..\)/\1\.\2/'`
+		    lflags="-MACHINE:${ARCH} -LIBPATH:\"${CELIBPATH}\" -subsystem:windowsce,${lversion} -nologo"
+		    LINKBIN="\"${CEBINROOT}/link.exe\""
+		    AC_SUBST(CELIB_DIR)
+		else
+		    RC="rc"
+		    lflags="-nologo"
+    		    LINKBIN="link"
+		    CFLAGS_DEBUG="-nologo -Z7 -Od -W3 -WX ${runtime}d"
+		    CFLAGS_OPTIMIZE="-nologo -O2 -W2 ${runtime}"
+		fi
+	    fi
+
+	    if test "$GCC" = "yes"; then
+		# mingw gcc mode
+		RC="windres"
+		CFLAGS_DEBUG="-g"
+		CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer"
+		SHLIB_LD="$CC -shared"
+		UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+		LDFLAGS_CONSOLE="-wl,--subsystem,console ${lflags}"
+		LDFLAGS_WINDOW="-wl,--subsystem,windows ${lflags}"
+	    else
+		SHLIB_LD="${LINKBIN} -dll ${lflags}"
+		# link -lib only works when -lib is the first arg
+		STLIB_LD="${LINKBIN} -lib ${lflags}"
+		UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.lib'
+		PATHTYPE=-w
+		# For information on what debugtype is most useful, see:
+		# http://msdn.microsoft.com/library/en-us/dnvc60/html/gendepdebug.asp
+		# This essentially turns it all on.
+		LDFLAGS_DEBUG="-debug:full -debugtype:both -warn:2"
+		LDFLAGS_OPTIMIZE="-release"
+		if test "$doWince" != "no" ; then
+		    LDFLAGS_CONSOLE="-link ${lflags}"
+		    LDFLAGS_WINDOW=${LDFLAGS_CONSOLE}
+		else
+		    LDFLAGS_CONSOLE="-link -subsystem:console ${lflags}"
+		    LDFLAGS_WINDOW="-link -subsystem:windows ${lflags}"
+		fi
+	    fi
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".dll"
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.dll'
+
+	    TCL_LIB_VERSIONS_OK=nodots
+	    # Bogus to avoid getting this turned off
+	    DL_OBJS="tclLoadNone.obj"
+    	    ;;
+	AIX-*)
+	    if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
+		# AIX requires the _r compiler when gcc isn't being used
+		case "${CC}" in
+		    *_r)
+			# ok ...
+			;;
+		    *)
+			CC=${CC}_r
+			;;
+		esac
+		AC_MSG_RESULT([Using $CC for compiling with threads])
+	    fi
+	    LIBS="$LIBS -lc"
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    DL_OBJS="tclLoadDl.o"
+	    LD_LIBRARY_PATH_VAR="LIBPATH"
+
+	    # Check to enable 64-bit flags for compiler/linker on AIX 4+
+	    if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then
+		if test "$GCC" = "yes" ; then
+		    AC_MSG_WARN([64bit mode not supported with GCC on $system])
+		else 
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS -q64"
+		    LDFLAGS_ARCH="-q64"
+		    RANLIB="${RANLIB} -X64"
+		    AR="${AR} -X64"
+		    SHLIB_LD_FLAGS="-b64"
+		fi
+	    fi
+
+	    if test "`uname -m`" = "ia64" ; then
+		# AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		# AIX-5 has dl* in libc.so
+		DL_LIBS=""
+		if test "$GCC" = "yes" ; then
+		    CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		else
+		    CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
+		fi
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    else
+		if test "$GCC" = "yes" ; then
+		    SHLIB_LD="gcc -shared"
+		else
+		    SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
+		fi
+		SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}"
+		DL_LIBS="-ldl"
+		CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		TCL_NEEDS_EXP_FILE=1
+		TCL_EXPORT_FILE_SUFFIX='${PACKAGE_VERSION}.exp'
+	    fi
+
+	    # AIX v<=4.1 has some different flags than 4.2+
+	    if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then
+		AC_LIBOBJ([tclLoadAix])
+		DL_LIBS="-lld"
+	    fi
+
+	    # On AIX <=v4 systems, libbsd.a has to be linked in to support
+	    # non-blocking file IO.  This library has to be linked in after
+	    # the MATH_LIBS or it breaks the pow() function.  The way to
+	    # insure proper sequencing, is to add it to the tail of MATH_LIBS.
+	    # This library also supplies gettimeofday.
+	    #
+	    # AIX does not have a timezone field in struct tm. When the AIX
+	    # bsd library is used, the timezone global and the gettimeofday
+	    # methods are to be avoided for timezone deduction instead, we
+	    # deduce the timezone by comparing the localtime result on a
+	    # known GMT value.
+
+	    AC_CHECK_LIB(bsd, gettimeofday, libbsd=yes, libbsd=no)
+	    if test $libbsd = yes; then
+	    	MATH_LIBS="$MATH_LIBS -lbsd"
+	    	AC_DEFINE(USE_DELTA_FOR_TZ, 1, [Do we need a special AIX hack for timezones?])
+	    fi
+	    ;;
+	BeOS*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="${CC} -nostart"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+
+	    #-----------------------------------------------------------
+	    # Check for inet_ntoa in -lbind, for BeOS (which also needs
+	    # -lsocket, even if the network functions are in -lnet which
+	    # is always linked to, for compatibility.
+	    #-----------------------------------------------------------
+	    AC_CHECK_LIB(bind, inet_ntoa, [LIBS="$LIBS -lbind -lsocket"])
+	    ;;
+	BSD/OS-2.1*|BSD/OS-3*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="shlicc -r"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	BSD/OS-4.*)
+	    SHLIB_CFLAGS="-export-dynamic -fPIC"
+	    SHLIB_LD="cc -shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	dgux*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	HP-UX-*.11.*)
+	    # Use updated header definitions where possible
+	    AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Do we want to use the XOPEN network library?])
+	    # Needed by Tcl, but not most extensions
+	    #AC_DEFINE(_XOPEN_SOURCE, 1, [Do we want to use the XOPEN network library?])
+	    #LIBS="$LIBS -lxnet"               # Use the XOPEN network library
+
+	    SHLIB_SUFFIX=".sl"
+	    AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS='${LIBS}'
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="gcc -shared"
+		SHLIB_LD_LIBS='${LIBS}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+
+	    # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc
+	    #CFLAGS="$CFLAGS +DAportable"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		if test "$GCC" = "yes" ; then
+		    hpux_arch=`${CC} -dumpmachine`
+		    case $hpux_arch in
+			hppa64*)
+			    # 64-bit gcc in use.  Fix flags for GNU ld.
+			    do64bit_ok=yes
+			    SHLIB_LD="${CC} -shared"
+			    SHLIB_LD_LIBS='${LIBS}'
+			    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+			    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+			    ;;
+			*)
+			    AC_MSG_WARN([64bit mode not supported with GCC on $system])
+			    ;;
+		    esac
+		else
+		    do64bit_ok=yes
+		    CFLAGS="$CFLAGS +DD64"
+		    LDFLAGS_ARCH="+DD64"
+		fi
+	    fi
+	    ;;
+	HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
+	    SHLIB_SUFFIX=".sl"
+	    AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
+	    if test "$tcl_ok" = yes; then
+		SHLIB_CFLAGS="+z"
+		SHLIB_LD="ld -b"
+		SHLIB_LD_LIBS=""
+		DL_OBJS="tclLoadShl.o"
+		DL_LIBS="-ldld"
+		LDFLAGS="$LDFLAGS -Wl,-E"
+		CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
+		LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
+		LD_LIBRARY_PATH_VAR="SHLIB_PATH"
+	    fi
+	    ;;
+	IRIX-5.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    ;;
+	IRIX-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mabi=n32"
+		LDFLAGS="$LDFLAGS -mabi=n32"
+	    else
+		case $system in
+		    IRIX-6.3)
+			# Use to build 6.2 compatible binaries on 6.3.
+			CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS"
+			;;
+		    *)
+			CFLAGS="$CFLAGS -n32"
+			;;
+		esac
+		LDFLAGS="$LDFLAGS -n32"
+	    fi
+	    ;;
+	IRIX64-6.*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="ld -n32 -shared -rdata_shared"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+
+	    # Check to enable 64-bit flags for compiler/linker
+
+	    if test "$do64bit" = "yes" ; then
+	        if test "$GCC" = "yes" ; then
+	            AC_MSG_WARN([64bit mode not supported by gcc])
+	        else
+	            do64bit_ok=yes
+	            SHLIB_LD="ld -64 -shared -rdata_shared"
+	            CFLAGS="$CFLAGS -64"
+	            LDFLAGS_ARCH="-64"
+	        fi
+	    fi
+	    ;;
+	Linux*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer"
+	    # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings 
+	    # when you inline the string and math operations.  Turn this off to
+	    # get rid of the warnings.
+	    #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
+
+	    SHLIB_LD="${CC} -shared"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+
+	    # The combo of gcc + glibc has a bug related
+	    # to inlining of functions like strtod(). The
+	    # -fno-builtin flag should address this problem
+	    # but it does not work. The -fno-inline flag
+	    # is kind of overkill but it works.
+	    # Disable inlining only when one of the
+	    # files in compat/*.c is being linked in.
+	    if test x"${USE_COMPAT}" != x ; then
+	        CFLAGS="$CFLAGS -fno-inline"
+	    fi
+
+	    ;;
+	GNU*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+
+	    SHLIB_LD="${CC} -shared"
+	    DL_OBJS=""
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    if test "`uname -m`" = "alpha" ; then
+		CFLAGS="$CFLAGS -mieee"
+	    fi
+	    ;;
+	Lynx*)
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    CFLAGS_OPTIMIZE=-02
+	    SHLIB_LD="${CC} -shared "
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-mshared -ldl"
+	    LD_FLAGS="-Wl,--export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    ;;
+	MP-RAS-02*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	MP-RAS-*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	NetBSD-*|FreeBSD-[[1-2]].*)
+	    # NetBSD/SPARC needs -fPIC, -fpic will not do.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
+		AC_EGREP_CPP(yes, [
+#ifdef __ELF__
+	yes
+#endif
+		], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
+	    if test $tcl_cv_ld_elf = yes; then
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
+	    else
+		SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+	    fi
+
+	    # Ancient FreeBSD doesn't handle version numbers with dots.
+
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	OpenBSD-*)
+	    # OpenBSD/SPARC[64] needs -fPIC, -fpic will not do.
+	    case `machine` in
+	    sparc|sparc64)
+		SHLIB_CFLAGS="-fPIC";;
+	    *)
+		SHLIB_CFLAGS="-fpic";;
+	    esac
+	    SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+	    AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
+		AC_EGREP_CPP(yes, [
+#ifdef __ELF__
+	yes
+#endif
+		], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
+	    if test $tcl_cv_ld_elf = yes; then
+		LDFLAGS=-Wl,-export-dynamic
+	    else
+		LDFLAGS=""
+	    fi
+
+	    # OpenBSD doesn't do version numbers with dots.
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	FreeBSD-*)
+	    # FreeBSD 3.* and greater have ELF.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    LDFLAGS="$LDFLAGS -export-dynamic"
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "${TCL_THREADS}" = "1" ; then
+		# The -pthread needs to go in the CFLAGS, not LIBS
+		LIBS=`echo $LIBS | sed s/-pthread//`
+		CFLAGS="$CFLAGS -pthread"
+	    	LDFLAGS="$LDFLAGS -pthread"
+	    fi
+	    case $system in
+	    FreeBSD-3.*)
+	    	# FreeBSD-3 doesn't handle version numbers with dots.
+	    	UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+	    	SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so'
+	    	TCL_LIB_VERSIONS_OK=nodots
+		;;
+	    esac
+	    ;;
+	Darwin-*)
+	    CFLAGS_OPTIMIZE="-Os"
+	    SHLIB_CFLAGS="-fno-common"
+	    if test $do64bit = yes; then
+	        do64bit_ok=yes
+	        CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
+	    fi
+	    # TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS here:
+	    SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS_DEFAULT}'
+	    AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [
+	        hold_ldflags=$LDFLAGS
+	        LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
+	        AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no)
+	        LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_single_module = yes; then
+	        SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
+	    fi
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".dylib"
+	    DL_OBJS="tclLoadDyld.o"
+	    DL_LIBS=""
+	    # Don't use -prebind when building for Mac OS X 10.4 or later only:
+	    test -z "${MACOSX_DEPLOYMENT_TARGET}" || \
+		test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F. '{print [$]2}'`" -lt 4 && \
+		LDFLAGS="$LDFLAGS -prebind"
+	    LDFLAGS="$LDFLAGS -headerpad_max_install_names"
+	    AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [
+	        hold_ldflags=$LDFLAGS
+	        LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+	        AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes, tcl_cv_ld_search_paths_first=no)
+	        LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_search_paths_first = yes; then
+	        LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
+
+	    # TEA specific: for Tk extensions, remove -arch ppc64 from CFLAGS
+	    # for fat builds, as neither TkAqua nor TkX11 can be built for 64bit
+	    # at present (no 64bit GUI libraries).
+	    test $do64bit_ok = no && test -n "${TK_BIN_DIR}" && \
+	        CFLAGS="`echo "$CFLAGS" | sed -e 's/-arch ppc64/-arch ppc/g'`"
+	    ;;
+	NEXTSTEP-*)
+	    SHLIB_CFLAGS=""
+	    SHLIB_LD="cc -nostdlib -r"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadNext.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OS/390-*)
+	    CFLAGS_OPTIMIZE=""		# Optimizer is buggy
+	    AC_DEFINE(_OE_SOCKETS, 1,	# needed in sys/socket.h
+		[Should OS/390 do the right thing with sockets?])
+	    ;;      
+	OSF1-1.0|OSF1-1.1|OSF1-1.2)
+	    # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1
+	    SHLIB_CFLAGS=""
+	    # Hack: make package name same as library name
+	    SHLIB_LD='ld -R -export $@:'
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadOSF.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-1.*)
+	    # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
+	    SHLIB_CFLAGS="-fPIC"
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD="ld -shared"
+	    else
+	        SHLIB_LD="ld -non_shared"
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	OSF1-V*)
+	    # Digital OSF/1
+	    SHLIB_CFLAGS=""
+	    if test "$SHARED_BUILD" = "1" ; then
+	        SHLIB_LD='ld -shared -expect_unresolved "*"'
+	    else
+	        SHLIB_LD='ld -non_shared -expect_unresolved "*"'
+	    fi
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
+	    if test "$GCC" = "yes" ; then
+		CFLAGS="$CFLAGS -mieee"
+            else
+		CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"
+	    fi
+	    # see pthread_intro(3) for pthread support on osf1, k.furukawa
+	    if test "${TCL_THREADS}" = "1" ; then
+		CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
+		CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
+		LIBS=`echo $LIBS | sed s/-lpthreads//`
+		if test "$GCC" = "yes" ; then
+		    LIBS="$LIBS -lpthread -lmach -lexc"
+		else
+		    CFLAGS="$CFLAGS -pthread"
+		    LDFLAGS="$LDFLAGS -pthread"
+		fi
+	    fi
+
+	    ;;
+	QNX-6*)
+	    # QNX RTP
+	    # This may work for all QNX, but it was only reported for v6.
+	    SHLIB_CFLAGS="-fPIC"
+	    SHLIB_LD="ld -Bshareable -x"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    # dlopen is in -lc on QNX
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SCO_SV-3.2*)
+	    # Note, dlopen is available only on SCO 3.2.5 and greater. However,
+	    # this test works, since "uname -s" was non-standard in 3.2.4 and
+	    # below.
+	    if test "$GCC" = "yes" ; then
+	    	SHLIB_CFLAGS="-fPIC -melf"
+	    	LDFLAGS="$LDFLAGS -melf -Wl,-Bexport"
+	    else
+	    	SHLIB_CFLAGS="-Kpic -belf"
+	    	LDFLAGS="$LDFLAGS -belf -Wl,-Bexport"
+	    fi
+	    SHLIB_LD="ld -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS=""
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SINIX*5.4*)
+	    SHLIB_CFLAGS="-K PIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+	SunOS-4*)
+	    SHLIB_CFLAGS="-PIC"
+	    SHLIB_LD="ld"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
+	    LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+
+	    # SunOS can't handle version numbers with dots in them in library
+	    # specs, like -ltcl7.5, so use -ltcl75 instead.  Also, it
+	    # requires an extra version number at the end of .so file names.
+	    # So, the library has to have a name like libtcl75.so.1.0
+
+	    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.1.0'
+	    UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+	    TCL_LIB_VERSIONS_OK=nodots
+	    ;;
+	SunOS-5.[[0-6]])
+	    # Careful to not let 5.10+ fall into this case
+
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+	    AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?])
+	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1,
+		[Do we really want to follow the standard? Yes we do!])
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    else
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+	    fi
+	    ;;
+	SunOS-5*)
+	    # Note: If _REENTRANT isn't defined, then Solaris
+	    # won't define thread-safe library routines.
+
+	    AC_DEFINE(_REENTRANT, 1, [Do we want the reentrant OS API?])
+	    AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1,
+		[Do we really want to follow the standard? Yes we do!])
+
+	    SHLIB_CFLAGS="-KPIC"
+
+	    # Check to enable 64-bit flags for compiler/linker
+	    if test "$do64bit" = "yes" ; then
+		arch=`isainfo`
+		if test "$arch" = "sparcv9 sparc" ; then
+			if test "$GCC" = "yes" ; then
+			    if test "`gcc -dumpversion | awk -F. '{print [$]1}'`" -lt "3" ; then
+				AC_MSG_WARN([64bit mode not supported with GCC < 3.2 on $system])
+			    else
+				do64bit_ok=yes
+				CFLAGS="$CFLAGS -m64 -mcpu=v9"
+				LDFLAGS="$LDFLAGS -m64 -mcpu=v9"
+				SHLIB_CFLAGS="-fPIC"
+			    fi
+			else
+			    do64bit_ok=yes
+			    if test "$do64bitVIS" = "yes" ; then
+				CFLAGS="$CFLAGS -xarch=v9a"
+			    	LDFLAGS_ARCH="-xarch=v9a"
+			    else
+				CFLAGS="$CFLAGS -xarch=v9"
+			    	LDFLAGS_ARCH="-xarch=v9"
+			    fi
+			    # Solaris 64 uses this as well
+			    #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64"
+			fi
+		elif test "$arch" = "amd64 i386" ; then
+		    if test "$GCC" = "yes" ; then
+			AC_MSG_WARN([64bit mode not supported with GCC on $system])
+		    else
+			do64bit_ok=yes
+			CFLAGS="$CFLAGS -xarch=amd64"
+			LDFLAGS="$LDFLAGS -xarch=amd64"
+		    fi
+		else
+		    AC_MSG_WARN([64bit mode not supported for $arch])
+		fi
+	    fi
+	    
+	    # Note: need the LIBS below, otherwise Tk won't find Tcl's
+	    # symbols when dynamically loaded into tclsh.
+
+	    SHLIB_LD_LIBS='${LIBS}'
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    if test "$GCC" = "yes" ; then
+		SHLIB_LD="$CC -shared"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
+		if test "$do64bit_ok" = "yes" ; then
+		    # We need to specify -static-libgcc or we need to
+		    # add the path to the sparv9 libgcc.
+		    # JH: static-libgcc is necessary for core Tcl, but may
+		    # not be necessary for extensions.
+		    SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc"
+		    # for finding sparcv9 libgcc, get the regular libgcc
+		    # path, remove so name and append 'sparcv9'
+		    #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..."
+		    #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir"
+		fi
+	    else
+		SHLIB_LD="/usr/ccs/bin/ld -G -z text"
+		CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+		LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+	    fi
+	    ;;
+	UNIX_SV* | UnixWare-5*)
+	    SHLIB_CFLAGS="-KPIC"
+	    SHLIB_LD="cc -G"
+	    SHLIB_LD_LIBS=""
+	    SHLIB_SUFFIX=".so"
+	    DL_OBJS="tclLoadDl.o"
+	    DL_LIBS="-ldl"
+	    # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
+	    # that don't grok the -Bexport option.  Test that it does.
+	    AC_CACHE_CHECK([for ld accepts -Bexport flag], tcl_cv_ld_Bexport, [
+		hold_ldflags=$LDFLAGS
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+		AC_TRY_LINK(, [int i;], tcl_cv_ld_Bexport=yes, tcl_cv_ld_Bexport=no)
+	        LDFLAGS=$hold_ldflags])
+	    if test $tcl_cv_ld_Bexport = yes; then
+		LDFLAGS="$LDFLAGS -Wl,-Bexport"
+	    fi
+	    CC_SEARCH_FLAGS=""
+	    LD_SEARCH_FLAGS=""
+	    ;;
+    esac
+
+    if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then
+	AC_MSG_WARN([64bit support being disabled -- don't know magic for this platform])
+    fi
+
+    # Step 4: disable dynamic loading if requested via a command-line switch.
+
+    AC_ARG_ENABLE(load,
+	AC_HELP_STRING([--disable-load],
+	    [disallow dynamic loading and "load" command (default: enabled)]),
+	[tcl_ok=$enableval], [tcl_ok=yes])
+    if test "$tcl_ok" = "no"; then
+	DL_OBJS=""
+    fi
+
+    if test "x$DL_OBJS" != "x" ; then
+	BUILD_DLTEST="\$(DLTEST_TARGETS)"
+    else
+	echo "Can't figure out how to do dynamic loading or shared libraries"
+	echo "on this system."
+	SHLIB_CFLAGS=""
+	SHLIB_LD=""
+	SHLIB_SUFFIX=""
+	DL_OBJS="tclLoadNone.o"
+	DL_LIBS=""
+	LDFLAGS="$LDFLAGS_ORIG"
+	CC_SEARCH_FLAGS=""
+	LD_SEARCH_FLAGS=""
+	BUILD_DLTEST=""
+    fi
+    LDFLAGS="$LDFLAGS $LDFLAGS_ARCH"
+
+    # If we're running gcc, then change the C flags for compiling shared
+    # libraries to the right flags for gcc, instead of those for the
+    # standard manufacturer compiler.
+
+    if test "$DL_OBJS" != "tclLoadNone.o" ; then
+	if test "$GCC" = "yes" ; then
+	    case $system in
+		AIX-*)
+		    ;;
+		BSD/OS*)
+		    ;;
+		IRIX*)
+		    ;;
+		NetBSD-*|FreeBSD-*)
+		    ;;
+		Darwin-*)
+		    ;;
+		SCO_SV-3.2*)
+		    ;;
+		windows)
+		    ;;
+		*)
+		    SHLIB_CFLAGS="-fPIC"
+		    ;;
+	    esac
+	fi
+    fi
+
+    if test "$SHARED_LIB_SUFFIX" = "" ; then
+	SHARED_LIB_SUFFIX='${PACKAGE_VERSION}${SHLIB_SUFFIX}'
+    fi
+    if test "$UNSHARED_LIB_SUFFIX" = "" ; then
+	UNSHARED_LIB_SUFFIX='${PACKAGE_VERSION}.a'
+    fi
+
+    AC_SUBST(DL_LIBS)
+
+    AC_SUBST(CFLAGS_DEBUG)
+    AC_SUBST(CFLAGS_OPTIMIZE)
+    AC_SUBST(CFLAGS_WARNING)
+
+    AC_SUBST(STLIB_LD)
+    AC_SUBST(SHLIB_LD)
+
+    AC_SUBST(SHLIB_LD_LIBS)
+    AC_SUBST(SHLIB_CFLAGS)
+
+    AC_SUBST(LD_LIBRARY_PATH_VAR)
+
+    # These must be called after we do the basic CFLAGS checks and
+    # verify any possible 64-bit or similar switches are necessary
+    TEA_TCL_EARLY_FLAGS
+    TEA_TCL_64BIT_FLAGS
+])
+
+#--------------------------------------------------------------------
+# TEA_SERIAL_PORT
+#
+#	Determine which interface to use to talk to the serial port.
+#	Note that #include lines must begin in leftmost column for
+#	some compilers to recognize them as preprocessor directives,
+#	and some build environments have stdin not pointing at a
+#	pseudo-terminal (usually /dev/null instead.)
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines only one of the following vars:
+#		HAVE_SYS_MODEM_H
+#		USE_TERMIOS
+#		USE_TERMIO
+#		USE_SGTTY
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([TEA_SERIAL_PORT], [
+    AC_CHECK_HEADERS(sys/modem.h)
+    AC_CACHE_CHECK([termios vs. termio vs. sgtty], tcl_cv_api_serial, [
+    AC_TRY_RUN([
+#include <termios.h>
+
+int main() {
+    struct termios t;
+    if (tcgetattr(0, &t) == 0) {
+	cfsetospeed(&t, 0);
+	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <termio.h>
+
+int main() {
+    struct termio t;
+    if (ioctl(0, TCGETA, &t) == 0) {
+	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <sgtty.h>
+
+int main() {
+    struct sgttyb t;
+    if (ioctl(0, TIOCGETP, &t) == 0) {
+	t.sg_ospeed = 0;
+	t.sg_flags |= ODDP | EVENP | RAW;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no ; then
+	AC_TRY_RUN([
+#include <termios.h>
+#include <errno.h>
+
+int main() {
+    struct termios t;
+    if (tcgetattr(0, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	cfsetospeed(&t, 0);
+	t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no; then
+	AC_TRY_RUN([
+#include <termio.h>
+#include <errno.h>
+
+int main() {
+    struct termio t;
+    if (ioctl(0, TCGETA, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
+	return 0;
+    }
+    return 1;
+    }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
+    fi
+    if test $tcl_cv_api_serial = no; then
+	AC_TRY_RUN([
+#include <sgtty.h>
+#include <errno.h>
+
+int main() {
+    struct sgttyb t;
+    if (ioctl(0, TIOCGETP, &t) == 0
+	|| errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
+	t.sg_ospeed = 0;
+	t.sg_flags |= ODDP | EVENP | RAW;
+	return 0;
+    }
+    return 1;
+}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
+    fi])
+    case $tcl_cv_api_serial in
+	termios) AC_DEFINE(USE_TERMIOS, 1, [Use the termios API for serial lines]);;
+	termio)  AC_DEFINE(USE_TERMIO, 1, [Use the termio API for serial lines]);;
+	sgtty)   AC_DEFINE(USE_SGTTY, 1, [Use the sgtty API for serial lines]);;
+    esac
+])
+
+#--------------------------------------------------------------------
+# TEA_MISSING_POSIX_HEADERS
+#
+#	Supply substitutes for missing POSIX header files.  Special
+#	notes:
+#	    - stdlib.h doesn't define strtol, strtoul, or
+#	      strtod insome versions of SunOS
+#	    - some versions of string.h don't declare procedures such
+#	      as strstr
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		NO_DIRENT_H
+#		NO_ERRNO_H
+#		NO_VALUES_H
+#		HAVE_LIMITS_H or NO_LIMITS_H
+#		NO_STDLIB_H
+#		NO_STRING_H
+#		NO_SYS_WAIT_H
+#		NO_DLFCN_H
+#		HAVE_SYS_PARAM_H
+#
+#		HAVE_STRING_H ?
+#
+# tkUnixPort.h checks for HAVE_LIMITS_H, so do both HAVE and
+# CHECK on limits.h
+#--------------------------------------------------------------------
+
+AC_DEFUN([TEA_MISSING_POSIX_HEADERS], [
+    AC_CACHE_CHECK([dirent.h], tcl_cv_dirent_h,
+    AC_TRY_LINK([#include <sys/types.h>
+#include <dirent.h>], [
+#ifndef _POSIX_SOURCE
+#   ifdef __Lynx__
+	/*
+	 * Generate compilation error to make the test fail:  Lynx headers
+	 * are only valid if really in the POSIX environment.
+	 */
+
+	missing_procedure();
+#   endif
+#endif
+DIR *d;
+struct dirent *entryPtr;
+char *p;
+d = opendir("foobar");
+entryPtr = readdir(d);
+p = entryPtr->d_name;
+closedir(d);
+], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no))
+
+    if test $tcl_cv_dirent_h = no; then
+	AC_DEFINE(NO_DIRENT_H, 1, [Do we have <dirent.h>?])
+    fi
+
+    AC_CHECK_HEADER(errno.h, , [AC_DEFINE(NO_ERRNO_H, 1, [Do we have <errno.h>?])])
+    AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H, 1, [Do we have <float.h>?])])
+    AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H, 1, [Do we have <values.h>?])])
+    AC_CHECK_HEADER(limits.h,
+	[AC_DEFINE(HAVE_LIMITS_H, 1, [Do we have <limits.h>?])],
+	[AC_DEFINE(NO_LIMITS_H, 1, [Do we have <limits.h>?])])
+    AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0)
+    AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strtoul, stdlib.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strtod, stdlib.h, , tcl_ok=0)
+    if test $tcl_ok = 0; then
+	AC_DEFINE(NO_STDLIB_H, 1, [Do we have <stdlib.h>?])
+    fi
+    AC_CHECK_HEADER(string.h, tcl_ok=1, tcl_ok=0)
+    AC_EGREP_HEADER(strstr, string.h, , tcl_ok=0)
+    AC_EGREP_HEADER(strerror, string.h, , tcl_ok=0)
+
+    # See also memmove check below for a place where NO_STRING_H can be
+    # set and why.
+
+    if test $tcl_ok = 0; then
+	AC_DEFINE(NO_STRING_H, 1, [Do we have <string.h>?])
+    fi
+
+    AC_CHECK_HEADER(sys/wait.h, , [AC_DEFINE(NO_SYS_WAIT_H, 1, [Do we have <sys/wait.h>?])])
+    AC_CHECK_HEADER(dlfcn.h, , [AC_DEFINE(NO_DLFCN_H, 1, [Do we have <dlfcn.h>?])])
+
+    # OS/390 lacks sys/param.h (and doesn't need it, by chance).
+    AC_HAVE_HEADERS(sys/param.h)
+])
+
+#--------------------------------------------------------------------
+# TEA_PATH_X
+#
+#	Locate the X11 header files and the X11 library archive.  Try
+#	the ac_path_x macro first, but if it doesn't find the X stuff
+#	(e.g. because there's no xmkmf program) then check through
+#	a list of possible directories.  Under some conditions the
+#	autoconf macro will return an include directory that contains
+#	no include files, so double-check its result just to be safe.
+#
+#	This should be called after TEA_CONFIG_CFLAGS as setting the
+#	LIBS line can confuse some configure macro magic.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Sets the following vars:
+#		XINCLUDES
+#		XLIBSW
+#		PKG_LIBS (appends to)
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([TEA_PATH_X], [
+    if test "${TEA_WINDOWINGSYSTEM}" = "x11" ; then
+	TEA_PATH_UNIX_X
+    fi
+])
+
+AC_DEFUN([TEA_PATH_UNIX_X], [
+    AC_PATH_X
+    not_really_there=""
+    if test "$no_x" = ""; then
+	if test "$x_includes" = ""; then
+	    AC_TRY_CPP([#include <X11/XIntrinsic.h>], , not_really_there="yes")
+	else
+	    if test ! -r $x_includes/X11/Intrinsic.h; then
+		not_really_there="yes"
+	    fi
+	fi
+    fi
+    if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
+	AC_MSG_CHECKING([for X11 header files])
+	found_xincludes="no"
+	AC_TRY_CPP([#include <X11/Intrinsic.h>], found_xincludes="yes", found_xincludes="no")
+	if test "$found_xincludes" = "no"; then
+	    dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include"
+	    for i in $dirs ; do
+		if test -r $i/X11/Intrinsic.h; then
+		    AC_MSG_RESULT([$i])
+		    XINCLUDES=" -I$i"
+		    found_xincludes="yes"
+		    break
+		fi
+	    done
+	fi
+    else
+	if test "$x_includes" != ""; then
+	    XINCLUDES="-I$x_includes"
+	    found_xincludes="yes"
+	fi
+    fi
+    if test found_xincludes = "no"; then
+	AC_MSG_RESULT([couldn't find any!])
+    fi
+
+    if test "$no_x" = yes; then
+	AC_MSG_CHECKING([for X11 libraries])
+	XLIBSW=nope
+	dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
+	for i in $dirs ; do
+	    if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then
+		AC_MSG_RESULT([$i])
+		XLIBSW="-L$i -lX11"
+		x_libraries="$i"
+		break
+	    fi
+	done
+    else
+	if test "$x_libraries" = ""; then
+	    XLIBSW=-lX11
+	else
+	    XLIBSW="-L$x_libraries -lX11"
+	fi
+    fi
+    if test "$XLIBSW" = nope ; then
+	AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow)
+    fi
+    if test "$XLIBSW" = nope ; then
+	AC_MSG_RESULT([could not find any!  Using -lX11.])
+	XLIBSW=-lX11
+    fi
+    if test x"${XLIBSW}" != x ; then
+	PKG_LIBS="${PKG_LIBS} ${XLIBSW}"
+    fi
+])
+
+#--------------------------------------------------------------------
+# TEA_BLOCKING_STYLE
+#
+#	The statements below check for systems where POSIX-style
+#	non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented. 
+#	On these systems (mostly older ones), use the old BSD-style
+#	FIONBIO approach instead.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		HAVE_SYS_IOCTL_H
+#		HAVE_SYS_FILIO_H
+#		USE_FIONBIO
+#		O_NONBLOCK
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([TEA_BLOCKING_STYLE], [
+    AC_CHECK_HEADERS(sys/ioctl.h)
+    AC_CHECK_HEADERS(sys/filio.h)
+    TEA_CONFIG_SYSTEM
+    AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O])
+    case $system in
+	# There used to be code here to use FIONBIO under AIX.  However, it
+	# was reported that FIONBIO doesn't work under AIX 3.2.5.  Since
+	# using O_NONBLOCK seems fine under AIX 4.*, I removed the FIONBIO
+	# code (JO, 5/31/97).
+
+	OSF*)
+	    AC_DEFINE(USE_FIONBIO, 1, [Should we use FIONBIO?])
+	    AC_MSG_RESULT([FIONBIO])
+	    ;;
+	SunOS-4*)
+	    AC_DEFINE(USE_FIONBIO, 1, [Should we use FIONBIO?])
+	    AC_MSG_RESULT([FIONBIO])
+	    ;;
+	*)
+	    AC_MSG_RESULT([O_NONBLOCK])
+	    ;;
+    esac
+])
+
+#--------------------------------------------------------------------
+# TEA_TIME_HANLDER
+#
+#	Checks how the system deals with time.h, what time structures
+#	are used on the system, and what fields the structures have.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Defines some of the following vars:
+#		USE_DELTA_FOR_TZ
+#		HAVE_TM_GMTOFF
+#		HAVE_TM_TZADJ
+#		HAVE_TIMEZONE_VAR
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([TEA_TIME_HANDLER], [
+    AC_CHECK_HEADERS(sys/time.h)
+    AC_HEADER_TIME
+    AC_STRUCT_TIMEZONE
+
+    AC_CHECK_FUNCS(gmtime_r localtime_r)
+
+    AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj,
+	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;],
+	    tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no))
+    if test $tcl_cv_member_tm_tzadj = yes ; then
+	AC_DEFINE(HAVE_TM_TZADJ, 1, [Should we use the tm_tzadj field of struct tm?])
+    fi
+
+    AC_CACHE_CHECK([tm_gmtoff in struct tm], tcl_cv_member_tm_gmtoff,
+	AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_gmtoff;],
+	    tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no))
+    if test $tcl_cv_member_tm_gmtoff = yes ; then
+	AC_DEFINE(HAVE_TM_GMTOFF, 1, [Should we use the tm_gmtoff field of struct tm?])
+    fi
+
+    #
+    # Its important to include time.h in this check, as some systems
+    # (like convex) have timezone functions, etc.
+    #
+    AC_CACHE_CHECK([long timezone variable], tcl_cv_timezone_long,
+	AC_TRY_COMPILE([#include <time.h>],
+	    [extern long timezone;
+	    timezone += 1;
+	    exit (0);],
+	    tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no))
+    if test $tcl_cv_timezone_long = yes ; then
+	AC_DEFINE(HAVE_TIMEZONE_VAR, 1, [Should we use the global timezone variable?])
+    else
+	#
+	# On some systems (eg IRIX 6.2), timezone is a time_t and not a long.
+	#
+	AC_CACHE_CHECK([time_t timezone variable], tcl_cv_timezone_time,
+	    AC_TRY_COMPILE([#include <time.h>],
+		[extern time_t timezone;
+		timezone += 1;
+		exit (0);],
+		tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no))
+	if test $tcl_cv_timezone_time = yes ; then
+	    AC_DEFINE(HAVE_TIMEZONE_VAR, 1, [Should we use the global timezone variable?])
+	fi
+    fi
+])
+
+#--------------------------------------------------------------------
+# TEA_BUGGY_STRTOD
+#
+#	Under Solaris 2.4, strtod returns the wrong value for the
+#	terminating character under some conditions.  Check for this
+#	and if the problem exists use a substitute procedure
+#	"fixstrtod" (provided by Tcl) that corrects the error.
+#	Also, on Compaq's Tru64 Unix 5.0,
+#	strtod(" ") returns 0.0 instead of a failure to convert.
+#
+# Arguments:
+#	none
+#	
+# Results:
+#
+#	Might defines some of the following vars:
+#		strtod (=fixstrtod)
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([TEA_BUGGY_STRTOD], [
+    AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0)
+    if test "$tcl_strtod" = 1; then
+	AC_CACHE_CHECK([for Solaris2.4/Tru64 strtod bugs], tcl_cv_strtod_buggy,[
+	    AC_TRY_RUN([
+		extern double strtod();
+		int main() {
+		    char *infString="Inf", *nanString="NaN", *spaceString=" ";
+		    char *term;
+		    double value;
+		    value = strtod(infString, &term);
+		    if ((term != infString) && (term[-1] == 0)) {
+			exit(1);
+		    }
+		    value = strtod(nanString, &term);
+		    if ((term != nanString) && (term[-1] == 0)) {
+			exit(1);
+		    }
+		    value = strtod(spaceString, &term);
+		    if (term == (spaceString+1)) {
+			exit(1);
+		    }
+		    exit(0);
+		}], tcl_cv_strtod_buggy=ok, tcl_cv_strtod_buggy=buggy,
+		    tcl_cv_strtod_buggy=buggy)])
+	if test "$tcl_cv_strtod_buggy" = buggy; then
+	    AC_LIBOBJ([fixstrtod])
+	    USE_COMPAT=1
+	    AC_DEFINE(strtod, fixstrtod, [Do we want to use the strtod() in compat?])
+	fi
+    fi
+])
+
+#--------------------------------------------------------------------
+# TEA_TCL_LINK_LIBS
+#
+#	Search for the libraries needed to link the Tcl shell.
+#	Things like the math library (-lm) and socket stuff (-lsocket vs.
+#	-lnsl) are dealt with here.
+#
+# Arguments:
+#	Requires the following vars to be set in the Makefile:
+#		DL_LIBS
+#		LIBS
+#		MATH_LIBS
+#	
+# Results:
+#
+#	Subst's the following var:
+#		TCL_LIBS
+#		MATH_LIBS
+#
+#	Might append to the following vars:
+#		LIBS
+#
+#	Might define the following vars:
+#		HAVE_NET_ERRNO_H
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([TEA_TCL_LINK_LIBS], [
+    #--------------------------------------------------------------------
+    # On a few very rare systems, all of the libm.a stuff is
+    # already in libc.a.  Set compiler flags accordingly.
+    # Also, Linux requires the "ieee" library for math to work
+    # right (and it must appear before "-lm").
+    #--------------------------------------------------------------------
+
+    AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm")
+    AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"])
+
+    #--------------------------------------------------------------------
+    # Interactive UNIX requires -linet instead of -lsocket, plus it
+    # needs net/errno.h to define the socket-related error codes.
+    #--------------------------------------------------------------------
+
+    AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"])
+    AC_CHECK_HEADER(net/errno.h, [
+	AC_DEFINE(HAVE_NET_ERRNO_H, 1, [Do we have <net/errno.h>?])])
+
+    #--------------------------------------------------------------------
+    #	Check for the existence of the -lsocket and -lnsl libraries.
+    #	The order here is important, so that they end up in the right
+    #	order in the command line generated by make.  Here are some
+    #	special considerations:
+    #	1. Use "connect" and "accept" to check for -lsocket, and
+    #	   "gethostbyname" to check for -lnsl.
+    #	2. Use each function name only once:  can't redo a check because
+    #	   autoconf caches the results of the last check and won't redo it.
+    #	3. Use -lnsl and -lsocket only if they supply procedures that
+    #	   aren't already present in the normal libraries.  This is because
+    #	   IRIX 5.2 has libraries, but they aren't needed and they're
+    #	   bogus:  they goof up name resolution if used.
+    #	4. On some SVR4 systems, can't use -lsocket without -lnsl too.
+    #	   To get around this problem, check for both libraries together
+    #	   if -lsocket doesn't work by itself.
+    #--------------------------------------------------------------------
+
+    tcl_checkBoth=0
+    AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)
+    if test "$tcl_checkSocket" = 1; then
+	AC_CHECK_FUNC(setsockopt, , [AC_CHECK_LIB(socket, setsockopt,
+	    LIBS="$LIBS -lsocket", tcl_checkBoth=1)])
+    fi
+    if test "$tcl_checkBoth" = 1; then
+	tk_oldLibs=$LIBS
+	LIBS="$LIBS -lsocket -lnsl"
+	AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs])
+    fi
+    AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname,
+	    [LIBS="$LIBS -lnsl"])])
+    
+    # Don't perform the eval of the libraries here because DL_LIBS
+    # won't be set until we call TEA_CONFIG_CFLAGS
+
+    TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
+    AC_SUBST(TCL_LIBS)
+    AC_SUBST(MATH_LIBS)
+])
+
+#--------------------------------------------------------------------
+# TEA_TCL_EARLY_FLAGS
+#
+#	Check for what flags are needed to be passed so the correct OS
+#	features are available.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		_ISOC99_SOURCE
+#		_LARGEFILE64_SOURCE
+#		_LARGEFILE_SOURCE64
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([TEA_TCL_EARLY_FLAG],[
+    AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]),
+	AC_TRY_COMPILE([$2], $3, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no,
+	    AC_TRY_COMPILE([[#define ]$1[ 1
+]$2], $3,
+		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=yes,
+		[tcl_cv_flag_]translit($1,[A-Z],[a-z])=no)))
+    if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then
+	AC_DEFINE($1, 1, [Add the ]$1[ flag when building])
+	tcl_flags="$tcl_flags $1"
+    fi
+])
+
+AC_DEFUN([TEA_TCL_EARLY_FLAGS],[
+    AC_MSG_CHECKING([for required early compiler flags])
+    tcl_flags=""
+    TEA_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include <stdlib.h>],
+	[char *p = (char *)strtoll; char *q = (char *)strtoull;])
+    TEA_TCL_EARLY_FLAG(_LARGEFILE64_SOURCE,[#include <sys/stat.h>],
+	[struct stat64 buf; int i = stat64("/", &buf);])
+    TEA_TCL_EARLY_FLAG(_LARGEFILE_SOURCE64,[#include <sys/stat.h>],
+	[char *p = (char *)open64;])
+    if test "x${tcl_flags}" = "x" ; then
+	AC_MSG_RESULT([none])
+    else
+	AC_MSG_RESULT([${tcl_flags}])
+    fi
+])
+
+#--------------------------------------------------------------------
+# TEA_TCL_64BIT_FLAGS
+#
+#	Check for what is defined in the way of 64-bit features.
+#
+# Arguments:
+#	None
+#	
+# Results:
+#
+#	Might define the following vars:
+#		TCL_WIDE_INT_IS_LONG
+#		TCL_WIDE_INT_TYPE
+#		HAVE_STRUCT_DIRENT64
+#		HAVE_STRUCT_STAT64
+#		HAVE_TYPE_OFF64_T
+#
+#--------------------------------------------------------------------
+
+AC_DEFUN([TEA_TCL_64BIT_FLAGS], [
+    AC_MSG_CHECKING([for 64-bit integer type])
+    AC_CACHE_VAL(tcl_cv_type_64bit,[
+	tcl_cv_type_64bit=none
+	# See if the compiler knows natively about __int64
+	AC_TRY_COMPILE(,[__int64 value = (__int64) 0;],
+	    tcl_type_64bit=__int64, tcl_type_64bit="long long")
+	# See if we should use long anyway  Note that we substitute in the
+	# type that is our current guess for a 64-bit type inside this check
+	# program, so it should be modified only carefully...
+        AC_TRY_COMPILE(,[switch (0) { 
+            case 1: case (sizeof(]${tcl_type_64bit}[)==sizeof(long)): ; 
+        }],tcl_cv_type_64bit=${tcl_type_64bit})])
+    if test "${tcl_cv_type_64bit}" = none ; then
+	AC_DEFINE(TCL_WIDE_INT_IS_LONG, 1, [Are wide integers to be implemented with C 'long's?])
+	AC_MSG_RESULT([using long])
+    elif test "${tcl_cv_type_64bit}" = "__int64" \
+		-a "${TEA_PLATFORM}" = "windows" ; then
+	# We actually want to use the default tcl.h checks in this
+	# case to handle both TCL_WIDE_INT_TYPE and TCL_LL_MODIFIER*
+	AC_MSG_RESULT([using Tcl header defaults])
+    else
+	AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit},
+	    [What type should be used to define wide integers?])
+	AC_MSG_RESULT([${tcl_cv_type_64bit}])
+
+	# Now check for auxiliary declarations
+	AC_CACHE_CHECK([for struct dirent64], tcl_cv_struct_dirent64,[
+	    AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/dirent.h>],[struct dirent64 p;],
+		tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)])
+	if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_STRUCT_DIRENT64, 1, [Is 'struct dirent64' in <sys/types.h>?])
+	fi
+
+	AC_CACHE_CHECK([for struct stat64], tcl_cv_struct_stat64,[
+	    AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat64 p;
+],
+		tcl_cv_struct_stat64=yes,tcl_cv_struct_stat64=no)])
+	if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_STRUCT_STAT64, 1, [Is 'struct stat64' in <sys/stat.h>?])
+	fi
+
+	AC_CHECK_FUNCS(open64 lseek64)
+	AC_MSG_CHECKING([for off64_t])
+	AC_CACHE_VAL(tcl_cv_type_off64_t,[
+	    AC_TRY_COMPILE([#include <sys/types.h>],[off64_t offset;
+],
+		tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)])
+	dnl Define HAVE_TYPE_OFF64_T only when the off64_t type and the
+	dnl functions lseek64 and open64 are defined.
+	if test "x${tcl_cv_type_off64_t}" = "xyes" && \
+	        test "x${ac_cv_func_lseek64}" = "xyes" && \
+	        test "x${ac_cv_func_open64}" = "xyes" ; then
+	    AC_DEFINE(HAVE_TYPE_OFF64_T, 1, [Is off64_t in <sys/types.h>?])
+	    AC_MSG_RESULT([yes])
+	else
+	    AC_MSG_RESULT([no])
+	fi
+    fi
+])
+
+##
+## Here ends the standard Tcl configuration bits and starts the
+## TEA specific functions
+##
+
+#------------------------------------------------------------------------
+# TEA_INIT --
+#
+#	Init various Tcl Extension Architecture (TEA) variables.
+#	This should be the first called TEA_* macro.
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Defines and substs the following vars:
+#		CYGPATH
+#		EXEEXT
+#	Defines only:
+#		TEA_VERSION
+#		TEA_INITED
+#		TEA_PLATFORM (windows or unix)
+#
+# "cygpath" is used on windows to generate native path names for include
+# files. These variables should only be used with the compiler and linker
+# since they generate native path names.
+#
+# EXEEXT
+#	Select the executable extension based on the host type.  This
+#	is a lightweight replacement for AC_EXEEXT that doesn't require
+#	a compiler.
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_INIT], [
+    # TEA extensions pass this us the version of TEA they think they
+    # are compatible with.
+    TEA_VERSION="3.5"
+
+    AC_MSG_CHECKING([for correct TEA configuration])
+    if test x"${PACKAGE_NAME}" = x ; then
+	AC_MSG_ERROR([
+The PACKAGE_NAME variable must be defined by your TEA configure.in])
+    fi
+    if test x"$1" = x ; then
+	AC_MSG_ERROR([
+TEA version not specified.])
+    elif test "$1" != "${TEA_VERSION}" ; then
+	AC_MSG_RESULT([warning: requested TEA version "$1", have "${TEA_VERSION}"])
+    else
+	AC_MSG_RESULT([ok (TEA ${TEA_VERSION})])
+    fi
+    case "`uname -s`" in
+	*win32*|*WIN32*|*CYGWIN_NT*|*CYGWIN_9*|*CYGWIN_ME*|*MINGW32_*|*MSYS_NT*)
+	    AC_CHECK_PROG(CYGPATH, cygpath, cygpath -w, echo)
+	    EXEEXT=".exe"
+	    TEA_PLATFORM="windows"
+	    ;;
+	*)
+	    CYGPATH=echo
+	    EXEEXT=""
+	    TEA_PLATFORM="unix"
+	    ;;
+    esac
+
+    # Check if exec_prefix is set. If not use fall back to prefix.
+    # Note when adjusted, so that TEA_PREFIX can correct for this.
+    # This is needed for recursive configures, since autoconf propagates
+    # $prefix, but not $exec_prefix (doh!).
+    if test x$exec_prefix = xNONE ; then
+	exec_prefix_default=yes
+	exec_prefix=$prefix
+    fi
+
+    AC_SUBST(EXEEXT)
+    AC_SUBST(CYGPATH)
+
+    # This package name must be replaced statically for AC_SUBST to work
+    AC_SUBST(PKG_LIB_FILE)
+    # Substitute STUB_LIB_FILE in case package creates a stub library too.
+    AC_SUBST(PKG_STUB_LIB_FILE)
+
+    # We AC_SUBST these here to ensure they are subst'ed,
+    # in case the user doesn't call TEA_ADD_...
+    AC_SUBST(PKG_STUB_SOURCES)
+    AC_SUBST(PKG_STUB_OBJECTS)
+    AC_SUBST(PKG_TCL_SOURCES)
+    AC_SUBST(PKG_HEADERS)
+    AC_SUBST(PKG_INCLUDES)
+    AC_SUBST(PKG_LIBS)
+    AC_SUBST(PKG_CFLAGS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_SOURCES --
+#
+#	Specify one or more source files.  Users should check for
+#	the right platform before adding to their list.
+#	It is not important to specify the directory, as long as it is
+#	in the generic, win or unix subdirectory of $(srcdir).
+#
+# Arguments:
+#	one or more file names
+#
+# Results:
+#
+#	Defines and substs the following vars:
+#		PKG_SOURCES
+#		PKG_OBJECTS
+#------------------------------------------------------------------------
+AC_DEFUN([TEA_ADD_SOURCES], [
+    vars="$@"
+    for i in $vars; do
+	case $i in
+	    [\$]*)
+		# allow $-var names
+		PKG_SOURCES="$PKG_SOURCES $i"
+		PKG_OBJECTS="$PKG_OBJECTS $i"
+		;;
+	    *)
+		# check for existence - allows for generic/win/unix VPATH
+		if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/src/$i" \
+		    -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
+		    ; then
+		    AC_MSG_ERROR([could not find source file '$i'])
+		fi
+		PKG_SOURCES="$PKG_SOURCES $i"
+		# this assumes it is in a VPATH dir
+		i=`basename $i`
+		# handle user calling this before or after TEA_SETUP_COMPILER
+		if test x"${OBJEXT}" != x ; then
+		    j="`echo $i | sed -e 's/\.[[^.]]*$//'`.${OBJEXT}"
+		else
+		    j="`echo $i | sed -e 's/\.[[^.]]*$//'`.\${OBJEXT}"
+		fi
+		PKG_OBJECTS="$PKG_OBJECTS $j"
+		;;
+	esac
+    done
+    AC_SUBST(PKG_SOURCES)
+    AC_SUBST(PKG_OBJECTS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_STUB_SOURCES --
+#
+#	Specify one or more source files.  Users should check for
+#	the right platform before adding to their list.
+#	It is not important to specify the directory, as long as it is
+#	in the generic, win or unix subdirectory of $(srcdir).
+#
+# Arguments:
+#	one or more file names
+#
+# Results:
+#
+#	Defines and substs the following vars:
+#		PKG_STUB_SOURCES
+#		PKG_STUB_OBJECTS
+#------------------------------------------------------------------------
+AC_DEFUN([TEA_ADD_STUB_SOURCES], [
+    vars="$@"
+    for i in $vars; do
+	# check for existence - allows for generic/win/unix VPATH
+	if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
+	    -a ! -f "${srcdir}/win/$i" -a ! -f "${srcdir}/unix/$i" \
+	    ; then
+	    AC_MSG_ERROR([could not find stub source file '$i'])
+	fi
+	PKG_STUB_SOURCES="$PKG_STUB_SOURCES $i"
+	# this assumes it is in a VPATH dir
+	i=`basename $i`
+	# handle user calling this before or after TEA_SETUP_COMPILER
+	if test x"${OBJEXT}" != x ; then
+	    j="`echo $i | sed -e 's/\.[[^.]]*$//'`.${OBJEXT}"
+	else
+	    j="`echo $i | sed -e 's/\.[[^.]]*$//'`.\${OBJEXT}"
+	fi
+	PKG_STUB_OBJECTS="$PKG_STUB_OBJECTS $j"
+    done
+    AC_SUBST(PKG_STUB_SOURCES)
+    AC_SUBST(PKG_STUB_OBJECTS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_TCL_SOURCES --
+#
+#	Specify one or more Tcl source files.  These should be platform
+#	independent runtime files.
+#
+# Arguments:
+#	one or more file names
+#
+# Results:
+#
+#	Defines and substs the following vars:
+#		PKG_TCL_SOURCES
+#------------------------------------------------------------------------
+AC_DEFUN([TEA_ADD_TCL_SOURCES], [
+    vars="$@"
+    for i in $vars; do
+	# check for existence, be strict because it is installed
+	if test ! -f "${srcdir}/$i" ; then
+	    AC_MSG_ERROR([could not find tcl source file '${srcdir}/$i'])
+	fi
+	PKG_TCL_SOURCES="$PKG_TCL_SOURCES $i"
+    done
+    AC_SUBST(PKG_TCL_SOURCES)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_HEADERS --
+#
+#	Specify one or more source headers.  Users should check for
+#	the right platform before adding to their list.
+#
+# Arguments:
+#	one or more file names
+#
+# Results:
+#
+#	Defines and substs the following vars:
+#		PKG_HEADERS
+#------------------------------------------------------------------------
+AC_DEFUN([TEA_ADD_HEADERS], [
+    vars="$@"
+    for i in $vars; do
+	# check for existence, be strict because it is installed
+	if test ! -f "${srcdir}/$i" ; then
+	    AC_MSG_ERROR([could not find header file '${srcdir}/$i'])
+	fi
+	PKG_HEADERS="$PKG_HEADERS $i"
+    done
+    AC_SUBST(PKG_HEADERS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_INCLUDES --
+#
+#	Specify one or more include dirs.  Users should check for
+#	the right platform before adding to their list.
+#
+# Arguments:
+#	one or more file names
+#
+# Results:
+#
+#	Defines and substs the following vars:
+#		PKG_INCLUDES
+#------------------------------------------------------------------------
+AC_DEFUN([TEA_ADD_INCLUDES], [
+    vars="$@"
+    for i in $vars; do
+	PKG_INCLUDES="$PKG_INCLUDES $i"
+    done
+    AC_SUBST(PKG_INCLUDES)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_LIBS --
+#
+#	Specify one or more libraries.  Users should check for
+#	the right platform before adding to their list.  For Windows,
+#	libraries provided in "foo.lib" format will be converted to
+#	"-lfoo" when using GCC (mingw).
+#
+# Arguments:
+#	one or more file names
+#
+# Results:
+#
+#	Defines and substs the following vars:
+#		PKG_LIBS
+#------------------------------------------------------------------------
+AC_DEFUN([TEA_ADD_LIBS], [
+    vars="$@"
+    for i in $vars; do
+	if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
+	    # Convert foo.lib to -lfoo for GCC.  No-op if not *.lib
+	    i=`echo "$i" | sed -e 's/^\([[^-]].*\)\.lib[$]/-l\1/i'`
+	fi
+	PKG_LIBS="$PKG_LIBS $i"
+    done
+    AC_SUBST(PKG_LIBS)
+])
+
+#------------------------------------------------------------------------
+# TEA_ADD_CFLAGS --
+#
+#	Specify one or more CFLAGS.  Users should check for
+#	the right platform before adding to their list.
+#
+# Arguments:
+#	one or more file names
+#
+# Results:
+#
+#	Defines and substs the following vars:
+#		PKG_CFLAGS
+#------------------------------------------------------------------------
+AC_DEFUN([TEA_ADD_CFLAGS], [
+    PKG_CFLAGS="$PKG_CFLAGS $@"
+    AC_SUBST(PKG_CFLAGS)
+])
+
+#------------------------------------------------------------------------
+# TEA_PREFIX --
+#
+#	Handle the --prefix=... option by defaulting to what Tcl gave
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	If --prefix or --exec-prefix was not specified, $prefix and
+#	$exec_prefix will be set to the values given to Tcl when it was
+#	configured.
+#------------------------------------------------------------------------
+AC_DEFUN([TEA_PREFIX], [
+    if test "${prefix}" = "NONE"; then
+	prefix_default=yes
+	if test x"${TCL_PREFIX}" != x; then
+	    AC_MSG_NOTICE([--prefix defaulting to TCL_PREFIX ${TCL_PREFIX}])
+	    prefix=${TCL_PREFIX}
+	else
+	    AC_MSG_NOTICE([--prefix defaulting to /usr/local])
+	    prefix=/usr/local
+	fi
+    fi
+    if test "${exec_prefix}" = "NONE" -a x"${prefix_default}" = x"yes" \
+	-o x"${exec_prefix_default}" = x"yes" ; then
+	if test x"${TCL_EXEC_PREFIX}" != x; then
+	    AC_MSG_NOTICE([--exec-prefix defaulting to TCL_EXEC_PREFIX ${TCL_EXEC_PREFIX}])
+	    exec_prefix=${TCL_EXEC_PREFIX}
+	else
+	    AC_MSG_NOTICE([--exec-prefix defaulting to ${prefix}])
+	    exec_prefix=$prefix
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# TEA_SETUP_COMPILER_CC --
+#
+#	Do compiler checks the way we want.  This is just a replacement
+#	for AC_PROG_CC in TEA configure.in files to make them cleaner.
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Sets up CC var and other standard bits we need to make executables.
+#------------------------------------------------------------------------
+AC_DEFUN([TEA_SETUP_COMPILER_CC], [
+    # Don't put any macros that use the compiler (e.g. AC_TRY_COMPILE)
+    # in this macro, they need to go into TEA_SETUP_COMPILER instead.
+
+    # If the user did not set CFLAGS, set it now to keep
+    # the AC_PROG_CC macro from adding "-g -O2".
+    if test "${CFLAGS+set}" != "set" ; then
+	CFLAGS=""
+    fi
+
+    AC_PROG_CC
+    AC_PROG_CXX
+    AC_PROG_CPP
+
+    AC_PROG_INSTALL
+
+    #--------------------------------------------------------------------
+    # Checks to see if the make program sets the $MAKE variable.
+    #--------------------------------------------------------------------
+
+    AC_PROG_MAKE_SET
+
+    #--------------------------------------------------------------------
+    # Find ranlib
+    #--------------------------------------------------------------------
+
+    AC_PROG_RANLIB
+
+    #--------------------------------------------------------------------
+    # Determines the correct binary file extension (.o, .obj, .exe etc.)
+    #--------------------------------------------------------------------
+
+    AC_OBJEXT
+    AC_EXEEXT
+])
+
+#------------------------------------------------------------------------
+# TEA_SETUP_COMPILER --
+#
+#	Do compiler checks that use the compiler.  This must go after
+#	TEA_SETUP_COMPILER_CC, which does the actual compiler check.
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Sets up CC var and other standard bits we need to make executables.
+#------------------------------------------------------------------------
+AC_DEFUN([TEA_SETUP_COMPILER], [
+    # Any macros that use the compiler (e.g. AC_TRY_COMPILE) have to go here.
+    AC_REQUIRE([TEA_SETUP_COMPILER_CC])
+
+    #------------------------------------------------------------------------
+    # If we're using GCC, see if the compiler understands -pipe. If so, use it.
+    # It makes compiling go faster.  (This is only a performance feature.)
+    #------------------------------------------------------------------------
+
+    if test -z "$no_pipe" -a -n "$GCC"; then
+	AC_MSG_CHECKING([if the compiler understands -pipe])
+	OLDCC="$CC"
+	CC="$CC -pipe"
+	AC_TRY_COMPILE(,, AC_MSG_RESULT([yes]), CC="$OLDCC"
+	    AC_MSG_RESULT([no]))
+    fi
+
+    #--------------------------------------------------------------------
+    # Common compiler flag setup
+    #--------------------------------------------------------------------
+
+    AC_C_BIGENDIAN
+    if test "${TEA_PLATFORM}" = "unix" ; then
+	TEA_TCL_LINK_LIBS
+	TEA_MISSING_POSIX_HEADERS
+	# Let the user call this, because if it triggers, they will
+	# need a compat/strtod.c that is correct.  Users can also
+	# use Tcl_GetDouble(FromObj) instead.
+	#TEA_BUGGY_STRTOD
+    fi
+])
+
+#------------------------------------------------------------------------
+# TEA_MAKE_LIB --
+#
+#	Generate a line that can be used to build a shared/unshared library
+#	in a platform independent manner.
+#
+# Arguments:
+#	none
+#
+#	Requires:
+#
+# Results:
+#
+#	Defines the following vars:
+#	CFLAGS -	Done late here to note disturb other AC macros
+#       MAKE_LIB -      Command to execute to build the Tcl library;
+#                       differs depending on whether or not Tcl is being
+#                       compiled as a shared library.
+#	MAKE_SHARED_LIB	Makefile rule for building a shared library
+#	MAKE_STATIC_LIB	Makefile rule for building a static library
+#	MAKE_STUB_LIB	Makefile rule for building a stub library
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_MAKE_LIB], [
+    if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes"; then
+	MAKE_STATIC_LIB="\${STLIB_LD} -out:\[$]@ \$(PKG_OBJECTS)"
+	MAKE_SHARED_LIB="\${SHLIB_LD} \${SHLIB_LD_LIBS} \${LDFLAGS_DEFAULT} -out:\[$]@ \$(PKG_OBJECTS)"
+	MAKE_STUB_LIB="\${STLIB_LD} -out:\[$]@ \$(PKG_STUB_OBJECTS)"
+    else
+	MAKE_STATIC_LIB="\${STLIB_LD} \[$]@ \$(PKG_OBJECTS)"
+	MAKE_SHARED_LIB="\${SHLIB_LD} -o \[$]@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}"
+	MAKE_STUB_LIB="\${STLIB_LD} \[$]@ \$(PKG_STUB_OBJECTS)"
+    fi
+
+    if test "${SHARED_BUILD}" = "1" ; then
+	MAKE_LIB="${MAKE_SHARED_LIB} "
+    else
+	MAKE_LIB="${MAKE_STATIC_LIB} "
+    fi
+
+    #--------------------------------------------------------------------
+    # Shared libraries and static libraries have different names.
+    # Use the double eval to make sure any variables in the suffix is
+    # substituted. (@@@ Might not be necessary anymore)
+    #--------------------------------------------------------------------
+
+    if test "${TEA_PLATFORM}" = "windows" ; then
+	if test "${SHARED_BUILD}" = "1" ; then
+	    # We force the unresolved linking of symbols that are really in
+	    # the private libraries of Tcl and Tk.
+	    SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}`\""
+	    if test x"${TK_BIN_DIR}" != x ; then
+		SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}`\""
+	    fi
+	    eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
+	else
+	    eval eval "PKG_LIB_FILE=${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
+	fi
+	# Some packages build their own stubs libraries
+	eval eval "PKG_STUB_LIB_FILE=${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+	if test "$GCC" = "yes"; then
+	    PKG_STUB_LIB_FILE=lib${PKG_STUB_LIB_FILE}
+	fi
+	# These aren't needed on Windows (either MSVC or gcc)
+	RANLIB="mt -manifest ${PKG_LIB_FILE}.manifest -outputresource:${PKG_LIB_FILE}\;2 ; test -f"
+	RANLIB_STUB=:
+    else
+	RANLIB_STUB="${RANLIB}"
+	if test "${SHARED_BUILD}" = "1" ; then
+	    SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TCL_STUB_LIB_SPEC}"
+	    if test x"${TK_BIN_DIR}" != x ; then
+		SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TK_STUB_LIB_SPEC}"
+	    fi
+	    eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${SHARED_LIB_SUFFIX}"
+	    RANLIB=:
+	else
+	    eval eval "PKG_LIB_FILE=lib${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}"
+	fi
+	# Some packages build their own stubs libraries
+	eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}"
+    fi
+
+    # These are escaped so that only CFLAGS is picked up at configure time.
+    # The other values will be substituted at make time.
+    CFLAGS="${CFLAGS} \${CFLAGS_DEFAULT} \${CFLAGS_WARNING}"
+    if test "${SHARED_BUILD}" = "1" ; then
+	CFLAGS="${CFLAGS} \${SHLIB_CFLAGS}"
+    fi
+
+    AC_SUBST(MAKE_LIB)
+    AC_SUBST(MAKE_SHARED_LIB)
+    AC_SUBST(MAKE_STATIC_LIB)
+    AC_SUBST(MAKE_STUB_LIB)
+    AC_SUBST(RANLIB_STUB)
+    AC_SUBST(RANLIB)
+])
+
+#------------------------------------------------------------------------
+# TEA_LIB_SPEC --
+#
+#	Compute the name of an existing object library located in libdir
+#	from the given base name and produce the appropriate linker flags.
+#
+# Arguments:
+#	basename	The base name of the library without version
+#			numbers, extensions, or "lib" prefixes.
+#	extra_dir	Extra directory in which to search for the
+#			library.  This location is used first, then
+#			$prefix/$exec-prefix, then some defaults.
+#
+# Requires:
+#	TEA_INIT and TEA_PREFIX must be called first.
+#
+# Results:
+#
+#	Defines the following vars:
+#		${basename}_LIB_NAME	The computed library name.
+#		${basename}_LIB_SPEC	The computed linker flags.
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_LIB_SPEC], [
+    AC_MSG_CHECKING([for $1 library])
+
+    # Look in exec-prefix for the library (defined by TEA_PREFIX).
+
+    tea_lib_name_dir="${exec_prefix}/lib"
+
+    # Or in a user-specified location.
+
+    if test x"$2" != x ; then
+	tea_extra_lib_dir=$2
+    else
+	tea_extra_lib_dir=NONE
+    fi
+
+    for i in \
+	    `ls -dr ${tea_extra_lib_dir}/$1[[0-9]]*.lib 2>/dev/null ` \
+	    `ls -dr ${tea_extra_lib_dir}/lib$1[[0-9]]* 2>/dev/null ` \
+	    `ls -dr ${tea_lib_name_dir}/$1[[0-9]]*.lib 2>/dev/null ` \
+	    `ls -dr ${tea_lib_name_dir}/lib$1[[0-9]]* 2>/dev/null ` \
+	    `ls -dr /usr/lib/$1[[0-9]]*.lib 2>/dev/null ` \
+	    `ls -dr /usr/lib/lib$1[[0-9]]* 2>/dev/null ` \
+	    `ls -dr /usr/local/lib/$1[[0-9]]*.lib 2>/dev/null ` \
+	    `ls -dr /usr/local/lib/lib$1[[0-9]]* 2>/dev/null ` ; do
+	if test -f "$i" ; then
+	    tea_lib_name_dir=`dirname $i`
+	    $1_LIB_NAME=`basename $i`
+	    $1_LIB_PATH_NAME=$i
+	    break
+	fi
+    done
+
+    if test "${TEA_PLATFORM}" = "windows"; then
+	$1_LIB_SPEC=\"`${CYGPATH} ${$1_LIB_PATH_NAME} 2>/dev/null`\"
+    else
+	# Strip off the leading "lib" and trailing ".a" or ".so"
+
+	tea_lib_name_lib=`echo ${$1_LIB_NAME}|sed -e 's/^lib//' -e 's/\.[[^.]]*$//' -e 's/\.so.*//'`
+	$1_LIB_SPEC="-L${tea_lib_name_dir} -l${tea_lib_name_lib}"
+    fi
+
+    if test "x${$1_LIB_NAME}" = x ; then
+	AC_MSG_ERROR([not found])
+    else
+	AC_MSG_RESULT([${$1_LIB_SPEC}])
+    fi
+])
+
+#------------------------------------------------------------------------
+# TEA_PRIVATE_TCL_HEADERS --
+#
+#	Locate the private Tcl include files
+#
+# Arguments:
+#
+#	Requires:
+#		TCL_SRC_DIR	Assumes that TEA_LOAD_TCLCONFIG has
+#				 already been called.
+#
+# Results:
+#
+#	Substs the following vars:
+#		TCL_TOP_DIR_NATIVE
+#		TCL_GENERIC_DIR_NATIVE
+#		TCL_UNIX_DIR_NATIVE
+#		TCL_WIN_DIR_NATIVE
+#		TCL_BMAP_DIR_NATIVE
+#		TCL_TOOL_DIR_NATIVE
+#		TCL_PLATFORM_DIR_NATIVE
+#		TCL_BIN_DIR_NATIVE
+#		TCL_INCLUDES
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_PRIVATE_TCL_HEADERS], [
+    AC_MSG_CHECKING([for Tcl private include files])
+
+    TCL_SRC_DIR_NATIVE=`${CYGPATH} ${TCL_SRC_DIR}`
+    TCL_TOP_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}\"
+    TCL_GENERIC_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/generic\"
+    TCL_UNIX_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/unix\"
+    TCL_WIN_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/win\"
+    TCL_BMAP_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/bitmaps\"
+    TCL_TOOL_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/tools\"
+    TCL_COMPAT_DIR_NATIVE=\"${TCL_SRC_DIR_NATIVE}/compat\"
+
+    if test "${TEA_PLATFORM}" = "windows"; then
+	TCL_PLATFORM_DIR_NATIVE=${TCL_WIN_DIR_NATIVE}
+    else
+	TCL_PLATFORM_DIR_NATIVE=${TCL_UNIX_DIR_NATIVE}
+    fi
+    # We want to ensure these are substituted so as not to require
+    # any *_NATIVE vars be defined in the Makefile
+    TCL_INCLUDES="-I${TCL_GENERIC_DIR_NATIVE} -I${TCL_PLATFORM_DIR_NATIVE}"
+    if test "`uname -s`" = "Darwin"; then
+        # If Tcl was built as a framework, attempt to use
+        # the framework's Headers and PrivateHeaders directories
+        case ${TCL_DEFS} in
+	    *TCL_FRAMEWORK*)
+	        if test -d "${TCL_BIN_DIR}/Headers" -a -d "${TCL_BIN_DIR}/PrivateHeaders"; then
+	        TCL_INCLUDES="-I\"${TCL_BIN_DIR}/Headers\" -I\"${TCL_BIN_DIR}/PrivateHeaders\" ${TCL_INCLUDES}"; else
+	        TCL_INCLUDES="${TCL_INCLUDES} ${TCL_INCLUDE_SPEC} `echo "${TCL_INCLUDE_SPEC}" | sed -e 's/Headers/PrivateHeaders/'`"; fi
+	        ;;
+	esac
+    fi
+
+    AC_SUBST(TCL_TOP_DIR_NATIVE)
+    AC_SUBST(TCL_GENERIC_DIR_NATIVE)
+    AC_SUBST(TCL_UNIX_DIR_NATIVE)
+    AC_SUBST(TCL_WIN_DIR_NATIVE)
+    AC_SUBST(TCL_BMAP_DIR_NATIVE)
+    AC_SUBST(TCL_TOOL_DIR_NATIVE)
+    AC_SUBST(TCL_PLATFORM_DIR_NATIVE)
+
+    AC_SUBST(TCL_INCLUDES)
+    AC_MSG_RESULT([Using srcdir found in tclConfig.sh: ${TCL_SRC_DIR}])
+])
+
+#------------------------------------------------------------------------
+# TEA_PUBLIC_TCL_HEADERS --
+#
+#	Locate the installed public Tcl header files
+#
+# Arguments:
+#	None.
+#
+# Requires:
+#	CYGPATH must be set
+#
+# Results:
+#
+#	Adds a --with-tclinclude switch to configure.
+#	Result is cached.
+#
+#	Substs the following vars:
+#		TCL_INCLUDES
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_PUBLIC_TCL_HEADERS], [
+    AC_MSG_CHECKING([for Tcl public headers])
+
+    AC_ARG_WITH(tclinclude, [  --with-tclinclude       directory containing the public Tcl header files], with_tclinclude=${withval})
+
+    AC_CACHE_VAL(ac_cv_c_tclh, [
+	# Use the value from --with-tclinclude, if it was given
+
+	if test x"${with_tclinclude}" != x ; then
+	    if test -f "${with_tclinclude}/tcl.h" ; then
+		ac_cv_c_tclh=${with_tclinclude}
+	    else
+		AC_MSG_ERROR([${with_tclinclude} directory does not contain tcl.h])
+	    fi
+	else
+	    if test "`uname -s`" = "Darwin"; then
+		# If Tcl was built as a framework, attempt to use
+		# the framework's Headers directory
+		case ${TCL_DEFS} in
+		    *TCL_FRAMEWORK*)
+			list="`ls -d ${TCL_BIN_DIR}/Headers 2>/dev/null`"
+			;;
+		esac
+	    fi
+
+	    # Look in the source dir only if Tcl is not installed,
+	    # and in that situation, look there before installed locations.
+	    if test -f "${TCL_BIN_DIR}/Makefile" ; then
+		list="$list `ls -d ${TCL_SRC_DIR}/generic 2>/dev/null`"
+	    fi
+
+	    # Check order: pkg --prefix location, Tcl's --prefix location,
+	    # relative to directory of tclConfig.sh.
+
+	    eval "temp_includedir=${includedir}"
+	    list="$list \
+		`ls -d ${temp_includedir}        2>/dev/null` \
+		`ls -d ${TCL_PREFIX}/include     2>/dev/null` \
+		`ls -d ${TCL_BIN_DIR}/../include 2>/dev/null`"
+	    if test "${TEA_PLATFORM}" != "windows" -o "$GCC" = "yes"; then
+		list="$list /usr/local/include /usr/include"
+		if test x"${TCL_INCLUDE_SPEC}" != x ; then
+		    d=`echo "${TCL_INCLUDE_SPEC}" | sed -e 's/^-I//'`
+		    list="$list `ls -d ${d} 2>/dev/null`"
+		fi
+	    fi
+	    for i in $list ; do
+		if test -f "$i/tcl.h" ; then
+		    ac_cv_c_tclh=$i
+		    break
+		fi
+	    done
+	fi
+    ])
+
+    # Print a message based on how we determined the include path
+
+    if test x"${ac_cv_c_tclh}" = x ; then
+	AC_MSG_ERROR([tcl.h not found.  Please specify its location with --with-tclinclude])
+    else
+	AC_MSG_RESULT([${ac_cv_c_tclh}])
+    fi
+
+    # Convert to a native path and substitute into the output files.
+
+    INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tclh}`
+
+    TCL_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\"
+
+    AC_SUBST(TCL_INCLUDES)
+])
+
+#------------------------------------------------------------------------
+# TEA_PRIVATE_TK_HEADERS --
+#
+#	Locate the private Tk include files
+#
+# Arguments:
+#
+#	Requires:
+#		TK_SRC_DIR	Assumes that TEA_LOAD_TKCONFIG has
+#				 already been called.
+#
+# Results:
+#
+#	Substs the following vars:
+#		TK_INCLUDES
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_PRIVATE_TK_HEADERS], [
+    AC_MSG_CHECKING([for Tk private include files])
+
+    TK_SRC_DIR_NATIVE=`${CYGPATH} ${TK_SRC_DIR}`
+    TK_TOP_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}\"
+    TK_UNIX_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/unix\"
+    TK_WIN_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/win\"
+    TK_GENERIC_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/generic\"
+    TK_XLIB_DIR_NATIVE=\"${TK_SRC_DIR_NATIVE}/xlib\"
+    if test "${TEA_PLATFORM}" = "windows"; then
+	TK_PLATFORM_DIR_NATIVE=${TK_WIN_DIR_NATIVE}
+    else
+	TK_PLATFORM_DIR_NATIVE=${TK_UNIX_DIR_NATIVE}
+    fi
+    # We want to ensure these are substituted so as not to require
+    # any *_NATIVE vars be defined in the Makefile
+    TK_INCLUDES="-I${TK_GENERIC_DIR_NATIVE} -I${TK_PLATFORM_DIR_NATIVE}"
+    if test "${TEA_WINDOWINGSYSTEM}" = "win32" \
+	-o "${TEA_WINDOWINGSYSTEM}" = "aqua"; then
+	TK_INCLUDES="${TK_INCLUDES} -I${TK_XLIB_DIR_NATIVE}"
+    fi
+    if test "${TEA_WINDOWINGSYSTEM}" = "aqua"; then
+	TK_INCLUDES="${TK_INCLUDES} -I${TK_SRC_DIR_NATIVE}/macosx"
+    fi
+    if test "`uname -s`" = "Darwin"; then
+        # If Tk was built as a framework, attempt to use
+        # the framework's Headers and PrivateHeaders directories
+        case ${TK_DEFS} in
+	    *TK_FRAMEWORK*)
+	        if test -d "${TK_BIN_DIR}/Headers" -a -d "${TK_BIN_DIR}/PrivateHeaders"; then
+	        TK_INCLUDES="-I\"${TK_BIN_DIR}/Headers\" -I\"${TK_BIN_DIR}/PrivateHeaders\" ${TK_INCLUDES}"; fi
+	        ;;
+	esac
+    fi
+
+    AC_SUBST(TK_TOP_DIR_NATIVE)
+    AC_SUBST(TK_UNIX_DIR_NATIVE)
+    AC_SUBST(TK_WIN_DIR_NATIVE)
+    AC_SUBST(TK_GENERIC_DIR_NATIVE)
+    AC_SUBST(TK_XLIB_DIR_NATIVE)
+    AC_SUBST(TK_PLATFORM_DIR_NATIVE)
+
+    AC_SUBST(TK_INCLUDES)
+    AC_MSG_RESULT([Using srcdir found in tkConfig.sh: ${TK_SRC_DIR}])
+])
+
+#------------------------------------------------------------------------
+# TEA_PUBLIC_TK_HEADERS --
+#
+#	Locate the installed public Tk header files
+#
+# Arguments:
+#	None.
+#
+# Requires:
+#	CYGPATH must be set
+#
+# Results:
+#
+#	Adds a --with-tkinclude switch to configure.
+#	Result is cached.
+#
+#	Substs the following vars:
+#		TK_INCLUDES
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_PUBLIC_TK_HEADERS], [
+    AC_MSG_CHECKING([for Tk public headers])
+
+    AC_ARG_WITH(tkinclude, [  --with-tkinclude      directory containing the public Tk header files.], with_tkinclude=${withval})
+
+    AC_CACHE_VAL(ac_cv_c_tkh, [
+	# Use the value from --with-tkinclude, if it was given
+
+	if test x"${with_tkinclude}" != x ; then
+	    if test -f "${with_tkinclude}/tk.h" ; then
+		ac_cv_c_tkh=${with_tkinclude}
+	    else
+		AC_MSG_ERROR([${with_tkinclude} directory does not contain tk.h])
+	    fi
+	else
+	    if test "`uname -s`" = "Darwin"; then
+		# If Tk was built as a framework, attempt to use
+		# the framework's Headers directory.
+		case ${TK_DEFS} in
+		    *TK_FRAMEWORK*)
+			list="`ls -d ${TK_BIN_DIR}/Headers 2>/dev/null`"
+			;;
+		esac
+	    fi
+
+	    # Look in the source dir only if Tk is not installed,
+	    # and in that situation, look there before installed locations.
+	    if test -f "${TK_BIN_DIR}/Makefile" ; then
+		list="$list `ls -d ${TK_SRC_DIR}/generic 2>/dev/null`"
+	    fi
+
+	    # Check order: pkg --prefix location, Tk's --prefix location,
+	    # relative to directory of tkConfig.sh, Tcl's --prefix location, 
+	    # relative to directory of tclConfig.sh.
+
+	    eval "temp_includedir=${includedir}"
+	    list="$list \
+		`ls -d ${temp_includedir}        2>/dev/null` \
+		`ls -d ${TK_PREFIX}/include      2>/dev/null` \
+		`ls -d ${TK_BIN_DIR}/../include  2>/dev/null` \
+		`ls -d ${TCL_PREFIX}/include     2>/dev/null` \
+		`ls -d ${TCL_BIN_DIR}/../include 2>/dev/null`"
+	    if test "${TEA_PLATFORM}" != "windows" -o "$GCC" = "yes"; then
+		list="$list /usr/local/include /usr/include"
+	    fi
+	    for i in $list ; do
+		if test -f "$i/tk.h" ; then
+		    ac_cv_c_tkh=$i
+		    break
+		fi
+	    done
+	fi
+    ])
+
+    # Print a message based on how we determined the include path
+
+    if test x"${ac_cv_c_tkh}" = x ; then
+	AC_MSG_ERROR([tk.h not found.  Please specify its location with --with-tkinclude])
+    else
+	AC_MSG_RESULT([${ac_cv_c_tkh}])
+    fi
+
+    # Convert to a native path and substitute into the output files.
+
+    INCLUDE_DIR_NATIVE=`${CYGPATH} ${ac_cv_c_tkh}`
+
+    TK_INCLUDES=-I\"${INCLUDE_DIR_NATIVE}\"
+
+    AC_SUBST(TK_INCLUDES)
+
+    if test "${TEA_WINDOWINGSYSTEM}" = "win32" \
+	-o "${TEA_WINDOWINGSYSTEM}" = "aqua"; then
+	# On Windows and Aqua, we need the X compat headers
+	AC_MSG_CHECKING([for X11 header files])
+	if test ! -r "${INCLUDE_DIR_NATIVE}/X11/Xlib.h"; then
+	    INCLUDE_DIR_NATIVE="`${CYGPATH} ${TK_SRC_DIR}/xlib`"
+	    TK_XINCLUDES=-I\"${INCLUDE_DIR_NATIVE}\"
+	    AC_SUBST(TK_XINCLUDES)
+	fi
+	AC_MSG_RESULT([${INCLUDE_DIR_NATIVE}])
+    fi
+])
+
+#------------------------------------------------------------------------
+# TEA_PROG_TCLSH
+#	Determine the fully qualified path name of the tclsh executable
+#	in the Tcl build directory or the tclsh installed in a bin
+#	directory. This macro will correctly determine the name
+#	of the tclsh executable even if tclsh has not yet been
+#	built in the build directory. The tclsh found is always
+#	associated with a tclConfig.sh file. This tclsh should be used
+#	only for running extension test cases. It should never be
+#	or generation of files (like pkgIndex.tcl) at build time.
+#
+# Arguments
+#	none
+#
+# Results
+#	Subst's the following values:
+#		TCLSH_PROG
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_PROG_TCLSH], [
+    AC_MSG_CHECKING([for tclsh])
+    if test -f "${TCL_BIN_DIR}/Makefile" ; then
+        # tclConfig.sh is in Tcl build directory
+        if test "${TEA_PLATFORM}" = "windows"; then
+            TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
+        else
+            TCLSH_PROG="${TCL_BIN_DIR}/tclsh"
+        fi
+    else
+        # tclConfig.sh is in install location
+        if test "${TEA_PLATFORM}" = "windows"; then
+            TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
+        else
+            TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}${TCL_DBGX}"
+        fi
+        list="`ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null` \
+              `ls -d ${TCL_BIN_DIR}/..     2>/dev/null` \
+              `ls -d ${TCL_PREFIX}/bin     2>/dev/null`"
+        for i in $list ; do
+            if test -f "$i/${TCLSH_PROG}" ; then
+                REAL_TCL_BIN_DIR="`cd "$i"; pwd`"
+                break
+            fi
+        done
+        TCLSH_PROG="${REAL_TCL_BIN_DIR}/${TCLSH_PROG}"
+    fi
+    AC_MSG_RESULT([${TCLSH_PROG}])
+    AC_SUBST(TCLSH_PROG)
+])
+
+#------------------------------------------------------------------------
+# TEA_PROG_WISH
+#	Determine the fully qualified path name of the wish executable
+#	in the Tk build directory or the wish installed in a bin
+#	directory. This macro will correctly determine the name
+#	of the wish executable even if wish has not yet been
+#	built in the build directory. The wish found is always
+#	associated with a tkConfig.sh file. This wish should be used
+#	only for running extension test cases. It should never be
+#	or generation of files (like pkgIndex.tcl) at build time.
+#
+# Arguments
+#	none
+#
+# Results
+#	Subst's the following values:
+#		WISH_PROG
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_PROG_WISH], [
+    AC_MSG_CHECKING([for wish])
+    if test -f "${TK_BIN_DIR}/Makefile" ; then
+        # tkConfig.sh is in Tk build directory
+        if test "${TEA_PLATFORM}" = "windows"; then
+            WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}"
+        else
+            WISH_PROG="${TK_BIN_DIR}/wish"
+        fi
+    else
+        # tkConfig.sh is in install location
+        if test "${TEA_PLATFORM}" = "windows"; then
+            WISH_PROG="wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}"
+        else
+            WISH_PROG="wish${TK_MAJOR_VERSION}.${TK_MINOR_VERSION}${TK_DBGX}"
+        fi
+        list="`ls -d ${TK_BIN_DIR}/../bin 2>/dev/null` \
+              `ls -d ${TK_BIN_DIR}/..     2>/dev/null` \
+              `ls -d ${TK_PREFIX}/bin     2>/dev/null`"
+        for i in $list ; do
+            if test -f "$i/${WISH_PROG}" ; then
+                REAL_TK_BIN_DIR="`cd "$i"; pwd`"
+                break
+            fi
+        done
+        WISH_PROG="${REAL_TK_BIN_DIR}/${WISH_PROG}"
+    fi
+    AC_MSG_RESULT([${WISH_PROG}])
+    AC_SUBST(WISH_PROG)
+])
+
+#------------------------------------------------------------------------
+# TEA_PATH_CONFIG --
+#
+#	Locate the ${1}Config.sh file and perform a sanity check on
+#	the ${1} compile flags.  These are used by packages like
+#	[incr Tk] that load *Config.sh files from more than Tcl and Tk.
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--with-$1=...
+#
+#	Defines the following vars:
+#		$1_BIN_DIR	Full path to the directory containing
+#				the $1Config.sh file
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_PATH_CONFIG], [
+    #
+    # Ok, lets find the $1 configuration
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-$1
+    #
+
+    if test x"${no_$1}" = x ; then
+	# we reset no_$1 in case something fails here
+	no_$1=true
+	AC_ARG_WITH($1, [  --with-$1              directory containing $1 configuration ($1Config.sh)], with_$1config=${withval})
+	AC_MSG_CHECKING([for $1 configuration])
+	AC_CACHE_VAL(ac_cv_c_$1config,[
+
+	    # First check to see if --with-$1 was specified.
+	    if test x"${with_$1config}" != x ; then
+		case ${with_$1config} in
+		    */$1Config.sh )
+			if test -f ${with_$1config}; then
+			    AC_MSG_WARN([--with-$1 argument should refer to directory containing $1Config.sh, not to $1Config.sh itself])
+			    with_$1config=`echo ${with_$1config} | sed 's!/$1Config\.sh$!!'`
+			fi;;
+		esac
+		if test -f "${with_$1config}/$1Config.sh" ; then
+		    ac_cv_c_$1config=`(cd ${with_$1config}; pwd)`
+		else
+		    AC_MSG_ERROR([${with_$1config} directory doesn't contain $1Config.sh])
+		fi
+	    fi
+
+	    # then check for a private $1 installation
+	    if test x"${ac_cv_c_$1config}" = x ; then
+		for i in \
+			../$1 \
+			`ls -dr ../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
+			`ls -dr ../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
+			`ls -dr ../$1*[[0-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
+			../../$1 \
+			`ls -dr ../../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
+			`ls -dr ../../$1*[[0-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
+			../../../$1 \
+			`ls -dr ../../../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
+			`ls -dr ../../../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
+			`ls -dr ../../../$1*[[0-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ../../../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
+			${srcdir}/../$1 \
+			`ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]]*.[[0-9]]* 2>/dev/null` \
+			`ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]][[0-9]] 2>/dev/null` \
+			`ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]] 2>/dev/null` \
+			`ls -dr ${srcdir}/../$1*[[0-9]].[[0-9]]* 2>/dev/null` \
+			; do
+		    if test -f "$i/$1Config.sh" ; then
+			ac_cv_c_$1config=`(cd $i; pwd)`
+			break
+		    fi
+		    if test -f "$i/unix/$1Config.sh" ; then
+			ac_cv_c_$1config=`(cd $i/unix; pwd)`
+			break
+		    fi
+		done
+	    fi
+
+	    # check in a few common install locations
+	    if test x"${ac_cv_c_$1config}" = x ; then
+		for i in `ls -d ${libdir} 2>/dev/null` \
+			`ls -d ${exec_prefix}/lib 2>/dev/null` \
+			`ls -d ${prefix}/lib 2>/dev/null` \
+			`ls -d /usr/local/lib 2>/dev/null` \
+			`ls -d /usr/contrib/lib 2>/dev/null` \
+			`ls -d /usr/lib 2>/dev/null` \
+			; do
+		    if test -f "$i/$1Config.sh" ; then
+			ac_cv_c_$1config=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+	])
+
+	if test x"${ac_cv_c_$1config}" = x ; then
+	    $1_BIN_DIR="# no $1 configs found"
+	    AC_MSG_WARN([Cannot find $1 configuration definitions])
+	    exit 0
+	else
+	    no_$1=
+	    $1_BIN_DIR=${ac_cv_c_$1config}
+	    AC_MSG_RESULT([found $$1_BIN_DIR/$1Config.sh])
+	fi
+    fi
+])
+
+#------------------------------------------------------------------------
+# TEA_LOAD_CONFIG --
+#
+#	Load the $1Config.sh file
+#
+# Arguments:
+#	
+#	Requires the following vars to be set:
+#		$1_BIN_DIR
+#
+# Results:
+#
+#	Subst the following vars:
+#		$1_SRC_DIR
+#		$1_LIB_FILE
+#		$1_LIB_SPEC
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_LOAD_CONFIG], [
+    AC_MSG_CHECKING([for existence of ${$1_BIN_DIR}/$1Config.sh])
+
+    if test -f "${$1_BIN_DIR}/$1Config.sh" ; then
+        AC_MSG_RESULT([loading])
+	. ${$1_BIN_DIR}/$1Config.sh
+    else
+        AC_MSG_RESULT([file not found])
+    fi
+
+    #
+    # If the $1_BIN_DIR is the build directory (not the install directory),
+    # then set the common variable name to the value of the build variables.
+    # For example, the variable $1_LIB_SPEC will be set to the value
+    # of $1_BUILD_LIB_SPEC. An extension should make use of $1_LIB_SPEC
+    # instead of $1_BUILD_LIB_SPEC since it will work with both an
+    # installed and uninstalled version of Tcl.
+    #
+
+    if test -f ${$1_BIN_DIR}/Makefile ; then
+	AC_MSG_WARN([Found Makefile - using build library specs for $1])
+        $1_LIB_SPEC=${$1_BUILD_LIB_SPEC}
+        $1_STUB_LIB_SPEC=${$1_BUILD_STUB_LIB_SPEC}
+        $1_STUB_LIB_PATH=${$1_BUILD_STUB_LIB_PATH}
+    fi
+
+    AC_SUBST($1_VERSION)
+    AC_SUBST($1_BIN_DIR)
+    AC_SUBST($1_SRC_DIR)
+
+    AC_SUBST($1_LIB_FILE)
+    AC_SUBST($1_LIB_SPEC)
+
+    AC_SUBST($1_STUB_LIB_FILE)
+    AC_SUBST($1_STUB_LIB_SPEC)
+    AC_SUBST($1_STUB_LIB_PATH)
+])
+
+#------------------------------------------------------------------------
+# TEA_PATH_CELIB --
+#
+#	Locate Keuchel's celib emulation layer for targeting Win/CE
+#
+# Arguments:
+#	none
+#
+# Results:
+#
+#	Adds the following arguments to configure:
+#		--with-celib=...
+#
+#	Defines the following vars:
+#		CELIB_DIR	Full path to the directory containing
+#				the include and platform lib files
+#------------------------------------------------------------------------
+
+AC_DEFUN([TEA_PATH_CELIB], [
+    # First, look for one uninstalled.
+    # the alternative search directory is invoked by --with-celib
+
+    if test x"${no_celib}" = x ; then
+	# we reset no_celib in case something fails here
+	no_celib=true
+	AC_ARG_WITH(celib,[  --with-celib=DIR        use Windows/CE support library from DIR], with_celibconfig=${withval})
+	AC_MSG_CHECKING([for Windows/CE celib directory])
+	AC_CACHE_VAL(ac_cv_c_celibconfig,[
+	    # First check to see if --with-celibconfig was specified.
+	    if test x"${with_celibconfig}" != x ; then
+		if test -d "${with_celibconfig}/inc" ; then
+		    ac_cv_c_celibconfig=`(cd ${with_celibconfig}; pwd)`
+		else
+		    AC_MSG_ERROR([${with_celibconfig} directory doesn't contain inc directory])
+		fi
+	    fi
+
+	    # then check for a celib library
+	    if test x"${ac_cv_c_celibconfig}" = x ; then
+		for i in \
+			../celib-palm-3.0 \
+			../celib \
+			../../celib-palm-3.0 \
+			../../celib \
+			`ls -dr ../celib-*3.[[0-9]]* 2>/dev/null` \
+			${srcdir}/../celib-palm-3.0 \
+			${srcdir}/../celib \
+			`ls -dr ${srcdir}/../celib-*3.[[0-9]]* 2>/dev/null` \
+			; do
+		    if test -d "$i/inc" ; then
+			ac_cv_c_celibconfig=`(cd $i; pwd)`
+			break
+		    fi
+		done
+	    fi
+	])
+	if test x"${ac_cv_c_celibconfig}" = x ; then
+	    AC_MSG_ERROR([Cannot find celib support library directory])
+	else
+	    no_celib=
+	    CELIB_DIR=${ac_cv_c_celibconfig}
+	    CELIB_DIR=`echo "$CELIB_DIR" | sed -e 's!\\\!/!g'`
+	    AC_MSG_RESULT([found $CELIB_DIR])
+	fi
+    fi
+])
+
+
+# Local Variables:
+# mode: autoconf
+# End:
Index: /tags/1.6.0/packages/optimizer/src/test.c
===================================================================
--- /tags/1.6.0/packages/optimizer/src/test.c	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/src/test.c	(revision 6168)
@@ -0,0 +1,90 @@
+/*
+ * ----------------------------------------------------------------------
+ *  TEST PROGRAM for rp_optimizer
+ *
+ *  This is a simple test program used to exercise the rp_optimizer
+ *  library in Rappture.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <stdio.h>
+#include <math.h>
+#include "rp_optimizer.h"
+
+RpOptimStatus
+GetValue(values, numValues, fitnessPtr)
+    RpOptimParam **values;         /* array of input values */
+    int numValues;                 /* number of values on the list */
+    double *fitnessPtr;            /* returns: value of fitness */
+{
+    double a = 0.0;
+    double b = 0.0;
+    char* func = "unknown";
+
+    int n;
+    double fval;
+
+    for (n=0; n < numValues; n++) {
+        if (strcmp(values[n]->name,"a") == 0) {
+            a = values[n]->value.num;
+        }
+        else if (strcmp(values[n]->name,"b") == 0) {
+            b = values[n]->value.num;
+        }
+        else if (strcmp(values[n]->name,"func") == 0) {
+            func = values[n]->value.str;
+        }
+        else {
+            printf("ERROR: unrecognized parameter \"%s\"\n", values[n]->name);
+            return RP_OPTIM_FAILURE;
+        }
+    }
+
+    if (strcmp(func,"f1") == 0) {
+        fval = (a == 0.0) ? 1.0 : b*sin(a)/a;
+    }
+    else if (strcmp(func,"f2") == 0) {
+        fval = (b-a == 0.0) ? 1.0 : sin(b-a)/(b-a);
+    }
+    else if (strcmp(func,"another") == 0) {
+        fval = -a*a + b;
+    }
+    else {
+        printf("ERROR: unrecognized func value \"%s\"\n", func);
+        return RP_OPTIM_FAILURE;
+    }
+    printf("a=%g, b=%g func=%s  =>  f=%g\n", a, b, func, fval);
+
+    *fitnessPtr = fval;
+    return RP_OPTIM_SUCCESS;
+}
+
+int
+main(int argc, char** argv)
+{
+    RpOptimEnv *envPtr;
+    RpOptimStatus status;
+    char *funcValues[] = { "f1", "f2", "another", NULL };
+
+    envPtr = RpOptimCreate();
+    RpOptimAddParamNumber(envPtr, "a", 0.0, 1.0);
+    RpOptimAddParamNumber(envPtr, "b", 1.0, 10.0);
+    RpOptimAddParamString(envPtr, "func", funcValues);
+
+    status = RpOptimPerform(envPtr, GetValue, 10);
+
+    if (status == RP_OPTIM_SUCCESS) {
+        printf ("success!\n");
+    } else {
+        printf ("failed :(\n");
+    }
+
+    RpOptimDelete(envPtr);
+    return 0;
+}
Index: /tags/1.6.0/packages/optimizer/tests/aaa.test
===================================================================
--- /tags/1.6.0/packages/optimizer/tests/aaa.test	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/tests/aaa.test	(revision 6168)
@@ -0,0 +1,119 @@
+# ----------------------------------------------------------------------
+#  TESTS FOR:  Rappture::optimizer
+#
+#  This file contains a collection of tests for Tcl commands driving
+#  the RapptureOptimizer package.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#
+# Load the tcltest package...
+if {[lsearch [namespace children] ::tcltest] < 0} {
+    package require tcltest 2
+    namespace import -force ::tcltest::*
+}
+
+test aaa-0.1 {RapptureOptimizer package can be loaded} {
+    set status [catch {package require RapptureOptimizer} result]
+    if {$status != 0} {
+        # must not be installed yet -- use build version
+        lappend auto_path ../src
+        set status [catch {package require RapptureOptimizer} result]
+    }
+    list $status $result
+} {0 1.0}
+
+test aaa-1.1 {create an optimizer object} {
+  list [catch {Rappture::optimizer} result] $result
+} {0 optimizer0}
+
+test aaa-1.2 {create an optimizer object with a given name} {
+  list [catch {Rappture::optimizer foo} result] $result
+} {0 foo}
+
+test aaa-1.3 {can't clobber a name that already exists} {
+  list [catch {Rappture::optimizer set} result] $result
+} {1 {command "set" already exists}}
+
+test aaa-1.4 {optimizer creation takes certain args} {
+  list [catch {Rappture::optimizer -foo} result] $result
+} {1 {bad option "-foo": should be -tool, -using}}
+
+test aaa-1.5 {optimizer creation: -using requires a value} {
+  list [catch {Rappture::optimizer -using} result] $result
+} {1 {missing value for option "-using"}}
+
+test aaa-1.6 {optimizer creation: -using requires particular values} {
+  list [catch {Rappture::optimizer -using foo} result] $result
+} {1 {bad plugin name "foo": should be pgapack}}
+
+test aaa-1.7 {optimizer creation: extra args are processed} {
+  list [catch {Rappture::optimizer -using pgapack -foo bar} result] $result
+} {1 {bad option "-foo": should be -tool, -using}}
+
+test aaa-1.8 {optimizer can be destroyed without dumping core} {
+  rename foo ""
+  rename optimizer0 ""
+} {}
+
+# ----------------------------------------------------------------------
+test aaa-2.1 {create an optimizer and add parameters to it} {
+  Rappture::optimizer ctxt
+  ctxt add number input.temperature -min 0 -max 1
+  ctxt get
+} {input.temperature number -min 0.0 -max 1.0}
+
+test aaa-2.2 {add a parameter with a bad type} {
+  list [catch {ctxt add foo input.wrong -bar test} result] $result
+} {1 {bad parameter type "foo": should be number, string}}
+
+test aaa-2.3 {add a number parameter with a missing option} {
+  list [catch {ctxt add number input.wrong -min} result] $result
+} {1 {missing value for option "-min"}}
+
+test aaa-2.4 {add a number parameter with a bad value} {
+  list [catch {ctxt add number input.wrong -min foo} result] $result
+} {1 {expected floating-point number but got "foo"}}
+
+test aaa-2.5 {add a number parameter with a bad option name} {
+  list [catch {ctxt add number input.wrong -min 0 -foo x} result] $result
+} {1 {bad option "-foo": should be -min, -max}}
+
+test aaa-2.6 {add doesn't add parameter when there's an error} {
+  ctxt get
+} {input.temperature number -min 0.0 -max 1.0}
+
+test aaa-2.7 {add a string parameter} {
+  ctxt add string input.choice -values {a b c}
+  ctxt get input.choice
+} {string -values {a b c}}
+
+test aaa-2.8 {add a string parameter with a missing option} {
+  list [catch {ctxt add string input.wrong -values} result] $result
+} {1 {missing value for option "-values"}}
+
+test aaa-2.9 {add a string parameter with a bad option name} {
+  list [catch {ctxt add string input.wrong -bad 0} result] $result
+} {1 {bad option "-bad": should be -values}}
+
+test aaa-2.10 {add doesn't add parameter when there's an error} {
+  ctxt get
+} {{input.temperature number -min 0.0 -max 1.0} {input.choice string -values {a b c}}}
+
+test aaa-2.11 {add another number and return } {
+  ctxt add number input.temporary -min -5 -max 5
+  lsort [ctxt get input.temp*]
+} {{input.temperature number -min 0.0 -max 1.0} {input.temporary number -min -5.0 -max 5.0}}
+
+test aaa-2.12 {query -min values for multiple parameters} {
+  lsort [ctxt get input.temp* -min]
+} {{input.temperature 0.0} {input.temporary -5.0}}
+
+# cleanup
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/packages/optimizer/tests/all.tcl
===================================================================
--- /tags/1.6.0/packages/optimizer/tests/all.tcl	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/tests/all.tcl	(revision 6168)
@@ -0,0 +1,25 @@
+# ----------------------------------------------------------------------
+#  ALL TESTS
+#
+#  This file drives the entire test suite for the RapptureOptimizer
+#  package.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#
+set tcltestVersion [package require tcltest]
+namespace import -force tcltest::*
+
+if {$tcl_platform(platform) == "macintosh"} {
+    tcltest::singleProcess 1
+}
+
+tcltest::testsDirectory [file dir [info script]]
+tcltest::runAllTests
+
+return
Index: /tags/1.6.0/packages/optimizer/tests/pgapack.test
===================================================================
--- /tags/1.6.0/packages/optimizer/tests/pgapack.test	(revision 6168)
+++ /tags/1.6.0/packages/optimizer/tests/pgapack.test	(revision 6168)
@@ -0,0 +1,70 @@
+# ----------------------------------------------------------------------
+#  TESTS FOR:  pgapack module in Rappture::optimizer
+#
+#  This file contains a collection of tests for Tcl commands driving
+#  the RapptureOptimizer package.  This part covers the "pgapack"
+#  plug-in module.
+#
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#
+# Load the tcltest package...
+if {[lsearch [namespace children] ::tcltest] < 0} {
+    package require tcltest 2
+    namespace import -force ::tcltest::*
+}
+
+test aaa-0.1 {RapptureOptimizer package can be loaded} {
+    set status [catch {package require RapptureOptimizer} result]
+    if {$status != 0} {
+        # must not be installed yet -- use build version
+        lappend auto_path ../src
+        set status [catch {package require RapptureOptimizer} result]
+    }
+    list $status $result
+} {0 1.0}
+
+# ----------------------------------------------------------------------
+test pgapack-1.1 {default plugin is pgapack} {
+  Rappture::optimizer opt
+  opt using
+} {pgapack}
+
+test pgapack-1.2 {plugin has configuration options} {
+  opt configure
+} {-maxruns 10000 -operation minimize -poprepl best -popsize 200}
+
+test pgapack-1.3 {plugin configuration option values can be queried} {
+  opt configure -popsize
+} {200}
+
+test pgapack-1.4 {plugin configuration options can be modified} {
+  opt configure -popsize 1000 -operation maximize
+  opt configure
+} {-maxruns 10000 -operation maximize -poprepl best -popsize 1000}
+
+test pgapack-1.5 {options/values must be in pairs when changing them} {
+  list [catch {opt configure -operation minimize -poprepl} result] $result
+} {1 {missing value for option "-poprepl"}}
+
+test pgapack-1.6 {only certain options are recognized} {
+  list [catch {opt configure -foo} result] $result
+} {1 {bad option "-foo": should be -maxruns, -operation, -poprepl, -popsize}}
+
+test pgapack-1.7 {custom poprepl option works properly} {
+  list [catch {opt configure -poprepl random-repl} result] $result \
+       [opt configure -poprepl]
+} {0 {} random-repl}
+
+test pgapack-1.8 {custom poprepl option catches errors} {
+  list [catch {opt configure -poprepl foo} result] $result
+} {1 {bad value "foo": should be best, random-norepl, or random-repl}}
+
+# cleanup
+::tcltest::cleanupTests
+return
Index: /tags/1.6.0/puq/Makefile.in
===================================================================
--- /tags/1.6.0/puq/Makefile.in	(revision 6168)
+++ /tags/1.6.0/puq/Makefile.in	(revision 6168)
@@ -0,0 +1,44 @@
+
+SHELL		= @SHELL@
+TCLSH		= @TCLSH@
+srcdir		= @srcdir@
+prefix		= @prefix@
+exec_prefix	= @exec_prefix@
+bindir		= @bindir@
+libdir		= @libdir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+mandir		= @mandir@
+includedir	= @includedir@
+
+pkgdatadir	= $(datadir)/$(PKG_DIR)
+pkglibdir	= $(libdir)/$(PKG_DIR)
+pkgincludedir	= $(includedir)/$(PKG_DIR)
+top_builddir	= .
+puq_libdir	= $(libdir)/puq
+
+MKDIR_P		= @MKDIR_P@
+INSTALL		= @INSTALL@
+
+SCRIPTS	= 	$(srcdir)/get_params.py \
+		$(srcdir)/analyze.py \
+		$(srcdir)/get_response.py
+
+.PHONY: all install clean distclean
+
+all:
+
+install: all
+	$(MKDIR_P) -m 0755 $(puq_libdir)
+	@for i in $(SCRIPTS); do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 0444 $$i $(puq_libdir) ; \
+	done
+	$(INSTALL) -m 0555 puq $(bindir) 
+
+
+clean:
+
+distclean: clean
+	$(RM) Makefile *~
+
Index: /tags/1.6.0/puq/analyze.py
===================================================================
--- /tags/1.6.0/puq/analyze.py	(revision 6168)
+++ /tags/1.6.0/puq/analyze.py	(revision 6168)
@@ -0,0 +1,324 @@
+#!/usr/bin/env python
+"""
+Once submit has finished with the jobs, this function is called to have PUQ
+process the results.
+"""
+from __future__ import print_function
+import sys
+import os
+import numpy as np
+import h5py
+import re
+import puq
+from puq.jpickle import unpickle
+import Rappture
+import StringIO
+from scipy.spatial import ConvexHull
+# geometry library
+from shapely.geometry import Polygon
+from shapely.ops import unary_union
+
+# Redirect stdout and stderr to files for debugging.
+# Append to the files created in get_params.py
+sys.stdout = open("uq_debug.out", 'a')
+sys.stderr = open("uq_debug.err", 'a')
+
+
+# Restore the state of a PUQ session from a HDF5 file.
+def load_from_hdf5(name):
+    h5 = h5py.File(name, 'r+')
+    sw = unpickle(h5['private/sweep'].value)
+    sw.fname = os.path.splitext(name)[0]
+    h5.close()
+
+    sw.psweep._sweep = sw
+
+    if hasattr(sw.psweep, 'reinit'):
+        sw.psweep.reinit()
+    return sw
+
+
+# Plots probability curves
+def plot_pdf_curve(io, h5, xvals, vname, percent):
+    print('plot_pdf_curve %s %s' % (vname, percent))
+    # compute upper and lower percentiles
+    pm = (100 - percent)/200.0
+    pp = 1 - pm
+
+    label = None
+
+    # collect data into an array
+    xarr = np.empty(len(xvals[vname]))
+    yp = np.empty(len(xvals[vname]))
+    ym = np.empty(len(xvals[vname]))
+
+    for vindex in sorted(xvals[vname].keys()):
+        if label is None:
+            label = h5['/output/data/%s[%d]' % (vname, vindex)].attrs['label']
+        xarr[vindex] = xvals[vname][vindex]
+        yp[vindex] = pcurves[vname][vindex].ppf(pp)
+        ym[vindex] = pcurves[vname][vindex].ppf(pm)
+
+    curve = io['output.curve(curve_pdf-%s-%s)' % (vname, percent)]
+    if percent == 0:
+        curve['about.label'] = "mean"
+    else:
+        curve['about.label'] = "middle %s%%" % percent
+    curve['about.group'] = label
+    curve['about.uqtype'] = 'Probability'
+
+    pts = ""
+    for x, y in zip(xarr, yp):
+        pts += "%s %s " % (x, y)
+    if percent == 0:
+        pts += '\n'
+    else:
+        for x, y in reversed(zip(xarr, ym)):
+            pts += "%s %s " % (x, y)
+        pts += "%s %s\n" % (xarr[0], yp[0])
+
+    curve['component.xy'] = pts
+
+
+def add_pts(f1, percent):
+    # compute upper and lower percentiles
+    pm = (100 - percent) / 200.0
+    pp = 1 - pm
+    prob = np.linspace(pm, pp, 31)
+    x, y = f1.eval(prob)
+    return np.array(zip(x, y))
+
+
+def plot_pdf_acurve(io, h5, acurves, vname, percent):
+    """
+    This function plots the probability curves for parametric
+    PDFs.
+    """
+    print('plot_pdf_acurve %s %s' % (vname, percent))
+
+    label = None
+    prev_pts = None  # last set of points
+
+    poly = []
+    for vindex in sorted(acurves[vname].keys()):
+        if label is None:
+            label = h5['/output/data/%s[%d]' % (vname, vindex)].attrs['label']
+        f1 = unpickle(h5['/output/data/%s[%d]' % (vname, vindex)].attrs['curve'])
+        bpts = add_pts(f1, percent)
+
+        # first data set? Just remember it.
+        if prev_pts is None:
+            prev_pts = bpts
+            continue
+
+        pts = np.array((prev_pts, bpts)).ravel().reshape(-1, 2)
+        hull = ConvexHull(pts, qhull_options='Pp')
+        p1 = Polygon([hull.points[v] for v in hull.vertices])
+        poly.append(p1)
+        prev_pts = bpts
+
+    u = unary_union(poly)
+
+    curve = io['output.curve(curve_pdf-%s-%s)' % (vname, percent)]
+    if percent == 0:
+        curve['about.label'] = "mean"
+    else:
+        curve['about.label'] = "middle %s%%" % percent
+    curve['about.group'] = label
+    curve['about.uqtype'] = 'Probability'
+    curve['component.xy'] = np.array(u.exterior.xy)
+
+
+def plot_pdf(io, v, pdf, desc):
+    print("plot_pdf %s desc=%s" % (v, desc))
+    p = io['output.curve(pdf-%s)' % v]
+    p['about.label'] = desc
+    p['about.uqtype'] = "PDF"
+    p['yaxis.label'] = 'Probability'
+
+    pts = "%s 0\n" % pdf.x[0]
+    for x, y in zip(pdf.x, pdf.y):
+        pts += "%s %s\n" % (x, y)
+    pts += "%s 0\n" % pdf.x[-1]
+    p['component.xy'] = pts
+
+
+def write_responses(io, h5):
+    uqtype = h5.attrs['UQtype']
+    for v in h5[uqtype]:
+        print("write_responses", v)
+        if '[' in v:
+            # It is a curve. Ignore.
+            continue
+        try:
+            desc = h5['%s/%s' % (uqtype, v)].attrs['description']
+        except:
+            desc = ''
+        try:
+            label = h5['%s/%s' % (uqtype, v)].attrs['label']
+        except:
+            label = ''
+
+        rsp = h5['/%s/%s/response' % (uqtype, v)].value
+        rout = io['output.response(%s)' % v]
+        rout['value'] = rsp
+        rout['about.description'] = desc
+        rout['about.label'] = label
+        rout['about.uqtype'] = 'Response'
+
+        rs = unpickle(rsp)
+        rout['variables'] = ' '.join([str(p.name) for p in rs.params])
+        labels = ' '.join([repr(str(p.label)) for p in rs.params])
+        rout['labels'] = labels.replace("'", '"')
+
+        if type(rs) == puq.response.ResponseFunc:
+            rout['equation'] = rs.eqn
+            rout['rmse'] = "{:6.3g}".format(rs.rmse()[1])
+
+        rout['data'] = rs.data
+
+
+def write_params(h5, out):
+    params = map(str, h5['/input/params'].keys())
+    print('#' * 80, file=out)
+    print('INPUT PARAMETERS', file=out)
+
+    for pname in params:
+        print('-' * 80, file=out)
+        p = puq.unpickle(h5['/input/params/' + pname].value)
+        cname = p.__class__.__name__[:-9]
+        pdf_str = '%s [%s - %s] mean=%s dev=%s mode=%s' % (cname, p.pdf.range[0], p.pdf.range[1], p.pdf.mean, p.pdf.dev, p.pdf.mode)
+
+        print("Name:", p.name, file=out)
+        try:
+            print("Label:", p.label, file=out)
+        except:
+            pass
+        print("Desc:", p.description, file=out)
+        print('Value:', pdf_str, file=out)
+    print('#' * 80, file=out)
+    print(file=out)
+
+
+def write_summary(io, h5):
+    outstr = StringIO.StringIO()
+    write_params(h5, outstr)
+    uqtype = h5.attrs['UQtype']
+    for v in h5[uqtype]:
+        if '[' in v:
+            # It is a curve. Ignore.
+            continue
+        desc = h5['%s/%s' % (uqtype, v)].attrs['description']
+        print("QoI: %s (%s)" % (v, desc), file=outstr)
+        rs = unpickle(h5['/%s/%s/response' % (uqtype, v)].value)
+        if type(rs) == puq.response.ResponseFunc:
+            print("\nv=%s\n" % rs.eqn, file=outstr)
+            print("SURROGATE MODEL ERROR:{:6.3g}%".format(rs.rmse()[1]), file=outstr)
+        sens = puq.unpickle(h5['/%s/%s/sensitivity' % (uqtype, v)].value)
+        max_name_len = max(map(len, [p[0] for p in sens]))
+        print("\nSENSITIVITY:", file=outstr)
+        print("Var%s     u*          dev" % (' '*(max_name_len)), file=outstr)
+        print('-'*(28+max_name_len), file=outstr)
+        for item in sens:
+            pad = ' '*(max_name_len - len(item[0]))
+            print("{}{}  {:10.4g}  {:10.4g}".format(pad, item[0],
+                item[1]['ustar'], item[1]['std']), file=outstr)
+        print('-'*(28+max_name_len), file=outstr)
+        print(file=outstr)
+    iostr = io['output.string(UQ Summary)']
+    iostr['about.label'] = 'UQ Summary'
+    iostr['current'] = outstr.getvalue()
+    outstr.close()
+
+
+def write_sensitivity(io, h5):
+    # If more than one variable, display sensitivity.
+    # Curves have indexed variables, so skip them.
+    if len(h5['/input/params']) > 1 and ['[' in x for x in h5[uqtype]].count(False):
+        for v in h5[uqtype]:
+            if '[' in v:
+                # curve. skip it.
+                continue
+            desc = h5['/output/data/%s' % v].attrs['label']
+            sens = unpickle(h5['/%s/%s/sensitivity' % (uqtype, v)].value)
+
+            hist = io['output.histogram(sens-%s)' % v]
+            hist['about.label'] = desc
+            hist['about.uqtype'] = 'Sensitivity'
+            hist['about.type'] = 'scatter'
+            hist['xaxis.label'] = 'Parameters'
+            hist['yaxis.label'] = 'Sensitivity'
+            pts = ''
+            for name in sens:
+                n = name[0]
+                try:
+                    n = h5['/input/params/%s' % n].attrs['label']
+                except:
+                    pass
+                pts += "\"%s\" %s\n" % (n, name[1]['ustar'])
+            hist['component.xy'] = pts
+
+sw = load_from_hdf5(sys.argv[1])
+sw.analyze()
+
+h5 = h5py.File(sys.argv[1], 'r+')
+io = Rappture.PyXml('run_uq.xml')
+
+# curves built from pdfs
+pcurves = {}
+xvals = {}
+acurves = {}
+
+reg1 = re.compile('([ \da-zA-Z_]+)\[([ \d]+)\]')
+
+uqtype = h5.attrs['UQtype']
+for v in h5[uqtype]:
+    print('v=', v)
+    rsp = h5['/%s/%s/response' % (uqtype, v)].value
+    rs = unpickle(rsp)
+    pdf = rs.pdf(fit=False)
+    odata = h5['/output/data/%s' % v]
+
+    # For curves built from pdfs, just put them in a dict for now
+    if 'x' in odata.attrs:
+        matches = reg1.findall(v)
+        vname, vindex = matches[0]
+        print('CURVE: vname=%s   vindex=%s' % (vname, vindex))
+        vindex = int(vindex)
+        if vname not in pcurves:
+            pcurves[vname] = {}
+            xvals[vname] = {}
+        xvals[vname][vindex] = odata.attrs['x']
+        pcurves[vname][vindex] = pdf
+    elif 'curve' in odata.attrs:
+        matches = reg1.findall(v)
+        vname, vindex = matches[0]
+        print('ACURVE: %s - %s' % (vname, vindex))
+        if vname not in acurves:
+            acurves[vname] = {}
+        acurves[vname][int(vindex)] = pdf
+    else:
+        desc = h5['/output/data/%s' % v].attrs['label']
+        plot_pdf(io, v, pdf, desc)
+
+# now do probability curves
+for vname in xvals:
+    plot_pdf_curve(io, h5, xvals, vname, 95)
+    plot_pdf_curve(io, h5, xvals, vname, 50)
+
+for vname in acurves:
+    try:
+        plot_pdf_acurve(io, h5, acurves, vname, 95)
+    except:
+        pass
+    try:
+        plot_pdf_acurve(io, h5, acurves, vname, 50)
+    except:
+        pass
+
+write_sensitivity(io, h5)
+write_responses(io, h5)
+write_summary(io, h5)
+
+io.close()
+h5.close()
Index: /tags/1.6.0/puq/get_params.py
===================================================================
--- /tags/1.6.0/puq/get_params.py	(revision 6168)
+++ /tags/1.6.0/puq/get_params.py	(revision 6168)
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+"""
+This script takes some uq parameters from the command line
+and starts up a PUQ session using them.  The RapptureHost()
+class will not actually execute any jobs.  Job parameters
+are instead saved to a CSV file named params[pid].csv.
+PUQ status is saved into an hdf5 file, as usual.
+"""
+
+from __future__ import print_function
+import sys
+import os
+from puq import NormalParameter, UniformParameter, Sweep, RapptureHost, Smolyak
+import numpy as np
+from puq.jpickle import unpickle
+
+# Redirect stdout and stderr to files for debugging.
+sys.stdout = open("uq_debug.out", 'w')
+sys.stderr = open("uq_debug.err", 'w')
+
+print(sys.argv)
+pid, varlist, uq_type, args = sys.argv[1:]
+
+dfile = "driver%s.xml" % pid
+cvsname = "params%s.csv" % pid
+hname = "puq_%s.hdf5" % pid
+
+varlist = unpickle(varlist)
+print("varlist=", varlist)
+
+v = {}
+units = {}
+for p in varlist:
+    name, _units, dist = p
+    name = str(name)
+    units[name] = str(_units)
+    if dist[0] == u'gaussian':
+        try:
+            kwargs = dist[3]
+        except:
+            kwargs = {}
+        v[name] = NormalParameter(name, name, mean=dist[1], dev=dist[2], **kwargs)
+        print(v[name])
+    elif dist[0] == u'uniform':
+        v[name] = UniformParameter(name, name, min=dist[1], max=dist[2])
+    else:
+        print("ERROR: Unknown distribution type: %s" % dist[0])
+        sys.exit(1)
+if uq_type == "smolyak":
+    uq = Smolyak(v.values(), args)
+else:
+    print("ERROR: Unknown UQ type: %s" % uq_type)
+    os.chdir('..')
+    sys.exit(1)
+
+# save parameter values to CSV file
+with open(cvsname, 'w') as f:
+    print(','.join(['@@'+str(p.name) for p in uq.params]), file=f)
+    for i in range(len(uq.params[0].values)):
+        print(','.join(['%.16g%s' % (p.values[i], units[p.name]) for p in uq.params]), file=f)
+
+# This just saves PUQ state into HDF5 file, so later we can have PUQ analyze
+# the results and it knows about the input parameters, UQ method, etc.
+host = RapptureHost('puq', dfile)
+sw = Sweep(uq, host, None)
+host.psweep = sw.psweep
+sw.run(hname, overwrite=True)
+
+print("Finished with get_params.py\n")
Index: /tags/1.6.0/puq/get_response.py
===================================================================
--- /tags/1.6.0/puq/get_response.py	(revision 6168)
+++ /tags/1.6.0/puq/get_response.py	(revision 6168)
@@ -0,0 +1,175 @@
+#!/usr/bin/env python
+"""
+Sample a response function (surrogate model).  Because so much of
+the Rappture internals expect objects to have an associated xml
+object and path, we will return the plot in an xml file.
+"""
+
+from __future__ import print_function
+import sys
+import numpy as np
+import puq
+from puq.jpickle import unpickle
+import xml.etree.ElementTree as xml
+
+
+from itertools import product
+# Redirect stdout and stderr to files for debugging.
+# Append to the files created in get_params.py
+sys.stdout = open("response.out", 'w')
+sys.stderr = open("response.err", 'w')
+
+
+# variable names to labels
+def subs_names(varl, h5):
+    varlist = []
+    for v in varl:
+        try:
+            lab = h5['/input/params/%s' % v[0]].attrs['label']
+        except:
+            lab = str(v[0])
+        varlist.append(lab)
+    return varlist
+
+
+def plot_resp1(dout, resp, name, rlabel):
+    print('plot_resp1', name, rlabel)
+
+    numpoints = 100
+
+    resp = unpickle(resp)
+    var = None
+
+    for index, p in enumerate(resp.params):
+        if p.name == name:
+            var = p
+            break
+
+    if var is None:
+        print("plot_resp1 error: name %s not recognized" % name)
+        return
+
+    data = resp.data
+    print('data=', repr(data))
+    for ind, p in enumerate(resp.params):
+        if ind == index:
+            continue
+        m = p.pdf.mean
+        means = np.isclose(m, data[:, ind], rtol=1e-6, atol=1e-12)
+        data = data[means]
+
+    print("vars=", resp.vars)
+    print("data=", repr(data))
+
+    curve = xml.SubElement(dout, 'curve', {'id': 'response'})
+    about = xml.SubElement(curve, 'about')
+    xml.SubElement(about, 'label').text = rlabel
+    xml.SubElement(about, 'group').text = rlabel
+
+    xaxis = xml.SubElement(curve, 'xaxis')
+    xml.SubElement(xaxis, 'label').text = var.label
+
+    yaxis = xml.SubElement(curve, 'yaxis')
+    xml.SubElement(yaxis, 'label').text = rlabel
+
+    x = np.linspace(*var.pdf.range, num=numpoints)
+
+    allpts = np.empty((numpoints, len(resp.params)))
+    for i, v in enumerate(resp.params):
+        if v.name == var.name:
+            allpts[:, i] = x
+        else:
+            allpts[:, i] = np.mean(v.pdf.mean)
+
+    pts = resp.evala(allpts)
+    xy = '\n'.join([' '.join(map(repr, a)) for a in zip(x, pts)])
+    comp = xml.SubElement(curve, 'component')
+    xml.SubElement(comp, 'xy').text = xy
+
+    # scatter plot sampled data on response surface
+    curve = xml.SubElement(dout, 'curve', {'id': 'scatter'})
+    about = xml.SubElement(curve, 'about')
+    xml.SubElement(about, 'label').text = 'Data Points'
+    xml.SubElement(about, 'group').text = rlabel
+    xml.SubElement(about, 'type').text = 'scatter'
+    comp = xml.SubElement(curve, 'component')
+    xy = '\n'.join([' '.join(map(repr, a)) for a in zip(data[:, index], data[:, -1])])
+    xml.SubElement(comp, 'xy').text = xy
+
+
+def plot_resp2(dout, resp, name1, name2, rlabel):
+    print("plot_resp2", name1, name2, rlabel)
+    numpoints = 50
+
+    resp = unpickle(resp)
+    for p in resp.params:
+        if p.name == name1:
+            v1 = p
+        elif p.name == name2:
+            v2 = p
+
+    x = np.linspace(*v1.pdf.range, num=numpoints)
+    y = np.linspace(*v2.pdf.range, num=numpoints)
+    pts = np.array([(b, a) for a, b in product(y, x)])
+    allpts = np.empty((numpoints**2, len(resp.vars)))
+    for i, v in enumerate(resp.vars):
+        if v[0] == v1.name:
+            allpts[:, i] = pts[:, 0]
+        elif v[0] == v2.name:
+            allpts[:, i] = pts[:, 1]
+        else:
+            allpts[:, i] = np.mean(v[1])
+    pts = np.array(resp.evala(allpts))
+    print('plot_resp2 returns array of', pts.shape)
+
+    # mesh
+    mesh = xml.SubElement(dout, 'mesh', {'id': 'm2d'})
+    about = xml.SubElement(mesh, 'about')
+    label = xml.SubElement(about, 'label')
+    label.text = '2D Mesh'
+    xml.SubElement(mesh, 'dim').text = '2'
+    xml.SubElement(mesh, 'hide').text = 'yes'
+    grid = xml.SubElement(mesh, 'grid')
+    xaxis = xml.SubElement(grid, 'xaxis')
+    xml.SubElement(xaxis, 'numpoints').text = str(numpoints)
+    xml.SubElement(xaxis, 'min').text = str(v1.pdf.range[0])
+    xml.SubElement(xaxis, 'max').text = str(v1.pdf.range[1])
+    yaxis = xml.SubElement(grid, 'yaxis')
+    xml.SubElement(yaxis, 'numpoints').text = str(numpoints)
+    xml.SubElement(yaxis, 'min').text = str(v2.pdf.range[0])
+    xml.SubElement(yaxis, 'max').text = str(v2.pdf.range[1])
+
+    # field
+    field = xml.SubElement(dout, 'field', {'id': 'f2d'})
+    about = xml.SubElement(field, 'about')
+    xml.SubElement(xml.SubElement(about, 'xaxis'), 'label').text = v1.label
+    xml.SubElement(xml.SubElement(about, 'yaxis'), 'label').text = v2.label
+
+    xml.SubElement(about, 'label').text = rlabel
+    comp = xml.SubElement(field, 'component')
+    xml.SubElement(comp, 'mesh').text = 'output.mesh(m2d)'
+    xml.SubElement(about, 'view').text = 'heightmap'
+    pts = ' '.join(map(str, pts.ravel('F').tolist()))
+    xml.SubElement(comp, 'values').text = pts
+
+
+if __name__ == "__main__":
+    print("get_response %s" % sys.argv[3:])
+
+    if len(sys.argv[1:]) == 5:
+        fname, resp, var1, var2, label = sys.argv[1:]
+
+        droot = xml.Element('run')
+        dtree = xml.ElementTree(droot)
+        dout = xml.SubElement(droot, 'output')
+
+        if var1 == var2:
+            plot_resp1(dout, resp, var1, label)
+        else:
+            plot_resp2(dout, resp, var1, var2, label)
+
+        with open(fname, 'w') as f:
+            f.write("<?xml version=\"1.0\"?>\n")
+            dtree.write(f)
+    else:
+        print('ERROR: Expected 5 args. Got', sys.argv)
Index: /tags/1.6.0/puq/puq.in
===================================================================
--- /tags/1.6.0/puq/puq.in	(revision 6168)
+++ /tags/1.6.0/puq/puq.in	(revision 6168)
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# Script to run PUQ script
+# USAGE: puq script args...
+
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+apps_dir=/apps/share64/debian7
+# Use puq version retrieved from configure.
+puq_version=@PUQ_VERSION@
+puq_version=2.2.14
+puq_exec_prefix=${libdir}/puq
+
+puq_dir=${apps_dir}/puq/puq-${puq_version}
+. ${puq_dir}/puq.env
+
+# Note: Both "python_version" variable and PATH variable are set by puq.env
+# script.
+python=python${python_version}
+
+script=$1
+shift
+exec ${python} ${puq_exec_prefix}/${script}.py $*
+
Index: /tags/1.6.0/src/Doxyfile
===================================================================
--- /tags/1.6.0/src/Doxyfile	(revision 6168)
+++ /tags/1.6.0/src/Doxyfile	(revision 6168)
@@ -0,0 +1,1248 @@
+# Doxyfile 1.4.5
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = Rappture
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = 
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = docs/doxygen
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
+# sources only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to 
+# include (a tag file for) the STL sources as input, then you should 
+# set this tag to YES in order to let doxygen match functions declarations and 
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
+# func(std::string) {}). This also make the inheritance and collaboration 
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is YES.
+
+SHOW_DIRECTORIES       = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from the 
+# version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the program writes to standard output 
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = core               \
+                         cee                \
+                         fortran            \
+                         matlab             \
+                         octave             \
+                         python             \
+                         ../include/core    \
+                         ../include/cee     \
+                         ../include/fortran \
+                         ../include/matlab  \
+                         ../include/octave  \
+                         ../include/python
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
+
+FILE_PATTERNS          = 
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that a graph may be further truncated if the graph's 
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
Index: /tags/1.6.0/src/Makefile.in
===================================================================
--- /tags/1.6.0/src/Makefile.in	(revision 6168)
+++ /tags/1.6.0/src/Makefile.in	(revision 6168)
@@ -0,0 +1,67 @@
+
+bindir          = @bindir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+
+INSTALL		= @INSTALL@
+INSTALL_PROGRAM	= ${INSTALL} -m 755
+INSTALL_DATA	= ${INSTALL} -m 644
+INSTALL_SCRIPT	= ${INSTALL}
+
+CXX             = @CXX@
+CC              = @CC@
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD        = @STLIB_LD@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+CFLAGS          = @CFLAGS@
+
+RANLIB 		= @RANLIB@
+MKDIR_P		= @MKDIR_P@
+AR 		= ar
+RM		= rm -f
+
+.PHONY:	core core2 objects 
+
+all: 	core core2 objects 
+
+RAPPTURE_LIB = core/librappture.a
+
+core: 
+	$(MAKE) -C core all
+
+core2: core
+	$(MAKE) -C core2 all
+
+objects: core
+	$(MAKE) -C objects all
+
+install: core
+	$(MAKE) -C core install
+	$(MAKE) -C core2 install
+	$(MAKE) -C objects install
+
+docs:
+	$(MKDIR_P) -m 0755 docs/doxygen
+	doxygen
+
+clean: 
+	$(MAKE) -C core clean
+	$(MAKE) -C core2 clean
+	$(MAKE) -C objects clean
+
+distclean: clean
+	$(MAKE) -C core distclean
+	$(MAKE) -C core2 distclean
+	$(MAKE) -C objects distclean
+	$(RM) Makefile
Index: /tags/1.6.0/src/README
===================================================================
--- /tags/1.6.0/src/README	(revision 6168)
+++ /tags/1.6.0/src/README	(revision 6168)
@@ -0,0 +1,68 @@
+To compile the Rappture Library, the following must be done:
+
+1)  Adjust the Makefile.
+
+    Change Makefile variables as needed. Pay particular attention to
+    compilers, CFLAGS, directory names, and where python components
+    are located. Make sure you change the variable 'EMB_PY_FLAGS' 
+    to point to the location of the python shared (or static) object
+    library is located. It can be placed in the lib directory directly
+    above this directory.
+
+    Check the Following variables:
+        
+        PY_SRC_HEADERS  = /opt/rappture/include/python2.4
+        EMB_PY_LIB_FLAG = -lpython2.4
+        EMB_PY_LIB_DIR  = /opt/rappture/lib
+
+        # tell make where to find the libscew sources
+        SCEW_HEADERS    = /opt/rappture/include/scew
+        LIB_SCEW_INCL   = -I $(SCEW_HEADERS)
+        LIB_SCEW_FLAG   = -L/opt/rappture/lib -lscew
+
+        # define the top of our directory structure
+        # replace this with the full path of the directory
+        # containing the rappture directory
+        TOP_DIR
+
+        CFLAGS          
+
+2) Make the Rappture library
+
+    To make the Rappture Library, you will need to make sure the Scew
+    library header files are installed and the makefile variable
+    SCEW_HEADERS is properly defined. The following scew related header 
+    files must be available in the library search path, preferably in 
+    same directory as the scew header files.
+
+     |  Header File Name  |   Provider   | 
+    -+--------------------+--------------+-
+     |   xelement.h       | scew source  | 
+     |   xattribute.h     | scew source  | 
+     |   xerror.h         | scew source  | 
+    -+--------------------|--------------+- 
+     |   attribute.h      | scew source  | 
+     |   element.h        | scew source  |
+     |   error.h          | scew source  | 
+     |   parser.h         | scew source  |
+     |   scew.h           | scew source  |
+     |   str.h            | scew source  | 
+     |   tree.h           | scew source  |
+     |   writer.h         | scew source  |
+    -+--------------------+--------------+-
+     |   expat.h          | expat source |
+     |   expat_external.h | expat source |
+    -+--------------------+--------------+-
+
+    Once You've verified that these header files are available, 
+    issue the following commands:
+        cd rappture/src
+        make 
+
+3)  Installing Python's Rappture.Units module.
+        cd rappture/python
+        python setup.py install
+
+4)  Make the Rappture Test programs
+        cd rappture/test
+        make
Index: /tags/1.6.0/src/core/Makefile.in
===================================================================
--- /tags/1.6.0/src/core/Makefile.in	(revision 6168)
+++ /tags/1.6.0/src/core/Makefile.in	(revision 6168)
@@ -0,0 +1,201 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+incdir          = $(prefix)/include
+
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+SVN_VERSION	:= $(shell readlink -e $(srcdir) | xargs svnversion | sed 's/Unversioned directory/unknown/')
+RAPPTURE_VERSION = @PACKAGE_VERSION@
+CXX             = @CXX@
+# This hack is because the tcl.m4 file generates the line
+# SHLIB_LD = ${CC} ...
+# We need to link with g++ on MacOS 10.4
+CC              = $(CXX)
+CCC             = @CC@
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@ -Wall
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD        = @STLIB_LD@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+CFLAGS          = @CFLAGS@ -fPIC
+DX_LIB_SPEC	= @DX_LIB_SPEC@
+DX_INC_SPEC	= @DX_INC_SPEC@
+DEFINES		= -DSVN_VERSION=\"$(SVN_VERSION)\" \
+		  -DRAPPTURE_VERSION=\"$(RAPPTURE_VERSION)\"
+
+CC_SWITCHES     = $(CFLAGS) $(CFLAGS_DEBUG) $(INCLUDES) $(DEFINES)
+CXX_SWITCHES    = $(CFLAGS) $(CFLAGS_DEBUG) $(INCLUDES) $(DEFINES)
+
+INCLUDES        = \
+		-I. \
+		-I$(srcdir) \
+		-I$(includedir)
+
+RANLIB          = @RANLIB@
+AR              = ar
+VPATH           = $(srcdir):$(srcdir)/scew:$(srcdir)/b64
+RM              = rm -f
+
+CDEBUGFLAGS     = -g -Wall
+
+LIBS            = -lexpat -lz -lm -lstdc++
+
+HEADERS = \
+		RpOutcome.h \
+		RpPtr.h \
+		RpBindingsDict.h \
+		RpBuffer.h \
+		RpBufferCHelper.h \
+		RpBufferCInterface.h \
+		RpDict.h \
+		RpEncode.h \
+		RpEntityRef.h \
+		RpFortranCommon.h \
+		RpLibrary.h \
+		RpLibraryCInterface.h \
+		RpLibraryFInterface.h \
+		RpLibraryFStubs.h \
+		RpOutcomeCHelper.h \
+		RpOutcomeCInterface.h \
+		RpSimpleBuffer.h \
+		RpUnits.h \
+		RpUnitsCInterface.h \
+		RpUnitsFInterface.h \
+		RpUnitsFStubs.h \
+		RpUnitsStd.h \
+		RpUtils.h \
+		RpUtilsCInterface.h \
+		RpUtilsFInterface.h \
+		RpUtilsFStubs.h \
+		rappture.h
+
+LOCAL_HEADERS = \
+		config.h
+
+SCEW_HEADERS 	= \
+		attribute.h  \
+		element.h \
+		error.h \
+		parser.h \
+		scew.h \
+		scew_extras.h  \
+		str.h \
+		tree.h \
+		types.h \
+		xattribute.h \
+		xelement.h \
+		xhandler.h \
+		xparser.h \
+		xprint.h \
+		xtree.h \
+		writer.h \
+		xerror.h
+
+# Build the scew and b64 libraries directly into Rappture for now.
+# Note: This works because of viewpath-ing. See the VPATH variable.
+B64_OBJS	= \
+		cdecode.o \
+		cencode.o
+
+SCEW_OBJS 	= \
+		attribute.o \
+		element.o \
+		error.o \
+		parser.o \
+		scew_extras.o  \
+		str.o \
+		tree.o \
+		writer.o \
+		xattribute.o \
+		xerror.o \
+		xhandler.o \
+		xparser.o \
+		xprint.o
+
+OBJS = 		\
+		RpBindingsDict.o \
+		RpBuffer.o \
+		RpBufferCInterface.o \
+		RpEncode.o \
+		RpEntityRef.o \
+		RpFortranCommon.o \
+		RpLibrary.o \
+		RpLibraryCInterface.o \
+		RpLibraryFInterface.o \
+		RpOutcome.o \
+		RpOutcomeCInterface.o \
+		RpPtr.o \
+		RpResult.o \
+		RpUnits.o \
+		RpUnitsCInterface.o \
+		RpUnitsFInterface.o \
+		RpUnitsStd.o \
+		RpUtils.o \
+		RpUtilsCInterface.o \
+		RpUtilsFInterface.o  \
+		$(SCEW_OBJS) \
+		$(B64_OBJS)
+
+ifneq ($(DX_INC_SPEC),)
+HEADERS +=	\
+		RpDXWriter.h \
+		RpDXWriterFInterface.h \
+		RpDXWriterFStubs.h
+OBJS +=		\
+		RpDXWriter.o \
+		RpDXWriterFInterface.o
+endif
+
+name        = rappture
+libname     = lib$(name)
+lib         = $(libname).a
+shared_lib  = $(libname)$(SHLIB_SUFFIX)
+
+all: $(lib) $(shared_lib)
+
+$(lib): $(OBJS)
+	$(RM) $@
+	$(AR) -r $@ $(OBJS)
+	$(RANLIB) $@
+
+$(shared_lib): $(OBJS)
+	$(SHLIB_LD) $(SHLIB_LDFLAGS) -o $@ $(OBJS) \
+		$(LIB_SEARCH_DIRS) $(LIBS)
+
+install: install_libs install_headers
+
+install_libs: $(lib)  $(shared_lib)
+	$(INSTALL) -m 444 $(lib) $(libdir)
+	$(INSTALL) -m 555 $(shared_lib) $(libdir)
+
+install_headers:
+	$(MKDIR_P) -m 0755 $(incdir)
+	for i in $(HEADERS) ; do \
+	  $(INSTALL) -m 0444  $(srcdir)/$$i $(incdir) ; \
+	done
+	for i in $(LOCAL_HEADERS) ; do \
+	  $(INSTALL) -m 0444  $$i $(incdir) ; \
+	done
+
+.cc.o:
+	$(CXX) $(CXX_SWITCHES) -c $?
+.c.o:
+	$(CCC) $(CC_SWITCHES) -c $?
+
+clean:
+	$(RM) $(OBJS) $(lib) $(shared_lib)
+
+distclean: clean
+	$(RM) Makefile config.h *~
Index: /tags/1.6.0/src/core/RpBindingsDict.cc
===================================================================
--- /tags/1.6.0/src/core/RpBindingsDict.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpBindingsDict.cc	(revision 6168)
@@ -0,0 +1,298 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Common Rappture Dictionary Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpBindingsDict.h"
+
+RpDict DICT_TEMPLATE_L ObjDict_Lib;
+RpDict DICT_TEMPLATE_U ObjDictUnits;
+RpDict DICT_TEMPLATE_V ObjDict_Void;
+
+/**********************************************************************/
+// FUNCTION: storeObject_Lib()
+/// Store an object into the library dictionary.
+/**
+ * This function stores the RpLibrary object pointed to by 'objectName'
+ * into the library dictionary. This is helpful for writing bindings
+ * for languages that can not accept pointers to provide back to the
+ * function's caller.
+ *
+ * Returns the key of the object in the dictionary
+ * On Error, returns 0 (which also means nothing can be stored at 0)
+ */
+
+int
+storeObject_Lib(RpLibrary* objectName, int key) {
+
+    int retVal = 0;
+    int dictKey = key;
+    int newEntry = 0;
+    bool ci = false;
+
+    if (objectName) {
+        // dictionary returns a reference to the inserted value
+        // no error checking to make sure it was successful in entering
+        // the new entry.
+
+        if (dictKey == 0) {
+            dictKey = ObjDict_Lib.size() + 1;
+        }
+        long int dictKey_long = dictKey;
+        ObjDict_Lib.set(dictKey_long,objectName,NULL,&newEntry,ci);
+        retVal = dictKey;
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: getObject_Lib()
+/// Get an object from the library dictionary.
+/**
+ * This function retrieves the RpLibrary object associated with the key
+ * 'objKey' from the library dictionary and returns its address to the
+ * caller. This is helpful for writing bindings for languages that can
+ * not accept pointers to provide back to the function's caller.
+ *
+ * Returns the address of the RpLibrary object in the dictionary
+ */
+
+RpLibrary*
+getObject_Lib(int objKey) {
+
+
+    RpDictEntry DICT_TEMPLATE_L* libEntry = &(ObjDict_Lib.getNullEntry());
+    RpDictEntry DICT_TEMPLATE_L* nullEntry = &(ObjDict_Lib.getNullEntry());
+
+    long int objKey_long = objKey;
+    libEntry = &(ObjDict_Lib.find(objKey_long));
+
+
+    if ( (!libEntry->isValid()) || (libEntry == nullEntry) ) {
+        return NULL;
+    }
+
+   return *(libEntry->getValue());
+
+}
+
+/**********************************************************************/
+// FUNCTION: cleanLibDict()
+/// Clean the library dictionary, removing all entries in the dictionary
+/**
+ * This function removes all entries from the library dictionary.
+ *
+ * \sa {storeObject_Lib,getObject_Lib}
+ */
+
+void
+cleanLibDict () {
+    RpDictEntry DICT_TEMPLATE_L *hPtr;
+    // should rp_quit clean up the dict or some function in RpBindingsCommon.h
+    RpDictIterator DICT_TEMPLATE_L iter(ObjDict_Lib);
+
+    hPtr = iter.first();
+
+    while (hPtr) {
+        hPtr->erase();
+        hPtr = iter.next();
+    }
+
+    if (ObjDict_Lib.size()) {
+        // probably want to change the warning sometime
+        // printf("\nWARNING: internal dictionary is not empty..deleting\n");
+    }
+
+}
+
+/**********************************************************************/
+// FUNCTION: storeObject_UnitsStr()
+/// Store an object into the UnitsStr dictionary.
+/**
+ * This function stores the RpUnits names specified by 'objectName'
+ * into the UnitsStr dictionary. This is helpful for writing bindings
+ * for languages that can not accept pointers to provide back to the
+ * function's caller.
+ *
+ * Returns the key of the object in the dictionary
+ */
+
+int
+storeObject_UnitsStr(std::string objectName) {
+
+    int retVal = -1;
+    int dictNextKey = ObjDictUnits.size() + 1;
+    int newEntry = 0;
+    bool ci = false;
+
+    if (objectName != "") {
+        // dictionary returns a reference to the inserted value
+        // no error checking to make sure it was successful in entering
+        // the new entry.
+        long int dictNextKey_long = dictNextKey;
+        ObjDictUnits.set(dictNextKey_long,objectName,NULL,&newEntry,ci);
+        retVal = dictNextKey;
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: getObject_UnitsStr()
+/// Get an object from the UnitsStr dictionary.
+/**
+ * This function retrieves the RpUnits name referenced to by 'objKey'
+ * from the UnitsStr dictionary. This is helpful for writing bindings
+ * for languages that can not accept pointers to provide back to the
+ * function's caller.
+ *
+ * Returns the key of the object in the dictionary
+ */
+
+const RpUnits*
+getObject_UnitsStr(int objKey) {
+
+    RpDictEntry DICT_TEMPLATE_U* unitEntry = &(ObjDictUnits.getNullEntry());
+    RpDictEntry DICT_TEMPLATE_U* nullEntry = &(ObjDictUnits.getNullEntry());
+
+    long int objKey_long = objKey;
+    unitEntry = &(ObjDictUnits.find(objKey_long));
+
+
+    if ( (!unitEntry->isValid()) || (unitEntry == nullEntry) ) {
+        return NULL;
+    }
+
+    return RpUnits::find(*(unitEntry->getValue()));
+
+}
+
+/**********************************************************************/
+// FUNCTION: cleanUnitsDict()
+/// Clean the UnitsStr dictionary, removing all entries.
+/**
+ * This function removes all entries from the UnitsStr dictionary
+ *
+ * \sa {storeObject_UnitsStr,getObject_UnitsStr}
+ */
+
+void
+cleanUnitsDict () {
+    RpDictEntry DICT_TEMPLATE_U *hPtr;
+    // should rp_quit clean up the dict or some function in RpBindingsCommon.h
+    RpDictIterator DICT_TEMPLATE_U iter(ObjDictUnits);
+
+    hPtr = iter.first();
+
+    while (hPtr) {
+        hPtr->erase();
+        hPtr = iter.next();
+    }
+
+    if (ObjDictUnits.size()) {
+        // probably want to change the warning sometime
+        // printf("\nWARNING: internal dictionary is not empty..deleting\n");
+    }
+}
+
+/**********************************************************************/
+// FUNCTION: storeObject_Void()
+/// Store an object into the general dictionary.
+/**
+ * This function stores a void* object pointed to by 'objectName'
+ * into the general dictionary. This is helpful for writing bindings
+ * for languages that can not accept pointers to provide back to the
+ * function's caller.
+ *
+ * Returns the key of the object in the dictionary
+ * On Error, returns 0 (which also means nothing can be stored at 0)
+ */
+
+size_t
+storeObject_Void(void* objectName, size_t key) {
+
+    size_t retVal = 0;
+    size_t dictKey = key;
+    int newEntry = 0;
+    bool ci = false;
+
+    if (objectName) {
+        // dictionary returns a reference to the inserted value
+        // no error checking to make sure it was successful in entering
+        // the new entry.
+
+        if (dictKey == 0) {
+            dictKey = ObjDict_Void.size() + 1;
+        }
+        ObjDict_Void.set(dictKey,objectName,NULL,&newEntry,ci);
+        retVal = dictKey;
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: getObject_Void()
+/// Get an object from the general dictionary.
+/**
+ * This function retrieves the void* object associated with the key
+ * 'objKey' from the general dictionary and returns its address to the
+ * caller. This is helpful for writing bindings for languages that can
+ * not accept pointers to provide back to the function's caller.
+ *
+ * Returns the address of the void* object in the dictionary
+ */
+
+void*
+getObject_Void(size_t objKey) {
+
+    RpDictEntry DICT_TEMPLATE_V* voidEntry = &(ObjDict_Void.getNullEntry());
+    RpDictEntry DICT_TEMPLATE_V* nullEntry = &(ObjDict_Void.getNullEntry());
+
+    voidEntry = &(ObjDict_Void.find(objKey));
+
+    if ( (!voidEntry->isValid()) || (voidEntry == nullEntry) ) {
+        return NULL;
+    }
+
+   return *(voidEntry->getValue());
+
+}
+
+/**********************************************************************/
+// FUNCTION: cleanVoidDict()
+/// Clean the library dictionary, removing all entries in the dictionary
+/**
+ * This function removes all entries from the library dictionary.
+ *
+ * \sa {storeObject_Lib,getObject_Lib}
+ */
+
+void
+cleanVoidDict () {
+    RpDictEntry DICT_TEMPLATE_V *hPtr;
+    // should rp_quit clean up the dict or some function in RpBindingsCommon.h
+    RpDictIterator DICT_TEMPLATE_V iter(ObjDict_Void);
+
+    hPtr = iter.first();
+
+    while (hPtr) {
+        hPtr->erase();
+        hPtr = iter.next();
+    }
+
+    if (ObjDict_Lib.size()) {
+        // probably want to change the warning sometime
+        // printf("\nWARNING: internal dictionary is not empty..deleting\n");
+    }
+
+}
+
Index: /tags/1.6.0/src/core/RpBindingsDict.h
===================================================================
--- /tags/1.6.0/src/core/RpBindingsDict.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpBindingsDict.h	(revision 6168)
@@ -0,0 +1,59 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Common Rappture Dictionary Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RpBINDINGS_DICT_H
+#define _RpBINDINGS_DICT_H
+
+#include "RpDict.h"
+#include "RpUnits.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// forward declarations so we can compile the object file
+class RpLibrary;
+/*
+class RpUnits;
+*/
+
+#define DICT_TEMPLATE_L <long,RpLibrary*>
+#define DICT_TEMPLATE_U <long,std::string>
+#define DICT_TEMPLATE_V <size_t,void*>
+
+// global declaration of library and units dictionaries
+// for languages that cannot return rappture objects.
+// (fortran, matlab, ...)
+
+extern RpDict DICT_TEMPLATE_L ObjDict_Lib;
+extern RpDict DICT_TEMPLATE_U ObjDictUnits;
+extern RpDict DICT_TEMPLATE_V ObjDict_Void;
+
+
+int storeObject_Lib(RpLibrary* objectName, int key=0);
+int storeObject_UnitsStr(std::string objectName);
+size_t storeObject_Void(void* objectName, size_t key=0);
+
+RpLibrary* getObject_Lib(int objKey);
+const RpUnits* getObject_UnitsStr(int objKey);
+void* getObject_Void(size_t objKey);
+
+void cleanLibDict();
+void cleanUnitsDict();
+void cleanVoidDict();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _RpBINDINGS_DICT_H
Index: /tags/1.6.0/src/core/RpBuffer.cc
===================================================================
--- /tags/1.6.0/src/core/RpBuffer.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpBuffer.cc	(revision 6168)
@@ -0,0 +1,448 @@
+/*
+ * ======================================================================
+ *  Rappture::Buffer
+ *
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fstream>
+#include <zlib.h>
+#include "b64/encode.h"
+#include "b64/decode.h"
+#include "RpBuffer.h"
+#include "RpEncode.h"
+
+namespace Rappture {
+
+/**
+ * Construct an empty Buffer.
+ */
+Buffer::Buffer()
+  : SimpleCharBuffer(),
+    _level(6),
+    _compressionType(RPCOMPRESS_GZIP),
+    _windowBits(15)
+{}
+
+/**
+ * Construct an empty Buffer of specified size.
+ */
+Buffer::Buffer(int nbytes)
+  : SimpleCharBuffer(nbytes),
+    _level(6),
+    _compressionType(RPCOMPRESS_GZIP),
+    _windowBits(15)
+{}
+
+/**
+ * Construct a Buffer loaded with initial data.
+ *
+ * @param bytes pointer to bytes being stored.
+ * @param nbytes number of bytes being stored.
+ */
+Buffer::Buffer(const char* bytes, int nbytes)
+  : SimpleCharBuffer(bytes,nbytes),
+    _level(6),
+    _compressionType(RPCOMPRESS_GZIP),
+    _windowBits(15)
+{}
+
+/**
+ * Copy constructor
+ * @param Buffer object to copy
+ */
+Buffer::Buffer(const Buffer& b)
+  : SimpleCharBuffer(b),
+    _level(b._level),
+    _compressionType(b._compressionType),
+    _windowBits(b._windowBits)
+{}
+
+/**
+ * Assignment operator
+ * @param Buffer object to copy
+ */
+Buffer&
+Buffer::operator=(const Buffer& b)
+{
+    SimpleCharBuffer::operator=(b);
+
+    _level = b._level;
+    _compressionType = b._compressionType;
+    _windowBits = b._windowBits;
+
+    return *this;
+}
+
+Buffer
+Buffer::operator+(const Buffer& b) const
+{
+    Buffer newBuffer(*this);
+    newBuffer.operator+=(b);
+    return newBuffer;
+}
+
+Buffer&
+Buffer::operator+=(const Buffer& b)
+{
+    SimpleCharBuffer::operator+=(b);
+    return *this;
+}
+
+Buffer::~Buffer()
+{}
+
+bool
+Buffer::load (Outcome &status, const char *path)
+{
+    status.addContext("Rappture::Buffer::load()");
+
+    FILE *f;
+    f = fopen(path, "rb");
+    if (f == NULL) {
+        status.addError("can't open \"%s\": %s", path, strerror(errno));
+        return false;
+    }
+
+    struct stat stat;
+    if (fstat(fileno(f), &stat) < 0) {
+        status.addError("can't stat \"%s\": %s", path, strerror(errno));
+        return false;
+    }
+
+    size_t oldSize, numBytesRead;
+
+    // Save the # of elements in the current buffer.
+    oldSize = count();
+
+    // Extend the buffer to accomodate the file contents.
+    if (extend(stat.st_size) == 0) {
+        status.addError("can't allocate %d bytes for file \"%s\": %s",
+		stat.st_size, path, strerror(errno));
+        fclose(f);
+        return false;
+    }	
+    // Read the file contents directly onto the end of the old buffer.
+    numBytesRead = fread((char *)bytes() + oldSize, sizeof(char),
+	stat.st_size, f);
+    fclose(f);
+    if (numBytesRead != (size_t)stat.st_size) {
+	status.addError("can't read %ld bytes from \"%s\": %s", stat.st_size,
+			path, strerror(errno));
+	return false;
+    }
+    // Reset the # of elements in the buffer to the new count.
+    count(stat.st_size + oldSize);
+    return true;
+}
+
+bool
+Buffer::dump(Outcome &status, const char* path)
+{
+    status.addContext("Rappture::Buffer::dump()");
+
+    FILE *f;
+    f = fopen(path, "wb");
+    if (f == NULL) {
+        status.addError("can't open \"%s\": %s\n", path, strerror(errno));
+        return false;
+    }
+    ssize_t nWritten;
+    nWritten = fwrite(bytes(), sizeof(char), size(), f);
+    fclose(f);                        // Close the file.
+
+    if (nWritten != (ssize_t)size()) {
+        status.addError("can't write %d bytes to \"%s\": %s\n", size(),
+                        path, strerror(errno));
+        return false;
+    }
+    return true;
+}
+
+bool
+Buffer::encode(Outcome &status, unsigned int flags)
+{
+    SimpleCharBuffer bout;
+
+    rewind();
+
+    switch (flags & (RPENC_Z | RPENC_B64)) {
+    case 0:
+        break;
+
+    case RPENC_Z:                // Compress only
+        if (!do_compress(status, *this, bout)) {
+            return false;
+        }
+        move(bout);
+        break;
+
+    case RPENC_B64:                // Encode only
+        if (!do_base64_enc(status, *this, bout)) {
+            return false;
+        }
+        move(bout);
+        break;
+
+    case (RPENC_B64 | RPENC_Z):
+
+        // It's always compress then encode
+        if (!do_compress(status, *this, bout)) {
+            return false;
+        }
+        if (!do_base64_enc(status, bout, *this)) {
+            return false;
+        }
+        break;
+    }
+    return true;
+}
+
+bool
+Buffer::decode(Outcome &status, unsigned int flags)
+{
+    SimpleCharBuffer bout;
+
+    rewind();
+
+    switch (flags & (RPENC_Z | RPENC_B64)) {
+    case 0:
+        if (encoding::isBase64(bytes(), size())) {
+            if (!do_base64_dec(status, *this, bout)) {
+                return false;
+            }
+            move(bout);
+        }
+        bout.clear();
+        if (encoding::isBinary(bytes(), size())) {
+            if (!do_decompress(status, *this, bout)) {
+                return false;
+            }
+            move(bout);
+        }
+        break;
+
+    case RPENC_Z:                // Decompress only
+        if (!do_decompress(status, *this, bout)) {
+            return false;
+        }
+        move(bout);
+        break;
+
+    case RPENC_B64:                // Decode only
+        if (!do_base64_dec(status, *this, bout)) {
+            return false;
+        }
+        move(bout);
+        break;
+
+    case (RPENC_B64 | RPENC_Z):
+
+        // It's always decode then decompress
+        if (!do_base64_dec(status, *this, bout)) {
+            return false;
+        }
+        clear();
+        if (!do_decompress(status, bout, *this)) {
+            return false;
+        }
+        break;
+    }
+    return true;
+}
+
+bool
+Buffer::do_compress(Outcome& status, SimpleCharBuffer& bin,
+                    SimpleCharBuffer& bout)
+{
+    int ret=0, flush=0;
+    z_stream strm;
+
+    char in[CHUNK];
+    char out[CHUNK];
+
+    /* allocate deflate state */
+    strm.zalloc = Z_NULL;
+    strm.zfree = Z_NULL;
+    strm.opaque = Z_NULL;
+
+    status.addContext("Rappture::Buffer::do_compress()");
+
+    ret = deflateInit2( &strm, _level, Z_DEFLATED,
+                        _windowBits+_compressionType,
+                        8, Z_DEFAULT_STRATEGY);
+
+    if (ret != Z_OK) {
+        status.addError("error while initializing zlib stream object");
+        return false;
+    }
+
+    /* compress until end of file */
+    do {
+        strm.avail_in = bin.read(in, CHUNK);
+        if (bin.bad() == true) {
+            (void)deflateEnd(&strm);
+            // return Z_ERRNO;
+            status.addError("error while compressing");
+            return false;
+        }
+        flush = bin.eof() ? Z_FINISH : Z_NO_FLUSH;
+        strm.next_in = (Bytef*) in;
+        /* run deflate() on input until output buffer not full, finish
+           compression if all of source has been read in */
+        do {
+            strm.avail_out = CHUNK;
+            strm.next_out = (Bytef*) out;
+            ret = deflate(&strm, flush);    /* no bad return value */
+            assert(ret != Z_STREAM_ERROR);  /* state not clobbered */
+
+	    int have;
+            have = CHUNK - strm.avail_out;
+            /* write to file and check for error */
+            if ((have > 0) && (bout.append(out, have) == 0)) {
+                (void)deflateEnd(&strm);
+                bout.clear();
+                // return Z_ERRNO;
+                status.addError("error writing compressed data to temp buffer numBytes=%d", have);
+                return false;
+            }
+
+        } while (strm.avail_out == 0);
+        assert(strm.avail_in == 0);     /* all input will be used */
+
+        /* done when last data in file processed */
+    } while (flush != Z_FINISH);
+
+    assert(ret == Z_STREAM_END);        /* stream will be complete */
+
+    /* clean up and return */
+    (void)deflateEnd(&strm);
+    // return Z_OK;
+    return true;
+}
+
+bool
+Buffer::do_decompress(Outcome& status, SimpleCharBuffer& bin,
+                      SimpleCharBuffer& bout)
+{
+    int ret;
+    unsigned have;
+    z_stream strm;
+
+    char in[CHUNK];
+    char out[CHUNK];
+
+    int bytesWritten = 0;
+
+    status.addContext("Rappture::Buffer::do_decompress()");
+
+    /* allocate inflate state */
+    strm.zalloc = Z_NULL;
+    strm.zfree = Z_NULL;
+    strm.opaque = Z_NULL;
+    strm.avail_in = 0;
+    strm.next_in = Z_NULL;
+    ret = inflateInit2(&strm,_windowBits+_compressionType);
+    if (ret != Z_OK) {
+        status.addError("error while initializing zlib stream object");
+        return false;
+    }
+
+    /* decompress until deflate stream ends or end of file */
+    do {
+        strm.avail_in = bin.read(in, CHUNK);
+        if (bin.bad() == true) {
+            (void)inflateEnd(&strm);
+            // return Z_ERRNO;
+            status.addError("error while compressing");
+            return false;
+        }
+        if (strm.avail_in == 0)
+            break;
+        strm.next_in = (unsigned char*) in;
+        /* run inflate() on input until output buffer not full */
+        do {
+            strm.avail_out = CHUNK;
+            strm.next_out = (unsigned char*) out;
+            ret = inflate(&strm, Z_NO_FLUSH);
+            assert(ret != Z_STREAM_ERROR);  /* state not clobbered */
+            switch (ret) {
+            case Z_NEED_DICT:
+                ret = Z_DATA_ERROR;     /* and fall through */
+            case Z_DATA_ERROR:
+            case Z_MEM_ERROR:
+                (void)inflateEnd(&strm);
+                bout.clear();
+                status.addError("memory error while inflating data");
+                return false;
+            }
+            have = CHUNK - strm.avail_out;
+            bytesWritten = bout.append(out, have);
+            if ( ( (unsigned) bytesWritten != have) ) {
+                (void)inflateEnd(&strm);
+                bout.clear();
+                // return Z_ERRNO;
+                status.addError("error writing compressed data to temp buffer");
+                return false;
+            }
+        } while (strm.avail_out == 0);
+
+        /* done when inflate() says it's done */
+    } while (ret != Z_STREAM_END);
+
+    /* clean up and return */
+    (void)inflateEnd(&strm);
+    // return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR;
+    return true;
+}
+
+bool
+Buffer::do_base64_enc(Outcome& status, const SimpleCharBuffer& bin,
+                      SimpleCharBuffer& bout )
+{
+    int tBufSize = 0;
+    unsigned int tBufAvl = 2*bin.size();
+    char* tBuf = new char[tBufAvl];
+
+    base64::encoder E;
+
+    tBufSize = E.encode(bin.bytes(),bin.size(),tBuf);
+    tBufSize += E.encode_end(tBuf+tBufSize);
+
+    bout = SimpleCharBuffer(tBuf,tBufSize);
+    delete [] tBuf;
+
+    return true;
+}
+
+bool
+Buffer::do_base64_dec(Outcome& status, const SimpleCharBuffer& bin,
+                      SimpleCharBuffer& bout )
+{
+    int tBufSize = 0;
+    unsigned int tBufAvl = bin.size();
+    char* tBuf = new char[tBufAvl];
+
+    base64::decoder D;
+
+    tBufSize = D.decode(bin.bytes(),bin.size(),tBuf);
+
+    bout = SimpleCharBuffer(tBuf,tBufSize);
+    delete [] tBuf;
+
+    return true;
+}
+
+}
Index: /tags/1.6.0/src/core/RpBuffer.h
===================================================================
--- /tags/1.6.0/src/core/RpBuffer.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpBuffer.h	(revision 6168)
@@ -0,0 +1,90 @@
+/*
+ * ======================================================================
+ *  Rappture::Buffer
+ *
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef RAPPTURE_BUFFER_H
+#define RAPPTURE_BUFFER_H
+
+#include <RpOutcome.h>
+#include <RpSimpleBuffer.h>
+
+enum RapptureEncodingFlags {
+    RPENC_Z=(1<<0),
+    RPENC_B64=(1<<1),
+    RPENC_HDR=(1<<2),
+    RPENC_RAW=(1<<3)
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif // ifdef __cplusplus
+
+enum RP_COMPRESS_CONSTS {
+    RPCOMPRESS_ZLIB      = 0,
+    RPCOMPRESS_GZIP      = 16
+};
+
+namespace Rappture {
+
+/**
+ * Block of memory that dynamically resizes itself as needed.
+ * The buffer also allows caller to massage the data it holds
+ * with functionallity including gzip compression based on zlib
+ * and base64 encoding based on libb64.
+ */
+
+class Buffer : public SimpleCharBuffer {
+public:
+    Buffer();
+    Buffer(int nbytes);
+    Buffer(const char* bytes, int nbytes=-1);
+    Buffer(const Buffer& buffer);
+    Buffer& operator=(const Buffer& b);
+    Buffer  operator+(const Buffer& b) const;
+    Buffer& operator+=(const Buffer& b);
+    virtual ~Buffer();
+
+    bool load(Outcome &result, const char* filePath);
+    bool dump(Outcome &result, const char* filePath);
+    bool encode(Outcome &result, unsigned int flags = RPENC_Z | RPENC_B64);
+    bool decode(Outcome &result, unsigned int flags = RPENC_Z | RPENC_B64);
+
+protected:
+
+    /// Compression level for the zlib functions
+    int _level;
+
+    /// compression type for the zlib functions.
+    int _compressionType;
+
+    /// number of window bits, adjusts speed of compression
+    int _windowBits;
+
+    enum { CHUNK = 4096 };
+
+    bool do_compress(Outcome& status, SimpleCharBuffer& bin,
+                     SimpleCharBuffer& bout);
+    bool do_decompress(Outcome& status, SimpleCharBuffer& bin,
+                       SimpleCharBuffer& bout);
+    bool do_base64_enc(Outcome& status, const SimpleCharBuffer& bin,
+                       SimpleCharBuffer& bout);
+    bool do_base64_dec(Outcome& status, const SimpleCharBuffer& bin,
+                       SimpleCharBuffer& bout);
+};
+
+} // namespace Rappture
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
+#endif // RAPPTURE_BUFFER_H
Index: /tags/1.6.0/src/core/RpBufferCHelper.h
===================================================================
--- /tags/1.6.0/src/core/RpBufferCHelper.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpBufferCHelper.h	(revision 6168)
@@ -0,0 +1,27 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Rappture Buffer C Helper Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RAPPTURE_BUFFER_C_HELPER_H
+#define _RAPPTURE_BUFFER_C_HELPER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif // ifdef __cplusplus
+
+int RpBufferToCBuffer(Rappture::Buffer* rpbuf, RapptureBuffer* buf);
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RAPPTURE_BUFFER_C_HELPER_H
Index: /tags/1.6.0/src/core/RpBufferCInterface.cc
===================================================================
--- /tags/1.6.0/src/core/RpBufferCInterface.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpBufferCInterface.cc	(revision 6168)
@@ -0,0 +1,292 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: C Rappture Buffer Interface Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpBuffer.h"
+#include "RpBufferCInterface.h"
+#include "RpOutcomeCHelper.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int
+RapptureBufferInit(RapptureBuffer* buf)
+{
+    if (buf == NULL) {
+        return -1;
+    }
+
+    buf->_buf   = NULL;
+
+    return 0;
+}
+
+int
+RapptureBufferNew(RapptureBuffer* buf)
+{
+    if (buf == NULL) {
+        return -1;
+    }
+
+    RapptureBufferFree(buf);
+    buf->_buf   = (void*) new Rappture::Buffer();
+
+    return 0;
+}
+
+int
+RapptureBufferFree(RapptureBuffer* buf)
+{
+    if (buf->_buf != NULL) {
+        delete ((Rappture::Buffer*)buf->_buf);
+        buf->_buf = NULL;
+    }
+
+    return 0;
+}
+
+int
+RpBufferToCBuffer(Rappture::Buffer* rpbuf, RapptureBuffer* buf)
+{
+    if (rpbuf == NULL) {
+        return -1;
+    }
+
+    if (buf == NULL) {
+        return -1;
+    }
+
+    RapptureBufferFree(buf);
+    buf->_buf   = (void*) new Rappture::Buffer(*rpbuf);
+
+    return 0;
+}
+
+const char*
+RapptureBufferBytes(RapptureBuffer* buf)
+{
+    const char* retVal = NULL;
+
+    if (buf == NULL) {
+        return retVal;
+    }
+
+    if (buf->_buf == NULL) {
+        return retVal;
+    }
+
+    return ((Rappture::Buffer*)buf->_buf)->bytes();
+}
+
+unsigned int
+RapptureBufferSize(RapptureBuffer* buf)
+{
+    unsigned int retVal = 1;
+
+    if (buf == NULL) {
+        return retVal;
+    }
+
+    if (buf->_buf == NULL) {
+        return retVal;
+    }
+
+    return ((Rappture::Buffer*)buf->_buf)->size();
+}
+
+int
+RapptureBufferAppend(RapptureBuffer* buf, const char* bytes, int size)
+{
+    int retVal = 1;
+
+    if (buf == NULL) {
+        return retVal;
+    }
+
+    if (buf->_buf == NULL) {
+        return retVal;
+    }
+
+    return ((Rappture::Buffer*)buf->_buf)->append(bytes,size);
+}
+
+int
+RapptureBufferRead(RapptureBuffer* buf, const char* bytes, int size)
+{
+    int retVal = 1;
+
+    if (buf == NULL) {
+        return retVal;
+    }
+
+    if (buf->_buf == NULL) {
+        return retVal;
+    }
+
+    return ((Rappture::Buffer*)buf->_buf)->read(bytes,size);
+}
+
+int
+RapptureBufferSeek(RapptureBuffer* buf, int offset, int whence)
+{
+    int retVal = 1;
+
+    if (buf == NULL) {
+        return retVal;
+    }
+
+    if (buf->_buf == NULL) {
+        return retVal;
+    }
+
+    return ((Rappture::Buffer*)buf->_buf)->seek(offset,whence);
+}
+
+int
+RapptureBufferTell(RapptureBuffer* buf)
+{
+    int retVal = 1;
+
+    if (buf == NULL) {
+        return retVal;
+    }
+
+    if (buf->_buf == NULL) {
+        return retVal;
+    }
+
+    return ((Rappture::Buffer*)buf->_buf)->tell();
+}
+
+RapptureOutcome
+RapptureBufferLoad(RapptureBuffer* buf, const char* filename)
+{
+    Rappture::Outcome s;
+    RapptureOutcome status;
+
+    RapptureOutcomeInit(&status);
+
+    if (buf == NULL) {
+        s.error("invalid parameter: buf == NULL");
+        s.addContext("while in RapptureBufferLoad()");
+        RpOutcomeToCOutcome(&s,&status);
+        return status;
+    }
+
+    if (buf->_buf == NULL) {
+        s.error("uninitialized parameter: buf, did you call RapptureBufferInit()?");
+        s.addContext("while in RapptureBufferLoad()");
+        RpOutcomeToCOutcome(&s,&status);
+        return status;
+    }
+
+    ((Rappture::Buffer*)buf->_buf)->load(s, filename);
+    RpOutcomeToCOutcome(&s,&status);
+    return status;
+}
+
+RapptureOutcome
+RapptureBufferDump(RapptureBuffer* buf, const char* filename)
+{
+    Rappture::Outcome s;
+    RapptureOutcome status;
+
+    s.addContext("while in RapptureBufferLoad()");
+    RapptureOutcomeInit(&status);
+
+    if (buf == NULL) {
+        s.error("invalid parameter: buf == NULL");
+        RpOutcomeToCOutcome(&s,&status);
+        return status;
+    }
+
+    if (buf->_buf == NULL) {
+        s.error("uninitialized parameter: buf, did you call RapptureBufferInit()?");
+        RpOutcomeToCOutcome(&s,&status);
+        return status;
+    }
+
+    ((Rappture::Buffer*)buf->_buf)->dump(s, filename);
+    RpOutcomeToCOutcome(&s,&status);
+    return status;
+}
+
+RapptureOutcome
+RapptureBufferEncode(RapptureBuffer* buf, int compress, int base64)
+{
+    Rappture::Outcome s;
+    RapptureOutcome status;
+
+    RapptureOutcomeInit(&status);
+    s.addContext("while in RapptureBufferLoad()");
+    if (buf == NULL) {
+        s.error("invalid parameter: buf == NULL");
+        RpOutcomeToCOutcome(&s,&status);
+        return status;
+    }
+
+    if (buf->_buf == NULL) {
+        s.error("uninitialized parameter: buf, did you call RapptureBufferInit()?");
+        RpOutcomeToCOutcome(&s, &status);
+        return status;
+    }
+    unsigned int flags;
+    flags = RPENC_HDR;
+    if (compress) {
+	flags |= RPENC_Z;
+    }
+    if (base64) {
+	flags |= RPENC_B64;
+    }
+    ((Rappture::Buffer*)buf->_buf)->encode(s, flags);
+    RpOutcomeToCOutcome(&s,&status);
+    return status;
+}
+
+RapptureOutcome
+RapptureBufferDecode(RapptureBuffer* buf, int decompress, int base64)
+{
+    Rappture::Outcome s;
+    RapptureOutcome status;
+
+    RapptureOutcomeInit(&status);
+
+    if (buf == NULL) {
+        s.error("invalid parameter: buf == NULL");
+        s.addContext("while in RapptureBufferLoad()");
+        RpOutcomeToCOutcome(&s,&status);
+        return status;
+    }
+
+    if (buf->_buf == NULL) {
+        s.error("uninitialized parameter: buf, did you call RapptureBufferInit()?");
+        s.addContext("while in RapptureBufferLoad()");
+        RpOutcomeToCOutcome(&s,&status);
+        return status;
+    }
+    unsigned int flags;
+    flags = 0;
+    if (decompress) {
+	flags |= RPENC_Z;
+    }
+    if (base64) {
+	flags |= RPENC_B64;
+    }
+    ((Rappture::Buffer*)buf->_buf)->decode(s, flags);
+    RpOutcomeToCOutcome(&s,&status);
+    return status;
+}
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
Index: /tags/1.6.0/src/core/RpBufferCInterface.h
===================================================================
--- /tags/1.6.0/src/core/RpBufferCInterface.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpBufferCInterface.h	(revision 6168)
@@ -0,0 +1,61 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: C Rappture Buffer Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RAPPTURE_BUFFER_C_H
+#define _RAPPTURE_BUFFER_C_H
+
+#include "RpOutcomeCInterface.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif // ifdef __cplusplus
+
+typedef struct {
+    void* _buf;
+    /*
+    const char* (*bytes)();
+    unsigned int (*size)();
+    // void (*clear)();
+    int (*append)(const char*, int);
+    int (*read)(const char*, int);
+    int (*seek)(int, int);
+    int (*tell)();
+    // void (*rewind);
+    bool (*load)(Outcome &result, const char*);
+    bool (*dump)(Outcome &result, const char*);
+    bool (*encode)(Outcome &result, bool, bool);
+    bool (*decode)(Outcome &result, bool, bool);
+    */
+} RapptureBuffer;
+
+int RapptureBufferInit(RapptureBuffer* buf);
+int RapptureBufferNew(RapptureBuffer* buf);
+int RapptureBufferFree(RapptureBuffer* buf);
+const char* RapptureBufferBytes(RapptureBuffer* buf);
+unsigned int RapptureBufferSize(RapptureBuffer* buf);
+int RapptureBufferAppend(RapptureBuffer* buf, const char* bytes, int size);
+int RapptureBufferRead(RapptureBuffer* buf, const char* bytes, int size);
+int RapptureBufferSeek(RapptureBuffer* buf, int offset, int whence);
+int RapptureBufferTell(RapptureBuffer* buf);
+RapptureOutcome RapptureBufferLoad(RapptureBuffer* buf, const char* filename);
+RapptureOutcome RapptureBufferDump(RapptureBuffer* buf, const char* filename);
+RapptureOutcome RapptureBufferEncode(RapptureBuffer* buf, int compress,
+                                     int base64);
+RapptureOutcome RapptureBufferDecode(RapptureBuffer* buf,
+                                     int decompress, int base64);
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RAPPTURE_BUFFER_C_H
Index: /tags/1.6.0/src/core/RpBuffer_test.cc
===================================================================
--- /tags/1.6.0/src/core/RpBuffer_test.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpBuffer_test.cc	(revision 6168)
@@ -0,0 +1,540 @@
+#include <iostream>
+#include <fstream>
+#include "RpBuffer.h"
+
+#define BUFF 30
+
+int
+testInit()
+{
+    int passed = 0;
+    int tests = 0;
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer *buffer1 = NULL;
+    buffer1 = new Rappture::Buffer();
+
+    if ( (buffer1 != NULL) &&
+         (buffer1->size() == 0) ) {
+        passed++;
+        delete buffer1;
+    }
+    else {
+        delete buffer1;
+        printf("Error testInit: test1");
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer2;
+    if (buffer2.size() == 0) {
+        passed++;
+    }
+    else {
+        printf("Error testInit: test2");
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer3 = Rappture::Buffer("hi my name is derrick",22);
+    if (buffer3.size() == 22) {
+        passed++;
+    }
+    else {
+        printf("Error testInit: test3");
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer4 = Rappture::Buffer("hi my name is derrick",-1);
+    if (buffer4.size() == 21) {
+        passed++;
+    }
+    else {
+        printf("Error testInit: test4");
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer5 = Rappture::Buffer("hi my name is derrick");
+    if (buffer5.size() == 21) {
+        passed++;
+    }
+    else {
+        printf("Error testInit: test5");
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer6 = Rappture::Buffer("hi my name is derrick");
+    Rappture::Buffer buffer7 = buffer6;
+    if ( (buffer6.size() == 21) && (buffer7.size() == buffer6.size()) ) {
+        passed++;
+    }
+    else {
+        printf("Error testInit: test6");
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer8 = Rappture::Buffer("hi my name is derrick");
+    Rappture::Buffer buffer9 = Rappture::Buffer(buffer8);
+    if ( (buffer8.size() == 21) &&
+         (buffer9.size() == buffer8.size()) &&
+         (buffer8.bytes() != buffer9.bytes()) ) {
+        passed++;
+    }
+    else {
+        printf("Error testInit: test7");
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer10 = Rappture::Buffer("hi my name is derrickhi my name is derrickhi my name is derrickhi my name is derrickhi my name is derrickhi my name is derrickhi my name is derrickhi my name is derrickhi my name is derrickhi my name is derrick");
+    Rappture::Buffer buffer11 = Rappture::Buffer(buffer10);
+    if ( (buffer10.size() == 210) &&
+         (buffer10.size() == buffer11.size()) &&
+         (buffer10.bytes() != buffer11.bytes()) ) {
+        passed++;
+    }
+    else {
+        printf("Error testInit: test8");
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    return (tests == passed);
+}
+
+int testAppend()
+{
+    int passed = 0;
+    int tests = 0;
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer1;
+    buffer1.append("hi my name is derrick",21);
+    if (buffer1.size() == 21) {
+        passed++;
+    }
+    else {
+        printf("Error testAppend: length1 = %d\n",buffer1.size());
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer2 = Rappture::Buffer("hi my name is derrick",190);
+    buffer2.append("adding more text to the buffer",30);
+    if (buffer2.size() == 220) {
+        passed++;
+        // printDBufferDetails(dbPtr);
+    }
+    else {
+        printf("Error testAppend: length2 = %d\n",buffer2.size());
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    /* =========================================================== */
+
+    return (tests == passed);
+}
+
+int testRead()
+{
+    int passed = 0;
+    int tests = 0;
+    char b[BUFF];
+    int bytesRead = 0;
+
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer1;
+    buffer1.append("abcdefghijklmnopqrstuvwxyz",26);
+    bytesRead = buffer1.read(b, BUFF);
+
+    /*
+    std::cout << "num bytes read = :" <<  bytesRead << ":" << std::endl;
+    std::cout << "value read in = :";
+    for (int i = 0; i < bytesRead; i++) {
+        std::cout << b[i];
+    }
+    std::cout << ":" << std::endl;
+    */
+
+    if (bytesRead == 26) {
+        passed++;
+    }
+    else {
+        printf("Error testRead 1\n");
+        // printDBufferDetails(dbPtr);
+        return (tests == passed);
+    }
+
+    /* =========================================================== */
+
+    return (tests == passed);
+}
+
+int testCompress()
+{
+    int passed = 0;
+    int tests = 0;
+    int bytesRead = 0;
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer1;
+    Rappture::Outcome status1;
+    buffer1.append("abcdefghijklmnopqrstuvwxyz",26);
+    buffer1.encode(status1, true, false);
+    bytesRead = buffer1.size();
+
+    // std::cout << status1.remark() << std::endl << status1.context() << std::endl;
+
+    if (bytesRead == 46) {
+        passed++;
+    }
+    else {
+        printf("Error testCompress 1\n");
+        // printDBufferDetails(dbPtr);
+        return (tests == passed);
+    }
+    /* =========================================================== */
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer2;
+    Rappture::Outcome status2;
+    buffer2.append("abcdefghijklmnopqrstuvwxyz",26);
+    buffer2.encode(status2, false, true);
+    bytesRead = buffer2.size();
+
+    // std::cout << status2.remark() << std::endl << status2.context() << std::endl;
+
+    if (bytesRead == 37) {
+        passed++;
+    }
+    else {
+        printf("Error testCompress 2\n");
+        // printDBufferDetails(dbPtr);
+        return (tests == passed);
+    }
+    /* =========================================================== */
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer3;
+    Rappture::Outcome status3;
+    buffer3.append("abcdefghijklmnopqrstuvwxyz",26);
+    buffer3.encode(status3, true, true);
+    bytesRead = buffer3.size();
+
+    // std::cout << status3.remark() << std::endl << status3.context() << std::endl;
+
+    if (bytesRead == 65) {
+        passed++;
+    }
+    else {
+        printf("Error testCompress 3\n");
+        // printDBufferDetails(dbPtr);
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    return (tests == passed);
+}
+
+int testDeCompress()
+{
+    int passed = 0;
+    int tests = 0;
+    int bytesRead = 0;
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer1;
+    Rappture::Outcome status1;
+    buffer1.append("abcdefghijklmnopqrstuvwxyz",26);
+    buffer1.encode(status1, RPENC_Z);
+    buffer1.decode(status1, RPENC_Z);
+    bytesRead = buffer1.size();
+
+    // std::cout << status1.remark() << std::endl << status1.context() << std::endl;
+
+    if (bytesRead == 26) {
+        passed++;
+    }
+    else {
+        printf("Error testDeCompress 1\n");
+        // printDBufferDetails(dbPtr);
+        return (tests == passed);
+    }
+    /* =========================================================== */
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer2;
+    Rappture::Outcome status2;
+    buffer2.append("abcdefghijklmnopqrstuvwxyz",26);
+    buffer2.encode(status2, RPENC_B64);
+    buffer2.decode(status2, RPENC_B64);
+    bytesRead = buffer2.size();
+
+    // std::cout << status2.remark() << std::endl << status2.context() << std::endl;
+
+    if (bytesRead == 26) {
+        passed++;
+    }
+    else {
+        printf("Error testDeCompress 2\n");
+        // printDBufferDetails(dbPtr);
+        return (tests == passed);
+    }
+    /* =========================================================== */
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer3;
+    Rappture::Outcome status3;
+    buffer3.append("abcdefghijklmnopqrstuvwxyz",26);
+    buffer3.encode(status3, RPENC_B64 | RPENC_Z);
+    buffer3.decode(status3, RPENC_B64 | RPENC_Z);
+    bytesRead = buffer3.size();
+
+    // std::cout << status3.remark() << std::endl << status3.context() << std::endl;
+
+    if (bytesRead == 26) {
+        passed++;
+    }
+    else {
+        printf("Error testDeCompress 3\n");
+        // printDBufferDetails(dbPtr);
+        return (tests == passed);
+    }
+    /* =========================================================== */
+
+    return (tests == passed);
+}
+
+int testDump()
+{
+    int passed = 0;
+    int tests = 0;
+
+    /* =========================================================== */
+    tests++;
+    char* filePath = "buffer1.txt";
+    Rappture::Buffer buffer1;
+    buffer1.append("abcdefghijklmnopqrstuvwxyz",26);
+    Rappture::Outcome status1;
+    buffer1.dump(status1, filePath);
+
+    std::ifstream inFile;
+    std::ifstream::pos_type size = 0;
+    char* memblock = NULL;
+
+    inFile.open(filePath, std::ios::in | std::ios::ate | std::ios::binary);
+    if (!inFile.is_open()) {
+        std::cout << "Error testDump1 1" << std::endl;
+        std::cout << "error while opening file" << std::endl;
+        return (tests == passed);
+    }
+
+    size = inFile.tellg();
+    memblock = new char [size];
+    if (memblock == NULL) {
+        std::cout << "Error testDump1 1" << std::endl;
+        std::cout << "error allocating memory" << std::endl;
+        inFile.close();
+        return (tests == passed);
+    }
+
+    inFile.seekg(0,std::ios::beg);
+    inFile.read(memblock,size);
+    inFile.close();
+
+    const char* buffer1bytes = buffer1.bytes();
+    for (int i = 0; i < size; i++) {
+        if (buffer1bytes[i] != memblock[i]) {
+            std::cout << "Error testDump1 1" << std::endl;
+            std::cout << "buffers not equal" << std::endl;
+            return (tests == passed);
+        }
+    }
+
+    delete [] memblock;
+    passed++;
+    /* =========================================================== */
+
+    return (tests == passed);
+}
+
+int testLoad()
+{
+    int passed = 0;
+    int tests = 0;
+
+    /* =========================================================== */
+    tests++;
+    char* filePath = "buffer1.txt";
+    Rappture::Buffer buffer1;
+    Rappture::Buffer buffer1out;
+    Rappture::Outcome status1;
+    buffer1.append("abcdefghijklmnopqrstuvwxyz",26);
+    buffer1.dump(status1, filePath);
+    buffer1out.load(status1, filePath);
+    int size = buffer1out.size();
+    const char* b1bytes = buffer1.bytes();
+    const char* b1obytes = buffer1out.bytes();
+
+    if (size == 0) {
+        std::cout << "Error testLoad1" << std::endl;
+        std::cout << "zero bytes read from file" << std::endl;
+        return (tests == passed);
+    }
+
+
+    for (int i = 0; i < size; i++) {
+        if (b1bytes[i] != b1obytes[i]) {
+            printf("Error testLoad1\n");
+            std::cout << "buffers not equal" << std::endl;
+            return (tests == passed);
+        }
+    }
+
+    passed++;
+    /* =========================================================== */
+
+    tests++;
+    char* filePath1 = "output.dx";
+    char* filePath2 = "output.dx.mime";
+    char* filePath3 = "output.dx.again";
+
+    Rappture::Buffer buffer2;
+    Rappture::Buffer buffer2out;
+    Rappture::Outcome status2;
+    buffer2.load(status2, filePath1);
+    buffer2.encode(status2);
+    buffer2.dump(status2, filePath2);
+
+    buffer2out.load(status2, filePath2);
+    buffer2out.decode(status2);
+    buffer2out.dump(status2, filePath3);
+
+    buffer2.clear();
+    buffer2out.clear();
+
+    passed++;
+    /* =========================================================== */
+
+    return (tests == passed);
+}
+
+int testClear()
+{
+    int passed = 0;
+    int tests = 0;
+
+
+    /* =========================================================== */
+    tests++;
+    Rappture::Buffer buffer1;
+    buffer1.append("abcdefghijklmnopqrstuvwxyz",26);
+    int size1before = buffer1.size();
+    buffer1.clear();
+    int size1after = buffer1.size();
+
+    if (size1before != 26) {
+        std::cout << "Error testClear1" << std::endl;
+        std::cout << "incorrect buffer size" << std::endl;
+        return (tests == passed);
+    }
+    if (size1after != 0) {
+        std::cout << "Error testClear1" << std::endl;
+        std::cout << "clear failed buffer size" << std::endl;
+        return (tests == passed);
+    }
+
+    passed++;
+    /* =========================================================== */
+
+    return (tests == passed);
+}
+
+int testFile()
+{
+    int passed = 0;
+    int tests = 0;
+
+    /* =========================================================== */
+    tests++;
+    const char* inFile = "out.dx";
+    const char* outFile = "out.dx.gz";
+    Rappture::Buffer buffer1;
+    Rappture::Outcome status1;
+    buffer1.load(status1, inFile);
+
+    // compress, dont encode
+    buffer1.encode(status1, RPENC_Z);
+    std::remove(outFile);
+    buffer1.dump(status1, outFile);
+    buffer1.decode(status1, RPENC_Z);
+
+    /*
+    if (size1before != 26) {
+        std::cout << "Error testClear1" << std::endl;
+        std::cout << "incorrect buffer size" << std::endl;
+        return (tests == passed);
+    }
+    if (size1after != 0) {
+        std::cout << "Error testClear1" << std::endl;
+        std::cout << "clear failed buffer size" << std::endl;
+        return (tests == passed);
+    }
+    */
+
+    passed++;
+    /* =========================================================== */
+
+    return (tests == passed);
+}
+
+int main()
+{
+    int passed = 0;
+
+    passed += testInit();
+    passed += testAppend();
+    passed += testRead();
+    passed += testCompress();
+    passed += testDeCompress();
+    passed += testDump();
+    passed += testLoad();
+    passed += testClear();
+    passed += testFile();
+
+    if (passed != 9) {
+        printf("failed: %d\n", passed);
+    }
+    else {
+        printf("sucessful\n");
+    }
+
+    return 0;
+}
Index: /tags/1.6.0/src/core/RpDXWriter.cc
===================================================================
--- /tags/1.6.0/src/core/RpDXWriter.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpDXWriter.cc	(revision 6168)
@@ -0,0 +1,356 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::DXWriter
+ *
+ *  Rappture DXWriter object for forming dx files nanovis can read
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <cmath>
+#include <cstdio>
+#include <cstdlib>
+#include <cfloat>
+#include <RpDXWriter.h>
+#include <assert.h>
+using namespace Rappture;
+
+DXWriter::DXWriter() :
+    _dataBuf(SimpleDoubleBuffer()),
+    _posBuf(SimpleDoubleBuffer()),
+    _rank(3),
+    _shape(0),
+    _positions(NULL),
+    _delta(NULL),
+    _origin(NULL)
+{
+    _delta  = (double*) malloc(_rank*_rank*sizeof(double));
+    if (_delta == NULL) {
+        fprintf(stderr,
+            "Error allocating %lu bytes, for _delta, inside DXWriter Constructor\n",
+            (unsigned long)(_rank*_rank*sizeof(double)));
+            return;
+    }
+    for (size_t j=0; j < _rank; j++) {
+        for (size_t i=0; i < _rank; i++) {
+            size_t idx = (_rank*j)+i;
+            if (j != i) {
+                _delta[idx]= 0.0f;
+            }
+            else {
+                _delta[idx] = 1.0f;
+            }
+        }
+    }
+
+    _origin = (double*) malloc(_rank*sizeof(double));
+    if (_origin == NULL) {
+        fprintf(stderr,
+            "Error allocating %lu bytes, for _origin, inside DXWriter Constructor\n",
+            (unsigned long)(_rank*sizeof(double)));
+            return;
+    }
+    for (size_t i=0; i < _rank; i++) {
+        _origin[i] = 0.0f;
+    }
+}
+
+DXWriter::DXWriter(double* data, size_t nmemb, size_t rank, size_t shape) :
+    _dataBuf(SimpleDoubleBuffer(data,nmemb)),
+    _posBuf(SimpleDoubleBuffer()),
+    _rank(rank),
+    _shape(shape),
+    _positions(NULL),
+    _delta(NULL),
+    _origin(NULL)
+{
+    _delta  = (double*) malloc(_rank*_rank*sizeof(double));
+    if (_delta == NULL) {
+        fprintf(stderr,
+            "Error allocating %lu bytes, for _delta, inside DXWriter Constructor\n",
+            (unsigned long)(_rank*_rank*sizeof(double)));
+            return;
+    }
+    for (size_t j=0; j < _rank; j++) {
+        for (size_t i=0; i < _rank; i++) {
+            size_t idx = (_rank*j)+i;
+            if (j != i) {
+                _delta[idx] = 0.0f;
+            } else {
+                _delta[idx] = 1.0f;
+            }
+        }
+    }
+
+    _origin = (double*) malloc(_rank*sizeof(double));
+    if (_origin == NULL) {
+        fprintf(stderr,
+            "Error allocating %lu bytes, for _origin, inside DXWriter Constructor\n",
+            (unsigned long)(_rank*sizeof(double)));
+            return;
+    }
+    for (size_t i=0; i < _rank; i++) {
+        _origin[i] = 0.0f;
+    }
+}
+
+DXWriter::~DXWriter()
+{
+    if (_positions) {
+        free(_positions);
+    }
+
+    if (_delta) {
+        free(_delta);
+    }
+
+    if (_origin) {
+        free(_origin);
+    }
+}
+
+DXWriter&
+DXWriter::origin(double* o)
+{
+    if (o == NULL) {
+        return *this;
+    }
+
+    size_t nbytes = _rank * sizeof(double);
+    double *tmp = (double*) malloc(nbytes);
+    if (tmp == NULL) {
+        fprintf(stderr,"Unable to malloc %lu bytes inside DXWriter::origin\n",
+            (unsigned long)nbytes);
+        return *this;
+    }
+    memcpy((void*)tmp,(void const*)o,nbytes);
+
+    if (_origin) {
+        free(_origin);
+    }
+
+    _origin = tmp;
+
+    return *this;
+}
+
+DXWriter&
+DXWriter::delta(double* d)
+{
+    if (d == NULL) {
+        return *this;
+    }
+
+    size_t nbytes = _rank * _rank * sizeof(double);
+    double *tmp = (double*)malloc(nbytes);
+    if (tmp == NULL) {
+        fprintf(stderr,"Unable to malloc %lu bytes inside DXWriter::delta\n",
+            (unsigned long)nbytes);
+        return *this;
+    }
+    memcpy((void*)tmp,(void const*)d,nbytes);
+
+    if (_delta) {
+        free(_delta);
+    }
+
+    _delta = tmp;
+
+    return *this;
+}
+
+DXWriter&
+DXWriter::counts(size_t *p)
+{
+    if (p == NULL) {
+        return *this;
+    }
+    size_t nbytes = _rank * sizeof(size_t);
+    size_t *tmp = (size_t*) malloc(nbytes);
+    if (tmp == NULL) {
+        fprintf(stderr,"Unable to malloc %lu bytes inside DXWriter::pos\n",
+            (unsigned long)nbytes);
+        return *this;
+    }
+    memcpy((void*)tmp,(void const*)p,nbytes);
+
+    if (_positions) {
+        free(_positions);
+    }
+
+    _positions = tmp;
+    return *this;
+}
+
+DXWriter&
+DXWriter::append(double* value)
+{
+    _dataBuf.append(value,1);
+    return *this;
+}
+
+DXWriter&
+DXWriter::data(double *d, size_t nmemb)
+{
+    _dataBuf.append(d,nmemb);
+    return *this;
+}
+
+DXWriter&
+DXWriter::pos(double *p, size_t nmemb)
+{
+    _posBuf.append(p,nmemb);
+    return *this;
+}
+
+DXWriter&
+DXWriter::write(FILE *f)
+{
+    if (f == NULL) {
+        fprintf(stderr,"FILE is NULL, cannot write to NULL file inside DXWriter::write\n");
+        return *this;
+    }
+    SimpleCharBuffer dxfile;
+    _writeDxToBuffer(dxfile);
+    ssize_t nWritten;
+    nWritten = fwrite(dxfile.bytes(), 1, dxfile.size(), f);
+    assert(nWritten == (ssize_t)dxfile.size());
+    return *this;
+}
+
+DXWriter&
+DXWriter::write(const char* fname)
+{
+    FILE *fp = NULL;
+
+    if (fname == NULL) {
+        fprintf(stderr,"filename is NULL, cannot write to NULL file inside DXWriter::write\n");
+        return *this;
+    }
+
+    fp = fopen(fname,"wb");
+    write(fp);
+    fclose(fp);
+
+    return *this;
+}
+
+DXWriter&
+DXWriter::write(char *str)
+{
+    SimpleCharBuffer dxfile;
+    int sz;
+
+    _writeDxToBuffer(dxfile);
+    sz = dxfile.size();
+    str = new char[sz+1];
+    memcpy(str, dxfile.bytes(), sz);
+    str[sz] = '\0';
+    return *this;
+}
+
+/*
+ *  even though dxfile.append() is more expensive,
+ *  we don't only use sprintf inside the for loops because
+ *  we don't know how many loop iterations there will be
+ *  and our static buffer is a constant number of chars.
+ */
+
+DXWriter&
+DXWriter::_writeDxToBuffer(SimpleCharBuffer &dxfile)
+{
+    char b[80];
+    double f = 0.0;
+
+    // expand our original buffer to 512 characters
+    // because we know there are at least
+    // 400 characters in even our smallest dx file.
+    dxfile.set(512);
+
+    dxfile.append("<ODX>object 1 class gridpositions counts",40);
+    for (size_t i=0; i < _rank; i++) {
+        sprintf(b, " %10lu", (unsigned long)_positions[i]);
+        dxfile.append(b,11);
+    }
+
+    dxfile.append("\norigin");
+    for (size_t i=0; i < _rank; i++) {
+        sprintf(b, " %10g",_origin[i]);
+        dxfile.append(b,11);
+    }
+
+    for (size_t row=0; row < _rank; row++) {
+        dxfile.append("\ndelta");
+        for (size_t col=0; col < _rank; col++) {
+            sprintf(b, " %10g",_delta[(_rank*row)+col]);
+            dxfile.append(b,11);
+        }
+    }
+
+    dxfile.append("\nobject 2 class gridconnections counts", 38);
+    for (size_t i=0; i < _rank; i++) {
+        sprintf(b, " %10lu",(unsigned long)_positions[i]);
+        dxfile.append(b,11);
+    }
+
+    dxfile.append("\nattribute \"element type\" string \"cubes\"\n",41);
+    dxfile.append("attribute \"ref\" string \"positions\"\n",35);
+
+    sprintf(b,"object 3 class array type float rank 0 items %lu data follows\n",
+        (unsigned long)_dataBuf.nmemb());
+    dxfile.append(b);
+
+    _dataBuf.seek(0,SEEK_SET);
+    while (!_dataBuf.eof()) {
+        _dataBuf.read(&f,1);
+        // nanovis and many other progs fail when you send it inf data
+        if (!std::isfinite(f)) {
+            f = 0.0;
+        }
+        sprintf(b,"    %10g\n",f);
+        // we do not know the length of the string
+        // only that it has 10 sigdigs, so we cannot tell
+        // append the size of the data
+        // dxfile.append(b,15);
+        dxfile.append(b);
+    }
+
+    dxfile.append("attribute \"dep\" string \"positions\"\n",35);
+    dxfile.append("object \"density\" class field\n",29);
+    dxfile.append("component \"positions\" value 1\n",30);
+    dxfile.append("component \"connections\" value 2\n",32);
+    dxfile.append("component \"data\" value 3\n",25);
+
+    return *this;
+}
+
+size_t
+DXWriter::size() const
+{
+    return _dataBuf.size();
+}
+
+size_t
+DXWriter::rank(size_t rank)
+{
+    if (rank > 0) {
+        _rank = rank;
+    }
+
+    return _rank;
+}
+
+size_t
+DXWriter::shape(size_t shape)
+{
+    if (shape > 0) {
+        _shape = shape;
+    }
+
+    return _shape;
+}
Index: /tags/1.6.0/src/core/RpDXWriter.h
===================================================================
--- /tags/1.6.0/src/core/RpDXWriter.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpDXWriter.h	(revision 6168)
@@ -0,0 +1,66 @@
+
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::DXWriter
+ *
+ *  Rappture DXWriter object for forming dx files nanovis can read
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RAPPTURE_DX_WRITER_H
+#define RAPPTURE_DX_WRITER_H
+
+#include <RpOutcome.h>
+#include <RpSimpleBuffer.h>
+
+namespace Rappture {
+
+class DXWriter {
+public:
+    DXWriter();
+    DXWriter(double* data, size_t nmemb, size_t rank, size_t shape);
+    DXWriter(const DXWriter& rpdx);
+    DXWriter& operator=(const DXWriter& rpdx);
+    virtual ~DXWriter();
+
+    virtual DXWriter& origin(double* o);
+    virtual DXWriter& delta(double* d);
+    virtual DXWriter& counts(size_t *p);
+
+    virtual DXWriter& append(double* value);
+
+    virtual DXWriter& data(double *d, size_t nmemb=1);
+    virtual DXWriter& pos(double *p, size_t nmemb=1);
+    virtual DXWriter& write(FILE *stream);
+    virtual DXWriter& write(const char* fname);
+    virtual DXWriter& write(char *str);
+    virtual size_t size() const;
+
+    virtual size_t rank(size_t rank=0);
+    virtual size_t shape(size_t shape=0);
+protected:
+
+private:
+
+    SimpleDoubleBuffer _dataBuf;
+    SimpleDoubleBuffer _posBuf;
+
+    size_t _rank;          // number of dimensions in each item
+    size_t _shape;         // array of the extents of each dimension
+
+    size_t* _positions;    // array holding the number of x,y,z points
+    double* _delta;        // array holding deltas of the uniform mesh
+    double* _origin;       // array holding coord of origin
+
+    DXWriter& _writeDxToBuffer(SimpleCharBuffer &dxfile);
+};
+
+} // namespace Rappture
+
+#endif // RAPPTURE_DX_WRITER_H
Index: /tags/1.6.0/src/core/RpDXWriterFInterface.cc
===================================================================
--- /tags/1.6.0/src/core/RpDXWriterFInterface.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpDXWriterFInterface.cc	(revision 6168)
@@ -0,0 +1,285 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture DXWriter Bindings Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <cstring>
+#include <fstream>
+#include "RpDXWriterFInterface.h"
+#include "RpFortranCommon.h"
+#include "RpBindingsDict.h"
+#include "RpDXWriterFStubs.c"
+
+#define RP_OK 0
+#define RP_ERROR 1
+
+/**********************************************************************/
+// FUNCTION: rp_dxwriter()
+/// Open a new Rappture::DXWriter object and return its handle.
+/**
+ */
+
+int rp_dxwriter() {
+
+    Rappture::DXWriter* dxwriter = NULL;
+    int handle = -1;
+
+    // create a Rappture::DXWriter object and store in dictionary
+    dxwriter = new Rappture::DXWriter();
+
+    if (dxwriter) {
+        handle = storeObject_Void(dxwriter);
+    }
+
+    return handle;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_dxwriter_origin()
+/// change the origin of the dx object.
+/**
+ */
+int rp_dxwriter_origin(int* handle,     /* integer handle of dxwriter */
+                        double *o         /* array of origin values per axis */
+                        )
+{
+    size_t retVal = RP_ERROR;
+    Rappture::DXWriter* dxwriter = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        dxwriter = (Rappture::DXWriter*) getObject_Void(*handle);
+        if (dxwriter) {
+            dxwriter->origin(o);
+            retVal = RP_OK;
+        }
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_dxwriter_delta()
+/// change the delta of the dx object.
+/**
+ */
+int rp_dxwriter_delta(int* handle,     /* integer handle of dxwriter */
+                        double *d         /* array of delta values per axis */
+                        )
+{
+    size_t retVal = RP_ERROR;
+    Rappture::DXWriter* dxwriter = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        dxwriter = (Rappture::DXWriter*) getObject_Void(*handle);
+        if (dxwriter) {
+            dxwriter->delta(d);
+            retVal = RP_OK;
+        }
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_dxwriter_counts()
+/// change the counts of the position grid in the dx object.
+/**
+ */
+int rp_dxwriter_counts(int* handle,     /* integer handle of dxwriter */
+                        size_t *p         /* array of counts per axis */
+                        )
+{
+    size_t retVal = RP_ERROR;
+    Rappture::DXWriter* dxwriter = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        dxwriter = (Rappture::DXWriter*) getObject_Void(*handle);
+        if (dxwriter) {
+            dxwriter->counts(p);
+            retVal = RP_OK;
+        }
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_dxwriter_append()
+/// append data to the dxwriter object.
+/**
+ */
+int rp_dxwriter_append(int* handle,     /* integer handle of dxwriter */
+                        double *value         /* single data value*/
+                        )
+{
+    size_t retVal = RP_ERROR;
+    Rappture::DXWriter* dxwriter = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        dxwriter = (Rappture::DXWriter*) getObject_Void(*handle);
+        if (dxwriter) {
+            dxwriter->append(value);
+            retVal = RP_OK;
+        }
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_dxwriter_data()
+/// append data to the dxwriter object.
+/**
+ */
+int rp_dxwriter_data(int* handle,     /* integer handle of dxwriter */
+                        double *value,        /* array of data values */
+                        size_t *nmemb        /* number of members in array value*/
+                        )
+{
+    size_t retVal = RP_ERROR;
+    Rappture::DXWriter* dxwriter = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        dxwriter = (Rappture::DXWriter*) getObject_Void(*handle);
+        if (dxwriter) {
+            dxwriter->data(value,*nmemb);
+            retVal = RP_OK;
+        }
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_dxwriter_pos()
+/// append position to the dxwriter object.
+/**
+ */
+int rp_dxwriter_pos(int* handle,     /* integer handle of dxwriter */
+                        double *position,     /* array of positions */
+                        size_t *nmemb        /* number of members in array value*/
+                        )
+{
+    size_t retVal = RP_ERROR;
+    Rappture::DXWriter* dxwriter = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        dxwriter = (Rappture::DXWriter*) getObject_Void(*handle);
+        if (dxwriter) {
+            dxwriter->pos(position,*nmemb);
+            retVal = RP_OK;
+        }
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_dxwriter_write()
+/// write the dx file to disk.
+/**
+ */
+int rp_dxwriter_write(int* handle,     /* integer handle of dxwriter */
+                        char *fname,     /* filename to hold dx file text */
+                        size_t str_len /* size of str */
+                        )
+{
+    size_t retVal = RP_ERROR;
+    Rappture::DXWriter* dxwriter = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        dxwriter = (Rappture::DXWriter*) getObject_Void(*handle);
+        if (dxwriter) {
+            dxwriter->write((const char*)fname);
+            retVal = RP_OK;
+            /*
+            if (dxwriter->size() > (str_len)) {
+                dxwriter->write((const char*)fname);
+                retVal = RP_OK;
+            } else {
+                // string too small
+                retVal = RP_ERROR;
+            }
+            */
+        }
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_dxwriter_size()
+/// return the size of the dx file text
+/**
+ */
+int rp_dxwriter_size(int* handle,    /* integer handle of dxwriter */
+                        size_t* s    /* return value */
+                        )
+{
+    size_t retVal = RP_ERROR;
+    Rappture::DXWriter* dxwriter = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        dxwriter = (Rappture::DXWriter*) getObject_Void(*handle);
+        if (dxwriter) {
+            *s = dxwriter->size();
+            retVal = RP_OK;
+        }
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_dxwriter_rank()
+/// change the rank of the dx file text
+/**
+ */
+int rp_dxwriter_rank(int* handle,    /* integer handle of dxwriter */
+                        size_t* rank /* return value */
+                        )
+{
+    size_t retVal = RP_ERROR;
+    Rappture::DXWriter* dxwriter = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        dxwriter = (Rappture::DXWriter*) getObject_Void(*handle);
+        if (dxwriter) {
+            *rank = dxwriter->rank();
+            retVal = RP_OK;
+        }
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_dxwriter_shape()
+/// change the shape of the dx file text
+/**
+ */
+int rp_dxwriter_shape(int* handle,    /* integer handle of dxwriter */
+                        size_t* shape      /* return value */
+                        )
+{
+    size_t retVal = RP_ERROR;
+    Rappture::DXWriter* dxwriter = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        dxwriter = (Rappture::DXWriter*) getObject_Void(*handle);
+        if (dxwriter) {
+            *shape = dxwriter->shape();
+            retVal = RP_OK;
+        }
+    }
+
+    return retVal;
+}
Index: /tags/1.6.0/src/core/RpDXWriterFInterface.h
===================================================================
--- /tags/1.6.0/src/core/RpDXWriterFInterface.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpDXWriterFInterface.h	(revision 6168)
@@ -0,0 +1,52 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture DXWriter Bindings Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RAPPTURE_DXWRITER_F_H
+#define _RAPPTURE_DXWRITER_F_H
+
+#ifdef __cplusplus
+    #include "RpDXWriter.h"
+    #include "RpDXWriterFStubs.h"
+
+    extern "C" {
+#endif // ifdef __cplusplus
+
+int rp_dxwriter();
+
+int rp_dxwriter_origin(int *handle, double *o);
+
+int rp_dxwriter_delta(int *handle, double *d);
+
+int rp_dxwriter_counts(int *handle, size_t *p);
+
+int rp_dxwriter_append(int *handle, double *value);
+
+int rp_dxwriter_data(int *handle, double *value, size_t *nmemb);
+
+int rp_dxwriter_pos(int *handle, double *position, size_t *nmemb);
+
+int rp_dxwriter_write(int *handle, char *fname, size_t str_len);
+
+int rp_dxwriter_size(int *handle, size_t *sz);
+
+int rp_dxwriter_rank(int *handle, size_t *rank);
+
+int rp_dxwriter_shape(int *handle, size_t *shape);
+
+/**********************************************************/
+
+#ifdef __cplusplus
+    }
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RAPPTURE_DXWRITER_F_H
Index: /tags/1.6.0/src/core/RpDXWriterFStubs.c
===================================================================
--- /tags/1.6.0/src/core/RpDXWriterFStubs.c	(revision 6168)
+++ /tags/1.6.0/src/core/RpDXWriterFStubs.c	(revision 6168)
@@ -0,0 +1,166 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture DXWriter Bindings Stubs
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifdef __cplusplus
+    extern "C" {
+#endif // ifdef __cplusplus
+
+
+int rp_dxwriter_() {
+    return rp_dxwriter();
+}
+
+int rp_dxwriter__() {
+    return rp_dxwriter();
+}
+
+int RP_DXWRITER() {
+    return rp_dxwriter();
+}
+
+
+int rp_dxwriter_origin_(int *handle, double *o) {
+    return rp_dxwriter_origin(handle,o);
+}
+
+int rp_dxwriter_origin__(int *handle, double *o) {
+    return rp_dxwriter_origin(handle,o);
+}
+
+int RP_DXWRITER_ORIGIN(int *handle, double *o) {
+    return rp_dxwriter_origin(handle,o);
+}
+
+
+int rp_dxwriter_delta_(int *handle, double *d) {
+    return rp_dxwriter_delta(handle,d);
+}
+
+int rp_dxwriter_delta__(int *handle, double *d) {
+    return rp_dxwriter_delta(handle,d);
+}
+
+int RP_DXWRITER_DELTA(int *handle, double *d) {
+    return rp_dxwriter_delta(handle,d);
+}
+
+
+int rp_dxwriter_counts_(int *handle, size_t *p) {
+    return rp_dxwriter_counts(handle,p);
+}
+
+int rp_dxwriter_counts__(int *handle, size_t *p) {
+    return rp_dxwriter_counts(handle,p);
+}
+
+int RP_DXWRITER_COUNTS(int *handle, size_t *p) {
+    return rp_dxwriter_counts(handle,p);
+}
+
+
+int rp_dxwriter_append_(int *handle, double *value) {
+    return rp_dxwriter_append(handle,value);
+}
+
+int rp_dxwriter_append__(int *handle, double *value) {
+    return rp_dxwriter_append(handle,value);
+}
+
+int RP_DXWRITER_APPEND(int *handle, double *value) {
+    return rp_dxwriter_append(handle,value);
+}
+
+
+int rp_dxwriter_data_(int *handle, double *value, size_t *nmemb) {
+    return rp_dxwriter_data(handle,value,nmemb);
+}
+
+int rp_dxwriter_data__(int *handle, double *value, size_t *nmemb) {
+    return rp_dxwriter_data(handle,value,nmemb);
+}
+
+int RP_DXWRITER_DATA(int *handle, double *value, size_t *nmemb) {
+    return rp_dxwriter_data(handle,value,nmemb);
+}
+
+
+int rp_dxwriter_pos_(int *handle, double *position, size_t *nmemb) {
+    return rp_dxwriter_pos(handle,position,nmemb);
+}
+
+int rp_dxwriter_pos__(int *handle, double *position, size_t *nmemb) {
+    return rp_dxwriter_pos(handle,position,nmemb);
+}
+
+int RP_DXWRITER_POS(int *handle, double *position, size_t *nmemb) {
+    return rp_dxwriter_pos(handle,position,nmemb);
+}
+
+
+int rp_dxwriter_write_(int *handle, char *fname, size_t str_len) {
+    return rp_dxwriter_write(handle,fname,str_len);
+}
+
+int rp_dxwriter_write__(int *handle, char *fname, size_t str_len) {
+    return rp_dxwriter_write(handle,fname,str_len);
+}
+
+int RP_DXWRITER_WRITE(int *handle, char *fname, size_t str_len) {
+    return rp_dxwriter_write(handle,fname,str_len);
+}
+
+
+int rp_dxwriter_size_(int *handle, size_t *sz) {
+    return rp_dxwriter_size(handle,sz);
+}
+
+int rp_dxwriter_size__(int *handle, size_t *sz) {
+    return rp_dxwriter_size(handle,sz);
+}
+
+int RP_DXWRITER_SIZE(int *handle, size_t *sz) {
+    return rp_dxwriter_size(handle,sz);
+}
+
+
+int rp_dxwriter_rank_(int *handle, size_t *rank) {
+    return rp_dxwriter_rank(handle,rank);
+}
+
+int rp_dxwriter_rank__(int *handle, size_t *rank) {
+    return rp_dxwriter_rank(handle,rank);
+}
+
+int RP_DXWRITER_RANK(int *handle, size_t *rank) {
+    return rp_dxwriter_rank(handle,rank);
+}
+
+
+int rp_dxwriter_shape_(int *handle, size_t *shape) {
+    return rp_dxwriter_shape(handle,shape);
+}
+
+int rp_dxwriter_shape__(int *handle, size_t *shape) {
+    return rp_dxwriter_shape(handle,shape);
+}
+
+int RP_DXWRITER_SHAPE(int *handle, size_t *shape) {
+    return rp_dxwriter_shape(handle,shape);
+}
+
+
+/**********************************************************/
+
+#ifdef __cplusplus
+    }
+#endif // ifdef __cplusplus
Index: /tags/1.6.0/src/core/RpDXWriterFStubs.h
===================================================================
--- /tags/1.6.0/src/core/RpDXWriterFStubs.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpDXWriterFStubs.h	(revision 6168)
@@ -0,0 +1,66 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture DXWriter Bindings Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifdef __cplusplus
+    extern "C" {
+#endif // ifdef __cplusplus
+
+int rp_dxwriter_();
+int rp_dxwriter__();
+int RP_DXWRITER();
+
+int rp_dxwriter_origin_(int *handle, double *o);
+int rp_dxwriter_origin__(int *handle, double *o);
+int RP_DXWRITER_ORIGIN(int *handle, double *o);
+
+int rp_dxwriter_delta_(int *handle, double *d);
+int rp_dxwriter_delta__(int *handle, double *d);
+int RP_DXWRITER_DELTA(int *handle, double *d);
+
+int rp_dxwriter_counts_(int *handle, size_t *p);
+int rp_dxwriter_counts__(int *handle, size_t *p);
+int RP_DXWRITER_COUNTS(int *handle, size_t *p);
+
+int rp_dxwriter_append_(int *handle, double *value);
+int rp_dxwriter_append__(int *handle, double *value);
+int RP_DXWRITER_APPEND(int *handle, double *value);
+
+int rp_dxwriter_data_(int *handle, double *value, size_t *nmemb);
+int rp_dxwriter_data__(int *handle, double *value, size_t *nmemb);
+int RP_DXWRITER_DATA(int *handle, double *value, size_t *nmemb);
+
+int rp_dxwriter_pos_(int *handle, double *position, size_t *nmemb);
+int rp_dxwriter_pos__(int *handle, double *position, size_t *nmemb);
+int RP_DXWRITER_POS(int *handle, double *position, size_t *nmemb);
+
+int rp_dxwriter_write_(int *handle, char *fname, size_t str_len);
+int rp_dxwriter_write__(int *handle, char *fname, size_t str_len);
+int RP_DXWRITER_WRITE(int *handle, char *fname, size_t str_len);
+
+int rp_dxwriter_size_(int *handle, size_t *sz);
+int rp_dxwriter_size__(int *handle, size_t *sz);
+int RP_DXWRITER_SIZE(int *handle, size_t *sz);
+
+int rp_dxwriter_rank_(int *handle, size_t *rank);
+int rp_dxwriter_rank__(int *handle, size_t *rank);
+int RP_DXWRITER_RANK(int *handle, size_t *rank);
+
+int rp_dxwriter_shape_(int *handle, size_t *shape);
+int rp_dxwriter_shape__(int *handle, size_t *shape);
+int RP_DXWRITER_SHAPE(int *handle, size_t *shape);
+
+/**********************************************************/
+
+#ifdef __cplusplus
+    }
+#endif // ifdef __cplusplus
Index: /tags/1.6.0/src/core/RpDict.h
===================================================================
--- /tags/1.6.0/src/core/RpDict.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpDict.h	(revision 6168)
@@ -0,0 +1,1142 @@
+/*
+ * ======================================================================
+ *  RpDict
+ *
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <iostream>
+#include <cassert>
+#include <string>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifndef _RpDICT_H
+#define _RpDICT_H
+
+/**************************************************************************/
+/**************************************************************************/
+
+template <typename KeyType,
+          typename ValType,
+          class _Compare=std::equal_to<KeyType> >
+    class RpDict;
+
+template <typename KeyType,
+          typename ValType,
+          class _Compare=std::equal_to<KeyType> >
+    class RpDictEntry;
+
+template <typename KeyType,
+          typename ValType,
+          class _Compare=std::equal_to<KeyType> >
+    class RpDictIterator;
+
+/*
+ * RpDictEntry should not depend on _Compare,
+ * it was originally needed because RpDict is a friend class
+ * then i needed to assign it a default value because RpUnits.cc
+ * uses it in its find function. RpUnits::find should really not
+ * have to use it.
+ *
+ * RpDictIterator has the same thing going on. It has a default value
+ * because RpBindingsDict uses it.
+ */
+
+/**************************************************************************/
+
+template <typename KeyType, typename ValType, class _Compare>
+class RpDictIterator
+{
+
+    public:
+
+        // retrieve the table the iterator is iterating
+        // virtual RpDict<KeyType,ValType,_Compare>& getTable();
+
+        // send the search iterator to the beginning of the hash table
+        /*virtual*/ RpDictEntry<KeyType,ValType,_Compare>* first();
+
+        // send the search iterator to the next element of the hash table
+        /*virtual*/ RpDictEntry<KeyType,ValType,_Compare>* next();
+/*
+        RpDictIterator(RpDict* table_Ptr)
+            : tablePtr( (RpDict&) *table_Ptr),
+              srchNextEntryPtr(NULL),
+              srchNextIndex(0)
+        {
+        }
+*/
+        RpDictIterator(RpDict<KeyType,ValType,_Compare>& table_Ptr)
+            : tablePtr(table_Ptr),
+              srchNextIndex(0),
+              srchNextEntryPtr(NULL)
+        {
+        }
+
+        // copy constructor
+        RpDictIterator(RpDictIterator<KeyType,ValType,_Compare>& iterRef)
+            : tablePtr(iterRef.tablePtr),
+              srchNextIndex(iterRef.srchNextIndex),
+              srchNextEntryPtr(iterRef.srchNextEntryPtr)
+        {
+        }
+
+        // destructor
+
+    private:
+
+        RpDict<KeyType,ValType,_Compare>&
+            tablePtr;                   /* pointer to the table we want to
+                                         * iterate */
+        int srchNextIndex;              /* Index of next bucket to be
+                                         * enumerated after present one. */
+        RpDictEntry<KeyType,ValType,_Compare>*
+            srchNextEntryPtr;           /* Next entry to be enumerated in the
+                                         * the current bucket. */
+
+};
+
+template <typename KeyType, typename ValType, class _Compare>
+class RpDictEntry
+{
+    public:
+
+        operator int() const;
+        // operator==(const RpDictEntry& entry) const;
+        //
+        //operator!=(const RpDictEntry& lhs, const RpDictEntry& rhs) const
+        //{
+        //    if (lhs.key != rhs.key)
+        //}
+        const KeyType* getKey() const;
+        const ValType* getValue() const;
+        // const void* setValue(const void* value);
+        const ValType* setValue(const ValType& value);
+        bool isValid() const;
+
+        // erases this entry from its table
+        void erase();
+
+        friend class RpDict<KeyType,ValType,_Compare>;
+        friend class RpDictIterator<KeyType,ValType,_Compare>;
+
+        // two-arg constructor
+        RpDictEntry(KeyType newKey, ValType newVal)
+           : nextPtr    (NULL),
+             tablePtr   (NULL),
+             hash       (0),
+             clientData (newVal),
+             key        (newKey),
+             valid      (&clientData)
+        {
+        }
+
+        // copy constructor
+        RpDictEntry (const RpDictEntry<KeyType,ValType,_Compare>& entry)
+        {
+            nextPtr     = entry.nextPtr;
+            tablePtr    = entry.tablePtr;
+            hash        = entry.hash;
+
+            if (entry.valid != NULL) {
+                clientData  = (ValType) entry.getValue();
+                key         = (KeyType) entry.getKey();
+                valid       = &clientData;
+            }
+            else {
+                valid = NULL;
+            }
+
+        }
+
+    private:
+
+        RpDictEntry<KeyType,ValType,_Compare>*
+            nextPtr;                /* Pointer to next entry in this
+                                     * hash bucket, or NULL for end of
+                                     * chain. */
+
+        RpDict<KeyType,ValType,_Compare>*
+            tablePtr;              /* Pointer to table containing entry. */
+
+        unsigned int hash;          /* Hash value. */
+
+        ValType clientData;        /* Application stores something here
+                                    * with Tcl_SetHashValue. */
+
+        KeyType key;               /* entry key */
+
+        ValType* valid;            /* is this a valid object */
+
+        RpDictEntry()
+           : nextPtr (NULL),
+             tablePtr (NULL),
+             hash (0),
+             valid (NULL)
+             // clientData (),
+             // key ()
+        {
+        }
+
+};
+
+template <typename KeyType, typename ValType, class _Compare>
+class RpDict
+{
+    public:
+
+        typedef bool (*RpDictHint)(ValType);
+
+        // functionality for the user to access/adjust data members
+
+        // checks table size
+        /*virtual*/ int size() const;
+
+        // insert new object into table
+        // returns 0 on success (object inserted or already exists)
+        // returns !0 on failure (object cannot be inserted or dne)
+        //
+        /*virtual*/ RpDict<KeyType,ValType,_Compare>&
+                        set(KeyType& key,
+                            ValType& value,
+                            RpDictHint hint=NULL,
+                            int *newPtr=NULL,
+                            bool ci=false);
+
+        // find an RpUnits object that should exist in RpUnitsTable
+        //
+        /*virtual*/ RpDictEntry<KeyType,ValType,_Compare>&
+                        find(KeyType& key,
+                             RpDictHint hint = NULL,
+                             bool ci=false);
+
+        /*virtual*/ RpDictEntry<KeyType,ValType,_Compare>& operator[](KeyType& key)
+        {
+            return find(key,NULL);
+        }
+
+        RpDict<KeyType,ValType,_Compare>& setCI(bool val);
+        bool getCI();
+        RpDict<KeyType,ValType,_Compare>& toggleCI();
+
+        // clear the entire table
+        // iterate through the table and call erase on each element
+        /*virtual*/ RpDict<KeyType,ValType,_Compare>& clear();
+
+        // get the nullEntry hash entry for initialization of references
+        /*virtual*/ RpDictEntry<KeyType,ValType,_Compare>& getNullEntry();
+
+        // template <KeyType, ValType> friend class RpDictEntry;
+        // template <KeyType, ValType> friend class RpDictIterator;
+
+        friend class RpDictEntry<KeyType,ValType,_Compare>;
+        friend class RpDictIterator<KeyType,ValType,_Compare>;
+
+        // default constructor
+        RpDict (bool ci=false)
+            : SMALL_RP_DICT_SIZE(4),
+              REBUILD_MULTIPLIER(3),
+              buckets(staticBuckets),
+              numBuckets(SMALL_RP_DICT_SIZE),
+              numEntries(0),
+              rebuildSize(SMALL_RP_DICT_SIZE*REBUILD_MULTIPLIER),
+              downShift(28),
+              mask(3),
+              caseInsensitive(ci)
+        {
+            staticBuckets[0] = staticBuckets[1] = 0;
+            staticBuckets[2] = staticBuckets[3] = 0;
+
+            // setup a dummy entry of NULL
+            nullEntry = new RpDictEntry<KeyType,ValType,_Compare>();
+
+            assert(nullEntry != NULL);
+        }
+
+        // copy constructor
+        // RpDict (const RpDict& dict);
+
+        // assignment operator
+        // RpDict& operator=(const RpDict& dict);
+
+        // destructor
+        /*virtual*/ ~RpDict()
+        {
+            // probably need to delete all the entries as well
+            delete nullEntry;
+        }
+        // make sure to go through the hash table and free all RpDictEntries
+        // because the space is malloc'd in RpDict::set()
+
+
+    private:
+        const int SMALL_RP_DICT_SIZE;
+        const int REBUILD_MULTIPLIER;
+
+        RpDictEntry<KeyType,ValType,_Compare>
+                    **buckets;        /* Pointer to bucket array.  Each
+                                       * element points to first entry in
+                                       * bucket's hash chain, or NULL. */
+        RpDictEntry<KeyType,ValType,_Compare>
+                    *staticBuckets[4];
+                                      /* Bucket array used for small tables
+                                       * (to avoid mallocs and frees). */
+        int numBuckets;               /* Total number of buckets allocated
+                                       * at **bucketPtr. */
+        int numEntries;               /* Total number of entries present
+                                       * in table. */
+        int rebuildSize;              /* Enlarge table when numEntries gets
+                                       * to be this large. */
+        int downShift;                /* Shift count used in hashing
+                                       * function.  Designed to use high-
+                                       * order bits of randomized keys. */
+        int mask;                     /* Mask value used in hashing
+                                       * function. */
+        bool caseInsensitive;         /* When set to true, dictionary uses
+                                       * case insensitive functions,
+                                       * translating chars to uppercase */
+
+        RpDictEntry<KeyType,ValType,_Compare>
+                    *nullEntry;   /* if not const, compiler complains*/
+
+
+
+        // private member fxns
+
+        RpDictEntry<KeyType,ValType,_Compare>*
+            search(KeyType& key, RpDictHint hint = NULL, bool ci = false);
+
+        // static void RpDict::RebuildTable ();
+        void RebuildTable ();
+
+        unsigned int hashFxn(const void* keyPtr) const;
+        unsigned int hashFxn(std::string* keyPtr) const;
+        unsigned int hashFxn(char* keyPtr) const;
+
+        int randomIndex(unsigned int hash);
+};
+
+/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
+
+/**************************************************************************
+ *
+ * int RpDict::size()
+ *  retrieve the size of the structure
+ *
+ * Results:
+ *  Returns size of the hash table
+ *
+ * Side Effects:
+ *  none.
+ *
+ *
+ *************************************************************************/
+template <typename KeyType, typename ValType, class _Compare>
+int
+RpDict<KeyType,ValType,_Compare>::size() const
+{
+    return numEntries;
+}
+
+/**************************************************************************
+ *
+ * RpDict::set()
+ *  checks to make sure the table exists.
+ *  places a key/value pair into the hash table
+ *
+ * Results:
+ *  Returns a reference to the RpDict object allowing the user to chain
+ *  together different commands such as
+ *      rpdict_obj.set(key).find(a).erase(a);
+ *
+ * Side Effects:
+ *  if successful, the hash table will have a new entry
+ *
+ *
+ *************************************************************************/
+template <typename KeyType, typename ValType, class _Compare>
+RpDict<KeyType,ValType,_Compare>&
+RpDict<KeyType,ValType,_Compare>::set(KeyType& key,
+                                      ValType& value,
+                                      RpDictHint hint,
+                                      int* newPtr,
+                                      bool ci)
+{
+    RpDictEntry<KeyType,ValType,_Compare> *hPtr = NULL;
+    unsigned int hash = 0;
+    int index = 0;
+    bool oldCI = caseInsensitive;
+
+    assert(&key);
+    assert(&value);
+
+    hPtr = search(key,hint,ci);
+    if (hPtr != NULL) {
+        // adjust the new flag if it was provided
+        if (newPtr) {
+            *newPtr = 0;
+        }
+
+        // adjust the value if it was provided
+        // memory management is left as an exercise for the caller
+        if (&value) {
+            hPtr->setValue(value);
+        }
+
+        // return a reference to the dictionary object
+        return *this;
+    }
+
+    /*
+     * Entry not found.  Add a new one to the bucket.
+     */
+
+    if (&key) {
+        if (ci != oldCI) {
+            setCI(ci);
+        }
+        hash = (unsigned int) hashFxn(&key);
+        if (ci != oldCI) {
+            setCI(oldCI);
+        }
+    }
+    else {
+        // we are creating a NULL key entry.
+        hash = 0;
+    }
+
+    index = randomIndex(hash);
+
+    hPtr = new RpDictEntry<KeyType,ValType,_Compare>(key,value);
+    // hPtr->setValue(value);
+    //
+    // this is just a pointer that was allocated on the heap
+    // it wont stick with the RpDictEntry after the fxn exits...
+    // need to fix still.
+    hPtr->tablePtr = this;
+    hPtr->hash = hash;
+    hPtr->nextPtr = buckets[index];
+    buckets[index] = hPtr;
+    numEntries++;
+
+    if (newPtr) {
+        *newPtr = 1;
+    }
+
+    /*
+     * If the table has exceeded a decent size, rebuild it with many
+     * more buckets.
+     */
+
+    if (numEntries >= rebuildSize) {
+        RebuildTable();
+    }
+
+    // return a reference to the original object
+    return *this;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ *  RpDict::find(KeyType& key, RpDictHint hint)
+ *
+ *  Given a hash table find the entry with a matching key.
+ *
+ * Results:
+ *  The return value is a token for the matching entry in the
+ *  hash table, or NULL if there was no matching entry.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+template <typename KeyType, typename ValType, class _Compare>
+RpDictEntry<KeyType,ValType,_Compare>&
+RpDict<KeyType,ValType,_Compare>::find(KeyType& key,
+                                       RpDictHint hint,
+                                       bool ci)
+{
+    RpDictEntry<KeyType,ValType,_Compare> *hPtr = NULL;
+
+    hPtr = search(key,hint,ci);
+
+    if (hPtr != NULL) {
+        return *hPtr;
+    }
+
+    // return a reference to the null object
+    // find is not supposed to return a const, but i dont want the user
+    // changing this entry's data members... what to do?
+    return *nullEntry;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ *  RpDict::search(KeyType& key, RpDictHint hint)
+ *
+ *  Given a hash table find the entry with a matching key.
+ *
+ * Results:
+ *  The return value is a token for the matching entry in the
+ *  hash table, or NULL if there was no matching entry.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+template <typename KeyType, typename ValType, class _Compare>
+RpDictEntry<KeyType,ValType,_Compare>*
+RpDict<KeyType,ValType,_Compare>::search(KeyType& key,
+                                         RpDictHint hint,
+                                         bool ci)
+                                         // bool ci,
+                                         // RpDictEntryList* entryList)
+{
+    RpDictEntry<KeyType,ValType,_Compare> *hPtr = NULL;
+    unsigned int hash = 0;
+    int index = 0;
+    bool oldCI = caseInsensitive;
+
+    assert(&key);
+
+    // take care of the case where we are creating a NULL key entry.
+    if (&key) {
+        if (ci != oldCI) {
+            // toggle the case insensitivity of the dictionary
+            setCI(ci);
+        }
+
+        hash = (unsigned int) hashFxn(&key);
+
+        if (ci != oldCI) {
+            // reset the case insensitivity of the dictionary
+            setCI(oldCI);
+        }
+    }
+    else {
+        hash = 0;
+    }
+
+    index = randomIndex(hash);
+
+    /*
+     * Search all of the entries in the appropriate bucket.
+     */
+
+    for (hPtr = buckets[index]; hPtr != NULL; hPtr = hPtr->nextPtr) {
+        if (hash != (unsigned int) hPtr->hash) {
+            continue;
+        }
+        if (_Compare()(key, *(hPtr->getKey()))) {
+            // check to see if the user provided a hint
+            if (hint != NULL ) {
+                // if there is a hint, run the potential return value
+                // throught the hint function.
+                if (hint(*(hPtr->getValue())) == true) {
+                    // the hint approves of our choice of return values
+                    // return a reference to the found object
+                    return hPtr;
+                }
+            }
+            else {
+                // return a reference to the found object
+                return hPtr;
+            }
+        }
+    }
+
+    // return a reference to the null object
+    // find is not supposed to return a const, but i dont want the user
+    // changing this entry's data members... what to do?
+    return hPtr;
+
+}
+
+/**************************************************************************
+ *
+ * virtual RpDict& RpDictIterator::getTable()
+ *  send the search iterator to the beginning of the hash table
+ *
+ * Results:
+ *  returns pointer to the first hash entry of the hash table.
+ *
+ * Side Effects:
+ *  moves iterator to the beginning of the hash table.
+ *
+ *
+ *************************************************************************/
+/*
+template <typename KeyType,typename ValType,class _Compare>
+RpDict<KeyType,ValType,_Compare>&
+RpDictIterator<KeyType,ValType,_Compare>::getTable()
+{
+    return tablePtr;
+}
+*/
+
+/**************************************************************************
+ *
+ * virtual RpDictEntry& RpDict::first()
+ *  send the search iterator to the beginning of the hash table
+ *
+ * Results:
+ *  returns pointer to the first hash entry of the hash table.
+ *
+ * Side Effects:
+ *  moves iterator to the beginning of the hash table.
+ *
+ *
+ *************************************************************************/
+template <typename KeyType,typename ValType,class _Compare>
+RpDictEntry<KeyType,ValType,_Compare>*
+RpDictIterator<KeyType,ValType,_Compare>::first()
+{
+    srchNextIndex = 0;
+    srchNextEntryPtr = NULL;
+    return next();
+}
+
+/**************************************************************************
+ *
+ * Tcl_HashEntry * RpDict::next()
+ *  send the search iterator to the next entry of the hash table
+ *
+ * Results:
+ *  returns pointer to the next hash entry of the hash table.
+ *  if iterator is at the end of the hash table, NULL is returned
+ *  and the iterator is left at the end of the hash table.
+ *
+ * Side Effects:
+ *  moves iterator to the next entry of the hash table if it exists.
+ *
+ *
+ *************************************************************************/
+template <typename KeyType,typename ValType,class _Compare>
+RpDictEntry<KeyType,ValType,_Compare>*
+RpDictIterator<KeyType,ValType,_Compare>::next()
+{
+    RpDictEntry<KeyType,ValType,_Compare>* hPtr = NULL;
+
+    while (srchNextEntryPtr == NULL) {
+        if (srchNextIndex >= tablePtr.numBuckets) {
+            return NULL;
+        }
+        srchNextEntryPtr = tablePtr.buckets[srchNextIndex];
+        srchNextIndex++;
+    }
+    hPtr = srchNextEntryPtr;
+    srchNextEntryPtr = hPtr->nextPtr;
+
+    return hPtr;
+}
+
+/**************************************************************************
+ *
+ * RpDict & setCI(bool val)
+ *  Use case insensitive functions where applicable within the dictionary
+ *
+ * Results:
+ *  sets the dictionary objects caseInsensitive variable to the boolean val
+ *
+ * Side Effects:
+ *  mostly find and set functions will begin to execute their functions
+ *  with case insensitivity in mind.
+ *
+ *
+ *************************************************************************/
+template <typename KeyType, typename ValType, class _Compare>
+RpDict<KeyType,ValType,_Compare>&
+RpDict<KeyType,ValType,_Compare>::setCI(bool val)
+{
+    caseInsensitive = val;
+    return *this;
+}
+
+/**************************************************************************
+ *
+ * bool getCI()
+ *  Retrieve the case insensitivity of this dictionary object
+ *
+ * Results:
+ *  returns the dictionary object's caseInsensitive variable to the user
+ *
+ * Side Effects:
+ *  None
+ *
+ *************************************************************************/
+template <typename KeyType, typename ValType, class _Compare>
+bool
+RpDict<KeyType,ValType,_Compare>::getCI()
+{
+    return caseInsensitive;
+}
+
+/**************************************************************************
+ *
+ * RpDict & toggleCI()
+ *  Toggle the case insensitivity of this dictionary object
+ *
+ * Results:
+ *  returns the dictionary object's caseInsensitive variable to the user
+ *
+ * Side Effects:
+ *  None
+ *
+ *************************************************************************/
+template <typename KeyType, typename ValType, class _Compare>
+RpDict<KeyType,ValType,_Compare>&
+RpDict<KeyType,ValType,_Compare>::toggleCI()
+{
+    caseInsensitive = !caseInsensitive;
+    return *this;
+}
+
+/**************************************************************************
+ *
+ * RpDict & clear()
+ *  iterate through the table and call erase on each element
+ *
+ * Results:
+ *  empty hash table
+ *
+ * Side Effects:
+ *  every element of the hash table will be erased.
+ *
+ *
+ *************************************************************************/
+template <typename KeyType, typename ValType, class _Compare>
+RpDict<KeyType,ValType,_Compare>&
+RpDict<KeyType,ValType,_Compare>::clear()
+{
+    RpDictEntry<KeyType,ValType,_Compare> *hPtr = NULL;
+    RpDictIterator<KeyType,ValType,_Compare> iter((RpDict&)*this);
+
+    hPtr = iter.first();
+
+    while (hPtr) {
+        hPtr->erase();
+        hPtr = iter.next();
+    }
+
+    return *this;
+}
+
+/**************************************************************************
+ *
+ * RpDictEntry & getNullEntry()
+ *  get the nullEntry hash entry for initialization of references
+ *
+ *
+ * Results:
+ *  nullEntry RpDictEntry related to this dictionary is returned
+ *
+ * Side Effects:
+ *  none
+ *
+ *
+ *************************************************************************/
+template <typename KeyType, typename ValType, class _Compare>
+RpDictEntry<KeyType,ValType,_Compare>&
+RpDict<KeyType,ValType,_Compare>::getNullEntry()
+{
+    return *nullEntry;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * void RpDictEntry::erase()
+ *
+ *  Remove a single entry from a hash table.
+ *
+ * Results:
+ *  None.
+ *
+ * Side effects:
+ *  The entry given by entryPtr is deleted from its table and
+ *  should never again be used by the caller.  It is up to the
+ *  caller to free the clientData field of the entry, if that
+ *  is relevant.
+ *
+ *----------------------------------------------------------------------
+ */
+template <typename KeyType, typename ValType, class _Compare>
+void
+RpDictEntry<KeyType,ValType,_Compare>::erase()
+{
+    RpDictEntry<KeyType,ValType,_Compare> *prevPtr = NULL;
+    RpDictEntry<KeyType,ValType,_Compare> **bucketPtr = NULL;
+    int index = 0;
+
+    // check to see if the object is associated with a table
+    // if object is not associated with a table, there is no
+    // need to try to remove it from the table.
+    if (tablePtr) {
+
+        index = tablePtr->randomIndex(hash);
+
+        // calculate which bucket the entry should be in.
+        bucketPtr = &(tablePtr->buckets[index]);
+
+        // remove the entry from the buckets
+        //
+        // if entry is the first entry in the bucket
+        // move the bucket to point to the next entry
+        if ((*bucketPtr)->key == this->key) {
+            *bucketPtr = nextPtr;
+        }
+        else {
+            // if the entry is not the first entry in the bucket
+            // search for the entry
+            for (prevPtr = *bucketPtr; ; prevPtr = prevPtr->nextPtr) {
+
+                // printf("malformed bucket chain in RpDictEntry::erase()");
+                assert(prevPtr != NULL);
+
+                if (prevPtr->nextPtr == this) {
+                    prevPtr->nextPtr = nextPtr;
+                    break;
+                }
+            } // end for loop
+        } // end else
+
+        // update our table's information
+        tablePtr->numEntries--;
+
+    } // end if tablePtr
+
+    // invalidate the object
+    nextPtr = NULL;
+    tablePtr = NULL;
+    hash = 0;
+    // clientData = NULL;
+    // key = NULL;
+    valid = NULL;
+
+    // delete the object.
+    delete this;
+
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * const char* RpDictEntry::getKey() const
+ *
+ *  retrieve the key of the current object
+ *
+ * Results:
+ *  the key is returned to the caller
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+template <typename KeyType, typename ValType, class _Compare>
+const KeyType*
+RpDictEntry<KeyType,ValType,_Compare>::getKey() const
+{
+    return (const KeyType*) &key;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * const char* RpDictEntry::getValue() const
+ *
+ *  retrieve the value of the current object
+ *  it is the caller responsibility to check isValid() to see if the
+ *  object actually holds a valid value.
+ *
+ * Results:
+ *  the value is returned to the caller
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+template <typename KeyType, typename ValType, class _Compare>
+const ValType*
+RpDictEntry<KeyType,ValType,_Compare>::getValue() const
+{
+    return (const ValType*) &clientData;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * const void* RpDictEntry::setValue()
+ *
+ *  retrieve the value of the current object
+ *
+ * Results:
+ *  the value is returned to the caller
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+template <typename KeyType, typename ValType, class _Compare>
+const ValType*
+RpDictEntry<KeyType,ValType,_Compare>::setValue(const ValType& value)
+{
+    clientData = value;
+    valid = &clientData;
+    return (const ValType*) &clientData;
+}
+
+template <typename KeyType, typename ValType, class _Compare>
+RpDictEntry<KeyType,ValType,_Compare>::operator int() const
+{
+
+    if (!tablePtr && hash == 0)
+        return 0;
+    else
+        return 1;
+
+//    return (key);
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * bool RpDictEntry::isValid()
+ *
+ *  is this a valid object, return true or false
+ *
+ * Results:
+ *  tells the user if the object is valid true or false
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+template <typename KeyType, typename ValType, class _Compare>
+bool
+RpDictEntry<KeyType,ValType,_Compare>::isValid() const
+{
+    if (valid) {
+        return true;
+    }
+    return false;
+}
+
+/*************************************************************************/
+/*************************************************************************/
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RebuildTable --
+ *
+ *  This procedure is invoked when the ratio of entries to hash
+ *  buckets becomes too large.  It creates a new table with a
+ *  larger bucket array and moves all of the entries into the
+ *  new table.
+ *
+ * Results:
+ *  None.
+ *
+ * Side effects:
+ *  Memory gets reallocated and entries get re-hashed to new
+ *  buckets.
+ *
+ *----------------------------------------------------------------------
+ */
+template <typename KeyType, typename ValType, class _Compare>
+void
+RpDict<KeyType,ValType,_Compare>::RebuildTable()
+{
+    int oldSize=0, count=0, index=0;
+    RpDictEntry<KeyType,ValType,_Compare> **oldBuckets = NULL;
+    RpDictEntry<KeyType,ValType,_Compare> **oldChainPtr = NULL, **newChainPtr = NULL;
+    RpDictEntry<KeyType,ValType,_Compare> *hPtr = NULL;
+
+    oldSize = numBuckets;
+    oldBuckets = buckets;
+
+    /*
+     * Allocate and initialize the new bucket array, and set up
+     * hashing constants for new array size.
+     */
+
+    numBuckets *= 4;
+
+    buckets = (RpDictEntry<KeyType,ValType,_Compare> **) malloc((unsigned)
+        (numBuckets * sizeof(RpDictEntry<KeyType,ValType,_Compare> *)));
+
+    for (count = numBuckets, newChainPtr = buckets;
+        count > 0;
+        count--, newChainPtr++) {
+
+        *newChainPtr = NULL;
+    }
+
+    rebuildSize *= 4;
+    downShift -= 2;
+    mask = (mask << 2) + 3;
+
+    /*
+     * Rehash all of the existing entries into the new bucket array.
+     */
+
+    for (oldChainPtr = oldBuckets; oldSize > 0; oldSize--, oldChainPtr++) {
+        for (hPtr = *oldChainPtr; hPtr != NULL; hPtr = *oldChainPtr) {
+            *oldChainPtr = hPtr->nextPtr;
+
+            index = randomIndex(hPtr->hash);
+
+            hPtr->nextPtr = buckets[index];
+            buckets[index] = hPtr;
+        }
+    }
+
+    /*
+     * Free up the old bucket array, if it was dynamically allocated.
+     */
+
+    if (oldBuckets != staticBuckets) {
+        free((char *) oldBuckets);
+    }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * hashFxn --
+ *
+ *  Compute a one-word summary of a text string, which can be
+ *  used to generate a hash index.
+ *
+ * Results:
+ *  The return value is a one-word summary of the information in
+ *  string.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+template <typename KeyType, typename ValType, class _Compare>
+unsigned int
+RpDict<KeyType,ValType,_Compare>::hashFxn(const void *keyPtr) const
+{
+    const char *stopAddr = (const char *) keyPtr + sizeof(&keyPtr) - 1 ;
+    const char *str = (const char *) keyPtr;
+    unsigned int result = 0;
+    int c;
+
+    result = 0;
+
+    while (str != stopAddr) {
+        c = *str;
+        result += (result<<3) + c;
+        str++;
+    }
+
+    return result;
+}
+
+/*
+ * Quote from Tcl's hash table code
+ * I tried a zillion different hash functions and asked many other
+ * people for advice.  Many people had their own favorite functions,
+ * all different, but no-one had much idea why they were good ones.
+ * I chose the one below (multiply by 9 and add new character)
+ * because of the following reasons:
+ *
+ * 1. Multiplying by 10 is perfect for keys that are decimal strings,
+ *    and multiplying by 9 is just about as good.
+ * 2. Times-9 is (shift-left-3) plus (old).  This means that each
+ *    character's bits hang around in the low-order bits of the
+ *    hash value for ever, plus they spread fairly rapidly up to
+ *    the high-order bits to fill out the hash value.  This seems
+ *    works well both for decimal and non-decimal strings.
+ */
+template <typename KeyType, typename ValType, class _Compare>
+unsigned int
+RpDict<KeyType,ValType,_Compare>::hashFxn(std::string* keyPtr) const
+{
+    const char *str = (const char *) (keyPtr->c_str());
+    unsigned int result = 0;
+    int c = 0;
+
+    result = 0;
+
+    while (1) {
+        // c = *str;
+
+        if (caseInsensitive == true) {
+            c = toupper(static_cast<unsigned char>(*str));
+        }
+        else {
+            c = *str;
+        }
+
+        if (c == 0) {
+            break;
+        }
+        result += (result<<3) + c;
+        str++;
+    }
+
+    return result;
+}
+
+template <typename KeyType, typename ValType, class _Compare>
+unsigned int
+RpDict<KeyType,ValType,_Compare>::hashFxn(char* keyPtr) const
+{
+    const char *str = (const char *) (keyPtr);
+    unsigned int result = 0;
+    int c = 0;
+
+    result = 0;
+
+    while (1) {
+        c = *str;
+        if (c == 0) {
+            break;
+        }
+        result += (result<<3) + c;
+        str++;
+    }
+
+    return result;
+}
+
+/*
+ * ---------------------------------------------------------------------
+ *
+ * int RpDict::randomIndex(hash)
+ *
+ * The following macro takes a preliminary integer hash value and
+ * produces an index into a hash tables bucket list.  The idea is
+ * to make it so that preliminary values that are arbitrarily similar
+ * will end up in different buckets.  The hash function was taken
+ * from a random-number generator.
+ *
+ * ---------------------------------------------------------------------
+ */
+template <typename KeyType, typename ValType, class _Compare>
+int
+RpDict<KeyType,ValType,_Compare>::randomIndex(unsigned int hash)
+{
+    return (((((long) (hash))*1103515245) >> downShift) & mask);
+}
+
+#endif
Index: /tags/1.6.0/src/core/RpEncode.cc
===================================================================
--- /tags/1.6.0/src/core/RpEncode.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpEncode.cc	(revision 6168)
@@ -0,0 +1,423 @@
+
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::encoding
+ *
+ *  The encoding module for rappture used to zip and b64 encode data.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpEncode.h"
+#include <cstring>
+
+
+/**********************************************************************/
+// FUNCTION: Rappture::encoding::isbinary()
+/// isbinary checks to see if given string is binary.
+
+/**
+ * Checks to see if any of size characters in *buf are binary
+ * Full function call:
+ * Rappture::encoding::isbinary(buf,size);
+ *
+ */
+
+static char _base64chars[256] = {
+    0, 0, 0, 0, 0, 0, 0, 0, 0, /* 8 */
+    1, /* "\t" 9 */
+    1, /* "\n" 10 */
+    1, /* "\v" 11 */
+    1, /* "\f" 12 */
+    1, /* "\r" 13 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 31 */
+    1, /* " " 32 */
+    0, /* "!" 33 */
+    0, /* """ 34 */
+    0, /* "#" 35 */
+    0, /* "$" 36 */
+    0, /* "%" 37 */
+    0, /* "&" 38 */
+    0, /* "'" 39 */
+    0, /* "(" 40 */
+    0, /* ")" 41 */
+    0, /* "*" 42 */
+    1, /* "+" 43 */
+    0, /* "," 44 */
+    0, /* "-" 45 */
+    0, /* "." 46 */
+    1, /* "/" 47 */
+    1, /* "0" 48 */
+    1, /* "1" 49 */
+    1, /* "2" 50 */
+    1, /* "3" 51 */
+    1, /* "4" 52 */
+    1, /* "5" 53 */
+    1, /* "6" 54 */
+    1, /* "7" 55 */
+    1, /* "8" 56 */
+    1, /* "9" 57 */
+    0, /* ":" 58 */
+    0, /* ";" 59 */
+    0, /* "<" 60 */
+    1, /* "=" 61 */
+    0, /* ">" 62 */
+    0, /* "?" 63 */
+    0, /* "@" 64 */
+    1, /* "A" 65 */
+    1, /* "B" 66 */
+    1, /* "C" 67 */
+    1, /* "D" 68 */
+    1, /* "E" 69 */
+    1, /* "F" 70 */
+    1, /* "G" 71 */
+    1, /* "H" 72 */
+    1, /* "I" 73 */
+    1, /* "J" 74 */
+    1, /* "K" 75 */
+    1, /* "L" 76 */
+    1, /* "M" 77 */
+    1, /* "N" 78 */
+    1, /* "O" 79 */
+    1, /* "P" 80 */
+    1, /* "Q" 81 */
+    1, /* "R" 82 */
+    1, /* "S" 83 */
+    1, /* "T" 84 */
+    1, /* "U" 85 */
+    1, /* "V" 86 */
+    1, /* "W" 87 */
+    1, /* "X" 88 */
+    1, /* "Y" 89 */
+    1, /* "Z" 90 */
+    0, /* "[" 91 */
+    0, /* "\" 92 */
+    0, /* "]" 93 */
+    0, /* "^" 94 */
+    0, /* "_" 95 */
+    0, /* "`" 96 */
+    1, /* "a" 97 */
+    1, /* "b" 98 */
+    1, /* "c" 99 */
+    1, /* "d" 100 */
+    1, /* "e" 101 */
+    1, /* "f" 102 */
+    1, /* "g" 103 */
+    1, /* "h" 104 */
+    1, /* "i" 105 */
+    1, /* "j" 106 */
+    1, /* "k" 107 */
+    1, /* "l" 108 */
+    1, /* "m" 109 */
+    1, /* "n" 110 */
+    1, /* "o" 111 */
+    1, /* "p" 112 */
+    1, /* "q" 113 */
+    1, /* "r" 114 */
+    1, /* "s" 115 */
+    1, /* "t" 116 */
+    1, /* "u" 117 */
+    1, /* "v" 118 */
+    1, /* "w" 119 */
+    1, /* "x" 120 */
+    1, /* "y" 121 */
+    1, /* "z" 122 */
+    0, /* "{" 123 */
+    0, /* "|" 124 */
+    0, /* "}" 125 */
+    0, /* "~" 126 */
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+/* 
+ * Valid XML (ASCII encoded) characters 0-127:
+ * 
+ *	0x9 (\t) 0xA (\n) 0xD (\r) and
+ *	0x20 (space) through 0x7F (del)
+ *
+ * This isn't for UTF-8, only ASCII.  We don't allow high-order bit
+ * characters for ASCII editors.
+ */
+static unsigned char _xmlchars[256] = {
+    /*     -  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F */
+    /*00*/    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
+    /*10*/    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    /*20*/    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    /*30*/    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    /*40*/    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    /*50*/    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    /*60*/    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    /*70*/    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    /*80*/    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    /*90*/    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    /*A0*/    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    /*B0*/    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    /*C0*/    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    /*E0*/    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    /*F0*/    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+/* 
+ * This routine is misnamed "isBinary". By definition, all strings are binary,
+ * even the ones with just letters or digits.  It's really a test if the
+ * string can be used by XML verbatim and if it can be read by the usual ASCII
+ * editors (the reason high-order bit characters are disallowed).  [Note we
+ * aren't checking if entity replacements are necessary.]
+ *
+ * The "is*" routines should be moved somewhere else since they really don't
+ * have anything to do with encoding/decoding.
+ */
+bool
+Rappture::encoding::isBinary(const char* buf, int size)
+{
+    if (buf == NULL) {
+        return false;			/* Really should let this segfault. */
+    }
+    if (size < 0) {
+        size = strlen(buf);
+    }
+    unsigned const char *p, *pend;
+    for (p = (unsigned const char *)buf, pend = p + size; p < pend; p++) {
+	if (!_xmlchars[*p]) {
+	    return true;		
+	}
+    }
+    return false;
+}
+
+bool
+Rappture::encoding::isBase64(const char* buf, int size)
+{
+    if (buf == NULL) {
+        return false;			/* Really should let this segfault. */
+    }
+    if (size < 0) {
+        size = strlen(buf);
+    }
+    unsigned const char *p, *pend;
+    for (p = (unsigned const char *)buf, pend = p + size; p < pend; p++) {
+        if (!_base64chars[*p]) {
+	    fprintf(stderr, "%c %u is not base64\n", *p, *p);
+            return false;
+        }
+    }
+    return true;
+}
+
+bool
+Rappture::encoding::isGzipped(const char* buf, int size)
+{
+    unsigned int first, second;
+    if (buf == NULL) {
+        return false;			/* Really should let this segfault. */
+    }
+    first = buf[0];
+    second = buf[1];
+    return ((first == 0x1f)  && (second == 0x8b));
+}
+
+/**********************************************************************/
+// FUNCTION: Rappture::encoding::headerFlags()
+/// checks header of given string to determine if it was encoded by rappture.
+/**
+ * Checks to see if the string buf was encoded by rappture
+ * and contains the proper "@@RP-ENC:" header.
+ * rappture encoded strings start with the string "@@RP-ENC:X\n"
+ * where X is one of z, b64, zb64
+ * This function will not work for strings that do not have the header.
+ * Full function call:
+ * Rappture::encoding::headerFlags(buf,size);
+ *
+ */
+
+unsigned int
+Rappture::encoding::headerFlags(const char* buf, int size)
+{
+    size_t flags = 0;
+    size_t len = 0;
+
+    if (buf == NULL) {
+        return flags;
+    }
+
+    if (size < 0) {
+        len = strlen(buf);
+    } else {
+        len = size;
+    }
+
+    // check the following for valid rappture encoded string:
+    // all strings encoded by rappture are at least 11 characters
+    // rappture encoded strings start with the '@' character
+    // rappture encoded strings start with the string "@@RP-ENC:X\n"
+    // where X is one of z, b64, zb64
+    if ((len >= 11) &&  ('@' == *buf) &&  (strncmp("@@RP-ENC:",buf,9) == 0) ) {
+
+        size_t idx = 9;
+
+        // check the string length and if the z flag was specified
+        // add 1 for \n
+        if (    (len >= (idx + 1))
+            &&  (buf[idx] == 'z') ) {
+            flags |= RPENC_Z;
+            ++idx;
+        }
+        // check the string length and if the b64 flag was specified
+        // add 1 for \n
+        if (    (len >= (idx + 2 + 1))
+            &&  (buf[idx]   == 'b')
+            &&  (buf[idx+1] == '6')
+            &&  (buf[idx+2] == '4') ) {
+            flags |= RPENC_B64;
+            idx += 3;
+        }
+        // check for the '\n' at the end of the header
+        if (buf[idx] != '\n') {
+            flags = 0;
+        }
+    }
+    return flags;
+}
+
+/**********************************************************************/
+// FUNCTION: Rappture::encoding::encode()
+/// Rappture::encoding::encode function encodes provided string
+/**
+ * Encode a string by compressing it with zlib and then base64 encoding it.
+ *
+ * Full function call:
+ * Rappture::encoding::encode(buf,flags)
+ */
+
+bool
+Rappture::encoding::encode(Rappture::Outcome &status, Rappture::Buffer& buf,
+                           unsigned int flags)
+{
+    Rappture::Buffer outData;
+
+    if (buf.size() <= 0) {
+        return true;                // Nothing to encode.
+    }
+    if ((flags & (RPENC_Z | RPENC_B64)) == 0) {
+        // By default compress and encode the string.
+        flags |= RPENC_Z | RPENC_B64;
+    }
+    if (outData.append(buf.bytes(), buf.size()) != (int)buf.size()) {
+        status.addError("can't append %lu bytes", buf.size());
+        return false;
+    }
+    if (!outData.encode(status, flags)) {
+        return false;
+    }
+    buf.clear();
+    if ((flags & RPENC_RAW) == 0) {
+        switch (flags & (RPENC_Z | RPENC_B64)) {
+        case RPENC_Z:
+            buf.append("@@RP-ENC:z\n", 11);
+            break;
+        case RPENC_B64:
+            buf.append("@@RP-ENC:b64\n", 13);
+            break;
+        case (RPENC_B64 | RPENC_Z):
+            buf.append("@@RP-ENC:zb64\n", 14);
+            break;
+        default:
+            break;
+        }
+    }
+    if (buf.append(outData.bytes(),outData.size()) != (int)outData.size()) {
+        status.addError("can't append %d bytes", outData.size());
+        return false;
+    }
+    return true;
+}
+
+/**********************************************************************/
+// FUNCTION: Rappture::encoding::decode()
+/// Rappture::encoding::decode function decodes provided string
+/**
+ * Decode a string by uncompressing it with zlib and base64 decoding it.
+ * If binary data is provided, the data is base64 decoded and uncompressed.
+ * Rappture::encoding::isbinary is used to qualify binary data.
+ *
+ * Full function call:
+ * Rappture::encoding::decode(context, buf,flags)
+ *
+ * The check header flag is confusing here.
+ */
+
+bool
+Rappture::encoding::decode(Rappture::Outcome &status, Rappture::Buffer& buf,
+                           unsigned int flags)
+{
+    Rappture::Buffer outData;
+
+    const char *bytes;
+
+    size_t size;
+    size = buf.size();
+    if (size == 0) {
+        return true;                // Nothing to decode.
+    }
+    bytes = buf.bytes();
+    if ((flags & RPENC_RAW) == 0) {
+        unsigned int headerFlags = 0;
+        if ((size > 11) && (strncmp(bytes, "@@RP-ENC:z\n", 11) == 0)) {
+            bytes += 11;
+            size -= 11;
+            headerFlags = RPENC_Z;
+        } else if ((size > 13) && (strncmp(bytes, "@@RP-ENC:b64\n", 13) == 0)){
+            bytes += 13;
+            size -= 13;
+            headerFlags = RPENC_B64;
+        } else if ((size > 14) && (strncmp(bytes, "@@RP-ENC:zb64\n", 14) == 0)){
+            bytes += 14;
+            size -= 14;
+            headerFlags = (RPENC_B64 | RPENC_Z);
+        } else if ((size > 13) && (strncmp(bytes, "@@RP-ENC:raw\n", 13) == 0)){
+	    bytes += 13;
+	    size -= 13;
+        } 
+         if (headerFlags != 0) {
+            unsigned int reqFlags;
+
+            reqFlags = flags & (RPENC_B64 | RPENC_Z);
+            /* 
+             * If there's a header and the programmer also requested decoding
+             * flags, verify that the two are the same.  We don't want to
+             * penalize the programmer for over-specifying.  But we need to
+             * catch cases when they don't match.  If you really want to
+             * override the header, you should also specify the RPENC_RAW flag
+             * (-noheader).
+             */
+            if ((reqFlags != 0) && (reqFlags != headerFlags)) {
+                status.addError("decode flags don't match the header");
+                return false;
+            }
+            flags |= headerFlags;
+        }
+    }
+    if (outData.append(bytes, size) != (int)size) {
+        status.addError("can't append %d bytes to buffer", size);
+        return false;
+    }
+    if (flags & (RPENC_B64 | RPENC_Z)) {
+	if (!outData.decode(status, flags)) {
+	    return false;
+	}
+    }
+    buf.move(outData);
+    return true;
+}
+
Index: /tags/1.6.0/src/core/RpEncode.h
===================================================================
--- /tags/1.6.0/src/core/RpEncode.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpEncode.h	(revision 6168)
@@ -0,0 +1,43 @@
+
+/*
+ * ======================================================================
+ *  Rappture::encoding
+ *
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef RP_ENCODE_H
+#define RP_ENCODE_H
+
+#include <RpOutcome.h>
+#include <RpBuffer.h>
+
+namespace Rappture {
+namespace encoding {
+
+enum RapptureEncodingFlags {
+    RPENC_Z  =(1<<0),		/* Compress/Decompress the string. */
+    RPENC_B64=(1<<1),		/* Base64 encode/decode the string. */ 
+    RPENC_HDR=(1<<2),		/* Placebo. Header is by default added. */
+    RPENC_RAW=(1<<3)		/* Treat the string as raw input. 
+				 * Decode: ignore the header.
+				 * Encode: don't add a header.
+				 */
+};
+
+bool isBinary(const char* buf, int size);
+bool isBase64(const char* buf, int size);
+bool isGzipped(const char* buf, int size);
+unsigned int headerFlags(const char* buf, int size);
+bool encode(Rappture::Outcome &err, Rappture::Buffer& buf, unsigned int flags);
+bool decode(Rappture::Outcome &err, Rappture::Buffer& buf, unsigned int flags);
+
+}
+}
+#endif /*RP_ENCODE_H*/
Index: /tags/1.6.0/src/core/RpEntityRef.cc
===================================================================
--- /tags/1.6.0/src/core/RpEntityRef.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpEntityRef.cc	(revision 6168)
@@ -0,0 +1,149 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ *  Also see below text for additional information on usage and redistribution
+ *
+ * ======================================================================
+ * ----------------------------------------------------------------------
+ *  Rappture Library Entity Reference Translation Header
+ *
+ *  Begin Character Entity Translator
+ *
+ *  The next section of code implements routines used to translate
+ *  character entity references into their corresponding strings.
+ *
+ *  Examples:
+ *
+ *        &amp;          "&"
+ *        &lt;           "<"
+ *        &gt;           ">"
+ *        &quot;         "\""
+ *        &apos;         "'"
+ *
+ */
+
+#include "RpEntityRef.h"
+#include <cctype>
+#include <cstring>
+
+using namespace Rappture;
+
+typedef struct {
+    const char *replacement;                /* Replacement string. */
+    size_t length;                        /* Length of replacement string,
+                                         * including the ampersand. */
+    const char *entity;                        /* Single character entity. */
+} PredefEntityRef;
+
+static PredefEntityRef predef[] = {
+    { "&quot;",  6,  "\"" },
+    { "&amp;",   5,  "&"  },
+    { "&lt;",    4,  "<"  },
+    { "&gt;",    4,  ">"  },
+    { "&apos;",  6,  "'"  }
+};
+static int nPredefs = sizeof(predef) / sizeof (PredefEntityRef);
+
+/*
+ * EntityRef::decode --
+ *
+ *        Convert XML character data into the original text.  The trick
+ *        here determine the runs of characters that do not require 
+ *        replacements and to append the substring in one shot.  
+ */
+const char*
+EntityRef::decode (const char* string, unsigned int len)
+{
+    if (string == NULL) {
+        // Don't do anything with NULL strings.
+        return NULL;
+    }
+    _bout.clear();
+    if (len == 0) {
+        len = strlen(string);
+    }
+    const char *p, *start, *pend;
+    start = string;                     /* Mark the start of a run of
+                                         * characters that contain no
+                                         * replacements. */
+    for (p = string, pend = p + len; p < pend; /*empty*/) {
+        if (*p == '&') {
+            PredefEntityRef *ep, *epend;
+            for (ep = predef, epend = ep + nPredefs; ep < epend; ep++) {
+                size_t length;
+                length = pend - p;        /* Get the # bytes left. */
+                if ((length >= ep->length) && (ep->replacement[1] == *(p+1)) &&
+                    (strncmp(ep->replacement, p, ep->length) == 0)) {
+                    /* Found entity replacement. Append any preceding
+                     * characters into the buffer before the entity itself. */
+                    if (p > start) {
+                        _bout.append(start, p - start);
+                    }
+                    start = p + ep->length;
+                    _bout.append(ep->entity, 1);
+                    p += ep->length;
+                    goto next;
+                }
+            }
+        }
+        p++;
+    next:
+        ;
+    }
+    if (p > start) {
+        /* Append any left over characters into the buffer. */
+        _bout.append(start, p - start);
+    }
+    _bout.append("\0", 1);
+    return _bout.bytes();
+}
+
+const char*
+EntityRef::encode (const char* string, unsigned int len)
+{
+    if (string == NULL) {
+        return NULL;                   /* Don't do anything with NULL
+                                        * strings. */
+    }
+    _bout.clear();
+    if (len == 0) {
+        len = strlen(string);
+    }
+    const char *p, *start, *pend;
+    start = string;                     /* Mark the start of a run of
+                                         * characters that contain no
+                                         * replacements. */
+    for (p = string, pend = p + len; p < pend; p++) {
+        PredefEntityRef *ep, *epend;
+        for (ep = predef, epend = ep + nPredefs; ep < epend; ep++) {
+            if (ep->entity[0] == *p) {
+                /* Found entity requiring replacement. Append any preceding
+                 * characters into the buffer before the entity itself. */
+                if (p > start) {
+                    _bout.append(start, p - start);
+                }
+                start = p + 1;
+                _bout.append(ep->replacement, ep->length);
+                break;
+            }
+        }
+    }
+    if (p > start) {
+        /* Append any left over characters into the buffer. */
+        _bout.append(start, p - start);
+    }
+    _bout.append("\0", 1);
+    return _bout.bytes();
+}
+
+int
+EntityRef::size () {
+    return _bout.size();
+}
+
+
Index: /tags/1.6.0/src/core/RpEntityRef.h
===================================================================
--- /tags/1.6.0/src/core/RpEntityRef.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpEntityRef.h	(revision 6168)
@@ -0,0 +1,62 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture Library Entity Reference Translation Header
+ *
+ *  Begin Character Entity Translator
+ *
+ *  The next section of code implements routines used to translate
+ *  character entity references into their corresponding strings.
+ *
+ *  Examples:
+ *
+ *        &amp;          "&"
+ *        &lt;           "<"
+ *        &gt;           ">"
+ *        &nbsp;         " "
+ *
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ *  Also see below text for additional information on usage and redistribution
+ *
+ * ======================================================================
+ */
+
+#ifndef _RpENTITYREF_H
+#define _RpENTITYREF_H
+
+#include "RpBuffer.h"
+
+#ifdef __cplusplus
+    extern "C" {
+#endif // ifdef __cplusplus
+
+namespace Rappture {
+
+class EntityRef
+{
+    public:
+        const char* encode (const char* in, unsigned int len);
+        const char* decode (const char* in, unsigned int len);
+        int size();
+
+        EntityRef () {};
+
+        ~EntityRef() {};
+
+    private:
+        Buffer _bout;
+};
+
+} // namespace Rappture
+
+#ifdef __cplusplus
+    } // extern c
+#endif // ifdef __cplusplus
+
+#endif
Index: /tags/1.6.0/src/core/RpFortranCommon.cc
===================================================================
--- /tags/1.6.0/src/core/RpFortranCommon.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpFortranCommon.cc	(revision 6168)
@@ -0,0 +1,112 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Common Functions Source
+ *
+ *    Fortran functions common to all interfaces.
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpFortranCommon.h"
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+
+char* null_terminate(char* inStr, int len) {
+    int retVal = 0;
+    char* newStr = NULL;
+    char* current = NULL;
+
+    if (inStr && (len > 0) ) {
+
+        current = inStr+len-1;
+
+        while ((len > 0) && (isspace(*(current)))) {
+            // dont strip off newlines
+
+            if ( (*(current) == '\f')
+              || (*(current) == '\n')
+              || (*(current) == '\r')
+              || (*(current) == '\t')
+              || (*(current) == '\v') )
+            {
+                break;
+            }
+
+            if (--len) {
+                current--;
+            }
+        }
+
+        newStr = (char*) calloc(len+1,(sizeof(char)));
+        strncpy(newStr,inStr,len);
+        *(newStr+len) = '\0';
+
+        retVal++;
+    }
+
+    return newStr;
+}
+
+std::string null_terminate_str(const char* inStr, int len)
+{
+    int retVal = 0;
+    std::string newStr = "";
+    const char* current = NULL;
+
+    if (inStr) {
+
+        current = inStr+len-1;
+
+        while ((len > 0) && (isspace(*(current)))) {
+            // dont strip off newlines
+
+            if ( (*(current) == '\f')
+              || (*(current) == '\n')
+              || (*(current) == '\r')
+              || (*(current) == '\t')
+              || (*(current) == '\v') )
+            {
+                break;
+            }
+
+            if (--len) {
+                current--;
+            }
+        }
+
+        newStr = std::string(inStr,len);
+
+        retVal++;
+    }
+
+    // return retVal;
+
+    return newStr;
+}
+
+
+void fortranify(const char* inBuff, char* retText, int retTextLen) {
+
+    int inBuffLen = 0;
+    int i = 0;
+
+    if (inBuff && retText && (retTextLen > 0)) {
+        inBuffLen = strlen(inBuff);
+
+        strncpy(retText, inBuff, retTextLen);
+
+        // fortran-ify the string
+        if (inBuffLen < retTextLen) {
+            for (i = inBuffLen; i < retTextLen; i++) {
+                retText[i] = ' ';
+            }
+        }
+    }
+}
Index: /tags/1.6.0/src/core/RpFortranCommon.h
===================================================================
--- /tags/1.6.0/src/core/RpFortranCommon.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpFortranCommon.h	(revision 6168)
@@ -0,0 +1,34 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Common Functions
+ *
+ *    Fortran functions common to all interfaces.
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <string>
+
+#ifndef _RpFORTRAN_COMMON_H
+#define _RpFORTRAN_COMMON_H
+
+std::string null_terminate_str(const char* inStr, int len);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+char* null_terminate(char* inStr, int len);
+void fortranify(const char* inBuff, char* retText, int retTextLen);
+
+#ifdef __cplusplus
+}
+#endif
+    
+#endif
Index: /tags/1.6.0/src/core/RpLibrary.cc
===================================================================
--- /tags/1.6.0/src/core/RpLibrary.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpLibrary.cc	(revision 6168)
@@ -0,0 +1,2430 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture Library Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "config.h"
+#include "scew/scew.h"
+#include "scew_extras.h"
+#include "RpLibrary.h"
+#include "RpEntityRef.h"
+#include "RpEncode.h"
+#include <algorithm>
+#include <iostream>
+#include <string>
+#include <sstream>
+#include <fstream>
+#include <stdlib.h>
+#include <errno.h>
+#include <time.h>
+#include <iterator>
+#include <cctype>
+
+#ifdef _POSIX_SOURCE
+    #include <sys/time.h>
+#endif /* _POSIX_SOURCE */
+
+// no arg constructor
+// used when we dont want to read an xml file to populate the xml tree
+// we are building a new xml structure
+RpLibrary::RpLibrary ()
+    :   parser      (NULL),
+        tree        (NULL),
+        root        (NULL),
+        freeTree    (1),
+        freeRoot    (1)
+{
+    tree = scew_tree_create();
+    root = scew_tree_add_root(tree, "run");
+}
+
+RpLibrary::RpLibrary (
+            const std::string filePath
+        )
+    :   parser      (NULL),
+        tree        (NULL),
+        root        (NULL),
+        freeTree    (0),
+        freeRoot    (1)
+{
+    std::stringstream msg;
+
+    if (filePath.length() != 0) {
+        // file path should not be null or empty string unless we are
+        // creating a new xml file
+
+        parser = scew_parser_create();
+
+        // Don't ignore whitespaces!
+        // Things like string inputs may have trailing newlines that
+        // matter to the underlying application.
+        scew_parser_ignore_whitespaces(parser, 1);
+
+        /* Loads an XML file */
+        if (!scew_parser_load_file(parser, filePath.c_str()))
+        {
+            scew_error code = scew_error_code();
+            printf("Unable to load file (error #%d: %s)\n", code,
+                   scew_error_string(code));
+            msg << "Unable to load file (error #" << code
+                << ": " << scew_error_string(code) << ")\n";
+
+            if (code == scew_error_expat)
+            {
+                enum XML_Error expat_code =
+                    scew_error_expat_code(parser);
+                printf("Expat error #%d (line %d, column %d): %s\n",
+                       expat_code,
+                       scew_error_expat_line(parser),
+                       scew_error_expat_column(parser),
+                       scew_error_expat_string(expat_code));
+                msg << "Expat error #" << expat_code << " (line "
+                    << scew_error_expat_line(parser) << ", column "
+                    << scew_error_expat_column(parser) << "): "
+                    << "\n";
+            }
+
+            fflush(stdout);
+            scew_parser_free(parser);
+            parser = NULL;
+
+            // update the status of the call
+            status.error(msg.str().c_str());
+            status.addContext("RpLibrary::RpLibrary()");
+        }
+        else
+        {
+            tree = scew_parser_tree(parser);
+            freeTree = 0;
+            root = scew_tree_root(tree);
+        }
+    }
+    else {
+        // create a new xml (from an empty file)
+        freeTree = 1;
+        tree = scew_tree_create();
+        root = scew_tree_add_root(tree, "run");
+    }
+}
+
+
+// copy constructor
+// for some reason making this a const gives me problems 
+// when calling xml()
+// need help looking into this
+// RpLibrary ( const RpLibrary& other )
+RpLibrary::RpLibrary ( const RpLibrary& other )
+    : parser    (NULL),
+      tree      (NULL),
+      root      (NULL),
+      freeTree  (0),
+      freeRoot  (1)
+{
+    std::stringstream msg;
+    std::string buffer;
+    int buffLen;
+
+    // fill in the current RpLibrary's data with other's data
+    parser = scew_parser_create();
+    scew_parser_ignore_whitespaces(parser, 1);
+
+    // Loads the XML from other
+    // the length cannot be 0 because xml() should not be returning 
+    // empty strings
+    buffer = other.xml();
+    buffLen = buffer.length();
+
+    if (buffLen > 0) {
+        if (!scew_parser_load_buffer(parser,buffer.c_str(),buffLen))
+        {
+            // there was an error loading the buffer
+            // how do you tell the user, you couldn't make a copy?
+            scew_error code = scew_error_code();
+            printf("Unable to load buffer (error #%d: %s)\n", code,
+                   scew_error_string(code));
+            msg << "Unable to load file (error #" << code
+                << ": " << scew_error_string(code) << ")\n";
+
+            if (code == scew_error_expat)
+            {
+                enum XML_Error expat_code =
+                    scew_error_expat_code(parser);
+                printf("Expat error #%d (line %d, column %d): %s\n",
+                       expat_code,
+                       scew_error_expat_line(parser),
+                       scew_error_expat_column(parser),
+                       scew_error_expat_string(expat_code));
+                msg << "Expat error #" << expat_code << " (line "
+                    << scew_error_expat_line(parser) << ", column "
+                    << scew_error_expat_column(parser) << "): "
+                    << "\n";
+            }
+
+            // return an empty RpLibrary?
+            // return EXIT_FAILURE;
+
+            parser = NULL;
+
+            // update the status of the call
+            status.error(msg.str().c_str());
+            status.addContext("RpLibrary::RpLibrary()");
+        }
+        else {
+
+            // parsing the buffer was successful
+            // populate the new data members.
+
+            tree = scew_parser_tree(parser);
+            freeTree = 0;
+            freeRoot = 1;
+            root = scew_tree_root(tree);
+
+        }
+
+    } // end if (buffer.length() != 0) {
+}// end copy constructor
+
+// copy assignment operator
+// for some reason making this a const gives me problems 
+// when calling xml()
+// need help looking into this
+// RpLibrary& operator= (const RpLibrary& other) {
+RpLibrary&
+RpLibrary::operator= (const RpLibrary& other) {
+
+    std::stringstream msg;
+    std::string buffer;
+    int buffLen;
+
+    scew_parser* tmp_parser;
+    scew_tree* tmp_tree;
+    scew_element* tmp_root;
+    int tmp_freeTree;
+    int tmp_freeRoot;
+
+    if (this != &other) {
+
+        tmp_parser   = parser;
+        tmp_tree     = tree;
+        tmp_root     = root;
+        tmp_freeTree = freeTree;
+        tmp_freeRoot = freeRoot;
+
+        // fill in the current RpLibrary's data with other's data
+        parser = scew_parser_create();
+        scew_parser_ignore_whitespaces(parser, 1);
+
+        // Loads the XML from other
+        // the length cannot be 0 because xml() 
+        // should not be returning empty strings
+        buffer = other.xml();
+        buffLen = buffer.length();
+
+        if (buffLen > 0) {
+            if (!scew_parser_load_buffer(parser,buffer.c_str(),buffLen))
+            {
+                // there was an error loading the buffer
+                // how do you tell the user, you couldn't make a copy?
+                scew_error code = scew_error_code();
+                printf("Unable to load buffer (error #%d: %s)\n", code,
+                       scew_error_string(code));
+                msg << "Unable to load file (error #" << code
+                    << ": " << scew_error_string(code) << ")\n";
+
+                if (code == scew_error_expat)
+                {
+                    enum XML_Error expat_code = 
+                        scew_error_expat_code(parser);
+                    printf("Expat error #%d (line %d, column %d): %s\n",
+                           expat_code,
+                           scew_error_expat_line(parser),
+                           scew_error_expat_column(parser),
+                           scew_error_expat_string(expat_code));
+                    msg << "Expat error #" << expat_code << " (line "
+                        << scew_error_expat_line(parser) << ", column "
+                        << scew_error_expat_column(parser) << "): "
+                        << "\n";
+                }
+
+                // return things back to the way they used to be
+                // or maybe return an empty RpLibrary?
+                // return EXIT_FAILURE;
+
+                // return this object to its previous state.
+                parser = tmp_parser;
+
+                // update the status of the call
+                status.error(msg.str().c_str());
+                status.addContext("RpLibrary::RpLibrary()");
+            }
+            else {
+
+                // parsing the buffer was successful
+                // populate the new data members.
+
+                tree = scew_parser_tree(parser);
+                freeTree = 0;
+                freeRoot = 1;
+                root = scew_tree_root(tree);
+
+                // free the current RpLibrary's data
+                // we do the free so far down so we can see if
+                // parsing the other object's xml fails.
+                // if the parsing fails, we can still return this
+                // object to its previous state.
+                if (tmp_tree && tmp_freeTree) {
+                    scew_tree_free(tmp_tree);
+                    tmp_tree = NULL;
+                }
+                if (tmp_parser) {
+                    scew_parser_free(tmp_parser);
+                    tmp_parser = NULL;
+                }
+                if (tmp_root && tmp_freeRoot) {
+                    tmp_root = NULL;
+                }
+            }
+
+        } // end if (buffer.length() != 0) {
+    } // end if (this != &other)
+
+    return *this;
+} // end operator=
+
+
+// default destructor
+RpLibrary::~RpLibrary ()
+{
+    // clean up dynamic memory
+
+    if (tree && freeTree) {
+        scew_tree_free(tree);
+        tree = NULL;
+    }
+    if (parser) {
+        scew_parser_free(parser);
+        parser = NULL;
+    }
+    if (!freeTree && root && freeRoot) {
+        scew_element_free(root);
+        root = NULL;
+    }
+}
+/**********************************************************************/
+// METHOD: _get_attribute()
+/// Return the attribute value matching the provided attribute name.
+/**
+ */
+
+std::string
+RpLibrary::_get_attribute (
+    scew_element* element,
+    std::string attributeName
+    ) const
+{
+    scew_attribute* attribute = NULL;
+    std::string attrVal;
+
+    if (element != NULL)
+    {
+        if (scew_attribute_count(element) > 0) {
+
+            while((attribute=scew_attribute_next(element, attribute)) != NULL)
+            {
+                if (    strcmp( scew_attribute_name(attribute),
+                                attributeName.c_str()) == 0     ){
+                    attrVal = scew_attribute_value(attribute);
+                }
+            }
+        }
+        else {
+            // there are no attributes, count == 0
+        }
+    }
+
+    return attrVal;
+}
+
+/**********************************************************************/
+// METHOD: _path2list()
+/// Convert a path into a list of element names.
+/**
+ */
+
+int
+RpLibrary::_path2list (
+    std::string& path,
+    std::string** list,
+    int listLen
+    ) const
+{
+    std::string::size_type pos = 0;
+    std::string::size_type start = 0;
+    std::string::size_type end = path.length();
+    int index = 0;
+    int retVal = 0;
+    unsigned int parenDepth = 0;
+
+    for (   pos = 0; (pos < end) && (index < listLen); pos++) {
+        if (path[pos] == '(') {
+            parenDepth++;
+            continue;
+        }
+
+        if (path[pos] == ')') {
+            parenDepth--;
+            continue;
+        }
+
+        if ( (path[pos] == '.') && (parenDepth == 0) ) {
+            list[index] = new std::string(path.substr(start,pos-start));
+            index++;
+            start = pos + 1;
+        }
+    }
+
+    // add the last path to the list
+    // error checking for path names like p1.p2.
+    if ( (start < end) && (pos == end) ) {
+        list[index] = new std::string(path.substr(start,pos-start));
+    }
+    retVal = index;
+    index++;
+
+    // null out the rest of the pointers so we know where to stop free'ing
+    while (index < listLen) {
+        list[index++] = NULL;
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// METHOD: _node2name()
+/// Retrieve the id of a node.
+/**
+ */
+
+std::string
+RpLibrary::_node2name (scew_element* node) const
+{
+    // XML_Char const* name = _get_attribute(node,"id");
+    std::string name = _get_attribute(node,"id");
+    std::stringstream retVal;
+    XML_Char const* type = NULL;
+    scew_element* parent = NULL;
+    scew_element** siblings = NULL;
+    unsigned int count = 0;
+    int tmpCount = 0;
+    int index = 0;
+    std::string indexStr;
+
+    type = scew_element_name(node);
+    parent = scew_element_parent(node);
+
+    if (parent) {
+
+        // if (name == NULL) {
+        if (name.empty()) {
+            siblings = scew_element_list(parent, type, &count);
+            if (count > 0) {
+                tmpCount = count;
+                while ((index < tmpCount) && (siblings[index] != node)) {
+                    index++;
+                }
+
+                if (index < tmpCount) {
+
+                    if (index > 0) {
+
+                        retVal << type << --index;
+                    }
+                    else {
+
+                        retVal << type;
+                    }
+
+                    /*
+                    if (retVal == NULL) {
+                        // error with allocating space
+                        return NULL;
+                    }
+                    */
+                }
+            }
+
+            scew_element_list_free(siblings);
+
+        }
+        else {
+
+            retVal << name;
+        }
+    }
+
+    return (retVal.str());
+}
+
+/**********************************************************************/
+// METHOD: _node2comp()
+/// Retrieve the component name of a node
+/**
+ */
+
+std::string
+RpLibrary::_node2comp (scew_element* node) const
+{
+    // XML_Char const* name = _get_attribute(node,"id");
+    std::string id = _get_attribute(node,"id");
+    std::stringstream retVal;
+    XML_Char const* type = NULL;
+    scew_element* parent = NULL;
+    scew_element** siblings = NULL;
+    unsigned int count = 0;
+    int tmpCount = 0;
+    int index = 0;
+    std::string indexStr;
+
+    type = scew_element_name(node);
+    parent = scew_element_parent(node);
+
+    if (parent) {
+        if (id.empty()) {
+            siblings = scew_element_list(parent, type, &count);
+            if (count > 0) {
+                tmpCount = count;
+                // figure out what the index value should be
+                while ((index < tmpCount) && (siblings[index] != node)) {
+                    index++;
+                }
+
+                if (index < tmpCount) {
+                    if (index > 0) {
+                        // retVal << type << --index;
+                        retVal << type << index;
+                    }
+                    else {
+                        retVal << type;
+                    }
+                }
+
+            }
+            else {
+                // count == 0 ??? this state should never be reached
+            }
+            scew_element_list_free(siblings);
+
+        }
+        else {
+            // node has attribute id
+            retVal << type << "(" << id << ")";
+
+        }
+    }
+
+    return (retVal.str());
+}
+
+/**********************************************************************/
+// METHOD: _node2path()
+/// Retrieve the full path name of a node
+/**
+ */
+
+std::string
+RpLibrary::_node2path (scew_element* node) const
+{
+
+    std::stringstream path;
+    scew_element* snode = node;
+    scew_element* parent = NULL;
+
+    if (snode) {
+        parent = scew_element_parent(snode);
+        path.clear();
+
+        while (snode && parent) {
+
+            if (!path.str().empty()) {
+                path.str(_node2comp(snode) + "." + path.str());
+                // path.str("." + _node2comp(snode) + path.str());
+            }
+            else {
+                path.str(_node2comp(snode));
+                // path.str("." + _node2comp(snode));
+            }
+
+            snode = scew_element_parent(snode);
+            parent = scew_element_parent(snode);
+        }
+    }
+
+    return (path.str());
+}
+
+/**********************************************************************/
+// METHOD: _splitPath()
+/// Split a path (component) name into its tag name, index, and id
+/**
+ */
+
+int
+RpLibrary::_splitPath ( std::string& path,
+                        std::string& tagName,
+                        int* idx,
+                        std::string& id ) const
+{
+    int stop = 0;
+    int start = 0;
+    int index = path.length();
+
+    if (index) {
+        index--;
+    }
+
+    if (!path.empty()) {
+        if (path[index] == ')') {
+            stop = index;
+            while (path[index] != '(') {
+                index--;
+            }
+            start = index+1;
+            // strncpy(id,path+start,stop-start);
+            // id = new std::string(path.substr(start,stop-start));
+            id = path.substr(start,stop-start);
+            index--;
+        }
+        if (isdigit(path[index])) {
+            stop = index;
+            while (isdigit(path[index])) {
+                index--;
+            }
+            // sscanf(path[index+1],"%d",idx);
+            sscanf(path.c_str()+index+1,"%d",idx);
+        }
+        if (isalpha(path[index])) {
+            start = 0;
+            stop = index+1;
+            // tagName = new std::string(path.substr(start,stop-start));
+            tagName = path.substr(start,stop-start);
+            // strncpy(tagName,path+start,stop-start);
+        }
+    }
+    else {
+        tagName = "";
+        *idx = 0;
+        id = "";
+    }
+
+    return 1;
+}
+
+/**********************************************************************/
+// METHOD: _find()
+/// Find or create a node and return it.
+/**
+ */
+
+scew_element*
+RpLibrary::_find(std::string path, int create) const
+{
+    std::string tagName = "";
+    std::string id = "";
+    int index = 0;
+    int listLen = (path.length()/2)+1;
+    std::string** list;
+    int path_size = 0;
+    int listIdx = 0;
+    unsigned int count = 0;
+    int tmpCount = 0;
+    int lcv = 0;
+    std::string tmpId;
+
+    scew_element* tmpElement = this->root;
+    scew_element* node = NULL;
+    scew_element** eleList = NULL;
+
+
+    if (path.empty()) {
+        // user gave an empty path
+        return tmpElement;
+    }
+
+    list = (std::string **) calloc(listLen, sizeof( std::string * ) );
+
+    if (!list) {
+        // error calloc'ing space for list
+        return NULL;
+    }
+
+    path_size = _path2list (path,list,listLen);
+
+    while ( (listIdx <= path_size) && (tmpElement != NULL ) ){
+
+        _splitPath(*(list[listIdx]),tagName,&index,id);
+
+        if (id.empty()) {
+            /*
+            # If the name is like "type2", then look for elements with
+            # the type name and return the one with the given index.
+            # If the name is like "type", then assume the index is 0.
+            */
+
+            eleList = scew_element_list(tmpElement, tagName.c_str(), &count);
+            tmpCount = count;
+            if (index < tmpCount) {
+                node = eleList[index];
+            }
+            else {
+                /* there is no element with the specified index */
+                node = NULL;
+            }
+
+            scew_element_list_free(eleList);
+            eleList = NULL;
+        }
+        else {
+
+            /* what if its like type2(id) ? */
+            /* still unresolved */
+
+            /*
+            # If the name is like "type(id)", then look for elements
+            # that match the type and see if one has the requested name.
+            # if the name is like "(id)", then look for any elements
+            # with the requested name.
+            */
+
+            if (!tagName.empty()) {
+                eleList = scew_element_list(tmpElement, tagName.c_str(), &count);
+            }
+            else {
+                eleList = scew_element_list_all(tmpElement, &count);
+            }
+
+            tmpCount = count;
+            for (lcv = 0; (lcv < tmpCount); lcv++) {
+                tmpId = _get_attribute(eleList[lcv], "id");
+                if (!tmpId.empty()) {
+                    if (id == tmpId) {
+                        node = eleList[lcv];
+                        break;
+                    }
+                }
+            }
+
+            if (lcv >= tmpCount) {
+                node = NULL;
+            }
+
+            scew_element_list_free(eleList);
+            eleList = NULL;
+
+        }
+
+        if (node == NULL) {
+            if (create == NO_CREATE_PATH) {
+                // break out instead of returning because we still need to
+                // free the list variable
+                tmpElement = node;
+                break;
+            }
+            else {
+                // create == CREATE_PATH
+                // we should create the rest of the path
+
+                // create the new element
+                // need to figure out how to properly number the new element
+                node = scew_element_add(tmpElement,tagName.c_str());
+                if (! node) {
+                    // a new element was not created
+                }
+
+                // add an attribute and attrValue to the new element
+                if (!id.empty()) {
+                    scew_element_add_attr_pair(node,"id",id.c_str());
+                }
+            }
+        }
+
+        tagName = "";
+        id = "";
+        index = 0;
+        tmpElement = node;
+        listIdx++;
+    }
+
+    // need to free the strings inside of list
+
+    if (list) {
+        for (listIdx = 0; listIdx < listLen; listIdx++) {
+            if (list[listIdx]) {
+                delete(list[listIdx]);
+                list[listIdx] = NULL;
+            }
+        }
+
+        free(list);
+        list = NULL;
+    }
+
+
+    return tmpElement;
+}
+
+/**********************************************************************/
+// METHOD: _checkPathConflict(scew_element *nodeA,scew_element *nodeB)
+/// check to see if nodeA is in nodeB's path
+/**
+ * This is used by put() function (the RpLibrary flavor). It is
+ * used to check if nodeA can be safely deleted and not effect nodeB
+ */
+
+int
+RpLibrary::_checkPathConflict(scew_element *nodeA, scew_element *nodeB) const
+{
+    scew_element *testNode = NULL;
+
+    if ( (nodeA == NULL) || (nodeB == NULL) ) {
+        return 0;
+    }
+
+    if (nodeA == nodeB) {
+        return 1;
+    }
+
+    testNode = nodeB;
+
+    while ((testNode = scew_element_parent(testNode)) != NULL) {
+        if (testNode == nodeA) {
+            return 1;
+        }
+    }
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: element()
+/// Search the path of a xml tree and return a RpLibrary node.
+/**
+ * It is the user's responsibility to delete the object when 
+ * they are finished using it?, else i need to make this static
+ */
+
+RpLibrary*
+RpLibrary::element (std::string path) const
+{
+    RpLibrary* retLib = NULL;
+    scew_element* retNode = NULL;
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return NULL;
+    }
+
+    /*
+    if (path.empty()) {
+        // an empty path returns the current RpLibrary
+        return this;
+    }
+    */
+
+    if (path.empty()) {
+        // this should be a smart pointer, 
+        // if someone deletes the original this->root, this object is void
+        // and will be a memory leak.
+        // retNode = this->root;
+        retLib = new RpLibrary(*this);
+    }
+    else {
+        // get the node located at path
+        retNode = _find(path,NO_CREATE_PATH);
+
+        // if the node exists, create a rappture library object for it.
+        if (retNode) {
+            retLib = new RpLibrary( retNode,this->tree );
+        }
+    }
+
+    return retLib;
+}
+
+/**********************************************************************/
+// METHOD: entities()
+/// Search the path of a xml tree and return a list of its entities.
+/**
+ */
+
+std::list<std::string>
+RpLibrary::entities  (std::string path) const
+{
+    std::list<std::string> queue;
+    std::list<std::string>::iterator iter;
+    std::list<std::string> retList;
+    std::list<std::string> childList;
+    std::list<std::string>::iterator childIter;
+
+    RpLibrary* ele = NULL;
+    std::string pathBack = "";
+
+    RpLibrary* child = NULL;
+    std::string childType = "";
+    std::string childPath = "";
+    std::string paramsPath = "";
+
+    RpLibrary* cchild = NULL;
+    std::string cchildType = "";
+    std::string cchildPath = "";
+
+    queue.push_back(path);
+    iter = queue.begin();
+
+    while( iter != queue.end() ) {
+        ele = this->element(*iter);
+        child = NULL;
+
+        if ((*iter).empty()) {
+            pathBack = "";
+        }
+        else {
+            pathBack = *iter + ".";
+        }
+
+        while ( ele && (child = ele->children("",child)) != NULL ) {
+            childList.push_back(child->nodeComp());
+            delete child;
+        }
+
+        childIter = childList.begin();
+
+        while (childIter != childList.end()) {
+            child = ele->element(*childIter);
+
+            childType = child->nodeType();
+            childPath = child->nodeComp();
+            if ( (childType == "group") || (childType == "phase") ) {
+                // add this path to the queue for paths to search
+                queue.push_back(pathBack+childPath);
+            }
+            else if (childType == "structure") {
+                // add this path to the return list
+                retList.push_back(pathBack+child->nodeComp());
+
+                // check to see if there is a ".current.parameters" node
+                // if so, add them to the queue list for paths to search
+                paramsPath = "current.parameters";
+                if (child->element(paramsPath) != NULL) {
+                    queue.push_back((pathBack+child->nodeComp()+"."+paramsPath));
+                }
+            }
+            else {
+                // add this path to the return list
+                retList.push_back(pathBack+child->nodeComp());
+
+                // look for embedded groups and phases
+                // add them to the queue list for paths to search
+                cchild = NULL;
+                while ( (cchild = child->children("",cchild)) != NULL ) {
+                    cchildType = cchild->nodeType();
+                    cchildPath = cchild->nodePath();
+                    if ( (cchildType == "group") || (cchildType == "phase") ) {
+                        // add this path to the queue for paths to search
+                        queue.push_back(cchildPath);
+                    }
+                    delete cchild;
+                }
+            }
+
+            childList.erase(childIter);
+            childIter = childList.begin();
+            delete child;
+        }
+
+        queue.erase(iter);
+        iter = queue.begin();
+    }
+
+    return retList;
+}
+
+/**********************************************************************/
+// METHOD: diff()
+/// find the differences between two xml trees.
+/**
+ */
+
+std::list<std::string>
+RpLibrary::diff (RpLibrary* otherLib, std::string path) const
+{
+
+    std::list<std::string> thisVal; // two node list of specific entity's value
+    std::list<std::string> otherVal; // two node list of specific entity's value
+
+    std::list<std::string> thisv; // list of this library's entities
+    std::list<std::string>::iterator thisIter;
+
+    std::list<std::string> otherv; // list of other library's entities
+    std::list<std::string>::iterator otherIter;
+
+    std::list<std::string> retList;
+
+    std::string entry = "";
+    std::string thisSpath = "";  // temp string
+    std::string otherSpath = ""; // temp string
+
+    if ( (!this->root) || (!otherLib->root) ) {
+        // library doesn't exist, do nothing;
+        return retList;
+    }
+
+
+    thisv = this->entities(path);
+    otherv = otherLib->entities(path);
+
+    thisIter = thisv.begin();
+
+    while (thisIter != thisv.end() ) {
+        // reset otherIter for a new search.
+        otherIter = otherv.begin();
+        while ( (otherIter != otherv.end()) && (*otherIter != *thisIter) ) {
+            otherIter++;
+        }
+
+        //if (!path.empty()) {
+        //    thisSpath = path + "." + *thisIter;
+        //}
+        //else {
+        //    thisSpath = *thisIter;
+        //}
+        thisSpath = *thisIter;
+
+        if (otherIter == otherv.end()) {
+            // we've reached the end of the search 
+            // and did not find anything, mark this as a '-'
+            thisVal = this->value(thisSpath);
+            retList.push_back("-");
+            retList.push_back(thisSpath);
+            retList.push_back(thisVal.front());
+            retList.push_back("");
+        }
+        else {
+
+            //if (!path.empty()) {
+            //    otherSpath = path + "." + *otherIter;
+            //}
+            //else {
+            //    otherSpath = *otherIter;
+            //}
+            otherSpath = *otherIter;
+
+            thisVal = this->value(thisSpath);
+            otherVal = otherLib->value(otherSpath);
+            if (thisVal.back() != otherVal.back()) {
+                // add the difference to the return list
+                retList.push_back("c");
+                retList.push_back(otherSpath);
+                retList.push_back(thisVal.front());
+                retList.push_back(otherVal.front());
+            }
+
+            // remove the last processed value from otherv
+            otherv.erase(otherIter);
+        }
+
+        // increment thisv's iterator.
+        thisIter++;
+    }
+
+    // add any left over values in otherv to the return list
+    otherIter = otherv.begin();
+    while ( otherIter != otherv.end() ) {
+
+        //if (!path.empty()) {
+        //    otherSpath = path + "." + *otherIter;
+        //}
+        //else {
+        //    otherSpath = *otherIter;
+        //}
+        otherSpath = *otherIter;
+
+        otherVal = otherLib->value(otherSpath);
+
+        retList.push_back("+");
+        retList.push_back(otherSpath);
+        retList.push_back("");
+        retList.push_back(otherVal.front());
+
+        otherv.erase(otherIter);
+        otherIter = otherv.begin();
+    }
+
+    return retList;
+}
+
+/**********************************************************************/
+// METHOD: value(path)
+/// Return a 2 element list containing the regular and normalized values.
+/**
+ */
+
+std::list<std::string>
+RpLibrary::value (std::string path) const
+{
+    std::list<std::string> retArr;
+
+    std::string raw = "";
+    std::string val = "";
+
+    RpLibrary* ele = NULL;
+    RpLibrary* tele = NULL;
+
+    int childCount = 0;
+    std::stringstream valStr;
+
+    ele = this->element(path);
+
+    if (ele != NULL ) {
+
+        if (ele->nodeType() == "structure") {
+            raw = path;
+            // try to find a label to represent the structure
+            val = ele->get("about.label");
+
+            if (val == "") {
+               val = ele->get("current.about.label");
+            }
+
+            if (val == "") {
+               tele = ele->element("current");
+               if ( (tele != NULL) && (tele->nodeComp() != "") ) {
+                   tele->children("components",NULL,"",&childCount);
+                   valStr << "<structure> with " << childCount  << " components";
+                   val = valStr.str();
+               }
+            }
+
+        }
+        /*
+        else if (ele->nodeType() == "number") {
+            raw = "";
+            retArr[1] = "";
+            if ( (tele = ele->element("current")) != NULL) {
+                raw = tele->get();
+            }
+            else if ( (tele = ele->element("default")) != NULL) {
+                raw = tele->get();
+            }
+            val = raw
+            if ( "" != raw) {
+                // normalize the units
+                units = ele->get("units");
+                if ( "" != units) {
+
+                }
+        }
+        */
+        else {
+            raw = "";
+            if ( (tele = ele->element("current")) != NULL) {
+                raw = tele->get();
+            }
+            else if ( (tele = ele->element("default")) != NULL) {
+                raw = tele->get();
+            }
+            val = raw;
+        }
+    }
+
+    retArr.push_back(raw);
+    retArr.push_back(val);
+
+    return retArr;
+}
+
+/**********************************************************************/
+// METHOD: parent()
+/// Search the path of a xml tree and return its parent.
+/**
+ * It is the user's responsibility to delete the object when 
+ * they are finished using it?, else i need to make this static
+ */
+
+RpLibrary*
+RpLibrary::parent (std::string path) const
+{
+    RpLibrary* retLib = NULL;
+    std::string parentPath = "";
+    scew_element* ele = NULL;
+    scew_element* retNode = NULL;
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return NULL;
+    }
+
+    if (path.empty()) {
+        // an empty path returns the parent of the current RpLibrary
+        ele = this->root;
+    }
+    else {
+        // else find the node representing the provided path
+        ele = _find(path,NO_CREATE_PATH);
+    }
+
+    if (ele != NULL) {
+        retNode = scew_element_parent(ele);
+        if (retNode) {
+            // allocate a new rappture library object for the node
+            retLib = new RpLibrary( retNode,this->tree );
+        }
+    }
+    else {
+        // path was not found by _find
+    }
+
+
+    return retLib;
+}
+
+/**********************************************************************/
+// METHOD: copy()
+/// Copy the value from fromPath to toPath.
+//  Copy the value from fromObj.fromPath to toPath 
+//  of the current rappture library object. This can copy rappture
+//  library elements within or between xml trees.
+/**
+ */
+
+RpLibrary&
+RpLibrary::copy (   std::string toPath,
+                    RpLibrary* fromObj,
+                    std::string fromPath )
+{
+    RpLibrary* value = NULL;
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        // need a good way to raise error, and this is not it.
+        return *this;
+    }
+
+    if (fromObj == NULL) {
+        fromObj = this;
+    }
+
+    if ( (fromObj == this) && (toPath == fromPath) ) {
+        /* cannot copy over myself, causes path to disappear */
+        return (*this);
+    }
+
+    value = fromObj->element(fromPath);
+
+    if ( !value ) {
+        status.error("fromPath could not be found within fromObj");
+        status.addContext("RpLibrary::copy");
+        return *this;
+    }
+
+    this->put(toPath, value);
+    status.addContext("RpLibrary::copy");
+    delete value;
+
+    return (*this);
+
+}
+
+/**********************************************************************/
+// METHOD: children()
+/// Return the next child of the node located at 'path'
+//
+// The lookup is reset when you send a NULL rpChilNode.
+// User is responsible for deleting returned values
+// 
+/**
+ */
+
+/*
+RpLibrary*
+RpLibrary::children (   std::string path, 
+                        RpLibrary* rpChildNode, 
+                        std::string type,
+                        int* childCount)
+{
+    static std::string old_path = "";
+    static RpLibrary* retLib = NULL; 
+    int myChildCount = 0;
+    scew_element* parentNode = NULL;
+    scew_element* childNode = NULL;
+    std::string childName = "";
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return NULL;
+    }
+
+
+    if (path.empty()) {
+        // an empty path uses the current RpLibrary as parent
+        parentNode = this->root;
+    }
+    else {
+        // check to see if this path is the same as the one set
+        // in the last call to this function.
+        // if so, then we dont need to reset the parentNode
+        //
+        // this check is probably more dependent on rpChildNode
+        // because we want to see if the person want to continue
+        // an old search or start from the beginning of the child list
+        //
+        if ( (path.compare(old_path) == 0) && (rpChildNode != NULL) ) {
+            parentNode = NULL;
+        }
+        // we need to search for a new parentNode
+        else {
+            parentNode = _find(path,NO_CREATE_PATH);
+            if (parentNode == NULL) {
+                // node not found
+                // add error code here
+                return NULL;
+            }
+        }
+    }
+
+    old_path = path;
+
+
+    if (rpChildNode) {
+        childNode = rpChildNode->root;
+    }
+
+    if (parentNode) {
+        myChildCount = scew_element_count(parentNode);
+    }
+
+    if (childCount) {
+        *childCount = myChildCount;
+    }
+
+    // clean up old memory
+    delete retLib;
+
+    if ( (childNode = scew_element_next(parentNode,childNode)) ) {
+
+        if (!type.empty()) {
+            childName = scew_element_name(childNode);
+            // we are searching for a specific child name
+            // keep looking till we find a name that matches the type.
+            // if the current name does not match out search type, 
+            // grab the next child and check to see if its null
+            // if its not null, get its name and test for type again
+            while (  (type != childName)
+                  && (childNode = scew_element_next(parentNode,childNode)) ) {
+
+                childName = scew_element_name(childNode);
+            }
+            if (type == childName) {
+                // found a child with a name that matches type
+                retLib = new RpLibrary( childNode,this->tree );
+            }
+            else {
+                // no children with names that match 'type' were found
+                retLib = NULL;
+            }
+        }
+        else {
+            retLib = new RpLibrary( childNode,this->tree );
+        }
+    }
+    else {
+        // somthing happened within scew, get error code and display
+        // its probable there are no more child elements left to report
+        retLib = NULL;
+    }
+
+    return retLib;
+}
+*/
+
+RpLibrary*
+RpLibrary::children (   std::string path,
+                        RpLibrary* rpChildNode,
+                        std::string type,
+                        int* childCount)
+{
+    // this is static for efficency reasons
+    static std::string old_path = "";
+    // this was static so user never has to delete the retLib.
+    // should be replaced by a smart pointer
+    // static RpLibrary* retLib = NULL; 
+    RpLibrary* retLib = NULL; 
+    int myChildCount = 0;
+    scew_element* parentNode = NULL;
+    scew_element* childNode = NULL;
+    std::string childName = "";
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return NULL;
+    }
+
+
+    // check to see if the last call to this function
+    // was searching for children of the same path.
+    if ( (path.compare(old_path) == 0) && (rpChildNode != NULL) ) {
+        parentNode = NULL;
+    }
+    else if (path.empty()) {
+        // searching for children in a new path.
+        // an empty path uses the current RpLibrary as parent
+        parentNode = this->root;
+    }
+    else {
+        // searching for children in a new, non-empty, path.
+        parentNode = _find(path,NO_CREATE_PATH);
+        if (parentNode == NULL) {
+            // node not found
+            // add error code here
+            return NULL;
+        }
+    }
+
+    old_path = path;
+
+    if (rpChildNode) {
+        childNode = rpChildNode->root;
+    }
+
+    if (parentNode) {
+        myChildCount = scew_element_count(parentNode);
+        if (childCount) {
+            *childCount = myChildCount;
+        }
+    }
+
+    // clean up old memory
+    // delete retLib;
+
+    if ( (childNode = scew_element_next(parentNode,childNode)) ) {
+
+        if (!type.empty()) {
+            childName = scew_element_name(childNode);
+            // we are searching for a specific child name
+            // keep looking till we find a name that matches the type.
+            // if the current name does not match out search type, 
+            // grab the next child and check to see if its null
+            // if its not null, get its name and test for type again
+            while (  (type != childName)
+                  && (childNode = scew_element_next(parentNode,childNode)) ) {
+
+                childName = scew_element_name(childNode);
+            }
+            if (type == childName) {
+                // found a child with a name that matches type
+                retLib = new RpLibrary( childNode,this->tree );
+            }
+            else {
+                // no children with names that match 'type' were found
+                retLib = NULL;
+            }
+        }
+        else {
+            retLib = new RpLibrary( childNode,this->tree );
+        }
+    }
+    else {
+        // somthing happened within scew, get error code and display
+        // its probable there are no more child elements left to report
+        retLib = NULL;
+    }
+
+    return retLib;
+}
+
+/**********************************************************************/
+// METHOD: childCount()
+/// Returns a std::list<RpLibrary*> of all children under 'path'
+//
+// 
+/**
+ */
+
+RpLibrary&
+RpLibrary::childCount(std::string path, int* childCount)
+{
+    if (this->root) {
+        scew_element* parentNode;
+        int myChildCount = 0;
+
+        parentNode = NULL;
+        if (path.empty()) {
+            // an empty path uses the current RpLibrary as parent
+            parentNode = this->root;
+        }
+
+        if (parentNode) {
+            myChildCount = scew_element_count(parentNode);
+        }
+
+        if (childCount) {
+            *childCount = myChildCount;
+        }
+    }
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: isNull()
+/// returns whether this RpLibrary is a valid library node
+//
+// 
+/**
+ */
+
+bool
+RpLibrary::isNull () const
+{
+    if (this->root) {
+        return false;
+    }
+
+    return true;
+}
+
+/**********************************************************************/
+// METHOD: get()
+/// Return the string value of the object held at location 'path'
+/**
+ */
+
+std::string
+RpLibrary::get (std::string path, int translateFlag) const
+{
+    return (this->getString(path, translateFlag));
+}
+
+/**********************************************************************/
+// METHOD: getString()
+/// Return the string value of the object held at location 'path'
+/**
+ */
+
+std::string
+RpLibrary::getString (std::string path, int translateFlag) const
+{
+    Rappture::EntityRef ERTranslator;
+    scew_element* retNode = NULL;
+    XML_Char const* retCStr = NULL;
+    const char* translatedContents = NULL;
+    std::string retStr = "";
+    Rappture::Buffer inData;
+
+    status.addContext("RpLibrary::getString");
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return retStr;
+    }
+
+    retNode = _find(path,NO_CREATE_PATH);
+
+    if (retNode == NULL) {
+        // need to raise error
+        return retStr;
+    }
+
+    retCStr = scew_element_contents(retNode);
+    if (!retCStr) {
+        return retStr;
+    }
+    inData = Rappture::Buffer(retCStr);
+
+    if (Rappture::encoding::headerFlags(inData.bytes(),inData.size()) != 0) {
+        // data is encoded,
+        // coming from an rplib, this means it was at least base64 encoded
+        // there is no reason to do entity translation
+        // because base64 character set does not include xml entity chars
+        if (!Rappture::encoding::decode(status, inData, 0)) {
+            return retStr;
+        }
+        retStr = std::string(inData.bytes(),inData.size());
+    } else {
+        // check translateFlag to see if we need to translate entity refs
+        if (translateFlag == RPLIB_TRANSLATE) {
+            translatedContents = ERTranslator.decode(inData.bytes(),
+                                                     inData.size());
+            if (translatedContents == NULL) {
+                // translation failed
+                if (!status) {
+                    status.error("Error while translating entity references");
+                    return retStr;
+                }
+            } else {
+                // subtract 1 from size because ERTranslator adds extra NULL
+                retStr = std::string(translatedContents,ERTranslator.size()-1);
+                translatedContents = NULL;
+            }
+        }
+    }
+    inData.clear();
+    return retStr;
+}
+
+/**********************************************************************/
+// METHOD: getDouble()
+/// Return the double value of the object held at location 'path'
+/**
+ */
+
+double
+RpLibrary::getDouble (std::string path) const
+{
+    std::string retValStr = "";
+    double retValDbl = 0;
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return retValDbl;
+    }
+
+    retValStr = this->getString(path);
+    status.addContext("RpLibrary::getDouble");
+    // think about changing this to strtod()
+    retValDbl = atof(retValStr.c_str());
+
+    return retValDbl;
+}
+
+
+/**********************************************************************/
+// METHOD: getInt()
+/// Return the integer value of the object held at location 'path'
+/**
+ */
+
+int
+RpLibrary::getInt (std::string path) const
+{
+    std::string retValStr = "";
+    int retValInt = 0;
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return retValInt;
+    }
+
+    retValStr = this->getString(path);
+    status.addContext("RpLibrary::getInt");
+    // think about changing this to strtod()
+    retValInt = atoi(retValStr.c_str());
+
+    return retValInt;
+}
+
+
+/**********************************************************************/
+// METHOD: getBool()
+/// Return the boolean value of the object held at location 'path'
+/**
+ */
+
+bool
+RpLibrary::getBool (std::string path) const
+{
+    std::string retValStr = "";
+    bool retValBool = false;
+    int retValLen = 0;
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return retValBool;
+    }
+
+    retValStr = this->getString(path);
+    status.addContext("RpLibrary::getBool");
+    std::transform (retValStr.begin(),retValStr.end(),retValStr.begin(),tolower);
+    retValLen = retValStr.length();
+
+    if ((retValStr.compare(0,retValLen,"1",0,retValLen) == 0  )   ||
+        (retValStr.compare(0,retValLen,"yes",0,retValLen) == 0 )  ||
+        (retValStr.compare(0,retValLen,"true",0,retValLen) == 0 ) ||
+        (retValStr.compare(0,retValLen,"on",0,retValLen) == 0))
+    {
+        retValBool = true;
+    }
+    else if((retValStr.compare(0,retValLen,"0",0,retValLen) == 0  )    ||
+            (retValStr.compare(0,retValLen,"no",0,retValLen) == 0 )    ||
+            (retValStr.compare(0,retValLen,"false",0,retValLen) == 0 ) ||
+            (retValStr.compare(0,retValLen,"off",0,retValLen) == 0))
+    {
+        retValBool = false;
+    }
+    else {
+        // default to false?
+        retValBool = false;
+    }
+
+    return retValBool;
+}
+
+
+/**********************************************************************/
+// METHOD: getData()
+/// Return a pointer and memory size of the object held at location 'path'
+/**
+ */
+
+Rappture::Buffer
+RpLibrary::getData (std::string path) const
+{
+    Rappture::EntityRef ERTranslator;
+    scew_element* retNode = NULL;
+    const char* retCStr = NULL;
+    Rappture::Buffer buf;
+    int translateFlag = RPLIB_TRANSLATE;
+    const char* translatedContents = NULL;
+    int len = 0;
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return buf;
+    }
+
+    retNode = _find(path,NO_CREATE_PATH);
+
+    if (retNode == NULL) {
+        // need to raise error
+        status.error("could not find element located at path");
+        status.addContext("RpLibrary::getData()");
+        return buf;
+    }
+
+    retCStr = scew_element_contents(retNode);
+
+    if (retCStr == NULL) {
+        // element located at path is empty
+        return buf;
+    }
+
+    if (translateFlag == RPLIB_TRANSLATE) {
+        translatedContents = ERTranslator.decode(retCStr,0);
+        if (translatedContents == NULL) {
+            // translation failed
+            if (!status) {
+                status.error("Error while translating entity references");
+                status.addContext("RpLibrary::getData()");
+            }
+        }
+        else {
+            len = strlen(translatedContents);
+            buf.append(translatedContents,len);
+            translatedContents = NULL;
+        }
+    }
+    else {
+        len = strlen(retCStr);
+        buf.append(retCStr,len);
+    }
+
+    return buf;
+}
+
+
+/**********************************************************************/
+// METHOD: getFile()
+/// Get the value at path and write it to the file at fileName
+/**
+ * Return the number of bytes written
+ */
+
+size_t
+RpLibrary::getFile (std::string path, std::string fileName) const
+{
+    Rappture::Buffer buf;
+
+    buf = getData(path);
+
+    if (buf.bad()) {
+        status.addContext("RpLibrary::getFile()");
+        return 0;
+    }
+
+    if (!buf.dump(status, fileName.c_str())) {
+        status.addContext("RpLibrary::getFile()");
+        return 0;
+    }
+
+    return buf.size();
+}
+
+
+/**********************************************************************/
+// METHOD: put()
+/// Put a string value into the xml.
+/**
+ */
+
+RpLibrary&
+RpLibrary::put (std::string path, std::string value, std::string id,
+                unsigned int append, unsigned int translateFlag)
+{
+    Rappture::EntityRef ERTranslator;
+    scew_element* retNode = NULL;
+    std::string tmpVal = "";
+    const char* contents = NULL;
+    const char* translatedContents = NULL;
+
+    status.addContext("RpLibrary::put() - putString");
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        status.error("invalid library object");
+        return *this;
+    }
+
+    // check for binary data
+    // FIXME: I've already appended a NUL-byte of this assuming that
+    //        it's a ASCII string. This test must come before.
+    if (Rappture::encoding::isBinary(value.c_str(), value.length())) {
+        putData(path, value.c_str(), value.length(), append);
+        return *this;
+    }
+
+    retNode = _find(path, CREATE_PATH);
+    if (retNode == NULL) {
+        // node not found, set error
+        status.error("Error while searching for node: node not found");
+        return *this;
+    }
+
+    if (translateFlag == RPLIB_TRANSLATE) {
+        translatedContents = ERTranslator.encode(value.c_str(),0);
+        if (translatedContents == NULL) {
+            // entity referene translation failed
+            if (!status) {
+                status.error("Error while translating entity references");
+                return *this;
+            }
+        }
+        else {
+            value = std::string(translatedContents);
+            translatedContents = NULL;
+        }
+    }
+    if (append == RPLIB_APPEND) {
+        contents = scew_element_contents(retNode);
+        if (contents != NULL) {
+            tmpVal = std::string(contents);
+            value = tmpVal + value;
+        }
+    }
+    scew_element_set_contents(retNode,value.c_str());
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: put()
+/// Put a double value into the xml.
+/**
+ */
+
+RpLibrary&
+RpLibrary::put (std::string path, double value, std::string id,
+                unsigned int append)
+{
+    std::stringstream valStr;
+
+    if (this->root == NULL) {
+        // library doesn't exist, do nothing;
+        status.error("invalid library object");
+        status.addContext("RpLibrary::put() - putDouble");
+        return *this;
+    }
+
+    valStr << value;
+
+    put(path,valStr.str(),id,append);
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: put()
+/// Put a RpLibrary* value into the xml. This is used by copy()
+/**
+ *  Append flag adds additional nodes, it does not merge same 
+ *  named nodes together
+ */
+
+RpLibrary&
+RpLibrary::put (    std::string path,
+                    RpLibrary* value,
+                    std::string id,
+                    unsigned int append )
+{
+    scew_element *retNode   = NULL;
+    scew_element *new_elem  = NULL;
+    scew_element *childNode = NULL;
+    scew_element *tmpNode   = NULL;
+    const char *contents    = NULL;
+    int deleteTmpNode       = 0;
+
+    if (this->root == NULL) {
+        // library doesn't exist, do nothing;
+        status.error("invalid library object");
+        status.addContext("RpLibrary::put()");
+        return *this;
+    }
+
+    if (value == NULL) {
+        // you cannot put a null RpLibrary into the tree
+        // user specified a null value
+        status.error("user specified NULL value");
+        status.addContext("RpLibrary::put()");
+        return *this;
+    }
+
+    if (value->root == NULL) {
+        // you cannot put a null RpLibrary into the tree
+        // user specified a null value
+        status.error("user specified uninitialized RpLibrary object");
+        status.addContext("RpLibrary::put()");
+        return *this;
+    }
+
+    tmpNode = value->root;
+
+    if (append == RPLIB_OVERWRITE) {
+        retNode = _find(path,NO_CREATE_PATH);
+        if (retNode) {
+            // compare roots to see if they are part of the
+            // same xml tree, if so, make a tmp copy of the
+            // tree to be copied before freeing it.
+            if (_checkPathConflict(retNode,tmpNode)) {
+                tmpNode = scew_element_copy(tmpNode);
+                deleteTmpNode = 1;
+            }
+            contents = scew_element_contents(tmpNode);
+            if (contents) {
+                scew_element_set_contents(retNode, "");
+            }
+
+            while ( (childNode = scew_element_next(retNode,childNode)) ) {
+                scew_element_free(childNode);
+            }
+        }
+        else {
+            // path did not exist and was not created
+            // do nothing
+        }
+    }
+
+    retNode = _find(path,CREATE_PATH);
+
+    if (retNode) {
+        contents = scew_element_contents(tmpNode);
+        if (contents) {
+            scew_element_set_contents(retNode, contents);
+        }
+
+        while ( (childNode = scew_element_next(tmpNode,childNode)) ) {
+            if ((new_elem = scew_element_copy(childNode))) {
+                if (scew_element_add_elem(retNode, new_elem)) {
+                    // maybe we want to count the number of children
+                    // that we have successfully added?
+                }
+                else {
+                    // adding new element failed
+                    status.error("error while adding child node");
+                    status.addContext("RpLibrary::put()");
+                }
+            }
+            else {
+                // copying new element failed
+                status.error("error while copying child node");
+                status.addContext("RpLibrary::put()");
+            }
+        }
+
+        if (deleteTmpNode == 1) {
+            scew_element_free(tmpNode);
+        }
+    }
+    else {
+        // path did not exist and was not created.
+        status.error("error while creating child node");
+        status.addContext("RpLibrary::put()");
+    }
+
+    return *this;
+}
+
+
+/**********************************************************************/
+// METHOD: putData()
+/// Put a data from a buffer into the xml.
+/**
+ *  Append flag adds additional nodes, it does not merge same 
+ *  named nodes together
+ */
+
+RpLibrary&
+RpLibrary::putData (std::string path,
+                    const char* bytes,
+                    int nbytes,
+                    unsigned int append  )
+{
+    scew_element* retNode = NULL;
+    const char* contents = NULL;
+    Rappture::Buffer inData;
+    unsigned int bytesWritten = 0;
+    size_t flags = 0;
+
+    status.addContext("RpLibrary::putData()");
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return *this;
+    }
+    retNode = _find(path,CREATE_PATH);
+
+    if (retNode == NULL) {
+        status.addError("can't create node from path \"%s\"", path.c_str());
+        return *this;
+    }
+    if (append == RPLIB_APPEND) {
+        if ( (contents = scew_element_contents(retNode)) ) {
+            inData.append(contents);
+            // base64 decode and un-gzip the data
+            if (!Rappture::encoding::decode(status, inData, 0)) {
+                return *this;
+            }
+        }
+    }
+    if (inData.append(bytes, nbytes) != nbytes) {
+        status.addError("can't append %d bytes", nbytes);
+        return *this;
+    }
+    // gzip and base64 encode the data
+    flags = RPENC_Z|RPENC_B64|RPENC_HDR;
+    if (!Rappture::encoding::encode(status, inData,flags)) {
+        return *this;
+    }
+    bytesWritten = (unsigned int) inData.size();
+    scew_element_set_contents_binary(retNode,inData.bytes(),&bytesWritten);
+    return *this;
+}
+
+
+/**********************************************************************/
+// METHOD: putFile()
+/// Put data from a file into the xml.
+/**
+ *  Append flag adds additional nodes, it does not merge same
+ *  named nodes together
+ */
+
+RpLibrary&
+RpLibrary::putFile(std::string path, std::string fileName,
+                   unsigned int compress, unsigned int append)
+{
+    Rappture::Buffer buf;
+    Rappture::Buffer fileBuf;
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return *this;
+    }
+
+    if (!fileBuf.load(status, fileName.c_str())) {
+        fprintf(stderr, "error loading file: %s\n", status.remark());
+        status.addContext("RpLibrary::putFile()");
+        return *this;
+    }
+    if (compress == RPLIB_COMPRESS) {
+        putData(path, fileBuf.bytes(), fileBuf.size(), append);
+    } else {
+        /* Always append a NUL-byte to the end of ASCII strings. */
+        fileBuf.append("\0", 1);
+        put(path, fileBuf.bytes(), "", append, RPLIB_TRANSLATE);
+    }
+    return *this;
+}
+
+
+/**********************************************************************/
+// METHOD: remove()
+/// Remove the provided path from this RpLibrary
+/**
+ */
+
+RpLibrary*
+RpLibrary::remove ( std::string path )
+{
+    scew_element* ele = NULL;
+    int setNULL = 0;
+    RpLibrary* retLib = NULL;
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return NULL;
+    }
+
+    if ( !path.empty() ) {
+        ele = _find(path,NO_CREATE_PATH);
+    }
+    else {
+        // telling this function to remove "" is essentially destroying
+        // the object. most functions will fail after a call like this.
+        ele = this->root;
+        setNULL++;
+    }
+
+    if (ele) {
+        scew_element_free(ele);
+        if (setNULL != 0) {
+            // this is the case where user specified an empty path.
+            // the object is useless, and will be deleted.
+            this->root = NULL;
+            retLib = NULL;
+        }
+        else {
+            retLib = this;
+        }
+    }
+
+    return retLib;
+}
+
+/**********************************************************************/
+// METHOD: xml()
+/// Return the xml text held in this RpLibrary
+/**
+ */
+
+std::string
+RpLibrary::xml () const
+{
+    std::stringstream outString;
+
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return std::string("");
+    }
+
+    outString << "<?xml version=\"1.0\"?>\n";
+    print_element(this->root, 0, outString);
+
+    return outString.str();
+}
+
+/**********************************************************************/
+// METHOD: nodeType()
+/// Return the type name of this node
+/**
+ */
+
+std::string
+RpLibrary::nodeType () const
+{
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return std::string("");
+    }
+
+    return std::string(scew_element_name(root));
+}
+
+/**********************************************************************/
+// METHOD: nodeId()
+/// Return the id of this node.
+/**
+ */
+
+std::string
+RpLibrary::nodeId () const
+{
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return std::string("");
+    }
+
+    return _node2name(root);
+}
+
+/**********************************************************************/
+// METHOD: nodeComp()
+/// Return the component name of this node.
+/**
+ */
+
+std::string
+RpLibrary::nodeComp () const
+{
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return std::string("");
+    }
+
+    return _node2comp(root);
+}
+
+/**********************************************************************/
+// METHOD: nodePath()
+/// Return the component name of this node's path.
+/**
+ */
+
+std::string
+RpLibrary::nodePath () const
+{
+    if (!this->root) {
+        // library doesn't exist, do nothing;
+        return std::string("");
+    }
+
+    return _node2path(root);
+}
+
+/**********************************************************************/
+// METHOD: outcome()
+/// Return the status object of this library object.
+/**
+ */
+
+Rappture::Outcome&
+RpLibrary::outcome() const
+{
+    return status;
+}
+
+/*
+ * ----------------------------------------------------------------------
+ *  METHOD: result
+ *
+ *  Clients call this function at the end of their simulation, to
+ *  pass the simulation result back to the Rappture GUI.  It writes
+ *  out the given XML object to a runXXX.xml file, and then writes
+ *  out the name of that file to stdout.
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2007
+ *  Purdue Research Foundation, West Lafayette, IN
+ * ======================================================================
+ */
+void
+RpLibrary::result(int exitStatus)
+{
+    std::fstream file;
+    std::string xmlText = "";
+    time_t t;
+    struct tm* timeinfo;
+    std::stringstream outputFile;
+    std::string timestamp;
+    std::string username;
+    std::string hostname;
+    char *user = NULL;
+
+    if (this->root == NULL) {
+	return;				/* No tree available */
+    }
+
+    t = time(NULL);			/* This is presumably the time the
+					 * simulation finished. */
+#ifdef HAVE_GETTIMEOFDAY
+    /* If the posix function gettimeofday is available, use it to produce
+     * unique filenames. */
+    struct timeval tv;
+    gettimeofday(&tv,NULL);
+    outputFile << "run" << tv.tv_sec << tv.tv_usec << ".xml";
+#else
+    outputFile << "run" << (int)t << ".xml";
+#endif
+    file.open(outputFile.str().c_str(),std::ios::out);
+    
+    
+    put("tool.version.rappture.version", RAPPTURE_VERSION);
+    put("tool.version.rappture.revision", SVN_VERSION);
+    put("tool.version.rappture.modified",
+	"$LastChangedDate$");
+    if ( "" == get("tool.version.rappture.language") ) {
+	put("tool.version.rappture.language","c++");
+    }
+    // generate a timestamp for the run file
+    timeinfo = localtime(&t);
+    timestamp = std::string(ctime(&t));
+    // erase the 24th character because it is a newline
+    timestamp.erase(24);
+    // concatenate the timezone
+    timestamp.append(" ");
+#ifdef _WIN32
+    timestamp.append(_tzname[_daylight]);
+    username = "";
+    hostname = "";
+    user = getenv("USERNAME");
+    if (user != NULL) {
+	username = std::string(user);
+    } else {
+	user = getenv("LOGNAME");
+	if (user != NULL) {
+	    username = std::string(user);
+	}
+    }
+#else
+    timestamp.append(timeinfo->tm_zone);
+    user = getenv("USER");
+    if (user != NULL) {
+	username = std::string(user);
+    } else {
+	user = getenv("LOGNAME");
+	if (user != NULL) {
+	    username = std::string(user);
+	}
+    }
+#endif
+
+    // add the timestamp to the run file
+    put("output.time", timestamp);
+    put("output.status",exitStatus);
+    put("output.user",username);
+    put("output.host",hostname);
+    
+    if ( file.is_open() ) {
+	xmlText = xml();
+	if (!xmlText.empty()) {
+	    file << xmlText;
+	}
+	// check to make sure there were no
+	// errors while writing the run.xml file.
+	if (   (!file.good())
+	       || ((long)xmlText.length() != ((long)file.tellp()-(long)1))
+               ) {
+	    status.error("Error while writing run file");
+	    status.addContext("RpLibrary::result()");
+	}
+	file.close();
+    } else {
+	status.error("Error while opening run file");
+	status.addContext("RpLibrary::result()");
+    }
+    std::cout << "=RAPPTURE-RUN=>" << outputFile.str() << std::endl;
+}
+
+/**********************************************************************/
+// METHOD: print_indent()
+/// Add indentations to the requested stringstream object.
+/**
+ */
+
+void
+RpLibrary::print_indent(    unsigned int indent,
+                            std::stringstream& outString ) const
+{
+
+    // keep this around incase you want to use tabs instead of spaces
+    // while ( (indent--) > 0)
+    // {
+    //     outString << "\t";
+    // }
+
+    // keep this around incase you want to use spaces instead of tabs
+    int cnt = indent*INDENT_SIZE;
+    while ( (cnt--) > 0)
+    {
+        outString << " ";
+    }
+
+}
+
+/**********************************************************************/
+// METHOD: print_attributes()
+/// Print the attribute names and values for the provided xml node
+/**
+ */
+
+void
+RpLibrary::print_attributes(    scew_element* element,
+                                std::stringstream& outString ) const
+{
+    scew_attribute* attribute = NULL;
+
+    if (element != NULL)
+    {
+        if (scew_attribute_count(element) > 0) {
+            /**
+             * Iterates through the element's attribute list, printing the
+             * pair name-value.
+             */
+            attribute = NULL;
+            while((attribute=scew_attribute_next(element, attribute)) != NULL)
+            {
+                outString << " " << scew_attribute_name(attribute) << "=\"" <<
+                       scew_attribute_value(attribute) << "\"";
+            }
+        }
+    }
+}
+
+
+/**********************************************************************/
+// METHOD: print_element()
+/// Print the value of the node and its attributes to a stringstream object
+/**
+ */
+
+void
+RpLibrary::print_element(   scew_element* element,
+                            unsigned int indent,
+                            std::stringstream& outString    ) const
+{
+    scew_element* child = NULL;
+    XML_Char const* contents = NULL;
+
+    if (element == NULL)
+    {
+        return;
+    }
+
+    /**
+     * Prints the starting element tag with its attributes.
+     */
+    print_indent(indent, outString);
+    outString << "<" << scew_element_name(element);
+    print_attributes(element,outString);
+    outString << ">";
+    contents = scew_element_contents(element);
+    if (contents == NULL)
+    {
+        outString << "\n";
+    }
+
+    /**
+     * Call print_element function again for each child of the
+     * current element.
+     */
+    child = NULL;
+    while ((child = scew_element_next(element, child)) != NULL)
+    {
+        print_element(child, indent + 1, outString);
+    }
+
+    /* Prints element's content. */
+    if (contents != NULL)
+    {
+        outString << contents;
+    }
+    else
+    {
+        print_indent(indent, outString);
+    }
+
+    /**
+     * Prints the closing element tag.
+     */
+    outString << "</" << scew_element_name(element) << ">\n" ;
+}
Index: /tags/1.6.0/src/core/RpLibrary.h
===================================================================
--- /tags/1.6.0/src/core/RpLibrary.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpLibrary.h	(revision 6168)
@@ -0,0 +1,221 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture Library Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RpLIBRARY_H
+#define _RpLIBRARY_H
+
+enum RP_LIBRARY_CONSTS {
+    RPLIB_OVERWRITE     = 0,
+    RPLIB_APPEND        = 1,
+    RPLIB_NO_TRANSLATE  = 0,
+    RPLIB_TRANSLATE     = 1,
+    RPLIB_NO_COMPRESS   = 0,
+    RPLIB_COMPRESS      = 1,
+};
+
+
+#ifdef __cplusplus
+
+typedef struct _scew_parser scew_parser;
+typedef struct _scew_tree scew_tree;
+typedef struct _scew_element scew_element;
+
+#include <list>
+#include "RpBuffer.h"
+#include "RpOutcome.h"
+
+/* indentation size (in whitespaces) */
+
+#define INDENT_SIZE 4
+#define CREATE_PATH 1
+#define NO_CREATE_PATH 0
+
+class RpLibrary
+{
+    public:
+
+        // users member fxns
+
+        RpLibrary* element (std::string path = "") const;
+        RpLibrary* parent (std::string path = "") const;
+
+        std::list<std::string> entities  (std::string path = "") const;
+        std::list<std::string> value     (std::string path = "") const;
+        std::list<std::string> diff      ( RpLibrary* otherLib,
+                                            std::string path) const;
+
+        bool isNull() const;
+
+        // should return RpObject& but for simplicity right now it doesnt
+        // RpObject will either be an Array, RpString, RpNumber ...
+
+        RpLibrary*  children  ( std::string path = "",
+                                RpLibrary* rpChildNode = NULL,
+                                std::string type = "",
+                                int* childCount = NULL  );
+
+        RpLibrary& childCount ( std::string path,
+                                int* childCount);
+
+        RpLibrary& copy       ( std::string toPath,
+                                RpLibrary* fromObj,
+                                std::string fromPath);
+
+        std::string get       ( std::string path = "",
+                                int translateFlag = RPLIB_TRANSLATE) const;
+        std::string getString ( std::string path = "",
+                                int translateFlag = RPLIB_TRANSLATE) const;
+
+        double      getDouble ( std::string path = "") const;
+        int         getInt    ( std::string path = "") const;
+        bool        getBool   ( std::string path = "") const;
+        Rappture::Buffer getData ( std::string path = "") const;
+        size_t      getFile   ( std::string path,
+                                std::string fileName) const;
+
+        /*
+         * Should return some kind of RpError object
+        RpLibrary&  get       ( std::string path = "",
+                                std::string retVal = "",
+                                int translateFlag = RPLIB_TRANSLATE);
+
+        RpLibrary&  get       ( std::string path = "",
+                                double retVal = 0.0,
+                                int translateFlag = RPLIB_TRANSLATE);
+
+        RpLibrary&  get       ( std::string path = "",
+                                int retVal = 0,
+                                int translateFlag = RPLIB_TRANSLATE);
+
+        RpLibrary&  get       ( std::string path = "",
+                                bool retVal = false,
+                                int translateFlag = RPLIB_TRANSLATE);
+        */
+
+        RpLibrary& put (    std::string path,
+                            std::string value,
+                            std::string id = "",
+                            unsigned int append = RPLIB_OVERWRITE,
+                            unsigned int translateFlag = RPLIB_TRANSLATE   );
+
+        RpLibrary& put (    std::string path,
+                            double value,
+                            std::string id = "",
+                            unsigned int append = RPLIB_OVERWRITE    );
+
+        RpLibrary& put (    std::string path,
+                            RpLibrary* value,
+                            std::string id = "",
+                            unsigned int append = RPLIB_OVERWRITE    );
+
+        RpLibrary& putData( std::string path,
+                            const char* bytes,
+                            int nbytes,
+                            unsigned int append = RPLIB_OVERWRITE    );
+
+        RpLibrary& putFile( std::string path,
+                            std::string fileName,
+                            unsigned int compress = RPLIB_COMPRESS,
+                            unsigned int append = RPLIB_OVERWRITE    );
+
+        RpLibrary* remove (std::string path = "");
+
+        std::string xml() const;
+
+        std::string nodeType() const;
+        std::string nodeId() const;
+        std::string nodeComp() const;
+        std::string nodePath() const;
+
+        Rappture::Outcome& outcome() const;
+
+        void result(int exitStatus=0);
+
+
+        RpLibrary ();
+        RpLibrary (const std::string filePath);
+        RpLibrary (const RpLibrary& other);
+        RpLibrary& operator= (const RpLibrary& other);
+        virtual ~RpLibrary ();
+
+    private:
+
+        scew_parser* parser;
+        scew_tree* tree;
+        scew_element* root;
+
+        // flag to tell if we are responsible for calling scew_tree_free
+        // on the tree structure. if we get our tree by using the
+        // scew_tree_create
+        // fxn, we need to free it. if we get our tree using the
+        // scew_parser_tree
+        // fxn, then it will be free'd when the parser is free'd.
+        int freeTree;
+
+        // some object (like those returned from children() and element )
+        // are previously allocated scew objects with an artificial RpLibrary
+        // wrapper. these objects never really allocated any memory, they
+        // just point to memory. they should not free any memory when they 
+        // are deleted (because none was allocated when they were created).
+        // when the larger Rappture Library is deleted, they will have 
+        // pointers to bad/deleted memory...libscew has the same problem in 
+        // their implementation of a similar children() fxn.
+        //
+        // this flag tells the destructor that when above said object is
+        // deleted, dont act on the root pointer
+        int freeRoot;
+
+        mutable Rappture::Outcome status;
+
+        RpLibrary ( scew_element* node, scew_tree* tree)
+            :   parser      (NULL),
+                tree        (tree),
+                root        (node)
+
+        {
+            freeTree = 0;
+            freeRoot = 0;
+        }
+
+
+        std::string _get_attribute (scew_element* element,
+                                    std::string attributeName) const;
+        int _path2list (std::string& path,
+                        std::string** list,
+                        int listLen) const;
+        std::string _node2name (scew_element* node) const;
+        std::string _node2comp (scew_element* node) const;
+        std::string _node2path (scew_element* node) const;
+
+        int _splitPath (std::string& path,
+                        std::string& tagName,
+                        int* idx,
+                        std::string& id ) const;
+        scew_element* _find (std::string path, int create) const;
+        int _checkPathConflict (scew_element *nodeA, scew_element *nodeB) const;
+        void print_indent ( unsigned int indent,
+                            std::stringstream& outString) const;
+        void print_attributes ( scew_element* element,
+                                std::stringstream& outString) const;
+        void print_element( scew_element* element,
+                            unsigned int indent,
+                            std::stringstream& outString ) const;
+
+};
+
+/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
+
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RpLIBRARY_H
Index: /tags/1.6.0/src/core/RpLibraryCInterface.cc
===================================================================
--- /tags/1.6.0/src/core/RpLibraryCInterface.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpLibraryCInterface.cc	(revision 6168)
@@ -0,0 +1,310 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: C Rappture Library Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpLibrary.h"
+#include "RpLibraryCInterface.h"
+#include "RpBufferCHelper.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+RpLibrary*
+rpLibrary (const char* path)
+{
+    if (path == NULL) {
+        return (new RpLibrary());
+    }
+
+    return (new RpLibrary(path));
+}
+
+int
+rpFreeLibrary (RpLibrary** lib)
+{
+    int retVal = 1;
+
+    if (lib && (*lib)) {
+        delete (*lib);
+        (*lib) = NULL;
+        retVal =  0;
+    }
+
+    return retVal;
+}
+
+RpLibrary*
+rpElement (RpLibrary* lib, const char* path)
+{
+    return (lib->element(path));
+}
+
+RpLibrary*
+rpElementAsObject (RpLibrary* lib, const char* path)
+{
+    return rpElement(lib,path);
+}
+
+
+int
+rpElementAsType (RpLibrary* lib, const char* path, const char** retCStr)
+{
+    int retVal = 1;
+    static std::string retStr = "";
+    RpLibrary* retLib = lib->element(path);
+
+    if (retLib) {
+        retStr = retLib->nodeType();
+        // check to see if retStr is empty
+        retVal = 0;
+    }
+
+    *retCStr = retStr.c_str();
+
+    return retVal;
+}
+
+int
+rpElementAsComp (RpLibrary* lib, const char* path, const char** retCStr)
+{
+    int retVal = 1;
+    static std::string retStr = "";
+    RpLibrary* retLib = lib->element(path);
+
+    if (retLib) {
+        retStr = retLib->nodeComp();
+        // check to see if retStr is empty
+        retVal = 0;
+    }
+
+    *retCStr = retStr.c_str();
+    return retVal;
+}
+
+int
+rpElementAsId (RpLibrary* lib, const char* path, const char** retCStr)
+{
+    int retVal = 1;
+    static std::string retStr = "";
+    RpLibrary* retLib = lib->element(path);
+
+    if (retLib) {
+        retStr = retLib->nodeId();
+        // check to see if retStr is empty
+        retVal = 0;
+    }
+
+    *retCStr = retStr.c_str();
+    return retVal;
+}
+
+RpLibrary*
+rpChildren (RpLibrary* lib, const char* path, RpLibrary* childEle )
+{
+    return ( lib->children(path,childEle) );
+}
+
+RpLibrary*
+rpChildrenByType( RpLibrary* lib,
+                const char* path,
+                RpLibrary* childEle,
+                const char* type )
+{
+    return ( lib->children(path,childEle,type) );
+}
+
+int
+rpGet (RpLibrary* lib, const char* path, const char** retCStr)
+{
+    return rpGetString(lib,path,retCStr);
+}
+
+int
+rpGetString (RpLibrary* lib, const char* path, const char** retCStr)
+{
+    int retVal = 0;
+    static std::string retStr = "";
+
+    retStr = lib->getString(path);
+
+    *retCStr = retStr.c_str();
+    return retVal;
+}
+
+int
+rpGetDouble (RpLibrary* lib, const char* path, double* retDVal)
+{
+    int retVal = 0;
+    *retDVal = lib->getDouble(path);
+    return retVal;
+}
+
+int
+rpGetData (RpLibrary* lib, const char* path, RapptureBuffer* retBuf)
+{
+    Rappture::Buffer rpbuf;
+    int retVal = 0;
+
+    if (retBuf == NULL) {
+        return -1;
+    }
+
+    rpbuf = lib->getData(path);
+    RpBufferToCBuffer(&rpbuf, retBuf);
+    return retVal;
+}
+
+int
+rpPut ( RpLibrary* lib,
+        const char* path,
+        const char* value,
+        const char* id,
+        unsigned int append )
+{
+    int retVal = 0;
+    lib->put(path,value,id,append);
+    return retVal;
+}
+
+int
+rpPutString (   RpLibrary* lib,
+                const char* path,
+                const char* value,
+                unsigned int append )
+{
+    int retVal = 0;
+    lib->put(path,value,"",append);
+    return retVal;
+}
+
+int
+rpPutDouble (   RpLibrary* lib,
+                const char* path,
+                double value,
+                unsigned int append )
+{
+    int retVal = 0;
+    lib->put(path,value,"",append);
+    return retVal;
+}
+
+int rpPutData ( RpLibrary* lib,
+                const char* path,
+                const char* bytes,
+                int nBytes,
+                unsigned int append )
+{
+    int retVal = 0;
+    lib->putData(path,bytes,nBytes,append);
+    return retVal;
+}
+
+int rpPutFile ( RpLibrary* lib,
+                const char* path,
+                const char* fileName,
+                unsigned int binary,
+                unsigned int append  )
+{
+    int retVal = 0;
+    lib->putFile(path,fileName,binary,append);
+    return retVal;
+}
+
+int
+rpXml (RpLibrary* lib, const char** retCStr)
+{
+    int retVal = 1;
+    static std::string retStr = "";
+
+    if (lib != NULL) {
+        retStr = "";
+        retStr = lib->xml();
+
+        // string should never be empty after lib->xml fxn call
+        // lib->xml returns xml header at the very least.
+        if ( !retStr.empty() ) {
+            retVal = 0;
+        }
+    }
+
+    *retCStr = retStr.c_str();
+    return retVal;
+}
+
+int
+rpNodeComp (RpLibrary* node, const char** retCStr)
+{
+    int retVal = 1;
+    static std::string retStr = "";
+
+    if (node != NULL) {
+        retStr = "";
+        retStr = node->nodeComp();
+        if ( !retStr.empty() ) {
+            retVal = 0;
+        }
+        *retCStr = retStr.c_str();
+    }
+
+    return retVal;
+}
+
+int
+rpNodeType (RpLibrary* node, const char** retCStr)
+{
+    int retVal = 1;
+    static std::string retStr = "";
+
+    if (node != NULL) {
+        retStr = "";
+        retStr = node->nodeType();
+        if ( !retStr.empty() ) {
+            retVal = 0;
+        }
+        *retCStr = retStr.c_str();
+    }
+
+    return retVal;
+}
+
+int
+rpNodeId (RpLibrary* node, const char** retCStr)
+{
+    int retVal = 0;
+    static std::string retStr = "";
+
+    if (node != NULL) {
+        retStr = "";
+        retStr = node->nodeId();
+        if ( !retStr.empty() ) {
+            retVal = 0;
+        }
+        *retCStr = retStr.c_str();
+    }
+
+    return retVal;
+}
+
+int
+rpResult (RpLibrary* lib)
+{
+    int retVal = 0;
+    // signal the processing is complete
+    lib->put("tool.version.rappture.language", "c");
+    lib->result();
+    return retVal;
+}
+
+#ifdef __cplusplus
+}
+#endif
Index: /tags/1.6.0/src/core/RpLibraryCInterface.h
===================================================================
--- /tags/1.6.0/src/core/RpLibraryCInterface.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpLibraryCInterface.h	(revision 6168)
@@ -0,0 +1,91 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: C Rappture Library Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+
+#ifndef _RAPPTURE_LIBRARY_C_H
+#define _RAPPTURE_LIBRARY_C_H
+
+#include "RpBufferCInterface.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif // ifdef __cplusplus
+
+typedef struct RpLibrary RpLibrary;
+
+// lib definition functions
+RpLibrary* rpLibrary  (const char* path);
+int rpFreeLibrary     (RpLibrary** lib);
+
+// RpLibrary member functions
+RpLibrary* rpElement  (RpLibrary* lib, const char* path);
+RpLibrary* rpElementAsObject (RpLibrary* lib, const char* path);
+int rpElementAsType   (RpLibrary* lib, const char* path, const char** retCStr);
+int rpElementAsComp   (RpLibrary* lib, const char* path, const char** retCStr);
+int rpElementAsId     (RpLibrary* lib, const char* path, const char** retCStr);
+
+RpLibrary* rpChildren (RpLibrary* lib,
+                            const char* path,
+                            RpLibrary* childEle  );
+RpLibrary* rpChildrenByType  (RpLibrary* lib,
+                            const char* path,
+                            RpLibrary* childEle,
+                            const char* type     );
+
+int rpGet             (RpLibrary* lib, const char* path, const char** retCStr);
+int rpGetString       (RpLibrary* lib, const char* path, const char** retCStr);
+int rpGetDouble       (RpLibrary* lib, const char* path, double* retDVal);
+
+int rpGetData         (RpLibrary* lib, const char* path, RapptureBuffer* retBuf);
+
+int rpPut             (RpLibrary* lib,
+                            const char* path,
+                            const char* value,
+                            const char* id,
+                            unsigned int append         );
+
+int rpPutString       (RpLibrary* lib,
+                            const char* path,
+                            const char* value,
+                            unsigned int append         );
+
+int rpPutDouble       (RpLibrary* lib,
+                            const char* path,
+                            double value,
+                            unsigned int append         );
+
+int rpPutData         (RpLibrary* lib,
+                            const char* path,
+                            const char* bytes,
+                            int nBytes,
+                            unsigned int append         );
+
+int rpPutFile         (RpLibrary* lib,
+                            const char* path,
+                            const char* fileName,
+                            unsigned int binary,
+                            unsigned int append         );
+
+int rpXml             (RpLibrary* lib, const char** retCStr);
+
+int rpNodeComp        (RpLibrary* node, const char** retCStr);
+int rpNodeType        (RpLibrary* node, const char** retCStr);
+int rpNodeId          (RpLibrary* node, const char** retCStr);
+
+int rpResult          (RpLibrary* lib);
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RAPPTURE_LIBRARY_C_H
Index: /tags/1.6.0/src/core/RpLibraryFInterface.cc
===================================================================
--- /tags/1.6.0/src/core/RpLibraryFInterface.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpLibraryFInterface.cc	(revision 6168)
@@ -0,0 +1,744 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Library Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpLibraryFInterface.h"
+#include "RpBindingsDict.h"
+#include "RpLibraryFStubs.c"
+#include "RpDXWriter.h"
+
+/**********************************************************************/
+// FUNCTION: rp_lib(const char* filePath, int filePath_len)
+/// Open the file at 'filePath' and return Rappture Library Object.
+/**
+ */
+
+int rp_lib(const char* filePath, int filePath_len) {
+
+    RpLibrary* lib = NULL;
+    int handle = -1;
+    std::string inFilePath = "";
+
+    inFilePath = null_terminate_str(filePath, filePath_len);
+
+    // create a RapptureIO object and store in dictionary
+    lib = new RpLibrary(inFilePath);
+
+    if (lib) {
+        handle = storeObject_Void((void*)lib);
+    }
+
+    return handle;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_element_obj()
+/// Return the node located at 'path'.
+/**
+ */
+int rp_lib_element_obj(int* handle,     /* integer handle of library */
+                          char* path,     /* null terminated path */
+                          int path_len
+                        )
+{
+    int newObjHandle = -1;
+
+    std::string inPath = "";
+
+    RpLibrary* lib = NULL;
+    RpLibrary* retObj = NULL;
+
+    inPath = null_terminate_str(path,path_len);
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+        if (lib) {
+            retObj = lib->element(inPath);
+
+            if (retObj) {
+                newObjHandle = storeObject_Void((void*)retObj);
+            }
+        }
+    }
+
+    return newObjHandle;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_element_comp()
+/// Return the component name of the node located at 'path'.
+/**
+ */
+void rp_lib_element_comp( int* handle, /* integer handle of library */
+                            char* path,      /* null terminated path */
+                            char* retText,   /* return buffer for fortran*/
+                            int path_len,
+                            int retText_len /* length of return text buffer */
+                          )
+{
+    std::string inPath = "";
+    RpLibrary* lib = NULL;
+    std::string retStr = "";
+
+    inPath = null_terminate_str(path,path_len);
+
+    lib = (RpLibrary*) getObject_Void(*handle);
+
+    if (lib) {
+        retStr = lib->element(inPath)->nodeComp();
+        if (!retStr.empty()) {
+            fortranify(retStr.c_str(),retText,retText_len);
+        }
+    }
+
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_element_id()
+/// Return the 'id' of node located at 'path'.
+/**
+ */
+void rp_lib_element_id(   int* handle,       /* integer handle of library    */
+                            char* path,      /* path of element within xml   */
+                            char* retText,   /* return buffer for fortran    */
+                            int path_len,
+                            int retText_len  /* length of return text buffer */
+                        ) 
+{
+    std::string inPath = "";
+    RpLibrary* lib = NULL;
+    std::string retStr = "";
+
+    inPath = null_terminate_str(path,path_len);
+
+    lib = (RpLibrary*) getObject_Void(*handle);
+
+    if (lib) {
+        retStr = lib->element(inPath)->nodeId();
+        if (!retStr.empty()) {
+            fortranify(retStr.c_str(),retText,retText_len);
+        }
+    }
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_element_type()
+/// Return the type of the node located at 'path'.
+/**
+ */
+void rp_lib_element_type( int* handle,       /* integer handle of library */
+                            char* path,      /* search path inside xml */
+                            char* retText,   /* return buffer for fortran*/
+                            int path_len,
+                            int retText_len  /* length of return text buffer */
+                          )
+{
+    std::string inPath = "";
+    RpLibrary* lib = NULL;
+    std::string retStr = "";
+
+    inPath = null_terminate_str(path,path_len);
+
+    lib = (RpLibrary*) getObject_Void(*handle);
+
+    if (lib) {
+        retStr = lib->element(inPath)->nodeType();
+        fortranify(retStr.c_str(),retText,retText_len);
+    }
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_children(const char* filePath, int filePath_len)
+/// Retrieve the next child of 'path' from the Rappture Library Object.
+/**
+ */
+int rp_lib_children (   int* handle, /* integer handle of library */
+                        char* path, /* search path of the xml */
+                        int* childHandle, /*integer hanlde of last returned child*/
+                        int path_len  /* length of the search path buffer */
+                    ) {
+
+    std::string inPath = "";
+    RpLibrary* lib = NULL;
+    RpLibrary* childNode = NULL;
+    int newObjHandle = -1;
+
+    inPath = null_terminate_str(path,path_len);
+
+    if (handle && (*handle >= 0) ) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+        if (lib) {
+
+            if (*childHandle > 0) {
+                // check to see if there were any previously returned children
+                childNode = (RpLibrary*) getObject_Void(*childHandle);
+            }
+
+            // call the children base method
+            childNode = lib->children(inPath,childNode);
+
+            // store the childNode in the dictionary.
+            //
+            // because the base method is using static memory to get store the
+            // children we should be able to check and see if the childHandle 
+            // was valid.
+            // if so, then we can just return the childHandle back to the user
+            // if not, store the object in the dictionary and return the new
+            // handle.
+
+            if (childNode) {
+                if (*childHandle < 1) {
+                    newObjHandle = storeObject_Void((void*)childNode);
+                }
+                else {
+                    newObjHandle = storeObject_Void((void*)childNode,*childHandle);
+                }
+            }
+        }
+    }
+
+    return newObjHandle;
+
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_get()
+/// Get data located at 'path' and return it as a string value.
+/**
+ */
+void 
+rp_lib_get( 
+    int* handle,			/* integer handle of library */
+    char* path,				/* null terminated path */
+    char* retText,			/* return text buffer for fortran*/
+    int path_len,
+    int retText_len)			/* length of return text buffer */
+{
+    std::string xmlText = "";
+
+    RpLibrary* lib = NULL;
+
+    std::string inPath = "";
+
+    inPath = null_terminate_str(path, path_len);
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+
+        if (lib) {
+            xmlText = lib->get(inPath);
+            if (!xmlText.empty()) {
+                fortranify(xmlText.c_str(),retText,retText_len);
+            }
+
+        }
+    }
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_get_str()
+/// Get data located at 'path' and return it as a string value.
+/**
+ */
+void 
+rp_lib_get_str(
+    int* handle,			/* integer handle of library */
+    char* path,				/* null terminated path */
+    char* retText,			/* return text buffer for fortran*/
+    int path_len,
+    int retText_len)			/* length of return text buffer */
+{
+    std::string xmlText = "";
+
+    RpLibrary* lib = NULL;
+
+    std::string inPath = "";
+
+    inPath = null_terminate_str(path,path_len);
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+
+        if (lib) {
+            xmlText = lib->getString(inPath);
+            if (!xmlText.empty()) {
+                fortranify(xmlText.c_str(),retText,retText_len);
+            }
+
+        }
+    }
+}
+
+
+/**********************************************************************/
+// FUNCTION: rp_lib_get_double()
+/// Get data located at 'path' and return it as a double precision value.
+/**
+ */
+double 
+rp_lib_get_double( 
+    int* handle,			/* integer handle of library */
+    char* path,				/* null terminated path */
+    int path_len)
+{
+    double retVal = 0.0;
+
+    RpLibrary* lib = NULL;
+
+    std::string inPath = "";
+
+    inPath = null_terminate_str(path,path_len);
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+
+        if (lib) {
+            retVal = lib->getDouble(inPath);
+        }
+    }
+
+    return retVal;
+}
+
+
+/**********************************************************************/
+// FUNCTION: rp_lib_get_integer()
+/// Get data located at 'path' and return it as an integer value.
+/**
+ */
+int rp_lib_get_integer( int* handle,   /* integer handle of library */
+                        char* path,    /* null terminated path */
+                        int path_len
+                      )
+{
+    int retVal = 0;
+
+    RpLibrary* lib = NULL;
+
+    std::string inPath = "";
+
+    inPath = null_terminate_str(path,path_len);
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+
+        if (lib) {
+            retVal = lib->getInt(inPath);
+        }
+    }
+
+    return retVal;
+}
+
+
+/**********************************************************************/
+// FUNCTION: rp_lib_get_boolean()
+/// Get data located at 'path' and return it as an integer value.
+/**
+ */
+int rp_lib_get_boolean( int* handle,   /* integer handle of library */
+                        char* path,    /* null terminated path */
+                        int path_len
+                      )
+{
+    bool value = false;
+    int retVal = 0;
+
+    RpLibrary* lib = NULL;
+
+    std::string inPath = "";
+
+    inPath = null_terminate_str(path,path_len);
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+
+        if (lib) {
+            value = lib->getBool(inPath);
+            if (value == true) {
+                retVal = 1;
+            }
+            else {
+                retVal = 0;
+            }
+        }
+    }
+
+    return retVal;
+}
+
+
+/**********************************************************************/
+// FUNCTION: rp_lib_get_file()
+/// Get data located at 'path' and write it to the file 'fileName'.
+/**
+ * Returns if any bytes were written to the file
+ */
+int rp_lib_get_file (   int* handle,     /* integer handle of library */
+                        char* path,      /* null terminated path */
+                        char* fileName,  /* name of file to write data to */
+                        int path_len,    /* length of the path variable */
+                        int fileName_len /* length of the fileName variable */
+                     )
+{
+    size_t nbytes = 0;
+
+    RpLibrary* lib = NULL;
+
+    std::string inPath = "";
+    std::string filePath = "";
+
+    inPath = null_terminate_str(path,path_len);
+    filePath = null_terminate_str(fileName,fileName_len);
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+
+        if (lib) {
+            nbytes = lib->getFile(inPath, filePath);
+        }
+    }
+
+    return nbytes;
+}
+
+
+
+/**********************************************************************/
+// FUNCTION: rp_lib_put_str()
+/// Put string into Rappture Library Object at location 'path'.
+/**
+ */
+void rp_lib_put_str( int* handle, 
+                        char* path, 
+                        char* value, 
+                        int* append,
+                        int path_len,
+                        int value_len
+                      )
+{
+    std::string inPath = "";
+    std::string inValue = "";
+    RpLibrary* lib = NULL;
+
+    inPath = null_terminate_str(path,path_len);
+    inValue = null_terminate_str(value,value_len);
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+
+        if (lib) {
+            lib->put(inPath,inValue,"",*append);
+        }
+    }
+
+    return;
+
+}
+
+
+/**********************************************************************/
+// FUNCTION: rp_lib_put_id_str()
+/// Put string into Rappture Library Object at location 'path' with id = 'id'
+/**
+ */
+void rp_lib_put_id_str ( int* handle, 
+                        char* path, 
+                        char* value, 
+                        char* id, 
+                        int* append,
+                        int path_len,
+                        int value_len,
+                        int id_len
+                      ) 
+{
+    RpLibrary* lib = NULL;
+
+    std::string inPath = "";
+    std::string inValue = "";
+    std::string inId = "";
+
+    inPath = null_terminate_str(path,path_len);
+    inValue = null_terminate_str(value,value_len);
+    inId = null_terminate_str(id,id_len);
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+
+        if (lib) {
+            lib->put(inPath,inValue,inId,*append);
+        }
+    }
+
+}
+
+
+/**********************************************************************/
+// FUNCTION: rp_lib_put_data()
+/// Put string into Rappture Library Object at location 'path'.
+/**
+ */
+void 
+rp_lib_put_data( 
+    int* handle,
+    char* path,
+    char* bytes,
+    int* nbytes,
+    int* append,
+    int path_len,
+    int bytes_len)
+{
+    std::string inPath = "";
+    RpLibrary* lib = NULL;
+    int bufferSize = 0;
+
+    inPath = null_terminate_str(path,path_len);
+
+    if (*nbytes < bytes_len) {
+        bufferSize = *nbytes;
+    }
+    else {
+        bufferSize = bytes_len;
+    }
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+
+        if (lib) {
+            lib->putData(inPath,bytes,bufferSize,*append);
+        }
+    }
+
+    return;
+
+}
+
+
+/**********************************************************************/
+// FUNCTION: rp_lib_put_file()
+/// Put string into Rappture Library Object at location 'path'.
+/**
+ */
+void 
+rp_lib_put_file( 
+    int* handle,
+    char* path,
+    char* fileName,
+    int* compress,
+    int* append,
+    int path_len,
+    int fileName_len)
+{
+    std::string inPath = "";
+    std::string inFileName = "";
+    RpLibrary* lib = NULL;
+
+    inPath = null_terminate_str(path,path_len);
+    inFileName = null_terminate_str(fileName,fileName_len);
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+
+        if (lib) {
+            lib->putFile(inPath,inFileName,*compress,*append);
+        }
+    }
+
+    return;
+
+}
+
+
+void 
+rp_lib_put_obj( 
+    int* handle,
+    char* path,
+    int* valHandle,
+    int* append,
+    int path_len)
+{
+    std::string inPath = "";
+    RpLibrary* lib = NULL;
+    // Rp_Obj does not currently exist
+    Rappture::DXWriter* obj = NULL;
+    char* objStr = NULL;
+
+
+    inPath = null_terminate_str(path,path_len);
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+        if (!lib) {
+            // return error, lib was not found
+        }
+
+        obj = (Rappture::DXWriter*) getObject_Void(*valHandle);
+        if (!obj) {
+            // return error, obj was not found
+        }
+
+        // textsize function does not currently exist
+        objStr = (char*) malloc(obj->size()*sizeof(char));
+        obj->write(objStr);
+        lib->put(inPath,objStr,"",*append);
+        free(objStr);
+    }
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_write_xml()
+/// Write the xml text into a file.
+/**
+ * \sa {rp_result}
+ */
+int rp_lib_write_xml(int* handle, char* outFile, int outFile_len)
+{
+    int retVal = -1;
+    RpLibrary* lib = NULL;
+    std::string inOutFile = "";
+    std::string xmlText = "";
+    std::fstream file;
+
+    inOutFile = null_terminate_str(outFile, outFile_len);
+
+    if (!inOutFile.empty() ) {
+        file.open(inOutFile.c_str(),std::ios::out);
+    }
+
+    if ( file.is_open() ) {
+        if ((handle) && (*handle != 0)) {
+            lib = (RpLibrary*) getObject_Void(*handle);
+
+            if (lib) {
+                xmlText = lib->xml();
+                if (!xmlText.empty()) {
+                    file << xmlText;
+                    retVal = 0;
+                }
+            }
+        }
+
+        file.close();
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_xml()
+/// Return this node's xml text
+/**
+ */
+void  rp_lib_xml(int* handle, char* retText, int retText_len)
+{
+    std::string xmlText = "";
+
+    RpLibrary* lib = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+
+        if (lib) {
+            xmlText = lib->xml();
+            if (!xmlText.empty()) {
+                fortranify(xmlText.c_str(), retText, retText_len);
+            }
+        }
+    }
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_node_comp()
+/// Return this node's component name
+/**
+ */
+void rp_lib_node_comp ( int* handle, char* retText, int retText_len ) {
+
+    std::string retStr = "";
+    RpLibrary* node = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        node = (RpLibrary*) getObject_Void(*handle);
+
+        if (node) {
+            retStr = node->nodeComp();
+            if (!retStr.empty()) {
+                fortranify(retStr.c_str(), retText, retText_len);
+            }
+        }
+    }
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_node_type()
+/// Return this node's type
+/**
+ */
+void rp_lib_node_type ( int* handle, char* retText, int retText_len ) {
+
+    std::string retStr = "";
+    RpLibrary* node = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        node = (RpLibrary*) getObject_Void(*handle);
+
+        if (node) {
+            retStr = node->nodeType();
+            if (!retStr.empty()) {
+                fortranify(retStr.c_str(), retText, retText_len);
+            }
+        }
+    }
+}
+
+/**********************************************************************/
+// FUNCTION: rp_lib_node_id()
+/// Return this node's id.
+/**
+ */
+void rp_lib_node_id ( int* handle, char* retText, int retText_len ) {
+
+    std::string retStr = "";
+    RpLibrary* node = NULL;
+
+    if ((handle) && (*handle != 0)) {
+        node = (RpLibrary*) getObject_Void(*handle);
+
+        if (node) {
+            retStr = node->nodeId();
+            if (!retStr.empty()) {
+                fortranify(retStr.c_str(), retText, retText_len);
+            }
+        }
+    }
+}
+
+/**********************************************************************/
+// FUNCTION: rp_result()
+/// Write xml text to a run.xml file and signal the program has completed
+/**
+ */
+void rp_result(int* handle) {
+    RpLibrary* lib = NULL;
+
+    if (handle && *handle != 0) {
+        lib = (RpLibrary*) getObject_Void(*handle);
+        if (lib) {
+            lib->put("tool.version.rappture.language", "fortran");
+            lib->result();
+        }
+    }
+
+    // do no delete this, still working on testing this
+    cleanLibDict();
+}
+
Index: /tags/1.6.0/src/core/RpLibraryFInterface.h
===================================================================
--- /tags/1.6.0/src/core/RpLibraryFInterface.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpLibraryFInterface.h	(revision 6168)
@@ -0,0 +1,180 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Library Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RAPPTURE_LIBRARY_F_H
+#define _RAPPTURE_LIBRARY_F_H
+
+#ifdef __cplusplus
+    #include "RpLibrary.h"
+    #include <string.h>
+    #include <fstream>
+    #include "RpFortranCommon.h"
+    #include "RpLibraryFStubs.h"
+
+    extern "C" {
+#endif // ifdef __cplusplus
+
+int rp_lib ( const char* filePath, int filePath_len );
+
+void rp_lib_element_comp (  int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void rp_lib_element_id (    int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void rp_lib_element_type (  int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+int rp_lib_element_obj (    int* handle,
+                            char* path,
+                            int path_len );
+
+int rp_lib_children (       int* handle, /* integer handle of library */
+                            char* path, /* search path of the xml */
+                            int* childHandle, /*int handle of last returned child*/
+                            int path_len  /*length of the search path buffer*/
+                    );
+
+void rp_lib_get (           int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void rp_lib_get_str (       int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+double rp_lib_get_double (  int* handle,
+                            char* path,
+                            int path_len);
+
+int rp_lib_get_integer (    int* handle,
+                            char* path,
+                            int path_len);
+
+int rp_lib_get_boolean (    int* handle,
+                            char* path,
+                            int path_len);
+
+extern int rp_lib_get_file(int* handle, char* path, char* fileName, 
+	int path_len, int fileName_len);
+
+void rp_lib_put_str (       int* handle,
+                            char* path,
+                            char* value,
+                            int* append,
+                            int path_len,
+                            int value_len );
+
+void rp_lib_put_id_str (    int* handle,
+                            char* path,
+                            char* value,
+                            char* id,
+                            int* append,
+                            int path_len,
+                            int value_len,
+                            int id_len );
+
+void rp_lib_put_data (      int* handle,
+                            char* path,
+                            char* bytes,
+                            int* nbytes,
+                            int* append,
+                            int path_len,
+                            int bytes_len );
+
+void rp_lib_put_file (      int* handle,
+                            char* path,
+                            char* fileName,
+                            int* compress,
+                            int* append,
+                            int path_len,
+                            int fileName_len );
+
+/*
+ * rp_lib_put_obj still needs to be written
+ * keep function declaration around
+*/
+void rp_lib_put_obj (       int* handle,
+                            char* path,
+                            int* valHandle,
+                            int* append,
+                            int path_len );
+
+/*
+ * rp_lib_put_id_obj still needs to be written
+ * keep function declaration around
+void rp_lib_put_id_obj (    int* handle,
+                            char* path,
+                            int* valHandle,
+                            char* id,
+                            int* append,
+                            int path_len,
+                            int id_len );
+*/
+
+/*
+ * rp_lib_remove still needs to be written
+ * keep function declaration around
+int rp_lib_remove (         int* handle,
+                            char* path,
+                            int path_len);
+*/
+
+/*
+ * rp_lib_xml_len still needs to be written
+ * keep function declaration around
+int rp_lib_xml_len(         int* handle);
+*/
+
+void rp_lib_xml(            int* handle,
+                            char* retText,
+                            int retText_len);
+
+int rp_lib_write_xml(       int* handle,
+                            char* outFile,
+                            int outFile_len);
+
+void rp_lib_node_comp (     int* handle,
+                            char* retText,
+                            int retText_len);
+
+void rp_lib_node_type (     int* handle,
+                            char* retText,
+                            int retText_len);
+
+void rp_lib_node_id (       int* handle,
+                            char* retText,
+                            int retText_len);
+
+void rp_result(             int* handle );
+
+/**********************************************************/
+
+#ifdef __cplusplus
+    }
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RAPPTURE_LIBRARY_F_H
Index: /tags/1.6.0/src/core/RpLibraryFStubs.c
===================================================================
--- /tags/1.6.0/src/core/RpLibraryFStubs.c	(revision 6168)
+++ /tags/1.6.0/src/core/RpLibraryFStubs.c	(revision 6168)
@@ -0,0 +1,772 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Library Stub Functions
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+
+/**********************************************************/
+
+int
+rp_lib_ ( const char* filePath, int filePath_len ) {
+    return rp_lib (filePath,filePath_len);
+}
+
+int
+rp_lib__ ( const char* filePath, int filePath_len ) {
+    return rp_lib (filePath,filePath_len);
+}
+
+int
+RP_LIB( const char* filePath, int filePath_len ) {
+    return rp_lib (filePath,filePath_len);
+}
+
+void
+rp_lib_element_comp_ ( int* handle,
+                       char* path,
+                       char* retText,
+                       int path_len,
+                       int retText_len ) {
+
+    return rp_lib_element_comp(handle,path,retText,path_len,retText_len);
+}
+
+void
+rp_lib_element_comp__ ( int* handle,
+                       char* path,
+                       char* retText,
+                       int path_len,
+                       int retText_len ) {
+
+    return rp_lib_element_comp(handle,path,retText,path_len,retText_len);
+}
+
+void
+RP_LIB_ELEMENT_COMP ( int* handle,
+                       char* path,
+                       char* retText,
+                       int path_len,
+                       int retText_len ) {
+
+    return rp_lib_element_comp(handle,path,retText,path_len,retText_len);
+}
+
+void
+rp_lib_element_id_ (   int* handle,
+                       char* path,
+                       char* retText,
+                       int path_len,
+                       int retText_len ) {
+
+    return rp_lib_element_id(handle,path,retText,path_len,retText_len);
+}
+
+void
+rp_lib_element_id__ (   int* handle,
+                       char* path,
+                       char* retText,
+                       int path_len,
+                       int retText_len ) {
+
+    return rp_lib_element_id(handle,path,retText,path_len,retText_len);
+}
+
+void
+RP_LIB_ELEMENT_ID (   int* handle,
+                       char* path,
+                       char* retText,
+                       int path_len,
+                       int retText_len ) {
+
+    return rp_lib_element_id(handle,path,retText,path_len,retText_len);
+}
+
+void
+rp_lib_element_type_ ( int* handle,
+                       char* path,
+                       char* retText,
+                       int path_len,
+                       int retText_len ) {
+
+    return rp_lib_element_type(handle,path,retText,path_len,retText_len);
+}
+
+void
+rp_lib_element_type__ ( int* handle,
+                       char* path,
+                       char* retText,
+                       int path_len,
+                       int retText_len ) {
+
+    return rp_lib_element_type(handle,path,retText,path_len,retText_len);
+}
+
+void
+RP_LIB_ELEMENT_TYPE  ( int* handle,
+                       char* path,
+                       char* retText,
+                       int path_len,
+                       int retText_len ) {
+
+    return rp_lib_element_type(handle,path,retText,path_len,retText_len);
+}
+
+int
+rp_lib_element_obj_ (   int* handle,
+                        char* path,
+                        int path_len ) {
+
+    return rp_lib_element_obj(handle,path,path_len);
+}
+
+int
+rp_lib_element_obj__ (   int* handle,
+                        char* path,
+                        int path_len ) {
+
+    return rp_lib_element_obj(handle,path,path_len);
+}
+
+int
+RP_LIB_ELEMENT_OBJ  (   int* handle,
+                        char* path,
+                        int path_len ) {
+
+    return rp_lib_element_obj(handle,path,path_len);
+}
+
+/*
+ * rp_lib_child_num still needs to be written 
+ * keep these stub functions around
+int
+rp_lib_child_num_ (     int* handle,
+                        char* path,
+                        int* childHandle,
+                        int path_len) {
+
+    return rp_lib_child_num(handle,path,childHandle,path_len);
+}
+
+int
+rp_lib_child_num__ (     int* handle,
+                        char* path,
+                        int* childHandle,
+                        int path_len) {
+
+    return rp_lib_child_num(handle,path,childHandle,path_len);
+}
+
+int
+RP_LIB_CHILD_NUM (     int* handle,
+                        char* path,
+                        int* childHandle,
+                        int path_len) {
+
+    return rp_lib_child_num(handle,path,childHandle,path_len);
+}
+*/
+
+int
+rp_lib_children_ (     int* handle, /* integer handle of library */
+                       char* path, /* search path of the xml */
+                       int* childHandle, /*int handle of last returned child*/
+                       int path_len  /*length of the search path buffer*/
+                 ) {
+
+    return rp_lib_children(handle,path,childHandle,path_len);
+}
+
+int
+rp_lib_children__ (     int* handle, /* integer handle of library */
+                       char* path, /* search path of the xml */
+                       int* childHandle, /*int handle of last returned child*/
+                       int path_len  /*length of the search path buffer*/
+                 ) {
+
+    return rp_lib_children(handle,path,childHandle,path_len);
+}
+
+int
+RP_LIB_CHILDREN (     int* handle, /* integer handle of library */
+                       char* path, /* search path of the xml */
+                       int* childHandle, /*int handle of last returned child*/
+                       int path_len  /*length of the search path buffer*/
+                 ) {
+
+    return rp_lib_children(handle,path,childHandle,path_len);
+}
+
+void
+rp_lib_get_ (           int* handle,
+                        char* path,
+                        char* retText,
+                        int path_len,
+                        int retText_len ) {
+
+    return rp_lib_get(handle,path,retText,path_len,retText_len);
+}
+
+void
+rp_lib_get__ (           int* handle,
+                        char* path,
+                        char* retText,
+                        int path_len,
+                        int retText_len ) {
+
+    return rp_lib_get(handle,path,retText,path_len,retText_len);
+}
+
+void
+RP_LIB_GET  (           int* handle,
+                        char* path,
+                        char* retText,
+                        int path_len,
+                        int retText_len ) {
+
+    return rp_lib_get(handle,path,retText,path_len,retText_len);
+}
+
+void
+rp_lib_get_str_ (       int* handle,
+                        char* path,
+                        char* retText,
+                        int path_len,
+                        int retText_len ) {
+
+    return rp_lib_get_str(handle,path,retText,path_len,retText_len);
+}
+
+void
+rp_lib_get_str__ (      int* handle,
+                        char* path,
+                        char* retText,
+                        int path_len,
+                        int retText_len ) {
+
+    return rp_lib_get_str(handle,path,retText,path_len,retText_len);
+}
+
+void
+RP_LIB_GET_STR  (       int* handle,
+                        char* path,
+                        char* retText,
+                        int path_len,
+                        int retText_len ) {
+
+    return rp_lib_get_str(handle,path,retText,path_len,retText_len);
+}
+
+double
+rp_lib_get_double_ (    int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_get_double(handle,path,path_len);
+}
+
+double
+rp_lib_get_double__ (    int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_get_double(handle,path,path_len);
+}
+
+double
+RP_LIB_GET_DOUBLE (    int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_get_double(handle,path,path_len);
+}
+
+int
+rp_lib_get_integer_ (   int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_get_integer(handle,path,path_len);
+}
+
+int
+rp_lib_get_integer__ (  int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_get_integer(handle,path,path_len);
+}
+
+int
+RP_LIB_GET_INTEGER (    int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_get_integer(handle,path,path_len);
+}
+
+int
+rp_lib_get_boolean_ (   int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_get_boolean(handle,path,path_len);
+}
+
+int
+rp_lib_get_boolean__ (  int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_get_boolean(handle,path,path_len);
+}
+
+int
+RP_LIB_GET_BOOLEAN (    int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_get_boolean(handle,path,path_len);
+}
+
+int rp_lib_get_file_ (  int* handle,
+                        char* path,
+                        char* fileName,
+                        int path_len,
+                        int fileName_len) {
+
+    return rp_lib_get_file(handle,path,fileName,path_len,fileName_len);
+}
+
+int rp_lib_get_file__ ( int* handle,
+                        char* path,
+                        char* fileName,
+                        int path_len,
+                        int fileName_len) {
+
+    return rp_lib_get_file(handle,path,fileName,path_len,fileName_len);
+}
+
+int RP_LIB_GET_FILE (   int* handle,
+                        char* path,
+                        char* fileName,
+                        int path_len,
+                        int fileName_len) {
+
+    return rp_lib_get_file(handle,path,fileName,path_len,fileName_len);
+}
+
+void
+rp_lib_put_str_ (       int* handle,
+                        char* path,
+                        char* value,
+                        int* append,
+                        int path_len,
+                        int value_len ) {
+
+    rp_lib_put_str(handle,path,value,append,path_len,value_len);
+    return;
+}
+
+void
+rp_lib_put_str__ (      int* handle,
+                        char* path,
+                        char* value,
+                        int* append,
+                        int path_len,
+                        int value_len ) {
+
+    rp_lib_put_str(handle,path,value,append,path_len,value_len);
+    return;
+}
+
+void
+RP_LIB_PUT_STR (       int* handle,
+                        char* path,
+                        char* value,
+                        int* append,
+                        int path_len,
+                        int value_len ) {
+
+    rp_lib_put_str(handle,path,value,append,path_len,value_len);
+    return;
+}
+
+void
+rp_lib_put_id_str_ (    int* handle,
+                        char* path,
+                        char* value,
+                        char* id,
+                        int* append,
+                        int path_len,
+                        int value_len,
+                        int id_len ) {
+
+    rp_lib_put_id_str(handle,path,value,id,append,path_len,value_len,id_len);
+    return;
+}
+
+void
+rp_lib_put_id_str__ (    int* handle,
+                        char* path,
+                        char* value,
+                        char* id,
+                        int* append,
+                        int path_len,
+                        int value_len,
+                        int id_len ) {
+
+    rp_lib_put_id_str(handle,path,value,id,append,path_len,value_len,id_len);
+    return;
+}
+
+void
+RP_LIB_PUT_ID_STR (    int* handle,
+                        char* path,
+                        char* value,
+                        char* id,
+                        int* append,
+                        int path_len,
+                        int value_len,
+                        int id_len ) {
+
+    rp_lib_put_id_str(handle,path,value,id,append,path_len,value_len,id_len);
+    return;
+}
+
+void
+rp_lib_put_data_ (      int* handle,
+                        char* path,
+                        char* bytes,
+                        int* nbytes,
+                        int* append,
+                        int path_len,
+                        int bytes_len ) {
+
+    rp_lib_put_data(handle,path,bytes,nbytes,append,path_len,bytes_len);
+    return;
+}
+
+void
+rp_lib_put_data__ (     int* handle,
+                        char* path,
+                        char* bytes,
+                        int* nbytes,
+                        int* append,
+                        int path_len,
+                        int bytes_len ) {
+
+    rp_lib_put_data(handle,path,bytes,nbytes,append,path_len,bytes_len);
+    return;
+}
+
+void
+RP_LIB_PUT_DATA (       int* handle,
+                        char* path,
+                        char* bytes,
+                        int* nbytes,
+                        int* append,
+                        int path_len,
+                        int bytes_len ) {
+
+    rp_lib_put_data(handle,path,bytes,nbytes,append,path_len,bytes_len);
+    return;
+}
+
+void
+rp_lib_put_file_ (      int* handle,
+                        char* path,
+                        char* fileName,
+                        int* compress,
+                        int* append,
+                        int path_len,
+                        int fileName_len ) {
+
+    rp_lib_put_file(handle,path,fileName,compress,append,path_len,fileName_len);
+    return;
+}
+
+void
+rp_lib_put_file__ (     int* handle,
+                        char* path,
+                        char* fileName,
+                        int* compress,
+                        int* append,
+                        int path_len,
+                        int fileName_len ) {
+
+    rp_lib_put_file(handle,path,fileName,compress,append,path_len,fileName_len);
+    return;
+}
+
+void
+RP_LIB_PUT_FILE (       int* handle,
+                        char* path,
+                        char* fileName,
+                        int* compress,
+                        int* append,
+                        int path_len,
+                        int fileName_len ) {
+
+    rp_lib_put_file(handle,path,fileName,compress,append,path_len,fileName_len);
+    return;
+}
+
+/*
+ * rp_lib_put_obj still needs to be written 
+ * keep these stub functions around
+void
+rp_lib_put_obj_ (       int* handle,
+                        char* path,
+                        int* valHandle,
+                        int* append,
+                        int path_len ) {
+
+    return rp_lib_put_obj(handle,path,valHandle,append,path_len);
+}
+
+void
+rp_lib_put_obj__ (       int* handle,
+                        char* path,
+                        int* valHandle,
+                        int* append,
+                        int path_len ) {
+
+    return rp_lib_put_obj(handle,path,valHandle,append,path_len);
+}
+
+void
+RP_LIB_PUT_OBJ (       int* handle,
+                        char* path,
+                        int* valHandle,
+                        int* append,
+                        int path_len ) {
+
+    return rp_lib_put_obj(handle,path,valHandle,append,path_len);
+}
+*/
+
+/*
+ * rp_lib_put_id_obj still needs to be written 
+ * keep these stub functions around
+void
+rp_lib_put_id_obj_ (    int* handle,
+                        char* path,
+                        int* valHandle,
+                        char* id,
+                        int* append,
+                        int path_len,
+                        int id_len ) {
+
+    return rp_lib_put_id_obj(handle,path,valHandle,id,append,path_len,id_len);
+}
+
+void
+rp_lib_put_id_obj__ (    int* handle,
+                        char* path,
+                        int* valHandle,
+                        char* id,
+                        int* append,
+                        int path_len,
+                        int id_len ) {
+
+    return rp_lib_put_id_obj(handle,path,valHandle,id,append,path_len,id_len);
+}
+
+void
+RP_LIB_PUT_ID_OBJ (    int* handle,
+                        char* path,
+                        int* valHandle,
+                        char* id,
+                        int* append,
+                        int path_len,
+                        int id_len ) {
+
+    return rp_lib_put_id_obj(handle,path,valHandle,id,append,path_len,id_len);
+}
+*/
+
+/*
+ * rp_lib_remove still needs to be written 
+ * keep these stub functions around
+int
+rp_lib_remove_ (        int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_remove(handle,path,path_len);
+}
+
+int
+rp_lib_remove__ (        int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_remove(handle,path,path_len);
+}
+
+int
+RP_LIB_REMOVE  (        int* handle,
+                        char* path,
+                        int path_len) {
+
+    return rp_lib_remove(handle,path,path_len);
+}
+*/
+
+/*
+ * rp_lib_xml_len still needs to be written 
+ * keep these stub functions around
+int
+rp_lib_xml_len_(        int* handle) {
+    return rp_lib_xml_len(handle);
+}
+
+int
+rp_lib_xml_len__(        int* handle) {
+    return rp_lib_xml_len(handle);
+}
+
+int
+RP_LIB_XML_LEN (        int* handle) {
+    return rp_lib_xml_len(handle);
+}
+*/
+
+void
+rp_lib_xml_(            int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_xml(handle,retText,retText_len);
+}
+
+void
+rp_lib_xml__(            int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_xml(handle,retText,retText_len);
+}
+
+void
+RP_LIB_XML (            int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_xml(handle,retText,retText_len);
+}
+
+int
+rp_lib_write_xml_(      int* handle,
+                        char* outFile,
+                        int outFile_len) {
+    return rp_lib_write_xml (handle,outFile,outFile_len);
+}
+
+int
+rp_lib_write_xml__(      int* handle,
+                        char* outFile,
+                        int outFile_len) {
+    return rp_lib_write_xml (handle,outFile,outFile_len);
+}
+
+int
+RP_LIB_WRITE_XML(      int* handle,
+                        char* outFile,
+                        int outFile_len) {
+    return rp_lib_write_xml (handle,outFile,outFile_len);
+}
+
+void
+rp_lib_node_comp_ (     int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_node_comp (handle,retText,retText_len);
+}
+
+void
+rp_lib_node_comp__ (     int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_node_comp (handle,retText,retText_len);
+}
+
+void
+RP_LIB_NODE_COMP (     int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_node_comp (handle,retText,retText_len);
+}
+
+void
+rp_lib_node_type_ (     int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_node_type (handle,retText,retText_len);
+}
+
+void
+rp_lib_node_type__ (     int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_node_type (handle,retText,retText_len);
+}
+
+void
+RP_LIB_NODE_TYPE (      int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_node_type (handle,retText,retText_len);
+}
+
+void
+rp_lib_node_id_ (       int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_node_id(handle,retText,retText_len);
+}
+
+void
+rp_lib_node_id__ (       int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_node_id(handle,retText,retText_len);
+}
+
+void
+RP_LIB_NODE_ID (        int* handle,
+                        char* retText,
+                        int retText_len) {
+    return rp_lib_node_id(handle,retText,retText_len);
+}
+
+void
+rp_result_(             int* handle ) {
+    return rp_result(handle);
+}
+
+void
+rp_result__(             int* handle ) {
+    return rp_result(handle);
+}
+
+void
+RP_RESULT (             int* handle ) {
+    return rp_result(handle);
+}
+
+
+/**********************************************************/
+/**********************************************************/
+
+#ifdef __cplusplus
+    }
+#endif
Index: /tags/1.6.0/src/core/RpLibraryFStubs.h
===================================================================
--- /tags/1.6.0/src/core/RpLibraryFStubs.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpLibraryFStubs.h	(revision 6168)
@@ -0,0 +1,466 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Library Stub Headers
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+
+/**********************************************************/
+// INTERFACE FUNCTIONS - ONE UNDERSCORE
+
+void rp_init_();
+
+int rp_lib_ ( const char* filePath, int filePath_len );
+
+void rp_lib_element_comp_ ( int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void rp_lib_element_id_ (   int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void rp_lib_element_type_ ( int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+int rp_lib_element_obj_ (   int* handle,
+                            char* path,
+                            int path_len );
+
+int rp_lib_child_num_ (     int* handle,
+                            char* path,
+                            int* childHandle,
+                            int path_len);
+
+int rp_lib_children_ (      int* handle, /* integer handle of library */
+                            char* path, /* search path of the xml */
+                            int* childHandle, /*int handle of last returned child*/
+                            int path_len  /*length of the search path buffer*/
+                    );
+
+
+void rp_lib_get_ (          int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void rp_lib_get_str_ (      int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+double rp_lib_get_double_ ( int* handle,
+                            char* path,
+                            int path_len);
+
+int rp_lib_get_integer_ (   int* handle,
+                            char* path,
+                            int path_len);
+
+int rp_lib_get_boolean_ (   int* handle,
+                            char* path,
+                            int path_len);
+
+int rp_lib_get_file_ (      int* handle,
+                            char* path,
+                            char* fileName,
+                            int path_len,
+                            int fileName_len);
+
+void rp_lib_put_str_ (      int* handle,
+                            char* path,
+                            char* value,
+                            int* append,
+                            int path_len,
+                            int value_len );
+
+void rp_lib_put_id_str_ (   int* handle,
+                            char* path,
+                            char* value,
+                            char* id,
+                            int* append,
+                            int path_len,
+                            int value_len,
+                            int id_len );
+
+void rp_lib_put_data_ (     int* handle,
+                            char* path,
+                            char* bytes,
+                            int* nbytes,
+                            int* append,
+                            int path_len,
+                            int bytes_len );
+
+void rp_lib_put_file_ (     int* handle,
+                            char* path,
+                            char* fileName,
+                            int* compress,
+                            int* append,
+                            int path_len,
+                            int fileName_len );
+
+/*
+void rp_lib_put_obj_ (      int* handle,
+                            char* path,
+                            int* valHandle,
+                            int* append,
+                            int path_len );
+
+void rp_lib_put_id_obj_ (   int* handle,
+                            char* path,
+                            int* valHandle,
+                            char* id,
+                            int* append,
+                            int path_len,
+                            int id_len );
+*/
+
+int rp_lib_remove_ (        int* handle,
+                            char* path,
+                            int path_len);
+
+int rp_lib_xml_len_(        int* handle);
+
+void rp_lib_xml_(           int* handle,
+                            char* retText,
+                            int retText_len);
+
+int rp_lib_write_xml_(      int* handle,
+                            char* outFile,
+                            int outFile_len);
+
+void rp_lib_node_comp_ (    int* handle,
+                            char* retText,
+                            int retText_len);
+
+void rp_lib_node_type_ (    int* handle,
+                            char* retText,
+                            int retText_len);
+
+void rp_lib_node_id_ (      int* handle,
+                            char* retText,
+                            int retText_len);
+
+void rp_result_(            int* handle );
+
+
+/**********************************************************/
+
+void rp_init__();
+
+int rp_lib__ ( const char* filePath, int filePath_len );
+
+void rp_lib_element_comp__ (int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void rp_lib_element_id__ (  int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void rp_lib_element_type__ (int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+int rp_lib_element_obj__ (  int* handle,
+                            char* path,
+                            int path_len );
+
+int rp_lib_child_num__ (    int* handle,
+                            char* path,
+                            int* childHandle,
+                            int path_len);
+
+int rp_lib_children__ (     int* handle, /* integer handle of library */
+                            char* path, /* search path of the xml */
+                            int* childHandle, /*int handle of last returned child*/
+                            int path_len  /*length of the search path buffer*/
+                    );
+
+
+void rp_lib_get__ (         int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void rp_lib_get_str__ (     int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+double rp_lib_get_double__ (int* handle,
+                            char* path,
+                            int path_len);
+
+int rp_lib_get_integer__ (  int* handle,
+                            char* path,
+                            int path_len);
+
+int rp_lib_get_boolean__ (  int* handle,
+                            char* path,
+                            int path_len);
+
+int rp_lib_get_file__ (     int* handle,
+                            char* path,
+                            char* fileName,
+                            int path_len,
+                            int fileName_len);
+
+void rp_lib_put_str__ (     int* handle,
+                            char* path,
+                            char* value,
+                            int* append,
+                            int path_len,
+                            int value_len );
+
+void rp_lib_put_id_str__ (  int* handle,
+                            char* path,
+                            char* value,
+                            char* id,
+                            int* append,
+                            int path_len,
+                            int value_len,
+                            int id_len );
+
+void rp_lib_put_data__ (    int* handle,
+                            char* path,
+                            char* bytes,
+                            int* nbytes,
+                            int* append,
+                            int path_len,
+                            int bytes_len );
+
+void rp_lib_put_file__ (    int* handle,
+                            char* path,
+                            char* fileName,
+                            int* compress,
+                            int* append,
+                            int path_len,
+                            int fileName_len );
+
+/*
+void rp_lib_put_obj__ (     int* handle,
+                            char* path,
+                            int* valHandle,
+                            int* append,
+                            int path_len );
+
+void rp_lib_put_id_obj__ (  int* handle,
+                            char* path,
+                            int* valHandle,
+                            char* id,
+                            int* append,
+                            int path_len,
+                            int id_len );
+*/
+
+int rp_lib_remove__ (       int* handle,
+                            char* path,
+                            int path_len);
+
+int rp_lib_xml_len__(       int* handle);
+
+void rp_lib_xml__(          int* handle,
+                            char* retText,
+                            int retText_len);
+
+int rp_lib_write_xml__(     int* handle,
+                            char* outFile,
+                            int outFile_len);
+
+void rp_lib_node_comp__ (   int* handle,
+                            char* retText,
+                            int retText_len);
+
+void rp_lib_node_type__ (   int* handle,
+                            char* retText,
+                            int retText_len);
+
+void rp_lib_node_id__ (     int* handle,
+                            char* retText,
+                            int retText_len);
+
+void rp_result__(           int* handle );
+
+
+/**********************************************************/
+// INTERFACE STUB FUNCTIONS - ALL CAPS
+
+void RP_INIT();
+
+int RP_LIB ( const char* filePath, int filePath_len );
+
+void RP_LIB_ELEMENT_COMP (  int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void RP_LIB_ELEMENT_ID(    int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void RP_LIB_ELEMENT_TYPE (  int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+int RP_LIB_ELEMENT_OBJ (    int* handle,
+                            char* path,
+                            int path_len );
+
+int RP_LIB_CHILD_NUM (      int* handle,
+                            char* path,
+                            int* childHandle,
+                            int path_len);
+
+int RP_LIB_CHILDREN (       int* handle, /* integer handle of library */
+                            char* path, /* search path of the xml */
+                            int* childHandle, /*int handle of last returned child*/
+                            int path_len  /*length of the search path buffer*/
+                    );
+
+
+void RP_LIB_GET (           int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+void RP_LIB_GET_STR (       int* handle,
+                            char* path,
+                            char* retText,
+                            int path_len,
+                            int retText_len );
+
+double RP_LIB_GET_DOUBLE (  int* handle,
+                            char* path,
+                            int path_len);
+
+int RP_LIB_GET_INTEGER (    int* handle,
+                            char* path,
+                            int path_len);
+
+int RP_LIB_GET_BOOLEAN (    int* handle,
+                            char* path,
+                            int path_len);
+
+int RP_LIB_GET_FILE (       int* handle,
+                            char* path,
+                            char* fileName,
+                            int path_len,
+                            int fileName_len);
+
+void RP_LIB_PUT_STR (       int* handle,
+                            char* path,
+                            char* value,
+                            int* append,
+                            int path_len,
+                            int value_len );
+
+void RP_LIB_PUT_ID_STR (    int* handle,
+                            char* path,
+                            char* value,
+                            char* id,
+                            int* append,
+                            int path_len,
+                            int value_len,
+                            int id_len );
+
+void RP_LIB_PUT_DATA (      int* handle,
+                            char* path,
+                            char* bytes,
+                            int* nbytes,
+                            int* append,
+                            int path_len,
+                            int bytes_len );
+
+void RP_LIB_PUT_FILE (      int* handle,
+                            char* path,
+                            char* fileName,
+                            int* compress,
+                            int* append,
+                            int path_len,
+                            int fileName_len );
+/*
+void RP_LIB_PUT_OBJ (       int* handle,
+                            char* path,
+                            int* valHandle,
+                            int* append,
+                            int path_len );
+
+void RP_LIB_PUT_ID_OBJ (    int* handle,
+                            char* path,
+                            int* valHandle,
+                            char* id,
+                            int* append,
+                            int path_len,
+                            int id_len );
+*/
+
+int RP_LIB_REMOVE (         int* handle,
+                            char* path,
+                            int path_len);
+
+int RP_LIB_XML_LEN(         int* handle);
+
+void RP_LIB_XML(            int* handle,
+                            char* retText,
+                            int retText_len);
+
+int RP_LIB_WRITE_XML(       int* handle,
+                            char* outFile,
+                            int outFile_len);
+
+void RP_LIB_NODE_COMP (     int* handle,
+                            char* retText,
+                            int retText_len);
+
+void RP_LIB_NODE_TYPE (     int* handle,
+                            char* retText,
+                            int retText_len);
+
+void RP_LIB_NODE_ID (       int* handle,
+                            char* retText,
+                            int retText_len);
+
+void RP_RESULT(             int* handle );
+
+
+/**********************************************************/
+/**********************************************************/
+
+#ifdef __cplusplus
+    }
+#endif
Index: /tags/1.6.0/src/core/RpOutcome.cc
===================================================================
--- /tags/1.6.0/src/core/RpOutcome.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpOutcome.cc	(revision 6168)
@@ -0,0 +1,207 @@
+/*
+ * ======================================================================
+ *  Rappture::Outcome
+ *
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+#include "RpOutcome.h"
+using namespace Rappture;
+
+/**
+ *  Create a negative outcome, with the given error message.
+ */
+Outcome::Outcome(const char *errmsg) :
+    _status(0)
+{
+    if (errmsg) {
+        error(errmsg);
+    }
+}
+
+/// Copy constructor
+Outcome::Outcome(const Outcome& oc) :
+    _status(oc._status),
+    _remark(oc._remark),
+    _context(oc._context)
+{
+}
+
+/// Assignment operator
+Outcome&
+Outcome::operator=(const Outcome& oc)
+{
+    _status = oc._status;
+    _remark = oc._remark;
+    _context = oc._context;
+    return *this;
+}
+
+/// Destructor
+Outcome::~Outcome()
+{}
+
+/**
+ *  Assign an error condition to the outcome.
+ */
+Outcome&
+Outcome::error(const char* errmsg, int status)
+{
+    _status = status;
+    _remark = errmsg;
+    return *this;
+}
+
+Outcome&
+Outcome::addError(const char* format, ...)
+{
+    char stackSpace[1024];
+    va_list lst;
+    size_t n;
+    char *bufPtr;
+
+    va_start(lst, format);
+    bufPtr = stackSpace;
+    n = vsnprintf(bufPtr, 1024, format, lst);
+    if (n >= 1024) {
+        bufPtr = (char *)malloc(n);
+        vsnprintf(bufPtr, n, format, lst);
+    }
+    if (_remark == "") {
+        _remark = _context;
+        _remark.append(":\n");
+        _remark.append(bufPtr);
+    } else {
+        _remark.append("\n");
+        _remark.append(bufPtr);
+    }
+    /* fprintf(stderr, "Outcome: %s\n", _remark.c_str()); */
+    _status = 1;                /* Set to error */
+    if (bufPtr != stackSpace) {
+        free(bufPtr);
+    }
+    return *this;
+}
+
+/**
+ *  Clear the status of this outcome.
+ */
+Outcome&
+Outcome::clear()
+{
+    _status = 0;
+    _remark.clear();
+    _context.clear();
+    return *this;
+}
+
+/**
+ *  Returns the status of this outcome as an integer.
+ *  As in Unix systems, 0 = okay.
+ */
+Outcome::operator int() const
+{
+    return _status;
+}
+
+/**
+ *  For !error tests.
+ */
+int
+Outcome::operator!() const
+{
+    return (_status == 0);
+}
+
+/**
+ *  Use this to concatenate many different outcomes.
+ */
+Outcome&
+Outcome::operator&=(Outcome oc)
+{
+    _status &= oc._status;
+    _remark = oc._remark;
+    _context = oc._context;
+    return *this;
+}
+
+/**
+ *  Query the error remark from an outcome.
+ */
+const char *
+Outcome::remark() const
+{
+    return _remark.c_str();
+}
+
+/**
+ *  Add information to the context stack for an outcome.
+ */
+Outcome&
+Outcome::addContext(const char *rem)
+{
+    // FIXME: There should be a stack of contexts
+    _context = rem;
+    _context.append("\n");
+    return *this;
+}
+
+#ifdef soon
+/**
+ *  Push context information on to the context stack for an outcome.
+ */
+void
+Outcome::pushContext(const char* format, ...)
+{
+    char stackSpace[1024];
+    va_list lst;
+    size_t n;
+    char *bufPtr;
+
+    va_start(lst, format);
+    bufPtr = stackSpace;
+    n = vsnprintf(bufPtr, 1024, format, lst);
+    if (n >= 1024) {
+        bufPtr = (char *)malloc(n);
+        vsnprintf(bufPtr, n, format, lst);
+    }
+    _contexts.push_front(bufPtr);
+}
+
+/**
+ *  Pop the last context from the stack.
+ */
+void
+Outcome::popContext(void)
+{
+    _contexts.pop_front();
+}
+
+void
+Outcome::printContext(void)
+{
+    list<const char *>::interator iter;
+
+    for (iter = _contexts.begin(); iter != _contexts.end(); iter++) {
+        fprintf(stderr, "Called from %s\n", *iter);
+    }
+}
+
+#endif /*soon*/
+
+/**
+ *  Query the context stack from an outcome.
+ */
+
+const char *
+Outcome::context() const
+{
+    return _context.c_str();
+}
Index: /tags/1.6.0/src/core/RpOutcome.h
===================================================================
--- /tags/1.6.0/src/core/RpOutcome.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpOutcome.h	(revision 6168)
@@ -0,0 +1,58 @@
+/*
+ * ======================================================================
+ *  Rappture::Outcome
+ *
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RAPPTURE_OUTCOME_H
+#define RAPPTURE_OUTCOME_H
+
+#include <string>
+#include <RpPtr.h>
+
+namespace Rappture {
+
+/**
+ *  This object represents the result of any Rappture call.  It acts
+ *  like a boolean, so it can be tested for success/failure.  But
+ *  it can also contain information about failure, including a trace
+ *  back of messages indicating the cause.
+ */
+class Outcome {
+public:
+    Outcome(const char* errmsg=NULL);
+    Outcome(const Outcome& status);
+    Outcome& operator=(const Outcome& status);
+    virtual ~Outcome();
+
+    Outcome& addError(const char* format, ...);
+    virtual Outcome& error(const char* errmsg, int status=1);
+    virtual Outcome& clear();
+
+    virtual operator int() const;
+    virtual int operator!() const;
+    virtual Outcome& operator&=(Outcome status);  // pass-by-value to avoid temp
+
+    virtual const char *remark() const;
+    virtual Outcome& addContext(const char *rem);
+    virtual const char *context() const;
+
+private:
+    /// overall pass/fail status
+    int _status;
+
+    /// error message
+    std::string _remark;
+
+    /// stack trace
+    std::string _context;
+};
+
+} // namespace Rappture
+
+#endif
Index: /tags/1.6.0/src/core/RpOutcomeCHelper.h
===================================================================
--- /tags/1.6.0/src/core/RpOutcomeCHelper.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpOutcomeCHelper.h	(revision 6168)
@@ -0,0 +1,27 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Rappture Outcome Helper Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RAPPTURE_OUTCOME_C_HELPER_H
+#define _RAPPTURE_OUTCOME_C_HELPER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif // ifdef __cplusplus
+
+int RpOutcomeToCOutcome(Rappture::Outcome* rpoutcome, RapptureOutcome* status);
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RAPPTURE_OUTCOME_C_HELPER_H
Index: /tags/1.6.0/src/core/RpOutcomeCInterface.cc
===================================================================
--- /tags/1.6.0/src/core/RpOutcomeCInterface.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpOutcomeCInterface.cc	(revision 6168)
@@ -0,0 +1,141 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: C Rappture Outcome Interface Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpOutcome.h"
+#include "RpOutcomeCInterface.h"
+#include "RpOutcomeCHelper.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int
+RapptureOutcomeInit(RapptureOutcome* status)
+{
+    if (status == NULL) {
+        return -1;
+    }
+
+    status->_status = NULL;
+
+    return 0;
+}
+
+int
+RapptureOutcomeNew(RapptureOutcome* status)
+{
+    if (status == NULL) {
+        return -1;
+    }
+
+    RapptureOutcomeFree(status);
+    status->_status = (void*) new Rappture::Outcome();
+
+    return 0;
+}
+
+int
+RapptureOutcomeFree(RapptureOutcome* status)
+{
+    if (status->_status != NULL) {
+        delete ((Rappture::Outcome*)status->_status);
+        status->_status = NULL;
+    }
+    return 0;
+}
+
+int
+RpOutcomeToCOutcome(Rappture::Outcome* rpoutcome, RapptureOutcome* status)
+{
+    if (rpoutcome == NULL) {
+        return -1;
+    }
+
+    if (status == NULL) {
+        return -1;
+    }
+
+    RapptureOutcomeFree(status);
+    status->_status = new Rappture::Outcome(*rpoutcome);
+    return 0;
+}
+
+int
+RapptureOutcomeError(  RapptureOutcome* outcome,
+                       const char* errmsg,
+                       int status  )
+{
+    if (outcome == NULL) {
+        return -1;
+    }
+
+    if (outcome->_status == NULL) {
+        return -1;
+    }
+
+    ((Rappture::Outcome*)outcome->_status)->error(errmsg,status);
+    return 0;
+}
+
+int
+RapptureOutcomeClear(RapptureOutcome* status)
+{
+    if (status == NULL) {
+        return -1;
+    }
+
+    if (status->_status == NULL) {
+        return -1;
+    }
+
+    ((Rappture::Outcome*)status->_status)->clear();
+    return 0;
+}
+
+int
+RapptureOutcomeAddContext(RapptureOutcome* status, const char* msg)
+{
+    if (status == NULL) {
+        return -1;
+    }
+
+    if (status->_status == NULL) {
+        return -1;
+    }
+
+    ((Rappture::Outcome*)status->_status)->addContext(msg);
+    return 0;
+}
+
+const char*
+RapptureOutcomeRemark(RapptureOutcome* status)
+{
+    return NULL;
+}
+
+const char*
+RapptureOutcomeContext(RapptureOutcome* status)
+{
+    return NULL;
+}
+
+int
+RapptureOutcomeCheck(RapptureOutcome* status)
+{
+  return (Rappture::Outcome*)status->_status != NULL;
+}
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
Index: /tags/1.6.0/src/core/RpOutcomeCInterface.h
===================================================================
--- /tags/1.6.0/src/core/RpOutcomeCInterface.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpOutcomeCInterface.h	(revision 6168)
@@ -0,0 +1,42 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: C Rappture Outcome Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+
+#ifndef _RAPPTURE_OUTCOME_C_H
+#define _RAPPTURE_OUTCOME_C_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif // ifdef __cplusplus
+
+typedef struct {
+    void* _status;
+} RapptureOutcome;
+
+int RapptureOutcomeInit(RapptureOutcome* status);
+int RapptureOutcomeNew(RapptureOutcome* status);
+int RapptureOutcomeFree(RapptureOutcome* status);
+int RapptureOutcomeError(  RapptureOutcome* outcome,
+                           const char* errmsg,
+                           int status  );
+int RapptureOutcomeClear(RapptureOutcome* status);
+int RapptureOutcomeAddContext(RapptureOutcome* status, const char* msg);
+const char* RapptureOutcomeRemark(RapptureOutcome* status);
+const char* RapptureOutcomeContext(RapptureOutcome* status);
+int RapptureOutcomeCheck(RapptureOutcome* status);
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RAPPTURE_OUTCOME_C_H
Index: /tags/1.6.0/src/core/RpPtr.cc
===================================================================
--- /tags/1.6.0/src/core/RpPtr.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpPtr.cc	(revision 6168)
@@ -0,0 +1,49 @@
+/*
+ * ======================================================================
+ *  Rappture::Ptr<type>
+ *
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <stdlib.h>
+#include <RpPtr.h>
+#include <assert.h>
+
+using namespace Rappture;
+
+PtrCore::PtrCore(void* ptr)
+  : _ptr(ptr),
+    _refcount(1)
+{
+}
+
+PtrCore::~PtrCore()
+{
+    assert(_refcount <= 0);
+}
+
+void*
+PtrCore::pointer() const
+{
+    return _ptr;
+}
+
+void
+PtrCore::attach()
+{
+    _refcount++;
+}
+
+void*
+PtrCore::detach()
+{
+    if (--_refcount <= 0 && _ptr != NULL) {
+        return _ptr;
+    }
+    return NULL;
+}
Index: /tags/1.6.0/src/core/RpPtr.h
===================================================================
--- /tags/1.6.0/src/core/RpPtr.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpPtr.h	(revision 6168)
@@ -0,0 +1,171 @@
+/*
+ * ======================================================================
+ *  Rappture::Ptr<type>
+ *
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RAPPTURE_PTR_H
+#define RAPPTURE_PTR_H
+
+#include <assert.h>
+#include <stddef.h>
+
+namespace Rappture {
+
+/**
+ *  This is the core of a smart pointer, built to keep a reference
+ *  count and do most of the work, so the template class can be lean
+ *  and mean.
+ */
+class PtrCore {
+public:
+    explicit PtrCore(void* ptr=NULL);
+    ~PtrCore();
+
+    void* pointer() const;
+    void attach();
+    void* detach();
+
+private:
+    // copying the core is not allowed
+    PtrCore(const PtrCore& pc) { assert(0); }
+    PtrCore& operator=(const PtrCore& pc) { assert(0); return *this; }
+
+    void *_ptr;
+    int _refcount;
+};
+
+/**
+ *  This is a smart pointer with reference counting.  Once one of
+ *  these pointers is constructed with an object of the underlying
+ *  type, that object becomes property of the pointer.  Other
+ *  pointers can point to the same object.  When all such pointers
+ *  have been destroyed, the underlying object goes away.
+ */
+template <class Type>
+class Ptr {
+public:
+    explicit Ptr(Type* ptr=NULL);
+    Ptr(const Ptr& ptr);
+    Ptr& operator=(Type* ptr);
+    Ptr& operator=(const Ptr& ptr);
+    ~Ptr();
+
+    int isNull() const;
+    Type* operator->() const;
+    Type* pointer() const;
+    Type& operator*() const;
+    void clear();
+
+private:
+    PtrCore *_pc;
+};
+
+template <class Type>
+Ptr<Type>::Ptr(Type* ptr)
+  : _pc(NULL)
+{
+    if (ptr) {
+        _pc = new PtrCore(ptr);
+    }
+}
+
+template <class Type>
+Ptr<Type>::Ptr(const Ptr<Type>& ptr)
+  : _pc(NULL)
+{
+    if (ptr._pc) {
+        ptr._pc->attach();
+        _pc = ptr._pc;
+    }
+}
+
+template <class Type>
+Ptr<Type>::~Ptr()
+{
+    clear();
+}
+
+template <class Type>
+Ptr<Type>&
+Ptr<Type>::operator=(Type* ptr)
+{
+    clear();
+    _pc = new PtrCore(ptr);
+    return *this;
+}
+
+template <class Type>
+Ptr<Type>&
+Ptr<Type>::operator=(const Ptr<Type>& ptr)
+{
+    if (ptr._pc) {
+        ptr._pc->attach();
+    }
+    clear();
+    _pc = ptr._pc;
+    return *this;
+}
+
+template <class Type>
+int
+Ptr<Type>::isNull() const
+{
+    if (_pc) {
+        return (_pc->pointer() == NULL);
+    }
+    return 1;
+}
+
+template <class Type>
+Type*
+Ptr<Type>::operator->() const
+{
+    if (_pc) {
+        return static_cast<Type*>(_pc->pointer());
+    }
+    return NULL;
+}
+
+template <class Type>
+Type*
+Ptr<Type>::pointer() const
+{
+    if (_pc) {
+        return (Type*)_pc->pointer();
+    }
+    return NULL;
+}
+
+template <class Type>
+Type&
+Ptr<Type>::operator*() const
+{
+    assert(_pc != NULL);
+    return *(Type*)_pc->pointer();
+}
+
+template <class Type>
+void
+Ptr<Type>::clear()
+{
+    if (_pc) {
+        Type* ptr = (Type*)_pc->detach();
+        if (ptr) {
+            // If we get back a pointer, then it is fully detached.
+            // Clean it up.
+            delete ptr;
+            delete _pc;
+        }
+        _pc = NULL;
+    }
+}
+
+} // namespace Rappture
+
+#endif // RAPPTURE_PTR_H
Index: /tags/1.6.0/src/core/RpResult.cc
===================================================================
--- /tags/1.6.0/src/core/RpResult.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpResult.cc	(revision 6168)
@@ -0,0 +1,51 @@
+/*
+ * ----------------------------------------------------------------------
+ *  FUNCTION: rpResult
+ *
+ *  Clients call this function at the end of their simulation, to
+ *  pass the simulation result back to the Rappture GUI.  It writes
+ *  out the given XML object to a runXXX.xml file, and then writes
+ *  out the name of that file to stdout.
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <stdlib.h>
+#include <time.h>
+#include <RpLibrary.h>
+#include <errno.h>
+
+void
+rpResult(RpLibrary* lib) 
+{
+    char outputFile[100];
+    std::string xtext;
+    FILE* fp;
+    time_t t;
+
+    xtext = lib->xml();
+
+    // create output filename
+    snprintf(outputFile, 50, "run%d.xml", (int)time(&t));
+
+    // write out the result file
+    fp = fopen(outputFile, "w");
+    if(!fp) {
+        fprintf(stderr,"can't save results: %s\n", strerror(errno));
+        return;
+    }
+    int fsize = fwrite(xtext.c_str(), xtext.length(), sizeof(char), fp);
+    if (fsize != (int)xtext.length()) {
+        fprintf(stderr, "short write: can't save results: %s\n", 
+		strerror(errno));
+        fclose(fp);
+        return;
+    }
+    fclose(fp);
+    // tell Rappture the file name
+    printf("=RAPPTURE-RUN=>%s\n", outputFile);
+}
Index: /tags/1.6.0/src/core/RpSimpleBuffer.h
===================================================================
--- /tags/1.6.0/src/core/RpSimpleBuffer.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpSimpleBuffer.h	(revision 6168)
@@ -0,0 +1,888 @@
+
+/*
+ * ======================================================================
+ *  Rappture::SimpleBuffer
+ *
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ *
+ *  This code is based on the Tcl_DString facility included in the
+ *  Tcl source release, which includes the following copyright:
+ *
+ *  Copyright (c) 1987-1993 The Regents of the University of California.
+ *  Copyright (c) 1994-1998 Sun Microsystems, Inc.
+ *  Copyright (c) 2001 by Kevin B. Kenny.  All rights reserved.
+ *
+ *  This software is copyrighted by the Regents of the University of
+ *  California, Sun Microsystems, Inc., Scriptics Corporation,
+ *  and other parties.  The following terms apply to all files associated
+ *  with the software unless explicitly disclaimed in individual files.
+ *
+ *  The authors hereby grant permission to use, copy, modify, distribute,
+ *  and license this software and its documentation for any purpose, provided
+ *  that existing copyright notices are retained in all copies and that this
+ *  notice is included verbatim in any distributions. No written agreement,
+ *  license, or royalty fee is required for any of the authorized uses.
+ *  Modifications to this software may be copyrighted by their authors
+ *  and need not follow the licensing terms described here, provided that
+ *  the new terms are clearly indicated on the first page of each file where
+ *  they apply.
+ *
+ *  IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
+ *  FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ *  ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
+ *  DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
+ *  POSSIBILITY OF SUCH DAMAGE.
+ *
+ *  THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
+ *  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
+ *  IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
+ *  NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
+ *  MODIFICATIONS.
+ *
+ *  GOVERNMENT USE: If you are acquiring this software on behalf of the
+ *  U.S. government, the Government shall have only "Restricted Rights"
+ *  in the software and related documentation as defined in the Federal
+ *  Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
+ *  are acquiring the software on behalf of the Department of Defense, the
+ *  software shall be classified as "Commercial Computer Software" and the
+ *  Government shall have only "Restricted Rights" as defined in Clause
+ *  252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
+ *  authors grant the U.S. Government and others acting in its behalf
+ *  permission to use and distribute the software in accordance with the
+ *  terms specified in this license.
+ *
+ * ======================================================================
+ */
+
+#ifndef RAPPTURE_SIMPLEBUFFER_H
+#define RAPPTURE_SIMPLEBUFFER_H
+
+#include <fstream>
+#include <cstring>
+#include <cstdlib>
+#include <cstdarg>
+
+/* 
+ * Note: I think I would redo this class to deal only with unsigned byte 
+ *	 arrays, instead of arrays of <T>.  I would create other classes
+ *	 that arrays of <T> that used the lower level byte array.
+ *
+ *	 It would make it cleaner if the class only dealt with bytes
+ *	 instead of elements (of various sizes).  
+ *
+ *	 Specific implementations of <T> could perform data alignment on
+ *	 word/double word/quad word boundaries.  This is an optimization
+ *	 that should could done for double arrays.
+ *
+ * Note: The signed int argument on append() should be replaced with a 
+ *	 size_t.  This limits the length of strings to appended.  It 
+ *	 silently truncates bigger sizes to the lower 32-bits.  
+ */
+namespace Rappture {
+
+template <class T>
+class SimpleBuffer {
+public:
+    /**
+     * Construct an empty SimpleBuffer.
+     */
+    SimpleBuffer() {
+	Initialize();
+    }
+    /**
+     * Construct a SimpleBuffer loaded with initial data.
+     *
+     * @param bytes pointer to bytes being stored.
+     * @param nbytes number of bytes being stored.
+     */
+    SimpleBuffer(const T* bytes, int numElems=-1) {
+	Initialize();
+	append(bytes, numElems);
+    }
+    SimpleBuffer(size_t nmemb);
+    
+    /**
+     * Copy constructor
+     * @param SimpleBuffer object to copy
+     */
+    SimpleBuffer(const SimpleBuffer& b);
+    
+    SimpleBuffer<T>& operator=(const SimpleBuffer<T>& b);
+    SimpleBuffer     operator+(const SimpleBuffer& b) const;
+    SimpleBuffer<T>& operator+=(const SimpleBuffer<T>& b);
+    T operator[](size_t offset);
+    
+    /**
+     * Destructor
+     */
+    virtual ~SimpleBuffer() {
+	Release();
+    }
+    
+    /**
+     * Get the bytes currently stored in the buffer.  These bytes can
+     * be stored, and used later to construct another Buffer to
+     * decode the information.
+     *
+     * @return Pointer to the bytes in the buffer.
+     */
+    const T* bytes() const {
+	return _buf;
+    }
+    /**
+     * Get the number of bytes currently stored in the buffer.
+     * @return Number of the bytes used in the buffer.
+     */
+    size_t size() const {
+	return _numElemsUsed * sizeof(T);
+    }
+    /**
+     * Get the number of members currently stored in the buffer.
+     * @return Number of the members used in the buffer.
+     */
+    size_t nmemb() const {
+	return _numElemsUsed;
+    }
+    /**
+     * Get the number of members currently stored in the buffer.
+     * @return Number of the members used in the buffer.
+     */
+    size_t count() const {
+	return _numElemsUsed;
+    }
+    /**
+     * Set the number of members currently stored in the buffer.
+     * @return Number of the members used in the buffer.
+     */
+    size_t count(size_t newCount) {
+	_numElemsUsed = newCount;
+	return _numElemsUsed;
+    }
+    /**
+     * Clear the buffer, making it empty.
+     * @return Reference to this buffer.
+     */
+    SimpleBuffer<T>& clear() {
+	Release();
+	return *this;
+    }
+    size_t extend(size_t extraElems);
+    int append(const T* bytes, int nmemb=-1);
+    int appendf(const char *format, ...);
+    int remove(int nmemb);
+    size_t read(const T* bytes, size_t nmemb);
+    int seek(long offset, int whence);
+    int tell() const;
+    size_t set(size_t nmemb);
+    SimpleBuffer<T>& rewind();
+    SimpleBuffer<T>& show();
+    
+    bool good() const;
+    bool bad() const;
+    bool eof() const;
+    
+    SimpleBuffer<T>& move(SimpleBuffer<T>& b);
+    
+protected:
+    
+    void Initialize();
+    void Release();
+    
+private:
+    
+    /// Pointer to the memory that holds our buffer's data
+    T* _buf;
+    
+    /// Position offset within the buffer's memory
+    size_t _pos;
+    
+    /// Number of members stored in the buffer
+    size_t _numElemsUsed;
+    
+    /// Total number of members available in the buffer
+    size_t _numElemsAllocated;
+    
+    /// State of the last file like operation.
+    bool _fileState;
+    
+    /// Minimum number of members is set to the number you can fit in 256 bytes
+    const static size_t _minNumElems = (256/sizeof(T));
+    
+    size_t __guesslen(const T* bytes);
+    
+};
+    
+typedef SimpleBuffer<char>   SimpleCharBuffer;
+typedef SimpleBuffer<float>  SimpleFloatBuffer;
+typedef SimpleBuffer<double> SimpleDoubleBuffer;
+
+/**
+ * Construct an empty SimpleBuffer of specified size.
+ */
+template<class T>
+SimpleBuffer<T>::SimpleBuffer(size_t numElems)
+{
+    Initialize();
+
+    if (numElems == 0) {
+        // ignore requests for sizes equal to zero
+        return;
+    }
+
+    // buffer sizes less than min_size are set to min_size
+    if (numElems < (size_t) _minNumElems) {
+        numElems = _minNumElems;
+    }
+
+    if (set(numElems) != numElems) {
+        return;
+    }
+}
+
+
+/**
+ * Copy constructor
+ * @param SimpleBuffer object to copy
+ */
+template<class T>
+SimpleBuffer<T>::SimpleBuffer(const SimpleBuffer<T>& b)
+{
+    Initialize();
+    append(b.bytes(), b.nmemb());
+}
+
+
+/**
+ * Assignment operator
+ * @param SimpleBuffer object to copy
+ */
+template<class T>
+SimpleBuffer<T>&
+SimpleBuffer<T>::operator=(const SimpleBuffer<T>& b)
+{
+    Release();
+    append(b.bytes(),b.nmemb());
+    return *this;
+}
+
+
+/**
+ * Operator +
+ * @param SimpleBuffer object to add
+ */
+template<class T>
+SimpleBuffer<T>
+SimpleBuffer<T>::operator+(const SimpleBuffer<T>& b) const
+{
+    SimpleBuffer<T> newBuffer(*this);
+    newBuffer.operator+=(b);
+    return newBuffer;
+}
+
+
+/**
+ * Operator +=
+ * @param SimpleBuffer object to add
+ */
+template<class T>
+SimpleBuffer<T>&
+SimpleBuffer<T>::operator+=(const SimpleBuffer<T>& b)
+{
+    append(b.bytes(),b.nmemb());
+    return *this;
+}
+
+
+/**
+ * Operator []
+ * @param index into the buffer
+ */
+template<class T>
+T
+SimpleBuffer<T>::operator[](size_t index)
+{
+    return (_buf + index);		// Rely on pointer arithmetic
+}
+
+
+
+/**
+ * guess the length of a null terminated character buffer
+ * @param pointer to the buffer to guess the length of
+ * @return a guess of the length of the buffer.
+ */
+template<> inline
+size_t
+SimpleBuffer<char>::__guesslen(const char* bytes)
+{
+    return strlen(bytes);
+}
+
+/* FIXME:	Change the signed int to size_t.  Move the -1 copy string
+ *		up to the SimpleCharBuffer class.   There needs to be both
+ *		a heavy duty class that can take a string bigger than 
+ *		2^31-1 in length, and a convenient class that doesn't make
+ *		you add call strlen(s).
+ *		
+ */
+
+/**
+ * guess the length of a non-null terminated character buffer
+ * @param pointer to the buffer to guess the length of
+ * @return a guess of the length of the buffer.
+ */
+template<class T>
+size_t
+SimpleBuffer<T>::__guesslen(const T* bytes)
+{
+    return (sizeof(T));
+}
+
+/**
+ * Append bytes to the end of this buffer
+ * @param pointer to bytes to be added
+ * @param number of bytes to be added
+ * @return number of bytes appended.
+ */
+template<class T>
+int
+SimpleBuffer<T>::append(const T* bytes, int numElems)
+{
+
+    // User specified NULL buffer to append
+    if (bytes == NULL) {
+        return 0;			// Should not give append a NULL
+					// buffer pointer.
+    }
+
+    // FIXME: i think this needs to be division,
+    // need to create test case with array of ints
+    // i'm not sure we can even guess the number
+    // bytes in *bytes.
+
+    size_t numBytes = 0;
+    if (numElems == -1) {
+	/* This should be moved into the SimpleCharBuffer.  It doesn't make
+	 * sense to look for a NUL byte unless it's a string buffer. We
+	 * can then change numElems to be size_t. */
+        numBytes = __guesslen(bytes);
+        numElems = numBytes / sizeof(T);
+    }
+    if (numElems <= 0) {
+        return numElems;
+    }
+
+    size_t newSize;
+    newSize = _numElemsUsed + numElems;
+    if (newSize > _numElemsAllocated) {
+
+        // buffer sizes less than min_size are set to min_size
+        if (newSize < _minNumElems) {
+            newSize = _minNumElems;
+        }
+
+        /*
+         * Allocate a larger buffer for the string if the current one isn't
+         * large enough. Allocate extra space in the new buffer so that there
+         * will be room to grow before we have to allocate again.
+         */
+        size_t size;
+        size = (_numElemsAllocated > 0) ? _numElemsAllocated : _minNumElems;
+        while (newSize > size) {
+            size += size;
+        }
+
+        /*
+         * reallocate to a larger buffer
+         */
+        if (set(size) != size) {
+            return 0;
+        }
+    }
+    memcpy(_buf + _numElemsUsed, bytes, numElems * sizeof(T));
+    _numElemsUsed += numElems;
+    return numElems;
+}
+
+/**
+ * Append bytes to the end of this buffer
+ * @param pointer to bytes to be added
+ * @param number of bytes to be added
+ * @return number of bytes appended.
+ */
+template<class T>
+size_t
+SimpleBuffer<T>::extend(size_t numExtraElems)
+{
+    size_t newSize;
+
+    newSize = _numElemsUsed + numExtraElems;
+    if (newSize > _numElemsAllocated) {
+
+        /* Enforce a minimum buffer size. */
+        if (newSize < (size_t) _minNumElems) {
+            newSize = (size_t) _minNumElems;
+        }
+
+        size_t size;
+        size = (_numElemsAllocated > 0) ? _numElemsAllocated : _minNumElems;
+
+	/* Keep doubling the size of the buffer until we have enough space to
+	 * hold the extra elements. */
+        while (newSize > size) {
+            size += size;
+        }
+        /* Reallocate to a larger buffer. */
+        if (set(size) != size) {
+            return 0;
+        }
+    }
+    return _numElemsAllocated;
+}
+
+/**
+ * Append formatted bytes to the end of this buffer
+ * @param pointer to bytes to be added
+ * @param number of bytes to be added
+ * @return number of bytes appended.
+ */
+template<class T>
+int
+SimpleBuffer<T>::appendf(const char *format, ...)
+{
+    size_t newMembCnt = 0;
+    size_t nbytes = 0;
+    int nmemb = 0;
+
+    char* dest = NULL;
+    size_t size = 0;
+    size_t bytesAdded = 0;
+    va_list arg;
+
+    // User specified NULL format
+    if (format == NULL) {
+        return 0;
+    }
+
+    // FIXME: i think this needs to be division,
+    // need to create test case with array of ints
+    // i'm not sure we can even guess the number
+    // bytes in *bytes.
+
+
+    // add one for terminating null character
+    nbytes = strlen(format) + 1;
+
+    if (nbytes <= 0) {
+        // no data written, invalid option
+        return nbytes;
+    }
+
+    // FIXME: we need ceil of nbytes/sizeof(T), instead we add 1 for safety
+
+    nmemb = nbytes/sizeof(T);
+    if (nmemb == 0) {
+        nmemb++;
+    }
+
+    newMembCnt = (size_t)(_numElemsUsed + nmemb);
+
+    if (newMembCnt > _numElemsAllocated) {
+
+        // buffer sizes less than min_size are set to min_size
+        if (newMembCnt < (size_t) _minNumElems) {
+            newMembCnt = (size_t) _minNumElems;
+        }
+
+        /*
+         * Allocate a larger buffer for the string if the current one isn't
+         * large enough. Allocate extra space in the new buffer so that there
+         * will be room to grow before we have to allocate again.
+         */
+        size_t membAvl;
+        membAvl = (_numElemsAllocated > 0) ? _numElemsAllocated : _minNumElems;
+        while (newMembCnt > membAvl) {
+            membAvl += membAvl;
+        }
+
+        /*
+         * reallocate to a larger buffer
+         */
+        if (set(membAvl) != membAvl) {
+            return 0;
+        }
+    }
+
+    dest = (char*) (_buf + _numElemsUsed);
+    size = (_numElemsAllocated-_numElemsUsed)*sizeof(T);
+
+    va_start(arg,format);
+    bytesAdded = vsnprintf(dest,size,format,arg);
+    va_end(arg);
+
+    // bytesAdded contains the number of bytes that would have
+    // been placed in the buffer if the call was successful.
+    // this value does not include the trailing null character.
+    // so we add one to account for it.
+
+    bytesAdded++;
+    nmemb = bytesAdded/sizeof(T);
+
+    if (bytesAdded > size) {
+        // we did not fit everything in the original buffer
+        // resize and try again.
+
+        // FIXME: round the new size up to the nearest multiple of 256?
+        set(_numElemsUsed+nmemb);
+
+        // reset dest because it may have moved during reallocation
+        dest = (char*) (_buf + _numElemsUsed);
+        size = bytesAdded;
+
+        va_start(arg,format);
+        bytesAdded = vsnprintf(dest,size,format,arg);
+        va_end(arg);
+
+        if (bytesAdded > size) {
+            // crystals grow, people grow, data doesn't grow...
+            // issue error
+            fprintf(stderr,"error in appendf while appending data");
+        }
+    }
+
+    _numElemsUsed += nmemb;
+
+    // remove the null character added by vsnprintf()
+    // we do this because if we are appending strings,
+    // the embedded null acts as a terminating null char.
+    // this is a generic buffer so if user wants a
+    // terminating null, they should append it.
+    remove(1);
+
+    return nmemb;
+}
+
+/**
+ * Remove bytes from the end of this buffer
+ * @param number of bytes to be removed
+ * @return number of bytes removed.
+ */
+template<class T>
+int
+SimpleBuffer<T>::remove(int nmemb)
+{
+    if ((_numElemsUsed - nmemb) < 0){
+        _numElemsUsed = 0;
+        _pos = 0;
+    } else {
+        _numElemsUsed -= nmemb;
+        if (_pos >= _numElemsUsed) {
+            // move _pos back to the new end of the buffer.
+            _pos = _numElemsUsed-1;
+        }
+    }
+
+
+    return nmemb;
+}
+
+template<class T>
+size_t
+SimpleBuffer<T>::set(size_t nmemb)
+{
+    T *buf;
+    size_t nbytes = nmemb*sizeof(T);
+
+    if (_buf == NULL) {
+        buf = (T*) malloc(nbytes);
+    } else {
+        buf = (T*) realloc((void*) _buf, nbytes);
+    }
+
+    if (buf == NULL) {
+        fprintf(stderr,"Can't allocate %lu bytes of memory\n", 
+            (long unsigned int)nbytes);
+        _fileState = false;
+        return 0;
+    }
+    _buf = buf;
+    _numElemsAllocated = nmemb;
+    return _numElemsAllocated;
+}
+
+template<> inline
+SimpleBuffer<char>&
+SimpleBuffer<char>::show()
+{
+    size_t curMemb = 0;
+
+    while (curMemb != _numElemsUsed) {
+        fprintf(stdout,"_buf[%lu] = :%c:\n", (long unsigned int)curMemb,
+                _buf[curMemb]);
+        curMemb += 1;
+    }
+    fprintf(stdout,"_numElemsAllocated = :%lu:\n", 
+	    (long unsigned int)_numElemsAllocated);
+
+    return *this;
+}
+
+
+template<class T>
+SimpleBuffer<T>&
+SimpleBuffer<T>::show()
+{
+    size_t curMemb = 0;
+
+    while (curMemb != _numElemsUsed) {
+        fprintf(stdout,"_buf[%lu] = :%#lx:\n", (long unsigned int)curMemb,
+                (unsigned long)_buf[curMemb]);
+        curMemb += 1;
+    }
+    fprintf(stdout,"_numElemsAllocated = :%lu:\n", (long unsigned int)_numElemsAllocated);
+
+    return *this;
+}
+
+
+/**
+ * Read data from the buffer into a memory location provided by caller
+ * @param Pointer locating where to place read bytes.
+ * @param Size of the memory location.
+ * @return Number of bytes written to memory location
+ */
+template<class T>
+size_t
+SimpleBuffer<T>::read(const T* bytes, size_t nmemb)
+{
+    size_t nMembRead = 0;
+
+    void* dest = NULL;
+    void const* src  = NULL;
+    size_t size = 0;
+
+    // SimpleBuffer is empty.
+    if (_buf == NULL) {
+        return 0;
+    }
+
+    // User specified NULL buffer.
+    if (bytes == NULL) {
+        return 0;
+    }
+
+    // make sure we don't read off the end of our buffer
+    if ( (_pos + nmemb) > _numElemsUsed ) {
+        nMembRead = _numElemsUsed - _pos;
+    }
+    else {
+        nMembRead = nmemb;
+    }
+
+    if (nMembRead <= 0) {
+        return 0;
+    }
+
+    dest = (void*) bytes;
+    src  = (void const*) (_buf + _pos);
+    size = nMembRead*sizeof(T);
+    memcpy(dest,src,size);
+
+    _pos = (_pos + nMembRead);
+
+    return nMembRead;
+}
+
+
+/**
+ * Set buffer position indicator to spot within the buffer
+ * @param Offset from whence location in buffer.
+ * @param Place from where offset is added or subtracted.
+ * @return 0 on success, anything else is failure
+ */
+template<class T>
+int
+SimpleBuffer<T>::seek(long offset, int whence)
+{
+    int retVal = 0;
+
+    if (_buf == NULL) {
+        return -1 ;
+    }
+
+    if (whence == SEEK_SET) {
+        if (offset < 0) {
+            /* dont go off the beginning of data */
+            _pos = 0;
+        }
+        else if (offset >= (long)_numElemsUsed) {
+            /* dont go off the end of data */
+            _pos = _numElemsUsed - 1;
+        }
+        else {
+            _pos = (size_t)(offset);
+        }
+    }
+    else if (whence == SEEK_CUR) {
+        if ( (_pos + offset) < 0) {
+            /* dont go off the beginning of data */
+            _pos = 0;
+        }
+        else if ((_pos + offset) >= _numElemsUsed) {
+            /* dont go off the end of data */
+            _pos = _numElemsUsed - 1;
+        }
+        else {
+            _pos = (size_t)(_pos + offset);
+        }
+    }
+    else if (whence == SEEK_END) {
+        if (offset <= (long)(-1*_numElemsUsed)) {
+            /* dont go off the beginning of data */
+            _pos = 0;
+        }
+        else if (offset >= 0) {
+            /* dont go off the end of data */
+            _pos = _numElemsUsed - 1;
+        }
+        else {
+            _pos = (size_t)((_numElemsUsed - 1) + offset);
+        }
+    }
+    else {
+        retVal = -1;
+    }
+
+    return retVal;
+}
+
+
+/**
+ * Tell caller the offset of the position indicator from the start of buffer
+ * @return Number of bytes the position indicator is from start of buffer
+ */
+template<class T>
+int
+SimpleBuffer<T>::tell() const
+{
+   return (int)_pos;
+}
+
+
+/**
+ * Move the internal position tracker to the beginning of the buffer.
+ */
+template<class T>
+SimpleBuffer<T>&
+SimpleBuffer<T>::rewind()
+{
+    _pos = 0;
+    return *this;
+}
+
+
+/**
+ * Tell if the last file like operation (ie. read()) was successful
+ * or if there was a failure like eof, or bad memory
+ * @return True or false boolean value
+ */
+template<class T>
+bool
+SimpleBuffer<T>::good() const
+{
+    return (_fileState);
+}
+
+
+/**
+ * Tell if the last file like operation (ie. read()) failed
+ * Opposite of good()
+ * @return True or false boolean value
+ */
+template<class T>
+bool
+SimpleBuffer<T>::bad() const
+{
+    return (!_fileState);
+}
+
+
+/**
+ * Tell if the position flag is at the end of the buffer
+ * @return True or false boolean value
+ */
+template<class T>
+bool
+SimpleBuffer<T>::eof() const
+{
+    return (_pos >= _numElemsUsed);
+}
+
+
+/**
+ * Move the data from this SimpleBuffer to the SimpleBuffer provided by
+ * the caller. All data except the _pos is moved and this SimpleBuffer is
+ * re-initialized with Initialize().
+ * @param SimpleBuffer to move the information to
+ * @return reference to this SimpleBuffer object.
+ */
+template<class T>
+SimpleBuffer<T>&
+SimpleBuffer<T>::move(SimpleBuffer<T>& b)
+{
+    Release();
+
+    _buf = b._buf;
+    _pos = b._pos;
+    _fileState = b._fileState;
+    _numElemsUsed = b._numElemsUsed;
+    _numElemsAllocated = b._numElemsAllocated;
+
+    b.Initialize();
+
+    return *this;
+}
+
+
+ /**
+  *  Initializes a dynamic buffer, discarding any previous contents
+  *  of the buffer. Release() should have been called already
+  *  if the dynamic buffer was previously in use.
+  */
+template<class T>
+void
+SimpleBuffer<T>::Initialize()
+{
+    _buf = NULL;
+    _pos = 0;
+    _fileState = true;
+    _numElemsUsed = 0;
+    _numElemsAllocated = 0;
+}
+
+
+/**
+ *  Frees up any memory allocated for the dynamic buffer and
+ *  reinitializes the buffer to an empty state.
+ */
+template<class T>
+void
+SimpleBuffer<T>::Release()
+{
+    if (_buf != NULL) {
+        free(_buf);
+        _buf = NULL;
+    }
+    Initialize();
+}
+
+} // namespace Rappture
+
+#endif // RAPPTURE_SIMPLEBUFFER_H
Index: /tags/1.6.0/src/core/RpUnits.cc
===================================================================
--- /tags/1.6.0/src/core/RpUnits.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpUnits.cc	(revision 6168)
@@ -0,0 +1,3289 @@
+/*
+ * ----------------------------------------------------------------------
+ *  RpUnits.cc
+ *
+ *   Data Members and member functions for the RpUnits class
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpUnits.h"
+#include <cstdio>
+#include <algorithm>
+
+// dict pointer
+// set the dictionary to be case insensitive for seaches and storage
+RpDict<std::string,RpUnits*,RpUnits::_key_compare>* RpUnits::dict =
+    new RpDict<std::string,RpUnits*,RpUnits::_key_compare>(
+        RPUNITS_CASE_INSENSITIVE);
+
+// install predefined units
+static RpUnitsPreset loader;
+
+/**********************************************************************/
+// METHOD: define()
+/// Define a unit type to be stored as a Rappture Unit.
+/**
+ */
+
+RpUnits *
+RpUnits::define(    const std::string units,
+                    const RpUnits* basis,
+                    const std::string type,
+                    bool metric,
+                    bool caseInsensitive    ) {
+
+    RpUnits* newRpUnit = NULL;
+
+    std::string searchStr = units;
+    std::string sendStr = "";
+    int len = searchStr.length();
+    int idx = len-1;
+    double exponent = 1;
+
+    RpUnitsTypes::RpUnitsTypesHint hint = NULL;
+
+    if (units.empty()) {
+        // raise error, user sent null units!
+        return NULL;
+    }
+
+    // check to see if the user is trying to trick me!
+    if ( (basis) && (units == basis->getUnits()) ) {
+        // dont trick me!
+        return NULL;
+    }
+
+    // check to see if the said unit can already be found in the dictionary
+    hint = RpUnitsTypes::getTypeHint(type);
+    if (RpUnits::find(units,hint)) {
+        return NULL;
+    }
+
+    //default exponent
+    exponent = 1;
+
+    // check to see if there is an exponent at the end
+    // of the search string
+    idx = RpUnits::grabExponent(searchStr, &exponent);
+    searchStr.erase(idx);
+
+    // move idx pointer back to where last character was found
+    idx--;
+
+    if ( searchStr[0] == '/') {
+        // need to negate all of the previous exponents
+        exponent = -1*exponent;
+        sendStr = searchStr.c_str()+1;
+    }
+    else {
+        // sendStr = searchStr.substr(idx+1,);
+        // we have a unit string to parse
+        sendStr = searchStr;
+    }
+
+    newRpUnit = new RpUnits(    sendStr,
+                                exponent,
+                                basis,
+                                type,
+                                metric,
+                                caseInsensitive );
+    if (newRpUnit) {
+        insert(newRpUnit->getUnitsName(),newRpUnit);
+    }
+
+    // return a copy of the new object to user
+    return newRpUnit;
+}
+
+/**********************************************************************/
+// METHOD: incarnate()
+/// Link two RpUnits where the entity is an incarnate of the abstraction
+/**
+ */
+
+int
+RpUnits::incarnate(const RpUnits* abstraction, const RpUnits* entity) {
+
+    int retVal = 1;
+
+    abstraction->connectIncarnation(entity);
+    entity->connectIncarnation(abstraction);
+
+    retVal = 0;
+    return retVal;
+}
+
+/**********************************************************************/
+// METHOD: grabExponent()
+/// Return exponent from a units string containing a unit name and exponent
+/**
+ */
+
+int
+RpUnits::grabExponent(const std::string& inStr, double* exp) {
+
+    int len = inStr.length();
+    int idx = len - 1;
+
+    *exp = 1;
+
+    while (isdigit(inStr[idx])) {
+        idx--;
+    }
+
+    if ( (inStr[idx] == '+') || (inStr[idx] == '-') ) {
+        idx--;
+    }
+
+    idx++;
+
+    if (idx != len) {
+        // process the exponent.
+        *exp = strtod(inStr.c_str()+idx,NULL);
+    }
+
+    return idx;
+}
+
+/**********************************************************************/
+// METHOD: grabUnitString()
+/// Return units name from a units string containing a unit name and exponent
+/**
+ * this function will be the cause of problems related to adding symbols like %
+ */
+
+int
+RpUnits::grabUnitString ( const std::string& inStr ) {
+
+    int idx = inStr.length() - 1;
+
+    while ((idx >= 0) && isalpha(inStr[idx])) {
+        idx--;
+    }
+
+    // move the index forward one position to
+    // represent the start of the unit string
+    idx++;
+
+    return idx;
+}
+
+/**********************************************************************/
+// METHOD: grabUnits()
+/// Search for the provided units exponent pair in the dictionary.
+/**
+ */
+
+int
+RpUnits::grabUnits (    std::string inStr,
+                        int* offset,
+                        const RpUnits** unit,
+                        const RpUnits** prefix   ) {
+
+    int len = inStr.length();
+    std::string preStr = "";
+
+    if ( (unit == NULL) || (prefix == NULL) ) {
+        // incorrect function call, return error
+        return -1;
+    }
+
+    *unit = NULL;
+    *prefix = NULL;
+
+    while ( ! inStr.empty() ) {
+        *unit = RpUnits::find(inStr,&RpUnitsTypes::hintTypeNonPrefix);
+        if (*unit) {
+            *offset = len - inStr.length();
+
+            if ((*unit)->metric) {
+                RpUnits::checkMetricPrefix(preStr,offset,prefix);
+            }
+
+            break;
+        }
+        preStr = preStr + inStr.substr(0,1);
+        inStr.erase(0,1);
+    }
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: checkMetrixPrefix()
+/// Compare a string with available metric prefixes
+/**
+ * The metric prefix only has one or two letters before the main unit.
+ * We take in the string of characters before the found unit and search
+ * for the two characters closest to the found unit. If those two
+ * characters are not found in the dictionary as a prefix, then we erase
+ * the 0th character, and search for the 1th character. The 1th character
+ * is the character closest to the found unit. If it is found as a prefix
+ * in the dictionary, it is returned. If no prefix is found, NULL is
+ * returned.
+ */
+
+int
+RpUnits::checkMetricPrefix  (   std::string inStr,
+                                int* offset,
+                                const RpUnits** prefix   ) {
+
+    int inStrLen = 0;
+    std::string searchStr = "";
+
+    inStrLen = inStr.length();
+
+    if (inStrLen == 0) {
+        // no prefix to search for, exit
+        return 0;
+    }
+
+    if (prefix == NULL) {
+        // incorrect function call, return error
+        return -1;
+    }
+
+
+    if (inStrLen > 2) {
+        searchStr = inStr.substr( inStrLen-2 );
+    }
+    else {
+        searchStr = inStr;
+    }
+
+    *prefix = NULL;
+
+    *prefix = RpUnits::find(searchStr,&RpUnitsTypes::hintTypePrefix);
+    if ( (*prefix) == NULL ) {
+        // the two letter prefix was not found,
+        // try the one letter prefix
+        searchStr.erase(0,1);
+        *prefix = RpUnits::find(searchStr,&RpUnitsTypes::hintTypePrefix);
+    }
+
+    if (*prefix != NULL) {
+        // if a prefix was found, adjust the offset to reflect
+        // the need to erase the prefix as well as the unit name
+        *offset = *offset - searchStr.length();
+    }
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: getType()
+/// Return the type of an RpUnits object.
+/**
+ */
+std::string
+RpUnits::getType() const {
+    return this->type;
+}
+
+/**********************************************************************/
+// METHOD: getCI()
+/// Return the case insensitivity of an RpUnits object.
+/**
+ */
+bool
+RpUnits::getCI() const {
+    return this->ci;
+}
+
+/**********************************************************************/
+// METHOD: getCompatible()
+/// Return a list of units compatible with this RpUnits object.
+/**
+ */
+std::list<std::string>
+RpUnits::getCompatible(double expMultiplier) const {
+
+    std::list<std::string> compatList;
+    std::list<std::string> basisCompatList;
+    std::list<std::string> incarnationCompatList;
+    std::stringstream myName;
+    std::stringstream otherName;
+    std::string otherBasisName  = "";
+    std::string blank           = "";
+    double otherExp             = 1.0;
+    double myExp                = 1.0;
+    double incExp               = 1.0;
+    convEntry* myConversions    = this->convList;
+    incarnationEntry* myIncarnations = this->incarnationList;
+    const RpUnits * basis       = NULL;
+
+    myName.str("");
+    myName << getUnits();
+    myExp = getExponent() * expMultiplier;
+
+    if (this->basis) {
+        basisCompatList = this->basis->getCompatible(expMultiplier);
+        compatList.merge(basisCompatList);
+    }
+    else {
+        // only basis units should be in here
+        //
+        // run through the conversion list
+        // for each entry, look at the name
+        // if the name is not equal to the name of this RpUnits object,
+        // store the fromPtr->getUnitsName() into compatList
+        // else store the toPtr->getUnitsName() into compatList
+        //
+        while (myConversions != NULL) {
+
+            otherName.str("");
+            // otherName << myConversions->conv->toPtr->getUnitsName();
+            otherName << myConversions->conv->toPtr->getUnits();
+            otherExp = myConversions->conv->toPtr->getExponent();
+            basis = myConversions->conv->toPtr->basis;
+
+            if (myName.str() == otherName.str()) {
+                otherName.str("");
+                // otherName << myConversions->conv->fromPtr->getUnitsName();
+                otherName << myConversions->conv->fromPtr->getUnits();
+                otherExp = myConversions->conv->fromPtr->getExponent();
+                basis = myConversions->conv->fromPtr->basis;
+            }
+
+            // check to see if they are the same basis,
+            // no need to list all of the metric conversions.
+            if (basis) {
+                if (basis->getUnitsName() == myName.str()) {
+                    // do not add this unit to the conversion
+                    // because its a derived unit.
+                    myConversions = myConversions->next;
+                    continue;
+                }
+            }
+
+            // adjust the exponent as requested by fxn caller
+            otherExp = otherExp * expMultiplier;
+
+            // adjust the other units name to match exponent
+            if ( (otherExp > 0) && (otherExp != 1) ) {
+                otherName << otherExp;
+            }
+            else if (otherExp < 0) {
+                otherName.str("/"+otherName.str());
+                if (otherExp < -1) {
+                    otherName.seekp(0,std::ios_base::end);
+                    otherName << otherExp*-1;
+                }
+            }
+
+            // add the other unit's name to the list of compatible units
+            compatList.push_back(otherName.str());
+            // compatList.push_back(otherName);
+
+            // advance to the next conversion
+            myConversions = myConversions->next;
+        }
+
+        // now go throught the incarnation list to see if there are other
+        // compatible units listed there.
+        while (myIncarnations != NULL) {
+            incExp = myIncarnations->unit->getExponent();
+            if (incExp == myExp) {
+                incarnationCompatList = myIncarnations->unit->getCompatible();
+                compatList.merge(incarnationCompatList);
+                break;
+            }
+            else if ((-1.0*incExp) == myExp) {
+                incarnationCompatList = myIncarnations->unit->getCompatible(-1);
+                compatList.merge(incarnationCompatList);
+                break;
+            }
+            else if (   (myExp == int(myExp))   &&
+                        (incExp == int(incExp)) &&
+                        ( (int(myExp)%int(incExp)) == 0) &&
+                        ( (myExp/incExp) != 1)  &&
+                        ( (myExp/incExp) != -1) &&
+                        ( myExp != 1 )          &&
+                        ( myExp != -1 )         &&
+                        ( incExp != 1 )         &&
+                        ( incExp != -1 )        ) {
+                incarnationCompatList = myIncarnations->unit->getCompatible(myExp/incExp);
+                compatList.merge(incarnationCompatList);
+                break;
+            }
+            else {
+                // do nothing
+            }
+            myIncarnations = myIncarnations->next;
+        }
+    }
+
+    // adjust the exponent as requested by fxn caller
+    // myExp = myExp * expMultiplier;
+
+    // adjust the other units name to match exponent
+    if ( (expMultiplier > 0) && (expMultiplier != 1) ) {
+        // myName << expMultiplier;
+        myName << myExp;
+    }
+    else if (expMultiplier < 0) {
+        myName.str("/"+myName.str());
+        if (myExp < -1) {
+            myName.seekp(0,std::ios_base::end);
+            myName << myExp*-1;
+        }
+    }
+
+    compatList.push_back(myName.str());
+    compatList.sort();
+    compatList.unique();
+    return compatList;
+
+}
+
+
+
+
+/**********************************************************************/
+// METHOD: define()
+/// Define a unit conversion with one arg double function pointers.
+/**
+ */
+
+RpUnits *
+RpUnits::define(  const RpUnits* from,
+                  const RpUnits* to,
+                  double (*convForwFxnPtr)(double),
+                  double (*convBackFxnPtr)(double)  ) {
+
+    // this is kinda the wrong way to get the job done...
+    // how do we only create 1 conversion object and share it between atleast two RpUnits
+    // objs so that when the RpUnits objs are deleted, we are not trying to delete already
+    // deleted memory.
+    // so for the sake of safety we get the following few lines of code.
+
+    conversion* conv1 = NULL;
+    conversion* conv2 = NULL;
+
+    if (from && to) {
+
+        conv1 = new conversion (from,to,convForwFxnPtr,convBackFxnPtr);
+        conv2 = new conversion (from,to,convForwFxnPtr,convBackFxnPtr);
+
+        from->connectConversion(conv1);
+        to->connectConversion(conv2);
+    }
+
+    return NULL;
+}
+
+/**********************************************************************/
+// METHOD: define()
+/// Define a unit conversion with two arg double function pointers.
+/**
+ */
+
+RpUnits *
+RpUnits::define(  const RpUnits* from,
+                  const RpUnits* to,
+                  double (*convForwFxnPtr)(double,double),
+                  double (*convBackFxnPtr)(double,double)) {
+
+    // this is kinda the wrong way to get the job done...
+    // how do we only create 1 conversion object and share it between
+    // atleast two RpUnits objs so that when the RpUnits objs are
+    // deleted, we are not trying to delete already deleted memory.
+    // so for the sake of safety we get the following few lines of code.
+
+    conversion* conv1 = NULL;
+    conversion* conv2 = NULL;
+
+    if (from && to) {
+        conv1 = new conversion (from,to,convForwFxnPtr,convBackFxnPtr);
+        conv2 = new conversion (from,to,convForwFxnPtr,convBackFxnPtr);
+
+        from->connectConversion(conv1);
+        to->connectConversion(conv2);
+    }
+
+    return NULL;
+}
+
+/**********************************************************************/
+// METHOD: define()
+/// Define a unit conversion with two arg void* function pointers.
+/**
+ */
+
+RpUnits *
+RpUnits::define(  const RpUnits* from,
+                  const RpUnits* to,
+                  void* (*convForwFxnPtr)(void*, void*),
+                  void* convForwData,
+                  void* (*convBackFxnPtr)(void*, void*),
+                  void* convBackData) {
+
+    // this is kinda the wrong way to get the job done...
+    // how do we only create 1 conversion object and share it between at
+    // least two RpUnits objs so that when the RpUnits objs are deleted,
+    // we are not trying to delete already deleted memory.
+    // so for the sake of safety we get the following few lines of code.
+
+    conversion* conv1 = NULL;
+    conversion* conv2 = NULL;
+
+    if (from && to) {
+        conv1 = new conversion ( from, to, convForwFxnPtr,convForwData,
+                                 convBackFxnPtr,convBackData);
+        conv2 = new conversion ( from,to,convForwFxnPtr,convForwData,
+                                 convBackFxnPtr,convBackData);
+
+        from->connectConversion(conv1);
+        to->connectConversion(conv2);
+    }
+
+    return NULL;
+}
+
+
+/**********************************************************************/
+// METHOD: getUnits()
+/// Report the text portion of the units of this object back to caller.
+/**
+ * \sa {getUnitsName}
+ */
+
+std::string
+RpUnits::getUnits() const {
+
+    return units;
+}
+
+/**********************************************************************/
+// METHOD: getUnitsName()
+/// Report the full name of the units of this object back to caller.
+/**
+ * Reports the full text and exponent of the units represented by this
+ * object, back to the caller. Note that if the exponent == 1, no
+ * exponent will be printed.
+ */
+
+std::string
+RpUnits::getUnitsName(int flags) const {
+
+    std::stringstream unitText;
+    double exponent;
+
+    exponent = getExponent();
+
+    if ( (RPUNITS_ORIG_EXP & flags) == RPUNITS_POS_EXP)  {
+        if (exponent < 0) {
+            exponent = exponent * -1;
+        }
+    }
+    else if ( (RPUNITS_ORIG_EXP & flags) == RPUNITS_NEG_EXP)  {
+        if (exponent > 0) {
+            exponent = exponent * -1;
+        }
+    }
+
+    if (exponent == 1) {
+        unitText << units;
+    }
+    else {
+        unitText << units << exponent;
+    }
+
+    return (std::string(unitText.str()));
+}
+
+/**********************************************************************/
+// METHOD: getSearchName()
+/// Report the units name used when searching through the units dictionary.
+/**
+ * Reports the search name used to store and retrieve this object from
+ * the units dictionary.
+ */
+
+std::string
+RpUnits::getSearchName() const {
+
+    std::string searchName = getUnitsName();
+
+    std::transform( searchName.begin(),
+                    searchName.end(),
+                    searchName.begin(),
+                    tolower );
+
+    return (searchName);
+}
+
+/**********************************************************************/
+// METHOD: getExponent()
+/// Report the exponent of the units of this object back to caller.
+/**
+ * Reports the exponent of the units represented by this
+ * object, back to the caller. Note that if the exponent == 1, no
+ * exponent will be printed.
+ */
+
+double
+RpUnits::getExponent() const {
+
+    return exponent;
+}
+
+/**********************************************************************/
+// METHOD: getBasis()
+/// Retrieve the RpUnits object representing the basis of this object.
+/**
+ * Returns a pointer to a RpUnits object which, on success, points to the
+ * RpUnits object that is the basis of the calling object.
+ */
+
+const RpUnits *
+RpUnits::getBasis() const {
+
+    return basis;
+}
+
+/**********************************************************************/
+// METHOD: setMetric()
+/// Set the metric flag of the object.
+/**
+ * Set the metric flag of the object
+ */
+
+RpUnits&
+RpUnits::setMetric(bool newVal) {
+
+    metric = newVal;
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: makeBasis()
+/// Convert a value into its RpUnits's basis.
+/**
+ *  convert the current unit to its basis units
+ *
+ *  Return Codes
+ *      0) no error (could also mean or no prefix was found)
+ *          in some cases, this means the value is in its basis format
+ *      1) the prefix found does not have a built in factor associated.
+ *
+ */
+
+double
+RpUnits::makeBasis(double value, int* result) const {
+
+    double retVal = value;
+
+    if (result) {
+        *result = 0;
+    }
+
+    if (basis == NULL) {
+        // this unit is a basis
+        // do nothing
+    }
+    else {
+        retVal = convert(basis,value,result);
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// METHOD: makeBasis()
+/// Convert a value into its RpUnits's basis.
+/**
+ *
+ */
+
+const RpUnits&
+RpUnits::makeBasis(double* value, int* result) const {
+    double retVal = *value;
+    int convResult = 1;
+
+    if (basis == NULL) {
+        // this unit is a basis
+        // do nothing
+    }
+    else {
+        retVal = convert(basis,retVal,&convResult);
+    }
+
+    if ( (convResult == 0) ) {
+        *value = retVal;
+    }
+
+    if (result) {
+        *result = convResult;
+    }
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: makeMetric()
+/// Define a unit type to be stored as a Rappture Unit.
+/**
+ *  static int makeMetric(RpUnits * basis);
+ *  create the metric attachments for the given basis.
+ *  should only be used if this unit is of metric type
+ */
+
+/*
+int
+RpUnits::makeMetric(RpUnits* basis) {
+
+    if (!basis) {
+        return 0;
+    }
+
+    basis->setMetric(true);
+
+    return 0;
+}
+*/
+
+/**********************************************************************/
+// METHOD: find()
+/// Find a simple RpUnits Object from the provided string.
+/**
+ */
+
+const RpUnits*
+RpUnits::find(std::string key,
+        RpDict<std::string,RpUnits*,_key_compare>::RpDictHint hint ) {
+
+    RpDictEntry<std::string,RpUnits*,_key_compare>*
+        unitEntry = &(dict->getNullEntry());
+    RpDictEntry<std::string,RpUnits*,_key_compare>*
+        nullEntry = &(dict->getNullEntry());
+    double exponent = 1;
+    int idx = 0;
+    std::stringstream tmpKey;
+
+    if (key[0] == '/') {
+        // check to see if there is an exponent at the end
+        // of the search string
+        idx = RpUnits::grabExponent(key, &exponent);
+        tmpKey << key.substr(1,idx-1) << (-1*exponent);
+        key = tmpKey.str();
+    }
+
+    if (unitEntry == nullEntry) {
+        // pass 1 - look for the unit name as it was stated by the user
+        // dict->toggleCI();
+        unitEntry = &(dict->find(key,hint,!RPUNITS_CASE_INSENSITIVE));
+        // dict->toggleCI();
+    }
+
+    if (unitEntry == nullEntry) {
+        // pass 2 - use case insensitivity to look for the unit
+        unitEntry = &(dict->find(key,hint,RPUNITS_CASE_INSENSITIVE));
+    }
+
+    if ( (!unitEntry->isValid()) || (unitEntry == nullEntry) ) {
+        // unitEntry = NULL;
+        return NULL;
+    }
+
+    return *(unitEntry->getValue());
+}
+
+/**********************************************************************/
+// METHOD: validate()
+/// Split a string of units and check that each unit is available as an object
+/**
+ * Splits a string of units like cm2/kVns into a list of units like
+ * cm2, kV1, ns1 where an exponent is provided for each list entry.
+ * It checks to see that each unit actually exists as a valid defined unit.
+ * If the unit exists or can be interpreted, the function keeps parsing the
+ * string until it reaches the end of the string. If the function comes
+ * across a unit that is unrecognized or can not be interpreted, then it
+ * returns error (a non-zero value).
+ *
+ * if &compatList == NULL, no compatible list of units will be generated.
+ * this function does not do a good job of placing the available units
+ * back into the original formula. i still need to work on this.
+ */
+
+int
+RpUnits::validate ( std::string& inUnits,
+                    std::string& type,
+                    std::list<std::string>* compatList ) {
+
+    std::string sendUnitStr = "";
+    double exponent         = 1;
+    int err                 = 0;
+    const RpUnits* unit     = NULL;
+    std::list<std::string> basisCompatList;
+    std::list<std::string>::iterator compatListIter;
+    std::stringstream unitWExp;
+    RpUnitsList inUnitsList;
+    RpUnitsListIter inIter;
+
+    // err tells us if we encountered any unrecognized units
+    err = RpUnits::units2list(inUnits,inUnitsList,type);
+    RpUnits::list2units(inUnitsList,inUnits);
+    inIter = inUnitsList.begin();
+
+    while ( inIter != inUnitsList.end() ) {
+
+        unit = inIter->getUnitsObj();
+        exponent = inIter->getExponent();
+
+        // merge the compatible units
+        if (compatList) {
+
+            basisCompatList = unit->getCompatible(exponent);
+            compatList->merge(basisCompatList);
+        }
+
+        inIter++;
+    }
+
+    // clean out any duplicate entries.
+    if (compatList) {
+        compatList->unique();
+    }
+
+    return err;
+}
+
+
+/**********************************************************************/
+// METHOD: negateListExponents()
+/// Negate the exponents on every element in unitsList
+/**
+ */
+
+int
+RpUnits::negateListExponents(RpUnitsList& unitsList) {
+    RpUnitsListIter iter = unitsList.begin();
+    int nodeCnt = unitsList.size();
+
+    if (nodeCnt > 0) {
+        for (; iter != unitsList.end(); iter++) {
+            iter->negateExponent();
+            nodeCnt--;
+        }
+    }
+
+    return nodeCnt;
+}
+
+/**********************************************************************/
+// METHOD: negateExponent()
+/// Negate the exponent on the current RpUnitsListEntry
+/**
+ */
+
+void
+RpUnitsListEntry::negateExponent() const {
+    exponent = exponent * -1;
+    return;
+}
+
+/**********************************************************************/
+// METHOD: name()
+/// Provide the caller with the name of this object
+/**
+ */
+
+std::string
+RpUnitsListEntry::name(int flags) const {
+    std::stringstream name;
+    double myExp = exponent;
+
+    if ( (RPUNITS_ORIG_EXP & flags) == RPUNITS_POS_EXP)  {
+        if (myExp < 0) {
+            myExp = myExp * -1;
+        }
+    }
+    else if ( (RPUNITS_ORIG_EXP & flags) == RPUNITS_NEG_EXP)  {
+        if (myExp > 0) {
+            myExp = myExp * -1;
+        }
+    }
+
+    if (prefix != NULL) {
+        name << prefix->getUnits();
+    }
+
+    name << unit->getUnits();
+
+    if ((RPUNITS_ORIG_EXP & flags) == RPUNITS_STRICT_NAME) {
+        // if the user asks for strict naming,
+        // always place the exponent on the name
+        name << myExp;
+    }
+    else if (myExp != 1.0) {
+        // if the user does not ask for strict naming,
+        // check to see if the exponent == 1.
+        // If not, then add exponent to name
+        name << myExp;
+    }
+
+    return std::string(name.str());
+}
+
+/**********************************************************************/
+// METHOD: getBasis()
+/// Provide the caller with the basis of the RpUnits object being stored
+/**
+ */
+
+const RpUnits*
+RpUnitsListEntry::getBasis() const {
+    return unit->getBasis();
+}
+
+/**********************************************************************/
+// METHOD: getUnitsObj()
+/// Return the RpUnits Object from a RpUnitsListEntry.
+/**
+ */
+
+const RpUnits*
+RpUnitsListEntry::getUnitsObj() const {
+    return unit;
+}
+
+/**********************************************************************/
+// METHOD: getExponent()
+/// Return the exponent of an RpUnitsListEntry.
+/**
+ */
+
+double
+RpUnitsListEntry::getExponent() const {
+    return exponent;
+}
+
+/**********************************************************************/
+// METHOD: getPrefix()
+/// Return the prefix of an RpUnitsListEntry.
+/**
+ */
+
+const RpUnits*
+RpUnitsListEntry::getPrefix() const {
+    return prefix;
+}
+
+/**********************************************************************/
+// METHOD: printList()
+/// Traverse a RpUnitsList and print out the name of each element.
+/**
+ */
+
+int
+RpUnits::printList(RpUnitsList& unitsList) {
+    RpUnitsListIter iter = unitsList.begin();
+    int nodeCnt = unitsList.size();
+
+    if (nodeCnt > 0) {
+        for (; iter != unitsList.end(); iter++) {
+            std::cout << iter->name() << " ";
+            nodeCnt--;
+        }
+        std::cout << std::endl;
+    }
+
+    return nodeCnt;
+}
+
+/**********************************************************************/
+// METHOD: units2list()
+/// Split a string of units into a list of units with exponents and prefixes.
+/**
+ * Splits a string of units like cm2/kVns into a list of units like
+ * cm2, kV-1, ns-1 where an exponent is provided for each list entry.
+ * List entries are found by comparing units strings to the names
+ * in the dictionary.
+ */
+
+int
+RpUnits::units2list ( const std::string& inUnits,
+                      RpUnitsList& outList,
+                      std::string& type ) {
+
+    std::string myInUnits   = inUnits;
+    std::stringstream sendUnitStr;
+    double exponent         = 1;
+    int offset              = 0;
+    int idx                 = 0;
+    int last                = 0;
+    int err                 = 0;
+    const RpUnits* unit     = NULL;
+    const RpUnits* prefix   = NULL;
+
+    while ( !myInUnits.empty() ) {
+
+        // check to see if we came across a '/' character
+        last = myInUnits.length()-1;
+        if (myInUnits[last] == '/') {
+            type = myInUnits[last] + type;
+            myInUnits.erase(last);
+            // multiply previous exponents by -1
+            if ( ! outList.empty() ) {
+                RpUnits::negateListExponents(outList);
+            }
+            continue;
+        }
+
+        // check to see if we came across a '*' character
+        if (myInUnits[last] == '*') {
+            // type = myInUnits[last] + type;
+            // ignore * because we assume everything is multiplied together
+            myInUnits.erase(last);
+            continue;
+        }
+
+        // ignore whitespace characters
+        if (isspace(myInUnits[last])) {
+            // ignore whitespace characters, they represent multiplication
+            myInUnits.erase(last);
+            continue;
+        }
+
+        // get the exponent
+        offset = RpUnits::grabExponent(myInUnits,&exponent);
+        myInUnits.erase(offset);
+        idx = offset - 1;
+        last = myInUnits.length()-1;
+        if (last == -1) {
+            // the string is empty, units were not correctly entered
+            err = 1;
+            break;
+        }
+
+        // grab the largest string we can find
+        offset = RpUnits::grabUnitString(myInUnits);
+
+        // if offset > length, then the grabUnitString went through the whole
+        // string and did not find a good string we could use as units.
+        // this generally means the string was filled with non alphabetical
+        // symbols like *&^%$#@!)(~`{}[]:;"'?/><,.-_=+\ or |
+
+        if (offset > last) {
+            err = 1;
+            // erase the last offending character
+            myInUnits.erase(last);
+            // reset our vars and try again
+            idx = 0;
+            offset = 0;
+            exponent = 1;
+            continue;
+        }
+        else {
+            idx = offset;
+        }
+
+        // figure out if we have some defined units in that string
+        sendUnitStr.str(myInUnits.substr(offset,std::string::npos));
+        grabUnits(sendUnitStr.str(),&offset,&unit,&prefix);
+        if (unit) {
+            // a unit was found
+            // add this unit to the list
+            // erase the found unit's name from our search string
+            outList.push_front(RpUnitsListEntry(unit,exponent,prefix));
+            if (type.compare("") == 0) {
+                type = unit->getType();
+            }
+            else if (type[0] == '/') {
+                type = unit->getType() + type;
+            }
+            else {
+                type = unit->getType() + "*" + type;
+            }
+            myInUnits.erase(idx+offset);
+        }
+        else {
+            // we came across a unit we did not recognize
+            // raise error and delete character for now
+            err = 1;
+            myInUnits.erase(idx);
+        }
+
+        /*
+        // if the exponent != 1,-1 then do a second search
+        // for the unit+exponent string that might be defined.
+        // this is to cover the case were we have defined conversions
+        // m3<->gal, m3<->L but m is defined
+        if ( (exponent != 1) && (exponent != -1) ) {
+            sendUnitStr.str("");
+            sendUnitStr << unit->getUnits() << exponent;
+            unit = grabUnits(sendUnitStr.str(),&offset);
+            if (unit) {
+                // a unit was found
+                // add this unit to the list
+                outList.push_front(RpUnitsListEntry(unit,1.0));
+            }
+            else {
+                // we came across a unit we did not recognize
+                // do nothing
+            }
+        }
+        */
+
+        // reset our vars
+        idx = 0;
+        offset = 0;
+        exponent = 1;
+    }
+
+    return err;
+}
+
+/**********************************************************************/
+// METHOD: list2units()
+/// Join a list of units into a string with proper exponents.
+/**
+ * Joins a list of units like cm2, kV-1, ns-1, creating a string
+ * like cm2/kVns.
+ */
+
+int
+RpUnits::list2units ( RpUnitsList& inList,
+                      std::string& outUnitsStr) {
+
+    RpUnitsListIter inListIter;
+    std::string inUnits     = "";
+    double exp              = 0;
+    int err                 = 0;
+    std::string numerator   = "";
+    std::string denominator = "";
+
+    inListIter = inList.begin();
+
+    while (inListIter != inList.end()) {
+        exp = inListIter->getExponent();
+        if (exp > 0) {
+            numerator += inListIter->name();
+        }
+        else if (exp < 0) {
+            denominator += inListIter->name(RPUNITS_POS_EXP);
+        }
+        else {
+            // we shouldn't get units with exponents of zero
+        }
+        inListIter++;
+    }
+
+    outUnitsStr = numerator;
+    if ( denominator.compare("") != 0 ) {
+        outUnitsStr += "/" + denominator;
+    }
+
+    return err;
+}
+
+/**********************************************************************/
+// METHOD: compareListEntryBasis()
+/// Compare two RpUnits objects to see if they are related by a basis
+/**
+ * One step in converting between Rappture Units Objects is to check
+ * to see if the conversion is an intra-basis conversion. Intra-basis
+ * conversions include those where all conversions are done within
+ * the same basis.
+ *
+ * Examples of intra-basis conversions include:
+ *     m -> cm  ( meters to centimeters )
+ *     cm -> m  ( centimeters to meters )
+ *     cm -> nm ( centimenters to nanometers )
+ */
+
+int RpUnits::compareListEntryBasis ( RpUnitsList& fromList,
+                                     RpUnitsListIter& fromIter,
+                                     RpUnitsListIter& toIter ) {
+
+    const RpUnits* toBasis = NULL;
+    const RpUnits* fromBasis = NULL;
+    int retVal = 1;
+    double fromExp = 0;
+    double toExp = 0;
+
+    fromIter = fromList.begin();
+
+    // get the basis of the object being stored
+    // if the basis is NULL, then we'll compare the object
+    // itself because the object is the basis.
+    toBasis = toIter->getBasis();
+    if (toBasis == NULL) {
+        toBasis = toIter->getUnitsObj();
+    }
+
+    toExp   = toIter->getExponent();
+
+    while ( fromIter != fromList.end() ) {
+
+        fromExp = fromIter->getExponent();
+
+        // in order to convert, exponents must be equal.
+        if (fromExp == toExp) {
+
+            // get the basis of the object being stored
+            // if the basis is NULL, then we'll compare the object
+            // itself because the object is the basis.
+            fromBasis = fromIter->getBasis();
+            if (fromBasis == NULL) {
+                fromBasis = fromIter->getUnitsObj();
+            }
+
+            if (toBasis == fromBasis) {
+                // conversion needed between 2 units of the same basis.
+                // these two units could actually be the same unit (m->m)
+                retVal = 0;
+                break;
+            }
+        }
+
+        fromIter++;
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// METHOD: compareListEntrySearch()
+/// this function will soon be removed.
+/**
+ */
+
+int RpUnits::compareListEntrySearch ( RpUnitsList& fromList,
+                                     RpUnitsListIter& fromIter,
+                                     RpUnitsListIter& toIter ) {
+
+    const RpUnits* toBasis = NULL;
+    const RpUnits* fromBasis = NULL;
+    int retVal = 1;
+
+    fromIter = fromList.begin();
+
+    // get the basis of the object being stored
+    // if the basis is NULL, then we'll compare the object
+    // itself because the object is the basis.
+    toBasis = toIter->getBasis();
+    if (toBasis == NULL) {
+        toBasis = toIter->getUnitsObj();
+    }
+
+    while ( fromIter != fromList.end() ) {
+
+        // get the basis of the object being stored
+        // if the basis is NULL, then we'll compare the object
+        // itself because the object is the basis.
+        fromBasis = fromIter->getBasis();
+        if (fromBasis == NULL) {
+            fromBasis = fromIter->getUnitsObj();
+        }
+
+        if (toBasis == fromBasis) {
+            // conversion needed between 2 units of the same basis.
+            // these two units could actually be the same unit (m->m)
+            retVal = 0;
+            break;
+        }
+
+        fromIter++;
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// METHOD: convert()
+/// Convert between RpUnits return a string value with or without units
+/**
+ * Convert function so people can just send in two strings and
+ * we'll see if the units exists and do a conversion
+ * Example:
+ *     strVal = RpUnits::convert("300K","C",1);
+ *
+ * Returns a string with or without units.
+ */
+
+
+std::string
+RpUnits::convert (  std::string val,
+                    std::string toUnitsName,
+                    int showUnits,
+                    int* result ) {
+
+    RpUnitsList toUnitsList;
+    RpUnitsList fromUnitsList;
+
+    RpUnitsListIter toIter;
+    RpUnitsListIter fromIter;
+    RpUnitsListIter tempIter;
+
+    const RpUnits* toUnits = NULL;
+    const RpUnits* toPrefix = NULL;
+    const RpUnits* fromUnits = NULL;
+    const RpUnits* fromPrefix = NULL;
+
+    std::string tmpNumVal = "";
+    std::string fromUnitsName = "";
+    std::string convVal = "";
+    std::string type = "";     // junk var used because units2list requires it
+    std::string retStr = "";
+    double numVal = 0;
+    double toExp = 0;
+    double fromExp = 0;
+    int convErr = 0;
+    std::stringstream outVal;
+
+    double copies = 0;
+
+    std::list<std::string> compatList;
+    std::string listStr;
+
+    convertList cList;
+    convertList totalConvList;
+
+
+    // set  default result flag/error code
+    if (result) {
+        *result = 0;
+    }
+
+    // search our string to see where the numeric part stops
+    // and the units part starts
+    //
+    //  convert("5J", "neV") => 3.12075e+28neV
+    //  convert("3.12075e+28neV", "J") => 4.99999J
+    // now we can actually get the scientific notation portion of the string.
+    //
+
+    convErr = unitSlice(val,fromUnitsName,numVal);
+
+    if (convErr != 0) {
+        // no conversion was done.
+        // number in incorrect format probably.
+        if (result) {
+            *result = 1;
+        }
+        return val;
+    }
+
+    if (toUnitsName.empty())  {
+        // there were no units in the input
+        // string or no conversion needed
+        // assume fromUnitsName = toUnitsName
+        // return the correct value
+        if (result) {
+            *result = 0;
+        }
+
+        if (showUnits == RPUNITS_UNITS_ON) {
+            outVal << numVal << fromUnitsName;
+        }
+        else {
+            outVal << numVal;
+        }
+
+        return std::string(outVal.str());
+    }
+
+    // check if the fromUnitsName is empty or
+    // if the fromUnitsName == toUnitsName
+    // these are conditions where no conversion is needed
+    if ( (fromUnitsName.empty()) || (toUnitsName == fromUnitsName) )  {
+        // there were no units in the input
+        // string or no conversion needed
+        // assume fromUnitsName = toUnitsName
+        // return the correct value
+        if (result) {
+            *result = 0;
+        }
+
+        if (showUnits == RPUNITS_UNITS_ON) {
+            outVal << numVal << toUnitsName;
+        }
+        else {
+            outVal << numVal;
+        }
+
+        return std::string(outVal.str());
+    }
+
+    convErr = RpUnits::units2list(toUnitsName,toUnitsList,type);
+    if (convErr) {
+        if (result) {
+            *result = convErr;
+        }
+        retStr = "Unrecognized units: \"" + toUnitsName + "\". Please specify valid Rappture Units";
+        return retStr;
+    }
+
+    convErr = RpUnits::units2list(fromUnitsName,fromUnitsList,type);
+    if (convErr) {
+        if (result) {
+            *result = convErr;
+        }
+        type = "";
+        RpUnits::validate(toUnitsName,type,&compatList);
+        list2str(compatList,listStr);
+        retStr = "Unrecognized units: \"" + fromUnitsName
+                + "\".\nShould be units of type " + type + " (" + listStr + ")";
+        return retStr;
+    }
+
+    fromIter = fromUnitsList.begin();
+    toIter = toUnitsList.begin();
+
+    while ( (toIter != toUnitsList.end()) && (fromIter != fromUnitsList.end()) && (!convErr) ) {
+        fromUnits = fromIter->getUnitsObj();
+        fromPrefix = fromIter->getPrefix();
+        toUnits = toIter->getUnitsObj();
+        toPrefix = toIter->getPrefix();
+
+        cList.clear();
+
+        if (fromPrefix != NULL) {
+            cList.push_back(fromPrefix->convList->conv->convForwFxnPtr);
+        }
+
+        convErr = fromUnits->getConvertFxnList(toUnits, cList);
+
+        if (toPrefix != NULL) {
+            cList.push_back(toPrefix->convList->conv->convBackFxnPtr);
+        }
+
+        if (convErr == 0) {
+
+            toExp = toIter->getExponent();
+            fromExp = fromIter->getExponent();
+
+            if (fromExp == toExp) {
+                copies = fromExp;
+                if (fromExp < 0) {
+                    copies = copies * -1.00;
+                    totalConvList.push_back(&invert);
+                }
+                while (copies > 0) {
+                    combineLists(totalConvList,cList);
+                    copies--;
+                }
+                if (fromExp < 0) {
+                    totalConvList.push_back(&invert);
+                }
+            }
+            else {
+                // currently we cannot handle conversions of
+                // units where the exponents are different
+                convErr++;
+            }
+
+        }
+
+        if (convErr == 0) {
+            // successful conversion reported
+            // remove the elements from the lists
+            tempIter = toIter;
+            toIter++;
+            toUnitsList.erase(tempIter);
+
+            tempIter = fromIter;
+            fromUnitsList.erase(tempIter);
+            fromIter = fromUnitsList.begin();
+        }
+        else {
+            // no conversion available?
+            fromIter++;
+            if (fromIter == fromUnitsList.end()) {
+
+                fromIter = fromUnitsList.begin();
+                toIter++;
+
+                if (toIter == toUnitsList.end())  {
+
+                    toIter = toUnitsList.begin();
+
+                    // raise error that there was an
+                    // unrecognized conversion request
+
+                    convErr++;
+                    retStr = "Conversion unavailable: (";
+                    while (fromIter != fromUnitsList.end()) {
+                        /*
+                        if (fromIter != fromUnitsList.begin()) {
+                            retStr += " or ";
+                        }
+                        */
+                        retStr += fromIter->name();
+                        fromIter++;
+                    }
+                    retStr += ") -> (";
+
+                    // tempIter = toIter;
+
+                    while (toIter != toUnitsList.end()) {
+                        retStr += toIter->name();
+                        toIter++;
+                    }
+                    retStr += ")";
+
+                    type = "";
+                    RpUnits::validate(toUnitsName,type,&compatList);
+                    list2str(compatList,listStr);
+                    retStr += "\nPlease enter units of type "
+                                + type + " (" + listStr + ")";
+
+
+                    // exit and report the error
+
+                    /*
+                    toIter = tempIter;
+                    toIter++;
+                    toUnitsList.erase(tempIter);
+                    */
+                }
+                else {
+                    // keep searching for units to convert
+                    // until we are out of units in the
+                    // fromUnitsList and toUnitsList.
+
+                    convErr = 0;
+                }
+            }
+            else {
+                // keep searching for units to convert
+                // until we are out of units in the
+                // fromUnitsList and toUnitsList.
+
+                convErr = 0;
+            }
+        }
+    }
+
+
+
+    if (convErr == 0) {
+        // if ( (fromIter != fromUnitsList.end()) || (toIter != toUnitsList.end()) ) {
+        if ( fromUnitsList.size() || toUnitsList.size() ) {
+            // raise error that there was an
+            // unrecognized conversion request
+
+            convErr++;
+            retStr = "unmatched units in conversion: (";
+
+            fromIter = fromUnitsList.begin();
+            while (fromIter != fromUnitsList.end()) {
+                retStr += fromIter->name();
+                fromIter++;
+            }
+
+            if (fromUnitsList.size() && toUnitsList.size()) {
+                retStr += ") -> (";
+            }
+
+            toIter = toUnitsList.begin();
+            while (toIter != toUnitsList.end()) {
+                retStr += toIter->name();
+                toIter++;
+            }
+            retStr += ")";
+            type = "";
+            RpUnits::validate(toUnitsName,type,&compatList);
+            list2str(compatList,listStr);
+            retStr += "\nPlease enter units of type "
+                        + type + " (" + listStr + ")";
+
+        }
+        else {
+            // apply the conversion and check for errors
+            convErr = applyConversion (&numVal, totalConvList);
+            if (convErr == 0) {
+                // outVal.flags(std::ios::fixed);
+                // outVal.precision(10);
+                if (showUnits == RPUNITS_UNITS_ON) {
+                    outVal << numVal << toUnitsName;
+                }
+                else {
+                    outVal << numVal;
+                }
+                retStr = outVal.str();
+            }
+            else {
+
+            }
+        }
+    }
+
+    if ( (result) && (*result == 0) ) {
+        *result = convErr;
+    }
+
+    return retStr;
+
+}
+
+/**********************************************************************/
+// METHOD: convert()
+/// Convert between RpUnits return a string value with or without units
+/**
+ * Returns a string value with or without units.
+ */
+
+std::string
+RpUnits::convert ( const  RpUnits* toUnits,
+                   double val,
+                   int showUnits,
+                   int* result )  const {
+
+    double retVal = convert(toUnits,val,result);
+    std::stringstream unitText;
+
+
+    if (showUnits == RPUNITS_UNITS_ON) {
+        unitText << retVal << toUnits->getUnitsName();
+    }
+    else {
+        unitText << retVal;
+    }
+
+    return (std::string(unitText.str()));
+
+}
+
+/**********************************************************************/
+// METHOD: convert()
+/// Convert between RpUnits using an RpUnits Object to describe toUnit.
+/**
+ * User function to convert a value to the provided RpUnits* toUnits
+ * if it exists as a conversion from the basis
+ * example
+ *      cm.convert(meter,10)
+ *      cm.convert(angstrum,100)
+ *
+ * Returns a double value without units.
+ */
+
+double
+RpUnits::convert(const RpUnits* toUnit, double val, int* result) const {
+
+    // currently we convert this object to its basis and look for the
+    // connection to the toUnit object from the basis.
+
+    double value = val;
+    const RpUnits* toBasis = toUnit->getBasis();
+    const RpUnits* fromUnit = this;
+    const RpUnits* dictToUnit = NULL;
+    convEntry *p;
+    int my_result = 0;
+
+    RpUnitsTypes::RpUnitsTypesHint hint = NULL;
+
+    // set *result to a default value
+    if (result) {
+        *result = 1;
+    }
+
+    // guard against converting to the units you are converting from...
+    // ie. meters->meters
+    if (this->getUnitsName() == toUnit->getUnitsName()) {
+        if (result) {
+            *result = 0;
+        }
+        return val;
+    }
+
+    // convert unit to the basis
+    // makeBasis(&value);
+    // trying to avoid the recursive way of converting to the basis.
+    // need to rethink this.
+    //
+    if ( (basis) && (basis->getUnitsName() != toUnit->getUnitsName()) ) {
+        value = convert(basis,value,&my_result);
+        if (my_result == 0) {
+            fromUnit = basis;
+        }
+    }
+
+    // find the toUnit in our dictionary.
+    // if the toUnits has a basis, we need to search for the basis
+    // and convert between basis' and then convert again back to the
+    // original unit.
+    if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
+        hint = RpUnitsTypes::getTypeHint(toBasis->getType());
+        dictToUnit = find(toBasis->getUnitsName(), hint);
+    }
+    else {
+        hint = RpUnitsTypes::getTypeHint(toUnit->getType());
+        dictToUnit = find(toUnit->getUnitsName(), hint);
+    }
+
+    // did we find the unit in the dictionary?
+    if (dictToUnit == NULL) {
+        // toUnit was not found in the dictionary
+        return val;
+    }
+
+    // search through the conversion list to find
+    // the conversion to the toUnit.
+
+    if (basis) {
+        p = basis->convList;
+    }
+    else {
+        p = this->convList;
+    }
+
+    if (p == NULL) {
+        // there are no conversions
+        return val;
+    }
+
+    // loop through our conversion list looking for the correct conversion
+    do {
+
+        if ( (p->conv->toPtr == dictToUnit) && (p->conv->fromPtr == fromUnit) ) {
+            // we found our conversion
+            // call the function pointer with value
+
+            // this should probably be re thought out
+            // the problem is that convForwFxnPtr has the conversion for a
+            // one arg conv function pointer and convForwFxnPtrDD has the
+            // conversion for a two arg conv function pointer
+            // need to make this simpler, more logical maybe only allow 2 arg
+            if (       (p->conv->convForwFxnPtr)
+                    && (! p->conv->convForwFxnPtrDD) ) {
+
+                value = p->conv->convForwFxnPtr(value);
+            }
+            else if (  (p->conv->convForwFxnPtrDD)
+                    && (! p->conv->convForwFxnPtr) ) {
+
+                value =
+                    p->conv->convForwFxnPtrDD(value, fromUnit->getExponent());
+            }
+
+            // check to see if we converted to the actual requested unit
+            // or to the requested unit's basis.
+            // if we converted to the requested unit's basis. we need to
+            // do one last conversion from the requested unit's basis back
+            // to the requested unit.
+            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
+                my_result = 0;
+                value = toBasis->convert(toUnit,value,&my_result);
+                if (my_result != 0) {
+                    if (result) {
+                        *result += 1;
+                    }
+                }
+            }
+
+            // change the result code to zero, a conversion was performed
+            // (we think)... its ture that it is possible to get to this
+            // point and have skipped the conversion because the
+            // conversion object was not properly created...
+            // ie. both fxn ptrs were null or neither fxn ptr was null
+            //
+            if (result && (*result == 1)) {
+                *result = 0;
+            }
+            break;
+        }
+
+        if ( (p->conv->toPtr == fromUnit) && (p->conv->fromPtr == dictToUnit) ) {
+            // we found our conversion
+            // call the function pointer with value
+
+            // this should probably be re thought out
+            // the problem is that convForwFxnPtr has the conversion for a
+            // one arg conv function pointer and convForwFxnPtrDD has the
+            // conversion for a two arg conv function pointer
+            // need to make this simpler, more logical maybe only allow 2 arg
+            if (       (p->conv->convBackFxnPtr)
+                    && (! p->conv->convBackFxnPtrDD) ) {
+
+                value = p->conv->convBackFxnPtr(value);
+            }
+            else if (  (p->conv->convBackFxnPtrDD)
+                    && (! p->conv->convBackFxnPtr) ) {
+
+                value =
+                    p->conv->convBackFxnPtrDD(value, fromUnit->getExponent());
+            }
+
+            // check to see if we converted to the actual requested unit
+            // or to the requested unit's basis.
+            // if we converted to the requested unit's basis. we need to
+            // do one last conversion from the requested unit's basis back
+            // to the requested unit.
+            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
+                my_result = 0;
+                value = toBasis->convert(toUnit,value,&my_result);
+                if (my_result != 0) {
+                    if (result) {
+                        *result += 1;
+                    }
+                }
+            }
+
+            // change the result code to zero, a conversion was performed
+            // (we think)... its ture that it is possible to get to this
+            // point and have skipped the conversion because the
+            // conversion object was not properly created...
+            // ie. both fxn ptrs were null or neither fxn ptr was null
+            //
+            if (result && (*result == 1)) {
+                *result = 0;
+            }
+            break;
+        }
+
+        p = p->next;
+
+    } while (p != NULL);
+
+
+    if ( p == NULL) {
+        // we did not find the conversion
+        if (result) {
+            *result += 1;
+        }
+        return val;
+    }
+
+    // we found the conversion.
+    // return the converted value.
+    return value;
+
+}
+
+
+/**********************************************************************/
+// METHOD: convert()
+/// Convert a value between RpUnits using user defined conversions
+/**
+ */
+
+void*
+RpUnits::convert(const RpUnits* toUnit, void* val, int* result) const {
+
+    // currently we convert this object to its basis and look for the
+    // connection ot the toUnit object from the basis.
+
+    void* value = val;
+    const RpUnits* toBasis = toUnit->getBasis();
+    const RpUnits* fromUnit = this;
+    const RpUnits* dictToUnit = NULL;
+    convEntry *p;
+    int my_result = 0;
+
+    RpUnitsTypes::RpUnitsTypesHint hint = NULL;
+
+    // set *result to a default value
+    if (result) {
+        *result = 1;
+    }
+
+    // guard against converting to the units you are converting from...
+    // ie. meters->meters
+    if (this->getUnitsName() == toUnit->getUnitsName()) {
+        if (result) {
+            *result = 0;
+        }
+        return val;
+    }
+
+    // convert unit to the basis
+    // makeBasis(&value);
+    // trying to avoid the recursive way of converting to the basis.
+    // need to rethink this.
+    //
+    if ( (basis) && (basis->getUnitsName() != toUnit->getUnitsName()) ) {
+        value = convert(basis,value,&my_result);
+        if (my_result == 0) {
+            fromUnit = basis;
+        }
+    }
+
+    // find the toUnit in our dictionary.
+    // if the toUnits has a basis, we need to search for the basis
+    // and convert between basis' and then convert again back to the
+    // original unit.
+    if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
+        hint = RpUnitsTypes::getTypeHint(toBasis->getType());
+        dictToUnit = find(toBasis->getUnitsName(), hint);
+    }
+    else {
+        hint = RpUnitsTypes::getTypeHint(toUnit->getType());
+        dictToUnit = find(toUnit->getUnitsName(), hint);
+    }
+
+    // did we find the unit in the dictionary?
+    if (dictToUnit == NULL) {
+        // toUnit was not found in the dictionary
+        return val;
+    }
+
+    // search through the conversion list to find
+    // the conversion to the toUnit.
+
+    if (basis) {
+        p = basis->convList;
+    }
+    else {
+        p = this->convList;
+    }
+
+    if (p == NULL) {
+        // there are no conversions
+        return val;
+    }
+
+    // loop through our conversion list looking for the correct conversion
+    do {
+
+        if ( (p->conv->toPtr == dictToUnit) && (p->conv->fromPtr == fromUnit) ) {
+            // we found our conversion
+            // call the function pointer with value
+
+            value = p->conv->convForwFxnPtrVoid(p->conv->convForwData,value);
+
+            // check to see if we converted to the actual requested unit
+            // or to the requested unit's basis.
+            // if we converted to the requested unit's basis. we need to
+            // do one last conversion from the requested unit's basis back
+            // to the requested unit.
+            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
+                my_result = 0;
+                value = toBasis->convert(toUnit,value,&my_result);
+                if (my_result != 0) {
+                    if (result) {
+                        *result += 1;
+                    }
+                }
+            }
+
+            // change the result code to zero, a conversion was performed
+            // (we think)... its ture that it is possible to get to this
+            // point and have skipped the conversion because the
+            // conversion object was not properly created...
+            // ie. both fxn ptrs were null or neither fxn ptr was null
+            //
+            if (result && (*result == 1)) {
+                *result = 0;
+            }
+            break;
+        }
+
+        if ( (p->conv->toPtr == fromUnit) && (p->conv->fromPtr == dictToUnit) ) {
+            // we found our conversion
+            // call the function pointer with value
+
+            value = p->conv->convBackFxnPtrVoid(p->conv->convBackData,value);
+
+            // check to see if we converted to the actual requested unit
+            // or to the requested unit's basis.
+            // if we converted to the requested unit's basis. we need to
+            // do one last conversion from the requested unit's basis back
+            // to the requested unit.
+            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
+                my_result = 0;
+                value = toBasis->convert(toUnit,value,&my_result);
+                if (my_result != 0) {
+                    if (result) {
+                        *result += 1;
+                    }
+                }
+            }
+
+            // change the result code to zero, a conversion was performed
+            // (we think)... its ture that it is possible to get to this
+            // point and have skipped the conversion because the
+            // conversion object was not properly created...
+            // ie. both fxn ptrs were null or neither fxn ptr was null
+            //
+            if (result && (*result == 1)) {
+                *result = 0;
+            }
+            break;
+        }
+
+        p = p->next;
+
+    } while (p != NULL);
+
+
+    if ( p == NULL) {
+        // we did not find the conversion
+        if (result) {
+            *result += 1;
+        }
+        return val;
+    }
+
+    // we found the conversion.
+    // return the converted value.
+    return value;
+
+}
+
+/**********************************************************************/
+// METHOD: getConvertFxnList()
+/// Return list of fxn pointers for converting two simple RpUnits objects.
+/**
+ * Return the conversion list that will convert from this RpUnits
+ * object to the provided toUnits object if the conversion is defined
+ * example
+ *      cm.getConvertFxnList(meter,cList)
+ *      cm.getConvertFxnList(angstrum,cList)
+ *
+ * Returns a list of conversion objects, represented by cList,
+ * on success that a value can be applied to. The return value
+ * will be zero (0).
+ * Returns non-zero value on failure.
+ */
+
+int
+RpUnits::getConvertFxnList(const RpUnits* toUnit, convertList& cList) const {
+
+    // currently we convert this object to its basis and look for the
+    // connection to the toUnit object from the basis.
+
+    const RpUnits* toBasis = toUnit->getBasis();
+    const RpUnits* fromUnit = this;
+    const RpUnits* dictToUnit = NULL;
+    convEntry *p;
+    int result = 0;
+
+    // guard against converting to the units you are converting from...
+    // ie. meters->meters
+    if (this->getUnitsName() == toUnit->getUnitsName()) {
+        return result;
+    }
+
+    // convert unit to the basis
+    // makeBasis(&value);
+    // trying to avoid the recursive way of converting to the basis.
+    // need to rethink this.
+    //
+    if ( (basis) && (basis->getUnitsName() != toUnit->getUnitsName()) ) {
+        result = fromUnit->getConvertFxnList(basis,cList);
+        if (result == 0) {
+            fromUnit = basis;
+        }
+        else {
+            // exit because an error occured while
+            // trying to convert to the basis
+            return result;
+        }
+    }
+
+    // find the toUnit in our dictionary.
+    // if the toUnits has a basis, we need to search for the basis
+    // and convert between basis' and then convert again back to the
+    // original unit.
+    if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
+        dictToUnit = find(  toBasis->getUnitsName(),
+                            &RpUnitsTypes::hintTypeNonPrefix );
+    }
+    else {
+        dictToUnit = find(  toUnit->getUnitsName(),
+                            &RpUnitsTypes::hintTypeNonPrefix );
+    }
+
+    // did we find the unit in the dictionary?
+    if (dictToUnit == NULL) {
+        // toUnit was not found in the dictionary
+        result = 1;
+        return result;
+    }
+
+    // search through the conversion list to find
+    // the conversion to the toUnit.
+
+    if (basis) {
+        p = basis->convList;
+    }
+    else {
+        p = this->convList;
+    }
+
+    if (p == NULL) {
+        // there are no conversions
+        result = 1;
+        return result;
+    }
+
+    // loop through our conversion list looking for the correct conversion
+    do {
+
+        if ( (p->conv->toPtr == dictToUnit) && (p->conv->fromPtr == fromUnit) ) {
+            // we found our conversion
+            // call the function pointer with value
+
+            // this should probably be re thought out
+            // the problem is that convForwFxnPtr has the conversion for a
+            // one arg conv function pointer and convForwFxnPtrDD has the
+            // conversion for a two arg conv function pointer
+            // need to make this simpler, more logical maybe only allow 2 arg
+            if (       (p->conv->convForwFxnPtr)
+                    && (! p->conv->convForwFxnPtrDD) ) {
+
+                // value = p->conv->convForwFxnPtr(value);
+                cList.push_back(p->conv->convForwFxnPtr);
+            }
+            /*
+            else if (  (p->conv->convForwFxnPtrDD)
+                    && (! p->conv->convForwFxnPtr) ) {
+
+                // value = p->conv->convForwFxnPtrDD(value, fromUnit->getExponent());
+                cList.pushback(conv);
+            }
+            */
+
+            // check to see if we converted to the actual requested unit
+            // or to the requested unit's basis.
+            // if we converted to the requested unit's basis. we need to
+            // do one last conversion from the requested unit's basis back
+            // to the requested unit.
+            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
+                result += toBasis->getConvertFxnList(toUnit,cList);
+            }
+
+            break;
+        }
+
+        if ( (p->conv->toPtr == fromUnit) && (p->conv->fromPtr == dictToUnit) ) {
+            // we found our conversion
+            // call the function pointer with value
+
+            // this should probably be re thought out
+            // the problem is that convForwFxnPtr has the conversion for a
+            // one arg conv function pointer and convForwFxnPtrDD has the
+            // conversion for a two arg conv function pointer
+            // need to make this simpler, more logical maybe only allow 2 arg
+            if (       (p->conv->convBackFxnPtr)
+                    && (! p->conv->convBackFxnPtrDD) ) {
+
+                // value = p->conv->convBackFxnPtr(value);
+                cList.push_back(p->conv->convBackFxnPtr);
+            }
+            /*
+            else if (  (p->conv->convBackFxnPtrDD)
+                    && (! p->conv->convBackFxnPtr) ) {
+
+                // value = p->conv->convBackFxnPtrDD(value, fromUnit->getExponent());
+                cList.pushback(conv);
+            }
+            */
+
+            // check to see if we converted to the actual requested unit
+            // or to the requested unit's basis.
+            // if we converted to the requested unit's basis. we need to
+            // do one last conversion from the requested unit's basis back
+            // to the requested unit.
+            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
+                result += toBasis->getConvertFxnList(toUnit,cList);
+            }
+
+            break;
+        }
+
+        p = p->next;
+
+    } while (p != NULL);
+
+
+    if ( p == NULL) {
+        // we did not find the conversion
+        result += 1;
+    }
+
+    // return the converted value and result flag
+    return result;
+}
+
+/**********************************************************************/
+// METHOD: applyConversion()
+/// Apply a list of conversions in cList to the value val
+/**
+ * Apply a list of conversions, represented by cList, to the value
+ * val.
+ *
+ * Returns an integer value of zero (0) on success
+ * Returns non-zero value on failure.
+ */
+
+int
+RpUnits::applyConversion(double* val, convertList& cList) {
+
+    convertList::iterator iter;
+
+    if(val == NULL) {
+        return 1;
+    }
+
+    for(iter = cList.begin(); iter != cList.end(); iter++)
+    {
+        *val = (*iter)(*val);
+    }
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: combineLists()
+/// combine two convertLists in an orderly fasion
+/**
+ *
+ * elements of l2 are pushed onto l1 in the same order in which it
+ * exists in l2. l1 is changed in this function.
+ *
+ * Returns an integer value of zero (0) on success
+ * Returns non-zero value on failure.
+ */
+
+int
+RpUnits::combineLists(convertList& l1, convertList& l2) {
+
+    for (convertList::iterator iter = l2.begin(); iter != l2.end(); iter++) {
+        l1.push_back(*iter);
+    }
+    return 0;
+
+}
+
+/**********************************************************************/
+// METHOD: printList()
+/// print a list
+/**
+ *
+ * Returns an integer value of zero (0) on success
+ * Returns non-zero value on failure.
+ */
+
+int
+RpUnits::printList(convertList& l1) {
+
+    for (convertList::iterator iter = l1.begin(); iter != l1.end(); iter++) {
+        printf("%p\n", *iter);
+    }
+    return 0;
+
+}
+
+/**********************************************************************/
+// METHOD: insert()
+/// Place an RpUnits Object into the Rappture Units Dictionary.
+/**
+ * Return whether the inserted key was new with a non-zero
+ * value, or if the key already existed with a value of zero.
+ */
+
+int
+insert(std::string key,RpUnits* val) {
+
+    int newRecord = 0;
+    RpUnitsTypes::RpUnitsTypesHint hint = NULL;
+
+    if (val == NULL) {
+        return -1;
+    }
+
+    hint = RpUnitsTypes::getTypeHint(val->getType());
+
+    RpUnits::dict->set(key,val,hint,&newRecord,val->getCI());
+
+    return newRecord;
+}
+
+/**********************************************************************/
+// METHOD: connectConversion()
+/// Attach conversion information to a RpUnits Object.
+/**
+ */
+
+void
+RpUnits::connectConversion(conversion* conv) const {
+
+    convEntry* p = convList;
+
+    if (p == NULL) {
+        convList = new convEntry (conv,NULL,NULL);
+    }
+    else {
+        while (p->next != NULL) {
+            p = p->next;
+        }
+
+        p->next = new convEntry (conv,p,NULL);
+    }
+
+}
+
+/**********************************************************************/
+// METHOD: connectIncarnation()
+/// Attach incarnation object information to a RpUnits Object.
+/**
+ */
+
+void
+RpUnits::connectIncarnation(const RpUnits* unit) const {
+
+    incarnationEntry* p = incarnationList;
+
+    if (p == NULL) {
+        incarnationList = new incarnationEntry (unit,NULL,NULL);
+    }
+    else {
+        while (p->next != NULL) {
+            p = p->next;
+        }
+
+        p->next = new incarnationEntry (unit,p,NULL);
+    }
+
+}
+
+/**********************************************************************/
+// METHOD: addPresets()
+/// Add a specific set of predefined units to the dictionary
+/**
+ */
+
+int
+RpUnits::addPresets (const std::string group) {
+    int retVal = -1;
+    if (group.compare("all") == 0) {
+        retVal = RpUnitsPreset::addPresetAll();
+    }
+    else if (group.compare(RP_TYPE_ENERGY) == 0) {
+        retVal = RpUnitsPreset::addPresetEnergy();
+    }
+    else if (group.compare(RP_TYPE_LENGTH) == 0) {
+        retVal = RpUnitsPreset::addPresetLength();
+    }
+    else if (group.compare(RP_TYPE_TEMP) == 0) {
+        retVal = RpUnitsPreset::addPresetTemp();
+    }
+    else if (group.compare(RP_TYPE_TIME) == 0) {
+        retVal = RpUnitsPreset::addPresetTime();
+    }
+    else if (group.compare(RP_TYPE_VOLUME) == 0) {
+        retVal = RpUnitsPreset::addPresetVolume();
+    }
+    else if (group.compare(RP_TYPE_ANGLE) == 0) {
+        retVal = RpUnitsPreset::addPresetAngle();
+    }
+    else if (group.compare(RP_TYPE_MASS) == 0) {
+        retVal = RpUnitsPreset::addPresetMass();
+    }
+    else if (group.compare(RP_TYPE_PREFIX) == 0) {
+        retVal = RpUnitsPreset::addPresetPrefix();
+    }
+    else if (group.compare(RP_TYPE_PRESSURE) == 0) {
+        retVal = RpUnitsPreset::addPresetPressure();
+    }
+    else if (group.compare(RP_TYPE_CONC) == 0) {
+        retVal = RpUnitsPreset::addPresetConcentration();
+    }
+    else if (group.compare(RP_TYPE_FORCE) == 0) {
+        retVal = RpUnitsPreset::addPresetForce();
+    }
+    else if (group.compare(RP_TYPE_MAGNETIC) == 0) {
+        retVal = RpUnitsPreset::addPresetMagnetic();
+    }
+    else if (group.compare(RP_TYPE_MISC) == 0) {
+        retVal = RpUnitsPreset::addPresetMisc();
+    }
+    else if (group.compare(RP_TYPE_POWER) == 0) {
+        retVal = RpUnitsPreset::addPresetPower();
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// METHOD: addPresetAll()
+/// Call all of the addPreset* functions.
+/**
+ *
+ * Add all predefined units to the units dictionary
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetAll () {
+
+    int result = 0;
+
+    result += addPresetPrefix();
+    result += addPresetTime();
+    result += addPresetTemp();
+    result += addPresetLength();
+    result += addPresetEnergy();
+    result += addPresetVolume();
+    result += addPresetAngle();
+    result += addPresetMass();
+    result += addPresetPressure();
+    result += addPresetConcentration();
+    result += addPresetForce();
+    result += addPresetMagnetic();
+    result += addPresetMisc();
+    result += addPresetPower();
+
+    return 0;
+}
+
+
+/**********************************************************************/
+// METHOD: addPresetPrefix()
+///
+/**
+ * Defines the following unit prefixes:
+ *   deci        (d)
+ *   centi       (c)
+ *   milli       (m)
+ *   micro       (u)
+ *   nano        (n)
+ *   pico        (p)
+ *   femto       (f)
+ *   atto        (a)
+ *   deca        (da)
+ *   hecto       (h)
+ *   kilo        (k)
+ *   mega        (M)
+ *   giga        (G)
+ *   tera        (T)
+ *   peta        (P)
+ *   exa         (E)
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetPrefix () {
+
+    std::string type = RP_TYPE_PREFIX;
+    RpUnits* basis = NULL;
+
+    RpUnits * deci  = NULL;
+    RpUnits * centi = NULL;
+    RpUnits * milli = NULL;
+    RpUnits * micro = NULL;
+    RpUnits * nano  = NULL;
+    RpUnits * pico  = NULL;
+    RpUnits * femto = NULL;
+    RpUnits * atto  = NULL;
+    RpUnits * deca  = NULL;
+    RpUnits * hecto = NULL;
+    RpUnits * kilo  = NULL;
+    RpUnits * mega  = NULL;
+    RpUnits * giga  = NULL;
+    RpUnits * tera  = NULL;
+    RpUnits * peta  = NULL;
+    RpUnits * exa   = NULL;
+
+    deci  = RpUnits::define ( "d",  basis, type);
+    centi = RpUnits::define ( "c",  basis, type);
+    milli = RpUnits::define ( "m",  basis, type, !RPUNITS_METRIC,
+                              !RPUNITS_CASE_INSENSITIVE);
+    micro = RpUnits::define ( "u",  basis, type);
+    nano  = RpUnits::define ( "n",  basis, type, !RPUNITS_METRIC,
+                              !RPUNITS_CASE_INSENSITIVE);
+    pico  = RpUnits::define ( "p",  basis, type, !RPUNITS_METRIC,
+                              !RPUNITS_CASE_INSENSITIVE);
+    femto = RpUnits::define ( "f",  basis, type);
+    atto  = RpUnits::define ( "a",  basis, type);
+    deca  = RpUnits::define ( "da", basis, type);
+    hecto = RpUnits::define ( "h",  basis, type);
+    kilo  = RpUnits::define ( "k",  basis, type);
+    mega  = RpUnits::define ( "M",  basis, type, !RPUNITS_METRIC,
+                              !RPUNITS_CASE_INSENSITIVE);
+    giga  = RpUnits::define ( "G",  basis, type);
+    tera  = RpUnits::define ( "T",  basis, type);
+    peta  = RpUnits::define ( "P",  basis, type, !RPUNITS_METRIC,
+                              !RPUNITS_CASE_INSENSITIVE);
+    exa  = RpUnits::define  ( "E",  basis, type);
+
+    // the use of the unit as the from and the to unit is a hack
+    // that can be resolved by creating a RpPrefix object
+    // the define() function cannot handle NULL as to unit.
+    RpUnits::define ( deci,  deci , deci2base,  base2deci);
+    RpUnits::define ( centi, centi, centi2base, base2centi);
+    RpUnits::define ( milli, milli, milli2base, base2milli);
+    RpUnits::define ( micro, micro, micro2base, base2micro);
+    RpUnits::define ( nano,  nano , nano2base,  base2nano);
+    RpUnits::define ( pico,  pico , pico2base,  base2pico);
+    RpUnits::define ( femto, femto, femto2base, base2femto);
+    RpUnits::define ( atto,  atto , atto2base,  base2atto);
+    RpUnits::define ( deca,  deca , deca2base,  base2deca);
+    RpUnits::define ( hecto, hecto, hecto2base, base2hecto);
+    RpUnits::define ( kilo,  kilo , kilo2base,  base2kilo);
+    RpUnits::define ( mega,  mega , mega2base,  base2mega);
+    RpUnits::define ( giga,  giga , giga2base,  base2giga);
+    RpUnits::define ( tera,  tera , tera2base,  base2tera);
+    RpUnits::define ( peta,  peta , peta2base,  base2peta);
+    RpUnits::define ( exa,   exa  , exa2base,   base2exa);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetTime()
+/// Add Time related units to the dictionary
+/**
+ * Defines the following units:
+ *   seconds  (s)
+ *   minutes  (min)
+ *   hours    (h)
+ *   days     (d)
+ *
+ *   month and year are not included because simple
+ *   day->month conversions may be misleading
+ *   month->year conversions may be included in the future
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetTime () {
+
+    RpUnits* second    = NULL;
+    RpUnits* minute    = NULL;
+    RpUnits* hour      = NULL;
+    RpUnits* day       = NULL;
+
+    second    = RpUnits::define("s", NULL, RP_TYPE_TIME, RPUNITS_METRIC);
+    minute    = RpUnits::define("min", second, RP_TYPE_TIME);
+    hour      = RpUnits::define("h", second, RP_TYPE_TIME);
+    day       = RpUnits::define("d", second, RP_TYPE_TIME);
+
+    // add time definitions
+
+    RpUnits::define(second, minute, sec2min, min2sec);
+    RpUnits::define(second, hour, sec2hour, hour2sec);
+    RpUnits::define(second, day, sec2day, day2sec);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetTemp()
+/// Add Temperature related units to the dictionary
+/**
+ * Defines the following units:
+ *   fahrenheit  (F)
+ *   celcius     (C)
+ *   kelvin      (K)
+ *   rankine     (R)
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetTemp () {
+
+    RpUnits* fahrenheit = NULL;
+    RpUnits* celcius    = NULL;
+    RpUnits* kelvin     = NULL;
+    RpUnits* rankine    = NULL;
+
+    fahrenheit = RpUnits::define("F", NULL, RP_TYPE_TEMP);
+    celcius    = RpUnits::define("C", NULL, RP_TYPE_TEMP, RPUNITS_METRIC);
+    kelvin     = RpUnits::define("K", NULL, RP_TYPE_TEMP,RPUNITS_METRIC);
+    rankine    = RpUnits::define("R", NULL, RP_TYPE_TEMP);
+
+    // add temperature definitions
+    RpUnits::define(fahrenheit, celcius, fahrenheit2centigrade, centigrade2fahrenheit);
+    RpUnits::define(celcius, kelvin, centigrade2kelvin, kelvin2centigrade);
+    RpUnits::define(fahrenheit, kelvin, fahrenheit2kelvin, kelvin2fahrenheit);
+    RpUnits::define(rankine, kelvin, rankine2kelvin, kelvin2rankine);
+    RpUnits::define(fahrenheit, rankine, fahrenheit2rankine, rankine2fahrenheit);
+    RpUnits::define(celcius, rankine, celcius2rankine, rankine2celcius);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetLength()
+/// Add Length related units to the dictionary
+/**
+ * Defines the following units:
+ *   meters         (m)
+ *   angstrom       (A)
+ *   inch           (in)
+ *   feet           (ft)
+ *   yard           (yd)
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetLength () {
+
+    RpUnits* meters     = NULL;
+    RpUnits* angstrom   = NULL;
+    RpUnits* bohr       = NULL;
+    RpUnits* inch       = NULL;
+    RpUnits* feet       = NULL;
+    RpUnits* yard       = NULL;
+    RpUnits* mile       = NULL;
+
+    meters     = RpUnits::define("m", NULL, RP_TYPE_LENGTH, RPUNITS_METRIC);
+    angstrom   = RpUnits::define("A", NULL, RP_TYPE_LENGTH);
+    bohr       = RpUnits::define("bohr", NULL, RP_TYPE_LENGTH);
+    inch       = RpUnits::define("in", NULL, RP_TYPE_LENGTH);
+    feet       = RpUnits::define("ft", inch, RP_TYPE_LENGTH);
+    yard       = RpUnits::define("yd", inch, RP_TYPE_LENGTH);
+    mile       = RpUnits::define("mi", inch, RP_TYPE_LENGTH);
+
+    // RpUnits::makeMetric(meters);
+
+    // add length definitions
+    RpUnits::define(angstrom, meters, angstrom2meter, meter2angstrom);
+    RpUnits::define(bohr, meters, bohr2meter, meter2bohr);
+    RpUnits::define(inch, feet, inch2feet, feet2inch);
+    RpUnits::define(inch, yard, inch2yard, yard2inch);
+    RpUnits::define(inch, meters, inch2meter, meter2inch);
+    RpUnits::define(inch, mile, inch2mile, mile2inch);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetEnergy()
+/// Add Energy related units to the dictionary
+/**
+ * Defines the following units:
+ *   electron Volt (eV)
+ *   joule         (J)
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetEnergy () {
+
+    RpUnits* eVolt      = NULL;
+    RpUnits* joule      = NULL;
+
+    eVolt      = RpUnits::define("eV", NULL, RP_TYPE_ENERGY, RPUNITS_METRIC);
+    joule      = RpUnits::define("J", NULL, RP_TYPE_ENERGY, RPUNITS_METRIC);
+
+    // add energy definitions
+    RpUnits::define(eVolt,joule,electronVolt2joule,joule2electronVolt);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetVolume()
+/// Add Volume related units to the dictionary
+/**
+ * Defines the following units:
+ *   cubic feet (ft3)
+ *   us gallons (gal)
+ *   liter      (L)
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetVolume () {
+
+    // RpUnits* cubic_meter  = RpUnits::define("m3", NULL, RP_TYPE_VOLUME);
+    // RpUnits* cubic_feet   = RpUnits::define("ft3", NULL, RP_TYPE_VOLUME);
+    // RpUnits* us_gallon    = NULL;
+    // RpUnits* liter        = NULL;
+
+    RpUnits::define("gal", NULL, RP_TYPE_VOLUME);
+    RpUnits::define("L", NULL, RP_TYPE_VOLUME, RPUNITS_METRIC);
+
+    /*
+    // RpUnits::makeMetric(cubic_meter);
+    const RpUnits* meter = NULL;
+    const RpUnits* foot = NULL;
+
+    meter = RpUnits::find("m");
+    if (meter && cubic_meter) {
+        RpUnits::incarnate(meter,cubic_meter);
+    }
+    else {
+        // raise an error, could not find meter unit
+    }
+
+    foot = RpUnits::find("ft");
+    if (foot && cubic_feet) {
+        RpUnits::incarnate(foot,cubic_feet);
+    }
+    else {
+        // raise an error, could not find meter unit
+    }
+    */
+
+    // RpUnits::makeMetric(liter);
+
+
+    // add volume definitions
+    // RpUnits::define(cubic_meter,cubic_feet,meter2feet,feet2meter);
+    // RpUnits::define(cubic_meter,us_gallon,cubicMeter2usGallon,usGallon2cubicMeter);
+    // RpUnits::define(cubic_feet,us_gallon,cubicFeet2usGallon,usGallon2cubicFeet);
+    // RpUnits::define(cubic_meter,liter,cubicMeter2liter,liter2cubicMeter);
+    // RpUnits::define(liter,us_gallon,liter2us_gallon,us_gallon2liter);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetAngle()
+/// Add Angle related units to the dictionary
+/**
+ * Defines the following units:
+ *   degrees  (deg)
+ *   gradians (grad)
+ *   radians  (rad) (and metric extensions)
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetAngle () {
+
+    RpUnits* degree  = NULL;
+    RpUnits* gradian = NULL;
+    RpUnits* radian  = NULL;
+
+    degree  = RpUnits::define("deg",  NULL, RP_TYPE_ANGLE);
+    gradian = RpUnits::define("grad", NULL, RP_TYPE_ANGLE);
+    radian  = RpUnits::define("rad",  NULL, RP_TYPE_ANGLE, RPUNITS_METRIC);
+
+    // add angle definitions
+    RpUnits::define(degree,gradian,deg2grad,grad2deg);
+    RpUnits::define(radian,degree,rad2deg,deg2rad);
+    RpUnits::define(radian,gradian,rad2grad,grad2rad);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetMass()
+/// Add Mass related units to the dictionary
+/**
+ * Defines the following units:
+ *   gram  (g)
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetMass () {
+
+    RpUnits::define("g", NULL, RP_TYPE_MASS, RPUNITS_METRIC,!RPUNITS_CASE_INSENSITIVE);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetPressure()
+/// Add pressure related units to the dictionary
+/**
+ * http://www.ilpi.com/msds/ref/pressureunits.html
+ *
+ * Defines the following units:
+ *   atmosphere             (atm)
+ *   bar                    (bar)
+ *   pascal                 (Pa)
+ *   pounds/(in^2)          (psi)
+ *   torr                   (torr)
+ *   millimeters Mercury    (mmHg)
+ *
+ * mmHg was added because as a convenience to those who have not
+ * yet switched over to the new representation of torr.
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetPressure () {
+
+    RpUnits* atmosphere = NULL;
+    RpUnits* bar        = NULL;
+    RpUnits* pascal     = NULL;
+    RpUnits* psi        = NULL;
+    RpUnits* torr       = NULL;
+    RpUnits* mmHg       = NULL;
+
+    atmosphere  = RpUnits::define("atm", NULL, RP_TYPE_PRESSURE);
+    bar     = RpUnits::define("bar",  NULL, RP_TYPE_PRESSURE, RPUNITS_METRIC);
+    pascal  = RpUnits::define("Pa",   NULL, RP_TYPE_PRESSURE, RPUNITS_METRIC);
+    psi     = RpUnits::define("psi",  NULL, RP_TYPE_PRESSURE);
+    torr    = RpUnits::define("torr", NULL, RP_TYPE_PRESSURE);
+    mmHg    = RpUnits::define("mmHg", torr, RP_TYPE_PRESSURE);
+
+    RpUnits::define(bar,pascal,bar2Pa,Pa2bar);
+    RpUnits::define(bar,atmosphere,bar2atm,atm2bar);
+    RpUnits::define(bar,psi,bar2psi,psi2bar);
+    RpUnits::define(bar,torr,bar2torr,torr2bar);
+    RpUnits::define(pascal,atmosphere,Pa2atm,atm2Pa);
+    RpUnits::define(pascal,torr,Pa2torr,torr2Pa);
+    RpUnits::define(pascal,psi,Pa2psi,psi2Pa);
+    RpUnits::define(torr,atmosphere,torr2atm,atm2torr);
+    RpUnits::define(torr,psi,torr2psi,psi2torr);
+    RpUnits::define(atmosphere,psi,atm2psi,psi2atm);
+
+    RpUnits::define(torr,mmHg,torr2mmHg,mmHg2torr);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetConcentration()
+/// Add concentration related units to the dictionary
+/**
+ *
+ * Defines the following units:
+ *   pH    (pH)
+ *   pOH    (pOH)
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetConcentration () {
+
+    RpUnits* pH  = NULL;
+    RpUnits* pOH = NULL;
+
+    pH  = RpUnits::define("pH",  NULL, RP_TYPE_CONC);
+    pOH = RpUnits::define("pOH", NULL, RP_TYPE_CONC);
+
+    // add concentration definitions
+    RpUnits::define(pH,pOH,pH2pOH,pOH2pH);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetForce()
+/// Add concentration related units to the dictionary
+/**
+ * http://en.wikipedia.org/wiki/Newton
+ *
+ * Defines the following units:
+ *   newton    (N)
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetForce () {
+
+    RpUnits::define("N",  NULL, RP_TYPE_FORCE, RPUNITS_METRIC);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetMagnetic()
+/// Add concentration related units to the dictionary
+/**
+ *
+ * http://en.wikipedia.org/wiki/Tesla_(unit)
+ * http://en.wikipedia.org/wiki/Gauss_(unit)
+ * http://en.wikipedia.org/wiki/Maxwell_(unit)
+ * http://en.wikipedia.org/wiki/Weber_(unit)
+ *
+ * Defines the following units:
+ *   tesla    (T)
+ *   gauss    (G)
+ *   maxwell  (Mx)
+ *   weber    (Wb)
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetMagnetic () {
+
+    RpUnits* tesla = NULL;
+    RpUnits* gauss = NULL;
+    RpUnits* maxwell = NULL;
+    RpUnits* weber = NULL;
+
+    tesla = RpUnits::define("T",  NULL, RP_TYPE_MAGNETIC, RPUNITS_METRIC);
+    gauss = RpUnits::define("G",  NULL, RP_TYPE_MAGNETIC, !RPUNITS_CASE_INSENSITIVE);
+    maxwell = RpUnits::define("Mx",  NULL, RP_TYPE_MAGNETIC);
+    weber = RpUnits::define("Wb", NULL, RP_TYPE_MAGNETIC, RPUNITS_METRIC);
+
+    RpUnits::define(tesla,gauss,tesla2gauss,gauss2tesla);
+    RpUnits::define(maxwell,weber,maxwell2weber,weber2maxwell);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetMisc()
+/// Add Misc related units to the dictionary
+/**
+ * Defines the following units:
+ *   volt  (V)
+ *   mole  (mol)
+ *   hertz (Hz)
+ *   becquerel (Bq)
+ *   amu
+ *   bel (B)
+ *   amp
+ *   ohm
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetMisc () {
+
+    RpUnits::define("V",  NULL, RP_TYPE_EPOT, RPUNITS_METRIC);
+    RpUnits::define("mol",NULL, "quantity", RPUNITS_METRIC);
+    RpUnits::define("Hz", NULL, "frequency", RPUNITS_METRIC);
+    RpUnits::define("Bq", NULL, "radioactivity", RPUNITS_METRIC);
+    RpUnits::define("amu", NULL, "mass_unit", !RPUNITS_METRIC);
+    RpUnits::define("B", NULL, "audio_transmission", RPUNITS_METRIC);
+    RpUnits::define("amp", NULL, "electric_current", RPUNITS_METRIC);
+    RpUnits::define("ohm", NULL, "electric_resistance", RPUNITS_METRIC);
+
+    // RpUnits* percent   = RpUnits::define("%",  NULL, RP_TYPE_MISC);
+
+    return 0;
+}
+
+/**********************************************************************/
+// METHOD: addPresetPower()
+/// Add power related units to the dictionary
+/**
+ * Defines the following units:
+ *   watt  (W)
+ *
+ * Return codes: 0 success, anything else is error
+ */
+
+int
+RpUnitsPreset::addPresetPower () {
+
+    // watts are derived units = J/s = kg*m2/s3 = Newton*m/s and Amps*Volt
+    RpUnits::define("W",  NULL, RP_TYPE_POWER, RPUNITS_METRIC);
+
+    return 0;
+}
+
+RpUnitsTypes::RpUnitsTypesHint
+RpUnitsTypes::getTypeHint (std::string type) {
+
+    if (type.compare(RP_TYPE_ENERGY) == 0) {
+        return &RpUnitsTypes::hintTypeEnergy;
+    }
+    else if (type.compare(RP_TYPE_EPOT) == 0) {
+        return &RpUnitsTypes::hintTypeEPot;
+    }
+    else if (type.compare(RP_TYPE_LENGTH) == 0) {
+        return &RpUnitsTypes::hintTypeLength;
+    }
+    else if (type.compare(RP_TYPE_TEMP) == 0) {
+        return &RpUnitsTypes::hintTypeTemp;
+    }
+    else if (type.compare(RP_TYPE_TIME) == 0) {
+        return &RpUnitsTypes::hintTypeTime;
+    }
+    else if (type.compare(RP_TYPE_VOLUME) == 0) {
+        return &RpUnitsTypes::hintTypeVolume;
+    }
+    else if (type.compare(RP_TYPE_ANGLE) == 0) {
+        return &RpUnitsTypes::hintTypeAngle;
+    }
+    else if (type.compare(RP_TYPE_MASS) == 0) {
+        return &RpUnitsTypes::hintTypeMass;
+    }
+    else if (type.compare(RP_TYPE_PREFIX) == 0) {
+        return &RpUnitsTypes::hintTypePrefix;
+    }
+    else if (type.compare(RP_TYPE_PRESSURE) == 0) {
+        return &RpUnitsTypes::hintTypePressure;
+    }
+    else if (type.compare(RP_TYPE_CONC) == 0) {
+        return &RpUnitsTypes::hintTypeConc;
+    }
+    else if (type.compare(RP_TYPE_FORCE) == 0) {
+        return &RpUnitsTypes::hintTypeForce;
+    }
+    else if (type.compare(RP_TYPE_MAGNETIC) == 0) {
+        return &RpUnitsTypes::hintTypeMagnetic;
+    }
+    else if (type.compare(RP_TYPE_MISC) == 0) {
+        return &RpUnitsTypes::hintTypeMisc;
+    }
+    else if (type.compare(RP_TYPE_POWER) == 0) {
+        return &RpUnitsTypes::hintTypePower;
+    }
+    else {
+        return NULL;
+    }
+};
+
+bool
+RpUnitsTypes::hintTypePrefix   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_PREFIX) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeNonPrefix    (   RpUnits* unitObj    ) {
+
+    bool retVal = true;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_PREFIX) == 0 ) {
+        retVal = false;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeEnergy   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_ENERGY) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeEPot   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_EPOT) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeLength   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_LENGTH) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeTemp   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_TEMP) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeTime   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_TIME) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeVolume   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_VOLUME) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeAngle   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_ANGLE) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeMass   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_MASS) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypePressure   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_PRESSURE) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeConc   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_CONC) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeForce   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_FORCE) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeMagnetic   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_MAGNETIC) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypeMisc   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_MISC) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+bool
+RpUnitsTypes::hintTypePower   (   RpUnits* unitObj    ) {
+
+    bool retVal = false;
+
+    if ( (unitObj->getType()).compare(RP_TYPE_POWER) == 0 ) {
+        retVal = true;
+    }
+
+    return retVal;
+}
+
+// -------------------------------------------------------------------- //
+
+/**********************************************************************/
+// FUNCTION: list2str()
+/// Convert a std::list<std::string> into a comma delimited std::string
+/**
+ * Iterates through a std::list<std::string> and returns a comma
+ * delimited std::string containing the elements of the inputted std::list.
+ *
+ * Returns 0 on success, anything else is error
+ */
+
+int
+list2str (std::list<std::string>& inList, std::string& outString)
+{
+    int retVal = 1;  // return Value 0 is success, everything else is failure
+    unsigned int counter = 0; // check if we hit all elements of inList
+    std::list<std::string>::iterator inListIter; // list interator
+
+    inListIter = inList.begin();
+
+    while (inListIter != inList.end()) {
+        if ( outString.empty() ) {
+            outString = *inListIter;
+        }
+        else {
+            outString =  outString + "," + *inListIter;
+        }
+
+        // increment the iterator and loop counter
+        inListIter++;
+        counter++;
+    }
+
+    if (counter == inList.size()) {
+        retVal = 0;
+    }
+
+    return retVal;
+}
+
+/**********************************************************************/
+// FUNCTION: unitSlice()
+/// Convert a std::string into what might be the value and units
+/**
+ * Returns 0 on success, anything else is error
+ */
+
+int
+unitSlice (std::string inStr, std::string& outUnits, double& outVal)
+{
+    int retVal      = 0;  // return val 0 is success, otherwise failure
+    char *endptr    = NULL;
+
+    outVal = strtod(inStr.c_str(), &endptr);
+
+    if ( (outVal == 0) && (endptr == inStr.c_str()) ) {
+        // no conversion performed
+        retVal = 1;
+    }
+
+    outUnits = std::string(endptr);
+
+    return retVal;
+}
Index: /tags/1.6.0/src/core/RpUnits.h
===================================================================
--- /tags/1.6.0/src/core/RpUnits.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpUnits.h	(revision 6168)
@@ -0,0 +1,784 @@
+/*
+ * ----------------------------------------------------------------------
+ *  RpUnits.h - Header file for Rappture Units
+ *
+ *   RpUnits Class Declaration / Definition
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RpUNITS_H
+#define _RpUNITS_H
+
+enum RP_UNITS_CONSTS {
+    RPUNITS_UNITS_OFF           = 0,
+    RPUNITS_UNITS_ON            = 1,
+
+    // units naming flags
+    RPUNITS_POS_EXP             = 1,
+    RPUNITS_NEG_EXP             = 2,
+    RPUNITS_STRICT_NAME         = 4,
+    RPUNITS_ORIG_EXP            = 7
+};
+
+// RpUnits Case Insensitivity define
+#define RPUNITS_CASE_INSENSITIVE true
+
+#define RPUNITS_METRIC          true
+
+//define our different types of units
+#define RP_TYPE_ENERGY      "energy"
+#define RP_TYPE_EPOT        "electric_potential"
+#define RP_TYPE_LENGTH      "length"
+#define RP_TYPE_TEMP        "temperature"
+#define RP_TYPE_TIME        "time"
+#define RP_TYPE_VOLUME      "volume"
+#define RP_TYPE_ANGLE       "angle"
+#define RP_TYPE_MASS        "mass"
+#define RP_TYPE_PREFIX      "prefix"
+#define RP_TYPE_PRESSURE    "pressure"
+#define RP_TYPE_CONC        "concentration"
+#define RP_TYPE_FORCE       "force"
+#define RP_TYPE_MAGNETIC    "magnetic"
+#define RP_TYPE_MISC        "misc"
+#define RP_TYPE_POWER       "power"
+
+
+#ifdef __cplusplus
+
+#include <iostream>
+#include <string>
+#include <list>
+#include <sstream>
+#include <stdlib.h>
+#include <errno.h>
+#include <math.h>
+
+#include "RpDict.h"
+#include "RpUnitsStd.h"
+
+#define LIST_TEMPLATE RpUnitsListEntry
+
+class RpUnits;
+
+class RpUnitsPreset {
+    public:
+        RpUnitsPreset () {
+            addPresetAll();
+        };
+
+        static int  addPresetAll();
+        static int  addPresetEnergy();
+        static int  addPresetLength();
+        static int  addPresetTemp();
+        static int  addPresetTime();
+        static int  addPresetVolume();
+        static int  addPresetAngle();
+        static int  addPresetMass();
+        static int  addPresetPrefix();
+        static int  addPresetPressure();
+        static int  addPresetConcentration();
+        static int  addPresetForce();
+        static int  addPresetMagnetic();
+        static int  addPresetMisc();
+        static int  addPresetPower();
+};
+
+class RpUnitsTypes {
+    public:
+
+        typedef bool (*RpUnitsTypesHint)(RpUnits*);
+        static RpUnitsTypesHint getTypeHint (std::string type);
+
+        static bool hintTypePrefix    ( RpUnits* unitObj );
+        static bool hintTypeNonPrefix ( RpUnits* unitObj );
+        static bool hintTypeEnergy    ( RpUnits* unitObj );
+        static bool hintTypeEPot      ( RpUnits* unitObj );
+        static bool hintTypeLength    ( RpUnits* unitObj );
+        static bool hintTypeTemp      ( RpUnits* unitObj );
+        static bool hintTypeTime      ( RpUnits* unitObj );
+        static bool hintTypeVolume    ( RpUnits* unitObj );
+        static bool hintTypeAngle     ( RpUnits* unitObj );
+        static bool hintTypeMass      ( RpUnits* unitObj );
+        static bool hintTypePressure  ( RpUnits* unitObj );
+        static bool hintTypeConc      ( RpUnits* unitObj );
+        static bool hintTypeForce     ( RpUnits* unitObj );
+        static bool hintTypeMagnetic  ( RpUnits* unitObj );
+        static bool hintTypeMisc      ( RpUnits* unitObj );
+        static bool hintTypePower     ( RpUnits* unitObj );
+
+    private:
+
+        RpUnitsTypes () {};
+};
+
+// simple class to hold info about a conversion.
+// holds where we are converting from
+// holds where we are converting to
+// hold the pointer to a function to do the forward conversion (from->to)
+// hold the pointer to a function to do the backward conversion (to->from)
+//
+class conversion
+{
+    public:
+
+        const RpUnits* getFrom()    { return (const RpUnits*) fromPtr; };
+        const RpUnits* getTo()      { return (const RpUnits*) toPtr; };
+
+        friend class RpUnits;
+
+        // copy constructor
+        conversion ( conversion& other)
+            :   fromPtr             (other.fromPtr),
+                toPtr               (other.toPtr),
+                convForwFxnPtr      (other.convForwFxnPtr),
+                convBackFxnPtr      (other.convBackFxnPtr),
+                convForwFxnPtrDD    (other.convForwFxnPtrDD),
+                convBackFxnPtrDD    (other.convBackFxnPtrDD),
+                convForwFxnPtrVoid  (other.convForwFxnPtrVoid),
+                convForwData        (other.convForwData),
+                convBackFxnPtrVoid  (other.convBackFxnPtrVoid),
+                convBackData        (other.convBackData)
+            {};
+
+        // copy assignment operator
+        conversion& operator= ( conversion& other )
+            {
+                fromPtr             = other.fromPtr;
+                toPtr               = other.toPtr;
+                convForwFxnPtr      = other.convForwFxnPtr;
+                convBackFxnPtr      = other.convBackFxnPtr;
+                convForwFxnPtrDD    = other.convForwFxnPtrDD;
+                convBackFxnPtrDD    = other.convBackFxnPtrDD;
+                convForwFxnPtrVoid  = other.convForwFxnPtrVoid;
+                convForwData        = other.convForwData;
+                convBackFxnPtrVoid  = other.convBackFxnPtrVoid;
+                convBackData        = other.convBackData;
+                return *this;
+            }
+
+        // default destructor
+        virtual ~conversion ()
+        {}
+
+    private:
+
+        const RpUnits* fromPtr;
+        const RpUnits* toPtr;
+        double (*convForwFxnPtr)(double);
+        double (*convBackFxnPtr)(double);
+        double (*convForwFxnPtrDD)(double,double);
+        double (*convBackFxnPtrDD)(double,double);
+        void* (*convForwFxnPtrVoid)(void*, void*);
+        void* convForwData;
+        void* (*convBackFxnPtrVoid)(void*, void*);
+        void* convBackData;
+
+        // constructor
+        // private because i only want RpUnits to be able to
+        // create a conversion
+        conversion (
+                const RpUnits* fromPtr,
+                const RpUnits* toPtr,
+                double (*convForwFxnPtr)(double),
+                double (*convBackFxnPtr)(double)
+             )
+            :   fromPtr             (fromPtr),
+                toPtr               (toPtr),
+                convForwFxnPtr      (convForwFxnPtr),
+                convBackFxnPtr      (convBackFxnPtr),
+                convForwFxnPtrDD    (NULL),
+                convBackFxnPtrDD    (NULL),
+                convForwFxnPtrVoid  (NULL),
+                convForwData        (NULL),
+                convBackFxnPtrVoid  (NULL),
+                convBackData        (NULL)
+            {};
+
+        // constructor for 2 argument conversion functions
+        conversion (
+                const RpUnits* fromPtr,
+                const RpUnits* toPtr,
+                double (*convForwFxnPtr)(double,double),
+                double (*convBackFxnPtr)(double,double)
+             )
+            :   fromPtr             (fromPtr),
+                toPtr               (toPtr),
+                convForwFxnPtr      (NULL),
+                convBackFxnPtr      (NULL),
+                convForwFxnPtrDD    (convForwFxnPtr),
+                convBackFxnPtrDD    (convBackFxnPtr),
+                convForwFxnPtrVoid  (NULL),
+                convForwData        (NULL),
+                convBackFxnPtrVoid  (NULL),
+                convBackData        (NULL)
+            {};
+
+        // constructor for user defined void* returning 1 arg conversion fxns.
+        // the 1 arg is a user defined void* object
+        conversion (
+                const RpUnits* fromPtr,
+                const RpUnits* toPtr,
+                void* (*convForwFxnPtrVoid)(void*, void*),
+                void* convForwData,
+                void* (*convBackFxnPtrVoid)(void*, void*),
+                void* convBackData
+             )
+            :   fromPtr             (fromPtr),
+                toPtr               (toPtr),
+                convForwFxnPtr      (NULL),
+                convBackFxnPtr      (NULL),
+                convForwFxnPtrDD    (NULL),
+                convBackFxnPtrDD    (NULL),
+                convForwFxnPtrVoid  (convForwFxnPtrVoid),
+                convForwData        (convForwData),
+                convBackFxnPtrVoid  (convBackFxnPtrVoid),
+                convBackData        (convBackData)
+            {};
+
+};
+
+// used by the RpUnits class to create a linked list of the conversions
+// associated with the specific unit.
+//
+// we could templitize this and make a generic linked list
+// or could use generic linked list class from book programming with objects
+//
+class convEntry
+{
+
+    public:
+
+        friend class RpUnits;
+
+        virtual ~convEntry()
+        {}
+
+    private:
+
+        conversion* conv;
+        convEntry*  prev;
+        convEntry*  next;
+
+        convEntry (
+                conversion* conv,
+                convEntry*  prev,
+                convEntry*  next
+             )
+            :   conv    (conv),
+                prev    (prev),
+                next    (next)
+            {};
+
+};
+
+// used by the RpUnits class to create a linked list of the incarnated units
+// associated with the specific unit.
+//
+// we could templitize this and make a generic linked list
+// or could use generic linked list class from book programming with objects
+//
+class incarnationEntry
+{
+
+    public:
+
+        friend class RpUnits;
+
+        virtual ~incarnationEntry()
+        {}
+
+    private:
+
+        const RpUnits* unit;
+        incarnationEntry*  prev;
+        incarnationEntry*  next;
+
+        incarnationEntry (
+                const RpUnits* unit,
+                incarnationEntry*  prev,
+                incarnationEntry*  next
+             )
+            :   unit    (unit),
+                prev    (prev),
+                next    (next)
+            {};
+
+};
+
+class RpUnitsListEntry
+{
+
+    public:
+
+        // constructor
+        RpUnitsListEntry (const RpUnits* unit, double exponent, const RpUnits* prefix=NULL)
+            : unit     (unit),
+              exponent (exponent),
+              prefix   (prefix)
+        {};
+
+        // copy constructor
+        RpUnitsListEntry (const RpUnitsListEntry& other)
+            : unit     (other.unit),
+              exponent (other.exponent),
+              prefix   (other.prefix)
+        {};
+
+        // copy assignment operator
+        RpUnitsListEntry& operator= (const RpUnitsListEntry& other) {
+            unit = other.unit;
+            exponent = other.exponent;
+            prefix = other.prefix;
+            return *this;
+        }
+
+        // negate the exponent
+        void negateExponent() const;
+
+        // print the name of the object
+        std::string name(int flags=RPUNITS_ORIG_EXP) const;
+
+        // report the basis of the RpUnits object being stored.
+        const RpUnits* getBasis() const;
+
+        // return the RpUnits*
+        const RpUnits* getUnitsObj() const;
+
+        // return the exponent
+        double getExponent() const;
+
+        // return the metric prefix associated with this object
+        const RpUnits* getPrefix() const;
+
+        // destructor
+        virtual ~RpUnitsListEntry ()
+        {}
+
+    private:
+
+        const RpUnits* unit;
+        mutable double exponent;
+        const RpUnits* prefix;
+};
+
+class RpUnits
+{
+    /*
+     * helpful units site
+     * http://aurora.regenstrief.org/~gunther/units.html
+     * http://www.nodc.noaa.gov/dsdt/ucg/
+     * http://www.cellml.org/meeting_minutes/archive/
+     *        20010110_meeting_minutes.html
+     */
+
+    public:
+
+        static bool cmpFxn (char c1, char c2)
+        {
+            int lc1 = toupper(static_cast<unsigned char>(c1));
+            int lc2 = toupper(static_cast<unsigned char>(c2));
+
+            if ( (lc1 < lc2) || (lc1 > lc2) ) {
+                return false;
+            }
+
+            return true;
+
+        }
+        struct _key_compare:
+            public
+            std::binary_function<std::string,std::string,bool> {
+
+                bool operator() (   const std::string& lhs,
+                                    const std::string& rhs ) const
+                {
+                    return std::lexicographical_compare( lhs.begin(),lhs.end(),
+                                                         rhs.begin(),rhs.end(),
+                                                         RpUnits::cmpFxn  );
+                }
+            };
+
+        // why are these functions friends...
+        // probably need to find a better way to let RpUnits
+        // use the RpDict and RpDictEntry fxns
+        friend class RpDict<std::string,RpUnits*,_key_compare>;
+        friend class RpDictEntry<std::string,RpUnits*,_key_compare>;
+        // users member fxns
+        std::string getUnits() const;
+        std::string getUnitsName(int flags=RPUNITS_ORIG_EXP) const;
+        std::string getSearchName() const;
+        double getExponent() const;
+        const RpUnits* getBasis() const;
+        RpUnits& setMetric(bool newVal);
+
+        // retrieve a units type.
+        std::string getType() const;
+
+        // retrieve the case insensitivity of this unit object
+        bool getCI() const;
+
+        // retrieve a list of compatible units.
+        std::list<std::string> getCompatible(double expMultiplier=1.0) const;
+
+
+        // convert from one RpUnits to another if the conversion is defined
+        double convert(         const RpUnits* toUnits,
+                                double val,
+                                int* result=NULL    ) const;
+        // convert from one RpUnits to another if the conversion is defined
+        void* convert(          const RpUnits* toUnits,
+                                void* val,
+                                int* result=NULL) const;
+        // convert from one RpUnits to another if the conversion is defined
+        // double convert(std::string, double val);
+        // convert from one RpUnits to another if the conversion is defined
+        std::string convert (   const RpUnits* toUnits,
+                                double val,
+                                int showUnits = RPUNITS_UNITS_OFF,
+                                int* result = NULL  ) const;
+
+        static std::string convert ( std::string val,
+                                     std::string toUnits,
+                                     int showUnits = RPUNITS_UNITS_OFF,
+                                     int* result = NULL );
+
+        // turn the current unit to the metric system
+        // this should only be used for units that are part of the
+        // metric system. doesnt deal with exponents, just prefixes
+        double makeBasis(double value, int* result = NULL) const;
+        const RpUnits & makeBasis(double* value, int* result = NULL) const;
+
+        static int makeMetric(RpUnits * basis);
+
+        // find a RpUnits object that should exist in RpUnitsTable
+        // returns 0 on success (object was found)
+        // returns !0 on failure (object not found)
+        static const RpUnits* find( std::string key,
+        RpDict<std::string,RpUnits*,_key_compare>::RpDictHint hint = NULL);
+
+        // validate is very similar to find, but it works better
+        // for seeing complex units can be interpreted.
+        // it validates that if the a certain units string is
+        // provided as a unit type, then all of the base components
+        // of that unit are available for conversions.
+        // returns 0 on success (units are valid)
+        // returns !0 on failure (units not valid)
+        static int validate(std::string& inUnits,
+                            std::string& type,
+                            std::list<std::string>* compatList=NULL);
+
+        // user calls define to add a RpUnits object or to add a relation rule
+        //
+        // add RpUnits Object
+        static RpUnits * define(const std::string units,
+                                const RpUnits* basis=NULL,
+                                const std::string type="",
+                                bool metric=false,
+                                bool caseInsensitive=RPUNITS_CASE_INSENSITIVE);
+
+        // add relation rule
+
+        static RpUnits * define(const RpUnits* from,
+                                const RpUnits* to,
+                                double (*convForwFxnPtr)(double),
+                                double (*convBackFxnPtr)(double));
+
+        static RpUnits * define(const RpUnits* from,
+                                const RpUnits* to,
+                                double (*convForwFxnPtr)(double,double),
+                                double (*convBackFxnPtr)(double,double));
+
+        static RpUnits * define(const RpUnits* from,
+                                const RpUnits* to,
+                                void* (*convForwFxnPtr)(void*, void*),
+                                void* convForwData,
+                                void* (*convBackFxnPtr)(void*, void*),
+                                void* convBackData);
+
+        static int incarnate (  const RpUnits* abstraction,
+                                const RpUnits* entity);
+
+        // populate the dictionary with a set of units specified by group
+        // if group equals........................then load................
+        //                    "all"           load all available units
+        //  RP_TYPE_ENERGY    "energy"        load units related to energy
+        //  RP_TYPE_EPOT      "electric_potential" load units related to electric potential
+        //  RP_TYPE_LENGTH    "length"        load units related to length
+        //  RP_TYPE_TEMP      "temperature"   load units related to temperature
+        //  RP_TYPE_TIME      "time"          load units related to time
+        //  RP_TYPE_VOLUME    "volume"        load units related to volume
+        //  RP_TYPE_ANGLE     "angle"         load units related to angles
+        //  RP_TYPE_MASS      "mass"          load units related to mass
+        //  RP_TYPE_PREFIX    "prefix"        load unit prefixes
+        //  RP_TYPE_PRESSURE  "pressure"      load units related to pressure
+        //  RP_TYPE_CONC      "concentration" load units related to concentration
+        //  RP_TYPE_FORCE     "force"         load units related to force
+        //  RP_TYPE_MAGNETIC  "magnetic"      load units related to magnetics
+        //  RP_TYPE_MISC      "misc"          load units related to everything else
+        //  RP_TYPE_POWER     "power"         load units related to power
+        //  (no other groups have been created)
+
+        static int addPresets (const std::string group);
+
+        // undefining a relation rule is probably not needed
+        // int undefine(); // delete a relation
+
+
+        friend int insert(std::string key,RpUnits* val);
+
+
+        // copy constructor
+        RpUnits (RpUnits &other)
+            : units    (other.units),
+              exponent (other.exponent),
+              basis    (other.basis),
+              type     (other.type),
+              metric   (other.metric),
+              ci       (other.ci),
+              convList (NULL)
+        {
+            convEntry* q = NULL;
+            convEntry* curr = NULL;
+
+            incarnationEntry* r = NULL;
+            incarnationEntry* rcurr = NULL;
+
+            dict = other.dict;
+
+            if (other.convList) {
+                q = other.convList;
+                convList = new convEntry (q->conv,NULL,NULL);
+                curr = convList;
+                while (q->next) {
+                    q = q->next;
+                    curr->next = new convEntry (q->conv,curr,NULL);
+                    curr = curr->next;
+                }
+            }
+
+            if (other.incarnationList) {
+                r = other.incarnationList;
+                incarnationList = new incarnationEntry (r->unit,NULL,NULL);
+                rcurr = incarnationList;
+                while (r->next) {
+                    r = r->next;
+                    rcurr->next = new incarnationEntry (r->unit,rcurr,NULL);
+                    rcurr = rcurr->next;
+                }
+            }
+
+        }
+
+        // copy assignment operator
+        RpUnits& operator= (const RpUnits& other) {
+
+            convEntry* q = NULL;
+            convEntry* curr = NULL;
+
+            incarnationEntry* r = NULL;
+            incarnationEntry* rcurr = NULL;
+
+            if ( this != &other ) {
+                delete convList;
+            }
+
+            dict = other.dict;
+            units = other.units;
+            exponent = other.exponent;
+            basis = other.basis;
+            type = other.type;
+            metric = other.metric;
+            ci = other.ci;
+
+            if (other.convList) {
+                q = other.convList;
+                convList = new convEntry (q->conv,NULL,NULL);
+                curr = convList;
+                while (q->next) {
+                    q = q->next;
+                    curr->next = new convEntry (q->conv,curr,NULL);
+                    curr = curr->next;
+                }
+            }
+
+            if (other.incarnationList) {
+                r = other.incarnationList;
+                incarnationList = new incarnationEntry (r->unit,NULL,NULL);
+                rcurr = incarnationList;
+                while (r->next) {
+                    r = r->next;
+                    rcurr->next = new incarnationEntry (r->unit,rcurr,NULL);
+                    rcurr = rcurr->next;
+                }
+            }
+
+            return *this;
+        }
+
+        // default destructor
+        //
+        ~RpUnits ()
+        {
+            // go to the type list and remove a variable by this name
+
+
+            // clean up dynamic memory
+
+            convEntry* p = convList;
+            convEntry* tmp = p;
+
+            incarnationEntry* r = incarnationList;
+            incarnationEntry* rtmp = r;
+
+            while (p != NULL) {
+                tmp = p;
+                p = p->next;
+                delete tmp;
+            }
+
+            while (p != NULL) {
+                rtmp = r;
+                r = r->next;
+                delete rtmp;
+            }
+        }
+
+    private:
+
+        // i hope to replace these vars with a small class representing a
+        // of a linked list of units. that way we can handle complex units.
+        // this will also require that we move the getUnits, getExponent, 
+        // and getBasis, makeBasis functionality into the smaller class,
+        // that represents each part of the units. we should keep getUnits,
+        // getBasis, and makeBasis in this class, but modify them to go
+        // through the linked list of units and combine the units back into
+        // what the caller expects to see.
+        // ie. cm2/Vms (mobility), will be split into the objects cm2, V, ms
+        // when getUnits is called, the user should see cm2/Vms again.
+        // for basis, possibly let the user choose a basis, and for makeBasis
+        // move through the linked list, only converting the metric elements.
+        //
+
+        std::string units;
+        double exponent;
+        const RpUnits* basis;
+        std::string type;
+
+        // tell if the unit can accept metric prefixes
+        bool metric;
+
+        // should this unit be inserted as a case insensitive unit?
+        bool ci;
+
+        // linked list of units this RpUnit can convert to
+        // its mutable because the connectConversion function takes in a
+        // const RpUnits* and attempts to change the convList variable
+        // within the RpUnits Object
+        mutable convEntry* convList;
+
+        // linked list of incarnation units for this RpUnit
+        // its mutable because the connectIncarnation function takes in a
+        // const RpUnits* and attempts to change the incarnationList variable
+        // within the RpUnits Object
+        mutable incarnationEntry* incarnationList;
+
+        // dictionary to store the units.
+        static RpDict<std::string,RpUnits*,_key_compare>* dict;
+
+        // create a units element
+        // class takes in three pieces of info
+        // 1) string describing the units
+        // 2) double describing the exponent
+        // 3) pointer to RpUnits object describing the basis 
+        //      of the units (the fundamental unit)
+        //
+
+        RpUnits (
+                    const std::string& units,
+                    double& exponent,
+                    const RpUnits* basis,
+                    const std::string type,
+                    bool metric,
+                    bool caseInsensitive
+                )
+            :   units           (units),
+                exponent        (exponent),
+                basis           (basis),
+                type            (type),
+                metric          (metric),
+                ci              (caseInsensitive),
+                convList        (NULL),
+                incarnationList (NULL)
+        {};
+
+        // insert new RpUnits object into RpUnitsTable
+        // returns 0 on success (object inserted or already exists)
+        // returns !0 on failure (object cannot be inserted or dne)
+        // int RpUnits::insert(std::string key) const;
+
+        typedef std::list<LIST_TEMPLATE> RpUnitsList;
+        typedef double (*convFxnPtrD) (double);
+        typedef std::list<convFxnPtrD> convertList;
+        typedef RpUnitsList::iterator RpUnitsListIter;
+
+        // void newExponent                (double newExponent) {exponent = newExponent;};
+
+        static int      units2list          ( const std::string& inUnits,
+                                              RpUnitsList& outList,
+                                              std::string& type         );
+        static int      list2units          ( RpUnitsList& inList,
+                                              std::string& outUnitsStr  );
+        static int      grabExponent        ( const std::string& inStr,
+                                              double* exp               );
+        static int      grabUnitString      ( const std::string& inStr  );
+        static int      grabUnits           ( std::string inStr,
+                                              int* offset,
+                                              const RpUnits** unit,
+                                              const RpUnits** prefix    );
+        static int      checkMetricPrefix   ( std::string inStr,
+                                              int* offset,
+                                              const RpUnits** prefix    );
+        static int      negateListExponents ( RpUnitsList& unitsList    );
+        static int      printList           ( RpUnitsList& unitsList    );
+
+        static int compareListEntryBasis    ( RpUnitsList& fromList,
+                                              RpUnitsListIter& fromIter,
+                                              RpUnitsListIter& toIter   );
+
+        static int compareListEntrySearch   ( RpUnitsList& fromList,
+                                              RpUnitsListIter& fromIter,
+                                              RpUnitsListIter& toIter   );
+
+        void            connectConversion   ( conversion* conv      ) const;
+        void            connectIncarnation  ( const RpUnits* unit   ) const;
+
+        // return the conversion object that will convert
+        // from this RpUnits to the proovided toUnits object
+        // if the conversion is defined
+        int             getConvertFxnList   ( const RpUnits* toUnits,
+                                              convertList& cList    ) const;
+        static int      applyConversion     ( double* val,
+                                              convertList& cList    );
+        static int      combineLists        ( convertList& l1,
+                                              convertList& l2       );
+        static int      printList           ( convertList& l1       );
+
+};
+
+/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
+
+int list2str (std::list<std::string>& inList, std::string& outString);
+
+int unitSlice (std::string inStr, std::string& outUnits, double& outVal);
+
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RpUNITS_H
Index: /tags/1.6.0/src/core/RpUnitsCInterface.cc
===================================================================
--- /tags/1.6.0/src/core/RpUnitsCInterface.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpUnitsCInterface.cc	(revision 6168)
@@ -0,0 +1,159 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: C Rappture Units Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpUnits.h"
+#include "RpUnitsCInterface.h"
+
+const RpUnits*
+rpDefineUnit(const char* unitSymbol, const RpUnits* basis) {
+
+    return RpUnits::define(unitSymbol, basis);
+}
+
+const RpUnits*
+rpDefineConv(  const RpUnits* fromUnit,
+               const RpUnits* toUnit,
+               double (*convForwFxnPtr)(double),
+               double (*convBackFxnPtr)(double)    ) {
+
+    return RpUnits::define(fromUnit,toUnit,convForwFxnPtr,convBackFxnPtr);
+}
+
+const RpUnits*
+rpFind ( const char* key ) {
+
+    return RpUnits::find(key);
+}
+
+const char*
+rpGetUnits ( const RpUnits* unit ) {
+
+    static std::string retVal;
+    retVal = unit->getUnits();
+    return retVal.c_str();
+}
+
+const char*
+rpGetUnitsName ( const RpUnits* unit ) {
+
+    static std::string retVal;
+    retVal = unit->getUnitsName();
+    return retVal.c_str();
+}
+
+double
+rpGetExponent ( const RpUnits* unit ) {
+
+    return unit->getExponent();
+}
+
+const RpUnits*
+rpGetBasis ( const RpUnits* unit ) {
+
+    return unit->getBasis();
+}
+
+const char*
+rpConvert (   const char* fromVal,
+               const char* toUnitsName,
+               int showUnits,
+               int* result ) {
+
+    static std::string retVal;
+    const char *empty = "";
+
+    if (fromVal == NULL) {
+        return retVal.c_str();
+    }
+
+    if (toUnitsName == NULL) {
+        toUnitsName = empty;
+    }
+
+    retVal = RpUnits::convert(fromVal,toUnitsName,showUnits,result);
+    return retVal.c_str();
+}
+
+const char*
+rpConvertStr (   const char* fromVal,
+                  const char* toUnitsName,
+                  int showUnits,
+                  int* result ) {
+
+    static std::string retVal;
+    const char *empty = "";
+
+    if (fromVal == NULL) {
+        return retVal.c_str();
+    }
+
+    if (toUnitsName == NULL) {
+        toUnitsName = empty;
+    }
+
+    retVal = RpUnits::convert(fromVal,toUnitsName,showUnits,result);
+    return retVal.c_str();
+}
+
+const char*
+rpConvert_ObjStr ( const RpUnits* fromUnits,
+                   const RpUnits* toUnits,
+                   double val,
+                   int showUnits,
+                   int* result ) {
+
+    static std::string retVal;
+    retVal = fromUnits->convert(toUnits,val,showUnits,result);
+    return retVal.c_str();
+}
+
+double
+rpConvertDbl (    const char* fromVal,
+                  const char* toUnitsName,
+                  int* result ) {
+
+    std::string convStr;
+    double retVal = 0.0;
+    const char *empty = "";
+
+    if (fromVal == NULL) {
+        return retVal;
+    }
+
+    if (toUnitsName == NULL) {
+        toUnitsName = empty;
+    }
+
+    convStr = RpUnits::convert(fromVal,toUnitsName,0,result);
+
+    if (!convStr.empty()) {
+        retVal = atof(convStr.c_str());
+    }
+
+    return retVal;
+}
+
+double
+rpConvert_ObjDbl (   const RpUnits* fromUnits,
+                     const RpUnits* toUnits,
+                     double val,
+                     int* result ) {
+
+    return fromUnits->convert(toUnits,val,result);
+}
+
+int rpAddPresets ( const char* presetName ) {
+
+    return RpUnits::addPresets(presetName);
+}
+
Index: /tags/1.6.0/src/core/RpUnitsCInterface.h
===================================================================
--- /tags/1.6.0/src/core/RpUnitsCInterface.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpUnitsCInterface.h	(revision 6168)
@@ -0,0 +1,77 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: C Rappture Units Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RpUNITS_C_H
+#define _RpUNITS_C_H
+
+#ifdef __cplusplus
+    extern "C" {
+#endif // ifdef __cplusplus
+
+    typedef struct RpUnits RpUnits;
+
+    // unit definition functions
+    const RpUnits* rpDefineUnit  ( const char* unitSymbol,
+                                   const RpUnits* basis );
+
+    // conversion definition functions
+    const RpUnits* rpDefineConv  ( const RpUnits* fromUnit,
+                                   const RpUnits* toUnit,
+                                   double (*convForwFxnPtr)(double),
+                                   double (*convBackFxnPtr)(double)    );
+
+    // unit attribute access functions
+    const char* rpGetUnits       ( const RpUnits* unit );
+
+    const char* rpGetUnitsName   ( const RpUnits* unit );
+
+    double rpGetExponent         ( const RpUnits* unit );
+
+    const RpUnits* rpGetBasis    ( const RpUnits* unit);
+
+    const RpUnits* rpFind        ( const char* unitSymbol);
+
+    // convert functions
+
+    const char* rpConvert        ( const char* fromVal,
+                                   const char* toUnitsName,
+                                   int showUnits,
+                                   int* result );
+
+    const char* rpConvertStr     ( const char* fromVal,
+                                   const char* toUnitsName,
+                                   int showUnits,
+                                   int* result );
+
+    const char* rpConvert_ObjStr ( const RpUnits* fromUnits,
+                                   const RpUnits* toUnits,
+                                   double val,
+                                   int showUnits,
+                                   int* result );
+
+    double rpConvertDbl          ( const char* fromVal,
+                                   const char* toUnitsName,
+                                   int* result );
+
+    double rpConvert_ObjDbl      ( const RpUnits* fromUnits,
+                                   const RpUnits* toUnits,
+                                   double val,
+                                   int* result );
+
+    int rpAddPresets ( const char* presetName );
+
+#ifdef __cplusplus
+    }
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RpUNITS_C_H
Index: /tags/1.6.0/src/core/RpUnitsFInterface.cc
===================================================================
--- /tags/1.6.0/src/core/RpUnitsFInterface.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpUnitsFInterface.cc	(revision 6168)
@@ -0,0 +1,238 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Units Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpUnits.h"
+#include "string.h"
+#include "RpUnitsFInterface.h"
+#include "RpUnitsFStubs.c"
+#include "RpBindingsDict.h"
+
+extern "C" int
+rp_define_unit( char* unitName,
+                    int* basisName,
+                    int unitName_len    ) {
+
+    int result = -1;
+    const RpUnits* newUnit = NULL;
+    const RpUnits* basis = NULL;
+    std::string basisStrName = "";
+    std::string newUnitName = "";
+    char* inText = NULL;
+
+    inText = null_terminate(unitName,unitName_len);
+
+    if (basisName && *basisName) {
+	long key = (long)*basisName;
+        basisStrName = ObjDictUnits.find(key);
+
+        if (basisStrName != "") {
+            basis = RpUnits::find(basisStrName);
+        }
+    }
+
+    newUnit = RpUnits::define(inText, basis);
+
+    if (newUnit) {
+        result = storeObject_UnitsStr(newUnit->getUnitsName());
+    }
+
+    if (inText) {
+        free(inText);
+    }
+
+    return result;
+}
+
+
+int
+rp_find(char* searchName, int searchName_len)
+{
+
+    int result = -1;
+    char* inText = NULL;
+
+    inText = null_terminate(searchName,searchName_len);
+
+    const RpUnits* searchUnit = RpUnits::find(inText);
+
+    if (searchUnit) {
+        result = storeObject_UnitsStr(searchUnit->getUnitsName());
+    }
+
+    if (inText) {
+        free(inText);
+    }
+
+    return result;
+}
+
+int
+rp_get_units(int* unitRefVal, char* retText, int retText_len)
+{
+    const RpUnits* unitObj = NULL;
+    std::string unitNameText = "";
+    int result = 1;
+
+    if (unitRefVal && *unitRefVal) {
+        unitObj = getObject_UnitsStr(*unitRefVal);
+        if (unitObj) {
+            unitNameText = unitObj->getUnits();
+            fortranify(unitNameText.c_str(), retText, retText_len);
+            result = 0;
+        }
+    }
+
+    return result;
+}
+
+int
+rp_get_units_name(int* unitRefVal, char* retText, int retText_len)
+{
+    const RpUnits* unitObj = NULL;
+    std::string unitNameText = "";
+    int result = 1;
+
+    if (unitRefVal && *unitRefVal) {
+        unitObj = getObject_UnitsStr(*unitRefVal);
+        if (unitObj) {
+            unitNameText = unitObj->getUnitsName();
+            fortranify(unitNameText.c_str(), retText, retText_len);
+            result = 0;
+        }
+    }
+
+    return result;
+}
+
+int
+rp_get_exponent(int* unitRefVal, double* retExponent)
+{
+    const RpUnits* unitObj = NULL;
+    int result = 1;
+
+    if (unitRefVal && *unitRefVal) {
+        unitObj = getObject_UnitsStr(*unitRefVal);
+        if (unitObj) {
+            *retExponent = unitObj->getExponent();
+            result = 0;
+        }
+    }
+
+    return result;
+}
+
+int
+rp_get_basis(int* unitRefVal)
+{
+    const RpUnits* unitObj = NULL;
+    const RpUnits* basisObj = NULL;
+    int result = -1;
+
+    if (unitRefVal && *unitRefVal) {
+        unitObj = getObject_UnitsStr(*unitRefVal);
+
+        if (unitObj) {
+            basisObj = unitObj->getBasis();
+
+            if (basisObj) {
+                result = storeObject_UnitsStr(basisObj->getUnitsName());
+            }
+        }
+    }
+
+    return result;
+}
+
+int
+rp_units_convert_dbl (  char* fromVal,
+                        char* toUnitsName,
+                        double* convResult,
+                        int fromVal_len,
+                        int toUnitsName_len ) {
+
+    char* inFromVal = NULL;
+    char* inToUnitsName = NULL;
+    int result = -1;
+    int showUnits = 0;
+    std::string convStr = "";
+
+    // prepare string for c
+    inFromVal = null_terminate(fromVal,fromVal_len);
+    inToUnitsName = null_terminate(toUnitsName,toUnitsName_len);
+
+    if (inFromVal && inToUnitsName) {
+        // the call to RpUnits::convert() populates the result flag
+        convStr = RpUnits::convert(inFromVal,inToUnitsName,showUnits,&result);
+
+        if (!convStr.empty()) {
+            *convResult = atof(convStr.c_str());
+        }
+    }
+
+    // clean up memory
+    if (inFromVal) {
+        free(inFromVal);
+        inFromVal = NULL;
+    }
+
+    if (inToUnitsName) {
+        free(inToUnitsName);
+        inToUnitsName = NULL;
+    }
+
+    return result;
+}
+
+int
+rp_units_convert_str (      char* fromVal,
+                            char* toUnitsName,
+                            char* retText,
+                            int fromVal_len,
+                            int toUnitsName_len,
+                            int retText_len     ) {
+
+    char* inFromVal = NULL;
+    char* inToUnitsName = NULL;
+    std::string convStr = "";
+    int showUnits = 1;
+    int result = -1;
+
+    // prepare string for c
+    inFromVal = null_terminate(fromVal,fromVal_len);
+    inToUnitsName = null_terminate(toUnitsName,toUnitsName_len);
+
+    if (inFromVal && inToUnitsName) {
+
+        // do the conversion
+        convStr = RpUnits::convert(inFromVal,inToUnitsName,showUnits,&result);
+
+        if (!convStr.empty()) {
+            // prepare string for fortran
+            fortranify(convStr.c_str(), retText, retText_len);
+        }
+    }
+
+    // clean up out memory
+    if (inFromVal) {
+        free(inFromVal);
+        inFromVal = NULL;
+    }
+
+    if (inToUnitsName) {
+        free(inToUnitsName);
+        inToUnitsName = NULL;
+    }
+
+    // return the same result from the RpUnits::convert call.
+    return result;
+}
Index: /tags/1.6.0/src/core/RpUnitsFInterface.h
===================================================================
--- /tags/1.6.0/src/core/RpUnitsFInterface.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpUnitsFInterface.h	(revision 6168)
@@ -0,0 +1,53 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Units Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RpUNITS_F_H
+#define _RpUNITS_F_H
+
+#ifdef __cplusplus
+    #include "RpFortranCommon.h"
+    #include "RpUnitsFStubs.h"
+
+    extern "C" {
+#endif
+
+int rp_define_unit(char* unitName, int* basisName, int unitName_len);
+
+int rp_find(char* searchName, int searchName_len);
+
+int rp_get_units(int* unitRefVal, char* retText, int retText_len);
+
+int rp_get_units_name(int* unitRefVal, char* retText, int retText_len);
+
+int rp_get_exponent(int* unitRefVal, double* retExponent);
+
+int rp_get_basis(int* unitRefVal);
+
+int rp_units_convert_dbl (  char* fromVal,
+                            char* toUnitsName,
+                            double* convResult,
+                            int fromVal_len,
+                            int toUnitsName_len );
+
+int rp_units_convert_str (  char* fromVal,
+                            char* toUnitsName,
+                            char* retText,
+                            int fromVal_len,
+                            int toUnitsName_len,
+                            int retText_len     );
+
+#ifdef __cplusplus
+    }
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RpUNITS_F_H
Index: /tags/1.6.0/src/core/RpUnitsFStubs.c
===================================================================
--- /tags/1.6.0/src/core/RpUnitsFStubs.c	(revision 6168)
+++ /tags/1.6.0/src/core/RpUnitsFStubs.c	(revision 6168)
@@ -0,0 +1,184 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Units Stub Function Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RpUNITS_F_STUBS_SRC
+#define _RpUNITS_F_STUBS_SRC
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int
+rp_define_unit_ (char* unitName, int* basisName, int unitName_len) {
+    return rp_define_unit(unitName,basisName,unitName_len);
+}
+
+int
+rp_define_unit__ (char* unitName, int* basisName, int unitName_len) {
+    return rp_define_unit(unitName,basisName,unitName_len);
+}
+
+int
+RP_DEFINE_UNIT (char* unitName, int* basisName, int unitName_len) {
+    return rp_define_unit(unitName,basisName,unitName_len);
+}
+
+int
+rp_find_ (char* searchName, int searchName_len) {
+    return rp_find(searchName,searchName_len);
+}
+
+int
+rp_find__ (char* searchName, int searchName_len) {
+    return rp_find(searchName,searchName_len);
+}
+
+int
+RP_FIND (char* searchName, int searchName_len) {
+    return rp_find(searchName,searchName_len);
+}
+
+int
+rp_get_units_ (int* unitRefVal, char* retText, int retText_len) {
+    return rp_get_units(unitRefVal,retText,retText_len);
+}
+
+int
+rp_get_units__ (int* unitRefVal, char* retText, int retText_len) {
+    return rp_get_units(unitRefVal,retText,retText_len);
+}
+
+int
+RP_GET_UNITS (int* unitRefVal, char* retText, int retText_len) {
+    return rp_get_units(unitRefVal,retText,retText_len);
+}
+
+int
+rp_get_units_name_     (int* unitRefVal, char* retText, int retText_len) {
+    return rp_get_units_name(unitRefVal,retText,retText_len);
+}
+
+int
+rp_get_units_name__    (int* unitRefVal, char* retText, int retText_len) {
+    return rp_get_units_name(unitRefVal,retText,retText_len);
+}
+
+int
+RP_GET_UNITS_NAME      (int* unitRefVal, char* retText, int retText_len) {
+    return rp_get_units_name(unitRefVal,retText,retText_len);
+}
+
+int
+rp_get_exponent_       (int* unitRefVal, double* retExponent) {
+    return rp_get_exponent(unitRefVal,retExponent);
+}
+
+int
+rp_get_exponent__      (int* unitRefVal, double* retExponent) {
+    return rp_get_exponent(unitRefVal,retExponent);
+}
+
+int
+RP_GET_EXPONENT        (int* unitRefVal, double* retExponent) {
+    return rp_get_exponent(unitRefVal,retExponent);
+}
+
+int
+rp_get_basis_          (int* unitRefVal) {
+    return rp_get_basis(unitRefVal);
+}
+
+int
+rp_get_basis__         (int* unitRefVal) {
+    return rp_get_basis(unitRefVal);
+}
+
+int
+RP_GET_BASIS           (int* unitRefVal) {
+    return rp_get_basis(unitRefVal);
+}
+
+int
+rp_units_convert_dbl_  (char* fromVal,
+                            char* toUnitsName,
+                            double* convResult,
+                            int fromVal_len,
+                            int toUnitsName_len ) {
+
+    return rp_units_convert_dbl( fromVal, toUnitsName, convResult,
+                                 fromVal_len, toUnitsName_len);
+}
+
+int
+rp_units_convert_dbl__ (char* fromVal,
+                            char* toUnitsName,
+                            double* convResult,
+                            int fromVal_len,
+                            int toUnitsName_len ) {
+
+    return rp_units_convert_dbl( fromVal, toUnitsName, convResult,
+                                 fromVal_len, toUnitsName_len);
+}
+
+int
+RP_UNITS_CONVERT_DBL   (char* fromVal,
+                            char* toUnitsName,
+                            double* convResult,
+                            int fromVal_len,
+                            int toUnitsName_len ) {
+
+    return rp_units_convert_dbl( fromVal, toUnitsName, convResult,
+                                 fromVal_len, toUnitsName_len);
+}
+
+int
+rp_units_convert_str_  (char* fromVal,
+                            char* toUnitsName,
+                            char* retText,
+                            int fromVal_len,
+                            int toUnitsName_len,
+                            int retText_len     ) {
+
+    return rp_units_convert_str( fromVal,toUnitsName, retText, fromVal_len,
+                                 toUnitsName_len, retText_len);
+}
+
+int
+rp_units_convert_str__ (char* fromVal,
+                            char* toUnitsName,
+                            char* retText,
+                            int fromVal_len,
+                            int toUnitsName_len,
+                            int retText_len     ) {
+
+    return rp_units_convert_str( fromVal,toUnitsName, retText, fromVal_len,
+                                 toUnitsName_len, retText_len);
+}
+
+int
+RP_UNITS_CONVERT_STR   (char* fromVal,
+                            char* toUnitsName,
+                            char* retText,
+                            int fromVal_len,
+                            int toUnitsName_len,
+                            int retText_len     ) {
+
+    return rp_units_convert_str( fromVal,toUnitsName, retText, fromVal_len,
+                                 toUnitsName_len, retText_len);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /tags/1.6.0/src/core/RpUnitsFStubs.h
===================================================================
--- /tags/1.6.0/src/core/RpUnitsFStubs.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpUnitsFStubs.h	(revision 6168)
@@ -0,0 +1,84 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Units Stub Function Headers
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RpUNITS_F_STUBS_H
+#define _RpUNITS_F_STUBS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int rp_define_unit_        (char* unitName, int* basisName, int unitName_len);
+int rp_define_unit__       (char* unitName, int* basisName, int unitName_len);
+int RP_DEFINE_UNIT         (char* unitName, int* basisName, int unitName_len);
+
+int rp_find_               (char* searchName, int searchName_len);
+int rp_find__              (char* searchName, int searchName_len);
+int RP_FIND                (char* searchName, int searchName_len);
+
+int rp_get_units_          (int* unitRefVal, char* retText, int retText_len);
+int rp_get_units__         (int* unitRefVal, char* retText, int retText_len);
+int RP_GET_UNITS           (int* unitRefVal, char* retText, int retText_len);
+
+int rp_get_units_name_     (int* unitRefVal, char* retText, int retText_len);
+int rp_get_units_name__    (int* unitRefVal, char* retText, int retText_len);
+int RP_GET_UNITS_NAME      (int* unitRefVal, char* retText, int retText_len);
+
+int rp_get_exponent_       (int* unitRefVal, double* retExponent);
+int rp_get_exponent__      (int* unitRefVal, double* retExponent);
+int RP_GET_EXPONENT        (int* unitRefVal, double* retExponent);
+
+int rp_get_basis_          (int* unitRefVal);
+int rp_get_basis__         (int* unitRefVal);
+int RP_GET_BASIS           (int* unitRefVal);
+
+int rp_units_convert_dbl_  (char* fromVal,
+                            char* toUnitsName,
+                            double* convResult,
+                            int fromVal_len,
+                            int toUnitsName_len );
+int rp_units_convert_dbl__ (char* fromVal,
+                            char* toUnitsName,
+                            double* convResult,
+                            int fromVal_len,
+                            int toUnitsName_len );
+int RP_UNITS_CONVERT_DBL   (char* fromVal,
+                            char* toUnitsName,
+                            double* convResult,
+                            int fromVal_len,
+                            int toUnitsName_len );
+
+int rp_units_convert_str_  (char* fromVal,
+                            char* toUnitsName,
+                            char* retText,
+                            int fromVal_len,
+                            int toUnitsName_len,
+                            int retText_len     );
+int rp_units_convert_str__ (char* fromVal,
+                            char* toUnitsName,
+                            char* retText,
+                            int fromVal_len,
+                            int toUnitsName_len,
+                            int retText_len     );
+int RP_UNITS_CONVERT_STR   (char* fromVal,
+                            char* toUnitsName,
+                            char* retText,
+                            int fromVal_len,
+                            int toUnitsName_len,
+                            int retText_len     );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: /tags/1.6.0/src/core/RpUnitsStd.cc
===================================================================
--- /tags/1.6.0/src/core/RpUnitsStd.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpUnitsStd.cc	(revision 6168)
@@ -0,0 +1,596 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <RpUnitsStd.h>
+#include <math.h>
+
+double invert (double inVal)
+{
+    return (1.0/inVal);
+}
+
+/****************************************
+ * METRIC CONVERSIONS
+ ****************************************/
+
+double deci2base (double deci)
+{
+   return deci*1e-1;
+}
+
+double centi2base (double centi)
+{
+   return centi*1e-2;
+}
+
+double milli2base (double milli)
+{
+    return milli*1e-3;
+}
+
+double micro2base (double micro)
+{
+    return micro*1e-6;
+}
+
+double nano2base (double nano)
+{
+    return nano*1e-9;
+}
+
+double pico2base (double pico)
+{
+    return pico*1e-12;
+}
+
+double femto2base (double femto)
+{
+    return femto*1e-15;
+}
+
+double atto2base (double atto)
+{
+    return atto*1e-18;
+}
+
+double deca2base (double deca)
+{
+    return deca*1e1;
+}
+
+double hecto2base (double hecto)
+{
+    return hecto*1e2;
+}
+
+double kilo2base (double kilo)
+{
+    return kilo*1e3;
+}
+
+double mega2base (double mega)
+{
+    return mega*1e6;
+}
+
+double giga2base (double giga)
+{
+    return giga*1e9;
+}
+
+double tera2base (double tera)
+{
+    return tera*1e12;
+}
+
+double peta2base (double peta)
+{
+    return peta*1e15;
+}
+
+double exa2base (double exa)
+{
+    return exa*1e18;
+}
+
+double base2deci (double base)
+{
+    return base*1e1;
+}
+
+double base2centi (double base)
+{
+    return base*1e2;
+}
+
+double base2milli (double base)
+{
+    return base*1e3;
+}
+
+double base2micro (double base)
+{
+    return base*1e6;
+}
+
+double base2nano (double base)
+{
+    return base*1e9;
+}
+
+double base2pico (double base)
+{
+    return base*1e12;
+}
+
+double base2femto (double base)
+{
+    return base*1e15;
+}
+
+double base2atto (double base)
+{
+    return base*1e18;
+}
+
+double base2deca (double base)
+{
+    return base*1e-1;
+}
+
+double base2hecto (double base)
+{
+    return base*1e-2;
+}
+
+double base2kilo (double base)
+{
+    return base*1e-3;
+}
+
+double base2mega (double base)
+{
+    return base*1e-6;
+}
+
+double base2giga (double base)
+{
+    return base*1e-9;
+}
+
+double base2tera (double base)
+{
+    return base*1e-12;
+}
+
+double base2peta (double base)
+{
+    return base*1e-15;
+}
+
+double base2exa (double base)
+{
+    return base*1e-18;
+}
+
+/****************************************
+ * METRIC TO NON-METRIC CONVERSIONS
+ * LENGTH CONVERSIONS
+ * http://www.nodc.noaa.gov/dsdt/ucg/
+ ****************************************/
+
+double angstrom2meter (double angstrom)
+{
+    return angstrom*(1.0e-10);
+}
+
+double meter2angstrom (double meter)
+{
+    return meter*(1.0e10);
+}
+
+double bohr2meter (double bohr)
+{
+    return bohr*(52.9177e-12);
+}
+
+double meter2bohr (double meter)
+{
+    return meter*(52.9177e12);
+}
+
+double meter2inch (double meter)
+{
+    return meter*(39.37008);
+}
+
+double inch2meter (double inch)
+{
+    return (inch/(39.37008));
+}
+
+double inch2feet (double inch)
+{
+    return (inch/(12.00));
+}
+
+double feet2inch (double ft)
+{
+    return (ft*(12.00));
+}
+
+double inch2yard (double inch)
+{
+    return (inch/(36.00));
+}
+
+double yard2inch (double yd)
+{
+    return (yd*(36.00));
+}
+
+double inch2mile (double inch)
+{
+    return (inch/(63360));
+}
+
+double mile2inch (double mi)
+{
+    return (mi*(63360));
+}
+
+/****************************************
+ * TEMPERATURE CONVERSIONS
+ ****************************************/
+
+double fahrenheit2centigrade (double F)
+{
+    return ((F-32.0)/(9.0/5.0));
+}
+
+double centigrade2fahrenheit (double C)
+{
+    return ((C*(9.0/5.0))+32.0);
+}
+
+double centigrade2kelvin (double C)
+{
+    return (C+273.15);
+}
+
+double kelvin2centigrade (double K)
+{
+    return (K-273.15);
+}
+
+double rankine2kelvin (double R)
+{
+    return ((5.0/9.0)*R);
+}
+
+double kelvin2rankine (double K)
+{
+    return ((9.0/5.0)*K);
+}
+
+double fahrenheit2kelvin (double F)
+{
+    return ((F+459.67)*(5.0/9.0));
+}
+
+double kelvin2fahrenheit (double K)
+{
+    return (((9.0/5.0)*K)-459.67);
+}
+
+double fahrenheit2rankine (double F)
+{
+    return (F+459.67);
+}
+
+double rankine2fahrenheit (double R)
+{
+    return (R-459.67);
+}
+
+double rankine2celcius (double R)
+{
+    return ((R*(5.0/9.0))-273.15);
+}
+
+double celcius2rankine (double C)
+{
+    return ((C + 273.15)*(9.0/5.0));
+}
+
+/****************************************
+ * ENERGY CONVERSIONS
+ ****************************************/
+
+double electronVolt2joule (double eV)
+{
+    return (eV*1.602177e-19);
+}
+
+double joule2electronVolt (double J)
+{
+    return (J/1.602177e-19);
+}
+
+/****************************************
+ * MISC VOLUME CONVERSIONS
+ ****************************************/
+
+double cubicMeter2usGallon (double m3)
+{
+    return (m3*264.1721);
+}
+
+double usGallon2cubicMeter (double gal)
+{
+    return (gal/264.1721);
+}
+
+double cubicFeet2usGallon (double ft3)
+{
+    return (ft3*7.48051);
+}
+
+double usGallon2cubicFeet (double gal)
+{
+    return (gal/7.48051);
+}
+
+double cubicMeter2liter (double m3)
+{
+    return (m3*1e3);
+}
+
+double liter2cubicMeter (double L)
+{
+    return (L*1e-3);
+}
+
+/****************************************
+ * ANGLE CONVERSIONS
+ * http://www.metrication.com/
+ ****************************************/
+
+double rad2deg (double rad)
+{
+    return (rad*(180.00/M_PI));
+}
+
+double deg2rad (double deg)
+{
+    return (deg*(M_PI/180.00));
+}
+
+double rad2grad (double rad)
+{
+    return (rad*(200.00/M_PI));
+}
+
+double grad2rad (double grad)
+{
+    return (grad*(M_PI/200.00));
+}
+
+double deg2grad (double deg)
+{
+    return (deg*(10.00/9.00));
+}
+
+double grad2deg (double grad)
+{
+    return (grad*(9.00/10.00));
+}
+
+/****************************************
+ * TIME CONVERSIONS
+ ****************************************/
+
+double sec2min (double sec)
+{
+    return (sec/60.00);
+}
+
+double min2sec (double min)
+{
+    return (min*60.00);
+}
+
+double sec2hour (double sec)
+{
+    return (sec/3600.00);
+}
+
+double hour2sec (double hour)
+{
+    return (hour*3600.00);
+}
+
+double sec2day (double sec)
+{
+    return (sec/86400.00);
+}
+
+double day2sec (double day)
+{
+    return (day*86400.00);
+}
+
+/****************************************
+ * PRESSURE CONVERSIONS
+ * http://www.ilpi.com/msds/ref/pressureunits.html
+ * http://en.wikipedia.org/wiki/Bar_%28unit%29
+ ****************************************/
+
+double bar2Pa (double bar)
+{
+    return (bar*100000.00);
+}
+
+double Pa2bar (double Pa)
+{
+    return (Pa/100000.00);
+}
+
+double bar2atm (double bar)
+{
+    return (bar*0.98692);
+}
+
+double atm2bar (double atm)
+{
+    return (atm/0.98692);
+}
+
+double bar2torr (double bar)
+{
+    return (bar*750.06);
+}
+
+double torr2bar (double torr)
+{
+    return (torr/750.06);
+}
+
+double bar2psi (double bar)
+{
+    return (bar*14.504);
+}
+
+double psi2bar (double psi)
+{
+    return (psi*0.0689476);
+}
+
+double Pa2atm (double Pa)
+{
+    return (Pa*9.8692e-6);
+}
+
+double atm2Pa (double atm)
+{
+    // need to check this conversion
+    // tests fail
+    return (atm*101325.024);
+}
+
+double Pa2torr (double Pa)
+{
+    return (Pa*7.5006e-3);
+}
+
+double torr2Pa (double torr)
+{
+    return (torr/7.5006e-3);
+}
+
+double Pa2psi (double Pa)
+{
+    return (Pa*145.04e-6);
+}
+
+double psi2Pa (double psi)
+{
+    // need to check this conversion
+    // test fails because of truncation
+    return (psi*6894.7625831);
+}
+
+double torr2atm (double torr)
+{
+    return (torr*1.3158e-3);
+}
+
+double atm2torr (double atm)
+{
+    return (atm*760);
+}
+
+double torr2psi (double torr)
+{
+    return (torr*19.337e-3);
+}
+
+double psi2torr (double psi)
+{
+    return (psi*51.71496);
+}
+
+double torr2mmHg (double torr)
+{
+    return (torr);
+}
+
+double mmHg2torr (double mmHg)
+{
+    return (mmHg);
+}
+
+double psi2atm (double psi)
+{
+    return (psi*68.046e-3);
+}
+
+double atm2psi (double atm)
+{
+    return (atm*14.696);
+}
+
+/****************************************
+ * CONCENTRATION CONVERSIONS
+ * http://en.wikipedia.org/wiki/PH
+ ****************************************/
+
+double pH2pOH (double pH)
+{
+    // This formula is valid exactly for
+    // temperature = 298.15 K (25 °C) only,
+    // but is acceptable for most lab calculations
+    return (14.00 - pH);
+}
+
+double pOH2pH (double pOH)
+{
+    // This formula is valid exactly for
+    // temperature = 298.15 K (25 °C) only,
+    // but is acceptable for most lab calculations
+    return (14.00 - pOH);
+}
+
+/****************************************
+ * MAGNETIC CONVERSIONS
+ * http://en.wikipedia.org/wiki/Tesla_(unit)
+ * http://en.wikipedia.org/wiki/Gauss_(unit)
+ * http://en.wikipedia.org/wiki/Maxwell_(unit)
+ * http://en.wikipedia.org/wiki/Weber_(unit)
+ ****************************************/
+
+double tesla2gauss (double tesla)
+{
+    return (tesla*1e4);
+}
+
+double gauss2tesla (double gauss)
+{
+    return (gauss*1e-4);
+}
+
+double maxwell2weber (double maxwell)
+{
+    return (maxwell*1e-8);
+}
+
+double weber2maxwell (double weber)
+{
+    return (weber*1e8);
+}
+
Index: /tags/1.6.0/src/core/RpUnitsStd.h
===================================================================
--- /tags/1.6.0/src/core/RpUnitsStd.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpUnitsStd.h	(revision 6168)
@@ -0,0 +1,157 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double invert (double inVal);
+
+double deci2base (double deci);
+double centi2base (double centi);
+double milli2base (double milli);
+double micro2base (double micro);
+double nano2base (double nano);
+double pico2base (double pico);
+double femto2base (double femto);
+double atto2base (double atto);
+
+double deca2base (double deca);
+double hecto2base (double hecto);
+double kilo2base (double kilo);
+double mega2base (double mega);
+double giga2base (double giga);
+double tera2base (double tera);
+double peta2base (double peta);
+double exa2base (double exa);
+
+
+
+double base2deci (double base);
+double base2centi (double base);
+double base2milli (double base);
+double base2micro (double base);
+double base2nano (double base);
+double base2pico (double base);
+double base2femto (double base);
+double base2atto (double base);
+
+double base2deca (double base);
+double base2hecto (double base);
+double base2kilo (double base);
+double base2mega (double base);
+double base2giga (double base);
+double base2tera (double base);
+double base2peta (double base);
+double base2exa (double base);
+
+
+
+double angstrom2meter (double angstrom);
+double meter2angstrom (double meter);
+double bohr2meter (double bohr);
+double meter2bohr (double meter);
+double meter2inch (double meter);
+double inch2meter (double inch);
+double inch2feet (double inch);
+double feet2inch (double ft);
+double inch2yard (double inch);
+double yard2inch (double yd);
+double inch2mile (double inch);
+double mile2inch (double yd);
+
+
+
+
+double fahrenheit2centigrade (double F);
+double centigrade2fahrenheit (double C);
+double centigrade2kelvin (double C);
+double kelvin2centigrade (double K);
+double rankine2kelvin (double R);
+double kelvin2rankine (double K);
+double fahrenheit2kelvin (double F);
+double kelvin2fahrenheit (double K);
+double fahrenheit2rankine (double F);
+double rankine2fahrenheit (double R);
+double rankine2celcius (double R);
+double celcius2rankine (double C);
+
+
+
+double electronVolt2joule (double eV);
+double joule2electronVolt (double J);
+
+
+
+
+double cubicMeter2usGallon (double m3);
+double usGallon2cubicMeter (double gal);
+double cubicFeet2usGallon (double ft3);
+double usGallon2cubicFeet (double gal);
+double cubicMeter2liter (double m3);
+double liter2cubicMeter (double L);
+
+
+double rad2deg  (double rad);
+double deg2rad  (double deg);
+double rad2grad (double rad);
+double grad2rad (double grad);
+double deg2grad (double deg);
+double grad2deg (double grad);
+
+
+
+double sec2min    (double sec);
+double min2sec    (double min);
+double sec2hour   (double sec);
+double hour2sec   (double hour);
+double sec2day (double sec);
+double day2sec (double day);
+
+
+
+
+double bar2Pa (double bar);
+double Pa2bar (double Pa);
+double bar2atm (double bar);
+double atm2bar (double atm);
+double bar2torr (double bar);
+double torr2bar (double torr);
+double bar2psi (double bar);
+double psi2bar (double psi);
+double Pa2atm (double Pa);
+double atm2Pa (double atm);
+double Pa2torr (double Pa);
+double torr2Pa (double torr);
+double Pa2psi (double Pa);
+double psi2Pa (double psi);
+double torr2atm (double torr);
+double atm2torr (double atm);
+double torr2psi (double torr);
+double psi2torr (double psi);
+double torr2mmHg (double torr);
+double mmHg2torr (double mmHg);
+double psi2atm (double psi);
+double atm2psi (double atm);
+
+
+
+double pH2pOH (double pH);
+double pOH2pH (double pOH);
+
+
+
+double tesla2gauss (double tesla);
+double gauss2tesla (double gauss);
+double maxwell2weber (double maxwell);
+double weber2maxwell (double weber);
+
+#ifdef __cplusplus
+}
+#endif
Index: /tags/1.6.0/src/core/RpUtils.cc
===================================================================
--- /tags/1.6.0/src/core/RpUtils.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpUtils.cc	(revision 6168)
@@ -0,0 +1,37 @@
+/*
+ * ======================================================================
+ *  Rappture::Utils
+ *
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <iostream>
+#include "RpUtils.h"
+
+#ifdef __cplusplus
+    extern "C" {
+#endif // ifdef __cplusplus
+
+using namespace Rappture::Utils;
+
+int 
+progress(int percent, const char* text)
+{
+    if (text != NULL) {
+        std::cout << "=RAPPTURE-PROGRESS=>" << percent << " " << text << std::endl;
+    } else {
+        std::cout << "=RAPPTURE-PROGRESS=>" << percent << std::endl;
+    }
+    return 0;
+}
+
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
Index: /tags/1.6.0/src/core/RpUtils.h
===================================================================
--- /tags/1.6.0/src/core/RpUtils.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpUtils.h	(revision 6168)
@@ -0,0 +1,33 @@
+/*
+ * ======================================================================
+ *  Rappture::Utils
+ *
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef RAPPTURE_UTILS_H
+#define RAPPTURE_UTILS_H
+
+#ifdef __cplusplus
+extern "C" {
+namespace Rappture {
+    namespace Utils {
+#endif // ifdef __cplusplus
+
+
+int progress(int percent, const char* text);
+
+
+#ifdef __cplusplus
+    } // namespace Utils
+} // namespace Rappture
+} // extern C
+#endif // ifdef __cplusplus
+
+#endif // RAPPTURE_UTILS_H
Index: /tags/1.6.0/src/core/RpUtilsCInterface.cc
===================================================================
--- /tags/1.6.0/src/core/RpUtilsCInterface.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpUtilsCInterface.cc	(revision 6168)
@@ -0,0 +1,29 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: C Rappture Utils Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpUtils.h"
+#include "RpUtilsCInterface.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int
+rpUtilsProgress (int percent, const char* text)
+{
+    return Rappture::Utils::progress(percent,text);
+}
+
+#ifdef __cplusplus
+}
+#endif
Index: /tags/1.6.0/src/core/RpUtilsCInterface.h
===================================================================
--- /tags/1.6.0/src/core/RpUtilsCInterface.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpUtilsCInterface.h	(revision 6168)
@@ -0,0 +1,29 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: C Rappture Utils Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+
+#ifndef _RAPPTURE_UTILS_C_H
+#define _RAPPTURE_UTILS_C_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif // ifdef __cplusplus
+
+int rpUtilsProgress (int percent, const char* text);
+
+
+#ifdef __cplusplus
+}
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RAPPTURE_UTILS_C_H
Index: /tags/1.6.0/src/core/RpUtilsFInterface.cc
===================================================================
--- /tags/1.6.0/src/core/RpUtilsFInterface.cc	(revision 6168)
+++ /tags/1.6.0/src/core/RpUtilsFInterface.cc	(revision 6168)
@@ -0,0 +1,42 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Utils Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpUtils.h"
+#include "RpUtilsFInterface.h"
+#include "RpUtilsFStubs.c"
+#include "RpFortranCommon.h"
+
+#ifdef __cplusplus
+extern "C" int rp_utils_progress(int *percent, char *text, int text_len);
+#endif
+
+#include <stdlib.h>
+
+/**********************************************************************/
+// FUNCTION: rp_utils_progress(int percent, const char* text, int text_len)
+/// Report the progress of the application.
+/**
+ */
+
+int 
+rp_utils_progress(int *percentPtr, char *text, int text_len)
+{
+    const char* inText;
+    int retVal;
+    inText = null_terminate(text, text_len);
+    retVal = Rappture::Utils::progress(*percentPtr, inText);
+    free((void*)inText);
+    inText = NULL;
+    return retVal;
+}
+
Index: /tags/1.6.0/src/core/RpUtilsFInterface.h
===================================================================
--- /tags/1.6.0/src/core/RpUtilsFInterface.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpUtilsFInterface.h	(revision 6168)
@@ -0,0 +1,31 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Utils Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RAPPTURE_UTILS_F_H
+#define _RAPPTURE_UTILS_F_H
+
+#ifdef __cplusplus
+    #include "RpUtilsFStubs.h"
+    extern "C" {
+#endif // ifdef __cplusplus
+
+int rp_utils_progress ( int* percent, char* text, int text_len );
+
+
+/**********************************************************/
+
+#ifdef __cplusplus
+    }
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RAPPTURE_UTILS_F_H
Index: /tags/1.6.0/src/core/RpUtilsFStubs.c
===================================================================
--- /tags/1.6.0/src/core/RpUtilsFStubs.c	(revision 6168)
+++ /tags/1.6.0/src/core/RpUtilsFStubs.c	(revision 6168)
@@ -0,0 +1,40 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Utils Stub Functions
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+
+/**********************************************************/
+
+int
+rp_utils_progress_ ( int* percent, char* text, int text_len ) {
+    return rp_utils_progress (percent,text,text_len);
+}
+
+int
+rp_utils_progress__ ( int* percent, char* text, int text_len ) {
+    return rp_utils_progress (percent,text,text_len);
+}
+
+int
+RP_UTILS_PROGRESS ( int* percent, char* text, int text_len ) {
+    return rp_utils_progress (percent,text,text_len);
+}
+
+/**********************************************************/
+/**********************************************************/
+
+#ifdef __cplusplus
+    }
+#endif
Index: /tags/1.6.0/src/core/RpUtilsFStubs.h
===================================================================
--- /tags/1.6.0/src/core/RpUtilsFStubs.h	(revision 6168)
+++ /tags/1.6.0/src/core/RpUtilsFStubs.h	(revision 6168)
@@ -0,0 +1,42 @@
+/*
+ * ----------------------------------------------------------------------
+ *  INTERFACE: Fortran Rappture Utils Stub Headers
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+
+/**********************************************************/
+// INTERFACE FUNCTIONS - ONE UNDERSCORE
+
+int rp_utils_progress_ ( int* percent, char* text, int text_len );
+
+
+/**********************************************************/
+// INTERFACE FUNCTIONS - TWO UNDERSCORES
+
+int rp_utils_progress__ ( int* percent, char* text, int text_len );
+
+
+/**********************************************************/
+// INTERFACE STUB FUNCTIONS - ALL CAPS
+
+int RP_UTILS_PROGRESS ( int* percent, char* text, int text_len );
+
+
+/**********************************************************/
+/**********************************************************/
+
+#ifdef __cplusplus
+    }
+#endif
Index: /tags/1.6.0/src/core/b64/cdecode.c
===================================================================
--- /tags/1.6.0/src/core/b64/cdecode.c	(revision 6168)
+++ /tags/1.6.0/src/core/b64/cdecode.c	(revision 6168)
@@ -0,0 +1,87 @@
+/*
+cdecoder.c - c source to a base64 decoding algorithm implementation
+
+This is part of the libb64 project, and has been placed in the public domain.
+For details, see http://sourceforge.net/projects/libb64
+*/
+
+#include <b64/cdecode.h>
+
+int base64_decode_value(char value_in)
+{
+	static const char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51};
+	static const char decoding_size = sizeof(decoding);
+	value_in -= 43;
+	if (value_in < 0 || value_in > decoding_size) return -1;
+	return decoding[(int)value_in];
+}
+
+void base64_init_decodestate(base64_decodestate* state_in)
+{
+	state_in->step = step_a;
+	state_in->plainchar = 0;
+}
+
+int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in)
+{
+	const char* codechar = code_in;
+	char* plainchar = plaintext_out;
+	char fragment;
+	
+	*plainchar = state_in->plainchar;
+	
+	switch (state_in->step)
+	{
+		while (1)
+		{
+	case step_a:
+			do {
+				if (codechar == code_in+length_in)
+				{
+					state_in->step = step_a;
+					state_in->plainchar = *plainchar;
+					return plainchar - plaintext_out;
+				}
+				fragment = (char)base64_decode_value(*codechar++);
+			} while (fragment < 0);
+			*plainchar    = (fragment & 0x03f) << 2;
+	case step_b:
+			do {
+				if (codechar == code_in+length_in)
+				{
+					state_in->step = step_b;
+					state_in->plainchar = *plainchar;
+					return plainchar - plaintext_out;
+				}
+				fragment = (char)base64_decode_value(*codechar++);
+			} while (fragment < 0);
+			*plainchar++ |= (fragment & 0x030) >> 4;
+			*plainchar    = (fragment & 0x00f) << 4;
+	case step_c:
+			do {
+				if (codechar == code_in+length_in)
+				{
+					state_in->step = step_c;
+					state_in->plainchar = *plainchar;
+					return plainchar - plaintext_out;
+				}
+				fragment = (char)base64_decode_value(*codechar++);
+			} while (fragment < 0);
+			*plainchar++ |= (fragment & 0x03c) >> 2;
+			*plainchar    = (fragment & 0x003) << 6;
+	case step_d:
+			do {
+				if (codechar == code_in+length_in)
+				{
+					state_in->step = step_d;
+					state_in->plainchar = *plainchar;
+					return plainchar - plaintext_out;
+				}
+				fragment = (char)base64_decode_value(*codechar++);
+			} while (fragment < 0);
+			*plainchar++   |= (fragment & 0x03f);
+		}
+	}
+	/* control should not reach here */
+	return plainchar - plaintext_out;
+}
Index: /tags/1.6.0/src/core/b64/cdecode.h
===================================================================
--- /tags/1.6.0/src/core/b64/cdecode.h	(revision 6168)
+++ /tags/1.6.0/src/core/b64/cdecode.h	(revision 6168)
@@ -0,0 +1,29 @@
+/*
+cdecode.h - c header for a base64 decoding algorithm
+
+This is part of the libb64 project, and has been placed in the public domain.
+For details, see http://sourceforge.net/projects/libb64
+*/
+
+#ifndef BASE64_CDECODE_H
+#define BASE64_CDECODE_H
+
+typedef enum
+{
+    step_a, step_b, step_c, step_d
+} base64_decodestep;
+
+typedef struct
+{
+    base64_decodestep step;
+    char plainchar;
+} base64_decodestate;
+
+void base64_init_decodestate(base64_decodestate* state_in);
+
+int base64_decode_value(char value_in);
+
+int base64_decode_block(const char* code_in, const int length_in,
+	char* plaintext_out, base64_decodestate* state_in);
+
+#endif /* BASE64_CDECODE_H */
Index: /tags/1.6.0/src/core/b64/cencode.c
===================================================================
--- /tags/1.6.0/src/core/b64/cencode.c	(revision 6168)
+++ /tags/1.6.0/src/core/b64/cencode.c	(revision 6168)
@@ -0,0 +1,108 @@
+/*
+cencoder.c - c source to a base64 encoding algorithm implementation
+
+This is part of the libb64 project, and has been placed in the public domain.
+For details, see http://sourceforge.net/projects/libb64
+*/
+
+#include <b64/cencode.h>
+
+const int CHARS_PER_LINE = 72;
+
+void base64_init_encodestate(base64_encodestate* state_in)
+{
+	state_in->step = step_A;
+	state_in->result = 0;
+	state_in->stepcount = 0;
+}
+
+char base64_encode_value(char value_in)
+{
+	static const char* encoding = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+	if (value_in > 63) return '=';
+	return encoding[(int)value_in];
+}
+
+int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in)
+{
+	const char* plainchar = plaintext_in;
+	const char* const plaintextend = plaintext_in + length_in;
+	char* codechar = code_out;
+	char result;
+	char fragment;
+	
+	result = state_in->result;
+	
+	switch (state_in->step)
+	{
+		while (1)
+		{
+	case step_A:
+			if (plainchar == plaintextend)
+			{
+				state_in->result = result;
+				state_in->step = step_A;
+				return codechar - code_out;
+			}
+			fragment = *plainchar++;
+			result = (fragment & 0x0fc) >> 2;
+			*codechar++ = base64_encode_value(result);
+			result = (fragment & 0x003) << 4;
+	case step_B:
+			if (plainchar == plaintextend)
+			{
+				state_in->result = result;
+				state_in->step = step_B;
+				return codechar - code_out;
+			}
+			fragment = *plainchar++;
+			result |= (fragment & 0x0f0) >> 4;
+			*codechar++ = base64_encode_value(result);
+			result = (fragment & 0x00f) << 2;
+	case step_C:
+			if (plainchar == plaintextend)
+			{
+				state_in->result = result;
+				state_in->step = step_C;
+				return codechar - code_out;
+			}
+			fragment = *plainchar++;
+			result |= (fragment & 0x0c0) >> 6;
+			*codechar++ = base64_encode_value(result);
+			result  = (fragment & 0x03f) >> 0;
+			*codechar++ = base64_encode_value(result);
+			
+			++(state_in->stepcount);
+			if (state_in->stepcount == CHARS_PER_LINE/4)
+			{
+				*codechar++ = '\n';
+				state_in->stepcount = 0;
+			}
+		}
+	}
+	/* control should not reach here */
+	return codechar - code_out;
+}
+
+int base64_encode_blockend(char* code_out, base64_encodestate* state_in)
+{
+	char* codechar = code_out;
+	
+	switch (state_in->step)
+	{
+	case step_B:
+		*codechar++ = base64_encode_value(state_in->result);
+		*codechar++ = '=';
+		*codechar++ = '=';
+		break;
+	case step_C:
+		*codechar++ = base64_encode_value(state_in->result);
+		*codechar++ = '=';
+		break;
+	case step_A:
+		break;
+	}
+	*codechar++ = '\n';
+	
+	return codechar - code_out;
+}
Index: /tags/1.6.0/src/core/b64/cencode.h
===================================================================
--- /tags/1.6.0/src/core/b64/cencode.h	(revision 6168)
+++ /tags/1.6.0/src/core/b64/cencode.h	(revision 6168)
@@ -0,0 +1,32 @@
+/*
+cencode.h - c header for a base64 encoding algorithm
+
+This is part of the libb64 project, and has been placed in the public domain.
+For details, see http://sourceforge.net/projects/libb64
+*/
+
+#ifndef BASE64_CENCODE_H
+#define BASE64_CENCODE_H
+
+typedef enum
+{
+	step_A, step_B, step_C
+} base64_encodestep;
+
+typedef struct
+{
+	base64_encodestep step;
+	char result;
+	int stepcount;
+} base64_encodestate;
+
+void base64_init_encodestate(base64_encodestate* state_in);
+
+char base64_encode_value(char value_in);
+
+int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in);
+
+int base64_encode_blockend(char* code_out, base64_encodestate* state_in);
+
+#endif /* BASE64_CENCODE_H */
+
Index: /tags/1.6.0/src/core/b64/decode.h
===================================================================
--- /tags/1.6.0/src/core/b64/decode.h	(revision 6168)
+++ /tags/1.6.0/src/core/b64/decode.h	(revision 6168)
@@ -0,0 +1,63 @@
+
+// :mode=c++:
+/*
+decode.h - c++ wrapper for a base64 decoding algorithm
+
+This is part of the libb64 project, and has been placed in the public domain.
+For details, see http://sourceforge.net/projects/libb64
+*/
+
+#ifndef BASE64_DECODE_H
+#define BASE64_DECODE_H
+
+#include <iostream>
+
+extern "C" {
+  #include "cdecode.h"
+}
+
+namespace base64 {
+	
+struct decoder {
+    base64_decodestate _state;
+    int _buffersize;
+
+    decoder(int buffersize_in = 4096)
+	: _buffersize(buffersize_in)
+    {
+	base64_init_decodestate(&_state);
+    }
+    int decode(char value_in) {
+	return base64_decode_value(value_in);
+    }
+    int decode(const char* code_in, const int length_in, char* plaintext_out) {
+	return base64_decode_block(code_in, length_in, plaintext_out, &_state);
+    }
+    void decode(std::istream& istream_in, std::ostream& ostream_in) {
+	base64_init_decodestate(&_state);
+	//
+	const int N = _buffersize;
+	char* code = new char[N];
+	char* plaintext = new char[N];
+	int codelength;
+	int plainlength;
+	
+	do
+	    {
+		istream_in.read((char*)code, N);
+		codelength = istream_in.gcount();
+		plainlength = decode(code, codelength, plaintext);
+		ostream_in.write((const char*)plaintext, plainlength);
+	    }
+	while (istream_in.good() && codelength > 0);
+	//
+	base64_init_decodestate(&_state);
+	
+	delete [] code;
+	delete [] plaintext;
+    }
+};
+
+} /* namespace base64 */
+
+#endif // BASE64_DECODE_H
Index: /tags/1.6.0/src/core/b64/encode.h
===================================================================
--- /tags/1.6.0/src/core/b64/encode.h	(revision 6168)
+++ /tags/1.6.0/src/core/b64/encode.h	(revision 6168)
@@ -0,0 +1,77 @@
+// :mode=c++:
+/*
+encode.h - c++ wrapper for a base64 encoding algorithm
+
+This is part of the libb64 project, and has been placed in the public domain.
+For details, see http://sourceforge.net/projects/libb64
+*/
+
+#ifndef BASE64_ENCODE_H
+#define BASE64_ENCODE_H
+
+#include <iostream>
+
+namespace base64
+{
+	
+	extern "C"
+	{
+		#include "cencode.h"
+	}
+	
+	struct encoder
+	{
+		base64_encodestate _state;
+		int _buffersize;
+		
+		encoder(int buffersize_in = 4096)
+		: _buffersize(buffersize_in)
+		{
+            base64_init_encodestate(&_state);
+        }
+		int encode(char value_in)
+		{
+			return base64_encode_value(value_in);
+		}
+		int encode(const char* code_in, const int length_in, char* plaintext_out)
+		{
+			return base64_encode_block(code_in, length_in, plaintext_out, &_state);
+		}
+		int encode_end(char* plaintext_out)
+		{
+			return base64_encode_blockend(plaintext_out, &_state);
+		}
+		void encode(std::istream& istream_in, std::ostream& ostream_in)
+		{
+			base64_init_encodestate(&_state);
+			//
+			const int N = _buffersize;
+			char* plaintext = new char[N];
+			char* code = new char[2*N];
+			int plainlength;
+			int codelength;
+			
+			do
+			{
+				istream_in.read(plaintext, N);
+				plainlength = istream_in.gcount();
+				//
+				codelength = encode(plaintext, plainlength, code);
+				ostream_in.write(code, codelength);
+			}
+			while (istream_in.good() && plainlength > 0);
+			
+			codelength = encode_end(code);
+			ostream_in.write(code, codelength);
+			//
+			base64_init_encodestate(&_state);
+			
+			delete [] code;
+			delete [] plaintext;
+		}
+	};
+	
+} // namespace base64
+
+#endif // BASE64_ENCODE_H
+
Index: /tags/1.6.0/src/core/config.h.in
===================================================================
--- /tags/1.6.0/src/core/config.h.in	(revision 6168)
+++ /tags/1.6.0/src/core/config.h.in	(revision 6168)
@@ -0,0 +1,277 @@
+/* src/core/config.h.in.  Generated from configure.in by autoheader.  */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Build rappture with ffmpeg widgets */
+#undef BUILD_with_ffmpeg
+
+/* Define to 1 if you have the <algorithm> header file. */
+#undef HAVE_ALGORITHM
+
+/* Define to 1 if you have the <assert.h> header file. */
+#undef HAVE_ASSERT_H
+
+/* Define to 1 if you have the `avcodec_decode_video' function. */
+#undef HAVE_AVCODEC_DECODE_VIDEO
+
+/* Define to 1 if you have the `avcodec_decode_video2' function. */
+#undef HAVE_AVCODEC_DECODE_VIDEO2
+
+/* Define to 1 if you have the `avcodec_open' function. */
+#undef HAVE_AVCODEC_OPEN
+
+/* Define to 1 if you have the `avcodec_open2' function. */
+#undef HAVE_AVCODEC_OPEN2
+
+/* Define to 1 if you have the `avformat_close_input' function. */
+#undef HAVE_AVFORMAT_CLOSE_INPUT
+
+/* Define to 1 if you have the `avformat_find_stream_info' function. */
+#undef HAVE_AVFORMAT_FIND_STREAM_INFO
+
+/* Define to 1 if you have the `avformat_open_input' function. */
+#undef HAVE_AVFORMAT_OPEN_INPUT
+
+/* Define to 1 if you have the `avio_close' function. */
+#undef HAVE_AVIO_CLOSE
+
+/* Define if AVMEDIA_TYPE_VIDEO enum exists. */
+#undef HAVE_AVMEDIA_TYPE_VIDEO
+
+/* Define to 1 if you have the `av_close_input_file' function. */
+#undef HAVE_AV_CLOSE_INPUT_FILE
+
+/* Define to 1 if you have the `av_find_stream_info' function. */
+#undef HAVE_AV_FIND_STREAM_INFO
+
+/* Define to 1 if you have the `av_open_input_file' function. */
+#undef HAVE_AV_OPEN_INPUT_FILE
+
+/* Define to 1 if you have the <cctype> header file. */
+#undef HAVE_CCTYPE
+
+/* Define to 1 if you have the <cfloat> header file. */
+#undef HAVE_CFLOAT
+
+/* Define to 1 if you have the <cmath> header file. */
+#undef HAVE_CMATH
+
+/* Define to 1 if you have the <cstdio> header file. */
+#undef HAVE_CSTDIO
+
+/* Define to 1 if you have the <cstdlib> header file. */
+#undef HAVE_CSTDLIB
+
+/* Define to 1 if you have the <cstring> header file. */
+#undef HAVE_CSTRING
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#undef HAVE_CTYPE_H
+
+/* Define to 1 if you have the <env.h> header file. */
+#undef HAVE_ENV_H
+
+/* Define to 1 if you have the <errno.h> header file. */
+#undef HAVE_ERRNO_H
+
+/* Render servers can use ffmpeg */
+#undef HAVE_FFMPEG
+
+/* Define to 1 if you have the <ffmpeg/avcodec.h> header file. */
+#undef HAVE_FFMPEG_AVCODEC_H
+
+/* Define to 1 if you have the <ffmpeg/avformat.h> header file. */
+#undef HAVE_FFMPEG_AVFORMAT_H
+
+/* Define to 1 if you have the <ffmpeg/avutil.h> header file. */
+#undef HAVE_FFMPEG_AVUTIL_H
+
+/* Define to 1 if you have the <ffmpeg/swscale.h> header file. */
+#undef HAVE_FFMPEG_SWSCALE_H
+
+/* Define to 1 if you have the <float.h> header file. */
+#undef HAVE_FLOAT_H
+
+/* Define to 1 if you have the <fstream> header file. */
+#undef HAVE_FSTREAM
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the `img_convert' function. */
+#undef HAVE_IMG_CONVERT
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <iostream> header file. */
+#undef HAVE_IOSTREAM
+
+/* Define to 1 if you have the <iterator> header file. */
+#undef HAVE_ITERATOR
+
+/* Define to 1 if you have the `avcodec' library (-lavcodec). */
+#undef HAVE_LIBAVCODEC
+
+/* Define to 1 if you have the <libavcodec/avcodec.h> header file. */
+#undef HAVE_LIBAVCODEC_AVCODEC_H
+
+/* Define to 1 if you have the `avformat' library (-lavformat). */
+#undef HAVE_LIBAVFORMAT
+
+/* Define to 1 if you have the <libavformat/avformat.h> header file. */
+#undef HAVE_LIBAVFORMAT_AVFORMAT_H
+
+/* Define to 1 if you have the `avutil' library (-lavutil). */
+#undef HAVE_LIBAVUTIL
+
+/* Define to 1 if you have the <libavutil/avutil.h> header file. */
+#undef HAVE_LIBAVUTIL_AVUTIL_H
+
+/* Define to 1 if you have the <libavutil/mathematics.h> header file. */
+#undef HAVE_LIBAVUTIL_MATHEMATICS_H
+
+/* Define to 1 if you have the `ncurses' library (-lncurses). */
+#undef HAVE_LIBNCURSES
+
+/* Define to 1 if you have the `stdc++' library (-lstdc++). */
+#undef HAVE_LIBSTDC__
+
+/* Define to 1 if you have the `swscale' library (-lswscale). */
+#undef HAVE_LIBSWSCALE
+
+/* Define to 1 if you have the <libswscale/swscale.h> header file. */
+#undef HAVE_LIBSWSCALE_SWSCALE_H
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if you have the <list> header file. */
+#undef HAVE_LIST
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the <math.h> header file. */
+#undef HAVE_MATH_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <ncurses.h> header file. */
+#undef HAVE_NCURSES_H
+
+/* Define to 1 if you have the <node.h> header file. */
+#undef HAVE_NODE_H
+
+/* Define to 1 if you have the <Python.h> header file. */
+#undef HAVE_PYTHON_H
+
+/* Define to 1 if you have the <ruby.h> header file. */
+#undef HAVE_RUBY_H
+
+/* Define to 1 if you have the <ruby/node.h> header file. */
+#undef HAVE_RUBY_NODE_H
+
+/* Define to 1 if you have the <sstream> header file. */
+#undef HAVE_SSTREAM
+
+/* Define to 1 if you have the <stack> header file. */
+#undef HAVE_STACK
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#undef HAVE_STDDEF_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <string> header file. */
+#undef HAVE_STRING
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `sws_getCachedContext' function. */
+#undef HAVE_SWS_GETCACHEDCONTEXT
+
+/* Define to 1 if you have the `sws_scale' function. */
+#undef HAVE_SWS_SCALE
+
+/* Define to 1 if you have the `sysinfo' function. */
+#undef HAVE_SYSINFO
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/sysinfo.h> header file. */
+#undef HAVE_SYS_SYSINFO_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `url_close' function. */
+#undef HAVE_URL_CLOSE
+
+/* Define to 1 if you have the <vector> header file. */
+#undef HAVE_VECTOR
+
+/* Define to 1 if you have the <version.h> header file. */
+#undef HAVE_VERSION_H
+
+/* 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 home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define this macro to use ruby/node.h */
+#undef REALLY_HAVE_RUBY_NODE_H
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `long long', as computed by sizeof. */
+#undef SIZEOF_LONG_LONG
+
+/* The size of `void *', as computed by sizeof. */
+#undef SIZEOF_VOID_P
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
Index: /tags/1.6.0/src/core/rappture.h
===================================================================
--- /tags/1.6.0/src/core/rappture.h	(revision 6168)
+++ /tags/1.6.0/src/core/rappture.h	(revision 6168)
@@ -0,0 +1,33 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+// include xml parser headers
+#include "RpLibrary.h"
+#include "RpLibraryCInterface.h"
+#include "RpLibraryFInterface.h"
+
+// include units headers
+#include "RpUnits.h"
+#include "RpUnitsCInterface.h"
+#include "RpUnitsFInterface.h"
+
+// include utility functions
+#include "RpUtils.h"
+#include "RpUtilsCInterface.h"
+#include "RpUtilsFInterface.h"
+
+// include base objects
+/*
+#include "RpAbout.h"
+#include "RpBoolean.h"
+#include "RpChoice.h"
+#include "RpNumber.h"
+#include "RpOption.h"
+#include "RpString.h"
+#include "RpValue.h"
+*/
Index: /tags/1.6.0/src/core/rappture_fortran.c
===================================================================
--- /tags/1.6.0/src/core/rappture_fortran.c	(revision 6168)
+++ /tags/1.6.0/src/core/rappture_fortran.c	(revision 6168)
@@ -0,0 +1,1380 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "rappture_interface.h"
+#include "RpFortranCommon.h"
+#include "RpDict.h"
+#include <string.h>
+
+/*
+// rappture-fortran api
+*/
+
+#ifdef COMPNAME_ADD1UNDERSCORE
+#   define rp_init                 rp_init_
+#   define rp_lib                  rp_lib_
+#   define rp_lib_element_comp     rp_lib_element_comp_
+#   define rp_lib_element_id       rp_lib_element_id_
+#   define rp_lib_element_type     rp_lib_element_type_
+#   define rp_lib_element_str      rp_lib_element_str_
+#   define rp_lib_element_obj      rp_lib_element_obj_
+#   define rp_lib_child_num        rp_lib_child_num_
+#   define rp_lib_child_comp       rp_lib_child_comp_
+#   define rp_lib_child_id         rp_lib_child_id_
+#   define rp_lib_child_type       rp_lib_child_type_
+#   define rp_lib_child_str        rp_lib_child_str_
+#   define rp_lib_child_obj        rp_lib_child_obj_
+#   define rp_lib_get              rp_lib_get_
+#   define rp_lib_get_double       rp_lib_get_double_
+#   define rp_lib_put_str          rp_lib_put_str_
+#   define rp_lib_put_id_str       rp_lib_put_id_str_
+#   define rp_lib_put_obj          rp_lib_put_obj_
+#   define rp_lib_put_id_obj       rp_lib_put_id_obj_
+#   define rp_lib_remove           rp_lib_remove_
+#   define rp_lib_xml_len          rp_lib_xml_len_
+#   define rp_lib_write_xml        rp_lib_write_xml_
+#   define rp_lib_xml              rp_lib_xml_
+#   define rp_quit                 rp_quit_
+#   define rp_result               rp_result_
+#elif defined(COMPNAME_ADD2UNDERSCORE)
+#   define rp_init                 rp_init__
+#   define rp_lib                  rp_lib__
+#   define rp_lib_element_comp     rp_lib_element_comp__
+#   define rp_lib_element_id       rp_lib_element_id__
+#   define rp_lib_element_type     rp_lib_element_type__
+#   define rp_lib_element_str      rp_lib_element_str__
+#   define rp_lib_element_obj      rp_lib_element_obj__
+#   define rp_lib_child_num        rp_lib_child_num__
+#   define rp_lib_child_comp       rp_lib_child_comp__
+#   define rp_lib_child_id         rp_lib_child_id__
+#   define rp_lib_child_type       rp_lib_child_type__
+#   define rp_lib_child_str        rp_lib_child_str__
+#   define rp_lib_child_obj        rp_lib_child_obj__
+#   define rp_lib_get              rp_lib_get__
+#   define rp_lib_get_double       rp_lib_get_double__
+#   define rp_lib_put_str          rp_lib_put_str__
+#   define rp_lib_put_id_str       rp_lib_put_id_str__
+#   define rp_lib_put_obj          rp_lib_put_obj__
+#   define rp_lib_put_id_obj       rp_lib_put_id_obj__
+#   define rp_lib_remove           rp_lib_remove__
+#   define rp_lib_xml_len          rp_lib_xml_len__
+#   define rp_lib_write_xml        rp_lib_write_xml__
+#   define rp_lib_xml              rp_lib_xml__
+#   define rp_quit                 rp_quit__
+#   define rp_result               rp_result__
+#elif defined(COMPNAME_NOCHANGE)
+#   define rp_init                 rp_init
+#   define rp_lib                  rp_lib
+#   define rp_lib_element_comp     rp_lib_element_comp
+#   define rp_lib_element_id       rp_lib_element_id
+#   define rp_lib_element_type     rp_lib_element_type
+#   define rp_lib_element_str      rp_lib_element_str
+#   define rp_lib_element_obj      rp_lib_element_obj
+#   define rp_lib_child_num        rp_lib_child_num
+#   define rp_lib_child_comp       rp_lib_child_comp
+#   define rp_lib_child_id         rp_lib_child_id
+#   define rp_lib_child_type       rp_lib_child_type
+#   define rp_lib_child_str        rp_lib_child_str
+#   define rp_lib_child_obj        rp_lib_child_obj
+#   define rp_lib_get              rp_lib_get
+#   define rp_lib_get_double       rp_lib_get_double
+#   define rp_lib_put_str          rp_lib_put_str
+#   define rp_lib_put_id_str       rp_lib_put_id_str
+#   define rp_lib_put_obj          rp_lib_put_obj
+#   define rp_lib_put_id_obj       rp_lib_put_id_obj
+#   define rp_lib_remove           rp_lib_remove
+#   define rp_lib_xml_len          rp_lib_xml_len
+#   define rp_lib_write_xml        rp_lib_write_xml
+#   define rp_lib_xml              rp_lib_xml
+#   define rp_quit                 rp_quit
+#   define rp_result               rp_result
+#elif defined(COMPNAME_UPPERCASE)
+#   define rp_init                 RP_INIT
+#   define rp_lib                  RP_LIB
+#   define rp_lib_element_comp     RP_LIB_ELEMENT_COMP
+#   define rp_lib_element_id       RP_LIB_ELEMENT_ID
+#   define rp_lib_element_type     RP_LIB_ELEMENT_TYPE
+#   define rp_lib_element_str      RP_LIB_ELEMENT_STR
+#   define rp_lib_element_obj      RP_LIB_ELEMENT_OBJ
+#   define rp_lib_child_num        RP_LIB_CHILD_NUM
+#   define rp_lib_child_comp       RP_LIB_CHILD_COMP
+#   define rp_lib_child_id         RP_LIB_CHILD_ID
+#   define rp_lib_child_type       RP_LIB_CHILD_TYPE
+#   define rp_lib_child_str        RP_LIB_CHILD_STR
+#   define rp_lib_child_obj        RP_LIB_CHILD_OBJ
+#   define rp_lib_get              RP_LIB_GET
+#   define rp_lib_get_double       RP_LIB_GET_DOUBLE
+#   define rp_lib_put_str          RP_LIB_PUT_STR
+#   define rp_lib_put_id_str       RP_LIB_PUT_ID_STR
+#   define rp_lib_put_obj          RP_LIB_PUT_OBJ
+#   define rp_lib_put_id_obj       RP_LIB_PUT_ID_OBJ
+#   define rp_lib_remove           RP_LIB_REMOVE
+#   define rp_lib_xml_len          RP_LIB_XML_LEN
+#   define rp_lib_write_xml        RP_LIB_WRITE_XML
+#   define rp_lib_xml              RP_LIB_XML
+#   define rp_quit                 RP_QUIT
+#   define rp_result               RP_RESULT
+#endif
+
+
+extern "C"
+void rp_init();
+
+extern "C"
+int rp_lib(const char* filePath, int filePath_len);
+
+extern "C"
+void rp_lib_element_comp(int* handle,
+                         char* path,
+                         char* retText,
+                         int path_len,
+                         int retText_len);
+
+extern "C"
+void rp_lib_element_id(int* handle,
+                       char* path,
+                       char* retText,
+                       int path_len,
+                       int retText_len);
+
+extern "C"
+void rp_lib_element_type(int* handle,
+                         char* path,
+                         char* retText,
+                         int path_len,
+                         int retText_len);
+
+extern "C"
+void rp_lib_element_str(int* handle,
+                        char* path,
+                        char* flavor,
+                        char* retText,
+                        int path_len,
+                        int flavor_len,
+                        int retText_len);
+
+extern "C"
+int rp_lib_element_obj(int* handle,
+                       char* path,
+                       int path_len);
+
+extern "C"
+int rp_lib_child_num(int* handle,
+                     char* path,
+                     int path_len);
+
+extern "C"
+int rp_lib_child_comp(int* handle,    /* integer handle of library */
+                      char* path,     /* DOM path of requested object */
+                      char* type,     /* specific name of element */
+                      int* childNum,  /* child number for iteration */
+                      char* retText,  /* buffer to store return text */
+                      int path_len,   /* length of path */
+                      int type_len,   /* length of type */
+                      int retText_len /* length of return text buffer */
+                      );
+
+extern "C"
+int rp_lib_child_id(int* handle,    /* integer handle of library */
+                    char* path,     /* DOM path of requested object */
+                    char* type,     /* specific name of element */
+                    int* childNum,  /* child number for iteration */
+                    char* retText,  /* buffer to store return text */
+                    int path_len,   /* length of path */
+                    int type_len,   /* length of type */
+                    int retText_len /* length of return text buffer */
+                    );
+
+extern "C"
+int rp_lib_child_type(int* handle,    /* integer handle of library */
+                      char* path,     /* DOM path of requested object */
+                      char* type,     /* specific name of element */
+                      int* childNum,  /* child number for iteration */
+                      char* retText,  /* buffer to store return text */
+                      int path_len,   /* length of path */
+                      int type_len,   /* length of type */
+                      int retText_len /* length of return text buffer */
+                      );
+
+extern "C"
+int rp_lib_child_str(int* handle,    /* integer handle of library */
+                     char* path,     /* DOM path of requested object */
+                     char* flavor,   /* information you want returned*/
+                     char* type,     /* specific name of element */
+                     int* childNum,  /* child number for iteration */
+                     char* retText,  /* buffer to store return text */
+                     int path_len,   /* length of path */
+                     int flavor_len, /* length of flavor */
+                     int type_len,   /* length of type */
+                     int retText_len /* length of return text buffer */
+                     );
+
+extern "C"
+int rp_lib_child_obj(int* handle,
+                     char* path,
+                     char* type,
+                     int path_len,
+                     int type_len);
+
+extern "C"
+void rp_lib_get(int* handle,
+                char* path,
+                char* retText,
+                int path_len,
+                int retText_len);
+
+extern "C"
+double rp_lib_get_double(int* handle,
+                         char* path,
+                         int path_len);
+
+extern "C"
+void rp_lib_put_str(int* handle,
+                    char* path,
+                    char* value,
+                    int* append,
+                    int path_len,
+                    int value_len);
+
+extern "C"
+void rp_lib_put_id_str(int* handle,
+                       char* path,
+                       char* value,
+                       char* id,
+                       int* append,
+                       int path_len,
+                       int value_len,
+                       int id_len);
+
+extern "C"
+void rp_lib_put_obj(int* handle,
+                    char* path,
+                    int* valHandle,
+                    int* append,
+                    int path_len);
+
+extern "C"
+void rp_lib_put_id_obj(int* handle,
+                       char* path,
+                       int* valHandle,
+                       char* id,
+                       int* append,
+                       int path_len,
+                       int id_len);
+
+extern "C"
+int rp_lib_remove(int* handle,
+                  char* path,
+                  int path_len);
+
+extern "C"
+int rp_lib_xml_len(int* handle);
+
+extern "C"
+void rp_lib_xml(int* handle,
+                char* retText,
+                int retText_len);
+
+extern "C"
+int rp_lib_write_xml(int* handle,
+                     char* outFile,
+                     int outFile_len);
+
+extern "C"
+void rp_quit();
+
+extern "C"
+void rp_result(int* handle);
+
+
+/**********************************************************/
+
+/**********************************************************/
+
+// private member functions
+int storeNode(PyObject* node);
+int objType( char* flavor);
+
+int storeObject(PyObject* objectName);
+PyObject* getObject(int objKey);
+// char* null_terminate(char* inStr, int len);
+
+// global vars
+// dictionary to hold the python objects that
+// cannot be sent to fortran
+
+#define DICT_TEMPLATE <int,PyObject*>
+RpDict DICT_TEMPLATE fortObjDict;
+int rapptureStarted = 0;
+
+void rp_init()
+{
+    //
+    PyObject* rpClass = NULL;
+    int retVal = 0;
+
+    // initialize the interpreter
+    Py_Initialize();
+    rpClass = importRappture();
+
+    if (rpClass) {
+        // store the handle in the dictionary
+        retVal = storeObject(rpClass);
+        rapptureStarted = 1;
+    }
+}
+
+int rp_lib(const char* filePath, int filePath_len)
+{
+    PyObject* lib = NULL;
+    PyObject* rpClass = NULL;
+    int handle = -1;
+    char* inFilePath = NULL;
+
+    if (!rapptureStarted) {
+        rp_init();
+    }
+
+    inFilePath = null_terminate((char*)filePath, filePath_len);
+
+    // error checking to make sure inText is valid???
+
+    // grab the rappture class from the dictionary
+    rpClass = getObject(0);
+
+    if (rpClass) {
+
+
+        // create a RapptureIO object and store in dictionary
+        lib = createRapptureObj(rpClass, inFilePath);
+
+        if (lib) {
+            handle = storeObject(lib);
+        }
+    }
+
+    if (inFilePath) {
+        free(inFilePath);
+        inFilePath = NULL;
+    }
+
+    return handle;
+}
+
+int rp_lib_element_obj(int* handle,     /* integer handle of library */
+                       char* path,     /* null terminated path */
+                       int path_len)
+{
+    int newObjHandle = -1;
+
+    const char* flavor = "object";
+    char* inPath = NULL;
+
+    PyObject* lib = NULL;
+    PyObject* retObj = NULL;
+
+    inPath = null_terminate(path,path_len);
+
+    // error checking to make sure inText is valid???
+
+    if (fortObjDict.size() > 0) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+            if (lib) {
+                retObj = (PyObject*) rpElement(lib, inPath, flavor);
+
+                if (retObj) {
+
+                    newObjHandle = storeObject(retObj);
+                    // Py_DECREF(retObj);
+                }
+            }
+        }
+    }
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    return newObjHandle;
+}
+
+void rp_lib_element_comp(int* handle, /* integer handle of library */
+                         char* path,      /* null terminated path */
+                         char* retText,   /* return buffer for fortran*/
+                         int path_len,
+                         int retText_len /* length of return text buffer */
+                         )
+{
+    char* inPath = NULL;
+
+    inPath = null_terminate(path,path_len);
+    if (path_len) {
+        path_len = strlen(inPath) + 1;
+    }
+    else {
+        path_len = 0;
+    }
+
+    // error checking to make sure inText is valid???
+
+    rp_lib_element_str(handle,inPath,"component",retText,path_len,10,retText_len);
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+}
+
+void rp_lib_element_id(int* handle, /* integer handle of library */
+                       char* path,      /* null terminated path */
+                       char* retText,   /* return buffer for fortran*/
+                       int path_len,
+                       int retText_len /* length of return text buffer */
+                       )
+{
+    char* inPath = NULL;
+    inPath = null_terminate(path,path_len);
+    if (inPath) {
+        path_len = strlen(inPath) + 1;
+    }
+    else {
+        path_len = 0;
+    }
+
+    rp_lib_element_str(handle,inPath,"id",retText,path_len,3,retText_len);
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+
+}
+
+void rp_lib_element_type(int* handle, /* integer handle of library */
+                         char* path,      /* null terminated path */
+                         char* retText,   /* return buffer for fortran*/
+                         int path_len,
+                         int retText_len /* length of return text buffer */
+                         )
+{
+    char* inPath = NULL;
+    inPath = null_terminate(path,path_len);
+    if (inPath) {
+        path_len = strlen(inPath) + 1;
+    }
+    else {
+        path_len = 0;
+    }
+    rp_lib_element_str(handle,path,"type",retText,path_len,5,retText_len);
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+
+}
+
+void rp_lib_element_str(int* handle, /* integer handle of library */
+                        char* path,      /* null terminated path */
+                        char* flavor,    /* null terminated flavor */
+                        char* retText,   /* return buffer for fortran*/
+                        int path_len,
+                        int flavor_len,
+                        int retText_len /* length of return text buffer */
+                        )
+{
+    // int length_in = 0;
+    // int length_out = 0;
+    // int i = 0;
+    const char* xmlText = NULL;
+
+    PyObject* lib = NULL;
+
+    char* retObj = NULL;
+
+    char* inPath = NULL;
+    char* inFlavor = NULL;
+
+    inPath = null_terminate(path,path_len);
+    inFlavor = null_terminate(flavor,flavor_len);
+
+    if (rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+
+            if (lib) {
+                if(objType(inFlavor) == 1) {
+
+                    retObj = (char*) rpElement(lib, inPath, inFlavor);
+                    if (retObj) {
+                        xmlText = retObj;
+
+                        fortranify(xmlText, retText, retText_len);
+
+                        /*
+                        length_in = strlen(xmlText);
+                        length_out = retText_len;
+
+                        strncpy(retText, xmlText, length_out);
+
+                        // fortran-ify the string
+                        if (length_in < length_out) {
+                              for (i = length_in; i < length_out; i++) {
+                                  retText[i] = ' ';
+                              }
+                        }
+                        *(retText+length_out-1) = ' ';
+                        */
+
+                        free(retObj);
+                        retObj = NULL;
+                    }
+                    else {
+
+                    }
+                }
+
+            }
+        }
+    }
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    if (inFlavor) {
+        free(inFlavor);
+        inFlavor = NULL;
+    }
+
+}
+
+int rp_lib_child_num(int* handle,
+                     char* path,
+                     int path_len)
+{
+    int numChildren = 0;
+
+    PyObject* lib = NULL;
+    PyObject* list = NULL;
+    char* inPath = NULL;
+
+    inPath = null_terminate(path,path_len);
+
+    if (rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+
+            if (lib) {
+                list = rpChildren_f(lib, inPath, "type");
+                if (list) {
+                    numChildren = PyList_Size(list);
+                    Py_DECREF(list);
+                }
+                else {
+
+                }
+            }
+        }
+    }
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    return numChildren;
+
+}
+
+
+int rp_lib_child_comp(int* handle,    /* integer handle of library */
+                      char* path,     /* DOM path of requested object */
+                      char* type,     /* specific name of element */
+                      int* childNum,  /* child number for iteration */
+                      char* retText,  /* buffer to store return text */
+                      int path_len,   /* length of path */
+                      int type_len,   /* length of type */
+                      int retText_len /* length of return text buffer */
+                      )
+{
+    int retVal = 0;
+
+    char* inPath = NULL;
+    char* inType = NULL;
+
+    inPath = null_terminate(path,path_len);
+    inType = null_terminate(type,type_len);
+
+    if (inPath) {
+        path_len = strlen(inPath) + 1;
+    }
+    else {
+        path_len = 0;
+    }
+
+    if (inType) {
+        type_len = strlen(inType) + 1;
+    }
+    else {
+        type_len = 0;
+    }
+
+    retVal = rp_lib_child_str(handle,
+                              inPath,
+                              "component",
+                              inType,
+                              childNum,
+                              retText,
+                              path_len,
+                              10,
+                              type_len,
+                              retText_len);
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    if (inType) {
+        free(inType);
+        inType = NULL;
+    }
+
+    return retVal;
+}
+
+int rp_lib_child_id(int* handle,    /* integer handle of library */
+                    char* path,     /* DOM path of requested object */
+                    char* type,     /* specific name of element */
+                    int* childNum,  /* child number for iteration */
+                    char* retText,  /* buffer to store return text */
+                    int path_len,   /* length of path */
+                    int type_len,   /* length of type */
+                    int retText_len /* length of return text buffer */
+                    )
+{
+    int retVal = 0;
+    char* inPath = NULL;
+    char* inType = NULL;
+
+    inPath = null_terminate(path,path_len);
+    inType = null_terminate(type,type_len);
+
+    if (inPath) {
+        path_len = strlen(inPath) + 1;
+    }
+    else {
+        path_len = 0;
+    }
+
+    if (inType) {
+        type_len = strlen(inType) + 1;
+    }
+    else {
+        type_len = 0;
+    }
+
+    retVal = rp_lib_child_str(handle,
+                              inPath,
+                              "id",
+                              inType,
+                              childNum,
+                              retText,
+                              path_len,
+                              3,
+                              type_len,
+                              retText_len);
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    if (inType) {
+        free(inType);
+        inType = NULL;
+    }
+
+    return retVal;
+}
+
+int rp_lib_child_type(int* handle,    /* integer handle of library */
+                      char* path,     /* DOM path of requested object */
+                      char* type,     /* specific name of element */
+                      int* childNum,  /* child number for iteration */
+                      char* retText,  /* buffer to store return text */
+                      int path_len,   /* length of path */
+                      int type_len,   /* length of type */
+                      int retText_len /* length of return text buffer */
+                      )
+{
+    int retVal = 0;
+    char* inPath = NULL;
+    char* inType = NULL;
+
+    inPath = null_terminate(path,path_len);
+    inType = null_terminate(type,type_len);
+
+    if (inPath) {
+        path_len = strlen(inPath) + 1;
+    }
+    else {
+        path_len = 0;
+    }
+
+    if (inType) {
+        type_len = strlen(inType) + 1;
+    }
+    else {
+        type_len = 0;
+    }
+
+    retVal = rp_lib_child_str(handle,
+                              inPath,
+                              "type",
+                              inType,
+                              childNum,
+                              retText,
+                              path_len,
+                              5,
+                              type_len,
+                              retText_len);
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    if (inType) {
+        free(inType);
+        inType = NULL;
+    }
+
+    return retVal;
+}
+
+int rp_lib_child_str(int* handle,    /* integer handle of library */
+                     char* path,     /* DOM path of requested object */
+                     char* flavor,   /* information you want returned*/
+                     char* type,     /* specific name of element */
+                     int* childNum,  /* child number for iteration */
+                     char* retText,  /* buffer to store return text */
+                     int path_len,   /* length of path */
+                     int flavor_len, /* length of flavor */
+                     int type_len,   /* length of type */
+                     int retText_len /* length of return text buffer */
+                     )
+{
+    int retVal = 0;
+    // int i = 0;
+    // int length_in = 0;
+
+    PyObject* lib = NULL;
+    PyObject* list = NULL;
+    PyObject* list_item = NULL;
+
+    char* xmlChild = NULL;
+    char* inPath = NULL;
+    char* inType = NULL;
+    char* inFlavor = NULL;
+
+    inPath = null_terminate(path,path_len);
+    inFlavor = null_terminate(flavor,flavor_len);
+    inType = null_terminate(type,type_len);
+
+    if (rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+            if (lib) {
+                if (objType(inFlavor) == 1) {
+
+                    list = rpChildren_f(lib, inPath, inFlavor);
+                    if (list) {
+                        retVal = PyList_Size(list);
+                        // check to make sure our node index is within bounds
+                        if (((*childNum)-1) < retVal) {
+                            // get the requested node
+                            list_item = PyList_GetItem(list,(*childNum)-1);
+                            // make node string, borrowed object
+                            xmlChild = PyString_AsString(list_item);
+                            Py_DECREF(list);
+                            // printf("xmlChild = :%s:\n",xmlChild);
+                            if (xmlChild) {
+                                fortranify(xmlChild, retText, retText_len);
+
+                                /*
+                                strncpy(retText, xmlChild, retText_len);
+                                length_in = strlen(xmlChild);
+
+                                // fortran-ify the string
+                                if (length_in < retText_len) {
+                                      for (i = length_in; i < retText_len; i++) {
+                                          retText[i] = ' ';
+                                      }
+                                }
+                                // *(retText+retText_len-1) = ' ';
+                                */
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    if (inFlavor) {
+        free(inFlavor);
+        inFlavor = NULL;
+    }
+
+    if (inType) {
+        free(inType);
+        inType = NULL;
+    }
+
+    return retVal;
+}
+
+int rp_lib_child_obj(int* handle,
+                     char* path,
+                     char* type,
+                     int path_len,
+                     int type_len)
+{
+    int newObjHandle = -1;
+
+    PyObject* lib = NULL;
+    PyObject* list = NULL;
+
+    char* inPath = NULL;
+    char* inType = NULL;
+
+    inPath = null_terminate(path,path_len);
+    inType = null_terminate(type,type_len);
+
+    if (rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+
+            if (lib) {
+                list = rpChildren_f(lib, inPath, "object");
+                if (list) {
+                    // store the whole list,
+                    // need to make a way to read the nodes
+                    newObjHandle = storeObject(list);
+                    // Py_DECREF(list);
+                }
+            }
+        }
+    }
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    if (inType) {
+        free(inType);
+        inType = NULL;
+    }
+
+    return newObjHandle;
+}
+
+
+void rp_lib_get(int* handle, /* integer handle of library */
+                char* path,      /* null terminated path */
+                char* retText,   /* return text buffer for fortran*/
+                int path_len,
+                int retText_len /* length of return text buffer */
+                )
+{
+    // int length_in = 0;
+    // int length_out = 0;
+    // int i = 0;
+    const char* xmlText = NULL;
+
+    PyObject* lib = NULL;
+
+    char* inPath = NULL;
+
+    inPath = null_terminate(path,path_len);
+
+    if (rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+
+            if (lib) {
+                // retObj is a borrowed object
+                // whose contents must not be modified
+                xmlText = rpGet(lib, inPath);
+
+                if (xmlText) {
+
+                    fortranify(xmlText, retText, retText_len);
+
+                    /*
+                    length_in = strlen(xmlText);
+                    length_out = retText_len;
+
+                    strncpy(retText, xmlText, length_out);
+
+                    // fortran-ify the string
+                    if (length_in < length_out) {
+                          for (i = length_in; i < length_out; i++) {
+                              retText[i] = ' ';
+                          }
+                    }
+                    *(retText+length_out-1) = ' ';
+                    */
+                }
+            }
+        }
+    }
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+}
+
+double rp_lib_get_double(int* handle,   /* integer handle of library */
+                         char* path,    /* null terminated path */
+                         int path_len)
+{
+    double retVal = 0.0;
+    const char* xmlText = NULL;
+
+    PyObject* lib = NULL;
+
+    char* inPath = NULL;
+
+    inPath = null_terminate(path,path_len);
+
+    path_len = strlen(inPath) + 1;
+
+    if (rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+
+            if (lib) {
+                // retObj is a borrowed object
+                // whose contents must not be modified
+                xmlText = rpGet(lib, inPath);
+
+                if (xmlText) {
+                    retVal = atof(xmlText);
+                }
+            }
+        }
+    }
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    return retVal;
+}
+
+
+void rp_lib_put_str(int* handle,
+                    char* path,
+                    char* value,
+                    int* append,
+                    int path_len,
+                    int value_len)
+{
+    char* inPath = NULL;
+    char* inValue = NULL;
+
+    inPath = null_terminate(path,path_len);
+    inValue = null_terminate(value,value_len);
+
+    if (inPath) {
+        path_len = strlen(inPath) + 1;
+    }
+    else {
+        path_len = 0;
+    }
+
+    if (inValue){
+        value_len = strlen(inValue) + 1;
+    }
+    else {
+        value_len = 0;
+    }
+
+    rp_lib_put_id_str(handle,inPath,inValue,NULL,append,path_len,value_len,0);
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    if (inValue) {
+        free(inValue);
+        inValue = NULL;
+    }
+}
+
+
+void rp_lib_put_id_str(int* handle,
+                       char* path,
+                       char* value,
+                       char* id,
+                       int* append,
+                       int path_len,
+                       int value_len,
+                       int id_len)
+{
+    PyObject* lib = NULL;
+
+    char* inPath = NULL;
+    char* inValue = NULL;
+    char* inId = NULL;
+
+    inPath = null_terminate(path,path_len);
+    inValue = null_terminate(value,value_len);
+    inId = null_terminate(id,id_len);
+
+    if (rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+
+            if (lib) {
+                rpPut(lib, inPath, inValue, inId, *append);
+            }
+        }
+    }
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    if (inValue) {
+        free(inValue);
+        inValue = NULL;
+    }
+
+    if (inId) {
+        free(inId);
+        inId = NULL;
+    }
+}
+
+void rp_lib_put_obj(int* handle,
+                    char* path,
+                    int* valHandle,
+                    int* append,
+                    int path_len)
+{
+    char* inPath = NULL;
+
+    inPath = null_terminate(path,path_len);
+
+    if (inPath) {
+        path_len = strlen(inPath) + 1;
+    }
+
+    rp_lib_put_id_obj(handle,inPath,valHandle,NULL,append,path_len,0);
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+}
+
+void rp_lib_put_id_obj(int* handle,
+                       char* path,
+                       int* valHandle,
+                       char* id,
+                       int* append,
+                       int path_len,
+                       int id_len)
+{
+    PyObject* lib = NULL;
+    PyObject* value = NULL;
+
+    char* inPath = NULL;
+    char* inId = NULL;
+
+    inPath = null_terminate(path,path_len);
+    inId = null_terminate(id,id_len);
+
+    if (rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+            value = getObject(*valHandle);
+
+            if (lib && value) {
+                // retObj is a borrowed object
+                // whose contents must not be modified
+                rpPutObj(lib, inPath, value, inId, *append);
+            }
+        }
+    }
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    if (inId) {
+        free(inId);
+        inId = NULL;
+    }
+}
+
+int rp_lib_remove(int* handle, char* path, int path_len)
+{
+    int newObjHandle = -1;
+
+    PyObject* lib = NULL;
+    PyObject* removedObj = NULL;
+
+    char* inPath = NULL;
+
+    inPath = null_terminate(path,path_len);
+
+    if (rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+
+            if (lib) {
+                removedObj = rpRemove(lib, inPath);
+
+                if (removedObj) {
+                    newObjHandle = storeObject(removedObj);
+                    // Py_DECREF(removedObj);
+                }
+            }
+        }
+    }
+
+    if (inPath) {
+        free(inPath);
+        inPath = NULL;
+    }
+
+    return newObjHandle;
+}
+
+int rp_lib_xml_len(int* handle)
+{
+    int length = -1;
+    char* xmlText = NULL;
+
+    PyObject* lib = NULL;
+
+    if (rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+
+            if (lib) {
+                // dont modify xmlText, borrowed pointer
+                xmlText = rpXml(lib);
+
+                if (xmlText) {
+                    length = strlen(xmlText) + 1;
+                    free(xmlText);
+                    // printf("len = :%d:\n",length);
+                }
+            }
+        }
+    }
+    return length;
+}
+
+void rp_lib_xml(int* handle, char* retText, int retText_len)
+{
+    // int length_in = 0;
+    // int length_out = 0;
+    // int i = 0;
+    char* xmlText = NULL;
+
+    PyObject* lib = NULL;
+
+    if (rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+
+            if (lib) {
+                xmlText = rpXml(lib);
+
+                if (xmlText) {
+
+                    fortranify(xmlText, retText, retText_len);
+
+                    /*
+                    length_in = strlen(xmlText);
+                    length_out = retText_len;
+
+                    strncpy(retText, xmlText, length_out);
+
+                    // fortran-ify the string
+                    if (length_in < length_out) {
+                          for (i = length_in; i < length_out; i++) {
+                              retText[i] = ' ';
+                          }
+                    }
+                    *(retText+length_out-1) = ' ';
+                    */
+
+                    free(xmlText);
+                }
+            }
+        }
+    }
+}
+
+int rp_lib_write_xml(int* handle, char* outFile, int outFile_len)
+{
+    int retVal = -1;
+    PyObject* lib = NULL;
+    FILE* outFH = NULL;
+    char* inOutFile = NULL;
+    char* xmlText = NULL;
+
+    inOutFile = null_terminate(outFile, outFile_len);
+
+    if (inOutFile && (inOutFile != "") ) {
+        outFH = fopen(inOutFile, "w");
+    }
+
+    if (outFH && rapptureStarted) {
+        if ((handle) && (*handle != 0)) {
+            lib = getObject(*handle);
+
+            if (lib) {
+                xmlText = rpXml(lib);
+                if (xmlText) {
+                    retVal = fputs(xmlText,outFH);
+                    free(xmlText);
+                }
+            }
+        }
+    }
+
+    if (outFH) {
+        fclose(outFH);
+        outFH = NULL;
+    }
+
+    if (inOutFile) {
+        free(inOutFile);
+        inOutFile = NULL;
+    }
+
+    return retVal;
+}
+
+void rp_quit()
+{
+
+    // clean up python's memory
+    // shut down the python interpreter
+    // clean up the dictionary
+
+    RpDictEntry DICT_TEMPLATE *hPtr;
+    // RpDictIterator DICT_TEMPLATE iter((RpDict&)*this);
+    RpDictIterator DICT_TEMPLATE iter(fortObjDict);
+
+    hPtr = iter.first();
+
+    while (hPtr) {
+        Py_DECREF(*(hPtr->getValue()));
+        hPtr->erase();
+        hPtr = iter.next();
+    }
+
+    if (fortObjDict.size()) {
+        // probably want to change the warning sometime
+        // printf("\nWARNING: internal dictionary is not empty..deleting\n");
+    }
+
+    rapptureStarted = 0;
+    // Py_Finalize();
+}
+
+void rp_result(int* handle)
+{
+    PyObject* lib = NULL;
+
+    if (rapptureStarted && handle && *handle != 0) {
+        lib = getObject(*handle);
+        if (lib) {
+            rpResult(lib);
+        }
+    }
+    rp_quit();
+}
+
+int objType( char* flavor)
+{
+    if (flavor == NULL) {
+        // return a PyObject*
+        return 0;
+    }
+    else if ((*flavor == 'o') && (strncmp(flavor,"object", 6) == 0)) {
+        // return a PyObject*
+        return 0;
+    }
+    else if (((*flavor == 't') && (strncmp(flavor,"type", 4) == 0)) ||
+             ((*flavor == 'i') && (strncmp(flavor,"id", 2) == 0)) ||
+             ((*flavor == 'c') && (strncmp(flavor,"component", 9) == 0)))
+    {
+        // return a char*
+        // convert the result to c style strings
+        return 1;
+    }
+    else {
+        // unrecognized format
+        return -1;
+    }
+}
+
+int storeObject(PyObject* objectName)
+{
+    int retVal = -1;
+    int dictKey = fortObjDict.size();
+    int newEntry = 0;
+
+    if (objectName) {
+        // dictionary returns a reference to the inserted value
+        // no error checking to make sure it was successful in entering
+        // the new entry.
+        fortObjDict.set(dictKey,objectName, &newEntry);
+    }
+
+    retVal = dictKey;
+    return retVal;
+}
+
+PyObject* getObject(int objKey)
+{
+    PyObject* retVal = *(fortObjDict.find(objKey).getValue());
+
+    if (retVal == *(fortObjDict.getNullEntry().getValue())) {
+        retVal = NULL;
+    }
+
+   return retVal;
+}
Index: /tags/1.6.0/src/core/scew/attribute.c
===================================================================
--- /tags/1.6.0/src/core/scew/attribute.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/attribute.c	(revision 6168)
@@ -0,0 +1,134 @@
+/**
+ *
+ * @file     attribute.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 00:41
+ * @brief    SCEW attribute type implementation
+ *
+ * $Id: attribute.c,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+#include "xattribute.h"
+
+#include "xerror.h"
+#include "xelement.h"
+
+#include "str.h"
+
+#include <assert.h>
+#include <string.h>
+
+
+scew_attribute*
+scew_attribute_create(XML_Char const* name, XML_Char const* value)
+{
+    return attribute_create(name, value);
+}
+
+void
+scew_attribute_free(scew_attribute* attribute)
+{
+    attribute_free(attribute);
+}
+
+unsigned int
+scew_attribute_count(scew_element const* element)
+{
+    assert(element != NULL);
+
+    return element->attributes->size;
+}
+
+scew_attribute*
+scew_attribute_next(scew_element const* element,
+                    scew_attribute const* attribute)
+{
+    scew_attribute *next_attribute;
+
+    if (attribute == NULL)
+    {
+	if (element == NULL)
+    	{
+            return NULL;
+	}
+	next_attribute = element->attributes->first;
+    }
+    else
+    {
+	next_attribute = attribute->next;
+    }
+
+    return next_attribute;
+}
+
+scew_attribute*
+scew_attribute_by_index(scew_element const* element, unsigned int idx)
+{
+    return attribute_by_index(element->attributes, idx);
+}
+
+scew_attribute*
+scew_attribute_by_name(scew_element const* element, XML_Char const* name)
+{
+    return attribute_by_name(element->attributes, name);
+}
+
+XML_Char const*
+scew_attribute_name(scew_attribute const* attribute)
+{
+    assert(attribute != NULL);
+
+    return attribute->name;
+}
+
+XML_Char const*
+scew_attribute_value(scew_attribute const* attribute)
+{
+    assert(attribute != NULL);
+
+    return attribute->value;
+}
+
+XML_Char const*
+scew_attribute_set_name(scew_attribute* attribute, XML_Char const* name)
+{
+    assert(attribute != NULL);
+    assert(name != NULL);
+
+    free(attribute->name);
+    attribute->name = scew_strdup(name);
+
+    return attribute->name;
+}
+
+XML_Char const*
+scew_attribute_set_value(scew_attribute* attribute, XML_Char const* value)
+{
+    assert(attribute != NULL);
+    assert(value != NULL);
+
+    free(attribute->value);
+    attribute->value = scew_strdup(value);
+
+    return attribute->value;
+}
Index: /tags/1.6.0/src/core/scew/attribute.h
===================================================================
--- /tags/1.6.0/src/core/scew/attribute.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/attribute.h	(revision 6168)
@@ -0,0 +1,138 @@
+/**
+ *
+ * @file     attribute.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 00:39
+ * @brief    SCEW attribute type declaration
+ *
+ * $Id: attribute.h,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ *
+ * Attribute related functions. SCEW provides functions to access and
+ * manipulate the attributes of all the elements in a tree. XML element
+ * attributes are basically a name-value pair.
+ */
+
+
+#ifndef ATTRIBUTE_H_ALEIX0211250039
+#define ATTRIBUTE_H_ALEIX0211250039
+
+#include "types.h"
+
+#include <expat.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * Creates a new attribute with the given pair (name, value).
+ *
+ * @return the new created attribute.
+ */
+extern scew_attribute*
+scew_attribute_create(XML_Char const* name, XML_Char const* value);
+
+/**
+ * Frees an attribute memory structure. That is, its name and value. You
+ * should not call this function with an attribute coming from an
+ * element, but created with <code>scew_attribute_create</code>.
+ */
+extern void
+scew_attribute_free(scew_attribute* attribute);
+
+/**
+ * Returns the number of attributes of the specified element. An element
+ * can have zero or more attributes.
+ */
+extern unsigned int
+scew_attribute_count(scew_element const* element);
+
+/**
+ * Returns the <code>element</code>'s first attribute if
+ * <code>attribute</code> is NULL, otherwise it returns the contiguous
+ * attribute to the given one.
+ *
+ * Call this function a first time with <code>attribute</code> to NULL
+ * and the first attribute will be returned. In the subsequent calls you
+ * just need to provide the attribute returned and its contiguous
+ * attribute will be returned.
+ *
+ * @return the first attribute of an element or a contiguous
+ * attribute. NULL if there are no more attributes.
+ */
+extern scew_attribute*
+scew_attribute_next(scew_element const* element,
+                    scew_attribute const* attribute);
+
+/**
+ * Returns the element attribute on the specified position. Positions
+ * are zero based.
+ *
+ * @return the attribute on the specified position, NULL if there is no
+ * attribute in the position.
+ */
+extern scew_attribute*
+scew_attribute_by_index(scew_element const* element, unsigned int idx);
+
+/**
+ * Returns the element attribute with the specified name. Remember that
+ * XML names are case-sensitive.
+ *
+ * @return the attribute with the given name, NULL if not found.
+ */
+extern scew_attribute*
+scew_attribute_by_name(scew_element const* element, XML_Char const* name);
+
+/**
+ * Returns the attribute name or NULL if the attribute does not exist.
+ */
+extern XML_Char const*
+scew_attribute_name(scew_attribute const* attribute);
+
+/**
+ * Returns the attribute value or NULL if the attribute does not exist.
+ */
+extern XML_Char const*
+scew_attribute_value(scew_attribute const* attribute);
+
+/**
+ * Sets a new name to the given attribute and frees the old one.
+ *
+ * @return the new attribute name.
+ */
+extern XML_Char const*
+scew_attribute_set_name(scew_attribute* attribute, XML_Char const* name);
+
+/**
+ * Sets a new value to the given attribute and frees the old one.
+ *
+ * @return the new attribute value.
+ */
+extern XML_Char const*
+scew_attribute_set_value(scew_attribute* attribute, XML_Char const* name);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* ATTRIBUTE_H_ALEIX0211250039 */
Index: /tags/1.6.0/src/core/scew/element.c
===================================================================
--- /tags/1.6.0/src/core/scew/element.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/element.c	(revision 6168)
@@ -0,0 +1,358 @@
+/**
+ *
+ * @file     element.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 00:48
+ * @brief    SCEW element type implementation
+ *
+ * $Id: element.c,v 1.2 2004/02/18 21:51:31 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+#include "xelement.h"
+
+#include "xerror.h"
+
+#include "str.h"
+
+#include <assert.h>
+#include <string.h>
+
+
+scew_element*
+scew_element_create(XML_Char const* name)
+{
+    scew_element* element = NULL;
+
+    assert(name != NULL);
+
+    element = (scew_element*) calloc(1, sizeof(scew_element));
+    if (element != NULL)
+    {
+        element->name = scew_strdup(name);
+        element->attributes = attribute_list_create();
+    }
+    else
+    {
+        set_last_error(scew_error_no_memory);
+    }
+
+    return element;
+}
+
+void
+scew_element_free(scew_element* element)
+{
+    scew_element* left = NULL;
+    scew_element* right = NULL;
+
+    if (element == NULL)
+    {
+        return;
+    }
+
+    left = element->left;
+    right = element->right;
+    if (left != NULL)
+    {
+        left->right = right;
+    }
+    if (right != NULL)
+    {
+        right->left = left;
+    }
+
+    free(element->name);
+    free(element->contents);
+    attribute_list_free(element->attributes);
+
+    if (element->parent != NULL)
+    {
+ 	if (element->parent->child == element)
+	{
+            element->parent->child = element->right;
+	}
+ 	if (element->parent->last_child == element)
+	{
+            element->parent->last_child = element->left;
+	}
+        element->parent->n_children--;
+    }
+
+    while (element->child != NULL)
+    {
+        scew_element_free(element->child);
+    }
+
+    free(element);
+}
+
+unsigned int
+scew_element_count(scew_element const* parent)
+{
+    assert(parent != NULL);
+
+    return parent->n_children;
+}
+
+scew_element*
+scew_element_next(scew_element const* parent, scew_element const* element)
+{
+    scew_element *next_element;
+
+    if (element == NULL)
+    {
+        if (parent == NULL)
+  	{
+            return NULL;
+        }
+        next_element = parent->child;
+    }
+    else
+    {
+        next_element = element->right;
+    }
+
+    return next_element;
+}
+
+scew_element*
+scew_element_by_index(scew_element* parent, unsigned int idx)
+{
+    unsigned int i = 0;
+    scew_element* element = NULL;
+
+    assert(parent != NULL);
+    assert(idx < parent->n_children);
+
+    element = parent->child;
+    for (i = 0; (i < idx) && (element != NULL); ++i)
+    {
+        element = element->right;
+    }
+
+    return element;
+}
+
+scew_element*
+scew_element_by_name(scew_element const* parent, XML_Char const* name)
+{
+    scew_element* element = NULL;
+
+    assert(parent != NULL);
+
+    if (name == NULL)
+    {
+        return NULL;
+    }
+
+    element = scew_element_next(parent, 0);
+    while (element && scew_strcmp(element->name, name))
+    {
+        element = scew_element_next(parent, element);
+    }
+
+    return element;
+}
+
+scew_element**
+scew_element_list(scew_element const* parent, XML_Char const* name,
+                  unsigned int* count)
+{
+    unsigned int curr = 0;
+    unsigned int max = 0;
+    scew_element** list = NULL;
+    scew_element* element;
+
+    assert(parent != NULL);
+    assert(name != NULL);
+    assert(count != NULL);
+
+    element = scew_element_next(parent, 0);
+    while (element)
+    {
+        if (!scew_strcmp(element->name, name))
+        {
+            if (curr >= max)
+            {
+                max = (max + 1) * 2;
+                list = (scew_element**) realloc(list,
+                                                sizeof(scew_element*) * max);
+                if (!list)
+                {
+                    set_last_error(scew_error_no_memory);
+                    return NULL;
+                }
+            }
+            list[curr++] = element;
+        }
+        element = scew_element_next(parent, element);
+    }
+
+    *count = curr;
+
+    return list;
+}
+
+void
+scew_element_list_free(scew_element** lst)
+{
+    free(lst);
+}
+
+XML_Char const*
+scew_element_name(scew_element const* element)
+{
+    assert(element != NULL);
+
+    return element->name;
+}
+
+XML_Char const*
+scew_element_contents(scew_element const* element)
+{
+    assert(element != NULL);
+
+    return element->contents;
+}
+
+XML_Char const*
+scew_element_set_name(scew_element* element, XML_Char const* name)
+{
+    assert(element != NULL);
+    assert(name != NULL);
+
+    free(element->name);
+    element->name = scew_strdup(name);
+
+    return element->name;
+}
+
+XML_Char const*
+scew_element_set_contents(scew_element* element, XML_Char const* data)
+{
+    assert(element != NULL);
+    assert(data != NULL);
+
+    free(element->contents);
+    element->contents = scew_strdup(data);
+
+    return element->contents;
+}
+
+scew_element*
+scew_element_add(scew_element* element, XML_Char const* name)
+{
+    scew_element* new_elem = scew_element_create(name);
+
+    return scew_element_add_elem(element, new_elem);
+}
+
+scew_element*
+scew_element_add_elem(scew_element* element, scew_element* new_elem)
+{
+    scew_element* current = NULL;
+
+    assert(element != NULL);
+    assert(new_elem != NULL);
+
+    element->n_children++;
+
+    new_elem->parent = element;
+    if (element->child == NULL)
+    {
+        element->child = new_elem;
+    }
+    else
+    {
+        current = element->last_child;
+        current->right = new_elem;
+        new_elem->left = current;
+    }
+    element->last_child = new_elem;
+
+    return new_elem;
+}
+
+void
+scew_element_del(scew_element* element)
+{
+    scew_element_free(element);
+}
+
+void
+scew_element_del_by_name(scew_element* element, XML_Char const* name)
+{
+    scew_element_free(scew_element_by_name(element, name));
+}
+
+void
+scew_element_del_by_index(scew_element* element, unsigned int idx)
+{
+    scew_element_free(scew_element_by_index(element, idx));
+}
+
+void
+scew_element_list_del(scew_element* element, XML_Char const* name)
+{
+    unsigned int i = 0;
+    unsigned int count = 0;
+    scew_element** list = NULL;
+
+    if ((element == NULL) || (name == NULL))
+    {
+        return;
+    }
+
+    list = scew_element_list(element, name, &count);
+    if (list == NULL)
+    {
+        return;
+    }
+
+    for (i = 0; i < count; i++)
+    {
+        scew_element_free(list[i]);
+    }
+    scew_element_list_free(list);
+}
+
+scew_attribute*
+scew_element_add_attr(scew_element* element, scew_attribute* attribute)
+{
+    return attribute_list_add(element->attributes, attribute);
+}
+
+scew_attribute*
+scew_element_add_attr_pair(scew_element* element, XML_Char const* name,
+                           XML_Char const* value)
+{
+    scew_attribute* attribute = scew_attribute_create(name, value);
+
+    return attribute_list_add(element->attributes, attribute);
+}
+
+void
+scew_element_del_attr(scew_element* element, XML_Char const* name)
+{
+    attribute_list_del(element->attributes, name);
+}
Index: /tags/1.6.0/src/core/scew/element.h
===================================================================
--- /tags/1.6.0/src/core/scew/element.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/element.h	(revision 6168)
@@ -0,0 +1,249 @@
+/**
+ *
+ * @file     element.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 00:48
+ * @brief    SCEW element type declaration
+ *
+ * $Id: element.h,v 1.4 2004/03/08 22:46:04 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ *
+ * Element related functions. SCEW provides functions to access and
+ * manipulate the elements of an XML tree.
+ */
+
+
+#ifndef ELEMENT_H_ALEIX0211250048
+#define ELEMENT_H_ALEIX0211250048
+
+#include "types.h"
+
+#include <expat.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * Creates a new element with the given name. This element is not yet
+ * related to any XML tree.
+ */
+extern scew_element*
+scew_element_create(XML_Char const* name);
+
+/**
+ * Frees an element recursively. That is, it frees all his childs and
+ * attributes.
+ */
+extern void
+scew_element_free(scew_element* element);
+
+/**
+ * Returns the number of children of the specified element. An element
+ * can have zero or more children.
+ */
+extern unsigned int
+scew_element_count(scew_element const* element);
+
+/**
+ * Returns the <code>parent</code>'s child element if
+ * <code>element</code> is NULL, otherwise it returns the contiguous
+ * element to the given one.
+ *
+ * Call this function a first time with <code>element</code> to NULL and
+ * a parent's child element will be returned. In the subsequent calls
+ * you just need to provide the element returned and its sibling will be
+ * returned.
+ *
+ * @return a parent's child element or a contiguous element. NULL if
+ * there are no more elements.
+ */
+extern scew_element*
+scew_element_next(scew_element const* parent, scew_element const* element);
+
+/**
+ * Returns the child element on the specified position. Positions are
+ * zero based.
+ *
+ * <b>Note:</b> Do not call this function if you just want to iterate
+ * through the elements, because you would have a serious performance
+ * degradation in large documents. Use <code>scew_element_next</code>
+ * instead.
+ *
+ * This function is for element random access.
+ *
+ * @see scew_element_next
+ *
+ * @return the element on the specified position, NULL if there is no
+ * element in the position.
+ */
+extern scew_element*
+scew_element_by_index(scew_element* parent, unsigned int idx);
+
+/**
+ * Returns the first element child that matches the given name. Remember
+ * that XML names are case-sensitive.
+ *
+ * @return the first element that matches the given name, NULL if not
+ * found.
+ */
+extern scew_element*
+scew_element_by_name(scew_element const* parent, XML_Char const* name);
+
+/**
+ * Returns a list of elements that matches the name specified. The
+ * number of elements is returned in count. The returned pointer must be
+ * freed after using it, calling the <code>scew_element_list_free</code>
+ * function.
+ */
+extern scew_element**
+scew_element_list(scew_element const* parent, XML_Char const* name,
+                  unsigned int* count);
+
+/**
+ * Frees an element list created by <code>scew_element_list</code>.
+ */
+extern void
+scew_element_list_free(scew_element** lst);
+
+/**
+ * Returns the element name or NULL if the element does not exist.
+ */
+extern XML_Char const*
+scew_element_name(scew_element const* element);
+
+/**
+ * Returns the element contents value. That is the contents between the
+ * start and end element tags. Returns NULL if element has no contents.
+ */
+extern XML_Char const*
+scew_element_contents(scew_element const* element);
+
+/**
+ * Sets a new name to the given element and frees the old one.
+ *
+ * @return the new element name.
+ */
+extern XML_Char const*
+scew_element_set_name(scew_element* element, XML_Char const* name);
+
+/**
+ * Sets the new contents to the given element and frees the old one.
+ *
+ * @return the new element's contents.
+ */
+extern XML_Char const*
+scew_element_set_contents(scew_element* element, XML_Char const* data);
+
+/**
+ * Adds a new child to the given element with the specified name.
+ *
+ * @return the new element created.
+ */
+extern scew_element*
+scew_element_add(scew_element* element, XML_Char const* name);
+
+/**
+ * Adds an already existent element (<code>new_elem</code>) as a child
+ * of the given element (<code>element</code>). Note that the element
+ * being added should be a clean element, that is, an element created
+ * with <code>scew_element_create</code>, and not an element from
+ * another XML tree.
+ *
+ * @see scew_element_create
+ *
+ * @return the element added.
+ */
+extern scew_element*
+scew_element_add_elem(scew_element* element, scew_element* new_elem);
+
+/**
+ * This function is equivalent to <code>scew_element_free</code>.
+ *
+ * @see scew_element_free
+ */
+extern void
+scew_element_del(scew_element* element);
+
+/**
+ * Deletes the first child of the given element that matches
+ * <code>name</code>.
+ */
+extern void
+scew_element_del_by_name(scew_element* element, XML_Char const* name);
+
+/**
+ * Deletes the child element at the specified position.
+ */
+extern void
+scew_element_del_by_index(scew_element* element, unsigned int idx);
+
+/**
+ * Deletes all child elements of the given element that match
+ * <code>name</code>. This function will get an element list created by
+ * <code>scew_element_list</code> and will free all the elements in
+ * it. Note that this function is not equivalent to
+ * <code>scew_element_list_free</code>.
+ *
+ * @see scew_element_list
+ */
+extern void
+scew_element_list_del(scew_element* element, XML_Char const* name);
+
+/**
+ * Adds an already created attribute to the element. If the attribute
+ * already exist, the old value will be overwritten. It is important to
+ * note that the attribute given will be part of the element's
+ * attributes (ownership is lost), so it should not be freed, and it
+ * should not be part of another attribute element list.
+ *
+ * @see attribute.h
+ *
+ * @return the new attribute added to the element.
+ */
+scew_attribute*
+scew_element_add_attr(scew_element* element, scew_attribute* attribute);
+
+/**
+ * Adds a new attribute to the given element. An attribute is formed by
+ * a pair (name, value). If the attribute already exist, the old value
+ * will be overwritten.
+ *
+ * @see attribute.h
+ *
+ * @return the new attribute added to the element.
+ */
+extern scew_attribute*
+scew_element_add_attr_pair(scew_element* element,
+                           XML_Char const* name, XML_Char const* value);
+
+/**
+ * Deletes an attribute from an element.
+ */
+extern void
+scew_element_del_attr(scew_element* element, XML_Char const* name);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* ELEMENT_H_ALEIX0211250048 */
Index: /tags/1.6.0/src/core/scew/error.c
===================================================================
--- /tags/1.6.0/src/core/scew/error.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/error.c	(revision 6168)
@@ -0,0 +1,102 @@
+/**
+ *
+ * @file     error.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon May 05, 2003 10:35
+ * @brief    SCEW error handling
+ *
+ * $Id: error.c,v 1.4 2004/05/25 20:23:04 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+#include "error.h"
+
+#include "str.h"
+
+#include "xerror.h"
+#include "xparser.h"
+
+#include <assert.h>
+
+
+scew_error
+scew_error_code()
+{
+    return get_last_error();
+}
+
+XML_Char const*
+scew_error_string(scew_error code)
+{
+    static const XML_Char *message[] = {
+        _XT("No error"),
+        _XT("Out of memory"),
+        _XT("Input/Output error"),
+        _XT("Callback error"),
+        _XT("Internal Expat parser error")
+    };
+
+    assert(sizeof(message) / sizeof(message[0]) == scew_error_count);
+
+    if ((code < 0) || (code > scew_error_count))
+    {
+        // This is not thread safe. Even though, no one should get in
+        // here.
+        static XML_Char unk_message[35];
+        scew_sprintf(unk_message, _XT("Unknown error code (%d)"), code);
+        return unk_message;
+    }
+    else
+    {
+        return message[code];
+    }
+}
+
+enum XML_Error
+scew_error_expat_code(scew_parser* parser)
+{
+    assert(parser != NULL);
+
+    return XML_GetErrorCode(parser->parser);
+}
+
+XML_Char const*
+scew_error_expat_string(enum XML_Error code)
+{
+    return XML_ErrorString(code);
+}
+
+int
+scew_error_expat_line(scew_parser* parser)
+{
+    assert(parser != NULL);
+
+    return XML_GetCurrentLineNumber(parser->parser);
+}
+
+int
+scew_error_expat_column(scew_parser* parser)
+{
+    assert(parser != NULL);
+
+    return XML_GetCurrentColumnNumber(parser->parser);
+}
Index: /tags/1.6.0/src/core/scew/error.h
===================================================================
--- /tags/1.6.0/src/core/scew/error.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/error.h	(revision 6168)
@@ -0,0 +1,117 @@
+/**
+ *
+ * @file     error.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon May 05, 2003 10:29
+ * @brief    SCEW error handling functions
+ *
+ * $Id: error.h,v 1.3 2004/05/25 20:23:04 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ *
+ * These are SCEW error functions which return error codes and
+ * strings. It also return Expat errors.
+ *
+ */
+
+
+#ifndef ERROR_H_ALEIX0305051029
+#define ERROR_H_ALEIX0305051029
+
+#include "types.h"
+
+#include <expat.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * This is the type declaration of the SCEW error. That is, an
+ * enumeration of all SCEW possible errors.
+ */
+typedef enum
+{
+    /** No error has occured. */
+    scew_error_none,
+    /** No more memory available. */
+    scew_error_no_memory,
+    /** General Input/Output error. */
+    scew_error_io,
+    /** Callback error. */
+    scew_error_callback,
+    /** Expat parser error. */
+    scew_error_expat,
+    /** end of list marker */
+    scew_error_count
+} scew_error;
+
+/**
+ * Returns the SCEW internal error code. If the error code returned is
+ * <code>scew_error_expat</code> it means that an internal Expat error
+ * has occurred, so you will probably want to check Expat error using
+ * <code>scew_error_expat_code</code> and
+ * <code>scew_error_expat_string</code>.
+ *
+ * @see scew_error_expat_code
+ * @see scew_error_expat_string
+ */
+extern scew_error
+scew_error_code();
+
+/**
+ * Returns a string describing the internal SCEW error.
+ *
+ * Note: if an unknown error code is given a non thread safe string is
+ * returned.
+ */
+extern XML_Char const*
+scew_error_string(scew_error code);
+
+/**
+ * Returns the Expat internal error code.
+ */
+extern enum XML_Error
+scew_error_expat_code(scew_parser* parser);
+
+/**
+ * Returns a string describing the internal Expat error.
+ */
+extern XML_Char const*
+scew_error_expat_string(enum XML_Error code);
+
+/**
+ * Returns the current line at which the error was detected.
+ */
+extern int
+scew_error_expat_line(scew_parser* parser);
+
+/**
+ * Returns the current column at which the error was detected.
+ */
+extern int
+scew_error_expat_column(scew_parser* parser);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* ERROR_H_ALEIX0305051029 */
Index: /tags/1.6.0/src/core/scew/parser.c
===================================================================
--- /tags/1.6.0/src/core/scew/parser.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/parser.c	(revision 6168)
@@ -0,0 +1,247 @@
+/**
+ *
+ * @file     parser.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 00:58
+ * @brief    SCEW parser type implementation
+ *
+ * $Id: parser.c,v 1.2 2004/05/25 20:23:04 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+#include "parser.h"
+
+#include "tree.h"
+
+#include "xerror.h"
+#include "xparser.h"
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+
+/* This code does not compile under VC .NET */
+/* static int const  MAX_BUFFER_SIZE = 5000; */
+#define MAX_BUFFER_SIZE 5000
+
+
+scew_parser*
+scew_parser_create()
+{
+    scew_parser* parser = NULL;
+
+    parser = (scew_parser*) calloc(1, sizeof(scew_parser));
+    if (parser == NULL)
+    {
+        set_last_error(scew_error_no_memory);
+        return NULL;
+    }
+
+    if (!init_expat_parser(parser))
+    {
+        scew_parser_free(parser);
+        return NULL;
+    }
+
+    /* ignore white spaces by default */
+    parser->ignore_whitespaces = 1;
+
+    /* no callback by default */
+    parser->stream_callback = NULL;
+
+    return parser;
+}
+
+void
+scew_parser_free(scew_parser* parser)
+{
+    if (parser != NULL)
+    {
+        if (parser->parser)
+        {
+            XML_ParserFree(parser->parser);
+        }
+        free(parser);
+    }
+}
+
+unsigned int
+scew_parser_load_file(scew_parser* parser, char const* file_name)
+{
+    FILE* in = NULL;
+    unsigned int res = 0;
+
+    assert(parser != NULL);
+    assert(file_name != NULL);
+
+    in = fopen(file_name, "rb");
+    if (in == NULL)
+    {
+        set_last_error(scew_error_io);
+        return 0;
+    }
+
+    res = scew_parser_load_file_fp(parser, in);
+    fclose(in);
+
+    return res;
+}
+
+unsigned int
+scew_parser_load_file_fp(scew_parser* parser, FILE* in)
+{
+    int len = 0;
+    int done = 0;
+    char buffer[MAX_BUFFER_SIZE];
+
+    assert(parser != NULL);
+    assert(in != NULL);
+
+    while (!done)
+    {
+        len = fread(buffer, 1, MAX_BUFFER_SIZE, in);
+        if (ferror(in))
+        {
+            set_last_error(scew_error_io);
+            return 0;
+        }
+
+        done = feof(in);
+        if (!XML_Parse(parser->parser, buffer, len, done))
+        {
+            set_last_error(scew_error_expat);
+            return 0;
+        }
+    }
+
+    return 1;
+}
+
+unsigned int
+scew_parser_load_buffer(scew_parser* parser, char const* buffer,
+                        unsigned int size)
+{
+    assert(parser != NULL);
+    assert(buffer != NULL);
+
+    if (!XML_Parse(parser->parser, buffer, size, 1))
+    {
+        set_last_error(scew_error_expat);
+        return 0;
+    }
+
+    return 1;
+}
+
+unsigned int
+scew_parser_load_stream(scew_parser* parser, char const* buffer,
+                        unsigned int size)
+{
+    int start;
+    int end;
+    int length;
+
+    assert(parser != NULL);
+    assert(buffer != NULL);
+
+    start = 0;
+    end = 0;
+
+    /**
+     * Loop through the buffer.
+     * if we encounter a '>', send the chunk to Expat.
+     * if we hit the end of the buffer, send whatever remains to Expat.
+     * if the we have a full element (stack is empty) we call the callback.
+     */
+    while ((start < size) && (end <= size))
+    {
+        if ((end == size) || (buffer[end] == '>'))
+        {
+            length = end - start;
+            if (end < size)
+            {
+                length++;
+            }
+
+            if (!XML_Parse(parser->parser, &buffer[start], length, 0))
+            {
+                set_last_error(scew_error_expat);
+                return 0;
+            }
+
+            if ((parser->tree != NULL) && (parser->current == NULL)
+                && (parser->stack == NULL) && parser->stream_callback)
+            {
+                /* tell Expat we're done */
+                XML_Parse(parser->parser, "", 0, 1);
+
+                /* call the callback */
+                if (!parser->stream_callback(parser))
+                {
+                    set_last_error(scew_error_callback);
+                    return 0;
+                }
+
+                XML_ParserFree(parser->parser);
+                scew_tree_free(parser->tree);
+                parser->tree = NULL;
+                init_expat_parser(parser);
+            }
+            start = end + 1;
+        }
+        end++;
+    }
+
+    return 1;
+}
+
+void
+scew_parser_set_stream_callback(scew_parser* parser, SCEW_CALLBACK* cb)
+{
+    assert(parser != NULL);
+
+    parser->stream_callback = cb;
+}
+
+scew_tree*
+scew_parser_tree(scew_parser const* parser)
+{
+    assert(parser != NULL);
+
+    return parser->tree;
+}
+
+XML_Parser
+scew_parser_expat(scew_parser* parser)
+{
+    assert(parser != NULL);
+
+    return parser->parser;
+}
+
+void
+scew_parser_ignore_whitespaces(scew_parser* parser, int ignore)
+{
+    assert(parser != NULL);
+
+    parser->ignore_whitespaces = ignore;
+}
Index: /tags/1.6.0/src/core/scew/parser.h
===================================================================
--- /tags/1.6.0/src/core/scew/parser.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/parser.h	(revision 6168)
@@ -0,0 +1,181 @@
+/**
+ *
+ * @file     parser.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 00:57
+ * @brief    SCEW parser type declaration
+ *
+ * $Id: parser.h,v 1.2 2004/05/25 20:23:05 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ *
+ * These are the parser functions that allow to read an XML tree from a
+ * file or a memory buffer.
+ */
+
+
+#ifndef PARSER_H_ALEIX0211250057
+#define PARSER_H_ALEIX0211250057
+
+#include "types.h"
+
+#include <expat.h>
+
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * Creates a new parser. The parser is needed to load XML documents.
+ */
+extern scew_parser*
+scew_parser_create();
+
+/**
+ * Frees a parser memory structure. This function will <b>not</b> free
+ * the <code>scew_tree</code> generated by the parser, so it is
+ * important that you keep a pointer to it and remember to free it.
+ *
+ * @see scew_tree_free
+ */
+extern void
+scew_parser_free(scew_parser* parser);
+
+/**
+ * Loads an XML tree from the specified file name using the given
+ * parser.
+ *
+ * @param parser the SCEW parser.
+ * @param file_name the file to load the XML from.
+ *
+ * @see scew_parser_create
+ *
+ * @return 1 if file was successfully loaded, 0 otherwise.
+ */
+extern unsigned int
+scew_parser_load_file(scew_parser* parser, char const* file_name);
+
+/**
+ * Loads an XML tree from the specified file pointer using the
+ * given parser.
+ *
+ * @param parser the SCEW parser.
+ * @param in the file pointer to load the XML from.
+ *
+ * @see scew_parser_create
+ *
+ * @return 1 if file was successfully loaded, 0 otherwise.
+ */
+extern unsigned int
+scew_parser_load_file_fp(scew_parser* parser, FILE* in);
+
+/**
+ * Loads an XML tree from the specified memory buffer of the specified
+ * size using the given parser.
+ *
+ * @param parser the SCEW parser.
+ * @param buffer memory buffer to load XML from.
+ * @param size size in bytes of the memory buffer.
+ *
+ * @see scew_parser_create
+ *
+ * @return 1 if buffer was successfully loaded, 0 otherwise.
+ */
+extern unsigned int
+scew_parser_load_buffer(scew_parser* parser, char const* buffer,
+                        unsigned int size);
+
+/**
+ * Loads an XML tree from the specified stream buffer. Will call the
+ * callback (set using scew_parser_set_stream_callback) at the end of
+ * each message.
+ *
+ * @param parser the SCEW parser.
+ * @param buffer memory buffer to load XML from.
+ * @param size size in bytes of the memory buffer.
+ *
+ * @see scew_parser_create
+ * @see scew_parser_set_stream_callback
+ *
+ * @return 1 if buffer was successfully loaded, 0 otherwise.
+ */
+extern unsigned int
+scew_parser_load_stream(scew_parser* parser, char const* buffer,
+                        unsigned int size);
+
+/**
+ * Sets the callback for use when reading streams.
+ *
+ * @param parser the SCEW parser
+ * @param cb the callback function
+ */
+void
+scew_parser_set_stream_callback(scew_parser* parser, SCEW_CALLBACK* cb);
+
+/**
+ * Returns the XML tree read by the parser. Remember that
+ * <code>scew_parser_free</code> does not free the
+ * <code>scew_tree</code> read.
+ *
+ * @see tree.h
+ */
+extern scew_tree*
+scew_parser_tree(scew_parser const* parser);
+
+/**
+ * Returns the internal Expat parser. Probably some low-level Expat
+ * functions need to be called. This function gives you access to the
+ * Expat parser so you will be able to call those functions. If you
+ * modify the Expat parser event handling routines, SCEW will not be
+ * able to load the XML tree.
+ */
+extern XML_Parser
+scew_parser_expat(scew_parser* parser);
+
+/**
+ * Tells the parser how to treat white spaces. The default is to ignore
+ * heading and trailing white spaces.
+ *
+ * There is a new section in XML specification which talks about how to
+ * handle white spaces in XML. One can set an optional attribtue to an
+ * element, this attribute is called 'xml:space', and it can be set to
+ * 'default' or 'preserve', and it inherits its value from parent
+ * elements. 'preserve' means to leave white spaces as their are found,
+ * and 'default' means that white spaces are handled by the XML
+ * processor (Expat in our case) the way it wants to.
+ *
+ * This function gives the possibility to change the XML processor
+ * behaviour.
+ *
+ * @param parser the parser to set the option to.
+ * @param ignore 0 if you do <b>not</b> want to ignore white spaces, any
+ * other value otherwise.
+ */
+extern void
+scew_parser_ignore_whitespaces(scew_parser* parser, int ignore);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* PARSER_H_ALEIX0211250057 */
Index: /tags/1.6.0/src/core/scew/scew.h
===================================================================
--- /tags/1.6.0/src/core/scew/scew.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/scew.h	(revision 6168)
@@ -0,0 +1,72 @@
+/**
+ *
+ * @file     scew.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 01:34
+ * @brief    SCEW main header file
+ *
+ * $Id: scew.h,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @endif
+ */
+
+
+#ifndef SCEW_H_ALEIX0211250134
+#define SCEW_H_ALEIX0211250134
+
+#include "attribute.h"
+#include "element.h"
+#include "error.h"
+#include "parser.h"
+#include "str.h"
+#include "tree.h"
+#include "writer.h"
+
+/* automatically include the correct library on windows */
+#ifdef _WIN32
+
+# ifdef XML_UNICODE_WCHAR_T
+#  define SCEW_LIB_U    "u"
+# else
+#  define SCEW_LIB_U
+# endif /* XML_UNICODE_WCHAR_T */
+
+# ifdef XML_STATIC
+#  define SCEW_LIB_S    "s"
+# else
+#  define SCEW_LIB_S
+# endif /* XML_STATIC */
+
+# ifdef _DEBUG
+#  define SCEW_LIB_D    "d"
+# else
+#  define SCEW_LIB_D
+# endif /* _DEBUG */
+
+# if defined(SCEW_LIB_U) || defined(SCEW_LIB_S) || defined(SCEW_LIB_D)
+# pragma comment( lib, "scew_" SCEW_LIB_U SCEW_LIB_S SCEW_LIB_D ".lib" )
+# else
+# pragma comment( lib, "scew.lib" )
+# endif
+
+#endif /* _WIN32 */
+
+#endif /* SCEW_H_ALEIX0211250134 */
Index: /tags/1.6.0/src/core/scew/scew_extras.c
===================================================================
--- /tags/1.6.0/src/core/scew/scew_extras.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/scew_extras.c	(revision 6168)
@@ -0,0 +1,143 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Extra helper functions for the scew library
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "scew.h"
+#include "xelement.h"
+#include "xattribute.h"
+#include "xerror.h"
+#include "str.h"
+
+#include <assert.h>
+
+#include "scew_extras.h"
+
+scew_element*
+scew_element_parent(scew_element const* element)
+{
+    assert(element != NULL);
+    return element->parent;
+}
+
+scew_element**
+scew_element_list_all(scew_element const* parent, unsigned int* count)
+{
+    unsigned int curr = 0;
+    unsigned int max = 0;
+    scew_element** list = NULL;
+    scew_element* element;
+
+    assert(parent != NULL);
+    assert(count != NULL);
+
+    element = scew_element_next(parent, 0);
+    while (element)
+    {
+        if (curr >= max)
+        {
+            max = (max + 1) * 2;
+            list = (scew_element**) realloc(list,
+                                            sizeof(scew_element*) * max);
+            if (!list)
+            {
+                set_last_error(scew_error_no_memory);
+                return NULL;
+            }
+        }
+        list[curr++] = element;
+
+        element = scew_element_next(parent, element);
+    }
+
+    *count = curr;
+
+    return list;
+}
+
+int
+scew_element_copy_attr(scew_element const* fromElement, scew_element* toElement)
+{
+    scew_attribute* attribute = NULL;
+    XML_Char const* attrVal   = NULL;
+    XML_Char const* attrName  = NULL;
+    int attrCount = 0;
+    int attrAdded = 0;
+
+    if ( (fromElement) && (toElement) && (fromElement != toElement) )
+    {
+        if ((attrCount = scew_attribute_count(fromElement)) > 0) {
+
+            while((attribute=scew_attribute_next(fromElement, attribute)) != NULL)
+            {
+                attrName = scew_attribute_name(attribute),
+                attrVal = scew_attribute_value(attribute);
+                if (scew_element_add_attr_pair(toElement, attrName, attrVal)) {
+                    attrAdded++;
+                }
+            }
+        }
+        else {
+            // there are no attributes, count == 0
+        }
+    }
+
+    return (attrCount - attrAdded);
+}
+
+scew_element*
+scew_element_copy (scew_element* element)
+{
+    XML_Char const* name = NULL;
+    XML_Char const* contents = NULL;
+    scew_element* new_elem = NULL;
+    scew_element* new_child = NULL;
+    scew_element* childNode = NULL;
+
+    name = scew_element_name(element);
+    contents = scew_element_contents(element);
+
+    new_elem = scew_element_create(name);
+    scew_element_set_name(new_elem,name);
+    if (contents) {
+        scew_element_set_contents(new_elem, contents);
+    }
+    scew_element_copy_attr(element,new_elem);
+
+    while ( (childNode = scew_element_next(element,childNode)) ) {
+        new_child = scew_element_copy(childNode);
+        scew_element_add_elem(new_elem, new_child);
+    }
+
+    return new_elem;
+}
+
+
+XML_Char const*
+scew_element_set_contents_binary(   scew_element* element,
+                                    XML_Char const* bytes,
+                                    unsigned int* nbytes    )
+{
+    XML_Char* out = NULL;
+
+    assert(element != NULL);
+    assert(bytes != NULL);
+    assert(nbytes != NULL);
+
+    if (*nbytes == 0) {
+        return element->contents;
+    }
+
+    free(element->contents);
+    out = (XML_Char*) calloc(*nbytes+1, sizeof(XML_Char));
+    element->contents = (XML_Char*) scew_memcpy(out, (XML_Char*)bytes, *nbytes);
+
+    return element->contents;
+}
Index: /tags/1.6.0/src/core/scew/scew_extras.h
===================================================================
--- /tags/1.6.0/src/core/scew/scew_extras.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/scew_extras.h	(revision 6168)
@@ -0,0 +1,39 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern scew_element*
+scew_element_parent(scew_element const* element);
+
+/**
+ * Returns a list of elements that matches the name specified. The
+ * number of elements is returned in count. The returned pointer must be
+ * freed after using it, calling the <code>scew_element_list_free</code>
+ * function.
+ */
+extern scew_element**
+scew_element_list_all(scew_element const* parent, unsigned int* count);
+
+extern int
+scew_element_copy_attr(scew_element const* fromElement, scew_element* toElement);
+
+extern scew_element*
+scew_element_copy (scew_element* element);
+
+extern XML_Char const*
+scew_element_set_contents_binary(   scew_element* element,
+                                    XML_Char const* bytes,
+                                    unsigned int* nbytes    );
+
+#ifdef __cplusplus
+}
+#endif
+
Index: /tags/1.6.0/src/core/scew/str.c
===================================================================
--- /tags/1.6.0/src/core/scew/str.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/str.c	(revision 6168)
@@ -0,0 +1,73 @@
+/**
+ *
+ * @file     str.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 23:32
+ * @brief    SCEW string functions
+ *
+ * $Id: str.c,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @endif
+ */
+
+#include "str.h"
+
+#include "xerror.h"
+#include "str.h"
+
+#include <assert.h>
+
+XML_Char*
+scew_strdup(XML_Char const* src)
+{
+    unsigned int len = 0;
+    XML_Char* out = NULL;
+
+    assert(src != NULL);
+
+    len = scew_strlen(src);
+    out = (XML_Char*) calloc(len + 1, sizeof(XML_Char));
+    return (XML_Char*) scew_memcpy(out, (XML_Char*) src, len);
+}
+
+void
+scew_strtrim(XML_Char* src)
+{
+    int start = 0;
+    int end = 0;
+    int total = 0;
+
+    assert(src != NULL);
+
+    end = scew_strlen(src);
+
+    /* strip trailing whitespace */
+    while (end > 0 && scew_isspace(src[end-1]))
+    {
+        src[--end] = '\0';
+    }
+
+    /* strip leading whitespace */
+    start = scew_strspn(src, _XT(" \n\r\t\v") );
+    total = end - start;
+    scew_memmove(src, &src[start], total);
+    src[total] = _XT('\0');
+}
Index: /tags/1.6.0/src/core/scew/str.h
===================================================================
--- /tags/1.6.0/src/core/scew/str.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/str.h	(revision 6168)
@@ -0,0 +1,123 @@
+/**
+ *
+ * @file     str.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Sun Dec 01, 2002 13:05
+ * @brief    SCEW string functions
+ *
+ * $Id: str.h,v 1.2 2004/01/29 00:34:38 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @endif
+ */
+
+
+#ifndef STR_H_ALEIX0212011305
+#define STR_H_ALEIX0212011305
+
+#include <expat.h>
+
+#include <string.h>
+
+#define scew_memcpy(dst,src,n)  memcpy(dst,src,sizeof(XML_Char)*(n))
+#define scew_memmove(dst,src,n) memmove(dst,src,sizeof(XML_Char)*(n))
+
+#ifdef XML_UNICODE_WCHAR_T
+
+#include <wchar.h>
+#include <wctype.h>
+
+#define _XT(str)                L##str
+
+#define scew_fprintf            fwprintf
+#define scew_sprintf            swprintf
+
+#define scew_strcmp(s1,s2)      wcscmp(s1,s2)
+#define scew_strspn(s1,s2)      wcsspn(s1,s2)
+#define scew_strcpy(s1,s2)      wcscpy(s1,s2)
+#define scew_strcat(s1,s2)      wcscat(s1,s2)
+#define scew_strncpy(s1,s2,n)   wcsncpy(s1,s2,n)
+#define scew_strncat(s1,s2,n)   wcsncat(s1,s2,n)
+#define scew_strlen(s)          wcslen(s)
+
+#define scew_isalnum(c)         iswalnum((c))
+#define scew_isalpha(c)         iswalpha((c))
+#define scew_iscntrl(c)         iswcntrl((c))
+#define scew_isdigit(c)         iswdigit((c))
+#define scew_isxdigit(c)        iswxdigit((c))
+#define scew_isgraph(c)         iswgraph((c))
+#define scew_islower(c)         iswlower((c))
+#define scew_isupper(c)         iswupper((c))
+#define scew_isprint(c)         iswprint((c))
+#define scew_ispunct(c)         iswpunct((c))
+#define scew_isspace(c)         iswspace((c))
+
+#else /* not XML_UNICODE_WCHAR_T */
+
+#include <ctype.h>
+
+#define _XT(str)                str
+
+#define scew_fprintf            fprintf
+#define scew_sprintf            sprintf
+
+#define scew_strcmp(s1,s2)      strcmp(s1,s2)
+#define scew_strspn(s1,s2)      strspn(s1,s2)
+#define scew_strcpy(s1,s2)      strcpy(s1,s2)
+#define scew_strcat(s1,s2)      strcat(s1,s2)
+#define scew_strncpy(s1,s2,n)   strncpy(s1,s2,n)
+#define scew_strncat(s1,s2,n)   strncat(s1,s2,n)
+#define scew_strlen(s)          strlen(s)
+
+#define scew_isalnum(c)         isalnum((unsigned char)(c))
+#define scew_isalpha(c)         isalpha((unsigned char)(c))
+#define scew_iscntrl(c)         iscntrl((unsigned char)(c))
+#define scew_isdigit(c)         isdigit((unsigned char)(c))
+#define scew_isxdigit(c)        isxdigit((unsigned char)(c))
+#define scew_isgraph(c)         isgraph((unsigned char)(c))
+#define scew_islower(c)         islower((unsigned char)(c))
+#define scew_isupper(c)         isupper((unsigned char)(c))
+#define scew_isprint(c)         isprint((unsigned char)(c))
+#define scew_ispunct(c)         ispunct((unsigned char)(c))
+#define scew_isspace(c)         isspace((unsigned char)(c))
+
+#endif /* XML_UNICODE_WCHAR_T */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * Creates a new copy of the given string. Client must free it.
+ */
+extern XML_Char*
+scew_strdup(XML_Char const* src);
+
+/**
+ * Trims off extra spaces from the beginning and end of a string.
+ */
+extern void
+scew_strtrim(XML_Char* src);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* STR_H_ALEIX0212011305 */
Index: /tags/1.6.0/src/core/scew/tree.c
===================================================================
--- /tags/1.6.0/src/core/scew/tree.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/tree.c	(revision 6168)
@@ -0,0 +1,124 @@
+/**
+ *
+ * @file     tree.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Thu Feb 20, 2003 23:45
+ * @brief    SCEW tree type declaration
+ *
+ * $Id: tree.c,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+#include "tree.h"
+
+#include "str.h"
+
+#include "xerror.h"
+#include "xtree.h"
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+
+
+scew_tree*
+scew_tree_create()
+{
+    scew_tree* tree = NULL;
+
+    tree = (scew_tree*) calloc(1, sizeof(scew_tree));
+    if (tree == NULL)
+    {
+        set_last_error(scew_error_no_memory);
+    }
+
+    return tree;
+}
+
+void
+scew_tree_free(scew_tree* tree)
+{
+    if (tree != NULL)
+    {
+        free(tree->version);
+        free(tree->encoding);
+        scew_element_free(tree->root);
+        free(tree);
+    }
+}
+
+scew_element*
+scew_tree_root(scew_tree const* tree)
+{
+    assert(tree != NULL);
+
+    return tree->root;
+}
+
+scew_element*
+scew_tree_add_root(scew_tree* tree, XML_Char const* name)
+{
+    scew_element* root = NULL;
+
+    assert(tree != NULL);
+    assert(name != NULL);
+
+    root = scew_element_create(name);
+    tree->root = root;
+
+    return root;
+}
+
+void
+scew_tree_set_xml_version(scew_tree* tree, XML_Char const* version)
+{
+    assert(tree != NULL);
+
+    free(tree->version);
+    tree->version = scew_strdup(version);
+}
+
+void
+scew_tree_set_xml_encoding(scew_tree* tree, XML_Char const* encoding)
+{
+    assert(tree != NULL);
+
+    free(tree->encoding);
+    tree->encoding = scew_strdup(encoding);
+}
+
+void
+scew_tree_set_xml_preamble(scew_tree* tree, XML_Char const* preamble)
+{
+    assert(tree != NULL);
+
+    free(tree->preamble);
+    tree->preamble = scew_strdup(preamble);
+}
+
+void
+scew_tree_set_xml_standalone(scew_tree* tree, int standalone)
+{
+    assert(tree != NULL);
+
+    tree->standalone = standalone;
+}
Index: /tags/1.6.0/src/core/scew/tree.h
===================================================================
--- /tags/1.6.0/src/core/scew/tree.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/tree.h	(revision 6168)
@@ -0,0 +1,119 @@
+/**
+ *
+ * @file     tree.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Thu Feb 20, 2003 23:32
+ * @brief    SCEW tree type declaration
+ *
+ * $Id: tree.h,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ *
+ * Tree related functions. SCEW provides functions to create new XML
+ * trees.
+ */
+
+
+#ifndef TREE_H_ALEIX0302202332
+#define TREE_H_ALEIX0302202332
+
+#include "types.h"
+
+#include <expat.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * Creates a new empty XML tree in memory. You can also have access to
+ * the tree created by the parser when reading an XML file.
+ *
+ * @see parser.h
+ */
+extern scew_tree*
+scew_tree_create();
+
+/**
+ * Frees a tree memory structure. Call this function when you are done
+ * with your XML. Do not call this function with a
+ * <code>scew_tree</code> obtained via a <code>scew_parser</code>,
+ * because <code>scew_parser</code> will delete it automatically when
+ * freed.
+ */
+extern void
+scew_tree_free(scew_tree* tree);
+
+/**
+ * Returns the root element of the given tree.
+ *
+ * @see element.h
+ */
+extern scew_element*
+scew_tree_root(scew_tree const* tree);
+
+/**
+ * Creates the first element (root) of an XML tree with the given name.
+ *
+ * @see element.h
+ */
+extern scew_element*
+scew_tree_add_root(scew_tree* tree, XML_Char const* name);
+
+/**
+ * Sets the XML version in the XML declaration. Currently there is one
+ * XML version, so the value is always 1.0. If there were more XML
+ * versions, this proerty tells the XML processor which one to use.
+ */
+extern void
+scew_tree_set_xml_version(scew_tree* tree, XML_Char const* version);
+
+/**
+ * Sets the character encoding used in the XML document. The default is
+ * UTF-8.
+ */
+extern void
+scew_tree_set_xml_encoding(scew_tree* tree, XML_Char const* encoding);
+
+/**
+ * Sets the preamble string for the XML document. Typically this
+ * will contain a DOCTYPE declaration.
+ */
+extern void
+scew_tree_set_xml_preamble(scew_tree* tree, XML_Char const* preamble);
+
+/**
+ * The standalone property tells the XML processor whether there are any
+ * other extra files to load, such as external entities or DTDs. If the
+ * XML document can stand on its own set it to 'yes'. The default SCEW
+ * value is 'no', so the XML processor will load what it needs to.
+ *
+ * @param tree the tree to set the option to.
+ * @param standalone 0 means 'no', any other value means 'yes'.
+ */
+extern void
+scew_tree_set_xml_standalone(scew_tree* tree, int standalone);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* TREE_H_ALEIX0302202332 */
Index: /tags/1.6.0/src/core/scew/types.h
===================================================================
--- /tags/1.6.0/src/core/scew/types.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/types.h	(revision 6168)
@@ -0,0 +1,70 @@
+/**
+ *
+ * @file     types.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Sat Mar 29, 2003 19:50
+ * @brief    SCEW main types definition
+ *
+ * $Id: types.h,v 1.2 2004/05/25 20:23:05 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+
+#ifndef TYPES_H_ALEIX0303291951
+#define TYPES_H_ALEIX0303291951
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * This is the type declaration of the SCEW parser.
+ */
+typedef struct _scew_parser scew_parser;
+
+/**
+ * This is the type delcaration for XML trees.
+ */
+typedef struct _scew_tree scew_tree;
+
+/**
+ * This is the type delcaration for elements.
+ */
+typedef struct _scew_element scew_element;
+
+/**
+ * This is the type declaration for element attributes.
+ */
+typedef struct _scew_attribute scew_attribute;
+
+/**
+ * Callback function type.
+ *
+ * @return 1 if callback call had no errors, 0 otherwise.
+ */
+typedef unsigned int SCEW_CALLBACK(scew_parser* parser);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* TYPES_H_ALEIX0303291951 */
Index: /tags/1.6.0/src/core/scew/writer.c
===================================================================
--- /tags/1.6.0/src/core/scew/writer.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/writer.c	(revision 6168)
@@ -0,0 +1,71 @@
+/**
+ *
+ * @file     writer.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Thu Sep 11, 2003 00:39
+ * @brief    SCEW writer functions
+ *
+ * $Id: writer.c,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+#include "writer.h"
+
+#include "str.h"
+
+#include "xerror.h"
+#include "xprint.h"
+
+#include <assert.h>
+
+unsigned int
+scew_writer_tree_file(scew_tree const* tree, char const* file_name)
+{
+    FILE* out = NULL;
+
+    assert(tree != NULL);
+    assert(file_name != NULL);
+
+    out = fopen(file_name, "w");
+    if (out == NULL)
+    {
+        set_last_error(scew_error_io);
+        return 0;
+    }
+
+    scew_writer_tree_fp(tree, out);
+
+    fclose(out);
+
+    return 1;
+}
+
+unsigned int
+scew_writer_tree_fp(scew_tree const* tree, FILE* out)
+{
+    assert(tree != NULL);
+    assert(out != NULL);
+
+    tree_print(tree, out);
+
+    return 1;
+}
Index: /tags/1.6.0/src/core/scew/writer.h
===================================================================
--- /tags/1.6.0/src/core/scew/writer.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/writer.h	(revision 6168)
@@ -0,0 +1,66 @@
+/**
+ *
+ * @file     writer.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Thu Sep 11, 2003 00:36
+ * @brief    SCEW writer functions
+ *
+ * $Id: writer.h,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+
+#ifndef WRITER_H_ALEIX0309110036
+#define WRITER_H_ALEIX0309110036
+
+#include "types.h"
+
+#include <expat.h>
+
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/**
+ * Saves an XML tree to the specified file. If the file doesn't exist it
+ * will create it, and if it exists it will overwrite it.
+ *
+ * @return 1 if tree was successfully saved, 0 otherwise.
+ */
+extern unsigned int
+scew_writer_tree_file(scew_tree const* tree, char const* file_name);
+
+/**
+ * Saves an XML tree to the already created file pointer.
+ *
+ * @return 1 if tree was successfully saved, 0 otherwise.
+ */
+extern unsigned int
+scew_writer_tree_fp(scew_tree const* tree, FILE* out);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* WRITER_H_ALEIX0309110036 */
Index: /tags/1.6.0/src/core/scew/xattribute.c
===================================================================
--- /tags/1.6.0/src/core/scew/xattribute.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xattribute.c	(revision 6168)
@@ -0,0 +1,237 @@
+/**
+ *
+ * @file     xattribute.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Dec 02, 2002 23:03
+ * @brief    SCEW private attribute type declaration
+ *
+ * $Id: xattribute.c,v 1.2 2004/02/25 20:33:40 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+#include "xattribute.h"
+
+#include "xerror.h"
+
+#include "str.h"
+
+#include <assert.h>
+#include <string.h>
+
+
+scew_attribute*
+attribute_create(XML_Char const* name, XML_Char const* value)
+{
+    scew_attribute* attribute = NULL;
+
+    assert(name != NULL);
+    assert(value != NULL);
+
+    attribute = (scew_attribute*) calloc(1, sizeof(scew_attribute));
+    if (attribute == NULL)
+    {
+        set_last_error(scew_error_no_memory);
+        return NULL;
+    }
+    attribute->name = scew_strdup(name);
+    attribute->value = scew_strdup(value);
+
+    return attribute;
+}
+
+void
+attribute_free(scew_attribute* attribute)
+{
+    if (attribute != NULL)
+    {
+        free(attribute->name);
+        free(attribute->value);
+        free(attribute);
+    }
+}
+
+attribute_list*
+attribute_list_create()
+{
+    attribute_list* list = NULL;
+
+    list = (attribute_list*) calloc(1, sizeof(attribute_list));
+    if (list == NULL)
+    {
+        set_last_error(scew_error_no_memory);
+    }
+
+    return list;
+}
+
+void
+attribute_list_free(attribute_list* list)
+{
+    scew_attribute* it = NULL;
+    scew_attribute* tmp = NULL;
+
+    if (list == NULL)
+    {
+        return;
+    }
+
+    it = list->first;
+    while (it != NULL)
+    {
+        tmp = it;
+        it = it->next;
+        attribute_free(tmp);
+    }
+
+    free(list);
+}
+
+scew_attribute*
+attribute_list_add(attribute_list* list, scew_attribute* attribute)
+{
+    scew_attribute* aux = NULL;
+
+    assert(list != NULL);
+    assert(attribute != NULL);
+
+    aux = attribute_by_name(list, attribute->name);
+    if (aux != NULL)
+    {
+        if (aux->prev != NULL)
+        {
+            aux->prev->next = attribute;
+        }
+        if (aux->next != NULL)
+        {
+            aux->next->prev = attribute;
+        }
+        if (list->first == aux)
+        {
+            list->first = attribute;
+        }
+        if (list->last == aux)
+        {
+            list->last = attribute;
+        }
+        attribute->prev = aux->prev;
+        attribute->next = aux->next;
+        attribute_free(aux);
+        return attribute;
+    }
+
+    list->size++;
+    if (list->first == NULL)
+    {
+        list->first = attribute;
+    }
+    else
+    {
+        list->last->next = attribute;
+        attribute->prev = list->last;
+    }
+    list->last = attribute;
+
+    return attribute;
+}
+
+void
+attribute_list_del(attribute_list* list, XML_Char const* name)
+{
+    scew_attribute* attribute = NULL;
+    scew_attribute* tmp_prev = NULL;
+    scew_attribute* tmp_next = NULL;
+
+    if ((list == NULL) || (name == NULL))
+    {
+        return;
+    }
+
+    attribute = attribute_by_name(list, name);
+
+    if (attribute != NULL)
+    {
+        tmp_prev = attribute->prev;
+        tmp_next = attribute->next;
+        if (tmp_prev != NULL)
+        {
+            tmp_prev->next = tmp_next;
+        }
+        if (tmp_next != NULL)
+        {
+            tmp_next->prev = tmp_prev;
+        }
+
+        if (attribute == list->first)
+        {
+            list->first = tmp_next;
+        }
+
+        if (attribute == list->last)
+        {
+            list->last = tmp_prev;
+        }
+
+        attribute_free(attribute);
+        list->size--;
+    }
+}
+
+scew_attribute*
+attribute_by_index(attribute_list* list, unsigned int idx)
+{
+    unsigned int i = 0;
+    scew_attribute* attribute = NULL;
+
+    if (list == NULL)
+    {
+        return NULL;
+    }
+    assert(idx < list->size);
+
+    attribute = list->first;
+    for (i = 0; (i < idx) && (attribute != NULL); ++i)
+    {
+        attribute = attribute->next;
+    }
+
+    return attribute;
+}
+
+scew_attribute*
+attribute_by_name(attribute_list* list, XML_Char const* name)
+{
+    scew_attribute* attribute = NULL;
+
+    assert(list != NULL);
+    if (name == NULL)
+    {
+        return NULL;
+    }
+
+    attribute = list->first;
+    while (attribute && scew_strcmp(attribute->name, name))
+    {
+        attribute = attribute->next;
+    }
+
+    return attribute;
+}
Index: /tags/1.6.0/src/core/scew/xattribute.h
===================================================================
--- /tags/1.6.0/src/core/scew/xattribute.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xattribute.h	(revision 6168)
@@ -0,0 +1,91 @@
+/**
+ *
+ * @file     xattribute.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 00:54
+ * @brief    SCEW private attribute type declaration
+ *
+ * $Id: xattribute.h,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+
+#ifndef XATTRIBUTE_H_ALEIX0211250054
+#define XATTRIBUTE_H_ALEIX0211250054
+
+#include "attribute.h"
+
+#include <expat.h>
+
+
+struct _scew_attribute
+{
+    XML_Char* name;
+    XML_Char* value;
+    scew_element const* element;
+
+    scew_attribute* prev;
+    scew_attribute* next;
+};
+
+/* Doubly linked list */
+typedef struct
+{
+    unsigned int size;
+    scew_attribute* first;
+    scew_attribute* last;
+} attribute_list;
+
+
+/* Creates a new attribute from the given pair (name, value). */
+scew_attribute*
+attribute_create(XML_Char const* name, XML_Char const* value);
+
+/* Frees an attribute structure. */
+void
+attribute_free(scew_attribute* attribute);
+
+/* Creates a new attribute list. */
+attribute_list*
+attribute_list_create();
+
+/* Frees an attribute list. */
+void
+attribute_list_free(attribute_list* list);
+
+/* Adds a new element to the attribute list. */
+scew_attribute*
+attribute_list_add(attribute_list* list, scew_attribute* attribute);
+
+/* Deletes an attribute from an attribute list. */
+void
+attribute_list_del(attribute_list* list, XML_Char const* name);
+
+/* Return the attribute in position idx. */
+scew_attribute*
+attribute_by_index(attribute_list* list, unsigned int idx);
+
+/* Return the attribute that matches name. */
+scew_attribute*
+attribute_by_name(attribute_list* list, XML_Char const* name);
+
+#endif /* XATTRIBUTE_H_ALEIX0211250054 */
Index: /tags/1.6.0/src/core/scew/xelement.h
===================================================================
--- /tags/1.6.0/src/core/scew/xelement.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xelement.h	(revision 6168)
@@ -0,0 +1,61 @@
+/**
+ *
+ * @file     xelement.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 00:55
+ * @brief    SCEW private element type declaration
+ *
+ * $Id: xelement.h,v 1.2 2004/03/08 22:36:38 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+
+#ifndef XELEMENT_H_ALEIX0211250055
+#define XELEMENT_H_ALEIX0211250055
+
+#include "element.h"
+
+#include "xattribute.h"
+
+
+/* Triply linked tree node */
+struct _scew_element
+{
+    XML_Char* name;
+    XML_Char* contents;
+    size_t used;			/* # bytes used for contents. */
+    size_t allocated;			/* # bytes allocated for contents */
+    attribute_list* attributes;
+
+    unsigned int n_children;
+
+    /* Immediately neighbour pointers */
+    scew_element* parent;
+    scew_element* child;
+    scew_element* left;
+    scew_element* right;
+
+    /* Last element in list */
+    scew_element* last_child;
+};
+
+#endif /* XELEMENT_H_ALEIX0211250055 */
Index: /tags/1.6.0/src/core/scew/xerror.c
===================================================================
--- /tags/1.6.0/src/core/scew/xerror.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xerror.c	(revision 6168)
@@ -0,0 +1,147 @@
+/**
+ *
+ * @file     xerror.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon May 05, 2003 10:41
+ * @brief    Internal error functions
+ *
+ * $Id: xerror.c,v 1.2 2004/01/29 00:13:42 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+#include "xerror.h"
+
+#ifndef _MT
+/* single-threaded version */
+
+static scew_error last_error = scew_error_none;
+
+void
+set_last_error(scew_error code)
+{
+    last_error = code;
+}
+
+scew_error
+get_last_error()
+{
+    return last_error;
+}
+
+#else /* _MT */
+/* multi-threaded versions */
+
+#ifdef _MSC_VER
+/* Microsoft Visual C++ multi-thread version */
+
+/**
+ * Note: This code isn't 100% thread safe without an initializer called
+ * from a single-thread first. The current problem is the small chance
+ * that another thread could enter the if() statement which initializes
+ * the TLS variable before the current thread calls TlsAlloc(). This
+ * would result in TlsAlloc() being called twice losing the first TLS
+ * index and possibly the first thread's error value. However with the
+ * current API, this is the best we can do.
+ */
+
+#define WIN32_LEAN_AND_MEAN
+
+#include <windows.h>
+
+static DWORD last_error_key = TLS_OUT_OF_INDEXES;
+
+void
+set_last_error(scew_error code)
+{
+    if (last_error_key == TLS_OUT_OF_INDEXES)
+    {
+        last_error_key = TlsAlloc();
+    }
+    TlsSetValue(last_error_key, (LPVOID) code);
+}
+
+scew_error
+get_last_error()
+{
+    if (last_error_key == TLS_OUT_OF_INDEXES)
+    {
+        last_error_key = TlsAlloc();
+        TlsSetValue(last_error_key, (LPVOID) scew_error_none);
+    }
+    return (scew_error) TlsGetValue(last_error_key);
+}
+
+#else /* _MSC_VER */
+/* pthread multi-threaded version */
+
+#include <pthread.h>
+
+static pthread_key_t key_error;
+static pthread_once_t key_once = PTHREAD_ONCE_INIT;
+
+void
+create_keys()
+{
+    scew_error* code = NULL;
+
+    pthread_key_create(&key_error, free);
+
+    code = (scew_error*) malloc(sizeof(scew_error));
+    *code = scew_error_none;
+    pthread_setspecific(key_error, code);
+}
+
+void
+set_last_error(scew_error code)
+{
+    scew_error* old_code = NULL;
+    scew_error* new_code = NULL;
+
+    /* Initialize error code per thread */
+    pthread_once(&key_once, create_keys);
+
+    old_code = (scew_error*) pthread_getspecific(key_error);
+    new_code = (scew_error*) malloc(sizeof(scew_error));
+    *new_code = code;
+    free(old_code);
+    pthread_setspecific(key_error, new_code);
+}
+
+scew_error
+get_last_error()
+{
+    scew_error* code = NULL;
+
+    /* Initialize error code per thread */
+    pthread_once(&key_once, create_keys);
+
+    code = (scew_error*) pthread_getspecific(key_error);
+    if (code == NULL)
+    {
+        return scew_error_none;
+    }
+    return *code;
+}
+
+#endif /* _MSC_VER */
+
+#endif /* _MT */
Index: /tags/1.6.0/src/core/scew/xerror.h
===================================================================
--- /tags/1.6.0/src/core/scew/xerror.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xerror.h	(revision 6168)
@@ -0,0 +1,46 @@
+/**
+ *
+ * @file     xerror.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon May 05, 2003 10:40
+ * @brief    Internal error functions
+ *
+ * $Id: xerror.h,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+
+#ifndef XERROR_H_ALEIX0305051040
+#define XERROR_H_ALEIX0305051040
+
+#include "error.h"
+
+
+/* Sets SCEW internal last error. */
+void
+set_last_error(scew_error code);
+
+/* Gets SCEW internal last error. */
+scew_error
+get_last_error();
+
+#endif /* XERROR_H_ALEIX0305051040 */
Index: /tags/1.6.0/src/core/scew/xhandler.c
===================================================================
--- /tags/1.6.0/src/core/scew/xhandler.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xhandler.c	(revision 6168)
@@ -0,0 +1,205 @@
+/**
+ *
+ * @file     xhandler.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 00:21
+ * @brief    SCEW Expat handlers
+ *
+ * $Id: xhandler.c,v 1.2 2004/05/25 20:23:05 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+#include "xhandler.h"
+
+#include "xparser.h"
+
+#include "str.h"
+
+#include <stdio.h>
+
+void
+xmldecl_handler(void* data, XML_Char const* version, XML_Char const* encoding,
+                int standalone)
+{
+    scew_parser* parser = (scew_parser*) data;
+
+    /* Avoid warning: standalone is unused */
+    (void) standalone;
+
+    if (parser == NULL)
+    {
+        return;
+    }
+
+    if (parser->tree == NULL)
+    {
+        parser->tree = scew_tree_create();
+    }
+
+    if (parser->tree == NULL)
+    {
+        return;
+    }
+
+    if (version != NULL)
+    {
+        parser->tree->version = scew_strdup(version);
+    }
+    if (encoding != NULL)
+    {
+        parser->tree->encoding = scew_strdup(encoding);
+    }
+
+    /* by now, we ignore standalone attribute */
+}
+
+void
+start_handler(void* data, XML_Char const* elem, XML_Char const** attr)
+{
+    int i = 0;
+    scew_parser* parser = (scew_parser*) data;
+
+    if (parser == NULL)
+    {
+        return;
+    }
+
+    if ((parser->tree == NULL) || (scew_tree_root(parser->tree) == NULL))
+    {
+        if (parser->tree == NULL)
+        {
+            parser->tree = scew_tree_create();
+        }
+        parser->current = scew_tree_add_root(parser->tree, elem);
+    }
+    else
+    {
+        stack_push(&parser->stack, parser->current);
+        parser->current = scew_element_add(parser->current, elem);
+    }
+
+    for (i = 0; attr[i]; i += 2)
+    {
+        scew_element_add_attr_pair(parser->current, attr[i], attr[i + 1]);
+    }
+}
+
+void
+end_handler(void* data, XML_Char const* elem)
+{
+    XML_Char* contents = NULL;
+    scew_element* current = NULL;
+    scew_parser* parser = (scew_parser*) data;
+
+    /* Avoid warning: elem is unused */
+    (void) elem;
+
+    if (parser == NULL)
+    {
+        return;
+    }
+
+    current = parser->current;
+    if ((current != NULL) && (current->contents != NULL))
+    {
+        if (parser->ignore_whitespaces)
+        {
+            scew_strtrim(current->contents);
+            if (scew_strlen(current->contents) == 0)
+            {
+                free(current->contents);
+                current->contents = NULL;
+            }
+        }
+        else
+        {
+            contents = scew_strdup(current->contents);
+            scew_strtrim(contents);
+            if (scew_strlen(contents) == 0)
+            {
+                free(current->contents);
+                current->contents = NULL;
+            }
+            free(contents);
+        }
+    }
+    parser->current = stack_pop(&parser->stack);
+}
+
+void
+char_handler(void* data, XML_Char const* s, int len)
+{
+    size_t need;
+    scew_element* elemPtr;
+    scew_parser* parser = (scew_parser*) data;
+
+    if (parser == NULL) {
+        return;
+    }
+
+    elemPtr = parser->current;
+    if (elemPtr == NULL) {
+        return;
+    }
+    if (len == 0) {
+	return;
+    }
+    need = elemPtr->used + len;	
+#ifdef notdef
+    fprintf(stderr, "char handler %x allocated=%d used=%d, len=%d need=%d\n", 
+	    elemPtr->contents, elemPtr->allocated, elemPtr->used, len, need);
+#endif
+    if (need > elemPtr->allocated) {
+	XML_Char *bytes;
+	size_t size;
+
+	if (elemPtr->allocated == 0) {
+	    size = len;			/* Start with given size. */
+	} else {
+	    size = elemPtr->allocated;
+	    while (size < need) {
+		size += size;		/* Double the current size. */
+	    }
+	}
+#ifdef notdef
+	fprintf(stderr, "trying to allocate %d bytes for character data\n",
+		    size);
+#endif
+	/* Always allocate an extra byte for the NUL, but don't include it in
+	 * the allocated or used totals. */
+	if (elemPtr->contents == NULL) {
+	    bytes = malloc(size + 1);
+	} else {
+	    bytes = realloc(elemPtr->contents, size + 1);
+	}
+	if (bytes == NULL) {
+	    fprintf(stderr, "can't allocated %lu bytes for character data\n",
+		    size);
+	    return;
+	}
+	elemPtr->contents = bytes;
+	elemPtr->allocated = size;
+    }
+    strncpy(elemPtr->contents + elemPtr->used, s, len);
+    elemPtr->used += len;
+    elemPtr->contents[elemPtr->used] = '\0';
+}
Index: /tags/1.6.0/src/core/scew/xhandler.h
===================================================================
--- /tags/1.6.0/src/core/scew/xhandler.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xhandler.h	(revision 6168)
@@ -0,0 +1,54 @@
+/**
+ *
+ * @file     xhandler.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 00:23
+ * @brief    SCEW Expat handlers
+ *
+ * $Id: xhandler.h,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+
+#ifndef XHANDLER_H_ALEIX0211250023
+#define XHANDLER_H_ALEIX0211250023
+
+#include <expat.h>
+
+/* Expat callback for XML declaration. */
+void
+xmldecl_handler(void* data, XML_Char const* version, XML_Char const* encoding,
+                int standalone);
+
+/* Expat callback for starting elements. */
+void
+start_handler(void* data, XML_Char const* elem, XML_Char const** attr);
+
+/* Expat callback for ending elements. */
+void
+end_handler(void* data, XML_Char const* elem);
+
+/* Expat callback for element contents. */
+void
+char_handler(void* data, XML_Char const* s, int len);
+
+#endif /* XHANDLER_H_ALEIX0211250023 */
Index: /tags/1.6.0/src/core/scew/xparser.c
===================================================================
--- /tags/1.6.0/src/core/scew/xparser.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xparser.c	(revision 6168)
@@ -0,0 +1,105 @@
+/**
+ *
+ * @file     xparser.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Tue Dec 03, 2002 00:21
+ * @brief    SCEW private parser type declaration
+ *
+ * $Id: xparser.c,v 1.2 2004/05/25 20:23:05 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+#include "xparser.h"
+
+#include "xerror.h"
+#include "xhandler.h"
+
+#include <assert.h>
+
+unsigned int
+init_expat_parser(scew_parser* parser)
+{
+    assert(parser != NULL);
+
+    parser->parser = XML_ParserCreate(NULL);
+    if (parser->parser == NULL)
+    {
+        set_last_error(scew_error_no_memory);
+        return 0;
+    }
+
+    /* initialize Expat handlers */
+    XML_SetXmlDeclHandler(parser->parser, xmldecl_handler);
+    XML_SetElementHandler(parser->parser, start_handler, end_handler);
+    //
+    // commented out the line below because when using the
+    // CharacterData Handler, expat replaces all entity references like,
+    // &lt; and &gt;, with their equivalent translation. in this case,
+    // actual '<' and '>' are placed in the xml file. to get around this, 
+    // XML_SetCharacterDataHandler was replaced with XML_SetDefaultHandler
+    // the translation will be done when by the end user of this library.
+    // dsk 20060402
+    //
+    // XML_SetCharacterDataHandler(parser->parser, char_handler);
+    XML_SetDefaultHandler(parser->parser, char_handler);
+    XML_SetUserData(parser->parser, parser);
+
+    return 1;
+}
+
+stack_element*
+stack_push(stack_element** stack, scew_element* element)
+{
+    stack_element* new_elem = (stack_element*) calloc(1, sizeof(stack_element));
+
+    if (new_elem != NULL)
+    {
+        new_elem->element = element;
+        if (stack != NULL)
+        {
+            new_elem->prev = *stack;
+        }
+        *stack = new_elem;
+    }
+
+    return new_elem;
+}
+
+scew_element*
+stack_pop(stack_element** stack)
+{
+    scew_element* element = NULL;
+    stack_element* sk_elem = NULL;
+
+    if (stack != NULL)
+    {
+        sk_elem = *stack;
+        if (sk_elem != NULL)
+        {
+            *stack = sk_elem->prev;
+            element = sk_elem->element;
+            free(sk_elem);
+        }
+    }
+
+    return element;
+}
Index: /tags/1.6.0/src/core/scew/xparser.h
===================================================================
--- /tags/1.6.0/src/core/scew/xparser.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xparser.h	(revision 6168)
@@ -0,0 +1,70 @@
+/**
+ *
+ * @file     xparser.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Mon Nov 25, 2002 00:57
+ * @brief    SCEW private parser type declaration
+ *
+ * $Id: xparser.h,v 1.2 2004/05/25 20:23:05 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2002, 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * @endif
+ */
+
+
+#ifndef XPARSER_H_ALEIX0211250057
+#define XPARSER_H_ALEIX0211250057
+
+#include "parser.h"
+
+#include "xtree.h"
+#include "xelement.h"
+
+
+/* Stack to keep previous parsed elements */
+typedef struct _stack_element
+{
+    scew_element* element;
+    struct _stack_element* prev;
+} stack_element;
+
+struct _scew_parser
+{
+    XML_Parser parser;      /* Expat parser */
+    scew_tree* tree;        /* XML document tree */
+    scew_element* current;  /* Current parsed element */
+    stack_element* stack;   /* Current parsed element stack */
+    int ignore_whitespaces; /* 1 if ignore white spaces, 0 otherwise */
+    SCEW_CALLBACK* stream_callback; /* Function to call while reading streams */
+};
+
+/* Creates and initializes Expat parser. */
+unsigned int
+init_expat_parser(scew_parser* parser);
+
+/* Pushes an element into the stack. */
+stack_element*
+stack_push(stack_element** stack, scew_element* element);
+
+/* Pops an element from the stack. */
+scew_element*
+stack_pop(stack_element** stack);
+
+#endif /* XPARSER_H_ALEIX0211250057 */
Index: /tags/1.6.0/src/core/scew/xprint.c
===================================================================
--- /tags/1.6.0/src/core/scew/xprint.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xprint.c	(revision 6168)
@@ -0,0 +1,135 @@
+/**
+ *
+ * @file     xtree.c
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Sun Mar 30, 2003 13:23
+ * @brief    SCEW private tree type declaration
+ *
+ * $Id: xprint.c,v 1.2 2004/03/20 11:14:22 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @endif
+ */
+
+#include "xprint.h"
+#include "str.h"
+
+/* indentation size (in whitespaces) */
+static int const indent_size = 3;
+
+void
+indent_print(FILE* out, unsigned int indent)
+{
+    unsigned int i = 0;
+
+    for (i = 0; i < indent * indent_size; i++)
+    {
+        scew_fprintf(out, _XT(" "));
+    }
+}
+
+void
+tree_print(scew_tree const* tree, FILE* out)
+{
+    static XML_Char const* version = _XT("1.0");
+#ifdef XML_UNICODE_WCHAR_T
+    static XML_Char const* encoding = _XT("UTF-16");
+#else
+    static XML_Char const* encoding = _XT("UTF-8");
+#endif /* XML_UNICODE_WCHAR_T */
+
+    scew_fprintf(
+        out,
+        _XT("<?xml version=\"%s\" encoding=\"%s\" standalone=\"%s\"?>\n\n"),
+        (tree->version == NULL ? version : tree->version),
+        (tree->encoding == NULL ? encoding : tree->encoding),
+        (tree->standalone > 0 ? _XT("yes") : _XT("no")));
+
+    element_print(tree->root, out, 0);
+}
+
+void
+element_print(scew_element const* element, FILE* out, unsigned int indent)
+{
+    unsigned int closed = 0;
+    XML_Char const* contents;
+    scew_element* child = NULL;
+    scew_attribute* attribute = NULL;
+
+    if (element == NULL)
+    {
+        return;
+    }
+
+    indent_print(out, indent);
+    scew_fprintf(out, _XT("<%s"), scew_element_name(element));
+    attribute = NULL;
+    while ((attribute = scew_attribute_next(element, attribute)) != NULL)
+    {
+        attribute_print(attribute, out);
+    }
+
+    contents = scew_element_contents(element);
+    if ((contents == NULL) && (element->child == NULL)
+        && (element->parent != NULL))
+    {
+		scew_fprintf(out, _XT("/>\n"));
+        closed = 1;
+    }
+    else
+    {
+        scew_fprintf(out, _XT(">"));
+        if (contents == NULL)
+        {
+            scew_fprintf(out, _XT("\n"));
+        }
+    }
+
+    child = NULL;
+    while ((child = scew_element_next(element, child)) != NULL)
+    {
+        element_print(child, out, indent + 1);
+    }
+
+    if (contents != NULL)
+    {
+        scew_fprintf(out, _XT("%s"), contents);
+    }
+    else if (!closed)
+    {
+        indent_print(out, indent);
+    }
+
+    if (!closed)
+    {
+        scew_fprintf(out, _XT("</%s>\n"), scew_element_name(element));
+    }
+}
+
+void
+attribute_print(scew_attribute const* attribute, FILE* out)
+{
+    if (attribute == NULL)
+    {
+        return;
+    }
+
+    scew_fprintf(out, _XT(" %s=\"%s\""), attribute->name, attribute->value);
+}
Index: /tags/1.6.0/src/core/scew/xprint.h
===================================================================
--- /tags/1.6.0/src/core/scew/xprint.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xprint.h	(revision 6168)
@@ -0,0 +1,56 @@
+/**
+ *
+ * @file     xprint.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Sun Mar 30, 2003 13:30
+ * @brief    SCEW print functions
+ *
+ * $Id: xprint.h,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @endif
+ */
+
+
+#ifndef XPRINT_H_ALEIX0303301330
+#define XPRINT_H_ALEIX0303301330
+
+#include "xtree.h"
+
+#include <stdio.h>
+
+
+/* Prints space indentation. */
+void
+indent_print(FILE* out, unsigned int indent);
+
+/* Prints an XML tree into a file. */
+void
+tree_print(scew_tree const* tree, FILE* out);
+
+/* Prints an XML element into a file. */
+void
+element_print(scew_element const* element, FILE* out, unsigned int indent);
+
+/* Prints an XML attribute pair into a file. */
+void
+attribute_print(scew_attribute const* attribute, FILE* out);
+
+#endif /* XPRINT_H_ALEIX0303301330 */
Index: /tags/1.6.0/src/core/scew/xtree.h
===================================================================
--- /tags/1.6.0/src/core/scew/xtree.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew/xtree.h	(revision 6168)
@@ -0,0 +1,48 @@
+/**
+ *
+ * @file     xtree.h
+ * @author   Aleix Conchillo Flaque <aleix@member.fsf.org>
+ * @date     Thu Feb 20, 2003 23:48
+ * @brief    SCEW private tree type declaration
+ *
+ * $Id: xtree.h,v 1.1 2004/01/28 00:43:21 aleix Exp $
+ *
+ * @if copyright
+ *
+ * Copyright (C) 2003, 2004 Aleix Conchillo Flaque
+ *
+ * SCEW is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SCEW 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @endif
+ */
+
+
+#ifndef XTREE_H_ALEIX0302202348
+#define XTREE_H_ALEIX0302202348
+
+#include "tree.h"
+
+#include "xelement.h"
+
+struct _scew_tree
+{
+    XML_Char* version;
+    XML_Char* encoding;
+    XML_Char* preamble;
+    int standalone;
+    scew_element* root;
+};
+
+#endif /* XTREE_H_ALEIX0302202348 */
Index: /tags/1.6.0/src/core/scew_extras.c
===================================================================
--- /tags/1.6.0/src/core/scew_extras.c	(revision 6168)
+++ /tags/1.6.0/src/core/scew_extras.c	(revision 6168)
@@ -0,0 +1,140 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Extra helper functions for the scew library
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "scew/scew.h"
+#include "scew/xelement.h"
+#include "scew/xattribute.h"
+#include "scew/xerror.h"
+#include "scew/str.h"
+#include "scew_extras.h"
+#include <assert.h>
+
+scew_element*
+scew_element_parent(scew_element const* element)
+{
+    assert(element != NULL);
+    return element->parent;
+}
+
+scew_element**
+scew_element_list_all(scew_element const* parent, unsigned int* count)
+{
+    unsigned int curr = 0;
+    unsigned int max = 0;
+    scew_element** list = NULL;
+    scew_element* element;
+
+    assert(parent != NULL);
+    assert(count != NULL);
+
+    element = scew_element_next(parent, 0);
+    while (element)
+    {
+        if (curr >= max)
+        {
+            max = (max + 1) * 2;
+            list = (scew_element**) realloc(list,
+                                            sizeof(scew_element*) * max);
+            if (!list)
+            {
+                set_last_error(scew_error_no_memory);
+                return NULL;
+            }
+        }
+        list[curr++] = element;
+
+        element = scew_element_next(parent, element);
+    }
+
+    *count = curr;
+
+    return list;
+}
+
+int
+scew_element_copy_attr(scew_element const* fromElement, scew_element* toElement)
+{
+    scew_attribute* attribute = NULL;
+    XML_Char const* attrVal   = NULL;
+    XML_Char const* attrName  = NULL;
+    int attrCount = 0;
+    int attrAdded = 0;
+
+    if ( (fromElement) && (toElement) && (fromElement != toElement) )
+    {
+        if ((attrCount = scew_attribute_count(fromElement)) > 0) {
+
+            while((attribute=scew_attribute_next(fromElement, attribute)) != NULL)
+            {
+                attrName = scew_attribute_name(attribute),
+                attrVal = scew_attribute_value(attribute);
+                if (scew_element_add_attr_pair(toElement, attrName, attrVal)) {
+                    attrAdded++;
+                }
+            }
+        }
+        else {
+            // there are no attributes, count == 0
+        }
+    }
+
+    return (attrCount - attrAdded);
+}
+
+scew_element*
+scew_element_copy (scew_element* element)
+{
+    XML_Char const* name = NULL;
+    XML_Char const* contents = NULL;
+    scew_element* new_elem = NULL;
+    scew_element* new_child = NULL;
+    scew_element* childNode = NULL;
+
+    name = scew_element_name(element);
+    contents = scew_element_contents(element);
+
+    new_elem = scew_element_create(name);
+    scew_element_set_name(new_elem,name);
+    if (contents) {
+        scew_element_set_contents(new_elem, contents);
+    }
+    scew_element_copy_attr(element,new_elem);
+
+    while ( (childNode = scew_element_next(element,childNode)) ) {
+        new_child = scew_element_copy(childNode);
+        scew_element_add_elem(new_elem, new_child);
+    }
+
+    return new_elem;
+}
+
+XML_Char const*
+scew_element_set_contents_binary(scew_element* element,
+                                 XML_Char const* bytes,
+                                 unsigned int* nbytes)
+{
+    XML_Char* out = NULL;
+
+    assert(element != NULL);
+    assert(nbytes != NULL);
+    if (*nbytes == 0) {
+        return element->contents;
+    }
+    assert(bytes != NULL);
+
+    free(element->contents);
+    out = (XML_Char*) calloc(*nbytes+1, sizeof(XML_Char));
+    element->contents = (XML_Char*) scew_memcpy(out, (XML_Char*)bytes, *nbytes);
+
+    return element->contents;
+}
Index: /tags/1.6.0/src/core/scew_extras.h
===================================================================
--- /tags/1.6.0/src/core/scew_extras.h	(revision 6168)
+++ /tags/1.6.0/src/core/scew_extras.h	(revision 6168)
@@ -0,0 +1,39 @@
+/*
+ * ======================================================================
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern scew_element*
+scew_element_parent(scew_element const* element);
+
+/**
+ * Returns a list of elements that matches the name specified. The
+ * number of elements is returned in count. The returned pointer must be
+ * freed after using it, calling the <code>scew_element_list_free</code>
+ * function.
+ */
+extern scew_element**
+scew_element_list_all(scew_element const* parent, unsigned int* count);
+
+extern int
+scew_element_copy_attr(scew_element const* fromElement, scew_element* toElement);
+
+extern scew_element*
+scew_element_copy (scew_element* element);
+
+extern XML_Char const*
+scew_element_set_contents_binary(   scew_element* element,
+                                    XML_Char const* bytes,
+                                    unsigned int* nbytes    );
+
+#ifdef __cplusplus
+}
+#endif
+
Index: /tags/1.6.0/src/core2/DOXYGEN-TIPS
===================================================================
--- /tags/1.6.0/src/core2/DOXYGEN-TIPS	(revision 6168)
+++ /tags/1.6.0/src/core2/DOXYGEN-TIPS	(revision 6168)
@@ -0,0 +1,17 @@
+/**
+ * Method documentation.
+ * @param x The parameter.
+ * @return The return value.
+ * @see anotherFunction()
+@param var desc...   	Document a parameter called var to a function or method.
+@return desc... 	Document the return value of a function.
+@see elem 	Add a "see also" link to elem , which can be a function, class, or any other documented identifier.
+@author name 	Indicate the author of an element.
+@author name 	Indicate the author of an element.
+@version ver 	Indicate the version of an element.
+@todo desc... 	Leave a note about unfinished work.
+@warning desc... 	Leave a warning.
+ */
+
+/** Single-line documentation. */    
+/// Single-line documentation.
Index: /tags/1.6.0/src/core2/Doxyfile
===================================================================
--- /tags/1.6.0/src/core2/Doxyfile	(revision 6168)
+++ /tags/1.6.0/src/core2/Doxyfile	(revision 6168)
@@ -0,0 +1,1237 @@
+# Doxyfile 1.4.5
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project.
+
+PROJECT_NAME           = Rappture
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER         = 
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = ../../docs/rappture2
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE        = English
+
+# This tag can be used to specify the encoding used in the generated output. 
+# The encoding is not always determined by the language that is chosen, 
+# but also whether or not the output is meant for Windows or non-Windows users. 
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
+# forces the Windows encoding (this is the default for the Windows binary), 
+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING   = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES        = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user-defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like the Qt-style comments (thus requiring an 
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
+# sources only. Doxygen will then generate output that is more tailored for Java. 
+# For instance, namespaces will be presented as packages, qualified scopes 
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to 
+# include (a tag file for) the STL sources as input, then you should 
+# set this tag to YES in order to let doxygen match functions declarations and 
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
+# func(std::string) {}). This also make the inheritance and collaboration 
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
+# file names in lower-case letters. If set to YES upper-case letters are also 
+# allowed. This is useful if you have classes or files whose names only differ 
+# in case and if your file system supports case sensitive file names. Windows 
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
+# will show members with their full class and namespace scopes in the 
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put a list of the files that are included by a file in the documentation 
+# of that file.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
+# disable (NO) the todo list. This list is created by putting \todo 
+# commands in the documentation.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
+# disable (NO) the test list. This list is created by putting \test 
+# commands in the documentation.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
+# disable (NO) the bug list. This list is created by putting \bug 
+# commands in the documentation.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
+# the initial value of a variable or define consists of for it to appear in 
+# the documentation. If the initializer consists of more lines than specified 
+# here it will be hidden. Use a value of 0 to hide initializers completely. 
+# The appearance of the initializer of individual variables and defines in the 
+# documentation can be controlled using \showinitializer or \hideinitializer 
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
+# at the bottom of the documentation of classes and structs. If set to YES the 
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES        = YES
+
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is YES.
+
+SHOW_DIRECTORIES       = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from the 
+# version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the program writes to standard output 
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = .
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
+
+FILE_PATTERNS          = *.h *.cpp
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included.
+
+EXAMPLE_PATTERNS       = 
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command).
+
+IMAGE_PATH             = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
+# INPUT_FILTER) will be used to filter the input files when producing source 
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_WIDTH    = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
+# this value, doxygen will try to truncate the graph, so that it fits within 
+# the specified constraint. Beware that most browsers cannot cope with very 
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT   = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that a graph may be further truncated if the graph's 
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = NO
Index: /tags/1.6.0/src/core2/Lookup.cpp
===================================================================
--- /tags/1.6.0/src/core2/Lookup.cpp	(revision 6168)
+++ /tags/1.6.0/src/core2/Lookup.cpp	(revision 6168)
@@ -0,0 +1,430 @@
+/*
+ * ======================================================================
+ *  Rappture::Lookup<valType>
+ *  Rappture::Lookup2<keyType,valType>
+ *
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ *
+ *  This code is based on the Tcl_HashTable facility included in the
+ *  Tcl source release, which includes the following copyright:
+ *
+ *  Copyright (c) 1987-1994 The Regents of the University of California.
+ *  Copyright (c) 1993-1996 Lucent Technologies.
+ *  Copyright (c) 1994-1998 Sun Microsystems, Inc.
+ *  Copyright (c) 1998-2000 by Scriptics Corporation.
+ *
+ *  This software is copyrighted by the Regents of the University of
+ *  California, Sun Microsystems, Inc., Scriptics Corporation,
+ *  and other parties.  The following terms apply to all files associated
+ *  with the software unless explicitly disclaimed in individual files.
+ *
+ *  The authors hereby grant permission to use, copy, modify, distribute,
+ *  and license this software and its documentation for any purpose, provided
+ *  that existing copyright notices are retained in all copies and that this
+ *  notice is included verbatim in any distributions. No written agreement,
+ *  license, or royalty fee is required for any of the authorized uses.
+ *  Modifications to this software may be copyrighted by their authors
+ *  and need not follow the licensing terms described here, provided that
+ *  the new terms are clearly indicated on the first page of each file where
+ *  they apply.
+ *
+ *  IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
+ *  FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ *  ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
+ *  DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
+ *  POSSIBILITY OF SUCH DAMAGE.
+ *
+ *  THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
+ *  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
+ *  IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
+ *  NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
+ *  MODIFICATIONS.
+ *
+ *  GOVERNMENT USE: If you are acquiring this software on behalf of the
+ *  U.S. government, the Government shall have only "Restricted Rights"
+ *  in the software and related documentation as defined in the Federal
+ *  Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
+ *  are acquiring the software on behalf of the Department of Defense, the
+ *  software shall be classified as "Commercial Computer Software" and the
+ *  Government shall have only "Restricted Rights" as defined in Clause
+ *  252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
+ *  authors grant the U.S. Government and others acting in its behalf
+ *  permission to use and distribute the software in accordance with the
+ *  terms specified in this license.
+ * ======================================================================
+ */
+#include <sstream>
+#include "Lookup.h"
+
+using namespace Rappture;
+
+/*
+ * When there are this many entries per bucket, on average, rebuild
+ * the hash table to make it larger.
+ */
+#define REBUILD_MULTIPLIER  3
+
+
+LookupCore::LookupCore(size_t keySize)
+{
+    // convert key size in bytes to size in words
+    _keySize = keySize/4 + ((keySize%4 > 0) ? 1 : 0);
+
+    _numEntries = 0;
+    _numBuckets = RP_DICT_MIN_SIZE;
+    _buckets = _staticBuckets;
+    for (int i=0; i < RP_DICT_MIN_SIZE; i++) {
+        _staticBuckets[i] = NULL;
+    }
+    _rebuildSize = RP_DICT_MIN_SIZE*REBUILD_MULTIPLIER;
+    _downShift = 28;
+    _mask = 3;
+}
+
+LookupCore::~LookupCore()
+{
+    // free up all entries in the lookup table
+    for (int i = 0; i < _numBuckets; i++) {
+        LookupEntryCore *entryPtr = _buckets[i];
+        while (entryPtr != NULL) {
+            LookupEntryCore *nextPtr = entryPtr->nextPtr;
+            delete entryPtr;
+            entryPtr = nextPtr;
+        }
+    }
+
+    // free up the bucket array, as long as it's not the built-in one
+    if (_buckets != _staticBuckets) {
+        delete [] _buckets;
+    }
+}
+
+/**
+ * Finds a lookup entry with the specified key.  Returns
+ * the entry, or NULL if there was no matching entry.
+ */
+LookupEntryCore*
+LookupCore::find(void* key)
+{
+    unsigned int index = _hashIndex(key);
+
+    //
+    // Search all of the entries in the appropriate bucket.
+    //
+    LookupEntryCore *hPtr;
+    if (_keySize == 0) {
+        for (hPtr=_buckets[index]; hPtr != NULL; hPtr=hPtr->nextPtr) {
+            char* p1 = (char*)key;
+            char* p2 = hPtr->key.string;
+            while (1) {
+                if (*p1 != *p2) {
+                    break;
+                }
+                if (*p1 == '\0') {
+                    return hPtr;
+                }
+                p1++, p2++;
+            }
+        }
+    } else {
+        for (hPtr=_buckets[index]; hPtr != NULL; hPtr=hPtr->nextPtr) {
+            int *iPtr1 = (int*)key;
+            int *iPtr2 = hPtr->key.words;
+            for (int count = _keySize; ; count--, iPtr1++, iPtr2++) {
+                if (count == 0) {
+                    return hPtr;
+                }
+                if (*iPtr1 != *iPtr2) {
+                    break;
+                }
+            }
+        }
+    }
+    return NULL;
+}
+
+/**
+ * Finds a lookup entry with the specified key.  Returns
+ * the entry, or NULL if there was no matching entry.
+ */
+LookupEntryCore*
+LookupCore::get(void* key, int* newEntryPtr)
+{
+    if (newEntryPtr) {
+        *newEntryPtr = 0;
+    }
+
+    unsigned int index = _hashIndex(key);
+
+    //
+    // Search all of the entries in the appropriate bucket.
+    //
+    LookupEntryCore *hPtr;
+    if (_keySize == 0) {
+        for (hPtr=_buckets[index]; hPtr != NULL; hPtr=hPtr->nextPtr) {
+            char* p1 = (char*)key;
+            char* p2 = hPtr->key.string;
+            while (1) {
+                if (*p1 != *p2) {
+                    break;
+                }
+                if (*p1 == '\0') {
+                    return hPtr;
+                }
+                p1++, p2++;
+            }
+        }
+    } else {
+        for (hPtr=_buckets[index]; hPtr != NULL; hPtr=hPtr->nextPtr) {
+            int *iPtr1 = (int*)key;
+            int *iPtr2 = hPtr->key.words;
+            for (int count = _keySize; ; count--, iPtr1++, iPtr2++) {
+                if (count == 0) {
+                    return hPtr;
+                }
+                if (*iPtr1 != *iPtr2) {
+                    break;
+                }
+            }
+        }
+    }
+
+    //
+    // Entry not found.  Add a new one to the bucket.
+    //
+    if (newEntryPtr) {
+        *newEntryPtr = 1;
+    }
+    if (_keySize == 0) {
+        char* mem = new char[sizeof(LookupEntryCore)
+            + strlen((char*)key) - sizeof(hPtr->key) + 1];
+        hPtr = new (mem) LookupEntryCore;
+    } else {
+        char* mem = new char[sizeof(LookupEntryCore) + _keySize-1];
+        hPtr = new (mem) LookupEntryCore;
+    }
+    hPtr->dictPtr = this;
+    hPtr->bucketPtr = &(_buckets[index]);
+    hPtr->nextPtr = *hPtr->bucketPtr;
+    hPtr->valuePtr = NULL;
+    *hPtr->bucketPtr = hPtr;
+    _numEntries++;
+
+    if (_keySize == 0) {
+        strcpy(hPtr->key.string, (char*)key);
+    } else {
+        memcpy(hPtr->key.words, (int*)key, _keySize*4);
+    }
+
+    //
+    // If the table has exceeded a decent size, rebuild it with many
+    // more buckets.
+    //
+    if (_numEntries >= _rebuildSize) {
+        _rebuildBuckets();
+    }
+    return hPtr;
+}
+
+/**
+ * Removes an entry from the lookup table.  The data associated
+ * with the entry is freed at the Lookup level before calling
+ * this core method to clean up the slot.
+ */
+LookupEntryCore*
+LookupCore::erase(LookupEntryCore* entryPtr)
+{
+    LookupEntryCore *prevPtr;
+
+    if (*entryPtr->bucketPtr == entryPtr) {
+        *entryPtr->bucketPtr = entryPtr->nextPtr;
+    } else {
+        for (prevPtr = *entryPtr->bucketPtr; ; prevPtr = prevPtr->nextPtr) {
+            assert(prevPtr != NULL);
+            if (prevPtr->nextPtr == entryPtr) {
+                prevPtr->nextPtr = entryPtr->nextPtr;
+                break;
+            }
+        }
+    }
+    entryPtr->dictPtr->_numEntries--;
+    LookupEntryCore *nextPtr = entryPtr->nextPtr;
+    delete entryPtr;
+
+    return nextPtr;
+}
+
+/**
+ * Returns the next entry after the given entry.  If then entry
+ * is NULL and bucketNum is 0, it returns the very first entry.
+ * When there are no more entries, it returns NULL.  The bucketNum
+ * helps keep track of the next bucket in the table.
+ */
+LookupEntryCore*
+LookupCore::next(LookupEntryCore *entryPtr, int& bucketNum)
+{
+    if (entryPtr) {
+        entryPtr = entryPtr->nextPtr;
+    }
+
+    // hit the end of a bucket, or just starting? then go to next bucket
+    while (entryPtr == NULL) {
+	if (bucketNum >= _numBuckets) {
+	    return NULL;
+	}
+	entryPtr = _buckets[bucketNum];
+	bucketNum++;
+    }
+    return entryPtr;
+}
+
+/**
+ * Returns a description of all entries in the lookup table.
+ * Useful for debugging.
+ */
+std::string
+LookupCore::stats()
+{
+#define NUM_COUNTERS 10
+    int i, count[NUM_COUNTERS], overflow;
+    double average, tmp;
+
+    //
+    // Compute a histogram of bucket usage.
+    //
+    for (i=0; i < NUM_COUNTERS; i++) {
+        count[i] = 0;
+    }
+    overflow = 0;
+    average = 0.0;
+    for (i=0; i < _numBuckets; i++) {
+        int j=0;
+        for (LookupEntryCore *entryPtr=_buckets[i];
+             entryPtr != NULL;
+             entryPtr = entryPtr->nextPtr) {
+            j++;
+        }
+        if (j < NUM_COUNTERS) {
+            count[j]++;
+        } else {
+            overflow++;
+        }
+        tmp = j;
+        average += 0.5*(tmp+1.0)*(tmp/_numEntries);
+    }
+
+    //
+    // Send back the histogram and other stats.
+    //
+    std::ostringstream result;
+    result << _numEntries << " entries in lookup table, ";
+    result << _numBuckets << " buckets" << std::endl;
+
+    for (i=0; i < NUM_COUNTERS; i++) {
+        result << "number of buckets with " << i
+               << " entries: " << count[i] << std::endl;
+    }
+    result << "number of buckets with " << NUM_COUNTERS
+               << " or more entries: " << overflow << std::endl;
+    result << "average search distance for entry: " << average << std::endl;
+    return result.str();
+}
+
+/**
+ * Invoked when the ratio of entries to hash buckets becomes too
+ * large.  It creates a new layout with a larger bucket array
+ * and moves all of the entries into the new table.
+ */
+void
+LookupCore::_rebuildBuckets()
+{
+    int oldSize = _numBuckets;
+    LookupEntryCore** oldBuckets = _buckets;
+
+    //
+    // Allocate and initialize the new bucket array, and set up
+    // hashing constants for new array size.
+    //
+    _numBuckets *= 4;
+    _buckets = new (LookupEntryCore*)[_numBuckets];
+    LookupEntryCore **newChainPtr = _buckets;
+    for (int count=_numBuckets; count > 0; count--, newChainPtr++) {
+        *newChainPtr = NULL;
+    }
+    _rebuildSize *= 4;
+    _downShift -= 2;
+    _mask = (_mask << 2) + 3;
+
+    //
+    // Rehash all of the existing entries into the new bucket array.
+    //
+    for (LookupEntryCore** oldChainPtr=oldBuckets;
+          oldSize > 0; oldSize--, oldChainPtr++) {
+
+        for (LookupEntryCore* hPtr=*oldChainPtr;
+              hPtr != NULL; hPtr=*oldChainPtr) {
+
+            *oldChainPtr = hPtr->nextPtr;
+            unsigned int index = _hashIndex((void*)hPtr->key.string);
+            hPtr->bucketPtr = &(_buckets[index]);
+            hPtr->nextPtr = *hPtr->bucketPtr;
+            *hPtr->bucketPtr = hPtr;
+        }
+    }
+
+    //
+    // Free up the old bucket array, if it was dynamically allocated.
+    //
+    if (oldBuckets != _staticBuckets) {
+        delete [] oldBuckets;
+    }
+}
+
+/**
+ * Computes the hash value for the specified key.
+ */
+unsigned int
+LookupCore::_hashIndex(void* key)
+{
+    unsigned int result = 0;
+    if (_keySize == 0) {
+        char* string = (char*)key;
+        /*
+         * I tried a zillion different hash functions and asked many other
+         * people for advice.  Many people had their own favorite functions,
+         * all different, but no-one had much idea why they were good ones.
+         * I chose the one below (multiply by 9 and add new character)
+         * because of the following reasons:
+         *
+         * 1. Multiplying by 10 is perfect for keys that are decimal strings,
+         *    and multiplying by 9 is just about as good.
+         * 2. Times-9 is (shift-left-3) plus (old).  This means that each
+         *    character's bits hang around in the low-order bits of the
+         *    hash value for ever, plus they spread fairly rapidly up to
+         *    the high-order bits to fill out the hash value.  This seems
+         *    works well both for decimal and non-decimal strings.
+         */
+        while (1) {
+            int c = *string;
+            string++;
+            if (c == 0) {
+                break;
+            }
+            result += (result<<3) + c;
+        }
+        result &= _mask;
+    } else {
+        int *iPtr = (int*)key;
+        for (int count=_keySize; count > 0; count--, iPtr++) {
+            result += *iPtr;
+        }
+        result = (((((long)(result))*1103515245) >> _downShift) & _mask);
+    }
+    return result;
+}
Index: /tags/1.6.0/src/core2/Lookup.h
===================================================================
--- /tags/1.6.0/src/core2/Lookup.h	(revision 6168)
+++ /tags/1.6.0/src/core2/Lookup.h	(revision 6168)
@@ -0,0 +1,404 @@
+/*
+ * ======================================================================
+ *  Rappture::Lookup<valType>
+ *  Rappture::Lookup2<keyType,valType>
+ *
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ *
+ *  This code is based on the Tcl_HashTable facility included in the
+ *  Tcl source release, which includes the following copyright:
+ *
+ *  Copyright (c) 1987-1994 The Regents of the University of California.
+ *  Copyright (c) 1993-1996 Lucent Technologies.
+ *  Copyright (c) 1994-1998 Sun Microsystems, Inc.
+ *  Copyright (c) 1998-2000 by Scriptics Corporation.
+ *
+ *  This software is copyrighted by the Regents of the University of
+ *  California, Sun Microsystems, Inc., Scriptics Corporation,
+ *  and other parties.  The following terms apply to all files associated
+ *  with the software unless explicitly disclaimed in individual files.
+ *  
+ *  The authors hereby grant permission to use, copy, modify, distribute,
+ *  and license this software and its documentation for any purpose, provided
+ *  that existing copyright notices are retained in all copies and that this
+ *  notice is included verbatim in any distributions. No written agreement,
+ *  license, or royalty fee is required for any of the authorized uses.
+ *  Modifications to this software may be copyrighted by their authors
+ *  and need not follow the licensing terms described here, provided that
+ *  the new terms are clearly indicated on the first page of each file where
+ *  they apply.
+ *  
+ *  IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
+ *  FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ *  ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
+ *  DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
+ *  POSSIBILITY OF SUCH DAMAGE.
+ *  
+ *  THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
+ *  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
+ *  IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
+ *  NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
+ *  MODIFICATIONS.
+ *  
+ *  GOVERNMENT USE: If you are acquiring this software on behalf of the
+ *  U.S. government, the Government shall have only "Restricted Rights"
+ *  in the software and related documentation as defined in the Federal 
+ *  Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
+ *  are acquiring the software on behalf of the Department of Defense, the
+ *  software shall be classified as "Commercial Computer Software" and the
+ *  Government shall have only "Restricted Rights" as defined in Clause
+ *  252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
+ *  authors grant the U.S. Government and others acting in its behalf
+ *  permission to use and distribute the software in accordance with the
+ *  terms specified in this license. 
+ * ======================================================================
+ */
+#ifndef RAPPTURE_DICTIONARY_H
+#define RAPPTURE_DICTIONARY_H
+
+#include "rappture.h"
+#include <stddef.h>
+
+#define RP_DICT_MIN_SIZE 4
+
+namespace Rappture {
+
+class LookupCore;  // foward declaration
+
+/**
+ * Represents one entry within a lookup object, cast in terms
+ * of void pointers and data sizes, so that the official, templated
+ * version of the class can be lean and mean.
+ */
+struct LookupEntryCore {
+    LookupEntryCore *nextPtr;    // pointer to next entry in this bucket
+    LookupCore *dictPtr;         // pointer to lookup containing entry
+    LookupEntryCore **bucketPtr; // pointer to bucket containing this entry
+
+    void *valuePtr;              // value within this hash entry
+
+    union {
+        void *ptrValue;          // size of a pointer
+        int words[1];            // multiple integer words for the key
+        char string[4];          // first part of string value for key
+    } key;                       // memory can be oversized if more
+                                 // space is needed for words/string
+                                 // MUST BE THE LAST FIELD IN THIS RECORD!
+};
+
+/**
+ * This is the functional core of a lookup object, cast in terms
+ * of void pointers and data sizes, so that the official, templated
+ * version of the class can be lean and mean.
+ */
+class LookupCore {
+public:
+    LookupCore(size_t keySize);
+    ~LookupCore();
+
+    LookupEntryCore* get(void* key, int* newEntryPtr);
+    LookupEntryCore* find(void* key);
+    LookupEntryCore* erase(LookupEntryCore* entryPtr);
+    LookupEntryCore* next(LookupEntryCore* entryPtr, int& bucketNum);
+    std::string stats();
+
+private:
+    /// Not allowed -- copy Lookup at higher level
+    LookupCore(const LookupCore& dcore) { assert(0); }
+
+    /// Not allowed -- copy Lookup at higher level
+    LookupCore& operator=(const LookupCore& dcore) { assert(0); }
+
+    // utility functions
+    void _rebuildBuckets();
+    unsigned int _hashIndex(void* key);
+
+    /// Size of the key in words, or 0 for (const char*) string keys.
+    int _keySize;
+
+    /// Pointer to array of hash buckets.
+    LookupEntryCore **_buckets;
+
+    /// Built-in storage for small hash tables.
+    LookupEntryCore *_staticBuckets[RP_DICT_MIN_SIZE];
+
+    /// Total number of entries in the lookup.
+    int _numEntries;
+
+    /// Number of buckets currently allocated at _buckets.
+    int _numBuckets;
+
+    /// Enlarge table when numEntries gets to be this large.
+    int _rebuildSize;
+
+    /// Shift count used in hashing function.
+    int _downShift;
+
+    /// Mask value used in hashing function.
+    int _mask;
+};
+
+/**
+ * This represents a single entry within a lookup object.  It is
+ * used to access values within the lookup, or as an iterator
+ * that traverses the lookup.
+ */
+template <class KeyType, class ValType>
+class LookupEntry2 {
+public:
+    LookupEntry2(LookupCore* corePtr, LookupEntryCore* entryPtr=NULL);
+    LookupEntry2(const LookupEntry2& entry);
+    LookupEntry2& operator=(const LookupEntry2& entry);
+    ~LookupEntry2();
+
+    int isNull() const;
+    KeyType& key();
+    ValType& value();
+    LookupEntry2& next();
+    LookupEntry2& erase();
+
+private:
+    LookupCore* _corePtr;
+    LookupEntryCore* _entryPtr;
+    int _bucketNum;
+};
+
+template <class KeyType, class ValType>
+LookupEntry2<KeyType,ValType>::LookupEntry2(LookupCore* corePtr,
+    LookupEntryCore* entryPtr)
+    : _corePtr(corePtr),
+      _entryPtr(entryPtr),
+      _bucketNum(0)
+{
+}
+
+template <class KeyType, class ValType>
+LookupEntry2<KeyType,ValType>::LookupEntry2(const LookupEntry2 &entry)
+    : _corePtr(entry._corePtr),
+      _entryPtr(entry._entryPtr),
+      _bucketNum(entry._bucketNum)
+{
+}
+
+template <class KeyType, class ValType>
+LookupEntry2<KeyType,ValType>&
+LookupEntry2<KeyType,ValType>::operator=(const LookupEntry2 &entry)
+{
+    _corePtr = entry._corePtr;
+    _entryPtr = entry._entryPtr;
+    _bucketNum = entry._bucketNum;
+    return *this;
+}
+
+template <class KeyType, class ValType>
+LookupEntry2<KeyType,ValType>::~LookupEntry2()
+{
+}
+
+template <class KeyType, class ValType>
+int
+LookupEntry2<KeyType,ValType>::isNull() const
+{
+    return (_entryPtr == NULL);
+}
+
+template <class KeyType, class ValType>
+KeyType&
+LookupEntry2<KeyType,ValType>::key()
+{
+    return *(KeyType*)(_entryPtr->key.string);
+}
+
+template <class KeyType, class ValType>
+ValType&
+LookupEntry2<KeyType,ValType>::value()
+{
+    if (sizeof(ValType) > sizeof(_entryPtr->valuePtr)) {
+        return *static_cast<ValType*>(_entryPtr->valuePtr);
+    }
+    return *(ValType*)(&_entryPtr->valuePtr);
+}
+
+template <class KeyType, class ValType>
+LookupEntry2<KeyType,ValType>&
+LookupEntry2<KeyType,ValType>::next()
+{
+    _entryPtr = _corePtr->next(_entryPtr, _bucketNum);
+    return *this;
+}
+
+template <class KeyType, class ValType>
+LookupEntry2<KeyType,ValType>&
+LookupEntry2<KeyType,ValType>::erase()
+{
+    if (_entryPtr != NULL) {
+        // delete the value
+        if (_entryPtr->valuePtr
+              && sizeof(ValType) > sizeof(_entryPtr->valuePtr)) {
+            delete static_cast<ValType*>(_entryPtr->valuePtr);
+        }
+        // delete the slot
+        _entryPtr = _corePtr->erase(_entryPtr);
+    }
+
+    if (_entryPtr == NULL) {
+        // at the end of this bucket? then move on to next one
+        _corePtr->next(_entryPtr, _bucketNum);
+    }
+    return *this;
+}
+
+/**
+ * This is a lookup object or associative array.  It is a hash
+ * table that uniquely maps a key to a value.  The memory for values
+ * added to lookup is managed by the lookup.  When a lookup
+ * is deleted, its internal values are cleaned up automatically.
+ */
+template <class KeyType, class ValType>
+class Lookup2 {
+public:
+    Lookup2(int size=-1);
+    Lookup2(const Lookup2& dict);
+    Lookup2& operator=(const Lookup2& dict);
+    ~Lookup2();
+
+    LookupEntry2<KeyType,ValType> get(const KeyType& key, int* newEntryPtr);
+    LookupEntry2<KeyType,ValType> find(const KeyType& key) const;
+    ValType& operator[](const KeyType& key);
+    LookupEntry2<KeyType,ValType> erase(const KeyType& key);
+    void clear();
+
+    LookupEntry2<KeyType,ValType> first();
+
+    std::string stats();
+
+private:
+    LookupCore* _corePtr;
+};
+
+template <class KeyType, class ValType>
+Lookup2<KeyType,ValType>::Lookup2(int size)
+{
+    _corePtr = new LookupCore( (size >= 0) ? size : sizeof(KeyType) );
+}
+
+template <class KeyType, class ValType>
+Lookup2<KeyType,ValType>::Lookup2(const Lookup2<KeyType,ValType>& dict)
+{
+    _corePtr = new LookupCore(sizeof(KeyType));
+
+    LookupEntry2<KeyType,ValType> entry;
+    for (entry=dict.first(); !entry.isNull(); entry.next()) {
+        get(entry.key(), NULL).value() = entry.value();
+    }
+}
+
+template <class KeyType, class ValType>
+Lookup2<KeyType,ValType>&
+Lookup2<KeyType,ValType>::operator=(const Lookup2<KeyType,ValType>& dict)
+{
+#ifdef notdef
+	/* How did this ever compile? --gah */
+    _corePtr->clear();
+#endif
+
+    LookupEntry2<KeyType,ValType> entry;
+    for (entry=dict.first(); !entry.isNull(); entry.next()) {
+        get(entry.key(), NULL).value() = entry.value();
+    }
+}
+
+template <class KeyType, class ValType>
+Lookup2<KeyType,ValType>::~Lookup2()
+{
+    clear();
+    delete _corePtr;
+}
+
+template <class KeyType, class ValType>
+void
+Lookup2<KeyType,ValType>::clear()
+{
+    LookupEntry2<KeyType,ValType> entry = first();
+    while (!entry.isNull()) {
+        entry.erase();
+    }
+}
+
+template <class KeyType, class ValType>
+LookupEntry2<KeyType,ValType>
+Lookup2<KeyType,ValType>::get(const KeyType& key, int* newEntryPtr)
+{
+    LookupEntryCore* entryPtr = _corePtr->get((void*)&key, newEntryPtr);
+    if (entryPtr->valuePtr == NULL
+          && sizeof(ValType) > sizeof(entryPtr->valuePtr)) {
+        entryPtr->valuePtr = new ValType;
+    }
+    return LookupEntry2<KeyType,ValType>(_corePtr, entryPtr);
+}
+
+template <class KeyType, class ValType>
+ValType&
+Lookup2<KeyType,ValType>::operator[](const KeyType& key)
+{
+    LookupEntry2<KeyType,ValType> entry = get(key, NULL);
+    return entry.value();
+}
+
+template <class KeyType, class ValType>
+LookupEntry2<KeyType,ValType>
+Lookup2<KeyType,ValType>::first()
+{
+    LookupEntry2<KeyType,ValType> entry(_corePtr);
+    return entry.next();
+}
+
+template <class KeyType, class ValType>
+std::string
+Lookup2<KeyType,ValType>::stats()
+{
+    return _corePtr->stats();
+}
+
+template <class ValType>
+class LookupEntry : public LookupEntry2<const char*,ValType> {
+public:
+    LookupEntry(LookupCore* corePtr, LookupEntryCore* entryPtr=NULL);
+    LookupEntry(const LookupEntry2<const char*,ValType>& entry);
+};
+
+template <class ValType>
+LookupEntry<ValType>::LookupEntry(LookupCore* corePtr,
+    LookupEntryCore* entryPtr)
+    : LookupEntry2<const char*,ValType>(corePtr, entryPtr)
+{
+}
+
+template <class ValType>
+LookupEntry<ValType>::LookupEntry(
+    const LookupEntry2<const char*,ValType>& entry)
+    : LookupEntry2<const char*,ValType>(entry)
+{
+}
+
+template <class ValType>
+class Lookup : public Lookup2<const char*,ValType> {
+public:
+    Lookup();
+};
+
+template <class ValType>
+Lookup<ValType>::Lookup()
+    : Lookup2<const char*,ValType>(0)
+{
+}
+
+} // namespace Rappture
+
+#endif
Index: /tags/1.6.0/src/core2/Makefile.in
===================================================================
--- /tags/1.6.0/src/core2/Makefile.in	(revision 6168)
+++ /tags/1.6.0/src/core2/Makefile.in	(revision 6168)
@@ -0,0 +1,146 @@
+
+# Makefile for Rappture2
+# Copyright (C) 2004-2007 Derrick S. Kearney.
+# For conditions of distribution and use, see license.terms
+
+# To compile and test, type:
+#    ./configure; make test
+# The call of configure is optional if you don't have special requirements
+#
+# To install librappture2.* and rappture2.h, type:
+#    make install
+# To install in $HOME instead of /usr/local, use:
+#    make install prefix=$HOME
+
+bindir		= @bindir@
+datadir 	= @datadir@
+datarootdir 	= @datarootdir@
+exec_prefix 	= @exec_prefix@
+includedir 	= @includedir@
+libdir 		= @libdir@
+man3dir 	= ${mandir}/man3
+mandir 		= @mandir@
+prefix 		= @prefix@
+scriptdir	= $(exec_prefix)/lib
+srcdir		= @srcdir@
+incdir		= $(prefix)/include
+
+CXX             = @CXX@
+CC		= @CXX@
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD	= @STLIB_LD@
+SHLIB_LD	= @SHLIB_LD@
+SHLIB_CFLAGS	= @SHLIB_CFLAGS@
+SHLIB_LDFLAGS	= @SHLIB_LDFLAGS@
+SHLIB_SUFFIX	= @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+LIB_SEARCH_DIRS = -L../core @LIB_SEARCH_DIRS@
+CFLAGS		= @CFLAGS@ -fPIC
+CPP		= @CPP@
+
+INSTALL 	= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+VPATH 		= $(srcdir)
+
+name		= rappture2
+libname		= lib$(name)
+lib		= $(libname).a
+shared_lib	= $(libname)$(SHLIB_SUFFIX)
+
+AR		= ar rcv
+RANLIB		= @RANLIB@
+SHELL		= @SHELL@
+VPATH		= $(srcdir)
+
+LIBS 		= -lrappture -lz
+
+INCLUDES	= \
+		-I$(srcdir) \
+		-I$(srcdir)/../core \
+		-I$(includedir)
+
+OBJS 		= \
+		RpMesh1D.o \
+		RpField1D.o \
+		RpMeshTri2D.o \
+		RpMeshRect3D.o \
+		RpFieldRect3D.o \
+		RpMeshPrism3D.o \
+		RpFieldPrism3D.o \
+		RpSerialBuffer.o \
+		RpSerializer.o \
+		RpSerializable.o 
+
+HEADERS		= \
+		RpField1D.h \
+		RpFieldPrism3D.h \
+		RpFieldRect3D.h \
+		RpFieldTri2D.h \
+		RpMesh1D.h \
+		RpMeshPrism3D.h \
+		RpMeshRect3D.h \
+		RpMeshTri2D.h \
+		RpNode.h \
+		RpSerialBuffer.h \
+		RpSerializable.h \
+		RpSerializer.h  \
+		rappture2.h
+
+all: $(lib) $(shared_lib) 
+
+$(lib): $(OBJS)
+	$(RM) $@
+	$(AR) $@ $(OBJS) 
+	$(RANLIB) $@ 
+
+$(shared_lib): $(OBJS)
+	$(SHLIB_LD) $(SHLIB_LDFLAGS) -o $@ $(OBJS) $(LIB_SEARCH_DIRS) $(LIBS)
+
+install: install_libs install_headers
+
+install_libs: $(lib) $(shared_lib)
+	$(MKDIR_P) -m 0755 $(libdir)
+	$(INSTALL) -m 0444 $(lib) $(libdir)
+	$(INSTALL) -m 0555 $(shared_lib) $(libdir)
+
+# This is no manual page for rappture yet.
+install_man: 
+	$(MKDIR_P) -m 0755 $(man3dir)
+	$(INSTALL) -m 0444 rappture.3 $(man3dir)
+
+install_headers:
+	$(MKDIR_P) -m 0755 $(includedir)/rappture2
+	for i in $(HEADERS) ; do \
+	  $(INSTALL) -m 0444 $(srcdir)/$$i $(includedir)/rappture2; \
+	done
+
+uninstall: uninstall_libs uninstall_man uninstall_headers
+
+uninstall_libs: $(lib) $(shared_lib)
+	$(RM) $(libdir)/$(lib) $(libdir)/$(shared_lib)
+
+uninstall_man: 
+	$(RM) $(man3dir)/rappture.3
+
+uninstall_headers:
+	for i in $(HEADERS) ; do \
+	  $(RM) $(includedir)/rappture2/$$i; \
+	done
+.cc.o: 
+	$(CXX) $(CFLAGS) $(INCLUDES) $(DEBUG) -c $? 
+.c.o: 
+	$(CC) $(CFLAGS) $(INCLUDES) $(DEBUG) -c $? 
+
+
+clean:
+	$(RM) $(OBJS) $(lib) $(shared_lib)
+	$(RM) buffer1.txt RpBuffer_test$(EXE) 
+
+distclean: clean
+	$(RM) Makefile *~
+
+docs:
+	$(MKDIR_P) -m 0755 ../../docs/rappture2
+	doxygen
+
Index: /tags/1.6.0/src/core2/RpField1D.cc
===================================================================
--- /tags/1.6.0/src/core2/RpField1D.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/RpField1D.cc	(revision 6168)
@@ -0,0 +1,198 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::Field1D
+ *    This is a continuous, linear function defined by a series of
+ *    points for 1-dimensional structures.  It's essentially a string
+ *    of (x,y) points where the y values can be interpolated at any
+ *    point within the range of defined values.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <assert.h>
+#include <math.h>
+#include "RpField1D.h"
+
+using namespace Rappture;
+
+Field1D::Field1D()
+  : _vmin(NAN),
+    _vmax(NAN),
+    _meshPtr(NULL),
+    _counter(0)
+{
+    _meshPtr = Ptr<Mesh1D>(new Mesh1D());
+}
+
+Field1D::Field1D(const Ptr<Mesh1D>& meshPtr)
+  : _valuelist(),
+    _vmin(NAN),
+    _vmax(NAN),
+    _meshPtr(meshPtr),
+    _counter(0)
+{
+}
+
+Field1D::Field1D(const Field1D& field)
+  : _valuelist(field._valuelist),
+    _vmin(field._vmin),
+    _vmax(field._vmax),
+    _meshPtr(field._meshPtr),
+    _counter(0)
+{
+}
+
+Field1D&
+Field1D::operator=(const Field1D& field)
+{
+    _valuelist = field._valuelist;
+    _vmin = field._vmin;
+    _vmax = field._vmax;
+    _meshPtr = field._meshPtr;
+    _counter = field._counter;
+    return *this;
+}
+
+Field1D::~Field1D()
+{
+}
+
+int
+Field1D::add(double x)
+{
+    Node1D node = Node1D(x);
+    node.id(_counter++);
+
+    _valuelist.push_back(0.0);
+    _meshPtr->add(node);
+
+    return node.id();
+}
+
+Field1D&
+Field1D::remove(int nodeId)
+{
+    _meshPtr->remove(nodeId);
+    return *this;
+}
+
+Field1D&
+Field1D::clear()
+{
+    _valuelist.clear();
+    _meshPtr->clear();
+    _counter = 0;
+    return *this;
+}
+
+int
+Field1D::size() const
+{
+    return _meshPtr->size();
+}
+
+Node1D&
+Field1D::atNode(int pos)
+{
+    return _meshPtr->at(pos);
+}
+
+double
+Field1D::rangeMin() const
+{
+    return _meshPtr->rangeMin();
+}
+
+double
+Field1D::rangeMax() const
+{
+    return _meshPtr->rangeMax();
+}
+
+int
+Field1D::define(double x, double y)
+{
+    Node1D node = Node1D(x);
+    Cell1D cell = _meshPtr->locate(node);
+
+    if (x == cell.x(0) && !cell.isOutside()) {
+        define(cell.nodeId(0), y);
+    }
+    else if (x == cell.x(1) && !cell.isOutside()) {
+        define(cell.nodeId(1), y);
+    }
+    else {
+        int nodeId = _counter++;
+        node.id(nodeId);
+        _valuelist.push_back(0.0);
+        _meshPtr->add(node);
+        define(nodeId, y);
+    }
+    return 0;
+}
+
+int
+Field1D::define(int nodeId, double y)
+{
+    _valuelist[nodeId] = y;
+
+    if (isnan(_vmin) || isnan(_vmax)) {
+        _vmin = _vmax = y;
+    } else {
+        if (y < _vmin) { _vmin = y; }
+        if (y > _vmax) { _vmax = y; }
+    }
+    return 0;
+}
+
+double
+Field1D::value(double x) const
+{
+    Node1D node = Node1D(x);
+    Cell1D cell = _meshPtr->locate(node);
+
+    // if this is a normal cell, then interpolate values
+    if (cell.nodeId(0) >= 0 && cell.nodeId(1) >= 0) {
+        double y0 = _valuelist[cell.nodeId(0)];
+        double y1 = _valuelist[cell.nodeId(1)];
+        double xrange = cell.x(1) - cell.x(0);
+
+        if (xrange == 0.0) {
+            // interval undefined? then return avg y value
+            return 0.5*(y1+y0);
+        }
+        // interpolate
+        double delx = x - cell.x(0);
+        return y0 + (delx/xrange)*(y1-y0);
+    }
+
+    // extrapolate with constant value for x < xmin
+    else if (cell.nodeId(0) >= 0) {
+        return _valuelist[cell.nodeId(0)];
+    }
+
+    // extrapolate with constant value for x > xmax
+    else if (cell.nodeId(1) >= 0) {
+        return _valuelist[cell.nodeId(1)];
+    }
+
+    // all else fails, return an empty value
+    return 0.0;
+}
+
+double
+Field1D::valueMin() const
+{
+    return _vmin;
+}
+
+double
+Field1D::valueMax() const
+{
+    return _vmax;
+}
Index: /tags/1.6.0/src/core2/RpField1D.h
===================================================================
--- /tags/1.6.0/src/core2/RpField1D.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpField1D.h	(revision 6168)
@@ -0,0 +1,58 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::Field1D
+ *    This is a continuous, linear function defined by a series of
+ *    points for 1-dimensional structures.  It's essentially a string
+ *    of (x,y) points where the y values can be interpolated at any
+ *    point within the range of defined values.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RPFIELD1D_H
+#define RPFIELD1D_H
+
+#include <RpPtr.h>
+#include <RpMesh1D.h>
+
+namespace Rappture {
+
+class Field1D {
+public:
+    Field1D();
+    Field1D(const Ptr<Mesh1D>& meshPtr);
+    Field1D(const Field1D& field);
+    Field1D& operator=(const Field1D& field);
+    virtual ~Field1D();
+
+    virtual int add(double x);
+    virtual Field1D& remove(int nodeId);
+    virtual Field1D& clear();
+
+    virtual int size() const;
+    virtual Node1D& atNode(int pos);
+    virtual double rangeMin() const;
+    virtual double rangeMax() const;
+
+    virtual int define(double x, double y);
+    virtual int define(int nodeId, double y);
+    virtual double value(double x) const;
+    virtual double valueMin() const;
+    virtual double valueMax() const;
+
+private:
+    std::deque<double> _valuelist;  // list of all values, in nodeId order
+    double _vmin;                   // minimum value in _valuelist
+    double _vmax;                   // maximum value in _valuelist
+    Ptr<Mesh1D> _meshPtr;           // mesh for all x-points
+    int _counter;                   // counter for generating node IDs
+};
+
+} // namespace Rappture
+
+#endif /*RPFIELD1D_H*/
Index: /tags/1.6.0/src/core2/RpFieldPrism3D.cc
===================================================================
--- /tags/1.6.0/src/core2/RpFieldPrism3D.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/RpFieldPrism3D.cc	(revision 6168)
@@ -0,0 +1,154 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::FieldPrism3D
+ *    This is a continuous, linear function defined by a series of
+ *    points on a 3D prismatic mesh.  It's a scalar field defined
+ *    in 3D space.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpFieldPrism3D.h"
+
+using namespace Rappture;
+
+FieldPrism3D::FieldPrism3D()
+  : _valuelist(),
+    _vmin(NAN),
+    _vmax(NAN),
+    _meshPtr(NULL),
+    _counter(0)
+{
+}
+
+FieldPrism3D::FieldPrism3D(const MeshTri2D& xyg, const Mesh1D& zg)
+  : _valuelist(),
+    _vmin(NAN),
+    _vmax(NAN),
+    _meshPtr(NULL),
+    _counter(0)
+{
+    _meshPtr = Ptr<MeshPrism3D>( new MeshPrism3D(xyg,zg) );
+    int npts = xyg.sizeNodes()*zg.size();
+    _valuelist.reserve(npts);
+}
+
+FieldPrism3D::FieldPrism3D(const FieldPrism3D& field)
+  : _valuelist(field._valuelist),
+    _vmin(field._vmin),
+    _vmax(field._vmax),
+    _meshPtr(field._meshPtr),
+    _counter(field._counter)
+{
+}
+
+FieldPrism3D&
+FieldPrism3D::operator=(const FieldPrism3D& field)
+{
+    _valuelist = field._valuelist;
+    _vmin = field._vmin;
+    _vmax = field._vmax;
+    _meshPtr = field._meshPtr;
+    _counter = field._counter;
+    return *this;
+}
+
+FieldPrism3D::~FieldPrism3D()
+{
+}
+
+double
+FieldPrism3D::rangeMin(Axis which) const
+{
+    if (!_meshPtr.isNull()) {
+        return _meshPtr->rangeMin(which);
+    }
+    return 0.0;
+}
+
+double
+FieldPrism3D::rangeMax(Axis which) const
+{
+    if (!_meshPtr.isNull()) {
+        return _meshPtr->rangeMax(which);
+    }
+    return 0.0;
+}
+
+FieldPrism3D&
+FieldPrism3D::define(int nodeId, double f)
+{
+    if (_valuelist.size() < (unsigned int)(nodeId+1)) {
+        _valuelist.resize((unsigned int)(nodeId+1), NAN);
+    }
+    _valuelist[nodeId] = f;
+
+    if (isnan(_vmin) || isnan(_vmax)) {
+        _vmin = _vmax = f;
+    } else {
+        if (f < _vmin) { _vmin = f; }
+        if (f > _vmax) { _vmax = f; }
+    }
+    return *this;
+}
+
+double
+FieldPrism3D::value(double x, double y, double z, double outside) const
+{
+    if (!_meshPtr.isNull()) {
+        CellPrism3D cell = _meshPtr->locate(Node3D(x,y,z));
+
+        // outside the defined data? then return the outside value
+        if (cell.isOutside()) {
+            return outside;
+        }
+
+        // interpolate first xy triangle
+        double fz0, fz1, phi[3];
+
+        Node2D node( x, y );
+        Node2D n1( cell.x(0), cell.y(0) );
+        Node2D n2( cell.x(1), cell.y(1) );
+        Node2D n3( cell.x(2), cell.y(2) );
+
+        CellTri2D tri(0, &n1, &n2, &n3);
+        tri.barycentrics(node, phi);
+
+        fz0 = phi[0]*_valuelist[ cell.nodeId(0) ]
+            + phi[1]*_valuelist[ cell.nodeId(1) ]
+            + phi[2]*_valuelist[ cell.nodeId(2) ];
+
+        // interpolate second xy triangle
+        fz1 = phi[0]*_valuelist[ cell.nodeId(3) ]
+            + phi[1]*_valuelist[ cell.nodeId(4) ]
+            + phi[2]*_valuelist[ cell.nodeId(5) ];
+
+        double zrange = cell.z(5) - cell.z(0);
+
+        if (zrange == 0.0) {
+            // interval undefined? then return avg value
+            return 0.5*(fz1+fz0);
+        }
+        // interpolate along z-axis
+        double delz = z - cell.z(0);
+        return fz0 + (delz/zrange)*(fz1-fz0);
+    }
+    return outside;
+}
+
+double
+FieldPrism3D::valueMin() const
+{
+    return _vmin;
+}
+
+double
+FieldPrism3D::valueMax() const
+{
+    return _vmax;
+}
Index: /tags/1.6.0/src/core2/RpFieldPrism3D.h
===================================================================
--- /tags/1.6.0/src/core2/RpFieldPrism3D.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpFieldPrism3D.h	(revision 6168)
@@ -0,0 +1,53 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::FieldPrism3D
+ *    This is a continuous, linear function defined by a series of
+ *    points on a 3D prismatic mesh.  It's a scalar field defined
+ *    in 3D space.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RPFIELDPRISM3D_H
+#define RPFIELDPRISM3D_H
+
+#include <math.h>
+#include <vector>
+#include <RpPtr.h>
+#include <RpMeshPrism3D.h>
+
+namespace Rappture {
+
+class FieldPrism3D {
+public:
+    FieldPrism3D();
+    FieldPrism3D(const MeshTri2D& xyg, const Mesh1D& zg);
+    FieldPrism3D(const FieldPrism3D& field);
+    FieldPrism3D& operator=(const FieldPrism3D& field);
+    virtual ~FieldPrism3D();
+
+    virtual double rangeMin(Axis which) const;
+    virtual double rangeMax(Axis which) const;
+
+    virtual FieldPrism3D& define(int nodeId, double f);
+    virtual double value(double x, double y, double z,
+        double outside=NAN) const;
+    virtual double valueMin() const;
+    virtual double valueMax() const;
+
+private:
+    std::vector<double> _valuelist;  // list of all values, in nodeId order
+    double _vmin;                    // minimum value in _valuelist
+    double _vmax;                    // maximum value in _valuelist
+    Ptr<MeshPrism3D> _meshPtr;       // mesh for all (x,y,z) points
+    int _counter;                    // counter for generating node IDs
+};
+
+} // namespace Rappture
+
+#endif
Index: /tags/1.6.0/src/core2/RpFieldRect3D.cc
===================================================================
--- /tags/1.6.0/src/core2/RpFieldRect3D.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/RpFieldRect3D.cc	(revision 6168)
@@ -0,0 +1,188 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::FieldRect3D
+ *    This is a continuous, linear function defined by a series of
+ *    points on a 3D structured mesh.  It's a scalar field defined
+ *    in 3D space.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpFieldRect3D.h"
+
+using namespace Rappture;
+
+FieldRect3D::FieldRect3D()
+  : _valuelist(),
+    _vmin(NAN),
+    _vmax(NAN),
+    _meshPtr(NULL),
+    _counter(0)
+{
+}
+
+FieldRect3D::FieldRect3D(const Mesh1D& xg, const Mesh1D& yg, const Mesh1D& zg)
+  : _valuelist(),
+    _vmin(NAN),
+    _vmax(NAN),
+    _meshPtr(NULL),
+    _counter(0)
+{
+    _meshPtr = Ptr<MeshRect3D>( new MeshRect3D(xg,yg,zg) );
+    int npts = xg.size()*yg.size()*zg.size();
+    _valuelist.reserve(npts);
+}
+
+FieldRect3D::FieldRect3D(const FieldRect3D& field)
+  : _valuelist(field._valuelist),
+    _vmin(field._vmin),
+    _vmax(field._vmax),
+    _meshPtr(field._meshPtr),
+    _counter(field._counter)
+{
+}
+
+FieldRect3D&
+FieldRect3D::operator=(const FieldRect3D& field)
+{
+    _valuelist = field._valuelist;
+    _vmin = field._vmin;
+    _vmax = field._vmax;
+    _meshPtr = field._meshPtr;
+    _counter = field._counter;
+    return *this;
+}
+
+FieldRect3D::~FieldRect3D()
+{
+}
+
+int
+FieldRect3D::size(Axis which) const
+{
+    if (!_meshPtr.isNull()) {
+        return _meshPtr->size(which);
+    }
+    return 0;
+}
+
+Node1D&
+FieldRect3D::atNode(Axis which, int pos)
+{
+    static Node1D null(0.0);
+
+    if (!_meshPtr.isNull()) {
+        return _meshPtr->at(which, pos);
+    }
+    return null;
+}
+
+double
+FieldRect3D::rangeMin(Axis which) const
+{
+    if (!_meshPtr.isNull()) {
+        return _meshPtr->rangeMin(which);
+    }
+    return 0.0;
+}
+
+double
+FieldRect3D::rangeMax(Axis which) const
+{
+    if (!_meshPtr.isNull()) {
+        return _meshPtr->rangeMax(which);
+    }
+    return 0.0;
+}
+
+FieldRect3D&
+FieldRect3D::define(int nodeId, double f)
+{
+    if (_valuelist.size() < (unsigned int)(nodeId+1)) {
+        _valuelist.resize((unsigned int)(nodeId+1), NAN);
+    }
+    _valuelist[nodeId] = f;
+
+    if (isnan(_vmin) || isnan(_vmax)) {
+        _vmin = _vmax = f;
+    } else {
+        if (f < _vmin) { _vmin = f; }
+        if (f > _vmax) { _vmax = f; }
+    }
+    return *this;
+}
+
+double
+FieldRect3D::value(double x, double y, double z, double outside) const
+{
+    double f0, f1, fy0, fy1, fz0, fz1;
+
+    if (!_meshPtr.isNull()) {
+        CellRect3D cell = _meshPtr->locate(Node3D(x,y,z));
+
+        // outside the defined data? then return the outside value
+        if (cell.isOutside()) {
+            return outside;
+        }
+
+        // yuck! brute force...
+        // interpolate x @ y0,z0
+        f0 = _valuelist[cell.nodeId(0)];
+        f1 = _valuelist[cell.nodeId(1)];
+        fy0 = _interpolate(cell.x(0),f0, cell.x(1),f1, x);
+
+        // interpolate x @ y1,z0
+        f0 = _valuelist[cell.nodeId(2)];
+        f1 = _valuelist[cell.nodeId(3)];
+        fy1 = _interpolate(cell.x(2),f0, cell.x(3),f1, x);
+
+        // interpolate y @ z0
+        fz0 = _interpolate(cell.y(0),fy0, cell.y(2),fy1, y);
+
+        // interpolate x @ y0,z1
+        f0 = _valuelist[cell.nodeId(4)];
+        f1 = _valuelist[cell.nodeId(5)];
+        fy0 = _interpolate(cell.x(4),f0, cell.x(5),f1, x);
+
+        // interpolate x @ y1,z1
+        f0 = _valuelist[cell.nodeId(6)];
+        f1 = _valuelist[cell.nodeId(7)];
+        fy1 = _interpolate(cell.x(6),f0, cell.x(7),f1, x);
+
+        // interpolate y @ z1
+        fz1 = _interpolate(cell.y(4),fy0, cell.y(6),fy1, y);
+
+        // interpolate z
+        return _interpolate(cell.z(0),fz0, cell.z(4),fz1, z);
+    }
+    return outside;
+}
+
+double
+FieldRect3D::valueMin() const
+{
+    return _vmin;
+}
+
+double
+FieldRect3D::valueMax() const
+{
+    return _vmax;
+}
+
+double
+FieldRect3D::_interpolate(double x0, double y0, double x1, double y1,
+    double x) const
+{
+    double dx = x1-x0;
+    if (dx == 0.0) {
+        return 0.5*(y0+y1);
+    }
+    return (y1-y0)*((x-x0)/dx) + y0;
+}
+
Index: /tags/1.6.0/src/core2/RpFieldRect3D.h
===================================================================
--- /tags/1.6.0/src/core2/RpFieldRect3D.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpFieldRect3D.h	(revision 6168)
@@ -0,0 +1,59 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::FieldRect3D
+ *    This is a continuous, linear function defined by a series of
+ *    points on a 3D structured mesh.  It's a scalar field defined
+ *    in 3D space.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RPFIELDRECT3D_H
+#define RPFIELDRECT3D_H
+
+#include <math.h>
+#include <vector>
+#include <RpPtr.h>
+#include <RpMeshRect3D.h>
+
+namespace Rappture {
+
+class FieldRect3D {
+public:
+    FieldRect3D();
+    FieldRect3D(const Mesh1D& xg, const Mesh1D& yg, const Mesh1D& zg);
+    FieldRect3D(const FieldRect3D& field);
+    FieldRect3D& operator=(const FieldRect3D& field);
+    virtual ~FieldRect3D();
+
+    virtual int size(Axis which) const;
+    virtual Node1D& atNode(Axis which, int pos);
+    virtual double rangeMin(Axis which) const;
+    virtual double rangeMax(Axis which) const;
+
+    virtual FieldRect3D& define(int nodeId, double f);
+    virtual double value(double x, double y, double z,
+        double outside=NAN) const;
+    virtual double valueMin() const;
+    virtual double valueMax() const;
+
+protected:
+    virtual double _interpolate(double x0, double y0, double x1, double y1,
+        double x) const;
+
+private:
+    std::vector<double> _valuelist; // list of all values, in nodeId order
+    double _vmin;                   // minimum value in _valuelist
+    double _vmax;                   // maximum value in _valuelist
+    Ptr<MeshRect3D> _meshPtr;       // mesh for all (x,y,z) points
+    int _counter;                   // counter for generating node IDs
+};
+
+} // namespace Rappture
+
+#endif
Index: /tags/1.6.0/src/core2/RpFieldTri2D.cc
===================================================================
--- /tags/1.6.0/src/core2/RpFieldTri2D.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/RpFieldTri2D.cc	(revision 6168)
@@ -0,0 +1,149 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::FieldTri2D
+ *    This is a continuous, linear function defined by a series of
+ *    points on a 2D unstructured mesh.  It's a scalar field defined
+ *    in 2D space.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpFieldTri2D.h"
+
+using namespace Rappture;
+
+FieldTri2D::FieldTri2D()
+  : _valuelist(),
+    _vmin(NAN),
+    _vmax(NAN),
+    _meshPtr(NULL),
+    _counter(0)
+{
+}
+
+FieldTri2D::FieldTri2D(const MeshTri2D& grid)
+  : _valuelist(),
+    _vmin(NAN),
+    _vmax(NAN),
+    _meshPtr(NULL),
+    _counter(0)
+{
+    _meshPtr = Ptr<MeshTri2D>( new MeshTri2D(grid) );
+    _valuelist.reserve(grid.sizeNodes());
+}
+
+FieldTri2D::FieldTri2D(const FieldTri2D& field)
+  : _valuelist(field._valuelist),
+    _vmin(field._vmin),
+    _vmax(field._vmax),
+    _meshPtr(field._meshPtr),
+    _counter(field._counter)
+{
+}
+
+FieldTri2D&
+FieldTri2D::operator=(const FieldTri2D& field)
+{
+    _valuelist = field._valuelist;
+    _vmin = field._vmin;
+    _vmax = field._vmax;
+    _meshPtr = field._meshPtr;
+    _counter = field._counter;
+    return *this;
+}
+
+FieldTri2D::~FieldTri2D()
+{
+}
+
+int
+FieldTri2D::size() const
+{
+    return _meshPtr->sizeNodes();
+}
+
+Node2D&
+FieldTri2D::atNode(int pos)
+{
+    static Node2D null(0.0,0.0);
+
+    if (!_meshPtr.isNull()) {
+        return _meshPtr->atNode(pos);
+    }
+    return null;
+}
+
+double
+FieldTri2D::rangeMin(Axis which) const
+{
+    if (!_meshPtr.isNull()) {
+        return _meshPtr->rangeMin(which);
+    }
+    return 0.0;
+}
+
+double
+FieldTri2D::rangeMax(Axis which) const
+{
+    if (!_meshPtr.isNull()) {
+        return _meshPtr->rangeMax(which);
+    }
+    return 0.0;
+}
+
+FieldTri2D&
+FieldTri2D::define(int nodeId, double f)
+{
+    if (_valuelist.size() < (unsigned int)(nodeId+1)) {
+        _valuelist.resize((unsigned int)(nodeId+1), NAN);
+    }
+    _valuelist[nodeId] = f;
+
+    if (isnan(_vmin) || isnan(_vmax)) {
+        _vmin = _vmax = f;
+    } else {
+        if (f < _vmin) { _vmin = f; }
+        if (f > _vmax) { _vmax = f; }
+    }
+    return *this;
+}
+
+double
+FieldTri2D::value(double x, double y, double outside) const
+{
+    if (!_meshPtr.isNull()) {
+        Node2D node(x,y);
+        CellTri2D cell = _meshPtr->locate(node);
+
+        if (!cell.isNull()) {
+            double phi[3];
+            cell.barycentrics(node, phi);
+
+            int n0 = cell.nodeId(0);
+            int n1 = cell.nodeId(1);
+            int n2 = cell.nodeId(2);
+
+            return phi[0]*_valuelist[n0]
+                 + phi[1]*_valuelist[n1]
+                 + phi[2]*_valuelist[n2];
+        }
+    }
+    return outside;
+}
+
+double
+FieldTri2D::valueMin() const
+{
+    return _vmin;
+}
+
+double
+FieldTri2D::valueMax() const
+{
+    return _vmax;
+}
Index: /tags/1.6.0/src/core2/RpFieldTri2D.h
===================================================================
--- /tags/1.6.0/src/core2/RpFieldTri2D.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpFieldTri2D.h	(revision 6168)
@@ -0,0 +1,54 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::FieldTri2D
+ *    This is a continuous, linear function defined by a series of
+ *    points on a 2D unstructured mesh.  It's a scalar field defined
+ *    in 2D space.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RPFIELDTRI2D_H
+#define RPFIELDTRI2D_H
+
+#include <math.h>
+#include <vector>
+#include <RpPtr.h>
+#include <RpMeshTri2D.h>
+
+namespace Rappture {
+
+class FieldTri2D {
+public:
+    FieldTri2D();
+    FieldTri2D(const MeshTri2D& grid);
+    FieldTri2D(const FieldTri2D& field);
+    FieldTri2D& operator=(const FieldTri2D& field);
+    virtual ~FieldTri2D();
+
+    virtual int size() const;
+    virtual Node2D& atNode(int pos);
+    virtual double rangeMin(Axis which) const;
+    virtual double rangeMax(Axis which) const;
+
+    virtual FieldTri2D& define(int nodeId, double f);
+    virtual double value(double x, double y, double outside=NAN) const;
+    virtual double valueMin() const;
+    virtual double valueMax() const;
+
+private:
+    std::vector<double> _valuelist; // list of all values, in nodeId order
+    double _vmin;                   // minimum value in _valuelist
+    double _vmax;                   // maximum value in _valuelist
+    Ptr<MeshTri2D> _meshPtr;        // mesh for all (x,y) points
+    int _counter;                   // counter for generating node IDs
+};
+
+} // namespace Rappture
+
+#endif
Index: /tags/1.6.0/src/core2/RpMesh1D.cc
===================================================================
--- /tags/1.6.0/src/core2/RpMesh1D.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/RpMesh1D.cc	(revision 6168)
@@ -0,0 +1,376 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::Mesh1D
+ *    This is a non-uniform mesh for 1-dimensional structures.
+ *    It's like a string of x-coordinates that form the range for
+ *    an X-Y plot.  Nodes can be added to and deleted from the mesh,
+ *    and the interval containing a given coordinate can be found
+ *    quickly, to support interpolation operations.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <assert.h>
+#include "RpMesh1D.h"
+
+using namespace Rappture;
+
+// serialization version 'A' for Mesh1D...
+SerialConversion Mesh1D::versionA("Mesh1D", 'A',
+    (Serializable::serializeObjectMethod)&Mesh1D::serialize_A,
+    &Mesh1D::create,
+    (Serializable::deserializeObjectMethod)&Mesh1D::deserialize_A);
+
+
+Cell1D::Cell1D()
+{
+    _nodeIds[0] = _nodeIds[1] = -1;
+    _x[0] = _x[1] = 0.0;
+}
+
+Cell1D::Cell1D(int n0, double x0, int n1, double x1)
+{
+    _nodeIds[0] = n0;
+    _nodeIds[1] = n1;
+    _x[0] = x0;
+    _x[1] = x1;
+}
+
+int&
+Cell1D::nodeId(int n)
+{
+    assert(n >= 0 && n < 2);
+    return _nodeIds[n];
+}
+
+double&
+Cell1D::x(int n)
+{
+    assert(n >= 0 && n < 2);
+    return _x[n];
+}
+
+int
+Cell1D::isOutside() const
+{
+    return (_nodeIds[0] < 0 || _nodeIds[1] < 0);
+}
+
+
+Mesh1D::Mesh1D()
+  : _nodelist(),
+    _counter(0),
+    _id2node(),
+    _id2nodeDirty(1)
+{
+}
+
+Mesh1D::Mesh1D(double x0, double x1, int npts)
+  : _nodelist(),
+    _counter(0),
+    _id2node(),
+    _id2nodeDirty(1)
+{
+    Node1D newnode(0.0);
+
+    assert(npts >= 2);
+    double dx = (x1-x0)/(npts-1);
+
+    for (int i=0; i < npts; i++) {
+        newnode.x(x0 + i*dx);
+        newnode.id(_counter++);
+        _nodelist.push_back(newnode);
+    }
+}
+
+Mesh1D::Mesh1D(const Mesh1D& mesh)
+  : _nodelist(mesh._nodelist),
+    _counter(mesh._counter),
+    _id2node(mesh._id2node),
+    _id2nodeDirty(mesh._id2nodeDirty)
+{
+}
+
+Mesh1D&
+Mesh1D::operator=(const Mesh1D& mesh)
+{
+    _nodelist = mesh._nodelist;
+    _counter = mesh._counter;
+    _id2node = mesh._id2node;
+    _id2nodeDirty = mesh._id2nodeDirty;
+    return *this;
+}
+
+Mesh1D::~Mesh1D()
+{
+}
+
+Node1D&
+Mesh1D::add(const Node1D& node)
+{
+    int added = 0;  // nothing added yet
+
+    // make sure this node has an ID, or assign one automatically
+    Node1D newnode(node);
+    if (newnode.id() < 0) {
+        newnode.id(_counter++);
+    }
+
+    // find the spot where this node should be inserted
+    int n = _locateInterval(newnode.x());
+    if (n >= 0) {
+        if (newnode.x() > _nodelist[n].x()) {
+            _nodelist.insert(_nodelist.begin()+n+1, newnode);
+            added = 1;
+        }
+    }
+    else if (_nodelist.size() > 0 && newnode.x() < _nodelist[0].x()) {
+        _nodelist.push_front(newnode);
+        added = 1;
+        n = 0;
+    }
+    else {
+        _nodelist.push_back(newnode);
+        added = 1;
+        n = _nodelist.size()-1;
+    }
+
+    // did we really add a node?  then rebuild the id2node map
+    if (added) {
+        _id2nodeDirty = 1;
+    }
+    return _nodelist[n];
+}
+
+Mesh1D&
+Mesh1D::remove(int nodeId)
+{
+    if (!_id2nodeDirty) {
+        if ((unsigned int) nodeId < _id2node.size()) {
+            int n = _id2node[nodeId];
+            _nodelist.erase( _nodelist.begin()+n );
+        }
+    } else {
+        std::deque<Node1D>::iterator i;
+        for (i=_nodelist.begin(); i != _nodelist.end(); ++i) {
+            if (i->id() == nodeId) {
+                _nodelist.erase(i);
+                break;
+            }
+        }
+    }
+    _id2nodeDirty = 1;
+    return *this;
+}
+
+Mesh1D&
+Mesh1D::remove(const Node1D& node)
+{
+    if (node.id() >= 0) {
+        // does this node have an ID?  then use it directly
+        remove(node.id());
+    } else {
+        // try to find the node for this coordinate
+        int n = _locateInterval(node.x());
+        if (n >= 0) {
+            // first node in interval?
+            if (node.x() == _nodelist[n].x()) {
+                _nodelist.erase( _nodelist.begin()+n );
+                _id2nodeDirty = 1;
+            }
+            // last node in interval?
+            else if (  ( (unsigned int)(n+1) < _nodelist.size())
+                    && ( node.x() == _nodelist[n+1].x()) ) {
+                _nodelist.erase( _nodelist.begin()+n+1 );
+                _id2nodeDirty = 1;
+            }
+        }
+    }
+    return *this;
+}
+
+Mesh1D&
+Mesh1D::clear()
+{
+    _nodelist.clear();
+    _id2node.clear();
+    _counter = 0;
+    _id2nodeDirty = 0;
+    return *this;
+}
+
+int
+Mesh1D::size() const
+{
+    return _nodelist.size();
+}
+
+Node1D&
+Mesh1D::at(int pos)
+{
+    return _nodelist.at(pos);
+}
+
+double
+Mesh1D::rangeMin() const
+{
+    if (_nodelist.size() > 0) {
+        return _nodelist.at(0).x();
+    }
+    return 0.0;
+}
+
+double
+Mesh1D::rangeMax() const
+{
+    int last = _nodelist.size()-1;
+    if (last >= 0) {
+        return _nodelist.at(last).x();
+    }
+    return 0.0;
+}
+
+Cell1D
+Mesh1D::locate(const Node1D& node) const
+{
+    Cell1D rval;
+
+    int n = _locateInterval(node.x());
+    if (n < 0) {
+        if (node.x() <= rangeMin()) {
+            if (_nodelist.size() > 0) {
+                rval.nodeId(1) = _nodelist[0].id();
+                rval.x(1) = _nodelist[0].x();
+            }
+        }
+        else if (node.x() >= rangeMax()) {
+            int last = _nodelist.size()-1;
+            if (last >= 0) {
+                rval.nodeId(0) = _nodelist.at(last).id();
+                rval.x(0) = _nodelist.at(last).x();
+            }
+        }
+    } else {
+        rval.nodeId(0) = _nodelist[n].id();
+        rval.x(0)      = _nodelist[n].x();
+        rval.nodeId(1) = _nodelist[n+1].id();
+        rval.x(1)      = _nodelist[n+1].x();
+    }
+    return rval;
+}
+
+int
+Mesh1D::_locateInterval(double x) const
+{
+    int max   = _nodelist.size()-1;
+    int first = 0;
+    int last  = max;
+    int pos   = (first+last)/2;
+
+    while (first <= last) {
+        int prev = pos-1;
+        int next = pos+1;
+
+        double x0 = _nodelist[pos].x();
+        double x1 = (next <= max) ? _nodelist[next].x() : x0;
+
+        if (x >= x0 && x <= x1) {
+            if (next > max) {
+                // On boundary node
+                if (prev >= first)
+                    return prev;
+                else
+                    return -1; // Shouldn't happen - single node!
+            }
+            return pos;
+        }
+        else if (x < x0) {
+            if (prev < first) {
+                return -1;   // can't go there -- bail out!
+            }
+            last = prev;
+        }
+        else {
+            if (next > max) {
+                return -1;   // can't go there -- bail out!
+            }
+            first = next;
+        }
+        pos = (first+last)/2;
+    }
+    return -1;
+}
+
+void
+Mesh1D::_rebuildNodeIdMap()
+{
+    int maxid = 0;
+    int n;
+    std::deque<Node1D>::iterator i;
+
+    // compute the maximum value for all node IDs
+    for (i=_nodelist.begin(); i != _nodelist.end(); ++i) {
+        if (i->id() > maxid) {
+            maxid = i->id();
+        }
+    }
+
+    // reserve enough space to map all of these IDs
+    _id2node.clear();
+    for (n=0; n < maxid; n++) {
+        _id2node.push_back(-1);  // mapping not known
+    }
+
+    // run through all nodes and build the node map
+    n = 0;
+    for (i=_nodelist.begin(); i != _nodelist.end(); ++i,++n) {
+        _id2node[ i->id() ] = n;
+    }
+
+    _id2nodeDirty = 0;
+}
+
+Ptr<Serializable>
+Mesh1D::create()
+{
+    return Ptr<Serializable>( (Serializable*) new Mesh1D() );
+}
+
+void
+Mesh1D::serialize_A(SerialBuffer& buffer) const
+{
+    Mesh1D* nonconst = (Mesh1D*)this;
+    buffer.writeInt(_nodelist.size());
+
+    std::deque<Node1D>::iterator iter = nonconst->_nodelist.begin();
+    while (iter != _nodelist.end()) {
+        buffer.writeInt( (*iter).id() );
+        buffer.writeDouble( (*iter).x() );
+        ++iter;
+    }
+    buffer.writeInt(_counter);
+}
+
+Outcome
+Mesh1D::deserialize_A(SerialBuffer& buffer)
+{
+    Outcome status;
+    Node1D newnode(0.0);
+
+    clear();
+    int npts = buffer.readInt();
+
+    for (int n=0; n < npts; n++) {
+        newnode.id( buffer.readInt() );
+        newnode.x( buffer.readDouble() );
+        _nodelist.push_back(newnode);
+    }
+    _counter = buffer.readInt();
+
+    return status;
+}
Index: /tags/1.6.0/src/core2/RpMesh1D.h
===================================================================
--- /tags/1.6.0/src/core2/RpMesh1D.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpMesh1D.h	(revision 6168)
@@ -0,0 +1,86 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::Mesh1D
+ *    This is a non-uniform mesh for 1-dimensional structures.
+ *    It's like a string of x-coordinates that form the range for
+ *    an X-Y plot.  Nodes can be added to and deleted from the mesh,
+ *    and the interval containing a given coordinate can be found
+ *    quickly, to support interpolation operations.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RPMESH1D_H
+#define RPMESH1D_H
+
+#include <deque>
+#include <RpNode.h>
+#include <RpSerializable.h>
+
+namespace Rappture {
+
+class Cell1D {
+public:
+    Cell1D();
+    Cell1D(int n0, double x0, int n1, double x1);
+    int& nodeId(int n);
+    double& x(int n);
+
+    int isOutside() const;
+
+private:
+    int _nodeIds[2];
+    double _x[2];
+};
+
+class Mesh1D : public Serializable {
+public:
+    Mesh1D();
+    Mesh1D(double x0, double x1, int npts);
+    Mesh1D(const Mesh1D& mesh);
+    Mesh1D& operator=(const Mesh1D& mesh);
+    virtual ~Mesh1D();
+
+    virtual Node1D& add(const Node1D& node);
+    virtual Mesh1D& remove(int nodeId);
+    virtual Mesh1D& remove(const Node1D& node);
+    virtual Mesh1D& clear();
+
+    virtual int size() const;
+    virtual Node1D& at(int pos);
+    virtual double rangeMin() const;
+    virtual double rangeMax() const;
+
+    virtual Cell1D locate(const Node1D& node) const;
+
+    // required for base class Serializable:
+    const char* serializerType() const { return "Mesh1D"; }
+    char serializerVersion() const { return 'A'; }
+
+    void serialize_A(SerialBuffer& buffer) const;
+    static Ptr<Serializable> create();
+    Outcome deserialize_A(SerialBuffer& buffer);
+
+protected:
+    virtual int _locateInterval(double x) const;
+    virtual void _rebuildNodeIdMap();
+
+private:
+    std::deque<Node1D> _nodelist;   // list of all nodes, in sorted order
+    int _counter;                   // auto counter for node IDs
+
+    std::deque<int> _id2node;       // maps node Id => index in _nodelist
+    int _id2nodeDirty;              // non-zero => _id2node needs to be rebuilt
+
+    // methods for serializing/deserializing version 'A'
+    static SerialConversion versionA;
+};
+
+} // namespace Rappture
+
+#endif /*RPMESH1D_H*/
Index: /tags/1.6.0/src/core2/RpMeshPrism3D.cc
===================================================================
--- /tags/1.6.0/src/core2/RpMeshPrism3D.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/RpMeshPrism3D.cc	(revision 6168)
@@ -0,0 +1,165 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::MeshPrism3D
+ *    This is a non-uniform 3D mesh, made of triangles in (x,y) and
+ *    line segments in z.  Their product forms triangular prisms.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <assert.h>
+#include "RpMeshPrism3D.h"
+
+using namespace Rappture;
+
+CellPrism3D::CellPrism3D()
+{
+    for (int i=0; i < 6; i++) {
+        _nodeIds[i] = -1;
+        _x[i] = 0.0;
+        _y[i] = 0.0;
+        _z[i] = 0.0;
+    }
+}
+
+CellPrism3D::CellPrism3D(const CellPrism3D& cell)
+{
+    for (int i=0; i < 6; i++) {
+        _nodeIds[i] = cell._nodeIds[i];
+        _x[i] = cell._x[i];
+        _y[i] = cell._y[i];
+        _z[i] = cell._z[i];
+    }
+}
+
+CellPrism3D&
+CellPrism3D::operator=(const CellPrism3D& cell)
+{
+    for (int i=0; i < 6; i++) {
+        _nodeIds[i] = cell._nodeIds[i];
+        _x[i] = cell._x[i];
+        _y[i] = cell._y[i];
+        _z[i] = cell._z[i];
+    }
+    return *this;
+}
+
+int&
+CellPrism3D::nodeId(int n)
+{
+    assert(n >= 0 && n < 6);
+    return _nodeIds[n];
+}
+
+double&
+CellPrism3D::x(int n)
+{
+    assert(n >= 0 && n < 6);
+    return _x[n];
+}
+
+double&
+CellPrism3D::y(int n)
+{
+    assert(n >= 0 && n < 6);
+    return _y[n];
+}
+
+double&
+CellPrism3D::z(int n)
+{
+    assert(n >= 0 && n < 6);
+    return _z[n];
+}
+
+int
+CellPrism3D::isOutside() const
+{
+    for (int i=0; i < 6; i++) {
+        if (_nodeIds[i] < 0) {
+            return 1;
+        }
+    }
+    return 0;
+}
+
+MeshPrism3D::MeshPrism3D()
+{
+}
+
+MeshPrism3D::MeshPrism3D(const MeshTri2D& xym, const Mesh1D& zm)
+{
+    _xymesh = xym;
+    _zmesh  = zm;
+}
+
+MeshPrism3D::MeshPrism3D(const MeshPrism3D& mesh)
+    : _xymesh(mesh._xymesh),
+      _zmesh(mesh._zmesh)
+{
+}
+
+MeshPrism3D&
+MeshPrism3D::operator=(const MeshPrism3D& mesh)
+{
+    _xymesh = mesh._xymesh;
+    _zmesh  = mesh._zmesh;
+    return *this;
+}
+
+MeshPrism3D::~MeshPrism3D()
+{
+}
+
+double
+MeshPrism3D::rangeMin(Axis which) const
+{
+    if (which == zaxis) {
+        return _zmesh.rangeMin();
+    }
+    return _xymesh.rangeMin(which);
+}
+
+double
+MeshPrism3D::rangeMax(Axis which) const
+{
+    if (which == zaxis) {
+        return _zmesh.rangeMax();
+    }
+    return _xymesh.rangeMax(which);
+}
+
+CellPrism3D
+MeshPrism3D::locate(const Node3D& node) const
+{
+    CellPrism3D result;
+
+    Node2D xycoord(node.x(), node.y());
+    CellTri2D xycell = _xymesh.locate(xycoord);
+
+    Node1D zcoord(node.z());
+    Cell1D zcell = _zmesh.locate(zcoord);
+
+    if (!xycell.isOutside() && !zcell.isOutside()) {
+        int n = 0;
+        for (int iz=0; iz < 2; iz++) {
+            for (int ixy=0; ixy < 3; ixy++) {
+                int nxy = xycell.nodeId(ixy);
+                int nz = zcell.nodeId(iz);
+                if (nxy >= 0 && nz >= 0) {
+                    result.nodeId(n) = nz*_xymesh.sizeNodes() + nxy;
+                    result.x(n) = xycell.x(ixy);
+                    result.y(n) = xycell.y(ixy);
+                    result.z(n) = zcell.x(iz);
+                }
+                n++;
+            }
+        }
+    }
+    return result;
+}
Index: /tags/1.6.0/src/core2/RpMeshPrism3D.h
===================================================================
--- /tags/1.6.0/src/core2/RpMeshPrism3D.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpMeshPrism3D.h	(revision 6168)
@@ -0,0 +1,66 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::MeshPrism3D
+ *    This is a non-uniform 3D mesh, made of triangles in (x,y) and
+ *    line segments in z.  Their product forms triangular prisms.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RPMESHPRISM3D_H
+#define RPMESHPRISM3D_H
+
+#include <RpMesh1D.h>
+#include <RpMeshTri2D.h>
+
+namespace Rappture {
+
+class CellPrism3D {
+public:
+    CellPrism3D();
+    CellPrism3D(const CellPrism3D& cell);
+    CellPrism3D& operator=(const CellPrism3D& cell);
+    int& nodeId(int n);
+    double& x(int n);
+    double& y(int n);
+    double& z(int n);
+
+    int isOutside() const;
+
+private:
+    int _nodeIds[6];
+    double _x[6];
+    double _y[6];
+    double _z[6];
+};
+
+class MeshPrism3D {
+public:
+    MeshPrism3D();
+    MeshPrism3D(const MeshTri2D& xym, const Mesh1D& zm);
+    MeshPrism3D(const MeshPrism3D& mesh);
+    MeshPrism3D& operator=(const MeshPrism3D& mesh);
+    virtual ~MeshPrism3D();
+
+    virtual double rangeMin(Axis which) const;
+    virtual double rangeMax(Axis which) const;
+
+    virtual CellPrism3D locate(const Node3D& node) const;
+
+    // required for base class Serializable:
+    const char* serializerType() const { return "MeshPrism3D"; }
+    char serializerVersion() const { return 'A'; }
+
+private:
+    MeshTri2D _xymesh;  // triangular mesh in x/y axes
+    Mesh1D _zmesh;      // mesh along z-axis
+};
+
+} // namespace Rappture
+
+#endif
Index: /tags/1.6.0/src/core2/RpMeshRect3D.cc
===================================================================
--- /tags/1.6.0/src/core2/RpMeshRect3D.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/RpMeshRect3D.cc	(revision 6168)
@@ -0,0 +1,210 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::MeshRect3D
+ *    This is a non-uniform, structured 3D mesh.  Each of the x, y,
+ *    and z-axes can be configured independently.  Their product
+ *    forms a rectangular mesh in 3D space.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpMeshRect3D.h"
+
+using namespace Rappture;
+
+CellRect3D::CellRect3D()
+{
+    for (int i=0; i < 8; i++) {
+        _nodeIds[i] = -1;
+        _x[i] = 0.0;
+        _y[i] = 0.0;
+        _z[i] = 0.0;
+    }
+}
+
+CellRect3D::CellRect3D(const CellRect3D& cell)
+{
+    for (int i=0; i < 8; i++) {
+        _nodeIds[i] = cell._nodeIds[i];
+        _x[i] = cell._x[i];
+        _y[i] = cell._y[i];
+        _z[i] = cell._z[i];
+    }
+}
+
+CellRect3D&
+CellRect3D::operator=(const CellRect3D& cell)
+{
+    for (int i=0; i < 8; i++) {
+        _nodeIds[i] = cell._nodeIds[i];
+        _x[i] = cell._x[i];
+        _y[i] = cell._y[i];
+        _z[i] = cell._z[i];
+    }
+    return *this;
+}
+
+int&
+CellRect3D::nodeId(int n)
+{
+    assert(n >= 0 && n < 8);
+    return _nodeIds[n];
+}
+
+double&
+CellRect3D::x(int n)
+{
+    assert(n >= 0 && n < 8);
+    return _x[n];
+}
+
+double&
+CellRect3D::y(int n)
+{
+    assert(n >= 0 && n < 8);
+    return _y[n];
+}
+
+double&
+CellRect3D::z(int n)
+{
+    assert(n >= 0 && n < 8);
+    return _z[n];
+}
+
+int
+CellRect3D::isOutside() const
+{
+    for (int i=0; i < 8; i++) {
+        if (_nodeIds[i] < 0) {
+            return 1;
+        }
+    }
+    return 0;
+}
+
+
+MeshRect3D::MeshRect3D()
+{
+}
+
+MeshRect3D::MeshRect3D(const Mesh1D& xm, const Mesh1D& ym, const Mesh1D& zm)
+{
+    _axis[0] = xm;
+    _axis[1] = ym;
+    _axis[2] = zm;
+}
+
+MeshRect3D::MeshRect3D(const MeshRect3D& mesh)
+    : _axis(mesh._axis)
+{
+}
+
+MeshRect3D&
+MeshRect3D::operator=(const MeshRect3D& mesh)
+{
+    _axis[0] = mesh._axis[0];
+    _axis[1] = mesh._axis[1];
+    _axis[2] = mesh._axis[2];
+    return *this;
+}
+
+MeshRect3D::~MeshRect3D()
+{
+}
+
+Node1D&
+MeshRect3D::add(Axis which, const Node1D& node)
+{
+    return _axis[which].add(node);
+}
+
+MeshRect3D&
+MeshRect3D::remove(Axis which, int nodeId)
+{
+    _axis[which].remove(nodeId);
+    return *this;
+}
+
+MeshRect3D&
+MeshRect3D::remove(Axis which, const Node1D& node)
+{
+    _axis[which].remove(node);
+    return *this;
+}
+
+MeshRect3D&
+MeshRect3D::clear()
+{
+    _axis[0].clear();
+    _axis[1].clear();
+    _axis[2].clear();
+    return *this;
+}
+
+int
+MeshRect3D::size(Axis which) const
+{
+    return _axis[which].size();
+}
+
+Node1D&
+MeshRect3D::at(Axis which, int pos)
+{
+    return _axis[which].at(pos);
+}
+
+double
+MeshRect3D::rangeMin(Axis which) const
+{
+    return _axis[which].rangeMin();
+}
+
+double
+MeshRect3D::rangeMax(Axis which) const
+{
+    return _axis[which].rangeMax();
+}
+
+CellRect3D
+MeshRect3D::locate(const Node3D& node) const
+{
+    CellRect3D result;
+    Cell1D cells[3];
+    Node1D coord(0.0);
+
+    coord.x(node.x());
+    cells[0] = _axis[0].locate(coord);
+
+    coord.x(node.y());
+    cells[1] = _axis[1].locate(coord);
+
+    coord.x(node.z());
+    cells[2] = _axis[2].locate(coord);
+
+    int n = 0;
+    for (int iz=0; iz < 2; iz++) {
+        for (int iy=0; iy < 2; iy++) {
+            for (int ix=0; ix < 2; ix++) {
+                int nx = cells[0].nodeId(ix);
+                int ny = cells[1].nodeId(iy);
+                int nz = cells[2].nodeId(iz);
+                if (nx >= 0 && ny >= 0 && nz >= 0) {
+                    result.nodeId(n) = nz*(_axis[0].size()*_axis[1].size())
+                                       + ny*(_axis[0].size())
+                                       + nx;
+                    result.x(n) = cells[0].x(ix);
+                    result.y(n) = cells[1].x(iy);
+                    result.z(n) = cells[2].x(iz);
+                }
+                n++;
+            }
+        }
+    }
+    return result;
+}
Index: /tags/1.6.0/src/core2/RpMeshRect3D.h
===================================================================
--- /tags/1.6.0/src/core2/RpMeshRect3D.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpMeshRect3D.h	(revision 6168)
@@ -0,0 +1,72 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::MeshRect3D
+ *    This is a non-uniform, structured 3D mesh.  Each of the x, y,
+ *    and z-axes can be configured independently.  Their product
+ *    forms a rectangular mesh in 3D space.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RAPPTURE_MESHRECT3D_H
+#define RAPPTURE_MESHRECT3D_H
+
+#include "RpMesh1D.h"
+
+namespace Rappture {
+
+class CellRect3D {
+public:
+    CellRect3D();
+    CellRect3D(const CellRect3D& cell);
+    CellRect3D& operator=(const CellRect3D& cell);
+    int& nodeId(int n);
+    double& x(int n);
+    double& y(int n);
+    double& z(int n);
+
+    int isOutside() const;
+
+private:
+    int _nodeIds[8];
+    double _x[8];
+    double _y[8];
+    double _z[8];
+};
+
+class MeshRect3D {
+public:
+    MeshRect3D();
+    MeshRect3D(const Mesh1D& xm, const Mesh1D& ym, const Mesh1D& zm);
+    MeshRect3D(const MeshRect3D& mesh);
+    MeshRect3D& operator=(const MeshRect3D& mesh);
+    virtual ~MeshRect3D();
+
+    virtual Node1D& add(Axis which, const Node1D& node);
+    virtual MeshRect3D& remove(Axis which, int nodeId);
+    virtual MeshRect3D& remove(Axis which, const Node1D& node);
+    virtual MeshRect3D& clear();
+
+    virtual int size(Axis which) const;
+    virtual Node1D& at(Axis which, int pos);
+    virtual double rangeMin(Axis which) const;
+    virtual double rangeMax(Axis which) const;
+
+    virtual CellRect3D locate(const Node3D& node) const;
+
+    // required for base class Serializable:
+    const char* serializerType() const { return "MeshRect3D"; }
+    char serializerVersion() const { return 'A'; }
+
+private:
+    Mesh1D _axis[3];  // mesh along x-, y-, and z-axes
+};
+
+} // namespace Rappture
+
+#endif
Index: /tags/1.6.0/src/core2/RpMeshTri2D.cc
===================================================================
--- /tags/1.6.0/src/core2/RpMeshTri2D.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/RpMeshTri2D.cc	(revision 6168)
@@ -0,0 +1,459 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::MeshTri2D
+ *    This is a non-uniform, triangular mesh for 2-dimensional
+ *    structures.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <math.h>
+#include <assert.h>
+#include <float.h>
+#include <iostream>
+
+#include "RpMeshTri2D.h"
+
+using namespace Rappture;
+
+CellTri2D::CellTri2D()
+{
+    _cellId = -1;
+    _nodes[0] = NULL;
+    _nodes[1] = NULL;
+    _nodes[2] = NULL;
+}
+
+CellTri2D::CellTri2D(int cellId, Node2D* n1Ptr, Node2D* n2Ptr, Node2D* n3Ptr)
+{
+    _cellId = cellId;
+    _nodes[0] = n1Ptr;
+    _nodes[1] = n2Ptr;
+    _nodes[2] = n3Ptr;
+}
+
+CellTri2D::CellTri2D(const CellTri2D& cell)
+{
+    _cellId = cell._cellId;
+    _nodes[0] = cell._nodes[0];
+    _nodes[1] = cell._nodes[1];
+    _nodes[2] = cell._nodes[2];
+}
+
+CellTri2D&
+CellTri2D::operator=(const CellTri2D& cell)
+{
+    _cellId = cell._cellId;
+    _nodes[0] = cell._nodes[0];
+    _nodes[1] = cell._nodes[1];
+    _nodes[2] = cell._nodes[2];
+    return *this;
+}
+
+int
+CellTri2D::isNull() const
+{
+    return (_nodes[0] == NULL || _nodes[1] == NULL || _nodes[2] == NULL);
+}
+
+int
+CellTri2D::isOutside() const
+{
+    return (_cellId < 0);
+}
+
+void
+CellTri2D::clear()
+{
+    _cellId = -1;
+    _nodes[0] = _nodes[1] = _nodes[2] = NULL;
+}
+
+int
+CellTri2D::cellId() const
+{
+    return _cellId;
+}
+
+int
+CellTri2D::nodeId(int n) const
+{
+    assert(n >= 0 && n <= 2);
+    return _nodes[n]->id();
+}
+
+double
+CellTri2D::x(int n) const
+{
+    assert(n >= 0 && n <= 2);
+    return _nodes[n]->x();
+}
+
+double
+CellTri2D::y(int n) const
+{
+    assert(n >= 0 && n <= 2);
+    return _nodes[n]->y();
+}
+
+void
+CellTri2D::barycentrics(const Node2D& node, double* phi) const
+{
+    assert( _nodes[0] != NULL && _nodes[1] != NULL && _nodes[2] != NULL);
+
+    double x2 = _nodes[1]->x() - _nodes[0]->x();
+    double y2 = _nodes[1]->y() - _nodes[0]->y();
+    double x3 = _nodes[2]->x() - _nodes[0]->x();
+    double y3 = _nodes[2]->y() - _nodes[0]->y();
+    double xr = node.x() - _nodes[0]->x();
+    double yr = node.y() - _nodes[0]->y();
+    double det = x2*y3-x3*y2;
+
+    phi[1] = (xr*y3 - x3*yr)/det;
+    phi[2] = (x2*yr - xr*y2)/det;
+    phi[0] = 1.0-phi[1]-phi[2];
+}
+
+
+Tri2D::Tri2D()
+{
+    nodes[0] = nodes[1] = nodes[2] = -1;
+    neighbors[0] = neighbors[1] = neighbors[2] = -1;
+}
+
+Tri2D::Tri2D(int n1, int n2, int n3)
+{
+    nodes[0] = n1;
+    nodes[1] = n2;
+    nodes[2] = n3;
+    neighbors[0] = neighbors[1] = neighbors[2] = -1;
+}
+
+
+MeshTri2D::MeshTri2D()
+  : _counter(0),
+    _id2nodeDirty(0),
+    _id2node(100,-1)
+{
+    _nodelist.reserve(1024);
+    _min[0] = _min[1] = NAN;
+    _max[0] = _max[1] = NAN;
+}
+
+MeshTri2D::MeshTri2D(const MeshTri2D& mesh)
+  : _nodelist(mesh._nodelist),
+    _counter(mesh._counter),
+    _celllist(mesh._celllist),
+    _id2nodeDirty(mesh._id2nodeDirty),
+    _id2node(mesh._id2node)
+{
+    for (int i=0; i < 2; i++) {
+        _min[i] = mesh._min[i];
+        _max[i] = mesh._max[i];
+    }
+}
+
+MeshTri2D&
+MeshTri2D::operator=(const MeshTri2D& mesh)
+{
+    _nodelist = mesh._nodelist;
+    _counter = mesh._counter;
+    for (int i=0; i < 2; i++) {
+        _min[i] = mesh._min[i];
+        _max[i] = mesh._max[i];
+    }
+    _celllist = mesh._celllist;
+    _id2nodeDirty = mesh._id2nodeDirty;
+    _id2node = mesh._id2node;
+    _lastLocate.clear();
+    return *this;
+}
+
+MeshTri2D::~MeshTri2D()
+{
+}
+
+Node2D&
+MeshTri2D::addNode(const Node2D& nd)
+{
+    Node2D node(nd);
+
+    if (node.id() < 0) {
+        node.id(_counter++);
+    } else {
+        // see if this node already exists
+        Node2D* nptr = _getNodeById(node.id());
+        if (nptr) {
+            return *nptr;
+        }
+    }
+
+    // add this new node
+    _nodelist.push_back(node);
+
+    if (isnan(_min[0])) {
+        _min[0] = _max[0] = node.x();
+        _min[1] = _max[1] = node.y();
+    } else {
+        if (node.x() < _min[0]) { _min[0] = node.x(); }
+        if (node.x() > _max[0]) { _max[0] = node.x(); }
+        if (node.y() < _min[1]) { _min[1] = node.y(); }
+        if (node.y() > _max[1]) { _max[1] = node.y(); }
+    }
+
+    // index of this new node
+    int n = _nodelist.size()-1;
+
+    if (!_id2nodeDirty) {
+        // id2node map up to date?  then keep it up to date
+        if ((unsigned int)node.id() >= _id2node.size()) {
+            int newsize = 2*_id2node.size();
+            for (int i=_id2node.size(); i < newsize; i++) {
+                _id2node.push_back(-1);
+            }
+        }
+        _id2node[node.id()] = n;
+    }
+    return _nodelist[n];
+}
+
+void
+MeshTri2D::addCell(const Node2D& n1, const Node2D& n2, const Node2D& n3)
+{
+    Node2D node1 = addNode(n1);
+    Node2D node2 = addNode(n2);
+    Node2D node3 = addNode(n3);
+    addCell(node1.id(), node2.id(), node3.id());
+}
+
+void
+MeshTri2D::addCell(int nId1, int nId2, int nId3)
+{
+    _celllist.push_back( Tri2D(nId1,nId2,nId3) );
+    int triId = _celllist.size()-1;
+
+    Edge2D edge;
+    int nodes[4];
+    nodes[0] = nId1;
+    nodes[1] = nId2;
+    nodes[2] = nId3;
+    nodes[3] = nId1;
+
+    // update the neighbors for this triangle
+    for (int i=0; i < 3; i++) {
+        int n = (i+2) % 3;    // this is node opposite i/i+1 edge
+
+        // build an edge with nodes in proper order
+        if (nodes[i] < nodes[i+1]) {
+            edge.fromNode = nodes[i];
+            edge.toNode = nodes[i+1];
+        } else {
+            edge.fromNode = nodes[i+1];
+            edge.toNode = nodes[i];
+        }
+
+        Neighbor2D& nbr = _edge2neighbor[edge];
+        if (nbr.triId < 0) {
+            // not found? then register this for later
+            nbr.triId = triId;
+            nbr.index = n;
+        } else {
+            // this triangle points to other one for the edge
+            _celllist[triId].neighbors[n] = nbr.triId;
+            // other triangle points to this one for the same edge
+            _celllist[nbr.triId].neighbors[nbr.index] = triId;
+            _edge2neighbor.erase(edge);
+        }
+    }
+}
+
+MeshTri2D&
+MeshTri2D::clear()
+{
+    _nodelist.clear();
+    _counter = 0;
+    _id2nodeDirty = 0;
+    _id2node.assign(100, -1);
+    _lastLocate.clear();
+    return *this;
+}
+
+int
+MeshTri2D::sizeNodes() const
+{
+    return _nodelist.size();
+}
+
+Node2D&
+MeshTri2D::atNode(int pos)
+{
+    assert(pos >= 0 && (unsigned int)(pos) < _nodelist.size());
+    return _nodelist.at(pos);
+}
+
+int
+MeshTri2D::sizeCells() const
+{
+    return _celllist.size();
+}
+
+CellTri2D
+MeshTri2D::atCell(int pos)
+{
+    assert(pos >= 0 && (unsigned int)(pos) < _celllist.size());
+
+    Tri2D& cell = _celllist[pos];
+    Node2D* n1Ptr = _getNodeById(cell.nodes[0]);
+    Node2D* n2Ptr = _getNodeById(cell.nodes[1]);
+    Node2D* n3Ptr = _getNodeById(cell.nodes[2]);
+    assert(n1Ptr && n2Ptr && n3Ptr);
+
+    CellTri2D rval(pos, n1Ptr, n2Ptr, n3Ptr);
+    return rval;
+}
+
+double
+MeshTri2D::rangeMin(Axis which) const
+{
+    assert(which != Rappture::zaxis);
+    return _min[which];
+}
+
+double
+MeshTri2D::rangeMax(Axis which) const
+{
+    assert(which != Rappture::zaxis);
+    return _max[which];
+}
+
+CellTri2D
+MeshTri2D::locate(const Node2D& node) const
+{
+    MeshTri2D* nonconst = (MeshTri2D*)this;
+    CellTri2D cell = _lastLocate;
+
+    if (cell.isNull() && _celllist.size() > 0) {
+        Tri2D& tri = nonconst->_celllist[0];
+        cell = CellTri2D(0, &nonconst->_nodelist[tri.nodes[0]],
+                            &nonconst->_nodelist[tri.nodes[1]],
+                            &nonconst->_nodelist[tri.nodes[2]]);
+    }
+
+    while (!cell.isNull()) {
+        double phi[3];
+
+        // compute barycentric coords
+        // if all are >= 0, then this tri contains node
+        // Check against -DBL_EPSILON to handle precision issues at boundaries
+        cell.barycentrics(node, phi);
+        if (phi[0] > -DBL_EPSILON &&
+            phi[1] > -DBL_EPSILON &&
+            phi[2] > -DBL_EPSILON) {
+            break;
+        }
+
+        // find the smallest (most negative) coord phi, and search that dir
+        int dir = 0;
+        for (int i=1; i <= 2; i++) {
+            if (phi[i] < phi[dir]) {
+                dir = i;
+            }
+        }
+
+        Tri2D& tri = nonconst->_celllist[ cell.cellId() ];
+        int neighborId = tri.neighbors[dir];
+        if (neighborId < 0) {
+            cell.clear();
+            return cell;
+        }
+
+        Tri2D& tri2 = nonconst->_celllist[neighborId];
+        Node2D *n1Ptr = &nonconst->_nodelist[tri2.nodes[0]];
+        Node2D *n2Ptr = &nonconst->_nodelist[tri2.nodes[1]];
+        Node2D *n3Ptr = &nonconst->_nodelist[tri2.nodes[2]];
+        cell = CellTri2D(neighborId, n1Ptr, n2Ptr, n3Ptr);
+    }
+
+    nonconst->_lastLocate = cell;
+    return cell;
+}
+
+Ptr<Serializable>
+MeshTri2D::create()
+{
+    return Ptr<Serializable>( (Serializable*) new MeshTri2D() );
+}
+
+void
+MeshTri2D::serialize_A(SerialBuffer& buffer) const
+{
+}
+
+Outcome
+deserialize_A(SerialBuffer& buffer)
+{
+    Outcome status;
+    return status;
+}
+
+Node2D*
+MeshTri2D::_getNodeById(int nodeId)
+{
+    MeshTri2D* nonconst = (MeshTri2D*)this;
+    Node2D *rptr = NULL;
+    nonconst->_rebuildNodeIdMap();
+
+    if ((unsigned int)nodeId < _id2node.size()) {
+        int n = _id2node[nodeId];
+        if (n >= 0) {
+            return &_nodelist[n];
+        }
+    }
+    return rptr;
+}
+
+void
+MeshTri2D::_rebuildNodeIdMap()
+{
+    if (_id2nodeDirty) {
+        _min[0] = _min[1] = NAN;
+        _max[0] = _max[1] = NAN;
+
+        // figure out how big the _id2node array should be
+        int maxId = -1;
+        std::vector<Node2D>::iterator n = _nodelist.begin();
+        while (n != _nodelist.end()) {
+            if (n->id() > maxId) {
+                maxId = n->id();
+            }
+            ++n;
+        }
+        if (maxId > 0) {
+            _id2node.assign(maxId+1, -1);
+        }
+
+        // scan through and map id -> node index
+        int i = 0;
+        n = _nodelist.begin();
+        while (n != _nodelist.end()) {
+            _id2node[n->id()] = i++;
+
+            if (isnan(_min[0])) {
+                _min[0] = _max[0] = n->x();
+                _min[1] = _max[1] = n->y();
+            } else {
+                if (n->x() < _min[0]) { _min[0] = n->x(); }
+                if (n->x() > _max[0]) { _max[0] = n->x(); }
+                if (n->y() < _min[1]) { _min[1] = n->y(); }
+                if (n->y() > _max[1]) { _max[1] = n->y(); }
+            }
+            ++n;
+        }
+        _id2nodeDirty = 0;
+    }
+}
Index: /tags/1.6.0/src/core2/RpMeshTri2D.h
===================================================================
--- /tags/1.6.0/src/core2/RpMeshTri2D.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpMeshTri2D.h	(revision 6168)
@@ -0,0 +1,131 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::MeshTri2D
+ *    This is a non-uniform, triangular mesh for 2-dimensional
+ *    structures.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RAPPTURE_MESHTRI2D_H
+#define RAPPTURE_MESHTRI2D_H
+
+#include "RpNode.h"
+#include "RpSerializable.h"
+
+namespace Rappture {
+
+class CellTri2D {
+public:
+    CellTri2D();
+    CellTri2D(int cellId, Node2D* n1Ptr, Node2D* n2Ptr, Node2D* n3Ptr);
+    CellTri2D(const CellTri2D& cell);
+    CellTri2D& operator=(const CellTri2D& cell);
+
+    int cellId() const;
+    int nodeId(int n) const;
+    double x(int n) const;
+    double y(int n) const;
+
+    int isNull() const;
+    int isOutside() const;
+    void clear();
+
+    void barycentrics(const Node2D& node, double* phi) const;
+
+private:
+    int _cellId;
+    const Node2D* _nodes[3];
+};
+
+class Tri2D {
+public:
+    Tri2D();
+    Tri2D(int n1, int n2, int n3);
+
+    int nodes[3];
+    int neighbors[3];
+};
+
+class MeshTri2D : public Serializable {
+public:
+    MeshTri2D();
+    MeshTri2D(const MeshTri2D& mesh);
+    MeshTri2D& operator=(const MeshTri2D& mesh);
+    virtual ~MeshTri2D();
+
+    virtual Node2D& addNode(const Node2D& node);
+    virtual void addCell(int nId1, int nId2, int nId3);
+    virtual void addCell(const Node2D& n1, const Node2D& n2, const Node2D& n3);
+    virtual MeshTri2D& clear();
+
+    virtual int sizeNodes() const;
+    virtual Node2D& atNode(int pos);
+
+    virtual int sizeCells() const;
+    virtual CellTri2D atCell(int pos);
+
+    virtual double rangeMin(Axis which) const;
+    virtual double rangeMax(Axis which) const;
+
+    virtual CellTri2D locate(const Node2D& node) const;
+
+    // required for base class Serializable:
+    const char* serializerType() const { return "MeshTri2D"; }
+    char serializerVersion() const { return 'A'; }
+
+    static Ptr<Serializable> create();
+    void serialize_A(SerialBuffer& buffer) const;
+    Outcome deserialize_A(SerialBuffer& buffer);
+
+protected:
+    virtual Node2D* _getNodeById(int nodeId);
+    virtual void _rebuildNodeIdMap();
+
+private:
+    std::vector<Node2D> _nodelist;  // list of all nodes
+    int _counter;                   // auto counter for node IDs
+    double _min[2];                 // min values for (x,y)
+    double _max[2];                 // max values for (x,y)
+
+    std::vector<Tri2D> _celllist;   // list of all triangular cells
+
+    // use this structure and map to find neighbors for all triangles
+    typedef struct Edge2D {
+        int fromNode;  // minimum node ID
+        int toNode;    // maximum node ID
+        Edge2D() : fromNode(-1), toNode(-1) {}
+        int operator<(const Edge2D& edge) const {
+            if (fromNode < edge.fromNode) {
+                return 1;
+            } else if (fromNode == edge.fromNode && toNode < edge.toNode) {
+                return 1;
+            }
+            return 0;
+        }
+    } Edge2D;
+    typedef struct Neighbor2D {
+        int triId;     // ID of triangle containing edge
+        int index;     // index (0/1/2) for point opposite edge
+        Neighbor2D() : triId(-1), index(-1) {}
+    } Neighbor2D;
+    typedef std::map<Edge2D, Neighbor2D> Edge2Neighbor;
+    Edge2Neighbor _edge2neighbor;   // maps tri edge to tri containing it
+
+    int _id2nodeDirty;              // non-zero => _id2node needs to be rebuilt
+    std::vector<int> _id2node;      // maps node Id => index in _nodelist
+
+    CellTri2D _lastLocate;          // last result from locate() operation
+
+    // methods for serializing/deserializing version 'A'
+    static SerialConversion versionA;
+};
+
+} // namespace Rappture
+
+#endif
Index: /tags/1.6.0/src/core2/RpNode.h
===================================================================
--- /tags/1.6.0/src/core2/RpNode.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpNode.h	(revision 6168)
@@ -0,0 +1,98 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::Node1D
+ *  Rappture::Node2D
+ *  Rappture::Node3D
+ *    This is a node in cartesian coordinate space.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RPNODE_H
+#define RPNODE_H
+
+namespace Rappture {
+
+enum Axis {
+   xaxis, yaxis, zaxis
+};
+
+class Node {
+public:
+    Node() : _id(-1) {}
+
+    virtual Node& id(int newid) { _id=newid; return *this; }
+    virtual int id() const { return _id; }
+
+    virtual int dimensionality() const = 0;
+
+    virtual ~Node() {}
+
+private:
+    int _id;  // node identifier (used for fields)
+};
+
+
+class Node1D : public Node {
+public:
+    Node1D(double x) : _x(x) {}
+
+    virtual int dimensionality() const { return 1; }
+    virtual double x() const { return _x; }
+    virtual double x(double newval) { _x = newval; return _x; }
+
+    virtual ~Node1D() {}
+
+private:
+    double _x;  // x-coordinate
+};
+
+
+class Node2D : public Node {
+public:
+    Node2D(double x, double y) : _x(x), _y(y) {}
+
+    virtual int dimensionality() const { return 2; }
+    virtual double x() const { return _x; }
+    virtual double y() const { return _y; }
+
+    virtual double x(double newval) { _x = newval; return _x; }
+    virtual double y(double newval) { _y = newval; return _y; }
+
+    virtual ~Node2D() {}
+
+private:
+    double _x;  // x-coordinate
+    double _y;  // y-coordinate
+};
+
+
+class Node3D : public Node {
+public:
+    Node3D(double x, double y, double z) : _x(x), _y(y), _z(z) {}
+
+    virtual int dimensionality() const { return 3; }
+    virtual double x() const { return _x; }
+    virtual double y() const { return _y; }
+    virtual double z() const { return _z; }
+
+    virtual double x(double newval) { _x = newval; return _x; }
+    virtual double y(double newval) { _y = newval; return _y; }
+    virtual double z(double newval) { _z = newval; return _z; }
+
+    virtual ~Node3D() {}
+
+private:
+    double _x;  // x-coordinate
+    double _y;  // y-coordinate
+    double _z;  // y-coordinate
+};
+
+} // namespace Rappture
+
+#endif /*RPNODE_H*/
Index: /tags/1.6.0/src/core2/RpSerialBuffer.cc
===================================================================
--- /tags/1.6.0/src/core2/RpSerialBuffer.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/RpSerialBuffer.cc	(revision 6168)
@@ -0,0 +1,239 @@
+/*
+ * ======================================================================
+ *  Rappture::SerialBuffer
+ *
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *           Carol X Song, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpSerialBuffer.h"
+
+#ifdef BIGENDIAN
+#  define ENDIAN_FOR_LOOP(var,size)  \
+     for (var=size-1; var >= 0; var--)
+#else
+#  define ENDIAN_FOR_LOOP(var,size)  \
+     for (var=0; var < size; var++)
+#endif
+
+using namespace Rappture;
+
+/**
+ * Construct an empty SerialBuffer.
+ */
+SerialBuffer::SerialBuffer()
+  : _buffer(),
+    _pos(0)
+{
+}
+
+/**
+ * Construct a SerialBuffer loaded with bytes produced by another
+ * SerialBuffer.  This is used to decode information from the buffer.
+ *
+ * @param bytes pointer to bytes being decoded.
+ * @param nbytes number of bytes being decoded.
+ */
+SerialBuffer::SerialBuffer(const char* bytes, int nbytes)
+  : _buffer(),
+    _pos(0)
+{
+    _buffer.reserve(nbytes);
+    while (nbytes-- > 0) {
+        _buffer.push_back( *bytes++ );
+    }
+}
+
+/**
+ * Copy constructor
+ */
+SerialBuffer::SerialBuffer(const SerialBuffer& sb)
+  : _buffer(sb._buffer),
+    _pos(0)  // auto-rewind
+{
+}
+
+/**
+ * Assignment operator
+ */
+SerialBuffer&
+SerialBuffer::operator=(const SerialBuffer& sb)
+{
+    _buffer = sb._buffer;
+    _pos = 0;  // auto-rewind
+    return *this;
+}
+
+SerialBuffer::~SerialBuffer()
+{
+}
+
+/**
+ * Get the bytes currently stored in the buffer.  These bytes can
+ * be stored, and used later to construct another SerialBuffer to
+ * decode the information.
+ *
+ * @return Pointer to the bytes in the buffer.
+ */
+const char*
+SerialBuffer::bytes() const
+{
+    return &_buffer[0];
+}
+
+/**
+ * Get the number of bytes currently stored in the buffer.
+ * @return Number of the bytes in the buffer.
+ */
+int
+SerialBuffer::size() const
+{
+    return _buffer.size();
+}
+
+/**
+ * Clear the buffer, making it empty.
+ */
+SerialBuffer&
+SerialBuffer::clear()
+{
+    _buffer.clear();
+    return *this;
+}
+
+SerialBuffer&
+SerialBuffer::writeChar(char cval)
+{
+    _buffer.push_back(cval);
+    return *this;
+}
+
+SerialBuffer&
+SerialBuffer::writeInt(int ival)
+{
+    char *ptr = (char*)(&ival);
+    unsigned int i = 0;
+
+    ENDIAN_FOR_LOOP(i, sizeof(int)) {
+        _buffer.push_back(ptr[i]);
+    }
+    return *this;
+}
+
+SerialBuffer&
+SerialBuffer::writeDouble(double dval)
+{
+    char *ptr = (char*)(&dval);
+    unsigned int i = 0;
+
+    ENDIAN_FOR_LOOP(i, sizeof(double)) {
+        _buffer.push_back(ptr[i]);
+    }
+    return *this;
+}
+
+SerialBuffer&
+SerialBuffer::writeString(const char* sval)
+{
+    while (*sval != '\0') {
+        _buffer.push_back(*sval++);
+    }
+    _buffer.push_back('\0');
+    return *this;
+}
+
+SerialBuffer&
+SerialBuffer::writeBytes(const char* bval, int nbytes)
+{
+    writeInt(nbytes);
+    while (nbytes-- > 0) {
+        _buffer.push_back(*bval++);
+    }
+    return *this;
+}
+
+void
+SerialBuffer::rewind()
+{
+    _pos = 0;
+}
+
+int
+SerialBuffer::atEnd() const
+{
+    return ((unsigned int)_pos >= _buffer.size());
+}
+
+char
+SerialBuffer::readChar()
+{
+    char c = '\0';
+    if ((unsigned int)_pos < _buffer.size()) {
+        c = _buffer[_pos++];
+    }
+    return c;
+}
+
+int
+SerialBuffer::readInt()
+{
+    int ival = 0;
+    char *ptr = (char*)(&ival);
+    unsigned int i = 0;
+
+    ENDIAN_FOR_LOOP(i, sizeof(int)) {
+        if ((unsigned int)_pos < _buffer.size()) {
+            ptr[i] = _buffer[_pos++];
+        }
+    }
+    return ival;
+}
+
+double
+SerialBuffer::readDouble()
+{
+    double dval = 0;
+    char *ptr = (char*)(&dval);
+    unsigned int i = 0;
+
+    ENDIAN_FOR_LOOP(i, sizeof(double)) {
+        if ((unsigned int)_pos < _buffer.size()) {
+            ptr[i] = _buffer[_pos++];
+        }
+    }
+    return dval;
+}
+
+std::string
+SerialBuffer::readString()
+{
+    std::string sval;
+    char c;
+    while ((unsigned int)_pos < _buffer.size()) {
+        c = _buffer[_pos++];
+        if (c == '\0') {
+            break;
+        } else {
+            sval.push_back(c);
+        }
+    }
+    return sval;
+}
+
+std::vector<char>
+SerialBuffer::readBytes()
+{
+    int nbytes;
+    std::vector<char> bval;
+
+    nbytes = readInt();
+    while ((unsigned int)_pos < _buffer.size() && nbytes-- > 0) {
+        bval.push_back( _buffer[_pos++] );
+    }
+    return bval;
+}
Index: /tags/1.6.0/src/core2/RpSerialBuffer.h
===================================================================
--- /tags/1.6.0/src/core2/RpSerialBuffer.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpSerialBuffer.h	(revision 6168)
@@ -0,0 +1,64 @@
+/*
+ * ======================================================================
+ *  Rappture::SerialBuffer
+ *
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *           Carol X Song, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RPSERIALBUFFER_H
+#define RPSERIALBUFFER_H
+
+#include <string>
+#include <vector>
+
+namespace Rappture {
+
+/**
+ * Used by the Serializer to build up the buffer of serialized
+ * data.  Similar to a string, but it handles nulls and other
+ * control characters.  Also handles big/little endian order
+ * properly.
+ */
+class SerialBuffer {
+public:
+    SerialBuffer();
+    SerialBuffer(const char* bytes, int nbytes);
+    SerialBuffer(const SerialBuffer& buffer);
+    SerialBuffer& operator=(const SerialBuffer& buffer);
+    virtual ~SerialBuffer();
+
+    const char* bytes() const;
+    int size() const;
+
+    SerialBuffer& clear();
+    SerialBuffer& writeChar(char cval);
+    SerialBuffer& writeInt(int ival);
+    SerialBuffer& writeDouble(double dval);
+    SerialBuffer& writeString(const char* sval);
+    SerialBuffer& writeBytes(const char* bval, int nbytes);
+
+    void rewind();
+    int atEnd() const;
+    char readChar();
+    int readInt();
+    double readDouble();
+    std::string readString();
+    std::vector<char> readBytes();
+
+private:
+    /// Contains the actual data within this buffer.
+    std::vector<char> _buffer;
+
+    /// Position for the various readXyz() functions.
+    int _pos;
+};
+
+} // namespace Rappture
+
+#endif /*RPSERIALBUFFER_H*/
Index: /tags/1.6.0/src/core2/RpSerializable.cc
===================================================================
--- /tags/1.6.0/src/core2/RpSerializable.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/RpSerializable.cc	(revision 6168)
@@ -0,0 +1,118 @@
+/*
+ * ======================================================================
+ *  Rappture::Serializable
+ *
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *           Carol X Song, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpSerializable.h"
+
+using namespace Rappture;
+
+// initialize the global lists of registered serialization helper funcs
+Serializable::Name2ConvFuncsMap* Serializable::_name2convFuncs = NULL;
+
+Serializable::Serializable()
+{
+}
+
+Serializable::~Serializable()
+{
+}
+
+void
+Serializable::serialize(SerialBuffer& buffer) const
+{
+    buffer.writeString( serializerType() );
+    buffer.writeChar( serializerVersion() );
+
+    std::string cname( serializerType() );
+    cname += ":";
+    cname += serializerVersion();
+
+    Serializable::ConversionFuncs& cfuncs = (*_name2convFuncs)[cname];
+    (this->*(cfuncs.serialMethod))(buffer);
+}
+
+Outcome
+Serializable::deserialize(SerialBuffer& buffer, Ptr<Serializable>* objPtrPtr)
+{
+    Outcome result;
+
+    std::string type = buffer.readString();
+    char version = buffer.readChar();
+    type += ":";
+    type += version;
+
+    Name2ConvFuncsMap::iterator iter = _name2convFuncs->find(type);
+    if (iter == _name2convFuncs->end()) {
+        std::string errmsg("can't deserialize object: ");
+        errmsg += "unrecognized type \"";
+        errmsg += type;
+        errmsg += "\"";
+        return result.error(errmsg.data());
+    }
+
+    ConversionFuncs& cfuncs = (*_name2convFuncs)[type];
+    *objPtrPtr = (cfuncs.createFunc)();
+
+    Serializable *objPtr = objPtrPtr->pointer();
+    return (objPtr->*(cfuncs.deserialMethod))(buffer);
+}
+
+SerialConversion::SerialConversion(const char *className, char version,
+    Serializable::serializeObjectMethod serMethod,
+    Serializable::createObjectFunc createFunc,
+    Serializable::deserializeObjectMethod desMethod)
+{
+    if (Serializable::_name2convFuncs == NULL) {
+        Serializable::_name2convFuncs = new Serializable::Name2ConvFuncsMap();
+    }
+
+    // register the conversion functions for this version
+    std::string vname(className);
+    vname += ":";
+    vname += version;
+
+    Serializable::ConversionFuncs& funcs
+        = (*Serializable::_name2convFuncs)[vname];
+
+    funcs.version = version;
+    funcs.serialMethod = serMethod;
+    funcs.createFunc = createFunc;
+    funcs.deserialMethod = desMethod;
+
+    // if this is the latest version, register it as "current"
+    std::string cname(className);
+    cname += ":current";
+
+    Serializable::Name2ConvFuncsMap::iterator iter
+        = Serializable::_name2convFuncs->find(cname);
+
+    if (iter == Serializable::_name2convFuncs->end()) {
+        // this is the first -- register it as "current"
+        Serializable::ConversionFuncs& cfuncs
+            = (*Serializable::_name2convFuncs)[cname];
+        cfuncs.version = version;
+        cfuncs.serialMethod = serMethod;
+        cfuncs.createFunc = createFunc;
+        cfuncs.deserialMethod = desMethod;
+    } else {
+        Serializable::ConversionFuncs& cfuncs
+            = (*Serializable::_name2convFuncs)[cname];
+
+        if (cfuncs.version < version) {
+            // this is the latest -- register it as "current"
+            cfuncs.version = version;
+            cfuncs.serialMethod = serMethod;
+            cfuncs.createFunc = createFunc;
+            cfuncs.deserialMethod = desMethod;
+        }
+    }
+}
Index: /tags/1.6.0/src/core2/RpSerializable.h
===================================================================
--- /tags/1.6.0/src/core2/RpSerializable.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpSerializable.h	(revision 6168)
@@ -0,0 +1,79 @@
+/*
+ * ======================================================================
+ *  Rappture::Serializable
+ *
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *           Carol X Song, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RPSERIALIZABLE_H
+#define RPSERIALIZABLE_H
+
+#include <string>
+#include <map>
+#include <RpOutcome.h>
+#include <RpPtr.h>
+#include <RpSerialBuffer.h>
+
+namespace Rappture {
+
+class SerialConversion;  // see below
+
+/**
+ * Base class for any object that can be serialized into a stream,
+ * then saved to a file or written to a socket, and reconstituted
+ * into its original form.  Serializable objects can be added to
+ * a serializer, which handles the overall conversion.
+ */
+class Serializable {
+public:
+    Serializable();
+    virtual ~Serializable();
+
+    virtual const char* serializerType() const = 0;
+    virtual char serializerVersion() const = 0;
+
+    virtual void serialize(SerialBuffer& bufferPtr) const;
+    static Outcome deserialize(SerialBuffer& buffer, Ptr<Serializable>* objPtrPtr);
+
+    typedef void (Serializable::*serializeObjectMethod)(SerialBuffer& buffer) const;
+    typedef Ptr<Serializable> (*createObjectFunc)();
+    typedef Outcome (Serializable::*deserializeObjectMethod)(SerialBuffer& buffer);
+
+private:
+    friend class SerialConversion;
+
+    class ConversionFuncs {
+    public:
+        char version;
+        serializeObjectMethod serialMethod;
+        createObjectFunc createFunc;
+        deserializeObjectMethod deserialMethod;
+    };
+
+    typedef std::map<std::string, ConversionFuncs> Name2ConvFuncsMap;
+    static Name2ConvFuncsMap *_name2convFuncs;
+};
+
+/**
+ * Each class derived from Serializable should have a SerialConversion
+ * stored as a static data member.  This declares information needed
+ * to serialize/deserialize the class, making objects in that class
+ * serializable.
+ */
+class SerialConversion {
+public:
+    SerialConversion(const char *className, char version,
+        Serializable::serializeObjectMethod,
+        Serializable::createObjectFunc,
+        Serializable::deserializeObjectMethod);
+};
+
+} // namespace Rappture
+
+#endif /*RPSERIALIZABLE_H*/
Index: /tags/1.6.0/src/core2/RpSerializer.cc
===================================================================
--- /tags/1.6.0/src/core2/RpSerializer.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/RpSerializer.cc	(revision 6168)
@@ -0,0 +1,161 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::Serializer
+ *    The object collects a series of other objects together and
+ *    serializes them into a single byte stream.  That stream can
+ *    be written to a file, send over a socket, and so forth.  The
+ *    resulting stream can be loaded by a Serializer and the objects
+ *    can be reconstituted to their original form.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <assert.h>
+#include <sstream>
+#include "RpSerializer.h"
+
+using namespace Rappture;
+
+Serializer::Serializer()
+{
+}
+
+Serializer::~Serializer()
+{
+}
+
+Outcome
+Serializer::deserialize(const char* bytes, int nbytes)
+{
+    Outcome result;
+    std::string token;
+
+    clear();
+    SerialBuffer buffer(bytes, nbytes);
+
+    // read the format and make sure we've got the right reader
+    token = buffer.readString();
+    if (token != "RpSerial:A") {
+        std::string errmsg("can't deserialize stream: ");
+        errmsg += "bad marker \"";
+        errmsg += token;
+        errmsg += "\" (should be RpSerial:A)";
+        return result.error(errmsg.data());
+    }
+
+    // get the number of objects to read
+    int nobj = buffer.readInt();
+    if (nobj < 0) {
+        std::string errmsg("can't deserialize stream: ");
+        errmsg += "corrupt data (number of objects is negative)";
+        return result.error(errmsg.data());
+    }
+
+    // read out the expected number of objects from the list
+    for (int i=0; i < nobj && !buffer.atEnd(); i++) {
+        token = buffer.readString();
+        if (token != "RpObj:") {
+            std::string errmsg("can't deserialize stream: ");
+            errmsg += "bad marker \"";
+            errmsg += token;
+            errmsg += "\" (should be RpObj:)";
+            return result.error(errmsg.data());
+        }
+        std::string id = buffer.readString();
+
+        Ptr<Serializable> objPtr;
+        result = Serializable::deserialize(buffer, &objPtr);
+
+        // if there was an error, then bail out
+        if (result != 0) {
+            std::ostringstream context;
+            context << "while deserializing object #" << i+1
+              << " of " << nobj;
+            return result.addContext(context.str().data());
+        }
+
+        // add the object to the known list
+        _id2obj[id] = objPtr;
+        SerializerId2Obj::iterator iter = _id2obj.find(id);
+        const char* key = (*iter).first.data();
+        _idlist.push_back(key);
+    }
+
+    return result;
+}
+
+Ptr<SerialBuffer>
+Serializer::serialize()
+{
+    Ptr<SerialBuffer> bufferPtr( new SerialBuffer() );
+    bufferPtr->writeString("RpSerial:A");
+
+    // write out number of objects in the stream
+    bufferPtr->writeInt(_idlist.size());
+
+    // write out each object in the list, in order
+    for (unsigned int i=0; i < _idlist.size(); i++) {
+        const char* id = _idlist.at(i);
+        Ptr<Serializable> objPtr = _id2obj[id];
+
+        bufferPtr->writeString("RpObj:");
+        bufferPtr->writeString(id);
+        objPtr->serialize(*bufferPtr.pointer());
+    }
+    return bufferPtr;
+}
+
+int
+Serializer::size() const
+{
+    return _idlist.size();
+}
+
+Ptr<Serializable>
+Serializer::get(int pos) const
+{
+    Serializer *nonconst = (Serializer*)this;
+    assert(pos >= 0 && (unsigned int)pos < _idlist.size());
+
+    std::string id(_idlist[pos]);
+    return nonconst->_id2obj[id];
+}
+
+Serializer&
+Serializer::clear()
+{
+    _id2obj.clear();
+    _idlist.clear();
+    return *this;
+}
+
+const char*
+Serializer::add(Serializable* objPtr)
+{
+    const char* key = NULL;
+
+    // build a unique string that represents this object
+    std::ostringstream idbuffer;
+    idbuffer << (void*)objPtr;
+    std::string id(idbuffer.str());
+
+    // have we already registered this object?
+    SerializerId2Obj::iterator iter = _id2obj.find(id);
+    if (iter == _id2obj.end()) {
+        // if not, then add to map and also to list of all objects
+        _id2obj[id] = Ptr<Serializable>(objPtr);
+        iter = _id2obj.find(id);
+        key = (*iter).first.data();
+        _idlist.push_back(key);
+    } else {
+        // if so, then update map
+        key = (*iter).first.data();
+        _id2obj[id] = Ptr<Serializable>(objPtr);
+    }
+    return key;
+}
Index: /tags/1.6.0/src/core2/RpSerializer.h
===================================================================
--- /tags/1.6.0/src/core2/RpSerializer.h	(revision 6168)
+++ /tags/1.6.0/src/core2/RpSerializer.h	(revision 6168)
@@ -0,0 +1,58 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::Serializer
+ *    The object collects a series of other objects together and
+ *    serializes them into a single byte stream.  That stream can
+ *    be written to a file, send over a socket, and so forth.  The
+ *    resulting stream can be loaded by a Serializer and the objects
+ *    can be reconstituted to their original form.
+ *
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RPSERIALIZER_H
+#define RPSERIALIZER_H
+
+#include <map>
+#include <RpPtr.h>
+#include <RpOutcome.h>
+#include "RpSerialBuffer.h"
+#include "RpSerializable.h"
+
+namespace Rappture {
+
+class Serializer {
+public:
+    Serializer();
+    virtual ~Serializer();
+
+    virtual Ptr<SerialBuffer> serialize();
+    virtual Outcome deserialize(const char* bytes, int nbytes);
+
+    virtual int size() const;
+    virtual Ptr<Serializable> get(int pos) const;
+
+    virtual Serializer& clear();
+    virtual const char* add(Serializable* objPtr);
+
+private:
+    // disallow these operations
+    Serializer(const Serializer& status) { assert(0); }
+    Serializer& operator=(const Serializer& status) { assert(0); }
+
+    // list of objects being serialized or deserialized
+    std::vector<const char*> _idlist;
+
+    // map each id in _idlist to the corresponding object
+    typedef std::map<std::string, Ptr<Serializable> > SerializerId2Obj;
+    SerializerId2Obj _id2obj;
+};
+
+} // namespace Rappture
+
+#endif
Index: /tags/1.6.0/src/core2/rappture2.h
===================================================================
--- /tags/1.6.0/src/core2/rappture2.h	(revision 6168)
+++ /tags/1.6.0/src/core2/rappture2.h	(revision 6168)
@@ -0,0 +1,28 @@
+/*
+ * ======================================================================
+ *  Rappture
+ *
+ *  This is the primary include file for the Rappture core library.
+ *  Anyone who wants to use Rappture in their code should start here.
+ *
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#ifndef RAPPTURE_H
+#define RAPPTURE_H
+
+#include <assert.h>
+#include <string>
+
+#ifndef NULL
+#  define NULL 0
+#endif
+
+#include "RpPtr.h"
+#include "RpOutcome.h"
+
+#endif
Index: /tags/1.6.0/src/core2/test.cc
===================================================================
--- /tags/1.6.0/src/core2/test.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/test.cc	(revision 6168)
@@ -0,0 +1,77 @@
+#include <stdlib.h>
+#include <iostream>
+#include <sstream>
+#include "rappture.h"
+#include "Lookup.h"
+
+class Foo {
+  char *desc;
+
+public:
+  Foo(char *d) : desc(d) {
+    std::cout << "created " << desc << std::endl;
+  }
+  ~Foo() {
+    std::cout << "destroyed " << desc << std::endl;
+  }
+};
+
+Rappture::Outcome
+foo(int code) {
+    Rappture::Outcome status;
+    if (code) {
+        status.error("Bad status code");
+        status.addContext("while in foo");
+    }
+    return status;
+}
+
+int
+main(int argc, char* argv[]) {
+    Rappture::Ptr<Foo> ptr(new Foo("a"));
+    Rappture::Ptr<Foo> ptr2(new Foo("barney"));
+
+    std::cout << "copy ptr(barney) -> ptr(a)" << std::endl;
+    ptr = ptr2;
+
+    std::cout << "clear ptr(barney)" << std::endl;
+    ptr2.clear();
+    std::cout << "clear ptr(barney)" << std::endl;
+    ptr.clear();
+
+    Rappture::Lookup2<int,int> num2id;
+    num2id.get(4,NULL).value() = 1;
+    num2id.get(105,NULL).value() = 2;
+    num2id.get(69,NULL).value() = 3;
+    num2id.get(95,NULL).value() = 4;
+
+    Rappture::Outcome err = foo(1);
+    if (err) {
+        std::cout << err.remark() << std::endl;
+        std::cout << err.context() << std::endl;
+    } else {
+        std::cout << "foo ok" << std::endl;
+    }
+
+    std::cout << num2id.stats();
+    Rappture::LookupEntry2<int,int> entry = num2id.first();
+    while (!entry.isNull()) {
+        std::cout << " " << entry.key() << " = " << entry.value() << std::endl;
+        entry.next();
+    }
+
+    Rappture::Lookup<double> str2dbl;
+    const char *one = "testing";
+    const char *two = "another";
+    str2dbl[one] = 2.0;
+    str2dbl[two] = 5.75;
+
+    std::cout << str2dbl.stats();
+    Rappture::LookupEntry<double> entry2 = str2dbl.first();
+    while (!entry2.isNull()) {
+        std::cout << " " << entry2.key() << " = " << entry2.value() << std::endl;
+        entry2.next();
+    }
+
+    exit(0);
+}
Index: /tags/1.6.0/src/core2/viz.cc
===================================================================
--- /tags/1.6.0/src/core2/viz.cc	(revision 6168)
+++ /tags/1.6.0/src/core2/viz.cc	(revision 6168)
@@ -0,0 +1,191 @@
+#include <stdio.h>
+#include <math.h>
+#include <fstream>
+#include <iostream>
+#include <string>
+#include "RpFieldRect3D.h"
+#include "RpFieldPrism3D.h"
+
+/* Load a 3D volume from a dx-format file
+ */
+void
+load_volume_file(int index, char *fname) {
+    Rappture::MeshTri2D xymesh;
+    int dummy, nx, ny, nz, nxy, npts;
+    double x0, y0, z0, dx, dy, dz, ddx, ddy, ddz;
+    char line[128], type[128], *start;
+    std::ifstream fin(fname);
+
+    int isrect = 1;
+
+    do {
+        fin.getline(line,sizeof(line)-1);
+        for (start=&line[0]; *start == ' ' || *start == '\t'; start++)
+            ;  // skip leading blanks
+
+        if (*start != '#') {  // skip comment lines
+            if (sscanf(start, "object %d class gridpositions counts %d %d %d", &dummy, &nx, &ny, &nz) == 4) {
+                // found grid size
+                isrect = 1;
+            }
+            else if (sscanf(start, "object %d class array type float rank 1 shape 3 items %d data follows", &dummy, &nxy) == 2) {
+                std::ofstream ftmp("tmppts");
+                double xx, yy, zz;
+                isrect = 0;
+                for (int i=0; i < nxy; i++) {
+                    fin.getline(line,sizeof(line)-1);
+                    if (sscanf(line, "%lg %lg %lg", &xx, &yy, &zz) == 3) {
+                        xymesh.addNode( Rappture::Node2D(xx,yy) );
+                        ftmp << xx << " " << yy << std::endl;
+                    }
+                }
+                ftmp.close();
+
+                if (system("voronoi -t < tmppts > tmpcells") == 0) {
+                    int cx, cy, cz;
+                    std::ifstream ftri("tmpcells");
+                    while (!ftri.eof()) {
+                        ftri.getline(line,sizeof(line)-1);
+                        if (sscanf(line, "%d %d %d", &cx, &cy, &cz) == 3) {
+                            xymesh.addCell(cx, cy, cz);
+                        }
+                    }
+                    ftri.close();
+                } else {
+                    std::cerr << "WARNING: triangularization failed" << std::endl;
+                }
+            }
+            else if (sscanf(start, "object %d class regulararray count %d", &dummy, &nz) == 2) {
+                // found z-grid
+            }
+            else if (sscanf(start, "origin %lg %lg %lg", &x0, &y0, &z0) == 3) {
+                // found origin
+            }
+            else if (sscanf(start, "delta %lg %lg %lg", &ddx, &ddy, &ddz) == 3) {
+                // found one of the delta lines
+                if (ddx != 0.0) { dx = ddx; }
+                else if (ddy != 0.0) { dy = ddy; }
+                else if (ddz != 0.0) { dz = ddz; }
+            }
+            else if (sscanf(start, "object %d class array type %s rank 0 items %d data follows", &dummy, type, &npts) == 3) {
+                if (isrect && (npts != nx*ny*nz)) {
+                    std::cerr << "inconsistent data: expected " << nx*ny*nz << " points but found " << npts << " points" << std::endl;
+                    return;
+                }
+                else if (!isrect && (npts != nxy*nz)) {
+                    std::cerr << "inconsistent data: expected " << nxy*nz << " points but found " << npts << " points" << std::endl;
+                    return;
+                }
+                break;
+            }
+        }
+    } while (!fin.eof());
+
+    // read data points
+    if (!fin.eof()) {
+        if (isrect) {
+            Rappture::Mesh1D xgrid(x0, x0+nx*dx, nx);
+            Rappture::Mesh1D ygrid(y0, y0+ny*dy, ny);
+            Rappture::Mesh1D zgrid(z0, z0+nz*dz, nz);
+            Rappture::FieldRect3D field(xgrid, ygrid, zgrid);
+
+            double dval;
+            int nread = 0;
+            while (!fin.eof() && nread < npts) {
+                if (!(fin >> dval).fail()) {
+                    field.define(nread++, dval);
+                }
+            }
+
+            // make sure that we read all of the expected points
+            if (nread != nx*ny*nz) {
+                std::cerr << "inconsistent data: expected " << nx*ny*nz << " points but found " << nread << " points" << std::endl;
+                return;
+            }
+
+            // figure out a good mesh spacing
+            int nsample = 100;
+            dx = field.rangeMax(Rappture::xaxis) - field.rangeMin(Rappture::xaxis);
+            dy = field.rangeMax(Rappture::yaxis) - field.rangeMin(Rappture::yaxis);
+            dz = field.rangeMax(Rappture::zaxis) - field.rangeMin(Rappture::zaxis);
+            double dmin = pow((dx*dy*dz)/(nsample*nsample*nsample), 0.333);
+
+            nx = (int)ceil(dx/dmin);
+            ny = (int)ceil(dy/dmin);
+            nz = (int)ceil(dz/dmin);
+            float *data = new float[nx*ny*nz];
+            std::cout << "generating " << nx << "x" << ny << "x" << nz << " = " << nx*ny*nz << " points" << std::endl;
+
+            // generate the uniformly sampled data that we need for a volume
+            int ngen = 0;
+            for (int iz=0; iz < nz; iz++) {
+                double zval = z0 + iz*dmin;
+                for (int iy=0; iy < ny; iy++) {
+                    double yval = y0 + iy*dmin;
+                    for (int ix=0; ix < nx; ix++) {
+                        double xval = x0 + ix*dmin;
+                        data[ngen++] = field.value(xval,yval,zval);
+                    }
+                }
+            }
+        } else {
+            Rappture::Mesh1D zgrid(z0, z0+nz*dz, nz);
+            Rappture::FieldPrism3D field(xymesh, zgrid);
+
+            double dval;
+            int nread = 0;
+            while (!fin.eof() && nread < npts) {
+                if (!(fin >> dval).fail()) {
+                    field.define(nread++, dval);
+                }
+            }
+
+            // make sure that we read all of the expected points
+            if (nread != nxy*nz) {
+                std::cerr << "inconsistent data: expected " << nxy*nz << " points but found " << nread << " points" << std::endl;
+                return;
+            }
+
+            // figure out a good mesh spacing
+            int nsample = 100;
+            dx = field.rangeMax(Rappture::xaxis) - field.rangeMin(Rappture::xaxis);
+            dy = field.rangeMax(Rappture::yaxis) - field.rangeMin(Rappture::yaxis);
+            dz = field.rangeMax(Rappture::zaxis) - field.rangeMin(Rappture::zaxis);
+            double dmin = pow((dx*dy*dz)/(nsample*nsample*nsample), 0.333);
+
+            nx = (int)ceil(dx/dmin);
+            ny = (int)ceil(dy/dmin);
+            nz = (int)ceil(dz/dmin);
+            float *data = new float[nx*ny*nz];
+            std::cout << "generating " << nx << "x" << ny << "x" << nz << " = " << nx*ny*nz << " points" << std::endl;
+
+            // generate the uniformly sampled data that we need for a volume
+            int ngen = 0;
+            for (int iz=0; iz < nz; iz++) {
+                double zval = z0 + iz*dmin;
+                for (int iy=0; iy < ny; iy++) {
+                    double yval = y0 + iy*dmin;
+                    for (int ix=0; ix < nx; ix++) {
+                        double xval = x0 + ix*dmin;
+                        data[ngen++] = field.value(xval,yval,zval);
+                    }
+                }
+            }
+        }
+    } else {
+        std::cerr << "WARNING: data not found in file " << fname << std::endl;
+    }
+
+    //load_volume(index, nx, ny, nz, 1, data);
+}
+
+int
+main(int argc, char **argv)
+{
+    if (argc != 2) {
+        std::cerr << "usage: viz file" << std::endl;
+        exit(1);
+    }
+    load_volume_file(0, argv[1]);
+    exit(0);
+}
Index: /tags/1.6.0/src/objects/Makefile.in
===================================================================
--- /tags/1.6.0/src/objects/Makefile.in	(revision 6168)
+++ /tags/1.6.0/src/objects/Makefile.in	(revision 6168)
@@ -0,0 +1,151 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+incdir          = $(prefix)/include
+
+INSTALL         = @INSTALL@
+
+CXX             = @CXX@
+CC              = $(CXX)
+CCC             = @CC@
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@
+CFLAGS_WARNING  = -Wall
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD        = @STLIB_LD@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+CFLAGS          = @CFLAGS@ -fPIC
+FFMPEG          = @HAVE_FFMPEG_LIBS@
+RM              = rm -f
+CC_SWITCHES = $(CFLAGS) $(INCLUDES) $(DEFINES) $(CFLAGS_DEBUG)
+
+INCLUDES    = \
+		-I. \
+		-I../core \
+		-I$(srcdir) \
+		-I$(srcdir)/../core \
+		-I$(includedir)
+LIBS        = -L../core -lrappture
+
+
+RANLIB      = @RANLIB@
+AR          = ar
+VPATH       = $(srcdir)
+
+# tell make where to find the expat & libscew headers
+INCL_RP_DEPS    = -I$(includedir)
+
+# define our compiling environment
+LN              = ln -s
+
+#		RpDXReader.h \
+#		RpDXWriter.h \
+
+HEADERS = \
+		RpAccessor.h \
+		RpArray1D.h \
+		RpArray1DUniform.h \
+		RpAxisMarker.h \
+		RpBoolean.h \
+		RpChain.h \
+		RpChainHelper.h \
+		RpChoice.h \
+		RpCurve.h \
+		RpInt.h \
+		RpHashHelper.h \
+		RpHistogram.h \
+		RpLibObj.h \
+		RpLibStorage.h \
+		RpNumber.h \
+		RpParserXML.h \
+		RpPath.h \
+		RpPlot.h \
+		RpPool.h \
+		RpScatter.h \
+		RpString.h \
+		RpTest.h \
+		RpTree.h \
+		RpObjConfig.h \
+		RpObject.h
+
+LOCAL_HEADERS = \
+		RpHash.h
+
+#		RpDXReader.o \
+#		RpDXWriter.o \
+
+OBJS = \
+		RpArray1D.o \
+		RpArray1DUniform.o \
+		RpAxisMarker.o \
+		RpBoolean.o \
+		RpChain.o \
+		RpChoice.o \
+		RpCurve.o \
+		RpChainHelper.o \
+		RpHash.o \
+		RpHashHelper.o \
+		RpHistogram.o \
+		RpLibObj.o \
+		RpLibStorage.o \
+		RpNumber.o \
+		RpParserXML.o \
+		RpPath.o \
+		RpPlot.o \
+		RpPool.o \
+		RpScatter.o \
+		RpString.o \
+		RpTest.o \
+		RpTree.o \
+		RpUtils2.o \
+		RpObject.o
+
+name        = RpObjects
+lib         = lib$(name).a
+shared_lib  = lib$(name)$(SHLIB_SUFFIX)
+
+all: build_lib
+
+build_lib: $(lib) $(shared_lib)
+
+$(shared_lib): $(OBJS)
+	$(RM) $@
+	$(SHLIB_LD) $(SHLIB_LDFLAGS) -o $@ $(OBJS) \
+		$(LIB_SEARCH_DIRS) $(LIBS)  -lstdc++ -lexpat
+
+$(lib): $(OBJS)
+	$(RM) $@
+	$(AR) -r $@ $(OBJS)
+	$(RANLIB) $@
+
+install: $(lib) $(shared_lib)
+	$(INSTALL) -m 444 $(lib) $(libdir)
+	$(INSTALL) -m 555 $(shared_lib) $(libdir)
+	for i in $(HEADERS) ; do \
+	  $(INSTALL) -m 444  $(srcdir)/$$i $(incdir) ; \
+	done
+	for i in $(LOCAL_HEADERS) ; do \
+	  $(INSTALL) -m 444  $$i $(incdir) ; \
+	done
+
+.cc.o:
+	$(CXX) $(CC_SWITCHES) -c $?
+.c.o: 
+	$(CCC) $(CC_SWITCHES) -c $?
+
+clean:
+	$(RM) $(OBJS) $(lib) $(shared_lib)
+
+distclean: clean
+	rm Makefile RpHash.h
Index: /tags/1.6.0/src/objects/RpAccessor.h
===================================================================
--- /tags/1.6.0/src/objects/RpAccessor.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpAccessor.h	(revision 6168)
@@ -0,0 +1,104 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef RAPPTURE_ACCESSOR_H
+#define RAPPTURE_ACCESSOR_H
+
+#include <cstring>
+
+namespace Rappture {
+
+template <class T>
+class Accessor
+{
+public:
+    Accessor ();
+    Accessor (const T &o);
+    ~Accessor();
+
+    // get routine
+    T operator() (void) const;
+
+    // set routine
+    void operator() (T val);
+
+private:
+
+    T _val;
+};
+
+template <class T>
+Accessor<T>::Accessor()
+{
+}
+
+template <class T>
+T
+Accessor<T>::operator() (void) const
+{
+    return _val;
+}
+
+template <class T>
+void
+Accessor<T>::operator() (T val)
+{
+    _val = val;
+}
+
+template <class T>
+Accessor<T>::~Accessor()
+{
+}
+
+// handle const char *'s gracefully?
+
+template <> inline
+Accessor<const char *>::Accessor()
+{
+    _val = NULL;
+}
+
+template <> inline
+void
+Accessor<const char *>::operator() (const char *val)
+{
+    if (val == NULL) {
+        return;
+    }
+
+    size_t len = strlen(val);
+    char *tmp = new char[len+1];
+    if (tmp == NULL) {
+        // raise error and exit
+    }
+    strncpy(tmp,val,len+1);
+
+    if (_val) {
+        delete[] _val;
+    }
+
+    _val = tmp;
+}
+
+template <> inline
+Accessor<const char *>::~Accessor()
+{
+    if (_val) {
+        delete[] _val;
+    }
+}
+
+} // namespace Rappture
+
+/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
+
+#endif // RAPPTURE_ACCESSOR_H
Index: /tags/1.6.0/src/objects/RpArray1D.cc
===================================================================
--- /tags/1.6.0/src/objects/RpArray1D.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpArray1D.cc	(revision 6168)
@@ -0,0 +1,202 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 Array1D Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <limits>
+#include "RpArray1D.h"
+
+using namespace Rappture;
+
+const char Array1D::type[] = "RAPPTURE_AXIS_TYPE_IRREGULAR";
+
+Array1D::Array1D()
+    : Object(),
+      _min(std::numeric_limits<double>::max()),
+      _max(std::numeric_limits<double>::min())
+{
+    name("");
+    label("");
+    desc("");
+    units("");
+    scale("linear");
+}
+
+Array1D::Array1D(const double *val, size_t size)
+    : Object(),
+      _min(std::numeric_limits<double>::max()),
+      _max(std::numeric_limits<double>::min())
+{
+    name("");
+    label("");
+    desc("");
+    units("");
+    scale("linear");
+    append(val,size);
+}
+
+// copy constructor
+Array1D::Array1D(const Array1D& o)
+    : _val(o._val),
+      _min(o._min),
+      _max(o._max)
+{
+    name(o.name());
+    label(o.label());
+    desc(o.desc());
+    units(o.units());
+    scale(o.scale());
+}
+
+// default destructor
+Array1D::~Array1D ()
+{
+    // clean up dynamic memory
+}
+
+/**********************************************************************/
+// METHOD: append()
+/// Append value to the axis
+/**
+ * Append value to the axis object.
+ */
+
+Array1D&
+Array1D::append(const double *val, size_t nmemb)
+{
+    double nmin = _min;
+    double nmax = _max;
+
+    for (size_t i = 0; i < nmemb; i++) {
+        if (val[i] < nmin) {
+            nmin = val[i];
+        }
+        if (val[i] > nmax) {
+            nmax = val[i];
+        }
+    }
+
+    _val.append(val,nmemb);
+
+    _min = nmin;
+    _max = nmax;
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: clear()
+/// clear data values from the object
+/**
+ * Clear data values from the object
+ */
+
+Array1D&
+Array1D::clear()
+{
+    _val.clear();
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: read()
+/// Read values from the axis object into a memory location
+/**
+ * Read values from the axis object into a memory location
+ */
+
+size_t
+Array1D::read(double *val, size_t nmemb)
+{
+    return _val.read(val,nmemb);
+}
+
+/**********************************************************************/
+// METHOD: nmemb()
+/// Return the number of members in the axis object
+/**
+ * Return the number of members in the axis object
+ */
+
+size_t
+Array1D::nmemb() const
+{
+    return _val.nmemb();
+}
+
+/**********************************************************************/
+// METHOD: min()
+/// Return the min value of the object
+/**
+ * Return the min value of the object
+ */
+
+double
+Array1D::min() const
+{
+    return _min;
+}
+
+/**********************************************************************/
+// METHOD: max()
+/// Return the max value of the object
+/**
+ * Return the max value of the object
+ */
+
+double
+Array1D::max() const
+{
+    return _max;
+}
+
+/**********************************************************************/
+// METHOD: data()
+/// Return the actual data pointer
+/**
+ * Return the actual data pointer
+ */
+
+const double *
+Array1D::data() const
+{
+    return _val.bytes();
+}
+
+/**********************************************************************/
+// METHOD: xml()
+/// Return the xml text representation of this object
+/**
+ * Return the xml text representation of this object
+ */
+
+const char *
+Array1D::xml(size_t indent, size_t tabstop)
+{
+    return "";
+}
+
+/**********************************************************************/
+// METHOD: xml()
+/// Return the xml text representation of this object
+/**
+ * Return the xml text representation of this object
+ */
+
+const int
+Array1D::is() const
+{
+    // return "ar1d" in hex
+    return 0x61723164;
+}
+
+// -------------------------------------------------------------------- //
+
Index: /tags/1.6.0/src/objects/RpArray1D.h
===================================================================
--- /tags/1.6.0/src/objects/RpArray1D.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpArray1D.h	(revision 6168)
@@ -0,0 +1,55 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef RAPPTURE_ARRAY1D_H
+#define RAPPTURE_ARRAY1D_H
+
+#include "RpAccessor.h"
+#include "RpSimpleBuffer.h"
+#include "RpObject.h"
+
+namespace Rappture {
+
+class Array1D : public Object
+{
+public:
+
+    Array1D();
+    Array1D (const double *val, size_t size);
+    Array1D (const Array1D &o);
+    virtual ~Array1D();
+
+    Accessor<const char *> name;
+    Accessor<const char *> units;
+    Accessor<const char *> scale;
+
+    virtual Array1D& append(const double *val, size_t nmemb);
+    virtual Array1D& clear();
+    virtual size_t read(double *val, size_t nmemb);
+    virtual size_t nmemb() const;
+    virtual double min() const;
+    virtual double max() const;
+    virtual const double *data() const;
+
+    static const char type[];
+
+    const char *xml(size_t indent, size_t tabstop);
+    const int is(void) const;
+
+protected:
+
+    SimpleDoubleBuffer _val;
+    double _min;
+    double _max;
+};
+
+} // namespace Rappture
+
+#endif // RAPPTURE_ARRAY1D_H
Index: /tags/1.6.0/src/objects/RpArray1DUniform.cc
===================================================================
--- /tags/1.6.0/src/objects/RpArray1DUniform.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpArray1DUniform.cc	(revision 6168)
@@ -0,0 +1,163 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 Array1DUniform Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <limits>
+#include <cmath>
+#include "RpArray1DUniform.h"
+
+using namespace Rappture;
+
+const char Array1DUniform::type[] = "RAPPTURE_AXIS_TYPE_UNIFORM";
+
+Array1DUniform::Array1DUniform()
+    : Array1D(),
+      _step(0)
+{}
+
+Array1DUniform::Array1DUniform(double min, double max, double step)
+    : Array1D(),
+      _step(step)
+{
+    this->min(min);
+    this->max(max);
+    __fillBuffer();
+}
+
+Array1DUniform::Array1DUniform(double min, double max, size_t nmemb)
+    : Array1D(),
+      _step(0)
+{
+    this->min(min);
+    this->max(max);
+    this->step(__calcStepFromNmemb(nmemb));
+    __fillBuffer();
+}
+
+// copy constructor
+Array1DUniform::Array1DUniform ( const Array1DUniform& o )
+    : Array1D(o),
+      _step(o._step)
+{}
+
+// default destructor
+Array1DUniform::~Array1DUniform ()
+{
+    // clean up dynamic memory
+}
+
+/**********************************************************************/
+// METHOD: min()
+/// Set the min value and refill buffer
+/**
+ * Set the min value and refill buffer
+ */
+
+void
+Array1DUniform::min(double min)
+{
+    _min = min;
+    clear();
+    __fillBuffer();
+    return;
+}
+
+/**********************************************************************/
+// METHOD: max()
+/// Set the max value and refill buffer
+/**
+ * Set the max value and refill buffer
+ */
+
+void
+Array1DUniform::max(double max)
+{
+    _max = max;
+    clear();
+    __fillBuffer();
+    return;
+}
+
+/**********************************************************************/
+// METHOD: step()
+/// Get the step value
+/**
+ * Get the step value
+ */
+
+double
+Array1DUniform::step(void) const
+{
+    return _step;
+}
+
+/**********************************************************************/
+// METHOD: step()
+/// Set the step value and refill buffer
+/**
+ * Set the step value and refill buffer
+ */
+
+void
+Array1DUniform::step(double step)
+{
+    _step = step;
+    clear();
+    __fillBuffer();
+    return;
+}
+
+double
+Array1DUniform::__calcStepFromNmemb(size_t nmemb)
+{
+    double newstep = 0.0;
+
+    if (nmemb != 0) {
+        newstep = (Array1D::max()-Array1D::min()+1)/nmemb;
+    }
+
+    return newstep;
+}
+
+size_t
+Array1DUniform::__calcNmembFromStep(double step)
+{
+    size_t nmemb = 0;
+
+    if (step != 0) {
+        nmemb = (size_t) round((Array1D::max()-Array1D::min()+1)/step);
+    }
+
+    return nmemb;
+}
+
+void
+Array1DUniform::__fillBuffer()
+{
+    size_t bufSize = 0;
+
+    if (_step == 0) {
+        return;
+    }
+
+    bufSize = __calcNmembFromStep(_step);
+    _val.set(bufSize);
+
+    for(double i=_min; i <= _max; i=i+_step) {
+        _val.append(&i,1);
+    }
+
+    return;
+}
+
+// -------------------------------------------------------------------- //
+
Index: /tags/1.6.0/src/objects/RpArray1DUniform.h
===================================================================
--- /tags/1.6.0/src/objects/RpArray1DUniform.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpArray1DUniform.h	(revision 6168)
@@ -0,0 +1,45 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef RAPPTURE_ARRAY1DUNIFORM_H
+#define RAPPTURE_ARRAY1DUNIFORM_H
+
+#include "RpArray1D.h"
+
+namespace Rappture {
+
+class Array1DUniform : public Array1D
+{
+public:
+    Array1DUniform();
+    Array1DUniform(double min, double max, double step);
+    Array1DUniform(double min, double max, size_t nmemb);
+    Array1DUniform(const Array1DUniform &o);
+    virtual ~Array1DUniform ();
+
+    void min(double min);
+    void max(double max);
+    double step(void) const;
+    void step(double step);
+
+    static const char type[];
+
+protected:
+    double _step;
+
+private:
+    double __calcStepFromNmemb(size_t nmemb);
+    size_t __calcNmembFromStep(double step);
+    void __fillBuffer();
+
+};
+} // namespace Rappture
+
+#endif // RAPPTURE_ARRAY1DUNIFORM_H
Index: /tags/1.6.0/src/objects/RpAxisMarker.cc
===================================================================
--- /tags/1.6.0/src/objects/RpAxisMarker.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpAxisMarker.cc	(revision 6168)
@@ -0,0 +1,176 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 AxisMarker Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpAxisMarker.h"
+
+using namespace Rappture;
+
+AxisMarker::AxisMarker()
+    : Object(),
+      _axisName(NULL),
+      _style(NULL),
+      _at(0.0)
+{}
+
+AxisMarker::AxisMarker(const char *axisName, const char *label,
+                       const char *style, double at)
+    : Object(),
+      _axisName(NULL),
+      _style(NULL),
+      _at(0.0)
+{
+    this->axisName(axisName);
+    this->label(label);
+    this->style(style);
+    this->at(at);
+}
+
+AxisMarker::AxisMarker(const AxisMarker &o)
+    : Object(),
+      _axisName(NULL),
+      _style(NULL),
+      _at(0.0)
+{
+    this->axisName(o.axisName());
+    this->label(o.label());
+    this->style(o.style());
+    this->at(o.at());
+}
+
+AxisMarker::~AxisMarker()
+{
+    if (_axisName != NULL) {
+        delete[] _axisName;
+    }
+
+    if (_style != NULL) {
+        delete[] _style;
+    }
+}
+
+
+void
+AxisMarker::axisName (const char *a)
+{
+    size_t len = 0;
+
+    if (a == NULL) {
+        return;
+    }
+
+    if (_axisName != NULL) {
+        delete[] _axisName;
+    }
+
+    len = strlen(a);
+    char *tmp = new char[len+1];
+
+    strncpy(tmp,a,len+1);
+
+    _axisName = tmp;
+
+    return;
+}
+
+const char *
+AxisMarker::axisName (void) const
+{
+    return _axisName;
+}
+
+void
+AxisMarker::style (const char *s)
+{
+    size_t len = 0;
+
+    if (s == NULL) {
+        return;
+    }
+
+    if (_style != NULL) {
+        delete[] _style;
+    }
+
+    len = strlen(s);
+    char *tmp = new char[len+1];
+
+    strncpy(tmp,s,len+1);
+
+    _style = tmp;
+
+    return;
+}
+
+const char *
+AxisMarker::style (void) const
+{
+    return _style;
+}
+
+void
+AxisMarker::at (double a)
+{
+    _at = a;
+    return;
+}
+
+double
+AxisMarker::at (void) const
+{
+    return _at;
+}
+
+/**********************************************************************/
+// METHOD: xml()
+/// Return the xml of the object
+/**
+ * Return the xml of the object
+ */
+
+const char *
+AxisMarker::xml(size_t indent, size_t tabstop)
+{
+    size_t l1width = indent + tabstop;
+    const char *sp = "";
+
+    _tmpBuf.clear();
+
+    _tmpBuf.appendf(
+"%6$*4$s<marker>\n\
+%6$*5$s<at>%1$g</at>\n\
+%6$*5$s<label>%2$s</label>\n\
+%6$*5$s<style>%3$s</style>\n\
+%6$*4$s<marker>\n",
+        _at,label(),_style,indent,l1width,sp);
+
+    _tmpBuf.append("\0",1);
+
+    return _tmpBuf.bytes();
+}
+
+/**********************************************************************/
+// METHOD: is()
+/// what kind of object is this
+/**
+ * return hex value telling what kind of object this is.
+ */
+
+const int
+AxisMarker::is() const
+{
+    // return "mark" in hex
+    return 0x6D61726B;
+}
+
+// -------------------------------------------------------------------- //
+
Index: /tags/1.6.0/src/objects/RpAxisMarker.h
===================================================================
--- /tags/1.6.0/src/objects/RpAxisMarker.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpAxisMarker.h	(revision 6168)
@@ -0,0 +1,55 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <errno.h>
+
+#include "RpObject.h"
+
+#ifndef RAPPTURE_AXISMARKER_H
+#define RAPPTURE_AXISMARKER_H
+
+namespace Rappture {
+
+class AxisMarker : public Object
+{
+    public:
+
+        AxisMarker();
+
+        AxisMarker(const char *axisName, const char *label,
+                   const char *style, double at);
+
+        AxisMarker(const AxisMarker& o);
+
+        virtual ~AxisMarker();
+
+        void axisName (const char *a);
+        const char *axisName (void) const;
+
+        void style (const char *s);
+        const char *style (void) const;
+
+        void at (double a);
+        double at (void) const;
+
+        const char *xml(size_t indent, size_t tabstop);
+        const int is(void) const;
+
+    protected:
+
+        const char *_axisName;
+        const char *_style;
+        double _at;
+};
+
+} // namespace Rappture
+
+/*--------------------------------------------------------------------------*/
+
+#endif // RAPPTURE_AXISMARKER_H
Index: /tags/1.6.0/src/objects/RpBoolean.cc
===================================================================
--- /tags/1.6.0/src/objects/RpBoolean.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpBoolean.cc	(revision 6168)
@@ -0,0 +1,106 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 Boolean Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpBoolean.h"
+#include "RpUnits.h"
+
+using namespace Rappture;
+
+Boolean::Boolean (
+            const char *path,
+            int val
+        )
+    :   Object    ()
+{
+    this->path(path);
+    this->def(val);
+    this->cur(val);
+}
+
+Boolean::Boolean (
+            const char *path,
+            int val,
+            const char *label,
+            const char *desc
+        )
+    :   Object    ()
+{
+    this->path(path);
+    this->label(label);
+    this->desc(desc);
+    this->def(val);
+    this->cur(val);
+}
+
+// copy constructor
+Boolean::Boolean ( const Boolean& o )
+    :   Object(o)
+{
+    this->def(o.def());
+    this->cur(o.cur());
+
+}
+
+// default destructor
+Boolean::~Boolean ()
+{
+}
+
+/**********************************************************************/
+// METHOD: xml()
+/// view this object's xml
+/**
+ * View this object as an xml element returned as text.
+ */
+
+const char *
+Boolean::xml(size_t indent, size_t tabstop)
+{
+    size_t l1width = indent + tabstop;
+    size_t l2width = indent + (2*tabstop);
+    const char *sp = "";
+
+    Path p(path());
+    _tmpBuf.clear();
+
+    // FIXME: boolean should print yes/no
+
+    _tmpBuf.appendf(
+"%9$*6$s<boolean id=\"%1$s\">\n\
+%9$*7$s<about>\n\
+%9$*8$s<label>%2$s</label>\n\
+%9$*8$s<description>%3$s</description>\n\
+%9$*7$s</about>\n\
+%9$*7$s<default>%4$i</default>\n\
+%9$*7$s<current>%5$i</current>\n\
+%9$*6$s</boolean>",
+       p.id(),label(),desc(),def(),cur(),indent,l1width,l2width,sp);
+
+    return _tmpBuf.bytes();
+}
+
+/**********************************************************************/
+// METHOD: is()
+/// what kind of object is this
+/**
+ * return hex value telling what kind of object this is.
+ */
+
+const int
+Boolean::is() const
+{
+    // return "bool" in hex
+    return 0x626F6F6C;
+}
+
+// -------------------------------------------------------------------- //
Index: /tags/1.6.0/src/objects/RpBoolean.h
===================================================================
--- /tags/1.6.0/src/objects/RpBoolean.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpBoolean.h	(revision 6168)
@@ -0,0 +1,44 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpObject.h"
+
+#ifndef RAPPTURE_BOOLEAN_H
+#define RAPPTURE_BOOLEAN_H
+
+namespace Rappture {
+
+class Boolean : public Object
+{
+    public:
+
+        Boolean  (  const char *path,
+                    int val);
+
+        Boolean  (  const char *path,
+                    int val,
+                    const char *label,
+                    const char *desc);
+
+        Boolean  ( const Boolean& o );
+        virtual ~Boolean ();
+
+        Accessor<int> def;
+        Accessor<int> cur;
+
+        const char *xml(size_t indent, size_t tabstop);
+        const int is() const;
+};
+
+} // namespace Rappture
+
+/*--------------------------------------------------------------------------*/
+
+#endif
Index: /tags/1.6.0/src/objects/RpChain.c
===================================================================
--- /tags/1.6.0/src/objects/RpChain.c	(revision 6168)
+++ /tags/1.6.0/src/objects/RpChain.c	(revision 6168)
@@ -0,0 +1,445 @@
+/*
+ * bltChain.c --
+ *
+ *  The module implements a generic linked list package.
+ *
+ * Copyright 1991-1998 Lucent Technologies, Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that the above copyright notice appear in all
+ * copies and that both that the copyright notice and warranty
+ * disclaimer appear in supporting documentation, and that the names
+ * of Lucent Technologies any of their entities not be used in
+ * advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+ *
+ * Lucent Technologies disclaims all warranties with regard to this
+ * software, including all implied warranties of merchantability and
+ * fitness.  In no event shall Lucent Technologies be liable for any
+ * special, indirect or consequential damages or any damages
+ * whatsoever resulting from loss of use, data or profits, whether in
+ * an action of contract, negligence or other tortuous action, arising
+ * out of or in connection with the use or performance of this
+ * software.
+ */
+
+#include "RpInt.h"
+#include "RpChain.h"
+
+#ifndef ALIGN
+#define ALIGN(a) \
+    (((size_t)a + (sizeof(double) - 1)) & (~(sizeof(double) - 1)))
+#endif /* ALIGN */
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainCreate --
+ *
+ *  Creates a new linked list (chain) structure and initializes 
+ *  its pointers;
+ *
+ * Results:
+ *  Returns a pointer to the newly created chain structure.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_Chain *
+Rp_ChainCreate()
+{
+    Rp_Chain *chainPtr;
+
+    chainPtr = (Rp_Chain *) Rp_Malloc(sizeof(Rp_Chain));
+    if (chainPtr != NULL) {
+        Rp_ChainInit(chainPtr);
+    }
+    return chainPtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainAllocLink --
+ *
+ *  Creates a new chain link.  Unlink Rp_ChainNewLink, this 
+ *  routine also allocates extra memory in the node for data.
+ *
+ * Results:
+ *  The return value is the pointer to the newly created entry.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_ChainLink *
+Rp_ChainAllocLink(extraSize)
+    unsigned int extraSize;
+{
+    Rp_ChainLink *linkPtr;
+    unsigned int linkSize;
+
+    linkSize = ALIGN(sizeof(Rp_ChainLink));
+    linkPtr = Rp_Calloc(1, linkSize + extraSize);
+    assert(linkPtr);
+    if (extraSize > 0) {
+        /* Point clientData at the memory beyond the normal structure. */
+        linkPtr->clientData = (ClientData)((char *)linkPtr + linkSize);
+    }
+    return linkPtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainNewLink --
+ *
+ *  Creates a new link.
+ *
+ * Results:
+ *  The return value is the pointer to the newly created link.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_ChainLink *
+Rp_ChainNewLink()
+{
+    Rp_ChainLink *linkPtr;
+
+    linkPtr = (Rp_ChainLink *) Rp_Malloc(sizeof(Rp_ChainLink));
+    assert(linkPtr);
+    linkPtr->clientData = NULL;
+    linkPtr->nextPtr = linkPtr->prevPtr = NULL;
+    return linkPtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainReset --
+ *
+ *  Removes all the links from the chain, freeing the memory for
+ *  each link.  Memory pointed to by the link (clientData) is not
+ *  freed.  It's the caller's responsibility to deallocate it.
+ *
+ * Results:
+ *  None.
+ *
+ *---------------------------------------------------------------------- 
+ */
+void
+Rp_ChainReset(chainPtr)
+    Rp_Chain *chainPtr;	/* Chain to clear */
+{
+    if (chainPtr != NULL) {
+        Rp_ChainLink *oldPtr;
+        Rp_ChainLink *linkPtr = chainPtr->headPtr;
+
+        while (linkPtr != NULL) {
+            oldPtr = linkPtr;
+            linkPtr = linkPtr->nextPtr;
+            Rp_Free(oldPtr);
+        }
+        Rp_ChainInit(chainPtr);
+    }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainDestroy
+ *
+ *     Frees all the nodes from the chain and deallocates the memory
+ *     allocated for the chain structure itself.  It's assumed that
+ *     the chain was previous allocated by Rp_ChainCreate.
+ *
+ * Results:
+ *      None.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_ChainDestroy(chainPtr)
+    Rp_Chain *chainPtr;
+{
+    if (chainPtr != NULL) {
+        Rp_ChainReset(chainPtr);
+        Rp_Free(chainPtr);
+    }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainInit --
+ *
+ *  Initializes a linked list.
+ *
+ * Results:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_ChainInit(chainPtr)
+    Rp_Chain *chainPtr;
+{
+    chainPtr->nLinks = 0;
+    chainPtr->headPtr = chainPtr->tailPtr = NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainLinkAfter --
+ *
+ *  Inserts an entry following a given entry.
+ *
+ * Results:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_ChainLinkAfter(chainPtr, linkPtr, afterPtr)
+    Rp_Chain *chainPtr;
+    Rp_ChainLink *linkPtr, *afterPtr;
+{
+    if (chainPtr->headPtr == NULL) {
+        chainPtr->tailPtr = chainPtr->headPtr = linkPtr;
+    } else {
+        if (afterPtr == NULL) {
+            /* Prepend to the front of the chain */
+            linkPtr->nextPtr = chainPtr->headPtr;
+            linkPtr->prevPtr = NULL;
+            chainPtr->headPtr->prevPtr = linkPtr;
+            chainPtr->headPtr = linkPtr;
+        } else {
+            linkPtr->nextPtr = afterPtr->nextPtr;
+            linkPtr->prevPtr = afterPtr;
+            if (afterPtr == chainPtr->tailPtr) {
+                chainPtr->tailPtr = linkPtr;
+            } else {
+                afterPtr->nextPtr->prevPtr = linkPtr;
+            }
+            afterPtr->nextPtr = linkPtr;
+        }
+    }
+    chainPtr->nLinks++;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainLinkBefore --
+ *
+ *  Inserts a link preceding a given link.
+ *
+ * Results:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_ChainLinkBefore(chainPtr, linkPtr, beforePtr)
+    Rp_Chain *chainPtr;         /* Chain to contain new entry */
+    Rp_ChainLink *linkPtr;      /* New entry to be inserted */
+    Rp_ChainLink *beforePtr;    /* Entry to link before */
+{
+    if (chainPtr->headPtr == NULL) {
+        chainPtr->tailPtr = chainPtr->headPtr = linkPtr;
+    } else {
+        if (beforePtr == NULL) {
+            /* Append to the end of the chain. */
+            linkPtr->nextPtr = NULL;
+            linkPtr->prevPtr = chainPtr->tailPtr;
+            chainPtr->tailPtr->nextPtr = linkPtr;
+            chainPtr->tailPtr = linkPtr;
+        } else {
+            linkPtr->prevPtr = beforePtr->prevPtr;
+            linkPtr->nextPtr = beforePtr;
+            if (beforePtr == chainPtr->headPtr) {
+                chainPtr->headPtr = linkPtr;
+            } else {
+                beforePtr->prevPtr->nextPtr = linkPtr;
+            }
+            beforePtr->prevPtr = linkPtr;
+        }
+    }
+    chainPtr->nLinks++;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainUnlinkLink --
+ *
+ *	Unlinks a link from the chain. The link is not deallocated, 
+ *	but only removed from the chain.
+ *
+ * Results:
+ *	None.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_ChainUnlinkLink(chainPtr, linkPtr)
+    Rp_Chain *chainPtr;
+    Rp_ChainLink *linkPtr;
+{
+    int unlinked;       /* Indicates if the link is actually
+                         * removed from the chain. */
+
+    unlinked = FALSE;
+    if (chainPtr->headPtr == linkPtr) {
+        chainPtr->headPtr = linkPtr->nextPtr;
+        unlinked = TRUE;
+    }
+    if (chainPtr->tailPtr == linkPtr) {
+        chainPtr->tailPtr = linkPtr->prevPtr;
+        unlinked = TRUE;
+    }
+    if (linkPtr->nextPtr != NULL) {
+        linkPtr->nextPtr->prevPtr = linkPtr->prevPtr;
+        unlinked = TRUE;
+    }
+    if (linkPtr->prevPtr != NULL) {
+        linkPtr->prevPtr->nextPtr = linkPtr->nextPtr;
+        unlinked = TRUE;
+    }
+    if (unlinked) {
+        chainPtr->nLinks--;
+    }
+    linkPtr->prevPtr = linkPtr->nextPtr = NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainDeleteLink --
+ *
+ *  Unlinks and also frees the given link.
+ *
+ * Results:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_ChainDeleteLink(chainPtr, linkPtr)
+    Rp_Chain *chainPtr;
+    Rp_ChainLink *linkPtr;
+{
+    Rp_ChainUnlinkLink(chainPtr, linkPtr);
+    Rp_Free(linkPtr);
+}
+
+Rp_ChainLink *
+Rp_ChainAppend(chainPtr, clientData)
+    Rp_Chain *chainPtr;
+    ClientData clientData;
+{
+    Rp_ChainLink *linkPtr;
+
+    linkPtr = Rp_ChainNewLink();
+    Rp_ChainLinkBefore(chainPtr, linkPtr, (Rp_ChainLink *)NULL);
+    Rp_ChainSetValue(linkPtr, clientData);
+    return linkPtr;
+}
+
+Rp_ChainLink *
+Rp_ChainPrepend(chainPtr, clientData)
+    Rp_Chain *chainPtr;
+    ClientData clientData;
+{
+    Rp_ChainLink *linkPtr;
+
+    linkPtr = Rp_ChainNewLink();
+    Rp_ChainLinkAfter(chainPtr, linkPtr, (Rp_ChainLink *)NULL);
+    Rp_ChainSetValue(linkPtr, clientData);
+    return linkPtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainGetNthLink --
+ *
+ *  Find the link at the given position in the chain.
+ *
+ * Results:
+ *  Returns the pointer to the link, if that numbered link
+ *  exists. Otherwise NULL.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_ChainLink *
+Rp_ChainGetNthLink(chainPtr, position)
+    Rp_Chain *chainPtr; /* Chain to traverse */
+    int position;       /* Index of link to select from front
+                         * or back of the chain. */
+{
+    Rp_ChainLink *linkPtr;
+
+    if (chainPtr != NULL) {
+        for (linkPtr = chainPtr->headPtr; linkPtr != NULL;
+            linkPtr = linkPtr->nextPtr) {
+            if (position == 0) {
+                return linkPtr;
+            }
+            position--;
+        }
+    }
+    return NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_ChainSort --
+ *
+ *  Sorts the chain according to the given comparison routine.
+ *
+ * Results:
+ *  None.
+ *
+ * Side Effects:
+ *  The chain is reordered.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_ChainSort(chainPtr, proc)
+    Rp_Chain *chainPtr;	/* Chain to traverse */
+    Rp_ChainCompareProc *proc;
+{
+    Rp_ChainLink **linkArr;
+    register Rp_ChainLink *linkPtr;
+    register int i;
+
+    if (chainPtr->nLinks < 2) {
+        return;
+    }
+    linkArr = (Rp_ChainLink **) Rp_Malloc(sizeof(Rp_ChainLink *) * (chainPtr->nLinks + 1));
+    if (linkArr == NULL) {
+        return;         /* Out of memory. */
+    }
+    i = 0;
+    for (linkPtr = chainPtr->headPtr; linkPtr != NULL;
+         linkPtr = linkPtr->nextPtr) {
+        linkArr[i++] = linkPtr;
+    }
+    qsort((char *)linkArr, chainPtr->nLinks, sizeof(Rp_ChainLink *),
+        (QSortCompareProc *)proc);
+
+    /* Rethread the chain. */
+    linkPtr = linkArr[0];
+    chainPtr->headPtr = linkPtr;
+    linkPtr->prevPtr = NULL;
+    for (i = 1; i < chainPtr->nLinks; i++) {
+        linkPtr->nextPtr = linkArr[i];
+        linkPtr->nextPtr->prevPtr = linkPtr;
+        linkPtr = linkPtr->nextPtr;
+    }
+    chainPtr->tailPtr = linkPtr;
+    linkPtr->nextPtr = NULL;
+    Rp_Free(linkArr);
+}
Index: /tags/1.6.0/src/objects/RpChain.h
===================================================================
--- /tags/1.6.0/src/objects/RpChain.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpChain.h	(revision 6168)
@@ -0,0 +1,93 @@
+/*
+ * bltChain.h --
+ *
+ * Copyright 1993-2000 Lucent Technologies, Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that the above copyright notice appear in all
+ * copies and that both that the copyright notice and warranty
+ * disclaimer appear in supporting documentation, and that the names
+ * of Lucent Technologies any of their entities not be used in
+ * advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+ *
+ * Lucent Technologies disclaims all warranties with regard to this
+ * software, including all implied warranties of merchantability and
+ * fitness.  In no event shall Lucent Technologies be liable for any
+ * special, indirect or consequential damages or any damages
+ * whatsoever resulting from loss of use, data or profits, whether in
+ * an action of contract, negligence or other tortuous action, arising
+ * out of or in connection with the use or performance of this
+ * software.
+ */
+#ifndef _RP_CHAIN_H
+#define _RP_CHAIN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct Rp_ChainLinkStruct Rp_ChainLink;
+
+/*
+ * A Rp_ChainLink is the container structure for the Rp_Chain.
+ */
+
+struct Rp_ChainLinkStruct {
+    Rp_ChainLink *prevPtr;  /* Link to the previous link */
+    Rp_ChainLink *nextPtr;  /* Link to the next link */
+    ClientData clientData;  /* Pointer to the data object */
+};
+
+typedef int (Rp_ChainCompareProc) _ANSI_ARGS_((Rp_ChainLink **l1PtrPtr, 
+    Rp_ChainLink **l2PtrPtr));
+
+/*
+ * A Rp_Chain is a doubly chained list structure.
+ */
+typedef struct {
+    Rp_ChainLink *headPtr;  /* Pointer to first element in chain */
+    Rp_ChainLink *tailPtr;  /* Pointer to last element in chain */
+    int nLinks;             /* Number of elements in chain */
+} Rp_Chain;
+
+extern void Rp_ChainInit _ANSI_ARGS_((Rp_Chain * chainPtr));
+extern Rp_Chain *Rp_ChainCreate _ANSI_ARGS_(());
+extern void Rp_ChainDestroy _ANSI_ARGS_((Rp_Chain * chainPtr));
+extern Rp_ChainLink *Rp_ChainNewLink _ANSI_ARGS_((void));
+extern Rp_ChainLink *Rp_ChainAllocLink _ANSI_ARGS_((unsigned int extraSize));
+extern Rp_ChainLink *Rp_ChainAppend _ANSI_ARGS_((Rp_Chain * chainPtr,
+    ClientData clientData));
+extern Rp_ChainLink *Rp_ChainPrepend _ANSI_ARGS_((Rp_Chain * chainPtr,
+    ClientData clientData));
+extern void Rp_ChainReset _ANSI_ARGS_((Rp_Chain * chainPtr));
+extern void Rp_ChainLinkAfter _ANSI_ARGS_((Rp_Chain * chainPtr,
+    Rp_ChainLink * linkPtr, Rp_ChainLink * afterLinkPtr));
+extern void Rp_ChainLinkBefore _ANSI_ARGS_((Rp_Chain * chainPtr,
+    Rp_ChainLink * linkPtr, Rp_ChainLink * beforeLinkPtr));
+extern void Rp_ChainUnlinkLink _ANSI_ARGS_((Rp_Chain * chainPtr,
+    Rp_ChainLink * linkPtr));
+extern void Rp_ChainDeleteLink _ANSI_ARGS_((Rp_Chain * chainPtr,
+    Rp_ChainLink * linkPtr));
+extern Rp_ChainLink *Rp_ChainGetNthLink _ANSI_ARGS_((Rp_Chain * chainPtr, int n));
+extern void Rp_ChainSort _ANSI_ARGS_((Rp_Chain * chainPtr,
+    Rp_ChainCompareProc * proc));
+
+#define Rp_ChainGetLength(c)        (((c) == NULL) ? 0 : (c)->nLinks)
+#define Rp_ChainFirstLink(c)        (((c) == NULL) ? NULL : (c)->headPtr)
+#define Rp_ChainLastLink(c)         (((c) == NULL) ? NULL : (c)->tailPtr)
+#define Rp_ChainPrevLink(l)         ((l)->prevPtr)
+#define Rp_ChainNextLink(l)         ((l)->nextPtr)
+#define Rp_ChainGetValue(l)         ((l)->clientData)
+#define Rp_ChainSetValue(l, value)  ((l)->clientData = (ClientData)(value))
+#define Rp_ChainAppendLink(c, l) \
+    (Rp_ChainLinkBefore((c), (l), (Rp_ChainLink *)NULL))
+#define Rp_ChainPrependLink(c, l) \
+    (Rp_ChainLinkAfter((c), (l), (Rp_ChainLink *)NULL))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RP_CHAIN_H */
Index: /tags/1.6.0/src/objects/RpChainHelper.c
===================================================================
--- /tags/1.6.0/src/objects/RpChainHelper.c	(revision 6168)
+++ /tags/1.6.0/src/objects/RpChainHelper.c	(revision 6168)
@@ -0,0 +1,180 @@
+#include <string.h>
+#include "RpChainHelper.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+Rp_Chain *
+Rp_ChainJoin (
+    Rp_Chain *c1,
+    Rp_Chain *c2)
+{
+    Rp_ChainLink *l = NULL;
+
+    if (c1 == NULL) {
+        return c2;
+    }
+
+    if (c2 == NULL) {
+        return c1;
+    }
+
+    l = Rp_ChainLastLink(c2);
+    while (l != NULL) {
+        Rp_ChainUnlinkLink(c2,l);
+        Rp_ChainPrependLink(c1,l);
+        l = Rp_ChainLastLink(c2);
+    }
+
+    if (Rp_ChainGetLength(c2) != 0) {
+    // FIXME: add error message
+    }
+
+    Rp_ChainDestroy(c2);
+
+    return c1;
+}
+
+Rp_Chain *
+Rp_ChainConcat (
+    Rp_Chain *c1,
+    Rp_Chain *c2)
+{
+    Rp_ChainLink *l = NULL;
+
+    if (c1 == NULL) {
+        return c2;
+    }
+
+    if (c2 == NULL) {
+        return c1;
+    }
+
+    l = Rp_ChainFirstLink(c2);
+    while (l != NULL) {
+        Rp_ChainUnlinkLink(c2,l);
+        Rp_ChainAppendLink(c1,l);
+        l = Rp_ChainFirstLink(c2);
+    }
+
+    return c1;
+}
+
+Rp_Chain *
+Rp_ChainInsertChainAfter (
+    Rp_Chain *c1,
+    Rp_Chain *c2,
+    Rp_ChainLink *at)
+{
+    Rp_ChainLink *l = NULL;
+
+    if (c1 == NULL) {
+        return c2;
+    }
+
+    if (c2 == NULL) {
+        return c1;
+    }
+
+    l = Rp_ChainLastLink(c2);
+    while (l != NULL) {
+        Rp_ChainUnlinkLink(c2,l);
+        Rp_ChainLinkAfter(c1,l,at);
+        l = Rp_ChainLastLink(c2);
+    }
+
+    return c1;
+}
+
+Rp_Chain *
+Rp_ChainInsertChainBefore (
+    Rp_Chain *c1,
+    Rp_Chain *c2,
+    Rp_ChainLink *at)
+{
+    Rp_ChainLink *l = NULL;
+
+    if (c1 == NULL) {
+        return c2;
+    }
+
+    if (c2 == NULL) {
+        return c1;
+    }
+
+    l = Rp_ChainFirstLink(c2);
+    while (l != NULL) {
+        Rp_ChainUnlinkLink(c2,l);
+        Rp_ChainLinkBefore(c1,l,at);
+        l = Rp_ChainFirstLink(c2);
+    }
+
+    return c1;
+}
+
+int
+Rp_ChainCopy (
+    Rp_Chain *c1,
+    Rp_Chain *c2,
+    int (*cpyFxn)(void **to,void *from))
+{
+    void *origVal = NULL;
+    void *copyVal = NULL;
+    Rp_ChainLink *lorig = NULL;
+
+    if ( ( (c1 == NULL) && (c2 == NULL) )
+        || (cpyFxn == NULL) ) {
+        // raise error, improper function call
+        return -1;
+    }
+
+    if (c1 == NULL) {
+        // nothing to copy to
+        return 0;
+    }
+
+    if (c2 == NULL) {
+        // nothing to copy from
+        return 0;
+    }
+
+    lorig = Rp_ChainFirstLink(c2);
+    while (lorig != NULL) {
+        origVal = (void*) Rp_ChainGetValue(lorig);
+        if (cpyFxn(&copyVal,origVal) != 0) {
+            // error while copying
+            return -1;
+        }
+        Rp_ChainAppend(c1,copyVal);
+        lorig = Rp_ChainNextLink(lorig);
+    }
+
+    return 0;
+}
+
+int
+Rp_ChainCharCpyFxn (
+    void **to,
+    void *from)
+{
+    size_t len = 0;
+
+    len = strlen((char*)from);
+    *to = (void*) malloc(len*sizeof(char)+1);
+    strncpy((char*)(*to),(char*)from,len+1);
+    return 0;
+}
+
+int
+Rp_ChainCharCmpFxn (
+    void *to,
+    void *from)
+{
+    return strcmp(to,from);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
Index: /tags/1.6.0/src/objects/RpChainHelper.h
===================================================================
--- /tags/1.6.0/src/objects/RpChainHelper.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpChainHelper.h	(revision 6168)
@@ -0,0 +1,31 @@
+#ifndef _RP_CHAIN_HELPER_H
+#define _RP_CHAIN_HELPER_H 1
+
+#include "RpInt.h"
+#include "RpChain.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+// int chain2hash(Rp_Chain *c, Rp_HashTable *h);
+
+Rp_Chain *Rp_ChainJoin (Rp_Chain *c1, Rp_Chain *c2);
+
+Rp_Chain *Rp_ChainConcat (Rp_Chain *c1, Rp_Chain *c2);
+Rp_Chain *Rp_ChainInsertChainAfter (Rp_Chain *c1, Rp_Chain *c2, Rp_ChainLink *at);
+Rp_Chain *Rp_ChainInsertChainBefore (Rp_Chain *c1, Rp_Chain *c2, Rp_ChainLink *at);
+
+int Rp_ChainCopy (Rp_Chain *c1, Rp_Chain *c2,
+                  int (*cpyFxn)(void **to,void *from));
+
+int Rp_ChainCharCpyFxn (void **to, void *from);
+int Rp_ChainCharCmpFxn (void *to, void *from);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _RP_CHAIN_HELPER_H
Index: /tags/1.6.0/src/objects/RpChoice.cc
===================================================================
--- /tags/1.6.0/src/objects/RpChoice.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpChoice.cc	(revision 6168)
@@ -0,0 +1,210 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 Choice Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpChoice.h"
+
+using namespace Rappture;
+
+Choice::Choice (
+            const char *path,
+            const char *val
+        )
+    :   Object    (),
+        _options    (NULL)
+{
+    this->path(path);
+    this->label("");
+    this->desc("");
+    this->def(val);
+    this->cur(val);
+}
+
+Choice::Choice (
+            const char *path,
+            const char *val,
+            const char *label,
+            const char *desc
+        )
+    :   Object    (),
+        _options    (NULL)
+{
+    this->path(path);
+    this->label(label);
+    this->desc(desc);
+    this->def(val);
+    this->cur(val);
+}
+
+// copy constructor
+Choice::Choice ( const Choice& o )
+    :   Object(o)
+{
+    this->def(o.def());
+    this->cur(o.cur());
+
+    // need to copy _options
+}
+
+// default destructor
+Choice::~Choice ()
+{
+    // clean up dynamic memory
+    // unallocate the _options?
+
+}
+
+/**********************************************************************/
+// METHOD: addOption()
+/// Add an option value to the object
+/**
+ * Add an option value to the object. Currently all
+ * labels must be unique.
+ */
+
+Choice&
+Choice::addOption(
+    const char *label,
+    const char *desc,
+    const char *val)
+{
+    option *p = NULL;
+
+    p = new option;
+    if (!p) {
+        // raise error and exit
+    }
+
+    p->label(label);
+    p->desc(desc);
+    p->val(val);
+
+    if (_options == NULL) {
+        _options = Rp_ChainCreate();
+        if (_options == NULL) {
+            // raise error and exit
+        }
+    }
+
+    Rp_ChainAppend(_options,p);
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: delOption()
+/// Delete an option value from the object
+/**
+ * Delete an option value from the object.
+ */
+
+Choice&
+Choice::delOption(const char *label)
+{
+    if (label == NULL) {
+        return *this;
+    }
+
+    if (_options == NULL) {
+        return *this;
+    }
+
+    option *p = NULL;
+    const char *plabel = NULL;
+    Rp_ChainLink *l = NULL;
+
+    // traverse the list looking for the matching option
+    l = Rp_ChainFirstLink(_options);
+    while (l != NULL) {
+        p = (option *) Rp_ChainGetValue(l);
+        plabel = p->label();
+        if ((*label == *plabel) && (strcmp(plabel,label) == 0)) {
+            // we found matching entry, remove it
+            if (p) {
+                delete p;
+                Rp_ChainDeleteLink(_options,l);
+            }
+            break;
+        }
+    }
+
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: xml()
+/// view this object's xml
+/**
+ * View this object as an xml element returned as text.
+ */
+
+const char *
+Choice::xml(size_t indent, size_t tabstop)
+{
+    size_t l1width = indent + tabstop;
+    size_t l2width = indent + (2*tabstop);
+    size_t l3width = indent + (3*tabstop);
+    const char *sp = "";
+
+    Path p(path());
+    _tmpBuf.clear();
+
+    _tmpBuf.appendf(
+"%7$*4$s<choice id='%1$s'>\n\
+%7$*5$s<about>\n\
+%7$*6$s<label>%2$s</label>\n\
+%7$*6$s<description>%3$s</description>\n\
+%7$*5$s</about>\n",
+       p.id(),label(),desc(),indent,l1width,l2width,sp);
+
+    Rp_ChainLink *l = NULL;
+    l = Rp_ChainFirstLink(_options);
+    while (l != NULL) {
+        option *op = (option *)Rp_ChainGetValue(l);
+        _tmpBuf.appendf(
+"%7$*4$s<option>\n\
+%7$*5$s<about>\n\
+%7$*6$s<label>%1$s</label>\n\
+%7$*6$s<description>%2$s</description>\n\
+%7$*5$s</about>\n\
+%7$*5$s<value>%3$s</value>\n\
+%7$*4$s</option>\n",
+           op->label(),op->desc(),op->val(),l1width,l2width,l3width,sp);
+        l = Rp_ChainNextLink(l);
+    }
+
+    _tmpBuf.appendf(
+"%5$*4$s<default>%1$s</default>\n\
+%5$*4$s<current>%2$s</current>\n\
+%5$*3$s</choice>",
+       def(),cur(),indent,l1width,sp);
+
+    return _tmpBuf.bytes();
+}
+
+/**********************************************************************/
+// METHOD: is()
+/// what kind of object is this
+/**
+ * return hex value telling what kind of object this is.
+ */
+
+const int
+Choice::is() const
+{
+    // return "choi" in hex
+    return 0x63686F69;
+}
+
+// -------------------------------------------------------------------- //
+
Index: /tags/1.6.0/src/objects/RpChoice.h
===================================================================
--- /tags/1.6.0/src/objects/RpChoice.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpChoice.h	(revision 6168)
@@ -0,0 +1,63 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <errno.h>
+#include "RpObject.h"
+#include "RpChain.h"
+
+#ifndef RAPPTURE_CHOICE_H
+#define RAPPTURE_CHOICE_H
+
+namespace Rappture {
+
+class Choice : public Object
+{
+    public:
+
+        Choice  (   const char *path,
+                    const char *val );
+
+        Choice  (   const char *path,
+                    const char *val,
+                    const char *label,
+                    const char *desc);
+
+        Choice  (   const Choice& o );
+        virtual ~Choice ();
+
+        Accessor<const char *> def;
+        Accessor<const char *> cur;
+
+        Choice& addOption ( const char *label,
+                            const char *desc,
+                            const char *val );
+
+        Choice& delOption ( const char *label);
+
+        const char *xml(size_t indent, size_t tabstop);
+        const int is() const;
+
+    private:
+
+        // hash or linked list of preset values
+        Rp_Chain *_options;
+
+        typedef struct {
+            Accessor<const char *> label;
+            Accessor<const char *> desc;
+            Accessor<const char *> val;
+        } option;
+};
+
+} // namespace Rappture
+
+/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
+
+#endif
Index: /tags/1.6.0/src/objects/RpCurve.cc
===================================================================
--- /tags/1.6.0/src/objects/RpCurve.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpCurve.cc	(revision 6168)
@@ -0,0 +1,517 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 Curve Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpCurve.h"
+
+using namespace Rappture;
+
+/*
+const char Curve::format[]  = "RAPPTURE::CURVE::FORMAT";
+const char Curve::id[]      = "RAPPTURE::CURVE::ID";
+const char Curve::creator[] = "RAPPTURE::CURVE::CREATOR";
+*/
+const char Curve::x[]   = "xaxis";
+const char Curve::y[]   = "yaxis";
+
+Curve::Curve ()
+    : Object (),
+      _axisList (NULL)
+{
+    this->name("");
+    this->path("run");
+    this->label("");
+    this->desc("");
+    this->group("");
+}
+
+Curve::Curve (const char *name)
+    : Object (),
+      _axisList (NULL)
+{
+    this->name(name);
+    this->path("run");
+    this->label("");
+    this->desc("");
+    this->group("");
+}
+
+Curve::Curve (const char *name, const char *label, const char *desc,
+              const char *group)
+    : Object (),
+      _axisList (NULL)
+{
+    this->name(name);
+    this->path("run");
+    this->label(label);
+    this->desc(desc);
+    this->group(group);
+}
+
+// copy constructor
+Curve::Curve ( const Curve& o )
+    :   Object(o)
+{
+    this->name(o.name());
+    this->path(o.path());
+    this->label(o.label());
+    this->desc(o.desc());
+    this->group(o.group());
+
+    // need to copy _axisList
+}
+
+// default destructor
+Curve::~Curve ()
+{
+    // clean up dynamic memory
+    // unallocate the _axisList?
+
+}
+
+/**********************************************************************/
+// METHOD: axis()
+/// Add an axis vector to the object
+/**
+ * Add an axis vector to the object.
+ * Axis label must be unique.
+ */
+
+Array1D *
+Curve::axis(
+    const char *name,
+    const char *label,
+    const char *desc,
+    const char *units,
+    const char *scale,
+    const double *val,
+    size_t size)
+{
+    Array1D *a = NULL;
+
+    a = new Array1D(val,size);
+    if (a == NULL) {
+        // raise error and exit
+        return NULL;
+    }
+    a->name(name);
+    a->label(label);
+    a->desc(desc);
+    a->units(units);
+    a->scale(scale);
+
+    if (_axisList == NULL) {
+        _axisList = Rp_ChainCreate();
+        if (_axisList == NULL) {
+            // raise error and exit
+            delete a;
+            return NULL;
+        }
+    }
+
+    Rp_ChainAppend(_axisList,a);
+
+    return a;
+}
+
+/**********************************************************************/
+// METHOD: delAxis()
+/// Delete an axis from this object's list of axis
+/**
+ * Delete an axis from the object
+ */
+
+Curve&
+Curve::delAxis(const char *name)
+{
+    Array1D *a = NULL;
+    Rp_ChainLink *l = NULL;
+    l = __searchAxisList(name);
+
+    if (l != NULL) {
+        a = (Array1D *) Rp_ChainGetValue(l);
+        delete a;
+        Rp_ChainDeleteLink(_axisList,l);
+    }
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: data()
+/// Return an Axis object's data based on its label
+/**
+ * Return an Axis object's data based on its label
+ */
+
+size_t
+Curve::data(
+    const char *label,
+    const double **arr) const
+{
+    if (arr == NULL) {
+        // arr should not be null
+        return 0;
+    }
+
+    size_t ret = 0;
+    Array1D *a = getAxis(label);
+    if (a != NULL) {
+        *arr = a->data();
+        ret = a->nmemb();
+    }
+    return ret;
+}
+
+/**********************************************************************/
+// METHOD: getAxis()
+/// Return an Axis object based on its label
+/**
+ * Return an Axis object based on its label
+ */
+
+Array1D *
+Curve::getAxis(const char *name) const
+{
+    Rp_ChainLink *l = NULL;
+    l = __searchAxisList(name);
+
+    if (l == NULL) {
+        return NULL;
+    }
+
+    return (Array1D *) Rp_ChainGetValue(l);
+}
+
+Rp_ChainLink *
+Curve::__searchAxisList(const char *name) const
+{
+    if (name == NULL) {
+        return NULL;
+    }
+
+    if (_axisList == NULL) {
+        return NULL;
+    }
+
+    Rp_ChainLink *l = NULL;
+    Path p;
+
+    // traverse the list looking for the match
+    l = Rp_ChainFirstLink(_axisList);
+    while (l != NULL) {
+        Array1D *a = (Array1D *) Rp_ChainGetValue(l);
+        const char *aname = a->name();
+        if ((*name == *aname) && (strcmp(name,aname) == 0)) {
+            // we found matching entry, return it
+            break;
+        }
+        l = Rp_ChainNextLink(l);
+    }
+
+    return l;
+}
+
+/**********************************************************************/
+// METHOD: getNthAxis()
+/// Return the Nth Axis object
+/**
+ * Return the Nth Axis
+ */
+
+Array1D *
+Curve::getNthAxis(size_t n) const
+{
+    Rp_ChainLink *l = NULL;
+    l = Rp_ChainGetNthLink(_axisList,n);
+
+    if (l == NULL) {
+        return NULL;
+    }
+
+    return (Array1D *) Rp_ChainGetValue(l);
+}
+
+/**********************************************************************/
+// METHOD: dims()
+/// Return the dimensionality of the object
+/**
+ * Return the dimensionality of the object
+ */
+
+size_t
+Curve::dims() const
+{
+    return (size_t) Rp_ChainGetLength(_axisList);
+}
+
+/**********************************************************************/
+// METHOD: configure(Rp_ParserXml *p)
+/// construct a number object from the provided tree
+/**
+ * construct a number object from the provided tree
+ */
+
+void
+Curve::configure(size_t as, void *p)
+{
+    if (as == RPCONFIG_XML) {
+        __configureFromXml((const char *)p);
+    } else if (as == RPCONFIG_TREE) {
+        __configureFromTree((Rp_ParserXml *)p);
+    }
+}
+
+/**********************************************************************/
+// METHOD: configureFromXml(const char *xmltext)
+/// configure the object based on Rappture1.1 xmltext
+/**
+ * Configure the object based on the provided xml
+ */
+
+void
+Curve::__configureFromXml(const char *xmltext)
+{
+    if (xmltext == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    Rp_ParserXml *p = Rp_ParserXmlCreate();
+    Rp_ParserXmlParse(p, xmltext);
+    configure(RPCONFIG_TREE, p);
+
+    return;
+}
+
+
+// This is really, __configureFromTree_1.0
+// because it only allows for an xaxis and yaxis
+// and component.xy formated data
+void
+Curve::__configureFromTree(Rp_ParserXml *p)
+{
+    if (p == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    Rp_TreeNode node = Rp_ParserXmlElement(p,NULL);
+
+    Rappture::Path pathObj(Rp_ParserXmlNodePath(p,node));
+
+    path(pathObj.parent());
+    name(Rp_ParserXmlNodeId(p,node));
+
+    pathObj.clear();
+    pathObj.add("about");
+    pathObj.add("label");
+    label(Rp_ParserXmlGet(p,pathObj.path()));
+
+    pathObj.del();
+    pathObj.add("description");
+    desc(Rp_ParserXmlGet(p,pathObj.path()));
+
+
+    Array1D *xaxis = axis(Curve::x,"","","","",NULL,0);
+    pathObj.del();
+    pathObj.del();
+    pathObj.add(Curve::x);
+    pathObj.add("label");
+    xaxis->label(Rp_ParserXmlGet(p,pathObj.path()));
+    pathObj.del();
+    pathObj.add("description");
+    xaxis->desc(Rp_ParserXmlGet(p,pathObj.path()));
+    pathObj.del();
+    pathObj.add("units");
+    xaxis->units(Rp_ParserXmlGet(p,pathObj.path()));
+    pathObj.del();
+    pathObj.add("scale");
+    xaxis->scale(Rp_ParserXmlGet(p,pathObj.path()));
+
+    Array1D *yaxis = axis(Curve::y,"","","","",NULL,0);
+    pathObj.del();
+    pathObj.del();
+    pathObj.add(Curve::y);
+    pathObj.add("label");
+    yaxis->label(Rp_ParserXmlGet(p,pathObj.path()));
+    pathObj.del();
+    pathObj.add("description");
+    yaxis->desc(Rp_ParserXmlGet(p,pathObj.path()));
+    pathObj.del();
+    pathObj.add("units");
+    yaxis->units(Rp_ParserXmlGet(p,pathObj.path()));
+    pathObj.del();
+    pathObj.add("scale");
+    yaxis->scale(Rp_ParserXmlGet(p,pathObj.path()));
+
+    pathObj.del();
+    pathObj.del();
+    pathObj.add("component");
+    pathObj.add("xy");
+    const char *values = Rp_ParserXmlGet(p,pathObj.path());
+
+    double x,y;
+    int n;
+    while (sscanf(values,"%lf%lf%n",&x,&y,&n) == 2) {
+        xaxis->append(&x,1);
+        yaxis->append(&y,1);
+        values += n;
+    }
+
+    return;
+}
+
+/**********************************************************************/
+// METHOD: dump(size_t as, void *p)
+/// construct a number object from the provided tree
+/**
+ * construct a number object from the provided tree
+ */
+
+void
+Curve::dump(size_t as, ClientData p)
+{
+    if (as == RPCONFIG_XML) {
+        __dumpToXml(p);
+    } else if (as == RPCONFIG_TREE) {
+        __dumpToTree(p);
+    }
+}
+
+/**********************************************************************/
+// METHOD: dumpToXml(ClientData p)
+/// configure the object based on Rappture1.1 xmltext
+/**
+ * Configure the object based on the provided xml
+ */
+
+void
+Curve::__dumpToXml(ClientData c)
+{
+    if (c == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    ClientDataXml *d = (ClientDataXml *)c;
+    Rp_ParserXml *parser = Rp_ParserXmlCreate();
+    __dumpToTree(parser);
+    const char *xmltext = Rp_ParserXmlXml(parser);
+    _tmpBuf.appendf("%s",xmltext);
+    Rp_ParserXmlDestroy(&parser);
+    d->retStr = _tmpBuf.bytes();
+}
+
+/**********************************************************************/
+// METHOD: dumpToTree(ClientData p)
+/// dump the object to a Rappture1.1 based tree
+/**
+ * Dump the object to a Rappture1.1 based tree
+ */
+
+void
+Curve::__dumpToTree(ClientData c)
+{
+    if (c == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    Rp_ParserXml *parser = (Rp_ParserXml *)c;
+
+    Path p;
+
+    p.parent(path());
+    p.last();
+
+    p.add("curve");
+    p.id(name());
+
+    p.add("about");
+
+    p.add("group");
+    Rp_ParserXmlPutF(parser,p.path(),"%s",group());
+
+    p.del();
+    p.add("label");
+    Rp_ParserXmlPutF(parser,p.path(),"%s",label());
+
+    p.del();
+    p.add("description");
+    Rp_ParserXmlPutF(parser,p.path(),"%s",desc());
+
+    p.del();
+    p.add("type");
+    Rp_ParserXmlPutF(parser,p.path(),"%s",propstr("type"));
+
+    p.del();
+    p.del();
+
+    const double *dataArr[dims()];
+    size_t nmemb = 0;
+    for (size_t dim = 0; dim < dims(); dim++) {
+        Array1D *a = getNthAxis(dim);
+        nmemb = a->nmemb();
+        dataArr[dim] = a->data();
+        p.add(a->name());
+
+        p.add("label");
+        Rp_ParserXmlPutF(parser,p.path(),"%s",a->label());
+        p.del();
+
+        p.add("description");
+        Rp_ParserXmlPutF(parser,p.path(),"%s",a->desc());
+        p.del();
+
+        p.add("units");
+        Rp_ParserXmlPutF(parser,p.path(),"%s",a->units());
+        p.del();
+
+        p.add("scale");
+        Rp_ParserXmlPutF(parser,p.path(),"%s",a->scale());
+        p.del();
+
+        p.del();
+    }
+
+    SimpleCharBuffer tmpBuf;
+    for (size_t idx=0; idx < nmemb; idx++) {
+        for(size_t dim=0; dim < dims(); dim++) {
+            tmpBuf.appendf("%10g",dataArr[dim][idx]);
+        }
+        tmpBuf.appendf("\n");
+    }
+    p.add("component");
+    p.add("xy");
+    Rp_ParserXmlPutF(parser,p.path(),"%s",tmpBuf.bytes());
+
+    return;
+}
+
+/**********************************************************************/
+// METHOD: is()
+/// what kind of object is this
+/**
+ * return hex value telling what kind of object this is.
+ */
+
+const int
+Curve::is() const
+{
+    // return "curv" in hex
+    return 0x63757276;
+}
+
+
+// -------------------------------------------------------------------- //
+
Index: /tags/1.6.0/src/objects/RpCurve.h
===================================================================
--- /tags/1.6.0/src/objects/RpCurve.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpCurve.h	(revision 6168)
@@ -0,0 +1,76 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <errno.h>
+#include "RpObject.h"
+#include "RpChain.h"
+#include "RpArray1D.h"
+
+#ifndef RAPPTURE_CURVE_H
+#define RAPPTURE_CURVE_H
+
+namespace Rappture {
+
+class Curve : public Object
+{
+    public:
+
+        Curve();
+
+        Curve(const char *name);
+
+        Curve(const char *name, const char *label, const char *desc,
+              const char *group);
+
+        Curve(const Curve& o);
+
+        virtual ~Curve();
+
+        Array1D *axis(const char *name, const char *label, const char *desc,
+                      const char *units, const char *scale, const double *val,
+                      size_t size);
+
+        Curve& delAxis(const char *name);
+
+        size_t data(const char *label, const double **arr) const;
+
+        Array1D *getAxis(const char *name) const;
+        Array1D *getNthAxis(size_t n) const;
+
+        // should be a list of groups to add this curve to?
+        Accessor <const char *> group;
+        size_t dims() const;
+
+        void configure(size_t as, ClientData p);
+        void dump(size_t as, ClientData p);
+
+        const int is() const;
+
+        static const char x[];
+        static const char y[];
+
+    private:
+
+        // hash or linked list of axis
+        Rp_Chain *_axisList;
+
+        Rp_ChainLink *__searchAxisList(const char * name) const;
+
+        void __configureFromXml(const char *p);
+        void __configureFromTree(Rp_ParserXml *p);
+        void __dumpToXml(ClientData c);
+        void __dumpToTree(ClientData c);
+};
+
+
+} // namespace Rappture
+
+/*--------------------------------------------------------------------------*/
+
+#endif // RAPPTURE_CURVE_H
Index: /tags/1.6.0/src/objects/RpHash.c
===================================================================
--- /tags/1.6.0/src/objects/RpHash.c	(revision 6168)
+++ /tags/1.6.0/src/objects/RpHash.c	(revision 6168)
@@ -0,0 +1,1335 @@
+
+/*
+ * bltHash.c --
+ *
+ *
+ * This module implements an in-memory hash table for the BLT
+ * toolkit.  Built upon the Tcl hash table, it adds pool
+ * allocation 64-bit address handling, improved array hash
+ * function.
+ *
+ * Copyright 2001 Silicon Metrics Corporation.
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that the above copyright notice appear in all
+ * copies and that both that the copyright notice and warranty
+ * disclaimer appear in supporting documentation, and that the names
+ * of Lucent Technologies any of their entities not be used in
+ * advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+ *
+ * Silicon Metrics disclaims all warranties with regard to this
+ * software, including all implied warranties of merchantability and
+ * fitness.  In no event shall Lucent Technologies be liable for any
+ * special, indirect or consequential damages or any damages
+ * whatsoever resulting from loss of use, data or profits, whether in
+ * an action of contract, negligence or other tortuous action, arising
+ * out of or in connection with the use or performance of this
+ * software.
+ *
+ * Bob Jenkins, 1996.  hash.c.  Public Domain.
+ * Bob Jenkins, 1997.  lookup8.c.  Public Domain.
+ *
+ * Copyright (c) 1991-1993 The Regents of the University of California.
+ * Copyright (c) 1994 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * RCS: @(#) $Id: bltHash.c,v 1.10 2002/08/09 07:15:18 ghowlett Exp $
+ */
+
+#include <RpInt.h>
+
+#include <stdio.h>
+#include <string.h>
+/* The following header is required for LP64 compilation */
+#include <stdlib.h>
+
+#include "RpHash.h"
+
+/*
+ * When there are this many entries per bucket, on average, rebuild
+ * the hash table to make it larger.
+ */
+
+#define REBUILD_MULTIPLIER  3
+
+#if (SIZEOF_VOID_P == 8)
+#define RANDOM_INDEX        HashOneWord
+#define DOWNSHIFT_START     62
+#else
+
+/*
+ * The following macro takes a preliminary integer hash value and
+ * produces an index into a hash tables bucket list.  The idea is
+ * to make it so that preliminary values that are arbitrarily similar
+ * will end up in different buckets.  The hash function was taken
+ * from a random-number generator.
+ */
+#define RANDOM_INDEX(tablePtr, i) \
+    (((((long) (i))*1103515245) >> (tablePtr)->downShift) & (tablePtr)->mask)
+#define DOWNSHIFT_START     28
+#endif
+
+/*
+ * Procedure prototypes for static procedures in this file:
+ */
+static Rp_Hash HashArray _ANSI_ARGS_((CONST void *key, size_t length));
+static Rp_HashEntry *ArrayFind _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    CONST void *key));
+static Rp_HashEntry *ArrayCreate _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    CONST void *key, int *newPtr));
+static Rp_HashEntry *BogusFind _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    CONST void *key));
+static Rp_HashEntry *BogusCreate _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    CONST void *key, int *newPtr));
+static Rp_Hash HashString _ANSI_ARGS_((CONST char *string));
+static void RebuildTable _ANSI_ARGS_((Rp_HashTable *tablePtr));
+static Rp_HashEntry *StringFind _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    CONST void *key));
+static Rp_HashEntry *StringCreate _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    CONST void *key, int *newPtr));
+static Rp_HashEntry *OneWordFind _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    CONST void *key));
+static Rp_HashEntry *OneWordCreate _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    CONST void *key, int *newPtr));
+
+#if (SIZEOF_VOID_P == 8)
+static Rp_Hash HashOneWord _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    CONST void *key));
+
+#endif /* SIZEOF_VOID_P == 8 */
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * HashString --
+ *
+ *  Compute a one-word summary of a text string, which can be
+ *  used to generate a hash index.
+ *
+ * Results:
+ *  The return value is a one-word summary of the information in
+ *  string.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+static Rp_Hash
+HashString(register CONST char *string) /* String from which to
+                                         * compute hash value. */
+{
+    register Rp_Hash result;
+    register Rp_Hash c;
+
+    /*
+     * I tried a zillion different hash functions and asked many other
+     * people for advice.  Many people had their own favorite functions,
+     * all different, but no-one had much idea why they were good ones.
+     * I chose the one below (multiply by 9 and add new character)
+     * because of the following reasons:
+     *
+     * 1. Multiplying by 10 is perfect for keys that are decimal strings,
+     *    and multiplying by 9 is just about as good.
+     * 2. Times-9 is (shift-left-3) plus (old).  This means that each
+     *    character's bits hang around in the low-order bits of the
+     *    hash value for ever, plus they spread fairly rapidly up to
+     *    the high-order bits to fill out the hash value.  This seems
+     *    to work well both for decimal and non-decimal strings.
+     */
+
+    result = 0;
+    while ((c = *string++) != 0) {
+        result += (result << 3) + c;
+    }
+    return (Rp_Hash)result;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * StringFind --
+ *
+ *	Given a hash table with string keys, and a string key, find
+ *	the entry with a matching key.
+ *
+ * Results:
+ *	The return value is a token for the matching entry in the
+ *	hash table, or NULL if there was no matching entry.
+ *
+ * Side effects:
+ *	None.
+ *
+ *----------------------------------------------------------------------
+ */
+static Rp_HashEntry *
+StringFind(
+    Rp_HashTable *tablePtr, /* Table in which to lookup entry. */
+    CONST void *key)        /* Key to use to find matching entry. */
+{
+    Rp_Hash hval;
+    register Rp_HashEntry *hPtr;
+    size_t hindex;
+
+    hval = HashString((char *)key);
+    hindex = hval & tablePtr->mask;
+
+    /*
+     * Search all of the entries in the appropriate bucket.
+     */
+
+    for (hPtr = tablePtr->buckets[hindex]; hPtr != NULL;
+        hPtr = hPtr->nextPtr) {
+        if (hPtr->hval == hval) {
+            register CONST char *p1, *p2;
+
+            for (p1 = key, p2 = hPtr->key.string; ; p1++, p2++) {
+                if (*p1 != *p2) {
+                    break;
+                }
+                if (*p1 == '\0') {
+                    return hPtr;
+                }
+            }
+        }
+    }
+    return NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * StringCreate --
+ *
+ *  Given a hash table with string keys, and a string key, find
+ *  the entry with a matching key.  If there is no matching entry,
+ *  then create a new entry that does match.
+ *
+ * Results:
+ *  The return value is a pointer to the matching entry.  If this
+ *  is a newly-created entry, then *newPtr will be set to a non-zero
+ *  value;  otherwise *newPtr will be set to 0.  If this is a new
+ *  entry the value stored in the entry will initially be 0.
+ *
+ * Side effects:
+ *  A new entry may be added to the hash table.
+ *
+ *----------------------------------------------------------------------
+ */
+static Rp_HashEntry *
+StringCreate(
+    Rp_HashTable *tablePtr, /* Table in which to lookup entry. */
+    CONST void *key,        /* Key to use to find or create matching
+                             * entry. */
+    int *newPtr)            /* Store info here telling whether a new
+                             * entry was created. */
+{
+    Rp_Hash hval;
+    Rp_HashEntry **bucketPtr;
+    register Rp_HashEntry *hPtr;
+    size_t size, hindex;
+
+    hval = HashString(key);
+    hindex = hval & tablePtr->mask;
+
+    /*
+     * Search all of the entries in this bucket.
+     */
+
+    for (hPtr = tablePtr->buckets[hindex]; hPtr != NULL;
+        hPtr = hPtr->nextPtr) {
+        if (hPtr->hval == hval) {
+            register CONST char *p1, *p2;
+
+            for (p1 = key, p2 = hPtr->key.string; ; p1++, p2++) {
+                if (*p1 != *p2) {
+                    break;
+                }
+                if (*p1 == '\0') {
+                    *newPtr = FALSE;
+                    return hPtr;
+                }
+            }
+        }
+    }
+
+    /*
+     * Entry not found.  Add a new one to the bucket.
+     */
+
+    *newPtr = TRUE;
+    size = sizeof(Rp_HashEntry) + strlen(key) - sizeof(Rp_HashKey) + 1;
+    if (tablePtr->hPool != NULL) {
+        hPtr = Rp_PoolAllocItem(tablePtr->hPool, size);
+    } else {
+        hPtr = Rp_Malloc(size);
+    }
+    bucketPtr = tablePtr->buckets + hindex;
+    hPtr->nextPtr = *bucketPtr;
+    hPtr->hval = hval;
+    hPtr->clientData = 0;
+    strcpy(hPtr->key.string, key);
+    *bucketPtr = hPtr;
+    tablePtr->numEntries++;
+
+    /*
+     * If the table has exceeded a decent size, rebuild it with many
+     * more buckets.
+     */
+
+    if (tablePtr->numEntries >= tablePtr->rebuildSize) {
+        RebuildTable(tablePtr);
+    }
+    return hPtr;
+}
+
+#if (SIZEOF_VOID_P == 8)
+/*
+ *----------------------------------------------------------------------
+ *
+ * HashOneWord --
+ *
+ *  Compute a one-word hash value of a 64-bit word, which then can
+ *  be used to generate a hash index.
+ *
+ *  From Knuth, it's a multiplicative hash.  Multiplies an unsigned
+ *  64-bit value with the golden ratio (sqrt(5) - 1) / 2.  The
+ *  downshift value is 64 - n, when n is the log2 of the size of
+ *  the hash table.
+ *
+ * Results:
+ *  The return value is a one-word summary of the information in
+ *  64 bit word.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+static Rp_Hash
+HashOneWord(
+    Rp_HashTable *tablePtr,
+    CONST void *key)
+{
+    uint64_t a0, a1;
+    uint64_t y0, y1;
+    uint64_t y2, y3;
+    uint64_t p1, p2;
+    uint64_t result;
+    /* Compute key * GOLDEN_RATIO in 128-bit arithmetic */
+    a0 = (uint64_t)key & 0x00000000FFFFFFFF; 
+    a1 = (uint64_t)key >> 32;
+
+    y0 = a0 * 0x000000007f4a7c13;
+    y1 = a0 * 0x000000009e3779b9;
+    y2 = a1 * 0x000000007f4a7c13;
+    y3 = a1 * 0x000000009e3779b9;
+    y1 += y0 >> 32;     /* Can't carry */
+    y1 += y2;           /* Might carry */
+    if (y1 < y2) {
+        y3 += (1LL << 32);  /* Propagate */
+    }
+
+    /* 128-bit product: p1 = loword, p2 = hiword */
+    p1 = ((y1 & 0x00000000FFFFFFFF) << 32) + (y0 & 0x00000000FFFFFFFF);
+    p2 = y3 + (y1 >> 32);
+
+    /* Left shift the value downward by the size of the table */
+    if (tablePtr->downShift > 0) {
+        if (tablePtr->downShift < 64) {
+            result = ((p2 << (64 - tablePtr->downShift)) |
+                      (p1 >> (tablePtr->downShift & 63)));
+        } else {
+            result = p2 >> (tablePtr->downShift & 63);
+        }
+    } else {
+        result = p1;
+    }
+    /* Finally mask off the high bits */
+    return (Rp_Hash)(result & tablePtr->mask);
+}
+
+#endif /* SIZEOF_VOID_P == 8 */
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * OneWordFind --
+ *
+ *  Given a hash table with one-word keys, and a one-word key,
+ *  find the entry with a matching key.
+ *
+ * Results:
+ *  The return value is a token for the matching entry in the
+ *  hash table, or NULL if there was no matching entry.
+ *
+ * Side effects:
+ *  None.
+ *
+ *---------------------------------------------------------------------- 
+ */
+static Rp_HashEntry *
+OneWordFind(
+    Rp_HashTable *tablePtr,     /* Table in which to lookup entry. */
+    register CONST void *key)   /* Key to use to find matching entry. */
+{
+    register Rp_HashEntry *hPtr;
+    size_t hindex;
+
+    hindex = RANDOM_INDEX(tablePtr, key);
+
+    /*
+     * Search all of the entries in the appropriate bucket.
+     */
+    for (hPtr = tablePtr->buckets[hindex]; hPtr != NULL;
+        hPtr = hPtr->nextPtr) {
+        if (hPtr->key.oneWordValue == key) {
+            return hPtr;
+        }
+    }
+    return NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * OneWordCreate --
+ *
+ *  Given a hash table with one-word keys, and a one-word key, find
+ *  the entry with a matching key.  If there is no matching entry,
+ *  then create a new entry that does match.
+ *
+ * Results:
+ *  The return value is a pointer to the matching entry.  If this
+ *  is a newly-created entry, then *newPtr will be set to a non-zero
+ *  value;  otherwise *newPtr will be set to 0.  If this is a new
+ *  entry the value stored in the entry will initially be 0.
+ *
+ * Side effects:
+ *  A new entry may be added to the hash table.
+ *
+ *----------------------------------------------------------------------
+ */
+static Rp_HashEntry *
+OneWordCreate(
+    Rp_HashTable *tablePtr, /* Table in which to lookup entry. */
+    CONST void *key,        /* Key to use to find or create matching
+                             * entry. */
+    int *newPtr)            /* Store info here telling whether a new
+                             * entry was created. */
+{
+    Rp_HashEntry **bucketPtr;
+    register Rp_HashEntry *hPtr;
+    size_t hindex;
+
+    hindex = RANDOM_INDEX(tablePtr, key);
+
+    /*
+     * Search all of the entries in this bucket.
+     */
+    for (hPtr = tablePtr->buckets[hindex]; hPtr != NULL;
+        hPtr = hPtr->nextPtr) {
+        if (hPtr->key.oneWordValue == key) {
+            *newPtr = FALSE;
+            return hPtr;
+        }
+    }
+
+    /*
+     * Entry not found.  Add a new one to the bucket.
+     */
+
+    *newPtr = TRUE;
+    if (tablePtr->hPool != NULL) {
+        hPtr = Rp_PoolAllocItem(tablePtr->hPool, sizeof(Rp_HashEntry));
+    } else {
+        hPtr = Rp_Malloc(sizeof(Rp_HashEntry));
+    }
+    bucketPtr = tablePtr->buckets + hindex;
+    hPtr->nextPtr = *bucketPtr;
+    hPtr->hval = (Rp_Hash)key;
+    hPtr->clientData = 0;
+    hPtr->key.oneWordValue = (void *)key;   /* CONST XXXX */
+    *bucketPtr = hPtr;
+    tablePtr->numEntries++;
+
+    /*
+     * If the table has exceeded a decent size, rebuild it with many
+     * more buckets.
+     */
+
+    if (tablePtr->numEntries >= tablePtr->rebuildSize) {
+        RebuildTable(tablePtr);
+    }
+    return hPtr;
+}
+
+
+#if (SIZEOF_VOID_P == 4)
+/*
+ * --------------------------------------------------------------------
+ *
+ * MIX32 -- 
+ *
+ *      Bob Jenkins, 1996.  Public Domain.
+ *
+ *  Mix 3 32/64-bit values reversibly.  For every delta with one or
+ *  two bit set, and the deltas of all three high bits or all
+ *  three low bits, whether the original value of a,b,c is almost
+ *  all zero or is uniformly distributed, If mix() is run
+ *  forward or backward, at least 32 bits in a,b,c have at least
+ *  1/4 probability of changing.  * If mix() is run forward, every
+ *  bit of c will change between 1/3 and 2/3 of the time.  (Well,
+ *  22/100 and 78/100 for some 2-bit deltas.)  mix() was built out
+ *  of 36 single-cycle latency instructions in a structure that
+ *  could supported 2x parallelism, like so:
+ *
+ *      a -= b;
+ *      a -= c; x = (c>>13);
+ *      b -= c; a ^= x;
+ *      b -= a; x = (a<<8);
+ *      c -= a; b ^= x;
+ *      c -= b; x = (b>>13);
+ *      ...
+ *
+ *   Unfortunately, superscalar Pentiums and Sparcs can't take
+ *   advantage of that parallelism.  They've also turned some of
+ *   those single-cycle latency instructions into multi-cycle
+ *   latency instructions.  Still, this is the fastest good hash I
+ *   could find.  There were about 2^^68 to choose from.  I only
+ *   looked at a billion or so.
+ *
+ * -------------------------------------------------------------------- 
+ */
+#define MIX32(a,b,c) \
+	a -= b, a -= c, a ^= (c >> 13), \
+	b -= c, b -= a, b ^= (a <<  8), \
+	c -= a, c -= b, c ^= (b >> 13), \
+	a -= b, a -= c, a ^= (c >> 12), \
+	b -= c, b -= a, b ^= (a << 16), \
+	c -= a, c -= b, c ^= (b >>  5), \
+	a -= b, a -= c, a ^= (c >>  3), \
+	b -= c, b -= a, b ^= (a << 10), \
+	c -= a, c -= b, c ^= (b >> 15)
+
+#define GOLDEN_RATIO32	0x9e3779b9	/* An arbitrary value */
+
+/*
+ * --------------------------------------------------------------------
+ *
+ * HashArray --
+ *
+ *      Bob Jenkins, 1996.  Public Domain.
+ *
+ *  This works on all machines.  Length has to be measured in
+ *  unsigned longs instead of bytes.  It requires that
+ *
+ *    o The key be an array of unsigned ints.
+ *    o All your machines have the same endianness
+ *    o The length be the number of unsigned ints in the key.
+ *
+ * --------------------------------------------------------------------
+ */
+static Rp_Hash
+HashArray(
+    CONST void *key,
+    size_t length)      /* Length of the key in 32-bit words */
+{
+    register uint32_t a, b, c, len;
+    register uint32_t *arrayPtr = (uint32_t *)key;
+    /* Set up the internal state */
+    len = length;
+    a = b = GOLDEN_RATIO32; /* An arbitrary value */
+    c = 0;                  /* Previous hash value */
+
+    while (len >= 3) {      /* Handle most of the key */
+        a += arrayPtr[0];
+        b += arrayPtr[1];
+        c += arrayPtr[2];
+        MIX32(a, b, c);
+        arrayPtr += 3; len -= 3;
+    }
+    c += length;
+    /* And now the last 2 words */
+    /* Note that all the case statements fall through */
+    switch(len) {
+        /* c is reserved for the length */
+    case 2 : b += arrayPtr[1];
+    case 1 : a += arrayPtr[0];
+        /* case 0: nothing left to add */
+    }
+    MIX32(a, b, c);
+    return (Rp_Hash)c;
+}
+#endif /* SIZEOF_VOID_P == 4 */
+
+#if (SIZEOF_VOID_P == 8)
+
+/* 
+ * --------------------------------------------------------------------
+ *
+ * MIX64 --
+ *
+ *  Bob Jenkins, January 4 1997, Public Domain.  You can use
+ *  this free for any purpose.  It has no warranty.
+ *
+ *  Returns a 64-bit value.  Every bit of the key affects every
+ *  bit of the return value.  No funnels.  Every 1-bit and 2-bit
+ *  delta achieves avalanche.  About 41+5len instructions.
+ *
+ *  The best hash table sizes are powers of 2.  There is no need
+ *  to do mod a prime (mod is sooo slow!).  If you need less than
+ *  64 bits, use a bitmask.  For example, if you need only 10
+ *  bits, do h = (h & hashmask(10)); In which case, the hash table
+ *  should have hashsize(10) elements.
+ *
+ *  By Bob Jenkins, Jan 4 1997.  bob_jenkins@burtleburtle.net.
+ *  You may use this code any way you wish, private, educational,
+ *  or commercial, as long as this whole comment accompanies it.
+ *
+ *  See http://burtleburtle.net/bob/hash/evahash.html
+ *  Use for hash table lookup, or anything where one collision in
+ *  2^^64 * is acceptable.  Do NOT use for cryptographic purposes.
+ *
+ * --------------------------------------------------------------------
+ */
+
+#define MIX64(a,b,c) \
+	a -= b, a -= c, a ^= (c >> 43), \
+	b -= c, b -= a, b ^= (a <<  9), \
+	c -= a, c -= b, c ^= (b >>  8), \
+	a -= b, a -= c, a ^= (c >> 38), \
+	b -= c, b -= a, b ^= (a << 23), \
+	c -= a, c -= b, c ^= (b >>  5), \
+	a -= b, a -= c, a ^= (c >> 35), \
+	b -= c, b -= a, b ^= (a << 49), \
+	c -= a, c -= b, c ^= (b >> 11), \
+	a -= b, a -= c, a ^= (c >> 12), \
+	b -= c, b -= a, b ^= (a << 18), \
+	c -= a, c -= b, c ^= (b >> 22)
+
+#define GOLDEN_RATIO64	0x9e3779b97f4a7c13LL
+
+/*
+ * --------------------------------------------------------------------
+ *
+ * HashArray --
+ *
+ *  Bob Jenkins, January 4 1997, Public Domain.  You can use
+ *  this free for any purpose.  It has no warranty.
+ *
+ *  This works on all machines.  The length has to be measured in
+ *  64 bit words, instead of bytes.  It requires that
+ *
+ *    o The key be an array of 64 bit words (unsigned longs).
+ *    o All your machines have the same endianness.
+ *    o The length be the number of 64 bit words in the key.
+ *
+ * --------------------------------------------------------------------
+ */
+static Rp_Hash
+HashArray(
+    CONST void *key,
+    size_t length)      /* Length of key in 32-bit words. */
+{
+    register uint64_t a, b, c, len;
+    register uint32_t *iPtr = (uint32_t *)key;
+
+#ifdef WORDS_BIGENDIAN
+#define PACK(a,b)   ((uint64_t)(b) | ((uint64_t)(a) << 32))
+#else
+#define PACK(a,b)   ((uint64_t)(a) | ((uint64_t)(b) << 32))
+#endif
+    /* Set up the internal state */
+    len = length;           /* Length is the number of 64-bit words. */
+    a = b = GOLDEN_RATIO64; /* An arbitrary value */
+    c = 0;                  /* Previous hash value */
+
+    while (len >= 6) {      /* Handle most of the key */
+        a += PACK(iPtr[0], iPtr[1]);
+        b += PACK(iPtr[2], iPtr[3]);
+        c += PACK(iPtr[4], iPtr[5]);
+        MIX64(a,b,c);
+        iPtr += 6; len -= 6;
+    }
+    c += length;
+    /* And now the last 2 words */
+    /* Note that all the case statements fall through */
+    switch(len) {
+        /* c is reserved for the length */
+    case 5 :
+    case 4 :
+        a += PACK(iPtr[0], iPtr[1]);
+        b += PACK(iPtr[2], iPtr[3]);
+        iPtr += 4; len -= 4;
+        break;
+    case 3 :
+    case 2 :
+        a += PACK(iPtr[0], iPtr[1]);
+        iPtr += 2; len -= 2;
+ /* case 0: nothing left to add */
+    }
+    if (len > 0) {
+        b += iPtr[0];
+    }
+    MIX64(a,b,c);
+    return (Rp_Hash)c;
+}
+#endif /* SIZEOF_VOID_P == 8 */
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * ArrayFind --
+ *
+ *  Given a hash table with array-of-int keys, and a key, find
+ *  the entry with a matching key.
+ *
+ * Results:
+ *  The return value is a token for the matching entry in the
+ *  hash table, or NULL if there was no matching entry.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+static Rp_HashEntry *
+ArrayFind(
+    Rp_HashTable *tablePtr, /* Table in which to lookup entry. */
+    CONST void *key)        /* Key to use to find matching entry. */
+{
+    Rp_Hash hval;
+    register Rp_HashEntry *hPtr;
+    size_t hindex;
+
+    hval = HashArray(key, tablePtr->keyType);
+    hindex = hval & tablePtr->mask;
+    /*
+     * Search all of the entries in the appropriate bucket.
+     */
+
+    for (hPtr = tablePtr->buckets[hindex]; hPtr != NULL;
+        hPtr = hPtr->nextPtr) {
+        if (hPtr->hval == hval) {
+            register unsigned int *iPtr1, *iPtr2;
+            unsigned int count;
+
+            for (iPtr1 = (uint32_t *)key, iPtr2 = (uint32_t *)hPtr->key.words,
+                 count = tablePtr->keyType; ; count--, iPtr1++, iPtr2++) {
+                if (count == 0) {
+                    return hPtr;
+                }
+                if (*iPtr1 != *iPtr2) {
+                    break;
+                }
+            }
+        }
+    }
+    return NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * ArrayCreate --
+ *
+ *  Given a hash table with one-word keys, and a one-word key, find
+ *  the entry with a matching key.  If there is no matching entry,
+ *  then create a new entry that does match.
+ *
+ * Results:
+ *  The return value is a pointer to the matching entry.  If this
+ *  is a newly-created entry, then *newPtr will be set to a non-zero
+ *  value;  otherwise *newPtr will be set to 0.  If this is a new
+ *  entry the value stored in the entry will initially be 0.
+ *
+ * Side effects:
+ *  A new entry may be added to the hash table.
+ *
+ *----------------------------------------------------------------------
+ */
+static Rp_HashEntry *
+ArrayCreate(
+    Rp_HashTable *tablePtr,     /* Table in which to lookup entry. */
+    register CONST void *key,   /* Key to use to find or create matching
+                                 * entry. */
+    int *newPtr)                /* Store info here telling whether a new
+                                 * entry was created. */
+{
+    Rp_Hash hval;
+    Rp_HashEntry **bucketPtr;
+    int count;
+    register Rp_HashEntry *hPtr;
+    register uint32_t *iPtr1, *iPtr2;
+    size_t size, hindex;
+
+    hval = HashArray(key, tablePtr->keyType);
+    hindex = hval & tablePtr->mask;
+
+    /*
+     * Search all of the entries in the appropriate bucket.
+     */
+    for (hPtr = tablePtr->buckets[hindex]; hPtr != NULL;
+        hPtr = hPtr->nextPtr) {
+        if (hPtr->hval == hval) {
+            for (iPtr1 = (uint32_t *)key, iPtr2 = (uint32_t *)hPtr->key.words,
+                 count = tablePtr->keyType; ; count--, iPtr1++, iPtr2++) {
+                if (count == 0) {
+                    *newPtr = FALSE;
+                    return hPtr;
+                }
+                if (*iPtr1 != *iPtr2) {
+                    break;
+                }
+            }
+        }
+    }
+
+    /*
+     * Entry not found.  Add a new one to the bucket.
+     */
+    *newPtr = TRUE;
+    /* We assume here that the size of the key is at least 2 words */
+    size = sizeof(Rp_HashEntry) + tablePtr->keyType * sizeof(uint32_t) -
+        sizeof(Rp_HashKey);
+    if (tablePtr->hPool != NULL) {
+        hPtr = Rp_PoolAllocItem(tablePtr->hPool, size);
+    } else {
+        hPtr = Rp_Malloc(size);
+    }
+    bucketPtr = tablePtr->buckets + hindex;
+    hPtr->nextPtr = *bucketPtr;
+    hPtr->hval = hval;
+    hPtr->clientData = 0;
+    count = tablePtr->keyType;
+    for (iPtr1 = (uint32_t *)key, iPtr2 = (uint32_t *)hPtr->key.words;
+         count > 0; count--, iPtr1++, iPtr2++) {
+        *iPtr2 = *iPtr1;
+    }
+    *bucketPtr = hPtr;
+    tablePtr->numEntries++;
+
+    /*
+     * If the table has exceeded a decent size, rebuild it with many
+     * more buckets.
+     */
+    if (tablePtr->numEntries >= tablePtr->rebuildSize) {
+        RebuildTable(tablePtr);
+    }
+    return hPtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * BogusFind --
+ *
+ *  This procedure is invoked when an Rp_FindHashEntry is called
+ *  on a table that has been deleted.
+ *
+ * Results:
+ *  If panic returns (which it shouldn't) this procedure returns
+ *  NULL.
+ *
+ * Side effects:
+ *  Generates a panic.
+ *
+ *----------------------------------------------------------------------
+ */
+/* ARGSUSED */
+static Rp_HashEntry *
+BogusFind(
+    Rp_HashTable *tablePtr, /* Table in which to lookup entry. */
+    CONST void *key)        /* Key to use to find matching entry. */
+{
+    Rp_Panic("called Rp_FindHashEntry on deleted table");
+    return NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * BogusCreate --
+ *
+ *  This procedure is invoked when an Rp_CreateHashEntry is called
+ *  on a table that has been deleted.
+ *
+ * Results:
+ *  If panic returns (which it shouldn't) this procedure returns
+ *  NULL.
+ *
+ * Side effects:
+ *  Generates a panic.
+ *
+ *----------------------------------------------------------------------
+ */
+/* ARGSUSED */
+static Rp_HashEntry *
+BogusCreate(
+    Rp_HashTable *tablePtr, /* Table in which to lookup entry. */
+    CONST void *key,        /* Key to use to find or create matching
+                             * entry. */
+    int *newPtr)            /* Store info here telling whether a new
+                             * entry was created. */
+{
+    Rp_Panic("called Rp_CreateHashEntry on deleted table");
+    return NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RebuildTable --
+ *
+ *  This procedure is invoked when the ratio of entries to hash
+ *  buckets becomes too large.  It creates a new table with a
+ *  larger bucket array and moves all of the entries into the
+ *  new table.
+ *
+ * Results:
+ *  None.
+ *
+ * Side effects:
+ *  Memory gets reallocated and entries get re-hashed to new
+ *  buckets.
+ *
+ *----------------------------------------------------------------------
+ */
+static void
+RebuildTable(Rp_HashTable *tablePtr) /* Table to enlarge. */
+{
+    Rp_HashEntry **bucketPtr, **oldBuckets;
+    register Rp_HashEntry **oldChainPtr, **endPtr;
+    register Rp_HashEntry *hPtr, *nextPtr;
+    size_t hindex;
+
+    oldBuckets = tablePtr->buckets;
+    endPtr = tablePtr->buckets + tablePtr->numBuckets;
+    /*
+     * Allocate and initialize the new bucket array, and set up
+     * hashing constants for new array size.
+     */
+    tablePtr->numBuckets <<= 2;
+    tablePtr->buckets = Rp_Calloc(tablePtr->numBuckets,
+                           sizeof(Rp_HashEntry *));
+    tablePtr->rebuildSize <<= 2;
+    tablePtr->downShift -= 2;
+    tablePtr->mask = tablePtr->numBuckets - 1;
+
+    /*
+     * Move all of the existing entries into the new bucket array,
+     * based on their hash values.
+     */
+    if (tablePtr->keyType == RP_ONE_WORD_KEYS) {
+    /*
+     * RP_ONE_WORD_KEYS are handled slightly differently because
+     * they use the current table size (number of buckets) to be
+     * distributed.
+     */
+        for (oldChainPtr = oldBuckets; oldChainPtr < endPtr; oldChainPtr++) {
+            for (hPtr = *oldChainPtr; hPtr != NULL; hPtr = nextPtr) {
+                nextPtr = hPtr->nextPtr;
+                hindex = RANDOM_INDEX(tablePtr, hPtr->key.oneWordValue);
+                bucketPtr = tablePtr->buckets + hindex;
+                hPtr->nextPtr = *bucketPtr;
+                *bucketPtr = hPtr;
+            }
+        }
+    } else {
+        for (oldChainPtr = oldBuckets; oldChainPtr < endPtr; oldChainPtr++) {
+            for (hPtr = *oldChainPtr; hPtr != NULL; hPtr = nextPtr) {
+                nextPtr = hPtr->nextPtr;
+                hindex = hPtr->hval & tablePtr->mask;
+                bucketPtr = tablePtr->buckets + hindex;
+                hPtr->nextPtr = *bucketPtr;
+                *bucketPtr = hPtr;
+            }
+        }
+    }
+
+    /*
+     * Free up the old bucket array, if it was dynamically allocated.
+     */
+    if (oldBuckets != tablePtr->staticBuckets) {
+        Rp_Free(oldBuckets);
+    }
+}
+
+
+/* Public hash table routines */
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_InitHashTable --
+ *
+ *  Given storage for a hash table, set up the fields to prepare
+ *  the hash table for use.
+ *
+ * Results:
+ *  None.
+ *
+ * Side effects:
+ *  TablePtr is now ready to be passed to Rp_FindHashEntry and
+ *  Rp_CreateHashEntry.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_InitHashTable(
+    register Rp_HashTable *tablePtr,    /* Pointer to table record, which
+                                         * is supplied by the caller. */
+    size_t keyType)                     /* Type of keys to use in table. */
+{
+#if (RP_SMALL_HASH_TABLE != 4)
+    Rp_Panic("Rp_InitHashTable: RP_SMALL_HASH_TABLE is %d, not 4\n",
+        RP_SMALL_HASH_TABLE);
+#endif
+    tablePtr->buckets = tablePtr->staticBuckets;
+    tablePtr->numBuckets = RP_SMALL_HASH_TABLE;
+    tablePtr->staticBuckets[0] = tablePtr->staticBuckets[1] = 0;
+    tablePtr->staticBuckets[2] = tablePtr->staticBuckets[3] = 0;
+    tablePtr->numEntries = 0;
+    tablePtr->rebuildSize = RP_SMALL_HASH_TABLE * REBUILD_MULTIPLIER;
+    tablePtr->downShift = DOWNSHIFT_START;
+
+    /* The number of buckets is always a power of 2, so we can
+     * generate the mask by simply subtracting 1 from the number of
+     * buckets. */
+    tablePtr->mask = (Rp_Hash)(tablePtr->numBuckets - 1);
+    tablePtr->keyType = keyType;
+
+    switch (keyType) {
+    case RP_STRING_KEYS:    /* NUL terminated string keys. */
+        tablePtr->findProc = StringFind;
+        tablePtr->createProc = StringCreate;
+        break;
+
+    case RP_ONE_WORD_KEYS:  /* 32 or 64 bit atomic keys. */
+        tablePtr->findProc = OneWordFind;
+        tablePtr->createProc = OneWordCreate;
+        break;
+
+    default:                /* Structures/arrays. */
+        if (keyType == 0) {
+            Rp_Panic("Rp_InitHashTable: Key size can't be %d, must be > 0\n",
+              keyType);
+        }
+        tablePtr->findProc = ArrayFind;
+        tablePtr->createProc = ArrayCreate;
+        break;
+    }
+    tablePtr->hPool = NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_InitHashTableWithPool --
+ *
+ *  Given storage for a hash table, set up the fields to prepare
+ *  the hash table for use.  The only difference between this 
+ *  routine and Rp_InitHashTable is that is uses a pool allocator
+ *  to allocate memory for hash table entries.  The type of pool
+ *  is either fixed or variable size (string) keys.
+ *
+ * Results:
+ *  None.
+ *
+ * Side effects:
+ *  TablePtr is now ready to be passed to Rp_FindHashEntry and
+ *  Rp_CreateHashEntry.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_InitHashTableWithPool(
+    register Rp_HashTable *tablePtr,    /* Pointer to table record, which
+                                         * is supplied by the caller. */
+    size_t keyType)                     /* Type of keys to use in table. */
+{
+    Rp_InitHashTable(tablePtr, keyType);
+    if (keyType == RP_STRING_KEYS) {
+        tablePtr->hPool = Rp_PoolCreate(RP_VARIABLE_SIZE_ITEMS);
+    } else {
+        tablePtr->hPool = Rp_PoolCreate(RP_FIXED_SIZE_ITEMS);
+    }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_DeleteHashEntry --
+ *
+ *  Remove a single entry from a hash table.
+ *
+ * Results:
+ *  None.
+ *
+ * Side effects:
+ *  The entry given by entryPtr is deleted from its table and
+ *  should never again be used by the caller.  It is up to the
+ *  caller to free the clientData field of the entry, if that
+ *  is relevant.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_DeleteHashEntry(
+    Rp_HashTable *tablePtr,
+    Rp_HashEntry *entryPtr)
+{
+    register Rp_HashEntry *prevPtr;
+    Rp_HashEntry **bucketPtr;
+    size_t hindex;
+
+    if (tablePtr->keyType == RP_ONE_WORD_KEYS) {
+        hindex = RANDOM_INDEX(tablePtr, (CONST void *)entryPtr->hval);
+    } else {
+        hindex = (entryPtr->hval & tablePtr->mask);
+    }
+    bucketPtr = tablePtr->buckets + hindex;
+    if (*bucketPtr == entryPtr) {
+        *bucketPtr = entryPtr->nextPtr;
+    } else {
+        for (prevPtr = *bucketPtr; /*empty*/; prevPtr = prevPtr->nextPtr) {
+            if (prevPtr == NULL) {
+                Rp_Panic("malformed bucket chain in Rp_DeleteHashEntry");
+            }
+            if (prevPtr->nextPtr == entryPtr) {
+                prevPtr->nextPtr = entryPtr->nextPtr;
+                break;
+            }
+        }
+    }
+    tablePtr->numEntries--;
+    if (tablePtr->hPool != NULL) {
+        Rp_PoolFreeItem(tablePtr->hPool, (char *)entryPtr);
+    } else {
+        Rp_Free(entryPtr);
+    }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_DeleteHashTable --
+ *
+ *  Free up everything associated with a hash table except for
+ *  the record for the table itself.
+ *
+ * Results:
+ *  None.
+ *
+ * Side effects:
+ *  The hash table is no longer useable.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_DeleteHashTable(Rp_HashTable *tablePtr)	/* Table to delete. */
+{
+    /*
+     * Free up all the entries in the table.
+     */
+    if (tablePtr->hPool != NULL) {
+        Rp_PoolDestroy(tablePtr->hPool);
+        tablePtr->hPool = NULL;
+    } else {
+        register Rp_HashEntry *hPtr, *nextPtr;
+        size_t i;
+
+        for (i = 0; i < tablePtr->numBuckets; i++) {
+            hPtr = tablePtr->buckets[i];
+            while (hPtr != NULL) {
+                nextPtr = hPtr->nextPtr;
+                Rp_Free(hPtr);
+                hPtr = nextPtr;
+            }
+        }
+    }
+
+    /*
+     * Free up the bucket array, if it was dynamically allocated.
+     */
+    if (tablePtr->buckets != tablePtr->staticBuckets) {
+        Rp_Free(tablePtr->buckets);
+    }
+
+    /*
+     * Arrange for panics if the table is used again without
+     * re-initialization.
+     */
+
+    tablePtr->findProc = BogusFind;
+    tablePtr->createProc = BogusCreate;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_FirstHashEntry --
+ *
+ *  Locate the first entry in a hash table and set up a record
+ *  that can be used to step through all the remaining entries
+ *  of the table.
+ *
+ * Results:
+ *  The return value is a pointer to the first entry in tablePtr,
+ *  or NULL if tablePtr has no entries in it.  The memory at
+ *  *searchPtr is initialized so that subsequent calls to
+ *  Rp_NextHashEntry will return all of the entries in the table,
+ *  one at a time.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_HashEntry *
+Rp_FirstHashEntry(
+    Rp_HashTable *tablePtr,         /* Table to search. */
+    Rp_HashSearch *searchPtr)       /* Place to store information about
+                                     * progress through the table. */
+{
+    searchPtr->tablePtr = tablePtr;
+    searchPtr->nextIndex = 0;
+    searchPtr->nextEntryPtr = NULL;
+    return Rp_NextHashEntry(searchPtr);
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_NextHashEntry --
+ *
+ *  Once a hash table enumeration has been initiated by calling
+ *  Rp_FirstHashEntry, this procedure may be called to return
+ *  successive elements of the table.
+ *
+ * Results:
+ *  The return value is the next entry in the hash table being
+ *  enumerated, or NULL if the end of the table is reached.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_HashEntry *
+Rp_NextHashEntry(Rp_HashSearch *searchPtr)
+{
+    Rp_HashEntry *hPtr;
+
+    while (searchPtr->nextEntryPtr == NULL) {
+        if (searchPtr->nextIndex >= searchPtr->tablePtr->numBuckets) {
+            return NULL;
+        }
+        searchPtr->nextEntryPtr =
+                searchPtr->tablePtr->buckets[searchPtr->nextIndex];
+        searchPtr->nextIndex++;
+    }
+    hPtr = searchPtr->nextEntryPtr;
+    searchPtr->nextEntryPtr = hPtr->nextPtr;
+    return hPtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_HashStats --
+ *
+ *  Return statistics describing the layout of the hash table
+ *  in its hash buckets.
+ *
+ * Results:
+ *  The return value is a malloc-ed string containing information
+ *  about tablePtr.  It is the caller's responsibility to free
+ *  this string.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+char *
+Rp_HashStats(Rp_HashTable *tablePtr) /* Table for which to produce stats. */
+{
+#define NUM_COUNTERS 10
+    size_t count[NUM_COUNTERS], overflow, i, j, max;
+    double average, tmp;
+    register Rp_HashEntry *hPtr;
+    Rp_HashEntry **bucketPtr, **endPtr;
+    char *result, *p;
+
+    /*
+     * Compute a histogram of bucket usage.
+     */
+    for (i = 0; i < NUM_COUNTERS; i++) {
+        count[i] = 0;
+    }
+    overflow = 0;
+    average = 0.0;
+    max = 0;
+    endPtr = tablePtr->buckets + tablePtr->numBuckets;
+    for (bucketPtr = tablePtr->buckets; bucketPtr < endPtr; bucketPtr++) {
+        j = 0;
+        for (hPtr = *bucketPtr; hPtr != NULL; hPtr = hPtr->nextPtr) {
+            j++;
+        }
+        if (j > max) {
+            max = j;
+        }
+        if (j < NUM_COUNTERS) {
+            count[j]++;
+        } else {
+            overflow++;
+        }
+        tmp = j;
+        average += (tmp+1.0)*(tmp/tablePtr->numEntries)/2.0;
+    }
+
+    /*
+     * Print out the histogram and a few other pieces of information.
+     */
+    result = Rp_Malloc((unsigned) ((NUM_COUNTERS*60) + 300));
+#if SIZEOF_VOID_P == 8
+    sprintf(result, "%ld entries in table, %ld buckets\n",
+            tablePtr->numEntries, tablePtr->numBuckets);
+#else
+    sprintf(result, "%d entries in table, %d buckets\n",
+            tablePtr->numEntries, tablePtr->numBuckets);
+#endif
+    p = result + strlen(result);
+    for (i = 0; i < NUM_COUNTERS; i++) {
+#if SIZEOF_VOID_P == 8
+        sprintf(p, "number of buckets with %ld entries: %ld\n",
+                i, count[i]);
+#else
+        sprintf(p, "number of buckets with %d entries: %d\n",
+                i, count[i]);
+#endif
+        p += strlen(p);
+    }
+#if SIZEOF_VOID_P == 8
+    sprintf(p, "number of buckets with %d or more entries: %ld\n",
+            NUM_COUNTERS, overflow);
+#else
+    sprintf(p, "number of buckets with %d or more entries: %d\n",
+            NUM_COUNTERS, overflow);
+#endif
+    p += strlen(p);
+    sprintf(p, "average search distance for entry: %.2f\n", average);
+    p += strlen(p);
+#if SIZEOF_VOID_P == 8
+    sprintf(p, "maximum search distance for entry: %ld", max);
+#else
+    sprintf(p, "maximum search distance for entry: %d", max);
+#endif
+    return result;
+}
Index: /tags/1.6.0/src/objects/RpHash.h.in
===================================================================
--- /tags/1.6.0/src/objects/RpHash.h.in	(revision 6168)
+++ /tags/1.6.0/src/objects/RpHash.h.in	(revision 6168)
@@ -0,0 +1,223 @@
+
+/*
+ * bltHash.h --
+ *
+ * Copyright 2001 Silicon Metrics Corporation.
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that the above copyright notice appear in all
+ * copies and that both that the copyright notice and warranty
+ * disclaimer appear in supporting documentation, and that the names
+ * of Lucent Technologies any of their entities not be used in
+ * advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+ *
+ * Silicon Metrics disclaims all warranties with regard to this
+ * software, including all implied warranties of merchantability and
+ * fitness.  In no event shall Lucent Technologies be liable for any
+ * special, indirect or consequential damages or any damages
+ * whatsoever resulting from loss of use, data or profits, whether in
+ * an action of contract, negligence or other tortuous action, arising
+ * out of or in connection with the use or performance of this
+ * software.
+ *
+ * Bob Jenkins, 1996.  hash.c.  Public Domain.
+ * Bob Jenkins, 1997.  lookup8.c.  Public Domain.
+ *
+ * Copyright (c) 1991-1993 The Regents of the University of California.
+ * Copyright (c) 1994 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * RCS: @(#) $Id: bltHash.h.in,v 1.5 2002/07/14 00:08:13 ghowlett Exp $
+ */
+
+#ifndef RP_HASH_H
+#define RP_HASH_H 1
+
+#ifndef RP_INT_H
+#ifndef SIZEOF_LONG
+#define SIZEOF_LONG @SIZEOF_LONG@
+#endif
+#ifndef SIZEOF_LONG_LONG
+#define SIZEOF_LONG_LONG @SIZEOF_LONG_LONG@
+#endif
+#ifndef SIZEOF_INT
+#define SIZEOF_INT @SIZEOF_INT@
+#endif
+#ifndef SIZEOF_VOID_P
+#define SIZEOF_VOID_P @SIZEOF_VOID_P@
+#endif
+#ifndef HAVE_INTTYPES_H
+#if @HAVE_INTTYPES_H@
+#define HAVE_INTTYPES_H 1
+#endif
+#endif
+#endif /* !RP_INT_H */
+
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#else
+#if (SIZEOF_VOID_P == 8)
+#if (SIZEOF_LONG == 8)
+typedef signed long int64_t;
+typedef unsigned long uint64_t;
+#else
+typedef signed long long int64_t;
+typedef unsigned long long uint64_t;
+#endif /* SIZEOF_LONG == 8 */
+#else
+#ifndef __CYGWIN__
+typedef signed int int32_t;
+#endif /* __CYGWIN__ */
+typedef unsigned int uint32_t;
+#endif /* SIZEOF_VOID_P == 8 */
+#endif /* HAVE_INTTYPES_H */
+
+#if (SIZEOF_VOID_P == 8)
+typedef uint64_t Rp_Hash;
+#else
+typedef uint32_t Rp_Hash;
+#endif /* SIZEOF_VOID_P == 8 */
+
+#include "RpPool.h"
+
+/*
+ * Acceptable key types for hash tables:
+ */
+#define RP_STRING_KEYS      0
+#define RP_ONE_WORD_KEYS    ((size_t)-1)
+
+/*
+ * Forward declaration of Rp_HashTable.  Needed by some C++ compilers
+ * to prevent errors when the forward reference to Rp_HashTable is
+ * encountered in the Rp_HashEntry structure.
+ */
+
+#ifdef __cplusplus
+struct Rp_HashTable;
+#endif
+
+typedef union {             /* Key has one of these forms: */
+    void *oneWordValue;     /* One-word value for key. */
+    unsigned long words[1]; /* Multiple integer words for key.
+                             * The actual size will be as large
+                             * as necessary for this table's
+                             * keys. */
+    char string[4];         /* string for key.  The actual size
+                             * will be as large as needed to hold
+                             * the key. */
+} Rp_HashKey;
+
+/*
+ * Structure definition for an entry in a hash table.  No-one outside
+ * Rp should access any of these fields directly;  use the macros
+ * defined below.
+ */
+typedef struct Rp_HashEntry {
+    struct Rp_HashEntry *nextPtr;   /* Pointer to next entry in this
+                                     * hash bucket, or NULL for end of
+                                     * chain. */
+    Rp_Hash hval;
+
+    ClientData clientData;          /* Application stores something here
+                                     * with Rp_SetHashValue. */
+    Rp_HashKey key;                 /* MUST BE LAST FIELD IN RECORD!! */
+} Rp_HashEntry;
+
+/*
+ * Structure definition for a hash table.  Must be in blt.h so clients
+ * can allocate space for these structures, but clients should never
+ * access any fields in this structure.
+ */
+#define RP_SMALL_HASH_TABLE 4
+typedef struct Rp_HashTable {
+    Rp_HashEntry **buckets;         /* Pointer to bucket array.  Each
+                                     * element points to first entry in
+                                     * bucket's hash chain, or NULL. */
+    Rp_HashEntry *staticBuckets[RP_SMALL_HASH_TABLE];
+                                    /* Bucket array used for small tables
+                                     * (to avoid mallocs and frees). */
+    size_t numBuckets;              /* Total number of buckets allocated
+                                     * at **buckets. */
+    size_t numEntries;              /* Total number of entries present
+                                     * in table. */
+    size_t rebuildSize;             /* Enlarge table when numEntries gets
+                                     * to be this large. */
+    Rp_Hash mask;                   /* Mask value used in hashing
+                                     * function. */
+    unsigned int downShift;         /* Shift count used in hashing
+                                     * function.  Designed to use high
+                                     * order bits of randomized keys. */
+    size_t keyType;                 /* Type of keys used in this table.
+                                     * It's either RP_STRING_KEYS,
+                                     * RP_ONE_WORD_KEYS, or an integer
+                                     * giving the number of ints that
+                                     * is the size of the key.
+                                     */
+    Rp_HashEntry *(*findProc) _ANSI_ARGS_((struct Rp_HashTable *tablePtr,
+        CONST void *key));
+    Rp_HashEntry *(*createProc) _ANSI_ARGS_((struct Rp_HashTable *tablePtr,
+        CONST void *key, int *newPtr));
+
+    Rp_Pool hPool;      /* Pointer to the pool allocator used
+                         * for entries in this hash table. If
+                         * NULL, the standard Tcl_Alloc,
+                         * Tcl_Free routines will be used
+                         * instead.
+                         */
+} Rp_HashTable;
+
+/*
+ * Structure definition for information used to keep track of searches
+ * through hash tables:
+ */
+
+typedef struct {
+    Rp_HashTable *tablePtr;         /* Table being searched. */
+    unsigned long nextIndex;        /* Index of next bucket to be
+                                     * enumerated after present one. */
+    Rp_HashEntry *nextEntryPtr;     /* Next entry to be enumerated in the
+                                     * the current bucket. */
+} Rp_HashSearch;
+
+/*
+ * Macros for clients to use to access fields of hash entries:
+ */
+
+#define Rp_GetHashValue(h) ((h)->clientData)
+#define Rp_SetHashValue(h, value) ((h)->clientData = (ClientData)(value))
+#define Rp_GetHashKey(tablePtr, h) \
+    ((void *) (((tablePtr)->keyType == RP_ONE_WORD_KEYS) ? \
+     (void *)(h)->key.oneWordValue : (h)->key.string))
+
+/*
+ * Macros to use for clients to use to invoke find and create procedures
+ * for hash tables:
+ */
+#define Rp_FindHashEntry(tablePtr, key) \
+    (*((tablePtr)->findProc))(tablePtr, key)
+#define Rp_CreateHashEntry(tablePtr, key, newPtr) \
+    (*((tablePtr)->createProc))(tablePtr, key, newPtr)
+
+EXTERN void Rp_InitHashTable _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    size_t keyType));
+
+EXTERN void Rp_InitHashTableWithPool _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    size_t keyType));
+
+EXTERN void Rp_DeleteHashTable _ANSI_ARGS_((Rp_HashTable *tablePtr));
+
+EXTERN void Rp_DeleteHashEntry _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    Rp_HashEntry *entryPtr));
+
+EXTERN Rp_HashEntry *Rp_FirstHashEntry _ANSI_ARGS_((Rp_HashTable *tablePtr,
+    Rp_HashSearch *searchPtr));
+
+EXTERN Rp_HashEntry *Rp_NextHashEntry _ANSI_ARGS_((Rp_HashSearch *srchPtr));
+
+EXTERN char *Rp_HashStats _ANSI_ARGS_((Rp_HashTable *tablePtr));
+
+#endif /* RP_HASH_H */
Index: /tags/1.6.0/src/objects/RpHashHelper.c
===================================================================
--- /tags/1.6.0/src/objects/RpHashHelper.c	(revision 6168)
+++ /tags/1.6.0/src/objects/RpHashHelper.c	(revision 6168)
@@ -0,0 +1,264 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include "RpHashHelper.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+int
+Rp_HashPrint(
+    Rp_HashTable *h)
+{
+    Rp_HashEntry *hEntry = NULL;
+    Rp_HashSearch hSearch;
+    char *k = NULL;
+    char *v = NULL;
+
+    printf("hash table start\n");
+    hEntry = Rp_FirstHashEntry(h,&hSearch);
+    while (hEntry != NULL) {
+        k = (char *) Rp_GetHashKey(h,hEntry);
+        v = (char *) Rp_GetHashValue(hEntry);
+        printf("hentry = :%s->%s:\n",k,v);
+        hEntry = Rp_NextHashEntry(&hSearch);
+    }
+    printf("hash table end\n");
+    return 0;
+}
+
+int
+Rp_HashAddNode(
+    Rp_HashTable *h,
+    const char* key,
+    const void *n)
+{
+    int isNew = 0;
+    Rp_HashEntry *hEntry = NULL;
+
+    hEntry = Rp_CreateHashEntry(h,key,&isNew);
+    if (isNew == 0) {
+        // hash entry is not new
+        // warn user: two vals with the same name
+        // warn("hash entry is not new\n");
+    }
+    Rp_SetHashValue(hEntry,(ClientData)n);
+    return isNew;
+}
+
+/*
+ *  hRslt = h1 U h2
+ */
+
+int
+Rp_HashUnion(
+    Rp_HashTable *hRslt,
+    Rp_HashTable *h1,
+    Rp_HashTable *h2,
+    int (*cpyFxn)(void **to, void *from),
+    int (*cmpFxn) (void *he1, void *he2))
+{
+    Rp_HashSearch hSearch;
+    Rp_HashEntry *hEntry = NULL;
+    void *origKey = NULL;
+    void *origNode = NULL;
+    void *newNode = NULL;
+    void *searchRslt = NULL;
+    int nodesAddedCnt = 0;
+
+    Rp_HashCopy(hRslt,h1,cpyFxn);
+
+    hEntry = Rp_FirstHashEntry(h2,&hSearch);
+    while (hEntry != NULL) {
+        origKey = Rp_GetHashKey(h2,hEntry);
+        origNode = Rp_GetHashValue(hEntry);
+        searchRslt = Rp_HashSearchNode(hRslt,origKey);
+        if (searchRslt == NULL) {
+            // node not in hRslt, add it
+            cpyFxn(&newNode,origNode);
+            Rp_HashAddNode(hRslt,origKey,newNode);
+            nodesAddedCnt++;
+        }
+        hEntry = Rp_NextHashEntry(&hSearch);
+    }
+    return nodesAddedCnt;
+}
+
+/*
+ *  hRslt = h1 - h2
+ */
+
+int
+Rp_HashSubrtact(
+    Rp_HashTable *hRslt,
+    Rp_HashTable *h1,
+    Rp_HashTable *h2,
+    int (*cpyFxn)(void **to, void *from),
+    int (*cmpFxn)(void *he1, void *he2))
+{
+    Rp_HashSearch hSearch;
+    Rp_HashEntry *hEntry = NULL;
+    void *origKey = NULL;
+    void *origNode = NULL;
+    void *newNode = NULL;
+    int nodesAddedCnt = 0;
+
+    hEntry = Rp_FirstHashEntry(h1,&hSearch);
+    while (hEntry != NULL) {
+        origKey = Rp_GetHashKey(h1,hEntry);
+        origNode = Rp_GetHashValue(hEntry);
+        if (Rp_HashSearchNode(h2,origKey) == NULL) {
+            // node not in h2, add it to hRslt
+            cpyFxn(&newNode,origNode);
+            Rp_HashAddNode(hRslt,origKey,newNode);
+            nodesAddedCnt++;
+        }
+        hEntry = Rp_NextHashEntry(&hSearch);
+    }
+    return nodesAddedCnt;
+}
+
+int
+Rp_HashCompare(
+    Rp_HashTable *h1,
+    Rp_HashTable *h2,
+    int (*cmpFxn)(void *n1,void *n2))
+{
+    Rp_HashSearch hSearch;
+    Rp_HashEntry *h1Entry = NULL;
+    Rp_HashEntry *h2Entry = NULL;
+    void *h1Node = NULL;
+    void *h2Key = NULL;
+    void *h2Node = NULL;
+    int compareResult = 0;
+
+    // check the pointer values
+    if ( (h1 == NULL) && (h2 != NULL) ) {
+        return -1;
+    } else if ( (h1 != NULL) && (h2 == NULL) ) {
+        return 1;
+    } else if (h1 == h2) {
+        return 0;
+    }
+
+    // check hash table sizes
+    if (h1->numEntries < h2->numEntries) {
+        return -1;
+    } else if (h1 ->numEntries > h2->numEntries) {
+        return 1;
+    }
+
+    // equal number of entries, have to check each entry.
+
+    h2Entry = Rp_FirstHashEntry(h2,&hSearch);
+    while (h2Entry != NULL) {
+        h2Key = Rp_GetHashKey(h2,h2Entry);
+        h2Node = Rp_GetHashValue(h2Entry);
+        h1Entry = Rp_FindHashEntry(h1,h2Key);
+        if (h1Entry == NULL) {
+            compareResult = -1;
+            break;
+        } else {
+            h1Node = Rp_GetHashValue(h1Entry);
+            compareResult = cmpFxn(h1Node,h2Node);
+            if (compareResult != 0) {
+                break;
+            }
+        }
+        h2Entry = Rp_NextHashEntry(&hSearch);
+    }
+    return compareResult;
+}
+
+
+/*
+ *  forall(i) h1(i) = h2(i) : i E (nodes(h2))
+ *  elements of h2 are copied to h1 regardless of if h1
+ *  already has elements in it.
+ */
+
+int
+Rp_HashCopy(
+    Rp_HashTable *h1,
+    Rp_HashTable *h2,
+    int (*cpyFxn)(void **to,void *from))
+{
+    Rp_HashSearch hSearch;
+    Rp_HashEntry *hEntry = NULL;
+    void *origKey = NULL;
+    void *origNode = NULL;
+    void *newNode = NULL;
+
+    hEntry = Rp_FirstHashEntry(h2,&hSearch);
+    while (hEntry != NULL) {
+        origKey = Rp_GetHashKey(h2,hEntry);
+        origNode = Rp_GetHashValue(hEntry);
+        if (cpyFxn(&newNode,origNode) != 0) {
+            // error while copying
+        }
+        Rp_HashAddNode(h1,origKey,newNode);
+        hEntry = Rp_NextHashEntry(&hSearch);
+    }
+    return 0;
+}
+
+/*
+ * this function will not work for you if you put
+ * entries in the hash table with null data value
+ */
+
+void *
+Rp_HashSearchNode(
+    Rp_HashTable *h,
+    const char *key)
+{
+    Rp_HashEntry *hEntry = NULL;
+    void *n = NULL;
+    hEntry = Rp_FindHashEntry(h,key);
+    if (hEntry != NULL) {
+        n = Rp_GetHashValue(hEntry);
+    }
+    return n;
+}
+
+void *
+Rp_HashRemoveNode(
+    Rp_HashTable *h,
+    const char *key)
+{
+    Rp_HashEntry *hEntry = NULL;
+    void *n = NULL;
+    hEntry = Rp_FindHashEntry(h,key);
+    if (hEntry != NULL) {
+        n = Rp_GetHashValue(hEntry);
+        Rp_DeleteHashEntry(h,hEntry);
+    }
+    return n;
+}
+
+int charCpyFxn(
+    void **to,
+    void *from)
+{
+    size_t len = 0;
+
+    len = strlen((char*)from);
+    *to = (void*) malloc(len*sizeof(char));
+    strcpy((char*)(*to),(char*)from);
+    return 0;
+}
+
+int charCmpFxn(
+    void *to,
+    void *from)
+{
+    return strcmp(to,from);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
Index: /tags/1.6.0/src/objects/RpHashHelper.h
===================================================================
--- /tags/1.6.0/src/objects/RpHashHelper.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpHashHelper.h	(revision 6168)
@@ -0,0 +1,47 @@
+#ifndef _RP_HASH_HELPER_H
+#define _RP_HASH_HELPER_H 1
+
+#include "RpInt.h"
+#include "RpHash.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+int Rp_HashPrint        ( Rp_HashTable *h);
+
+int Rp_HashAddNode      ( Rp_HashTable *h, const char *key, const void *n);
+
+int Rp_HashUnion        ( Rp_HashTable *hRslt,
+                          Rp_HashTable *h1,
+                          Rp_HashTable *h2,
+                          int (*cpyFxn)(void **to, void *from),
+                          int (*cmpFxn) (void *he1, void *he2));
+
+int Rp_HashSubrtact     ( Rp_HashTable *hRslt,
+                          Rp_HashTable *h1,
+                          Rp_HashTable *h2,
+                          int (*cpyFxn)(void **to, void *from),
+                          int (*cmpFxn)(void *he1, void *he2));
+
+int Rp_HashCompare      ( Rp_HashTable *h1,
+                          Rp_HashTable *h2,
+                          int (*cmpFxn)(void *n1,void *n2));
+
+int Rp_HashCopy         ( Rp_HashTable *h1,
+                          Rp_HashTable *h2,
+                          int (*cpyFxn)(void **to,void *from));
+
+void *Rp_HashSearchNode ( Rp_HashTable *h, const char *key);
+
+void *Rp_HashRemoveNode ( Rp_HashTable *h, const char *key);
+
+int charCpyFxn(void **to, void *from);
+int charCmpFxn( void *to, void *from);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _RP_HASH_HELPER_H
Index: /tags/1.6.0/src/objects/RpHistogram.cc
===================================================================
--- /tags/1.6.0/src/objects/RpHistogram.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpHistogram.cc	(revision 6168)
@@ -0,0 +1,443 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 Histogram Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpHistogram.h"
+#include "RpArray1DUniform.h"
+
+using namespace Rappture;
+
+const char Histogram::x[] = "xaxis";
+const char Histogram::y[] = "yaxis";
+
+Histogram::Histogram()
+    : Curve(),
+      _markerList(NULL)
+{}
+
+Histogram::Histogram(double *h, size_t npts)
+    : Curve(),
+      _markerList(NULL)
+{
+    Array1D *y = axis(Histogram::y,"","","","",h,npts);
+    Array1DUniform bins(y->min(),y->max(),y->nmemb());
+    axis(Histogram::x,"","","","",bins.data(),bins.nmemb());
+}
+
+Histogram::Histogram(double *h, size_t npts, double *bins, size_t nbins)
+    : Curve(),
+      _markerList(NULL)
+{
+    axis(Histogram::x,"","","","",bins,nbins);
+    axis(Histogram::y,"","","","",h,npts);
+}
+
+Histogram::Histogram(double *h, size_t npts, double min, double max,
+                     size_t nbins)
+    : Curve(),
+      _markerList(NULL)
+{
+    Array1DUniform bins(min,max,nbins);
+    axis(Histogram::x,"","","","",bins.data(),bins.nmemb());
+    axis(Histogram::y,"","","","",h,npts);
+}
+
+Histogram::Histogram(double *h, size_t npts, double min, double max,
+                     double step)
+    : Curve(),
+      _markerList(NULL)
+{
+    Array1DUniform bins(min,max,step);
+    axis(Histogram::x,"","","","",bins.data(),bins.nmemb());
+    axis(Histogram::y,"","","","",h,npts);
+}
+
+// copy constructor
+Histogram::Histogram(const Histogram& o)
+    : Curve(o),
+      _markerList(NULL)
+{
+    group(o.group());
+
+    if (o._markerList != NULL) {
+        Rp_ChainLink *l = Rp_ChainFirstLink(o._markerList);
+        while (l != NULL) {
+            AxisMarker *a = (AxisMarker *) Rp_ChainGetValue(l);
+            AxisMarker *newAM = new AxisMarker(*a);
+            Rp_ChainAppend(_markerList,(void *)newAM);
+            l = Rp_ChainNextLink(l);
+        }
+    }
+
+}
+
+// default destructor
+Histogram::~Histogram ()
+{
+    // clean up dynamic memory
+    // unallocate the _axisList?
+
+}
+
+/**********************************************************************/
+// METHOD: xaxis()
+/// Define the xaxis properties
+/**
+ * Define the xaxis properties.
+ */
+
+Histogram&
+Histogram::xaxis(const char *label, const char *desc, const char *units)
+{
+    Array1D *a = getAxis(Histogram::x);
+
+    if (a == NULL) {
+        // couldn't find xaxis array, create one
+        a = axis(Histogram::x,label,desc,units,"linear",NULL,0);
+    } else {
+        a->label(label);
+        a->desc(desc);
+        a->units(units);
+    }
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: xaxis()
+/// Define the xaxis properties
+/**
+ * Define the xaxis properties.
+ */
+
+Histogram&
+Histogram::xaxis(const char *label, const char *desc,
+                 const char *units, const double *bins, size_t nBins)
+{
+    Array1D *a = getAxis(Histogram::x);
+
+    if (a == NULL) {
+        // couldn't find xaxis array, create one
+        a = axis(Histogram::x,label,desc,units,"linear",bins,nBins);
+    } else {
+        a->label(label);
+        a->desc(desc);
+        a->units(units);
+        a->clear();
+        a->append(bins,nBins);
+    }
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: xaxis()
+/// Define the xaxis properties
+/**
+ * Define the xaxis properties.
+ */
+
+Histogram&
+Histogram::xaxis(const char *label, const char *desc,
+                 const char *units, double min, double max,
+                 size_t nBins)
+{
+    Array1D *a = getAxis(Histogram::x);
+    Array1DUniform tmp(min,max,nBins);
+
+    if (a == NULL) {
+        // couldn't find xaxis array, create one
+        a = axis(Histogram::x,label,desc,units,"linear",
+                 tmp.data(),tmp.nmemb());
+    } else {
+        a->label(label);
+        a->desc(desc);
+        a->units(units);
+        a->clear();
+        a->append(tmp.data(),tmp.nmemb());
+    }
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: xaxis()
+/// Define the xaxis properties
+/**
+ * Define the xaxis properties.
+ */
+
+Histogram&
+Histogram::xaxis(const char *label, const char *desc,
+                 const char *units, double min, double max,
+                 double step)
+{
+    Array1D *a = getAxis(Histogram::x);
+    Array1DUniform tmp(min,max,step);
+
+    if (a == NULL) {
+        // couldn't find xaxis array, create one
+        a = axis(Histogram::x,label,desc,units,"linear",
+                 tmp.data(),tmp.nmemb());
+    } else {
+        a->label(label);
+        a->desc(desc);
+        a->units(units);
+        a->clear();
+        a->append(tmp.data(),tmp.nmemb());
+    }
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: yaxis()
+/// Define the yaxis properties
+/**
+ * Define the yaxis properties.
+ */
+
+Histogram&
+Histogram::yaxis(const char *label, const char *desc, const char *units)
+{
+    Array1D *a = getAxis(Histogram::y);
+
+    if (a == NULL) {
+        // couldn't find yaxis array, create one
+        a = axis(Histogram::y,label,desc,units,"linear",NULL,0);
+    } else {
+        a->label(label);
+        a->desc(desc);
+        a->units(units);
+    }
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: yaxis()
+/// Define the yaxis properties
+/**
+ * Define the yaxis properties.
+ */
+
+Histogram&
+Histogram::yaxis(const char *label, const char *desc,
+                 const char *units, const double *vals,
+                 size_t nPts)
+{
+    Array1D *a = getAxis(Histogram::y);
+
+    if (a == NULL) {
+        // couldn't find xaxis array, create one
+        a = axis(Histogram::y,label,desc,units,"linear",vals,nPts);
+    } else {
+        a->label(label);
+        a->desc(desc);
+        a->units(units);
+        a->clear();
+        a->append(vals,nPts);
+    }
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: binWidths()
+/// Define the bin widths
+/**
+ * Define the bin widths
+ */
+
+Histogram&
+Histogram::binWidths(const size_t *widths, size_t nbins)
+{
+    // FIXME: we can probably find a better way to do this evenatually
+    // Dont know how to get an array of size_t's in the axis list yet
+    // maybe we store it separately, or Templatize Array1D
+
+    SimpleDoubleBuffer b;
+    if (widths == NULL) {
+        return *this;
+    }
+
+    b.set(nbins);
+    for (size_t i=0; i < nbins; i++) {
+        double val = static_cast<double>(*(widths+i));
+        b.append(&val,1);
+    }
+    axis("binwidths","","","","",b.bytes(),b.nmemb());
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: marker()
+/// Define a new marker
+/**
+ * Define a new marker
+ */
+
+Histogram&
+Histogram::marker(const char *axisName, double at, const char *label,
+                  const char *style)
+{
+    AxisMarker *m = new AxisMarker(axisName,label,style,at);
+
+    if (_markerList == NULL) {
+        _markerList = Rp_ChainCreate();
+        if (_markerList == NULL) {
+            delete m;
+            return *this;
+        }
+    }
+
+    Rp_ChainAppend(_markerList,(void*)m);
+
+    return *this;
+}
+
+/**********************************************************************/
+// METHOD: xml()
+/// Return the xml of the object
+/**
+ * Return the xml of the object
+ */
+
+const char *
+Histogram::xml(size_t indent, size_t tabstop)
+{
+    size_t l1width = indent + tabstop;
+    size_t l2width = indent + (2*tabstop);
+    const char *sp = "";
+
+    Path p(path());
+
+    Array1D *tmpAxis = NULL;
+    size_t nmemb = 0;
+
+    const double *dataArr[dims()];
+
+    _tmpBuf.clear();
+
+    _tmpBuf.appendf(
+"%8$*5$s<histogram id=\"%1$s\">\n\
+%8$*6$s<about>\n\
+%8$*7$s<group>%2$s</group>\n\
+%8$*7$s<label>%3$s</label>\n\
+%8$*7$s<description>%4$s</description>\n\
+%8$*6$s</about>\n",
+        p.id(),group(),label(),desc(),indent,l1width,l2width,sp);
+
+    for (size_t dim=0; dim < dims(); dim++) {
+        tmpAxis = getNthAxis(dim);
+        nmemb = tmpAxis->nmemb();
+        dataArr[dim] = tmpAxis->data();
+        if (strcmp("binwidths",tmpAxis->name()) == 0) {
+            continue;
+        }
+        _tmpBuf.appendf(
+"%8$*6$s<%1$s>\n\
+%8$*7$s<label>%2$s</label>\n\
+%8$*7$s<description>%3$s</description>\n\
+%8$*7$s<units>%4$s</units>\n\
+%8$*7$s<scale>%5$s</scale>\n",
+        tmpAxis->name(), tmpAxis->label(), tmpAxis->desc(),
+        tmpAxis->units(), tmpAxis->scale(),l1width,l2width,sp);
+
+        if (_markerList != NULL) {
+            Rp_ChainLink *l = Rp_ChainFirstLink(_markerList);
+            while (l != NULL) {
+                AxisMarker *m = (AxisMarker *) Rp_ChainGetValue(l);
+                if (strcmp(tmpAxis->name(),m->axisName()) == 0) {
+                    _tmpBuf.append(m->xml(indent+tabstop,tabstop));
+                }
+                l = Rp_ChainNextLink(l);
+            }
+        }
+        _tmpBuf.appendf("%3$*2$s</%1$s>\n",tmpAxis->name(),l1width,sp);
+    }
+
+    _tmpBuf.appendf("%3$*1$s<component>\n%3$*2$s<xhw>\n",l1width,l2width,sp);
+    for (size_t idx=0; idx < nmemb; idx++) {
+        for (size_t dim=0; dim < dims(); dim++) {
+            _tmpBuf.appendf("%10g",dataArr[dim][idx]);
+        }
+        _tmpBuf.append("\n",1);
+    }
+    _tmpBuf.appendf("%4$*3$s</xhw>\n%4$*2$s</component>\n%4$*1$s</curve>",
+        indent,l1width,l2width,sp);
+
+    return _tmpBuf.bytes();
+}
+
+/**********************************************************************/
+// METHOD: is()
+/// what kind of object is this
+/**
+ * return hex value telling what kind of object this is.
+ */
+
+const int
+Histogram::is() const
+{
+    // return "hist" in hex
+    return 0x68697374;
+}
+
+/**********************************************************************/
+// FUNCTION: axisMarkerCpyFxn()
+/// Copy an axisMarker object
+/**
+ * Copy an axisMarker object
+ */
+
+/*
+int
+axisMarkerCpyFxn(void **to, void *from)
+{
+    int retVal = 0;
+    size_t len = 0;
+    char *tmp = NULL;
+    Histogram::axisMarker *totmp = NULL;
+
+    if (from == NULL) {
+        return -1;
+    }
+
+    totmp = new Historgram::axisMarker();
+
+    len = strlen(from->axisName);
+    tmp = new char[len+1];
+    strncpy(tmp,from->axisName,len+1);
+    totmp->axisName = tmp;
+
+    len = strlen(from->label);
+    tmp = new char[len+1];
+    strncpy(tmp,from->label,len+1);
+    totmp->label = tmp;
+
+    len = strlen(from->style);
+    tmp = new char[len+1];
+    strncpy(tmp,from->style,len+1);
+    totmp->style = tmp;
+
+    totmp->at = at;
+
+    *to = totmp;
+
+    return retVal;
+}
+*/
+
+// -------------------------------------------------------------------- //
+
Index: /tags/1.6.0/src/objects/RpHistogram.h
===================================================================
--- /tags/1.6.0/src/objects/RpHistogram.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpHistogram.h	(revision 6168)
@@ -0,0 +1,90 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <errno.h>
+#include "RpCurve.h"
+#include "RpChainHelper.h"
+#include "RpAxisMarker.h"
+
+#ifndef RAPPTURE_HISTOGRAM_H
+#define RAPPTURE_HISTOGRAM_H
+
+namespace Rappture {
+
+class Histogram : public Curve
+{
+    public:
+
+        Histogram();
+
+        Histogram(double *h, size_t npts);
+
+        Histogram(double *h, size_t npts, double *bins, size_t nbins);
+
+        Histogram(double *h, size_t npts, double min, double max,
+                  size_t nbins);
+
+        Histogram(double *h, size_t npts, double min, double max,
+                  double step);
+
+        Histogram(const Histogram& o);
+
+        virtual ~Histogram();
+
+        Histogram& xaxis(const char *label, const char *desc,
+                         const char *units);
+
+        Histogram& xaxis(const char *label, const char *desc,
+                         const char *units, const double *bins,
+                         size_t nBins);
+
+        Histogram& xaxis(const char *label, const char *desc,
+                         const char *units, double min, double max,
+                         size_t nBins);
+
+        Histogram& xaxis(const char *label, const char *desc,
+                         const char *units, double min, double max,
+                         double step);
+
+        Histogram& yaxis(const char *label, const char *desc,
+                         const char *units);
+
+        Histogram& yaxis(const char *label, const char *desc,
+                         const char *units, const double *vals,
+                         size_t nPts);
+
+        Histogram& binWidths(const size_t *widths, size_t nbins);
+
+        Histogram& marker(const char *axisName, double at,
+                          const char *label, const char *style);
+
+        // should be a list of groups to add this curve to?
+        Accessor <const char *> group;
+
+        static const char x[];
+        static const char y[];
+
+        size_t nbins(void) const;
+
+        const char *xml(size_t indent, size_t tabstop);
+        const int is(void) const;
+
+        friend int axisMarkerCpyFxn (void **to, void *from);
+
+    protected:
+
+        Rp_Chain *_markerList;
+
+};
+
+} // namespace Rappture
+
+/*--------------------------------------------------------------------------*/
+
+#endif // RAPPTURE_HISTOGRAM_H
Index: /tags/1.6.0/src/objects/RpInt.h
===================================================================
--- /tags/1.6.0/src/objects/RpInt.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpInt.h	(revision 6168)
@@ -0,0 +1,297 @@
+
+/*
+ * bltInt.h --
+ *
+ * Copyright 1993-1998 Lucent Technologies, Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that the above copyright notice appear in all
+ * copies and that both that the copyright notice and warranty
+ * disclaimer appear in supporting documentation, and that the names
+ * of Lucent Technologies any of their entities not be used in
+ * advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+ *
+ * Lucent Technologies disclaims all warranties with regard to this
+ * software, including all implied warranties of merchantability and
+ * fitness.  In no event shall Lucent Technologies be liable for any
+ * special, indirect or consequential damages or any damages
+ * whatsoever resulting from loss of use, data or profits, whether in
+ * an action of contract, negligence or other tortuous action, arising
+ * out of or in connection with the use or performance of this
+ * software.
+ */
+
+#ifndef _RP_INT_H
+#define _RP_INT_H
+
+// #define USE_NON_CONST
+
+#include <stdio.h>
+#include <assert.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <ctype.h>
+#include <memory.h>
+#include <unistd.h>
+#include <limits.h>
+
+// keep this commented until i fix the autoheader setup to
+// automatically #define these
+//
+// #include "bltConfig.h"
+//#ifdef HAVE_STDLIB_H
+//#include <stdlib.h>
+//#endif /* HAVE_STDLIB_H */
+//
+//#ifdef HAVE_STRING_H
+//#include <string.h>
+//#endif /* HAVE_STRING_H */
+//
+//#ifdef HAVE_ERRNO_H
+//#include <errno.h>
+//#endif /* HAVE_ERRNO_H */
+//
+//#ifdef HAVE_CTYPE_H
+//#include <ctype.h>
+//#endif /* HAVE_CTYPE_H */
+//
+//#ifdef HAVE_MEMORY_H
+//#include <memory.h>
+//#endif /* HAVE_MEMORY_H */
+//
+//#ifdef HAVE_UNISTD_H
+//#include <unistd.h>
+//#endif /* HAVE_UNISTD_H */
+//
+//#ifdef HAVE_LIMITS_H
+//#include <limits.h>
+//#endif
+
+#define RP_OK       0
+#define RP_ERROR    1
+#define RP_RETURN   2
+#define RP_BREAK    3
+#define RP_CONTINUE 4
+
+#ifndef _CLIENTDATA
+#   ifndef NO_VOID
+    typedef void *ClientData;
+#   else
+    typedef int *ClientData;
+#   endif
+#   define _CLIENTDATA
+
+#ifndef NO_CONST
+#   define CONST const
+#else
+#   define CONST
+#endif
+
+/*
+#ifndef _ANSI_ARGS_
+#   define _ANSI_ARGS_(x)       ()
+#endif
+*/
+
+#ifndef _ANSI_ARGS_
+#if defined(__STDC__) || defined(__cplusplus)
+#   define _ANSI_ARGS_(x)       x
+#else
+#   define _ANSI_ARGS_(x)       ()
+#endif
+#endif
+
+
+#endif
+#undef INLINE
+#ifdef __GNUC__
+#define INLINE inline
+#else
+#define INLINE
+#endif
+// #undef EXPORT
+// #define EXPORT
+
+#ifndef EXPORT
+#define EXPORT
+#endif
+
+#undef EXTERN
+
+#ifdef __cplusplus
+#   define EXTERN extern "C" EXPORT
+#else
+#   define EXTERN extern EXPORT
+#endif
+
+
+#undef VARARGS
+#ifdef __cplusplus
+#define ANYARGS (...)
+#define VARARGS(first)  (first, ...)
+#define VARARGS2(first, second)  (first, second, ...)
+#else
+#define ANYARGS ()
+#define VARARGS(first) ()
+#define VARARGS2(first, second) ()
+#endif /* __cplusplus */
+
+#undef MIN
+#define MIN(a,b)    (((a)<(b))?(a):(b))
+
+#undef MAX
+#define MAX(a,b)    (((a)>(b))?(a):(b))
+
+#undef MIN3
+#define MIN3(a,b,c) (((a)<(b))?(((a)<(c))?(a):(c)):(((b)<(c))?(b):(c)))
+
+#undef MAX3
+#define MAX3(a,b,c) (((a)>(b))?(((a)>(c))?(a):(c)):(((b)>(c))?(b):(c)))
+
+#define TRUE    1
+#define FALSE   0
+
+/*
+ * The macro below is used to modify a "char" value (e.g. by casting
+ * it to an unsigned character) so that it can be used safely with
+ * macros such as isspace.
+ */
+#define UCHAR(c) ((unsigned char) (c))
+
+#undef panic
+#define panic(mesg) Rp_Panic("%s:%d %s", __FILE__, __LINE__, (mesg))
+
+/*
+ * Since the Tcl/Tk distribution doesn't perform any asserts, dynamic
+ * loading can fail to find the __assert function.  As a workaround,
+ * we'll include our own.
+ */
+#undef  assert
+#ifdef  NDEBUG
+    #define assert(EX) ((void)0)
+#else
+    extern void Rp_Assert _ANSI_ARGS_((char *expr, char *file, int line));
+    #ifdef __STDC__
+        #define assert(EX) (void)((EX) || (Rp_Assert(#EX, __FILE__, __LINE__), 0))
+    #else
+        #define assert(EX) (void)((EX) || (Rp_Assert("EX", __FILE__, __LINE__), 0))
+    #endif /* __STDC__ */
+
+#endif /* NDEBUG */
+
+/*
+ * ----------------------------------------------------------------------
+ *
+ *  Assume we need to declare free if there's no stdlib.h or malloc.h
+ *
+ * ----------------------------------------------------------------------
+ */
+#if !defined(HAVE_STDLIB_H) && !defined(HAVE_MALLOC_H)
+extern void free _ANSI_ARGS_((void *));
+#endif
+
+extern int Rp_DictionaryCompare _ANSI_ARGS_((char *s1, char *s2));
+
+extern void Rp_Panic _ANSI_ARGS_((const char *format, ...));
+
+
+/* ---------------------------------------------------------------- */
+
+typedef int (QSortCompareProc) _ANSI_ARGS_((const void *, const void *));
+
+/*
+ * -------------------------------------------------------------------
+ *
+ * Point2D --
+ *
+ *	2-D coordinate.
+ *
+ * -------------------------------------------------------------------
+ */
+typedef struct {
+    double x, y;
+} Point2D;
+
+/*
+ * -------------------------------------------------------------------
+ *
+ * Point3D --
+ *
+ *	3-D coordinate.
+ *
+ * -------------------------------------------------------------------
+ */
+typedef struct {
+    double x, y, z;
+} Point3D;
+
+/*
+ * -------------------------------------------------------------------
+ *
+ * Segment2D --
+ *
+ *	2-D line segment.
+ *
+ * -------------------------------------------------------------------
+ */
+typedef struct {
+    Point2D p, q;		/* The two end points of the segment. */
+} Segment2D;
+
+/*
+ * -------------------------------------------------------------------
+ *
+ * Dim2D --
+ *
+ *	2-D dimension.
+ *
+ * -------------------------------------------------------------------
+ */
+typedef struct {
+    short int width, height;
+} Dim2D;
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Region2D --
+ *
+ *      2-D region.  Used to copy parts of images.
+ *
+ *----------------------------------------------------------------------
+ */
+typedef struct {
+    int left, right, top, bottom;
+} Region2D;
+
+#define RegionWidth(r)      ((r)->right - (r)->left + 1)
+#define RegionHeight(r)     ((r)->bottom - (r)->top + 1)
+
+typedef struct {
+    double left, right, top, bottom;
+} Extents2D;
+
+typedef struct {
+    double left, right, top, bottom, front, back;
+} Extents3D;
+
+#define PointInRegion(e,x,y) \
+    (((x) <= (e)->right) && ((x) >= (e)->left) && \
+     ((y) <= (e)->bottom) && ((y) >= (e)->top))
+
+#define PointInRectangle(r,x0,y0) \
+    (((x0) <= (int)((r)->x + (r)->width - 1)) && ((x0) >= (int)(r)->x) && \
+     ((y0) <= (int)((r)->y + (r)->height - 1)) && ((y0) >= (int)(r)->y))
+
+
+#define Rp_Malloc malloc
+#define Rp_Calloc calloc
+#define Rp_Realloc realloc
+#define Rp_Free free
+#define Rp_Strdup strdup
+
+#endif /*_RP_INT_H*/
Index: /tags/1.6.0/src/objects/RpLibObj.cc
===================================================================
--- /tags/1.6.0/src/objects/RpLibObj.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpLibObj.cc	(revision 6168)
@@ -0,0 +1,319 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture Library Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "expat.h"
+#include "RpParserXML.h"
+#include "RpLibObj.h"
+#include "RpBuffer.h"
+#include "RpEntityRef.h"
+#include "RpEncode.h"
+#include "RpTree.h"
+
+#include "RpNumber.h"
+
+#include <stdlib.h>
+#include <time.h>
+#include <cctype>
+#include <fstream>
+
+using namespace Rappture;
+
+Library::Library ()
+{
+    __libInit();
+}
+
+Library::~Library ()
+{
+    __libFree();
+}
+
+void
+Library::__libInit()
+{
+    _status.addContext("Rappture::Library::__libInit");
+    return;
+}
+
+void
+Library::__libFree()
+{
+    return;
+}
+
+Outcome &
+Library::loadXml (const char *xmltext)
+{
+    Rp_ParserXml *p = NULL;
+
+    _status.addContext("Rappture::Library::loadXml");
+
+    if (xmltext == NULL) {
+        _status.addError("xmltext was NULL");
+        return _status;
+    }
+
+    // parse xml file
+    p = Rp_ParserXmlCreate();
+    if (p == NULL) {
+        _status.addError("error while creating xml parser");
+        return _status;
+    }
+    Rp_ParserXmlParse(p, xmltext);
+    // FIXME: add error check for Rp_ParserXmlParse
+
+    //_objStorage.backup();
+    _objStorage.clear();
+    __parseTree2ObjectList(p);
+    /*
+    if (!_status) {
+        _objStorage.save();
+    } else {
+        _objStorage.restore()
+    }
+    */
+
+    return _status;
+}
+
+Outcome &
+Library::loadFile (const char *filename)
+{
+    _status.addContext("Rappture::Library::loadFile");
+
+    // load xml file
+    Rappture::Buffer fileBuf;
+    if (!fileBuf.load(_status, filename)) {
+        return _status;
+    }
+
+    // null terminate string holding file
+    fileBuf.append("\0",1);
+
+    loadXml(fileBuf.bytes());
+
+    return _status;
+}
+
+Library &
+Library::value (
+    const char *key,
+    void *storage,
+    size_t numHints,
+    ...)
+{
+    _status.addContext("Rappture::Library::value");
+    Rappture::Object *o = _objStorage.find(key);
+
+    if (o == NULL) {
+        _status.addError("Error while retrieving object "
+            "with key \"%s\": object does not exist", key);
+        return *this;
+    }
+
+    va_list arg;
+
+    va_start(arg,numHints);
+    o->vvalue(storage,numHints,arg);
+    _status = o->outcome();
+    va_end(arg);
+
+    return *this;
+}
+
+const char *
+Library::xml() const
+{
+    _status.addContext("Rappture::Library::xml");
+    Rp_ParserXml *p = Rp_ParserXmlCreate();
+    Rp_ChainLink *l = NULL;
+
+    const Rp_Chain *objList = _objStorage.contains();
+
+    l = Rp_ChainFirstLink(objList);
+
+    while (l != NULL) {
+        Rappture::Object *o = (Rappture::Object *) Rp_ChainGetValue(l);
+        if (o != NULL) {
+            // FIXME: we can remove the if statement when
+            // LibraryStorage is fixed to clean up holes
+            // in the object chain.
+            o->dump(RPCONFIG_TREE,(ClientData)p);
+        }
+        l = Rp_ChainNextLink(l);
+    }
+
+    return Rp_ParserXmlXml(p);
+}
+
+void
+Library::__parseTree2ObjectList(Rp_ParserXml *p)
+{
+    _status.addContext("Rappture::Library::__parseTree2ObjectList");
+
+    if (p == NULL) {
+        _status.addError("parser is NULL");
+        return;
+    }
+
+    Rp_Chain *children = Rp_ChainCreate();
+
+    // parse out the tool information
+    // Rp_ParserXmlChildren(p, "tool", NULL, children);
+    // if there is a child called tool, grab its
+    //      title                   char *
+    //      about                   char *
+    //      command                 char *
+    //      limits.cputime          double
+    //      layout                  char *
+    //      control                 char *
+    //      analyzer                char *
+    //      reportJobFailures       int
+
+    // get the children nodes of "input", and "output"
+    Rp_ParserXmlChildren(p, "input", NULL, children);
+    Rp_ParserXmlChildren(p, "output", NULL, children);
+
+    Rp_ChainLink *l = Rp_ChainFirstLink(children);
+    while (l != NULL) {
+        Rp_TreeNode child = (Rp_TreeNode) Rp_ChainGetValue(l);
+        const char *label = Rp_TreeNodeLabel(child);
+
+        Rp_ParserXmlBaseNode(p,child);
+
+        // find the correct object to create
+        // Rappture::Object *nobj = NULL;
+        if (('n' == *label) && (strcmp(label,"number") == 0)) {
+            Rappture::Number *obj = new Rappture::Number();
+            obj->configure(RPCONFIG_TREE,(void*)p);
+            _objStorage.store(obj->name(),obj);
+            _objStorage.link(obj->name(),obj->path());
+            // Rp_ChainAppend(retObjList,(void*)obj);
+
+        // FIXME: add code to check for strings, choices,
+        //        groups, curves, notes, images, molecules...
+        //        all of the rappture object types
+        } else {
+            _status.addError("unrecognized object type: %s",label);
+        }
+
+        l = Rp_ChainNextLink(l);
+    }
+
+    // FIXME: should return the base node to the previous base
+    Rp_ParserXmlBaseNode(p,NULL);
+
+    return;
+}
+
+
+
+Outcome &
+Library::outcome() const
+{
+    return _status;
+}
+
+int
+Library::error() const
+{
+    return (int) _status;
+}
+
+/*
+Outcome &
+Library::result(int status)
+{
+    Rappture::SimpleCharBuffer tmpBuf;
+    std::fstream file;
+    const char *xmlText = NULL;
+    time_t t = 0;
+    struct tm* timeinfo = NULL;
+    timestamp = "";
+    std::string username = "";
+    std::string hostname = "";
+    char *user = NULL;
+
+    tmpBuf.appendf("run%i.xml",(int)time(&t));
+    file.open(tmpBuf.bytes(),std::ios::out);
+
+//    put("tool.version.rappture.revision",
+//        "$LastChangedRevision: 1527 $");
+//    put("tool.version.rappture.modified",
+//        "$LastChangedDate: 2009-06-22 15:38:49 -0400"
+//        " (Mon, 22 Jun 2009) $");
+//    if ( "" == get("tool.version.rappture.language") ) {
+//        put("tool.version.rappture.language","c++");
+//    }
+
+    // generate a timestamp for the run file
+    timeinfo = localtime(&t);
+    timestamp = std::string(ctime(&t));
+    // erase the 24th character because it is a newline
+    timestamp.erase(24);
+    // concatinate the timezone
+    timestamp.append(" ");
+#ifdef _WIN32
+    timestamp.append(_tzname[_daylight]);
+    // username is left blank for windows because i dont know
+    // how to retrieve username on win32 environment.
+    username = "";
+    hostname = "";
+#else
+    timestamp.append(timeinfo->tm_zone);
+    user = getenv("USER");
+    if (user != NULL) {
+        username = std::string(user);
+    } else {
+        user = getenv("LOGNAME");
+        if (user != NULL) {
+            username = std::string(user);
+        }
+    }
+#endif
+
+    // add the timestamp to the run file
+//    put("output.time", timestamp);
+//    put("output.status",exitStatus);
+//    put("output.user",username);
+//    put("output.host",hostname);
+
+    if ( file.is_open() ) {
+        xmlText = xml();
+        if (xmlText == NULL) {
+        }
+        file << xmlText;
+        // check to make sure there were no
+        // errors while writing the run.xml file.
+        if (   (!file.good())
+            || (strlen(xmlText) != ((long)file.tellp()-(long)1))
+           ) {
+             status.error("Error while writing run file");
+             status.addContext("RpLibrary::result()");
+        }
+        file.close();
+    }
+    else {
+        status.error("Error while opening run file");
+        status.addContext("RpLibrary::result()");
+    }
+    std::printf("=RAPPTURE-RUN=>%s\n",outputFile.bytes());
+}
+*/
+
+const Rp_Chain *
+Library::contains() const
+{
+    return _objStorage.contains();
+}
+
Index: /tags/1.6.0/src/objects/RpLibObj.h
===================================================================
--- /tags/1.6.0/src/objects/RpLibObj.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpLibObj.h	(revision 6168)
@@ -0,0 +1,79 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture Library Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RP_LIBRARY_H
+#define _RP_LIBRARY_H
+
+enum RP_LIBRARY_CONSTS {
+    RPLIB_OVERWRITE     = 0,
+    RPLIB_APPEND        = 1,
+    RPLIB_NO_TRANSLATE  = 0,
+    RPLIB_TRANSLATE     = 1,
+    RPLIB_NO_COMPRESS   = 0,
+    RPLIB_COMPRESS      = 1,
+};
+
+
+#ifdef __cplusplus
+
+#include "RpOutcome.h"
+#include "RpInt.h"
+#include "RpChain.h"
+#include "RpParserXML.h"
+#include "RpLibStorage.h"
+#include <cstdarg>
+
+namespace Rappture {
+
+class Library
+{
+    public:
+        Library();
+        // Library(const Library& o);
+        virtual ~Library();
+
+        Outcome &loadXml(const char *xmltext);
+        Outcome &loadFile(const char *filename);
+
+
+        Library &value(const char *key, void *storage,
+            size_t numHints, ...);
+
+        // Rp_Chain *diff(Library *lib);
+
+        // Library &remove (const char *key);
+
+        const char *xml() const;
+
+        Outcome &outcome() const;
+        int error() const;
+
+        // Outcome &result(int status);
+
+        const Rp_Chain *contains() const;
+    private:
+        LibraryStorage _objStorage;
+        mutable Outcome _status;
+
+        void __libInit();
+        void __libFree();
+        void __parseTree2ObjectList(Rp_ParserXml *p);
+
+}; // end class Library
+
+} // end namespace Rappture
+
+
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RP_LIBRARY_H
Index: /tags/1.6.0/src/objects/RpLibStorage.cc
===================================================================
--- /tags/1.6.0/src/objects/RpLibStorage.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpLibStorage.cc	(revision 6168)
@@ -0,0 +1,231 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture Library Storage Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpLibStorage.h"
+#include "RpHashHelper.h"
+
+#include <stdlib.h>
+
+using namespace Rappture;
+
+#define RP_LIBSTORE_FIND    0
+#define RP_LIBSTORE_REMOVE  1
+
+LibraryStorage::LibraryStorage ()
+{
+    _objList = NULL;
+    _objNameHash = NULL;
+
+    __libStoreInit();
+}
+
+LibraryStorage::~LibraryStorage ()
+{
+    __libStoreFree();
+
+    _objList = NULL;
+    _objNameHash = NULL;
+}
+
+void
+LibraryStorage::__libStoreInit()
+{
+    _status.addContext("Rappture::LibraryStorage::__libStoreInit");
+
+    _objList = Rp_ChainCreate();
+    if (_objList == NULL) {
+        _status.addError("Error while allocating space for list");
+    }
+
+    _objNameHash = (Rp_HashTable*) malloc(sizeof(Rp_HashTable));
+    if (_objNameHash == NULL) {
+        _status.addError("Error while allocating space for hash table");
+    } else {
+        Rp_InitHashTable(_objNameHash,RP_STRING_KEYS);
+    }
+
+    return;
+}
+
+void
+LibraryStorage::__libStoreFree()
+{
+    _status.addContext("Rappture::LibraryStorage::__libStoreFree");
+
+    if (_objList != NULL) {
+        Rp_ChainLink *l = NULL;
+        Rappture::Object *objVal = NULL;
+        l = Rp_ChainFirstLink(_objList);
+        while(l) {
+            objVal = (Rappture::Object *) Rp_ChainGetValue(l);
+            delete objVal;
+            objVal = NULL;;
+            l = Rp_ChainNextLink(l);
+        }
+        Rp_ChainDestroy(_objList);
+        _objList = NULL;
+    }
+
+    if (_objNameHash != NULL) {
+        // we dont need to delete the hash table entries because
+        // they point into the chain and the chain has already
+        // deleted the objects.
+
+        Rp_DeleteHashTable(_objNameHash);
+        free(_objNameHash);
+        _objNameHash = NULL;
+    }
+    return;
+}
+
+/*
+Outcome &
+LibraryStorage::backup ()
+{
+    _status.addContext("Rappture::LibraryStorage::backup");
+
+    return _status;
+}
+
+Outcome &
+LibraryStorage::restore ()
+{
+    _status.addContext("Rappture::LibraryStorage::restore");
+
+    return _status;
+}
+*/
+
+Outcome &
+LibraryStorage::store (const char *key, Rappture::Object *o)
+{
+    _status.addContext("Rappture::LibraryStorage::store");
+
+    if (key == NULL) {
+        return _status;
+    }
+
+    if (o == NULL) {
+        return _status;
+    }
+
+    Rp_ChainLink *l = Rp_ChainAppend(_objList, (ClientData)o);
+    if (l == NULL) {
+        _status.addError("Error appending object to list");
+        return _status;
+    }
+
+    Rp_HashAddNode(_objNameHash, key, (ClientData)l);
+
+    return _status;
+}
+
+Outcome &
+LibraryStorage::link (const char *oldkey, const char *newkey)
+{
+    _status.addContext("Rappture::LibraryStorage::link");
+
+    if (oldkey == NULL) {
+        return _status;
+    }
+
+    if (newkey == NULL) {
+        return _status;
+    }
+
+    Rp_HashEntry *hEntry = Rp_FindHashEntry(_objNameHash,oldkey);
+    if (hEntry != NULL) {
+        Rp_ChainLink *l = (Rp_ChainLink *) Rp_GetHashValue(hEntry);
+        if (l != NULL) {
+            Rp_HashAddNode(_objNameHash, newkey, (ClientData)l);
+        }
+    }
+
+    return _status;
+}
+
+Rappture::Object *
+LibraryStorage::find (const char *key)
+{
+    _status.addContext("Rappture::LibraryStorage::find");
+    return __find(key,RP_LIBSTORE_FIND);
+}
+
+Rappture::Object *
+LibraryStorage::remove (const char *key)
+{
+    _status.addContext("Rappture::LibraryStorage::remove");
+    return __find(key,RP_LIBSTORE_REMOVE);
+}
+
+Rappture::Object *
+LibraryStorage::__find(const char *key, size_t flags)
+{
+    _status.addContext("Rappture::LibraryStorage::__find");
+
+    if (key == NULL) {
+        return NULL;
+    }
+
+    Rappture::Object *o = NULL;
+
+    Rp_HashEntry *hEntry = Rp_FindHashEntry(_objNameHash,key);
+    if (hEntry != NULL) {
+        Rp_ChainLink *l = (Rp_ChainLink *) Rp_GetHashValue(hEntry);
+        if (l != NULL) {
+            // chain link exists, try to return its data
+            o = (Rappture::Object *) Rp_ChainGetValue(l);
+            if (o == NULL) {
+                // invalid data in the chain, set remove flag
+                flags |= RP_LIBSTORE_REMOVE;
+            }
+
+            if (RP_LIBSTORE_REMOVE & flags) {
+                // remove flag set
+                // remove it from the chain and hash
+                Rp_ChainDeleteLink(_objList,l);
+                Rp_DeleteHashEntry(_objNameHash,hEntry);
+            }
+        } else {
+            // chain link does not exist, remove hash entry
+            Rp_DeleteHashEntry(_objNameHash,hEntry);
+        }
+    }
+
+    return o;
+}
+
+Outcome &
+LibraryStorage::outcome() const
+{
+    _status.addContext("Rappture::LibraryStorage::outcome");
+    return _status;
+}
+
+const Rp_Chain *
+LibraryStorage::contains() const
+{
+    _status.addContext("Rappture::LibraryStorage::contains");
+    //FIXME: run through hash table and remove invalid entries
+    //       and holes from list before sending it to user
+    return _objList;
+}
+
+Outcome &
+LibraryStorage::clear ()
+{
+    _status.addContext("Rappture::LibraryStorage::clear");
+    __libStoreFree();
+    __libStoreInit();
+    return _status;
+}
Index: /tags/1.6.0/src/objects/RpLibStorage.h
===================================================================
--- /tags/1.6.0/src/objects/RpLibStorage.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpLibStorage.h	(revision 6168)
@@ -0,0 +1,87 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture Library Storage Header
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef _RP_LIBRARY_STORAGE_H
+#define _RP_LIBRARY_STORAGE_H
+
+#ifdef __cplusplus
+
+#include "RpObject.h"
+#include "RpOutcome.h"
+#include "RpInt.h"
+#include "RpChain.h"
+#include "RpHash.h"
+
+namespace Rappture {
+
+class LibraryStorage
+{
+    public:
+        LibraryStorage();
+        virtual ~LibraryStorage();
+
+        /*
+        Outcome &backup();
+        Outcome &restore();
+        */
+
+        Outcome &store(const char *key, Rappture::Object *o);
+        Outcome &link(const char *oldkey, const char *newkey);
+        Rappture::Object *find(const char *key);
+        Rappture::Object *remove(const char *key);
+        Outcome &clear();
+
+        Outcome &outcome() const;
+        const Rp_Chain *contains() const;
+    private:
+
+        // use a chain because the rappture gui says that order
+        // of the objects in the input and output sections of
+        // the xml file matters.  use a hash table to easily
+        // find items by name or path the hash table holds name
+        // and paths of the objects and points to the
+        // Rp_ChainLink so we can easily remove a value from
+        // the hash table and the chain.  watchout! the link()
+        // function allows multiple hash entries to point to
+        // the same Rp_ChainLink.  this means the remove()
+        // function can delete the Rappture::Object held by a
+        // Rp_ChainLink, but the Rp_ChainLink will not be
+        // deleted. _objList can have holes in it. there is
+        // currently no way to tell how many things point to
+        // it. also, the hash table never deletes it's
+        // ClientData (the Rp_ChainLink). this object does not
+        // store NULL objects. NULL objects look to close to
+        // things that have already been deleted. if the user
+        // calls find() and the result is Rp_ChainLink that
+        // points to a NULL object, the user will get NULL back
+        // and the Rp_ChainLink will be removed along with the
+        // corresponding hash entry. bad Rp_ChainLinks are also
+        // cleaned up when the user calls the contains()
+        // function.
+
+        Rp_Chain *_objList;
+        Rp_HashTable *_objNameHash;
+        mutable Rappture::Outcome _status;
+
+        void __libStoreInit();
+        void __libStoreFree();
+        Rappture::Object *__find(const char *key, size_t flags);
+
+}; // end class LibrarayStorage
+
+} // end namespace Rappture
+
+
+#endif // ifdef __cplusplus
+
+#endif // ifndef _RP_LIBRARY_H
Index: /tags/1.6.0/src/objects/RpMediaPlayer.cc
===================================================================
--- /tags/1.6.0/src/objects/RpMediaPlayer.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpMediaPlayer.cc	(revision 6168)
@@ -0,0 +1,334 @@
+/*
+ * ======================================================================
+ *  Rappture::MediaPlayer
+ *
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <cstdlib>
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <fstream>
+#include <assert.h>
+
+#include "RpMediaPlayer.h"
+
+using namespace Rappture;
+
+MediaPlayer::MediaPlayer() :
+    _width (0),
+    _height (0),
+    _bitRate(400000),
+    _frameRate(25.0f),
+    _pFormatCtx(NULL),
+    _videoStream(-1),
+    _pCodecCtx(NULL),
+    _pCodec(NULL),
+    _pFrame(NULL),
+    _pFrameRGB(NULL),
+    _packet(),
+    _buffer(NULL),
+    _swsctx(NULL)
+{
+}
+
+/**
+ * Copy constructor
+ * @param MediaPlayer object to copy
+ */
+ /*
+MediaPlayer::MediaPlayer(const MediaPlayer& o)
+{}
+*/
+
+MediaPlayer::~MediaPlayer()
+{
+    // release();
+}
+
+
+bool
+MediaPlayer::init(Outcome &status, const char *filename)
+{
+    status.addContext("Rappture::MediaPlayer::init()");
+
+    /* Register all codecs and formats */
+    av_register_all();
+    return load(status, filename);
+}
+
+bool
+MediaPlayer::load(Outcome &status, const char *filename)
+{
+    status.addContext("Rappture::MediaPlayer::load()");
+
+    // Open video file
+    if(av_open_input_file(&_pFormatCtx, filename, NULL, 0, NULL)!=0) {
+        status.addError("Could not open file");
+        return false;
+    }
+
+    // Retrieve stream information
+    if(av_find_stream_info(_pFormatCtx)<0) {
+        status.addError("Could not find stream information");
+        return false;
+    }
+
+    // Dump information about file onto standard error
+    dump_format(_pFormatCtx, 0, filename, 0);
+
+    // Find the first video stream
+    _videoStream=-1;
+    for(size_t i=0; i<_pFormatCtx->nb_streams; i++) {
+        if(_pFormatCtx->streams[i]->codec->codec_type==CODEC_TYPE_VIDEO) {
+            _videoStream=i;
+            break;
+        }
+    }
+
+    if(_videoStream==-1) {
+        status.addError("Did not find a video stream");
+        return false;
+    }
+
+    // Get a pointer to the codec context for the video stream
+    _pCodecCtx=_pFormatCtx->streams[_videoStream]->codec;
+
+    // Find the decoder for the video stream
+    _pCodec=avcodec_find_decoder(_pCodecCtx->codec_id);
+    if(_pCodec==NULL) {
+        status.addError("Unsupported codec");
+        return false;
+    }
+
+    // Open codec
+    if(avcodec_open(_pCodecCtx, _pCodec)<0) {
+        status.addError("Could not open codec");
+        return false;
+    }
+
+    // Allocate video frame
+    _pFrame=avcodec_alloc_frame();
+
+    // Allocate an AVFrame structure
+    _pFrameRGB=avcodec_alloc_frame();
+    if(_pFrameRGB==NULL) {
+        status.addError("Failed to allocate avcodec frame");
+        return false;
+    }
+
+    // Determine required buffer size and allocate buffer
+    int numBytes=avpicture_get_size(PIX_FMT_RGB24, _pCodecCtx->width,
+                                    _pCodecCtx->height);
+    _buffer=(uint8_t *)av_malloc(numBytes*sizeof(uint8_t));
+
+    // Assign appropriate parts of buffer to image planes in pFrameRGB
+    avpicture_fill((AVPicture *)_pFrameRGB, _buffer, PIX_FMT_RGB24,
+                    _pCodecCtx->width, _pCodecCtx->height);
+
+    /* setup sws context */
+    if (_swsctx == NULL) {
+        _swsctx = sws_getContext(_pCodecCtx->width, _pCodecCtx->height,
+                                 _pCodecCtx->pix_fmt, _pCodecCtx->width,
+                                 _pCodecCtx->height, PIX_FMT_RGB24,
+                                 SWS_BILINEAR, NULL, NULL, NULL);
+        if (_swsctx == NULL) {
+            status.addError("Cannot initialize the conversion context");
+            return false;
+        }
+    }
+
+    return true;
+}
+
+
+bool
+MediaPlayer::release()
+{
+    // status.addContext("Rappture::MediaPlayer::release()");
+
+    // Free the RGB image
+    if (_buffer) {
+        av_free(_buffer);
+        _buffer = NULL;
+    }
+
+    if (_pFrameRGB) {
+        av_free(_pFrameRGB);
+        _pFrameRGB = NULL;
+    }
+
+    // Free the YUV frame
+    if (_pFrame) {
+        av_free(_pFrame);
+        _pFrame = NULL;
+    }
+
+    // Close the codec
+    if (_pCodecCtx) {
+        avcodec_close(_pCodecCtx);
+        _pCodecCtx = NULL;
+    }
+
+    // Close the video file
+    if (_pFormatCtx) {
+        av_close_input_file(_pFormatCtx);
+        _pFormatCtx = NULL;
+    }
+
+    return true;
+}
+
+size_t
+MediaPlayer::read(Outcome &status, SimpleCharBuffer *b)
+{
+    status.addContext("Rappture::MediaPlayer::read()");
+
+    int frameFinished = 0;
+
+    while(av_read_frame(_pFormatCtx, &_packet)>=0) {
+        // Is this a packet from the video stream?
+        if(_packet.stream_index==_videoStream) {
+            // Decode video frame
+            avcodec_decode_video2(_pCodecCtx, _pFrame, &frameFinished,
+                                  &_packet);
+
+            // Did we get a video frame?
+            if (frameFinished) {
+                // Convert the image from its native format to RGB
+                sws_scale(_swsctx,
+                          (const uint8_t * const*)_pFrame->data,
+                          _pFrame->linesize, 0, _pCodecCtx->height,
+                          _pFrameRGB->data, _pFrameRGB->linesize);
+
+                __frame2ppm(b);
+                break;
+            }
+        }
+
+        // Free the packet that was allocated by av_read_frame
+        av_free_packet(&_packet);
+    }
+    return 1;
+}
+
+size_t
+MediaPlayer::nframes() const
+{
+    // status.addContext("Rappture::MediaPlayer::nframes()");
+    return 0;
+}
+/*
+int packet_queue_put(PacketQueue *q, AVPacket *pkt) {
+
+  AVPacketList *pkt1;
+  if(pkt != &flush_pkt && av_dup_packet(pkt) < 0) {
+    return -1;
+  }
+    if(packet_queue_get(&is->audioq, pkt, 1) < 0) {
+      return -1;
+    }
+    if(packet->data == flush_pkt.data) {
+      avcodec_flush_buffers(is->audio_st->codec);
+      continue;
+    }
+*/
+
+
+int
+MediaPlayer::seek(long offset, int whence)
+{
+    // status.addContext("Rappture::MediaPlayer::seek()");
+    int stream_index= -1;
+    int64_t seek_target = is->seek_pos;
+
+    if (is->videoStream >= 0) {
+        stream_index = is->videoStream;
+    } else if (is->audioStream >= 0) {
+        stream_index = is->audioStream;
+    }
+
+    if(stream_index>=0){
+        seek_target= av_rescale_q(seek_target, AV_TIME_BASE_Q,
+                      pFormatCtx->streams[stream_index]->time_base);
+    }
+    if(av_seek_frame(is->pFormatCtx, stream_index, 
+                    seek_target, is->seek_flags) < 0) {
+        fprintf(stderr, "%s: error while seeking\n",
+            is->pFormatCtx->filename);
+    } else {
+        /* handle packet queues... more later... */
+        if(is->audioStream >= 0) {
+            packet_queue_flush(&is->audioq);
+            packet_queue_put(&is->audioq, &flush_pkt);
+        }
+        if(is->videoStream >= 0) {
+            packet_queue_flush(&is->videoq);
+            packet_queue_put(&is->videoq, &flush_pkt);
+        }
+    }
+    is->seek_req = 0;
+    return 0;
+}
+
+int
+MediaPlayer::tell() const
+{
+    // status.addContext("Rappture::MediaPlayer::tell()");
+    return 0;
+}
+
+size_t
+MediaPlayer::set(size_t nframes)
+{
+    // status.addContext("Rappture::MediaPlayer::set()");
+    return 0;
+}
+
+bool
+MediaPlayer::good() const
+{
+    // status.addContext("Rappture::MediaPlayer::good()");
+    return true;
+}
+
+bool
+MediaPlayer::bad() const
+{
+    // status.addContext("Rappture::MediaPlayer::bad()");
+    return false;
+}
+
+bool
+MediaPlayer::eof() const
+{
+    // status.addContext("Rappture::MediaPlayer::eof()");
+    return false;
+}
+
+void
+MediaPlayer::__frame2ppm(SimpleCharBuffer *b)
+{
+    // status.addContext("Rappture::MediaPlayer::__frame2ppm()");
+
+    // FIXME: look into using rewind or some other method that
+    //        does not free the already allocated memory. just
+    //        reuses the block.
+    b->clear();
+
+    // Write header
+    b->appendf("P6\n%d %d\n255\n", _pCodecCtx->width, _pCodecCtx->height);
+
+    // Write pixel data
+    for(int y=0; y<_pCodecCtx->height; y++) {
+        // really want to store a void*...
+        b->append((const char *)(_pFrameRGB->data[0]+y*_pFrameRGB->linesize[0]), _pCodecCtx->width*3);
+    }
+}
Index: /tags/1.6.0/src/objects/RpMediaPlayer.h
===================================================================
--- /tags/1.6.0/src/objects/RpMediaPlayer.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpMediaPlayer.h	(revision 6168)
@@ -0,0 +1,120 @@
+/*
+ * ======================================================================
+ *  Rappture::MediaPlayer
+ *
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef RP_MEDIAPLAYER_H
+#define RP_MEDIAPLAYER_H 1
+
+#include "config.h"
+
+extern "C" {
+#define __STDC_CONSTANT_MACROS 1
+
+#ifdef HAVE_FFMPEG_AVFORMAT_H
+#include <ffmpeg/avformat.h>
+#endif
+#ifdef HAVE_LIBAVFORMAT_AVFORMAT_H
+#include <libavformat/avformat.h>
+#endif
+
+#ifdef HAVE_FFMPEG_AVCODEC_H
+#include <ffmpeg/avcodec.h>
+#endif
+#ifdef HAVE_LIBAVCODEC_AVCODEC_H
+#include <libavcodec/avcodec.h>
+#endif
+
+#ifdef HAVE_FFMPEG_SWSCALE_H
+#include <ffmpeg/swscale.h>
+#endif
+#ifdef HAVE_LIBSWSCALE_SWSCALE_H
+#include <libswscale/swscale.h>
+#endif
+}
+
+
+#include "RpOutcome.h"
+#include "RpSimpleBuffer.h"
+
+namespace Rappture {
+
+class MediaPlayer {
+public:
+    enum VideoFormats { MPEG1, MPEG4, THEORA, QUICKTIME };
+    MediaPlayer();
+    virtual ~MediaPlayer();
+
+    bool init(Outcome &status, const char *filename);
+    bool load(Outcome &status, const char *filename);
+    bool release();
+
+    size_t nframes() const;
+
+    size_t read(Outcome &status, SimpleCharBuffer *b);
+    int seek(long offset, int whence);
+    int tell() const;
+    size_t set(size_t nframes);
+
+    bool good() const;
+    bool bad() const;
+    bool eof() const;
+
+private:
+    void __frame2ppm(SimpleCharBuffer *b);
+
+    size_t _width;
+    size_t _height;
+    size_t _bitRate;
+    float _frameRate;                // frames/seconds
+
+    AVFormatContext *_pFormatCtx;
+    int _videoStream;
+    AVCodecContext *_pCodecCtx;
+    AVCodec *_pCodec;
+    AVFrame *_pFrame;
+    AVFrame *_pFrameRGB;
+    AVPacket _packet;
+    uint8_t *_buffer;
+    struct SwsContext *_swsctx;
+
+
+
+    size_t width(void) {
+        return _width;
+    }
+    void width(size_t width) {
+        _width = width;
+    }
+    size_t height(void) {
+        return _width;
+    }
+    void height(size_t width) {
+        _width = width;
+    }
+    size_t bitRate(void) {
+        return _bitRate;
+    }
+    void bitRate(size_t bitRate) {
+        _bitRate = bitRate;
+    }
+    float frameRate(void) {
+        return _frameRate;
+    }
+    void frameRate(size_t frameRate) {
+        _frameRate = frameRate;
+    }
+
+};
+
+} // namespace Rappture
+
+#endif /* RP_MEDIAPLAYER_H */
Index: /tags/1.6.0/src/objects/RpNumber.cc
===================================================================
--- /tags/1.6.0/src/objects/RpNumber.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpNumber.cc	(revision 6168)
@@ -0,0 +1,819 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 Number Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpNumber.h"
+#include "RpUnits.h"
+#include "RpSimpleBuffer.h"
+#include "RpUnitsCInterface.h"
+#include "RpPath.h"
+
+using namespace Rappture;
+
+Number::Number()
+   : Object (),
+     _minSet (0),
+     _maxSet (0),
+     _defSet (0),
+     _curSet (0),
+     _presets (NULL)
+{
+    // FIXME: empty names should be autoname'd
+    this->name("");
+    this->path("run");
+    this->label("");
+    this->desc("");
+    this->def(0.0);
+    this->cur(0.0);
+    this->min(0.0);
+    this->max(0.0);
+    // FIXME: empty units should be set to the None unit
+    // this->units(units);
+}
+
+Number::Number(const char *name, const char *units, double val)
+   : Object (),
+     _minSet (0),
+     _maxSet (0),
+     _defSet (0),
+     _curSet (0),
+     _presets (NULL)
+{
+    const RpUnits *u = NULL;
+
+    this->name(name);
+    this->path("run");
+    this->label("");
+    this->desc("");
+    this->def(val);
+    this->cur(val);
+    this->min(0.0);
+    this->max(0.0);
+
+    u = RpUnits::find(std::string(units));
+    if (!u) {
+        u = RpUnits::define(units,NULL);
+    }
+    this->units(units);
+}
+
+Number::Number(const char *name, const char *units, double val,
+               double min, double max, const char *label,
+               const char *desc)
+    : Object (),
+      _minSet (0),
+      _maxSet (0),
+      _defSet (0),
+      _curSet (0),
+      _presets (NULL)
+{
+    const RpUnits *u = NULL;
+
+    this->name(name);
+    this->path("run");
+    this->label(label);
+    this->desc(desc);
+    this->def(val);
+    this->cur(val);
+    this->min(min);
+    this->max(max);
+
+    u = RpUnits::find(std::string(units));
+    if (! u) {
+        u = RpUnits::define(units,NULL);
+    }
+    this->units(units);
+
+    if ((min == 0) && (max == 0)) {
+        _minSet = 0;
+        _maxSet = 0;
+    }
+    else {
+
+        _minSet = 1;
+        if (min > val) {
+            this->min(val);
+        }
+
+        _maxSet = 1;
+        if (max < val) {
+            this->max(val);
+        }
+    }
+}
+
+// copy constructor
+Number::Number ( const Number& o )
+    : Object (o),
+      _minSet (o._minSet),
+      _maxSet (o._maxSet),
+      _defSet (o._defSet),
+      _curSet (o._curSet)
+{
+    this->def(o.def());
+    this->cur(o.cur());
+    this->min(o.min());
+    this->max(o.max());
+    this->units(o.units());
+
+    // FIXME: need to copy _presets
+}
+
+// default destructor
+Number::~Number ()
+{
+    // clean up dynamic memory
+}
+
+const char *
+Number::units(void) const
+{
+    return propstr("units");
+}
+
+void
+Number::units(const char *p)
+{
+    propstr("units",p);
+}
+
+int
+Number::minset() const
+{
+    return _minSet;
+}
+
+int
+Number::maxset() const
+{
+    return _maxSet;
+}
+
+int
+Number::defset() const
+{
+    return _defSet;
+}
+
+int
+Number::curset() const
+{
+    return _curSet;
+}
+
+/**********************************************************************/
+// METHOD: convert()
+/// Convert the number object to another unit from string
+/**
+ * Store the result as the currentValue.
+ */
+
+Outcome&
+Number::convert(const char *to)
+{
+    const RpUnits* toUnit = NULL;
+    const RpUnits* fromUnit = NULL;
+
+    _status.addContext("Rappture::Number::convert");
+
+    if (to == NULL) {
+        return _status;
+    }
+
+    if (strcmp(units(),to) == 0) {
+        return _status;
+    }
+
+    // make sure all units functions accept char*'s
+    toUnit = RpUnits::find(std::string(to));
+    if (!toUnit) {
+        _status.addError("conversion not defined, unit \"%s\" does not exist",to);
+        return _status;
+    }
+
+    fromUnit = RpUnits::find(std::string(units()));
+    if (!fromUnit) {
+        _status.addError("conversion not defined, unit \"%s\" does not exist",to);
+        return _status;
+    }
+
+    // perform the conversion
+    int err = 0;
+    double convertedVal;
+
+    convertedVal = fromUnit->convert(toUnit,def(), &err);
+    if (err) {
+        _status.addError("undefined error while converting %s to %s",
+            (fromUnit->getUnitsName()).c_str(),
+            (toUnit->getUnitsName()).c_str());
+    } else {
+        def(convertedVal);
+    }
+
+    convertedVal = fromUnit->convert(toUnit,cur(), &err);
+    if (err) {
+        _status.addError("undefined error while converting %s to %s",
+            (fromUnit->getUnitsName()).c_str(),
+            (toUnit->getUnitsName()).c_str());
+    } else {
+        cur(convertedVal);
+    }
+
+    if (_minSet) {
+        convertedVal = fromUnit->convert(toUnit,min(), &err);
+        if (err) {
+            _status.addError("undefined error while converting %s to %s",
+                (fromUnit->getUnitsName()).c_str(),
+                (toUnit->getUnitsName()).c_str());
+        } else {
+            min(convertedVal);
+        }
+    }
+
+    if (_maxSet) {
+        convertedVal = fromUnit->convert(toUnit,max(), &err);
+        if (err) {
+            _status.addError("undefined error while converting %s to %s",
+                (fromUnit->getUnitsName()).c_str(),
+                (toUnit->getUnitsName()).c_str());
+        } else {
+            max(convertedVal);
+        }
+    }
+    return _status;
+}
+
+/**********************************************************************/
+// METHOD: value()
+/// Get the value of this object converted to specified units
+/**
+ * does not change the value of the object
+ * error code is set on trouble
+ */
+
+double
+Number::value(const char *to) const
+{
+    const RpUnits* toUnit = NULL;
+    const RpUnits* fromUnit = NULL;
+
+    _status.addContext("Rappture::Number::value");
+
+    double val = 0.0;
+
+    if (_defSet) {
+        val = def();
+    }
+
+    if (_curSet) {
+        val = cur();
+    }
+
+    if (to == NULL) {
+        return val;
+    }
+
+    if (strcmp(units(),to) == 0) {
+        return val;
+    }
+
+    // make sure all units functions accept char*'s
+    toUnit = RpUnits::find(std::string(to));
+    if (!toUnit) {
+        _status.addError("conversion not defined, unit \"%s\" does not exist",to);
+        return val;
+    }
+
+    fromUnit = RpUnits::find(std::string(units()));
+    if (!fromUnit) {
+        _status.addError("conversion not defined, unit \"%s\" does not exist",to);
+        return val;
+    }
+
+    // perform the conversion
+    int err = 0;
+    double convertedVal = fromUnit->convert(toUnit,val, &err);
+    if (err) {
+        _status.addError("undefined error while converting %s to %s",
+            (fromUnit->getUnitsName()).c_str(),
+            (toUnit->getUnitsName()).c_str());
+        return cur();
+    }
+
+    return convertedVal;
+}
+
+/**********************************************************************/
+// METHOD: vvalue()
+/// Get the value of this object based on provided hints
+/**
+ * does not change the value of the object
+ * currently recognized hints:
+ *  units
+ * error code is set on trouble
+ */
+
+void
+Number::vvalue(void *storage, size_t numHints, va_list arg) const
+{
+    char buf[1024];
+    char *hintCopy = NULL;
+    size_t hintLen = 0;
+
+    char *hint = NULL;
+    const char *hintKey = NULL;
+    const char *hintVal = NULL;
+
+    double *ret = (double *) storage;
+
+    *ret = 0.0;
+
+    if (_defSet) {
+        *ret = def();
+    }
+
+    if (_curSet) {
+        *ret = cur();
+    }
+
+    while (numHints > 0) {
+        numHints--;
+        hint = va_arg(arg, char *);
+        hintLen = strlen(hint);
+        if (hintLen < 1024) {
+            hintCopy = buf;
+        } else {
+            // buf too small, allocate some space
+            hintCopy = new char[hintLen];
+        }
+        strcpy(hintCopy,hint);
+
+        // parse the hint into a key and value
+        __hintParser(hintCopy,&hintKey,&hintVal);
+
+        // evaluate the hint key
+        if (('u' == *hintKey) &&
+            (strcmp("units",hintKey) == 0)) {
+            *ret = value(hintVal);
+
+        }
+
+        if (hintCopy != buf) {
+            // clean up memory
+            delete hintCopy;
+        }
+    }
+    return;
+}
+
+/**********************************************************************/
+// METHOD: addPreset()
+/// Add a preset / suggessted value to the object
+/**
+ * Add a preset value to the object. Currently all
+ * labels must be unique.
+ */
+
+Number&
+Number::addPreset(const char *label, const char *desc, double val,
+                  const char *units)
+{
+    preset *p = NULL;
+
+    p = new preset;
+    if (!p) {
+        // raise error and exit
+    }
+
+    p->label(label);
+    p->desc(desc);
+    p->val(val);
+    p->units(units);
+
+    if (_presets == NULL) {
+        _presets = Rp_ChainCreate();
+        if (_presets == NULL) {
+            // raise error and exit
+        }
+    }
+
+    Rp_ChainAppend(_presets,p);
+
+    return *this;
+}
+
+Number&
+Number::addPreset(const char *label, const char *desc, const char *val)
+{
+    double valval = 0.0;
+    const char *valunits = "";
+    char *endptr = NULL;
+    int result = 0;
+
+    std::string vstr = RpUnits::convert(val,"",RPUNITS_UNITS_OFF,&result);
+    if (result) {
+        // probably shouldnt trust this result
+        fprintf(stderr,"error in RpUnits::convert in addPreset\n");
+    }
+    size_t len = vstr.length();
+    valunits = val+len;
+
+    valval = strtod(val,&endptr);
+    if ( (endptr == val) || (endptr != valunits) ) {
+        // error? strtod was not able to find the same
+        // units location as RpUnits::convert
+        fprintf(stderr,"error while parsing units in addPreset\n");
+    }
+
+    return addPreset(label,desc,valval,valunits);
+}
+
+/**********************************************************************/
+// METHOD: delPreset()
+/// Delete a preset / suggessted value from the object
+/**
+ * Delete a preset value from the object.
+ */
+
+Number&
+Number::delPreset(const char *label)
+{
+    if (label == NULL) {
+        return *this;
+    }
+
+    if (_presets == NULL) {
+        return *this;
+    }
+
+    preset *p = NULL;
+    const char *plabel = NULL;
+    Rp_ChainLink *l = NULL;
+
+    // traverse the list looking for the matching preset
+    l = Rp_ChainFirstLink(_presets);
+    while (l != NULL) {
+        p = (preset *) Rp_ChainGetValue(l);
+        plabel = p->label();
+        if ((*label == *plabel) && (strcmp(plabel,label) == 0)) {
+            // we found matching entry, remove it
+            if (p) {
+                delete p;
+                Rp_ChainDeleteLink(_presets,l);
+            }
+            break;
+        }
+    }
+
+
+    return *this;
+}
+
+void
+Number::__configureFromTree(ClientData c)
+{
+    Rp_ParserXml *p = (Rp_ParserXml *)c;
+    if (p == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    Rp_TreeNode node = Rp_ParserXmlElement(p,NULL);
+
+    Rappture::Path pathObj(Rp_ParserXmlNodePath(p,node));
+
+    path(pathObj.parent());
+    name(Rp_ParserXmlNodeId(p,node));
+
+    pathObj.clear();
+    pathObj.add("about");
+    pathObj.add("label");
+    label(Rp_ParserXmlGet(p,pathObj.path()));
+    pathObj.type("description");
+    desc(Rp_ParserXmlGet(p,pathObj.path()));
+    units(Rp_ParserXmlGet(p,"units"));
+    minFromStr(Rp_ParserXmlGet(p,"min"));
+    maxFromStr(Rp_ParserXmlGet(p,"max"));
+    defFromStr(Rp_ParserXmlGet(p,"default"));
+    curFromStr(Rp_ParserXmlGet(p,"current"));
+
+    // collect info about the preset values
+    Rp_Chain *childChain = Rp_ChainCreate();
+    Rp_ParserXmlChildren(p,NULL,"preset",childChain);
+    Rp_ChainLink *l = Rp_ChainFirstLink(childChain);
+    while (l != NULL) {
+        Rp_TreeNode presetNode = (Rp_TreeNode) Rp_ChainGetValue(l);
+        Rp_ParserXmlBaseNode(p,presetNode);
+
+        const char *presetlabel = Rp_ParserXmlGet(p,"label");
+        const char *presetdesc = Rp_ParserXmlGet(p,"description");
+        const char *presetvalue = Rp_ParserXmlGet(p,"value");
+        addPreset(presetlabel,presetdesc,presetvalue);
+
+
+        l = Rp_ChainNextLink(l);
+    }
+
+    Rp_ChainDestroy(childChain);
+
+    // return the base node to the tree root
+    Rp_ParserXmlBaseNode(p,NULL);
+
+    return;
+}
+
+/**********************************************************************/
+// METHOD: dumpToTree(ClientData p)
+/// dump the object to a Rappture1.1 based tree
+/**
+ * Dump the object to a Rappture1.1 based tree
+ */
+
+void
+Number::__dumpToTree(ClientData c)
+{
+    if (c == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    Rp_ParserXml *parser = (Rp_ParserXml *)c;
+
+    Path p;
+
+    p.parent(path());
+    p.last();
+
+    p.add("number");
+    p.id(name());
+
+    p.add("about");
+
+    p.add("label");
+    Rp_ParserXmlPutF(parser,p.path(),"%s",label());
+
+    p.type("description");
+    Rp_ParserXmlPutF(parser,p.path(),"%s",desc());
+
+    p.del();
+    p.type("units");
+    Rp_ParserXmlPutF(parser,p.path(),"%s",units());
+
+
+    if (_minSet) {
+        p.type("min");
+        Rp_ParserXmlPutF(parser,p.path(),"%g%s",min(),units());
+    }
+
+    if (_maxSet) {
+        p.type("max");
+        Rp_ParserXmlPutF(parser,p.path(),"%g%s",max(),units());
+    }
+
+    p.type("default");
+    Rp_ParserXmlPutF(parser,p.path(),"%g%s",def(),units());
+
+    p.type("current");
+    Rp_ParserXmlPutF(parser,p.path(),"%g%s",cur(),units());
+
+    // process presets
+    p.type("preset");
+    p.add("label");
+    Rp_ChainLink *l = Rp_ChainFirstLink(_presets);
+    while (l != NULL) {
+        struct preset *presetObj = (struct preset *) Rp_ChainGetValue(l);
+
+        p.type("label");
+        Rp_ParserXmlPutF(parser,p.path(),"%s",presetObj->label());
+        //p.type("description");
+        //Rp_ParserXmlPutF(parser,p.path(),"%s",presetObj->desc());
+        // p.type("units");
+        // Rp_ParserXmlPutF(parser,p.path(),"%s",presetObj->units());
+        p.type("value");
+        Rp_ParserXmlPutF(parser,p.path(),"%g%s",presetObj->val(),presetObj->units());
+
+        p.prev();
+        p.degree(p.degree()+1);
+        p.next();
+
+        l = Rp_ChainNextLink(l);
+    }
+
+    return;
+}
+
+/**********************************************************************/
+// METHOD: is()
+/// what kind of object is this
+/**
+ * return hex value telling what kind of object this is.
+ */
+
+const int
+Number::is() const
+{
+    // return "numb" in hex
+    return 0x6E756D62;
+}
+
+
+void
+Number::__convertFromString(
+    const char *val,
+    double *ret)
+{
+    if (val == NULL) {
+        return;
+    }
+
+    if (ret == NULL) {
+        return;
+    }
+
+    double numericVal = 0.0;
+    if (units()) {
+        // convert the provided string into
+        // the objects default units
+        int err = 0;
+        std::string strVal;
+        strVal = RpUnits::convert(val,units(),RPUNITS_UNITS_OFF,&err);
+        if (err) {
+            _status.addError("Unknown error while converting units");
+        }
+
+        char *endPtr = NULL;
+        numericVal = strtod(strVal.c_str(),&endPtr);
+        if (endPtr == strVal.c_str()) {
+            // no conversion was performed
+            _status.addError("Could not convert \"%s\" into a number",
+                strVal.c_str());
+        } else if (endPtr == (strVal.c_str()+strVal.length())) {
+            *ret = numericVal;
+        } else {
+            // the whole string could not be converted to a number
+            // signal error?
+            _status.addError("Could not convert \"%s\" of \"%s\"into a number",
+                endPtr, strVal.c_str());
+        }
+    } else {
+        // try to figure out the units
+        // store units and return the numeric value to the user
+        const char *foundUnits = NULL;
+        __valUnitsSplit(val,&numericVal,&foundUnits);
+        units(foundUnits);
+        *ret = numericVal;
+    }
+
+}
+
+void
+Number::__valUnitsSplit(
+    const char *inStr,
+    double *val,
+    const char **units)
+{
+    if (inStr == NULL) {
+        return;
+    }
+
+    if (val == NULL) {
+        return;
+    }
+
+    if (units == NULL) {
+        return;
+    }
+
+    char *endPtr = NULL;
+    *val = strtod(inStr,&endPtr);
+    if (endPtr == inStr) {
+        // no conversion was performed
+        _status.addError("Could not convert \"%s\" into a number", inStr);
+    } else if (endPtr == (inStr+strlen(inStr))) {
+        // the whole string was used in the numeric conversion
+        // set units to NULL
+        *units = NULL;
+    } else {
+        // the whole string could not be converted to a number
+        // we assume the rest of the string are the units
+        *units = endPtr;
+    }
+}
+
+/**********************************************************************/
+// METHOD: minFromStr()
+/// xml helper function to receive min value as a string
+/**
+ * convert string to value and units and store as min
+ */
+
+void
+Number::minFromStr(
+    const char *val)
+{
+    double numericVal = 0;
+
+    if (val == NULL) {
+        return;
+    }
+
+    __convertFromString(val,&numericVal);
+
+    if (!_status) {
+        min(numericVal);
+        _minSet = 1;
+    }
+
+}
+
+/**********************************************************************/
+// METHOD: maxFromStr()
+/// xml helper function to receive max value as a string
+/**
+ * convert string to value and units and store as max
+ */
+
+void
+Number::maxFromStr(
+    const char *val)
+{
+    double numericVal = 0;
+
+    if (val == NULL) {
+        return;
+    }
+
+    __convertFromString(val,&numericVal);
+
+    if (!_status) {
+        max(numericVal);
+        _maxSet = 1;
+    }
+
+}
+
+/**********************************************************************/
+// METHOD: defFromStr()
+/// xml helper function to receive default value as a string
+/**
+ * convert string to value and units and store as default
+ */
+
+void
+Number::defFromStr(
+    const char *val)
+{
+    double numericVal = 0;
+
+    if (val == NULL) {
+        return;
+    }
+
+    __convertFromString(val,&numericVal);
+
+    if (!_status) {
+        def(numericVal);
+        _defSet = 1;
+    }
+
+}
+
+/**********************************************************************/
+// METHOD: currFromStr()
+/// xml helper function to receive current value as a string
+/**
+ * convert string to value and units and store as current
+ */
+
+void
+Number::curFromStr(
+    const char *val)
+{
+    double numericVal = 0;
+
+    if (val == NULL) {
+        return;
+    }
+
+    __convertFromString(val,&numericVal);
+
+    if (!_status) {
+        cur(numericVal);
+        _curSet = 1;
+    }
+
+}
+
+
+
+// -------------------------------------------------------------------- //
+
Index: /tags/1.6.0/src/objects/RpNumber.h
===================================================================
--- /tags/1.6.0/src/objects/RpNumber.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpNumber.h	(revision 6168)
@@ -0,0 +1,104 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <errno.h>
+#include "RpObject.h"
+#include "RpChain.h"
+
+#ifndef RAPPTURE_NUMBER_H
+#define RAPPTURE_NUMBER_H
+
+namespace Rappture {
+
+class Number : public Object
+{
+    public:
+
+        Number();
+        Number(const char *name, const char *units, double val);
+
+        Number(const char *name, const char *units, double val,
+               double min, double max, const char *label,
+               const char *desc);
+
+        Number( const Number& o );
+        virtual ~Number ();
+
+        Accessor<double> def;
+        Accessor<double> cur;
+        Accessor<double> min;
+        Accessor<double> max;
+
+        const char *units(void) const;
+        void units(const char *p);
+
+        int minset() const;
+        int maxset() const;
+        int defset() const;
+        int curset() const;
+
+        // convert the value stored in this object to specified units
+        // does not return the converted value
+        // error code is returned
+        Outcome& convert(const char *to);
+
+        // get the value of this object converted to specified units
+        // does not change the value of the object
+        // error code is returned
+        double value(const char *units) const;
+        void vvalue(void *storage, size_t numHints, va_list arg) const;
+
+        Number& addPreset(const char *label, const char *desc,
+                          double val, const char *units);
+
+        Number& addPreset(const char *label, const char *desc,
+                          const char *val);
+
+        Number& delPreset(const char *label);
+
+
+        const int is() const;
+
+        void minFromStr(const char *val);
+        void maxFromStr(const char *val);
+        void defFromStr(const char *val);
+        void curFromStr(const char *val);
+
+    private:
+
+        // flag tells if user specified min and max values
+        int _minSet;
+        int _maxSet;
+        int _defSet;
+        int _curSet;
+
+        // hash or linked list of preset values
+        Rp_Chain *_presets;
+
+        struct preset{
+            Accessor<const char *> label;
+            Accessor<const char *> desc;
+            Accessor<const char *> units;
+            Accessor<double> val;
+        };
+
+        void __configureFromTree(ClientData c);
+        void __dumpToTree(ClientData c);
+
+        void __convertFromString(const char *val, double *ret);
+        void __valUnitsSplit( const char *inStr, double *val,
+                const char **units);
+};
+
+} // namespace Rappture
+
+/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
+
+#endif
Index: /tags/1.6.0/src/objects/RpObjConfig.h
===================================================================
--- /tags/1.6.0/src/objects/RpObjConfig.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpObjConfig.h	(revision 6168)
@@ -0,0 +1,29 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef RAPPTURE_OBJECT_CONFIG_H
+#define RAPPTURE_OBJECT_CONFIG_H
+
+namespace Rappture {
+
+enum RapptureConfigureFlags {
+    RPCONFIG_XML    =(1<<0),       /* Configure Object from Rappture 1.0 XML. */
+    RPCONFIG_TREE   =(1<<1),       /* Configure Object from Rappture 1.5 Tree. */
+};
+
+typedef struct {
+    size_t indent;
+    size_t tabstop;
+    const char *retStr;
+} ClientDataXml;
+
+} // end namespace Rappture
+
+#endif // RAPPTURE_OBJECT_CONFIG_H
Index: /tags/1.6.0/src/objects/RpObject.cc
===================================================================
--- /tags/1.6.0/src/objects/RpObject.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpObject.cc	(revision 6168)
@@ -0,0 +1,557 @@
+/*
+ * ----------------------------------------------------------------------
+ *  RpObject.cc
+ *
+ *   Rappture 2.0 Object member functions
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpObject.h"
+#include "RpHashHelper.h"
+#include <cstring>
+
+using namespace Rappture;
+
+Object::Object()
+{
+    __init();
+}
+
+Object::Object (
+    const char *name,
+    const char *path,
+    const char *label,
+    const char *desc,
+    const char *hints,
+    const char *color   )
+{
+    this->name(name);
+    this->path(path);
+    this->label(label);
+    this->desc(desc);
+    this->hints(hints);
+    this->color(color);
+}
+
+Object::Object(const Object& o)
+{
+    name(o.name());
+    path(o.path());
+    label(o.label());
+    desc(o.desc());
+    hints(o.hints());
+    color(o.color());
+    // icon(o.icon());
+
+    if (o._h != NULL) {
+        Rp_HashCopy(_h,o._h,charCpyFxn);
+    }
+}
+
+Object::~Object()
+{
+    __clear();
+}
+
+const char*
+Object::name() const
+{
+    return propstr("name");
+}
+
+void
+Object::name(const char *p)
+{
+    propstr("name",p);
+}
+
+const char*
+Object::path() const
+{
+    return propstr("path");
+}
+
+void
+Object::path(const char *p)
+{
+    propstr("path",p);
+}
+
+const char*
+Object::label() const
+{
+    return propstr("label");
+}
+
+void
+Object::label(
+    const char *p)
+{
+    propstr("label",p);
+}
+
+const char*
+Object::desc() const
+{
+    return propstr("desc");
+}
+
+void
+Object::desc(const char *p)
+{
+    propstr("desc",p);
+}
+
+const char*
+Object::hints() const
+{
+    return propstr("hints");
+}
+
+void
+Object::hints(const char *p)
+{
+    propstr("hints",p);
+}
+
+const char*
+Object::color() const
+{
+    return propstr("color");
+}
+
+void
+Object::color(const char *p)
+{
+    propstr("color",p);
+}
+
+// get a general property
+const void *
+Object::property(const char *key) const
+{
+    if (key == NULL) {
+        // no key to search for
+        return NULL;
+    }
+
+    if (_h == NULL) {
+        // hash table does not exist, value is not in table
+        return NULL;
+    }
+
+    // get the value
+    return Rp_HashSearchNode(_h,key);
+}
+
+// set a general property
+void
+Object::property(const char *key, const void *val, size_t nbytes)
+{
+    if (key == NULL) {
+        // no key for value
+        return;
+    }
+
+    if (_h == NULL) {
+        // hash table does not exist, create it
+        _h = (Rp_HashTable*) malloc(sizeof(Rp_HashTable));
+        Rp_InitHashTable(_h,RP_STRING_KEYS);
+    }
+
+    // FIXME: this is suspect,
+    // want to use void's and void*'s but c++ wont let me
+    // g++ says there is no delete[] for void*
+    void *tmp = new char[nbytes];
+    memcpy(tmp,val,nbytes);
+
+    // set the value
+    char *old = (char *) Rp_HashRemoveNode(_h,key);
+    delete[] old;
+    old = NULL;
+    Rp_HashAddNode(_h,key,tmp);
+
+    return;
+}
+
+// get a const char* property
+const char *
+Object::propstr(const char *key) const
+{
+    if (key == NULL) {
+        // no key for value
+        return NULL;
+    }
+
+    if (_h == NULL) {
+        // hash table does not exist, value does not exist in table
+        return NULL;
+    }
+
+    // get the value
+    return (const char *) Rp_HashSearchNode(_h,key);
+}
+
+// set a const char* property
+void
+Object::propstr(const char *key, const char *val)
+{
+    char *str = NULL;
+
+    if (key == NULL) {
+        // no key for value
+        return;
+    }
+
+    if (_h == NULL) {
+        // hash table does not exist, create it
+        _h = (Rp_HashTable*) malloc(sizeof(Rp_HashTable));
+        Rp_InitHashTable(_h,RP_STRING_KEYS);
+    }
+
+    if (val == NULL) {
+        // no value provided, no value stored.
+        // FIXME: raise error.
+        return;
+    }
+
+    // set the value
+    // FIXME: this is suspect,
+    // want to use void's and void*'s but c++ wont let me
+    // g++ says there is no delete[] for void*
+    // FIXME: can probably just get the length and use property() fxn
+    size_t l = strlen(val);
+    str = new char[l+1];
+    strcpy(str,val);
+
+    char *old = (char *) Rp_HashRemoveNode(_h,key);
+    delete[] old;
+    old = NULL;
+    Rp_HashAddNode(_h,key,str);
+
+    return;
+}
+
+// remove a property from the hash table
+void
+Object::propremove(const char *key)
+{
+    if ((key == NULL) || (_h == NULL)) {
+        // key or hash table does not exist
+        return;
+    }
+
+    char *tmp = (char *) Rp_HashRemoveNode(_h,key);
+    delete[] tmp;
+    tmp = NULL;
+    return;
+}
+
+void
+Object::__hintParser(
+    char *hint,
+    const char **hintKey,
+    const char **hintVal) const
+{
+
+    // hints are null terminated strings with a hint key
+    // and hint value separated by an equal sign.
+    // they take the following form:
+    // hintKey=hintVal
+    // this function does change the original hint string.
+
+    char *v = NULL;
+
+    if (hint == NULL) {
+        return;
+    }
+
+    v = strchr(hint,'=');
+    *hintKey = hint;
+    if ((v == NULL) || (*v == '\0') || (*(v+1) == '\0')) {
+        // incomplete hint string
+        *hintVal = NULL;
+    } else {
+        *v = '\0';
+        *hintVal = v+1;
+    }
+
+    return;
+}
+
+void
+Object::vvalue(void *storage, size_t numHints, va_list arg) const
+{
+    // bland objects take no hints
+    char buf[1024];
+    char *hintCopy = NULL;
+    size_t hintLen = 0;
+
+    char *hint = NULL;
+    const char *hintKey = NULL;
+    const char *hintVal = NULL;
+
+    while (numHints > 0) {
+        numHints--;
+        hint = va_arg(arg, char *);
+        hintLen = strlen(hint);
+        if (hintLen < 1024) {
+            hintCopy = buf;
+        } else {
+            hintCopy = new char[hintLen+1];
+        }
+        strcpy(hintCopy,hint);
+        __hintParser(hintCopy,&hintKey,&hintVal);
+        if (hintCopy != buf) {
+            delete hintCopy;
+        }
+    }
+    return;
+}
+
+void
+Object::random()
+{
+    // bland objects cannot make random values
+    return;
+}
+
+Rp_Chain *
+Object::diff(const Object &o)
+{
+    return NULL;
+}
+
+void
+Object::__init()
+{
+    _h = NULL;
+    label("");
+    desc("");
+    hints("");
+    color("");
+    // icon(NULL);
+    path("");
+
+    _tmpBuf.clear();
+
+    _h = (Rp_HashTable*) malloc(sizeof(Rp_HashTable));
+    Rp_InitHashTable(_h,RP_STRING_KEYS);
+}
+
+void
+Object::__clear()
+{
+    _tmpBuf.clear();
+
+    // traverse the hash table to delete values, then delete hash table
+    if (_h != NULL) {
+        Rp_HashEntry *hEntry = NULL;
+        Rp_HashSearch hSearch;
+
+        hEntry = Rp_FirstHashEntry(_h,&hSearch);
+        while (hEntry != NULL) {
+            // FIXME: this is suspect,
+            // want to use void's and void*'s but c++ wont let me
+            // g++ says there is no delete[] for void*
+            char *v = (char *) Rp_GetHashValue(hEntry);
+            delete[] v;
+            v = NULL;
+            hEntry = Rp_NextHashEntry(&hSearch);
+        }
+
+        Rp_DeleteHashTable(_h);
+        _h = NULL;
+    }
+}
+
+/*
+const char *
+Object::xml(size_t indent, size_t tabstop) const
+{
+    return NULL;
+}
+*/
+
+/*
+void
+Object::xml(const char *xmltext)
+{
+    return;
+}
+*/
+
+/**********************************************************************/
+// METHOD: configure(ClientData c)
+/// construct an object from the provided tree
+/**
+ * construct an object from the provided tree
+ */
+
+void
+Object::configure(size_t as, ClientData c)
+{
+    if (as == RPCONFIG_XML) {
+        __configureFromXml(c);
+    } else if (as == RPCONFIG_TREE) {
+        __configureFromTree(c);
+    }
+}
+
+/**********************************************************************/
+// METHOD: configureFromXml(const char *xmltext)
+/// configure the object based on Rappture1.1 xmltext
+/**
+ * Configure the object based on the provided xml
+ */
+
+void
+Object::__configureFromXml(ClientData c)
+{
+    const char *xmltext = (const char *)c;
+    if (xmltext == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    Rp_ParserXml *p = Rp_ParserXmlCreate();
+    Rp_ParserXmlParse(p, xmltext);
+    __configureFromTree(p);
+
+    return;
+}
+
+void
+Object::__configureFromTree(ClientData c)
+{
+    Rp_ParserXml *p = (Rp_ParserXml *)c;
+    if (p == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    Rp_TreeNode node = Rp_ParserXmlElement(p,NULL);
+
+    Rappture::Path pathObj(Rp_ParserXmlNodePath(p,node));
+
+    path(pathObj.parent());
+    name(Rp_ParserXmlNodeId(p,node));
+
+    pathObj.clear();
+    pathObj.add("about");
+    pathObj.add("label");
+    label(Rp_ParserXmlGet(p,pathObj.path()));
+    pathObj.type("description");
+    desc(Rp_ParserXmlGet(p,pathObj.path()));
+    pathObj.type("hints");
+    hints(Rp_ParserXmlGet(p,pathObj.path()));
+    pathObj.type("color");
+    color(Rp_ParserXmlGet(p,pathObj.path()));
+
+    return;
+}
+
+/**********************************************************************/
+// METHOD: dump(size_t as, void *p)
+/// construct a number object from the provided tree
+/**
+ * construct a number object from the provided tree
+ */
+
+void
+Object::dump(size_t as, ClientData p)
+{
+    if (as == RPCONFIG_XML) {
+        __dumpToXml(p);
+    } else if (as == RPCONFIG_TREE) {
+        __dumpToTree(p);
+    }
+}
+
+/**********************************************************************/
+// METHOD: dumpToXml(ClientData p)
+/// configure the object based on Rappture1.1 xmltext
+/**
+ * Configure the object based on the provided xml
+ */
+
+void
+Object::__dumpToXml(ClientData c)
+{
+    if (c == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    ClientDataXml *d = (ClientDataXml *)c;
+    Rp_ParserXml *parser = Rp_ParserXmlCreate();
+    __dumpToTree(parser);
+    _tmpBuf.appendf("%s",Rp_ParserXmlXml(parser));
+    d->retStr = _tmpBuf.bytes();
+    Rp_ParserXmlDestroy(&parser);
+}
+
+/**********************************************************************/
+// METHOD: dumpToTree(ClientData p)
+/// dump the object to a Rappture1.1 based tree
+/**
+ * Dump the object to a Rappture1.1 based tree
+ */
+
+void
+Object::__dumpToTree(ClientData c)
+{
+    if (c == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    Rp_ParserXml *parser = (Rp_ParserXml *)c;
+
+    Path p;
+
+    p.parent(path());
+    p.last();
+
+    p.add("object");
+    p.id(name());
+
+    p.add("about");
+
+    p.add("label");
+    Rp_ParserXmlPutF(parser,p.path(),"%s",label());
+
+    p.type("description");
+    Rp_ParserXmlPutF(parser,p.path(),"%s",desc());
+
+    p.type("hints");
+    Rp_ParserXmlPutF(parser,p.path(),"%s", hints());
+
+    p.type("color");
+    Rp_ParserXmlPutF(parser,p.path(),"%s", color());
+
+    return;
+}
+
+Outcome &
+Object::outcome() const
+{
+    return _status;
+}
+
+const int
+Object::is() const
+{
+    // return "var" in hex
+    return 0x766172;
+}
+
+// -------------------------------------------------------------------- //
+
Index: /tags/1.6.0/src/objects/RpObject.h
===================================================================
--- /tags/1.6.0/src/objects/RpObject.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpObject.h	(revision 6168)
@@ -0,0 +1,124 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick S. Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef RAPPTURE_OBJECT_H
+#define RAPPTURE_OBJECT_H
+
+#include "RpInt.h"
+#include "RpHash.h"
+#include "RpOutcome.h"
+#include "RpAccessor.h"
+#include "RpBuffer.h"
+#include "RpPath.h"
+#include "RpParserXML.h"
+#include "RpObjConfig.h"
+#include <cstdarg>
+
+namespace Rappture {
+
+class Object
+{
+    public:
+        Object ();
+        Object (const char *name,
+                const char *path,
+                const char *label,
+                const char *desc,
+                const char *hints,
+                const char *color);
+        Object (const Object& o);
+        virtual ~Object();
+
+        const char *name(void) const;
+        void name(const char *p);
+
+        const char *path(void) const;
+        void path(const char *p);
+
+        const char *label(void) const;
+        void label(const char *p);
+
+        const char *desc(void) const;
+        void desc(const char *p);
+
+        const char *hints(void) const;
+        void hints(const char *p);
+
+        const char *color(void) const;
+        void color(const char *p);
+
+        // void *icon(void) const;
+        // void icon(void *p, size_t nbytes);
+
+        // these functions are not completely improper use proof
+        // user is responsible for calling propremove() on any item
+        // they put into the hash table.
+
+        // get/set void* property
+        const void *property(const char *key) const;
+        void property(const char *key, const void *val, size_t nbytes);
+
+        // get/set const char * property
+        const char *propstr(const char *key) const;
+        void propstr(const char *key, const char *val);
+
+        // remove property from hash table
+        void propremove (const char *key);
+
+        // return the value of object based on provided hints
+        virtual void vvalue(void *storage, size_t numHints, va_list arg) const;
+        // populate the object with a random value
+        virtual void random();
+        // return the difference between this object and o
+        virtual Rp_Chain *diff(const Object& o);
+
+        // get the Rappture1.1 xml text for this object
+        // virtual const char *xml(size_t indent, size_t tabstop) const;
+
+        // configure the object properties based on Rappture1.1 xml text
+        virtual void configure(size_t as, ClientData c);
+        virtual void dump(size_t as, ClientData c);
+
+        virtual Outcome &outcome() const;
+        virtual const int is() const;
+
+    protected:
+
+        /// temprorary buffer for returning text to the user
+        SimpleCharBuffer _tmpBuf;
+
+        /// status of the object
+        mutable Rappture::Outcome _status;
+
+        virtual void __hintParser(char *hint,
+            const char **hintKey, const char **hintVal) const;
+
+        virtual void __configureFromXml(ClientData c);
+        virtual void __configureFromTree(ClientData c);
+        virtual void __dumpToXml(ClientData c);
+        virtual void __dumpToTree(ClientData c);
+    private:
+
+        /// hash table holding other object properties
+        Rp_HashTable *_h;
+
+        /// initialize the object, set the data members to 0 or null
+        void __init();
+
+        /// close out the object, freeing its memory
+        void __clear();
+};
+
+} // RAPPTURE_OBJECT_H
+
+/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
+
+#endif
Index: /tags/1.6.0/src/objects/RpParserXML.cc
===================================================================
--- /tags/1.6.0/src/objects/RpParserXML.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpParserXML.cc	(revision 6168)
@@ -0,0 +1,929 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 XML Parser Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <errno.h>
+#include <expat.h>
+#include <string.h>
+#include <stdarg.h>
+#include "RpParserXML.h"
+#include "RpSimpleBuffer.h"
+#include "RpPath.h"
+
+struct Rp_ParserXmlStruct {
+    Rp_Tree tree;
+    Rp_TreeNode curr;
+    Rappture::Path *path;
+    Rappture::SimpleCharBuffer *buf;
+};
+
+const char *Rp_ParserXml_Field_ID = "id";
+const char *Rp_ParserXml_Field_VALUE = "value";
+const char *Rp_ParserXml_Field_VISITED = "visited";
+const char *Rp_ParserXml_TreeRootName = "rapptureTree";
+
+static void XMLCALL
+Rp_ParserXmlStartHandler(
+    void *data,
+    const char *el,
+    const char **attr)
+{
+    Rp_ParserXml *inf = (Rp_ParserXml *) data;
+    size_t i = 0;
+
+    inf->curr = Rp_TreeCreateNode(inf->tree, inf->curr, el, -1);
+
+    // store the attributes in the node
+    while (attr[i] != NULL) {
+        const char *attrName = attr[i++];
+        size_t attrValueLen = strlen(attr[i]);
+        // FIXME: memory leak originating from this new call
+        // I'm not sure where/when the attrValue is deleted yet
+        char *attrValue = new char[attrValueLen+1];
+        strcpy(attrValue,attr[i++]);
+        Rp_TreeSetValue(inf->tree,inf->curr,attrName,(void *)attrValue);
+    }
+    inf->path->add(el);
+}
+
+static void XMLCALL
+Rp_ParserXmlEndHandler(
+    void *data,
+    const char *el)
+{
+    Rp_ParserXml *inf = (Rp_ParserXml *) data;
+
+    if (inf == NULL) {
+        return;
+    }
+
+    char *value = NULL;
+    Rp_TreeGetValue(inf->tree,inf->curr,Rp_ParserXml_Field_VALUE,(void **)&value);
+
+    if (value != NULL) {
+        // strip trailing spaces
+        int i = 0;
+        for (i = strlen(value)-1; i >= 0; i--) {
+            if (isspace(value[i])) {
+                value[i] = '\0';
+            } else {
+                break;
+            }
+        }
+
+        // strip leading spaces
+        int j = 0;
+        for (j = 0; j < i; j++) {
+            if (isspace(value[j])) {
+                value[j] = '\0';
+            } else {
+                break;
+            }
+        }
+
+        if (j > 0) {
+            // reallocate the trimmed string
+            char *newValue = new char[i-j+1+1];
+            strcpy(newValue,value+j);
+            Rp_TreeSetValue(inf->tree,inf->curr,Rp_ParserXml_Field_VALUE,
+                (void *)newValue);
+            delete[] value;
+            value = NULL;
+        }
+    }
+
+    inf->path->del();
+    inf->curr = Rp_TreeNodeParent(inf->curr);
+}
+
+void
+Rp_ParserXmlDefaultCharHandler(
+    void* data,
+    XML_Char const* s,
+    int len)
+{
+    Rp_ParserXml *inf = (Rp_ParserXml *) data;
+
+    if (inf == NULL) {
+        return;
+    }
+
+    // FIXME: where/when is this deallocated
+    char *d = new char[len+1];
+
+    if ( s != NULL) {
+        strncpy(d,s,len);
+    }
+
+    d[len] = '\0';
+    Rp_TreeSetValue(inf->tree,inf->curr,Rp_ParserXml_Field_VALUE,(void *)d);
+}
+
+Rp_ParserXml *
+Rp_ParserXmlCreate()
+{
+    Rp_ParserXml *p = new Rp_ParserXml();
+
+    Rp_TreeCreate(Rp_ParserXml_TreeRootName,&(p->tree));
+    p->curr = Rp_TreeRootNode(p->tree);
+    p->path = new Rappture::Path();
+    p->buf = new Rappture::SimpleCharBuffer();
+
+
+    return p;
+}
+
+void
+Rp_ParserXmlDestroy(Rp_ParserXml **p)
+{
+    if (p == NULL) {
+        return;
+    }
+
+    if (*p == NULL) {
+        return;
+    }
+
+    Rp_TreeReleaseToken((*p)->tree);
+    delete (*p)->buf;
+    delete (*p)->path;
+    delete *p;
+    *p = NULL;
+}
+
+void
+Rp_ParserXmlParse(
+    Rp_ParserXml *p,
+    const char *xml)
+{
+    if (xml == NULL) {
+        return;
+    }
+
+    XML_Parser parser = XML_ParserCreate(NULL);
+    XML_SetUserData(parser,p);
+    XML_SetElementHandler(parser, Rp_ParserXmlStartHandler,
+        Rp_ParserXmlEndHandler);
+    XML_SetDefaultHandlerExpand(parser, Rp_ParserXmlDefaultCharHandler);
+
+    int done = 1;
+    int len = 0;
+
+    len = strlen(xml);
+    if (XML_Parse(parser, xml, len, done) == XML_STATUS_ERROR) {
+        fprintf(stderr, "Parse error at line %lu:\n%s\n",
+                XML_GetCurrentLineNumber(parser),
+                XML_ErrorString(XML_GetErrorCode(parser)));
+        exit(-1);
+    }
+
+    XML_ParserFree(parser);
+
+    // reset the root node
+    p->curr = Rp_TreeFirstChild(Rp_TreeRootNode(p->tree));
+
+    return;
+}
+
+Rp_TreeNode
+Rp_ParserXmlCreateNode(
+    Rp_ParserXml *p,
+    Rp_TreeNode parent,
+    const char *type,
+    const char *id)
+{
+    if (!p->tree || !parent || !type) {
+        fprintf(stderr,"failed to create node because of invalid data\n");
+        return NULL;
+    }
+
+    Rp_TreeNode child = Rp_TreeCreateNode(p->tree, parent, type, -1);
+
+    if (id != NULL) {
+        size_t attrValueLen = strlen(id);
+        // FIXME: memory leak originating from this new call
+        // I'm not sure where/when the attrValue is deleted yet
+        char *attrValue = new char[attrValueLen+1];
+        strcpy(attrValue,id);
+        Rp_TreeSetValue(p->tree,child,Rp_ParserXml_Field_ID,(void *)attrValue);
+    }
+
+    return child;
+}
+
+int
+Rp_ParserXmlNodeIdentify(
+    Rp_ParserXml *p,
+    Rp_TreeNode n,
+    const char *name,
+    const char *id)
+{
+    int criteriaMet = 0;
+    int criteriaTotal = 0;
+
+    if (n) {
+        if (name) {
+            criteriaTotal++;
+            if (strcmp(name,Rp_TreeNodeLabel(n)) == 0) {
+                criteriaMet++;
+            }
+        }
+        if (id) {
+            criteriaTotal++;
+            const char *nodeId = NULL;
+            Rp_TreeGetValue(p->tree,n,Rp_ParserXml_Field_ID,
+                (void **)&nodeId);
+            if (strcmp(id,nodeId) == 0) {
+                criteriaMet++;
+            }
+        }
+    }
+
+    // check if all of the eligable criteria have been met
+    int retVal = 0;
+    if (criteriaMet == criteriaTotal) {
+        retVal = 0;
+    } else {
+        retVal = 1;
+    }
+
+    return retVal;
+
+}
+
+void
+Rp_ParserXmlFindChild(
+    Rp_ParserXml *p,
+    Rp_TreeNode parent,
+    const char *childName,
+    const char *childId,
+    size_t degree,
+    Rp_TreeNode *child,
+    size_t *numFound)
+{
+    // this function is only concerned with the question:
+    // is a node with a matching name, id, and degree a
+    // child of the provided parent node?
+    // if so return it.
+    // this function does not create new nodes.
+
+    if (child == NULL) {
+        return;
+    }
+
+    if (numFound == NULL) {
+        return;
+    }
+
+    *numFound = 0;
+    *child = Rp_TreeFindChild(parent,childName);
+    if (*child == NULL) {
+        // no nodes with the name childName exist
+        return;
+    }
+
+    while (*child != NULL) {
+        if (Rp_ParserXmlNodeIdentify(p,*child,childName,childId) == 0) {
+            // found a child with the correct name and id
+            (*numFound)++;
+            if (degree == *numFound) {
+                // found a node with the correct degree
+                break;
+            }
+        }
+
+        // check the next child for the correct name and id
+        *child = Rp_TreeNextSibling(*child);
+    }
+
+    return;
+}
+
+Rp_TreeNode
+Rp_ParserXmlSearch(
+    Rp_ParserXml *p,
+    const char *path,
+    int create)
+{
+    Rappture::Path pathObj(path);
+    Rp_TreeNode parent = NULL;
+    Rp_TreeNode child = NULL;
+
+    if (p == NULL) {
+        return NULL;
+    }
+
+    // start searching from the base node
+    parent = p->curr;
+
+    // if (path == NULL) return the base node
+    child = p->curr;
+
+    pathObj.first();
+    while ( (!pathObj.eof()) &&
+            (parent != NULL) ) {
+
+        const char *childName = pathObj.type();
+        const char *childId = pathObj.id();
+        size_t childDegree = pathObj.degree();
+
+        size_t foundCnt = 0;
+        Rp_ParserXmlFindChild(p, parent, childName, childId,
+            childDegree, &child, &foundCnt);
+
+        if (child == NULL) {
+            // no nodes with the name childName exist
+            // FIXME: use the RPXML_CREATE flag
+            if (create) {
+                for (size_t i = foundCnt; i < pathObj.degree(); i++) {
+                    child = Rp_ParserXmlCreateNode(p, parent,
+                                childName, childId);
+                    if (child == NULL) {
+                        // error while creating the child node
+                        // signal error
+                        break;
+                    }
+                }
+            } else {
+                // fprintf(stderr,"invalid path %s at %s\n",path,childName);
+                break;
+            }
+        }
+
+        parent = child;
+        pathObj.next();
+    }
+
+    return child;
+}
+
+const char *
+Rp_ParserXmlGet(
+    Rp_ParserXml *p,
+    const char *path)
+{
+    const char *value = NULL;
+    Rp_TreeNode child = NULL;
+
+    child = Rp_ParserXmlSearch(p, path, 0);
+    if (child != NULL) {
+        Rp_TreeGetValue(p->tree,child,Rp_ParserXml_Field_VALUE,(void **)&value);
+    }
+
+    return value;
+}
+
+void
+Rp_ParserXmlPut(
+    Rp_ParserXml *p,
+    const char *path,
+    const char *val,
+    int append)
+{
+    const char *oldval = NULL;
+    char *newval = NULL;
+    size_t oldval_len = 0;
+    size_t val_len = 0;
+
+    if (val == NULL) {
+        // no value, do nothing
+        return;
+    }
+
+    Rp_TreeNode child = Rp_ParserXmlSearch(p, path, 1);
+
+    if (child == NULL) {
+        // error while searching for node?
+        return;
+    }
+
+    // check to see if there is already a value
+    if (RP_OK == Rp_TreeGetValue(p->tree,child,
+                    Rp_ParserXml_Field_VALUE,
+                    (void **)&oldval)) {
+        if (oldval != NULL) {
+            // FIXME: use the RPXML_APPEND flag
+            if (append) {
+                oldval_len = strlen(oldval);
+                val_len = strlen(val);
+                newval = new char[oldval_len + val_len + 1];
+                strncpy(newval,oldval,oldval_len);
+            }
+            // free the old data
+            delete[] oldval;
+            oldval = NULL;
+        }
+    }
+
+    // allocate space for our new value if needed
+    if (newval == NULL) {
+        // set the new value for the node
+        val_len = strlen(val);
+        newval = new char[val_len + 1];
+    }
+
+    strcpy(newval+oldval_len,val);
+
+    // set the value of the child node
+    if (RP_ERROR == Rp_TreeSetValue(p->tree,child,
+                        Rp_ParserXml_Field_VALUE,
+                        (void *)newval)) {
+        fprintf(stderr,"error while setting value of %s\n",path);
+    }
+
+    /*
+    if (p->curr == p->root) {
+        // reset the root node
+        p->curr = Rp_TreeFirstChild(p->root);
+    }
+    */
+
+    return;
+}
+
+void
+Rp_ParserXmlPutF(
+    Rp_ParserXml *p,
+    const char *path,
+    const char *format,
+    ...)
+{
+    if (format == NULL) {
+        // no value, do nothing
+        return;
+    }
+
+    Rp_TreeNode child = Rp_ParserXmlSearch(p, path, 1);
+
+    if (child == NULL) {
+        fprintf(stderr, "child node %s does not exist", path);
+        return;
+    }
+
+    // check to see if there is already a value
+    const char *oldval = NULL;
+    if (RP_OK == Rp_TreeGetValue(p->tree,child,
+                    Rp_ParserXml_Field_VALUE,
+                    (void **)&oldval)) {
+        if (oldval != NULL) {
+            // free the old data
+            delete[] oldval;
+            oldval = NULL;
+        }
+    }
+
+    // store the formatted string in the tree node
+    size_t stackSize = 1024;
+    char *stackSpace = new char[stackSize];
+    va_list lst;
+    size_t n;
+
+    va_start(lst, format);
+    n = vsnprintf(stackSpace, stackSize, format, lst);
+    if (n >= stackSize) {
+        delete[] stackSpace;
+        stackSpace = new char[n];
+        vsnprintf(stackSpace, n, format, lst);
+    }
+
+    // set the value of the child node
+    if (RP_ERROR == Rp_TreeSetValue(p->tree,child,
+                        Rp_ParserXml_Field_VALUE,
+                        (void *)stackSpace)) {
+        fprintf(stderr,"error while setting value of %s\n",path);
+    }
+
+    /*
+    if (p->curr == p->root) {
+        // reset the root node
+        p->curr = Rp_TreeFirstChild(p->root);
+    }
+    */
+
+    return;
+}
+
+void
+Rp_ParserXmlAppendF(
+    Rp_ParserXml *p,
+    const char *path,
+    const char *format,
+    ...)
+{
+    if (format == NULL) {
+        // no value, do nothing
+        return;
+    }
+
+    Rp_TreeNode child = Rp_ParserXmlSearch(p, path, 1);
+
+    if (child == NULL) {
+        fprintf(stderr, "child node %s does not exist", path);
+        return;
+    }
+
+    // check to see if there is already a value
+    const char *oldval = NULL;
+    Rp_TreeGetValue(p->tree,child, Rp_ParserXml_Field_VALUE, (void **)&oldval);
+
+    // get the formatted string
+    size_t stackSize = 1024;
+    char *stackSpace = new char[stackSize];
+    va_list lst;
+    size_t n;
+
+    va_start(lst, format);
+    n = vsnprintf(stackSpace, stackSize, format, lst);
+    if (n >= stackSize) {
+        delete[] stackSpace;
+        stackSpace = new char[n];
+        vsnprintf(stackSpace, n, format, lst);
+    }
+
+    // concatenate the formatted string and the old value
+    char *newval = stackSpace;
+    if (oldval != NULL) {
+        size_t oldval_len = strlen(oldval);
+        newval = new char[n+oldval_len+1];
+        strcpy(newval, oldval);
+        strcat(newval,stackSpace);
+        // free the old data
+        delete[] oldval;
+        oldval = NULL;
+        delete[] stackSpace;
+        stackSpace = NULL;
+    }
+
+    // set the value of the child node
+    if (RP_ERROR == Rp_TreeSetValue(p->tree,child,
+                        Rp_ParserXml_Field_VALUE,
+                        (void *)newval)) {
+        fprintf(stderr,"error while setting value of %s\n",path);
+    }
+
+    /*
+    if (p->curr == p->root) {
+        // reset the root node
+        p->curr = Rp_TreeFirstChild(p->root);
+    }
+    */
+
+    return;
+}
+
+
+Rp_Tree
+Rp_ParserXmlTreeClient(
+    Rp_ParserXml *p)
+{
+    if (p == NULL) {
+        return NULL;
+    }
+    Rp_Tree newTree = NULL;
+    // create a new token for the tree and return it to the caller
+    Rp_TreeGetTokenFromToken(p->tree,&newTree);
+    return newTree;
+}
+
+int
+printXmlData(
+    Rp_TreeNode node,
+    ClientData clientData,
+    int order)
+{
+    Rp_ParserXml *p = (Rp_ParserXml *) clientData;
+
+    Rappture::Path labelComp(Rp_TreeNodeLabel(node));
+    const char *label = labelComp.type();
+    const char *value = NULL;
+
+    size_t width = (Rp_TreeNodeDepth(p->tree,node)-1)*PARSERXML_LEVEL_WIDTH;
+    const char *sp = "";
+    int *visited = NULL;
+
+    Rp_TreeGetValue(p->tree,node,Rp_ParserXml_Field_VALUE,(void **)&value);
+    size_t valLen = 0;
+    if (value != NULL) {
+        valLen = strlen(value);
+    }
+
+    if (!Rp_TreeValueExists(p->tree,node,Rp_ParserXml_Field_VISITED)) {
+        visited = new int();
+        *visited = 0;
+
+        p->buf->appendf("%3$*2$s<%1$s",label,width,sp);
+
+        // go through all attributes and place them in the tag
+        Rp_TreeKey attrName = NULL;
+        Rp_TreeKeySearch search;
+        attrName = Rp_TreeFirstKey (p->tree, node, &search);
+        while (attrName) {
+            if ((*Rp_ParserXml_Field_VALUE != *attrName) &&
+                (strcmp(Rp_ParserXml_Field_VALUE,attrName) != 0)) {
+                const char *attrValue = NULL;
+                Rp_TreeGetValueByKey(p->tree,node,attrName,(void**)&attrValue);
+                p->buf->appendf(" %s=\"%s\"",attrName,attrValue);
+            }
+            attrName = Rp_TreeNextKey(p->tree, &search);
+        }
+
+        // close the opening tag
+        p->buf->appendf(">");
+
+        // append the value of the tag if any
+        if ( (value != NULL ) &&
+             (valLen != 0) ) {
+            p->buf->appendf("%s",value);
+        } else {
+            p->buf->appendf("\n");
+        }
+
+        // set the "visited" temporary flag so the next time
+        // we encounter this node, we know it is as a closing node
+        Rp_TreeSetValue(p->tree,node,Rp_ParserXml_Field_VISITED,(void *)visited);
+
+    } else {
+        Rp_TreeGetValue(p->tree,node,Rp_ParserXml_Field_VISITED,(void **)&visited);
+        delete visited;
+        Rp_TreeUnsetValue(p->tree,node,Rp_ParserXml_Field_VISITED);
+        if ( (value != NULL ) &&
+             (valLen != 0) ) {
+            p->buf->appendf("</%s>\n",label);
+        } else {
+            p->buf->appendf("%3$*2$s</%1$s>\n",label,width,sp);
+        }
+
+    }
+
+    return RP_OK;
+}
+
+const char *
+Rp_ParserXmlXml(
+    Rp_ParserXml *p)
+{
+    p->buf->clear();
+    p->buf->appendf("<?xml version=\"1.0\"?>\n");
+
+    Rp_TreeNode root = Rp_TreeRootNode(p->tree);
+    if (p->curr == root) {
+        // reset the root node
+        root = Rp_TreeFirstChild(root);
+    } else {
+        root = p->curr;
+    }
+
+    Rp_TreeApplyDFS(root, printXmlData, (ClientData)p, TREE_PREORDER|TREE_POSTORDER);
+
+    return p->buf->bytes();
+}
+
+int
+printPathVal(
+    Rp_TreeNode node,
+    ClientData clientData,
+    int order)
+{
+    Rp_ParserXml *p = (Rp_ParserXml *) clientData;
+
+    int *visited = NULL;
+
+    if (!Rp_TreeValueExists(p->tree,node,Rp_ParserXml_Field_VISITED)) {
+        // update path
+        p->path->add(Rp_TreeNodeLabel(node));
+
+        const char *id = NULL;
+        if (RP_OK == Rp_TreeGetValue(p->tree,node,Rp_ParserXml_Field_ID,(void **)&id)) {
+            p->path->last();
+            p->path->id(id);
+        }
+
+        const char *value = NULL;
+        if (RP_ERROR == Rp_TreeGetValue(p->tree,node,Rp_ParserXml_Field_VALUE,(void **)&value)) {
+            // error while getting value, exit fxn gracefully?
+            // FIXME: add error code here
+        }
+
+        // append the path and value of the node to our result text
+        if (value && (strlen(value) != 0)) {
+            p->buf->appendf("%s %s\n",p->path->path(),value);
+        }
+
+        // set the "visited" temporary flag so the next time
+        // we encounter this node, we know it is as a closing node
+        visited = new int();
+        *visited = 0;
+        if (RP_ERROR == Rp_TreeSetValue(p->tree,node,Rp_ParserXml_Field_VISITED,(void *)visited)) {
+            // FIXME: error while setting value
+        }
+    } else {
+        // update path
+        p->path->del();
+
+        // delete the "visited" temporary flag from the node
+        if (RP_ERROR == Rp_TreeGetValue(p->tree,node,Rp_ParserXml_Field_VISITED,(void **)&visited)) {
+            // FIXME: error while getting value
+        }
+        delete visited;
+        if (RP_ERROR == Rp_TreeUnsetValue(p->tree,node,Rp_ParserXml_Field_VISITED)) {
+            // FIXME: error while unsetting value
+        }
+    }
+
+    return RP_OK;
+}
+
+const char *
+Rp_ParserXmlPathVal(
+    Rp_ParserXml *p)
+{
+    p->buf->clear();
+
+    // temporarily store p->path so we can use p as ClientData
+    Rappture::Path *tmpPath = p->path;
+    p->path = new Rappture::Path();
+
+    // Rp_TreeNode root = p->curr;
+    Rp_TreeNode root = Rp_TreeRootNode(p->tree);
+    if (p->curr == root) {
+        // reset the root node
+        root = Rp_TreeFirstChild(root);
+    } else {
+        root = p->curr;
+    }
+
+    Rp_TreeApplyDFS(root, printPathVal, (ClientData)p, TREE_PREORDER|TREE_POSTORDER);
+
+    // restore the original path
+    delete p->path;
+    p->path = tmpPath;
+
+    return p->buf->bytes();
+}
+
+Rp_TreeNode
+Rp_ParserXmlElement(
+    Rp_ParserXml *p,
+    const char *path)
+{
+    if (p == NULL) {
+        return NULL;
+    }
+
+    return Rp_ParserXmlSearch(p,path,!RPXML_CREATE);
+}
+
+Rp_TreeNode
+Rp_ParserXmlParent(
+    Rp_ParserXml *p,
+    const char *path)
+{
+    if (p == NULL) {
+        return NULL;
+    }
+
+    Rp_TreeNode node = Rp_ParserXmlSearch(p,path,!RPXML_CREATE);
+    if (node == NULL) {
+        return NULL;
+    }
+
+    return Rp_TreeNodeParent(node);
+}
+
+size_t
+Rp_ParserXmlChildren(
+    Rp_ParserXml *p,
+    const char *path,
+    const char *type,
+    Rp_Chain *children)
+{
+    size_t count = 0;
+
+    if (p == NULL) {
+        return count;
+    }
+
+    if (children == NULL) {
+        return count;
+    }
+
+    Rp_TreeNode node = Rp_ParserXmlSearch(p,path,!RPXML_CREATE);
+
+    if (node == NULL) {
+        return count;
+    }
+
+    if (type == NULL) {
+        node = Rp_TreeFirstChild(node);
+        while (node != NULL) {
+            count++;
+            Rp_ChainAppend(children,(void*)node);
+            node = Rp_TreeNextSibling(node);
+        }
+    } else {
+        node = Rp_TreeFindChild(node,type);
+        while (node != NULL) {
+            count++;
+            Rp_ChainAppend(children,(void*)node);
+            node = Rp_TreeFindChildNext(node,type);
+        }
+    }
+
+    return count;
+}
+
+size_t
+Rp_ParserXmlNumberChildren(
+    Rp_ParserXml *p,
+    const char *path,
+    const char *type)
+{
+    size_t count = 0;
+
+    if (p == NULL) {
+        return count;
+    }
+
+    Rp_TreeNode node = Rp_ParserXmlSearch(p,path,!RPXML_CREATE);
+    if (node != NULL) {
+        node = Rp_TreeFindChild(node,type);
+        while (node != NULL) {
+            count++;
+            node = Rp_TreeFindChildNext(node,type);
+        }
+    }
+
+    return count;
+}
+
+void
+Rp_ParserXmlBaseNode(
+    Rp_ParserXml *p,
+    Rp_TreeNode node)
+{
+    if (p != NULL) {
+        if (node == NULL) {
+            p->curr = Rp_TreeFirstChild(Rp_TreeRootNode(p->tree));
+        } else {
+            p->curr = node;
+        }
+    }
+}
+
+const char *
+Rp_ParserXmlNodePath(
+    Rp_ParserXml *p,
+    Rp_TreeNode node)
+{
+    Rappture::Path pathObj;
+
+    const char *type = NULL;
+    const char *id = NULL;
+
+    if (p != NULL) {
+        while (node != NULL) {
+            type = Rp_TreeNodeLabel(node);
+            pathObj.parent(type);
+            if (RP_OK == Rp_TreeGetValue(p->tree,node,
+                            Rp_ParserXml_Field_ID,(void **)&id)) {
+                pathObj.id(id);
+            }
+            node = Rp_TreeNodeParent(node);
+        }
+    }
+
+    // remove the tree name from the path
+    pathObj.first();
+    pathObj.del();
+    // remove the <run> tag from the path
+    // pathObj.del();
+
+    p->path->path(pathObj.path());
+    return p->path->path();
+}
+
+const char *
+Rp_ParserXmlNodeId(
+    Rp_ParserXml *p,
+    Rp_TreeNode node)
+{
+    const char *id = NULL;
+    if (p != NULL) {
+        if (node != NULL) {
+            Rp_TreeGetValue(p->tree,node, Rp_ParserXml_Field_ID,(void **)&id);
+        }
+    }
+    return id;
+}
+
+// -------------------------------------------------------------------- //
+
Index: /tags/1.6.0/src/objects/RpParserXML.h
===================================================================
--- /tags/1.6.0/src/objects/RpParserXML.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpParserXML.h	(revision 6168)
@@ -0,0 +1,58 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include "RpTree.h"
+#include "RpChain.h"
+
+#ifndef RAPPTURE_PARSER_XML_H
+#define RAPPTURE_PARSER_XML_H
+
+#define PARSERXML_LEVEL_WIDTH 4
+
+enum RapptureParserXmlFlags {
+    RPXML_CREATE=(1<<0),    /* Create the xml path if needed. */
+    RPXML_APPEND=(1<<1),    /* Append data to the data already available. */
+};
+
+extern const char *Rp_ParserXml_Field_ID;
+
+typedef struct Rp_ParserXmlStruct Rp_ParserXml;
+
+Rp_ParserXml *Rp_ParserXmlCreate();
+void Rp_ParserXmlDestroy(Rp_ParserXml **p);
+
+void Rp_ParserXmlParse(Rp_ParserXml *p, const char *xml);
+int Rp_ParserXmlNodeIdentify(Rp_ParserXml *p, Rp_TreeNode n,
+    const char *name, const char *id);
+void Rp_ParserXmlFindChild( Rp_ParserXml *p, Rp_TreeNode parent,
+    const char *childName, const char *childId, size_t degree,
+    Rp_TreeNode *child, size_t *numFound);
+Rp_TreeNode Rp_ParserXmlSearch( Rp_ParserXml *p, const char *path, int create);
+const char *Rp_ParserXmlGet(Rp_ParserXml *p, const char *path);
+void Rp_ParserXmlPut(Rp_ParserXml *p, const char *path, const char *val, int append);
+void Rp_ParserXmlPutF(Rp_ParserXml *p, const char *path, const char *val, ...);
+void Rp_ParserXmlAppendF(Rp_ParserXml *p, const char *path, const char *val, ...);
+
+Rp_Tree Rp_ParserXmlTreeClient(Rp_ParserXml *p);
+
+Rp_TreeNode Rp_ParserXmlElement(Rp_ParserXml *p, const char *path);
+Rp_TreeNode Rp_ParserXmlParent(Rp_ParserXml *p, const char *path);
+size_t Rp_ParserXmlChildren(Rp_ParserXml *p, const char *path,
+    const char *type, Rp_Chain *children);
+size_t Rp_ParserXmlNumberChildren(Rp_ParserXml *p, const char *path,
+    const char *type);
+void Rp_ParserXmlBaseNode(Rp_ParserXml *p, Rp_TreeNode node);
+
+const char *Rp_ParserXmlNodePath(Rp_ParserXml *p, Rp_TreeNode node);
+const char *Rp_ParserXmlNodeId(Rp_ParserXml *p, Rp_TreeNode node);
+
+const char *Rp_ParserXmlXml(Rp_ParserXml *p);
+const char *Rp_ParserXmlPathVal(Rp_ParserXml *p);
+
+#endif // RAPPTURE_PARSER_XML_H
Index: /tags/1.6.0/src/objects/RpPath.cc
===================================================================
--- /tags/1.6.0/src/objects/RpPath.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpPath.cc	(revision 6168)
@@ -0,0 +1,799 @@
+/*
+ * ======================================================================
+ *  Rappture::Path
+ *
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpPath.h"
+
+#include <fstream>
+#include <assert.h>
+
+#ifdef __cplusplus
+    extern "C" {
+#endif // ifdef __cplusplus
+
+#include "RpChainHelper.h"
+#include <cstring>
+#include <cstdlib>
+
+using namespace Rappture;
+
+/**
+ * Construct an empty Path.
+ */
+Path::Path() :
+    _ifs(0),
+    _pathList(NULL)
+{
+    __pathInit();
+}
+
+
+/**
+ * Construct a Path loaded with initial data.
+ *
+ * @param bytes pointer to bytes being stored.
+ */
+Path::Path(const char* bytes) :
+    _ifs(0),
+    _pathList(NULL)
+{
+    __pathInit();
+    path(bytes);
+}
+
+/**
+ * Copy constructor
+ * @param Path object to copy
+ */
+Path::Path(const Path& b)
+{
+    __pathInit();
+
+    _ifs = b._ifs;
+
+    //FIXME: i think this is broken
+    Rp_ChainCopy (_pathList, b._pathList, Rp_ChainCharCpyFxn);
+}
+
+/**
+ * Assignment operator
+ * @param Path object to copy
+ */
+/*
+Path&
+Path::operator=(const Path& b)
+{
+    b = bSimpleCharBuffer::operator=(b);
+    return *this;
+}
+
+
+Path
+Path::operator+(const Path& b) const
+{
+    Path newBuffer(*this);
+    newBuffer.operator+=(b);
+    return newBuffer;
+}
+
+
+Path&
+Path::operator+=(const Path& b)
+{
+    SimpleCharBuffer::operator+=(b);
+    return *this;
+}
+*/
+
+
+Path::~Path()
+{
+    __pathFree();
+}
+
+
+void
+Path::__pathInit()
+{
+    _ifs = '.';
+    _pathList = Rp_ChainCreate();
+    _currLink = Rp_ChainFirstLink(_pathList);
+    return;
+}
+
+void
+Path::__pathFree()
+{
+    if (_pathList) {
+        Rp_ChainLink *l = NULL;
+        componentStruct *compVal = NULL;
+        l = Rp_ChainFirstLink(_pathList);
+        while(l) {
+            compVal = (componentStruct *) Rp_ChainGetValue(l);
+            __deleteComponent(compVal);
+            compVal = NULL;;
+            l = Rp_ChainNextLink(l);
+        }
+        Rp_ChainDestroy(_pathList);
+        _pathList = NULL;
+    }
+    b.clear();
+    return;
+}
+
+Path::componentStruct *
+Path::__createComponent(
+    const char *p,
+    int typeStart,
+    int typeEnd,
+    int idOpenParen,
+    int idCloseParen,
+    size_t degree)
+{
+    componentStruct *c = new componentStruct();
+    int typeLen = -1;
+    int idLen = -1;
+    char *tmp = NULL;
+
+    c->type = NULL;
+    c->id = NULL;
+    c->degree = degree;
+
+    typeLen = typeEnd - typeStart;
+    if (idOpenParen < idCloseParen) {
+        // user specified an id
+        idLen = idCloseParen - idOpenParen - 1;
+    }
+
+    /*
+        typeLen and idLen are initialized to -1
+        if the user specified a value, the length
+        is set to the length of the specified value.
+        if the user specified a blank string, the
+        length is set to 0 and we still create a char array
+        for the type or id field.
+        we differentiate a blank entry from no entry so we
+        can accept paths like this:
+        input.group(tabs).().current
+        input.group(tabs).()
+        and correctly return the id,type,component, and parent
+        versions of the path. these paths are corner cases that
+        should never be used, but we handle them incase they are.
+        if an id is not specified (no value, not even blank),
+        the id pointer is set to NULL. in the above example paths
+        the type and id of the third component are both blank.
+        for the above example paths, the id field of the first
+        components, the input component, is NULL.
+        i don't think there is a way to get a NULL type right now.
+    */
+
+
+    if (typeLen >= 0) {
+        tmp = new char[typeLen+1];
+        strncpy(tmp,(p+typeStart),typeLen);
+        tmp[typeLen] = '\0';
+        c->type = tmp;
+    }
+
+    if (idLen >= 0) {
+        tmp = new char[idLen+1];
+        strncpy(tmp,(p+idOpenParen+1),idLen);
+        tmp[idLen] = '\0';
+        c->id = tmp;
+    }
+
+    return c;
+}
+
+void
+Path::__deleteComponent(componentStruct *c)
+{
+    if (c) {
+        if (c->type) {
+            delete[] c->type;
+        }
+        if (c->id) {
+            delete[] c->id;
+        }
+        delete c;
+    }
+}
+
+Rp_Chain *
+Path::__parse(const char *p)
+{
+    int typeStart = 0;
+    int typeEnd = -1;       // typeEnd must be less than typeStart
+                            // so we can check if there was a type
+    int curr = 0;
+    int idOpenParen = -1;
+    int idCloseParen = -1;
+    componentStruct *c = NULL;
+    size_t degree = 1;
+    char *newEnd = NULL;
+
+    Rp_Chain *compList = Rp_ChainCreate();
+
+    if (p == NULL) {
+        return 0;
+    }
+
+    while (p[curr] != '\0') {
+        if (p[curr] == '(') {
+            idOpenParen = curr;
+            typeEnd = curr;
+        } else if (p[curr] == ')') {
+            idCloseParen = curr;
+        } else if ( (idOpenParen <= idCloseParen) &&
+                    (curr != 0) &&
+                    (p[curr] >= '0') &&
+                    (p[curr] <= '9') ) {
+            // we are not inside the parens
+            // we are not at the start of the string
+            // the value is a digit
+            if (idOpenParen == idCloseParen) {
+                // we are before any possible parens
+                // and after the type
+                typeEnd = curr;
+            }
+            degree = (size_t) strtod(p+curr, &newEnd);
+            if (degree == 0) {
+                // interpret degree of 0 same as degree of 1
+                degree = 1;
+            }
+            // check if we consumed the _ifs
+            if (*(newEnd-1) == _ifs) {
+                newEnd -= 2;
+            }
+            curr += newEnd - (p + curr);
+        } else if ( (p[curr] == _ifs) &&
+                    ((idOpenParen == idCloseParen) ||
+                     (idOpenParen < idCloseParen)) ) {
+            // we see the _ifs
+            // we are not inside of the parens for the id tag
+            if (typeEnd < typeStart) {
+                // we didn't come across the end
+                // of the type string, so set it here.
+                typeEnd = curr;
+            }
+            c = __createComponent(p,typeStart,typeEnd,idOpenParen,idCloseParen,degree);
+            if (c != NULL) {
+                Rp_ChainAppend(compList,c);
+            }
+
+            typeStart = curr+1;
+            idOpenParen = -1;
+            idCloseParen = -1;
+            degree = 1;
+        }
+        curr++;
+    }
+
+    if (typeEnd < typeStart) {
+        // < takes care of cases where there is no
+        // id and no degree, but there is still a type
+        typeEnd = curr;
+    }
+    c = __createComponent(p,typeStart,typeEnd,idOpenParen,idCloseParen,degree);
+    if (c != NULL) {
+        Rp_ChainAppend(compList,c);
+    }
+
+    return compList;
+}
+
+void
+Path::__updateBuffer()
+{
+    Rp_ChainLink *l = NULL;
+    size_t len = 0;
+
+    b.clear();
+
+    l = Rp_ChainFirstLink(_pathList);
+    while (l != NULL) {
+
+        if (b.nmemb() != 0) {
+            b.append(&_ifs,1);
+        }
+
+        componentStruct *c = (componentStruct *) Rp_ChainGetValue(l);
+
+        if (c->type != NULL) {
+            len = strlen(c->type);
+            if (len > 0) {
+                b.append(c->type,len);
+            }
+        }
+
+        if (c->degree > 1) {
+            b.appendf("%i",c->degree);
+        }
+
+        if (c->id != NULL) {
+            b.append("(",1);
+            len = strlen(c->id);
+            if (len > 0) {
+                b.append(c->id,len);
+            }
+            b.append(")",1);
+        }
+
+        l = Rp_ChainNextLink(l);
+    }
+
+    b.append("\0",1);
+}
+
+const char *
+Path::ifs (const char *el)
+{
+    // ifs cannot be NULL, \0, (, or )
+
+    if ((el != NULL) &&
+        (*el != '\0') &&
+        (*el != '(') &&
+        (*el != ')')) {
+        _ifs = *el;
+        __updateBuffer();
+    }
+
+    return (const char *)&_ifs;
+}
+
+Path&
+Path::add (const char *el)
+{
+    Rp_Chain *addList = NULL;
+    Rp_ChainLink *tmpLink = NULL;
+
+    addList = __parse(el);
+    tmpLink = Rp_ChainLastLink(addList);
+    Rp_ChainInsertChainAfter(_pathList,addList,_currLink);
+    _currLink = tmpLink;
+
+    __updateBuffer();
+
+    return *this;
+}
+
+Path&
+Path::del ()
+{
+    Rp_ChainLink *l = NULL;
+
+    // l = Rp_ChainLastLink(_pathList);
+
+    if (_currLink != NULL) {
+        l = _currLink;
+    } else {
+        l = Rp_ChainLastLink(_pathList);
+    }
+
+    if (l != NULL) {
+        componentStruct *c = (componentStruct *) Rp_ChainGetValue(l);
+        __deleteComponent(c);
+        c = NULL;
+        _currLink = Rp_ChainPrevLink(l);
+        if (_currLink == NULL) {
+            // don't go off the beginning of the list
+            _currLink = Rp_ChainNextLink(l);
+            // if _currLink is still NULL, it means the list is blank
+        }
+        Rp_ChainDeleteLink(_pathList,l);
+    }
+
+    __updateBuffer();
+
+    return *this;
+}
+
+bool
+Path::eof ()
+{
+    return (_currLink == NULL);
+}
+
+Path&
+Path::first ()
+{
+    _currLink = Rp_ChainFirstLink(_pathList);
+    return *this;
+}
+
+Path&
+Path::prev ()
+{
+    if (_currLink) {
+        _currLink = Rp_ChainPrevLink(_currLink);
+    }
+    return *this;
+}
+
+Path&
+Path::next ()
+{
+    if (_currLink) {
+        _currLink = Rp_ChainNextLink(_currLink);
+    }
+    return *this;
+}
+
+Path&
+Path::last ()
+{
+    _currLink = Rp_ChainLastLink(_pathList);
+    return *this;
+}
+
+Path&
+Path::clear ()
+{
+    __pathFree();
+    __pathInit();
+    return *this;
+}
+
+size_t
+Path::count ()
+{
+    return Rp_ChainGetLength(_pathList);
+}
+
+const char *
+Path::component(void)
+{
+    Rp_ChainLink *l = NULL;
+
+    if (_pathList == NULL) {
+        return NULL;
+    }
+
+    l = _currLink;
+
+    if (l == NULL) {
+        return NULL;
+    }
+
+    componentStruct *c = (componentStruct *) Rp_ChainGetValue(l);
+
+    if (c == NULL) {
+        return NULL;
+    }
+
+    tmpBuf.clear();
+
+    if (c->type != NULL) {
+        tmpBuf.appendf("%s",c->type);
+    }
+
+    if (c->degree != 1) {
+        tmpBuf.appendf("%zu",c->degree);
+    }
+
+    if (c->id != NULL) {
+        tmpBuf.appendf("(%s)",c->id);
+    }
+
+    // incase none of the above if statements are hit.
+    tmpBuf.append("\0",1);
+
+    return tmpBuf.bytes();
+}
+
+// if you give more than a component,
+// we only take the last component
+// the whole component (type and id)
+// are used to replace the current component.
+
+void
+Path::component(const char *p)
+{
+    if (p == NULL) {
+        return;
+    }
+
+    Rp_Chain *addList = NULL;
+    Rp_ChainLink *l = NULL;
+
+    addList = __parse(p);
+
+    if (addList == NULL) {
+        // nothing to add
+        return;
+    }
+
+    // get the last component of addList
+    l = Rp_ChainLastLink(addList);
+
+    if (l == NULL) {
+        // nothing to add
+        Rp_ChainDestroy(addList);
+        return;
+    }
+
+    componentStruct *aLcomp = (componentStruct *) Rp_ChainGetValue(l);
+    Rp_ChainDeleteLink(_pathList,l);
+
+    // delete addList
+    l = Rp_ChainFirstLink(addList);
+    while (l != NULL) {
+        componentStruct *c = (componentStruct *) Rp_ChainGetValue(l);
+        delete c;
+        l = Rp_ChainNextLink(l);
+    }
+    Rp_ChainDestroy(addList);
+
+    // swap the current component from the current path
+    // with the component from the provided path.
+    l = _currLink;
+
+    if (l != NULL) {
+        componentStruct *last = (componentStruct *) Rp_ChainGetValue(l);
+        delete last;
+        Rp_ChainSetValue(l,aLcomp);
+    } else {
+        // add a new component as a link
+        // point _currLink to the new component
+        _currLink = Rp_ChainAppend(_pathList,aLcomp);
+    }
+
+    __updateBuffer();
+
+    return;
+}
+
+const char *
+Path::id()
+{
+    Rp_ChainLink *l = NULL;
+
+    if (_pathList == NULL) {
+        return NULL;
+    }
+
+    l = _currLink;
+
+    if (l == NULL) {
+        return NULL;
+    }
+
+    componentStruct *c = (componentStruct *) Rp_ChainGetValue(l);
+
+    if (c == NULL) {
+        return NULL;
+    }
+
+    return c->id;
+}
+
+void
+Path::id(const char *p)
+{
+    if (p == NULL) {
+        return;
+    }
+
+    Rp_ChainLink *l = NULL;
+    char *tmp = NULL;
+    size_t len = strlen(p);
+    componentStruct *last = NULL;
+
+    // update the current component from the current path
+    l = _currLink;
+
+    if (l != NULL) {
+        last = (componentStruct *) Rp_ChainGetValue(l);
+        delete[] last->id;
+    } else {
+        // append the new component onto the current path
+        last = new componentStruct;
+        _currLink = Rp_ChainAppend(_pathList,last);
+        tmp = new char[1];
+        *tmp = '\0';
+        last->type = tmp;
+    }
+
+    // adjust the id field
+    tmp = new char[len+1];
+    strncpy(tmp,p,len+1);
+    last->id = tmp;
+
+    __updateBuffer();
+
+    return;
+}
+
+const char *
+Path::type()
+{
+    Rp_ChainLink *l = NULL;
+
+    if (_pathList == NULL) {
+        return NULL;
+    }
+
+    l = _currLink;
+
+    if (l == NULL) {
+        return NULL;
+    }
+
+    componentStruct *c = (componentStruct *) Rp_ChainGetValue(l);
+
+    if (c == NULL) {
+        return NULL;
+    }
+
+    return c->type;
+}
+
+void
+Path::type(const char *p)
+{
+    if (p == NULL) {
+        return;
+    }
+
+    Rp_ChainLink *l = NULL;
+    char *tmp = NULL;
+    size_t len = strlen(p);
+    componentStruct *last = NULL;
+
+    // update the last component from the current path
+    l = _currLink;
+
+    if (l != NULL) {
+        last = (componentStruct *) Rp_ChainGetValue(l);
+        delete[] last->type;
+    } else {
+        // append the new component onto the current path
+        last = new componentStruct;
+        _currLink = Rp_ChainAppend(_pathList,last);
+        last->id = NULL;
+    }
+
+    // adjust the type field
+    tmp = new char[len+1];
+    strncpy(tmp,p,len+1);
+    last->type = tmp;
+
+    __updateBuffer();
+
+    return;
+}
+
+const char *
+Path::parent()
+{
+    Rp_ChainLink *l = NULL;
+    Rp_ChainLink *last = NULL;
+
+    tmpBuf.clear();
+
+    last = _currLink;
+    l = Rp_ChainFirstLink(_pathList);
+    while (l != last) {
+
+        if (tmpBuf.nmemb() != 0) {
+            tmpBuf.append(&_ifs,1);
+        }
+
+        componentStruct *c = (componentStruct *) Rp_ChainGetValue(l);
+
+        if (c->type) {
+            tmpBuf.append(c->type);
+        }
+
+        if (c->id) {
+            tmpBuf.append("(",1);
+            tmpBuf.append(c->id);
+            tmpBuf.append(")",1);
+        }
+
+        // what happens if type and id are both null?
+
+        l = Rp_ChainNextLink(l);
+    }
+
+    tmpBuf.append("\0",1);
+
+    return tmpBuf.bytes();
+}
+
+void
+Path::parent(const char *p)
+{
+    Rp_Chain *addList = NULL;
+    Rp_ChainLink *tmpLink = NULL;
+
+    addList = __parse(p);
+    // maybe make this an input flag, FirstLink (default) or LastLink
+    tmpLink = Rp_ChainFirstLink(addList);
+    Rp_ChainInsertChainBefore(_pathList,addList,_currLink);
+    _currLink = tmpLink;
+
+    __updateBuffer();
+
+    return;
+}
+
+size_t
+Path::degree()
+{
+    Rp_ChainLink *l = NULL;
+
+    l = _currLink;
+
+    if (l == NULL) {
+        return 0;
+    }
+
+    componentStruct *c = (componentStruct *) Rp_ChainGetValue(l);
+
+    if (c == NULL) {
+        return 0;
+    }
+
+    return c->degree;
+}
+
+void
+Path::degree(size_t d)
+{
+    if (d == 0) {
+        d = 1;
+    }
+
+    Rp_ChainLink *l = NULL;
+    componentStruct *last = NULL;
+
+    // update the current component from the current path
+    l = _currLink;
+
+    if (l != NULL) {
+        last = (componentStruct *) Rp_ChainGetValue(l);
+    } else {
+        // append the new component onto the current path
+        last = new componentStruct;
+        _currLink = Rp_ChainAppend(_pathList,last);
+    }
+
+    // adjust the degree field
+    last->degree = d;
+
+    __updateBuffer();
+
+    return;
+}
+
+const char *
+Path::path(void)
+{
+    return b.bytes();
+}
+
+void
+Path::path(const char *p)
+{
+    if (p != NULL) {
+        _pathList = __parse(p);
+        _currLink = Rp_ChainLastLink(_pathList);
+        __updateBuffer();
+    }
+    return;
+}
+
+#ifdef __cplusplus
+    }
+#endif // ifdef __cplusplus
+
Index: /tags/1.6.0/src/objects/RpPath.h
===================================================================
--- /tags/1.6.0/src/objects/RpPath.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpPath.h	(revision 6168)
@@ -0,0 +1,113 @@
+/*
+ * ======================================================================
+ *  Rappture::Path
+ *
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ * ----------------------------------------------------------------------
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifndef RAPPTURE_PATH_H
+#define RAPPTURE_PATH_H
+
+#include <RpOutcome.h>
+#include <RpInt.h>
+#include <RpChain.h>
+#include <RpSimpleBuffer.h>
+
+
+#ifdef __cplusplus
+    extern "C" {
+#endif // ifdef __cplusplus
+
+namespace Rappture {
+
+/**
+ * Block of memory that dynamically resizes itself as needed.
+ * The buffer also allows caller to massage the data it holds.
+ * allows for easy loading of files.
+ */
+
+class Path {
+public:
+    Path();
+    Path(const char* bytes);
+    Path(const Path& buffer);
+    /*
+    Path& operator=(const Path& b);
+    Path  operator+(const Path& b) const;
+    Path& operator+=(const Path& b);
+    */
+    virtual ~Path();
+
+    const char *ifs(const char *el);    // set/get comp separator
+    Path& add(const char *el);  // turns input into input.number(blah)
+    Path& del();                // turns input.number(blah) into input
+    bool eof();
+
+    Path& first();
+    Path& prev();
+    Path& next();
+    Path& last();
+    Path& clear();
+    size_t count();
+
+    // turns input.number(blah) into number(blah)
+    const char *component(void);    // get component of the current component
+    void component(const char *p);  // set component of the current component
+
+    // turns input.number(blah) into blah
+    const char *id(void);       // get the id of the current component
+    void id(const char *p);     // set the id of the current component
+
+    // turns input.number(blah) into number
+    const char *type(void);     // get the type of the current component
+    void type(const char *p);   // set the type of the current component
+
+    // turns input.number(blah) into input
+    const char *parent(void);   // get the parent of the current component
+    void parent(const char *p); // set the parent of the current component
+
+    // turns input.number2(blah) into 2
+    size_t degree(void);        // get the degree of the current component
+    void degree(size_t degree); // set the degree of the current component
+
+    const char *path(void);     // get the path
+    void path(const char *p);   // set the path
+
+private:
+
+    typedef struct {
+        const char *type;
+        const char *id;
+        size_t degree;
+    } componentStruct;
+
+    void __pathInit();
+    void __pathFree();
+    void __updateBuffer();
+    Rp_Chain *__parse(const char *p);
+    componentStruct *__createComponent(const char *p, int start,
+                        int end, int idOpenParen, int idCloseParen,
+                        size_t degree);
+    void __deleteComponent(componentStruct *c);
+
+    char _ifs;
+    Rp_Chain *_pathList;
+    Rp_ChainLink *_currLink;
+    SimpleCharBuffer b;
+    SimpleCharBuffer tmpBuf;
+
+};
+
+} // namespace Rappture
+
+#ifdef __cplusplus
+    }
+#endif // ifdef __cplusplus
+
+#endif // RAPPTURE_PATH_H
Index: /tags/1.6.0/src/objects/RpPlot.cc
===================================================================
--- /tags/1.6.0/src/objects/RpPlot.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpPlot.cc	(revision 6168)
@@ -0,0 +1,367 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 Plot Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpPlot.h"
+
+using namespace Rappture;
+
+const char Plot::format[]  = "RAPPTURE::PLOT::FORMAT";
+const char Plot::id[]      = "RAPPTURE::PLOT::ID";
+const char Plot::xaxis[]   = "xaxis";
+const char Plot::yaxis[]   = "yaxis";
+const char Plot::creator[] = "RAPPTURE::PLOT::CREATOR";
+
+/*
+const char *Plot::creator[] = {
+    "plot",
+    "user"
+};
+*/
+
+Plot::Plot ()
+    :   Object    (),
+        _curveList  (NULL)
+{
+    // this->path(autopath());
+    this->name("");
+    this->path("run");
+    this->label("");
+    this->desc("");
+}
+
+// copy constructor
+Plot::Plot ( const Plot& o )
+    :   Object(o)
+{
+    _curveList = Rp_ChainCreate();
+    Rp_ChainCopy(this->_curveList,o._curveList,&__curveCopyFxn);
+    // need to copy _curveList
+}
+
+// default destructor
+Plot::~Plot ()
+{
+    // remove the properties plot put in each curve
+    // unallocate _curveList
+
+    Rp_ChainLink *l = Rp_ChainFirstLink(_curveList);
+    while (l != NULL) {
+        Curve * c = (Curve *) Rp_ChainGetValue(l);
+        c->propremove(Plot::format);
+        c->propremove(Plot::id);
+        delete c;
+        c = NULL;
+        l = Rp_ChainNextLink(l);
+    }
+
+    Rp_ChainDestroy(_curveList);
+}
+
+/**********************************************************************/
+// METHOD: add()
+/// Add an xy curve to the object
+/**
+ * Add an xy curve to the object.
+ * returns curve id
+ */
+
+Plot&
+Plot::add(
+    size_t nPts,
+    double *x,
+    double *y,
+    const char *fmt,
+    const char *name)
+{
+    // Curve *c = Curve(autopath(),"","",__group());
+    Curve *c = new Curve("","","","");
+
+    if (c == NULL) {
+       // raise memory error and exit
+       return *this;
+    }
+
+    c->name(name);
+
+    // can't use "xaxis" kinda strings here have to allocate it forreal
+    c->axis(Plot::xaxis,"","","","",x,nPts);
+    c->axis(Plot::yaxis,"","","","",y,nPts);
+    c->propstr(Plot::format,fmt);
+    c->propstr(Plot::creator,"plot");
+
+    if (_curveList == NULL) {
+        _curveList = Rp_ChainCreate();
+        if (_curveList == NULL) {
+            // raise error and exit
+        }
+    }
+
+    Rp_ChainAppend(_curveList,c);
+
+    return *this;
+}
+
+
+/**********************************************************************/
+// METHOD: add()
+/// Add an xy curve to the object
+/**
+ * Add an xy curve to the object.
+ * returns curve id
+ */
+
+Plot&
+Plot::add(
+    Curve *c,
+    const char *name)
+{
+    if (c == NULL) {
+       // raise memory error and exit
+       return *this;
+    }
+
+    c->propstr(Plot::id,name);
+
+    if (_curveList == NULL) {
+        _curveList = Rp_ChainCreate();
+        if (_curveList == NULL) {
+            // raise error and exit
+        }
+    }
+
+    Rp_ChainAppend(_curveList,c);
+
+    return *this;
+}
+
+
+/**********************************************************************/
+// METHOD: count()
+/// return number of curves in this object
+/**
+ * count of the number of curves contained in this object
+ * returns curve count
+ */
+
+size_t
+Plot::count() const
+{
+    // return (size_t) Rp_ChainGetLength(_curveList);
+    return Rp_ChainGetLength(_curveList);
+}
+
+/**********************************************************************/
+// METHOD: curve()
+/// Retrieve an xy curve from the object
+/**
+ * Get a named xy curve.
+ * returns pointer to Rappture::Curve
+ */
+
+Curve *
+Plot::curve(
+    const char *name) const
+{
+    Curve *c = NULL;
+    Rp_ChainLink *l = NULL;
+
+    l = __searchCurveList(name);
+    if (l != NULL) {
+        c = (Curve *) Rp_ChainGetValue(l);
+    }
+    return c;
+}
+
+/**********************************************************************/
+// METHOD: getNthCurve()
+/// Return the Nth Curve object
+/**
+ * Return the Nth Curve
+ */
+
+Curve *
+Plot::getNthCurve(size_t n) const
+{
+    Rp_ChainLink *l = NULL;
+    l = Rp_ChainGetNthLink(_curveList,n);
+
+    if (l == NULL) {
+        return NULL;
+    }
+
+    return (Curve *) Rp_ChainGetValue(l);
+}
+
+Rp_ChainLink *
+Plot::__searchCurveList(const char *name) const
+{
+    if (name == NULL) {
+        return NULL;
+    }
+
+    if (_curveList == NULL) {
+        return NULL;
+    }
+
+    Rp_ChainLink *l = NULL;
+    Rp_ChainLink *retval = NULL;
+
+    // traverse the list looking for the match
+    l = Rp_ChainFirstLink(_curveList);
+    while (l != NULL) {
+        Curve *c = (Curve *) Rp_ChainGetValue(l);
+        const char *cname = c->propstr(Plot::id);
+        if (cname != NULL) {
+            if((*cname == *name) && (strcmp(cname,name) == 0)) {
+                // we found matching entry, return it
+                retval = l;
+                break;
+            }
+        }
+        l = Rp_ChainNextLink(l);
+    }
+
+    return retval;
+}
+
+int
+Plot::__curveCopyFxn(void **to, void *from)
+{
+    if (from == NULL) {
+        // return error, improper function call
+        return -1;
+    }
+
+    Curve *c = new Curve(*((Curve *)from));
+    *to = (void *) c;
+
+    return 0;
+}
+
+
+/**********************************************************************/
+// METHOD: configureFromTree(ClientData p)
+/// configure the object from a Rappture1.1 based tree
+/**
+ * Configure the object from a Rappture1.1 based tree
+ */
+
+// FIXME: this is an incomplete definition of how to
+//        configure a plot object from a tree because there
+//        currently is no xml description for plot objects
+void
+Plot::__configureFromTree(ClientData c)
+{
+    Rp_ParserXml *p = (Rp_ParserXml *)c;
+    if (p == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    Rp_TreeNode node = Rp_ParserXmlElement(p,NULL);
+
+    Rappture::Path pathObj(Rp_ParserXmlNodePath(p,node));
+
+    path(pathObj.parent());
+    name(Rp_ParserXmlNodeId(p,node));
+
+    return;
+}
+
+/**********************************************************************/
+// METHOD: dumpToTree(ClientData p)
+/// dump the object to a Rappture1.1 based tree
+/**
+ * Dump the object to a Rappture1.1 based tree
+ */
+
+void
+Plot::__dumpToTree(ClientData c)
+{
+    if (c == NULL) {
+        // FIXME: setup error
+        return;
+    }
+
+    Rp_ParserXml *parser = (Rp_ParserXml *)c;
+
+    Path p;
+
+    p.parent(path());
+    p.last();
+
+    Rp_ChainLink *l = NULL;
+
+    l = Rp_ChainFirstLink(_curveList);
+    while (l != NULL) {
+        Curve *c = (Curve *) Rp_ChainGetValue(l);
+
+        //find who created the curve
+        const char *ccreator = c->propstr(Plot::creator);
+        if ((ccreator != NULL) &&
+            (*ccreator == 'p') &&
+            (strcmp(ccreator,"plot") == 0)) {
+            // FIXME: check fields to see if the user specified value
+            // plot defined curve, use plot's labels in curve's xml
+            c->group(label());
+            c->label(label());
+            c->desc(desc());
+
+
+            const char *xlabel = propstr("xlabel");
+            const char *xdesc  = propstr("xdesc");
+            const char *xunits = propstr("xunits");
+            const char *xscale = propstr("xscale");
+            const char *ylabel = propstr("ylabel");
+            const char *ydesc  = propstr("ydesc");
+            const char *yunits = propstr("yunits");
+            const char *yscale = propstr("yscale");
+
+            if (xlabel || xdesc || xunits || xscale) {
+                Array1D *cxaxis = c->getAxis(Plot::xaxis);
+                cxaxis->label(xlabel);
+                cxaxis->desc(xdesc);
+                cxaxis->units(xunits);
+                cxaxis->scale(xscale);
+            }
+
+            if (ylabel || ydesc || yunits || yscale) {
+                Array1D *cyaxis = c->getAxis(Plot::yaxis);
+                cyaxis->label(ylabel);
+                cyaxis->desc(ydesc);
+                cyaxis->units(yunits);
+                cyaxis->scale(yscale);
+            }
+
+        }
+
+        c->dump(RPCONFIG_TREE,parser);
+        l = Rp_ChainNextLink(l);
+    }
+}
+
+/**********************************************************************/
+// METHOD: is()
+/// what kind of object is this
+/**
+ * return hex value telling what kind of object this is.
+ */
+
+const int
+Plot::is() const
+{
+    // return "plot" in hex
+    return 0x706C6F74;
+}
+
+// -------------------------------------------------------------------- //
Index: /tags/1.6.0/src/objects/RpPlot.h
===================================================================
--- /tags/1.6.0/src/objects/RpPlot.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpPlot.h	(revision 6168)
@@ -0,0 +1,68 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <errno.h>
+#include "RpObject.h"
+#include "RpChainHelper.h"
+#include "RpCurve.h"
+
+#ifndef RAPPTURE_PLOT_H
+#define RAPPTURE_PLOT_H
+
+namespace Rappture {
+
+class Plot : public Object
+{
+    public:
+
+        Plot ();
+
+        Plot ( const Plot& o );
+        virtual ~Plot ();
+
+        Plot& add ( size_t nPts,
+                    double *x,
+                    double *y,
+                    const char *fmt,
+                    const char *name);
+
+        Plot& add (Curve *c, const char *name);
+
+        // count the number of curves in the object
+        size_t count() const;
+
+        // retrieve a curve from the object
+        Curve *curve (const char* name) const;
+        Curve *getNthCurve(size_t n) const;
+
+        const int is() const;
+
+    private:
+
+        // hash or linked list of curves
+        Rp_Chain *_curveList;
+
+        static const char format[];
+        static const char id[];
+        static const char xaxis[];
+        static const char yaxis[];
+        static const char creator[];
+
+        // static const char *creator[];
+
+        Rp_ChainLink *__searchCurveList(const char *name) const;
+        static int __curveCopyFxn(void **to, void *from);
+
+        void __configureFromTree(ClientData c);
+        void __dumpToTree(ClientData c);
+};
+
+} // namespace Rappture
+
+#endif // RAPPTURE_PLOT_H
Index: /tags/1.6.0/src/objects/RpPool.c
===================================================================
--- /tags/1.6.0/src/objects/RpPool.c	(revision 6168)
+++ /tags/1.6.0/src/objects/RpPool.c	(revision 6168)
@@ -0,0 +1,458 @@
+/*
+ * bltPool.c --
+ *
+ * Copyright 2001 Silicon Metrics, Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that the above copyright notice appear in all
+ * copies and that both that the copyright notice and warranty
+ * disclaimer appear in supporting documentation, and that the names
+ * of Lucent Technologies any of their entities not be used in
+ * advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+ *
+ * Silicon Metrics disclaims all warranties with regard to this
+ * software, including all implied warranties of merchantability and
+ * fitness.  In no event shall Lucent Technologies be liable for any
+ * special, indirect or consequential damages or any damages
+ * whatsoever resulting from loss of use, data or profits, whether in
+ * an action of contract, negligence or other tortuous action, arising
+ * out of or in connection with the use or performance of this
+ * software.
+ */
+
+#include "RpInt.h"
+#include "RpPool.h"
+
+/*
+ * Rp_Pool --
+ *
+ *  Implements a pool memory allocator.
+ *
+ *    + It's faster allocating memory since malloc/free are called
+ *      only a fraction of the normal times.  Fixed size items can
+ *      be reused without deallocating/reallocating memory.
+ *    + You don't have the extra 8-16 byte overhead per malloc.
+ *    - Memory is freed only when the entire pool is destroyed.
+ *    - Memory is allocated in chunks. More memory is allocated
+ *      than used.
+ *    0 Depending upon allocation/deallocation patterns, locality
+ *      may be improved or degraded.
+ *
+ *      The pool is a chain of malloc'ed blocks.
+ *
+ *             +---------+  +---------+  +---------+
+ *       NULL<-| nextPtr |<-| nextPtr |<-| nextPtr |<- headPtr
+ *             |---------|  |---------|  |---------|
+ *             | chunk1  |  | chunk2  |  | chunk3  |
+ *             +---------+  |         |  |         |
+ *                          +---------+  |         |
+ *                                       |         |
+ *                                       |         |
+ *                                       +---------+
+ *
+ *      Each chunk contains an integral number of fixed size items.
+ *      The number of items doubles until a maximum size is reached
+ *      (each subsequent new chunk will be the maximum).  Chunks
+ *      are allocated only when needed (no more space is available
+ *      in the last chunk).
+ *
+ *      The chain of blocks is only freed when the entire pool is
+ *      destroyed.
+ *
+ *      A freelist of unused items also maintained. Each freed item
+ *      is prepended to a free list.  Before allocating new chunks
+ *      the freelist is examined to see if an unused items exist.
+ *
+ *               chunk1       chunk2       chunk3
+ *            +---------+  +---------+  +---------+
+ *      NULL<-| unused  |  |         |  |         |
+ *            +----^----+  +---------+  +---------+
+ *            | unused  |<-| unused  |<-| unused  |
+ *            +---------+  +---------+  +----^----+
+ *            |         |  |         |  | unused  |
+ *            +---------+  |         |  +----^----+
+ *                         |         |  |    |    |
+ *                         +---------+  +----|----+
+ *                                      | usused  |<- freePtr
+ *                                      +---------+
+ */
+
+#define POOL_MAX_CHUNK_SIZE      ((1<<16) - sizeof(Rp_PoolChain))
+
+#ifndef ALIGN
+#define ALIGN(a) \
+    (((size_t)a + (sizeof(void *) - 1)) & (~(sizeof(void *) - 1)))
+#endif /* ALIGN */
+
+static Rp_PoolAllocProc VariablePoolAllocItem;
+static Rp_PoolFreeProc  VariablePoolFreeItem;
+static Rp_PoolAllocProc FixedPoolAllocItem;
+static Rp_PoolFreeProc  FixedPoolFreeItem;
+static Rp_PoolAllocProc StringPoolAllocItem;
+static Rp_PoolFreeProc  StringPoolFreeItem;
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * VariablePoolAllocItem --
+ *
+ *      Returns a new item.  First check if there is any more space
+ *      left in the current chunk.  If there isn't then next check
+ *      the free list for unused items.  Finally allocate a new
+ *      chunk and return its first item.
+ *
+ * Results:
+ *      Returns a new (possible reused) item.
+ *
+ * Side Effects:
+ *      A new memory chunk may be allocated.
+ *
+ *----------------------------------------------------------------------
+ */
+static void *
+VariablePoolAllocItem(poolPtr, size)
+    struct Rp_PoolStruct *poolPtr;
+    size_t size;    /* Number of bytes to allocate. */
+{
+    Rp_PoolChain *chainPtr;
+    void *memPtr;
+
+    size = ALIGN(size);
+    if (size >= POOL_MAX_CHUNK_SIZE) {
+    /*
+     * Handle oversized requests by allocating a chunk to hold the
+     * single item and immediately placing it into the in-use list.
+     */
+        chainPtr = malloc(sizeof(Rp_PoolChain) + size);
+        if (poolPtr->headPtr == NULL) {
+            poolPtr->headPtr = chainPtr;
+        } else {
+            chainPtr->nextPtr = poolPtr->headPtr->nextPtr;
+            poolPtr->headPtr->nextPtr = chainPtr;
+        }
+        memPtr = (void *)chainPtr;
+    } else {
+        if (poolPtr->bytesLeft >= size) {
+            poolPtr->bytesLeft -= size;
+            memPtr = (char *)(poolPtr->headPtr + 1) + poolPtr->bytesLeft;
+        } else {
+            poolPtr->waste += poolPtr->bytesLeft;
+            /* Create a new block of items and prepend it to the in-use list */
+            poolPtr->bytesLeft = POOL_MAX_CHUNK_SIZE;
+            /* Allocate the requested chunk size, plus the header */
+            chainPtr = malloc(sizeof(Rp_PoolChain) + poolPtr->bytesLeft);
+            chainPtr->nextPtr = poolPtr->headPtr;
+            poolPtr->headPtr = chainPtr;
+            /* Peel off a new item. */
+            poolPtr->bytesLeft -= size;
+            memPtr = (char *)(chainPtr + 1) + poolPtr->bytesLeft;
+        }
+    }
+    return memPtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * VariablePoolFreeItem --
+ *
+ *      Placeholder for freeProc routine.  The pool memory is
+ *      not reclaimed or freed until the entire pool is released.
+ *
+ * Results:
+ *      None.
+ *
+ *----------------------------------------------------------------------
+ */
+/*ARGSUSED*/
+static void
+VariablePoolFreeItem(poolPtr, item)
+    struct Rp_PoolStruct *poolPtr;
+    void *item;
+{
+    /* Does nothing */
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * StringPoolAllocItem --
+ *
+ *      Returns a new item.  First check if there is any more space
+ *      left in the current chunk.  If there isn't then next check
+ *      the free list for unused items.  Finally allocate a new
+ *      chunk and return its first item.
+ *
+ * Results:
+ *      Returns a new (possible reused) item.
+ *
+ * Side Effects:
+ *      A new memory chunk may be allocated.
+ *
+ *----------------------------------------------------------------------
+ */
+static void *
+StringPoolAllocItem(poolPtr, size)
+    struct Rp_PoolStruct *poolPtr;
+    size_t size;        /* Number of bytes to allocate. */
+{
+    Rp_PoolChain *chainPtr;
+    void *memPtr;
+
+    if (size >= POOL_MAX_CHUNK_SIZE) {
+        /*
+         * Handle oversized requests by allocating a chunk to hold the
+         * single item and immediately placing it into the in-use list.
+         */
+        chainPtr = malloc(sizeof(Rp_PoolChain) + size);
+        if (poolPtr->headPtr == NULL) {
+            poolPtr->headPtr = chainPtr;
+        } else {
+            chainPtr->nextPtr = poolPtr->headPtr->nextPtr;
+            poolPtr->headPtr->nextPtr = chainPtr;
+        }
+        memPtr = (void *)chainPtr;
+    } else {
+        if (poolPtr->bytesLeft >= size) {
+            poolPtr->bytesLeft -= size;
+            memPtr = (char *)(poolPtr->headPtr + 1) + poolPtr->bytesLeft;
+        } else {
+            poolPtr->waste += poolPtr->bytesLeft;
+            /* Create a new block of items and prepend it to the
+             * in-use list */
+            poolPtr->bytesLeft = POOL_MAX_CHUNK_SIZE;
+            /* Allocate the requested chunk size, plus the header */
+            chainPtr = malloc(sizeof(Rp_PoolChain) + poolPtr->bytesLeft);
+            chainPtr->nextPtr = poolPtr->headPtr;
+            poolPtr->headPtr = chainPtr;
+            /* Peel off a new item. */
+            poolPtr->bytesLeft -= size;
+            memPtr = (char *)(chainPtr + 1) + poolPtr->bytesLeft;
+        }
+    }
+    return memPtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * StringPoolFreeItem --
+ *
+ *      Placeholder for freeProc routine.  String pool memory is
+ *      not reclaimed or freed until the entire pool is released.
+ *
+ * Results:
+ *      None.
+ *
+ *----------------------------------------------------------------------
+ */
+/*ARGSUSED*/
+static void
+StringPoolFreeItem(poolPtr, item)
+    struct Rp_PoolStruct *poolPtr;
+    void *item;
+{
+    /* Does nothing */
+}
+
+/*
+ *       The fixed size pool is a chain of malloc'ed blocks.
+ *
+ *             +---------+  +---------+  +---------+
+ *       NULL<-| nextPtr |<-| nextPtr |<-| nextPtr |<- headPtr
+ *             |---------|  |---------|  |---------|
+ *             | chunk1  |  | chunk2  |  | chunk3  |
+ *             +---------+  |         |  |         |
+ *                          +---------+  |         |
+ *                                       |         |
+ *                                       |         |
+ *                                       +---------+
+ *
+ *      Each chunk contains an integral number of fixed size items.
+ *      The number of items doubles until a maximum size is reached
+ *      (each subsequent new chunk will be the maximum).  Chunks
+ *      are allocated only when needed (no more space is available
+ *      in the last chunk).
+ *
+ *      The chain of blocks is only freed when the entire pool is
+ *      destroyed.
+ *
+ *      A freelist of unused items also maintained. Each freed item
+ *      is prepended to a free list.  Before allocating new chunks
+ *      the freelist is examined to see if an unused items exist.
+ *
+ *               chunk1       chunk2       chunk3
+ *            +---------+  +---------+  +---------+
+ *      NULL<-| unused  |  |         |  |         |
+ *            +----^----+  +---------+  +---------+
+ *            | unused  |<-| unused  |<-| unused  |
+ *            +---------+  +---------+  +----^----+
+ *            |         |  |         |  | unused  |
+ *            +---------+  |         |  +----^----+
+ *                         |         |  |    |    |
+ *                         +---------+  +----|----+
+ *                                      | usused  |<- freePtr
+ *                                      +---------+
+ */
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * FixedPoolFreeItem --
+ *
+ *      Returns a new item.  First check if there is any more space
+ *      left in the current chunk.  If there isn't then next check
+ *      the free list for unused items.  Finally allocate a new
+ *      chunk and return its first item.
+ *
+ * Results:
+ *      Returns a new (possible reused) item.
+ *
+ * Side Effects:
+ *      A new memory chunk may be allocated.
+ *
+ *----------------------------------------------------------------------
+ */
+static void *
+FixedPoolAllocItem(poolPtr, size)
+    struct Rp_PoolStruct *poolPtr;
+    size_t size;
+{
+    Rp_PoolChain *chainPtr;
+    void *newPtr;
+
+    size = ALIGN(size);
+    if (poolPtr->itemSize == 0) {
+        poolPtr->itemSize = size;
+    }
+    assert(size == poolPtr->itemSize);
+
+    if (poolPtr->bytesLeft > 0) {
+        poolPtr->bytesLeft -= poolPtr->itemSize;
+        newPtr = (char *)(poolPtr->headPtr + 1) + poolPtr->bytesLeft;
+    } else if (poolPtr->freePtr != NULL) { /* Reuse from the free list. */
+        /* Reuse items on the free list */
+        chainPtr = poolPtr->freePtr;
+        poolPtr->freePtr = chainPtr->nextPtr;
+        newPtr = (void *)chainPtr;
+    } else {            /* Allocate another block. */
+
+        /* Create a new block of items and prepend it to the in-use list */
+        poolPtr->bytesLeft = poolPtr->itemSize * (1 << poolPtr->poolSize);
+        if (poolPtr->bytesLeft < POOL_MAX_CHUNK_SIZE) {
+            poolPtr->poolSize++; /* Keep doubling the size of the new
+                                  * chunk up to a maximum size. */
+        }
+        /* Allocate the requested chunk size, plus the header */
+        chainPtr = malloc(sizeof(Rp_PoolChain) + poolPtr->bytesLeft);
+        chainPtr->nextPtr = poolPtr->headPtr;
+        poolPtr->headPtr = chainPtr;
+
+        /* Peel off a new item. */
+        poolPtr->bytesLeft -= poolPtr->itemSize;
+        newPtr = (char *)(poolPtr->headPtr + 1) + poolPtr->bytesLeft;
+    }
+    return newPtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * FixedPoolFreeItem --
+ *
+ *      Frees an item.  The actual memory is not freed.  The item
+ *      instead is prepended to a freelist where it may be reclaimed
+ *      and used again.
+ *
+ * Results:
+ *      None.
+ *
+ * Side Effects:
+ *      Item is placed on the pool's free list.
+ *
+ *----------------------------------------------------------------------
+ */
+static void
+FixedPoolFreeItem(poolPtr, item)
+    struct Rp_PoolStruct *poolPtr;
+    void *item;
+{
+    Rp_PoolChain *chainPtr = (Rp_PoolChain *)item;
+
+    /* Prepend the newly deallocated item to the free list. */
+    chainPtr->nextPtr = poolPtr->freePtr;
+    poolPtr->freePtr = chainPtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_PoolCreate --
+ *
+ *      Creates a new memory pool for fixed-size/variable-size/string
+ *      items.
+ *
+ * Results:
+ *      Returns a pointer to the newly allocated pool.
+ *
+ *---------------------------------------------------------------------- 
+ */
+
+Rp_Pool
+Rp_PoolCreate(type)
+    int type;
+{
+    struct Rp_PoolStruct *poolPtr;
+
+    poolPtr = malloc(sizeof(struct Rp_PoolStruct));
+    switch (type) {
+    case RP_VARIABLE_SIZE_ITEMS:
+        poolPtr->allocProc = VariablePoolAllocItem;
+        poolPtr->freeProc = VariablePoolFreeItem;
+        break;
+    case RP_FIXED_SIZE_ITEMS:
+        poolPtr->allocProc = FixedPoolAllocItem;
+        poolPtr->freeProc = FixedPoolFreeItem;
+        break;
+    case RP_STRING_ITEMS:
+        poolPtr->allocProc = StringPoolAllocItem;
+        poolPtr->freeProc = StringPoolFreeItem;
+        break;
+    }
+    poolPtr->headPtr = poolPtr->freePtr = NULL;
+    poolPtr->waste = poolPtr->bytesLeft = 0;
+    poolPtr->poolSize = poolPtr->itemSize = 0;
+    return poolPtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_PoolDestroy --
+ *
+ *      Destroys the given memory pool.  The chain of allocated blocks
+ *      are freed.  The is the only time that memory is actually freed.
+ *
+ * Results:
+ *      None.
+ *
+ * Side Effects:
+ *      All memory used by the pool is freed.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+Rp_PoolDestroy(poolPtr)
+    struct Rp_PoolStruct *poolPtr;
+{
+    register Rp_PoolChain *chainPtr, *nextPtr;
+
+    for (chainPtr = poolPtr->headPtr; chainPtr != NULL; chainPtr = nextPtr) {
+        nextPtr = chainPtr->nextPtr;
+        free(chainPtr);
+    }
+    free(poolPtr);
+}
+
Index: /tags/1.6.0/src/objects/RpPool.h
===================================================================
--- /tags/1.6.0/src/objects/RpPool.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpPool.h	(revision 6168)
@@ -0,0 +1,36 @@
+#ifndef RP_POOL_H
+#define RP_POOL_H
+
+typedef struct Rp_PoolChainStruct {
+   struct Rp_PoolChainStruct *nextPtr;
+} Rp_PoolChain;
+
+#define RP_STRING_ITEMS         0
+#define RP_FIXED_SIZE_ITEMS     1
+#define RP_VARIABLE_SIZE_ITEMS  2
+
+typedef struct Rp_PoolStruct *Rp_Pool;
+
+typedef void *(Rp_PoolAllocProc) _ANSI_ARGS_((Rp_Pool pool, size_t size));
+typedef void (Rp_PoolFreeProc) _ANSI_ARGS_((Rp_Pool pool, void *item));
+
+struct Rp_PoolStruct {
+    Rp_PoolChain *headPtr;  /* Chain of malloc'ed chunks. */
+    Rp_PoolChain *freePtr;  /* List of deleted items. This is only used
+                             * for fixed size items. */
+    size_t poolSize;        /* Log2 of # of items in the current block. */
+    size_t itemSize;        /* Size of an item. */
+    size_t bytesLeft;       /* # of bytes left in the current chunk. */
+    size_t waste;
+
+    Rp_PoolAllocProc *allocProc;
+    Rp_PoolFreeProc *freeProc;
+};
+
+extern Rp_Pool Rp_PoolCreate _ANSI_ARGS_((int type));
+extern void Rp_PoolDestroy _ANSI_ARGS_((Rp_Pool pool));
+
+#define Rp_PoolAllocItem(poolPtr, n) (*((poolPtr)->allocProc))(poolPtr, n)
+#define Rp_PoolFreeItem(poolPtr, item) (*((poolPtr)->freeProc))(poolPtr, item)
+
+#endif /* RP_POOL_H */
Index: /tags/1.6.0/src/objects/RpScatter.cc
===================================================================
--- /tags/1.6.0/src/objects/RpScatter.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpScatter.cc	(revision 6168)
@@ -0,0 +1,146 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 Scatter Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpScatter.h"
+
+using namespace Rappture;
+
+Scatter::Scatter ()
+    : Curve()
+{
+    this->path("");
+    this->label("");
+    this->desc("");
+    this->group("");
+    propstr("type","scatter");
+}
+
+Scatter::Scatter (const char *path)
+    : Curve()
+{
+    this->path(path);
+    this->label("");
+    this->desc("");
+    this->group("");
+    propstr("type","scatter");
+}
+
+Scatter::Scatter (const char *path, const char *label, const char *desc,
+              const char *group)
+    : Curve()
+{
+    this->path(path);
+    this->label(label);
+    this->desc(desc);
+    this->group(group);
+    propstr("type","scatter");
+}
+
+// copy constructor
+Scatter::Scatter ( const Scatter& o )
+    :   Curve(o)
+{
+    this->path(o.path());
+    this->label(o.label());
+    this->desc(o.desc());
+    this->group(o.group());
+
+    // need to copy _axisList
+}
+
+// default destructor
+Scatter::~Scatter ()
+{
+    // clean up dynamic memory
+    // unallocate the _axisList?
+
+}
+
+/**********************************************************************/
+// METHOD: xml()
+/// Return the xml of the object
+/**
+ * Return the xml of the object
+ */
+
+/*
+const char *
+Scatter::xml(size_t indent, size_t tabstop)
+{
+// FIXME: the xml function should just read an array
+// of path/value or path/function pairs, get the value by executing
+// the function if needed, and place the data in an xml tree.
+    Path p(path());
+
+    Array1D *tmpAxis = NULL;
+    size_t nmemb = 0;
+
+    const double *dataArr[dims()];
+
+    _tmpBuf.clear();
+
+    _tmpBuf.appendf(
+"<curve id=\"%s\">\n\
+    <about>\n\
+        <group>%s</group>\n\
+        <label>%s</label>\n\
+        <description>%s</description>\n\
+        <type>scatter</type>\n\
+    </about>\n", p.id(),group(),label(),desc());
+
+    for (size_t dim=0; dim < dims(); dim++) {
+        tmpAxis = getNthAxis(dim);
+        nmemb = tmpAxis->nmemb();
+        dataArr[dim] = tmpAxis->data();
+        _tmpBuf.appendf(
+"    <%s>\n\
+        <label>%s</label>\n\
+        <description>%s</description>\n\
+        <units>%s</units>\n\
+        <scale>%s</scale>\n\
+    </%s>\n",
+        tmpAxis->name(), tmpAxis->label(), tmpAxis->desc(),
+        tmpAxis->units(), tmpAxis->scale(), tmpAxis->name());
+    }
+
+    _tmpBuf.append("    <component>\n        <xy>\n");
+    for (size_t idx=0; idx < nmemb; idx++) {
+        for(size_t dim=0; dim < dims(); dim++) {
+            _tmpBuf.appendf("%10g",dataArr[dim][idx]);
+        }
+        _tmpBuf.append("\n",1);
+    }
+    _tmpBuf.append("        </xy>\n    </component>\n</curve>");
+    _tmpBuf.append("\0",1);
+
+    return _tmpBuf.bytes();
+}
+*/
+
+/**********************************************************************/
+// METHOD: is()
+/// what kind of object is this
+/**
+ * return hex value telling what kind of object this is.
+ */
+
+const int
+Scatter::is() const
+{
+    // return "scat" in hex
+    return 0x73636174;
+}
+
+
+// -------------------------------------------------------------------- //
+
Index: /tags/1.6.0/src/objects/RpScatter.h
===================================================================
--- /tags/1.6.0/src/objects/RpScatter.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpScatter.h	(revision 6168)
@@ -0,0 +1,46 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <errno.h>
+#include "RpCurve.h"
+
+#ifndef RAPPTURE_SCATTER_H
+#define RAPPTURE_SCATTER_H
+
+namespace Rappture {
+
+class Scatter : public Curve
+{
+    public:
+
+        Scatter();
+
+        Scatter(const char *path);
+
+        Scatter(const char *path,
+                const char *label,
+                const char *desc,
+                const char *group);
+
+        Scatter(const Scatter& o);
+
+        virtual ~Scatter();
+
+        // const char *xml();
+        const int is() const;
+
+    protected:
+};
+
+
+} // namespace Rappture
+
+/*--------------------------------------------------------------------------*/
+
+#endif // RAPPTURE_SCATTER_H
Index: /tags/1.6.0/src/objects/RpString.cc
===================================================================
--- /tags/1.6.0/src/objects/RpString.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpString.cc	(revision 6168)
@@ -0,0 +1,121 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture 2.0 String Object Source
+ *
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include "RpString.h"
+
+using namespace Rappture;
+
+String::String (
+            const char *path,
+            const char *val
+        )
+    :   Object    ()
+{
+    this->path(path);
+    this->label("");
+    this->desc("");
+    this->hints("");
+    this->def(val);
+    this->cur(val);
+    this->width(0);
+    this->height(0);
+}
+
+String::String (
+            const char *path,
+            const char *val,
+            const char *label,
+            const char *desc,
+            const char *hints,
+            size_t width,
+            size_t height
+        )
+    :   Object    ()
+{
+    this->path(path);
+    this->label(label);
+    this->desc(desc);
+    this->hints(hints);
+    this->def(val);
+    this->cur(val);
+    this->width(width);
+    this->height(height);
+}
+
+// copy constructor
+String::String ( const String& o )
+    :   Object(o)
+{
+    this->hints(o.hints());
+    this->def(o.def());
+    this->cur(o.cur());
+    this->width(o.width());
+    this->height(o.height());
+}
+
+// default destructor
+String::~String ()
+{
+    // clean up dynamic memory
+}
+
+/**********************************************************************/
+// METHOD: xml()
+/// view this object's xml
+/**
+ * View this object as an xml element returned as text.
+ */
+
+const char *
+String::xml(size_t indent, size_t tabstop)
+{
+    size_t l1width = indent + tabstop;
+    size_t l2width = indent + (2*tabstop);
+    const char *sp = "";
+
+    Path p(path());
+    _tmpBuf.clear();
+
+    _tmpBuf.appendf(
+"%12$*9$s<string id='%1$s'>\n\
+%12$*10$s<about>\n\
+%12$*11$s<label>%2$s</label>\n\
+%12$*11$s<description>%3$s</description>\n\
+%12$*11$s<hints>%4$s</hints>\n\
+%12$*10$s</about>\n\
+%12$*10$s<size>%5$ix%6$i</size>\n\
+%12$*10$s<default>%7$s</default>\n\
+%12$*10$s<current>%8$s</current>\n\
+%12$*9$s</string>\n",
+       p.id(),label(),desc(),hints(),width(),height(),def(),cur(),
+       indent, l1width, l2width, sp);
+
+    return _tmpBuf.bytes();
+}
+
+/**********************************************************************/
+// METHOD: is()
+/// what kind of object is this
+/**
+ * return hex value telling what kind of object this is.
+ */
+
+const int
+String::is() const
+{
+    // return "stri" in hex
+    return 0x73747269;
+}
+
+// -------------------------------------------------------------------- //
+
Index: /tags/1.6.0/src/objects/RpString.h
===================================================================
--- /tags/1.6.0/src/objects/RpString.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpString.h	(revision 6168)
@@ -0,0 +1,53 @@
+/*
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <errno.h>
+#include "RpObject.h"
+
+#ifndef RAPPTURE_STRING_H
+#define RAPPTURE_STRING_H
+
+namespace Rappture {
+
+class String : public Object
+{
+public:
+
+    String  ( const char *path,
+              const char *val);
+
+    String  ( const char *path,
+              const char *val,
+              const char *label,
+              const char *desc,
+              const char *hints,
+              size_t width,
+              size_t height);
+
+    String  ( const String& o );
+    virtual ~String ();
+
+    Accessor<const char *> def;
+    Accessor<const char *> cur;
+    Accessor<size_t> width;
+    Accessor<size_t> height;
+
+    const char *xml(size_t indent, size_t tabstop);
+    const int is() const;
+
+private:
+
+};
+
+} // namespace Rappture
+
+/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
+
+#endif // RAPPTURE_STRING_H
Index: /tags/1.6.0/src/objects/RpTest.cc
===================================================================
--- /tags/1.6.0/src/objects/RpTest.cc	(revision 6168)
+++ /tags/1.6.0/src/objects/RpTest.cc	(revision 6168)
@@ -0,0 +1,90 @@
+#include <iostream>
+#include <fstream>
+#include <cstring>
+#include <errno.h>
+#include <sys/stat.h>
+
+// size_t indent = 0;
+// size_t tabstop = 4;
+
+int testStringVal(
+    const char *testname,
+    const char *desc,
+    const char *expected,
+    const char *received)
+{
+    if ((!expected && received) ||
+        (expected && !received) ||
+        (expected && received && strcmp(expected,received) != 0)) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%s\"\n",expected);
+        printf("\treceived \"%s\"\n",received);
+        return 1;
+    }
+    return 0;
+}
+
+int testDoubleVal(
+    const char *testname,
+    const char *desc,
+    double expected,
+    double received)
+{
+    if (expected != received) {
+        printf("Error: %s\n", testname);
+        printf("\t%s\n", desc);
+        printf("\texpected \"%g\"\n",expected);
+        printf("\treceived \"%g\"\n",received);
+        return 1;
+    }
+    return 0;
+}
+
+size_t
+readFile (
+    const char *filePath,
+    const char **buf)
+{
+    if (buf == NULL) {
+        fprintf(stderr,"buf is NULL while opening file \"%s\"", filePath);
+        return 0;
+    }
+
+    FILE *f;
+    f = fopen(filePath, "rb");
+    if (f == NULL) {
+        fprintf(stderr,"can't open \"%s\": %s", filePath, strerror(errno));
+        return 0;
+    }
+    struct stat stat;
+    if (fstat(fileno(f), &stat) < 0) {
+        fprintf(stderr,"can't stat \"%s\": %s", filePath, strerror(errno));
+        return 0;
+    }
+    off_t size;
+    size = stat.st_size;
+    char* memblock;
+    memblock = new char [size+1];
+    if (memblock == NULL) {
+        fprintf(stderr,"can't allocate %zu bytes for file \"%s\": %s",
+            (size_t)size, filePath, strerror(errno));
+        fclose(f);
+        return 0;
+    }
+
+    size_t nRead;
+    nRead = fread(memblock, sizeof(char), size, f);
+    fclose(f);
+
+    if (nRead != (size_t)size) {
+        fprintf(stderr,"can't read %zu bytes from \"%s\": %s",
+            (size_t) size, filePath, strerror(errno));
+        return 0;
+    }
+
+    memblock[size] = '\0';
+    *buf = memblock;
+    return nRead;
+}
+
Index: /tags/1.6.0/src/objects/RpTest.h
===================================================================
--- /tags/1.6.0/src/objects/RpTest.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpTest.h	(revision 6168)
@@ -0,0 +1,8 @@
+
+int testStringVal( const char *testname, const char *desc,
+    const char *expected, const char *received);
+
+int testDoubleVal( const char *testname, const char *desc,
+    double expected, double received);
+
+size_t readFile ( const char *filePath, const char **buf);
Index: /tags/1.6.0/src/objects/RpTree.c
===================================================================
--- /tags/1.6.0/src/objects/RpTree.c	(revision 6168)
+++ /tags/1.6.0/src/objects/RpTree.c	(revision 6168)
@@ -0,0 +1,3131 @@
+
+/*
+ * bltTree.c --
+ *
+ * Copyright 1998-1999 Lucent Technologies, Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that the above copyright notice appear in all
+ * copies and that both that the copyright notice and warranty
+ * disclaimer appear in supporting documentation, and that the names
+ * of Lucent Technologies or any of their entities not be used in
+ * advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+ *
+ * Lucent Technologies disclaims all warranties with regard to this
+ * software, including all implied warranties of merchantability and
+ * fitness.  In no event shall Lucent Technologies be liable for any
+ * special, indirect or consequential damages or any damages
+ * whatsoever resulting from loss of use, data or profits, whether in
+ * an action of contract, negligence or other tortuous action, arising
+ * out of or in connection with the use or performance of this
+ * software.
+ *
+ * The "tree" data object was created by George A. Howlett.
+ */
+
+#include "RpInt.h"
+
+/* TODO:
+ *  traces and notifiers should be in one list in tree object.
+ *  notifier is always fired.
+ *  incorporate first/next tag routines ?
+ */
+
+
+#ifndef NO_TREE
+
+#include "RpTree.h"
+
+//static Tcl_InterpDeleteProc TreeInterpDeleteProc;
+static Rp_TreeApplyProc SizeApplyProc;
+//static Tcl_IdleProc NotifyIdleProc;
+
+#define TREE_THREAD_KEY     "BLT Tree Data"
+#define TREE_MAGIC          ((unsigned int) 0x46170277)
+#define TREE_DESTROYED      (1<<0)
+
+typedef struct Rp_TreeNodeStruct Node;
+typedef struct Rp_TreeClientStruct TreeClient;
+typedef struct Rp_TreeObjectStruct TreeObject;
+typedef struct Rp_TreeValueStruct Value;
+
+/*
+ * Rp_TreeValue --
+ *
+ *  Tree nodes contain heterogeneous data fields, represented as a
+ *  chain of these structures.  Each field contains the key of the
+ *  field (Rp_TreeKey) and the value (Tcl_Obj) containing the
+ *  actual data representations.
+ *
+ */
+struct Rp_TreeValueStruct {
+    Rp_TreeKey key;     /* String identifying the data field */
+    void *objPtr;       /* Data representation. */
+    Rp_Tree owner;      /* Non-NULL if privately owned. */
+    Rp_TreeValue next;  /* Next value in the chain. */
+};
+
+#include <stdio.h>
+#include <string.h>
+/* The following header is required for LP64 compilation */
+#include <stdlib.h>
+
+#include "RpHash.h"
+
+static void TreeDestroyValues _ANSI_ARGS_((Rp_TreeNode node));
+
+static Value *TreeFindValue _ANSI_ARGS_((Rp_TreeNode node,
+    Rp_TreeKey key));
+static Value *TreeCreateValue _ANSI_ARGS_((Rp_TreeNode node,
+    Rp_TreeKey key, int *newPtr));
+
+static int TreeDeleteValue _ANSI_ARGS_((Rp_TreeNode node,
+    Rp_TreeValue value));
+
+static Value *TreeFirstValue _ANSI_ARGS_((Rp_TreeNode,
+    Rp_TreeKeySearch *searchPtr));
+
+static Value *TreeNextValue _ANSI_ARGS_((Rp_TreeKeySearch *srchPtr));
+
+/*
+ * When there are this many entries per bucket, on average, rebuild
+ * the hash table to make it larger.
+ */
+
+#define REBUILD_MULTIPLIER  3
+#define START_LOGSIZE       5  /* Initial hash table size is 32. */
+#define MAX_LIST_VALUES     20 /* Convert to hash table when node
+                                * value list gets bigger than this
+                                * many values. */
+
+#if (SIZEOF_VOID_P == 8)
+#define RANDOM_INDEX(i)     HashOneWord(mask, downshift, i)
+#define BITSPERWORD         64
+#else
+
+/*
+ * The following macro takes a preliminary integer hash value and
+ * produces an index into a hash tables bucket list.  The idea is
+ * to make it so that preliminary values that are arbitrarily similar
+ * will end up in different buckets.  The hash function was taken
+ * from a random-number generator.
+ */
+#define RANDOM_INDEX(i) \
+    (((((long) (i))*1103515245) >> downshift) & mask)
+#define BITSPERWORD         32
+#endif
+
+#define DOWNSHIFT_START     (BITSPERWORD - 2)
+
+/*
+ * Procedure prototypes for static procedures in this file:
+ */
+
+
+#if (SIZEOF_VOID_P == 8)
+static Rp_Hash HashOneWord _ANSI_ARGS_((uint64_t mask, unsigned int downshift,
+    CONST void *key));
+
+#endif /* SIZEOF_VOID_P == 8 */
+
+/*
+ * The hash table below is used to keep track of all the Rp_TreeKeys
+ * created so far.
+ */
+static Rp_HashTable keyTable;
+static int keyTableInitialized = 0;
+
+typedef struct {
+    Rp_HashTable treeTable; /* Table of trees. */
+    unsigned int nextId;
+//    Tcl_Interp *interp;
+} TreeInterpData;
+
+typedef struct {
+//    Tcl_Interp *interp;
+    ClientData clientData;
+    Rp_TreeKey key;
+    unsigned int mask;
+    Rp_TreeNotifyEventProc *proc;
+    Rp_TreeNotifyEvent event;
+    int notifyPending;
+} EventHandler;
+
+typedef struct {
+    ClientData clientData;
+    char *keyPattern;
+    char *withTag;
+    Node *nodePtr;
+    unsigned int mask;
+    Rp_TreeTraceProc *proc;
+    TreeClient *clientPtr;
+    Rp_ChainLink *linkPtr;
+} TraceHandler;
+
+/*
+ * --------------------------------------------------------------
+ *
+ * GetTreeInterpData --
+ *
+ *  Creates or retrieves data associated with tree data objects
+ *  for a particular thread.  We're using Tcl_GetAssocData rather
+ *  than the Tcl thread routines so BLT can work with pre-8.0
+ *  Tcl versions that don't have thread support.
+ *
+ * Results:
+ *  Returns a pointer to the tree interpreter data.
+ *
+ * -------------------------------------------------------------- 
+ */
+/*
+static TreeInterpData *
+GetTreeInterpData(Tcl_Interp *interp)
+{
+    Tcl_InterpDeleteProc *proc;
+    TreeInterpData *dataPtr;
+
+    dataPtr = (TreeInterpData *)
+        Tcl_GetAssocData(interp, TREE_THREAD_KEY, &proc);
+    if (dataPtr == NULL) {
+        dataPtr = Rp_Malloc(sizeof(TreeInterpData));
+        assert(dataPtr);
+        dataPtr->interp = interp;
+        Tcl_SetAssocData(interp, TREE_THREAD_KEY, TreeInterpDeleteProc,
+                 dataPtr);
+        Rp_InitHashTable(&dataPtr->treeTable, BLT_STRING_KEYS);
+    }
+    return dataPtr;
+}
+*/
+
+/*
+ * --------------------------------------------------------------
+ *
+ * NewNode --
+ *
+ *  Creates a new node in the tree without installing it.  The
+ *  number of nodes in the tree is incremented and a unique serial
+ *  number is generated for the node.
+ *
+ *  Also, all nodes have a label.  If no label was provided (name
+ *  is NULL) then automatically generate one in the form "nodeN"
+ *  where N is the serial number of the node.
+ *
+ * Results:
+ *  Returns a pointer to the new node.
+ *
+ * -------------------------------------------------------------- 
+ */
+static Node *
+NewNode(TreeObject *treeObjPtr, CONST char *name, size_t inode)
+{
+    Node *nodePtr;
+
+    /* Create the node structure */
+    nodePtr = Rp_PoolAllocItem(treeObjPtr->nodePool, sizeof(Node));
+    nodePtr->inode = inode;
+    nodePtr->treeObject = treeObjPtr;
+    nodePtr->parent = NULL;
+    nodePtr->depth = 0;
+    nodePtr->flags = 0;
+    nodePtr->next = nodePtr->prev = NULL;
+    nodePtr->first = nodePtr->last = NULL;
+    nodePtr->nChildren = 0;
+    nodePtr->values = NULL;
+    nodePtr->logSize = 0;
+    nodePtr->nValues = 0;
+    nodePtr->label = NULL;
+    if (name != NULL) {
+        nodePtr->label = Rp_TreeGetKey(name);
+    }
+    treeObjPtr->nNodes++;
+    return nodePtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * ReleaseTagTable --
+ *
+ *---------------------------------------------------------------------- 
+ */
+static void
+ReleaseTagTable(Rp_TreeTagTable *tablePtr)
+{
+    tablePtr->refCount--;
+    if (tablePtr->refCount <= 0) {
+        Rp_HashEntry *hPtr;
+        Rp_HashSearch cursor;
+
+        for(hPtr = Rp_FirstHashEntry(&tablePtr->tagTable, &cursor);
+            hPtr != NULL; hPtr = Rp_NextHashEntry(&cursor)) {
+
+            Rp_TreeTagEntry *tPtr;
+
+            tPtr = Rp_GetHashValue(hPtr);
+            Rp_DeleteHashTable(&tPtr->nodeTable);
+            Rp_Free(tPtr);
+        }
+        Rp_DeleteHashTable(&tablePtr->tagTable);
+        Rp_Free(tablePtr);
+    }
+}
+
+/*
+ * ----------------------------------------------------------------------
+ *
+ * ResetDepths --
+ *
+ *  Called after moving a node, resets the depths of each node
+ *  for the entire branch (node and it's decendants).
+ *
+ * Results:
+ *  None.
+ *
+ * ---------------------------------------------------------------------- 
+ */
+static void
+ResetDepths(
+    Node *nodePtr,      /* Root node. */
+    int depth)          /* Depth of the node. */
+{
+    nodePtr->depth = depth;
+    /* Also reset the depth for each descendant node. */
+    for (nodePtr = nodePtr->first; nodePtr != NULL; nodePtr = nodePtr->next) {
+        ResetDepths(nodePtr, depth + 1);
+    }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * LinkBefore --
+ *
+ *  Inserts a link preceding a given link.
+ *
+ * Results:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+static void
+LinkBefore(
+    Node *parentPtr,    /* Parent to hold the new entry. */
+    Node *nodePtr,      /* New node to be inserted. */
+    Node *beforePtr)    /* Node to link before. */
+{
+    if (parentPtr->first == NULL) {
+        parentPtr->last = parentPtr->first = nodePtr;
+    } else if (beforePtr == NULL) { /* Append onto the end of the chain */
+        nodePtr->next = NULL;
+        nodePtr->prev = parentPtr->last;
+        parentPtr->last->next = nodePtr;
+        parentPtr->last = nodePtr;
+    } else {
+        nodePtr->prev = beforePtr->prev;
+        nodePtr->next = beforePtr;
+        if (beforePtr == parentPtr->first) {
+            parentPtr->first = nodePtr;
+        } else {
+            beforePtr->prev->next = nodePtr;
+        }
+        beforePtr->prev = nodePtr;
+    }
+    parentPtr->nChildren++;
+    nodePtr->parent = parentPtr;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * UnlinkNode --
+ *
+ *  Unlinks a link from the chain. The link is not deallocated,
+ *  but only removed from the chain.
+ *
+ * Results:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+static void
+UnlinkNode(Node *nodePtr)
+{
+    Node *parentPtr;
+    int unlinked;       /* Indicates if the link is actually
+                         * removed from the chain. */
+    parentPtr = nodePtr->parent;
+    unlinked = FALSE;
+    if (parentPtr->first == nodePtr) {
+        parentPtr->first = nodePtr->next;
+        unlinked = TRUE;
+    }
+    if (parentPtr->last == nodePtr) {
+        parentPtr->last = nodePtr->prev;
+        unlinked = TRUE;
+    }
+    if (nodePtr->next != NULL) {
+        nodePtr->next->prev = nodePtr->prev;
+        unlinked = TRUE;
+    }
+    if (nodePtr->prev != NULL) {
+        nodePtr->prev->next = nodePtr->next;
+        unlinked = TRUE;
+    }
+    if (unlinked) {
+        parentPtr->nChildren--;
+    }
+    nodePtr->prev = nodePtr->next = NULL;
+}
+
+/*
+ * --------------------------------------------------------------
+ *
+ * FreeNode --
+ *
+ *  Unlinks a given node from the tree, removes its data, and
+ *  frees memory allocated to the node.
+ *
+ * Results:
+ *  None.
+ *
+ * -------------------------------------------------------------- 
+ */
+static void
+FreeNode(TreeObject *treeObjPtr, Node *nodePtr)
+{
+    Rp_HashEntry *hPtr;
+
+    /*
+     * Destroy any data fields associated with this node.
+     */
+    TreeDestroyValues(nodePtr);
+    UnlinkNode(nodePtr);
+    treeObjPtr->nNodes--;
+    hPtr = Rp_FindHashEntry(&treeObjPtr->nodeTable, (char *)nodePtr->inode);
+    assert(hPtr);
+    Rp_DeleteHashEntry(&treeObjPtr->nodeTable, hPtr);
+    Rp_PoolFreeItem(treeObjPtr->nodePool, (char *)nodePtr);
+}
+
+/*
+ * --------------------------------------------------------------
+ *
+ * NewTreeObject --
+ *
+ *  Creates and initializes a new tree object. Trees always
+ *  contain a root node, so one is allocated here.
+ *
+ * Results:
+ *  Returns a pointer to the new tree object is successful, NULL
+ *  otherwise.  If a tree can't be generated, interp->result will
+ *  contain an error message.
+ *
+ * -------------------------------------------------------------- */
+static TreeObject *
+// NewTreeObject(TreeInterpData *dataPtr, CONST char *treeName)
+NewTreeObject(CONST char *treeName)
+{
+    TreeObject *treeObjPtr;
+    int isNew;
+    Rp_HashEntry *hPtr;
+
+    treeObjPtr = Rp_Calloc(1, sizeof(TreeObject));
+    if (treeObjPtr == NULL) {
+        fprintf(stderr, "can't allocate tree");
+        return NULL;
+    }
+    treeObjPtr->name = Rp_Strdup(treeName);
+    //treeObjPtr->interp = interp;
+    treeObjPtr->valuePool = Rp_PoolCreate(RP_FIXED_SIZE_ITEMS);
+    treeObjPtr->nodePool = Rp_PoolCreate(RP_FIXED_SIZE_ITEMS);
+    treeObjPtr->clients = Rp_ChainCreate();
+    treeObjPtr->depth = 1;
+    treeObjPtr->notifyFlags = 0;
+    Rp_InitHashTableWithPool(&treeObjPtr->nodeTable, RP_ONE_WORD_KEYS);
+
+    hPtr = Rp_CreateHashEntry(&treeObjPtr->nodeTable, (char *)0, &isNew);
+    treeObjPtr->root = NewNode(treeObjPtr, treeName, 0);
+    Rp_SetHashValue(hPtr, treeObjPtr->root);
+
+    // treeObjPtr->tablePtr = &dataPtr->treeTable;
+    // treeObjPtr->hashPtr = Rp_CreateHashEntry(treeObjPtr->tablePtr, treeName,
+    //    &isNew);
+    // Rp_SetHashValue(treeObjPtr->hashPtr, treeObjPtr);
+    treeObjPtr->tablePtr = NULL;
+    treeObjPtr->hashPtr = NULL;
+
+    return treeObjPtr;
+}
+
+/*
+static TreeObject *
+FindTreeInNamespace(
+*/
+//    TreeInterpData *dataPtr,    /* Interpreter-specific data. */
+/*    Tcl_Namespace *nsPtr,
+    CONST char *treeName)
+{
+    Tcl_DString dString;
+    char *name;
+    Rp_HashEntry *hPtr;
+
+    name = Rp_GetQualifiedName(nsPtr, treeName, &dString);
+    hPtr = Rp_FindHashEntry(&dataPtr->treeTable, name);
+    Tcl_DStringFree(&dString);
+    if (hPtr != NULL) {
+        return Rp_GetHashValue(hPtr);
+    }
+    return NULL;
+}
+*/
+
+/*
+ * ----------------------------------------------------------------------
+ *
+ * GetTreeObject --
+ *
+ *  Searches for the tree object associated by the name given.
+ *
+ * Results:
+ *  Returns a pointer to the tree if found, otherwise NULL.
+ *
+ * ----------------------------------------------------------------------
+ */
+//static TreeObject *
+//GetTreeObject(Tcl_Interp *interp, CONST char *name, int flags)
+//{
+//    CONST char *treeName;
+//    Tcl_Namespace *nsPtr;   /* Namespace associated with the tree object.
+//                             * If NULL, indicates to look in first the
+//                             * current namespace and then the global
+//                             * for the tree. */
+//    TreeInterpData *dataPtr;    /* Interpreter-specific data. */
+//    TreeObject *treeObjPtr;
+//
+//    treeObjPtr = NULL;
+//    if (Rp_ParseQualifiedName(interp, name, &nsPtr, &treeName) != TCL_OK) {
+//        Tcl_AppendResult(interp, "can't find namespace in \"", name, "\"",
+//            (char *)NULL);
+//        return NULL;
+//    }
+//    dataPtr = GetTreeInterpData(interp);
+//    if (nsPtr != NULL) {
+//        treeObjPtr = FindTreeInNamespace(dataPtr, nsPtr, treeName);
+//    } else {
+//        if (flags & NS_SEARCH_CURRENT) {
+//            /* Look first in the current namespace. */
+//            nsPtr = Tcl_GetCurrentNamespace(interp);
+//            treeObjPtr = FindTreeInNamespace(dataPtr, nsPtr, treeName);
+//        }
+//        if ((treeObjPtr == NULL) && (flags & NS_SEARCH_GLOBAL)) {
+//            nsPtr = Tcl_GetGlobalNamespace(interp);
+//            treeObjPtr = FindTreeInNamespace(dataPtr, nsPtr, treeName);
+//        }
+//    }
+//    return treeObjPtr;
+//}
+
+/*
+ * ----------------------------------------------------------------------
+ *
+ * TeardownTree --
+ *
+ *  Destroys an entire branch.  This is a special purpose routine
+ *  used to speed up the final clean up of the tree.
+ *
+ * Results:
+ *  None.
+ *
+ * ---------------------------------------------------------------------- 
+ */
+static void
+TeardownTree(TreeObject *treeObjPtr, Node *nodePtr)
+{
+    if (nodePtr->first != NULL) {
+        Node *childPtr, *nextPtr;
+
+        for (childPtr = nodePtr->first; childPtr != NULL; childPtr = nextPtr) {
+            nextPtr = childPtr->next;
+            TeardownTree(treeObjPtr, childPtr);
+        }
+    }
+    if (nodePtr->values != NULL) {
+        TreeDestroyValues(nodePtr);
+    }
+    Rp_PoolFreeItem(treeObjPtr->nodePool, (char *)nodePtr);
+}
+
+static void
+DestroyTreeObject(TreeObject *treeObjPtr)
+{
+    Rp_ChainLink *linkPtr;
+    TreeClient *clientPtr;
+
+    treeObjPtr->flags |= TREE_DESTROYED;
+    treeObjPtr->nNodes = 0;
+
+    /* Remove the remaining clients. */
+    for (linkPtr = Rp_ChainFirstLink(treeObjPtr->clients); linkPtr != NULL;
+        linkPtr = Rp_ChainNextLink(linkPtr)) {
+
+        clientPtr = Rp_ChainGetValue(linkPtr);
+        Rp_ChainDestroy(clientPtr->events);
+        Rp_ChainDestroy(clientPtr->traces);
+        Rp_Free(clientPtr);
+    }
+    Rp_ChainDestroy(treeObjPtr->clients);
+
+    TeardownTree(treeObjPtr, treeObjPtr->root);
+    Rp_PoolDestroy(treeObjPtr->nodePool);
+    Rp_PoolDestroy(treeObjPtr->valuePool);
+    Rp_DeleteHashTable(&treeObjPtr->nodeTable);
+
+    if (treeObjPtr->hashPtr != NULL) {
+        /* Remove the entry from the global tree table. */
+        //Rp_DeleteHashEntry(treeObjPtr->tablePtr, treeObjPtr->hashPtr);
+        //if ((treeObjPtr->tablePtr->numEntries == 0) && (keyTableInitialized)) {
+        //    keyTableInitialized = FALSE;
+        //    Rp_DeleteHashTable(&keyTable);
+        //}
+    }
+    if (treeObjPtr->name != NULL) {
+        Rp_Free(treeObjPtr->name);
+    }
+    Rp_Free(treeObjPtr);
+}
+
+/*
+ * -----------------------------------------------------------------------
+ *
+ * TreeInterpDeleteProc --
+ *
+ *  This is called when the interpreter hosting the tree object
+ *  is deleted from the interpreter.
+ *
+ * Results:
+ *  None.
+ *
+ * Side effects:
+ *  Destroys all remaining trees and removes the hash table
+ *  used to register tree names.
+ *
+ * ------------------------------------------------------------------------
+ */
+/* ARGSUSED */
+//static void
+//TreeInterpDeleteProc(
+//    ClientData clientData,  /* Interpreter-specific data. */
+//    )
+//    Tcl_Interp *interp)
+//{
+//    TreeInterpData *dataPtr = clientData;
+//    Rp_HashEntry *hPtr;
+//    Rp_HashSearch cursor;
+//    TreeObject *treeObjPtr;
+//
+//    for (hPtr = Rp_FirstHashEntry(&dataPtr->treeTable, &cursor);
+//        hPtr != NULL; hPtr = Rp_NextHashEntry(&cursor)) {
+//
+//        treeObjPtr = (TreeObject *)Rp_GetHashValue(hPtr);
+//        treeObjPtr->hashPtr = NULL;
+//        DestroyTreeObject(treeObjPtr);
+//    }
+//    if (keyTableInitialized) {
+//        keyTableInitialized = FALSE;
+//        Rp_DeleteHashTable(&keyTable);
+//    }
+//    Rp_DeleteHashTable(&dataPtr->treeTable);
+//    // Tcl_DeleteAssocData(interp, TREE_THREAD_KEY);
+//    Rp_Free(dataPtr);
+//}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * NotifyIdleProc --
+ *
+ *  Used to invoke event handler routines at some idle point.
+ *  This routine is called from the Tcl event loop.  Errors
+ *  generated by the event handler routines are backgrounded.
+ *
+ * Results:
+ *  None.
+ *
+ *---------------------------------------------------------------------- 
+ */
+//static void
+//NotifyIdleProc(ClientData clientData)
+//{
+//    EventHandler *notifyPtr = clientData;
+//    int result;
+//
+//    notifyPtr->notifyPending = FALSE;
+//    notifyPtr->mask |= TREE_NOTIFY_ACTIVE;
+//    result = (*notifyPtr->proc)(notifyPtr->clientData, &notifyPtr->event);
+//    notifyPtr->mask &= ~TREE_NOTIFY_ACTIVE;
+//    if (result != TCL_OK) {
+//        Tcl_BackgroundError(notifyPtr->interp);
+//    }
+//}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * CheckEventHandlers --
+ *
+ *  Traverses the list of client event callbacks and checks
+ *  if one matches the given event.  A client may trigger an
+ *  action that causes the tree to notify it.  The can be
+ *  prevented by setting the TREE_NOTIFY_FOREIGN_ONLY bit in
+ *  the event handler.
+ *
+ *  If a matching handler is found, a callback may be called either
+ *  immediately or at the next idle time depending upon the
+ *  TREE_NOTIFY_WHENIDLE bit.
+ *
+ *  Since a handler routine may trigger yet another call to
+ *  itself, callbacks are ignored while the event handler is
+ *  executing.
+ *
+ * Results:
+ *  None.
+ *
+ *---------------------------------------------------------------------- 
+ */
+//static void
+//CheckEventHandlers(
+//    TreeClient *clientPtr,
+//    int isSource,       /* Indicates if the client is the source
+//                         * of the event. */
+//    Rp_TreeNotifyEvent *eventPtr)
+//{
+//    Rp_ChainLink *linkPtr, *nextPtr;
+//    EventHandler *notifyPtr;
+//
+//    eventPtr->tree = clientPtr;
+//    for (linkPtr = Rp_ChainFirstLink(clientPtr->events); 
+//        linkPtr != NULL; linkPtr = nextPtr) {
+//        nextPtr = Rp_ChainNextLink(linkPtr);
+//        notifyPtr = Rp_ChainGetValue(linkPtr);
+//        if ((notifyPtr->mask & TREE_NOTIFY_ACTIVE) ||
+//            (notifyPtr->mask & eventPtr->type) == 0) {
+//            continue;       /* Ignore callbacks that are generated
+//                             * inside of a notify handler routine. */
+//        }
+//        if ((isSource) && (notifyPtr->mask & TREE_NOTIFY_FOREIGN_ONLY)) {
+//            continue;       /* Don't notify yourself. */
+//        }
+//        if (notifyPtr->mask & TREE_NOTIFY_WHENIDLE) {
+//            if (!notifyPtr->notifyPending) {
+//                notifyPtr->notifyPending = TRUE;
+//                notifyPtr->event = *eventPtr;
+//                Tcl_DoWhenIdle(NotifyIdleProc, notifyPtr);
+//            }
+//        } else {
+//            int result;
+//
+//            notifyPtr->mask |= TREE_NOTIFY_ACTIVE;
+//            result = (*notifyPtr->proc) (notifyPtr->clientData, eventPtr);
+//            notifyPtr->mask &= ~TREE_NOTIFY_ACTIVE;
+//            if (result != TCL_OK) {
+//                Tcl_BackgroundError(notifyPtr->interp);
+//            }
+//        }
+//    }
+//}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * NotifyClients --
+ *
+ *  Traverses the list of clients for a particular tree and
+ *  notifies each client that an event occurred.  Clients 
+ *  indicate interest in a particular event through a bit
+ *  flag.
+ *
+ *---------------------------------------------------------------------- 
+ */
+//static void
+//NotifyClients(
+//    TreeClient *sourcePtr,
+//    TreeObject *treeObjPtr,
+//    Node *nodePtr,
+//    int eventFlag)
+//{
+//    Rp_ChainLink *linkPtr;
+//    Rp_TreeNotifyEvent event;
+//    TreeClient *clientPtr;
+//    int isSource;
+//
+//    event.type = eventFlag;
+//    event.inode = nodePtr->inode;
+//
+//    /* 
+//     * Issue callbacks to each client indicating that a new node has
+//     * been created.
+//     */
+//    for (linkPtr = Rp_ChainFirstLink(treeObjPtr->clients);
+//        linkPtr != NULL; linkPtr = Rp_ChainNextLink(linkPtr)) {
+//        clientPtr = Rp_ChainGetValue(linkPtr);
+//        isSource = (clientPtr == sourcePtr);
+//        CheckEventHandlers(clientPtr, isSource, &event);
+//    }
+//}
+
+static void
+FreeValue(Node *nodePtr, Value *valuePtr)
+{
+    if (valuePtr->objPtr != NULL) {
+        // Tcl_DecrRefCount(valuePtr->objPtr);
+    }
+    Rp_PoolFreeItem(nodePtr->treeObject->valuePool, valuePtr);
+}
+
+
+/* Public Routines */
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeGetKey --
+ *
+ *  Given a string, returns a unique identifier for the string.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_TreeKey
+Rp_TreeGetKey(string)
+    CONST char *string;     /* String to convert. */
+{
+    Rp_HashEntry *hPtr;
+    int isNew;
+
+    if (!keyTableInitialized) {
+        Rp_InitHashTable(&keyTable, RP_STRING_KEYS);
+        keyTableInitialized = 1;
+    }
+    hPtr = Rp_CreateHashEntry(&keyTable, string, &isNew);
+    return (Rp_TreeKey)Rp_GetHashKey(&keyTable, hPtr);
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeCreateNode --
+ *
+ *  Creates a new node in the given parent node.  The name and
+ *  position in the parent are also provided.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_TreeNode
+Rp_TreeCreateNode(
+    TreeClient *clientPtr,  /* The tree client that is creating
+                             * this node.  If NULL, indicates to
+                             * trigger notify events on behalf of
+                             * the initiating client also. */
+    Node *parentPtr,        /* Parent node where the new node will
+                             * be inserted. */
+    CONST char *name,       /* Name of node. */
+    int pos)                /* Position in the parent's list of children
+                             * where to insert the new node. */
+{
+    Rp_HashEntry *hPtr;
+    Node *beforePtr;
+    Node *nodePtr;  /* Node to be inserted. */
+    TreeObject *treeObjPtr;
+    size_t inode;
+    int isNew;
+
+    treeObjPtr = parentPtr->treeObject;
+
+    /* Generate an unique serial number for this node.  */
+    do {
+        inode = treeObjPtr->nextInode++;
+        hPtr = Rp_CreateHashEntry(&treeObjPtr->nodeTable,(char *)inode,
+                   &isNew);
+    } while (!isNew);
+    nodePtr = NewNode(treeObjPtr, name, inode);
+    Rp_SetHashValue(hPtr, nodePtr);
+
+    if ((pos == -1) || (pos >= (int)parentPtr->nChildren)) {
+        beforePtr = NULL;
+    } else {
+        beforePtr = parentPtr->first;
+        while ((pos > 0) && (beforePtr != NULL)) {
+            pos--;
+            beforePtr = beforePtr->next;
+        }
+    }
+    LinkBefore(parentPtr, nodePtr, beforePtr);
+    nodePtr->depth = parentPtr->depth + 1;
+    /*
+     * Issue callbacks to each client indicating that a new node has
+     * been created.
+     */
+    // NotifyClients(clientPtr, treeObjPtr, nodePtr, TREE_NOTIFY_CREATE);
+    return nodePtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeCreateNodeWithId --
+ *
+ *  Like Rp_TreeCreateNode, but provides a specific id to use
+ *  for the node.  If the tree already contains a node by that
+ *  id, NULL is returned.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_TreeNode
+Rp_TreeCreateNodeWithId(
+    TreeClient *clientPtr,
+    Node *parentPtr,        /* Parent node where the new node will
+                             * be inserted. */
+    CONST char *name,       /* Name of node. */
+    size_t inode,           /* Requested id of the new node. If a
+                             * node by this id already exists in the
+                             * tree, no node is created. */
+    int position)           /* Position in the parent's list of children
+                             * where to insert the new node. */
+{
+    Rp_HashEntry *hPtr;
+    Node *beforePtr;
+    Node *nodePtr;  /* Node to be inserted. */
+    TreeObject *treeObjPtr;
+    int isNew;
+
+    treeObjPtr = parentPtr->treeObject;
+    hPtr = Rp_CreateHashEntry(&treeObjPtr->nodeTable,(char *)inode, &isNew);
+    if (!isNew) {
+        return NULL;
+    }
+    nodePtr = NewNode(treeObjPtr, name, inode);
+    Rp_SetHashValue(hPtr, nodePtr);
+
+    if ((position == -1) || (position >= (int)parentPtr->nChildren)) {
+        beforePtr = NULL;
+    } else {
+        beforePtr = parentPtr->first;
+        while ((position > 0) && (beforePtr != NULL)) {
+            position--;
+            beforePtr = beforePtr->next;
+        }
+    }
+    LinkBefore(parentPtr, nodePtr, beforePtr);
+    nodePtr->depth = parentPtr->depth + 1;
+    /*
+     * Issue callbacks to each client indicating that a new node has
+     * been created.
+     */
+    // NotifyClients(clientPtr, treeObjPtr, nodePtr, TREE_NOTIFY_CREATE);
+    return nodePtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeMoveNode --
+ *
+ *  Move an entry into a new location in the hierarchy.
+ *
+ *----------------------------------------------------------------------
+ */
+/*ARGSUSED*/
+int
+Rp_TreeMoveNode(
+    TreeClient *clientPtr,
+    Node *nodePtr,
+    Node *parentPtr,
+    Node *beforePtr)
+{
+    // TreeObject *treeObjPtr = nodePtr->treeObject;
+    int newDepth;
+
+    if (nodePtr == beforePtr) {
+        return RP_ERROR;
+    }
+    if ((beforePtr != NULL) && (beforePtr->parent != parentPtr)) {
+        return RP_ERROR;
+    }
+    if (nodePtr->parent == NULL) {
+        return RP_ERROR;   /* Can't move root. */
+    }
+    /* Verify that the node isn't an ancestor of the new parent. */
+    if (Rp_TreeIsAncestor(nodePtr, parentPtr)) {
+        return RP_ERROR;
+    }
+    UnlinkNode(nodePtr);
+    /*
+     * Relink the node as a child of the new parent.
+     */
+    LinkBefore(parentPtr, nodePtr, beforePtr);
+    newDepth = parentPtr->depth + 1;
+    if (nodePtr->depth != newDepth) {
+        /* Reset the depths of all descendant nodes. */
+        ResetDepths(nodePtr, newDepth);
+    }
+
+    /*
+     * Issue callbacks to each client indicating that a node has
+     * been moved.
+     */
+    // NotifyClients(clientPtr, treeObjPtr, nodePtr, TREE_NOTIFY_MOVE);
+    return RP_OK;
+}
+
+int
+Rp_TreeDeleteNode(TreeClient *clientPtr, Node *nodePtr)
+{
+    TreeObject *treeObjPtr = nodePtr->treeObject;
+    Node *childPtr, *nextPtr;
+
+    /* In depth-first order, delete each descendant node. */
+    for (childPtr = nodePtr->first; childPtr != NULL; childPtr = nextPtr) {
+        nextPtr = childPtr->next;
+        Rp_TreeDeleteNode(clientPtr, childPtr);
+    }
+    /*
+     * Issue callbacks to each client indicating that the node can
+     * no longer be used.
+     */
+    // NotifyClients(clientPtr, treeObjPtr, nodePtr, TREE_NOTIFY_DELETE);
+
+    /* Now remove the actual node. */
+    FreeNode(treeObjPtr, nodePtr);
+    return RP_OK;
+}
+
+Rp_TreeNode
+Rp_TreeGetNode(TreeClient *clientPtr, size_t inode)
+{
+    TreeObject *treeObjPtr = clientPtr->treeObject;
+    Rp_HashEntry *hPtr;
+
+    hPtr = Rp_FindHashEntry(&treeObjPtr->nodeTable, (char *)inode);
+    if (hPtr != NULL) {
+        return (Rp_TreeNode)Rp_GetHashValue(hPtr);
+    }
+    return NULL;
+}
+
+Rp_TreeTrace
+Rp_TreeCreateTrace(
+    TreeClient *clientPtr,
+    Node *nodePtr,
+    CONST char *keyPattern,
+    CONST char *tagName,
+    unsigned int mask,
+    Rp_TreeTraceProc *proc,
+    ClientData clientData)
+{
+    TraceHandler *tracePtr;
+
+    tracePtr = Rp_Calloc(1, sizeof (TraceHandler));
+    assert(tracePtr);
+    tracePtr->linkPtr = Rp_ChainAppend(clientPtr->traces, tracePtr);
+    if (keyPattern != NULL) {
+        tracePtr->keyPattern = Rp_Strdup(keyPattern);
+    }
+    if (tagName != NULL) {
+        tracePtr->withTag = Rp_Strdup(tagName);
+    }
+    tracePtr->clientPtr = clientPtr;
+    tracePtr->proc = proc;
+    tracePtr->clientData = clientData;
+    tracePtr->mask = mask;
+    tracePtr->nodePtr = nodePtr;
+    return (Rp_TreeTrace)tracePtr;
+}
+
+void
+Rp_TreeDeleteTrace(Rp_TreeTrace trace)
+{
+    TraceHandler *tracePtr = (TraceHandler *)trace;
+
+    Rp_ChainDeleteLink(tracePtr->clientPtr->traces, tracePtr->linkPtr);
+    if (tracePtr->keyPattern != NULL) {
+        Rp_Free(tracePtr->keyPattern);
+    }
+    if (tracePtr->withTag != NULL) {
+        Rp_Free(tracePtr->withTag);
+    }
+    Rp_Free(tracePtr);
+}
+
+void
+Rp_TreeRelabelNode(TreeClient *clientPtr, Node *nodePtr, CONST char *string)
+{
+    nodePtr->label = Rp_TreeGetKey(string);
+    /* 
+     * Issue callbacks to each client indicating that a new node has
+     * been created.
+     */
+    // NotifyClients(clientPtr, clientPtr->treeObject, nodePtr,
+    //               TREE_NOTIFY_RELABEL);
+}
+
+void
+Rp_TreeRelabelNode2(Node *nodePtr, CONST char *string)
+{
+    nodePtr->label = Rp_TreeGetKey(string);
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeFindChild --
+ *
+ *  Searches for the named node in a parent's chain of siblings.
+ *
+ *
+ * Results:
+ *  If found, the child node is returned, otherwise NULL.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_TreeNode
+Rp_TreeFindChild(Node *parentPtr, CONST char *string)
+{
+    Rp_TreeKey label;
+    register Node *nodePtr;
+
+    label = Rp_TreeGetKey(string);
+    for (nodePtr = parentPtr->first; nodePtr != NULL; nodePtr = nodePtr->next) {
+        if (label == nodePtr->label) {
+            return nodePtr;
+        }
+    }
+    return NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeFindChildNext --
+ *
+ *  Searches for the next named node in a parent's chain of siblings.
+ *
+ *
+ * Results:
+ *  If found, the child node is returned, otherwise NULL.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_TreeNode
+Rp_TreeFindChildNext(Node *childPtr, CONST char *string)
+{
+    Rp_TreeKey label;
+    register Node *nodePtr;
+
+    label = Rp_TreeGetKey(string);
+    for (nodePtr = childPtr->next; nodePtr != NULL; nodePtr = nodePtr->next) {
+        if (label == nodePtr->label) {
+            return nodePtr;
+        }
+    }
+    return NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeNodePosition --
+ *
+ *  Returns the position of the node in its parent's list of
+ *  children.  The root's position is 0.
+ *
+ *----------------------------------------------------------------------
+ */
+int
+Rp_TreeNodePosition(Node *nodePtr)
+{
+    Node *parentPtr;
+    int count;
+
+    count = 0;
+    parentPtr = nodePtr->parent;
+    if (parentPtr != NULL) {
+        Node *childPtr;
+
+        for (childPtr = parentPtr->first; childPtr != NULL;
+             childPtr = childPtr->next) {
+            if (nodePtr == childPtr) {
+                break;
+            }
+            count++;
+        }
+    }
+    return count;
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreePrevNode --
+ *
+ *  Returns the "previous" node in the tree.  This node (in
+ *  depth-first order) is its parent, if the node has no siblings
+ *  that are previous to it.  Otherwise it is the last descendant
+ *  of the last sibling.  In this case, descend the sibling's
+ *  hierarchy, using the last child at any ancestor, with we
+ *  we find a leaf.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_TreeNode
+Rp_TreePrevNode(Node *rootPtr, Node *nodePtr)
+{
+    Node *prevPtr;
+
+    if (nodePtr == rootPtr) {
+        return NULL;        /* The root is the first node. */
+    }
+    prevPtr = nodePtr->prev;
+    if (prevPtr == NULL) {
+        /* There are no siblings previous to this one, so pick the parent. */
+        return nodePtr->parent;
+    }
+    /*
+     * Traverse down the right-most thread, in order to select the
+     * next entry.  Stop when we reach a leaf.
+     */
+    nodePtr = prevPtr;
+    while ((prevPtr = nodePtr->last) != NULL) {
+        nodePtr = prevPtr;
+    }
+    return nodePtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeNextNode --
+ *
+ *  Returns the "next" node in relation to the given node.
+ *  The next node (in depth-first order) is either the first
+ *  child of the given node the next sibling if the node has
+ *  no children (the node is a leaf).  If the given node is the
+ *  last sibling, then try it's parent next sibling.  Continue
+ *  until we either find a next sibling for some ancestor or
+ *  we reach the root node.  In this case the current node is
+ *  the last node in the tree.
+ *
+ *----------------------------------------------------------------------
+ */
+Rp_TreeNode
+Rp_TreeNextNode(Node *rootPtr, Node *nodePtr)
+{
+    Node *nextPtr;
+
+    /* Pick the first sub-node. */
+    nextPtr = nodePtr->first;
+    if (nextPtr != NULL) {
+        return nextPtr;
+    }
+    /* 
+     * Back up until we can find a level where we can pick a
+     * "next sibling".  For the last entry we'll thread our
+     * way back to the root.
+     */
+    while (nodePtr != rootPtr) {
+        nextPtr = nodePtr->next;
+        if (nextPtr != NULL) {
+            return nextPtr;
+        }
+        nodePtr = nodePtr->parent;
+    }
+    return NULL;        /* At root, no next node. */
+}
+
+
+int
+Rp_TreeIsBefore(Node *n1Ptr, Node *n2Ptr)
+{
+    int depth;
+    register int i;
+    Node *nodePtr;
+
+    if (n1Ptr == n2Ptr) {
+        return FALSE;
+    }
+    depth = MIN(n1Ptr->depth, n2Ptr->depth);
+    if (depth == 0) {       /* One of the nodes is root. */
+        return (n1Ptr->parent == NULL);
+    }
+    /* 
+     * Traverse back from the deepest node, until both nodes are at
+     * the same depth.  Check if this ancestor node is the same for
+     * both nodes.
+     */
+    for (i = n1Ptr->depth; i > depth; i--) {
+        n1Ptr = n1Ptr->parent;
+    }
+    if (n1Ptr == n2Ptr) {
+        return FALSE;
+    }
+    for (i = n2Ptr->depth; i > depth; i--) {
+        n2Ptr = n2Ptr->parent;
+    }
+    if (n2Ptr == n1Ptr) {
+        return TRUE;
+    }
+
+    /*
+     * First find the mutual ancestor of both nodes.  Look at each
+     * preceding ancestor level-by-level for both nodes.  Eventually
+     * we'll find a node that's the parent of both ancestors.  Then
+     * find the first ancestor in the parent's list of subnodes.
+     */
+    for (i = depth; i > 0; i--) {
+        if (n1Ptr->parent == n2Ptr->parent) {
+            break;
+        }
+        n1Ptr = n1Ptr->parent;
+        n2Ptr = n2Ptr->parent;
+    }
+    for (nodePtr = n1Ptr->parent->first; nodePtr != NULL;
+         nodePtr = nodePtr->next) {
+        if (nodePtr == n1Ptr) {
+            return TRUE;
+        } else if (nodePtr == n2Ptr) {
+            return FALSE;
+        }
+    }
+    return FALSE;
+}
+
+//static void
+//CallTraces(
+//    Tcl_Interp *interp,
+//    TreeClient *sourcePtr,  /* Client holding a reference to the
+//                             * tree.  If NULL, indicates to
+//                             * execute all handlers, including
+//                             * those of the caller. */
+//    TreeObject *treeObjPtr, /* Tree that was changed. */
+//    Node *nodePtr,          /* Node that received the event. */
+//    Rp_TreeKey key,
+//    unsigned int flags)
+//{
+//    Rp_ChainLink *l1Ptr, *l2Ptr;
+//    TreeClient *clientPtr;
+//    TraceHandler *tracePtr;
+//
+//    for(l1Ptr = Rp_ChainFirstLink(treeObjPtr->clients);
+//        l1Ptr != NULL; l1Ptr = Rp_ChainNextLink(l1Ptr)) {
+//        clientPtr = Rp_ChainGetValue(l1Ptr);
+//        for(l2Ptr = Rp_ChainFirstLink(clientPtr->traces);
+//            l2Ptr != NULL; l2Ptr = Rp_ChainNextLink(l2Ptr)) {
+//            tracePtr = Rp_ChainGetValue(l2Ptr);
+//            if ((tracePtr->keyPattern != NULL) &&
+//                (!Tcl_StringMatch(key, tracePtr->keyPattern))) {
+//                continue;   /* Key pattern doesn't match. */
+//            }
+//            if ((tracePtr->withTag != NULL) &&
+//                (!Rp_TreeHasTag(clientPtr, nodePtr, tracePtr->withTag))) {
+//                continue;   /* Doesn't have the tag. */
+//            }
+//            if ((tracePtr->mask & flags) == 0) {
+//                continue;   /* Flags don't match. */
+//            }
+//            if ((clientPtr == sourcePtr) &&
+//                (tracePtr->mask & TREE_TRACE_FOREIGN_ONLY)) {
+//                continue;   /* This client initiated the trace. */
+//            }
+//            if ((tracePtr->nodePtr != NULL) && (tracePtr->nodePtr != nodePtr)) {
+//                continue;   /* Nodes don't match. */
+//            }
+//            nodePtr->flags |= TREE_TRACE_ACTIVE;
+//            if ((*tracePtr->proc) (tracePtr->clientData, treeObjPtr->interp,
+//                nodePtr, key, flags) != TCL_OK) {
+//                if (interp != NULL) {
+//                    Tcl_BackgroundError(interp);
+//                }
+//            }
+//            nodePtr->flags &= ~TREE_TRACE_ACTIVE;
+//        }
+//    }
+//}
+
+static Value *
+GetTreeValue(
+    TreeClient *clientPtr,
+    Node *nodePtr,
+    Rp_TreeKey key)
+{
+    register Value *valuePtr;
+
+    valuePtr = TreeFindValue(nodePtr, key);
+    if (valuePtr == NULL) {
+        // fprintf(stderr, "can't find field \"%s\"", key);
+        return NULL;
+    }
+    if ((valuePtr->owner != NULL) && (valuePtr->owner != clientPtr)) {
+        // fprintf(stderr, "can't access private field \"%s\"", key);
+        return NULL;
+    }
+    return valuePtr;
+}
+
+int
+Rp_TreePrivateValue(
+    TreeClient *clientPtr,
+    Node *nodePtr,
+    Rp_TreeKey key)
+{
+    Value *valuePtr;
+
+    valuePtr = TreeFindValue(nodePtr, key);
+    if (valuePtr == NULL) {
+        // fprintf(stderr, "can't find field \"%s\"", key);
+        return RP_ERROR;
+    }
+    valuePtr->owner = clientPtr;
+    return RP_OK;
+}
+
+int
+Rp_TreePublicValue(
+    TreeClient *clientPtr,
+    Node *nodePtr,
+    Rp_TreeKey key)
+{
+    Value *valuePtr;
+
+    valuePtr = TreeFindValue(nodePtr, key);
+    if (valuePtr == NULL) {
+        // fprintf(stderr, "can't find field \"%s\"", key,);
+        return RP_ERROR;
+    }
+    if (valuePtr->owner != clientPtr) {
+        // fprintf(interp, "not the owner of \"%s\"", key);
+        return RP_ERROR;
+    }
+    valuePtr->owner = NULL;
+    return RP_OK;
+}
+
+int
+Rp_TreeValueExistsByKey(clientPtr, nodePtr, key)
+    TreeClient *clientPtr;
+    Node *nodePtr;
+    Rp_TreeKey key;
+{
+    register Value *valuePtr;
+
+    valuePtr = GetTreeValue(clientPtr, nodePtr, key);
+    if (valuePtr == NULL) {
+        return FALSE;
+    }
+    return TRUE;
+}
+
+int
+Rp_TreeGetValueByKey(
+    TreeClient *clientPtr,
+    Node *nodePtr,
+    Rp_TreeKey key,
+    void **objPtrPtr)
+{
+    register Value *valuePtr;
+    // TreeObject *treeObjPtr = nodePtr->treeObject;
+
+    valuePtr = GetTreeValue(clientPtr, nodePtr, key);
+    if (valuePtr == NULL) {
+        return RP_ERROR;
+    }
+    *objPtrPtr = valuePtr->objPtr;
+    if (!(nodePtr->flags & TREE_TRACE_ACTIVE)) {
+//        CallTraces(interp, clientPtr, treeObjPtr, nodePtr, key,
+//               TREE_TRACE_READ);
+    }
+    return RP_OK;
+}
+
+int
+Rp_TreeSetValueByKey(
+    TreeClient *clientPtr,
+    Node *nodePtr,          /* Node to be updated. */
+    Rp_TreeKey key,         /* Identifies the field key. */
+    void *objPtr)           /* New value of field. */
+{
+    // TreeObject *treeObjPtr = nodePtr->treeObject;
+    Value *valuePtr;
+    unsigned int flags;
+    int isNew;
+
+    assert(objPtr != NULL);
+    valuePtr = TreeCreateValue(nodePtr, key, &isNew);
+    if ((valuePtr->owner != NULL) && (valuePtr->owner != clientPtr)) {
+//        fprintf(stderr,"can't set private field \"%s\"",key);
+        return RP_ERROR;
+    }
+    if (objPtr != valuePtr->objPtr) {
+//        Tcl_IncrRefCount(objPtr);
+//        if (valuePtr->objPtr != NULL) {
+//            Tcl_DecrRefCount(valuePtr->objPtr);
+//        }
+        valuePtr->objPtr = objPtr;
+    }
+    flags = TREE_TRACE_WRITE;
+    if (isNew) {
+        flags |= TREE_TRACE_CREATE;
+    }
+    if (!(nodePtr->flags & TREE_TRACE_ACTIVE)) {
+//        CallTraces(interp, clientPtr, treeObjPtr, nodePtr, valuePtr->key,
+//                flags);
+    }
+    return RP_OK;
+}
+
+int
+Rp_TreeUnsetValueByKey(
+    TreeClient *clientPtr,
+    Node *nodePtr,      /* Node to be updated. */
+    Rp_TreeKey key)     /* Name of field in node. */
+{
+    // TreeObject *treeObjPtr = nodePtr->treeObject;
+    Value *valuePtr;
+
+    valuePtr = TreeFindValue(nodePtr, key);
+    if (valuePtr == NULL) {
+        return RP_OK;      /* It's okay to unset values that don't
+                             * exist in the node. */
+    }
+    if ((valuePtr->owner != NULL) && (valuePtr->owner != clientPtr)) {
+        // fprintf(stderr, "can't unset private field \"%s\"", key);
+        return RP_ERROR;
+    }
+    TreeDeleteValue(nodePtr, valuePtr);
+//    CallTraces(interp, clientPtr, treeObjPtr, nodePtr, key, TREE_TRACE_UNSET);
+    return RP_OK;
+}
+
+/*
+ * commented out to avoid compiler warnings about function not being used
+ */
+/*
+static int
+ParseParentheses(
+    CONST char *string,
+    char **leftPtr,
+    char **rightPtr)
+{
+    register char *p = NULL;
+    char *left = NULL;
+    char *right = NULL;
+
+    left = right = NULL;
+    for (p = (char *)string; *p != '\0'; p++) {
+        if (*p == '(') {
+            left = p;
+        } else if (*p == ')') {
+            right = p;
+        }
+    }
+    if (left != right) {
+        if (((left != NULL) && (right == NULL)) ||
+            ((left == NULL) && (right != NULL)) ||
+            (left > right) || (right != (p - 1))) {
+            fprintf(stderr, "bad array specification \"%s\"", string);
+            return RP_ERROR;
+        }
+    }
+    *leftPtr = left;
+    *rightPtr = right;
+    return RP_OK;
+}
+*/
+
+//FIXME: commented out because it calls Rp_TreeGetArrayValue
+int
+Rp_TreeGetValue(
+    TreeClient *clientPtr,
+    Node *nodePtr,
+    CONST char *string,     /* String identifying the field in node. */
+    void **objPtrPtr)
+{
+    char *left = NULL;
+    char *right = NULL;
+    int result;
+
+// uncomment after Rp_TreeGetArrayValue is fixed
+//    if (ParseParentheses(string, &left, &right) != TCL_OK) {
+//        return TCL_ERROR;
+//    }
+    if (left != NULL) {
+        *left = *right = '\0';
+        // result = Rp_TreeGetArrayValue(clientPtr, nodePtr, string, left + 1, objPtrPtr);
+        *left = '(', *right = ')';
+    } else {
+        result = Rp_TreeGetValueByKey(clientPtr, nodePtr,
+                    Rp_TreeGetKey(string), objPtrPtr);
+    }
+    return result;
+}
+
+//FIXME: commented out because it calls Rp_TreeSetArrayValue
+int
+Rp_TreeSetValue(
+    TreeClient *clientPtr,
+    Node *nodePtr,          /* Node to be updated. */
+    CONST char *string,     /* String identifying the field in node. */
+    void *valueObjPtr)      /* New value of field. If NULL, field
+                             * is deleted. */
+{
+    char *left = NULL;
+    char *right = NULL;
+    int result;
+
+// uncomment after Rp_TreeSetArrayValue is fixed
+//    if (ParseParentheses(string, &left, &right) != RP_OK) {
+//        return RP_ERROR;
+//    }
+    if (left != NULL) {
+        *left = *right = '\0';
+        //result = Rp_TreeSetArrayValue(clientPtr, nodePtr, string, left + 1, valueObjPtr);
+        *left = '(', *right = ')';
+    } else {
+        result = Rp_TreeSetValueByKey(clientPtr, nodePtr,
+                    Rp_TreeGetKey(string), valueObjPtr);
+    }
+    return result;
+}
+
+//FIXME: commented out because it calls Rp_TreeUnsetArrayValue
+int
+Rp_TreeUnsetValue(
+    TreeClient *clientPtr,
+    Node *nodePtr,          /* Node to be updated. */
+    CONST char *string)     /* String identifying the field in node. */
+{
+    char *left = NULL;
+    char *right = NULL;
+    int result;
+
+// uncomment after Rp_TreeUnsetArrayValue is fixed
+//    if (ParseParentheses(string, &left, &right) != RP_OK) {
+//        return RP_ERROR;
+//    }
+    if (left != NULL) {
+        *left = *right = '\0';
+        // result = Rp_TreeUnsetArrayValue(clientPtr, nodePtr, string, left + 1);
+        *left = '(', *right = ')';
+    } else {
+        result = Rp_TreeUnsetValueByKey(clientPtr, nodePtr, Rp_TreeGetKey(string));
+    }
+    return result;
+}
+
+//FIXME: commented out because it calls Rp_TreeArrayValueExists
+int
+Rp_TreeValueExists(TreeClient *clientPtr, Node *nodePtr, CONST char *string)
+{
+    char *left = NULL;
+    char *right = NULL;
+    int result;
+
+// uncomment after Rp_TreeArrayValueExists is fixed
+//    if (ParseParentheses(string, &left, &right) != RP_OK) {
+//        return FALSE;
+//    }
+    if (left != NULL) {
+        *left = *right = '\0';
+        // result = Rp_TreeArrayValueExists(clientPtr, nodePtr, string, left + 1);
+        *left = '(', *right = ')';
+    } else {
+        result = Rp_TreeValueExistsByKey(clientPtr, nodePtr,
+                Rp_TreeGetKey(string));
+    }
+    return result;
+}
+
+Rp_TreeKey
+Rp_TreeFirstKey(
+    TreeClient *clientPtr,
+    Node *nodePtr,
+    Rp_TreeKeySearch *iterPtr)
+{
+    Value *valuePtr;
+
+    valuePtr = TreeFirstValue(nodePtr, iterPtr);
+    if (valuePtr == NULL) {
+        return NULL;
+    }
+    while ((valuePtr->owner != NULL) && (valuePtr->owner != clientPtr)) {
+        valuePtr = TreeNextValue(iterPtr);
+        if (valuePtr == NULL) {
+            return NULL;
+        }
+    }
+    return valuePtr->key;
+}
+
+Rp_TreeKey
+Rp_TreeNextKey(TreeClient *clientPtr, Rp_TreeKeySearch *iterPtr)
+{
+    Value *valuePtr;
+
+    valuePtr = TreeNextValue(iterPtr);
+    if (valuePtr == NULL) {
+        return NULL;
+    }
+    while ((valuePtr->owner != NULL) && (valuePtr->owner != clientPtr)) {
+        valuePtr = TreeNextValue(iterPtr);
+        if (valuePtr == NULL) {
+            return NULL;
+        }
+    }
+    return valuePtr->key;
+}
+
+int
+Rp_TreeIsAncestor(Node *n1Ptr, Node *n2Ptr)
+{
+    if (n2Ptr != NULL) {
+        n2Ptr = n2Ptr->parent;
+        while (n2Ptr != NULL) {
+            if (n2Ptr == n1Ptr) {
+                return TRUE;
+            }
+            n2Ptr = n2Ptr->parent;
+        }
+    }
+    return FALSE;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeSortNode --
+ *
+ *  Sorts the subnodes at a given node.
+ *
+ * Results:
+ *  Always returns TCL_OK.
+ *
+ *----------------------------------------------------------------------
+ */
+int
+Rp_TreeSortNode(
+    TreeClient *clientPtr,
+    Node *nodePtr,
+    Rp_TreeCompareNodesProc *proc)
+{
+    Node **nodeArr;
+    Node *childPtr;
+    int nNodes;
+    register Node **p;
+
+    nNodes = nodePtr->nChildren;
+    if (nNodes < 2) {
+        return RP_OK;
+    }
+    nodeArr = Rp_Malloc((nNodes + 1) * sizeof(Node *));
+    if (nodeArr == NULL) {
+        return RP_ERROR;   /* Out of memory. */
+    }
+    for (p = nodeArr, childPtr = nodePtr->first; childPtr != NULL; 
+         childPtr = childPtr->next, p++) {
+        *p = childPtr;
+    }
+    *p = NULL;
+
+    qsort((char *)nodeArr, nNodes, sizeof(Node *), (QSortCompareProc *)proc);
+    for (p = nodeArr; *p != NULL; p++) {
+        UnlinkNode(*p);
+        LinkBefore(nodePtr, *p, (Rp_TreeNode)NULL);
+    }
+    Rp_Free(nodeArr);
+    // NotifyClients(clientPtr, nodePtr->treeObject, nodePtr, TREE_NOTIFY_SORT);
+    return RP_OK;
+}
+
+#define TEST_RESULT(result) \
+    switch (result) { \
+    case RP_CONTINUE: \
+        return RP_OK; \
+    case RP_OK: \
+        break; \
+    default: \
+        return (result); \
+    }
+
+int
+Rp_TreeApply(
+    Node *nodePtr,          /* Root node of subtree. */
+    Rp_TreeApplyProc *proc, /* Procedure to call for each node. */
+    ClientData clientData)  /* One-word of data passed when calling
+                             * proc. */
+{
+    Node *childPtr, *nextPtr;
+    int result;
+
+    for (childPtr = nodePtr->first; childPtr != NULL; childPtr = nextPtr) {
+
+        /*
+         * Get the next link in the chain before calling Rp_TreeApply
+         * recursively.  This is because the apply callback may delete
+         * the node and its link.
+         */
+
+        nextPtr = childPtr->next;
+        result = Rp_TreeApply(childPtr, proc, clientData);
+        TEST_RESULT(result);
+    }
+    return (*proc) (nodePtr, clientData, TREE_POSTORDER);
+}
+
+int
+Rp_TreeApplyDFS(
+    Node *nodePtr,          /* Root node of subtree. */
+    Rp_TreeApplyProc *proc, /* Procedure to call for each node. */
+    ClientData clientData,  /* One-word of data passed when calling
+                             * proc. */
+    int order)              /* Order of traversal. */
+{
+    Node *childPtr, *nextPtr;
+    int result;
+
+    if (order & TREE_PREORDER) {
+        result = (*proc) (nodePtr, clientData, TREE_PREORDER);
+        TEST_RESULT(result);
+    }
+    childPtr = nodePtr->first;
+    if (order & TREE_INORDER) {
+        if (childPtr != NULL) {
+            result = Rp_TreeApplyDFS(childPtr, proc, clientData, order);
+            TEST_RESULT(result);
+            childPtr = childPtr->next;
+        }
+        result = (*proc) (nodePtr, clientData, TREE_INORDER);
+        TEST_RESULT(result);
+    }
+    for (/* empty */; childPtr != NULL; childPtr = nextPtr) {
+        /*
+         * Get the next link in the chain before calling
+         * Rp_TreeApply recursively.  This is because the
+         * apply callback may delete the node and its link.
+         */
+        nextPtr = childPtr->next;
+        result = Rp_TreeApplyDFS(childPtr, proc, clientData, order);
+        TEST_RESULT(result);
+    }
+    if (order & TREE_POSTORDER) {
+        return (*proc) (nodePtr, clientData, TREE_POSTORDER);
+    }
+    return RP_OK;
+}
+
+int
+Rp_TreeApplyBFS(nodePtr, proc, clientData)
+    Node *nodePtr;          /* Root node of subtree. */
+    Rp_TreeApplyProc *proc; /* Procedure to call for each node. */
+    ClientData clientData;  /* One-word of data passed when calling
+                             * proc. */
+{
+    Rp_Chain *queuePtr;
+    Rp_ChainLink *linkPtr, *nextPtr;
+    Node *childPtr;
+    int result;
+
+    queuePtr = Rp_ChainCreate();
+    linkPtr = Rp_ChainAppend(queuePtr, nodePtr);
+    while (linkPtr != NULL) {
+        nodePtr = Rp_ChainGetValue(linkPtr);
+        /* Add the children to the queue. */
+        for (childPtr = nodePtr->first; childPtr != NULL;
+             childPtr = childPtr->next) {
+            Rp_ChainAppend(queuePtr, childPtr);
+        }
+        /* Process the node. */
+        result = (*proc) (nodePtr, clientData, TREE_BREADTHFIRST);
+        switch (result) {
+        case RP_CONTINUE:
+            Rp_ChainDestroy(queuePtr);
+            return RP_OK;
+        case RP_OK:
+            break;
+        default:
+            Rp_ChainDestroy(queuePtr);
+            return result;
+        }
+        /* Remove the node from the queue. */
+        nextPtr = Rp_ChainNextLink(linkPtr);
+        Rp_ChainDeleteLink(queuePtr, linkPtr);
+        linkPtr = nextPtr;
+    }
+    Rp_ChainDestroy(queuePtr);
+    return RP_OK;
+}
+
+static TreeClient *
+NewTreeClient(TreeObject *treeObjPtr)
+{
+    TreeClient *clientPtr;
+
+    clientPtr = Rp_Calloc(1, sizeof(TreeClient));
+    if (clientPtr != NULL) {
+        Rp_TreeTagTable *tablePtr;
+
+        clientPtr->magic = TREE_MAGIC;
+        clientPtr->linkPtr = Rp_ChainAppend(treeObjPtr->clients, clientPtr);
+        clientPtr->events = Rp_ChainCreate();
+        clientPtr->traces = Rp_ChainCreate();
+        clientPtr->treeObject = treeObjPtr;
+        clientPtr->root = treeObjPtr->root;
+        tablePtr = Rp_Malloc(sizeof(Rp_TreeTagTable));
+        Rp_InitHashTable(&tablePtr->tagTable, RP_STRING_KEYS);
+        tablePtr->refCount = 1;
+        clientPtr->tagTablePtr = tablePtr;
+    }
+    return clientPtr;
+}
+
+int
+Rp_TreeCreate(
+//    Tcl_Interp *interp,         /* Interpreter to report errors back to. */
+    CONST char *name,           /* Name of tree in namespace.  Tree
+                                 * must not already exist. */
+    TreeClient **clientPtrPtr)  /* (out) Client token of newly created
+                                 * tree.  Releasing the token will
+                                 * free the tree.  If NULL, no token
+                                 * is generated. */
+{
+//    Tcl_DString dString;
+//    Tcl_Namespace *nsPtr;
+//    TreeInterpData *dataPtr;
+    TreeObject *treeObjPtr;
+    // CONST char *treeName;
+//    char string[200];
+
+// we do not allow unnamed trees
+//    // dataPtr = GetTreeInterpData(interp);
+//    if (name != NULL) {
+//        // FIXME: because dsk broke it
+//        /* Check if this tree already exists the current namespace. */
+//        /*
+//        treeObjPtr = GetTreeObject(interp, name, NS_SEARCH_CURRENT);
+//        if (treeObjPtr != NULL) {
+//            Tcl_AppendResult(interp, "a tree object \"", name,
+//                             "\" already exists", (char *)NULL);
+//            return TCL_ERROR;
+//        }
+//        */
+//    } else {
+//        // FIXME: because dsk broke it
+//        /* Generate a unique tree name in the current namespace. */
+//        /*
+//        do  {
+//            sprintf(string, "tree%d", dataPtr->nextId++);
+//        } while (GetTreeObject(interp, name, NS_SEARCH_CURRENT) != NULL);
+//        */
+//        sprintf(string, "tree%d", dataPtr->nextId++);
+//        name = string;
+//    }
+    /*
+     * Tear apart and put back together the namespace-qualified name
+     * of the tree. This is to ensure that naming is consistent.
+     */
+//    treeName = name;
+//    if (Rp_ParseQualifiedName(name, &nsPtr, &treeName) != RP_OK) {
+//        Tcl_AppendResult(interp, "can't find namespace in \"", name, "\"",
+//                (char *)NULL);
+//        return TCL_ERROR;
+//    }
+//    if (nsPtr == NULL) {
+//        /*
+//         * Note: Unlike Tcl_CreateCommand, an unqualified name 
+//         * doesn't imply the global namespace, but the current one.
+//         */
+//        nsPtr = Tcl_GetCurrentNamespace(interp);
+//    }
+//    name = Rp_GetQualifiedName(nsPtr, treeName, &dString);
+    // treeObjPtr = NewTreeObject(dataPtr, name);
+    treeObjPtr = NewTreeObject(name);
+    if (treeObjPtr == NULL) {
+        fprintf(stderr, "can't allocate tree \"%s\"", name);
+//        Tcl_DStringFree(&dString);
+        return RP_ERROR;
+    }
+//    Tcl_DStringFree(&dString);
+    if (clientPtrPtr != NULL) {
+        TreeClient *clientPtr;
+
+        clientPtr = NewTreeClient(treeObjPtr);
+        if (clientPtr == NULL) {
+            fprintf(stderr, "can't allocate tree token");
+            return RP_ERROR;
+        }
+        *clientPtrPtr = clientPtr;
+    }
+    return RP_OK;
+}
+
+//int
+//Rp_TreeGetToken(
+//    CONST char *name,       /* Name of tree in namespace. */
+//    TreeClient **clientPtrPtr)
+//{
+//    TreeClient *clientPtr;
+//    TreeObject *treeObjPtr;
+//
+//    // FIXME: still need to find the tree where ever we store it.
+//    // possibly store them in a global hashtable?
+//    // or remove this function all together
+//    /* find the tree */
+//    // treeObjPtr = GetTreeObject(interp, name, NS_SEARCH_BOTH);
+//    if (treeObjPtr == NULL) {
+//        // fprintf(stderr, "can't find a tree object \"%s\"", name);
+//        return RP_ERROR;
+//    }
+//    clientPtr = NewTreeClient(treeObjPtr);
+//    if (clientPtr == NULL) {
+//        // fprintf(stderr, "can't allocate token for tree \"%s\"", name);
+//        return RP_ERROR;
+//    }
+//    *clientPtrPtr = clientPtr;
+//    return RP_OK;
+//}
+
+int
+Rp_TreeGetTokenFromToken(
+    TreeClient *fromClientPtr, // old client from which to base the new client
+    TreeClient **clientPtrPtr) // new client
+{
+    TreeClient *clientPtr;
+    TreeObject *treeObjPtr;
+
+    if (fromClientPtr == NULL) {
+        fprintf(stderr, "can't create new token from null token\n");
+        return RP_ERROR;
+    }
+
+    treeObjPtr = fromClientPtr->treeObject;
+    if (treeObjPtr == NULL) {
+        fprintf(stderr, "can't find a tree object based on provided client\n");
+        return RP_ERROR;
+    }
+    clientPtr = NewTreeClient(treeObjPtr);
+    if (clientPtr == NULL) {
+        fprintf(stderr, "can't allocate token for tree \"%s\"",
+            treeObjPtr->name);
+        return RP_ERROR;
+    }
+    *clientPtrPtr = clientPtr;
+    return RP_OK;
+}
+
+void
+Rp_TreeReleaseToken(TreeClient *clientPtr)
+{
+    TreeObject *treeObjPtr;
+    Rp_ChainLink *linkPtr;
+    EventHandler *notifyPtr;
+    TraceHandler *tracePtr;
+
+    if (clientPtr->magic != TREE_MAGIC) {
+        fprintf(stderr, "invalid tree object token 0x%lx\n",
+                (unsigned long)clientPtr);
+        return;
+    }
+    /* Remove any traces that may be set. */
+    for (linkPtr = Rp_ChainFirstLink(clientPtr->traces); linkPtr != NULL;
+         linkPtr = Rp_ChainNextLink(linkPtr)) {
+        tracePtr = Rp_ChainGetValue(linkPtr);
+        if (tracePtr->keyPattern != NULL) {
+            Rp_Free(tracePtr->keyPattern);
+        }
+        Rp_Free(tracePtr);
+    }
+    Rp_ChainDestroy(clientPtr->traces);
+    /* And any event handlers. */
+    for(linkPtr = Rp_ChainFirstLink(clientPtr->events);
+        linkPtr != NULL; linkPtr = Rp_ChainNextLink(linkPtr)) {
+        notifyPtr = Rp_ChainGetValue(linkPtr);
+        // FIXME: need to cancel any waiting calls
+        /*
+        if (notifyPtr->notifyPending) {
+            Tcl_CancelIdleCall(NotifyIdleProc, notifyPtr);
+        }
+        */
+        Rp_Free(notifyPtr);
+    }
+    if (clientPtr->tagTablePtr != NULL) {
+        ReleaseTagTable(clientPtr->tagTablePtr);
+    }
+    Rp_ChainDestroy(clientPtr->events);
+    treeObjPtr = clientPtr->treeObject;
+    if (treeObjPtr != NULL) {
+        /* Remove the client from the server's list */
+        Rp_ChainDeleteLink(treeObjPtr->clients, clientPtr->linkPtr);
+        if (Rp_ChainGetLength(treeObjPtr->clients) == 0) {
+            DestroyTreeObject(treeObjPtr);
+        }
+    }
+    clientPtr->magic = 0;
+    Rp_Free(clientPtr);
+}
+
+//int
+//Rp_TreeExists(interp, name)
+//    Tcl_Interp *interp;     /* Interpreter to report errors back to. */
+//    CONST char *name;       /* Name of tree in designated namespace. */
+//{
+//    TreeObject *treeObjPtr;
+//
+//    treeObjPtr = GetTreeObject(interp, name, NS_SEARCH_BOTH);
+//    if (treeObjPtr == NULL) {
+//        Tcl_ResetResult(interp);
+//        return 0;
+//    }
+//    return 1;
+//}
+
+/*ARGSUSED*/
+static int
+SizeApplyProc(
+    Node *nodePtr,      /* Not used. */
+    ClientData clientData,
+    int order)          /* Not used. */
+{
+    int *sumPtr = clientData;
+    *sumPtr = *sumPtr + 1;
+    return RP_OK;
+}
+
+int
+Rp_TreeSize(Node *nodePtr)
+{
+    int sum;
+
+    sum = 0;
+    Rp_TreeApply(nodePtr, SizeApplyProc, &sum);
+    return sum;
+}
+
+
+void
+Rp_TreeCreateEventHandler(
+    TreeClient *clientPtr,
+    unsigned int mask,
+    Rp_TreeNotifyEventProc *proc,
+    ClientData clientData)
+{
+    Rp_ChainLink *linkPtr;
+    EventHandler *notifyPtr;
+
+    notifyPtr = NULL;       /* Suppress compiler warning. */
+
+    /* Check if the event is already handled. */
+    for(linkPtr = Rp_ChainFirstLink(clientPtr->events);
+        linkPtr != NULL; linkPtr = Rp_ChainNextLink(linkPtr)) {
+        notifyPtr = Rp_ChainGetValue(linkPtr);
+        if ((notifyPtr->proc == proc) &&
+            (notifyPtr->mask == mask) &&
+            (notifyPtr->clientData == clientData)) {
+            break;
+        }
+    }
+    if (linkPtr == NULL) {
+        notifyPtr = Rp_Malloc(sizeof (EventHandler));
+        assert(notifyPtr);
+        linkPtr = Rp_ChainAppend(clientPtr->events, notifyPtr);
+    }
+    if (proc == NULL) {
+        Rp_ChainDeleteLink(clientPtr->events, linkPtr);
+        Rp_Free(notifyPtr);
+    } else {
+        notifyPtr->proc = proc;
+        notifyPtr->clientData = clientData;
+        notifyPtr->mask = mask;
+        notifyPtr->notifyPending = FALSE;
+        // notifyPtr->interp = clientPtr->treeObject->interp;
+    }
+}
+
+void
+Rp_TreeDeleteEventHandler(
+    TreeClient *clientPtr,
+    unsigned int mask,
+    Rp_TreeNotifyEventProc *proc,
+    ClientData clientData)
+{
+    Rp_ChainLink *linkPtr;
+    EventHandler *notifyPtr;
+
+    for(linkPtr = Rp_ChainFirstLink(clientPtr->events);
+        linkPtr != NULL; linkPtr = Rp_ChainNextLink(linkPtr)) {
+        notifyPtr = Rp_ChainGetValue(linkPtr);
+        if ((notifyPtr->proc == proc) && (notifyPtr->mask == mask) &&
+            (notifyPtr->clientData == clientData)) {
+            // FIXME: Cancel waiting calls
+            /*
+            if (notifyPtr->notifyPending) {
+                Tcl_CancelIdleCall(NotifyIdleProc, notifyPtr);
+            }
+            */
+            Rp_ChainDeleteLink(clientPtr->events, linkPtr);
+            Rp_Free(notifyPtr);
+            return;
+        }
+    }
+}
+
+// FIXME: rewrite this function to use a RpSimpleCharBuffer
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeNodePath --
+ *
+ *---------------------------------------------------------------------- 
+ */
+//char *
+//Rp_TreeNodePath(Node *nodePtr, Tcl_DString *resultPtr)
+//{
+//    char **nameArr;     /* Used to stack the component names. */
+//    char *staticSpace[64];
+//    int nLevels;
+//    register int i;
+//
+//    nLevels = nodePtr->depth;
+//    if (nLevels > 64) {
+//        nameArr = Rp_Malloc(nLevels * sizeof(char *));
+//        assert(nameArr);
+//    } else {
+//        nameArr = staticSpace;
+//    }
+//    for (i = nLevels - 1; i >= 0; i--) {
+//        /* Save the name of each ancestor in the name array.
+//         * Note that we ignore the root. */
+//        nameArr[i] = nodePtr->label;
+//        nodePtr = nodePtr->parent;
+//    }
+//    // FIXME: add substitute for TCL DSTRING
+//    /* Append each the names in the array. */
+//    /*
+//    Tcl_DStringInit(resultPtr);
+//    for (i = 0; i < nLevels; i++) {
+//        Tcl_DStringAppendElement(resultPtr, nameArr[i]);
+//    }
+//    if (nameArr != staticSpace) {
+//        Rp_Free(nameArr);
+//    }
+//    return Tcl_DStringValue(resultPtr);
+//    */
+//
+//    return NULL;
+//}
+
+//int
+//Rp_TreeArrayValueExists(
+//    TreeClient *clientPtr,
+//    Node *nodePtr,
+//    CONST char *arrayName,
+//    CONST char *elemName)
+//{
+//    Rp_TreeKey key;
+//    Rp_HashEntry *hPtr;
+//    Rp_HashTable *tablePtr;
+//    register Value *valuePtr;
+//
+//    key = Rp_TreeGetKey(arrayName);
+//    valuePtr = GetTreeValue(nodePtr, key);
+//    if (valuePtr == NULL) {
+//        return FALSE;
+//    }
+//    // FIXME: fix object count
+//    /*
+//    if (Tcl_IsShared(valuePtr->objPtr)) {
+//        Tcl_DecrRefCount(valuePtr->objPtr);
+//        valuePtr->objPtr = Tcl_DuplicateObj(valuePtr->objPtr);
+//        Tcl_IncrRefCount(valuePtr->objPtr);
+//    }
+//    */
+//    if (Rp_GetArrayFromObj(valuePtr->objPtr, &tablePtr) != RP_OK) {
+//        return FALSE;
+//    }
+//    hPtr = Rp_FindHashEntry(tablePtr, elemName);
+//    return (hPtr != NULL);
+//}
+//
+//int
+//Rp_TreeGetArrayValue(
+//    TreeClient *clientPtr,
+//    Node *nodePtr,
+//    CONST char *arrayName,
+//    CONST char *elemName,
+//    void **valueObjPtrPtr)
+//{
+//    Rp_TreeKey key;
+//    Rp_HashEntry *hPtr;
+//    Rp_HashTable *tablePtr;
+//    register Value *valuePtr;
+//
+//    key = Rp_TreeGetKey(arrayName);
+//    valuePtr = GetTreeValue(nodePtr, key);
+//    if (valuePtr == NULL) {
+//        return RP_ERROR;
+//    }
+//    // FIXME: fix object count
+//    /*
+//    if (Tcl_IsShared(valuePtr->objPtr)) {
+//        Tcl_DecrRefCount(valuePtr->objPtr);
+//        valuePtr->objPtr = Tcl_DuplicateObj(valuePtr->objPtr);
+//        Tcl_IncrRefCount(valuePtr->objPtr);
+//    }
+//    */
+//    if (Rp_GetArrayFromObj(valuePtr->objPtr, &tablePtr) != RP_OK) {
+//        return RP_ERROR;
+//    }
+//    hPtr = Rp_FindHashEntry(tablePtr, elemName);
+//    if (hPtr == NULL) {
+//        fprintf(stderr, "can't find \"%s(%s)\"", arrayName, elemName);
+//        return RP_ERROR;
+//    }
+//    *valueObjPtrPtr = (void *)Rp_GetHashValue(hPtr);
+//
+//    /* Reading any element of the array can cause a trace to fire. */
+//    if (!(nodePtr->flags & TREE_TRACE_ACTIVE)) {
+//        // CallTraces(interp, clientPtr, nodePtr->treeObject, nodePtr, key,
+//        //            TREE_TRACE_READ);
+//    }
+//    return RP_OK;
+//}
+//
+//int
+//Rp_TreeSetArrayValue(
+//    TreeClient *clientPtr,
+//    Node *nodePtr,      /* Node to be updated. */
+//    CONST char *arrayName,
+//    CONST char *elemName,
+//    Tcl_Obj *valueObjPtr)   /* New value of element. */
+//{
+//    Rp_TreeKey key;
+//    Rp_HashEntry *hPtr;
+//    Rp_HashTable *tablePtr;
+//    register Value *valuePtr;
+//    unsigned int flags;
+//    int isNew;
+//
+//    assert(valueObjPtr != NULL);
+//
+//    /*
+//     * Search for the array in the list of data fields.  If one
+//     * doesn't exist, create it.
+//     */
+//    key = Rp_TreeGetKey(arrayName);
+//    valuePtr = TreeCreateValue(nodePtr, key, &isNew);
+//    if ((valuePtr->owner != NULL) && (valuePtr->owner != clientPtr)) {
+//        fprintf(stderr, "can't set private field \"%s\"", key);
+//        return RP_ERROR;
+//    }
+//    flags = TREE_TRACE_WRITE;
+//    if (isNew) {
+//        // FIXME: where is this function located?
+//        //valuePtr->objPtr = Rp_NewArrayObj(0, (Tcl_Obj **)NULL);
+//        // FIXME: increment ref counts
+//        //Tcl_IncrRefCount(valuePtr->objPtr);
+//        flags |= TREE_TRACE_CREATE;
+//    } else if (Tcl_IsShared(valuePtr->objPtr)) {
+//        // FIXME: ref counts and duplicateobj
+//        //Tcl_DecrRefCount(valuePtr->objPtr);
+//        //valuePtr->objPtr = Tcl_DuplicateObj(valuePtr->objPtr);
+//        //Tcl_IncrRefCount(valuePtr->objPtr);
+//    }
+//    if (Rp_GetArrayFromObj(valuePtr->objPtr, &tablePtr) != RP_OK) {
+//        return RP_ERROR;
+//    }
+//    // Tcl_InvalidateStringRep(valuePtr->objPtr);
+//    hPtr = Rp_CreateHashEntry(tablePtr, elemName, &isNew);
+//    assert(hPtr);
+//
+//    // FIXME: increment ref counts
+////    Tcl_IncrRefCount(valueObjPtr);
+////    if (!isNew) {
+////        Tcl_Obj *oldValueObjPtr;
+////
+////        /* An element by the same name already exists. Decrement the
+////         * reference count of the old value. */
+////
+////        oldValueObjPtr = (Tcl_Obj *)Rp_GetHashValue(hPtr);
+////        if (oldValueObjPtr != NULL) {
+////            Tcl_DecrRefCount(oldValueObjPtr);
+////        }
+////    }
+//    Rp_SetHashValue(hPtr, valueObjPtr);
+//
+//    /*
+//     * We don't handle traces on a per array element basis.  Setting
+//     * any element can fire traces for the value.
+//     */
+//    if (!(nodePtr->flags & TREE_TRACE_ACTIVE)) {
+////        CallTraces(interp, clientPtr, nodePtr->treeObject, nodePtr, 
+////                valuePtr->key, flags);
+//    }
+//    return RP_OK;
+//}
+//
+//int
+//Rp_TreeUnsetArrayValue(
+//    TreeClient *clientPtr,
+//    Node *nodePtr,      /* Node to be updated. */
+//    CONST char *arrayName,
+//    CONST char *elemName)
+//{
+//    Rp_TreeKey key;     /* Name of field in node. */
+//    Rp_HashEntry *hPtr;
+//    Rp_HashTable *tablePtr;
+//    Tcl_Obj *valueObjPtr;
+//    Value *valuePtr;
+//
+//    key = Rp_TreeGetKey(arrayName);
+//    valuePtr = TreeFindValue(nodePtr, key);
+//    if (valuePtr == NULL) {
+//        return RP_OK;
+//    }
+//    if ((valuePtr->owner != NULL) && (valuePtr->owner != clientPtr)) {
+//        fprintf(stderr, "can't unset private field \"%s\"", key);
+//        return RP_ERROR;
+//    }
+//    // FIXME: increment ref counts
+//    /*
+//    if (Tcl_IsShared(valuePtr->objPtr)) {
+//        Tcl_DecrRefCount(valuePtr->objPtr);
+//        valuePtr->objPtr = Tcl_DuplicateObj(valuePtr->objPtr);
+//        Tcl_IncrRefCount(valuePtr->objPtr);
+//    }
+//    */
+//    if (Rp_GetArrayFromObj(valuePtr->objPtr, &tablePtr) != RP_OK) {
+//        return RP_ERROR;
+//    }
+//    hPtr = Rp_FindHashEntry(tablePtr, elemName);
+//    if (hPtr == NULL) {
+//        return RP_OK;      /* Element doesn't exist, Ok. */
+//    }
+//    // FIXME: increment ref counts
+//    //valueObjPtr = (Tcl_Obj *)Rp_GetHashValue(hPtr);
+//    //Tcl_DecrRefCount(valueObjPtr);
+//    Rp_DeleteHashEntry(tablePtr, hPtr);
+//
+//    /*
+//     * Un-setting any element in the array can cause the trace on the value
+//     * to fire.
+//     */
+//    if (!(nodePtr->flags & TREE_TRACE_ACTIVE)) {
+////        CallTraces(interp, clientPtr, nodePtr->treeObject, nodePtr,
+////                valuePtr->key, TREE_TRACE_WRITE);
+//    }
+//    return RP_OK;
+//}
+//
+//int
+//Rp_TreeArrayNames(
+//    TreeClient *clientPtr,
+//    Node *nodePtr,
+//    CONST char *arrayName,
+//    Tcl_Obj *listObjPtr)
+//{
+//    Rp_HashEntry *hPtr;
+//    Rp_HashSearch cursor;
+//    Rp_HashTable *tablePtr;
+//    Tcl_Obj *objPtr;
+//    Value *valuePtr;
+//    char *key;
+//
+//    key = Rp_TreeGetKey(arrayName);
+//    valuePtr = GetTreeValue(nodePtr, key);
+//    if (valuePtr == NULL) {
+//        return TCL_ERROR;
+//    }
+//    // FIXME: increment ref counts
+//    /*
+//    if (Tcl_IsShared(valuePtr->objPtr)) {
+//        Tcl_DecrRefCount(valuePtr->objPtr);
+//        valuePtr->objPtr = Tcl_DuplicateObj(valuePtr->objPtr);
+//        Tcl_IncrRefCount(valuePtr->objPtr);
+//    }
+//    */
+//    if (Rp_GetArrayFromObj(valuePtr->objPtr, &tablePtr) != RP_OK) {
+//        return RP_ERROR;
+//    }
+//    tablePtr = (Rp_HashTable *)valuePtr->objPtr;
+//    for (hPtr = Rp_FirstHashEntry(tablePtr, &cursor); hPtr != NULL;
+//         hPtr = Rp_NextHashEntry(&cursor)) {
+//    // FIXME: place names in array
+//    //    objPtr = Tcl_NewStringObj(Rp_GetHashKey(tablePtr, hPtr), -1);
+//    //    Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
+//    }
+//    return RP_OK;
+//}
+//
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeShareTagTable --
+ *
+ *---------------------------------------------------------------------- 
+ */
+int
+Rp_TreeShareTagTable(
+    TreeClient *sourcePtr,
+    TreeClient *targetPtr)
+{
+    sourcePtr->tagTablePtr->refCount++;
+    if (targetPtr->tagTablePtr != NULL) {
+        ReleaseTagTable(targetPtr->tagTablePtr);
+    }
+    targetPtr->tagTablePtr = sourcePtr->tagTablePtr;
+    return RP_OK;
+}
+
+int
+Rp_TreeTagTableIsShared(TreeClient *clientPtr)
+{
+    return (clientPtr->tagTablePtr->refCount > 1);
+}
+
+void
+Rp_TreeClearTags(TreeClient *clientPtr, Rp_TreeNode node)
+{
+    Rp_HashEntry *hPtr, *h2Ptr;
+    Rp_HashSearch cursor;
+
+    for (hPtr = Rp_FirstHashEntry(&clientPtr->tagTablePtr->tagTable, &cursor);
+        hPtr != NULL; hPtr = Rp_NextHashEntry(&cursor)) {
+        Rp_TreeTagEntry *tPtr;
+
+        tPtr = Rp_GetHashValue(hPtr);
+        h2Ptr = Rp_FindHashEntry(&tPtr->nodeTable, (char *)node);
+        if (h2Ptr != NULL) {
+            Rp_DeleteHashEntry(&tPtr->nodeTable, h2Ptr);
+        }
+    }
+}
+
+int
+Rp_TreeHasTag(
+    TreeClient *clientPtr,
+    Rp_TreeNode node,
+    CONST char *tagName)
+{
+    Rp_HashEntry *hPtr;
+    Rp_TreeTagEntry *tPtr;
+
+    if (strcmp(tagName, "all") == 0) {
+        return TRUE;
+    }
+    if ((strcmp(tagName, "root") == 0) &&
+        (node == Rp_TreeRootNode(clientPtr))) {
+        return TRUE;
+    }
+    hPtr = Rp_FindHashEntry(&clientPtr->tagTablePtr->tagTable, tagName);
+    if (hPtr == NULL) {
+        return FALSE;
+    }
+    tPtr = Rp_GetHashValue(hPtr);
+    hPtr = Rp_FindHashEntry(&tPtr->nodeTable, (char *)node);
+    if (hPtr == NULL) {
+        return FALSE;
+    }
+    return TRUE;
+}
+
+void
+Rp_TreeAddTag(
+    TreeClient *clientPtr,
+    Rp_TreeNode node,
+    CONST char *tagName)
+{
+    int isNew;
+    Rp_HashEntry *hPtr;
+    Rp_HashTable *tablePtr;
+    Rp_TreeTagEntry *tPtr;
+
+    if ((strcmp(tagName, "all") == 0) || (strcmp(tagName, "root") == 0)) {
+        return;
+    }
+    tablePtr = &clientPtr->tagTablePtr->tagTable;
+    hPtr = Rp_CreateHashEntry(tablePtr, tagName, &isNew);
+    assert(hPtr);
+    if (isNew) {
+
+        tPtr = Rp_Malloc(sizeof(Rp_TreeTagEntry));
+        Rp_InitHashTable(&tPtr->nodeTable, RP_ONE_WORD_KEYS);
+        Rp_SetHashValue(hPtr, tPtr);
+        tPtr->hashPtr = hPtr;
+        tPtr->tagName = Rp_GetHashKey(tablePtr, hPtr);
+    } else {
+        tPtr = Rp_GetHashValue(hPtr);
+    }
+    hPtr = Rp_CreateHashEntry(&tPtr->nodeTable, (char *)node, &isNew);
+    assert(hPtr);
+    if (isNew) {
+        Rp_SetHashValue(hPtr, node);
+    }
+}
+
+void
+Rp_TreeForgetTag(TreeClient *clientPtr, CONST char *tagName)
+{
+    if ((strcmp(tagName, "all") != 0) && (strcmp(tagName, "root") != 0)) {
+        Rp_HashEntry *hPtr;
+
+        hPtr = Rp_FindHashEntry(&clientPtr->tagTablePtr->tagTable, tagName);
+        if (hPtr != NULL) {
+            Rp_TreeTagEntry *tPtr;
+
+            Rp_DeleteHashEntry(&clientPtr->tagTablePtr->tagTable, hPtr);
+            tPtr = Rp_GetHashValue(hPtr);
+            Rp_DeleteHashTable(&tPtr->nodeTable);
+            Rp_Free(tPtr);
+        }
+    }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeTagHashTable --
+ *
+ *---------------------------------------------------------------------- 
+ */
+Rp_HashTable *
+Rp_TreeTagHashTable(TreeClient *clientPtr, CONST char *tagName)
+{
+    Rp_HashEntry *hPtr;
+
+    hPtr = Rp_FindHashEntry(&clientPtr->tagTablePtr->tagTable, tagName);
+    if (hPtr != NULL) {
+        Rp_TreeTagEntry *tPtr;
+
+        tPtr = Rp_GetHashValue(hPtr);
+        return &tPtr->nodeTable;
+    }
+    return NULL;
+}
+
+Rp_HashEntry *
+Rp_TreeFirstTag(TreeClient *clientPtr, Rp_HashSearch *cursorPtr)
+{
+    return Rp_FirstHashEntry(&clientPtr->tagTablePtr->tagTable, cursorPtr);
+}
+
+#if (SIZEOF_VOID_P == 8)
+/*
+ *----------------------------------------------------------------------
+ *
+ * HashOneWord --
+ *
+ *  Compute a one-word hash value of a 64-bit word, which then can
+ *  be used to generate a hash index.
+ *
+ *  From Knuth, it's a multiplicative hash.  Multiplies an unsigned
+ *  64-bit value with the golden ratio (sqrt(5) - 1) / 2.  The
+ *  downshift value is 64 - n, when n is the log2 of the size of
+ *  the hash table.
+ *
+ * Results:
+ *  The return value is a one-word summary of the information in
+ *  64 bit word.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+static Rp_Hash
+HashOneWord(
+    uint64_t mask,
+    unsigned int downshift,
+    CONST void *key)
+{
+    uint64_t a0, a1;
+    uint64_t y0, y1;
+    uint64_t y2, y3;
+    uint64_t p1, p2;
+    uint64_t result;
+
+    /* Compute key * GOLDEN_RATIO in 128-bit arithmetic */
+    a0 = (uint64_t)key & 0x00000000FFFFFFFF;
+    a1 = (uint64_t)key >> 32;
+
+    y0 = a0 * 0x000000007f4a7c13;
+    y1 = a0 * 0x000000009e3779b9;
+    y2 = a1 * 0x000000007f4a7c13;
+    y3 = a1 * 0x000000009e3779b9;
+    y1 += y0 >> 32;     /* Can't carry */
+    y1 += y2;           /* Might carry */
+    if (y1 < y2) {
+        y3 += (1LL << 32);  /* Propagate */
+    }
+
+    /* 128-bit product: p1 = loword, p2 = hiword */
+    p1 = ((y1 & 0x00000000FFFFFFFF) << 32) + (y0 & 0x00000000FFFFFFFF);
+    p2 = y3 + (y1 >> 32);
+
+    /* Left shift the value downward by the size of the table */
+    if (downshift > 0) {
+        if (downshift < 64) {
+            result = ((p2 << (64 - downshift)) | (p1 >> (downshift & 63)));
+        } else {
+            result = p2 >> (downshift & 63);
+        }
+    } else { 
+        result = p1;
+    }
+    /* Finally mask off the high bits */
+    return (Rp_Hash)(result & mask);
+}
+
+#endif /* SIZEOF_VOID_P == 8 */
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * RebuildTable --
+ *
+ *  This procedure is invoked when the ratio of entries to hash
+ *  buckets becomes too large.  It creates a new table with a
+ *  larger bucket array and moves all of the entries into the
+ *  new table.
+ *
+ * Results:
+ *  None.
+ *
+ * Side effects:
+ *  Memory gets reallocated and entries get re-hashed to new
+ *  buckets.
+ *
+ *----------------------------------------------------------------------
+ */
+static void
+RebuildTable(Node *nodePtr)     /* Table to enlarge. */
+{
+    Value **newBucketPtr, **oldBuckets;
+    register Value **bucketPtr, **endPtr;
+    register Value *valuePtr, *nextPtr;
+    unsigned int downshift;
+    unsigned long mask;
+    Value **buckets;
+    size_t nBuckets;
+
+    oldBuckets = (Value **)nodePtr->values;
+    nBuckets = (1 << nodePtr->logSize);
+    endPtr = oldBuckets + nBuckets;
+
+    /*
+     * Allocate and initialize the new bucket array, and set up
+     * hashing constants for new array size.
+     */
+    nodePtr->logSize += 2;
+    nBuckets = (1 << nodePtr->logSize);
+    buckets = Rp_Calloc(nBuckets, sizeof(Value *));
+
+    /*
+     * Move all of the existing entries into the new bucket array,
+     * based on their hash values.
+     */
+    mask = nBuckets - 1;
+    downshift = DOWNSHIFT_START - nodePtr->logSize;
+    for (bucketPtr = oldBuckets; bucketPtr < endPtr; bucketPtr++) {
+        for (valuePtr = *bucketPtr; valuePtr != NULL; valuePtr = nextPtr) {
+            nextPtr = valuePtr->next;
+            newBucketPtr = buckets + RANDOM_INDEX(valuePtr->key);
+            valuePtr->next = *newBucketPtr;
+            *newBucketPtr = valuePtr;
+        }
+    }
+    nodePtr->values = (Value *)buckets;
+    Rp_Free(oldBuckets);
+}
+
+static void
+ConvertValues(Node *nodePtr)
+{
+    unsigned int nBuckets;
+    Value **buckets;
+    unsigned int mask;
+    int downshift;
+    Value *valuePtr, *nextPtr, **bucketPtr;
+
+    /*
+     * Convert list of values into a hash table.
+     */
+    nodePtr->logSize = START_LOGSIZE;
+    nBuckets = 1 << nodePtr->logSize;
+    buckets = Rp_Calloc(nBuckets, sizeof(Value *));
+    mask = nBuckets - 1;
+    downshift = DOWNSHIFT_START - nodePtr->logSize;
+    for (valuePtr = nodePtr->values; valuePtr != NULL; valuePtr = nextPtr) {
+        nextPtr = valuePtr->next;
+        bucketPtr = buckets + RANDOM_INDEX(valuePtr->key);
+        valuePtr->next = *bucketPtr;
+        *bucketPtr = valuePtr;
+    }
+    nodePtr->values = (Value *)buckets;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TreeDeleteValue --
+ *
+ *  Remove a single entry from a hash table.
+ *
+ * Results:
+ *  None.
+ *
+ * Side effects:
+ *  The entry given by entryPtr is deleted from its table and
+ *  should never again be used by the caller.  It is up to the
+ *  caller to free the clientData field of the entry, if that
+ *  is relevant.
+ *
+ *----------------------------------------------------------------------
+ */
+static int
+TreeDeleteValue(Node *nodePtr, Rp_TreeValue value)
+{
+    Value *valuePtr = value;
+    register Value *prevPtr;
+
+    if (nodePtr->logSize > 0) {
+        Value **bucketPtr;
+        unsigned int downshift;
+        unsigned long mask;
+
+        mask = (1 << nodePtr->logSize) - 1;
+        downshift = DOWNSHIFT_START - nodePtr->logSize;
+
+        bucketPtr = (Value **)nodePtr->values + RANDOM_INDEX(valuePtr->key);
+        if (*bucketPtr == valuePtr) {
+            *bucketPtr = valuePtr->next;
+        } else {
+            for (prevPtr = *bucketPtr; /*empty*/; prevPtr = prevPtr->next) {
+                if (prevPtr == NULL) {
+                    return RP_ERROR; /* Can't find value in hash bucket. */
+                }
+                if (prevPtr->next == valuePtr) {
+                    prevPtr->next = valuePtr->next;
+                    break;
+                }
+            }
+        }
+    } else {
+        prevPtr = NULL;
+        for (valuePtr = nodePtr->values; valuePtr != NULL;
+             valuePtr = valuePtr->next) {
+            if (valuePtr == value) {
+                break;
+            }
+            prevPtr = valuePtr;
+        }
+        if (valuePtr == NULL) {
+            return RP_ERROR;   /* Can't find value in list. */
+        }
+        if (prevPtr == NULL) {
+            nodePtr->values = valuePtr->next;
+        } else {
+            prevPtr->next = valuePtr->next;
+        }
+    }
+    nodePtr->nValues--;
+    FreeValue(nodePtr, valuePtr);
+    return RP_OK;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TreeDestroyValues --
+ *
+ *  Free up everything associated with a hash table except for
+ *  the record for the table itself.
+ *
+ * Results:
+ *  None.
+ *
+ * Side effects:
+ *  The hash table is no longer useable.
+ *
+ *----------------------------------------------------------------------
+ */
+static void
+TreeDestroyValues(Node *nodePtr)
+{
+    register Value *valuePtr;
+    Value *nextPtr;
+
+    /*
+     * Free up all the entries in the table.
+     */
+    if (nodePtr->values != NULL) {
+        return;
+    }
+    if (nodePtr->logSize > 0) {
+        Value **buckets;
+        int nBuckets;
+        int i;
+
+        buckets = (Value **)nodePtr->values;
+        nBuckets = (1 << nodePtr->logSize);
+        for (i = 0; i < nBuckets; i++) {
+            for (valuePtr = buckets[i]; valuePtr != NULL; valuePtr = nextPtr) {
+                nextPtr = valuePtr->next;
+                FreeValue(nodePtr, valuePtr);
+            }
+        }
+        Rp_Free(buckets);
+    } else {
+        for (valuePtr = nodePtr->values; valuePtr != NULL; valuePtr = nextPtr) {
+            nextPtr = valuePtr->next;
+            FreeValue(nodePtr, valuePtr);
+        }
+    }
+    nodePtr->values = NULL;
+    nodePtr->nValues = 0;
+    nodePtr->logSize = 0;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TreeFirstValue --
+ *
+ *  Locate the first entry in a hash table and set up a record
+ *  that can be used to step through all the remaining entries
+ *  of the table.
+ *
+ * Results:
+ *  The return value is a pointer to the first value in tablePtr,
+ *  or NULL if tablePtr has no entries in it.  The memory at
+ *  *searchPtr is initialized so that subsequent calls to
+ *  Rp_TreeNextValue will return all of the values in the table,
+ *  one at a time.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+static Value *
+TreeFirstValue(
+    Node *nodePtr,
+    Rp_TreeKeySearch *searchPtr)    /* Place to store information about
+                                     * progress through the table. */
+{
+    searchPtr->node = nodePtr;
+    searchPtr->nextIndex = 0;
+    if (nodePtr->logSize > 0) {
+        searchPtr->nextValue = NULL;
+    } else {
+        searchPtr->nextValue = nodePtr->values;
+    }
+    return TreeNextValue(searchPtr);
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TreeNextValue --
+ *
+ *  Once a hash table enumeration has been initiated by calling
+ *  Rp_TreeFirstValue, this procedure may be called to return
+ *  successive elements of the table.
+ *
+ * Results:
+ *  The return value is the next entry in the hash table being
+ *  enumerated, or NULL if the end of the table is reached.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+static Value *
+TreeNextValue(
+    Rp_TreeKeySearch *searchPtr)  /* Place to store information about
+                                   * progress through the table.  Must
+                                   * have been initialized by calling
+                                   * Rp_TreeFirstValue. */
+{
+    Value *valuePtr;
+
+    if (searchPtr->node->logSize > 0) {
+        size_t nBuckets;
+        Value **buckets;
+
+        nBuckets = (1 << searchPtr->node->logSize);
+        buckets = (Value **)searchPtr->node->values;
+        while (searchPtr->nextValue == NULL) {
+            if (searchPtr->nextIndex >= nBuckets) {
+                return NULL;
+            }
+            searchPtr->nextValue = buckets[searchPtr->nextIndex];
+            searchPtr->nextIndex++;
+        }
+    }
+    valuePtr = searchPtr->nextValue;
+    if (valuePtr != NULL) {
+        searchPtr->nextValue = valuePtr->next;
+    }
+    return valuePtr;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TreeFindValue --
+ *
+ *  Given a hash table with one-word keys, and a one-word key, find
+ *  the entry with a matching key.
+ *
+ * Results:
+ *  The return value is a token for the matching entry in the
+ *  hash table, or NULL if there was no matching entry.
+ *
+ * Side effects:
+ *  None.
+ *
+ *----------------------------------------------------------------------
+ */
+static Value *
+TreeFindValue(
+    Node *nodePtr,
+    Rp_TreeKey key)     /* Key to use to find matching entry. */
+{
+    register Value *valuePtr;
+    Value *bucket;
+
+    if (nodePtr->logSize > 0) {
+        unsigned int downshift;
+        unsigned long mask;
+
+        mask = (1 << nodePtr->logSize) - 1;
+        downshift = DOWNSHIFT_START - nodePtr->logSize;
+        bucket = ((Value **)(nodePtr->values))[RANDOM_INDEX((void *)key)];
+    } else {
+        bucket = nodePtr->values; /* Single chain list. */
+    }
+    /*
+     * Search all of the entries in the appropriate bucket.
+     */
+    for (valuePtr = bucket; valuePtr != NULL; valuePtr = valuePtr->next) {
+        if (valuePtr->key == key) {
+            return valuePtr;
+        }
+    }
+    return NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * Rp_TreeCreateValue --
+ *
+ *  Find the value with a matching key.  If there is no matching 
+ *  value, then create a new one.
+ *
+ * Results:
+ *  The return value is a pointer to the matching value.  If this
+ *  is a newly-created value, then *newPtr will be set to a non-zero
+ *  value;  otherwise *newPtr will be set to 0.
+ *
+ * Side effects:
+ *  A new value may be added to the hash table.
+ *
+ *----------------------------------------------------------------------
+ */
+static Value *
+TreeCreateValue(
+    Node *nodePtr,
+    Rp_TreeKey key,     /* Key to use to find or create matching
+                         * entry. */
+    int *newPtr)        /* Store info here telling whether a new
+                         * entry was created. */
+{
+    register Value *valuePtr;
+
+    /*
+     * Check if there as so many values that storage should be
+     * converted from a hash table instead of a list.
+     */
+    if ((nodePtr->logSize == 0) && (nodePtr->nValues > MAX_LIST_VALUES)) {
+        ConvertValues(nodePtr);
+    }
+    if (nodePtr->logSize > 0) {
+        Value **bucketPtr;
+        size_t nBuckets;
+        unsigned int downshift;
+        unsigned long mask;
+
+        nBuckets = (1 << nodePtr->logSize);
+        mask = nBuckets - 1;
+        downshift = DOWNSHIFT_START - nodePtr->logSize;
+        bucketPtr = (Value **)nodePtr->values + RANDOM_INDEX((void *)key);
+
+        *newPtr = FALSE;
+        for (valuePtr = *bucketPtr; valuePtr != NULL;
+             valuePtr = valuePtr->next) {
+            if (valuePtr->key == key) {
+                return valuePtr;
+            }
+        }
+
+        /* Value not found. Add a new value to the bucket. */
+        *newPtr = TRUE;
+        valuePtr = Rp_PoolAllocItem(nodePtr->treeObject->valuePool, 
+                sizeof(Value));
+        valuePtr->key = key;
+        valuePtr->owner = NULL;
+        valuePtr->next = *bucketPtr;
+        valuePtr->objPtr = NULL;
+        *bucketPtr = valuePtr;
+        nodePtr->nValues++;
+
+        /*
+         * If the table has exceeded a decent size, rebuild it with many
+         * more buckets.
+         */
+        if ((unsigned int)nodePtr->nValues >= (nBuckets * 3)) {
+            RebuildTable(nodePtr);
+        }
+    } else {
+        Value *prevPtr;
+
+        prevPtr = NULL;
+        *newPtr = FALSE;
+        for (valuePtr = nodePtr->values; valuePtr != NULL;
+             valuePtr = valuePtr->next) {
+            if (valuePtr->key == key) {
+                return valuePtr;
+            }
+            prevPtr = valuePtr;
+        }
+        /* Value not found. Add a new value to the list. */
+        *newPtr = TRUE;
+        valuePtr = Rp_PoolAllocItem(nodePtr->treeObject->valuePool,
+                sizeof(Value));
+        valuePtr->key = key;
+        valuePtr->owner = NULL;
+        valuePtr->next = NULL;
+        valuePtr->objPtr = NULL;
+        if (prevPtr == NULL) {
+            nodePtr->values = valuePtr;
+        } else {
+            prevPtr->next = valuePtr;
+        }
+        nodePtr->nValues++;
+    }
+    return valuePtr;
+}
+
+#endif /* NO_TREE */
Index: /tags/1.6.0/src/objects/RpTree.h
===================================================================
--- /tags/1.6.0/src/objects/RpTree.h	(revision 6168)
+++ /tags/1.6.0/src/objects/RpTree.h	(revision 6168)
@@ -0,0 +1,470 @@
+
+/*
+ * bltTree.h --
+ *
+ * Copyright 1998-1999 Lucent Technologies, Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that the above copyright notice appear in all
+ * copies and that both that the copyright notice and warranty
+ * disclaimer appear in supporting documentation, and that the names
+ * of Lucent Technologies or any of their entities not be used in
+ * advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+ *
+ * Lucent Technologies disclaims all warranties with regard to this
+ * software, including all implied warranties of merchantability and
+ * fitness.  In no event shall Lucent Technologies be liable for any
+ * special, indirect or consequential damages or any damages
+ * whatsoever resulting from loss of use, data or profits, whether in
+ * an action of contract, negligence or other tortuous action, arising
+ * out of or in connection with the use or performance of this
+ * software.
+ *
+ * The "tree" data object was created by George A. Howlett.
+ */
+
+#ifndef _RP_TREE_H
+#define _RP_TREE_H
+
+#include <RpInt.h>
+#include <RpChain.h>
+#include <RpHash.h>
+#include <RpPool.h>
+
+typedef struct Rp_TreeNodeStruct *Rp_TreeNode;
+typedef struct Rp_TreeObjectStruct *Rp_TreeObject;
+typedef struct Rp_TreeClientStruct *Rp_Tree;
+typedef struct Rp_TreeTraceStruct *Rp_TreeTrace;
+typedef struct Rp_TreeValueStruct *Rp_TreeValue;
+typedef struct Rp_TreeTagEntryStruct Rp_TreeTagEntry;
+typedef struct Rp_TreeTagTableStruct Rp_TreeTagTable;
+
+typedef char *Rp_TreeKey;
+
+#define TREE_PREORDER       (1<<0)
+#define TREE_POSTORDER      (1<<1)
+#define TREE_INORDER        (1<<2)
+#define TREE_BREADTHFIRST   (1<<3)
+
+#define TREE_TRACE_UNSET    (1<<3)
+#define TREE_TRACE_WRITE    (1<<4)
+#define TREE_TRACE_READ     (1<<5)
+#define TREE_TRACE_CREATE   (1<<6)
+#define TREE_TRACE_ALL      \
+    (TREE_TRACE_UNSET | TREE_TRACE_WRITE | TREE_TRACE_READ | TREE_TRACE_CREATE)
+#define TREE_TRACE_MASK     (TREE_TRACE_ALL)
+
+#define TREE_TRACE_FOREIGN_ONLY (1<<8)
+#define TREE_TRACE_ACTIVE   (1<<9)
+
+#define TREE_NOTIFY_CREATE  (1<<0)
+#define TREE_NOTIFY_DELETE  (1<<1)
+#define TREE_NOTIFY_MOVE    (1<<2)
+#define TREE_NOTIFY_SORT    (1<<3)
+#define TREE_NOTIFY_RELABEL (1<<4)
+#define TREE_NOTIFY_ALL     \
+    (TREE_NOTIFY_CREATE | TREE_NOTIFY_DELETE | TREE_NOTIFY_MOVE | \
+    TREE_NOTIFY_SORT | TREE_NOTIFY_RELABEL)
+#define TREE_NOTIFY_MASK    (TREE_NOTIFY_ALL)
+
+#define TREE_NOTIFY_WHENIDLE    (1<<8)
+#define TREE_NOTIFY_FOREIGN_ONLY (1<<9)
+#define TREE_NOTIFY_ACTIVE      (1<<10)
+
+typedef struct {
+    int type;
+    Rp_Tree tree;
+    int inode;          /* Node of event */
+    // Tcl_Interp *interp;
+} Rp_TreeNotifyEvent;
+
+typedef struct {
+    Rp_TreeNode node;           /* Node being searched. */
+    unsigned long nextIndex;    /* Index of next bucket to be
+                                 * enumerated after present one. */
+    Rp_TreeValue nextValue;     /* Next entry to be enumerated in the
+                                 * the current bucket. */
+} Rp_TreeKeySearch;
+
+/*
+ * Rp_TreeObject --
+ *
+ *  Structure providing the internal representation of the tree
+ *  object. A tree is uniquely identified by a combination of
+ *  its name and originating namespace.  Two trees in the same
+ *  interpreter can have the same names but reside in different
+ *  namespaces.
+ *
+ *  The tree object represents a general-ordered tree of nodes.
+ *  Each node may contain a heterogeneous collection of data
+ *  values. Each value is identified by a field name and nodes
+ *  do not need to contain the same data fields. Data field
+ *  names are saved as reference counted strings and can be
+ *  shared among nodes.
+ *
+ *  The tree is threaded.  A node contains both a pointer to
+ *  back its parents and another to its siblings.  Therefore
+ *  the tree maybe traversed non-recursively.
+ *
+ *  A tree object can be shared by several clients.  When a
+ *  client wants to use a tree object, it is given a token
+ *  that represents the tree.  The tree object uses the tokens
+ *  to keep track of its clients.  When all clients have
+ *  released their tokens the tree is automatically destroyed.
+ */
+struct Rp_TreeObjectStruct {
+//    Tcl_Interp *interp;     /* Interpreter associated with this tree. */
+
+    char *name;
+
+//    Tcl_Namespace *nsPtr;
+
+    Rp_HashEntry *hashPtr;  /* Pointer to this tree object in tree
+                             * object hash table. */
+    Rp_HashTable *tablePtr;
+
+    Rp_TreeNode root;       /* Root of the entire tree. */
+
+    char *sortNodesCmd;     /* Tcl command to invoke to sort entries */
+
+    Rp_Chain *clients;      /* List of clients using this tree */
+
+    Rp_Pool nodePool;
+    Rp_Pool valuePool;
+
+    Rp_HashTable nodeTable; /* Table of node identifiers. Used to
+                             * search for a node pointer given an inode.*/
+    unsigned int nextInode;
+
+    unsigned int nNodes;    /* Always counts root node. */
+
+    unsigned int depth;     /* Maximum depth of the tree. */
+
+    unsigned int flags;     /* Internal flags. See definitions
+                             * below. */
+    unsigned int notifyFlags;   /* Notification flags. See definitions
+                                 * below. */
+
+};
+
+/*
+ * Rp_TreeNodeStruct --
+ *
+ *  Structure representing a node in a general ordered tree.
+ *  Nodes are identified by their index, or inode.  Nodes also
+ *  have names, but nodes names are not unique and can be 
+ *  changed.  Inodes are valid even if the node is moved.
+ *
+ *  Each node can contain a list of data fields.  Fields are
+ *  name-value pairs.  The values are represented by Tcl_Objs.
+ *
+ */
+struct Rp_TreeNodeStruct {
+    Rp_TreeNode parent; /* Parent node. If NULL, then this is
+                           the root node. */
+    Rp_TreeNode next;       /* Next sibling node. */
+    Rp_TreeNode prev;       /* Previous sibling node. */
+    Rp_TreeNode first;      /* First child node. */
+    Rp_TreeNode last;       /* Last child node. */
+
+    Rp_TreeKey label;       /* Node label (doesn't have to be
+                             * unique). */
+
+    Rp_TreeObject treeObject;
+
+    Rp_TreeValue values;    /* Depending upon the number of values
+                             * stored, this is either a chain or
+                             * hash table of Rp_TreeValue
+                             * structures.  (Note: if logSize is 
+                             * 0, then this is a list).  Each
+                             * value contains key/value data
+                             * pair.  The data is a Tcl_Obj. */
+
+    unsigned short nValues; /* # of values for this node. */
+
+    unsigned short logSize; /* Size of hash table indicated as a
+                             * power of 2 (e.g. if logSize=3, then
+                             * table size is 8). If 0, this
+                             * indicates that the node's values
+                             * are stored as a list. */
+
+    unsigned int nChildren; /* # of children for this node. */
+    // unsigned int inode;     /* Serial number of the node. */
+    size_t inode;           /* Serial number of the node. */
+
+    unsigned short depth;   /* The depth of this node in the tree. */
+
+    unsigned short flags;
+};
+
+struct Rp_TreeTagEntryStruct {
+    char *tagName;
+    Rp_HashEntry *hashPtr;
+    Rp_HashTable nodeTable;
+};
+
+struct Rp_TreeTagTableStruct {
+    Rp_HashTable tagTable;
+    int refCount;
+};
+
+/*
+ * Rp_TreeClientStruct --
+ *
+ *  A tree can be shared by several clients.  Each client allocates
+ *  this structure which acts as a ticket for using the tree.  Clients
+ *  can designate notifier routines that are automatically invoked
+ *  by the tree object whenever the tree is changed is specific
+ *  ways by other clients.
+ */
+
+struct Rp_TreeClientStruct {
+    unsigned int magic;     /* Magic value indicating whether a
+                             * generic pointer is really a tree
+                             * token or not. */
+    Rp_ChainLink *linkPtr;  /* Pointer into the server's chain of
+                             * clients. */
+    Rp_TreeObject treeObject;   /* Pointer to the structure containing
+                                 * the master information about the
+                                 * tree used by the client.  If NULL,
+                                 * this indicates that the tree has
+                                 * been destroyed (but as of yet, this
+                                 * client hasn't recognized it). */
+
+    Rp_Chain *events;       /* Chain of node event handlers. */
+    Rp_Chain *traces;       /* Chain of data field callbacks. */
+    Rp_TreeNode root;       /* Designated root for this client */
+    Rp_TreeTagTable *tagTablePtr;
+};
+
+
+typedef int (Rp_TreeNotifyEventProc) _ANSI_ARGS_((ClientData clientData,
+        Rp_TreeNotifyEvent *eventPtr));
+
+typedef int (Rp_TreeTraceProc) _ANSI_ARGS_((ClientData clientData,
+        Rp_TreeNode node, Rp_TreeKey key, unsigned int flags));
+
+typedef int (Rp_TreeEnumProc) _ANSI_ARGS_((Rp_TreeNode node, Rp_TreeKey key,
+        // Tcl_Obj *valuePtr));
+        void *valuePtr));
+
+typedef int (Rp_TreeCompareNodesProc) _ANSI_ARGS_((Rp_TreeNode *n1Ptr,
+        Rp_TreeNode *n2Ptr));
+
+typedef int (Rp_TreeApplyProc) _ANSI_ARGS_((Rp_TreeNode node,
+        ClientData clientData, int order));
+
+struct Rp_TreeTraceStruct {
+    ClientData clientData;
+    Rp_TreeKey key;
+    Rp_TreeNode node;
+    unsigned int mask;
+    Rp_TreeTraceProc *proc;
+};
+
+/*
+ * Structure definition for information used to keep track of searches
+ * through hash tables:p
+ */
+struct Rp_TreeKeySearchStruct {
+    Rp_TreeNode node;           /* Table being searched. */
+    unsigned long nextIndex;    /* Index of next bucket to be
+                                 * enumerated after present one. */
+    Rp_TreeValue nextValue;     /* Next entry to be enumerated in the
+                                 * the current bucket. */
+};
+
+EXTERN Rp_TreeKey Rp_TreeGetKey _ANSI_ARGS_((CONST char *string));
+
+EXTERN Rp_TreeNode Rp_TreeCreateNode _ANSI_ARGS_((Rp_Tree tree,
+        Rp_TreeNode parent, CONST char *name, int position));
+EXTERN Rp_TreeNode Rp_TreeCreateNodeWithId _ANSI_ARGS_((Rp_Tree tree,
+        Rp_TreeNode parent, CONST char *name, size_t inode, int position));
+
+EXTERN int Rp_TreeDeleteNode _ANSI_ARGS_((Rp_Tree tree, Rp_TreeNode node));
+
+EXTERN int Rp_TreeMoveNode _ANSI_ARGS_((Rp_Tree tree, Rp_TreeNode node,
+        Rp_TreeNode parent, Rp_TreeNode before));
+
+EXTERN Rp_TreeNode Rp_TreeGetNode _ANSI_ARGS_((Rp_Tree tree, size_t inode));
+
+EXTERN Rp_TreeNode Rp_TreeFindChild _ANSI_ARGS_((Rp_TreeNode parent,
+        CONST char *name));
+
+EXTERN Rp_TreeNode Rp_TreeFindChildNext _ANSI_ARGS_((Rp_TreeNode child,
+        CONST char *name));
+
+EXTERN Rp_TreeNode Rp_TreeFirstChild _ANSI_ARGS_((Rp_TreeNode parent));
+
+EXTERN Rp_TreeNode Rp_TreeNextSibling _ANSI_ARGS_((Rp_TreeNode node));
+
+EXTERN Rp_TreeNode Rp_TreeLastChild _ANSI_ARGS_((Rp_TreeNode parent));
+
+EXTERN Rp_TreeNode Rp_TreePrevSibling _ANSI_ARGS_((Rp_TreeNode node));
+
+EXTERN Rp_TreeNode Rp_TreeNextNode _ANSI_ARGS_((Rp_TreeNode root,
+        Rp_TreeNode node));
+
+EXTERN Rp_TreeNode Rp_TreePrevNode _ANSI_ARGS_((Rp_TreeNode root,
+        Rp_TreeNode node));
+
+EXTERN Rp_TreeNode Rp_TreeChangeRoot _ANSI_ARGS_((Rp_Tree tree,
+        Rp_TreeNode node));
+
+EXTERN Rp_TreeNode Rp_TreeEndNode _ANSI_ARGS_((Rp_TreeNode node,
+        unsigned int nodeFlags));
+
+EXTERN int Rp_TreeIsBefore _ANSI_ARGS_((Rp_TreeNode node1,
+        Rp_TreeNode node2));
+
+EXTERN int Rp_TreeIsAncestor _ANSI_ARGS_((Rp_TreeNode node1,
+        Rp_TreeNode node2));
+
+EXTERN int Rp_TreePrivateValue _ANSI_ARGS_((Rp_Tree tree,
+        Rp_TreeNode node, Rp_TreeKey key));
+
+EXTERN int Rp_TreePublicValue _ANSI_ARGS_((Rp_Tree tree,
+        Rp_TreeNode node, Rp_TreeKey key));
+
+EXTERN int Rp_TreeGetValue _ANSI_ARGS_((Rp_Tree tree,
+        // Rp_TreeNode node, CONST char *string, Tcl_Obj **valuePtr));
+        Rp_TreeNode node, CONST char *string, void **valuePtr));
+
+EXTERN int Rp_TreeValueExists _ANSI_ARGS_((Rp_Tree tree, Rp_TreeNode node,
+        CONST char *string));
+
+EXTERN int Rp_TreeSetValue _ANSI_ARGS_((Rp_Tree tree,
+        // Rp_TreeNode node, CONST char *string, Tcl_Obj *valuePtr));
+        Rp_TreeNode node, CONST char *string, void *valuePtr));
+
+EXTERN int Rp_TreeUnsetValue _ANSI_ARGS_((Rp_Tree tree,
+        Rp_TreeNode node, CONST char *string));
+
+EXTERN int Rp_TreeGetArrayValue _ANSI_ARGS_((
+        Rp_Tree tree, Rp_TreeNode node, CONST char *arrayName,
+        // CONST char *elemName, Tcl_Obj **valueObjPtrPtr));
+        CONST char *elemName, void **valueObjPtrPtr));
+
+EXTERN int Rp_TreeSetArrayValue _ANSI_ARGS_((
+        Rp_Tree tree, Rp_TreeNode node, CONST char *arrayName,
+        //CONST char *elemName, Tcl_Obj *valueObjPtr));
+        CONST char *elemName, void *valueObjPtr));
+
+EXTERN int Rp_TreeUnsetArrayValue _ANSI_ARGS_((
+        Rp_Tree tree, Rp_TreeNode node, CONST char *arrayName,
+        CONST char *elemName));
+
+EXTERN int Rp_TreeArrayValueExists _ANSI_ARGS_((Rp_Tree tree,
+        Rp_TreeNode node, CONST char *arrayName, CONST char *elemName));
+
+EXTERN int Rp_TreeArrayNames _ANSI_ARGS_((Rp_Tree tree,
+        // Rp_TreeNode node, CONST char *arrayName, Tcl_Obj *listObjPtr));
+        Rp_TreeNode node, CONST char *arrayName, void *listObjPtr));
+
+EXTERN int Rp_TreeGetValueByKey _ANSI_ARGS_((
+        Rp_Tree tree, Rp_TreeNode node, Rp_TreeKey key,
+        // Tcl_Obj **valuePtr));
+        void **valuePtr));
+
+EXTERN int Rp_TreeSetValueByKey _ANSI_ARGS_((
+        // Rp_Tree tree, Rp_TreeNode node, Rp_TreeKey key, Tcl_Obj *valuePtr));
+        Rp_Tree tree, Rp_TreeNode node, Rp_TreeKey key, void *valuePtr));
+
+EXTERN int Rp_TreeUnsetValueByKey _ANSI_ARGS_((
+        Rp_Tree tree, Rp_TreeNode node, Rp_TreeKey key));
+
+EXTERN int Rp_TreeValueExistsByKey _ANSI_ARGS_((Rp_Tree tree,
+        Rp_TreeNode node, Rp_TreeKey key));
+
+EXTERN Rp_TreeKey Rp_TreeFirstKey _ANSI_ARGS_((Rp_Tree tree,
+        Rp_TreeNode node, Rp_TreeKeySearch *cursorPtr));
+
+EXTERN Rp_TreeKey Rp_TreeNextKey _ANSI_ARGS_((Rp_Tree tree,
+        Rp_TreeKeySearch *cursorPtr));
+
+EXTERN int Rp_TreeApply _ANSI_ARGS_((Rp_TreeNode root,
+        Rp_TreeApplyProc *proc, ClientData clientData));
+
+EXTERN int Rp_TreeApplyDFS _ANSI_ARGS_((Rp_TreeNode root,
+        Rp_TreeApplyProc *proc, ClientData clientData, int order));
+
+EXTERN int Rp_TreeApplyBFS _ANSI_ARGS_((Rp_TreeNode root,
+        Rp_TreeApplyProc *proc, ClientData clientData));
+
+EXTERN int Rp_TreeApplyXML _ANSI_ARGS_((Rp_TreeNode root,
+        Rp_TreeApplyProc *proc, ClientData clientData));
+
+EXTERN int Rp_TreeSortNode _ANSI_ARGS_((Rp_Tree tree, Rp_TreeNode node,
+        Rp_TreeCompareNodesProc *proc));
+
+EXTERN int Rp_TreeCreate _ANSI_ARGS_((CONST char *name,
+        Rp_Tree *treePtr));
+
+// EXTERN int Rp_TreeExists _ANSI_ARGS_((CONST char *name));
+
+// EXTERN int Rp_TreeGetToken _ANSI_ARGS_((CONST char *name,
+//         Rp_Tree *treePtr));
+
+EXTERN int Rp_TreeGetTokenFromToken _ANSI_ARGS_((
+        CONST Rp_Tree tree, Rp_Tree *newToken));
+
+EXTERN void Rp_TreeReleaseToken _ANSI_ARGS_((Rp_Tree tree));
+
+EXTERN int Rp_TreeSize _ANSI_ARGS_((Rp_TreeNode node));
+
+EXTERN Rp_TreeTrace Rp_TreeCreateTrace _ANSI_ARGS_((Rp_Tree tree,
+        Rp_TreeNode node, CONST char *keyPattern, CONST char *tagName,
+        unsigned int mask, Rp_TreeTraceProc *proc, ClientData clientData));
+
+EXTERN void Rp_TreeDeleteTrace _ANSI_ARGS_((Rp_TreeTrace token));
+
+EXTERN void Rp_TreeCreateEventHandler _ANSI_ARGS_((Rp_Tree tree,
+        unsigned int mask, Rp_TreeNotifyEventProc *proc,
+        ClientData clientData));
+
+EXTERN void Rp_TreeDeleteEventHandler _ANSI_ARGS_((Rp_Tree tree,
+        unsigned int mask, Rp_TreeNotifyEventProc *proc,
+        ClientData clientData));
+
+EXTERN void Rp_TreeRelabelNode _ANSI_ARGS_((Rp_Tree tree, Rp_TreeNode node,
+        CONST char *string));
+EXTERN void Rp_TreeRelabelNode2 _ANSI_ARGS_((Rp_TreeNode node,
+        CONST char *string));
+//EXTERN char *Rp_TreeNodePath _ANSI_ARGS_((Rp_TreeNode node,
+//        Tcl_DString *resultPtr));
+EXTERN int Rp_TreeNodePosition _ANSI_ARGS_((Rp_TreeNode node));
+
+EXTERN void Rp_TreeClearTags _ANSI_ARGS_((Rp_Tree tree, Rp_TreeNode node));
+EXTERN int Rp_TreeHasTag _ANSI_ARGS_((Rp_Tree tree, Rp_TreeNode node,
+        CONST char *tagName));
+EXTERN void Rp_TreeAddTag _ANSI_ARGS_((Rp_Tree tree, Rp_TreeNode node,
+        CONST char *tagName));
+EXTERN void Rp_TreeForgetTag _ANSI_ARGS_((Rp_Tree tree, CONST char *tagName));
+EXTERN Rp_HashTable *Rp_TreeTagHashTable _ANSI_ARGS_((Rp_Tree tree,
+        CONST char *tagName));
+EXTERN int Rp_TreeTagTableIsShared _ANSI_ARGS_((Rp_Tree tree));
+EXTERN int Rp_TreeShareTagTable _ANSI_ARGS_((Rp_Tree src, Rp_Tree target));
+EXTERN Rp_HashEntry *Rp_TreeFirstTag _ANSI_ARGS_((Rp_Tree tree,
+        Rp_HashSearch *searchPtr));
+
+#define Rp_TreeName(token)              ((token)->treeObject->name)
+#define Rp_TreeRootNode(token)          ((token)->root)
+#define Rp_TreeChangeRoot(token, node)  ((token)->root = (node))
+
+#define Rp_TreeNodeDepth(token, node)   ((node)->depth - (token)->root->depth)
+#define Rp_TreeNodeLabel(node)          ((node)->label)
+#define Rp_TreeNodeId(node)             ((node)->inode)
+#define Rp_TreeNodeParent(node)         ((node)->parent)
+#define Rp_TreeNodeDegree(node)         ((node)->nChildren)
+
+#define Rp_TreeIsLeaf(node)             ((node)->nChildren == 0)
+#define Rp_TreeNextNodeId(token)        ((token)->treeObject->nextInode)
+
+#define Rp_TreeFirstChild(node)         ((node)->first)
+#define Rp_TreeLastChild(node)          ((node)->last)
+#define Rp_TreeNextSibling(node)        (((node) == NULL) ? NULL : (node)->next)
+#define Rp_TreePrevSibling(node)        (((node) == NULL) ? NULL : (node)->prev)
+
+#endif /* _RP_TREE_H */
Index: /tags/1.6.0/src/objects/RpUtils2.c
===================================================================
--- /tags/1.6.0/src/objects/RpUtils2.c	(revision 6168)
+++ /tags/1.6.0/src/objects/RpUtils2.c	(revision 6168)
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+void
+Rp_Assert(testExpr, fileName, lineNumber)
+    char *testExpr;
+    char *fileName;
+    int lineNumber;
+{
+    fprintf(stderr, "line %d of %s: Assert \"%s\" failed\n",
+    lineNumber, fileName, testExpr);
+    fflush(stderr);
+    abort();
+}
+
+void
+Rp_Panic (
+    const char *format,
+    ...)
+{
+    va_list argList;
+
+    va_start(argList, format);
+    vfprintf(stderr, format, argList);
+    fprintf(stderr, "\n");
+    fflush(stderr);
+    abort();
+}
Index: /tags/1.6.0/tester/Makefile.in
===================================================================
--- /tags/1.6.0/tester/Makefile.in	(revision 6168)
+++ /tags/1.6.0/tester/Makefile.in	(revision 6168)
@@ -0,0 +1,50 @@
+
+SHELL		= @SHELL@
+
+srcdir		= @srcdir@
+prefix		= @prefix@
+exec_prefix	= @exec_prefix@
+bindir		= @bindir@
+libdir		= @libdir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+mandir		= @mandir@
+includedir	= @includedir@
+
+pkgdatadir	= $(datadir)/$(PKG_DIR)
+pkglibdir	= $(libdir)/$(PKG_DIR)
+pkgincludedir	= $(includedir)/$(PKG_DIR)
+top_builddir	= .
+
+MKDIR_P		= @MKDIR_P@
+TCL_VERSION	= @TCL_VERSION@
+TCLSH           = $(bindir)/tclsh$(TCL_VERSION)
+INSTALL		= @INSTALL@
+
+PACKAGE_VERSION	= @PACKAGE_VERSION@
+
+version		= $(PACKAGE_VERSION)
+name		= RapptureTester$(version)
+
+destdir         = $(libdir)/$(name)
+
+.PHONY: all install install-pkg install-scripts clean distclean
+
+all:
+	$(MAKE) -C scripts all
+
+install: install-pkg install-scripts
+
+install-pkg:
+	$(MKDIR_P) -m 0755 $(destdir)
+	$(INSTALL) -m 444 pkgIndex.tcl $(destdir)
+
+install-scripts: scripts
+	$(MAKE) -C scripts install
+
+clean:
+	$(MAKE) -C scripts clean
+	$(RM) example/driver*.xml example/run*.xml
+
+distclean: clean
+	$(RM) Makefile pkgIndex.tcl *~
Index: /tags/1.6.0/tester/example/fermi_broken.tcl
===================================================================
--- /tags/1.6.0/tester/example/fermi_broken.tcl	(revision 6168)
+++ /tags/1.6.0/tester/example/fermi_broken.tcl	(revision 6168)
@@ -0,0 +1,68 @@
+# ----------------------------------------------------------------------
+#  This is a modifed version of the Tcl app-fermi example which has been
+#  purposely broken for testing the Rappture regression testing tool.
+#  Incorrect results are given whenever temperature is set to 300K (room
+#  temperature), and an error is thrown when the temperature is 4.2K
+#  AND the energy level is 1eV.
+# ======================================================================
+#  AUTHOR:  Ben Rafferty, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Rappture
+
+# open the XML file containing the run parameters
+set driver [Rappture::library [lindex $argv 0]]
+
+set T [$driver get input.(temperature).current]
+set T [Rappture::Units::convert $T -to K -units off]
+set Ef [$driver get input.(Ef).current]
+set Ef [Rappture::Units::convert $Ef -to eV -units off]
+
+set kT [expr {8.61734e-5 * $T}]
+set Emin [expr {$Ef - 10*$kT}]
+set Emax [expr {$Ef + 10*$kT}]
+
+set E $Emin
+set dE [expr {0.005*($Emax-$Emin)}]
+
+# take a while and give some output along the way
+Rappture::Utils::progress 0 -mesg "Starting..."
+puts "Taking a while to run..."
+after 1000
+puts "making some progress"
+after 2000
+puts "done"
+Rappture::Utils::progress 10 -mesg "Starting, for real now."
+after 1000
+
+# Label output graph with title, x-axis label,
+# y-axis lable, and y-axis units
+$driver put -append no output.curve(f12).about.label "Fermi-Dirac Factor"
+$driver put -append no output.curve(f12).xaxis.label "Fermi-Dirac Factor"
+$driver put -append no output.curve(f12).yaxis.label "Energy"
+$driver put -append no output.curve(f12).yaxis.units "eV"
+
+# Error if T = 4.2 and Ef = 1eV
+if {$T == 4.2 && $Ef == 1} {
+    error "Purposely throwing an error for this input combination."
+}
+
+# Produce bad results whenever T = 300K
+if {$T == 300} {
+    set kT [expr $kT * 2]
+}
+
+while {$E < $Emax} {
+    set f [expr {1.0/(1.0 + exp(($E - $Ef)/$kT))}]
+    set progress [expr {(($E - $Emin)/($Emax - $Emin)*100)}]
+    Rappture::Utils::progress $progress -mesg "Iterating"
+    $driver put -append yes output.curve(f12).component.xy "$f $E\n"
+    set E [expr {$E + $dE}]
+}
+
+# save the updated XML describing the run...
+Rappture::result $driver
+exit 0
Index: /tags/1.6.0/tester/example/tests/test1.xml
===================================================================
--- /tags/1.6.0/tester/example/tests/test1.xml	(revision 6168)
+++ /tags/1.6.0/tester/example/tests/test1.xml	(revision 6168)
@@ -0,0 +1,275 @@
+<?xml version="1.0"?>
+<run>
+    <test>
+        <label>roomtemp|0eV</label>
+        <description>This test is at room temperature and 0eV.  It should result in incorrect curve values in the "new" version of fermi.tcl</description>
+    </test>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <current>300K</current>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999954602131 -0.2585202
+0.999949827835 -0.255934998
+0.999944551475 -0.253349796
+0.99993872026 -0.250764594
+0.99993227585 -0.248179392
+0.999925153772 -0.24559419
+0.999917282777 -0.243008988
+0.999908584126 -0.240423786
+0.999898970806 -0.237838584
+0.999888346659 -0.235253382
+0.999876605424 -0.23266818
+0.999863629673 -0.230082978
+0.999849289642 -0.227497776
+0.999833441935 -0.224912574
+0.999815928095 -0.222327372
+0.999796573022 -0.21974217
+0.99977518323 -0.217156968
+0.999751544918 -0.214571766
+0.999725421844 -0.211986564
+0.99969655297 -0.209401362
+0.99966464987 -0.20681616
+0.999629393859 -0.204230958
+0.999590432835 -0.201645756
+0.999547377777 -0.199060554
+0.999499798893 -0.196475352
+0.999447221363 -0.19389015
+0.999389120641 -0.191304948
+0.999324917269 -0.188719746
+0.999253971166 -0.186134544
+0.999175575314 -0.183549342
+0.999088948806 -0.18096414
+0.99899322918 -0.178378938
+0.998887463967 -0.175793736
+0.998770601379 -0.173208534
+0.99864148005 -0.170623332
+0.998498817743 -0.16803813
+0.99834119892 -0.165452928
+0.998167061058 -0.162867726
+0.997974679611 -0.160282524
+0.997762151479 -0.157697322
+0.997527376843 -0.15511212
+0.997268039237 -0.152526918
+0.996981583675 -0.149941716
+0.996665192693 -0.147356514
+0.996315760101 -0.144771312
+0.995929862284 -0.14218611
+0.995503726839 -0.139600908
+0.99503319835 -0.137015706
+0.994513701101 -0.134430504
+0.993940198508 -0.131845302
+0.993307149076 -0.1292601
+0.992608458656 -0.126674898
+0.991837428847 -0.124089696
+0.990986701347 -0.121504494
+0.990048198133 -0.118919292
+0.989013057369 -0.11633409
+0.987871565016 -0.113748888
+0.986613082172 -0.111163686
+0.985225968307 -0.108578484
+0.983697500629 -0.105993282
+0.982013790038 -0.10340808
+0.980159694266 -0.100822878
+0.978118729064 -0.098237676
+0.975872978582 -0.095652474
+0.973403006423 -0.093067272
+0.970687769249 -0.09048207
+0.967704535302 -0.087896868
+0.964428810727 -0.085311666
+0.960834277203 -0.082726464
+0.956892745059 -0.080141262
+0.952574126822 -0.07755606
+0.947846436922 -0.074970858
+0.942675824101 -0.072385656
+0.937026643943 -0.069800454
+0.930861579657 -0.067215252
+0.924141819979 -0.06463005
+0.916827303506 -0.062044848
+0.908877038985 -0.059459646
+0.90024951088 -0.056874444
+0.890903178804 -0.054289242
+0.880797077978 -0.05170404
+0.869891525637 -0.049118838
+0.8581489351 -0.046533636
+0.845534734916 -0.043948434
+0.832018385134 -0.041363232
+0.817574476194 -0.03877803
+0.802183888559 -0.036192828
+0.785834983043 -0.033607626
+0.768524783499 -0.031022424
+0.750260105595 -0.028437222
+0.73105857863 -0.02585202
+0.710949502625 -0.023266818
+0.689974481128 -0.020681616
+0.668187772168 -0.018096414
+0.645656306226 -0.015511212
+0.622459331202 -0.01292601
+0.598687660112 -0.010340808
+0.574442516812 -0.007755606
+0.549833997312 -0.005170404
+0.524979187479 -0.002585202
+0.5 3.69496100383e-16
+0.475020812521 0.002585202
+0.450166002688 0.005170404
+0.425557483188 0.007755606
+0.401312339888 0.010340808
+0.377540668798 0.01292601
+0.354343693774 0.015511212
+0.331812227832 0.018096414
+0.310025518872 0.020681616
+0.289050497375 0.023266818
+0.26894142137 0.02585202
+0.249739894405 0.028437222
+0.231475216501 0.031022424
+0.214165016957 0.033607626
+0.197816111441 0.036192828
+0.182425523806 0.03877803
+0.167981614866 0.041363232
+0.154465265084 0.043948434
+0.1418510649 0.046533636
+0.130108474363 0.049118838
+0.119202922022 0.05170404
+0.109096821196 0.054289242
+0.0997504891197 0.056874444
+0.0911229610149 0.059459646
+0.0831726964939 0.062044848
+0.0758581800212 0.06463005
+0.0691384203433 0.067215252
+0.062973356057 0.069800454
+0.0573241758989 0.072385656
+0.0521535630784 0.074970858
+0.0474258731776 0.07755606
+0.0431072549411 0.080141262
+0.0391657227968 0.082726464
+0.0355711892726 0.085311666
+0.0322954646985 0.087896868
+0.0293122307514 0.09048207
+0.0265969935769 0.093067272
+0.0241270214177 0.095652474
+0.0218812709361 0.098237676
+0.0198403057341 0.100822878
+0.0179862099621 0.10340808
+0.0163024993714 0.105993282
+0.0147740316933 0.108578484
+0.0133869178277 0.111163686
+0.0121284349843 0.113748888
+0.0109869426306 0.11633409
+0.0099518018669 0.118919292
+0.00901329865285 0.121504494
+0.00816257115316 0.124089696
+0.00739154134428 0.126674898
+0.00669285092428 0.1292601
+0.00605980149158 0.131845302
+0.00548629889945 0.134430504
+0.00496680165006 0.137015706
+0.00449627316094 0.139600908
+0.0040701377159 0.14218611
+0.00368423989944 0.144771312
+0.00333480730741 0.147356514
+0.00301841632471 0.149941716
+0.00273196076301 0.152526918
+0.00247262315663 0.15511212
+0.00223784852128 0.157697322
+0.00202532038905 0.160282524
+0.00183293894249 0.162867726
+0.00165880108017 0.165452928
+0.00150118225674 0.16803813
+0.00135851995043 0.170623332
+0.00122939862128 0.173208534
+0.00111253603286 0.175793736
+0.00100677082009 0.178378938
+0.000911051194401 0.18096414
+0.000824424686398 0.183549342
+0.000746028833837 0.186134544
+0.000675082730633 0.188719746
+0.000610879359434 0.191304948
+0.000552778636924 0.19389015
+0.00050020110708 0.196475352
+0.000452622223241 0.199060554
+0.000409567164986 0.201645756
+0.000370606140626 0.204230958
+0.000335350130466 0.20681616
+0.000303447030029 0.209401362
+0.000274578156101 0.211986564
+0.000248455081839 0.214571766
+0.000224816770233 0.217156968
+0.000203426978055 0.21974217
+0.000184071904963 0.222327372
+0.000166558064777 0.224912574
+0.00015071035806 0.227497776
+0.000136370327079 0.230082978
+0.000123394575986 0.23266818
+0.00011165334063 0.235253382
+0.000101029193908 0.237838584
+9.14158738522e-05 0.240423786
+8.27172228517e-05 0.243008988
+7.48462275106e-05 0.24559419
+6.77241496198e-05 0.248179392
+6.12797396166e-05 0.250764594
+5.54485247228e-05 0.253349796
+5.01721646838e-05 0.255934998
+</xy>
+            </component>
+        </curve>
+        <time>Tue Nov 16 18:03:08 EST 2010</time>
+        <status>ok</status>
+        <user>braffert</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/tester/example/tests/test2.xml
===================================================================
--- /tags/1.6.0/tester/example/tests/test2.xml	(revision 6168)
+++ /tags/1.6.0/tester/example/tests/test2.xml	(revision 6168)
@@ -0,0 +1,274 @@
+<?xml version="1.0"?>
+<run>
+    <test>
+        <label>nitrogen|0eV</label>
+    </test>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <current>77K</current>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999954602131 -0.066353518
+0.999949827835 -0.06568998282
+0.999944551475 -0.06502644764
+0.99993872026 -0.06436291246
+0.99993227585 -0.06369937728
+0.999925153772 -0.0630358421
+0.999917282777 -0.06237230692
+0.999908584126 -0.06170877174
+0.999898970806 -0.06104523656
+0.999888346659 -0.06038170138
+0.999876605424 -0.0597181662
+0.999863629673 -0.05905463102
+0.999849289642 -0.05839109584
+0.999833441935 -0.05772756066
+0.999815928095 -0.05706402548
+0.999796573022 -0.0564004903
+0.99977518323 -0.05573695512
+0.999751544918 -0.05507341994
+0.999725421844 -0.05440988476
+0.99969655297 -0.05374634958
+0.99966464987 -0.0530828144
+0.999629393859 -0.05241927922
+0.999590432835 -0.05175574404
+0.999547377777 -0.05109220886
+0.999499798893 -0.05042867368
+0.999447221363 -0.0497651385
+0.999389120641 -0.04910160332
+0.999324917269 -0.04843806814
+0.999253971166 -0.04777453296
+0.999175575314 -0.04711099778
+0.999088948806 -0.0464474626
+0.99899322918 -0.04578392742
+0.998887463967 -0.04512039224
+0.998770601379 -0.04445685706
+0.99864148005 -0.04379332188
+0.998498817743 -0.0431297867
+0.99834119892 -0.04246625152
+0.998167061058 -0.04180271634
+0.997974679611 -0.04113918116
+0.997762151479 -0.04047564598
+0.997527376843 -0.0398121108
+0.997268039237 -0.03914857562
+0.996981583675 -0.03848504044
+0.996665192693 -0.03782150526
+0.996315760101 -0.03715797008
+0.995929862284 -0.0364944349
+0.995503726839 -0.03583089972
+0.99503319835 -0.03516736454
+0.994513701101 -0.03450382936
+0.993940198508 -0.03384029418
+0.993307149076 -0.033176759
+0.992608458656 -0.03251322382
+0.991837428847 -0.03184968864
+0.990986701347 -0.03118615346
+0.990048198133 -0.03052261828
+0.989013057369 -0.0298590831
+0.987871565016 -0.02919554792
+0.986613082172 -0.02853201274
+0.985225968307 -0.02786847756
+0.983697500629 -0.02720494238
+0.982013790038 -0.0265414072
+0.980159694266 -0.02587787202
+0.978118729064 -0.02521433684
+0.975872978582 -0.02455080166
+0.973403006423 -0.02388726648
+0.970687769249 -0.0232237313
+0.967704535302 -0.02256019612
+0.964428810727 -0.02189666094
+0.960834277203 -0.02123312576
+0.956892745059 -0.02056959058
+0.952574126822 -0.0199060554
+0.947846436922 -0.01924252022
+0.942675824101 -0.01857898504
+0.937026643943 -0.01791544986
+0.930861579657 -0.01725191468
+0.924141819979 -0.0165883795
+0.916827303506 -0.01592484432
+0.908877038985 -0.01526130914
+0.90024951088 -0.01459777396
+0.890903178804 -0.01393423878
+0.880797077978 -0.0132707036
+0.869891525637 -0.01260716842
+0.8581489351 -0.01194363324
+0.845534734916 -0.01128009806
+0.832018385134 -0.01061656288
+0.817574476194 -0.0099530277
+0.802183888559 -0.00928949252
+0.785834983043 -0.00862595734
+0.768524783499 -0.00796242216
+0.750260105595 -0.00729888698
+0.73105857863 -0.0066353518
+0.710949502625 -0.00597181662
+0.689974481128 -0.00530828144
+0.668187772168 -0.00464474626
+0.645656306226 -0.00398121108
+0.622459331202 -0.0033176759
+0.598687660112 -0.00265414072
+0.574442516812 -0.00199060554
+0.549833997312 -0.00132707036
+0.524979187479 -0.00066353518
+0.5 3.81639164715e-17
+0.475020812521 0.00066353518
+0.450166002688 0.00132707036
+0.425557483188 0.00199060554
+0.401312339888 0.00265414072
+0.377540668798 0.0033176759
+0.354343693774 0.00398121108
+0.331812227832 0.00464474626
+0.310025518872 0.00530828144
+0.289050497375 0.00597181662
+0.26894142137 0.0066353518
+0.249739894405 0.00729888698
+0.231475216501 0.00796242216
+0.214165016957 0.00862595734
+0.197816111441 0.00928949252
+0.182425523806 0.0099530277
+0.167981614866 0.01061656288
+0.154465265084 0.01128009806
+0.1418510649 0.01194363324
+0.130108474363 0.01260716842
+0.119202922022 0.0132707036
+0.109096821196 0.01393423878
+0.0997504891197 0.01459777396
+0.0911229610149 0.01526130914
+0.0831726964939 0.01592484432
+0.0758581800212 0.0165883795
+0.0691384203433 0.01725191468
+0.062973356057 0.01791544986
+0.0573241758989 0.01857898504
+0.0521535630784 0.01924252022
+0.0474258731776 0.0199060554
+0.0431072549411 0.02056959058
+0.0391657227968 0.02123312576
+0.0355711892726 0.02189666094
+0.0322954646985 0.02256019612
+0.0293122307514 0.0232237313
+0.0265969935769 0.02388726648
+0.0241270214177 0.02455080166
+0.0218812709361 0.02521433684
+0.0198403057341 0.02587787202
+0.0179862099621 0.0265414072
+0.0163024993714 0.02720494238
+0.0147740316933 0.02786847756
+0.0133869178277 0.02853201274
+0.0121284349843 0.02919554792
+0.0109869426306 0.0298590831
+0.0099518018669 0.03052261828
+0.00901329865285 0.03118615346
+0.00816257115316 0.03184968864
+0.00739154134428 0.03251322382
+0.00669285092428 0.033176759
+0.00605980149158 0.03384029418
+0.00548629889945 0.03450382936
+0.00496680165006 0.03516736454
+0.00449627316094 0.03583089972
+0.0040701377159 0.0364944349
+0.00368423989944 0.03715797008
+0.00333480730741 0.03782150526
+0.00301841632471 0.03848504044
+0.00273196076301 0.03914857562
+0.00247262315663 0.0398121108
+0.00223784852128 0.04047564598
+0.00202532038905 0.04113918116
+0.00183293894249 0.04180271634
+0.00165880108017 0.04246625152
+0.00150118225674 0.0431297867
+0.00135851995043 0.04379332188
+0.00122939862128 0.04445685706
+0.00111253603286 0.04512039224
+0.00100677082009 0.04578392742
+0.000911051194401 0.0464474626
+0.000824424686398 0.04711099778
+0.000746028833837 0.04777453296
+0.000675082730633 0.04843806814
+0.000610879359434 0.04910160332
+0.000552778636924 0.0497651385
+0.00050020110708 0.05042867368
+0.000452622223241 0.05109220886
+0.000409567164986 0.05175574404
+0.000370606140626 0.05241927922
+0.000335350130466 0.0530828144
+0.000303447030029 0.05374634958
+0.000274578156101 0.05440988476
+0.000248455081839 0.05507341994
+0.000224816770233 0.05573695512
+0.000203426978055 0.0564004903
+0.000184071904963 0.05706402548
+0.000166558064777 0.05772756066
+0.00015071035806 0.05839109584
+0.000136370327079 0.05905463102
+0.000123394575986 0.0597181662
+0.00011165334063 0.06038170138
+0.000101029193908 0.06104523656
+9.14158738522e-05 0.06170877174
+8.27172228517e-05 0.06237230692
+7.48462275106e-05 0.0630358421
+6.77241496198e-05 0.06369937728
+6.12797396166e-05 0.06436291246
+5.54485247228e-05 0.06502644764
+5.01721646838e-05 0.06568998282
+</xy>
+            </component>
+        </curve>
+        <time>Tue Nov 16 18:08:05 EST 2010</time>
+        <status>ok</status>
+        <user>braffert</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/tester/example/tests/test3.xml
===================================================================
--- /tags/1.6.0/tester/example/tests/test3.xml	(revision 6168)
+++ /tags/1.6.0/tester/example/tests/test3.xml	(revision 6168)
@@ -0,0 +1,273 @@
+<?xml version="1.0"?>
+<run>
+    <test>
+        <label>helium|0eV</label>
+        <description>Tests the Fermi-Dirac function at liquid helium temperatures, where the distribution is relatively sharp.  Should match in spite of the sharp distribution change, which is nearly a step function at this temperature.</description>
+    </test>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <current>4.2K</current>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <string id="asdf"><current>asdf</current></string>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Statistics</label>
+            </about>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999954602131 -0.0036192828
+0.999949827835 -0.003583089972
+0.999944551475 -0.003546897144
+0.99993872026 -0.003510704316
+0.99993227585 -0.003474511488
+0.999925153772 -0.00343831866
+0.999917282777 -0.003402125832
+0.999908584126 -0.003365933004
+0.999898970806 -0.003329740176
+0.999888346659 -0.003293547348
+0.999876605424 -0.00325735452
+0.999863629673 -0.003221161692
+0.999849289642 -0.003184968864
+0.999833441935 -0.003148776036
+0.999815928095 -0.003112583208
+0.999796573022 -0.00307639038
+0.99977518323 -0.003040197552
+0.999751544918 -0.003004004724
+0.999725421844 -0.002967811896
+0.99969655297 -0.002931619068
+0.99966464987 -0.00289542624
+0.999629393859 -0.002859233412
+0.999590432835 -0.002823040584
+0.999547377777 -0.002786847756
+0.999499798893 -0.002750654928
+0.999447221363 -0.0027144621
+0.999389120641 -0.002678269272
+0.999324917269 -0.002642076444
+0.999253971166 -0.002605883616
+0.999175575314 -0.002569690788
+0.999088948806 -0.00253349796
+0.99899322918 -0.002497305132
+0.998887463967 -0.002461112304
+0.998770601379 -0.002424919476
+0.99864148005 -0.002388726648
+0.998498817743 -0.00235253382
+0.99834119892 -0.002316340992
+0.998167061058 -0.002280148164
+0.997974679611 -0.002243955336
+0.997762151479 -0.002207762508
+0.997527376843 -0.00217156968
+0.997268039237 -0.002135376852
+0.996981583675 -0.002099184024
+0.996665192693 -0.002062991196
+0.996315760101 -0.002026798368
+0.995929862284 -0.00199060554
+0.995503726839 -0.001954412712
+0.99503319835 -0.001918219884
+0.994513701101 -0.001882027056
+0.993940198508 -0.001845834228
+0.993307149076 -0.0018096414
+0.992608458656 -0.001773448572
+0.991837428847 -0.001737255744
+0.990986701347 -0.001701062916
+0.990048198133 -0.001664870088
+0.989013057369 -0.00162867726
+0.987871565016 -0.001592484432
+0.986613082172 -0.001556291604
+0.985225968307 -0.001520098776
+0.983697500629 -0.001483905948
+0.982013790038 -0.00144771312
+0.980159694266 -0.001411520292
+0.978118729064 -0.001375327464
+0.975872978582 -0.001339134636
+0.973403006423 -0.001302941808
+0.970687769249 -0.00126674898
+0.967704535302 -0.001230556152
+0.964428810727 -0.001194363324
+0.960834277203 -0.001158170496
+0.956892745059 -0.001121977668
+0.952574126822 -0.00108578484
+0.947846436922 -0.001049592012
+0.942675824101 -0.001013399184
+0.937026643943 -0.000977206356
+0.930861579657 -0.000941013528
+0.924141819979 -0.0009048207
+0.916827303506 -0.000868627872
+0.908877038985 -0.000832435044
+0.90024951088 -0.000796242216
+0.890903178804 -0.000760049388
+0.880797077978 -0.00072385656
+0.869891525637 -0.000687663732
+0.8581489351 -0.000651470904
+0.845534734916 -0.000615278076
+0.832018385134 -0.000579085248
+0.817574476194 -0.00054289242
+0.802183888559 -0.000506699592
+0.785834983043 -0.000470506764
+0.768524783499 -0.000434313936
+0.750260105595 -0.000398121108
+0.73105857863 -0.00036192828
+0.710949502625 -0.000325735452
+0.689974481128 -0.000289542624
+0.668187772168 -0.000253349796
+0.645656306226 -0.000217156968
+0.622459331202 -0.00018096414
+0.598687660112 -0.000144771312
+0.574442516812 -0.000108578484
+0.549833997312 -7.2385656e-05
+0.524979187479 -3.6192828e-05
+0.5 5.69206140555e-18
+0.475020812521 3.6192828e-05
+0.450166002688 7.2385656e-05
+0.425557483188 0.000108578484
+0.401312339888 0.000144771312
+0.377540668798 0.00018096414
+0.354343693774 0.000217156968
+0.331812227832 0.000253349796
+0.310025518872 0.000289542624
+0.289050497375 0.000325735452
+0.26894142137 0.00036192828
+0.249739894405 0.000398121108
+0.231475216501 0.000434313936
+0.214165016957 0.000470506764
+0.197816111441 0.000506699592
+0.182425523806 0.00054289242
+0.167981614866 0.000579085248
+0.154465265084 0.000615278076
+0.1418510649 0.000651470904
+0.130108474363 0.000687663732
+0.119202922022 0.00072385656
+0.109096821196 0.000760049388
+0.0997504891197 0.000796242216
+0.0911229610149 0.000832435044
+0.0831726964939 0.000868627872
+0.0758581800212 0.0009048207
+0.0691384203433 0.000941013528
+0.062973356057 0.000977206356
+0.0573241758989 0.001013399184
+0.0521535630784 0.001049592012
+0.0474258731776 0.00108578484
+0.0431072549411 0.001121977668
+0.0391657227968 0.001158170496
+0.0355711892726 0.001194363324
+0.0322954646985 0.001230556152
+0.0293122307514 0.00126674898
+0.0265969935769 0.001302941808
+0.0241270214177 0.001339134636
+0.0218812709361 0.001375327464
+0.0198403057341 0.001411520292
+0.0179862099621 0.00144771312
+0.0163024993714 0.001483905948
+0.0147740316933 0.001520098776
+0.0133869178277 0.001556291604
+0.0121284349843 0.001592484432
+0.0109869426306 0.00162867726
+0.0099518018669 0.001664870088
+0.00901329865285 0.001701062916
+0.00816257115316 0.001737255744
+0.00739154134428 0.001773448572
+0.00669285092428 0.0018096414
+0.00605980149158 0.001845834228
+0.00548629889945 0.001882027056
+0.00496680165006 0.001918219884
+0.00449627316094 0.001954412712
+0.0040701377159 0.00199060554
+0.00368423989944 0.002026798368
+0.00333480730741 0.002062991196
+0.00301841632471 0.002099184024
+0.00273196076301 0.002135376852
+0.00247262315663 0.00217156968
+0.00223784852128 0.002207762508
+0.00202532038905 0.002243955336
+0.00183293894249 0.002280148164
+0.00165880108017 0.002316340992
+0.00150118225674 0.00235253382
+0.00135851995043 0.002388726648
+0.00122939862128 0.002424919476
+0.00111253603286 0.002461112304
+0.00100677082009 0.002497305132
+0.000911051194401 0.00253349796
+0.000824424686398 0.002569690788
+0.000746028833837 0.002605883616
+0.000675082730633 0.002642076444
+0.000610879359434 0.002678269272
+0.000552778636924 0.0027144621
+0.00050020110708 0.002750654928
+0.000452622223241 0.002786847756
+0.000409567164986 0.002823040584
+0.000370606140626 0.002859233412
+0.000335350130466 0.00289542624
+0.000303447030029 0.002931619068
+0.000274578156101 0.002967811896
+0.000248455081839 0.003004004724
+0.000224816770233 0.003040197552
+0.000203426978055 0.00307639038
+0.000184071904963 0.003112583208
+0.000166558064777 0.003148776036
+0.00015071035806 0.003184968864
+0.000136370327079 0.003221161692
+0.000123394575986 0.00325735452
+0.00011165334063 0.003293547348
+0.000101029193908 0.003329740176
+9.14158738522e-05 0.003365933004
+8.27172228517e-05 0.003402125832
+7.48462275106e-05 0.00343831866
+6.77241496198e-05 0.003474511488
+6.12797396166e-05 0.003510704316
+5.54485247228e-05 0.003546897144
+5.01721646838e-05 0.003583089972
+</xy>
+            </component>
+        </curve>
+        <time>Tue Nov 16 18:08:54 EST 2010</time>
+        <status>ok</status>
+        <user>braffert</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/tester/example/tests/test4.xml
===================================================================
--- /tags/1.6.0/tester/example/tests/test4.xml	(revision 6168)
+++ /tags/1.6.0/tester/example/tests/test4.xml	(revision 6168)
@@ -0,0 +1,276 @@
+<?xml version="1.0"?>
+<run>
+    <test>
+        <label>helium|1eV</label>
+        <description>This test should result in an error in the "new" version of the fermi tool.</description>
+    </test>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <current>4.2K</current>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>1eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999954602131 0.9963807172
+0.999949827835 0.996416910028
+0.999944551475 0.996453102856
+0.99993872026 0.996489295684
+0.99993227585 0.996525488512
+0.999925153772 0.99656168134
+0.999917282777 0.996597874168
+0.999908584126 0.996634066996
+0.999898970806 0.996670259824
+0.999888346659 0.996706452652
+0.999876605424 0.99674264548
+0.999863629673 0.996778838308
+0.999849289642 0.996815031136
+0.999833441935 0.996851223964
+0.999815928095 0.996887416792
+0.999796573022 0.99692360962
+0.99977518323 0.996959802448
+0.999751544918 0.996995995276
+0.999725421844 0.997032188104
+0.99969655297 0.997068380932
+0.99966464987 0.99710457376
+0.999629393859 0.997140766588
+0.999590432835 0.997176959416
+0.999547377777 0.997213152244
+0.999499798893 0.997249345072
+0.999447221363 0.9972855379
+0.999389120641 0.997321730728
+0.999324917269 0.997357923556
+0.999253971166 0.997394116384
+0.999175575314 0.997430309212
+0.999088948806 0.99746650204
+0.99899322918 0.997502694868
+0.998887463967 0.997538887696
+0.998770601379 0.997575080524
+0.99864148005 0.997611273352
+0.998498817743 0.99764746618
+0.99834119892 0.997683659008
+0.998167061057 0.997719851836
+0.997974679611 0.997756044664
+0.997762151479 0.997792237492
+0.997527376843 0.99782843032
+0.997268039237 0.997864623148
+0.996981583675 0.997900815976
+0.996665192693 0.997937008804
+0.996315760101 0.997973201632
+0.995929862284 0.99800939446
+0.995503726839 0.998045587288
+0.99503319835 0.998081780116
+0.994513701101 0.998117972944
+0.993940198508 0.998154165772
+0.993307149076 0.9981903586
+0.992608458656 0.998226551428
+0.991837428847 0.998262744256
+0.990986701347 0.998298937084
+0.990048198133 0.998335129912
+0.989013057369 0.99837132274
+0.987871565016 0.998407515568
+0.986613082172 0.998443708396
+0.985225968307 0.998479901224
+0.983697500628 0.998516094052
+0.982013790038 0.99855228688
+0.980159694266 0.998588479708
+0.978118729064 0.998624672536
+0.975872978582 0.998660865364
+0.973403006423 0.998697058192
+0.970687769248 0.99873325102
+0.967704535301 0.998769443848
+0.964428810727 0.998805636676
+0.960834277203 0.998841829504
+0.956892745059 0.998878022332
+0.952574126822 0.99891421516
+0.947846436921 0.998950407988
+0.942675824101 0.998986600816
+0.937026643942 0.999022793644
+0.930861579656 0.999058986472
+0.924141819978 0.9990951793
+0.916827303505 0.999131372128
+0.908877038984 0.999167564956
+0.900249510879 0.999203757784
+0.890903178803 0.999239950612
+0.880797077977 0.99927614344
+0.869891525636 0.999312336268
+0.858148935098 0.999348529096
+0.845534734915 0.999384721924
+0.832018385132 0.999420914752
+0.817574476192 0.99945710758
+0.802183888557 0.999493300408
+0.785834983041 0.999529493236
+0.768524783497 0.999565686064
+0.750260105593 0.999601878892
+0.731058578628 0.99963807172
+0.710949502623 0.999674264548
+0.689974481125 0.999710457376
+0.668187772165 0.999746650204
+0.645656306223 0.999782843032
+0.622459331199 0.99981903586
+0.598687660109 0.999855228688
+0.574442516809 0.999891421516
+0.549833997309 0.999927614344
+0.524979187476 0.999963807172
+0.499999999997 1.0
+0.475020812518 1.00003619283
+0.450166002684 1.00007238566
+0.425557483185 1.00010857848
+0.401312339885 1.00014477131
+0.377540668795 1.00018096414
+0.354343693771 1.00021715697
+0.331812227829 1.0002533498
+0.31002551887 1.00028954262
+0.289050497373 1.00032573545
+0.268941421368 1.00036192828
+0.249739894403 1.00039812111
+0.231475216499 1.00043431394
+0.214165016956 1.00047050676
+0.19781611144 1.00050669959
+0.182425523805 1.00054289242
+0.167981614865 1.00057908525
+0.154465265082 1.00061527808
+0.141851064899 1.0006514709
+0.130108474362 1.00068766373
+0.119202922021 1.00072385656
+0.109096821195 1.00076004939
+0.0997504891189 1.00079624222
+0.0911229610141 1.00083243504
+0.0831726964933 1.00086862787
+0.0758581800206 1.0009048207
+0.0691384203428 1.00094101353
+0.0629733560565 1.00097720636
+0.0573241758984 1.00101339918
+0.052153563078 1.00104959201
+0.0474258731772 1.00108578484
+0.0431072549408 1.00112197767
+0.0391657227965 1.0011581705
+0.0355711892724 1.00119436332
+0.0322954646982 1.00123055615
+0.0293122307512 1.00126674898
+0.0265969935767 1.00130294181
+0.0241270214175 1.00133913464
+0.021881270936 1.00137532746
+0.019840305734 1.00141152029
+0.017986209962 1.00144771312
+0.0163024993713 1.00148390595
+0.0147740316932 1.00152009878
+0.0133869178276 1.0015562916
+0.0121284349842 1.00159248443
+0.0109869426305 1.00162867726
+0.00995180186686 1.00166487009
+0.00901329865281 1.00170106292
+0.00816257115312 1.00173725574
+0.00739154134425 1.00177344857
+0.00669285092426 1.0018096414
+0.00605980149156 1.00184583423
+0.00548629889943 1.00188202706
+0.00496680165004 1.00191821988
+0.00449627316093 1.00195441271
+0.00407013771588 1.00199060554
+0.00368423989942 1.00202679837
+0.0033348073074 1.0020629912
+0.0030184163247 1.00209918402
+0.002731960763 1.00213537685
+0.00247262315663 1.00217156968
+0.00223784852127 1.00220776251
+0.00202532038905 1.00224395534
+0.00183293894249 1.00228014816
+0.00165880108017 1.00231634099
+0.00150118225673 1.00235253382
+0.00135851995043 1.00238872665
+0.00122939862128 1.00242491948
+0.00111253603286 1.0024611123
+0.00100677082008 1.00249730513
+0.0009110511944 1.00253349796
+0.000824424686398 1.00256969079
+0.000746028833836 1.00260588362
+0.000675082730633 1.00264207644
+0.000610879359434 1.00267826927
+0.000552778636924 1.0027144621
+0.00050020110708 1.00275065493
+0.000452622223241 1.00278684776
+0.000409567164986 1.00282304058
+0.000370606140627 1.00285923341
+0.000335350130467 1.00289542624
+0.000303447030029 1.00293161907
+0.000274578156102 1.0029678119
+0.00024845508184 1.00300400472
+0.000224816770234 1.00304019755
+0.000203426978056 1.00307639038
+0.000184071904964 1.00311258321
+0.000166558064778 1.00314877604
+0.00015071035806 1.00318496886
+0.00013637032708 1.00322116169
+0.000123394575987 1.00325735452
+0.00011165334063 1.00329354735
+0.000101029193908 1.00332974018
+9.14158738525e-05 1.003365933
+8.2717222852e-05 1.00340212583
+7.48462275109e-05 1.00343831866
+6.772414962e-05 1.00347451149
+6.12797396169e-05 1.00351070432
+5.5448524723e-05 1.00354689714
+5.0172164684e-05 1.00358308997
+4.53978687026e-05 1.0036192828
+</xy>
+            </component>
+        </curve>
+        <time>Tue Nov 16 18:14:32 EST 2010</time>
+        <status>ok</status>
+        <user>braffert</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/tester/example/tests/test4a.xml
===================================================================
--- /tags/1.6.0/tester/example/tests/test4a.xml	(revision 6168)
+++ /tags/1.6.0/tester/example/tests/test4a.xml	(revision 6168)
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<run>
+    <test>
+        <label>helium|2eV</label>
+        <description>This test is exepcted to fail, but won't in the "new" version of the fermi tool.</description>
+    </test>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <current>4.2K</current>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>2eV</current>
+        </number>
+    </input>
+    <output>
+        <time>Fri Mar 18 09:02:48 EDT 2011</time>
+        <status>failed</status>
+        <user>mmc</user>
+        <log>Bad Fermi level value 2eV</log>
+    </output>
+</run>
+
Index: /tags/1.6.0/tester/example/tests/test5.xml
===================================================================
--- /tags/1.6.0/tester/example/tests/test5.xml	(revision 6168)
+++ /tags/1.6.0/tester/example/tests/test5.xml	(revision 6168)
@@ -0,0 +1,276 @@
+<?xml version="1.0"?>
+<run>
+    <test>
+        <label>nitrogen|1eV</label>
+        <description>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus adipiscing mollis elit, a ullamcorper eros placerat sit amet. Curabitur placerat hendrerit purus. Fusce molestie venenatis vehicula. Suspendisse quis magna lorem, id tristique sapien. Cras quis orci quis urna rutrum sagittis. Ut velit justo, tristique non ultricies nec, malesuada at turpis. Aenean sem lectus, tincidunt ac egestas interdum, dictum id massa. Nunc viverra commodo congue. Nunc porttitor rhoncus nibh sed vestibulum. Ut luctus, nulla vitae facilisis pretium, mi dui ultricies odio, quis venenatis dui elit eget elit. Proin placerat mi feugiat magna fringilla adipiscing volutpat diam adipiscing. Maecenas venenatis arcu ut augue cursus sit amet mollis mi porta. Ut sollicitudin nisl in ligula placerat quis pretium sapien viverra. Nulla blandit mauris ac massa sollicitudin blandit. Mauris euismod consequat convallis.</description>
+    </test>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <current>77K</current>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>1eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999954602131 0.933646482
+0.999949827835 0.93431001718
+0.999944551475 0.93497355236
+0.99993872026 0.93563708754
+0.99993227585 0.93630062272
+0.999925153772 0.9369641579
+0.999917282777 0.93762769308
+0.999908584126 0.93829122826
+0.999898970806 0.93895476344
+0.999888346659 0.93961829862
+0.999876605424 0.9402818338
+0.999863629673 0.94094536898
+0.999849289642 0.94160890416
+0.999833441935 0.94227243934
+0.999815928095 0.94293597452
+0.999796573022 0.9435995097
+0.99977518323 0.94426304488
+0.999751544918 0.94492658006
+0.999725421844 0.94559011524
+0.99969655297 0.94625365042
+0.99966464987 0.9469171856
+0.999629393859 0.94758072078
+0.999590432835 0.94824425596
+0.999547377777 0.94890779114
+0.999499798893 0.94957132632
+0.999447221363 0.9502348615
+0.999389120641 0.95089839668
+0.999324917269 0.95156193186
+0.999253971166 0.95222546704
+0.999175575314 0.95288900222
+0.999088948806 0.9535525374
+0.99899322918 0.95421607258
+0.998887463967 0.95487960776
+0.998770601379 0.95554314294
+0.99864148005 0.95620667812
+0.998498817743 0.9568702133
+0.99834119892 0.95753374848
+0.998167061058 0.95819728366
+0.997974679611 0.95886081884
+0.997762151479 0.95952435402
+0.997527376843 0.9601878892
+0.997268039237 0.96085142438
+0.996981583675 0.96151495956
+0.996665192693 0.96217849474
+0.996315760101 0.96284202992
+0.995929862284 0.9635055651
+0.995503726839 0.96416910028
+0.99503319835 0.96483263546
+0.994513701101 0.96549617064
+0.993940198508 0.96615970582
+0.993307149076 0.966823241
+0.992608458656 0.96748677618
+0.991837428847 0.96815031136
+0.990986701347 0.96881384654
+0.990048198133 0.96947738172
+0.989013057369 0.9701409169
+0.987871565016 0.97080445208
+0.986613082172 0.97146798726
+0.985225968307 0.97213152244
+0.983697500629 0.97279505762
+0.982013790038 0.9734585928
+0.980159694266 0.97412212798
+0.978118729064 0.97478566316
+0.975872978582 0.97544919834
+0.973403006423 0.97611273352
+0.970687769249 0.9767762687
+0.967704535302 0.97743980388
+0.964428810727 0.97810333906
+0.960834277203 0.97876687424
+0.956892745059 0.97943040942
+0.952574126822 0.9800939446
+0.947846436922 0.98075747978
+0.942675824101 0.98142101496
+0.937026643943 0.98208455014
+0.930861579657 0.98274808532
+0.924141819979 0.9834116205
+0.916827303506 0.98407515568
+0.908877038985 0.98473869086
+0.90024951088 0.98540222604
+0.890903178804 0.98606576122
+0.880797077978 0.9867292964
+0.869891525637 0.98739283158
+0.8581489351 0.98805636676
+0.845534734917 0.98871990194
+0.832018385134 0.98938343712
+0.817574476194 0.9900469723
+0.802183888559 0.99071050748
+0.785834983043 0.99137404266
+0.768524783499 0.99203757784
+0.750260105595 0.99270111302
+0.73105857863 0.9933646482
+0.710949502625 0.99402818338
+0.689974481128 0.99469171856
+0.668187772168 0.99535525374
+0.645656306226 0.99601878892
+0.622459331202 0.9966823241
+0.598687660113 0.99734585928
+0.574442516812 0.99800939446
+0.549833997313 0.99867292964
+0.524979187479 0.99933646482
+0.5 1.0
+0.475020812521 1.00066353518
+0.450166002688 1.00132707036
+0.425557483189 1.00199060554
+0.401312339888 1.00265414072
+0.377540668798 1.0033176759
+0.354343693774 1.00398121108
+0.331812227832 1.00464474626
+0.310025518873 1.00530828144
+0.289050497375 1.00597181662
+0.26894142137 1.0066353518
+0.249739894405 1.00729888698
+0.231475216501 1.00796242216
+0.214165016958 1.00862595734
+0.197816111442 1.00928949252
+0.182425523806 1.0099530277
+0.167981614866 1.01061656288
+0.154465265084 1.01128009806
+0.141851064901 1.01194363324
+0.130108474363 1.01260716842
+0.119202922022 1.0132707036
+0.109096821196 1.01393423878
+0.0997504891198 1.01459777396
+0.0911229610149 1.01526130914
+0.083172696494 1.01592484432
+0.0758581800213 1.0165883795
+0.0691384203434 1.01725191468
+0.062973356057 1.01791544986
+0.0573241758989 1.01857898504
+0.0521535630785 1.01924252022
+0.0474258731776 1.0199060554
+0.0431072549411 1.02056959058
+0.0391657227968 1.02123312576
+0.0355711892727 1.02189666094
+0.0322954646985 1.02256019612
+0.0293122307514 1.0232237313
+0.0265969935769 1.02388726648
+0.0241270214177 1.02455080166
+0.0218812709362 1.02521433684
+0.0198403057341 1.02587787202
+0.0179862099621 1.0265414072
+0.0163024993715 1.02720494238
+0.0147740316933 1.02786847756
+0.0133869178277 1.02853201274
+0.0121284349843 1.02919554792
+0.0109869426306 1.0298590831
+0.00995180186691 1.03052261828
+0.00901329865286 1.03118615346
+0.00816257115317 1.03184968864
+0.00739154134429 1.03251322382
+0.00669285092429 1.033176759
+0.00605980149159 1.03384029418
+0.00548629889946 1.03450382936
+0.00496680165006 1.03516736454
+0.00449627316095 1.03583089972
+0.0040701377159 1.0364944349
+0.00368423989944 1.03715797008
+0.00333480730742 1.03782150526
+0.00301841632471 1.03848504044
+0.00273196076301 1.03914857562
+0.00247262315664 1.0398121108
+0.00223784852128 1.04047564598
+0.00202532038905 1.04113918116
+0.00183293894249 1.04180271634
+0.00165880108018 1.04246625152
+0.00150118225674 1.0431297867
+0.00135851995043 1.04379332188
+0.00122939862128 1.04445685706
+0.00111253603286 1.04512039224
+0.00100677082009 1.04578392742
+0.000911051194402 1.0464474626
+0.000824424686399 1.04711099778
+0.000746028833838 1.04777453296
+0.000675082730634 1.04843806814
+0.000610879359435 1.04910160332
+0.000552778636924 1.0497651385
+0.00050020110708 1.05042867368
+0.000452622223241 1.05109220886
+0.000409567164987 1.05175574404
+0.000370606140627 1.05241927922
+0.000335350130467 1.0530828144
+0.000303447030029 1.05374634958
+0.000274578156102 1.05440988476
+0.00024845508184 1.05507341994
+0.000224816770234 1.05573695512
+0.000203426978055 1.0564004903
+0.000184071904964 1.05706402548
+0.000166558064778 1.05772756066
+0.00015071035806 1.05839109584
+0.00013637032708 1.05905463102
+0.000123394575986 1.0597181662
+0.00011165334063 1.06038170138
+0.000101029193908 1.06104523656
+9.14158738523e-05 1.06170877174
+8.27172228518e-05 1.06237230692
+7.48462275107e-05 1.0630358421
+6.77241496199e-05 1.06369937728
+6.12797396167e-05 1.06436291246
+5.54485247229e-05 1.06502644764
+5.01721646838e-05 1.06568998282
+4.53978687025e-05 1.066353518
+</xy>
+            </component>
+        </curve>
+        <time>Tue Nov 16 18:15:17 EST 2010</time>
+        <status>ok</status>
+        <user>braffert</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/tester/example/tests/test6.xml
===================================================================
--- /tags/1.6.0/tester/example/tests/test6.xml	(revision 6168)
+++ /tags/1.6.0/tester/example/tests/test6.xml	(revision 6168)
@@ -0,0 +1,289 @@
+<?xml version="1.0"?>
+<run>
+    <test>
+        <label>roomtemp|1V</label>
+        <description>This test should generate a warning due to differences in the input parameters.</description>
+    </test>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <current>300K</current>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>1eV</current>
+        </number>
+        <boolean id="extra">
+            <about>
+                <label>Control value</label>
+                <description>Old parameter that was removed.</description>
+            </about>
+            <default>true</default>
+        </boolean>
+    </input>
+    <output>
+        <number id="extra">
+            <about>
+                <label>Extra number in output</label>
+            </about>
+            <current>1234</current>
+        </number>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999954602131 0.7414798
+0.999949827835 0.744065002
+0.999944551475 0.746650204
+0.99993872026 0.749235406
+0.99993227585 0.751820608
+0.999925153772 0.75440581
+0.999917282777 0.756991012
+0.999908584126 0.759576214
+0.999898970806 0.762161416
+0.999888346659 0.764746618
+0.999876605424 0.76733182
+0.999863629673 0.769917022
+0.999849289642 0.772502224
+0.999833441935 0.775087426
+0.999815928095 0.777672628
+0.999796573022 0.78025783
+0.99977518323 0.782843032
+0.999751544918 0.785428234
+0.999725421844 0.788013436
+0.99969655297 0.790598638
+0.99966464987 0.79318384
+0.999629393859 0.795769042
+0.999590432835 0.798354244
+0.999547377777 0.800939446
+0.999499798893 0.803524648
+0.999447221363 0.80610985
+0.999389120641 0.808695052
+0.999324917269 0.811280254
+0.999253971166 0.813865456
+0.999175575314 0.816450658
+0.999088948806 0.81903586
+0.99899322918 0.821621062
+0.998887463967 0.824206264
+0.998770601379 0.826791466
+0.99864148005 0.829376668
+0.998498817743 0.83196187
+0.99834119892 0.834547072
+0.998167061058 0.837132274
+0.997974679611 0.839717476
+0.997762151479 0.842302678
+0.997527376843 0.84488788
+0.997268039237 0.847473082
+0.996981583675 0.850058284
+0.996665192693 0.852643486
+0.996315760101 0.855228688
+0.995929862284 0.85781389
+0.995503726839 0.860399092
+0.99503319835 0.862984294
+0.994513701101 0.865569496
+0.993940198508 0.868154698
+0.993307149076 0.8707399
+0.992608458656 0.873325102
+0.991837428847 0.875910304
+0.990986701347 0.878495506
+0.990048198133 0.881080708
+0.989013057369 0.88366591
+0.987871565016 0.886251112
+0.986613082172 0.888836314
+0.985225968307 0.891421516
+0.983697500629 0.894006718
+0.982013790038 0.89659192
+0.980159694266 0.899177122
+0.978118729064 0.901762324
+0.975872978582 0.904347526
+0.973403006423 0.906932728
+0.970687769249 0.90951793
+0.967704535302 0.912103132
+0.964428810727 0.914688334
+0.960834277203 0.917273536
+0.956892745059 0.919858738
+0.952574126822 0.92244394
+0.947846436922 0.925029142
+0.942675824101 0.927614344
+0.937026643943 0.930199546
+0.930861579657 0.932784748
+0.924141819979 0.93536995
+0.916827303506 0.937955152
+0.908877038985 0.940540354
+0.90024951088 0.943125556
+0.890903178804 0.945710758
+0.880797077978 0.94829596
+0.869891525637 0.950881162
+0.8581489351 0.953466364
+0.845534734916 0.956051566
+0.832018385134 0.958636768
+0.817574476194 0.96122197
+0.802183888559 0.963807172
+0.785834983043 0.966392374
+0.768524783499 0.968977576
+0.750260105595 0.971562778
+0.73105857863 0.97414798
+0.710949502625 0.976733182
+0.689974481128 0.979318384
+0.668187772168 0.981903586
+0.645656306226 0.984488788
+0.622459331202 0.98707399
+0.598687660112 0.989659192
+0.574442516812 0.992244394
+0.549833997312 0.994829596
+0.524979187479 0.997414798
+0.5 1.0
+0.475020812521 1.002585202
+0.450166002688 1.005170404
+0.425557483188 1.007755606
+0.401312339888 1.010340808
+0.377540668798 1.01292601
+0.354343693774 1.015511212
+0.331812227832 1.018096414
+0.310025518872 1.020681616
+0.289050497375 1.023266818
+0.26894142137 1.02585202
+0.249739894405 1.028437222
+0.231475216501 1.031022424
+0.214165016957 1.033607626
+0.197816111441 1.036192828
+0.182425523806 1.03877803
+0.167981614866 1.041363232
+0.154465265084 1.043948434
+0.1418510649 1.046533636
+0.130108474363 1.049118838
+0.119202922022 1.05170404
+0.109096821196 1.054289242
+0.0997504891197 1.056874444
+0.0911229610149 1.059459646
+0.0831726964939 1.062044848
+0.0758581800212 1.06463005
+0.0691384203434 1.067215252
+0.062973356057 1.069800454
+0.0573241758989 1.072385656
+0.0521535630784 1.074970858
+0.0474258731776 1.07755606
+0.0431072549411 1.080141262
+0.0391657227968 1.082726464
+0.0355711892726 1.085311666
+0.0322954646985 1.087896868
+0.0293122307514 1.09048207
+0.0265969935769 1.093067272
+0.0241270214177 1.095652474
+0.0218812709361 1.098237676
+0.0198403057341 1.100822878
+0.0179862099621 1.10340808
+0.0163024993714 1.105993282
+0.0147740316933 1.108578484
+0.0133869178277 1.111163686
+0.0121284349843 1.113748888
+0.0109869426306 1.11633409
+0.00995180186691 1.118919292
+0.00901329865285 1.121504494
+0.00816257115316 1.124089696
+0.00739154134428 1.126674898
+0.00669285092429 1.1292601
+0.00605980149159 1.131845302
+0.00548629889945 1.134430504
+0.00496680165006 1.137015706
+0.00449627316094 1.139600908
+0.0040701377159 1.14218611
+0.00368423989944 1.144771312
+0.00333480730741 1.147356514
+0.00301841632471 1.149941716
+0.00273196076301 1.152526918
+0.00247262315664 1.15511212
+0.00223784852128 1.157697322
+0.00202532038905 1.160282524
+0.00183293894249 1.162867726
+0.00165880108017 1.165452928
+0.00150118225674 1.16803813
+0.00135851995043 1.170623332
+0.00122939862128 1.173208534
+0.00111253603286 1.175793736
+0.00100677082009 1.178378938
+0.000911051194401 1.18096414
+0.000824424686398 1.183549342
+0.000746028833837 1.186134544
+0.000675082730633 1.188719746
+0.000610879359435 1.191304948
+0.000552778636924 1.19389015
+0.00050020110708 1.196475352
+0.000452622223241 1.199060554
+0.000409567164986 1.201645756
+0.000370606140626 1.204230958
+0.000335350130467 1.20681616
+0.000303447030029 1.209401362
+0.000274578156101 1.211986564
+0.000248455081839 1.214571766
+0.000224816770233 1.217156968
+0.000203426978055 1.21974217
+0.000184071904963 1.222327372
+0.000166558064777 1.224912574
+0.00015071035806 1.227497776
+0.00013637032708 1.230082978
+0.000123394575986 1.23266818
+0.00011165334063 1.235253382
+0.000101029193908 1.237838584
+9.14158738522e-05 1.240423786
+8.27172228517e-05 1.243008988
+7.48462275106e-05 1.24559419
+6.77241496198e-05 1.248179392
+6.12797396166e-05 1.250764594
+5.54485247228e-05 1.253349796
+5.01721646838e-05 1.255934998
+4.53978687025e-05 1.2585202
+</xy>
+            </component>
+        </curve>
+        <time>Tue Nov 16 18:16:05 EST 2010</time>
+        <status>ok</status>
+        <user>braffert</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/tester/example/tests/test7.xml
===================================================================
--- /tags/1.6.0/tester/example/tests/test7.xml	(revision 6168)
+++ /tags/1.6.0/tester/example/tests/test7.xml	(revision 6168)
@@ -0,0 +1,274 @@
+<?xml version="1.0"?>
+<run>
+    <test>
+        <label>multiple|levels|spaces are allowed...</label>
+    </test>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi.tcl @driver</command>
+        <version>
+            <rappture>
+                <revision>$LastChangedRevision: 1018 $</revision>
+                <modified>$LastChangedDate: 2008-06-08 21:24:34 -0400 (Sun, 08 Jun 2008) $</modified>
+                <language>tcl</language>
+            </rappture>
+        </version>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <current>77K</current>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+            <current>0eV</current>
+        </number>
+    </input>
+    <output>
+        <curve id="f12">
+            <about>
+                <label>Fermi-Dirac Factor</label>
+            </about>
+            <xaxis>
+                <label>Fermi-Dirac Factor</label>
+            </xaxis>
+            <yaxis>
+                <label>Energy</label>
+                <units>eV</units>
+            </yaxis>
+            <component>
+                <xy>0.999954602131 -0.066353518
+0.999949827835 -0.06568998282
+0.999944551475 -0.06502644764
+0.99993872026 -0.06436291246
+0.99993227585 -0.06369937728
+0.999925153772 -0.0630358421
+0.999917282777 -0.06237230692
+0.999908584126 -0.06170877174
+0.999898970806 -0.06104523656
+0.999888346659 -0.06038170138
+0.999876605424 -0.0597181662
+0.999863629673 -0.05905463102
+0.999849289642 -0.05839109584
+0.999833441935 -0.05772756066
+0.999815928095 -0.05706402548
+0.999796573022 -0.0564004903
+0.99977518323 -0.05573695512
+0.999751544918 -0.05507341994
+0.999725421844 -0.05440988476
+0.99969655297 -0.05374634958
+0.99966464987 -0.0530828144
+0.999629393859 -0.05241927922
+0.999590432835 -0.05175574404
+0.999547377777 -0.05109220886
+0.999499798893 -0.05042867368
+0.999447221363 -0.0497651385
+0.999389120641 -0.04910160332
+0.999324917269 -0.04843806814
+0.999253971166 -0.04777453296
+0.999175575314 -0.04711099778
+0.999088948806 -0.0464474626
+0.99899322918 -0.04578392742
+0.998887463967 -0.04512039224
+0.998770601379 -0.04445685706
+0.99864148005 -0.04379332188
+0.998498817743 -0.0431297867
+0.99834119892 -0.04246625152
+0.998167061058 -0.04180271634
+0.997974679611 -0.04113918116
+0.997762151479 -0.04047564598
+0.997527376843 -0.0398121108
+0.997268039237 -0.03914857562
+0.996981583675 -0.03848504044
+0.996665192693 -0.03782150526
+0.996315760101 -0.03715797008
+0.995929862284 -0.0364944349
+0.995503726839 -0.03583089972
+0.99503319835 -0.03516736454
+0.994513701101 -0.03450382936
+0.993940198508 -0.03384029418
+0.993307149076 -0.033176759
+0.992608458656 -0.03251322382
+0.991837428847 -0.03184968864
+0.990986701347 -0.03118615346
+0.990048198133 -0.03052261828
+0.989013057369 -0.0298590831
+0.987871565016 -0.02919554792
+0.986613082172 -0.02853201274
+0.985225968307 -0.02786847756
+0.983697500629 -0.02720494238
+0.982013790038 -0.0265414072
+0.980159694266 -0.02587787202
+0.978118729064 -0.02521433684
+0.975872978582 -0.02455080166
+0.973403006423 -0.02388726648
+0.970687769249 -0.0232237313
+0.967704535302 -0.02256019612
+0.964428810727 -0.02189666094
+0.960834277203 -0.02123312576
+0.956892745059 -0.02056959058
+0.952574126822 -0.0199060554
+0.947846436922 -0.01924252022
+0.942675824101 -0.01857898504
+0.937026643943 -0.01791544986
+0.930861579657 -0.01725191468
+0.924141819979 -0.0165883795
+0.916827303506 -0.01592484432
+0.908877038985 -0.01526130914
+0.90024951088 -0.01459777396
+0.890903178804 -0.01393423878
+0.880797077978 -0.0132707036
+0.869891525637 -0.01260716842
+0.8581489351 -0.01194363324
+0.845534734916 -0.01128009806
+0.832018385134 -0.01061656288
+0.817574476194 -0.0099530277
+0.802183888559 -0.00928949252
+0.785834983043 -0.00862595734
+0.768524783499 -0.00796242216
+0.750260105595 -0.00729888698
+0.73105857863 -0.0066353518
+0.710949502625 -0.00597181662
+0.689974481128 -0.00530828144
+0.668187772168 -0.00464474626
+0.645656306226 -0.00398121108
+0.622459331202 -0.0033176759
+0.598687660112 -0.00265414072
+0.574442516812 -0.00199060554
+0.549833997312 -0.00132707036
+0.524979187479 -0.00066353518
+0.5 3.81639164715e-17
+0.475020812521 0.00066353518
+0.450166002688 0.00132707036
+0.425557483188 0.00199060554
+0.401312339888 0.00265414072
+0.377540668798 0.0033176759
+0.354343693774 0.00398121108
+0.331812227832 0.00464474626
+0.310025518872 0.00530828144
+0.289050497375 0.00597181662
+0.26894142137 0.0066353518
+0.249739894405 0.00729888698
+0.231475216501 0.00796242216
+0.214165016957 0.00862595734
+0.197816111441 0.00928949252
+0.182425523806 0.0099530277
+0.167981614866 0.01061656288
+0.154465265084 0.01128009806
+0.1418510649 0.01194363324
+0.130108474363 0.01260716842
+0.119202922022 0.0132707036
+0.109096821196 0.01393423878
+0.0997504891197 0.01459777396
+0.0911229610149 0.01526130914
+0.0831726964939 0.01592484432
+0.0758581800212 0.0165883795
+0.0691384203433 0.01725191468
+0.062973356057 0.01791544986
+0.0573241758989 0.01857898504
+0.0521535630784 0.01924252022
+0.0474258731776 0.0199060554
+0.0431072549411 0.02056959058
+0.0391657227968 0.02123312576
+0.0355711892726 0.02189666094
+0.0322954646985 0.02256019612
+0.0293122307514 0.0232237313
+0.0265969935769 0.02388726648
+0.0241270214177 0.02455080166
+0.0218812709361 0.02521433684
+0.0198403057341 0.02587787202
+0.0179862099621 0.0265414072
+0.0163024993714 0.02720494238
+0.0147740316933 0.02786847756
+0.0133869178277 0.02853201274
+0.0121284349843 0.02919554792
+0.0109869426306 0.0298590831
+0.0099518018669 0.03052261828
+0.00901329865285 0.03118615346
+0.00816257115316 0.03184968864
+0.00739154134428 0.03251322382
+0.00669285092428 0.033176759
+0.00605980149158 0.03384029418
+0.00548629889945 0.03450382936
+0.00496680165006 0.03516736454
+0.00449627316094 0.03583089972
+0.0040701377159 0.0364944349
+0.00368423989944 0.03715797008
+0.00333480730741 0.03782150526
+0.00301841632471 0.03848504044
+0.00273196076301 0.03914857562
+0.00247262315663 0.0398121108
+0.00223784852128 0.04047564598
+0.00202532038905 0.04113918116
+0.00183293894249 0.04180271634
+0.00165880108017 0.04246625152
+0.00150118225674 0.0431297867
+0.00135851995043 0.04379332188
+0.00122939862128 0.04445685706
+0.00111253603286 0.04512039224
+0.00100677082009 0.04578392742
+0.000911051194401 0.0464474626
+0.000824424686398 0.04711099778
+0.000746028833837 0.04777453296
+0.000675082730633 0.04843806814
+0.000610879359434 0.04910160332
+0.000552778636924 0.0497651385
+0.00050020110708 0.05042867368
+0.000452622223241 0.05109220886
+0.000409567164986 0.05175574404
+0.000370606140626 0.05241927922
+0.000335350130466 0.0530828144
+0.000303447030029 0.05374634958
+0.000274578156101 0.05440988476
+0.000248455081839 0.05507341994
+0.000224816770233 0.05573695512
+0.000203426978055 0.0564004903
+0.000184071904963 0.05706402548
+0.000166558064777 0.05772756066
+0.00015071035806 0.05839109584
+0.000136370327079 0.05905463102
+0.000123394575986 0.0597181662
+0.00011165334063 0.06038170138
+0.000101029193908 0.06104523656
+9.14158738522e-05 0.06170877174
+8.27172228517e-05 0.06237230692
+7.48462275106e-05 0.0630358421
+6.77241496198e-05 0.06369937728
+6.12797396166e-05 0.06436291246
+5.54485247228e-05 0.06502644764
+5.01721646838e-05 0.06568998282
+</xy>
+            </component>
+        </curve>
+        <time>Tue Nov 16 18:08:05 EST 2010</time>
+        <status>ok</status>
+        <user>braffert</user>
+    </output>
+</run>
+
Index: /tags/1.6.0/tester/example/tool.xml
===================================================================
--- /tags/1.6.0/tester/example/tool.xml	(revision 6168)
+++ /tags/1.6.0/tester/example/tool.xml	(revision 6168)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<run>
+    <tool>
+        <about>Press Simulate to view results.</about>
+        <command>tclsh @tool/fermi_broken.tcl @driver</command>
+    </tool>
+    <input>
+        <number id="temperature">
+            <about>
+                <label>Ambient temperature</label>
+                <description>Temperature of the environment.</description>
+            </about>
+            <units>K</units>
+            <min>0K</min>
+            <max>500K</max>
+            <default>300K</default>
+            <preset>
+                <value>300K</value>
+                <label>300K (room temperature)</label>
+            </preset>
+            <preset>
+                <value>77K</value>
+                <label>77K (liquid nitrogen)</label>
+            </preset>
+            <preset>
+                <value>4.2K</value>
+                <label>4.2K (liquid helium)</label>
+            </preset>
+        </number>
+        <number id="Ef">
+            <about>
+                <label>Fermi Level</label>
+                <description>Energy at center of distribution.</description>
+            </about>
+            <units>eV</units>
+            <min>-10eV</min>
+            <max>10eV</max>
+            <default>0eV</default>
+        </number>
+    </input>
+</run>
+
Index: /tags/1.6.0/tester/pkgIndex.tcl.in
===================================================================
--- /tags/1.6.0/tester/pkgIndex.tcl.in	(revision 6168)
+++ /tags/1.6.0/tester/pkgIndex.tcl.in	(revision 6168)
@@ -0,0 +1,12 @@
+
+package ifneeded RapptureTester @PACKAGE_VERSION@ [format {
+    set dir [file normalize "%s"]
+    set version @PACKAGE_VERSION@
+    lappend auto_path [file join $dir scripts]
+    namespace eval RapptureTester {
+	variable version $version
+	variable library $dir
+    }
+    package provide RapptureTester $version
+} $dir]
+
Index: /tags/1.6.0/tester/scripts/Makefile.in
===================================================================
--- /tags/1.6.0/tester/scripts/Makefile.in	(revision 6168)
+++ /tags/1.6.0/tester/scripts/Makefile.in	(revision 6168)
@@ -0,0 +1,64 @@
+
+srcdir		= @srcdir@
+prefix		= @prefix@
+exec_prefix	= @exec_prefix@
+bindir		= @bindir@
+libdir		= @libdir@
+datadir		= @datadir@
+datarootdir	= @datarootdir@
+mandir		= @mandir@
+includedir	= @includedir@
+
+SHELL		= @SHELL@
+INSTALL		= @INSTALL@
+MKDIR_P		= @MKDIR_P@
+TCLSH		= @TCLSH@
+VPATH		= $(srcdir)
+PACKAGE_VERSION = @PACKAGE_VERSION@
+
+FILES		= \
+		$(srcdir)/auto.tcl \
+		$(srcdir)/main.tcl \
+		$(srcdir)/legend.tcl \
+		$(srcdir)/objview.tcl \
+		$(srcdir)/resultspage.tcl \
+		$(srcdir)/runview.tcl \
+		$(srcdir)/statuslist.tcl \
+		$(srcdir)/stringdiffs.tcl \
+		$(srcdir)/test.tcl \
+		$(srcdir)/testtree.tcl \
+		$(srcdir)/testview.tcl
+
+version 	= $(PACKAGE_VERSION)
+name 		= RapptureTester$(version)
+
+destdir		= $(libdir)/$(name)/scripts
+
+all: tclIndex
+
+tclIndex: $(FILES)
+	$(TCLSH) $(srcdir)/../../gui/cf/mkindex.tcl --srcdir $(srcdir) \
+		--outfile tclIndex
+
+install: all install_scripts install_images 
+
+install_scripts: 
+	$(MKDIR_P) -m 0755 $(destdir)
+	@for i in $(FILES); do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 444 $$i $(destdir) ; \
+	done 
+	$(INSTALL) -m 444 tclIndex $(destdir)
+
+install_images:
+	$(MKDIR_P) -m 0755 $(destdir)/images
+	@for i in $(srcdir)/images/*.png; do \
+	    echo "Installing $$i" ; \
+	    $(INSTALL) -m 444 $$i $(destdir)/images ; \
+	done 
+
+clean:
+	$(RM) tclIndex
+
+distclean: clean
+	$(RM) Makefile *~
Index: /tags/1.6.0/tester/scripts/auto.tcl
===================================================================
--- /tags/1.6.0/tester/scripts/auto.tcl	(revision 6168)
+++ /tags/1.6.0/tester/scripts/auto.tcl	(revision 6168)
@@ -0,0 +1,108 @@
+#! /bin/sh
+# ----------------------------------------------------------------------
+#  RAPPTURE REGRESSION TESTER
+#
+#  This program will read a set of test xml files typically located in
+#  a tool's "tests" subdirectory, and provide an automatic test suite.
+#  Similar to main.tcl, but runs all tests automatically and exits with
+#  status code zero if all tests pass.
+#
+#  USAGE: auto.tcl ?-tool tool.xml? ?-testdir tests?
+# ======================================================================
+#  AUTHORS:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+exec tclsh "$0" $*
+# ----------------------------------------------------------------------
+# tclsh executes everything from here on...
+
+set testerdir [file dirname [file normalize [info script]]]
+lappend auto_path $testerdir
+
+# bring in the Rappture object system
+package require Rappture
+Rappture::objects::init
+Rappture::resources::load
+
+Rappture::getopts argv params {
+    value -tool ""
+    value -testdir ""
+}
+
+# If tool.xml and test directory locations are not given, try to find them.
+if {$params(-tool) == ""} {
+    if {[file isfile tool.xml]} {
+        set params(-tool) tool.xml
+    } elseif {[file isfile [file join rappture tool.xml]]} {
+        set params(-tool) [file join rappture tool.xml]
+    } else {
+        puts "Cannot find tool.xml"
+        exit 1
+    }
+} elseif {![file isfile $params(-tool)]} {
+    puts "Tool \"$params(-tool)\" does not exist"
+    exit 1
+}
+
+if {$params(-testdir) == ""} {
+    set tooldir [file dirname $params(-tool)]
+    if {[file isdirectory [file join $tooldir tests]]} {
+        set params(-testdir) [file join $tooldir tests]
+    } elseif {[file isdirectory [file join [file dirname $tooldir] tests]]} {
+        set params(-testdir) [file join [file dirname $tooldir] tests]
+    } else {
+        puts "Cannot find test directory"
+        exit 1
+    }
+} elseif {![file isdirectory $params(-testdir)]} {
+    puts "Test directory \"$params(-testdir)\" does not exist"
+    exit 1
+}
+
+set installdir [file dirname [file normalize $params(-tool)]]
+set xmlobj [Rappture::library $params(-tool)]
+set TaskObj [Rappture::Task ::#auto $xmlobj $installdir]
+
+# tasks in the tester run quietly and discard results
+$TaskObj configure -jobstats "" -resultdir ""
+
+# Load all tests in the test directory
+# ----------------------------------------------------------------------
+set testlist [glob -nocomplain -directory $params(-testdir) *.xml]
+if {[llength $testlist] == 0} {
+    puts stderr "ERROR:  no tests found in $params(-testdir)"
+    exit 1
+}
+
+set nerrors 0
+foreach file [glob -nocomplain -directory $params(-testdir) *.xml] {
+    set testobj [Rappture::Tester::Test ::#auto $TaskObj $file]
+    if {[$testobj getTestInfo test.label] eq ""} {
+        puts stderr "ERROR:  Missing test label in $file"
+        incr nerrors
+        continue
+    }
+
+    set status [$testobj run]
+
+    if {$status ne "finished"} {
+        puts stderr "ERROR:  test $file didn't finish -- $status"
+        incr nerrors
+        continue
+    }
+    if {[$testobj getResult] ne "Pass"} {
+        set diffs [$testobj getDiffs]
+        puts stderr "FAILED:  $file ([llength $diffs] differences)"
+        incr nerrors
+        continue
+    }
+}
+
+if {$nerrors > 0} {
+    set errs [expr {($nerrors == 1) ? "ERROR" : "ERRORS"}]
+    puts stderr "\n$nerrors $errs TOTAL"
+}
Index: /tags/1.6.0/tester/scripts/legend.tcl
===================================================================
--- /tags/1.6.0/tester/scripts/legend.tcl	(revision 6168)
+++ /tags/1.6.0/tester/scripts/legend.tcl	(revision 6168)
@@ -0,0 +1,258 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: legend - show a legend of color/line samples
+#
+#  This widget acts as a legend for the differences view.  It manages
+#  a series of samples, each with a block or line sample and a label.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+
+namespace eval Rappture::Tester { # forward declaration }
+
+option add *Legend.font {Arial -12} widgetDefault
+option add *Legend.padX 12 widgetDefault
+
+itcl::class Rappture::Tester::LegendEntry {
+    public variable title ""
+    public variable shape "box" {
+        if {[lsearch {box line} $shape] < 0} {
+            error "bad value \"$shape\": should be box, line"
+        }
+    }
+    public variable color ""
+    public variable state "normal" {
+        if {[lsearch {normal disabled} $state] < 0} {
+            error "bad value \"$state\": should be normal, disabled"
+        }
+    }
+    public variable anchor "w" {
+        if {[lsearch {e w} $anchor] < 0} {
+            error "bad value \"$anchor\": should be e, w"
+        }
+    }
+
+    constructor {args} { eval configure $args }
+}
+
+itcl::class Rappture::Tester::Legend {
+    inherit itk::Widget 
+
+    itk_option define -font font Font ""
+    itk_option define -padx padX PadX 1
+
+    constructor {args} { # defined later }
+    destructor { # defined later }
+
+    public method insert {pos args}
+    public method delete {from {to ""}}
+    public method itemconfigure {what args}
+    public method size {} { return [llength $_entries] }
+    public method get {pos args}
+
+    protected method _redraw {}
+
+    private variable _dispatcher ""  ;# dispatcher for !events
+    private variable _entries ""     ;# list of status entries
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Legend::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !redraw
+    $_dispatcher dispatch $this !redraw "[itcl::code $this _redraw]; list"
+
+    itk_component add area {
+        canvas $itk_interior.area -relief flat
+    }
+    pack $itk_component(area) -expand yes -fill both
+
+    bind $itk_component(hull) <Configure> \
+        [list $_dispatcher event -idle !redraw]
+
+    eval itk_initialize $args
+}
+
+itk::usual Legend {
+    keep -background -foreground -cursor -font
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Legend::destructor {} {
+    delete 0 end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <pos> ?-option value -option value ...?
+#
+# Inserts a new entry into the legend at the given <pos>.  The options
+# are those recognized by a LegendEntry object.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Legend::insert {pos args} {
+    set entry [eval Rappture::Tester::LegendEntry #auto $args]
+    set _entries [linsert $_entries $pos $entry]
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete <pos> ?<toPos>?
+#
+# Deletes a single entry or a range of entries from the legend
+# displayed in this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Legend::delete {pos {to ""}} {
+    if {$to eq ""} {
+        set to $pos
+    }
+    foreach obj [lrange $_entries $pos $to] {
+        itcl::delete object $obj
+    }
+    set _entries [lreplace $_entries $pos $to]
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: itemconfigure <what> ?-option? ?value -option value ...?
+#
+# Changes the options of a particular entry.  The <what> can be the
+# -title of the entry, or an integer index.  The options are those
+# recognized by a LegendEntry object.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Legend::itemconfigure {what args} {
+    # first, see if the <what> parameter matches a title
+    set obj ""
+    foreach entry $_entries {
+        if {[$entry cget -title] eq $what} {
+            set obj $entry
+            break
+        }
+    }
+
+    # if not, see if it's an integer index
+    if {$obj eq "" && [string is integer -strict $what]} {
+        set obj [lindex $_entries $what]
+    }
+
+    if {$obj eq ""} {
+        error "bad option \"$what\": should be entry title or integer index"
+    }
+
+    # if this is a query operation, return the info
+    if {[llength $args] < 2} {
+        return [eval $obj configure $args]
+    }
+
+    # configure the entry and then schedule a redraw to show the change
+    eval $obj configure $args
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get <pos> ?-key?
+#
+# Queries information about a particular entry at index <pos>.  With
+# no extra args, it returns a list of "-key value -key value ..."
+# representing all of the data about that entry.  Otherwise, the value
+# for a particular -key can be requested.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Legend::get {pos {option ""}} {
+    set obj [lindex $_entries $pos]
+    if {$obj eq ""} {
+        return ""
+    }
+    if {$option eq ""} {
+        set vlist ""
+        foreach opt [$obj configure] {
+            lappend vlist [lindex $opt 0] [lindex $opt end]
+        }
+        return $vlist
+    }
+    return [$obj cget $option]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Used internally to update the detailed list of items maintained
+# by this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Legend::_redraw {} {
+    set c $itk_component(area)
+    set w [winfo width $c]
+    set ymid [expr {[winfo height $c]/2}]
+    set padx $itk_option(-padx)
+    set fn $itk_option(-font)
+    set ssize [expr {[font metrics $fn -linespace]-2}]
+
+    $c delete all
+
+    # left/right edges of the drawing area
+    set x0 2
+    set x1 [expr {[winfo width $c]-2}]
+
+    # overall label on the left
+    set id [$c create text $x0 $ymid -anchor w -text "Legend:" -font $fn]
+    foreach {bx0 by0 bx1 by1} [$c bbox $id] break
+    set x0 [expr {$x0 + $bx1-$bx0 + $padx}]
+
+    foreach obj $_entries {
+        if {[$obj cget -state] eq "disabled" || [$obj cget -title] eq ""
+              || [$obj cget -color] eq ""} {
+            continue
+        }
+
+        set labelw [font measure $fn [$obj cget -title]]
+        set entryw [expr {$labelw + $ssize + 3}]
+
+        switch -- [$obj cget -anchor] {
+            w {
+                set xpos $x0
+                set x0 [expr {$x0 + $entryw + $padx}]
+            }
+            e {
+                set xpos [expr {$x1 - $entryw}]
+                set x1 [expr {$x1 - $entryw - $padx}]
+            }
+        }
+
+        switch -- [$obj cget -shape] {
+            box {
+                # draw the box style
+                $c create rectangle \
+                    $xpos [expr {$ymid-$ssize/2}] \
+                    [expr {$xpos+$ssize}] [expr {$ymid+$ssize/2}] \
+                    -outline black -fill [$obj cget -color]
+            }
+            line {
+                # draw the line style
+                $c create line $xpos $ymid [expr {$xpos+$ssize}] $ymid \
+                    -width 2 -fill [$obj cget -color]
+            }
+        }
+        set xpos [expr {$xpos+$ssize+3}]
+
+        $c create text $xpos $ymid -anchor w -text [$obj cget -title] -font $fn
+
+        if {$x0 >= $x1} break
+    }
+
+    # fix the requested size for the widget based on the layout
+    $c configure -width [expr {$x0 + [winfo width $c]-$x1}]
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTIONS
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Tester::Legend::font {
+    set lineh [font metrics $itk_option(-font) -linespace]
+    $itk_component(area) configure -height [expr {$lineh+4}]
+    $_dispatcher event -idle !redraw
+}
Index: /tags/1.6.0/tester/scripts/main.tcl
===================================================================
--- /tags/1.6.0/tester/scripts/main.tcl	(revision 6168)
+++ /tags/1.6.0/tester/scripts/main.tcl	(revision 6168)
@@ -0,0 +1,792 @@
+#! /bin/sh
+# ----------------------------------------------------------------------
+#  RAPPTURE REGRESSION TESTER
+#
+#  This program will read a set of test xml files typically located in
+#  a tool's "tests" subdirectory, and provide an interactive test suite.
+#  The test xml files should contain a complete set of inputs and 
+#  outputs for one run of an application.  In each test xml, a label 
+#  must be located at the path test.label.  Test labels may be organized
+#  hierarchically by using dots to separate components of the test label
+#  (example: roomtemp.1eV).  A description may optionally be located at
+#  the path test.description.  Input arguments are the path to the
+#  tool.xml of the version being tested, and the path the the directory
+#  containing a set of test xml files.  If the arguments are missing,
+#  the program will attempt to locate them automatically.
+#
+#  USAGE: tester.tcl ?-tool tool.xml? ?-testdir tests?
+# ======================================================================
+#  AUTHORS:  Michael McLennan, Ben Rafferty, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+#\
+exec tclsh "$0" $*
+# ----------------------------------------------------------------------
+# wish executes everything from here on...
+
+# take the main window down for now, so we can avoid a flash on the screen
+wm withdraw .
+
+set testerdir [file dirname [file normalize [info script]]]
+lappend auto_path $testerdir
+
+package require Itk
+package require Img
+package require Rappture
+package require RapptureGUI
+
+option add *selectBackground #bfefff
+option add *Tooltip.background white
+option add *Editor.background white
+option add *Gauge.textBackground white
+option add *TemperatureGauge.textBackground white
+option add *Switch.textBackground white
+option add *Progress.barColor #ffffcc
+option add *Diffview.background white
+option add *Text.background white
+option add *Balloon.titleBackground #6666cc
+option add *Balloon.titleForeground white
+option add *Balloon*Label.font -*-helvetica-medium-r-normal-*-12-*
+option add *Balloon*Radiobutton.font -*-helvetica-medium-r-normal-*-12-*
+option add *Balloon*Checkbutton.font -*-helvetica-medium-r-normal-*-12-*
+option add *ResultSet.controlbarBackground #6666cc
+option add *ResultSet.controlbarForeground white
+option add *ResultSet.activeControlBackground #ccccff
+option add *ResultSet.activeControlForeground black
+option add *Radiodial.length 3i
+option add *BugReport*banner*foreground white
+option add *BugReport*banner*background #a9a9a9
+option add *BugReport*banner*highlightBackground #a9a9a9
+option add *BugReport*banner*font -*-helvetica-bold-r-normal-*-18-*
+
+option add *testdiffs.hd*background #666666
+option add *testdiffs.hd*highlightBackground #666666
+option add *testdiffs.hd*foreground white
+option add *testdiffs.hd.inner.highlightBackground #999999
+option add *testdiffs.hd.inner*font {Arial -12 bold}
+option add *testdiffs.hd.inner*help.font {Arial -10 italic}
+option add *testdiffs.hd.inner*help.padX 2
+option add *testdiffs.hd.inner*help.padY 2
+option add *testdiffs.hd.inner*help.borderWidth 1
+option add *testdiffs.hd.inner*help.relief flat
+option add *testdiffs.hd.inner*help.overRelief raised
+option add *testdiffs.legend*font {Arial -12}
+
+switch $tcl_platform(platform) {
+    unix - windows {
+        event add <<PopupMenu>> <ButtonPress-3>
+    }
+    macintosh {
+        event add <<PopupMenu>> <Control-ButtonPress-1>
+    }
+}
+
+# install a better bug handler
+Rappture::bugreport::install
+
+# fix the "grab" command to support a stack of grab windows
+Rappture::grab::init
+
+# bring in the Rappture object system
+Rappture::objects::init
+
+# add the local image directory onto the path
+Rappture::icon foo  ;# forces auto-loading of Rappture::icon
+set Rappture::icon::iconpath [linsert $Rappture::icon::iconpath 0 [file join $testerdir images]]
+
+
+Rappture::getopts argv params {
+    value -tool ""
+    value -testdir ""
+}
+
+# If tool.xml and test directory locations are not given, try to find them.
+if {$params(-tool) == ""} {
+    if {[file isfile tool.xml]} {
+        set params(-tool) tool.xml
+    } elseif {[file isfile [file join rappture tool.xml]]} {
+        set params(-tool) [file join rappture tool.xml]
+    } else {
+        puts "Cannot find tool.xml"
+        exit 1
+    }
+} elseif {![file isfile $params(-tool)]} {
+    puts "Tool \"$params(-tool)\" does not exist"
+    exit 1
+}
+
+if {$params(-testdir) == ""} {
+    set tooldir [file dirname $params(-tool)]
+    if {[file isdirectory [file join $tooldir tests]]} {
+        set params(-testdir) [file join $tooldir tests]
+    } elseif {[file isdirectory [file join [file dirname $tooldir] tests]]} {
+        set params(-testdir) [file join [file dirname $tooldir] tests]
+    } else {
+        puts "Cannot find test directory"
+        exit 1
+    }
+} elseif {![file isdirectory $params(-testdir)]} {
+    puts "Test directory \"$params(-testdir)\" does not exist"
+    exit 1
+}
+
+set installdir [file dirname [file normalize $params(-tool)]]
+set xmlobj [Rappture::library $params(-tool)]
+set TaskObj [Rappture::Task ::#auto $xmlobj $installdir]
+
+# tasks in the tester run quietly and discard results
+$TaskObj configure -jobstats "" -resultdir ""
+
+set DiffShow ""  ;# used to track which diff objects are being displayed
+
+# ----------------------------------------------------------------------
+# INITIALIZE WINDOW
+# ----------------------------------------------------------------------
+wm title . "Rappture Regression Tester"
+wm geometry . 800x500
+Rappture::Panes .pw -orientation horizontal -sashcursor sb_h_double_arrow
+pack .pw -expand yes -fill both
+
+set win [.pw pane 0]
+Rappture::Tester::TestTree $win.tree \
+    -selectcommand tester_selection_changed
+pack $win.tree -expand yes -fill both -padx 8 -pady 8
+
+set win [.pw insert end -fraction 0.8]
+
+# Frame for viewing tests
+# ----------------------------------------------------------------------
+frame $win.testview
+frame $win.testview.bbar
+pack $win.testview.bbar -side bottom -fill x -pady {8 0}
+button $win.testview.bbar.regoldenize -text "<< New golden standard" \
+    -state disabled -command tester_regoldenize
+pack $win.testview.bbar.regoldenize -side left
+Rappture::Tooltip::for $win.testview.bbar.regoldenize \
+    "If this test result differs from the established test case, you would normally fix your tool to produce the correct result.  In some cases, however, your updated tool may be producing different, but correct, results.  In those cases, you can press this button to update the test itself to use the current output as the new golden standard for this test case."
+
+pack $win.testview.bbar -side bottom -fill x
+
+Rappture::Tester::TestView $win.testview.overview \
+    -runcommand tester_run
+pack $win.testview.overview -side top -fill both -padx 8 -pady 8
+
+frame $win.testview.details
+label $win.testview.details.heading -text "Differences:"
+pack $win.testview.details.heading -side top -anchor w
+Rappture::Scroller $win.testview.details.scrl \
+    -xscrollmode auto -yscrollmode auto
+pack $win.testview.details.scrl -expand yes -fill both
+Rappture::Tester::StatusList $win.testview.details.scrl.list \
+    -viewcommand tester_diff_show
+$win.testview.details.scrl contents $win.testview.details.scrl.list
+
+# Frame for viewing running tests
+# ----------------------------------------------------------------------
+frame $win.testrun
+label $win.testrun.title -text "Output from test run:" -anchor w
+pack $win.testrun.title -side top -anchor w
+
+Rappture::Progress $win.testrun.progress
+button $win.testrun.abort -text "Abort"
+pack $win.testrun.abort -side bottom -pady {8 0}
+
+Rappture::Scroller $win.testrun.scrl -xscrollmode auto -yscrollmode auto
+pack $win.testrun.scrl -expand yes -fill both
+text $win.testrun.scrl.info -width 1 -height 1 -wrap none
+$win.testrun.scrl contents $win.testrun.scrl.info
+
+# Frame for viewing diffs
+# ---------------------------------------------------------------------
+frame .testdiffs -borderwidth 10 -relief flat
+
+# header at the top with info about the diff, help, and close button
+frame .testdiffs.hd -borderwidth 4 -relief flat
+pack .testdiffs.hd -side top -fill x
+frame .testdiffs.hd.inner -highlightthickness 1 -borderwidth 2 -relief flat
+pack .testdiffs.hd.inner -expand yes -fill both
+button .testdiffs.hd.inner.close -relief flat -overrelief raised \
+    -bitmap [Rappture::icon dismiss] -command tester_diff_hide
+pack .testdiffs.hd.inner.close -side right -padx 8
+label .testdiffs.hd.inner.title -compound left -anchor w -padx 8
+pack .testdiffs.hd.inner.title -side left
+button .testdiffs.hd.inner.help -anchor w -text "Help..." \
+    -command "::Rappture::Tooltip::tooltip show .testdiffs.hd.inner.help +10,0"
+pack .testdiffs.hd.inner.help -side left -padx 10
+
+# show add/deleted styles at the bottom
+Rappture::Tester::Legend .testdiffs.legend
+pack .testdiffs.legend -side bottom -fill x
+frame .testdiffs.line -height 1 -background black
+pack .testdiffs.line -side bottom -fill x -pady {0 2}
+
+# diff viewer goes in this spot
+frame .testdiffs.body
+pack .testdiffs.body -expand yes -fill both -padx 10 -pady {20 10}
+
+# viewer for attribute diffs
+Rappture::Tester::ObjView .testdiffs.body.attrs
+
+# viewer for run status diffs
+Rappture::Tester::RunView .testdiffs.body.runs
+
+# viewer for value diffs where object is extra or missing
+frame .testdiffs.body.val
+Rappture::Tester::ObjView .testdiffs.body.val.obj -details max -showdiffs no
+pack .testdiffs.body.val.obj -expand yes -fill both
+
+# viewer for value diffs where we have just one string
+frame .testdiffs.body.val1str
+Rappture::Tester::ObjView .testdiffs.body.val1str.obj \
+    -details min -showdiffs no
+pack .testdiffs.body.val1str.obj -side top -fill x
+label .testdiffs.body.val1str.l -text "Value:"
+pack .testdiffs.body.val1str.l -anchor w -padx 10 -pady {10 0}
+Rappture::Scroller .testdiffs.body.val1str.scrl \
+    -xscrollmode auto -yscrollmode auto
+pack .testdiffs.body.val1str.scrl -expand yes -fill both -padx 10 -pady {0 10}
+text .testdiffs.body.val1str.scrl.text -width 10 -height 1 -wrap char
+.testdiffs.body.val1str.scrl contents .testdiffs.body.val1str.scrl.text
+
+# viewer for value diffs where we have two strings but no special viewers
+frame .testdiffs.body.val2strs
+Rappture::Tester::ObjView .testdiffs.body.val2strs.obj \
+    -details min -showdiffs no
+pack .testdiffs.body.val2strs.obj -side top -fill x
+Rappture::Tester::StringDiffs .testdiffs.body.val2strs.diffs \
+    -title1 "Expected this:" -title2 "Got this:"
+pack .testdiffs.body.val2strs.diffs -expand yes -fill both -padx 10 -pady 10
+
+# viewer for value diffs where we have a special object viewer
+Rappture::Panes .testdiffs.body.val2objs -orientation horizontal -sashcursor sb_h_double_arrow
+
+# empty area for the object value viewer
+set win [.testdiffs.body.val2objs pane 0]
+frame $win.val
+pack $win.val -expand yes -fill both
+
+# show object details and diff on the right-hand side
+set win [.testdiffs.body.val2objs insert end -fraction 0.5]
+Rappture::Tester::ObjView $win.obj -details min -showdiffs no
+pack $win.obj -side top -fill x
+Rappture::Tester::StringDiffs $win.diffs \
+    -title1 "Expected this:" -title2 "Got this:"
+pack $win.diffs -expand yes -fill both -padx 4 -pady 4
+
+# viewer for showing string info if all else fails (e.g. unkobj errors)
+Rappture::Scroller .testdiffs.body.info \
+    -xscrollmode auto -yscrollmode auto
+pack .testdiffs.body.info -expand yes -fill both -padx 10 -pady {0 10}
+text .testdiffs.body.info.text -width 10 -height 1 -wrap char
+.testdiffs.body.info contents .testdiffs.body.info.text
+
+# plug the proper diff colors into the legend area
+.testdiffs.legend insert end -title "= Added" -shape box \
+    -color [.testdiffs.body.val2strs.diffs cget -addedbackground]
+.testdiffs.legend insert end -title "= Deleted" -shape box \
+    -color [.testdiffs.body.val2strs.diffs cget -deletedbackground]
+.testdiffs.legend insert end -title "= Changed" -shape box \
+    -color [.testdiffs.body.val2strs.diffs cget -changedbackground]
+.testdiffs.legend insert end -title "= Test Result" -shape line \
+    -color red -anchor e
+.testdiffs.legend insert end -title "= Expected Result" -shape line \
+    -color black -anchor e
+
+# Load all tests in the test directory
+# ----------------------------------------------------------------------
+set testtree [.pw pane 0].tree
+foreach file [glob -nocomplain -directory $params(-testdir) *.xml] {
+    set testobj [Rappture::Tester::Test ::#auto $TaskObj $file]
+    if {[$testobj getTestInfo test.label] eq ""} {
+        puts stderr "ERROR:  Missing test label in $file"
+        puts stderr "        skipping that test..."
+    } elseif {[catch {$testtree add $testobj} err]} {
+        puts stderr "ERROR:  Can't load test $file"
+        puts stderr "        $err"
+        puts stderr "        skipping that test..."
+    }
+}
+$testtree component treeview open -recurse root
+
+# ----------------------------------------------------------------------
+# USAGE: tester_selection_changed
+#
+# Invoked automatically whenever the selection changes in the tree
+# on the left.  Brings up a description of one or more selected tests
+# on the right-hand side.
+# ----------------------------------------------------------------------
+proc tester_selection_changed {args} {
+    set testtree [.pw pane 0].tree
+    set rhs [.pw pane 1]
+    set testview $rhs.testview
+    set tests [$testtree curselection]
+
+    # figure out what we should be showing on the right-hand side
+    if {[llength $tests] > 0} {
+        set status "?"
+        foreach obj $tests {
+            if {[$obj getResult] == "Running"} {
+                set status "Running"
+            }
+        }
+        if {$status == "Running"} {
+            set detailwidget $rhs.testrun
+        } else {
+            set detailwidget $rhs.testview
+        }
+    } else {
+        set detailwidget ""
+    }
+
+    # repack the right-hand side, if necessary
+    if {$detailwidget ne [pack slaves $rhs]} {
+        foreach win [pack slaves $rhs] {
+            pack forget $win
+        }
+        if {$detailwidget ne ""} {
+            pack $detailwidget -expand yes -fill both -padx 8 -pady 8
+        }
+    }
+
+    if {[llength $tests] > 0} {
+        eval $testview.overview show $tests
+        if {[llength $tests] == 1 && [$tests getResult] eq "Fail"} {
+            pack $testview.bbar.regoldenize -side left
+            $testview.bbar.regoldenize configure -state normal
+
+            # build up a detailed list of diffs for this one test
+            pack $testview.details -side bottom -expand yes -fill both
+
+            set testobj [lindex $tests 0]
+            $testview.details.scrl.list delete 0 end
+            foreach rec [$testobj getDiffs] {
+                catch {unset diff}
+                array set diff $rec
+
+                set section [string totitle [lindex [split $diff(-path) .] 0]]
+                set title "$section: [$testobj getTestInfo $diff(-path).about.label]"
+                set desc ""
+                set help ""
+
+                set difftype [lindex $diff(-what) 0]
+                set op [lindex $diff(-what) 1]
+                switch -- $difftype {
+                  value {
+                    if {$section eq "Output"} {
+                        set icon [Rappture::icon fail16]
+                        switch -- $op {
+                          - {
+                              set desc "Result is missing from current output"
+                              set help "This result was defined in the test case, but was missing from the output from the current test run.  Perhaps the tool is not producing the result as it should, or else the latest version of the tool no longer produces that result and the test case needs to be updated."
+                          }
+                          + {
+                              set desc "Result was not expected to appear"
+                              set help "The test run contained a result that was not part of the expected output.  Perhaps the tool is not supposed to produce that result, or else the latest version produces a new result and the test case needs to be updated."
+                          }
+                          c {
+                              set desc "Result differs from expected value"
+                              set help "The result from the test run doesn't match the expected result in the test case.  The tool should be fixed to produce the expected result.  If you can verify that the tool is working correctly, then the test case should be updated to contain this new result."
+                          }
+                          default {
+                            error "don't know how to handle difference $op"
+                          }
+                        }
+                    } elseif {$section eq "Input"} {
+                        set icon [Rappture::icon warn16]
+                        switch -- $op {
+                          - {
+                              set desc "Test case doesn't specify this input value"
+                              set help "The test case is missing a setting for this input value that appears in the current tool definition.  Is this a new input that was recently added to the tool?  If so, the test case should be updated."
+                          }
+                          + {
+                              set desc "Test case has this extra input value"
+                              set help "The test case has an extra input value that does not appear in the current tool definition.  Was this input recently removed from the tool?  If so, the test case should be updated."
+                          }
+                          c {
+                              # don't give a warning in this case
+                              # input is supposed to be different from tool.xml
+                          }
+                          default {
+                            error "don't know how to handle difference $op"
+                          }
+                        }
+                    }
+                  }
+                  attrs {
+                    if {$section eq "Output"} {
+                        set icon [Rappture::icon warn16]
+                        set desc "Details about this result have changed"
+                        set help "The test run produced an output with slightly different information.  This may be as simple as a change in the label or description, or as serious as a change in the physical system of units.  Perhaps the tool is producing the wrong output, or else the tool has been modified and the test case needs to be updated."
+                    } elseif {$section eq "Input"} {
+                        set icon [Rappture::icon warn16]
+                        set desc "Details about this result have changed"
+                        set help "The test run contains an input with slightly different information.  This may be as simple as a change in the label or description, or as serious as a change in the physical system of units.  Perhaps this input has been modified in the latest version of the tool and the test case is outdated."
+                    }
+                  }
+                  type {
+                    if {$section eq "Output"} {
+                        set icon [Rappture::icon fail16]
+                        set desc "Result has the wrong type"
+                        set help "The test run contains an output that is completely different from what was expected--not even the same type of object.  The tool should be fixed to produce the expected result.  If you can verify that the tool is working correctly, then the test case should be updated to contain this new result."
+                    } elseif {$section eq "Input"} {
+                        set icon [Rappture::icon warn16]
+                        set desc "Input value has a different type"
+                        set help "The test run contains an output that is completely different from what was expected--not even the same type of object.  The tool should be fixed to produce the expected result.  If you can verify that the tool is working correctly, then the test case should be updated to contain this new result."
+                        set help "The test run contains an input value that is completely different from the corresponding input defined in the test case.  Was this input recently modified in the tool?  If so, the test case should be updated."
+                    }
+                  }
+                  status {
+                    set icon [Rappture::icon fail16]
+                    set title "Run failure"
+                    if {$diff(-path) eq "output.status"} {
+                        set desc "Test run failure was not expected"
+                        set help "The test run failed, but the test case was expected to finish successfully.  The tool should be fixed to avoid the failure.  If you can verify that the tool is working correctly, then the test case should be updated to contain this new result."
+                    } else {
+                        set desc "Test run failure produced different output"
+                        set help "The test run failed as expected, but produced different output.  Fix the tool to produce the correct error message for the failure.  If you can verify that the latest error message is better, then the test case should be updated to contain this new output."
+                    }
+                  }
+                  unkobj {
+                    set icon [Rappture::icon warn16]
+                    set title "Unsupported object type"
+                    set desc "Test contains an object type that is not yet supported"
+                    set help "The Rappture Regression Tester is still in beta.  Some object types supported by the Rappture runtime environment are not yet supported by the tester.  These warnings will go away as the Rappture Regression Tester improves and support for all object types is put into place."
+                  }
+                  default {
+                    error "don't know how to handle difference \"$difftype\""
+                  }
+                }
+
+                # add to the list of differences
+                if {$desc ne ""} {
+                    $testview.details.scrl.list insert end \
+                        -title $title -subtitle $diff(-path) \
+                        -icon $icon -body $desc -help $help \
+                        -clientdata [linsert $rec 0 -testobj $testobj]
+                }
+            }
+
+        } else {
+            $testview.bbar.regoldenize configure -state disabled
+            pack forget $testview.details $testview.bbar.regoldenize
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tester_run <testObj> <testObj> ...
+#
+# Invoked whenever the user presses the "Run" button for one or more
+# selected tests.  Puts the tool into "run" mode and starts running
+# the various test cases.
+# ----------------------------------------------------------------------
+proc tester_run {args} {
+    # set up a callback for handling output from runs
+    Rappture::Tester::Test::queue status tester_run_output
+
+    # add these tests to the run queue
+    eval Rappture::Tester::Test::queue add $args
+
+    # show the run output window
+    set rhs [.pw pane 1]
+    foreach win [pack slaves $rhs] {
+        pack forget $win
+    }
+    pack $rhs.testrun -expand yes -fill both -padx 8 -pady 8
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tester_run_output start <testObj>
+# USAGE: tester_run_output add <testObj> <string>
+#
+# Handles the output from running tests.  The "start" option clears
+# the current output area.  The "add" option adds output from a run.
+# ----------------------------------------------------------------------
+proc tester_run_output {option testobj args} {
+    set testrun [.pw pane 1].testrun
+
+    switch -- $option {
+        start {
+            # clear out any previous output
+            $testrun.scrl.info configure -state normal
+            $testrun.scrl.info delete 1.0 end
+            $testrun.scrl.info configure -state disabled
+
+            # plug this object into the "Abort" button
+            $testrun.abort configure -command [list $testobj abort]
+
+            # hide progress bar
+            pack forget $testrun.progress
+        }
+        add {
+            set message [lindex $args 0]
+            # scan for progress updates
+            while {[regexp -indices \
+                {=RAPPTURE-PROGRESS=> *([-+]?[0-9]+) +([^\n]*)(\n|$)} $message \
+                 match percent mesg]} {
+
+                foreach {i0 i1} $percent break
+                set percent [string range $message $i0 $i1]
+
+                foreach {i0 i1} $mesg break
+                set mesg [string range $message $i0 $i1]
+
+                pack $testrun.progress -fill x -padx 10 -pady 10
+                $testrun.progress settings -percent $percent -message $mesg
+
+                foreach {i0 i1} $match break
+                set message [string replace $message $i0 $i1]
+            }
+
+            $testrun.scrl.info configure -state normal
+            $testrun.scrl.info insert end $message
+
+            # if there are too many lines, delete some
+            set lines [lindex [split [$testrun.scrl.info index end-2char] .] 0]
+            if {$lines > 500} {
+                set extra [expr {$lines-500+1}]
+                $testrun.scrl.info delete 1.0 $extra.0
+            }
+
+            # show the newest stuff
+            $testrun.scrl.info see end
+            $testrun.scrl.info configure -state disabled
+        }
+        default {
+            error "bad option \"$option\": should be start, add"
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tester_diff_show -option value -option value ...
+#
+# Pops up a panel showing more detailed information about a particular
+# difference found in a particular test case.
+# ----------------------------------------------------------------------
+proc tester_diff_show {args} {
+    global DiffShow
+
+    set testtree [.pw pane 0].tree
+    set rhs [.pw pane 1]
+    set testview $rhs.testview
+    set viewarea [.testdiffs.body.val2objs pane 0].val
+
+    # clean up from the last call
+    set viewer [lindex $DiffShow 0]
+    if {$viewer ne ""} {
+        $viewer delete
+        foreach obj [lrange $DiffShow 1 end] {
+            itcl::delete object $obj
+        }
+    }
+    set DiffShow ""
+
+    # show the diff overview in the header
+    array set data $args
+    .testdiffs.hd.inner.title configure -image $data(-icon) -text $data(-body)
+
+    #
+    # Figure out how to visualize the difference.
+    #
+    array set diff $data(-clientdata)
+
+    if {[info exists data(-help)]} {
+        Rappture::Tooltip::text .testdiffs.hd.inner.help $data(-help)
+    } else {
+        Rappture::Tooltip::text .testdiffs.hd.inner.help ""
+    }
+
+    switch -glob -- $diff(-what) {
+        "value *" {
+            foreach w [pack slaves $viewarea] {
+                pack forget $w
+            }
+
+            set op [lindex $diff(-what) 1]
+            set w .testdiffs.body.val1str.obj
+            switch -- $op {
+                +       { set bg [$w cget -addedbackground] }
+                -       { set bg [$w cget -deletedbackground] }
+                default { set bg [lindex [$w configure -background] 3] }
+            }
+
+            # get the first value in obj or string form
+            set val1 ""
+            if {[catch {Rappture::objects::import $diff(-obj1) $diff(-path)} val1] == 0 && $val1 ne ""} {
+                set viewer [Rappture::objects::viewer $val1 \
+                    -for output -parent $viewarea]
+                if {$viewer ne ""} {
+                    set DiffShow [list $viewer $val1]
+                }
+                # try to get a string rep too
+                set status [$val1 export string str]
+                if {[lindex $status 0]} { set vstr1 $str }
+            }
+
+            # get a string rep for the second value
+            set val2 ""
+            if {[catch {Rappture::objects::import $diff(-obj2) $diff(-path)} val2] == 0 && $val2 ne ""} {
+                set viewer [Rappture::objects::viewer $val2 \
+                    -for output -parent $viewarea]
+                if {$viewer ne ""} {
+                    if {$DiffShow ne ""} {
+                        if {[lindex $DiffShow 0] eq $viewer} {
+                            lappend DiffShow $val2
+                        } else {
+                            error "type mismatch between values: $diff(-obj1) vs $diff(-obj2) -- diff should have caught this as \"type\" difference"
+                        }
+                    } else {
+                        set DiffShow [list $viewer $val2]
+                    }
+                }
+                # try to get a string rep too
+                set status [$val2 export string str]
+                if {[lindex $status 0]} { set vstr2 $str }
+            }
+
+            if {$DiffShow ne ""} {
+                # we have a value viewer -- show the values in that
+                pack $viewer -expand yes -fill both
+
+                if {$val1 ne ""} {
+                    $viewer add $val1 [list -color black -description "Expected Result"]
+                }
+                if {$val2 ne ""} {
+                    $viewer add $val2 [list -color red -description "Test Result"]
+                }
+
+                # show the string diffs too
+                set w [.testdiffs.body.val2objs pane 1]
+                $w.obj configure -background $bg \
+                    -testobj $diff(-testobj) -path $diff(-path)
+
+                if {[info exists vstr1]} { set v1 $vstr1 } else { set v1 "" }
+                if {[info exists vstr2]} { set v2 $vstr2 } else { set v2 "" }
+                $w.diffs show $v1 $v2
+
+                set win .testdiffs.body.val2objs
+
+                set legsettings [list 2 normal \
+                    3 [expr {($val2 ne "") ? "normal" : "disabled"}] \
+                    4 [expr {($val1 ne "") ? "normal" : "disabled"}]]
+
+            } elseif {[info exists vstr1] && [info exists vstr2]} {
+                # we have two value strings -- show as a diff
+                set win .testdiffs.body.val2strs
+                $win.obj configure -background $bg \
+                    -testobj $diff(-testobj) -path $diff(-path)
+                $win.diffs show $vstr1 $vstr2
+                set legsettings {2 normal 3 disabled 4 disabled}
+            } elseif {[info exists vstr1] || [info exists vstr2]} {
+                # we have one value string -- show it
+                if {[info exists vstr1]} {
+                    set val $vstr1
+                } else {
+                    set val $vstr2
+                }
+                set win .testdiffs.body.val1str
+                $win.obj configure -background $bg \
+                    -testobj $diff(-testobj) -path $diff(-path)
+                $win.scrl.text configure -state normal
+                $win.scrl.text delete 1.0 end
+                $win.scrl.text insert end $val
+                $win.scrl.text configure -state disabled
+                set legsettings {2 disabled 3 disabled 4 disabled}
+            } else {
+                # don't have a value -- show the attributes
+                set win .testdiffs.body.val
+                $win.obj configure -background $bg \
+                    -testobj $diff(-testobj) -path $diff(-path)
+                set legsettings {2 disabled 3 disabled 4 disabled}
+            }
+
+            # clean up any objects that are not being stored
+            if {$val1 ne "" && [lsearch $DiffShow $val1] < 0} {
+                itcl::delete object $val1
+            }
+            if {$val2 ne "" && [lsearch $DiffShow $val2] < 0} {
+                itcl::delete object $val2
+            }
+        }
+        "attrs *" {
+            set win .testdiffs.body.attrs
+            set bg [lindex [$win configure -background] 3]
+            $win configure -testobj $diff(-testobj) -background $bg \
+                -path $diff(-path) -details max -showdiffs yes
+            set legsettings {2 disabled 3 disabled 4 disabled}
+        }
+        "status" {
+            set win .testdiffs.body.runs
+            $win configure -testobj $diff(-testobj) -showdiffs yes
+            set legsettings {2 disabled 3 disabled 4 disabled}
+        }
+        "type *" {
+            error "don't know how to show type diffs"
+            set legsettings {2 disabled 3 disabled 4 disabled}
+        }
+        "unkobj" {
+            set win .testdiffs.body.info
+            $win.text configure -state normal
+            $win.text delete 1.0 end
+            $win.text insert end "The following object type is not yet supported within the Rappture Regression Tester:\n\n[$diff(-testobj) getTestInfo xml $diff(-path)]"
+            $win.text configure -state disabled
+            set legsettings {2 disabled 3 disabled 4 disabled}
+        }
+    }
+    if {[pack slaves .testdiffs.body] ne $win} {
+        foreach w [pack slaves .testdiffs.body] {
+            pack forget $w
+        }
+        pack $win -expand yes -fill both
+    }
+
+    # fix up the legend to best explain the current result
+    foreach {index state} $legsettings {
+        .testdiffs.legend itemconfigure $index -state $state
+    }
+
+    # pop up the viewer
+    place .testdiffs -x 0 -y 0 -anchor nw -relwidth 1 -relheight 1
+    raise .testdiffs
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tester_diff_hide
+#
+# Takes down the panel posted by tester_diff_show.
+# ----------------------------------------------------------------------
+proc tester_diff_hide {} {
+    place forget .testdiffs
+}
+
+# ----------------------------------------------------------------------
+# USAGE: tester_regoldenize
+#
+# Regoldenizes the currently focused test case.  Displays a warning
+# message.  If confirmed, copy the test information from the existing
+# test xml into the new result, and write the new data into the test
+# xml.
+# ----------------------------------------------------------------------
+proc tester_regoldenize {} {
+    set testtree [.pw pane 0].tree
+    set seltests [$testtree curselection]
+
+    if {[llength $seltests] != 1} {
+        error "Oops! Multiple tests selected to regoldenize.  How did we get here?"
+    }
+
+    set test [lindex $seltests 0]
+    set testxml [$test getTestxml]
+    if {[tk_messageBox -type yesno -icon warning -title "Rappture Tester: Confirm" -message "Are you sure that the latest run results are completely correct for this test case?  If so, then $testxml will be overwritten with the latest output, and all future test runs will be compared with this new standard.\n\nContinue?"]} {
+        $test regoldenize
+
+        # reload the updated description for this test
+        tester_selection_changed
+    }
+}
+
+wm deiconify .
Index: /tags/1.6.0/tester/scripts/objview.tcl
===================================================================
--- /tags/1.6.0/tester/scripts/objview.tcl	(revision 6168)
+++ /tags/1.6.0/tester/scripts/objview.tcl	(revision 6168)
@@ -0,0 +1,312 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: objview - show an overview of a Rappture object
+#
+#  This component is used when examining the details of a particular
+#  diff.  It shows an overview of the affected object, so the user
+#  can understand where the diff is coming from.  The overview can be
+#  short or long, and the widget can show the object itself or any
+#  diffs in the test object.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require RapptureGUI
+
+namespace eval Rappture::Tester { # forward declaration }
+
+option add *ObjView.headingFont {Arial -12 bold} widgetDefault
+option add *ObjView.infoFont {Arial -12} widgetDefault
+option add *ObjView.codeFont {Courier -12} widgetDefault
+option add *ObjView.addedBackground #ccffcc widgetDefault
+option add *ObjView.deletedBackground #ffcccc widgetDefault
+
+itcl::class Rappture::Tester::ObjView {
+    inherit itk::Widget 
+
+    itk_option define -testobj testObj TestObj ""
+    itk_option define -path path Path ""
+    itk_option define -details details Details "min"
+    itk_option define -showdiffs showDiffs ShowDiffs "off"
+
+    itk_option define -addedbackground addedBackground Background ""
+    itk_option define -deletedbackground deletedBackground Background ""
+    itk_option define -infofont infoFont Font ""
+    itk_option define -codefont codeFont Font ""
+
+    constructor {args} { # defined later }
+
+    protected method _reload {}
+
+    private variable _dispatcher ""  ;# dispatcher for !events
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::ObjView::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !reload
+    $_dispatcher dispatch $this !reload "[itcl::code $this _reload]; list"
+
+    # object icon on the left-hand side
+    itk_component add icon {
+        label $itk_interior.icon
+    }
+
+    # create label/value for "path" parameter -- this is a special case
+    itk_component add lpath {
+        label $itk_interior.lpath -text "Identifier:"
+    } {
+        usual
+        rename -font -headingfont headingFont Font
+    }
+
+    itk_component add vpath {
+        label $itk_interior.vpath -justify left -anchor w
+    } {
+        usual
+        rename -font -codefont codeFont Font
+    }
+
+    # set up the layout to resize properly
+    grid columnconfigure $itk_interior 2 -weight 1
+
+    eval itk_initialize $args
+}
+
+itk::usual ObjView {
+    keep -background -foreground -cursor
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _reload
+#
+# Called internally to load information from the object at the
+# current -path in the -testobj XML definition.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::ObjView::_reload {} {
+    set testobj $itk_option(-testobj)
+    set path $itk_option(-path)
+
+    # clear everything out
+    foreach win [grid slaves $itk_interior] {
+        grid forget $win
+    }
+    grid $itk_component(icon) -row 0 -rowspan 6 -column 0 \
+        -sticky ne -padx {0 20}
+
+    # look for an object at the path
+    set type ""
+    if {$testobj ne "" && $path ne ""} {
+        set type [$testobj getTestInfo element -as type $path]
+        if {$type eq ""} {
+            set type [$testobj getRunInfo element -as type $path]
+        }
+    }
+
+    if {$type eq ""} {
+        $itk_component(icon) configure -image ""
+    } else {
+        set icon [Rappture::objects::get $type -image]
+        $itk_component(icon) configure -image $icon
+
+        # decide what to show -- short or long format
+        set items {label description path}
+        foreach rec [Rappture::objects::get $type -attributes] {
+            set name [lindex $rec 0]
+            array set attr [lrange $rec 1 end]
+            set titles($name) $attr(-title)
+            set loc($name) $path.$attr(-path)
+            set path2attr($path.$attr(-path)) $name
+
+            if {$itk_option(-details) == "max" && [lsearch $items $name] < 0} {
+                lappend items $name
+            }
+        }
+
+        # if we're showing diffs, query them now
+        if {$itk_option(-showdiffs)} {
+            foreach rec [$testobj getDiffs $path] {
+                catch {unset df}
+                array set df $rec
+                if {[lindex $df(-what) 0] eq "attr"} {
+                    set apath $df(-path).[lindex $df(-what) 2]
+
+                    if {[info exists path2attr($apath)]} {
+                        # store the diff for this attribute -- we need it below
+                        set name $path2attr($apath)
+                        set diffs($name) [list [lindex $df(-what) 1] $df(-v1) $df(-v2)]
+                    }
+                }
+            }
+        }
+
+        # run through the items and show values
+        set row 0
+        foreach aname $items {
+            set show 0
+            if {$aname == "path"} {
+                # use a special widget to handle the "path" report
+                set lcomp "lpath"
+                set vcomp "vpath"
+                $itk_component(vpath) configure -text $path
+                set show 1
+            } else {
+                # get a label with the attribute name for this row
+                set lcomp "lattr$row"
+                if {![info exists itk_component($lcomp)]} {
+                    itk_component add $lcomp {
+                        label $itk_interior.$lcomp
+                    } {
+                        usual
+                        rename -font -headingfont headingFont Font
+                    }
+                }
+                $itk_component($lcomp) configure -text "$titles($aname):"
+
+                set vcomp ""
+                set bg [cget -background]
+                set fn $itk_option(-infofont)
+
+                if {[info exists diffs($aname)]} {
+                    set show 1
+                    set fn $itk_option(-codefont)
+
+                    foreach {op v1 v2} $diffs($aname) break
+                    switch -- $op {
+                        - {
+                            # use a normal label below, but change the bg
+                            set bg $itk_option(-deletedbackground)
+                            set str $v1
+                        }
+                        + {
+                            # use a normal label below, but change the bg
+                            set bg $itk_option(-addedbackground)
+                            set str $v2
+                        }
+                        c {
+                            # get a value that can show diffs on this row
+                            set vcomp "vdiff$row"
+                            if {![info exists itk_component($vcomp)]} {
+                                itk_component add $vcomp {
+                                    Rappture::Scroller \
+                                        $itk_interior.$vcomp \
+                                        -xscrollmode auto -yscrollmode auto \
+                                        -height 1i
+                                }
+                                itk_component add ${vcomp}val {
+                                    Rappture::Diffview \
+                                        $itk_component($vcomp).dv \
+                                        -borderwidth 0 \
+                                        -diff 1->2 -layout inline
+                                }
+                                $itk_component($vcomp) contents \
+                                    $itk_component(${vcomp}val)
+                            }
+                            set dv $itk_component(${vcomp}val)
+                            $dv text 1 $v1
+                            $dv text 2 $v2
+
+                            # more than a 1-line diff? then show scrollbars
+                            if {[llength [split $v1 \n]] > 1
+                                 || [llength [split $v2 \n]] > 1} {
+                                $itk_component($vcomp) configure \
+                                    -yscrollmode auto -height 1i
+                            } else {
+                                foreach {x0 y0 x1 y1} [$dv bbox all] break
+                                set bd [$dv cget -borderwidth]
+                                set yht [expr {$y1-$y0+2*$bd}]
+                                $itk_component($vcomp) configure \
+                                    -yscrollmode off -height $yht
+                            }
+                        }
+                    }
+                } else {
+                    # no diff -- get the attribute value
+                    set str [$testobj getTestInfo $loc($aname)]
+                }
+
+                # don't have a diff comp from above? then create a viewer here
+                if {$vcomp eq "" && $str ne ""} {
+                    set show 1
+                    set lines [split $str \n]
+                    if {[llength $lines] > 2
+                          || [string length [lindex $lines 0]] > 40
+                          || [string length [lindex $lines 1]] > 40} {
+
+                        # long string -- use a scroller and a text area
+                        set vcomp "vattrlong$row"
+                        if {![info exists itk_component($vcomp)]} {
+                            itk_component add $vcomp {
+                                Rappture::Scroller $itk_interior.$vcomp \
+                                    -xscrollmode auto -yscrollmode auto \
+                                    -height 1i
+                            }
+                            itk_component add ${vcomp}val {
+                                text $itk_component($vcomp).tx -wrap word
+                            }
+                            $itk_component($vcomp) contents \
+                                $itk_component(${vcomp}val)
+                        }
+                        set tx $itk_component(${vcomp}val)
+                        $tx configure -state normal
+                        $tx delete 1.0 end
+                        $tx insert end $str
+                        $tx configure -state disabled -background $bg -font $fn
+                    } else {
+                        # short string -- use a 1-line label
+                        set vcomp "vattr$row"
+                        if {![info exists itk_component($vcomp)]} {
+                            itk_component add $vcomp {
+                                label $itk_interior.$vcomp \
+                                    -justify left -anchor w
+                            } {
+                                usual
+                                rename -font -infofont infoFont Font
+                            }
+                        }
+                        $itk_component($vcomp) configure -text $str \
+                            -background $bg -font $fn
+                    }
+                }
+
+            }
+            grid rowconfigure $itk_interior $row -weight 0
+
+            if {$show} {
+                grid $itk_component($lcomp) -row $row -column 1 \
+                    -sticky e -pady 2
+                grid $itk_component($vcomp) -row $row -column 2 \
+                    -sticky ew -pady 2
+                incr row
+            }
+        }
+        grid rowconfigure $itk_interior $row -weight 1
+    }
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTIONS
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Tester::ObjView::testobj {
+    $_dispatcher event -idle !reload
+}
+itcl::configbody Rappture::Tester::ObjView::path {
+    $_dispatcher event -idle !reload
+}
+itcl::configbody Rappture::Tester::ObjView::details {
+    if {[lsearch {min max} $itk_option(-details)] < 0} {
+        error "bad value \"$itk_option(-details)\": should be min, max"
+    }
+    $_dispatcher event -idle !reload
+}
+itcl::configbody Rappture::Tester::ObjView::showdiffs {
+    if {![string is boolean -strict $itk_option(-showdiffs)]} {
+        error "bad value \"$itk_option(-showdiffs)\": should be boolean"
+    }
+    $_dispatcher event -idle !reload
+}
Index: /tags/1.6.0/tester/scripts/resultspage.tcl
===================================================================
--- /tags/1.6.0/tester/scripts/resultspage.tcl	(revision 6168)
+++ /tags/1.6.0/tester/scripts/resultspage.tcl	(revision 6168)
@@ -0,0 +1,561 @@
+package require Itk
+
+option add *ResultsPage.width 3.5i widgetDefault
+option add *ResultsPage.height 4i widgetDefault
+option add *ResultsPage.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *ResultsPage.codeFont \
+    -*-courier-medium-r-normal-*-12-* widgetDefault
+option add *ResultsPage.textFont \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *ResultsPage.boldTextFont \
+    -*-helvetica-bold-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::ResultsPage {
+    inherit itk::Widget
+
+    itk_option define -codefont codeFont Font ""
+    itk_option define -textfont textFont Font ""
+    itk_option define -boldtextfont boldTextFont Font ""
+    itk_option define -clearcommand clearCommand ClearCommand ""
+    itk_option define -appname appName AppName ""
+    itk_option define -promptcommand promptCommand PromptCommand ""
+
+    constructor {args} { # defined below }
+    destructor { # defined below }
+
+    public method load {xmlobj}
+    public method clear {args}
+    public method download {option args}
+    public method resultset {}
+
+    protected method _plot {args}
+    protected method _fixResult {}
+    protected method _fixSize {}
+    protected method _resultTooltip {}
+    protected method _autoLabel {xmlobj path title cntVar}
+    protected method _reorder {comps}
+
+    private variable _pages 0 
+    private variable _label2page
+    private variable _label2desc
+    private variable _runs ""
+    private variable _lastlabel ""
+    private variable _plotlist ""
+
+}
+
+itk::usual ResultsPage {
+    keep -background -cursor -font
+    #TODO: keep -background -cursor foreground -font
+}
+
+itcl::body Rappture::ResultsPage::constructor {args} {
+
+    itk_component add top {
+        frame $itk_interior.top
+    }
+    pack $itk_component(top) -side top -fill x -pady 8
+
+    itk_component add toplabel {
+        label $itk_component(top).l -text "Result:" 
+        #TODO: -font $itk_option(font)
+    }
+    pack $itk_component(toplabel) -side left
+
+    itk_component add resultselector {
+        Rappture::Combobox $itk_component(top).sel -width 10 -editable no
+    } {
+        usual
+        rename -font -textfont textFont Font
+    }
+    pack $itk_component(resultselector) -side left -expand yes -fill x
+    bind $itk_component(resultselector) <<Value>> [itcl::code $this _fixResult]
+    bind $itk_component(resultselector) <Enter> \
+        [itcl::code $this download coming]
+
+    Rappture::Tooltip::for $itk_component(resultselector) \
+        "@[itcl::code $this _resultTooltip]"
+
+    $itk_component(resultselector) choices insert end --- "---"
+
+    itk_component add download {
+        button $itk_component(top).dl -image [Rappture::icon download] \
+            -anchor e -borderwidth 1 -relief flat -overrelief raised \
+            -command [itcl::code $this download start $itk_component(top).dl]
+    }
+    pack $itk_component(download) -side right -padx {4 0}
+    bind $itk_component(download) <Enter> [itcl::code $this download coming]
+
+    $itk_component(resultselector) choices insert end \
+        @download [Rappture::filexfer::label download]
+
+    if {[Rappture::filexfer::enabled]} {
+        Rappture::Tooltip::for $itk_component(download) "Downloads the current result to a new web browser window on your desktop.  From there, you can easily print or save results.
+
+NOTE:  Your web browser must allow pop-ups from this site.  If your output does not appear, look for a 'pop-up blocked' message and enable pop-ups."
+    } else {
+        Rappture::Tooltip::for $itk_component(download) "Saves the current result to a file on your desktop."
+    }
+
+    itk_component add results {
+        Rappture::Panes $itk_interior.pane -sashwidth 1 \
+            -sashrelief solid -sashpadding {4 0}
+    }
+    pack $itk_component(results) -expand yes -fill both
+    set f [$itk_component(results) pane 0]
+
+    itk_component add resultpages {
+        Rappture::Notebook $f.nb
+    }
+    pack $itk_component(resultpages) -expand yes -fill both
+
+    set f [$itk_component(results) insert end -fraction 0.1]
+    itk_component add resultset {
+        Rappture::ResultSet $f.rset \
+            -clearcommand [itcl::code $this clear] \
+            -settingscommand [itcl::code $this _plot]
+    }
+    pack $itk_component(resultset) -expand yes -fill both
+    bind $itk_component(resultset) <<Control>> [itcl::code $this _fixSize]
+    bind $itk_component(results) <Configure> [itcl::code $this _fixSize]
+
+    eval itk_initialize $args
+}
+
+itcl::body Rappture::ResultsPage::destructor {} {
+    foreach obj $_runs {
+        itcl::delete object $obj
+    }
+}
+
+# -----------------------------------------------------------------------
+# CONFIGURATION OPTION: -promptcommand
+#
+# Forward the ResultsPage's promptcommand to the child ResultSet.
+# -----------------------------------------------------------------------
+itcl::configbody Rappture::ResultsPage::promptcommand {
+    $itk_component(resultset) configure \
+        -promptcommand $itk_option(-promptcommand)
+}
+  
+itcl::body Rappture::ResultsPage::_fixResult {} {
+    set name [$itk_component(resultselector) value]
+    set page ""
+    if {"" != $name} {
+        set page [$itk_component(resultselector) translate $name]
+    }
+    if {$page == "@download"} {
+        # put the combobox back to its last value
+        $itk_component(resultselector) component entry configure -state normal
+        $itk_component(resultselector) component entry delete 0 end
+        $itk_component(resultselector) component entry insert end $_lastlabel
+        $itk_component(resultselector) component entry configure -state disabled
+        # perform the actual download
+        download start $itk_component(download)
+    } elseif {$page == "---"} {
+        # put the combobox back to its last value
+        $itk_component(resultselector) component entry configure -state normal
+        $itk_component(resultselector) component entry delete 0 end
+        $itk_component(resultselector) component entry insert end $_lastlabel
+        $itk_component(resultselector) component entry configure -state disabled
+    } elseif {$page != ""} {
+        set _lastlabel $name
+        set win [winfo toplevel $itk_component(hull)]
+        blt::busy hold $win
+        $itk_component(resultpages) current $page
+
+        set f [$itk_component(resultpages) page $page]
+        $f.rviewer plot clear
+        eval $f.rviewer plot add $_plotlist
+        blt::busy release [winfo toplevel $itk_component(hull)]
+    }
+}
+
+itcl::body Rappture::ResultsPage::download {option args} {
+    set title [$itk_component(resultselector) value]
+    set page [$itk_component(resultselector) translate $title]
+
+    switch -- $option {
+        coming {
+            #
+            # Warn result that a download is coming, in case
+            # it needs to take a screen snap.
+            #
+            if {![regexp {^(|@download|---)$} $page]} {
+                set f [$itk_component(resultpages) page $page]
+                $f.rviewer download coming
+            }
+        }
+        controls {
+            # no controls for this download yet
+            return ""
+        }
+        start {
+            set widget $itk_component(download)
+            if {[llength $args] > 0} {
+                set widget [lindex $args 0]
+                if {[catch {winfo class $widget}]} {
+                    set widget $itk_component(download)
+                }
+            }
+            #
+            # See if this download has any controls.  If so, then
+            # post them now and let the user continue the download
+            # after selecting a file format.
+            #
+            if {$page != ""} {
+                set ext ""
+                set f [$itk_component(resultpages) page $page]
+                set arg [itcl::code $this download now $widget]
+                set popup [$f.rviewer download controls $arg]
+                if {"" != $popup} {
+                    $popup activate $widget below
+                } else {
+                    download now $widget 
+                }
+            } else {
+                # this shouldn't happen
+                set file error.html
+                set data "<h1>Not Found</h1>There is no result selected."
+            }
+        }
+        now {
+            set widget $itk_component(download)
+            if {[llength $args] > 0} {
+                set widget [lindex $args 0]
+                if {[catch {winfo class $widget}]} {
+                    set widget $itk_component(download)
+                }
+            }
+            #
+            # Perform the actual download.
+            #
+            if {$page != ""} {
+                set ext ""
+                set f [$itk_component(resultpages) page $page]
+                set item [$itk_component(resultselector) value]
+                set result [$f.rviewer download now $widget \
+                    $itk_option(-appname) $item]
+                if { $result == "" } {
+                    return;                # User cancelled the download.
+                }
+                foreach {ext data} $result break
+                if {"" == $ext} {
+                    if {"" != $widget} {
+                        Rappture::Tooltip::cue $widget \
+                            "Can't download this result."
+                    }
+                    return
+                }
+                regsub -all {[\ -\/\:-\@\{-\~]} $title {} title
+                set file "$title$ext"
+            } else {
+                # this shouldn't happen
+                set file error.html
+                set data "<h1>Not Found</h1>There is no result selected."
+            }
+
+            set mesg [Rappture::filexfer::download $data $file]
+            if {[string length $mesg] > 0} {
+                Rappture::Tooltip::cue $widget $mesg
+            }
+        }
+        default {
+            error "bad option \"$option\": should be coming, controls, now, start"
+        }
+    }
+}
+
+itcl::body Rappture::ResultsPage::load {xmlobj} {
+    # look for all output.load children and load them first
+    # each run.xml is loaded as a previous simulation.
+    foreach item [$xmlobj children -type run output.load] {
+        set loadfile [$xmlobj get output.load.$item]
+        set loadobj [Rappture::library $loadfile]
+        load $loadobj
+    }
+
+    foreach item [$xmlobj children -type run output.include] {
+        set id [$xmlobj element -as id output.include.$item]
+        set inclfile [$xmlobj get output.include.$item]
+        set inclobj [Rappture::library $inclfil]
+        foreach c [$inclobj children output] {
+            switch -glob -- $c {
+                # We don't want to include these tags.
+                include* - time* - status* - user* {
+                    continue
+                }
+                default {
+                    set oldid [$inclobj element -as id output.$c]
+                    set oldtype [$inclobj element -as type output.$c]
+                    set newcomp "$oldtype\($id-$oldid\)"
+                    $xmlobj copy output.$newcomp from $inclobj output.$c
+                }
+            }
+        }
+    }
+
+    lappend _runs $xmlobj
+
+    # Detect molecule elements that contain trajectory data and convert
+    # to sequences.
+    # TODO: _trajToSequence $xmlobj output
+
+    # Go through the analysis and find all result sets.
+    set haveresults 0
+    foreach item [_reorder [$xmlobj children output]] {
+        switch -glob -- $item {
+            log* {
+                _autoLabel $xmlobj output.$item "Output Log" counters
+            }
+            number* {
+                _autoLabel $xmlobj output.$item "Number" counters
+            }
+            integer* {
+                _autoLabel $xmlobj output.$item "Integer" counters
+            }
+            string* {
+                _autoLabel $xmlobj output.$item "String" counters
+            }
+            histogram* - curve* - field* - drawing3d* {
+                _autoLabel $xmlobj output.$item "Plot" counters
+            }
+            structure* {
+                _autoLabel $xmlobj output.$item "Structure" counters
+            }
+            table* {
+                _autoLabel $xmlobj output.$item "Energy Levels" counters
+            }
+            sequence* {
+                _autoLabel $xmlobj output.$item "Sequence" counters
+            }
+        }
+        set label [$xmlobj get output.$item.about.group]
+        if {"" == $label} {
+            set label [$xmlobj get output.$item.about.label]
+        }
+
+        set hidden [$xmlobj get output.$item.hide]
+        set hidden [expr {"" != $hidden && $hidden}]
+
+        if {"" != $label && !$hidden} {
+            set haveresults 1
+        }
+    }
+
+    # if there are any valid results, add them to the resultset
+    if {$haveresults} {
+        set index [$itk_component(resultset) add $xmlobj]
+
+        # add each result to a result viewer
+        foreach item [_reorder [$xmlobj children output]] {
+            set label [$xmlobj get output.$item.about.group]
+            if {"" == $label} {
+                set label [$xmlobj get output.$item.about.label]
+            }
+
+            set hidden [$xmlobj get output.$item.hide]
+            set hidden [expr {"" != $hidden && $hidden}]
+
+            if {"" != $label && !$hidden} {
+                if {![info exists _label2page($label)]} {
+                    set name "page[incr _pages]"
+                    set page [$itk_component(resultpages) insert end $name]
+                    set _label2page($label) $page
+                    set _label2desc($label) \
+                        [$xmlobj get output.$item.about.description]
+                    Rappture::ResultViewer $page.rviewer
+                    pack $page.rviewer -expand yes -fill both -pady 4
+
+                    set end [$itk_component(resultselector) \
+                        choices index -value ---]
+                    if {$end < 0} {
+                        set end "end"
+                    }
+                    $itk_component(resultselector) choices insert $end \
+                        $name $label
+                }
+
+                # add/replace the latest result into this viewer
+                set page $_label2page($label)
+
+                if {![info exists reset($page)]} {
+                    $page.rviewer clear $index
+                    set reset($page) 1
+                }
+                $page.rviewer add $index $xmlobj output.$item
+            }
+        }
+    }
+
+    # show the first page by default
+    set max [$itk_component(resultselector) choices size]
+    for {set i 0} {$i < $max} {incr i} {
+        set first [$itk_component(resultselector) choices get -label $i]
+        if {$first != ""} {
+            set page [$itk_component(resultselector) choices get -value $i]
+            set char [string index $page 0]
+            if {$char != "@" && $char != "-"} {
+                $itk_component(resultpages) current $page
+                $itk_component(resultselector) value $first
+                set _lastlabel $first
+                break
+            }
+        }
+    }
+}
+
+# -----------------------------------------------------------------------
+# USAGE: clear ?-nodelete?
+#
+# Discards all results previously loaded into the results page.  Any
+# library objects that have been loaded will be destroyed unless the
+# -nodelete option is used.
+# -----------------------------------------------------------------------
+itcl::body Rappture::ResultsPage::clear {args} {
+    if {[lsearch $args "-nodelete"] == -1} {
+        foreach obj $_runs {
+            itcl::delete object $obj
+        }
+    }
+    set _runs ""
+
+    $itk_component(resultset) clear
+
+    # reset the size of the controls area
+    set ht [winfo height $itk_component(results)]
+    set cntlht [$itk_component(resultset) size -controlarea]
+    set frac [expr {double($cntlht)/$ht}]
+    $itk_component(results) fraction end $frac
+
+    foreach label [array names _label2page] {
+        set page $_label2page($label)
+        $page.rviewer clear
+    }
+    $itk_component(resultselector) value ""
+    $itk_component(resultselector) choices delete 0 end
+    catch {unset _label2page}
+    catch {unset _label2desc}
+    set _plotlist ""
+
+    $itk_component(resultselector) choices insert end --- "---"
+    $itk_component(resultselector) choices insert end \
+        @download [Rappture::filexfer::label download]
+    set _lastlabel ""
+
+    #
+    # HACK ALERT!!
+    # The following statement should be in place, but it causes
+    # vtk to dump core.  Leave it out until we can fix the core dump.
+    # In the mean time, we leak memory...
+    #
+    #$itk_component(resultpages) delete -all
+    #set _pages 0
+
+    # Invoke -clearcommand option
+    if {[string length $itk_option(-clearcommand)] > 0} {
+        uplevel #0 $itk_option(-clearcommand)
+    }
+
+}
+
+itcl::body Rappture::ResultsPage::_resultTooltip {} {
+    set tip ""
+    set name [$itk_component(resultselector) value]
+    if {[info exists _label2desc($name)] &&
+         [string length $_label2desc($name)] > 0} {
+        append tip "$_label2desc($name)\n\n"
+    }
+    if {[array size _label2page] > 1} {
+        append tip "Use this control to display other output results."
+    }
+    return $tip
+}
+
+itcl::body Rappture::ResultsPage::_fixSize {} {
+    set ht [winfo height $itk_component(results)]
+    if {$ht <= 1} { set ht [winfo reqheight $itk_component(results)] }
+    set cntlht [$itk_component(resultset) size -controlarea]
+    set frac [expr {double($cntlht)/$ht}]
+
+    if {$frac < 0.4} {
+        $itk_component(results) fraction end $frac
+    }
+    #_fixSimControl
+}
+
+itcl::body Rappture::ResultsPage::_autoLabel {xmlobj path title cntVar} {
+    upvar $cntVar counters
+
+    set group [$xmlobj get $path.about.group]
+    set label [$xmlobj get $path.about.label]
+    if {"" == $label} {
+        # no label -- make one up using the title specified
+        if {![info exists counters($group-$title)]} {
+            set counters($group-$title) 1
+            set label $title
+        } else {
+            set label "$title (#[incr counters($group-$title)])"
+        }
+        $xmlobj put $path.about.label $label
+    } else {
+        # handle the case of two identical labels in <output>
+        if {![info exists counters($group-$label)]} {
+            set counters($group-$label) 1
+        } else {
+            set label "$label (#[incr counters($group-$label)])"
+            $xmlobj put $path.about.label $label
+        }
+    }
+    return $label
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _plot ?<index> <options> <index> <options>...?
+#
+# Used internally to update the plot shown in the current result
+# viewer whenever the resultset settings have changed.  Causes the
+# desired results to show up on screen.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultsPage::_plot {args} {
+    set _plotlist $args
+
+    set page [$itk_component(resultselector) value]
+    set page [$itk_component(resultselector) translate $page]
+    if {"" != $page} {
+        set f [$itk_component(resultpages) page $page]
+        $f.rviewer plot clear
+        foreach {index opts} $_plotlist {
+            $f.rviewer plot add $index $opts
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _reorder <compList>
+#
+# Used internally to change the order of a series of output components
+# found in the <output> section.  Moves the <log> elements to the end
+# and returns the updated list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::ResultsPage::_reorder {comps} {
+    set i 0
+    set max [llength $comps]
+    while {$i < $max} {
+        set c [lindex $comps $i]
+        if {[string match log* $c]} {
+            set comps [lreplace $comps $i $i]
+            lappend comps $c
+            incr max -1
+        } else {
+            incr i
+        }
+    }
+    return $comps
+}
+
+itcl::body Rappture::ResultsPage::resultset {} {
+    return $itk_component(resultset)
+}
+
Index: /tags/1.6.0/tester/scripts/runview.tcl
===================================================================
--- /tags/1.6.0/tester/scripts/runview.tcl	(revision 6168)
+++ /tags/1.6.0/tester/scripts/runview.tcl	(revision 6168)
@@ -0,0 +1,212 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: runview - show details of a run with status/stdout
+#
+#  This component is used when examining a diff of type "status".
+#  It shows an overview of the run, including the exit status and
+#  the stdout/stderr.  This helps to visualize unexpected failures,
+#  and is also useful for negative testing, where tests are expected
+#  to fail but should show consistent error messages.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require RapptureGUI
+
+namespace eval Rappture::Tester { # forward declaration }
+
+option add *RunView.headingFont {Arial -12 bold} widgetDefault
+option add *RunView.infoFont {Arial -12} widgetDefault
+option add *RunView.codeFont {Courier -12} widgetDefault
+option add *RunView.addedBackground #ccffcc widgetDefault
+option add *RunView.deletedBackground #ffcccc widgetDefault
+
+itcl::class Rappture::Tester::RunView {
+    inherit itk::Widget 
+
+    itk_option define -testobj testObj TestObj ""
+    itk_option define -showdiffs showDiffs ShowDiffs "off"
+
+    itk_option define -addedbackground addedBackground Background ""
+    itk_option define -deletedbackground deletedBackground Background ""
+    itk_option define -infofont infoFont Font ""
+    itk_option define -codefont codeFont Font ""
+
+    constructor {args} { # defined later }
+
+    protected method _reload {}
+
+    private variable _dispatcher ""  ;# dispatcher for !events
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::RunView::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !reload
+    $_dispatcher dispatch $this !reload "[itcl::code $this _reload]; list"
+
+    itk_component add overview {
+        frame $itk_interior.overview
+    }
+    pack $itk_component(overview) -fill x
+
+    # run failure icon on the left-hand side
+    itk_component add icon {
+        label $itk_component(overview).icon -image [Rappture::icon fail64]
+    }
+    grid $itk_component(icon) -row 0 -rowspan 6 -column 0 \
+        -sticky ne -padx {0 20}
+
+    # create label/value for "status" parameter
+    itk_component add lstatus {
+        label $itk_component(overview).lstatus -text "Status:"
+    } {
+        usual
+        rename -font -headingfont headingFont Font
+    }
+    grid $itk_component(lstatus) -row 0 -column 1 -sticky e
+
+    itk_component add vstatus {
+        label $itk_component(overview).vstatus -justify left -anchor w
+    } {
+        usual
+        rename -font -codefont codeFont Font
+    }
+    grid $itk_component(vstatus) -row 0 -column 2 -sticky w
+
+    itk_component add lstatus2 {
+        label $itk_component(overview).lstatus2 -text "Got status:"
+    } {
+        usual
+        rename -font -headingfont headingFont Font
+    }
+    grid $itk_component(lstatus2) -row 0 -column 1 -sticky e
+
+    itk_component add vstatus2 {
+        label $itk_component(overview).vstatus2 -justify left -anchor w
+    } {
+        usual
+        rename -font -codefont codeFont Font
+        rename -background -deletedbackground deletedBackground Background
+    }
+
+    # set up the layout to resize properly
+    grid columnconfigure $itk_component(overview) 2 -weight 1
+
+    # create an area to show the program output -- either as text or diffs
+    itk_component add body {
+        frame $itk_interior.body
+    }
+    pack $itk_component(body) -expand yes -fill both
+
+    # use this to show output text (-showdiffs no)
+    itk_component add output {
+        Rappture::Scroller $itk_component(body).scrl \
+            -xscrollmode auto -yscrollmode auto
+    }
+    itk_component add text {
+        text $itk_component(output).text -wrap none
+    }
+    $itk_component(output) contents $itk_component(text)
+
+    # use this to show output diffs (-showdiffs yes)
+    itk_component add diffs {
+        Rappture::Tester::StringDiffs $itk_component(body).diffs \
+            -title "Test output:" -title1 "Expected this:" -title2 "Got this:"
+    }
+
+    eval itk_initialize $args
+}
+
+itk::usual RunView {
+    keep -background -foreground -cursor
+    keep -headingfont -infofont -codefont
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _reload
+#
+# Called internally to load run information from the -testobj XML
+# definition.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::RunView::_reload {} {
+    set testobj $itk_option(-testobj)
+
+    # find the test output to show, or blank
+    if {$testobj ne ""} {
+        if {$itk_option(-showdiffs)} {
+            set st1 [$testobj getTestInfo output.status]
+            set st2 [$testobj getRunInfo output.status]
+            if {$st1 ne $st2} {
+                # show the difference in status
+                $itk_component(lstatus) configure -text "Expected status:"
+                $itk_component(vstatus) configure -text $st1
+                $itk_component(vstatus2) configure -text $st2
+
+                grid $itk_component(lstatus2) -row 1 -column 1 -sticky e
+                grid $itk_component(vstatus2) -row 1 -column 2 -sticky w
+            } else {
+                # show the status as an ordinary label
+                $itk_component(lstatus) configure -text "Status:"
+                $itk_component(vstatus) configure -text $st1
+                grid forget $itk_component(lstatus2) $itk_component(vstatus2)
+            }
+
+            set log1 [$testobj getTestInfo output.log]
+            set log2 [$testobj getRunInfo output.log]
+            if {$log1 ne $log2} {
+                # show the output as a diff
+                $itk_component(diffs) show $log1 $log2
+                pack forget $itk_component(output)
+                pack $itk_component(diffs) -expand yes -fill both
+            } else {
+                # show the output as ordinary text
+                $itk_component(text) configure -state normal
+                $itk_component(text) delete 1.0 end
+                $itk_component(text) insert end $log1
+                $itk_component(text) configure -state disabled
+                pack forget $itk_component(diffs)
+                pack $itk_component(output) -expand yes -fill both
+            }
+
+            return
+        }
+        # not showing diffs -- show the original test
+        set st1 [$testobj getTestInfo output.status]
+        $itk_component(lstatus) configure -text "Status:"
+        $itk_component(vstatus) configure -text $st1
+        grid forget $itk_component(lstatus2) $itk_component(vstatus2)
+
+        $itk_component(text) configure -state normal
+        $itk_component(text) delete 1.0 end
+        $itk_component(text) insert end [$testobj getTestInfo output.log]
+        $itk_component(text) configure -state disabled
+        pack forget $itk_component(diffs)
+        pack $itk_component(output) -expand yes -fill both
+        return
+    }
+
+    # if all else fails, blank everything out
+    $itk_component(lstatus) configure -text "Status:"
+    $itk_component(vstatus) configure -text ""
+    grid forget $itk_component(lstatus2) $itk_component(vstatus2)
+    pack forget $itk_component(output) $itk_component(diffs)
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTIONS
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Tester::RunView::testobj {
+    $_dispatcher event -idle !reload
+}
+itcl::configbody Rappture::Tester::RunView::showdiffs {
+    if {![string is boolean -strict $itk_option(-showdiffs)]} {
+        error "bad value \"$itk_option(-showdiffs)\": should be boolean"
+    }
+    $_dispatcher event -idle !reload
+}
Index: /tags/1.6.0/tester/scripts/statuslist.tcl
===================================================================
--- /tags/1.6.0/tester/scripts/statuslist.tcl	(revision 6168)
+++ /tags/1.6.0/tester/scripts/statuslist.tcl	(revision 6168)
@@ -0,0 +1,325 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: statuslist - display differences within a test
+#
+#  This is the list of differences shown for a particular test failure.
+#  Each line in this list shows an icon (error or warning) and some
+#  details about the difference.  When you mouse over any entry, it
+#  pops up a "View" button that will invoke the -viewcommand to pop up
+#  a more detailed comparison.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require RapptureGUI
+
+namespace eval Rappture::Tester { # forward declaration }
+
+option add *StatusList.font {Arial -12} widgetDefault
+option add *StatusList.titleFont {Arial -12 bold} widgetDefault
+option add *StatusList.subTitleFont {Arial -10} widgetDefault
+
+itcl::class Rappture::Tester::StatusEntry {
+    public variable title ""
+    public variable subtitle ""
+    public variable body ""
+    public variable help ""
+    public variable icon ""
+    public variable clientdata ""
+
+    constructor {args} { eval configure $args }
+}
+
+itcl::class Rappture::Tester::StatusList {
+    inherit itk::Widget 
+
+    itk_option define -font font Font ""
+    itk_option define -titlefont titleFont Font ""
+    itk_option define -subtitlefont subTitleFont Font ""
+    itk_option define -viewcommand viewCommand ViewCommand ""
+    itk_option define -selectbackground selectBackground Foreground ""
+
+    constructor {args} { # defined later }
+    destructor { # defined later }
+
+    public method insert {pos args}
+    public method delete {from {to ""}}
+    public method size {} { return [llength $_entries] }
+    public method get {pos args}
+    public method view {{index "current"}}
+
+    public method xview {args} {
+        return [eval $itk_component(listview) xview $args]
+    }
+    public method yview {args} {
+        return [eval $itk_component(listview) yview $args]
+    }
+
+    protected method _redraw {}
+    protected method _motion {y}
+
+    private variable _dispatcher ""  ;# dispatcher for !events
+    private variable _entries ""     ;# list of status entries
+    private variable _hover ""       ;# mouse is over item with this tag
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StatusList::constructor {args} {
+    Rappture::dispatcher _dispatcher
+    $_dispatcher register !redraw
+    $_dispatcher dispatch $this !redraw "[itcl::code $this _redraw]; list"
+
+    itk_component add listview {
+        canvas $itk_interior.lv -relief flat
+    } {
+        usual
+        keep -xscrollcommand -yscrollcommand
+    }
+    pack $itk_component(listview) -expand yes -fill both
+
+    # add binding so that each item reacts to mouseover events
+    bind $itk_component(listview) <Motion> [itcl::code $this _motion %y]
+
+    # add binding for double-click-to-open
+    bind $itk_component(listview) <Double-Button-1> [itcl::code $this view]
+
+    # this pops up on each entry
+    itk_component add view {
+        button $itk_interior.view -text "View"
+    } {
+        usual
+        rename -highlightbackground -selectbackground selectBackground Foreground
+    }
+
+    eval itk_initialize $args
+}
+
+itk::usual StatusList {
+    keep -background -foreground -cursor
+    keep -selectbackground
+    keep -font -titlefont -subtitlefont
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StatusList::destructor {} {
+    delete 0 end
+}
+
+# ----------------------------------------------------------------------
+# USAGE: insert <pos> ?-option value -option value ...?
+#
+# Inserts a new entry into the list at the given <pos>.  The options
+# are those recognized by a StatusEntry object.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StatusList::insert {pos args} {
+    set entry [eval Rappture::Tester::StatusEntry #auto $args]
+    set _entries [linsert $_entries $pos $entry]
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: delete <pos> ?<toPos>?
+#
+# Deletes a single entry or a range of entries from the list displayed
+# in this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StatusList::delete {pos {to ""}} {
+    if {$to eq ""} {
+        set to $pos
+    }
+    foreach obj [lrange $_entries $pos $to] {
+        itcl::delete object $obj
+    }
+    set _entries [lreplace $_entries $pos $to]
+    $_dispatcher event -idle !redraw
+}
+
+# ----------------------------------------------------------------------
+# USAGE: get <pos> ?-key?
+#
+# Queries information about a particular entry at index <pos>.  With
+# no extra args, it returns a list of "-key value -key value ..."
+# representing all of the data about that entry.  Otherwise, the value
+# for a particular -key can be requested.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StatusList::get {pos {option ""}} {
+    set obj [lindex $_entries $pos]
+    if {$obj eq ""} {
+        return ""
+    }
+    if {$option eq ""} {
+        set vlist ""
+        foreach opt [$obj configure] {
+            lappend vlist [lindex $opt 0] [lindex $opt end]
+        }
+        return $vlist
+    }
+    return [$obj cget $option]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: view ?<index>?
+#
+# Handles the action of clicking the "View" button on items in the
+# status list.  Invokes the -viewcommand to pop up a more detailed
+# view of the item.  Additional details about the item are appended
+# onto the command as a list of options and values.  These include
+# the integer -index for the position of the selected item, along
+# with details defined when the item was inserted into the list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StatusList::view {{index "current"}} {
+    if {$index eq "current"} {
+        set index $_hover
+    }
+    if {[string length $itk_option(-viewcommand)] > 0
+          && [string is integer -strict $index]} {
+
+        set obj [lindex $_entries $index]
+        set vlist ""
+        if {$obj ne ""} {
+            foreach opt [$obj configure] {
+                lappend vlist [lindex $opt 0] [lindex $opt end]
+            }
+        }
+        uplevel #0 $itk_option(-viewcommand) -index $index $vlist
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _redraw
+#
+# Used internally to update the detailed list of items maintained
+# by this widget.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StatusList::_redraw {} {
+    set c $itk_component(listview)
+    $c delete all
+
+    # figure out the maximum size of all icons
+    set iw 0
+    set ih 0
+    foreach obj $_entries {
+        set icon [$obj cget -icon]
+        if {$icon ne ""} {
+            if {[image width $icon] > $iw} { set iw [image width $icon] }
+            if {[image height $icon] > $ih} { set ih [image height $icon] }
+        }
+    }
+
+    set tlineh [font metrics $itk_option(-titlefont) -linespace]
+    set stlineh [font metrics $itk_option(-subtitlefont) -linespace]
+
+    set x0 2
+    set y0 2
+    set n 0
+    foreach obj $_entries {
+        set tag "entry$n"
+
+        set icon [$obj cget -icon]
+        set iconh 0
+        if {$icon ne ""} {
+            $c create image [expr {$x0+$iw}] $y0 -anchor ne -image $icon \
+                -tags [list $tag main]
+            set iconh [image height $icon]
+        }
+        set x1 [expr {$x0+$iw+6}]
+        set y1 $y0
+
+        set title [$obj cget -title]
+        if {$title ne ""} {
+            $c create text [expr {$x1-4}] $y1 -anchor nw -text $title \
+                -font $itk_option(-titlefont) -tags [list $tag main]
+            set y1 [expr {$y1+$tlineh+2}]
+        }
+
+        set subtitle [$obj cget -subtitle]
+        if {$subtitle ne ""} {
+            $c create text $x1 $y1 -anchor nw -text $subtitle \
+                -font $itk_option(-subtitlefont) -tags [list $tag main]
+            set y1 [expr {$y1+$stlineh+2}]
+        }
+
+        set body [$obj cget -body]
+        if {$body ne ""} {
+            # a little space between the title/subtitle and the body
+            if {$y1 != $y0} { incr y1 4 }
+
+            set id [$c create text $x1 $y1 -anchor nw -text $body \
+                -font $itk_option(-font) -tags [list $tag main]]
+
+            foreach {tx0 ty0 tx1 ty1} [$c bbox $id] break
+            set y1 [expr {$y1 + ($ty1-$ty0)}]
+        }
+
+        # make sure that y1 is at the bottom of the icon too
+        if {$y1 < $y0+$iconh+2} {
+            set y1 [expr {$y0+$iconh+2}]
+        }
+
+        # make a background selection rectangle
+        set id [$c create rectangle 0 [expr {$y0-2}] 1000 $y1 \
+            -outline "" -fill "" -tags [list allbg $tag:bg]]
+        $c lower $id
+
+        set y0 [expr {$y1+10}]
+        incr n
+    }
+
+    # set the scrolling region to the "main" part (no bg boxes)
+    set x1 0; set y1 0
+    foreach {x0 y0 x1 y1} [$c bbox main] break
+    $c configure -scrollregion [list 0 0 [expr {$x1+4}] [expr {$y1+4}]]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _motion <y>
+#
+# Called internally when the user moves the mouse over an item in the
+# status list that shows specific test failures.  Highlights the item
+# and posts a "View" button on the right-hand side of the list.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StatusList::_motion {y} {
+    set c $itk_component(listview)
+
+    # translate the screen y to the canvas y (may be scrolled down)
+    set y [$c canvasy $y]
+
+    set index ""
+    foreach id [$c find overlapping 10 $y 10 $y] {
+        foreach tag [$c gettags $id] {
+            if {[regexp {^entry([0-9]+)} $tag match n]} {
+                set index $n
+                break
+            }
+        }
+        if {$index ne ""} {
+            break
+        }
+    }
+
+    if {$index ne $_hover} {
+        $c itemconfigure allbg -fill ""
+        $c delete viewbtn
+
+        if {$index ne ""} {
+            set tag "entry$index:bg"
+            $c itemconfigure $tag -fill $itk_option(-selectbackground)
+
+            foreach {x0 y0 x1 y1} [$c bbox $tag] break
+            set w [winfo width $c]
+            $c create window [expr {$w-10}] [expr {($y0+$y1)/2}] \
+                -anchor e -window $itk_component(view) -tags viewbtn
+
+            $itk_component(view) configure \
+                -command [itcl::code $this view $index]
+        }
+        set _hover $index
+    }
+}
Index: /tags/1.6.0/tester/scripts/stringdiffs.tcl
===================================================================
--- /tags/1.6.0/tester/scripts/stringdiffs.tcl	(revision 6168)
+++ /tags/1.6.0/tester/scripts/stringdiffs.tcl	(revision 6168)
@@ -0,0 +1,260 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: stringdiffs - show diff info between two strings
+#
+#  This component is used when examining the details of a particular
+#  diff.  It shows two strings with either inline or side-by-side
+#  diffs.
+# ======================================================================
+#  AUTHOR:  Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require RapptureGUI
+
+namespace eval Rappture::Tester { # forward declaration }
+
+option add *StringDiffs.titleFont {Arial -12 bold} widgetDefault
+option add *StringDiffs.bodyFont {Courier -12} widgetDefault
+option add *StringDiffs.bodyBackground white widgetDefault
+
+itcl::class Rappture::Tester::StringDiffs {
+    inherit itk::Widget 
+
+    itk_option define -title title Title ""
+    itk_option define -title1 title1 Title1 ""
+    itk_option define -title2 title2 Title2 ""
+
+    constructor {args} { # defined later }
+    method show {v1 v2}
+
+    protected method _yview {args}
+    protected method _ysbar {args}
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StringDiffs::constructor {args} {
+    # viewer for inline diffs
+    itk_component add inline {
+        frame $itk_interior.inline
+    }
+
+    itk_component add title {
+        label $itk_component(inline).title -justify left -anchor w
+    } {
+        usual
+        rename -font -titlefont titleFont Font
+    }
+    pack $itk_component(title) -side top -fill x
+
+    itk_component add scrl {
+        Rappture::Scroller $itk_component(inline).scrl \
+            -xscrollmode auto -yscrollmode auto
+    }
+    pack $itk_component(scrl) -expand yes -fill both
+
+    itk_component add body {
+        Rappture::Diffview $itk_component(scrl).diffs \
+            -highlightthickness 0 \
+            -diff 1->2 -layout inline
+    } {
+        keep -foreground -cursor
+        keep -addedbackground -addedforeground
+        keep -deletedbackground -deletedforeground -overstrike
+        keep -changedbackground -changedforeground
+        rename -background -bodybackground bodyBackground Background
+        rename -font -bodyfont bodyFont Font
+    }
+    $itk_component(scrl) contents $itk_component(body)
+
+    # viewer for side-by-side diffs
+    itk_component add sidebyside {
+        frame $itk_interior.sbys
+    }
+
+    itk_component add title1 {
+        label $itk_component(sidebyside).title1 -justify left -anchor w
+    } {
+        usual
+        rename -font -titlefont titleFont Font
+    }
+    itk_component add body1 {
+        Rappture::Diffview $itk_component(sidebyside).s1 \
+            -highlightthickness 0 \
+            -diff 2->1 -layout sidebyside
+    } {
+        keep -background -foreground -cursor
+        keep -addedbackground -addedforeground
+        keep -deletedbackground -deletedforeground -overstrike
+        keep -changedbackground -changedforeground
+        rename -background -bodybackground bodyBackground Background
+        rename -font -bodyfont bodyFont Font
+    }
+    itk_component add xsbar1 {
+        scrollbar $itk_component(sidebyside).xsbar1 -orient horizontal \
+            -command [list $itk_component(body1) xview]
+    }
+
+    itk_component add title2 {
+        label $itk_component(sidebyside).title2 -justify left -anchor w
+    } {
+        usual
+        rename -font -titlefont titleFont Font
+    }
+    itk_component add body2 {
+        Rappture::Diffview $itk_component(sidebyside).s2 \
+            -highlightthickness 0 \
+            -diff 1->2 -layout sidebyside
+    } {
+        keep -background -foreground -cursor
+        keep -addedbackground -addedforeground
+        keep -deletedbackground -deletedforeground -overstrike
+        keep -changedbackground -changedforeground
+        rename -background -bodybackground bodyBackground Background
+        rename -font -bodyfont bodyFont Font
+    }
+    itk_component add xsbar2 {
+        scrollbar $itk_component(sidebyside).xsbar2 -orient horizontal \
+            -command [list $itk_component(body2) xview]
+    }
+
+    itk_component add ysbar {
+        scrollbar $itk_component(sidebyside).ysbar -orient vertical \
+            -command [itcl::code $this _yview]
+    }
+    $itk_component(body1) configure \
+        -xscrollcommand [list $itk_component(xsbar1) set] \
+        -yscrollcommand [itcl::code $this _ysbar body1]
+    $itk_component(body2) configure \
+        -xscrollcommand [list $itk_component(xsbar2) set] \
+        -yscrollcommand [itcl::code $this _ysbar body2]
+
+    grid $itk_component(title1) -row 0 -column 0 -sticky nsew
+    grid $itk_component(body1) -row 1 -column 0 -sticky nsew
+    grid $itk_component(xsbar1) -row 2 -column 0 -sticky ew
+    grid $itk_component(ysbar) -row 1 -column 1 -sticky ns
+    grid $itk_component(title2) -row 0 -column 2 -sticky nsew
+    grid $itk_component(body2) -row 1 -column 2 -sticky nsew
+    grid $itk_component(xsbar2) -row 2 -column 2 -sticky ew
+    grid columnconfigure $itk_component(sidebyside) 0 -weight 1
+    grid columnconfigure $itk_component(sidebyside) 2 -weight 1
+    grid rowconfigure $itk_component(sidebyside) 1 -weight 1
+
+    eval itk_initialize $args
+}
+
+itk::usual StringDiffs {
+    keep -background -foreground -cursor
+    keep -titlefont -bodyfont
+}
+
+# ----------------------------------------------------------------------
+# USAGE: show <v1> <v2>
+#
+# Loads two values into the viewer and shows their differences.
+# If the strings are short, the diffs are shown inline.  Otherwise,
+# they are show with side-by-side viewers.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StringDiffs::show {v1 v2} {
+    #
+    # HACK ALERT!  The Diffview widget doesn't handle tabs at all.
+    #   We'll convert all tabs to a few spaces until we get a chance
+    #   to fix it properly.
+    #
+    set v1 [string map [list \t "   "] $v1]
+    set v2 [string map [list \t "   "] $v2]
+
+    #
+    # Figure out whether to show inline diffs or side-by-side.
+    # If the strings are short, it looks better inline.  Otherwise,
+    # use side-by-side.
+    #
+    foreach w [pack slaves $itk_interior] {
+        pack forget $w
+    }
+    if {[llength [split $v1 \n]] > 10 || [llength [split $v2 \n]] > 10} {
+        set which "sidebyside"
+    } else {
+        set which "inline"
+    }
+    pack $itk_component($which) -expand yes -fill both
+
+    switch -- $which {
+        inline {
+            $itk_component(body) text 1 $v1
+            $itk_component(body) text 2 $v2
+            $itk_component(body1) text 1 ""
+            $itk_component(body1) text 2 ""
+            $itk_component(body2) text 1 ""
+            $itk_component(body2) text 2 ""
+        }
+        sidebyside {
+            $itk_component(body1) text 1 $v1
+            $itk_component(body1) text 2 $v2
+            $itk_component(body2) text 1 $v1
+            $itk_component(body2) text 2 $v2
+            $itk_component(body) text 1 ""
+            $itk_component(body) text 2 ""
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _yview <arg> <arg>...
+#
+# Called whenever the scrollbar changes the y-view of the diffs.
+# Sends the new command along to both views so they are aligned.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StringDiffs::_yview {args} {
+    eval $itk_component(body1) yview $args
+    eval $itk_component(body2) yview $args
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _ysbar <whichChanged> <arg> <arg>...
+#
+# Called whenever the y-view of one widget changes.  Copies the 
+# current view from the <whichChanged> widget to the other side,
+# and updates the bubble to display the correct view.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::StringDiffs::_ysbar {which args} {
+    switch -- $which {
+        body1 {
+            set pos [lindex [$itk_component(body1) yview] 0]
+            $itk_component(body2) yview moveto $pos
+        }
+        body2 {
+            set pos [lindex [$itk_component(body2) yview] 0]
+            $itk_component(body1) yview moveto $pos
+        }
+    }
+    eval $itk_component(ysbar) set $args
+}
+
+# ----------------------------------------------------------------------
+# CONFIGURATION OPTIONS: -title -title1 -title2
+# ----------------------------------------------------------------------
+itcl::configbody Rappture::Tester::StringDiffs::title {
+    # if there is no -title for inline diffs, use -title1
+    if {$itk_option(-title) eq ""} {
+        $itk_component(title) configure -text $itk_option(-title1)
+    } else {
+        $itk_component(title) configure -text $itk_option(-title)
+    }
+}
+
+itcl::configbody Rappture::Tester::StringDiffs::title1 {
+    # if there is no -title for inline diffs, use -title1
+    if {$itk_option(-title) eq ""} {
+        $itk_component(title) configure -text $itk_option(-title1)
+    }
+    $itk_component(title1) configure -text $itk_option(-title1)
+}
+
+itcl::configbody Rappture::Tester::StringDiffs::title2 {
+    $itk_component(title2) configure -text $itk_option(-title2)
+}
Index: /tags/1.6.0/tester/scripts/test.tcl
===================================================================
--- /tags/1.6.0/tester/scripts/test.tcl	(revision 6168)
+++ /tags/1.6.0/tester/scripts/test.tcl	(revision 6168)
@@ -0,0 +1,641 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: test - run a test and query the results
+#
+#  Encapsulates the testing logic, to keep it isolated from the rest of
+#  the tester GUI.  Constructor requires the location of the tool.xml
+#  for the new version, and the test xml file containing the golden set
+#  of results. 
+# ======================================================================
+#  AUTHOR:  Ben Rafferty, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+
+namespace eval Rappture::Tester { #forward declaration }
+
+itcl::class Rappture::Tester::Test {
+    public variable notifycommand ""
+
+    constructor {tool testxml args} { #defined later }
+    destructor { #defined later }
+
+    public method getResult {}
+    public method getTestInfo {args}
+    public method getRunInfo {args}
+    public method getDiffs {args}
+
+    public method getTestobj {}
+    public method getTestxml {}
+
+    public method run {args}
+    public method abort {}
+    public method regoldenize {}
+
+    private variable _toolobj ""  ;# Rappture::Tool for tool being tested
+    private variable _testxml ""  ;# XML file for test case
+    private variable _testobj ""  ;# Rappture::Library object for _testxml
+
+    private variable _result "?"  ;# current status of this test
+    private variable _runobj ""   ;# results from last run
+    private variable _diffs ""    ;# diffs with respect to _runobj
+
+    private method _setWaiting {{newval ""}}
+    private method _setResult {name}
+    private method _computeDiffs {obj1 obj2 args}
+    private method _buildFailure {str}
+
+    # use this to add tests to the "run" queue
+    public proc queue {op args}
+
+    # useful helper function -- looks for val among choices
+    public proc oneof {choices val} {
+        return [expr {[lsearch -exact $choices $val] >= 0}]
+    }
+
+    private common _queue       ;# queue of objects waiting to run
+    set _queue(tests) ""        ;# list of tests in the queue
+    set _queue(pending) ""      ;# after event for "next" call
+    set _queue(running) ""      ;# test object currently running
+    set _queue(outputcmd) ""    ;# callback for reporting output
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::constructor {toolobj testxml args} {
+    set _toolobj $toolobj
+    set _testxml $testxml
+    set _testobj [Rappture::library $testxml]
+
+    eval configure $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::destructor {} {
+    itcl::delete object $_testobj
+    # runobj can point to testobj if the test has just been
+    # regoldenized.  Don't try to delete twice.
+    if {$_runobj ne "" && $_runobj ne $_testobj} {
+        itcl::delete object $_runobj
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: getResult
+#
+# Returns the result of the test:
+#   ? ...... test hasn't been run yet
+#   Pass ... test ran recently and passed
+#   Fail ... test ran recently and failed
+#   Error ... test ran recently and run failed with an error
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::getResult {} {
+    return $_result
+}
+
+# ----------------------------------------------------------------------
+# USAGE: getTestInfo <path>
+# USAGE: getTestInfo children <path>
+# USAGE: getTestInfo element ?-as type? <path>
+# 
+# Returns info about the Test case at the specified <path> in the XML.
+# If the <path> is missing or misspelled, this method returns ""
+# instead of an error.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::getTestInfo {args} {
+    if {[llength $args] == 1} {
+        set path [lindex $args 0]
+        return [$_testobj get $path]
+    }
+    return [eval $_testobj $args]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: getRunInfo <path>
+# USAGE: getRunInfo children <path>
+# USAGE: getRunInfo element ?-as type? <path>
+# 
+# Returns info about the most recent run at the specified <path> in
+# the XML.  If the <path> is missing or misspelled, this method returns
+# "" instead of an error.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::getRunInfo {args} {
+    if {[llength $args] == 1} {
+        set path [lindex $args 0]
+        return [$_runobj get $path]
+    }
+    return [eval $_runobj $args]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: run ?-output callback path value path value ...?
+#
+# Kicks off a new simulation and checks the results against the golden
+# set of results.  Any arguments passed in are passed along to the
+# Tool object managing the run.  This may include parameter override
+# values and a callback for partial output.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::run {args} {
+    # Delete existing library if rerun
+    if {$_runobj ne ""} {
+        itcl::delete object $_runobj
+        set _runobj ""
+        set _diffs ""
+    }
+
+    # copy inputs from the test into the run file
+    $_toolobj reset
+    foreach path [Rappture::entities -as path $_testobj input] {
+        if {[$_testobj element -as type $path.current] ne ""} {
+            lappend args $path [$_testobj get $path.current]
+        }
+    }
+
+    # run the test case...
+    _setResult "Running"
+    foreach {status result} [eval $_toolobj run $args] break
+
+    if {$status == 0} {
+        if {$result eq "ABORT"} {
+            _setResult "?"
+            return "aborted"
+        } elseif {[Rappture::library isvalid $result]} {
+            set _runobj $result
+
+            if {![oneof {0 ok} [$_testobj get output.status]]} {
+                # expected test to fail, but it didn't
+                set idiffs [_computeDiffs [$_toolobj xml object] $_runobj -in input]
+                set odiffs [_computeDiffs $_testobj $_runobj -what run]
+                set _diffs [concat $idiffs $odiffs]
+                _setResult "Fail"
+            } else {
+                set idiffs [_computeDiffs [$_toolobj xml object] $_testobj -in input]
+                set odiffs [_computeDiffs $_testobj $_runobj -in output]
+                set _diffs [concat $idiffs $odiffs]
+
+                # any differences from expected result mean test failed
+                if {[llength $_diffs] == 0} {
+                    _setResult "Pass"
+                } else {
+                    _setResult "Fail"
+                }
+            }
+            return "finished"
+        } else {
+            set _runobj [_buildFailure $result]
+            if {![oneof {0 ok} [$_testobj get output.status]]
+                  && [$_testobj get output.log] eq $result} {
+                _setResult "Pass"
+            } else {
+                set idiffs [_computeDiffs [$_toolobj xml object] $_runobj -in input]
+                set odiffs [_computeDiffs $_testobj $_runobj -what run]
+                set _diffs [concat $idiffs $odiffs]
+                _setResult "Fail"
+            }
+            return "finished"
+        }
+    } else {
+        set _runobj [_buildFailure $result]
+        if {![oneof {0 ok} [$_testobj get output.status]]
+              && [$_testobj get output.log] eq $result} {
+            _setResult "Pass"
+        } else {
+            set idiffs [_computeDiffs [$_toolobj xml object] $_runobj -in input]
+            set odiffs [_computeDiffs $_testobj $_runobj -what run]
+            set _diffs [concat $idiffs $odiffs]
+            _setResult "Fail"
+        }
+        return "finished"
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: abort
+#
+# Causes the current test kicked off by the "run" method to be aborted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::abort {} {
+    $_toolobj abort
+}
+
+# ----------------------------------------------------------------------
+# USAGE: regoldenize
+#
+# Regoldenize the test by overwriting the test xml containin the golden
+# results with the data in the runfile generated by the last run.  Copy
+# test label and description into the new file.  Update the test's
+# result attributes to reflect the changes. Throws an error if the test
+# has not been run.
+#
+# After regoldenizing, _testobj and _runobj will both refer to the same
+# library object, and the previous _runobj will be discarded.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::regoldenize {} {
+    if {$_runobj eq ""} {
+        error "no test result to goldenize"
+    }
+    $_runobj put test.label [$_testobj get test.label]
+    $_runobj put test.description [$_testobj get test.description]
+
+    set fid [open $_testxml w]
+    puts $fid "<?xml version=\"1.0\"?>"
+    puts $fid [$_runobj xml]
+    close $fid
+
+    itcl::delete object $_testobj
+    set _testobj $_runobj
+    set _runobj ""
+
+    set _diffs ""
+    _setResult Pass
+}
+
+# ----------------------------------------------------------------------
+# USAGE: getDiffs ?<path>?
+#
+# With no extra args, this returns a list of paths that differ between
+# the golden and new results--either because the data values are
+# different, or because elements are missing or their attributes have
+# changed.
+#
+# If a particular <path> is specified, then detailed diffs are returned
+# for that path.  This is useful for "structure" diffs, where many
+# things may be different within a single object.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::getDiffs {args} {
+    if {[llength $args] == 0} {
+        return $_diffs
+    } elseif {[llength $args] != 1} {
+        error "wrong # args: should be \"getDiffs ?path?\""
+    }
+
+    set path [lindex $args 0]
+    if {[string match input.* $path]} {
+        # if we're matching input, compare the original XML vs. the test
+        return [_computeDiffs [$_toolobj xml object] $_testobj -in $path -detail max]
+    }
+
+    # otherwise, compare the golden test vs. the test result
+    return [_computeDiffs $_testobj $_runobj -in $path -detail max]
+}
+
+# ----------------------------------------------------------------------
+# USAGE: getTestobj
+#
+# Returns a library object representing the test case.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::getTestobj {} {
+    return $_testobj
+}
+
+# ----------------------------------------------------------------------
+# USAGE: getTestxml
+#
+# Returns the name of the xml file representing the test case.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::getTestxml {} {
+    return $_testxml
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _setResult ?|Pass|Fail|Waiting|Running
+#
+# Used internally to change the state of this test case.  If there
+# is a -notifycommand script for this object, it is invoked to notify
+# an interested client that the object has changed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::_setResult {name} {
+    set _result $name
+    if {[string length $notifycommand] > 0} {
+        uplevel #0 $notifycommand $this
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _setWaiting ?boolean?
+#
+# Used to mark a Test as "waiting".  This usually happens when a test
+# is added to the queue, about to be run.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::_setWaiting {{newval ""}} {
+    if {$newval ne "" && [string is boolean $newval]} {
+        if {$newval} {
+            _setResult "Waiting"
+        } else {
+            _setResult "?"
+        }
+    }
+    return $_result
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _computeDiffs <xmlObj1> <xmlObj2> ?-in xxx? \
+#            ?-what value|attrs|run|all? ?-detail min|max?
+#
+# Used internally to compute differences between two different XML
+# objects.  This is normally used to look for differences between an
+# entire test case and a new run, but can also be used to look at
+# differences within a particular section or element via the -in flag.
+#
+# Returns a list of the following form:
+#     -what <diff> -path <path> -obj1 <xmlobj> -obj2 <xmlobj> \
+#           -v1 <value1> -v2 <value2>
+#
+#       where <diff> is one of:
+#         value - ....... element is missing from <xmlObj2>
+#         value c ....... element changed between <xmlObj1> and <xmlObj2>
+#         value + ....... element is missing from <xmlObj1>
+#         attrs c ....... attributes are different <xmlObj1> and <xmlObj2>
+#         type c ........ object types are different <xmlObj1> and <xmlObj2>
+#         attr - <path>.. attribute at <path> is missing from <xmlObj2>
+#         attr + <path>.. attribute at <path> is missing from <xmlObj1>
+#         attr c <path>.. attribute at <path> changed between objects
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::_computeDiffs {obj1 obj2 args} {
+    Rappture::getopts args params {
+        value -in output
+        value -what "attrs value"
+        value -detail min
+    }
+    if {$params(-what) == "all"} {
+        set params(-what) "attrs value run"
+    }
+
+    # handle any run output diffs first, so they appear at the top
+    # report this as one incident -- not separate reports for status/log
+    set rlist ""
+    if {[lsearch $params(-what) "run"] >= 0} {
+        set st1 [$obj1 get output.status]
+        set st2 [$obj2 get output.status]
+        if {$st1 ne $st2} {
+            # status changes are most serious
+            lappend rlist [list -what status -path output.status \
+                -obj1 $obj1 -obj2 $obj2]
+        } else {
+            set log1 [$obj1 get output.log]
+            set log2 [$obj2 get output.log]
+            if {$log1 ne $log2} {
+                # flag log changes instead if status agrees
+                lappend rlist [list -what status -path output.log \
+                    -obj1 $obj1 -obj2 $obj2]
+            }
+        }
+    }
+
+    # scan through the specified sections or paths
+    foreach elem $params(-in) {
+        if {[string first . $elem] >= 0} {
+            set v1paths $elem
+            set v2paths $elem
+        } else {
+            # query the values for all entities in both objects
+            set v1paths [Rappture::entities $obj1 $elem]
+            set v2paths [Rappture::entities $obj2 $elem]
+        }
+
+        # scan through values for obj1 and compare against obj2
+        foreach path $v1paths {
+            set details [list -path $path -obj1 $obj1 -obj2 $obj2]
+
+            set i [lsearch -exact $v2paths $path]
+            if {$i < 0} {
+                # missing from obj2
+                lappend rlist [linsert $details 0 -what "value -"]
+            } else {
+                foreach part $params(-what) {
+                    switch -- $part {
+                      value {
+                        set val1 [Rappture::objects::import $obj1 $path]
+                        set val2 [Rappture::objects::import $obj2 $path]
+                        lappend details -val1 $val1 -val2 $val2
+
+                        if {$val1 eq "" || $val2 eq ""} {
+                            lappend rlist [linsert $details 0 -what "value c"]
+                        } elseif {[$val1 info class] != [$val2 info class]} {
+                            lappend rlist [linsert $details 0 -what "value c"]
+                        } elseif {[$val1 compare $val2] != 0} {
+                            lappend rlist [linsert $details 0 -what "value c"]
+                        } else {
+                            itcl::delete object $val1 $val2
+                        }
+                        # handled this comparison
+                        set v2paths [lreplace $v2paths $i $i]
+                      }
+                      attrs {
+                        set what [list structure $path]
+                        set type1 [$obj1 element -as type $path]
+                        set type2 [$obj2 element -as type $path]
+                        if {$type1 eq $type2} {
+                          set same yes
+                          if {[catch {Rappture::objects::get $type1 -attributes} alist]} {
+                              # oops! unknown object type
+                              lappend rlist [linsert $details 0 -what unkobj]
+                              set alist ""
+                          }
+                          foreach rec $alist {
+                              array set attr [lrange $rec 1 end]
+                              set apath $path.$attr(-path)
+                              set v1 [$obj1 get $apath]
+                              set v2 [$obj2 get $apath]
+                              set dt [linsert $details end -v1 $v1 -v2 $v2]
+
+                              if {$v2 eq "" && $v1 ne ""} {
+                                  # missing from obj2
+                                  if {$params(-detail) == "max"} {
+                                      lappend rlist [linsert $dt 0 -what [list attr - $attr(-path)]]
+                                  } else {
+                                      set same no
+                                      break
+                                  }
+                              } elseif {$v1 eq "" && $v2 ne ""} {
+                                  # missing from obj1
+                                  if {$params(-detail) == "max"} {
+                                      lappend rlist [linsert $dt 0 -what [list attr + $attr(-path)]]
+                                  } else {
+                                      set same no
+                                      break
+                                  }
+                              } elseif {$v1 ne $v2} {
+                                  # different from obj2
+                                  if {$params(-detail) == "max"} {
+                                      lappend rlist [linsert $dt 0 -what [list attr c $attr(-path)]]
+                                  } else {
+                                      set same no
+                                      break
+                                  }
+                              }
+                          }
+                          if {$params(-detail) == "min" && !$same} {
+                              lappend details -what attrs
+                              lappend rlist [linsert $dt 0 -what "attrs c"]
+                          }
+                        } else {
+                          lappend details -val1 $type1 -val2 $type2
+                          lappend rlist [linsert $details 0 -what "type c"]
+                        }
+                      }
+                      run {
+                        # do nothing -- already handled above
+
+                        # handled this comparison
+                        set v2paths [lreplace $v2paths $i $i]
+                      }
+                      default {
+                        error "bad part \"$part\": should be attrs, value, run"
+                      }
+                    }
+                }
+            }
+        }
+
+        # add any values left over in the obj2
+        foreach path $v2paths {
+            set details [list -path $path -obj1 $obj1 -obj2 $obj2]
+            lappend rlist [linsert $details 0 -what "value +"]
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _buildFailure <output>
+#
+# Returns a new Rappture::library object that contains a copy of the
+# original test with the given <output> and a failing status.  This
+# is used to represent the result of a test that aborts without
+# producing a valid run.xml file.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::_buildFailure {output} {
+    set info "<?xml version=\"1.0\"?>\n[$_testobj xml]"
+    set obj [Rappture::LibraryObj ::#auto $info]
+    $obj remove test
+
+    $obj put output.time [clock format [clock seconds]]
+    $obj put output.status failed
+    $obj put output.user $::tcl_platform(user)
+    $obj put output.log $output
+
+    return $obj
+}
+
+# ======================================================================
+# RUN QUEUE
+# ======================================================================
+# USAGE: queue add <testObj> <testObj>...
+# USAGE: queue clear ?<testObj> <testObj>...?
+# USAGE: queue status <command>
+# USAGE: queue next
+# USAGE: queue output <string>
+#
+# Used to manipulate the run queue for the program as a whole.
+#
+# The "queue add" option adds the given <testObj> objects to the run
+# queue.  As soon as an object is added to the queue, it is marked
+# "waiting".  When it runs, it is marked "running", and it finally
+# goes to the "pass" or "fail" state.  If an object is already in
+# the queue, then this operation does nothing.
+#
+# The "queue clear" option clears specific objects from the queue.
+# If no objects are specified, then it clears all remaining objects.
+#
+# The "queue status" option is used to set the callback for handling
+# output from runs.  This command is called two ways:
+#    command start <testObj>
+#    command add <testObj> "string of output"
+#
+# The "queue next" option is used internally to run the next object
+# in the queue.  The "queue output" option is also used internally
+# to handle the output coming back from a run.  The output gets
+# shuttled along to the callback specified by "queue status".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::Test::queue {option args} {
+    switch -- $option {
+        add {
+            # add these tests to the run queue
+            foreach obj $args {
+                if {[catch {$obj isa Rappture::Tester::Test} valid] || !$valid} {
+                    error "bad value \"$obj\": should be Test object"
+                }
+                if {[lsearch $_queue(tests) $obj] < 0} {
+                    $obj _setWaiting 1
+                    lappend _queue(tests) $obj
+                }
+            }
+            if {$_queue(running) eq "" && $_queue(pending) eq ""} {
+                set _queue(pending) [after idle \
+                    Rappture::Tester::Test::queue next]
+            }
+        }
+        clear {
+            # remove these tests from the run queue
+            foreach obj $args {
+                if {[catch {$obj isa Rappture::Tester::Test} valid] || !$valid} {
+                    error "bad value \"$obj\": should be Test object"
+                }
+
+                # remove the test from the queue
+                set i [lsearch $_queue(tests) $obj]
+                if {$i >= 0} {
+                    set _queue(tests) [lreplace $_queue(tests) $i $i]
+                }
+
+                # mark object as no longer "waiting"
+                if {[$obj _setWaiting]} {
+                    $obj _setWaiting 0
+                }
+            }
+        }
+        status {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"status command\""
+            }
+            set _queue(outputcmd) [lindex $args 0]
+        }
+        next {
+            set _queue(pending) ""
+
+            # get the next object from the queue
+            set obj [lindex $_queue(tests) 0]
+            set _queue(tests) [lrange $_queue(tests) 1 end]
+
+            if {$obj ne ""} {
+                set _queue(running) $obj
+                # invoke the callback to signal start of a run
+                if {[string length $_queue(outputcmd)] > 0} {
+                    uplevel #0 $_queue(outputcmd) start $obj
+                }
+
+                # run the test
+                set callback "Rappture::Tester::Test::queue output"
+                set status [$obj run -output $callback]
+                set _queue(running) ""
+
+                if {$status == "aborted"} {
+                    # if the test was aborted, clear any waiting tests
+                    Rappture::Tester::Test::queue clear
+                } elseif {[string match failed:* $status]} {
+                    bgerror $status
+                }
+
+                # set up to run the next test in the queue
+                set _queue(pending) [after idle \
+                    Rappture::Tester::Test::queue next]
+            }
+        }
+        output {
+            if {[llength $args] != 1} {
+                error "wrong # args: should be \"output string\""
+            }
+            if {[string length $_queue(outputcmd)] > 0} {
+                uplevel #0 $_queue(outputcmd) add $_queue(running) $args
+            }
+        }
+        default {
+            error "bad option \"$option\": should be add, clear, status, output, next"
+        }
+    }
+}
Index: /tags/1.6.0/tester/scripts/testtree.tcl
===================================================================
--- /tags/1.6.0/tester/scripts/testtree.tcl	(revision 6168)
+++ /tags/1.6.0/tester/scripts/testtree.tcl	(revision 6168)
@@ -0,0 +1,314 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: testtree - provides hierarchical view of regression tests
+#
+#  Used to display a collapsible view of all tests found in the test
+#  directory.  In each test xml, a label must be located at the path 
+#  test.label.  Test labels may be organized hierarchically by using 
+#  dots to separate components of the test label.  The directory
+#  containing a set of test xml files, as well as the location of the
+#  new tool.xml must be given as configuration options.
+# ======================================================================
+#  AUTHOR:  Ben Rafferty, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT
+package require Rappture
+
+namespace eval Rappture::Tester::TestTree { #forward declaration }
+
+option add *TestTree.font \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *TestTree.codeFont \
+    -*-courier-medium-r-normal-*-12-* widgetDefault
+option add *TestTree.textFont \
+    -*-helvetica-medium-r-normal-*-12-* widgetDefault
+option add *TestTree.boldTextFont \
+    -*-helvetica-bold-r-normal-*-12-* widgetDefault
+
+itcl::class Rappture::Tester::TestTree {
+    inherit itk::Widget 
+
+    constructor {args} { #defined later }
+    destructor { #defined later }
+
+    public method add {args}
+    public method clear {}
+    public method curselection {}
+
+    protected method _getLeaves {{id 0}}
+    protected method _getTest {id}
+    protected method _refresh {args}
+
+    # add support for a spinning icon
+    proc spinner {op}
+
+    private common spinner
+    set spinner(frames) 8
+    set spinner(current) 0
+    set spinner(pending) ""
+    set spinner(uses) 0
+
+    for {set n 0} {$n < $spinner(frames)} {incr n} {
+        set spinner(frame$n) [Rappture::icon circle-ball[expr {$n+1}]]
+    }
+    set spinner(image) [image create photo -width [image width $spinner(frame0)] -height [image height $spinner(frame0)]]
+}
+ 
+itk::usual TestTree {
+    keep -background -foreground -font
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestTree::constructor {args} {
+    itk_component add scrollbars {
+        Rappture::Scroller $itk_interior.scroller \
+            -xscrollmode auto -yscrollmode auto
+    }
+    pack $itk_component(scrollbars) -expand yes -fill both
+
+    itk_component add treeview {
+        blt::treeview $itk_component(scrollbars).treeview -separator | \
+            -autocreate true -selectmode multiple \
+            -icons [list [Rappture::icon folder] [Rappture::icon folder2]] \
+            -activeicons ""
+    } {
+        keep -foreground -font -cursor
+        keep -selectcommand
+    }
+    $itk_component(treeview) column insert 0 result -title "Result"
+    $itk_component(treeview) column insert end test -hide yes
+    $itk_component(treeview) column configure treeView -justify left -title "Test Case"
+    $itk_component(treeview) sort configure -mode dictionary -column treeView
+    $itk_component(treeview) sort auto yes
+
+    $itk_component(scrollbars) contents $itk_component(treeview)
+
+    itk_component add bottomBar {
+        frame $itk_interior.bottomBar
+    }
+    pack $itk_component(bottomBar) -fill x -side bottom -pady {8 0}
+
+    itk_component add selLabel {
+        label $itk_component(bottomBar).selLabel -anchor w -text "Select:"
+    }
+    pack $itk_component(selLabel) -side left
+
+    itk_component add bSelectAll {
+        button $itk_component(bottomBar).bSelectAll -text "All" \
+            -command "$itk_component(treeview) selection set 0 end" 
+    }
+    pack $itk_component(bSelectAll) -side left
+
+    itk_component add bSelectNone {
+        button $itk_component(bottomBar).bSelectNone -text "None" \
+            -command "$itk_component(treeview) selection clearall"
+    }
+    pack $itk_component(bSelectNone) -side left
+
+
+    eval itk_initialize $args
+}
+
+# ----------------------------------------------------------------------
+# DESTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestTree::destructor {} {
+    clear
+}
+
+# ----------------------------------------------------------------------
+# USAGE: add ?<testObj> <testObj> ...?
+#
+# Adds one or more Test objects to the tree shown in this viewer.
+# Once added, these objects become property of this widget and
+# are destroyed when the widget is cleared or deleted.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestTree::add {args} {
+    set icon [Rappture::icon testcase]
+
+    foreach obj $args {
+        if {[catch {$obj isa Rappture::Tester::Test} valid] || !$valid} {
+            error "bad value \"$obj\": should be Test object"
+        }
+
+        # add each Test object into the tree
+        set testpath [$obj getTestInfo test.label]
+        set n [$itk_component(treeview) insert end $testpath \
+             -data [list test $obj] -icons [list $icon $icon]]
+
+        # tag this node so we can find it easily later
+        $itk_component(treeview) tag add $obj $n
+
+        # monitor state changes on the object
+        $obj configure -notifycommand [itcl::code $this _refresh]
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: clear
+#
+# Clears the contents of the tree so that it's completely empty.
+# All Test objects stored internally are destroyed.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestTree::clear {} {
+    foreach id [_getLeaves] {
+        itcl::delete object [_getTest $id]
+    }
+    $itk_component(treeview) delete 0
+}
+
+# ----------------------------------------------------------------------
+# USAGE: curselection
+#
+# Returns a list ids for all currently selected tests (leaf nodes) and 
+# the child tests of any currently selected branch nodes.  Tests can 
+# only be leaf nodes in the tree (the ids in the returned list will 
+# correspond to leaf nodes only).
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestTree::curselection {} {
+    set rlist ""
+    foreach id [$itk_component(treeview) curselection] {
+        foreach node [_getLeaves $id] {
+            catch {unset data}
+            array set data [$itk_component(treeview) entry cget $node -data]
+
+            if {[lsearch -exact $rlist $data(test)] < 0} {
+                lappend rlist $data(test)
+            }
+        }
+    }
+    return $rlist
+}
+
+# ----------------------------------------------------------------------
+# USAGE _getTest <nodeId>
+#
+# Returns the test object associated with a given treeview node id.  If
+# no id is given, return the test associated with the currently focused
+# node.  Returns empty string if the given id / focused node is a 
+# branch node.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestTree::_getTest {id} {
+    if {[lsearch -exact [_getLeaves] $id] < 0} {
+        # Return empty string if branch node selected
+        return ""
+    }
+    array set darray [$itk_component(treeview) entry cget $id -data]
+    return $darray(test)
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _refresh ?<testObj> <testObj> ...?
+#
+# Invoked whenever the state of a <testObj> changes.  Finds the
+# corresponding entry in the tree and updates the "Result" column
+# to show the new status.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestTree::_refresh {args} {
+    foreach obj $args {
+        set n [$itk_component(treeview) index $obj]
+        if {$n ne ""} {
+            catch {unset data}
+            array set data [$itk_component(treeview) entry cget $n -data]
+
+            # getting rid of a spinner? then drop it
+            if {[info exists data(result)]
+                  && $data(result) == "@$spinner(image)"} {
+                spinner drop
+            }
+
+            # plug in the new icon
+            switch -- [$obj getResult] {
+                Pass    { set data(result) "@[Rappture::icon pass16]" }
+                Fail    { set data(result) "@[Rappture::icon fail16]" }
+                Waiting { set data(result) "@[Rappture::icon wait16]" }
+                Running { set data(result) "@[spinner use]" }
+                default { set data(result) "" }
+            }
+            $itk_component(treeview) entry configure $n -data [array get data]
+
+            # if the node that's changed is selected, invoke the
+            # -selectcommand code so the GUI will react to the new state
+            if {[$itk_component(treeview) selection includes $n]} {
+                set cmd [$itk_component(treeview) cget -selectcommand]
+                if {[string length $cmd] > 0} {
+                    uplevel #0 $cmd
+                }
+            }
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _getLeaves ?id?
+#
+# Returns a list of ids for all tests contained in the tree.  If an
+# optional id is given as an input parameter, then the returned list
+# will contain the ids of all tests that are descendants of the given
+# id.  Tests can only be leaf nodes.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestTree::_getLeaves {{id 0}} {
+    set clist [$itk_component(treeview) entry children $id]
+    if {$clist == "" && $id == 0} {
+        # Return nothing if tree is empty 
+        return ""
+    }
+    if {$clist == ""} {
+        return $id
+    }
+    set tests [list]
+    foreach child $clist {
+        set tests [concat $tests [_getLeaves $child]]
+    }
+    return $tests
+}
+
+# ----------------------------------------------------------------------
+# USAGE: spinner use|drop|next
+#
+# Used to update the spinner icon that represents running test cases.
+# The "use" option returns the spinner icon and starts the animation,
+# if it isn't already running.  The "drop" operation lets go of the
+# spinner.  If nobody is using it, the animation stops.  The "next"
+# option is used internally to change the animation to the next frame.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestTree::spinner {op} {
+    switch -- $op {
+        use {
+            if {$spinner(pending) == ""} {
+                set spinner(current) 0
+                set spinner(pending) [after 100 Rappture::Tester::TestTree::spinner next]
+            }
+            incr spinner(uses)
+            return $spinner(image)
+        }
+        drop {
+            if {[incr spinner(uses) -1] <= 0} {
+                after cancel $spinner(pending)
+                set spinner(pending) ""
+                set spinner(uses) 0
+            }
+        }
+        next {
+            set n $spinner(current)
+            $spinner(image) copy $spinner(frame$n)
+
+            # go to the next frame
+            if {[incr spinner(current)] >= $spinner(frames)} {
+                set spinner(current) 0
+            }
+
+            # update again after a short delay
+            set spinner(pending) [after 100 Rappture::Tester::TestTree::spinner next]
+        }
+        default {
+            error "bad option \"$op\": should be use, drop, next"
+        }
+    }
+}
Index: /tags/1.6.0/tester/scripts/testview.tcl
===================================================================
--- /tags/1.6.0/tester/scripts/testview.tcl	(revision 6168)
+++ /tags/1.6.0/tester/scripts/testview.tcl	(revision 6168)
@@ -0,0 +1,274 @@
+# ----------------------------------------------------------------------
+#  COMPONENT: testview - display the results of a test
+#
+#  Top part of right hand side of the regression tester.  Displays an
+#  overview of selected test cases, and offers a button for running
+#  them.
+# ======================================================================
+#  AUTHOR:  Ben Rafferty, Purdue University
+#           Michael McLennan, Purdue University
+#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+#
+#  See the file "license.terms" for information on usage and
+#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ======================================================================
+package require Itk
+package require BLT 
+
+namespace eval Rappture::Tester::TestView { #forward declaration }
+
+option add *TestView.font {Arial -12} widgetDefault
+option add *TestView.titleFont {Arial -18 bold} widgetDefault
+option add *TestView.statusFont {Arial -12 italic} widgetDefault
+option add *TestView.statusPassColor black widgetDefault
+option add *TestView.statusFailColor red widgetDefault
+option add *TestView*descScroller.width 3i widgetDefault
+option add *TestView*descScroller.height 1i widgetDefault
+
+itcl::class Rappture::Tester::TestView {
+    inherit itk::Widget 
+
+    itk_option define -statuspasscolor statusPassColor StatusColor ""
+    itk_option define -statusfailcolor statusFailColor StatusColor ""
+    itk_option define -runcommand runCommand RunCommand ""
+
+    constructor {args} { #defined later }
+    public method show {args}
+
+    private method _doRun {}
+    private method _plural {n}
+
+    private variable _testobjs ""  ;# objects being displayed
+}
+
+# ----------------------------------------------------------------------
+# CONSTRUCTOR
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestView::constructor {args} {
+
+    # run button to run selected tests
+    itk_component add run {
+        button $itk_interior.run -text "Run" -padx 12 -pady 12 \
+            -command [itcl::code $this _doRun]
+    }
+    pack $itk_component(run) -side right -anchor n
+
+    # shows the big icon for test: pass/fail
+    itk_component add statusicon {
+        label $itk_interior.sicon
+    }
+    pack $itk_component(statusicon) -side left -anchor n
+
+    # shows the name of the test
+    itk_component add title {
+        label $itk_interior.title -anchor w
+    } {
+        usual
+        rename -font -titlefont titleFont Font
+    }
+    pack $itk_component(title) -side top -anchor w
+
+    # shows the status of the test: pass/fail
+    itk_component add statusmesg {
+        label $itk_interior.smesg -anchor w
+    } {
+        usual
+        rename -font -statusfont statusFont Font
+        ignore -foreground
+    }
+    pack $itk_component(statusmesg) -side top -anchor w
+
+    # for the longer text describing the test
+    itk_component add descScroller {
+        Rappture::Scroller $itk_interior.descScroller \
+            -xscrollmode auto -yscrollmode auto
+    }
+    pack $itk_component(descScroller) -expand yes -fill both
+
+    itk_component add description {
+        text $itk_component(descScroller).desc -height 1 \
+            -wrap word -relief flat
+    }
+    $itk_component(descScroller) contents $itk_component(description)
+
+    eval itk_initialize $args
+}
+
+itk::usual TestView {
+    keep -background -foreground -cursor
+    keep -font -titlefont -statusfont
+}
+
+# ----------------------------------------------------------------------
+# USAGE: show <testObj> <testObj> ...
+#
+# Loads one or more Test objects into the display.  When a single
+# object is shown, we can display more detail.  When several objects
+# are shown, we provide overview info.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestView::show {args} {
+    foreach obj $args {
+        if {[catch {$obj isa Test} valid] || !$valid} {
+            error "bad value \"$obj\": should be Test object"
+        }
+    }
+    set _testobjs $args
+
+    switch -- [llength $_testobjs] {
+        0 {
+            # If an empty string is passed in then clear everything
+            $itk_component(title) configure -text ""
+            $itk_component(statusicon) configure -image ""
+            $itk_component(statusmesg) configure -text ""
+            $itk_component(description) configure -state normal
+            $itk_component(description) delete 1.0 end
+            $itk_component(description) configure -state disabled
+            $itk_component(run) configure -state disabled
+        }
+        1 {
+            set obj [lindex $_testobjs 0]
+            switch [$obj getResult] {
+                ? {
+                    set smesg "Ready to run"
+                    set sicon [Rappture::icon test64]
+                    set color $itk_option(-statuspasscolor)
+                }
+                Pass {
+                    set smesg "Test passed"
+                    set sicon [Rappture::icon pass64]
+                    set color $itk_option(-statuspasscolor)
+                }
+                Fail {
+                    set smesg "Test failed"
+                    set sicon [Rappture::icon fail64]
+                    set color $itk_option(-statusfailcolor)
+                }
+                Running - Waiting {
+                    set smesg "Test waiting to run"
+                    set sicon [Rappture::icon wait64]
+                    set color $itk_option(-statuspasscolor)
+                }
+                default { error "unknown test state \"[$obj getResult]\"" }
+            }
+            set name [lindex [split [$obj getTestInfo test.label] |] end]
+            $itk_component(title) configure -text "Test: $name"
+            $itk_component(statusicon) configure -image $sicon
+            $itk_component(statusmesg) configure -text $smesg -foreground $color
+            $itk_component(description) configure -state normal
+            $itk_component(description) delete 1.0 end
+            set desc [string trim [$obj getTestInfo test.description]]
+            if {$desc eq ""} {
+                set desc "--"
+            }
+            $itk_component(description) insert 1.0 $desc
+            $itk_component(description) configure -state disabled
+            $itk_component(run) configure -state normal
+        }
+        default {
+            array set states { ? 0  Pass 0  Fail 0  Running 0  Waiting 0  total 0 }
+            foreach obj $_testobjs {
+                incr states(total)
+                incr states([$obj getResult])
+            }
+            if {$states(total) == 1} {
+                set thistest "This test"
+            } else {
+                set thistest "These tests"
+            }
+
+            $itk_component(title) configure \
+                -text [string totitle [_plural $states(total)]]
+
+            switch -glob -- $states(Pass)/$states(Fail)/$states(?) {
+                0/0/* {
+                    set smesg "Ready to run"
+                    set sicon [Rappture::icon test64]
+                    set color $itk_option(-statuspasscolor)
+                    set desc ""
+                }
+                */0/0 {
+                    set smesg "$thistest passed"
+                    set sicon [Rappture::icon pass64]
+                    set color $itk_option(-statuspasscolor)
+                    set desc ""
+                }
+                0/*/0 {
+                    set smesg "$thistest failed"
+                    set sicon [Rappture::icon fail64]
+                    set color $itk_option(-statusfailcolor)
+                    set desc ""
+                }
+                0/*/* {
+                    if {$states(Fail) == 1} {
+                        set smesg "One of these tests failed"
+                    } else {
+                        set smesg "Some of these tests failed"
+                    }
+                    set sicon [Rappture::icon fail64]
+                    set color $itk_option(-statusfailcolor)
+                    set desc "[_plural $states(Fail)] failed\n[_plural $states(?)] need to run"
+                }
+                */*/0 {
+                    if {$states(Pass) == 1} {
+                        set smesg "One of these tests passed"
+                    } else {
+                        set smesg "Some of these tests passed"
+                    }
+                    set sicon [Rappture::icon test64]
+                    set color $itk_option(-statuspasscolor)
+                    set desc "[_plural $states(Fail)] failed\n[_plural $states(Pass)] passed"
+                }
+                */0/* {
+                    if {$states(Pass) == 1} {
+                        set smesg "One of these tests passed"
+                    } else {
+                        set smesg "Some of these tests passed"
+                    }
+                    set sicon [Rappture::icon pass64]
+                    set color $itk_option(-statuspasscolor)
+                    set desc "[_plural $states(Pass)] passed\n[_plural $states(?)] need to run"
+                }
+                default {
+                    set smesg "Some tests passed, some failed"
+                    set sicon [Rappture::icon fail64]
+                    set color $itk_option(-statusfailcolor)
+                    set desc "[_plural $states(Fail)] failed\n[_plural $states(Pass)] passed\n[_plural $states(?)] need to run"
+                }
+            }
+            $itk_component(statusicon) configure -image $sicon
+            $itk_component(statusmesg) configure -text $smesg -foreground $color
+            $itk_component(description) configure -state normal
+            $itk_component(description) delete 1.0 end
+            $itk_component(description) insert end $desc
+            $itk_component(description) configure -state disabled
+            $itk_component(run) configure -state normal
+        }
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _doRun
+#
+# Invoked when the user presses the "Run" button to invoke the
+# -runcommand script for this widget.  Invokes the command with
+# the current test objects appended as arguments.
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestView::_doRun {} {
+    if {[string length $itk_option(-runcommand)] > 0} {
+        uplevel #0 $itk_option(-runcommand) $_testobjs
+    }
+}
+
+# ----------------------------------------------------------------------
+# USAGE: _plural <num>
+#
+# Handy way of generating a plural string.  If <num> is 1, it returns
+# "1 test".  Otherwise it returns "<num> tests".
+# ----------------------------------------------------------------------
+itcl::body Rappture::Tester::TestView::_plural {num} {
+    if {$num == 1} {
+        return "1 test"
+    } else {
+        return "$num tests"
+    }
+}
Index: /tags/1.6.0/video/Makefile.in
===================================================================
--- /tags/1.6.0/video/Makefile.in	(revision 6168)
+++ /tags/1.6.0/video/Makefile.in	(revision 6168)
@@ -0,0 +1,91 @@
+
+bindir          = @bindir@
+datadir         = @datadir@
+datarootdir     = @datarootdir@
+exec_prefix     = @exec_prefix@
+includedir      = @includedir@
+libdir          = @libdir@
+mandir          = @mandir@
+prefix          = @prefix@
+srcdir          = @srcdir@
+
+SHELL           = @SHELL@
+INSTALL         = @INSTALL@
+MKDIR_P         = @MKDIR_P@
+
+CXX             = @CXX@
+CC              = @CC@
+CFLAGS_DEBUG    = @CFLAGS_DEBUG@ -Wall
+CFLAGS_OPTIMIZE = @CFLAGS_OPTIMIZE@
+STLIB_LD        = @STLIB_LD@
+SHLIB_LD        = @SHLIB_LD@
+SHLIB_CFLAGS    = @SHLIB_CFLAGS@
+SHLIB_LDFLAGS   = @SHLIB_LDFLAGS@
+SHLIB_SUFFIX    = @SHLIB_SUFFIX@
+CFLAGS_DEFAULT  = @CFLAGS_DEFAULT@
+LIB_SEARCH_DIRS = @LIB_SEARCH_DIRS@
+CFLAGS          = @CFLAGS@ -fPIC
+TCL_VERSION     = @TCL_VERSION@
+TCL_LIB_SPEC    = @TCL_LIB_SPEC@
+HAVE_FFMPEG     = @HAVE_FFMPEG_LIBS@
+
+CC_SWITCHES     = $(CFLAGS) $(CFLAGS_DEBUG) $(INCLUDES) $(DEFINES)
+CXX_SWITCHES    = $(CFLAGS) $(CFLAGS_DEBUG) $(INCLUDES) $(DEFINES)
+
+INCLUDES =	\
+		-I$(srcdir) \
+		-I../src/core \
+		-I$(srcdir)/../src/core \
+		-I$(srcdir)/../src/objects \
+		-I$(includedir)
+
+LIBS =		\
+	        -L../src/core -lrappture \
+		-lavcodec -lavformat -lswscale \
+	        $(TCL_LIB_SPEC) -lexpat -lz -lm -lstdc++ \
+
+version =	@PACKAGE_VERSION@
+DEFINES =	-DPACKAGE_VERSION=\"$(version)\"
+
+RANLIB =	@RANLIB@
+AR =		ar
+VPATH =		$(srcdir)
+RM =		rm -f
+
+CDEBUGFLAGS =	-g -Wall
+
+
+OBJS =		\
+		RpVideoTclInterface.o \
+		RpOp.o \
+		RpVideo.o 
+
+name        = RapptureVideo$(version)
+libname     = $(name)
+lib         = $(libname)$(SHLIB_SUFFIX)
+destdir     = $(libdir)/$(name)
+
+.PHONY: all install clean distclean
+
+all: $(lib)
+
+$(lib): $(OBJS)
+	$(SHLIB_LD) $(SHLIB_LDFLAGS) -o $@ $(OBJS) \
+		$(LIB_SEARCH_DIRS) $(LIBS)
+
+install: $(lib)
+	$(MKDIR_P) -m 0755 $(destdir)
+	$(INSTALL) -m 0555 $(lib) $(destdir)
+	$(INSTALL) -m 0444 pkgIndex.tcl $(destdir)
+
+.cc.o:
+	$(CXX) $(CXX_SWITCHES) -c $?
+.c.o:
+	$(CC) $(CC_SWITCHES) -c $?
+
+clean:
+	$(RM) $(OBJS) $(lib)
+
+distclean: clean
+	$(RM) Makefile pkgIndex.tcl *~
+
Index: /tags/1.6.0/video/RpMediaPlayerTclInterface.cc
===================================================================
--- /tags/1.6.0/video/RpMediaPlayerTclInterface.cc	(revision 6168)
+++ /tags/1.6.0/video/RpMediaPlayerTclInterface.cc	(revision 6168)
@@ -0,0 +1,214 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::MediaPlayer
+ *
+ *  This is an interface to the rappture movieplayer module.
+ *  It allows you to grab image frames from mpeg movies using ffmpeg.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <tcl.h>
+#include "RpMediaPlayer.h"
+
+extern "C" Tcl_AppInitProc RpMediaPlayer_Init;
+
+#include "RpOp.h"
+
+static Tcl_ObjCmdProc MediaPlayerCmd;
+static Tcl_ObjCmdProc MediaPlayerCallCmd;
+static Tcl_ObjCmdProc InitOp;
+static Tcl_ObjCmdProc LoadOp;
+static Tcl_ObjCmdProc ReadOp;
+static Tcl_ObjCmdProc ReleaseOp;
+
+static Rp_OpSpec rpMediaPlayerOps[] = {
+    {"init",  1, (void *)InitOp, 3, 3, "<path>",},
+    {"load",  1, (void *)LoadOp, 3, 3, "<path>",},
+    {"read",  1, (void *)ReadOp, 2, 2, "",},
+    {"release", 1, (void *)ReleaseOp, 2, 2, "",},
+};
+
+static int nRpMediaPlayerOps = sizeof(rpMediaPlayerOps) / sizeof(Rp_OpSpec);
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpMediaPlayer_Init()
+ *
+ *  Called in Rappture_Init() to initialize the commands defined
+ *  in this file.
+ * ------------------------------------------------------------------------
+ */
+int
+RpMediaPlayer_Init(Tcl_Interp *interp)
+{
+
+    Tcl_CreateObjCommand(interp, "::Rappture::MediaPlayer",
+        MediaPlayerCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    return TCL_OK;
+}
+
+/*
+ * USAGE: MediaPlayer <file>
+ */
+static int
+MediaPlayerCmd(ClientData clientData, Tcl_Interp *interp, int objc,
+       Tcl_Obj* const *objv)
+{
+    char cmdName[64];
+    static int movieCount = 0;
+    const char *filename = Tcl_GetString(objv[1]);
+    Rappture::Outcome context;
+
+    // create a new command
+    Rappture::MediaPlayer *movie = new Rappture::MediaPlayer();
+    if (!movie->init(context, filename)) {
+        Tcl_AppendResult(interp, context.remark(), "\n",
+                         context.context(), (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    sprintf(cmdName,"::movieObj%d",movieCount);
+
+    Tcl_CreateObjCommand(interp, cmdName, MediaPlayerCallCmd,
+        (ClientData)movie, (Tcl_CmdDeleteProc*)NULL);
+
+    Tcl_AppendResult(interp, cmdName, (char*)NULL);
+    return TCL_OK;
+}
+
+
+static int
+MediaPlayerCallCmd(ClientData clientData, Tcl_Interp *interp, int objc,
+           Tcl_Obj *const *objv)
+{
+    Tcl_ObjCmdProc *proc;
+
+    proc = (Tcl_ObjCmdProc *)Rp_GetOpFromObj(interp, nRpMediaPlayerOps, rpMediaPlayerOps,
+        RP_OP_ARG1, objc, objv, 0);
+
+    if (proc == NULL) {
+        return TCL_ERROR;
+    }
+    return (*proc)(clientData, interp, objc, objv);
+}
+
+/**********************************************************************/
+// FUNCTION: InitOp()
+/// initialize a movie player object
+/**
+ * Initialize a movie player object with the video located at <path>
+ * Full function call:
+ *
+ * init <path>
+ *
+ * <path> is the path of a video file.
+ */
+static int
+InitOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+    Rappture::Outcome context;
+    const char *path = NULL;    // path of video
+
+    path = Tcl_GetString(objv[0]);
+
+    if (! ((Rappture::MediaPlayer *) clientData)->init(context, path) ) {
+        Tcl_AppendResult(interp, context.remark(), "\n",
+                         context.context(), (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: LoadOp()
+/// Load a new video into the movie player object
+/**
+ * Load a new video into the movie player object
+ * Full function call:
+ *
+ * load <path>
+ *
+ * <path> is the path of a video file.
+ */
+static int
+LoadOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+    Rappture::Outcome context;
+    const char *path = NULL;    // path of video
+
+    path = Tcl_GetString(objv[2]);
+
+    if (! ((Rappture::MediaPlayer *) clientData)->load(context, path) ) {
+        Tcl_AppendResult(interp, context.remark(), "\n",
+                         context.context(), (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: ReadOp()
+/// Read frames from a video
+/**
+ * Read frames from a video and return them as images
+ * Full function call:
+ *
+ * read
+ *
+ */
+static int
+ReadOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+    Rappture::Outcome context;
+    Rappture::SimpleCharBuffer sb;
+
+    if (((Rappture::MediaPlayer *)clientData)->read(context, &sb) != 1 ) {
+        Tcl_AppendResult(interp, context.remark(), "\n",
+                         context.context(), (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    Tcl_SetByteArrayObj(Tcl_GetObjResult(interp),
+                        (const unsigned char*)sb.bytes(), sb.size());
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: ReleaseOp()
+/// Clean up memory from an open video in a movie player object
+/**
+ * Close all file handles and free allocated memory associated with an
+ * open video in a movie player object.
+ * Full function call:
+ *
+ * close
+ *
+ */
+static int
+ReleaseOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+    Rappture::Outcome context;
+
+    if (! ((Rappture::MediaPlayer *) clientData)->release() ) {
+        Tcl_AppendResult(interp, context.remark(), "\n",
+                         context.context(), (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    Tcl_ResetResult(interp);
+    return TCL_OK;
+}
+
Index: /tags/1.6.0/video/RpOp.c
===================================================================
--- /tags/1.6.0/video/RpOp.c	(revision 6168)
+++ /tags/1.6.0/video/RpOp.c	(revision 6168)
@@ -0,0 +1,249 @@
+
+/*
+ * RpOp.c --
+ *
+ * This module implements utility procedures for the BLT toolkit.
+ *
+ *	Copyright 1991-2004 George A Howlett.
+ *
+ *	Permission is hereby granted, free of charge, to any person
+ *	obtaining a copy of this software and associated documentation
+ *	files (the "Software"), to deal in the Software without
+ *	restriction, including without limitation the rights to use,
+ *	copy, modify, merge, publish, distribute, sublicense, and/or
+ *	sell copies of the Software, and to permit persons to whom the
+ *	Software is furnished to do so, subject to the following
+ *	conditions:
+ *
+ *	The above copyright notice and this permission notice shall be
+ *	included in all copies or substantial portions of the
+ *	Software.
+ *
+ *	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+ *	KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ *	WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ *	PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+ *	OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ *	OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ *	OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ *	SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <tcl.h>
+#include <string.h>
+#include "RpOp.h"
+/*
+ *---------------------------------------------------------------------------
+ *
+ * BinaryOpSearch --
+ *
+ *      Performs a binary search on the array of command operation
+ *      specifications to find a partial, anchored match for the given
+ *      operation string.
+ *
+ * Results:
+ *	If the string matches unambiguously the index of the specification in
+ *	the array is returned.  If the string does not match, even as an
+ *	abbreviation, any operation, -1 is returned.  If the string matches,
+ *	but ambiguously -2 is returned.
+ *
+ *---------------------------------------------------------------------------
+ */
+static int
+BinaryOpSearch(
+    Rp_OpSpec *specs, 
+    int nSpecs, 
+    char *string)		/* Name of minor operation to search for */
+{
+    char c;
+    int high, low;
+    size_t length;
+
+    low = 0;
+    high = nSpecs - 1;
+    c = string[0];
+    length = strlen(string);
+    while (low <= high) {
+	Rp_OpSpec *specPtr;
+	int compare;
+	int median;
+	
+	median = (low + high) >> 1;
+	specPtr = specs + median;
+
+	/* Test the first character */
+	compare = c - specPtr->name[0];
+	if (compare == 0) {
+	    /* Now test the entire string */
+	    compare = strncmp(string, specPtr->name, length);
+	    if (compare == 0) {
+		if ((int)length < specPtr->minChars) {
+		    return -2;	/* Ambiguous operation name */
+		}
+	    }
+	}
+	if (compare < 0) {
+	    high = median - 1;
+	} else if (compare > 0) {
+	    low = median + 1;
+	} else {
+	    return median;	/* Op found. */
+	}
+    }
+    return -1;			/* Can't find operation */
+}
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * LinearOpSearch --
+ *
+ *      Performs a binary search on the array of command operation
+ *      specifications to find a partial, anchored match for the given
+ *      operation string.
+ *
+ * Results:
+ *	If the string matches unambiguously the index of the specification in
+ *	the array is returned.  If the string does not match, even as an
+ *	abbreviation, any operation, -1 is returned.  If the string matches,
+ *	but ambiguously -2 is returned.
+ *
+ *---------------------------------------------------------------------------
+ */
+static int
+LinearOpSearch(
+    Rp_OpSpec *specs,
+    int nSpecs,
+    char *string)		/* Name of minor operation to search for */
+{
+    Rp_OpSpec *specPtr;
+    char c;
+    size_t length;
+    int nMatches, last;
+    int i;
+
+    c = string[0];
+    length = strlen(string);
+    nMatches = 0;
+    last = -1;
+    for (specPtr = specs, i = 0; i < nSpecs; i++, specPtr++) {
+	if ((c == specPtr->name[0]) && 
+	    (strncmp(string, specPtr->name, length) == 0)) {
+	    last = i;
+	    nMatches++;
+	    if ((int)length == specPtr->minChars) {
+		break;
+	    }
+	}
+    }
+    if (nMatches > 1) {
+	return -2;		/* Ambiguous operation name */
+    } 
+    if (nMatches == 0) {
+	return -1;		/* Can't find operation */
+    } 
+    return last;		/* Op found. */
+}
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * Rp_GetOpFromObj --
+ *
+ *      Find the command operation given a string name.  This is useful where
+ *      a group of command operations have the same argument signature.
+ *
+ * Results:
+ *      If found, a pointer to the procedure (function pointer) is returned.
+ *      Otherwise NULL is returned and an error message containing a list of
+ *      the possible commands is returned in interp->result.
+ *
+ *---------------------------------------------------------------------------
+ */
+void *
+Rp_GetOpFromObj(
+    Tcl_Interp *interp,		/* Interpreter to report errors to */
+    int nSpecs,			/* Number of specifications in array */
+    Rp_OpSpec *specs,		/* Op specification array */
+    int operPos,		/* Position of operation in argument list. */
+    int objc,			/* Number of arguments in the argument vector.
+				 * This includes any prefixed arguments */
+    Tcl_Obj *const *objv,	/* Argument vector */
+    int flags)
+{
+    Rp_OpSpec *specPtr;
+    char *string;
+    int n;
+
+    if (objc <= operPos) {	/* No operation argument */
+	Tcl_AppendResult(interp, "wrong # args: ", (char *)NULL);
+      usage:
+	Tcl_AppendResult(interp, "should be one of...", (char *)NULL);
+	for (n = 0; n < nSpecs; n++) {
+	    int i;
+
+	    Tcl_AppendResult(interp, "\n  ", (char *)NULL);
+	    for (i = 0; i < operPos; i++) {
+		Tcl_AppendResult(interp, Tcl_GetString(objv[i]), " ", 
+			 (char *)NULL);
+	    }
+	    specPtr = specs + n;
+	    Tcl_AppendResult(interp, specPtr->name, " ", specPtr->usage,
+		(char *)NULL);
+	}
+	return NULL;
+    }
+    string = Tcl_GetString(objv[operPos]);
+    if (flags & RP_OP_LINEAR_SEARCH) {
+	n = LinearOpSearch(specs, nSpecs, string);
+    } else {
+	n = BinaryOpSearch(specs, nSpecs, string);
+    }
+    if (n == -2) {
+	char c;
+	size_t length;
+
+	Tcl_AppendResult(interp, "ambiguous", (char *)NULL);
+	if (operPos > 2) {
+	    Tcl_AppendResult(interp, " ", Tcl_GetString(objv[operPos - 1]), 
+		(char *)NULL);
+	}
+	Tcl_AppendResult(interp, " operation \"", string, "\" matches: ",
+	    (char *)NULL);
+
+	c = string[0];
+	length = strlen(string);
+	for (n = 0; n < nSpecs; n++) {
+	    specPtr = specs + n;
+	    if ((c == specPtr->name[0]) &&
+		(strncmp(string, specPtr->name, length) == 0)) {
+		Tcl_AppendResult(interp, " ", specPtr->name, (char *)NULL);
+	    }
+	}
+	return NULL;
+
+    } else if (n == -1) {	/* Can't find operation, display help */
+	Tcl_AppendResult(interp, "bad", (char *)NULL);
+	if (operPos > 2) {
+	    Tcl_AppendResult(interp, " ", Tcl_GetString(objv[operPos - 1]), 
+		(char *)NULL);
+	}
+	Tcl_AppendResult(interp, " operation \"", string, "\": ", (char *)NULL);
+	goto usage;
+    }
+    specPtr = specs + n;
+    if ((objc < specPtr->minArgs) || 
+	((specPtr->maxArgs > 0) && (objc > specPtr->maxArgs))) {
+	int i;
+
+	Tcl_AppendResult(interp, "wrong # args: should be \"", (char *)NULL);
+	for (i = 0; i < operPos; i++) {
+	    Tcl_AppendResult(interp, Tcl_GetString(objv[i]), " ", 
+		(char *)NULL);
+	}
+	Tcl_AppendResult(interp, specPtr->name, " ", specPtr->usage, "\"",
+	    (char *)NULL);
+	return NULL;
+    }
+    return specPtr->proc;
+}
Index: /tags/1.6.0/video/RpOp.h
===================================================================
--- /tags/1.6.0/video/RpOp.h	(revision 6168)
+++ /tags/1.6.0/video/RpOp.h	(revision 6168)
@@ -0,0 +1,48 @@
+
+#ifndef RPOP_H
+#define RPOP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ *---------------------------------------------------------------------------
+ *
+ * Rp_OpSpec --
+ *
+ * 	Structure to specify a set of operations for a Tcl command.
+ *      This is passed to the Rp_GetOpFromObj procedure to look
+ *      for a function pointer associated with the operation name.
+ *
+ *---------------------------------------------------------------------------
+ */
+typedef struct {
+    const char *name;		/* Name of operation */
+    int minChars;		/* Minimum # characters to disambiguate */
+    void *proc;
+    int minArgs;		/* Minimum # args required */
+    int maxArgs;		/* Maximum # args required */
+    const char *usage;		/* Usage message */
+} Rp_OpSpec;
+
+typedef enum {
+    RP_OP_ARG0,		/* Op is the first argument. */
+    RP_OP_ARG1,		/* Op is the second argument. */
+    RP_OP_ARG2,		/* Op is the third argument. */
+    RP_OP_ARG3,		/* Op is the fourth argument. */
+    RP_OP_ARG4		/* Op is the fifth argument. */
+
+} Rp_OpIndex;
+
+#define RP_OP_BINARY_SEARCH	0
+#define RP_OP_LINEAR_SEARCH	1
+
+extern void *Rp_GetOpFromObj _ANSI_ARGS_((Tcl_Interp *interp, 
+	int nSpecs, Rp_OpSpec *specs, int operPos, int objc, 
+	Tcl_Obj *const *objv, int flags));
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*RPOBJ_H*/
Index: /tags/1.6.0/video/RpVideo.c
===================================================================
--- /tags/1.6.0/video/RpVideo.c	(revision 6168)
+++ /tags/1.6.0/video/RpVideo.c	(revision 6168)
@@ -0,0 +1,1694 @@
+/*
+ * ----------------------------------------------------------------------
+ *  TkFFMPEG:  video
+ *
+ *  These routines support the methods in the "video" class, which is
+ *  a video stream that can be read from or written to.  The class
+ *  itself is defined in itcl, but when methods are called, execution
+ *  jumps down to this level.
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "config.h"
+
+#ifdef HAVE_FFMPEG_AVCODEC_H
+# include <ffmpeg/avcodec.h>
+#endif
+
+#ifdef HAVE_LIBAVCODEC_AVCODEC_H
+# include <libavcodec/avcodec.h>
+#endif
+
+#ifdef HAVE_FFMPEG_AVFORMAT_H
+# include <ffmpeg/avformat.h>
+#endif
+
+#ifdef HAVE_LIBAVFORMAT_AVFORMAT_H
+# include <libavformat/avformat.h>
+#endif
+
+#ifdef HAVE_FFMPEG_AVUTIL_H
+# include <ffmpeg/avutil.h>
+#endif
+
+#ifdef HAVE_LIBAVUTIL_AVUTIL_H
+# include <libavutil/avutil.h>
+#endif
+
+#ifdef HAVE_LIBAVUTIL_MATHEMATICS_H
+# include <libavutil/mathematics.h> /* for av_rescale_q and av_gcd */
+#endif
+
+#ifdef HAVE_FFMPEG_SWSCALE_H
+# include <ffmpeg/swscale.h>
+#endif
+
+#ifdef HAVE_LIBSWSCALE_SWSCALE_H
+# include <libswscale/swscale.h>
+#endif
+
+#include "RpVideo.h"
+
+#ifndef HAVE_AVMEDIA_TYPE_VIDEO
+#define AVMEDIA_TYPE_VIDEO	CODEC_TYPE_VIDEO
+#endif	/* HAVE_AVMEDIA_TYPE_VIDEO */
+
+#ifndef AV_PKT_FLAG_KEY
+#define AV_PKT_FLAG_KEY		PKT_FLAG_KEY		
+#endif
+
+#ifndef HAVE_AVIO_CLOSE
+#define avio_close		url_fclose
+#endif
+
+/*
+ * Each video object is represented by the following data:
+ */
+struct VideoObjRec {
+    int magic;
+
+    /* video input */
+    AVFormatContext *pFormatCtx;
+    int videoStream;
+    int frameNumber;
+    int atEnd;
+
+    /* video output */
+    AVFormatContext *outFormatCtx;
+    AVStream *outVideoStr;
+
+    /* used for both input/output */
+    AVFrame *pFrameYUV;
+    uint8_t *yuvbuffer;
+    int yuvw, yuvh;
+    AVFrame *pFrameRGB;
+    uint8_t *rgbbuffer;
+    int rgbw, rgbh;
+    struct SwsContext *scalingCtx;
+
+    char *fileName;
+    char mode[64];
+    char fmt[64];
+    int lastframe;
+
+    /* tmp buffer to give images back to user */
+    void *img;
+    int imgHeaderLen;
+    int imgWidth;
+    int imgHeight;
+};
+
+/* magic stamp for VideoObj, to make sure data is valid */
+#define VIDEO_OBJ_MAGIC 0x0102abcd
+
+static VideoObj *VideoSetData ();
+
+static int VideoModeRead (VideoObj *vidPtr);
+// static int VideoModeWrite (Tcl_Interp *interp, int w, int h);
+
+static int VideoTime2Frame (AVStream *streamPtr, int64_t tval);
+static int64_t VideoFrame2Time (AVStream *streamPtr, int fval);
+static void VideoNextFrame (VideoObj *vidPtr);
+
+uint64_t global_video_pkt_pts = AV_NOPTS_VALUE;
+static int VideoAvGetBuffer (struct AVCodecContext *c, AVFrame *fr);
+static void VideoAvReleaseBuffer (struct AVCodecContext *c, AVFrame *fr);
+static int VideoWriteFrame (VideoObj *vidPtr, AVFrame *framePtr);
+
+static int VideoAllocImgBuffer (VideoObj *vidPtr, int width, int height);
+static int VideoFreeImgBuffer (VideoObj *vidPtr);
+
+#ifdef notdef
+static double VideoTransformFrames2Duration (VideoObj *vidPtr, int frame);
+static int VideoTransformDuration2Frames (VideoObj *vidPtr, double duration);
+#endif
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoSetData()
+ *
+ *  Saves VideoObj data in the "_videodata" slot in the current object
+ *  context.  The data can be retrieved later by calling VideoGetData().
+ * ------------------------------------------------------------------------
+ */
+VideoObj *
+VideoSetData()
+{
+    VideoObj* vid = NULL;
+
+    vid = malloc(sizeof(VideoObj));
+
+    if (vid == NULL) {
+        return NULL;
+    }
+
+    vid->magic = VIDEO_OBJ_MAGIC;
+    vid->pFormatCtx = NULL;
+    vid->videoStream = 0;
+    vid->frameNumber = -1;
+    vid->atEnd = 0;
+
+    vid->outFormatCtx = NULL;
+    vid->outVideoStr = NULL;
+
+    vid->pFrameYUV = NULL;
+    vid->yuvbuffer = NULL;
+    vid->yuvw = 0;
+    vid->yuvh = 0;
+    vid->pFrameRGB = NULL;
+    vid->rgbbuffer = NULL;
+    vid->rgbw = 0;
+    vid->rgbh = 0;
+    vid->scalingCtx = NULL;
+
+    vid->fileName = NULL;
+    *vid->mode = '\0';
+    *vid->fmt = '\0';
+    vid->lastframe = 0;
+
+    vid->img = NULL;
+    vid->imgHeaderLen = 0;
+    vid->imgWidth = 0;
+    vid->imgHeight = 0;
+
+    return vid;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoFindLastFrame()
+ *
+ *  Find the last readable frame.
+ * ------------------------------------------------------------------------
+ */
+int
+VideoFindLastFrame(vidPtr,lastframe)
+    VideoObj *vidPtr;
+    int *lastframe;
+{
+    int f = 0;
+    int nframe = 0;
+    int cur = 0;
+    AVStream *vstreamPtr;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if (lastframe == NULL) {
+        return -1;
+    }
+
+    if (VideoModeRead(vidPtr) != 0) {
+        return -1;
+    }
+
+    // calculate an estimate of the last frame
+    vstreamPtr = vidPtr->pFormatCtx->streams[vidPtr->videoStream];
+    nframe = VideoTime2Frame(vstreamPtr,
+        vstreamPtr->start_time + vstreamPtr->duration);
+
+    // get the real last readable frame
+    // is 50 frames far enough to go back
+    // to be outside of the last key frame?
+    f = vidPtr->frameNumber;
+    cur = VideoGoToN(vidPtr,nframe-50);
+    while (cur != nframe) {
+        cur = nframe;
+        nframe = VideoGoNext(vidPtr);
+    }
+    *lastframe = nframe;
+    VideoGoToN(vidPtr,f);
+
+    return 0;
+}
+
+
+int
+VideoOpenFile(vidPtr, fileName, mode)
+    VideoObj *vidPtr;
+    const char *fileName;
+    const char *mode;
+{
+    int fnlen = 0;
+    int err = 0;
+    int lastframe = 0;
+
+    if (fileName == NULL) {
+        // missing value for fileName
+        // return TCL_ERROR;
+        return -1;
+    }
+    if (fileName == '\0') {
+        /* no file name set -- do nothing */
+        return 0;
+    }
+
+    fnlen = strlen(fileName);
+    if (vidPtr->fileName != NULL) {
+        free(vidPtr->fileName);
+    }
+    vidPtr->fileName = (char *) malloc((fnlen+1)*sizeof(char));
+    if (vidPtr->fileName == NULL) {
+        // trouble mallocing space
+        return -1;
+    }
+    strncpy(vidPtr->fileName,fileName,fnlen);
+    vidPtr->fileName[fnlen] = '\0';
+
+    // FIXME: remove this constraint when we support
+    // the modes: r, r+, w, w+, a, a+, b and combinations
+    if (strlen(mode) > 1) {
+        return -1;
+    }
+
+    if (*mode == 'r') {
+        /* we're now in "input" mode */
+        err = VideoModeRead(vidPtr);
+        if (err) {
+            return err;
+        }
+
+        VideoFindLastFrame(vidPtr,&lastframe);
+        vidPtr->lastframe = lastframe;
+    } else if (*mode == 'w') {
+        /* we're now in "input" mode */
+        // VideoModeWrite(vidPtr);
+    } else {
+        // unrecognized mode
+        return -1;
+    }
+
+    return 0;
+}
+
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoModeRead()
+ *
+ *  Tries to force this video stream into "read" mode.  If the current
+ *  mode is "", then the -file is opened for reading.  If the current
+ *  mode is "write", then the stream is closed and then opened for
+ *  reading.  If the current mode is "read", then this call does nothing.
+ *  Usually called just before a "read" operation (get, go, etc.) is
+ *  performed.
+ *
+ *  Returns TCL_OK if successful, and TCL_ERROR if there is a problem
+ *  opening or closing the stream.
+ *
+ *  Error Codes
+ *  -1
+ *  -2      missing file name
+ *  -3      couldn't open file
+ *  -4      couldn't find streams in file
+ *  -5      couldn't find video stream in file
+ *  -6      unsupported codec for file
+ *  -7      couldn't open codec for file
+ *  -8      couldn't allocate frame space
+ *  -9      strcpy input to vidPtr->mode failed
+ * ------------------------------------------------------------------------
+ */
+int
+VideoModeRead(vidPtr)
+    VideoObj *vidPtr;
+{
+    int i;
+    const char *fmt;
+    AVCodecContext *vcodecCtx;
+    AVCodec *vcodec;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if (vidPtr->fileName == NULL) {
+        // Tcl_AppendResult(interp, "missing value for -file", (char*)NULL);
+        // return TCL_ERROR;
+
+        // missing file name
+        return -2;
+    }
+    if (*vidPtr->fileName == '\0') {
+        /* no file name set -- do nothing */
+        return 0;
+    }
+
+    if (strcmp(vidPtr->mode,"input") == 0) {
+        return 0;
+    } else if (strcmp(vidPtr->mode,"output") == 0) {
+        if (VideoClose(vidPtr) != 0) {
+            return -1;
+        }
+    }
+
+    /*
+     * Open the video stream from that file.
+     */
+#ifdef HAVE_AVFORMAT_OPEN_INPUT
+    if (avformat_open_input(&vidPtr->pFormatCtx, vidPtr->fileName, NULL, 
+	NULL) != 0) {
+	return -3;
+    }
+#else
+    if (av_open_input_file(&vidPtr->pFormatCtx, vidPtr->fileName,
+            NULL, 0, NULL) != 0) {
+        return -3;
+    }
+#endif
+#ifdef HAVE_AVFORMAT_FIND_STREAM_INFO
+    if (avformat_find_stream_info(vidPtr->pFormatCtx, NULL) < 0) {
+#else
+    if (av_find_stream_info(vidPtr->pFormatCtx) < 0) {
+#endif
+        // Tcl_AppendResult(interp, "couldn't find streams in file \"",
+        //     fileName, "\"", (char*)NULL);
+        // return TCL_ERROR;
+
+        // couldn't find streams in file
+        return -4;
+    }
+
+    /*
+     * Search for a video stream and its codec.
+     */
+    vidPtr->videoStream = -1;
+    for (i=0; i < vidPtr->pFormatCtx->nb_streams; i++) {
+        if (vidPtr->pFormatCtx->streams[i]->codec->codec_type 
+	    == AVMEDIA_TYPE_VIDEO) {
+            vidPtr->videoStream = i;
+            break;
+        }
+    }
+    if (vidPtr->videoStream < 0) {
+        // Tcl_AppendResult(interp, "couldn't find video stream in file \"",
+        //     fileName, "\"", (char*)NULL);
+        // return TCL_ERROR;
+
+        // couldn't find video stream in file
+        return -5;
+    }
+
+    vcodecCtx = vidPtr->pFormatCtx->streams[vidPtr->videoStream]->codec;
+    vcodec = avcodec_find_decoder(vcodecCtx->codec_id);
+    if (vcodec == NULL) {
+        // Tcl_AppendResult(interp, "unsupported codec for file \"",
+        //     fileName, "\"", (char*)NULL);
+        // return TCL_ERROR;
+
+        // unsupported codec for file
+        return -6;
+    }
+#ifdef HAVE_AVCODEC_OPEN2
+    if (avcodec_open2(vcodecCtx, vcodec, NULL) < 0) {
+#else
+    if (avcodec_open(vcodecCtx, vcodec) < 0) {
+#endif
+        // Tcl_AppendResult(interp, "couldn't open codec for file \"",
+        //     fileName, "\"", (char*)NULL);
+        // return TCL_ERROR;
+
+        // couldn't open codec for file
+        return -7;
+    }
+
+    vcodecCtx->get_buffer = VideoAvGetBuffer;
+    vcodecCtx->release_buffer = VideoAvReleaseBuffer;
+
+    vidPtr->pFrameYUV = avcodec_alloc_frame();
+    vidPtr->pFrameRGB = avcodec_alloc_frame();
+    if (vidPtr->pFrameYUV == NULL || vidPtr->pFrameRGB == NULL) {
+        // Tcl_AppendResult(interp, "couldn't allocate frame space",
+        //     " for file \"", fileName, "\"", (char*)NULL);
+        // return TCL_ERROR;
+
+        // couldn't allocate frame space
+        return -8;
+    }
+
+    /* save the name of the codec as the -format option */
+    fmt = "?";
+    if (vcodecCtx->codec && vcodecCtx->codec->name) {
+        fmt = vcodecCtx->codec->name;
+        strcpy(vidPtr->fmt,fmt);
+    }
+//
+//    sprintf(buffer, "%d", vcodecCtx->width);
+//    if (Tcl_SetVar(interp, "width", buffer, TCL_LEAVE_ERR_MSG) == NULL) {
+//        return TCL_ERROR;
+//    }
+//    sprintf(buffer, "%d", vcodecCtx->height);
+//    if (Tcl_SetVar(interp, "height", buffer, TCL_LEAVE_ERR_MSG) == NULL) {
+//        return TCL_ERROR;
+//    }
+//
+
+    if (strcpy(vidPtr->mode,"input") == NULL) {
+        // strcpy input to vidPtr->mode failed
+        return -9;
+    }
+
+    return 0;
+}
+
+
+// FIXME: get this function working.
+///*
+// * ------------------------------------------------------------------------
+// *  VideoModeWrite()
+// *
+// *  Tries to force this video stream into "write" mode.  If the current
+// *  mode is "", then the -file is opened for writing.  If the current
+// *  mode is "read", then the stream is closed and then opened for
+// *  writing.  If the current mode is "write", then this call does nothing.
+// *  Usually called just before a "write" operation (put, etc.) is
+// *  performed.
+// *
+// *  Returns TCL_OK if successful, and TCL_ERROR if there is a problem
+// *  opening or closing the stream.
+// * ------------------------------------------------------------------------
+// */
+//int
+//VideoModeWrite(vidPtr, fileName, width, height, fmt)
+//    VideoObj *vidPtr;      /* video object to write */
+//    CONST84 char *fileName;
+//    int width;             /* native width of each frame */
+//    int height;            /* native height of each frame */
+//    CONST84 char *fmt
+//{
+//    char c;
+//    int numBytes, pixfmt, iwd, iht;
+//    CONST84 char *size;
+//    AVCodecContext *codecCtx;
+//    AVCodec *vcodec;
+//
+//    if (vidPtr == NULL) {
+//        return -1;
+//    }
+//
+//    /*
+//     * Get the current mode.  If we're already in "output", then we're
+//     * done.  Otherwise, close the stream if necessary and prepare to
+//     * open the file for write.
+//     */
+//    if (vidPtr->mode == NULL) {
+//        return -1;
+//    }
+//
+//    c = *vidPtr->mode;
+//    if (c == 'o' && strcmp(vidPtr->mode,"output") == 0) {
+//        return 0;
+//    }
+//    else if (c == 'i' && strcmp(vidPtr->mode,"input") == 0) {
+//        if (VideoClose(vidPtr) != 0) {
+//            return -1;
+//        }
+//    }
+//
+//    /*
+//     * Get the file name from the -file variable.
+//     */
+//    if ((fileName == NULL) || (*filename == '\0')) {
+//        /* no file name set -- do nothing */
+//        return 0;
+//    }
+//
+//    /*
+//     * Get the -width and -height of each frame.  If these are set
+//     * to 0 (default), then use the incoming width/height from an
+//     * actual frame.
+//     */
+//     iwd = width;
+//     iht = height;
+//
+//    /*
+//     * Get the format argument.
+//     */
+//    if (fmt == NULL) {
+////        Tcl_AppendResult(interp, "missing value for -format", (char*)NULL);
+////        return TCL_ERROR;
+//        return -1;
+//    }
+//    if (strcmp(fmt,"mpeg1video") == 0) {
+//        vidPtr->outFormatCtx = av_alloc_format_context();
+//        vidPtr->outFormatCtx->oformat = guess_format("mpeg", NULL, NULL);
+//    }
+//    else if (strcmp(fmt,"flv") == 0) {
+//        vidPtr->outFormatCtx = av_alloc_format_context();
+//        vidPtr->outFormatCtx->oformat = guess_format("flv", NULL, NULL);
+//    }
+//    else if (strcmp(fmt,"mov") == 0) {
+//        vidPtr->outFormatCtx = av_alloc_format_context();
+//        vidPtr->outFormatCtx->oformat = guess_format("mov", NULL, NULL);
+//        /* MOV normally uses MPEG4, but that may not be installed */
+//        vidPtr->outFormatCtx->oformat->video_codec = CODEC_ID_FFV1;
+//    }
+//    else if (strcmp(fmt,"avi") == 0) {
+//        vidPtr->outFormatCtx = av_alloc_format_context();
+//        vidPtr->outFormatCtx->oformat = guess_format("avi", NULL, NULL);
+//        /* AVI normally uses MPEG4, but that may not be installed */
+//        vidPtr->outFormatCtx->oformat->video_codec = CODEC_ID_FFV1;
+//    }
+//    else {
+////        Tcl_AppendResult(interp, "bad format \"", fmt, "\": should be",
+////            " avi, flv, mpeg1video, mov", (char*)NULL);
+////        return TCL_ERROR;
+//        return -1;
+//    }
+//
+//    /*
+//     * Open the video stream for writing.
+//     */
+//    strncpy(vidPtr->outFormatCtx->filename, fileName,
+//        sizeof(vidPtr->outFormatCtx->filename));
+//
+//    vidPtr->outVideoStr = av_new_stream(vidPtr->outFormatCtx, 0);
+//    if (vidPtr->outVideoStr == NULL) {
+////        Tcl_AppendResult(interp, "internal error:",
+////            " problem opening stream", (char*)NULL);
+////        return TCL_ERROR;
+//        retunr -1;
+//    }
+//    codecCtx = vidPtr->outVideoStr->codec;
+//
+//    codecCtx->codec_id = vidPtr->outFormatCtx->oformat->video_codec;
+//    codecCtx->codec_type = CODEC_TYPE_VIDEO;
+//
+//    /* put sample parameters */
+//    codecCtx->bit_rate = 400000;
+//    /* resolution must be a multiple of two */
+//    codecCtx->width = (iwd/2)*2;
+//    codecCtx->height = (iht/2)*2;
+//    codecCtx->time_base.den = 24;
+//    codecCtx->time_base.num = 1;
+//    codecCtx->gop_size = 12; /* emit one intra frame every so often */
+//    codecCtx->pix_fmt = PIX_FMT_YUV420P;
+//    if (codecCtx->codec_id == CODEC_ID_MPEG2VIDEO) {
+//        codecCtx->max_b_frames = 2;
+//    }
+//
+//    /* find the video encoder */
+//    vcodec = avcodec_find_encoder(codecCtx->codec_id);
+//    if (!vcodec || avcodec_open(codecCtx, vcodec) < 0) {
+//        // Tcl_AppendResult(interp, "internal error:",
+//        //     " problem opening codec", (char*)NULL);
+//        // return TCL_ERROR;
+//        return -1;
+//    }
+//
+//    if (av_set_parameters(vidPtr->outFormatCtx, NULL) < 0) {
+//        // Tcl_AppendResult(interp, "internal error:",
+//        //     " problem in av_set_parameters()", (char*)NULL);
+//        // return TCL_ERROR;
+//        return -1;
+//    }
+//
+//    if (url_fopen(&vidPtr->outFormatCtx->pb, fileName, URL_WRONLY) < 0) {
+//        // Tcl_AppendResult(interp, "can't open file \"", fileName,
+//        //     "\"", (char*)NULL);
+//        // return TCL_ERROR;
+//        return -1;
+//    }
+//    av_write_header(vidPtr->outFormatCtx);
+//
+//    vidPtr->pFrameYUV = avcodec_alloc_frame();
+//    vidPtr->pFrameRGB = avcodec_alloc_frame();
+//    if (vidPtr->pFrameYUV == NULL || vidPtr->pFrameRGB == NULL) {
+//        // Tcl_AppendResult(interp, "couldn't allocate frame space",
+//        //     " for file \"", fileName, "\"", (char*)NULL);
+//        // return TCL_ERROR;
+//        return -1;
+//    }
+//
+//    vidPtr->yuvw = vidPtr->outVideoStr->codec->width;
+//    vidPtr->yuvh = vidPtr->outVideoStr->codec->height;
+//    pixfmt = vidPtr->outVideoStr->codec->pix_fmt;
+//
+//    numBytes = avpicture_get_size(pixfmt, vidPtr->yuvw, vidPtr->yuvh);
+//    vidPtr->yuvbuffer = (uint8_t*)av_malloc(numBytes*sizeof(uint8_t));
+//
+//    avpicture_fill((AVPicture*)vidPtr->pFrameYUV, vidPtr->yuvbuffer,
+//        pixfmt, vidPtr->yuvw, vidPtr->yuvh);
+//
+//
+//    if (strcpy(vid->mode,"output") == NULL) {
+//        return -1;
+//    }
+//
+//    return 0;
+//}
+
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoTime2Frame()
+ *
+ *  Converts a time value (as defined by the FFMPEG package) into an
+ *  integer frame number in the range 0-end for the stream.
+ * ------------------------------------------------------------------------
+ */
+int
+VideoTime2Frame(streamPtr, tval)
+    AVStream *streamPtr;   /* scale values according to this stream */
+    int64_t tval;          /* time value as defined by stream */
+{
+    AVRational one, factor;
+    one.num = 1;
+    one.den = 1;
+    factor.num = streamPtr->time_base.num * streamPtr->r_frame_rate.num;
+    factor.den = streamPtr->time_base.den * streamPtr->r_frame_rate.den;
+
+    if (tval > streamPtr->start_time) {
+        tval -= streamPtr->start_time;
+    } else {
+        tval = 0;
+    }
+    tval = av_rescale_q(tval, factor, one);
+    return (int)tval;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoFrame2Time()
+ *
+ *  Converts a frame number 0-end to the corresponding time value
+ *  (as defined by FFMPEG) for the given stream.
+ * ------------------------------------------------------------------------
+ */
+int64_t
+VideoFrame2Time(streamPtr, fval)
+    AVStream *streamPtr;   /* scale values according to this stream */
+    int fval;              /* frame value in the range 0-end */
+{
+    int64_t tval;
+    AVRational one, factor;
+    one.num = 1;
+    one.den = 1;
+
+    factor.num = streamPtr->time_base.num * streamPtr->r_frame_rate.num;
+    factor.den = streamPtr->time_base.den * streamPtr->r_frame_rate.den;
+
+    tval = av_rescale_q((int64_t)fval, one, factor) + streamPtr->start_time;
+    return tval;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoNextFrame()
+ *
+ *  Decodes a series of video packets until the end of the frame
+ *  is reached.  Updates the frameNumber and atEnd to maintain the
+ *  current status for this video stream.
+ * ------------------------------------------------------------------------
+ */
+void
+VideoNextFrame(vidPtr)
+    VideoObj *vidPtr;   /* get a frame from this video stream */
+{
+    int frameFinished;
+    uint64_t pts;
+    AVCodecContext *vcodecCtx;
+    AVStream *vstreamPtr;
+    AVPacket packet;
+
+    if (vidPtr->pFormatCtx) {
+        vstreamPtr = vidPtr->pFormatCtx->streams[vidPtr->videoStream];
+        vcodecCtx = vstreamPtr->codec;
+
+        /*
+         * Decode as many packets as necessary to get the next frame.
+         */
+        pts = 0;
+        while (1) {
+            if (av_read_frame(vidPtr->pFormatCtx, &packet) >= 0) {
+                if (packet.stream_index == vidPtr->videoStream) {
+                    /* save pts so we can grab it again in VideoAvGetBuffer */
+                    global_video_pkt_pts = packet.pts;
+
+#ifdef HAVE_AVCODEC_DECODE_VIDEO2
+                    // new avcodec decode video function
+                    avcodec_decode_video2(vcodecCtx, vidPtr->pFrameYUV,
+                        &frameFinished, &packet);
+#else
+                    // old avcodec decode video function
+                    avcodec_decode_video(vcodecCtx, vidPtr->pFrameYUV,
+                        &frameFinished, packet.data, packet.size);
+#endif
+                    if (packet.dts == AV_NOPTS_VALUE
+                          && vidPtr->pFrameYUV->opaque
+                          && *(uint64_t*)vidPtr->pFrameYUV->opaque != AV_NOPTS_VALUE) {
+                        pts = *(uint64_t*)vidPtr->pFrameYUV->opaque;
+                    } else if (packet.dts != AV_NOPTS_VALUE) {
+                        pts = packet.dts;
+                    } else {
+                        pts = 0;
+                    }
+
+                    if (frameFinished) {
+                        vidPtr->frameNumber = VideoTime2Frame(vstreamPtr, pts);
+                        break;
+                    }
+                }
+            } else {
+                vidPtr->atEnd = 1;
+                break;
+            }
+        }
+        av_free_packet(&packet);
+    }
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  These two routines are called whenever a frame buffer is allocated,
+ *  which means that we're starting a new frame.  Grab the global pts
+ *  counter and squirrel it away in the opaque slot of the frame.  This
+ *  will give us a pts value that we can trust later.
+ * ------------------------------------------------------------------------
+ */
+int
+VideoAvGetBuffer(c,fr)
+    AVCodecContext *c;  /* codec doing the frame decoding */
+    AVFrame *fr;        /* frame being decoded */
+{
+    int rval = avcodec_default_get_buffer(c, fr);
+    uint64_t *ptsPtr = av_malloc(sizeof(uint64_t));
+    *ptsPtr = global_video_pkt_pts;
+    fr->opaque = ptsPtr;
+    return rval;
+}
+
+void
+VideoAvReleaseBuffer(c,fr)
+    AVCodecContext *c;  /* codec doing the frame decoding */
+    AVFrame *fr;        /* frame being decoded */
+{
+    if (fr && fr->opaque) {
+        av_freep(&fr->opaque);
+    }
+    avcodec_default_release_buffer(c,fr);
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoInit()
+ *
+ *  Implements the body of the _ffmpeg_init method in the "video" class.
+ *  Initializes the basic data structure and stores it in the _videodata
+ *  variable within the class.
+ * ------------------------------------------------------------------------
+ */
+VideoObj *
+VideoInit()
+{
+    /*
+     * Create an object to represent this video stream.
+     */
+
+    /* Register all codecs and formats */
+    av_register_all();
+
+    return VideoSetData();
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoCleanup()
+ *
+ *  Implements the body of the _ffmpeg_cleanup method in the "video" class.
+ *  Accesses the data structure stored in the _videodata variable and
+ *  frees up the data.
+ * ------------------------------------------------------------------------
+ */
+int
+VideoCleanup(vidPtr)
+    VideoObj *vidPtr;
+{
+    /*
+     *  Nothing much to do here.  Just close the file in case it is
+     *  still open.  Don't free vidPtr itself; that is cleaned up by
+     *  the ByteArrayObj in the class data member.
+     */
+    int ret = 0;
+
+    ret -= VideoClose(vidPtr);
+
+    if (vidPtr != NULL) {
+        VideoFreeImgBuffer(vidPtr);
+        if (vidPtr->fileName != NULL) {
+            free(vidPtr->fileName);
+            vidPtr->fileName = NULL;
+        }
+        free(vidPtr);
+        vidPtr = NULL;
+// FIXME: need a test to make sure vidPtr is null after the function returns.
+    }
+
+    return ret;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoSize()
+ *
+ *  Implements the body of the "size" method in the "video" class.
+ *  Returns the size of each frame in this video stream as a list {w h}.
+ * ------------------------------------------------------------------------
+ */
+int
+VideoSize(vidPtr, width, height)
+    VideoObj *vidPtr;
+    int *width;
+    int *height;
+{
+    AVCodecContext *vcodecCtx;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if (vidPtr->pFormatCtx == NULL) {
+        // "internal error: video stream is not open",
+        return -1;
+    }
+
+    if (vidPtr->pFormatCtx) {
+        vcodecCtx = vidPtr->pFormatCtx->streams[vidPtr->videoStream]->codec;
+        if (width != NULL) {
+            *width = vcodecCtx->width;
+        }
+        if (height != NULL) {
+            *height = vcodecCtx->height;
+        }
+    }
+    return 0;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoGo()
+ *
+ *  Implements the body of the "go" method in the "video" class.
+ *  Advances by one or more frames, or seeks backward in the stream.
+ *  Handles the following syntax:
+ *    obj go next ...... go to next frame (same as +1)
+ *    obj go +n ........ advance by n frames
+ *    obj go -n ........ go back by n frames
+ *    obj go n ......... go to frame n
+ * ------------------------------------------------------------------------
+ */
+int
+VideoGoNext(vidPtr)
+    VideoObj *vidPtr;
+{
+    int nabs;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    nabs = vidPtr->frameNumber + 1;
+    return VideoGoToN(vidPtr, nabs);
+}
+
+int
+VideoGoPlusMinusN(vidPtr, n)
+    VideoObj *vidPtr;
+    int n;
+{
+    int nabs;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    nabs = vidPtr->frameNumber + n;
+    return VideoGoToN(vidPtr, nabs);
+}
+
+int
+VideoGoToN(vidPtr, n)
+    VideoObj *vidPtr;
+    int n;
+{
+    int nrel, nabs, seekFlags, gotframe;
+    int64_t nseek;
+    AVStream *vstreamPtr;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if (vidPtr->pFormatCtx == NULL) {
+        // "internal error: video stream is not open",
+        return -1;
+    }
+
+    nabs = n;
+
+    if (nabs < 0) {
+        nabs = 0;
+    }
+
+    if (nabs < vidPtr->frameNumber) {
+        seekFlags = AVSEEK_FLAG_BACKWARD;
+    } else {
+        seekFlags = 0;
+    }
+
+    /*
+     * If we're going to an absolute frame, or if we're going backward
+     * or too far forward, then seek the frame.
+     */
+    nrel = nabs-vidPtr->frameNumber;
+    if ((nrel > 50) || (seekFlags&AVSEEK_FLAG_BACKWARD)) {
+
+        vstreamPtr = vidPtr->pFormatCtx->streams[vidPtr->videoStream];
+        nseek = VideoFrame2Time(vstreamPtr, nabs);
+        // not sure why it is checking against the number 100
+        if (nseek > 100) {
+            nseek -= 100;
+        } else {
+            nseek = 0;
+        }
+
+        /* first, seek the nearest reference frame for a good starting pt */
+        av_seek_frame(vidPtr->pFormatCtx, vidPtr->videoStream,
+            nseek, seekFlags);
+
+        // this doesn't seem to give me back the true frame number
+        // feels like it is more of a reverse of the VideoFrame2Time call
+        // because vidPtr->frameNumber always equals nabs
+        vidPtr->frameNumber = VideoTime2Frame(vstreamPtr, nseek);
+        vidPtr->atEnd = 0;
+
+        /* read the frame to figure out what the frame number is */
+        VideoNextFrame(vidPtr);
+
+        /* then, move forward until we reach the desired frame */
+        gotframe = 0;
+        while (vidPtr->frameNumber < nabs && !vidPtr->atEnd) {
+            VideoNextFrame(vidPtr);
+            gotframe = 1;
+        }
+
+        /* get at least one frame, unless we're done or at the beginning*/
+        if (!gotframe && !vidPtr->atEnd) {
+            if (vidPtr->frameNumber > nabs) {
+                // we are probably at a key frame, just past
+                // the requested frame and need to seek backwards.
+                VideoGoToN(vidPtr,n);
+            } else {
+                VideoNextFrame(vidPtr);
+            }
+        }
+    }
+    else {
+        while (nrel-- > 0) {
+            VideoNextFrame(vidPtr);
+        }
+    }
+
+    /*
+     * Send back the current frame number or "end" as the result.
+     */
+    return vidPtr->frameNumber;
+}
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoGet()
+ *
+ *  Implements the body of the "get" method in the "video" class.
+ *  Returns information about the current frame via the following
+ *  syntax:
+ *    obj get start|position|end
+ *    obj get <imageHandle>
+ * ------------------------------------------------------------------------
+ */
+int
+VideoGetImage(vidPtr, iw, ih, img, bufSize)
+    VideoObj *vidPtr;
+    int iw;
+    int ih;
+    void **img;
+    int *bufSize;
+{
+
+    int numBytes;
+    AVCodecContext *vcodecCtx;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if (VideoModeRead(vidPtr) != 0) {
+        return -1;
+    }
+
+    /*
+    if (vidPtr->pFormatCtx) {
+        vcodecCtx = vidPtr->pFormatCtx->streams[vidPtr->videoStream]->codec;
+    } else {
+        vcodecCtx = NULL;
+    }
+    */
+
+    if (vidPtr->pFormatCtx == NULL) {
+        // vidPtr->pFormatCtx is NULL, video not open
+        return -1;
+    }
+    vcodecCtx = vidPtr->pFormatCtx->streams[vidPtr->videoStream]->codec;
+
+    /*
+     * Query the size for this photo and make sure that we have a
+     * buffer of the appropriate size for software scaling and
+     * format conversion.
+     */
+
+    // if the user's desired size is less then 0,
+    // use the default size
+
+    if (iw < 0) {
+        iw = vcodecCtx->width;
+    }
+    if (ih < 0) {
+        ih = vcodecCtx->height;
+    }
+
+
+    if (iw != vidPtr->rgbw || ih != vidPtr->rgbh) {
+        if (vidPtr->rgbbuffer) {
+            av_free(vidPtr->rgbbuffer);
+            vidPtr->rgbbuffer = NULL;
+        }
+        numBytes = avpicture_get_size(PIX_FMT_RGB24, iw, ih);
+        vidPtr->rgbbuffer = (uint8_t*)av_malloc(numBytes*sizeof(uint8_t));
+        vidPtr->rgbw = iw;
+        vidPtr->rgbh = ih;
+
+        avpicture_fill((AVPicture*)vidPtr->pFrameRGB, vidPtr->rgbbuffer,
+            PIX_FMT_RGB24, iw, ih);
+
+        vidPtr->scalingCtx = sws_getCachedContext(vidPtr->scalingCtx,
+            vcodecCtx->width, vcodecCtx->height, vcodecCtx->pix_fmt,
+            iw, ih, PIX_FMT_RGB24, SWS_BICUBIC|SWS_PRINT_INFO, NULL, NULL, NULL);
+    }
+
+    /*
+     * Rescale the current frame to the desired size, and translate
+     * into RGB format so we can copy into the destination image.
+     */
+    if (vidPtr->pFrameYUV && vidPtr->pFrameYUV->data[0]) {
+        sws_scale(vidPtr->scalingCtx, (const uint8_t * const*)
+            vidPtr->pFrameYUV->data, vidPtr->pFrameYUV->linesize,
+            0, vcodecCtx->height,
+            vidPtr->pFrameRGB->data, vidPtr->pFrameRGB->linesize);
+
+/*
+        iblock.pixelPtr  = (unsigned char*)vidPtr->pFrameRGB->data[0];
+        iblock.width     = iw;
+        iblock.height    = ih;
+        iblock.pitch     = vidPtr->pFrameRGB->linesize[0];
+        iblock.pixelSize = 3;
+        iblock.offset[0] = 0;
+        iblock.offset[1] = 1;
+        iblock.offset[2] = 2;
+        iblock.offset[3] = 0;
+
+        Tk_PhotoPutBlock_NoComposite(img, &iblock, 0, 0, iw, ih);
+*/
+
+        if (vidPtr->img == NULL) {
+            VideoAllocImgBuffer(vidPtr,iw,ih);
+        } else {
+            if ((vidPtr->imgWidth != iw) && (vidPtr->imgHeight != ih)) {
+                // new height or width
+                // resize the image buffer
+                free(vidPtr->img);
+                VideoAllocImgBuffer(vidPtr,iw,ih);
+            }
+        }
+
+        // Write pixel data
+        memcpy(vidPtr->img+vidPtr->imgHeaderLen,
+            vidPtr->pFrameRGB->data[0],
+            vidPtr->imgWidth*3*vidPtr->imgHeight);
+    }
+    *img = vidPtr->img;
+    *bufSize = (vidPtr->imgWidth*3*vidPtr->imgHeight) + vidPtr->imgHeaderLen;
+    return 0;
+}
+
+int
+VideoFrameRate (vidPtr, fr)
+    VideoObj *vidPtr;
+    double *fr;
+{
+    AVStream *vstreamPtr;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if (fr == NULL) {
+        return -1;
+    }
+
+    if (vidPtr->pFormatCtx == NULL) {
+        // vidPtr->pFormatCtx is NULL, video not open
+        return -1;
+    }
+    vstreamPtr = vidPtr->pFormatCtx->streams[vidPtr->videoStream];
+
+    // http://trac.handbrake.fr/browser/trunk/libhb/decavcodec.c?rev=1490#L684
+    // there seems to be some controversy over what structure holds
+    // the correct frame rate information for different video codecs.
+    // for now we will use the stream's r_frame_rate.
+    // from the above post, it looks like this value can be interpreted
+    // as frames per second.
+    *fr = av_q2d(vstreamPtr->r_frame_rate);
+
+    return 0;
+}
+
+int
+VideoFileName (vidPtr, fname)
+    VideoObj *vidPtr;
+    const char **fname;
+{
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if (fname == NULL) {
+        return -1;
+    }
+
+    if (vidPtr->pFormatCtx == NULL) {
+        // vidPtr->pFormatCtx is NULL, video not open
+        return -1;
+    }
+
+    *fname = vidPtr->fileName;
+
+    return 0;
+}
+
+int
+VideoPixelAspectRatio (vidPtr, num, den)
+    VideoObj *vidPtr;
+    int *num;
+    int *den;
+{
+    AVCodecContext *vcodecCtx;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if ((num == NULL) || (den == NULL)) {
+        return -1;
+    }
+
+    if (vidPtr->pFormatCtx == NULL) {
+        // vidPtr->pFormatCtx is NULL, video not open
+        return -1;
+    }
+
+    vcodecCtx = vidPtr->pFormatCtx->streams[vidPtr->videoStream]->codec;
+
+    *num = vcodecCtx->sample_aspect_ratio.num;
+    *den = vcodecCtx->sample_aspect_ratio.den;
+
+    return 0;
+}
+
+int
+VideoDisplayAspectRatio (vidPtr, num, den)
+    VideoObj *vidPtr;
+    int *num;
+    int *den;
+{
+    int width = 0;
+    int height = 0;
+    int64_t gcd = 0;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if ((num == NULL) || (den == NULL)) {
+        return -1;
+    }
+
+    if (vidPtr->pFormatCtx == NULL) {
+        // vidPtr->pFormatCtx is NULL, video not open
+        return -1;
+    }
+
+    VideoSize(vidPtr, &width, &height);
+    VideoPixelAspectRatio(vidPtr, num, den);
+
+    width = (*num)*width;
+    height = (*den)*height;
+#ifdef FFMPEG_COMMON_H
+    // old gcd function
+    gcd = ff_gcd(FFABS(width), FFABS(height));
+#else
+    // new gcd function
+    gcd = av_gcd(FFABS(width), FFABS(height));
+#endif
+
+
+    *num = width/gcd;
+    *den = height/gcd;
+
+    if (*den == 0) {
+        *num = 0;
+        *den = 1;
+    }
+
+    return 0;
+}
+
+int
+VideoAllocImgBuffer(vidPtr, width, height)
+    VideoObj *vidPtr;
+    int width;
+    int height;
+{
+
+    char header[64];
+    int headerLen = 0;
+    int bufsize = 0;
+
+    sprintf(header,"P6\n%d %d\n255\n", width, height);
+    headerLen = strlen(header);
+    bufsize = headerLen + (width*3*height);
+    vidPtr->img = (void*) malloc(bufsize);
+    vidPtr->imgHeaderLen = headerLen;
+    vidPtr->imgWidth = width;
+    vidPtr->imgHeight = height;
+    memcpy(vidPtr->img,header,headerLen);
+
+    return 0;
+}
+
+int
+VideoFreeImgBuffer(vidPtr)
+    VideoObj *vidPtr;
+{
+    if ((vidPtr != NULL) && (vidPtr->img != NULL)) {
+        free(vidPtr->img);
+        vidPtr->img = NULL;
+    }
+    return 0;
+}
+
+int
+VideoGetPositionCur(vidPtr, pos)
+    VideoObj *vidPtr;      /* video object to act on */
+    int *pos;
+{
+    int fnum = -1;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if (pos == NULL) {
+        return -1;
+    }
+
+    if (VideoModeRead(vidPtr) != 0) {
+        return -1;
+    }
+
+    if (vidPtr->pFormatCtx) {
+        fnum = vidPtr->frameNumber;
+    }
+
+    *pos = fnum;
+    return 0;
+}
+
+int
+VideoGetPositionEnd(vidPtr, pos)
+    VideoObj *vidPtr;      /* video object to act on */
+    int *pos;
+{
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if (pos == NULL) {
+        return -1;
+    }
+
+    if (VideoModeRead(vidPtr) != 0) {
+        return -1;
+    }
+
+    *pos = vidPtr->lastframe;
+    return 0;
+}
+
+// FIXME: get this function working
+///*
+// * ------------------------------------------------------------------------
+// *  VideoPut()
+// *
+// *  Implements the body of the "put" method in the "video" class.
+// *  Stores a single frame into the video stream:
+// *    obj put <imageHandle>
+// * ------------------------------------------------------------------------
+// */
+//int
+//VideoPut(cdata, interp, argc, argv)
+//    ClientData cdata;      /* not used */
+//    Tcl_Interp *interp;    /* interpreter */
+//    int argc;              /* number of arguments */
+//    CONST84 char* argv[];  /* argument strings */
+//{
+//    VideoObj *vidPtr;
+//    int iw, ih, numBytes, roffs, goffs, boffs;
+//    char buffer[64];
+//    unsigned char* photodata;
+//    uint8_t* rgbdata;
+//    Tk_PhotoHandle img;
+//    Tk_PhotoImageBlock iblock;
+//    AVCodecContext *codecCtx;
+//
+//    if (VideoGetData(interp, &vidPtr) != TCL_OK) {
+//        return TCL_ERROR;
+//    }
+//
+//    if (argc != 2) {
+//        Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
+//            " image\"", (char*)NULL);
+//        return TCL_ERROR;
+//    }
+//
+//    /*
+//     * Get the name of the image and copy from it.
+//     */
+//    img = Tk_FindPhoto(interp, argv[1]);
+//    if (img == NULL) {
+//        Tcl_AppendResult(interp, "bad value \"", argv[1],
+//            "\": expected photo image", (char*)NULL);
+//        return TCL_ERROR;
+//    }
+//
+//    /*
+//     * Query the size for this photo and make sure that we have a
+//     * buffer of the appropriate size for software scaling and
+//     * format conversion.
+//     */
+//    Tk_PhotoGetImage(img, &iblock);
+//    Tk_PhotoGetSize(img, &iw, &ih);
+//
+//    if (VideoModeWrite(interp, iw, ih) != TCL_OK) {
+//        return TCL_ERROR;
+//    }
+//    codecCtx = vidPtr->outVideoStr->codec;
+//
+//    if (iw != vidPtr->rgbw || ih != vidPtr->rgbh) {
+//        if (vidPtr->rgbbuffer) {
+//            av_free(vidPtr->rgbbuffer);
+//            vidPtr->rgbbuffer = NULL;
+//        }
+//        numBytes = avpicture_get_size(PIX_FMT_RGB24, iw, ih);
+//        vidPtr->rgbbuffer = (uint8_t*)av_malloc(numBytes*sizeof(uint8_t));
+//        vidPtr->rgbw = iw;
+//        vidPtr->rgbh = ih;
+//
+//        avpicture_fill((AVPicture*)vidPtr->pFrameRGB, vidPtr->rgbbuffer,
+//            PIX_FMT_RGB24, iw, ih);
+//
+//        vidPtr->scalingCtx = sws_getCachedContext(vidPtr->scalingCtx,
+//            iw, ih, PIX_FMT_RGB24,
+//            codecCtx->width, codecCtx->height, codecCtx->pix_fmt,
+//            SWS_BICUBIC, NULL, NULL, NULL);
+//    }
+//
+//    /*
+//     * Copy the data from the Tk photo block into the RGB frame.
+//     */
+//    roffs = iblock.offset[0];
+//    goffs = iblock.offset[1];
+//    boffs = iblock.offset[2];
+//
+//    for (ih=0; ih < iblock.height; ih++) {
+//        rgbdata = vidPtr->pFrameRGB->data[0] + ih*vidPtr->pFrameRGB->linesize[0];
+//        photodata = iblock.pixelPtr + ih*iblock.pitch;
+//        for (iw=0; iw < iblock.width; iw++) {
+//            rgbdata[0] = photodata[roffs];
+//            rgbdata[1] = photodata[goffs];
+//            rgbdata[2] = photodata[boffs];
+//            rgbdata += 3;
+//            photodata += iblock.pixelSize;
+//        }
+//    }
+//
+//    /*
+//     * Rescale the current frame to the desired size, and translate
+//     * from RGB to YUV so we can give the frame to the codec.
+//     */
+//    sws_scale(vidPtr->scalingCtx,
+//        vidPtr->pFrameRGB->data, vidPtr->pFrameRGB->linesize,
+//        0, ih,
+//        vidPtr->pFrameYUV->data, vidPtr->pFrameYUV->linesize);
+//
+//    numBytes = VideoWriteFrame(vidPtr, vidPtr->pFrameYUV);
+//    if (numBytes < 0) {
+//        Tcl_AppendResult(interp, "error in av_write_frame()", (char*)NULL);
+//        return TCL_ERROR;
+//    }
+//    sprintf(buffer, "frame %d (%d bytes)", vidPtr->frameNumber++, numBytes);
+//    Tcl_SetResult(interp, buffer, TCL_VOLATILE);
+//    return TCL_OK;
+//}
+
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoWriteFrame()
+ *
+ *  Used internally to write a single frame out to the output stream.
+ *  Returns the number of bytes written to the frame, or -1 if an error
+ *  occurred.
+ * ------------------------------------------------------------------------
+ */
+int
+VideoWriteFrame(vidPtr, framePtr)
+    VideoObj *vidPtr;      /* video object being updated */
+    AVFrame *framePtr;     /* picture frame being written out */
+{
+    int numBytes;
+    AVCodecContext *codecCtx;
+    AVPacket pkt;
+
+#define OUTBUF_SIZE 500000
+    uint8_t outbuf[OUTBUF_SIZE];
+
+    codecCtx = vidPtr->outVideoStr->codec;
+    numBytes = avcodec_encode_video(codecCtx, outbuf, OUTBUF_SIZE, framePtr);
+
+    if (numBytes > 0) {
+        av_init_packet(&pkt);
+
+        if (codecCtx->coded_frame->pts != AV_NOPTS_VALUE) {
+            pkt.pts = av_rescale_q(codecCtx->coded_frame->pts,
+                codecCtx->time_base,
+                vidPtr->outVideoStr->time_base);
+        }
+        if (codecCtx->coded_frame->key_frame) {
+            pkt.flags |= AV_PKT_FLAG_KEY;
+        }
+        pkt.stream_index = vidPtr->outVideoStr->index;
+        pkt.data = outbuf;
+        pkt.size = numBytes;
+
+        /* write the compressed frame in the media file */
+        if (av_write_frame(vidPtr->outFormatCtx, &pkt) != 0) {
+            return -1;
+        }
+    }
+    return numBytes;
+}
+
+#ifdef notdef
+/*
+ * ------------------------------------------------------------------------
+ *  VideoTransform()
+ *
+ *  Implements the body of the "transform" method in the "video" class.
+ *  Translates one value into another--times into frames, etc.  Handles
+ *  the following syntax:
+ *    obj transform frames2duration <frames>
+ *    obj transform duration2frames <duration>
+ * ------------------------------------------------------------------------
+ */
+double
+VideoTransformFrames2Duration(vidPtr, frame)
+    VideoObj *vidPtr;
+    int frame;
+{
+    double duration;
+    AVStream *vstreamPtr;
+    AVRational hundred;
+    int64_t tval;
+
+    hundred.num = 100;
+    hundred.den = 1;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if (vidPtr->pFormatCtx == NULL) {
+//        Tcl_AppendResult(interp, "can't compute transformations:",
+//            " stream not opened", (char*)NULL);
+//        return TCL_ERROR;
+        return -1;
+    }
+
+    vstreamPtr = vidPtr->pFormatCtx->streams[vidPtr->videoStream];
+
+    tval = av_rescale_q((int64_t)frame, hundred, vstreamPtr->r_frame_rate);
+    duration = 0.01*tval;
+
+    return duration;
+}
+
+int
+VideoTransformDuration2Frames(vidPtr, duration)
+    VideoObj *vidPtr;
+    double duration;
+{
+    int frames;
+    AVStream *vstreamPtr;
+    AVRational hundred;
+    int64_t tval;
+
+    hundred.num = 100;
+    hundred.den = 1;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+    if (vidPtr->pFormatCtx == NULL) {
+//        Tcl_AppendResult(interp, "can't compute transformations:",
+//            " stream not opened", (char*)NULL);
+//        return TCL_ERROR;
+        return -1;
+    }
+
+    vstreamPtr = vidPtr->pFormatCtx->streams[vidPtr->videoStream];
+
+    tval = (int64_t)(duration*100);
+    frames = av_rescale_q(tval, vstreamPtr->r_frame_rate, hundred);
+    // check above for overflow
+    // tval = av_rescale_q(tval, vstreamPtr->r_frame_rate, hundred);
+    // sprintf(buffer, "%lld", tval);
+
+    return frames;
+}
+#endif
+
+/*
+ * ------------------------------------------------------------------------
+ *  VideoClose()
+ *
+ *  Implements the body of the _ffmpeg_close method in the "video" class.
+ *  Closes any file opened previously by the open methods for read/write.
+ *  If nothing is open, this does nothing.
+ * ------------------------------------------------------------------------
+ */
+int
+VideoClose(vidPtr)
+    VideoObj *vidPtr;
+{
+    AVCodecContext *vcodecCtx;
+    int i;
+
+    if (vidPtr == NULL) {
+        return -1;
+    }
+
+    if (vidPtr->yuvbuffer) {
+        av_free(vidPtr->yuvbuffer);
+        vidPtr->yuvbuffer = NULL;
+        vidPtr->yuvw = 0;
+        vidPtr->yuvh = 0;
+    }
+    if (vidPtr->pFrameYUV) {
+        av_free(vidPtr->pFrameYUV);
+        vidPtr->pFrameYUV = NULL;
+    }
+
+    if (vidPtr->rgbbuffer) {
+        av_free(vidPtr->rgbbuffer);
+        vidPtr->rgbbuffer = NULL;
+        vidPtr->rgbw = 0;
+        vidPtr->rgbh = 0;
+    }
+    if (vidPtr->pFrameRGB) {
+        av_free(vidPtr->pFrameRGB);
+        vidPtr->pFrameRGB = NULL;
+    }
+
+    if (vidPtr->scalingCtx) {
+        sws_freeContext(vidPtr->scalingCtx);
+        vidPtr->scalingCtx = NULL;
+    }
+    if (vidPtr->pFormatCtx && vidPtr->videoStream >= 0) {
+        vcodecCtx = vidPtr->pFormatCtx->streams[vidPtr->videoStream]->codec;
+        if (vcodecCtx) {
+            avcodec_close(vcodecCtx);
+        }
+    }
+    if (vidPtr->pFormatCtx) {
+#ifdef HAVE_AVFORMAT_CLOSE_INPUT
+        avformat_close_input(&vidPtr->pFormatCtx);
+#else
+        av_close_input_file(vidPtr->pFormatCtx);
+#endif
+        vidPtr->pFormatCtx = NULL;
+    }
+
+    if (vidPtr->outFormatCtx) {
+        while (VideoWriteFrame(vidPtr, NULL) > 0)
+            ; /* write out any remaining frames */
+
+        av_write_trailer(vidPtr->outFormatCtx);
+
+        for (i=0; i < vidPtr->outFormatCtx->nb_streams; i++) {
+            avcodec_close(vidPtr->outFormatCtx->streams[i]->codec);
+            av_freep(&vidPtr->outFormatCtx->streams[i]->codec);
+            av_freep(&vidPtr->outFormatCtx->streams[i]);
+        }
+
+        if (vidPtr->outFormatCtx->pb) {
+            avio_close(vidPtr->outFormatCtx->pb);
+        }
+
+        av_free(vidPtr->outFormatCtx);
+        vidPtr->outFormatCtx = NULL;
+    }
+
+    /* reset the mode to null */
+    *vidPtr->mode = '\0';
+
+    return 0;
+}
Index: /tags/1.6.0/video/RpVideo.h
===================================================================
--- /tags/1.6.0/video/RpVideo.h	(revision 6168)
+++ /tags/1.6.0/video/RpVideo.h	(revision 6168)
@@ -0,0 +1,48 @@
+/*
+ * ----------------------------------------------------------------------
+ *  TkFFMPEG:  video
+ *
+ *  These routines support the methods in the "video" class, which is
+ *  a video stream that can be read from or written to.  The class
+ *  itself is defined in itcl, but when methods are called, execution
+ *  jumps down to this level.
+ * ======================================================================
+ *  AUTHOR:  Michael McLennan, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef struct VideoObjRec VideoObj;
+
+VideoObj *VideoInit ();
+int VideoCleanup (VideoObj *vidPtr);
+int VideoOpenFile (VideoObj *vidPtr,
+    const char *fileName, const char *mode);
+int VideoGetImage (VideoObj *vidPtr,
+    int width, int height, void **img, int *bufSize);
+int VideoGetPositionCur (VideoObj *vidPtr, int *pos);
+int VideoGetPositionEnd (VideoObj *vidPtr, int *pos);
+int VideoFrameRate (VideoObj *vidPtr, double *fr);
+int VideoFileName (VideoObj *vidPtr, const char **fname);
+int VideoPixelAspectRatio (VideoObj *vidPtr, int *num, int *den);
+int VideoDisplayAspectRatio (VideoObj *vidPtr, int *num, int *den);
+// static int VideoPut (ClientData clientData,
+//     Tcl_Interp  *interp, int argc, CONST84 char *argv[]);
+int VideoGoNext (VideoObj *vidPtr);
+int VideoGoPlusMinusN (VideoObj *vidPtr, int n);
+int VideoGoToN (VideoObj *vidPtr, int n);
+int VideoSize (VideoObj *vidPtr, int *width, int *height);
+int VideoClose (VideoObj *vidPtr);
+
+#ifdef __cplusplus
+}
+#endif
+
Index: /tags/1.6.0/video/RpVideoTclInterface.cc
===================================================================
--- /tags/1.6.0/video/RpVideoTclInterface.cc	(revision 6168)
+++ /tags/1.6.0/video/RpVideoTclInterface.cc	(revision 6168)
@@ -0,0 +1,522 @@
+/*
+ * ----------------------------------------------------------------------
+ *  Rappture::MediaPlayer
+ *
+ *  This is an interface to the rappture movieplayer module.
+ *  It allows you to grab image frames from mpeg movies using ffmpeg.
+ * ======================================================================
+ *  AUTHOR:  Derrick Kearney, Purdue University
+ *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
+ *
+ *  See the file "license.terms" for information on usage and
+ *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ * ======================================================================
+ */
+#include <tcl.h>
+#include <string.h>
+#include "RpVideo.h"
+
+extern "C" Tcl_AppInitProc Rpvideo_Init;
+
+#include "RpOp.h"
+
+static Tcl_ObjCmdProc VideoCmd;
+static Tcl_ObjCmdProc VideoCallCmd;
+static Tcl_ObjCmdProc GetOp;
+static Tcl_ObjCmdProc NextOp;
+static Tcl_ObjCmdProc SeekOp;
+static Tcl_ObjCmdProc SizeOp;
+static Tcl_ObjCmdProc ReleaseOp;
+static Tcl_ObjCmdProc FilenameOp;
+static Tcl_ObjCmdProc FramerateOp;
+static Tcl_ObjCmdProc AspectOp;
+
+static Rp_OpSpec rpVideoOps[] = {
+    {"aspect",    1, (void *)AspectOp, 3, 3, "type",},
+    {"filename",  1, (void *)FilenameOp, 2, 2, "",},
+    {"framerate", 1, (void *)FramerateOp, 2, 2, "",},
+    {"get",       1, (void *)GetOp, 3, 5, "[image ?width height?]|[position cur|end]",},
+    {"next",      1, (void *)NextOp, 2, 2, "",},
+    {"release",   1, (void *)ReleaseOp, 2, 2, "",},
+    {"seek",      1, (void *)SeekOp, 3, 3, "+n|-n|n",},
+    {"size",      1, (void *)SizeOp, 2, 2, "",},
+};
+
+static int nRpVideoOps = sizeof(rpVideoOps) / sizeof(Rp_OpSpec);
+
+/*
+ * ------------------------------------------------------------------------
+ *  RpVideo_Init()
+ *
+ *  Called in Rappture_Init() to initialize the commands defined
+ *  in this file.
+ * ------------------------------------------------------------------------
+ */
+int
+Rpvideo_Init(Tcl_Interp *interp)
+{
+
+    Tcl_CreateObjCommand(interp, "::Rappture::Video",
+        VideoCmd, (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL);
+
+    return TCL_OK;
+}
+
+/*
+ * USAGE: Video <type> <data>
+ */
+static int
+VideoCmd(ClientData clientData, Tcl_Interp *interp, int objc,
+       Tcl_Obj* const *objv)
+{
+    char cmdName[64];
+    static int movieCount = 0;
+    const char *type = NULL;
+    const char *data = NULL;
+    int err = 0;
+
+    if (objc != 3) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"",
+            "Video <type> <data>\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    type = Tcl_GetString(objv[1]);
+    data = Tcl_GetString(objv[2]);
+
+    // create a new command
+    VideoObj *movie = NULL;
+    movie = VideoInit();
+    if (movie == NULL) {
+        Tcl_AppendResult(interp, "error while creating movie object", "\n",
+                         "VideoInit(movie);", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    if ((*type == 'd') && (strcmp(type,"data") == 0)) {
+        Tcl_AppendResult(interp, "error while creating movie: type == data not supported",
+                         "\n", "VideoInit(movie);", (char*)NULL);
+        return TCL_ERROR;
+    } else if ((*type == 'f') && (strcmp(type,"file") == 0)) {
+        err = VideoOpenFile(movie,data,"r");
+        if (err) {
+            Tcl_AppendResult(interp, "error while creating movie object: ",
+                             "\n", "VideoInit(movie);", (char*)NULL);
+            return TCL_ERROR;
+        }
+    }
+
+    sprintf(cmdName,"::movieObj%d",movieCount);
+    movieCount++;
+
+    Tcl_CreateObjCommand(interp, cmdName, VideoCallCmd,
+        (ClientData)movie, (Tcl_CmdDeleteProc*)NULL);
+
+    Tcl_AppendResult(interp, cmdName, (char*)NULL);
+    return TCL_OK;
+}
+
+
+static int
+VideoCallCmd(ClientData clientData, Tcl_Interp *interp, int objc,
+           Tcl_Obj *const *objv)
+{
+    Tcl_ObjCmdProc *proc;
+
+    proc = (Tcl_ObjCmdProc *)Rp_GetOpFromObj(interp, nRpVideoOps, rpVideoOps,
+        RP_OP_ARG1, objc, objv, 0);
+
+    if (proc == NULL) {
+        return TCL_ERROR;
+    }
+    return (*proc)(clientData, interp, objc, objv);
+}
+
+/**********************************************************************/
+// FUNCTION: GetOp()
+/// Get info about the video
+/**
+ * Full function call:
+ *
+ * get position cur
+ * get position end
+ * get image ?width height?
+ * get framerate
+ * get filename
+ * get aspectratio
+ *
+ */
+static int
+GetOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+    const char *cmd = Tcl_GetString(objv[1]);
+
+    /*
+     * Decode the first arg and figure out how we're supposed to advance.
+     */
+    if (objc > 5) {
+        Tcl_AppendResult(interp, "wrong # args: should be \"", cmd,
+            " [image width height]|[position cur|end]\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    const char *info = Tcl_GetString(objv[2]);
+    if ((*info == 'p') && (strcmp(info,"position") == 0)) {
+        if (objc != 4) {
+            Tcl_AppendResult(interp, "wrong # args: should be \"", cmd,
+                " position cur|end\"", (char*)NULL);
+            return TCL_ERROR;
+        }
+        const char *which = Tcl_GetString(objv[3]);
+        if ((*which == 'c') && (strcmp(which,"cur") == 0)) {
+            int pos = 0;
+            VideoGetPositionCur((VideoObj *)clientData,&pos);
+            Tcl_SetObjResult(interp, Tcl_NewIntObj(pos));
+        }
+        else if ((*which == 'e') && (strcmp(which,"end") == 0)) {
+            int pos = 0;
+            VideoGetPositionEnd((VideoObj *)clientData,&pos);
+            Tcl_SetObjResult(interp, Tcl_NewIntObj(pos));
+        }
+        else {
+            Tcl_AppendResult(interp, "unrecognized command: \"", which,
+                "\" should be one of cur,end ", (char*)NULL);
+            return TCL_ERROR;
+        }
+    }
+    else if ((*info == 'i') && (strcmp(info,"image") == 0)) {
+        if ((objc != 3) && (objc != 5)) {
+            Tcl_AppendResult(interp, "wrong # args: should be \"", cmd,
+                " image ?width height?\"", (char*)NULL);
+            return TCL_ERROR;
+        }
+
+        void *img = NULL;
+        int width = -1;
+        int height = -1;
+        int bufSize = 0;
+
+        if (objc == 5) {
+            Tcl_GetIntFromObj(interp, objv[3], &width);
+            Tcl_GetIntFromObj(interp, objv[4], &height);
+        }
+
+        VideoGetImage((VideoObj *)clientData, width, height, &img, &bufSize);
+
+        Tcl_SetByteArrayObj(Tcl_GetObjResult(interp),
+                            (const unsigned char*)img, bufSize);
+    }
+/*
+    else if ((*info == 'f') && (strcmp(info,"framerate") == 0)) {
+        if (objc != 3) {
+            Tcl_AppendResult(interp, "wrong # args: should be \"", cmd,
+                " framerate\"", (char*)NULL);
+            return TCL_ERROR;
+        }
+
+        double fr = 0;
+        int err = 0;
+
+        err = VideoGetFrameRate((VideoObj *)clientData, &fr);
+        if (err) {
+            Tcl_AppendResult(interp, "error while calculating framerate",
+                (char*)NULL);
+            return TCL_ERROR;
+        }
+        Tcl_SetObjResult(interp, Tcl_NewDoubleObj(fr));
+    }
+    else if ((*info == 'f') && (strcmp(info,"filename") == 0)) {
+        if (objc != 3) {
+            Tcl_AppendResult(interp, "wrong # args: should be \"", cmd,
+                " filename\"", (char*)NULL);
+            return TCL_ERROR;
+        }
+
+        const char *fname = NULL;
+        int err = 0;
+
+        err = VideoGetFileName((VideoObj *)clientData, &fname);
+        if (err) {
+            Tcl_AppendResult(interp, "error while retrieving filename",
+                (char*)NULL);
+            return TCL_ERROR;
+        }
+        Tcl_AppendResult(interp, fname, (char*)NULL);
+    }
+    else if ((*info == 'a') && (strcmp(info,"aspectratio") == 0)) {
+        if (objc != 3) {
+            Tcl_AppendResult(interp, "wrong # args: should be \"", cmd,
+                " aspectratio\"", (char*)NULL);
+            return TCL_ERROR;
+        }
+
+        int num = 0;
+        int den = 0;
+        int err = 0;
+
+        err = VideoGetAspectRatio((VideoObj *)clientData, &num, &den);
+        if (err) {
+            Tcl_AppendResult(interp, "error while retrieving aspectratio",
+                (char*)NULL);
+            return TCL_ERROR;
+        }
+
+        Tcl_Obj *dim = NULL;
+        dim = Tcl_NewListObj(0, NULL);
+        Tcl_ListObjAppendElement(interp, dim, Tcl_NewIntObj(num));
+        Tcl_ListObjAppendElement(interp, dim, Tcl_NewIntObj(den));
+        Tcl_SetObjResult(interp, dim);
+    }
+*/
+    else {
+        Tcl_AppendResult(interp, "unrecognized command \"", info, "\": should be \"", cmd,
+            " [image width height]|[position cur|end]|[framerate]\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+
+    return TCL_OK;
+}
+
+
+/**********************************************************************/
+// FUNCTION: NextOp()
+/// Get the next frame from a video
+/**
+ * Return the next frame from a video as an image
+ * Full function call:
+ *
+ * next
+ *
+ */
+static int
+NextOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+    int pos = 0;
+    VideoGoNext((VideoObj *)clientData);
+    VideoGetPositionCur((VideoObj *)clientData,&pos);
+    Tcl_SetObjResult(interp, Tcl_NewIntObj(pos));
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: SeekOp()
+/// Get the next frame from a video
+/**
+ * Return the frame specified, or at the specified offset, as an image
+ * Full function call:
+ *
+ * seek +5
+ * seek -5
+ * seek 22
+ *
+ */
+static int
+SeekOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+    const char *val_s = NULL;
+    int val = 0;
+    int pos = 0;
+
+    val_s = Tcl_GetString(objv[2]);
+    if (*val_s == '+') {
+        if (Tcl_GetInt(interp, val_s+1, &val) != TCL_OK) {
+            Tcl_AppendResult(interp, "bad value \"", val_s,
+                "\": should be next, +n, -n, or n", (char*)NULL);
+            return TCL_ERROR;
+        }
+        VideoGoPlusMinusN((VideoObj *)clientData, val);
+    }
+    else if (*val_s == '-') {
+        if (Tcl_GetInt(interp, val_s, &val) != TCL_OK) {
+            Tcl_AppendResult(interp, "bad value \"", val_s,
+                "\": should be next, +n, -n, or n", (char*)NULL);
+            return TCL_ERROR;
+        }
+        VideoGoPlusMinusN((VideoObj *)clientData, val);
+    }
+    else if (Tcl_GetInt(interp, val_s, &val) != TCL_OK) {
+        Tcl_AppendResult(interp, "bad value \"", val_s,
+            "\": should be next, +n, -n, or n", (char*)NULL);
+        return TCL_ERROR;
+    }
+    else {
+        VideoGoToN((VideoObj *)clientData, val);
+    }
+
+    VideoGetPositionCur((VideoObj *)clientData,&pos);
+    Tcl_SetObjResult(interp, Tcl_NewIntObj(pos));
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: SizeOp()
+/// Get the width height of the video
+/**
+ * Return the original width and height of the video frame
+ *
+ * Full function call:
+ *
+ * size
+ *
+ */
+static int
+SizeOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+
+    int width = 0;
+    int height = 0;
+    int err = 0;
+    Tcl_Obj *dim = NULL;
+
+
+    err = VideoSize((VideoObj *)clientData,&width,&height);
+
+    if (err) {
+        Tcl_AppendResult(interp, "error while calculating size of video",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+
+
+    dim = Tcl_NewListObj(0, NULL);
+    Tcl_ListObjAppendElement(interp, dim, Tcl_NewIntObj(width));
+    Tcl_ListObjAppendElement(interp, dim, Tcl_NewIntObj(height));
+    Tcl_SetObjResult(interp, dim);
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: FilenameOp()
+/// Get the filename of the video
+/**
+ * Return the original filename of the video
+ *
+ * Full function call:
+ *
+ * filename
+ *
+ */
+static int
+FilenameOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+    const char *fname = NULL;
+    int err = 0;
+
+    err = VideoFileName((VideoObj *)clientData, &fname);
+    if (err) {
+        Tcl_AppendResult(interp, "error while retrieving filename",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+    Tcl_AppendResult(interp, fname, (char*)NULL);
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: FramerateOp()
+/// Get the framerate of the video
+/**
+ * Return the framerate of the video
+ *
+ * Full function call:
+ *
+ * framerate
+ *
+ */
+static int
+FramerateOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+    double fr = 0;
+    int err = 0;
+
+    err = VideoFrameRate((VideoObj *)clientData, &fr);
+    if (err) {
+        Tcl_AppendResult(interp, "error while calculating framerate",
+            (char*)NULL);
+        return TCL_ERROR;
+    }
+    Tcl_SetObjResult(interp, Tcl_NewDoubleObj(fr));
+
+    return TCL_OK;
+}
+
+/**********************************************************************/
+// FUNCTION: AspectOp()
+/// Get the aspect ratio of the video
+/**
+ * Return either the pixel or display aspect ratio of the video
+ * Full function call:
+ *
+ * aspect pixel
+ * aspect display
+ *
+ */
+static int
+AspectOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+    int err = 0;
+    int num = 0;
+    int den = 1;
+    Tcl_Obj *dim = NULL;
+
+    const char *cmd = Tcl_GetString(objv[1]);
+    const char *info = Tcl_GetString(objv[2]);
+
+    if ((*cmd == 'p') && (strcmp(info,"pixel") == 0)) {
+        err = VideoPixelAspectRatio((VideoObj *)clientData, &num, &den);
+    }
+    else if ((*info == 'd') && (strcmp(info,"display") == 0)) {
+        err = VideoDisplayAspectRatio((VideoObj *)clientData, &num, &den);
+    }
+    else {
+        Tcl_AppendResult(interp, "unrecognized command \"", info, "\": should be \"", cmd,
+            " pixel|display\"", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    if (err) {
+        Tcl_AppendResult(interp, "error while retrieving ", info,
+            " aspect ratio", (char*)NULL);
+        return TCL_ERROR;
+    }
+
+    dim = Tcl_NewListObj(0, NULL);
+    Tcl_ListObjAppendElement(interp, dim, Tcl_NewIntObj(num));
+    Tcl_ListObjAppendElement(interp, dim, Tcl_NewIntObj(den));
+    Tcl_SetObjResult(interp, dim);
+
+    return TCL_OK;
+}
+/**********************************************************************/
+// FUNCTION: ReleaseOp()
+/// Clean up memory from an open video in a movie player object
+/**
+ * Close all file handles and free allocated memory associated with an
+ * open video in a movie player object.
+ * Full function call:
+ *
+ * close
+ *
+ */
+static int
+ReleaseOp (ClientData clientData, Tcl_Interp *interp, int objc,
+         Tcl_Obj *const *objv)
+{
+    VideoClose((VideoObj *)clientData);
+
+    Tcl_ResetResult(interp);
+    return TCL_OK;
+}
+
Index: /tags/1.6.0/video/pkgIndex.tcl.in
===================================================================
--- /tags/1.6.0/video/pkgIndex.tcl.in	(revision 6168)
+++ /tags/1.6.0/video/pkgIndex.tcl.in	(revision 6168)
@@ -0,0 +1,7 @@
+package ifneeded RapptureVideo @PACKAGE_VERSION@ [format {
+    set dir "%s"
+    set version @PACKAGE_VERSION@
+    set ext [info sharedlibextension] 
+    load [file join $dir "RapptureVideo${version}${ext}"] RpVideo
+    package provide RapptureVideo $version
+} $dir]
